ZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9hbm9ueW1vdXMvQW5vbnltb3VzUGFyYW1ldGVySW5Bbm9ueW1vdXNDb25zdHJ1Y3Rvci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2Fub255bW91cy9Bbm9ueW1vdXNQYXJhbWV0ZXJJbkFub255bW91c0NvbnN0cnVjdG9yLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjJhMjcyOQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9hbm9ueW1vdXMvQW5vbnltb3VzUGFyYW1ldGVySW5Bbm9ueW1vdXNDb25zdHJ1Y3Rvci5qYXZhCkBAIC0wLDAgKzEsMjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwMC0yMDEyIEpldEJyYWlucyBzLnIuby4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitjbGFzcyBBbm9ueW1vdXNQYXJhbWV0ZXJJbkFub255bW91c0NvbnN0cnVjdG9yIHsKKyAgQW5vbnltb3VzUGFyYW1ldGVySW5Bbm9ueW1vdXNDb25zdHJ1Y3RvcigpIHsKKyAgICBuZXcgQmFzZShuZXcgPGNhcmV0PkludGVyKCkge3B1YmxpYyB2b2lkIG0oKSB7fX0pe307CisgIH07Cit9CisKK2NsYXNzIEJhc2UgeworICBCYXNlKEludGVyIGludGVyKSB7fQorfQoraW50ZXJmYWNlIEludGVyIHsKKyAgdm9pZCBtKCk7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2Fub255bW91cy9Bbm9ueW1vdXNQYXJhbWV0ZXJJbkFub255bW91c0NvbnN0cnVjdG9yMi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2Fub255bW91cy9Bbm9ueW1vdXNQYXJhbWV0ZXJJbkFub255bW91c0NvbnN0cnVjdG9yMi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU4ODI0OWIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvYW5vbnltb3VzL0Fub255bW91c1BhcmFtZXRlckluQW5vbnltb3VzQ29uc3RydWN0b3IyLmphdmEKQEAgLTAsMCArMSwyNyBAQAorLyoKKyAqIENvcHlyaWdodCAyMDAwLTIwMTIgSmV0QnJhaW5zIHMuci5vLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK2NsYXNzIEFub255bW91c1BhcmFtZXRlckluQW5vbnltb3VzQ29uc3RydWN0b3IyIHsKKyAgQW5vbnltb3VzUGFyYW1ldGVySW5Bbm9ueW1vdXNDb25zdHJ1Y3RvcjIoKSB7CisgICAgbmV3IDxjYXJldD5CYXNlKG5ldyBJbnRlcigpIHtwdWJsaWMgdm9pZCBtKCkge319KXt9OworICB9OworfQorCitjbGFzcyBCYXNlIHsKKyAgQmFzZShJbnRlciBpbnRlcikge30KK30KK2ludGVyZmFjZSBJbnRlciB7CisgIHZvaWQgbSgpOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9hbm9ueW1vdXMvSW5zaWRlQW5vbnltb3VzTWV0aG9kLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvYW5vbnltb3VzL0luc2lkZUFub255bW91c01ldGhvZC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVlYmU5ZmYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvYW5vbnltb3VzL0luc2lkZUFub255bW91c01ldGhvZC5qYXZhCkBAIC0wLDAgKzEsMjkgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwMC0yMDEyIEpldEJyYWlucyBzLnIuby4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitjbGFzcyBJbnNpZGVBbm9ueW1vdXNNZXRob2QgeworICBJbnNpZGVBbm9ueW1vdXNNZXRob2QoKSB7CisgICAgbmV3IE9iamVjdCgpeworICAgICAgdm9pZCBteSgpIHsKKyAgICAgIEJhc2UgYiA9IG5ldyA8Y2FyZXQ+QmFzZSgpe307CisgICAgICB9CisgICAgfTsKKyAgfQorfQorCitjbGFzcyBCYXNlIHt9CitpbnRlcmZhY2UgSW50ZXIgeworICB2b2lkIG0oKTsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvYW5vbnltb3VzL1NpbXBsZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2Fub255bW91cy9TaW1wbGUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYmJmODdmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2Fub255bW91cy9TaW1wbGUuamF2YQpAQCAtMCwwICsxLDMxIEBACisvKgorICogQ29weXJpZ2h0IDIwMDAtMjAxMiBKZXRCcmFpbnMgcy5yLm8uCisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworaW1wb3J0IGphdmEubGFuZy5PYmplY3Q7CisKK2NsYXNzIFNpbXBsZSB7CisgIE9iamVjdCBvMSA9IG5ldyBPYmplY3QoKXt9OworICBPYmplY3QgbzIgPSBuZXcgT2JqZWN0KCl7e25ldyBPYmplY3QoKXt9O319OworCisgIFNpbXBsZSgpIHsKKyAgICBuZXcgT2JqZWN0KCl7fTsKKyAgICBuZXcgT2JqZWN0KCl7fTsKKyAgICBuZXcgT2JqZWN0KCl7fTsKKyAgICBuZXcgT2JqZWN0KCl7e25ldyBPYmplY3QoKXt9O319OworICAgIG5ldyA8Y2FyZXQ+T2JqZWN0KCl7fTsKKyAgICBuZXcgT2JqZWN0KCl7fTsKKyAgICBuZXcgT2JqZWN0KCl7fTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9hbm9ueW1vdXMvU2ltcGxlSW5Db25zdHJ1Y3Rvci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2Fub255bW91cy9TaW1wbGVJbkNvbnN0cnVjdG9yLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2Q5NDkwYQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9hbm9ueW1vdXMvU2ltcGxlSW5Db25zdHJ1Y3Rvci5qYXZhCkBAIC0wLDAgKzEsMjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwMC0yMDEyIEpldEJyYWlucyBzLnIuby4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitjbGFzcyBTaW1wbGVJbkNvbnN0cnVjdG9yIHsKKyAgU2ltcGxlSW5Db25zdHJ1Y3RvcigpIHsKKyAgICBuZXcgT2JqZWN0KCl7fTsKKyAgICBuZXcgPGNhcmV0PkJhc2UoKXt9OworICB9Cit9CisKK2NsYXNzIEJhc2Uge30KK2ludGVyZmFjZSBJbnRlciB7CisgIHZvaWQgbSgpOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlRWRpdG9yL3NtYXJ0UHNpRWxlbWVudFBvaW50ZXJzL0FDbGFzcy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVFZGl0b3Ivc21hcnRQc2lFbGVtZW50UG9pbnRlcnMvQUNsYXNzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzc3OTkxZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlRWRpdG9yL3NtYXJ0UHNpRWxlbWVudFBvaW50ZXJzL0FDbGFzcy5qYXZhCkBAIC0wLDAgKzEsMiBAQAorY2xhc3MgQUNsYXNzeworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVFZGl0b3Ivc21hcnRQc2lFbGVtZW50UG9pbnRlcnMvVGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVFZGl0b3Ivc21hcnRQc2lFbGVtZW50UG9pbnRlcnMvVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI2NDViMzkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUVkaXRvci9zbWFydFBzaUVsZW1lbnRQb2ludGVycy9UZXN0LmphdmEKQEAgLTAsMCArMSwzIEBACitjbGFzcyBUZXN0IHsKKyAgQUNsYXNzIGZpZWxkOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0ZVN0YXRlbWVudC9BZGRNaXNzaW5nUGFyZW4uamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0ZVN0YXRlbWVudC9BZGRNaXNzaW5nUGFyZW4uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYWFmMWIyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRlU3RhdGVtZW50L0FkZE1pc3NpbmdQYXJlbi5qYXZhCkBAIC0wLDAgKzEsNyBAQAorCitjbGFzcyBGb28geworICAgIGFic3RyYWN0IHZvaWQgYSgpOworICAgIHsKKyAgICAgICAgYTxjYXJldD4oOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGVTdGF0ZW1lbnQvQWRkTWlzc2luZ1BhcmVuX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGVTdGF0ZW1lbnQvQWRkTWlzc2luZ1BhcmVuX2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2NmOGViNAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0ZVN0YXRlbWVudC9BZGRNaXNzaW5nUGFyZW5fYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDggQEAKKworY2xhc3MgRm9vIHsKKyAgICBhYnN0cmFjdCB2b2lkIGEoKTsKKyAgICAKKyAgICB7CisgICAgICAgIGEoKTs8Y2FyZXQ+CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0ZVN0YXRlbWVudC9BZGRNaXNzaW5nU2VtaWNvbG9uLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGVTdGF0ZW1lbnQvQWRkTWlzc2luZ1NlbWljb2xvbi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg2NTMzNTgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGVTdGF0ZW1lbnQvQWRkTWlzc2luZ1NlbWljb2xvbi5qYXZhCkBAIC0wLDAgKzEsNyBAQAorCitjbGFzcyBGb28geworICAgIGFic3RyYWN0IHZvaWQgYSgpOworICAgIHsKKyAgICAgICAgYSg8Y2FyZXQ+KQorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGVTdGF0ZW1lbnQvQWRkTWlzc2luZ1NlbWljb2xvbl9hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRlU3RhdGVtZW50L0FkZE1pc3NpbmdTZW1pY29sb25fYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zY2Y4ZWI0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRlU3RhdGVtZW50L0FkZE1pc3NpbmdTZW1pY29sb25fYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDggQEAKKworY2xhc3MgRm9vIHsKKyAgICBhYnN0cmFjdCB2b2lkIGEoKTsKKyAgICAKKyAgICB7CisgICAgICAgIGEoKTs8Y2FyZXQ+CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0ZVN0YXRlbWVudC9BZnRlckZvci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRlU3RhdGVtZW50L0FmdGVyRm9yLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWRkM2E5NAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0ZVN0YXRlbWVudC9BZnRlckZvci5qYXZhCkBAIC0wLDAgKzEsNiBAQAorcHVibGljIGNsYXNzIEZvbyB7CisgICAgeworICAgICAgICBmb3IoaW50IGkgPSAwOyBpIDwgMTAwOyBpKyspIHsKKyAgICAgICAgfTxjYXJldD4KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRlU3RhdGVtZW50L0FmdGVyRm9yX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGVTdGF0ZW1lbnQvQWZ0ZXJGb3JfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZDE1MzkyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRlU3RhdGVtZW50L0FmdGVyRm9yX2FmdGVyLmphdmEKQEAgLTAsMCArMSw3IEBACitwdWJsaWMgY2xhc3MgRm9vIHsKKyAgICB7CisgICAgICAgIGZvcihpbnQgaSA9IDA7IGkgPCAxMDA7IGkrKykgeworICAgICAgICB9CisgICAgICAgIDxjYXJldD4KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRlU3RhdGVtZW50L0F0QmxvY2tFbmQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0ZVN0YXRlbWVudC9BdEJsb2NrRW5kLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjE2MzU5NAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0ZVN0YXRlbWVudC9BdEJsb2NrRW5kLmphdmEKQEAgLTAsMCArMSw3IEBACitwdWJsaWMgY2xhc3MgRm9vIHsKKyAgICB7CisgICAgICAgIGZvcihpbnQgaSA9IDA7IGkgPCAxMDA7IGkrKykgeworICAgICAgICAgICAgeCA9IDM7CisgICA8Y2FyZXQ+ICAgICB9CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0ZVN0YXRlbWVudC9BdEJsb2NrRW5kX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGVTdGF0ZW1lbnQvQXRCbG9ja0VuZF9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ3ZmY0ZDAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGVTdGF0ZW1lbnQvQXRCbG9ja0VuZF9hZnRlci5qYXZhCkBAIC0wLDAgKzEsOCBAQAorcHVibGljIGNsYXNzIEZvbyB7CisgICAgeworICAgICAgICBmb3IoaW50IGkgPSAwOyBpIDwgMTAwOyBpKyspIHsKKyAgICAgICAgICAgIHggPSAzOworICAgICAgICB9CisgICAgICAgIDxjYXJldD4KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRlU3RhdGVtZW50L0JlZm9yZUZvci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRlU3RhdGVtZW50L0JlZm9yZUZvci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFiNjFjZjUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGVTdGF0ZW1lbnQvQmVmb3JlRm9yLmphdmEKQEAgLTAsMCArMSw2IEBACitwdWJsaWMgY2xhc3MgRm9vIHsKKyAgICB7CisgICAgICAgIDxjYXJldD5mb3IgKGludCBpID0gMDsgaSA8IDEwMDsgaSsrKSB7CisgICAgICAgIH0KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRlU3RhdGVtZW50L0JlZm9yZUZvcl9hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRlU3RhdGVtZW50L0JlZm9yZUZvcl9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMxYWNjZDcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGVTdGF0ZW1lbnQvQmVmb3JlRm9yX2FmdGVyLmphdmEKQEAgLTAsMCArMSw3IEBACitwdWJsaWMgY2xhc3MgRm9vIHsKKyAgICB7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgMTAwOyBpKyspIHsKKyAgICAgICAgICAgIDxjYXJldD4KKyAgICAgICAgfQorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGVTdGF0ZW1lbnQvQmVmb3JlSWZSQnJhY2UuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0ZVN0YXRlbWVudC9CZWZvcmVJZlJCcmFjZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI1MzllNjkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGVTdGF0ZW1lbnQvQmVmb3JlSWZSQnJhY2UuamF2YQpAQCAtMCwwICsxLDUgQEAKK2NsYXNzIFRlc3QgeworICAgIFRlc3QoYm9vbGVhbiBjb25kaXRpb24pIHsKKyAgICAgICAgaWYgKGNvbmRpdGlvbjxjYXJldD4pCisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0ZVN0YXRlbWVudC9CZWZvcmVJZlJCcmFjZV9hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRlU3RhdGVtZW50L0JlZm9yZUlmUkJyYWNlX2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWUzMzI5NgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0ZVN0YXRlbWVudC9CZWZvcmVJZlJCcmFjZV9hZnRlci5qYXZhCkBAIC0wLDAgKzEsNyBAQAorY2xhc3MgVGVzdCB7CisgICAgVGVzdChib29sZWFuIGNvbmRpdGlvbikgeworICAgICAgICBpZiAoY29uZGl0aW9uKSB7CisgICAgICAgICAgICA8Y2FyZXQ+CisgICAgICAgIH0KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRlU3RhdGVtZW50L0JlZm9yZVN0YXRlbWVudC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRlU3RhdGVtZW50L0JlZm9yZVN0YXRlbWVudC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE0NzVmOGIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGVTdGF0ZW1lbnQvQmVmb3JlU3RhdGVtZW50LmphdmEKQEAgLTAsMCArMSw1IEBACitwdWJsaWMgY2xhc3MgRm9vIHsKKyAgICB7Cis8Y2FyZXQ+ICAgICAgICB4ID0gMzsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRlU3RhdGVtZW50L0JlZm9yZVN0YXRlbWVudF9hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRlU3RhdGVtZW50L0JlZm9yZVN0YXRlbWVudF9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg2YzgyNWIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGVTdGF0ZW1lbnQvQmVmb3JlU3RhdGVtZW50X2FmdGVyLmphdmEKQEAgLTAsMCArMSw2IEBACitwdWJsaWMgY2xhc3MgRm9vIHsKKyAgICB7CisgICAgICAgIHggPSAzOworICAgICAgICA8Y2FyZXQ+CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0ZVN0YXRlbWVudC9CbG9jay5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRlU3RhdGVtZW50L0Jsb2NrLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGJjMjBhZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0ZVN0YXRlbWVudC9CbG9jay5qYXZhCkBAIC0wLDAgKzEsNiBAQAorCitjbGFzcyBGb28geworICAgIHsKKyAgICAgICAgaWYgKHgpIHs8Y2FyZXQ+CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0ZVN0YXRlbWVudC9CbG9jazEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0ZVN0YXRlbWVudC9CbG9jazEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xN2I5NDQzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRlU3RhdGVtZW50L0Jsb2NrMS5qYXZhCkBAIC0wLDAgKzEsNiBAQAorcHVibGljIGNsYXNzIEZvbyB7CisgICAgeworICAgICAgICB7PGNhcmV0PgorICAgICAgICB9CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0ZVN0YXRlbWVudC9CbG9jazFfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0ZVN0YXRlbWVudC9CbG9jazFfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYzhiZDJlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRlU3RhdGVtZW50L0Jsb2NrMV9hZnRlci5qYXZhCkBAIC0wLDAgKzEsNyBAQAorcHVibGljIGNsYXNzIEZvbyB7CisgICAgeworICAgICAgICB7CisgICAgICAgICAgICA8Y2FyZXQ+CisgICAgICAgIH0KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRlU3RhdGVtZW50L0Jsb2NrX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGVTdGF0ZW1lbnQvQmxvY2tfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZmFmMzgzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRlU3RhdGVtZW50L0Jsb2NrX2FmdGVyLmphdmEKQEAgLTAsMCArMSw4IEBACisKK2NsYXNzIEZvbyB7CisgICAgeworICAgICAgICBpZiAoeCkgeworICAgICAgICAgICAgPGNhcmV0PgorICAgICAgICB9CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0ZVN0YXRlbWVudC9CcmFjZUZpeGVOZXdMaW5lLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGVTdGF0ZW1lbnQvQnJhY2VGaXhlTmV3TGluZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNmYzc5ZjQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGVTdGF0ZW1lbnQvQnJhY2VGaXhlTmV3TGluZS5qYXZhCkBAIC0wLDAgKzEsOSBAQAorcHVibGljIGNsYXNzIHRlc3QgeworICAgIHZvaWQgZigpIHsKKyAgICAgICAgaW50IGsxID0gMTsKKyAgICAgICAgaW50IGsyID0gMjsKKyAgICAgICAgaW50W10gYXJyYXkgPSBuZXcgaW50W117azEsIGsyPGNhcmV0PgorCisgICAgICAgIFN5c3RlbS5vdXQucHJpbnQoazEpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGVTdGF0ZW1lbnQvQnJhY2VGaXhlTmV3TGluZV9hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRlU3RhdGVtZW50L0JyYWNlRml4ZU5ld0xpbmVfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43YTEyOWE5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRlU3RhdGVtZW50L0JyYWNlRml4ZU5ld0xpbmVfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDkgQEAKK3B1YmxpYyBjbGFzcyB0ZXN0IHsKKyAgICB2b2lkIGYoKSB7CisgICAgICAgIGludCBrMSA9IDE7CisgICAgICAgIGludCBrMiA9IDI7CisgICAgICAgIGludFtdIGFycmF5ID0gbmV3IGludFtde2sxLCBrMn07CisKKyAgICAgICAgU3lzdGVtLm91dC5wcmludChrMSk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0ZVN0YXRlbWVudC9DZHJFbmRsZXNzTG9vcC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRlU3RhdGVtZW50L0NkckVuZGxlc3NMb29wLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTIyMTYyMgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0ZVN0YXRlbWVudC9DZHJFbmRsZXNzTG9vcC5qYXZhCkBAIC0wLDAgKzEsNSBAQAorcHVibGljIGNsYXNzIFRlc3QgeworICAgIHB1YmxpYyBpbnQgZm9vKGludCBpKSB7CisgICAgICAgIGludCBpaSA9IGZvbygwPGNhcmV0PgorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGVTdGF0ZW1lbnQvQ2RyRW5kbGVzc0xvb3BfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0ZVN0YXRlbWVudC9DZHJFbmRsZXNzTG9vcF9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI2OTBhNDY5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRlU3RhdGVtZW50L0NkckVuZGxlc3NMb29wX2FmdGVyLmphdmEKQEAgLTAsMCArMSw1IEBACitwdWJsaWMgY2xhc3MgVGVzdCB7CisgICAgcHVibGljIGludCBmb28oaW50IGkpIHsKKyAgICAgICAgaW50IGlpID0gZm9vKDApOzxjYXJldD4KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRlU3RhdGVtZW50L0NvbXBsZXRlQnJlYWsuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0ZVN0YXRlbWVudC9Db21wbGV0ZUJyZWFrLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWQ5NWIxMQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0ZVN0YXRlbWVudC9Db21wbGV0ZUJyZWFrLmphdmEKQEAgLTAsMCArMSw4IEBACisKK2NsYXNzIEZvbyB7CisgICAgeworICAgICAgICBpZiAoeCkgeworICAgICAgICAgICAgICAgICAgICBicmVhazxjYXJldD4KKyAgICAgICAgfQorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGVTdGF0ZW1lbnQvQ29tcGxldGVCcmVha19hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRlU3RhdGVtZW50L0NvbXBsZXRlQnJlYWtfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43OGVlNDVkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRlU3RhdGVtZW50L0NvbXBsZXRlQnJlYWtfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDggQEAKKworY2xhc3MgRm9vIHsKKyAgICB7CisgICAgICAgIGlmICh4KSB7CisgICAgICAgICAgICBicmVhazs8Y2FyZXQ+ICAgICAgICAgICAgCisgICAgICAgIH0KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRlU3RhdGVtZW50L0NvbXBsZXRlQ2FsbC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRlU3RhdGVtZW50L0NvbXBsZXRlQ2FsbC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIxM2VjYTEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGVTdGF0ZW1lbnQvQ29tcGxldGVDYWxsLmphdmEKQEAgLTAsMCArMSw2IEBACisKK3B1YmxpYyBjbGFzcyBGb28geworICAgIHsKKyAgICAgICAgZm9vPGNhcmV0Pih4KTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRlU3RhdGVtZW50L0NvbXBsZXRlQ2FsbF9hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRlU3RhdGVtZW50L0NvbXBsZXRlQ2FsbF9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFjNzE0YzIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGVTdGF0ZW1lbnQvQ29tcGxldGVDYWxsX2FmdGVyLmphdmEKQEAgLTAsMCArMSw3IEBACisKK3B1YmxpYyBjbGFzcyBGb28geworICAgIHsKKyAgICAgICAgZm9vKHgpOworICAgICAgICA8Y2FyZXQ+CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0ZVN0YXRlbWVudC9Db21wbGV0ZUNhdGNoLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGVTdGF0ZW1lbnQvQ29tcGxldGVDYXRjaC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZjZDkyNzkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGVTdGF0ZW1lbnQvQ29tcGxldGVDYXRjaC5qYXZhCkBAIC0wLDAgKzEsOCBAQAorCitjbGFzcyBGb28geworICAgIHsKKyAgICAgICAgdHJ5IHsKKworICAgICAgICB9IGNhdGNoPGNhcmV0PgorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGVTdGF0ZW1lbnQvQ29tcGxldGVDYXRjaEJvZHkuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0ZVN0YXRlbWVudC9Db21wbGV0ZUNhdGNoQm9keS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFkZjQyM2YKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGVTdGF0ZW1lbnQvQ29tcGxldGVDYXRjaEJvZHkuamF2YQpAQCAtMCwwICsxLDggQEAKKworY2xhc3MgRm9vIHsKKyAgICB7CisgICAgICAgIHRyeSB7CisKKyAgICAgICAgfSBjYXRjaCAoYTxjYXJldD4gYikKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRlU3RhdGVtZW50L0NvbXBsZXRlQ2F0Y2hCb2R5X2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGVTdGF0ZW1lbnQvQ29tcGxldGVDYXRjaEJvZHlfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNWIzMzQ0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRlU3RhdGVtZW50L0NvbXBsZXRlQ2F0Y2hCb2R5X2FmdGVyLmphdmEKQEAgLTAsMCArMSwxMCBAQAorCitjbGFzcyBGb28geworICAgIHsKKyAgICAgICAgdHJ5IHsKKworICAgICAgICB9IGNhdGNoIChhIGIpIHsKKyAgICAgICAgICAgIDxjYXJldD4KKyAgICAgICAgfQorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGVTdGF0ZW1lbnQvQ29tcGxldGVDYXRjaExQYXJlbi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRlU3RhdGVtZW50L0NvbXBsZXRlQ2F0Y2hMUGFyZW4uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMDFiZTA1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRlU3RhdGVtZW50L0NvbXBsZXRlQ2F0Y2hMUGFyZW4uamF2YQpAQCAtMCwwICsxLDggQEAKKworY2xhc3MgRm9vIHsKKyAgICB7CisgICAgICAgIHRyeSB7CisKKyAgICAgICAgfSBjYXRjaCAoPGNhcmV0PgorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGVTdGF0ZW1lbnQvQ29tcGxldGVDYXRjaExQYXJlbl9hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRlU3RhdGVtZW50L0NvbXBsZXRlQ2F0Y2hMUGFyZW5fYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43YzRkMDkzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRlU3RhdGVtZW50L0NvbXBsZXRlQ2F0Y2hMUGFyZW5fYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDkgQEAKKworY2xhc3MgRm9vIHsKKyAgICB7CisgICAgICAgIHRyeSB7CisKKyAgICAgICAgfSBjYXRjaCAoPGNhcmV0PikgeworICAgICAgICB9CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0ZVN0YXRlbWVudC9Db21wbGV0ZUNhdGNoV2l0aEV4cHJlc3Npb24uamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0ZVN0YXRlbWVudC9Db21wbGV0ZUNhdGNoV2l0aEV4cHJlc3Npb24uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZmQ0ZjNjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRlU3RhdGVtZW50L0NvbXBsZXRlQ2F0Y2hXaXRoRXhwcmVzc2lvbi5qYXZhCkBAIC0wLDAgKzEsOCBAQAorCitjbGFzcyBGb28geworICAgIHsKKyAgICAgICAgdHJ5IHsKKworICAgICAgICB9IGNhdGNoIChhPGNhcmV0PgorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGVTdGF0ZW1lbnQvQ29tcGxldGVDYXRjaFdpdGhFeHByZXNzaW9uX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGVTdGF0ZW1lbnQvQ29tcGxldGVDYXRjaFdpdGhFeHByZXNzaW9uX2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGI0M2E0ZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0ZVN0YXRlbWVudC9Db21wbGV0ZUNhdGNoV2l0aEV4cHJlc3Npb25fYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDkgQEAKKworY2xhc3MgRm9vIHsKKyAgICB7CisgICAgICAgIHRyeSB7CisKKyAgICAgICAgfSBjYXRjaCAoPGNhcmV0PmEpIHsKKyAgICAgICAgfQorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGVTdGF0ZW1lbnQvQ29tcGxldGVDYXRjaF9hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRlU3RhdGVtZW50L0NvbXBsZXRlQ2F0Y2hfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43YzRkMDkzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRlU3RhdGVtZW50L0NvbXBsZXRlQ2F0Y2hfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDkgQEAKKworY2xhc3MgRm9vIHsKKyAgICB7CisgICAgICAgIHRyeSB7CisKKyAgICAgICAgfSBjYXRjaCAoPGNhcmV0PikgeworICAgICAgICB9CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0ZVN0YXRlbWVudC9Db21wbGV0ZUVsc2VJZi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRlU3RhdGVtZW50L0NvbXBsZXRlRWxzZUlmLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTdlMmUxMQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0ZVN0YXRlbWVudC9Db21wbGV0ZUVsc2VJZi5qYXZhCkBAIC0wLDAgKzEsOSBAQAorcHVibGljIGNsYXNzIFRlc3QgeworICAgIHB1YmxpYyB2b2lkIGZvbyhpbnQgeCkgeworICAgICAgICBpZiAoeCA+IDApIHsKKyAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigidHJ1ZSIpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJ0cnVlIik7CisgICAgICAgIH08Y2FyZXQ+CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0ZVN0YXRlbWVudC9Db21wbGV0ZUVsc2VJZl9hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRlU3RhdGVtZW50L0NvbXBsZXRlRWxzZUlmX2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2E0ZWM1MQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0ZVN0YXRlbWVudC9Db21wbGV0ZUVsc2VJZl9hZnRlci5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKK3B1YmxpYyBjbGFzcyBUZXN0IHsKKyAgICBwdWJsaWMgdm9pZCBmb28oaW50IHgpIHsKKyAgICAgICAgaWYgKHggPiAwKSB7CisgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oInRydWUiKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigidHJ1ZSIpOworICAgICAgICB9CisgICAgICAgIDxjYXJldD4KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRlU3RhdGVtZW50L0NvbXBsZXRlSWYuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0ZVN0YXRlbWVudC9Db21wbGV0ZUlmLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWU0NGNkYwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0ZVN0YXRlbWVudC9Db21wbGV0ZUlmLmphdmEKQEAgLTAsMCArMSw2IEBACisKK2NsYXNzIEZvbyB7CisgICAgeworICAgICAgICBpZiAoYTxjYXJldD4KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRlU3RhdGVtZW50L0NvbXBsZXRlSWZLZXl3b3JkLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGVTdGF0ZW1lbnQvQ29tcGxldGVJZktleXdvcmQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMjI1Nzk4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRlU3RhdGVtZW50L0NvbXBsZXRlSWZLZXl3b3JkLmphdmEKQEAgLTAsMCArMSw2IEBACisKK2NsYXNzIGZvbyB7CisgICAgeworICAgICAgaWY8Y2FyZXQ+CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0ZVN0YXRlbWVudC9Db21wbGV0ZUlmS2V5d29yZFN0YXRlbWVudEdvZXNUb1RoZW4uamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0ZVN0YXRlbWVudC9Db21wbGV0ZUlmS2V5d29yZFN0YXRlbWVudEdvZXNUb1RoZW4uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xOGExMTEwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRlU3RhdGVtZW50L0NvbXBsZXRlSWZLZXl3b3JkU3RhdGVtZW50R29lc1RvVGhlbi5qYXZhCkBAIC0wLDAgKzEsOCBAQAorCitjbGFzcyBmb28geworICAgIHsKKyAgICAgICAgaWYgPGNhcmV0PmZvbygpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGZvbygpIHt9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRlU3RhdGVtZW50L0NvbXBsZXRlSWZLZXl3b3JkU3RhdGVtZW50R29lc1RvVGhlbl9hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRlU3RhdGVtZW50L0NvbXBsZXRlSWZLZXl3b3JkU3RhdGVtZW50R29lc1RvVGhlbl9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhhNTU0ZDAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGVTdGF0ZW1lbnQvQ29tcGxldGVJZktleXdvcmRTdGF0ZW1lbnRHb2VzVG9UaGVuX2FmdGVyLmphdmEKQEAgLTAsMCArMSwxMCBAQAorCitjbGFzcyBmb28geworICAgIHsKKyAgICAgICAgaWYgKDxjYXJldD4pIHsKKyAgICAgICAgICAgIGZvbygpOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIHZvaWQgZm9vKCkge30KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGVTdGF0ZW1lbnQvQ29tcGxldGVJZktleXdvcmRfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0ZVN0YXRlbWVudC9Db21wbGV0ZUlmS2V5d29yZF9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZiNjQ1ZDIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGVTdGF0ZW1lbnQvQ29tcGxldGVJZktleXdvcmRfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDcgQEAKKworY2xhc3MgZm9vIHsKKyAgICB7CisgICAgICAgIGlmICg8Y2FyZXQ+KSB7CisgICAgICAgIH0KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRlU3RhdGVtZW50L0NvbXBsZXRlSWZOZXh0TGluZUJyYWNlU3R5bGUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0ZVN0YXRlbWVudC9Db21wbGV0ZUlmTmV4dExpbmVCcmFjZVN0eWxlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTRmOGNhNwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0ZVN0YXRlbWVudC9Db21wbGV0ZUlmTmV4dExpbmVCcmFjZVN0eWxlLmphdmEKQEAgLTAsMCArMSw3IEBACisKK2NsYXNzIEZvbworeworICAgIHsKKyAgICAgICAgaWYgKGE8Y2FyZXQ+CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0ZVN0YXRlbWVudC9Db21wbGV0ZUlmTmV4dExpbmVCcmFjZVN0eWxlMi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRlU3RhdGVtZW50L0NvbXBsZXRlSWZOZXh0TGluZUJyYWNlU3R5bGUyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDQ4YmIxMgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0ZVN0YXRlbWVudC9Db21wbGV0ZUlmTmV4dExpbmVCcmFjZVN0eWxlMi5qYXZhCkBAIC0wLDAgKzEsOSBAQAorCitjbGFzcyBGb28KK3sKKyAgICB7CisgICAgICAgIGlmIChhPGNhcmV0PikKKyAgICAgICAgeworICAgICAgICB9CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0ZVN0YXRlbWVudC9Db21wbGV0ZUlmTmV4dExpbmVCcmFjZVN0eWxlMl9hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRlU3RhdGVtZW50L0NvbXBsZXRlSWZOZXh0TGluZUJyYWNlU3R5bGUyX2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTNlMzdiZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0ZVN0YXRlbWVudC9Db21wbGV0ZUlmTmV4dExpbmVCcmFjZVN0eWxlMl9hZnRlci5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKKworY2xhc3MgRm9vCit7CisgICAgeworICAgICAgICBpZiAoYSkKKyAgICAgICAgeworICAgICAgICAgICAgPGNhcmV0PgorICAgICAgICB9CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0ZVN0YXRlbWVudC9Db21wbGV0ZUlmTmV4dExpbmVCcmFjZVN0eWxlX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGVTdGF0ZW1lbnQvQ29tcGxldGVJZk5leHRMaW5lQnJhY2VTdHlsZV9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUzZTM3YmQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGVTdGF0ZW1lbnQvQ29tcGxldGVJZk5leHRMaW5lQnJhY2VTdHlsZV9hZnRlci5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKKworY2xhc3MgRm9vCit7CisgICAgeworICAgICAgICBpZiAoYSkKKyAgICAgICAgeworICAgICAgICAgICAgPGNhcmV0PgorICAgICAgICB9CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0ZVN0YXRlbWVudC9Db21wbGV0ZUlmU3RhdGVtZW50R29lc1RvVGhlbi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRlU3RhdGVtZW50L0NvbXBsZXRlSWZTdGF0ZW1lbnRHb2VzVG9UaGVuLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGVmNGY1MgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0ZVN0YXRlbWVudC9Db21wbGV0ZUlmU3RhdGVtZW50R29lc1RvVGhlbi5qYXZhCkBAIC0wLDAgKzEsOCBAQAorCitjbGFzcyBmb28geworICAgIHsKKyAgICAgICAgaWYgKDxjYXJldD5mb28oKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBmb28oKSB7fQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0ZVN0YXRlbWVudC9Db21wbGV0ZUlmU3RhdGVtZW50R29lc1RvVGhlbl9hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRlU3RhdGVtZW50L0NvbXBsZXRlSWZTdGF0ZW1lbnRHb2VzVG9UaGVuX2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGE1NTRkMAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0ZVN0YXRlbWVudC9Db21wbGV0ZUlmU3RhdGVtZW50R29lc1RvVGhlbl9hZnRlci5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKKworY2xhc3MgZm9vIHsKKyAgICB7CisgICAgICAgIGlmICg8Y2FyZXQ+KSB7CisgICAgICAgICAgICBmb28oKTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICB2b2lkIGZvbygpIHt9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRlU3RhdGVtZW50L0NvbXBsZXRlSWZfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0ZVN0YXRlbWVudC9Db21wbGV0ZUlmX2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGVhMzRmOAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0ZVN0YXRlbWVudC9Db21wbGV0ZUlmX2FmdGVyLmphdmEKQEAgLTAsMCArMSw4IEBACisKK2NsYXNzIEZvbyB7CisgICAgeworICAgICAgICBpZiAoYSkgeworICAgICAgICAgICAgPGNhcmV0PgorICAgICAgICB9CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0ZVN0YXRlbWVudC9Db21wbGV0ZU1ldGhvZENhbGxBdFJldHVybi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRlU3RhdGVtZW50L0NvbXBsZXRlTWV0aG9kQ2FsbEF0UmV0dXJuLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjIyOTAxMgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0ZVN0YXRlbWVudC9Db21wbGV0ZU1ldGhvZENhbGxBdFJldHVybi5qYXZhCkBAIC0wLDAgKzEsNyBAQAorcHVibGljIGNsYXNzIEZvbyB7CisgICAgcHVibGljIFN0cmluZyBmb28oKSB7CisgICAgICAgIHJldHVybiBTdHJpbmcudmFsdWVPZigKKyAgICAgICAgICAgICAgICAxPGNhcmV0PgorICAgICAgICApCisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0ZVN0YXRlbWVudC9Db21wbGV0ZU1ldGhvZENhbGxBdFJldHVybl9hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRlU3RhdGVtZW50L0NvbXBsZXRlTWV0aG9kQ2FsbEF0UmV0dXJuX2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGExZGIzYQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0ZVN0YXRlbWVudC9Db21wbGV0ZU1ldGhvZENhbGxBdFJldHVybl9hZnRlci5qYXZhCkBAIC0wLDAgKzEsNyBAQAorcHVibGljIGNsYXNzIEZvbyB7CisgICAgcHVibGljIFN0cmluZyBmb28oKSB7CisgICAgICAgIHJldHVybiBTdHJpbmcudmFsdWVPZigKKyAgICAgICAgICAgICAgICAxCisgICAgICAgICk7PGNhcmV0PgorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGVTdGF0ZW1lbnQvQ29tcGxldGVTdHJpbmdMaXRlcmFsLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGVTdGF0ZW1lbnQvQ29tcGxldGVTdHJpbmdMaXRlcmFsLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODBlODdkOAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0ZVN0YXRlbWVudC9Db21wbGV0ZVN0cmluZ0xpdGVyYWwuamF2YQpAQCAtMCwwICsxLDUgQEAKK3B1YmxpYyBjbGFzcyBGb28geworICAgIHB1YmxpYyB2b2lkIGZvbygpIHsKKyAgICAgICAgU3RyaW5nIHMgPSAiYWJjPGNhcmV0PmRlZiI7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0ZVN0YXRlbWVudC9Db21wbGV0ZVN0cmluZ0xpdGVyYWxfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0ZVN0YXRlbWVudC9Db21wbGV0ZVN0cmluZ0xpdGVyYWxfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MTA5MzQxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRlU3RhdGVtZW50L0NvbXBsZXRlU3RyaW5nTGl0ZXJhbF9hZnRlci5qYXZhCkBAIC0wLDAgKzEsNiBAQAorcHVibGljIGNsYXNzIEZvbyB7CisgICAgcHVibGljIHZvaWQgZm9vKCkgeworICAgICAgICBTdHJpbmcgcyA9ICJhYmNkZWYiOworICAgICAgICA8Y2FyZXQ+CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0ZVN0YXRlbWVudC9FbHNlSWYuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0ZVN0YXRlbWVudC9FbHNlSWYuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NTk2Zjc2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRlU3RhdGVtZW50L0Vsc2VJZi5qYXZhCkBAIC0wLDAgKzEsNyBAQAorY2xhc3MgVGVzdCB7CisgICAgeworICAgICAgICBpZih4KSB7CisgICAgICAgICAgeCgpOworICAgICAgICB9IGVsc2UgaWYoPGNhcmV0PikKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRlU3RhdGVtZW50L0Vsc2VJZl9hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRlU3RhdGVtZW50L0Vsc2VJZl9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRiOTJlYzAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGVTdGF0ZW1lbnQvRWxzZUlmX2FmdGVyLmphdmEKQEAgLTAsMCArMSw4IEBACitjbGFzcyBUZXN0IHsKKyAgICB7CisgICAgICAgIGlmKHgpIHsKKyAgICAgICAgICB4KCk7CisgICAgICAgIH0gZWxzZSBpZiAoPGNhcmV0PikgeworICAgICAgICB9CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0ZVN0YXRlbWVudC9FbXB0eUJlZm9yZVJldHVybi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRlU3RhdGVtZW50L0VtcHR5QmVmb3JlUmV0dXJuLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTdmNGNiNQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0ZVN0YXRlbWVudC9FbXB0eUJlZm9yZVJldHVybi5qYXZhCkBAIC0wLDAgKzEsNyBAQAorCitjbGFzcyBGb28geworICAgIHB1YmxpYyB2b2lkIGZvbygpIHsKKyAgICAgICAgPGNhcmV0PgorICAgICAgICByZXR1cm47CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0ZVN0YXRlbWVudC9FbXB0eUJlZm9yZVJldHVybl9hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRlU3RhdGVtZW50L0VtcHR5QmVmb3JlUmV0dXJuX2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzYzYjM4NAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0ZVN0YXRlbWVudC9FbXB0eUJlZm9yZVJldHVybl9hZnRlci5qYXZhCkBAIC0wLDAgKzEsOCBAQAorCitjbGFzcyBGb28geworICAgIHB1YmxpYyB2b2lkIGZvbygpIHsKKyAgICAgICAgCisgICAgICAgIDxjYXJldD4KKyAgICAgICAgcmV0dXJuOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGVTdGF0ZW1lbnQvRW1wdHlMaW5lLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGVTdGF0ZW1lbnQvRW1wdHlMaW5lLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2JmYWJiNgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0ZVN0YXRlbWVudC9FbXB0eUxpbmUuamF2YQpAQCAtMCwwICsxLDYgQEAKKworcHVibGljIGNsYXNzIEZvbyB7CisgICAgeworICAgICAgICA8Y2FyZXQ+CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0ZVN0YXRlbWVudC9FbXB0eUxpbmVfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0ZVN0YXRlbWVudC9FbXB0eUxpbmVfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NTlmNzI4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRlU3RhdGVtZW50L0VtcHR5TGluZV9hZnRlci5qYXZhCkBAIC0wLDAgKzEsNyBAQAorCitwdWJsaWMgY2xhc3MgRm9vIHsKKyAgICB7CisgICAgICAgIAorICAgICAgICA8Y2FyZXQ+CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0ZVN0YXRlbWVudC9FcnJvck5hdmlnYXRpb24uamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0ZVN0YXRlbWVudC9FcnJvck5hdmlnYXRpb24uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MmQ2ZjQwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRlU3RhdGVtZW50L0Vycm9yTmF2aWdhdGlvbi5qYXZhCkBAIC0wLDAgKzEsOCBAQAorCitjbGFzcyBmb28geworICAgIHsKKyAgICAgICAgaWYgKGEpIHsKKyAgICAgICAgICAgIGRvPGNhcmV0PgorICAgICAgICB9CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0ZVN0YXRlbWVudC9FcnJvck5hdmlnYXRpb25fYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0ZVN0YXRlbWVudC9FcnJvck5hdmlnYXRpb25fYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42Mjc1NDM0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRlU3RhdGVtZW50L0Vycm9yTmF2aWdhdGlvbl9hZnRlci5qYXZhCkBAIC0wLDAgKzEsOSBAQAorCitjbGFzcyBmb28geworICAgIHsKKyAgICAgICAgaWYgKGEpIHsKKyAgICAgICAgICAgIGRvIHsKKyAgICAgICAgICAgIH0gd2hpbGUgKDxjYXJldD4pOworICAgICAgICB9CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0ZVN0YXRlbWVudC9GaWVsZC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRlU3RhdGVtZW50L0ZpZWxkLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2U2MzkwYwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0ZVN0YXRlbWVudC9GaWVsZC5qYXZhCkBAIC0wLDAgKzEsMyBAQAorcHVibGljIGNsYXNzIFRlc3QgeworICAgIFN0cmluZyBzPGNhcmV0PgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0ZVN0YXRlbWVudC9GaWVsZFdpdGhJbml0aWFsaXplci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRlU3RhdGVtZW50L0ZpZWxkV2l0aEluaXRpYWxpemVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTJkMjgxOQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0ZVN0YXRlbWVudC9GaWVsZFdpdGhJbml0aWFsaXplci5qYXZhCkBAIC0wLDAgKzEsMyBAQAorcHVibGljIGNsYXNzIFRlc3QgeworICAgIFN0cmluZyBzID08Y2FyZXQ+Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRlU3RhdGVtZW50L0ZpZWxkV2l0aEluaXRpYWxpemVyX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGVTdGF0ZW1lbnQvRmllbGRXaXRoSW5pdGlhbGl6ZXJfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYjA2MmI1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRlU3RhdGVtZW50L0ZpZWxkV2l0aEluaXRpYWxpemVyX2FmdGVyLmphdmEKQEAgLTAsMCArMSwzIEBACitwdWJsaWMgY2xhc3MgVGVzdCB7CisgICAgU3RyaW5nIHMgPSA8Y2FyZXQ+OworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0ZVN0YXRlbWVudC9GaWVsZF9hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRlU3RhdGVtZW50L0ZpZWxkX2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWQxMTU3NAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0ZVN0YXRlbWVudC9GaWVsZF9hZnRlci5qYXZhCkBAIC0wLDAgKzEsMyBAQAorcHVibGljIGNsYXNzIFRlc3QgeworICAgIFN0cmluZyBzOzxjYXJldD4KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGVTdGF0ZW1lbnQvRm9sbG93ZWRCeUNvbW1lbnQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0ZVN0YXRlbWVudC9Gb2xsb3dlZEJ5Q29tbWVudC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZhN2RlMjAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGVTdGF0ZW1lbnQvRm9sbG93ZWRCeUNvbW1lbnQuamF2YQpAQCAtMCwwICsxLDYgQEAKK3B1YmxpYyBjbGFzcyBGb28geworICAgcHVibGljIHZvaWQgZm9vKCkgeworICAgICAgIGZvbyg8Y2FyZXQ+CisgICAgICAgLy8gc29tZSBsaW5lIGNvbW1lbnQKKyAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGVTdGF0ZW1lbnQvRm9sbG93ZWRCeUNvbW1lbnRfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0ZVN0YXRlbWVudC9Gb2xsb3dlZEJ5Q29tbWVudF9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIwOTg5OGYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGVTdGF0ZW1lbnQvRm9sbG93ZWRCeUNvbW1lbnRfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDYgQEAKK3B1YmxpYyBjbGFzcyBGb28geworICAgcHVibGljIHZvaWQgZm9vKCkgeworICAgICAgIGZvbygpOzxjYXJldD4KKyAgICAgICAvLyBzb21lIGxpbmUgY29tbWVudAorICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0ZVN0YXRlbWVudC9Gb3IuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0ZVN0YXRlbWVudC9Gb3IuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNmQ2YjJkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRlU3RhdGVtZW50L0Zvci5qYXZhCkBAIC0wLDAgKzEsNyBAQAorCitjbGFzcyBGb28geworICAgIHsKKyAgICAgICAgZm9yIChpbnQ8Y2FyZXQ+IGkgPSAwOyBpIDwgMTAwOyBpKyspIHsKKyAgICAgICAgfQorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGVTdGF0ZW1lbnQvRm9yQmxvY2suamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0ZVN0YXRlbWVudC9Gb3JCbG9jay5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk2NDRhNzUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGVTdGF0ZW1lbnQvRm9yQmxvY2suamF2YQpAQCAtMCwwICsxLDYgQEAKKworY2xhc3MgRm9vIHsKKyAgICB7CisgICAgICAgIGZvciAoaW50PGNhcmV0PiBpID0gMDsgaSA8IDEwMDsgaSsrKQorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGVTdGF0ZW1lbnQvRm9yQmxvY2tfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0ZVN0YXRlbWVudC9Gb3JCbG9ja19hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM3NjFmYTIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGVTdGF0ZW1lbnQvRm9yQmxvY2tfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDggQEAKKworY2xhc3MgRm9vIHsKKyAgICB7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgMTAwOyBpKyspIHsKKyAgICAgICAgICAgIDxjYXJldD4KKyAgICAgICAgfQorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGVTdGF0ZW1lbnQvRm9yRWFjaC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRlU3RhdGVtZW50L0ZvckVhY2guamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZDY3NDVhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRlU3RhdGVtZW50L0ZvckVhY2guamF2YQpAQCAtMCwwICsxLDYgQEAKK2NsYXNzIEZvbyB7CisgICAgeworICAgICAgICBMaXN0IGxpc3Q7CisgICAgICAgIGZvciAoU3RyaW5nIHM6bGlzdDxjYXJldD4pCisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0ZVN0YXRlbWVudC9Gb3JFYWNoX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGVTdGF0ZW1lbnQvRm9yRWFjaF9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdjOWE3ZTcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGVTdGF0ZW1lbnQvRm9yRWFjaF9hZnRlci5qYXZhCkBAIC0wLDAgKzEsOCBAQAorY2xhc3MgRm9vIHsKKyAgICB7CisgICAgICAgIExpc3QgbGlzdDsKKyAgICAgICAgZm9yIChTdHJpbmcgcyA6IGxpc3QpIHsKKyAgICAgICAgICAgIDxjYXJldD4KKyAgICAgICAgfQorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGVTdGF0ZW1lbnQvRm9ySW5jcmVtZW50RXhwcmVzc2lvbkFuZEJvZHkuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0ZVN0YXRlbWVudC9Gb3JJbmNyZW1lbnRFeHByZXNzaW9uQW5kQm9keS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIyYTgxYzcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGVTdGF0ZW1lbnQvRm9ySW5jcmVtZW50RXhwcmVzc2lvbkFuZEJvZHkuamF2YQpAQCAtMCwwICsxLDYgQEAKKworY2xhc3MgZm9vIHsKKyAgICB7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgNTsgcy50b1N0cmluZyg8Y2FyZXQ+CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0ZVN0YXRlbWVudC9Gb3JJbmNyZW1lbnRFeHByZXNzaW9uQW5kQm9keV9hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRlU3RhdGVtZW50L0ZvckluY3JlbWVudEV4cHJlc3Npb25BbmRCb2R5X2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2M0ZDc3NAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0ZVN0YXRlbWVudC9Gb3JJbmNyZW1lbnRFeHByZXNzaW9uQW5kQm9keV9hZnRlci5qYXZhCkBAIC0wLDAgKzEsOCBAQAorCitjbGFzcyBmb28geworICAgIHsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCA1OyBzLnRvU3RyaW5nKCkpIHsKKyAgICAgICAgICAgIDxjYXJldD4KKyAgICAgICAgfQorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGVTdGF0ZW1lbnQvRm9yU3RhdGVtZW50R2VuZXJhdGlvbi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRlU3RhdGVtZW50L0ZvclN0YXRlbWVudEdlbmVyYXRpb24uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wOGQ0YjIyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRlU3RhdGVtZW50L0ZvclN0YXRlbWVudEdlbmVyYXRpb24uamF2YQpAQCAtMCwwICsxLDUgQEAKK3B1YmxpYyBjbGFzcyBGb28geworICAgIHZvaWQgdGVzdChpbnQgaSkgeworICAgICAgICBmb3I8Y2FyZXQ+CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0ZVN0YXRlbWVudC9Gb3JTdGF0ZW1lbnRHZW5lcmF0aW9uX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGVTdGF0ZW1lbnQvRm9yU3RhdGVtZW50R2VuZXJhdGlvbl9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVjZWZhNjkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGVTdGF0ZW1lbnQvRm9yU3RhdGVtZW50R2VuZXJhdGlvbl9hZnRlci5qYXZhCkBAIC0wLDAgKzEsNiBAQAorcHVibGljIGNsYXNzIEZvbyB7CisgICAgdm9pZCB0ZXN0KGludCBpKSB7CisgICAgICAgIGZvciAoPGNhcmV0PikgeworICAgICAgICB9CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0ZVN0YXRlbWVudC9Gb3JVcGRhdGVHZW5lcmF0aW9uLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGVTdGF0ZW1lbnQvRm9yVXBkYXRlR2VuZXJhdGlvbi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk3M2JiNmYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGVTdGF0ZW1lbnQvRm9yVXBkYXRlR2VuZXJhdGlvbi5qYXZhCkBAIC0wLDAgKzEsNiBAQAorcHVibGljIGNsYXNzIEZvbyB7CisgICAgdm9pZCB0ZXN0KGludCBpKSB7CisgICAgICAgIGZvciAoaW50IGogPSAxOyBqIDwgMTA8Y2FyZXQ+KSB7CisgICAgICAgIH0KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRlU3RhdGVtZW50L0ZvclVwZGF0ZUdlbmVyYXRpb25fYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0ZVN0YXRlbWVudC9Gb3JVcGRhdGVHZW5lcmF0aW9uX2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWEzMmNhYQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0ZVN0YXRlbWVudC9Gb3JVcGRhdGVHZW5lcmF0aW9uX2FmdGVyLmphdmEKQEAgLTAsMCArMSw2IEBACitwdWJsaWMgY2xhc3MgRm9vIHsKKyAgICB2b2lkIHRlc3QoaW50IGkpIHsKKyAgICAgICAgZm9yIChpbnQgaiA9IDE7IGogPCAxMDsgPGNhcmV0PikgeworICAgICAgICB9CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0ZVN0YXRlbWVudC9Gb3JfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0ZVN0YXRlbWVudC9Gb3JfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNzYxZmEyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRlU3RhdGVtZW50L0Zvcl9hZnRlci5qYXZhCkBAIC0wLDAgKzEsOCBAQAorCitjbGFzcyBGb28geworICAgIHsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCAxMDA7IGkrKykgeworICAgICAgICAgICAgPGNhcmV0PgorICAgICAgICB9CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0ZVN0YXRlbWVudC9Gb3JjZUJsb2NrLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGVTdGF0ZW1lbnQvRm9yY2VCbG9jay5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQzODczMzUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGVTdGF0ZW1lbnQvRm9yY2VCbG9jay5qYXZhCkBAIC0wLDAgKzEsOSBAQAorCitwdWJsaWMgY2xhc3MgRm9vIHsKKyAgICB7CisgICAgICAgIGludCBhOworICAgICAgICBhID0gMTsKKyAgICAgICAgaWYgKGEgPT0gMTxjYXJldD4pCisgICAgICAgIGEgPSAyOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGVTdGF0ZW1lbnQvRm9yY2VCbG9ja19hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRlU3RhdGVtZW50L0ZvcmNlQmxvY2tfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mOTQwM2QzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRlU3RhdGVtZW50L0ZvcmNlQmxvY2tfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDExIEBACisKK3B1YmxpYyBjbGFzcyBGb28geworICAgIHsKKyAgICAgICAgaW50IGE7CisgICAgICAgIGEgPSAxOworICAgICAgICBpZiAoYSA9PSAxKSB7CisgICAgICAgICAgICA8Y2FyZXQ+CisgICAgICAgIH0KKyAgICAgICAgYSA9IDI7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0ZVN0YXRlbWVudC9Gcm9tSmF2YWRvY1BhcmFtZXRlckRlc2NyaXB0aW9uRW5kVG9OZXh0UGFyYW1ldGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGVTdGF0ZW1lbnQvRnJvbUphdmFkb2NQYXJhbWV0ZXJEZXNjcmlwdGlvbkVuZFRvTmV4dFBhcmFtZXRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMwZDI5OWEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGVTdGF0ZW1lbnQvRnJvbUphdmFkb2NQYXJhbWV0ZXJEZXNjcmlwdGlvbkVuZFRvTmV4dFBhcmFtZXRlci5qYXZhCkBAIC0wLDAgKzEsOSBAQAorY2xhc3MgRm9vIHsKKworICAgLyoqCisgICAgKiBAcGFyYW0gYXJndW1lbnQgIGZpcnN0IGFyZyBkZXNjcmlwdGlvbjxjYXJldD4KKyAgICAqIEBwYXJhbSBpCisgICAgKi8KKyAgICB2b2lkIGZvbyhpbnQgYXJndW1lbnQsIGludCBpKSB7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0ZVN0YXRlbWVudC9Gcm9tSmF2YWRvY1BhcmFtZXRlckRlc2NyaXB0aW9uRW5kVG9OZXh0UGFyYW1ldGVyX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGVTdGF0ZW1lbnQvRnJvbUphdmFkb2NQYXJhbWV0ZXJEZXNjcmlwdGlvbkVuZFRvTmV4dFBhcmFtZXRlcl9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJjYTFlNmUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGVTdGF0ZW1lbnQvRnJvbUphdmFkb2NQYXJhbWV0ZXJEZXNjcmlwdGlvbkVuZFRvTmV4dFBhcmFtZXRlcl9hZnRlci5qYXZhCkBAIC0wLDAgKzEsOSBAQAorY2xhc3MgRm9vIHsKKworICAgLyoqCisgICAgKiBAcGFyYW0gYXJndW1lbnQgIGZpcnN0IGFyZyBkZXNjcmlwdGlvbgorICAgICogQHBhcmFtIGkgICAgICAgICA8Y2FyZXQ+CisgICAgKi8KKyAgICB2b2lkIGZvbyhpbnQgYXJndW1lbnQsIGludCBpKSB7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0ZVN0YXRlbWVudC9Gcm9tSmF2YWRvY1BhcmFtZXRlckRlc2NyaXB0aW9uTWlkZGxlVG9OZXh0UGFyYW1ldGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGVTdGF0ZW1lbnQvRnJvbUphdmFkb2NQYXJhbWV0ZXJEZXNjcmlwdGlvbk1pZGRsZVRvTmV4dFBhcmFtZXRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY3OGYxN2IKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGVTdGF0ZW1lbnQvRnJvbUphdmFkb2NQYXJhbWV0ZXJEZXNjcmlwdGlvbk1pZGRsZVRvTmV4dFBhcmFtZXRlci5qYXZhCkBAIC0wLDAgKzEsOSBAQAorY2xhc3MgRm9vIHsKKworICAgLyoqCisgICAgKiBAcGFyYW0gYXJndW1lbnQgIGZpcnN0IGFyZyA8Y2FyZXQ+ZGVzY3JpcHRpb24KKyAgICAqIEBwYXJhbSBpCisgICAgKi8KKyAgICB2b2lkIGZvbyhpbnQgYXJndW1lbnQsIGludCBpKSB7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0ZVN0YXRlbWVudC9Gcm9tSmF2YWRvY1BhcmFtZXRlckRlc2NyaXB0aW9uTWlkZGxlVG9OZXh0UGFyYW1ldGVyX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGVTdGF0ZW1lbnQvRnJvbUphdmFkb2NQYXJhbWV0ZXJEZXNjcmlwdGlvbk1pZGRsZVRvTmV4dFBhcmFtZXRlcl9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJjYTFlNmUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGVTdGF0ZW1lbnQvRnJvbUphdmFkb2NQYXJhbWV0ZXJEZXNjcmlwdGlvbk1pZGRsZVRvTmV4dFBhcmFtZXRlcl9hZnRlci5qYXZhCkBAIC0wLDAgKzEsOSBAQAorY2xhc3MgRm9vIHsKKworICAgLyoqCisgICAgKiBAcGFyYW0gYXJndW1lbnQgIGZpcnN0IGFyZyBkZXNjcmlwdGlvbgorICAgICogQHBhcmFtIGkgICAgICAgICA8Y2FyZXQ+CisgICAgKi8KKyAgICB2b2lkIGZvbyhpbnQgYXJndW1lbnQsIGludCBpKSB7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0ZVN0YXRlbWVudC9JREVBMjIxMjUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0ZVN0YXRlbWVudC9JREVBMjIxMjUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wN2NmZDM4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRlU3RhdGVtZW50L0lERUEyMjEyNS5qYXZhCkBAIC0wLDAgKzEsNiBAQAorCitwdWJsaWMgY2xhc3MgSnVuayB7CisgICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgeworICAgICAgICBpbnQgaSA8Y2FyZXQ+PSAxIC8vIGNvbW1lbnQKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGVTdGF0ZW1lbnQvSURFQTIyMTI1X2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGVTdGF0ZW1lbnQvSURFQTIyMTI1X2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjFmY2EyNAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0ZVN0YXRlbWVudC9JREVBMjIxMjVfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDYgQEAKKworcHVibGljIGNsYXNzIEp1bmsgeworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKKyAgICAgICAgaW50IGkgPSAxOyAvLyBjb21tZW50PGNhcmV0PgorICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0ZVN0YXRlbWVudC9JREVBMjIzODUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0ZVN0YXRlbWVudC9JREVBMjIzODUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41OTA1MTIyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRlU3RhdGVtZW50L0lERUEyMjM4NS5qYXZhCkBAIC0wLDAgKzEsNiBAQAoraW1wb3J0IHN0YXRpYyBqYXZhLnV0PGNhcmV0PmlsLioKKworcHVibGljIGNsYXNzIEp1bmsgeworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGVTdGF0ZW1lbnQvSURFQTIyMzg1X2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGVTdGF0ZW1lbnQvSURFQTIyMzg1X2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDBkNDQ2YgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0ZVN0YXRlbWVudC9JREVBMjIzODVfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDYgQEAKK2ltcG9ydCBzdGF0aWMgamF2YS51dGlsLio7PGNhcmV0PgorCitwdWJsaWMgY2xhc3MgSnVuayB7CisgICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgeworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0ZVN0YXRlbWVudC9JREVBMjUxMzkuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0ZVN0YXRlbWVudC9JREVBMjUxMzkuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZjExOTdiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRlU3RhdGVtZW50L0lERUEyNTEzOS5qYXZhCkBAIC0wLDAgKzEsNSBAQAorCitjbGFzcyBGb28geworICAgIEBUZXN0CisgICAgICBwdWJsaWMgdm9pZCB0ZXN0VmFsdWVPZig8Y2FyZXQ+KQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRlU3RhdGVtZW50L0lERUEyNTEzOV9hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRlU3RhdGVtZW50L0lERUEyNTEzOV9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU0YWVkYjgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGVTdGF0ZW1lbnQvSURFQTI1MTM5X2FmdGVyLmphdmEKQEAgLTAsMCArMSw4IEBACisKK2NsYXNzIEZvbyB7CisgICAgQFRlc3QKKyAgICBwdWJsaWMgdm9pZCB0ZXN0VmFsdWVPZigpCisgICAgeworICAgICAgICA8Y2FyZXQ+CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRlU3RhdGVtZW50L0lERUFERVYxMDkzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGVTdGF0ZW1lbnQvSURFQURFVjEwOTMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZjdlZjg4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRlU3RhdGVtZW50L0lERUFERVYxMDkzLmphdmEKQEAgLTAsMCArMSw2IEBACitjbGFzcyBGb28geworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBmb28oaW50IHg8Y2FyZXQ+KSB7CisgICAgcHVibGljIHN0YXRpYyB2b2lkIGJhcihpbnQgeCwgaW50IHkpIHsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0ZVN0YXRlbWVudC9JREVBREVWMTA5M19hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRlU3RhdGVtZW50L0lERUFERVYxMDkzX2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjRkYWU1MAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0ZVN0YXRlbWVudC9JREVBREVWMTA5M19hZnRlci5qYXZhCkBAIC0wLDAgKzEsOCBAQAorY2xhc3MgRm9vIHsKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgZm9vKGludCB4KSB7CisgICAgICAgIDxjYXJldD4KKyAgICB9CisgICAgcHVibGljIHN0YXRpYyB2b2lkIGJhcihpbnQgeCwgaW50IHkpIHsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0ZVN0YXRlbWVudC9JREVBREVWMTMwMTkuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0ZVN0YXRlbWVudC9JREVBREVWMTMwMTkuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNTZlNjEzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRlU3RhdGVtZW50L0lERUFERVYxMzAxOS5qYXZhCkBAIC0wLDAgKzEsNSBAQAorCitjbGFzcyBUCit7CisgICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncyk8Y2FyZXQ+Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRlU3RhdGVtZW50L0lERUFERVYxMzAxOV9hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRlU3RhdGVtZW50L0lERUFERVYxMzAxOV9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZkOGQ5MDkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGVTdGF0ZW1lbnQvSURFQURFVjEzMDE5X2FmdGVyLmphdmEKQEAgLTAsMCArMSw4IEBACisKK2NsYXNzIFQKK3sKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKQorICAgIHsKKyAgICAgICAgPGNhcmV0PgorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGVTdGF0ZW1lbnQvSURFQURFVjE3MTAuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0ZVN0YXRlbWVudC9JREVBREVWMTcxMC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNjYTZmMTYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGVTdGF0ZW1lbnQvSURFQURFVjE3MTAuamF2YQpAQCAtMCwwICsxLDMgQEAKK3B1YmxpYyBjbGFzcyBGb28geworICAgIHB1YmxpYyB2b2lkIGZvbygpIHRocm93cyBFeGNlcHRpb24gPGNhcmV0PgorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRlU3RhdGVtZW50L0lERUFERVYxNzEwX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGVTdGF0ZW1lbnQvSURFQURFVjE3MTBfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42Y2JlYTlhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRlU3RhdGVtZW50L0lERUFERVYxNzEwX2FmdGVyLmphdmEKQEAgLTAsMCArMSw1IEBACitwdWJsaWMgY2xhc3MgRm9vIHsKKyAgICBwdWJsaWMgdm9pZCBmb28oKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgICAgPGNhcmV0PgorICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0ZVN0YXRlbWVudC9JREVBREVWMjA3MTMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0ZVN0YXRlbWVudC9JREVBREVWMjA3MTMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZTM4YTY0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRlU3RhdGVtZW50L0lERUFERVYyMDcxMy5qYXZhCkBAIC0wLDAgKzEsOCBAQAorCitjbGFzcyBUIHsKKyAgICB2b2lkIHRlc3QoT2JqZWN0IGEpIHsKKyAgICAgICAgaWYgKHRydWUpIDxjYXJldD4KKyAgICAgICAgaWYgKGEgIT0gbnVsbCkKKyAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiYSA9ICIgKyBhLnRvU3RyaW5nKCkpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGVTdGF0ZW1lbnQvSURFQURFVjIwNzEzX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGVTdGF0ZW1lbnQvSURFQURFVjIwNzEzX2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjM2OTlkZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0ZVN0YXRlbWVudC9JREVBREVWMjA3MTNfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDEwIEBACisKK2NsYXNzIFQgeworICAgIHZvaWQgdGVzdChPYmplY3QgYSkgeworICAgICAgICBpZiAodHJ1ZSkgeworICAgICAgICAgICAgPGNhcmV0PgorICAgICAgICB9CisgICAgICAgIGlmIChhICE9IG51bGwpCisgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oImEgPSAiICsgYS50b1N0cmluZygpKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRlU3RhdGVtZW50L0lERUFERVY0MDQ3OS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRlU3RhdGVtZW50L0lERUFERVY0MDQ3OS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRkYTI0Y2QKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGVTdGF0ZW1lbnQvSURFQURFVjQwNDc5LmphdmEKQEAgLTAsMCArMSw2IEBACisKK3B1YmxpYyBjbGFzcyBKdW5rIHsKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CisgICAgICAgIGludFtdIGFyciA9IG5ldyBpbnRbXXsxLDIsM308Y2FyZXQ+CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRlU3RhdGVtZW50L0lERUFERVY0MDQ3OV9hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRlU3RhdGVtZW50L0lERUFERVY0MDQ3OV9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM2MWM0Y2EKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGVTdGF0ZW1lbnQvSURFQURFVjQwNDc5X2FmdGVyLmphdmEKQEAgLTAsMCArMSw2IEBACisKK3B1YmxpYyBjbGFzcyBKdW5rIHsKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CisgICAgICAgIGludFtdIGFyciA9IG5ldyBpbnRbXXsxLCAyLCAzfTs8Y2FyZXQ+CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRlU3RhdGVtZW50L0lERUFERVY0MzQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0ZVN0YXRlbWVudC9JREVBREVWNDM0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTc2YjBhZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0ZVN0YXRlbWVudC9JREVBREVWNDM0LmphdmEKQEAgLTAsMCArMSw2IEBACitjbGFzcyBGb28geworICAgIHsKKyAgICAgICAgaWYgKHRydWUpIDxjYXJldD4KKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0ZVN0YXRlbWVudC9JREVBREVWNDM0X2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGVTdGF0ZW1lbnQvSURFQURFVjQzNF9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUxOWQyZGYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGVTdGF0ZW1lbnQvSURFQURFVjQzNF9hZnRlci5qYXZhCkBAIC0wLDAgKzEsOCBAQAorY2xhc3MgRm9vIHsKKyAgICB7CisgICAgICAgIGlmICh0cnVlKSB7CisgICAgICAgICAgICA8Y2FyZXQ+CisgICAgICAgIH0KKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0ZVN0YXRlbWVudC9JZi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRlU3RhdGVtZW50L0lmLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWIyNzJlMQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0ZVN0YXRlbWVudC9JZi5qYXZhCkBAIC0wLDAgKzEsNyBAQAorcHVibGljIGNsYXNzIEZvbyB7CisgICAgeworICAgICAgICBpZjxjYXJldD4gKHgpCisgICAgICAgIHsKKyAgICAgICAgfQorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGVTdGF0ZW1lbnQvSWZfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0ZVN0YXRlbWVudC9JZl9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI2MDFlMjYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGVTdGF0ZW1lbnQvSWZfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDcgQEAKK3B1YmxpYyBjbGFzcyBGb28geworICAgIHsKKyAgICAgICAgaWYgKHgpIHsKKyAgICAgICAgICAgIDxjYXJldD4KKyAgICAgICAgfQorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGVTdGF0ZW1lbnQvSW5Db21tZW50LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGVTdGF0ZW1lbnQvSW5Db21tZW50LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjFhNTc2ZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0ZVN0YXRlbWVudC9JbkNvbW1lbnQuamF2YQpAQCAtMCwwICsxLDYgQEAKKworcHVibGljIGNsYXNzIFRlc3QgeworICAgIC8qKjxjYXJldD4KKyAgICBwdWJsaWMgdm9pZCBmb28oKSB7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0ZVN0YXRlbWVudC9JbkNvbW1lbnQyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGVTdGF0ZW1lbnQvSW5Db21tZW50Mi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ4MjQ2ZDMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGVTdGF0ZW1lbnQvSW5Db21tZW50Mi5qYXZhCkBAIC0wLDAgKzEsOCBAQAorCitwdWJsaWMgY2xhc3MgVGVzdCB7CisgICAgLyoqCisgICAgICogYWJjZDxjYXJldD5lZmdoCisgICAgICovCisgICAgcHVibGljIHZvaWQgZm9vKCkgeworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGVTdGF0ZW1lbnQvSW5Db21tZW50Ml9hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRlU3RhdGVtZW50L0luQ29tbWVudDJfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMDRhZWFlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRlU3RhdGVtZW50L0luQ29tbWVudDJfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDkgQEAKKworcHVibGljIGNsYXNzIFRlc3QgeworICAgIC8qKgorICAgICAqIGFiY2RlZmdoCisgICAgICogPGNhcmV0PgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIGZvbygpIHsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRlU3RhdGVtZW50L0luQ29tbWVudDMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0ZVN0YXRlbWVudC9JbkNvbW1lbnQzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTkwMmUyOAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0ZVN0YXRlbWVudC9JbkNvbW1lbnQzLmphdmEKQEAgLTAsMCArMSw2IEBACisKK3B1YmxpYyBjbGFzcyBUZXN0IHsKKyAgICBwdWJsaWMgdm9pZCBmb28oKSB7CisgICAgICAgIC8vIFNvbWUgPGNhcmV0PiBjb21tZW50CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0ZVN0YXRlbWVudC9JbkNvbW1lbnQzX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGVTdGF0ZW1lbnQvSW5Db21tZW50M19hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdiNjYyZTEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGVTdGF0ZW1lbnQvSW5Db21tZW50M19hZnRlci5qYXZhCkBAIC0wLDAgKzEsNyBAQAorCitwdWJsaWMgY2xhc3MgVGVzdCB7CisgICAgcHVibGljIHZvaWQgZm9vKCkgeworICAgICAgICAvLyBTb21lICBjb21tZW50CisgICAgICAgIC8vIDxjYXJldD4KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRlU3RhdGVtZW50L0luQ29tbWVudDQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0ZVN0YXRlbWVudC9JbkNvbW1lbnQ0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDdmOGJiZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0ZVN0YXRlbWVudC9JbkNvbW1lbnQ0LmphdmEKQEAgLTAsMCArMSw3IEBACisKK3B1YmxpYyBjbGFzcyBUZXN0IHsKKyAgICBwdWJsaWMgdm9pZCBmb28oKSB7CisgICAgICAgIC8qPGNhcmV0PgorICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oImZvbyIpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGVTdGF0ZW1lbnQvSW5Db21tZW50NF9hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRlU3RhdGVtZW50L0luQ29tbWVudDRfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hOWY1MjQ3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRlU3RhdGVtZW50L0luQ29tbWVudDRfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDkgQEAKKworcHVibGljIGNsYXNzIFRlc3QgeworICAgIHB1YmxpYyB2b2lkIGZvbygpIHsKKyAgICAgICAgLyoKKyAgICAgICAgPGNhcmV0PgorICAgICAgICAgKi8KKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJmb28iKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRlU3RhdGVtZW50L0luQ29tbWVudF9hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRlU3RhdGVtZW50L0luQ29tbWVudF9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMwN2QyMDYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGVTdGF0ZW1lbnQvSW5Db21tZW50X2FmdGVyLmphdmEKQEAgLTAsMCArMSw4IEBACisKK3B1YmxpYyBjbGFzcyBUZXN0IHsKKyAgICAvKioKKyAgICAgKiA8Y2FyZXQ+CisgICAgICovCisgICAgcHVibGljIHZvaWQgZm9vKCkgeworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGVTdGF0ZW1lbnQvSW5QcmVjZWVkaW5nQmxhbmtzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGVTdGF0ZW1lbnQvSW5QcmVjZWVkaW5nQmxhbmtzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzcyYzVjOQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0ZVN0YXRlbWVudC9JblByZWNlZWRpbmdCbGFua3MuamF2YQpAQCAtMCwwICsxLDYgQEAKK3B1YmxpYyBjbGFzcyBUZXN0IHsKKyAgICB7CisgICAgICAgIHggPSAyOworICAgIDxjYXJldD4gICAgZm9vKCk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0ZVN0YXRlbWVudC9JblByZWNlZWRpbmdCbGFua3NfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0ZVN0YXRlbWVudC9JblByZWNlZWRpbmdCbGFua3NfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZTRjNTUzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRlU3RhdGVtZW50L0luUHJlY2VlZGluZ0JsYW5rc19hZnRlci5qYXZhCkBAIC0wLDAgKzEsNyBAQAorcHVibGljIGNsYXNzIFRlc3QgeworICAgIHsKKyAgICAgICAgeCA9IDI7CisgICAgICAgIGZvbygpOworICAgICAgICA8Y2FyZXQ+CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0ZVN0YXRlbWVudC9JbmNvbXBsZXRlQ2FsbC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRlU3RhdGVtZW50L0luY29tcGxldGVDYWxsLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTdiMDNhYwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0ZVN0YXRlbWVudC9JbmNvbXBsZXRlQ2FsbC5qYXZhCkBAIC0wLDAgKzEsNyBAQAorCitwdWJsaWMgY2xhc3MgRm9vIHsKKyAgICB7CisgICAgICAgIGZvbzxjYXJldD4oCisgICAgICAgIGZvbygpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGVTdGF0ZW1lbnQvSW5jb21wbGV0ZUNhbGxfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0ZVN0YXRlbWVudC9JbmNvbXBsZXRlQ2FsbF9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYwOGRlMWUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGVTdGF0ZW1lbnQvSW5jb21wbGV0ZUNhbGxfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDcgQEAKKworcHVibGljIGNsYXNzIEZvbyB7CisgICAgeworICAgICAgICBmb28oKTs8Y2FyZXQ+CisgICAgICAgIGZvbygpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGVTdGF0ZW1lbnQvSW5jb21wbGV0ZUVsc2VJZi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRlU3RhdGVtZW50L0luY29tcGxldGVFbHNlSWYuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMjdkM2VkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRlU3RhdGVtZW50L0luY29tcGxldGVFbHNlSWYuamF2YQpAQCAtMCwwICsxLDggQEAKK2NsYXNzIEZvbyB7CisgICAgYm9vbGVhbiBhOworICAgIHsKKyAgICAgICAgaWYgKGEpIHsKKyAgICAgICAgfSBlbDxjYXJldD5zZQorICAgICAgICBhID0gMjsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRlU3RhdGVtZW50L0luY29tcGxldGVFbHNlSWZfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0ZVN0YXRlbWVudC9JbmNvbXBsZXRlRWxzZUlmX2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWI2NDc4NQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0ZVN0YXRlbWVudC9JbmNvbXBsZXRlRWxzZUlmX2FmdGVyLmphdmEKQEAgLTAsMCArMSwxMSBAQAorY2xhc3MgRm9vIHsKKyAgICBib29sZWFuIGE7CisKKyAgICB7CisgICAgICAgIGlmIChhKSB7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICA8Y2FyZXQ+CisgICAgICAgIH0KKyAgICAgICAgYSA9IDI7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0ZVN0YXRlbWVudC9JbmRlbnRhdGlvbi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRlU3RhdGVtZW50L0luZGVudGF0aW9uLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGU1NmVkNQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0ZVN0YXRlbWVudC9JbmRlbnRhdGlvbi5qYXZhCkBAIC0wLDAgKzEsOCBAQAorCitjbGFzcyBmb28geworICAgIHsKKyAgICAgICAgaWYgKGEpIHsKKyAgICAgICAgICAgIGlmKGE8Y2FyZXQ+CisgICAgICAgIH0KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRlU3RhdGVtZW50L0luZGVudGF0aW9uX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGVTdGF0ZW1lbnQvSW5kZW50YXRpb25fYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MTFlZDNkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRlU3RhdGVtZW50L0luZGVudGF0aW9uX2FmdGVyLmphdmEKQEAgLTAsMCArMSwxMCBAQAorCitjbGFzcyBmb28geworICAgIHsKKyAgICAgICAgaWYgKGEpIHsKKyAgICAgICAgICAgIGlmIChhKSB7CisgICAgICAgICAgICAgICAgPGNhcmV0PgorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0ZVN0YXRlbWVudC9JbnRlcmZhY2VNZXRob2RTZW1pY29sb24uamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0ZVN0YXRlbWVudC9JbnRlcmZhY2VNZXRob2RTZW1pY29sb24uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ODdlYzk1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRlU3RhdGVtZW50L0ludGVyZmFjZU1ldGhvZFNlbWljb2xvbi5qYXZhCkBAIC0wLDAgKzEsNCBAQAoraW50ZXJmYWNlIEludGVyZmFjZU1ldGhvZFNlbWljb2xvbiB7CisgICAgdm9pZCBmb28oU3RyaW5nIHMpPGNhcmV0PgorICAgIE9iamVjdCBiYXIoKTsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGVTdGF0ZW1lbnQvSW50ZXJmYWNlTWV0aG9kU2VtaWNvbG9uX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGVTdGF0ZW1lbnQvSW50ZXJmYWNlTWV0aG9kU2VtaWNvbG9uX2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWQ2N2I4ZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0ZVN0YXRlbWVudC9JbnRlcmZhY2VNZXRob2RTZW1pY29sb25fYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDQgQEAKK2ludGVyZmFjZSBJbnRlcmZhY2VNZXRob2RTZW1pY29sb24geworICAgIHZvaWQgZm9vKFN0cmluZyBzKTs8Y2FyZXQ+CisgICAgT2JqZWN0IGJhcigpOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0ZVN0YXRlbWVudC9MYXN0SmF2YWRvY1BhcmFtZXRlckRlc2NyaXB0aW9uLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGVTdGF0ZW1lbnQvTGFzdEphdmFkb2NQYXJhbWV0ZXJEZXNjcmlwdGlvbi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM2MWY4YmEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGVTdGF0ZW1lbnQvTGFzdEphdmFkb2NQYXJhbWV0ZXJEZXNjcmlwdGlvbi5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKK2NsYXNzIEZvbyB7CisKKyAgICAvKioKKyAgICAgKiAKKyAgICAgKiBAcGFyYW0gaSAgZGVzYworICAgICAqIEBwYXJhbSBqICBkZXNjPGNhcmV0PgorICAgICAqLworICAgIHZvaWQgdGVzdChpbnQgaSwgaW50IGopIHsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRlU3RhdGVtZW50L0xhc3RKYXZhZG9jUGFyYW1ldGVyRGVzY3JpcHRpb25Ub1JldHVybi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRlU3RhdGVtZW50L0xhc3RKYXZhZG9jUGFyYW1ldGVyRGVzY3JpcHRpb25Ub1JldHVybi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhiODZiMmEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGVTdGF0ZW1lbnQvTGFzdEphdmFkb2NQYXJhbWV0ZXJEZXNjcmlwdGlvblRvUmV0dXJuLmphdmEKQEAgLTAsMCArMSwxMSBAQAorY2xhc3MgRm9vIHsKKworICAgIC8qKgorICAgICAqIAorICAgICAqIEBwYXJhbSBpICBkZXNjCisgICAgICogQHBhcmFtIGogIGRlc2M8Y2FyZXQ+CisgICAgICogQHJldHVybgorICAgICAqLworICAgIGludCB0ZXN0KGludCBpLCBpbnQgaikgeworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGVTdGF0ZW1lbnQvTGFzdEphdmFkb2NQYXJhbWV0ZXJEZXNjcmlwdGlvblRvUmV0dXJuX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGVTdGF0ZW1lbnQvTGFzdEphdmFkb2NQYXJhbWV0ZXJEZXNjcmlwdGlvblRvUmV0dXJuX2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTY2OWM5OQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0ZVN0YXRlbWVudC9MYXN0SmF2YWRvY1BhcmFtZXRlckRlc2NyaXB0aW9uVG9SZXR1cm5fYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDExIEBACitjbGFzcyBGb28geworCisgICAgLyoqCisgICAgICogCisgICAgICogQHBhcmFtIGkgIGRlc2MKKyAgICAgKiBAcGFyYW0gaiAgZGVzYworICAgICAqIEByZXR1cm48Y2FyZXQ+CisgICAgICovCisgICAgaW50IHRlc3QoaW50IGksIGludCBqKSB7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0ZVN0YXRlbWVudC9MYXN0SmF2YWRvY1BhcmFtZXRlckRlc2NyaXB0aW9uX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGVTdGF0ZW1lbnQvTGFzdEphdmFkb2NQYXJhbWV0ZXJEZXNjcmlwdGlvbl9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZhZTgyNWQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGVTdGF0ZW1lbnQvTGFzdEphdmFkb2NQYXJhbWV0ZXJEZXNjcmlwdGlvbl9hZnRlci5qYXZhCkBAIC0wLDAgKzEsMTEgQEAKK2NsYXNzIEZvbyB7CisKKyAgICAvKioKKyAgICAgKiAKKyAgICAgKiBAcGFyYW0gaSAgZGVzYworICAgICAqIEBwYXJhbSBqICBkZXNjCisgICAgICogPGNhcmV0PgorICAgICAqLworICAgIHZvaWQgdGVzdChpbnQgaSwgaW50IGopIHsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRlU3RhdGVtZW50L01ldGhvZC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRlU3RhdGVtZW50L01ldGhvZC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM4ZWFkYWIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGVTdGF0ZW1lbnQvTWV0aG9kLmphdmEKQEAgLTAsMCArMSwzIEBACitwdWJsaWMgY2xhc3MgVGVzdCB7CisgICB2b2lkIGZvbyg8Y2FyZXQ+Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRlU3RhdGVtZW50L01ldGhvZF9hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRlU3RhdGVtZW50L01ldGhvZF9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQxY2UzOTQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGVTdGF0ZW1lbnQvTWV0aG9kX2FmdGVyLmphdmEKQEAgLTAsMCArMSw1IEBACitwdWJsaWMgY2xhc3MgVGVzdCB7CisgICAgdm9pZCBmb28oKSB7CisgICAgICAgIDxjYXJldD4KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRlU3RhdGVtZW50L011bHRpbGluZVJldHVybi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRlU3RhdGVtZW50L011bHRpbGluZVJldHVybi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI5ZmI5NTgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGVTdGF0ZW1lbnQvTXVsdGlsaW5lUmV0dXJuLmphdmEKQEAgLTAsMCArMSw2IEBACitjbGFzcyBUZXN0IHsKKyAgT2JqZWN0IG1ldGhvZCgpIHsKKyAgICByZXR1cm4KKyAgICAgIG51bGw8Y2FyZXQ+CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGVTdGF0ZW1lbnQvTXVsdGlsaW5lUmV0dXJuX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGVTdGF0ZW1lbnQvTXVsdGlsaW5lUmV0dXJuX2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2RjYmUyNwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0ZVN0YXRlbWVudC9NdWx0aWxpbmVSZXR1cm5fYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDYgQEAKK2NsYXNzIFRlc3QgeworICBPYmplY3QgbWV0aG9kKCkgeworICAgICAgcmV0dXJuCisgICAgICAgICAgICAgIG51bGw7PGNhcmV0PgorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRlU3RhdGVtZW50L05ld0luUGFyZW50aGVzZXMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0ZVN0YXRlbWVudC9OZXdJblBhcmVudGhlc2VzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzQ4M2VkNgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0ZVN0YXRlbWVudC9OZXdJblBhcmVudGhlc2VzLmphdmEKQEAgLTAsMCArMSw2IEBACisKK2NsYXNzIGZvbyB7CisgICAgeworICAgICAgICBPYmplY3QgZCA9ICggKCBTdHJpbmcgKSBuZXcgU3RyaW5nKCk8Y2FyZXQ+CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0ZVN0YXRlbWVudC9OZXdJblBhcmVudGhlc2VzX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGVTdGF0ZW1lbnQvTmV3SW5QYXJlbnRoZXNlc19hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBiZGQ5YzAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGVTdGF0ZW1lbnQvTmV3SW5QYXJlbnRoZXNlc19hZnRlci5qYXZhCkBAIC0wLDAgKzEsNiBAQAorCitjbGFzcyBmb28geworICAgIHsKKyAgICAgICAgT2JqZWN0IGQgPSAoKFN0cmluZykgbmV3IFN0cmluZygpKTs8Y2FyZXQ+CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0ZVN0YXRlbWVudC9Ob0Jsb2NrUmV0dXJuLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGVTdGF0ZW1lbnQvTm9CbG9ja1JldHVybi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZlY2M3YTcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGVTdGF0ZW1lbnQvTm9CbG9ja1JldHVybi5qYXZhCkBAIC0wLDAgKzEsNSBAQAorcHVibGljIGNsYXNzIFRlc3QgeworICAgIHB1YmxpYyB2b2lkIGZvbygpIHsKKyAgICAgICAgaWYgKGkpIHJldHVybjxjYXJldD47CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0ZVN0YXRlbWVudC9Ob0Jsb2NrUmV0dXJuX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGVTdGF0ZW1lbnQvTm9CbG9ja1JldHVybl9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA1ZTBjMzQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGVTdGF0ZW1lbnQvTm9CbG9ja1JldHVybl9hZnRlci5qYXZhCkBAIC0wLDAgKzEsNiBAQAorcHVibGljIGNsYXNzIFRlc3QgeworICAgIHB1YmxpYyB2b2lkIGZvbygpIHsKKyAgICAgICAgaWYgKGkpIHJldHVybjsKKyAgICAgICAgPGNhcmV0PgorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGVTdGF0ZW1lbnQvTm9FcnJvcnMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0ZVN0YXRlbWVudC9Ob0Vycm9ycy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQxMzE4OWEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGVTdGF0ZW1lbnQvTm9FcnJvcnMuamF2YQpAQCAtMCwwICsxLDYgQEAKKworcHVibGljIGNsYXNzIFRlc3QgeworICAgIHB1YmxpYyB2b2lkIGZvbygpIHsKKyAgICAgICAgaW50IHggPGNhcmV0Pj0gMjsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRlU3RhdGVtZW50L05vRXJyb3JzX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGVTdGF0ZW1lbnQvTm9FcnJvcnNfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40M2RjMzA5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRlU3RhdGVtZW50L05vRXJyb3JzX2FmdGVyLmphdmEKQEAgLTAsMCArMSw3IEBACisKK3B1YmxpYyBjbGFzcyBUZXN0IHsKKyAgICBwdWJsaWMgdm9pZCBmb28oKSB7CisgICAgICAgIGludCB4ID0gMjsKKyAgICAgICAgPGNhcmV0PgorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGVTdGF0ZW1lbnQvTm9TcGFjZUFmdGVyU2VtaWNvbG9uLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGVTdGF0ZW1lbnQvTm9TcGFjZUFmdGVyU2VtaWNvbG9uLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGEwYjNlMAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0ZVN0YXRlbWVudC9Ob1NwYWNlQWZ0ZXJTZW1pY29sb24uamF2YQpAQCAtMCwwICsxLDYgQEAKK3B1YmxpYyBjbGFzcyBGb28geworICAgIHZvaWQgdGVzdChpbnQgaSkgeworICAgICAgICBmb3IgKGludCBqID0gMTxjYXJldD4pIHsKKyAgICAgICAgfQorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGVTdGF0ZW1lbnQvTm9TcGFjZUFmdGVyU2VtaWNvbG9uX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGVTdGF0ZW1lbnQvTm9TcGFjZUFmdGVyU2VtaWNvbG9uX2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjQ5ZDYxMgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0ZVN0YXRlbWVudC9Ob1NwYWNlQWZ0ZXJTZW1pY29sb25fYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDYgQEAKK3B1YmxpYyBjbGFzcyBGb28geworICAgIHZvaWQgdGVzdChpbnQgaSkgeworICAgICAgICBmb3IgKGludCBqID0gMTs8Y2FyZXQ+KSB7CisgICAgICAgIH0KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRlU3RhdGVtZW50L05vVW5uZWNlc3NhcnlFbXB0eUxpbmVBdENvZGVCbG9jay5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRlU3RhdGVtZW50L05vVW5uZWNlc3NhcnlFbXB0eUxpbmVBdENvZGVCbG9jay5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkxMmIxZTEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGVTdGF0ZW1lbnQvTm9Vbm5lY2Vzc2FyeUVtcHR5TGluZUF0Q29kZUJsb2NrLmphdmEKQEAgLTAsMCArMSw3IEBACitwdWJsaWMgY2xhc3MgRm9vIHsKKyAgICB2b2lkIHRlc3QoaW50IGkpIHsKKyAgICAgICAgaWYgKGkgPiAwPGNhcmV0PikgeworCisgICAgICAgIH0KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRlU3RhdGVtZW50L05vVW5uZWNlc3NhcnlFbXB0eUxpbmVBdENvZGVCbG9ja19hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRlU3RhdGVtZW50L05vVW5uZWNlc3NhcnlFbXB0eUxpbmVBdENvZGVCbG9ja19hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY5NjY5NWUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGVTdGF0ZW1lbnQvTm9Vbm5lY2Vzc2FyeUVtcHR5TGluZUF0Q29kZUJsb2NrX2FmdGVyLmphdmEKQEAgLTAsMCArMSw3IEBACitwdWJsaWMgY2xhc3MgRm9vIHsKKyAgICB2b2lkIHRlc3QoaW50IGkpIHsKKyAgICAgICAgaWYgKGkgPiAwKSB7CisgICAgICAgICAgICA8Y2FyZXQ+CisgICAgICAgIH0KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRlU3RhdGVtZW50L05vbkFic3RyYWN0TWV0aG9kV2l0aFNlbWljb2xvbi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRlU3RhdGVtZW50L05vbkFic3RyYWN0TWV0aG9kV2l0aFNlbWljb2xvbi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlkMGU5MzgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGVTdGF0ZW1lbnQvTm9uQWJzdHJhY3RNZXRob2RXaXRoU2VtaWNvbG9uLmphdmEKQEAgLTAsMCArMSw0IEBACisKK3B1YmxpYyBjbGFzcyBGb28geworICAgdm9pZCA8Y2FyZXQ+Zm9vKCk7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRlU3RhdGVtZW50L05vbkFic3RyYWN0TWV0aG9kV2l0aFNlbWljb2xvbl9hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRlU3RhdGVtZW50L05vbkFic3RyYWN0TWV0aG9kV2l0aFNlbWljb2xvbl9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI5ODQ1Y2QKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGVTdGF0ZW1lbnQvTm9uQWJzdHJhY3RNZXRob2RXaXRoU2VtaWNvbG9uX2FmdGVyLmphdmEKQEAgLTAsMCArMSw2IEBACisKK3B1YmxpYyBjbGFzcyBGb28geworICAgIHZvaWQgZm9vKCkgeworICAgICAgICA8Y2FyZXQ+CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0ZVN0YXRlbWVudC9QYXJlbnRoZXNpemVkLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGVTdGF0ZW1lbnQvUGFyZW50aGVzaXplZC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY4YzNjNzcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGVTdGF0ZW1lbnQvUGFyZW50aGVzaXplZC5qYXZhCkBAIC0wLDAgKzEsNiBAQAorCitjbGFzcyBGb28geworICAgIHsKKyAgICAgICAgdHgyID0gKGxvbmcpICh2Y3ggKyB2dzxjYXJldD4KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRlU3RhdGVtZW50L1BhcmVudGhlc2l6ZWRfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0ZVN0YXRlbWVudC9QYXJlbnRoZXNpemVkX2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2VjYzA5MGEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGVTdGF0ZW1lbnQvUGFyZW50aGVzaXplZF9hZnRlci5qYXZhCkBAIC0wLDAgKzEsNiBAQAorCitjbGFzcyBGb28geworICAgIHsKKyAgICAgICAgdHgyID0gKGxvbmcpICh2Y3ggKyB2dyk7PGNhcmV0PgorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGVTdGF0ZW1lbnQvUmV0dXJuLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGVTdGF0ZW1lbnQvUmV0dXJuLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODlkMWI1MgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0ZVN0YXRlbWVudC9SZXR1cm4uamF2YQpAQCAtMCwwICsxLDcgQEAKK3B1YmxpYyBjbGFzcyBUZXN0IHsKKyAgICBwdWJsaWMgdm9pZCBmb28oKSB7CisgICAgICAgIGlmKHgpIHsKKyAgICAgICAgICAgIHJldHVybjs8Y2FyZXQ+CisgICAgICAgIH0KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRlU3RhdGVtZW50L1JldHVybkZyb21Ob25Wb2lkLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGVTdGF0ZW1lbnQvUmV0dXJuRnJvbU5vblZvaWQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kN2UyNTY3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRlU3RhdGVtZW50L1JldHVybkZyb21Ob25Wb2lkLmphdmEKQEAgLTAsMCArMSw2IEBACisKK3B1YmxpYyBjbGFzcyBGb28geworICAgIHB1YmxpYyBpbnQgZm9vKCkgeworICAgICAgcmV0dXJuPGNhcmV0PgorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGVTdGF0ZW1lbnQvUmV0dXJuRnJvbU5vblZvaWRfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0ZVN0YXRlbWVudC9SZXR1cm5Gcm9tTm9uVm9pZF9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNiZGI5YjgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGVTdGF0ZW1lbnQvUmV0dXJuRnJvbU5vblZvaWRfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDYgQEAKKworcHVibGljIGNsYXNzIEZvbyB7CisgICAgcHVibGljIGludCBmb28oKSB7CisgICAgICAgIHJldHVybjxjYXJldD47CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0ZVN0YXRlbWVudC9SZXR1cm5Gcm9tVm9pZC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRlU3RhdGVtZW50L1JldHVybkZyb21Wb2lkLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTdhMWRmYgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0ZVN0YXRlbWVudC9SZXR1cm5Gcm9tVm9pZC5qYXZhCkBAIC0wLDAgKzEsNyBAQAorCitjbGFzcyBUZXN0IHsKKyAgICB2b2lkIHRlc3QoT2JqZWN0IG8pIHsKKyAgICAgICAgaWYgKG8gPT0gbnVsbCkgcmV0dXJuPGNhcmV0PgorICAgICAgICBTdHJpbmcgZm9vID0gImZvbyI7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0ZVN0YXRlbWVudC9SZXR1cm5Gcm9tVm9pZF9hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRlU3RhdGVtZW50L1JldHVybkZyb21Wb2lkX2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjU3NjA1OQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0ZVN0YXRlbWVudC9SZXR1cm5Gcm9tVm9pZF9hZnRlci5qYXZhCkBAIC0wLDAgKzEsNyBAQAorCitjbGFzcyBUZXN0IHsKKyAgICB2b2lkIHRlc3QoT2JqZWN0IG8pIHsKKyAgICAgICAgaWYgKG8gPT0gbnVsbCkgcmV0dXJuOzxjYXJldD4KKyAgICAgICAgU3RyaW5nIGZvbyA9ICJmb28iOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGVTdGF0ZW1lbnQvUmV0dXJuX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGVTdGF0ZW1lbnQvUmV0dXJuX2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWMwN2ViOQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0ZVN0YXRlbWVudC9SZXR1cm5fYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDggQEAKK3B1YmxpYyBjbGFzcyBUZXN0IHsKKyAgICBwdWJsaWMgdm9pZCBmb28oKSB7CisgICAgICAgIGlmKHgpIHsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICA8Y2FyZXQ+CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0ZVN0YXRlbWVudC9TQ1IxMTE0Ny5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRlU3RhdGVtZW50L1NDUjExMTQ3LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzUwMjBmYwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0ZVN0YXRlbWVudC9TQ1IxMTE0Ny5qYXZhCkBAIC0wLDAgKzEsOSBAQAorCitwdWJsaWMgY2xhc3MgRm9vIHsKKyAgICB7CisgICAgICAgIGludCB4ID0gMDsKKyAgICAgICAgaWYgKHggPT0gMCkgeworICAgICAgICAgICAgPGNhcmV0PgorICAgICAgICB9CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0ZVN0YXRlbWVudC9TQ1IxMTE0N19hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRlU3RhdGVtZW50L1NDUjExMTQ3X2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWM0MjY5OAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0ZVN0YXRlbWVudC9TQ1IxMTE0N19hZnRlci5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKKworcHVibGljIGNsYXNzIEZvbyB7CisgICAgeworICAgICAgICBpbnQgeCA9IDA7CisgICAgICAgIGlmICh4ID09IDApIHsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgPGNhcmV0PgorICAgICAgICB9CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0ZVN0YXRlbWVudC9TQ1IyMjkwNC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRlU3RhdGVtZW50L1NDUjIyOTA0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGM0YzQ3ZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0ZVN0YXRlbWVudC9TQ1IyMjkwNC5qYXZhCkBAIC0wLDAgKzEsNCBAQAoraW50ZXJmYWNlIFRlc3QgeworICAgIHZvaWQgZm9vKFN0cmluZyBzKTxjYXJldD4KKyAgICBPYmplY3QgYmFyKCk7Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGVTdGF0ZW1lbnQvU0NSMjI5MDRfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0ZVN0YXRlbWVudC9TQ1IyMjkwNF9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmExMDY5NWMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGVTdGF0ZW1lbnQvU0NSMjI5MDRfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDQgQEAKK2ludGVyZmFjZSBUZXN0IHsKKyAgICB2b2lkIGZvbyhTdHJpbmcgcyk7PGNhcmV0PgorICAgIE9iamVjdCBiYXIoKTsKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0ZVN0YXRlbWVudC9TQ1IzMDIyNy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRlU3RhdGVtZW50L1NDUjMwMjI3LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTg0OTA1NAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0ZVN0YXRlbWVudC9TQ1IzMDIyNy5qYXZhCkBAIC0wLDAgKzEsMTYgQEAKK3B1YmxpYyBhYnN0cmFjdCBjbGFzcyBBIHsKKyAgICBhYnN0cmFjdCB2b2lkIGYoYm9vbGVhbiBiKTsKKworICAgIEEgSU1QTCA9IG5ldyBBKCkgeworICAgICAgdm9pZCBmKGJvb2xlYW4gYikgeworICAgICAgICBpZiAoYikKKyAgICAgICAgICBmKHRydWUpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICBmKGZhbHNlKTsKKyAgICAgICAgICBmKGZhbHNlKTsKKyAgICAgICAgfSAgICAgICAgCisgICAgICAgIGZvcihpbnQgaSA9IDA7IGkgPCA1OyBpKyspCisgICAgICAgICAgZih0cnVlKTsKKyAgICAgIH0KKyAgICB9OyA8Y2FyZXQ+Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGVTdGF0ZW1lbnQvU0NSMzAyMjdfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0ZVN0YXRlbWVudC9TQ1IzMDIyN19hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFmOWY5YmIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGVTdGF0ZW1lbnQvU0NSMzAyMjdfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDE2IEBACitwdWJsaWMgYWJzdHJhY3QgY2xhc3MgQSB7CisgICAgYWJzdHJhY3Qgdm9pZCBmKGJvb2xlYW4gYik7CisKKyAgICBBIElNUEwgPSBuZXcgQSgpIHsKKyAgICAgICAgdm9pZCBmKGJvb2xlYW4gYikgeworICAgICAgICAgICAgaWYgKGIpCisgICAgICAgICAgICAgICAgZih0cnVlKTsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIGYoZmFsc2UpOworICAgICAgICAgICAgICAgIGYoZmFsc2UpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCA1OyBpKyspCisgICAgICAgICAgICAgICAgZih0cnVlKTsKKyAgICAgICAgfQorICAgIH07PGNhcmV0PgorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRlU3RhdGVtZW50L1NDUjM2MTEwLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGVTdGF0ZW1lbnQvU0NSMzYxMTAuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNzBhN2VkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRlU3RhdGVtZW50L1NDUjM2MTEwLmphdmEKQEAgLTAsMCArMSw4IEBACitwdWJsaWMgZW51bSBUcmFuc2FjdGlvbkF0dHJpYnV0ZVR5cGUgeworTUFOREFUT1JZLAorUkVRVUlSRUQsCitSRVFVSVJFU05FVywKK1NVUFBPUlRTLAorTk9UU1VQUE9SVEVELAorTkVWRTxjYXJldD5SCit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGVTdGF0ZW1lbnQvU0NSMzYxMTBfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0ZVN0YXRlbWVudC9TQ1IzNjExMF9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRhZGIyOTEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGVTdGF0ZW1lbnQvU0NSMzYxMTBfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDggQEAKK3B1YmxpYyBlbnVtIFRyYW5zYWN0aW9uQXR0cmlidXRlVHlwZSB7CitNQU5EQVRPUlksCitSRVFVSVJFRCwKK1JFUVVJUkVTTkVXLAorU1VQUE9SVFMsCitOT1RTVVBQT1JURUQsCisgICAgTkVWRVIsPGNhcmV0PgorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRlU3RhdGVtZW50L1NDUjM3MzMxLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGVTdGF0ZW1lbnQvU0NSMzczMzEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMWZhZDIxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRlU3RhdGVtZW50L1NDUjM3MzMxLmphdmEKQEAgLTAsMCArMSw2IEBACisKK3B1YmxpYyBjbGFzcyBKdW5rIHsKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CisgICAgICAgIFN0cmluZyBzID0gKDxjYXJldD4KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRlU3RhdGVtZW50L1NDUjM3MzMxX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGVTdGF0ZW1lbnQvU0NSMzczMzFfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMzgxYWRiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRlU3RhdGVtZW50L1NDUjM3MzMxX2FmdGVyLmphdmEKQEAgLTAsMCArMSw2IEBACisKK3B1YmxpYyBjbGFzcyBKdW5rIHsKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CisgICAgICAgIFN0cmluZyBzID0gKDxjYXJldD4pOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGVTdGF0ZW1lbnQvU3BhY2VBZnRlclNlbWljb2xvbi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRlU3RhdGVtZW50L1NwYWNlQWZ0ZXJTZW1pY29sb24uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YTBiM2UwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRlU3RhdGVtZW50L1NwYWNlQWZ0ZXJTZW1pY29sb24uamF2YQpAQCAtMCwwICsxLDYgQEAKK3B1YmxpYyBjbGFzcyBGb28geworICAgIHZvaWQgdGVzdChpbnQgaSkgeworICAgICAgICBmb3IgKGludCBqID0gMTxjYXJldD4pIHsKKyAgICAgICAgfQorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGVTdGF0ZW1lbnQvU3BhY2VBZnRlclNlbWljb2xvbl9hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRlU3RhdGVtZW50L1NwYWNlQWZ0ZXJTZW1pY29sb25fYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NjNjMjUyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRlU3RhdGVtZW50L1NwYWNlQWZ0ZXJTZW1pY29sb25fYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDYgQEAKK3B1YmxpYyBjbGFzcyBGb28geworICAgIHZvaWQgdGVzdChpbnQgaSkgeworICAgICAgICBmb3IgKGludCBqID0gMTsgPGNhcmV0PikgeworICAgICAgICB9CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0ZVN0YXRlbWVudC9TdGFydE5ld0Jsb2NrLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGVTdGF0ZW1lbnQvU3RhcnROZXdCbG9jay5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc3NDY5ZmIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGVTdGF0ZW1lbnQvU3RhcnROZXdCbG9jay5qYXZhCkBAIC0wLDAgKzEsNiBAQAorCitwdWJsaWMgY2xhc3MgRm9vIHsKKyAgICB7CisgICAgICAgIGlmICh4KSB7PGNhcmV0PmZvbygpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0ZVN0YXRlbWVudC9TdGFydE5ld0Jsb2NrX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGVTdGF0ZW1lbnQvU3RhcnROZXdCbG9ja19hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEwMzMzMTcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGVTdGF0ZW1lbnQvU3RhcnROZXdCbG9ja19hZnRlci5qYXZhCkBAIC0wLDAgKzEsOCBAQAorCitwdWJsaWMgY2xhc3MgRm9vIHsKKyAgICB7CisgICAgICAgIGlmICh4KSB7CisgICAgICAgICAgICA8Y2FyZXQ+Zm9vKCk7CisgICAgICAgIH0KKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGVTdGF0ZW1lbnQvU3RyaW5nTGl0ZXJhbC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRlU3RhdGVtZW50L1N0cmluZ0xpdGVyYWwuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ODQ4ZDNlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRlU3RhdGVtZW50L1N0cmluZ0xpdGVyYWwuamF2YQpAQCAtMCwwICsxLDYgQEAKKworY2xhc3MgZm9vIHsKKyAgICB7CisgICAgICAgIFN0cmluZyBzID0gImE8Y2FyZXQ+CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0ZVN0YXRlbWVudC9TdHJpbmdMaXRlcmFsX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGVTdGF0ZW1lbnQvU3RyaW5nTGl0ZXJhbF9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI3NmJhZjUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGVTdGF0ZW1lbnQvU3RyaW5nTGl0ZXJhbF9hZnRlci5qYXZhCkBAIC0wLDAgKzEsNiBAQAorCitjbGFzcyBmb28geworICAgIHsKKyAgICAgICAgU3RyaW5nIHMgPSAiYSI7PGNhcmV0PgorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGVTdGF0ZW1lbnQvU3dpdGNoS2V5d29yZC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRlU3RhdGVtZW50L1N3aXRjaEtleXdvcmQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYmZiZWYzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRlU3RhdGVtZW50L1N3aXRjaEtleXdvcmQuamF2YQpAQCAtMCwwICsxLDYgQEAKKworY2xhc3MgZm9vIHsKKyAgICB7CisgICAgICAgIHN3aXRjaDxjYXJldD4KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRlU3RhdGVtZW50L1N3aXRjaEtleXdvcmRXaXRoQ29uZGl0aW9uLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGVTdGF0ZW1lbnQvU3dpdGNoS2V5d29yZFdpdGhDb25kaXRpb24uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNzg3MzYwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRlU3RhdGVtZW50L1N3aXRjaEtleXdvcmRXaXRoQ29uZGl0aW9uLmphdmEKQEAgLTAsMCArMSw2IEBACisKK2NsYXNzIGZvbyB7CisgICAgeworICAgICAgICBzd2l0Y2ggKGk8Y2FyZXQ+CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0ZVN0YXRlbWVudC9Td2l0Y2hLZXl3b3JkV2l0aENvbmRpdGlvbl9hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRlU3RhdGVtZW50L1N3aXRjaEtleXdvcmRXaXRoQ29uZGl0aW9uX2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTA4YWI5ZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0ZVN0YXRlbWVudC9Td2l0Y2hLZXl3b3JkV2l0aENvbmRpdGlvbl9hZnRlci5qYXZhCkBAIC0wLDAgKzEsOCBAQAorCitjbGFzcyBmb28geworICAgIHsKKyAgICAgICAgc3dpdGNoIChpKSB7CisgICAgICAgICAgICA8Y2FyZXQ+CisgICAgICAgIH0KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRlU3RhdGVtZW50L1N3aXRjaEtleXdvcmRfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0ZVN0YXRlbWVudC9Td2l0Y2hLZXl3b3JkX2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDFkMWNkMgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0ZVN0YXRlbWVudC9Td2l0Y2hLZXl3b3JkX2FmdGVyLmphdmEKQEAgLTAsMCArMSw3IEBACisKK2NsYXNzIGZvbyB7CisgICAgeworICAgICAgICBzd2l0Y2ggKDxjYXJldD4pIHsKKyAgICAgICAgfQorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGVTdGF0ZW1lbnQvU3luY2hyb25pemVkLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGVTdGF0ZW1lbnQvU3luY2hyb25pemVkLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDNmZDJlZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0ZVN0YXRlbWVudC9TeW5jaHJvbml6ZWQuamF2YQpAQCAtMCwwICsxLDUgQEAKK3B1YmxpYyBjbGFzcyBUZXN0IHsKKyAgICBwdWJsaWMgdm9pZCBmb28oKSB7CisgICAgICAgc3luY2hyb25pemVkKHRoaXM8Y2FyZXQ+KQorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGVTdGF0ZW1lbnQvU3luY2hyb25pemVkX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGVTdGF0ZW1lbnQvU3luY2hyb25pemVkX2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmNhZDlmZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0ZVN0YXRlbWVudC9TeW5jaHJvbml6ZWRfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDcgQEAKK3B1YmxpYyBjbGFzcyBUZXN0IHsKKyAgICBwdWJsaWMgdm9pZCBmb28oKSB7CisgICAgICAgIHN5bmNocm9uaXplZCAodGhpcykgeworICAgICAgICAgICAgPGNhcmV0PgorICAgICAgICB9CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0ZVN0YXRlbWVudC9UaHJvdy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRlU3RhdGVtZW50L1Rocm93LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWMwYWRjZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0ZVN0YXRlbWVudC9UaHJvdy5qYXZhCkBAIC0wLDAgKzEsNyBAQAorcHVibGljIGNsYXNzIFRlc3QgeworICAgIHsKKyAgICAgICAgaWYoeCkgeworICAgICAgICAgICAgdGhyb3cgPGNhcmV0Pm5ldyBFeGNlcHRpb24oKTsKKyAgICAgICAgfQorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGVTdGF0ZW1lbnQvVGhyb3dfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0ZVN0YXRlbWVudC9UaHJvd19hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ3MmZjNzgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGVTdGF0ZW1lbnQvVGhyb3dfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDggQEAKK3B1YmxpYyBjbGFzcyBUZXN0IHsKKyAgICB7CisgICAgICAgIGlmKHgpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oKTsKKyAgICAgICAgfQorICAgICAgICA8Y2FyZXQ+CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0ZVN0YXRlbWVudC9UcnkxLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGVTdGF0ZW1lbnQvVHJ5MS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE5ODdjZjQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGVTdGF0ZW1lbnQvVHJ5MS5qYXZhCkBAIC0wLDAgKzEsOCBAQAorcHVibGljIGNsYXNzIEZvbyB7CisgICAgeworICAgICAgICB0cnkgezxjYXJldD4KKyAgICAgICAgfQorICAgICAgICBjYXRjaChFeGNlcHRpb24gZSkgeworICAgICAgICB9CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0ZVN0YXRlbWVudC9UcnkxX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGVTdGF0ZW1lbnQvVHJ5MV9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUzODQ0NTIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGVTdGF0ZW1lbnQvVHJ5MV9hZnRlci5qYXZhCkBAIC0wLDAgKzEsOSBAQAorcHVibGljIGNsYXNzIEZvbyB7CisgICAgeworICAgICAgICB0cnkgeworICAgICAgICAgICAgPGNhcmV0PgorICAgICAgICB9CisgICAgICAgIGNhdGNoKEV4Y2VwdGlvbiBlKSB7CisgICAgICAgIH0KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRlU3RhdGVtZW50L1R3b1N0YXRlbWVudHNJbkxpbmUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0ZVN0YXRlbWVudC9Ud29TdGF0ZW1lbnRzSW5MaW5lLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDc0OGJhMgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0ZVN0YXRlbWVudC9Ud29TdGF0ZW1lbnRzSW5MaW5lLmphdmEKQEAgLTAsMCArMSw3IEBACisKK2NsYXNzIEZvbyB7CisgICAgeworICAgICAgICB4ID0gMzsKKyAgICAgICAgeCA8Y2FyZXQ+PSAyIHkgPSA0OworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGVTdGF0ZW1lbnQvVHdvU3RhdGVtZW50c0luTGluZV9hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRlU3RhdGVtZW50L1R3b1N0YXRlbWVudHNJbkxpbmVfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42Njk1NmYxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRlU3RhdGVtZW50L1R3b1N0YXRlbWVudHNJbkxpbmVfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDcgQEAKKworY2xhc3MgRm9vIHsKKyAgICB7CisgICAgICAgIHggPSAzOworICAgICAgICB4ID0gMjs8Y2FyZXQ+IHkgPSA0OworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGVTdGF0ZW1lbnQvVmFsaWRDb2RlQmxvY2suamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0ZVN0YXRlbWVudC9WYWxpZENvZGVCbG9jay5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdkMTQ3ZWYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGVTdGF0ZW1lbnQvVmFsaWRDb2RlQmxvY2suamF2YQpAQCAtMCwwICsxLDIyIEBACisvKgorICogQ29weXJpZ2h0IDIwMDAtMjAxMSBKZXRCcmFpbnMgcy5yLm8uCisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcHVibGljIGNsYXNzIEZvbyB7CisgICAgdm9pZCB0ZXN0KGludCBpKSB7CisgICAgICAgIGlmIChpID4gMSkgeworICAgICAgICAgICAgaSA8Y2FyZXQ+PSAxOworICAgICAgICB9CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0ZVN0YXRlbWVudC9WYWxpZENvZGVCbG9ja1dpdGhFbXB0eUxpbmVBZnRlckl0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGVTdGF0ZW1lbnQvVmFsaWRDb2RlQmxvY2tXaXRoRW1wdHlMaW5lQWZ0ZXJJdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE2OTc2ODAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGVTdGF0ZW1lbnQvVmFsaWRDb2RlQmxvY2tXaXRoRW1wdHlMaW5lQWZ0ZXJJdC5qYXZhCkBAIC0wLDAgKzEsMjMgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwMC0yMDExIEpldEJyYWlucyBzLnIuby4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwdWJsaWMgY2xhc3MgRm9vIHsKKyAgICB2b2lkIHRlc3QoaW50IGkpIHsKKyAgICAgICAgd2hpbGUgKGktLSA+IDEpIHsKKyAgICAgICAgICAgIGkgPGNhcmV0Pj0gMTsKKworICAgICAgICB9CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0ZVN0YXRlbWVudC9WYWxpZENvZGVCbG9ja1dpdGhFbXB0eUxpbmVBZnRlckl0X2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGVTdGF0ZW1lbnQvVmFsaWRDb2RlQmxvY2tXaXRoRW1wdHlMaW5lQWZ0ZXJJdF9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJkZDBiOTgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGVTdGF0ZW1lbnQvVmFsaWRDb2RlQmxvY2tXaXRoRW1wdHlMaW5lQWZ0ZXJJdF9hZnRlci5qYXZhCkBAIC0wLDAgKzEsMjMgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwMC0yMDExIEpldEJyYWlucyBzLnIuby4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwdWJsaWMgY2xhc3MgRm9vIHsKKyAgICB2b2lkIHRlc3QoaW50IGkpIHsKKyAgICAgICAgd2hpbGUgKGktLSA+IDEpIHsKKyAgICAgICAgICAgIGkgPSAxOworICAgICAgICAgICAgPGNhcmV0PgorICAgICAgICB9CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0ZVN0YXRlbWVudC9WYWxpZENvZGVCbG9ja19hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRlU3RhdGVtZW50L1ZhbGlkQ29kZUJsb2NrX2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTFiMzViNTkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGVTdGF0ZW1lbnQvVmFsaWRDb2RlQmxvY2tfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDIzIEBACisvKgorICogQ29weXJpZ2h0IDIwMDAtMjAxMSBKZXRCcmFpbnMgcy5yLm8uCisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcHVibGljIGNsYXNzIEZvbyB7CisgICAgdm9pZCB0ZXN0KGludCBpKSB7CisgICAgICAgIGlmIChpID4gMSkgeworICAgICAgICAgICAgaSA9IDE7CisgICAgICAgICAgICA8Y2FyZXQ+CisgICAgICAgIH0KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vY2xhc3NOYW1lL0luUGxhaW5UZXh0RmlsZS50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9jbGFzc05hbWUvSW5QbGFpblRleHRGaWxlLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNjRlMDE1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vY2xhc3NOYW1lL0luUGxhaW5UZXh0RmlsZS50eHQKQEAgLTAsMCArMSBAQAorYWJjID0gU3RyaW5CdWk8Y2FyZXQ+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vY2xhc3NOYW1lL0luUGxhaW5UZXh0RmlsZV9hZnRlci50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9jbGFzc05hbWUvSW5QbGFpblRleHRGaWxlX2FmdGVyLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45YTJmNjgxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vY2xhc3NOYW1lL0luUGxhaW5UZXh0RmlsZV9hZnRlci50eHQKQEAgLTAsMCArMSBAQAorYWJjID0gamF2YS5sYW5nLlN0cmluZ0J1aWxkZXI8Y2FyZXQ+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vY2xhc3NOYW1lL2FmdGVyTmV3VGhyb3dhYmxlL2FmdGVyMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vY2xhc3NOYW1lL2FmdGVyTmV3VGhyb3dhYmxlL2FmdGVyMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBiZGVjZTEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9jbGFzc05hbWUvYWZ0ZXJOZXdUaHJvd2FibGUvYWZ0ZXIxLmphdmEKQEAgLTAsMCArMSw1IEBACitjbGFzcyBBeworIHZvaWQgZm9vKCkgeworICB0aHJvdyBuZXcgT3VyRXhjZXB0aW9uKCk8Y2FyZXQ+CisgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2NsYXNzTmFtZS9hZnRlck5ld1Rocm93YWJsZS9hZnRlcjIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2NsYXNzTmFtZS9hZnRlck5ld1Rocm93YWJsZS9hZnRlcjIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MjY4NWE5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vY2xhc3NOYW1lL2FmdGVyTmV3VGhyb3dhYmxlL2FmdGVyMi5qYXZhCkBAIC0wLDAgKzEsNSBAQAorY2xhc3MgQXsKKyB2b2lkIGZvbygpIHsKKyAgdGhyb3cgbmV3IE91ck5vdEV4Y2VwdGlvbi5Jbm5lckV4Y2VwdGlvbigpPGNhcmV0PgorIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9jbGFzc05hbWUvYWZ0ZXJOZXdUaHJvd2FibGUvYmVmb3JlMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vY2xhc3NOYW1lL2FmdGVyTmV3VGhyb3dhYmxlL2JlZm9yZTEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMWE1ODc5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vY2xhc3NOYW1lL2FmdGVyTmV3VGhyb3dhYmxlL2JlZm9yZTEuamF2YQpAQCAtMCwwICsxLDUgQEAKK2NsYXNzIEF7Cisgdm9pZCBmb28oKSB7CisgIHRocm93IG5ldyBPdXI8Y2FyZXQ+CisgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2NsYXNzTmFtZS9hZnRlck5ld1Rocm93YWJsZS9iZWZvcmUyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9jbGFzc05hbWUvYWZ0ZXJOZXdUaHJvd2FibGUvYmVmb3JlMi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIyZDM2MmIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9jbGFzc05hbWUvYWZ0ZXJOZXdUaHJvd2FibGUvYmVmb3JlMi5qYXZhCkBAIC0wLDAgKzEsNSBAQAorY2xhc3MgQXsKKyB2b2lkIGZvbygpIHsKKyAgdGhyb3cgbmV3IElubmVyPGNhcmV0PgorIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9jbGFzc05hbWUvaW1wb3J0QWZ0ZXJOZXcvYWZ0ZXIxLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9jbGFzc05hbWUvaW1wb3J0QWZ0ZXJOZXcvYWZ0ZXIxLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODI5NzgyNQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2NsYXNzTmFtZS9pbXBvcnRBZnRlck5ldy9hZnRlcjEuamF2YQpAQCAtMCwwICsxLDcgQEAKK2ltcG9ydCBwYWNrLkFBQ2xhc3M7CisKK3B1YmxpYyBjbGFzcyBUZXN0MSB7CisgICAgcHVibGljIHZvaWQgZm9vKCkgeworICAgICAgICBuZXcgQUFDbGFzcygpPGNhcmV0PgorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9jbGFzc05hbWUvaW1wb3J0QWZ0ZXJOZXcvYWZ0ZXIyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9jbGFzc05hbWUvaW1wb3J0QWZ0ZXJOZXcvYWZ0ZXIyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWM3Y2I2ZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2NsYXNzTmFtZS9pbXBvcnRBZnRlck5ldy9hZnRlcjIuamF2YQpAQCAtMCwwICsxLDcgQEAKK2ltcG9ydCBwYWNrLldpdGhJbm5lckFDbGFzczsKKworcHVibGljIGNsYXNzIFRlc3QxIHsKKyAgICBwdWJsaWMgdm9pZCBmb28oKSB7CisgICAgICAgIG5ldyBXaXRoSW5uZXJBQ2xhc3MoKTxjYXJldD4KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vY2xhc3NOYW1lL2ltcG9ydEFmdGVyTmV3L2JlZm9yZTEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2NsYXNzTmFtZS9pbXBvcnRBZnRlck5ldy9iZWZvcmUxLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTY0MzI2OQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2NsYXNzTmFtZS9pbXBvcnRBZnRlck5ldy9iZWZvcmUxLmphdmEKQEAgLTAsMCArMSw1IEBACitwdWJsaWMgY2xhc3MgVGVzdDEgeworICAgIHB1YmxpYyB2b2lkIGZvbygpIHsKKyAgICAgICAgbmV3IEFBQ2w8Y2FyZXQ+CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2NsYXNzTmFtZS9pbXBvcnRBZnRlck5ldy9iZWZvcmUyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9jbGFzc05hbWUvaW1wb3J0QWZ0ZXJOZXcvYmVmb3JlMi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBiYjk0ZmIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9jbGFzc05hbWUvaW1wb3J0QWZ0ZXJOZXcvYmVmb3JlMi5qYXZhCkBAIC0wLDAgKzEsNSBAQAorcHVibGljIGNsYXNzIFRlc3QxIHsKKyAgICBwdWJsaWMgdm9pZCBmb28oKSB7CisgICAgICAgIG5ldyBXaXRoSW5uZXJBQ2w8Y2FyZXQ+CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2NsYXNzTmFtZS9qYXZhL0JyYWNlc0FmdGVyTmV3LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9jbGFzc05hbWUvamF2YS9CcmFjZXNBZnRlck5ldy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc0Y2RkNWEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9jbGFzc05hbWUvamF2YS9CcmFjZXNBZnRlck5ldy5qYXZhCkBAIC0wLDAgKzEsNSBAQAorY2xhc3MgRm9vRm9vRm9vRm9vRm9vIHsKKyAgeworICAgIE9iamVjdFtdIGEgPSBuZXcgRkZGRkY8Y2FyZXQ+W107CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9jbGFzc05hbWUvamF2YS9CcmFjZXNBZnRlck5ld19hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vY2xhc3NOYW1lL2phdmEvQnJhY2VzQWZ0ZXJOZXdfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jOTFmMmJhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vY2xhc3NOYW1lL2phdmEvQnJhY2VzQWZ0ZXJOZXdfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDUgQEAKK2NsYXNzIEZvb0Zvb0Zvb0Zvb0ZvbyB7CisgIHsKKyAgICBPYmplY3RbXSBhID0gbmV3IEZvb0Zvb0Zvb0Zvb0ZvbzxjYXJldD5bXTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2NsYXNzTmFtZS9qYXZhL0NhbWVsSHVtcFByZWZpeC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vY2xhc3NOYW1lL2phdmEvQ2FtZWxIdW1wUHJlZml4LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzdkZDRjYgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2NsYXNzTmFtZS9qYXZhL0NhbWVsSHVtcFByZWZpeC5qYXZhCkBAIC0wLDAgKzEsOCBAQAorY2xhc3MgTGlmZVVuaXZlcnNlRXZlcnl0aGluZ0VudGl0eSB7fQorY2xhc3MgTGlmZVVuaXZlcnNlRXZlcnl0aGluZ01hbmFnZXIge30KKworY2xhc3MgRm9vRm9vRm9vRm9vRm9vIHsKKyAgeworICAgIExVRXY8Y2FyZXQ+CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9jbGFzc05hbWUvamF2YS9Eb3VibGVTdHJpbmdCdWZmZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2NsYXNzTmFtZS9qYXZhL0RvdWJsZVN0cmluZ0J1ZmZlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQyNTJmZjQyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vY2xhc3NOYW1lL2phdmEvRG91YmxlU3RyaW5nQnVmZmVyLmphdmEKQEAgLTAsMCArMSw1IEBACitjbGFzcyBGb29Gb29Gb29Gb29Gb28geworICB7CisgICAgU3RyaW5nQnVmPGNhcmV0PgorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vY2xhc3NOYW1lL2phdmEvRG91YmxlU3RyaW5nQnVmZmVyX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9jbGFzc05hbWUvamF2YS9Eb3VibGVTdHJpbmdCdWZmZXJfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MDE3NDBiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vY2xhc3NOYW1lL2phdmEvRG91YmxlU3RyaW5nQnVmZmVyX2FmdGVyLmphdmEKQEAgLTAsMCArMSw1IEBACitjbGFzcyBGb29Gb29Gb29Gb29Gb28geworICB7CisgICAgU3RyaW5nQnVmZmVyPGNhcmV0PgorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vY2xhc3NOYW1lL2phdmEvRXhjZXNzUGFyZW5zQWZ0ZXJOZXcuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2NsYXNzTmFtZS9qYXZhL0V4Y2Vzc1BhcmVuc0FmdGVyTmV3LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTc1ZjAzMwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2NsYXNzTmFtZS9qYXZhL0V4Y2Vzc1BhcmVuc0FmdGVyTmV3LmphdmEKQEAgLTAsMCArMSw1IEBACitjbGFzcyBGb29Gb29Gb29Gb29Gb28geworICB7CisgICAgbmV3IEZGRkZGPGNhcmV0PigpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vY2xhc3NOYW1lL2phdmEvRXhjZXNzUGFyZW5zQWZ0ZXJOZXdfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2NsYXNzTmFtZS9qYXZhL0V4Y2Vzc1BhcmVuc0FmdGVyTmV3X2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzk1ZjE2MQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2NsYXNzTmFtZS9qYXZhL0V4Y2Vzc1BhcmVuc0FmdGVyTmV3X2FmdGVyLmphdmEKQEAgLTAsMCArMSw1IEBACitjbGFzcyBGb29Gb29Gb29Gb29Gb28geworICB7CisgICAgbmV3IEZvb0Zvb0Zvb0Zvb0ZvbygpPGNhcmV0PjsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2NsYXNzTmFtZS9qYXZhL1JlcGxhY2VSZWZlcmVuY2VFeHByZXNzaW9uV2l0aFR5cGVFbGVtZW50LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9jbGFzc05hbWUvamF2YS9SZXBsYWNlUmVmZXJlbmNlRXhwcmVzc2lvbldpdGhUeXBlRWxlbWVudC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVmYzEyYzIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9jbGFzc05hbWUvamF2YS9SZXBsYWNlUmVmZXJlbmNlRXhwcmVzc2lvbldpdGhUeXBlRWxlbWVudC5qYXZhCkBAIC0wLDAgKzEsNyBAQAorY2xhc3MgRm9vRm9vRm9vRm9vRm9vIHsKKyAgICB7CisgICAgICAgIGludCBhID0gMDsKKyAgICAgICAgQUJDRDxjYXJldD4KKyAgICAgICAgZm9vKG5ldyBTdHJpbmdbXXsiYSJ9LCAxKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vY2xhc3NOYW1lL2phdmEvUmVwbGFjZVJlZmVyZW5jZUV4cHJlc3Npb25XaXRoVHlwZUVsZW1lbnRfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2NsYXNzTmFtZS9qYXZhL1JlcGxhY2VSZWZlcmVuY2VFeHByZXNzaW9uV2l0aFR5cGVFbGVtZW50X2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDJiMzIyNAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2NsYXNzTmFtZS9qYXZhL1JlcGxhY2VSZWZlcmVuY2VFeHByZXNzaW9uV2l0aFR5cGVFbGVtZW50X2FmdGVyLmphdmEKQEAgLTAsMCArMSw5IEBACitpbXBvcnQgZm9vLmJhci5BQkNERUY7CisKK2NsYXNzIEZvb0Zvb0Zvb0Zvb0ZvbyB7CisgICAgeworICAgICAgICBpbnQgYSA9IDA7CisgICAgICAgIEFCQ0RFRjxjYXJldD4KKyAgICAgICAgZm9vKG5ldyBTdHJpbmdbXXsiYSJ9LCAxKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vY2xhc3NOYW1lL2phdmEvUmV1c2VQYXJlbnNBZnRlck5ldy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vY2xhc3NOYW1lL2phdmEvUmV1c2VQYXJlbnNBZnRlck5ldy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ1MTg4NjMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9jbGFzc05hbWUvamF2YS9SZXVzZVBhcmVuc0FmdGVyTmV3LmphdmEKQEAgLTAsMCArMSw3IEBACitjbGFzcyBGb29Gb29Gb29Gb29Gb28geworICB7CisgICAgbmV3IEZGRkZGPGNhcmV0Pih4KTsKKyAgfQorCisgIEZvb0Zvb0Zvb0Zvb0ZvbyhpbnQgeCkge30KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9jbGFzc05hbWUvamF2YS9SZXVzZVBhcmVuc0FmdGVyTmV3X2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9jbGFzc05hbWUvamF2YS9SZXVzZVBhcmVuc0FmdGVyTmV3X2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWUwOWMwYQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2NsYXNzTmFtZS9qYXZhL1JldXNlUGFyZW5zQWZ0ZXJOZXdfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDcgQEAKK2NsYXNzIEZvb0Zvb0Zvb0Zvb0ZvbyB7CisgIHsKKyAgICBuZXcgRm9vRm9vRm9vRm9vRm9vKDxjYXJldD54KTsKKyAgfQorCisgIEZvb0Zvb0Zvb0Zvb0ZvbyhpbnQgeCkge30KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9jbGFzc05hbWUvbmFtZUNvbXBsZXRpb24vamF2YS9Bbm5vdGF0aW9uLXJlc3VsdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vY2xhc3NOYW1lL25hbWVDb21wbGV0aW9uL2phdmEvQW5ub3RhdGlvbi1yZXN1bHQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZWQ1ODRlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vY2xhc3NOYW1lL25hbWVDb21wbGV0aW9uL2phdmEvQW5ub3RhdGlvbi1yZXN1bHQuamF2YQpAQCAtMCwwICsxLDggQEAKK0BpbnRlcmZhY2UgQ29sdW1uIHsKKyAgU3RyaW5nIG5hbWUoKTsKK30KKworQENvbHVtbig8Y2FyZXQ+KQorQGludGVyZmFjZSBBbm5vdGF0aW9uIHsKKworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2NsYXNzTmFtZS9uYW1lQ29tcGxldGlvbi9qYXZhL0Fubm90YXRpb24tc291cmNlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9jbGFzc05hbWUvbmFtZUNvbXBsZXRpb24vamF2YS9Bbm5vdGF0aW9uLXNvdXJjZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk5MzE2NDkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9jbGFzc05hbWUvbmFtZUNvbXBsZXRpb24vamF2YS9Bbm5vdGF0aW9uLXNvdXJjZS5qYXZhCkBAIC0wLDAgKzEsOCBAQAorQGludGVyZmFjZSBDb2x1bW4geworICBTdHJpbmcgbmFtZSgpOworfQorCitAQ29sdTxjYXJldD4KK0BpbnRlcmZhY2UgQW5ub3RhdGlvbiB7CisKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9jbGFzc05hbWUvbmFtZUNvbXBsZXRpb24vamF2YS9FeHRyYVNwYWNlLXJlc3VsdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vY2xhc3NOYW1lL25hbWVDb21wbGV0aW9uL2phdmEvRXh0cmFTcGFjZS1yZXN1bHQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45Zjg1MzNhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vY2xhc3NOYW1lL25hbWVDb21wbGV0aW9uL2phdmEvRXh0cmFTcGFjZS1yZXN1bHQuamF2YQpAQCAtMCwwICsxLDggQEAKK2ltcG9ydCBqYXZhLmlvLkZpbGVJbnB1dFN0cmVhbTsKKworY2xhc3MgTWFpbiB7CisKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CisgICAgICAgIGVxdWFscyhGaWxlSW5wdXRTdHJlYW08Y2FyZXQ+YWFhKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9jbGFzc05hbWUvbmFtZUNvbXBsZXRpb24vamF2YS9FeHRyYVNwYWNlLXNvdXJjZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vY2xhc3NOYW1lL25hbWVDb21wbGV0aW9uL2phdmEvRXh0cmFTcGFjZS1zb3VyY2UuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NjBiMzE4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vY2xhc3NOYW1lL25hbWVDb21wbGV0aW9uL2phdmEvRXh0cmFTcGFjZS1zb3VyY2UuamF2YQpAQCAtMCwwICsxLDYgQEAKK2NsYXNzIE1haW4geworCisgICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgeworICAgICAgICBlcXVhbHMoRmlsZUlucHV0U3RyZWE8Y2FyZXQ+YWFhKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9jbGFzc05hbWUvbmFtZUNvbXBsZXRpb24vamF2YS9JbkNvbW1lbnRXaXRoUGFja2FnZVByZWZpeC1yZXN1bHQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2NsYXNzTmFtZS9uYW1lQ29tcGxldGlvbi9qYXZhL0luQ29tbWVudFdpdGhQYWNrYWdlUHJlZml4LXJlc3VsdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ2MzgyNDQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9jbGFzc05hbWUvbmFtZUNvbXBsZXRpb24vamF2YS9JbkNvbW1lbnRXaXRoUGFja2FnZVByZWZpeC1yZXN1bHQuamF2YQpAQCAtMCwwICsxLDYgQEAKK2NsYXNzIE1haW4geworCisgICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgeworICAgICAgICAvLyBqYXZhLmlvLkZpbGVJbnB1dFN0cmVhbTxjYXJldD4KKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9jbGFzc05hbWUvbmFtZUNvbXBsZXRpb24vamF2YS9JbkNvbW1lbnRXaXRoUGFja2FnZVByZWZpeC1zb3VyY2UuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2NsYXNzTmFtZS9uYW1lQ29tcGxldGlvbi9qYXZhL0luQ29tbWVudFdpdGhQYWNrYWdlUHJlZml4LXNvdXJjZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJlYzlmNjQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9jbGFzc05hbWUvbmFtZUNvbXBsZXRpb24vamF2YS9JbkNvbW1lbnRXaXRoUGFja2FnZVByZWZpeC1zb3VyY2UuamF2YQpAQCAtMCwwICsxLDYgQEAKK2NsYXNzIE1haW4geworCisgICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgeworICAgICAgICAvLyBqYXZhLkZpbGVJbnB1dFN0cmVhPGNhcmV0PgorICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2NsYXNzTmFtZS9uYW1lQ29tcGxldGlvbi9qYXZhL0luU3RhdGljSW1wb3J0LXJlc3VsdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vY2xhc3NOYW1lL25hbWVDb21wbGV0aW9uL2phdmEvSW5TdGF0aWNJbXBvcnQtcmVzdWx0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2YzNDZjOQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2NsYXNzTmFtZS9uYW1lQ29tcGxldGlvbi9qYXZhL0luU3RhdGljSW1wb3J0LXJlc3VsdC5qYXZhCkBAIC0wLDAgKzEsOCBAQAoraW1wb3J0IHN0YXRpYyBqYXZhLmlvLkZpbGVJbnB1dFN0cmVhbTxjYXJldD4KKworY2xhc3MgTWFpbiB7CisKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CisgICAgICAgIGVxdWFscyhGaWxlSW5wdXRTdHJlYTxjYXJldD5hYWEpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2NsYXNzTmFtZS9uYW1lQ29tcGxldGlvbi9qYXZhL0luU3RhdGljSW1wb3J0LXNvdXJjZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vY2xhc3NOYW1lL25hbWVDb21wbGV0aW9uL2phdmEvSW5TdGF0aWNJbXBvcnQtc291cmNlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDk1MzU0YQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2NsYXNzTmFtZS9uYW1lQ29tcGxldGlvbi9qYXZhL0luU3RhdGljSW1wb3J0LXNvdXJjZS5qYXZhCkBAIC0wLDAgKzEsOCBAQAoraW1wb3J0IHN0YXRpYyBGaWxlSW5wU3RyZTxjYXJldD4KKworY2xhc3MgTWFpbiB7CisKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CisgICAgICAgIGVxdWFscyhGaWxlSW5wdXRTdHJlYTxjYXJldD5hYWEpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2NsYXNzTmFtZS9uYW1lQ29tcGxldGlvbi9qYXZhL2ltcGxlbWVudHMyLXJlc3VsdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vY2xhc3NOYW1lL25hbWVDb21wbGV0aW9uL2phdmEvaW1wbGVtZW50czItcmVzdWx0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWE2MjhlNAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2NsYXNzTmFtZS9uYW1lQ29tcGxldGlvbi9qYXZhL2ltcGxlbWVudHMyLXJlc3VsdC5qYXZhCkBAIC0wLDAgKzEsMyBAQAorY2xhc3MgWlpaWlpae30KKworY2xhc3MgQSBpbXBsZW1lbnRzIEZvbywgWlpaWlpaPGNhcmV0Pnt9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vY2xhc3NOYW1lL25hbWVDb21wbGV0aW9uL2phdmEvaW1wbGVtZW50czItc291cmNlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9jbGFzc05hbWUvbmFtZUNvbXBsZXRpb24vamF2YS9pbXBsZW1lbnRzMi1zb3VyY2UuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZTI2ZGEzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vY2xhc3NOYW1lL25hbWVDb21wbGV0aW9uL2phdmEvaW1wbGVtZW50czItc291cmNlLmphdmEKQEAgLTAsMCArMSwzIEBACitjbGFzcyBaWlpaWlp7fQorCitjbGFzcyBBIGltcGxlbWVudHMgRm9vLCBaWlo8Y2FyZXQ+e30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9jbGFzc05hbWUvbmFtZUNvbXBsZXRpb24vamF2YS9pbXBsZW1lbnRzMy1yZXN1bHQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2NsYXNzTmFtZS9uYW1lQ29tcGxldGlvbi9qYXZhL2ltcGxlbWVudHMzLXJlc3VsdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIxNDJhZWEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9jbGFzc05hbWUvbmFtZUNvbXBsZXRpb24vamF2YS9pbXBsZW1lbnRzMy1yZXN1bHQuamF2YQpAQCAtMCwwICsxLDMgQEAKK2NsYXNzIFpaWlpaWnt9CisKK2NsYXNzIEEgaW1wbGVtZW50cyBGb288WlpaWlpaPGNhcmV0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2NsYXNzTmFtZS9uYW1lQ29tcGxldGlvbi9qYXZhL2ltcGxlbWVudHMzLXNvdXJjZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vY2xhc3NOYW1lL25hbWVDb21wbGV0aW9uL2phdmEvaW1wbGVtZW50czMtc291cmNlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWFiYmYyMAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2NsYXNzTmFtZS9uYW1lQ29tcGxldGlvbi9qYXZhL2ltcGxlbWVudHMzLXNvdXJjZS5qYXZhCkBAIC0wLDAgKzEsMyBAQAorY2xhc3MgWlpaWlpae30KKworY2xhc3MgQSBpbXBsZW1lbnRzIEZvbzxaWlo8Y2FyZXQ+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vY2xhc3NOYW1lL25hbWVDb21wbGV0aW9uL2phdmEvbWV0aG9kQ2FsbC1yZXN1bHQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2NsYXNzTmFtZS9uYW1lQ29tcGxldGlvbi9qYXZhL21ldGhvZENhbGwtcmVzdWx0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjhiYzI5OAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2NsYXNzTmFtZS9uYW1lQ29tcGxldGlvbi9qYXZhL21ldGhvZENhbGwtcmVzdWx0LmphdmEKQEAgLTAsMCArMSw1IEBACitjbGFzcyBNeUNsYXNzMSB7CisgIHsKKyAgICBNeUNsYXNzMTxjYXJldD5mb28oKQorICB9ICAKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9jbGFzc05hbWUvbmFtZUNvbXBsZXRpb24vamF2YS9tZXRob2RDYWxsLXNvdXJjZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vY2xhc3NOYW1lL25hbWVDb21wbGV0aW9uL2phdmEvbWV0aG9kQ2FsbC1zb3VyY2UuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YmFmZWY4NwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2NsYXNzTmFtZS9uYW1lQ29tcGxldGlvbi9qYXZhL21ldGhvZENhbGwtc291cmNlLmphdmEKQEAgLTAsMCArMSw1IEBACitjbGFzcyBNeUNsYXNzMSB7CisgIHsKKyAgICBNQ2xhPGNhcmV0PmZvbygpCisgIH0gIAorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2NsYXNzTmFtZS9uYW1lQ29tcGxldGlvbi9qYXZhL21ldGhvZENhbGwxLXJlc3VsdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vY2xhc3NOYW1lL25hbWVDb21wbGV0aW9uL2phdmEvbWV0aG9kQ2FsbDEtcmVzdWx0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmMxN2QzNAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2NsYXNzTmFtZS9uYW1lQ29tcGxldGlvbi9qYXZhL21ldGhvZENhbGwxLXJlc3VsdC5qYXZhCkBAIC0wLDAgKzEsNSBAQAorY2xhc3MgTXlDbGFzczEgeworICB7CisgICAgTXlDbGFzczE8Y2FyZXQ+Zi5vbygpCisgIH0gIAorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2NsYXNzTmFtZS9uYW1lQ29tcGxldGlvbi9qYXZhL21ldGhvZENhbGwxLXNvdXJjZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vY2xhc3NOYW1lL25hbWVDb21wbGV0aW9uL2phdmEvbWV0aG9kQ2FsbDEtc291cmNlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGUxMmNlMgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2NsYXNzTmFtZS9uYW1lQ29tcGxldGlvbi9qYXZhL21ldGhvZENhbGwxLXNvdXJjZS5qYXZhCkBAIC0wLDAgKzEsNSBAQAorY2xhc3MgTXlDbGFzczEgeworICB7CisgICAgTUNsYTxjYXJldD5mLm9vKCkKKyAgfSAgCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vY2xhc3NOYW1lL25hbWVDb21wbGV0aW9uL2phdmEvdGVzdDEtcmVzdWx0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9jbGFzc05hbWUvbmFtZUNvbXBsZXRpb24vamF2YS90ZXN0MS1yZXN1bHQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zOTAwNzQ2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vY2xhc3NOYW1lL25hbWVDb21wbGV0aW9uL2phdmEvdGVzdDEtcmVzdWx0LmphdmEKQEAgLTAsMCArMSwzIEBACitjbGFzcyBNeUNsYXNzMSB7CisgICAgTXlDbGFzczE8Y2FyZXQ+Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vY2xhc3NOYW1lL25hbWVDb21wbGV0aW9uL2phdmEvdGVzdDEtc291cmNlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9jbGFzc05hbWUvbmFtZUNvbXBsZXRpb24vamF2YS90ZXN0MS1zb3VyY2UuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZTc1OTNiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vY2xhc3NOYW1lL25hbWVDb21wbGV0aW9uL2phdmEvdGVzdDEtc291cmNlLmphdmEKQEAgLTAsMCArMSwzIEBACitjbGFzcyBNeUNsYXNzMSB7CisgICAgTXlDbGE8Y2FyZXQ+Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vY2xhc3NOYW1lL25hbWVDb21wbGV0aW9uL2phdmEvdGVzdDEwLXJlc3VsdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vY2xhc3NOYW1lL25hbWVDb21wbGV0aW9uL2phdmEvdGVzdDEwLXJlc3VsdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVlNTUxZWYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9jbGFzc05hbWUvbmFtZUNvbXBsZXRpb24vamF2YS90ZXN0MTAtcmVzdWx0LmphdmEKQEAgLTAsMCArMSw1IEBACitwYWNrYWdlIGFhYTsKK0BpbnRlcmZhY2UgTXlPYmplY3RUeXBlIHt9CitjbGFzcyBBIHsKKyAgYWFhLk15T2JqZWN0VHlwZTxjYXJldD4KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9jbGFzc05hbWUvbmFtZUNvbXBsZXRpb24vamF2YS90ZXN0MTAtc291cmNlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9jbGFzc05hbWUvbmFtZUNvbXBsZXRpb24vamF2YS90ZXN0MTAtc291cmNlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzllZDYwMgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2NsYXNzTmFtZS9uYW1lQ29tcGxldGlvbi9qYXZhL3Rlc3QxMC1zb3VyY2UuamF2YQpAQCAtMCwwICsxLDUgQEAKK3BhY2thZ2UgYWFhOworQGludGVyZmFjZSBNeU9iamVjdFR5cGUge30KK2NsYXNzIEEgeworICBhYWEuTXlPYmo8Y2FyZXQ+Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vY2xhc3NOYW1lL25hbWVDb21wbGV0aW9uL2phdmEvdGVzdDExLXJlc3VsdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vY2xhc3NOYW1lL25hbWVDb21wbGV0aW9uL2phdmEvdGVzdDExLXJlc3VsdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk5MTFhZTMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9jbGFzc05hbWUvbmFtZUNvbXBsZXRpb24vamF2YS90ZXN0MTEtcmVzdWx0LmphdmEKQEAgLTAsMCArMSw1IEBACitwYWNrYWdlIGFhYTsKK0BpbnRlcmZhY2UgTXlPYmplY3RUeXBlIHt9CitjbGFzcyBBIHsKKyAgTXlPYmplY3RUeXBlPGNhcmV0PgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2NsYXNzTmFtZS9uYW1lQ29tcGxldGlvbi9qYXZhL3Rlc3QxMS1zb3VyY2UuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2NsYXNzTmFtZS9uYW1lQ29tcGxldGlvbi9qYXZhL3Rlc3QxMS1zb3VyY2UuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNTdlMDYzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vY2xhc3NOYW1lL25hbWVDb21wbGV0aW9uL2phdmEvdGVzdDExLXNvdXJjZS5qYXZhCkBAIC0wLDAgKzEsNSBAQAorcGFja2FnZSBhYWE7CitAaW50ZXJmYWNlIE15T2JqZWN0VHlwZSB7fQorY2xhc3MgQSB7CisgIE15T2JqPGNhcmV0PgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2NsYXNzTmFtZS9uYW1lQ29tcGxldGlvbi9qYXZhL3Rlc3QxMi1yZXN1bHQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2NsYXNzTmFtZS9uYW1lQ29tcGxldGlvbi9qYXZhL3Rlc3QxMi1yZXN1bHQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43OTlkOGUyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vY2xhc3NOYW1lL25hbWVDb21wbGV0aW9uL2phdmEvdGVzdDEyLXJlc3VsdC5qYXZhCkBAIC0wLDAgKzEsNyBAQAorcGFja2FnZSBhYWE7CitAaW50ZXJmYWNlIE15T2JqZWN0VHlwZSB7fQorY2xhc3MgQSB7CisgIHZvaWQgYWFhKCkgeworICAgIGdldENsYXNzKCkuZ2V0QW5ub3RhdGlvbnMoTXlPYmplY3RUeXBlPGNhcmV0PikKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2NsYXNzTmFtZS9uYW1lQ29tcGxldGlvbi9qYXZhL3Rlc3QxMi1zb3VyY2UuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2NsYXNzTmFtZS9uYW1lQ29tcGxldGlvbi9qYXZhL3Rlc3QxMi1zb3VyY2UuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNGM5MGY4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vY2xhc3NOYW1lL25hbWVDb21wbGV0aW9uL2phdmEvdGVzdDEyLXNvdXJjZS5qYXZhCkBAIC0wLDAgKzEsNyBAQAorcGFja2FnZSBhYWE7CitAaW50ZXJmYWNlIE15T2JqZWN0VHlwZSB7fQorY2xhc3MgQSB7CisgIHZvaWQgYWFhKCkgeworICAgIGdldENsYXNzKCkuZ2V0QW5ub3RhdGlvbnMoTXlPYmplY3Q8Y2FyZXQ+KQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vY2xhc3NOYW1lL25hbWVDb21wbGV0aW9uL2phdmEvdGVzdDEzLXJlc3VsdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vY2xhc3NOYW1lL25hbWVDb21wbGV0aW9uL2phdmEvdGVzdDEzLXJlc3VsdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkxMmNlMjQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9jbGFzc05hbWUvbmFtZUNvbXBsZXRpb24vamF2YS90ZXN0MTMtcmVzdWx0LmphdmEKQEAgLTAsMCArMSw5IEBACitwYWNrYWdlIGFhYTsKK2ltcG9ydCBqYXZhLmxhbmcuYW5ub3RhdGlvbi4qOworCitAUmV0ZW50aW9uKFJldGVudGlvblBvbGljeS5SVU5USU1FKQorQGludGVyZmFjZSBNeU9iamVjdFR5cGUge30KKworY2xhc3MgQSB7CisgIE15T2JqZWN0VHlwZTxjYXJldD4KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9jbGFzc05hbWUvbmFtZUNvbXBsZXRpb24vamF2YS90ZXN0MTMtc291cmNlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9jbGFzc05hbWUvbmFtZUNvbXBsZXRpb24vamF2YS90ZXN0MTMtc291cmNlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTZhYzIwMgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2NsYXNzTmFtZS9uYW1lQ29tcGxldGlvbi9qYXZhL3Rlc3QxMy1zb3VyY2UuamF2YQpAQCAtMCwwICsxLDkgQEAKK3BhY2thZ2UgYWFhOworaW1wb3J0IGphdmEubGFuZy5hbm5vdGF0aW9uLio7CisKK0BSZXRlbnRpb24oUmV0ZW50aW9uUG9saWN5LlJVTlRJTUUpCitAaW50ZXJmYWNlIE15T2JqZWN0VHlwZSB7fQorCitjbGFzcyBBIHsKKyAgTXk8Y2FyZXQ+Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vY2xhc3NOYW1lL25hbWVDb21wbGV0aW9uL2phdmEvdGVzdDItcmVzdWx0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9jbGFzc05hbWUvbmFtZUNvbXBsZXRpb24vamF2YS90ZXN0Mi1yZXN1bHQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45OTE3ZmViCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vY2xhc3NOYW1lL25hbWVDb21wbGV0aW9uL2phdmEvdGVzdDItcmVzdWx0LmphdmEKQEAgLTAsMCArMSw1IEBACitjbGFzcyBUZXN0MSB7CisgICAgcHVibGljIHZvaWQgZm9vKCl7CisgICAgICAgIFRlc3QxPGNhcmV0PgorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9jbGFzc05hbWUvbmFtZUNvbXBsZXRpb24vamF2YS90ZXN0Mi1zb3VyY2UuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2NsYXNzTmFtZS9uYW1lQ29tcGxldGlvbi9qYXZhL3Rlc3QyLXNvdXJjZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFmNDliZTAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9jbGFzc05hbWUvbmFtZUNvbXBsZXRpb24vamF2YS90ZXN0Mi1zb3VyY2UuamF2YQpAQCAtMCwwICsxLDUgQEAKK2NsYXNzIFRlc3QxIHsKKyAgICBwdWJsaWMgdm9pZCBmb28oKXsKKyAgICAgICAgVGVzPGNhcmV0PgorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9jbGFzc05hbWUvbmFtZUNvbXBsZXRpb24vamF2YS90ZXN0My1yZXN1bHQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2NsYXNzTmFtZS9uYW1lQ29tcGxldGlvbi9qYXZhL3Rlc3QzLXJlc3VsdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQzYTZlNTIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9jbGFzc05hbWUvbmFtZUNvbXBsZXRpb24vamF2YS90ZXN0My1yZXN1bHQuamF2YQpAQCAtMCwwICsxLDMgQEAKK2NsYXNzIFpaWlpaWnt9CisKK2NsYXNzIEEgaW1wbGVtZW50cyBaWlpaWlo8Y2FyZXQ+e30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9jbGFzc05hbWUvbmFtZUNvbXBsZXRpb24vamF2YS90ZXN0My1zb3VyY2UuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2NsYXNzTmFtZS9uYW1lQ29tcGxldGlvbi9qYXZhL3Rlc3QzLXNvdXJjZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU4NmQyYjQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9jbGFzc05hbWUvbmFtZUNvbXBsZXRpb24vamF2YS90ZXN0My1zb3VyY2UuamF2YQpAQCAtMCwwICsxLDMgQEAKK2NsYXNzIFpaWlpaWnt9CisKK2NsYXNzIEEgaW1wbGVtZW50cyBaWlo8Y2FyZXQ+e30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9jbGFzc05hbWUvbmFtZUNvbXBsZXRpb24vamF2YS90ZXN0NC1yZXN1bHQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2NsYXNzTmFtZS9uYW1lQ29tcGxldGlvbi9qYXZhL3Rlc3Q0LXJlc3VsdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAzMzQ5YWMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9jbGFzc05hbWUvbmFtZUNvbXBsZXRpb24vamF2YS90ZXN0NC1yZXN1bHQuamF2YQpAQCAtMCwwICsxLDMgQEAKK2ludGVyZmFjZSBaWlpaWlp7fQorCitjbGFzcyBBIGltcGxlbWVudHMgWlpaWlpaPGNhcmV0Pnt9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vY2xhc3NOYW1lL25hbWVDb21wbGV0aW9uL2phdmEvdGVzdDQtc291cmNlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9jbGFzc05hbWUvbmFtZUNvbXBsZXRpb24vamF2YS90ZXN0NC1zb3VyY2UuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMGY5ZDY5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vY2xhc3NOYW1lL25hbWVDb21wbGV0aW9uL2phdmEvdGVzdDQtc291cmNlLmphdmEKQEAgLTAsMCArMSwzIEBACitpbnRlcmZhY2UgWlpaWlpae30KKworY2xhc3MgQSBpbXBsZW1lbnRzIFpaWjxjYXJldD57fQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2NsYXNzTmFtZS9uYW1lQ29tcGxldGlvbi9qYXZhL3Rlc3Q3LXJlc3VsdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vY2xhc3NOYW1lL25hbWVDb21wbGV0aW9uL2phdmEvdGVzdDctcmVzdWx0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzMyN2NiNgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2NsYXNzTmFtZS9uYW1lQ29tcGxldGlvbi9qYXZhL3Rlc3Q3LXJlc3VsdC5qYXZhCkBAIC0wLDAgKzEsNSBAQAorY2xhc3MgTXlPYmplY3Qge30KK0BpbnRlcmZhY2UgTXlPYmplY3RUeXBlIHt9CisKK0BNeU9iamVjdFR5cGU8Y2FyZXQ+CitjbGFzcyBBIHt9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vY2xhc3NOYW1lL25hbWVDb21wbGV0aW9uL2phdmEvdGVzdDctc291cmNlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9jbGFzc05hbWUvbmFtZUNvbXBsZXRpb24vamF2YS90ZXN0Ny1zb3VyY2UuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZGEyOGI4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vY2xhc3NOYW1lL25hbWVDb21wbGV0aW9uL2phdmEvdGVzdDctc291cmNlLmphdmEKQEAgLTAsMCArMSw1IEBACitjbGFzcyBNeU9iamVjdCB7fQorQGludGVyZmFjZSBNeU9iamVjdFR5cGUge30KKworQE15T2JqPGNhcmV0PgorY2xhc3MgQSB7fQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2NsYXNzTmFtZS9uYW1lQ29tcGxldGlvbi9qYXZhL3Rlc3Q4LXJlc3VsdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vY2xhc3NOYW1lL25hbWVDb21wbGV0aW9uL2phdmEvdGVzdDgtcmVzdWx0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzJiMWJhYgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2NsYXNzTmFtZS9uYW1lQ29tcGxldGlvbi9qYXZhL3Rlc3Q4LXJlc3VsdC5qYXZhCkBAIC0wLDAgKzEsNSBAQAorQGludGVyZmFjZSBNeU9iamVjdFR5cGUge30KKworY2xhc3MgQSB7CisgIHZvaWQgYWFhKEBNeU9iamVjdFR5cGU8Y2FyZXQ+KTsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9jbGFzc05hbWUvbmFtZUNvbXBsZXRpb24vamF2YS90ZXN0OC1zb3VyY2UuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2NsYXNzTmFtZS9uYW1lQ29tcGxldGlvbi9qYXZhL3Rlc3Q4LXNvdXJjZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUyODAwYWYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9jbGFzc05hbWUvbmFtZUNvbXBsZXRpb24vamF2YS90ZXN0OC1zb3VyY2UuamF2YQpAQCAtMCwwICsxLDUgQEAKK0BpbnRlcmZhY2UgTXlPYmplY3RUeXBlIHt9CisKK2NsYXNzIEEgeworICB2b2lkIGFhYShATXlPYmo8Y2FyZXQ+KTsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9jbGFzc05hbWUvbmFtZUNvbXBsZXRpb24vamF2YS90ZXN0OS1yZXN1bHQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2NsYXNzTmFtZS9uYW1lQ29tcGxldGlvbi9qYXZhL3Rlc3Q5LXJlc3VsdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE0NDY2ZDEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9jbGFzc05hbWUvbmFtZUNvbXBsZXRpb24vamF2YS90ZXN0OS1yZXN1bHQuamF2YQpAQCAtMCwwICsxLDMgQEAKK2ltcG9ydCBNeU9iamVjdFR5cGU8Y2FyZXQ+CitAaW50ZXJmYWNlIE15T2JqZWN0VHlwZSB7fQorY2xhc3MgQSB7fQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2NsYXNzTmFtZS9uYW1lQ29tcGxldGlvbi9qYXZhL3Rlc3Q5LXNvdXJjZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vY2xhc3NOYW1lL25hbWVDb21wbGV0aW9uL2phdmEvdGVzdDktc291cmNlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWUyNmQ1MmMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9jbGFzc05hbWUvbmFtZUNvbXBsZXRpb24vamF2YS90ZXN0OS1zb3VyY2UuamF2YQpAQCAtMCwwICsxLDMgQEAKK2ltcG9ydCBNeU9iajxjYXJldD4KK0BpbnRlcmZhY2UgTXlPYmplY3RUeXBlIHt9CitjbGFzcyBBIHt9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vY2xhc3NOYW1lL25hbWVDb21wbGV0aW9uL2phdmEvdGVzdDlfMi1yZXN1bHQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2NsYXNzTmFtZS9uYW1lQ29tcGxldGlvbi9qYXZhL3Rlc3Q5XzItcmVzdWx0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzQyMGRjYgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2NsYXNzTmFtZS9uYW1lQ29tcGxldGlvbi9qYXZhL3Rlc3Q5XzItcmVzdWx0LmphdmEKQEAgLTAsMCArMSw1IEBACitpbXBvcnQgTXlPYmplY3RUeXBlPGNhcmV0PgorQGludGVyZmFjZSBNeU9iamVjdFR5cGUgeworICBpbnQgcGFyYW0oKTsKK30KK2NsYXNzIEEge30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9jbGFzc05hbWUvbmFtZUNvbXBsZXRpb24vamF2YS90ZXN0OV8yLXNvdXJjZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vY2xhc3NOYW1lL25hbWVDb21wbGV0aW9uL2phdmEvdGVzdDlfMi1zb3VyY2UuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMzk5ZThiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vY2xhc3NOYW1lL25hbWVDb21wbGV0aW9uL2phdmEvdGVzdDlfMi1zb3VyY2UuamF2YQpAQCAtMCwwICsxLDUgQEAKK2ltcG9ydCBNeU9iajxjYXJldD4KK0BpbnRlcmZhY2UgTXlPYmplY3RUeXBlIHsKKyAgaW50IHBhcmFtKCk7Cit9CitjbGFzcyBBIHt9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vY2xhc3NOYW1lL25hbWVDb21wbGV0aW9uL2phdmEvdGVzdDlfMy1yZXN1bHQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2NsYXNzTmFtZS9uYW1lQ29tcGxldGlvbi9qYXZhL3Rlc3Q5XzMtcmVzdWx0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjI4NDJiNwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2NsYXNzTmFtZS9uYW1lQ29tcGxldGlvbi9qYXZhL3Rlc3Q5XzMtcmVzdWx0LmphdmEKQEAgLTAsMCArMSw4IEBACitAaW50ZXJmYWNlIE15T2JqZWN0VHlwZSB7CisgIGludCBwYXJhbSgpOworfQorY2xhc3MgQSB7CisgIHZvaWQgZm9vKCkgeworICAgIE15T2JqZWN0VHlwZTxjYXJldD4KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2NsYXNzTmFtZS9uYW1lQ29tcGxldGlvbi9qYXZhL3Rlc3Q5XzMtc291cmNlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9jbGFzc05hbWUvbmFtZUNvbXBsZXRpb24vamF2YS90ZXN0OV8zLXNvdXJjZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU5ZDk1YjMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9jbGFzc05hbWUvbmFtZUNvbXBsZXRpb24vamF2YS90ZXN0OV8zLXNvdXJjZS5qYXZhCkBAIC0wLDAgKzEsOCBAQAorQGludGVyZmFjZSBNeU9iamVjdFR5cGUgeworICBpbnQgcGFyYW0oKTsKK30KK2NsYXNzIEEgeworICB2b2lkIGZvbygpIHsKKyAgICBNeU9iPGNhcmV0PgorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vY2xhc3NOYW1lL25hbWVDb21wbGV0aW9uL2phdmEvdmFyVHlwZS1yZXN1bHQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2NsYXNzTmFtZS9uYW1lQ29tcGxldGlvbi9qYXZhL3ZhclR5cGUtcmVzdWx0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmMxN2QzNAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2NsYXNzTmFtZS9uYW1lQ29tcGxldGlvbi9qYXZhL3ZhclR5cGUtcmVzdWx0LmphdmEKQEAgLTAsMCArMSw1IEBACitjbGFzcyBNeUNsYXNzMSB7CisgIHsKKyAgICBNeUNsYXNzMTxjYXJldD5mLm9vKCkKKyAgfSAgCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vY2xhc3NOYW1lL25hbWVDb21wbGV0aW9uL2phdmEvdmFyVHlwZS1zb3VyY2UuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2NsYXNzTmFtZS9uYW1lQ29tcGxldGlvbi9qYXZhL3ZhclR5cGUtc291cmNlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGUxMmNlMgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2NsYXNzTmFtZS9uYW1lQ29tcGxldGlvbi9qYXZhL3ZhclR5cGUtc291cmNlLmphdmEKQEAgLTAsMCArMSw1IEBACitjbGFzcyBNeUNsYXNzMSB7CisgIHsKKyAgICBNQ2xhPGNhcmV0PmYub28oKQorICB9ICAKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9jdXN0b21GaWxlVHlwZS8xLmNzIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vY3VzdG9tRmlsZVR5cGUvMS5jcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYjQ4MjNkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vY3VzdG9tRmlsZVR5cGUvMS5jcwpAQCAtMCwwICsxIEBACitjb250PGNhcmV0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2N1c3RvbUZpbGVUeXBlLzFfYWZ0ZXIuY3MgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9jdXN0b21GaWxlVHlwZS8xX2FmdGVyLmNzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM5NGM3OGQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9jdXN0b21GaWxlVHlwZS8xX2FmdGVyLmNzCkBAIC0wLDAgKzEgQEAKK2NvbnRpbnVlPGNhcmV0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2N1c3RvbUZpbGVUeXBlLzIuY3MgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9jdXN0b21GaWxlVHlwZS8yLmNzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcwYWJhNzQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9jdXN0b21GaWxlVHlwZS8yLmNzCkBAIC0wLDAgKzEsMyBAQAoraWYgKHRydWUpIHsKKyAgd2hpPGNhcmV0PgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2N1c3RvbUZpbGVUeXBlLzJfYWZ0ZXIuY3MgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9jdXN0b21GaWxlVHlwZS8yX2FmdGVyLmNzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg0MTYyMzAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9jdXN0b21GaWxlVHlwZS8yX2FmdGVyLmNzCkBAIC0wLDAgKzEsMyBAQAoraWYgKHRydWUpIHsKKyAgd2hpbGU8Y2FyZXQ+Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vY3VzdG9tRmlsZVR5cGUvRXJsYW5nLmVybCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2N1c3RvbUZpbGVUeXBlL0VybGFuZy5lcmwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDI3Y2UxNzQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9jdXN0b21GaWxlVHlwZS9FcmxhbmcuZXJsCkBAIC0wLDAgKzEgQEAKK2NhPGNhcmV0PgpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vY3VzdG9tRmlsZVR5cGUvV29yZENvbXBsZXRpb24uY3MgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9jdXN0b21GaWxlVHlwZS9Xb3JkQ29tcGxldGlvbi5jcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNjBkZjE3ZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2N1c3RvbUZpbGVUeXBlL1dvcmRDb21wbGV0aW9uLmNzCkBAIC0wLDAgKzEsMiBAQAord2hpd2hpd2hpCisgIHdoaTxjYXJldD4KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2RvdC9Eb3QxLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9kb3QvRG90MS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBlZWZiNjgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9kb3QvRG90MS5qYXZhCkBAIC0wLDAgKzEsMTEgQEAKK2NsYXNzIERvdDF7CisgIGNsYXNzIEF7CisgICAgaW50IGEgPSAwOworICAgIGludCBmb28oKXsKKyAgfQorICB9CisgIHN0YXRpYyB7CisJCisgICAgaW50IGEgPSBuZXcgQSgpLjxjYXJldD4KKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vZG90L0RvdDEwLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9kb3QvRG90MTAuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMDk1NzQxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vZG90L0RvdDEwLmphdmEKQEAgLTAsMCArMSwxOCBAQAorLyoqCisgKiBDcmVhdGVkIGJ5IEludGVsbGlKIElERUEuCisgKiBVc2VyOiBpaworICogRGF0ZTogMjMuMDEuMjAwMworICogVGltZTogMTc6MDY6NTcKKyAqIFRvIGNoYW5nZSB0aGlzIHRlbXBsYXRlIHVzZSBPcHRpb25zIHwgRmlsZSBUZW1wbGF0ZXMuCisgKi8KK3B1YmxpYyBjbGFzcyBEb3Q5IHsKKyAgICBwdWJsaWMgc3RhdGljIGNsYXNzIEF7CisgICAgICAgIHB1YmxpYyBBKCl7fQorICAgICAgICBwdWJsaWMgdm9pZCBmb28oKXt9CisgICAgfQorCisgICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgeworICAgICAgICBsb25nW10gYXJyID0gbmV3IGxvbmdbMF07CisgICAgICAgIGFyci48Y2FyZXQ+CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vZG90L0RvdDExLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9kb3QvRG90MTEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NzIyNTkyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vZG90L0RvdDExLmphdmEKQEAgLTAsMCArMSwxOCBAQAorLyoqCisgKiBDcmVhdGVkIGJ5IEludGVsbGlKIElERUEuCisgKiBVc2VyOiBpaworICogRGF0ZTogMjcuMDEuMjAwMworICogVGltZTogMTk6MzU6MzcKKyAqIFRvIGNoYW5nZSB0aGlzIHRlbXBsYXRlIHVzZSBPcHRpb25zIHwgRmlsZSBUZW1wbGF0ZXMuCisgKi8KK3B1YmxpYyBjbGFzcyBEb3QxMSBleHRlbmRzIEEgeworICAgIHZvaWQgZm9vMSgpe30KKworICAgIHsKKyAgICAgICAgdGhpcy48Y2FyZXQ+CisgICAgfQorfQorCitjbGFzcyBBeworICAgIHZvaWQgZm9vKCl7fQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2RvdC9Eb3QxMi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vZG90L0RvdDEyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTgzNGEzMwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2RvdC9Eb3QxMi5qYXZhCkBAIC0wLDAgKzEsMjAgQEAKKy8qKgorICogQ3JlYXRlZCBieSBJbnRlbGxpSiBJREVBLgorICogVXNlcjogaWsKKyAqIERhdGU6IDI3LjAxLjIwMDMKKyAqIFRpbWU6IDE5OjM3OjEyCisgKiBUbyBjaGFuZ2UgdGhpcyB0ZW1wbGF0ZSB1c2UgT3B0aW9ucyB8IEZpbGUgVGVtcGxhdGVzLgorICovCisKK3B1YmxpYyBjbGFzcyBEb3QxMiBleHRlbmRzIEEgeworICAgIHZvaWQgZm9vMSgpe30KKworICAgIHsKKworICAgICAgICBzdXBlci48Y2FyZXQ+CisgICAgfQorfQorCitjbGFzcyBBeworICAgIHZvaWQgZm9vKCl7fQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2RvdC9Eb3QyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9kb3QvRG90Mi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUyZWEzOWUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9kb3QvRG90Mi5qYXZhCkBAIC0wLDAgKzEsMTEgQEAKK2NsYXNzIERvdDJ7CisgIGNsYXNzIEF7CisgICAgc3RhdGljIGludCBhID0gMDsKKyAgICBzdGF0aWMgaW50IGZvbygpeworICB9CisgIH0KKyAgc3RhdGljIHsKKwkKKyAgICBpbnQgYSA9IEEuPGNhcmV0PgorICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9kb3QvRG90My5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vZG90L0RvdDMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wOGI2N2I2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vZG90L0RvdDMuamF2YQpAQCAtMCwwICsxLDE1IEBACitjbGFzcyBEb3QzeworICBjbGFzcyBBeworICAgIGludCBhID0gMDsKKyAgICBpbnQgZm9vKCl7CisgIH0KKyAgfQorICBzdGF0aWMgeworICAgIAorICAgIE9iamVjdCBhID0gbmV3IEEoKXsKKyAgICAgIHN0YXRpYyBpbnQgZm9vKCl7CisgICAgICAgIGludCBjID0gc3VwZXIuPGNhcmV0PgorICAgICAgfQorICAgIH07CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2RvdC9Eb3Q0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9kb3QvRG90NC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg2MGFiMWIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9kb3QvRG90NC5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKK2NsYXNzIERvdDR7CisgIGNsYXNzIEF7CisgICAgc3RhdGljIGludCBhID0gMDsKKyAgICBpbnQgZm9vKCl7CisgICAgfQorICB9CisgIHN0YXRpYyB7CisgICAgaW50IGEgPSBuZXcgQSgpLjxjYXJldD4KKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vZG90L0RvdDUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2RvdC9Eb3Q1LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODAwYjU1YwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2RvdC9Eb3Q1LmphdmEKQEAgLTAsMCArMSwxMiBAQAoraW1wb3J0IGphdmEuPGNhcmV0PgorCitjbGFzcyBEb3Q1eworICBjbGFzcyBBeworICAgIHN0YXRpYyBpbnQgYSA9IDA7CisgICAgaW50IGZvbygpeworICAgIH0KKyAgfQorICBzdGF0aWMgeworICAgIGludCBhID0gbmV3IEEoKS4KKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vZG90L0RvdDYuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2RvdC9Eb3Q2LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGRlMTQzMAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2RvdC9Eb3Q2LmphdmEKQEAgLTAsMCArMSw1IEBACitjbGFzcyBEb3Q2eworICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKXsKKyAgICBpbnQgYSA9IGFyZ3NbMF0uPGNhcmV0PgorICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9kb3QvRG90Ny5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vZG90L0RvdDcuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MTlmNDI0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vZG90L0RvdDcuamF2YQpAQCAtMCwwICsxLDUgQEAKK2NsYXNzIERvdDd7CisgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpeworICAgIGludCBhID0gYXJncy48Y2FyZXQ+CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2RvdC9Eb3Q4LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9kb3QvRG90OC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg1ZWYyZWUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9kb3QvRG90OC5qYXZhCkBAIC0wLDAgKzEsMTkgQEAKKy8qKgorICogQ3JlYXRlZCBieSBJbnRlbGxpSiBJREVBLgorICogVXNlcjogaWsKKyAqIERhdGU6IDIzLjAxLjIwMDMKKyAqIFRpbWU6IDE1OjA0OjQ1CisgKiBUbyBjaGFuZ2UgdGhpcyB0ZW1wbGF0ZSB1c2UgT3B0aW9ucyB8IEZpbGUgVGVtcGxhdGVzLgorICovCitwdWJsaWMgY2xhc3MgRG90OCB7CisKKyAgICB7CisgICAgICAgIG5ldyBBKCkuPGNhcmV0PgorICAgIH0KK30KK2NsYXNzIEF7CisgICAgcHVibGljIFN0cmluZyB0b1N0cmluZygpeworCisgICAgICAgIHJldHVybiAiIi47CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vZG90L0RvdDkuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2RvdC9Eb3Q5LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWNkZjExZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2RvdC9Eb3Q5LmphdmEKQEAgLTAsMCArMSwxNyBAQAorLyoqCisgKiBDcmVhdGVkIGJ5IEludGVsbGlKIElERUEuCisgKiBVc2VyOiBpaworICogRGF0ZTogMjMuMDEuMjAwMworICogVGltZTogMTc6MDY6NTcKKyAqIFRvIGNoYW5nZSB0aGlzIHRlbXBsYXRlIHVzZSBPcHRpb25zIHwgRmlsZSBUZW1wbGF0ZXMuCisgKi8KK3B1YmxpYyBjbGFzcyBEb3Q5IHsKKyAgICBwdWJsaWMgc3RhdGljIGNsYXNzIEF7CisgICAgICAgIHB1YmxpYyBBKCl7fQorICAgICAgICBwdWJsaWMgdm9pZCBmb28oKXt9CisgICAgfQorCisgICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgeworICAgICAgICBuZXcgQSgpLjxjYXJldD4KKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9kb3QvTXVsdGlDYXRjaC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vZG90L011bHRpQ2F0Y2guamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYjY5ODNhMwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2RvdC9NdWx0aUNhdGNoLmphdmEKQEAgLTAsMCArMSwzMyBAQAorLyoKKyAqIENvcHlyaWdodCAyMDAwLTIwMTEgSmV0QnJhaW5zIHMuci5vLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK2NsYXNzIEMgeworICBzdGF0aWMgY2xhc3MgRSBleHRlbmRzIEV4Y2VwdGlvbiB7IH0KKyAgaW50ZXJmYWNlIEkgeyB2b2lkIGkoKTsgfQorICBzdGF0aWMgY2xhc3MgRTEgZXh0ZW5kcyBFIGltcGxlbWVudHMgSSB7IHB1YmxpYyB2b2lkIGkoKSB7IH0gfQorICBzdGF0aWMgY2xhc3MgRTIgZXh0ZW5kcyBFIGltcGxlbWVudHMgSSB7IHB1YmxpYyB2b2lkIGkoKSB7IH0gfQorCisgIHZvaWQgbShib29sZWFuIGYpIHsKKyAgICB0cnkgeworICAgICAgaWYgKGYpCisgICAgICAgIHRocm93IG5ldyBFMSgpOworICAgICAgZWxzZQorICAgICAgICB0aHJvdyBuZXcgRTIoKTsKKyAgICB9CisgICAgY2F0Y2ggKEUxIHwgRTIgZSkgeworICAgICAgZS48Y2FyZXQ+CisgICAgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vamF2YWRvYy9DbGFzc1RhZ05hbWUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2phdmFkb2MvQ2xhc3NUYWdOYW1lLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWJjMmU3ZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2phdmFkb2MvQ2xhc3NUYWdOYW1lLmphdmEKQEAgLTAsMCArMSw1IEBACisvKioKKyAqIEA8Y2FyZXQ+CisgKi8KKyAKK2NsYXNzIEN7fQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2phdmFkb2MvRXhjZXB0aW9uMC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vamF2YWRvYy9FeGNlcHRpb24wLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmFjNDZiZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2phdmFkb2MvRXhjZXB0aW9uMC5qYXZhCkBAIC0wLDAgKzEsNiBAQAorY2xhc3MgVGVzdCB7CisgICAgLyoqCisgICAgICogIEA8Y2FyZXQ+CisgICAgICovCisgICAgIHB1YmxpYyB2b2lkIGZvbygpIHRocm93cyBFeGNlcHRpb24ge30KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9qYXZhZG9jL0V4Y2VwdGlvbjEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2phdmFkb2MvRXhjZXB0aW9uMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU4OGNkZmIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9qYXZhZG9jL0V4Y2VwdGlvbjEuamF2YQpAQCAtMCwwICsxLDYgQEAKK2NsYXNzIFRlc3QgeworICAgIC8qKgorICAgICAqICBAZXhjZXB0aW9uIDxjYXJldD4KKyAgICAgKi8KKyAgICAgcHVibGljIHZvaWQgZm9vKCkgdGhyb3dzIEV4Y2VwdGlvbiB7fQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2phdmFkb2MvRXhjZXB0aW9uMi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vamF2YWRvYy9FeGNlcHRpb24yLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmU5OTcxYgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2phdmFkb2MvRXhjZXB0aW9uMi5qYXZhCkBAIC0wLDAgKzEsNiBAQAorY2xhc3MgVGVzdCB7CisgICAgLyoqCisgICAgICogIEBleGNlcHRpb24gPGNhcmV0PgorICAgICAqLworICAgICBwdWJsaWMgdm9pZCBmb28oKSB0aHJvd3MgamF2YS5pby5JT0V4Y2VwdGlvbiwgSWxsZWdhbFN0YXRlRXhjZXB0aW9uIHt9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vamF2YWRvYy9GaWVsZFJlZmVyZW5jZUluSW5uZXJDbGFzc0phdmFkb2MuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2phdmFkb2MvRmllbGRSZWZlcmVuY2VJbklubmVyQ2xhc3NKYXZhZG9jLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDdlNDhjZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2phdmFkb2MvRmllbGRSZWZlcmVuY2VJbklubmVyQ2xhc3NKYXZhZG9jLmphdmEKQEAgLTAsMCArMSwxMCBAQAorcHVibGljIGNsYXNzIFRlc3RDbGFzcyB7CisKKyAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgTVlfQ09OU1RBTlQgPSAwOworCisgIC8qKgorICAgKiB7QGxpbmsgI01ZPGNhcmV0PgorICAgKi8KKyAgcHVibGljIGNsYXNzIElubmVyIHt9CisKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9qYXZhZG9jL0ZpZWxkUmVmZXJlbmNlSW5Jbm5lckNsYXNzSmF2YWRvY19hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vamF2YWRvYy9GaWVsZFJlZmVyZW5jZUluSW5uZXJDbGFzc0phdmFkb2NfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNTNkYzBlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vamF2YWRvYy9GaWVsZFJlZmVyZW5jZUluSW5uZXJDbGFzc0phdmFkb2NfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDEwIEBACitwdWJsaWMgY2xhc3MgVGVzdENsYXNzIHsKKworICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBNWV9DT05TVEFOVCA9IDA7CisKKyAgLyoqCisgICAqIHtAbGluayAjTVlfQ09OU1RBTlQ8Y2FyZXQ+CisgICAqLworICBwdWJsaWMgY2xhc3MgSW5uZXIge30KKworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2phdmFkb2MvRmllbGRUYWdOYW1lLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9qYXZhZG9jL0ZpZWxkVGFnTmFtZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZiNzY3NWEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9qYXZhZG9jL0ZpZWxkVGFnTmFtZS5qYXZhCkBAIC0wLDAgKzEsNyBAQAorY2xhc3MgQ3sKKyAgICAKKyAgICAvKioKKyAgICAgKiBAPGNhcmV0PgorICAgICAqLworICAgIHByaXZhdGUgaW50IG15RmllbGQ7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vamF2YWRvYy9GaW5pc2hXaXRoU2hhcnAuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2phdmFkb2MvRmluaXNoV2l0aFNoYXJwLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmQzYTAwOQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2phdmFkb2MvRmluaXNoV2l0aFNoYXJwLmphdmEKQEAgLTAsMCArMSwxMyBAQAorLyoqCisgKiBTb21lIHRleHQge0BsaW5rIEZ1YjxjYXJldD4KKyAqLworIAorY2xhc3MgQ3t9CisKKworY2xhc3MgRnViYXIgeworICB2b2lkIGZvbygpOworICB2b2lkIGJhcigpOworfQorCitjbGFzcyBGdWJhcjIge30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9qYXZhZG9jL0ZpbmlzaFdpdGhTaGFycF9hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vamF2YWRvYy9GaW5pc2hXaXRoU2hhcnBfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZmRmNDNlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vamF2YWRvYy9GaW5pc2hXaXRoU2hhcnBfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDEzIEBACisvKioKKyAqIFNvbWUgdGV4dCB7QGxpbmsgRnViYXIjPGNhcmV0PgorICovCisgCitjbGFzcyBDe30KKworCitjbGFzcyBGdWJhciB7CisgIHZvaWQgZm9vKCk7CisgIHZvaWQgYmFyKCk7Cit9CisKK2NsYXNzIEZ1YmFyMiB7fQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2phdmFkb2MvSURFQURFVjEwNjIwLWFmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9qYXZhZG9jL0lERUFERVYxMDYyMC1hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU3MDBlZjYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9qYXZhZG9jL0lERUFERVYxMDYyMC1hZnRlci5qYXZhCkBAIC0wLDAgKzEsNyBAQAorLyoqCisgKiBAc2VlICNmb28oT2JqZWN0KSA8Y2FyZXQ+CisgKi8KK2NsYXNzIFRlc3QxPFQ+IHsKKyAgICBwdWJsaWMgdm9pZCBmb28oVCBiYXIpIHsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vamF2YWRvYy9JREVBREVWMTA2MjAuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2phdmFkb2MvSURFQURFVjEwNjIwLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjg1ZmVlOAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2phdmFkb2MvSURFQURFVjEwNjIwLmphdmEKQEAgLTAsMCArMSw3IEBACisvKioKKyAqIEBzZWUgI2ZvPGNhcmV0PgorICovCitjbGFzcyBUZXN0MTxUPiB7CisgICAgcHVibGljIHZvaWQgZm9vKFQgYmFyKSB7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2phdmFkb2MvSW5saW5lUmVmZXJlbmNlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9qYXZhZG9jL0lubGluZVJlZmVyZW5jZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcwNWQwNjgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9qYXZhZG9jL0lubGluZVJlZmVyZW5jZS5qYXZhCkBAIC0wLDAgKzEsNCBAQAorLyoqCisgKiB7QGxpbmsgamF2YS48Y2FyZXQ+fQorICovCitjbGFzcyBBe30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2phdmFkb2MvSW5saW5lVGFnTmFtZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vamF2YWRvYy9JbmxpbmVUYWdOYW1lLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWE1ZDczNwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2phdmFkb2MvSW5saW5lVGFnTmFtZS5qYXZhCkBAIC0wLDAgKzEsNSBAQAorLyoqCisgKiBTb21lIHRleHQge0A8Y2FyZXQ+CisgKi8KKyAKK2NsYXNzIEN7fQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2phdmFkb2MvTWV0aG9kQmVmb3JlU2hhcnAuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2phdmFkb2MvTWV0aG9kQmVmb3JlU2hhcnAuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMGMxMjU5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vamF2YWRvYy9NZXRob2RCZWZvcmVTaGFycC5qYXZhCkBAIC0wLDAgKzEsNyBAQAorLyoqCisgKiBTb21lIHRleHQge0BsaW5rIEZ1YmFyI2ZvPGNhcmV0PiMKKyAqLworIAorY2xhc3MgRnViYXIgeworICB2b2lkIGZvbygpOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2phdmFkb2MvTWV0aG9kQmVmb3JlU2hhcnBfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2phdmFkb2MvTWV0aG9kQmVmb3JlU2hhcnBfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMTUxM2ExCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vamF2YWRvYy9NZXRob2RCZWZvcmVTaGFycF9hZnRlci5qYXZhCkBAIC0wLDAgKzEsNyBAQAorLyoqCisgKiBTb21lIHRleHQge0BsaW5rIEZ1YmFyI2ZvbygpfSA8Y2FyZXQ+IworICovCisgCitjbGFzcyBGdWJhciB7CisgIHZvaWQgZm9vKCk7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vamF2YWRvYy9NZXRob2RUYWdOYW1lMC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vamF2YWRvYy9NZXRob2RUYWdOYW1lMC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRiYThhNzkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9qYXZhZG9jL01ldGhvZFRhZ05hbWUwLmphdmEKQEAgLTAsMCArMSw3IEBACitjbGFzcyBDeworICAgIAorICAgIC8qKgorICAgICAqIEA8Y2FyZXQ+CisgICAgICovCisgICAgcHJpdmF0ZSBpbnQgZm9vKCkge30KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9qYXZhZG9jL01ldGhvZFRhZ05hbWUxLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9qYXZhZG9jL01ldGhvZFRhZ05hbWUxLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmIxY2VmMgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2phdmFkb2MvTWV0aG9kVGFnTmFtZTEuamF2YQpAQCAtMCwwICsxLDcgQEAKK2NsYXNzIEN7CisgICAgCisgICAgLyoqCisgICAgICogQHM8Y2FyZXQ+CisgICAgICovCisgICAgcHJpdmF0ZSBpbnQgZm9vKCkge30KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9qYXZhZG9jL1BhcmFtVmFsdWUwLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9qYXZhZG9jL1BhcmFtVmFsdWUwLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGI1NmY1OQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2phdmFkb2MvUGFyYW1WYWx1ZTAuamF2YQpAQCAtMCwwICsxLDcgQEAKK2NsYXNzIEN7CisgICAgCisgICAgLyoqCisgICAgICogQHBhcmFtIDxjYXJldD4KKyAgICAgKi8KKyAgICBwcml2YXRlIGludCBmb28oaW50IGEsIGNoYXIgYiwgU3RyaW5nIGMpIHt9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vamF2YWRvYy9QYXJhbVZhbHVlMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vamF2YWRvYy9QYXJhbVZhbHVlMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdkMGYwNTgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9qYXZhZG9jL1BhcmFtVmFsdWUxLmphdmEKQEAgLTAsMCArMSw3IEBACitjbGFzcyBDeworICAgIAorICAgIC8qKgorICAgICAqIEBwYXJhbSBhPGNhcmV0PgorICAgICAqLworICAgIHByaXZhdGUgaW50IGZvbyhpbnQgYTEsIGNoYXIgYTIsIFN0cmluZyBhMykge30KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9qYXZhZG9jL1BhcmFtVmFsdWUyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9qYXZhZG9jL1BhcmFtVmFsdWUyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmIzMmM1NwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2phdmFkb2MvUGFyYW1WYWx1ZTIuamF2YQpAQCAtMCwwICsxLDkgQEAKK2NsYXNzIEN7CisgICAgCisgICAgLyoqCisgICAgICogQHBhcmFtIGExCisgICAgICogQHBhcmFtIGE8Y2FyZXQ+CisgICAgICogQHBhcmFtIGE0CisgICAgICovCisgICAgcHJpdmF0ZSBpbnQgZm9vKGludCBhMSwgY2hhciBhMiwgU3RyaW5nIGEzLCBib29sZWFuIGE0KSB7fQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2phdmFkb2MvUXVhbGlmaWVkQ2xhc3NSZWZlcmVuY2UuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2phdmFkb2MvUXVhbGlmaWVkQ2xhc3NSZWZlcmVuY2UuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZTg5NjY1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vamF2YWRvYy9RdWFsaWZpZWRDbGFzc1JlZmVyZW5jZS5qYXZhCkBAIC0wLDAgKzEsNyBAQAorLyoqCisgKiB7QGxpbmsgRmlsZUlucHV0U3RyPGNhcmV0Pn0KKyAqLworCitjbGFzcyBGb28geworCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vamF2YWRvYy9RdWFsaWZpZWRDbGFzc1JlZmVyZW5jZV9hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vamF2YWRvYy9RdWFsaWZpZWRDbGFzc1JlZmVyZW5jZV9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI2MTdlMWQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9qYXZhZG9jL1F1YWxpZmllZENsYXNzUmVmZXJlbmNlX2FmdGVyLmphdmEKQEAgLTAsMCArMSw3IEBACisvKioKKyAqIHtAbGluayBqYXZhLmlvLkZpbGVJbnB1dFN0cmVhbTxjYXJldD59CisgKi8KKworY2xhc3MgRm9vIHsKKworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2phdmFkb2MvUmVmZXJlbmNlUHJvdmlkZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2phdmFkb2MvUmVmZXJlbmNlUHJvdmlkZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YjJhYmY1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vamF2YWRvYy9SZWZlcmVuY2VQcm92aWRlci5qYXZhCkBAIC0wLDAgKzEsNCBAQAorLyoqCisgKiBAY3VzdG9tIDxjYXJldD4KKyAqLworY2xhc3MgQXt9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9qYXZhZG9jL1NlZTAuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2phdmFkb2MvU2VlMC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ2MjBiZmMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9qYXZhZG9jL1NlZTAuamF2YQpAQCAtMCwwICsxLDcgQEAKK2NsYXNzIEN7CisgICAgCisgICAgLyoqCisgICAgICogQHNlZSAjPGNhcmV0PgorICAgICAqLworICAgIHByaXZhdGUgaW50IGZvbyhpbnQgYSwgY2hhciBiLCBTdHJpbmcgYykge30KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9qYXZhZG9jL1NlZTEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2phdmFkb2MvU2VlMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM2ZmQxYTYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9qYXZhZG9jL1NlZTEuamF2YQpAQCAtMCwwICsxLDcgQEAKK2NsYXNzIEN7CisgICAgCisgICAgLyoqCisgICAgICogQHNlZSAjbm90PGNhcmV0PgorICAgICAqLworICAgIHByaXZhdGUgaW50IGZvbyhpbnQgYSwgY2hhciBiLCBTdHJpbmcgYykge30KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9qYXZhZG9jL1NlZTIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2phdmFkb2MvU2VlMi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUzZjQyMWEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9qYXZhZG9jL1NlZTIuamF2YQpAQCAtMCwwICsxLDkgQEAKK2NsYXNzIEN7CisgICAgCisgICAgLyoqCisgICAgICogQHNlZSAjbm90PGNhcmV0PgorICAgICAqCisgICAgICogQHNpbmNlCisgICAgICovCisgICAgcHJpdmF0ZSBpbnQgZm9vKGludCBhLCBjaGFyIGIsIFN0cmluZyBjKSB7fQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2phdmFkb2MvU2VlMy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vamF2YWRvYy9TZWUzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDBmMDU0MgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2phdmFkb2MvU2VlMy5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKK2NsYXNzIEN7CisgICAgcHJpdmF0ZSBpbnQgbXlGaWVsZDsKKyAgICAKKyAgICAvKioKKyAgICAgKiBAc2VlICM8Y2FyZXQ+CisgICAgICoKKyAgICAgKiBAc2luY2UKKyAgICAgKi8KKyAgICBwcml2YXRlIGludCBmb28oaW50IGEsIGNoYXIgYiwgU3RyaW5nIGMpIHt9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vamF2YWRvYy9TZWU0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9qYXZhZG9jL1NlZTQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNmFlMjg2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vamF2YWRvYy9TZWU0LmphdmEKQEAgLTAsMCArMSwxMyBAQAorY2xhc3MgQ3sKKyAgICBwcml2YXRlIGludCBteUZpZWxkOworICAgIAorICAgIC8qKgorICAgICAqIEBzZWUgPGNhcmV0PgorICAgICAqCisgICAgICogQHNpbmNlCisgICAgICovCisgICAgcHJpdmF0ZSBpbnQgZm9vKGludCBhLCBjaGFyIGIsIFN0cmluZyBjKSB7fQorICAgIAorICAgIGNsYXNzIEF7fQorICAgIGNsYXNzIEJ7fQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2phdmFkb2MvU2VlNS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vamF2YWRvYy9TZWU1LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjExYjM2NgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2phdmFkb2MvU2VlNS5qYXZhCkBAIC0wLDAgKzEsOSBAQAorY2xhc3MgQ3sKKyAgICAvKioKKyAgICAgKiBAc2VlIEEjPGNhcmV0PgorICAgICAqLworICAgIHByaXZhdGUgaW50IG15RmllbGQ7CisgICAgCisgICAgY2xhc3MgQXsgIHByaXZhdGUgU3RyaW5nIG15TmFtZTsgIHByaXZhdGUgaW50IGZvbyhpbnQgYSwgY2hhciBiLCBTdHJpbmcgYykge30gfQorICAgIGNsYXNzIEJ7fQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2phdmFkb2MvU2VlNi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vamF2YWRvYy9TZWU2LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzNiMDEyYgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2phdmFkb2MvU2VlNi5qYXZhCkBAIC0wLDAgKzEsMTEgQEAKK2NsYXNzIEN7CisgICAgLyoqCisgICAgICogQHNlZSAjcGVyZm9ybSg8Y2FyZXQ+CisgICAgICovCisgICAgcHJpdmF0ZSBpbnQgbXlGaWVsZDsKKworICAgIHB1YmxpYyB2b2lkIHBlcmZvcm0oKSB7fQorICAgIHB1YmxpYyB2b2lkIHBlcmZvcm0oaW50IGEpIHt9CisgICAgcHVibGljIHZvaWQgcGVyZm9ybShpbnQgYSwgU3RyaW5nIGIpIHt9CisgICAgcHVibGljIHZvaWQgcGVyZm9ybShTdHJpbmcgYikge30KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2phdmFkb2MvU2VlNkFmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9qYXZhZG9jL1NlZTZBZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZlOWEyNmUzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vamF2YWRvYy9TZWU2QWZ0ZXIuamF2YQpAQCAtMCwwICsxLDExIEBACitjbGFzcyBDeworICAgIC8qKgorICAgICAqIEBzZWUgI3BlcmZvcm0oaW50LCBTdHJpbmcpIDxjYXJldD4KKyAgICAgKi8KKyAgICBwcml2YXRlIGludCBteUZpZWxkOworCisgICAgcHVibGljIHZvaWQgcGVyZm9ybSgpIHt9CisgICAgcHVibGljIHZvaWQgcGVyZm9ybShpbnQgYSkge30KKyAgICBwdWJsaWMgdm9pZCBwZXJmb3JtKGludCBhLCBTdHJpbmcgYikge30KKyAgICBwdWJsaWMgdm9pZCBwZXJmb3JtKFN0cmluZyBiKSB7fQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vamF2YWRvYy9TaG9ydGVuQ2xhc3NOYW1lLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9qYXZhZG9jL1Nob3J0ZW5DbGFzc05hbWUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jODgzZWM0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vamF2YWRvYy9TaG9ydGVuQ2xhc3NOYW1lLmphdmEKQEAgLTAsMCArMSw3IEBACitwYWNrYWdlIGZvbzsKKworLyoqCisgKiBTb21lIHRleHQge0BsaW5rIEZ1YjxjYXJldD4KKyAqLworY2xhc3MgRnViYXIgeworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2phdmFkb2MvU2hvcnRlbkNsYXNzTmFtZV9hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vamF2YWRvYy9TaG9ydGVuQ2xhc3NOYW1lX2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjM2NGM2MgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2phdmFkb2MvU2hvcnRlbkNsYXNzTmFtZV9hZnRlci5qYXZhCkBAIC0wLDAgKzEsNyBAQAorcGFja2FnZSBmb287CisKKy8qKgorICogU29tZSB0ZXh0IHtAbGluayBGdWJhcjxjYXJldD4KKyAqLworY2xhc3MgRnViYXIgeworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2phdmFkb2MvU2hvcnRlbkNsYXNzUmVmZXJlbmNlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9qYXZhZG9jL1Nob3J0ZW5DbGFzc1JlZmVyZW5jZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI5OWI4YmUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9qYXZhZG9jL1Nob3J0ZW5DbGFzc1JlZmVyZW5jZS5qYXZhCkBAIC0wLDAgKzEsOSBAQAoraW1wb3J0IGphdmEuaW8uKjsKKworLyoqCisgKiB7QGxpbmsgRmlsZUlucHV0U3RyPGNhcmV0Pn0KKyAqLworCitjbGFzcyBGb28geworCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vamF2YWRvYy9TaG9ydGVuQ2xhc3NSZWZlcmVuY2VfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2phdmFkb2MvU2hvcnRlbkNsYXNzUmVmZXJlbmNlX2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzFiMTVjZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2phdmFkb2MvU2hvcnRlbkNsYXNzUmVmZXJlbmNlX2FmdGVyLmphdmEKQEAgLTAsMCArMSw5IEBACitpbXBvcnQgamF2YS5pby4qOworCisvKioKKyAqIHtAbGluayBGaWxlSW5wdXRTdHJlYW08Y2FyZXQ+fQorICovCisKK2NsYXNzIEZvbyB7CisKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9qYXZhZG9jL1Rocm93c05vbkltcG9ydGVkLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9qYXZhZG9jL1Rocm93c05vbkltcG9ydGVkLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTIxZTM4NAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2phdmFkb2MvVGhyb3dzTm9uSW1wb3J0ZWQuamF2YQpAQCAtMCwwICsxLDcgQEAKKy8qKgorICogQHRocm93cyBOb1NFbGVFeDxjYXJldD4KKyAqLworCitjbGFzcyBGb28geworCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vamF2YWRvYy9UaHJvd3NOb25JbXBvcnRlZF9hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vamF2YWRvYy9UaHJvd3NOb25JbXBvcnRlZF9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFmMWEwYzIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9qYXZhZG9jL1Rocm93c05vbkltcG9ydGVkX2FmdGVyLmphdmEKQEAgLTAsMCArMSw3IEBACisvKioKKyAqIEB0aHJvd3MgamF2YS51dGlsLk5vU3VjaEVsZW1lbnRFeGNlcHRpb248Y2FyZXQ+CisgKi8KKworY2xhc3MgRm9vIHsKKworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2tleXdvcmRzL2Fic3RyYWN0SW5JbnRlcmZhY2UuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2tleXdvcmRzL2Fic3RyYWN0SW5JbnRlcmZhY2UuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MDFmYThjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24va2V5d29yZHMvYWJzdHJhY3RJbkludGVyZmFjZS5qYXZhCkBAIC0wLDAgKzEsMyBAQAoraW50ZXJmYWNlIEkgeworICA8Y2FyZXQ+Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24va2V5d29yZHMvYWZ0ZXJBbm5vdGF0aW9ucy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24va2V5d29yZHMvYWZ0ZXJBbm5vdGF0aW9ucy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFlN2M0NzcxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24va2V5d29yZHMvYWZ0ZXJBbm5vdGF0aW9ucy5qYXZhCkBAIC0wLDAgKzEsMiBAQAorQERlcHJlY2F0ZWQKKzxjYXJldD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9rZXl3b3Jkcy9jYXRjaEZpbmFsbHkuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2tleXdvcmRzL2NhdGNoRmluYWxseS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY3MjRkOTMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9rZXl3b3Jkcy9jYXRjaEZpbmFsbHkuamF2YQpAQCAtMCwwICsxLDIzIEBACisvKgorICogQ29weXJpZ2h0IDIwMDAtMjAxMiBKZXRCcmFpbnMgcy5yLm8uCisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcHVibGljIGNsYXNzIEF7CisgcHVibGljIHZvaWQgbWV0aG9kKCl7CisgIHRyeXsKKyAgIFN0cmluZyBzdHIgPSAiIjsKKyAgfQorICA8Y2FyZXQ+CisgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24va2V5d29yZHMvY2hhckluQW5ub3RhdGVkUGFyYW1ldGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9rZXl3b3Jkcy9jaGFySW5Bbm5vdGF0ZWRQYXJhbWV0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNjI0ODRmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24va2V5d29yZHMvY2hhckluQW5ub3RhdGVkUGFyYW1ldGVyLmphdmEKQEAgLTAsMCArMSw3IEBACitwdWJsaWMgY2xhc3MgVXRpbCB7CisKKyAgdm9pZCBmb28oQE5vdE51bGwgPGNhcmV0PiBhKSB7CisgIH0KKworCit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9rZXl3b3Jkcy9jbGFzc0luTWV0aG9kLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9rZXl3b3Jkcy9jbGFzc0luTWV0aG9kLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzlmOTYzYwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2tleXdvcmRzL2NsYXNzSW5NZXRob2QuamF2YQpAQCAtMCwwICsxLDUgQEAKK3B1YmxpYyBjbGFzcyBVdGlsIHsKKyAgdm9pZCBmb28oKSB7CisgICAgYzxjYXJldD4KKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24va2V5d29yZHMvY2xhc3NTY29wZTEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2tleXdvcmRzL2NsYXNzU2NvcGUxLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWQ1NzE3YwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2tleXdvcmRzL2NsYXNzU2NvcGUxLmphdmEKQEAgLTAsMCArMSBAQAorcHVibGljIDxjYXJldD4KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2tleXdvcmRzL2NsYXNzU2NvcGUyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9rZXl3b3Jkcy9jbGFzc1Njb3BlMi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ0MDYwZTMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9rZXl3b3Jkcy9jbGFzc1Njb3BlMi5qYXZhCkBAIC0wLDAgKzEgQEAKK2Fic3RyYWN0IDxjYXJldD4KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2tleXdvcmRzL2NsYXNzU2NvcGUzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9rZXl3b3Jkcy9jbGFzc1Njb3BlMy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA5ZWFkNDQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9rZXl3b3Jkcy9jbGFzc1Njb3BlMy5qYXZhCkBAIC0wLDAgKzEgQEAKK2NsYXNzIDxjYXJldD4KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2tleXdvcmRzL2NsYXNzU2NvcGU0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9rZXl3b3Jkcy9jbGFzc1Njb3BlNC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI0ZTdiZmIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9rZXl3b3Jkcy9jbGFzc1Njb3BlNC5qYXZhCkBAIC0wLDAgKzEsMTggQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwMC0yMDEyIEpldEJyYWlucyBzLnIuby4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitjbGFzcyBBeworPGNhcmV0PgorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24va2V5d29yZHMvY29udGludWUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2tleXdvcmRzL2NvbnRpbnVlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWQzM2Y1MwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2tleXdvcmRzL2NvbnRpbnVlLmphdmEKQEAgLTAsMCArMSw2IEBACisKK3B1YmxpYyBjbGFzcyBGb28geworICAgIHsKKyAgICAgICAgZm9yKGludCBpOzspIHsgY29udDxjYXJldD4gfQorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9rZXl3b3Jkcy9jb250aW51ZV9hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24va2V5d29yZHMvY29udGludWVfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZjJiMTBhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24va2V5d29yZHMvY29udGludWVfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDYgQEAKKworcHVibGljIGNsYXNzIEZvbyB7CisgICAgeworICAgICAgICBmb3IoaW50IGk7OykgeyBjb250aW51ZTsgfQorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9rZXl3b3Jkcy9kZWZhdWx0SW5Bbm5vLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9rZXl3b3Jkcy9kZWZhdWx0SW5Bbm5vLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzA3YmU2NAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2tleXdvcmRzL2RlZmF1bHRJbkFubm8uamF2YQpAQCAtMCwwICsxLDMgQEAKK0BpbnRlcmZhY2UgRm9vIHsKKyAgU3RyaW5nIGZvbygpIGRlZjxjYXJldD4KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9rZXl3b3Jkcy9kZWZhdWx0SW5Bbm5vX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9rZXl3b3Jkcy9kZWZhdWx0SW5Bbm5vX2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjE1ZWJhZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2tleXdvcmRzL2RlZmF1bHRJbkFubm9fYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDMgQEAKK0BpbnRlcmZhY2UgRm9vIHsKKyAgU3RyaW5nIGZvbygpIGRlZmF1bHQgPGNhcmV0PgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2tleXdvcmRzL2V4dGVuZHMxLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9rZXl3b3Jkcy9leHRlbmRzMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYzYTViODQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9rZXl3b3Jkcy9leHRlbmRzMS5qYXZhCkBAIC0wLDAgKzEsMTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwMC0yMDEyIEpldEJyYWlucyBzLnIuby4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitjbGFzcyB4MyA8Y2FyZXQ+CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9rZXl3b3Jkcy9leHRlbmRzMTAuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2tleXdvcmRzL2V4dGVuZHMxMC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNlMzI2MTIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9rZXl3b3Jkcy9leHRlbmRzMTAuamF2YQpAQCAtMCwwICsxLDE4IEBACisvKgorICogQ29weXJpZ2h0IDIwMDAtMjAxMiBKZXRCcmFpbnMgcy5yLm8uCisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworY2xhc3MgQXsKKyB2b2lkIDxUIGU8Y2FyZXQ+PmZvbygpe30KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9rZXl3b3Jkcy9leHRlbmRzMTBfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2tleXdvcmRzL2V4dGVuZHMxMF9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFkNjNjM2IKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9rZXl3b3Jkcy9leHRlbmRzMTBfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDE4IEBACisvKgorICogQ29weXJpZ2h0IDIwMDAtMjAxMiBKZXRCcmFpbnMgcy5yLm8uCisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworY2xhc3MgQXsKKyB2b2lkIDxUIGV4dGVuZHMgPGNhcmV0Pj5mb28oKXt9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24va2V5d29yZHMvZXh0ZW5kczExLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9rZXl3b3Jkcy9leHRlbmRzMTEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hN2NkNWQ2NAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2tleXdvcmRzL2V4dGVuZHMxMS5qYXZhCkBAIC0wLDAgKzEsMTggQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwMC0yMDEyIEpldEJyYWlucyBzLnIuby4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitjbGFzcyBBeworIHZvaWQgPFQgZXh0ZW5kcyBTdHJpbmcsIFYgZTxjYXJldD4+Zm9vKCl7fQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2tleXdvcmRzL2V4dGVuZHMxMV9hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24va2V5d29yZHMvZXh0ZW5kczExX2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjAxYWE1ZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2tleXdvcmRzL2V4dGVuZHMxMV9hZnRlci5qYXZhCkBAIC0wLDAgKzEsMTggQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwMC0yMDEyIEpldEJyYWlucyBzLnIuby4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitjbGFzcyBBeworIHZvaWQgPFQgZXh0ZW5kcyBTdHJpbmcsIFYgZXh0ZW5kcyA8Y2FyZXQ+PmZvbygpe30KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9rZXl3b3Jkcy9leHRlbmRzMTIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2tleXdvcmRzL2V4dGVuZHMxMi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg4MGIwZWIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9rZXl3b3Jkcy9leHRlbmRzMTIuamF2YQpAQCAtMCwwICsxLDIwIEBACisvKgorICogQ29weXJpZ2h0IDIwMDAtMjAxMiBKZXRCcmFpbnMgcy5yLm8uCisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworY2xhc3MgQXsKKyB7CisgICBDb2xsZWN0aW9uPD8gZXg8Y2FyZXQ+PgorIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9rZXl3b3Jkcy9leHRlbmRzMTJfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2tleXdvcmRzL2V4dGVuZHMxMl9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdjZjRiYWUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9rZXl3b3Jkcy9leHRlbmRzMTJfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDIwIEBACisvKgorICogQ29weXJpZ2h0IDIwMDAtMjAxMiBKZXRCcmFpbnMgcy5yLm8uCisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworY2xhc3MgQXsKKyB7CisgICBDb2xsZWN0aW9uPD8gZXh0ZW5kcyA8Y2FyZXQ+PgorIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9rZXl3b3Jkcy9leHRlbmRzMi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24va2V5d29yZHMvZXh0ZW5kczIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMDBhYzRjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24va2V5d29yZHMvZXh0ZW5kczIuamF2YQpAQCAtMCwwICsxLDE4IEBACisvKgorICogQ29weXJpZ2h0IDIwMDAtMjAxMiBKZXRCcmFpbnMgcy5yLm8uCisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworY2xhc3MgQUFBe30KKworY2xhc3MgQkJCIGV4dGVuZHMgPGNhcmV0PgpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24va2V5d29yZHMvZXh0ZW5kczMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2tleXdvcmRzL2V4dGVuZHMzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDBlMDEyYgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2tleXdvcmRzL2V4dGVuZHMzLmphdmEKQEAgLTAsMCArMSwyMCBAQAorLyoKKyAqIENvcHlyaWdodCAyMDAwLTIwMTIgSmV0QnJhaW5zIHMuci5vLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK2NsYXNzIEFBQXt9CisKK2ludGVyZmFjZSBDQ0N7fQorCitjbGFzcyBCQkIgZXh0ZW5kcyA8Y2FyZXQ+CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9rZXl3b3Jkcy9leHRlbmRzNC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24va2V5d29yZHMvZXh0ZW5kczQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZTc2OTdiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24va2V5d29yZHMvZXh0ZW5kczQuamF2YQpAQCAtMCwwICsxLDIwIEBACisvKgorICogQ29weXJpZ2h0IDIwMDAtMjAxMiBKZXRCcmFpbnMgcy5yLm8uCisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworY2xhc3MgQUFBe30KKworaW50ZXJmYWNlIENDQ3t9CisKK2NsYXNzIEJCQiBpbXBsZW1lbnRzIDxjYXJldD4KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2tleXdvcmRzL2V4dGVuZHM1LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9rZXl3b3Jkcy9leHRlbmRzNS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNmZWM5ZDcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9rZXl3b3Jkcy9leHRlbmRzNS5qYXZhCkBAIC0wLDAgKzEsMTggQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwMC0yMDEyIEpldEJyYWlucyBzLnIuby4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitjbGFzcyBBQUF7fQorCitpbnRlcmZhY2UgQkJCIGV4dGVuZHMgPGNhcmV0PgpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24va2V5d29yZHMvZXh0ZW5kczYuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2tleXdvcmRzL2V4dGVuZHM2LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2ZmZmRiMQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2tleXdvcmRzL2V4dGVuZHM2LmphdmEKQEAgLTAsMCArMSwxOCBAQAorLyoKKyAqIENvcHlyaWdodCAyMDAwLTIwMTIgSmV0QnJhaW5zIHMuci5vLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK2ludGVyZmFjZSBBQUF7fQorCitpbnRlcmZhY2UgQkJCIGV4dGVuZHMgUnVubmFibGUsIDxjYXJldD4KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2tleXdvcmRzL2V4dGVuZHM3LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9rZXl3b3Jkcy9leHRlbmRzNy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNmYjY5NmMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9rZXl3b3Jkcy9leHRlbmRzNy5qYXZhCkBAIC0wLDAgKzEsMTggQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwMC0yMDEyIEpldEJyYWlucyBzLnIuby4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitjbGFzcyBBQUF7fQorCitjbGFzcyBCQkIgZXh0ZW5kcyBBQUEgaTxjYXJldD4KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2tleXdvcmRzL2V4dGVuZHM3X2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9rZXl3b3Jkcy9leHRlbmRzN19hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM3ODg2NDgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9rZXl3b3Jkcy9leHRlbmRzN19hZnRlci5qYXZhCkBAIC0wLDAgKzEsMTggQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwMC0yMDEyIEpldEJyYWlucyBzLnIuby4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitjbGFzcyBBQUF7fQorCitjbGFzcyBCQkIgZXh0ZW5kcyBBQUEgaW1wbGVtZW50cyA8Y2FyZXQ+CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9rZXl3b3Jkcy9leHRlbmRzOC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24va2V5d29yZHMvZXh0ZW5kczguamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NjdmZWY4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24va2V5d29yZHMvZXh0ZW5kczguamF2YQpAQCAtMCwwICsxLDE5IEBACisvKgorICogQ29weXJpZ2h0IDIwMDAtMjAxMiBKZXRCcmFpbnMgcy5yLm8uCisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworY2xhc3MgQUFBe30KKworY2xhc3MgQkJCIGV4dGVuZHMgQUFBIGk8Y2FyZXQ+IHsKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2tleXdvcmRzL2V4dGVuZHM4X2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9rZXl3b3Jkcy9leHRlbmRzOF9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVhN2E5NGUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9rZXl3b3Jkcy9leHRlbmRzOF9hZnRlci5qYXZhCkBAIC0wLDAgKzEsMTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwMC0yMDEyIEpldEJyYWlucyBzLnIuby4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitjbGFzcyBBQUF7fQorCitjbGFzcyBCQkIgZXh0ZW5kcyBBQUEgaW1wbGVtZW50cyA8Y2FyZXQ+IHsKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2tleXdvcmRzL2V4dGVuZHM5LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9rZXl3b3Jkcy9leHRlbmRzOS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM3Y2YxZjIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9rZXl3b3Jkcy9leHRlbmRzOS5qYXZhCkBAIC0wLDAgKzEsMTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwMC0yMDEyIEpldEJyYWlucyBzLnIuby4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitpbnRlcmZhY2UgQUFBQSBlPGNhcmV0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2tleXdvcmRzL2V4dGVuZHM5X2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9rZXl3b3Jkcy9leHRlbmRzOV9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcxZjE3NzcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9rZXl3b3Jkcy9leHRlbmRzOV9hZnRlci5qYXZhCkBAIC0wLDAgKzEsMTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwMC0yMDEyIEpldEJyYWlucyBzLnIuby4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitpbnRlcmZhY2UgQUFBQSBleHRlbmRzIDxjYXJldD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9rZXl3b3Jkcy9leHRlbmRzSW5DYXN0VHlwZVBhcmFtZXRlcnMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2tleXdvcmRzL2V4dGVuZHNJbkNhc3RUeXBlUGFyYW1ldGVycy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc0YTU3NTgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9rZXl3b3Jkcy9leHRlbmRzSW5DYXN0VHlwZVBhcmFtZXRlcnMuamF2YQpAQCAtMCwwICsxLDYgQEAKK3B1YmxpYyBjbGFzcyBNYWluIHsKKworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKCkgeworICAgICAgICB4ID0gKFByb2NlZWRpbmdKb2luUG9pbnQ8PyBleHQ8Y2FyZXQ+PgorICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2tleXdvcmRzL2V4dGVuZHNJbkNhc3RUeXBlUGFyYW1ldGVyczIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2tleXdvcmRzL2V4dGVuZHNJbkNhc3RUeXBlUGFyYW1ldGVyczIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45Y2Y3NTE1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24va2V5d29yZHMvZXh0ZW5kc0luQ2FzdFR5cGVQYXJhbWV0ZXJzMi5qYXZhCkBAIC0wLDAgKzEsOSBAQAorcHVibGljIGNsYXNzIE1haW4geworCisgIHB1YmxpYyBpbnQgY29tcGFyZShPYmplY3QgdmFsdWUxLCBPYmplY3QgdmFsdWUyKSB7CisgICAgaWYgKHZhbHVlMSBpbnN0YW5jZW9mIENvbXBhcmFibGUgJiYgdmFsdWUyIGluc3RhbmNlb2YgQ29tcGFyYWJsZSkgeworICAgICAgcmV0dXJuICgoQ29tcGFyYWJsZTw/IDxjYXJldD4+KSB2YWx1ZTEpLmNvbXBhcmVUbyh2YWx1ZTIpOworICAgIH0KKyAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCk7CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2tleXdvcmRzL2V4dGVuZHNJbkNhc3RUeXBlUGFyYW1ldGVyc19hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24va2V5d29yZHMvZXh0ZW5kc0luQ2FzdFR5cGVQYXJhbWV0ZXJzX2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2I2NjY3MAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2tleXdvcmRzL2V4dGVuZHNJbkNhc3RUeXBlUGFyYW1ldGVyc19hZnRlci5qYXZhCkBAIC0wLDAgKzEsNiBAQAorcHVibGljIGNsYXNzIE1haW4geworCisgICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oKSB7CisgICAgICAgIHggPSAoUHJvY2VlZGluZ0pvaW5Qb2ludDw/IGV4dGVuZHMgPGNhcmV0Pj4KKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9rZXl3b3Jkcy9leHRlbmRzSW5NZXRob2RQYXJhbWV0ZXJzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9rZXl3b3Jkcy9leHRlbmRzSW5NZXRob2RQYXJhbWV0ZXJzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmM0NjdlMwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2tleXdvcmRzL2V4dGVuZHNJbk1ldGhvZFBhcmFtZXRlcnMuamF2YQpAQCAtMCwwICsxLDIwIEBACisvKgorICogQ29weXJpZ2h0IDIwMDAtMjAxMiBKZXRCcmFpbnMgcy5yLm8uCisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcHVibGljIGNsYXNzIFh4eCB7CisKKyAgICA8VCBleHQ8Y2FyZXQ+CisKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9rZXl3b3Jkcy9leHRlbmRzSW5NZXRob2RQYXJhbWV0ZXJzX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9rZXl3b3Jkcy9leHRlbmRzSW5NZXRob2RQYXJhbWV0ZXJzX2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjk0ZGJhNwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2tleXdvcmRzL2V4dGVuZHNJbk1ldGhvZFBhcmFtZXRlcnNfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDIwIEBACisvKgorICogQ29weXJpZ2h0IDIwMDAtMjAxMiBKZXRCcmFpbnMgcy5yLm8uCisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcHVibGljIGNsYXNzIFh4eCB7CisKKyAgICA8VCBleHRlbmRzIDxjYXJldD4KKworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2tleXdvcmRzL2V4dGVuZHNXaXRoUmlnaHRDb250ZXh0SW5DbGFzc1R5cGVQYXJhbWV0ZXJzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9rZXl3b3Jkcy9leHRlbmRzV2l0aFJpZ2h0Q29udGV4dEluQ2xhc3NUeXBlUGFyYW1ldGVycy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMwOTIyYjcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9rZXl3b3Jkcy9leHRlbmRzV2l0aFJpZ2h0Q29udGV4dEluQ2xhc3NUeXBlUGFyYW1ldGVycy5qYXZhCkBAIC0wLDAgKzEsMTggQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwMC0yMDEyIEpldEJyYWlucyBzLnIuby4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitjbGFzcyBGb288VCBleHQ8Y2FyZXQ+IEE+IHsKKworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24va2V5d29yZHMvZXh0ZW5kc1dpdGhSaWdodENvbnRleHRJbkNsYXNzVHlwZVBhcmFtZXRlcnNfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2tleXdvcmRzL2V4dGVuZHNXaXRoUmlnaHRDb250ZXh0SW5DbGFzc1R5cGVQYXJhbWV0ZXJzX2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWYwMzIxOQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2tleXdvcmRzL2V4dGVuZHNXaXRoUmlnaHRDb250ZXh0SW5DbGFzc1R5cGVQYXJhbWV0ZXJzX2FmdGVyLmphdmEKQEAgLTAsMCArMSwxOCBAQAorLyoKKyAqIENvcHlyaWdodCAyMDAwLTIwMTIgSmV0QnJhaW5zIHMuci5vLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK2NsYXNzIEZvbzxUIGV4dGVuZHM8Y2FyZXQ+IEE+IHsKKworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24va2V5d29yZHMvZXh0cmFCcmFja2V0QWZ0ZXJGaW5hbGx5MS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24va2V5d29yZHMvZXh0cmFCcmFja2V0QWZ0ZXJGaW5hbGx5MS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZhOWY3NTAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9rZXl3b3Jkcy9leHRyYUJyYWNrZXRBZnRlckZpbmFsbHkxLmphdmEKQEAgLTAsMCArMSwyNyBAQAorCisvKgorICogQ29weXJpZ2h0IDIwMDAtMjAxMiBKZXRCcmFpbnMgcy5yLm8uCisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcHVibGljIGNsYXNzIE1haW4geworCisgICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oKSB7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICAKKyAgICAgICAgfSBmaW5hbDxjYXJldD4geworCisgICAgICAgIH0KKworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2tleXdvcmRzL2V4dHJhQnJhY2tldEFmdGVyRmluYWxseTFfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2tleXdvcmRzL2V4dHJhQnJhY2tldEFmdGVyRmluYWxseTFfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MzUxMmRkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24va2V5d29yZHMvZXh0cmFCcmFja2V0QWZ0ZXJGaW5hbGx5MV9hZnRlci5qYXZhCkBAIC0wLDAgKzEsMjcgQEAKKworLyoKKyAqIENvcHlyaWdodCAyMDAwLTIwMTIgSmV0QnJhaW5zIHMuci5vLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3B1YmxpYyBjbGFzcyBNYWluIHsKKworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKCkgeworICAgICAgICB0cnkgeworICAgICAgICAgICAgCisgICAgICAgIH0gZmluYWxseSB7PGNhcmV0PgorCisgICAgICAgIH0KKworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2tleXdvcmRzL2V4dHJhQnJhY2tldEFmdGVyRmluYWxseTIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2tleXdvcmRzL2V4dHJhQnJhY2tldEFmdGVyRmluYWxseTIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMWU0Mjg5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24va2V5d29yZHMvZXh0cmFCcmFja2V0QWZ0ZXJGaW5hbGx5Mi5qYXZhCkBAIC0wLDAgKzEsMjUgQEAKKworLyoKKyAqIENvcHlyaWdodCAyMDAwLTIwMTIgSmV0QnJhaW5zIHMuci5vLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3B1YmxpYyBjbGFzcyBNYWluIHsKKworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKCkgeworICAgICAgICB0cnkgeworICAgICAgICAgICAgCisgICAgICAgIH0gZmluYWw8Y2FyZXQ+CisKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9rZXl3b3Jkcy9leHRyYUJyYWNrZXRBZnRlckZpbmFsbHkyX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9rZXl3b3Jkcy9leHRyYUJyYWNrZXRBZnRlckZpbmFsbHkyX2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjk5ZGYzYwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2tleXdvcmRzL2V4dHJhQnJhY2tldEFmdGVyRmluYWxseTJfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDI3IEBACisKKy8qCisgKiBDb3B5cmlnaHQgMjAwMC0yMDEyIEpldEJyYWlucyBzLnIuby4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwdWJsaWMgY2xhc3MgTWFpbiB7CisKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbigpIHsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIAorICAgICAgICB9IGZpbmFsbHkgeworICAgICAgICAgICAgPGNhcmV0PgorICAgICAgICB9CisKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9rZXl3b3Jkcy9maWxlU2NvcGUxLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9rZXl3b3Jkcy9maWxlU2NvcGUxLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTEzZmRjZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2tleXdvcmRzL2ZpbGVTY29wZTEuamF2YQpAQCAtMCwwICsxIEBACis8Y2FyZXQ+CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9rZXl3b3Jkcy9maWxlU2NvcGUyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9rZXl3b3Jkcy9maWxlU2NvcGUyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTcwYzM1YwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2tleXdvcmRzL2ZpbGVTY29wZTIuamF2YQpAQCAtMCwwICsxLDE4IEBACisvKgorICogQ29weXJpZ2h0IDIwMDAtMjAxMiBKZXRCcmFpbnMgcy5yLm8uCisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcGFja2FnZSBteVBhY2thZ2U7CisKKzxjYXJldD4KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2tleXdvcmRzL2ZpbmFsQWZ0ZXJQYXJhbWV0ZXJBbm5vLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9rZXl3b3Jkcy9maW5hbEFmdGVyUGFyYW1ldGVyQW5uby5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJiNTM5YjgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9rZXl3b3Jkcy9maW5hbEFmdGVyUGFyYW1ldGVyQW5uby5qYXZhCkBAIC0wLDAgKzEsMiBAQAorcHVibGljIGNsYXNzIFV0aWwgeworICB2b2lkIGZvbyhARm9vIDxjYXJldD4gU3RyaW5nW10gYXJncykgeyB9fQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24va2V5d29yZHMvZmluYWxBZnRlclBhcmFtZXRlckFubm8yLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9rZXl3b3Jkcy9maW5hbEFmdGVyUGFyYW1ldGVyQW5ubzIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNzZiZmIzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24va2V5d29yZHMvZmluYWxBZnRlclBhcmFtZXRlckFubm8yLmphdmEKQEAgLTAsMCArMSwzIEBACitwdWJsaWMgY2xhc3MgVXRpbCB7CisgIHZvaWQgZm9vKEBGb28gPGNhcmV0PiBpbnQgYXJncykgeyB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9rZXl3b3Jkcy9maW5hbEluVHJ5V2l0aFJlc291cmNlcy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24va2V5d29yZHMvZmluYWxJblRyeVdpdGhSZXNvdXJjZXMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMDg3MTMwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24va2V5d29yZHMvZmluYWxJblRyeVdpdGhSZXNvdXJjZXMuamF2YQpAQCAtMCwwICsxLDUgQEAKK3B1YmxpYyBjbGFzcyBVdGlsIHsKKyAgdm9pZCBmb28oKSB7CisgICAgdHJ5ICg8Y2FyZXQ+KQorICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9rZXl3b3Jkcy9pbnN0YW5jZU9mMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24va2V5d29yZHMvaW5zdGFuY2VPZjEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iM2U5ODkwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24va2V5d29yZHMvaW5zdGFuY2VPZjEuamF2YQpAQCAtMCwwICsxLDUgQEAKK3B1YmxpYyBjbGFzcyBBeworIHB1YmxpYyB2b2lkIG1ldGhvZCgpeworICBib29sZWFuIHggPSB0aGlzIGluczxjYXJldD4KKyB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9rZXl3b3Jkcy9pbnN0YW5jZU9mMV9hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24va2V5d29yZHMvaW5zdGFuY2VPZjFfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iODY5MzY4OAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2tleXdvcmRzL2luc3RhbmNlT2YxX2FmdGVyLmphdmEKQEAgLTAsMCArMSw1IEBACitwdWJsaWMgY2xhc3MgQXsKKyBwdWJsaWMgdm9pZCBtZXRob2QoKXsKKyAgYm9vbGVhbiB4ID0gdGhpcyBpbnN0YW5jZW9mIDxjYXJldD4KKyB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9rZXl3b3Jkcy9pbnN0YW5jZU9mMi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24va2V5d29yZHMvaW5zdGFuY2VPZjIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNjBjNzBhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24va2V5d29yZHMvaW5zdGFuY2VPZjIuamF2YQpAQCAtMCwwICsxLDIwIEBACisvKgorICogQ29weXJpZ2h0IDIwMDAtMjAxMiBKZXRCcmFpbnMgcy5yLm8uCisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcHVibGljIGNsYXNzIEF7CisgcHVibGljIHZvaWQgbWV0aG9kKCl7CisgIGJvb2xlYW4geCA9IHN1cGVyIDxjYXJldD4KKyB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9rZXl3b3Jkcy9pbnN0YW5jZU9mMl9hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24va2V5d29yZHMvaW5zdGFuY2VPZjJfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNjBjNzBhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24va2V5d29yZHMvaW5zdGFuY2VPZjJfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDIwIEBACisvKgorICogQ29weXJpZ2h0IDIwMDAtMjAxMiBKZXRCcmFpbnMgcy5yLm8uCisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcHVibGljIGNsYXNzIEF7CisgcHVibGljIHZvaWQgbWV0aG9kKCl7CisgIGJvb2xlYW4geCA9IHN1cGVyIDxjYXJldD4KKyB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9rZXl3b3Jkcy9pbnN0YW5jZU9mMy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24va2V5d29yZHMvaW5zdGFuY2VPZjMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMGU5M2VlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24va2V5d29yZHMvaW5zdGFuY2VPZjMuamF2YQpAQCAtMCwwICsxLDYgQEAKK3B1YmxpYyBjbGFzcyBBeworIHB1YmxpYyB2b2lkIG1ldGhvZCgpeworICBTdHJpbmcgc3RyID0gIiI7CisgIGJvb2xlYW4geCA9IHN0ciBpbnM8Y2FyZXQ+CisgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24va2V5d29yZHMvaW5zdGFuY2VPZjNfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2tleXdvcmRzL2luc3RhbmNlT2YzX2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWJjN2UxYwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2tleXdvcmRzL2luc3RhbmNlT2YzX2FmdGVyLmphdmEKQEAgLTAsMCArMSw2IEBACitwdWJsaWMgY2xhc3MgQXsKKyBwdWJsaWMgdm9pZCBtZXRob2QoKXsKKyAgU3RyaW5nIHN0ciA9ICIiOworICBib29sZWFuIHggPSBzdHIgaW5zdGFuY2VvZiA8Y2FyZXQ+CisgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24va2V5d29yZHMvaW50SW5DbGFzc0FycmF5LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9rZXl3b3Jkcy9pbnRJbkNsYXNzQXJyYXkuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZGQxYjc4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24va2V5d29yZHMvaW50SW5DbGFzc0FycmF5LmphdmEKQEAgLTAsMCArMSw1IEBACitwdWJsaWMgY2xhc3MgVXRpbCB7CisgIGludCBnb28oKSB7CisgICAgQ2xhc3NbXSBjID0ge0Fic3RyYWN0TWV0aG9kRXJyb3IuY2xhc3MsIDxjYXJldD59CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2tleXdvcmRzL2ludEluQ2xhc3NBcnJheTIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2tleXdvcmRzL2ludEluQ2xhc3NBcnJheTIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45YjRlYjhkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24va2V5d29yZHMvaW50SW5DbGFzc0FycmF5Mi5qYXZhCkBAIC0wLDAgKzEsNSBAQAorcHVibGljIGNsYXNzIFV0aWwgeworICBpbnQgZ29vKCkgeworICAgIG5ldyBDbGFzc1tde0Fic3RyYWN0TWV0aG9kRXJyb3IuY2xhc3MsIDxjYXJldD4uY2xhc3N9CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2tleXdvcmRzL2ludEluQ2xhc3NBcnJheTMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2tleXdvcmRzL2ludEluQ2xhc3NBcnJheTMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MDczYTU0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24va2V5d29yZHMvaW50SW5DbGFzc0FycmF5My5qYXZhCkBAIC0wLDAgKzEsNSBAQAorcHVibGljIGNsYXNzIFV0aWwgeworICBpbnQgZ29vKCkgeworICAgIG5ldyBDbGFzc1tdezxjYXJldD59CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2tleXdvcmRzL2ludEluR2VuZXJpY3MuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2tleXdvcmRzL2ludEluR2VuZXJpY3MuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lODIxODkzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24va2V5d29yZHMvaW50SW5HZW5lcmljcy5qYXZhCkBAIC0wLDAgKzEsNyBAQAoraW1wb3J0IGphdmEubGFuZy5PYmplY3Q7CisKK3B1YmxpYyBjbGFzcyBVdGlsIHsKKyAgaW50IGdvbygpIHsKKyAgICBQYWlyPE9iamVjdCwgPGNhcmV0Pj4KKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24va2V5d29yZHMvaW50SW5HZW5lcmljczIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2tleXdvcmRzL2ludEluR2VuZXJpY3MyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjllZjMyNgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2tleXdvcmRzL2ludEluR2VuZXJpY3MyLmphdmEKQEAgLTAsMCArMSw3IEBACitpbXBvcnQgamF2YS5sYW5nLk9iamVjdDsKKworcHVibGljIGNsYXNzIFV0aWwgeworICBpbnQgZ29vKCkgeworICAgIFBhaXI8T2JqZWN0LCA8Y2FyZXQ+CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2tleXdvcmRzL2ludGVyZmFjZVNjb3BlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9rZXl3b3Jkcy9pbnRlcmZhY2VTY29wZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcwMWZhOGMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9rZXl3b3Jkcy9pbnRlcmZhY2VTY29wZS5qYXZhCkBAIC0wLDAgKzEsMyBAQAoraW50ZXJmYWNlIEkgeworICA8Y2FyZXQ+Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24va2V5d29yZHMvbWV0aG9kU2NvcGUxLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9rZXl3b3Jkcy9tZXRob2RTY29wZTEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYWZjMzIwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24va2V5d29yZHMvbWV0aG9kU2NvcGUxLmphdmEKQEAgLTAsMCArMSwxOCBAQAorLyoKKyAqIENvcHlyaWdodCAyMDAwLTIwMTIgSmV0QnJhaW5zIHMuci5vLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3B1YmxpYyBjbGFzcyBBeworIHB1YmxpYyB2b2lkIG1ldGhvZCgpIDxjYXJldD4ge30KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2tleXdvcmRzL21ldGhvZFNjb3BlMi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24va2V5d29yZHMvbWV0aG9kU2NvcGUyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTY0OTJhZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2tleXdvcmRzL21ldGhvZFNjb3BlMi5qYXZhCkBAIC0wLDAgKzEsMTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwMC0yMDEyIEpldEJyYWlucyBzLnIuby4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwdWJsaWMgY2xhc3MgQXsKKyBwdWJsaWMgdm9pZCBtZXRob2QoPGNhcmV0Pil7CisgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24va2V5d29yZHMvbWV0aG9kU2NvcGUzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9rZXl3b3Jkcy9tZXRob2RTY29wZTMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iN2RjNDY0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24va2V5d29yZHMvbWV0aG9kU2NvcGUzLmphdmEKQEAgLTAsMCArMSwyMCBAQAorLyoKKyAqIENvcHlyaWdodCAyMDAwLTIwMTIgSmV0QnJhaW5zIHMuci5vLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3B1YmxpYyBjbGFzcyBBeworIHB1YmxpYyB2b2lkIG1ldGhvZCgpeworICA8Y2FyZXQ+CisgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24va2V5d29yZHMvbWV0aG9kU2NvcGU0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9rZXl3b3Jkcy9tZXRob2RTY29wZTQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iN2RjNDY0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24va2V5d29yZHMvbWV0aG9kU2NvcGU0LmphdmEKQEAgLTAsMCArMSwyMCBAQAorLyoKKyAqIENvcHlyaWdodCAyMDAwLTIwMTIgSmV0QnJhaW5zIHMuci5vLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3B1YmxpYyBjbGFzcyBBeworIHB1YmxpYyB2b2lkIG1ldGhvZCgpeworICA8Y2FyZXQ+CisgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24va2V5d29yZHMvbWV0aG9kU2NvcGU1LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9rZXl3b3Jkcy9tZXRob2RTY29wZTUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ODVjOWY0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24va2V5d29yZHMvbWV0aG9kU2NvcGU1LmphdmEKQEAgLTAsMCArMSwyMCBAQAorLyoKKyAqIENvcHlyaWdodCAyMDAwLTIwMTIgSmV0QnJhaW5zIHMuci5vLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3B1YmxpYyBjbGFzcyBBeworIHB1YmxpYyB2b2lkIG1ldGhvZChmaTxjYXJldD4gU3RyaW5nKXsKKyAgCisgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24va2V5d29yZHMvbWV0aG9kU2NvcGU1X2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9rZXl3b3Jkcy9tZXRob2RTY29wZTVfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMjcwYzc1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24va2V5d29yZHMvbWV0aG9kU2NvcGU1X2FmdGVyLmphdmEKQEAgLTAsMCArMSwyMCBAQAorLyoKKyAqIENvcHlyaWdodCAyMDAwLTIwMTIgSmV0QnJhaW5zIHMuci5vLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3B1YmxpYyBjbGFzcyBBeworIHB1YmxpYyB2b2lkIG1ldGhvZChmaW5hbDxjYXJldD4gU3RyaW5nKXsKKyAgCisgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24va2V5d29yZHMvbmV3SW5NZXRob2RSZWZzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9rZXl3b3Jkcy9uZXdJbk1ldGhvZFJlZnMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZjQyZDgxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24va2V5d29yZHMvbmV3SW5NZXRob2RSZWZzLmphdmEKQEAgLTAsMCArMSwyMyBAQAorLyoKKyAqIENvcHlyaWdodCAyMDAwLTIwMTIgSmV0QnJhaW5zIHMuci5vLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworY2xhc3MgRm9vIHsKKyAgaW50ZXJmYWNlIEkgeyBPYmplY3QgbSgpOyB9CisKKyAgdm9pZCB0ZXN0KCkgeworICAgIEkgaSA9IEZvbzo6bjxjYXJldD4KKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24va2V5d29yZHMvbmV3SW5NZXRob2RSZWZzX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9rZXl3b3Jkcy9uZXdJbk1ldGhvZFJlZnNfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZmM3NDBhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24va2V5d29yZHMvbmV3SW5NZXRob2RSZWZzX2FmdGVyLmphdmEKQEAgLTAsMCArMSwyMyBAQAorLyoKKyAqIENvcHlyaWdodCAyMDAwLTIwMTIgSmV0QnJhaW5zIHMuci5vLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworY2xhc3MgRm9vIHsKKyAgaW50ZXJmYWNlIEkgeyBPYmplY3QgbSgpOyB9CisKKyAgdm9pZCB0ZXN0KCkgeworICAgIEkgaSA9IEZvbzo6bmV3OzxjYXJldD4KKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24va2V5d29yZHMvbnVsbEluSWYuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2tleXdvcmRzL251bGxJbklmLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTJhMGRmZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2tleXdvcmRzL251bGxJbklmLmphdmEKQEAgLTAsMCArMSwyMyBAQAorCisvKgorICogQ29weXJpZ2h0IDIwMDAtMjAxMiBKZXRCcmFpbnMgcy5yLm8uCisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcHVibGljIGNsYXNzIE1haW4geworCisgICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oKSB7CisgICAgICAgIGlmIChudTxjYXJldD4pCisKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9rZXl3b3Jkcy9udWxsSW5JZl9hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24va2V5d29yZHMvbnVsbEluSWZfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNTM4NzU1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24va2V5d29yZHMvbnVsbEluSWZfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDIzIEBACisKKy8qCisgKiBDb3B5cmlnaHQgMjAwMC0yMDEyIEpldEJyYWlucyBzLnIuby4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwdWJsaWMgY2xhc3MgTWFpbiB7CisKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbigpIHsKKyAgICAgICAgaWYgKG51bGw8Y2FyZXQ+KQorCisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24va2V5d29yZHMvbnVsbEluTWV0aG9kQ2FsbC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24va2V5d29yZHMvbnVsbEluTWV0aG9kQ2FsbC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY2NWY1OGYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9rZXl3b3Jkcy9udWxsSW5NZXRob2RDYWxsLmphdmEKQEAgLTAsMCArMSwyMiBAQAorLyoKKyAqIENvcHlyaWdodCAyMDAwLTIwMTIgSmV0QnJhaW5zIHMuci5vLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK2NsYXNzIE51bGwgeworICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmd2KSB7CisgICAgU3RyaW5nQnVmZmVyIGJ1ZiA9IG5ldyBTdHJpbmdCdWZmZXIoKTsKKyAgICAKKyAgICBidWYuYXBwZW5kKG51PGNhcmV0Pik7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9rZXl3b3Jkcy9udWxsSW5NZXRob2RDYWxsMi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24va2V5d29yZHMvbnVsbEluTWV0aG9kQ2FsbDIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZDFlNDBkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24va2V5d29yZHMvbnVsbEluTWV0aG9kQ2FsbDIuamF2YQpAQCAtMCwwICsxLDIyIEBACisvKgorICogQ29weXJpZ2h0IDIwMDAtMjAxMiBKZXRCcmFpbnMgcy5yLm8uCisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworY2xhc3MgTnVsbCB7CisgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3YpIHsKKyAgICBTdHJpbmdCdWZmZXIgYnVmID0gbmV3IFN0cmluZ0J1ZmZlcigpOworICAgIAorICAgIGJ1Zi5hcHBlbmQoTnVsbC5udTxjYXJldD4pOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24va2V5d29yZHMvbnVsbEluTWV0aG9kQ2FsbDJfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2tleXdvcmRzL251bGxJbk1ldGhvZENhbGwyX2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmQxZTQwZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2tleXdvcmRzL251bGxJbk1ldGhvZENhbGwyX2FmdGVyLmphdmEKQEAgLTAsMCArMSwyMiBAQAorLyoKKyAqIENvcHlyaWdodCAyMDAwLTIwMTIgSmV0QnJhaW5zIHMuci5vLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK2NsYXNzIE51bGwgeworICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmd2KSB7CisgICAgU3RyaW5nQnVmZmVyIGJ1ZiA9IG5ldyBTdHJpbmdCdWZmZXIoKTsKKyAgICAKKyAgICBidWYuYXBwZW5kKE51bGwubnU8Y2FyZXQ+KTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2tleXdvcmRzL251bGxJbk1ldGhvZENhbGxfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2tleXdvcmRzL251bGxJbk1ldGhvZENhbGxfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MzEyOTk4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24va2V5d29yZHMvbnVsbEluTWV0aG9kQ2FsbF9hZnRlci5qYXZhCkBAIC0wLDAgKzEsMjIgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwMC0yMDEyIEpldEJyYWlucyBzLnIuby4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitjbGFzcyBOdWxsIHsKKyAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJndikgeworICAgIFN0cmluZ0J1ZmZlciBidWYgPSBuZXcgU3RyaW5nQnVmZmVyKCk7CisgICAgCisgICAgYnVmLmFwcGVuZChudWxsKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2tleXdvcmRzL251bGxJblJldHVybi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24va2V5d29yZHMvbnVsbEluUmV0dXJuLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzlmZGVhOAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2tleXdvcmRzL251bGxJblJldHVybi5qYXZhCkBAIC0wLDAgKzEsMjMgQEAKKworLyoKKyAqIENvcHlyaWdodCAyMDAwLTIwMTIgSmV0QnJhaW5zIHMuci5vLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3B1YmxpYyBjbGFzcyBNYWluIHsKKworICAgIHB1YmxpYyBzdGF0aWMgT2JqZWN0IG1haW4oKSB7CisgICAgICAgIHJldHVybiBudTxjYXJldD4KKworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2tleXdvcmRzL251bGxJblJldHVybl9hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24va2V5d29yZHMvbnVsbEluUmV0dXJuX2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDY1YjVlNwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2tleXdvcmRzL251bGxJblJldHVybl9hZnRlci5qYXZhCkBAIC0wLDAgKzEsMjMgQEAKKworLyoKKyAqIENvcHlyaWdodCAyMDAwLTIwMTIgSmV0QnJhaW5zIHMuci5vLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3B1YmxpYyBjbGFzcyBNYWluIHsKKworICAgIHB1YmxpYyBzdGF0aWMgT2JqZWN0IG1haW4oKSB7CisgICAgICAgIHJldHVybiBudWxsPGNhcmV0PgorCisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24va2V5d29yZHMvcmV0dXJuSW5UZXJuYXJ5LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9rZXl3b3Jkcy9yZXR1cm5JblRlcm5hcnkuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZDk1N2E0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24va2V5d29yZHMvcmV0dXJuSW5UZXJuYXJ5LmphdmEKQEAgLTAsMCArMSw1IEBACitwdWJsaWMgY2xhc3MgVXRpbCB7CisgIGludCBnb28oKSB7CisgICAgcmV0PGNhcmV0PmNvbmQgPyAxOiAwOworICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9rZXl3b3Jkcy9zcGFjZUFmdGVySW5zdGFuY2VvZi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24va2V5d29yZHMvc3BhY2VBZnRlckluc3RhbmNlb2YuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MzkwNGI2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24va2V5d29yZHMvc3BhY2VBZnRlckluc3RhbmNlb2YuamF2YQpAQCAtMCwwICsxLDcgQEAKK2NsYXNzIEZvbyB7CisgIHZvaWQgdGVzdChPYmplY3QgbykgeworICAgIGlmIChvIGluc3Q8Y2FyZXQ+IEZvbykgeworCisgICAgfQorICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9rZXl3b3Jkcy9zcGFjZUFmdGVySW5zdGFuY2VvZl9hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24va2V5d29yZHMvc3BhY2VBZnRlckluc3RhbmNlb2ZfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ODQwMDdkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24va2V5d29yZHMvc3BhY2VBZnRlckluc3RhbmNlb2ZfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDcgQEAKK2NsYXNzIEZvbyB7CisgIHZvaWQgdGVzdChPYmplY3QgbykgeworICAgIGlmIChvIGluc3RhbmNlb2Y8Y2FyZXQ+IEZvbykgeworCisgICAgfQorICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9rZXl3b3Jkcy9zdXBlcjEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2tleXdvcmRzL3N1cGVyMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQzYzQ4OGMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9rZXl3b3Jkcy9zdXBlcjEuamF2YQpAQCAtMCwwICsxLDIyIEBACisvKgorICogQ29weXJpZ2h0IDIwMDAtMjAxMiBKZXRCcmFpbnMgcy5yLm8uCisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworY2xhc3MgQnsKKyBjbGFzcyBBeworICB7CisgICBCLjxjYXJldD4KKyAgfQorIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9rZXl3b3Jkcy9zdXBlcjIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2tleXdvcmRzL3N1cGVyMi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE3ODBlY2IKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9rZXl3b3Jkcy9zdXBlcjIuamF2YQpAQCAtMCwwICsxLDIwIEBACisvKgorICogQ29weXJpZ2h0IDIwMDAtMjAxMiBKZXRCcmFpbnMgcy5yLm8uCisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworY2xhc3MgQXsKKyB7CisgU3RyaW5nLjxjYXJldD4KKyB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24va2V5d29yZHMvc3luY2hyb25pemVkMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24va2V5d29yZHMvc3luY2hyb25pemVkMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUwMDA2NGMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9rZXl3b3Jkcy9zeW5jaHJvbml6ZWQxLmphdmEKQEAgLTAsMCArMSwyMiBAQAorLyoKKyAqIENvcHlyaWdodCAyMDAwLTIwMTIgSmV0QnJhaW5zIHMuci5vLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK2NsYXNzIEEgeworICB2b2lkIGZvbyAoKSB7CisgICAgbmV3IFJ1bm5hYmxlICgpIHsKKyAgICAgIHB1YmxpYyBzeW5jaDxjYXJldD4KKyAgICB9OworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24va2V5d29yZHMvc3luY2hyb25pemVkMV9hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24va2V5d29yZHMvc3luY2hyb25pemVkMV9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUxOWE1MmMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9rZXl3b3Jkcy9zeW5jaHJvbml6ZWQxX2FmdGVyLmphdmEKQEAgLTAsMCArMSwyMiBAQAorLyoKKyAqIENvcHlyaWdodCAyMDAwLTIwMTIgSmV0QnJhaW5zIHMuci5vLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK2NsYXNzIEEgeworICB2b2lkIGZvbyAoKSB7CisgICAgbmV3IFJ1bm5hYmxlICgpIHsKKyAgICAgIHB1YmxpYyBzeW5jaHJvbml6ZWQgPGNhcmV0PgorICAgIH07CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9rZXl3b3Jkcy9zeW5jaHJvbml6ZWQyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9rZXl3b3Jkcy9zeW5jaHJvbml6ZWQyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDNhZTZlMQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2tleXdvcmRzL3N5bmNocm9uaXplZDIuamF2YQpAQCAtMCwwICsxLDIxIEBACisvKgorICogQ29weXJpZ2h0IDIwMDAtMjAxMiBKZXRCcmFpbnMgcy5yLm8uCisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworY2xhc3MgVGVzdCB7CisgICAgdm9pZCBmb28oKSB7CisgICAgICAgIGlmICh0cnVlKSB7CisgICAgICAgIH0gZWxzZSBzeW48Y2FyZXQ+CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24va2V5d29yZHMvc3luY2hyb25pemVkMl9hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24va2V5d29yZHMvc3luY2hyb25pemVkMl9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVmOTEzZGIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9rZXl3b3Jkcy9zeW5jaHJvbml6ZWQyX2FmdGVyLmphdmEKQEAgLTAsMCArMSwyMSBAQAorLyoKKyAqIENvcHlyaWdodCAyMDAwLTIwMTIgSmV0QnJhaW5zIHMuci5vLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK2NsYXNzIFRlc3QgeworICAgIHZvaWQgZm9vKCkgeworICAgICAgICBpZiAodHJ1ZSkgeworICAgICAgICB9IGVsc2Ugc3luY2hyb25pemVkKDxjYXJldD4pCisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24va2V5d29yZHMvdGhyb3dzT25TZXBhcmF0ZUxpbmUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2tleXdvcmRzL3Rocm93c09uU2VwYXJhdGVMaW5lLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2JmZjYxMwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2tleXdvcmRzL3Rocm93c09uU2VwYXJhdGVMaW5lLmphdmEKQEAgLTAsMCArMSw1IEBACisKK3B1YmxpYyBjbGFzcyBGb28geworICB2b2lkIGZvbygpCisgIHRoPGNhcmV0PgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2tleXdvcmRzL3Rocm93c09uU2VwYXJhdGVMaW5lX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9rZXl3b3Jkcy90aHJvd3NPblNlcGFyYXRlTGluZV9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYwYWRlZGEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9rZXl3b3Jkcy90aHJvd3NPblNlcGFyYXRlTGluZV9hZnRlci5qYXZhCkBAIC0wLDAgKzEsNSBAQAorCitwdWJsaWMgY2xhc3MgRm9vIHsKKyAgdm9pZCBmb28oKQorICB0aHJvd3MgPGNhcmV0PgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2tleXdvcmRzL3RydWVJblZhcmlhYmxlRGVjbGFyYXRpb24uamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2tleXdvcmRzL3RydWVJblZhcmlhYmxlRGVjbGFyYXRpb24uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYTY0ZWNmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24va2V5d29yZHMvdHJ1ZUluVmFyaWFibGVEZWNsYXJhdGlvbi5qYXZhCkBAIC0wLDAgKzEsMjMgQEAKKworLyoKKyAqIENvcHlyaWdodCAyMDAwLTIwMTIgSmV0QnJhaW5zIHMuci5vLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3B1YmxpYyBjbGFzcyBNYWluIHsKKworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKCkgeworICAgICAgICBib29sZWFuIGIgPSB0cjxjYXJldD4KKworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2tleXdvcmRzL3RydWVJblZhcmlhYmxlRGVjbGFyYXRpb25fYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL2tleXdvcmRzL3RydWVJblZhcmlhYmxlRGVjbGFyYXRpb25fYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMjAyNDc0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24va2V5d29yZHMvdHJ1ZUluVmFyaWFibGVEZWNsYXJhdGlvbl9hZnRlci5qYXZhCkBAIC0wLDAgKzEsMjMgQEAKKworLyoKKyAqIENvcHlyaWdodCAyMDAwLTIwMTIgSmV0QnJhaW5zIHMuci5vLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3B1YmxpYyBjbGFzcyBNYWluIHsKKworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKCkgeworICAgICAgICBib29sZWFuIGIgPSB0cnVlPGNhcmV0PgorCisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24va2V5d29yZHMvdHJ5SW5FeHByZXNzaW9uLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9rZXl3b3Jkcy90cnlJbkV4cHJlc3Npb24uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZTA3NTNhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24va2V5d29yZHMvdHJ5SW5FeHByZXNzaW9uLmphdmEKQEAgLTAsMCArMSw1IEBACitwdWJsaWMgY2xhc3MgTWVzc2FnZUJlYW4geworIHsKKyAgICBTdHJpbmcgY29udGFpbmluZ0NsYXNzID0gKChTdHJpbmcpIHQ8Y2FyZXQ+ICAgIAorIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9BY2Nlc3NJbnN0YW5jZUZyb21TdGF0aWNTZWNvbmQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9BY2Nlc3NJbnN0YW5jZUZyb21TdGF0aWNTZWNvbmQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNmZkNjE0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL0FjY2Vzc0luc3RhbmNlRnJvbVN0YXRpY1NlY29uZC5qYXZhCkBAIC0wLDAgKzEsMTEgQEAKK3B1YmxpYyBjbGFzcyBJbnNwZWN0aW9uIHsKKworICBwdWJsaWMgYm9vbGVhbiBpZ25vcmVFbnVtcyA9IGZhbHNlOworCisgIHByaXZhdGUgc3RhdGljIGNsYXNzIFZpc2l0b3IgeworICAgIHB1YmxpYyB2b2lkIHZpc2l0Q2xhc3MoKSB7CisgICAgICBpZiAoaWdub2VuPGNhcmV0PikgeworICAgICAgfQorICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9BY2Nlc3NJbnN0YW5jZUZyb21TdGF0aWNTZWNvbmRfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9BY2Nlc3NJbnN0YW5jZUZyb21TdGF0aWNTZWNvbmRfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZTQ2MzNmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL0FjY2Vzc0luc3RhbmNlRnJvbVN0YXRpY1NlY29uZF9hZnRlci5qYXZhCkBAIC0wLDAgKzEsMTEgQEAKK3B1YmxpYyBjbGFzcyBJbnNwZWN0aW9uIHsKKworICBwdWJsaWMgYm9vbGVhbiBpZ25vcmVFbnVtcyA9IGZhbHNlOworCisgIHByaXZhdGUgc3RhdGljIGNsYXNzIFZpc2l0b3IgeworICAgIHB1YmxpYyB2b2lkIHZpc2l0Q2xhc3MoKSB7CisgICAgICBpZiAoaWdub3JlRW51bXM8Y2FyZXQ+KSB7CisgICAgICB9CisgICAgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL0FjY2Vzc1N0YXRpY1ZpYUluc3RhbmNlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvQWNjZXNzU3RhdGljVmlhSW5zdGFuY2UuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMzVhZmI1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL0FjY2Vzc1N0YXRpY1ZpYUluc3RhbmNlLmphdmEKQEAgLTAsMCArMSwxMCBAQAorQFN1cHByZXNzV2FybmluZ3MoIkFjY2Vzc1N0YXRpY1ZpYUluc3RhbmNlIikKK3B1YmxpYyBjbGFzcyBLZXlWTyB7CisgIHsKKyAgICBuZXcgQ2xpKCkuZm88Y2FyZXQ+CisgIH0KK30KKworY2xhc3MgQ2xpIHsKKyAgc3RhdGljIHZvaWQgZm9vKCkge30KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9BY2Nlc3NTdGF0aWNWaWFJbnN0YW5jZVNlY29uZC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL0FjY2Vzc1N0YXRpY1ZpYUluc3RhbmNlU2Vjb25kLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGE5YTkxNQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9BY2Nlc3NTdGF0aWNWaWFJbnN0YW5jZVNlY29uZC5qYXZhCkBAIC0wLDAgKzEsNiBAQAorcHVibGljIGNsYXNzIEtleVZPIHsKKyAgeworICAgIHRoaXMuZm88Y2FyZXQ+CisgIH0KKyAgc3RhdGljIHZvaWQgZm9vKCkge30KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvQWNjZXNzU3RhdGljVmlhSW5zdGFuY2VTZWNvbmRfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9BY2Nlc3NTdGF0aWNWaWFJbnN0YW5jZVNlY29uZF9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJjNDExOTUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvQWNjZXNzU3RhdGljVmlhSW5zdGFuY2VTZWNvbmRfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDYgQEAKK3B1YmxpYyBjbGFzcyBLZXlWTyB7CisgIHsKKyAgICB0aGlzLmZvbygpOzxjYXJldD4KKyAgfQorICBzdGF0aWMgdm9pZCBmb28oKSB7fQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9BY2Nlc3NTdGF0aWNWaWFJbnN0YW5jZV9hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL0FjY2Vzc1N0YXRpY1ZpYUluc3RhbmNlX2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzFlNzJlOAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9BY2Nlc3NTdGF0aWNWaWFJbnN0YW5jZV9hZnRlci5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKK0BTdXBwcmVzc1dhcm5pbmdzKCJBY2Nlc3NTdGF0aWNWaWFJbnN0YW5jZSIpCitwdWJsaWMgY2xhc3MgS2V5Vk8geworICB7CisgICAgbmV3IENsaSgpLmZvbygpOzxjYXJldD4KKyAgfQorfQorCitjbGFzcyBDbGkgeworICBzdGF0aWMgdm9pZCBmb28oKSB7fQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL0FmdGVyQ2FzdDEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9BZnRlckNhc3QxLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWM1YmEzMAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9BZnRlckNhc3QxLmphdmEKQEAgLTAsMCArMSw3IEBACitjbGFzcyBBeworIHsKKyAgIFggYWFhLCBhYWI7CisKKyAgIChBKWFhPGNhcmV0PgorIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvQWZ0ZXJDYXN0Mi1yZXN1bHQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9BZnRlckNhc3QyLXJlc3VsdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY2MjgwMTcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvQWZ0ZXJDYXN0Mi1yZXN1bHQuamF2YQpAQCAtMCwwICsxLDYgQEAKK2NsYXNzIEF7CisgIHByaXZhdGUgQSBteUNsYXNzQ29tYm87CisgIHByb3RlY3RlZCB2b2lkIGNyZWF0ZU5vcnRoUGFuZWwoKSB7CisgICAgKChBKW15Q2xhc3NDb21ibzxjYXJldD4pCisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9BZnRlckNhc3QyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvQWZ0ZXJDYXN0Mi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU0NTM2YjkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvQWZ0ZXJDYXN0Mi5qYXZhCkBAIC0wLDAgKzEsNiBAQAorY2xhc3MgQXsKKyAgcHJpdmF0ZSBBIG15Q2xhc3NDb21ibzsKKyAgcHJvdGVjdGVkIHZvaWQgY3JlYXRlTm9ydGhQYW5lbCgpIHsKKyAgICAoKEEpbXk8Y2FyZXQ+KQorICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvQWZ0ZXJDb21tb25QcmVmaXguamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9BZnRlckNvbW1vblByZWZpeC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdmZDgxZGQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvQWZ0ZXJDb21tb25QcmVmaXguamF2YQpAQCAtMCwwICsxLDUgQEAKK3B1YmxpYyBjbGFzcyBTb21lQ2xhc3MgeworICB2b2lkIGZvbyhTdHJpbmcgcGFyYW0pIHsKKyAgICBpZiAocGFyYW0uPGNhcmV0PikKKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL0FmdGVyQ29tbW9uUHJlZml4X2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvQWZ0ZXJDb21tb25QcmVmaXhfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNjc0NWMzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL0FmdGVyQ29tbW9uUHJlZml4X2FmdGVyLmphdmEKQEAgLTAsMCArMSw1IEBACitwdWJsaWMgY2xhc3MgU29tZUNsYXNzIHsKKyAgdm9pZCBmb28oU3RyaW5nIHBhcmFtKSB7CisgICAgaWYgKHBhcmFtLmVxdWFscyg8Y2FyZXQ+KSkKKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL0FmdGVySW5zdGFuY2VvZi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL0FmdGVySW5zdGFuY2VvZi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMzMzRjNjEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvQWZ0ZXJJbnN0YW5jZW9mLmphdmEKQEAgLTAsMCArMSw1IEBACitjbGFzcyBBeworIHsKKyAgYm9vbGVhbiB4eHggPSB4eHggaW5zdGFuY2VvZiA8Y2FyZXQ+CisgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9BbGxBc3NlcnRDbGFzc2VzTWV0aG9kcy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL0FsbEFzc2VydENsYXNzZXNNZXRob2RzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjliNDI5YgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9BbGxBc3NlcnRDbGFzc2VzTWV0aG9kcy5qYXZhCkBAIC0wLDAgKzEsNSBAQAorY2xhc3MgRm9vIHsKKyAgeworICAgIGlmIChBc3NlcnQuPGNhcmV0PikKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9BbGxBc3NlcnRDbGFzc2VzTWV0aG9kc19hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL0FsbEFzc2VydENsYXNzZXNNZXRob2RzX2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTY1NzFmMgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9BbGxBc3NlcnRDbGFzc2VzTWV0aG9kc19hZnRlci5qYXZhCkBAIC0wLDAgKzEsNyBAQAoraW1wb3J0IGJhci5Bc3NlcnQ7CisKK2NsYXNzIEZvbyB7CisgIHsKKyAgICBpZiAoQXNzZXJ0LmJhcigpPGNhcmV0PikKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9BbGxDbGFzc2VzT25TZWNvbmRCYXNpY0NvbXBsZXRpb24uamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9BbGxDbGFzc2VzT25TZWNvbmRCYXNpY0NvbXBsZXRpb24uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ODgwMmU2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL0FsbENsYXNzZXNPblNlY29uZEJhc2ljQ29tcGxldGlvbi5qYXZhCkBAIC0wLDAgKzEsOSBAQAorY2xhc3MgQXlCeUN5RHlFeSB7fQorCitwdWJsaWMgY2xhc3MgRm9vIHsKKworICAgIHsKKyAgICAgICAgQUJDREU8Y2FyZXQ+CisgICAgfQorCit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvQWxsQ2xhc3Nlc1doZW5Ob3RoaW5nSXNGb3VuZC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL0FsbENsYXNzZXNXaGVuTm90aGluZ0lzRm91bmQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xY2FhZjE0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL0FsbENsYXNzZXNXaGVuTm90aGluZ0lzRm91bmQuamF2YQpAQCAtMCwwICsxLDcgQEAKK3B1YmxpYyBjbGFzcyBGb28geworCisgICAgeworICAgICAgICBBQkNERTxjYXJldD4KKyAgICB9CisKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9BbGxDbGFzc2VzV2hlbk5vdGhpbmdJc0ZvdW5kX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvQWxsQ2xhc3Nlc1doZW5Ob3RoaW5nSXNGb3VuZF9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZiNzdhNWMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvQWxsQ2xhc3Nlc1doZW5Ob3RoaW5nSXNGb3VuZF9hZnRlci5qYXZhCkBAIC0wLDAgKzEsOSBAQAoraW1wb3J0IGZvby5iYXIuQXhCeEN4RHhFeDsKKworcHVibGljIGNsYXNzIEZvbyB7CisKKyAgICB7CisgICAgICAgIEF4QnhDeER4RXg8Y2FyZXQ+CisgICAgfQorCit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvQW5ub1BhcmFtZXRlclZhbHVlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvQW5ub1BhcmFtZXRlclZhbHVlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjU2ZTZiOAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9Bbm5vUGFyYW1ldGVyVmFsdWUuamF2YQpAQCAtMCwwICsxLDMgQEAKK3B1YmxpYyBjbGFzcyBVdGlsIHsKKyAgQEZvbyh2YWw9PGNhcmV0Pikgdm9pZCBmb28oU3RyaW5nW10gYXJncykgeyB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvQW5ub3RhdGlvbi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL0Fubm90YXRpb24uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYWNlY2YyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL0Fubm90YXRpb24uamF2YQpAQCAtMCwwICsxLDcgQEAKK0BpbnRlcmZhY2UgTXlBbm5vdGF0aW9uIHsKKyAgT2JqZWN0IHZhbHVlKCk7CisgIFN0cmluZyBuYW1lKCk7Cit9CisKK0BNeUFubm90YXRpb24odjxjYXJldD4pIAorY2xhc3MgTXlDbGFzcyB7fQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9Bbm5vdGF0aW9uMi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL0Fubm90YXRpb24yLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzc4NGEyYgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9Bbm5vdGF0aW9uMi5qYXZhCkBAIC0wLDAgKzEsNyBAQAorQGludGVyZmFjZSBNeUFubm90YXRpb24geworICBPYmplY3QgdmFsdWUoKTsKKyAgU3RyaW5nIG5hbWUoKTsKK30KKworQE15QW5ub3RhdGlvbih2YWx1ZSA9IG51bGwsIG48Y2FyZXQ+KSAKK2NsYXNzIE15Q2xhc3Mge30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvQW5ub3RhdGlvbjJfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9Bbm5vdGF0aW9uMl9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ5OTY0YWQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvQW5ub3RhdGlvbjJfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDcgQEAKK0BpbnRlcmZhY2UgTXlBbm5vdGF0aW9uIHsKKyAgT2JqZWN0IHZhbHVlKCk7CisgIFN0cmluZyBuYW1lKCk7Cit9CisKK0BNeUFubm90YXRpb24odmFsdWUgPSBudWxsLCBuYW1lID0gPGNhcmV0PikgCitjbGFzcyBNeUNsYXNzIHt9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL0Fubm90YXRpb24zLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvQW5ub3RhdGlvbjMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MTRiODExCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL0Fubm90YXRpb24zLmphdmEKQEAgLTAsMCArMSw2IEBACitAaW50ZXJmYWNlIE15QW5ub3RhdGlvbiB7CisgIE9iamVjdCB2YWx1ZSgpOworfQorCitATXk8Y2FyZXQ+IAorY2xhc3MgTXlDbGFzcyB7fQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9Bbm5vdGF0aW9uM19hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL0Fubm90YXRpb24zX2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTQ1YTVhNgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9Bbm5vdGF0aW9uM19hZnRlci5qYXZhCkBAIC0wLDAgKzEsNiBAQAorQGludGVyZmFjZSBNeUFubm90YXRpb24geworICBPYmplY3QgdmFsdWUoKTsKK30KKworQE15QW5ub3RhdGlvbig8Y2FyZXQ+KSAKK2NsYXNzIE15Q2xhc3Mge30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvQW5ub3RhdGlvbjQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9Bbm5vdGF0aW9uNC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVmOWU4Y2QKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvQW5ub3RhdGlvbjQuamF2YQpAQCAtMCwwICsxLDE2IEBACitlbnVtIFNldHVwIHsKKyAgTk9ORSwKKyAgQ09OTkVDVElPTgorfQorCitAVGFyZ2V0KHZhbHVlID0gRWxlbWVudFR5cGUuTUVUSE9EKQorQFJldGVudGlvbihSZXRlbnRpb25Qb2xpY3kuUlVOVElNRSkKK3B1YmxpYyBAaW50ZXJmYWNlIFRlc3QgeworICBTZXR1cCBzZXR1cCgpOworfQorCitwdWJsaWMgY2xhc3MgQ2xpZW50IHsKKyAgQFRlc3Qoc2V0dXAgPSBTZXR1cC5DTzxjYXJldD4pCisgIHB1YmxpYyB2b2lkIHJ1bigpIHsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9Bbm5vdGF0aW9uNF9hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL0Fubm90YXRpb240X2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTA1OGNhNAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9Bbm5vdGF0aW9uNF9hZnRlci5qYXZhCkBAIC0wLDAgKzEsMTYgQEAKK2VudW0gU2V0dXAgeworICBOT05FLAorICBDT05ORUNUSU9OCit9CisKK0BUYXJnZXQodmFsdWUgPSBFbGVtZW50VHlwZS5NRVRIT0QpCitAUmV0ZW50aW9uKFJldGVudGlvblBvbGljeS5SVU5USU1FKQorcHVibGljIEBpbnRlcmZhY2UgVGVzdCB7CisgIFNldHVwIHNldHVwKCk7Cit9CisKK3B1YmxpYyBjbGFzcyBDbGllbnQgeworICBAVGVzdChzZXR1cCA9IFNldHVwLkNPTk5FQ1RJT048Y2FyZXQ+KQorICBwdWJsaWMgdm9pZCBydW4oKSB7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvQW5ub3RhdGlvbjUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9Bbm5vdGF0aW9uNS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYyZWJmNTcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvQW5ub3RhdGlvbjUuamF2YQpAQCAtMCwwICsxLDYgQEAKK0BpbnRlcmZhY2UgTXlBbm5vdGF0aW9uIHsKKyAgU3RyaW5nIGRvY3VtZW50YXRpb24oKSBkZWZhdWx0ICIiOworfQorCitATXk8Y2FyZXQ+CitjbGFzcyBNeUNsYXNzIHt9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL0Fubm90YXRpb241X2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvQW5ub3RhdGlvbjVfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNjNiY2UzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL0Fubm90YXRpb241X2FmdGVyLmphdmEKQEAgLTAsMCArMSw2IEBACitAaW50ZXJmYWNlIE15QW5ub3RhdGlvbiB7CisgIFN0cmluZyBkb2N1bWVudGF0aW9uKCkgZGVmYXVsdCAiIjsKK30KKworQE15QW5ub3RhdGlvbjxjYXJldD4KK2NsYXNzIE15Q2xhc3Mge30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvQW5ub3RhdGlvbjYuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9Bbm5vdGF0aW9uNi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYwYWRlZTIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvQW5ub3RhdGlvbjYuamF2YQpAQCAtMCwwICsxLDcgQEAKK0BpbnRlcmZhY2UgTXlBbm5vdGF0aW9uIHsKKyAgaW50IHZhbHVlKCk7CisgIFN0cmluZyBuYW1lKCk7Cit9CisKK0BNeUFubm90YXRpb24odmFsdWUgPSAwLCBuPGNhcmV0PikKK2NsYXNzIE15Q2xhc3Mge30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvQW5ub3RhdGlvbjZfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9Bbm5vdGF0aW9uNl9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjliMDQ0YTIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvQW5ub3RhdGlvbjZfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDcgQEAKK0BpbnRlcmZhY2UgTXlBbm5vdGF0aW9uIHsKKyAgaW50IHZhbHVlKCk7CisgIFN0cmluZyBuYW1lKCk7Cit9CisKK0BNeUFubm90YXRpb24odmFsdWUgPSAwLCBuYW1lID0gPGNhcmV0PikKK2NsYXNzIE15Q2xhc3Mge30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvQW5ub3RhdGlvbjcuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9Bbm5vdGF0aW9uNy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlhNmMzMzIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvQW5ub3RhdGlvbjcuamF2YQpAQCAtMCwwICsxLDYgQEAKK0BpbnRlcmZhY2UgTXlBbm5vdGF0aW9uIHsKKyAgQ2xhc3MgdmFsdWUoKTsKK30KKworQE15QW5ub3RhdGlvbig8Y2FyZXQ+QS5jbGFzcykKK2NsYXNzIE15Q2xhc3Mge30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvQW5ub3RhdGlvbjdfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9Bbm5vdGF0aW9uN19hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJkYWIwZWQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvQW5ub3RhdGlvbjdfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDYgQEAKK0BpbnRlcmZhY2UgTXlBbm5vdGF0aW9uIHsKKyAgQ2xhc3MgdmFsdWUoKTsKK30KKworQE15QW5ub3RhdGlvbih2YWx1ZSA9IDxjYXJldD5BLmNsYXNzKQorY2xhc3MgTXlDbGFzcyB7fQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9Bbm5vdGF0aW9uQXNVc3VhbE9iamVjdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL0Fubm90YXRpb25Bc1VzdWFsT2JqZWN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTcxMGRjNAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9Bbm5vdGF0aW9uQXNVc3VhbE9iamVjdC5qYXZhCkBAIC0wLDAgKzEsMTIgQEAKK0BpbnRlcmZhY2UgTXlBbm5vIHsKKyAgU3RyaW5nIHh4eCgpOworICBTdHJpbmcgeXl5KCk7Cit9CisKK3B1YmxpYyBjbGFzcyBNeUZpcnN0VGVzdENsYXNzRm9vIHsKKworICAgIHsKKyAgICAgICBNeUFuPGNhcmV0PgorICAgIH0KKworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9Bbm5vdGF0aW9uQXNVc3VhbE9iamVjdEZyb21KYXZhZG9jLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvQW5ub3RhdGlvbkFzVXN1YWxPYmplY3RGcm9tSmF2YWRvYy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZhYzkxZTcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvQW5ub3RhdGlvbkFzVXN1YWxPYmplY3RGcm9tSmF2YWRvYy5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKK0BpbnRlcmZhY2UgTXlBbm5vIHsKKyAgU3RyaW5nIHh4eCgpOworICBTdHJpbmcgeXl5KCk7Cit9CisKKy8qKgorKiBAc2VlIE15QW48Y2FyZXQ+CisqLworcHVibGljIGNsYXNzIE15Rmlyc3RUZXN0Q2xhc3NGb28geworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9Bbm5vdGF0aW9uQXNVc3VhbE9iamVjdEZyb21KYXZhZG9jX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvQW5ub3RhdGlvbkFzVXN1YWxPYmplY3RGcm9tSmF2YWRvY19hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgwZjE5NzllCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL0Fubm90YXRpb25Bc1VzdWFsT2JqZWN0RnJvbUphdmFkb2NfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDEwIEBACitAaW50ZXJmYWNlIE15QW5ubyB7CisgIFN0cmluZyB4eHgoKTsKKyAgU3RyaW5nIHl5eSgpOworfQorCisvKioKKyogQHNlZSBNeUFubm88Y2FyZXQ+CisqLworcHVibGljIGNsYXNzIE15Rmlyc3RUZXN0Q2xhc3NGb28geworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9Bbm5vdGF0aW9uQXNVc3VhbE9iamVjdEluc2lkZUNsYXNzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvQW5ub3RhdGlvbkFzVXN1YWxPYmplY3RJbnNpZGVDbGFzcy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU5ZDk0MTUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvQW5ub3RhdGlvbkFzVXN1YWxPYmplY3RJbnNpZGVDbGFzcy5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKK0BpbnRlcmZhY2UgTXlBbm5vIHsKKyAgU3RyaW5nIHh4eCgpOworICBTdHJpbmcgeXl5KCk7Cit9CisKK3B1YmxpYyBjbGFzcyBNeUZpcnN0VGVzdENsYXNzRm9vIHsKKworICAgICBNeUFuPGNhcmV0PgorCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL0Fubm90YXRpb25Bc1VzdWFsT2JqZWN0SW5zaWRlQ2xhc3NfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9Bbm5vdGF0aW9uQXNVc3VhbE9iamVjdEluc2lkZUNsYXNzX2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGI2NTQ3MgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9Bbm5vdGF0aW9uQXNVc3VhbE9iamVjdEluc2lkZUNsYXNzX2FmdGVyLmphdmEKQEAgLTAsMCArMSwxMCBAQAorQGludGVyZmFjZSBNeUFubm8geworICBTdHJpbmcgeHh4KCk7CisgIFN0cmluZyB5eXkoKTsKK30KKworcHVibGljIGNsYXNzIE15Rmlyc3RUZXN0Q2xhc3NGb28geworCisgICAgIE15QW5ubzxjYXJldD4KKworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9Bbm5vdGF0aW9uQXNVc3VhbE9iamVjdF9hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL0Fubm90YXRpb25Bc1VzdWFsT2JqZWN0X2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmIwNWEzYwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9Bbm5vdGF0aW9uQXNVc3VhbE9iamVjdF9hZnRlci5qYXZhCkBAIC0wLDAgKzEsMTIgQEAKK0BpbnRlcmZhY2UgTXlBbm5vIHsKKyAgU3RyaW5nIHh4eCgpOworICBTdHJpbmcgeXl5KCk7Cit9CisKK3B1YmxpYyBjbGFzcyBNeUZpcnN0VGVzdENsYXNzRm9vIHsKKworICAgIHsKKyAgICAgICBNeUFubm88Y2FyZXQ+CisgICAgfQorCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL0Fubm90YXRpb25DbGFzc0Zyb21XaXRoaW5Bbm5vdGF0aW9uLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvQW5ub3RhdGlvbkNsYXNzRnJvbVdpdGhpbkFubm90YXRpb24uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YTU1Y2Y4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL0Fubm90YXRpb25DbGFzc0Zyb21XaXRoaW5Bbm5vdGF0aW9uLmphdmEKQEAgLTAsMCArMSw4IEBACitwdWJsaWMgQGludGVyZmFjZSBFeGFtcGxlIHsKKworICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBGT08gPSAiZm9vIiwgQkFSID0gImJhciI7CisKKyAgU3RyaW5nIHZhbHVlKCk7Cit9CisKK0BFeGFtcGxlKEV4YW08Y2FyZXQ+KQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9Bbm5vdGF0aW9uQ2xhc3NGcm9tV2l0aGluQW5ub3RhdGlvbl9hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL0Fubm90YXRpb25DbGFzc0Zyb21XaXRoaW5Bbm5vdGF0aW9uX2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWE1NTIzNwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9Bbm5vdGF0aW9uQ2xhc3NGcm9tV2l0aGluQW5ub3RhdGlvbl9hZnRlci5qYXZhCkBAIC0wLDAgKzEsOCBAQAorcHVibGljIEBpbnRlcmZhY2UgRXhhbXBsZSB7CisKKyAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgRk9PID0gImZvbyIsIEJBUiA9ICJiYXIiOworCisgIFN0cmluZyB2YWx1ZSgpOworfQorCitARXhhbXBsZShFeGFtcGxlPGNhcmV0PikKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvQW5ub3RhdGlvbk9uTm90aGluZ1BhcmVucy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL0Fubm90YXRpb25Pbk5vdGhpbmdQYXJlbnMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NjdiMjFlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL0Fubm90YXRpb25Pbk5vdGhpbmdQYXJlbnMuamF2YQpAQCAtMCwwICsxLDEwIEBACitAaW50ZXJmYWNlIE15QW5ubyB7CisgIFN0cmluZyB4eHgoKTsKKyAgU3RyaW5nIHl5eSgpOworfQorCitwdWJsaWMgY2xhc3MgTXlGaXJzdFRlc3RDbGFzc0ZvbyB7CisKKyAgICBATXlBbjxjYXJldD4KKworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9Bbm5vdGF0aW9uT25Ob3RoaW5nUGFyZW5zX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvQW5ub3RhdGlvbk9uTm90aGluZ1BhcmVuc19hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBjOTY2NWUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvQW5ub3RhdGlvbk9uTm90aGluZ1BhcmVuc19hZnRlci5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKK0BpbnRlcmZhY2UgTXlBbm5vIHsKKyAgU3RyaW5nIHh4eCgpOworICBTdHJpbmcgeXl5KCk7Cit9CisKK3B1YmxpYyBjbGFzcyBNeUZpcnN0VGVzdENsYXNzRm9vIHsKKworICAgIEBNeUFubm8oPGNhcmV0PikKKworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9Bbm5vdGF0aW9uUXVhbGlmaWVkTmFtZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL0Fubm90YXRpb25RdWFsaWZpZWROYW1lLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGEwNjgzMwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9Bbm5vdGF0aW9uUXVhbGlmaWVkTmFtZS5qYXZhCkBAIC0wLDAgKzEsMyBAQAorQGphdmEubGE8Y2FyZXQ+CitjbGFzcyBGb28geworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9Bbm5vdGF0aW9uUXVhbGlmaWVkTmFtZV9hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL0Fubm90YXRpb25RdWFsaWZpZWROYW1lX2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYThiMzNlYgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9Bbm5vdGF0aW9uUXVhbGlmaWVkTmFtZV9hZnRlci5qYXZhCkBAIC0wLDAgKzEsMyBAQAorQGphdmEubGFuZy48Y2FyZXQ+CitjbGFzcyBGb28geworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9Bbm5vdGF0aW9uV2l0aG91dFZhbHVlTWV0aG9kLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvQW5ub3RhdGlvbldpdGhvdXRWYWx1ZU1ldGhvZC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdjZDdkNGMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvQW5ub3RhdGlvbldpdGhvdXRWYWx1ZU1ldGhvZC5qYXZhCkBAIC0wLDAgKzEsNyBAQAorQGludGVyZmFjZSBBbm5vIHsKKyAgU3RyaW5nIGZvbygpOworICBTdHJpbmcgYmFyKCk7Cit9CisKK0BBbm5vKDxjYXJldD4pCitjbGFzcyBGb28ge30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvQW5ub3RhdGlvbl9hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL0Fubm90YXRpb25fYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNTYyYWQzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL0Fubm90YXRpb25fYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDcgQEAKK0BpbnRlcmZhY2UgTXlBbm5vdGF0aW9uIHsKKyAgT2JqZWN0IHZhbHVlKCk7CisgIFN0cmluZyBuYW1lKCk7Cit9CisKK0BNeUFubm90YXRpb24odmFsdWUgPSA8Y2FyZXQ+KSAKK2NsYXNzIE15Q2xhc3Mge30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvQW5vbnltb3VzUHJvY2Vzcy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL0Fub255bW91c1Byb2Nlc3MuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45YjVhYTZjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL0Fub255bW91c1Byb2Nlc3MuamF2YQpAQCAtMCwwICsxLDggQEAKK2ltcG9ydCBqYXZhLnV0aWwuKjsKKworcHVibGljIGNsYXNzIFJ1bm5lciB7CisgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKKyAgICBMaXN0PFByb2Nlc3M+IHNyYzsKKyAgICBMaXN0PFByb2Nlc3M+IGRlc3QgPSBMaXN0VXRpbHMuZmlsdGVyKHNyYywgbmV3IDxjYXJldD4pOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL0Fub255bW91c1Byb2Nlc3NfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9Bbm9ueW1vdXNQcm9jZXNzX2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjUzMmJjMQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9Bbm9ueW1vdXNQcm9jZXNzX2FmdGVyLmphdmEKQEAgLTAsMCArMSwxMyBAQAoraW1wb3J0IGphdmEudXRpbC4qOworCitwdWJsaWMgY2xhc3MgUnVubmVyIHsKKyAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgeworICAgIExpc3Q8UHJvY2Vzcz4gc3JjOworICAgIExpc3Q8UHJvY2Vzcz4gZGVzdCA9IExpc3RVdGlscy5maWx0ZXIoc3JjLCBuZXcgUHJlZDxQcm9jZXNzPigpIHsKKyAgICAgICAgQE92ZXJyaWRlCisgICAgICAgIHB1YmxpYyBib29sZWFuIHByZWRpY2F0ZShQcm9jZXNzIGVsZW0pIHsKKyAgICAgICAgICAgIDxzZWxlY3Rpb24+PGNhcmV0PnJldHVybiBmYWxzZTsgIC8vVG8gY2hhbmdlIGJvZHkgb2YgaW1wbGVtZW50ZWQgbWV0aG9kcyB1c2UgRmlsZSB8IFNldHRpbmdzIHwgRmlsZSBUZW1wbGF0ZXMuPC9zZWxlY3Rpb24+CisgICAgICAgIH0KKyAgICB9KTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9Bbm9ueW1vdXNUeXBlUGFyYW1ldGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvQW5vbnltb3VzVHlwZVBhcmFtZXRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVmM2RmNDUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvQW5vbnltb3VzVHlwZVBhcmFtZXRlci5qYXZhCkBAIC0wLDAgKzEsMTMgQEAKK3B1YmxpYyBjbGFzcyBVdGlsIHsKKworICBwdWJsaWMgc3RhdGljIDxULFY+IExpc3Q8Vj4gbWFwKEBOb3ROdWxsIEZ1bmN0aW9uPFQsIFY+IG1hcHBpbmcpIHsgfQorCisgIHB1YmxpYyBPYmplY3RbXSBnZXRWYXJpYW50cygpIHsKKyAgICByZXR1cm4gbWFwKG5ldyBGdW5jdGlvbjxPYmplY3QsIEFJT088Y2FyZXQ+PigpIHsgfQorICB9CisKKworfQoraW50ZXJmYWNlIEZ1bmN0aW9uPFBhcmFtLCBSZXN1bHQ+IHsKKyAgUmVzdWx0IGZ1bihQYXJhbSBwYXJhbSk7Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvQW5vbnltb3VzVHlwZVBhcmFtZXRlcl9hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL0Fub255bW91c1R5cGVQYXJhbWV0ZXJfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMWYwMDJiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL0Fub255bW91c1R5cGVQYXJhbWV0ZXJfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDEzIEBACitwdWJsaWMgY2xhc3MgVXRpbCB7CisKKyAgcHVibGljIHN0YXRpYyA8VCxWPiBMaXN0PFY+IG1hcChATm90TnVsbCBGdW5jdGlvbjxULCBWPiBtYXBwaW5nKSB7IH0KKworICBwdWJsaWMgT2JqZWN0W10gZ2V0VmFyaWFudHMoKSB7CisgICAgcmV0dXJuIG1hcChuZXcgRnVuY3Rpb248T2JqZWN0LCBBcnJheUluZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb248Y2FyZXQ+PigpIHsgfQorICB9CisKKworfQoraW50ZXJmYWNlIEZ1bmN0aW9uPFBhcmFtLCBSZXN1bHQ+IHsKKyAgUmVzdWx0IGZ1bihQYXJhbSBwYXJhbSk7Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvQXNzaWduaW5nRmllbGRGb3JUaGVGaXJzdFRpbWUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9Bc3NpZ25pbmdGaWVsZEZvclRoZUZpcnN0VGltZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI4NTMwNjQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvQXNzaWduaW5nRmllbGRGb3JUaGVGaXJzdFRpbWUuamF2YQpAQCAtMCwwICsxLDYgQEAKK2NsYXNzIEEgeworICBmaW5hbCBib29sZWFuIGFib287CisgIEEoKSB7CisgICAgYWJvPGNhcmV0PgorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL0Fzc2lnbmluZ0ZpZWxkRm9yVGhlRmlyc3RUaW1lX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvQXNzaWduaW5nRmllbGRGb3JUaGVGaXJzdFRpbWVfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMzU1ZTcwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL0Fzc2lnbmluZ0ZpZWxkRm9yVGhlRmlyc3RUaW1lX2FmdGVyLmphdmEKQEAgLTAsMCArMSw2IEBACitjbGFzcyBBIHsKKyAgZmluYWwgYm9vbGVhbiBhYm9vOworICBBKCkgeworICAgIGFib288Y2FyZXQ+CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvQXRVbmRlckNsYXNzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvQXRVbmRlckNsYXNzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTExMDljMwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9BdFVuZGVyQ2xhc3MuamF2YQpAQCAtMCwwICsxLDMgQEAKK3B1YmxpYyBjbGFzcyBNYWluIHsKK0BpbjxjYXJldD4KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvQXRVbmRlckNsYXNzTm9Nb2RpZmllcnMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9BdFVuZGVyQ2xhc3NOb01vZGlmaWVycy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRiOTc2NmMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvQXRVbmRlckNsYXNzTm9Nb2RpZmllcnMuamF2YQpAQCAtMCwwICsxLDMgQEAKK3B1YmxpYyBjbGFzcyBNYWluIHsKK0BhYjxjYXJldD4KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvQXRVbmRlckNsYXNzTm9Nb2RpZmllcnNfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9BdFVuZGVyQ2xhc3NOb01vZGlmaWVyc19hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRiOTc2NmMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvQXRVbmRlckNsYXNzTm9Nb2RpZmllcnNfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDMgQEAKK3B1YmxpYyBjbGFzcyBNYWluIHsKK0BhYjxjYXJldD4KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvQXRVbmRlckNsYXNzX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvQXRVbmRlckNsYXNzX2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjJjNGM4OQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9BdFVuZGVyQ2xhc3NfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDMgQEAKK3B1YmxpYyBjbGFzcyBNYWluIHsKK0BpbnRlcmZhY2UgPGNhcmV0PgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9CZWZvcmVJbml0aWFsaXphdGlvbi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL0JlZm9yZUluaXRpYWxpemF0aW9uLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTc3Yzc2YgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9CZWZvcmVJbml0aWFsaXphdGlvbi5qYXZhCkBAIC0wLDAgKzEsNyBAQAorY2xhc3MgQXsKK3sKK0ludGVnZXIgaTsKK2kuPGNhcmV0PgoraTsKK30KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvQm9vbGVhbkxpdGVyYWxzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvQm9vbGVhbkxpdGVyYWxzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2NjOWViYgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9Cb29sZWFuTGl0ZXJhbHMuamF2YQpAQCAtMCwwICsxLDYgQEAKK3B1YmxpYyBjbGFzcyBNYWluIHsKKworICB7CisgICAgZXF1YWxzKHRyPGNhcmV0PikKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9Cb29sZWFuTGl0ZXJhbHNfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9Cb29sZWFuTGl0ZXJhbHNfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NTRlNTExCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL0Jvb2xlYW5MaXRlcmFsc19hZnRlci5qYXZhCkBAIC0wLDAgKzEsNiBAQAorcHVibGljIGNsYXNzIE1haW4geworCisgIHsKKyAgICBlcXVhbHModHJ1ZTxjYXJldD4pCisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvQnJlYWtJbklmQ29uZGl0aW9uLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvQnJlYWtJbklmQ29uZGl0aW9uLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjFjZGY1MAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9CcmVha0luSWZDb25kaXRpb24uamF2YQpAQCAtMCwwICsxLDYgQEAKK3B1YmxpYyBjbGFzcyBNYWluIHsKKyAgeworICAgIHdoaWxlKHRydWUpCisgICAgICBpZiAoY29uZCkgYnI8Y2FyZXQ+CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvQnJlYWtJbklmQ29uZGl0aW9uX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvQnJlYWtJbklmQ29uZGl0aW9uX2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMThkYTBjMwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9CcmVha0luSWZDb25kaXRpb25fYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDYgQEAKK3B1YmxpYyBjbGFzcyBNYWluIHsKKyAgeworICAgIHdoaWxlKHRydWUpCisgICAgICBpZiAoY29uZCkgYnJlYWs7PGNhcmV0PgorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL0JyZWFrSW5Td2l0Y2guamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9CcmVha0luU3dpdGNoLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2QyZDdiYgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9CcmVha0luU3dpdGNoLmphdmEKQEAgLTAsMCArMSw5IEBACitwdWJsaWMgY2xhc3MgQ29uc3RDb25maWcgeworICAgIHsKKyAgICAgIHN3aXRjaCAoeCkgeworICAgICAgICBjYXNlIDE6CisgICAgICAgICAgcHJpbnRsbigxKTsKKyAgICAgICAgICBicmVhPGNhcmV0PgorICAgICAgfQorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvQnJlYWtJblN3aXRjaF9hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL0JyZWFrSW5Td2l0Y2hfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMTMyOTNlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL0JyZWFrSW5Td2l0Y2hfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDkgQEAKK3B1YmxpYyBjbGFzcyBDb25zdENvbmZpZyB7CisgICAgeworICAgICAgc3dpdGNoICh4KSB7CisgICAgICAgIGNhc2UgMToKKyAgICAgICAgICBwcmludGxuKDEpOworICAgICAgICAgIGJyZWFrOzxjYXJldD4KKyAgICAgIH0KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL0Nhc2VUYWlsVHlwZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL0Nhc2VUYWlsVHlwZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdlNGM4ZTkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvQ2FzZVRhaWxUeXBlLmphdmEKQEAgLTAsMCArMSwxMyBAQAorcHVibGljIGNsYXNzIEZvb29vIHsKKworICAgIHsKKyAgICAgICAgWHh4IGE7CisgICAgICAgIHN3aXRjaCAoYSkgeworICAgICAgICAgICAgY2FzZSBGPGNhcmV0PgorICAgICAgICB9CisgICAgfQorCisgICAgZW51bSBYeHggeworICAgICAgICBGT08sIEJBUgorICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9DYXNlVGFpbFR5cGVfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9DYXNlVGFpbFR5cGVfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMDE4ZWVhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL0Nhc2VUYWlsVHlwZV9hZnRlci5qYXZhCkBAIC0wLDAgKzEsMTMgQEAKK3B1YmxpYyBjbGFzcyBGb29vbyB7CisKKyAgICB7CisgICAgICAgIFh4eCBhOworICAgICAgICBzd2l0Y2ggKGEpIHsKKyAgICAgICAgICAgIGNhc2UgRk9POjxjYXJldD4KKyAgICAgICAgfQorICAgIH0KKworICAgIGVudW0gWHh4IHsKKyAgICAgICAgRk9PLCBCQVIKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvQ2FzdENvbXBsZXhJbnN0YW5jZW9mZWRRdWFsaWZpZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9DYXN0Q29tcGxleEluc3RhbmNlb2ZlZFF1YWxpZmllci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUxOTQ2ZTMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvQ2FzdENvbXBsZXhJbnN0YW5jZW9mZWRRdWFsaWZpZXIuamF2YQpAQCAtMCwwICsxLDExIEBACitwdWJsaWMgY2xhc3MgQWFhYWFhYSB7CisKKyAgICBPYmplY3QgZm9vKCkge30KKworICAgIHZvaWQgYmFyKCkgeworICAgICAgICBpZiAoZm9vKCkgaW5zdGFuY2VvZiBTdHJpbmcpIHsKKyAgICAgICAgICAgIGZvbygpLnN1YnN0cjxjYXJldD4KKyAgICAgICAgfQorICAgIH0KKworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL0Nhc3RDb21wbGV4SW5zdGFuY2VvZmVkUXVhbGlmaWVyX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvQ2FzdENvbXBsZXhJbnN0YW5jZW9mZWRRdWFsaWZpZXJfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYmNiY2E1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL0Nhc3RDb21wbGV4SW5zdGFuY2VvZmVkUXVhbGlmaWVyX2FmdGVyLmphdmEKQEAgLTAsMCArMSwxMSBAQAorcHVibGljIGNsYXNzIEFhYWFhYWEgeworCisgICAgT2JqZWN0IGZvbygpIHt9CisKKyAgICB2b2lkIGJhcigpIHsKKyAgICAgICAgaWYgKGZvbygpIGluc3RhbmNlb2YgU3RyaW5nKSB7CisgICAgICAgICAgICAoKFN0cmluZykgZm9vKCkpLnN1YnN0cmluZyg8Y2FyZXQ+KQorICAgICAgICB9CisgICAgfQorCit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvQ2FzdEluc3RhbmNlb2ZlZFF1YWxpZmllci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL0Nhc3RJbnN0YW5jZW9mZWRRdWFsaWZpZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YTVhZjZiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL0Nhc3RJbnN0YW5jZW9mZWRRdWFsaWZpZXIuamF2YQpAQCAtMCwwICsxLDEwIEBACitwdWJsaWMgYWJzdHJhY3QgY2xhc3MgWnp6YSB7CisKKyAgICB2b2lkIGZvbyhPYmplY3QgbykgeworICAgICAgaWYgKG8gaW5zdGFuY2VvZiBTdHJpbmcpIHsKKyAgICAgICAgby5zdWJzdHI8Y2FyZXQ+CisgICAgICB9CisgICAgfQorCisKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvQ2FzdEluc3RhbmNlb2ZlZFF1YWxpZmllckluRm9yZWFjaC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL0Nhc3RJbnN0YW5jZW9mZWRRdWFsaWZpZXJJbkZvcmVhY2guamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45YWNmNmEwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL0Nhc3RJbnN0YW5jZW9mZWRRdWFsaWZpZXJJbkZvcmVhY2guamF2YQpAQCAtMCwwICsxLDEyIEBACitwdWJsaWMgYWJzdHJhY3QgY2xhc3MgWnp6YSB7CisKKyAgICB2b2lkIGZvbyhPYmplY3QgbykgeworICAgICAgaWYgKG8gaW5zdGFuY2VvZiBTdHJpbmcpIHsKKyAgICAgICAgZm9yIChqYXZhLmxhbmcuT2JqZWN0ICA6IG8uc3Vic3RyPGNhcmV0PikgeworCisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9CisKKworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9DYXN0SW5zdGFuY2VvZmVkUXVhbGlmaWVySW5Gb3JlYWNoX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvQ2FzdEluc3RhbmNlb2ZlZFF1YWxpZmllckluRm9yZWFjaF9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVmMzc1NWEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvQ2FzdEluc3RhbmNlb2ZlZFF1YWxpZmllckluRm9yZWFjaF9hZnRlci5qYXZhCkBAIC0wLDAgKzEsMTIgQEAKK3B1YmxpYyBhYnN0cmFjdCBjbGFzcyBaenphIHsKKworICAgIHZvaWQgZm9vKE9iamVjdCBvKSB7CisgICAgICBpZiAobyBpbnN0YW5jZW9mIFN0cmluZykgeworICAgICAgICBmb3IgKGphdmEubGFuZy5PYmplY3QgIDogKChTdHJpbmcpIG8pLnN1YnN0cmluZyg8Y2FyZXQ+KSkgeworCisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9CisKKworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9DYXN0SW5zdGFuY2VvZmVkUXVhbGlmaWVyX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvQ2FzdEluc3RhbmNlb2ZlZFF1YWxpZmllcl9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA2NGZhNzkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvQ2FzdEluc3RhbmNlb2ZlZFF1YWxpZmllcl9hZnRlci5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKK3B1YmxpYyBhYnN0cmFjdCBjbGFzcyBaenphIHsKKworICAgIHZvaWQgZm9vKE9iamVjdCBvKSB7CisgICAgICBpZiAobyBpbnN0YW5jZW9mIFN0cmluZykgeworICAgICAgICAoKFN0cmluZykgbykuc3Vic3RyaW5nKDxjYXJldD4pCisgICAgICB9CisgICAgfQorCisKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvQ2FzdFRvUHJpbWl0aXZlMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL0Nhc3RUb1ByaW1pdGl2ZTEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYTZjNjA3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL0Nhc3RUb1ByaW1pdGl2ZTEuamF2YQpAQCAtMCwwICsxLDYgQEAKK2NsYXNzIEF7CisgIHsKKyAgICBsb25nIHp6eiA9IDA7CisgICAgaW50IGFzZCA9ICg8Y2FyZXQ+KXp6egorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL0Nhc3RUb1ByaW1pdGl2ZTIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9DYXN0VG9QcmltaXRpdmUyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzQ3NmIwOQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9DYXN0VG9QcmltaXRpdmUyLmphdmEKQEAgLTAsMCArMSw2IEBACitjbGFzcyBBeworICB7CisgICAgbG9uZyB6enogPSAwOworICAgIGludCBhc2QgPSAoPGNhcmV0PikKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9DYXN0VG9QcmltaXRpdmUzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvQ2FzdFRvUHJpbWl0aXZlMy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE0ODY3YWIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvQ2FzdFRvUHJpbWl0aXZlMy5qYXZhCkBAIC0wLDAgKzEsNiBAQAorY2xhc3MgQXsKKyAgeworICAgIGxvbmcgenp6ID0gMDsKKyAgICBpbnQgYXNkID0gKDxjYXJldD4KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9DYXN0VG9vQ29tcGxleEluc3RhbmNlb2ZlZFF1YWxpZmllci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL0Nhc3RUb29Db21wbGV4SW5zdGFuY2VvZmVkUXVhbGlmaWVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTdlMzhiMQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9DYXN0VG9vQ29tcGxleEluc3RhbmNlb2ZlZFF1YWxpZmllci5qYXZhCkBAIC0wLDAgKzEsNzMgQEAKK3B1YmxpYyBjbGFzcyBBYWFhYWFhIHsKKworICAgIE9iamVjdCBmb28oKSB7CisgICAgICAgIHJldHVybiBudWxsOworICAgIH0KKworICAgIE9iamVjdCBmb29iYXIoKSB7CisgICAgICAgIHJldHVybiBudWxsOworICAgIH0KKworICAgIHZvaWQgYmFyKCkgeworICAgICAgICB0cnkgeworCisgICAgICAgICAgICBpZiAoZm9vKCkgaW5zdGFuY2VvZiBTdHJpbmcpIHsKKyAgICAgICAgICAgICAgICAvL2ZvbygpLnMKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZvb2JhcigpIGluc3RhbmNlb2YgU3RyaW5nKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICBmb29iYXIoKS5zdWJzdHI8Y2FyZXQ+CisgICAgICAgICAgICAgICAgICAgICAgICB9IGZpbmFsbHkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiIik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCIiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0gZmluYWxseSB7CisgICAgICAgICAgICAgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmb28oKSBpbnN0YW5jZW9mIFN0cmluZykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCIiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZmluYWxseSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIiIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCIiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIiIpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfSBmaW5hbGx5IHsKKyAgICAgICAgICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiIik7CisgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIiIpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBmaW5hbGx5IHsKKyAgICAgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIiIpOworICAgICAgICAgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiIik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgIH0gZmluYWxseSB7CisgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiIik7CisgICAgICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiIik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9DYXN0VmlzdWFsbHkuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9DYXN0VmlzdWFsbHkuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xN2QzMGE3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL0Nhc3RWaXN1YWxseS5qYXZhCkBAIC0wLDAgKzEsMTQgQEAKK2ltcG9ydCBqYXZhLmxhbmcuT2JqZWN0OworCitjbGFzcyBJRm9vIHsKKyAgT2JqZWN0IGdldFZhbHVlKCkge30KK30KKworY2xhc3MgRm9vIGV4dGVuZHMgSUZvbyB7CisgIEZvbyBnZXRWYWx1ZSgpIHt9CisgIHZvaWQgZm9vKElGb28gbykgeworICAgIGlmIChvIGluc3RhbmNlb2YgRm9vKSB7CisgICAgICBvLmdldHY8Y2FyZXQ+eAorICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9DaGFpbmVkQ2FsbE9uTmV4dExpbmUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9DaGFpbmVkQ2FsbE9uTmV4dExpbmUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zY2U5ZDI3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL0NoYWluZWRDYWxsT25OZXh0TGluZS5qYXZhCkBAIC0wLDAgKzEsNSBAQAorY2xhc3MgRm9vIHsKKyAgICBpbnQgYSA9IG5ldyBGb28oKS4KKyAgICB0PGNhcmV0PmEoKS5sZW5ndGgoKS4gLi4gCisKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9DaGFpbmVkQ2FsbE9uTmV4dExpbmVfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9DaGFpbmVkQ2FsbE9uTmV4dExpbmVfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kOTAxMzMxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL0NoYWluZWRDYWxsT25OZXh0TGluZV9hZnRlci5qYXZhCkBAIC0wLDAgKzEsNSBAQAorY2xhc3MgRm9vIHsKKyAgICBpbnQgYSA9IG5ldyBGb28oKS4KKyAgICB0b1N0cmluZygpPGNhcmV0PmEoKS5sZW5ndGgoKS4gLi4gCisKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9DbGFzc0FuZ2xlQnJhY2tldC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL0NsYXNzQW5nbGVCcmFja2V0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODlmZmYzYQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9DbGFzc0FuZ2xlQnJhY2tldC5qYXZhCkBAIC0wLDAgKzEsNiBAQAorY2xhc3MgQWJjZENsYXNzIHt9CitjbGFzcyBBYmNkZUNsYXNzIHt9CisKK2NsYXNzIEZvbyB7CisgIEFiY2Q8Y2FyZXQ+Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL0NsYXNzQW5nbGVCcmFja2V0X2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvQ2xhc3NBbmdsZUJyYWNrZXRfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYjNkYzg0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL0NsYXNzQW5nbGVCcmFja2V0X2FmdGVyLmphdmEKQEAgLTAsMCArMSw2IEBACitjbGFzcyBBYmNkQ2xhc3Mge30KK2NsYXNzIEFiY2RlQ2xhc3Mge30KKworY2xhc3MgRm9vIHsKKyAgQWJjZENsYXNzPDxjYXJldD4+Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL0NsYXNzQmVmb3JlQ2FzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL0NsYXNzQmVmb3JlQ2FzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI0YzkzNjkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvQ2xhc3NCZWZvcmVDYXN0LmphdmEKQEAgLTAsMCArMSw2IEBACitwdWJsaWMgY2xhc3MgRm9vIHsKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgZnBwKE9iamVjdCBvKSB7CisgICAgICAgIEZpbGVJbnBTdDxjYXJldD4KKyAgICAgICAgKChPYmplY3QpIG8pLm5vdGlmeSgpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9DbGFzc0JlZm9yZUNhc3RfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9DbGFzc0JlZm9yZUNhc3RfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YmU0NGQ4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL0NsYXNzQmVmb3JlQ2FzdF9hZnRlci5qYXZhCkBAIC0wLDAgKzEsOCBAQAoraW1wb3J0IGphdmEuaW8uRmlsZUlucHV0U3RyZWFtOworCitwdWJsaWMgY2xhc3MgRm9vIHsKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgZnBwKE9iamVjdCBvKSB7CisgICAgICAgIEZpbGVJbnB1dFN0cmVhbTxjYXJldD4KKyAgICAgICAgKChPYmplY3QpIG8pLm5vdGlmeSgpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9DbGFzc0xpdGVyYWxJbkFubm9QYXJhbS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL0NsYXNzTGl0ZXJhbEluQW5ub1BhcmFtLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDUwYWRhNQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9DbGFzc0xpdGVyYWxJbkFubm9QYXJhbS5qYXZhCkBAIC0wLDAgKzEsNyBAQAorQEFubm8oU3RyaW5nLmNsYTxjYXJldD4pCitwdWJsaWMgY2xhc3MgTWFpbiB7Cit9CisKK0BpbnRlcmZhY2UgQW5ubyB7CisgIENsYXNzIHZhbHVlKCk7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL0NsYXNzTGl0ZXJhbEluQW5ub1BhcmFtX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvQ2xhc3NMaXRlcmFsSW5Bbm5vUGFyYW1fYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNmQ2YjUyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL0NsYXNzTGl0ZXJhbEluQW5ub1BhcmFtX2FmdGVyLmphdmEKQEAgLTAsMCArMSw3IEBACitAQW5ubyhTdHJpbmcuY2xhc3M8Y2FyZXQ+KQorcHVibGljIGNsYXNzIE1haW4geworfQorCitAaW50ZXJmYWNlIEFubm8geworICBDbGFzcyB2YWx1ZSgpOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9DbGFzc0xpdGVyYWxJbkFycmF5QW5ub0luaXRpYWxpemVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvQ2xhc3NMaXRlcmFsSW5BcnJheUFubm9Jbml0aWFsaXplci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE1MjQ3NmQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvQ2xhc3NMaXRlcmFsSW5BcnJheUFubm9Jbml0aWFsaXplci5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKK0BpbnRlcmZhY2UgVGVzdEZvciB7CisgIENsYXNzW10gdGVzdEZvckNsYXNzKCk7Cit9CisKK2NsYXNzIEZvbyB7CisgIEBUZXN0Rm9yKHRlc3RGb3JDbGFzcyA9IHsgQWFhYWFhPGNhcmV0PiB9ICkKKyAgcHVibGljIHZvaWQgZm9vMjIoKSB7fQorfQorCitjbGFzcyBBYWFhYWFhYWFhYWFhYWFhYWFhYWEge30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvQ2xhc3NMaXRlcmFsSW5BcnJheUFubm9Jbml0aWFsaXplcjIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9DbGFzc0xpdGVyYWxJbkFycmF5QW5ub0luaXRpYWxpemVyMi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJlNTcxZTQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvQ2xhc3NMaXRlcmFsSW5BcnJheUFubm9Jbml0aWFsaXplcjIuamF2YQpAQCAtMCwwICsxLDEwIEBACitAaW50ZXJmYWNlIFRlc3RGb3IgeworICBDbGFzc1tdIHRlc3RGb3JDbGFzcygpOworfQorCitjbGFzcyBGb28geworICBAVGVzdEZvcih0ZXN0Rm9yQ2xhc3MgPSB7IE9iamVjdC5jbGFzcywgQWFhYWFhPGNhcmV0PiB9ICkKKyAgcHVibGljIHZvaWQgZm9vMjIoKSB7fQorfQorCitjbGFzcyBBYWFhYWFhYWFhYWFhYWFhYWFhYWEge30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvQ2xhc3NMaXRlcmFsSW5BcnJheUFubm9Jbml0aWFsaXplcjJfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9DbGFzc0xpdGVyYWxJbkFycmF5QW5ub0luaXRpYWxpemVyMl9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY5NTcxNTcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvQ2xhc3NMaXRlcmFsSW5BcnJheUFubm9Jbml0aWFsaXplcjJfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDEwIEBACitAaW50ZXJmYWNlIFRlc3RGb3IgeworICBDbGFzc1tdIHRlc3RGb3JDbGFzcygpOworfQorCitjbGFzcyBGb28geworICBAVGVzdEZvcih0ZXN0Rm9yQ2xhc3MgPSB7IE9iamVjdC5jbGFzcywgQWFhYWFhYWFhYWFhYWFhYWFhYWFhPGNhcmV0PiB9ICkKKyAgcHVibGljIHZvaWQgZm9vMjIoKSB7fQorfQorCitjbGFzcyBBYWFhYWFhYWFhYWFhYWFhYWFhYWEge30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvQ2xhc3NMaXRlcmFsSW5BcnJheUFubm9Jbml0aWFsaXplcl9hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL0NsYXNzTGl0ZXJhbEluQXJyYXlBbm5vSW5pdGlhbGl6ZXJfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YWIyOGQ1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL0NsYXNzTGl0ZXJhbEluQXJyYXlBbm5vSW5pdGlhbGl6ZXJfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDEwIEBACitAaW50ZXJmYWNlIFRlc3RGb3IgeworICBDbGFzc1tdIHRlc3RGb3JDbGFzcygpOworfQorCitjbGFzcyBGb28geworICBAVGVzdEZvcih0ZXN0Rm9yQ2xhc3MgPSB7IEFhYWFhYWFhYWFhYWFhYWFhYWFhYTxjYXJldD4gfSApCisgIHB1YmxpYyB2b2lkIGZvbzIyKCkge30KK30KKworY2xhc3MgQWFhYWFhYWFhYWFhYWFhYWFhYWFhIHt9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL0NsYXNzTmFtZUFub255bW91cy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL0NsYXNzTmFtZUFub255bW91cy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ0OTYwMDcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvQ2xhc3NOYW1lQW5vbnltb3VzLmphdmEKQEAgLTAsMCArMSw5IEBACitjbGFzcyBGb28geworICB7CisgICAgWnpvbyBsID0gbmV3IFp6PGNhcmV0PgorICB9Cit9CisKK2ludGVyZmFjZSBaem9vIHsKKyAgdm9pZCBydW4oKTsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvQ2xhc3NOYW1lQW5vbnltb3VzX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvQ2xhc3NOYW1lQW5vbnltb3VzX2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDcxMTQzNAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9DbGFzc05hbWVBbm9ueW1vdXNfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDE0IEBACitjbGFzcyBGb28geworICB7CisgICAgWnpvbyBsID0gbmV3IFp6b28oKSB7CisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgdm9pZCBydW4oKSB7CisgICAgICAgICAgICA8c2VsZWN0aW9uPi8vVG8gY2hhbmdlIGJvZHkgb2YgaW1wbGVtZW50ZWQgbWV0aG9kcyB1c2UgRmlsZSB8IFNldHRpbmdzIHwgRmlsZSBUZW1wbGF0ZXMuPC9zZWxlY3Rpb24+CisgICAgICAgIH0KKyAgICB9CisgIH0KK30KKworaW50ZXJmYWNlIFp6b28geworICB2b2lkIHJ1bigpOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9DbGFzc05hbWVEb3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9DbGFzc05hbWVEb3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NjQ2NDc0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL0NsYXNzTmFtZURvdC5qYXZhCkBAIC0wLDAgKzEsNSBAQAorY2xhc3MgRm9vIHsKKyAgeworICAgIEZJU3RyPGNhcmV0PgorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL0NsYXNzTmFtZURvdEJlZm9yZUNhbGwuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9DbGFzc05hbWVEb3RCZWZvcmVDYWxsLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGYwMTBlNAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9DbGFzc05hbWVEb3RCZWZvcmVDYWxsLmphdmEKQEAgLTAsMCArMSw3IEBACitwdWJsaWMgY2xhc3MgRm9vIHsKKyAgeworICAgICAgdmVyaWZ5KHJ1blA0V2l0aENsaWVudCgiaW50ZWciLCAibWFpbi8uLi4iLCAicmVsLy4uLiIpKTsKKyAgICAgIEZpbGVJbnB1dFN0cmVhbS48Y2FyZXQ+CisgICAgICB2ZXJpZnkocnVuUDRXaXRoQ2xpZW50KCJyZXNvbHZlIiwgIi1hdCIpKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9DbGFzc05hbWVEb3RCZWZvcmVDYWxsX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvQ2xhc3NOYW1lRG90QmVmb3JlQ2FsbF9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVjNTI1OGIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvQ2xhc3NOYW1lRG90QmVmb3JlQ2FsbF9hZnRlci5qYXZhCkBAIC0wLDAgKzEsOSBAQAoraW1wb3J0IGphdmEuaW8uRmlsZUlucHV0U3RyZWFtOworCitwdWJsaWMgY2xhc3MgRm9vIHsKKyAgeworICAgICAgdmVyaWZ5KHJ1blA0V2l0aENsaWVudCgiaW50ZWciLCAibWFpbi8uLi4iLCAicmVsLy4uLiIpKTsKKyAgICAgIEZpbGVJbnB1dFN0cmVhbS48Y2FyZXQ+CisgICAgICB2ZXJpZnkocnVuUDRXaXRoQ2xpZW50KCJyZXNvbHZlIiwgIi1hdCIpKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9DbGFzc05hbWVEb3RfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9DbGFzc05hbWVEb3RfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zM2RjNTc3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL0NsYXNzTmFtZURvdF9hZnRlci5qYXZhCkBAIC0wLDAgKzEsNyBAQAoraW1wb3J0IGphdmEuaW8uRmlsZUlucHV0U3RyZWFtOworCitjbGFzcyBGb28geworICB7CisgICAgICBGaWxlSW5wdXRTdHJlYW0uPGNhcmV0PgorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL0NsYXNzTmFtZUdlbmVyaWNzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvQ2xhc3NOYW1lR2VuZXJpY3MuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42Y2Q4YzI4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL0NsYXNzTmFtZUdlbmVyaWNzLmphdmEKQEAgLTAsMCArMSw3IEBACitpbXBvcnQgamF2YS51dGlsLkxpc3Q7CisKK2NsYXNzIEZvbyB7CisgIHsKKyAgICBMaXN0PFN0cmluZz4gbCA9IG5ldyBBcnJhTGk8Y2FyZXQ+CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvQ2xhc3NOYW1lR2VuZXJpY3NfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9DbGFzc05hbWVHZW5lcmljc19hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc3MDc3ZjYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvQ2xhc3NOYW1lR2VuZXJpY3NfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDggQEAKK2ltcG9ydCBqYXZhLnV0aWwuQXJyYXlMaXN0OworaW1wb3J0IGphdmEudXRpbC5MaXN0OworCitjbGFzcyBGb28geworICB7CisgICAgTGlzdDxTdHJpbmc+IGwgPSBuZXcgQXJyYXlMaXN0PFN0cmluZz4oPGNhcmV0PikKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9DbGFzc05hbWVJbklmQmVmb3JlSWRlbnRpZmllci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL0NsYXNzTmFtZUluSWZCZWZvcmVJZGVudGlmaWVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzFhNDM2YQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9DbGFzc05hbWVJbklmQmVmb3JlSWRlbnRpZmllci5qYXZhCkBAIC0wLDAgKzEsNyBAQAorY2xhc3MgWHh4IHsKKyAgeworICAgIGlmIChBQkNERUY8Y2FyZXQ+YWFhLmJiYigpKSB7CisKKyAgICB9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvQ2xhc3NOYW1lSW5JZkJlZm9yZUlkZW50aWZpZXJfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9DbGFzc05hbWVJbklmQmVmb3JlSWRlbnRpZmllcl9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFkZWY3ZjgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvQ2xhc3NOYW1lSW5JZkJlZm9yZUlkZW50aWZpZXJfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDcgQEAKK2NsYXNzIFh4eCB7CisgIHsKKyAgICBpZiAoQUJDREVGRkZGRjxjYXJldD5hYWEuYmJiKCkpIHsKKworICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9DbGFzc05hbWVJbnNpZGVJZGVudGlmaWVySW5JZi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL0NsYXNzTmFtZUluc2lkZUlkZW50aWZpZXJJbklmLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjYzN2Y4OQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9DbGFzc05hbWVJbnNpZGVJZGVudGlmaWVySW5JZi5qYXZhCkBAIC0wLDAgKzEsNiBAQAorcHVibGljIGNsYXNzIEJhciB7CisgICAgeworICAgICAgICBpZiAoMiAhPSBJbnBTdHJSZWE8Y2FyZXQ+QWFhKSB7CisgICAgICAgIH0KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL0NsYXNzTmFtZUluc2lkZUlkZW50aWZpZXJJbklmX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvQ2xhc3NOYW1lSW5zaWRlSWRlbnRpZmllckluSWZfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YTBiMWIxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL0NsYXNzTmFtZUluc2lkZUlkZW50aWZpZXJJbklmX2FmdGVyLmphdmEKQEAgLTAsMCArMSw4IEBACitpbXBvcnQgamF2YS5pby5JbnB1dFN0cmVhbVJlYWRlcjsKKworcHVibGljIGNsYXNzIEJhciB7CisgICAgeworICAgICAgICBpZiAoMiAhPSBJbnB1dFN0cmVhbVJlYWRlcjxjYXJldD5BYWEpIHsKKyAgICAgICAgfQorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvQ2xhc3NOYW1lV2l0aEV4aXN0aW5nUGFyZW5zQXNRdWFsaWZpZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9DbGFzc05hbWVXaXRoRXhpc3RpbmdQYXJlbnNBc1F1YWxpZmllci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU3Y2NiMGMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvQ2xhc3NOYW1lV2l0aEV4aXN0aW5nUGFyZW5zQXNRdWFsaWZpZXIuamF2YQpAQCAtMCwwICsxLDUgQEAKK3B1YmxpYyBjbGFzcyBGb29CYXIgeworICB7CisgICAgbmV3IEZvb0I8Y2FyZXQ+KCkuCisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvQ2xhc3NOYW1lV2l0aEV4aXN0aW5nUGFyZW5zQXNRdWFsaWZpZXJfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9DbGFzc05hbWVXaXRoRXhpc3RpbmdQYXJlbnNBc1F1YWxpZmllcl9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA5NWE1MzAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvQ2xhc3NOYW1lV2l0aEV4aXN0aW5nUGFyZW5zQXNRdWFsaWZpZXJfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDUgQEAKK3B1YmxpYyBjbGFzcyBGb29CYXIgeworICB7CisgICAgbmV3IEZvb0JhcigpPGNhcmV0Pi4KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9DbGFzc05hbWVXaXRoR2VuZXJpY3NUYWIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9DbGFzc05hbWVXaXRoR2VuZXJpY3NUYWIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZjY5YTdlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL0NsYXNzTmFtZVdpdGhHZW5lcmljc1RhYi5qYXZhCkBAIC0wLDAgKzEsOSBAQAorcHVibGljIGNsYXNzIFRlc3RDbGFzcyB7CisKKyAgICBwdWJsaWMgVGVzdENsYXNzIGNyZWF0ZSgpIHsKKyAgICAgICAgZmluYWwgaW50IHZhbHVlID0gMTsKKyAgICAgICAgcmV0dXJuIG5ldyBYeDxjYXJldD5UZXhDb21wWHh4PFN0cmluZz4odmFsdWUpOworICAgIH0KK30KKworY2xhc3MgWHh4IHsgfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9DbGFzc05hbWVXaXRoR2VuZXJpY3NUYWIyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvQ2xhc3NOYW1lV2l0aEdlbmVyaWNzVGFiMi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIwYjJmNjYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvQ2xhc3NOYW1lV2l0aEdlbmVyaWNzVGFiMi5qYXZhCkBAIC0wLDAgKzEsOCBAQAoraW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7CitpbXBvcnQgamF2YS51dGlsLkxpc3Q7CisKK3B1YmxpYyBjbGFzcyBGb28geworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKKyAgICAgICAgTGlzdDxJbnRlZ2VyPiBzZXQgPSBuZXcgQXJyYXlMaXM8Y2FyZXQ+dDxJbnRlZ2VyPigpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9DbGFzc05hbWVXaXRoR2VuZXJpY3NUYWIyX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvQ2xhc3NOYW1lV2l0aEdlbmVyaWNzVGFiMl9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFmYzc5ZjIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvQ2xhc3NOYW1lV2l0aEdlbmVyaWNzVGFiMl9hZnRlci5qYXZhCkBAIC0wLDAgKzEsOCBAQAoraW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7CitpbXBvcnQgamF2YS51dGlsLkxpc3Q7CisKK3B1YmxpYyBjbGFzcyBGb28geworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKKyAgICAgICAgTGlzdDxJbnRlZ2VyPiBzZXQgPSBuZXcgQXJyYXlMaXN0PEludGVnZXI+KDxjYXJldD4pOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9DbGFzc05hbWVXaXRoR2VuZXJpY3NUYWJfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9DbGFzc05hbWVXaXRoR2VuZXJpY3NUYWJfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYjNkZTkyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL0NsYXNzTmFtZVdpdGhHZW5lcmljc1RhYl9hZnRlci5qYXZhCkBAIC0wLDAgKzEsOSBAQAorcHVibGljIGNsYXNzIFRlc3RDbGFzcyB7CisKKyAgICBwdWJsaWMgVGVzdENsYXNzIGNyZWF0ZSgpIHsKKyAgICAgICAgZmluYWwgaW50IHZhbHVlID0gMTsKKyAgICAgICAgcmV0dXJuIG5ldyBYeHg8Y2FyZXQ+PFN0cmluZz4odmFsdWUpOworICAgIH0KK30KKworY2xhc3MgWHh4IHsgfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9DbGFzc05hbWVXaXRoSW5uZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9DbGFzc05hbWVXaXRoSW5uZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ODkxM2VlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL0NsYXNzTmFtZVdpdGhJbm5lci5qYXZhCkBAIC0wLDAgKzEsMTEgQEAKK2NsYXNzIEZvbyB7CisgIHsKKyAgICBaem9vIGwgPSBuZXcgWno8Y2FyZXQ+CisgIH0KK30KKworaW50ZXJmYWNlIFp6b28geworICB2b2lkIHJ1bigpOworCisgIGNsYXNzIEltcGwgaW1wbGVtZW50cyBaem9vIHt9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL0NsYXNzTmFtZVdpdGhJbm5lcjIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9DbGFzc05hbWVXaXRoSW5uZXIyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzE0YzAwOQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9DbGFzc05hbWVXaXRoSW5uZXIyLmphdmEKQEAgLTAsMCArMSwxMSBAQAorY2xhc3MgRm9vIHsKKyAgeworICAgIFp6b28uSW1wbCBsID0gbmV3IFp6PGNhcmV0PgorICB9Cit9CisKK2ludGVyZmFjZSBaem9vIHsKKyAgdm9pZCBydW4oKTsKKworICBjbGFzcyBJbXBsIGltcGxlbWVudHMgWnpvbyB7fQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9DbGFzc05hbWVXaXRoSW5uZXIyX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvQ2xhc3NOYW1lV2l0aElubmVyMl9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRiNTkyZWQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvQ2xhc3NOYW1lV2l0aElubmVyMl9hZnRlci5qYXZhCkBAIC0wLDAgKzEsMTEgQEAKK2NsYXNzIEZvbyB7CisgIHsKKyAgICBaem9vLkltcGwgbCA9IG5ldyBaem9vLkltcGwoKTxjYXJldD4KKyAgfQorfQorCitpbnRlcmZhY2UgWnpvbyB7CisgIHZvaWQgcnVuKCk7CisKKyAgY2xhc3MgSW1wbCBpbXBsZW1lbnRzIFp6b28ge30KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvQ2xhc3NOYW1lV2l0aElubmVyX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvQ2xhc3NOYW1lV2l0aElubmVyX2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTE3MDgxMgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9DbGFzc05hbWVXaXRoSW5uZXJfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDE2IEBACitjbGFzcyBGb28geworICB7CisgICAgWnpvbyBsID0gbmV3IFp6b28oKSB7CisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgdm9pZCBydW4oKSB7CisgICAgICAgICAgICA8c2VsZWN0aW9uPi8vVG8gY2hhbmdlIGJvZHkgb2YgaW1wbGVtZW50ZWQgbWV0aG9kcyB1c2UgRmlsZSB8IFNldHRpbmdzIHwgRmlsZSBUZW1wbGF0ZXMuPC9zZWxlY3Rpb24+CisgICAgICAgIH0KKyAgICB9CisgIH0KK30KKworaW50ZXJmYWNlIFp6b28geworICB2b2lkIHJ1bigpOworCisgIGNsYXNzIEltcGwgaW1wbGVtZW50cyBaem9vIHt9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL0NsYXNzTmFtZVdpdGhJbm5lcnNUYWIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9DbGFzc05hbWVXaXRoSW5uZXJzVGFiLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmMxY2FkYQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9DbGFzc05hbWVXaXRoSW5uZXJzVGFiLmphdmEKQEAgLTAsMCArMSwxNiBAQAorcHVibGljIGNsYXNzIFRlc3RDbGFzcyB7CisKKyAgICBwdWJsaWMgVGVzdENsYXNzIGNyZWF0ZSgpIHsKKyAgICAgICAgZmluYWwgaW50IHZhbHVlID0gMTsKKyAgICAgICAgcmV0dXJuIG5ldyBYeDxjYXJldD5UZXhDb21wWHh4KHZhbHVlKTsKKyAgICB9Cit9CisKK2NsYXNzIFh4eCB7CisgICAgcHJpdmF0ZSBYeHgoU3RyaW5nIHgpIHsKKyAgICB9CisKKyAgICBzdGF0aWMgY2xhc3MgWXl5IHsKKworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvQ2xhc3NOYW1lV2l0aElubmVyc1RhYl9hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL0NsYXNzTmFtZVdpdGhJbm5lcnNUYWJfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NjgxNDJjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL0NsYXNzTmFtZVdpdGhJbm5lcnNUYWJfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDE2IEBACitwdWJsaWMgY2xhc3MgVGVzdENsYXNzIHsKKworICAgIHB1YmxpYyBUZXN0Q2xhc3MgY3JlYXRlKCkgeworICAgICAgICBmaW5hbCBpbnQgdmFsdWUgPSAxOworICAgICAgICByZXR1cm4gbmV3IFh4eCg8Y2FyZXQ+dmFsdWUpOworICAgIH0KK30KKworY2xhc3MgWHh4IHsKKyAgICBwcml2YXRlIFh4eChTdHJpbmcgeCkgeworICAgIH0KKworICAgIHN0YXRpYyBjbGFzcyBZeXkgeworCisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9DbGFzc05hbWVXaXRoSW5zdGFuY2VJbm5lci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL0NsYXNzTmFtZVdpdGhJbnN0YW5jZUlubmVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmE4ZTZkMQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9DbGFzc05hbWVXaXRoSW5zdGFuY2VJbm5lci5qYXZhCkBAIC0wLDAgKzEsMTEgQEAKK2NsYXNzIEZvbyB7CisgIHsKKyAgICBaem9vIGwgPSBuZXcgWno8Y2FyZXQ+CisgIH0KK30KKworY2xhc3MgWnpvbyB7CisgIHZvaWQgcnVuKCk7CisKKyAgY2xhc3MgSW1wbCBpbXBsZW1lbnRzIFp6b28ge30KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvQ2xhc3NOYW1lV2l0aEluc3RhbmNlSW5uZXJfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9DbGFzc05hbWVXaXRoSW5zdGFuY2VJbm5lcl9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJlZTkwZGYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvQ2xhc3NOYW1lV2l0aEluc3RhbmNlSW5uZXJfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDExIEBACitjbGFzcyBGb28geworICB7CisgICAgWnpvbyBsID0gbmV3IFp6b28oKTxjYXJldD4KKyAgfQorfQorCitjbGFzcyBaem9vIHsKKyAgdm9pZCBydW4oKTsKKworICBjbGFzcyBJbXBsIGltcGxlbWVudHMgWnpvbyB7fQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9DbGFzc1JlZmVyZW5jZUluRm9yLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvQ2xhc3NSZWZlcmVuY2VJbkZvci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM5MTZlMjMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvQ2xhc3NSZWZlcmVuY2VJbkZvci5qYXZhCkBAIC0wLDAgKzEsNiBAQAorcHVibGljIGNsYXNzIFpvbzIgeworICAgIHsKKyAgICAgICAgZm9yIChTdHJpPGNhcmV0PmNoaWxkIDogZGlyLmdldENoaWxkcmVuKCkpCisgICAgfQorfQorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvQ2xhc3NSZWZlcmVuY2VJbkZvcjIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9DbGFzc1JlZmVyZW5jZUluRm9yMi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBmODcwMDAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvQ2xhc3NSZWZlcmVuY2VJbkZvcjIuamF2YQpAQCAtMCwwICsxLDYgQEAKK3B1YmxpYyBjbGFzcyBab28yIHsKKyAgICB7CisgICAgICAgIGZvciAoU3RyaTxjYXJldD4gOiBkaXIuZ2V0Q2hpbGRyZW4oKSkKKyAgICB9Cit9CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9DbGFzc1JlZmVyZW5jZUluRm9yMl9hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL0NsYXNzUmVmZXJlbmNlSW5Gb3IyX2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjQwMzYzMwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9DbGFzc1JlZmVyZW5jZUluRm9yMl9hZnRlci5qYXZhCkBAIC0wLDAgKzEsNiBAQAorcHVibGljIGNsYXNzIFpvbzIgeworICAgIHsKKyAgICAgICAgZm9yIChTdHJpbmcgPGNhcmV0PiA6IGRpci5nZXRDaGlsZHJlbigpKQorICAgIH0KK30KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL0NsYXNzUmVmZXJlbmNlSW5Gb3IzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvQ2xhc3NSZWZlcmVuY2VJbkZvcjMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45YzMzNjE3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL0NsYXNzUmVmZXJlbmNlSW5Gb3IzLmphdmEKQEAgLTAsMCArMSw2IEBACitwdWJsaWMgY2xhc3MgWm9vMiB7CisgICAgeworICAgICAgICBTdHJpbmcgc3RyaW5nOworICAgICAgICBmb3IgKFN0cmk8Y2FyZXQ+KQorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvQ2xhc3NSZWZlcmVuY2VJbkZvcjNfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9DbGFzc1JlZmVyZW5jZUluRm9yM19hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcxYTk5NDMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvQ2xhc3NSZWZlcmVuY2VJbkZvcjNfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDYgQEAKK3B1YmxpYyBjbGFzcyBab28yIHsKKyAgICB7CisgICAgICAgIFN0cmluZyBzdHJpbmc7CisgICAgICAgIGZvciAoU3RyaW5nIDxjYXJldD4pCisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9DbGFzc1JlZmVyZW5jZUluRm9yX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvQ2xhc3NSZWZlcmVuY2VJbkZvcl9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUyMjhlODAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvQ2xhc3NSZWZlcmVuY2VJbkZvcl9hZnRlci5qYXZhCkBAIC0wLDAgKzEsNiBAQAorcHVibGljIGNsYXNzIFpvbzIgeworICAgIHsKKyAgICAgICAgZm9yIChTdHJpbmcgPGNhcmV0PmNoaWxkIDogZGlyLmdldENoaWxkcmVuKCkpCisgICAgfQorfQorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvQ2xhc3NTcXVhcmVCcmFja2V0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvQ2xhc3NTcXVhcmVCcmFja2V0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODlmZmYzYQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9DbGFzc1NxdWFyZUJyYWNrZXQuamF2YQpAQCAtMCwwICsxLDYgQEAKK2NsYXNzIEFiY2RDbGFzcyB7fQorY2xhc3MgQWJjZGVDbGFzcyB7fQorCitjbGFzcyBGb28geworICBBYmNkPGNhcmV0PgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9DbGFzc1NxdWFyZUJyYWNrZXRfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9DbGFzc1NxdWFyZUJyYWNrZXRfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMzk0NGFhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL0NsYXNzU3F1YXJlQnJhY2tldF9hZnRlci5qYXZhCkBAIC0wLDAgKzEsNiBAQAorY2xhc3MgQWJjZENsYXNzIHt9CitjbGFzcyBBYmNkZUNsYXNzIHt9CisKK2NsYXNzIEZvbyB7CisgIEFiY2RDbGFzc1s8Y2FyZXQ+XQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9DbGFzc1R5cGVQYXJhbWV0ZXJzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvQ2xhc3NUeXBlUGFyYW1ldGVycy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU2NTkyMTEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvQ2xhc3NUeXBlUGFyYW1ldGVycy5qYXZhCkBAIC0wLDAgKzEsMyBAQAorY2xhc3MgS29vIHt9CitwdWJsaWMgY2xhc3MgRm9vTWFwPEssVj4gaW1wbGVtZW50cyBZb3VyTWFwSW50ZXJmYWNlPEs8Y2FyZXQ+LCBWPiB7Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvQ2xhc3NUeXBlUGFyYW1ldGVyc0dlbmVyaWNCb3VuZHMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9DbGFzc1R5cGVQYXJhbWV0ZXJzR2VuZXJpY0JvdW5kcy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVlNThmNWQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvQ2xhc3NUeXBlUGFyYW1ldGVyc0dlbmVyaWNCb3VuZHMuamF2YQpAQCAtMCwwICsxLDMgQEAKK2NsYXNzIEtvb3t9CitwdWJsaWMgY2xhc3MgRm9vTWFwPEssViBleHRlbmRzIEs8Y2FyZXQ+PiB7Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvQ29tbWFBZnRlclZhcmlhYmxlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvQ29tbWFBZnRlclZhcmlhYmxlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDliNDhjZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9Db21tYUFmdGVyVmFyaWFibGUuamF2YQpAQCAtMCwwICsxLDEwIEBACitjbGFzcyBBYmNkQ2xhc3Mge30KK2NsYXNzIEFiY2RFeGNlcHRpb24gZXh0ZW5kcyBUaHJvd2FibGUge30KKworY2xhc3MgRm9vIHsKKyAgeworICAgIGludCBhYWE7CisgICAgaW50IGFhYjsKKyAgICBlcXVhbHMoYWE8Y2FyZXQ+KQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL0NvbW1hQWZ0ZXJWYXJpYWJsZV9hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL0NvbW1hQWZ0ZXJWYXJpYWJsZV9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI4ZDNiMjgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvQ29tbWFBZnRlclZhcmlhYmxlX2FmdGVyLmphdmEKQEAgLTAsMCArMSwxMCBAQAorY2xhc3MgQWJjZENsYXNzIHt9CitjbGFzcyBBYmNkRXhjZXB0aW9uIGV4dGVuZHMgVGhyb3dhYmxlIHt9CisKK2NsYXNzIEZvbyB7CisgIHsKKyAgICBpbnQgYWFhOworICAgIGludCBhYWI7CisgICAgZXF1YWxzKGFhYSwgPGNhcmV0PikKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9Db21wYXRpYmxlSW50ZXJmYWNlc0Nhc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9Db21wYXRpYmxlSW50ZXJmYWNlc0Nhc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42OGM4OWIyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL0NvbXBhdGlibGVJbnRlcmZhY2VzQ2FzdC5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKK2ludGVyZmFjZSBGb28geyB2b2lkIGZvbygpOyB9CitpbnRlcmZhY2UgQmFyIHsgdm9pZCBiYXIoKTsgfQorCitwdWJsaWMgY2xhc3MgQSB7CisgIHZvaWQgZm9vKEZvbyBsKSB7CisgICAgaWYgKGwgaW5zdGFuY2VvZiBCYXIpIHsKKyAgICAgIGwuPGNhcmV0PgorICAgIH0KKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL0NvbXBsZXRpb25JbnNpZGVDbGFzc0xpdGVyYWwuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9Db21wbGV0aW9uSW5zaWRlQ2xhc3NMaXRlcmFsLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2YwNDlkYgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9Db21wbGV0aW9uSW5zaWRlQ2xhc3NMaXRlcmFsLmphdmEKQEAgLTAsMCArMSw3IEBACitwdWJsaWMgY2xhc3MgWHh4IHsKKworICAgIHsKKyAgICAgICAgdGhpcy5lPGNhcmV0Plh4eC5jbGFzczsKKyAgICB9CisKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9Db21wbGV0aW9uSW5zaWRlQ2xhc3NMaXRlcmFsX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvQ29tcGxldGlvbkluc2lkZUNsYXNzTGl0ZXJhbF9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhmOGQzOWIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvQ29tcGxldGlvbkluc2lkZUNsYXNzTGl0ZXJhbF9hZnRlci5qYXZhCkBAIC0wLDAgKzEsNyBAQAorcHVibGljIGNsYXNzIFh4eCB7CisKKyAgICB7CisgICAgICAgIHRoaXMuZXF1YWxzKDxjYXJldD4pWHh4LmNsYXNzOworICAgIH0KKworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL0NvbnN0YW50SW5Bbm5vLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvQ29uc3RhbnRJbkFubm8uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZjY3NTlmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL0NvbnN0YW50SW5Bbm5vLmphdmEKQEAgLTAsMCArMSw4IEBACitwdWJsaWMgZmluYWwgY2xhc3MgRmlsZUF0dHJpYnV0ZXMgeworICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBTWU1fTElOSyA9IDB4MDE7CisgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEJST0tFTl9TWU1fTElOSyA9IDB4MDI7CisgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEhJRERFTiA9IDB4MjA7CisKKyAgQE1hZ2ljQ29uc3RhbnQoZmxhZ3MgPSB7U1lNX0xJTkssIEJST0s8Y2FyZXQ+LCBISURERU59KQorICBwdWJsaWMgQGludGVyZmFjZSBGbGFncyB7IH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvQ29uc3RhbnRJbkFubm9fYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9Db25zdGFudEluQW5ub19hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY4ODliOGQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvQ29uc3RhbnRJbkFubm9fYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDggQEAKK3B1YmxpYyBmaW5hbCBjbGFzcyBGaWxlQXR0cmlidXRlcyB7CisgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFNZTV9MSU5LID0gMHgwMTsKKyAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgQlJPS0VOX1NZTV9MSU5LID0gMHgwMjsKKyAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgSElEREVOID0gMHgyMDsKKworICBATWFnaWNDb25zdGFudChmbGFncyA9IHtTWU1fTElOSywgQlJPS0VOX1NZTV9MSU5LPGNhcmV0PiwgSElEREVOfSkKKyAgcHVibGljIEBpbnRlcmZhY2UgRmxhZ3MgeyB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL0NvbnN0cnVjdG9yTmFtZTEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9Db25zdHJ1Y3Rvck5hbWUxLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGM1ZTc4MwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9Db25zdHJ1Y3Rvck5hbWUxLmphdmEKQEAgLTAsMCArMSwzIEBACitjbGFzcyBBQkNERXsKKyAgcHVibGljIEFCPGNhcmV0PgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9Db25zdHJ1Y3Rvck5hbWUyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvQ29uc3RydWN0b3JOYW1lMi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFmNjNiNGMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvQ29uc3RydWN0b3JOYW1lMi5qYXZhCkBAIC0wLDAgKzEsMyBAQAorY2xhc3MgQUJDREV7CisgIHB1YmxpYyBBQjxjYXJldD4oKXt9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL0NvbnRpbnVlTGFiZWwuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9Db250aW51ZUxhYmVsLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjczNDFiYQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9Db250aW51ZUxhYmVsLmphdmEKQEAgLTAsMCArMSw3IEBACitwdWJsaWMgY2xhc3MgVXRpbCB7CisgIHZvaWQgZm9vKGludCBhLCBpbnQgYikgeworICAgIE91dGVyOiBmb3IgKGludCBpID0gMDsgaSA8IDIzOTsgaSsrKSB7CisgICAgICBjb250aTxjYXJldD4KKyAgICB9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvQ29udGludWVMYWJlbF9hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL0NvbnRpbnVlTGFiZWxfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMWI5YTY2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL0NvbnRpbnVlTGFiZWxfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDcgQEAKK3B1YmxpYyBjbGFzcyBVdGlsIHsKKyAgdm9pZCBmb28oaW50IGEsIGludCBiKSB7CisgICAgT3V0ZXI6IGZvciAoaW50IGkgPSAwOyBpIDwgMjM5OyBpKyspIHsKKyAgICAgIGNvbnRpbnVlIDxjYXJldD4KKyAgICB9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvRGVmYXVsdEFubm9QYXJhbS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL0RlZmF1bHRBbm5vUGFyYW0uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ODA3YTk1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL0RlZmF1bHRBbm5vUGFyYW0uamF2YQpAQCAtMCwwICsxLDE0IEBACitAaW50ZXJmYWNlIEFubm8geworICBTdHJpbmcgdmFsdWUoKTsKK30KKworcHVibGljIGNsYXNzIEZvb0JhciB7CisgICAgQEFubm8oRm9CPGNhcmV0PikKKyAgICB2b2lkIG0oKSB7fQorCisgICAgU3RyaW5nIEZvb0JhcnJycnJyKCkge30KKworICAgIHB1YmxpYyBzdGF0aWMgU3RyaW5nIEZvb0JhcnJycigpIHt9CisKKworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL0RlZmF1bHRBbm5vUGFyYW1fYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9EZWZhdWx0QW5ub1BhcmFtX2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDlhZGM0MwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9EZWZhdWx0QW5ub1BhcmFtX2FmdGVyLmphdmEKQEAgLTAsMCArMSwxNCBAQAorQGludGVyZmFjZSBBbm5vIHsKKyAgU3RyaW5nIHZhbHVlKCk7Cit9CisKK3B1YmxpYyBjbGFzcyBGb29CYXIgeworICAgIEBBbm5vKEZvb0JhcjxjYXJldD4pCisgICAgdm9pZCBtKCkge30KKworICAgIFN0cmluZyBGb29CYXJycnJycigpIHt9CisKKyAgICBwdWJsaWMgc3RhdGljIFN0cmluZyBGb29CYXJycnIoKSB7fQorCisKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9EZWZhdWx0SW5Td2l0Y2guamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9EZWZhdWx0SW5Td2l0Y2guamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YmZiMzhlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL0RlZmF1bHRJblN3aXRjaC5qYXZhCkBAIC0wLDAgKzEsOSBAQAorcHVibGljIGNsYXNzIENvbnN0Q29uZmlnIHsKKyAgICB7CisgICAgICAgIHN3aXRjaCAoYSkgeworICAgICAgICAgICAgY2FzZSBGb29vbzoge30KKyAgICAgICAgICAgIGRlZjxjYXJldD4KKworICAgICAgICB9CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9EZWZhdWx0SW5Td2l0Y2hfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9EZWZhdWx0SW5Td2l0Y2hfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYmQwMzMwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL0RlZmF1bHRJblN3aXRjaF9hZnRlci5qYXZhCkBAIC0wLDAgKzEsOSBAQAorcHVibGljIGNsYXNzIENvbnN0Q29uZmlnIHsKKyAgICB7CisgICAgICAgIHN3aXRjaCAoYSkgeworICAgICAgICAgICAgY2FzZSBGb29vbzoge30KKyAgICAgICAgICAgIGRlZmF1bHQ6PGNhcmV0PgorCisgICAgICAgIH0KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL0RvV2hpbGVNZXRob2RDYWxsLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvRG9XaGlsZU1ldGhvZENhbGwuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ODVjZDFhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL0RvV2hpbGVNZXRob2RDYWxsLmphdmEKQEAgLTAsMCArMSw5IEBACitwdWJsaWMgY2xhc3MgRm9vIHsKKworICAgIHsKKyAgICAgICAgZG8geworCisgICAgICAgIH0gd2hpbGUgKHRvU3Q8Y2FyZXQ+KTsKKyAgICB9CisKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9Eb1doaWxlTWV0aG9kQ2FsbF9hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL0RvV2hpbGVNZXRob2RDYWxsX2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2MxNTlmNwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9Eb1doaWxlTWV0aG9kQ2FsbF9hZnRlci5qYXZhCkBAIC0wLDAgKzEsOSBAQAorcHVibGljIGNsYXNzIEZvbyB7CisKKyAgICB7CisgICAgICAgIGRvIHsKKworICAgICAgICB9IHdoaWxlICh0b1N0cmluZygpPGNhcmV0Pik7CisgICAgfQorCit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvRG9udEF1dG9JbnNlcnRNaWRkbGVNYXRjaC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL0RvbnRBdXRvSW5zZXJ0TWlkZGxlTWF0Y2guamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZTRhYzJlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL0RvbnRBdXRvSW5zZXJ0TWlkZGxlTWF0Y2guamF2YQpAQCAtMCwwICsxLDUgQEAKK3B1YmxpYyBjbGFzcyBBIHsKKyAgdm9pZCBmb28oRm9vIG15WHh4eHh4eHh4KSB7CisgICAgWHh4eHg8Y2FyZXQ+CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9Eb250QXV0b0luc2VydE1pZGRsZU1hdGNoX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvRG9udEF1dG9JbnNlcnRNaWRkbGVNYXRjaF9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjllNGFjMmUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvRG9udEF1dG9JbnNlcnRNaWRkbGVNYXRjaF9hZnRlci5qYXZhCkBAIC0wLDAgKzEsNSBAQAorcHVibGljIGNsYXNzIEEgeworICB2b2lkIGZvbyhGb28gbXlYeHh4eHh4eHgpIHsKKyAgICBYeHh4eDxjYXJldD4KKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL0RvbnRDYXN0SW5zdGFuY2VvZmVkUXVhbGlmaWVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvRG9udENhc3RJbnN0YW5jZW9mZWRRdWFsaWZpZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yN2ZmMDRlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL0RvbnRDYXN0SW5zdGFuY2VvZmVkUXVhbGlmaWVyLmphdmEKQEAgLTAsMCArMSwxMCBAQAorcHVibGljIGFic3RyYWN0IGNsYXNzIFp6emEgeworCisgICAgdm9pZCBmb28oT2JqZWN0IG8pIHsKKyAgICAgIGlmIChvIGluc3RhbmNlb2YgU3RyaW5nKSB7CisgICAgICAgIG8udG9TdHI8Y2FyZXQ+CisgICAgICB9CisgICAgfQorCisKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvRG9udENhc3RJbnN0YW5jZW9mZWRRdWFsaWZpZXJfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9Eb250Q2FzdEluc3RhbmNlb2ZlZFF1YWxpZmllcl9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM1NDQ4OTgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvRG9udENhc3RJbnN0YW5jZW9mZWRRdWFsaWZpZXJfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDEwIEBACitwdWJsaWMgYWJzdHJhY3QgY2xhc3MgWnp6YSB7CisKKyAgICB2b2lkIGZvbyhPYmplY3QgbykgeworICAgICAgaWYgKG8gaW5zdGFuY2VvZiBTdHJpbmcpIHsKKyAgICAgICAgby50b1N0cmluZygpPGNhcmV0PgorICAgICAgfQorICAgIH0KKworCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL0RvdWJsZUJvb2xlYW5JblBhcmFtZXRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL0RvdWJsZUJvb2xlYW5JblBhcmFtZXRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFhNGE1OWEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvRG91YmxlQm9vbGVhbkluUGFyYW1ldGVyLmphdmEKQEAgLTAsMCArMSw0IEBACitpbnRlcmZhY2UgRm9vIHsKKyAgdm9pZCBnZXRHb29CYXJEb28oKTsKKyAgICB2b2lkIGJhcihmaW5hbCBiPGNhcmV0Pik7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL0RvdWJsZUNvbnN0YW50LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvRG91YmxlQ29uc3RhbnQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNjNjNzczCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL0RvdWJsZUNvbnN0YW50LmphdmEKQEAgLTAsMCArMSw4IEBACitpbnRlcmZhY2UgSW50ZiB7IEludGYgWEZPTyA9IG51bGw7IH0KK2ludGVyZmFjZSBJbnRmMiBleHRlbmRzIEludGYgeyBJbnRmMiBYRk9PID0gbnVsbDsgfQorCitwdWJsaWMgY2xhc3MgQmFyIGltcGxlbWVudHMgSW50ZjIgeworICBwdWJsaWMgc3RhdGljIHZvaWQgZnBwKCkgeworICAgIFhGPGNhcmV0PngKKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL0RvdWJsZUV4cGVjdGVkVHlwZUZhY3RvcnlNZXRob2QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9Eb3VibGVFeHBlY3RlZFR5cGVGYWN0b3J5TWV0aG9kLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmIyZjdkZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9Eb3VibGVFeHBlY3RlZFR5cGVGYWN0b3J5TWV0aG9kLmphdmEKQEAgLTAsMCArMSwxMSBAQAorY2xhc3MgWm9vMiB7CisgICAgeworICAgICAgICBmb28oS2V5PGNhcmV0PiwgdHJ1ZSk7CisgICAgfQorCisgICAgPFQ+IHZvaWQgZm9vKEtleTxUPiBmLCBUIGIpIHsgfQorfQorCitjbGFzcyBLZXk8VD4geworICAgIHN0YXRpYyA8VD4gS2V5PFQ+IGNyZWF0ZSgpIHt9IAorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9Eb3VibGVGYWxzZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL0RvdWJsZUZhbHNlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWVhZTI3MQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9Eb3VibGVGYWxzZS5qYXZhCkBAIC0wLDAgKzEsMTMgQEAKK3B1YmxpYyBjbGFzcyBGb28geworCisgICAgdm9pZCBiYXIoKSB7CisgICAgICAgIGVxdWFscyhuZXcgT2JqZWN0KCkgeworICAgICAgICAgICAgYm9vbGVhbiBiYXIoKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGY8Y2FyZXQ+CisgICAgICAgICAgICB9CisgICAgICAgIH0pOworICAgIH0KKworICBib29sZWFuIGZlZmVmZWYoKSB7fQorCit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvRHVwbGljYXRlRXhwZWN0ZWRUeXBlSW5UeXBlQXJndW1lbnRMaXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvRHVwbGljYXRlRXhwZWN0ZWRUeXBlSW5UeXBlQXJndW1lbnRMaXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGNmMmY0YwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9EdXBsaWNhdGVFeHBlY3RlZFR5cGVJblR5cGVBcmd1bWVudExpc3QuamF2YQpAQCAtMCwwICsxLDggQEAKK2ltcG9ydCBqYXZhLnV0aWwuKjsKK2ltcG9ydCBqYXZhLnV0aWwuTGlzdDsKKworY2xhc3MgWm9vIHsKKyAgeworICAgIExpc3Q8U3RyaW5nPiBsID0gbmV3IEFycmF5TGlzdDxTdHJpPGNhcmV0Pj4KKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL0VuY2xvc2luZ1RoaXMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9FbmNsb3NpbmdUaGlzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWNmODEzNmQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvRW5jbG9zaW5nVGhpcy5qYXZhCkBAIC0wLDAgKzEsNyBAQAorcHVibGljIGNsYXNzIEEgeworICBwdWJsaWMgY2xhc3MgQiB7CisgICAgdm9pZCBtKCkgeworICAgICAgQS50aGk8Y2FyZXQ+CisgICAgfQorICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvRW5jbG9zaW5nVGhpc19hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL0VuY2xvc2luZ1RoaXNfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NmFlMzc2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL0VuY2xvc2luZ1RoaXNfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDcgQEAKK3B1YmxpYyBjbGFzcyBBIHsKKyAgcHVibGljIGNsYXNzIEIgeworICAgIHZvaWQgbSgpIHsKKyAgICAgIEEudGhpczxjYXJldD4KKyAgICB9CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9FbnVtQ29uc3RhbnRGcm9tRW51bU1lbWJlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL0VudW1Db25zdGFudEZyb21FbnVtTWVtYmVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzM1MDNmMAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9FbnVtQ29uc3RhbnRGcm9tRW51bU1lbWJlci5qYXZhCkBAIC0wLDAgKzEsNiBAQAorcHVibGljIGVudW0gQnV0dG9uS2V5IHsKKyAgQ0FOQ0VMX0FMTCwKKyAgQ0FOQ0VMX1NFTEw7CisKKyAgcHVibGljIHN0YXRpYyBmaW5hbCBCdXR0b25LZXlbXSBBUlIgPSB7Q0FOQ0VMX0FMTCwgQ0FOQ0VMX1M8Y2FyZXQ+fTsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvRW51bUNvbnN0YW50RnJvbUVudW1NZW1iZXJfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9FbnVtQ29uc3RhbnRGcm9tRW51bU1lbWJlcl9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVjMGUwNTUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvRW51bUNvbnN0YW50RnJvbUVudW1NZW1iZXJfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDYgQEAKK3B1YmxpYyBlbnVtIEJ1dHRvbktleSB7CisgIENBTkNFTF9BTEwsCisgIENBTkNFTF9TRUxMOworCisgIHB1YmxpYyBzdGF0aWMgZmluYWwgQnV0dG9uS2V5W10gQVJSID0ge0NBTkNFTF9BTEwsIENBTkNFTF9TRUxMPGNhcmV0Pn07Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL0VudW1Qcml2YXRlRmluYWwuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9FbnVtUHJpdmF0ZUZpbmFsLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWFjNjdiOQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9FbnVtUHJpdmF0ZUZpbmFsLmphdmEKQEAgLTAsMCArMSw1IEBACitlbnVtIEdvbyB7CisgICAgYSxiOworCisgICAgcHJpdmF0ZSBmaW48Y2FyZXQ+Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL0VudW1Qcml2YXRlRmluYWxfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9FbnVtUHJpdmF0ZUZpbmFsX2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzBiNGFkMAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9FbnVtUHJpdmF0ZUZpbmFsX2FmdGVyLmphdmEKQEAgLTAsMCArMSw1IEBACitlbnVtIEdvbyB7CisgICAgYSxiOworCisgICAgcHJpdmF0ZSBmaW5hbCA8Y2FyZXQ+Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL0VudW1XaXRob3V0Q29uc3RhbnRzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvRW51bVdpdGhvdXRDb25zdGFudHMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYTEwNjZlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL0VudW1XaXRob3V0Q29uc3RhbnRzLmphdmEKQEAgLTAsMCArMSBAQAorcHVibGljIGVudW0gRm9vb29vbyB7IHByaXZhdGUgRm9vbzxjYXJldD4gfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9FbnVtV2l0aG91dENvbnN0YW50c19hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL0VudW1XaXRob3V0Q29uc3RhbnRzX2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGFlZjY5YQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9FbnVtV2l0aG91dENvbnN0YW50c19hZnRlci5qYXZhCkBAIC0wLDAgKzEgQEAKK3B1YmxpYyBlbnVtIEZvb29vb28geyBwcml2YXRlIEZvb29vb288Y2FyZXQ+IH0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvRXhjZXNzU3BhY2VJblR5cGVDYXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvRXhjZXNzU3BhY2VJblR5cGVDYXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjcxNjFmMgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9FeGNlc3NTcGFjZUluVHlwZUNhc3QuamF2YQpAQCAtMCwwICsxLDExIEBACitwdWJsaWMgY2xhc3MgTWFpbiB7CisgICAgaW50ZXJmYWNlIEFjY291bnQge30KKworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKKyAgICAgICAgamF2YS51dGlsLkxpc3QgbGlzdDsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBsaXN0LnNpemUoKTsgaSsrKSB7CisgICAgICAgICAgT2JqZWN0IG8gPSAoQWNjbzxjYXJldD5saXN0LmdldChpKTsKKyAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4obyk7CisgICAgICAgIH0KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL0V4Y2Vzc1NwYWNlSW5UeXBlQ2FzdF9hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL0V4Y2Vzc1NwYWNlSW5UeXBlQ2FzdF9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRiOTViYzcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvRXhjZXNzU3BhY2VJblR5cGVDYXN0X2FmdGVyLmphdmEKQEAgLTAsMCArMSwxMSBAQAorcHVibGljIGNsYXNzIE1haW4geworICAgIGludGVyZmFjZSBBY2NvdW50IHt9CisKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CisgICAgICAgIGphdmEudXRpbC5MaXN0IGxpc3Q7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbGlzdC5zaXplKCk7IGkrKykgeworICAgICAgICAgIE9iamVjdCBvID0gKEFjY291bnQ8Y2FyZXQ+bGlzdC5nZXQoaSk7CisgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKG8pOworICAgICAgICB9CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9FeGNsdWRlSW5zdGFuY2VJbm5lckNsYXNzZXMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9FeGNsdWRlSW5zdGFuY2VJbm5lckNsYXNzZXMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNjE4Y2U2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL0V4Y2x1ZGVJbnN0YW5jZUlubmVyQ2xhc3Nlcy5qYXZhCkBAIC0wLDAgKzEsMyBAQAorcHVibGljIGNsYXNzIE1haW4geworICBJbm5lcjxjYXJldD4KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvRXhjbHVkZVN0cmluZ0J1ZmZlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL0V4Y2x1ZGVTdHJpbmdCdWZmZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xM2M5YmMzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL0V4Y2x1ZGVTdHJpbmdCdWZmZXIuamF2YQpAQCAtMCwwICsxLDMgQEAKK3B1YmxpYyBjbGFzcyBNYWluIHsKKyAgU3RyaW5nQnVmPGNhcmV0PgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9FeGNsdWRlZEluc3RhbmNlSW5uZXJDbGFzc0NyZWF0aW9uLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvRXhjbHVkZWRJbnN0YW5jZUlubmVyQ2xhc3NDcmVhdGlvbi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjExNGIxZjgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvRXhjbHVkZWRJbnN0YW5jZUlubmVyQ2xhc3NDcmVhdGlvbi5qYXZhCkBAIC0wLDAgKzEsNiBAQAorcHVibGljIGNsYXNzIE1haW4geworICB2b2lkIGYoZm9vLk91dGVyIG91dGVyKSB7CisgICAgb3V0ZXIubmV3IEluPGNhcmV0PngKKyAgfQorICAKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvRXhjbHVkZWRJbnN0YW5jZUlubmVyQ2xhc3NRdWFsaWZpZWRSZWZlcmVuY2UuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9FeGNsdWRlZEluc3RhbmNlSW5uZXJDbGFzc1F1YWxpZmllZFJlZmVyZW5jZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgzZjY0NTYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvRXhjbHVkZWRJbnN0YW5jZUlubmVyQ2xhc3NRdWFsaWZpZWRSZWZlcmVuY2UuamF2YQpAQCAtMCwwICsxLDUgQEAKK3B1YmxpYyBjbGFzcyBNYWluIHsKKyAgdm9pZCBmKGZvby5PdXRlci5JbjxjYXJldD54IG91dGVyKSB7CisgIH0KKyAgCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL0V4cGVjdGVkVHlwZU1lbWJlcnNWZXJzdXNTdGF0aWNJbXBvcnRzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvRXhwZWN0ZWRUeXBlTWVtYmVyc1ZlcnN1c1N0YXRpY0ltcG9ydHMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYzQxNDY5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL0V4cGVjdGVkVHlwZU1lbWJlcnNWZXJzdXNTdGF0aWNJbXBvcnRzLmphdmEKQEAgLTAsMCArMSwxMiBAQAoraW1wb3J0IHN0YXRpYyBTdXBlci5YRk9POworCitjbGFzcyBTdXBlciB7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdXBlciBYRk9PID0gbnVsbDsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN1cGVyIFhGT1ggPSB0cnVlOworfQorCitjbGFzcyBJbnRlcm1lZGlhdGUgeworICAgIFN1cGVyIHMgPSBYRk88Y2FyZXQ+Cit9CisKKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL0V4cGVjdGVkVHlwZXNEb3RTZWxlY3RzSXRlbS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL0V4cGVjdGVkVHlwZXNEb3RTZWxlY3RzSXRlbS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE1NGQ0YTEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvRXhwZWN0ZWRUeXBlc0RvdFNlbGVjdHNJdGVtLmphdmEKQEAgLTAsMCArMSwxNCBAQAorY2xhc3MgU3VwZXIgeworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3VwZXIgRk9PID0gbnVsbDsKK30KK2NsYXNzIFN1cGVyMiB7Cit9CisKK2NsYXNzIEludGVybWVkaWF0ZSB7CisgICAgdm9pZCBmb28oU3VwZXIgcywgaW50IGEpIHt9CisgIHZvaWQgYmFyKCkgeworICAgIGZvbyhTdTxjYXJldD4pCisgIH0KK30KKworCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvRXhwZWN0ZWRUeXBlc0RvdFNlbGVjdHNJdGVtX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvRXhwZWN0ZWRUeXBlc0RvdFNlbGVjdHNJdGVtX2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjI4NGI2OQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9FeHBlY3RlZFR5cGVzRG90U2VsZWN0c0l0ZW1fYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDE0IEBACitjbGFzcyBTdXBlciB7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdXBlciBGT08gPSBudWxsOworfQorY2xhc3MgU3VwZXIyIHsKK30KKworY2xhc3MgSW50ZXJtZWRpYXRlIHsKKyAgICB2b2lkIGZvbyhTdXBlciBzLCBpbnQgYSkge30KKyAgdm9pZCBiYXIoKSB7CisgICAgZm9vKFN1cGVyLjxjYXJldD4pCisgIH0KK30KKworCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvRXh0ZW5kc0luVHlwZVBhcmFtcy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL0V4dGVuZHNJblR5cGVQYXJhbXMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNzg5ODEwMwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9FeHRlbmRzSW5UeXBlUGFyYW1zLmphdmEKQEAgLTAsMCArMSw4IEBACitjbGFzcyBMaXN0PFQ+IHt9CisKK2NsYXNzIEZvbyB7CisKKyAgTGlzdDw/IGU8Y2FyZXQ+PgorICAKKworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9FeHRlbmRzSW5UeXBlUGFyYW1zX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvRXh0ZW5kc0luVHlwZVBhcmFtc19hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY4ZGMzOTMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvRXh0ZW5kc0luVHlwZVBhcmFtc19hZnRlci5qYXZhCkBAIC0wLDAgKzEsOCBAQAorY2xhc3MgTGlzdDxUPiB7fQorCitjbGFzcyBGb28geworCisgIExpc3Q8PyBleHRlbmRzIDxjYXJldD4+CisgIAorCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL0ZpZWxkSXRlbVByZXNlbnRhdGlvbkdlbmVyaWNzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvRmllbGRJdGVtUHJlc2VudGF0aW9uR2VuZXJpY3MuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40Y2U2Yzg4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL0ZpZWxkSXRlbVByZXNlbnRhdGlvbkdlbmVyaWNzLmphdmEKQEAgLTAsMCArMSwxMCBAQAorY2xhc3MgUmVmPFQ+IHsKKyAgVCB0YXJnZXQ7Cit9CisKK2NsYXNzIFRlc3RQb2ludDJEIHsKKyAgICB2b2lkIChSZWY8U3RyaW5nPiByKSB7CisgICAgICAgIHIuPGNhcmV0PgorCisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9GaWVsZE5lZ2F0aW9uLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvRmllbGROZWdhdGlvbi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjczNzlmMDEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvRmllbGROZWdhdGlvbi5qYXZhCkBAIC0wLDAgKzEsNyBAQAorcHVibGljIGNsYXNzIENvbnN0Q29uZmlnIHsKKyAgcHVibGljIHN0YXRpYyBib29sZWFuIHRlc3RNb2RlID0gZmFsc2U7CisgICAgCisgICAgeworICAgICAgICBpZiAodGVzdDxjYXJldD54KQorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvRmllbGROZWdhdGlvbl9hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL0ZpZWxkTmVnYXRpb25fYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zOWU0YWYwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL0ZpZWxkTmVnYXRpb25fYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDcgQEAKK3B1YmxpYyBjbGFzcyBDb25zdENvbmZpZyB7CisgIHB1YmxpYyBzdGF0aWMgYm9vbGVhbiB0ZXN0TW9kZSA9IGZhbHNlOworICAgIAorICAgIHsKKyAgICAgICAgaWYgKCF0ZXN0TW9kZTxjYXJldD54KQorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvRmllbGRUeXBlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvRmllbGRUeXBlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTJhYmMzNAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9GaWVsZFR5cGUuamF2YQpAQCAtMCwwICsxLDQgQEAKK2NsYXNzIEEgeworICAgIHByaXZhdGUgbG88Y2FyZXQ+IGxvY2FsaXplZFN0cmluZ01hbmFnZXI7CisKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9GaWVsZFR5cGVfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9GaWVsZFR5cGVfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNzJlOWRiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL0ZpZWxkVHlwZV9hZnRlci5qYXZhCkBAIC0wLDAgKzEsNCBAQAorY2xhc3MgQSB7CisgICAgcHJpdmF0ZSBsb25nPGNhcmV0PiBsb2NhbGl6ZWRTdHJpbmdNYW5hZ2VyOworCit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvRmllbGRXaXRoQ2FzdGluZ0NhcmV0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvRmllbGRXaXRoQ2FzdGluZ0NhcmV0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWZjNGRmYgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9GaWVsZFdpdGhDYXN0aW5nQ2FyZXQuamF2YQpAQCAtMCwwICsxLDkgQEAKK3B1YmxpYyBjbGFzcyBUZXN0Q2xhc3MgeworICAgIGludCBhYmM7CisKKyAgICBwdWJsaWMgVGVzdENsYXNzIGNyZWF0ZShPYmplY3QgbykgeworICAgICAgICBpZiAobyBpbnN0YW5jZW9mIFRlc3RDbGFzcykgeworICAgICAgICAgICAgby5hYjxjYXJldD4KKyAgICAgICAgfQorICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9GaWVsZFdpdGhDYXN0aW5nQ2FyZXRfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9GaWVsZFdpdGhDYXN0aW5nQ2FyZXRfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMTlhMTJhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL0ZpZWxkV2l0aENhc3RpbmdDYXJldF9hZnRlci5qYXZhCkBAIC0wLDAgKzEsOSBAQAorcHVibGljIGNsYXNzIFRlc3RDbGFzcyB7CisgICAgaW50IGFiYzsKKworICAgIHB1YmxpYyBUZXN0Q2xhc3MgY3JlYXRlKE9iamVjdCBvKSB7CisgICAgICAgIGlmIChvIGluc3RhbmNlb2YgVGVzdENsYXNzKSB7CisgICAgICAgICAgICAoKFRlc3RDbGFzcykgbykuYWJjPGNhcmV0PgorICAgICAgICB9CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL0ZpbmFsQmVmb3JlTWV0aG9kQ2FsbC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL0ZpbmFsQmVmb3JlTWV0aG9kQ2FsbC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMyOGMzYjIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvRmluYWxCZWZvcmVNZXRob2RDYWxsLmphdmEKQEAgLTAsMCArMSw1IEBACitjbGFzcyBBIHsKKyAgICBBKCkgeworICAgICAgICBmaW48Y2FyZXQ+dGhpcy50b1N0cmluZygpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvRmluYWxJbkZvckxvb3AuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9GaW5hbEluRm9yTG9vcC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE0NzA1YTkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvRmluYWxJbkZvckxvb3AuamF2YQpAQCAtMCwwICsxLDcgQEAKK3B1YmxpYyBjbGFzcyBGb29vbyB7CisKKyAgICB7CisgICAgICAgIGZvciAoZmluPGNhcmV0PngpCisgICAgfQorCit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvRmluYWxJbkZvckxvb3AyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvRmluYWxJbkZvckxvb3AyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDFhZWZkMQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9GaW5hbEluRm9yTG9vcDIuamF2YQpAQCAtMCwwICsxLDkgQEAKK2ltcG9ydCBqYXZhLnV0aWwuQXJyYXlMaXN0OworCitwdWJsaWMgY2xhc3MgRm9vb28geworCisgICAgeworICAgICAgICBmb3IgKGZpbjxjYXJldD4gT2JqZWN0IG8gOiBuZXcgQXJyYXlMaXN0KCkpCisgICAgfQorCit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvRmluaXNoQ2xhc3NOYW1lV2l0aERvdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL0ZpbmlzaENsYXNzTmFtZVdpdGhEb3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iOWQyZTM0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL0ZpbmlzaENsYXNzTmFtZVdpdGhEb3QuamF2YQpAQCAtMCwwICsxLDcgQEAKK3B1YmxpYyBjbGFzcyBNeUZpcnN0VGVzdENsYXNzRm9vIHsKKworICAgIHsKKyAgICAgICAgTUZUPGNhcmV0PngKKyAgICB9CisKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvRmluaXNoQ2xhc3NOYW1lV2l0aERvdF9hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL0ZpbmlzaENsYXNzTmFtZVdpdGhEb3RfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YWZhZjc1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL0ZpbmlzaENsYXNzTmFtZVdpdGhEb3RfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDcgQEAKK3B1YmxpYyBjbGFzcyBNeUZpcnN0VGVzdENsYXNzRm9vIHsKKworICAgIHsKKyAgICAgICAgTXlGaXJzdFRlc3RDbGFzc0Zvby48Y2FyZXQ+eAorICAgIH0KKworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9GaW5pc2hDbGFzc05hbWVXaXRoTFBhcmVuLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvRmluaXNoQ2xhc3NOYW1lV2l0aExQYXJlbi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE2N2Y3ODIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvRmluaXNoQ2xhc3NOYW1lV2l0aExQYXJlbi5qYXZhCkBAIC0wLDAgKzEsMyBAQAorcHVibGljIGNsYXNzIEZvbyB7CisgIFN0cmluZyBzID0gbmV3IFN0cmluPGNhcmV0PgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9GaW5pc2hDbGFzc05hbWVXaXRoTFBhcmVuX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvRmluaXNoQ2xhc3NOYW1lV2l0aExQYXJlbl9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQxNTk5NjAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvRmluaXNoQ2xhc3NOYW1lV2l0aExQYXJlbl9hZnRlci5qYXZhCkBAIC0wLDAgKzEsMyBAQAorcHVibGljIGNsYXNzIEZvbyB7CisgIFN0cmluZyBzID0gbmV3IFN0cmluZyg8Y2FyZXQ+KQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9GaW5pc2hXaXRoRG90LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvRmluaXNoV2l0aERvdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM4MTY5YzIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvRmluaXNoV2l0aERvdC5qYXZhCkBAIC0wLDAgKzEsNyBAQAorY2xhc3MgRm9vIHsKKyAgICBpbnQgZm9vKCk7CisKKyAgICB7CisgICAgICBmbzxjYXJldD4KKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvRmluaXNoV2l0aERvdF9hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL0ZpbmlzaFdpdGhEb3RfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lODAyZGNkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL0ZpbmlzaFdpdGhEb3RfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDcgQEAKK2NsYXNzIEZvbyB7CisgICAgaW50IGZvbygpOworCisgICAgeworICAgICAgZm9vKCkuPGNhcmV0PgorICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9HZXR0ZXJXaXRoRXhpc3RpbmdOb25FbXB0eVBhcmFtZXRlckxpc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9HZXR0ZXJXaXRoRXhpc3RpbmdOb25FbXB0eVBhcmFtZXRlckxpc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NjVlMWMzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL0dldHRlcldpdGhFeGlzdGluZ05vbkVtcHR5UGFyYW1ldGVyTGlzdC5qYXZhCkBAIC0wLDAgKzEsNyBAQAorcHVibGljIGNsYXNzIE15Rmlyc3RUZXN0Q2xhc3NGb28geworCisgICAgeworICAgICAgICBnZXRDbDxjYXJldD4oYWJjKQorICAgIH0KKworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9HZXR0ZXJXaXRoRXhpc3RpbmdOb25FbXB0eVBhcmFtZXRlckxpc3RfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9HZXR0ZXJXaXRoRXhpc3RpbmdOb25FbXB0eVBhcmFtZXRlckxpc3RfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYTY3YjBiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL0dldHRlcldpdGhFeGlzdGluZ05vbkVtcHR5UGFyYW1ldGVyTGlzdF9hZnRlci5qYXZhCkBAIC0wLDAgKzEsNyBAQAorcHVibGljIGNsYXNzIE15Rmlyc3RUZXN0Q2xhc3NGb28geworCisgICAgeworICAgICAgICBnZXRDbGFzczxjYXJldD4oYWJjKQorICAgIH0KKworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9Ib25vclVuZGVyc2NvcmVJblByZWZpeC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL0hvbm9yVW5kZXJzY29yZUluUHJlZml4LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2U3M2YyMQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9Ib25vclVuZGVyc2NvcmVJblByZWZpeC5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKK3B1YmxpYyBjbGFzcyBRdWV0emFsY29hdGwgeworICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBGT09fQkFSOworICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBGT09fQ0hBUjsKK30KKworcHVibGljIGNsYXNzIEJlZGEgeworICAgIHsKKyAgICAgIFF1ZXR6YWxjb2F0bC5GX0I8Y2FyZXQ+CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL0hvbm9yVW5kZXJzY29yZUluUHJlZml4X2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvSG9ub3JVbmRlcnNjb3JlSW5QcmVmaXhfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44N2I2OWYxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL0hvbm9yVW5kZXJzY29yZUluUHJlZml4X2FmdGVyLmphdmEKQEAgLTAsMCArMSwxMCBAQAorcHVibGljIGNsYXNzIFF1ZXR6YWxjb2F0bCB7CisgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEZPT19CQVI7CisgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEZPT19DSEFSOworfQorCitwdWJsaWMgY2xhc3MgQmVkYSB7CisgICAgeworICAgICAgUXVldHphbGNvYXRsLkZPT19CQVI8Y2FyZXQ+CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL0lERUFERVY2NDA4LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvSURFQURFVjY0MDguamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wY2IwNTdlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL0lERUFERVY2NDA4LmphdmEKQEAgLTAsMCArMSw4IEBACitjbGFzcyBEb3VibGVUeXBlQ29tcGxldGlvbiB7CisKKyAgICBwcml2YXRlIGZpbmFsIGI8Y2FyZXQ+CisKKyAgICBEb3VibGVUeXBlQ29tcGxldGlvbihib29sZWFuIHJlc3VsdCkgeworCisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9JbXBvcnRJbkdlbmVyaWNUeXBlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvSW1wb3J0SW5HZW5lcmljVHlwZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA3YzJhNGIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvSW1wb3J0SW5HZW5lcmljVHlwZS5qYXZhCkBAIC0wLDAgKzEsNSBAQAorcHVibGljIGNsYXNzIEZvbyB7CisgICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgeworICAgICAgICBTZXQ8Y2FyZXQ+PEludGVnZXI+CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL0ltcG9ydEluR2VuZXJpY1R5cGVfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9JbXBvcnRJbkdlbmVyaWNUeXBlX2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzMwM2E2NwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9JbXBvcnRJbkdlbmVyaWNUeXBlX2FmdGVyLmphdmEKQEAgLTAsMCArMSw3IEBACitpbXBvcnQgamF2YS51dGlsLlNldDsKKworcHVibGljIGNsYXNzIEZvbyB7CisgICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgeworICAgICAgICBTZXQ8Y2FyZXQ+PEludGVnZXI+CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL0ltcG9ydFN0cmluZ1ZhbHVlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvSW1wb3J0U3RyaW5nVmFsdWUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYzMyNzk4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL0ltcG9ydFN0cmluZ1ZhbHVlLmphdmEKQEAgLTAsMCArMSw1IEBACitwdWJsaWMgY2xhc3MgQmFyIHsKKyAgICB7CisgICAgICAgIFN0cmluZ1ZhbHU8Y2FyZXQ+CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9JbXBvcnRTdHJpbmdWYWx1ZV9hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL0ltcG9ydFN0cmluZ1ZhbHVlX2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmY4MjA3MgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9JbXBvcnRTdHJpbmdWYWx1ZV9hZnRlci5qYXZhCkBAIC0wLDAgKzEsNyBAQAoraW1wb3J0IGZvby4qOworCitwdWJsaWMgY2xhc3MgQmFyIHsKKyAgICB7CisgICAgICAgIFN0cmluZ1ZhbHVlIDxjYXJldD4KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL0luVGhyb3dzQ29tcGxldGlvbi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL0luVGhyb3dzQ29tcGxldGlvbi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYxYWMyMDcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvSW5UaHJvd3NDb21wbGV0aW9uLmphdmEKQEAgLTAsMCArMSw1IEBACitjbGFzcyBBeworIHB1YmxpYyBjbGFzcyBCe30KKyBwdWJsaWMgY2xhc3MgQyBleHRlbmRzIEV4Y2VwdGlvbnt9CisgcHVibGljIGludCBtZXRob2QoKSB0aHJvd3MgPGNhcmV0PgorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL0luY051bGwuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9JbmNOdWxsLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmM1ZDBjMgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9JbmNOdWxsLmphdmEKQEAgLTAsMCArMSw1IEBACitjbGFzcyBGb28geworICAgIHsKKyAgICAgICAgKytudWw8Y2FyZXQ+CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9Jbm5lckNoYWluZWRSZXR1cm5UeXBlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvSW5uZXJDaGFpbmVkUmV0dXJuVHlwZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVjMDlhY2MKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvSW5uZXJDaGFpbmVkUmV0dXJuVHlwZS5qYXZhCkBAIC0wLDAgKzEsOSBAQAorcHVibGljIGNsYXNzIEJhcjMgeworCisgIHByb3RlY3RlZCBhYnN0cmFjdCBSZXNwb25zZS5TdGF0PGNhcmV0PgorfQorY2xhc3MgR29vIHsKKyAgcHVibGljIHN0YXRpYyBjbGFzcyBSZXNwb25zZSB7CisgICAgcHVibGljIGVudW0gU3RhdHVzIHt9CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9Jbm5lckNoYWluZWRSZXR1cm5UeXBlSW5Bbm9ueW1vdXMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9Jbm5lckNoYWluZWRSZXR1cm5UeXBlSW5Bbm9ueW1vdXMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMmNiYTBmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL0lubmVyQ2hhaW5lZFJldHVyblR5cGVJbkFub255bW91cy5qYXZhCkBAIC0wLDAgKzEsMTIgQEAKK3B1YmxpYyBjbGFzcyBCYXIzIHsKKyAgeworICAgIG5ldyBSdW5uYWJsZSgpIHsKKyAgICAgIHByb3RlY3RlZCBhYnN0cmFjdCBSZXNwb25zZS5TdGF0dTxjYXJldD4KKyAgICB9CisgIH0KK30KK2NsYXNzIEdvbyB7CisgIHB1YmxpYyBzdGF0aWMgY2xhc3MgUmVzcG9uc2UgeworICAgIHB1YmxpYyBlbnVtIFN0YXR1cyB7fQorICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvSW5uZXJDaGFpbmVkUmV0dXJuVHlwZUluQW5vbnltb3VzX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvSW5uZXJDaGFpbmVkUmV0dXJuVHlwZUluQW5vbnltb3VzX2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDNjMjUwM2YKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvSW5uZXJDaGFpbmVkUmV0dXJuVHlwZUluQW5vbnltb3VzX2FmdGVyLmphdmEKQEAgLTAsMCArMSwxMiBAQAorcHVibGljIGNsYXNzIEJhcjMgeworICB7CisgICAgbmV3IFJ1bm5hYmxlKCkgeworICAgICAgcHJvdGVjdGVkIGFic3RyYWN0IEdvby5SZXNwb25zZS5TdGF0dXM8Y2FyZXQ+CisgICAgfQorICB9Cit9CitjbGFzcyBHb28geworICBwdWJsaWMgc3RhdGljIGNsYXNzIFJlc3BvbnNlIHsKKyAgICBwdWJsaWMgZW51bSBTdGF0dXMge30KKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL0lubmVyQ2hhaW5lZFJldHVyblR5cGVfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9Jbm5lckNoYWluZWRSZXR1cm5UeXBlX2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWIzMzkwOAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9Jbm5lckNoYWluZWRSZXR1cm5UeXBlX2FmdGVyLmphdmEKQEAgLTAsMCArMSw5IEBACitwdWJsaWMgY2xhc3MgQmFyMyB7CisKKyAgcHJvdGVjdGVkIGFic3RyYWN0IEdvby5SZXNwb25zZS5TdGF0dXM8Y2FyZXQ+Cit9CitjbGFzcyBHb28geworICBwdWJsaWMgc3RhdGljIGNsYXNzIFJlc3BvbnNlIHsKKyAgICBwdWJsaWMgZW51bSBTdGF0dXMge30KKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL0lubmVyRW51bUNvbnN0YW50LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvSW5uZXJFbnVtQ29uc3RhbnQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YjU1N2MyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL0lubmVyRW51bUNvbnN0YW50LmphdmEKQEAgLTAsMCArMSw5IEBACitjbGFzcyBGb28geworICAgIHsKKyAgICAgICAgQmFyIGIgPSBGT09PTzxjYXJldD4KKyAgICB9CisKKyAgICBlbnVtIEJhciB7CisgICAgICAgIEZPT09PT09PCisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9Jbm5lckVudW1Db25zdGFudF9hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL0lubmVyRW51bUNvbnN0YW50X2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTRiNTc4ZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9Jbm5lckVudW1Db25zdGFudF9hZnRlci5qYXZhCkBAIC0wLDAgKzEsOSBAQAorY2xhc3MgRm9vIHsKKyAgICB7CisgICAgICAgIEJhciBiID0gQmFyLkZPT09PT09PPGNhcmV0PgorICAgIH0KKworICAgIGVudW0gQmFyIHsKKyAgICAgICAgRk9PT09PT08KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL0luc3RhbmNlTWFnaWNNZXRob2QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9JbnN0YW5jZU1hZ2ljTWV0aG9kLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGYyODgwYwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9JbnN0YW5jZU1hZ2ljTWV0aG9kLmphdmEKQEAgLTAsMCArMSw3IEBACitwdWJsaWMgY2xhc3MgSmF2YUNsYXNzIHsKKyAgPFQ+IFQgbWFnaWMoKSB7fQorCisgIHZvaWQgZm9vKCkgeworICAgIG1hZzxjYXJldD4KKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL0luc3RhbmNlTWFnaWNNZXRob2RfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9JbnN0YW5jZU1hZ2ljTWV0aG9kX2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGViYzU5YQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9JbnN0YW5jZU1hZ2ljTWV0aG9kX2FmdGVyLmphdmEKQEAgLTAsMCArMSw3IEBACitwdWJsaWMgY2xhc3MgSmF2YUNsYXNzIHsKKyAgPFQ+IFQgbWFnaWMoKSB7fQorCisgIHZvaWQgZm9vKCkgeworICAgIG1hZ2ljKCk8Y2FyZXQ+CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9JbnRlcmZhY2VJbXBsZW1lbnRhdGlvbk5vQ2FzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL0ludGVyZmFjZUltcGxlbWVudGF0aW9uTm9DYXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWYzNDI2OQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9JbnRlcmZhY2VJbXBsZW1lbnRhdGlvbk5vQ2FzdC5qYXZhCkBAIC0wLDAgKzEsMTggQEAKK3B1YmxpYyBjbGFzcyBVdGlsMiB7CisgIHZvaWQgZm9vKFhtbEF0dHJpYnV0ZSBvICkgeworICAgIGlmIChvIGluc3RhbmNlb2YgWG1sQXR0cmlidXRlSW1wbCkgeworICAgICAgby5nZXRwYXI8Y2FyZXQ+CisgICAgfQorICB9Cit9CisKK2ludGVyZmFjZSBQc2lFbGVtZW50IHsKKyAgUHNpRWxlbWVudCBnZXRQYXJlbnQoKTsKK30KK2ludGVyZmFjZSBYbWxBdHRyaWJ1dGUgZXh0ZW5kcyBQc2lFbGVtZW50IHt9CitjbGFzcyBYbWxBdHRyaWJ1dGVJbXBsIGltcGxlbWVudHMgWG1sQXR0cmlidXRlIHsKKyAgQE92ZXJyaWRlCisgIHB1YmxpYyBQc2lFbGVtZW50IGdldFBhcmVudCgpIHsKKyAgICByZXR1cm4gbnVsbDsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9JbnRlcmZhY2VJbXBsZW1lbnRhdGlvbk5vQ2FzdF9hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL0ludGVyZmFjZUltcGxlbWVudGF0aW9uTm9DYXN0X2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTQ3MThlZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9JbnRlcmZhY2VJbXBsZW1lbnRhdGlvbk5vQ2FzdF9hZnRlci5qYXZhCkBAIC0wLDAgKzEsMTggQEAKK3B1YmxpYyBjbGFzcyBVdGlsMiB7CisgIHZvaWQgZm9vKFhtbEF0dHJpYnV0ZSBvICkgeworICAgIGlmIChvIGluc3RhbmNlb2YgWG1sQXR0cmlidXRlSW1wbCkgeworICAgICAgby5nZXRQYXJlbnQoKTxjYXJldD4KKyAgICB9CisgIH0KK30KKworaW50ZXJmYWNlIFBzaUVsZW1lbnQgeworICBQc2lFbGVtZW50IGdldFBhcmVudCgpOworfQoraW50ZXJmYWNlIFhtbEF0dHJpYnV0ZSBleHRlbmRzIFBzaUVsZW1lbnQge30KK2NsYXNzIFhtbEF0dHJpYnV0ZUltcGwgaW1wbGVtZW50cyBYbWxBdHRyaWJ1dGUgeworICBAT3ZlcnJpZGUKKyAgcHVibGljIFBzaUVsZW1lbnQgZ2V0UGFyZW50KCkgeworICAgIHJldHVybiBudWxsOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL0ludGVyc2VjdGlvblR5cGVNZW1iZXJzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvSW50ZXJzZWN0aW9uVHlwZU1lbWJlcnMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43YTc3YzJkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL0ludGVyc2VjdGlvblR5cGVNZW1iZXJzLmphdmEKQEAgLTAsMCArMSwxOCBAQAoraW50ZXJmYWNlIElBeworICAgIHZvaWQgZm9vYSgpOworfQorCitpbnRlcmZhY2UgSUJ7CisgICAgdm9pZCBmb29iKCk7Cit9CisKK2ludGVyZmFjZSBJQzxUIGV4dGVuZHMgSUE+eworICAgIFQgYygpOworfQorCitjbGFzcyBLIHsKKyAgICB2b2lkIGZvbyhJQzw/IGV4dGVuZHMgSUI+IHgpeworICAgICAgICB4LmMoKS5mbzxjYXJldD4KKworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvS2V5d29yZFNtYXJ0RW50ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9LZXl3b3JkU21hcnRFbnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkyZDBlYjIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvS2V5d29yZFNtYXJ0RW50ZXIuamF2YQpAQCAtMCwwICsxLDYgQEAKK3B1YmxpYyBjbGFzcyBCYXIgeworICAgIHsKKyAgICAgICAgU3RyaW5nIG51bGxpdHkgPSAiIjsKKyAgICAgICAgaWYgKHRoaXMgIT0gbnVsPGNhcmV0PikKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL0tleXdvcmRTbWFydEVudGVyX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvS2V5d29yZFNtYXJ0RW50ZXJfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MDEzMzVjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL0tleXdvcmRTbWFydEVudGVyX2FmdGVyLmphdmEKQEAgLTAsMCArMSw4IEBACitwdWJsaWMgY2xhc3MgQmFyIHsKKyAgICB7CisgICAgICAgIFN0cmluZyBudWxsaXR5ID0gIiI7CisgICAgICAgIGlmICh0aGlzICE9IG51bGwpIHsKKyAgICAgICAgICAgIDxjYXJldD4KKyAgICAgICAgfQorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvS2V5d29yZHNJbk5hbWUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9LZXl3b3Jkc0luTmFtZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA4NDE4NTQ4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL0tleXdvcmRzSW5OYW1lLmphdmEKQEAgLTAsMCArMSw0IEBACitjbGFzcyBBeworICAgIEEgbnVsbEEgPSBuZXcgQSgpOworICAgIEEgeCA9IG51bGw8Y2FyZXQ+Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL0tleXdvcmRzSW5OYW1lX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvS2V5d29yZHNJbk5hbWVfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZmQ2MzBjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL0tleXdvcmRzSW5OYW1lX2FmdGVyLmphdmEKQEAgLTAsMCArMSw0IEBACitjbGFzcyBBeworICAgIEEgbnVsbEEgPSBuZXcgQSgpOworICAgIEEgeCA9IG51bGxBPGNhcmV0PgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9MYXN0RXhwcmVzc2lvbkluRm9yLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvTGFzdEV4cHJlc3Npb25JbkZvci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU0OTVhYzYyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL0xhc3RFeHByZXNzaW9uSW5Gb3IuamF2YQpAQCAtMCwwICsxLDggQEAKK3B1YmxpYyBjbGFzcyBNYWluIHsKKyAgTWFpbiBnZXRQYXJlbnQoKSB7fQorCisgIHsKKyAgICBNYWluIHY7CisgICAgZm9yICg7O3YuZ2V0UGE8Y2FyZXQ+KQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL0xhc3RFeHByZXNzaW9uSW5Gb3JfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9MYXN0RXhwcmVzc2lvbkluRm9yX2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTJmYmY4MAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9MYXN0RXhwcmVzc2lvbkluRm9yX2FmdGVyLmphdmEKQEAgLTAsMCArMSw4IEBACitwdWJsaWMgY2xhc3MgTWFpbiB7CisgIE1haW4gZ2V0UGFyZW50KCkge30KKworICB7CisgICAgTWFpbiB2OworICAgIGZvciAoOzt2LmdldFBhcmVudCgpPGNhcmV0PikKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9MaXN0QXJyYXlMaXN0Q2FzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL0xpc3RBcnJheUxpc3RDYXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDU1OWNmMAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9MaXN0QXJyYXlMaXN0Q2FzdC5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKK2ltcG9ydCBqYXZhLnV0aWwuTGlzdDsKK2ltcG9ydCBqYXZhLnV0aWwuQXJyYXlMaXN0OworCitwdWJsaWMgY2xhc3MgQSB7CisgIHZvaWQgZm9vKExpc3Q8U3RyaW5nPiBsKSB7CisgICAgaWYgKGwgaW5zdGFuY2VvZiBBcnJheUxpc3QpIHsKKyAgICAgIGwuZ2U8Y2FyZXQ+CisgICAgfQorICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvTGlzdEFycmF5TGlzdENhc3RfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9MaXN0QXJyYXlMaXN0Q2FzdF9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdjNGQ1YTcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvTGlzdEFycmF5TGlzdENhc3RfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDEwIEBACitpbXBvcnQgamF2YS51dGlsLkxpc3Q7CitpbXBvcnQgamF2YS51dGlsLkFycmF5TGlzdDsKKworcHVibGljIGNsYXNzIEEgeworICB2b2lkIGZvbyhMaXN0PFN0cmluZz4gbCkgeworICAgIGlmIChsIGluc3RhbmNlb2YgQXJyYXlMaXN0KSB7CisgICAgICBsLmdldCg8Y2FyZXQ+KQorICAgIH0KKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL0xpdmVUZW1wbGF0ZVByZWZpeFRhYi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL0xpdmVUZW1wbGF0ZVByZWZpeFRhYi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVlNzg4ZTcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvTGl2ZVRlbXBsYXRlUHJlZml4VGFiLmphdmEKQEAgLTAsMCArMSw3IEBACitjbGFzcyBYeHggeworICB7CisgICAgaW50IGl0ZXJhYWE7CisgICAgaW50IGl0ZXJiYmI7CisgICAgaXRlcjxjYXJldD4KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9MaXZlVGVtcGxhdGVQcmVmaXhUYWJfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9MaXZlVGVtcGxhdGVQcmVmaXhUYWJfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZTFkNzA0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL0xpdmVUZW1wbGF0ZVByZWZpeFRhYl9hZnRlci5qYXZhCkBAIC0wLDAgKzEsNyBAQAorY2xhc3MgWHh4IHsKKyAgeworICAgIGludCBpdGVyYWFhOworICAgIGludCBpdGVyYmJiOworICAgIGl0ZXJhYWE8Y2FyZXQ+CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvTG9jYWxDbGFzc05hbWUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9Mb2NhbENsYXNzTmFtZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQyYTM4ODYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvTG9jYWxDbGFzc05hbWUuamF2YQpAQCAtMCwwICsxLDYgQEAKK3B1YmxpYyBjbGFzcyBGb29NYXA8SyxWIGV4dGVuZHMgSz4gaW1wbGVtZW50cyBZb3VyTWFwSW50ZXJmYWNlPEssIFY+IHsKKyAgdm9pZCBmb28oKSB7CisgICAgY2xhc3MgWm9vb29vb29vIHt9CisgICAgWm9vPGNhcmV0PgorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL0xvY2FsQ2xhc3NOYW1lX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvTG9jYWxDbGFzc05hbWVfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MmIyZDJlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL0xvY2FsQ2xhc3NOYW1lX2FmdGVyLmphdmEKQEAgLTAsMCArMSw2IEBACitwdWJsaWMgY2xhc3MgRm9vTWFwPEssViBleHRlbmRzIEs+IGltcGxlbWVudHMgWW91ck1hcEludGVyZmFjZTxLLCBWPiB7CisgIHZvaWQgZm9vKCkgeworICAgIGNsYXNzIFpvb29vb29vbyB7fQorICAgIFpvb29vb29vbzxjYXJldD4KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9Mb2NhbENsYXNzVHdpY2UuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9Mb2NhbENsYXNzVHdpY2UuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMzk2YzI4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL0xvY2FsQ2xhc3NUd2ljZS5qYXZhCkBAIC0wLDAgKzEsNyBAQAorY2xhc3MgWm9vb29vIHt9CitwdWJsaWMgY2xhc3MgRm9vTWFwPEssViBleHRlbmRzIEs+IGltcGxlbWVudHMgWW91ck1hcEludGVyZmFjZTxLLCBWPiB7CisgIHZvaWQgZm9vKCkgeworICAgIGNsYXNzIFpvb296IGltcGxlbWVudHMgUnVubmFibGUge30KKyAgICBSdW5uYWJsZSByID0gbmV3IFpvPGNhcmV0PgorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL0xvY2FsVG9wTGV2ZWxDb25mbGljdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL0xvY2FsVG9wTGV2ZWxDb25mbGljdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRhYTQ3YzEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvTG9jYWxUb3BMZXZlbENvbmZsaWN0LmphdmEKQEAgLTAsMCArMSw4IEBACitjbGFzcyBab29veiB7fQorY2xhc3MgWm9vb29vIHt9CitwdWJsaWMgY2xhc3MgRm9vTWFwPEssViBleHRlbmRzIEs+IGltcGxlbWVudHMgWW91ck1hcEludGVyZmFjZTxLLCBWPiB7CisgIHZvaWQgZm9vKCkgeworICAgIGNsYXNzIFpvb296IGltcGxlbWVudHMgUnVubmFibGUge30KKyAgICBSdW5uYWJsZSByID0gbmV3IFpvPGNhcmV0PgorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL01hcHNJbnZhbGlkYXRpb24uamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9NYXBzSW52YWxpZGF0aW9uLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjk3ODE3MQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9NYXBzSW52YWxpZGF0aW9uLmphdmEKQEAgLTAsMCArMSwxMiBAQAorY2xhc3MgRm9vIGV4dGVuZHMgU3VwZXIgeworICBpbnQgYWFhOworICBpbnQgYmJiOworCisgICAgcHVibGljIGludCBnPGNhcmV0Pm9vKCkgeworICAgIH0KK30KKworY2xhc3MgU3VwZXIgeworICAgIHB1YmxpYyBpbnQgZ29vKCkgeworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvTWVtYmVyc0luU3RhdGljSW1wb3J0cy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL01lbWJlcnNJblN0YXRpY0ltcG9ydHMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNmVhNDk3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL01lbWJlcnNJblN0YXRpY0ltcG9ydHMuamF2YQpAQCAtMCwwICsxLDIgQEAKK2ltcG9ydCBzdGF0aWMgamF2YS51dGlsLkNvbGxlY3Rpb25zLmVtcHR5U2U8Y2FyZXQ+CitjbGFzcyBBIHt9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL01lbWJlcnNJblN0YXRpY0ltcG9ydHNfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9NZW1iZXJzSW5TdGF0aWNJbXBvcnRzX2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjVmY2JlYQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9NZW1iZXJzSW5TdGF0aWNJbXBvcnRzX2FmdGVyLmphdmEKQEAgLTAsMCArMSwyIEBACitpbXBvcnQgc3RhdGljIGphdmEudXRpbC5Db2xsZWN0aW9ucy5lbXB0eVNldDxjYXJldD4KK2NsYXNzIEEge30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvTWV0aG9kQ29sb24uamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9NZXRob2RDb2xvbi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg3OTkwNzQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvTWV0aG9kQ29sb24uamF2YQpAQCAtMCwwICsxLDggQEAKK2NsYXNzIEJhciB7CisgIGludCB6b29vYSgpIHt9CisgIGludCB6b29vYigpIHt9CisKKyAgaW50IGZvbygpIHsKKyAgICByZXR1cm4gdHJ1ZSA/IHpvbzxjYXJldD4KKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL01ldGhvZENvbG9uX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvTWV0aG9kQ29sb25fYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNWMxMzM0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL01ldGhvZENvbG9uX2FmdGVyLmphdmEKQEAgLTAsMCArMSw4IEBACitjbGFzcyBCYXIgeworICBpbnQgem9vb2EoKSB7fQorICBpbnQgem9vb2IoKSB7fQorCisgIGludCBmb28oKSB7CisgICAgcmV0dXJuIHRydWUgPyB6b29vYSgpIDogPGNhcmV0PgorICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvTWV0aG9kSXRlbVByZXNlbnRhdGlvbi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL01ldGhvZEl0ZW1QcmVzZW50YXRpb24uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMThhOGZhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL01ldGhvZEl0ZW1QcmVzZW50YXRpb24uamF2YQpAQCAtMCwwICsxLDUgQEAKK2NsYXNzIEZvbyB7CisgIHsKKyAgICAiIi5lcXVhbHM8Y2FyZXQ+CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9NZXRob2RJdGVtUHJlc2VudGF0aW9uR2VuZXJpY3MuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9NZXRob2RJdGVtUHJlc2VudGF0aW9uR2VuZXJpY3MuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMTI0MmE1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL01ldGhvZEl0ZW1QcmVzZW50YXRpb25HZW5lcmljcy5qYXZhCkBAIC0wLDAgKzEsOCBAQAoraW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7CisKK2NsYXNzIFRlc3RQb2ludDJEIHsKKyAgICB7CisgICAgICAgIG5ldyBBcnJheUxpc3Q8U3RyaW5nPigpLmFkPGNhcmV0PgorCisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9NZXRob2RMb29rdXAuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9NZXRob2RMb29rdXAuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43Yzk2Y2FiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL01ldGhvZExvb2t1cC5qYXZhCkBAIC0wLDAgKzEsMTcgQEAKK2NsYXNzIEIgeworICAgIHZvaWQgc2V0QShpbnQgaSkge30KKyAgICB2b2lkIHNldEIoaW50IGkpIHt9CisgIH0KKworICBjbGFzcyBDIHsKKyAgICBCIGI7CisgIH0KKworICBjbGFzcyBBIHsKKworICBDIGM7CisKKyAgQSgpIHsKKyAgICBjLmIuc2V0PGNhcmV0PkEoKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9NZXRob2RMb29rdXAyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvTWV0aG9kTG9va3VwMi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFiMGJmMjMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvTWV0aG9kTG9va3VwMi5qYXZhCkBAIC0wLDAgKzEsNyBAQAorY2xhc3MgQSB7CisgIGludCBnZXRBQUEoaW50IHBhcmFtKSB7IHJldHVybiAwOyB9CisgIHB1YmxpYyB2b2lkIGFjdGlvblBlcmZvcm1lZChBIGEpIHsKKyAgICBhLmdldEFBPGNhcmV0PgorICAgICgoQSlhKS5hY3Rpb25QZXJmb3JtZWQodGhpcyk7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvTWV0aG9kTG9va3VwMl9BZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL01ldGhvZExvb2t1cDJfQWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MWMyNmE3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL01ldGhvZExvb2t1cDJfQWZ0ZXIuamF2YQpAQCAtMCwwICsxLDcgQEAKK2NsYXNzIEEgeworICBpbnQgZ2V0QUFBKGludCBwYXJhbSkgeyByZXR1cm4gMDsgfQorICBwdWJsaWMgdm9pZCBhY3Rpb25QZXJmb3JtZWQoQSBhKSB7CisgICAgYS5nZXRBQUEoPGNhcmV0PikKKyAgICAoKEEpYSkuYWN0aW9uUGVyZm9ybWVkKHRoaXMpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL01ldGhvZExvb2t1cDJfQWZ0ZXIyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvTWV0aG9kTG9va3VwMl9BZnRlcjIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMTIzMzk5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL01ldGhvZExvb2t1cDJfQWZ0ZXIyLmphdmEKQEAgLTAsMCArMSw3IEBACitjbGFzcyBBIHsKKyAgaW50IGdldEFBQShpbnQgcGFyYW0pIHsgcmV0dXJuIDA7IH0KKyAgcHVibGljIHZvaWQgYWN0aW9uUGVyZm9ybWVkKEEgYSkgeworICAgIGEuZ2V0QUFBCisgICAgKDxjYXJldD4oQSlhKS5hY3Rpb25QZXJmb3JtZWQodGhpcyk7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvTWV0aG9kTG9va3VwMy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL01ldGhvZExvb2t1cDMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZWU4Mjc4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL01ldGhvZExvb2t1cDMuamF2YQpAQCAtMCwwICsxLDYgQEAKK2NsYXNzIEEgeworICB2b2lkIGdldEFBQShpbnQgcGFyYW0pIHsgcmV0dXJuIDA7IH0KKyAgcHVibGljIHZvaWQgYWN0aW9uUGVyZm9ybWVkKEEgYSkgeworICAgIGEuZ2V0QUE8Y2FyZXQ+enp6KDIzOSk7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvTWV0aG9kTG9va3VwM19BZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL01ldGhvZExvb2t1cDNfQWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MWQ3NmI1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL01ldGhvZExvb2t1cDNfQWZ0ZXIuamF2YQpAQCAtMCwwICsxLDYgQEAKK2NsYXNzIEEgeworICB2b2lkIGdldEFBQShpbnQgcGFyYW0pIHsgcmV0dXJuIDA7IH0KKyAgcHVibGljIHZvaWQgYWN0aW9uUGVyZm9ybWVkKEEgYSkgeworICAgIGEuZ2V0QUFBKDxjYXJldD4yMzkpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL01ldGhvZE5vUGFpckJyYWNlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvTWV0aG9kTm9QYWlyQnJhY2UuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNDAzYmYyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL01ldGhvZE5vUGFpckJyYWNlLmphdmEKQEAgLTAsMCArMSw4IEBACitjbGFzcyBNeUNsYXNzIHsKKwordm9pZCBmb28oKSB7fQorCit7CisgIGZvPGNhcmV0PgorfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9NZXRob2ROb1BhaXJCcmFjZV9hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL01ldGhvZE5vUGFpckJyYWNlX2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzk3NmQ5MgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9NZXRob2ROb1BhaXJCcmFjZV9hZnRlci5qYXZhCkBAIC0wLDAgKzEsOCBAQAorY2xhc3MgTXlDbGFzcyB7CisKK3ZvaWQgZm9vKCkge30KKworeworICBmb28oPGNhcmV0PgorfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9NZXRob2RQYXJhbWV0ZXJBbm5vdGF0aW9uQ2xhc3MuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9NZXRob2RQYXJhbWV0ZXJBbm5vdGF0aW9uQ2xhc3MuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MTgwYzYyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL01ldGhvZFBhcmFtZXRlckFubm90YXRpb25DbGFzcy5qYXZhCkBAIC0wLDAgKzEsMyBAQAorcHVibGljIGNsYXNzIEZvbyB7CisgIE9iamVjdCBmb28oQERlcHJlY2F0ZWQoRm9vLmM8Y2FyZXQ+KSl7IH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9NZXRob2RQYXJhbWV0ZXJBbm5vdGF0aW9uQ2xhc3NfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9NZXRob2RQYXJhbWV0ZXJBbm5vdGF0aW9uQ2xhc3NfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMjU0YTA4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL01ldGhvZFBhcmFtZXRlckFubm90YXRpb25DbGFzc19hZnRlci5qYXZhCkBAIC0wLDAgKzEsMyBAQAorcHVibGljIGNsYXNzIEZvbyB7CisgIE9iamVjdCBmb28oQERlcHJlY2F0ZWQoRm9vLmNsYXNzPGNhcmV0PikpeyB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvTWV0aG9kUGFyYW1ldGVyVHlwZURvdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL01ldGhvZFBhcmFtZXRlclR5cGVEb3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYWU3OTFjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL01ldGhvZFBhcmFtZXRlclR5cGVEb3QuamF2YQpAQCAtMCwwICsxLDQgQEAKK3B1YmxpYyBjbGFzcyBEcml2ZXIgeworCisgICAgdm9pZCBtYWluKFN0cmluZy48Y2FyZXQ+IGFyZ3MpIHsgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL01ldGhvZFBhcmVudGhlc2VzU3BhY2VzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvTWV0aG9kUGFyZW50aGVzZXNTcGFjZXMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZDMwOTUwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL01ldGhvZFBhcmVudGhlc2VzU3BhY2VzLmphdmEKQEAgLTAsMCArMSw4IEBACitwdWJsaWMgY2xhc3MgQmFyIHsKKyAgICB7CisgICAgICAgIGZvbyAoIGJhPGNhcmV0PiApCisgICAgfQorCisgICAgdm9pZCBmb28oaW50IHgpIHt9CisgICAgaW50IGJhcigpIHt9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvTWV0aG9kUGFyZW50aGVzZXNTcGFjZXNBcmdzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvTWV0aG9kUGFyZW50aGVzZXNTcGFjZXNBcmdzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODI1NmQ1MQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9NZXRob2RQYXJlbnRoZXNlc1NwYWNlc0FyZ3MuamF2YQpAQCAtMCwwICsxLDggQEAKK3B1YmxpYyBjbGFzcyBCYXIgeworICAgIHsKKyAgICAgICAgZm9vICggYmE8Y2FyZXQ+ICkKKyAgICB9CisKKyAgICB2b2lkIGZvbyhpbnQgeCkge30KKyAgICBpbnQgYmFyKGludCB4KSB7fQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL01ldGhvZFBhcmVudGhlc2VzU3BhY2VzQXJnc19hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL01ldGhvZFBhcmVudGhlc2VzU3BhY2VzQXJnc19hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA3MjZiZjQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvTWV0aG9kUGFyZW50aGVzZXNTcGFjZXNBcmdzX2FmdGVyLmphdmEKQEAgLTAsMCArMSw4IEBACitwdWJsaWMgY2xhc3MgQmFyIHsKKyAgICB7CisgICAgICAgIGZvbyAoIGJhciAoIDxjYXJldD4gKSApCisgICAgfQorCisgICAgdm9pZCBmb28oaW50IHgpIHt9CisgICAgaW50IGJhcihpbnQgeCkge30KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9NZXRob2RQYXJlbnRoZXNlc1NwYWNlc19hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL01ldGhvZFBhcmVudGhlc2VzU3BhY2VzX2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDIyNmZiNAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9NZXRob2RQYXJlbnRoZXNlc1NwYWNlc19hZnRlci5qYXZhCkBAIC0wLDAgKzEsOCBAQAorcHVibGljIGNsYXNzIEJhciB7CisgICAgeworICAgICAgICBmb28gKCBiYXIgKCk8Y2FyZXQ+ICkKKyAgICB9CisKKyAgICB2b2lkIGZvbyhpbnQgeCkge30KKyAgICBpbnQgYmFyKCkge30KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9NZXRob2RSZWZlcmVuY2VDYWxsQ29udGV4dC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL01ldGhvZFJlZmVyZW5jZUNhbGxDb250ZXh0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTJjN2NmNAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9NZXRob2RSZWZlcmVuY2VDYWxsQ29udGV4dC5qYXZhCkBAIC0wLDAgKzEsOSBAQAoraW1wb3J0IGphdmEudXRpbC4qOworCitjbGFzcyBUZXN0IHsKKyAgICB2b2lkIGFhYShUZXN0IHApIHsgcmV0dXJuIDE7IH0KKyAgICB2b2lkIHRlc3QoKSB7CisgICAgICAgIGMoVGVzdDo6PGNhcmV0Pik7CisgICAgfQorICAgIHZvaWQgYyhDb21wYXJhdG9yPFRlc3Q+IGMpe30KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9NZXRob2RSZWZlcmVuY2VDYWxsQ29udGV4dF9hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL01ldGhvZFJlZmVyZW5jZUNhbGxDb250ZXh0X2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmQyZmY4YQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9NZXRob2RSZWZlcmVuY2VDYWxsQ29udGV4dF9hZnRlci5qYXZhCkBAIC0wLDAgKzEsOSBAQAoraW1wb3J0IGphdmEudXRpbC4qOworCitjbGFzcyBUZXN0IHsKKyAgICB2b2lkIGFhYShUZXN0IHApIHsgcmV0dXJuIDE7IH0KKyAgICB2b2lkIHRlc3QoKSB7CisgICAgICAgIGMoVGVzdDo6Yyk7CisgICAgfQorICAgIHZvaWQgYyhDb21wYXJhdG9yPFRlc3Q+IGMpe30KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9NZXRob2RSZWZlcmVuY2VOb1N0YXRpYy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL01ldGhvZFJlZmVyZW5jZU5vU3RhdGljLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTc5Zjc5YwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9NZXRob2RSZWZlcmVuY2VOb1N0YXRpYy5qYXZhCkBAIC0wLDAgKzEsOCBAQAoraW1wb3J0IGphdmEudXRpbC4qOworCitjbGFzcyBUZXN0IHsKKyAgICB2b2lkIGFhYShUZXN0IHApIHsgcmV0dXJuIDE7IH0KKyAgICB2b2lkIHRlc3QoKSB7CisgICAgICAgIENvbXBhcmF0b3I8VGVzdD4gcjIgPSBUZXN0Ojo8Y2FyZXQ+CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL01ldGhvZFJlZmVyZW5jZU5vU3RhdGljX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvTWV0aG9kUmVmZXJlbmNlTm9TdGF0aWNfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNjgwZmE5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL01ldGhvZFJlZmVyZW5jZU5vU3RhdGljX2FmdGVyLmphdmEKQEAgLTAsMCArMSw4IEBACitpbXBvcnQgamF2YS51dGlsLio7CisKK2NsYXNzIFRlc3QgeworICAgIHZvaWQgYWFhKFRlc3QgcCkgeyByZXR1cm4gMTsgfQorICAgIHZvaWQgdGVzdCgpIHsKKyAgICAgICAgQ29tcGFyYXRvcjxUZXN0PiByMiA9IFRlc3Q6OnRlc3Q7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL01ldGhvZFJldHVyblR5cGUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9NZXRob2RSZXR1cm5UeXBlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWNiMzRlMwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9NZXRob2RSZXR1cm5UeXBlLmphdmEKQEAgLTAsMCArMSw2IEBACitwdWJsaWMgY2xhc3MgRm9vQmFyIHsKKworICAgIFN0cmluZ0J1ZjxjYXJldD4gZm9vKCkgeworICAgIH0KKworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9NZXRob2RSZXR1cm5UeXBlTm9TcGFjZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL01ldGhvZFJldHVyblR5cGVOb1NwYWNlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmFlMGQ4ZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9NZXRob2RSZXR1cm5UeXBlTm9TcGFjZS5qYXZhCkBAIC0wLDAgKzEsNiBAQAorcHVibGljIGNsYXNzIEZvb0JhciB7CisKKyAgICBTdHJpbmdCdWY8Y2FyZXQ+Ym9vKCkgeworICAgIH0KKworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9NZXRob2RSZXR1cm5UeXBlTm9TcGFjZV9hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL01ldGhvZFJldHVyblR5cGVOb1NwYWNlX2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2M4OTQzYgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9NZXRob2RSZXR1cm5UeXBlTm9TcGFjZV9hZnRlci5qYXZhCkBAIC0wLDAgKzEsNiBAQAorcHVibGljIGNsYXNzIEZvb0JhciB7CisKKyAgICBTdHJpbmdCdWZmZXI8Y2FyZXQ+Ym9vKCkgeworICAgIH0KKworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9NZXRob2RSZXR1cm5UeXBlX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvTWV0aG9kUmV0dXJuVHlwZV9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE3YzI1ZTQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvTWV0aG9kUmV0dXJuVHlwZV9hZnRlci5qYXZhCkBAIC0wLDAgKzEsNiBAQAorcHVibGljIGNsYXNzIEZvb0JhciB7CisKKyAgICBTdHJpbmdCdWZmZXI8Y2FyZXQ+IGZvbygpIHsKKyAgICB9CisKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvTWV0aG9kU3F1YXJlQnJhY2tldC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL01ldGhvZFNxdWFyZUJyYWNrZXQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MTAzMzcwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL01ldGhvZFNxdWFyZUJyYWNrZXQuamF2YQpAQCAtMCwwICsxLDkgQEAKK2NsYXNzIEZvbyB7CisgIGludFtdIGFhYWEoaW50IHgpe30KKyAgaW50W10gYWFhYigpe30KKworCisgIHsKKyAgICBhYWE8Y2FyZXQ+CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvTWV0aG9kU3F1YXJlQnJhY2tldF9hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL01ldGhvZFNxdWFyZUJyYWNrZXRfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNTYzMjYyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL01ldGhvZFNxdWFyZUJyYWNrZXRfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDkgQEAKK2NsYXNzIEZvbyB7CisgIGludFtdIGFhYWEoaW50IHgpe30KKyAgaW50W10gYWFhYigpe30KKworCisgIHsKKyAgICBhYWFhKClbPGNhcmV0Pl0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9NZXRob2RXaXRoTGVmdFBhclRhaWxUeXBlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvTWV0aG9kV2l0aExlZnRQYXJUYWlsVHlwZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA0MDNiZjIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvTWV0aG9kV2l0aExlZnRQYXJUYWlsVHlwZS5qYXZhCkBAIC0wLDAgKzEsOCBAQAorY2xhc3MgTXlDbGFzcyB7CisKK3ZvaWQgZm9vKCkge30KKworeworICBmbzxjYXJldD4KK30KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvTWV0aG9kV2l0aExlZnRQYXJUYWlsVHlwZTIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9NZXRob2RXaXRoTGVmdFBhclRhaWxUeXBlMi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMzOGExZmEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvTWV0aG9kV2l0aExlZnRQYXJUYWlsVHlwZTIuamF2YQpAQCAtMCwwICsxLDggQEAKK2NsYXNzIE15Q2xhc3MgeworCit2b2lkIGZvbyhpbnQgYSkge30KKworeworICBmbzxjYXJldD4KK30KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvTWV0aG9kV2l0aExlZnRQYXJUYWlsVHlwZTJfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9NZXRob2RXaXRoTGVmdFBhclRhaWxUeXBlMl9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI0YjVjMTYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvTWV0aG9kV2l0aExlZnRQYXJUYWlsVHlwZTJfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDggQEAKK2NsYXNzIE15Q2xhc3MgeworCit2b2lkIGZvbyhpbnQgYSkge30KKworeworICBmb28oPGNhcmV0Pik7Cit9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL01ldGhvZFdpdGhMZWZ0UGFyVGFpbFR5cGVOb1BhaXJCcmFjZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL01ldGhvZFdpdGhMZWZ0UGFyVGFpbFR5cGVOb1BhaXJCcmFjZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA0MDNiZjIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvTWV0aG9kV2l0aExlZnRQYXJUYWlsVHlwZU5vUGFpckJyYWNlLmphdmEKQEAgLTAsMCArMSw4IEBACitjbGFzcyBNeUNsYXNzIHsKKwordm9pZCBmb28oKSB7fQorCit7CisgIGZvPGNhcmV0PgorfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9NZXRob2RXaXRoTGVmdFBhclRhaWxUeXBlTm9QYWlyQnJhY2VfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9NZXRob2RXaXRoTGVmdFBhclRhaWxUeXBlTm9QYWlyQnJhY2VfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jOTc2ZDkyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL01ldGhvZFdpdGhMZWZ0UGFyVGFpbFR5cGVOb1BhaXJCcmFjZV9hZnRlci5qYXZhCkBAIC0wLDAgKzEsOCBAQAorY2xhc3MgTXlDbGFzcyB7CisKK3ZvaWQgZm9vKCkge30KKworeworICBmb28oPGNhcmV0PgorfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9NZXRob2RXaXRoTGVmdFBhclRhaWxUeXBlTm9QYWlyQnJhY2VfYWZ0ZXIyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvTWV0aG9kV2l0aExlZnRQYXJUYWlsVHlwZU5vUGFpckJyYWNlX2FmdGVyMi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM5NzZkOTIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvTWV0aG9kV2l0aExlZnRQYXJUYWlsVHlwZU5vUGFpckJyYWNlX2FmdGVyMi5qYXZhCkBAIC0wLDAgKzEsOCBAQAorY2xhc3MgTXlDbGFzcyB7CisKK3ZvaWQgZm9vKCkge30KKworeworICBmb28oPGNhcmV0PgorfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9NZXRob2RXaXRoTGVmdFBhclRhaWxUeXBlX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvTWV0aG9kV2l0aExlZnRQYXJUYWlsVHlwZV9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc2ODA4MTIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvTWV0aG9kV2l0aExlZnRQYXJUYWlsVHlwZV9hZnRlci5qYXZhCkBAIC0wLDAgKzEsOCBAQAorY2xhc3MgTXlDbGFzcyB7CisKK3ZvaWQgZm9vKCkge30KKworeworICBmb28oPGNhcmV0Pik7Cit9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL011bHRpUmVzb2x2ZVF1YWxpZmllci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL011bHRpUmVzb2x2ZVF1YWxpZmllci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNhOWI2OTIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvTXVsdGlSZXNvbHZlUXVhbGlmaWVyLmphdmEKQEAgLTAsMCArMSwxNCBAQAorY2xhc3MgRm9vIHsKKyAgU3RyaW5nIHh4eCgpOworfQorCitwdWJsaWMgY2xhc3MgTXlGaXJzdFRlc3RDbGFzc0ZvbyB7CisKKyAgICB7CisgICAgICAgZm9vKCkueHg8Y2FyZXQ+CisgICAgfQorCisgICAgRm9vIGZvbyhpbnQgYSkge30KKyAgICBGb28gZm9vKFN0cmluZyBhKSB7fQorCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL011bHRpUmVzb2x2ZVF1YWxpZmllcl9hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL011bHRpUmVzb2x2ZVF1YWxpZmllcl9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQzMTZhMTUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvTXVsdGlSZXNvbHZlUXVhbGlmaWVyX2FmdGVyLmphdmEKQEAgLTAsMCArMSwxNCBAQAorY2xhc3MgRm9vIHsKKyAgU3RyaW5nIHh4eCgpOworfQorCitwdWJsaWMgY2xhc3MgTXlGaXJzdFRlc3RDbGFzc0ZvbyB7CisKKyAgICB7CisgICAgICAgZm9vKCkueHh4KCk8Y2FyZXQ+CisgICAgfQorCisgICAgRm9vIGZvbyhpbnQgYSkge30KKyAgICBGb28gZm9vKFN0cmluZyBhKSB7fQorCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL05ld0NsYXNzQW5nbGVCcmFja2V0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvTmV3Q2xhc3NBbmdsZUJyYWNrZXQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MmM2MGRhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL05ld0NsYXNzQW5nbGVCcmFja2V0LmphdmEKQEAgLTAsMCArMSw5IEBACitjbGFzcyBab29vb29vbzxUPiB7IH0KK2NsYXNzIFpvb29vb296PFQ+IHsgfQorCisKK2NsYXNzIEJhciB7CisgIHsKKyAgICBuZXcgWm9vb288Y2FyZXQ+CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9OZXdDbGFzc0FuZ2xlQnJhY2tldEV4cGVjdGVkLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvTmV3Q2xhc3NBbmdsZUJyYWNrZXRFeHBlY3RlZC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRkYjAwOGEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvTmV3Q2xhc3NBbmdsZUJyYWNrZXRFeHBlY3RlZC5qYXZhCkBAIC0wLDAgKzEsNyBAQAorY2xhc3MgWm9vb29vb288VD4geyB9CisKK2NsYXNzIEJhciB7CisgIHsKKyAgICBab29vb29vbzxTdHJpbmc+IHogPSBuZXcgWm9vb288Y2FyZXQ+CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9OZXdDbGFzc0FuZ2xlQnJhY2tldEV4cGVjdGVkX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvTmV3Q2xhc3NBbmdsZUJyYWNrZXRFeHBlY3RlZF9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU3MTQ2ZDgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvTmV3Q2xhc3NBbmdsZUJyYWNrZXRFeHBlY3RlZF9hZnRlci5qYXZhCkBAIC0wLDAgKzEsNyBAQAorY2xhc3MgWm9vb29vb288VD4geyB9CisKK2NsYXNzIEJhciB7CisgIHsKKyAgICBab29vb29vbzxTdHJpbmc+IHogPSBuZXcgWm9vb29vb288PGNhcmV0Pj4oKQorICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvTmV3Q2xhc3NBbmdsZUJyYWNrZXRfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9OZXdDbGFzc0FuZ2xlQnJhY2tldF9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmExM2RjMzkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvTmV3Q2xhc3NBbmdsZUJyYWNrZXRfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDkgQEAKK2NsYXNzIFpvb29vb29vPFQ+IHsgfQorY2xhc3MgWm9vb29vb3o8VD4geyB9CisKKworY2xhc3MgQmFyIHsKKyAgeworICAgIG5ldyBab29vb29vbzw8Y2FyZXQ+PigpCisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9OZXdDbGFzc1NxdWFyZUJyYWNrZXQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9OZXdDbGFzc1NxdWFyZUJyYWNrZXQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MmM2MGRhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL05ld0NsYXNzU3F1YXJlQnJhY2tldC5qYXZhCkBAIC0wLDAgKzEsOSBAQAorY2xhc3MgWm9vb29vb288VD4geyB9CitjbGFzcyBab29vb29vejxUPiB7IH0KKworCitjbGFzcyBCYXIgeworICB7CisgICAgbmV3IFpvb29vPGNhcmV0PgorICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvTmV3Q2xhc3NTcXVhcmVCcmFja2V0X2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvTmV3Q2xhc3NTcXVhcmVCcmFja2V0X2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmI2MmNkMAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9OZXdDbGFzc1NxdWFyZUJyYWNrZXRfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDkgQEAKK2NsYXNzIFpvb29vb29vPFQ+IHsgfQorY2xhc3MgWm9vb29vb3o8VD4geyB9CisKKworY2xhc3MgQmFyIHsKKyAgeworICAgIG5ldyBab29vb29vb1s8Y2FyZXQ+XQorICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvTmV3RXhwZWN0ZWRDbGFzc1BhcmVucy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL05ld0V4cGVjdGVkQ2xhc3NQYXJlbnMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZjA1MGUzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL05ld0V4cGVjdGVkQ2xhc3NQYXJlbnMuamF2YQpAQCAtMCwwICsxLDkgQEAKK2NsYXNzIEZvb29vIHsKKyAgaW50ZXJmYWNlIEJhciB7fQorfQorCitjbGFzcyBCYXIgeworICAgIHsKKyAgICAgICAgRm9vb28gYyA9IG5ldyBGb29vPGNhcmV0PgorICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9OZXdFeHBlY3RlZENsYXNzUGFyZW5zX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvTmV3RXhwZWN0ZWRDbGFzc1BhcmVuc19hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFkNjZlNGUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvTmV3RXhwZWN0ZWRDbGFzc1BhcmVuc19hZnRlci5qYXZhCkBAIC0wLDAgKzEsOSBAQAorY2xhc3MgRm9vb28geworICBpbnRlcmZhY2UgQmFyIHt9Cit9CisKK2NsYXNzIEJhciB7CisgICAgeworICAgICAgICBGb29vbyBjID0gbmV3IEZvb29vKCk8Y2FyZXQ+CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL05ld0dlbmVyaWNDbGFzcy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL05ld0dlbmVyaWNDbGFzcy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE5MjYxZTAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvTmV3R2VuZXJpY0NsYXNzLmphdmEKQEAgLTAsMCArMSw1IEBACitwdWJsaWMgY2xhc3MgRHJpdmVyIHsKKyAgeworICAgIG5ldyBBcnJheUxpPGNhcmV0PgorICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvTmV3R2VuZXJpY0NsYXNzX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvTmV3R2VuZXJpY0NsYXNzX2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTA4M2JhYwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9OZXdHZW5lcmljQ2xhc3NfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDcgQEAKK2ltcG9ydCBqYXZhLnV0aWwuQXJyYXlMaXN0OworCitwdWJsaWMgY2xhc3MgRHJpdmVyIHsKKyAgeworICAgIG5ldyBBcnJheUxpc3Q8PGNhcmV0Pj4oKQorICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvTmV3R2VuZXJpY0ludGVyZmFjZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL05ld0dlbmVyaWNJbnRlcmZhY2UuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NjIxNjA0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL05ld0dlbmVyaWNJbnRlcmZhY2UuamF2YQpAQCAtMCwwICsxLDkgQEAKK3B1YmxpYyBjbGFzcyBEcml2ZXIgeworICB7CisgICAgbmV3IEZvb288Y2FyZXQ+CisgIH0KK30KKworaW50ZXJmYWNlIEZvb29vPFQ+IHsKKyAgdm9pZCBiYXIoKTsKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9OZXdHZW5lcmljSW50ZXJmYWNlX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvTmV3R2VuZXJpY0ludGVyZmFjZV9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI4NTM0ZTIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvTmV3R2VuZXJpY0ludGVyZmFjZV9hZnRlci5qYXZhCkBAIC0wLDAgKzEsOSBAQAorcHVibGljIGNsYXNzIERyaXZlciB7CisgIHsKKyAgICBuZXcgRm9vb288PGNhcmV0Pj4oKQorICB9Cit9CisKK2ludGVyZmFjZSBGb29vbzxUPiB7CisgIHZvaWQgYmFyKCk7Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvTm9BbGxDbGFzc2VzT25RdWFsaWZpZWRSZWZlcmVuY2UuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9Ob0FsbENsYXNzZXNPblF1YWxpZmllZFJlZmVyZW5jZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ4NDZlNmYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvTm9BbGxDbGFzc2VzT25RdWFsaWZpZWRSZWZlcmVuY2UuamF2YQpAQCAtMCwwICsxLDEwIEBACitpbnRlcmZhY2UgQSB7Cit9CitpbnRlcmZhY2UgQXhCeEN4IGV4dGVuZHMgQXsKK30KKworY2xhc3MgRm9vIHsKKyAgICB7CisgICAgICAgIEEuQUJDPGNhcmV0PgorICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9Ob0FyZ3NNZXRob2RTcGFjZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL05vQXJnc01ldGhvZFNwYWNlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmU5NTU3NzEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvTm9BcmdzTWV0aG9kU3BhY2UuamF2YQpAQCAtMCwwICsxLDggQEAKK2NsYXNzIEZvbyB7CisgIGludCBmb28xKCkge30KKyAgaW50IGZvbzIoKSB7fQorCisgIHsKKyAgICBmb288Y2FyZXQ+CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvTm9BcmdzTWV0aG9kU3BhY2VfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9Ob0FyZ3NNZXRob2RTcGFjZV9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlmMTM4NTIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvTm9BcmdzTWV0aG9kU3BhY2VfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDggQEAKK2NsYXNzIEZvbyB7CisgIGludCBmb28xKCkge30KKyAgaW50IGZvbzIoKSB7fQorCisgIHsKKyAgICBmb28xKCkgPGNhcmV0PgorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL05vQ2xvc2luZ1doZW5DaG9vc2luZ1dpdGhQYXJlbkJlZm9yZUlkZW50aWZpZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9Ob0Nsb3NpbmdXaGVuQ2hvb3NpbmdXaXRoUGFyZW5CZWZvcmVJZGVudGlmaWVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTk2ODJhOAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9Ob0Nsb3NpbmdXaGVuQ2hvb3NpbmdXaXRoUGFyZW5CZWZvcmVJZGVudGlmaWVyLmphdmEKQEAgLTAsMCArMSw1IEBACitjbGFzcyBGb28geworICB7CisgICAgdG9TPGNhcmV0Pnh4eAorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL05vQ2xvc2luZ1doZW5DaG9vc2luZ1dpdGhQYXJlbkJlZm9yZUlkZW50aWZpZXJfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9Ob0Nsb3NpbmdXaGVuQ2hvb3NpbmdXaXRoUGFyZW5CZWZvcmVJZGVudGlmaWVyX2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDg5ZDEyMQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9Ob0Nsb3NpbmdXaGVuQ2hvb3NpbmdXaXRoUGFyZW5CZWZvcmVJZGVudGlmaWVyX2FmdGVyLmphdmEKQEAgLTAsMCArMSw1IEBACitjbGFzcyBGb28geworICB7CisgICAgdG9TdHJpbmcoPGNhcmV0Pnh4eAorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL05vQ29tbW9uUHJlZml4SW5zaWRlSWRlbnRpZmllci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL05vQ29tbW9uUHJlZml4SW5zaWRlSWRlbnRpZmllci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQyMzgwOWMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvTm9Db21tb25QcmVmaXhJbnNpZGVJZGVudGlmaWVyLmphdmEKQEAgLTAsMCArMSw4IEBACitwdWJsaWMgY2xhc3MgVGVzdENhc2UgeworCXsKKyAgICAgICAgaW50IGZhaTE7CisgICAgICAgIGludCBmYWkyOworICAgICAgICBmYTxjYXJldD5hYWFhYQorCisJfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9Ob0RvdE92ZXJ3cml0ZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL05vRG90T3ZlcndyaXRlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzdhMDRjMwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9Ob0RvdE92ZXJ3cml0ZS5qYXZhCkBAIC0wLDAgKzEsOCBAQAorcHVibGljIGNsYXNzIEphdmFDbGFzcyB7CisgIE9iamVjdCBtYWdpYygpIHt9CisgIE9iamVjdCBtYWdpYzIoKSB7fQorCisgIHZvaWQgZm9vKCkgeworICAgIG1hZzxjYXJldD4uYWFhCisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9Ob0RvdE92ZXJ3cml0ZV9hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL05vRG90T3ZlcndyaXRlX2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDUwNDk1NQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9Ob0RvdE92ZXJ3cml0ZV9hZnRlci5qYXZhCkBAIC0wLDAgKzEsOCBAQAorcHVibGljIGNsYXNzIEphdmFDbGFzcyB7CisgIE9iamVjdCBtYWdpYygpIHt9CisgIE9iamVjdCBtYWdpYzIoKSB7fQorCisgIHZvaWQgZm9vKCkgeworICAgIG1hZ2ljKCkuPGNhcmV0Pi5hYWEKKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL05vRm9yY2VCcmFjZXMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9Ob0ZvcmNlQnJhY2VzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzlhN2Q1NAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9Ob0ZvcmNlQnJhY2VzLmphdmEKQEAgLTAsMCArMSw4IEBACitpbXBvcnQgamF2YS5pby5GaWxlOworCitwdWJsaWMgY2xhc3MgRm9vIHsKKyAgdm9pZCBmb28oYm9vbGVhbiBmbGFnKSB7CisgICAgICBpZiAoJ1xcJyA9PSBGaWxlLnNlcGFyYUNoPGNhcmV0PikKKyAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigpOworICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvTm9Gb3JjZUJyYWNlc19hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL05vRm9yY2VCcmFjZXNfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42N2JmYzMxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL05vRm9yY2VCcmFjZXNfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDggQEAKK2ltcG9ydCBqYXZhLmlvLkZpbGU7CisKK3B1YmxpYyBjbGFzcyBGb28geworICB2b2lkIGZvbyhib29sZWFuIGZsYWcpIHsKKyAgICAgIGlmICgnXFwnID09IEZpbGUuc2VwYXJhdG9yQ2hhcjxjYXJldD4pCisgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oKTsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL05vR2VuZXJpY3NXaGVuQ2hvb3NpbmdXaXRoUGFyZW4uamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9Ob0dlbmVyaWNzV2hlbkNob29zaW5nV2l0aFBhcmVuLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjIxZDQyOAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9Ob0dlbmVyaWNzV2hlbkNob29zaW5nV2l0aFBhcmVuLmphdmEKQEAgLTAsMCArMSw1IEBACitjbGFzcyBGb28geworICB7CisgICAgbmV3IEhhc2g8Y2FyZXQ+CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvTm9HZW5lcmljc1doZW5DaG9vc2luZ1dpdGhQYXJlbl9hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL05vR2VuZXJpY3NXaGVuQ2hvb3NpbmdXaXRoUGFyZW5fYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYmI1MWIxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL05vR2VuZXJpY3NXaGVuQ2hvb3NpbmdXaXRoUGFyZW5fYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDcgQEAKK2ltcG9ydCBqYXZhLnV0aWwuSGFzaE1hcDsKKworY2xhc3MgRm9vIHsKKyAgeworICAgIG5ldyBIYXNoTWFwKDxjYXJldD4pCisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvTm9NZXRob2RzSW5Ob25TdGF0aWNJbXBvcnRzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvTm9NZXRob2RzSW5Ob25TdGF0aWNJbXBvcnRzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTQzOWFlNgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9Ob01ldGhvZHNJbk5vblN0YXRpY0ltcG9ydHMuamF2YQpAQCAtMCwwICsxLDIgQEAKK2ltcG9ydCBqYXZhLnV0aWwuQ29sbGVjdGlvbnMuPGNhcmV0PgorY2xhc3MgQSB7fQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9Ob01ldGhvZHNJblBhcmFtZXRlclR5cGUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9Ob01ldGhvZHNJblBhcmFtZXRlclR5cGUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMmE2ZmFlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL05vTWV0aG9kc0luUGFyYW1ldGVyVHlwZS5qYXZhCkBAIC0wLDAgKzEsMyBAQAorY2xhc3MgRm9vIHsKKyAgc3RhdGljIHZvaWQgZm9vKGY8Y2FyZXQ+aW50IGEpIHt9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL05vUGFyZW50aGVzZXNBcm91bmRDYWxsUXVhbGlmaWVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvTm9QYXJlbnRoZXNlc0Fyb3VuZENhbGxRdWFsaWZpZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNmZlNjhmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL05vUGFyZW50aGVzZXNBcm91bmRDYWxsUXVhbGlmaWVyLmphdmEKQEAgLTAsMCArMSw2IEBACitwdWJsaWMgY2xhc3MgRm9vIHsKKyAgU3RyaW5nIGdldFN0cmluZygpIHt9CisgIHsKKyAgICAgIGdldFMuc3Vic2U8Y2FyZXQ+CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9Ob1BhcmVudGhlc2VzQXJvdW5kQ2FsbFF1YWxpZmllcl9hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL05vUGFyZW50aGVzZXNBcm91bmRDYWxsUXVhbGlmaWVyX2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzMyYWY0NgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9Ob1BhcmVudGhlc2VzQXJvdW5kQ2FsbFF1YWxpZmllcl9hZnRlci5qYXZhCkBAIC0wLDAgKzEsNiBAQAorcHVibGljIGNsYXNzIEZvbyB7CisgIFN0cmluZyBnZXRTdHJpbmcoKSB7fQorICB7CisgICAgICBnZXRTdHJpbmcoKS5zdWJTZXF1ZW5jZSg8Y2FyZXQ+KQorICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvTm9SZXR1cm5BZnRlckRvdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL05vUmV0dXJuQWZ0ZXJEb3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NmU3ODI0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL05vUmV0dXJuQWZ0ZXJEb3QuamF2YQpAQCAtMCwwICsxLDYgQEAKK3B1YmxpYyBjbGFzcyBab28geworICB7CisgICAgaWYgKHRydWUpIHRvU3RyaW5nKCkuPGNhcmV0PgorICB9CisKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9Ob1JldHVybkluVGVybmFyeS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL05vUmV0dXJuSW5UZXJuYXJ5LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjk0NzEwMwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9Ob1JldHVybkluVGVybmFyeS5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKK2ltcG9ydCBqYXZheC5zd2luZy4qOworaW1wb3J0IGphdmEuYXd0Lio7CisKK3B1YmxpYyBjbGFzcyBCYXIgeworICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CisgICAgYm9vbGVhbiByZXRyZXJlID0gZmFsc2U7CisgICAgZm9vKGFyZ3MgPT0gbnVsbCA/IHRydWUgOiByZXQ8Y2FyZXQ+KQorICB9Cit9CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9Ob1JldHVybkluVGVybmFyeV9hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL05vUmV0dXJuSW5UZXJuYXJ5X2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTg5MTBiMgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9Ob1JldHVybkluVGVybmFyeV9hZnRlci5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKK2ltcG9ydCBqYXZheC5zd2luZy4qOworaW1wb3J0IGphdmEuYXd0Lio7CisKK3B1YmxpYyBjbGFzcyBCYXIgeworICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CisgICAgYm9vbGVhbiByZXRyZXJlID0gZmFsc2U7CisgICAgZm9vKGFyZ3MgPT0gbnVsbCA/IHRydWUgOiByZXRyZXJlPGNhcmV0PikKKyAgfQorfQorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvTm9TZW1pY29sb25BZnRlckV4aXN0aW5nUGFyZW50aGVzZXNFc3BlY2lhbGx5SWZJdHNBQ2FzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL05vU2VtaWNvbG9uQWZ0ZXJFeGlzdGluZ1BhcmVudGhlc2VzRXNwZWNpYWxseUlmSXRzQUNhc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZjdiMzVlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL05vU2VtaWNvbG9uQWZ0ZXJFeGlzdGluZ1BhcmVudGhlc2VzRXNwZWNpYWxseUlmSXRzQUNhc3QuamF2YQpAQCAtMCwwICsxLDUgQEAKK3B1YmxpYyBjbGFzcyBCZWRhIHsKKyAgICB7CisgICAgICBTeXN0ZW0ub3V0LnByaW50bDxjYXJldD4gICgoU3RyaW5nKSJhIikuc3ViU2VxdWVuY2UoKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvTm9TZW1pY29sb25BZnRlckV4aXN0aW5nUGFyZW50aGVzZXNFc3BlY2lhbGx5SWZJdHNBQ2FzdF9hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL05vU2VtaWNvbG9uQWZ0ZXJFeGlzdGluZ1BhcmVudGhlc2VzRXNwZWNpYWxseUlmSXRzQUNhc3RfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNTgwMmRjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL05vU2VtaWNvbG9uQWZ0ZXJFeGlzdGluZ1BhcmVudGhlc2VzRXNwZWNpYWxseUlmSXRzQUNhc3RfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDUgQEAKK3B1YmxpYyBjbGFzcyBCZWRhIHsKKyAgICB7CisgICAgICBTeXN0ZW0ub3V0LnByaW50bG4gICg8Y2FyZXQ+KFN0cmluZykiYSIpLnN1YlNlcXVlbmNlKCk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL05vU3BhY2VJblBhcmVuc1dpdGhvdXRQYXJhbXMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9Ob1NwYWNlSW5QYXJlbnNXaXRob3V0UGFyYW1zLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2MzMmE5MzcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvTm9TcGFjZUluUGFyZW5zV2l0aG91dFBhcmFtcy5qYXZhCkBAIC0wLDAgKzEsNiBAQAorcHVibGljIGNsYXNzIE1haW4geworICB7CisgICAgTWFpbiB2OworICAgIHYuaGFzaDxjYXJldD4KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9Ob1NwYWNlSW5QYXJlbnNXaXRob3V0UGFyYW1zX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvTm9TcGFjZUluUGFyZW5zV2l0aG91dFBhcmFtc19hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcxYTA5ZjEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvTm9TcGFjZUluUGFyZW5zV2l0aG91dFBhcmFtc19hZnRlci5qYXZhCkBAIC0wLDAgKzEsNiBAQAorcHVibGljIGNsYXNzIE1haW4geworICB7CisgICAgTWFpbiB2OworICAgIHYuaGFzaENvZGUoKTxjYXJldD4KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9Ob1RoaXNJbkNvbW1lbnQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9Ob1RoaXNJbkNvbW1lbnQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wM2Y0MzNmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL05vVGhpc0luQ29tbWVudC5qYXZhCkBAIC0wLDAgKzEsNiBAQAorY2xhc3MgRm9vIHsKKyAgICB7CisgICAgICAgIGludFtdIHggPSBuZXcgaW50W117IC8vIHRoPGNhcmV0PgorICAgICAgICB9CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9Ob3RPbmx5S2V5d29yZHNJbnNpZGVTd2l0Y2guamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9Ob3RPbmx5S2V5d29yZHNJbnNpZGVTd2l0Y2guamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43OGNhNmQzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL05vdE9ubHlLZXl3b3Jkc0luc2lkZVN3aXRjaC5qYXZhCkBAIC0wLDAgKzEsOSBAQAorcHVibGljIGNsYXNzIE1haW4geworICBpbnQgX2FhYTsKKworICB7CisgICAgc3dpdGNoIChhKSB7CisgICAgICBjYXNlIDE6IF88Y2FyZXQ+CisgICAgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL05vdE9ubHlLZXl3b3Jkc0luc2lkZVN3aXRjaF9hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL05vdE9ubHlLZXl3b3Jkc0luc2lkZVN3aXRjaF9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVmYTY2N2MKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvTm90T25seUtleXdvcmRzSW5zaWRlU3dpdGNoX2FmdGVyLmphdmEKQEAgLTAsMCArMSw5IEBACitwdWJsaWMgY2xhc3MgTWFpbiB7CisgIGludCBfYWFhOworCisgIHsKKyAgICBzd2l0Y2ggKGEpIHsKKyAgICAgIGNhc2UgMTogX2FhYTxjYXJldD4KKyAgICB9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvTm90aGluZ0FmdGVyTnVtZXJpY0xpdGVyYWwuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9Ob3RoaW5nQWZ0ZXJOdW1lcmljTGl0ZXJhbC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE2YjAxZTgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvTm90aGluZ0FmdGVyTnVtZXJpY0xpdGVyYWwuamF2YQpAQCAtMCwwICsxLDcgQEAKK3B1YmxpYyBjbGFzcyBNeUZpcnN0VGVzdENsYXNzRm9vIHsKKworICAgIHsKKyAgICAgIG1hcC5wdXQoImtleSIsIG5ldyBkb3VibGVbXXsxLjFkPGNhcmV0PgorICAgIH0KKworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9Pbmx5QW5ub3RhdGlvbnNBZnRlckF0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvT25seUFubm90YXRpb25zQWZ0ZXJBdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJiZGU3MzkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvT25seUFubm90YXRpb25zQWZ0ZXJBdC5qYXZhCkBAIC0wLDAgKzEsNSBAQAorY2xhc3MgQWJjZENsYXNzIHt9CitAaW50ZXJmYWNlIEFiY2RBbm5vIHt9CisKK0BBYmNkPGNhcmV0PgorY2xhc3MgRm9vIHt9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL09ubHlBbm5vdGF0aW9uc0FmdGVyQXQyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvT25seUFubm90YXRpb25zQWZ0ZXJBdDIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZWI0NGJhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL09ubHlBbm5vdGF0aW9uc0FmdGVyQXQyLmphdmEKQEAgLTAsMCArMSwxMiBAQAoraW1wb3J0IHN0YXRpYyBCZWFuVXRpbC5BLk5PVF9OVUxMOworY2xhc3MgQmVhblV0aWwgeworICBwdWJsaWMgc3RhdGljIGNsYXNzIEEgeworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgT2JqZWN0IE5PVF9OVUxMID0gbnVsbDsKKyAgfQorICBATk48Y2FyZXQ+CisgIFN0cmluZyBmb28oKSB7CisgICAgcmV0dXJuIG51bGw7CisgIH0KK30KKworQGludGVyZmFjZSBOb3ROdWxsIHt9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvT25seUFubm90YXRpb25zQWZ0ZXJBdDJfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9Pbmx5QW5ub3RhdGlvbnNBZnRlckF0Ml9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRhODk3ZTcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvT25seUFubm90YXRpb25zQWZ0ZXJBdDJfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDEyIEBACitpbXBvcnQgc3RhdGljIEJlYW5VdGlsLkEuTk9UX05VTEw7CitjbGFzcyBCZWFuVXRpbCB7CisgIHB1YmxpYyBzdGF0aWMgY2xhc3MgQSB7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBPYmplY3QgTk9UX05VTEwgPSBudWxsOworICB9CisgIEBOb3ROdWxsPGNhcmV0PgorICBTdHJpbmcgZm9vKCkgeworICAgIHJldHVybiBudWxsOworICB9Cit9CisKK0BpbnRlcmZhY2UgTm90TnVsbCB7fQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL09ubHlBbm5vdGF0aW9uc0FmdGVyQXRfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9Pbmx5QW5ub3RhdGlvbnNBZnRlckF0X2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTdhYzliMgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9Pbmx5QW5ub3RhdGlvbnNBZnRlckF0X2FmdGVyLmphdmEKQEAgLTAsMCArMSw1IEBACitjbGFzcyBBYmNkQ2xhc3Mge30KK0BpbnRlcmZhY2UgQWJjZEFubm8ge30KKworQEFiY2RBbm5vCitjbGFzcyBGb28ge30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvT25seUNsYXNzZXNJbkV4dGVuZHMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9Pbmx5Q2xhc3Nlc0luRXh0ZW5kcy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUyOGZmYmMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvT25seUNsYXNzZXNJbkV4dGVuZHMuamF2YQpAQCAtMCwwICsxLDUgQEAKK2NsYXNzIEJhciB7CisgIHN0YXRpYyBjbGFzcyBJbm5lciB7fQorfQorCitwdWJsaWMgY2xhc3MgRm9vb28gZXh0ZW5kcyBCYXIuPGNhcmV0PgpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL09ubHlFeGNlcHRpb25zSW5DYXRjaDEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9Pbmx5RXhjZXB0aW9uc0luQ2F0Y2gxLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWM5ODk3ZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9Pbmx5RXhjZXB0aW9uc0luQ2F0Y2gxLmphdmEKQEAgLTAsMCArMSwxMCBAQAorY2xhc3MgQWJjZENsYXNzIHt9CitjbGFzcyBBYmNkRXhjZXB0aW9uIGV4dGVuZHMgVGhyb3dhYmxlIHt9CisKK2NsYXNzIEZvbyB7CisgIHsKKyAgICB0cnkgeworCisgICAgfSBjYXRjaCAoQWJjZDxjYXJldD4pCisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvT25seUV4Y2VwdGlvbnNJbkNhdGNoMV9hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL09ubHlFeGNlcHRpb25zSW5DYXRjaDFfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMjZlZDg2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL09ubHlFeGNlcHRpb25zSW5DYXRjaDFfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDEwIEBACitjbGFzcyBBYmNkQ2xhc3Mge30KK2NsYXNzIEFiY2RFeGNlcHRpb24gZXh0ZW5kcyBUaHJvd2FibGUge30KKworY2xhc3MgRm9vIHsKKyAgeworICAgIHRyeSB7CisKKyAgICB9IGNhdGNoIChBYmNkRXhjZXB0aW9uPGNhcmV0PikKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9Pbmx5RXhjZXB0aW9uc0luQ2F0Y2gyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvT25seUV4Y2VwdGlvbnNJbkNhdGNoMi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFmZDdmM2EKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvT25seUV4Y2VwdGlvbnNJbkNhdGNoMi5qYXZhCkBAIC0wLDAgKzEsOCBAQAorY2xhc3MgQWJjZENsYXNzIHt9CitjbGFzcyBBYmNkRXhjZXB0aW9uIGV4dGVuZHMgVGhyb3dhYmxlIHt9CisKK2NsYXNzIEZvbyB7CisgIHsKKyAgICB0cnkgeyB9IGNhdGNoIChBYmNkPGNhcmV0PiBlKQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL09ubHlFeGNlcHRpb25zSW5DYXRjaDJfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9Pbmx5RXhjZXB0aW9uc0luQ2F0Y2gyX2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjY5NzFkMQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9Pbmx5RXhjZXB0aW9uc0luQ2F0Y2gyX2FmdGVyLmphdmEKQEAgLTAsMCArMSw4IEBACitjbGFzcyBBYmNkQ2xhc3Mge30KK2NsYXNzIEFiY2RFeGNlcHRpb24gZXh0ZW5kcyBUaHJvd2FibGUge30KKworY2xhc3MgRm9vIHsKKyAgeworICAgIHRyeSB7IH0gY2F0Y2ggKEFiY2RFeGNlcHRpb248Y2FyZXQ+IGUpCisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvT25seUV4Y2VwdGlvbnNJbkNhdGNoMy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL09ubHlFeGNlcHRpb25zSW5DYXRjaDMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNjA0Y2EyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL09ubHlFeGNlcHRpb25zSW5DYXRjaDMuamF2YQpAQCAtMCwwICsxLDggQEAKK2NsYXNzIEFiY2RDbGFzcyB7fQorY2xhc3MgQWJjZEV4Y2VwdGlvbiBleHRlbmRzIFRocm93YWJsZSB7fQorCitjbGFzcyBGb28geworICB7CisgICAgdHJ5IHsgfSBjYXRjaCAoZmluYWwgQWJjZDxjYXJldD4pCisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvT25seUV4Y2VwdGlvbnNJbkNhdGNoM19hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL09ubHlFeGNlcHRpb25zSW5DYXRjaDNfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MDkyMmM4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL09ubHlFeGNlcHRpb25zSW5DYXRjaDNfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDggQEAKK2NsYXNzIEFiY2RDbGFzcyB7fQorY2xhc3MgQWJjZEV4Y2VwdGlvbiBleHRlbmRzIFRocm93YWJsZSB7fQorCitjbGFzcyBGb28geworICB7CisgICAgdHJ5IHsgfSBjYXRjaCAoZmluYWwgQWJjZEV4Y2VwdGlvbjxjYXJldD4pCisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvT25seUV4Y2VwdGlvbnNJbkNhdGNoNC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL09ubHlFeGNlcHRpb25zSW5DYXRjaDQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zM2I3MDNjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL09ubHlFeGNlcHRpb25zSW5DYXRjaDQuamF2YQpAQCAtMCwwICsxLDggQEAKK2NsYXNzIEFiY2RDbGFzcyB7fQorY2xhc3MgQWJjZEV4Y2VwdGlvbiBleHRlbmRzIFRocm93YWJsZSB7fQorCitjbGFzcyBGb28geworICB7CisgICAgdHJ5IHsgfSBjYXRjaCAoZmluYWwgQWJjZDxjYXJldD4gZSkKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9Pbmx5RXhjZXB0aW9uc0luQ2F0Y2g0X2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvT25seUV4Y2VwdGlvbnNJbkNhdGNoNF9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRmZjg1MDMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvT25seUV4Y2VwdGlvbnNJbkNhdGNoNF9hZnRlci5qYXZhCkBAIC0wLDAgKzEsOCBAQAorY2xhc3MgQWJjZENsYXNzIHt9CitjbGFzcyBBYmNkRXhjZXB0aW9uIGV4dGVuZHMgVGhyb3dhYmxlIHt9CisKK2NsYXNzIEZvbyB7CisgIHsKKyAgICB0cnkgeyB9IGNhdGNoIChmaW5hbCBBYmNkRXhjZXB0aW9uPGNhcmV0PiBlKQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL09ubHlFeGNlcHRpb25zSW5NdWx0aUNhdGNoMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL09ubHlFeGNlcHRpb25zSW5NdWx0aUNhdGNoMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ4NTk0YTIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvT25seUV4Y2VwdGlvbnNJbk11bHRpQ2F0Y2gxLmphdmEKQEAgLTAsMCArMSw3IEBACitjbGFzcyBNeUNsYXNzIHsKKyAgc3RhdGljIGNsYXNzIE15RXhjZXB0aW9uIGV4dGVuZHMgRXhjZXB0aW9uIHsgfQorCisgIHZvaWQgbSgpIHsKKyAgICB0cnkgeyB9IGNhdGNoIChSdW50aW1lRXhjZXB0aW9uIHwgTXk8Y2FyZXQ+KSB7IH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9Pbmx5RXhjZXB0aW9uc0luTXVsdGlDYXRjaDFfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9Pbmx5RXhjZXB0aW9uc0luTXVsdGlDYXRjaDFfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMzRmZjM3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL09ubHlFeGNlcHRpb25zSW5NdWx0aUNhdGNoMV9hZnRlci5qYXZhCkBAIC0wLDAgKzEsNyBAQAorY2xhc3MgTXlDbGFzcyB7CisgIHN0YXRpYyBjbGFzcyBNeUV4Y2VwdGlvbiBleHRlbmRzIEV4Y2VwdGlvbiB7IH0KKworICB2b2lkIG0oKSB7CisgICAgdHJ5IHsgfSBjYXRjaCAoUnVudGltZUV4Y2VwdGlvbiB8IE15RXhjZXB0aW9uPGNhcmV0PikgeyB9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvT25seUV4Y2VwdGlvbnNJbk11bHRpQ2F0Y2gyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvT25seUV4Y2VwdGlvbnNJbk11bHRpQ2F0Y2gyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWM1MDAyZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9Pbmx5RXhjZXB0aW9uc0luTXVsdGlDYXRjaDIuamF2YQpAQCAtMCwwICsxLDcgQEAKK2NsYXNzIE15Q2xhc3MgeworICBzdGF0aWMgY2xhc3MgTXlFeGNlcHRpb24gZXh0ZW5kcyBFeGNlcHRpb24geyB9CisKKyAgdm9pZCBtKCkgeworICAgIHRyeSB7IH0gY2F0Y2ggKFJ1bnRpbWVFeGNlcHRpb24gfCBNeTxjYXJldD4gZSkgeyB9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvT25seUV4Y2VwdGlvbnNJbk11bHRpQ2F0Y2gyX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvT25seUV4Y2VwdGlvbnNJbk11bHRpQ2F0Y2gyX2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWViODg0MQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9Pbmx5RXhjZXB0aW9uc0luTXVsdGlDYXRjaDJfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDcgQEAKK2NsYXNzIE15Q2xhc3MgeworICBzdGF0aWMgY2xhc3MgTXlFeGNlcHRpb24gZXh0ZW5kcyBFeGNlcHRpb24geyB9CisKKyAgdm9pZCBtKCkgeworICAgIHRyeSB7IH0gY2F0Y2ggKFJ1bnRpbWVFeGNlcHRpb24gfCBNeUV4Y2VwdGlvbjxjYXJldD4gZSkgeyB9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvT25seUtleXdvcmRzSW5zaWRlU3dpdGNoLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvT25seUtleXdvcmRzSW5zaWRlU3dpdGNoLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmI2MmNiNAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9Pbmx5S2V5d29yZHNJbnNpZGVTd2l0Y2guamF2YQpAQCAtMCwwICsxLDggQEAKK3B1YmxpYyBjbGFzcyBNYWluIHsKKworICB7CisgICAgc3dpdGNoIChhKSB7CisgICAgICA8Y2FyZXQ+CisgICAgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL09ubHlSZXNvdXJjZXNJblJlc291cmNlTGlzdDEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9Pbmx5UmVzb3VyY2VzSW5SZXNvdXJjZUxpc3QxLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTVlODQxMwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9Pbmx5UmVzb3VyY2VzSW5SZXNvdXJjZUxpc3QxLmphdmEKQEAgLTAsMCArMSw2IEBACitjbGFzcyBNeUNsYXNzIHsKKyAgdm9pZCBmKCkgeworICAgIHRyeSAoQTxjYXJldD4pIHsKKyAgICB9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvT25seVJlc291cmNlc0luUmVzb3VyY2VMaXN0MV9hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL09ubHlSZXNvdXJjZXNJblJlc291cmNlTGlzdDFfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZjZmMWViCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL09ubHlSZXNvdXJjZXNJblJlc291cmNlTGlzdDFfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDYgQEAKK2NsYXNzIE15Q2xhc3MgeworICB2b2lkIGYoKSB7CisgICAgdHJ5IChBdXRvQ2xvc2VhYmxlPGNhcmV0PikgeworICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9Pbmx5UmVzb3VyY2VzSW5SZXNvdXJjZUxpc3QyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvT25seVJlc291cmNlc0luUmVzb3VyY2VMaXN0Mi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc3MDJmZTAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvT25seVJlc291cmNlc0luUmVzb3VyY2VMaXN0Mi5qYXZhCkBAIC0wLDAgKzEsOCBAQAorY2xhc3MgTXlDbGFzcyB7CisgIHN0YXRpYyBjbGFzcyBNeVJlc291cmNlIGltcGxlbWVudHMgQXV0b0Nsb3NlYWJsZSB7IH0KKworICB2b2lkIGYoKSB7CisgICAgdHJ5IChmaW5hbCBNeTxjYXJldD4pIHsKKyAgICB9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvT25seVJlc291cmNlc0luUmVzb3VyY2VMaXN0Ml9hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL09ubHlSZXNvdXJjZXNJblJlc291cmNlTGlzdDJfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NzJkNDhiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL09ubHlSZXNvdXJjZXNJblJlc291cmNlTGlzdDJfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDggQEAKK2NsYXNzIE15Q2xhc3MgeworICBzdGF0aWMgY2xhc3MgTXlSZXNvdXJjZSBpbXBsZW1lbnRzIEF1dG9DbG9zZWFibGUgeyB9CisKKyAgdm9pZCBmKCkgeworICAgIHRyeSAoZmluYWwgTXlSZXNvdXJjZTxjYXJldD4pIHsKKyAgICB9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvT25seVJlc291cmNlc0luUmVzb3VyY2VMaXN0My5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL09ubHlSZXNvdXJjZXNJblJlc291cmNlTGlzdDMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNWYxMzk1YgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9Pbmx5UmVzb3VyY2VzSW5SZXNvdXJjZUxpc3QzLmphdmEKQEAgLTAsMCArMSw4IEBACitjbGFzcyBNeUNsYXNzIHsKKyAgc3RhdGljIGNsYXNzIE15UmVzb3VyY2UgaW1wbGVtZW50cyBBdXRvQ2xvc2VhYmxlIHsgfQorCisgIHZvaWQgZigpIHsKKyAgICB0cnkgKE15PGNhcmV0PiByKSB7CisgICAgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL09ubHlSZXNvdXJjZXNJblJlc291cmNlTGlzdDNfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9Pbmx5UmVzb3VyY2VzSW5SZXNvdXJjZUxpc3QzX2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODA5OTE2NwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9Pbmx5UmVzb3VyY2VzSW5SZXNvdXJjZUxpc3QzX2FmdGVyLmphdmEKQEAgLTAsMCArMSw4IEBACitjbGFzcyBNeUNsYXNzIHsKKyAgc3RhdGljIGNsYXNzIE15UmVzb3VyY2UgaW1wbGVtZW50cyBBdXRvQ2xvc2VhYmxlIHsgfQorCisgIHZvaWQgZigpIHsKKyAgICB0cnkgKE15UmVzb3VyY2U8Y2FyZXQ+IHIpIHsKKyAgICB9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvT25seVJlc291cmNlc0luUmVzb3VyY2VMaXN0NC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL09ubHlSZXNvdXJjZXNJblJlc291cmNlTGlzdDQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNzcxNjNiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL09ubHlSZXNvdXJjZXNJblJlc291cmNlTGlzdDQuamF2YQpAQCAtMCwwICsxLDggQEAKK2NsYXNzIE15Q2xhc3MgeworICBzdGF0aWMgY2xhc3MgTXlSZXNvdXJjZSBpbXBsZW1lbnRzIEF1dG9DbG9zZWFibGUgeyB9CisKKyAgdm9pZCBmKCkgeworICAgIHRyeSAoTXlSZXNvdXJjZSByMSA9IG51bGw7IE15PGNhcmV0PikgeworICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9Pbmx5UmVzb3VyY2VzSW5SZXNvdXJjZUxpc3Q0X2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvT25seVJlc291cmNlc0luUmVzb3VyY2VMaXN0NF9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYxNzkwNGUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvT25seVJlc291cmNlc0luUmVzb3VyY2VMaXN0NF9hZnRlci5qYXZhCkBAIC0wLDAgKzEsOCBAQAorY2xhc3MgTXlDbGFzcyB7CisgIHN0YXRpYyBjbGFzcyBNeVJlc291cmNlIGltcGxlbWVudHMgQXV0b0Nsb3NlYWJsZSB7IH0KKworICB2b2lkIGYoKSB7CisgICAgdHJ5IChNeVJlc291cmNlIHIxID0gbnVsbDsgTXlSZXNvdXJjZTxjYXJldD4pIHsKKyAgICB9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvT3JBc3NpZ25tZW50RGZhLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvT3JBc3NpZ25tZW50RGZhLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDhmYWI5NwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9PckFzc2lnbm1lbnREZmEuamF2YQpAQCAtMCwwICsxLDE3IEBACitjbGFzcyBGb28geworCisgICAgYm9vbGVhbiBmb28oT2JqZWN0IG8sIGZpbmFsIFBhaXJGdW5jdGlvbjxTdHJpbmcsIEVsZW1lbnRUeXBlLCBCb29sZWFuPiBmdW4peworICAgICAgICBib29sZWFuIHJlc3VsdCA9IHRydWU7CisgICAgICAgIHJlc3VsdCB8PSBmdW4uZnVuKHBhdGgpOworICAgICAgICBpZiAobyBpbnN0YW5jZW9mIFN0cmluZykgeworICAgICAgICAgICAgby5zdWJzdDxjYXJldD4KKyAgICAgICAgfQorICAgIH0KKworICAgIHZvaWQgZm9vKFN0cmluZyBzKSB7fQorfQorCitpbnRlcmZhY2UgUGFpckZ1bmN0aW9uPFQsIFYsIFU+IHsKKyAgVSBmdW4oVCB0LCBWIHYpOworCit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvT3JBc3NpZ25tZW50RGZhX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvT3JBc3NpZ25tZW50RGZhX2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2VjYzM2NwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9PckFzc2lnbm1lbnREZmFfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDE3IEBACitjbGFzcyBGb28geworCisgICAgYm9vbGVhbiBmb28oT2JqZWN0IG8sIGZpbmFsIFBhaXJGdW5jdGlvbjxTdHJpbmcsIEVsZW1lbnRUeXBlLCBCb29sZWFuPiBmdW4peworICAgICAgICBib29sZWFuIHJlc3VsdCA9IHRydWU7CisgICAgICAgIHJlc3VsdCB8PSBmdW4uZnVuKHBhdGgpOworICAgICAgICBpZiAobyBpbnN0YW5jZW9mIFN0cmluZykgeworICAgICAgICAgICAgKChTdHJpbmcpIG8pLnN1YnN0cmluZyg8Y2FyZXQ+KQorICAgICAgICB9CisgICAgfQorCisgICAgdm9pZCBmb28oU3RyaW5nIHMpIHt9Cit9CisKK2ludGVyZmFjZSBQYWlyRnVuY3Rpb248VCwgViwgVT4geworICBVIGZ1bihUIHQsIFYgdik7CisKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9PdmVyd3JpdGVHZW5lcmljc0FmdGVyTmV3LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvT3ZlcndyaXRlR2VuZXJpY3NBZnRlck5ldy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUzNzk1N2EKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvT3ZlcndyaXRlR2VuZXJpY3NBZnRlck5ldy5qYXZhCkBAIC0wLDAgKzEsNiBAQAorY2xhc3MgQmFyIHsKKyAgeworICAgIEtvbzxTdHJpbmc+IGhzID0gbmV3IEtvPGNhcmV0PjxTdHJpbmdYPigpOworICB9Cit9CitjbGFzcyBLb288WD4ge30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9PdmVyd3JpdGVHZW5lcmljc0FmdGVyTmV3X2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvT3ZlcndyaXRlR2VuZXJpY3NBZnRlck5ld19hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjljZDljMWIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvT3ZlcndyaXRlR2VuZXJpY3NBZnRlck5ld19hZnRlci5qYXZhCkBAIC0wLDAgKzEsNiBAQAorY2xhc3MgQmFyIHsKKyAgeworICAgIEtvbzxTdHJpbmc+IGhzID0gbmV3IEtvbzxTdHJpbmc+KCk8Y2FyZXQ+OworICB9Cit9CitjbGFzcyBLb288WD4ge30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9QYWNrYWdlSW5Bbm5vUGFyYW0uamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9QYWNrYWdlSW5Bbm5vUGFyYW0uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZjdhZDk5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL1BhY2thZ2VJbkFubm9QYXJhbS5qYXZhCkBAIC0wLDAgKzEsNyBAQAorQEFubm8oamF2YS5sYTxjYXJldD4pCitwdWJsaWMgY2xhc3MgTWFpbiB7Cit9CisKK0BpbnRlcmZhY2UgQW5ubyB7CisgIENsYXNzIHZhbHVlKCk7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL1BhY2thZ2VJbkFubm9QYXJhbV9hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL1BhY2thZ2VJbkFubm9QYXJhbV9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY1YzU1YmMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvUGFja2FnZUluQW5ub1BhcmFtX2FmdGVyLmphdmEKQEAgLTAsMCArMSw3IEBACitAQW5ubyhqYXZhLmxhbmcuPGNhcmV0PikKK3B1YmxpYyBjbGFzcyBNYWluIHsKK30KKworQGludGVyZmFjZSBBbm5vIHsKKyAgQ2xhc3MgdmFsdWUoKTsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvUGFja2FnZUluTWVtYmVyVHlwZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL1BhY2thZ2VJbk1lbWJlclR5cGUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMDY1MzQ2ZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9QYWNrYWdlSW5NZW1iZXJUeXBlLmphdmEKQEAgLTAsMCArMSwzIEBACitjbGFzcyBGb28geworICBqYXZhLmxhPGNhcmV0PgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9QYWNrYWdlSW5NZW1iZXJUeXBlX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvUGFja2FnZUluTWVtYmVyVHlwZV9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlkYjM4YmIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvUGFja2FnZUluTWVtYmVyVHlwZV9hZnRlci5qYXZhCkBAIC0wLDAgKzEsMyBAQAorY2xhc3MgRm9vIHsKKyAgamF2YS5sYW5nLjxjYXJldD4KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvUGFja2FnZU5hbWVkVmFyaWFibGVCZWZvcmVBc3NpZ25tZW50LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvUGFja2FnZU5hbWVkVmFyaWFibGVCZWZvcmVBc3NpZ25tZW50LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjM0NTUyMAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9QYWNrYWdlTmFtZWRWYXJpYWJsZUJlZm9yZUFzc2lnbm1lbnQuamF2YQpAQCAtMCwwICsxLDEwIEBACitwdWJsaWMgY2xhc3MgQmFyIHsKKworICAgIHsKKyAgICAgICAgaW50IGEgPSAxOworICAgICAgICBPYmplY3QgamF2YTsKKyAgICAgICAgamF2YS5lcTxjYXJldD4KKyAgICAgICAgYSA9IDI7CisgICAgfQorCit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvUGFja2FnZU5hbWVkVmFyaWFibGVCZWZvcmVBc3NpZ25tZW50X2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvUGFja2FnZU5hbWVkVmFyaWFibGVCZWZvcmVBc3NpZ25tZW50X2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzMzNzRiOQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9QYWNrYWdlTmFtZWRWYXJpYWJsZUJlZm9yZUFzc2lnbm1lbnRfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDEwIEBACitwdWJsaWMgY2xhc3MgQmFyIHsKKworICAgIHsKKyAgICAgICAgaW50IGEgPSAxOworICAgICAgICBPYmplY3QgamF2YTsKKyAgICAgICAgamF2YS5lcXVhbHMoPGNhcmV0PikKKyAgICAgICAgYSA9IDI7CisgICAgfQorCit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvUGFja2FnZVByZWZpeC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL1BhY2thZ2VQcmVmaXguamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYzFkMzZjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL1BhY2thZ2VQcmVmaXguamF2YQpAQCAtMCwwICsxLDcgQEAKK3BhY2thZ2UgZm9vLmJhci5nb287CisKK3B1YmxpYyBjbGFzcyBCYXIgeworICAgIHsKKyAgICAgICAgZm9vLmI8Y2FyZXQ+CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL1BhY2thZ2VQcmVmaXhfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9QYWNrYWdlUHJlZml4X2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGRkODVkZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9QYWNrYWdlUHJlZml4X2FmdGVyLmphdmEKQEAgLTAsMCArMSw3IEBACitwYWNrYWdlIGZvby5iYXIuZ29vOworCitwdWJsaWMgY2xhc3MgQmFyIHsKKyAgICB7CisgICAgICAgIGZvby5iYXIuPGNhcmV0PgorICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9QcmVmZXJMb25nZXJOYW1lc09wdGlvbi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL1ByZWZlckxvbmdlck5hbWVzT3B0aW9uLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWFkMGY4M2YKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvUHJlZmVyTG9uZ2VyTmFtZXNPcHRpb24uamF2YQpAQCAtMCwwICsxLDYgQEAKK2NsYXNzIEZvbyB7CisgIHsKKyAgICBBYmNkRWZnaElqayA8Y2FyZXQ+CisgIH0KKyAgY2xhc3MgQWJjZEVmZ2hJamt7fQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL1ByZWZlclRlc3RDYXNlcy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL1ByZWZlclRlc3RDYXNlcy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBmOWRlZDYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvUHJlZmVyVGVzdENhc2VzLmphdmEKQEAgLTAsMCArMSBAQAorY2xhc3MgRm9vIGV4dGVuZHMgU29tZTxjYXJldD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvUHJlc2VsZWN0RWRpdG9yU2VsZWN0aW9uLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvUHJlc2VsZWN0RWRpdG9yU2VsZWN0aW9uLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTQ0YWMxYQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9QcmVzZWxlY3RFZGl0b3JTZWxlY3Rpb24uamF2YQpAQCAtMCwwICsxLDcgQEAKK3B1YmxpYyBjbGFzcyBGb29CYXIgeworCisgICAgaW50IGEoKSB7CisgICAgICAgIDxjYXJldD48c2VsZWN0aW9uPmZpbmFsaXplPC9zZWxlY3Rpb24+CisgICAgfQorCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL1ByaW1pdGl2ZUFycmF5Q2xhc3MuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9QcmltaXRpdmVBcnJheUNsYXNzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmY3MTU0OAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9QcmltaXRpdmVBcnJheUNsYXNzLmphdmEKQEAgLTAsMCArMSw1IEBACitwcml2YXRlIGNsYXNzIFpvb29vb29vIHsKKyAgeworICAgIENsYXNzPD8+IGNscyA9IGJ5dGVbXS5jbGE8Y2FyZXQ+CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9QcmltaXRpdmVBcnJheUNsYXNzX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvUHJpbWl0aXZlQXJyYXlDbGFzc19hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFkMzhjZDYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvUHJpbWl0aXZlQXJyYXlDbGFzc19hZnRlci5qYXZhCkBAIC0wLDAgKzEsNSBAQAorcHJpdmF0ZSBjbGFzcyBab29vb29vbyB7CisgIHsKKyAgICBDbGFzczw/PiBjbHMgPSBieXRlW10uY2xhc3M8Y2FyZXQ+CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9QcmltaXRpdmVBcnJheUluQW5uby5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL1ByaW1pdGl2ZUFycmF5SW5Bbm5vLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2Y0NDE3MAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9QcmltaXRpdmVBcnJheUluQW5uby5qYXZhCkBAIC0wLDAgKzEsOSBAQAorcHJpdmF0ZSBjbGFzcyBab29vb29vbyB7CisgIEBpbnRlcmZhY2UgQiB7CisgICAgICBDbGFzczw/PiB2YWx1ZSgpOworICB9CisKKyAgQEIoYnl0ZVtdLmM8Y2FyZXQ+KQorICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9QcmltaXRpdmVBcnJheUluQW5ub19hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL1ByaW1pdGl2ZUFycmF5SW5Bbm5vX2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTkwNTlmMQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9QcmltaXRpdmVBcnJheUluQW5ub19hZnRlci5qYXZhCkBAIC0wLDAgKzEsOSBAQAorcHJpdmF0ZSBjbGFzcyBab29vb29vbyB7CisgIEBpbnRlcmZhY2UgQiB7CisgICAgICBDbGFzczw/PiB2YWx1ZSgpOworICB9CisKKyAgQEIoYnl0ZVtdLmNsYXNzPGNhcmV0PikKKyAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgeworICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvUHJpbWl0aXZlQXJyYXlPbmx5Q2xhc3MuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9QcmltaXRpdmVBcnJheU9ubHlDbGFzcy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNjZjUwYjkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvUHJpbWl0aXZlQXJyYXlPbmx5Q2xhc3MuamF2YQpAQCAtMCwwICsxLDUgQEAKK3ByaXZhdGUgY2xhc3MgWm9vb29vb28geworICB7CisgICAgQ2xhc3M8Pz4gY2xzID0gYnl0ZVtdLkNsYTxjYXJldD4KKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL1ByaW1pdGl2ZUFycmF5V2l0aFJCcmFjZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL1ByaW1pdGl2ZUFycmF5V2l0aFJCcmFjZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZlOWUzM2UKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvUHJpbWl0aXZlQXJyYXlXaXRoUkJyYWNlLmphdmEKQEAgLTAsMCArMSw1IEBACitwdWJsaWMgY2xhc3MgQmFyIHsKKyAgICB7CisgICAgICAgIGludFtdIGEgPSBuZXcgaW48Y2FyZXQ+CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9QcmltaXRpdmVBcnJheVdpdGhSQnJhY2VfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9QcmltaXRpdmVBcnJheVdpdGhSQnJhY2VfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MGY0MzkyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL1ByaW1pdGl2ZUFycmF5V2l0aFJCcmFjZV9hZnRlci5qYXZhCkBAIC0wLDAgKzEsNSBAQAorcHVibGljIGNsYXNzIEJhciB7CisgICAgeworICAgICAgICBpbnRbXSBhID0gbmV3IGludFs8Y2FyZXQ+XQorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvUHJpbWl0aXZlQ2FzdE92ZXJ3cml0ZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL1ByaW1pdGl2ZUNhc3RPdmVyd3JpdGUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZjFlZmRiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL1ByaW1pdGl2ZUNhc3RPdmVyd3JpdGUuamF2YQpAQCAtMCwwICsxLDYgQEAKK3B1YmxpYyBjbGFzcyBab28yIHsKKyAgICB7CisgICAgICAgIGJ5dGUgdjEgPSAoYnk8Y2FyZXQ+dGUpIDA7CisgICAgfQorfQorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvUHJpbWl0aXZlQ2FzdE92ZXJ3cml0ZV9hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL1ByaW1pdGl2ZUNhc3RPdmVyd3JpdGVfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hODM4ZDA4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL1ByaW1pdGl2ZUNhc3RPdmVyd3JpdGVfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDYgQEAKK3B1YmxpYyBjbGFzcyBab28yIHsKKyAgICB7CisgICAgICAgIGJ5dGUgdjEgPSAoYnl0ZTxjYXJldD4pIDA7CisgICAgfQorfQorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvUHJpbWl0aXZlQ2xhc3MuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9QcmltaXRpdmVDbGFzcy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZiNjgyZWYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvUHJpbWl0aXZlQ2xhc3MuamF2YQpAQCAtMCwwICsxLDUgQEAKK3ByaXZhdGUgY2xhc3MgWm9vb29vb28geworICB7CisgICAgQ2xhc3M8Pz4gY2xzID0gYnl0ZS5jbGE8Y2FyZXQ+CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9QcmltaXRpdmVDbGFzc19hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL1ByaW1pdGl2ZUNsYXNzX2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjY5Y2QxZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9QcmltaXRpdmVDbGFzc19hZnRlci5qYXZhCkBAIC0wLDAgKzEsNSBAQAorcHJpdmF0ZSBjbGFzcyBab29vb29vbyB7CisgIHsKKyAgICBDbGFzczw/PiBjbHMgPSBieXRlLmNsYXNzPGNhcmV0PgorICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvUHJpbWl0aXZlTWV0aG9kUGFyYW1ldGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvUHJpbWl0aXZlTWV0aG9kUGFyYW1ldGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWVhM2I3NwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9QcmltaXRpdmVNZXRob2RQYXJhbWV0ZXIuamF2YQpAQCAtMCwwICsxLDMgQEAKK3B1YmxpYyBjbGFzcyBGb28geworICBPYmplY3QgZm9vKGJvPGNhcmV0Pil7IH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9QcmltaXRpdmVNZXRob2RQYXJhbWV0ZXJfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9QcmltaXRpdmVNZXRob2RQYXJhbWV0ZXJfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNjQ5YjJkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL1ByaW1pdGl2ZU1ldGhvZFBhcmFtZXRlcl9hZnRlci5qYXZhCkBAIC0wLDAgKzEsMyBAQAorcHVibGljIGNsYXNzIEZvbyB7CisgIE9iamVjdCBmb28oYm9vbGVhbjxjYXJldD4peyB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvUHJpbWl0aXZlU3F1YXJlQnJhY2tldC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL1ByaW1pdGl2ZVNxdWFyZUJyYWNrZXQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMTUxM2MxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL1ByaW1pdGl2ZVNxdWFyZUJyYWNrZXQuamF2YQpAQCAtMCwwICsxLDUgQEAKK2NsYXNzIEZvbyB7CisgIGQ8Y2FyZXQ+CisKKyAgY2xhc3MgZG96IHt9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL1ByaW1pdGl2ZVNxdWFyZUJyYWNrZXRfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9QcmltaXRpdmVTcXVhcmVCcmFja2V0X2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGJlNjJmZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9QcmltaXRpdmVTcXVhcmVCcmFja2V0X2FmdGVyLmphdmEKQEAgLTAsMCArMSw1IEBACitjbGFzcyBGb28geworICBkb3VibGVbPGNhcmV0Pl0KKworICBjbGFzcyBkb3oge30KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvUHJpbWl0aXZlVHlwZXNJbkZvckxvb3AuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9QcmltaXRpdmVUeXBlc0luRm9yTG9vcC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU1Y2UxMzcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvUHJpbWl0aXZlVHlwZXNJbkZvckxvb3AuamF2YQpAQCAtMCwwICsxLDcgQEAKK3B1YmxpYyBjbGFzcyBGb29vbyB7CisKKyAgICB7CisgICAgICAgIGZvciAoYm9vPGNhcmV0PngpCisgICAgfQorCit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvUHJpbWl0aXZlVHlwZXNJbkZvckxvb3AyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvUHJpbWl0aXZlVHlwZXNJbkZvckxvb3AyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWViOTJlMzgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvUHJpbWl0aXZlVHlwZXNJbkZvckxvb3AyLmphdmEKQEAgLTAsMCArMSw3IEBACitwdWJsaWMgY2xhc3MgRm9vb28geworCisgICAgeworICAgICAgICBmb3IgKGJvbzxjYXJldD54CisgICAgfQorCit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvUHJpbWl0aXZlVHlwZXNJbkZvckxvb3AzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvUHJpbWl0aXZlVHlwZXNJbkZvckxvb3AzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWQzOGRlYQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9QcmltaXRpdmVUeXBlc0luRm9yTG9vcDMuamF2YQpAQCAtMCwwICsxLDcgQEAKK3B1YmxpYyBjbGFzcyBGb29vbyB7CisKKyAgICB7CisgICAgICAgIGZvciAoZmluYWwgYm9vPGNhcmV0PngKKyAgICB9CisKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9QcmltaXRpdmVUeXBlc0luRm9yTG9vcDQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9QcmltaXRpdmVUeXBlc0luRm9yTG9vcDQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45Yjc3N2ZlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL1ByaW1pdGl2ZVR5cGVzSW5Gb3JMb29wNC5qYXZhCkBAIC0wLDAgKzEsNyBAQAorcHVibGljIGNsYXNzIEZvb29vIHsKKworICAgIHsKKyAgICAgICAgZm9yIChmaW5hbCBib288Y2FyZXQ+eCB5CisgICAgfQorCit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvUHJpbWl0aXZlVHlwZXNJbkZvckxvb3A1LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvUHJpbWl0aXZlVHlwZXNJbkZvckxvb3A1LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjJhMTU2MQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9QcmltaXRpdmVUeXBlc0luRm9yTG9vcDUuamF2YQpAQCAtMCwwICsxLDcgQEAKK3B1YmxpYyBjbGFzcyBGb29vbyB7CisKKyAgICB7CisgICAgICAgIGZvciAoZmluYWwgYm9vPGNhcmV0PnggeSA6IHopCisgICAgfQorCit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvUHJpbWl0aXZlVHlwZXNJbkZvckxvb3A2LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvUHJpbWl0aXZlVHlwZXNJbkZvckxvb3A2LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjZmYTU2NAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9QcmltaXRpdmVUeXBlc0luRm9yTG9vcDYuamF2YQpAQCAtMCwwICsxLDcgQEAKK3B1YmxpYyBjbGFzcyBGb29vbyB7CisKKyAgICB7CisgICAgICAgIGZvciAoZmluYWwgYm9vPGNhcmV0PnggeSA9IDA7OykKKyAgICB9CisKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9QcmltaXRpdmVUeXBlc0luRm9yTG9vcFNwYWNlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvUHJpbWl0aXZlVHlwZXNJbkZvckxvb3BTcGFjZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNjNjZkNjcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvUHJpbWl0aXZlVHlwZXNJbkZvckxvb3BTcGFjZS5qYXZhCkBAIC0wLDAgKzEsOCBAQAorcHVibGljIGNsYXNzIEZvb29vIHsKKworICAgIHsKKyAgICAgICAgaW50IGludGFhYWE7CisgICAgICAgIGZvciAoaW50PGNhcmV0PikKKyAgICB9CisKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9QcmltaXRpdmVUeXBlc0luRm9yTG9vcFNwYWNlX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvUHJpbWl0aXZlVHlwZXNJbkZvckxvb3BTcGFjZV9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI1YjA0YjcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvUHJpbWl0aXZlVHlwZXNJbkZvckxvb3BTcGFjZV9hZnRlci5qYXZhCkBAIC0wLDAgKzEsOCBAQAorcHVibGljIGNsYXNzIEZvb29vIHsKKworICAgIHsKKyAgICAgICAgaW50IGludGFhYWE7CisgICAgICAgIGZvciAoaW50IDxjYXJldD4pCisgICAgfQorCit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvUHJpdmF0ZUluQW5vbnltb3VzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvUHJpdmF0ZUluQW5vbnltb3VzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGI1ZjIwMAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9Qcml2YXRlSW5Bbm9ueW1vdXMuamF2YQpAQCAtMCwwICsxLDEwIEBACitjbGFzcyBBIHsKKyAgICBBKCkgeworICAgICAgbmV3IFJ1bm5hYmxlKCkgeworICAgICAgICAgIHByaTxjYXJldD4KKyAgICAgIH07CisgICAgICAgIAorICAgIH0KKyAgCisgIHB1YmxpYyB2b2lkIHByZXBhcmVJbWFnZSgpIHt9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvUHJpdmF0ZUluQW5vbnltb3VzX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvUHJpdmF0ZUluQW5vbnltb3VzX2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjljNzdjYwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9Qcml2YXRlSW5Bbm9ueW1vdXNfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDEwIEBACitjbGFzcyBBIHsKKyAgICBBKCkgeworICAgICAgbmV3IFJ1bm5hYmxlKCkgeworICAgICAgICAgIHByaXZhdGUgPGNhcmV0PgorICAgICAgfTsKKyAgICAgICAgCisgICAgfQorICAKKyAgcHVibGljIHZvaWQgcHJlcGFyZUltYWdlKCkge30KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9Qcm9wZXJ0eVJlZmVyZW5jZVByZWZpeC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL1Byb3BlcnR5UmVmZXJlbmNlUHJlZml4LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODU1NGY3YgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9Qcm9wZXJ0eVJlZmVyZW5jZVByZWZpeC5qYXZhCkBAIC0wLDAgKzEsNSBAQAorcHVibGljIGNsYXNzIEJlZGEgZXh0ZW5kcyBRdWV0emFsY29hdGwgeworICAgIHsKKyAgICAgICIvZm88Y2FyZXQ+IgorICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9Qcm90ZWN0ZWRGcm9tU3VwZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9Qcm90ZWN0ZWRGcm9tU3VwZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMGI1NDA5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL1Byb3RlY3RlZEZyb21TdXBlci5qYXZhCkBAIC0wLDAgKzEsMTEgQEAKK2NsYXNzIEF7CisgY2xhc3MgQnsKKyAgcHJvdGVjdGVkIHZvaWQgeHh4KCl7fQorIH0KKworIGNsYXNzIEMgZXh0ZW5kcyBCeworICB7CisgICBzdXBlci48Y2FyZXQ+CisgIH0KKyB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL1Byb3RlY3RlZEZyb21TdXBlcjIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9Qcm90ZWN0ZWRGcm9tU3VwZXIyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTE4YjU3MQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9Qcm90ZWN0ZWRGcm9tU3VwZXIyLmphdmEKQEAgLTAsMCArMSwxMSBAQAorY2xhc3MgQXsKKyBjbGFzcyBCeworICBwcm90ZWN0ZWQgdm9pZCB4eHgoKXt9CisgfQorCisgY2xhc3MgQyBleHRlbmRzIEJ7CisgIHsKKyAgIEIuc3VwZXIuPGNhcmV0PgorICB9CisgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9Qcm90ZWN0ZWRJbmFjY2Vzc2libGVPblNlY29uZEludm9jYXRpb24uamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9Qcm90ZWN0ZWRJbmFjY2Vzc2libGVPblNlY29uZEludm9jYXRpb24uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jODUyM2U4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL1Byb3RlY3RlZEluYWNjZXNzaWJsZU9uU2Vjb25kSW52b2NhdGlvbi5qYXZhCkBAIC0wLDAgKzEsOSBAQAorcHVibGljIGNsYXNzIFF1ZXR6YWxjb2F0bCB7CisgIHByaXZhdGUgaW50IF9mb287Cit9CisKK3B1YmxpYyBjbGFzcyBCZWRhIGV4dGVuZHMgUXVldHphbGNvYXRsIHsKKyAgICB7CisgICAgICBfPGNhcmV0PgorICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9Qcm90ZWN0ZWRJbmFjY2Vzc2libGVPblNlY29uZEludm9jYXRpb25fYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9Qcm90ZWN0ZWRJbmFjY2Vzc2libGVPblNlY29uZEludm9jYXRpb25fYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMzY3MjYyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL1Byb3RlY3RlZEluYWNjZXNzaWJsZU9uU2Vjb25kSW52b2NhdGlvbl9hZnRlci5qYXZhCkBAIC0wLDAgKzEsOSBAQAorcHVibGljIGNsYXNzIFF1ZXR6YWxjb2F0bCB7CisgIHByaXZhdGUgaW50IF9mb287Cit9CisKK3B1YmxpYyBjbGFzcyBCZWRhIGV4dGVuZHMgUXVldHphbGNvYXRsIHsKKyAgICB7CisgICAgICBfZm9vPGNhcmV0PgorICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9RdWFsaWZpZWROZXcxLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvUXVhbGlmaWVkTmV3MS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQwNjI2ZjcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvUXVhbGlmaWVkTmV3MS5qYXZhCkBAIC0wLDAgKzEsMTEgQEAKK2NsYXNzIEZvbyB7CisgIHsKKyAgICBPdXRlciBvdXRlcjsKKyAgICBvdXRlci5uZXcgSTxjYXJldD4KKyAgfQorfQorCitjbGFzcyBPdXRlcnsKKyAgY2xhc3MgSW5uZXJ7fQorICBjbGFzcyBJSW5uZXJ7fQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL1F1YWxpZmllZE5ldzIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9RdWFsaWZpZWROZXcyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWM0ZjcxOQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9RdWFsaWZpZWROZXcyLmphdmEKQEAgLTAsMCArMSwxMSBAQAorY2xhc3MgRm9vIHsKKyAgeworICAgIE91dGVyIG91dGVyOworICAgIG91dGVyLm5ldyA8Y2FyZXQ+CisgIH0KK30KKworY2xhc3MgT3V0ZXJ7CisgIGNsYXNzIElubmVye30KKyAgY2xhc3MgQW5Jbm5lcnt9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvUXVhbGlmaWVyQXNQYWNrYWdlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvUXVhbGlmaWVyQXNQYWNrYWdlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWYwNzQ4NQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9RdWFsaWZpZXJBc1BhY2thZ2UuamF2YQpAQCAtMCwwICsxLDEwIEBACitpbXBvcnQgamF2YS51dGlsLkxpc3Q7CisKK3B1YmxpYyBjbGFzcyBGb29CYXIgeworCisgICAgeworICAgICAgICBMaXN0PFN0cmluZz4gamF2YTsKKyAgICAgICAgamF2YS5hZGRBbDxjYXJldD5sbGwoKTsKKyAgICB9CisKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvUXVhbGlmaWVyQXNQYWNrYWdlMi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL1F1YWxpZmllckFzUGFja2FnZTIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43YzdkMWY5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL1F1YWxpZmllckFzUGFja2FnZTIuamF2YQpAQCAtMCwwICsxLDEwIEBACitpbXBvcnQgamF2YS51dGlsLkxpc3Q7CisKK3B1YmxpYyBjbGFzcyBGb29CYXIgeworCisgICAgeworICAgICAgICBMaXN0PFN0cmluZz4gamF2YTsKKyAgICAgICAgamF2YS5hZGRBbDxjYXJldD4gbGxsKCk7CisgICAgfQorCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL1F1YWxpZmllckFzUGFja2FnZTJfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9RdWFsaWZpZXJBc1BhY2thZ2UyX2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmJhYzE4ZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9RdWFsaWZpZXJBc1BhY2thZ2UyX2FmdGVyLmphdmEKQEAgLTAsMCArMSwxMCBAQAoraW1wb3J0IGphdmEudXRpbC5MaXN0OworCitwdWJsaWMgY2xhc3MgRm9vQmFyIHsKKworICAgIHsKKyAgICAgICAgTGlzdDxTdHJpbmc+IGphdmE7CisgICAgICAgIGphdmEuYWRkQWxsKDxjYXJldD4pIGxsbCgpOworICAgIH0KKworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9RdWFsaWZpZXJBc1BhY2thZ2UzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvUXVhbGlmaWVyQXNQYWNrYWdlMy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE0ZTljYmIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvUXVhbGlmaWVyQXNQYWNrYWdlMy5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKK2ltcG9ydCBqYXZhLnV0aWwuTGlzdDsKKworcHVibGljIGNsYXNzIEZvb0JhciB7CisKKyAgICBpbnQgYSgpIHsKKyAgICAgICAgTGlzdDxTdHJpbmc+IGphdmE7CisgICAgICAgIGphdmEuYWRkQWw8Y2FyZXQ+IGxsbCgpOworICAgIH0KKworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9RdWFsaWZpZXJBc1BhY2thZ2UzX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvUXVhbGlmaWVyQXNQYWNrYWdlM19hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJiNGNlNjYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvUXVhbGlmaWVyQXNQYWNrYWdlM19hZnRlci5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKK2ltcG9ydCBqYXZhLnV0aWwuTGlzdDsKKworcHVibGljIGNsYXNzIEZvb0JhciB7CisKKyAgICBpbnQgYSgpIHsKKyAgICAgICAgTGlzdDxTdHJpbmc+IGphdmE7CisgICAgICAgIGphdmEuYWRkQWxsKDxjYXJldD4pIGxsbCgpOworICAgIH0KKworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9RdWFsaWZpZXJBc1BhY2thZ2VfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9RdWFsaWZpZXJBc1BhY2thZ2VfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMDMxYWU4ZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9RdWFsaWZpZXJBc1BhY2thZ2VfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDEwIEBACitpbXBvcnQgamF2YS51dGlsLkxpc3Q7CisKK3B1YmxpYyBjbGFzcyBGb29CYXIgeworCisgICAgeworICAgICAgICBMaXN0PFN0cmluZz4gamF2YTsKKyAgICAgICAgamF2YS5hZGRBbGwoPGNhcmV0PilsbGwoKTsKKyAgICB9CisKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvUXVhbGlmaWVyQ2FzdGluZ0JlZm9yZUx0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvUXVhbGlmaWVyQ2FzdGluZ0JlZm9yZUx0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDc4NGIzNAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9RdWFsaWZpZXJDYXN0aW5nQmVmb3JlTHQuamF2YQpAQCAtMCwwICsxLDM3IEBACisvKgorICogQ29weXJpZ2h0IDIwMDAtMjAxMSBKZXRCcmFpbnMgcy5yLm8uCisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworaW1wb3J0IGphdmF4LnN3aW5nLio7CitpbXBvcnQgamF2YS5hd3QuKjsKKworcHVibGljIGNsYXNzIEJhciB7CisKKyAgICBzdGF0aWMgY2xhc3MgQ2VsbFdyYXBwZXIgeworICAgICAgICBwdWJsaWMgYm9vbGVhbiBpc1NlcGFyYXRvcigpIHsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgfQorCisgICAgc3RhdGljIGNsYXNzIE15UmVuZGVyZXIgZXh0ZW5kcyBEZWZhdWx0TGlzdENlbGxSZW5kZXJlciB7CisgICAgICAgIHB1YmxpYyBDb21wb25lbnQgZ2V0TGlzdENlbGxSZW5kZXJlckNvbXBvbmVudChKTGlzdCBsaXN0LCBPYmplY3QgdmFsdWUsIGludCBpbmRleCwgYm9vbGVhbiBzLCBib29sZWFuIGZvY3VzKSB7CisgICAgICAgICAgICBhc3NlcnQgdmFsdWUgaW5zdGFuY2VvZiBDZWxsV3JhcHBlcjsKKworICAgICAgICAgICAgdmFsdWUuaXM8Y2FyZXQ+PGNhcj4KKworICAgICAgICB9CisgICAgfQorCit9CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9RdWFsaWZpZXJDYXN0aW5nQmVmb3JlTHRfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9RdWFsaWZpZXJDYXN0aW5nQmVmb3JlTHRfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MDk1YzJiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL1F1YWxpZmllckNhc3RpbmdCZWZvcmVMdF9hZnRlci5qYXZhCkBAIC0wLDAgKzEsMzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwMC0yMDExIEpldEJyYWlucyBzLnIuby4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitpbXBvcnQgamF2YXguc3dpbmcuKjsKK2ltcG9ydCBqYXZhLmF3dC4qOworCitwdWJsaWMgY2xhc3MgQmFyIHsKKworICAgIHN0YXRpYyBjbGFzcyBDZWxsV3JhcHBlciB7CisgICAgICAgIHB1YmxpYyBib29sZWFuIGlzU2VwYXJhdG9yKCkgeworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBzdGF0aWMgY2xhc3MgTXlSZW5kZXJlciBleHRlbmRzIERlZmF1bHRMaXN0Q2VsbFJlbmRlcmVyIHsKKyAgICAgICAgcHVibGljIENvbXBvbmVudCBnZXRMaXN0Q2VsbFJlbmRlcmVyQ29tcG9uZW50KEpMaXN0IGxpc3QsIE9iamVjdCB2YWx1ZSwgaW50IGluZGV4LCBib29sZWFuIHMsIGJvb2xlYW4gZm9jdXMpIHsKKyAgICAgICAgICAgIGFzc2VydCB2YWx1ZSBpbnN0YW5jZW9mIENlbGxXcmFwcGVyOworCisgICAgICAgICAgICAoKENlbGxXcmFwcGVyKSB2YWx1ZSkuaXNTZXBhcmF0b3IoKTxjYXJldD48Y2FyPgorCisgICAgICAgIH0KKyAgICB9CisKK30KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL1F1YWxpZmllckNhc3RpbmdXaXRoVW5rbm93bkFzc2lnbm1lbnRzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvUXVhbGlmaWVyQ2FzdGluZ1dpdGhVbmtub3duQXNzaWdubWVudHMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lOWQ0NDk4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL1F1YWxpZmllckNhc3RpbmdXaXRoVW5rbm93bkFzc2lnbm1lbnRzLmphdmEKQEAgLTAsMCArMSwyNCBAQAoraW1wb3J0IGphdmF4LnN3aW5nLio7CitpbXBvcnQgamF2YS5hd3QuKjsKKworcHVibGljIGNsYXNzIEJhciB7CisKKyAgICBzdGF0aWMgY2xhc3MgQ2VsbFdyYXBwZXIgeworICAgICAgICBwdWJsaWMgYm9vbGVhbiBpc1NlcGFyYXRvcigpIHsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgfQorCisgICAgc3RhdGljIGNsYXNzIE15UmVuZGVyZXIgZXh0ZW5kcyBEZWZhdWx0TGlzdENlbGxSZW5kZXJlciB7CisgICAgICAgIHB1YmxpYyBDb21wb25lbnQgZ2V0TGlzdENlbGxSZW5kZXJlckNvbXBvbmVudChKTGlzdCBsaXN0LCBPYmplY3QgdmFsdWUsIGludCBpbmRleCwgYm9vbGVhbiBzLCBib29sZWFuIGZvY3VzKSB7CisgICAgICAgICAgICBhc3NlcnQgdmFsdWUgaW5zdGFuY2VvZiBDZWxsV3JhcHBlcjsKKworICAgICAgICAgICAgdmFsdWUuaXM8Y2FyZXQ+CisKKyAgICAgICAgICAgIG15U2VsZWN0ZWQgPSBpc1NlbGVjdGVkOworCisgICAgICAgIH0KKyAgICB9CisKK30KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL1F1YWxpZmllckNhc3RpbmdXaXRoVW5rbm93bkFzc2lnbm1lbnRzX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvUXVhbGlmaWVyQ2FzdGluZ1dpdGhVbmtub3duQXNzaWdubWVudHNfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMDU1ZmRiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL1F1YWxpZmllckNhc3RpbmdXaXRoVW5rbm93bkFzc2lnbm1lbnRzX2FmdGVyLmphdmEKQEAgLTAsMCArMSwyNCBAQAoraW1wb3J0IGphdmF4LnN3aW5nLio7CitpbXBvcnQgamF2YS5hd3QuKjsKKworcHVibGljIGNsYXNzIEJhciB7CisKKyAgICBzdGF0aWMgY2xhc3MgQ2VsbFdyYXBwZXIgeworICAgICAgICBwdWJsaWMgYm9vbGVhbiBpc1NlcGFyYXRvcigpIHsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgfQorCisgICAgc3RhdGljIGNsYXNzIE15UmVuZGVyZXIgZXh0ZW5kcyBEZWZhdWx0TGlzdENlbGxSZW5kZXJlciB7CisgICAgICAgIHB1YmxpYyBDb21wb25lbnQgZ2V0TGlzdENlbGxSZW5kZXJlckNvbXBvbmVudChKTGlzdCBsaXN0LCBPYmplY3QgdmFsdWUsIGludCBpbmRleCwgYm9vbGVhbiBzLCBib29sZWFuIGZvY3VzKSB7CisgICAgICAgICAgICBhc3NlcnQgdmFsdWUgaW5zdGFuY2VvZiBDZWxsV3JhcHBlcjsKKworICAgICAgICAgICAgKChDZWxsV3JhcHBlcikgdmFsdWUpLmlzU2VwYXJhdG9yKCk8Y2FyZXQ+CisKKyAgICAgICAgICAgIG15U2VsZWN0ZWQgPSBpc1NlbGVjdGVkOworCisgICAgICAgIH0KKyAgICB9CisKK30KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL1F1YWxpZnlJbm5lck1lbWJlcnMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9RdWFsaWZ5SW5uZXJNZW1iZXJzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjRlOTBmNQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9RdWFsaWZ5SW5uZXJNZW1iZXJzLmphdmEKQEAgLTAsMCArMSwxMSBAQAorY2xhc3MgQzEgeworIHN0YXRpYyBlbnVtIEUgeworICAgRk9PLCBCQUFBQUFBQUFBUjsKKyB9Cit9CisKK2NsYXNzIEMyIHsKKyAgdm9pZCBmKCkgeworICAgICAgQzEuRSBlID0gQkFBQUE8Y2FyZXQ+OworICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvUXVhbGlmeUlubmVyTWVtYmVyc19hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL1F1YWxpZnlJbm5lck1lbWJlcnNfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MmQwYzU3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL1F1YWxpZnlJbm5lck1lbWJlcnNfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDExIEBACitjbGFzcyBDMSB7Cisgc3RhdGljIGVudW0gRSB7CisgICBGT08sIEJBQUFBQUFBQUFSOworIH0KK30KKworY2xhc3MgQzIgeworICB2b2lkIGYoKSB7CisgICAgICBDMS5FIGUgPSBDMS5FLkJBQUFBQUFBQUFSPGNhcmV0PjsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL1JlZmVyZW5jZVBhcmFtZXRlcnMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9SZWZlcmVuY2VQYXJhbWV0ZXJzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2VjYTkyNgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9SZWZlcmVuY2VQYXJhbWV0ZXJzLmphdmEKQEAgLTAsMCArMSw3IEBACitjbGFzcyBBQUFCe30KK2NsYXNzIEFBQUF7CisgeworIGludCBBQUFBQUFBQUEgPSAwOworIExpc3Q8QUE8Y2FyZXQ+PgorIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvUmVwbGFjZVRoaXNXaXRoU3VwZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9SZXBsYWNlVGhpc1dpdGhTdXBlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU1M2E0Y2UKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvUmVwbGFjZVRoaXNXaXRoU3VwZXIuamF2YQpAQCAtMCwwICsxLDEwIEBACitwdWJsaWMgY2xhc3MgVXRpbCB7CisgIHB1YmxpYyBVdGlsKFN0cmluZyBhKSB7CisgICAgdGhpcy5hID0gYTsKKyAgfQorCisgIHB1YmxpYyBVdGlsKCkgeworICAgIHN1PGNhcmV0PnRoaXMoIjIiKTsKKyAgfQorCit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvUmVwbGFjZVRoaXNXaXRoU3VwZXJfQWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9SZXBsYWNlVGhpc1dpdGhTdXBlcl9BZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJhZTkxZDgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvUmVwbGFjZVRoaXNXaXRoU3VwZXJfQWZ0ZXIuamF2YQpAQCAtMCwwICsxLDEwIEBACitwdWJsaWMgY2xhc3MgVXRpbCB7CisgIHB1YmxpYyBVdGlsKFN0cmluZyBhKSB7CisgICAgdGhpcy5hID0gYTsKKyAgfQorCisgIHB1YmxpYyBVdGlsKCkgeworICAgIHN1cGVyKDxjYXJldD4iMiIpOworICB9CisKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9SZXNvdXJjZVBhcmVudEluUmVzb3VyY2VMaXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvUmVzb3VyY2VQYXJlbnRJblJlc291cmNlTGlzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIzMWVhYTIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvUmVzb3VyY2VQYXJlbnRJblJlc291cmNlTGlzdC5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKK2NsYXNzIE15Q2xhc3MgeworICBzdGF0aWMgY2xhc3MgSW5uZXJSZXNvdXJjZSBpbXBsZW1lbnRzIEF1dG9DbG9zZWFibGUgeyB9Cit9CitjbGFzcyBNeU91dGVyUmVzb3VyY2UgaW1wbGVtZW50cyBBdXRvQ2xvc2VhYmxlIHsgfQorY2xhc3MgTWFpbiB7CisgIHZvaWQgZigpIHsKKyAgICB0cnkgKE15PGNhcmV0PiByKSB7CisgICAgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL1Jlc291cmNlUGFyZW50SW5SZXNvdXJjZUxpc3RfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9SZXNvdXJjZVBhcmVudEluUmVzb3VyY2VMaXN0X2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2U0OGYwYQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9SZXNvdXJjZVBhcmVudEluUmVzb3VyY2VMaXN0X2FmdGVyLmphdmEKQEAgLTAsMCArMSwxMCBAQAorY2xhc3MgTXlDbGFzcyB7CisgIHN0YXRpYyBjbGFzcyBJbm5lclJlc291cmNlIGltcGxlbWVudHMgQXV0b0Nsb3NlYWJsZSB7IH0KK30KK2NsYXNzIE15T3V0ZXJSZXNvdXJjZSBpbXBsZW1lbnRzIEF1dG9DbG9zZWFibGUgeyB9CitjbGFzcyBNYWluIHsKKyAgdm9pZCBmKCkgeworICAgIHRyeSAoTXlDbGFzczxjYXJldD4gcikgeworICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9SZXR1cm5JbkNhc2UuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9SZXR1cm5JbkNhc2UuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZmZjZGIwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL1JldHVybkluQ2FzZS5qYXZhCkBAIC0wLDAgKzEsNyBAQAorcHVibGljIGNsYXNzIERlbW8geworICAgIHsKKyAgICAgICAgc3dpdGNoKHgpIHsKKyAgICAgICAgICAgIGNhc2UgeTogcmV0PGNhcmV0PgorICAgICAgICB9CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL1JldHVybkluQ2FzZV9hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL1JldHVybkluQ2FzZV9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlhMTdmMjUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvUmV0dXJuSW5DYXNlX2FmdGVyLmphdmEKQEAgLTAsMCArMSw3IEBACitwdWJsaWMgY2xhc3MgRGVtbyB7CisgICAgeworICAgICAgICBzd2l0Y2goeCkgeworICAgICAgICAgICAgY2FzZSB5OiByZXR1cm48Y2FyZXQ+CisgICAgICAgIH0KKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvUmV0dXJuaW5nVHlwZVZhcmlhYmxlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvUmV0dXJuaW5nVHlwZVZhcmlhYmxlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDllZTE4OQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9SZXR1cm5pbmdUeXBlVmFyaWFibGUuamF2YQpAQCAtMCwwICsxLDMgQEAKK3B1YmxpYyBjbGFzcyBCZWRhIHsKKyAgICBwdWJsaWMgPFRvb29vPiBUb29vPGNhcmV0PgorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL1JldHVybmluZ1R5cGVWYXJpYWJsZTIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9SZXR1cm5pbmdUeXBlVmFyaWFibGUyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWRkNzA1OQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9SZXR1cm5pbmdUeXBlVmFyaWFibGUyLmphdmEKQEAgLTAsMCArMSwzIEBACitwdWJsaWMgY2xhc3MgQmVkYSB7CisgICAgcHVibGljIDxUb29vbz4gVG9vbzxjYXJldD4geAorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL1JldHVybmluZ1R5cGVWYXJpYWJsZTJfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9SZXR1cm5pbmdUeXBlVmFyaWFibGUyX2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGY4NDZlYQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9SZXR1cm5pbmdUeXBlVmFyaWFibGUyX2FmdGVyLmphdmEKQEAgLTAsMCArMSwzIEBACitwdWJsaWMgY2xhc3MgQmVkYSB7CisgICAgcHVibGljIDxUb29vbz4gVG9vb288Y2FyZXQ+IHgKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9SZXR1cm5pbmdUeXBlVmFyaWFibGUzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvUmV0dXJuaW5nVHlwZVZhcmlhYmxlMy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY3NWNlMjAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvUmV0dXJuaW5nVHlwZVZhcmlhYmxlMy5qYXZhCkBAIC0wLDAgKzEsMyBAQAorcHVibGljIGNsYXNzIEJlZGEgeworICAgIHB1YmxpYyA8VG9vb28+IFRvb288Y2FyZXQ+IGEoKQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL1JldHVybmluZ1R5cGVWYXJpYWJsZTNfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9SZXR1cm5pbmdUeXBlVmFyaWFibGUzX2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzM4MmE1N2MKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvUmV0dXJuaW5nVHlwZVZhcmlhYmxlM19hZnRlci5qYXZhCkBAIC0wLDAgKzEsMyBAQAorcHVibGljIGNsYXNzIEJlZGEgeworICAgIHB1YmxpYyA8VG9vb28+IFRvb29vPGNhcmV0PiBhKCkKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9SZXR1cm5pbmdUeXBlVmFyaWFibGVfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9SZXR1cm5pbmdUeXBlVmFyaWFibGVfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45OTA0NGI2YgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9SZXR1cm5pbmdUeXBlVmFyaWFibGVfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDMgQEAKK3B1YmxpYyBjbGFzcyBCZWRhIHsKKyAgICBwdWJsaWMgPFRvb29vPiBUb29vbzxjYXJldD4KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9SaWdodFNoaWZ0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvUmlnaHRTaGlmdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQwZDAzZjIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvUmlnaHRTaGlmdC5qYXZhCkBAIC0wLDAgKzEsOCBAQAorcHVibGljIGNsYXNzIFNvbWVDbGFzcyB7CisgIE9iamVjdCBteUZpZWxkMTsKKyAgT2JqZWN0IG15RmllbGQyOworCisgIHZvaWQgZm9vKGludCBwYXJhbSkgeworICAgIGludCBhID0gcGFyYW0gPj4gbXk8Y2FyZXQ+CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9TQ1I3MjA4LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvU0NSNzIwOC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdkNTM5MGUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvU0NSNzIwOC5qYXZhCkBAIC0wLDAgKzEsOSBAQAorY2xhc3MgQXsKKyAgeworICAgIHRyeXsgICAgICAKKyAgICB9CisgICAgY2F0Y2goRXhjZXB0aW9uKXsKKyAgICAgIGE8Y2FyZXQ+CisgICAgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL1NhbWVOYW1lZFZhcmlhYmxlSW5OZXN0ZWRDbGFzc2VzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvU2FtZU5hbWVkVmFyaWFibGVJbk5lc3RlZENsYXNzZXMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YjhjMmJjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL1NhbWVOYW1lZFZhcmlhYmxlSW5OZXN0ZWRDbGFzc2VzLmphdmEKQEAgLTAsMCArMSwxMSBAQAorcHVibGljIGNsYXNzIEJlZGEgeworICAgIHByaXZhdGUgaW50IGZmaWQ7CisKKyAgICBjbGFzcyBBYmMgeworICAgICAgICBpbnQgZmZpZDsKKworICAgICAgICB7CisgICAgICAgICAgICBmZjxjYXJldD4KKyAgICAgICAgfQorICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9TYW1lTmFtZWRWYXJpYWJsZUluTmVzdGVkQ2xhc3Nlc19hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL1NhbWVOYW1lZFZhcmlhYmxlSW5OZXN0ZWRDbGFzc2VzX2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmVlMzVlYQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9TYW1lTmFtZWRWYXJpYWJsZUluTmVzdGVkQ2xhc3Nlc19hZnRlci5qYXZhCkBAIC0wLDAgKzEsMTEgQEAKK3B1YmxpYyBjbGFzcyBCZWRhIHsKKyAgICBwcml2YXRlIGludCBmZmlkOworCisgICAgY2xhc3MgQWJjIHsKKyAgICAgICAgaW50IGZmaWQ7CisKKyAgICAgICAgeworICAgICAgICAgICAgZmZpZDxjYXJldD4KKyAgICAgICAgfQorICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9TYW1lU2lnbmF0dXJlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvU2FtZVNpZ25hdHVyZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVhN2Y4NmQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvU2FtZVNpZ25hdHVyZS5qYXZhCkBAIC0wLDAgKzEsMTEgQEAKK2ltcG9ydCBqYXZhLmlvLkZpbGU7CisKK2NsYXNzIFpvbyB7CisgIHByaXZhdGUgWm9vIGRlbGVnYXRlOworCisgIHB1YmxpYyB2b2lkIGZvbyhTdHJpbmcgcywgRmlsZSBmaWxlKSB7CisgIH0KKyAgcHVibGljIHZvaWQgZm9vKFN0cmluZyBzLCBGaWxlIGZpbGUsIGludCBhKSB7CisgICAgZGVsZWdhdGUuZm9vKHM8Y2FyZXQ+KTsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL1NhbWVTaWduYXR1cmVfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9TYW1lU2lnbmF0dXJlX2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjg3YzlmZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9TYW1lU2lnbmF0dXJlX2FmdGVyLmphdmEKQEAgLTAsMCArMSwxMSBAQAoraW1wb3J0IGphdmEuaW8uRmlsZTsKKworY2xhc3MgWm9vIHsKKyAgcHJpdmF0ZSBab28gZGVsZWdhdGU7CisKKyAgcHVibGljIHZvaWQgZm9vKFN0cmluZyBzLCBGaWxlIGZpbGUpIHsKKyAgfQorICBwdWJsaWMgdm9pZCBmb28oU3RyaW5nIHMsIEZpbGUgZmlsZSwgaW50IGEpIHsKKyAgICBkZWxlZ2F0ZS5mb28ocywgZmlsZSwgYSk7PGNhcmV0PgorICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvU2VhbWxlc3NDb25zdGFudC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL1NlYW1sZXNzQ29uc3RhbnQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNzA0ZmMxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL1NlYW1sZXNzQ29uc3RhbnQuamF2YQpAQCAtMCwwICsxLDkgQEAKK2ludGVyZmFjZSBCYXIgeworICBib29sZWFuIEFCQyA9IDI7Cit9CisKK2NsYXNzIEJhckltcGwgaW1wbGVtZW50cyBCYXIgeworICB7CisgICAgYm9vbGVhbiBhID0gQTxjYXJldD56eno7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvU2VhbWxlc3NDb25zdGFudF9hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL1NlYW1sZXNzQ29uc3RhbnRfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYjA5MmQ4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL1NlYW1sZXNzQ29uc3RhbnRfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDkgQEAKK2ludGVyZmFjZSBCYXIgeworICBib29sZWFuIEFCQyA9IDI7Cit9CisKK2NsYXNzIEJhckltcGwgaW1wbGVtZW50cyBCYXIgeworICB7CisgICAgYm9vbGVhbiBhID0gQUJDPGNhcmV0Pnp6ejsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9TZWNvbmRBbm9ueW1vdXNDbGFzc1BhcmFtZXRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL1NlY29uZEFub255bW91c0NsYXNzUGFyYW1ldGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmIxOTcyOQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9TZWNvbmRBbm9ueW1vdXNDbGFzc1BhcmFtZXRlci5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKK3B1YmxpYyBhYnN0cmFjdCBjbGFzcyBaenphIHsKKworICAgIHsKKyAgICAgICAgbmV3IFJ1bm5hYmxlKGhhc2hDb2RlKCksIGhhPGNhcmV0PikgeworCisgICAgICAgIH0KKyAgICB9CisKKworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9TZWNvbmRBbm9ueW1vdXNDbGFzc1BhcmFtZXRlcl9hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL1NlY29uZEFub255bW91c0NsYXNzUGFyYW1ldGVyX2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDE2NTVlOQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9TZWNvbmRBbm9ueW1vdXNDbGFzc1BhcmFtZXRlcl9hZnRlci5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKK3B1YmxpYyBhYnN0cmFjdCBjbGFzcyBaenphIHsKKworICAgIHsKKyAgICAgICAgbmV3IFJ1bm5hYmxlKGhhc2hDb2RlKCksIGhhc2hDb2RlKCk8Y2FyZXQ+KSB7CisKKyAgICAgICAgfQorICAgIH0KKworCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL1NlY29uZE1ldGhvZFBhcmFtZXRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL1NlY29uZE1ldGhvZFBhcmFtZXRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNiYzhmZTMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvU2Vjb25kTWV0aG9kUGFyYW1ldGVyLmphdmEKQEAgLTAsMCArMSwxMyBAQAorcHVibGljIGNsYXNzIEFhYSB7CisgICAgU3RyaW5nIGdnZXRBYWEoKSB7CisKKyAgICB9CisKKyAgICB2b2lkIGZvbyhpbnQgYSwgT2JqZWN0IGIpIHsKKworICAgIH0KKworICAgIHZvaWQgc2F2ZSgpIHsKKyAgICAgICAgZm9vKDIzOSwgZ2c8Y2FyZXQ+KTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL1NlY29uZE1ldGhvZFBhcmFtZXRlck5hbWUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9TZWNvbmRNZXRob2RQYXJhbWV0ZXJOYW1lLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWU1YWMzNgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9TZWNvbmRNZXRob2RQYXJhbWV0ZXJOYW1lLmphdmEKQEAgLTAsMCArMSw2IEBACitwdWJsaWMgY2xhc3MgTXlGaXJzdFRlc3RDbGFzc0ZvbyB7CisKKyAgICB2b2lkIGZvbyhpbnQgYSwgRWVlIGU8Y2FyZXQ+KXsKKyAgICB9CisKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvU2Vjb25kTWV0aG9kUGFyYW1ldGVyTmFtZV9hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL1NlY29uZE1ldGhvZFBhcmFtZXRlck5hbWVfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MDk0MjkyMQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9TZWNvbmRNZXRob2RQYXJhbWV0ZXJOYW1lX2FmdGVyLmphdmEKQEAgLTAsMCArMSw2IEBACitwdWJsaWMgY2xhc3MgTXlGaXJzdFRlc3RDbGFzc0ZvbyB7CisKKyAgICB2b2lkIGZvbyhpbnQgYSwgRWVlIGVlZTxjYXJldD4peworICAgIH0KKworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9TZWNvbmRNZXRob2RQYXJhbWV0ZXJfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9TZWNvbmRNZXRob2RQYXJhbWV0ZXJfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZjlmOGE2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL1NlY29uZE1ldGhvZFBhcmFtZXRlcl9hZnRlci5qYXZhCkBAIC0wLDAgKzEsMTMgQEAKK3B1YmxpYyBjbGFzcyBBYWEgeworICAgIFN0cmluZyBnZ2V0QWFhKCkgeworCisgICAgfQorCisgICAgdm9pZCBmb28oaW50IGEsIE9iamVjdCBiKSB7CisKKyAgICB9CisKKyAgICB2b2lkIHNhdmUoKSB7CisgICAgICAgIGZvbygyMzksIGdnZXRBYWEoKTxjYXJldD4pOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvU2Vjb25kVHlwZVBhcmFtZXRlckV4dGVuZHMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9TZWNvbmRUeXBlUGFyYW1ldGVyRXh0ZW5kcy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdkNWEzYzIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvU2Vjb25kVHlwZVBhcmFtZXRlckV4dGVuZHMuamF2YQpAQCAtMCwwICsxLDYgQEAKK2ludGVyZmFjZSBGb288VCxWPiB7fQorCisgIGNsYXNzIEJhcjxULFY+IHsKKyAgICBCYXIoRm9vPD8gZXh0ZW5kcyBULCA/IGV4dDxjYXJldD4+IGZvbykge30KKyAgfQorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvU2Vjb25kVHlwZVBhcmFtZXRlckV4dGVuZHNfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9TZWNvbmRUeXBlUGFyYW1ldGVyRXh0ZW5kc19hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdjZjRjODUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvU2Vjb25kVHlwZVBhcmFtZXRlckV4dGVuZHNfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDYgQEAKK2ludGVyZmFjZSBGb288VCxWPiB7fQorCisgIGNsYXNzIEJhcjxULFY+IHsKKyAgICBCYXIoRm9vPD8gZXh0ZW5kcyBULCA/IGV4dGVuZHMgPGNhcmV0Pj4gZm9vKSB7fQorICB9CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9TZWxlY3ROb1BhcmFtZXRlclNpZ25hdHVyZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL1NlbGVjdE5vUGFyYW1ldGVyU2lnbmF0dXJlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTM2ZTk4YwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9TZWxlY3ROb1BhcmFtZXRlclNpZ25hdHVyZS5qYXZhCkBAIC0wLDAgKzEsMTEgQEAKK3B1YmxpYyBjbGFzcyBNeUZpcnN0VGVzdENsYXNzRm9vIHsKKworICAgdm9pZCBmb28oKSB7fQorICAgdm9pZCBmb28oaW50IGEpIHt9CisgICB2b2lkIGZveChpbnQgYSkge30KKworICAgIHsKKyAgICAgICAgbmV3IE15Rmlyc3RUZXN0Q2xhc3NGb28oKS5mbzxjYXJldD4KKyAgICB9CisKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvU2VsZWN0Tm9QYXJhbWV0ZXJTaWduYXR1cmVfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9TZWxlY3ROb1BhcmFtZXRlclNpZ25hdHVyZV9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMxMTNjYzcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvU2VsZWN0Tm9QYXJhbWV0ZXJTaWduYXR1cmVfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDExIEBACitwdWJsaWMgY2xhc3MgTXlGaXJzdFRlc3RDbGFzc0ZvbyB7CisKKyAgIHZvaWQgZm9vKCkge30KKyAgIHZvaWQgZm9vKGludCBhKSB7fQorICAgdm9pZCBmb3goaW50IGEpIHt9CisKKyAgICB7CisgICAgICAgIG5ldyBNeUZpcnN0VGVzdENsYXNzRm9vKCkuZm9vKCk7PGNhcmV0PgorICAgIH0KKworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9TaW1wbGUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9TaW1wbGUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZTQwYzhkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL1NpbXBsZS5qYXZhCkBAIC0wLDAgKzEsMjAgQEAKK2NsYXNzIEEgZXh0ZW5kcyBCYXNleworICBpbnQgX2ZpZWxkOworICB2b2lkIF9tZXRob2QoKXt9CisKKyAgdm9pZCBmb28oKXsKKyAgICBpbnQgX2xvY2FsMTsKKyAgICBpbnQgX2xvY2FsMjsKKyAgICBfPGNhcmV0PgorICAgIGludCBfbG9jYWwzOworICB9Cit9CisKK2NsYXNzIEJhc2V7CisgIHZvaWQgX2Jhc2VNZXRob2QoKXt9CisgIGludCBfYmFzZUZpZWxkOworCisgIHByaXZhdGUgdm9pZCBwcml2YXRlTWV0aG9kKCl7fQorICBwcml2YXRlIGludCBwcml2YXRlRmllbGQ7Cit9CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9TaW1wbGVWYXJpYWJsZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL1NpbXBsZVZhcmlhYmxlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODExNGY4YwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9TaW1wbGVWYXJpYWJsZS5qYXZhCkBAIC0wLDAgKzEsNCBAQAorY2xhc3MgQXsKKyAgICBBIGFBID0gbmV3IEEoKTsKKyAgICBBIHggPSBhPGNhcmV0PgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9TaW1wbGVWYXJpYWJsZV9hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL1NpbXBsZVZhcmlhYmxlX2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTIzZTQ2MwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9TaW1wbGVWYXJpYWJsZV9hZnRlci5qYXZhCkBAIC0wLDAgKzEsNCBAQAorY2xhc3MgQXsKKyAgICBBIGFBID0gbmV3IEEoKTsKKyAgICBBIHggPSBhQTxjYXJldD4KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvU21hcnRFbnRlcldyYXBzQ29uc3RydWN0b3JDYWxsLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvU21hcnRFbnRlcldyYXBzQ29uc3RydWN0b3JDYWxsLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWZiOGFiZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9TbWFydEVudGVyV3JhcHNDb25zdHJ1Y3RvckNhbGwuamF2YQpAQCAtMCwwICsxLDEzIEBACitjbGFzcyBFbnRpdHkge30KK2NsYXNzIEVudGl0eUJ1aWxkZXIge30KKworY2xhc3MgVGVzdGVyIHsKKyAgcHJpdmF0ZSBFbnRpdHkgZW50aXR5OworCisgIHByaXZhdGUgdm9pZCBidWlsZChFbnRpdHlCdWlsZGVyIGJ1aWxkZXIpIHsKKyAgfQorCisgIHB1YmxpYyB2b2lkIHRlc3QxKCkgeworICAgICAgYnVpPGNhcmV0Pm5ldyBFbnRpdHlCdWlsZGVyKCk7CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9TbWFydEVudGVyV3JhcHNDb25zdHJ1Y3RvckNhbGxfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9TbWFydEVudGVyV3JhcHNDb25zdHJ1Y3RvckNhbGxfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40M2U5MTY4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL1NtYXJ0RW50ZXJXcmFwc0NvbnN0cnVjdG9yQ2FsbF9hZnRlci5qYXZhCkBAIC0wLDAgKzEsMTMgQEAKK2NsYXNzIEVudGl0eSB7fQorY2xhc3MgRW50aXR5QnVpbGRlciB7fQorCitjbGFzcyBUZXN0ZXIgeworICBwcml2YXRlIEVudGl0eSBlbnRpdHk7CisKKyAgcHJpdmF0ZSB2b2lkIGJ1aWxkKEVudGl0eUJ1aWxkZXIgYnVpbGRlcikgeworICB9CisKKyAgcHVibGljIHZvaWQgdGVzdDEoKSB7CisgICAgICBidWlsZChuZXcgRW50aXR5QnVpbGRlcigpKTs8Y2FyZXQ+CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9TcGFjZUFmdGVyTG9va3VwU3RyaW5nLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvU3BhY2VBZnRlckxvb2t1cFN0cmluZy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJlNjgwNWYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvU3BhY2VBZnRlckxvb2t1cFN0cmluZy5qYXZhCkBAIC0wLDAgKzEsOSBAQAorY2xhc3MgRm9vIHsKKworICAgIHsKKyAgICAgICAgU3RyaW5nIGFiYzsKKyAgICAgICAgU3RyaW5nIGFiY2RlZjsKKyAgICAgICAgYWI8Y2FyZXQ+IGQKKyAgICB9CisKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvU3BhY2VBZnRlckxvb2t1cFN0cmluZ19hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL1NwYWNlQWZ0ZXJMb29rdXBTdHJpbmdfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xM2Q0YzdhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL1NwYWNlQWZ0ZXJMb29rdXBTdHJpbmdfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDkgQEAKK2NsYXNzIEZvbyB7CisKKyAgICB7CisgICAgICAgIFN0cmluZyBhYmM7CisgICAgICAgIFN0cmluZyBhYmNkZWY7CisgICAgICAgIGFiYyA8Y2FyZXQ+IGQKKyAgICB9CisKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvU3BhY2VBZnRlclJldHVybi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL1NwYWNlQWZ0ZXJSZXR1cm4uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZTk0NzdjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL1NwYWNlQWZ0ZXJSZXR1cm4uamF2YQpAQCAtMCwwICsxLDggQEAKK3B1YmxpYyBhYnN0cmFjdCBjbGFzcyBaenphIHsKKworICAgIGludCBmb28oKSB7CisgICAgICAgIHJldDxjYXJldD54CisgICAgfQorCisKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvU3BhY2VBZnRlclJldHVybl9hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL1NwYWNlQWZ0ZXJSZXR1cm5fYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYjEyZmQ0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL1NwYWNlQWZ0ZXJSZXR1cm5fYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDggQEAKK3B1YmxpYyBhYnN0cmFjdCBjbGFzcyBaenphIHsKKworICAgIGludCBmb28oKSB7CisgICAgICAgIHJldHVybiA8Y2FyZXQ+eAorICAgIH0KKworCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL1NwYWNlc0Fyb3VuZEVxLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvU3BhY2VzQXJvdW5kRXEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNDMzMDhjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL1NwYWNlc0Fyb3VuZEVxLmphdmEKQEAgLTAsMCArMSw3IEBACitjbGFzcyBCIHsKKyAgdm9pZCBtKCkgeworICAgIGludCB4eHggPSAwOworICAgIGludCB4eHkgPSAwOworICAgIHh4PGNhcmV0PgorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL1NwYWNlc0Fyb3VuZEVxX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvU3BhY2VzQXJvdW5kRXFfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNWE3ZmI2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL1NwYWNlc0Fyb3VuZEVxX2FmdGVyLmphdmEKQEAgLTAsMCArMSw3IEBACitjbGFzcyBCIHsKKyAgdm9pZCBtKCkgeworICAgIGludCB4eHggPSAwOworICAgIGludCB4eHkgPSAwOworICAgIHh4eCA9IDxjYXJldD4KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9TdGF0aWNJbm5lckV4dGVuZGluZ091dGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvU3RhdGljSW5uZXJFeHRlbmRpbmdPdXRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcwYTdhMDkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvU3RhdGljSW5uZXJFeHRlbmRpbmdPdXRlci5qYXZhCkBAIC0wLDAgKzEsNyBAQAorY2xhc3MgQmFyIHsKKyAgICBwcml2YXRlIHN0YXRpYyBjbGFzcyBab29vb29vbyBleHRlbmRzIEJhciB7CisgICAgICAgIHsKKyAgICAgICAgICAgIFpvb29vPGNhcmV0PgorICAgICAgICB9CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL1N0YXRpY0lubmVyRXh0ZW5kaW5nT3V0ZXJfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9TdGF0aWNJbm5lckV4dGVuZGluZ091dGVyX2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjA1NzI0NwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9TdGF0aWNJbm5lckV4dGVuZGluZ091dGVyX2FmdGVyLmphdmEKQEAgLTAsMCArMSw3IEBACitjbGFzcyBCYXIgeworICAgIHByaXZhdGUgc3RhdGljIGNsYXNzIFpvb29vb29vIGV4dGVuZHMgQmFyIHsKKyAgICAgICAgeworICAgICAgICAgICAgWm9vb29vb288Y2FyZXQ+CisgICAgICAgIH0KKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvU3RhdGljYWxseUltcG9ydGVkSW5uZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9TdGF0aWNhbGx5SW1wb3J0ZWRJbm5lci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYyNjkxNWMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvU3RhdGljYWxseUltcG9ydGVkSW5uZXIuamF2YQpAQCAtMCwwICsxLDkgQEAKK2ltcG9ydCBzdGF0aWMgVXRpbDIuQUlPSW5uZXI7CisKK3B1YmxpYyBjbGFzcyBVdGlsMiB7CisgIHB1YmxpYyBzdGF0aWMgY2xhc3MgQUlPSW5uZXIge30KK30KKworY2xhc3MgVGVzdCB7CisgIEFJTzxjYXJldD4KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvU3RhdGljYWxseUltcG9ydGVkTWV0aG9kc0JlZm9yZUV4cHJlc3Npb24uamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9TdGF0aWNhbGx5SW1wb3J0ZWRNZXRob2RzQmVmb3JlRXhwcmVzc2lvbi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQyN2NkOTYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvU3RhdGljYWxseUltcG9ydGVkTWV0aG9kc0JlZm9yZUV4cHJlc3Npb24uamF2YQpAQCAtMCwwICsxLDExIEBACitpbXBvcnQgc3RhdGljIEZvby5hc3NlcnROb3ROdWxsOworCitjbGFzcyBGb28geworICBzdGF0aWMgdm9pZCBhc3NlcnROb3ROdWxsKCkge30KK30KKworY2xhc3MgQmFyIHsKKyAgeworICAgIGFzbm48Y2FyZXQ+IGxpc3RzLmdldCgwKS5zaXplKCkgPiAwKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9TdGF0aWNhbGx5SW1wb3J0ZWRNZXRob2RzQmVmb3JlRXhwcmVzc2lvbl9hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL1N0YXRpY2FsbHlJbXBvcnRlZE1ldGhvZHNCZWZvcmVFeHByZXNzaW9uX2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmNjMWQ1NQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9TdGF0aWNhbGx5SW1wb3J0ZWRNZXRob2RzQmVmb3JlRXhwcmVzc2lvbl9hZnRlci5qYXZhCkBAIC0wLDAgKzEsMTEgQEAKK2ltcG9ydCBzdGF0aWMgRm9vLmFzc2VydE5vdE51bGw7CisKK2NsYXNzIEZvbyB7CisgIHN0YXRpYyB2b2lkIGFzc2VydE5vdE51bGwoKSB7fQorfQorCitjbGFzcyBCYXIgeworICB7CisgICAgYXNzZXJ0Tm90TnVsbCgpOzxjYXJldD4gbGlzdHMuZ2V0KDApLnNpemUoKSA+IDApOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL1N1Z2dlc3RBbGxUeXBlQXJndW1lbnRzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvU3VnZ2VzdEFsbFR5cGVBcmd1bWVudHMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NTNiOGMwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL1N1Z2dlc3RBbGxUeXBlQXJndW1lbnRzLmphdmEKQEAgLTAsMCArMSw1IEBACitpbXBvcnQgamF2YS51dGlsLkhhc2hNYXA7CisKK3B1YmxpYyBjbGFzcyBBIHsKKyAgcHJpdmF0ZSBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiBtID0gbmV3IEhhc2hNYXA8U3Q8Y2FyZXQ+PigpCit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvU3VnZ2VzdEFsbFR5cGVBcmd1bWVudHNfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9TdWdnZXN0QWxsVHlwZUFyZ3VtZW50c19hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUxMzUwODkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvU3VnZ2VzdEFsbFR5cGVBcmd1bWVudHNfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDUgQEAKK2ltcG9ydCBqYXZhLnV0aWwuSGFzaE1hcDsKKworcHVibGljIGNsYXNzIEEgeworICBwcml2YXRlIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IG0gPSBuZXcgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4oPGNhcmV0PikKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9TdWdnZXN0RW1wdHlTZXQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9TdWdnZXN0RW1wdHlTZXQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMGI4ODIzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL1N1Z2dlc3RFbXB0eVNldC5qYXZhCkBAIC0wLDAgKzEsNyBAQAoraW1wb3J0IGphdmEudXRpbC5TZXQ7CisKK2NsYXNzIEZvbyB7CisgIHsKKyAgICBTZXQ8U3RyaW5nPiBzID0gZW1wdDxjYXJldD4KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9TdWdnZXN0RW1wdHlTZXRfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9TdWdnZXN0RW1wdHlTZXRfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hOWY5Y2E5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL1N1Z2dlc3RFbXB0eVNldF9hZnRlci5qYXZhCkBAIC0wLDAgKzEsOCBAQAoraW1wb3J0IGphdmEudXRpbC5Db2xsZWN0aW9uczsKK2ltcG9ydCBqYXZhLnV0aWwuU2V0OworCitjbGFzcyBGb28geworICB7CisgICAgU2V0PFN0cmluZz4gcyA9IENvbGxlY3Rpb25zLmVtcHR5U2V0KCk8Y2FyZXQ+CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvU3VnZ2VzdEV4cGVjdGVkVHlwZU1lbWJlcnMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9TdWdnZXN0RXhwZWN0ZWRUeXBlTWVtYmVycy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIwM2E0ZjIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvU3VnZ2VzdEV4cGVjdGVkVHlwZU1lbWJlcnMuamF2YQpAQCAtMCwwICsxLDEwIEBACitjbGFzcyBTdXBlciB7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdXBlciBGT08gPSBudWxsOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgYm9vbGVhbiBGT1ggPSB0cnVlOworfQorCitjbGFzcyBJbnRlcm1lZGlhdGUgeworICAgIFN1cGVyIHMgPSBGTzxjYXJldD4KK30KKworCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvU3VnZ2VzdEV4cGVjdGVkVHlwZU1lbWJlcnNJbkFubm8uamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9TdWdnZXN0RXhwZWN0ZWRUeXBlTWVtYmVyc0luQW5uby5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVlZWU5Y2YKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvU3VnZ2VzdEV4cGVjdGVkVHlwZU1lbWJlcnNJbkFubm8uamF2YQpAQCAtMCwwICsxLDQgQEAKK2VudW0gVGVzdEVudW0geyBURVhUMSwgVEVYVDIgfQorcHVibGljIEBpbnRlcmZhY2UgVGVzdEFubm90YXRpb24geyBUZXN0RW51bSB2YWx1ZSgpOyB9CisKK0BUZXN0QW5ub3RhdGlvbihUZXg8Y2FyZXQ+KQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9TdWdnZXN0RXhwZWN0ZWRUeXBlTWVtYmVyc0luQW5ub19hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL1N1Z2dlc3RFeHBlY3RlZFR5cGVNZW1iZXJzSW5Bbm5vX2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGMwZjQ3OAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9TdWdnZXN0RXhwZWN0ZWRUeXBlTWVtYmVyc0luQW5ub19hZnRlci5qYXZhCkBAIC0wLDAgKzEsNCBAQAorZW51bSBUZXN0RW51bSB7IFRFWFQxLCBURVhUMiB9CitwdWJsaWMgQGludGVyZmFjZSBUZXN0QW5ub3RhdGlvbiB7IFRlc3RFbnVtIHZhbHVlKCk7IH0KKworQFRlc3RBbm5vdGF0aW9uKFRlc3RFbnVtLlRFWFQxPGNhcmV0PikKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvU3VnZ2VzdEV4cGVjdGVkVHlwZU1lbWJlcnNJbkNhbGwuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9TdWdnZXN0RXhwZWN0ZWRUeXBlTWVtYmVyc0luQ2FsbC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgzNGIxYzcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvU3VnZ2VzdEV4cGVjdGVkVHlwZU1lbWJlcnNJbkNhbGwuamF2YQpAQCAtMCwwICsxLDEyIEBACitjbGFzcyBTdXBlciB7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdXBlciBGT08gPSBudWxsOworfQorCitjbGFzcyBJbnRlcm1lZGlhdGUgeworICAgIHZvaWQgZm9vKFN1cGVyIHMsIGludCBhKSB7fQorICB2b2lkIGJhcigpIHsKKyAgICBmb28oRk88Y2FyZXQ+KQorICB9Cit9CisKKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL1N1Z2dlc3RFeHBlY3RlZFR5cGVNZW1iZXJzSW5DYWxsX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvU3VnZ2VzdEV4cGVjdGVkVHlwZU1lbWJlcnNJbkNhbGxfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYWI1MmU3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL1N1Z2dlc3RFeHBlY3RlZFR5cGVNZW1iZXJzSW5DYWxsX2FmdGVyLmphdmEKQEAgLTAsMCArMSwxMiBAQAorY2xhc3MgU3VwZXIgeworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3VwZXIgRk9PID0gbnVsbDsKK30KKworY2xhc3MgSW50ZXJtZWRpYXRlIHsKKyAgICB2b2lkIGZvbyhTdXBlciBzLCBpbnQgYSkge30KKyAgdm9pZCBiYXIoKSB7CisgICAgZm9vKFN1cGVyLkZPTzxjYXJldD4pCisgIH0KK30KKworCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvU3VnZ2VzdEV4cGVjdGVkVHlwZU1lbWJlcnNOb25JbXBvcnRlZC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL1N1Z2dlc3RFeHBlY3RlZFR5cGVNZW1iZXJzTm9uSW1wb3J0ZWQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43Mjk2ODJjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL1N1Z2dlc3RFeHBlY3RlZFR5cGVNZW1iZXJzTm9uSW1wb3J0ZWQuamF2YQpAQCAtMCwwICsxLDcgQEAKK2NsYXNzIEludGVybWVkaWF0ZSB7CisgIHsKKyAgICBmb28uVXNhZ2UuZm9vKEZPPGNhcmV0PikKKyAgfQorfQorCisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9TdWdnZXN0RXhwZWN0ZWRUeXBlTWVtYmVyc05vbkltcG9ydGVkX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvU3VnZ2VzdEV4cGVjdGVkVHlwZU1lbWJlcnNOb25JbXBvcnRlZF9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFmOTc2MzYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvU3VnZ2VzdEV4cGVjdGVkVHlwZU1lbWJlcnNOb25JbXBvcnRlZF9hZnRlci5qYXZhCkBAIC0wLDAgKzEsOSBAQAoraW1wb3J0IGZvby5TdXBlcjsKKworY2xhc3MgSW50ZXJtZWRpYXRlIHsKKyAgeworICAgIGZvby5Vc2FnZS5mb28oU3VwZXIuRk9PPGNhcmV0PikKKyAgfQorfQorCisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9TdWdnZXN0RXhwZWN0ZWRUeXBlTWVtYmVyc19hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL1N1Z2dlc3RFeHBlY3RlZFR5cGVNZW1iZXJzX2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODZlODQ4ZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9TdWdnZXN0RXhwZWN0ZWRUeXBlTWVtYmVyc19hZnRlci5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKK2NsYXNzIFN1cGVyIHsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN1cGVyIEZPTyA9IG51bGw7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBib29sZWFuIEZPWCA9IHRydWU7Cit9CisKK2NsYXNzIEludGVybWVkaWF0ZSB7CisgICAgU3VwZXIgcyA9IFN1cGVyLkZPTzxjYXJldD4KK30KKworCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvU3VnZ2VzdEluYWNjZXNzaWJsZU9uU2Vjb25kSW52b2NhdGlvbi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL1N1Z2dlc3RJbmFjY2Vzc2libGVPblNlY29uZEludm9jYXRpb24uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MjdjMmRiYwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9TdWdnZXN0SW5hY2Nlc3NpYmxlT25TZWNvbmRJbnZvY2F0aW9uLmphdmEKQEAgLTAsMCArMSwxMSBAQAorcHVibGljIGNsYXNzIFF1ZXR6YWxjb2F0bCB7CisgIHByaXZhdGUgc3RhdGljIGludCBfZm9vOworICBwdWJsaWMgc3RhdGljIGludCBfYmFyOworICBwdWJsaWMgc3RhdGljIGludCBfZ29vOworfQorCitwdWJsaWMgY2xhc3MgQmVkYSB7CisgICAgeworICAgICAgUXVldHphbGNvYXRsLl88Y2FyZXQ+CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL1N1Z2dlc3RJbmFjY2Vzc2libGVPblNlY29uZEludm9jYXRpb25fYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9TdWdnZXN0SW5hY2Nlc3NpYmxlT25TZWNvbmRJbnZvY2F0aW9uX2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDcwNjlkMAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9TdWdnZXN0SW5hY2Nlc3NpYmxlT25TZWNvbmRJbnZvY2F0aW9uX2FmdGVyLmphdmEKQEAgLTAsMCArMSwxMSBAQAorcHVibGljIGNsYXNzIFF1ZXR6YWxjb2F0bCB7CisgIHByaXZhdGUgc3RhdGljIGludCBfZm9vOworICBwdWJsaWMgc3RhdGljIGludCBfYmFyOworICBwdWJsaWMgc3RhdGljIGludCBfZ29vOworfQorCitwdWJsaWMgY2xhc3MgQmVkYSB7CisgICAgeworICAgICAgUXVldHphbGNvYXRsLl9mb288Y2FyZXQ+CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL1N1Z2dlc3RNZW1iZXJzT2ZTdGF0aWNhbGx5SW1wb3J0ZWRDbGFzc2VzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvU3VnZ2VzdE1lbWJlcnNPZlN0YXRpY2FsbHlJbXBvcnRlZENsYXNzZXMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNDMxOTc0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL1N1Z2dlc3RNZW1iZXJzT2ZTdGF0aWNhbGx5SW1wb3J0ZWRDbGFzc2VzLmphdmEKQEAgLTAsMCArMSw2IEBACitpbXBvcnQgc3RhdGljIGZvby5Gb28uZm9vOworCitjbGFzcyBCYXIge3sKKyAgZm9vKCk7CisgIGJhPGNhcmV0PgorfX0KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9TdWdnZXN0TWVtYmVyc09mU3RhdGljYWxseUltcG9ydGVkQ2xhc3Nlc1VucXVhbGlmaWVkT25seS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL1N1Z2dlc3RNZW1iZXJzT2ZTdGF0aWNhbGx5SW1wb3J0ZWRDbGFzc2VzVW5xdWFsaWZpZWRPbmx5LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjBmMTQwMgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9TdWdnZXN0TWVtYmVyc09mU3RhdGljYWxseUltcG9ydGVkQ2xhc3Nlc1VucXVhbGlmaWVkT25seS5qYXZhCkBAIC0wLDAgKzEsNyBAQAoraW1wb3J0IGZvby5Gb287CitpbXBvcnQgc3RhdGljIGZvby5Gb28uZm9vOworCitjbGFzcyBCYXIge3sKKyAgZm9vKCk7CisgIG5ldyBGb28oKS5iYTxjYXJldD56Cit9fQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9TdWdnZXN0TWVtYmVyc09mU3RhdGljYWxseUltcG9ydGVkQ2xhc3Nlc1VucXVhbGlmaWVkT25seV9hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL1N1Z2dlc3RNZW1iZXJzT2ZTdGF0aWNhbGx5SW1wb3J0ZWRDbGFzc2VzVW5xdWFsaWZpZWRPbmx5X2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTQ3NmIwOQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9TdWdnZXN0TWVtYmVyc09mU3RhdGljYWxseUltcG9ydGVkQ2xhc3Nlc1VucXVhbGlmaWVkT25seV9hZnRlci5qYXZhCkBAIC0wLDAgKzEsNyBAQAoraW1wb3J0IGZvby5Gb287CitpbXBvcnQgc3RhdGljIGZvby5Gb28uZm9vOworCitjbGFzcyBCYXIge3sKKyAgZm9vKCk7CisgIG5ldyBGb28oKS5iYXIoKTs8Y2FyZXQ+Cit9fQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9TdWdnZXN0TWVtYmVyc09mU3RhdGljYWxseUltcG9ydGVkQ2xhc3Nlc19hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL1N1Z2dlc3RNZW1iZXJzT2ZTdGF0aWNhbGx5SW1wb3J0ZWRDbGFzc2VzX2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzlhZmVlMAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9TdWdnZXN0TWVtYmVyc09mU3RhdGljYWxseUltcG9ydGVkQ2xhc3Nlc19hZnRlci5qYXZhCkBAIC0wLDAgKzEsNyBAQAoraW1wb3J0IHN0YXRpYyBmb28uRm9vLmJhcjsKK2ltcG9ydCBzdGF0aWMgZm9vLkZvby5mb287CisKK2NsYXNzIEJhciB7eworICBmb28oKTsKKyAgYmFyKCk7PGNhcmV0PgorfX0KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9TdXBlckluQ29uc3RydWN0b3IuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9TdXBlckluQ29uc3RydWN0b3IuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYTAxNDllCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL1N1cGVySW5Db25zdHJ1Y3Rvci5qYXZhCkBAIC0wLDAgKzEsNyBAQAorcHVibGljIGNsYXNzIFh4eCB7CisKKyAgICBYeHgoKSB7CisgICAgICAgIHN1cDxjYXJldD4KKyAgICB9CisKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9TdXBlckluQ29uc3RydWN0b3JXaXRoUGFyYW1zLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvU3VwZXJJbkNvbnN0cnVjdG9yV2l0aFBhcmFtcy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFlYWVjMTUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvU3VwZXJJbkNvbnN0cnVjdG9yV2l0aFBhcmFtcy5qYXZhCkBAIC0wLDAgKzEsNyBAQAorcHVibGljIGNsYXNzIFh4eCBleHRlbmRzIGphdmEudXRpbC5BcnJheUxpc3QgeworCisgICAgWHh4KCkgeworICAgICAgICBzdXA8Y2FyZXQ+CisgICAgfQorCit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvU3VwZXJJbkNvbnN0cnVjdG9yV2l0aFBhcmFtc19hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL1N1cGVySW5Db25zdHJ1Y3RvcldpdGhQYXJhbXNfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YThhZDkxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL1N1cGVySW5Db25zdHJ1Y3RvcldpdGhQYXJhbXNfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDcgQEAKK3B1YmxpYyBjbGFzcyBYeHggZXh0ZW5kcyBqYXZhLnV0aWwuQXJyYXlMaXN0IHsKKworICAgIFh4eCgpIHsKKyAgICAgICAgc3VwZXIoPGNhcmV0Pik7CisgICAgfQorCit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvU3VwZXJJbkNvbnN0cnVjdG9yX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvU3VwZXJJbkNvbnN0cnVjdG9yX2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTkxMjJlZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9TdXBlckluQ29uc3RydWN0b3JfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDcgQEAKK3B1YmxpYyBjbGFzcyBYeHggeworCisgICAgWHh4KCkgeworICAgICAgICBzdXBlcigpOzxjYXJldD4KKyAgICB9CisKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9TdXBlckluTWV0aG9kLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvU3VwZXJJbk1ldGhvZC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkwZTgwZmEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvU3VwZXJJbk1ldGhvZC5qYXZhCkBAIC0wLDAgKzEsNyBAQAorcHVibGljIGNsYXNzIFh4eCB7CisKKyAgICB2b2lkIGZvbygpIHsKKyAgICAgICAgc3VwPGNhcmV0PgorICAgIH0KKworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL1N1cGVySW5NZXRob2RfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9TdXBlckluTWV0aG9kX2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGU0YzExMgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9TdXBlckluTWV0aG9kX2FmdGVyLmphdmEKQEAgLTAsMCArMSw3IEBACitwdWJsaWMgY2xhc3MgWHh4IHsKKworICAgIHZvaWQgZm9vKCkgeworICAgICAgICBzdXBlcjxjYXJldD4KKyAgICB9CisKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9TdXBlclByb3RlY3RlZE1ldGhvZC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL1N1cGVyUHJvdGVjdGVkTWV0aG9kLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzUyMjMzMwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9TdXBlclByb3RlY3RlZE1ldGhvZC5qYXZhCkBAIC0wLDAgKzEsOSBAQAorY2xhc3MgQmFySW1wbCBleHRlbmRzIGZvby5CYXIgeworICAgIHsKKyAgICAgICAgbmV3IFJ1bm5hYmxlKCkgeworICAgICAgICAgICAgcHVibGljIHZvaWQgcnVuKCkgeworICAgICAgICAgICAgICAgIEJhckltcGwuc3VwZXIuZm88Y2FyZXQ+CisgICAgICAgICAgICB9CisgICAgICAgIH07CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL1N1cGVyUHJvdGVjdGVkTWV0aG9kX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvU3VwZXJQcm90ZWN0ZWRNZXRob2RfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44N2JjMzRlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL1N1cGVyUHJvdGVjdGVkTWV0aG9kX2FmdGVyLmphdmEKQEAgLTAsMCArMSw5IEBACitjbGFzcyBCYXJJbXBsIGV4dGVuZHMgZm9vLkJhciB7CisgICAgeworICAgICAgICBuZXcgUnVubmFibGUoKSB7CisgICAgICAgICAgICBwdWJsaWMgdm9pZCBydW4oKSB7CisgICAgICAgICAgICAgICAgQmFySW1wbC5zdXBlci5mb28oKTs8Y2FyZXQ+CisgICAgICAgICAgICB9CisgICAgICAgIH07CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL1N3aXRjaENvbnN0YW50c0Zyb21SZWZlcmVuY2VkQ2xhc3MuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9Td2l0Y2hDb25zdGFudHNGcm9tUmVmZXJlbmNlZENsYXNzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzA3ODY1NgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9Td2l0Y2hDb25zdGFudHNGcm9tUmVmZXJlbmNlZENsYXNzLmphdmEKQEAgLTAsMCArMSwxMyBAQAorY2xhc3MgRm9vIHsKKyAgdm9pZCBmb28oaW50IGkpIHsKKyAgICBzd2l0Y2ggKGkpIHsKKyAgICAgIGNhc2UgQ29uc3RhbnRzLkJBUjA6IHJldHVybjsKKyAgICAgIGNhc2UgQjxjYXJldD46CisgICAgfQorICB9Cit9CisKK2ludGVyZmFjZSBDb25zdGFudHMgeworICBpbnQgQkFSMCA9IDA7CisgIGludCBCQVIxID0gMTsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvU3dpdGNoQ29uc3RhbnRzRnJvbVJlZmVyZW5jZWRDbGFzc19hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL1N3aXRjaENvbnN0YW50c0Zyb21SZWZlcmVuY2VkQ2xhc3NfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMTY1NTAwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL1N3aXRjaENvbnN0YW50c0Zyb21SZWZlcmVuY2VkQ2xhc3NfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDEzIEBACitjbGFzcyBGb28geworICB2b2lkIGZvbyhpbnQgaSkgeworICAgIHN3aXRjaCAoaSkgeworICAgICAgY2FzZSBDb25zdGFudHMuQkFSMDogcmV0dXJuOworICAgICAgY2FzZSBDb25zdGFudHMuQkFSMTo8Y2FyZXQ+CisgICAgfQorICB9Cit9CisKK2ludGVyZmFjZSBDb25zdGFudHMgeworICBpbnQgQkFSMCA9IDA7CisgIGludCBCQVIxID0gMTsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvU3dpdGNoRW51bUxhYmVsLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvU3dpdGNoRW51bUxhYmVsLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjFkNDE2ZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9Td2l0Y2hFbnVtTGFiZWwuamF2YQpAQCAtMCwwICsxLDE1IEBACitjbGFzcyBBIGV4dGVuZHMgQmFzZXsKKyAgdm9pZCBmb28oKXsKKyAgICBCIHggPSBudWxsOworICAgIHN3aXRjaCh4KXsKKyAgICAgIGNhc2UgPGNhcmV0PgorICAgIH0KKyAgfQorfQorCitlbnVtIEJ7CisgIEEsCisgIEIsCisgIEMKK30KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL1N5bmNocm9uaXplZEhvbm91cnNDb2RlU3R5bGUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9TeW5jaHJvbml6ZWRIb25vdXJzQ29kZVN0eWxlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjEzYmY4ZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9TeW5jaHJvbml6ZWRIb25vdXJzQ29kZVN0eWxlLmphdmEKQEAgLTAsMCArMSw2IEBACitwdWJsaWMgY2xhc3MgQ2xpZW50IHsKKyAgcHVibGljIHZvaWQgcnVuKCkgeworICAgIHN5bmNocm9uaTxjYXJldD4KKworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL1N5bmNocm9uaXplZEhvbm91cnNDb2RlU3R5bGVfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9TeW5jaHJvbml6ZWRIb25vdXJzQ29kZVN0eWxlX2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjNjMzk1ZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9TeW5jaHJvbml6ZWRIb25vdXJzQ29kZVN0eWxlX2FmdGVyLmphdmEKQEAgLTAsMCArMSw2IEBACitwdWJsaWMgY2xhc3MgQ2xpZW50IHsKKyAgcHVibGljIHZvaWQgcnVuKCkgeworICAgIHN5bmNocm9uaXplZCAoPGNhcmV0PikKKworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL1RhYkluWG1sLnhtbCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9UYWJJblhtbC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTk0NjAxYQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9UYWJJblhtbC54bWwKQEAgLTAsMCArMSw1IEBACis8YT4KKyAgPGIgY2xhc3M9ImphdmEubGFuZy5JbnQ8Y2FyZXQ+eHh4Ij4KKworICA8L2I+Cis8L2E+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL1RhYkluWG1sMi54bWwgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvVGFiSW5YbWwyLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZmM4N2NjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL1RhYkluWG1sMi54bWwKQEAgLTAsMCArMSw1IEBACis8YT4KKyAgPGIgY2xhc3M9ImphdmEubGFuZy5JbnRlPGNhcmV0PmhoaGhoaGhoaGhoaGhoaGhoaGhoaGguaGhoaCI+CisKKyAgPC9iPgorPC9hPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9UYWJJblhtbDJfQWZ0ZXIueG1sIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL1RhYkluWG1sMl9BZnRlci54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTYxYzQ2NgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9UYWJJblhtbDJfQWZ0ZXIueG1sCkBAIC0wLDAgKzEsNSBAQAorPGE+CisgIDxiIGNsYXNzPSJqYXZhLmxhbmcuSW50ZWdlcjxjYXJldD4uaGhoaCI+CisKKyAgPC9iPgorPC9hPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9UYWJJblhtbF9BZnRlci54bWwgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvVGFiSW5YbWxfQWZ0ZXIueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM1ZWM3ZjAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvVGFiSW5YbWxfQWZ0ZXIueG1sCkBAIC0wLDAgKzEsNSBAQAorPGE+CisgIDxiIGNsYXNzPSJqYXZhLmxhbmcuSW50ZWdlcjxjYXJldD4iPgorCisgIDwvYj4KKzwvYT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvVGFiUmVwbGFjZXNNZXRob2ROYW1lV2l0aExvY2FsVmFyaWFibGVOYW1lLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvVGFiUmVwbGFjZXNNZXRob2ROYW1lV2l0aExvY2FsVmFyaWFibGVOYW1lLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTgyZDQwYQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9UYWJSZXBsYWNlc01ldGhvZE5hbWVXaXRoTG9jYWxWYXJpYWJsZU5hbWUuamF2YQpAQCAtMCwwICsxLDYgQEAKK2NsYXNzIEZvbyB7CisgICAgdm9pZCBmb28oKSB7CisgICAgICAgIE9iamVjdCB0ZXh0SW5kZXggPSBudWxsOworICAgICAgICBPYmplY3QgcCA9IHRJPGNhcmV0PmVxdWFscygyKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL1RhYlJlcGxhY2VzTWV0aG9kTmFtZVdpdGhMb2NhbFZhcmlhYmxlTmFtZV9hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL1RhYlJlcGxhY2VzTWV0aG9kTmFtZVdpdGhMb2NhbFZhcmlhYmxlTmFtZV9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg2Mjc5MTEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvVGFiUmVwbGFjZXNNZXRob2ROYW1lV2l0aExvY2FsVmFyaWFibGVOYW1lX2FmdGVyLmphdmEKQEAgLTAsMCArMSw2IEBACitjbGFzcyBGb28geworICAgIHZvaWQgZm9vKCkgeworICAgICAgICBPYmplY3QgdGV4dEluZGV4ID0gbnVsbDsKKyAgICAgICAgT2JqZWN0IHAgPSB0ZXh0SW5kZXg8Y2FyZXQ+KDIpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvVHdvU3BhY2VzSW5QYXJlbnNXaXRoUGFyYW1zLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvVHdvU3BhY2VzSW5QYXJlbnNXaXRoUGFyYW1zLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTZkZGQ5OQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9Ud29TcGFjZXNJblBhcmVuc1dpdGhQYXJhbXMuamF2YQpAQCAtMCwwICsxLDYgQEAKK3B1YmxpYyBjbGFzcyBNYWluIHsKKyAgeworICAgIE1haW4gdjsKKyAgICB2LmVxdWE8Y2FyZXQ+CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvVHdvU3BhY2VzSW5QYXJlbnNXaXRoUGFyYW1zX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvVHdvU3BhY2VzSW5QYXJlbnNXaXRoUGFyYW1zX2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWU3MGRjMQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9Ud29TcGFjZXNJblBhcmVuc1dpdGhQYXJhbXNfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDYgQEAKK3B1YmxpYyBjbGFzcyBNYWluIHsKKyAgeworICAgIE1haW4gdjsKKyAgICB2LmVxdWFscyggPGNhcmV0PiApCisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvVW5ib3hlZENvbnN0YW50c0luQ2FzZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL1VuYm94ZWRDb25zdGFudHNJbkNhc2UuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZGE2MDc1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL1VuYm94ZWRDb25zdGFudHNJbkNhc2UuamF2YQpAQCAtMCwwICsxLDExIEBACitwdWJsaWMgY2xhc3MgRGVtbyB7CisgICAgdm9pZCBmb28oSW50ZWdlciBpKXsKKyAgICAgICAgc3dpdGNoKGkpIHsKKyAgICAgICAgICAgIGNhc2UgVHlwZXMuQ0g8Y2FyZXQ+CisgICAgICAgIH0KKyAgICB9Cit9CisKK2ludGVyZmFjZSBUeXBlcyB7CisgIGludCBDSEFSID0gMjsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvVW5ib3hlZENvbnN0YW50c0luQ2FzZV9hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL1VuYm94ZWRDb25zdGFudHNJbkNhc2VfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NTE5MjYzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL1VuYm94ZWRDb25zdGFudHNJbkNhc2VfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDExIEBACitwdWJsaWMgY2xhc3MgRGVtbyB7CisgICAgdm9pZCBmb28oSW50ZWdlciBpKXsKKyAgICAgICAgc3dpdGNoKGkpIHsKKyAgICAgICAgICAgIGNhc2UgVHlwZXMuQ0hBUjxjYXJldD4KKyAgICAgICAgfQorICAgIH0KK30KKworaW50ZXJmYWNlIFR5cGVzIHsKKyAgaW50IENIQVIgPSAyOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9VbmZpbmlzaGVkTWV0aG9kVHlwZVBhcmFtZXRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL1VuZmluaXNoZWRNZXRob2RUeXBlUGFyYW1ldGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWRmYzgxNwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9VbmZpbmlzaGVkTWV0aG9kVHlwZVBhcmFtZXRlci5qYXZhCkBAIC0wLDAgKzEsNSBAQAoraW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7CisKK2NsYXNzIEEgeworICBwdWJsaWMgc3RhdGljIDxNeVBhcmFtZXRlciwgTXlTZWNvbmRQYXJhbWV0ZXI+IEFycmF5TGlzdDxNeTxjYXJldD4+Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL1VuZmluaXNoZWRNZXRob2RUeXBlUGFyYW1ldGVyMi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL1VuZmluaXNoZWRNZXRob2RUeXBlUGFyYW1ldGVyMi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM4MjQ4OWEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvVW5maW5pc2hlZE1ldGhvZFR5cGVQYXJhbWV0ZXIyLmphdmEKQEAgLTAsMCArMSw1IEBACitpbXBvcnQgamF2YS51dGlsLkFycmF5TGlzdDsKKworY2xhc3MgQSB7CisgIHB1YmxpYyBzdGF0aWMgPE15UGFyYW1ldGVyLCBNeVNlY29uZFBhcmFtZXRlcj4gTXk8Y2FyZXQ+PgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9Vbm5lY2Vzc2FyeU1ldGhvZE1lcmdpbmcuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9Vbm5lY2Vzc2FyeU1ldGhvZE1lcmdpbmcuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hOTUyZGE4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL1VubmVjZXNzYXJ5TWV0aG9kTWVyZ2luZy5qYXZhCkBAIC0wLDAgKzEsOCBAQAorY2xhc3MgRm9vIHsKKyAgICB2b2lkIGZvZm9vKCkge30KKyAgICB2b2lkIGZvZm9vKGludCBhKSB7fQorCisgICAgeworICAgICAgICBmb2Y8Y2FyZXQ+bworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvVmFyaWFibGVDb2xvbi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL1ZhcmlhYmxlQ29sb24uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MWVkNGNmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL1ZhcmlhYmxlQ29sb24uamF2YQpAQCAtMCwwICsxLDUgQEAKK2NsYXNzIEJhciB7CisgIGludCBmb28oaW50IHpvb29hLCBpbnQgem9vb2IpIHsKKyAgICByZXR1cm4gdHJ1ZSA/IHpvbzxjYXJldD4KKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL1ZhcmlhYmxlQ29sb25fYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9WYXJpYWJsZUNvbG9uX2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTc5MDRlZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9WYXJpYWJsZUNvbG9uX2FmdGVyLmphdmEKQEAgLTAsMCArMSw1IEBACitjbGFzcyBCYXIgeworICBpbnQgZm9vKGludCB6b29vYSwgaW50IHpvb29iKSB7CisgICAgcmV0dXJuIHRydWUgPyB6b29vYSA6IDxjYXJldD4KKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL1ZhcmlhYmxlU3F1YXJlQnJhY2tldC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL1ZhcmlhYmxlU3F1YXJlQnJhY2tldC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmViZmY5ZDkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvVmFyaWFibGVTcXVhcmVCcmFja2V0LmphdmEKQEAgLTAsMCArMSw3IEBACitjbGFzcyBGb28geworICB7CisgICAgaW50W10gYWFhYTsKKyAgICBpbnRbXSBhYWFiOworICAgIGFhPGNhcmV0PgorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL1ZhcmlhYmxlU3F1YXJlQnJhY2tldF9hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL1ZhcmlhYmxlU3F1YXJlQnJhY2tldF9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg0NTM4NjQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWwvVmFyaWFibGVTcXVhcmVCcmFja2V0X2FmdGVyLmphdmEKQEAgLTAsMCArMSw3IEBACitjbGFzcyBGb28geworICB7CisgICAgaW50W10gYWFhYTsKKyAgICBpbnRbXSBhYWFiOworICAgIGFhYWFbPGNhcmV0Pl0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9XaWxkY2FyZHNJbkxvb2t1cC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL1dpbGRjYXJkc0luTG9va3VwLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmFjZjcyZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9XaWxkY2FyZHNJbkxvb2t1cC5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKK3B1YmxpYyBhYnN0cmFjdCBjbGFzcyBaenphIHsKKworICAgIHsKKyAgICAgICAgaW50IGF6enpmenp6ID0gMjsKKyAgICAgICAgaW50IGZ6YXp6eiA9IDI7CisgICAgICAgIDxjYXJldD4KKyAgICB9CisKKworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9Xcml0ZUluSW52b2tlTGF0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbC9Xcml0ZUluSW52b2tlTGF0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMTE2OWMyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsL1dyaXRlSW5JbnZva2VMYXRlci5qYXZhCkBAIC0wLDAgKzEsNiBAQAorY2xhc3MgRm9vIHsKKyAgdm9pZCBmKCkgeworICAgIGxvbmcgZm9ydW1JZDsKKyAgICBTdHJpbmcgZm9ydW1OYW1lPWcoZm9yPGNhcmV0Pik7CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbFNvcnRpbmcvQWxwaGFTb3J0UGFja2FnZXMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbFNvcnRpbmcvQWxwaGFTb3J0UGFja2FnZXMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zY2MzMmMzNwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbFNvcnRpbmcvQWxwaGFTb3J0UGFja2FnZXMuamF2YQpAQCAtMCwwICsxLDYgQEAKK2NsYXNzIEdvbyB7CisgIHsKKyAgICBuZXcgRm9veDxjYXJldD4KKyAgfQorCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsU29ydGluZy9DYXNlSW5zZW5zaXRpdmVQcmVmaXhNYXRjaC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsU29ydGluZy9DYXNlSW5zZW5zaXRpdmVQcmVmaXhNYXRjaC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgzMGQxYmYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWxTb3J0aW5nL0Nhc2VJbnNlbnNpdGl2ZVByZWZpeE1hdGNoLmphdmEKQEAgLTAsMCArMSw5IEBACitjbGFzcyBGb28geworICB2b2lkIGZvbzEoKSB7fQorICB2b2lkIGZvbzIoKSB7fQorCisgIHsKKyAgICBmb288Y2FyZXQ+CisgIH0KKworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbFNvcnRpbmcvQ2hhbmdlUHJlc2VsZWN0aW9uT25TZWNvbmRJbnZvY2F0aW9uLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWxTb3J0aW5nL0NoYW5nZVByZXNlbGVjdGlvbk9uU2Vjb25kSW52b2NhdGlvbi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNjMDVmZTgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWxTb3J0aW5nL0NoYW5nZVByZXNlbGVjdGlvbk9uU2Vjb25kSW52b2NhdGlvbi5qYXZhCkBAIC0wLDAgKzEsNiBAQAorY2xhc3MgVXRpbCB7CisgIHsKKyAgICBGb29ab288Y2FyZXQ+CisgIH0KKworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbFNvcnRpbmcvQ2xhc3NTdGF0aWNNZW1iZXJzSW5Cb29sZWFuQ29udGV4dC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsU29ydGluZy9DbGFzc1N0YXRpY01lbWJlcnNJbkJvb2xlYW5Db250ZXh0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2Q0MGEyZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbFNvcnRpbmcvQ2xhc3NTdGF0aWNNZW1iZXJzSW5Cb29sZWFuQ29udGV4dC5qYXZhCkBAIC0wLDAgKzEsMTcgQEAKK3B1YmxpYyBjbGFzcyBGb28geworICAgIHsKKyAgICAgICAgaWYgKEJhci48Y2FyZXQ+KQorICAgIH0KK30KKworY2xhc3MgQmFyIHsKKworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCB2b2lkTWV0aG9kKCkge30KKyAgICBwdWJsaWMgc3RhdGljIGJvb2xlYW4gYm9vbGVhbk1ldGhvZCgpIHt9CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBib29sZWFuIEJPT0xFQU4gPSB0cnVlOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgT2JqZWN0IEFOX09CSkVDVCA9ICIiOworCisgICAgcHVibGljIHN0YXRpYyBjbGFzcyBJbm5lciB7fQorCisKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbFNvcnRpbmcvQ2xhc3NTdGF0aWNNZW1iZXJzSW5Wb2lkQ29udGV4dC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsU29ydGluZy9DbGFzc1N0YXRpY01lbWJlcnNJblZvaWRDb250ZXh0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTBkNDA0ZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbFNvcnRpbmcvQ2xhc3NTdGF0aWNNZW1iZXJzSW5Wb2lkQ29udGV4dC5qYXZhCkBAIC0wLDAgKzEsMTcgQEAKK3B1YmxpYyBjbGFzcyBGb28geworICAgIHsKKyAgICAgICAgQmFyLjxjYXJldD4KKyAgICB9Cit9CisKK2NsYXNzIEJhciB7CisKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgdm9pZE1ldGhvZCgpIHt9CisgICAgcHVibGljIHN0YXRpYyBib29sZWFuIGJvb2xlYW5NZXRob2QoKSB7fQorICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgYm9vbGVhbiBCT09MRUFOID0gdHJ1ZTsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIE9iamVjdCBBTl9PQkpFQ1QgPSAiIjsKKworICAgIHB1YmxpYyBzdGF0aWMgY2xhc3MgSW5uZXIge30KKworCit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWxTb3J0aW5nL0NvbW1vblByZWZpeE1vcmVJbXBvcnRhbnRUaGFuRXhwZWN0ZWRUeXBlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWxTb3J0aW5nL0NvbW1vblByZWZpeE1vcmVJbXBvcnRhbnRUaGFuRXhwZWN0ZWRUeXBlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTBhMmZmYgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbFNvcnRpbmcvQ29tbW9uUHJlZml4TW9yZUltcG9ydGFudFRoYW5FeHBlY3RlZFR5cGUuamF2YQpAQCAtMCwwICsxLDggQEAKKworcHVibGljIGNsYXNzIEZvbyB7CisgIGludCBteUN1cnJlbnRTdGVwID0gbnVsbDsKKyAgT2JqZWN0IG15U3RlcCA9IG51bGw7CisgIHZvaWQgZm9vKCkgeworICAgIGludCBhID0gbXlzdDxjYXJldD4KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbFNvcnRpbmcvQ29tbW9uUHJlZml4TW9yZUltcG9ydGFudFRoYW5LaW5kLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWxTb3J0aW5nL0NvbW1vblByZWZpeE1vcmVJbXBvcnRhbnRUaGFuS2luZC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlkMGY4MTMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWxTb3J0aW5nL0NvbW1vblByZWZpeE1vcmVJbXBvcnRhbnRUaGFuS2luZC5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKK2NsYXNzIFBzaUVsZW1lbnQge30KKworcHVibGljIGNsYXNzIEZvbyB7CisgIAorICBPYmplY3QgcHNpRWxlbWVudCgpIHt9CisgIAorICB2b2lkIGZvbygpIHsKKyAgICBQc2k8Y2FyZXQ+CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWxTb3J0aW5nL0N1cnJlbnRDbGFzc0Jlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbFNvcnRpbmcvQ3VycmVudENsYXNzQmVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQyMTIwODUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWxTb3J0aW5nL0N1cnJlbnRDbGFzc0Jlc3QuamF2YQpAQCAtMCwwICsxLDYgQEAKK2NsYXNzIFhjb2RlQ29uZmlndXJhYmxlIHt9CisKK2NsYXNzIFhjb2RlUHJvamVjdFRlbXBsYXRlIHsKKyAgWGNvZDxjYXJldD4KKworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbFNvcnRpbmcvRGVjbGFyZWRNZW1iZXJzR29GaXJzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsU29ydGluZy9EZWNsYXJlZE1lbWJlcnNHb0ZpcnN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWY2NDc0YQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbFNvcnRpbmcvRGVjbGFyZWRNZW1iZXJzR29GaXJzdC5qYXZhCkBAIC0wLDAgKzEsMTUgQEAKK2NsYXNzIEZvbyB7CisgIHZvaWQgZnJvbVN1cGVyKCkge30KKyAgdm9pZCBvdmVycmlkZGVuKCkge30KK30KKworY2xhc3MgRm9vSW1wbCBleHRlbmRzIEZvbyB7CisgIHZvaWQgb3ZlcnJpZGRlbigpIHt9CisgIHZvaWQgZnJvbVRoaXMoKSB7fQorfQorCitjbGFzcyBCYXIgeworICAgIHsKKyAgICAgICAgbmV3IEZvb0ltcGwoKS48Y2FyZXQ+CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsU29ydGluZy9EZWVwZXN0U3VwZXJNZXRob2RTdGF0cy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsU29ydGluZy9EZWVwZXN0U3VwZXJNZXRob2RTdGF0cy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ0MmI3ZWEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWxTb3J0aW5nL0RlZXBlc3RTdXBlck1ldGhvZFN0YXRzLmphdmEKQEAgLTAsMCArMSwxOCBAQAorY2xhc3MgQWJzdHJhY3RTZXQgeworICBwdWJsaWMgdm9pZCBhZGRYKCkge30KKyAgcHVibGljIHZvaWQgYWRkWSgpIHt9Cit9CisKK2NsYXNzIE15U2V0MSBleHRlbmRzIEFic3RyYWN0U2V0IHsKKyAgcHVibGljIHZvaWQgYWRkWCgpIHt9Cit9CitjbGFzcyBNeVNldDIgZXh0ZW5kcyBBYnN0cmFjdFNldCB7CisgIHB1YmxpYyB2b2lkIGFkZFgoKSB7fQorfQorCitjbGFzcyBGb28geworICAKKyAgdm9pZCBmb28oTXlTZXQxIHNldDEsIE15U2V0MiBzZXQyKSB7CisgICAgc2V0MS5hZDxjYXJldD4KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbFNvcnRpbmcvRGlzcHJlZmVyRGVjbGFyZWQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbFNvcnRpbmcvRGlzcHJlZmVyRGVjbGFyZWQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMmUwYWJjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsU29ydGluZy9EaXNwcmVmZXJEZWNsYXJlZC5qYXZhCkBAIC0wLDAgKzEsOSBAQAorcHVibGljIGNsYXNzIEFhYWFhYWEgeworICAgIHByaXZhdGUgZmluYWwgU3RyaW5nIGFhYTsKKworICAgIEFhYWFhYWEoU3RyaW5nIGFhYmJiKSB7CisgICAgICAgIGFhYSA9ICIiOworICAgICAgICBhYWEgPSB0cnVlID8gbnVsbCA6IGFhPGNhcmV0PgorICAgIH0KKworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsU29ydGluZy9EaXNwcmVmZXJEZWNsYXJlZE9mRXhwZWN0ZWRUeXBlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWxTb3J0aW5nL0Rpc3ByZWZlckRlY2xhcmVkT2ZFeHBlY3RlZFR5cGUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YWNjMGIxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsU29ydGluZy9EaXNwcmVmZXJEZWNsYXJlZE9mRXhwZWN0ZWRUeXBlLmphdmEKQEAgLTAsMCArMSw5IEBACitwdWJsaWMgY2xhc3MgQWFhYWFhYSB7CisgICAgcHJpdmF0ZSBmaW5hbCBTdHJpbmcgYWFhOworCisgICAgQWFhYWFhYShPYmplY3QgYWFiYmIpIHsKKyAgICAgICAgYWFhID0gIiI7CisgICAgICAgIGFhYSA9IHRydWUgPyBudWxsIDogYWE8Y2FyZXQ+CisgICAgfQorCit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWxTb3J0aW5nL0Rpc3ByZWZlckZpbmFsaXplLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWxTb3J0aW5nL0Rpc3ByZWZlckZpbmFsaXplLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWFlZTdiNzAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWxTb3J0aW5nL0Rpc3ByZWZlckZpbmFsaXplLmphdmEKQEAgLTAsMCArMSw3IEBACitwdWJsaWMgY2xhc3MgQmFyIHsKKworICAgIHsKKyAgICAgICAgZmluYTxjYXJldD54CisgICAgfQorCit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWxTb3J0aW5nL0Rpc3ByZWZlckltcGxzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWxTb3J0aW5nL0Rpc3ByZWZlckltcGxzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzNlODIwNgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbFNvcnRpbmcvRGlzcHJlZmVySW1wbHMuamF2YQpAQCAtMCwwICsxLDEyIEBACitwdWJsaWMgY2xhc3MgQWFhYWFhYSB7CisgICAgcHJpdmF0ZSBmaW5hbCBTdHJpbmcgYWFhOworCisgICAgQWFhYWFhYShPYmplY3QgYWFiYmIpIHsKKyAgICAgICAgWHg8Y2FyZXQ+CisgICAgfQorCit9CisKK2NsYXNzIFh4eEV4IHt9CitjbGFzcyBYeHhJbXBsIHt9CitjbGFzcyBYeHkge30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWxTb3J0aW5nL0Rpc3ByZWZlcklubmVyQ2xhc3Nlcy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsU29ydGluZy9EaXNwcmVmZXJJbm5lckNsYXNzZXMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYjJlMWQwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsU29ydGluZy9EaXNwcmVmZXJJbm5lckNsYXNzZXMuamF2YQpAQCAtMCwwICsxLDE0IEBACithYnN0cmFjdCBjbGFzcyBCYXNlIHsKKyAgICBwdWJsaWMgc3RhdGljIEBpbnRlcmZhY2UgSWZOb3RQYXJzZWQge30KKworICAgIHN0YXRpYyBjbGFzcyBYIHt9Cit9CisKK2NsYXNzIERlcml2ZWQgZXh0ZW5kcyBCYXNlIHsKKworfQorY2xhc3MgQiB7CisgICAgdm9pZCBmb28oRGVyaXZlZCBiKSB7CisgICAgICAgIGIuPGNhcmV0PgorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWxTb3J0aW5nL0Rpc3ByZWZlclJldHVybkJlZm9yZVN0YXRlbWVudC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsU29ydGluZy9EaXNwcmVmZXJSZXR1cm5CZWZvcmVTdGF0ZW1lbnQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xODFkNDQ4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsU29ydGluZy9EaXNwcmVmZXJSZXR1cm5CZWZvcmVTdGF0ZW1lbnQuamF2YQpAQCAtMCwwICsxLDcgQEAKK2NsYXNzIFV0aWwgeworICB2b2lkIGZvbyhpbnQgcmVhY3Rpb24sIGJvb2xlYW4gcmV6ZXQpIHsKKyAgICByZTxjYXJldD4KKyAgICBTeXN0ZW0ub3V0LnByaW50bG4oKTsKKyAgfQorCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsU29ydGluZy9Eb05vdFByZWZlckdldENsYXNzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWxTb3J0aW5nL0RvTm90UHJlZmVyR2V0Q2xhc3MuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zOTc2YzAxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsU29ydGluZy9Eb05vdFByZWZlckdldENsYXNzLmphdmEKQEAgLTAsMCArMSw4IEBACitpbXBvcnQgamF2YS51dGlsLkhhc2hNYXA7CisKK2NsYXNzIFV0aWwgeworICB2b2lkIGZvbyhpbnQgcmVhY3Rpb24sIGJvb2xlYW4gcmV6ZXQpIHsKKyAgICBuZXcgSGFzaE1hcCgpLmc8Y2FyZXQ+eAorICB9CisKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWxTb3J0aW5nL0RvbnRQcmVmZXJSZWN1cnNpdmVNZXRob2QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbFNvcnRpbmcvRG9udFByZWZlclJlY3Vyc2l2ZU1ldGhvZC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE2ZDkxZWEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWxTb3J0aW5nL0RvbnRQcmVmZXJSZWN1cnNpdmVNZXRob2QuamF2YQpAQCAtMCwwICsxLDcgQEAKK2NsYXNzIEZvbyB7CisKKyAgdm9pZCByZWdpc3RlcihpbnQgcmVnaXN0cmFyKSB7CisgICAgcmVnaTxjYXJldD4KKyAgfQorCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsU29ydGluZy9Eb250UHJlZmVyUmVjdXJzaXZlTWV0aG9kMi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsU29ydGluZy9Eb250UHJlZmVyUmVjdXJzaXZlTWV0aG9kMi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY2NDYyYWQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWxTb3J0aW5nL0RvbnRQcmVmZXJSZWN1cnNpdmVNZXRob2QyLmphdmEKQEAgLTAsMCArMSw3IEBACitjbGFzcyBGb28geworCisgIGludCByZWdpc3RlcigpIHsKKyAgICByZTxjYXJldD4KKyAgfQorCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsU29ydGluZy9Eb250UHJlc2VsZWN0TGFzdENob3NlbldpdGhVbnJlbGF0ZWRQcmVmaXguamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbFNvcnRpbmcvRG9udFByZXNlbGVjdExhc3RDaG9zZW5XaXRoVW5yZWxhdGVkUHJlZml4LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmZmZDkzNgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbFNvcnRpbmcvRG9udFByZXNlbGVjdExhc3RDaG9zZW5XaXRoVW5yZWxhdGVkUHJlZml4LmphdmEKQEAgLTAsMCArMSw4IEBACisKK3B1YmxpYyBjbGFzcyBGb28geworICBPYmplY3QgbXlFeHRlbmRzQ2xhdXNlID0gbnVsbDsKKyAgT2JqZWN0IG15Q2xhc3MgPSBudWxsOworICB2b2lkIGZvbygpIHsKKyAgICBteWV4YzxjYXJldD4KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbFNvcnRpbmcvRXF1YWxzU3RhdHMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbFNvcnRpbmcvRXF1YWxzU3RhdHMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMzVhNmMyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsU29ydGluZy9FcXVhbHNTdGF0cy5qYXZhCkBAIC0wLDAgKzEsOCBAQAoraW1wb3J0IGphdmEudXRpbC5IYXNoTWFwOworCitjbGFzcyBVdGlsIHsKKyAgdm9pZCBmb28oaW50IHJlYWN0aW9uLCBib29sZWFuIHJlemV0KSB7CisgICAgIiIuZXE8Y2FyZXQ+CisgIH0KKworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbFNvcnRpbmcvRXhwZWN0ZWRUeXBlSXNNb3JlSW1wb3J0YW50VGhhbkNhc2UuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbFNvcnRpbmcvRXhwZWN0ZWRUeXBlSXNNb3JlSW1wb3J0YW50VGhhbkNhc2UuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NWU5Y2MzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsU29ydGluZy9FeHBlY3RlZFR5cGVJc01vcmVJbXBvcnRhbnRUaGFuQ2FzZS5qYXZhCkBAIC0wLDAgKzEsOSBAQAorY2xhc3MgRm9vIHsKKyAgYm9vbGVhbiBFTkFCTEVEOworICB2b2lkIGVuYWJsZSgpIHt9CisKKyAgeworICAgIGlmICghZW48Y2FyZXQ+KQorICB9CisKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWxTb3J0aW5nL0ZxblN0YXRzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWxTb3J0aW5nL0ZxblN0YXRzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWJhMzg0MQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbFNvcnRpbmcvRnFuU3RhdHMuamF2YQpAQCAtMCwwICsxLDQgQEAKK2NsYXNzIEZvbyB7CisgIEJhYWE8Y2FyZXQ+eAorCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsU29ydGluZy9HZW5lcmljTWV0aG9kc1dpdGhCb3VuZFBhcmFtZXRlcnNBcmVTdGlsbEJldHRlclRoYW5DbGFzc0xpdGVyYWwuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbFNvcnRpbmcvR2VuZXJpY01ldGhvZHNXaXRoQm91bmRQYXJhbWV0ZXJzQXJlU3RpbGxCZXR0ZXJUaGFuQ2xhc3NMaXRlcmFsLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGU3MWM4NAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbFNvcnRpbmcvR2VuZXJpY01ldGhvZHNXaXRoQm91bmRQYXJhbWV0ZXJzQXJlU3RpbGxCZXR0ZXJUaGFuQ2xhc3NMaXRlcmFsLmphdmEKQEAgLTAsMCArMSwxNyBAQAorcHVibGljIGNsYXNzIFNlcnZpY2VNYW5hZ2VyIHsKKworICBwdWJsaWMgc3RhdGljIDxUPiBUIGdldFNlcnZpY2UoQ2xhc3M8VD4gc2VydmljZUNsYXNzKSB7CisgIH0KKworICBwdWJsaWMgc3RhdGljIDxUPiBUIGdldFNlcnZpY2UoUHJvamVjdCBwcm9qZWN0LCBDbGFzczxUPiBzZXJ2aWNlQ2xhc3MpIHsKKyAgfQorCit9CisKKworY2xhc3MgRm9vIHsKKyAgU3RyaW5nIGdldEZvbygpIHsKKyAgICByZXR1cm4gU2VydmljZU1hbmFnZXIuPGNhcmV0PgorICB9CisKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWxTb3J0aW5nL0lmQ29uZGl0aW9uU3RhdHMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbFNvcnRpbmcvSWZDb25kaXRpb25TdGF0cy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE5M2Y4MTAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWxTb3J0aW5nL0lmQ29uZGl0aW9uU3RhdHMuamF2YQpAQCAtMCwwICsxLDE0IEBACitjbGFzcyBBYnN0cmFjdFNldDxUPiB7CisgIHB1YmxpYyBib29sZWFuIGNvbnRhaW5zKFQgdCkge30KK30KKworY2xhc3MgTXlTZXQ8VD4gZXh0ZW5kcyBBYnN0cmFjdFNldDxUPiB7CisgIHB1YmxpYyBib29sZWFuIGNvbnRhaW5zQWxsKENvbGxlY3Rpb248Pz4gYykge30KK30KKworcHVibGljIGNsYXNzIEZvbyB7CisgIE15U2V0PFN0cmluZz4gc2V0OworICB2b2lkIGZvbygpIHsKKyAgICBpZiAoc2V0LjxjYXJldD4KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbFNvcnRpbmcvSW1wbHNBZnRlck5ldy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsU29ydGluZy9JbXBsc0FmdGVyTmV3LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWZkZTcwOQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbFNvcnRpbmcvSW1wbHNBZnRlck5ldy5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKK3B1YmxpYyBjbGFzcyBBYWFhYWFhIHsKKyAgICBwcml2YXRlIGZpbmFsIFN0cmluZyBhYWE7CisKKyAgICBBYWFhYWFhKE9iamVjdCBhYWJiYikgeworICAgICAgICBYeHggeCA9IG5ldyBYeDxjYXJldD4KKyAgICB9CisKK30KKworY2xhc3MgWHh4SW1wbCBpbXBsZW1lbnRzIFh4eCB7fQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbFNvcnRpbmcvSkNvbXBvbmVudEluc3RhbmNlTWVtYmVycy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsU29ydGluZy9KQ29tcG9uZW50SW5zdGFuY2VNZW1iZXJzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTE0YWRjNgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbFNvcnRpbmcvSkNvbXBvbmVudEluc3RhbmNlTWVtYmVycy5qYXZhCkBAIC0wLDAgKzEsNyBAQAoraW1wb3J0IGphdmF4LnN3aW5nLio7CisKK3B1YmxpYyBjbGFzcyBGb28geworICAgIHsKKyAgICAgICAgbmV3IEpQYW5lbCgpLjxjYXJldD4KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsU29ydGluZy9Mb2NhbFZhcnNPdmVyTWV0aG9kcy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsU29ydGluZy9Mb2NhbFZhcnNPdmVyTWV0aG9kcy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdkYWJjZGU3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsU29ydGluZy9Mb2NhbFZhcnNPdmVyTWV0aG9kcy5qYXZhCkBAIC0wLDAgKzEsOCBAQAorY2xhc3MgU29tZUNvbXBvbmVudCBleHRlbmRzIGphdmF4LnN3aW5nLkpQYW5lbCB7CisgIEBOdWxsYWJsZQorICBwdWJsaWMgU3RyaW5nIGdldFNlbGVjdGVkSXRlbVN0cmluZygpIHsKKyAgICBmaW5hbCBPYmplY3QgdmFsdWUgPSBnZXRMaXN0KCkuZ2V0U2VsZWN0ZWRWYWx1ZSgpOworICAgIHJldHVybiB2YWw8Y2FyZXQ+eAorICB9CisKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWxTb3J0aW5nL05vRXhwZWN0ZWRUeXBlSW5TdHJpbmdDb25jYXRlbmF0aW9uLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWxTb3J0aW5nL05vRXhwZWN0ZWRUeXBlSW5TdHJpbmdDb25jYXRlbmF0aW9uLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTcxODhlZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbFNvcnRpbmcvTm9FeHBlY3RlZFR5cGVJblN0cmluZ0NvbmNhdGVuYXRpb24uamF2YQpAQCAtMCwwICsxLDggQEAKK2ltcG9ydCBqYXZhLmxhbmcuU3RyaW5nOworCitwdWJsaWMgY2xhc3MgRm9vIHsKKyAgCisgIHZvaWQgZm9vKE9iamVjdCB2eCkgeworICAgIFN0cmluZyBzID0gIiIgKyB2PGNhcmV0PgorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsU29ydGluZy9QcmVmZXJBbm5vdGF0aW9uTWV0aG9kcy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsU29ydGluZy9QcmVmZXJBbm5vdGF0aW9uTWV0aG9kcy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI4ZGM3NmQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWxTb3J0aW5nL1ByZWZlckFubm90YXRpb25NZXRob2RzLmphdmEKQEAgLTAsMCArMSw3IEBACitAaW50ZXJmYWNlIEFubm8geworICBTdHJpbmcgdmFsdWUoKTsKKyAgU3RyaW5nIG5hbWUoKTsKK30KKworQEFubm8oPGNhcmV0PikKK2NsYXNzIEZvbyB7fQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbFNvcnRpbmcvUHJlZmVyQXBwbGljYWJsZUFubm90YXRpb25zLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWxTb3J0aW5nL1ByZWZlckFwcGxpY2FibGVBbm5vdGF0aW9ucy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZlNjA4MDcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWxTb3J0aW5nL1ByZWZlckFwcGxpY2FibGVBbm5vdGF0aW9ucy5qYXZhCkBAIC0wLDAgKzEsMiBAQAorQFQ8Y2FyZXQ+CitAaW50ZXJmYWNlIEZvbyB7IH0KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbFNvcnRpbmcvUHJlZmVyQXBwbGljYWJsZUFubm90YXRpb25zTWV0aG9kLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWxTb3J0aW5nL1ByZWZlckFwcGxpY2FibGVBbm5vdGF0aW9uc01ldGhvZC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM0NWU4Y2MKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWxTb3J0aW5nL1ByZWZlckFwcGxpY2FibGVBbm5vdGF0aW9uc01ldGhvZC5qYXZhCkBAIC0wLDAgKzEsNiBAQAorY2xhc3MgRm9vIHsKKyAgQFQ8Y2FyZXQ+CisgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKKyAgICAKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbFNvcnRpbmcvUHJlZmVyQmV0dGVyTWF0Y2hpbmdDb25zdGFudFRvTWV0aG9kcy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsU29ydGluZy9QcmVmZXJCZXR0ZXJNYXRjaGluZ0NvbnN0YW50VG9NZXRob2RzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDU2ZTc0NwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbFNvcnRpbmcvUHJlZmVyQmV0dGVyTWF0Y2hpbmdDb25zdGFudFRvTWV0aG9kcy5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKK2NsYXNzIEZvbyB7CisgIFN0cmluZyBzID0gVXRpbC5zZTxjYXJldD4KK30KKworY2xhc3MgVXRpbCB7CisgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIHNlcmlhbCA9ICJzZXJpYWxWZXJzaW9uVUlEIjsKKworICBwdWJsaWMgc3RhdGljIFJ1bm5hYmxlIHN1cGVyRXhwcmVzc2lvbkluSWxsZWdhbENvbnRleHQoKSB7fQorCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsU29ydGluZy9QcmVmZXJDbGFzc1N0YXRpY01lbWJlcnMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbFNvcnRpbmcvUHJlZmVyQ2xhc3NTdGF0aWNNZW1iZXJzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDczMzRjMgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbFNvcnRpbmcvUHJlZmVyQ2xhc3NTdGF0aWNNZW1iZXJzLmphdmEKQEAgLTAsMCArMSwxNiBAQAorZW51bSBab28geworICAgIEEsQixDLEQsRSxGLEcsSAorfQorCitjbGFzcyBaYWEge30KK2NsYXNzIFphYiB7fQorY2xhc3MgWmFjIHt9CitjbGFzcyBaYWQge30KK2NsYXNzIFphZSB7fQorCitjbGFzcyBCYXIgeworCisgICAgeworICAgICAgICBab28geiA9IFo8Y2FyZXQ+CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbFNvcnRpbmcvUHJlZmVyQ2xhc3NUb0l0c0NvbnN0YW50cy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsU29ydGluZy9QcmVmZXJDbGFzc1RvSXRzQ29uc3RhbnRzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzVlZTg3YwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbFNvcnRpbmcvUHJlZmVyQ2xhc3NUb0l0c0NvbnN0YW50cy5qYXZhCkBAIC0wLDAgKzEsOCBAQAoraW1wb3J0IGphdmEudXRpbC5DYWxlbmRhcjsKKworY2xhc3MgVXRpbCB7CisgIHZvaWQgZm9vKCkgeworICAgIENhbGVuZGFyLmdldEluc3RhbmNlKCkuZ2V0KENhbGU8Y2FyZXQ+eCkKKyAgfQorCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsU29ydGluZy9QcmVmZXJDbGFzc2VzSW5FeHRlbmRzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWxTb3J0aW5nL1ByZWZlckNsYXNzZXNJbkV4dGVuZHMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZGE4YTVjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsU29ydGluZy9QcmVmZXJDbGFzc2VzSW5FeHRlbmRzLmphdmEKQEAgLTAsMCArMSw4IEBACitpbnRlcmZhY2UgRm9vX0ludGYge30KK2NsYXNzIEZvb0NsYXNzIHt9CisKK2NsYXNzIEdvbyBleHRlbmRzIEZvbzxjYXJldD4geworICAgIGludCBib28oKSB7fQorICAgIGludCBkb28oKSB7fQorICAgIGludCBmb28oKSB7fQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsU29ydGluZy9QcmVmZXJEZWZhdWx0VHlwZVRvRXhwZWN0ZWQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbFNvcnRpbmcvUHJlZmVyRGVmYXVsdFR5cGVUb0V4cGVjdGVkLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTdmZTgwMAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbFNvcnRpbmcvUHJlZmVyRGVmYXVsdFR5cGVUb0V4cGVjdGVkLmphdmEKQEAgLTAsMCArMSwxMSBAQAorY2xhc3MgRm9vIHsKKyAgICBTdHJpbmcgZ2V0TmFtZSgpIHt9CisgICAgRm9vIGdldE5hbWVJZGVudGlmaWVyKCkge30KK30KKworY2xhc3MgQmFyIHsKKyAgICB2b2lkIGZvbygpIHsKKyAgICAgICBGb28gZjsKKyAgICAgICAgaWYgKCJhYmMiLmVxdWFscyhmLmdldE48Y2FyZXQ+KSkKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsU29ydGluZy9QcmVmZXJFbHNlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWxTb3J0aW5nL1ByZWZlckVsc2UuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NWFiMjc0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsU29ydGluZy9QcmVmZXJFbHNlLmphdmEKQEAgLTAsMCArMSw4IEBACitjbGFzcyBGb28geworICAgIHsKKyAgICAgICAgT2JqZWN0IGVsZW1lbnQ7CisgICAgICAgIGlmICh0cnVlKSB7fQorICAgICAgICBlbDxjYXJldD4KKyAgICB9CisKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWxTb3J0aW5nL1ByZWZlckVudW1Db25zdGFudHMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbFNvcnRpbmcvUHJlZmVyRW51bUNvbnN0YW50cy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBjMmVjZDQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWxTb3J0aW5nL1ByZWZlckVudW1Db25zdGFudHMuamF2YQpAQCAtMCwwICsxLDExIEBACitwdWJsaWMgY2xhc3MgRm9vIHsKKyAgdm9pZCBtZXRob2QoTXlFbnVtIGUpIHsgfQorCisgIHsKKyAgICBtZXRob2QoPGNhcmV0Pik7CisgIH0KKworCit9CisKK2VudW0gTXlFbnVtIHsgZm9vLCBiYXIgfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbFNvcnRpbmcvUHJlZmVyRmllbGRUb01ldGhvZC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsU29ydGluZy9QcmVmZXJGaWVsZFRvTWV0aG9kLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2QwMDU5MgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbFNvcnRpbmcvUHJlZmVyRmllbGRUb01ldGhvZC5qYXZhCkBAIC0wLDAgKzEsNiBAQAorcHVibGljIGNsYXNzIEZvbyB7CisgIHByaXZhdGUgaW50IHNpemU7CisKKyAgcHVibGljIGludCBzaXplKCkgeyByZXR1cm4gc2l6ZTsgfQorCisgIHB1YmxpYyBib29sZWFuIGlzRW1wdHkoKSB7IHJldHVybiBzaXplPGNhcmV0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbFNvcnRpbmcvUHJlZmVyRmluYWxseVRvRmluYWwuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbFNvcnRpbmcvUHJlZmVyRmluYWxseVRvRmluYWwuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iN2UxMWE0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsU29ydGluZy9QcmVmZXJGaW5hbGx5VG9GaW5hbC5qYXZhCkBAIC0wLDAgKzEsNiBAQAorY2xhc3MgQSB7CisgIHsKKyAgICB0cnkge30KKyAgICBmaW48Y2FyZXQ+eAorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsU29ydGluZy9QcmVmZXJJbnRlcmZhY2VzSW5JbXBsZW1lbnRzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWxTb3J0aW5nL1ByZWZlckludGVyZmFjZXNJbkltcGxlbWVudHMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ODA5ZDQyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsU29ydGluZy9QcmVmZXJJbnRlcmZhY2VzSW5JbXBsZW1lbnRzLmphdmEKQEAgLTAsMCArMSw4IEBACitpbnRlcmZhY2UgRm9vSW50ZiB7fQorY2xhc3MgRm9vQ2xhc3Mge30KKworY2xhc3MgR29vIGltcGxlbWVudHMgRm9vPGNhcmV0PiB7CisgICAgaW50IGJvbygpIHt9CisgICAgaW50IGRvbygpIHt9CisgICAgaW50IGZvbygpIHt9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWxTb3J0aW5nL1ByZWZlcktleXdvcmRzVG9Wb2lkTWV0aG9kc0luRXhwZWN0ZWRUeXBlQ29udGV4dC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsU29ydGluZy9QcmVmZXJLZXl3b3Jkc1RvVm9pZE1ldGhvZHNJbkV4cGVjdGVkVHlwZUNvbnRleHQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYzg5ZmVmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsU29ydGluZy9QcmVmZXJLZXl3b3Jkc1RvVm9pZE1ldGhvZHNJbkV4cGVjdGVkVHlwZUNvbnRleHQuamF2YQpAQCAtMCwwICsxLDExIEBACitjbGFzcyBGb28geworICBqYXZhLmlvLkZpbGUgZjsKKworICB7CisgICAgZiA9IG48Y2FyZXQ+CisgIH0KKworICBqYXZhLmlvLkZpbGUgbm9vKCkge30KKyAgT2JqZWN0IG5vbzIoKSB7fQorCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsU29ydGluZy9QcmVmZXJMZXNzSHVtcHMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbFNvcnRpbmcvUHJlZmVyTGVzc0h1bXBzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDg2YmVhMgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbFNvcnRpbmcvUHJlZmVyTGVzc0h1bXBzLmphdmEKQEAgLTAsMCArMSwxMiBAQAorcHVibGljIGNsYXNzIEFhYWFhYWEgeworICAgIHByaXZhdGUgZmluYWwgU3RyaW5nIGFhYTsKKworICAgIEFhYWFhYWEoT2JqZWN0IGFhYmJiKSB7CisgICAgICAgIGlmIChhYWJiYiBpbnN0YW5jZW9mIFhZPGNhcmV0PikKKyAgICB9CisKK30KKworY2xhc3MgWGFZYUV4IHt9CitjbGFzcyBYYVlhSW1wbCB7fQorY2xhc3MgWHlZYVhhIHt9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsU29ydGluZy9QcmVmZXJMZXNzUGFyYW1ldGVycy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsU29ydGluZy9QcmVmZXJMZXNzUGFyYW1ldGVycy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY4ZjhlZmEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWxTb3J0aW5nL1ByZWZlckxlc3NQYXJhbWV0ZXJzLmphdmEKQEAgLTAsMCArMSwxMiBAQAorcHVibGljIGNsYXNzIE15Rmlyc3RUZXN0Q2xhc3NGb28geworCisgICB2b2lkIGZvbyhpbnQgYSkge30KKyAgIHZvaWQgZm9vKCkge30KKyAgIHZvaWQgZm9vKGludCBhLCBpbnQgYikge30KKyAgIHZvaWQgZm94KGludCBhKSB7fQorCisgICAgeworICAgICAgICBuZXcgTXlGaXJzdFRlc3RDbGFzc0ZvbygpLmZvPGNhcmV0PgorICAgIH0KKworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsU29ydGluZy9QcmVmZXJMb2NhbHNUb1N0YXRpY3NJblNlY29uZENvbXBsZXRpb24uamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbFNvcnRpbmcvUHJlZmVyTG9jYWxzVG9TdGF0aWNzSW5TZWNvbmRDb21wbGV0aW9uLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDEyNjg4ZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbFNvcnRpbmcvUHJlZmVyTG9jYWxzVG9TdGF0aWNzSW5TZWNvbmRDb21wbGV0aW9uLmphdmEKQEAgLTAsMCArMSw3IEBACitjbGFzcyBVdGlsIHsKKyAgdm9pZCBmb294KCkgeworICAgIGludCBmb295OworICAgIGZvbzxjYXJldD4KKyAgfQorCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsU29ydGluZy9QcmVmZXJNb2RpZmllcnMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbFNvcnRpbmcvUHJlZmVyTW9kaWZpZXJzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzMzNDhjMgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbFNvcnRpbmcvUHJlZmVyTW9kaWZpZXJzLmphdmEKQEAgLTAsMCArMSw5IEBACitwdWJsaWMgY2xhc3MgVGVzdCB7CisKKyAgICBwPGNhcmV0PgorCisgIGNsYXNzIHBhYWEge30KKworICBzdGF0aWMgY2xhc3MgcGFhYiB7fQorCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsU29ydGluZy9QcmVmZXJNb3JlTWF0Y2hpbmcuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbFNvcnRpbmcvUHJlZmVyTW9yZU1hdGNoaW5nLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTlmYTU2ZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbFNvcnRpbmcvUHJlZmVyTW9yZU1hdGNoaW5nLmphdmEKQEAgLTAsMCArMSw5IEBACitjbGFzcyBGb29PQ1NvbWV0aGluZyB7fQorY2xhc3MgRm9vT2JqZWN0Q29sbGVjdG9yIHt9CisKK2NsYXNzIEZvbyB7CisgICAgeworICAgICAgICBGb29PQzxjYXJldD4KKyAgICB9CisKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWxTb3J0aW5nL1ByZWZlck5ld0V4cGVjdGVkSW5uZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbFNvcnRpbmcvUHJlZmVyTmV3RXhwZWN0ZWRJbm5lci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJkOWQwNDYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWxTb3J0aW5nL1ByZWZlck5ld0V4cGVjdGVkSW5uZXIuamF2YQpAQCAtMCwwICsxLDkgQEAKK2NsYXNzIEZvb29vIHsKKyAgaW50ZXJmYWNlIEJhciB7fQorfQorCitjbGFzcyBCYXIgeworICAgIHsKKyAgICAgICAgRm9vb28uQmFyIGMgPSBuZXcgRm9vbzxjYXJldD54CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsU29ydGluZy9QcmVmZXJPd25Jbm5lckNsYXNzZXMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbFNvcnRpbmcvUHJlZmVyT3duSW5uZXJDbGFzc2VzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmIwZjMxYwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbFNvcnRpbmcvUHJlZmVyT3duSW5uZXJDbGFzc2VzLmphdmEKQEAgLTAsMCArMSw5IEBACitjbGFzcyBGb28geworICAgIGZpbmFsIFl5PGNhcmV0PgorCisgICAgcHJpdmF0ZSBzdGF0aWMgY2xhc3MgWXl5WHh4IHsKKworICAgIH0KK30KKworY2xhc3MgWXl5Wnp6IHt9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsU29ydGluZy9QcmVmZXJSZXR1cm4uamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbFNvcnRpbmcvUHJlZmVyUmV0dXJuLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTY1YWJiMAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbFNvcnRpbmcvUHJlZmVyUmV0dXJuLmphdmEKQEAgLTAsMCArMSwxMCBAQAorcHVibGljIGNsYXNzIFRlc3QgeworCisgICAgdm9pZCByTWV0aG9kKCkge30KKworICAgIGludCBmb28oaW50IHJQYXJhbSkgeworICAgICAgICBPYmplY3QgckxvY2FsOworICAgICAgICByPGNhcmV0PgorICAgIH0KKworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbFNvcnRpbmcvUHJlZmVyU2FtZU5hbWVkTWV0aG9kcy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsU29ydGluZy9QcmVmZXJTYW1lTmFtZWRNZXRob2RzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDNkMTAwMwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbFNvcnRpbmcvUHJlZmVyU2FtZU5hbWVkTWV0aG9kcy5qYXZhCkBAIC0wLDAgKzEsMTUgQEAKK2NsYXNzIEdvbyB7CisgICAgaW50IGJvbygpIHt9CisgICAgaW50IGRvbygpIHt9CisgICAgaW50IGZvbygpIHt9Cit9CisKK2NsYXNzIEZvb29vIHsKKyAgICBHb28gZzsKKworICAgIGludCBmb28oKSB7CisgICAgICAgIHJldHVybiBnLjxjYXJldD4KKyAgICB9CisKK30KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsU29ydGluZy9QcmVmZXJTYW1lUGFja2FnZU92ZXJJbXBvcnRlZC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsU29ydGluZy9QcmVmZXJTYW1lUGFja2FnZU92ZXJJbXBvcnRlZC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc4Njk0ZmUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWxTb3J0aW5nL1ByZWZlclNhbWVQYWNrYWdlT3ZlckltcG9ydGVkLmphdmEKQEAgLTAsMCArMSw5IEBACitpbXBvcnQgYmFyLio7CisKK3B1YmxpYyBjbGFzcyBUZXN0IHsKKworICB7CisgICAgQmFyPGNhcmV0PgorICB9CisKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWxTb3J0aW5nL1ByZWZlclN1cGVyTWV0aG9kcy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsU29ydGluZy9QcmVmZXJTdXBlck1ldGhvZHMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMmQzMWVhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsU29ydGluZy9QcmVmZXJTdXBlck1ldGhvZHMuamF2YQpAQCAtMCwwICsxLDEwIEBACitjbGFzcyBGb28geworICAgIHZvaWQgYmFyKCkge30KKyAgICB2b2lkIGZvbygpIHt9Cit9CisKK2NsYXNzIEJhciBleHRlbmRzIEZvbyB7CisgICAgdm9pZCBmb28oKSB7CisgICAgICAgIHN1cGVyLjxjYXJldD4KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsU29ydGluZy9QcmVmZXJUb3BMZXZlbENsYXNzZXMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbFNvcnRpbmcvUHJlZmVyVG9wTGV2ZWxDbGFzc2VzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDc2NWQxMAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbFNvcnRpbmcvUHJlZmVyVG9wTGV2ZWxDbGFzc2VzLmphdmEKQEAgLTAsMCArMSwxMCBAQAorcHVibGljIGNsYXNzIFRlc3RDbGFzcyB7CisgICAgcHVibGljIFRlc3RDbGFzcyBjcmVhdGUoWHhZPGNhcmV0PikgeworICAgIH0KK30KKworY2xhc3MgWHh4WXl5IHt9CisKK2NsYXNzIEFhYSB7CisgICAgc3RhdGljIGNsYXNzIFh4ell5eXt9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsU29ydGluZy9QcmVzZWxlY3RMYXN0Q2hvc2VuLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWxTb3J0aW5nL1ByZXNlbGVjdExhc3RDaG9zZW4uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYmEwNTU4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsU29ydGluZy9QcmVzZWxlY3RMYXN0Q2hvc2VuLmphdmEKQEAgLTAsMCArMSw3IEBACitpbXBvcnQgamF2YS51dGlsLlNldDsKKworcHVibGljIGNsYXNzIEZvbyB7CisgIHZvaWQgZm9vKFNldDxTdHJpbmc+IHNldCkgeworICAgIHNldC5hZDxjYXJldD54CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWxTb3J0aW5nL1ByZXNlbGVjdE1vc3RSZWxldmFudEluVGhlTWlkZGxlQWxwaGEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbFNvcnRpbmcvUHJlc2VsZWN0TW9zdFJlbGV2YW50SW5UaGVNaWRkbGVBbHBoYS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM0ZGEyY2YKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWxTb3J0aW5nL1ByZXNlbGVjdE1vc3RSZWxldmFudEluVGhlTWlkZGxlQWxwaGEuamF2YQpAQCAtMCwwICsxLDE3IEBACitjbGFzcyBGb28geworICBpbnQgRUxYRU1FTlRfQSA9IDE7CisgIGludCBFTFhFTUVOVF9CID0gMTsKKyAgaW50IEVMWEVNRU5UX0MgPSAxOworICBpbnQgRUxYRU1FTlRfRCA9IDE7CisgIGludCBFTFhFTUVOVF9FID0gMTsKKyAgaW50IEVMWEVNRU5UX0YgPSAxOworICBpbnQgRUxYRU1FTlRfRyA9IDE7CisgIGludCBFTFhFTUVOVF9IID0gMTsKKyAgaW50IEVMWEVNRU5UX0kgPSAxOworCisKKyAgICB7CisgICAgICAgIEVseDxjYXJldD4KKyAgICB9CisKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWxTb3J0aW5nL1JlYWxseUFscGhhU29ydGluZy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsU29ydGluZy9SZWFsbHlBbHBoYVNvcnRpbmcuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZmNjMTFiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsU29ydGluZy9SZWFsbHlBbHBoYVNvcnRpbmcuamF2YQpAQCAtMCwwICsxLDggQEAKK2NsYXNzIEZvbyB7CisgIHZvaWQgem9vKCkge30KKworICB7CisgICAgbmV3IEZvbygpLjxjYXJldD4KKyAgfQorCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsU29ydGluZy9SZXR1cm5GLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWxTb3J0aW5nL1JldHVybkYuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNjVhMzYxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsU29ydGluZy9SZXR1cm5GLmphdmEKQEAgLTAsMCArMSw1IEBACitjbGFzcyBGb28geworICAgIGJvb2xlYW4gem9vKFN0cmluZyBzKSB7CisgICAgICByZXR1cm4gZjxjYXJldD54CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbFNvcnRpbmcvU2FtZVN0YXRzRm9yRGlmZmVyZW50UXVhbGlmaWVyc0pDb21wb25lbnQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbFNvcnRpbmcvU2FtZVN0YXRzRm9yRGlmZmVyZW50UXVhbGlmaWVyc0pDb21wb25lbnQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZjRkZmE3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsU29ydGluZy9TYW1lU3RhdHNGb3JEaWZmZXJlbnRRdWFsaWZpZXJzSkNvbXBvbmVudC5qYXZhCkBAIC0wLDAgKzEsOSBAQAoraW1wb3J0IGphdmF4LnN3aW5nLio7CisKK3B1YmxpYyBjbGFzcyBNeUZpcnN0VGVzdENsYXNzRm9vIHsKKworICB2b2lkIGZvbyhKQ29tcG9uZW50IGMpIHsKKyAgICBjLmdldENvbTxjYXJldD54CisgIH0KKworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsU29ydGluZy9TYW1lU3RhdHNGb3JEaWZmZXJlbnRRdWFsaWZpZXJzSkxhYmVsLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWxTb3J0aW5nL1NhbWVTdGF0c0ZvckRpZmZlcmVudFF1YWxpZmllcnNKTGFiZWwuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZWZkYmE1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsU29ydGluZy9TYW1lU3RhdHNGb3JEaWZmZXJlbnRRdWFsaWZpZXJzSkxhYmVsLmphdmEKQEAgLTAsMCArMSw5IEBACitpbXBvcnQgamF2YXguc3dpbmcuKjsKKworcHVibGljIGNsYXNzIE15Rmlyc3RUZXN0Q2xhc3NGb28geworCisgIHZvaWQgZm9vKEpMYWJlbCBsKSB7CisgICAgbC5nZXRDb21wbzxjYXJldD54CisgIH0KKworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsU29ydGluZy9TaG9ydGVyUHJlZml4ZXNHb0ZpcnN0Lmh0bWwgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWxTb3J0aW5nL1Nob3J0ZXJQcmVmaXhlc0dvRmlyc3QuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZTYyNTRkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsU29ydGluZy9TaG9ydGVyUHJlZml4ZXNHb0ZpcnN0Lmh0bWwKQEAgLTAsMCArMSBAQAorPHA8Y2FyZXQ+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsU29ydGluZy9TaG9ydGVyU2hvdWxkQmVQcmVzZWxlY3RlZC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsU29ydGluZy9TaG9ydGVyU2hvdWxkQmVQcmVzZWxlY3RlZC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE4YzdiNGEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWxTb3J0aW5nL1Nob3J0ZXJTaG91bGRCZVByZXNlbGVjdGVkLmphdmEKQEAgLTAsMCArMSwxMSBAQAorY2xhc3MgRm9vIHsKKyAgICBTdHJpbmcgZm9vTG9uZ0J1dE9mRGVmYXVsdFR5cGUoKSB7fQorICAgIEZvbyBmb28oKSB7fQorfQorCitjbGFzcyBCYXIgeworICAgIHZvaWQgZm9vKCkgeworICAgICAgICBGb28gZjsKKyAgICAgICAgaWYgKCJhYmMiLmVxdWFscyhmLmZvbzxjYXJldD4pKQorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWxTb3J0aW5nL1NraXBMaWZ0ZWQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbFNvcnRpbmcvU2tpcExpZnRlZC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ3NjNiMDIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWxTb3J0aW5nL1NraXBMaWZ0ZWQuamF2YQpAQCAtMCwwICsxLDggQEAKK2NsYXNzIEZvbyB7CisgIHsKKyAgICBoYXNoQ288Y2FyZXQ+eAorICB9CisKKyAgaW50IGhhc2hDb2RlTWluZSgpIHt9CisKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWxTb3J0aW5nL1NvcnRTYW1lTmFtZWRWYXJpYW50c0J5UHJveGltaXR5LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWxTb3J0aW5nL1NvcnRTYW1lTmFtZWRWYXJpYW50c0J5UHJveGltaXR5LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGM0OWE3OQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbFNvcnRpbmcvU29ydFNhbWVOYW1lZFZhcmlhbnRzQnlQcm94aW1pdHkuamF2YQpAQCAtMCwwICsxLDkgQEAKK2ltcG9ydCBzdW4uc3dpbmcuQmFrZWRBcnJheUxpc3Q7CisKK2NsYXNzIEZvbyB7CisgICAgeworICAgICAgICBPYmplY3QgZWxlbWVudDsKKyAgICAgICAgaWYgKGVsZW1lbnQgaW5zdGFuY2VvZiBCYXI8Y2FyZXQ+KQorICAgIH0KKworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbFNvcnRpbmcvU3RhdGlzdGljc0J5UHJlZml4LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWxTb3J0aW5nL1N0YXRpc3RpY3NCeVByZWZpeC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNlOTZjMDQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWxTb3J0aW5nL1N0YXRpc3RpY3NCeVByZWZpeC5qYXZhCkBAIC0wLDAgKzEsNiBAQAorY2xhc3MgRm9vQmFyIHsKKyAgaW50IF9mb28xLCBfZm9vMiwgX2JvbzEsIF9ib28yLCBfZ29vMSwgX2dvbzI7CisgIHsKKyAgICA8Y2FyZXQ+CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWxTb3J0aW5nL1N0YXRpc3RpY3NNYXR0ZXJzT25OZXh0Q29tcGxldGlvbi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsU29ydGluZy9TdGF0aXN0aWNzTWF0dGVyc09uTmV4dENvbXBsZXRpb24uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iOTkyZTE0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsU29ydGluZy9TdGF0aXN0aWNzTWF0dGVyc09uTmV4dENvbXBsZXRpb24uamF2YQpAQCAtMCwwICsxLDggQEAKK2NsYXNzIEpDb21wb25lbnQge30KK2NsYXNzIEpDb21ib0JveCB7fQorCitjbGFzcyBGb29CYXIgeworICB2b2lkIGZvbygpIHsKKyAgICBKQ29tPGNhcmV0PgorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsU29ydGluZy9TdGF0c0ZvckNsYXNzTmFtZUluRXhwcmVzc2lvbi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsU29ydGluZy9TdGF0c0ZvckNsYXNzTmFtZUluRXhwcmVzc2lvbi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRjNTY0NmYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWxTb3J0aW5nL1N0YXRzRm9yQ2xhc3NOYW1lSW5FeHByZXNzaW9uLmphdmEKQEAgLTAsMCArMSw3IEBACitwdWJsaWMgY2xhc3MgTXlGaXJzdFRlc3RDbGFzc0ZvbyB7CisKKyAgaW50IGZvbygpIHsKKyAgICByZXR1cm4gRm9vQjxjYXJldD4uZmZmKCkuem9vKCk7CisgIH0KKworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsU29ydGluZy9TdGF0c01vcmVJbXBvcnRhbnRUaGFuRXhwZWN0ZWRUeXBlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWxTb3J0aW5nL1N0YXRzTW9yZUltcG9ydGFudFRoYW5FeHBlY3RlZFR5cGUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZjExNjJjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsU29ydGluZy9TdGF0c01vcmVJbXBvcnRhbnRUaGFuRXhwZWN0ZWRUeXBlLmphdmEKQEAgLTAsMCArMSwyMiBAQAorcHVibGljIGNsYXNzIEFub3RoZXJUZXN0Q2xhc3MgeworICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB0aHJvd3MgSU9FeGNlcHRpb24geworICAgIHRlc3QoZ2V0bnU8Y2FyZXQ+KTsKKyAgfQorCisgIHByaXZhdGUgc3RhdGljIHZvaWQgdGVzdChpbnQgaSwgaW50IGopIHsKKyAgfQorCisgIHB1YmxpYyBzdGF0aWMgTnVtYmVyUHJvdmlkZXIgZ2V0TnVtUHJvdmlkZXIoKSB7CisgICAgcmV0dXJuIG5ldyBOdW1iZXJQcm92aWRlcigpOworICB9CisKKyAgcHVibGljIHN0YXRpYyBpbnQgZ2V0TnVtYmVyKCkgeworICAgIHJldHVybiAxOworICB9CisKKyAgcHJpdmF0ZSBzdGF0aWMgY2xhc3MgTnVtYmVyUHJvdmlkZXIgeworICAgIHB1YmxpYyBpbnQgZ2V0TnVtYmVyKCkgeworICAgICAgcmV0dXJuIDE7CisgICAgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsU29ydGluZy9TdWJzdHJpbmdWc1N1YlNlcXVlbmNlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWxTb3J0aW5nL1N1YnN0cmluZ1ZzU3ViU2VxdWVuY2UuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZTU2M2VkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsU29ydGluZy9TdWJzdHJpbmdWc1N1YlNlcXVlbmNlLmphdmEKQEAgLTAsMCArMSw2IEBACitjbGFzcyBGb28geworICAgIHZvaWQgZm9vKFN0cmluZyBzKSB7fQorICAgIHsKKyAgICAgICAgZm9vKCJhYWEiLnN1YjxjYXJldD4pCisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbFNvcnRpbmcvVW5kZXJzY29yZXNEb250TWFrZU1hdGNoTWlkZGxlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWxTb3J0aW5nL1VuZGVyc2NvcmVzRG9udE1ha2VNYXRjaE1pZGRsZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc4NjdlMzQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9ub3JtYWxTb3J0aW5nL1VuZGVyc2NvcmVzRG9udE1ha2VNYXRjaE1pZGRsZS5qYXZhCkBAIC0wLDAgKzEsNSBAQAorY2xhc3MgRm9vQmFyIHsKKyAgdm9pZCBmb28oRm9vQmFyIF9mb29CYXIpIHsKKyAgICBmYjxjYXJldD4KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbFNvcnRpbmcvVXBwZXJjYXNlTWF0dGVyczIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL25vcm1hbFNvcnRpbmcvVXBwZXJjYXNlTWF0dGVyczIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMDlmNzZiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vbm9ybWFsU29ydGluZy9VcHBlcmNhc2VNYXR0ZXJzMi5qYXZhCkBAIC0wLDAgKzEsOSBAQAorY2xhc3MgRm9vIHsKKyAgeworICAgIE9iamVjdCBjbGFzc0xPU29tZXRoaW5nOworICAgIE9iamVjdCBjbGFzc0xvYWRlcjsKKyAgICBPYmplY3QgY2xhc3NMb2FkZXIyOworICAgIGNMbzxjYXJldD4KKyAgfQorCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vcmVmbGVjdGlvbi9EZWNsYXJlZEZpZWxkLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9yZWZsZWN0aW9uL0RlY2xhcmVkRmllbGQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ODExMWE0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vcmVmbGVjdGlvbi9EZWNsYXJlZEZpZWxkLmphdmEKQEAgLTAsMCArMSwyNiBAQAorLyoKKyAqIENvcHlyaWdodCAyMDAwLTIwMTIgSmV0QnJhaW5zIHMuci5vLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK2NsYXNzIERlY2xhcmVkRmllbGQgeworICB2b2lkIGZvbygpIHsKKyAgICBUZXN0LmNsYXNzLmdldERlY2xhcmVkRmllbGQoIjxjYXJldD4iKTsKKyAgfQorfQorCitjbGFzcyBUZXN0IHsKKyAgcHVibGljIGludCBudW07CisgIHB1YmxpYyBpbnQgbnVtMjsKKyAgaW50IG51bTM7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vcmVmbGVjdGlvbi9EZWNsYXJlZEZpZWxkX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9yZWZsZWN0aW9uL0RlY2xhcmVkRmllbGRfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MjRjOGYwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vcmVmbGVjdGlvbi9EZWNsYXJlZEZpZWxkX2FmdGVyLmphdmEKQEAgLTAsMCArMSwyNiBAQAorLyoKKyAqIENvcHlyaWdodCAyMDAwLTIwMTIgSmV0QnJhaW5zIHMuci5vLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK2NsYXNzIERlY2xhcmVkRmllbGQgeworICB2b2lkIGZvbygpIHsKKyAgICBUZXN0LmNsYXNzLmdldERlY2xhcmVkRmllbGQoIm51bTIiKTsKKyAgfQorfQorCitjbGFzcyBUZXN0IHsKKyAgcHVibGljIGludCBudW07CisgIHB1YmxpYyBpbnQgbnVtMjsKKyAgaW50IG51bTM7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vcmVmbGVjdGlvbi9EZWNsYXJlZE1ldGhvZC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vcmVmbGVjdGlvbi9EZWNsYXJlZE1ldGhvZC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVhYmM0YzQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9yZWZsZWN0aW9uL0RlY2xhcmVkTWV0aG9kLmphdmEKQEAgLTAsMCArMSwzMCBAQAorLyoKKyAqIENvcHlyaWdodCAyMDAwLTIwMTIgSmV0QnJhaW5zIHMuci5vLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK2NsYXNzIERlY2FscmVkTWV0aG9kIHsKKyAgdm9pZCBmb28oKSB7CisgICAgVGVzdC5jbGFzcy5nZXREZWNsYXJlZE1ldGhvZCgiPGNhcmV0PiIpOworICB9Cit9CisKK2NsYXNzIFRlc3QgeworICBwdWJsaWMgdm9pZCBtZXRob2QoKXt9CisgIHB1YmxpYyB2b2lkIG1ldGhvZDIoQSBhLCBCIGIpe30KKyAgcHVibGljIHZvaWQgbWV0aG9kMygpe30KK30KKworY2xhc3MgQSB7fQorY2xhc3MgQiB7fQorY2xhc3MgQyB7fQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3JlZmxlY3Rpb24vRGVjbGFyZWRNZXRob2QyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9yZWZsZWN0aW9uL0RlY2xhcmVkTWV0aG9kMi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdjNjNmOWIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9yZWZsZWN0aW9uL0RlY2xhcmVkTWV0aG9kMi5qYXZhCkBAIC0wLDAgKzEsMzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwMC0yMDEyIEpldEJyYWlucyBzLnIuby4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitjbGFzcyBEZWNhbHJlZE1ldGhvZDIgeworICB2b2lkIGZvbygpIHsKKyAgICBUZXN0LmNsYXNzLmdldERlY2xhcmVkTWV0aG9kKCJtPGNhcmV0PiIsIEEuY2xhc3MsIEIuY2xhc3MpOworICB9Cit9CisKK2NsYXNzIFRlc3QgeworICB2b2lkIG1ldGhvZCgpe30KKyAgdm9pZCBtZXRob2QyKEEgYSwgQiBiKXt9CisgIHZvaWQgbWV0aG9kMygpe30KK30KKworY2xhc3MgQSB7fQorY2xhc3MgQiB7fQorY2xhc3MgQyB7fQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3JlZmxlY3Rpb24vRGVjbGFyZWRNZXRob2QyX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9yZWZsZWN0aW9uL0RlY2xhcmVkTWV0aG9kMl9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY5ZDU2YTAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9yZWZsZWN0aW9uL0RlY2xhcmVkTWV0aG9kMl9hZnRlci5qYXZhCkBAIC0wLDAgKzEsMzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwMC0yMDEyIEpldEJyYWlucyBzLnIuby4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitjbGFzcyBEZWNhbHJlZE1ldGhvZDIgeworICB2b2lkIGZvbygpIHsKKyAgICBUZXN0LmNsYXNzLmdldERlY2xhcmVkTWV0aG9kKCJtZXRob2QzIik7CisgIH0KK30KKworY2xhc3MgVGVzdCB7CisgIHZvaWQgbWV0aG9kKCl7fQorICB2b2lkIG1ldGhvZDIoQSBhLCBCIGIpe30KKyAgdm9pZCBtZXRob2QzKCl7fQorfQorCitjbGFzcyBBIHt9CitjbGFzcyBCIHt9CitjbGFzcyBDIHt9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vcmVmbGVjdGlvbi9EZWNsYXJlZE1ldGhvZF9hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vcmVmbGVjdGlvbi9EZWNsYXJlZE1ldGhvZF9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM2YzBkNWIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9yZWZsZWN0aW9uL0RlY2xhcmVkTWV0aG9kX2FmdGVyLmphdmEKQEAgLTAsMCArMSwzMCBAQAorLyoKKyAqIENvcHlyaWdodCAyMDAwLTIwMTIgSmV0QnJhaW5zIHMuci5vLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK2NsYXNzIERlY2FscmVkTWV0aG9kIHsKKyAgdm9pZCBmb28oKSB7CisgICAgVGVzdC5jbGFzcy5nZXREZWNsYXJlZE1ldGhvZCgibWV0aG9kMiIsIEEuY2xhc3MsIEIuY2xhc3MpOworICB9Cit9CisKK2NsYXNzIFRlc3QgeworICBwdWJsaWMgdm9pZCBtZXRob2QoKXt9CisgIHB1YmxpYyB2b2lkIG1ldGhvZDIoQSBhLCBCIGIpe30KKyAgcHVibGljIHZvaWQgbWV0aG9kMygpe30KK30KKworY2xhc3MgQSB7fQorY2xhc3MgQiB7fQorY2xhc3MgQyB7fQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3JlZmxlY3Rpb24vRmllbGQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3JlZmxlY3Rpb24vRmllbGQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZDM5NDA4ZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3JlZmxlY3Rpb24vRmllbGQuamF2YQpAQCAtMCwwICsxLDI2IEBACisvKgorICogQ29weXJpZ2h0IDIwMDAtMjAxMiBKZXRCcmFpbnMgcy5yLm8uCisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworY2xhc3MgRmllbGQgeworICB2b2lkIGZvbygpIHsKKyAgICBUZXN0LmNsYXNzLmdldEZpZWxkKCI8Y2FyZXQ+Iik7CisgIH0KK30KKworY2xhc3MgVGVzdCB7CisgIHB1YmxpYyBpbnQgbnVtOworICBwdWJsaWMgaW50IG51bTI7CisgIGludCBudW0zOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3JlZmxlY3Rpb24vRmllbGRfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3JlZmxlY3Rpb24vRmllbGRfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNTI2NDVkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vcmVmbGVjdGlvbi9GaWVsZF9hZnRlci5qYXZhCkBAIC0wLDAgKzEsMjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwMC0yMDEyIEpldEJyYWlucyBzLnIuby4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitjbGFzcyBGaWVsZCB7CisgIHZvaWQgZm9vKCkgeworICAgIFRlc3QuY2xhc3MuZ2V0RmllbGQoIm51bTIiKTsKKyAgfQorfQorCitjbGFzcyBUZXN0IHsKKyAgcHVibGljIGludCBudW07CisgIHB1YmxpYyBpbnQgbnVtMjsKKyAgaW50IG51bTM7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vcmVmbGVjdGlvbi9Gb3JOYW1lRGVjbGFyZWRGaWVsZC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vcmVmbGVjdGlvbi9Gb3JOYW1lRGVjbGFyZWRGaWVsZC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI4MTExYWIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9yZWZsZWN0aW9uL0Zvck5hbWVEZWNsYXJlZEZpZWxkLmphdmEKQEAgLTAsMCArMSwyNiBAQAorLyoKKyAqIENvcHlyaWdodCAyMDAwLTIwMTIgSmV0QnJhaW5zIHMuci5vLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK2NsYXNzIEZvck5hbWVEZWNsYXJlZEZpZWxkIHsKKyAgdm9pZCBmb28oKSB7CisgICAgQ2xhc3MuZm9yTmFtZSgiVGVzdCIpLmdldERlY2xhcmVkRmllbGQoIjxjYXJldD4iKTsKKyAgfQorfQorCitjbGFzcyBUZXN0IHsKKyAgcHVibGljIGludCBudW07CisgIHB1YmxpYyBpbnQgbnVtMjsKKyAgaW50IG51bTM7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vcmVmbGVjdGlvbi9Gb3JOYW1lRGVjbGFyZWRGaWVsZF9hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vcmVmbGVjdGlvbi9Gb3JOYW1lRGVjbGFyZWRGaWVsZF9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI2MjI0YzFmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vcmVmbGVjdGlvbi9Gb3JOYW1lRGVjbGFyZWRGaWVsZF9hZnRlci5qYXZhCkBAIC0wLDAgKzEsMjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwMC0yMDEyIEpldEJyYWlucyBzLnIuby4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitjbGFzcyBGb3JOYW1lRGVjbGFyZWRGaWVsZCB7CisgIHZvaWQgZm9vKCkgeworICAgIENsYXNzLmZvck5hbWUoIlRlc3QiKS5nZXREZWNsYXJlZEZpZWxkKCJudW0zIik7CisgIH0KK30KKworY2xhc3MgVGVzdCB7CisgIHB1YmxpYyBpbnQgbnVtOworICBwdWJsaWMgaW50IG51bTI7CisgIGludCBudW0zOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3JlZmxlY3Rpb24vRm9yTmFtZURlY2xhcmVkTWV0aG9kLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9yZWZsZWN0aW9uL0Zvck5hbWVEZWNsYXJlZE1ldGhvZC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlmMmQyYWUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9yZWZsZWN0aW9uL0Zvck5hbWVEZWNsYXJlZE1ldGhvZC5qYXZhCkBAIC0wLDAgKzEsMzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwMC0yMDEyIEpldEJyYWlucyBzLnIuby4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitjbGFzcyBGb3JOYW1lRGVjbGFyZWRNZXRob2QgeworICB2b2lkIGZvbygpIHsKKyAgICBDbGFzcy5mb3JOYW1lKCJUZXN0IikuZ2V0RGVjbGFyZWRNZXRob2QoIjxjYXJldD4iKTsKKyAgfQorfQorCitjbGFzcyBUZXN0IHsKKyAgcHVibGljIHZvaWQgbWV0aG9kKCl7fQorICBwdWJsaWMgdm9pZCBtZXRob2QyKEEgYSwgQiBiKXt9CisgIHZvaWQgbWV0aG9kMygpe30KK30KKworY2xhc3MgQSB7fQorY2xhc3MgQiB7fQorY2xhc3MgQyB7fQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3JlZmxlY3Rpb24vRm9yTmFtZURlY2xhcmVkTWV0aG9kX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9yZWZsZWN0aW9uL0Zvck5hbWVEZWNsYXJlZE1ldGhvZF9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZmMTY1Y2ZjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vcmVmbGVjdGlvbi9Gb3JOYW1lRGVjbGFyZWRNZXRob2RfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDMwIEBACisvKgorICogQ29weXJpZ2h0IDIwMDAtMjAxMiBKZXRCcmFpbnMgcy5yLm8uCisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworY2xhc3MgRm9yTmFtZURlY2xhcmVkTWV0aG9kIHsKKyAgdm9pZCBmb28oKSB7CisgICAgQ2xhc3MuZm9yTmFtZSgiVGVzdCIpLmdldERlY2xhcmVkTWV0aG9kKCJtZXRob2QyIiwgQS5jbGFzcywgQi5jbGFzcyk7CisgIH0KK30KKworY2xhc3MgVGVzdCB7CisgIHB1YmxpYyB2b2lkIG1ldGhvZCgpe30KKyAgcHVibGljIHZvaWQgbWV0aG9kMihBIGEsIEIgYil7fQorICB2b2lkIG1ldGhvZDMoKXt9Cit9CisKK2NsYXNzIEEge30KK2NsYXNzIEIge30KK2NsYXNzIEMge30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9yZWZsZWN0aW9uL0Zvck5hbWVGaWVsZC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vcmVmbGVjdGlvbi9Gb3JOYW1lRmllbGQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hY2U2ZTQ4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vcmVmbGVjdGlvbi9Gb3JOYW1lRmllbGQuamF2YQpAQCAtMCwwICsxLDI2IEBACisvKgorICogQ29weXJpZ2h0IDIwMDAtMjAxMiBKZXRCcmFpbnMgcy5yLm8uCisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworY2xhc3MgRm9yTmFtZUZpZWxkIHsKKyAgdm9pZCBmb28oKSB7CisgICAgQ2xhc3MuZm9yTmFtZSgiVGVzdCIpLmdldEZpZWxkKCI8Y2FyZXQ+Iik7CisgIH0KK30KKworY2xhc3MgVGVzdCB7CisgIHB1YmxpYyBpbnQgbnVtOworICBwdWJsaWMgaW50IG51bTI7CisgIGludCBudW0zOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3JlZmxlY3Rpb24vRm9yTmFtZUZpZWxkX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9yZWZsZWN0aW9uL0Zvck5hbWVGaWVsZF9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM4YzZkNWUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9yZWZsZWN0aW9uL0Zvck5hbWVGaWVsZF9hZnRlci5qYXZhCkBAIC0wLDAgKzEsMjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwMC0yMDEyIEpldEJyYWlucyBzLnIuby4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitjbGFzcyBGb3JOYW1lRmllbGQgeworICB2b2lkIGZvbygpIHsKKyAgICBDbGFzcy5mb3JOYW1lKCJUZXN0IikuZ2V0RmllbGQoIm51bTIiKTsKKyAgfQorfQorCitjbGFzcyBUZXN0IHsKKyAgcHVibGljIGludCBudW07CisgIHB1YmxpYyBpbnQgbnVtMjsKKyAgaW50IG51bTM7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vcmVmbGVjdGlvbi9Gb3JOYW1lTWV0aG9kLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9yZWZsZWN0aW9uL0Zvck5hbWVNZXRob2QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45Nzg5MDczCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vcmVmbGVjdGlvbi9Gb3JOYW1lTWV0aG9kLmphdmEKQEAgLTAsMCArMSwzMCBAQAorLyoKKyAqIENvcHlyaWdodCAyMDAwLTIwMTIgSmV0QnJhaW5zIHMuci5vLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK2NsYXNzIEZvck5hbWVNZXRob2QgeworICB2b2lkIGZvbygpIHsKKyAgICBDbGFzcy5mb3JOYW1lKCJUZXN0IikuZ2V0TWV0aG9kKCI8Y2FyZXQ+Iik7CisgIH0KK30KKworY2xhc3MgVGVzdCB7CisgIHB1YmxpYyB2b2lkIG1ldGhvZCgpe30KKyAgcHVibGljIHZvaWQgbWV0aG9kMihBIGEsIEIgYil7fQorICB2b2lkIG1ldGhvZDMoKXt9Cit9CisKK2NsYXNzIEEge30KK2NsYXNzIEIge30KK2NsYXNzIEMge30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9yZWZsZWN0aW9uL0Zvck5hbWVNZXRob2RfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3JlZmxlY3Rpb24vRm9yTmFtZU1ldGhvZF9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhhMTQxMmUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9yZWZsZWN0aW9uL0Zvck5hbWVNZXRob2RfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDMwIEBACisvKgorICogQ29weXJpZ2h0IDIwMDAtMjAxMiBKZXRCcmFpbnMgcy5yLm8uCisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworY2xhc3MgRm9yTmFtZU1ldGhvZCB7CisgIHZvaWQgZm9vKCkgeworICAgIENsYXNzLmZvck5hbWUoIlRlc3QiKS5nZXRNZXRob2QoIm1ldGhvZDIiLCBBLmNsYXNzLCBCLmNsYXNzKTsKKyAgfQorfQorCitjbGFzcyBUZXN0IHsKKyAgcHVibGljIHZvaWQgbWV0aG9kKCl7fQorICBwdWJsaWMgdm9pZCBtZXRob2QyKEEgYSwgQiBiKXt9CisgIHZvaWQgbWV0aG9kMygpe30KK30KKworY2xhc3MgQSB7fQorY2xhc3MgQiB7fQorY2xhc3MgQyB7fQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3JlZmxlY3Rpb24vR2VuZXJpY3MuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3JlZmxlY3Rpb24vR2VuZXJpY3MuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MDVjNzQyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vcmVmbGVjdGlvbi9HZW5lcmljcy5qYXZhCkBAIC0wLDAgKzEsMjUgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwMC0yMDEyIEpldEJyYWlucyBzLnIuby4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitjbGFzcyBHZW5lcmljcyB7CisgIHZvaWQgZm9vKCkgeworICAgIFRlc3QuY2xhc3MuZ2V0TWV0aG9kKCI8Y2FyZXQ+Iik7CisgIH0KK30KKworY2xhc3MgVGVzdCB7CisgIHB1YmxpYyB2b2lkIGZvbyhBPD8gZXh0ZW5kcyBUZXN0PiBuYW1lKSB7fQorfQorY2xhc3MgQTxLPiB7fQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vcmVmbGVjdGlvbi9HZW5lcmljc19hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vcmVmbGVjdGlvbi9HZW5lcmljc19hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFmZGMxZWEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9yZWZsZWN0aW9uL0dlbmVyaWNzX2FmdGVyLmphdmEKQEAgLTAsMCArMSwyNSBAQAorLyoKKyAqIENvcHlyaWdodCAyMDAwLTIwMTIgSmV0QnJhaW5zIHMuci5vLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK2NsYXNzIEdlbmVyaWNzIHsKKyAgdm9pZCBmb28oKSB7CisgICAgVGVzdC5jbGFzcy5nZXRNZXRob2QoImZvbyIsIEEuY2xhc3MpOworICB9Cit9CisKK2NsYXNzIFRlc3QgeworICBwdWJsaWMgdm9pZCBmb28oQTw/IGV4dGVuZHMgVGVzdD4gbmFtZSkge30KK30KK2NsYXNzIEE8Sz4ge30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3JlZmxlY3Rpb24vTWV0aG9kLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9yZWZsZWN0aW9uL01ldGhvZC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ2ZTBiOTYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9yZWZsZWN0aW9uL01ldGhvZC5qYXZhCkBAIC0wLDAgKzEsMzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwMC0yMDEyIEpldEJyYWlucyBzLnIuby4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitjbGFzcyBEZWNhbHJlZE1ldGhvZCB7CisgIHZvaWQgZm9vKCkgeworICAgIFRlc3QuY2xhc3MuZ2V0TWV0aG9kKCI8Y2FyZXQ+Iik7CisgIH0KK30KKworY2xhc3MgVGVzdCB7CisgIHB1YmxpYyB2b2lkIG1ldGhvZCgpe30KKyAgcHVibGljIHZvaWQgbWV0aG9kMihBIGEsIEIgYil7fQorICB2b2lkIG1ldGhvZDMoKXt9Cit9CisKK2NsYXNzIEEge30KK2NsYXNzIEIge30KK2NsYXNzIEMge30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9yZWZsZWN0aW9uL01ldGhvZF9hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vcmVmbGVjdGlvbi9NZXRob2RfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ODZjNmUyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vcmVmbGVjdGlvbi9NZXRob2RfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDMwIEBACisvKgorICogQ29weXJpZ2h0IDIwMDAtMjAxMiBKZXRCcmFpbnMgcy5yLm8uCisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworY2xhc3MgRGVjYWxyZWRNZXRob2QgeworICB2b2lkIGZvbygpIHsKKyAgICBUZXN0LmNsYXNzLmdldE1ldGhvZCgibWV0aG9kMiIsIEEuY2xhc3MsIEIuY2xhc3MpOworICB9Cit9CisKK2NsYXNzIFRlc3QgeworICBwdWJsaWMgdm9pZCBtZXRob2QoKXt9CisgIHB1YmxpYyB2b2lkIG1ldGhvZDIoQSBhLCBCIGIpe30KKyAgdm9pZCBtZXRob2QzKCl7fQorfQorCitjbGFzcyBBIHt9CitjbGFzcyBCIHt9CitjbGFzcyBDIHt9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0Fic3RyYWN0Q2xhc3NUd2ljZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0Fic3RyYWN0Q2xhc3NUd2ljZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQyNzAxN2E4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0Fic3RyYWN0Q2xhc3NUd2ljZS5qYXZhCkBAIC0wLDAgKzEsMyBAQAorYWJzdHJhY3QgY2xhc3MgRm9vIHsKKyAgRm9vIGYgPSBuZXcgPGNhcmV0PgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9BZnRlck5ld0luVGVybmFyeS1vdXQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9BZnRlck5ld0luVGVybmFyeS1vdXQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMThlODQ2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0FmdGVyTmV3SW5UZXJuYXJ5LW91dC5qYXZhCkBAIC0wLDAgKzEsNSBAQAorY2xhc3MgVXNlciB7CisgICAgeworICAgICAgICBTdHJpbmcgcyA9IG5ldyBTdHJpbmcoPGNhcmV0PikgPT0gbnVsbCA/IGdldERlZmF1bHRFamJOYW1lKCkgOiBzOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvQWZ0ZXJOZXdJblRlcm5hcnkuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9BZnRlck5ld0luVGVybmFyeS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhkMGMwMjQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvQWZ0ZXJOZXdJblRlcm5hcnkuamF2YQpAQCAtMCwwICsxLDUgQEAKK2NsYXNzIFVzZXIgeworICAgIHsKKyAgICAgICAgU3RyaW5nIHMgPSBuZXcgPGNhcmV0PiA9PSBudWxsID8gZ2V0RGVmYXVsdEVqYk5hbWUoKSA6IHM7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9BZnRlck5ld1dpdGhHZW5lcmljcy1vdXQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9BZnRlck5ld1dpdGhHZW5lcmljcy1vdXQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wOTg0ZTZhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0FmdGVyTmV3V2l0aEdlbmVyaWNzLW91dC5qYXZhCkBAIC0wLDAgKzEsMTUgQEAKK2NsYXNzIFBhaXI8QSwgQj4geworICBwdWJsaWMgZmluYWwgQSBmaXJzdDsKKyAgcHVibGljIGZpbmFsIEIgc2Vjb25kOworCisgIFBhaXIoQSBmaXJzdCwgQiBzZWNvbmQpIHsKKyAgICB0aGlzLmZpcnN0ID0gZmlyc3Q7CisgICAgdGhpcy5zZWNvbmQgPSBzZWNvbmQ7CisgIH0KK30KKworY2xhc3MgVGVzdCB7CisgICAgdm9pZCB0ZXN0KFBhaXI8U3RyaW5nLCBJbnRlZ2VyPiBwKSB7CisgICAgICAgIFBhaXI8U3RyaW5nLCBJbnRlZ2VyPiBwMiA9IG5ldyBQYWlyPFN0cmluZywgSW50ZWdlcj4ocC5maXJzdCwgPGNhcmV0Pik7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9BZnRlck5ld1dpdGhHZW5lcmljcy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0FmdGVyTmV3V2l0aEdlbmVyaWNzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWI0NmY5ZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9BZnRlck5ld1dpdGhHZW5lcmljcy5qYXZhCkBAIC0wLDAgKzEsMTUgQEAKK2NsYXNzIFBhaXI8QSwgQj4geworICBwdWJsaWMgZmluYWwgQSBmaXJzdDsKKyAgcHVibGljIGZpbmFsIEIgc2Vjb25kOworCisgIFBhaXIoQSBmaXJzdCwgQiBzZWNvbmQpIHsKKyAgICB0aGlzLmZpcnN0ID0gZmlyc3Q7CisgICAgdGhpcy5zZWNvbmQgPSBzZWNvbmQ7CisgIH0KK30KKworY2xhc3MgVGVzdCB7CisgICAgdm9pZCB0ZXN0KFBhaXI8U3RyaW5nLCBJbnRlZ2VyPiBwKSB7CisgICAgICAgIFBhaXI8U3RyaW5nLCBJbnRlZ2VyPiBwMiA9IG5ldyBQYWlyPFN0cmluZywgSW50ZWdlcj4ocC5mPGNhcmV0Pik7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9BZnRlclF1YWxpZmllZE5ldy1vdXQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9BZnRlclF1YWxpZmllZE5ldy1vdXQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hY2FhY2RmNAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9BZnRlclF1YWxpZmllZE5ldy1vdXQuamF2YQpAQCAtMCwwICsxLDUgQEAKK2NsYXNzIEEge3sKKyAgQWEgYSA9IG5ldyBBYSgpOworCisgIEFhLkIgYiA9IGEubmV3IEIoKTs8Y2FyZXQ+Cit9fQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9BZnRlclF1YWxpZmllZE5ldy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0FmdGVyUXVhbGlmaWVkTmV3LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjY3ZjBhMwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9BZnRlclF1YWxpZmllZE5ldy5qYXZhCkBAIC0wLDAgKzEsNSBAQAorY2xhc3MgQSB7eworICBBYSBhID0gbmV3IEFhKCk7CisKKyAgQWEuQiBiID0gYS5uZXcgPGNhcmV0PgorfX0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvQW1iaWd1b3VzQ29uc3RhbnQtb3V0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvQW1iaWd1b3VzQ29uc3RhbnQtb3V0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2IxOTlkNwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9BbWJpZ3VvdXNDb25zdGFudC1vdXQuamF2YQpAQCAtMCwwICsxLDE1IEBACitpbnRlcmZhY2UgRm9vIHsKKyAgaW50IEFCQyA9IDE7Cit9CisKK2ludGVyZmFjZSBCYXIgZXh0ZW5kcyBGb28geworICBib29sZWFuIEFCQyA9IDI7Cit9CisKK2NsYXNzIEZvb0ltcGwgaW1wbGVtZW50cyBGb28ge30KKworY2xhc3MgQmFySW1wbCBleHRlbmRzIEZvb0ltcGwgaW1wbGVtZW50cyBCYXIgeworICB7CisgICAgYm9vbGVhbiBhID0gQmFyLkFCQzs8Y2FyZXQ+CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvQW1iaWd1b3VzQ29uc3RhbnQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9BbWJpZ3VvdXNDb25zdGFudC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhiZGRhYWEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvQW1iaWd1b3VzQ29uc3RhbnQuamF2YQpAQCAtMCwwICsxLDE1IEBACitpbnRlcmZhY2UgRm9vIHsKKyAgaW50IEFCQyA9IDE7Cit9CisKK2ludGVyZmFjZSBCYXIgZXh0ZW5kcyBGb28geworICBib29sZWFuIEFCQyA9IDI7Cit9CisKK2NsYXNzIEZvb0ltcGwgaW1wbGVtZW50cyBGb28ge30KKworY2xhc3MgQmFySW1wbCBleHRlbmRzIEZvb0ltcGwgaW1wbGVtZW50cyBCYXIgeworICB7CisgICAgYm9vbGVhbiBhID0gQTxjYXJldD47CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvQW5ub3RhdGlvbi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0Fubm90YXRpb24uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYjk4NmM3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0Fubm90YXRpb24uamF2YQpAQCAtMCwwICsxLDUgQEAKK2ltcG9ydCBqYXZhLmxhbmcuYW5ub3RhdGlvbi5UYXJnZXQ7CitAVGFyZ2V0KHZhbHVlPXs8Y2FyZXQ+fSkKK0BpbnRlcmZhY2UgQW5ub3RhdGlvbiB7CisKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvQW5ub3RhdGlvbjIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9Bbm5vdGF0aW9uMi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY0YzgzNDMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvQW5ub3RhdGlvbjIuamF2YQpAQCAtMCwwICsxLDUgQEAKK2ltcG9ydCBqYXZhLmxhbmcuYW5ub3RhdGlvbi5SZXRlbnRpb247CitAUmV0ZW50aW9uKDxjYXJldD4pCitAaW50ZXJmYWNlIEFubm90YXRpb24geworCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0Fubm90YXRpb24yXzIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9Bbm5vdGF0aW9uMl8yLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzdjZWRjMgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9Bbm5vdGF0aW9uMl8yLmphdmEKQEAgLTAsMCArMSw1IEBACitpbXBvcnQgamF2YS5sYW5nLmFubm90YXRpb24uUmV0ZW50aW9uOworQFJldGVudGlvbih2YWx1ZT08Y2FyZXQ+KQorQGludGVyZmFjZSBBbm5vdGF0aW9uIHsKKworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9Bbm5vdGF0aW9uMy1vdXQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9Bbm5vdGF0aW9uMy1vdXQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZTc5MGViCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0Fubm90YXRpb24zLW91dC5qYXZhCkBAIC0wLDAgKzEsMTMgQEAKK0BpbnRlcmZhY2UgVGFibGUgeworICBpbnQgY29sdW1uQ291bnQoKTsKK30KKworQGludGVyZmFjZSBKb2luIHsKKyAgVGFibGUgdGFibGUoKTsKK30KKworCitASm9pbih0YWJsZSA9IEBUYWJsZSg8Y2FyZXQ+KSApCitAaW50ZXJmYWNlIEFubm90YXRpb24geworCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0Fubm90YXRpb24zLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvQW5ub3RhdGlvbjMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMDliODNkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0Fubm90YXRpb24zLmphdmEKQEAgLTAsMCArMSwxMyBAQAorQGludGVyZmFjZSBUYWJsZSB7CisgIGludCBjb2x1bW5Db3VudCgpOworfQorCitAaW50ZXJmYWNlIEpvaW4geworICBUYWJsZSB0YWJsZSgpOworfQorCisKK0BKb2luKHRhYmxlID0gPGNhcmV0PiApCitAaW50ZXJmYWNlIEFubm90YXRpb24geworCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0Fubm90YXRpb24zXzItb3V0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvQW5ub3RhdGlvbjNfMi1vdXQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ODgzMzhhMwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9Bbm5vdGF0aW9uM18yLW91dC5qYXZhCkBAIC0wLDAgKzEsMTcgQEAKK0BpbnRlcmZhY2UgQ29sdW1uIHsKKyAgU3RyaW5nIG5hbWUoKTsKK30KKworQGludGVyZmFjZSBUYWJsZSB7CisgIENvbHVtbiBpZCgpOworfQorCitAaW50ZXJmYWNlIEpvaW4geworICBUYWJsZVtdIHRhYmxlKCk7Cit9CisKKworQEpvaW4oe0BUYWJsZShpZCA9IEBDb2x1bW4oPGNhcmV0PikpfSApCitAaW50ZXJmYWNlIEFubm90YXRpb24geworCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0Fubm90YXRpb24zXzIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9Bbm5vdGF0aW9uM18yLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmRkMTU3ZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9Bbm5vdGF0aW9uM18yLmphdmEKQEAgLTAsMCArMSwxNyBAQAorQGludGVyZmFjZSBDb2x1bW4geworICBTdHJpbmcgbmFtZSgpOworfQorCitAaW50ZXJmYWNlIFRhYmxlIHsKKyAgQ29sdW1uIGlkKCk7Cit9CisKK0BpbnRlcmZhY2UgSm9pbiB7CisgIFRhYmxlW10gdGFibGUoKTsKK30KKworCitASm9pbih7QFRhYmxlKGlkID0gPGNhcmV0Pil9ICkKK0BpbnRlcmZhY2UgQW5ub3RhdGlvbiB7CisKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvQW5ub3RhdGlvbjQtb3V0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvQW5ub3RhdGlvbjQtb3V0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGQzMmJjMQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9Bbm5vdGF0aW9uNC1vdXQuamF2YQpAQCAtMCwwICsxLDggQEAKK0BpbnRlcmZhY2UgSm9pbiB7CisgIGJvb2xlYW4gbmVzdGVkTG9vcHMoKTsKK30KKworQEpvaW4obmVzdGVkTG9vcHMgPSA8Y2FyZXQ+ICkKK0BpbnRlcmZhY2UgQW5ub3RhdGlvbiB7CisKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvQW5ub3RhdGlvbjQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9Bbm5vdGF0aW9uNC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRkMzJiYzEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvQW5ub3RhdGlvbjQuamF2YQpAQCAtMCwwICsxLDggQEAKK0BpbnRlcmZhY2UgSm9pbiB7CisgIGJvb2xlYW4gbmVzdGVkTG9vcHMoKTsKK30KKworQEpvaW4obmVzdGVkTG9vcHMgPSA8Y2FyZXQ+ICkKK0BpbnRlcmZhY2UgQW5ub3RhdGlvbiB7CisKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvQW5ub3RhdGlvbjUtb3V0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvQW5ub3RhdGlvbjUtb3V0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzA3NGFhOQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9Bbm5vdGF0aW9uNS1vdXQuamF2YQpAQCAtMCwwICsxLDE2IEBACitlbnVtIFNldHVwIHsKKyAgTk9fQ09OTkVDVElPTiwKKyAgQ09OTkVDVElPTgorfQorCitAVGFyZ2V0KHZhbHVlID0gRWxlbWVudFR5cGUuTUVUSE9EKQorQFJldGVudGlvbihSZXRlbnRpb25Qb2xpY3kuUlVOVElNRSkKK3B1YmxpYyBAaW50ZXJmYWNlIFRlc3QgeworICBTZXR1cCBzZXR1cCgpOworfQorCitwdWJsaWMgY2xhc3MgQ2xpZW50IHsKKyAgQFRlc3Qoc2V0dXAgPSBTZXR1cC48Y2FyZXQ+KQorICBwdWJsaWMgdm9pZCBydW4oKSB7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvQW5ub3RhdGlvbjUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9Bbm5vdGF0aW9uNS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMwNzRhYTkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvQW5ub3RhdGlvbjUuamF2YQpAQCAtMCwwICsxLDE2IEBACitlbnVtIFNldHVwIHsKKyAgTk9fQ09OTkVDVElPTiwKKyAgQ09OTkVDVElPTgorfQorCitAVGFyZ2V0KHZhbHVlID0gRWxlbWVudFR5cGUuTUVUSE9EKQorQFJldGVudGlvbihSZXRlbnRpb25Qb2xpY3kuUlVOVElNRSkKK3B1YmxpYyBAaW50ZXJmYWNlIFRlc3QgeworICBTZXR1cCBzZXR1cCgpOworfQorCitwdWJsaWMgY2xhc3MgQ2xpZW50IHsKKyAgQFRlc3Qoc2V0dXAgPSBTZXR1cC48Y2FyZXQ+KQorICBwdWJsaWMgdm9pZCBydW4oKSB7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvQW5ub3RhdGlvbjYuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9Bbm5vdGF0aW9uNi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE1ODM4YTIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvQW5ub3RhdGlvbjYuamF2YQpAQCAtMCwwICsxLDUgQEAKK2ltcG9ydCBqYXZhLmxhbmcuYW5ub3RhdGlvbi5UYXJnZXQ7CisKK0BUYXJnZXQoPGNhcmV0PikKK3B1YmxpYyBAaW50ZXJmYWNlIFRlc3QgeworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0Fub255bW91c05vUGFpckJyYWNrZXQtb3V0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvQW5vbnltb3VzTm9QYWlyQnJhY2tldC1vdXQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMGRhNjk4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0Fub255bW91c05vUGFpckJyYWNrZXQtb3V0LmphdmEKQEAgLTAsMCArMSwxMSBAQAorcHVibGljIGNsYXNzIEJhciB7CisgICAgeworICAgICAgICBuZXcgVGhyZWFkKG5ldyBSdW5uYWJsZSgpIHsKKyAgICAgICAgICAgIEBPdmVycmlkZQorICAgICAgICAgICAgcHVibGljIHZvaWQgcnVuKCkgeworICAgICAgICAgICAgICAgIDxzZWxlY3Rpb24+Ly9UbyBjaGFuZ2UgYm9keSBvZiBpbXBsZW1lbnRlZCBtZXRob2RzIHVzZSBGaWxlIHwgU2V0dGluZ3MgfCBGaWxlIFRlbXBsYXRlcy48L3NlbGVjdGlvbj4KKyAgICAgICAgICAgIH0KKyAgICAgICAgfSkKKyAgICB9CisKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9Bbm9ueW1vdXNOb1BhaXJCcmFja2V0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvQW5vbnltb3VzTm9QYWlyQnJhY2tldC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjllYTRhNDYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvQW5vbnltb3VzTm9QYWlyQnJhY2tldC5qYXZhCkBAIC0wLDAgKzEsNiBAQAorcHVibGljIGNsYXNzIEJhciB7CisgICAgeworICAgICAgICBuZXcgVGhyZWFkKG5ldyBSdW48Y2FyZXQ+KQorICAgIH0KKworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0FycmF5QWNjZXNzSW5kZXgtb3V0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvQXJyYXlBY2Nlc3NJbmRleC1vdXQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44Y2FlMzhmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0FycmF5QWNjZXNzSW5kZXgtb3V0LmphdmEKQEAgLTAsMCArMSw3IEBACitwdWJsaWMgY2xhc3MgRm9vIHsKKyAgICB7CisgICAgICAgIGludCBwcHBwOworICAgICAgICBpbnRbXSBhYWFhOworICAgICAgICBhYWFhW3BwcHA8Y2FyZXQ+XQorICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9BcnJheUFjY2Vzc0luZGV4LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvQXJyYXlBY2Nlc3NJbmRleC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI1MjI1MzEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvQXJyYXlBY2Nlc3NJbmRleC5qYXZhCkBAIC0wLDAgKzEsNyBAQAorcHVibGljIGNsYXNzIEZvbyB7CisgICAgeworICAgICAgICBpbnQgcHBwcDsKKyAgICAgICAgaW50W10gYWFhYTsKKyAgICAgICAgYWFhYVtwPGNhcmV0Pl0KKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvQXJyYXlBbm5vUGFyYW1ldGVyLW91dC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0FycmF5QW5ub1BhcmFtZXRlci1vdXQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44Yzc2Y2IwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0FycmF5QW5ub1BhcmFtZXRlci1vdXQuamF2YQpAQCAtMCwwICsxLDEwIEBACitwdWJsaWMgQGludGVyZmFjZSBBIHsKKyAgIFN0cmluZ1tdIHZhbHVlKCk7Cit9CisKK2NsYXNzIFdvbnRDb21wbGV0ZSB7CisgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBTVFJJTkcgPSAiYWFhYWEiOworCisgICBAQShTVFJJTkc8Y2FyZXQ+eyJ4In0pCisgICBpbnQgeDsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvQXJyYXlBbm5vUGFyYW1ldGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvQXJyYXlBbm5vUGFyYW1ldGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjkwZTU5OQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9BcnJheUFubm9QYXJhbWV0ZXIuamF2YQpAQCAtMCwwICsxLDEwIEBACitwdWJsaWMgQGludGVyZmFjZSBBIHsKKyAgIFN0cmluZ1tdIHZhbHVlKCk7Cit9CisKK2NsYXNzIFdvbnRDb21wbGV0ZSB7CisgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBTVFJJTkcgPSAiYWFhYWEiOworCisgICBAQSg8Y2FyZXQ+eyJ4In0pCisgICBpbnQgeDsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvQXJyYXlDbG9uZS1vdXQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9BcnJheUNsb25lLW91dC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNjN2EyNjUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvQXJyYXlDbG9uZS1vdXQuamF2YQpAQCAtMCwwICsxLDYgQEAKK3B1YmxpYyBjbGFzcyBBcnJheUNsb25lIHsKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmcpIHsKKyAgICAgICAgU3RyaW5nW10gc3RyaW5nczEgPSB7IiJ9OworICAgICAgICBTdHJpbmdbXSBzdHJpbmdzMiA9IHN0cmluZ3MxLmNsb25lKCk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9BcnJheUNsb25lLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvQXJyYXlDbG9uZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAyNTM5OGQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvQXJyYXlDbG9uZS5qYXZhCkBAIC0wLDAgKzEsNiBAQAorcHVibGljIGNsYXNzIEFycmF5Q2xvbmUgeworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZykgeworICAgICAgICBTdHJpbmdbXSBzdHJpbmdzMSA9IHsiIn07CisgICAgICAgIFN0cmluZ1tdIHN0cmluZ3MyID0gc3RyaW5nczEuY2w8Y2FyZXQ+KCk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9BcnJheUluZGV4VGFpbFR5cGUtb3V0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvQXJyYXlJbmRleFRhaWxUeXBlLW91dC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA5M2NkN2MKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvQXJyYXlJbmRleFRhaWxUeXBlLW91dC5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKK3B1YmxpYyBjbGFzcyBGb28geworCisgICAgeworICAgICAgICBpbnQgYWJjZGVmOworICAgICAgICBpbnRbXSB4eHg7CisgICAgICAgIGludCB6ID0geHh4W2FiY2RlZjxjYXJldD5dCisKKyAgICB9CisKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9BcnJheUluZGV4VGFpbFR5cGUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9BcnJheUluZGV4VGFpbFR5cGUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZGMyYWE2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0FycmF5SW5kZXhUYWlsVHlwZS5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKK3B1YmxpYyBjbGFzcyBGb28geworCisgICAgeworICAgICAgICBpbnQgYWJjZGVmOworICAgICAgICBpbnRbXSB4eHg7CisgICAgICAgIGludCB6ID0geHh4W2E8Y2FyZXQ+XQorCisgICAgfQorCit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvQXJyYXlJbml0aWFsaXplckJlZm9yZVZhcmFyZ3Mtb3V0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvQXJyYXlJbml0aWFsaXplckJlZm9yZVZhcmFyZ3Mtb3V0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmVjNjBhYwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9BcnJheUluaXRpYWxpemVyQmVmb3JlVmFyYXJncy1vdXQuamF2YQpAQCAtMCwwICsxLDUgQEAKK2NsYXNzIFN1cGVyIHsKKyAgdm9pZCBmb28oU3RyaW5nW10gcGFyYW1zLCBpbnQuLi4gaW5kaWNlcykgeworICAgICAgZm9vKG5ldyBTdHJpbmdbXXs8Y2FyZXQ+fSwgMCk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9BcnJheUluaXRpYWxpemVyQmVmb3JlVmFyYXJncy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0FycmF5SW5pdGlhbGl6ZXJCZWZvcmVWYXJhcmdzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTc4M2QxNAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9BcnJheUluaXRpYWxpemVyQmVmb3JlVmFyYXJncy5qYXZhCkBAIC0wLDAgKzEsNSBAQAorY2xhc3MgU3VwZXIgeworICB2b2lkIGZvbyhTdHJpbmdbXSBwYXJhbXMsIGludC4uLiBpbmRpY2VzKSB7CisgICAgICBmb28obmV3IDxjYXJldD4sIDApOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvQXNzZXJ0VGhhdE1hdGNoZXItb3V0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvQXNzZXJ0VGhhdE1hdGNoZXItb3V0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmU1Nzc5NQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9Bc3NlcnRUaGF0TWF0Y2hlci1vdXQuamF2YQpAQCAtMCwwICsxLDEzIEBACitpbXBvcnQgamF2YS51dGlsLkxpc3Q7CisKK3B1YmxpYyBjbGFzcyBab28yIHsKKyAgICA8VD4gdm9pZCBhc3NlcnRUaGF0KFQgdCwgTGlzdDxUPiB0dCkgeyB9CisgICAgPFQ+IExpc3Q8VD4gd3JhcChUIHQpIHsgfQorCisgICAgcHVibGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CisgICAgICAgIGFzc2VydFRoYXQoYXJncywgd3JhcChhcmdzKTxjYXJldD4pOworICAgIH0KKworfQorCisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9Bc3NlcnRUaGF0TWF0Y2hlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0Fzc2VydFRoYXRNYXRjaGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTQ5MjU0ZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9Bc3NlcnRUaGF0TWF0Y2hlci5qYXZhCkBAIC0wLDAgKzEsMTMgQEAKK2ltcG9ydCBqYXZhLnV0aWwuTGlzdDsKKworcHVibGljIGNsYXNzIFpvbzIgeworICAgIDxUPiB2b2lkIGFzc2VydFRoYXQoVCB0LCBMaXN0PFQ+IHR0KSB7IH0KKyAgICA8VD4gTGlzdDxUPiB3cmFwKFQgdCkgeyB9CisKKyAgICBwdWJsaWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKKyAgICAgICAgYXNzZXJ0VGhhdChhcmdzLCB3cmFwKDxjYXJldD4pKTsKKyAgICB9CisKK30KKworCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvQXNzaWduRnJvbVRoZVNhbWVGaWVsZE9mQW5vdGhlck9iamVjdC1vdXQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9Bc3NpZ25Gcm9tVGhlU2FtZUZpZWxkT2ZBbm90aGVyT2JqZWN0LW91dC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZhOGQ5MGYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvQXNzaWduRnJvbVRoZVNhbWVGaWVsZE9mQW5vdGhlck9iamVjdC1vdXQuamF2YQpAQCAtMCwwICsxLDggQEAKK2NsYXNzIEZvbyB7CisgICAgaW50IGZvbzsKKworICAgIHsKKyAgICAgICAgRm9vIGY7CisgICAgICAgIGZvbyA9IGYuZm9vOzxjYXJldD4KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0Fzc2lnbkZyb21UaGVTYW1lRmllbGRPZkFub3RoZXJPYmplY3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9Bc3NpZ25Gcm9tVGhlU2FtZUZpZWxkT2ZBbm90aGVyT2JqZWN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWUzZjY5YgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9Bc3NpZ25Gcm9tVGhlU2FtZUZpZWxkT2ZBbm90aGVyT2JqZWN0LmphdmEKQEAgLTAsMCArMSw4IEBACitjbGFzcyBGb28geworICAgIGludCBmb287CisKKyAgICB7CisgICAgICAgIEZvbyBmOworICAgICAgICBmb28gPSBmLmY8Y2FyZXQ+CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9Bc3NpZ25hYmxlVG9BZnRlckNhc3Qtb3V0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvQXNzaWduYWJsZVRvQWZ0ZXJDYXN0LW91dC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZhMTUxMWYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvQXNzaWduYWJsZVRvQWZ0ZXJDYXN0LW91dC5qYXZhCkBAIC0wLDAgKzEsOCBAQAorcHVibGljIGNsYXNzIFpaWiB7CisgICAgICAgT2JqZWN0IGZvbygpOworCisgICAgICAgIHsKKyAgICAgICAgICAgIFpaWiB6OworICAgICAgICAgICAgWlpaIHkgPSAoWlpaICkgei5mb28oKTxjYXJldD4KKyAgICAgICAgfQorICAgIH0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvQXNzaWduYWJsZVRvQWZ0ZXJDYXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvQXNzaWduYWJsZVRvQWZ0ZXJDYXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWY0MmFlYgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9Bc3NpZ25hYmxlVG9BZnRlckNhc3QuamF2YQpAQCAtMCwwICsxLDggQEAKK3B1YmxpYyBjbGFzcyBaWlogeworICAgICAgIE9iamVjdCBmb28oKTsKKworICAgICAgICB7CisgICAgICAgICAgICBaWlogejsKKyAgICAgICAgICAgIFpaWiB5ID0gKFpaWiApIHouZjxjYXJldD4KKyAgICAgICAgfQorICAgIH0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvQXV0b0Nhc3RXaGVuQWxyZWFkeUNhc3RlZC1vdXQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9BdXRvQ2FzdFdoZW5BbHJlYWR5Q2FzdGVkLW91dC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAxZTMwNTEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvQXV0b0Nhc3RXaGVuQWxyZWFkeUNhc3RlZC1vdXQuamF2YQpAQCAtMCwwICsxLDkgQEAKK2NsYXNzIEIgeworICB7CisgICAgICBPYmplY3QgbzsKKyAgICAgIGlmIChvIGluc3RhbmNlb2YgU3RyaW5nKSB7CisgICAgICAgICAgU3RyaW5nIHMgPSAoU3RyaW5nKSBvOworICAgICAgICAgIFN0cmluZyBzcyA9IChTdHJpbmcpIG87PGNhcmV0PgorICAgICAgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0F1dG9DYXN0V2hlbkFscmVhZHlDYXN0ZWQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9BdXRvQ2FzdFdoZW5BbHJlYWR5Q2FzdGVkLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzRjYzg2OAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9BdXRvQ2FzdFdoZW5BbHJlYWR5Q2FzdGVkLmphdmEKQEAgLTAsMCArMSw5IEBACitjbGFzcyBCIHsKKyAgeworICAgICAgT2JqZWN0IG87CisgICAgICBpZiAobyBpbnN0YW5jZW9mIFN0cmluZykgeworICAgICAgICAgIFN0cmluZyBzID0gKFN0cmluZykgbzsKKyAgICAgICAgICBTdHJpbmcgc3MgPSBvPGNhcmV0PgorICAgICAgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0JlZm9yZUJpbmFyeUV4cHJlc3Npb25Jbk1ldGhvZENhbGwtb3V0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvQmVmb3JlQmluYXJ5RXhwcmVzc2lvbkluTWV0aG9kQ2FsbC1vdXQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZWIzNDA3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0JlZm9yZUJpbmFyeUV4cHJlc3Npb25Jbk1ldGhvZENhbGwtb3V0LmphdmEKQEAgLTAsMCArMSwxMCBAQAorcHVibGljIGNsYXNzIEZvbyB7CisKKyAgICB7CisgICAgICAgIEZvbyBmb28gPSBudWxsOworICAgICAgICBGb28gYmFyID0gaWQoZm9vLCA8Y2FyZXQ+Rm9vLmNsYXNzLnRvU3RyaW5nKCkgKyAiW10iKSk7CisgICAgfQorCisgICAgRm9vIGlkKEZvbyBmb28sIFN0cmluZyBhKSB7cmV0dXJuIGZvbzt9CisKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9CZWZvcmVCaW5hcnlFeHByZXNzaW9uSW5NZXRob2RDYWxsLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvQmVmb3JlQmluYXJ5RXhwcmVzc2lvbkluTWV0aG9kQ2FsbC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAxM2I3MWYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvQmVmb3JlQmluYXJ5RXhwcmVzc2lvbkluTWV0aG9kQ2FsbC5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKK3B1YmxpYyBjbGFzcyBGb28geworCisgICAgeworICAgICAgICBGb28gZm9vID0gbnVsbDsKKyAgICAgICAgRm9vIGJhciA9IGlkKGY8Y2FyZXQ+Rm9vLmNsYXNzLnRvU3RyaW5nKCkgKyAiW10iKSk7CisgICAgfQorCisgICAgRm9vIGlkKEZvbyBmb28sIFN0cmluZyBhKSB7cmV0dXJuIGZvbzt9CisKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9CZWZvcmVDYXN0VG9BcnJheS1vdXQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9CZWZvcmVDYXN0VG9BcnJheS1vdXQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMzNlZmJkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0JlZm9yZUNhc3RUb0FycmF5LW91dC5qYXZhCkBAIC0wLDAgKzEsOCBAQAorY2xhc3MgRm9vIHsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIEZvb1tdIEVNUFRZX0FSUkFZID0gbmV3IEZvb1swXTsKKworICAgIHB1YmxpYyBGb29bXSBmb28oYm9vbGVhbiBiKXsKKyAgICAgICAgcmV0dXJuIEVNUFRZX0FSUkFZOzxjYXJldD4oQmFyW10pOworICAgIH0KKworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0JlZm9yZUNhc3RUb0FycmF5LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvQmVmb3JlQ2FzdFRvQXJyYXkuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZDE2MjFlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0JlZm9yZUNhc3RUb0FycmF5LmphdmEKQEAgLTAsMCArMSw4IEBACitjbGFzcyBGb28geworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgRm9vW10gRU1QVFlfQVJSQVkgPSBuZXcgRm9vWzBdOworCisgICAgcHVibGljIEZvb1tdIGZvbyhib29sZWFuIGIpeworICAgICAgICByZXR1cm4gRU1BPGNhcmV0PihCYXJbXSk7CisgICAgfQorCit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvQnJlYWtMYWJlbC1vdXQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9CcmVha0xhYmVsLW91dC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjViNDg0YWMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvQnJlYWtMYWJlbC1vdXQuamF2YQpAQCAtMCwwICsxLDggQEAKK3B1YmxpYyBjbGFzcyBVdGlsIHsKKyAgdm9pZCBmb28oaW50IGxhYkludCkgeworICAgIGxhYmVsOgorICAgIHdoaWxlICh0cnVlKSB7CisgICAgICBicmVhayBsYWJlbDs8Y2FyZXQ+CisgICAgfQorICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvQnJlYWtMYWJlbC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0JyZWFrTGFiZWwuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jM2RkZWZjNwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9CcmVha0xhYmVsLmphdmEKQEAgLTAsMCArMSw4IEBACitwdWJsaWMgY2xhc3MgVXRpbCB7CisgIHZvaWQgZm9vKGludCBsYWJJbnQpIHsKKyAgICBsYWJlbDoKKyAgICB3aGlsZSAodHJ1ZSkgeworICAgICAgYnJlYWsgbDxjYXJldD4KKyAgICB9CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9CdWcxLW91dC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0J1ZzEtb3V0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2YxNWQ5ZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9CdWcxLW91dC5qYXZhCkBAIC0wLDAgKzEsMTIgQEAKKworcHVibGljIGNsYXNzIFFRUSB7CisgIHZvaWQgZihRUVEgcSkgeyB9CisKKyAgeworICAgIG5ldyBSdW5uYWJsZSgpIHsKKyAgICAgIHB1YmxpYyB2b2lkIHJ1bigpIHsKKyAgICAgICAgZihRUVEudGhpcyk7PGNhcmV0PgorICAgICAgfQorICAgIH07CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9CdWcxLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvQnVnMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM3NTgyNmQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvQnVnMS5qYXZhCkBAIC0wLDAgKzEsMTIgQEAKKworcHVibGljIGNsYXNzIFFRUSB7CisgIHZvaWQgZihRUVEgcSkgeyB9CisKKyAgeworICAgIG5ldyBSdW5uYWJsZSgpIHsKKyAgICAgIHB1YmxpYyB2b2lkIHJ1bigpIHsKKyAgICAgICAgZig8Y2FyZXQ+KTsKKyAgICAgIH0KKyAgICB9OworICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvQnVnMi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0J1ZzIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMmZlMDViCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0J1ZzIuamF2YQpAQCAtMCwwICsxLDcgQEAKK2NsYXNzIFRlc3QgeworICAvKioKKyAgICogIEBleGNlcHRpb24gSWxsZWdhbFN0YXRlRXhjZXB0aW9uPGNhcmV0PgorICAgKi8KKyAgcHVibGljIHZvaWQgZm9vKCkgdGhyb3dzIGphdmEuaW8uSU9FeGNlcHRpb24sIElsbGVnYWxTdGF0ZUV4Y2VwdGlvbiB7CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9DYWxsVmFyYXJnQXJndW1lbnQtb3V0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvQ2FsbFZhcmFyZ0FyZ3VtZW50LW91dC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY1Y2VjMGEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvQ2FsbFZhcmFyZ0FyZ3VtZW50LW91dC5qYXZhCkBAIC0wLDAgKzEsMTggQEAKK3B1YmxpYyBjbGFzcyBKYXZhQ2xhc3M8VD4geworCisKKworICAgIDxWIGV4dGVuZHMgVD4gViBmb28oQ2xhc3M8Vj4gcykge30KK30KKworY2xhc3MgWm9vIHsKKyAgICB7CisgICAgICAgIENsYXNzPD8gZXh0ZW5kcyBTdHJpbmc+IHhjY2NjY2NjYyA9IG51bGw7CisgICAgICAgIEphdmFDbGFzczxTdHJpbmc+IGNjY2MgPSBuZXcgSmF2YUNsYXNzPFN0cmluZz4oKTsKKyAgICAgICAgYmFyKGNjY2MuZm9vKHhjY2NjY2NjYzxjYXJldD4pKTsKKyAgICB9CisKKyAgICB2b2lkIGJhcihTdHJpbmcuLi4gcykgeworCisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0NhbGxWYXJhcmdBcmd1bWVudC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0NhbGxWYXJhcmdBcmd1bWVudC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRhNmNmYzkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvQ2FsbFZhcmFyZ0FyZ3VtZW50LmphdmEKQEAgLTAsMCArMSwxOCBAQAorcHVibGljIGNsYXNzIEphdmFDbGFzczxUPiB7CisKKworCisgICAgPFYgZXh0ZW5kcyBUPiBWIGZvbyhDbGFzczxWPiBzKSB7fQorfQorCitjbGFzcyBab28geworICAgIHsKKyAgICAgICAgQ2xhc3M8PyBleHRlbmRzIFN0cmluZz4geGNjY2NjY2NjID0gbnVsbDsKKyAgICAgICAgSmF2YUNsYXNzPFN0cmluZz4gY2NjYyA9IG5ldyBKYXZhQ2xhc3M8U3RyaW5nPigpOworICAgICAgICBiYXIoY2NjYy5mb28oeGNjPGNhcmV0PikpOworICAgIH0KKworICAgIHZvaWQgYmFyKFN0cmluZy4uLiBzKSB7CisKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvQ2FzZU1pc3NpbmdFbnVtVmFsdWUtb3V0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvQ2FzZU1pc3NpbmdFbnVtVmFsdWUtb3V0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjVmNWU2OQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9DYXNlTWlzc2luZ0VudW1WYWx1ZS1vdXQuamF2YQpAQCAtMCwwICsxLDEwIEBACitjbGFzcyBBIHsKKyAgICBBKE15RW51bSBlKSB7CisgICAgICBzd2l0Y2ggKGUpIHsKKyAgICAgICAgY2FzZSBiYXI6IHJldHVybjsKKyAgICAgICAgY2FzZSBmb286PGNhcmV0PgorICAgICAgfQorICAgIH0KK30KKworZW51bSBNeUVudW0geyBmb28sIGJhciB9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0Nhc2VNaXNzaW5nRW51bVZhbHVlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvQ2FzZU1pc3NpbmdFbnVtVmFsdWUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNTZkZmJkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0Nhc2VNaXNzaW5nRW51bVZhbHVlLmphdmEKQEAgLTAsMCArMSwxMCBAQAorY2xhc3MgQSB7CisgICAgQShNeUVudW0gZSkgeworICAgICAgc3dpdGNoIChlKSB7CisgICAgICAgIGNhc2UgYmFyOiByZXR1cm47CisgICAgICAgIGNhc2UgPGNhcmV0PgorICAgICAgfQorICAgIH0KK30KKworZW51bSBNeUVudW0geyBmb28sIGJhciB9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0Nhc2VNaXNzaW5nRW51bVZhbHVlMi1vdXQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9DYXNlTWlzc2luZ0VudW1WYWx1ZTItb3V0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjEzZTYxMgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9DYXNlTWlzc2luZ0VudW1WYWx1ZTItb3V0LmphdmEKQEAgLTAsMCArMSwxMCBAQAorY2xhc3MgQSB7CisgICAgQShNeUVudW0gZSkgeworICAgICAgc3dpdGNoIChlKSB7CisgICAgICAgIGNhc2UgZm9vOjxjYXJldD4KKyAgICAgICAgY2FzZSBiYXI6IHJldHVybjsKKyAgICAgIH0KKyAgICB9Cit9CisKK2VudW0gTXlFbnVtIHsgZm9vLCBiYXIgfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9DYXNlTWlzc2luZ0VudW1WYWx1ZTIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9DYXNlTWlzc2luZ0VudW1WYWx1ZTIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMWFjZDRjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0Nhc2VNaXNzaW5nRW51bVZhbHVlMi5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKK2NsYXNzIEEgeworICAgIEEoTXlFbnVtIGUpIHsKKyAgICAgIHN3aXRjaCAoZSkgeworICAgICAgICBjYXNlIDxjYXJldD4KKyAgICAgICAgY2FzZSBiYXI6IHJldHVybjsKKyAgICAgIH0KKyAgICB9Cit9CisKK2VudW0gTXlFbnVtIHsgZm9vLCBiYXIgfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9DYXN0QXV0b2JveGluZy1vdXQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9DYXN0QXV0b2JveGluZy1vdXQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYmYwZjc2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0Nhc3RBdXRvYm94aW5nLW91dC5qYXZhCkBAIC0wLDAgKzEsOCBAQAorY2xhc3MgQSB7CisgIHB1YmxpYyBhYnN0cmFjdCB2b2lkIHpvbyhpbnQgeSk7CisKKyAgeworICAgIE9iamVjdCB4OworICAgIHpvbygoSW50ZWdlcikgPGNhcmV0PngpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0Nhc3RBdXRvYm94aW5nLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvQ2FzdEF1dG9ib3hpbmcuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NjFiNmVhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0Nhc3RBdXRvYm94aW5nLmphdmEKQEAgLTAsMCArMSw4IEBACitjbGFzcyBBIHsKKyAgcHVibGljIGFic3RyYWN0IHZvaWQgem9vKGludCB5KTsKKworICB7CisgICAgT2JqZWN0IHg7CisgICAgem9vKCg8Y2FyZXQ+eCk7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvQ2FzdEF1dG9ib3hpbmcyLW91dC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0Nhc3RBdXRvYm94aW5nMi1vdXQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYmYwZjc2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0Nhc3RBdXRvYm94aW5nMi1vdXQuamF2YQpAQCAtMCwwICsxLDggQEAKK2NsYXNzIEEgeworICBwdWJsaWMgYWJzdHJhY3Qgdm9pZCB6b28oaW50IHkpOworCisgIHsKKyAgICBPYmplY3QgeDsKKyAgICB6b28oKEludGVnZXIpIDxjYXJldD54KTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9DYXN0QXV0b2JveGluZzIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9DYXN0QXV0b2JveGluZzIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZWRlNmFmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0Nhc3RBdXRvYm94aW5nMi5qYXZhCkBAIC0wLDAgKzEsOCBAQAorY2xhc3MgQSB7CisgIHB1YmxpYyBhYnN0cmFjdCB2b2lkIHpvbyhpbnQgeSk7CisKKyAgeworICAgIE9iamVjdCB4OworICAgIHpvbygoPGNhcmV0PikgeCk7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvQ2FzdEF1dG9ib3hpbmczLW91dC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0Nhc3RBdXRvYm94aW5nMy1vdXQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYmYwZjc2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0Nhc3RBdXRvYm94aW5nMy1vdXQuamF2YQpAQCAtMCwwICsxLDggQEAKK2NsYXNzIEEgeworICBwdWJsaWMgYWJzdHJhY3Qgdm9pZCB6b28oaW50IHkpOworCisgIHsKKyAgICBPYmplY3QgeDsKKyAgICB6b28oKEludGVnZXIpIDxjYXJldD54KTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9DYXN0QXV0b2JveGluZzMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9DYXN0QXV0b2JveGluZzMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZGY1ZDZhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0Nhc3RBdXRvYm94aW5nMy5qYXZhCkBAIC0wLDAgKzEsOCBAQAorY2xhc3MgQSB7CisgIHB1YmxpYyBhYnN0cmFjdCB2b2lkIHpvbyhpbnQgeSk7CisKKyAgeworICAgIE9iamVjdCB4OworICAgIHpvbygoPGNhcmV0PmEpIHgpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0Nhc3RHZW5lcmljUXVhbGlmaWVyLW91dC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0Nhc3RHZW5lcmljUXVhbGlmaWVyLW91dC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE0NTQzYjYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvQ2FzdEdlbmVyaWNRdWFsaWZpZXItb3V0LmphdmEKQEAgLTAsMCArMSwxMyBAQAorY2xhc3MgQTxUPiB7CisgIFQgZ2V0KCkgeworICAgIHJldHVybiBudWxsOworICB9Cit9CitjbGFzcyBCIGV4dGVuZHMgQTxTdHJpbmdCdWZmZXI+IHt9CitjbGFzcyBDIHsKKyAgdm9pZCBtKEE8Pz4gYSkgeworICAgIGlmIChhIGluc3RhbmNlb2YgQikgeworICAgICAgU3RyaW5nQnVmZmVyIHMgPSAoKEIpIGEpLmdldCgpOzxjYXJldD4KKyAgICB9CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9DYXN0R2VuZXJpY1F1YWxpZmllci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0Nhc3RHZW5lcmljUXVhbGlmaWVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjg0YTFjNQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9DYXN0R2VuZXJpY1F1YWxpZmllci5qYXZhCkBAIC0wLDAgKzEsMTMgQEAKK2NsYXNzIEE8VD4geworICBUIGdldCgpIHsKKyAgICByZXR1cm4gbnVsbDsKKyAgfQorfQorY2xhc3MgQiBleHRlbmRzIEE8U3RyaW5nQnVmZmVyPiB7fQorY2xhc3MgQyB7CisgIHZvaWQgbShBPD8+IGEpIHsKKyAgICBpZiAoYSBpbnN0YW5jZW9mIEIpIHsKKyAgICAgIFN0cmluZ0J1ZmZlciBzID0gYS48Y2FyZXQ+CisgICAgfQorICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvQ2FzdEluVGhyb3ctb3V0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvQ2FzdEluVGhyb3ctb3V0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGJhMDJhNzgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvQ2FzdEluVGhyb3ctb3V0LmphdmEKQEAgLTAsMCArMSwxMSBAQAorY2xhc3MgTXlFeGNlcHRpb24gZXh0ZW5kcyBFeGNlcHRpb24ge30KKworY2xhc3MgVGVzdCB7CisgICAgdm9pZCB0ZXN0KCkgdGhyb3dzIE15RXhjZXB0aW9uIHsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICB0aHJvdyBuZXcgUnVudGltZUV4Y2VwdGlvbigpOworICAgICAgICB9IGNhdGNoKEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgdGhyb3cgKE15RXhjZXB0aW9uKSA8Y2FyZXQ+CisgICAgICAgIH0KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0Nhc3RJblRocm93LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvQ2FzdEluVGhyb3cuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43OTg5MmJkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0Nhc3RJblRocm93LmphdmEKQEAgLTAsMCArMSwxMSBAQAorY2xhc3MgTXlFeGNlcHRpb24gZXh0ZW5kcyBFeGNlcHRpb24ge30KKworY2xhc3MgVGVzdCB7CisgICAgdm9pZCB0ZXN0KCkgdGhyb3dzIE15RXhjZXB0aW9uIHsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICB0aHJvdyBuZXcgUnVudGltZUV4Y2VwdGlvbigpOworICAgICAgICB9IGNhdGNoKEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgdGhyb3cgKDxjYXJldD4pIAorICAgICAgICB9CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9DYXN0VG9BcnJheS1vdXQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9DYXN0VG9BcnJheS1vdXQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNjkzZGY1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0Nhc3RUb0FycmF5LW91dC5qYXZhCkBAIC0wLDAgKzEsNyBAQAorcHVibGljIGNsYXNzIFNvbWVDbGFzcyB7CisKKyAgICB7CisgICAgICAgIFN0cmluZ1tdIGFhYSA9IChTdHJpbmdbXSkgPGNhcmV0PgorICAgIH0KKworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0Nhc3RUb0FycmF5LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvQ2FzdFRvQXJyYXkuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZWZmNTI2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0Nhc3RUb0FycmF5LmphdmEKQEAgLTAsMCArMSw3IEBACitwdWJsaWMgY2xhc3MgU29tZUNsYXNzIHsKKworICAgIHsKKyAgICAgICAgU3RyaW5nW10gYWFhID0gKDxjYXJldD4KKyAgICB9CisKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9DYXN0VG9QYXJhbWV0ZXJpemVkVHlwZS1vdXQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9DYXN0VG9QYXJhbWV0ZXJpemVkVHlwZS1vdXQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYmYxMDM4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0Nhc3RUb1BhcmFtZXRlcml6ZWRUeXBlLW91dC5qYXZhCkBAIC0wLDAgKzEsMTEgQEAKK3B1YmxpYyBjbGFzcyBBPFQ+IHsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBBPD8+IFggPSBudWxsOworCisgICAgQTxTdHJpbmc+IGdldChCIG8pIHsKKyAgICAgIHJldHVybiAoQTxTdHJpbmc+KSA8Y2FyZXQ+WDsKKyAgICB9CisgIH0KKworY2xhc3MgQiB7CisKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvQ2FzdFRvUGFyYW1ldGVyaXplZFR5cGUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9DYXN0VG9QYXJhbWV0ZXJpemVkVHlwZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRlYTljNjEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvQ2FzdFRvUGFyYW1ldGVyaXplZFR5cGUuamF2YQpAQCAtMCwwICsxLDExIEBACitwdWJsaWMgY2xhc3MgQTxUPiB7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgQTw/PiBYID0gbnVsbDsKKworICAgIEE8U3RyaW5nPiBnZXQoQiBvKSB7CisgICAgICByZXR1cm4gKDxjYXJldD5YOworICAgIH0KKyAgfQorCitjbGFzcyBCIHsKKworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9DYXN0V2lsZGNhcmRzLW91dC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0Nhc3RXaWxkY2FyZHMtb3V0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzA3YTI3NQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9DYXN0V2lsZGNhcmRzLW91dC5qYXZhCkBAIC0wLDAgKzEsNiBAQAorYWJzdHJhY3QgY2xhc3MgQTxUPiB7CisgICAgdm9pZCBmb28oVCB4KXt9CisgICAgdm9pZCBiYXIoQTw/IHN1cGVyIFRocm93YWJsZT4gYSwgT2JqZWN0IGIpeworICAgICAgICBhLmZvbygoVGhyb3dhYmxlKSA8Y2FyZXQ+Yik7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9DYXN0V2lsZGNhcmRzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvQ2FzdFdpbGRjYXJkcy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA1NzBlZmMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvQ2FzdFdpbGRjYXJkcy5qYXZhCkBAIC0wLDAgKzEsNiBAQAorYWJzdHJhY3QgY2xhc3MgQTxUPiB7CisgICAgdm9pZCBmb28oVCB4KXt9CisgICAgdm9pZCBiYXIoQTw/IHN1cGVyIFRocm93YWJsZT4gYSwgT2JqZWN0IGIpeworICAgICAgICBhLmZvbygoPGNhcmV0PikgYik7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9DYXN0V2l0aDJUeXBlUGFyYW1ldGVycy1vdXQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9DYXN0V2l0aDJUeXBlUGFyYW1ldGVycy1vdXQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYTViNzlkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0Nhc3RXaXRoMlR5cGVQYXJhbWV0ZXJzLW91dC5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKK2ludGVyZmFjZSBGb288VCxWPiB7fQorCisgIGNsYXNzIEJhcjxULFY+IHsKKyAgICBCYXIoRm9vPFQsVj4gZm9vKSB7fQorICB9CisKKyAgY2xhc3MgTWFpbiB7CisgICAgRm9vIGZvbzsKKyAgICBCYXI8U3RyaW5nLFN0cmluZz4gYmFyID0gbmV3IEJhcjxTdHJpbmcsU3RyaW5nPigoRm9vPFN0cmluZywgU3RyaW5nPikgPGNhcmV0PmZvbyk7CisgIH0KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9DYXN0V2l0aDJUeXBlUGFyYW1ldGVycy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0Nhc3RXaXRoMlR5cGVQYXJhbWV0ZXJzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWUyZDQ2ZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9DYXN0V2l0aDJUeXBlUGFyYW1ldGVycy5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKK2ludGVyZmFjZSBGb288VCxWPiB7fQorCisgIGNsYXNzIEJhcjxULFY+IHsKKyAgICBCYXIoRm9vPFQsVj4gZm9vKSB7fQorICB9CisKKyAgY2xhc3MgTWFpbiB7CisgICAgRm9vIGZvbzsKKyAgICBCYXI8U3RyaW5nLFN0cmluZz4gYmFyID0gbmV3IEJhcjxTdHJpbmcsU3RyaW5nPigoPGNhcmV0PmZvbyk7CisgIH0KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9DYXN0V2l0aEdlbmVyaWNzLW91dC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0Nhc3RXaXRoR2VuZXJpY3Mtb3V0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWU1ZTAxMgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9DYXN0V2l0aEdlbmVyaWNzLW91dC5qYXZhCkBAIC0wLDAgKzEsOSBAQAorcHVibGljIGNsYXNzIEFhYWFhYWEgeworCisgICAgdm9pZCBmb28oQ2xhc3M8PyBleHRlbmRzIE9iamVjdD4gYykge30KKworICAgIHZvaWQgYmFyKCkgeworICAgICAgICBmb28oKENsYXNzPE9iamVjdD4pIDxjYXJldD5DbGFzcy5mb3JOYW1lKCJzZGQiKSk7CisgICAgfQorCit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvQ2FzdFdpdGhHZW5lcmljcy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0Nhc3RXaXRoR2VuZXJpY3MuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZTM3MzVhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0Nhc3RXaXRoR2VuZXJpY3MuamF2YQpAQCAtMCwwICsxLDkgQEAKK3B1YmxpYyBjbGFzcyBBYWFhYWFhIHsKKworICAgIHZvaWQgZm9vKENsYXNzPD8gZXh0ZW5kcyBPYmplY3Q+IGMpIHt9CisKKyAgICB2b2lkIGJhcigpIHsKKyAgICAgICAgZm9vKCg8Y2FyZXQ+Q2xhc3MuZm9yTmFtZSgic2RkIikpOworICAgIH0KKworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0NhdGNoSW5Bbm9ueW1vdXMtb3V0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvQ2F0Y2hJbkFub255bW91cy1vdXQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZDk1ZGY1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0NhdGNoSW5Bbm9ueW1vdXMtb3V0LmphdmEKQEAgLTAsMCArMSwxNyBAQAoraW1wb3J0IGphdmEuaW8uKjsKKworY2xhc3MgRm9vIHsKKyAgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSdW5uYWJsZSBydW5uYWJsZSA9IG5ldyBSdW5uYWJsZSgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyB2b2lkIHJ1bigpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSU9FeGNlcHRpb24oKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChJT0V4Y2VwdGlvbiA8Y2FyZXQ+KSB7CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07CisKKyAgfQorCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0NhdGNoSW5Bbm9ueW1vdXMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9DYXRjaEluQW5vbnltb3VzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGVmM2NjZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9DYXRjaEluQW5vbnltb3VzLmphdmEKQEAgLTAsMCArMSwxNyBAQAoraW1wb3J0IGphdmEuaW8uKjsKKworY2xhc3MgRm9vIHsKKyAgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSdW5uYWJsZSBydW5uYWJsZSA9IG5ldyBSdW5uYWJsZSgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyB2b2lkIHJ1bigpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSU9FeGNlcHRpb24oKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoICg8Y2FyZXQ+KSB7CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07CisKKyAgfQorCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0NoZWNrU3RhdGljSW1wb3J0c1R5cGUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9DaGVja1N0YXRpY0ltcG9ydHNUeXBlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTM3OGUzNgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9DaGVja1N0YXRpY0ltcG9ydHNUeXBlLmphdmEKQEAgLTAsMCArMSwxMSBAQAoraW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7CitpbXBvcnQgamF2YS51dGlsLkxpc3Q7CitpbXBvcnQgc3RhdGljIGphdmEubGFuZy5NYXRoLio7CisKK3B1YmxpYyBjbGFzcyBUZXN0Q2xhc3MgeworICAgIHByaXZhdGUgTGlzdDxTdHJpbmc+IHRlc3RMaXN0OworCisgICAgcHVibGljIHZvaWQgdGVzdE1lKCkgeworICAgICAgICBMaXN0PFN0cmluZz4gbmV3TGlzdCA9IG5ldyBBcnJheUxpc3Q8U3RyaW5nPihhdDxjYXJldD4pOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvQ2xhc3NMaXRlcmFsLW91dC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0NsYXNzTGl0ZXJhbC1vdXQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MjM2NjNiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0NsYXNzTGl0ZXJhbC1vdXQuamF2YQpAQCAtMCwwICsxLDYgQEAKK2NsYXNzIEMgeworICB2b2lkIGggKENsYXNzPD8gZXh0ZW5kcyBTdHJpbmc+IGNsYXp6KSB7fQorICB7CisgICAgaCg8Y2FyZXQ+KTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9DbGFzc0xpdGVyYWwuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9DbGFzc0xpdGVyYWwuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MjM2NjNiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0NsYXNzTGl0ZXJhbC5qYXZhCkBAIC0wLDAgKzEsNiBAQAorY2xhc3MgQyB7CisgIHZvaWQgaCAoQ2xhc3M8PyBleHRlbmRzIFN0cmluZz4gY2xhenopIHt9CisgIHsKKyAgICBoKDxjYXJldD4pOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0NsYXNzTGl0ZXJhbEluQW5ubzEtb3V0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvQ2xhc3NMaXRlcmFsSW5Bbm5vMS1vdXQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZTgwMDFiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0NsYXNzTGl0ZXJhbEluQW5ubzEtb3V0LmphdmEKQEAgLTAsMCArMSw1IEBACitAaW50ZXJmYWNlIEFubm8geworICBDbGFzczw/IGV4dGVuZHMgU3RyaW5nPiB2YWx1ZSgpOworfQorQEFubm8oU3RyaW5nLmNsYXNzPGNhcmV0PikKK2NsYXNzIEZvbyB7fQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9DbGFzc0xpdGVyYWxJbkFubm8xLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvQ2xhc3NMaXRlcmFsSW5Bbm5vMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE1ZTFhYjYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvQ2xhc3NMaXRlcmFsSW5Bbm5vMS5qYXZhCkBAIC0wLDAgKzEsNSBAQAorQGludGVyZmFjZSBBbm5vIHsKKyAgQ2xhc3M8PyBleHRlbmRzIFN0cmluZz4gdmFsdWUoKTsKK30KK0BBbm5vKFN0cmluZy5jbDxjYXJldD4pCitjbGFzcyBGb28ge30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvQ2xhc3NMaXRlcmFsSW5Bbm5vMi1vdXQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9DbGFzc0xpdGVyYWxJbkFubm8yLW91dC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVlODAwMWIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvQ2xhc3NMaXRlcmFsSW5Bbm5vMi1vdXQuamF2YQpAQCAtMCwwICsxLDUgQEAKK0BpbnRlcmZhY2UgQW5ubyB7CisgIENsYXNzPD8gZXh0ZW5kcyBTdHJpbmc+IHZhbHVlKCk7Cit9CitAQW5ubyhTdHJpbmcuY2xhc3M8Y2FyZXQ+KQorY2xhc3MgRm9vIHt9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0NsYXNzTGl0ZXJhbEluQW5ubzIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9DbGFzc0xpdGVyYWxJbkFubm8yLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWFiZWQ5OAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9DbGFzc0xpdGVyYWxJbkFubm8yLmphdmEKQEAgLTAsMCArMSw1IEBACitAaW50ZXJmYWNlIEFubm8geworICBDbGFzczw/IGV4dGVuZHMgU3RyaW5nPiB2YWx1ZSgpOworfQorQEFubm8oPGNhcmV0PikKK2NsYXNzIEZvbyB7fQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9DbGFzc0xpdGVyYWxJbkFycmF5QW5ub0luaXRpYWxpemVyLW91dC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0NsYXNzTGl0ZXJhbEluQXJyYXlBbm5vSW5pdGlhbGl6ZXItb3V0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2QyOTJiMQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9DbGFzc0xpdGVyYWxJbkFycmF5QW5ub0luaXRpYWxpemVyLW91dC5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKK0BpbnRlcmZhY2UgVGVzdEZvciB7CisgIENsYXNzW10gdGVzdEZvckNsYXNzKCk7Cit9CisKK2NsYXNzIEZvbyB7CisgIEBUZXN0Rm9yKHRlc3RGb3JDbGFzcyA9IHsgQWFhYWFhYWFhYWFhYWFhYWFhYWFhLmNsYXNzPGNhcmV0PiB9ICkKKyAgcHVibGljIHZvaWQgZm9vMjIoKSB7fQorfQorCitjbGFzcyBBYWFhYWFhYWFhYWFhYWFhYWFhYWEge30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvQ2xhc3NMaXRlcmFsSW5BcnJheUFubm9Jbml0aWFsaXplci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0NsYXNzTGl0ZXJhbEluQXJyYXlBbm5vSW5pdGlhbGl6ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNTI0NzZkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0NsYXNzTGl0ZXJhbEluQXJyYXlBbm5vSW5pdGlhbGl6ZXIuamF2YQpAQCAtMCwwICsxLDEwIEBACitAaW50ZXJmYWNlIFRlc3RGb3IgeworICBDbGFzc1tdIHRlc3RGb3JDbGFzcygpOworfQorCitjbGFzcyBGb28geworICBAVGVzdEZvcih0ZXN0Rm9yQ2xhc3MgPSB7IEFhYWFhYTxjYXJldD4gfSApCisgIHB1YmxpYyB2b2lkIGZvbzIyKCkge30KK30KKworY2xhc3MgQWFhYWFhYWFhYWFhYWFhYWFhYWFhIHt9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0NsYXNzTGl0ZXJhbEluQXJyYXlBbm5vSW5pdGlhbGl6ZXIyLW91dC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0NsYXNzTGl0ZXJhbEluQXJyYXlBbm5vSW5pdGlhbGl6ZXIyLW91dC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVhYTkwMzUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvQ2xhc3NMaXRlcmFsSW5BcnJheUFubm9Jbml0aWFsaXplcjItb3V0LmphdmEKQEAgLTAsMCArMSwxMiBAQAoraW1wb3J0IGphdmEubGFuZy5PYmplY3Q7CisKK0BpbnRlcmZhY2UgVGVzdEZvciB7CisgIENsYXNzW10gdGVzdEZvckNsYXNzKCk7Cit9CisKK2NsYXNzIEZvbyB7CisgIEBUZXN0Rm9yKHRlc3RGb3JDbGFzcyA9IHtPYmplY3QuY2xhc3MsIEFhYWFhYWFhYWFhYWFhYWFhYWFhYS5jbGFzczxjYXJldD4gfSApCisgIHB1YmxpYyB2b2lkIGZvbzIyKCkge30KK30KKworY2xhc3MgQWFhYWFhYWFhYWFhYWFhYWFhYWFhIHt9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0NsYXNzTGl0ZXJhbEluQXJyYXlBbm5vSW5pdGlhbGl6ZXIyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvQ2xhc3NMaXRlcmFsSW5BcnJheUFubm9Jbml0aWFsaXplcjIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NjM4N2ZlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0NsYXNzTGl0ZXJhbEluQXJyYXlBbm5vSW5pdGlhbGl6ZXIyLmphdmEKQEAgLTAsMCArMSwxMiBAQAoraW1wb3J0IGphdmEubGFuZy5PYmplY3Q7CisKK0BpbnRlcmZhY2UgVGVzdEZvciB7CisgIENsYXNzW10gdGVzdEZvckNsYXNzKCk7Cit9CisKK2NsYXNzIEZvbyB7CisgIEBUZXN0Rm9yKHRlc3RGb3JDbGFzcyA9IHtPYmplY3QuY2xhc3MsIEFhYWFhYTxjYXJldD4gfSApCisgIHB1YmxpYyB2b2lkIGZvbzIyKCkge30KK30KKworY2xhc3MgQWFhYWFhYWFhYWFhYWFhYWFhYWFhIHt9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0NsYXNzTGl0ZXJhbEluaGVyaXRvcnMtb3V0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvQ2xhc3NMaXRlcmFsSW5oZXJpdG9ycy1vdXQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NzY4YTczCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0NsYXNzTGl0ZXJhbEluaGVyaXRvcnMtb3V0LmphdmEKQEAgLTAsMCArMSw2IEBACitAaW50ZXJmYWNlIEFubm8geworICBDbGFzczw/IGV4dGVuZHMgRm9vPiB2YWx1ZSgpOworfQorQEFubm8oQmFyLmNsYXNzPGNhcmV0PikKK2NsYXNzIEZvbyB7fQorY2xhc3MgQmFyIGV4dGVuZHMgRm9ve30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvQ2xhc3NMaXRlcmFsSW5oZXJpdG9ycy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0NsYXNzTGl0ZXJhbEluaGVyaXRvcnMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MDgwMTIxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0NsYXNzTGl0ZXJhbEluaGVyaXRvcnMuamF2YQpAQCAtMCwwICsxLDYgQEAKK0BpbnRlcmZhY2UgQW5ubyB7CisgIENsYXNzPD8gZXh0ZW5kcyBGb28+IHZhbHVlKCk7Cit9CitAQW5ubyhCPGNhcmV0PikKK2NsYXNzIEZvbyB7fQorY2xhc3MgQmFyIGV4dGVuZHMgRm9ve30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvQ2xhc3NMaXRlcmFsU2hvdWxkSW5zZXJ0SW1wb3J0LW91dC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0NsYXNzTGl0ZXJhbFNob3VsZEluc2VydEltcG9ydC1vdXQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYWFhODczCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0NsYXNzTGl0ZXJhbFNob3VsZEluc2VydEltcG9ydC1vdXQuamF2YQpAQCAtMCwwICsxLDYgQEAKK2ltcG9ydCBiYXIuSW50ZjsKK2ltcG9ydCBmb28uQmFyOworCitjbGFzcyBGb29vb28geworICAgIENsYXNzPD8gZXh0ZW5kcyBJbnRmPiBmID0gQmFyLmNsYXNzOzxjYXJldD4KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvQ2xhc3NMaXRlcmFsU2hvdWxkSW5zZXJ0SW1wb3J0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvQ2xhc3NMaXRlcmFsU2hvdWxkSW5zZXJ0SW1wb3J0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2UwZDY5ZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9DbGFzc0xpdGVyYWxTaG91bGRJbnNlcnRJbXBvcnQuamF2YQpAQCAtMCwwICsxLDUgQEAKK2ltcG9ydCBiYXIuSW50ZjsKKworY2xhc3MgRm9vb29vIHsKKyAgICBDbGFzczw/IGV4dGVuZHMgSW50Zj4gZiA9IEI8Y2FyZXQ+Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0NvbGxlY3Rpb25zRW1wdHlTZXRJbk1ldGhvZENhbGwtb3V0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvQ29sbGVjdGlvbnNFbXB0eVNldEluTWV0aG9kQ2FsbC1vdXQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYmVjMzUyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0NvbGxlY3Rpb25zRW1wdHlTZXRJbk1ldGhvZENhbGwtb3V0LmphdmEKQEAgLTAsMCArMSwxNCBAQAorY2xhc3MgU2V0PFQ+IHt9CisKK2NsYXNzIENvbGxlY3Rpb25zIHsKKyAgc3RhdGljIDxUPiBTZXQ8VD4gZW1wdHlTZXQoKSB7fQorfQorCitjbGFzcyBCYXIgeworCisgIHsKKyAgICBmb28oQ29sbGVjdGlvbnMuPFN0cmluZz5lbXB0eVNldCgpKTs8Y2FyZXQ+CisgIH0KKworICB2b2lkIGZvbyhTZXQ8U3RyaW5nPiBzZXQpe30KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvQ29sbGVjdGlvbnNFbXB0eVNldEluTWV0aG9kQ2FsbC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0NvbGxlY3Rpb25zRW1wdHlTZXRJbk1ldGhvZENhbGwuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYzAzNTNlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0NvbGxlY3Rpb25zRW1wdHlTZXRJbk1ldGhvZENhbGwuamF2YQpAQCAtMCwwICsxLDE0IEBACitjbGFzcyBTZXQ8VD4ge30KKworY2xhc3MgQ29sbGVjdGlvbnMgeworICBzdGF0aWMgPFQ+IFNldDxUPiBlbXB0eVNldCgpIHt9Cit9CisKK2NsYXNzIEJhciB7CisKKyAgeworICAgIGZvbyhDb2xsZWN0aW9ucy5lPGNhcmV0PikKKyAgfQorCisgIHZvaWQgZm9vKFNldDxTdHJpbmc+IHNldCl7fQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9Db2xsZWN0aW9uc0VtcHR5U2V0SW5UZXJuYXJ5LW91dC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0NvbGxlY3Rpb25zRW1wdHlTZXRJblRlcm5hcnktb3V0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjI5MmYxOQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9Db2xsZWN0aW9uc0VtcHR5U2V0SW5UZXJuYXJ5LW91dC5qYXZhCkBAIC0wLDAgKzEsMTQgQEAKK2NsYXNzIFNldDxUPiB7fQorCitjbGFzcyBDb2xsZWN0aW9ucyB7CisgIHN0YXRpYyA8VD4gU2V0PFQ+IGVtcHR5U2V0KCkge30KK30KKworY2xhc3MgQmFyIHsKKworICBTZXQ8U3RyaW5nPiBiYXIoKSB7CisgICAgcmV0dXJuIHRydWUgPyBDb2xsZWN0aW9ucy48U3RyaW5nPmVtcHR5U2V0KCkgOiA8Y2FyZXQ+CisgIH0KKworICB2b2lkIGZvbyhTZXQ8U3RyaW5nPiBzZXQpe30KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvQ29sbGVjdGlvbnNFbXB0eVNldEluVGVybmFyeS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0NvbGxlY3Rpb25zRW1wdHlTZXRJblRlcm5hcnkuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZjkxM2U4ZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9Db2xsZWN0aW9uc0VtcHR5U2V0SW5UZXJuYXJ5LmphdmEKQEAgLTAsMCArMSwxNCBAQAorY2xhc3MgU2V0PFQ+IHt9CisKK2NsYXNzIENvbGxlY3Rpb25zIHsKKyAgc3RhdGljIDxUPiBTZXQ8VD4gZW1wdHlTZXQoKSB7fQorfQorCitjbGFzcyBCYXIgeworCisgIFNldDxTdHJpbmc+IGJhcigpIHsKKyAgICByZXR1cm4gdHJ1ZSA/IENvbGxlY3Rpb25zLmU8Y2FyZXQ+CisgIH0KKworICB2b2lkIGZvbyhTZXQ8U3RyaW5nPiBzZXQpe30KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvQ29sbGVjdGlvbnNFbXB0eVNldEluVGVybmFyeTItb3V0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvQ29sbGVjdGlvbnNFbXB0eVNldEluVGVybmFyeTItb3V0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTAwODFmYgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9Db2xsZWN0aW9uc0VtcHR5U2V0SW5UZXJuYXJ5Mi1vdXQuamF2YQpAQCAtMCwwICsxLDE0IEBACitjbGFzcyBTZXQ8VD4ge30KKworY2xhc3MgQ29sbGVjdGlvbnMgeworICBzdGF0aWMgPFQ+IFNldDxUPiBlbXB0eVNldCgpIHt9Cit9CisKK2NsYXNzIEJhciB7CisKKyAgU2V0PFN0cmluZz4gYmFyKCkgeworICAgIHJldHVybiB0cnVlID8gbnVsbCA6IENvbGxlY3Rpb25zLjxTdHJpbmc+ZW1wdHlTZXQoKTs8Y2FyZXQ+CisgIH0KKworICB2b2lkIGZvbyhTZXQ8U3RyaW5nPiBzZXQpe30KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvQ29sbGVjdGlvbnNFbXB0eVNldEluVGVybmFyeTIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9Db2xsZWN0aW9uc0VtcHR5U2V0SW5UZXJuYXJ5Mi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYwZDk0YjQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvQ29sbGVjdGlvbnNFbXB0eVNldEluVGVybmFyeTIuamF2YQpAQCAtMCwwICsxLDE0IEBACitjbGFzcyBTZXQ8VD4ge30KKworY2xhc3MgQ29sbGVjdGlvbnMgeworICBzdGF0aWMgPFQ+IFNldDxUPiBlbXB0eVNldCgpIHt9Cit9CisKK2NsYXNzIEJhciB7CisKKyAgU2V0PFN0cmluZz4gYmFyKCkgeworICAgIHJldHVybiB0cnVlID8gbnVsbCA6IENvbGxlY3Rpb25zLmU8Y2FyZXQ+CisgIH0KKworICB2b2lkIGZvbyhTZXQ8U3RyaW5nPiBzZXQpe30KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvQ29tbWFEb3VibGVQZW5ldHJhdGlvbi1vdXQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9Db21tYURvdWJsZVBlbmV0cmF0aW9uLW91dC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIzZTdmMWUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvQ29tbWFEb3VibGVQZW5ldHJhdGlvbi1vdXQuamF2YQpAQCAtMCwwICsxLDExIEBACitwdWJsaWMgYWJzdHJhY3QgY2xhc3MgWnp6IHsKKworICAgIHsKKyAgICAgICAgZm9vKGFhYWEoKSwgPGNhcmV0PikKKyAgICB9CisKKyAgICBpbnQgYWFhYSgpIHt9CisKKyAgICB2b2lkIGZvbyhpbnQgYSkge30KKyAgICB2b2lkIGZvbyhpbnQgYSwgU3RyaW5nIGIpIHt9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0NvbW1hRG91YmxlUGVuZXRyYXRpb24uamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9Db21tYURvdWJsZVBlbmV0cmF0aW9uLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDNmYTE4MAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9Db21tYURvdWJsZVBlbmV0cmF0aW9uLmphdmEKQEAgLTAsMCArMSwxMSBAQAorcHVibGljIGFic3RyYWN0IGNsYXNzIFp6eiB7CisKKyAgICB7CisgICAgICAgIGZvbyg8Y2FyZXQ+KQorICAgIH0KKworICAgIGludCBhYWFhKCkge30KKworICAgIHZvaWQgZm9vKGludCBhKSB7fQorICAgIHZvaWQgZm9vKGludCBhLCBTdHJpbmcgYikge30KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvQ29tbW9uUHJlZml4V2l0aFNlbGVjdGlvbi1vdXQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9Db21tb25QcmVmaXhXaXRoU2VsZWN0aW9uLW91dC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQzMDMyNzcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvQ29tbW9uUHJlZml4V2l0aFNlbGVjdGlvbi1vdXQuamF2YQpAQCAtMCwwICsxLDEzIEBACitpbXBvcnQgamF2YS51dGlsLio7CisKK3B1YmxpYyBjbGFzcyBGb29CYXIgeworCisgICAgeworICAgICAgICBMaXN0PFN0cmluZz4gbGFhYWFhYTsKKyAgICAgICAgTGlzdDxTdHJpbmc+IGxhYWFhYmJiYmJiOworICAgICAgICBmb3IgKFN0cmluZyBzIDogbGFhYWFhYTxjYXJldD4pIHsKKworICAgICAgICB9CisgICAgfQorCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0NvbW1vblByZWZpeFdpdGhTZWxlY3Rpb24uamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9Db21tb25QcmVmaXhXaXRoU2VsZWN0aW9uLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWQxNjliYQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9Db21tb25QcmVmaXhXaXRoU2VsZWN0aW9uLmphdmEKQEAgLTAsMCArMSwxMyBAQAoraW1wb3J0IGphdmEudXRpbC4qOworCitwdWJsaWMgY2xhc3MgRm9vQmFyIHsKKworICAgIHsKKyAgICAgICAgTGlzdDxTdHJpbmc+IGxhYWFhYWE7CisgICAgICAgIExpc3Q8U3RyaW5nPiBsYWFhYWJiYmJiYjsKKyAgICAgICAgZm9yIChTdHJpbmcgcyA6IDxzZWxlY3Rpb24+PGNhcmV0PmxhYWFhc2RhZnNkZjwvc2VsZWN0aW9uPikgeworCisgICAgICAgIH0KKyAgICB9CisKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvQ29uc3RhbnRUd2ljZS1vdXQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9Db25zdGFudFR3aWNlLW91dC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNmNzcwNTAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvQ29uc3RhbnRUd2ljZS1vdXQuamF2YQpAQCAtMCwwICsxLDExIEBACitjbGFzcyBLZXkge30KKworcHVibGljIGNsYXNzIEZvbyB7CisgIHN0YXRpYyBmaW5hbCBLZXkgRk9POworCisgIHZvaWQgZm9vKEtleSBrZXkpIHt9CisKKyAgeworICAgIGZvbyhGT08pOzxjYXJldD4KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9Db25zdGFudFR3aWNlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvQ29uc3RhbnRUd2ljZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUyZTYyZGQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvQ29uc3RhbnRUd2ljZS5qYXZhCkBAIC0wLDAgKzEsMTEgQEAKK2NsYXNzIEtleSB7fQorCitwdWJsaWMgY2xhc3MgRm9vIHsKKyAgc3RhdGljIGZpbmFsIEtleSBGT087CisKKyAgdm9pZCBmb28oS2V5IGtleSkge30KKworICB7CisgICAgZm9vKDxjYXJldD4pCisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvQ29uc3RhbnRUd2ljZTIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9Db25zdGFudFR3aWNlMi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM4ODZmMjgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvQ29uc3RhbnRUd2ljZTIuamF2YQpAQCAtMCwwICsxLDEwIEBACitpbnRlcmZhY2UgQmFyIHsKKyAgY2hhciBjOworICBjaGFyIGQ7Cit9CisKK2NsYXNzIEZvbyB7CisgIHsKKyAgICBTdHJpbmcgcyA9ICIiLnN1YnN0cmluZygiIi5sYXN0SW5kZXhPZihCYXIuPGNhcmV0PikpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0NvbnN0cnVjdG9yQXJnc1NtYXJ0RW50ZXItb3V0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvQ29uc3RydWN0b3JBcmdzU21hcnRFbnRlci1vdXQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZDI1ZjkzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0NvbnN0cnVjdG9yQXJnc1NtYXJ0RW50ZXItb3V0LmphdmEKQEAgLTAsMCArMSwxMCBAQAoraW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7CitpbXBvcnQgamF2YS51dGlsLkxpc3Q7CisKK3B1YmxpYyBjbGFzcyBNeUphdmFDbGFzcyB7CisKKyAgICB7CisKKyAgICAgICAgTGlzdCBsID0gbmV3IEFycmF5TGlzdCgyMzkpOzxjYXJldD4KKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvQ29uc3RydWN0b3JBcmdzU21hcnRFbnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0NvbnN0cnVjdG9yQXJnc1NtYXJ0RW50ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMjhjODJjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0NvbnN0cnVjdG9yQXJnc1NtYXJ0RW50ZXIuamF2YQpAQCAtMCwwICsxLDkgQEAKK2ltcG9ydCBqYXZhLnV0aWwuTGlzdDsKKworcHVibGljIGNsYXNzIE15SmF2YUNsYXNzIHsKKworICAgIHsKKworICAgICAgICBMaXN0IGwgPSBuZXcgQXJyYUw8Y2FyZXQ+MjM5CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0NvbnN0cnVjdG9yTm9QYWlyQnJhY2tldFNlbWljb2xvbi1vdXQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9Db25zdHJ1Y3Rvck5vUGFpckJyYWNrZXRTZW1pY29sb24tb3V0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjFiOWE5MgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9Db25zdHJ1Y3Rvck5vUGFpckJyYWNrZXRTZW1pY29sb24tb3V0LmphdmEKQEAgLTAsMCArMSw1IEBACitjbGFzcyBBIHsKKyAgeworICAgIFN0cmluZyBjID0gbmV3IFN0cmluZygpOzxjYXJldD4KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9Db25zdHJ1Y3Rvck5vUGFpckJyYWNrZXRTZW1pY29sb24uamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9Db25zdHJ1Y3Rvck5vUGFpckJyYWNrZXRTZW1pY29sb24uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMDVjMDIxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0NvbnN0cnVjdG9yTm9QYWlyQnJhY2tldFNlbWljb2xvbi5qYXZhCkBAIC0wLDAgKzEsNSBAQAorY2xhc3MgQSB7CisgIHsKKyAgICBTdHJpbmcgYyA9IG5ldyBTdHJpPGNhcmV0PgorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0NvbnN0cnVjdG9yT25TZXBhcmF0ZUxpbmVJbk1ldGhvZENhbGwtb3V0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvQ29uc3RydWN0b3JPblNlcGFyYXRlTGluZUluTWV0aG9kQ2FsbC1vdXQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kODU5NTk3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0NvbnN0cnVjdG9yT25TZXBhcmF0ZUxpbmVJbk1ldGhvZENhbGwtb3V0LmphdmEKQEAgLTAsMCArMSwxMCBAQAorY2xhc3MgTWFpbiB7CisgICAgcHJpdmF0ZSBzdGF0aWMgdm9pZCBtZXRob2QoSW50ZWdlciBwYXJhbSkgeworICAgIH0KKworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKKyAgICAgICAgbWV0aG9kKAorICAgICAgICAgICAgICAgIG5ldyBJbnRlZ2VyKDxjYXJldD4pCisgICAgICAgICk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9Db25zdHJ1Y3Rvck9uU2VwYXJhdGVMaW5lSW5NZXRob2RDYWxsLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvQ29uc3RydWN0b3JPblNlcGFyYXRlTGluZUluTWV0aG9kQ2FsbC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRmMTdhZWMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvQ29uc3RydWN0b3JPblNlcGFyYXRlTGluZUluTWV0aG9kQ2FsbC5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKK2NsYXNzIE1haW4geworICAgIHByaXZhdGUgc3RhdGljIHZvaWQgbWV0aG9kKEludGVnZXIgcGFyYW0pIHsKKyAgICB9CisKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CisgICAgICAgIG1ldGhvZCgKKyAgICAgICAgICAgICAgICBuZXcgPGNhcmV0PgorICAgICAgICApOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvQ29uc3RydWN0b3JXaXRoRXhpc3RpbmdQYXJlbnMtb3V0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvQ29uc3RydWN0b3JXaXRoRXhpc3RpbmdQYXJlbnMtb3V0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWRjM2JmNwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9Db25zdHJ1Y3RvcldpdGhFeGlzdGluZ1BhcmVucy1vdXQuamF2YQpAQCAtMCwwICsxLDcgQEAKK3B1YmxpYyBjbGFzcyBUZXN0U21hcnRDb21wbGV0ZSB7CisgICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgeworICAgICAgICBMb25nIHZhcjsKKworICAgICAgICB2YXIgPSBuZXcgTG9uZyg8Y2FyZXQ+KTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0NvbnN0cnVjdG9yV2l0aEV4aXN0aW5nUGFyZW5zLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvQ29uc3RydWN0b3JXaXRoRXhpc3RpbmdQYXJlbnMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNDM0OWM5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0NvbnN0cnVjdG9yV2l0aEV4aXN0aW5nUGFyZW5zLmphdmEKQEAgLTAsMCArMSw3IEBACitwdWJsaWMgY2xhc3MgVGVzdFNtYXJ0Q29tcGxldGUgeworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKKyAgICAgICAgTG9uZyB2YXI7CisKKyAgICAgICAgdmFyID0gbmV3IDxjYXJldD4oKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0RlZmF1bHRBbm5vTWV0aG9kVmFsdWUtb3V0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvRGVmYXVsdEFubm9NZXRob2RWYWx1ZS1vdXQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMTEwMjU1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0RlZmF1bHRBbm5vTWV0aG9kVmFsdWUtb3V0LmphdmEKQEAgLTAsMCArMSw4IEBACitlbnVtIE15RW51bSB7CisgIEZPTywgQkFSOworfQorCitwdWJsaWMgQGludGVyZmFjZSBGb28geworICAgIAorICAgIE15RW51bSBlbigpIGRlZmF1bHQgTXlFbnVtLkZPTzs8Y2FyZXQ+Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvRGVmYXVsdEFubm9NZXRob2RWYWx1ZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0RlZmF1bHRBbm5vTWV0aG9kVmFsdWUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NTUzYjBiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0RlZmF1bHRBbm5vTWV0aG9kVmFsdWUuamF2YQpAQCAtMCwwICsxLDggQEAKK2VudW0gTXlFbnVtIHsKKyAgRk9PLCBCQVI7Cit9CisKK3B1YmxpYyBAaW50ZXJmYWNlIEZvbyB7CisgICAgCisgICAgTXlFbnVtIGVuKCkgZGVmYXVsdCBGPGNhcmV0PgorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0RlZmF1bHRBbm5vUGFyYW0tb3V0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvRGVmYXVsdEFubm9QYXJhbS1vdXQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMjMzZGQyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0RlZmF1bHRBbm5vUGFyYW0tb3V0LmphdmEKQEAgLTAsMCArMSwxNiBAQAorQGludGVyZmFjZSBBbm5vIHsKKyAgU3RyaW5nIHZhbHVlKCk7Cit9CisKK3B1YmxpYyBjbGFzcyBGb29CYXIgeworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEZPT19CQVI7CisKKyAgICBAQW5ubyhGT09fQkFSPGNhcmV0PikKKyAgICB2b2lkIG0oKSB7fQorCisgICAgU3RyaW5nIEZvb0JhcnJycnJyKCkge30KKworICAgIHB1YmxpYyBzdGF0aWMgU3RyaW5nIEZvb0JhcnJycigpIHt9CisKKworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0RlZmF1bHRBbm5vUGFyYW0uamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9EZWZhdWx0QW5ub1BhcmFtLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjBiOGQ4YgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9EZWZhdWx0QW5ub1BhcmFtLmphdmEKQEAgLTAsMCArMSwxNiBAQAorQGludGVyZmFjZSBBbm5vIHsKKyAgU3RyaW5nIHZhbHVlKCk7Cit9CisKK3B1YmxpYyBjbGFzcyBGb29CYXIgeworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEZPT19CQVI7CisKKyAgICBAQW5ubyhGQjxjYXJldD4pCisgICAgdm9pZCBtKCkge30KKworICAgIFN0cmluZyBGb29CYXJycnJycigpIHt9CisKKyAgICBwdWJsaWMgc3RhdGljIFN0cmluZyBGb29CYXJycnIoKSB7fQorCisKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9EZWZhdWx0QW5ub1BhcmFtMi1vdXQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9EZWZhdWx0QW5ub1BhcmFtMi1vdXQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZWU3YTk5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0RlZmF1bHRBbm5vUGFyYW0yLW91dC5qYXZhCkBAIC0wLDAgKzEsMTQgQEAKK0BpbnRlcmZhY2UgQW5ubyB7CisgIFN0cmluZyB2YWx1ZSgpOworfQorCitAQW5ubyhGb29CYXIuRkVFX0JBUjxjYXJldD4pCitwdWJsaWMgY2xhc3MgRm9vQmFyIHsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBGRUVfQkFSOworCisgICAgU3RyaW5nIEZvb0JhcnJycnJyKCkge30KKworICAgIHB1YmxpYyBzdGF0aWMgU3RyaW5nIEZvb0JhcnJycigpIHt9CisKKworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0RlZmF1bHRBbm5vUGFyYW0yLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvRGVmYXVsdEFubm9QYXJhbTIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMTY3YjA4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0RlZmF1bHRBbm5vUGFyYW0yLmphdmEKQEAgLTAsMCArMSwxNCBAQAorQGludGVyZmFjZSBBbm5vIHsKKyAgU3RyaW5nIHZhbHVlKCk7Cit9CisKK0BBbm5vKEZCPGNhcmV0PikKK3B1YmxpYyBjbGFzcyBGb29CYXIgeworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEZFRV9CQVI7CisKKyAgICBTdHJpbmcgRm9vQmFycnJycnIoKSB7fQorCisgICAgcHVibGljIHN0YXRpYyBTdHJpbmcgRm9vQmFycnJyKCkge30KKworCit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvRGVsZWdhdGVNZXRob2RBcmd1bWVudHMtb3V0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvRGVsZWdhdGVNZXRob2RBcmd1bWVudHMtb3V0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDkyZjllNQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9EZWxlZ2F0ZU1ldGhvZEFyZ3VtZW50cy1vdXQuamF2YQpAQCAtMCwwICsxLDE0IEBACitwdWJsaWMgY2xhc3MgU29tZUNsYXNzIHsKKworICAgIHB1YmxpYyB2b2lkIGZvbyhpbnQgY291bnQpIHt9CisgICAgcHVibGljIHN0YXRpYyBPYmplY3QgZm9vKGludCBjb3VudCwgU3RyaW5nIGRlc2NyKSB7CisKKyAgICB9CisKK30KKworY2xhc3MgU29tZUNsYXNzSW1wbCB7CisgICAgcHVibGljIE9iamVjdCBmb28oaW50IGNvdW50LCBTdHJpbmcgZGVzY3JpcHRpb24pIHsKKyAgICAgICAgU29tZUNsYXNzLmZvbyhjb3VudCwgZGVzY3JpcHRpb24pPGNhcmV0PjsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvRGVsZWdhdGVNZXRob2RBcmd1bWVudHMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9EZWxlZ2F0ZU1ldGhvZEFyZ3VtZW50cy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRmYTIxZTAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvRGVsZWdhdGVNZXRob2RBcmd1bWVudHMuamF2YQpAQCAtMCwwICsxLDE0IEBACitwdWJsaWMgY2xhc3MgU29tZUNsYXNzIHsKKworICAgIHB1YmxpYyB2b2lkIGZvbyhpbnQgY291bnQpIHt9CisgICAgcHVibGljIHN0YXRpYyBPYmplY3QgZm9vKGludCBjb3VudCwgU3RyaW5nIGRlc2NyKSB7CisKKyAgICB9CisKK30KKworY2xhc3MgU29tZUNsYXNzSW1wbCB7CisgICAgcHVibGljIE9iamVjdCBmb28oaW50IGNvdW50LCBTdHJpbmcgZGVzY3JpcHRpb24pIHsKKyAgICAgICAgU29tZUNsYXNzLmZvbyg8Y2FyZXQ+KTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvRGVsZWdhdGlvblRvUGFyZW50LW91dC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0RlbGVnYXRpb25Ub1BhcmVudC1vdXQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMzY0ODIyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0RlbGVnYXRpb25Ub1BhcmVudC1vdXQuamF2YQpAQCAtMCwwICsxLDE1IEBACitjbGFzcyBFeHRlbnNpb25Qb2ludE5hbWU8VD4geworICAgIHB1YmxpYyBzdGF0aWMgPFQ+IEV4dGVuc2lvblBvaW50TmFtZTxUPiBjcmVhdGUoU3RyaW5nIHMpIHsgcmV0dXJuIG51bGw7IH0KK30KKworY2xhc3MgRm9vPEI+IHsKKyAgICBwdWJsaWMgc3RhdGljIDxUPiBUW10gZ2V0RXh0ZW5zaW9ucyhFeHRlbnNpb25Qb2ludE5hbWU8VD4gZXh0ZW5zaW9uUG9pbnROYW1lKSB7CisgICAgICByZXR1cm4gbnVsbDsKKyAgICB9CisKKyAgICBFeHRlbnNpb25Qb2ludE5hbWU8Qj4gRVhURU5TSU9OX1BPSU5UX05BTUUgPSBFeHRlbnNpb25Qb2ludE5hbWUuY3JlYXRlKCJjb20uaW50ZWxsaWouZmlsZUJhc2VkSW5kZXgiKTsKKworICAgIHZvaWQgZigpIHsKKyAgICAgICAgZmluYWwgQltdIGV4dGVuc2lvbnMgPSBnZXRFeHRlbnNpb25zKEVYVEVOU0lPTl9QT0lOVF9OQU1FKTxjYXJldD47CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0RlbGVnYXRpb25Ub1BhcmVudC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0RlbGVnYXRpb25Ub1BhcmVudC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYzNWU3YTQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvRGVsZWdhdGlvblRvUGFyZW50LmphdmEKQEAgLTAsMCArMSwxNSBAQAorY2xhc3MgRXh0ZW5zaW9uUG9pbnROYW1lPFQ+IHsKKyAgICBwdWJsaWMgc3RhdGljIDxUPiBFeHRlbnNpb25Qb2ludE5hbWU8VD4gY3JlYXRlKFN0cmluZyBzKSB7IHJldHVybiBudWxsOyB9Cit9CisKK2NsYXNzIEZvbzxCPiB7CisgICAgcHVibGljIHN0YXRpYyA8VD4gVFtdIGdldEV4dGVuc2lvbnMoRXh0ZW5zaW9uUG9pbnROYW1lPFQ+IGV4dGVuc2lvblBvaW50TmFtZSkgeworICAgICAgcmV0dXJuIG51bGw7CisgICAgfQorCisgICAgRXh0ZW5zaW9uUG9pbnROYW1lPEI+IEVYVEVOU0lPTl9QT0lOVF9OQU1FID0gRXh0ZW5zaW9uUG9pbnROYW1lLmNyZWF0ZSgiY29tLmludGVsbGlqLmZpbGVCYXNlZEluZGV4Iik7CisKKyAgICB2b2lkIGYoKSB7CisgICAgICAgIGZpbmFsIEJbXSBleHRlbnNpb25zID0gZ2V0RXh0ZW5zaW9ucyg8Y2FyZXQ+WFhYLkVYVEVOU0lPTl9QT0lOVF9OQU1FKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvRGlhbW9uZENvbGxhcHNlZC1vdXQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9EaWFtb25kQ29sbGFwc2VkLW91dC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjllNTk0NzcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvRGlhbW9uZENvbGxhcHNlZC1vdXQuamF2YQpAQCAtMCwwICsxLDggQEAKK2NsYXNzIE15Q2xhc3MgeworICBwdWJsaWMgdm9pZCBmb28oKSB7CisgICAgTXlERDxTdHJpbmc+IGQgPSBuZXcgTXlERDw+KCk7PGNhcmV0PgorICB9Cit9CisKK2NsYXNzIE15REQ8VD4geworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9EaWFtb25kQ29sbGFwc2VkLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvRGlhbW9uZENvbGxhcHNlZC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlmZjFiNGEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvRGlhbW9uZENvbGxhcHNlZC5qYXZhCkBAIC0wLDAgKzEsOCBAQAorY2xhc3MgTXlDbGFzcyB7CisgIHB1YmxpYyB2b2lkIGZvbygpIHsKKyAgICBNeUREPFN0cmluZz4gZCA9IG5ldyBNeUQ8Y2FyZXQ+CisgIH0KK30KKworY2xhc3MgTXlERDxUPiB7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0RpYW1vbmROb3RDb2xsYXBzZWQtb3V0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvRGlhbW9uZE5vdENvbGxhcHNlZC1vdXQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMGUwYWM1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0RpYW1vbmROb3RDb2xsYXBzZWQtb3V0LmphdmEKQEAgLTAsMCArMSw5IEBACitjbGFzcyBNeUNsYXNzIHsKKyAgcHVibGljIHZvaWQgZm9vKCkgeworICAgIE15REQ8U3RyaW5nPiBkID0gbmV3IE15REQ8U3RyaW5nPig8Y2FyZXQ+KTsKKyAgfQorfQorCitjbGFzcyBNeUREPFQ+IHsKKyAgTXlERChUIHQpe30KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvRGlhbW9uZE5vdENvbGxhcHNlZC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0RpYW1vbmROb3RDb2xsYXBzZWQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMjY3OTE1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0RpYW1vbmROb3RDb2xsYXBzZWQuamF2YQpAQCAtMCwwICsxLDkgQEAKK2NsYXNzIE15Q2xhc3MgeworICBwdWJsaWMgdm9pZCBmb28oKSB7CisgICAgTXlERDxTdHJpbmc+IGQgPSBuZXcgTXlEPGNhcmV0PgorICB9Cit9CisKK2NsYXNzIE15REQ8VD4geworICBNeUREKFQgdCl7fQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9EaWFtb25kTm90Q29sbGFwc2VkSW5DYXNlT2ZBbm9ueW1vdXNDbGFzc2VzLW91dC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0RpYW1vbmROb3RDb2xsYXBzZWRJbkNhc2VPZkFub255bW91c0NsYXNzZXMtb3V0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGIyZDllNwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9EaWFtb25kTm90Q29sbGFwc2VkSW5DYXNlT2ZBbm9ueW1vdXNDbGFzc2VzLW91dC5qYXZhCkBAIC0wLDAgKzEsMzMgQEAKK2NsYXNzIE15Q2xhc3MgeworICBwdWJsaWMgdm9pZCBmb28oKSB7CisgICAgTXlERDxTdHJpbmc+IGQgPSBuZXcgTXlERDxTdHJpbmc+KCkgeworICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHVibGljIGludCBoYXNoQ29kZSgpIHsKKyAgICAgICAgICAgIDxzZWxlY3Rpb24+cmV0dXJuIHN1cGVyLmhhc2hDb2RlKCk7ICAgIC8vVG8gY2hhbmdlIGJvZHkgb2Ygb3ZlcnJpZGRlbiBtZXRob2RzIHVzZSBGaWxlIHwgU2V0dGluZ3MgfCBGaWxlIFRlbXBsYXRlcy48L3NlbGVjdGlvbj4KKyAgICAgICAgfQorCisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgYm9vbGVhbiBlcXVhbHMoT2JqZWN0IG9iaikgeworICAgICAgICAgICAgcmV0dXJuIHN1cGVyLmVxdWFscyhvYmopOyAgICAvL1RvIGNoYW5nZSBib2R5IG9mIG92ZXJyaWRkZW4gbWV0aG9kcyB1c2UgRmlsZSB8IFNldHRpbmdzIHwgRmlsZSBUZW1wbGF0ZXMuCisgICAgICAgIH0KKworICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHJvdGVjdGVkIE9iamVjdCBjbG9uZSgpIHRocm93cyBDbG9uZU5vdFN1cHBvcnRlZEV4Y2VwdGlvbiB7CisgICAgICAgICAgICByZXR1cm4gc3VwZXIuY2xvbmUoKTsgICAgLy9UbyBjaGFuZ2UgYm9keSBvZiBvdmVycmlkZGVuIG1ldGhvZHMgdXNlIEZpbGUgfCBTZXR0aW5ncyB8IEZpbGUgVGVtcGxhdGVzLgorICAgICAgICB9CisKKyAgICAgICAgQE92ZXJyaWRlCisgICAgICAgIHB1YmxpYyBTdHJpbmcgdG9TdHJpbmcoKSB7CisgICAgICAgICAgICByZXR1cm4gc3VwZXIudG9TdHJpbmcoKTsgICAgLy9UbyBjaGFuZ2UgYm9keSBvZiBvdmVycmlkZGVuIG1ldGhvZHMgdXNlIEZpbGUgfCBTZXR0aW5ncyB8IEZpbGUgVGVtcGxhdGVzLgorICAgICAgICB9CisKKyAgICAgICAgQE92ZXJyaWRlCisgICAgICAgIHByb3RlY3RlZCB2b2lkIGZpbmFsaXplKCkgdGhyb3dzIFRocm93YWJsZSB7CisgICAgICAgICAgICBzdXBlci5maW5hbGl6ZSgpOyAgICAvL1RvIGNoYW5nZSBib2R5IG9mIG92ZXJyaWRkZW4gbWV0aG9kcyB1c2UgRmlsZSB8IFNldHRpbmdzIHwgRmlsZSBUZW1wbGF0ZXMuCisgICAgICAgIH0KKyAgICB9OworICB9Cit9CisKK2Fic3RyYWN0IGNsYXNzIE15REQ8VD4geworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9EaWFtb25kTm90Q29sbGFwc2VkSW5DYXNlT2ZBbm9ueW1vdXNDbGFzc2VzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvRGlhbW9uZE5vdENvbGxhcHNlZEluQ2FzZU9mQW5vbnltb3VzQ2xhc3Nlcy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU0NmM1OWMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvRGlhbW9uZE5vdENvbGxhcHNlZEluQ2FzZU9mQW5vbnltb3VzQ2xhc3Nlcy5qYXZhCkBAIC0wLDAgKzEsOCBAQAorY2xhc3MgTXlDbGFzcyB7CisgIHB1YmxpYyB2b2lkIGZvbygpIHsKKyAgICBNeUREPFN0cmluZz4gZCA9IG5ldyBNeUQ8Y2FyZXQ+CisgIH0KK30KKworYWJzdHJhY3QgY2xhc3MgTXlERDxUPiB7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0RpYW1vbmROb3RDb2xsYXBzZWRJbkNhc2VPZkluYXBwbGljYWJsZUluZmVyZW5jZS1vdXQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9EaWFtb25kTm90Q29sbGFwc2VkSW5DYXNlT2ZJbmFwcGxpY2FibGVJbmZlcmVuY2Utb3V0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTY1ODA2MAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9EaWFtb25kTm90Q29sbGFwc2VkSW5DYXNlT2ZJbmFwcGxpY2FibGVJbmZlcmVuY2Utb3V0LmphdmEKQEAgLTAsMCArMSwxMiBAQAoraW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7CisKK3B1YmxpYyBjbGFzcyBDb21wbGV0aW9uV2l0aFBhc3NUb01ldGhvZCB7CisKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CisgICAgICAgIGZvbyhuZXcgQXJyYXlMaXN0PFN0cmluZz4oKSk7CisgICAgfQorCisKKyAgICBzdGF0aWMgdm9pZCBmb28oQXJyYXlMaXN0PFN0cmluZz4gbGwpIHsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvRGlhbW9uZE5vdENvbGxhcHNlZEluQ2FzZU9mSW5hcHBsaWNhYmxlSW5mZXJlbmNlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvRGlhbW9uZE5vdENvbGxhcHNlZEluQ2FzZU9mSW5hcHBsaWNhYmxlSW5mZXJlbmNlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDY2NWY3YQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9EaWFtb25kTm90Q29sbGFwc2VkSW5DYXNlT2ZJbmFwcGxpY2FibGVJbmZlcmVuY2UuamF2YQpAQCAtMCwwICsxLDEyIEBACitpbXBvcnQgamF2YS51dGlsLkFycmF5TGlzdDsKKworcHVibGljIGNsYXNzIENvbXBsZXRpb25XaXRoUGFzc1RvTWV0aG9kIHsKKworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKKyAgICAgICAgZm9vKG5ldyBBcnJheUw8Y2FyZXQ+KTsKKyAgICB9CisKKworICAgIHN0YXRpYyB2b2lkIGZvbyhBcnJheUxpc3Q8U3RyaW5nPiBsbCkgeworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9EaWFtb25kTm90Q29sbGFwc2VkTm90QXBwbGljYWJsZS1vdXQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9EaWFtb25kTm90Q29sbGFwc2VkTm90QXBwbGljYWJsZS1vdXQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MThmZDMzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0RpYW1vbmROb3RDb2xsYXBzZWROb3RBcHBsaWNhYmxlLW91dC5qYXZhCkBAIC0wLDAgKzEsMTUgQEAKK2ltcG9ydCBqYXZhLnV0aWwuQXJyYXlMaXN0OworCitwdWJsaWMgY2xhc3MgVGVzdENvbXBsZXRpb24geworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCB0ZXN0KCkgeworICAgICAgICBBPEFycmF5TGlzdDxTdHJpbmc+PiByZWYgPSBuZXcgQTw+KCk7CisgICAgICAgIHJlZi5zZXQobmV3IEFycmF5TGlzdDxTdHJpbmc+KDxjYXJldD4pICk7CisgICAgfQorfQorCitjbGFzcyBBPFY+IHsKKyAgICBBKCkgeworICAgIH0KKworICAgIHZvaWQgc2V0KFYgdil7fQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9EaWFtb25kTm90Q29sbGFwc2VkTm90QXBwbGljYWJsZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0RpYW1vbmROb3RDb2xsYXBzZWROb3RBcHBsaWNhYmxlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2Q3OWEzMwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9EaWFtb25kTm90Q29sbGFwc2VkTm90QXBwbGljYWJsZS5qYXZhCkBAIC0wLDAgKzEsMTUgQEAKK2ltcG9ydCBqYXZhLnV0aWwuQXJyYXlMaXN0OworCitwdWJsaWMgY2xhc3MgVGVzdENvbXBsZXRpb24geworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCB0ZXN0KCkgeworICAgICAgICBBPEFycmF5TGlzdDxTdHJpbmc+PiByZWYgPSBuZXcgQTw+KCk7CisgICAgICAgIHJlZi5zZXQobmV3IDxjYXJldD4gKTsKKyAgICB9Cit9CisKK2NsYXNzIEE8Vj4geworICAgIEEoKSB7CisgICAgfQorCisgICAgdm9pZCBzZXQoViB2KXt9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0RpYW1vbmRQcmVzZW50YXRpb24uamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9EaWFtb25kUHJlc2VudGF0aW9uLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGRkZTY0NwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9EaWFtb25kUHJlc2VudGF0aW9uLmphdmEKQEAgLTAsMCArMSw4IEBACitjbGFzcyBNeUNsYXNzIHsKKyAgcHVibGljIHZvaWQgZm9vKCkgeworICAgIE15REQ8U3RyaW5nPiBkID0gbmV3IE15RDxjYXJldD54CisgIH0KK30KKworY2xhc3MgTXlERDxUPiB7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0RvTm90RXhjbHVkZUFzc2lnbmVkVmFyaWFibGUtb3V0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvRG9Ob3RFeGNsdWRlQXNzaWduZWRWYXJpYWJsZS1vdXQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wOGQyOWMwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0RvTm90RXhjbHVkZUFzc2lnbmVkVmFyaWFibGUtb3V0LmphdmEKQEAgLTAsMCArMSwxMSBAQAorY2xhc3MgRm9vIHsKKyAgRm9vIG15Rm9vOworCisgIEZvbyBmb28oRm9vIGZvbykgeworICB9CisKKyAgeworICAgIG15Rm9vID0gZm9vKG15Rm9vKTxjYXJldD4KKyAgfQorCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0RvTm90RXhjbHVkZUFzc2lnbmVkVmFyaWFibGUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9Eb05vdEV4Y2x1ZGVBc3NpZ25lZFZhcmlhYmxlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTU4YzcyYQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9Eb05vdEV4Y2x1ZGVBc3NpZ25lZFZhcmlhYmxlLmphdmEKQEAgLTAsMCArMSwxMSBAQAorY2xhc3MgRm9vIHsKKyAgRm9vIG15Rm9vOworCisgIEZvbyBmb28oRm9vIGZvbykgeworICB9CisKKyAgeworICAgIG15Rm9vID0gZm9vKG08Y2FyZXQ+KQorICB9CisKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvRG9udEF1dG9DYXN0V2hlbkFscmVhZHlDYXN0ZWQtb3V0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvRG9udEF1dG9DYXN0V2hlbkFscmVhZHlDYXN0ZWQtb3V0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTNlY2UyZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9Eb250QXV0b0Nhc3RXaGVuQWxyZWFkeUNhc3RlZC1vdXQuamF2YQpAQCAtMCwwICsxLDkgQEAKK2NsYXNzIEIgeworICB7CisgICAgICBPYmplY3QgbzsKKyAgICAgIGlmIChvIGluc3RhbmNlb2YgU3RyaW5nKSB7CisgICAgICAgICAgU3RyaW5nIHMgPSAoU3RyaW5nKSBvOworICAgICAgICAgIFN0cmluZyBzcyA9IHM7CisgICAgICB9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvRG9udEF1dG9DYXN0V2hlbkFscmVhZHlDYXN0ZWQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9Eb250QXV0b0Nhc3RXaGVuQWxyZWFkeUNhc3RlZC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhkZjE5ZTkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvRG9udEF1dG9DYXN0V2hlbkFscmVhZHlDYXN0ZWQuamF2YQpAQCAtMCwwICsxLDkgQEAKK2NsYXNzIEIgeworICB7CisgICAgICBPYmplY3QgbzsKKyAgICAgIGlmIChvIGluc3RhbmNlb2YgU3RyaW5nKSB7CisgICAgICAgICAgU3RyaW5nIHMgPSAoU3RyaW5nKSBvOworICAgICAgICAgIFN0cmluZyBzcyA9IDxjYXJldD4KKyAgICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9Eb3VibGVFbXB0eUFycmF5LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvRG91YmxlRW1wdHlBcnJheS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEzYzc4NGIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvRG91YmxlRW1wdHlBcnJheS5qYXZhCkBAIC0wLDAgKzEsMTIgQEAKK2NsYXNzIEZvbyB7CisgIHB1YmxpYyBzdGF0aWMgZmluYWwgRm9vW10gRU1QVFkgPSBuZXcgRm9vWzBdOworfQorCitjbGFzcyBCYXIgeworCisgIEZvb1tdIGJhcigpIHt9CisKKyAgRm9vW10gZm9vKCkgeworICAgIHJldHVybiA8Y2FyZXQ+OworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0RvdWJsZVNlbWljb2xvblBlbmV0cmF0aW9uLW91dC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0RvdWJsZVNlbWljb2xvblBlbmV0cmF0aW9uLW91dC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM4ZmFlZjEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvRG91YmxlU2VtaWNvbG9uUGVuZXRyYXRpb24tb3V0LmphdmEKQEAgLTAsMCArMSwxMSBAQAorcHVibGljIGNsYXNzIEZvbyB7CisKKyAgICB2b2lkIGJhcigpIHsKKyAgICAgIHRoaXMuZm9vKCk7PGNhcmV0PgorICAgIH0KKworICAgIHZvaWQgZm9vKCkgeworCisgICAgfQorCit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvRG91YmxlU2VtaWNvbG9uUGVuZXRyYXRpb24uamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9Eb3VibGVTZW1pY29sb25QZW5ldHJhdGlvbi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBmOGUxMjAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvRG91YmxlU2VtaWNvbG9uUGVuZXRyYXRpb24uamF2YQpAQCAtMCwwICsxLDExIEBACitwdWJsaWMgY2xhc3MgRm9vIHsKKworICAgIHZvaWQgYmFyKCkgeworICAgICAgdGhpcy5mbzxjYXJldD4KKyAgICB9CisKKyAgICB2b2lkIGZvbygpIHsKKworICAgIH0KKworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0RvdWJsZVRoaXMtb3V0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvRG91YmxlVGhpcy1vdXQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZWY0YWRmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0RvdWJsZVRoaXMtb3V0LmphdmEKQEAgLTAsMCArMSwxMSBAQAoraW50ZXJmYWNlIEFhYSB7fQoraW50ZXJmYWNlIEJiYiB7fQorCitjbGFzcyBDY2MgaW1wbGVtZW50cyBBYWEsIEJiYiB7CisgICAgdm9pZCBmb28oQWFhIGEpOworICAgIHZvaWQgZm9vKEJiYiBiKTsKKworICAgIHsKKyAgICAgICAgZm9vKHRoaXMpOzxjYXJldD4KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0RvdWJsZVRoaXMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9Eb3VibGVUaGlzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTQyZTZiZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9Eb3VibGVUaGlzLmphdmEKQEAgLTAsMCArMSwxMSBAQAoraW50ZXJmYWNlIEFhYSB7fQoraW50ZXJmYWNlIEJiYiB7fQorCitjbGFzcyBDY2MgaW1wbGVtZW50cyBBYWEsIEJiYiB7CisgICAgdm9pZCBmb28oQWFhIGEpOworICAgIHZvaWQgZm9vKEJiYiBiKTsKKworICAgIHsKKyAgICAgICAgZm9vKDxjYXJldD4pCisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9Eb3VibGVUcnVlSW5PdmVybG9hZGVkTWV0aG9kQ2FsbC1vdXQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9Eb3VibGVUcnVlSW5PdmVybG9hZGVkTWV0aG9kQ2FsbC1vdXQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYjNkMzE2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0RvdWJsZVRydWVJbk92ZXJsb2FkZWRNZXRob2RDYWxsLW91dC5qYXZhCkBAIC0wLDAgKzEsOCBAQAorY2xhc3MgQ2xpZW50IHsKKyAgICB7CisgICAgICAgIGZvbyh0cnVlKTs8Y2FyZXQ+CisgICAgfQorCisgICAgdm9pZCBmb28oT2JqZWN0IG8pIHt9CisgICAgdm9pZCBmb28oYm9vbGVhbiBvKSB7fQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9Eb3VibGVUcnVlSW5PdmVybG9hZGVkTWV0aG9kQ2FsbC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0RvdWJsZVRydWVJbk92ZXJsb2FkZWRNZXRob2RDYWxsLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGU4MTNiNQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9Eb3VibGVUcnVlSW5PdmVybG9hZGVkTWV0aG9kQ2FsbC5qYXZhCkBAIC0wLDAgKzEsOCBAQAorY2xhc3MgQ2xpZW50IHsKKyAgICB7CisgICAgICAgIGZvbyh0cjxjYXJldD4pCisgICAgfQorCisgICAgdm9pZCBmb28oT2JqZWN0IG8pIHt9CisgICAgdm9pZCBmb28oYm9vbGVhbiBvKSB7fQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9EdXBsaWNhdGVNZW1iZXJzRnJvbVN1cGVyQ2xhc3Mtb3V0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvRHVwbGljYXRlTWVtYmVyc0Zyb21TdXBlckNsYXNzLW91dC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE1ZDc4MWIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvRHVwbGljYXRlTWVtYmVyc0Zyb21TdXBlckNsYXNzLW91dC5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKK2NsYXNzIFN1cGVyIHsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN1cGVyIEZPTyA9IG51bGw7Cit9CisKK2NsYXNzIEludGVybWVkaWF0ZSBleHRlbmRzIFN1cGVyIHsKKworICAgIFN1cGVyIHMgPSBGT087PGNhcmV0PgorfQorCisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9EdXBsaWNhdGVNZW1iZXJzRnJvbVN1cGVyQ2xhc3MuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9EdXBsaWNhdGVNZW1iZXJzRnJvbVN1cGVyQ2xhc3MuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NWYzOGRkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0R1cGxpY2F0ZU1lbWJlcnNGcm9tU3VwZXJDbGFzcy5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKK2NsYXNzIFN1cGVyIHsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN1cGVyIEZPTyA9IG51bGw7Cit9CisKK2NsYXNzIEludGVybWVkaWF0ZSBleHRlbmRzIFN1cGVyIHsKKworICAgIFN1cGVyIHMgPSBGPGNhcmV0PgorfQorCisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9EdXBsaWNhdGVNZW1iZXJzRnJvbVN1cGVyQ2xhc3NJbkFub3RoZXJGaWxlLW91dC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0R1cGxpY2F0ZU1lbWJlcnNGcm9tU3VwZXJDbGFzc0luQW5vdGhlckZpbGUtb3V0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2VhOWYzYwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9EdXBsaWNhdGVNZW1iZXJzRnJvbVN1cGVyQ2xhc3NJbkFub3RoZXJGaWxlLW91dC5qYXZhCkBAIC0wLDAgKzEsNSBAQAorY2xhc3MgSW50ZXJtZWRpYXRlIGV4dGVuZHMgU3VwZXIgeworICAgIFN1cGVyIHMgPSBGT087PGNhcmV0PgorfQorCisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9EdXBsaWNhdGVNZW1iZXJzRnJvbVN1cGVyQ2xhc3NJbkFub3RoZXJGaWxlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvRHVwbGljYXRlTWVtYmVyc0Zyb21TdXBlckNsYXNzSW5Bbm90aGVyRmlsZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE5M2MyNWYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvRHVwbGljYXRlTWVtYmVyc0Zyb21TdXBlckNsYXNzSW5Bbm90aGVyRmlsZS5qYXZhCkBAIC0wLDAgKzEsNSBAQAorY2xhc3MgSW50ZXJtZWRpYXRlIGV4dGVuZHMgU3VwZXIgeworICAgIFN1cGVyIHMgPSBGPGNhcmV0PgorfQorCisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9FbXB0eUxpc3RCZWZvcmVTZW1pY29sb24tb3V0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvRW1wdHlMaXN0QmVmb3JlU2VtaWNvbG9uLW91dC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE5N2I4ZDEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvRW1wdHlMaXN0QmVmb3JlU2VtaWNvbG9uLW91dC5qYXZhCkBAIC0wLDAgKzEsNyBAQAoraW1wb3J0IGphdmEudXRpbC5Db2xsZWN0aW9uczsKKworY2xhc3MgRm9vIHsKKyAgamF2YS51dGlsLkxpc3Q8U3RyaW5nPiBmb28oKSB7CisgICAgcmV0dXJuIENvbGxlY3Rpb25zLmVtcHR5TGlzdCgpOzxjYXJldD4KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9FbXB0eUxpc3RCZWZvcmVTZW1pY29sb24uamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9FbXB0eUxpc3RCZWZvcmVTZW1pY29sb24uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYTFhNTYzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0VtcHR5TGlzdEJlZm9yZVNlbWljb2xvbi5qYXZhCkBAIC0wLDAgKzEsNSBAQAorY2xhc3MgRm9vIHsKKyAgamF2YS51dGlsLkxpc3Q8U3RyaW5nPiBmb28oKSB7CisgICAgcmV0dXJuIGVtPGNhcmV0PjsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9FbXB0eUxpc3RJblJldHVybi1vdXQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9FbXB0eUxpc3RJblJldHVybi1vdXQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xOTdiOGQxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0VtcHR5TGlzdEluUmV0dXJuLW91dC5qYXZhCkBAIC0wLDAgKzEsNyBAQAoraW1wb3J0IGphdmEudXRpbC5Db2xsZWN0aW9uczsKKworY2xhc3MgRm9vIHsKKyAgamF2YS51dGlsLkxpc3Q8U3RyaW5nPiBmb28oKSB7CisgICAgcmV0dXJuIENvbGxlY3Rpb25zLmVtcHR5TGlzdCgpOzxjYXJldD4KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9FbXB0eUxpc3RJblJldHVybi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0VtcHR5TGlzdEluUmV0dXJuLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmU2ZTU3OQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9FbXB0eUxpc3RJblJldHVybi5qYXZhCkBAIC0wLDAgKzEsNSBAQAorY2xhc3MgRm9vIHsKKyAgamF2YS51dGlsLkxpc3Q8U3RyaW5nPiBmb28oKSB7CisgICAgcmV0dXJuIDxjYXJldD4KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9FbXB0eUxpc3RJblJldHVybjItb3V0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvRW1wdHlMaXN0SW5SZXR1cm4yLW91dC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNlMTI5ZmUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvRW1wdHlMaXN0SW5SZXR1cm4yLW91dC5qYXZhCkBAIC0wLDAgKzEsNSBAQAorY2xhc3MgRm9vIHsKKyAgamF2YS51dGlsLkxpc3Q8U3RyaW5nPiBmb28oKSB7CisgICAgcmV0dXJuIGphdmEudXRpbC5Db2xsZWN0aW9ucy5lbXB0eUxpc3QoKTs8Y2FyZXQ+CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvRW1wdHlMaXN0SW5SZXR1cm4yLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvRW1wdHlMaXN0SW5SZXR1cm4yLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2I1ZGVkNgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9FbXB0eUxpc3RJblJldHVybjIuamF2YQpAQCAtMCwwICsxLDUgQEAKK2NsYXNzIEZvbyB7CisgIGphdmEudXRpbC5MaXN0PFN0cmluZz4gZm9vKCkgeworICAgIHJldHVybiBqYXZhLnV0aWwuQ29sbGVjdGlvbnMuZW08Y2FyZXQ+CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvRW1wdHlMaXN0SW5SZXR1cm5UZXJuYXJ5LW91dC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0VtcHR5TGlzdEluUmV0dXJuVGVybmFyeS1vdXQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iOWQxMDQ1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0VtcHR5TGlzdEluUmV0dXJuVGVybmFyeS1vdXQuamF2YQpAQCAtMCwwICsxLDcgQEAKK2ltcG9ydCBqYXZhLnV0aWwuQ29sbGVjdGlvbnM7CisKK2NsYXNzIEZvbyB7CisgIGphdmEudXRpbC5TZXQ8U3RyaW5nPiBmb28oKSB7CisgICAgcmV0dXJuIHRydWUgPyBDb2xsZWN0aW9ucy48U3RyaW5nPmVtcHR5U2V0KCkgOiA8Y2FyZXQ+CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvRW1wdHlMaXN0SW5SZXR1cm5UZXJuYXJ5LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvRW1wdHlMaXN0SW5SZXR1cm5UZXJuYXJ5LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGEzMDM2NQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9FbXB0eUxpc3RJblJldHVyblRlcm5hcnkuamF2YQpAQCAtMCwwICsxLDUgQEAKK2NsYXNzIEZvbyB7CisgIGphdmEudXRpbC5TZXQ8U3RyaW5nPiBmb28oKSB7CisgICAgcmV0dXJuIHRydWUgPyBlbTxjYXJldD4KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9FbXB0eUxpc3RXaXRoQ29sbGVjdGlvbnNQcmVmaXgtb3V0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvRW1wdHlMaXN0V2l0aENvbGxlY3Rpb25zUHJlZml4LW91dC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE5N2I4ZDEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvRW1wdHlMaXN0V2l0aENvbGxlY3Rpb25zUHJlZml4LW91dC5qYXZhCkBAIC0wLDAgKzEsNyBAQAoraW1wb3J0IGphdmEudXRpbC5Db2xsZWN0aW9uczsKKworY2xhc3MgRm9vIHsKKyAgamF2YS51dGlsLkxpc3Q8U3RyaW5nPiBmb28oKSB7CisgICAgcmV0dXJuIENvbGxlY3Rpb25zLmVtcHR5TGlzdCgpOzxjYXJldD4KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9FbXB0eUxpc3RXaXRoQ29sbGVjdGlvbnNQcmVmaXguamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9FbXB0eUxpc3RXaXRoQ29sbGVjdGlvbnNQcmVmaXguamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNzdhZThmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0VtcHR5TGlzdFdpdGhDb2xsZWN0aW9uc1ByZWZpeC5qYXZhCkBAIC0wLDAgKzEsNSBAQAorY2xhc3MgRm9vIHsKKyAgamF2YS51dGlsLkxpc3Q8U3RyaW5nPiBmb28oKSB7CisgICAgcmV0dXJuIENvbGxlY3Q8Y2FyZXQ+OworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0VudW1Bc0RlZmF1bHRBbm5vdGF0aW9uUGFyYW0tb3V0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvRW51bUFzRGVmYXVsdEFubm90YXRpb25QYXJhbS1vdXQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZmExMTUyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0VudW1Bc0RlZmF1bHRBbm5vdGF0aW9uUGFyYW0tb3V0LmphdmEKQEAgLTAsMCArMSwxMiBAQAorZW51bSBNeUVudW0geworICBGT08sIEJBUgorfQorCitAaW50ZXJmYWNlIEFubm8geworICBNeUVudW0gdmFsdWUoKTsKK30KKworCitAQW5ubyhNeUVudW0uRk9PPGNhcmV0PikKK2NsYXNzIEZvbyB7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0VudW1Bc0RlZmF1bHRBbm5vdGF0aW9uUGFyYW0uamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9FbnVtQXNEZWZhdWx0QW5ub3RhdGlvblBhcmFtLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTQzNjRmNQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9FbnVtQXNEZWZhdWx0QW5ub3RhdGlvblBhcmFtLmphdmEKQEAgLTAsMCArMSwxMiBAQAorZW51bSBNeUVudW0geworICBGT08sIEJBUgorfQorCitAaW50ZXJmYWNlIEFubm8geworICBNeUVudW0gdmFsdWUoKTsKK30KKworCitAQW5ubyhNeUVudW0uRjxjYXJldD4pCitjbGFzcyBGb28geworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9FbnVtQ29uc3RJblN3aXRjaC1vdXQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9FbnVtQ29uc3RJblN3aXRjaC1vdXQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZTM4M2JjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0VudW1Db25zdEluU3dpdGNoLW91dC5qYXZhCkBAIC0wLDAgKzEsOSBAQAorZW51bSBFIHsKKyAgQ09OUzsKKyAgCisgIHZvaWQgZm9vIChFIGUpIHsKKyAgICBzd2l0Y2ggKGUpIHsKKyAgICAgIGNhc2UgQ09OUzo8Y2FyZXQ+CisgICAgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0VudW1Db25zdEluU3dpdGNoLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvRW51bUNvbnN0SW5Td2l0Y2guamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMDkxNmZmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0VudW1Db25zdEluU3dpdGNoLmphdmEKQEAgLTAsMCArMSw5IEBACitlbnVtIEUgeworICBDT05TOworICAKKyAgdm9pZCBmb28gKEUgZSkgeworICAgIHN3aXRjaCAoZSkgeworICAgICAgY2FzZSA8Y2FyZXQ+CisgICAgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0VudW1Db25zdEluU3dpdGNoT3V0c2lkZS1vdXQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9FbnVtQ29uc3RJblN3aXRjaE91dHNpZGUtb3V0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmIwOTVkMgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9FbnVtQ29uc3RJblN3aXRjaE91dHNpZGUtb3V0LmphdmEKQEAgLTAsMCArMSwxMSBAQAorZW51bSBFIHsKKyAgQ09OUworfQorCitjbGFzcyBGb28geworICAgIHZvaWQgZm9vIChFIGUpIHsKKyAgICBzd2l0Y2ggKGUpIHsKKyAgICAgIGNhc2UgQ09OUzo8Y2FyZXQ+CisgICAgfQorICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvRW51bUNvbnN0SW5Td2l0Y2hPdXRzaWRlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvRW51bUNvbnN0SW5Td2l0Y2hPdXRzaWRlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTRkZGYyZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9FbnVtQ29uc3RJblN3aXRjaE91dHNpZGUuamF2YQpAQCAtMCwwICsxLDExIEBACitlbnVtIEUgeworICBDT05TCit9CisKK2NsYXNzIEZvbyB7CisgICAgdm9pZCBmb28gKEUgZSkgeworICAgIHN3aXRjaCAoZSkgeworICAgICAgY2FzZSBDPGNhcmV0PgorICAgIH0KKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0VudW1GaWVsZC1vdXQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9FbnVtRmllbGQtb3V0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODk0NGZjYgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9FbnVtRmllbGQtb3V0LmphdmEKQEAgLTAsMCArMSw5IEBACitlbnVtIE15RW51bSB7CisgIEZPTywgQkFSCit9CisKK2NsYXNzIEZvbyB7CisgIHsKKyAgICBNeUVudW0gbWUgPSBNeUVudW0uRk9POzxjYXJldD4KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9FbnVtRmllbGQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9FbnVtRmllbGQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZTYwMGFjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0VudW1GaWVsZC5qYXZhCkBAIC0wLDAgKzEsOSBAQAorZW51bSBNeUVudW0geworICBGT08sIEJBUgorfQorCitjbGFzcyBGb28geworICB7CisgICAgTXlFbnVtIG1lID0gRk88Y2FyZXQ+CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvRW51bUZpZWxkMS1vdXQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9FbnVtRmllbGQxLW91dC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc0ZmI2ZWEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvRW51bUZpZWxkMS1vdXQuamF2YQpAQCAtMCwwICsxLDkgQEAKK2VudW0gTXlFbnVtIHsKKyAgRk9PLCBCQVIKK30KKworY2xhc3MgRm9vIHsKKyAgTXlFbnVtIGZvbygpIHsKKyAgICByZXR1cm4gPGNhcmV0PgorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0VudW1GaWVsZDEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9FbnVtRmllbGQxLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzRmYjZlYQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9FbnVtRmllbGQxLmphdmEKQEAgLTAsMCArMSw5IEBACitlbnVtIE15RW51bSB7CisgIEZPTywgQkFSCit9CisKK2NsYXNzIEZvbyB7CisgIE15RW51bSBmb28oKSB7CisgICAgcmV0dXJuIDxjYXJldD4KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9FdmVyeXRoaW5nRG91Ymxlcy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0V2ZXJ5dGhpbmdEb3VibGVzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmZhYmNjZjgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvRXZlcnl0aGluZ0RvdWJsZXMuamF2YQpAQCAtMCwwICsxLDYgQEAKK2NsYXNzIEZvbyB7CisgICAgeworICAgICAgICBqYXZhLnV0aWwuTGlzdDxTdHJpbmc+IGw7CisgICAgICAgIG5ldyBpbnRbbC48Y2FyZXQ+XQorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvRXhjZXB0aW9uVHdpY2Utb3V0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvRXhjZXB0aW9uVHdpY2Utb3V0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTYzYTNhYwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9FeGNlcHRpb25Ud2ljZS1vdXQuamF2YQpAQCAtMCwwICsxLDcgQEAKK2NsYXNzIE15RXhjZXB0aW9uIGV4dGVuZHMgUnVudGltZUV4Y2VwdGlvbnt9CisKK2NsYXNzIE15Q2xhc3MgeworcHVibGljIHZvaWQgZm9vKCkgdGhyb3dzIE15RXhjZXB0aW9uIHsKKyAgdGhyb3cgbmV3IE15RXhjZXB0aW9uKCk7PGNhcmV0PiAKK30KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvRXhjZXB0aW9uVHdpY2UuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9FeGNlcHRpb25Ud2ljZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM2NGE1NzcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvRXhjZXB0aW9uVHdpY2UuamF2YQpAQCAtMCwwICsxLDcgQEAKK2NsYXNzIE15RXhjZXB0aW9uIGV4dGVuZHMgUnVudGltZUV4Y2VwdGlvbnt9CisKK2NsYXNzIE15Q2xhc3MgeworcHVibGljIHZvaWQgZm9vKCkgdGhyb3dzIE15RXhjZXB0aW9uIHsKKyAgdGhyb3cgbmV3IE15RXg8Y2FyZXQ+IAorfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9FeGNlcHRpb25Ud2ljZTItb3V0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvRXhjZXB0aW9uVHdpY2UyLW91dC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIwOGI1ZmQ3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0V4Y2VwdGlvblR3aWNlMi1vdXQuamF2YQpAQCAtMCwwICsxLDcgQEAKK2NsYXNzIE15RXhjZXB0aW9uIGV4dGVuZHMgRXhjZXB0aW9ue30KKworY2xhc3MgTXlDbGFzcyB7CitwdWJsaWMgdm9pZCBmb28oKSB0aHJvd3MgTXlFeGNlcHRpb24geworICB0aHJvdyBuZXcgTXlFeGNlcHRpb24oKTs8Y2FyZXQ+IAorfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9FeGNlcHRpb25Ud2ljZTIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9FeGNlcHRpb25Ud2ljZTIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMzhlNmViCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0V4Y2VwdGlvblR3aWNlMi5qYXZhCkBAIC0wLDAgKzEsNyBAQAorY2xhc3MgTXlFeGNlcHRpb24gZXh0ZW5kcyBFeGNlcHRpb257fQorCitjbGFzcyBNeUNsYXNzIHsKK3B1YmxpYyB2b2lkIGZvbygpIHRocm93cyBNeUV4Y2VwdGlvbiB7CisgIHRocm93IG5ldyBNeUV4PGNhcmV0PiAKK30KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvRXhjZXNzaXZlVGFpbC1vdXQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9FeGNlc3NpdmVUYWlsLW91dC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMzYzAzYTEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvRXhjZXNzaXZlVGFpbC1vdXQuamF2YQpAQCAtMCwwICsxLDUgQEAKK2NsYXNzIEhhc2hNYXA8VCxWPiB7fQorCitwdWJsaWMgY2xhc3MgQSB7CisgIHByaXZhdGUgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gbSA9IG5ldyBIYXNoTWFwPFN0cmluZywgU3RyaW5nPigpOzxjYXJldD4KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9FeGNlc3NpdmVUYWlsLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvRXhjZXNzaXZlVGFpbC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI0NDRkOGUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvRXhjZXNzaXZlVGFpbC5qYXZhCkBAIC0wLDAgKzEsNSBAQAorY2xhc3MgSGFzaE1hcDxULFY+IHt9CisKK3B1YmxpYyBjbGFzcyBBIHsKKyAgcHJpdmF0ZSBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiBtID0gbmV3IEhhc2hNYXA8U3RyaW5nLCA8c2VsZWN0aW9uPjxjYXJldD5JbnRlZ2VyPC9zZWxlY3Rpb24+PigpOworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0V4Y2xhbWF0aW9uRmluaXNoTm9uQm9vbGVhbi1vdXQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9FeGNsYW1hdGlvbkZpbmlzaE5vbkJvb2xlYW4tb3V0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzc2ODUzNwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9FeGNsYW1hdGlvbkZpbmlzaE5vbkJvb2xlYW4tb3V0LmphdmEKQEAgLTAsMCArMSwxMSBAQAorY2xhc3MgQmFyQmFzZSB7CisKKyAgICB7CisgICAgICAgIEZvbyBmID0gRm9vLmZvITxjYXJldD4KKyAgICB9CisKK30KKworY2xhc3MgRm9vIHsKKyAgc3RhdGljIGZpbmFsIEZvbyBmb287Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0V4Y2xhbWF0aW9uRmluaXNoTm9uQm9vbGVhbi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0V4Y2xhbWF0aW9uRmluaXNoTm9uQm9vbGVhbi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhlY2Q4NzIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvRXhjbGFtYXRpb25GaW5pc2hOb25Cb29sZWFuLmphdmEKQEAgLTAsMCArMSwxMSBAQAorY2xhc3MgQmFyQmFzZSB7CisKKyAgICB7CisgICAgICAgIEZvbyBmID0gRm9vLmZvPGNhcmV0PgorICAgIH0KKworfQorCitjbGFzcyBGb28geworICBzdGF0aWMgZmluYWwgRm9vIGZvbzsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvRXhjbGFtYXRpb25NZXRob2RGaW5pc2gtb3V0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvRXhjbGFtYXRpb25NZXRob2RGaW5pc2gtb3V0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjYzYWRjMgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9FeGNsYW1hdGlvbk1ldGhvZEZpbmlzaC1vdXQuamF2YQpAQCAtMCwwICsxLDggQEAKK2NsYXNzIEJhckJhc2UgeworCisgICAgeworICAgICAgICBib29sZWFuIGYgPSAhZm9vKCk7PGNhcmV0PgorICAgIH0KKworICAgIGJvb2xlYW4gZm9vKCk7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0V4Y2xhbWF0aW9uTWV0aG9kRmluaXNoLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvRXhjbGFtYXRpb25NZXRob2RGaW5pc2guamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZTUxOGU2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0V4Y2xhbWF0aW9uTWV0aG9kRmluaXNoLmphdmEKQEAgLTAsMCArMSw4IEBACitjbGFzcyBCYXJCYXNlIHsKKworICAgIHsKKyAgICAgICAgYm9vbGVhbiBmID0gZm88Y2FyZXQ+CisgICAgfQorCisgICAgYm9vbGVhbiBmb28oKTsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvRXhjbGFtYXRpb25TdGF0aWNGaWVsZEZpbmlzaC1vdXQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9FeGNsYW1hdGlvblN0YXRpY0ZpZWxkRmluaXNoLW91dC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM3NDdkN2MKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvRXhjbGFtYXRpb25TdGF0aWNGaWVsZEZpbmlzaC1vdXQuamF2YQpAQCAtMCwwICsxLDEyIEBACitjbGFzcyBCYXJCYXNlIHsKKworICAgIHsKKyAgICAgICAgYm9vbGVhbiBmb287CisgICAgICAgIGJvb2xlYW4gZiA9ICFGb28uZm9vOzxjYXJldD4KKyAgICB9CisKK30KKworY2xhc3MgRm9vIHsKKyAgc3RhdGljIGZpbmFsIEJvb2xlYW4gZm9vOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9FeGNsYW1hdGlvblN0YXRpY0ZpZWxkRmluaXNoLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvRXhjbGFtYXRpb25TdGF0aWNGaWVsZEZpbmlzaC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlhMTUzYTkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvRXhjbGFtYXRpb25TdGF0aWNGaWVsZEZpbmlzaC5qYXZhCkBAIC0wLDAgKzEsMTIgQEAKK2NsYXNzIEJhckJhc2UgeworCisgICAgeworICAgICAgICBib29sZWFuIGZvbzsKKyAgICAgICAgYm9vbGVhbiBmID0gRm9vLmZvPGNhcmV0PgorICAgIH0KKworfQorCitjbGFzcyBGb28geworICBzdGF0aWMgZmluYWwgQm9vbGVhbiBmb287Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0V4Y2xhbWF0aW9uVmFyaWFibGVGaW5pc2gtb3V0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvRXhjbGFtYXRpb25WYXJpYWJsZUZpbmlzaC1vdXQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MTE1NTE4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0V4Y2xhbWF0aW9uVmFyaWFibGVGaW5pc2gtb3V0LmphdmEKQEAgLTAsMCArMSw4IEBACitjbGFzcyBCYXJCYXNlIHsKKworICAgIHsKKyAgICAgICAgYm9vbGVhbiBmb287CisgICAgICAgIGJvb2xlYW4gZiA9ICFmb287PGNhcmV0PgorICAgIH0KKworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9FeGNsYW1hdGlvblZhcmlhYmxlRmluaXNoLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvRXhjbGFtYXRpb25WYXJpYWJsZUZpbmlzaC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIwMDAwNjEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvRXhjbGFtYXRpb25WYXJpYWJsZUZpbmlzaC5qYXZhCkBAIC0wLDAgKzEsOCBAQAorY2xhc3MgQmFyQmFzZSB7CisKKyAgICB7CisgICAgICAgIGJvb2xlYW4gZm9vOworICAgICAgICBib29sZWFuIGYgPSBmbzxjYXJldD4KKyAgICB9CisKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvRXhjbHVkZURlY2xhcmVkQ29uc3RhbnQtb3V0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvRXhjbHVkZURlY2xhcmVkQ29uc3RhbnQtb3V0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmZmMWFjNwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9FeGNsdWRlRGVjbGFyZWRDb25zdGFudC1vdXQuamF2YQpAQCAtMCwwICsxLDUgQEAKK3B1YmxpYyBjbGFzcyBGb28geworICBwdWJsaWMgc3RhdGljIGZpbmFsIEZvbyBGT08gPSAiIjsKKyAgcHVibGljIHN0YXRpYyBmaW5hbCBGb28gQkFSID0gRk9POworCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0V4Y2x1ZGVEZWNsYXJlZENvbnN0YW50LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvRXhjbHVkZURlY2xhcmVkQ29uc3RhbnQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yY2FkM2NlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0V4Y2x1ZGVEZWNsYXJlZENvbnN0YW50LmphdmEKQEAgLTAsMCArMSw1IEBACitwdWJsaWMgY2xhc3MgRm9vIHsKKyAgcHVibGljIHN0YXRpYyBmaW5hbCBGb28gRk9PID0gIiI7CisgIHB1YmxpYyBzdGF0aWMgZmluYWwgRm9vIEJBUiA9IDxjYXJldD47CisKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvRXhwZWN0ZWRSZXR1cm5UeXBlLW91dC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0V4cGVjdGVkUmV0dXJuVHlwZS1vdXQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jOTYzMjhkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0V4cGVjdGVkUmV0dXJuVHlwZS1vdXQuamF2YQpAQCAtMCwwICsxLDI2IEBACisvKgorICogQ29weXJpZ2h0IDIwMDAtMjAxMiBKZXRCcmFpbnMgcy5yLm8uCisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworaW50ZXJmYWNlIEkgeworICBib29sZWFuIGZvbyhTdHJpbmcgcyk7Cit9CitwdWJsaWMgY2xhc3MgVGVzdCB7CisgIHB1YmxpYyBpbnQgbSgpIHsKKyAgICBJIGkgPSBzIC0+IHsKKyAgICAgIHJldHVybiBzLmNvbnRhaW5zKCk7CisgICAgfTsKKyAgICByZXR1cm4gMDsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0V4cGVjdGVkUmV0dXJuVHlwZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0V4cGVjdGVkUmV0dXJuVHlwZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgxZjc1OWQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvRXhwZWN0ZWRSZXR1cm5UeXBlLmphdmEKQEAgLTAsMCArMSwyNiBAQAorLyoKKyAqIENvcHlyaWdodCAyMDAwLTIwMTIgSmV0QnJhaW5zIHMuci5vLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK2ludGVyZmFjZSBJIHsKKyAgYm9vbGVhbiBmb28oU3RyaW5nIHMpOworfQorcHVibGljIGNsYXNzIFRlc3QgeworICBwdWJsaWMgaW50IG0oKSB7CisgICAgSSBpID0gcyAtPiB7CisgICAgICByZXR1cm4gcy48Y2FyZXQ+CisgICAgfTsKKyAgICByZXR1cm4gMDsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0V4cGVjdGVkUmV0dXJuVHlwZTEtb3V0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvRXhwZWN0ZWRSZXR1cm5UeXBlMS1vdXQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43M2EwM2U0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0V4cGVjdGVkUmV0dXJuVHlwZTEtb3V0LmphdmEKQEAgLTAsMCArMSwyNCBAQAorLyoKKyAqIENvcHlyaWdodCAyMDAwLTIwMTIgSmV0QnJhaW5zIHMuci5vLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK2ludGVyZmFjZSBJIHsKKyAgYm9vbGVhbiBmb28oU3RyaW5nIHMpOworfQorcHVibGljIGNsYXNzIFRlc3QgeworICBwdWJsaWMgaW50IG0oKSB7CisgICAgSSBpID0gcyAtPiBzLmNvbnRhaW5zKCk7CisgICAgcmV0dXJuIDA7CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9FeHBlY3RlZFJldHVyblR5cGUxLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvRXhwZWN0ZWRSZXR1cm5UeXBlMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI0MGIwNWIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvRXhwZWN0ZWRSZXR1cm5UeXBlMS5qYXZhCkBAIC0wLDAgKzEsMjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwMC0yMDEyIEpldEJyYWlucyBzLnIuby4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitpbnRlcmZhY2UgSSB7CisgIGJvb2xlYW4gZm9vKFN0cmluZyBzKTsKK30KK3B1YmxpYyBjbGFzcyBUZXN0IHsKKyAgcHVibGljIGludCBtKCkgeworICAgIEkgaSA9IHMgLT4gcy48Y2FyZXQ+CisgICAgcmV0dXJuIDA7CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9FeHBlY3RlZFJldHVyblR5cGVXaXRoU3Vic3RpdHV0aW9uLW91dC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0V4cGVjdGVkUmV0dXJuVHlwZVdpdGhTdWJzdGl0dXRpb24tb3V0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGZmYmI4YgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9FeHBlY3RlZFJldHVyblR5cGVXaXRoU3Vic3RpdHV0aW9uLW91dC5qYXZhCkBAIC0wLDAgKzEsMzEgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwMC0yMDEyIEpldEJyYWlucyBzLnIuby4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwdWJsaWMgY2xhc3MgVGVzdCB7CisgIHB1YmxpYyBpbnRlcmZhY2UgU29tZTxUPiB7CisgICAgVCB0ZXN0KFQgcDEsIFQgcDIpOworICB9CisKKyAgY2xhc3MgRm9vIHsKKyAgICBwdWJsaWMgRm9vIGNyZWF0ZSgpIHtyZXR1cm4gbnVsbDt9CisgICAgcHVibGljIEZvbyBjcmVhdGUxKCkge3JldHVybiBudWxsO30KKyAgfQorCisgIHsKKyAgICBTb21lPEZvbz4gc29tZSA9IChpMSwgaTIpIC0+IHsKKyAgICAgIHJldHVybiBpMS5jcmVhdGUoKTsKKyAgICB9OworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0V4cGVjdGVkUmV0dXJuVHlwZVdpdGhTdWJzdGl0dXRpb24uamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9FeHBlY3RlZFJldHVyblR5cGVXaXRoU3Vic3RpdHV0aW9uLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDI5NDU2ZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9FeHBlY3RlZFJldHVyblR5cGVXaXRoU3Vic3RpdHV0aW9uLmphdmEKQEAgLTAsMCArMSwzMSBAQAorLyoKKyAqIENvcHlyaWdodCAyMDAwLTIwMTIgSmV0QnJhaW5zIHMuci5vLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3B1YmxpYyBjbGFzcyBUZXN0IHsKKyAgcHVibGljIGludGVyZmFjZSBTb21lPFQ+IHsKKyAgICBUIHRlc3QoVCBwMSwgVCBwMik7CisgIH0KKworICBjbGFzcyBGb28geworICAgIHB1YmxpYyBGb28gY3JlYXRlKCkge3JldHVybiBudWxsO30KKyAgICBwdWJsaWMgRm9vIGNyZWF0ZTEoKSB7cmV0dXJuIG51bGw7fQorICB9CisKKyAgeworICAgIFNvbWU8Rm9vPiBzb21lID0gKGkxLCBpMikgLT4geworICAgICAgcmV0dXJuIGkxLjxjYXJldD4KKyAgICB9OworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0V4cGxpY2l0TWV0aG9kVHlwZVBhcmFtZXRlcnNGcm9tU3VwZXJDbGFzcy1vdXQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9FeHBsaWNpdE1ldGhvZFR5cGVQYXJhbWV0ZXJzRnJvbVN1cGVyQ2xhc3Mtb3V0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODMxZmYyZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9FeHBsaWNpdE1ldGhvZFR5cGVQYXJhbWV0ZXJzRnJvbVN1cGVyQ2xhc3Mtb3V0LmphdmEKQEAgLTAsMCArMSwxMyBAQAoraW1wb3J0IGphdmEuaW8uRmlsZTsKKworcHVibGljIGNsYXNzIFN1cGVyIHsKKyAgcHJvdGVjdGVkIDxUPiBUIGZvbygpIHt9Cit9CisKK3B1YmxpYyBjbGFzcyBGb28gZXh0ZW5kcyBTdXBlciB7CisgICAgeworICAgICAgICBiYXIodGhpcy48RmlsZT5mb28oKSk7PGNhcmV0PgorICAgIH0KKworICAgIHZvaWQgYmFyKGphdmEuaW8uRmlsZSBzKSB7fQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0V4cGxpY2l0TWV0aG9kVHlwZVBhcmFtZXRlcnNGcm9tU3VwZXJDbGFzcy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0V4cGxpY2l0TWV0aG9kVHlwZVBhcmFtZXRlcnNGcm9tU3VwZXJDbGFzcy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhkNjg1ZTMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvRXhwbGljaXRNZXRob2RUeXBlUGFyYW1ldGVyc0Zyb21TdXBlckNsYXNzLmphdmEKQEAgLTAsMCArMSwxMSBAQAorcHVibGljIGNsYXNzIFN1cGVyIHsKKyAgcHJvdGVjdGVkIDxUPiBUIGZvbygpIHt9Cit9CisKK3B1YmxpYyBjbGFzcyBGb28gZXh0ZW5kcyBTdXBlciB7CisgICAgeworICAgICAgICBiYXIoZm88Y2FyZXQ+KQorICAgIH0KKworICAgIHZvaWQgYmFyKGphdmEuaW8uRmlsZSBzKSB7fQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0V4cGxpY2l0TWV0aG9kVHlwZVBhcmFtZXRlcnNPdmVyWmVhbG91cy1vdXQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9FeHBsaWNpdE1ldGhvZFR5cGVQYXJhbWV0ZXJzT3ZlclplYWxvdXMtb3V0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmYxOWMzNQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9FeHBsaWNpdE1ldGhvZFR5cGVQYXJhbWV0ZXJzT3ZlclplYWxvdXMtb3V0LmphdmEKQEAgLTAsMCArMSw5IEBACitwdWJsaWMgY2xhc3MgRm9vIHsKKyAgICB7CisgICAgICAgIGJhcihmb28oKSk7PGNhcmV0PgorICAgIH0KKworICAgIDxUPiBUIGZvbygpIHt9CisKKyAgICB2b2lkIGJhcihPYmplY3Qgcykge30KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9FeHBsaWNpdE1ldGhvZFR5cGVQYXJhbWV0ZXJzT3ZlclplYWxvdXMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9FeHBsaWNpdE1ldGhvZFR5cGVQYXJhbWV0ZXJzT3ZlclplYWxvdXMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xODY3NTQyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0V4cGxpY2l0TWV0aG9kVHlwZVBhcmFtZXRlcnNPdmVyWmVhbG91cy5qYXZhCkBAIC0wLDAgKzEsOSBAQAorcHVibGljIGNsYXNzIEZvbyB7CisgICAgeworICAgICAgICBiYXIoZm88Y2FyZXQ+KQorICAgIH0KKworICAgIDxUPiBUIGZvbygpIHt9CisKKyAgICB2b2lkIGJhcihPYmplY3Qgcykge30KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9FeHBsaWNpdE1ldGhvZFR5cGVQYXJhbWV0ZXJzUXVhbGlmeS1vdXQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9FeHBsaWNpdE1ldGhvZFR5cGVQYXJhbWV0ZXJzUXVhbGlmeS1vdXQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45Y2QzYWRjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0V4cGxpY2l0TWV0aG9kVHlwZVBhcmFtZXRlcnNRdWFsaWZ5LW91dC5qYXZhCkBAIC0wLDAgKzEsMTEgQEAKK2ltcG9ydCBqYXZhLmlvLkZpbGU7CisKK3B1YmxpYyBjbGFzcyBGb28geworICAgIHsKKyAgICAgICAgYmFyKHRoaXMuPEZpbGU+Zm9vKCkpOzxjYXJldD4KKyAgICB9CisKKyAgICA8VD4gVCBmb28oKSB7fQorCisgICAgdm9pZCBiYXIoamF2YS5pby5GaWxlIHMpIHt9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvRXhwbGljaXRNZXRob2RUeXBlUGFyYW1ldGVyc1F1YWxpZnkuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9FeHBsaWNpdE1ldGhvZFR5cGVQYXJhbWV0ZXJzUXVhbGlmeS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg1ZWNlY2IKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvRXhwbGljaXRNZXRob2RUeXBlUGFyYW1ldGVyc1F1YWxpZnkuamF2YQpAQCAtMCwwICsxLDkgQEAKK3B1YmxpYyBjbGFzcyBGb28geworICAgIHsKKyAgICAgICAgYmFyKGZvPGNhcmV0PikKKyAgICB9CisKKyAgICA8VD4gVCBmb28oKSB7fQorCisgICAgdm9pZCBiYXIoamF2YS5pby5GaWxlIHMpIHt9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvRXhwbGljaXRXaWxkY2FyZEFycmF5UGFyYW0tb3V0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvRXhwbGljaXRXaWxkY2FyZEFycmF5UGFyYW0tb3V0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTM5OGRmNwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9FeHBsaWNpdFdpbGRjYXJkQXJyYXlQYXJhbS1vdXQuamF2YQpAQCAtMCwwICsxLDEyIEBACitjbGFzcyBLZXk8VD4geworICBzdGF0aWMgPFQ+IEtleTxUPiBjcmVhdGUoU3RyaW5nIHMpOworfQorCitjbGFzcyBGb28geworICA8VD4gdm9pZCBwdXRVc2VyRGF0YShLZXk8VFtdPiBrZXksIFQgdmFsdWUpIHt9CisKKyAgeworICAgIHB1dFVzZXJEYXRhKEtleS5jcmVhdGUoPGNhcmV0PiksICkKKyAgfQorCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0V4cGxpY2l0V2lsZGNhcmRBcnJheVBhcmFtLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvRXhwbGljaXRXaWxkY2FyZEFycmF5UGFyYW0uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41Y2UzMGQzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0V4cGxpY2l0V2lsZGNhcmRBcnJheVBhcmFtLmphdmEKQEAgLTAsMCArMSwxMiBAQAorY2xhc3MgS2V5PFQ+IHsKKyAgc3RhdGljIDxUPiBLZXk8VD4gY3JlYXRlKFN0cmluZyBzKTsKK30KKworY2xhc3MgRm9vIHsKKyAgPFQ+IHZvaWQgcHV0VXNlckRhdGEoS2V5PFRbXT4ga2V5LCBUIHZhbHVlKSB7fQorCisgIHsKKyAgICBwdXRVc2VyRGF0YSg8Y2FyZXQ+KQorICB9CisKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvRXh0ZW5kc0luVHlwZUNhc3Qtb3V0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvRXh0ZW5kc0luVHlwZUNhc3Qtb3V0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDQ1ZjhhMAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9FeHRlbmRzSW5UeXBlQ2FzdC1vdXQuamF2YQpAQCAtMCwwICsxLDEwIEBACitjbGFzcyBMaXN0PFQ+IHsKKyAgcHVibGljIHZvaWQgYWRkKFQgdCkge307Cit9CisKK3B1YmxpYyBjbGFzcyBBIHsKKyAgeworICAgIExpc3Q8PyBleHRlbmRzIE9iamVjdD4gbGlzdDsKKyAgICBsaXN0LmFkZCgoT2JqZWN0KSA8Y2FyZXQ+KQorICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvRXh0ZW5kc0luVHlwZUNhc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9FeHRlbmRzSW5UeXBlQ2FzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ0ZDk0NWIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvRXh0ZW5kc0luVHlwZUNhc3QuamF2YQpAQCAtMCwwICsxLDEwIEBACitjbGFzcyBMaXN0PFQ+IHsKKyAgcHVibGljIHZvaWQgYWRkKFQgdCkge307Cit9CisKK3B1YmxpYyBjbGFzcyBBIHsKKyAgeworICAgIExpc3Q8PyBleHRlbmRzIE9iamVjdD4gbGlzdDsKKyAgICBsaXN0LmFkZCgoPGNhcmV0PikpCisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9FeHRyYVNlbWljb2xvbkFmdGVyTWV0aG9kUGFyYW0tb3V0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvRXh0cmFTZW1pY29sb25BZnRlck1ldGhvZFBhcmFtLW91dC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE5ZTMyM2UKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvRXh0cmFTZW1pY29sb25BZnRlck1ldGhvZFBhcmFtLW91dC5qYXZhCkBAIC0wLDAgKzEsMjAgQEAKK3B1YmxpYyBjbGFzcyBNeUFzcGVjdCB7CisKKyAgICBwdWJsaWMgdm9pZCBmb28oKSB7CisgICAgICAgIFN0YXRlIHN0YXRlOworICAgICAgICBTdGF0ZUxpc3RlbmVyIHN0YXRlTGlzdGVuZXI7CisgICAgICAgIHN0YXRlLmFkZExpc3RlbmVyKCBzdGF0ZUxpc3RlbmVyICk7PGNhcmV0PgorCisgICAgfQorCisgICAgcHJpdmF0ZSBzdGF0aWMgY2xhc3MgU3RhdGUgeworICAgICAgICB2b2lkIGFkZExpc3RlbmVyKFN0YXRlTGlzdGVuZXIgbGlzdGVuZXIpIHt9CisgICAgfQorCisKKworICAgIHByaXZhdGUgc3RhdGljIGNsYXNzIFN0YXRlTGlzdGVuZXIgeworCisgICAgfQorCit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvRXh0cmFTZW1pY29sb25BZnRlck1ldGhvZFBhcmFtLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvRXh0cmFTZW1pY29sb25BZnRlck1ldGhvZFBhcmFtLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjM3MzllOAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9FeHRyYVNlbWljb2xvbkFmdGVyTWV0aG9kUGFyYW0uamF2YQpAQCAtMCwwICsxLDIwIEBACitwdWJsaWMgY2xhc3MgTXlBc3BlY3QgeworCisgICAgcHVibGljIHZvaWQgZm9vKCkgeworICAgICAgICBTdGF0ZSBzdGF0ZTsKKyAgICAgICAgU3RhdGVMaXN0ZW5lciBzdGF0ZUxpc3RlbmVyOworICAgICAgICBzdGF0ZS5hZGRMaXN0ZW5lciggc3RhPGNhcmV0Pik7CisKKyAgICB9CisKKyAgICBwcml2YXRlIHN0YXRpYyBjbGFzcyBTdGF0ZSB7CisgICAgICAgIHZvaWQgYWRkTGlzdGVuZXIoU3RhdGVMaXN0ZW5lciBsaXN0ZW5lcikge30KKyAgICB9CisKKworCisgICAgcHJpdmF0ZSBzdGF0aWMgY2xhc3MgU3RhdGVMaXN0ZW5lciB7CisKKyAgICB9CisKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9GaWVsZHNTZXRBYm92ZS1vdXQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9GaWVsZHNTZXRBYm92ZS1vdXQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYzk5ZWQ1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0ZpZWxkc1NldEFib3ZlLW91dC5qYXZhCkBAIC0wLDAgKzEsOSBAQAorY2xhc3MgQSB7CisgIGludCBkb287CisgIGludCBhYWE7CisgIEEoaW50IGIpIHsKKyAgICBkb28gPSBiOworICAgIGFhYSA9IGRvbzs8Y2FyZXQ+CisgIH0KK30KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0ZpZWxkc1NldEFib3ZlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvRmllbGRzU2V0QWJvdmUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYWQ4ZGQzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0ZpZWxkc1NldEFib3ZlLmphdmEKQEAgLTAsMCArMSw5IEBACitjbGFzcyBBIHsKKyAgaW50IGRvbzsKKyAgaW50IGFhYTsKKyAgQShpbnQgYikgeworICAgIGRvbyA9IGI7CisgICAgYWFhID0gZDxjYXJldD4KKyAgfQorfQorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvRmllbGRzU2V0SW5Bbm90aGVyQ29uc3RydWN0b3Itb3V0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvRmllbGRzU2V0SW5Bbm90aGVyQ29uc3RydWN0b3Itb3V0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjc4ODM4ZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9GaWVsZHNTZXRJbkFub3RoZXJDb25zdHJ1Y3Rvci1vdXQuamF2YQpAQCAtMCwwICsxLDEzIEBACitjbGFzcyBBIHsKKyAgaW50IGRvbzsKKyAgaW50IGFhYTsKKyAgQShpbnQgYikgeworICAgIGRvbyA9IGI7CisgIH0KKworICBBKGludCBhYWMsIGludCBhYWQpIHsKKyAgICB0aGlzKGFhYyk7CisgICAgYWFhID0gZG9vOzxjYXJldD4KKyAgfQorfQorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvRmllbGRzU2V0SW5Bbm90aGVyQ29uc3RydWN0b3IuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9GaWVsZHNTZXRJbkFub3RoZXJDb25zdHJ1Y3Rvci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUxYjQ3ZTEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvRmllbGRzU2V0SW5Bbm90aGVyQ29uc3RydWN0b3IuamF2YQpAQCAtMCwwICsxLDEzIEBACitjbGFzcyBBIHsKKyAgaW50IGRvbzsKKyAgaW50IGFhYTsKKyAgQShpbnQgYikgeworICAgIGRvbyA9IGI7CisgIH0KKworICBBKGludCBhYWMsIGludCBhYWQpIHsKKyAgICB0aGlzKGFhYyk7CisgICAgYWFhID0gZDxjYXJldD4KKyAgfQorfQorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvRmlsdGVyUHJpdmF0ZUNvbnN0cnVjdG9ycy1vdXQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9GaWx0ZXJQcml2YXRlQ29uc3RydWN0b3JzLW91dC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMxZDJkN2IKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvRmlsdGVyUHJpdmF0ZUNvbnN0cnVjdG9ycy1vdXQuamF2YQpAQCAtMCwwICsxLDUgQEAKK2NsYXNzIEZvbyB7CisgIHsKKyAgICBDbGFzcyBjID0gbmV3IDxjYXJldD4KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9GaWx0ZXJQcml2YXRlQ29uc3RydWN0b3JzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvRmlsdGVyUHJpdmF0ZUNvbnN0cnVjdG9ycy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMxZDJkN2IKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvRmlsdGVyUHJpdmF0ZUNvbnN0cnVjdG9ycy5qYXZhCkBAIC0wLDAgKzEsNSBAQAorY2xhc3MgRm9vIHsKKyAgeworICAgIENsYXNzIGMgPSBuZXcgPGNhcmV0PgorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0ZvcmVhY2gtb3V0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvRm9yZWFjaC1vdXQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYTRhMGIwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0ZvcmVhY2gtb3V0LmphdmEKQEAgLTAsMCArMSwxMSBAQAoraW1wb3J0IGphdmEudXRpbC5MaXN0OworY2xhc3MgRm9yZWFjaCB7CisgICAgdm9pZCBmb28gKEZvcmVhY2ggZSkgeworICAgICAgICBmb3IgKFN0cmluZyBzIDogZS5mKCkpIHt9CisgICAgfQorCisgICAgTGlzdDw/IGV4dGVuZHMgU3RyaW5nPiBmICgpIHsKKyAgICAgICAgcmV0dXJuIG51bGw7CisgICAgfQorCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0ZvcmVhY2guamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9Gb3JlYWNoLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGQ5ZGQ5MQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9Gb3JlYWNoLmphdmEKQEAgLTAsMCArMSwxMSBAQAoraW1wb3J0IGphdmEudXRpbC5MaXN0OworY2xhc3MgRm9yZWFjaCB7CisgICAgdm9pZCBmb28gKEZvcmVhY2ggZSkgeworICAgICAgICBmb3IgKFN0cmluZyBzIDogZS48Y2FyZXQ+KSB7fQorICAgIH0KKworICAgIExpc3Q8PyBleHRlbmRzIFN0cmluZz4gZiAoKSB7CisgICAgICAgIHJldHVybiBudWxsOworICAgIH0KKworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9Gb3JlYWNoTG9vcFZhcmlhYmxlSW5JdGVyYWJsZUV4cHJlc3Npb24uamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9Gb3JlYWNoTG9vcFZhcmlhYmxlSW5JdGVyYWJsZUV4cHJlc3Npb24uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNTAzMmI5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0ZvcmVhY2hMb29wVmFyaWFibGVJbkl0ZXJhYmxlRXhwcmVzc2lvbi5qYXZhCkBAIC0wLDAgKzEsNSBAQAorcHVibGljIGNsYXNzIEJhciB7eworICAgICAgICBmb3IgKGphdmEudXRpbC5MaXN0IHRyb2xvbG8gOiB0cm9sbzxjYXJldD4pIHsKKworICAgICAgICB9CisgICAgfSB9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvSGlkaW5nRmllbGRzLW91dC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0hpZGluZ0ZpZWxkcy1vdXQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYjE1MjAzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0hpZGluZ0ZpZWxkcy1vdXQuamF2YQpAQCAtMCwwICsxLDEyIEBACitpbnRlcmZhY2UgQSB7CisgICAgaW50IEFCQzsKK30KK2ludGVyZmFjZSBCIGV4dGVuZHMgQXsKKyAgICBpbnQgQUJDOworfQorCitjbGFzcyBGb28geworICAgIHsKKyAgICAgICAgaW50IHggPSBCLkFCQzs8Y2FyZXQ+CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0hpZGluZ0ZpZWxkcy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0hpZGluZ0ZpZWxkcy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhjNDA1ZmMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvSGlkaW5nRmllbGRzLmphdmEKQEAgLTAsMCArMSwxMiBAQAoraW50ZXJmYWNlIEEgeworICAgIGludCBBQkM7Cit9CitpbnRlcmZhY2UgQiBleHRlbmRzIEF7CisgICAgaW50IEFCQzsKK30KKworY2xhc3MgRm9vIHsKKyAgICB7CisgICAgICAgIGludCB4ID0gQi5BPGNhcmV0PgorICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9Ib25vclNlbGVjdGlvbi1vdXQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9Ib25vclNlbGVjdGlvbi1vdXQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zOWI2MTdhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0hvbm9yU2VsZWN0aW9uLW91dC5qYXZhCkBAIC0wLDAgKzEsOSBAQAorY2xhc3MgRm9vIHsKKyAgeworICAgIEZvbyBmYTsKKyAgICBTdHJpbmcgZm9vOworICAgIFN0cmluZyBzID0gZm9vOzxjYXJldD4KKyAgfQorCisgIHB1YmxpYyBTdHJpbmcgdG9TdHJpbmcoKSB7fQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9Ib25vclNlbGVjdGlvbi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0hvbm9yU2VsZWN0aW9uLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjgzOGZkZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9Ib25vclNlbGVjdGlvbi5qYXZhCkBAIC0wLDAgKzEsOSBAQAorY2xhc3MgRm9vIHsKKyAgeworICAgIEZvbyBmYTsKKyAgICBTdHJpbmcgZm9vOworICAgIFN0cmluZyBzID0gZjxzZWxlY3Rpb24+LnRvU3RyaW5nKCk7PC9zZWxlY3Rpb24+CisgIH0KKworICBwdWJsaWMgU3RyaW5nIHRvU3RyaW5nKCkge30KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvSURFQURFVjEzMTQ4LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvSURFQURFVjEzMTQ4LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmQxNDhhNgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9JREVBREVWMTMxNDguamF2YQpAQCAtMCwwICsxLDYgQEAKK2NsYXNzIENsYXp6IHsKKworICAgIHN0YXRpYyB2b2lkIGZvbygpIHsKKyAgICAgICAgc3luY2hyb25pemVkKDxjYXJldD4pCisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9JREVBREVWMjYyNi1vdXQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9JREVBREVWMjYyNi1vdXQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NmQ1ZTYzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0lERUFERVYyNjI2LW91dC5qYXZhCkBAIC0wLDAgKzEsMTIgQEAKK2NsYXNzIEdlbmVyaWM8VD4geyB9CisKK2NsYXNzIE90aGVyIHsKKyAgc3RhdGljIDxUPiBUIHRha2UoR2VuZXJpYzxUPiB0aGluZykgeyByZXR1cm4gbnVsbDsgfQorfQorCitjbGFzcyBUZXN0ZXIgeworICBHZW5lcmljPFN0cmluZz4gc3RyOworICB2b2lkIG1ldGhvZCgpIHsKKyAgICBDaGFyU2VxdWVuY2UgeCA9IE90aGVyLnRha2Uoc3RyKTxjYXJldD47CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvSURFQURFVjI2MjYuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9JREVBREVWMjYyNi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNhMmU4MjEzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0lERUFERVYyNjI2LmphdmEKQEAgLTAsMCArMSwxMiBAQAorY2xhc3MgR2VuZXJpYzxUPiB7IH0KKworY2xhc3MgT3RoZXIgeworICBzdGF0aWMgPFQ+IFQgdGFrZShHZW5lcmljPFQ+IHRoaW5nKSB7IHJldHVybiBudWxsOyB9Cit9CisKK2NsYXNzIFRlc3RlciB7CisgIEdlbmVyaWM8U3RyaW5nPiBzdHI7CisgIHZvaWQgbWV0aG9kKCkgeworICAgIENoYXJTZXF1ZW5jZSB4ID0gT3RoZXIudGFrZSg8Y2FyZXQ+KTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9JREVBREVWMjY2OC1vdXQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9JREVBREVWMjY2OC1vdXQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MTQwNTc0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0lERUFERVYyNjY4LW91dC5qYXZhCkBAIC0wLDAgKzEsMTEgQEAKK2NsYXNzIEJpZ0RlY2ltYWx7fQorCitlbnVtIFRyZWFzdXJlcyB7CisgICAgRElBTU9ORChuZXcgQmlnRGVjaW1hbCgpKTxjYXJldD47CisKKyAgICBUcmVhc3VyZXMoQmlnRGVjaW1hbCB2YWx1ZSkgeworICAgICAgICB0aGlzLnZhbHVlID0gdmFsdWU7CisgICAgfQorCisgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIHZhbHVlOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9JREVBREVWMjY2OC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0lERUFERVYyNjY4LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDcyOWE3YwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9JREVBREVWMjY2OC5qYXZhCkBAIC0wLDAgKzEsMTEgQEAKK2NsYXNzIEJpZ0RlY2ltYWx7fQorCitlbnVtIFRyZWFzdXJlcyB7CisgICAgRElBTU9ORChuZXcgPGNhcmV0Pik7CisKKyAgICBUcmVhc3VyZXMoQmlnRGVjaW1hbCB2YWx1ZSkgeworICAgICAgICB0aGlzLnZhbHVlID0gdmFsdWU7CisgICAgfQorCisgICAgcHJpdmF0ZSBCaWdEZWNpbWFsIHZhbHVlOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9JREVBREVWNTE1MC1vdXQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9JREVBREVWNTE1MC1vdXQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZGM3OTQ4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0lERUFERVY1MTUwLW91dC5qYXZhCkBAIC0wLDAgKzEsMTIgQEAKK2ltcG9ydCBqYXZhLnV0aWwuKjsKKworY2xhc3MgVGVzdAoreworICAgIHByaXZhdGUgU3RyaW5nW10gc3RyaW5nczsKKworICAgIHB1YmxpYyBMaXN0PFN0cmluZz4gZ2V0U3RyaW5ncygpCisgICAgeworICAgICAgICByZXR1cm4gQXJyYXlzLmFzTGlzdChzdHJpbmdzKTsKKyAgICB9CisKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvSURFQURFVjUxNTAuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9JREVBREVWNTE1MC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk3NjA1YWMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvSURFQURFVjUxNTAuamF2YQpAQCAtMCwwICsxLDEyIEBACitpbXBvcnQgamF2YS51dGlsLio7CisKK2NsYXNzIFRlc3QKK3sKKyAgICBwcml2YXRlIFN0cmluZ1tdIHN0cmluZ3M7CisKKyAgICBwdWJsaWMgTGlzdDxTdHJpbmc+IGdldFN0cmluZ3MoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIEFycmF5cy5hc0xpc3Qoc3RyPGNhcmV0Pik7CisgICAgfQorCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0lERUFERVY3ODM1LW91dC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0lERUFERVY3ODM1LW91dC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIxZjhhOGUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvSURFQURFVjc4MzUtb3V0LmphdmEKQEAgLTAsMCArMSwxMCBAQAoraW1wb3J0IGphdmEudXRpbC4qOworCitjbGFzcyBMaXN0PFQ+IHt9CisKK2NsYXNzIENsYXp6IHsKKworICAgIHN0YXRpYyB2b2lkIGZvbyhGb288U3RyaW5nPiBmb28pIHsKKyAgICAgICAgTGlzdDxNYXAuRW50cnk+IGYgPSBuZXcgTGlzdDxNYXAuRW50cnk+KCk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9JREVBREVWNzgzNS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0lERUFERVY3ODM1LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWMyY2U1YQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9JREVBREVWNzgzNS5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKK2ltcG9ydCBqYXZhLnV0aWwuKjsKKworY2xhc3MgTGlzdDxUPiB7fQorCitjbGFzcyBDbGF6eiB7CisKKyAgICBzdGF0aWMgdm9pZCBmb28oRm9vPFN0cmluZz4gZm9vKSB7CisgICAgICAgIExpc3Q8TWFwLkVudHJ5PiBmID0gbmV3IEw8Y2FyZXQ+CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9JZkNvbmRpdGlvbkJpbmFyeUV4cHJlc3Npb24tb3V0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvSWZDb25kaXRpb25CaW5hcnlFeHByZXNzaW9uLW91dC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU5OTQxMzAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvSWZDb25kaXRpb25CaW5hcnlFeHByZXNzaW9uLW91dC5qYXZhCkBAIC0wLDAgKzEsNiBAQAorcHVibGljIGNsYXNzIFRhYkNvbXBsZXRlIHsKKwlwdWJsaWMgdm9pZCBzY2VuZSgpIHsKKyAgICAgICAgYm9vbGVhbiBiYmI7CisgICAgICAgIGlmIChiYmI8Y2FyZXQ+ID09IDIpIHt9CisJfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0lmQ29uZGl0aW9uQmluYXJ5RXhwcmVzc2lvbi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0lmQ29uZGl0aW9uQmluYXJ5RXhwcmVzc2lvbi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUyZWVmNGQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvSWZDb25kaXRpb25CaW5hcnlFeHByZXNzaW9uLmphdmEKQEAgLTAsMCArMSw2IEBACitwdWJsaWMgY2xhc3MgVGFiQ29tcGxldGUgeworCXB1YmxpYyB2b2lkIHNjZW5lKCkgeworICAgICAgICBib29sZWFuIGJiYjsKKyAgICAgICAgaWYgKGI8Y2FyZXQ+ID09IDIpIHt9CisJfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0lmQ29uZGl0aW9uRXhwZWN0ZWRUeXBlLW91dC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0lmQ29uZGl0aW9uRXhwZWN0ZWRUeXBlLW91dC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM4YzFhZDYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvSWZDb25kaXRpb25FeHBlY3RlZFR5cGUtb3V0LmphdmEKQEAgLTAsMCArMSwxOSBAQAoraW50ZXJmYWNlIENvbXB1dGFibGU8VD4geworICAgIFQgY29tcHV0ZSgpOworfQorCitwdWJsaWMgY2xhc3MgWm9vMiB7CisgICAgPFQ+IFQgcnVuKENvbXB1dGFibGU8VD4gY29tcHV0YWJsZSkgeworICAgICAgICAKKyAgICB9CisKKyAgICB7CisgICAgICAgIAorICAgICAgICBpZiAocnVuKG5ldyBDb21wdXRhYmxlPEJvb2xlYW4+KCkgeworICAgICAgICAgICAgQE92ZXJyaWRlCisgICAgICAgICAgICBwdWJsaWMgQm9vbGVhbiBjb21wdXRlKCkgeworICAgICAgICAgICAgICAgIDxzZWxlY3Rpb24+cmV0dXJuIG51bGw7ICAvL1RvIGNoYW5nZSBib2R5IG9mIGltcGxlbWVudGVkIG1ldGhvZHMgdXNlIEZpbGUgfCBTZXR0aW5ncyB8IEZpbGUgVGVtcGxhdGVzLjwvc2VsZWN0aW9uPgorICAgICAgICAgICAgfQorICAgICAgICB9KSkKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvSWZDb25kaXRpb25FeHBlY3RlZFR5cGUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9JZkNvbmRpdGlvbkV4cGVjdGVkVHlwZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ1MmMyY2EKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvSWZDb25kaXRpb25FeHBlY3RlZFR5cGUuamF2YQpAQCAtMCwwICsxLDE0IEBACitpbnRlcmZhY2UgQ29tcHV0YWJsZTxUPiB7CisgICAgVCBjb21wdXRlKCk7Cit9CisKK3B1YmxpYyBjbGFzcyBab28yIHsKKyAgICA8VD4gVCBydW4oQ29tcHV0YWJsZTxUPiBjb21wdXRhYmxlKSB7CisgICAgICAgIAorICAgIH0KKworICAgIHsKKyAgICAgICAgCisgICAgICAgIGlmIChydW4obmV3IDxjYXJldD4pKQorICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9JblRoaXNFeHByZXNzaW9uLW91dC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0luVGhpc0V4cHJlc3Npb24tb3V0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzVjY2IzOAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9JblRoaXNFeHByZXNzaW9uLW91dC5qYXZhCkBAIC0wLDAgKzEsOCBAQAorcHVibGljIGNsYXNzIEZvbyB7CisgICAgCisgICAgUnVubmFibGUgciA9IG5ldyBSdW5uYWJsZSgpIHsKKyAgICAgICAgcHVibGljIHZvaWQgcnVuKCkgeworICAgICAgICAgICAgRm9vIGYgPSBGb28udGhpczs8Y2FyZXQ+Rm9vLnRoaXM7CisgICAgICAgIH0KKyAgICB9OworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0luVGhpc0V4cHJlc3Npb24uamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9JblRoaXNFeHByZXNzaW9uLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmJhNGUwODMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvSW5UaGlzRXhwcmVzc2lvbi5qYXZhCkBAIC0wLDAgKzEsOCBAQAorcHVibGljIGNsYXNzIEZvbyB7CisgICAgCisgICAgUnVubmFibGUgciA9IG5ldyBSdW5uYWJsZSgpIHsKKyAgICAgICAgcHVibGljIHZvaWQgcnVuKCkgeworICAgICAgICAgICAgRm9vIGYgPSA8Y2FyZXQ+Rm9vLnRoaXM7CisgICAgICAgIH0KKyAgICB9OworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0luYWNjZXNzaWJsZUNsYXNzQWZ0ZXJOZXctb3V0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvSW5hY2Nlc3NpYmxlQ2xhc3NBZnRlck5ldy1vdXQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNzZkYjA1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0luYWNjZXNzaWJsZUNsYXNzQWZ0ZXJOZXctb3V0LmphdmEKQEAgLTAsMCArMSw2IEBACitjbGFzcyBBIHsKKyAgeworICAgIGJhci5CYXIuYWNjZXB0KG5ldyBmb28uRm9vKCkgeworICAgIH0pOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0luYWNjZXNzaWJsZUNsYXNzQWZ0ZXJOZXcuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9JbmFjY2Vzc2libGVDbGFzc0FmdGVyTmV3LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzdmNTc2OQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9JbmFjY2Vzc2libGVDbGFzc0FmdGVyTmV3LmphdmEKQEAgLTAsMCArMSw1IEBACitjbGFzcyBBIHsKKyAgeworICAgIGJhci5CYXIuYWNjZXB0KG5ldyA8Y2FyZXQ+KQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0luZmVyRnJvbUNhbGwtb3V0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvSW5mZXJGcm9tQ2FsbC1vdXQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jOGZlOTAzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0luZmVyRnJvbUNhbGwtb3V0LmphdmEKQEAgLTAsMCArMSwxNCBAQAoraW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7CisKK2NsYXNzIEFycmF5cyB7CisgIHN0YXRpYyA8VD4gQXJyYXlMaXN0PFQ+IGFzTGlzdChULi4uIHRzKSB7CisgICAgcmV0dXJuIG51bGw7CisgIH0KK30KKworY2xhc3MgREREIHsKKyAgICBzdGF0aWMgeworICAgICAgICBEREQgZGRkID0gbmV3IERERCgpOworICAgICAgICBuZXcgQXJyYXlMaXN0PERERD4oQXJyYXlzLmFzTGlzdChkZGQpPGNhcmV0Pik7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0luZmVyRnJvbUNhbGwuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9JbmZlckZyb21DYWxsLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2Q2NTkyYWIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvSW5mZXJGcm9tQ2FsbC5qYXZhCkBAIC0wLDAgKzEsMTQgQEAKK2ltcG9ydCBqYXZhLnV0aWwuQXJyYXlMaXN0OworCitjbGFzcyBBcnJheXMgeworICBzdGF0aWMgPFQ+IEFycmF5TGlzdDxUPiBhc0xpc3QoVC4uLiB0cykgeworICAgIHJldHVybiBudWxsOworICB9Cit9CisKK2NsYXNzIERERCB7CisgICAgc3RhdGljIHsKKyAgICAgICAgREREIGRkZCA9IG5ldyBEREQoKTsKKyAgICAgICAgbmV3IEFycmF5TGlzdDxEREQ+KEFycmF5cy5hc0xpc3QoPGNhcmV0PikpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9JbmZlckZyb21DYWxsMS1vdXQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9JbmZlckZyb21DYWxsMS1vdXQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45YzU1YmNlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0luZmVyRnJvbUNhbGwxLW91dC5qYXZhCkBAIC0wLDAgKzEsMTEgQEAKK2NsYXNzIEtleTxUPiB7fQorY2xhc3MgRm9vIHsKKyAgPFQ+IHZvaWQgcHV0VXNlckRhdGEoS2V5PFQ+IGssIFQgdCkge30KKworICA8VD4gS2V5PFQ+IGdldEtleShLZXk8VD4gdCkge30KKworICB7CisgICAgS2V5PEtleTxTdHJpbmc+PiBrID0gbmV3IEtleTxLZXk8U3RyaW5nPj4oKTsKKyAgICBwdXRVc2VyRGF0YShrLCBnZXRLZXkobmV3IEtleTxTdHJpbmc+KCkpPGNhcmV0Pik7CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9JbmZlckZyb21DYWxsMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0luZmVyRnJvbUNhbGwxLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWU4YjM4OQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9JbmZlckZyb21DYWxsMS5qYXZhCkBAIC0wLDAgKzEsMTEgQEAKK2NsYXNzIEtleTxUPiB7fQorY2xhc3MgRm9vIHsKKyAgPFQ+IHZvaWQgcHV0VXNlckRhdGEoS2V5PFQ+IGssIFQgdCkge30KKworICA8VD4gS2V5PFQ+IGdldEtleShLZXk8VD4gdCkge30KKworICB7CisgICAgS2V5PEtleTxTdHJpbmc+PiBrID0gbmV3IEtleTxLZXk8U3RyaW5nPj4oKTsKKyAgICBwdXRVc2VyRGF0YShrLCBnZXRLZXkobmV3IDxjYXJldD4pKTsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0luaGVyaXRlZENsYXNzLW91dC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0luaGVyaXRlZENsYXNzLW91dC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUwZmQ3YTUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvSW5oZXJpdGVkQ2xhc3Mtb3V0LmphdmEKQEAgLTAsMCArMSwxMCBAQAorY2xhc3MgRm9vIHt9CitjbGFzcyBCYXIgZXh0ZW5kcyBGb28geworCit2b2lkIHRlc3QoKSB7CisgIG1ldGhvZChuZXcgQmFyKCkpOzxjYXJldD4KK30KKwordm9pZCBtZXRob2QoRm9vIGYpIHt9CisKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvSW5oZXJpdGVkQ2xhc3MuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9Jbmhlcml0ZWRDbGFzcy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM2NDc0OGEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvSW5oZXJpdGVkQ2xhc3MuamF2YQpAQCAtMCwwICsxLDEwIEBACitjbGFzcyBGb28ge30KK2NsYXNzIEJhciBleHRlbmRzIEZvbyB7CisKK3ZvaWQgdGVzdCgpIHsKKyAgbWV0aG9kKG5ldyBCPGNhcmV0PikKK30KKwordm9pZCBtZXRob2QoRm9vIGYpIHt9CisKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvSW5uZXJBZnRlck5ldy1vdXQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9Jbm5lckFmdGVyTmV3LW91dC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNkZDIyNmQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvSW5uZXJBZnRlck5ldy1vdXQuamF2YQpAQCAtMCwwICsxLDE0IEBACitwdWJsaWMgY2xhc3MgVGVzdCB7CisKKyAgeworICAgIG5ldyBGb288U3RyaW5nPigpLm1ldGhvZChuZXcgT3V0ZXIuSW5uZXI8U3RyaW5nPigpKTs8Y2FyZXQ+CisgIH0KKworICBzdGF0aWMgY2xhc3MgT3V0ZXIgeworICAgIHN0YXRpYyBjbGFzcyBJbm5lcjxBPiB7fQorICB9CisKKyAgY2xhc3MgRm9vPEE+IHsKKyAgICBwdWJsaWMgdm9pZCBtZXRob2QoT3V0ZXIuSW5uZXI8QT4gaW5uZXIpIHt9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvSW5uZXJBZnRlck5ldy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0lubmVyQWZ0ZXJOZXcuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYTRkMjFkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0lubmVyQWZ0ZXJOZXcuamF2YQpAQCAtMCwwICsxLDE0IEBACitwdWJsaWMgY2xhc3MgVGVzdCB7CisKKyAgeworICAgIG5ldyBGb288U3RyaW5nPigpLm1ldGhvZChuZXcgPGNhcmV0Pik7CisgIH0KKworICBzdGF0aWMgY2xhc3MgT3V0ZXIgeworICAgIHN0YXRpYyBjbGFzcyBJbm5lcjxBPiB7fQorICB9CisKKyAgY2xhc3MgRm9vPEE+IHsKKyAgICBwdWJsaWMgdm9pZCBtZXRob2QoT3V0ZXIuSW5uZXI8QT4gaW5uZXIpIHt9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvSW5uZXJDbGFzc0ltcG9ydHMtb3V0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvSW5uZXJDbGFzc0ltcG9ydHMtb3V0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzE1ZDk5MgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9Jbm5lckNsYXNzSW1wb3J0cy1vdXQuamF2YQpAQCAtMCwwICsxLDEyIEBACitpbXBvcnQgamF2YS5hd3QuZ2VvbS5Qb2ludDJEOworCitjbGFzcyBVVGVzdCB7CisKKyAgICB2b2lkIGZvbygpIHsKKyAgICAgICAgUG9pbnQyRC5Eb3VibGUgZCA9IG5ldyBQb2ludDJELkRvdWJsZSgpOzxjYXJldD4KKyAgICB9CisKKyAgICB2b2lkIGJhcigpIHsKKyAgICAgICAgRG91YmxlIGQ7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9Jbm5lckNsYXNzSW1wb3J0cy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0lubmVyQ2xhc3NJbXBvcnRzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDAzNDQzMAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9Jbm5lckNsYXNzSW1wb3J0cy5qYXZhCkBAIC0wLDAgKzEsMTIgQEAKK2ltcG9ydCBqYXZhLmF3dC5nZW9tLlBvaW50MkQ7CisKK2NsYXNzIFVUZXN0IHsKKworICAgIHZvaWQgZm9vKCkgeworICAgICAgICBQb2ludDJELkRvdWJsZSBkID0gbmV3IDxjYXJldD4KKyAgICB9CisKKyAgICB2b2lkIGJhcigpIHsKKyAgICAgICAgRG91YmxlIGQ7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9Jbm5lckVudW0tb3V0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvSW5uZXJFbnVtLW91dC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ2M2U1NzcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvSW5uZXJFbnVtLW91dC5qYXZhCkBAIC0wLDAgKzEsMTEgQEAKK3B1YmxpYyBjbGFzcyBGb28geworICAgIHZvaWQgZm9vKCkgeworICAgICAgQmFyLkZ1YmFyIGIgPSB0cnVlID8gQmFyLkZ1YmFyLkJhciA6IDxjYXJldD4KKyAgICB9Cit9CisgIAorcHVibGljIHN0YXRpYyBjbGFzcyBCYXIgeworICBwdWJsaWMgZW51bSBGdWJhciB7CisgICAgRm9vLCBCYXIKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9Jbm5lckVudW0uamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9Jbm5lckVudW0uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMmNiOTE1NgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9Jbm5lckVudW0uamF2YQpAQCAtMCwwICsxLDExIEBACitwdWJsaWMgY2xhc3MgRm9vIHsKKyAgICB2b2lkIGZvbygpIHsKKyAgICAgIEJhci5GdWJhciBiID0gdHJ1ZSA/IDxjYXJldD4KKyAgICB9Cit9CisgIAorcHVibGljIHN0YXRpYyBjbGFzcyBCYXIgeworICBwdWJsaWMgZW51bSBGdWJhciB7CisgICAgRm9vLCBCYXIKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9Jbm5lckVudW1Jbk1ldGhvZC1vdXQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9Jbm5lckVudW1Jbk1ldGhvZC1vdXQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NjViOGJjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0lubmVyRW51bUluTWV0aG9kLW91dC5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKK3B1YmxpYyBjbGFzcyBGb28geworCisgICAgeworICAgICAgICBlbnVtIEJhciB7CisgICAgICAgICAgICBGdWJhcgorICAgICAgICB9CisgICAgICAgIEJhciBiID0gQmFyLkZ1YmFyOzxjYXJldD4gCisgICAgfQorCit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvSW5uZXJFbnVtSW5NZXRob2QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9Jbm5lckVudW1Jbk1ldGhvZC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU4MDI3MzAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvSW5uZXJFbnVtSW5NZXRob2QuamF2YQpAQCAtMCwwICsxLDEwIEBACitwdWJsaWMgY2xhc3MgRm9vIHsKKworICAgIHsKKyAgICAgICAgZW51bSBCYXIgeworICAgICAgICAgICAgRnViYXIKKyAgICAgICAgfQorICAgICAgICBCYXIgYiA9IEZ1YjxjYXJldD4gCisgICAgfQorCit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvSW5zZXJ0T3ZlcnJpZGUtb3V0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvSW5zZXJ0T3ZlcnJpZGUtb3V0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmQ4NmM1MwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9JbnNlcnRPdmVycmlkZS1vdXQuamF2YQpAQCAtMCwwICsxLDEwIEBACitjbGFzcyBDIHsKKyAgICB2b2lkIGYoKSB7CisgICAgICAgIFJ1bm5hYmxlIHIgPSBuZXcgUnVubmFibGUoKSB7CisgICAgICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgICAgIHB1YmxpYyB2b2lkIHJ1bigpIHsKKyAgICAgICAgICAgICAgICA8c2VsZWN0aW9uPi8vVG8gY2hhbmdlIGJvZHkgb2YgaW1wbGVtZW50ZWQgbWV0aG9kcyB1c2UgRmlsZSB8IFNldHRpbmdzIHwgRmlsZSBUZW1wbGF0ZXMuPC9zZWxlY3Rpb24+CisgICAgICAgICAgICB9CisgICAgICAgIH07CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9JbnNlcnRPdmVycmlkZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0luc2VydE92ZXJyaWRlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjAzMGJlMwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9JbnNlcnRPdmVycmlkZS5qYXZhCkBAIC0wLDAgKzEsNSBAQAorY2xhc3MgQyB7CisgICAgdm9pZCBmKCkgeworICAgICAgICBSdW5uYWJsZSByID0gbmV3IDxjYXJldD4KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0luc2VydFR5cGVQYXJhbWV0ZXJzT25JbXBvcnRpbmctb3V0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvSW5zZXJ0VHlwZVBhcmFtZXRlcnNPbkltcG9ydGluZy1vdXQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iOTVjMDk2YwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9JbnNlcnRUeXBlUGFyYW1ldGVyc09uSW1wb3J0aW5nLW91dC5qYXZhCkBAIC0wLDAgKzEsOCBAQAoraW1wb3J0IGphdmEudXRpbC5IYXNoTWFwOworaW1wb3J0IGphdmEudXRpbC5NYXA7CisKK2NsYXNzIEZvbyB7CisgIHsKKyAgICBNYXA8U3RyaW5nLFN0cmluZz4gbSA9IG5ldyBIYXNoTWFwPFN0cmluZywgU3RyaW5nPig8Y2FyZXQ+KTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9JbnNlcnRUeXBlUGFyYW1ldGVyc09uSW1wb3J0aW5nLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvSW5zZXJ0VHlwZVBhcmFtZXRlcnNPbkltcG9ydGluZy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQwZjdhODMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvSW5zZXJ0VHlwZVBhcmFtZXRlcnNPbkltcG9ydGluZy5qYXZhCkBAIC0wLDAgKzEsNyBAQAoraW1wb3J0IGphdmEudXRpbC5NYXA7CisKK2NsYXNzIEZvbyB7CisgIHsKKyAgICBNYXA8U3RyaW5nLFN0cmluZz4gbSA9IG5ldyBIYXNoTTxjYXJldD4KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9JbnNpZGVDYXRjaC1vdXQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9JbnNpZGVDYXRjaC1vdXQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NDZlMTU2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0luc2lkZUNhdGNoLW91dC5qYXZhCkBAIC0wLDAgKzEsOSBAQAorY2xhc3MgQXsKKworeworIHRyeXsKKyAgdGhyb3cgbmV3IEV4Y2VwdGlvbigpOworIH0KKyBjYXRjaChFeGNlcHRpb24gPGNhcmV0PikKK30KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvSW5zaWRlQ2F0Y2guamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9JbnNpZGVDYXRjaC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg2ZjY5YWEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvSW5zaWRlQ2F0Y2guamF2YQpAQCAtMCwwICsxLDkgQEAKK2NsYXNzIEF7CisKK3sKKyB0cnl7CisgIHRocm93IG5ldyBFeGNlcHRpb24oKTsKKyB9CisgY2F0Y2goPGNhcmV0PikKK30KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvSW5zaWRlR2VuZXJpY0NsYXNzTGl0ZXJhbC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0luc2lkZUdlbmVyaWNDbGFzc0xpdGVyYWwuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MDQxOWI3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0luc2lkZUdlbmVyaWNDbGFzc0xpdGVyYWwuamF2YQpAQCAtMCwwICsxLDkgQEAKK2NsYXNzIEZvbyB7CisKKyAgPFQgZXh0ZW5kcyBDaGFyU2VxdWVuY2U+IFQgYmFyKENsYXNzPFQ+IHQpIHt9CisKKyAgeworICAgICBiYXIoU3Q8Y2FyZXQ+LmNsYXNzKQorICB9CisKKyAgfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9JbnNpZGVTdHJpbmdMaXRlcmFsLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvSW5zaWRlU3RyaW5nTGl0ZXJhbC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc3NTIyZTQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvSW5zaWRlU3RyaW5nTGl0ZXJhbC5qYXZhCkBAIC0wLDAgKzEsMyBAQAorcHVibGljIGNsYXNzIFpaWiB7CisgICAgICAgU3RyaW5nIHMgPSAiPGNhcmV0PiI7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0luc3RhbmNlTWV0aG9kUGFyYW1ldGVyc0Zyb21TdGF0aWNDb250ZXh0LW91dC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0luc3RhbmNlTWV0aG9kUGFyYW1ldGVyc0Zyb21TdGF0aWNDb250ZXh0LW91dC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ4YmNlMmEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvSW5zdGFuY2VNZXRob2RQYXJhbWV0ZXJzRnJvbVN0YXRpY0NvbnRleHQtb3V0LmphdmEKQEAgLTAsMCArMSwxMyBAQAorcHVibGljIGNsYXNzIE15Rmlyc3RUZXN0Q2xhc3NCb28geworCisgICAgc3RhdGljIHZvaWQgZm9vKGludCBhKSB7fQorCisgICAgdm9pZCBmb28oU3RyaW5nIHMpIHt9CisKKyAgICBzdGF0aWMgeworICAgICAgICBpbnQgeHh5OworICAgICAgICBTdHJpbmcgeHh6OworICAgICAgICBmb28oeHh5KTs8Y2FyZXQ+CisgICAgfQorCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0luc3RhbmNlTWV0aG9kUGFyYW1ldGVyc0Zyb21TdGF0aWNDb250ZXh0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvSW5zdGFuY2VNZXRob2RQYXJhbWV0ZXJzRnJvbVN0YXRpY0NvbnRleHQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hN2RjMmUwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0luc3RhbmNlTWV0aG9kUGFyYW1ldGVyc0Zyb21TdGF0aWNDb250ZXh0LmphdmEKQEAgLTAsMCArMSwxMyBAQAorcHVibGljIGNsYXNzIE15Rmlyc3RUZXN0Q2xhc3NCb28geworCisgICAgc3RhdGljIHZvaWQgZm9vKGludCBhKSB7fQorCisgICAgdm9pZCBmb28oU3RyaW5nIHMpIHt9CisKKyAgICBzdGF0aWMgeworICAgICAgICBpbnQgeHh5OworICAgICAgICBTdHJpbmcgeHh6OworICAgICAgICBmb28oeHg8Y2FyZXQ+KQorICAgIH0KKworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9JbnN0YW5jZU1ldGhvZFBhcmFtZXRlcnNGcm9tU3RhdGljQ29udGV4dDItb3V0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvSW5zdGFuY2VNZXRob2RQYXJhbWV0ZXJzRnJvbVN0YXRpY0NvbnRleHQyLW91dC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAxYzBiYzcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvSW5zdGFuY2VNZXRob2RQYXJhbWV0ZXJzRnJvbVN0YXRpY0NvbnRleHQyLW91dC5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKK3B1YmxpYyBjbGFzcyBNeUZpcnN0VGVzdENsYXNzQm9vIHsKKworICAgIHZvaWQgZm9vKFN0cmluZyBzKSB7fQorCisgICAgc3RhdGljIHsKKyAgICAgICAgU3RyaW5nIHh4ejsKKyAgICAgICAgZm9vKHh4eik7PGNhcmV0PgorICAgIH0KKworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9JbnN0YW5jZU1ldGhvZFBhcmFtZXRlcnNGcm9tU3RhdGljQ29udGV4dDIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9JbnN0YW5jZU1ldGhvZFBhcmFtZXRlcnNGcm9tU3RhdGljQ29udGV4dDIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMWI4NWJiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0luc3RhbmNlTWV0aG9kUGFyYW1ldGVyc0Zyb21TdGF0aWNDb250ZXh0Mi5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKK3B1YmxpYyBjbGFzcyBNeUZpcnN0VGVzdENsYXNzQm9vIHsKKworICAgIHZvaWQgZm9vKFN0cmluZyBzKSB7fQorCisgICAgc3RhdGljIHsKKyAgICAgICAgU3RyaW5nIHh4ejsKKyAgICAgICAgZm9vKHh4PGNhcmV0PikKKyAgICB9CisKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvSW5zdGFuY2VvZmVkSW5zaWRlQW5vbnltb3VzLW91dC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0luc3RhbmNlb2ZlZEluc2lkZUFub255bW91cy1vdXQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zY2ZiMTdkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0luc3RhbmNlb2ZlZEluc2lkZUFub255bW91cy1vdXQuamF2YQpAQCAtMCwwICsxLDE2IEBACitjbGFzcyBDeworICAgIHsKKyAgICAgICAgT2JqZWN0IG87CisgICAgICAgIGlmIChvIGluc3RhbmNlb2YgRm9vKSB7CisgICAgICAgICAgICBuZXcgUnVubmFibGUoKSB7CisgICAgICAgICAgICAgICAgcHVibGljIHZvaWQgcnVuKCkgeworICAgICAgICAgICAgICAgICAgICBGb28gZiA9IChGb28pIG87PGNhcmV0PgorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KKworY2xhc3MgRm9vIHsKKyAgICB2b2lkIGRvZm9vKCk7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0luc3RhbmNlb2ZlZEluc2lkZUFub255bW91cy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0luc3RhbmNlb2ZlZEluc2lkZUFub255bW91cy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmViMDhiMjIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvSW5zdGFuY2VvZmVkSW5zaWRlQW5vbnltb3VzLmphdmEKQEAgLTAsMCArMSwxNiBAQAorY2xhc3MgQ3sKKyAgICB7CisgICAgICAgIE9iamVjdCBvOworICAgICAgICBpZiAobyBpbnN0YW5jZW9mIEZvbykgeworICAgICAgICAgICAgbmV3IFJ1bm5hYmxlKCkgeworICAgICAgICAgICAgICAgIHB1YmxpYyB2b2lkIHJ1bigpIHsKKyAgICAgICAgICAgICAgICAgICAgRm9vIGYgPSA8Y2FyZXQ+CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorfQorCitjbGFzcyBGb28geworICAgIHZvaWQgZG9mb28oKTsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvSW50Q29uc3RJblN3aXRjaC1vdXQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9JbnRDb25zdEluU3dpdGNoLW91dC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg1NDdmNTAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvSW50Q29uc3RJblN3aXRjaC1vdXQuamF2YQpAQCAtMCwwICsxLDExIEBACitjbGFzcyBFIHsKKyAgc3RhdGljIGZpbmFsIGludCBBQkM7CisgIHN0YXRpYyBmaW5hbCBpbnQgREVGOworCisgIHZvaWQgZm9vIChpbnQgZSkgeworICAgIGludCBBREY7CisgICAgc3dpdGNoIChlKSB7CisgICAgICBjYXNlIEFCQzo8Y2FyZXQ+CisgICAgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0ludENvbnN0SW5Td2l0Y2guamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9JbnRDb25zdEluU3dpdGNoLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTJkMzdkZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9JbnRDb25zdEluU3dpdGNoLmphdmEKQEAgLTAsMCArMSwxMSBAQAorY2xhc3MgRSB7CisgIHN0YXRpYyBmaW5hbCBpbnQgQUJDOworICBzdGF0aWMgZmluYWwgaW50IERFRjsKKworICB2b2lkIGZvbyAoaW50IGUpIHsKKyAgICBpbnQgQURGOworICAgIHN3aXRjaCAoZSkgeworICAgICAgY2FzZSBBPGNhcmV0PgorICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9JbnRQbHVzTG9uZ05vdERvdWJsZS1vdXQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9JbnRQbHVzTG9uZ05vdERvdWJsZS1vdXQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MDI1MDA4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0ludFBsdXNMb25nTm90RG91YmxlLW91dC5qYXZhCkBAIC0wLDAgKzEsNyBAQAorY2xhc3MgRm9vIHsKKyAgICB7CisgICAgICAgIGludCBhOworICAgICAgICBsb25nIGI7CisgICAgICAgIGludCBjID0gYSArIChpbnQpIDxjYXJldD5iOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9JbnRQbHVzTG9uZ05vdERvdWJsZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0ludFBsdXNMb25nTm90RG91YmxlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjg4ZmUyMQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9JbnRQbHVzTG9uZ05vdERvdWJsZS5qYXZhCkBAIC0wLDAgKzEsNyBAQAorY2xhc3MgRm9vIHsKKyAgICB7CisgICAgICAgIGludCBhOworICAgICAgICBsb25nIGI7CisgICAgICAgIGludCBjID0gYSArICg8Y2FyZXQ+YjsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvSmF2YWRvY1Rocm93cy1vdXQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9KYXZhZG9jVGhyb3dzLW91dC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ5N2FjN2MKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvSmF2YWRvY1Rocm93cy1vdXQuamF2YQpAQCAtMCwwICsxLDkgQEAKK2NsYXNzIE15RXhjZXB0aW9uIGV4dGVuZHMgUnVudGltZUV4Y2VwdGlvbnt9CisKK2NsYXNzIE15Q2xhc3MgeworLyoqCisqIEB0aHJvd3MgTXlFeGNlcHRpb24gPGNhcmV0PgorKi8KK3B1YmxpYyB2b2lkIGZvbygpIHRocm93cyBNeUV4Y2VwdGlvbiB7Cit9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL0phdmFkb2NUaHJvd3MuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9KYXZhZG9jVGhyb3dzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjI5NWZiYQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9KYXZhZG9jVGhyb3dzLmphdmEKQEAgLTAsMCArMSw5IEBACitjbGFzcyBNeUV4Y2VwdGlvbiBleHRlbmRzIFJ1bnRpbWVFeGNlcHRpb257fQorCitjbGFzcyBNeUNsYXNzIHsKKy8qKgorKiBAdGhyb3dzIDxjYXJldD4KKyovCitwdWJsaWMgdm9pZCBmb28oKSB0aHJvd3MgTXlFeGNlcHRpb24geworfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9MaXZlVGVtcGxhdGUtb3V0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvTGl2ZVRlbXBsYXRlLW91dC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE5NjlkN2UKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvTGl2ZVRlbXBsYXRlLW91dC5qYXZhCkBAIC0wLDAgKzEsMTIgQEAKK2NsYXNzIEZvbyB7Cit9CisKK2NsYXNzIEZvb0ZhY3RvcnkgeworICBzdGF0aWMgRm9vIGNyZWF0ZUZvbygpIHt9Cit9CisKK2NsYXNzIFhYWCB7CisgIHsKKyAgICBGb28gZiA9IEZvb0ZhY3RvcnkuY3JlYXRlRm9vKCk8Y2FyZXQ+CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvTGl2ZVRlbXBsYXRlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvTGl2ZVRlbXBsYXRlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmQ5OTc4ZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9MaXZlVGVtcGxhdGUuamF2YQpAQCAtMCwwICsxLDEyIEBACitjbGFzcyBGb28geworfQorCitjbGFzcyBGb29GYWN0b3J5IHsKKyAgc3RhdGljIEZvbyBjcmVhdGVGb28oKSB7fQorfQorCitjbGFzcyBYWFggeworICB7CisgICAgRm9vIGYgPSA8Y2FyZXQ+CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvTWVhbmluZ2xlc3NFeHBsaWNpdFdpbGRjYXJkUGFyYW0tb3V0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvTWVhbmluZ2xlc3NFeHBsaWNpdFdpbGRjYXJkUGFyYW0tb3V0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjFjODhkNwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9NZWFuaW5nbGVzc0V4cGxpY2l0V2lsZGNhcmRQYXJhbS1vdXQuamF2YQpAQCAtMCwwICsxLDEyIEBACitjbGFzcyBLZXk8VD4geworICBzdGF0aWMgPFQ+IEtleTxUPiBjcmVhdGUoU3RyaW5nIHMpOworfQorCitjbGFzcyBGb28geworICA8VD4gdm9pZCBwdXRVc2VyRGF0YShLZXk8VD4ga2V5LCBUIHZhbHVlKSB7fQorCisgIHsKKyAgICBwdXRVc2VyRGF0YShLZXkuY3JlYXRlKDxjYXJldD4pLCApCisgIH0KKworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9NZWFuaW5nbGVzc0V4cGxpY2l0V2lsZGNhcmRQYXJhbS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL01lYW5pbmdsZXNzRXhwbGljaXRXaWxkY2FyZFBhcmFtLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzc5MzgxZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9NZWFuaW5nbGVzc0V4cGxpY2l0V2lsZGNhcmRQYXJhbS5qYXZhCkBAIC0wLDAgKzEsMTIgQEAKK2NsYXNzIEtleTxUPiB7CisgIHN0YXRpYyA8VD4gS2V5PFQ+IGNyZWF0ZShTdHJpbmcgcyk7Cit9CisKK2NsYXNzIEZvbyB7CisgIDxUPiB2b2lkIHB1dFVzZXJEYXRhKEtleTxUPiBrZXksIFQgdmFsdWUpIHt9CisKKyAgeworICAgIHB1dFVzZXJEYXRhKDxjYXJldD4pCisgIH0KKworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9NZW1iZXJJbXBvcnRTdGF0aWNhbGx5LW91dC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL01lbWJlckltcG9ydFN0YXRpY2FsbHktb3V0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTE2ODRjNQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9NZW1iZXJJbXBvcnRTdGF0aWNhbGx5LW91dC5qYXZhCkBAIC0wLDAgKzEsMTMgQEAKK2ltcG9ydCBzdGF0aWMgU3VwZXIuRk9POworCitjbGFzcyBTdXBlciB7CisgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3VwZXIgRk9PID0gbnVsbDsKKyAgcHVibGljIHN0YXRpYyBTdXBlciBGT08yKCkge307Cit9CisKK2NsYXNzIEludGVybWVkaWF0ZSB7CisKKyAgICBTdXBlciBzID0gRk9POzxjYXJldD4KK30KKworCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvTWVtYmVySW1wb3J0U3RhdGljYWxseS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL01lbWJlckltcG9ydFN0YXRpY2FsbHkuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZTBkZDAyMAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9NZW1iZXJJbXBvcnRTdGF0aWNhbGx5LmphdmEKQEAgLTAsMCArMSwxMSBAQAorY2xhc3MgU3VwZXIgeworICBwdWJsaWMgc3RhdGljIGZpbmFsIFN1cGVyIEZPTyA9IG51bGw7CisgIHB1YmxpYyBzdGF0aWMgU3VwZXIgRk9PMigpIHt9OworfQorCitjbGFzcyBJbnRlcm1lZGlhdGUgeworCisgICAgU3VwZXIgcyA9IEY8Y2FyZXQ+Cit9CisKKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL01ldGhvZEFubm90YXRpb25OYW1lZFBhcmFtZXRlci1vdXQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9NZXRob2RBbm5vdGF0aW9uTmFtZWRQYXJhbWV0ZXItb3V0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjA4ODI5NgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9NZXRob2RBbm5vdGF0aW9uTmFtZWRQYXJhbWV0ZXItb3V0LmphdmEKQEAgLTAsMCArMSw5IEBACitwdWJsaWMgY2xhc3MgQmFyQmF6IHsKKworICAgIEBGb28oaXNCYXIgPSB0cnVlPGNhcmV0PikKKyAgICBwdWJsaWMgdm9pZCB4KCkge30KKworICAgIHB1YmxpYyBAaW50ZXJmYWNlIEZvbyB7CisgICAgICAgIGJvb2xlYW4gaXNCYXIoKSBkZWZhdWx0IGZhbHNlOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvTWV0aG9kQW5ub3RhdGlvbk5hbWVkUGFyYW1ldGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvTWV0aG9kQW5ub3RhdGlvbk5hbWVkUGFyYW1ldGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTM1NDE5MQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9NZXRob2RBbm5vdGF0aW9uTmFtZWRQYXJhbWV0ZXIuamF2YQpAQCAtMCwwICsxLDkgQEAKK3B1YmxpYyBjbGFzcyBCYXJCYXogeworCisgICAgQEZvbyhpc0JhciA9IHQ8Y2FyZXQ+KQorICAgIHB1YmxpYyB2b2lkIHgoKSB7fQorCisgICAgcHVibGljIEBpbnRlcmZhY2UgRm9vIHsKKyAgICAgICAgYm9vbGVhbiBpc0JhcigpIGRlZmF1bHQgZmFsc2U7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9NZXRob2RDYWxsRG90LW91dC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL01ldGhvZENhbGxEb3Qtb3V0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTllODlhMAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9NZXRob2RDYWxsRG90LW91dC5qYXZhCkBAIC0wLDAgKzEsOSBAQAorcHVibGljIGNsYXNzIEZvbyB7CisgICAgeworICAgICAgICBTdHJpbmcgc3NzczsKKyAgICAgICAgZm9vKHNzc3MpPGNhcmV0Pi47CisgICAgfQorCisgICAgdm9pZCBmb28oU3RyaW5nIHMpOworCisgfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL01ldGhvZENhbGxEb3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9NZXRob2RDYWxsRG90LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTgyYTk0NQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9NZXRob2RDYWxsRG90LmphdmEKQEAgLTAsMCArMSw5IEBACitwdWJsaWMgY2xhc3MgRm9vIHsKKyAgICB7CisgICAgICAgIFN0cmluZyBzc3NzOworICAgICAgICBmb28oczxjYXJldD4pLjsKKyAgICB9CisKKyAgICB2b2lkIGZvbyhTdHJpbmcgcyk7CisKKyB9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvTWV0aG9kQ29sb24tb3V0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvTWV0aG9kQ29sb24tb3V0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTVjMTMzNAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9NZXRob2RDb2xvbi1vdXQuamF2YQpAQCAtMCwwICsxLDggQEAKK2NsYXNzIEJhciB7CisgIGludCB6b29vYSgpIHt9CisgIGludCB6b29vYigpIHt9CisKKyAgaW50IGZvbygpIHsKKyAgICByZXR1cm4gdHJ1ZSA/IHpvb29hKCkgOiA8Y2FyZXQ+CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9NZXRob2RDb2xvbi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL01ldGhvZENvbG9uLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODc5OTA3NAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9NZXRob2RDb2xvbi5qYXZhCkBAIC0wLDAgKzEsOCBAQAorY2xhc3MgQmFyIHsKKyAgaW50IHpvb29hKCkge30KKyAgaW50IHpvb29iKCkge30KKworICBpbnQgZm9vKCkgeworICAgIHJldHVybiB0cnVlID8gem9vPGNhcmV0PgorICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvTWV0aG9kTm9QYWlyQnJhY2tldENvbW1hLW91dC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL01ldGhvZE5vUGFpckJyYWNrZXRDb21tYS1vdXQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ODNlZjliCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL01ldGhvZE5vUGFpckJyYWNrZXRDb21tYS1vdXQuamF2YQpAQCAtMCwwICsxLDggQEAKK2NsYXNzIEEgeworICB2b2lkIGZvbyhTdHJpbmcgYmFyLCBpbnQgYSkge30KKyAgU3RyaW5nIHpvbyhpbnQgYikge30KKworICB7CisgICAgZm9vKHpvbygpLCA8Y2FyZXQ+KQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL01ldGhvZE5vUGFpckJyYWNrZXRDb21tYS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL01ldGhvZE5vUGFpckJyYWNrZXRDb21tYS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFiMWU3ZDMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvTWV0aG9kTm9QYWlyQnJhY2tldENvbW1hLmphdmEKQEAgLTAsMCArMSw4IEBACitjbGFzcyBBIHsKKyAgdm9pZCBmb28oU3RyaW5nIGJhciwgaW50IGEpIHt9CisgIFN0cmluZyB6b28oaW50IGIpIHt9CisKKyAgeworICAgIGZvbyh6bzxjYXJldD4pCisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvTmVnYXRlVmFyaWFibGUtb3V0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvTmVnYXRlVmFyaWFibGUtb3V0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTRmZTkzNgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9OZWdhdGVWYXJpYWJsZS1vdXQuamF2YQpAQCAtMCwwICsxLDkgQEAKK3B1YmxpYyBjbGFzcyBGb28geworICAgIHsKKyAgICAgICAgYm9vbGVhbiBiYmJiOworICAgICAgICBiYmJiID0gIWJiYmI7PGNhcmV0PgorICAgIH0KKworCisgfQorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvTmVnYXRlVmFyaWFibGUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9OZWdhdGVWYXJpYWJsZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEwNDAwNzIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvTmVnYXRlVmFyaWFibGUuamF2YQpAQCAtMCwwICsxLDkgQEAKK3B1YmxpYyBjbGFzcyBGb28geworICAgIHsKKyAgICAgICAgYm9vbGVhbiBiYmJiOworICAgICAgICBiYmJiID0gIWI8Y2FyZXQ+CisgICAgfQorCisKKyB9CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9OZXN0ZWRBc3NpZ25tZW50cy1vdXQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9OZXN0ZWRBc3NpZ25tZW50cy1vdXQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZDJkNTVjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL05lc3RlZEFzc2lnbm1lbnRzLW91dC5qYXZhCkBAIC0wLDAgKzEsNSBAQAorY2xhc3MgVXNlciB7CisgICAgeworICAgICAgICBpbnQgYSA9IGhhc2hDb2RlKCk7PGNhcmV0PiA9IGM7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9OZXN0ZWRBc3NpZ25tZW50cy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL05lc3RlZEFzc2lnbm1lbnRzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNThmMGEwZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9OZXN0ZWRBc3NpZ25tZW50cy5qYXZhCkBAIC0wLDAgKzEsNSBAQAorY2xhc3MgVXNlciB7CisgICAgeworICAgICAgICBpbnQgYSA9IGg8Y2FyZXQ+ID0gYzsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL05ld0Fic3RyYWN0Q2xhc3NXaXRoQ29uc3RydWN0b3JBcmdzLW91dC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL05ld0Fic3RyYWN0Q2xhc3NXaXRoQ29uc3RydWN0b3JBcmdzLW91dC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI4ZmZjYWMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvTmV3QWJzdHJhY3RDbGFzc1dpdGhDb25zdHJ1Y3RvckFyZ3Mtb3V0LmphdmEKQEAgLTAsMCArMSwxOSBAQAorcHVibGljIGNsYXNzIE1haW4geworCisgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKKyAgICBCYXIgYiA9IG5ldyBCYXIoKSB7CisgICAgICAgIEBPdmVycmlkZQorICAgICAgICB2b2lkIHVwZGF0ZSgpIHsKKyAgICAgICAgICAgIDxzZWxlY3Rpb24+Ly9UbyBjaGFuZ2UgYm9keSBvZiBpbXBsZW1lbnRlZCBtZXRob2RzIHVzZSBGaWxlIHwgU2V0dGluZ3MgfCBGaWxlIFRlbXBsYXRlcy48L3NlbGVjdGlvbj4KKyAgICAgICAgfQorICAgIH07CisgIH0KKworfQorCitwdWJsaWMgYWJzdHJhY3QgY2xhc3MgQmFyIHsKKyAgcHJvdGVjdGVkIEJhcihpbnQgYSkgeworICB9CisKKyAgYWJzdHJhY3Qgdm9pZCB1cGRhdGUoKTsKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9OZXdBYnN0cmFjdENsYXNzV2l0aENvbnN0cnVjdG9yQXJncy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL05ld0Fic3RyYWN0Q2xhc3NXaXRoQ29uc3RydWN0b3JBcmdzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTI3NGFlYwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9OZXdBYnN0cmFjdENsYXNzV2l0aENvbnN0cnVjdG9yQXJncy5qYXZhCkBAIC0wLDAgKzEsMTQgQEAKK3B1YmxpYyBjbGFzcyBNYWluIHsKKworICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CisgICAgQmFyIGIgPSBuZXcgQjxjYXJldD4KKyAgfQorCit9CisKK3B1YmxpYyBhYnN0cmFjdCBjbGFzcyBCYXIgeworICBwcm90ZWN0ZWQgQmFyKGludCBhKSB7CisgIH0KKworICBhYnN0cmFjdCB2b2lkIHVwZGF0ZSgpOworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL05ld0Fic3RyYWN0SW5zaWRlQW5vbnltb3VzLW91dC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL05ld0Fic3RyYWN0SW5zaWRlQW5vbnltb3VzLW91dC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNjMjkwNDIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvTmV3QWJzdHJhY3RJbnNpZGVBbm9ueW1vdXMtb3V0LmphdmEKQEAgLTAsMCArMSwxOSBAQAorcHVibGljIGNsYXNzIEZvbyB7CisKKyAgcHVibGljIEZvbygpIHsKKyAgICBSdW5uYWJsZSByID0gbmV3IFJ1bm5hYmxlKCkgeworICAgICAgcHVibGljIHZvaWQgcnVuKCkgeworICAgICAgICBHb288U3RyaW5nPiBnID0gbmV3IEdvbzxTdHJpbmc+KCkgeworICAgICAgICAgICAgQE92ZXJyaWRlCisgICAgICAgICAgICB2b2lkIGZvbygpIHsKKyAgICAgICAgICAgICAgICA8c2VsZWN0aW9uPi8vVG8gY2hhbmdlIGJvZHkgb2YgaW1wbGVtZW50ZWQgbWV0aG9kcyB1c2UgRmlsZSB8IFNldHRpbmdzIHwgRmlsZSBUZW1wbGF0ZXMuPC9zZWxlY3Rpb24+CisgICAgICAgICAgICB9CisgICAgICAgIH07CisgICAgICB9CisgICAgfTsKKyAgfQorfQorCithYnN0cmFjdCBjbGFzcyBHb288VD4geworICBhYnN0cmFjdCB2b2lkIGZvbygpOworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL05ld0Fic3RyYWN0SW5zaWRlQW5vbnltb3VzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvTmV3QWJzdHJhY3RJbnNpZGVBbm9ueW1vdXMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iM2ExNDE3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL05ld0Fic3RyYWN0SW5zaWRlQW5vbnltb3VzLmphdmEKQEAgLTAsMCArMSwxNCBAQAorcHVibGljIGNsYXNzIEZvbyB7CisKKyAgcHVibGljIEZvbygpIHsKKyAgICBSdW5uYWJsZSByID0gbmV3IFJ1bm5hYmxlKCkgeworICAgICAgcHVibGljIHZvaWQgcnVuKCkgeworICAgICAgICBHb288U3RyaW5nPiBnID0gbmV3IEc8Y2FyZXQ+CisgICAgICB9CisgICAgfTsKKyAgfQorfQorCithYnN0cmFjdCBjbGFzcyBHb288VD4geworICBhYnN0cmFjdCB2b2lkIGZvbygpOworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL05ld0Fub255bW91c0Z1bmN0aW9uLW91dC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL05ld0Fub255bW91c0Z1bmN0aW9uLW91dC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNhNGQ2ZmIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvTmV3QW5vbnltb3VzRnVuY3Rpb24tb3V0LmphdmEKQEAgLTAsMCArMSwyOSBAQAoraW50ZXJmYWNlIEZ1bmN0aW9uPFgsIFk+IHsgfQorY2xhc3MgQSB7CisgIHByaXZhdGUgc3RhdGljIGZpbmFsIEZ1bmN0aW9uPFN0cmluZywgU3RyaW5nPiBhID0gbmV3IEZ1bmN0aW9uPFN0cmluZywgU3RyaW5nPigpIHsKKyAgICAgIEBPdmVycmlkZQorICAgICAgcHVibGljIGludCBoYXNoQ29kZSgpIHsKKyAgICAgICAgICA8c2VsZWN0aW9uPnJldHVybiBzdXBlci5oYXNoQ29kZSgpOyAgICAvL1RvIGNoYW5nZSBib2R5IG9mIG92ZXJyaWRkZW4gbWV0aG9kcyB1c2UgRmlsZSB8IFNldHRpbmdzIHwgRmlsZSBUZW1wbGF0ZXMuPC9zZWxlY3Rpb24+CisgICAgICB9CisKKyAgICAgIEBPdmVycmlkZQorICAgICAgcHVibGljIGJvb2xlYW4gZXF1YWxzKE9iamVjdCBvYmopIHsKKyAgICAgICAgICByZXR1cm4gc3VwZXIuZXF1YWxzKG9iaik7ICAgIC8vVG8gY2hhbmdlIGJvZHkgb2Ygb3ZlcnJpZGRlbiBtZXRob2RzIHVzZSBGaWxlIHwgU2V0dGluZ3MgfCBGaWxlIFRlbXBsYXRlcy4KKyAgICAgIH0KKworICAgICAgQE92ZXJyaWRlCisgICAgICBwcm90ZWN0ZWQgT2JqZWN0IGNsb25lKCkgdGhyb3dzIENsb25lTm90U3VwcG9ydGVkRXhjZXB0aW9uIHsKKyAgICAgICAgICByZXR1cm4gc3VwZXIuY2xvbmUoKTsgICAgLy9UbyBjaGFuZ2UgYm9keSBvZiBvdmVycmlkZGVuIG1ldGhvZHMgdXNlIEZpbGUgfCBTZXR0aW5ncyB8IEZpbGUgVGVtcGxhdGVzLgorICAgICAgfQorCisgICAgICBAT3ZlcnJpZGUKKyAgICAgIHB1YmxpYyBTdHJpbmcgdG9TdHJpbmcoKSB7CisgICAgICAgICAgcmV0dXJuIHN1cGVyLnRvU3RyaW5nKCk7ICAgIC8vVG8gY2hhbmdlIGJvZHkgb2Ygb3ZlcnJpZGRlbiBtZXRob2RzIHVzZSBGaWxlIHwgU2V0dGluZ3MgfCBGaWxlIFRlbXBsYXRlcy4KKyAgICAgIH0KKworICAgICAgQE92ZXJyaWRlCisgICAgICBwcm90ZWN0ZWQgdm9pZCBmaW5hbGl6ZSgpIHRocm93cyBUaHJvd2FibGUgeworICAgICAgICAgIHN1cGVyLmZpbmFsaXplKCk7ICAgIC8vVG8gY2hhbmdlIGJvZHkgb2Ygb3ZlcnJpZGRlbiBtZXRob2RzIHVzZSBGaWxlIHwgU2V0dGluZ3MgfCBGaWxlIFRlbXBsYXRlcy4KKyAgICAgIH0KKyAgfTsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvTmV3QW5vbnltb3VzRnVuY3Rpb24uamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9OZXdBbm9ueW1vdXNGdW5jdGlvbi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRhNjM1OTkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvTmV3QW5vbnltb3VzRnVuY3Rpb24uamF2YQpAQCAtMCwwICsxLDQgQEAKK2ludGVyZmFjZSBGdW5jdGlvbjxYLCBZPiB7IH0KK2NsYXNzIEEgeworICBwcml2YXRlIHN0YXRpYyBmaW5hbCBGdW5jdGlvbjxTdHJpbmcsIFN0cmluZz4gYSA9IG5ldyA8Y2FyZXQ+Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL05ld0J5dGVBcnJheS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL05ld0J5dGVBcnJheS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYwY2RiNzEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvTmV3Qnl0ZUFycmF5LmphdmEKQEAgLTAsMCArMSw1IEBACitjbGFzcyBBIHsKKyAgYnl0ZVtdIG0oKSB7CisgICAgcmV0dXJuIG5ldyA8Y2FyZXQ+eDsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9OZXdJbm5lckNsYXNzTmFtZVNob3J0UHJlZml4LW91dC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL05ld0lubmVyQ2xhc3NOYW1lU2hvcnRQcmVmaXgtb3V0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDk3MmRjZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9OZXdJbm5lckNsYXNzTmFtZVNob3J0UHJlZml4LW91dC5qYXZhCkBAIC0wLDAgKzEsMTIgQEAKK3B1YmxpYyBjbGFzcyBKYXZhQ2xhc3MgeworICB7CisgICAgT3V0ZXIuQm9vIGIgPSBuZXcgT3V0ZXIuQm9vKCk7PGNhcmV0PgorICB9Cit9CisKK2NsYXNzIE91dGVyIHsKKyAgc3RhdGljIGNsYXNzIEJvbyB7IH0KK30KKworCitjbGFzcyBBQm9vSW1wbCBleHRlbmRzIE91dGVyLkJvbyB7IH0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvTmV3SW5uZXJDbGFzc05hbWVTaG9ydFByZWZpeC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL05ld0lubmVyQ2xhc3NOYW1lU2hvcnRQcmVmaXguamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45YTQwMmRhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL05ld0lubmVyQ2xhc3NOYW1lU2hvcnRQcmVmaXguamF2YQpAQCAtMCwwICsxLDEyIEBACitwdWJsaWMgY2xhc3MgSmF2YUNsYXNzIHsKKyAgeworICAgIE91dGVyLkJvbyBiID0gbmV3IEI8Y2FyZXQ+CisgIH0KK30KKworY2xhc3MgT3V0ZXIgeworICBzdGF0aWMgY2xhc3MgQm9vIHsgfQorfQorCisKK2NsYXNzIEFCb29JbXBsIGV4dGVuZHMgT3V0ZXIuQm9vIHsgfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9OZXdJbm5lckNsYXNzT2ZTdXBlci1vdXQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9OZXdJbm5lckNsYXNzT2ZTdXBlci1vdXQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNzA4OTU0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL05ld0lubmVyQ2xhc3NPZlN1cGVyLW91dC5qYXZhCkBAIC0wLDAgKzEsMTMgQEAKK3B1YmxpYyBjbGFzcyBab28yIHsKKyAgICBzdGF0aWMgY2xhc3MgSGFuZGxlciB7fQorfQorCitjbGFzcyBab28zIGV4dGVuZHMgWm9vMiB7CisgICAgY2xhc3MgTXlIYW5kbGVyIGV4dGVuZHMgSGFuZGxlciB7fQorfQorCitjbGFzcyBab280IGV4dGVuZHMgWm9vMyB7CisgICAgeworICAgICAgICBIYW5kbGVyIGhhbmRsZXIgPSBuZXcgTXlIYW5kbGVyKCk7PGNhcmV0PgorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvTmV3SW5uZXJDbGFzc09mU3VwZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9OZXdJbm5lckNsYXNzT2ZTdXBlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQyOWYyODYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvTmV3SW5uZXJDbGFzc09mU3VwZXIuamF2YQpAQCAtMCwwICsxLDEzIEBACitwdWJsaWMgY2xhc3MgWm9vMiB7CisgICAgc3RhdGljIGNsYXNzIEhhbmRsZXIge30KK30KKworY2xhc3MgWm9vMyBleHRlbmRzIFpvbzIgeworICAgIGNsYXNzIE15SGFuZGxlciBleHRlbmRzIEhhbmRsZXIge30KK30KKworY2xhc3MgWm9vNCBleHRlbmRzIFpvbzMgeworICAgIHsKKyAgICAgICAgSGFuZGxlciBoYW5kbGVyID0gbmV3IE08Y2FyZXQ+CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9OZXdJbm5lck9mUGFyYW1ldGVyaXplZENsYXNzLW91dC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL05ld0lubmVyT2ZQYXJhbWV0ZXJpemVkQ2xhc3Mtb3V0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmMwMTVmYwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9OZXdJbm5lck9mUGFyYW1ldGVyaXplZENsYXNzLW91dC5qYXZhCkBAIC0wLDAgKzEsMTIgQEAKK3B1YmxpYyBjbGFzcyBFeGVjdXRpb25DaGFubmVsPAorICAgICAgICBUX0NvbnZlcnNhdGlvbklkLAorICAgICAgICBUX0NvbnZlcnNhdGlvbiwKKyAgICAgICAgVF9Db25maWd1cmF0aW9uLAorICAgICAgICBUX1Byb3RvY29sT2JqZWN0PiB7CisKKyBwcml2YXRlIEV4ZWN1dGlvbkNoYW5uZWxDYWNoZU9ic2VydmVyIHkgPSBuZXcgRXhlY3V0aW9uQ2hhbm5lbENhY2hlT2JzZXJ2ZXIoKTs8Y2FyZXQ+CisKKyBwcml2YXRlIGNsYXNzIEV4ZWN1dGlvbkNoYW5uZWxDYWNoZU9ic2VydmVyIHsKKyB9CisKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvTmV3SW5uZXJPZlBhcmFtZXRlcml6ZWRDbGFzcy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL05ld0lubmVyT2ZQYXJhbWV0ZXJpemVkQ2xhc3MuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MDAzNzRhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL05ld0lubmVyT2ZQYXJhbWV0ZXJpemVkQ2xhc3MuamF2YQpAQCAtMCwwICsxLDEyIEBACitwdWJsaWMgY2xhc3MgRXhlY3V0aW9uQ2hhbm5lbDwKKyAgICAgICAgVF9Db252ZXJzYXRpb25JZCwKKyAgICAgICAgVF9Db252ZXJzYXRpb24sCisgICAgICAgIFRfQ29uZmlndXJhdGlvbiwKKyAgICAgICAgVF9Qcm90b2NvbE9iamVjdD4geworCisgcHJpdmF0ZSBFeGVjdXRpb25DaGFubmVsQ2FjaGVPYnNlcnZlciB5ID0gbmV3IDxjYXJldD4KKworIHByaXZhdGUgY2xhc3MgRXhlY3V0aW9uQ2hhbm5lbENhY2hlT2JzZXJ2ZXIgeworIH0KKworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9OZXdJbm5lclJ1bm5hYmxlLW91dC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL05ld0lubmVyUnVubmFibGUtb3V0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjBkZmM0OQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9OZXdJbm5lclJ1bm5hYmxlLW91dC5qYXZhCkBAIC0wLDAgKzEsMTMgQEAKK2ludGVyZmFjZSBSdW5uYWJsZSB7fQorCitjbGFzcyBNeUNsYXNzIHsKKyAgc3RhdGljIGNsYXNzIEZvbyBpbXBsZW1lbnRzIFJ1bm5hYmxlIHt9Cit9CisKK2NsYXNzIEdvbyBpbXBsZW1lbnRzIFJ1bm5hYmxlIHt9CisKK2NsYXNzIFhYWCB7CisgIHsKKyAgICBSdW5uYWJsZSByID0gbmV3IE15Q2xhc3MuRm9vKCk7PGNhcmV0PgorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL05ld0lubmVyUnVubmFibGUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9OZXdJbm5lclJ1bm5hYmxlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzYxZDNjMAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9OZXdJbm5lclJ1bm5hYmxlLmphdmEKQEAgLTAsMCArMSwxMyBAQAoraW50ZXJmYWNlIFJ1bm5hYmxlIHt9CisKK2NsYXNzIE15Q2xhc3MgeworICBzdGF0aWMgY2xhc3MgRm9vIGltcGxlbWVudHMgUnVubmFibGUge30KK30KKworY2xhc3MgR29vIGltcGxlbWVudHMgUnVubmFibGUge30KKworY2xhc3MgWFhYIHsKKyAgeworICAgIFJ1bm5hYmxlIHIgPSBuZXcgTXlDbGFzcy48Y2FyZXQ+CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvTmV3VmFyYXJnLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvTmV3VmFyYXJnLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmQ0YWQ0ZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9OZXdWYXJhcmcuamF2YQpAQCAtMCwwICsxLDkgQEAKK2ludGVyZmFjZSBGb28ge30KKworY2xhc3MgQmFyIHsKKyAgICB2b2lkIGZvbyhGb28uLi4gZikKKworICAgIHsKKyAgICAgICAgZm9vKG5ldyA8Y2FyZXQ+KQorICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9OZXdWYXJhcmcyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvTmV3VmFyYXJnMi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNjZTVlOTYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvTmV3VmFyYXJnMi5qYXZhCkBAIC0wLDAgKzEsOSBAQAoraW1wb3J0IGphdmEudXRpbC5MaXN0OworCitjbGFzcyBBIHsKKyAgcHVibGljIHN0YXRpYyA8VD4gTGlzdDxUPiBhc0xpc3QoVC4uLiBhKSB7IH0KKworICBMaXN0PFN0cmluZz4gbSgpIHsKKyAgICByZXR1cm4gYXNMaXN0KG5ldyA8Y2FyZXQ+KTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9Ob0NsYXNzTGl0ZXJhbC1vdXQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9Ob0NsYXNzTGl0ZXJhbC1vdXQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYTliNjFhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL05vQ2xhc3NMaXRlcmFsLW91dC5qYXZhCkBAIC0wLDAgKzEsNiBAQAorY2xhc3MgQyB7CisgIDxUPiB2b2lkIGggKENsYXNzPD8gZXh0ZW5kcyBUPiBjbGF6eikge30KKyAgeworICAgIGgoPGNhcmV0Pik7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvTm9DbGFzc0xpdGVyYWwuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9Ob0NsYXNzTGl0ZXJhbC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJhOWI2MWEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvTm9DbGFzc0xpdGVyYWwuamF2YQpAQCAtMCwwICsxLDYgQEAKK2NsYXNzIEMgeworICA8VD4gdm9pZCBoIChDbGFzczw/IGV4dGVuZHMgVD4gY2xhenopIHt9CisgIHsKKyAgICBoKDxjYXJldD4pOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL05vQ29tbWFCZWZvcmVWYXJhcmdzLW91dC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL05vQ29tbWFCZWZvcmVWYXJhcmdzLW91dC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZmN2U1NGUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvTm9Db21tYUJlZm9yZVZhcmFyZ3Mtb3V0LmphdmEKQEAgLTAsMCArMSw4IEBACitjbGFzcyBGb29vbyB7CisgICAgaW50IGJhcihpbnQgYSwgT2JqZWN0Li4uIHZhcmFyZ3MpIHt9CisKKyAgICBpbnQgZm9vKCkgeworICAgICAgICBiYXIoaGFzaENvZGUoKTxjYXJldD4pOworICAgIH0KKworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL05vQ29tbWFCZWZvcmVWYXJhcmdzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvTm9Db21tYUJlZm9yZVZhcmFyZ3MuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZDU4ODEzMgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9Ob0NvbW1hQmVmb3JlVmFyYXJncy5qYXZhCkBAIC0wLDAgKzEsOCBAQAorY2xhc3MgRm9vb28geworICAgIGludCBiYXIoaW50IGEsIE9iamVjdC4uLiB2YXJhcmdzKSB7fQorCisgICAgaW50IGZvbygpIHsKKyAgICAgICAgYmFyKGhhPGNhcmV0Pik7CisgICAgfQorCit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvTm9Db25zdHJ1Y3RvclRhaWxXaGVuTm9QYWlyQnJhY2tldC1vdXQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9Ob0NvbnN0cnVjdG9yVGFpbFdoZW5Ob1BhaXJCcmFja2V0LW91dC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBhYzU4NDIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvTm9Db25zdHJ1Y3RvclRhaWxXaGVuTm9QYWlyQnJhY2tldC1vdXQuamF2YQpAQCAtMCwwICsxLDUgQEAKK2NsYXNzIEEgeworICB7CisgICAgU3RyaW5nIGMgPSBuZXcgU3RyaW5nKDxjYXJldD4KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9Ob0NvbnN0cnVjdG9yVGFpbFdoZW5Ob1BhaXJCcmFja2V0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvTm9Db25zdHJ1Y3RvclRhaWxXaGVuTm9QYWlyQnJhY2tldC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYwNWMwMjEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvTm9Db25zdHJ1Y3RvclRhaWxXaGVuTm9QYWlyQnJhY2tldC5qYXZhCkBAIC0wLDAgKzEsNSBAQAorY2xhc3MgQSB7CisgIHsKKyAgICBTdHJpbmcgYyA9IG5ldyBTdHJpPGNhcmV0PgorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL05vRmllbGRzSW5TdXBlckNvbnN0cnVjdG9yQ2FsbC1vdXQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9Ob0ZpZWxkc0luU3VwZXJDb25zdHJ1Y3RvckNhbGwtb3V0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGQ0ZTA0YgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9Ob0ZpZWxkc0luU3VwZXJDb25zdHJ1Y3RvckNhbGwtb3V0LmphdmEKQEAgLTAsMCArMSwxMSBAQAorY2xhc3MgQSB7CisgIEEoaW50IGEpIHt9Cit9CisKK2NsYXNzIEIgZXh0ZW5kcyBBIHsKKyAgaW50IGFhYTsKKworICBCKGludCBhYWIpIHsKKyAgICBzdXBlcihhYWIpOzxjYXJldD4KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9Ob0ZpZWxkc0luU3VwZXJDb25zdHJ1Y3RvckNhbGwuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9Ob0ZpZWxkc0luU3VwZXJDb25zdHJ1Y3RvckNhbGwuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NTRjZmM0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL05vRmllbGRzSW5TdXBlckNvbnN0cnVjdG9yQ2FsbC5qYXZhCkBAIC0wLDAgKzEsMTEgQEAKK2NsYXNzIEEgeworICBBKGludCBhKSB7fQorfQorCitjbGFzcyBCIGV4dGVuZHMgQSB7CisgIGludCBhYWE7CisKKyAgQihpbnQgYWFiKSB7CisgICAgc3VwZXIoYTxjYXJldD4pOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL05vSW5zdGFuY2VvZmVkVmFsdWVJbkVsc2UuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9Ob0luc3RhbmNlb2ZlZFZhbHVlSW5FbHNlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzUyYmIzYwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9Ob0luc3RhbmNlb2ZlZFZhbHVlSW5FbHNlLmphdmEKQEAgLTAsMCArMSwxMyBAQAorcHVibGljIGNsYXNzIFRlc3RDYXNlIGV4dGVuZHMgWnp6IHsKKyAgYm9vbGVhbiBmb28oU3RyaW5nIHMpIHsKKyAgIH0KKworCisgICAgeworICAgICAgICBPYmplY3Qgb29vOworICAgICAgICBpZiAob29vIGluc3RhbmNlb2YgU3RyaW5nKSB7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgZm9vKG9vPGNhcmV0PikKKyAgICAgICAgfQorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvTm9JbnN0YW5jZW9mZWRWYWx1ZUluRWxzZVdpdGhDb21wbGV4SWYuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9Ob0luc3RhbmNlb2ZlZFZhbHVlSW5FbHNlV2l0aENvbXBsZXhJZi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkzNjAwNzQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvTm9JbnN0YW5jZW9mZWRWYWx1ZUluRWxzZVdpdGhDb21wbGV4SWYuamF2YQpAQCAtMCwwICsxLDEzIEBACitwdWJsaWMgY2xhc3MgVGVzdENhc2UgZXh0ZW5kcyBaenogeworICBib29sZWFuIGZvbyhTdHJpbmcgcykgeworICAgfQorCisKKyAgICB7CisgICAgICAgIE9iamVjdCBvb287CisgICAgICAgIGlmIChvb28gaW5zdGFuY2VvZiBTdHJpbmcgJiYgdHJ1ZSkgeworICAgICAgICB9IGVsc2UgeworICAgICAgICAgIGZvbyhvbzxjYXJldD4pCisgICAgICAgIH0KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL05vSW5zdGFuY2VvZmVkVmFsdWVJblRoZW5OZWdhdGVkLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvTm9JbnN0YW5jZW9mZWRWYWx1ZUluVGhlbk5lZ2F0ZWQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NDQ2NjkyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL05vSW5zdGFuY2VvZmVkVmFsdWVJblRoZW5OZWdhdGVkLmphdmEKQEAgLTAsMCArMSw5IEBACitwdWJsaWMgY2xhc3MgVGVzdENhc2UgZXh0ZW5kcyBaenogeworCisgICAgeworICAgICAgICBPYmplY3Qgb29vOworICAgICAgICBpZiAoIShvb28gaW5zdGFuY2VvZiBTdHJpbmcpKSB7CisgICAgICAgICAgU3RyaW5nIHMgPSBvbzxjYXJldD4KKyAgICAgICAgfQorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvTm9JbnN0YW5jZW9mZWRWYWx1ZVdoZW5CYXNpY1N1aXRzLW91dC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL05vSW5zdGFuY2VvZmVkVmFsdWVXaGVuQmFzaWNTdWl0cy1vdXQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMzBiZWI4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL05vSW5zdGFuY2VvZmVkVmFsdWVXaGVuQmFzaWNTdWl0cy1vdXQuamF2YQpAQCAtMCwwICsxLDExIEBACitwdWJsaWMgY2xhc3MgVGVzdENhc2UgZXh0ZW5kcyBaenogeworCisgICAgT2JqZWN0IG9vbygpIHt9CisKKyAgICB7CisgICAgICAgIGlmICghKG9vbygpIGluc3RhbmNlb2YgU3RyaW5nKSkgeworICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBPYmplY3QgcyA9IG9vbygpOzxjYXJldD4KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL05vSW5zdGFuY2VvZmVkVmFsdWVXaGVuQmFzaWNTdWl0cy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL05vSW5zdGFuY2VvZmVkVmFsdWVXaGVuQmFzaWNTdWl0cy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmExM2JjMDUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvTm9JbnN0YW5jZW9mZWRWYWx1ZVdoZW5CYXNpY1N1aXRzLmphdmEKQEAgLTAsMCArMSwxMSBAQAorcHVibGljIGNsYXNzIFRlc3RDYXNlIGV4dGVuZHMgWnp6IHsKKworICAgIE9iamVjdCBvb28oKSB7fQorCisgICAgeworICAgICAgICBpZiAoIShvb28oKSBpbnN0YW5jZW9mIFN0cmluZykpIHsKKyAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgT2JqZWN0IHMgPSBvPGNhcmV0PgorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvTm9LZXlDb25zdGFudC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL05vS2V5Q29uc3RhbnQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MzAyMmM1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL05vS2V5Q29uc3RhbnQuamF2YQpAQCAtMCwwICsxLDI1IEBACitjbGFzcyBLZXk8VD4geworICBzdGF0aWMgPFQ+IEtleTxUPiBjcmVhdGUoKSB7fQorfQorCitpbnRlcmZhY2UgSW50ZjxULExvYz4ge30KK2NsYXNzIEltcGwgaW1wbGVtZW50cyBJbnRmPFN0cmluZyxTdHJpbmc+IHt9CisKK2ludGVyZmFjZSBJQmFyIHsKKyAgS2V5PEltcGw+IEFfS0VZID0gS2V5LmNyZWF0ZSgiYSIpOworfQorCitjbGFzcyBCYXIgaW1wbGVtZW50cyBJQmFyIHsKKworICB7CisgICAgSUJhciBpdGVtOworICAgIG5ldyBGb28oKS5pbmNVc2VDb3VudCg8Y2FyZXQ+aXRlbSk7CisgIH0KK30KKworY2xhc3MgRm9vIHsKKworICBwdWJsaWMgPFQsIExvYz4gdm9pZCBpbmNVc2VDb3VudChmaW5hbCBLZXk8PyBleHRlbmRzIEludGY8VCwgTG9jPj4ga2V5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaW5hbCBUIGVsZW1lbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbmFsIExvYyBsb2NhdGlvbikge30KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9Ob05ld0VudW0uamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9Ob05ld0VudW0uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYTA0ZGEwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL05vTmV3RW51bS5qYXZhCkBAIC0wLDAgKzEsMTcgQEAKK2ludGVyZmFjZSBGb28geworfQorCitlbnVtIEZvb0VudW0gaW1wbGVtZW50cyBGb28geworICAgIE9ORSwgVFdPOworfQorCitjbGFzcyBEb28geworICAgIHZvaWQgZG9Tb21ldGhpbmcoRm9vIGYpIHsKKyAgICB9CisKKyAgICB2b2lkIGRvU29tZXRoaW5nRWxzZSgpIHsKKyAgICAgICAgZG9Tb21ldGhpbmcobmV3IDxjYXJldD4pOworICAgIH0KKworfQorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvTm9OdWxsQWZ0ZXJEb3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9Ob051bGxBZnRlckRvdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJlYjc4ZWYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvTm9OdWxsQWZ0ZXJEb3QuamF2YQpAQCAtMCwwICsxLDYgQEAKK3B1YmxpYyBjbGFzcyBGb28geworICAgIAorICAgIHsKKyAgICAgIFN0cmluZyBzID0gU3RyaW5nVXRpbC5uPGNhcmV0PgorICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9Ob1NlY29uZE1ldGhvZFR5cGVBcmd1bWVudHMtb3V0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvTm9TZWNvbmRNZXRob2RUeXBlQXJndW1lbnRzLW91dC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZmZDkzNmUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvTm9TZWNvbmRNZXRob2RUeXBlQXJndW1lbnRzLW91dC5qYXZhCkBAIC0wLDAgKzEsOSBAQAoraW1wb3J0IGphdmEudXRpbC5Db2xsZWN0aW9uczsKK2ltcG9ydCBqYXZhLnV0aWwuTGlzdDsKKworY2xhc3MgQSB7CisgICAgdm9pZCBmb28oTGlzdDxTdHJpbmc+IHgpe30KKyAgICB7CisgICAgICAgIGZvbyhDb2xsZWN0aW9ucy48U3RyaW5nPmVtcHR5TGlzdCgpKTs8Y2FyZXQ+CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9Ob1NlY29uZE1ldGhvZFR5cGVBcmd1bWVudHMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9Ob1NlY29uZE1ldGhvZFR5cGVBcmd1bWVudHMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kODFlYTBkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL05vU2Vjb25kTWV0aG9kVHlwZUFyZ3VtZW50cy5qYXZhCkBAIC0wLDAgKzEsOSBAQAoraW1wb3J0IGphdmEudXRpbC5Db2xsZWN0aW9uczsKK2ltcG9ydCBqYXZhLnV0aWwuTGlzdDsKKworY2xhc3MgQSB7CisgICAgdm9pZCBmb28oTGlzdDxTdHJpbmc+IHgpe30KKyAgICB7CisgICAgICAgIGZvbyhDb2xsZWN0aW9ucy48U3RyaW5nPmVtcHR5TDxjYXJldD5pc3QoKSk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9Ob1RhaWxXaGVuTm9QYWlyQnJhY2tldC1vdXQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9Ob1RhaWxXaGVuTm9QYWlyQnJhY2tldC1vdXQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZDcyYjEyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL05vVGFpbFdoZW5Ob1BhaXJCcmFja2V0LW91dC5qYXZhCkBAIC0wLDAgKzEsNiBAQAorY2xhc3MgQSB7CisgIHsKKyAgICBTdHJpbmcgeDsKKyAgICBDbGFzcyBjID0geC5nZXRDbGFzcyg8Y2FyZXQ+CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvTm9UYWlsV2hlbk5vUGFpckJyYWNrZXQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9Ob1RhaWxXaGVuTm9QYWlyQnJhY2tldC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ5MGZiYWUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvTm9UYWlsV2hlbk5vUGFpckJyYWNrZXQuamF2YQpAQCAtMCwwICsxLDYgQEAKK2NsYXNzIEEgeworICB7CisgICAgU3RyaW5nIHg7CisgICAgQ2xhc3MgYyA9IHguZ2V0Q2w8Y2FyZXQ+CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvTm9UYWlsV2hlbk5vUGFpckJyYWNrZXQyLW91dC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL05vVGFpbFdoZW5Ob1BhaXJCcmFja2V0Mi1vdXQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZGJlYWE2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL05vVGFpbFdoZW5Ob1BhaXJCcmFja2V0Mi1vdXQuamF2YQpAQCAtMCwwICsxLDcgQEAKK2NsYXNzIEEgeworICB7CisgICAgQ2xhc3MgYyA9IHRoaXMueHh4eHgoPGNhcmV0PgorICB9CisKKyAgQ2xhc3MgeHh4eHgoKSB7fQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9Ob1RhaWxXaGVuTm9QYWlyQnJhY2tldDIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9Ob1RhaWxXaGVuTm9QYWlyQnJhY2tldDIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMWQxZDY1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL05vVGFpbFdoZW5Ob1BhaXJCcmFja2V0Mi5qYXZhCkBAIC0wLDAgKzEsNyBAQAorY2xhc3MgQSB7CisgIHsKKyAgICBDbGFzcyBjID0gdGhpcy54eDxjYXJldD4KKyAgfQorCisgIENsYXNzIHh4eHh4KCkge30KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvTm9UeXBlUGFyYW1ldGVyc0ZvclRvQXJyYXktb3V0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvTm9UeXBlUGFyYW1ldGVyc0ZvclRvQXJyYXktb3V0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmI2ODdkMwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9Ob1R5cGVQYXJhbWV0ZXJzRm9yVG9BcnJheS1vdXQuamF2YQpAQCAtMCwwICsxLDggQEAKK2NsYXNzIEZvbyB7CisgIHZvaWQgYmFyKE9iamVjdFtdIG8pIHt9CisKKyAgT2JqZWN0W10gZm9vKCkgeworICAgIGphdmEudXRpbC5TZXQ8U3RyaW5nPiBzZXQ7CisgICAgYmFyKHNldC50b0FycmF5KDxjYXJldD4pKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9Ob1R5cGVQYXJhbWV0ZXJzRm9yVG9BcnJheS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL05vVHlwZVBhcmFtZXRlcnNGb3JUb0FycmF5LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWM0N2I3MQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9Ob1R5cGVQYXJhbWV0ZXJzRm9yVG9BcnJheS5qYXZhCkBAIC0wLDAgKzEsOCBAQAorY2xhc3MgRm9vIHsKKyAgdm9pZCBiYXIoT2JqZWN0W10gbykge30KKworICBPYmplY3RbXSBmb28oKSB7CisgICAgamF2YS51dGlsLlNldDxTdHJpbmc+IHNldDsKKyAgICBiYXIoc2V0LnRvPGNhcmV0PikKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9Ob1VuaW5pdGlhbGl6ZWRGaWVsZHNJbkNvbnN0cnVjdG9yLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvTm9VbmluaXRpYWxpemVkRmllbGRzSW5Db25zdHJ1Y3Rvci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRkNDUxODkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvTm9VbmluaXRpYWxpemVkRmllbGRzSW5Db25zdHJ1Y3Rvci5qYXZhCkBAIC0wLDAgKzEsOCBAQAorY2xhc3MgQSB7CisgIGludCBhYWE7CisgIGludCBhYWI7CisgIEEoaW50IGFhYykgeworICAgIGFhYSA9IGE8Y2FyZXQ+CisgIH0KK30KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL05vV3JvbmdTdWJzdGl0dXRvckZyb21TdGF0cy1vdXQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9Ob1dyb25nU3Vic3RpdHV0b3JGcm9tU3RhdHMtb3V0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGY2ODkwMQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9Ob1dyb25nU3Vic3RpdHV0b3JGcm9tU3RhdHMtb3V0LmphdmEKQEAgLTAsMCArMSwxNiBAQAoraW1wb3J0IGphdmEudXRpbC5Db21wYXJhdG9yOworaW1wb3J0IGphdmEudXRpbC5MaXN0OworaW1wb3J0IGphdmEudXRpbC5Db2xsZWN0aW9uczsKKworcHVibGljIGNsYXNzIEZvbyB7CisgICAgcHJpdmF0ZSBMaXN0PFN0cmluZz4gbXlMaXN0OworCisgICAgcHJpdmF0ZSB2b2lkIHNvcnQoKSB7CisgICAgICAgIENvbGxlY3Rpb25zLnNvcnQobXlMaXN0LCBuZXcgQ29tcGFyYXRvcjxTdHJpbmc+KCkgeworICAgICAgICAgICAgQE92ZXJyaWRlCisgICAgICAgICAgICBwdWJsaWMgaW50IGNvbXBhcmUoU3RyaW5nIG8xLCBTdHJpbmcgbzIpIHsKKyAgICAgICAgICAgICAgICA8c2VsZWN0aW9uPnJldHVybiAwOyAgLy9UbyBjaGFuZ2UgYm9keSBvZiBpbXBsZW1lbnRlZCBtZXRob2RzIHVzZSBGaWxlIHwgU2V0dGluZ3MgfCBGaWxlIFRlbXBsYXRlcy48L3NlbGVjdGlvbj4KKyAgICAgICAgICAgIH0KKyAgICAgICAgfSk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL05vV3JvbmdTdWJzdGl0dXRvckZyb21TdGF0cy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL05vV3JvbmdTdWJzdGl0dXRvckZyb21TdGF0cy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBlNGM3YTgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvTm9Xcm9uZ1N1YnN0aXR1dG9yRnJvbVN0YXRzLmphdmEKQEAgLTAsMCArMSwxMCBAQAoraW1wb3J0IGphdmEudXRpbC5MaXN0OworaW1wb3J0IGphdmEudXRpbC5Db2xsZWN0aW9uczsKKworcHVibGljIGNsYXNzIEZvbyB7CisgICAgcHJpdmF0ZSBMaXN0PFN0cmluZz4gbXlMaXN0OworCisgICAgcHJpdmF0ZSB2b2lkIHNvcnQoKSB7CisgICAgICAgIENvbGxlY3Rpb25zLnNvcnQobXlMaXN0LCBuZXcgQ29tcGFyYXRvcjxjYXJldD4pOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9Ob25FeGlzdGVudEdlbmVyaWNBZnRlck5ldy1vdXQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9Ob25FeGlzdGVudEdlbmVyaWNBZnRlck5ldy1vdXQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42OTVmZjU4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL05vbkV4aXN0ZW50R2VuZXJpY0FmdGVyTmV3LW91dC5qYXZhCkBAIC0wLDAgKzEsNyBAQAoraW1wb3J0IGphdmEudXRpbC5IYXNoTWFwOworCitjbGFzcyBUZXN0IHsKKyAgICB2b2lkIHRlc3QoKSB7CisgICAgICBqYXZhLnV0aWwuTWFwPFN0cmluZywgQ2xhc3NUaGF0RG9lc05vdEV4aXN0WWV0PiBtYXAgPSBuZXcgSGFzaE1hcDxTdHJpbmcsIENsYXNzVGhhdERvZXNOb3RFeGlzdFlldD4oPGNhcmV0Pik7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9Ob25FeGlzdGVudEdlbmVyaWNBZnRlck5ldy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL05vbkV4aXN0ZW50R2VuZXJpY0FmdGVyTmV3LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2YxOGEzNQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9Ob25FeGlzdGVudEdlbmVyaWNBZnRlck5ldy5qYXZhCkBAIC0wLDAgKzEsNSBAQAorY2xhc3MgVGVzdCB7CisgICAgdm9pZCB0ZXN0KCkgeworICAgICAgamF2YS51dGlsLk1hcDxTdHJpbmcsIENsYXNzVGhhdERvZXNOb3RFeGlzdFlldD4gbWFwID0gbmV3IEhhc2hNPGNhcmV0PgorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvTm9uU3RhdGljRmllbGQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9Ob25TdGF0aWNGaWVsZC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNmYTRhZjAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvTm9uU3RhdGljRmllbGQuamF2YQpAQCAtMCwwICsxLDE1IEBACitwdWJsaWMgY2xhc3MgU21hcnRDb21wbGV0aW9uVGVzdCB7CisgIGludGVyZmFjZSBTbWFydENvbXBsZXRpb25UeXBlIHt9CisgIAorICBwcml2YXRlIFNtYXJ0Q29tcGxldGlvblR5cGUgbXlOb25TdGF0aWNGaWVsZDsKKyAgCisgIHByaXZhdGUgc3RhdGljIHZvaWQgc3RhdGljTWV0aG9kKFNtYXJ0Q29tcGxldGlvblR5cGUgdHlwZSkge30KKyAgCisgIHByaXZhdGUgc3RhdGljIGNsYXNzIFN0YXRpY0lubmVyQ2xhc3MgZXh0ZW5kcyBTbWFydENvbXBsZXRpb25UZXN0IHsKKyAgICAKKyAgICBwcml2YXRlIHZvaWQgbWV0aG9kKCkgeworICAgICAgc3RhdGljTWV0aG9kKG15Tm9uPGNhcmV0Pik7CisgICAgfQorICAgIAorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL05vblN0YXRpY0lubmVyQ2xhc3MuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9Ob25TdGF0aWNJbm5lckNsYXNzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODdjZDllYgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9Ob25TdGF0aWNJbm5lckNsYXNzLmphdmEKQEAgLTAsMCArMSwxMiBAQAorcHVibGljIGNsYXNzIE91dGVyIHsKKyAgICBwdWJsaWMgY2xhc3MgSW5uZXIgeworICAgICAgICBwdWJsaWMgSW5uZXIoKSB7CisgICAgICAgIH0KKyAgICB9Cit9CisKK2NsYXNzIE91dGVyTWFpbiB7CisgICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgeworICAgICAgICBPdXRlci5Jbm5lciBpbm5lciA9IG5ldyA8Y2FyZXQ+CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9PbmVFbGVtZW50QXJyYXktb3V0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvT25lRWxlbWVudEFycmF5LW91dC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM2MmVhNTAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvT25lRWxlbWVudEFycmF5LW91dC5qYXZhCkBAIC0wLDAgKzEsOCBAQAorcHVibGljIGNsYXNzIFNvbWVDbGFzcyB7CisKKyAgICB7CisgICAgICAgIGludFtdIGFhYSA9IG5ldyBpbnRbMV07CisgICAgICAgIGludCBiYmIgPSBhYWFbMF07PGNhcmV0PgorICAgIH0KKworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL09uZUVsZW1lbnRBcnJheS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL09uZUVsZW1lbnRBcnJheS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUzMTE2MmMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvT25lRWxlbWVudEFycmF5LmphdmEKQEAgLTAsMCArMSw4IEBACitwdWJsaWMgY2xhc3MgU29tZUNsYXNzIHsKKworICAgIHsKKyAgICAgICAgaW50W10gYWFhID0gbmV3IGludFsxXTsKKyAgICAgICAgaW50IGJiYiA9IGE8Y2FyZXQ+CisgICAgfQorCit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvT3ZlcmxvYWRlZE1ldGhvZHMtb3V0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvT3ZlcmxvYWRlZE1ldGhvZHMtb3V0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWM5MWNmNgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9PdmVybG9hZGVkTWV0aG9kcy1vdXQuamF2YQpAQCAtMCwwICsxLDEzIEBACitpbnRlcmZhY2UgQ29tcGFyYWJsZTxUIGV4dGVuZHMgQ29tcGFyYWJsZTxUPj4ge30KK2NsYXNzIExpc3Q8VD4ge30KK2NsYXNzIENvbGxlY3Rpb25zIHsKKyAgc3RhdGljIDxUIGV4dGVuZHMgQ29tcGFyYWJsZTw/IHN1cGVyIFQ+PiB2b2lkIHNvcnQoTGlzdDxUPiBsaXN0KSB7fQorICBzdGF0aWMgPFQ+IHZvaWQgc29ydChMaXN0PFQ+IGxpc3QsIENvbXBhcmF0b3I8PyBzdXBlciBUPiBjKSB7fQorfQorCitjbGFzcyBGb28gaW1wbGVtZW50cyBDb21wYXJhYmxlPEZvbz4geworICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKXsKKyAgICBMaXN0PEZvbz4gbGlzdDsKKyAgICBDb2xsZWN0aW9ucy5zb3J0KGxpc3Q8Y2FyZXQ+KQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL092ZXJsb2FkZWRNZXRob2RzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvT3ZlcmxvYWRlZE1ldGhvZHMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YWQyODlhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL092ZXJsb2FkZWRNZXRob2RzLmphdmEKQEAgLTAsMCArMSwxMyBAQAoraW50ZXJmYWNlIENvbXBhcmFibGU8VCBleHRlbmRzIENvbXBhcmFibGU8VD4+IHt9CitjbGFzcyBMaXN0PFQ+IHt9CitjbGFzcyBDb2xsZWN0aW9ucyB7CisgIHN0YXRpYyA8VCBleHRlbmRzIENvbXBhcmFibGU8PyBzdXBlciBUPj4gdm9pZCBzb3J0KExpc3Q8VD4gbGlzdCkge30KKyAgc3RhdGljIDxUPiB2b2lkIHNvcnQoTGlzdDxUPiBsaXN0LCBDb21wYXJhdG9yPD8gc3VwZXIgVD4gYykge30KK30KKworY2xhc3MgRm9vIGltcGxlbWVudHMgQ29tcGFyYWJsZTxGb28+IHsKKyAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncyl7CisgICAgTGlzdDxGb28+IGxpc3Q7CisgICAgQ29sbGVjdGlvbnMuc29ydChsPGNhcmV0PikKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9QYXJhbWV0ZXJpemVkQ29uc3RydWN0b3Itb3V0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvUGFyYW1ldGVyaXplZENvbnN0cnVjdG9yLW91dC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQzNDQ5MGMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvUGFyYW1ldGVyaXplZENvbnN0cnVjdG9yLW91dC5qYXZhCkBAIC0wLDAgKzEsMTQgQEAKK2NsYXNzIENvbGxlY3Rpb248VD4ge30KKworY2xhc3MgQ29tbWVudENvbXBsZXRpb248VD4geworCisgICAgc3RhdGljIHsKKyAgICAgICAgQ29sbGVjdGlvbjxJbnRlZ2VyPiBjOworICAgICAgICBuZXcgQ29tbWVudENvbXBsZXRpb248SW50ZWdlcj4oYyk7CisgICAgfQorCisgICAgPEUgZXh0ZW5kcyBUPiBDb21tZW50Q29tcGxldGlvbihDb2xsZWN0aW9uPEU+IGNvbGxlY3Rpb24pIHsKKworICAgIH0KKworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9QYXJhbWV0ZXJpemVkQ29uc3RydWN0b3IuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9QYXJhbWV0ZXJpemVkQ29uc3RydWN0b3IuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MzBiMDI1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL1BhcmFtZXRlcml6ZWRDb25zdHJ1Y3Rvci5qYXZhCkBAIC0wLDAgKzEsMTQgQEAKK2NsYXNzIENvbGxlY3Rpb248VD4ge30KKworY2xhc3MgQ29tbWVudENvbXBsZXRpb248VD4geworCisgICAgc3RhdGljIHsKKyAgICAgICAgQ29sbGVjdGlvbjxJbnRlZ2VyPiBjOworICAgICAgICBuZXcgQ29tbWVudENvbXBsZXRpb248SW50ZWdlcj4oPGNhcmV0Pik7CisgICAgfQorCisgICAgPEUgZXh0ZW5kcyBUPiBDb21tZW50Q29tcGxldGlvbihDb2xsZWN0aW9uPEU+IGNvbGxlY3Rpb24pIHsKKworICAgIH0KKworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9Qb2x5YWRpY0V4cHJlc3Npb24tb3V0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvUG9seWFkaWNFeHByZXNzaW9uLW91dC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY5ZDcyNzIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvUG9seWFkaWNFeHByZXNzaW9uLW91dC5qYXZhCkBAIC0wLDAgKzEsNSBAQAorY2xhc3MgQSB7CisgIGludCBtKCkgeworICAgIHJldHVybiAwICsgMSArIGhhc2hDb2RlKCk8Y2FyZXQ+OworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL1BvbHlhZGljRXhwcmVzc2lvbi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL1BvbHlhZGljRXhwcmVzc2lvbi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ1NmFmOTgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvUG9seWFkaWNFeHByZXNzaW9uLmphdmEKQEAgLTAsMCArMSw1IEBACitjbGFzcyBBIHsKKyAgaW50IG0oKSB7CisgICAgcmV0dXJuIDAgKyAxICsgaGE8Y2FyZXQ+OworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL1ByaW1pdGl2ZUFycmF5Q2xhc3NJbk1ldGhvZC1vdXQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9QcmltaXRpdmVBcnJheUNsYXNzSW5NZXRob2Qtb3V0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjkzY2ViZDUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvUHJpbWl0aXZlQXJyYXlDbGFzc0luTWV0aG9kLW91dC5qYXZhCkBAIC0wLDAgKzEsNSBAQAorY2xhc3MgQmFyIHsKKyAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgeworICAgICAgQ2xhc3M8Pz4gY2xzID0gYnl0ZVtdLmNsYXNzOzxjYXJldD4KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9QcmltaXRpdmVBcnJheUNsYXNzSW5NZXRob2QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9QcmltaXRpdmVBcnJheUNsYXNzSW5NZXRob2QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZWZjYjczCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL1ByaW1pdGl2ZUFycmF5Q2xhc3NJbk1ldGhvZC5qYXZhCkBAIC0wLDAgKzEsNSBAQAorY2xhc3MgQmFyIHsKKyAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgeworICAgICAgQ2xhc3M8Pz4gY2xzID0gYnl0ZVtdLjxjYXJldD4KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9QcmltaXRpdmVDbGFzc0luQW5uby1vdXQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9QcmltaXRpdmVDbGFzc0luQW5uby1vdXQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iM2I0M2NlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL1ByaW1pdGl2ZUNsYXNzSW5Bbm5vLW91dC5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKK2NsYXNzIEJhciB7CisgIEBpbnRlcmZhY2UgQiB7CisgICAgICBDbGFzczw/PiB2YWx1ZSgpOworICB9CisKKyAgQEIoYnl0ZVtdLmNsYXNzPGNhcmV0PikKKyAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgeworICB9CisKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvUHJpbWl0aXZlQ2xhc3NJbkFubm8uamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9QcmltaXRpdmVDbGFzc0luQW5uby5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZiNTc5MWYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvUHJpbWl0aXZlQ2xhc3NJbkFubm8uamF2YQpAQCAtMCwwICsxLDEwIEBACitjbGFzcyBCYXIgeworICBAaW50ZXJmYWNlIEIgeworICAgICAgQ2xhc3M8Pz4gdmFsdWUoKTsKKyAgfQorCisgIEBCKGJ5dGVbXS48Y2FyZXQ+KQorICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CisgIH0KKworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9Qcml2YXRlT3ZlcmxvYWRzLW91dC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL1ByaXZhdGVPdmVybG9hZHMtb3V0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmQxYzFhMwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9Qcml2YXRlT3ZlcmxvYWRzLW91dC5qYXZhCkBAIC0wLDAgKzEsMTIgQEAKK2NsYXNzIEEgeworICBwcml2YXRlIHN0YXRpYyB2b2lkIG0oaW50IGEpIHsgfQorICBwdWJsaWMgc3RhdGljIHZvaWQgbShTdHJpbmcgcykgeyB9Cit9CisKK2NsYXNzIEIgeworICB2b2lkIG0oKSB7CisgICAgaW50IHh4eCA9IDA7CisgICAgU3RyaW5nIHh4eSA9ICIiOworICAgIEEubSh4eHkpOzxjYXJldD4KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9Qcml2YXRlT3ZlcmxvYWRzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvUHJpdmF0ZU92ZXJsb2Fkcy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlhNWMzMTYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvUHJpdmF0ZU92ZXJsb2Fkcy5qYXZhCkBAIC0wLDAgKzEsMTIgQEAKK2NsYXNzIEEgeworICBwcml2YXRlIHN0YXRpYyB2b2lkIG0oaW50IGEpIHsgfQorICBwdWJsaWMgc3RhdGljIHZvaWQgbShTdHJpbmcgcykgeyB9Cit9CisKK2NsYXNzIEIgeworICB2b2lkIG0oKSB7CisgICAgaW50IHh4eCA9IDA7CisgICAgU3RyaW5nIHh4eSA9ICIiOworICAgIEEubSh4eDxjYXJldD4pOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL1Byb3RlY3RlZEFub255bW91c0NvbnN0cnVjdG9yLW91dC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL1Byb3RlY3RlZEFub255bW91c0NvbnN0cnVjdG9yLW91dC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA1MDNiNDkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvUHJvdGVjdGVkQW5vbnltb3VzQ29uc3RydWN0b3Itb3V0LmphdmEKQEAgLTAsMCArMSw5IEBACitpbXBvcnQgcGtnLkZvbzsKKworY2xhc3MgQmFyIHsKKworICBwdWJsaWMgdm9pZCBmb28oKSB7CisgICAgbmV3IEZvbyhoYXNoQ29kZSgpKTxjYXJldD4ge30KKyAgfQorCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL1Byb3RlY3RlZEFub255bW91c0NvbnN0cnVjdG9yLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvUHJvdGVjdGVkQW5vbnltb3VzQ29uc3RydWN0b3IuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMWNiMzlhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL1Byb3RlY3RlZEFub255bW91c0NvbnN0cnVjdG9yLmphdmEKQEAgLTAsMCArMSw5IEBACitpbXBvcnQgcGtnLkZvbzsKKworY2xhc3MgQmFyIHsKKworICBwdWJsaWMgdm9pZCBmb28oKSB7CisgICAgbmV3IEZvbyhoYXNoPGNhcmV0Pikge30KKyAgfQorCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL1Byb3RlY3RlZEFub255bW91c0NvbnN0cnVjdG9yMi1vdXQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9Qcm90ZWN0ZWRBbm9ueW1vdXNDb25zdHJ1Y3RvcjItb3V0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjdmM2RlYQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9Qcm90ZWN0ZWRBbm9ueW1vdXNDb25zdHJ1Y3RvcjItb3V0LmphdmEKQEAgLTAsMCArMSwxMSBAQAoraW1wb3J0IHBrZy5CYXI7CisKK2ltcG9ydCBqYXZhLnV0aWwuQXJyYXlMaXN0OworCitjbGFzcyBHb28geworCisgIHB1YmxpYyB2b2lkIGZvbygpIHsKKyAgICBuZXcgQmFyPFN0cmluZz4obmV3IEFycmF5TGlzdDxTdHJpbmc+KDxjYXJldD4pKSB7fQorICB9CisKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvUHJvdGVjdGVkQW5vbnltb3VzQ29uc3RydWN0b3IyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvUHJvdGVjdGVkQW5vbnltb3VzQ29uc3RydWN0b3IyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzBlZTljMGYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvUHJvdGVjdGVkQW5vbnltb3VzQ29uc3RydWN0b3IyLmphdmEKQEAgLTAsMCArMSw5IEBACitpbXBvcnQgcGtnLkJhcjsKKworY2xhc3MgR29vIHsKKworICBwdWJsaWMgdm9pZCBmb28oKSB7CisgICAgbmV3IEJhcjxTdHJpbmc+KG5ldyBBcnJMPGNhcmV0Pikge30KKyAgfQorCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL1F1YWxpZmllZEFmdGVyTmV3LW91dC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL1F1YWxpZmllZEFmdGVyTmV3LW91dC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRkMjJkNWEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvUXVhbGlmaWVkQWZ0ZXJOZXctb3V0LmphdmEKQEAgLTAsMCArMSw1IEBACitjbGFzcyBBIHt7CisgICAgZm9vLkZvbzxTdHJpbmc+IGYgPSBuZXcgYmFyLkJhcigpOzxjYXJldD4KK319CisKK2NsYXNzIEJhciB7fQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9RdWFsaWZpZWRBZnRlck5ldy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL1F1YWxpZmllZEFmdGVyTmV3LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDBkNmFmNQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9RdWFsaWZpZWRBZnRlck5ldy5qYXZhCkBAIC0wLDAgKzEsNSBAQAorY2xhc3MgQSB7eworICAgIGZvby5Gb288U3RyaW5nPiBmID0gbmV3IEI8Y2FyZXQ+Cit9fQorCitjbGFzcyBCYXIge30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvUXVhbGlmaWVkVGhpcy1vdXQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9RdWFsaWZpZWRUaGlzLW91dC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE0ZGQ3ZWYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvUXVhbGlmaWVkVGhpcy1vdXQuamF2YQpAQCAtMCwwICsxLDEzIEBACitjbGFzcyBBIHsKKyAgcHVibGljIHZvaWQgZihBIGEpe30KKworICBwdWJsaWMgdm9pZCBnKCl7CisgICAgQiBiID0gbmV3IEIoKXsKKyAgICAgIHZvaWQgaCgpeworICAgICAgICBmKEEudGhpcyk7PGNhcmV0PgorICAgICAgfQorICAgIH07CisgIH0KKworICBwcml2YXRlIGNsYXNzIEJ7fQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL1F1YWxpZmllZFRoaXMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9RdWFsaWZpZWRUaGlzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzJlZmZmYQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9RdWFsaWZpZWRUaGlzLmphdmEKQEAgLTAsMCArMSwxMyBAQAorY2xhc3MgQSB7CisgIHB1YmxpYyB2b2lkIGYoQSBhKXt9CisKKyAgcHVibGljIHZvaWQgZygpeworICAgIEIgYiA9IG5ldyBCKCl7CisgICAgICB2b2lkIGgoKXsKKyAgICAgICAgZihBLjxjYXJldD4pCisgICAgICB9CisgICAgfTsKKyAgfQorCisgIHByaXZhdGUgY2xhc3MgQnt9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvUXVhbGlmaWVkVGhpc0luQW5vbnltb3VzQ29uc3RydWN0b3Itb3V0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvUXVhbGlmaWVkVGhpc0luQW5vbnltb3VzQ29uc3RydWN0b3Itb3V0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2ExMWMwNwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9RdWFsaWZpZWRUaGlzSW5Bbm9ueW1vdXNDb25zdHJ1Y3Rvci1vdXQuamF2YQpAQCAtMCwwICsxLDExIEBACitwdWJsaWMgY2xhc3MgRm9vIHsKKworICAgIHsKKyAgICAgICAgbmV3IEJhcih0aGlzKTxjYXJldD4ge30KKyAgICB9CisKK30KKworY2xhc3MgQmFyIHsKKyAgICBCYXIoRm9vIGYpIHt9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvUXVhbGlmaWVkVGhpc0luQW5vbnltb3VzQ29uc3RydWN0b3IuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9RdWFsaWZpZWRUaGlzSW5Bbm9ueW1vdXNDb25zdHJ1Y3Rvci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE2NmNkMGEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvUXVhbGlmaWVkVGhpc0luQW5vbnltb3VzQ29uc3RydWN0b3IuamF2YQpAQCAtMCwwICsxLDExIEBACitwdWJsaWMgY2xhc3MgRm9vIHsKKworICAgIHsKKyAgICAgICAgbmV3IEJhcig8Y2FyZXQ+KSB7fQorICAgIH0KKworfQorCitjbGFzcyBCYXIgeworICAgIEJhcihGb28gZikge30KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9SZXBsYWNlV2hvbGVSZWZlcmVuY2VDaGFpbi1vdXQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9SZXBsYWNlV2hvbGVSZWZlcmVuY2VDaGFpbi1vdXQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNDNhNTg3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL1JlcGxhY2VXaG9sZVJlZmVyZW5jZUNoYWluLW91dC5qYXZhCkBAIC0wLDAgKzEsMTEgQEAKK3B1YmxpYyBjbGFzcyBUZXN0Q2FzZSB7CisgIE9iamVjdCBmaWVsZDsKKworICBpbnQgZm9vKCkgeworICAgfQorCisKKyAgICB7CisgICAgICAgIGludCBhID0gZm9vKCk8Y2FyZXQ+ICsgMjsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL1JlcGxhY2VXaG9sZVJlZmVyZW5jZUNoYWluLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvUmVwbGFjZVdob2xlUmVmZXJlbmNlQ2hhaW4uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43Y2VlYTZiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL1JlcGxhY2VXaG9sZVJlZmVyZW5jZUNoYWluLmphdmEKQEAgLTAsMCArMSwxMSBAQAorcHVibGljIGNsYXNzIFRlc3RDYXNlIHsKKyAgT2JqZWN0IGZpZWxkOworCisgIGludCBmb28oKSB7CisgICB9CisKKworICAgIHsKKyAgICAgICAgaW50IGEgPSBmbzxjYXJldD50aGlzLmZpZWxkLmNsb25lKCkuaGFzaENvZGUoKSArIDI7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9TYW1lRmllbGRJbkFub3RoZXJPYmplY3Qtb3V0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvU2FtZUZpZWxkSW5Bbm90aGVyT2JqZWN0LW91dC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU0YzM0ZDQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvU2FtZUZpZWxkSW5Bbm90aGVyT2JqZWN0LW91dC5qYXZhCkBAIC0wLDAgKzEsOCBAQAorY2xhc3MgRm9vIHsKKyAgaW50IGFiY2RlOworCisgIHsKKyAgICBGb28gYTsKKyAgICBhLmFiY2RlID0gYWJjZGU7PGNhcmV0PgorICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvU2FtZUZpZWxkSW5Bbm90aGVyT2JqZWN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvU2FtZUZpZWxkSW5Bbm90aGVyT2JqZWN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjUwZDg3NwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9TYW1lRmllbGRJbkFub3RoZXJPYmplY3QuamF2YQpAQCAtMCwwICsxLDggQEAKK2NsYXNzIEZvbyB7CisgIGludCBhYmNkZTsKKworICB7CisgICAgRm9vIGE7CisgICAgYS5hYmNkZSA9IGFiPGNhcmV0PgorICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvU2FtZU1ldGhvZEFyZ3VtZW50c0luSWYtb3V0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvU2FtZU1ldGhvZEFyZ3VtZW50c0luSWYtb3V0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2Y4OGE3YQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9TYW1lTWV0aG9kQXJndW1lbnRzSW5JZi1vdXQuamF2YQpAQCAtMCwwICsxLDkgQEAKK3B1YmxpYyBjbGFzcyBGb28geworICBwdWJsaWMgdm9pZCBoYW5kbGVJbnNlcnQoSW5zZXJ0aW9uQ29udGV4dCBjb250ZXh0LCBMb29rdXBFbGVtZW50IGl0ZW0pIHsKKyAgICBpZiAoaGFzUGFyYW1zKGNvbnRleHQsIGl0ZW0pPGNhcmV0PikKKyAgfQorCisgIHByaXZhdGUgc3RhdGljIGJvb2xlYW4gaGFzUGFyYW1zKEluc2VydGlvbkNvbnRleHQgY29udGV4dCwgTG9va3VwRWxlbWVudCBpdGVtKSB7CisgICAgcmV0dXJuIGZhbHNlOworICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvU2FtZU1ldGhvZEFyZ3VtZW50c0luSWYuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9TYW1lTWV0aG9kQXJndW1lbnRzSW5JZi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVmODEzNjUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvU2FtZU1ldGhvZEFyZ3VtZW50c0luSWYuamF2YQpAQCAtMCwwICsxLDkgQEAKK3B1YmxpYyBjbGFzcyBGb28geworICBwdWJsaWMgdm9pZCBoYW5kbGVJbnNlcnQoSW5zZXJ0aW9uQ29udGV4dCBjb250ZXh0LCBMb29rdXBFbGVtZW50IGl0ZW0pIHsKKyAgICBpZiAoaGFzUGFyYW1zKDxjYXJldD4pKQorICB9CisKKyAgcHJpdmF0ZSBzdGF0aWMgYm9vbGVhbiBoYXNQYXJhbXMoSW5zZXJ0aW9uQ29udGV4dCBjb250ZXh0LCBMb29rdXBFbGVtZW50IGl0ZW0pIHsKKyAgICByZXR1cm4gZmFsc2U7CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9TYW1lTmFtZWRBcmd1bWVudHMtb3V0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvU2FtZU5hbWVkQXJndW1lbnRzLW91dC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZkOWM4ZDAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvU2FtZU5hbWVkQXJndW1lbnRzLW91dC5qYXZhCkBAIC0wLDAgKzEsOSBAQAorcHVibGljIGNsYXNzIFNvbWVDbGFzcyB7CisgIEJvcmRlciBjcmVhdGVCb3JkZXIoQ29sb3IgY29sb3IsIGludCB0b3AsIGJvb2xlYW4gaXNPcGFxdWUsIGludCBib3R0b20sIGludCByaWdodCwgaW50IGxlZnQpIHsKKyAgICBuZXcgSW5zZXRzKHRvcCwgbGVmdCwgYm90dG9tLCByaWdodCk8Y2FyZXQ+CisgIH0KK30KKworY2xhc3MgSW5zZXRzIHsKKyAgSW5zZXRzKGludCB0b3AsIGludCBsZWZ0LCBpbnQgYm90dG9tLCBpbnQgcmlnaHQpIHt9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL1NhbWVOYW1lZEFyZ3VtZW50cy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL1NhbWVOYW1lZEFyZ3VtZW50cy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU5YTZiY2UKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvU2FtZU5hbWVkQXJndW1lbnRzLmphdmEKQEAgLTAsMCArMSw5IEBACitwdWJsaWMgY2xhc3MgU29tZUNsYXNzIHsKKyAgQm9yZGVyIGNyZWF0ZUJvcmRlcihDb2xvciBjb2xvciwgaW50IHRvcCwgYm9vbGVhbiBpc09wYXF1ZSwgaW50IGJvdHRvbSwgaW50IHJpZ2h0LCBpbnQgbGVmdCkgeworICAgIG5ldyBJbnNldHMoPGNhcmV0PikKKyAgfQorfQorCitjbGFzcyBJbnNldHMgeworICBJbnNldHMoaW50IHRvcCwgaW50IGxlZnQsIGludCBib3R0b20sIGludCByaWdodCkge30KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvU2FtZU5hbWVkQXJndW1lbnRzRGVsZWdhdGlvbi1vdXQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9TYW1lTmFtZWRBcmd1bWVudHNEZWxlZ2F0aW9uLW91dC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJmZjkzZTdjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL1NhbWVOYW1lZEFyZ3VtZW50c0RlbGVnYXRpb24tb3V0LmphdmEKQEAgLTAsMCArMSwxMyBAQAoraW1wb3J0IGphdmEuaW8uRmlsZTsKKworcHVibGljIGludGVyZmFjZSBab28geworICB2b2lkIGZvbyhTdHJpbmcgcywgRmlsZSBmaWxlKTsKK30KKworY2xhc3MgWm9vSW1wbCBpbXBsZW1lbnRzIFpvbyB7CisgIHByaXZhdGUgWm9vIGRlbGVnYXRlOworICBAT3ZlcnJpZGUKKyAgcHVibGljIHZvaWQgZm9vKFN0cmluZyBzLCBGaWxlIGZpbGUpIHsKKyAgICBkZWxlZ2F0ZS5mb28ocywgZmlsZSk7PGNhcmV0PgorICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvU2FtZU5hbWVkQXJndW1lbnRzRGVsZWdhdGlvbi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL1NhbWVOYW1lZEFyZ3VtZW50c0RlbGVnYXRpb24uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MTVlNzYwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL1NhbWVOYW1lZEFyZ3VtZW50c0RlbGVnYXRpb24uamF2YQpAQCAtMCwwICsxLDEzIEBACitpbXBvcnQgamF2YS5pby5GaWxlOworCitwdWJsaWMgaW50ZXJmYWNlIFpvbyB7CisgIHZvaWQgZm9vKFN0cmluZyBzLCBGaWxlIGZpbGUpOworfQorCitjbGFzcyBab29JbXBsIGltcGxlbWVudHMgWm9vIHsKKyAgcHJpdmF0ZSBab28gZGVsZWdhdGU7CisgIEBPdmVycmlkZQorICBwdWJsaWMgdm9pZCBmb28oU3RyaW5nIHMsIEZpbGUgZmlsZSkgeworICAgIGRlbGVnYXRlLmZvbyg8Y2FyZXQ+KTsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL1NhbWVOYW1lZEZpZWxkQW5kTG9jYWwtb3V0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvU2FtZU5hbWVkRmllbGRBbmRMb2NhbC1vdXQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NjUwODc4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL1NhbWVOYW1lZEZpZWxkQW5kTG9jYWwtb3V0LmphdmEKQEAgLTAsMCArMSw4IEBACitwdWJsaWMgY2xhc3MgVGVzdCB7CisgICAgaW50IGZmYTsKKworICAgIHsKKyAgICAgICAgaW50IGZmYSA9IDI7CisgICAgICAgIGludCBiID0gZmZhOzxjYXJldD4KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL1NhbWVOYW1lZEZpZWxkQW5kTG9jYWwuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9TYW1lTmFtZWRGaWVsZEFuZExvY2FsLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDE4Y2Y2ZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9TYW1lTmFtZWRGaWVsZEFuZExvY2FsLmphdmEKQEAgLTAsMCArMSw4IEBACitwdWJsaWMgY2xhc3MgVGVzdCB7CisgICAgaW50IGZmYTsKKworICAgIHsKKyAgICAgICAgaW50IGZmYSA9IDI7CisgICAgICAgIGludCBiID0gZmY8Y2FyZXQ+CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9TYW1lVHlwZUFyZy1vdXQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9TYW1lVHlwZUFyZy1vdXQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MjY0NmViCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL1NhbWVUeXBlQXJnLW91dC5qYXZhCkBAIC0wLDAgKzEsNSBAQAorY2xhc3MgQmFyPFQ+IHsKKyAgICB7CisgICAgICAgIEJhcjxUPiBmID0gbmV3IEJhcjxUPigpOzxjYXJldD4KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL1NhbWVUeXBlQXJnLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvU2FtZVR5cGVBcmcuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZGIxYzQ1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL1NhbWVUeXBlQXJnLmphdmEKQEAgLTAsMCArMSw1IEBACitjbGFzcyBCYXI8VD4geworICAgIHsKKyAgICAgICAgQmFyPFQ+IGYgPSBuZXcgPGNhcmV0PgorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvU2VtaWNvbG9uSW5Db2RlQmxvY0JvZHlJbkxvY2FsVmFyaWFibGUtb3V0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvU2VtaWNvbG9uSW5Db2RlQmxvY0JvZHlJbkxvY2FsVmFyaWFibGUtb3V0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDQ2ZDU4ZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9TZW1pY29sb25JbkNvZGVCbG9jQm9keUluTG9jYWxWYXJpYWJsZS1vdXQuamF2YQpAQCAtMCwwICsxLDUgQEAKK2NsYXNzIFRlc3QgeworICBwdWJsaWMgdm9pZCBmb28oKSB7CisgICAgUnVubmFibGUgciA9ICgpIC0+IHtub3RpZnkoKTt9OworICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvU2VtaWNvbG9uSW5Db2RlQmxvY0JvZHlJbkxvY2FsVmFyaWFibGUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9TZW1pY29sb25JbkNvZGVCbG9jQm9keUluTG9jYWxWYXJpYWJsZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZhNmYyMDkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvU2VtaWNvbG9uSW5Db2RlQmxvY0JvZHlJbkxvY2FsVmFyaWFibGUuamF2YQpAQCAtMCwwICsxLDUgQEAKK2NsYXNzIFRlc3QgeworICBwdWJsaWMgdm9pZCBmb28oKSB7CisgICAgUnVubmFibGUgciA9ICgpIC0+IHs8Y2FyZXQ+fTsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL1NlbWljb2xvbkluRXhwcmVzc2lvbkJvZHlJbkV4cHJlc3Npb25MaXN0LW91dC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL1NlbWljb2xvbkluRXhwcmVzc2lvbkJvZHlJbkV4cHJlc3Npb25MaXN0LW91dC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhiMTdhZjkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvU2VtaWNvbG9uSW5FeHByZXNzaW9uQm9keUluRXhwcmVzc2lvbkxpc3Qtb3V0LmphdmEKQEAgLTAsMCArMSw1IEBACitjbGFzcyBUZXN0IHsKKyAgcHVibGljIHZvaWQgZm9vKCkgeworICAgIG5ldyBUaHJlYWQoKCkgLT4gbm90aWZ5KCkpOworICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvU2VtaWNvbG9uSW5FeHByZXNzaW9uQm9keUluRXhwcmVzc2lvbkxpc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9TZW1pY29sb25JbkV4cHJlc3Npb25Cb2R5SW5FeHByZXNzaW9uTGlzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdiNDAzYzAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvU2VtaWNvbG9uSW5FeHByZXNzaW9uQm9keUluRXhwcmVzc2lvbkxpc3QuamF2YQpAQCAtMCwwICsxLDUgQEAKK2NsYXNzIFRlc3QgeworICBwdWJsaWMgdm9pZCBmb28oKSB7CisgICAgbmV3IFRocmVhZCgoKSAtPiA8Y2FyZXQ+KTsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL1NlbWljb2xvbkluRXhwcmVzc2lvbkJvZHlJbkxvY2FsVmFyaWFibGUtb3V0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvU2VtaWNvbG9uSW5FeHByZXNzaW9uQm9keUluTG9jYWxWYXJpYWJsZS1vdXQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNjk1MGMwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL1NlbWljb2xvbkluRXhwcmVzc2lvbkJvZHlJbkxvY2FsVmFyaWFibGUtb3V0LmphdmEKQEAgLTAsMCArMSw1IEBACitjbGFzcyBUZXN0IHsKKyAgcHVibGljIHZvaWQgZm9vKCkgeworICAgIFJ1bm5hYmxlIHIgPSAoKSAtPiBub3RpZnkoKTsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL1NlbWljb2xvbkluRXhwcmVzc2lvbkJvZHlJbkxvY2FsVmFyaWFibGUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9TZW1pY29sb25JbkV4cHJlc3Npb25Cb2R5SW5Mb2NhbFZhcmlhYmxlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTQxYzJhMQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9TZW1pY29sb25JbkV4cHJlc3Npb25Cb2R5SW5Mb2NhbFZhcmlhYmxlLmphdmEKQEAgLTAsMCArMSw1IEBACitjbGFzcyBUZXN0IHsKKyAgcHVibGljIHZvaWQgZm9vKCkgeworICAgIFJ1bm5hYmxlIHIgPSAoKSAtPiA8Y2FyZXQ+CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9TZXZlcmFsVHlwZUFyZ3VtZW50cy1vdXQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9TZXZlcmFsVHlwZUFyZ3VtZW50cy1vdXQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMmM3NzEzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL1NldmVyYWxUeXBlQXJndW1lbnRzLW91dC5qYXZhCkBAIC0wLDAgKzEsNSBAQAoraW1wb3J0IGphdmEudXRpbC5IYXNoTWFwOworCitwdWJsaWMgY2xhc3MgQSB7CisgIHByaXZhdGUgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gbSA9IG5ldyBIYXNoTWFwPFN0cmluZywgU3RyaW5nPig8Y2FyZXQ+KTsKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9TZXZlcmFsVHlwZUFyZ3VtZW50cy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL1NldmVyYWxUeXBlQXJndW1lbnRzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzFlYzUwMAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9TZXZlcmFsVHlwZUFyZ3VtZW50cy5qYXZhCkBAIC0wLDAgKzEsNSBAQAoraW1wb3J0IGphdmEudXRpbC5IYXNoTWFwOworCitwdWJsaWMgY2xhc3MgQSB7CisgIHByaXZhdGUgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gbSA9IG5ldyBIYXNoTWFwPDxjYXJldD4+KCk7Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvU2V2ZXJhbFR5cGVBcmd1bWVudHNTb21lVW5rbm93bi1vdXQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9TZXZlcmFsVHlwZUFyZ3VtZW50c1NvbWVVbmtub3duLW91dC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBhMTQ4ZWYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvU2V2ZXJhbFR5cGVBcmd1bWVudHNTb21lVW5rbm93bi1vdXQuamF2YQpAQCAtMCwwICsxLDMgQEAKK2NsYXNzIEFBQUFBPEssVixHPnsKKyAgQUFBQUE8SyxWLD8+IGFzZCA9IG5ldyBBQUFBQTxLLCA8Y2FyZXQ+Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvU2V2ZXJhbFR5cGVBcmd1bWVudHNTb21lVW5rbm93bi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL1NldmVyYWxUeXBlQXJndW1lbnRzU29tZVVua25vd24uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MTViMzlkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL1NldmVyYWxUeXBlQXJndW1lbnRzU29tZVVua25vd24uamF2YQpAQCAtMCwwICsxLDMgQEAKK2NsYXNzIEFBQUFBPEssVixHPnsKKyAgQUFBQUE8SyxWLD8+IGFzZCA9IG5ldyBBQUFBQTw8Y2FyZXQ+Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvU2libGluZ09mQVN0YXRpY2FsbHlJbXBvcnRlZEZpZWxkLW91dC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL1NpYmxpbmdPZkFTdGF0aWNhbGx5SW1wb3J0ZWRGaWVsZC1vdXQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NGIzMzZkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL1NpYmxpbmdPZkFTdGF0aWNhbGx5SW1wb3J0ZWRGaWVsZC1vdXQuamF2YQpAQCAtMCwwICsxLDE1IEBACitpbXBvcnQgc3RhdGljIEJhci5CQVI7CitpbXBvcnQgc3RhdGljIEJhci5GT087CisKK2NsYXNzIEJhciB7CisgIHN0YXRpYyBTdHJpbmcgRk9POworICBzdGF0aWMgU3RyaW5nIEJBUjsKK30KKworY2xhc3MgRm9vIHsKKworICBPYmplY3RbXSBmb28oKSB7CisgICAgU3RyaW5nIGEgPSBGT087CisgICAgU3RyaW5nIGIgPSBCQVI7PGNhcmV0PgorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL1NpYmxpbmdPZkFTdGF0aWNhbGx5SW1wb3J0ZWRGaWVsZC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL1NpYmxpbmdPZkFTdGF0aWNhbGx5SW1wb3J0ZWRGaWVsZC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg3MDQxYmUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvU2libGluZ09mQVN0YXRpY2FsbHlJbXBvcnRlZEZpZWxkLmphdmEKQEAgLTAsMCArMSwxNCBAQAoraW1wb3J0IHN0YXRpYyBCYXIuRk9POworCitjbGFzcyBCYXIgeworICBzdGF0aWMgU3RyaW5nIEZPTzsKKyAgc3RhdGljIFN0cmluZyBCQVI7Cit9CisKK2NsYXNzIEZvbyB7CisKKyAgT2JqZWN0W10gZm9vKCkgeworICAgIFN0cmluZyBhID0gRk9POworICAgIFN0cmluZyBiID0gQkE8Y2FyZXQ+CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvU2lsbHkxLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvU2lsbHkxLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjVjNTNkZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9TaWxseTEuamF2YQpAQCAtMCwwICsxLDcgQEAKK2NsYXNzIEF7CisgeworICBpbnQgaWlpaWkgPSAwOworCisgIGlpaWlpID0gaWlpPGNhcmV0PgorIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvU2lsbHlBc3NpZ25tZW50SW5UZXJuYXJ5LW91dC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL1NpbGx5QXNzaWdubWVudEluVGVybmFyeS1vdXQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YmI0MGYzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL1NpbGx5QXNzaWdubWVudEluVGVybmFyeS1vdXQuamF2YQpAQCAtMCwwICsxLDcgQEAKK2NsYXNzIEZvbyB7CisgIEZvb1tdIG15Rm9vczsKKworICBGb28oRm9vW10gZm9vcykgeworICAgIG15Rm9vcyA9IHRydWUgPyBmb29zIDogPGNhcmV0PgorICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvU2lsbHlBc3NpZ25tZW50SW5UZXJuYXJ5LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvU2lsbHlBc3NpZ25tZW50SW5UZXJuYXJ5LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODRhMDg0MAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9TaWxseUFzc2lnbm1lbnRJblRlcm5hcnkuamF2YQpAQCAtMCwwICsxLDcgQEAKK2NsYXNzIEZvbyB7CisgIEZvb1tdIG15Rm9vczsKKworICBGb28oRm9vW10gZm9vcykgeworICAgIG15Rm9vcyA9IHRydWUgPyA8Y2FyZXQ+CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9TbWFydEZpbmlzaC1vdXQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9TbWFydEZpbmlzaC1vdXQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lOTUyOTdlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL1NtYXJ0RmluaXNoLW91dC5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKK3B1YmxpYyBjbGFzcyBGb28geworCisgICAgeworICAgICAgICBGb28gZm9vID0gbnVsbDsKKyAgICAgICAgRm9vIGJhciA9IGlkKGZvbyk7PGNhcmV0PgorICAgIH0KKworICAgIEZvbyBpZChGb28gZm9vKSB7cmV0dXJuIGZvbzt9CisKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9TbWFydEZpbmlzaC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL1NtYXJ0RmluaXNoLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTZiYzk1MwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9TbWFydEZpbmlzaC5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKK3B1YmxpYyBjbGFzcyBGb28geworCisgICAgeworICAgICAgICBGb28gZm9vID0gbnVsbDsKKyAgICAgICAgRm9vIGJhciA9IGlkPGNhcmV0PmZvbzsKKyAgICB9CisKKyAgICBGb28gaWQoRm9vIGZvbykge3JldHVybiBmb287fQorCit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvU3BhY2VBZnRlckNvbW1hSW5NZXRob2RDYWxsLW91dC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL1NwYWNlQWZ0ZXJDb21tYUluTWV0aG9kQ2FsbC1vdXQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZDMyZTdiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL1NwYWNlQWZ0ZXJDb21tYUluTWV0aG9kQ2FsbC1vdXQuamF2YQpAQCAtMCwwICsxLDkgQEAKK3B1YmxpYyBzdGF0aWMgY2xhc3MgRyB7CisgIHB1YmxpYyBzdGF0aWMgdm9pZCBmb28oU3RyaW5nIHMxLCBTdHJpbmcgczIpIHsKKyAgfQorCisgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKKyAgICBTdHJpbmcgc3NzMSA9ICJ0ZXh0IjsKKyAgICBmb28oc3NzMSw8Y2FyZXQ+KTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9TcGFjZUFmdGVyQ29tbWFJbk1ldGhvZENhbGwuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9TcGFjZUFmdGVyQ29tbWFJbk1ldGhvZENhbGwuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNmUwNWZmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL1NwYWNlQWZ0ZXJDb21tYUluTWV0aG9kQ2FsbC5qYXZhCkBAIC0wLDAgKzEsOSBAQAorcHVibGljIHN0YXRpYyBjbGFzcyBHIHsKKyAgcHVibGljIHN0YXRpYyB2b2lkIGZvbyhTdHJpbmcgczEsIFN0cmluZyBzMikgeworICB9CisKKyAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgeworICAgIFN0cmluZyBzc3MxID0gInRleHQiOworICAgIGZvbyhzczxjYXJldD4pOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL1N0YXRpY1N1YmNsYXNzLW91dC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL1N0YXRpY1N1YmNsYXNzLW91dC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ2YTViM2QKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvU3RhdGljU3ViY2xhc3Mtb3V0LmphdmEKQEAgLTAsMCArMSwxMyBAQAorY2xhc3MgQmFyQmFzZSB7CisgICAgeworICAgICAgICBGb29CYXNlIGYgPSBGb29CYXNlLkVNUFRZOzxjYXJldD4KKyAgICB9Cit9CisKK2NsYXNzIEZvb0Jhc2UgeworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgRm9vQmFzZSBFTVBUWTsKKworICAgIHB1YmxpYyBzdGF0aWMgY2xhc3MgRm9vQmFzZUltcGwgZXh0ZW5kcyBGb29CYXNlIHt9CisKKworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9TdGF0aWNTdWJjbGFzcy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL1N0YXRpY1N1YmNsYXNzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmI0ZThhZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9TdGF0aWNTdWJjbGFzcy5qYXZhCkBAIC0wLDAgKzEsMTMgQEAKK2NsYXNzIEJhckJhc2UgeworICAgIHsKKyAgICAgICAgRm9vQmFzZSBmID0gPGNhcmV0PgorICAgIH0KK30KKworY2xhc3MgRm9vQmFzZSB7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBGb29CYXNlIEVNUFRZOworCisgICAgcHVibGljIHN0YXRpYyBjbGFzcyBGb29CYXNlSW1wbCBleHRlbmRzIEZvb0Jhc2Uge30KKworCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL1N0YXRpY2FsbHlJbXBvcnRlZEZpZWxkLW91dC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL1N0YXRpY2FsbHlJbXBvcnRlZEZpZWxkLW91dC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg4M2RmZDQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvU3RhdGljYWxseUltcG9ydGVkRmllbGQtb3V0LmphdmEKQEAgLTAsMCArMSwxMyBAQAoraW1wb3J0IHN0YXRpYyBCYXIuRk9PCisKK2NsYXNzIEJhciB7CisgIHN0YXRpYyBTdHJpbmcgRk9POworICBzdGF0aWMgU3RyaW5nIEJBUjsKK30KKworY2xhc3MgRm9vIHsKKworICBPYmplY3RbXSBmb28oKSB7CisgICAgU3RyaW5nIGIgPSBGT087PGNhcmV0PgorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL1N0YXRpY2FsbHlJbXBvcnRlZEZpZWxkLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvU3RhdGljYWxseUltcG9ydGVkRmllbGQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMDFlMWUwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL1N0YXRpY2FsbHlJbXBvcnRlZEZpZWxkLmphdmEKQEAgLTAsMCArMSwxMyBAQAoraW1wb3J0IHN0YXRpYyBCYXIuRk9PCisKK2NsYXNzIEJhciB7CisgIHN0YXRpYyBTdHJpbmcgRk9POworICBzdGF0aWMgU3RyaW5nIEJBUjsKK30KKworY2xhc3MgRm9vIHsKKworICBPYmplY3RbXSBmb28oKSB7CisgICAgU3RyaW5nIGIgPSBGTzxjYXJldD4KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9TdGF0aWNhbGx5SW1wb3J0ZWRNYWdpY01ldGhvZC1vdXQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9TdGF0aWNhbGx5SW1wb3J0ZWRNYWdpY01ldGhvZC1vdXQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMzIxM2Q0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL1N0YXRpY2FsbHlJbXBvcnRlZE1hZ2ljTWV0aG9kLW91dC5qYXZhCkBAIC0wLDAgKzEsMTUgQEAKK2ltcG9ydCBzdGF0aWMgRm9vLmZvbzsKKworY2xhc3MgRm9vIHsKKyAgcHVibGljIHN0YXRpYyA8VD4gVCBmb28gKCkKKworfQorCitjbGFzcyBCYXIgeworICB2b2lkIGYoU3RyaW5nIHMpIHsKKyAgfQorCisgIHsKKyAgICBmKEZvby48U3RyaW5nPmZvbygpKTs8Y2FyZXQ+CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvU3RhdGljYWxseUltcG9ydGVkTWFnaWNNZXRob2QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9TdGF0aWNhbGx5SW1wb3J0ZWRNYWdpY01ldGhvZC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU0ZTY2ODMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvU3RhdGljYWxseUltcG9ydGVkTWFnaWNNZXRob2QuamF2YQpAQCAtMCwwICsxLDE1IEBACitpbXBvcnQgc3RhdGljIEZvby5mb287CisKK2NsYXNzIEZvbyB7CisgIHB1YmxpYyBzdGF0aWMgPFQ+IFQgZm9vICgpCisKK30KKworY2xhc3MgQmFyIHsKKyAgdm9pZCBmKFN0cmluZyBzKSB7CisgIH0KKworICB7CisgICAgZihmb288Y2FyZXQ+eCkKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9TdHJpbmdDb25zdGFudEluQW5uby1vdXQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9TdHJpbmdDb25zdGFudEluQW5uby1vdXQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYzgyMTY4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL1N0cmluZ0NvbnN0YW50SW5Bbm5vLW91dC5qYXZhCkBAIC0wLDAgKzEsOSBAQAorQGludGVyZmFjZSBBbm5vIHsKKyAgICBTdHJpbmcgdmFsdWUoKTsKK30KKworQEFubm8oQS5BQUE8Y2FyZXQ+KQorY2xhc3MgQSB7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgQUFBID0gImFhYSI7Cit9CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9TdHJpbmdDb25zdGFudEluQW5uby5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL1N0cmluZ0NvbnN0YW50SW5Bbm5vLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmE5NjQzOQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9TdHJpbmdDb25zdGFudEluQW5uby5qYXZhCkBAIC0wLDAgKzEsOSBAQAorQGludGVyZmFjZSBBbm5vIHsKKyAgICBTdHJpbmcgdmFsdWUoKTsKK30KKworQEFubm8oQS48Y2FyZXQ+KQorY2xhc3MgQSB7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgQUFBID0gImFhYSI7Cit9CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9TdWdnZXN0QW55dGhpbmdXaGVuV2lsZGNhcmRFeHBlY3RlZC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL1N1Z2dlc3RBbnl0aGluZ1doZW5XaWxkY2FyZEV4cGVjdGVkLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2Y3ZTQ4NwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9TdWdnZXN0QW55dGhpbmdXaGVuV2lsZGNhcmRFeHBlY3RlZC5qYXZhCkBAIC0wLDAgKzEsNyBAQAorY2xhc3MgWDxUPiB7fQorY2xhc3MgWSBleHRlbmRzIFg8U3RyaW5nPnt9CitjbGFzcyBaPFQ+IGV4dGVuZHMgWDxUPnt9CisKK2NsYXNzIE1haW4geworICAgIFg8Pz4gYSA9IG5ldyA8Y2FyZXQ+Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL1N1Z2dlc3RDYXN0ZWRWYWx1ZUFmdGVyQ2FzdC1vdXQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9TdWdnZXN0Q2FzdGVkVmFsdWVBZnRlckNhc3Qtb3V0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWE0Y2YzNAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9TdWdnZXN0Q2FzdGVkVmFsdWVBZnRlckNhc3Qtb3V0LmphdmEKQEAgLTAsMCArMSwxMCBAQAorcHVibGljIGNsYXNzIFRlc3RDYXNlIGV4dGVuZHMgWnp6IHsKKworICAgIE9iamVjdCBvb28oKSB7fQorCisgICAgeworICAgICAgICAoKFN0cmluZykgb29vKCkpLnRvU3RyaW5nKCk7CisKKyAgICAgICAgU3RyaW5nIHMgPSAoU3RyaW5nKSBvb28oKTs8Y2FyZXQ+CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9TdWdnZXN0Q2FzdGVkVmFsdWVBZnRlckNhc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9TdWdnZXN0Q2FzdGVkVmFsdWVBZnRlckNhc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YzRmZjBmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL1N1Z2dlc3RDYXN0ZWRWYWx1ZUFmdGVyQ2FzdC5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKK3B1YmxpYyBjbGFzcyBUZXN0Q2FzZSBleHRlbmRzIFp6eiB7CisKKyAgICBPYmplY3Qgb29vKCkge30KKworICAgIHsKKyAgICAgICAgKChTdHJpbmcpIG9vbygpKS50b1N0cmluZygpOworCisgICAgICAgIFN0cmluZyBzID0gbzxjYXJldD4KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL1N1Z2dlc3RJbnN0YW5jZW9mZWRWYWx1ZS1vdXQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9TdWdnZXN0SW5zdGFuY2VvZmVkVmFsdWUtb3V0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGQxMjM5OQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9TdWdnZXN0SW5zdGFuY2VvZmVkVmFsdWUtb3V0LmphdmEKQEAgLTAsMCArMSwxMCBAQAorcHVibGljIGNsYXNzIFRlc3RDYXNlIGV4dGVuZHMgWnp6IHsKKyAgcHVibGljIFRlc3RDYXNlIHR0dChaenogb29vKSB7CisgICAgaWYgKG9vbyBpbnN0YW5jZW9mIFRlc3RDYXNlKSB7CisgICAgICByZXR1cm4gKFRlc3RDYXNlKSBvb287PGNhcmV0PgorICAgIH0KKyAgfQorfQorCitjbGFzcyBaenogeworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9TdWdnZXN0SW5zdGFuY2VvZmVkVmFsdWUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9TdWdnZXN0SW5zdGFuY2VvZmVkVmFsdWUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNzM2MDc5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL1N1Z2dlc3RJbnN0YW5jZW9mZWRWYWx1ZS5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKK3B1YmxpYyBjbGFzcyBUZXN0Q2FzZSBleHRlbmRzIFp6eiB7CisgIHB1YmxpYyBUZXN0Q2FzZSB0dHQoWnp6IG9vbykgeworICAgIGlmIChvb28gaW5zdGFuY2VvZiBUZXN0Q2FzZSkgeworICAgICAgcmV0dXJuIG88Y2FyZXQ+CisgICAgfQorICB9Cit9CisKK2NsYXNzIFp6eiB7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL1N1Z2dlc3RJbnN0YW5jZW9mZWRWYWx1ZUFmdGVyUmV0dXJuLW91dC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL1N1Z2dlc3RJbnN0YW5jZW9mZWRWYWx1ZUFmdGVyUmV0dXJuLW91dC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhhNDNlY2YKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvU3VnZ2VzdEluc3RhbmNlb2ZlZFZhbHVlQWZ0ZXJSZXR1cm4tb3V0LmphdmEKQEAgLTAsMCArMSwxMSBAQAorcHVibGljIGNsYXNzIFRlc3RDYXNlIGV4dGVuZHMgWnp6IHsKKworICAgIE9iamVjdCBvb28oKSB7fQorCisgICAgeworICAgICAgICBpZiAoIShvb28oKSBpbnN0YW5jZW9mIFN0cmluZykpIHsKKyAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgU3RyaW5nIHMgPSAoU3RyaW5nKSBvb28oKTs8Y2FyZXQ+CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9TdWdnZXN0SW5zdGFuY2VvZmVkVmFsdWVBZnRlclJldHVybi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL1N1Z2dlc3RJbnN0YW5jZW9mZWRWYWx1ZUFmdGVyUmV0dXJuLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2VkMjc5ZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9TdWdnZXN0SW5zdGFuY2VvZmVkVmFsdWVBZnRlclJldHVybi5qYXZhCkBAIC0wLDAgKzEsMTEgQEAKK3B1YmxpYyBjbGFzcyBUZXN0Q2FzZSBleHRlbmRzIFp6eiB7CisKKyAgICBPYmplY3Qgb29vKCkge30KKworICAgIHsKKyAgICAgICAgaWYgKCEob29vKCkgaW5zdGFuY2VvZiBTdHJpbmcpKSB7CisgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIFN0cmluZyBzID0gbzxjYXJldD4KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL1N1Z2dlc3RJbnN0YW5jZW9mZWRWYWx1ZUluQ29tcGxleElmLW91dC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL1N1Z2dlc3RJbnN0YW5jZW9mZWRWYWx1ZUluQ29tcGxleElmLW91dC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAwYWNjMmUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvU3VnZ2VzdEluc3RhbmNlb2ZlZFZhbHVlSW5Db21wbGV4SWYtb3V0LmphdmEKQEAgLTAsMCArMSwxMSBAQAorcHVibGljIGNsYXNzIFRlc3RDYXNlIGV4dGVuZHMgWnp6IHsKKyAgYm9vbGVhbiBmb28oU3RyaW5nIHMpIHsKKyAgIH0KKworCisgICAgeworICAgICAgICBPYmplY3Qgb29vOworICAgICAgICBpZiAob29vIGluc3RhbmNlb2YgU3RyaW5nICYmIGZvbygoU3RyaW5nKSBvb28pPGNhcmV0PikgeworICAgICAgICB9CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9TdWdnZXN0SW5zdGFuY2VvZmVkVmFsdWVJbkNvbXBsZXhJZi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL1N1Z2dlc3RJbnN0YW5jZW9mZWRWYWx1ZUluQ29tcGxleElmLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWJiM2JjNAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9TdWdnZXN0SW5zdGFuY2VvZmVkVmFsdWVJbkNvbXBsZXhJZi5qYXZhCkBAIC0wLDAgKzEsMTEgQEAKK3B1YmxpYyBjbGFzcyBUZXN0Q2FzZSBleHRlbmRzIFp6eiB7CisgIGJvb2xlYW4gZm9vKFN0cmluZyBzKSB7CisgICB9CisKKworICAgIHsKKyAgICAgICAgT2JqZWN0IG9vbzsKKyAgICAgICAgaWYgKG9vbyBpbnN0YW5jZW9mIFN0cmluZyAmJiBmb28obzxjYXJldD4pKSB7CisgICAgICAgIH0KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL1N1Z2dlc3RJbnN0YW5jZW9mZWRWYWx1ZUluRWxzZU5lZ2F0ZWQtb3V0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvU3VnZ2VzdEluc3RhbmNlb2ZlZFZhbHVlSW5FbHNlTmVnYXRlZC1vdXQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iOTY2NzYxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL1N1Z2dlc3RJbnN0YW5jZW9mZWRWYWx1ZUluRWxzZU5lZ2F0ZWQtb3V0LmphdmEKQEAgLTAsMCArMSwxMSBAQAorcHVibGljIGNsYXNzIFRlc3RDYXNlIGV4dGVuZHMgWnp6IHsKKworICAgIE9iamVjdCBvb28oKSB7fQorCisgICAgeworICAgICAgICBpZiAoIShvb28oKSBpbnN0YW5jZW9mIFN0cmluZykpIHsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICBTdHJpbmcgcyA9IChTdHJpbmcpIG9vbygpOzxjYXJldD4KKyAgICAgICAgfQorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvU3VnZ2VzdEluc3RhbmNlb2ZlZFZhbHVlSW5FbHNlTmVnYXRlZC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL1N1Z2dlc3RJbnN0YW5jZW9mZWRWYWx1ZUluRWxzZU5lZ2F0ZWQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mN2Y0ZDU2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL1N1Z2dlc3RJbnN0YW5jZW9mZWRWYWx1ZUluRWxzZU5lZ2F0ZWQuamF2YQpAQCAtMCwwICsxLDExIEBACitwdWJsaWMgY2xhc3MgVGVzdENhc2UgZXh0ZW5kcyBaenogeworCisgICAgT2JqZWN0IG9vbygpIHt9CisKKyAgICB7CisgICAgICAgIGlmICghKG9vbygpIGluc3RhbmNlb2YgU3RyaW5nKSkgeworICAgICAgICB9IGVsc2UgeworICAgICAgICAgIFN0cmluZyBzID0gbzxjYXJldD4KKyAgICAgICAgfQorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvU3VnZ2VzdEluc3RhbmNlb2ZlZFZhbHVlSW5UZXJuYXJ5LW91dC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL1N1Z2dlc3RJbnN0YW5jZW9mZWRWYWx1ZUluVGVybmFyeS1vdXQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zODY1ZWM5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL1N1Z2dlc3RJbnN0YW5jZW9mZWRWYWx1ZUluVGVybmFyeS1vdXQuamF2YQpAQCAtMCwwICsxLDkgQEAKK3B1YmxpYyBjbGFzcyBUZXN0Q2FzZSBleHRlbmRzIFp6eiB7CisgIHB1YmxpYyBUZXN0Q2FzZSB0dHQoWnp6IG9vbykgeworICAgIHJldHVybiBvb28uZygpIGluc3RhbmNlb2YgVGVzdENhc2UgPyAoVGVzdENhc2UpIG9vby5nKCkgOiA8Y2FyZXQ+CisgIH0KK30KKworY2xhc3MgWnp6IHsKKyAgT2JqZWN0IGcoKTsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvU3VnZ2VzdEluc3RhbmNlb2ZlZFZhbHVlSW5UZXJuYXJ5LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvU3VnZ2VzdEluc3RhbmNlb2ZlZFZhbHVlSW5UZXJuYXJ5LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzU5Y2NhNAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9TdWdnZXN0SW5zdGFuY2VvZmVkVmFsdWVJblRlcm5hcnkuamF2YQpAQCAtMCwwICsxLDkgQEAKK3B1YmxpYyBjbGFzcyBUZXN0Q2FzZSBleHRlbmRzIFp6eiB7CisgIHB1YmxpYyBUZXN0Q2FzZSB0dHQoWnp6IG9vbykgeworICAgIHJldHVybiBvb28uZygpIGluc3RhbmNlb2YgVGVzdENhc2UgPyBvPGNhcmV0PgorICB9Cit9CisKK2NsYXNzIFp6eiB7CisgIE9iamVjdCBnKCk7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL1N1Z2dlc3ROYW1lcy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL1N1Z2dlc3ROYW1lcy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNiNTNmY2EKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvU3VnZ2VzdE5hbWVzLmphdmEKQEAgLTAsMCArMSw2IEBACitpbXBvcnQgamF2YS51dGlsLkFycmF5TGlzdDsKKworY2xhc3MgRm9vIHsKKyAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oQXJyYXlMaXN0IDxjYXJldD4peworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL1N1Z2dlc3ROdWxsLW91dC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL1N1Z2dlc3ROdWxsLW91dC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI5YzgyMTAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvU3VnZ2VzdE51bGwtb3V0LmphdmEKQEAgLTAsMCArMSw2IEBACitwdWJsaWMgY2xhc3MgRm9vIHsKKyAgICAKKyAgICB7CisgICAgICBTdHJpbmcgcyA9IG51bGw7PGNhcmV0PgorICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9TdWdnZXN0TnVsbC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL1N1Z2dlc3ROdWxsLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzI0YTdlMAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9TdWdnZXN0TnVsbC5qYXZhCkBAIC0wLDAgKzEsNiBAQAorcHVibGljIGNsYXNzIEZvbyB7CisgICAgCisgICAgeworICAgICAgU3RyaW5nIHMgPSBudTxjYXJldD4KKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvU3VwZXJDb25zdHJ1Y3RvckFyZ3VtZW50cy1vdXQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9TdXBlckNvbnN0cnVjdG9yQXJndW1lbnRzLW91dC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNhZmYyMTQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvU3VwZXJDb25zdHJ1Y3RvckFyZ3VtZW50cy1vdXQuamF2YQpAQCAtMCwwICsxLDE2IEBACitwdWJsaWMgY2xhc3MgU29tZUNsYXNzIHsKKyAgICBwdWJsaWMgU29tZUNsYXNzKCkgeworICAgIH0KKyAgICBwdWJsaWMgU29tZUNsYXNzKGludCBpLCBpbnQgaikgeworICAgIH0KKyAgICBwdWJsaWMgU29tZUNsYXNzKGludCBqLCBpbnQgaSwgaW50IGspIHsKKyAgICB9CisKK30KKworY2xhc3MgU29tZUNsYXNzSW1wbCBleHRlbmRzIFNvbWVDbGFzcyB7CisgICAgU29tZUNsYXNzSW1wbChpbnQgaSwgaW50IGopIHsKKyAgICAgICAgc3VwZXIoaSwgaik7PGNhcmV0PgorICAgIH0KKworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL1N1cGVyQ29uc3RydWN0b3JBcmd1bWVudHMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9TdXBlckNvbnN0cnVjdG9yQXJndW1lbnRzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjhkY2U0MAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9TdXBlckNvbnN0cnVjdG9yQXJndW1lbnRzLmphdmEKQEAgLTAsMCArMSwxNiBAQAorcHVibGljIGNsYXNzIFNvbWVDbGFzcyB7CisgICAgcHVibGljIFNvbWVDbGFzcygpIHsKKyAgICB9CisgICAgcHVibGljIFNvbWVDbGFzcyhpbnQgaSwgaW50IGopIHsKKyAgICB9CisgICAgcHVibGljIFNvbWVDbGFzcyhpbnQgaiwgaW50IGksIGludCBrKSB7CisgICAgfQorCit9CisKK2NsYXNzIFNvbWVDbGFzc0ltcGwgZXh0ZW5kcyBTb21lQ2xhc3MgeworICAgIFNvbWVDbGFzc0ltcGwoaW50IGksIGludCBqKSB7CisgICAgICAgIHN1cGVyKDxjYXJldD4pOworICAgIH0KKworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL1N1cGVyTWV0aG9kQXJndW1lbnRzLW91dC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL1N1cGVyTWV0aG9kQXJndW1lbnRzLW91dC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVlYzU1ZmIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvU3VwZXJNZXRob2RBcmd1bWVudHMtb3V0LmphdmEKQEAgLTAsMCArMSwxNCBAQAorcHVibGljIGNsYXNzIFNvbWVDbGFzcyB7CisKKyAgICBwdWJsaWMgdm9pZCBmb28oaW50IGNvdW50KSB7fQorICAgIHB1YmxpYyBPYmplY3QgZm9vKGludCBjb3VudCwgU3RyaW5nIGRlc2NyKSB7CisKKyAgICB9CisKK30KKworY2xhc3MgU29tZUNsYXNzSW1wbCBleHRlbmRzIFNvbWVDbGFzcyB7CisgICAgcHVibGljIE9iamVjdCBmb28oaW50IGNvdW50LCBTdHJpbmcgZGVzY3JpcHRpb24pIHsKKyAgICAgICAgc3VwZXIuZm9vKGNvdW50LCBkZXNjcmlwdGlvbik8Y2FyZXQ+OworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9TdXBlck1ldGhvZEFyZ3VtZW50cy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL1N1cGVyTWV0aG9kQXJndW1lbnRzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTQ3ODhkMgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9TdXBlck1ldGhvZEFyZ3VtZW50cy5qYXZhCkBAIC0wLDAgKzEsMTQgQEAKK3B1YmxpYyBjbGFzcyBTb21lQ2xhc3MgeworCisgICAgcHVibGljIHZvaWQgZm9vKGludCBjb3VudCkge30KKyAgICBwdWJsaWMgT2JqZWN0IGZvbyhpbnQgY291bnQsIFN0cmluZyBkZXNjcikgeworCisgICAgfQorCit9CisKK2NsYXNzIFNvbWVDbGFzc0ltcGwgZXh0ZW5kcyBTb21lQ2xhc3MgeworICAgIHB1YmxpYyBPYmplY3QgZm9vKGludCBjb3VudCwgU3RyaW5nIGRlc2NyaXB0aW9uKSB7CisgICAgICAgIHN1cGVyLmZvbyg8Y2FyZXQ+KTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvVGFiQWZ0ZXJOZXctb3V0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvVGFiQWZ0ZXJOZXctb3V0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGViMzNjYwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9UYWJBZnRlck5ldy1vdXQuamF2YQpAQCAtMCwwICsxLDIxIEBACitwdWJsaWMgY2xhc3MgTWFpbiB7CisKKyAgcHVibGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CisgICAgQWFhYSBhID0gbmV3IEJiYmIoPGNhcmV0PjIpOworICB9CisKKyAgY2xhc3MgQWFhYSB7CisgICAgaW50IGFhYTsKKworICAgIEFhYWEoaW50IGFhYSkgeworICAgICAgdGhpcy5hYWEgPSBhYWE7CisgICAgfQorICB9CisKKyAgY2xhc3MgQmJiYiBleHRlbmRzIEFhYWF7CisgICAgQmJiYihpbnQgYWFhKSB7CisgICAgICBzdXBlcihhYWEpOworICAgIH0KKyAgfQorCit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvVGFiQWZ0ZXJOZXcuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9UYWJBZnRlck5ldy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk4MTc0YTYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvVGFiQWZ0ZXJOZXcuamF2YQpAQCAtMCwwICsxLDIxIEBACitwdWJsaWMgY2xhc3MgTWFpbiB7CisKKyAgcHVibGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CisgICAgQWFhYSBhID0gbmV3IEI8Y2FyZXQ+QWFhYSgyKTsKKyAgfQorCisgIGNsYXNzIEFhYWEgeworICAgIGludCBhYWE7CisKKyAgICBBYWFhKGludCBhYWEpIHsKKyAgICAgIHRoaXMuYWFhID0gYWFhOworICAgIH0KKyAgfQorCisgIGNsYXNzIEJiYmIgZXh0ZW5kcyBBYWFheworICAgIEJiYmIoaW50IGFhYSkgeworICAgICAgc3VwZXIoYWFhKTsKKyAgICB9CisgIH0KKworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL1RhYk1ldGhvZENhbGwtb3V0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvVGFiTWV0aG9kQ2FsbC1vdXQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kN2MxYTU2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL1RhYk1ldGhvZENhbGwtb3V0LmphdmEKQEAgLTAsMCArMSw5IEBACitwdWJsaWMgY2xhc3MgTXlKYXZhQ2xhc3MgeworCisgICAgYm9vbGVhbiBmZmZmKCkge30KKworICAgIHsKKworICAgICAgICBib29sZWFuIGIgPSBmZmZmKDxjYXJldD4yMzkpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9UYWJNZXRob2RDYWxsLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvVGFiTWV0aG9kQ2FsbC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRhMjFhNGIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvVGFiTWV0aG9kQ2FsbC5qYXZhCkBAIC0wLDAgKzEsOSBAQAorcHVibGljIGNsYXNzIE15SmF2YUNsYXNzIHsKKworICAgIGJvb2xlYW4gZmZmZigpIHt9CisKKyAgICB7CisKKyAgICAgICAgYm9vbGVhbiBiID0gPGNhcmV0PmVxdWFscygyMzkpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9UYWJNZXRob2RJbkJpbmFyeUV4cHJlc3Npb24tb3V0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvVGFiTWV0aG9kSW5CaW5hcnlFeHByZXNzaW9uLW91dC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdmY2I1NjUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvVGFiTWV0aG9kSW5CaW5hcnlFeHByZXNzaW9uLW91dC5qYXZhCkBAIC0wLDAgKzEsMTMgQEAKK3B1YmxpYyBjbGFzcyBUYWJDb21wbGV0ZSB7CisJcHVibGljIHZvaWQgc2NlbmUoKSB7CisJCVNlcnZhbnQgc2VydmFudCA9IG5ldyBTZXJ2YW50KCk7CisJCWludCB2YXIgPSBzZXJ2YW50Lm1ldGhvZDEoKTxjYXJldD4gKyAxOworCX0KK30KKworY2xhc3MgU2VydmFudCB7CisJcHVibGljIGludCBtZXRob2QxKCkgeworCQlyZXR1cm4gMTsKKwl9CisKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvVGFiTWV0aG9kSW5CaW5hcnlFeHByZXNzaW9uLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvVGFiTWV0aG9kSW5CaW5hcnlFeHByZXNzaW9uLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTNmZTIyMgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9UYWJNZXRob2RJbkJpbmFyeUV4cHJlc3Npb24uamF2YQpAQCAtMCwwICsxLDEzIEBACitwdWJsaWMgY2xhc3MgVGFiQ29tcGxldGUgeworCXB1YmxpYyB2b2lkIHNjZW5lKCkgeworCQlTZXJ2YW50IHNlcnZhbnQgPSBuZXcgU2VydmFudCgpOworCQlpbnQgdmFyID0gc2VydmFudC5tZXQ8Y2FyZXQ+aG9kMSgpICsgMTsKKwl9Cit9CisKK2NsYXNzIFNlcnZhbnQgeworCXB1YmxpYyBpbnQgbWV0aG9kMSgpIHsKKwkJcmV0dXJuIDE7CisJfQorCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL1RhYlRvUmVwbGFjZUNsYXNzS2V5d29yZC1vdXQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9UYWJUb1JlcGxhY2VDbGFzc0tleXdvcmQtb3V0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjJiNGY2MQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9UYWJUb1JlcGxhY2VDbGFzc0tleXdvcmQtb3V0LmphdmEKQEAgLTAsMCArMSw3IEBACitjbGFzcyBGb28geworICB2b2lkIGZvbygpIHsKKyAgICBDbGFzczw/IGV4dGVuZHMgRm9vPiBjID0gRm9vLmNsYXNzOzxjYXJldD4KKyAgfQorfQorCitjbGFzcyBCYXIgZXh0ZW5kcyBGb28ge30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvVGFiVG9SZXBsYWNlQ2xhc3NLZXl3b3JkLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvVGFiVG9SZXBsYWNlQ2xhc3NLZXl3b3JkLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTA5M2EyMwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9UYWJUb1JlcGxhY2VDbGFzc0tleXdvcmQuamF2YQpAQCAtMCwwICsxLDcgQEAKK2NsYXNzIEZvbyB7CisgIHZvaWQgZm9vKCkgeworICAgIENsYXNzPD8gZXh0ZW5kcyBGb28+IGMgPSBGPGNhcmV0PmEuY2xhc3M7CisgIH0KK30KKworY2xhc3MgQmFyIGV4dGVuZHMgRm9vIHt9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL1RhaWxBZnRlckluc3RhbmNlT2Ytb3V0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvVGFpbEFmdGVySW5zdGFuY2VPZi1vdXQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYzA0OWYzMAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9UYWlsQWZ0ZXJJbnN0YW5jZU9mLW91dC5qYXZhCkBAIC0wLDAgKzEsOSBAQAorcHVibGljIGNsYXNzIFRlc3RDYXNlIGV4dGVuZHMgWnp6IHsKKwlwdWJsaWMgYm9vbGVhbiB0dHQoWnp6IG8pIHsKKwkJcmV0dXJuIG8gaW5zdGFuY2VvZiBUZXN0Q2FzZTxjYXJldD4KKwl9Cit9CisKK2NsYXNzIFp6eiB7CisgICAgcHJpdmF0ZSB2b2lkIGZheCgpIHt9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL1RhaWxBZnRlckluc3RhbmNlT2YuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9UYWlsQWZ0ZXJJbnN0YW5jZU9mLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGU3MjYxNAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9UYWlsQWZ0ZXJJbnN0YW5jZU9mLmphdmEKQEAgLTAsMCArMSw5IEBACitwdWJsaWMgY2xhc3MgVGVzdENhc2UgZXh0ZW5kcyBaenogeworCXB1YmxpYyBib29sZWFuIHR0dChaenogbykgeworCQlyZXR1cm4gbyBpbnN0YW5jZW9mIDxjYXJldD4KKwl9Cit9CisKK2NsYXNzIFp6eiB7CisgICAgcHJpdmF0ZSB2b2lkIGZheCgpIHt9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL1RoaXNGaWVsZEFzc2lnbmVkVG9JdHNlbGYuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9UaGlzRmllbGRBc3NpZ25lZFRvSXRzZWxmLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTNiMTBmYgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9UaGlzRmllbGRBc3NpZ25lZFRvSXRzZWxmLmphdmEKQEAgLTAsMCArMSw4IEBACitjbGFzcyBBIHsKKyAgICBPYmplY3QgZmllbGQ7CisKKyAgICBBKCkgeworICAgICAgICBmaWVsZCA9IDI7CisgICAgICAgIHRoaXMuZmllbGQgPSBmaTxjYXJldD4KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL1Rocm93RXhjZXB0aW9uQ29uc3RydWN0b3Itb3V0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvVGhyb3dFeGNlcHRpb25Db25zdHJ1Y3Rvci1vdXQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZDc0MGU1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL1Rocm93RXhjZXB0aW9uQ29uc3RydWN0b3Itb3V0LmphdmEKQEAgLTAsMCArMSw5IEBACitjbGFzcyBNeUV4Y2VwdGlvbiBleHRlbmRzIFJ1bnRpbWVFeGNlcHRpb24geworICBwdWJsaWMgTXlFeGNlcHRpb24oU3RyaW5nW10gcykge30KK30KKworY2xhc3MgWFhYIHsKKyAgeworICAgIHRocm93IG5ldyBNeUV4Y2VwdGlvbihuZXcgU3RyaW5nW117PGNhcmV0Pn0pOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL1Rocm93RXhjZXB0aW9uQ29uc3RydWN0b3IuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9UaHJvd0V4Y2VwdGlvbkNvbnN0cnVjdG9yLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWE3NzkyNgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9UaHJvd0V4Y2VwdGlvbkNvbnN0cnVjdG9yLmphdmEKQEAgLTAsMCArMSw5IEBACitjbGFzcyBNeUV4Y2VwdGlvbiBleHRlbmRzIFJ1bnRpbWVFeGNlcHRpb24geworICBwdWJsaWMgTXlFeGNlcHRpb24oU3RyaW5nW10gcykge30KK30KKworY2xhc3MgWFhYIHsKKyAgeworICAgIHRocm93IG5ldyBNeUV4Y2VwdGlvbihuZXcgPGNhcmV0PikKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9UaHJvd1J1bnRpbWVFeGNlcHRpb24tb3V0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvVGhyb3dSdW50aW1lRXhjZXB0aW9uLW91dC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ2N2NhYzAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvVGhyb3dSdW50aW1lRXhjZXB0aW9uLW91dC5qYXZhCkBAIC0wLDAgKzEsNyBAQAorY2xhc3MgRm9vIHsKKyAgeworICAgIFJ1bnRpbWVFeGNlcHRpb24gZTsKKyAgICB0aHJvdyBlOzxjYXJldD4KKyAgfQorCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL1Rocm93UnVudGltZUV4Y2VwdGlvbi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL1Rocm93UnVudGltZUV4Y2VwdGlvbi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM4MjFhNmUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvVGhyb3dSdW50aW1lRXhjZXB0aW9uLmphdmEKQEAgLTAsMCArMSw3IEBACitjbGFzcyBGb28geworICB7CisgICAgUnVudGltZUV4Y2VwdGlvbiBlOworICAgIHRocm93IDxjYXJldD4KKyAgfQorCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL1RyeVdpdGhSZXNvdXJjZXNOb1NlbWljb2xvbi1vdXQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9UcnlXaXRoUmVzb3VyY2VzTm9TZW1pY29sb24tb3V0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWI1N2MzZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9UcnlXaXRoUmVzb3VyY2VzTm9TZW1pY29sb24tb3V0LmphdmEKQEAgLTAsMCArMSw4IEBACitjbGFzcyBNeUNsYXNzIHsKKyAgc3RhdGljIGNsYXNzIE15UmVzb3VyY2UgaW1wbGVtZW50cyBBdXRvQ2xvc2VhYmxlIHsgfQorCisgIHZvaWQgZihNeVJlc291cmNlIHJlc291cmNlKSB7CisgICAgdHJ5IChmaW5hbCBNeVJlc291cmNlIGMgPSByZXNvdXJjZTxjYXJldD4pIHsKKyAgICB9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvVHJ5V2l0aFJlc291cmNlc05vU2VtaWNvbG9uLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvVHJ5V2l0aFJlc291cmNlc05vU2VtaWNvbG9uLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGJiYWU1MAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9UcnlXaXRoUmVzb3VyY2VzTm9TZW1pY29sb24uamF2YQpAQCAtMCwwICsxLDggQEAKK2NsYXNzIE15Q2xhc3MgeworICBzdGF0aWMgY2xhc3MgTXlSZXNvdXJjZSBpbXBsZW1lbnRzIEF1dG9DbG9zZWFibGUgeyB9CisKKyAgdm9pZCBmKE15UmVzb3VyY2UgcmVzb3VyY2UpIHsKKyAgICB0cnkgKGZpbmFsIE15UmVzb3VyY2UgYyA9IHI8Y2FyZXQ+KSB7CisgICAgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL1RyeVdpdGhSZXNvdXJjZXNUaHJvd3NFeGNlcHRpb24tb3V0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvVHJ5V2l0aFJlc291cmNlc1Rocm93c0V4Y2VwdGlvbi1vdXQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43YjM1NDc5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL1RyeVdpdGhSZXNvdXJjZXNUaHJvd3NFeGNlcHRpb24tb3V0LmphdmEKQEAgLTAsMCArMSwxMSBAQAoraW1wb3J0IGphdmEuaW8uRmlsZUlucHV0U3RyZWFtOworaW1wb3J0IGphdmEuaW8uSU9FeGNlcHRpb247CisKK2NsYXNzIFRlc3QgeworICB2b2lkIGZvbygpIHsKKyAgICB0cnkgeworICAgICAgdHJ5IChGaWxlSW5wdXRTdHJlYW0gaW4gPSBuZXcgRmlsZUlucHV0U3RyZWFtKCJhZHNmIikpIHsKKyAgICAgIH0KKyAgICB9IGNhdGNoIChJT0V4Y2VwdGlvbiA8Y2FyZXQ+KSB7fQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL1RyeVdpdGhSZXNvdXJjZXNUaHJvd3NFeGNlcHRpb24uamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9UcnlXaXRoUmVzb3VyY2VzVGhyb3dzRXhjZXB0aW9uLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzY4M2M3MTMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvVHJ5V2l0aFJlc291cmNlc1Rocm93c0V4Y2VwdGlvbi5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKK2ltcG9ydCBqYXZhLmlvLkZpbGVJbnB1dFN0cmVhbTsKKworY2xhc3MgVGVzdCB7CisgIHZvaWQgZm9vKCkgeworICAgIHRyeSB7CisgICAgICB0cnkgKEZpbGVJbnB1dFN0cmVhbSBpbiA9IG5ldyBGaWxlSW5wdXRTdHJlYW0oImFkc2YiKSkgeworICAgICAgfQorICAgIH0gY2F0Y2ggKElPPGNhcmV0Pikge30KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9UeXBlQXJnczEtb3V0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvVHlwZUFyZ3MxLW91dC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE4NWMzNjEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvVHlwZUFyZ3MxLW91dC5qYXZhCkBAIC0wLDAgKzEsOSBAQAorY2xhc3MgTGlzdDxUPiB7fQorCitwdWJsaWMgY2xhc3MgQUEgeworICAgIGNsYXNzIEVudHJ5IHt9CisKKyAgICB7CisgICAgICAgIExpc3Q8RW50cnk+IGwgPSBuZXcgTGlzdDxFbnRyeT4oKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvVHlwZUFyZ3MxLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvVHlwZUFyZ3MxLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzA3MmMxNAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9UeXBlQXJnczEuamF2YQpAQCAtMCwwICsxLDkgQEAKK2NsYXNzIExpc3Q8VD4ge30KKworcHVibGljIGNsYXNzIEFBIHsKKyAgICBjbGFzcyBFbnRyeSB7fQorCisgICAgeworICAgICAgICBMaXN0PEVudHJ5PiBsID0gbmV3IDxjYXJldD4KKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvVHlwZUFyZ3MyLW91dC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL1R5cGVBcmdzMi1vdXQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yOGQ3YmFlYwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9UeXBlQXJnczItb3V0LmphdmEKQEAgLTAsMCArMSwxMCBAQAoraW1wb3J0IGphdmEudXRpbC5Db2xsZWN0aW9uOworCitjbGFzcyBMaXN0PFQ+IHt9CisKK3B1YmxpYyBjbGFzcyBBIHsKKyAgICB2b2lkIGYoKSB7CisgICAgICAgIGNsYXNzIENvbGxlY3Rpb24ge30KKyAgICAgICAgTGlzdDxqYXZhLnV0aWwuQ29sbGVjdGlvbj4gbCA9IG5ldyBMaXN0PGphdmEudXRpbC5Db2xsZWN0aW9uPigpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9UeXBlQXJnczIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9UeXBlQXJnczIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZmIwMWM3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL1R5cGVBcmdzMi5qYXZhCkBAIC0wLDAgKzEsOCBAQAorY2xhc3MgTGlzdDxUPiB7fQorCitwdWJsaWMgY2xhc3MgQSB7CisgICAgdm9pZCBmKCkgeworICAgICAgICBjbGFzcyBDb2xsZWN0aW9uIHt9CisgICAgICAgIExpc3Q8amF2YS51dGlsLkNvbGxlY3Rpb24+IGwgPSBuZXcgPGNhcmV0PgorICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9UeXBlUGFyYW1ldGVyc0luaGVyaXRvcnMtb3V0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvVHlwZVBhcmFtZXRlcnNJbmhlcml0b3JzLW91dC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMxZTJlOTIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvVHlwZVBhcmFtZXRlcnNJbmhlcml0b3JzLW91dC5qYXZhCkBAIC0wLDAgKzEsNyBAQAorY2xhc3MgRm9vIHt9CitjbGFzcyBCYXIgZXh0ZW5kcyBGb28ge30KK2NsYXNzIEdvbyBleHRlbmRzIEJhciB7fQorCitjbGFzcyBQYXJhbXM8WCBleHRlbmRzIEZvbz4ge30KK2NsYXNzIE1haW4gZXh0ZW5kcyBQYXJhbXM8Rm9vPjxjYXJldD4KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL1R5cGVQYXJhbWV0ZXJzSW5oZXJpdG9ycy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL1R5cGVQYXJhbWV0ZXJzSW5oZXJpdG9ycy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIxODU5MzcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvVHlwZVBhcmFtZXRlcnNJbmhlcml0b3JzLmphdmEKQEAgLTAsMCArMSw3IEBACitjbGFzcyBGb28ge30KK2NsYXNzIEJhciBleHRlbmRzIEZvbyB7fQorY2xhc3MgR29vIGV4dGVuZHMgQmFyIHt9CisKK2NsYXNzIFBhcmFtczxYIGV4dGVuZHMgRm9vPiB7fQorY2xhc3MgTWFpbiBleHRlbmRzIFBhcmFtczw8Y2FyZXQ+CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9UeXBlUGFyYW1ldGVyc0luaGVyaXRvcnNDb21tYS1vdXQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9UeXBlUGFyYW1ldGVyc0luaGVyaXRvcnNDb21tYS1vdXQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43YzI0YjU3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL1R5cGVQYXJhbWV0ZXJzSW5oZXJpdG9yc0NvbW1hLW91dC5qYXZhCkBAIC0wLDAgKzEsNSBAQAorY2xhc3MgRm9vIHt9CisKK2NsYXNzIFBhcmFtczxYIGV4dGVuZHMgRm9vLFk+IHt9CitjbGFzcyBNYWluIGV4dGVuZHMgUGFyYW1zPEZvbywgPGNhcmV0PgorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvVHlwZVBhcmFtZXRlcnNJbmhlcml0b3JzQ29tbWEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9UeXBlUGFyYW1ldGVyc0luaGVyaXRvcnNDb21tYS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNkOGMwMjYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvVHlwZVBhcmFtZXRlcnNJbmhlcml0b3JzQ29tbWEuamF2YQpAQCAtMCwwICsxLDUgQEAKK2NsYXNzIEZvbyB7fQorCitjbGFzcyBQYXJhbXM8WCBleHRlbmRzIEZvbyxZPiB7fQorY2xhc3MgTWFpbiBleHRlbmRzIFBhcmFtczw8Y2FyZXQ+CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9UeXBlUGFyYW1ldGVyc0luaGVyaXRvcnNJbkV4cHJlc3Npb24tb3V0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvVHlwZVBhcmFtZXRlcnNJbmhlcml0b3JzSW5FeHByZXNzaW9uLW91dC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM1MWUxNzcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvVHlwZVBhcmFtZXRlcnNJbmhlcml0b3JzSW5FeHByZXNzaW9uLW91dC5qYXZhCkBAIC0wLDAgKzEsNiBAQAorY2xhc3MgQ2hhclNlcXVlbmNlIHt9CisKK2NsYXNzIFN0cmluZ3k8UyBleHRlbmRzIENoYXJTZXF1ZW5jZT4geyB9CisKK2NsYXNzIFRlc3RlciB7Cit2b2lkIG1ldGhvZCgpIHsgbmV3IFN0cmluZ3k8Q2hhclNlcXVlbmNlPjxjYXJldD4gfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9UeXBlUGFyYW1ldGVyc0luaGVyaXRvcnNJbkV4cHJlc3Npb24uamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9UeXBlUGFyYW1ldGVyc0luaGVyaXRvcnNJbkV4cHJlc3Npb24uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NDZjZDBiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL1R5cGVQYXJhbWV0ZXJzSW5oZXJpdG9yc0luRXhwcmVzc2lvbi5qYXZhCkBAIC0wLDAgKzEsNiBAQAorY2xhc3MgQ2hhclNlcXVlbmNlIHt9CisKK2NsYXNzIFN0cmluZ3k8UyBleHRlbmRzIENoYXJTZXF1ZW5jZT4geyB9CisKK2NsYXNzIFRlc3RlciB7Cit2b2lkIG1ldGhvZCgpIHsgbmV3IFN0cmluZ3k8Q1M8Y2FyZXQ+IH0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvVHlwZVBhcmFtZXRlcnNPYmplY3RJbmhlcml0b3JzLW91dC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL1R5cGVQYXJhbWV0ZXJzT2JqZWN0SW5oZXJpdG9ycy1vdXQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZjY3NjRhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL1R5cGVQYXJhbWV0ZXJzT2JqZWN0SW5oZXJpdG9ycy1vdXQuamF2YQpAQCAtMCwwICsxLDYgQEAKK2NsYXNzIENoYXJTZXF1ZW5jZVgge30KKworY2xhc3MgU3RyaW5neTxTPiB7IH0KKworY2xhc3MgVGVzdGVyIHsKK3ZvaWQgbWV0aG9kKCkgeyBuZXcgU3RyaW5neTxDaGFyU2VxdWVuY2VYPjxjYXJldD4gfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9UeXBlUGFyYW1ldGVyc09iamVjdEluaGVyaXRvcnMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9UeXBlUGFyYW1ldGVyc09iamVjdEluaGVyaXRvcnMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45YTYyNmNiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL1R5cGVQYXJhbWV0ZXJzT2JqZWN0SW5oZXJpdG9ycy5qYXZhCkBAIC0wLDAgKzEsNiBAQAorY2xhc3MgQ2hhclNlcXVlbmNlWCB7fQorCitjbGFzcyBTdHJpbmd5PFM+IHsgfQorCitjbGFzcyBUZXN0ZXIgewordm9pZCBtZXRob2QoKSB7IG5ldyBTdHJpbmd5PENTWDxjYXJldD4gfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9UeXBlVmFyaWFibGVJbnN0YW5jZU9mLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvVHlwZVZhcmlhYmxlSW5zdGFuY2VPZi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBjOTAzMGYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvVHlwZVZhcmlhYmxlSW5zdGFuY2VPZi5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKK2ludGVyZmFjZSBGb28ge30KK2NsYXNzIEJhciBpbXBsZW1lbnRzIEZvbyB7fQorY2xhc3MgR29vIGltcGxlbWVudHMgRm9vIHt9CisKK2NsYXNzIE1haW48VCBleHRlbmRzIEZvbz4geworICB7CisgICAgVCB0OworICAgIGlmICh0IGluc3RhbmNlb2YgPGNhcmV0PikKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9VbmJvdW5kVHlwZUFyZ3Mtb3V0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvVW5ib3VuZFR5cGVBcmdzLW91dC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUwZjdiYTUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvVW5ib3VuZFR5cGVBcmdzLW91dC5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKK2ludGVyZmFjZSBGb28ge30KK2ludGVyZmFjZSBGb29FeDxUPiBleHRlbmRzIEZvbyB7CisgICAgVCBmb28oKTsKK30KKworY2xhc3MgQmFyIHsKKyAgICB7CisgICAgICAgIEZvbyBmID0gbmV3IEZvb0V4PDxjYXJldD4+KCkge307CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9VbmJvdW5kVHlwZUFyZ3MuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9VbmJvdW5kVHlwZUFyZ3MuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYTIzMzNkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL1VuYm91bmRUeXBlQXJncy5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKK2ludGVyZmFjZSBGb28ge30KK2ludGVyZmFjZSBGb29FeDxUPiBleHRlbmRzIEZvbyB7CisgICAgVCBmb28oKTsKK30KKworY2xhc3MgQmFyIHsKKyAgICB7CisgICAgICAgIEZvbyBmID0gbmV3IEZFPGNhcmV0PgorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvVW5ib3VuZFR5cGVBcmdzMi1vdXQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9VbmJvdW5kVHlwZUFyZ3MyLW91dC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk5NjU5YjUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvVW5ib3VuZFR5cGVBcmdzMi1vdXQuamF2YQpAQCAtMCwwICsxLDggQEAKK2ludGVyZmFjZSBGb28ge30KK2NsYXNzIEZvb0V4PFQ+IGltcGxlbWVudHMgRm9vIHt9CisKK2NsYXNzIEJhciB7CisgICAgeworICAgICAgICBGb28gZiA9IG5ldyBGb29FeDw8Y2FyZXQ+PigpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvVW5ib3VuZFR5cGVBcmdzMi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL1VuYm91bmRUeXBlQXJnczIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40Nzg3Y2RlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL1VuYm91bmRUeXBlQXJnczIuamF2YQpAQCAtMCwwICsxLDggQEAKK2ludGVyZmFjZSBGb28ge30KK2NsYXNzIEZvb0V4PFQ+IGltcGxlbWVudHMgRm9vIHt9CisKK2NsYXNzIEJhciB7CisgICAgeworICAgICAgICBGb28gZiA9IG5ldyBGRTxjYXJldD4KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL1VubG9ja0RvY3VtZW50LW91dC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL1VubG9ja0RvY3VtZW50LW91dC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE1Y2M4ZGQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvVW5sb2NrRG9jdW1lbnQtb3V0LmphdmEKQEAgLTAsMCArMSwxMCBAQAoraW1wb3J0IGphdmEudXRpbC4qOworCitpbXBvcnQgcGtnLkJhcjsKK2ltcG9ydCBwa2cuRm9vOworCitjbGFzcyBNeUNsYXNzIHsKK3sKKyAgRm9vLmZvbyhDb2xsZWN0aW9ucy48QmFyPmVtcHR5TGlzdCgpKTsKK30KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvVW5sb2NrRG9jdW1lbnQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9VbmxvY2tEb2N1bWVudC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI0NzNkOGMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvVW5sb2NrRG9jdW1lbnQuamF2YQpAQCAtMCwwICsxLDggQEAKK2ltcG9ydCBqYXZhLnV0aWwuKjsKK2ltcG9ydCBwa2cuRm9vOworCitjbGFzcyBNeUNsYXNzIHsKK3sKKyAgRm9vLmZvbyhDb2xsZWN0aW9ucy5lbTxjYXJldD4pCit9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL1VucXVhbGlmaWVkQ29uc3RhbnRJblN3aXRjaC1vdXQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9VbnF1YWxpZmllZENvbnN0YW50SW5Td2l0Y2gtb3V0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzk3NTEzZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9VbnF1YWxpZmllZENvbnN0YW50SW5Td2l0Y2gtb3V0LmphdmEKQEAgLTAsMCArMSwxNiBAQAorZW51bSBGb28geworICAgIEZPTywgQkFSCisgIH0KKworCitjbGFzcyBNYWluIHsKKworICB7CisgICAgRm9vIGE7CisgICAgRm9vIGI7CisgICAgc3dpdGNoIChhKSB7CisgICAgICBjYXNlIEZPTzogYiA9IEZvby5CQVI7PGNhcmV0PgorICAgIH0KKyAgfQorCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL1VucXVhbGlmaWVkQ29uc3RhbnRJblN3aXRjaC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL1VucXVhbGlmaWVkQ29uc3RhbnRJblN3aXRjaC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc1ZDlmNDkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvVW5xdWFsaWZpZWRDb25zdGFudEluU3dpdGNoLmphdmEKQEAgLTAsMCArMSwxNiBAQAorZW51bSBGb28geworICAgIEZPTywgQkFSCisgIH0KKworCitjbGFzcyBNYWluIHsKKworICB7CisgICAgRm9vIGE7CisgICAgRm9vIGI7CisgICAgc3dpdGNoIChhKSB7CisgICAgICBjYXNlIEZPTzogYiA9IEI8Y2FyZXQ+CisgICAgfQorICB9CisKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvVXNlSW50Q29uc3RhbnRzRnJvbUNvbnN0cnVjdGVkQ2xhc3Mtb3V0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvVXNlSW50Q29uc3RhbnRzRnJvbUNvbnN0cnVjdGVkQ2xhc3Mtb3V0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWI5ODU1YgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9Vc2VJbnRDb25zdGFudHNGcm9tQ29uc3RydWN0ZWRDbGFzcy1vdXQuamF2YQpAQCAtMCwwICsxLDE1IEBACitjbGFzcyBGb28geworICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBGT09fRk9POworICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBGT09fQkFSOworCisgIEZvbyhpbnQgYSkge30KKworICB2b2lkIGZvbyhpbnQgeCk7Cit9CisKK3B1YmxpYyBjbGFzcyBCYXIgeworICAgIAorICAgIHsKKyAgICAgICBuZXcgRm9vKEZvby5GT09fQkFSKTxjYXJldD4KKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvVXNlSW50Q29uc3RhbnRzRnJvbUNvbnN0cnVjdGVkQ2xhc3MuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9Vc2VJbnRDb25zdGFudHNGcm9tQ29uc3RydWN0ZWRDbGFzcy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRmYmIwZTIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvVXNlSW50Q29uc3RhbnRzRnJvbUNvbnN0cnVjdGVkQ2xhc3MuamF2YQpAQCAtMCwwICsxLDE1IEBACitjbGFzcyBGb28geworICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBGT09fRk9POworICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBGT09fQkFSOworCisgIEZvbyhpbnQgYSkge30KKworICB2b2lkIGZvbyhpbnQgeCk7Cit9CisKK3B1YmxpYyBjbGFzcyBCYXIgeworICAgIAorICAgIHsKKyAgICAgICBuZXcgRm9vKEZCPGNhcmV0PikKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvVXNlSW50Q29uc3RhbnRzRnJvbVRhcmdldENsYXNzLW91dC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL1VzZUludENvbnN0YW50c0Zyb21UYXJnZXRDbGFzcy1vdXQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZWU2YmM5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL1VzZUludENvbnN0YW50c0Zyb21UYXJnZXRDbGFzcy1vdXQuamF2YQpAQCAtMCwwICsxLDEzIEBACitjbGFzcyBGb28geworICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBGT09fRk9POworICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBGT09fQkFSOworCisgIHZvaWQgZm9vKGludCB4KTsKK30KKworcHVibGljIGNsYXNzIEJhciB7CisgICAgCisgICAgeworICAgICAgIG5ldyBGb28oKS5mb28oRm9vLkZPT19CQVIpOzxjYXJldD4KKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvVXNlSW50Q29uc3RhbnRzRnJvbVRhcmdldENsYXNzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvVXNlSW50Q29uc3RhbnRzRnJvbVRhcmdldENsYXNzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2VlOTI2YwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9Vc2VJbnRDb25zdGFudHNGcm9tVGFyZ2V0Q2xhc3MuamF2YQpAQCAtMCwwICsxLDEzIEBACitjbGFzcyBGb28geworICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBGT09fRk9POworICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBGT09fQkFSOworCisgIHZvaWQgZm9vKGludCB4KTsKK30KKworcHVibGljIGNsYXNzIEJhciB7CisgICAgCisgICAgeworICAgICAgIG5ldyBGb28oKS5mb28oRkI8Y2FyZXQ+KQorICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9Vc2VJbnRDb25zdGFudHNGcm9tVGFyZ2V0Q2xhc3NSZXR1cm5WYWx1ZS1vdXQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9Vc2VJbnRDb25zdGFudHNGcm9tVGFyZ2V0Q2xhc3NSZXR1cm5WYWx1ZS1vdXQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41N2ZlZjk4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL1VzZUludENvbnN0YW50c0Zyb21UYXJnZXRDbGFzc1JldHVyblZhbHVlLW91dC5qYXZhCkBAIC0wLDAgKzEsMTMgQEAKK2NsYXNzIEZvbyB7CisgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEZPT19GT087CisgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEZPT19CQVI7CisKKyAgaW50IGZvbygpOworfQorCitwdWJsaWMgY2xhc3MgQmFyIHsKKyAgICAKKyAgICB7CisgICAgICAgaWYgKG5ldyBGb28oKS5mb28oKSA9PSBGb28uRk9PX0JBUjxjYXJldD4pCisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL1VzZUludENvbnN0YW50c0Zyb21UYXJnZXRDbGFzc1JldHVyblZhbHVlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvVXNlSW50Q29uc3RhbnRzRnJvbVRhcmdldENsYXNzUmV0dXJuVmFsdWUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMGMyNDk1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL1VzZUludENvbnN0YW50c0Zyb21UYXJnZXRDbGFzc1JldHVyblZhbHVlLmphdmEKQEAgLTAsMCArMSwxMyBAQAorY2xhc3MgRm9vIHsKKyAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgRk9PX0ZPTzsKKyAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgRk9PX0JBUjsKKworICBpbnQgZm9vKCk7Cit9CisKK3B1YmxpYyBjbGFzcyBCYXIgeworICAgIAorICAgIHsKKyAgICAgICBpZiAobmV3IEZvbygpLmZvbygpID09IEZCPGNhcmV0PikKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvVXNlSW50Q29uc3RhbnRzSW5Pci1vdXQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9Vc2VJbnRDb25zdGFudHNJbk9yLW91dC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJjNmQ4NGEwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL1VzZUludENvbnN0YW50c0luT3Itb3V0LmphdmEKQEAgLTAsMCArMSwxNSBAQAorY2xhc3MgRm9vIHsKKyAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgRk9PX0ZPTzsKKyAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgRk9PX0JBUjsKKworICBGb28oaW50IGEpIHt9CisKKyAgdm9pZCBmb28oaW50IHgpOworfQorCitwdWJsaWMgY2xhc3MgQmFyIHsKKyAgICAKKyAgICB7CisgICAgICAgbmV3IEZvbygyIHwgRm9vLkZPT19CQVI8Y2FyZXQ+KQorICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9Vc2VJbnRDb25zdGFudHNJbk9yLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvVXNlSW50Q29uc3RhbnRzSW5Pci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdjNGQ4MjIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvVXNlSW50Q29uc3RhbnRzSW5Pci5qYXZhCkBAIC0wLDAgKzEsMTUgQEAKK2NsYXNzIEZvbyB7CisgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEZPT19GT087CisgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEZPT19CQVI7CisKKyAgRm9vKGludCBhKSB7fQorCisgIHZvaWQgZm9vKGludCB4KTsKK30KKworcHVibGljIGNsYXNzIEJhciB7CisgICAgCisgICAgeworICAgICAgIG5ldyBGb28oMiB8IEZCPGNhcmV0PikKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvVXNlSW50Q29uc3RhbnRzSW5QbHVzLW91dC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL1VzZUludENvbnN0YW50c0luUGx1cy1vdXQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MTIyZjEwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL1VzZUludENvbnN0YW50c0luUGx1cy1vdXQuamF2YQpAQCAtMCwwICsxLDE1IEBACitjbGFzcyBGb28geworICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBGT09fRk9POworICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBGT09fQkFSOworCisgIEZvbyhpbnQgYSkge30KKworICB2b2lkIGZvbyhpbnQgeCk7Cit9CisKK3B1YmxpYyBjbGFzcyBCYXIgeworICAgIAorICAgIHsKKyAgICAgICBuZXcgRm9vKDIgKyBGb28uRk9PX0JBUjxjYXJldD4pCisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL1VzZUludENvbnN0YW50c0luUGx1cy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL1VzZUludENvbnN0YW50c0luUGx1cy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg4ZDg5YTcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvVXNlSW50Q29uc3RhbnRzSW5QbHVzLmphdmEKQEAgLTAsMCArMSwxNSBAQAorY2xhc3MgRm9vIHsKKyAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgRk9PX0ZPTzsKKyAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgRk9PX0JBUjsKKworICBGb28oaW50IGEpIHt9CisKKyAgdm9pZCBmb28oaW50IHgpOworfQorCitwdWJsaWMgY2xhc3MgQmFyIHsKKyAgICAKKyAgICB7CisgICAgICAgbmV3IEZvbygyICsgRkI8Y2FyZXQ+KQorICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9Vc2VyRGF0YUxpc3RBZGRBbGwtb3V0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvVXNlckRhdGFMaXN0QWRkQWxsLW91dC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE5ZGM4NmQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvVXNlckRhdGFMaXN0QWRkQWxsLW91dC5qYXZhCkBAIC0wLDAgKzEsMTggQEAKK2NsYXNzIExpc3Q8VD4geworICB2b2lkIGFkZEFsbChMaXN0PD8gZXh0ZW5kcyBUPiBsKTsKK30KKworY2xhc3MgS2V5PFQ+IHt9CisKK2NsYXNzIEZvb0Jhc2UgeworICAgIEtleTxMaXN0PFN0cmluZz4+IFNUUklOR19MSVNUOworCisgICAgPFQ+IFQgZ2V0KEtleTxUPiBrZXkpOworCisgICAgeworICAgICAgICBMaXN0PFN0cmluZz4gbDsKKyAgICAgICAgbC5hZGRBbGwoZ2V0KFNUUklOR19MSVNUKTxjYXJldD4pCisgICAgfQorCisKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvVXNlckRhdGFMaXN0QWRkQWxsLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvVXNlckRhdGFMaXN0QWRkQWxsLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDhlNDBjZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9Vc2VyRGF0YUxpc3RBZGRBbGwuamF2YQpAQCAtMCwwICsxLDE4IEBACitjbGFzcyBMaXN0PFQ+IHsKKyAgdm9pZCBhZGRBbGwoTGlzdDw/IGV4dGVuZHMgVD4gbCk7Cit9CisKK2NsYXNzIEtleTxUPiB7fQorCitjbGFzcyBGb29CYXNlIHsKKyAgICBLZXk8TGlzdDxTdHJpbmc+PiBTVFJJTkdfTElTVDsKKworICAgIDxUPiBUIGdldChLZXk8VD4ga2V5KTsKKworICAgIHsKKyAgICAgICAgTGlzdDxTdHJpbmc+IGw7CisgICAgICAgIGwuYWRkQWxsKGdldChTPGNhcmV0PikpCisgICAgfQorCisKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvVmFyYXJnczEtb3V0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvVmFyYXJnczEtb3V0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzFmYjAxYgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9WYXJhcmdzMS1vdXQuamF2YQpAQCAtMCwwICsxLDggQEAKK3B1YmxpYyBjbGFzcyBWYXJhcmdzIHsKKyAgICB2b2lkIGZvbyAoU3RyaW5nIHMsIFN0cmluZyAuLi4gb2Jqcykge30KKworICAgIHZvaWQgYmFyICgpIHsKKyAgICAgICAgU3RyaW5nIHNzcyA9IG5ldyBTdHJpbmcoKTsKKyAgICAgICAgZm9vICgiIiwgIiIsIHNzczxjYXJldD4pOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvVmFyYXJnczEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9WYXJhcmdzMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY1NmM1YzgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvVmFyYXJnczEuamF2YQpAQCAtMCwwICsxLDggQEAKK3B1YmxpYyBjbGFzcyBWYXJhcmdzIHsKKyAgICB2b2lkIGZvbyAoU3RyaW5nIHMsIFN0cmluZyAuLi4gb2Jqcykge30KKworICAgIHZvaWQgYmFyICgpIHsKKyAgICAgICAgU3RyaW5nIHNzcyA9IG5ldyBTdHJpbmcoKTsKKyAgICAgICAgZm9vICgiIiwgIiIsIHM8Y2FyZXQ+KTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL1ZhcmlhYmxlQ29sb24tb3V0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvVmFyaWFibGVDb2xvbi1vdXQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NzkwNGVmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL1ZhcmlhYmxlQ29sb24tb3V0LmphdmEKQEAgLTAsMCArMSw1IEBACitjbGFzcyBCYXIgeworICBpbnQgZm9vKGludCB6b29vYSwgaW50IHpvb29iKSB7CisgICAgcmV0dXJuIHRydWUgPyB6b29vYSA6IDxjYXJldD4KKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL1ZhcmlhYmxlQ29sb24uamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9WYXJpYWJsZUNvbG9uLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTFlZDRjZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9WYXJpYWJsZUNvbG9uLmphdmEKQEAgLTAsMCArMSw1IEBACitjbGFzcyBCYXIgeworICBpbnQgZm9vKGludCB6b29vYSwgaW50IHpvb29iKSB7CisgICAgcmV0dXJuIHRydWUgPyB6b288Y2FyZXQ+CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9Wb2lkQ2FzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL1ZvaWRDYXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2U5MjQ5MQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9Wb2lkQ2FzdC5qYXZhCkBAIC0wLDAgKzEsNSBAQAorY2xhc3MgQ3sKKyAgICB7CisgICAgICAgICg8Y2FyZXQ+KSAKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL1ZvaWRFeHBlY3RlZFR5cGUtb3V0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvVm9pZEV4cGVjdGVkVHlwZS1vdXQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iM2E5ZDdhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL1ZvaWRFeHBlY3RlZFR5cGUtb3V0LmphdmEKQEAgLTAsMCArMSw4IEBACitjbGFzcyBNYWluIHsKKworICB7CisgICAgbmV3IEZvbygpLmVxdWFscyg8Y2FyZXQ+KTsKKyAgfQorfQorCitjbGFzcyBGb28ge30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvVm9pZEV4cGVjdGVkVHlwZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL1ZvaWRFeHBlY3RlZFR5cGUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YmY1MTk1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL1ZvaWRFeHBlY3RlZFR5cGUuamF2YQpAQCAtMCwwICsxLDggQEAKK2NsYXNzIE1haW4geworCisgIHsKKyAgICBuZXcgRm9vKCkuPGNhcmV0PgorICB9Cit9CisKK2NsYXNzIEZvbyB7fQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9XaWxkY2FyZGVkSW5zdGFuY2VvZi1vdXQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9XaWxkY2FyZGVkSW5zdGFuY2VvZi1vdXQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hN2QyMDAwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL1dpbGRjYXJkZWRJbnN0YW5jZW9mLW91dC5qYXZhCkBAIC0wLDAgKzEsOSBAQAorY2xhc3MgQTxUPiB7fQorY2xhc3MgQmJiYjxUPiBleHRlbmRzIEE8VD4ge30KK3B1YmxpYyBjbGFzcyBDIHsKKyAgdm9pZCBtKEE8Pz4gYSkgeworICAgIGlmIChhIGluc3RhbmNlb2YgQmJiYjw/PjxjYXJldD4pIHsKKworICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9XaWxkY2FyZGVkSW5zdGFuY2VvZi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL1dpbGRjYXJkZWRJbnN0YW5jZW9mLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjdjNmJkYwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9XaWxkY2FyZGVkSW5zdGFuY2VvZi5qYXZhCkBAIC0wLDAgKzEsOSBAQAorY2xhc3MgQTxUPiB7fQorY2xhc3MgQmJiYjxUPiBleHRlbmRzIEE8VD4ge30KK3B1YmxpYyBjbGFzcyBDIHsKKyAgdm9pZCBtKEE8Pz4gYSkgeworICAgIGlmIChhIGluc3RhbmNlb2YgQjxjYXJldD4pIHsKKworICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9XaWxkY2FyZGVkSW5zdGFuY2VvZjItb3V0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvV2lsZGNhcmRlZEluc3RhbmNlb2YyLW91dC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUyYmRiNzcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvV2lsZGNhcmRlZEluc3RhbmNlb2YyLW91dC5qYXZhCkBAIC0wLDAgKzEsOSBAQAorY2xhc3MgQTxUPiB7fQorY2xhc3MgQmJiYjxUPiBleHRlbmRzIEE8VD4ge30KK3B1YmxpYyBjbGFzcyBDIHsKKyAgdm9pZCBtKEEgYSkgeworICAgIGlmIChhIGluc3RhbmNlb2YgQmJiYjxjYXJldD4pIHsKKworICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9XaWxkY2FyZGVkSW5zdGFuY2VvZjIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9XaWxkY2FyZGVkSW5zdGFuY2VvZjIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NmQzNzNlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL1dpbGRjYXJkZWRJbnN0YW5jZW9mMi5qYXZhCkBAIC0wLDAgKzEsOSBAQAorY2xhc3MgQTxUPiB7fQorY2xhc3MgQmJiYjxUPiBleHRlbmRzIEE8VD4ge30KK3B1YmxpYyBjbGFzcyBDIHsKKyAgdm9pZCBtKEEgYSkgeworICAgIGlmIChhIGluc3RhbmNlb2YgQjxjYXJldD4pIHsKKworICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9XaWxkY2FyZGVkSW5zdGFuY2VvZjMtb3V0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvV2lsZGNhcmRlZEluc3RhbmNlb2YzLW91dC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc3NTBlZDcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvV2lsZGNhcmRlZEluc3RhbmNlb2YzLW91dC5qYXZhCkBAIC0wLDAgKzEsOSBAQAorY2xhc3MgQTxUPiB7fQorY2xhc3MgQmJiYjxUPiBleHRlbmRzIEE8VD4ge30KK3B1YmxpYyBjbGFzcyBDIHsKKyAgdm9pZCBtKEE8U3RyaW5nPiBhKSB7CisgICAgaWYgKGEgaW5zdGFuY2VvZiBCYmJiPD8+PGNhcmV0PikgeworCisgICAgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL1dpbGRjYXJkZWRJbnN0YW5jZW9mMy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL1dpbGRjYXJkZWRJbnN0YW5jZW9mMy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE4ZTY5NzAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvV2lsZGNhcmRlZEluc3RhbmNlb2YzLmphdmEKQEAgLTAsMCArMSw5IEBACitjbGFzcyBBPFQ+IHt9CitjbGFzcyBCYmJiPFQ+IGV4dGVuZHMgQTxUPiB7fQorcHVibGljIGNsYXNzIEMgeworICB2b2lkIG0oQTxTdHJpbmc+IGEpIHsKKyAgICBpZiAoYSBpbnN0YW5jZW9mIEI8Y2FyZXQ+KSB7CisKKyAgICB9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvV3JvbmdBbm9ueW1vdXMtb3V0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvV3JvbmdBbm9ueW1vdXMtb3V0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTI3ZTRmNwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9Xcm9uZ0Fub255bW91cy1vdXQuamF2YQpAQCAtMCwwICsxLDIxIEBACitpbXBvcnQgamF2YS5pby5GaWxlOworaW1wb3J0IGphdmEuaW8uRmlsZW5hbWVGaWx0ZXI7CisKK2NsYXNzIEludGVybWVkaWF0ZSB7CisKKyAgICB7CisgICAgICAgIG5ldyBGaWxlKCIuIikubGlzdEZpbGVzKG5ldyBGaWxlbmFtZUZpbHRlcigpIHsKKyAgICAgICAgICAgIEBPdmVycmlkZQorICAgICAgICAgICAgcHVibGljIGJvb2xlYW4gYWNjZXB0KEZpbGUgZGlyLCBTdHJpbmcgbmFtZSkgeworICAgICAgICAgICAgICAgIDxzZWxlY3Rpb24+cmV0dXJuIGZhbHNlOyAgLy9UbyBjaGFuZ2UgYm9keSBvZiBpbXBsZW1lbnRlZCBtZXRob2RzIHVzZSBGaWxlIHwgU2V0dGluZ3MgfCBGaWxlIFRlbXBsYXRlcy48L3NlbGVjdGlvbj4KKyAgICAgICAgICAgIH0KKyAgICAgICAgfSkKKyAgICAgICAgICAgICAgICBTd2luZ1V0aWxpdGllcy5pbnZva2VMYXRlcihuZXcgUnVubmFibGUoKSB7CisgICAgICAgICAgICAgICAgICAgIHB1YmxpYyB2b2lkIHJ1bigpIHsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0pOworCisKKyAgICB9CisKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9Xcm9uZ0Fub255bW91cy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL1dyb25nQW5vbnltb3VzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzU3N2E3NgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9Xcm9uZ0Fub255bW91cy5qYXZhCkBAIC0wLDAgKzEsMTUgQEAKK2ltcG9ydCBqYXZhLmlvLkZpbGU7CisKK2NsYXNzIEludGVybWVkaWF0ZSB7CisKKyAgICB7CisgICAgICAgIG5ldyBGaWxlKCIuIikubGlzdEZpbGVzKG5ldyBGaWxlRmlsdGVyPGNhcmV0PgorICAgICAgICAgICAgICAgIFN3aW5nVXRpbGl0aWVzLmludm9rZUxhdGVyKG5ldyBSdW5uYWJsZSgpIHsKKyAgICAgICAgICAgICAgICAgICAgcHVibGljIHZvaWQgcnVuKCkgeworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfSk7CisKKworICAgIH0KKworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL2FmdGVySW5zdGFuY2VPZi9hZnRlcjEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9hZnRlckluc3RhbmNlT2YvYWZ0ZXIxLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGVjZjZlZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9hZnRlckluc3RhbmNlT2YvYWZ0ZXIxLmphdmEKQEAgLTAsMCArMSwxMSBAQAorY2xhc3MgQXsKKyB7CisgICBBIGE7CisKKyAgIGlmKGEgaW5zdGFuY2VvZiBCPGNhcmV0PikKKworIH0KKworIGNsYXNzIEIgZXh0ZW5kcyBBe30KKworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9hZnRlckluc3RhbmNlT2YvYWZ0ZXIyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvYWZ0ZXJJbnN0YW5jZU9mL2FmdGVyMi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFlODVlNTEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvYWZ0ZXJJbnN0YW5jZU9mL2FmdGVyMi5qYXZhCkBAIC0wLDAgKzEsMTEgQEAKK2NsYXNzIEF7CisgeworICAgQSBhOworCisgICBpZihhIGluc3RhbmNlb2YgQkJCQjxjYXJldD4pCisKKyB9CisKKyBjbGFzcyBCQkJCIGV4dGVuZHMgQXt9CisKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvYWZ0ZXJJbnN0YW5jZU9mL2JlZm9yZTEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9hZnRlckluc3RhbmNlT2YvYmVmb3JlMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY4OGRlNTIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvYWZ0ZXJJbnN0YW5jZU9mL2JlZm9yZTEuamF2YQpAQCAtMCwwICsxLDExIEBACitjbGFzcyBBeworIHsKKyAgIEEgYTsKKworICAgaWYoYSBpbnN0YW5jZW9mIDxjYXJldD4pCisKKyB9CisKKyBjbGFzcyBCIGV4dGVuZHMgQXt9CisKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvYWZ0ZXJJbnN0YW5jZU9mL2JlZm9yZTIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9hZnRlckluc3RhbmNlT2YvYmVmb3JlMi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQxYjhjZGYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvYWZ0ZXJJbnN0YW5jZU9mL2JlZm9yZTIuamF2YQpAQCAtMCwwICsxLDExIEBACitjbGFzcyBBeworIHsKKyAgIEEgYTsKKworICAgaWYoYSBpbnN0YW5jZW9mIEJCPGNhcmV0PikKKworIH0KKworIGNsYXNzIEJCQkIgZXh0ZW5kcyBBe30KKworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9hZnRlck5ldy9MYXN0QXJnSW5Jbm5lck5ld0FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvYWZ0ZXJOZXcvTGFzdEFyZ0luSW5uZXJOZXdBZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYzNzI4YzIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvYWZ0ZXJOZXcvTGFzdEFyZ0luSW5uZXJOZXdBZnRlci5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKK2NsYXNzIEIgeworICAgIGNsYXNzIEEgeworICAgICAgQShpbnQgaSkge30KKyAgICB9CisgICAgc3RhdGljIEIgY3JlYXRlQihBIGEpIHt9CisgICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgeworICAgICAgICBpbnQgaTsKKyAgICAgICAgZm9vKGNyZWF0ZUIobmV3IEEoaSk8Y2FyZXQ+KSk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9hZnRlck5ldy9MYXN0QXJnSW5Jbm5lck5ld0FmdGVyMi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL2FmdGVyTmV3L0xhc3RBcmdJbklubmVyTmV3QWZ0ZXIyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzIzYjI4NAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9hZnRlck5ldy9MYXN0QXJnSW5Jbm5lck5ld0FmdGVyMi5qYXZhCkBAIC0wLDAgKzEsOSBAQAorY2xhc3MgQiB7CisgICAgcHJpdmF0ZSBzdGF0aWMgaW50IGdldFNlZWQoKSB7IHJldHVybiAwOyB9CisgICAgY2xhc3MgQSB7CisgICAgICBBKGludCBpKSB7fQorICAgIH0KKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CisgICAgICBuZXcgQShnZXRTZWVkKCkpLnNob3coKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL2FmdGVyTmV3L0xhc3RBcmdJbklubmVyTmV3QWZ0ZXIzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvYWZ0ZXJOZXcvTGFzdEFyZ0luSW5uZXJOZXdBZnRlcjMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MzhlYmFlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL2FmdGVyTmV3L0xhc3RBcmdJbklubmVyTmV3QWZ0ZXIzLmphdmEKQEAgLTAsMCArMSwxMyBAQAorY2xhc3MgQUFBIHsKKyAgQUFBKGludCBpKSB7fQorfQorCitjbGFzcyBCIHsKKyAgICBpbnQgaWlpaT0wOworICAgIEIoaW50IGksQUFBIGFhYSwgaW50IGosIGludCBrKSB7CisgICAgICBCIGIgPSBuZXcgQigKKyAgICAgICAgMCwKKyAgICAgICAgbmV3IEFBQShpaWlpKSwKKyAgICAgICk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9hZnRlck5ldy9MYXN0QXJnSW5Jbm5lck5ld0FmdGVyNC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL2FmdGVyTmV3L0xhc3RBcmdJbklubmVyTmV3QWZ0ZXI0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2UyZmE2ZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9hZnRlck5ldy9MYXN0QXJnSW5Jbm5lck5ld0FmdGVyNC5qYXZhCkBAIC0wLDAgKzEsOCBAQAorY2xhc3MgX01hcDxLPiB7fQorCitjbGFzcyBCIHsKKyAgQihfTWFwPFN0cmluZz4gbWFwKSB7fQorICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmd2KSB7CisgICAgQiBiID0gbmV3IEIoIChfTWFwPFN0cmluZz4pIDxjYXJldD4pOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL2FmdGVyTmV3L0xhc3RBcmdJbklubmVyTmV3QmVmb3JlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvYWZ0ZXJOZXcvTGFzdEFyZ0luSW5uZXJOZXdCZWZvcmUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMmEzYjk1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL2FmdGVyTmV3L0xhc3RBcmdJbklubmVyTmV3QmVmb3JlLmphdmEKQEAgLTAsMCArMSwxMCBAQAorY2xhc3MgQiB7CisgICAgY2xhc3MgQSB7CisgICAgICBBKGludCBpKSB7fQorICAgIH0KKyAgICBzdGF0aWMgQiBjcmVhdGVCKEEgYSkge30KKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CisgICAgICAgIGludCBpOworICAgICAgICBmb28oY3JlYXRlQihuZXcgQSg8Y2FyZXQ+KSkpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvYWZ0ZXJOZXcvTGFzdEFyZ0luSW5uZXJOZXdCZWZvcmUyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvYWZ0ZXJOZXcvTGFzdEFyZ0luSW5uZXJOZXdCZWZvcmUyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTRkODQ4ZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9hZnRlck5ldy9MYXN0QXJnSW5Jbm5lck5ld0JlZm9yZTIuamF2YQpAQCAtMCwwICsxLDkgQEAKK2NsYXNzIEIgeworICAgIHByaXZhdGUgc3RhdGljIGludCBnZXRTZWVkKCkgeyByZXR1cm4gMDsgfQorICAgIGNsYXNzIEEgeworICAgICAgQShpbnQgaSkge30KKyAgICB9CisgICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgeworICAgICAgbmV3IEEoZ2V0PGNhcmV0Pikuc2hvdygpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvYWZ0ZXJOZXcvTGFzdEFyZ0luSW5uZXJOZXdCZWZvcmUzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvYWZ0ZXJOZXcvTGFzdEFyZ0luSW5uZXJOZXdCZWZvcmUzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmQzMGQ5YgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9hZnRlck5ldy9MYXN0QXJnSW5Jbm5lck5ld0JlZm9yZTMuamF2YQpAQCAtMCwwICsxLDEzIEBACitjbGFzcyBBQUEgeworICBBQUEoaW50IGkpIHt9Cit9CisKK2NsYXNzIEIgeworICAgIGludCBpaWlpPTA7CisgICAgQihpbnQgaSxBQUEgYWFhLCBpbnQgaiwgaW50IGspIHsKKyAgICAgIEIgYiA9IG5ldyBCKAorICAgICAgICAwLAorICAgICAgICBuZXcgQUFBKGlpPGNhcmV0PiksCisgICAgICApOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvYWZ0ZXJOZXcvTGFzdEFyZ0luSW5uZXJOZXdCZWZvcmU0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvYWZ0ZXJOZXcvTGFzdEFyZ0luSW5uZXJOZXdCZWZvcmU0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTg4MjhiOTkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvYWZ0ZXJOZXcvTGFzdEFyZ0luSW5uZXJOZXdCZWZvcmU0LmphdmEKQEAgLTAsMCArMSw4IEBACitjbGFzcyBfTWFwPEs+IHt9CisKK2NsYXNzIEIgeworICBCKF9NYXA8U3RyaW5nPiBtYXApIHt9CisgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3YpIHsKKyAgICBCIGIgPSBuZXcgQiggKDxjYXJldD4pICk7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvYWZ0ZXJOZXcvYWZ0ZXIxLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvYWZ0ZXJOZXcvYWZ0ZXIxLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmIwZGI4NAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9hZnRlck5ldy9hZnRlcjEuamF2YQpAQCAtMCwwICsxLDUgQEAKK2NsYXNzIEFBQTxUPnsKKyAgeworICAgIEFBQSBhYSA9IG5ldyBBQUEoKTs8Y2FyZXQ+CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9hZnRlck5ldy9hZnRlcjEwLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvYWZ0ZXJOZXcvYWZ0ZXIxMC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgzNjg4MDIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvYWZ0ZXJOZXcvYWZ0ZXIxMC5qYXZhCkBAIC0wLDAgKzEsMTEgQEAKK2ltcG9ydCBqYXZhLmlvLklucHV0U3RyZWFtOworY2xhc3MgVGVzdCB7CisgIElucHV0U3RyZWFtIGlucHV0U3RyZWFtID0gbmV3IE15SW5wdXRTdHJlYW0oPGNhcmV0Pik7CisKKyAgcHJpdmF0ZSBjbGFzcyBNeUlucHV0U3RyZWFtIGV4dGVuZHMgSW5wdXRTdHJlYW0geworICAgIE15SW5wdXRTdHJlYW0oU3RyaW5nIG5tYW1lKXt9CisgICAgcHVibGljIGludCByZWFkKCkgdGhyb3dzIElPRXhjZXB0aW9uIHsKKyAgICAgIHJldHVybiAwOworICAgIH0KKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL2FmdGVyTmV3L2FmdGVyMTEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9hZnRlck5ldy9hZnRlcjExLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmIwZGI4NAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9hZnRlck5ldy9hZnRlcjExLmphdmEKQEAgLTAsMCArMSw1IEBACitjbGFzcyBBQUE8VD57CisgIHsKKyAgICBBQUEgYWEgPSBuZXcgQUFBKCk7PGNhcmV0PgorICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvYWZ0ZXJOZXcvYWZ0ZXIxMi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL2FmdGVyTmV3L2FmdGVyMTIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45YTgxYjUyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL2FmdGVyTmV3L2FmdGVyMTIuamF2YQpAQCAtMCwwICsxLDQgQEAKKworY2xhc3MgVGVzdDxUPiB7CisgIFRlc3Q8U3RyaW5nPiB0ZXN0ID0gbmV3IFRlc3Q8U3RyaW5nPigpOzxjYXJldD4KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvYWZ0ZXJOZXcvYWZ0ZXIxMy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL2FmdGVyTmV3L2FmdGVyMTMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZDhmODkzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL2FmdGVyTmV3L2FmdGVyMTMuamF2YQpAQCAtMCwwICsxLDMgQEAKK2NsYXNzIEFBQUFBPEssVj57CisgQUFBQUE8SyxWPiBhc2QgPSBuZXcgQUFBQUE8SywgVj4oKTs8Y2FyZXQ+Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL2FmdGVyTmV3L2FmdGVyMTQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9hZnRlck5ldy9hZnRlcjE0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWMyOGYyYgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9hZnRlck5ldy9hZnRlcjE0LmphdmEKQEAgLTAsMCArMSw1IEBACitjbGFzcyBBeworICB2b2lkIGZvbygpeworICAgIHRocm93IG5ldyBSdW50aW1lRXhjZXB0aW9uKDxjYXJldD4pOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL2FmdGVyTmV3L2FmdGVyMTUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9hZnRlck5ldy9hZnRlcjE1LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDBjZjBhOAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9hZnRlck5ldy9hZnRlcjE1LmphdmEKQEAgLTAsMCArMSw3IEBACitjbGFzcyBBeworICB2b2lkIGZvbygpIHRocm93cyBNeUV4Y2VwdGlvbnsKKyAgICB0aHJvdyBuZXcgRXJyb3IoPGNhcmV0Pik7CisgIH0KKworICBjbGFzcyBNeUV4Y2VwdGlvbiBleHRlbmRzIEV4Y2VwdGlvbnt9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL2FmdGVyTmV3L2FmdGVyMTYuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9hZnRlck5ldy9hZnRlcjE2LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTk2NGJmMQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9hZnRlck5ldy9hZnRlcjE2LmphdmEKQEAgLTAsMCArMSw3IEBACitjbGFzcyBBeworICB2b2lkIGZvbygpIHRocm93cyBNeUV4Y2VwdGlvbnsKKyAgICB0aHJvdyBuZXcgTXlFeGNlcHRpb24oKTs8Y2FyZXQ+CisgIH0KKworICBjbGFzcyBNeUV4Y2VwdGlvbiBleHRlbmRzIEV4Y2VwdGlvbnt9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL2FmdGVyTmV3L2FmdGVyMi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL2FmdGVyTmV3L2FmdGVyMi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU2MDg4M2UKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvYWZ0ZXJOZXcvYWZ0ZXIyLmphdmEKQEAgLTAsMCArMSw1IEBACitjbGFzcyBBQUE8VD57CisgIHsKKyAgICBBQUE8U3RyaW5nPiBhYSA9IG5ldyBBQUE8U3RyaW5nPigpOzxjYXJldD4KKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL2FmdGVyTmV3L2FmdGVyMy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL2FmdGVyTmV3L2FmdGVyMy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJmZDAwYmIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvYWZ0ZXJOZXcvYWZ0ZXIzLmphdmEKQEAgLTAsMCArMSw5IEBACitpbnRlcmZhY2UgWFhYPFQ+e30KKworY2xhc3MgQkJCPFg+IGltcGxlbWVudHMgWFhYPFg+e30KKworY2xhc3MgQUFBeworICB7CisgICAgWFhYIGFhID0gbmV3IEJCQigpOzxjYXJldD4KKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL2FmdGVyTmV3L2FmdGVyNC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL2FmdGVyTmV3L2FmdGVyNC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIxMTFkYWUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvYWZ0ZXJOZXcvYWZ0ZXI0LmphdmEKQEAgLTAsMCArMSw4IEBACitjbGFzcyBBQUF7CisgIGludGVyZmFjZSBYWFg8VD57fQorCisgIGNsYXNzIEJCQjxaPiBpbXBsZW1lbnRzIFhYWDxaPnt9CisgIHsKKyAgICBYWFg8U3RyaW5nPiBhYSA9IG5ldyBCQkI8U3RyaW5nPigpOzxjYXJldD4KKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL2FmdGVyTmV3L2FmdGVyNS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL2FmdGVyTmV3L2FmdGVyNS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhjMjViM2UKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvYWZ0ZXJOZXcvYWZ0ZXI1LmphdmEKQEAgLTAsMCArMSw4IEBACitjbGFzcyBBQUF7CisgIGludGVyZmFjZSBYWFg8VD57fQorCisgIGNsYXNzIEJCQjxaPiBpbXBsZW1lbnRzIFhYWDxaPnt9CisgIHsKKyAgICBYWFggYWEgPSBuZXcgQkJCKCk7PGNhcmV0PgorICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvYWZ0ZXJOZXcvYWZ0ZXI2LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvYWZ0ZXJOZXcvYWZ0ZXI2LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjFhNmNmZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9hZnRlck5ldy9hZnRlcjYuamF2YQpAQCAtMCwwICsxLDggQEAKK2NsYXNzIEFBQXsKKyAgaW50ZXJmYWNlIFhYWDxUPnt9CisKKyAgY2xhc3MgQkJCPFo+IGltcGxlbWVudHMgWFhYPFo+e30KKyAgeworICAgIFhYWDxTdHJpbmdbXT4gYWEgPSBuZXcgQkJCPFN0cmluZ1tdPigpOzxjYXJldD4KKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL2FmdGVyTmV3L2FmdGVyNy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL2FmdGVyTmV3L2FmdGVyNy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkwODdjMWUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvYWZ0ZXJOZXcvYWZ0ZXI3LmphdmEKQEAgLTAsMCArMSw4IEBACitjbGFzcyBBQUF7CisgIGludGVyZmFjZSBYWFg8VCwgVDE+e30KKworICBjbGFzcyBCQkI8WiwgWjE+IGltcGxlbWVudHMgWFhYPFosIFoxPnt9CisgIHsKKyAgICBYWFg8U3RyaW5nLFN0cmluZ1tdPiBhYSA9IG5ldyBCQkI8U3RyaW5nLCBTdHJpbmdbXT4oKTs8Y2FyZXQ+CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9hZnRlck5ldy9hZnRlcjguamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9hZnRlck5ldy9hZnRlcjguamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZTE3ZThhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL2FmdGVyTmV3L2FmdGVyOC5qYXZhCkBAIC0wLDAgKzEsOCBAQAorY2xhc3MgQUFBeworICBpbnRlcmZhY2UgWFhYPFQ+e30KKyAgaW50ZXJmYWNlIFpaWjxUPnt9CisgIGNsYXNzIEJCQjxaPiBpbXBsZW1lbnRzIFhYWDxaWlo8Wj4+e30KKyAgeworICAgIFhYWDxaWlo8U3RyaW5nPj4gYWEgPSBuZXcgQkJCPFN0cmluZz4oKTsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL2FmdGVyTmV3L2FmdGVyOS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL2FmdGVyTmV3L2FmdGVyOS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBiYjAzNDIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvYWZ0ZXJOZXcvYWZ0ZXI5LmphdmEKQEAgLTAsMCArMSw3IEBACitjbGFzcyBBeworIGludGVyZmFjZSBJbnRlcmZhY2V7fQorCisgeworIEludGVyZmFjZSBpbiA9IG5ldyA8Y2FyZXQ+CisgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9hZnRlck5ldy9iZWZvcmUxLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvYWZ0ZXJOZXcvYmVmb3JlMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM5MGY3ODcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvYWZ0ZXJOZXcvYmVmb3JlMS5qYXZhCkBAIC0wLDAgKzEsNSBAQAorY2xhc3MgQUFBPFQ+eworICB7CisgICAgQUFBIGFhID0gbmV3IDxjYXJldD4KKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL2FmdGVyTmV3L2JlZm9yZTEwLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvYWZ0ZXJOZXcvYmVmb3JlMTAuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZjY2OTNhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL2FmdGVyTmV3L2JlZm9yZTEwLmphdmEKQEAgLTAsMCArMSwxMSBAQAoraW1wb3J0IGphdmEuaW8uSW5wdXRTdHJlYW07CitjbGFzcyBUZXN0IHsKKyAgSW5wdXRTdHJlYW0gaW5wdXRTdHJlYW0gPSBuZXcgTXlJbjxjYXJldD4KKworICBwcml2YXRlIGNsYXNzIE15SW5wdXRTdHJlYW0gZXh0ZW5kcyBJbnB1dFN0cmVhbSB7CisgICAgTXlJbnB1dFN0cmVhbShTdHJpbmcgbm1hbWUpe30KKyAgICBwdWJsaWMgaW50IHJlYWQoKSB0aHJvd3MgSU9FeGNlcHRpb24geworICAgICAgcmV0dXJuIDA7CisgICAgfQorICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvYWZ0ZXJOZXcvYmVmb3JlMTEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9hZnRlck5ldy9iZWZvcmUxMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZmNjY5M2EKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvYWZ0ZXJOZXcvYmVmb3JlMTEuamF2YQpAQCAtMCwwICsxLDExIEBACitpbXBvcnQgamF2YS5pby5JbnB1dFN0cmVhbTsKK2NsYXNzIFRlc3QgeworICBJbnB1dFN0cmVhbSBpbnB1dFN0cmVhbSA9IG5ldyBNeUluPGNhcmV0PgorCisgIHByaXZhdGUgY2xhc3MgTXlJbnB1dFN0cmVhbSBleHRlbmRzIElucHV0U3RyZWFtIHsKKyAgICBNeUlucHV0U3RyZWFtKFN0cmluZyBubWFtZSl7fQorICAgIHB1YmxpYyBpbnQgcmVhZCgpIHRocm93cyBJT0V4Y2VwdGlvbiB7CisgICAgICByZXR1cm4gMDsKKyAgICB9CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9hZnRlck5ldy9iZWZvcmUxMi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL2FmdGVyTmV3L2JlZm9yZTEyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMThhZjAyMAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9hZnRlck5ldy9iZWZvcmUxMi5qYXZhCkBAIC0wLDAgKzEsNCBAQAorCitjbGFzcyBUZXN0PFQ+IHsKKyAgVGVzdDxTdHJpbmc+IHRlc3QgPSBuZXcgVGVzdDw8Y2FyZXQ+Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL2FmdGVyTmV3L2JlZm9yZTEzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvYWZ0ZXJOZXcvYmVmb3JlMTMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MTdmZWRjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL2FmdGVyTmV3L2JlZm9yZTEzLmphdmEKQEAgLTAsMCArMSwzIEBACitjbGFzcyBBQUFBQTxLLFY+eworIEFBQUFBPEssVj4gYXNkID0gbmV3IEFBQUFBPDxjYXJldD4KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvYWZ0ZXJOZXcvYmVmb3JlMTQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9hZnRlck5ldy9iZWZvcmUxNC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYyNDg1ODkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvYWZ0ZXJOZXcvYmVmb3JlMTQuamF2YQpAQCAtMCwwICsxLDUgQEAKK2NsYXNzIEF7CisgIHZvaWQgZm9vKCl7CisgICAgdGhyb3cgbmV3IFJ1bnRpbWVFeDxjYXJldD4KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9hZnRlck5ldy9iZWZvcmUxNS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL2FmdGVyTmV3L2JlZm9yZTE1LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2I3NzhmOQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9hZnRlck5ldy9iZWZvcmUxNS5qYXZhCkBAIC0wLDAgKzEsNyBAQAorY2xhc3MgQXsKKyAgdm9pZCBmb28oKSB0aHJvd3MgTXlFeGNlcHRpb257CisgICAgdGhyb3cgbmV3IEVycm88Y2FyZXQ+CisgIH0KKworICBjbGFzcyBNeUV4Y2VwdGlvbiBleHRlbmRzIEV4Y2VwdGlvbnt9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL2FmdGVyTmV3L2JlZm9yZTE2LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvYWZ0ZXJOZXcvYmVmb3JlMTYuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMjFhNGM0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL2FmdGVyTmV3L2JlZm9yZTE2LmphdmEKQEAgLTAsMCArMSw3IEBACitjbGFzcyBBeworICB2b2lkIGZvbygpIHRocm93cyBNeUV4Y2VwdGlvbnsKKyAgICB0aHJvdyBuZXcgTXlFeDxjYXJldD4KKyAgfQorCisgIGNsYXNzIE15RXhjZXB0aW9uIGV4dGVuZHMgRXhjZXB0aW9ue30KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvYWZ0ZXJOZXcvYmVmb3JlMi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL2FmdGVyTmV3L2JlZm9yZTIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45OThiYmE0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL2FmdGVyTmV3L2JlZm9yZTIuamF2YQpAQCAtMCwwICsxLDUgQEAKK2NsYXNzIEFBQTxUPnsKKyAgeworICAgIEFBQTxTdHJpbmc+IGFhID0gbmV3IDxjYXJldD4KKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL2FmdGVyTmV3L2JlZm9yZTMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9hZnRlck5ldy9iZWZvcmUzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2U0OGVkYQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9hZnRlck5ldy9iZWZvcmUzLmphdmEKQEAgLTAsMCArMSw5IEBACitpbnRlcmZhY2UgWFhYPFQ+e30KKworY2xhc3MgQkJCPFg+IGltcGxlbWVudHMgWFhYPFg+e30KKworY2xhc3MgQUFBeworICB7CisgICAgWFhYIGFhID0gbmV3IEI8Y2FyZXQ+CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9hZnRlck5ldy9iZWZvcmU0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvYWZ0ZXJOZXcvYmVmb3JlNC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE4YTg1ODUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvYWZ0ZXJOZXcvYmVmb3JlNC5qYXZhCkBAIC0wLDAgKzEsOCBAQAorY2xhc3MgQUFBeworICBpbnRlcmZhY2UgWFhYPFQ+e30KKworICBjbGFzcyBCQkI8Wj4gaW1wbGVtZW50cyBYWFg8Wj57fQorICB7CisgICAgWFhYPFN0cmluZz4gYWEgPSBuZXcgQjxjYXJldD4KKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL2FmdGVyTmV3L2JlZm9yZTUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9hZnRlck5ldy9iZWZvcmU1LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzFkM2NjMwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9hZnRlck5ldy9iZWZvcmU1LmphdmEKQEAgLTAsMCArMSw4IEBACitjbGFzcyBBQUF7CisgIGludGVyZmFjZSBYWFg8VD57fQorCisgIGNsYXNzIEJCQjxaPiBpbXBsZW1lbnRzIFhYWDxaPnt9CisgIHsKKyAgICBYWFggYWEgPSBuZXcgQjxjYXJldD4KKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL2FmdGVyTmV3L2JlZm9yZTYuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9hZnRlck5ldy9iZWZvcmU2LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWNiYzFhMgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9hZnRlck5ldy9iZWZvcmU2LmphdmEKQEAgLTAsMCArMSw4IEBACitjbGFzcyBBQUF7CisgIGludGVyZmFjZSBYWFg8VD57fQorCisgIGNsYXNzIEJCQjxaPiBpbXBsZW1lbnRzIFhYWDxaPnt9CisgIHsKKyAgICBYWFg8U3RyaW5nW10+IGFhID0gbmV3IEI8Y2FyZXQ+CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9hZnRlck5ldy9iZWZvcmU3LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvYWZ0ZXJOZXcvYmVmb3JlNy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM1ZmM2ZDYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvYWZ0ZXJOZXcvYmVmb3JlNy5qYXZhCkBAIC0wLDAgKzEsOCBAQAorY2xhc3MgQUFBeworICBpbnRlcmZhY2UgWFhYPFQsIFQxPnt9CisKKyAgY2xhc3MgQkJCPFosIFoxPiBpbXBsZW1lbnRzIFhYWDxaLCBaMT57fQorICB7CisgICAgWFhYPFN0cmluZyxTdHJpbmdbXT4gYWEgPSBuZXcgQjxjYXJldD4KKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL2FmdGVyTmV3L2JlZm9yZTguamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9hZnRlck5ldy9iZWZvcmU4LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjMxYWI4YQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9hZnRlck5ldy9iZWZvcmU4LmphdmEKQEAgLTAsMCArMSw4IEBACitjbGFzcyBBQUF7CisgIGludGVyZmFjZSBYWFg8VD57fQorICBpbnRlcmZhY2UgWlpaPFQ+e30KKyAgY2xhc3MgQkJCPFo+IGltcGxlbWVudHMgWFhYPFpaWjxaPj57fQorICB7CisgICAgWFhYPFpaWjxTdHJpbmc+PiBhYSA9IG5ldyBCPGNhcmV0PgorICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvYWZ0ZXJOZXcvYmVmb3JlOS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL2FmdGVyTmV3L2JlZm9yZTkuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYmIwMzQyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL2FmdGVyTmV3L2JlZm9yZTkuamF2YQpAQCAtMCwwICsxLDcgQEAKK2NsYXNzIEF7CisgaW50ZXJmYWNlIEludGVyZmFjZXt9CisKKyB7CisgSW50ZXJmYWNlIGluID0gbmV3IDxjYXJldD4KKyB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL2Zvby9HZXRJbnN0YW5jZS1vdXQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9mb28vR2V0SW5zdGFuY2Utb3V0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDE5NDdhNAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9mb28vR2V0SW5zdGFuY2Utb3V0LmphdmEKQEAgLTAsMCArMSwxMSBAQAorcGFja2FnZSBmb287CisKK2NsYXNzIFNlcnZpY2VNYW5hZ2VyIHsKKyAgc3RhdGljIDxUPiBUIGdldFNlcnZpY2UoQ2xhc3M8VD4gYUNsYXNzKSB7fQorfQorCitjbGFzcyBNeUNsYXNzIHsKKyAgcHVibGljIE15Q2xhc3MgZ2V0SW5zdGFuY2UoKSB7CisgICAgcmV0dXJuIFNlcnZpY2VNYW5hZ2VyLmdldFNlcnZpY2UoTXlDbGFzcy5jbGFzcyk8Y2FyZXQ+OyAKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9mb28vR2V0SW5zdGFuY2UuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9mb28vR2V0SW5zdGFuY2UuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMzgxMTQzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL2Zvby9HZXRJbnN0YW5jZS5qYXZhCkBAIC0wLDAgKzEsMTEgQEAKK3BhY2thZ2UgZm9vOworCitjbGFzcyBTZXJ2aWNlTWFuYWdlciB7CisgIHN0YXRpYyA8VD4gVCBnZXRTZXJ2aWNlKENsYXNzPFQ+IGFDbGFzcykge30KK30KKworY2xhc3MgTXlDbGFzcyB7CisgIHB1YmxpYyBNeUNsYXNzIGdldEluc3RhbmNlKCkgeworICAgIHJldHVybiBTZXJ2aWNlTWFuYWdlci5nZXRTZXJ2aWNlKDxjYXJldD4pOyAKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9nZW5lcmljcy9hZnRlcjEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9nZW5lcmljcy9hZnRlcjEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZmYwNWYwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL2dlbmVyaWNzL2FmdGVyMS5qYXZhCkBAIC0wLDAgKzEsOSBAQAorY2xhc3MgQTxUPnsKKworICBUIGdldCgpe3JldHVybiBudWxsO30KKyAgdm9pZCBwdXQoU3RyaW5nIHN0cik7CisKKyAgeworICAgIHB1dChuZXcgQTxTdHJpbmc+KCkuZ2V0KCkpOzxjYXJldD4KKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL2dlbmVyaWNzL2FmdGVyMi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL2dlbmVyaWNzL2FmdGVyMi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVlNGEwMDAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvZ2VuZXJpY3MvYWZ0ZXIyLmphdmEKQEAgLTAsMCArMSw5IEBACitjbGFzcyBBPFQ+eworCisgIFQgZ2V0KCl7cmV0dXJuIG51bGw7fQorICB2b2lkIHB1dChUIHN0cik7CisKKyAgeworICAgIG5ldyBBPFN0cmluZz4oKS5wdXQobmV3IEE8U3RyaW5nPigpLmdldCgpKTs8Y2FyZXQ+CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9nZW5lcmljcy9hZnRlcjMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9nZW5lcmljcy9hZnRlcjMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZmZkMmRlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL2dlbmVyaWNzL2FmdGVyMy5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKK2NsYXNzIEE8VD57CisKKyAgVCBnZXQoKXtyZXR1cm4gbnVsbDt9CisgIDxUPiB2b2lkIHB1dChUIHN0cik7CisKKyAgeworICAgIE9iamVjdCBvYmo7CisgICAgcHV0KG9iaik7PGNhcmV0PgorICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvZ2VuZXJpY3MvYWZ0ZXI0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvZ2VuZXJpY3MvYWZ0ZXI0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjZmOWEyMwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9nZW5lcmljcy9hZnRlcjQuamF2YQpAQCAtMCwwICsxLDEwIEBACitjbGFzcyBBPFQ+eworCisgIFQgZ2V0KCl7cmV0dXJuIG51bGw7fQorICA8VD4gdm9pZCBwdXQoVFtdIHN0cik7CisKKyAgeworICAgIE9iamVjdFtdIG9iajsKKyAgICBwdXQob2JqKTs8Y2FyZXQ+CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9nZW5lcmljcy9hZnRlcjUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9nZW5lcmljcy9hZnRlcjUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zOThlMDEwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL2dlbmVyaWNzL2FmdGVyNS5qYXZhCkBAIC0wLDAgKzEsOSBAQAorY2xhc3MgQXsKKyBjbGFzcyBNYXA8VSxWPnsKKyAgViBnZXQoVSB1KXt9CisgfQorCisgeworICAgU3RyaW5nIHN0ciA9IG5ldyBNYXA8T2JqZWN0LCBTdHJpbmc+KCkuZ2V0KDxjYXJldD4pOworIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvZ2VuZXJpY3MvYWZ0ZXI2LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvZ2VuZXJpY3MvYWZ0ZXI2LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDNkYWQzYwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9nZW5lcmljcy9hZnRlcjYuamF2YQpAQCAtMCwwICsxLDkgQEAKK2NsYXNzIEN7CisgY2xhc3MgWDxUPnt9CisKKyBwdWJsaWMgPFQ+IFg8VD4gZm9vKFQgc2RoZyk7JworIHsKKworICBYPEM+IGRzZCA9IGZvbyg8Y2FyZXQ+KQorIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvZ2VuZXJpY3MvYWZ0ZXI3LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvZ2VuZXJpY3MvYWZ0ZXI3LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTI3OGRlOQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9nZW5lcmljcy9hZnRlcjcuamF2YQpAQCAtMCwwICsxLDcgQEAKK2NsYXNzIExpc3Q8VD4ge30KKworY2xhc3MgQyB7CisgIHZvaWQgZm9vICgpIHsKKyAgICBMaXN0PD8gZXh0ZW5kcyBTdHJpbmc+IGwgPSBuZXcgTGlzdDxTdHJpbmc+KCk7PGNhcmV0PgorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL2dlbmVyaWNzL2FmdGVyOC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL2dlbmVyaWNzL2FmdGVyOC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEwZGI3M2EKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvZ2VuZXJpY3MvYWZ0ZXI4LmphdmEKQEAgLTAsMCArMSw3IEBACitjbGFzcyBMaXN0PFQ+IHt9CisKK2NsYXNzIEMgeworICB2b2lkIGZvbyAoKSB7CisgICAgTGlzdDw/IGV4dGVuZHMgU3RyaW5nPltdIGFycmF5ID0gbmV3IExpc3RbPGNhcmV0Pl07CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvZ2VuZXJpY3MvYWZ0ZXI5LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvZ2VuZXJpY3MvYWZ0ZXI5LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjA2MDU5YQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9nZW5lcmljcy9hZnRlcjkuamF2YQpAQCAtMCwwICsxLDcgQEAKK2NsYXNzIEEgeworICAgIDxUPiB2b2lkIGZvbyhUW10gdHMpIHt9CisKKyAgICB7CisgICAgICAgIGZvbyhuZXcgT2JqZWN0W117PGNhcmV0Pn0pOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvZ2VuZXJpY3MvYmVmb3JlMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL2dlbmVyaWNzL2JlZm9yZTEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZDQyZWVmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL2dlbmVyaWNzL2JlZm9yZTEuamF2YQpAQCAtMCwwICsxLDkgQEAKK2NsYXNzIEE8VD57CisKKyAgVCBnZXQoKXtyZXR1cm4gbnVsbDt9CisgIHZvaWQgcHV0KFN0cmluZyBzdHIpOworCisgIHsKKyAgICBwdXQobmV3IEE8U3RyaW5nPigpLmdlPGNhcmV0PikKKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL2dlbmVyaWNzL2JlZm9yZTIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9nZW5lcmljcy9iZWZvcmUyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2IxZWMxOQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9nZW5lcmljcy9iZWZvcmUyLmphdmEKQEAgLTAsMCArMSw5IEBACitjbGFzcyBBPFQ+eworCisgIFQgZ2V0KCl7cmV0dXJuIG51bGw7fQorICB2b2lkIHB1dChUIHN0cik7CisKKyAgeworICAgIG5ldyBBPFN0cmluZz4oKS5wdXQobmV3IEE8U3RyaW5nPigpLmdlPGNhcmV0PikKKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL2dlbmVyaWNzL2JlZm9yZTMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9nZW5lcmljcy9iZWZvcmUzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjVkOTQzNgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9nZW5lcmljcy9iZWZvcmUzLmphdmEKQEAgLTAsMCArMSwxMCBAQAorY2xhc3MgQTxUPnsKKworICBUIGdldCgpe3JldHVybiBudWxsO30KKyAgPFQ+IHZvaWQgcHV0KFQgc3RyKTsKKworICB7CisgICAgT2JqZWN0IG9iajsKKyAgICBwdXQob2I8Y2FyZXQ+KQorICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvZ2VuZXJpY3MvYmVmb3JlNC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL2dlbmVyaWNzL2JlZm9yZTQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZTQzNGMyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL2dlbmVyaWNzL2JlZm9yZTQuamF2YQpAQCAtMCwwICsxLDEwIEBACitjbGFzcyBBPFQ+eworCisgIFQgZ2V0KCl7cmV0dXJuIG51bGw7fQorICA8VD4gdm9pZCBwdXQoVFtdIHN0cik7CisKKyAgeworICAgIE9iamVjdFtdIG9iajsKKyAgICBwdXQob2I8Y2FyZXQ+KQorICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvZ2VuZXJpY3MvYmVmb3JlNS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL2dlbmVyaWNzL2JlZm9yZTUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYThkNzhiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL2dlbmVyaWNzL2JlZm9yZTUuamF2YQpAQCAtMCwwICsxLDkgQEAKK2NsYXNzIEF7CisgY2xhc3MgTWFwPFUsVj57CisgIFYgZ2V0KFUgdSl7fQorIH0KKworIHsKKyAgIFN0cmluZyBzdHIgPSBuZXcgTWFwPE9iamVjdCwgU3RyaW5nPigpLmdlPGNhcmV0PgorIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvZ2VuZXJpY3MvYmVmb3JlNi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL2dlbmVyaWNzL2JlZm9yZTYuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45OTQ4ZDVkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL2dlbmVyaWNzL2JlZm9yZTYuamF2YQpAQCAtMCwwICsxLDkgQEAKK2NsYXNzIEN7CisgY2xhc3MgWDxUPnt9CisKKyBwdWJsaWMgPFQ+IFg8VD4gZm9vKFQgc2RoZyk7JworIHsKKworICBYPEM+IGRzZCA9IGY8Y2FyZXQ+CisgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9nZW5lcmljcy9iZWZvcmU3LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvZ2VuZXJpY3MvYmVmb3JlNy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIzODZkMjAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvZ2VuZXJpY3MvYmVmb3JlNy5qYXZhCkBAIC0wLDAgKzEsNyBAQAorY2xhc3MgTGlzdDxUPiB7fQorCitjbGFzcyBDIHsKKyAgdm9pZCBmb28gKCkgeworICAgIExpc3Q8PyBleHRlbmRzIFN0cmluZz4gbCA9IG5ldyA8Y2FyZXQ+CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvZ2VuZXJpY3MvYmVmb3JlOC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL2dlbmVyaWNzL2JlZm9yZTguamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NGY1MjMyYgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9nZW5lcmljcy9iZWZvcmU4LmphdmEKQEAgLTAsMCArMSw3IEBACitjbGFzcyBMaXN0PFQ+IHt9CisKK2NsYXNzIEMgeworICB2b2lkIGZvbyAoKSB7CisgICAgTGlzdDw/IGV4dGVuZHMgU3RyaW5nPltdIGFycmF5ID0gbmV3IDxjYXJldD4KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9nZW5lcmljcy9iZWZvcmU5LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvZ2VuZXJpY3MvYmVmb3JlOS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEyZTYyYWUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvZ2VuZXJpY3MvYmVmb3JlOS5qYXZhCkBAIC0wLDAgKzEsNyBAQAorY2xhc3MgQSB7CisgICAgPFQ+IHZvaWQgZm9vKFRbXSB0cykge30KKworICAgIHsKKyAgICAgICAgZm9vKG5ldyA8Y2FyZXQ+KTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL3BhcmVuQWZ0ZXJDYWxsL2FmdGVyMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL3BhcmVuQWZ0ZXJDYWxsL2FmdGVyMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgzNjIzOTgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvcGFyZW5BZnRlckNhbGwvYWZ0ZXIxLmphdmEKQEAgLTAsMCArMSw1IEBACitwdWJsaWMgY2xhc3MgVGVzdENsYXNzIHsKKyAgICBwdWJsaWMgdm9pZCBmb28oVGVzdENsYXNzIHApIHsKKyAgICAgICAgZm9vKHRoaXMpOzxjYXJldD4KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL3BhcmVuQWZ0ZXJDYWxsL2FmdGVyMV9zcGFjZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL3BhcmVuQWZ0ZXJDYWxsL2FmdGVyMV9zcGFjZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY2Zjg4ZDAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvcGFyZW5BZnRlckNhbGwvYWZ0ZXIxX3NwYWNlLmphdmEKQEAgLTAsMCArMSw1IEBACitwdWJsaWMgY2xhc3MgVGVzdENsYXNzIHsKKyAgICBwdWJsaWMgdm9pZCBmb28oVGVzdENsYXNzIHApIHsKKyAgICAgICAgZm9vKHRoaXMgKTs8Y2FyZXQ+CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9wYXJlbkFmdGVyQ2FsbC9hZnRlcjIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9wYXJlbkFmdGVyQ2FsbC9hZnRlcjIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNjI5ZmE2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL3BhcmVuQWZ0ZXJDYWxsL2FmdGVyMi5qYXZhCkBAIC0wLDAgKzEsNSBAQAorcHVibGljIGNsYXNzIFRlc3RDbGFzcyB7CisgICAgcHVibGljIGludCBmb28oVGVzdENsYXNzIHApIHsKKyAgICAgICAgZm9vKHRoaXMpPGNhcmV0PgorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvcGFyZW5BZnRlckNhbGwvYWZ0ZXIzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvcGFyZW5BZnRlckNhbGwvYWZ0ZXIzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODM2MjM5OAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9wYXJlbkFmdGVyQ2FsbC9hZnRlcjMuamF2YQpAQCAtMCwwICsxLDUgQEAKK3B1YmxpYyBjbGFzcyBUZXN0Q2xhc3MgeworICAgIHB1YmxpYyB2b2lkIGZvbyhUZXN0Q2xhc3MgcCkgeworICAgICAgICBmb28odGhpcyk7PGNhcmV0PgorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvcGFyZW5BZnRlckNhbGwvYWZ0ZXI0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvcGFyZW5BZnRlckNhbGwvYWZ0ZXI0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzUzMTZlMAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9wYXJlbkFmdGVyQ2FsbC9hZnRlcjQuamF2YQpAQCAtMCwwICsxLDUgQEAKK3B1YmxpYyBjbGFzcyBUZXN0Q2xhc3MgeworICAgIHB1YmxpYyBpbnQgZm9vKFRlc3RDbGFzcyBwKSB7CisgICAgICAgIGJhcihmb28odGhpcyk8Y2FyZXQ+KQorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvcGFyZW5BZnRlckNhbGwvYWZ0ZXI1LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvcGFyZW5BZnRlckNhbGwvYWZ0ZXI1LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzczMzJiNAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9wYXJlbkFmdGVyQ2FsbC9hZnRlcjUuamF2YQpAQCAtMCwwICsxLDUgQEAKK3B1YmxpYyBjbGFzcyBUZXN0Q2xhc3MgeworICAgIHB1YmxpYyBpbnQgZm9vKFRlc3RDbGFzcyBwKSB7CisgICAgICAgIGlmKGZvbyh0aGlzKTxjYXJldD4pCisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9wYXJlbkFmdGVyQ2FsbC9hZnRlcjYuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9wYXJlbkFmdGVyQ2FsbC9hZnRlcjYuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MjEwNzJiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL3BhcmVuQWZ0ZXJDYWxsL2FmdGVyNi5qYXZhCkBAIC0wLDAgKzEsNyBAQAorcHVibGljIGNsYXNzIFRlc3RDbGFzcyB7CisgICAgc3RhdGljIFRlc3RDbGFzcyBnZXRJbnN0YW5jZSgpIHsgcmV0dXJuIG5ldyBUZXN0Q2xhc3MoKTsgfQorICAgIHB1YmxpYyBpbnQgZm9vKFRlc3RDbGFzcyBwKSB7CisgICAgICAgIGZvbyhnZXRJbnN0YW5jZSgpPGNhcmV0PgorICAgICAgICApOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvcGFyZW5BZnRlckNhbGwvYmVmb3JlMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL3BhcmVuQWZ0ZXJDYWxsL2JlZm9yZTEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iOWQ1Y2VmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL3BhcmVuQWZ0ZXJDYWxsL2JlZm9yZTEuamF2YQpAQCAtMCwwICsxLDUgQEAKK3B1YmxpYyBjbGFzcyBUZXN0Q2xhc3MgeworICAgIHB1YmxpYyB2b2lkIGZvbyhUZXN0Q2xhc3MgcCkgeworICAgICAgICBmb28odDxjYXJldD4KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL3BhcmVuQWZ0ZXJDYWxsL2JlZm9yZTIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9wYXJlbkFmdGVyQ2FsbC9iZWZvcmUyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMThlZjg5NQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9wYXJlbkFmdGVyQ2FsbC9iZWZvcmUyLmphdmEKQEAgLTAsMCArMSw1IEBACitwdWJsaWMgY2xhc3MgVGVzdENsYXNzIHsKKyAgICBwdWJsaWMgaW50IGZvbyhUZXN0Q2xhc3MgcCkgeworICAgICAgICBmb28odDxjYXJldD4KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL3BhcmVuQWZ0ZXJDYWxsL2JlZm9yZTMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9wYXJlbkFmdGVyQ2FsbC9iZWZvcmUzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTc5YTkwZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9wYXJlbkFmdGVyQ2FsbC9iZWZvcmUzLmphdmEKQEAgLTAsMCArMSw1IEBACitwdWJsaWMgY2xhc3MgVGVzdENsYXNzIHsKKyAgICBwdWJsaWMgdm9pZCBmb28oVGVzdENsYXNzIHApIHsKKyAgICAgICAgZm9vKHQ8Y2FyZXQ+KTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL3BhcmVuQWZ0ZXJDYWxsL2JlZm9yZTQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9wYXJlbkFmdGVyQ2FsbC9iZWZvcmU0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTM0ZmQyYwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9wYXJlbkFmdGVyQ2FsbC9iZWZvcmU0LmphdmEKQEAgLTAsMCArMSw1IEBACitwdWJsaWMgY2xhc3MgVGVzdENsYXNzIHsKKyAgICBwdWJsaWMgaW50IGZvbyhUZXN0Q2xhc3MgcCkgeworICAgICAgICBiYXIoZm9vKHQ8Y2FyZXQ+KQorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvcGFyZW5BZnRlckNhbGwvYmVmb3JlNS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL3BhcmVuQWZ0ZXJDYWxsL2JlZm9yZTUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NzJhYjYwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL3BhcmVuQWZ0ZXJDYWxsL2JlZm9yZTUuamF2YQpAQCAtMCwwICsxLDUgQEAKK3B1YmxpYyBjbGFzcyBUZXN0Q2xhc3MgeworICAgIHB1YmxpYyBpbnQgZm9vKFRlc3RDbGFzcyBwKSB7CisgICAgICAgIGlmKGZvbyh0PGNhcmV0PikKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL3BhcmVuQWZ0ZXJDYWxsL2JlZm9yZTYuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9wYXJlbkFmdGVyQ2FsbC9iZWZvcmU2LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGYxYTJlYQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9wYXJlbkFmdGVyQ2FsbC9iZWZvcmU2LmphdmEKQEAgLTAsMCArMSw3IEBACitwdWJsaWMgY2xhc3MgVGVzdENsYXNzIHsKKyAgICBzdGF0aWMgVGVzdENsYXNzIGdldEluc3RhbmNlKCkgeyByZXR1cm4gbmV3IFRlc3RDbGFzcygpOyB9CisgICAgcHVibGljIGludCBmb28oVGVzdENsYXNzIHApIHsKKyAgICAgICAgZm9vKGdldDxjYXJldD4KKyAgICAgICAgKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL3BhcmVuQWZ0ZXJDYXN0L2FmdGVyMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL3BhcmVuQWZ0ZXJDYXN0L2FmdGVyMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEyOTE3OGYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvcGFyZW5BZnRlckNhc3QvYWZ0ZXIxLmphdmEKQEAgLTAsMCArMSw1IEBACitwdWJsaWMgY2xhc3MgVGVzdENsYXNzIHsKKyAgICBwdWJsaWMgdm9pZCBmb28oVGVzdENsYXNzIHApIHsKKyAgICAgICAgZm9vKChUZXN0Q2xhc3MpIDxjYXJldD4pOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9wYXJlbkFmdGVyQ2FzdC9hZnRlcjIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9wYXJlbkFmdGVyQ2FzdC9hZnRlcjIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MDM2Zjk1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL3BhcmVuQWZ0ZXJDYXN0L2FmdGVyMi5qYXZhCkBAIC0wLDAgKzEsNSBAQAorcHVibGljIGNsYXNzIFRlc3RDbGFzcyB7CisgICAgVGVzdENsYXNzKFRlc3RDbGFzcyBwKXsKKyAgICAgICBuZXcgVGVzdENsYXNzKChUZXN0Q2xhc3MpIDxjYXJldD5vYmopLmYoKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL3BhcmVuQWZ0ZXJDYXN0L2FmdGVyMy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL3BhcmVuQWZ0ZXJDYXN0L2FmdGVyMy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE0MDIzNmMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvcGFyZW5BZnRlckNhc3QvYWZ0ZXIzLmphdmEKQEAgLTAsMCArMSw4IEBACitjbGFzcyBBeworIHsKKyAgU3RyaW5nIHN0ciA9IChTdHJpbmcpZm9vKCk8Y2FyZXQ+CisKKyB9CisKKyBPYmplY3QgZm9vKCl7fQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9wYXJlbkFmdGVyQ2FzdC9iZWZvcmUxLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvcGFyZW5BZnRlckNhc3QvYmVmb3JlMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU4OTE2YWIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvcGFyZW5BZnRlckNhc3QvYmVmb3JlMS5qYXZhCkBAIC0wLDAgKzEsNSBAQAorcHVibGljIGNsYXNzIFRlc3RDbGFzcyB7CisgICAgcHVibGljIHZvaWQgZm9vKFRlc3RDbGFzcyBwKSB7CisgICAgICAgIGZvbygoPGNhcmV0Pik7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL3BhcmVuQWZ0ZXJDYXN0L2JlZm9yZTIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9wYXJlbkFmdGVyQ2FzdC9iZWZvcmUyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWU2MzE3MQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9wYXJlbkFmdGVyQ2FzdC9iZWZvcmUyLmphdmEKQEAgLTAsMCArMSw1IEBACitwdWJsaWMgY2xhc3MgVGVzdENsYXNzIHsKKyAgICBUZXN0Q2xhc3MoVGVzdENsYXNzIHApeworICAgICAgIG5ldyBUZXN0Q2xhc3MoKDxjYXJldD5BQUEpb2JqKS5mKCk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9wYXJlbkFmdGVyQ2FzdC9iZWZvcmUzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvcGFyZW5BZnRlckNhc3QvYmVmb3JlMy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQwMWVhYzYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvcGFyZW5BZnRlckNhc3QvYmVmb3JlMy5qYXZhCkBAIC0wLDAgKzEsOCBAQAorY2xhc3MgQXsKKyB7CisgIFN0cmluZyBzdHIgPSAoU3RyaW5nKWZvPGNhcmV0PgorCisgfQorCisgT2JqZWN0IGZvbygpe30KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvcGFyZW5BZnRlcklmL2FmdGVyMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL3BhcmVuQWZ0ZXJJZi9hZnRlcjEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZjExZDdlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL3BhcmVuQWZ0ZXJJZi9hZnRlcjEuamF2YQpAQCAtMCwwICsxLDUgQEAKK3B1YmxpYyBjbGFzcyBUZXN0Q2xhc3MgeworICAgIHB1YmxpYyB2b2lkIGZvbyhib29sZWFuIHBhcm0pIHsKKyAgICAgICAgaWYgKHBhcm0pPGNhcmV0PgorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvcGFyZW5BZnRlcklmL2FmdGVyMi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL3BhcmVuQWZ0ZXJJZi9hZnRlcjIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZjExZDdlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL3BhcmVuQWZ0ZXJJZi9hZnRlcjIuamF2YQpAQCAtMCwwICsxLDUgQEAKK3B1YmxpYyBjbGFzcyBUZXN0Q2xhc3MgeworICAgIHB1YmxpYyB2b2lkIGZvbyhib29sZWFuIHBhcm0pIHsKKyAgICAgICAgaWYgKHBhcm0pPGNhcmV0PgorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvcGFyZW5BZnRlcklmL2JlZm9yZTEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9wYXJlbkFmdGVySWYvYmVmb3JlMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVmOWZjNGIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvcGFyZW5BZnRlcklmL2JlZm9yZTEuamF2YQpAQCAtMCwwICsxLDUgQEAKK3B1YmxpYyBjbGFzcyBUZXN0Q2xhc3MgeworICAgIHB1YmxpYyB2b2lkIGZvbyhib29sZWFuIHBhcm0pIHsKKyAgICAgICAgaWYgKHA8Y2FyZXQ+CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9wYXJlbkFmdGVySWYvYmVmb3JlMi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL3BhcmVuQWZ0ZXJJZi9iZWZvcmUyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjI4OTI1NgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9wYXJlbkFmdGVySWYvYmVmb3JlMi5qYXZhCkBAIC0wLDAgKzEsNSBAQAorcHVibGljIGNsYXNzIFRlc3RDbGFzcyB7CisgICAgcHVibGljIHZvaWQgZm9vKGJvb2xlYW4gcGFybSkgeworICAgICAgICBpZiAocDxjYXJldD4pCisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9yZXR1cm4vYWZ0ZXIxLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvcmV0dXJuL2FmdGVyMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA0NWIyZmYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvcmV0dXJuL2FmdGVyMS5qYXZhCkBAIC0wLDAgKzEsMTIgQEAKK2NsYXNzIEF7CisgIGNsYXNzIEJ7CisgICAgaW50IGZvb28oKXsKKyAgICB9CisgIH0KKworICBpbnQgZm9vbygpeworICAgIEIgYiA9IG51bGw7CisKKyAgICByZXR1cm4gYi5mb29vKCk7PGNhcmV0PgorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL3JldHVybi9hZnRlcjIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9yZXR1cm4vYWZ0ZXIyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTY4MDMzZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9yZXR1cm4vYWZ0ZXIyLmphdmEKQEAgLTAsMCArMSwxMiBAQAorY2xhc3MgQXsKKyAgY2xhc3MgQnsKKyAgICBpbnQgZm9vbygpeworICAgIH0KKyAgfQorCisgIGludCBmb29vKCl7CisgICAgQSBiID0gbnVsbDsKKworICAgIHJldHVybiBiLmZvb28oKTs8Y2FyZXQ+CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvcmV0dXJuL2FmdGVyMy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL3JldHVybi9hZnRlcjMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMmFiMDJiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL3JldHVybi9hZnRlcjMuamF2YQpAQCAtMCwwICsxLDEyIEBACitjbGFzcyBBeworICBjbGFzcyBCeworICAgIGludCBmb29vKCl7CisgICAgfQorICB9CisKKyAgaW50IGZvb28oKXsKKyAgICBBIGIgPSBudWxsOworCisgICAgcmV0dXJuIGZvPGNhcmV0PgorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL3JldHVybi9iZWZvcmUxLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvcmV0dXJuL2JlZm9yZTEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mOTdlNTdlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL3JldHVybi9iZWZvcmUxLmphdmEKQEAgLTAsMCArMSwxMiBAQAorY2xhc3MgQXsKKyAgY2xhc3MgQnsKKyAgICBpbnQgZm9vbygpeworICAgIH0KKyAgfQorCisgIGludCBmb29vKCl7CisgICAgQiBiID0gbnVsbDsKKworICAgIHJldHVybiBiLmZvPGNhcmV0PgorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL3JldHVybi9iZWZvcmUyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvcmV0dXJuL2JlZm9yZTIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NjQ1ZWJkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL3JldHVybi9iZWZvcmUyLmphdmEKQEAgLTAsMCArMSwxMiBAQAorY2xhc3MgQXsKKyAgY2xhc3MgQnsKKyAgICBpbnQgZm9vbygpeworICAgIH0KKyAgfQorCisgIGludCBmb29vKCl7CisgICAgQSBiID0gbnVsbDsKKworICAgIHJldHVybiBiLmZvPGNhcmV0PgorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL3JldHVybi9iZWZvcmUzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvcmV0dXJuL2JlZm9yZTMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMmFiMDJiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL3JldHVybi9iZWZvcmUzLmphdmEKQEAgLTAsMCArMSwxMiBAQAorY2xhc3MgQXsKKyAgY2xhc3MgQnsKKyAgICBpbnQgZm9vbygpeworICAgIH0KKyAgfQorCisgIGludCBmb29vKCl7CisgICAgQSBiID0gbnVsbDsKKworICAgIHJldHVybiBmbzxjYXJldD4KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9zZWNvbmQvQXJyYXlNZW1iZXJBY2Nlc3Mtb3V0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvc2Vjb25kL0FycmF5TWVtYmVyQWNjZXNzLW91dC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIxNjEwODcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvc2Vjb25kL0FycmF5TWVtYmVyQWNjZXNzLW91dC5qYXZhCkBAIC0wLDAgKzEsNiBAQAorY2xhc3MgR29vIHsKKyAgICB7CisgICAgICAgIGJvb2xlYW5bXSBsb3M7CisgICAgICAgIGJvb2xlYW4gYSA9IGxvc1s8Y2FyZXQ+XTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvc2Vjb25kL0FycmF5TWVtYmVyQWNjZXNzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvc2Vjb25kL0FycmF5TWVtYmVyQWNjZXNzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmIyZjBkNgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9zZWNvbmQvQXJyYXlNZW1iZXJBY2Nlc3MuamF2YQpAQCAtMCwwICsxLDYgQEAKK2NsYXNzIEdvbyB7CisgICAgeworICAgICAgICBib29sZWFuW10gbG9zOworICAgICAgICBib29sZWFuIGEgPSBsb3M8Y2FyZXQ+CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL3NlY29uZC9BcnJheVJlZkFzUXVhbGlmaWVyLW91dC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL3NlY29uZC9BcnJheVJlZkFzUXVhbGlmaWVyLW91dC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ5M2Q5ZDUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvc2Vjb25kL0FycmF5UmVmQXNRdWFsaWZpZXItb3V0LmphdmEKQEAgLTAsMCArMSwxMSBAQAorY2xhc3MgQmFyIHsKKyAgR29vIGdldEdvbygpOworfQorY2xhc3MgR29vIHt9CisKK2NsYXNzIEZvbyB7CisgIHsKKyAgICBCYXJbXSByZWYgPSBuZXcgQmFyWzFdOworICAgIEdvbyBnID0gcmVmWzBdLmdldEdvbygpOzxjYXJldD4KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9zZWNvbmQvQXJyYXlSZWZBc1F1YWxpZmllci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL3NlY29uZC9BcnJheVJlZkFzUXVhbGlmaWVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTNlNGI2OAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9zZWNvbmQvQXJyYXlSZWZBc1F1YWxpZmllci5qYXZhCkBAIC0wLDAgKzEsMTEgQEAKK2NsYXNzIEJhciB7CisgIEdvbyBnZXRHb28oKTsKK30KK2NsYXNzIEdvbyB7fQorCitjbGFzcyBGb28geworICB7CisgICAgQmFyW10gcmVmID0gbmV3IEJhclsxXTsKKyAgICBHb28gZyA9IDxjYXJldD4KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9zZWNvbmQvQ2FzdEluc3RhbmNlb2ZlZFF1YWxpZmllci1vdXQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9zZWNvbmQvQ2FzdEluc3RhbmNlb2ZlZFF1YWxpZmllci1vdXQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43OTQzZjQ1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL3NlY29uZC9DYXN0SW5zdGFuY2VvZmVkUXVhbGlmaWVyLW91dC5qYXZhCkBAIC0wLDAgKzEsMTkgQEAKK2ludGVyZmFjZSBaaXAgZXh0ZW5kcyBCYXJ7CisgIEZvbyBnZXRaaXAoKTsKK30KKworaW50ZXJmYWNlIEJhciB7fQorCitjbGFzcyBGb28geworCit9CisKK2NsYXNzIEdvbyB7CisgICAgeworICAgICAgICBCYXIgbzsKKyAgICAgICAgaWYgKG8gaW5zdGFuY2VvZiBaaXApIHsKKyAgICAgICAgICBGb28gZiA9ICgoWmlwKSBvKS5nZXRaaXAoKTs8Y2FyZXQ+CisgICAgICAgIH0KKyAgICB9Cit9CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9zZWNvbmQvQ2FzdEluc3RhbmNlb2ZlZFF1YWxpZmllci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL3NlY29uZC9DYXN0SW5zdGFuY2VvZmVkUXVhbGlmaWVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTMyNzVkMgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9zZWNvbmQvQ2FzdEluc3RhbmNlb2ZlZFF1YWxpZmllci5qYXZhCkBAIC0wLDAgKzEsMTkgQEAKK2ludGVyZmFjZSBaaXAgZXh0ZW5kcyBCYXJ7CisgIEZvbyBnZXRaaXAoKTsKK30KKworaW50ZXJmYWNlIEJhciB7fQorCitjbGFzcyBGb28geworCit9CisKK2NsYXNzIEdvbyB7CisgICAgeworICAgICAgICBCYXIgbzsKKyAgICAgICAgaWYgKG8gaW5zdGFuY2VvZiBaaXApIHsKKyAgICAgICAgICBGb28gZiA9IDxjYXJldD4KKyAgICAgICAgfQorICAgIH0KK30KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL3NlY29uZC9DaGFpbmluZ1BlcmZvcm1hbmNlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvc2Vjb25kL0NoYWluaW5nUGVyZm9ybWFuY2UuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNDEyNWNjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL3NlY29uZC9DaGFpbmluZ1BlcmZvcm1hbmNlLmphdmEKQEAgLTAsMCArMSw3IEBACitjbGFzcyBGb28gZXh0ZW5kcyBqYXZheC5zd2luZy5KQ29tcG9uZW50IHsKKworICAgIHsKKyAgICAgICAgU3RyaW5nIGNsID0gPGNhcmV0PgorICAgIH0KKworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL3NlY29uZC9EaWZmZXJlbnRRdWFsaWZpZXJzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvc2Vjb25kL0RpZmZlcmVudFF1YWxpZmllcnMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYTJjNTZiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL3NlY29uZC9EaWZmZXJlbnRRdWFsaWZpZXJzLmphdmEKQEAgLTAsMCArMSwxNCBAQAorY2xhc3MgQmFyIHsKKyAgR29vIGdldEdvbyhpbnQgYSk7Cit9CitjbGFzcyBHb28ge30KKworY2xhc3MgRm9vIHsKKyAgQmFyIGdldEJhcigpIHt9CisgIEJhciBiOworCisKKyAgeworICAgIEdvbyBnID0gPGNhcmV0PgorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL3NlY29uZC9Eb250Q2hhaW5TdHJpbmdNZXRob2RzT25TdHJpbmctb3V0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvc2Vjb25kL0RvbnRDaGFpblN0cmluZ01ldGhvZHNPblN0cmluZy1vdXQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZTYwZjJiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL3NlY29uZC9Eb250Q2hhaW5TdHJpbmdNZXRob2RzT25TdHJpbmctb3V0LmphdmEKQEAgLTAsMCArMSw5IEBACitjbGFzcyBGb28geworCisgICBTdHJpbmcgYWZvbygpOworCisgICAgeworICAgICAgICBTdHJpbmcgY2wgPSBhZm9vKCk7PGNhcmV0PgorICAgIH0KKworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL3NlY29uZC9Eb250Q2hhaW5TdHJpbmdNZXRob2RzT25TdHJpbmcuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9zZWNvbmQvRG9udENoYWluU3RyaW5nTWV0aG9kc09uU3RyaW5nLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTc1MWE2OTgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvc2Vjb25kL0RvbnRDaGFpblN0cmluZ01ldGhvZHNPblN0cmluZy5qYXZhCkBAIC0wLDAgKzEsOSBAQAorY2xhc3MgRm9vIHsKKworICAgU3RyaW5nIGFmb28oKTsKKworICAgIHsKKyAgICAgICAgU3RyaW5nIGNsID0gYWY8Y2FyZXQ+CisgICAgfQorCit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvc2Vjb25kL0RvbnRJZ25vcmVUb1N0cmluZ0luU3RyaW5nQnVpbGRlcnMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9zZWNvbmQvRG9udElnbm9yZVRvU3RyaW5nSW5TdHJpbmdCdWlsZGVycy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNlZDI5ZWYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvc2Vjb25kL0RvbnRJZ25vcmVUb1N0cmluZ0luU3RyaW5nQnVpbGRlcnMuamF2YQpAQCAtMCwwICsxLDggQEAKK2NsYXNzIEZvbyB7CisKKyAgICBwdWJsaWMgU3RyaW5nIGZvbygpIHsKKyAgICAgICAgQWJzdHJhY3RTdHJpbmdCdWlsZGVyIGJhcjsKKyAgICAgICAgU3RyaW5nIGYgPSBiPGNhcmV0PgorICAgIH0KKworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL3NlY29uZC9Eb250SWdub3JlVG9TdHJpbmdJbnNpZGVJdC1vdXQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9zZWNvbmQvRG9udElnbm9yZVRvU3RyaW5nSW5zaWRlSXQtb3V0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTdlNGU0MQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9zZWNvbmQvRG9udElnbm9yZVRvU3RyaW5nSW5zaWRlSXQtb3V0LmphdmEKQEAgLTAsMCArMSw4IEBACitjbGFzcyBGb28geworCisgICAgcHVibGljIFN0cmluZyB0b1N0cmluZygpIHsKKyAgICAgICAgRm9vIGJhcjsKKyAgICAgICAgU3RyaW5nIGYgPSBiYXIudG9TdHJpbmcoKTs8Y2FyZXQ+CisgICAgfQorCit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvc2Vjb25kL0RvbnRJZ25vcmVUb1N0cmluZ0luc2lkZUl0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvc2Vjb25kL0RvbnRJZ25vcmVUb1N0cmluZ0luc2lkZUl0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmNlNDc2MAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9zZWNvbmQvRG9udElnbm9yZVRvU3RyaW5nSW5zaWRlSXQuamF2YQpAQCAtMCwwICsxLDggQEAKK2NsYXNzIEZvbyB7CisKKyAgICBwdWJsaWMgU3RyaW5nIHRvU3RyaW5nKCkgeworICAgICAgICBGb28gYmFyOworICAgICAgICBTdHJpbmcgZiA9IGI8Y2FyZXQ+CisgICAgfQorCit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvc2Vjb25kL0RvbnRTdWdnZXN0VG9vR2VuZXJpY01ldGhvZHMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9zZWNvbmQvRG9udFN1Z2dlc3RUb29HZW5lcmljTWV0aG9kcy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk5NjE3ZWUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvc2Vjb25kL0RvbnRTdWdnZXN0VG9vR2VuZXJpY01ldGhvZHMuamF2YQpAQCAtMCwwICsxLDE5IEBACitpbnRlcmZhY2UgWmlwIGV4dGVuZHMgQmFye30KKworaW50ZXJmYWNlIEJhciB7fQorCitpbnRlcmZhY2UgRm9vIHsKKyAgICA8VD4gVCBhbnkoKTsKKyAgICA8VCBleHRlbmRzIEdvbz4gVCBnb29BbnkoKTsKKyAgICA8VCBleHRlbmRzIFppcD4gVCB6aXBBbnkoKTsKKyAgICA8VCBleHRlbmRzIEJhcj4gVCBiYXJBbnkoKTsKKworfQorCitjbGFzcyBHb28geworICAgIHsKKyAgICAgICAgRm9vIGY7CisgICAgICAgIEJhciBhID0gZjxjYXJldD4KKyAgICB9Cit9CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9zZWNvbmQvRW1wdHlMaXN0SW5NZXRob2RDYWxsLW91dC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL3NlY29uZC9FbXB0eUxpc3RJbk1ldGhvZENhbGwtb3V0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjQzMTI1MAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9zZWNvbmQvRW1wdHlMaXN0SW5NZXRob2RDYWxsLW91dC5qYXZhCkBAIC0wLDAgKzEsMTMgQEAKK2ltcG9ydCBqYXZhLnV0aWwuQ29sbGVjdGlvbnM7CitpbXBvcnQgamF2YS51dGlsLkxpc3Q7CisKK3B1YmxpYyBjbGFzcyBTb21lQ2xhc3MgeworICAgIHZvaWQgZm9vKExpc3Q8U3RyaW5nPiBsKSB7CisKKyAgICB9CisKKyAgICB7CisgICAgICAgIGZvbyhDb2xsZWN0aW9ucy48U3RyaW5nPmVtcHR5TGlzdCgpKTs8Y2FyZXQ+CisgICAgfQorCit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvc2Vjb25kL0VtcHR5TGlzdEluTWV0aG9kQ2FsbC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL3NlY29uZC9FbXB0eUxpc3RJbk1ldGhvZENhbGwuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNTBhMWRlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL3NlY29uZC9FbXB0eUxpc3RJbk1ldGhvZENhbGwuamF2YQpAQCAtMCwwICsxLDEyIEBACitpbXBvcnQgamF2YS51dGlsLkxpc3Q7CisKK3B1YmxpYyBjbGFzcyBTb21lQ2xhc3MgeworICAgIHZvaWQgZm9vKExpc3Q8U3RyaW5nPiBsKSB7CisKKyAgICB9CisKKyAgICB7CisgICAgICAgIGZvbyhlbTxjYXJldD4pCisgICAgfQorCit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvc2Vjb25kL0VtcHR5TWFwUHJlc2VudGF0aW9uLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvc2Vjb25kL0VtcHR5TWFwUHJlc2VudGF0aW9uLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTExODRmNAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9zZWNvbmQvRW1wdHlNYXBQcmVzZW50YXRpb24uamF2YQpAQCAtMCwwICsxLDEyIEBACitpbXBvcnQgamF2YS51dGlsLk1hcDsKKworcHVibGljIGNsYXNzIEZvbyB7CisKKyAgdm9pZCBmb28oTWFwPFN0cmluZywgU3RyaW5nPiBtYXApIHsKKyAgICAKKyAgfQorCisgIHZvaWQgYmFyKCkgeworICAgIGZvbyhlbTxjYXJldD4pCisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvc2Vjb25kL0VtcHR5TWFwUHJlc2VudGF0aW9uMi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL3NlY29uZC9FbXB0eU1hcFByZXNlbnRhdGlvbjIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40OTAxN2FjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL3NlY29uZC9FbXB0eU1hcFByZXNlbnRhdGlvbjIuamF2YQpAQCAtMCwwICsxLDggQEAKK2ltcG9ydCBqYXZhLnV0aWwuTWFwOworCitwdWJsaWMgY2xhc3MgRm9vIHsKKworICBTZXQ8U3RyaW5nPiBiYXIoKSB7CisgICAgTWFwPFN0cmluZywgU3RyaW5nPiBzID0gZW08Y2FyZXQ+CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvc2Vjb25kL0ZpZWxkQXNRdWFsaWZpZXItb3V0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvc2Vjb25kL0ZpZWxkQXNRdWFsaWZpZXItb3V0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWMzNDk0NAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9zZWNvbmQvRmllbGRBc1F1YWxpZmllci1vdXQuamF2YQpAQCAtMCwwICsxLDEzIEBACitjbGFzcyBCYXIgeworICBHb28gZ29vOworfQorY2xhc3MgR29vIHt9CisKK2NsYXNzIEZvbyB7CisgIEJhciBiOworCisKKyAgeworICAgIEdvbyBnID0gYi5nb287PGNhcmV0PgorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL3NlY29uZC9GaWVsZEFzUXVhbGlmaWVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvc2Vjb25kL0ZpZWxkQXNRdWFsaWZpZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NzNjNWVhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL3NlY29uZC9GaWVsZEFzUXVhbGlmaWVyLmphdmEKQEAgLTAsMCArMSwxMyBAQAorY2xhc3MgQmFyIHsKKyAgR29vIGdvbzsKK30KK2NsYXNzIEdvbyB7fQorCitjbGFzcyBGb28geworICBCYXIgYjsKKworCisgIHsKKyAgICBHb28gZyA9IDxjYXJldD4KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9zZWNvbmQvR2VuZXJpY3Mtb3V0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvc2Vjb25kL0dlbmVyaWNzLW91dC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ1MjY5Y2MKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvc2Vjb25kL0dlbmVyaWNzLW91dC5qYXZhCkBAIC0wLDAgKzEsMTMgQEAKK2NsYXNzIEJhcjxUPiB7CisgIFQgZ2V0R29vKGludCBhKTsKK30KK2NsYXNzIEdvbyB7fQorCitjbGFzcyBGb28geworICBCYXI8R29vPiBiZ2V0QmFyKCkge30KKworCisgIHsKKyAgICBHb28gZyA9IGJnZXRCYXIoKS5nZXRHb28oPGNhcmV0Pik7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvc2Vjb25kL0dlbmVyaWNzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvc2Vjb25kL0dlbmVyaWNzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGQ0MDg4OQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9zZWNvbmQvR2VuZXJpY3MuamF2YQpAQCAtMCwwICsxLDEzIEBACitjbGFzcyBCYXI8VD4geworICBUIGdldEdvbyhpbnQgYSk7Cit9CitjbGFzcyBHb28ge30KKworY2xhc3MgRm9vIHsKKyAgQmFyPEdvbz4gYmdldEJhcigpIHt9CisKKworICB7CisgICAgR29vIGcgPSBiPGNhcmV0PgorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL3NlY29uZC9HZXRDbGFzc0xvYWRlci1vdXQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9zZWNvbmQvR2V0Q2xhc3NMb2FkZXItb3V0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2JlYTZjZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9zZWNvbmQvR2V0Q2xhc3NMb2FkZXItb3V0LmphdmEKQEAgLTAsMCArMSw3IEBACitjbGFzcyBGb28geworCisgICAgeworICAgICAgICBDbGFzc0xvYWRlciBjbCA9IGdldENsYXNzKCkuZ2V0Q2xhc3NMb2FkZXIoKTs8Y2FyZXQ+CisgICAgfQorCit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvc2Vjb25kL0dldENsYXNzTG9hZGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvc2Vjb25kL0dldENsYXNzTG9hZGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDA3NjBkYwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9zZWNvbmQvR2V0Q2xhc3NMb2FkZXIuamF2YQpAQCAtMCwwICsxLDcgQEAKK2NsYXNzIEZvbyB7CisKKyAgICB7CisgICAgICAgIENsYXNzTG9hZGVyIGNsID0gZ2V0Q2w8Y2FyZXQ+CisgICAgfQorCit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvc2Vjb25kL0dsb2JhbEZhY3RvcnlNZXRob2RzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvc2Vjb25kL0dsb2JhbEZhY3RvcnlNZXRob2RzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTBkMzgzYQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9zZWNvbmQvR2xvYmFsRmFjdG9yeU1ldGhvZHMuamF2YQpAQCAtMCwwICsxLDI5IEBACitjbGFzcyBTdXBlcjxUPiB7Cit9CisKK2NsYXNzIFN1YlN0cmluZyBleHRlbmRzIFN1cGVyPFN0cmluZz4geworICBwdWJsaWMgc3RhdGljIFN1YlN0cmluZyBjcmVhdGVTdWJTdHJpbmcoKSB7fQorfQorY2xhc3MgU3ViSW50IGV4dGVuZHMgU3VwZXI8SW50ZWdlcj4geyB9CitjbGFzcyBTdWJHZW5lcmljPFQ+IGV4dGVuZHMgU3VwZXI8VD4geyB9CitjbGFzcyBTdWJSYXcgZXh0ZW5kcyBTdXBlciB7IH0KKworaW50ZXJmYWNlIENvbnN0YW50cyB7CisgIFN1YlN0cmluZyBTVUJTVFJJTkcgPSBudWxsCit9CisKK2NsYXNzIEZhY3RvcnkgeworICBwdWJsaWMgc3RhdGljIE9iamVjdCBjcmVhdGVPYmplY3QoKSB7fQorICBwdWJsaWMgc3RhdGljIDxUPiBTdXBlcjxUPiBjcmVhdGVFeHBlY3RlZCgpIHt9CisgIHB1YmxpYyBzdGF0aWMgU3VwZXI8SW50ZWdlcj4gY3JlYXRlU3VwZXJJbnQoKSB7fQorICBwdWJsaWMgc3RhdGljIFN1YkludCBjcmVhdGVTdWJJbnQoKSB7fQorICBwdWJsaWMgc3RhdGljIDxUPiBTdWJHZW5lcmljPFQ+IGNyZWF0ZVN1YkdlbmVyaWMoKSB7fQorICBwdWJsaWMgc3RhdGljIFN1YlJhdyBjcmVhdGVTdWJSYXcoKSB7fQorfQorCitjbGFzcyBJbnRlcm1lZGlhdGUgeworCisgICAgU3VwZXI8U3RyaW5nPiBzID0gPGNhcmV0PgorfQorCisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9zZWNvbmQvSWdub3JlVG9TdHJpbmctb3V0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvc2Vjb25kL0lnbm9yZVRvU3RyaW5nLW91dC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVjZTgxNzAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvc2Vjb25kL0lnbm9yZVRvU3RyaW5nLW91dC5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKK2NsYXNzIEZvbyB7CisKKyAgICBTdHJpbmcgZm9vKCk7CisKKyAgICB7CisgICAgICAgIEZvbyBiYXI7CisgICAgICAgIFN0cmluZyBmID0gYmFyLmZvbygpOzxjYXJldD4KKyAgICB9CisKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9zZWNvbmQvSWdub3JlVG9TdHJpbmcuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9zZWNvbmQvSWdub3JlVG9TdHJpbmcuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MGE5YTdmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL3NlY29uZC9JZ25vcmVUb1N0cmluZy5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKK2NsYXNzIEZvbyB7CisKKyAgICBTdHJpbmcgZm9vKCk7CisKKyAgICB7CisgICAgICAgIEZvbyBiYXI7CisgICAgICAgIFN0cmluZyBmID0gYjxjYXJldD4KKyAgICB9CisKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9zZWNvbmQvSW5oZXJpdG9yRW51bU1lbWJlcnMtb3V0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvc2Vjb25kL0luaGVyaXRvckVudW1NZW1iZXJzLW91dC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVjZDE5NGMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvc2Vjb25kL0luaGVyaXRvckVudW1NZW1iZXJzLW91dC5qYXZhCkBAIC0wLDAgKzEsMTcgQEAKK2ludGVyZmFjZSBGb28geworfQorCitlbnVtIEZvb0VudW0gaW1wbGVtZW50cyBGb28geworICAgIE9ORSwgVFdPOworfQorCitjbGFzcyBEb28geworICAgIHZvaWQgZG9Tb21ldGhpbmcoRm9vIGYpIHsKKyAgICB9CisKKyAgICB2b2lkIGRvU29tZXRoaW5nRWxzZSgpIHsKKyAgICAgICAgZG9Tb21ldGhpbmcoRm9vRW51bS5PTkUpOzxjYXJldD4KKyAgICB9CisKK30KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL3NlY29uZC9Jbmhlcml0b3JFbnVtTWVtYmVycy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL3NlY29uZC9Jbmhlcml0b3JFbnVtTWVtYmVycy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNhMTY2MmMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvc2Vjb25kL0luaGVyaXRvckVudW1NZW1iZXJzLmphdmEKQEAgLTAsMCArMSwxNyBAQAoraW50ZXJmYWNlIEZvbyB7Cit9CisKK2VudW0gRm9vRW51bSBpbXBsZW1lbnRzIEZvbyB7CisgICAgT05FLCBUV087Cit9CisKK2NsYXNzIERvbyB7CisgICAgdm9pZCBkb1NvbWV0aGluZyhGb28gZikgeworICAgIH0KKworICAgIHZvaWQgZG9Tb21ldGhpbmdFbHNlKCkgeworICAgICAgICBkb1NvbWV0aGluZyhPPGNhcmV0Pik7CisgICAgfQorCit9CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9zZWNvbmQvSW5oZXJpdG9yTWVtYmVycy1vdXQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9zZWNvbmQvSW5oZXJpdG9yTWVtYmVycy1vdXQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMGNjOWY4YQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9zZWNvbmQvSW5oZXJpdG9yTWVtYmVycy1vdXQuamF2YQpAQCAtMCwwICsxLDEzIEBACitjbGFzcyBTdXBlciB7Cit9CisKK2NsYXNzIFN1YiBleHRlbmRzIFN1cGVyIHsKKyAgcHVibGljIHN0YXRpYyBmaW5hbCBTdXBlciBGT08gPSBudWxsOworfQorCitjbGFzcyBJbnRlcm1lZGlhdGUgeworCisgICAgU3VwZXIgcyA9IFN1Yi5GT087PGNhcmV0PgorfQorCisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9zZWNvbmQvSW5oZXJpdG9yTWVtYmVycy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL3NlY29uZC9Jbmhlcml0b3JNZW1iZXJzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWVmZjE0ZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9zZWNvbmQvSW5oZXJpdG9yTWVtYmVycy5qYXZhCkBAIC0wLDAgKzEsMTMgQEAKK2NsYXNzIFN1cGVyIHsKK30KKworY2xhc3MgU3ViIGV4dGVuZHMgU3VwZXIgeworICBwdWJsaWMgc3RhdGljIGZpbmFsIFN1cGVyIEZPTyA9IG51bGw7Cit9CisKK2NsYXNzIEludGVybWVkaWF0ZSB7CisKKyAgICBTdXBlciBzID0gRjxjYXJldD4KK30KKworCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvc2Vjb25kL01lcmdlTWV0aG9kcy1vdXQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9zZWNvbmQvTWVyZ2VNZXRob2RzLW91dC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIxNTI4NGYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvc2Vjb25kL01lcmdlTWV0aG9kcy1vdXQuamF2YQpAQCAtMCwwICsxLDE0IEBACitjbGFzcyBCYXIgeworICBHb28gZ2V0R29vKGludCBhKTsKKyAgR29vIGdldEdvbygpOworfQorY2xhc3MgR29vIHt9CisKK2NsYXNzIEZvbyB7CisgIEJhciBnZXRCYXIoKSB7fQorCisKKyAgeworICAgIEdvbyBnID0gZ2V0QmFyKCkuZ2V0R29vKDxjYXJldD4pOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL3NlY29uZC9NZXJnZU1ldGhvZHMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9zZWNvbmQvTWVyZ2VNZXRob2RzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGJiNmIxZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9zZWNvbmQvTWVyZ2VNZXRob2RzLmphdmEKQEAgLTAsMCArMSwxNCBAQAorY2xhc3MgQmFyIHsKKyAgR29vIGdldEdvbyhpbnQgYSk7CisgIEdvbyBnZXRHb28oKTsKK30KK2NsYXNzIEdvbyB7fQorCitjbGFzcyBGb28geworICBCYXIgZ2V0QmFyKCkge30KKworCisgIHsKKyAgICBHb28gZyA9IDxjYXJldD4KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9zZWNvbmQvTWV0aG9kQXNRdWFsaWZpZXItb3V0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvc2Vjb25kL01ldGhvZEFzUXVhbGlmaWVyLW91dC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc1OWViZjAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvc2Vjb25kL01ldGhvZEFzUXVhbGlmaWVyLW91dC5qYXZhCkBAIC0wLDAgKzEsMTMgQEAKK2NsYXNzIEJhciB7CisgIEdvbyBnZXRHb28oKTsKK30KK2NsYXNzIEdvbyB7fQorCitjbGFzcyBGb28geworICBCYXIgZ2V0QmFyKCkge30KKworCisgIHsKKyAgICBHb28gZyA9IGdldEJhcigpLmdldEdvbygpOzxjYXJldD4KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9zZWNvbmQvTWV0aG9kQXNRdWFsaWZpZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9zZWNvbmQvTWV0aG9kQXNRdWFsaWZpZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMzJiYTgxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL3NlY29uZC9NZXRob2RBc1F1YWxpZmllci5qYXZhCkBAIC0wLDAgKzEsMTMgQEAKK2NsYXNzIEJhciB7CisgIEdvbyBnZXRHb28oKTsKK30KK2NsYXNzIEdvbyB7fQorCitjbGFzcyBGb28geworICBCYXIgZ2V0QmFyKCkge30KKworCisgIHsKKyAgICBHb28gZyA9IDxjYXJldD4KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9zZWNvbmQvTWV0aG9kRGVsZWdhdGlvbi1vdXQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9zZWNvbmQvTWV0aG9kRGVsZWdhdGlvbi1vdXQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMDE4ZDM5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL3NlY29uZC9NZXRob2REZWxlZ2F0aW9uLW91dC5qYXZhCkBAIC0wLDAgKzEsOSBAQAorY2xhc3MgQmFyIHt9CisKK2NsYXNzIEZvbyB7CisgIEZvbyBteUZvbzsKKworICBCYXIgZ2V0QmFyKCkgeworICAgIHJldHVybiBteUZvby5nZXRCYXIoKTs8Y2FyZXQ+CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvc2Vjb25kL01ldGhvZERlbGVnYXRpb24uamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9zZWNvbmQvTWV0aG9kRGVsZWdhdGlvbi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYyYWU2YTQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvc2Vjb25kL01ldGhvZERlbGVnYXRpb24uamF2YQpAQCAtMCwwICsxLDkgQEAKK2NsYXNzIEJhciB7fQorCitjbGFzcyBGb28geworICBGb28gbXlGb287CisKKyAgQmFyIGdldEJhcigpIHsKKyAgICByZXR1cm4gbTxjYXJldD4KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9zZWNvbmQvTWV0aG9kV2l0aFBhcmFtcy1vdXQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9zZWNvbmQvTWV0aG9kV2l0aFBhcmFtcy1vdXQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45YTRlMTdjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL3NlY29uZC9NZXRob2RXaXRoUGFyYW1zLW91dC5qYXZhCkBAIC0wLDAgKzEsMTMgQEAKK2NsYXNzIEJhciB7CisgIEdvbyBnZXRHb28oaW50IGEpOworfQorY2xhc3MgR29vIHt9CisKK2NsYXNzIEZvbyB7CisgIEJhciBnZXRCYXIoKSB7fQorCisKKyAgeworICAgIEdvbyBnID0gZ2V0QmFyKCkuZ2V0R29vKDxjYXJldD4pOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL3NlY29uZC9NZXRob2RXaXRoUGFyYW1zLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvc2Vjb25kL01ldGhvZFdpdGhQYXJhbXMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YWU3ZTA4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL3NlY29uZC9NZXRob2RXaXRoUGFyYW1zLmphdmEKQEAgLTAsMCArMSwxMyBAQAorY2xhc3MgQmFyIHsKKyAgR29vIGdldEdvbyhpbnQgYSk7Cit9CitjbGFzcyBHb28ge30KKworY2xhc3MgRm9vIHsKKyAgQmFyIGdldEJhcigpIHt9CisKKworICB7CisgICAgR29vIGcgPSA8Y2FyZXQ+CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvc2Vjb25kL05ld1N0YXRpY1Byb2JsZW0tb3V0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvc2Vjb25kL05ld1N0YXRpY1Byb2JsZW0tb3V0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTNiNjgzNQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9zZWNvbmQvTmV3U3RhdGljUHJvYmxlbS1vdXQuamF2YQpAQCAtMCwwICsxLDEzIEBACitwdWJsaWMgY2xhc3MgVGVzdHsKKyAgICAKKyAgICBwdWJsaWMgY2xhc3MgRiB7fQorICAgIAorICAgIHB1YmxpYyBpbnQgeChGIGYpIHsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorCisgICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgeworICAgICAgICBUZXN0IHRlc3QgPSBuZXcgVGVzdCgpOworICAgICAgICB0ZXN0LngobmV3IEYoKSk8Y2FyZXQ+OworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvc2Vjb25kL05ld1N0YXRpY1Byb2JsZW0uamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9zZWNvbmQvTmV3U3RhdGljUHJvYmxlbS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM0OWZlZTAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvc2Vjb25kL05ld1N0YXRpY1Byb2JsZW0uamF2YQpAQCAtMCwwICsxLDEzIEBACitwdWJsaWMgY2xhc3MgVGVzdHsKKyAgICAKKyAgICBwdWJsaWMgY2xhc3MgRiB7fQorICAgIAorICAgIHB1YmxpYyBpbnQgeChGIGYpIHsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorCisgICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgeworICAgICAgICBUZXN0IHRlc3QgPSBuZXcgVGVzdCgpOworICAgICAgICB0ZXN0LngobmV3IDxjYXJldD4pOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvc2Vjb25kL05vQXJyYXlzQXNMaXN0Q29tbW9uUHJlZml4LW91dC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL3NlY29uZC9Ob0FycmF5c0FzTGlzdENvbW1vblByZWZpeC1vdXQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMTdjMjhkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL3NlY29uZC9Ob0FycmF5c0FzTGlzdENvbW1vblByZWZpeC1vdXQuamF2YQpAQCAtMCwwICsxLDEyIEBACitpbXBvcnQgamF2YS51dGlsLio7CisKK2NsYXNzIEZvbyB7CisKKyAgICBTdHJpbmdbXSBmb28oKTsKKyAgICBTdHJpbmdbXSBiYXIoKTsKKworICAgIHN0YXRpYyB7CisgICAgICAgIEZvbyBmOworICAgICAgICBMaXN0PFN0cmluZz4gZyA9IEFycmF5cy5hc0xpc3QoZi5mb28oKSk7PGNhcmV0PgorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvc2Vjb25kL05vQXJyYXlzQXNMaXN0Q29tbW9uUHJlZml4LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvc2Vjb25kL05vQXJyYXlzQXNMaXN0Q29tbW9uUHJlZml4LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjdiZTVkMQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9zZWNvbmQvTm9BcnJheXNBc0xpc3RDb21tb25QcmVmaXguamF2YQpAQCAtMCwwICsxLDEyIEBACitpbXBvcnQgamF2YS51dGlsLio7CisKK2NsYXNzIEZvbyB7CisKKyAgICBTdHJpbmdbXSBmb28oKTsKKyAgICBTdHJpbmdbXSBiYXIoKTsKKworICAgIHN0YXRpYyB7CisgICAgICAgIEZvbyBmOworICAgICAgICBMaXN0PFN0cmluZz4gZyA9IGYuPGNhcmV0PgorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvc2Vjb25kL05vTGVmdFJlY3Vyc2lvbi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL3NlY29uZC9Ob0xlZnRSZWN1cnNpb24uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMjI3NTM5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL3NlY29uZC9Ob0xlZnRSZWN1cnNpb24uamF2YQpAQCAtMCwwICsxLDE1IEBACitwdWJsaWMgY2xhc3MgVGVzdCB7CisKKyAgc3RhdGljIE15RW51bSBnZXRBdmFpbGFiaWxpdHlTdGF0dXNDb2RlKCkgeworCisgICAgcmV0dXJuIGdldEFTPGNhcmV0PgorICB9CisKKworICBwdWJsaWMgc3RhdGljIGVudW0gTXlFbnVtIHsKKworICAgIFZBTFVFXzEsCisgICAgVkFMVUVfMgorICB9CisKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvc2Vjb25kL05vT2JqZWN0TWV0aG9kc0FzRmlyc3RQYXJ0LW91dC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL3NlY29uZC9Ob09iamVjdE1ldGhvZHNBc0ZpcnN0UGFydC1vdXQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NWRjZDRlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL3NlY29uZC9Ob09iamVjdE1ldGhvZHNBc0ZpcnN0UGFydC1vdXQuamF2YQpAQCAtMCwwICsxLDEyIEBACitjbGFzcyBGb28geworCisgICBib29sZWFuIGlzKCk7CisKKyAgICBwdWJsaWMgU3RyaW5nIHRvU3RyaW5nKCkgeworICAgICAgICBib29sZWFuIGZvbzsKKyAgICAgICAgYm9vbGVhbiBiYXI7CisgICAgICAgIEZvbyB0bzsKKyAgICAgICAgYm9vbGVhbiBmID0gdG8uaXMoKTs8Y2FyZXQ+CisgICAgfQorCit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvc2Vjb25kL05vT2JqZWN0TWV0aG9kc0FzRmlyc3RQYXJ0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvc2Vjb25kL05vT2JqZWN0TWV0aG9kc0FzRmlyc3RQYXJ0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDg0YWQxOAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9zZWNvbmQvTm9PYmplY3RNZXRob2RzQXNGaXJzdFBhcnQuamF2YQpAQCAtMCwwICsxLDEyIEBACitjbGFzcyBGb28geworCisgICBib29sZWFuIGlzKCk7CisKKyAgICBwdWJsaWMgU3RyaW5nIHRvU3RyaW5nKCkgeworICAgICAgICBib29sZWFuIGZvbzsKKyAgICAgICAgYm9vbGVhbiBiYXI7CisgICAgICAgIEZvbyB0bzsKKyAgICAgICAgYm9vbGVhbiBmID0gdG88Y2FyZXQ+CisgICAgfQorCit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvc2Vjb25kL05vUmVkdW5kYW50Q2FzdHMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9zZWNvbmQvTm9SZWR1bmRhbnRDYXN0cy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA5MWU2NzFlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL3NlY29uZC9Ob1JlZHVuZGFudENhc3RzLmphdmEKQEAgLTAsMCArMSwxNyBAQAorcHVibGljIGFic3RyYWN0IGNsYXNzIFp6eiB7CisKKyAgICBib29sZWFuIGdnZ2coKSB7fQorCisgICAgc3RhdGljIHsKKyAgICAgICAgWnp6IG87CisgICAgICAgIGlmIChvIGluc3RhbmNlb2YgWXl5ICYmIDxjYXJldD4pIHsKKworICAgICAgICB9CisgICAgfQorCisKK30KKworY2xhc3MgWXl5IGV4dGVuZHMgWnp6IHsKKworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9zZWNvbmQvTm9VbnF1YWxpZmllZENhc3RzSW5RdWFsaWZpZWRDb250ZXh0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvc2Vjb25kL05vVW5xdWFsaWZpZWRDYXN0c0luUXVhbGlmaWVkQ29udGV4dC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA1Mjg1NTcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvc2Vjb25kL05vVW5xdWFsaWZpZWRDYXN0c0luUXVhbGlmaWVkQ29udGV4dC5qYXZhCkBAIC0wLDAgKzEsMTIgQEAKK2NsYXNzIEN7CisgICAgeworICAgICAgICBPYmplY3QgbzsKKyAgICAgICAgaWYgKG8gaW5zdGFuY2VvZiBGb28pIHsKKyAgICAgICAgICAgIG5ldyBPYmplY3QoKS5kb2ZvPGNhcmV0PgorICAgICAgICB9CisgICAgfQorfQorCitjbGFzcyBGb28geworICAgIHZvaWQgZG9mb28oKTsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvc2Vjb25kL05vbkluaXRpYWxpemVkRmllbGQtb3V0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvc2Vjb25kL05vbkluaXRpYWxpemVkRmllbGQtb3V0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjc0YWM5OQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9zZWNvbmQvTm9uSW5pdGlhbGl6ZWRGaWVsZC1vdXQuamF2YQpAQCAtMCwwICsxLDcgQEAKK2NsYXNzIEZvbyB7CisgIGludCBhYWE7CisgIGludCBiYmI7CisgIEZvbygpIHsKKyAgICBhYWEgPSBiYmI7PGNhcmV0PgorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL3NlY29uZC9Ob25Jbml0aWFsaXplZEZpZWxkLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvc2Vjb25kL05vbkluaXRpYWxpemVkRmllbGQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lOGVlZTVkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL3NlY29uZC9Ob25Jbml0aWFsaXplZEZpZWxkLmphdmEKQEAgLTAsMCArMSw3IEBACitjbGFzcyBGb28geworICBpbnQgYWFhOworICBpbnQgYmJiOworICBGb28oKSB7CisgICAgYWFhID0gYjxjYXJldD4KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9zZWNvbmQvUHJlZmVyRmllbGRBbmRHZXR0ZXJRdWFsaWZpZXJzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvc2Vjb25kL1ByZWZlckZpZWxkQW5kR2V0dGVyUXVhbGlmaWVycy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQwNzZjZmYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvc2Vjb25kL1ByZWZlckZpZWxkQW5kR2V0dGVyUXVhbGlmaWVycy5qYXZhCkBAIC0wLDAgKzEsMjAgQEAKK2NsYXNzIEZvbyB7CisKK30KKworY2xhc3MgQmFyIHsKKyAgRm9vIGdldEZvbygpIHt9Cit9CisKK2NsYXNzIE1haW4geworICB7CisgICAgQmFyIGxvY2FsQmFyID0gYmFyOworICAgIEZvbyBmID0gPGNhcmV0PgorICB9CisKKyAgQmFyIGJhcjsKKyAgQmFyIGdldEJhcigpIHsgcmV0dXJuIGJhcjsgfQorICBCYXIgZmluZEJhcigpIHsgcmV0dXJuIGdldEJhcigpOyB9CisKKworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9zZWNvbmQvUXVhbGlmaWVkQXJyYXlNZW1iZXJBY2Nlc3Mtb3V0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvc2Vjb25kL1F1YWxpZmllZEFycmF5TWVtYmVyQWNjZXNzLW91dC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEyZjVjOGUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvc2Vjb25kL1F1YWxpZmllZEFycmF5TWVtYmVyQWNjZXNzLW91dC5qYXZhCkBAIC0wLDAgKzEsOCBAQAorY2xhc3MgR29vIHsKKyAgICBib29sZWFuW10gYXJyYXkoKTsKKworICAgIHsKKworICAgICAgICBib29sZWFuIGEgPSB0aGlzLmFycmF5KClbPGNhcmV0Pl07CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL3NlY29uZC9RdWFsaWZpZWRBcnJheU1lbWJlckFjY2Vzcy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL3NlY29uZC9RdWFsaWZpZWRBcnJheU1lbWJlckFjY2Vzcy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmExNDAwZTEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvc2Vjb25kL1F1YWxpZmllZEFycmF5TWVtYmVyQWNjZXNzLmphdmEKQEAgLTAsMCArMSw4IEBACitjbGFzcyBHb28geworICAgIGJvb2xlYW5bXSBhcnJheSgpOworCisgICAgeworCisgICAgICAgIGJvb2xlYW4gYSA9IHRoaXMuYXI8Y2FyZXQ+CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL3NlY29uZC9RdWFsaWZpZXJNYXR0ZXJzLW91dC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL3NlY29uZC9RdWFsaWZpZXJNYXR0ZXJzLW91dC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZhMGM4MDEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvc2Vjb25kL1F1YWxpZmllck1hdHRlcnMtb3V0LmphdmEKQEAgLTAsMCArMSwxOSBAQAorY2xhc3MgR29vIHt9CitjbGFzcyBGb28geworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgQmFyPEdvbz4gQkFSOworCisKK30KKworY2xhc3MgQmFyPFQ+IHsKKyAgICBUIGdldEdvbygpOworCit9CisKK2NsYXNzIE1haW4geworICAgIHsKKworICAgICAgICBHb28gZyA9IEZvby5CQVIuZ2V0R29vKCk7PGNhcmV0PgorCisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9zZWNvbmQvUXVhbGlmaWVyTWF0dGVycy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL3NlY29uZC9RdWFsaWZpZXJNYXR0ZXJzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmFjMjJlYQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9zZWNvbmQvUXVhbGlmaWVyTWF0dGVycy5qYXZhCkBAIC0wLDAgKzEsMTkgQEAKK2NsYXNzIEdvbyB7fQorY2xhc3MgRm9vIHsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIEJhcjxHb28+IEJBUjsKKworCit9CisKK2NsYXNzIEJhcjxUPiB7CisgICAgVCBnZXRHb28oKTsKKworfQorCitjbGFzcyBNYWluIHsKKyAgICB7CisKKyAgICAgICAgR29vIGcgPSBGb28uPGNhcmV0PgorCisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9zZWNvbmQvUmVzdG9yZUluaXRpYWxQcmVmaXguamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9zZWNvbmQvUmVzdG9yZUluaXRpYWxQcmVmaXguamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MzUxNzIwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL3NlY29uZC9SZXN0b3JlSW5pdGlhbFByZWZpeC5qYXZhCkBAIC0wLDAgKzEsMTggQEAKK2NsYXNzIE15RW51bSB7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBNeUVudW0gRm9vOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgTXlFbnVtIEJhcjsKK30KKworY2xhc3MgQmFyIHsKKyAgTXlFbnVtIGdldEVudW0oKTsKK30KKworY2xhc3MgRm9vIHsKKworICAgQmFyIG15OworCisgICAgeworICAgICAgICBNeUVudW0gY2wgPSA8Y2FyZXQ+CisgICAgfQorCit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvc2Vjb25kL1NpbmdsZXRvbk1hcC1vdXQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9zZWNvbmQvU2luZ2xldG9uTWFwLW91dC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNhMGFkYWYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvc2Vjb25kL1NpbmdsZXRvbk1hcC1vdXQuamF2YQpAQCAtMCwwICsxLDEzIEBACitpbXBvcnQgamF2YS51dGlsLkNvbGxlY3Rpb25zOworaW1wb3J0IGphdmEudXRpbC5NYXA7CisKK3B1YmxpYyBjbGFzcyBTb21lQ2xhc3MgeworICAgIHZvaWQgZm9vKE1hcDxTdHJpbmcsIFN0cmluZz4gbCkgeworCisgICAgfQorCisgICAgeworICAgICAgICBmb28oQ29sbGVjdGlvbnMuc2luZ2xldG9uTWFwKDxjYXJldD4pKTsKKyAgICB9CisKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9zZWNvbmQvU2luZ2xldG9uTWFwLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvc2Vjb25kL1NpbmdsZXRvbk1hcC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNkNGRlMWIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvc2Vjb25kL1NpbmdsZXRvbk1hcC5qYXZhCkBAIC0wLDAgKzEsMTIgQEAKK2ltcG9ydCBqYXZhLnV0aWwuTWFwOworCitwdWJsaWMgY2xhc3MgU29tZUNsYXNzIHsKKyAgICB2b2lkIGZvbyhNYXA8U3RyaW5nLCBTdHJpbmc+IGwpIHsKKworICAgIH0KKworICAgIHsKKyAgICAgICAgZm9vKHNpbmc8Y2FyZXQ+KQorICAgIH0KKworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL3NlY29uZC9TdHJpbmdNZXRob2RzV2hlbk5vdGhpbmdGb3VuZC1vdXQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9zZWNvbmQvU3RyaW5nTWV0aG9kc1doZW5Ob3RoaW5nRm91bmQtb3V0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjA5MWY2NgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9zZWNvbmQvU3RyaW5nTWV0aG9kc1doZW5Ob3RoaW5nRm91bmQtb3V0LmphdmEKQEAgLTAsMCArMSw4IEBACitjbGFzcyBGb28geworCisgICAgeworICAgICAgU3RyaW5nIG1lc3NhZ2UgPSAiIjsKKyAgICAgIGlmIChtZXNzYWdlLnN0YXJ0c1dpdGgoPGNhcmV0PikpCisgICAgfQorCit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvc2Vjb25kL1N0cmluZ01ldGhvZHNXaGVuTm90aGluZ0ZvdW5kLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvc2Vjb25kL1N0cmluZ01ldGhvZHNXaGVuTm90aGluZ0ZvdW5kLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzJiZjVjYwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9zZWNvbmQvU3RyaW5nTWV0aG9kc1doZW5Ob3RoaW5nRm91bmQuamF2YQpAQCAtMCwwICsxLDggQEAKK2NsYXNzIEZvbyB7CisKKyAgICB7CisgICAgICBTdHJpbmcgbWVzc2FnZSA9ICIiOworICAgICAgaWYgKHN0YVdpPGNhcmV0PikKKyAgICB9CisKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9zZWNvbmQvU3VnZ2VzdEFycmF5c0FzTGlzdC1vdXQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9zZWNvbmQvU3VnZ2VzdEFycmF5c0FzTGlzdC1vdXQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MzlmMjE2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL3NlY29uZC9TdWdnZXN0QXJyYXlzQXNMaXN0LW91dC5qYXZhCkBAIC0wLDAgKzEsMTEgQEAKK2ltcG9ydCBqYXZhLnV0aWwuQXJyYXlzOworaW1wb3J0IGphdmEudXRpbC5Db2xsZWN0aW9uOworCitjbGFzcyBGb28geworCisgIHsKKyAgICBGb29bXSBmb29zOworICAgIENvbGxlY3Rpb248Rm9vPiBjID0gQXJyYXlzLmFzTGlzdChmb29zKTs8Y2FyZXQ+CisgIH0KKworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9zZWNvbmQvU3VnZ2VzdEFycmF5c0FzTGlzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL3NlY29uZC9TdWdnZXN0QXJyYXlzQXNMaXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmUzYTJlYgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9zZWNvbmQvU3VnZ2VzdEFycmF5c0FzTGlzdC5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKK2ltcG9ydCBqYXZhLnV0aWwuQ29sbGVjdGlvbjsKKworY2xhc3MgRm9vIHsKKworICB7CisgICAgRm9vW10gZm9vczsKKyAgICBDb2xsZWN0aW9uPEZvbz4gYyA9IGZvbzxjYXJldD4KKyAgfQorCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL3NlY29uZC9TdWdnZXN0QXJyYXlzQXNMaXN0V2lsZGNhcmQtb3V0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvc2Vjb25kL1N1Z2dlc3RBcnJheXNBc0xpc3RXaWxkY2FyZC1vdXQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NDUzMGM3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL3NlY29uZC9TdWdnZXN0QXJyYXlzQXNMaXN0V2lsZGNhcmQtb3V0LmphdmEKQEAgLTAsMCArMSwxMyBAQAoraW1wb3J0IGphdmEudXRpbC5BcnJheXM7CitpbXBvcnQgamF2YS51dGlsLkNvbGxlY3Rpb247CisKK2ludGVyZmFjZSBCYXIge30KKworY2xhc3MgRm9vIGltcGxlbWVudHMgQmFyIHsKKworICB7CisgICAgRm9vW10gZm9vczsKKyAgICBDb2xsZWN0aW9uPD8gZXh0ZW5kcyBCYXI+IGMgPSBBcnJheXMuYXNMaXN0KGZvb3MpOzxjYXJldD4KKyAgfQorCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL3NlY29uZC9TdWdnZXN0QXJyYXlzQXNMaXN0V2lsZGNhcmQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9zZWNvbmQvU3VnZ2VzdEFycmF5c0FzTGlzdFdpbGRjYXJkLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTViNjIyOAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9zZWNvbmQvU3VnZ2VzdEFycmF5c0FzTGlzdFdpbGRjYXJkLmphdmEKQEAgLTAsMCArMSwxMiBAQAoraW1wb3J0IGphdmEudXRpbC5Db2xsZWN0aW9uOworCitpbnRlcmZhY2UgQmFyIHt9CisKK2NsYXNzIEZvbyBpbXBsZW1lbnRzIEJhciB7CisKKyAgeworICAgIEZvb1tdIGZvb3M7CisgICAgQ29sbGVjdGlvbjw/IGV4dGVuZHMgQmFyPiBjID0gZm9vPGNhcmV0PgorICB9CisKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvc2Vjb25kL1N1Z2dlc3RUb0FycmF5V2l0aEV4aXN0aW5nRW1wdHlBcnJheS1vdXQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9zZWNvbmQvU3VnZ2VzdFRvQXJyYXlXaXRoRXhpc3RpbmdFbXB0eUFycmF5LW91dC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIxOTc3NzQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvc2Vjb25kL1N1Z2dlc3RUb0FycmF5V2l0aEV4aXN0aW5nRW1wdHlBcnJheS1vdXQuamF2YQpAQCAtMCwwICsxLDE0IEBACitpbXBvcnQgamF2YS51dGlsLkNvbGxlY3Rpb247CisKK2NsYXNzIEZvbyB7CisgIHB1YmxpYyBzdGF0aWMgZmluYWwgRm9vW10gRU1QVFlfQVJSQVkgPSBuZXcgRm9vWzBdOworICBwdWJsaWMgc3RhdGljIGZpbmFsIEZvb1tdIEVNUFRZX0FSUkFZMiA9IG5ldyBGb29bXXt9OworICBwdWJsaWMgc3RhdGljIGZpbmFsIEZvb1tdIE5PTl9FTVBUWV9BUlJBWSA9IG5ldyBGb29bMV07CisKKyAgQ29sbGVjdGlvbjxGb28+IGZvb3MoKSB7fQorCisgIHsKKyAgICBGb29bXSBmID0gZm9vcygpLnRvQXJyYXkoRU1QVFlfQVJSQVkpOzxjYXJldD4KKyAgfQorCit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvc2Vjb25kL1N1Z2dlc3RUb0FycmF5V2l0aEV4aXN0aW5nRW1wdHlBcnJheS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL3NlY29uZC9TdWdnZXN0VG9BcnJheVdpdGhFeGlzdGluZ0VtcHR5QXJyYXkuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42OGMwMzdhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL3NlY29uZC9TdWdnZXN0VG9BcnJheVdpdGhFeGlzdGluZ0VtcHR5QXJyYXkuamF2YQpAQCAtMCwwICsxLDE0IEBACitpbXBvcnQgamF2YS51dGlsLkNvbGxlY3Rpb247CisKK2NsYXNzIEZvbyB7CisgIHB1YmxpYyBzdGF0aWMgZmluYWwgRm9vW10gRU1QVFlfQVJSQVkgPSBuZXcgRm9vWzBdOworICBwdWJsaWMgc3RhdGljIGZpbmFsIEZvb1tdIEVNUFRZX0FSUkFZMiA9IG5ldyBGb29bXXt9OworICBwdWJsaWMgc3RhdGljIGZpbmFsIEZvb1tdIE5PTl9FTVBUWV9BUlJBWSA9IG5ldyBGb29bMV07CisKKyAgQ29sbGVjdGlvbjxGb28+IGZvb3MoKSB7fQorCisgIHsKKyAgICBGb29bXSBmID0gZjxjYXJldD4KKyAgfQorCit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvc2Vjb25kL1N1Z2dlc3RUb0FycmF5V2l0aEV4aXN0aW5nRW1wdHlBcnJheUZyb21Bbm90aGVyQ2xhc3Mtb3V0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvc2Vjb25kL1N1Z2dlc3RUb0FycmF5V2l0aEV4aXN0aW5nRW1wdHlBcnJheUZyb21Bbm90aGVyQ2xhc3Mtb3V0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTc3YWQzMwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9zZWNvbmQvU3VnZ2VzdFRvQXJyYXlXaXRoRXhpc3RpbmdFbXB0eUFycmF5RnJvbUFub3RoZXJDbGFzcy1vdXQuamF2YQpAQCAtMCwwICsxLDE2IEBACitpbXBvcnQgamF2YS51dGlsLkNvbGxlY3Rpb247CisKK2NsYXNzIEJhciB7CisgIHB1YmxpYyBzdGF0aWMgZmluYWwgQmFyW10gRU1QVFlfQVJSQVkgPSBuZXcgQmFyWzBdOworICBwdWJsaWMgc3RhdGljIGZpbmFsIEJhcltdIEVNUFRZX0FSUkFZMiA9IG5ldyBCYXJbXXt9OworICBwdWJsaWMgc3RhdGljIGZpbmFsIEJhcltdIE5PTl9FTVBUWV9BUlJBWSA9IG5ldyBCYXJbMV07CisKK30KKworY2xhc3MgRm9vIHsKKyAgQ29sbGVjdGlvbjxCYXI+IGZvb3MoKSB7fQorCisgIHsKKyAgICBCYXJbXSBmID0gZm9vcygpLnRvQXJyYXkoQmFyLkVNUFRZX0FSUkFZKTsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL3NlY29uZC9TdWdnZXN0VG9BcnJheVdpdGhFeGlzdGluZ0VtcHR5QXJyYXlGcm9tQW5vdGhlckNsYXNzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvc2Vjb25kL1N1Z2dlc3RUb0FycmF5V2l0aEV4aXN0aW5nRW1wdHlBcnJheUZyb21Bbm90aGVyQ2xhc3MuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iM2MyOWVhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL3NlY29uZC9TdWdnZXN0VG9BcnJheVdpdGhFeGlzdGluZ0VtcHR5QXJyYXlGcm9tQW5vdGhlckNsYXNzLmphdmEKQEAgLTAsMCArMSwxNiBAQAoraW1wb3J0IGphdmEudXRpbC5Db2xsZWN0aW9uOworCitjbGFzcyBCYXIgeworICBwdWJsaWMgc3RhdGljIGZpbmFsIEJhcltdIEVNUFRZX0FSUkFZID0gbmV3IEJhclswXTsKKyAgcHVibGljIHN0YXRpYyBmaW5hbCBCYXJbXSBFTVBUWV9BUlJBWTIgPSBuZXcgQmFyW117fTsKKyAgcHVibGljIHN0YXRpYyBmaW5hbCBCYXJbXSBOT05fRU1QVFlfQVJSQVkgPSBuZXcgQmFyWzFdOworCit9CisKK2NsYXNzIEZvbyB7CisgIENvbGxlY3Rpb248QmFyPiBmb29zKCkge30KKworICB7CisgICAgQmFyW10gZiA9IGY8Y2FyZXQ+CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9zZWNvbmQvU3VnZ2VzdFRvQXJyYXlXaXRoTmV3RW1wdHlBcnJheS1vdXQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9zZWNvbmQvU3VnZ2VzdFRvQXJyYXlXaXRoTmV3RW1wdHlBcnJheS1vdXQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNTc3ZjA5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL3NlY29uZC9TdWdnZXN0VG9BcnJheVdpdGhOZXdFbXB0eUFycmF5LW91dC5qYXZhCkBAIC0wLDAgKzEsMTEgQEAKK2ltcG9ydCBqYXZhLnV0aWwuQ29sbGVjdGlvbjsKKworY2xhc3MgRm9vIHsKKworICBDb2xsZWN0aW9uPEZvbz4gZm9vcygpIHt9CisKKyAgeworICAgIEZvb1tdIGYgPSBmb29zKCkudG9BcnJheShuZXcgRm9vWzBdKTs8Y2FyZXQ+CisgIH0KKworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL3NlY29uZC9TdWdnZXN0VG9BcnJheVdpdGhOZXdFbXB0eUFycmF5LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvc2Vjb25kL1N1Z2dlc3RUb0FycmF5V2l0aE5ld0VtcHR5QXJyYXkuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZjhiOTEyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL3NlY29uZC9TdWdnZXN0VG9BcnJheVdpdGhOZXdFbXB0eUFycmF5LmphdmEKQEAgLTAsMCArMSwxMSBAQAoraW1wb3J0IGphdmEudXRpbC5Db2xsZWN0aW9uOworCitjbGFzcyBGb28geworCisgIENvbGxlY3Rpb248Rm9vPiBmb29zKCkge30KKworICB7CisgICAgRm9vW10gZiA9IDxjYXJldD4KKyAgfQorCit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvc2Vjb25kL1N1Z2dlc3RUb0FycmF5V2l0aE5ld05vbkVtcHR5QXJyYXktb3V0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvc2Vjb25kL1N1Z2dlc3RUb0FycmF5V2l0aE5ld05vbkVtcHR5QXJyYXktb3V0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjUwOTczMAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9zZWNvbmQvU3VnZ2VzdFRvQXJyYXlXaXRoTmV3Tm9uRW1wdHlBcnJheS1vdXQuamF2YQpAQCAtMCwwICsxLDEwIEBACitpbXBvcnQgamF2YS51dGlsLkNvbGxlY3Rpb247CisKK2NsYXNzIEZvbyB7CisKKyAgeworICAgIENvbGxlY3Rpb248Rm9vPiBmb29zOworICAgIEZvb1tdIGYgPSBmb29zLnRvQXJyYXkobmV3IEZvb1tmb29zLnNpemUoKV0pOzxjYXJldD4KKyAgfQorCit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvc2Vjb25kL1N1Z2dlc3RUb0FycmF5V2l0aE5ld05vbkVtcHR5QXJyYXkuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9zZWNvbmQvU3VnZ2VzdFRvQXJyYXlXaXRoTmV3Tm9uRW1wdHlBcnJheS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjljYTdhNjcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvc2Vjb25kL1N1Z2dlc3RUb0FycmF5V2l0aE5ld05vbkVtcHR5QXJyYXkuamF2YQpAQCAtMCwwICsxLDEwIEBACitpbXBvcnQgamF2YS51dGlsLkNvbGxlY3Rpb247CisKK2NsYXNzIEZvbyB7CisKKyAgeworICAgIENvbGxlY3Rpb248Rm9vPiBmb29zOworICAgIEZvb1tdIGYgPSA8Y2FyZXQ+CisgIH0KKworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL3NlY29uZC9Ub0FycmF5RmllbGRzUXVhbGlmaWVyLW91dC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL3NlY29uZC9Ub0FycmF5RmllbGRzUXVhbGlmaWVyLW91dC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJjNGQ4MzYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvc2Vjb25kL1RvQXJyYXlGaWVsZHNRdWFsaWZpZXItb3V0LmphdmEKQEAgLTAsMCArMSwxMyBAQAoraW1wb3J0IGphdmEudXRpbC5Db2xsZWN0aW9uOworCitjbGFzcyBCYXIgeworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgQ29sbGVjdGlvbjxGb28+IGZvb3M7Cit9CisKK2NsYXNzIEZvbyB7CisKKyAgICB7CisgICAgICAgIEZvb1tdIGYgPSBCYXIuZm9vcy50b0FycmF5KG5ldyBGb29bQmFyLmZvb3Muc2l6ZSgpXSk7PGNhcmV0PgorICAgIH0KKworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL3NlY29uZC9Ub0FycmF5RmllbGRzUXVhbGlmaWVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvc2Vjb25kL1RvQXJyYXlGaWVsZHNRdWFsaWZpZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMjkxMzg4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL3NlY29uZC9Ub0FycmF5RmllbGRzUXVhbGlmaWVyLmphdmEKQEAgLTAsMCArMSwxMyBAQAoraW1wb3J0IGphdmEudXRpbC5Db2xsZWN0aW9uOworCitjbGFzcyBCYXIgeworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgQ29sbGVjdGlvbjxGb28+IGZvb3M7Cit9CisKK2NsYXNzIEZvbyB7CisKKyAgICB7CisgICAgICAgIEZvb1tdIGYgPSBCYXIuPGNhcmV0PgorICAgIH0KKworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL3NlY29uZC9Ub0FycmF5R2VuZXJpY0FycmF5Q3JlYXRpb24tb3V0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvc2Vjb25kL1RvQXJyYXlHZW5lcmljQXJyYXlDcmVhdGlvbi1vdXQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMGIzYjNlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL3NlY29uZC9Ub0FycmF5R2VuZXJpY0FycmF5Q3JlYXRpb24tb3V0LmphdmEKQEAgLTAsMCArMSwxMSBAQAoraW1wb3J0IGphdmEudXRpbC5Db2xsZWN0aW9uOworCitjbGFzcyBGb288VD4geworCisgIENvbGxlY3Rpb248Rm9vPFQ+PiBmb29zKCkge30KKworICB7CisgICAgRm9vPFQ+W10gZiA9IDxjYXJldD4KKyAgfQorCit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvc2Vjb25kL1RvQXJyYXlHZW5lcmljQXJyYXlDcmVhdGlvbi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL3NlY29uZC9Ub0FycmF5R2VuZXJpY0FycmF5Q3JlYXRpb24uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMGIzYjNlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL3NlY29uZC9Ub0FycmF5R2VuZXJpY0FycmF5Q3JlYXRpb24uamF2YQpAQCAtMCwwICsxLDExIEBACitpbXBvcnQgamF2YS51dGlsLkNvbGxlY3Rpb247CisKK2NsYXNzIEZvbzxUPiB7CisKKyAgQ29sbGVjdGlvbjxGb288VD4+IGZvb3MoKSB7fQorCisgIHsKKyAgICBGb288VD5bXSBmID0gPGNhcmV0PgorICB9CisKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9zZWNvbmQvVG9BcnJheU1ldGhvZFF1YWxpZmllci1vdXQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9zZWNvbmQvVG9BcnJheU1ldGhvZFF1YWxpZmllci1vdXQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYTRkOGVmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL3NlY29uZC9Ub0FycmF5TWV0aG9kUXVhbGlmaWVyLW91dC5qYXZhCkBAIC0wLDAgKzEsMTMgQEAKK2ltcG9ydCBqYXZhLnV0aWwuQ29sbGVjdGlvbjsKKworY2xhc3MgQmFyIHsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIENvbGxlY3Rpb248Rm9vPiBmb29zKCk7Cit9CisKK2NsYXNzIEZvbyB7CisKKyAgICB7CisgICAgICAgIEZvb1tdIGYgPSBCYXIuZm9vcygpLnRvQXJyYXkobmV3IEZvb1swXSk7PGNhcmV0PgorICAgIH0KKworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL3NlY29uZC9Ub0FycmF5TWV0aG9kUXVhbGlmaWVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvc2Vjb25kL1RvQXJyYXlNZXRob2RRdWFsaWZpZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZmJlZGYxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL3NlY29uZC9Ub0FycmF5TWV0aG9kUXVhbGlmaWVyLmphdmEKQEAgLTAsMCArMSwxMyBAQAoraW1wb3J0IGphdmEudXRpbC5Db2xsZWN0aW9uOworCitjbGFzcyBCYXIgeworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgQ29sbGVjdGlvbjxGb28+IGZvb3MoKTsKK30KKworY2xhc3MgRm9vIHsKKworICAgIHsKKyAgICAgICAgRm9vW10gZiA9IEJhci48Y2FyZXQ+CisgICAgfQorCit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvc2Vjb25kL1RvTGlzdFdpdGhRdWFsaWZpZXItb3V0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvc2Vjb25kL1RvTGlzdFdpdGhRdWFsaWZpZXItb3V0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGJkYjIxYgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9zZWNvbmQvVG9MaXN0V2l0aFF1YWxpZmllci1vdXQuamF2YQpAQCAtMCwwICsxLDE0IEBACitpbXBvcnQgamF2YS51dGlsLkFycmF5czsKK2ltcG9ydCBqYXZhLnV0aWwuQ29sbGVjdGlvbjsKKworY2xhc3MgQmFyIHsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIEZvb1tdIGZvb3MoKTsKK30KKworY2xhc3MgRm9vIHsKKworICAgIHsKKyAgICAgICAgQ29sbGVjdGlvbjxGb28+IGYgPSBBcnJheXMuYXNMaXN0KEJhci5mb29zKCkpOzxjYXJldD4KKyAgICB9CisKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9zZWNvbmQvVG9MaXN0V2l0aFF1YWxpZmllci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL3NlY29uZC9Ub0xpc3RXaXRoUXVhbGlmaWVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWUxNDNjMgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZS9zZWNvbmQvVG9MaXN0V2l0aFF1YWxpZmllci5qYXZhCkBAIC0wLDAgKzEsMTMgQEAKK2ltcG9ydCBqYXZhLnV0aWwuQ29sbGVjdGlvbjsKKworY2xhc3MgQmFyIHsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIEZvb1tdIGZvb3MoKTsKK30KKworY2xhc3MgRm9vIHsKKworICAgIHsKKyAgICAgICAgQ29sbGVjdGlvbjxGb28+IGYgPSBCYXIuPGNhcmV0PgorICAgIH0KKworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL3NlY29uZC9WYXJhcmdNZW1iZXJBY2Nlc3Mtb3V0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvc2Vjb25kL1ZhcmFyZ01lbWJlckFjY2Vzcy1vdXQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMWMwMGZmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL3NlY29uZC9WYXJhcmdNZW1iZXJBY2Nlc3Mtb3V0LmphdmEKQEAgLTAsMCArMSw1IEBACitjbGFzcyBHb28geworICAgIHZvaWQgZm9vKGJvb2xlYW4uLi4gbG9zKSB7CisgICAgICAgIGJvb2xlYW4gYSA9IGxvc1s8Y2FyZXQ+XTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGUvc2Vjb25kL1ZhcmFyZ01lbWJlckFjY2Vzcy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL3NlY29uZC9WYXJhcmdNZW1iZXJBY2Nlc3MuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYmM4MmJmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlL3NlY29uZC9WYXJhcmdNZW1iZXJBY2Nlc3MuamF2YQpAQCAtMCwwICsxLDUgQEAKK2NsYXNzIEdvbyB7CisgICAgdm9pZCBmb28oYm9vbGVhbi4uLiBsb3MpIHsKKyAgICAgICAgYm9vbGVhbiBhID0gbG9zPGNhcmV0PgorICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZVNvcnRpbmcvQXNzZXJ0RXF1YWxzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGVTb3J0aW5nL0Fzc2VydEVxdWFscy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI5MjI0MjYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGVTb3J0aW5nL0Fzc2VydEVxdWFscy5qYXZhCkBAIC0wLDAgKzEsMTIgQEAKK2ltcG9ydCBqdW5pdC5mcmFtZXdvcmsuQXNzZXJ0OworaW1wb3J0IGphdmEuaW8uRmlsZTsKKworcHVibGljIGNsYXNzIEFhYWFhYWEgZXh0ZW5kcyBBc3NlcnQgeworCisgICAgeworICAgICAgICBGaWxlIGJvbzsKKyAgICAgICAgaW50IGJhcjsKKyAgICAgICAgYXNzZXJ0RXF1YWxzKG5ldyBGaWxlKCJ4IiksIGI8Y2FyZXQ+KTsKKyAgICB9CisKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZVNvcnRpbmcvQm9vbGVhblZhbHVlT2YuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZVNvcnRpbmcvQm9vbGVhblZhbHVlT2YuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMTc0NDZmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlU29ydGluZy9Cb29sZWFuVmFsdWVPZi5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKK3B1YmxpYyBhYnN0cmFjdCBjbGFzcyBGb28geworCisgICAgdm9pZCBmb28oQm9vbGVhbiB2YWx1ZSk7CisKKyAgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgYm9vbGVhbiBiOworICAgICAgICBmb28oPGNhcmV0PikKKyAgICB9CisKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGVTb3J0aW5nL0NsYXNzTGl0ZXJhbC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlU29ydGluZy9DbGFzc0xpdGVyYWwuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZjQzYzhhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlU29ydGluZy9DbGFzc0xpdGVyYWwuamF2YQpAQCAtMCwwICsxLDYgQEAKK3B1YmxpYyBjbGFzcyBGb28gIHsKKworICAgIHB1YmxpYyBDbGFzczw/IGV4dGVuZHMgU3RyaW5nPiBmb28oKSB7CisgICAgICAgIHJldHVybiA8Y2FyZXQ+CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZVNvcnRpbmcvRGlzcHJlZmVyR2V0dGVySW5TZXR0ZXJDYWxsLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGVTb3J0aW5nL0Rpc3ByZWZlckdldHRlckluU2V0dGVyQ2FsbC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgwYWJkZGYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGVTb3J0aW5nL0Rpc3ByZWZlckdldHRlckluU2V0dGVyQ2FsbC5qYXZhCkBAIC0wLDAgKzEsMTMgQEAKK3B1YmxpYyBjbGFzcyBBYWFhYWFhIHsKKyAgaW50IGNvbG9yOworCisgIHZvaWQgc2V0Q29sb3IoaW50IGNvbG9yKSB7fQorICBpbnQgZ2V0Q29sb3IoKSB7fQorICBpbnQgZ2V0Wm9vQ29sb3IoKSB7fQorCisgIHsKKyAgICBzZXRDb2xvcig8Y2FyZXQ+KTsKKyAgfQorCisKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZVNvcnRpbmcvRG9udFByZWZlckNhc3RlZC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlU29ydGluZy9Eb250UHJlZmVyQ2FzdGVkLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWI2OTBmNwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZVNvcnRpbmcvRG9udFByZWZlckNhc3RlZC5qYXZhCkBAIC0wLDAgKzEsMTcgQEAKK2NsYXNzIEZvbyB7CisgICAgeworICAgICAgICBPYmplY3QgX287CisgICAgICAgIEJhciBiOworICAgICAgICBpZiAoX28gaW5zdGFuY2VvZiBHb28pIHsKKyAgICAgICAgICAgIEdvbyBnID0gPGNhcmV0PgorICAgICAgICB9CisgICAgfQorfQorCitjbGFzcyBHb28geworCit9CisKK2NsYXNzIEJhciBleHRlbmRzIEdvbyB7CisKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGVTb3J0aW5nL0RvbnRQcmVmZXJLZXl3b3Jkcy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlU29ydGluZy9Eb250UHJlZmVyS2V5d29yZHMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44OGQyNmQ0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlU29ydGluZy9Eb250UHJlZmVyS2V5d29yZHMuamF2YQpAQCAtMCwwICsxLDEwIEBACitwdWJsaWMgY2xhc3MgRm9vIHsKKworICAgeworICAgICAgICBTdHJpbmcgbmFtZTsKKyAgICAgICAgT2JqZWN0IG8xOworICAgICAgICBGb28gZm9vOworCisgICAgICAgIE9iamVjdCBvID0gPGNhcmV0PgorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGVTb3J0aW5nL0VudW1WYWx1ZU9mLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGVTb3J0aW5nL0VudW1WYWx1ZU9mLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzgyYmIxNQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZVNvcnRpbmcvRW51bVZhbHVlT2YuamF2YQpAQCAtMCwwICsxLDExIEBACitlbnVtIE15RW51bSB7CisgIEZPTywgQkFSOworfQorCitwdWJsaWMgY2xhc3MgRm9vIHsKKworICAgeworICAgICAgICBNeUVudW0gZTsKKyAgICAgICAgTXlFbnVtIGUxID0gPGNhcmV0PgorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGVTb3J0aW5nL0VudW1WYWx1ZU9mMi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlU29ydGluZy9FbnVtVmFsdWVPZjIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYmVjN2ViCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlU29ydGluZy9FbnVtVmFsdWVPZjIuamF2YQpAQCAtMCwwICsxLDEzIEBACitlbnVtIE15RW51bSB7CisgIEZPTywgQkFSOworfQorCitwdWJsaWMgY2xhc3MgRm9vIHsKKworICAgTXlFbnVtIGJhcigpIHt9CisKKyAgIE15RW51bSBmb28oKSB7CisgICAgICAgIE15RW51bSBlOworICAgICAgICByZXR1cm4gPGNhcmV0PgorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGVTb3J0aW5nL0VyYXN1cmVOb3RBZmZlY3RpbmdQcm94aW1pdHkuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZVNvcnRpbmcvRXJhc3VyZU5vdEFmZmVjdGluZ1Byb3hpbWl0eS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUwZTY1NTcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGVTb3J0aW5nL0VyYXN1cmVOb3RBZmZlY3RpbmdQcm94aW1pdHkuamF2YQpAQCAtMCwwICsxLDMgQEAKK2NsYXNzIEEge3sKKyAgICBmb28uRm9vPFN0cmluZz4gZiA9IG5ldyBCPGNhcmV0PgorfX0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGVTb3J0aW5nL0V4cGVjdGVkSW50ZXJmYWNlU2hvdWxkR29GaXJzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlU29ydGluZy9FeHBlY3RlZEludGVyZmFjZVNob3VsZEdvRmlyc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNDU1OGRmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlU29ydGluZy9FeHBlY3RlZEludGVyZmFjZVNob3VsZEdvRmlyc3QuamF2YQpAQCAtMCwwICsxLDkgQEAKK2ludGVyZmFjZSBNeVByb2Nlc3NvcjxUPiB7CisgIHZvaWQgZXhlY3V0ZShUIHQpOworfQorCitjbGFzcyBQcm9jMTxUPiBpbXBsZW1lbnRzIE15UHJvY2Vzc29yPFQ+IHsgcHVibGljIHZvaWQgZXhlY3V0ZShUIHQpIHt9fQorCitjbGFzcyBGb28geworICBNeVByb2Nlc3NvcjxGb28+IHAgPSBuZXcgPGNhcmV0PgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZVNvcnRpbmcvRmFjdG9yeU1ldGhvZEZvckRlZmF1bHRUeXBlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGVTb3J0aW5nL0ZhY3RvcnlNZXRob2RGb3JEZWZhdWx0VHlwZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEzMDY2MzAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGVTb3J0aW5nL0ZhY3RvcnlNZXRob2RGb3JEZWZhdWx0VHlwZS5qYXZhCkBAIC0wLDAgKzEsMTYgQEAKK2ltcG9ydCBqYXZhLnV0aWwuKjsKKworcHVibGljIGNsYXNzIEZvbyB7CisKKyAgICB7CisgICAgICAgIE1hcDxQYWlyPE9iamVjdCwgT2JqZWN0PiwgT2JqZWN0PiBtYXA7CisgICAgICAgIG1hcC5nZXQoPGNhcmV0PikKKyAgICB9CisKK30KKworY2xhc3MgUGFpcjxBLCBCPiB7CisgICAgUGFpcihBIGEsIEIgYikge30KKworICAgIHN0YXRpYyA8QSxCPiBQYWlyPEEsQj4gY3JlYXRlKEEgYSwgQiBiKSB7fQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlU29ydGluZy9GaWVsZE5hbWVPdXR3ZWlnaHNTdGF0cy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlU29ydGluZy9GaWVsZE5hbWVPdXR3ZWlnaHNTdGF0cy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAyNDcwMDIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGVTb3J0aW5nL0ZpZWxkTmFtZU91dHdlaWdoc1N0YXRzLmphdmEKQEAgLTAsMCArMSw5IEBACitjbGFzcyBGb28geworICBTdHJpbmcgbXlGb287CisgIFN0cmluZyBteUJhcjsKKworICBTdHJpbmcgZ2V0Rm9vKCkgeworICAgIHJldHVybiBteTxjYXJldD4KKyAgfQorCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlU29ydGluZy9Hd3RCdXR0b25zLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGVTb3J0aW5nL0d3dEJ1dHRvbnMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYTBkNWZmZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZVNvcnRpbmcvR3d0QnV0dG9ucy5qYXZhCkBAIC0wLDAgKzEsOSBAQAorY2xhc3MgU210aCB7fQorY2xhc3MgQnV0dG9uIGV4dGVuZHMgU210aCB7fQorY2xhc3MgQnV0dG9uQmFzZSBleHRlbmRzIEJ1dHRvbiB7fQorCitjbGFzcyBGb28geworICBGb28gZm9vKFN0cmluZyBzKSB7CisgICAgU210aCBzID0gbmV3IEI8Y2FyZXQ+CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGVTb3J0aW5nL0lubmVyQ2xhc3Nlc1Byb3hpbWl0eS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlU29ydGluZy9Jbm5lckNsYXNzZXNQcm94aW1pdHkuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wOTdmN2I1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlU29ydGluZy9Jbm5lckNsYXNzZXNQcm94aW1pdHkuamF2YQpAQCAtMCwwICsxLDIxIEBACitwYWNrYWdlIHp6enp6OworCitwdWJsaWMgY2xhc3MgRm9vIHsKKyAgICB7CisgICAgICAgIGNsYXNzIElubmVyR29vIGV4dGVuZHMgR29ve30KKworICAgICAgICBHb28gZyA9IG5ldyA8Y2FyZXQ+CisgICAgfQorCisgICAgY2xhc3MgQmFyIGV4dGVuZHMgR29vIHsKKworICAgIH0KKworfQorCitjbGFzcyBHb28geworCit9CisKK2NsYXNzIEFHb28gZXh0ZW5kcyBHb28ge30KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlU29ydGluZy9KQ29tcG9uZW50QWRkLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGVTb3J0aW5nL0pDb21wb25lbnRBZGQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NjJjNGM2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlU29ydGluZy9KQ29tcG9uZW50QWRkLmphdmEKQEAgLTAsMCArMSwxNCBAQAoraW1wb3J0IGphdmF4LnN3aW5nLio7CitpbXBvcnQgamF2YS5hd3QuKjsKKworcHVibGljIGNsYXNzIEZvb0JlYW4zIGV4dGVuZHMgSkNvbXBvbmVudCB7CisKKyAgICBKQ29tcG9uZW50IGZvbyhpbnQgYSkgeworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNldEZvb0JlYW4yMzkoU3RyaW5nIGZvb0JlYW4yMzkpIHsKKyAgICAgICAgU3RyaW5nIG5hbWU7CisgICAgICAgIFBvcHVwTWVudSBiOworICAgICAgICBhZGQoPGNhcmV0PikKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlU29ydGluZy9KQ29tcG9uZW50QWRkTmV3LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGVTb3J0aW5nL0pDb21wb25lbnRBZGROZXcuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43YjFmYjIzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlU29ydGluZy9KQ29tcG9uZW50QWRkTmV3LmphdmEKQEAgLTAsMCArMSw5IEBACitpbXBvcnQgamF2YXguc3dpbmcuKjsKK2ltcG9ydCBqYXZhLmF3dC4qOworCitwdWJsaWMgY2xhc3MgRm9vQmVhbjMgZXh0ZW5kcyBKQ29tcG9uZW50IHsKKworICAgIHsKKyAgICAgICAgYWRkKG5ldyA8Y2FyZXQ+KQorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGVTb3J0aW5nL0xpdGVyYWxJbklmLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGVTb3J0aW5nL0xpdGVyYWxJbklmLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2RiZTE1NQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZVNvcnRpbmcvTGl0ZXJhbEluSWYuamF2YQpAQCAtMCwwICsxLDUgQEAKK3B1YmxpYyBjbGFzcyBGb28geworICAgIHB1YmxpYyB2b2lkIGdldEFiYygpIHsKKyAgICAgICAgaWYoPGNhcmV0PikKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGVTb3J0aW5nL0xpdGVyYWxJblJldHVybi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlU29ydGluZy9MaXRlcmFsSW5SZXR1cm4uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZmU0ZGE4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlU29ydGluZy9MaXRlcmFsSW5SZXR1cm4uamF2YQpAQCAtMCwwICsxLDUgQEAKK3B1YmxpYyBjbGFzcyBGb28geworICAgIHB1YmxpYyBib29sZWFuIGdldEFiYygpIHsKKyAgICAgICAgcmV0dXJuIDxjYXJldD4KKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGVTb3J0aW5nL0xvY2FsVmFyaWFibGVzT3V0d2VpZ2hTdGF0cy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlU29ydGluZy9Mb2NhbFZhcmlhYmxlc091dHdlaWdoU3RhdHMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45YmVlYmJhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlU29ydGluZy9Mb2NhbFZhcmlhYmxlc091dHdlaWdoU3RhdHMuamF2YQpAQCAtMCwwICsxLDExIEBACitjbGFzcyBGb28geworCisgIEZvbyBiYXIoKSB7IH0KKyAgRm9vIGdvbygpIHsgfQorCisgIHZvaWQgZm9vKEZvbyBwYXJhbSkgeworICAgIEZvbyBmb287CisgICAgRm9vIHp6eiA9IDxjYXJldD4KKyAgfQorCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlU29ydGluZy9Mb2NhbFZhcnNCZWZvcmVDbGFzc0xpdGVyYWxzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGVTb3J0aW5nL0xvY2FsVmFyc0JlZm9yZUNsYXNzTGl0ZXJhbHMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MDQzYzhjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlU29ydGluZy9Mb2NhbFZhcnNCZWZvcmVDbGFzc0xpdGVyYWxzLmphdmEKQEAgLTAsMCArMSwxMCBAQAorcHVibGljIGNsYXNzIEZvbyB7CisKKyAgICB7CisgICAgICAgIENsYXNzPEZvbz4gbG9jYWw7CisgICAgICAgIENsYXNzPD8gZXh0ZW5kcyBGb28+IGYgPSA8Y2FyZXQ+CisgICAgfQorCit9CisKK2NsYXNzIEJhciBleHRlbmRzIEZvbyB7fQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlU29ydGluZy9NZXRob2RTdGF0cy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlU29ydGluZy9NZXRob2RTdGF0cy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUyZTljNWYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGVTb3J0aW5nL01ldGhvZFN0YXRzLmphdmEKQEAgLTAsMCArMSwxNiBAQAorcHVibGljIGNsYXNzIEZvb0JhciB7CisKKyBjbGFzcyBYeHgge30KKworICAgIFh4eCBmb28oKSB7IH0KKyAgICBYeHggYmFyKCkgeyB9CisgICAgWHh4IGdvbygpIHsgfQorCisgICAgdm9pZCBhYWEoWHh4IGEpIHt9CisKKyAgICB7CisgICAgICAgIG5ldyBGb29CYXIoKS5hYWEoIG5ldyBGb29CYXIoKS48Y2FyZXQ+ICk7CisgICAgfQorCisKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGVTb3J0aW5nL01ldGhvZHNXaXRoU3Vic3RpdHV0YWJsZVJldHVyblR5cGUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZVNvcnRpbmcvTWV0aG9kc1dpdGhTdWJzdGl0dXRhYmxlUmV0dXJuVHlwZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEwMTlhMjgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGVTb3J0aW5nL01ldGhvZHNXaXRoU3Vic3RpdHV0YWJsZVJldHVyblR5cGUuamF2YQpAQCAtMCwwICsxLDExIEBACitwdWJsaWMgY2xhc3MgRm9vPFQ+IHsKKworICAgVCBmb28oKSB7fQorCisgICA8Vj4gViBiYXIoKSB7fQorCisgICAgeworICAgICAgICBGb288U3RyaW5nPiBvOworICAgICAgICBTdHJpbmcgYSA9IG8uPGNhcmV0PgorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGVTb3J0aW5nL05ld0FycmF5TGlzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlU29ydGluZy9OZXdBcnJheUxpc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZDVlZDllCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlU29ydGluZy9OZXdBcnJheUxpc3QuamF2YQpAQCAtMCwwICsxLDE1IEBACitpbnRlcmZhY2UgTGlzdCB7CisgIHZvaWQgYWRkKCk7Cit9CisKK2NsYXNzIEFycmF5TGlzdCBpbXBsZW1lbnRzIExpc3QgeworICBwdWJsaWMgdm9pZCBhZGQoKSB7fQorfQorCitjbGFzcyBPdGhlckxpc3QgZXh0ZW5kcyBBcnJheUxpc3Qge30KKworY2xhc3MgRm9vIHsKKyAgeworICAgIEFycmF5TGlzdCBsID0gbmV3IDxjYXJldD4KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZVNvcnRpbmcvTmV3Q29tcG9uZW50LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGVTb3J0aW5nL05ld0NvbXBvbmVudC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAxMWRkNzM4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlU29ydGluZy9OZXdDb21wb25lbnQuamF2YQpAQCAtMCwwICsxLDkgQEAKK2ltcG9ydCBqYXZheC5zd2luZy4qOworaW1wb3J0IGphdmEuYXd0Lio7CisKK3B1YmxpYyBjbGFzcyBGb28gZXh0ZW5kcyBKQ29tcG9uZW50IHsKKworICAgIHB1YmxpYyBDb21wb25lbnQgZm9vKCkgeworICAgICAgICByZXR1cm4gbmV3IDxjYXJldD4KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlU29ydGluZy9OZXdMaXN0QWx3YXlzRmlyc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZVNvcnRpbmcvTmV3TGlzdEFsd2F5c0ZpcnN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjhhMWU2NwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZVNvcnRpbmcvTmV3TGlzdEFsd2F5c0ZpcnN0LmphdmEKQEAgLTAsMCArMSw4IEBACitpbXBvcnQgamF2YS51dGlsLio7CisKK3B1YmxpYyBjbGFzcyBGb29CZWFuMyBleHRlbmRzIEpDb21wb25lbnQgeworCisgICAgeworICAgICAgTGlzdDxTdHJpbmc+IGwgPSBuZXcgPGNhcmV0PgorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGVTb3J0aW5nL05ld1J1bm5hYmxlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGVTb3J0aW5nL05ld1J1bm5hYmxlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWZhOTM1OAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZVNvcnRpbmcvTmV3UnVubmFibGUuamF2YQpAQCAtMCwwICsxLDggQEAKK3B1YmxpYyBjbGFzcyBNeVJ1bm5hYmxlIGltcGxlbWVudHMgUnVubmFibGUgeworCisgICAgcHJpdmF0ZSBjbGFzcyBNeUFub3RoZXJSdW5uYWJsZSBleHRlbmRzIE15UnVubmFibGUge30KKworICAgIFJ1bm5hYmxlIGZvbygpIHsKKyAgICAgICAgcmV0dXJuIG5ldyA8Y2FyZXQ+CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZVNvcnRpbmcvTm9Ta2lwcGluZ0luU21hcnRDYXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGVTb3J0aW5nL05vU2tpcHBpbmdJblNtYXJ0Q2FzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMyZWIyNzYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGVTb3J0aW5nL05vU2tpcHBpbmdJblNtYXJ0Q2FzdC5qYXZhCkBAIC0wLDAgKzEsMTYgQEAKK2ludGVyZmFjZSBCYXIge30KK2NsYXNzIEdvbyB7fQorCithYnN0cmFjdCBjbGFzcyBGb28geworICAgIHZvaWQgZm9vKEJhciBmKTsKKworICAgIHZvaWQgZm9vKEZvbyBmKTsKKworICAgIHZvaWQgZm9vKEdvbyBmKTsKKworCisgIHsKKworICAgIGZvbygoPGNhcmV0PikpCisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGVTb3J0aW5nL1Bhc3NpbmdRdWFsaWZpZXJUb01ldGhvZENhbGwuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZVNvcnRpbmcvUGFzc2luZ1F1YWxpZmllclRvTWV0aG9kQ2FsbC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM0ZDk4OGEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGVTb3J0aW5nL1Bhc3NpbmdRdWFsaWZpZXJUb01ldGhvZENhbGwuamF2YQpAQCAtMCwwICsxLDExIEBACitjbGFzcyBGb28geworCisgIHZvaWQgcmVnaXN0ZXIoRm9vIHBhcmFtKSB7CisKKyAgfQorCisgIHZvaWQgZm9vKEZvbyBwYXJhbSkgeworICAgIHBhcmFtLnJlZ2lzdGVyKDxjYXJldD4pCisgIH0KKworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZVNvcnRpbmcvUGFzc2luZ1RoaXNUb1VucXVhbGlmaWVkTWV0aG9kQ2FsbC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlU29ydGluZy9QYXNzaW5nVGhpc1RvVW5xdWFsaWZpZWRNZXRob2RDYWxsLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODU0YzIxNAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZVNvcnRpbmcvUGFzc2luZ1RoaXNUb1VucXVhbGlmaWVkTWV0aG9kQ2FsbC5qYXZhCkBAIC0wLDAgKzEsMTEgQEAKK2NsYXNzIEZvbyB7CisKKyAgdm9pZCByZWdpc3RlcihGb28gcGFyYW0pIHsKKworICB9CisKKyAgdm9pZCBmb28oRm9vIHBhcmFtKSB7CisgICAgcmVnaXN0ZXIoPGNhcmV0PikKKyAgfQorCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlU29ydGluZy9QcmVmZXJBY2Nlc3NpYmxlTWVtYmVycy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlU29ydGluZy9QcmVmZXJBY2Nlc3NpYmxlTWVtYmVycy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc3NmQ4YzIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGVTb3J0aW5nL1ByZWZlckFjY2Vzc2libGVNZW1iZXJzLmphdmEKQEAgLTAsMCArMSwxMiBAQAorY2xhc3MgRm9vIHsKKyAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgRm9vIEFfUFJJVkFURTsKKyAgQERlcHJlY2F0ZWQgcHVibGljIHN0YXRpYyBmaW5hbCBGb28gQl9ERVBSRUNBVEVEOworICBwdWJsaWMgc3RhdGljIGZpbmFsIEZvbyBDX05PUk1BTDsKKworfQorCitjbGFzcyBCYXIgeworICB7CisgICAgRm9vIGEgPSA8Y2FyZXQ+CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGVTb3J0aW5nL1ByZWZlckNvbGxlY3Rpb25zRW1wdHlMaXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGVTb3J0aW5nL1ByZWZlckNvbGxlY3Rpb25zRW1wdHlMaXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGI2OTIwYwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZVNvcnRpbmcvUHJlZmVyQ29sbGVjdGlvbnNFbXB0eUxpc3QuamF2YQpAQCAtMCwwICsxLDEyIEBACitpbXBvcnQgamF2YS51dGlsLkxpc3Q7CisKK3B1YmxpYyBjbGFzcyBBYWFhYWFhIHsKKworICBMaXN0PFN0cmluZz4gbG9jTWV0aG9kKCkge30KKworICAgIHsKKyAgICAgICAgTGlzdDxTdHJpbmc+IGxvY2FsID0gbnVsbDsKKyAgICAgICAgTGlzdDxTdHJpbmc+IGwgPSA8Y2FyZXQ+CisgICAgfQorCit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGVTb3J0aW5nL1ByZWZlckRlbGVnYXRpbmdNZXRob2RQYXJhbXMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZVNvcnRpbmcvUHJlZmVyRGVsZWdhdGluZ01ldGhvZFBhcmFtcy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZkZjhhMTYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGVTb3J0aW5nL1ByZWZlckRlbGVnYXRpbmdNZXRob2RQYXJhbXMuamF2YQpAQCAtMCwwICsxLDcgQEAKK3B1YmxpYyBjbGFzcyBBIHsKKyAgcHJpdmF0ZSBBIG15RGVsZWdhdGU7CisKKyAgcHVibGljIHZvaWQgbWV0aG9kKFN0cmluZyBhYmMsIFN0cmluZyB4eXopIHsKKyAgICBteURlbGVnYXRlLm1ldGhvZChhYmMsIDxjYXJldD4pOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlU29ydGluZy9QcmVmZXJGaWVsZHNUb01ldGhvZHMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZVNvcnRpbmcvUHJlZmVyRmllbGRzVG9NZXRob2RzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGQyZGRjZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZVNvcnRpbmcvUHJlZmVyRmllbGRzVG9NZXRob2RzLmphdmEKQEAgLTAsMCArMSw5IEBACitjbGFzcyBGb28geworICBTdHJpbmcgbXlWZXJzaW9uOworICBTdHJpbmcgZ2V0VmVyc2lvbigpOworICBTdHJpbmcgZ2V0U2VsZWN0ZWRWZXJzaW9uKCk7CisgIFN0cmluZyBjYWxjdWxhdGVWZXJzaW9uKCk7CisgIHsKKyAgICBTdHJpbmcgdmVyc2lvbiA9IDxjYXJldD4KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZVNvcnRpbmcvUHJlZmVySW1wb3J0ZWRDbGFzc2VzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGVTb3J0aW5nL1ByZWZlckltcG9ydGVkQ2xhc3Nlcy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBkNzNjNDAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGVTb3J0aW5nL1ByZWZlckltcG9ydGVkQ2xhc3Nlcy5qYXZhCkBAIC0wLDAgKzEsOCBAQAoraW1wb3J0IGphdmF4LnN3aW5nLkpQYW5lbDsKKworcHVibGljIGNsYXNzIEZvb0JlYW4zIGV4dGVuZHMgamF2YXguc3dpbmcuSkNvbXBvbmVudCB7CisKKyAgICB7CisgICAgICAgIGFkZChuZXcgPGNhcmV0PikKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlU29ydGluZy9QcmVmZXJNYXRjaGVkV29yZHMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZVNvcnRpbmcvUHJlZmVyTWF0Y2hlZFdvcmRzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2U0MDIxOAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZVNvcnRpbmcvUHJlZmVyTWF0Y2hlZFdvcmRzLmphdmEKQEAgLTAsMCArMSw4IEBACitwdWJsaWMgY2xhc3MgWlpaWlpaIHsKKyAgICBwdWJsaWMgU3RyaW5nIGdldFRpdGxlKCkgeyB9CisgICAgcHJpdmF0ZSBzdGF0aWMgU3RyaW5nIGdldFZlcnNpb25TdHJpbmcoaW50IGEpIHt9CisKKyAgICBwdWJsaWMgU3RyaW5nIGdldERlZmF1bHRWZXJzaW9uKCkgeworICAgICAgICByZXR1cm4gPGNhcmV0PgorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGVTb3J0aW5nL1ByZWZlck5lc3RlZENsYXNzZXMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZVNvcnRpbmcvUHJlZmVyTmVzdGVkQ2xhc3Nlcy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJkZjcwYTIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGVTb3J0aW5nL1ByZWZlck5lc3RlZENsYXNzZXMuamF2YQpAQCAtMCwwICsxLDggQEAKK3B1YmxpYyBjbGFzcyBGb29CZWFuMyBleHRlbmRzIGphdmF4LnN3aW5nLkpDb21wb25lbnQgeworCisgICAgeworICAgICAgICBhZGQobmV3IDxjYXJldD4pCisgICAgfQorCisgICAgcHJpdmF0ZSBjbGFzcyBOZXN0ZWRDbGFzcyBleHRlbmRzIEZvb0JlYW4zIHt9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlU29ydGluZy9QcmVmZXJOb25SZWN1cnNpdmVNZXRob2RQYXJhbXMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZVNvcnRpbmcvUHJlZmVyTm9uUmVjdXJzaXZlTWV0aG9kUGFyYW1zLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2IxNWFkNwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZVNvcnRpbmcvUHJlZmVyTm9uUmVjdXJzaXZlTWV0aG9kUGFyYW1zLmphdmEKQEAgLTAsMCArMSwxMSBAQAorY2xhc3MgRm9vIHsKKyAgRm9vIGZvbyhpbnQgaSwgU3RyaW5nIHMpIHsKKworICB9CisKKyAgRm9vIGZvbyhTdHJpbmcgcykgeworICAgIFN0cmluZyBhOworICAgIGludCBiOworICAgIHJldHVybiBmb28oPGNhcmV0PikKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZVNvcnRpbmcvUHJlZmVyT3RoZXJHZXR0ZXJJblNldHRlckNhbGwuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZVNvcnRpbmcvUHJlZmVyT3RoZXJHZXR0ZXJJblNldHRlckNhbGwuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NjFjY2UzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlU29ydGluZy9QcmVmZXJPdGhlckdldHRlckluU2V0dGVyQ2FsbC5qYXZhCkBAIC0wLDAgKzEsMTMgQEAKK3B1YmxpYyBjbGFzcyBBYWFhYWFhIHsKKyAgaW50IGNvbG9yOworCisgIHZvaWQgc2V0Q29sb3IoaW50IGNvbG9yKSB7fQorICBpbnQgZ2V0Q29sb3IoKSB7fQorICBpbnQgZ2V0Wm9vQ29sb3IoKSB7fQorCisgIHZvaWQgZm9vKEFhYWFhYWEgYSkgeworICAgIHNldENvbG9yKGEuPGNhcmV0Pik7CisgIH0KKworCit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGVTb3J0aW5nL1ByZWZlclBhcmFtZXRlcnNUb0dldHRlcnMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZVNvcnRpbmcvUHJlZmVyUGFyYW1ldGVyc1RvR2V0dGVycy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZhMTY1MzUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGVTb3J0aW5nL1ByZWZlclBhcmFtZXRlcnNUb0dldHRlcnMuamF2YQpAQCAtMCwwICsxLDE2IEBACitjbGFzcyBUIHsKKyAgICBJIGxhc3RJOworICAgIEkgZ2V0TGFzdEkoKSB7IHJldHVybiBsYXN0STsgfQorCisgICAgdm9pZCBzZXRMYXN0SShJIGEpIHsKKyAgICAgICAgbGFzdEkgPSA8Y2FyZXQ+CisgICAgfQorfQorCitjbGFzcyBJIHsKKyAgICBzdGF0aWMgZmluYWwgSSBfMSA9IG5ldyBJKCk7CisKKyAgICBzdGF0aWMgSSB2YWx1ZU9mKFN0cmluZyBzdGgpIHsKKyAgICAgICAgcmV0dXJuIG51bGw7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZVNvcnRpbmcvUHJlZmVyU2FtZU5hbWVkTWV0aG9kcy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlU29ydGluZy9QcmVmZXJTYW1lTmFtZWRNZXRob2RzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDNkMTAwMwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZVNvcnRpbmcvUHJlZmVyU2FtZU5hbWVkTWV0aG9kcy5qYXZhCkBAIC0wLDAgKzEsMTUgQEAKK2NsYXNzIEdvbyB7CisgICAgaW50IGJvbygpIHt9CisgICAgaW50IGRvbygpIHt9CisgICAgaW50IGZvbygpIHt9Cit9CisKK2NsYXNzIEZvb29vIHsKKyAgICBHb28gZzsKKworICAgIGludCBmb28oKSB7CisgICAgICAgIHJldHVybiBnLjxjYXJldD4KKyAgICB9CisKK30KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlU29ydGluZy9QcmVmZXJyZWRCeU5hbWVEb250Q2hhbmdlU3RhdGlzdGljcy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlU29ydGluZy9QcmVmZXJyZWRCeU5hbWVEb250Q2hhbmdlU3RhdGlzdGljcy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE1OTFiYjYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGVTb3J0aW5nL1ByZWZlcnJlZEJ5TmFtZURvbnRDaGFuZ2VTdGF0aXN0aWNzLmphdmEKQEAgLTAsMCArMSwxMiBAQAorY2xhc3MgRm9vIHsKKyAgYm9vbGVhbiBmb287CisgIGJvb2xlYW4gYmFyOworCisgIHsKKyAgICBmb28oZjxjYXJldD4pCisgIH0KKworICB2b2lkIGZvbyhib29sZWFuIGZvbywgYm9vbGVhbiBiYXIpIHsKKyAgfQorCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlU29ydGluZy9TbWFydENvbGxlY3Rpb25zLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGVTb3J0aW5nL1NtYXJ0Q29sbGVjdGlvbnMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMWRhNGEwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlU29ydGluZy9TbWFydENvbGxlY3Rpb25zLmphdmEKQEAgLTAsMCArMSwxMCBAQAorcHVibGljIGNsYXNzIEZvbyB7CisKKyAgICB7CisgICAgICAgIFN0cmluZyBzOworICAgICAgICBPYmplY3QgbzsKKyAgICAgICAgamF2YS51dGlsLkxpc3Q8U3RyaW5nPiBsaXN0OworICAgICAgICBsaXN0LmNvbnRhaW5zKDxjYXJldD4pCisgICAgfQorCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlU29ydGluZy9TbWFydENvbGxlY3Rpb25zTmV3LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGVTb3J0aW5nL1NtYXJ0Q29sbGVjdGlvbnNOZXcuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNzZmNjM5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlU29ydGluZy9TbWFydENvbGxlY3Rpb25zTmV3LmphdmEKQEAgLTAsMCArMSwxMCBAQAorcHVibGljIGFic3RyYWN0IGNsYXNzIEZvbyB7CisKKyAgIHByaXZhdGUgY2xhc3MgQmFyIGV4dGVuZHMgRm9vIHt9CisKKyAgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgamF2YS51dGlsLkxpc3Q8Rm9vPiBsaXN0OworICAgICAgICBsaXN0LmNvbnRhaW5zKG5ldyA8Y2FyZXQ+KQorICAgIH0KKworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZVNvcnRpbmcvU21hcnRFcXVhbHMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZVNvcnRpbmcvU21hcnRFcXVhbHMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMTJhYmYxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlU29ydGluZy9TbWFydEVxdWFscy5qYXZhCkBAIC0wLDAgKzEsOSBAQAorcHVibGljIGNsYXNzIEZvbyB7CisKKyAgICB7CisgICAgICAgIFN0cmluZyBzOworICAgICAgICBPYmplY3QgbzsKKyAgICAgICAgbmV3IFN0cmluZygpLmVxdWFscyg8Y2FyZXQ+KQorICAgIH0KKworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZVNvcnRpbmcvU21hcnRFcXVhbHMyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGVTb3J0aW5nL1NtYXJ0RXF1YWxzMi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgxYmZkMDYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGVTb3J0aW5nL1NtYXJ0RXF1YWxzMi5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKK3B1YmxpYyBjbGFzcyBGb28geworCisgICAgeworICAgICAgICBTdHJpbmcgczsKKyAgICAgICAgRm9vIGZvbzsKKyAgICAgICAgT2JqZWN0IG87CisgICAgICAgIG5ldyBGb28oKS5lcXVhbHMoPGNhcmV0PikKKyAgICB9CisKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGVTb3J0aW5nL1NtYXJ0RXF1YWxzMy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlU29ydGluZy9TbWFydEVxdWFsczMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZWJmNzc0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlU29ydGluZy9TbWFydEVxdWFsczMuamF2YQpAQCAtMCwwICsxLDEwIEBACitwdWJsaWMgY2xhc3MgRm9vIHsKKworICAgIHsKKyAgICAgICAgU3RyaW5nIGE7CisgICAgICAgIEZvbyBiOworICAgICAgICBPYmplY3QgejsKKyAgICAgICAgZXF1YWxzKDxjYXJldD4pCisgICAgfQorCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlU29ydGluZy9TbWFydEVxdWFsc05ldy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlU29ydGluZy9TbWFydEVxdWFsc05ldy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmViNWNkOTcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGVTb3J0aW5nL1NtYXJ0RXF1YWxzTmV3LmphdmEKQEAgLTAsMCArMSw5IEBACitwdWJsaWMgYWJzdHJhY3QgY2xhc3MgRm9vIHsKKworICAgcHJpdmF0ZSBjbGFzcyBCYXIgZXh0ZW5kcyBGb28ge30KKworICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICBuZXcgRm9vKCkuZXF1YWxzKG5ldyA8Y2FyZXQ+KQorICAgIH0KKworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZVNvcnRpbmcvU21hcnRFcXVhbHNOZXcyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGVTb3J0aW5nL1NtYXJ0RXF1YWxzTmV3Mi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIyMTZiM2QKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGVTb3J0aW5nL1NtYXJ0RXF1YWxzTmV3Mi5qYXZhCkBAIC0wLDAgKzEsNyBAQAorcHVibGljIGFic3RyYWN0IGNsYXNzIEZvbyB7CisKKyAgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgdGhpcy5lcXVhbHMobmV3IDxjYXJldD4pCisgICAgfQorCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlU29ydGluZy9TdGF0aXN0aWNzQWZmZWN0c05vblByZWZlcmFibGVFeHBlY3RlZEl0ZW1zLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGVTb3J0aW5nL1N0YXRpc3RpY3NBZmZlY3RzTm9uUHJlZmVyYWJsZUV4cGVjdGVkSXRlbXMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMzdlNzZiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc21hcnRUeXBlU29ydGluZy9TdGF0aXN0aWNzQWZmZWN0c05vblByZWZlcmFibGVFeHBlY3RlZEl0ZW1zLmphdmEKQEAgLTAsMCArMSwzIEBACitjbGFzcyBGb28geworICBqYXZhLnV0aWwuTGlzdDxGb28+IHAgPSBuZXcgPGNhcmV0PgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3NtYXJ0VHlwZVNvcnRpbmcvWG1sVGFnR2V0QXR0cmlidXRlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGVTb3J0aW5nL1htbFRhZ0dldEF0dHJpYnV0ZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZlMzBhZDYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zbWFydFR5cGVTb3J0aW5nL1htbFRhZ0dldEF0dHJpYnV0ZS5qYXZhCkBAIC0wLDAgKzEsMTEgQEAKK2NsYXNzIEZvbyB7CisgIFN0cmluZyBnZXRBdHRyaWJ1dGVWYWx1ZShTdHJpbmcgcyk7CisgIFN0cmluZyBnZXROYW1lc3BhY2UoKTsKK30KKworY2xhc3MgQmFyIHsKKyAgU3RyaW5nIGdldEF0dHJpYnV0ZSgpIHsKKyAgICBGb28gZjsKKyAgICByZXR1cm4gZi48Y2FyZXQ+CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zdHlsZS9BZnRlck5ldzE1LW91dC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc3R5bGUvQWZ0ZXJOZXcxNS1vdXQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZDQzZDVlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc3R5bGUvQWZ0ZXJOZXcxNS1vdXQuamF2YQpAQCAtMCwwICsxLDEyIEBACitpbXBvcnQgamF2YS5pby5GaWxlOworaW1wb3J0IGphdmEuaW8uRmlsZW5hbWVGaWx0ZXI7CisKK2NsYXNzIEEgeworICB7CisgICAgbmV3IGphdmEuaW8uRmlsZSgiYWFhIikubGlzdChuZXcgRmlsZW5hbWVGaWx0ZXIoKSB7CisgICAgICAgIHB1YmxpYyBib29sZWFuIGFjY2VwdChGaWxlIGRpciwgU3RyaW5nIG5hbWUpIHsKKyAgICAgICAgICAgIDxzZWxlY3Rpb24+cmV0dXJuIGZhbHNlOyAgLy9UbyBjaGFuZ2UgYm9keSBvZiBpbXBsZW1lbnRlZCBtZXRob2RzIHVzZSBGaWxlIHwgU2V0dGluZ3MgfCBGaWxlIFRlbXBsYXRlcy48L3NlbGVjdGlvbj4KKyAgICAgICAgfQorICAgIH0pOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc3R5bGUvQWZ0ZXJOZXcxNS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc3R5bGUvQWZ0ZXJOZXcxNS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIyNDRlODYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zdHlsZS9BZnRlck5ldzE1LmphdmEKQEAgLTAsMCArMSw1IEBACitjbGFzcyBBIHsKKyAgeworICAgIG5ldyBqYXZhLmlvLkZpbGUoImFhYSIpLmxpc3QobmV3IDxjYXJldD4pOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc3R5bGUvYWZ0ZXIxLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zdHlsZS9hZnRlcjEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZThmMGViCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc3R5bGUvYWZ0ZXIxLmphdmEKQEAgLTAsMCArMSwxMCBAQAorY2xhc3MgQXsKKyBpbnRlcmZhY2UgQTxUPnt9CisgY2xhc3MgTXlHZW5lcmljQ2xhc3MxPFQ+IGltcGxlbWVudHMgQTxUPnt9CisgY2xhc3MgTXlHZW5lcmljQ2xhc3MyPFQ+IGltcGxlbWVudHMgQTxUPnt9CisgY2xhc3MgTXlHZW5lcmljQ2xhc3MzPFQ+IGltcGxlbWVudHMgQTxUPnt9CisKKyB7CisgICBBPFN0cmluZz4gYSA9IG5ldyBNeUdlbmVyaWNDbGFzczI8U3RyaW5nPigpOzxjYXJldD4KKyB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zdHlsZS9hZnRlcjEwLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zdHlsZS9hZnRlcjEwLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTYxZmU4ZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3N0eWxlL2FmdGVyMTAuamF2YQpAQCAtMCwwICsxLDEyIEBACitjbGFzcyBBeworIGNsYXNzIENvbnN0YW50c3sKKyAgcHVibGljIHN0YXRpYyBmaW5hbCBDb25zdGFudHMgeHh4eDsKKyB9CisKKyBwdWJsaWMgdm9pZCBmb28oQ29uc3RhbnRzIHMpe30KKyBwdWJsaWMgdm9pZCBmb28oYm9vbGVhbiBib2wpe30KKworIHsKKyAgZm9vKENvbnN0YW50cy54eHh4KTsKKyB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc3R5bGUvYWZ0ZXIxMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc3R5bGUvYWZ0ZXIxMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFmNTI0NzgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zdHlsZS9hZnRlcjExLmphdmEKQEAgLTAsMCArMSw1IEBACitjbGFzcyBBeworIHsKKyAgU3RyaW5nLkNBU0VfSU5TRU5TSVRJVkVfT1JERVI8Y2FyZXQ+a2FzamRoZ2ZramFzZ2YKKyB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc3R5bGUvYWZ0ZXIxMi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc3R5bGUvYWZ0ZXIxMi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlhNGUzNDQ1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc3R5bGUvYWZ0ZXIxMi5qYXZhCkBAIC0wLDAgKzEsMyBAQAorY2xhc3MgQXsKKyAgU3RyaW5nIHMgPSBuZXcgU3RyaW5nKDxjYXJldD4pO0JsYWgoKQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3N0eWxlL2FmdGVyMTMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3N0eWxlL2FmdGVyMTMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMDRiYmI5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc3R5bGUvYWZ0ZXIxMy5qYXZhCkBAIC0wLDAgKzEsNSBAQAorY2xhc3MgQXsKKyB7CisgbmV3IEEoKS50b1N0cmluZygpPGNhcmV0PjsKKyB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc3R5bGUvYWZ0ZXIxNS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc3R5bGUvYWZ0ZXIxNS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY4MWJlZDgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zdHlsZS9hZnRlcjE1LmphdmEKQEAgLTAsMCArMSw2IEBACitjbGFzcyBBeworeworIFN0cmluZyBzdHI7Cisgc3RyLnRvQ2hhckFycmF5KCk7CisgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3N0eWxlL2FmdGVyMTYuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3N0eWxlL2FmdGVyMTYuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZDRmOGUyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc3R5bGUvYWZ0ZXIxNi5qYXZhCkBAIC0wLDAgKzEsOCBAQAorY2xhc3MgQXsKK3sKK1N0cmluZyBzdHI7CisKK3N0ci5zdWJzdHJpbmcoPGNhcmV0Pik7CitqaGFzZ2ZqaHNkZ2YoKTsKK30KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zdHlsZS9hZnRlcjE3LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zdHlsZS9hZnRlcjE3LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzAxNzA0NwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3N0eWxlL2FmdGVyMTcuamF2YQpAQCAtMCwwICsxLDcgQEAKK2NsYXNzIEF7CisgeworICBmaW5hbCBTdHJpbmcgcGF0aCA9IEJBU0VfUEFUSDsKKyAgcGF0aC50b0NoYXJBcnJheSgpPGNhcmV0PjsKKyAgc2RrZmpzZGtoamZoKCk7CisgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3N0eWxlL2FmdGVyMjEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3N0eWxlL2FmdGVyMjEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mOTM0ZDRmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc3R5bGUvYWZ0ZXIyMS5qYXZhCkBAIC0wLDAgKzEsOSBAQAorcHVibGljIGNsYXNzIEdlbmVyaWNzU21hcnRDYXN0PFQ+eworICBwdWJsaWMgR2VuZXJpY3NTbWFydENhc3QoR2VuZXJpY3NTbWFydENhc3Q8VD4gb3RoZXIpIHt9CisKKyAgcHVibGljIHN0YXRpYyBPYmplY3QgZm9vKCkgeyByZXR1cm4gbnVsbDsgfQorCisgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKKyAgICBHZW5lcmljc1NtYXJ0Q2FzdDxTdHJpbmc+IGJhciA9IG5ldyBHZW5lcmljc1NtYXJ0Q2FzdDxTdHJpbmc+KChHZW5lcmljc1NtYXJ0Q2FzdDxTdHJpbmc+KSBmb28oKSk7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zdHlsZS9hZnRlcjIyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zdHlsZS9hZnRlcjIyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjBhMWE2YQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3N0eWxlL2FmdGVyMjIuamF2YQpAQCAtMCwwICsxLDUgQEAKK2NsYXNzIEF7Cit7CitzeW5jaHJvbml6ZWQoIDxjYXJldD4gKQorfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3N0eWxlL2FmdGVyMy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc3R5bGUvYWZ0ZXIzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWJiZTY5YwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3N0eWxlL2FmdGVyMy5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKK2NsYXNzIEF7CisgIHZvaWQgZm9vKGludCBhKXt9CisgIHZvaWQgZm9vKGludCBhLCBpbnQgYil7fQorCisgIHsKKyAgIGludCBhYWEgPSAwOworCisgICBmb28oYWFhPGNhcmV0PgorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc3R5bGUvYWZ0ZXIzMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc3R5bGUvYWZ0ZXIzMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgxY2ZlMjBiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc3R5bGUvYWZ0ZXIzMS5qYXZhCkBAIC0wLDAgKzEsNiBAQAorY2xhc3MgQXsKKyB7CisgIE9iamVjdCBvYmo7CisgIFN0cmluZyBzID0gKFN0cmluZyApCisgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3N0eWxlL2FmdGVyMzItYS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc3R5bGUvYWZ0ZXIzMi1hLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzc5NTI0OAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3N0eWxlL2FmdGVyMzItYS5qYXZhCkBAIC0wLDAgKzEsNyBAQAorY2xhc3MgQXsKKyB7CisgIE9iamVjdCBvYmo7CisgIFN0cmluZyBzID0gbnVsbDsKKyAgcy5zdWJzdHJpbmcgKCA8Y2FyZXQ+ICkKKyB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc3R5bGUvYWZ0ZXIzMi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc3R5bGUvYWZ0ZXIzMi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgxNGQ2YWEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zdHlsZS9hZnRlcjMyLmphdmEKQEAgLTAsMCArMSw3IEBACitjbGFzcyBBeworIHsKKyAgT2JqZWN0IG9iajsKKyAgU3RyaW5nIHMgPSBudWxsOworICBzLnN1YnN0cmluZyAoPGNhcmV0PikKKyB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc3R5bGUvYWZ0ZXIzMy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc3R5bGUvYWZ0ZXIzMy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI5OTU3NzcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zdHlsZS9hZnRlcjMzLmphdmEKQEAgLTAsMCArMSwxMyBAQAorY2xhc3MgQXsKKyBwdWJsaWMgc3RhdGljIGZpbmFsIEEgT05FID0gbmV3IEEoKTsKKyBwdWJsaWMgc3RhdGljIGZpbmFsIEEgVFdPID0gbmV3IEEoKTsKKyBwdWJsaWMgc3RhdGljIGZpbmFsIEEgVEhSRUUgPSBuZXcgQSgpOworfQorCitjbGFzcyBCeworCisgc3RhdGljIHZvaWQgZm9vKCl7fQorIHsKKyAgQSBhID0gQS5PTkU7Qi5mb28oKTsnCisgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc3R5bGUvYWZ0ZXIzNC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc3R5bGUvYWZ0ZXIzNC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ0Y2M1M2YKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zdHlsZS9hZnRlcjM0LmphdmEKQEAgLTAsMCArMSw1IEBACitjbGFzcyBBeworIHsKKyBGaWxlPGNhcmV0PgorIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zdHlsZS9hZnRlcjM2LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zdHlsZS9hZnRlcjM2LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzgwNWFmZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3N0eWxlL2FmdGVyMzYuamF2YQpAQCAtMCwwICsxLDcgQEAKK2NsYXNzIEF7CisgLyoqCisgICAqIEBkZXByZWNhdGVkIHVzZSB7QGxpbmsgI2ZvbyhTdHJpbmcsIFN0cmluZyl9CisgICAqLworIHZvaWQgYWFhKCl7fQorIHZvaWQgZm9vKFN0cmluZyBhLCBTdHJpbmcgYil7fQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc3R5bGUvYWZ0ZXIzOC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc3R5bGUvYWZ0ZXIzOC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU3NjA3NmYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zdHlsZS9hZnRlcjM4LmphdmEKQEAgLTAsMCArMSwzIEBACitwdWJsaWMgaW50ZXJmYWNlIFNvbWV0aGluZ0Nvb2x7CisgICAgU29tZXRoaW5nQ29vbCBnZXRTb21ldGhpbmdDb29sPGNhcmV0PgorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc3R5bGUvYWZ0ZXIzOS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc3R5bGUvYWZ0ZXIzOS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlkYmQyY2QKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zdHlsZS9hZnRlcjM5LmphdmEKQEAgLTAsMCArMSwxMiBAQAorY2xhc3MgQXsKKyBwdWJsaWMgc3RhdGljIGZpbmFsIEEgT05FID0gbmV3IEEoKTsKKyBwdWJsaWMgc3RhdGljIGZpbmFsIEEgVFdPID0gbmV3IEEoKTsKKyBwdWJsaWMgc3RhdGljIGZpbmFsIEEgVEhSRUUgPSBuZXcgQSgpOworfQorCitjbGFzcyBCeworCisgc3RhdGljIEEgZm9vKCl7CisgIHJldHVybiBBLk9ORTs8Y2FyZXQ+CisgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc3R5bGUvYWZ0ZXI0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zdHlsZS9hZnRlcjQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMDFhYjEwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc3R5bGUvYWZ0ZXI0LmphdmEKQEAgLTAsMCArMSw4IEBACitjbGFzcyBBeworICB2b2lkIGZvbyhPYmplY3QgYSl7fQorICB2b2lkIGZvbyhPYmplY3QgYSwgaW50IGIpe30KKworICB7CisgICBmb28odGhpczxjYXJldD4KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3N0eWxlL2FmdGVyNi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc3R5bGUvYWZ0ZXI2LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTBkMDY0YQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3N0eWxlL2FmdGVyNi5qYXZhCkBAIC0wLDAgKzEsNSBAQAorY2xhc3MgQXsKKyB7CisgIGJvb2xlYW4gYSA9IEE8Y2FyZXQ+OworIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zdHlsZS9hZnRlcjcuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3N0eWxlL2FmdGVyNy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ1Y2YyZWQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zdHlsZS9hZnRlcjcuamF2YQpAQCAtMCwwICsxLDYgQEAKK2NsYXNzIEF7CisgLyoqCisgKiB7QGxpbmsgU3RyaW5nI2NoYXJBdChpbnQpfSA8Y2FyZXQ+CisgKi8KKyB2b2lkIGZvbygpe30KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zdHlsZS9hZnRlcjguamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3N0eWxlL2FmdGVyOC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQwMDZiN2QKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zdHlsZS9hZnRlcjguamF2YQpAQCAtMCwwICsxLDEyIEBACitjbGFzcyBBeworIGNsYXNzIENvbnN0YW50c3sKKyAgcHVibGljIHN0YXRpYyBmaW5hbCBDb25zdGFudHMgeHh4eDsKKyB9CisKKyBwdWJsaWMgdm9pZCBmb28oQ29uc3RhbnRzIHMpe30KKyBwdWJsaWMgdm9pZCBmb28oYm9vbGVhbiBib2wpe30KKworIHsKKyAgZm9vKENvbnN0YW50cy54eHh4KTs8Y2FyZXQ+CisgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3N0eWxlL2FmdGVyOS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc3R5bGUvYWZ0ZXI5LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTYxZmU4ZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3N0eWxlL2FmdGVyOS5qYXZhCkBAIC0wLDAgKzEsMTIgQEAKK2NsYXNzIEF7CisgY2xhc3MgQ29uc3RhbnRzeworICBwdWJsaWMgc3RhdGljIGZpbmFsIENvbnN0YW50cyB4eHh4OworIH0KKworIHB1YmxpYyB2b2lkIGZvbyhDb25zdGFudHMgcyl7fQorIHB1YmxpYyB2b2lkIGZvbyhib29sZWFuIGJvbCl7fQorCisgeworICBmb28oQ29uc3RhbnRzLnh4eHgpOworIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zdHlsZS9iZWZvcmUxLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zdHlsZS9iZWZvcmUxLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2M4YTIwYQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3N0eWxlL2JlZm9yZTEuamF2YQpAQCAtMCwwICsxLDEwIEBACitjbGFzcyBBeworIGludGVyZmFjZSBBPFQ+e30KKyBjbGFzcyBNeUdlbmVyaWNDbGFzczE8VD4gaW1wbGVtZW50cyBBPFQ+e30KKyBjbGFzcyBNeUdlbmVyaWNDbGFzczI8VD4gaW1wbGVtZW50cyBBPFQ+e30KKyBjbGFzcyBNeUdlbmVyaWNDbGFzczM8VD4gaW1wbGVtZW50cyBBPFQ+e30KKworIHsKKyAgIEE8U3RyaW5nPiBhID0gbmV3IDxjYXJldD5hc2pkZ2poPE9iamVjdD4KKyB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zdHlsZS9iZWZvcmUxMC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc3R5bGUvYmVmb3JlMTAuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43OTdmMGQ2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc3R5bGUvYmVmb3JlMTAuamF2YQpAQCAtMCwwICsxLDEyIEBACitjbGFzcyBBeworIGNsYXNzIENvbnN0YW50c3sKKyAgcHVibGljIHN0YXRpYyBmaW5hbCBDb25zdGFudHMgeHh4eDsKKyB9CisKKyBwdWJsaWMgdm9pZCBmb28oQ29uc3RhbnRzIHMpe30KKyBwdWJsaWMgdm9pZCBmb28oYm9vbGVhbiBib2wpe30KKworIHsKKyAgZm9vKDxjYXJldD5lcXVhbHMpOworIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zdHlsZS9iZWZvcmUxMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc3R5bGUvYmVmb3JlMTEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMjU4NWIwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc3R5bGUvYmVmb3JlMTEuamF2YQpAQCAtMCwwICsxLDUgQEAKK2NsYXNzIEF7CisgeworICBTdHJpbmcuQzxjYXJldD5rYXNqZGhnZmtqYXNnZgorIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zdHlsZS9iZWZvcmUxMi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc3R5bGUvYmVmb3JlMTIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZDkzNWQ3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc3R5bGUvYmVmb3JlMTIuamF2YQpAQCAtMCwwICsxLDMgQEAKK2NsYXNzIEF7CisgIFN0cmluZyBzID0gbmV3IDxjYXJldD5CbGFoKCkKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zdHlsZS9iZWZvcmUxMy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc3R5bGUvYmVmb3JlMTMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kOTNmZDZhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc3R5bGUvYmVmb3JlMTMuamF2YQpAQCAtMCwwICsxLDUgQEAKK2NsYXNzIEF7CisgeworIG5ldyBBKCkudG9TdHJpbmc8Y2FyZXQ+KCk7CisgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3N0eWxlL2JlZm9yZTE1LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zdHlsZS9iZWZvcmUxNS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM3ZjRlZjUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zdHlsZS9iZWZvcmUxNS5qYXZhCkBAIC0wLDAgKzEsNiBAQAorY2xhc3MgQXsKK3sKKyBTdHJpbmcgc3RyOworIHN0ci50bzxjYXJldD5zdWJzdHJpbmcoKTsKKyB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc3R5bGUvYmVmb3JlMTYuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3N0eWxlL2JlZm9yZTE2LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWNlOTAyNQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3N0eWxlL2JlZm9yZTE2LmphdmEKQEAgLTAsMCArMSw4IEBACitjbGFzcyBBeworeworU3RyaW5nIHN0cjsKKworc3RyLnN1YjxjYXJldD50b1N0cmluZygpOworamhhc2dmamhzZGdmKCk7Cit9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc3R5bGUvYmVmb3JlMTcuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3N0eWxlL2JlZm9yZTE3LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmE1MDFlZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3N0eWxlL2JlZm9yZTE3LmphdmEKQEAgLTAsMCArMSw3IEBACitjbGFzcyBBeworIHsKKyAgZmluYWwgU3RyaW5nIHBhdGggPSBCQVNFX1BBVEg7CisgIHBhdGgudG88Y2FyZXQ+c3ViYnN0cmluZygpOworICBzZGtmanNka2hqZmgoKTsKKyB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc3R5bGUvYmVmb3JlMjEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3N0eWxlL2JlZm9yZTIxLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmJhZWY4OAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3N0eWxlL2JlZm9yZTIxLmphdmEKQEAgLTAsMCArMSw5IEBACitwdWJsaWMgY2xhc3MgR2VuZXJpY3NTbWFydENhc3Q8VD57CisgIHB1YmxpYyBHZW5lcmljc1NtYXJ0Q2FzdChHZW5lcmljc1NtYXJ0Q2FzdDxUPiBvdGhlcikge30KKworICBwdWJsaWMgc3RhdGljIE9iamVjdCBmb28oKSB7IHJldHVybiBudWxsOyB9CisKKyAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgeworICAgIEdlbmVyaWNzU21hcnRDYXN0PFN0cmluZz4gYmFyID0gbmV3IEdlbmVyaWNzU21hcnRDYXN0PFN0cmluZz4oKDxjYXJldD4pIGZvbygpKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3N0eWxlL2JlZm9yZTIyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zdHlsZS9iZWZvcmUyMi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZhZDQ3MmEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zdHlsZS9iZWZvcmUyMi5qYXZhCkBAIC0wLDAgKzEsNSBAQAorY2xhc3MgQXsKK3sKK3N5bmNoPGNhcmV0PgorfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3N0eWxlL2JlZm9yZTMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3N0eWxlL2JlZm9yZTMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMjAzOTU4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc3R5bGUvYmVmb3JlMy5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKK2NsYXNzIEF7CisgIHZvaWQgZm9vKGludCBhKXt9CisgIHZvaWQgZm9vKGludCBhLCBpbnQgYil7fQorCisgIHsKKyAgIGludCBhYWEgPSAwOworCisgICBmb28oYWE8Y2FyZXQ+CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zdHlsZS9iZWZvcmUzMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc3R5bGUvYmVmb3JlMzEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kY2M1NmZhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc3R5bGUvYmVmb3JlMzEuamF2YQpAQCAtMCwwICsxLDYgQEAKK2NsYXNzIEF7CisgeworICBPYmplY3Qgb2JqOworICBTdHJpbmcgcyA9ICg8Y2FyZXQ+KQorIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zdHlsZS9iZWZvcmUzMi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc3R5bGUvYmVmb3JlMzIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNzdjZDUyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc3R5bGUvYmVmb3JlMzIuamF2YQpAQCAtMCwwICsxLDcgQEAKK2NsYXNzIEF7CisgeworICBPYmplY3Qgb2JqOworICBTdHJpbmcgcyA9IG51bGw7CisgIHMuc3Vic3RyPGNhcmV0PgorIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zdHlsZS9iZWZvcmUzMy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc3R5bGUvYmVmb3JlMzMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNjQ1MmNmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc3R5bGUvYmVmb3JlMzMuamF2YQpAQCAtMCwwICsxLDEzIEBACitjbGFzcyBBeworIHB1YmxpYyBzdGF0aWMgZmluYWwgQSBPTkUgPSBuZXcgQSgpOworIHB1YmxpYyBzdGF0aWMgZmluYWwgQSBUV08gPSBuZXcgQSgpOworIHB1YmxpYyBzdGF0aWMgZmluYWwgQSBUSFJFRSA9IG5ldyBBKCk7Cit9CisKK2NsYXNzIEJ7CisKKyBzdGF0aWMgdm9pZCBmb28oKXt9CisgeworICBBIGEgPSA8Y2FyZXQ+Qi5mb28oKTsnCisgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc3R5bGUvYmVmb3JlMzQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3N0eWxlL2JlZm9yZTM0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDRjYzUzZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3N0eWxlL2JlZm9yZTM0LmphdmEKQEAgLTAsMCArMSw1IEBACitjbGFzcyBBeworIHsKKyBGaWxlPGNhcmV0PgorIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zdHlsZS9iZWZvcmUzNS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc3R5bGUvYmVmb3JlMzUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZTRhZDM3ZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3N0eWxlL2JlZm9yZTM1LmphdmEKQEAgLTAsMCArMSwzIEBACitjbGFzcyBBeworYWEKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zdHlsZS9iZWZvcmUzNi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc3R5bGUvYmVmb3JlMzYuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNmI4M2JkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc3R5bGUvYmVmb3JlMzYuamF2YQpAQCAtMCwwICsxLDcgQEAKK2NsYXNzIEF7CisgLyoqCisgICAqIEBkZXByZWNhdGVkIHVzZSB7QGxpbmsgI2Y8Y2FyZXQ+YWFhKCl9CisgICAqLworIHZvaWQgYWFhKCl7fQorIHZvaWQgZm9vKFN0cmluZyBhLCBTdHJpbmcgYil7fQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc3R5bGUvYmVmb3JlMzguamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3N0eWxlL2JlZm9yZTM4LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2M2OGEyZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3N0eWxlL2JlZm9yZTM4LmphdmEKQEAgLTAsMCArMSwzIEBACitwdWJsaWMgaW50ZXJmYWNlIFNvbWV0aGluZ0Nvb2x7CisgICAgU29tZXRoaW5nQ29vbCBnZXRTb21lPGNhcmV0PgorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc3R5bGUvYmVmb3JlMzkuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3N0eWxlL2JlZm9yZTM5LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjI1MWEyYwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3N0eWxlL2JlZm9yZTM5LmphdmEKQEAgLTAsMCArMSwxMiBAQAorY2xhc3MgQXsKKyBwdWJsaWMgc3RhdGljIGZpbmFsIEEgT05FID0gbmV3IEEoKTsKKyBwdWJsaWMgc3RhdGljIGZpbmFsIEEgVFdPID0gbmV3IEEoKTsKKyBwdWJsaWMgc3RhdGljIGZpbmFsIEEgVEhSRUUgPSBuZXcgQSgpOworfQorCitjbGFzcyBCeworCisgc3RhdGljIEEgZm9vKCl7CisgIHJldHVybiA8Y2FyZXQ+OworIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3N0eWxlL2JlZm9yZTQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3N0eWxlL2JlZm9yZTQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZDllMDY1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc3R5bGUvYmVmb3JlNC5qYXZhCkBAIC0wLDAgKzEsOCBAQAorY2xhc3MgQXsKKyAgdm9pZCBmb28oT2JqZWN0IGEpe30KKyAgdm9pZCBmb28oT2JqZWN0IGEsIGludCBiKXt9CisKKyAgeworICAgZm9vKHRoPGNhcmV0PgorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc3R5bGUvYmVmb3JlNS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc3R5bGUvYmVmb3JlNS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY3MzU2ZDkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zdHlsZS9iZWZvcmU1LmphdmEKQEAgLTAsMCArMSw2IEBACitjbGFzcyBBeworIHsKKyBTdHJpbmcgeHh4eDsKKyBTdHJpbmcgYSA9IDxjYXJldD4KKyB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc3R5bGUvYmVmb3JlNi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc3R5bGUvYmVmb3JlNi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY0Y2JlMDgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zdHlsZS9iZWZvcmU2LmphdmEKQEAgLTAsMCArMSw1IEBACitjbGFzcyBBeworIHsKKyAgYm9vbGVhbiBhID0gQTxjYXJldD5mYWxzZTsKKyB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc3R5bGUvYmVmb3JlNy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc3R5bGUvYmVmb3JlNy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU5YmZkMmMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zdHlsZS9iZWZvcmU3LmphdmEKQEAgLTAsMCArMSw2IEBACitjbGFzcyBBeworIC8qKgorICoge0BsaW5rIFN0cmluZyM8Y2FyZXQ+CisgKi8KKyB2b2lkIGZvbygpe30KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zdHlsZS9iZWZvcmU4LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zdHlsZS9iZWZvcmU4LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2Y4YjE5MQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3N0eWxlL2JlZm9yZTguamF2YQpAQCAtMCwwICsxLDEyIEBACitjbGFzcyBBeworIGNsYXNzIENvbnN0YW50c3sKKyAgcHVibGljIHN0YXRpYyBmaW5hbCBDb25zdGFudHMgeHh4eDsKKyB9CisKKyBwdWJsaWMgdm9pZCBmb28oQ29uc3RhbnRzIHMpe30KKyBwdWJsaWMgdm9pZCBmb28oYm9vbGVhbiBib2wpe30KKworIHsKKyAgZm9vKDxjYXJldD50cnVlKTsKKyB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc3R5bGUvYmVmb3JlOS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vc3R5bGUvYmVmb3JlOS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY1NTVkNmMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi9zdHlsZS9iZWZvcmU5LmphdmEKQEAgLTAsMCArMSwxMiBAQAorY2xhc3MgQXsKKyBjbGFzcyBDb25zdGFudHN7CisgIHB1YmxpYyBzdGF0aWMgZmluYWwgQ29uc3RhbnRzIHh4eHg7CisgfQorCisgcHVibGljIHZvaWQgZm9vKENvbnN0YW50cyBzKXt9CisgcHVibGljIHZvaWQgZm9vKGJvb2xlYW4gYm9sKXt9CisKKyB7CisgIGZvbyg8Y2FyZXQ+ZXF1YWxzKG51bGwpKTsKKyB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vdmFyaWFibGVzL0Fubm90YXRpb25WYWx1ZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vdmFyaWFibGVzL0Fubm90YXRpb25WYWx1ZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdkOGE2MmMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi92YXJpYWJsZXMvQW5ub3RhdGlvblZhbHVlLmphdmEKQEAgLTAsMCArMSwzIEBACitAaW50ZXJmYWNlIFNvbWUgeworICBTdHJpbmcgdjxjYXJldD4KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi92YXJpYWJsZXMvQW5ub3RhdGlvblZhbHVlX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi92YXJpYWJsZXMvQW5ub3RhdGlvblZhbHVlX2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGIyOTA3MAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3ZhcmlhYmxlcy9Bbm5vdGF0aW9uVmFsdWVfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDMgQEAKK0BpbnRlcmZhY2UgU29tZSB7CisgIFN0cmluZyB2YWx1ZSgpPGNhcmV0PgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3ZhcmlhYmxlcy9Db25zdHJ1Y3RvclBhcmFtZXRlck5hbWUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3ZhcmlhYmxlcy9Db25zdHJ1Y3RvclBhcmFtZXRlck5hbWUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MmE3Y2U4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vdmFyaWFibGVzL0NvbnN0cnVjdG9yUGFyYW1ldGVyTmFtZS5qYXZhCkBAIC0wLDAgKzEsNCBAQAorY2xhc3MgQ2FyIHsKKyAgcHJpdmF0ZSBmaW5hbCBTdHJpbmcgY29sb3I7CisgIENhcihTdHJpbmcgY288Y2FyZXQ+eCkgeyB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vdmFyaWFibGVzL0NvbnN0cnVjdG9yUGFyYW1ldGVyTmFtZVdpdGhQcmVmaXguamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3ZhcmlhYmxlcy9Db25zdHJ1Y3RvclBhcmFtZXRlck5hbWVXaXRoUHJlZml4LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzljMjRmYQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3ZhcmlhYmxlcy9Db25zdHJ1Y3RvclBhcmFtZXRlck5hbWVXaXRoUHJlZml4LmphdmEKQEAgLTAsMCArMSw1IEBACitjbGFzcyBDYXIgeworICBwcml2YXRlIGZpbmFsIFN0cmluZyBteUNvbG9yOworICBwcml2YXRlIGZpbmFsIGludCBteUNvbG9yMjsKKyAgQ2FyKFN0cmluZyBwQ288Y2FyZXQ+eCkgeyB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vdmFyaWFibGVzL0R1cGxpY2F0ZVN1Z2dlc3Rpb25zRnJvbVVzYWdlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi92YXJpYWJsZXMvRHVwbGljYXRlU3VnZ2VzdGlvbnNGcm9tVXNhZ2UuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YmIzZWI4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vdmFyaWFibGVzL0R1cGxpY2F0ZVN1Z2dlc3Rpb25zRnJvbVVzYWdlLmphdmEKQEAgLTAsMCArMSwxMSBAQAorcHVibGljIGNsYXNzIEZvbyB7CisKKyAgdm9pZCBiYXIoKSB7CisgICAgQVByZWZlcmVuY2VQb2xpY3kgcDxjYXJldD4gPSAyOworICAgIFN5c3RlbS5vdXQucHJpbnRsbihwb2xpY3kpOworICB9Cit9CisKK2NsYXNzIEFQcmVmZXJlbmNlUG9saWN5IHsKKworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3ZhcmlhYmxlcy9Ob0tleXdvcmRzSW5Gb3JMb29wVmFyaWFibGVOYW1lLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi92YXJpYWJsZXMvTm9LZXl3b3Jkc0luRm9yTG9vcFZhcmlhYmxlTmFtZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdjMDQwODkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi92YXJpYWJsZXMvTm9LZXl3b3Jkc0luRm9yTG9vcFZhcmlhYmxlTmFtZS5qYXZhCkBAIC0wLDAgKzEsMTUgQEAKK2ltcG9ydCBqYXZhLnV0aWwuQXJyYXlMaXN0OworCitwdWJsaWMgY2xhc3MgVGVzdCB7CisgIHsKKworICAgIFJ1bm5hYmxlIHJ1bm5hYmxlID0gbmV3IFJ1bm5hYmxlKCkgeworICAgICAgcHVibGljIHZvaWQgcnVuKCkgeworICAgICAgICBmb3IgKFN0cmluZ0J1ZmZlciA8Y2FyZXQ+IDogbmV3IEFycmF5TGlzdDxTdHJpbmdCdWZmZXI+KCkpIHsKKworICAgICAgICB9CisgICAgICB9CisgICAgfTsKKyAgfQorCit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi92YXJpYWJsZXMvbG9jYWxzL0FycmF5TWV0aG9kTmFtZS1yZXN1bHQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3ZhcmlhYmxlcy9sb2NhbHMvQXJyYXlNZXRob2ROYW1lLXJlc3VsdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRjZmEyNTEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi92YXJpYWJsZXMvbG9jYWxzL0FycmF5TWV0aG9kTmFtZS1yZXN1bHQuamF2YQpAQCAtMCwwICsxLDMgQEAKK2ludGVyZmFjZSBBYmMgeworICAgIFN0cmluZ1tdIGdldFN0cmluZ3M8Y2FyZXQ+Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vdmFyaWFibGVzL2xvY2Fscy9BcnJheU1ldGhvZE5hbWUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3ZhcmlhYmxlcy9sb2NhbHMvQXJyYXlNZXRob2ROYW1lLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzYzMmYyYgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3ZhcmlhYmxlcy9sb2NhbHMvQXJyYXlNZXRob2ROYW1lLmphdmEKQEAgLTAsMCArMSwzIEBACitpbnRlcmZhY2UgQWJjIHsKKyAgICBTdHJpbmdbXSBnZXQ8Y2FyZXQ+Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vdmFyaWFibGVzL2xvY2Fscy9GaWVsZE5hbWVDb21wbGV0aW9uMS1yZXN1bHQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3ZhcmlhYmxlcy9sb2NhbHMvRmllbGROYW1lQ29tcGxldGlvbjEtcmVzdWx0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTBiZmNmOTIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi92YXJpYWJsZXMvbG9jYWxzL0ZpZWxkTmFtZUNvbXBsZXRpb24xLXJlc3VsdC5qYXZhCkBAIC0wLDAgKzEsNCBAQAorY2xhc3MgWmxvYm9nbGFze30KK2NsYXNzIEF7CisgIFpsb2JvZ2xhcyB6bG9ib2dsYXM8Y2FyZXQ+Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vdmFyaWFibGVzL2xvY2Fscy9GaWVsZE5hbWVDb21wbGV0aW9uMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vdmFyaWFibGVzL2xvY2Fscy9GaWVsZE5hbWVDb21wbGV0aW9uMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIxZmQxMGQwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vdmFyaWFibGVzL2xvY2Fscy9GaWVsZE5hbWVDb21wbGV0aW9uMS5qYXZhCkBAIC0wLDAgKzEsNCBAQAorY2xhc3MgWmxvYm9nbGFze30KK2NsYXNzIEF7CisgIFpsb2JvZ2xhcyB6PGNhcmV0PgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3ZhcmlhYmxlcy9sb2NhbHMvRmllbGROYW1lQ29tcGxldGlvbjItcmVzdWx0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi92YXJpYWJsZXMvbG9jYWxzL0ZpZWxkTmFtZUNvbXBsZXRpb24yLXJlc3VsdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg0ZjM0ZWEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi92YXJpYWJsZXMvbG9jYWxzL0ZpZWxkTmFtZUNvbXBsZXRpb24yLXJlc3VsdC5qYXZhCkBAIC0wLDAgKzEsNCBAQAorY2xhc3MgWmxvYm9nbGFze30KK2NsYXNzIEF7CisgIFpsb2JvZ2xhcyBteVpsb2JvZ2xhczxjYXJldD4KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi92YXJpYWJsZXMvbG9jYWxzL0ZpZWxkTmFtZUNvbXBsZXRpb24yLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi92YXJpYWJsZXMvbG9jYWxzL0ZpZWxkTmFtZUNvbXBsZXRpb24yLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWUzYTY0MAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3ZhcmlhYmxlcy9sb2NhbHMvRmllbGROYW1lQ29tcGxldGlvbjIuamF2YQpAQCAtMCwwICsxLDQgQEAKK2NsYXNzIFpsb2JvZ2xhc3t9CitjbGFzcyBBeworICBabG9ib2dsYXMgbXk8Y2FyZXQ+Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vdmFyaWFibGVzL2xvY2Fscy9GaWVsZE5hbWVDb21wbGV0aW9uMy1yZXN1bHQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3ZhcmlhYmxlcy9sb2NhbHMvRmllbGROYW1lQ29tcGxldGlvbjMtcmVzdWx0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2I0OWNmNAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3ZhcmlhYmxlcy9sb2NhbHMvRmllbGROYW1lQ29tcGxldGlvbjMtcmVzdWx0LmphdmEKQEAgLTAsMCArMSw3IEBACitjbGFzcyBabG9ib2dsYXN7fQorY2xhc3MgQiB7CisgIHByaXZhdGUgWmxvYm9nbGFzIG15WmxvYm9nbGFzOworfQorY2xhc3MgQSBleHRlbmRzIEIgeworICBwcml2YXRlIFpsb2JvZ2xhcyBteVpsb2JvZ2xhczxjYXJldD4KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi92YXJpYWJsZXMvbG9jYWxzL0ZpZWxkTmFtZUNvbXBsZXRpb24zLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi92YXJpYWJsZXMvbG9jYWxzL0ZpZWxkTmFtZUNvbXBsZXRpb24zLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGNhYzQwZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3ZhcmlhYmxlcy9sb2NhbHMvRmllbGROYW1lQ29tcGxldGlvbjMuamF2YQpAQCAtMCwwICsxLDcgQEAKK2NsYXNzIFpsb2JvZ2xhc3t9CitjbGFzcyBCIHsKKyAgcHJpdmF0ZSBabG9ib2dsYXMgbXlabG9ib2dsYXM7Cit9CitjbGFzcyBBIGV4dGVuZHMgQiB7CisgIHByaXZhdGUgWmxvYm9nbGFzIG15PGNhcmV0PgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3ZhcmlhYmxlcy9sb2NhbHMvSW5wdXRNZXRob2RFdmVudFZhcmlhYmxlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi92YXJpYWJsZXMvbG9jYWxzL0lucHV0TWV0aG9kRXZlbnRWYXJpYWJsZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJmNDFkMmMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi92YXJpYWJsZXMvbG9jYWxzL0lucHV0TWV0aG9kRXZlbnRWYXJpYWJsZS5qYXZhCkBAIC0wLDAgKzEsNSBAQAorY2xhc3MgVGVzdFNvdXJjZTF7CisgIHB1YmxpYyB2b2lkIGZvbygpeworICAgIGphdmEuYXd0LmV2ZW50LklucHV0TWV0aG9kRXZlbnQgaTxjYXJldD4KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3ZhcmlhYmxlcy9sb2NhbHMvSW5wdXRNZXRob2RFdmVudFZhcmlhYmxlX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi92YXJpYWJsZXMvbG9jYWxzL0lucHV0TWV0aG9kRXZlbnRWYXJpYWJsZV9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY2MmVhYjMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi92YXJpYWJsZXMvbG9jYWxzL0lucHV0TWV0aG9kRXZlbnRWYXJpYWJsZV9hZnRlci5qYXZhCkBAIC0wLDAgKzEsNSBAQAorY2xhc3MgVGVzdFNvdXJjZTF7CisgIHB1YmxpYyB2b2lkIGZvbygpeworICAgIGphdmEuYXd0LmV2ZW50LklucHV0TWV0aG9kRXZlbnQgaW5wdXRNZXRob2RFdmVudDxjYXJldD4KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3ZhcmlhYmxlcy9sb2NhbHMvSW50ZXJmYWNlTWV0aG9kLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi92YXJpYWJsZXMvbG9jYWxzL0ludGVyZmFjZU1ldGhvZC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQwM2MwY2QKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi92YXJpYWJsZXMvbG9jYWxzL0ludGVyZmFjZU1ldGhvZC5qYXZhCkBAIC0wLDAgKzEsNSBAQAoraW50ZXJmYWNlIEZvbyB7CisgIEdvb0JhckRvbyBjYWxjPGNhcmV0PgorfQorCitpbnRlcmZhY2UgR29vQmFyRG9vIHt9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vdmFyaWFibGVzL2xvY2Fscy9Mb2NhbFJlc2VydmVkLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi92YXJpYWJsZXMvbG9jYWxzL0xvY2FsUmVzZXJ2ZWQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YThjMjgwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vdmFyaWFibGVzL2xvY2Fscy9Mb2NhbFJlc2VydmVkLmphdmEKQEAgLTAsMCArMSw1IEBACitwdWJsaWMgY2xhc3MgVGVzdFNvdXJjZTcgeworICAgIHB1YmxpYyB2b2lkIGZvbygpeworICAgICAgICBDbGFzcyBteTxjYXJldD4KKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi92YXJpYWJsZXMvbG9jYWxzL0xvY2FsUmVzZXJ2ZWQyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi92YXJpYWJsZXMvbG9jYWxzL0xvY2FsUmVzZXJ2ZWQyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmI0MTBlMwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3ZhcmlhYmxlcy9sb2NhbHMvTG9jYWxSZXNlcnZlZDIuamF2YQpAQCAtMCwwICsxLDUgQEAKK3B1YmxpYyBjbGFzcyBUZXN0U291cmNlNyB7CisgICAgcHVibGljIHZvaWQgZm9vKCl7CisgICAgICAgIENsYXNzIGM8Y2FyZXQ+CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vdmFyaWFibGVzL2xvY2Fscy9Mb2NhbFJlc2VydmVkX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi92YXJpYWJsZXMvbG9jYWxzL0xvY2FsUmVzZXJ2ZWRfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMDQ0ZDRhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vdmFyaWFibGVzL2xvY2Fscy9Mb2NhbFJlc2VydmVkX2FmdGVyLmphdmEKQEAgLTAsMCArMSw1IEBACitwdWJsaWMgY2xhc3MgVGVzdFNvdXJjZTcgeworICAgIHB1YmxpYyB2b2lkIGZvbygpeworICAgICAgICBDbGFzcyBteUNsYXNzPGNhcmV0PgorICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3ZhcmlhYmxlcy9sb2NhbHMvT2JqZWN0VmFyaWFibGUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3ZhcmlhYmxlcy9sb2NhbHMvT2JqZWN0VmFyaWFibGUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42OWRiMDYyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vdmFyaWFibGVzL2xvY2Fscy9PYmplY3RWYXJpYWJsZS5qYXZhCkBAIC0wLDAgKzEsNSBAQAorY2xhc3MgVGVzdFNvdXJjZTF7CisgIHB1YmxpYyB2b2lkIGZvbygpeworICAgIE9iamVjdCBvYjxjYXJldD4KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3ZhcmlhYmxlcy9sb2NhbHMvT2JqZWN0VmFyaWFibGVfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3ZhcmlhYmxlcy9sb2NhbHMvT2JqZWN0VmFyaWFibGVfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMDViN2I4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vdmFyaWFibGVzL2xvY2Fscy9PYmplY3RWYXJpYWJsZV9hZnRlci5qYXZhCkBAIC0wLDAgKzEsNSBAQAorY2xhc3MgVGVzdFNvdXJjZTF7CisgIHB1YmxpYyB2b2lkIGZvbygpeworICAgIE9iamVjdCBvYmplY3Q8Y2FyZXQ+CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi92YXJpYWJsZXMvbG9jYWxzL1N0cmluZ1ZhcmlhYmxlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi92YXJpYWJsZXMvbG9jYWxzL1N0cmluZ1ZhcmlhYmxlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGYwYzFmNQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3ZhcmlhYmxlcy9sb2NhbHMvU3RyaW5nVmFyaWFibGUuamF2YQpAQCAtMCwwICsxLDUgQEAKK2NsYXNzIFRlc3RTb3VyY2UxeworICBwdWJsaWMgdm9pZCBmb28oKXsKKyAgICBTdHJpbmcgc3Q8Y2FyZXQ+CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi92YXJpYWJsZXMvbG9jYWxzL1N0cmluZ1ZhcmlhYmxlX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi92YXJpYWJsZXMvbG9jYWxzL1N0cmluZ1ZhcmlhYmxlX2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzlhYTViOAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3ZhcmlhYmxlcy9sb2NhbHMvU3RyaW5nVmFyaWFibGVfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDUgQEAKK2NsYXNzIFRlc3RTb3VyY2UxeworICBwdWJsaWMgdm9pZCBmb28oKXsKKyAgICBTdHJpbmcgc3RyaW5nPGNhcmV0PgorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vdmFyaWFibGVzL2xvY2Fscy9UZXN0RmllbGRPdXRPZkFub255bW91cy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vdmFyaWFibGVzL2xvY2Fscy9UZXN0RmllbGRPdXRPZkFub255bW91cy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkwNjg0M2EKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi92YXJpYWJsZXMvbG9jYWxzL1Rlc3RGaWVsZE91dE9mQW5vbnltb3VzLmphdmEKQEAgLTAsMCArMSwxOSBAQAorcGFja2FnZSBjb2RlSW5zaWdodC5jb21wbGV0aW9uLnZhcmlhYmxlcy5sb2NhbHM7CisKKy8qKgorICogQ3JlYXRlZCBieSBJbnRlbGxpSiBJREVBLgorICogVXNlcjogaWdvcmsKKyAqIERhdGU6IE5vdiAyNSwgMjAwMgorICogVGltZTogMzoxMDowOCBQTQorICogVG8gY2hhbmdlIHRoaXMgdGVtcGxhdGUgdXNlIE9wdGlvbnMgfCBGaWxlIFRlbXBsYXRlcy4KKyAqLworcHVibGljIGNsYXNzIFRlc3RTb3VyY2U5IHsKKyAgICBwcml2YXRlIGludCBhRmllbGQ7CisgICAgcHVibGljIHZvaWQgZm9vKCkgeworICAgICAgICBSdW5uYWJsZSByID0gbmV3IFJ1bm5hYmxlKCkgeworICAgICAgICAgICAgcHVibGljIHZvaWQgcnVuKCkgeworICAgICAgICAgICAgICAgaW50IHggPSBhRjxjYXJldD47CisgICAgICAgICAgICB9CisgICAgICAgIH07CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vdmFyaWFibGVzL2xvY2Fscy9UZXN0RmllbGRPdXRPZkFub255bW91c1Jlc3VsdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vdmFyaWFibGVzL2xvY2Fscy9UZXN0RmllbGRPdXRPZkFub255bW91c1Jlc3VsdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRiMGRmOWUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi92YXJpYWJsZXMvbG9jYWxzL1Rlc3RGaWVsZE91dE9mQW5vbnltb3VzUmVzdWx0LmphdmEKQEAgLTAsMCArMSwxOSBAQAorcGFja2FnZSBjb2RlSW5zaWdodC5jb21wbGV0aW9uLnZhcmlhYmxlcy5sb2NhbHM7CisKKy8qKgorICogQ3JlYXRlZCBieSBJbnRlbGxpSiBJREVBLgorICogVXNlcjogaWdvcmsKKyAqIERhdGU6IE5vdiAyNSwgMjAwMgorICogVGltZTogMzoxMDowOCBQTQorICogVG8gY2hhbmdlIHRoaXMgdGVtcGxhdGUgdXNlIE9wdGlvbnMgfCBGaWxlIFRlbXBsYXRlcy4KKyAqLworcHVibGljIGNsYXNzIFRlc3RTb3VyY2U5IHsKKyAgICBwcml2YXRlIGludCBhRmllbGQ7CisgICAgcHVibGljIHZvaWQgZm9vKCkgeworICAgICAgICBSdW5uYWJsZSByID0gbmV3IFJ1bm5hYmxlKCkgeworICAgICAgICAgICAgcHVibGljIHZvaWQgcnVuKCkgeworICAgICAgICAgICAgICAgaW50IHggPSBhRmllbGQ8Y2FyZXQ+OworICAgICAgICAgICAgfQorICAgICAgICB9OworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3ZhcmlhYmxlcy9sb2NhbHMvVGVzdFJlc3VsdDEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3ZhcmlhYmxlcy9sb2NhbHMvVGVzdFJlc3VsdDEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZWNiZjc3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vdmFyaWFibGVzL2xvY2Fscy9UZXN0UmVzdWx0MS5qYXZhCkBAIC0wLDAgKzEsNSBAQAorY2xhc3MgVGVzdFNvdXJjZTF7CisgIHB1YmxpYyB2b2lkIGZvbygpeworICAgIGludCBhYmMgPSAwLCBiYWMgPSBhYmM8Y2FyZXQ+CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi92YXJpYWJsZXMvbG9jYWxzL1Rlc3RSZXN1bHQyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi92YXJpYWJsZXMvbG9jYWxzL1Rlc3RSZXN1bHQyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTAwYTU5MAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3ZhcmlhYmxlcy9sb2NhbHMvVGVzdFJlc3VsdDIuamF2YQpAQCAtMCwwICsxLDE1IEBACitwYWNrYWdlIGNvZGVJbnNpZ2h0LmNvbXBsZXRpb24udmFyaWFibGVzLmxvY2FsczsKKworLyoqCisgKiBDcmVhdGVkIGJ5IEludGVsbGlKIElERUEuCisgKiBVc2VyOiBpZ29yaworICogRGF0ZTogTm92IDI1LCAyMDAyCisgKiBUaW1lOiAzOjA3OjE4IFBNCisgKiBUbyBjaGFuZ2UgdGhpcyB0ZW1wbGF0ZSB1c2UgT3B0aW9ucyB8IEZpbGUgVGVtcGxhdGVzLgorICovCitwdWJsaWMgY2xhc3MgVGVzdFNvdXJjZTIgeworICBpbnQgYWFhID0gMDsKKyAgcHVibGljIHZvaWQgZm9vKCl7CisgICAgaW50IGFiYyA9IDAsIGJhYyA9IGE8Y2FyZXQ+CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3ZhcmlhYmxlcy9sb2NhbHMvVGVzdFJlc3VsdDMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3ZhcmlhYmxlcy9sb2NhbHMvVGVzdFJlc3VsdDMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYjM1ZDIwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vdmFyaWFibGVzL2xvY2Fscy9UZXN0UmVzdWx0My5qYXZhCkBAIC0wLDAgKzEsMTUgQEAKK3BhY2thZ2UgY29kZUluc2lnaHQuY29tcGxldGlvbi52YXJpYWJsZXMubG9jYWxzOworCisvKioKKyAqIENyZWF0ZWQgYnkgSW50ZWxsaUogSURFQS4KKyAqIFVzZXI6IGlnb3JrCisgKiBEYXRlOiBOb3YgMjUsIDIwMDIKKyAqIFRpbWU6IDM6MTA6MDggUE0KKyAqIFRvIGNoYW5nZSB0aGlzIHRlbXBsYXRlIHVzZSBPcHRpb25zIHwgRmlsZSBUZW1wbGF0ZXMuCisgKi8KK3B1YmxpYyBjbGFzcyBUZXN0U291cmNlMyB7CisgICAgaW50IGFhYSA9IDA7CisgICAgcHVibGljIHN0YXRpYyB2b2lkIGZvbygpeworICAgICAgICBpbnQgYWJjID0gMCwgYmFjID0gYWJjPGNhcmV0PgorICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3ZhcmlhYmxlcy9sb2NhbHMvVGVzdFJlc3VsdDQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3ZhcmlhYmxlcy9sb2NhbHMvVGVzdFJlc3VsdDQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYzQxN2Y1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vdmFyaWFibGVzL2xvY2Fscy9UZXN0UmVzdWx0NC5qYXZhCkBAIC0wLDAgKzEsMTggQEAKK3BhY2thZ2UgY29kZUluc2lnaHQuY29tcGxldGlvbi52YXJpYWJsZXMubG9jYWxzOworCisvKioKKyAqIENyZWF0ZWQgYnkgSW50ZWxsaUogSURFQS4KKyAqIFVzZXI6IGlnb3JrCisgKiBEYXRlOiBOb3YgMjUsIDIwMDIKKyAqIFRpbWU6IDM6MTA6MDggUE0KKyAqIFRvIGNoYW5nZSB0aGlzIHRlbXBsYXRlIHVzZSBPcHRpb25zIHwgRmlsZSBUZW1wbGF0ZXMuCisgKi8KK3B1YmxpYyBjbGFzcyBUZXN0U291cmNlNCB7CisgICAgaW50IGFhYSA9IDA7CisgICAgcHVibGljIHN0YXRpYyB2b2lkIGZvbygpeworICAgICAgICBpbnQgYWJjID0gMDsKKyAgICAgICAgY2xhc3MgSW5uZXIxeworICAgICAgICAgICBpbnQgc2JlPWFiYzxjYXJldD4KKyAgICAgICAgfQorICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3ZhcmlhYmxlcy9sb2NhbHMvVGVzdFJlc3VsdDUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3ZhcmlhYmxlcy9sb2NhbHMvVGVzdFJlc3VsdDUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MWM3NzAxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vdmFyaWFibGVzL2xvY2Fscy9UZXN0UmVzdWx0NS5qYXZhCkBAIC0wLDAgKzEsMjIgQEAKK3BhY2thZ2UgY29kZUluc2lnaHQuY29tcGxldGlvbi52YXJpYWJsZXMubG9jYWxzOworCisvKioKKyAqIENyZWF0ZWQgYnkgSW50ZWxsaUogSURFQS4KKyAqIFVzZXI6IGlnb3JrCisgKiBEYXRlOiBOb3YgMjUsIDIwMDIKKyAqIFRpbWU6IDM6MTA6MDggUE0KKyAqIFRvIGNoYW5nZSB0aGlzIHRlbXBsYXRlIHVzZSBPcHRpb25zIHwgRmlsZSBUZW1wbGF0ZXMuCisgKi8KK3B1YmxpYyBjbGFzcyBUZXN0U291cmNlNSB7CisKKyAgICBwdWJsaWMgc3RhdGljIGNsYXNzIGlubmVyeworICAgICAgICBzdGF0aWMgaW50IGFhYSA9IDA7CisgICAgICAgIHB1YmxpYyB2b2lkIGZvbygpeworICAgICAgICAgICAgaW50IGFiYyA9IDA7CisgICAgICAgIH0KKworICAgICAgICBzdGF0aWMgY2xhc3MgSW5uZXIxeworICAgICAgICAgICAgc3RhdGljIGludCBzYmUgPSBhYWE8Y2FyZXQ+CisgICAgICAgIH0KKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi92YXJpYWJsZXMvbG9jYWxzL1Rlc3RSZXN1bHQ2LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi92YXJpYWJsZXMvbG9jYWxzL1Rlc3RSZXN1bHQ2LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTQzNTVkOQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3ZhcmlhYmxlcy9sb2NhbHMvVGVzdFJlc3VsdDYuamF2YQpAQCAtMCwwICsxLDEzIEBACitwYWNrYWdlIGNvZGVJbnNpZ2h0LmNvbXBsZXRpb24udmFyaWFibGVzLmxvY2FsczsKKworLyoqCisgKiBDcmVhdGVkIGJ5IEludGVsbGlKIElERUEuCisgKiBVc2VyOiBpZ29yaworICogRGF0ZTogTm92IDI1LCAyMDAyCisgKiBUaW1lOiAzOjEwOjA4IFBNCisgKiBUbyBjaGFuZ2UgdGhpcyB0ZW1wbGF0ZSB1c2UgT3B0aW9ucyB8IEZpbGUgVGVtcGxhdGVzLgorICovCitwdWJsaWMgY2xhc3MgVGVzdFNvdXJjZTYgeworICAgIGludCBhYWEgPSBiYmI8Y2FyZXQ+CisgICAgaW50IGJiYiA9IDA7Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi92YXJpYWJsZXMvbG9jYWxzL1Rlc3RSZXN1bHQ3LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi92YXJpYWJsZXMvbG9jYWxzL1Rlc3RSZXN1bHQ3LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjA0NWY0YwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3ZhcmlhYmxlcy9sb2NhbHMvVGVzdFJlc3VsdDcuamF2YQpAQCAtMCwwICsxLDE1IEBACitwYWNrYWdlIGNvZGVJbnNpZ2h0LmNvbXBsZXRpb24udmFyaWFibGVzLmxvY2FsczsKKworLyoqCisgKiBDcmVhdGVkIGJ5IEludGVsbGlKIElERUEuCisgKiBVc2VyOiBpZ29yaworICogRGF0ZTogTm92IDI1LCAyMDAyCisgKiBUaW1lOiAzOjEwOjA4IFBNCisgKiBUbyBjaGFuZ2UgdGhpcyB0ZW1wbGF0ZSB1c2UgT3B0aW9ucyB8IEZpbGUgVGVtcGxhdGVzLgorICovCitwdWJsaWMgY2xhc3MgVGVzdFNvdXJjZTcgeworICAgIHB1YmxpYyB2b2lkIGZvbygpeworICAgICAgICBpbnQgYWFhID0gYjxjYXJldD4KKyAgICAgICAgaW50IGJiYiA9IDA7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vdmFyaWFibGVzL2xvY2Fscy9UZXN0UmVzdWx0OC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vdmFyaWFibGVzL2xvY2Fscy9UZXN0UmVzdWx0OC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRjZjI2MzgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi92YXJpYWJsZXMvbG9jYWxzL1Rlc3RSZXN1bHQ4LmphdmEKQEAgLTAsMCArMSwxNSBAQAorcGFja2FnZSBjb2RlSW5zaWdodC5jb21wbGV0aW9uLnZhcmlhYmxlcy5sb2NhbHM7CisKKy8qKgorICogQ3JlYXRlZCBieSBJbnRlbGxpSiBJREVBLgorICogVXNlcjogaWdvcmsKKyAqIERhdGU6IE5vdiAyNSwgMjAwMgorICogVGltZTogMzoxMDowOCBQTQorICogVG8gY2hhbmdlIHRoaXMgdGVtcGxhdGUgdXNlIE9wdGlvbnMgfCBGaWxlIFRlbXBsYXRlcy4KKyAqLworcHVibGljIGNsYXNzIFRlc3RTb3VyY2U4IHsKKyAgICBzdGF0aWMgeworICAgICAgICBpbnQgYWFhID0gYjxjYXJldD4KKyAgICAgICAgaW50IGJiYiA9IDA7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vdmFyaWFibGVzL2xvY2Fscy9UZXN0UmVzdWx0OS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vdmFyaWFibGVzL2xvY2Fscy9UZXN0UmVzdWx0OS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMxZmMwZDUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi92YXJpYWJsZXMvbG9jYWxzL1Rlc3RSZXN1bHQ5LmphdmEKQEAgLTAsMCArMSwxNSBAQAorcGFja2FnZSBjb2RlSW5zaWdodC5jb21wbGV0aW9uLnZhcmlhYmxlcy5sb2NhbHM7CisKKy8qKgorICogQ3JlYXRlZCBieSBJbnRlbGxpSiBJREVBLgorICogVXNlcjogaWdvcmsKKyAqIERhdGU6IE5vdiAyNSwgMjAwMgorICogVGltZTogMzoxMDowOCBQTQorICogVG8gY2hhbmdlIHRoaXMgdGVtcGxhdGUgdXNlIE9wdGlvbnMgfCBGaWxlIFRlbXBsYXRlcy4KKyAqLworcHVibGljIGNsYXNzIFRlc3RTb3VyY2U5IHsKKyAgICBzdGF0aWMgeworICAgICAgICBpbnQgYmJiID0gMDsKKyAgICAgICAgaW50IGFhYSA9IGJiYjxjYXJldD4KKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi92YXJpYWJsZXMvbG9jYWxzL1Rlc3RTb3VyY2UxLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi92YXJpYWJsZXMvbG9jYWxzL1Rlc3RTb3VyY2UxLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjlkZWQxZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3ZhcmlhYmxlcy9sb2NhbHMvVGVzdFNvdXJjZTEuamF2YQpAQCAtMCwwICsxLDUgQEAKK2NsYXNzIFRlc3RTb3VyY2UxeworICBwdWJsaWMgdm9pZCBmb28oKXsKKyAgICBpbnQgYWJjID0gMCwgYmFjID0gYTxjYXJldD4KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3ZhcmlhYmxlcy9sb2NhbHMvVGVzdFNvdXJjZTIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3ZhcmlhYmxlcy9sb2NhbHMvVGVzdFNvdXJjZTIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMDBhNTkwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vdmFyaWFibGVzL2xvY2Fscy9UZXN0U291cmNlMi5qYXZhCkBAIC0wLDAgKzEsMTUgQEAKK3BhY2thZ2UgY29kZUluc2lnaHQuY29tcGxldGlvbi52YXJpYWJsZXMubG9jYWxzOworCisvKioKKyAqIENyZWF0ZWQgYnkgSW50ZWxsaUogSURFQS4KKyAqIFVzZXI6IGlnb3JrCisgKiBEYXRlOiBOb3YgMjUsIDIwMDIKKyAqIFRpbWU6IDM6MDc6MTggUE0KKyAqIFRvIGNoYW5nZSB0aGlzIHRlbXBsYXRlIHVzZSBPcHRpb25zIHwgRmlsZSBUZW1wbGF0ZXMuCisgKi8KK3B1YmxpYyBjbGFzcyBUZXN0U291cmNlMiB7CisgIGludCBhYWEgPSAwOworICBwdWJsaWMgdm9pZCBmb28oKXsKKyAgICBpbnQgYWJjID0gMCwgYmFjID0gYTxjYXJldD4KKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vdmFyaWFibGVzL2xvY2Fscy9UZXN0U291cmNlMy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vdmFyaWFibGVzL2xvY2Fscy9UZXN0U291cmNlMy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM5NThjNWIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi92YXJpYWJsZXMvbG9jYWxzL1Rlc3RTb3VyY2UzLmphdmEKQEAgLTAsMCArMSwxNSBAQAorcGFja2FnZSBjb2RlSW5zaWdodC5jb21wbGV0aW9uLnZhcmlhYmxlcy5sb2NhbHM7CisKKy8qKgorICogQ3JlYXRlZCBieSBJbnRlbGxpSiBJREVBLgorICogVXNlcjogaWdvcmsKKyAqIERhdGU6IE5vdiAyNSwgMjAwMgorICogVGltZTogMzoxMDowOCBQTQorICogVG8gY2hhbmdlIHRoaXMgdGVtcGxhdGUgdXNlIE9wdGlvbnMgfCBGaWxlIFRlbXBsYXRlcy4KKyAqLworcHVibGljIGNsYXNzIFRlc3RTb3VyY2UzIHsKKyAgICBpbnQgYWFhID0gMDsKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgZm9vKCl7CisgICAgICAgIGludCBhYmMgPSAwLCBiYWMgPSBhPGNhcmV0PgorICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3ZhcmlhYmxlcy9sb2NhbHMvVGVzdFNvdXJjZTQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3ZhcmlhYmxlcy9sb2NhbHMvVGVzdFNvdXJjZTQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ODRhODVmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vdmFyaWFibGVzL2xvY2Fscy9UZXN0U291cmNlNC5qYXZhCkBAIC0wLDAgKzEsMTggQEAKK3BhY2thZ2UgY29kZUluc2lnaHQuY29tcGxldGlvbi52YXJpYWJsZXMubG9jYWxzOworCisvKioKKyAqIENyZWF0ZWQgYnkgSW50ZWxsaUogSURFQS4KKyAqIFVzZXI6IGlnb3JrCisgKiBEYXRlOiBOb3YgMjUsIDIwMDIKKyAqIFRpbWU6IDM6MTA6MDggUE0KKyAqIFRvIGNoYW5nZSB0aGlzIHRlbXBsYXRlIHVzZSBPcHRpb25zIHwgRmlsZSBUZW1wbGF0ZXMuCisgKi8KK3B1YmxpYyBjbGFzcyBUZXN0U291cmNlNCB7CisgICAgaW50IGFhYSA9IDA7CisgICAgcHVibGljIHN0YXRpYyB2b2lkIGZvbygpeworICAgICAgICBpbnQgYWJjID0gMDsKKyAgICAgICAgY2xhc3MgSW5uZXIxeworICAgICAgICAgICBpbnQgc2JlPWE8Y2FyZXQ+CisgICAgICAgIH0KKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi92YXJpYWJsZXMvbG9jYWxzL1Rlc3RTb3VyY2U1LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi92YXJpYWJsZXMvbG9jYWxzL1Rlc3RTb3VyY2U1LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmZkNGZkZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3ZhcmlhYmxlcy9sb2NhbHMvVGVzdFNvdXJjZTUuamF2YQpAQCAtMCwwICsxLDIyIEBACitwYWNrYWdlIGNvZGVJbnNpZ2h0LmNvbXBsZXRpb24udmFyaWFibGVzLmxvY2FsczsKKworLyoqCisgKiBDcmVhdGVkIGJ5IEludGVsbGlKIElERUEuCisgKiBVc2VyOiBpZ29yaworICogRGF0ZTogTm92IDI1LCAyMDAyCisgKiBUaW1lOiAzOjEwOjA4IFBNCisgKiBUbyBjaGFuZ2UgdGhpcyB0ZW1wbGF0ZSB1c2UgT3B0aW9ucyB8IEZpbGUgVGVtcGxhdGVzLgorICovCitwdWJsaWMgY2xhc3MgVGVzdFNvdXJjZTUgeworCisgICAgcHVibGljIHN0YXRpYyBjbGFzcyBpbm5lcnsKKyAgICAgICAgc3RhdGljIGludCBhYWEgPSAwOworICAgICAgICBwdWJsaWMgdm9pZCBmb28oKXsKKyAgICAgICAgICAgIGludCBhYmMgPSAwOworICAgICAgICB9CisKKyAgICAgICAgc3RhdGljIGNsYXNzIElubmVyMXsKKyAgICAgICAgICAgIHN0YXRpYyBpbnQgc2JlID0gYTxjYXJldD4KKyAgICAgICAgfQorICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3ZhcmlhYmxlcy9sb2NhbHMvVGVzdFNvdXJjZTYuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3ZhcmlhYmxlcy9sb2NhbHMvVGVzdFNvdXJjZTYuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MDllMzRhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vdmFyaWFibGVzL2xvY2Fscy9UZXN0U291cmNlNi5qYXZhCkBAIC0wLDAgKzEsMTMgQEAKK3BhY2thZ2UgY29kZUluc2lnaHQuY29tcGxldGlvbi52YXJpYWJsZXMubG9jYWxzOworCisvKioKKyAqIENyZWF0ZWQgYnkgSW50ZWxsaUogSURFQS4KKyAqIFVzZXI6IGlnb3JrCisgKiBEYXRlOiBOb3YgMjUsIDIwMDIKKyAqIFRpbWU6IDM6MTA6MDggUE0KKyAqIFRvIGNoYW5nZSB0aGlzIHRlbXBsYXRlIHVzZSBPcHRpb25zIHwgRmlsZSBUZW1wbGF0ZXMuCisgKi8KK3B1YmxpYyBjbGFzcyBUZXN0U291cmNlNiB7CisgICAgaW50IGFhYSA9IGI8Y2FyZXQ+CisgICAgaW50IGJiYiA9IDA7Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi92YXJpYWJsZXMvbG9jYWxzL1Rlc3RTb3VyY2U3LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi92YXJpYWJsZXMvbG9jYWxzL1Rlc3RTb3VyY2U3LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjA0NWY0YwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3ZhcmlhYmxlcy9sb2NhbHMvVGVzdFNvdXJjZTcuamF2YQpAQCAtMCwwICsxLDE1IEBACitwYWNrYWdlIGNvZGVJbnNpZ2h0LmNvbXBsZXRpb24udmFyaWFibGVzLmxvY2FsczsKKworLyoqCisgKiBDcmVhdGVkIGJ5IEludGVsbGlKIElERUEuCisgKiBVc2VyOiBpZ29yaworICogRGF0ZTogTm92IDI1LCAyMDAyCisgKiBUaW1lOiAzOjEwOjA4IFBNCisgKiBUbyBjaGFuZ2UgdGhpcyB0ZW1wbGF0ZSB1c2UgT3B0aW9ucyB8IEZpbGUgVGVtcGxhdGVzLgorICovCitwdWJsaWMgY2xhc3MgVGVzdFNvdXJjZTcgeworICAgIHB1YmxpYyB2b2lkIGZvbygpeworICAgICAgICBpbnQgYWFhID0gYjxjYXJldD4KKyAgICAgICAgaW50IGJiYiA9IDA7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vdmFyaWFibGVzL2xvY2Fscy9UZXN0U291cmNlOC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vdmFyaWFibGVzL2xvY2Fscy9UZXN0U291cmNlOC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRjZjI2MzgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi92YXJpYWJsZXMvbG9jYWxzL1Rlc3RTb3VyY2U4LmphdmEKQEAgLTAsMCArMSwxNSBAQAorcGFja2FnZSBjb2RlSW5zaWdodC5jb21wbGV0aW9uLnZhcmlhYmxlcy5sb2NhbHM7CisKKy8qKgorICogQ3JlYXRlZCBieSBJbnRlbGxpSiBJREVBLgorICogVXNlcjogaWdvcmsKKyAqIERhdGU6IE5vdiAyNSwgMjAwMgorICogVGltZTogMzoxMDowOCBQTQorICogVG8gY2hhbmdlIHRoaXMgdGVtcGxhdGUgdXNlIE9wdGlvbnMgfCBGaWxlIFRlbXBsYXRlcy4KKyAqLworcHVibGljIGNsYXNzIFRlc3RTb3VyY2U4IHsKKyAgICBzdGF0aWMgeworICAgICAgICBpbnQgYWFhID0gYjxjYXJldD4KKyAgICAgICAgaW50IGJiYiA9IDA7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vdmFyaWFibGVzL2xvY2Fscy9UZXN0U291cmNlOS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vdmFyaWFibGVzL2xvY2Fscy9UZXN0U291cmNlOS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk5MWMzY2YKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi92YXJpYWJsZXMvbG9jYWxzL1Rlc3RTb3VyY2U5LmphdmEKQEAgLTAsMCArMSwxNSBAQAorcGFja2FnZSBjb2RlSW5zaWdodC5jb21wbGV0aW9uLnZhcmlhYmxlcy5sb2NhbHM7CisKKy8qKgorICogQ3JlYXRlZCBieSBJbnRlbGxpSiBJREVBLgorICogVXNlcjogaWdvcmsKKyAqIERhdGU6IE5vdiAyNSwgMjAwMgorICogVGltZTogMzoxMDowOCBQTQorICogVG8gY2hhbmdlIHRoaXMgdGVtcGxhdGUgdXNlIE9wdGlvbnMgfCBGaWxlIFRlbXBsYXRlcy4KKyAqLworcHVibGljIGNsYXNzIFRlc3RTb3VyY2U5IHsKKyAgICBzdGF0aWMgeworICAgICAgICBpbnQgYmJiID0gMDsKKyAgICAgICAgaW50IGFhYSA9IGI8Y2FyZXQ+CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vdmFyaWFibGVzL2xvY2Fscy9VbmlxdWVOYW1lSW5Gb3IuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3ZhcmlhYmxlcy9sb2NhbHMvVW5pcXVlTmFtZUluRm9yLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDk4MmM3ZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3ZhcmlhYmxlcy9sb2NhbHMvVW5pcXVlTmFtZUluRm9yLmphdmEKQEAgLTAsMCArMSw4IEBACitwdWJsaWMgY2xhc3MgVGVzdFNvdXJjZTcgeworICBwdWJsaWMgdm9pZCBmb28oKXsKKyAgICBMaXN0PE1vZGVsPiBtb2RlbHM7CisgICAgTW9kZWwgbW9kZWw7CisgICAgZm9yKE1vZGVsIG08Y2FyZXQ+KQorICB9Cit9CitjbGFzcyBNb2RlbHt9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi92YXJpYWJsZXMvbG9jYWxzL1VuaXF1ZU5hbWVJbkZvcl9hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vdmFyaWFibGVzL2xvY2Fscy9VbmlxdWVOYW1lSW5Gb3JfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MjFlZjFjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vdmFyaWFibGVzL2xvY2Fscy9VbmlxdWVOYW1lSW5Gb3JfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDggQEAKK3B1YmxpYyBjbGFzcyBUZXN0U291cmNlNyB7CisgIHB1YmxpYyB2b2lkIGZvbygpeworICAgIExpc3Q8TW9kZWw+IG1vZGVsczsKKyAgICBNb2RlbCBtb2RlbDsKKyAgICBmb3IoTW9kZWwgbW9kZWwxPGNhcmV0PikKKyAgfQorfQorY2xhc3MgTW9kZWx7fQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vdmFyaWFibGVzL2xvY2Fscy9VbnJlc29sdmVkTWV0aG9kTmFtZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vdmFyaWFibGVzL2xvY2Fscy9VbnJlc29sdmVkTWV0aG9kTmFtZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM1ZGY3OGUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi92YXJpYWJsZXMvbG9jYWxzL1VucmVzb2x2ZWRNZXRob2ROYW1lLmphdmEKQEAgLTAsMCArMSw3IEBACitwdWJsaWMgY2xhc3MgRm9vIHsKKyAgcHVibGljIHZvaWQgYSgpIHsKKyAgICBpbnQgaSA9IGNyZWF0ZVN0eWxlc2hlZXRDb21ib2JveCgpOworICB9CisKKyAgcHJpdmF0ZSBpbnQgY3JlPGNhcmV0PgorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vdmFyaWFibGVzL2xvY2Fscy9VbnJlc29sdmVkTWV0aG9kTmFtZV9hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vdmFyaWFibGVzL2xvY2Fscy9VbnJlc29sdmVkTWV0aG9kTmFtZV9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUwOTZkNjUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi92YXJpYWJsZXMvbG9jYWxzL1VucmVzb2x2ZWRNZXRob2ROYW1lX2FmdGVyLmphdmEKQEAgLTAsMCArMSw3IEBACitwdWJsaWMgY2xhc3MgRm9vIHsKKyAgcHVibGljIHZvaWQgYSgpIHsKKyAgICBpbnQgaSA9IGNyZWF0ZVN0eWxlc2hlZXRDb21ib2JveCgpOworICB9CisKKyAgcHJpdmF0ZSBpbnQgY3JlYXRlU3R5bGVzaGVldENvbWJvYm94PGNhcmV0PgorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vdmFyaWFibGVzL2xvY2Fscy9VbnJlc29sdmVkUmVmZXJlbmNlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi92YXJpYWJsZXMvbG9jYWxzL1VucmVzb2x2ZWRSZWZlcmVuY2UuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NmIzYzMwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vdmFyaWFibGVzL2xvY2Fscy9VbnJlc29sdmVkUmVmZXJlbmNlLmphdmEKQEAgLTAsMCArMSw4IEBACitjbGFzcyBGb28geworICAgIHZvaWQgZm9vKCkgeworICAgICAgICBPYmplY3QgPGNhcmV0PgorICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4ocHNpQ2xhc3MpOworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4ocHNpQ2xhc3MpOworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4ocHNpQ2xhc3MpOworICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3ZhcmlhYmxlcy9sb2NhbHMvV2l0aEJ1aWxkZXJQYXJhbWV0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3ZhcmlhYmxlcy9sb2NhbHMvV2l0aEJ1aWxkZXJQYXJhbWV0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMTFlNmE3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vdmFyaWFibGVzL2xvY2Fscy9XaXRoQnVpbGRlclBhcmFtZXRlci5qYXZhCkBAIC0wLDAgKzEsNCBAQAorcHVibGljIGNsYXNzIEJ1aWxkZXIgeworICBwdWJsaWMgQnVpbGRlciB3aXRoU29tZXRoaW5nKFN0cmluZyBzbzxjYXJldD4pIHt9Cit9CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3ZhcmlhYmxlcy9sb2NhbHMvV2l0aEJ1aWxkZXJQYXJhbWV0ZXJfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3ZhcmlhYmxlcy9sb2NhbHMvV2l0aEJ1aWxkZXJQYXJhbWV0ZXJfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZjkxNDdiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vdmFyaWFibGVzL2xvY2Fscy9XaXRoQnVpbGRlclBhcmFtZXRlcl9hZnRlci5qYXZhCkBAIC0wLDAgKzEsNCBAQAorcHVibGljIGNsYXNzIEJ1aWxkZXIgeworICBwdWJsaWMgQnVpbGRlciB3aXRoU29tZXRoaW5nKFN0cmluZyBzb21ldGhpbmc8Y2FyZXQ+KSB7fQorfQorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi93b3JkLzEucHJvcGVydGllcyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3dvcmQvMS5wcm9wZXJ0aWVzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA3ZmYxODkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi93b3JkLzEucHJvcGVydGllcwpAQCAtMCwwICsxIEBACitTZXR0aW5ncyBTZXR0PGNhcmV0PiBvdGhlcgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3dvcmQvMS50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi93b3JkLzEudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA3ZmYxODkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi93b3JkLzEudHh0CkBAIC0wLDAgKzEgQEAKK1NldHRpbmdzIFNldHQ8Y2FyZXQ+IG90aGVyClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vd29yZC8xLnhtbCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3dvcmQvMS54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTljZTYxNwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3dvcmQvMS54bWwKQEAgLTAsMCArMSBAQAorPGE+U2V0dGluZ3MgU2V0dDxjYXJldD4gb3RoZXI8L2E+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vd29yZC8xX2FmdGVyLnByb3BlcnRpZXMgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi93b3JkLzFfYWZ0ZXIucHJvcGVydGllcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMDY1ZTRhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vd29yZC8xX2FmdGVyLnByb3BlcnRpZXMKQEAgLTAsMCArMSBAQAorU2V0dGluZ3MgU2V0dGluZ3M8Y2FyZXQ+IG90aGVyClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vd29yZC8xX2FmdGVyLnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3dvcmQvMV9hZnRlci50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDA2NWU0YQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3dvcmQvMV9hZnRlci50eHQKQEAgLTAsMCArMSBAQAorU2V0dGluZ3MgU2V0dGluZ3M8Y2FyZXQ+IG90aGVyClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vd29yZC8xX2FmdGVyLnhtbCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3dvcmQvMV9hZnRlci54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWFjYzg5NQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3dvcmQvMV9hZnRlci54bWwKQEAgLTAsMCArMSBAQAorPGE+U2V0dGluZ3MgU2V0dGluZ3M8Y2FyZXQ+IG90aGVyPC9hPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3dvcmQvMi54bWwgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi93b3JkLzIueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgyN2ZmNDIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi93b3JkLzIueG1sCkBAIC0wLDAgKzEsNCBAQAorPHJvb3Q+Cis8YSB2YWx1ZT0iU2V0dGluZ3MiLz4KKzxhIHZhbHVlPSJTZXR0PGNhcmV0PiI+PC9hPgorPC9yb290PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3dvcmQvMl9hZnRlci54bWwgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi93b3JkLzJfYWZ0ZXIueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ5OTNhOWMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi93b3JkLzJfYWZ0ZXIueG1sCkBAIC0wLDAgKzEsNCBAQAorPHJvb3Q+Cis8YSB2YWx1ZT0iU2V0dGluZ3MiLz4KKzxhIHZhbHVlPSJTZXR0aW5nczxjYXJldD4iPjwvYT4KKzwvcm9vdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi93b3JkLzMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3dvcmQvMy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZiNWY0OTgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi93b3JkLzMuamF2YQpAQCAtMCwwICsxLDMgQEAKK3B1YmxpYyBjbGFzcyBNeUNsYXNzIHsKKyBTdHJpbmcgYiA9ICJNeTxjYXJldD4iOyAKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi93b3JkLzNfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3dvcmQvM19hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM2MjUxM2MKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi93b3JkLzNfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDMgQEAKK3B1YmxpYyBjbGFzcyBNeUNsYXNzIHsKKyBTdHJpbmcgYiA9ICJNeUhhcmRWYXJpYW50PGNhcmV0PiI7IAorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3dvcmQvNC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vd29yZC80LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWU2N2VmZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3dvcmQvNC5qYXZhCkBAIC0wLDAgKzEsNCBAQAorcHVibGljIGNsYXNzIE15Q2xhc3MgeworIFN0cmluZyBiID0gIk15IjsKKyAgLy8gcHU8Y2FyZXQ+Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vd29yZC80X2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi93b3JkLzRfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNWZiOThmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vd29yZC80X2FmdGVyLmphdmEKQEAgLTAsMCArMSw0IEBACitwdWJsaWMgY2xhc3MgTXlDbGFzcyB7CisgU3RyaW5nIGIgPSAiTXkiOworICAvLyBwdWJsaWM8Y2FyZXQ+Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vd29yZC9Db21wbGV0ZVN0cmluZ0xpdGVyYWxDb3B5LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi93b3JkL0NvbXBsZXRlU3RyaW5nTGl0ZXJhbENvcHkuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNDA2NDYxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vd29yZC9Db21wbGV0ZVN0cmluZ0xpdGVyYWxDb3B5LmphdmEKQEAgLTAsMCArMSw1IEBACitjbGFzcyBCYXIgeworICBTdHJpbmcgYSA9ICJhYmMuZGVmIgorICBTdHJpbmcgYiA9ICJhYmRlPGNhcmV0PiIKK30KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vd29yZC9Db21wbGV0ZVN0cmluZ0xpdGVyYWxDb3B5X2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi93b3JkL0NvbXBsZXRlU3RyaW5nTGl0ZXJhbENvcHlfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NGEwOWJiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vd29yZC9Db21wbGV0ZVN0cmluZ0xpdGVyYWxDb3B5X2FmdGVyLmphdmEKQEAgLTAsMCArMSw1IEBACitjbGFzcyBCYXIgeworICBTdHJpbmcgYSA9ICJhYmMuZGVmIgorICBTdHJpbmcgYiA9ICJhYmMuZGVmPGNhcmV0PiIKK30KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vd29yZC9Eb2xsYXJzSW5QcmVmaXgudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vd29yZC9Eb2xsYXJzSW5QcmVmaXgudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQyMGFhYmIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi93b3JkL0RvbGxhcnNJblByZWZpeC50eHQKQEAgLTAsMCArMSwyIEBACiskdGVzdAorJHRlPGNhcmV0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3dvcmQvRG9sbGFyc0luUHJlZml4X2FmdGVyLnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3dvcmQvRG9sbGFyc0luUHJlZml4X2FmdGVyLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NDhlMjQyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vd29yZC9Eb2xsYXJzSW5QcmVmaXhfYWZ0ZXIudHh0CkBAIC0wLDAgKzEsMiBAQAorJHRlc3QKKyR0ZXN0PGNhcmV0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3dvcmQvSW5KYXZhTGl0ZXJhbHMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3dvcmQvSW5KYXZhTGl0ZXJhbHMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40OWJjZTMyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vd29yZC9JbkphdmFMaXRlcmFscy5qYXZhCkBAIC0wLDAgKzEsMyBAQAorcHVibGljIGNsYXNzIE15Q2xhc3MgeworIFN0cmluZyBiID0gIk15PGNhcmV0PiI7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vd29yZC9JbkphdmFMaXRlcmFsc19hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vd29yZC9JbkphdmFMaXRlcmFsc19hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVhMzA3NWMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi93b3JkL0luSmF2YUxpdGVyYWxzX2FmdGVyLmphdmEKQEAgLTAsMCArMSwzIEBACitwdWJsaWMgY2xhc3MgTXlDbGFzcyB7CisgU3RyaW5nIGIgPSAiTXlDbGFzczxjYXJldD4iOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3dvcmQvU3BhY2VJbkNvbW1lbnQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3dvcmQvU3BhY2VJbkNvbW1lbnQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZWNmMjBhZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3dvcmQvU3BhY2VJbkNvbW1lbnQuamF2YQpAQCAtMCwwICsxLDQgQEAKK3B1YmxpYyBjbGFzcyBNeUNsYXNzIHsKKworICAvLyBjb21tZW50ICA8Y2FyZXQ+Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vd29yZC9UZXh0SW5Db21tZW50LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29tcGxldGlvbi93b3JkL1RleHRJbkNvbW1lbnQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMzI4NWVjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vd29yZC9UZXh0SW5Db21tZW50LmphdmEKQEAgLTAsMCArMSw0IEBACitwdWJsaWMgY2xhc3MgTXlDbGFzcyB7CisKKyAgLyoqIGNvbW1lbnQgIE15PGNhcmV0PiAqLworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3dvcmQvVGV4dEluQ29tbWVudF9hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbXBsZXRpb24vd29yZC9UZXh0SW5Db21tZW50X2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWE3YjhkNwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb21wbGV0aW9uL3dvcmQvVGV4dEluQ29tbWVudF9hZnRlci5qYXZhCkBAIC0wLDAgKzEsNCBAQAorcHVibGljIGNsYXNzIE15Q2xhc3MgeworCisgIC8qKiBjb21tZW50ICBNeUNsYXNzPGNhcmV0PiAqLworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb252ZXJ0VG9CYXNpY0xhdGluL0NoYXJMaXRlcmFsLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29udmVydFRvQmFzaWNMYXRpbi9DaGFyTGl0ZXJhbC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgyOTZhMWMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29udmVydFRvQmFzaWNMYXRpbi9DaGFyTGl0ZXJhbC5qYXZhCkBAIC0wLDAgKzEsMyBAQAorY2xhc3MgQyB7CisgICAgY2hhciBjaCA9ICc8Y2FyZXQ+wqknOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb252ZXJ0VG9CYXNpY0xhdGluL0NoYXJMaXRlcmFsX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29udmVydFRvQmFzaWNMYXRpbi9DaGFyTGl0ZXJhbF9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI4MjZmM2UKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29udmVydFRvQmFzaWNMYXRpbi9DaGFyTGl0ZXJhbF9hZnRlci5qYXZhCkBAIC0wLDAgKzEsMyBAQAorY2xhc3MgQyB7CisgICAgY2hhciBjaCA9ICdcdTAwYTknOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb252ZXJ0VG9CYXNpY0xhdGluL0RvY0NvbW1lbnQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb252ZXJ0VG9CYXNpY0xhdGluL0RvY0NvbW1lbnQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMTMyOWE4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbnZlcnRUb0Jhc2ljTGF0aW4vRG9jQ29tbWVudC5qYXZhCkBAIC0wLDAgKzEsNSBAQAorLyoqPGNhcmV0PgorICogQ29weXJpZ2h0IMKpIDIwMDAtMjAxMCBKZXRCcmFpbnMgcy5yLm8uCisgKi8KK2NsYXNzIEMgeworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb252ZXJ0VG9CYXNpY0xhdGluL0RvY0NvbW1lbnRfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb252ZXJ0VG9CYXNpY0xhdGluL0RvY0NvbW1lbnRfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zOWNjNjVhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbnZlcnRUb0Jhc2ljTGF0aW4vRG9jQ29tbWVudF9hZnRlci5qYXZhCkBAIC0wLDAgKzEsNSBAQAorLyoqCisgKiBDb3B5cmlnaHQgJmNvcHk7IDIwMDAtMjAxMCBKZXRCcmFpbnMgcy5yLm8uCisgKi8KK2NsYXNzIEMgeworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb252ZXJ0VG9CYXNpY0xhdGluL0RvY1RhZy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbnZlcnRUb0Jhc2ljTGF0aW4vRG9jVGFnLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTFmNGUyZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb252ZXJ0VG9CYXNpY0xhdGluL0RvY1RhZy5qYXZhCkBAIC0wLDAgKzEsMjMgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwMC0yMDEyIEpldEJyYWlucyBzLnIuby4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitjbGFzcyBDIHsKKyAgLyoqCisgICAqIFNvbWUgbWV0aG9kLgorICAgKgorICAgKiBAcGFyYW0gdmFsdWUgc29tZSAowqkpPGNhcmV0PiBwYXJhbS4KKyAgICovCisgIGFic3RyYWN0IHZvaWQgbShpbnQgdmFsdWUpOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb252ZXJ0VG9CYXNpY0xhdGluL0RvY1RhZ19hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbnZlcnRUb0Jhc2ljTGF0aW4vRG9jVGFnX2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjg2MDZjYQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb252ZXJ0VG9CYXNpY0xhdGluL0RvY1RhZ19hZnRlci5qYXZhCkBAIC0wLDAgKzEsMjMgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwMC0yMDEyIEpldEJyYWlucyBzLnIuby4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitjbGFzcyBDIHsKKyAgLyoqCisgICAqIFNvbWUgbWV0aG9kLgorICAgKgorICAgKiBAcGFyYW0gdmFsdWUgc29tZSAoJmNvcHk7KSBwYXJhbS4KKyAgICovCisgIGFic3RyYWN0IHZvaWQgbShpbnQgdmFsdWUpOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb252ZXJ0VG9CYXNpY0xhdGluL1BsYWluQ29tbWVudC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbnZlcnRUb0Jhc2ljTGF0aW4vUGxhaW5Db21tZW50LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDY3NWRkMgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb252ZXJ0VG9CYXNpY0xhdGluL1BsYWluQ29tbWVudC5qYXZhCkBAIC0wLDAgKzEsMyBAQAorY2xhc3MgQyB7CisgICAgLy88Y2FyZXQ+IMKpIDIwMTAgSmV0QnJhaW5zCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbnZlcnRUb0Jhc2ljTGF0aW4vUGxhaW5Db21tZW50X2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29udmVydFRvQmFzaWNMYXRpbi9QbGFpbkNvbW1lbnRfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYjVjNDFmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbnZlcnRUb0Jhc2ljTGF0aW4vUGxhaW5Db21tZW50X2FmdGVyLmphdmEKQEAgLTAsMCArMSwzIEBACitjbGFzcyBDIHsKKyAgICAvLyAmY29weTsgMjAxMCBKZXRCcmFpbnMKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29udmVydFRvQmFzaWNMYXRpbi9TdHJpbmdMaXRlcmFsLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29udmVydFRvQmFzaWNMYXRpbi9TdHJpbmdMaXRlcmFsLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmJhMWQ5NAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb252ZXJ0VG9CYXNpY0xhdGluL1N0cmluZ0xpdGVyYWwuamF2YQpAQCAtMCwwICsxLDMgQEAKK2NsYXNzIEMgeworICAgIFN0cmluZyBzID0gIjxjYXJldD7DgcOuIjsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29udmVydFRvQmFzaWNMYXRpbi9TdHJpbmdMaXRlcmFsX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29udmVydFRvQmFzaWNMYXRpbi9TdHJpbmdMaXRlcmFsX2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODYyMmY5YgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb252ZXJ0VG9CYXNpY0xhdGluL1N0cmluZ0xpdGVyYWxfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDMgQEAKK2NsYXNzIEMgeworICAgIFN0cmluZyBzID0gIlx1MDBjMVx1MDBlZSI7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbnZlcnRUb1N0cmluZ0xpdGVyYWwvU2ltcGxlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29udmVydFRvU3RyaW5nTGl0ZXJhbC9TaW1wbGUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yODVjN2FiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbnZlcnRUb1N0cmluZ0xpdGVyYWwvU2ltcGxlLmphdmEKQEAgLTAsMCArMSwyMCBAQAorLyoKKyAqIENvcHlyaWdodCAyMDAwLTIwMTEgSmV0QnJhaW5zIHMuci5vLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK2NsYXNzIEMgeworICAgIHsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCc8Y2FyZXQ+YWFhJyk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb252ZXJ0VG9TdHJpbmdMaXRlcmFsL1NpbXBsZV9hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvbnZlcnRUb1N0cmluZ0xpdGVyYWwvU2ltcGxlX2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDI4NzU4ZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb252ZXJ0VG9TdHJpbmdMaXRlcmFsL1NpbXBsZV9hZnRlci5qYXZhCkBAIC0wLDAgKzEsMjAgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwMC0yMDExIEpldEJyYWlucyBzLnIuby4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitjbGFzcyBDIHsKKyAgICB7CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiYWFhIik7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb3B5UmVmZXJlbmNlL0NvbnN0cnVjdG9yLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29weVJlZmVyZW5jZS9Db25zdHJ1Y3Rvci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBhYTQ4NWMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29weVJlZmVyZW5jZS9Db25zdHJ1Y3Rvci5qYXZhCkBAIC0wLDAgKzEsNCBAQAorY2xhc3MgQzIgeworICAgIHB1YmxpYyA8Y2FyZXQ+QzIoaW50IGkpIHsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29weVJlZmVyZW5jZS9Db25zdHJ1Y3Rvcl9hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvcHlSZWZlcmVuY2UvQ29uc3RydWN0b3JfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yOTNlZWViCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvcHlSZWZlcmVuY2UvQ29uc3RydWN0b3JfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDkgQEAKK2NsYXNzIFhYWCB7CisgICAgdm9pZCBmKCkgeworICAgICAgICBuZXcgQzIoPGNhcmV0PikKKyAgICB9Cit9CitjbGFzcyBDMiB7CisgICAgcHVibGljIEMyKGludCBpKSB7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvcHlSZWZlcmVuY2UvQ29uc3RydWN0b3JfZHN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29weVJlZmVyZW5jZS9Db25zdHJ1Y3Rvcl9kc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNjk1YjkzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvcHlSZWZlcmVuY2UvQ29uc3RydWN0b3JfZHN0LmphdmEKQEAgLTAsMCArMSw5IEBACitjbGFzcyBYWFggeworICAgIHZvaWQgZigpIHsKKyAgICAgICAgbmV3IDxjYXJldD4KKyAgICB9Cit9CitjbGFzcyBDMiB7CisgICAgcHVibGljIEMyKGludCBpKSB7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvcHlSZWZlcmVuY2UvQ29weUZpbGVfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb3B5UmVmZXJlbmNlL0NvcHlGaWxlX2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjBjMDc4MwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb3B5UmVmZXJlbmNlL0NvcHlGaWxlX2FmdGVyLmphdmEKQEAgLTAsMCArMSwzIEBACitjbGFzcyBYIHsKKyAgU3RyaW5nIHMgPSAiL3gveC50eHQ8Y2FyZXQ+IjsKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb3B5UmVmZXJlbmNlL0NvcHlGaWxlX2RzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvcHlSZWZlcmVuY2UvQ29weUZpbGVfZHN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODJiNTBjZDcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29weVJlZmVyZW5jZS9Db3B5RmlsZV9kc3QuamF2YQpAQCAtMCwwICsxLDMgQEAKK2NsYXNzIFggeworICBTdHJpbmcgcyA9ICI8Y2FyZXQ+IjsKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb3B5UmVmZXJlbmNlL0RlZmF1bHRDb25zdHJ1Y3Rvci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvcHlSZWZlcmVuY2UvRGVmYXVsdENvbnN0cnVjdG9yLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmE2NGY3YwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb3B5UmVmZXJlbmNlL0RlZmF1bHRDb25zdHJ1Y3Rvci5qYXZhCkBAIC0wLDAgKzEsNyBAQAorY2xhc3MgWFhYIHsKKyAgICB2b2lkIGYoKSB7CisgICAgICAgIG5ldyA8Y2FyZXQ+QzIoKTsKKyAgICB9Cit9CitjbGFzcyBDMiB7Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29weVJlZmVyZW5jZS9EZWZhdWx0Q29uc3RydWN0b3JfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb3B5UmVmZXJlbmNlL0RlZmF1bHRDb25zdHJ1Y3Rvcl9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgyMDczNDAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29weVJlZmVyZW5jZS9EZWZhdWx0Q29uc3RydWN0b3JfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDggQEAKK2NsYXNzIFhYWCB7CisgICAgdm9pZCBmKCkgeworICAgICAgICBuZXcgQzIoKTsKKyAgICAgICAgbmV3IEMyKCk8Y2FyZXQ+CisgICAgfQorfQorY2xhc3MgQzIgeworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvcHlSZWZlcmVuY2UvRGVmYXVsdENvbnN0cnVjdG9yX2RzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvcHlSZWZlcmVuY2UvRGVmYXVsdENvbnN0cnVjdG9yX2RzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdkMmU4M2UKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29weVJlZmVyZW5jZS9EZWZhdWx0Q29uc3RydWN0b3JfZHN0LmphdmEKQEAgLTAsMCArMSw4IEBACitjbGFzcyBYWFggeworICAgIHZvaWQgZigpIHsKKyAgICAgICAgbmV3IEMyKCk7CisgICAgICAgIG5ldyA8Y2FyZXQ+CisgICAgfQorfQorY2xhc3MgQzIgeworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvcHlSZWZlcmVuY2UvSWRlbnRpZmllclNlcGFyYXRvci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvcHlSZWZlcmVuY2UvSWRlbnRpZmllclNlcGFyYXRvci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYzODQyYTEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29weVJlZmVyZW5jZS9JZGVudGlmaWVyU2VwYXJhdG9yLmphdmEKQEAgLTAsMCArMSwyIEBACitjbGFzcyA8Y2FyZXQ+QyB7Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29weVJlZmVyZW5jZS9JZGVudGlmaWVyU2VwYXJhdG9yX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29weVJlZmVyZW5jZS9JZGVudGlmaWVyU2VwYXJhdG9yX2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWNkNGFjNgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb3B5UmVmZXJlbmNlL0lkZW50aWZpZXJTZXBhcmF0b3JfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDUgQEAKK2NsYXNzIFggeworICAgdm9pZCBmKEMgPGNhcmV0PlggeCkge30KK30KK2NsYXNzIEMgeworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvcHlSZWZlcmVuY2UvSWRlbnRpZmllclNlcGFyYXRvcl9kc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb3B5UmVmZXJlbmNlL0lkZW50aWZpZXJTZXBhcmF0b3JfZHN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWI0YWFmNwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb3B5UmVmZXJlbmNlL0lkZW50aWZpZXJTZXBhcmF0b3JfZHN0LmphdmEKQEAgLTAsMCArMSw1IEBACitjbGFzcyBYIHsKKyAgIHZvaWQgZig8Y2FyZXQ+WCB4KSB7fQorfQorY2xhc3MgQyB7Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29weVJlZmVyZW5jZS9NZXRob2RGcm9tQW5vbnltb3VzQ2xhc3MuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb3B5UmVmZXJlbmNlL01ldGhvZEZyb21Bbm9ueW1vdXNDbGFzcy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYxNmIyNTIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29weVJlZmVyZW5jZS9NZXRob2RGcm9tQW5vbnltb3VzQ2xhc3MuamF2YQpAQCAtMCwwICsxLDkgQEAKKyAgY2xhc3MgVGVzdCB7CisgICAgIHB1YmxpYyB2b2lkIG0oKSB7CisgICAgICAgbmV3IFJ1bm5hYmxlKCkgeworICAgICAgICAgICBwdWJsaWMgdm9pZCA8Y2FyZXQ+cnVuKCkgeworCisgICAgICAgICAgIH0KKyAgICAgICB9OworICAgICB9CisgIH0KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb3B5UmVmZXJlbmNlL01ldGhvZEZyb21Bbm9ueW1vdXNDbGFzc19hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NvcHlSZWZlcmVuY2UvTWV0aG9kRnJvbUFub255bW91c0NsYXNzX2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjE3NjljMAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb3B5UmVmZXJlbmNlL01ldGhvZEZyb21Bbm9ueW1vdXNDbGFzc19hZnRlci5qYXZhCkBAIC0wLDAgKzEsOSBAQAorICBjbGFzcyBUZXN0IHsKKyAgICAgcHVibGljIHZvaWQgbSgpIHsKKyAgICAgICBuZXcgUnVubmFibGUoKSB7CisgICAgICAgICAgIHB1YmxpYyB2b2lkIHJ1bigpIHsKKyAgICAgICAgICAgICAgIHJ1bigpPGNhcmV0PgorICAgICAgICAgICB9CisgICAgICAgfTsKKyAgICAgfQorICB9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29weVJlZmVyZW5jZS9NZXRob2RGcm9tQW5vbnltb3VzQ2xhc3NfZHN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY29weVJlZmVyZW5jZS9NZXRob2RGcm9tQW5vbnltb3VzQ2xhc3NfZHN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTM5ZTdlYwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jb3B5UmVmZXJlbmNlL01ldGhvZEZyb21Bbm9ueW1vdXNDbGFzc19kc3QuamF2YQpAQCAtMCwwICsxLDkgQEAKKyAgY2xhc3MgVGVzdCB7CisgICAgIHB1YmxpYyB2b2lkIG0oKSB7CisgICAgICAgbmV3IFJ1bm5hYmxlKCkgeworICAgICAgICAgICBwdWJsaWMgdm9pZCBydW4oKSB7CisgICAgICAgICAgICAgIDxjYXJldD4KKyAgICAgICAgICAgfQorICAgICAgIH07CisgICAgIH0KKyAgfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NyZWF0ZVN1YmNsYXNzL2dlbmVyaWNzL2FmdGVyL1N1YmNsYXNzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY3JlYXRlU3ViY2xhc3MvZ2VuZXJpY3MvYWZ0ZXIvU3ViY2xhc3MuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NjI3N2VkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NyZWF0ZVN1YmNsYXNzL2dlbmVyaWNzL2FmdGVyL1N1YmNsYXNzLmphdmEKQEAgLTAsMCArMSwyIEBACitwdWJsaWMgY2xhc3MgU3ViY2xhc3M8RSBleHRlbmRzIFJ1bm5hYmxlLCBRIGV4dGVuZHMgUnVubmFibGU+IGV4dGVuZHMgU3VwZXJjbGFzczxFLCBRPiB7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NyZWF0ZVN1YmNsYXNzL2dlbmVyaWNzL2FmdGVyL1N1cGVyY2xhc3MuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jcmVhdGVTdWJjbGFzcy9nZW5lcmljcy9hZnRlci9TdXBlcmNsYXNzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWMwZWM1YzAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY3JlYXRlU3ViY2xhc3MvZ2VuZXJpY3MvYWZ0ZXIvU3VwZXJjbGFzcy5qYXZhCkBAIC0wLDAgKzEsMiBAQAorY2xhc3MgU3VwZXJjbGFzczxFIGV4dGVuZHMgUnVubmFibGUsIFEgZXh0ZW5kcyBSdW5uYWJsZT4geworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NyZWF0ZVN1YmNsYXNzL2dlbmVyaWNzL2JlZm9yZS9TdXBlcmNsYXNzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY3JlYXRlU3ViY2xhc3MvZ2VuZXJpY3MvYmVmb3JlL1N1cGVyY2xhc3MuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYzBlYzVjMAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9jcmVhdGVTdWJjbGFzcy9nZW5lcmljcy9iZWZvcmUvU3VwZXJjbGFzcy5qYXZhCkBAIC0wLDAgKzEsMiBAQAorY2xhc3MgU3VwZXJjbGFzczxFIGV4dGVuZHMgUnVubmFibGUsIFEgZXh0ZW5kcyBSdW5uYWJsZT4geworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NyZWF0ZVN1YmNsYXNzL2lubmVyQ2xhc3MvYWZ0ZXIvVGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NyZWF0ZVN1YmNsYXNzL2lubmVyQ2xhc3MvYWZ0ZXIvVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQxZDNlMGI1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NyZWF0ZVN1YmNsYXNzL2lubmVyQ2xhc3MvYWZ0ZXIvVGVzdC5qYXZhCkBAIC0wLDAgKzEsNiBAQAorcHVibGljIGNsYXNzIFRlc3QgeworICAgIHByaXZhdGUgaW50ZXJmYWNlIElubmVyIHt9CisKKyAgICBwdWJsaWMgY2xhc3MgSW5uZXJJbXBsIGltcGxlbWVudHMgSW5uZXIgeworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvY3JlYXRlU3ViY2xhc3MvaW5uZXJDbGFzcy9iZWZvcmUvVGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NyZWF0ZVN1YmNsYXNzL2lubmVyQ2xhc3MvYmVmb3JlL1Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYjA4ZjA4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2NyZWF0ZVN1YmNsYXNzL2lubmVyQ2xhc3MvYmVmb3JlL1Rlc3QuamF2YQpAQCAtMCwwICsxLDMgQEAKK3B1YmxpYyBjbGFzcyBUZXN0IHsKKyAgICBwcml2YXRlIGludGVyZmFjZSBJbm5lciB7fQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nL0Fic3RyYWN0TWV0aG9kcy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvQWJzdHJhY3RNZXRob2RzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTg2ZTZmMwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nL0Fic3RyYWN0TWV0aG9kcy5qYXZhCkBAIC0wLDAgKzEsMTA5IEBACisvLyBhYnN0cmFjdCBtZXRob2RzCitwdWJsaWMgY2xhc3MgYSB7CisgIDxlcnJvciBkZXNjcj0iTWlzc2luZyBtZXRob2QgYm9keSwgb3IgZGVjbGFyZSBhYnN0cmFjdCI+dm9pZCBmKCk7PC9lcnJvcj4KKworfQorYWJzdHJhY3QgY2xhc3MgYzEgeworICBhYnN0cmFjdCB2b2lkIGYxKCk7CisgIDxlcnJvciBkZXNjcj0iTWlzc2luZyBtZXRob2QgYm9keSwgb3IgZGVjbGFyZSBhYnN0cmFjdCI+aW50IGYyKCk7PC9lcnJvcj4KK30KKworaW50ZXJmYWNlIGZmIHsKKyAgYWJzdHJhY3Qgdm9pZCBmMSgpOworICB2b2lkIGYyKCk7Cit9CisKK2NsYXNzIHggeworICB2b2lkIGYoKSB7CisgICAgPGVycm9yIGRlc2NyPSJNZXRob2QgY2FsbCBleHBlY3RlZCI+UnVudGltZUV4Y2VwdGlvbigpPC9lcnJvcj47CisgICAgdGhyb3cgPGVycm9yIGRlc2NyPSJNZXRob2QgY2FsbCBleHBlY3RlZCI+UnVudGltZUV4Y2VwdGlvbigpPC9lcnJvcj47CisgIH0KK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorPGVycm9yIGRlc2NyPSJDbGFzcyAnYzInIG11c3QgZWl0aGVyIGJlIGRlY2xhcmVkIGFic3RyYWN0IG9yIGltcGxlbWVudCBhYnN0cmFjdCBtZXRob2QgJ2YoKScgaW4gJ2MyJyI+Y2xhc3MgYzI8L2Vycm9yPiB7CisgIDxlcnJvciBkZXNjcj0iQWJzdHJhY3QgbWV0aG9kIGluIG5vbi1hYnN0cmFjdCBjbGFzcyI+YWJzdHJhY3Q8L2Vycm9yPiB2b2lkIGYoKTsKK30KKworPGVycm9yIGRlc2NyPSJDbGFzcyAnYzMnIG11c3QgZWl0aGVyIGJlIGRlY2xhcmVkIGFic3RyYWN0IG9yIGltcGxlbWVudCBhYnN0cmFjdCBtZXRob2QgJ2lpZigpJyBpbiAnYzQnIj5jbGFzcyBjMyBleHRlbmRzIGM0PC9lcnJvcj4geworCit9CisKK2Fic3RyYWN0IGNsYXNzIGM0IHsKKyAgYWJzdHJhY3Qgdm9pZCBpaWYoKTsKK30KKworY2xhc3MgYzUgZXh0ZW5kcyBjNiBpbXBsZW1lbnRzIGk3IHsgcHVibGljIHZvaWQgZmYoKXt9IH0KK2Fic3RyYWN0IGNsYXNzIGM2IHt9CitpbnRlcmZhY2UgaTcgeyB2b2lkIGZmKCk7IH0KKworPGVycm9yIGRlc2NyPSJDbGFzcyAnYzcnIG11c3QgZWl0aGVyIGJlIGRlY2xhcmVkIGFic3RyYWN0IG9yIGltcGxlbWVudCBhYnN0cmFjdCBtZXRob2QgJ2ZmKCknIGluICdpNyciPmNsYXNzIGM3IGltcGxlbWVudHMgaTc8L2Vycm9yPiB7Cit9CisKK2NsYXNzIGNhbGxhYnN0cmFjdCBleHRlbmRzIGM0IHsKKyAgdm9pZCBpaWYoKSB7CisgICAgPGVycm9yIGRlc2NyPSJBYnN0cmFjdCBtZXRob2QgJ2lpZigpJyBjYW5ub3QgYmUgYWNjZXNzZWQgZGlyZWN0bHkiPnN1cGVyLmlpZigpPC9lcnJvcj47CisgIH0KK30KKworCithYnN0cmFjdCBjbGFzcyBjOCB7CisgICAgcHVibGljIGFic3RyYWN0IGJvb2xlYW4gZXF1YWxzKE9iamVjdCBvdGhlcik7Cit9CisKKzxlcnJvciBkZXNjcj0iQ2xhc3MgJ2M5JyBtdXN0IGVpdGhlciBiZSBkZWNsYXJlZCBhYnN0cmFjdCBvciBpbXBsZW1lbnQgYWJzdHJhY3QgbWV0aG9kICdlcXVhbHMoT2JqZWN0KScgaW4gJ2M4JyI+ZmluYWwgY2xhc3MgYzkgZXh0ZW5kcyBjODwvZXJyb3I+IHsKK30KKworCisKKy8vLS0tLS0tLSBpZiBvbmx5IEJvdHRvbSB3ZXJlIGluIG90aGVyIHBhY2thZ2UsIGl0IHNob3VsZCBoYXZlIGJlZW4gYWJzdHJhY3QgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK3B1YmxpYyBhYnN0cmFjdCBjbGFzcyBBYnN0cmFjdFRlc3QgeworIAorICAgIGFic3RyYWN0IFN0cmluZyBnZXROYW1lKCk7CisgCisgICAgYWJzdHJhY3Qgc3RhdGljIGNsYXNzIE1pZGRsZSBleHRlbmRzIEFic3RyYWN0VGVzdCB7CisgCisgICAgfQorIAorICAgIHN0YXRpYyBjbGFzcyBCb3R0b20gZXh0ZW5kcyBNaWRkbGUgeworICAgICAgICBTdHJpbmcgZ2V0TmFtZSgpIHsKKyAgICAgICAgICAgIHJldHVybiBudWxsOworICAgICAgICB9CisgICAgfQorfQorCisvLy8vLy8vLy8vLworYWJzdHJhY3QgY2xhc3MgY2MxIHsKKyAgYWJzdHJhY3Qgdm9pZCBmKGludCBpKTsKK30KK2Fic3RyYWN0IGNsYXNzIGNjMiBleHRlbmRzIGNjMSB7CisgIGFic3RyYWN0IHByb3RlY3RlZCB2b2lkIGYoaW50IGkpOworfQorY2xhc3MgY2MzIGV4dGVuZHMgY2MyIHsKKyAgcHVibGljIHZvaWQgZihpbnQgaSkge30KK30KKy8vLy8vLy8vLy8vLy8vLworaW50ZXJmYWNlIE15Q29tcGFyYXRvciB7CisgICAgaW50IGNvbXBhcmUoT2JqZWN0IHQsIE9iamVjdCB0MSk7CisKKyAgICBib29sZWFuIGVxdWFscyhqYXZhLmxhbmcuT2JqZWN0IG9iamVjdCk7Cit9CitjbGFzcyBNeUNvbXBhcmF0b3JJbXBsIGltcGxlbWVudHMgTXlDb21wYXJhdG9yIHsKKyAgICBwdWJsaWMgaW50IGNvbXBhcmUoT2JqZWN0IG8sIE9iamVjdCBvMSkgeworICAgICAgICBuZXcgTXlDb21wYXJhdG9yKCkgeworICAgICAgICAgICAgcHVibGljIGludCBjb21wYXJlKE9iamVjdCBvLCBPYmplY3QgbzEpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorfQorLy8vLy8vLy8vLy8vLy8vLyBJREVBREVWLTYwNTAKK2ludGVyZmFjZSBDb21wYXJhYmxlIHt9CisKK2ludGVyZmFjZSBQdWJsaWNDbG9uZWFibGUgZXh0ZW5kcyBDbG9uZWFibGUgeworICAgIE9iamVjdCBjbG9uZSgpIHRocm93cyBDbG9uZU5vdFN1cHBvcnRlZEV4Y2VwdGlvbjsKK30KKworaW50ZXJmYWNlIFB1YmxpY0Nsb25lYWJsZUV4dGVuc2lvbiBleHRlbmRzICBDb21wYXJhYmxlLCBQdWJsaWNDbG9uZWFibGUgeworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvQWNjZXNzSW5uZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nL0FjY2Vzc0lubmVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmFiNWE2NgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nL0FjY2Vzc0lubmVyLmphdmEKQEAgLTAsMCArMSw1NSBAQAorLy8gYWNjZXNzIHByb2JsZW1zIGluIGlubmVyIGNsYXNzZXMKKworaW1wb3J0IGphdmEuYXd0Lio7CitpbXBvcnQgamF2YS5iZWFucy5iZWFuY29udGV4dC5CZWFuQ29udGV4dFNlcnZpY2VzU3VwcG9ydDsKK2ltcG9ydCBqYXZhLmJlYW5zLmJlYW5jb250ZXh0LkJlYW5Db250ZXh0U2VydmljZXNTdXBwb3J0LjxlcnJvciBkZXNjcj0iJ2phdmEuYmVhbnMuYmVhbmNvbnRleHQuQmVhbkNvbnRleHRTZXJ2aWNlc1N1cHBvcnQuQkNTU0NoaWxkJyBoYXMgcHJvdGVjdGVkIGFjY2VzcyBpbiAnamF2YS5iZWFucy5iZWFuY29udGV4dC5CZWFuQ29udGV4dFNlcnZpY2VzU3VwcG9ydCciPkJDU1NDaGlsZDwvZXJyb3I+OworCitjbGFzcyBhIGV4dGVuZHMgQ29tcG9uZW50IHsKKyAgICB2b2lkIGYoKSB7CisgICAgICAgIEZsaXBCdWZmZXJTdHJhdGVneSBzID0gbnVsbDsKKyAgICAgICAgaW50IGkgPSBzLjxlcnJvciBkZXNjcj0iJ251bUJ1ZmZlcnMnIGhhcyBwcm90ZWN0ZWQgYWNjZXNzIGluICdqYXZhLmF3dC5Db21wb25lbnQuRmxpcEJ1ZmZlclN0cmF0ZWd5JyI+bnVtQnVmZmVyczwvZXJyb3I+OworICAgICAgICBzLjxlcnJvciBkZXNjcj0iJ2NyZWF0ZUJ1ZmZlcnMoaW50LCBqYXZhLmF3dC5CdWZmZXJDYXBhYmlsaXRpZXMpJyBoYXMgcHJvdGVjdGVkIGFjY2VzcyBpbiAnamF2YS5hd3QuQ29tcG9uZW50LkZsaXBCdWZmZXJTdHJhdGVneSciPmNyZWF0ZUJ1ZmZlcnM8L2Vycm9yPigxLG51bGwpOworCisgICAgICAgIC8vIFRPRE8KKyAgICAgICAgLy8gbm93IGNhbm5vdCBkaXN0aW5xdWlzaCBwcml2YXRlIGZyb20gcGFja2FnZSBsb2NhbCBpbiBjbGFzcyBmaWxlcworICAgICAgICAvLzwgZXJyb3IgZGVzY3I9IidqYXZhLmF3dC5Db21wb25lbnQuU2luZ2xlQnVmZmVyU3RyYXRlZ3knIGhhcyBwcml2YXRlIGFjY2VzcyBpbiAnamF2YS5hd3QuQ29tcG9uZW50JyI+U2luZ2xlQnVmZmVyU3RyYXRlZ3k8IC9lcnJvcj4gczIgPSBudWxsOworICAgICAgICAvL09iamVjdCBvID0gczIuPCBlcnJvciBkZXNjcj0iJ2NhcHMnIGhhcyBwcml2YXRlIGFjY2VzcyBpbiAnamF2YS5hd3QuQ29tcG9uZW50LlNpbmdsZUJ1ZmZlclN0cmF0ZWd5JyI+Y2FwczwgL2Vycm9yPjsKKyAgICB9CisKKworCisgICAgICAgIGNsYXNzIGRkZCBleHRlbmRzIEJlYW5Db250ZXh0U2VydmljZXNTdXBwb3J0IHsKKyAgICAgICAgICAgIEJDU1NDaGlsZC48ZXJyb3IgZGVzY3I9IidqYXZhLmJlYW5zLmJlYW5jb250ZXh0LkJlYW5Db250ZXh0U2VydmljZXNTdXBwb3J0LkJDU1NDaGlsZC5CQ1NTQ1NlcnZpY2VDbGFzc1JlZicgaXMgbm90IHB1YmxpYyBpbiAnamF2YS5iZWFucy5iZWFuY29udGV4dC5CZWFuQ29udGV4dFNlcnZpY2VzU3VwcG9ydC5CQ1NTQ2hpbGQnLiBDYW5ub3QgYmUgYWNjZXNzZWQgZnJvbSBvdXRzaWRlIHBhY2thZ2UiPkJDU1NDU2VydmljZUNsYXNzUmVmPC9lcnJvcj4gZmQgPSBudWxsOworICAgICAgICAgICAgdm9pZCBmZigpIHsKKyAgICAgICAgICAgICAgICBmZC48ZXJyb3IgZGVzY3I9IidhZGRSZXF1ZXN0b3IoamF2YS5sYW5nLk9iamVjdCwgamF2YS5iZWFucy5iZWFuY29udGV4dC5CZWFuQ29udGV4dFNlcnZpY2VSZXZva2VkTGlzdGVuZXIpJyBpcyBub3QgcHVibGljIGluICdqYXZhLmJlYW5zLmJlYW5jb250ZXh0LkJlYW5Db250ZXh0U2VydmljZXNTdXBwb3J0LkJDU1NDaGlsZC5CQ1NTQ1NlcnZpY2VDbGFzc1JlZicuIENhbm5vdCBiZSBhY2Nlc3NlZCBmcm9tIG91dHNpZGUgcGFja2FnZSI+YWRkUmVxdWVzdG9yPC9lcnJvcj4obnVsbCxudWxsKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCit9CisKKworaW50ZXJmYWNlIEkgeworICBhYnN0cmFjdCBjbGFzcyBJbXBsZSBpbXBsZW1lbnRzIEkgeworICAgIGFic3RyYWN0IHZvaWQgZigpOworICB9CisgIGFic3RyYWN0IGNsYXNzIEltcGwyIGV4dGVuZHMgSW1wbGUgeworICAgIGFic3RyYWN0IGNsYXNzIElubmVyIGV4dGVuZHMgSW1wbDIgeworCisgICAgfQorICB9Cit9CisKKworY2xhc3MgQ2xhc3MxIGV4dGVuZHMgQ2xhc3MyIHsKKyAgcHVibGljIHZvaWQgdGVzdCgpIHsKKyAgICBuZXcgPGVycm9yIGRlc2NyPSInQ2xhc3MyLkNsYXNzMklubmVyJyBoYXMgcHJpdmF0ZSBhY2Nlc3MgaW4gJ0NsYXNzMiciPkNsYXNzMklubmVyPC9lcnJvcj4oKTsKKyAgICBpbnQgaSA9IDxlcnJvciBkZXNjcj0iJ0NsYXNzMi5DbGFzczJJbm5lcicgaGFzIHByaXZhdGUgYWNjZXNzIGluICdDbGFzczInIj5DbGFzczJJbm5lcjwvZXJyb3I+Lmk7CisgIH0KK30KK2NsYXNzIENsYXNzMiB7CisgIHByaXZhdGUgc3RhdGljIGNsYXNzIENsYXNzMklubmVyeworICAgIHB1YmxpYyBzdGF0aWMgaW50IGk7CisgICAgcHVibGljIENsYXNzMklubmVyKCkgeworICAgIH0KKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvQWNjZXNzTGV2ZWxDbGFzaC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvQWNjZXNzTGV2ZWxDbGFzaC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdmYTYyYjgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9BY2Nlc3NMZXZlbENsYXNoLmphdmEKQEAgLTAsMCArMSw4NyBAQAorLy8gYWNjZXNzIGxldmVsIGNsYXNoZXMKK2ludGVyZmFjZSBpIHsKKyB2b2lkIGZmKCk7Cit9CisKK3B1YmxpYyBjbGFzcyBhIGltcGxlbWVudHMgaSB7Cisgdm9pZCA8ZXJyb3IgZGVzY3I9IidmZigpJyBpbiAnYScgY2xhc2hlcyB3aXRoICdmZigpJyBpbiAnaSc7IGF0dGVtcHRpbmcgdG8gYXNzaWduIHdlYWtlciBhY2Nlc3MgcHJpdmlsZWdlcyAoJ3BhY2thZ2VMb2NhbCcpOyB3YXMgJ3B1YmxpYyciPmZmPC9lcnJvcj4oKSB7fQorfQorY2xhc3MgYWkgaW1wbGVtZW50cyBpIHsKKyBwdWJsaWMgPGVycm9yIGRlc2NyPSInZmYoKScgaW4gJ2FpJyBjbGFzaGVzIHdpdGggJ2ZmKCknIGluICdpJzsgYXR0ZW1wdGluZyB0byB1c2UgaW5jb21wYXRpYmxlIHJldHVybiB0eXBlIj5pbnQ8L2Vycm9yPiBmZigpIHsgcmV0dXJuIDA7fQorfQorCitjbGFzcyBjMiBpbXBsZW1lbnRzIGkgeworIHB1YmxpYyBjMigpIHt9CisgcHVibGljIHZvaWQgZmYoKSB7fQorIHByb3RlY3RlZCB2b2lkIGcoKSB7fQorIHByaXZhdGUgaW50IGZmZihTdHJpbmcgcykgeyByZXR1cm4gMDsgfQorfQorCitjbGFzcyBjMyBleHRlbmRzIGMyIHsKKyBwcm90ZWN0ZWQgYzMoKSB7fQorIHByaXZhdGUgaW50IGcoaW50IGspIHsgcmV0dXJuIDI7fQorIHByaXZhdGUgY2hhciBmZmYoU3RyaW5nIHMpIHsgcmV0dXJuIDA7IH0KK30KKworY2xhc3MgYzQgZXh0ZW5kcyBjMyB7CisgcHJpdmF0ZSBjNCgpIHt9CisgPGVycm9yIGRlc2NyPSInZygpJyBpbiAnYzQnIGNsYXNoZXMgd2l0aCAnZygpJyBpbiAnYzInOyBhdHRlbXB0aW5nIHRvIGFzc2lnbiB3ZWFrZXIgYWNjZXNzIHByaXZpbGVnZXMgKCdwcml2YXRlJyk7IHdhcyAncHJvdGVjdGVkJyI+cHJpdmF0ZTwvZXJyb3I+IHZvaWQgZygpIHt9CisgcHJpdmF0ZSBTdHJpbmcgZmZmKFN0cmluZyBzKSB0aHJvd3MgamF2YS5pby5JT0V4Y2VwdGlvbiB7IHJldHVybiBudWxsOyB9Cit9CitjbGFzcyBjNGkgZXh0ZW5kcyBjMyB7CisgcHJvdGVjdGVkIDxlcnJvciBkZXNjcj0iJ2coKScgaW4gJ2M0aScgY2xhc2hlcyB3aXRoICdnKCknIGluICdjMic7IGF0dGVtcHRpbmcgdG8gdXNlIGluY29tcGF0aWJsZSByZXR1cm4gdHlwZSI+T2JqZWN0PC9lcnJvcj4gZygpIHtyZXR1cm4gbnVsbDt9Cit9CisKKy8vIHNpYmxpbmcgaW5oZXJpdGFuY2UKK2Fic3RyYWN0IGNsYXNzIGM1IHsgYWJzdHJhY3QgcHVibGljIGludCBmZigpOyB9CitpbnRlcmZhY2UgaTUgeyB2b2lkIGZmKCk7IH0KKzxlcnJvciBkZXNjcj0iJ2ZmKCknIGluICdpNScgY2xhc2hlcyB3aXRoICdmZigpJyBpbiAnYzUnOyBtZXRob2RzIGhhdmUgdW5yZWxhdGVkIHJldHVybiB0eXBlcyI+YWJzdHJhY3QgY2xhc3MgYzYgZXh0ZW5kcyBjNSBpbXBsZW1lbnRzIGk1PC9lcnJvcj4geworfQorCitjbGFzcyBjNyB7IHB1YmxpYyBTdHJpbmcgZmYoKSB7IHJldHVybiBudWxsO30gfQorPGVycm9yIGRlc2NyPSInZmYoKScgaW4gJ2M3JyBjbGFzaGVzIHdpdGggJ2ZmKCknIGluICdpNSc7IGF0dGVtcHRpbmcgdG8gdXNlIGluY29tcGF0aWJsZSByZXR1cm4gdHlwZSI+Y2xhc3MgYzggZXh0ZW5kcyBjNyBpbXBsZW1lbnRzIGk1PC9lcnJvcj4geworfQorCisvLyBpbnRlcmZhY2Ugc2hvdWxkIG5vdCBjbGFzaCB3aXRoIE9iamVjdAoraW50ZXJmYWNlIEEgeworICAgIE9iamVjdCBjbG9uZSgpIHRocm93cyBDbG9uZU5vdFN1cHBvcnRlZEV4Y2VwdGlvbjsKKyAgICB2b2lkIGZpbmFsaXplKCk7CisKKyAgICA8ZXJyb3IgZGVzY3I9IidoYXNoQ29kZSgpJyBpbiAnQScgY2xhc2hlcyB3aXRoICdoYXNoQ29kZSgpJyBpbiAnamF2YS5sYW5nLk9iamVjdCc7IGF0dGVtcHRpbmcgdG8gdXNlIGluY29tcGF0aWJsZSByZXR1cm4gdHlwZSI+dm9pZDwvZXJyb3I+IGhhc2hDb2RlKCk7CisgICAgPGVycm9yIGRlc2NyPSInZXF1YWxzKE9iamVjdCknIGluICdBJyBjbGFzaGVzIHdpdGggJ2VxdWFscyhPYmplY3QpJyBpbiAnamF2YS5sYW5nLk9iamVjdCc7IGF0dGVtcHRpbmcgdG8gdXNlIGluY29tcGF0aWJsZSByZXR1cm4gdHlwZSI+dm9pZDwvZXJyb3I+IGVxdWFscyhPYmplY3Qgbyk7CisgICAgPGVycm9yIGRlc2NyPSIndG9TdHJpbmcoKScgaW4gJ0EnIGNsYXNoZXMgd2l0aCAndG9TdHJpbmcoKScgaW4gJ2phdmEubGFuZy5PYmplY3QnOyBhdHRlbXB0aW5nIHRvIHVzZSBpbmNvbXBhdGlibGUgcmV0dXJuIHR5cGUiPnZvaWQ8L2Vycm9yPiB0b1N0cmluZygpOworfQorCitpbnRlcmZhY2UgQ29uZmxpY3RXaXRoT2JqZWN0IHsKKyAgICAgICAgT2JqZWN0IGNsb25lKCkgdGhyb3dzIENsb25lTm90U3VwcG9ydGVkRXhjZXB0aW9uOworfQorPGVycm9yIGRlc2NyPSInY2xvbmUoKScgaW4gJ2phdmEubGFuZy5PYmplY3QnIGNsYXNoZXMgd2l0aCAnY2xvbmUoKScgaW4gJ0NvbmZsaWN0V2l0aE9iamVjdCc7IGF0dGVtcHRpbmcgdG8gYXNzaWduIHdlYWtlciBhY2Nlc3MgcHJpdmlsZWdlcyAoJ3Byb3RlY3RlZCcpOyB3YXMgJ3B1YmxpYyciPmNsYXNzIHMgaW1wbGVtZW50cyBDb25mbGljdFdpdGhPYmplY3Q8L2Vycm9yPiB7CisKK30KKworLy8gcGFyYWxsZWwgb3ZlcnJpZGluZyBtZXRob2RzIGZyb20gT2JqZWN0CitpbnRlcmZhY2UgSW5kZXJGYWNlIHsKKyAgT2JqZWN0IGNsb25lKCkgdGhyb3dzIENsb25lTm90U3VwcG9ydGVkRXhjZXB0aW9uOworfQorCitpbnRlcmZhY2UgU3ViSW5kZXJGYWNlIGV4dGVuZHMgSW5kZXJGYWNlIHsKK30KKworPGVycm9yIGRlc2NyPSInY2xvbmUoKScgaW4gJ2phdmEubGFuZy5PYmplY3QnIGNsYXNoZXMgd2l0aCAnY2xvbmUoKScgaW4gJ0luZGVyRmFjZSc7IGF0dGVtcHRpbmcgdG8gYXNzaWduIHdlYWtlciBhY2Nlc3MgcHJpdmlsZWdlcyAoJ3Byb3RlY3RlZCcpOyB3YXMgJ3B1YmxpYyciPmNsYXNzIEltcGxlbWVudGF0aW9uIGltcGxlbWVudHMgU3ViSW5kZXJGYWNlPC9lcnJvcj4geworfQorCisKKworLy9TQ1IyMDAwMgorYWJzdHJhY3QgY2xhc3MgU0NSMjAwMDJBIGV4dGVuZHMgT2JqZWN0IGltcGxlbWVudHMgUnVubmFibGUgeworICBwcm90ZWN0ZWQgYWJzdHJhY3QgaW50IGdldFNvbWUoKTsKKyAgcHJpdmF0ZSBmaW5hbCBJbm5lciBnZXRJbm5lcigpIHsgcmV0dXJuIG51bGw7IH0KKyAgcHJpdmF0ZSBjbGFzcyBJbm5lciB7IH0KK30KKworYWJzdHJhY3QgY2xhc3MgU0NSMjAwMDJCIGV4dGVuZHMgU0NSMjAwMDJBIGltcGxlbWVudHMgUnVubmFibGUgeworICBwcml2YXRlIGZpbmFsIElubmVyIGdldElubmVyKCkgeyByZXR1cm4gbnVsbDsgfQorICBwcml2YXRlIGNsYXNzIElubmVyIHsgfQorfQorYWJzdHJhY3QgY2xhc3MgU0NSMjAwMDJDIGV4dGVuZHMgU0NSMjAwMDJCIGltcGxlbWVudHMgUnVubmFibGUgeworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvQW1iaWd1b3VzTWV0aG9kQ2FsbC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvQW1iaWd1b3VzTWV0aG9kQ2FsbC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQxNTVlZTAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9BbWJpZ3VvdXNNZXRob2RDYWxsLmphdmEKQEAgLTAsMCArMSwzNSBAQAorLy8gQW1iaWd1b3VzIG1ldGhvZCBjYWxsCisKK2NsYXNzIEM2MSB7CisJcHVibGljIHZvaWQgZm9vKFN0cmluZyBzKSB7fQorCXB1YmxpYyB2b2lkIGZvbyhJbnRlZ2VyIGkpIHt9CisJcHVibGljIHZvaWQgZm9vMigpIHsKKwkJZm9vPGVycm9yIGRlc2NyPSJBbWJpZ3VvdXMgbWV0aG9kIGNhbGw6IGJvdGggJ0M2MS5mb28oU3RyaW5nKScgYW5kICdDNjEuZm9vKEludGVnZXIpJyBtYXRjaCI+KG51bGwpPC9lcnJvcj47CisJfQorfQorCitjbGFzcyBENjEgZXh0ZW5kcyBDNjEgeworCXB1YmxpYyB2b2lkIGZvbyhJbnRlZ2VyIGkpIHt9CisJcHVibGljIHZvaWQgZm9vMigpIHsKKwkJZm9vPGVycm9yIGRlc2NyPSJBbWJpZ3VvdXMgbWV0aG9kIGNhbGw6IGJvdGggJ0Q2MS5mb28oSW50ZWdlciknIGFuZCAnQzYxLmZvbyhTdHJpbmcpJyBtYXRjaCI+KG51bGwpPC9lcnJvcj47CisJCWZvbzxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgbWV0aG9kICdmb28oaW50KSciPigxKTwvZXJyb3I+OworCX0KK30KK2NsYXNzIGV4IHsKKyAgICB2b2lkIGYoU3RyaW5nIG5hbWUsIFN0cmluZ1tdIGkpe30KKyAgICB2b2lkIGYoU3RyaW5nIG5hbWUsIGV4IGkpe30KKworICAgIHZvaWQgZygpIHsKKyAgICAgICAgZjxlcnJvciBkZXNjcj0iQW1iaWd1b3VzIG1ldGhvZCBjYWxsOiBib3RoICdleC5mKFN0cmluZywgU3RyaW5nW10pJyBhbmQgJ2V4LmYoU3RyaW5nLCBleCknIG1hdGNoIj4oIiIsbnVsbCk8L2Vycm9yPjsKKyAgICB9Cit9CisKK2NsYXNzIFhYIHsKKyAgICBYWCgpIHt9CisgICAgdm9pZCBYWCgpIHt9CisKKyAgICB7CisgICAgICAgIG5ldyBYWCgpLlhYKCk7CisgICAgfQorfQorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9Bbm9uQmFzZVJlZi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvQW5vbkJhc2VSZWYuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZWYyNTI2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvQW5vbkJhc2VSZWYuamF2YQpAQCAtMCwwICsxLDExIEBACitjbGFzcyBBeworICB7CisgICAgY2xhc3MgTG9jYWx7CisgICAgICB2b2lkIGZvbygpe30KKyAgICB9CisKKyAgICBuZXcgTG9jYWwoKXsKKyAgICAgIHZvaWQgZm9vKCl7fQorICAgIH07CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9Bbm9uSW5Bbm9uLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9Bbm9uSW5Bbm9uLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjk4NjY4ZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nL0Fub25JbkFub24uamF2YQpAQCAtMCwwICsxLDIxIEBACitwdWJsaWMgY2xhc3MgUVFRIHsKKyAgeworICAgIG5ldyBPdXRlcigpeworICAgICAgdm9pZCBmb28oKXsKKyAgICAgICAgbmV3IElubmVyKCl7CisgICAgICAgICAgdm9pZCBtZXRob2QoKSB7CisgICAgICAgICAgICBzdXBlci5tZXRob2QoKTsKKyAgICAgICAgICB9CisgICAgICAgIH07CisgICAgICB9CisgICAgfTsKKyAgfQorfQorCitjbGFzcyBPdXRlcnsKKyAgY2xhc3MgSW5uZXJ7CisgICAgdm9pZCBtZXRob2QoKXsKKworICAgIH0KKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvQXNzZXJ0RXhwcmVzc2lvbi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvQXNzZXJ0RXhwcmVzc2lvbi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRmNWEyZWMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9Bc3NlcnRFeHByZXNzaW9uLmphdmEKQEAgLTAsMCArMSwxMiBAQAorLy8gYXNzZXJ0IHN0YXRlbWVudAorCitjbGFzcyBhIHsKKyAgdm9pZCBmKCkgeworICAgIGFzc2VydCBmYWxzZSA6IDxlcnJvciBkZXNjcj0iJ3ZvaWQnIHR5cGUgaXMgbm90IGFsbG93ZWQgaGVyZSI+U3lzdGVtLm91dC5wcmludGxuKCk8L2Vycm9yPjsKKworICAgIGFzc2VydCA8ZXJyb3IgZGVzY3I9IkluY29tcGF0aWJsZSB0eXBlcy4gRm91bmQ6ICdpbnQnLCByZXF1aXJlZDogJ2Jvb2xlYW4nIj4wPC9lcnJvcj47CisgICAgYXNzZXJ0IDxlcnJvciBkZXNjcj0iSW5jb21wYXRpYmxlIHR5cGVzLiBGb3VuZDogJ2NoYXInLCByZXF1aXJlZDogJ2Jvb2xlYW4nIj4nYSc8L2Vycm9yPjsKKyAgICBhc3NlcnQgPGVycm9yIGRlc2NyPSJJbmNvbXBhdGlibGUgdHlwZXMuIEZvdW5kOiAnamF2YS5sYW5nLlN0cmluZycsIHJlcXVpcmVkOiAnYm9vbGVhbiciPiIiPC9lcnJvcj47IAorICAgIGFzc2VydCA8ZXJyb3IgZGVzY3I9IkluY29tcGF0aWJsZSB0eXBlcy4gRm91bmQ6ICd2b2lkJywgcmVxdWlyZWQ6ICdib29sZWFuJyI+ZigpPC9lcnJvcj47CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9Bc3NpZ25Ub0ZpbmFsLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9Bc3NpZ25Ub0ZpbmFsLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjA0OWFiYwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nL0Fzc2lnblRvRmluYWwuamF2YQpAQCAtMCwwICsxLDcyIEBACisvLyBhc3NpZ24gdG8gZmluYWwKK2ltcG9ydCBqYXZhLmlvLio7CitpbXBvcnQgamF2YS5uZXQuKjsKK3B1YmxpYyBjbGFzcyBhMjEgIHsKKyAgZmluYWwgaW50IGZpOworICB7CisgICBmaSA9IDQ7CisgIH0KKyAgdm9pZCBmMShpbnQgaSkgeworICAgIGZpbmFsIGludCBqID0gNDsKKyAgICA8ZXJyb3IgZGVzY3I9IkNhbm5vdCBhc3NpZ24gYSB2YWx1ZSB0byBmaW5hbCB2YXJpYWJsZSAnaiciPmogPSAzPC9lcnJvcj47CisgICAgCisgIH0KKyAgdm9pZCBmMihmaW5hbCBpbnQgaSkgeworICAgIGZpbmFsIGludCBqID0gNDsKKyAgICA8ZXJyb3IgZGVzY3I9IkNhbm5vdCBhc3NpZ24gYSB2YWx1ZSB0byBmaW5hbCB2YXJpYWJsZSAnaSciPmkgPSAzPC9lcnJvcj47CisgICAgCisgIH0KKyAgdm9pZCBmMyggaW50IGlwKSB7CisgICAgPGVycm9yIGRlc2NyPSJDYW5ub3QgYXNzaWduIGEgdmFsdWUgdG8gZmluYWwgdmFyaWFibGUgJ2ZpJyI+ZmkgPSAzPC9lcnJvcj47CisgICAgZm9yIChmaW5hbCBpbnQgaSA9IDA7IGk8MzsgPGVycm9yIGRlc2NyPSJDYW5ub3QgYXNzaWduIGEgdmFsdWUgdG8gZmluYWwgdmFyaWFibGUgJ2knIj5pKys8L2Vycm9yPikgeworICAgICAgaW50IGsgPSA0OyAgCisgICAgfQorICAgIGZpbmFsIGludCBpMSA9IDA7CisgICAgPGVycm9yIGRlc2NyPSJDYW5ub3QgYXNzaWduIGEgdmFsdWUgdG8gZmluYWwgdmFyaWFibGUgJ2kxJyI+aTErKzwvZXJyb3I+OworICAgIDxlcnJvciBkZXNjcj0iQ2Fubm90IGFzc2lnbiBhIHZhbHVlIHRvIGZpbmFsIHZhcmlhYmxlICdpMSciPi0taTE8L2Vycm9yPjsKKyAgICBpbnQgaTIgPSAtaTEgKyB+aTE7CisgICAgZmluYWwgaW50IGogPSAoPGVycm9yIGRlc2NyPSJDYW5ub3QgYXNzaWduIGEgdmFsdWUgdG8gZmluYWwgdmFyaWFibGUgJ2onIj5qPTA8L2Vycm9yPikgPT0gMSB8fCBqPT0wID8gOSA6IGo7CisgIH0KKworICBzdGF0aWMgZmluYWwgYm9vbGVhbiBERUJVRyA9IGZhbHNlOworICB2b2lkIGY0KCkgeworICAgIGlmIChERUJVRyAmJiAoZmkgPCAzIHx8IGZpID40KSkgcmV0dXJuOworICB9Cit9CitjbGFzcyBCIGV4dGVuZHMgYTIxIHsKKyAgcHVibGljIEIoKSB7CisgICAgPGVycm9yIGRlc2NyPSJDYW5ub3QgYXNzaWduIGEgdmFsdWUgdG8gZmluYWwgdmFyaWFibGUgJ2ZpJyI+ZmkgPSAwPC9lcnJvcj47CisgIH0KKyAgdm9pZCBmKCkgeworICAgICBmaW5hbCBJbnRlZ2VyIGk7CisgICAgIG5ldyBSdW5uYWJsZSgpIHsKKyAgICAgICAgIHB1YmxpYyB2b2lkIHJ1bigpIHsKKyAgICAgICAgICAgICA8ZXJyb3IgZGVzY3I9IkNhbm5vdCBhc3NpZ24gYSB2YWx1ZSB0byBmaW5hbCB2YXJpYWJsZSAnaSciPmkgPSBuZXcgSW50ZWdlcig0KTwvZXJyb3I+OworICAgICAgICAgfQorICAgICB9OworICB9Cit9CisKK2NsYXNzIGEyMV8yIHsKKyAgZmluYWwgaW50IGk7CisgIGEyMV8yKCkgeworICAgIGkgPSAwOworICAgIG5ldyBSdW5uYWJsZSgpIHsKKyAgICAgIHB1YmxpYyB2b2lkIHJ1bigpIHsKKyAgICAgICAgPGVycm9yIGRlc2NyPSJDYW5ub3QgYXNzaWduIGEgdmFsdWUgdG8gZmluYWwgdmFyaWFibGUgJ2knIj5pID0gMDwvZXJyb3I+OworICAgICAgfQorICAgIH07CisgIH0KK30KKworY2xhc3MgRm9vIHsKKyAgcHJpdmF0ZSBmaW5hbCBGb28gbmV4dDsKKworICBwdWJsaWMgRm9vKEZvbyBwcmV2aW91cykgeworICAgIHRoaXMubmV4dCA9IG51bGw7CisKKyAgICBpZiAocHJldmlvdXMgIT0gbnVsbCkgeworICAgICAgPGVycm9yIGRlc2NyPSJDYW5ub3QgYXNzaWduIGEgdmFsdWUgdG8gZmluYWwgdmFyaWFibGUgJ25leHQnIj5wcmV2aW91cy5uZXh0ID0gdGhpczwvZXJyb3I+OworICAgIH0KKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvQXNzaWdubWVudENvbXBhdGlibGUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nL0Fzc2lnbm1lbnRDb21wYXRpYmxlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTJmNmI0NAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nL0Fzc2lnbm1lbnRDb21wYXRpYmxlLmphdmEKQEAgLTAsMCArMSw0NiBAQAorLy8vIGFzc2lnbm1lbnQgY29tcGF0aWJsZSB0eXBlcworaW1wb3J0IGphdmEuaW8uKjsKK2ltcG9ydCBqYXZhLm5ldC4qOworcHVibGljIGNsYXNzIGEgIHsKKyAgZmluYWwgaW50IEZJID0gMjsKKyAgZmluYWwgaW50IEZJQklHID0gMjAwMDAwMDAwOworCisKKyAgdm9pZCBmKCkgeworICAgIC8vIG5vdCBtYXJrZWQ6IE9LLCBhcyBsaXRlcmFsIHZhbHVlIGlzIGluIGJ5dGUtcmFuZ2UKKyAgICBieXRlIGIxID0gMTsKKworICAgIC8vIG1hcmtlZDogT0ssIGFzIGxpdGVyYWwgdmFsdWUgaXMgb3V0IG9mIGJ5dGUtcmFuZ2UgYW5kIGRvZXMgbm90IGNvbXBpbGUKKyAgICA8ZXJyb3IgZGVzY3I9IkluY29tcGF0aWJsZSB0eXBlcy4gRm91bmQ6ICdpbnQnLCByZXF1aXJlZDogJ2J5dGUnIj5ieXRlIGIyID0gMTAwMDs8L2Vycm9yPgorICAgCisgICAgLy8gbWFya2VkOiBPSywgYXMgY2hhci12YWx1ZSBjYW5ub3QgYmUgZGV0ZXJtaW5lZCBhbmQgZG9lcyBub3QgY29tcGlsZQorICAgIGNoYXIgYyA9IDA7CisgICAgPGVycm9yIGRlc2NyPSJJbmNvbXBhdGlibGUgdHlwZXMuIEZvdW5kOiAnY2hhcicsIHJlcXVpcmVkOiAnYnl0ZSciPmJ5dGUgYjMgPSBjOzwvZXJyb3I+CisKKyAgICAvLyBtYXJrZWQ6IE9LLCBhcyBsaXRlcmFsIGNoYXItdmFsdWUgaXMgb3V0IG9mIGJ5dGUtcmFuZ2UgYW5kIGRvZXMgbm90IGNvbXBpbGUKKyAgICA8ZXJyb3IgZGVzY3I9IkluY29tcGF0aWJsZSB0eXBlcy4gRm91bmQ6ICdjaGFyJywgcmVxdWlyZWQ6ICdieXRlJyI+Ynl0ZSBiNCA9ICdcdTIwQUMnOzwvZXJyb3I+CisKKyAgICA8ZXJyb3IgZGVzY3I9IkluY29tcGF0aWJsZSB0eXBlcy4gRm91bmQ6ICdpbnQnLCByZXF1aXJlZDogJ2J5dGUnIj5ieXRlIGI1ID0gJ1xuJyAtIDQgKyAxODAwOzwvZXJyb3I+CisgICAgLy8gbGl0ZXJhbCBjaGFyLXZhbHVlIGlzIGluIGJ5dGUtcmFuZ2UgYW5kIGNvbXBpbGVzIGZpbmUKKyAgICBieXRlIGI2ID0gJ1x1MDA3Ric7CisgICAgYnl0ZSBiNz0oc2hvcnQpIDA7CisgICAgPGVycm9yIGRlc2NyPSJJbmNvbXBhdGlibGUgdHlwZXMuIEZvdW5kOiAnbG9uZycsIHJlcXVpcmVkOiAnYnl0ZSciPmJ5dGUgYjggPSAobG9uZykwOzwvZXJyb3I+CisKKyAgICA8ZXJyb3IgZGVzY3I9IkluY29tcGF0aWJsZSB0eXBlcy4gRm91bmQ6ICdkb3VibGUnLCByZXF1aXJlZDogJ2Zsb2F0JyI+ZmxvYXQgZjEgPSA3Ny4zOzwvZXJyb3I+CisgICAgZmxvYXQgZjIgPSA3Ny4zRjsKKworICAgIHNob3J0IHMxID0gMSArIEZJOworICAgIDxlcnJvciBkZXNjcj0iSW5jb21wYXRpYmxlIHR5cGVzLiBGb3VuZDogJ2ludCcsIHJlcXVpcmVkOiAnc2hvcnQnIj5zaG9ydCBzMiA9IDEwMDAwMDA7PC9lcnJvcj4KKyAgICBzaG9ydCBzMyA9ICdGJyAlIEZJQklHOworCisgICAgY2hhciBjMSA9IDA7CisgICAgPGVycm9yIGRlc2NyPSJJbmNvbXBhdGlibGUgdHlwZXMuIEZvdW5kOiAnaW50JywgcmVxdWlyZWQ6ICdjaGFyJyI+Y2hhciBjMiA9IC0xICsgRklCSUc7PC9lcnJvcj4KKyAgICBjaGFyIGMzPShieXRlKSAwOworICAgIGNoYXIgYzQ9KHNob3J0KSAwOworICAgIDxlcnJvciBkZXNjcj0iSW5jb21wYXRpYmxlIHR5cGVzLiBGb3VuZDogJ2xvbmcnLCByZXF1aXJlZDogJ2NoYXInIj5jaGFyIGM1ID0gMEw7PC9lcnJvcj4KKworICAgIGludCBpMT0nZCc7CisgICAgPGVycm9yIGRlc2NyPSJJbmNvbXBhdGlibGUgdHlwZXMuIEZvdW5kOiAnbG9uZycsIHJlcXVpcmVkOiAnaW50JyI+aW50IGkyID0gMUw7PC9lcnJvcj4KKworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvQnJlYWtPdXRzaWRlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9CcmVha091dHNpZGUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMmZkMDViCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvQnJlYWtPdXRzaWRlLmphdmEKQEAgLTAsMCArMSw1MCBAQAorLy8gYnJlYWsgb3V0c2lkZSBvZgorcHVibGljIGNsYXNzIGEgeworCisgIHZvaWQgZigpIHsKKyAgICA8ZXJyb3IgZGVzY3I9IkJyZWFrIG91dHNpZGUgc3dpdGNoIG9yIGxvb3AiPmJyZWFrOzwvZXJyb3I+CisgICAgd2hpbGUgKHRydWUpIHsKKyAgICAgIGJyZWFrOworICAgIH0KKyAgICBkbyB7IGJyZWFrOyB9IHdoaWxlICh0cnVlKTsKKyAgICBzd2l0Y2ggKDEpIHsKKyAgICAgIGNhc2UgMTogYnJlYWs7CisgICAgfQorICAgIGZvciAoOzspIHsKKyAgICAgIGJyZWFrOworICAgIH0KKworICAgIGZvciAoOzspIHsKKyAgICAgIG5ldyBmZigpIHsKKyAgICAgICAgdm9pZCBmKCkgeyAKKyAgICAgICAgICA8ZXJyb3IgZGVzY3I9IkJyZWFrIG91dHNpZGUgc3dpdGNoIG9yIGxvb3AiPmJyZWFrOzwvZXJyb3I+CisgICAgICAgIH0KKyAgICAgIH07CisgICAgICBicmVhazsKKyAgICB9CisKKworICAgIHdoaWxlICh0cnVlKSB7CisgICAgICBjbGFzcyBzIHsKKyAgICAgICB7CisgICAgICAgICA8ZXJyb3IgZGVzY3I9IkJyZWFrIG91dHNpZGUgc3dpdGNoIG9yIGxvb3AiPmJyZWFrOzwvZXJyb3I+CisgICAgICAgfQorICAgICAgfQorICAgICAgYnJlYWs7CisgICAgfQorCisgICAgZG8geworICAgICAgY2xhc3MgcyB7CisgICAgICAgeworICAgICAgICAgPGVycm9yIGRlc2NyPSJCcmVhayBvdXRzaWRlIHN3aXRjaCBvciBsb29wIj5icmVhazs8L2Vycm9yPgorICAgICAgIH0KKyAgICAgIH0KKyAgICAgIGJyZWFrOworICAgIH0gd2hpbGUgKHRydWUpOworCisgIH0KK30KKworY2xhc3MgZmYgeworIAorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvQ2FuSGF2ZUJvZHkuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nL0NhbkhhdmVCb2R5LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2RiN2QxOQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nL0NhbkhhdmVCb2R5LmphdmEKQEAgLTAsMCArMSwxNiBAQAorYWJzdHJhY3QgcHVibGljIGNsYXNzIGExIHsKKyAgPGVycm9yIGRlc2NyPSJBYnN0cmFjdCBtZXRob2RzIGNhbm5vdCBoYXZlIGEgYm9keSI+YWJzdHJhY3Qgdm9pZCBmKCk8L2Vycm9yPiB7fQorICA8ZXJyb3IgZGVzY3I9Ik5hdGl2ZSBtZXRob2RzIGNhbm5vdCBoYXZlIGEgYm9keSI+bmF0aXZlIHZvaWQgZmYoKTwvZXJyb3I+IHt9CisKKyAgdm9pZCBmMigpIHsKKyAgICBuZXcgaWkoKSB7CisgICAgICBwdWJsaWMgaW50IGlpZihpbnQgaSkgeworICAgICAgICByZXR1cm4gMDsKKyAgICAgIH0KKyAgICB9OworICB9Cit9CisKK2ludGVyZmFjZSBpaSB7CisgIDxlcnJvciBkZXNjcj0iSW50ZXJmYWNlIG1ldGhvZHMgY2Fubm90IGhhdmUgYm9keSI+aW50IGlpZihpbnQgaSkgdGhyb3dzIEV4Y2VwdGlvbjwvZXJyb3I+IHsgcmV0dXJuIDI7IH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nL0Nhc3RGcm9tVm9pZC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvQ2FzdEZyb21Wb2lkLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDllYTljOQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nL0Nhc3RGcm9tVm9pZC5qYXZhCkBAIC0wLDAgKzEsOCBAQAorY2xhc3MgSyB7CisgICAgcHVibGljIEsgZm9vKCkgeworICAgICAgICByZXR1cm4gPGVycm9yIGRlc2NyPSJJbmNvbnZlcnRpYmxlIHR5cGVzOyBjYW5ub3QgY2FzdCAndm9pZCcgdG8gJ0snIj4oSykgYmFyKCk8L2Vycm9yPjsKKyAgICB9CisKKyAgICBwcml2YXRlIHZvaWQgYmFyKCkgeworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9DYXN0cy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvQ2FzdHMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NjIyMjI0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvQ2FzdHMuamF2YQpAQCAtMCwwICsxLDEwMiBAQAorLy8gY2FzdHMKK3B1YmxpYyBjbGFzcyBhICB7Cisgdm9pZCBmKGkgaWkpIHsKKyAgIGJvb2xlYW4gYjsKKyAgIGIgPSA8ZXJyb3IgZGVzY3I9IkluY29udmVydGlibGUgdHlwZXM7IGNhbm5vdCBjYXN0ICdpbnQnIHRvICdhJyI+MiBpbnN0YW5jZW9mIGE8L2Vycm9yPjsKKyAgIGIgPSA8ZXJyb3IgZGVzY3I9IkluY29udmVydGlibGUgdHlwZXM7IGNhbm5vdCBjYXN0ICdudWxsJyB0byAnaW50JyI+bnVsbCBpbnN0YW5jZW9mIGludDwvZXJyb3I+OworICAgYiA9IDxlcnJvciBkZXNjcj0iSW5jb252ZXJ0aWJsZSB0eXBlczsgY2Fubm90IGNhc3QgJ2MzJyB0byAnamF2YS5sYW5nLkJvb2xlYW4nIj4oYzMpbnVsbCBpbnN0YW5jZW9mIEJvb2xlYW48L2Vycm9yPjsKKworICAgYiA9IGlpIGluc3RhbmNlb2YgaTsKKyAgIGIgPSAoKGMyKWlpKSBpbnN0YW5jZW9mIGM0OworICAgYiA9IG51bGwgaW5zdGFuY2VvZiBhOworICAgYiA9IGlpIGluc3RhbmNlb2YgYzM7CisgICBiID0gQm9vbGVhbi52YWx1ZU9mKCJ0cnVlIikgaW5zdGFuY2VvZiBCb29sZWFuOworICAgYiA9IG5ldyBMb25nKDMpIGluc3RhbmNlb2YgTnVtYmVyOworICAgYiA9IHRoaXMgaW5zdGFuY2VvZiBhOworICAgYiA9IGlpIGluc3RhbmNlb2YgYTsKKyAgIGIgPSB0aGlzIGluc3RhbmNlb2YgaTsKKworCisgICAvLyBjYXN0cworICAgYzIgYzJpID0gbnVsbDsKKyAgIGMzIGMzaSA9IG51bGw7CisgICBjNCBjNGkgPSBudWxsOworICAgT2JqZWN0IG87CisgICBjNGkgPSA8ZXJyb3IgZGVzY3I9IkluY29udmVydGlibGUgdHlwZXM7IGNhbm5vdCBjYXN0ICdhJyB0byAnYzQnIj4oYzQpIHRoaXM8L2Vycm9yPjsKKyAgIG8gICA9IDxlcnJvciBkZXNjcj0iSW5jb252ZXJ0aWJsZSB0eXBlczsgY2Fubm90IGNhc3QgJ2MyJyB0byAnYm9vbGVhbiciPihib29sZWFuKSBjMmk8L2Vycm9yPjsKKyAgIG8gICA9IDxlcnJvciBkZXNjcj0iSW5jb252ZXJ0aWJsZSB0eXBlczsgY2Fubm90IGNhc3QgJ2MzJyB0byAnamF2YS5sYW5nLkludGVnZXInIj4oSW50ZWdlcikgYzNpPC9lcnJvcj47CisgICBvICAgPSA8ZXJyb3IgZGVzY3I9IkluY29udmVydGlibGUgdHlwZXM7IGNhbm5vdCBjYXN0ICdjMicgdG8gJ2EnIj4oYSkgYzJpPC9lcnJvcj47CisgICBvICAgPSA8ZXJyb3IgZGVzY3I9IkluY29udmVydGlibGUgdHlwZXM7IGNhbm5vdCBjYXN0ICdjMycgdG8gJ2ludCciPihpbnQpIGMzaTwvZXJyb3I+OworCisgICBvID0gKGEpIGlpOworICAgbyA9IChpKSBjNGk7IC8vY2FzdCB0byBpbnRlcmZhY2UKKyAgIG8gPSAoYzMpIGMyaTsKKyAgIG8gPSAoYzMpIGMzaTsKKyAgIG8gPSAoYzMpIGM0aTsKKyAgIG8gPSAoT2JqZWN0KSBpaTsKKyAgIG8gPSAoaXVucmVsYXRlZCkgaWk7CisgICBvID0gKGl1bnJlbGF0ZWQpIGMyaTsKKyAgIG8gPSAoYzQpIGMyaTsKKyAgIG8gPSAoYzQpIGlpOworICAgbyAgID0gPGVycm9yIGRlc2NyPSJJbmNvbnZlcnRpYmxlIHR5cGVzOyBjYW5ub3QgY2FzdCAnaScgdG8gJ2M1JyI+KGM1KSBpaTwvZXJyb3I+OworCisgICBpbnRbXSBhaSA9IG51bGw7CisgICBvID0gPGVycm9yIGRlc2NyPSJJbmNvbnZlcnRpYmxlIHR5cGVzOyBjYW5ub3QgY2FzdCAnaW50W10nIHRvICdieXRlW10nIj4oYnl0ZVtdKWFpPC9lcnJvcj47CisgICBvID0gPGVycm9yIGRlc2NyPSJJbmNvbnZlcnRpYmxlIHR5cGVzOyBjYW5ub3QgY2FzdCAnaW50W10nIHRvICdkb3VibGVbXSciPihkb3VibGVbXSlhaTwvZXJyb3I+OworICAgYzNbXSBhYzNpID0gbnVsbDsKKyAgIG8gPSBhYzNpOworICAgbyA9IChjNFtdKWFjM2k7CisgICBvID0gKGlbXSlhYzNpOworICAgT2JqZWN0W10gcmVzdWx0cyA9IG51bGw7CisgICBpbnQgaW5kZXggPSAoPGVycm9yIGRlc2NyPSJJbmNvbnZlcnRpYmxlIHR5cGVzOyBjYW5ub3QgY2FzdCAnamF2YS5sYW5nLk9iamVjdFtdJyB0byAnamF2YS5sYW5nLkludGVnZXInIj4oSW50ZWdlcikgcmVzdWx0czwvZXJyb3I+KS5pbnRWYWx1ZSgpOworCisKKyAgIC8vIGFycmF5cyBhbmQgU2VyaWFsaXphYmxlL0Nsb25lYWJsZS9PYmplY3QKKyAgIGludFtdIGFpMiA9IChpbnRbXSlvOworICAgQ2xvbmVhYmxlIGNsb25lYWJsZSA9IG51bGw7CisgICBhaTIgPSAoaW50W10pIGNsb25lYWJsZTsKKyAgIGphdmEuaW8uU2VyaWFsaXphYmxlIHNlcmlhbGl6YWJsZSA9IG51bGw7CisgICBhaTIgPSAoaW50W10pIHNlcmlhbGl6YWJsZTsKKworIH0KKyAKK30KKworaW50ZXJmYWNlIGl1bnJlbGF0ZWQge30KK2ludGVyZmFjZSBpIHt9CitjbGFzcyBjMiBpbXBsZW1lbnRzIGkgeworIHB1YmxpYyBjMigpIHt9CisgcHVibGljIHZvaWQgZigpIHt9CisgcHJvdGVjdGVkIHZvaWQgZygpIHt9Cit9CisKK2NsYXNzIGMzIGV4dGVuZHMgYzIgeworIHByb3RlY3RlZCBjMygpIHt9CisgcHJpdmF0ZSBpbnQgZyhpbnQgaykgeyByZXR1cm4gMDsgfQorfQorCitmaW5hbCBjbGFzcyBjNCBleHRlbmRzIGMzIHsKKyBwcml2YXRlIGM0KCkgeworICAgICAgICBpbnRbXSBhPW5ldyBpbnRbM107CisgICAgICAgIENsb25lYWJsZSBzPWE7IAorICAgICAgICBqYXZhLmlvLlNlcmlhbGl6YWJsZSBzcyA9IGE7CisgfQorfQorZmluYWwgY2xhc3MgYzUge30KKworLy8gY2xhc2hpbmcgaW50ZXJmYWNlcworaW50ZXJmYWNlIEEgeworICAgIHZvaWQgZygpOworfQoraW50ZXJmYWNlIEIgeworICAgIGludCBnKCk7Cit9CitpbnRlcmZhY2UgQkIgZXh0ZW5kcyBCIHsKK30KK2NsYXNzIEZvbyB7CisgICAgdm9pZCBmKEEgYSkgeworICAgICAgICBCIGIgPSA8ZXJyb3IgZGVzY3I9IkluY29udmVydGlibGUgdHlwZXM7IGNhbm5vdCBjYXN0ICdBJyB0byAnQiciPihCKSBhPC9lcnJvcj47CisgICAgICAgIEJCIGIyID0gPGVycm9yIGRlc2NyPSJJbmNvbnZlcnRpYmxlIHR5cGVzOyBjYW5ub3QgY2FzdCAnQScgdG8gJ0JCJyI+KEJCKSBhPC9lcnJvcj47CisgICAgICAgIEEgYTIgPSA8ZXJyb3IgZGVzY3I9IkluY29udmVydGlibGUgdHlwZXM7IGNhbm5vdCBjYXN0ICdCQicgdG8gJ0EnIj4oQSkgYjI8L2Vycm9yPjsKKyAgICB9Cit9ICAgICAgIApkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvQ2F0Y2hUeXBlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9DYXRjaFR5cGUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NGUwZmI0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvQ2F0Y2hUeXBlLmphdmEKQEAgLTAsMCArMSwzMiBAQAorLy8gZXhjZXB0aW9uIGphdmEubGFuZy5FeGNlcHRpb24gaGFzIGFscmVhZHkgYmVlbiBjYXVnaHQvIGlsbGVnYWwgY2F0Y2ggdHlwZQorCitpbXBvcnQgamF2YS5pby5FT0ZFeGNlcHRpb247CitpbXBvcnQgamF2YS5pby5JT0V4Y2VwdGlvbjsKK2NsYXNzIEZvbyB7CisgICAgdm9pZCBmKCkgeworICAgICAgICB0cnkgeworICAgICAgICB9IGNhdGNoIChUaHJvd2FibGUgdCkgeworICAgICAgICB9IGNhdGNoICg8ZXJyb3IgZGVzY3I9IkV4Y2VwdGlvbiAnamF2YS5sYW5nLkV4Y2VwdGlvbicgaGFzIGFscmVhZHkgYmVlbiBjYXVnaHQiPkV4Y2VwdGlvbjwvZXJyb3I+IGUpIHsKKyAgICAgICAgfQorICAgICAgICB0cnkgeworICAgICAgICB9IGNhdGNoIChSdW50aW1lRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgfSBjYXRjaCAoPGVycm9yIGRlc2NyPSJFeGNlcHRpb24gJ2phdmEubGFuZy5OdWxsUG9pbnRlckV4Y2VwdGlvbicgaGFzIGFscmVhZHkgYmVlbiBjYXVnaHQiPk51bGxQb2ludGVyRXhjZXB0aW9uPC9lcnJvcj4gIGUpIHsKKyAgICAgICAgfQorICAgICAgICB0cnkgeworICAgICAgICAgICAgdGhyb3cgbmV3IEVPRkV4Y2VwdGlvbigpOworICAgICAgICB9IGNhdGNoIChJT0V4Y2VwdGlvbiBlKSB7CisgICAgICAgIH0gY2F0Y2ggKDxlcnJvciBkZXNjcj0iRXhjZXB0aW9uICdqYXZhLmlvLkVPRkV4Y2VwdGlvbicgaGFzIGFscmVhZHkgYmVlbiBjYXVnaHQiPkVPRkV4Y2VwdGlvbjwvZXJyb3I+ICBlKSB7CisgICAgICAgIH0KKworICAgICAgICB0cnkgeworICAgICAgICB9CisgICAgICAgIGNhdGNoIChFeGNlcHRpb24gZSkgeworICAgICAgICB9CisgICAgICAgIGNhdGNoICg8ZXJyb3IgZGVzY3I9IkV4Y2VwdGlvbiAnamF2YS5sYW5nLkV4Y2VwdGlvbicgaGFzIGFscmVhZHkgYmVlbiBjYXVnaHQiPkV4Y2VwdGlvbjwvZXJyb3I+IGUpIHsKKyAgICAgIAorICAgICAgICB9CisgICAgfQorCisKK30KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvQ2F0Y2hVbmtub3duTWV0aG9kLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9DYXRjaFVua25vd25NZXRob2QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYTkwYjhiMgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nL0NhdGNoVW5rbm93bk1ldGhvZC5qYXZhCkBAIC0wLDAgKzEsMTEgQEAKK3B1YmxpYyBjbGFzcyBNeUNsYXNzIHsKKworIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKKyAgICB0cnkgeworICAgICAgPGVycm9yPnVua25vd25NZXRob2Q8L2Vycm9yPigpOyAvKiBSZWQgY29kZSAtIGFzIGV4cGVjdGVkICAqLworICAgIH0gY2F0Y2ggKGphdmEuaW8uSU9FeGNlcHRpb24gZSkgeyAvKiBVbndhbnRlZCByZWQgc3F1aWdnbHkgbGluZSAgKi8KKyAgICAgIGUucHJpbnRTdGFja1RyYWNlKCk7CisgICAgfQorICB9CisKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nL0NsYXNzaWNSZXRocm93LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9DbGFzc2ljUmV0aHJvdy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNlOGU3OGIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9DbGFzc2ljUmV0aHJvdy5qYXZhCkBAIC0wLDAgKzEsMTUzIEBACitjbGFzcyBDIHsKKyAgc3RhdGljIGNsYXNzIEUgZXh0ZW5kcyBFeGNlcHRpb24geyB9CisgIHN0YXRpYyBjbGFzcyBFMSBleHRlbmRzIEUgeyB9CisgIHN0YXRpYyBjbGFzcyBFMiBleHRlbmRzIEUgeyB9CisgIHN0YXRpYyBjbGFzcyBFcnIgZXh0ZW5kcyBFcnJvciB7IH0KKworICB2b2lkIG0xKCkgeworICAgIHRyeSB7CisgICAgICB0aHJvdyBuZXcgRTEoKTsKKyAgICB9CisgICAgY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CisgICAgICB0cnkgeworICAgICAgICAvLyB0aHJvd3MgRXhjZXB0aW9uIGJlZm9yZSBKREs3CisgICAgICAgIDxlcnJvciBkZXNjcj0iVW5oYW5kbGVkIGV4Y2VwdGlvbjogamF2YS5sYW5nLkV4Y2VwdGlvbiI+dGhyb3cgZTs8L2Vycm9yPgorICAgICAgfQorICAgICAgY2F0Y2ggKEUyIGUyKSB7IH0KKyAgICB9CisgIH0KKworICB2b2lkIG0yKCkgeworICAgIHRyeSB7CisgICAgICB0aHJvdyBuZXcgRTEoKTsKKyAgICB9CisgICAgY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CisgICAgICB0cnkgeworICAgICAgICBlID0gbmV3IEUxKCk7IC8vIG5vIGVmZmVjdCBiZWZvcmUgSkRLNworICAgICAgICA8ZXJyb3IgZGVzY3I9IlVuaGFuZGxlZCBleGNlcHRpb246IGphdmEubGFuZy5FeGNlcHRpb24iPnRocm93IGU7PC9lcnJvcj4KKyAgICAgIH0KKyAgICAgIGNhdGNoIChFMiBlMikgeyB9CisgICAgfQorICB9CisKKyAgdm9pZCBtMyhib29sZWFuIGYpIHRocm93cyBFMSwgRTIgeworICAgIHRyeSB7CisgICAgICBpZiAoZikKKyAgICAgICAgdGhyb3cgbmV3IEUxKCk7CisgICAgICBlbHNlCisgICAgICAgIHRocm93IG5ldyBFMigpOworICAgIH0KKyAgICBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKKyAgICAgIC8vIHRocm93cyBFeGNlcHRpb24gYmVmb3JlIEpESzcKKyAgICAgIDxlcnJvciBkZXNjcj0iVW5oYW5kbGVkIGV4Y2VwdGlvbjogamF2YS5sYW5nLkV4Y2VwdGlvbiI+dGhyb3cgZTs8L2Vycm9yPgorICAgIH0KKyAgfQorCisgIHZvaWQgbTQoYm9vbGVhbiBmKSB0aHJvd3MgRTEsIEUyIHsKKyAgICB0cnkgeworICAgICAgaWYgKGYpCisgICAgICAgIHRocm93IG5ldyBFMSgpOworICAgICAgZWxzZQorICAgICAgICB0aHJvdyBuZXcgRTIoKTsKKyAgICB9CisgICAgY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CisgICAgICBlID0gbmV3IEUyKCk7IC8vIG5vIGVmZmVjdCBiZWZvcmUgSkRLNworICAgICAgPGVycm9yIGRlc2NyPSJVbmhhbmRsZWQgZXhjZXB0aW9uOiBqYXZhLmxhbmcuRXhjZXB0aW9uIj50aHJvdyBlOzwvZXJyb3I+CisgICAgfQorICB9CisKKyAgdm9pZCBtNShib29sZWFuIGYpIHRocm93cyBFIHsKKyAgICB0cnkgeworICAgICAgaWYgKGYpCisgICAgICAgIHRocm93IG5ldyBFMSgpOworICAgICAgZWxzZSBpZiAoIWYpCisgICAgICAgIHRocm93IG5ldyBFMigpOworICAgICAgZWxzZQorICAgICAgICB0aHJvdyAoVGhyb3dhYmxlKW5ldyBFKCk7CisgICAgfQorICAgIGNhdGNoIChFMSBlMSkgeyB9CisgICAgY2F0Y2ggKGZpbmFsIEV4Y2VwdGlvbiBlKSB7CisgICAgICAvLyB0aHJvd3MgRXhjZXB0aW9uCisgICAgICA8ZXJyb3IgZGVzY3I9IlVuaGFuZGxlZCBleGNlcHRpb246IGphdmEubGFuZy5FeGNlcHRpb24iPnRocm93IGU7PC9lcnJvcj4KKyAgICB9CisgICAgY2F0Y2ggKFRocm93YWJsZSB0KSB7IH0KKyAgfQorCisgIHZvaWQgbTYoYm9vbGVhbiBmKSB0aHJvd3MgRTIgeworICAgIHRyeSB7CisgICAgICBpZiAoZikKKyAgICAgICAgdGhyb3cgbmV3IEUxKCk7CisgICAgICBlbHNlIGlmICghZikKKyAgICAgICAgdGhyb3cgbmV3IEUyKCk7CisgICAgfQorICAgIGNhdGNoIChFMSBlMSkgeyB9CisgICAgY2F0Y2ggKGZpbmFsIEV4Y2VwdGlvbiBlKSB7CisgICAgICAvLyB0aHJvd3MgRXhjZXB0aW9uIGJlZm9yZSBKREs3CisgICAgICA8ZXJyb3IgZGVzY3I9IlVuaGFuZGxlZCBleGNlcHRpb246IGphdmEubGFuZy5FeGNlcHRpb24iPnRocm93IGU7PC9lcnJvcj4KKyAgICB9CisgIH0KKworICB2b2lkIG03KCkgeworICAgIHRyeSB7CisgICAgICB0aHJvdyBuZXcgRTEoKTsKKyAgICB9CisgICAgY2F0Y2ggKEUgZSkgeworICAgICAgdHJ5IHsKKyAgICAgICAgdGhyb3cgZTsKKyAgICAgIH0KKyAgICAgIGNhdGNoIChFIHgpIHsKKyAgICAgICAgLy8gbm8gY2hhaW5lZCBleGNlcHRpb24gdHlwZSBldmFsdWF0aW9uCisgICAgICAgIDxlcnJvciBkZXNjcj0iVW5oYW5kbGVkIGV4Y2VwdGlvbjogQy5FIj50aHJvdyB4OzwvZXJyb3I+CisgICAgICB9CisgICAgfQorICB9CisKKyAgdm9pZCBtOCgpIHsKKyAgICB0cnkgeworICAgICAgdGhyb3cgbmV3IEUxKCk7CisgICAgfQorICAgIGNhdGNoIChFIGUpIHsKKyAgICAgIEUgeCA9IGU7CisgICAgICAvLyBubyBjaGFpbmVkIGV4Y2VwdGlvbiB0eXBlIGV2YWx1YXRpb24KKyAgICAgIDxlcnJvciBkZXNjcj0iVW5oYW5kbGVkIGV4Y2VwdGlvbjogQy5FIj50aHJvdyB4OzwvZXJyb3I+CisgICAgfQorICB9CisKKyAgdm9pZCBtOV8xKCkgeworICAgIHRyeSB7CisgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oKTsKKyAgICB9CisgICAgY2F0Y2ggKFRocm93YWJsZSB0KSB7CisgICAgICAvLyB0aHJvd3MgVGhyb3dhYmxlIGJlZm9yZSBKREs3CisgICAgICA8ZXJyb3IgZGVzY3I9IlVuaGFuZGxlZCBleGNlcHRpb246IGphdmEubGFuZy5UaHJvd2FibGUiPnRocm93IHQ7PC9lcnJvcj4KKyAgICB9CisgIH0KKworICB2b2lkIG05XzIoKSB7CisgICAgdHJ5IHsKKyAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigpOworICAgIH0KKyAgICBjYXRjaCAoRXJyb3IgZSkgeworICAgICAgdGhyb3cgZTsKKyAgICB9CisgIH0KKworICB2b2lkIG05XzMoKSB7CisgICAgdHJ5IHsKKyAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigpOworICAgIH0KKyAgICBjYXRjaCAoRXJyIGUpIHsKKyAgICAgIHRocm93IGU7CisgICAgfQorICB9CisKKyAgdm9pZCBtOV80KCkgeworICAgIHRyeSB7CisgICAgICBpZiAoZmFsc2UpIHRocm93IG5ldyBSdW50aW1lRXhjZXB0aW9uKCk7CisgICAgfQorICAgIGNhdGNoIChFeGNlcHRpb24gZSkgeworICAgICAgLy8gdGhyb3dzIEV4Y2VwdGlvbiBiZWZvcmUgSkRLNworICAgICAgPGVycm9yIGRlc2NyPSJVbmhhbmRsZWQgZXhjZXB0aW9uOiBqYXZhLmxhbmcuRXhjZXB0aW9uIj50aHJvdyBlOzwvZXJyb3I+CisgICAgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvQ29tcHV0ZUNvbnN0YW50LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9Db21wdXRlQ29uc3RhbnQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40M2E3OTRkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvQ29tcHV0ZUNvbnN0YW50LmphdmEKQEAgLTAsMCArMSwyMCBAQAorY2xhc3MgQV9DUnsKKyAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgQ09OU1QgPSA8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnQ09OU1RYJyI+Q09OU1RYPC9lcnJvcj47CisKKyAgeworICAgIHN3aXRjaCgwKXsKKyAgICAgIGNhc2UgPGVycm9yIGRlc2NyPSJDb25zdGFudCBleHByZXNzaW9uIHJlcXVpcmVkIj5DT05TVDwvZXJyb3I+OgorICAgIH0KKyAgfQorfQorCitjbGFzcyBBQ2xhc3MgeworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBTUEFDRSA9ICIgIjsKKyAgICBjbGFzcyBzIHsKKyAgICAgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIFJFVF9WQUwgPQorICAgICAgICAgICAgICAgICAgICAiUm9nZXIiICsKKyAgICAgICAgICAgICAgICAgICAgU1BBQ0UgKworICAgICAgICAgICAgICAgICAgICBTUEFDRSArIC8vIGNvbW1lbnQgYW5kIHVuY29tbWVudCB0aGlzIGxpbmUKKyAgICAgICAgICAgICAgICAgICAgIiBEb2RnZXIiOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9DdHJDYWxsSXNGaXJzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvQ3RyQ2FsbElzRmlyc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MzA1OWZiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvQ3RyQ2FsbElzRmlyc3QuamF2YQpAQCAtMCwwICsxLDYzIEBACisvLyBjYWxsIHRvIHN1cGVyIG11c3QgYmUgZmlyc3QKK3B1YmxpYyBjbGFzcyBhIHsKKyBhKCkge30KKyBhKGludCBpKSB7fQorfQorCitjbGFzcyBiIGV4dGVuZHMgYSB7CisgYigpIHsKKyAgIGludCBpID0gMzsKKyAgIDxlcnJvciBkZXNjcj0iQ2FsbCB0byAnc3VwZXIoKScgbXVzdCBiZSBmaXJzdCBzdGF0ZW1lbnQgaW4gY29uc3RydWN0b3IgYm9keSI+c3VwZXIoKTwvZXJyb3I+OworIH0KKyBiKGludCBpKSB7CisgICB0aGlzKCk7CisgICA8ZXJyb3IgZGVzY3I9IkNhbGwgdG8gJ3N1cGVyKCknIG11c3QgYmUgZmlyc3Qgc3RhdGVtZW50IGluIGNvbnN0cnVjdG9yIGJvZHkiPnN1cGVyKDIpPC9lcnJvcj47CisgfQorIGIoY2hhciBpKSB7CisgICBzdXBlcig0KTsKKyAgIDxlcnJvciBkZXNjcj0iQ2FsbCB0byAndGhpcygpJyBtdXN0IGJlIGZpcnN0IHN0YXRlbWVudCBpbiBjb25zdHJ1Y3RvciBib2R5Ij50aGlzKCk8L2Vycm9yPjsKKyB9CisKKyBiKFN0cmluZyBzKSB7CisgICB0cnkgeworICAgICA8ZXJyb3IgZGVzY3I9IkNhbGwgdG8gJ3N1cGVyKCknIG11c3QgYmUgZmlyc3Qgc3RhdGVtZW50IGluIGNvbnN0cnVjdG9yIGJvZHkiPnN1cGVyKDIpPC9lcnJvcj47CisgICB9CisgICBmaW5hbGx5IHsKKyAgIH0KKyB9CisgYihTdHJpbmcgcywgaW50IGkpIHsKKyAgIHsKKyAgICAgPGVycm9yIGRlc2NyPSJDYWxsIHRvICdzdXBlcigpJyBtdXN0IGJlIGZpcnN0IHN0YXRlbWVudCBpbiBjb25zdHJ1Y3RvciBib2R5Ij5zdXBlcigyKTwvZXJyb3I+OworICAgfQorIH0KKworICAgIHZvaWQgZigpIHsKKyAgICAgIDxlcnJvciBkZXNjcj0iQ2FsbCB0byAnc3VwZXIoKScgbXVzdCBiZSBmaXJzdCBzdGF0ZW1lbnQgaW4gY29uc3RydWN0b3IgYm9keSI+c3VwZXIoKTwvZXJyb3I+OworICAgIH0KKyAgICB2b2lkIGcoKSB7CisgICAgICA8ZXJyb3IgZGVzY3I9IkNhbGwgdG8gJ3RoaXMoKScgbXVzdCBiZSBmaXJzdCBzdGF0ZW1lbnQgaW4gY29uc3RydWN0b3IgYm9keSI+dGhpcygpPC9lcnJvcj47CisgICAgfQorCit9CitjbGFzcyBPIGV4dGVuZHMgPGVycm9yIGRlc2NyPSJObyBlbmNsb3NpbmcgaW5zdGFuY2Ugb2YgdHlwZSAnQScgaXMgaW4gc2NvcGUiPkEuQjwvZXJyb3I+Cit7CisgIHB1YmxpYyBPKEEgYSkKKyAgeworICAgICAgaW50IGkgPSAwOworICAgICAgPGVycm9yIGRlc2NyPSJDYWxsIHRvICdhLnN1cGVyKCknIG11c3QgYmUgZmlyc3Qgc3RhdGVtZW50IGluIGNvbnN0cnVjdG9yIGJvZHkiPmEuc3VwZXIoKTwvZXJyb3I+OworICB9CisgIHB1YmxpYyBPKEEgYSxpbnQgaSkKKyAgeworICAgICAgYS5zdXBlcigpOworICAgICAgaSA9IDA7CisgIH0KK30KKworY2xhc3MgQQoreworICBjbGFzcyBCCisgIHsKKyAgICAgIGNsYXNzIEN7fQorICB9CisKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nL0N5Y2xpY0luaGVyaXRhbmNlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9DeWNsaWNJbmhlcml0YW5jZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE0MWI1OTIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9DeWNsaWNJbmhlcml0YW5jZS5qYXZhCkBAIC0wLDAgKzEsNDAgQEAKKy8vIGN5Y2xpYyBpbmhlcnRpYW5jZQoraW1wb3J0IGphdmEuaW8uKjsKK2ltcG9ydCBqYXZhLm5ldC4qOworCis8ZXJyb3IgZGVzY3I9IkN5Y2xpYyBpbmhlcml0YW5jZSBpbnZvbHZpbmcgJ0ZvbyciPmNsYXNzIEZvbyBleHRlbmRzIEZvbzwvZXJyb3I+IHsKK30KKworCitpbnRlcmZhY2UgRm9vMSBleHRlbmRzIDxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdCYXInIj5CYXI8L2Vycm9yPiB7CisgICAgaW50ZXJmYWNlIEJhciB7CisgICAgfQorfQorCisKKzxlcnJvciBkZXNjcj0iQ3ljbGljIGluaGVyaXRhbmNlIGludm9sdmluZyAnYzEnIj5jbGFzcyBjMSBleHRlbmRzIGMyPC9lcnJvcj4ge30KKzxlcnJvciBkZXNjcj0iQ3ljbGljIGluaGVyaXRhbmNlIGludm9sdmluZyAnYzInIj5jbGFzcyBjMiBleHRlbmRzIGMxPC9lcnJvcj4ge30KKworCisKK2NsYXNzIGExIHsKKyAgICBjbGFzcyBiIGV4dGVuZHMgYTEgeworICAgIH0KK30KKworCitjbGFzcyBhIHsKKyBzdGF0aWMgY2xhc3Mgc2IgZXh0ZW5kcyBhIHsKKyAgIGNsYXNzIGMgZXh0ZW5kcyBhIHsKKyAgICAgdm9pZCBmKCkgeworICAgICAgIGNsYXNzIGQgZXh0ZW5kcyBhIHsKKyAgICAgICB9CisgICAgIH0KKyAgIH0KKyB9CisgY2xhc3MgYiBleHRlbmRzIHNiIHsKKyAgY2xhc3MgYyBleHRlbmRzIGEgeworICB9CisgfQorfQorICAgICAgICAgClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvRGVmYXVsdFBhY2thZ2VDbGFzc0luU3RhdGljSW1wb3J0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9EZWZhdWx0UGFja2FnZUNsYXNzSW5TdGF0aWNJbXBvcnQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZmFkYjM3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvRGVmYXVsdFBhY2thZ2VDbGFzc0luU3RhdGljSW1wb3J0LmphdmEKQEAgLTAsMCArMSwxMiBAQAoraW1wb3J0IHN0YXRpYyA8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnTXlDb25zdGFudHMnIj5NeUNvbnN0YW50czwvZXJyb3I+Lio7CitpbXBvcnQgPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ015Q29uc3RhbnRzJyI+TXlDb25zdGFudHM8L2Vycm9yPjsKKworcHVibGljIGNsYXNzIE15Q2xpZW50Cit7CisgICAgcHJpdmF0ZSBpbnQgZmllbGQgPSBNeUNvbnN0YW50cy5DT05TVEFOVDsKK30KKworY2xhc3MgTXlDb25zdGFudHMKK3sKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBDT05TVEFOVCA9IDE7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvRGVwcmVjYXRlZC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvRGVwcmVjYXRlZC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY4NDgyYzMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9EZXByZWNhdGVkLmphdmEKQEAgLTAsMCArMSw4OSBAQAorLy8gZGVwcmVjYXRlZAorCitjbGFzcyBhICB7CisgIC8qKgorICAqIEBkZXByZWNhdGVkCisgICovCisgIHZvaWQgZigpIHt9CisKKyAgLyoqCisgICogQGRlcHJlY2F0ZWQKKyAgKi8KKyAgaW50IGRlcDsKKyAgaW50IG5vdGRlcDsKKworICAvKioKKyAgKiBAZGVwcmVjYXRlZAorICAqLworICBhKGludCBpLGludCBqLGludCBrKSB7CisgICAgIG5ldyA8d2FybmluZyBkZXNjcj0iJ2EoaW50LCBpbnQsIGludCknIGlzIGRlcHJlY2F0ZWQiPmE8L3dhcm5pbmc+KGsraStqLDx3YXJuaW5nIGRlc2NyPSInZGVwJyBpcyBkZXByZWNhdGVkIj5kZXA8L3dhcm5pbmc+LG5vdGRlcCk7CisgIH0KK30KKworY2xhc3MgYiBleHRlbmRzIGEgeworICB2b2lkIDx3YXJuaW5nIGRlc2NyPSJPdmVycmlkZXMgZGVwcmVjYXRlZCBtZXRob2QgaW4gJ2EnIj5mPC93YXJuaW5nPigpIHsKKyAgICBzdXBlci48d2FybmluZyBkZXNjcj0iJ2YoKScgaXMgZGVwcmVjYXRlZCI+Zjwvd2FybmluZz4oKTsKKyAgfQorCisgIGIoKSB7CisgICAgPHdhcm5pbmcgZGVzY3I9IidiKGludCknIGlzIGRlcHJlY2F0ZWQiPnRoaXM8L3dhcm5pbmc+KDEpOworICB9CisKKyAgLyoqCisgICogQGRlcHJlY2F0ZWQKKyAgKi8KKyAgYihpbnQgaSkgeworICAgIDx3YXJuaW5nIGRlc2NyPSInYShpbnQsIGludCwgaW50KScgaXMgZGVwcmVjYXRlZCI+c3VwZXI8L3dhcm5pbmc+KDAsMCxpKTsKKyAgICBTeXN0ZW0ub3V0LnByaW50KGkpOworICB9Cit9CisKK2NsYXNzIGMgZXh0ZW5kcyBiIHsKKyAgLy8gYi5mIGlzIG5vdCBkZXByZWNhdGVkIAorICB2b2lkIGYoKSB7fQorfQorCitpbnRlcmZhY2UgaTEgeworICAvKioKKyAgKiBAZGVwcmVjYXRlZAorICAqLworICB2b2lkIGYoKTsKK30KK2Fic3RyYWN0IGNsYXNzIGFjMSB7CisgIC8qKgorICAqIEBkZXByZWNhdGVkCisgICovCisgIHB1YmxpYyBhYnN0cmFjdCB2b2lkIGYoKTsKK30KKworY2xhc3MgY2kxIGV4dGVuZHMgYWMxIGltcGxlbWVudHMgaTEgeworIC8vIG5vIGNoYW5jZSBub3QgdG8gaW1wbGVtZW50IGl0CisgcHVibGljIHZvaWQgZigpIHt9Cit9CisKK2NsYXNzIEFhYSB7CisgIHB1YmxpYyBBYWEoU3RyaW5nIHMpIHsKKyAgICBTeXN0ZW0ub3V0LnByaW50bG4ocyk7CisgIH0KKworICAvKioKKyAgICogQGRlcHJlY2F0ZWQKKyAgICovCisgIHB1YmxpYyBBYWEoKSB7fQorCisgIHB1YmxpYyB2b2lkIGZvbygpIHsKKyAgICBuZXcgQWFhKCJhc2Rhc2RhZCIpIHt9OworICB9Cit9CisKK2NsYXNzIEFub255bSB7CisgICAgLyoqCisgICAgICogQGRlcHJlY2F0ZWQKKyAgICAgKi8KKyAgICBwdWJsaWMgQW5vbnltKFN0cmluZyBzc3MpIHsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKHNzcyk7CisgICAgfQorICAgIHB1YmxpYyB2b2lkIGZvbygpIHsKKyAgICAgICAgbmV3IDx3YXJuaW5nIGRlc2NyPSInQW5vbnltKGphdmEubGFuZy5TdHJpbmcpJyBpcyBkZXByZWNhdGVkIj5Bbm9ueW08L3dhcm5pbmc+KCJhc2Rhc2QiKSB7fTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9Eb3RCZWZvcmVEZWNsLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9Eb3RCZWZvcmVEZWNsLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDU4YjQwNQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nL0RvdEJlZm9yZURlY2wuamF2YQpAQCAtMCwwICsxLDcgQEAKK3B1YmxpYyBjbGFzcyBBX0RCRCB7CisgIHsKKyAgICBpbnQgZmllbGQgPSAwOworICAgIGZpZWxkLgorICAgIDxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdTdHJpbmcnIj5TdHJpbmc8L2Vycm9yPiBzID0gbnVsbDsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvRHVwbGljYXRlQ2xhc3MuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nL0R1cGxpY2F0ZUNsYXNzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjRmNDc2NgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nL0R1cGxpY2F0ZUNsYXNzLmphdmEKQEAgLTAsMCArMSwxMiBAQAorLy8gZHVwbGljYXRlcyBpbiBleHRlbmRzCisKK2NsYXNzIGEgeworfQorCitjbGFzcyBiIGV4dGVuZHMgPGVycm9yIGRlc2NyPSJEdXBsaWNhdGUgY2xhc3M6ICdhJyI+YTwvZXJyb3I+LCA8ZXJyb3IgZGVzY3I9IkR1cGxpY2F0ZSBjbGFzczogJ2EnIj5hPC9lcnJvcj4geworfQorCitpbnRlcmZhY2UgaSB7fQorCitjbGFzcyBjIGltcGxlbWVudHMgPGVycm9yIGRlc2NyPSJEdXBsaWNhdGUgY2xhc3M6ICdpJyI+aTwvZXJyb3I+LCA8ZXJyb3IgZGVzY3I9IkR1cGxpY2F0ZSBjbGFzczogJ2knIj5pPC9lcnJvcj4geworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nL0R1cGxpY2F0ZUNsYXNzTWV0aG9kLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9EdXBsaWNhdGVDbGFzc01ldGhvZC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE1ZDc0ZWJlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvRHVwbGljYXRlQ2xhc3NNZXRob2QuamF2YQpAQCAtMCwwICsxLDc1IEBACitwdWJsaWMgY2xhc3MgYSB7CisgIDxlcnJvciBkZXNjcj0iJ2YoaW50KScgaXMgYWxyZWFkeSBkZWZpbmVkIGluICdhJyI+dm9pZCBmKGludCBpKTwvZXJyb3I+IHsgfQorICA8ZXJyb3IgZGVzY3I9IidmKGludCknIGlzIGFscmVhZHkgZGVmaW5lZCBpbiAnYSciPnZvaWQgZihpbnQgaSk8L2Vycm9yPiB7CisKKyAgICBuZXcgYzEoKSB7CisgICAgICA8ZXJyb3IgZGVzY3I9IidmMSgpJyBpcyBhbHJlYWR5IGRlZmluZWQgaW4gJ0Fub255bW91cyBjbGFzcyBkZXJpdmVkIGZyb20gYzEnIj5wdWJsaWMgdm9pZCBmMSgpPC9lcnJvcj4ge30KKyAgICAgIDxlcnJvciBkZXNjcj0iJ2YxKCknIGlzIGFscmVhZHkgZGVmaW5lZCBpbiAnQW5vbnltb3VzIGNsYXNzIGRlcml2ZWQgZnJvbSBjMSciPnB1YmxpYyB2b2lkIGYxKCk8L2Vycm9yPiB7fQorICAgIH07CisgIH0KK30KK2Fic3RyYWN0IGNsYXNzIGMxIHsKKyAgYWJzdHJhY3Qgdm9pZCBmMSgpOworfQorCitpbnRlcmZhY2UgaWkgeworICBhYnN0cmFjdCB2b2lkIGYxKCk7CisgIHZvaWQgZjIoKTsKK30KKworPGVycm9yIGRlc2NyPSJEdXBsaWNhdGUgY2xhc3M6ICdhJyI+Y2xhc3MgYTwvZXJyb3I+IHsKK30KKworY2xhc3MgRm9vIHsKKyAgICB2b2lkIGYoKSB7CisgICAgICAgIGNsYXNzIEJhciB7CisgICAgICAgIH0KKyAgICAgICAgPGVycm9yIGRlc2NyPSJEdXBsaWNhdGUgY2xhc3M6ICdCYXInIj5jbGFzcyBCYXI8L2Vycm9yPiB7CisgICAgICAgIH0KKyAgICB9Cit9CisKKworY2xhc3MgYzIgeworICBjbGFzcyBjMyB7CisgICAgdm9pZCBmKCkgeworICAgICAgPGVycm9yIGRlc2NyPSJEdXBsaWNhdGUgY2xhc3M6ICdjMiciPmNsYXNzIGMyPC9lcnJvcj4geworICAgICAgfQorICAgIH0KKyAgfQorfQorCisKK2NsYXNzIGNvbnQgeworICAgICAgICBjbGFzcyBCIHsKKyAgICAgICAgfQorICAgICAgICB7CisgICAgICAgICAgICBjbGFzcyBCIHsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8ZXJyb3IgZGVzY3I9IkR1cGxpY2F0ZSBjbGFzczogJ0InIj5jbGFzcyBCPC9lcnJvcj4geworICAgICAgICB9Cit9CitjbGFzcyBjb250MiB7CisgICAgICAgIHsKKyAgICAgICAgICAgIGNsYXNzIEIgeworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGNsYXNzIEIgeworICAgICAgICB9Cit9CitjbGFzcyBvayB7CisgICAgICAgIGNsYXNzIExvY2Fse307CisgICAgICAgIGNsYXNzIEFub3RoZXJMb2NhbCB7CisgICAgICAgICAgICBjbGFzcyBMb2NhbCB7fTsKKyAgICAgICAgICAgIHZvaWQgYmFyKCkgeworICAgICAgICAgICAgICAgIGNsYXNzIExvY2FsIHt9OworICAgICAgICAgICAgICAgIExvY2FsIGw7CisgICAgICAgICAgICB9CisgICAgICAgIH0KK30KKworY2xhc3Mgb2syIHsKKyAgcHVibGljIG9rMigpIHt9CisgIHB1YmxpYyB2b2lkIG9rMigpIHt9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvRHVwbGljYXRlQ2xhc3NNZXRob2RUb3AuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nL0R1cGxpY2F0ZUNsYXNzTWV0aG9kVG9wLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjQyZTM1MAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nL0R1cGxpY2F0ZUNsYXNzTWV0aG9kVG9wLmphdmEKQEAgLTAsMCArMSw3NSBAQAorcHVibGljIGNsYXNzIGEgeworICB2b2lkIGYoaW50IGkpIHsgfQorICA8ZXJyb3IgZGVzY3I9IidmKGludCknIGlzIGFscmVhZHkgZGVmaW5lZCBpbiAnYSciPnZvaWQgZihpbnQgaSk8L2Vycm9yPiB7CisKKyAgICBuZXcgYzEoKSB7CisgICAgICBwdWJsaWMgdm9pZCBmMSgpIHt9CisgICAgICA8ZXJyb3IgZGVzY3I9IidmMSgpJyBpcyBhbHJlYWR5IGRlZmluZWQgaW4gJ0Fub255bW91cyBjbGFzcyBkZXJpdmVkIGZyb20gYzEnIj5wdWJsaWMgdm9pZCBmMSgpPC9lcnJvcj4ge30KKyAgICB9OworICB9Cit9CithYnN0cmFjdCBjbGFzcyBjMSB7CisgIGFic3RyYWN0IHZvaWQgZjEoKTsKK30KKworaW50ZXJmYWNlIGlpIHsKKyAgYWJzdHJhY3Qgdm9pZCBmMSgpOworICB2b2lkIGYyKCk7Cit9CisKKzxlcnJvciBkZXNjcj0iRHVwbGljYXRlIGNsYXNzOiAnYSciPmNsYXNzIGE8L2Vycm9yPiB7Cit9CisKK2NsYXNzIEZvbyB7CisgICAgdm9pZCBmKCkgeworICAgICAgICBjbGFzcyBCYXIgeworICAgICAgICB9CisgICAgICAgIDxlcnJvciBkZXNjcj0iRHVwbGljYXRlIGNsYXNzOiAnQmFyJyI+Y2xhc3MgQmFyPC9lcnJvcj4geworICAgICAgICB9CisgICAgfQorfQorCisKK2NsYXNzIGMyIHsKKyAgY2xhc3MgYzMgeworICAgIHZvaWQgZigpIHsKKyAgICAgIDxlcnJvciBkZXNjcj0iRHVwbGljYXRlIGNsYXNzOiAnYzInIj5jbGFzcyBjMjwvZXJyb3I+IHsKKyAgICAgIH0KKyAgICB9CisgIH0KK30KKworCitjbGFzcyBjb250IHsKKyAgICAgICAgY2xhc3MgQiB7CisgICAgICAgIH0KKyAgICAgICAgeworICAgICAgICAgICAgPGVycm9yIGRlc2NyPSJEdXBsaWNhdGUgY2xhc3M6ICdCJyI+Y2xhc3MgQjwvZXJyb3I+IHsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8ZXJyb3IgZGVzY3I9IkR1cGxpY2F0ZSBjbGFzczogJ0InIj5jbGFzcyBCPC9lcnJvcj4geworICAgICAgICB9Cit9CitjbGFzcyBjb250MiB7CisgICAgICAgIHsKKyAgICAgICAgICAgIGNsYXNzIEIgeworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGNsYXNzIEIgeworICAgICAgICB9Cit9CitjbGFzcyBvayB7CisgICAgICAgIGNsYXNzIExvY2Fse307CisgICAgICAgIGNsYXNzIEFub3RoZXJMb2NhbCB7CisgICAgICAgICAgICBjbGFzcyBMb2NhbCB7fTsKKyAgICAgICAgICAgIHZvaWQgYmFyKCkgeworICAgICAgICAgICAgICAgIGNsYXNzIExvY2FsIHt9OworICAgICAgICAgICAgICAgIExvY2FsIGw7CisgICAgICAgICAgICB9CisgICAgICAgIH0KK30KKworY2xhc3Mgb2syIHsKKyAgcHVibGljIG9rMigpIHt9CisgIHB1YmxpYyB2b2lkIG9rMigpIHt9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvRHVwbGljYXRlU3dpdGNoTGFiZWxzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9EdXBsaWNhdGVTd2l0Y2hMYWJlbHMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMmY3YzYyNgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nL0R1cGxpY2F0ZVN3aXRjaExhYmVscy5qYXZhCkBAIC0wLDAgKzEsNjYgQEAKKy8vIGR1cGxpY2F0ZSBsYWJlbHMKK2ltcG9ydCBqYXZhLmlvLio7CitpbXBvcnQgamF2YS5uZXQuKjsKKworcHVibGljIGNsYXNzIGEgIHsKKworICBmaW5hbCBpbnQgRkkgPSA0OworCisgIHZvaWQgZihmaW5hbCBpbnQgaSkgeworICAgIHN3aXRjaCAoaSkgeworICAgICAgPGVycm9yIGRlc2NyPSJEdXBsaWNhdGUgZGVmYXVsdCBsYWJlbCI+ZGVmYXVsdDo8L2Vycm9yPiBicmVhazsKKyAgICAgIGNhc2UgMTogYnJlYWs7CisgICAgICA8ZXJyb3IgZGVzY3I9IkR1cGxpY2F0ZSBkZWZhdWx0IGxhYmVsIj5kZWZhdWx0OjwvZXJyb3I+IGJyZWFrOworICAgIH0KKworICAgIHN3aXRjaCAoaSkgeworICAgICAgY2FzZSA8ZXJyb3IgZGVzY3I9IkR1cGxpY2F0ZSBsYWJlbCAnMSciPjE8L2Vycm9yPjogYnJlYWs7CisgICAgICBjYXNlIDxlcnJvciBkZXNjcj0iRHVwbGljYXRlIGxhYmVsICcxJyI+MTwvZXJyb3I+OiBicmVhazsKKyAgICB9CisKKyAgICBzd2l0Y2ggKGkpIHsKKyAgICAgIGNhc2UgPGVycm9yIGRlc2NyPSJEdXBsaWNhdGUgbGFiZWwgJzEnIj5GSS8yIC0gMTwvZXJyb3I+OiBicmVhazsKKyAgICAgIGNhc2UgPGVycm9yIGRlc2NyPSJEdXBsaWNhdGUgbGFiZWwgJzEnIj4oMSArIDM1LzE2KSUyPC9lcnJvcj46IGJyZWFrOworICAgICAgY2FzZSBGSSAtIDg6IGJyZWFrOworICAgIH0KKworICAgICAgICAgZmluYWwgYnl0ZSBiID0gMTI3OworCisgICAgICAgICBzd2l0Y2goaSkgeworICAgICAgICAgICAgY2FzZSA8ZXJyb3IgZGVzY3I9IkR1cGxpY2F0ZSBsYWJlbCAnMTI3JyI+YjwvZXJyb3I+OgorICAgICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJiPSIgKyBiICsgIjsiKTsKKyAgICAgICAgICAgIGNhc2UgPGVycm9yIGRlc2NyPSJEdXBsaWNhdGUgbGFiZWwgJzEyNyciPjEyNzwvZXJyb3I+OgorICAgICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJNeVN3aXRjaC5NeVN3aXRjaCIpOworICAgICAgICAgfQorCisKKyAgICAvLyBpbnRlcm5hbGl6ZSBzdHJpbmdzCisgICAgc3dpdGNoICgwKSB7CisgICAgICAgIGNhc2UgMDoKKyAgICAgICAgY2FzZSAiXDQxMCIgPT0gIiEwIiA/IDEgOiAwOgorICAgICAgICBjYXNlICIiPT0iIisiIiA/IDMgOiAwOgorICAgIH0KKworICAgICAgICBzd2l0Y2ggKDApIHsKKyAgICAgICAgY2FzZSAwOgorICAgICAgICAvL2Nhc2UgMS4vMCA9PSBEb3VibGUuUE9TSVRJVkVfSU5GSU5JVFkgPyAxIDogMDoKKworICAgICAgICAvL2Nhc2UgMS4vMCA9PSBGbG9hdC5QT1NJVElWRV9JTkZJTklUWSA/IDIgOiAwOgorCisgICAgICAgIC8vIGNvbW1lbnRlZCBvdXQgcmVmCisgICAgICAgIC8vIGRvZXMgbm90IHdvcmsgd2hlbiBydW5uaW5nIHVuZGVyIEpSRQorICAgICAgICAvL2Nhc2UgLTEuLzAgPT0gRG91YmxlLk5FR0FUSVZFX0lORklOSVRZID8gMyA6IDA6CisgICAgICAgIC8vY2FzZSAtMS4vMCA9PSBGbG9hdC5ORUdBVElWRV9JTkZJTklUWSA/IDQgOiAwOgorICAgICAgICAvL2Nhc2UgRG91YmxlLlBPU0lUSVZFX0lORklOSVRZID09IEZsb2F0LlBPU0lUSVZFX0lORklOSVRZID8gNSA6IDA6CisgICAgICAgIC8vY2FzZSBEb3VibGUuTkVHQVRJVkVfSU5GSU5JVFkgPT0gRmxvYXQuTkVHQVRJVkVfSU5GSU5JVFkgPyA2IDogMDoKKyAgICAgICAgLy9jYXNlIERvdWJsZS5OYU4gIT0gRmxvYXQuTmFOID8gNyA6IDA6CisgICAgICAgIC8vY2FzZSBJbnRlZ2VyLk1JTl9WQUxVRSA9PSAtMi4xNDc0ODM2NDhlOSA/IDggOiAwOgorICAgICAgICAvL2Nhc2UgSW50ZWdlci5NSU5fVkFMVUUgPT0gLTIuMTQ3NDgzNjVlOWYgPyA5IDogMDoKKyAgICAgICAgLy9jYXNlIExvbmcuTUlOX1ZBTFVFID09IC05LjIyMzM3MjAzNjg1NDc3NmUxOCA/IDEwIDogMDoKKyAgICAgICAgLy9jYXNlIExvbmcuTUlOX1ZBTFVFID09IC05LjIyMzM3MmUxOGYgPyAxMSA6IDA6CisKKworCisgICAgICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nL0VuY2xvc2luZ0luc3RhbmNlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9FbmNsb3NpbmdJbnN0YW5jZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY1ZGQ2YWMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9FbmNsb3NpbmdJbnN0YW5jZS5qYXZhCkBAIC0wLDAgKzEsOTcgQEAKKy8vIG5vIGVuY2xvc2luZyBpbnN0YW5jZSB3aGVuIGluaGVyaXRpbmcgaW5uZXIgY2xhc3MKKworCitjbGFzcyBBNTcgeworICAgIGNsYXNzIFggIHsKKyAgICB9CisgICAgdm9pZCBmKCkgeworICAgICAgICBjbGFzcyBYTCBleHRlbmRzIEE1Ny5YIHsKKyAgICAgICAgfQorCisgICAgfQorICAgIGNsYXNzIFhYTCBleHRlbmRzIEE1Ny5YIHsKKyAgICB9Cit9CitjbGFzcyBCNTcgeworICAgIGNsYXNzIFggZXh0ZW5kcyA8ZXJyb3IgZGVzY3I9Ik5vIGVuY2xvc2luZyBpbnN0YW5jZSBvZiB0eXBlICdBNTcnIGlzIGluIHNjb3BlIj5BNTcuWDwvZXJyb3I+IHsKKyAgICB9Cit9CitjbGFzcyBDNTcgZXh0ZW5kcyA8ZXJyb3IgZGVzY3I9Ik5vIGVuY2xvc2luZyBpbnN0YW5jZSBvZiB0eXBlICdCNTcnIGlzIGluIHNjb3BlIj5CNTcuWDwvZXJyb3I+IHsKK30KKworCitjbGFzcyBpbm5lcl9ob2xkZXIgeworICBjbGFzcyBpbm5lciB7fQorfQorCitwdWJsaWMgY2xhc3MgQzFfNTcgZXh0ZW5kcyBpbm5lcl9ob2xkZXIgeworICAvLyBpbm5lciBpbnN0YW5jZSBhdmFpbGFibGUgdGhyb3VnaCBpbmhlcml0YW5jZQorICBwcm90ZWN0ZWQgY2xhc3MgYyBleHRlbmRzIGlubmVyIHsgCisgICAgcHJpdmF0ZSBjbGFzcyBpaWkgZXh0ZW5kcyBpbm5lciB7fQorICB9Cit9CisKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KK2NsYXNzIFBhcmVudEEgeworICAgIGNsYXNzIElubmVyQSB7CisKKyAgICB9Cit9CisKK2NsYXNzIFBhcmVudEIgZXh0ZW5kcyBQYXJlbnRBIHsKKyAgICBzdGF0aWMgY2xhc3MgSW5uZXJCIGV4dGVuZHMgPGVycm9yIGRlc2NyPSJObyBlbmNsb3NpbmcgaW5zdGFuY2Ugb2YgdHlwZSAnUGFyZW50QScgaXMgaW4gc2NvcGUiPklubmVyQTwvZXJyb3I+IHsKKworICAgIH0KKyAgICBjbGFzcyBJbm5lckMgZXh0ZW5kcyBJbm5lckEgeworCisgICAgfQorfQorLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCitjbGFzcyBjIHsKKyAgICBzdGF0aWMgY2xhc3MgcyB7CisgICAgICAgIHZvaWQgZigpIHsKKyAgICAgICAgICAgIE9iamVjdCBvID0gdGhpczsKKyAgICAgICAgfQorICAgIH0KKyAgICB2b2lkIGYoKSB7fQorfQorCitjbGFzcyBjYyB7CisgICAgc3RhdGljIGNsYXNzIHNjIGV4dGVuZHMgYyB7CisgICAgICAgIHZvaWQgZigpIHsKKyAgICAgICAgICAgIHN1cGVyLmYoKTsKKyAgICAgICAgfQorICAgIH0KK30KKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworY2xhc3MgQQoreworICBjbGFzcyBCCisgIHsKKyAgICAgIGNsYXNzIEN7fQorICB9Cit9CitjbGFzcyBBQiBleHRlbmRzIEEuQiB7CisgIEFCKEEgYSkgeworICAgIGEuc3VwZXIoKTsKKyAgfQorICBBQigpIHsKKyAgICB0aGlzKG5ldyBBKCkpOworICB9Cit9CitjbGFzcyBBQklsbGVnYWwgZXh0ZW5kcyA8ZXJyb3IgZGVzY3I9Ik5vIGVuY2xvc2luZyBpbnN0YW5jZSBvZiB0eXBlICdBJyBpcyBpbiBzY29wZSI+QS5CPC9lcnJvcj4geworICBBQklsbGVnYWwoQSBhKSB7CisgIH0KKyAgQUJJbGxlZ2FsKCkgeworICAgIHRoaXMobmV3IEEoKSk7CisgIH0KK30KKworCitwdWJsaWMgY2xhc3MgQTQyIHsKKyAgY2xhc3MgQiB7fQorfQorCitjbGFzcyBENDIgZXh0ZW5kcyBBNDIuQiB7CisgIEQ0MigpIHtuZXcgQTQyKCkuc3VwZXIoKTt9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9FeGNlcHRpb25OZXZlclRocm93bi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvRXhjZXB0aW9uTmV2ZXJUaHJvd24uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MTU4YTc0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvRXhjZXB0aW9uTmV2ZXJUaHJvd24uamF2YQpAQCAtMCwwICsxLDEwNSBAQAorLy8gRXhjZXB0aW9uIGlzIG5ldmVyIHRocm93biBpbiBtZXRob2QKKworaW1wb3J0IGphdmEuaW8uKjsKK2ltcG9ydCBqYXZhLnNxbC4qOworCitjbGFzcyBhIHsKKyAgICBwcml2YXRlIHZvaWQgZigpIHRocm93cyA8d2FybmluZyBkZXNjcj0iRXhjZXB0aW9uICdqYXZhLmlvLklPRXhjZXB0aW9uJyBpcyBuZXZlciB0aHJvd24gaW4gdGhlIG1ldGhvZCI+SU9FeGNlcHRpb248L3dhcm5pbmc+IHsKKyAgICB9CisgICAgcHVibGljIHZvaWQgdXNlZigpIHRocm93cyBFeGNlcHRpb24geyAKKyAgICAgICAgZigpOyAvL2F2b2lkIHVudXNlZCBmKCkKKyAgICB9CisKKyAgICBwcml2YXRlIHZvaWQgZjIoKSB0aHJvd3MgPHdhcm5pbmcgZGVzY3I9IkV4Y2VwdGlvbiAnamF2YS5pby5JT0V4Y2VwdGlvbicgaXMgbmV2ZXIgdGhyb3duIGluIHRoZSBtZXRob2QiPklPRXhjZXB0aW9uPC93YXJuaW5nPiB7CisgICAgICB0cnkgeworICAgICAgICB0aHJvdyBuZXcgSU9FeGNlcHRpb24oKTsKKyAgICAgIH0KKyAgICAgIGZpbmFsbHkgeworICAgICAgICByZXR1cm47CisgICAgICB9CisgICAgfQorICAgIHB1YmxpYyBmaW5hbCB2b2lkIGYzKCkgdGhyb3dzIDx3YXJuaW5nIGRlc2NyPSJFeGNlcHRpb24gJ2phdmEuaW8uSU9FeGNlcHRpb24nIGlzIG5ldmVyIHRocm93biBpbiB0aGUgbWV0aG9kIj5JT0V4Y2VwdGlvbjwvd2FybmluZz4geworICAgIH0KKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgZjQoKSB0aHJvd3MgPHdhcm5pbmcgZGVzY3I9IkV4Y2VwdGlvbiAnamF2YS5pby5JT0V4Y2VwdGlvbicgaXMgbmV2ZXIgdGhyb3duIGluIHRoZSBtZXRob2QiPklPRXhjZXB0aW9uPC93YXJuaW5nPiB7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgdXNlZjIoKSB0aHJvd3MgRXhjZXB0aW9uIHsgCisgICAgICAgIGYyKCk7IC8vYXZvaWQgdW51c2VkIGYoKQorICAgIH0KKyAgICBwdWJsaWMgdm9pZCB1c2VmMygpIHRocm93cyBFeGNlcHRpb24geyAKKyAgICAgICAgZjMoKTsgLy9hdm9pZCB1bnVzZWQgZigpCisgICAgfQorICAgIHB1YmxpYyB2b2lkIHVzZWY0KCkgdGhyb3dzIEV4Y2VwdGlvbiB7IAorICAgICAgICBmNCgpOyAvL2F2b2lkIHVudXNlZCBmKCkKKyAgICB9CisKK30KKworZmluYWwgY2xhc3MgRmluYWwgeworICB7CisgICAgICBuZXcgT2JqZWN0KCkgeworICAgICAgICAgIHZvaWQgZigpIHRocm93cyA8d2FybmluZyBkZXNjcj0iRXhjZXB0aW9uICdqYXZhLmlvLklPRXhjZXB0aW9uJyBpcyBuZXZlciB0aHJvd24gaW4gdGhlIG1ldGhvZCI+SU9FeGNlcHRpb248L3dhcm5pbmc+IHt9CisgICAgICB9OworICB9CisgIAorICB2b2lkIGYoKSB0aHJvd3MgPHdhcm5pbmcgZGVzY3I9IkV4Y2VwdGlvbiAnamF2YS5pby5JT0V4Y2VwdGlvbicgaXMgbmV2ZXIgdGhyb3duIGluIHRoZSBtZXRob2QiPklPRXhjZXB0aW9uPC93YXJuaW5nPiB7fQorICBwdWJsaWMgdm9pZCBmMSgpIHRocm93cyA8d2FybmluZyBkZXNjcj0iRXhjZXB0aW9uICdqYXZhLmlvLklPRXhjZXB0aW9uJyBpcyBuZXZlciB0aHJvd24gaW4gdGhlIG1ldGhvZCI+SU9FeGNlcHRpb248L3dhcm5pbmc+IHt9CisgIHByb3RlY3RlZCB2b2lkIGYyKCkgdGhyb3dzIDx3YXJuaW5nIGRlc2NyPSJFeGNlcHRpb24gJ2phdmEuaW8uSU9FeGNlcHRpb24nIGlzIG5ldmVyIHRocm93biBpbiB0aGUgbWV0aG9kIj5JT0V4Y2VwdGlvbjwvd2FybmluZz4ge30KK30KKworCisKK2NsYXNzIGExIHsKKyAgICBhMSgpIHRocm93cyA8d2FybmluZyBkZXNjcj0iRXhjZXB0aW9uICdqYXZhLmlvLklPRXhjZXB0aW9uJyBpcyBuZXZlciB0aHJvd24gaW4gdGhlIG1ldGhvZCI+amF2YS5pby5JT0V4Y2VwdGlvbjwvd2FybmluZz4sIDx3YXJuaW5nIGRlc2NyPSJFeGNlcHRpb24gJ2phdmEuc3FsLlNRTEV4Y2VwdGlvbicgaXMgbmV2ZXIgdGhyb3duIGluIHRoZSBtZXRob2QiPlNRTEV4Y2VwdGlvbjwvd2FybmluZz57CisgICAgfQorCit9CisKK2NsYXNzIGIxIGV4dGVuZHMgYTEgeworICAgIGIxKCkgdGhyb3dzIElPRXhjZXB0aW9uLCBTUUxFeGNlcHRpb24geworICAgIH0KK30KKworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KK3B1YmxpYyBjbGFzcyBGb29UaHJvdworeworICBmaW5hbCBGb28gZm9vID0gbmV3IEZvbygpOyAgLy8gQ2FuIHRocm93IEZvb0V4Y2VwdGlvbgorICBGb29UaHJvdygpIHRocm93cyBGb28geworICB9Cit9CitjbGFzcyBGb28gZXh0ZW5kcyBFeGNlcHRpb24geworICAgIHB1YmxpYyBGb28oKSB0aHJvd3MgRm9vIHsKKyAgICAgICAgdGhyb3cgbmV3IEZvbygpOworICAgIH0KK30KKy8vLy8vLy8vLy8vLy8vCitjbGFzcyBIIHsKKyAgICBwdWJsaWMgSCgpIHRocm93cyBGaWxlTm90Rm91bmRFeGNlcHRpb24geyAgICAgICAgICAgIAorICAgIH0KKworICAgIHsKKyAgICAgICAgaWYodHJ1ZSkgeworICAgICAgICAgICAgdGhyb3cgbmV3IEZpbGVOb3RGb3VuZEV4Y2VwdGlvbigpOworICAgICAgICB9CisgICAgfQorfQorCitjbGFzcyBQb3NzaWJsZUlkZWFCdWdzIGltcGxlbWVudHMgamF2YS5pby5TZXJpYWxpemFibGUgeworCisgICAgcHJpdmF0ZSB2b2lkIHdyaXRlT2JqZWN0KGphdmEuaW8uT2JqZWN0T3V0cHV0U3RyZWFtIG91dCkgdGhyb3dzIGphdmEuaW8uSU9FeGNlcHRpb24geworICAgIH0KKworICAgIHByaXZhdGUgdm9pZCByZWFkT2JqZWN0KGphdmEuaW8uT2JqZWN0SW5wdXRTdHJlYW0gaW4pCisgICAgICAgICAgICB0aHJvd3MgamF2YS5pby5JT0V4Y2VwdGlvbiwgQ2xhc3NOb3RGb3VuZEV4Y2VwdGlvbiB7CisgICAgfQorCisKKyAgICBwcml2YXRlIE9iamVjdCB3cml0ZVJlcGxhY2UoKSB0aHJvd3MgamF2YS5pby5PYmplY3RTdHJlYW1FeGNlcHRpb24geworICAgICAgICAgICAgcmV0dXJuIHRoaXM7CisgICAgfQorCisgICAgcHJpdmF0ZSBPYmplY3QgcmVhZFJlc29sdmUoKSB0aHJvd3MgamF2YS5pby5PYmplY3RTdHJlYW1FeGNlcHRpb24geworICAgICAgICByZXR1cm4gbnVsbDsKKyAgICB9Cit9CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nL0V4Y2VwdGlvbk5ldmVyVGhyb3duSW5UcnkuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nL0V4Y2VwdGlvbk5ldmVyVGhyb3duSW5UcnkuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zODc4MmMzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvRXhjZXB0aW9uTmV2ZXJUaHJvd25JblRyeS5qYXZhCkBAIC0wLDAgKzEsMTMgQEAKK2ltcG9ydCBqYXZhLmlvLio7CitpbXBvcnQgamF2YS5zcWwuKjsKKworLy8vLy8vLy8vLy8vCitjbGFzcyB4IHsKKyAgdm9pZCBmKCkgeworICAgIHRyeSB7CisgICAgICBpbnQgaSA9IDA7CisgICAgfQorICAgIGNhdGNoICg8ZXJyb3IgZGVzY3I9IkV4Y2VwdGlvbiAnamF2YS5pby5JT0V4Y2VwdGlvbicgaXMgbmV2ZXIgdGhyb3duIGluIHRoZSBjb3JyZXNwb25kaW5nIHRyeSBibG9jayI+SU9FeGNlcHRpb24gZTwvZXJyb3I+KSB7CisgICAgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvRXhwbGljaXRDb25zdHJ1Y3Rvckludm9jYXRpb24uamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nL0V4cGxpY2l0Q29uc3RydWN0b3JJbnZvY2F0aW9uLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGJiNTNiZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nL0V4cGxpY2l0Q29uc3RydWN0b3JJbnZvY2F0aW9uLmphdmEKQEAgLTAsMCArMSw0MiBAQAorY2xhc3MgQSB7CisgICAgY2xhc3MgUyB7CisgICAgfQorCisgICAgY2xhc3MgQyBleHRlbmRzIFMgeworICAgICAgICBDKEEgYykgeworICAgICAgICAgICAgYy5zdXBlcigpOworICAgICAgICB9CisgICAgICAgIEMoQiBiKSB7CisgICAgICAgICAgICBiLnN1cGVyKCk7CisgICAgICAgIH0KKyAgICB9Cit9CitjbGFzcyBCIGV4dGVuZHMgQSB7fQorCitjbGFzcyBBMSB7CisgICAgc3RhdGljIGNsYXNzIFMgeworICAgIH0KKworICAgIGNsYXNzIEMgZXh0ZW5kcyBTIHsKKyAgICAgICAgQyhBMSBjKSB7CisgICAgICAgICAgICA8ZXJyb3IgZGVzY3I9IidBMS5TJyBpcyBub3QgYW4gaW5uZXIgY2xhc3MiPmM8L2Vycm9yPi5zdXBlcigpOworICAgICAgICB9CisgICAgfQorfQorCitjbGFzcyBDMiB7CisgICAgQzIoU3RyaW5nIGMpeworICAgICAgICA8ZXJyb3IgZGVzY3I9IidqYXZhLmxhbmcuT2JqZWN0JyBpcyBub3QgYW4gaW5uZXIgY2xhc3MiPmM8L2Vycm9yPi5zdXBlcigpOworICAgIH0KK30KKworY2xhc3MgQTMgeworICAgIGNsYXNzIFMgeworICAgIH0KKworICAgIGNsYXNzIEMgZXh0ZW5kcyBTIHsKKyAgICAgICAgQyhTdHJpbmcgYykgeworICAgICAgICAgIDxlcnJvciBkZXNjcj0iSW5jb21wYXRpYmxlIHR5cGVzLiBGb3VuZDogJ2phdmEubGFuZy5TdHJpbmcnLCByZXF1aXJlZDogJ0EzJyI+YzwvZXJyb3I+LnN1cGVyKCk7CisgICAgICAgIH0KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvRXhwcmVzc2lvbnNJblN3aXRjaC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvRXhwcmVzc2lvbnNJblN3aXRjaC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVjNzI1ZDUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9FeHByZXNzaW9uc0luU3dpdGNoLmphdmEKQEAgLTAsMCArMSw1NCBAQAorLy8gY29uc3RhbnQgZXhwcmVzc2lvbnMgaW4gc3dpdGNoCisKK2ltcG9ydCBqYXZhLnV0aWwuRGF0ZTsKKworY2xhc3MgYSB7CisgZmluYWwgaW50IGYgPSAtMzsKKworIHZvaWQgZjEoKSB7CisgICAgICAgIHN3aXRjaCAoMCkgeworICAgICAgICBjYXNlIDxlcnJvciBkZXNjcj0iQ29uc3RhbnQgZXhwcmVzc2lvbiByZXF1aXJlZCI+bmV3IEludGVnZXIoMCkuTUFYX1ZBTFVFPC9lcnJvcj46CisgICAgICAgIH0KKyAgICAgICAgaW50IGs9MDsKKyAgICAgICAgc3dpdGNoICgwKSB7CisgICAgICAgIGNhc2UgPGVycm9yIGRlc2NyPSJDb25zdGFudCBleHByZXNzaW9uIHJlcXVpcmVkIj5mYWxzZSA/IGsgOiAwPC9lcnJvcj46CisgICAgICAgIGNhc2UgPGVycm9yIGRlc2NyPSJDb25zdGFudCBleHByZXNzaW9uIHJlcXVpcmVkIj50cnVlID8gMSA6IGs8L2Vycm9yPjoKKyAgICAgICAgfQorICAgICAgICBib29sZWFuIGI9dHJ1ZTsKKyAgICAgICAgc3dpdGNoICgwKSB7CisgICAgICAgIGNhc2UgPGVycm9yIGRlc2NyPSJDb25zdGFudCBleHByZXNzaW9uIHJlcXVpcmVkIj5mYWxzZSAmJiBiID8gMCA6IDE8L2Vycm9yPjoKKyAgICAgICAgY2FzZSA8ZXJyb3IgZGVzY3I9IkNvbnN0YW50IGV4cHJlc3Npb24gcmVxdWlyZWQiPnRydWUgfHwgYiA/IDIgOiAwPC9lcnJvcj46CisgICAgICAgIH0KKyAgICAgICAgZmluYWwgT2JqZWN0IG9iaj0iIjsKKyAgICAgICAgc3dpdGNoICgwKSB7CisgICAgICAgIGNhc2UgPGVycm9yIGRlc2NyPSJDb25zdGFudCBleHByZXNzaW9uIHJlcXVpcmVkIj5vYmo9PSIiID8gMCA6IDA8L2Vycm9yPjoKKyAgICAgICAgY2FzZSA8ZXJyb3IgZGVzY3I9IkNvbnN0YW50IGV4cHJlc3Npb24gcmVxdWlyZWQiPnRoaXMuZjwvZXJyb3I+OgorICAgICAgICB9CisKKyAgICBpbnQgaSA9IDA7CisgICAgZmluYWwgSW50ZWdlciBJID0gbnVsbDsKKyAgICBzd2l0Y2ggKDApIHsKKyAgICAgIGNhc2UgPGVycm9yIGRlc2NyPSJDb25zdGFudCBleHByZXNzaW9uIHJlcXVpcmVkIj5pPC9lcnJvcj46CisgICAgICBjYXNlIDxlcnJvciBkZXNjcj0iQ29uc3RhbnQgZXhwcmVzc2lvbiByZXF1aXJlZCI+SS5NQVhfVkFMVUU8L2Vycm9yPjoKKyAgICAgIGNhc2UgSW50ZWdlci5NQVhfVkFMVUU6CisgICAgfQorCisgfQorCisgc3RhdGljIGNsYXNzIGIgeworICAgc3RhdGljIGZpbmFsIGludCBjID0gODsKKyB9Cisgdm9pZCBjZjEoKSB7CisgICAgZmluYWwgaW50IGkgPSA5OworICAgIHN3aXRjaCAoMCkgeworICAgICAgY2FzZSBpOgorICAgICAgY2FzZSAyKzQ6CisgICAgICBjYXNlIGY6CisgICAgICBjYXNlIGEuYi5jOgorICAgIH0KKyAgICAgICAgc3dpdGNoICgwKSB7CisgICAgICAgIGNhc2UgdHJ1ZSBeIHRydWUgPyAwIDogMDoKKyAgICAgICAgfQorCisgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nL0V4dGVuZE11bHRpcGxlQ2xhc3Nlcy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvRXh0ZW5kTXVsdGlwbGVDbGFzc2VzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjY2YjJlYwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nL0V4dGVuZE11bHRpcGxlQ2xhc3Nlcy5qYXZhCkBAIC0wLDAgKzEsMTYgQEAKKy8vIG11bHRpcGxlIGV4dGVuZAorCitpbXBvcnQgamF2YS5pby4qOworCitjbGFzcyBjMSB7fQorY2xhc3MgYzIgaW1wbGVtZW50cyBTZXJpYWxpemFibGUsIEV4dGVybmFsaXphYmxlIHsKKyAgICBwdWJsaWMgdm9pZCB3cml0ZUV4dGVybmFsKE9iamVjdE91dHB1dCBvdXQpIHRocm93cyBJT0V4Y2VwdGlvbiB7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgcmVhZEV4dGVybmFsKE9iamVjdElucHV0IGluKSB0aHJvd3MgSU9FeGNlcHRpb24sIENsYXNzTm90Rm91bmRFeGNlcHRpb24geworICAgIH0KK30JCitjbGFzcyBhIDxlcnJvciBkZXNjcj0iQ2xhc3MgY2Fubm90IGV4dGVuZCBtdWx0aXBsZSBjbGFzc2VzIj5leHRlbmRzIGMxLGMyPC9lcnJvcj4geworCisKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9FeHRlbmRzQ2xhdXNlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9FeHRlbmRzQ2xhdXNlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWFjZWY5YgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nL0V4dGVuZHNDbGF1c2UuamF2YQpAQCAtMCwwICsxLDE3IEBACitjbGFzcyBzIHsKKyAgaW50IGk7CisgIGNsYXNzIGlubiBleHRlbmRzIDxlcnJvciBkZXNjcj0iQ2xhc3MgbmFtZSBleHBlY3RlZCI+aTwvZXJyb3I+IHt9Cit9CisKK2ludGVyZmFjZSBJRm9vIHsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGRvdWJsZSBVTktOT1dOID0gLTE7Cit9CitjbGFzcyBGb28gaW1wbGVtZW50cyA8ZXJyb3IgZGVzY3I9IkNsYXNzIG5hbWUgZXhwZWN0ZWQiPklGb28uVU5LTk9XTjwvZXJyb3I+IHsKKyAgLy8gZXJyb3Igc2hvdWxkIGJlIHNob3duIGhlcmUKK30KK2NsYXNzIEZvbzIgZXh0ZW5kcyA8ZXJyb3IgZGVzY3I9IkNsYXNzIG5hbWUgZXhwZWN0ZWQiPklGb28uVU5LTk9XTjwvZXJyb3I+IHsKKyAgLy8gZXJyb3Igc2hvdWxkIGJlIHNob3duIGhlcmUKK30KK2NsYXNzIFhzcyBpbXBsZW1lbnRzIDxlcnJvciBkZXNjcj0iQ2xhc3MgbmFtZSBleHBlY3RlZCI+SW50ZWdlci5NQVhfVkFMVUU8L2Vycm9yPiB7fQorY2xhc3MgWHNzMiBleHRlbmRzIDxlcnJvciBkZXNjcj0iQ2xhc3MgbmFtZSBleHBlY3RlZCI+SW50ZWdlci5NQVhfVkFMVUU8L2Vycm9yPiB7fQorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9GaWVsZERvdWJsZUluaXRpYWxpemF0aW9uLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9GaWVsZERvdWJsZUluaXRpYWxpemF0aW9uLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzNkZTM3YgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nL0ZpZWxkRG91YmxlSW5pdGlhbGl6YXRpb24uamF2YQpAQCAtMCwwICsxLDExOCBAQAorLy8gZmllbGRzIGRvdWJsZSBpbml0aWFsaXphdGlvbgoraW1wb3J0IGphdmEuaW8uKjsKK2ltcG9ydCBqYXZhLm5ldC4qOworY2xhc3MgRm9vIHsKKyAgICBmaW5hbCBpbnQgazsKKyAgICBmaW5hbCBpbnQgZmYgPSA1OworICAgIEZvbyhpbnQgaSkgeworICAgICAgICA8ZXJyb3IgZGVzY3I9IlZhcmlhYmxlICdrJyBtaWdodCBhbHJlYWR5IGhhdmUgYmVlbiBhc3NpZ25lZCB0byI+azwvZXJyb3I+ID0xOworICAgIH0KKyAgICB7CisgICAgICAgIGs9MDsKKyAgICB9Cit9CisKK2NsYXNzIGMyIHsKKyAgICBzdGF0aWMgZmluYWwgaW50IGs7CisgICAgc3RhdGljIHsKKyAgICAgICAgaz0wOworICAgIH0KKyAgICBjMigpIHsKKyAgICAgIGludCBpID0gazsKKyAgICB9CisgICAgc3RhdGljIHsKKyAgICAgICA8ZXJyb3IgZGVzY3I9IlZhcmlhYmxlICdrJyBtaWdodCBhbHJlYWR5IGhhdmUgYmVlbiBhc3NpZ25lZCB0byI+azwvZXJyb3I+ID0xOworICAgIH0KK30KKworY2xhc3MgYzMgeworICAgIGZpbmFsIGludCBrOworICAgIHsKKyAgICAgICAgaz0wOworICAgIH0KKyAgICBjMygpIHsKKyAgICAgIGludCBpID0gazsKKyAgICB9CisgICAgeworICAgICAgIDxlcnJvciBkZXNjcj0iVmFyaWFibGUgJ2snIG1pZ2h0IGFscmVhZHkgaGF2ZSBiZWVuIGFzc2lnbmVkIHRvIj5rPC9lcnJvcj4gPTE7CisgICAgfQorfQorCitjbGFzcyBjNCB7CisgICAgZmluYWwgaW50IGs7CisgICAgeworICAgICAgICBrPTA7CisgICAgfQorICAgIGM0KGludCBpKSB7CisgICAgICBpZiAoZmFsc2UpIAorICAgICAgICA8ZXJyb3IgZGVzY3I9IlZhcmlhYmxlICdrJyBtaWdodCBhbHJlYWR5IGhhdmUgYmVlbiBhc3NpZ25lZCB0byI+azwvZXJyb3I+ID0xOworICAgIH0KKyAgICBjNCgpIHsKKyAgICAgIHRoaXMoMCk7CisgICAgICA8ZXJyb3IgZGVzY3I9IlZhcmlhYmxlICdrJyBtaWdodCBhbHJlYWR5IGhhdmUgYmVlbiBhc3NpZ25lZCB0byI+azwvZXJyb3I+ID0xOworICAgIH0KK30KKy8vIHJlZGlyZWN0ZWQgY3RycworY2xhc3MgYzUgeworICAgIDxlcnJvciBkZXNjcj0iVmFyaWFibGUgJ2snIG1pZ2h0IG5vdCBoYXZlIGJlZW4gaW5pdGlhbGl6ZWQiPmZpbmFsIGludCBrPC9lcnJvcj47CisgICAgYzUoaW50IGkpIHsKKyAgICAgIGsgPTE7CisgICAgfQorICAgIGM1KCkgeworICAgICAgdGhpcygwKTsKKyAgICAgIDxlcnJvciBkZXNjcj0iVmFyaWFibGUgJ2snIG1pZ2h0IGFscmVhZHkgaGF2ZSBiZWVuIGFzc2lnbmVkIHRvIj5rPC9lcnJvcj4gPTE7CisgICAgfQorCisKKyAgICBjNShjaGFyIGMpIHsKKyAgICB9CisgICAgYzUoaW50IGksIGludCBqKSB7CisgICAgICB0aGlzKCdjJyk7CisgICAgICBrID0gNTsKKyAgICB9CisgICAgYzUoU3RyaW5nIHMpIHsKKyAgICAgIHRoaXMoMCwwKTsKKyAgICAgIDxlcnJvciBkZXNjcj0iVmFyaWFibGUgJ2snIG1pZ2h0IGFscmVhZHkgaGF2ZSBiZWVuIGFzc2lnbmVkIHRvIj5rPC9lcnJvcj4gPTE7CisgICAgfQorfQorCitjbGFzcyBjNiB7CisgICAgZmluYWwgaW50IGk7CisgICAgYzYoKSB7CisgICAgICAgIHRoaXMoMCk7CisgICAgfQorICAgIGM2KGludCBpKSB7CisgICAgICAgIHRoaXMoMCwwKTsKKyAgICB9CisgICAgYzYoaW50IGssIGludCBsKSB7CisgICAgICAgIGkgPSBrOworICAgIH0KK30KKworCisKKy8vIG11bHRpcGxlIGluaXRhbGl6ZXJzCitjbGFzcyBjNyB7CisgcHJpdmF0ZSBmaW5hbCBTdHJpbmcgeDsKKyB7CisgICB4ID0gIkhlbGxvIjsKKyB9CisKKyBwcml2YXRlIGZpbmFsIFN0cmluZyB5OworIHsKKyAgIHkgPSB4OyAKKyB9CisKKyBwcml2YXRlIHN0YXRpYyBpbnQgaTsKKyB7CisgICBpbnQgaiA9IDA7CisgfQorCisgc3RhdGljIHsKKyAgIGkgPSA5OworIH0KKworIHsKKyAgIDxlcnJvciBkZXNjcj0iVmFyaWFibGUgJ3knIG1pZ2h0IGFscmVhZHkgaGF2ZSBiZWVuIGFzc2lnbmVkIHRvIj55PC9lcnJvcj4gPSAiIitpOworIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nL0ZpbmFsRmllbGRJbml0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9GaW5hbEZpZWxkSW5pdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE3YmQyOWEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9GaW5hbEZpZWxkSW5pdC5qYXZhCkBAIC0wLDAgKzEsMjIzIEBACisvLyBmaW5hbCBGaWVsZHMgaW5pdGlhbGl6YXRpb24KK2ltcG9ydCBqYXZhLmlvLio7CitpbXBvcnQgamF2YS5uZXQuKjsKK2ltcG9ydCBqYXZhLmF3dC5ldmVudC4qOworCitwdWJsaWMgY2xhc3MgYSAgeworICAvKioKKyAgICogamF2YWRvYyBzaG91bGQgbm90IGJlIGhpZ2hsaWdodGVkCisgICAqLyAKKyAgPGVycm9yIGRlc2NyPSJWYXJpYWJsZSAnamF2YURvY2VkJyBtaWdodCBub3QgaGF2ZSBiZWVuIGluaXRpYWxpemVkIj5maW5hbCBpbnQgamF2YURvY2VkPC9lcnJvcj47CisKKyAgPGVycm9yIGRlc2NyPSJWYXJpYWJsZSAnc2ZpMScgbWlnaHQgbm90IGhhdmUgYmVlbiBpbml0aWFsaXplZCI+c3RhdGljIGZpbmFsIGludCBzZmkxPC9lcnJvcj47CisgIDxlcnJvciBkZXNjcj0iVmFyaWFibGUgJ3NmaTInIG1pZ2h0IG5vdCBoYXZlIGJlZW4gaW5pdGlhbGl6ZWQiPnN0YXRpYyBmaW5hbCBpbnQgc2ZpMjwvZXJyb3I+OworICA8ZXJyb3IgZGVzY3I9IlZhcmlhYmxlICdmaTEnIG1pZ2h0IG5vdCBoYXZlIGJlZW4gaW5pdGlhbGl6ZWQiPmZpbmFsIGludCBmaTE8L2Vycm9yPjsKKyAgPGVycm9yIGRlc2NyPSJWYXJpYWJsZSAnZmkyJyBtaWdodCBub3QgaGF2ZSBiZWVuIGluaXRpYWxpemVkIj5maW5hbCBpbnQgZmkyPC9lcnJvcj47CisKKyAgY2xhc3MgaW5uZXIgeworICAgIDxlcnJvciBkZXNjcj0iVmFyaWFibGUgJ2ZpaScgbWlnaHQgbm90IGhhdmUgYmVlbiBpbml0aWFsaXplZCI+ZmluYWwgaW50IGZpaTwvZXJyb3I+OworICB9CisgIGZpbmFsIGludCBmaTM7CisgIGZpbmFsIGludCBmaTQ7CisKKworICBzdGF0aWMgZmluYWwgaW50IGNzZmkxID0gMDsKKyAgc3RhdGljIGZpbmFsIGludCBjc2ZpMiA9IGNzZmkxICsgMTMgLyA1OworICBzdGF0aWMgZmluYWwgaW50IGNzZmkzOyAKKyAgc3RhdGljIHsKKyAgIGlmIChjc2ZpMSA8IDEzKSB7CisgICAgIGNzZmkzID0gY3NmaTIgKyAoY3NmaTEgPT0gNCA/IDUgOiBjc2ZpMi8xMyk7CisgICB9CisgICBlbHNlIHsKKyAgICAgY3NmaTMgPSAwOworICAgICBzZmkyID0gMjsKKyAgIH0KKyAgfQorCisKKyAgZmluYWwgaW50IGNpZmkxID0gMTsKKyAgZmluYWwgaW50IGNpZmkyID0gZmYoKTsKKyAgZmluYWwgaW50IGNpZmkzOworCisgIGludCBmZigpIHsgCisgICAgaW50IGkgPSBjaWZpMSArIGNpZmkyICsgY2lmaTMgKyBmaTMgKyBmaTQ7CisgICAgcmV0dXJuIGk7IAorICB9CisKKyAgeworICAgc3dpdGNoIChjaWZpMSkgeworICAgIGNhc2UgMjogY2lmaTMgPSAyOyBicmVhazsKKyAgICBjYXNlIDE6IGNpZmkzID0gMjA7IGJyZWFrOworICAgIGNhc2UgMDogY2lmaTMgPSAyMTsgYnJlYWs7CisgICAgZGVmYXVsdDogY2lmaTMgPSAyMjsgYnJlYWs7CisgICB9CisgIH0KKworICBmaW5hbCBpbnQgY2lmaTQ7CisgIGEoKSB7CisgICAgY2lmaTQgPSA0OworICAgIGludCBpID0gPGVycm9yIGRlc2NyPSJWYXJpYWJsZSAnZmkzJyBtaWdodCBub3QgaGF2ZSBiZWVuIGluaXRpYWxpemVkIj5maTM8L2Vycm9yPjsKKyAgICBmaTMgPSAzOworICAgIGEgYWluc3QgPSBudWxsOworICAgIGZpNCA9IGFpbnN0LmZpNDsKKyAgfQorICBhKGludCBpKSB7CisgICAgdGhpcy5jaWZpNCA9IGk7CisgICAgZmkyID0gMzsKKyAgICBmaTMgPSAzOworICAgIGEgYWluc3QgPSBudWxsOworICAgIGZpNCA9IGFpbnN0LmZpNDsKKyAgfQorICBhKFN0cmluZyBzKSB7CisgICAgdGhpcygwKTsKKyAgICBpbnQgaSA9IGZpMzsKKworICB9Cit9CisKK2NsYXNzIFRlc3QgeworICAvLyBhY2Nlc3MgZnJvbSB3aXRoaW4gaW5uZXIgY2xhc3MgT0sKKyAgICBmaW5hbCBib29sZWFuIEZCOworICAgIHsKKyAgICAgIGNsYXNzIHMgeworICAgICAgICBib29sZWFuIGIgPSBGQjsKKyAgICAgIH0KKyAgICAgIEZCID0gdHJ1ZTsKKworICAgIH0KKyAgICBwcml2YXRlIGZpbmFsIFN0cmluZyB0ZXh0OworICAgIHB1YmxpYyBUZXN0KCkgeworICAgICAgbmV3IEFjdGlvbkxpc3RlbmVyKCkgeworICAgICAgICBwdWJsaWMgdm9pZCBhY3Rpb25QZXJmb3JtZWQoQWN0aW9uRXZlbnQgZSkgeworICAgICAgICAgIGRvU29tZXRoaW5nKHRleHQpOy8vLy8KKyAgICAgICAgfQorICAgICAgfTsKKyAgICAgIHRleHQgPSAiSGVsbG8gd29ybGQiOworICAgIH0KKworICAgIHByaXZhdGUgdm9pZCBkb1NvbWV0aGluZyhTdHJpbmcgdmFsdWUpIHsKKyAgICB9Cit9CisKKy8vIG11bHRpcGxlIGluaXRhbGl6ZXJzCitjbGFzcyBjMSB7CisgcHJpdmF0ZSBmaW5hbCBTdHJpbmcgeDsKKyB7CisgICB4ID0gIkhlbGxvIjsKKyB9CisKKyBwcml2YXRlIGZpbmFsIFN0cmluZyB5OworIHsKKyAgIHkgPSB4OyAKKyB9Cisgdm9pZCBmKCkgeworICAgU3RyaW5nIHMgPSB4K3k7CisgfQorfQorCitjbGFzcyBjMiB7CisgICAgc3RhdGljIHsgCisgICAgfQorICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBsaW1pdDsKKyAgICBzdGF0aWMgeworICAgICAgICBsaW1pdCA9IDU7CisgICAgfQorICAgIGZpbmFsIFN0cmluZyBzOworICAgIGludCBrID0gPGVycm9yIGRlc2NyPSJWYXJpYWJsZSAncycgbWlnaHQgbm90IGhhdmUgYmVlbiBpbml0aWFsaXplZCI+czwvZXJyb3I+Lmxlbmd0aCgpOworICAgIGZpbmFsIFN0cmluZyBjOworICAgIGludCBrMiA9IDxlcnJvciBkZXNjcj0iVmFyaWFibGUgJ2MnIG1pZ2h0IG5vdCBoYXZlIGJlZW4gaW5pdGlhbGl6ZWQiPmM8L2Vycm9yPi5sZW5ndGgoKTsKKyAgICB7CisgICAgICAgIHMgPSAiIjsKKyAgICB9CisKKyAgICBwdWJsaWMgYzIoKSB7CisgICAgICAgIGMgPSAiIjsKKyAgICB9CisgICAgLy8gaXRzIG9rCisgICAgaW50IGszID0gYy5sZW5ndGgoKTsKKworICAgIGMyKGludCBpKSB7CisgICAgICB0aGlzKCk7CisgICAgfQorfQorCitjbGFzcyBVbmluaXRpYWxpemVkRmluYWwyIHsKKyAgICA8ZXJyb3IgZGVzY3I9IlZhcmlhYmxlICdzJyBtaWdodCBub3QgaGF2ZSBiZWVuIGluaXRpYWxpemVkIj5wcml2YXRlIGZpbmFsIFN0cmluZyBzPC9lcnJvcj47CisKKyAgICBVbmluaXRpYWxpemVkRmluYWwyKCl7CisgICAgICAgIHRyeSB7CisgICAgICAgIH0KKyAgICAgICAgZmluYWxseSB7CisgICAgICAgIH0KKyAgICB9Cit9CitjbGFzcyBVbmluaXRlZEZpbmFsRmllZCB7CisKKwk8ZXJyb3IgZGVzY3I9IlZhcmlhYmxlICdzdHJpbmcnIG1pZ2h0IG5vdCBoYXZlIGJlZW4gaW5pdGlhbGl6ZWQiPnByaXZhdGUgZmluYWwgU3RyaW5nIHN0cmluZzwvZXJyb3I+OworCisJcHVibGljIFVuaW5pdGVkRmluYWxGaWVkKCkgdGhyb3dzIElPRXhjZXB0aW9uIHsKKwkJaW5pdCgpOworCX0KKworCXByaXZhdGUgdm9pZCBpbml0KCkgdGhyb3dzIElPRXhjZXB0aW9uIHt9Cit9CitjbGFzcyBBc3NlcnRGaW5hbEZpZWQgeworCXByaXZhdGUgZmluYWwgU3RyaW5nIHN0cmluZzsKKworCXB1YmxpYyBBc3NlcnRGaW5hbEZpZWQoYm9vbGVhbiBiKSB0aHJvd3MgRXhjZXB0aW9uIHsKKwkgICAgIGFzc2VydCBiOworCSAgICAgc3RyaW5nID0gbnVsbDsKKwl9Cit9CisKK2NsYXNzIGEyMEV4b3RpYyB7CisgICAgaW50IG49az0wOworICAgIGZpbmFsIGludCBrOworICAgIGZpbmFsIGludCBrMjsKKyAgICBpbnQgbjIgPSBrPT0wID8gKGsyPTkpIDogKGsyPTApOworfQorCitwdWJsaWMgY2xhc3MgY1ggeworICAgIGZpbmFsIGludCBpOworICAgIGNYKCkgeworICAgICAgICB0aGlzKDEpOworICAgICAgICBpbnQgayA9IGk7CisgICAgfQorICAgIGNYKGludCBkKSB7CisgICAgICAgIGkgPSBkOworICAgIH0KK30KKworLy8gaHR0cDovL3d3dy5pbnRlbGxpai5uZXQvdHJhY2tlci9pZGVhL3ZpZXdTQ1I/cHVibGljSWQ9MjAwOTcKK2NsYXNzIExlbW1hIHsKKyAgICBwdWJsaWMgTGVtbWEoKSB7CisgICAgICAgIG5hbWUuaGFzaENvZGUoKTsKKyAgICB9CisgICAgcHJpdmF0ZSBmaW5hbCBTdHJpbmcgbmFtZTsKKyAgICB7ICAgbmFtZSA9ICJBbmR5IjsKKyAgICB9Cit9CisKK2NsYXNzIGNvcnJlY3QgeworICAgIHZvaWQgZigpIHsKKyAgICAgICAgZmluYWwgT2JqZWN0IG87CisgICAgICAgIG8gPSBuZXcgT2JqZWN0KCk7CisgICAgICAgIG5ldyBPYmplY3QoKSB7CisgICAgICAgICAgeyBvLnRvU3RyaW5nKCk7IH0KKyAgICAgICAgfTsgCisgICAgfQorfQorCitwdWJsaWMgY2xhc3MgWCB7CisgICAgZmluYWwgaW50IGk7CisgICAgWCgpIHsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGkgPSAwOworICAgICAgICB9CisgICAgICAgIGZpbmFsbHkgeworCisgICAgICAgIH0KKyAgICB9Cit9CisKKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvSURFQURFVjExODc3LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9JREVBREVWMTE4NzcuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZGZjMDAyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvSURFQURFVjExODc3LmphdmEKQEAgLTAsMCArMSw3IEBACitpbnRlcmZhY2UgTXlDbG9uZWFibGUgeworCisgICAgLy9wcm90ZWN0ZWQgbWV0aG9kIGZyb20gamF2YS5sYW5nLk9iamVjdCBpcyBub3QgaW1wbGljaXRseSBkZWNsYXJlZCBpbiBpbnRlcmZhY2Ugd2l0aCBubyBiYXNlIGludGVyZmFjZXMKKyAgICA8ZXJyb3IgZGVzY3I9IidjbG9uZSgpJyBpbiAnTXlDbG9uZWFibGUnIGNsYXNoZXMgd2l0aCAnY2xvbmUoKScgaW4gJ2phdmEubGFuZy5PYmplY3QnOyBhdHRlbXB0aW5nIHRvIHVzZSBpbmNvbXBhdGlibGUgcmV0dXJuIHR5cGUiPmludDwvZXJyb3I+IGNsb25lKCk7CisKKyAgICA8ZXJyb3IgZGVzY3I9Iid0b1N0cmluZygpJyBpbiAnTXlDbG9uZWFibGUnIGNsYXNoZXMgd2l0aCAndG9TdHJpbmcoKScgaW4gJ2phdmEubGFuZy5PYmplY3QnOyBhdHRlbXB0aW5nIHRvIHVzZSBpbmNvbXBhdGlibGUgcmV0dXJuIHR5cGUiPmludDwvZXJyb3I+IHRvU3RyaW5nKCk7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvSURFQURFVjExOTE5LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9JREVBREVWMTE5MTkuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MTgxYjAzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvSURFQURFVjExOTE5LmphdmEKQEAgLTAsMCArMSw1NSBAQAoraW50ZXJmYWNlIEJhciB7CisgICAgdm9pZCBEb0JhcigpOworfQorCithYnN0cmFjdCBjbGFzcyBGb28geworICAgIHB1YmxpYyBGb28oQmFyIGIpIHsKKyAgICB9Cit9CisKK2NsYXNzIEluaCBleHRlbmRzIEZvbyB7CisgICAgcHVibGljIEludGVnZXIgbXlGaWVsZCA9IG5ldyBJbnRlZ2VyKDApOworCisgICAgcHVibGljIEluaCgpIHsKKyAgICAgICAgc3VwZXIobmV3IEJhcigpIHsKKyAgICAgICAgICAgIHB1YmxpYyB2b2lkIERvQmFyKCkgeworICAgICAgICAgICAgICAgIDxlcnJvciBkZXNjcj0iQ2Fubm90IHJlZmVyZW5jZSAnSW5oLnRoaXMnIGJlZm9yZSBzdXBlcnR5cGUgY29uc3RydWN0b3IgaGFzIGJlZW4gY2FsbGVkIj5JbmgudGhpczwvZXJyb3I+Lm15RmllbGQudG9TdHJpbmcoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSk7CisKKyAgICAgICAgY2xhc3MgRSBleHRlbmRzIEZvbyB7CisgICAgICAgICAgICBFKCkgeworICAgICAgICAgICAgICAgIHN1cGVyKG5ldyBCYXIoKSB7CisgICAgICAgICAgICAgICAgICAgIHB1YmxpYyB2b2lkIERvQmFyKCkgeworICAgICAgICAgICAgICAgICAgICAgICAgSW5oLnRoaXMubXlGaWVsZC50b1N0cmluZygpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHB1YmxpYyB2b2lkIERvQmFyKCkgeworICAgICAgICAgICAgICAgIEluaC50aGlzLm15RmllbGQudG9TdHJpbmcoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBJbmgudGhpcy5teUZpZWxkLnRvU3RyaW5nKCk7CisgICAgfQorCisgICAgcHVibGljIEluaChCYXIgYikgeworICAgICAgICBzdXBlcihiKTsKKyAgICB9Cit9CisKKy8vSURFQURFVi0xNDMwNgorY2xhc3MgQmFzZSB7CisgIHByb3RlY3RlZCBTdHJpbmcgZmllbGQ7CisKKyAgcHVibGljIEJhc2UoZmluYWwgU3RyaW5nIGZpZWxkLCBpbnQgbCkgeworICAgIHRoaXMuZmllbGQgPSBmaWVsZDsKKyAgfQorfQorCitjbGFzcyBJbmhlcnRpb3IgZXh0ZW5kcyBCYXNlIHsKKyAgcHVibGljIEluaGVydGlvcigpIHsKKyAgICBzdXBlcigiIiwgPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVmZXJlbmNlICdCYXNlLmZpZWxkJyBiZWZvcmUgc3VwZXJ0eXBlIGNvbnN0cnVjdG9yIGhhcyBiZWVuIGNhbGxlZCI+ZmllbGQ8L2Vycm9yPi5sZW5ndGgoKSk7CisgIH0KK30KKy8vZW5kIG9mIElERUFERVYtMTQzMDYKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9JREVBREVWMTMyNDkuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nL0lERUFERVYxMzI0OS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNhZGMxNWQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9JREVBREVWMTMyNDkuamF2YQpAQCAtMCwwICsxLDIyIEBACitjbGFzcyBUZXN0U3VwZXIgeworICAgIHB1YmxpYyBzdGF0aWMgY2xhc3MgQSB7CisgICAgICAgIHByaXZhdGUgU3RyaW5nIHMgPSAiQSI7CisKKyAgICAgICAgcHVibGljIHZvaWQgZm9vKCkgeworICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJBOjpmb28iKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHB1YmxpYyBzdGF0aWMgY2xhc3MgQiBleHRlbmRzIEEgeworCisgICAgICAgIHB1YmxpYyB2b2lkIGZvbygpIHsKKyAgICAgICAgICAgIHN1cGVyLmZvbygpOworICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJCOjpmb28gIiArIHN1cGVyLnMpOworICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJCOjpmb28gIiArICgoQSkgdGhpcykucyk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CisgICAgICAgIG5ldyBCKCkuZm9vKCk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nL0lERUFERVYyNTc4NC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvSURFQURFVjI1Nzg0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTliNmJjNQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nL0lERUFERVYyNTc4NC5qYXZhCkBAIC0wLDAgKzEsMTMgQEAKK3B1YmxpYyBjbGFzcyBYIGV4dGVuZHMgWSB7fQorcHVibGljIGNsYXNzIFkgeworCisJcHJpdmF0ZSBzdGF0aWMgaW50IHggPSAwOworCisJcHVibGljIHN0YXRpYyBpbnQgZ2V0WCgpIHsKKwkJcmV0dXJuIHg7CisJfQorCisJcHVibGljIHN0YXRpYyB2b2lkIHNldFgoaW50IHgpIHsKKwkJWC48ZXJyb3IgZGVzY3I9Iid4JyBoYXMgcHJpdmF0ZSBhY2Nlc3MgaW4gJ1knIj54PC9lcnJvcj4gPSB4OworCX0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9JREVBREVWODgyMi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvSURFQURFVjg4MjIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMzM0N2Q2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvSURFQURFVjg4MjIuamF2YQpAQCAtMCwwICsxLDggQEAKK2NsYXNzIFMgZXh0ZW5kcyBTMyB7CisgICAgU3RyaW5nIFhYWDsgIC8vc2hvdWxkIGNvcnJlY3RseSByZXNvbHZlIHRvIGphdmEubGFuZy5TdHJpbmcKK30KKworY2xhc3MgUzMgeworICAgIHByaXZhdGUgY2xhc3MgU3RyaW5nIHsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9JREVBREVWOTIwMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvSURFQURFVjkyMDEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMjIwNzlhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvSURFQURFVjkyMDEuamF2YQpAQCAtMCwwICsxLDYgQEAKK2NsYXNzIFlvdUFyZU5vdE15VHlwZSB7CisKKyAgICBTdHJpbmdbXVtdIG9sZExhZHkoKSB7CisgICAgICAgIHJldHVybiAgbmV3IFN0cmluZ1tdW117PGVycm9yIGRlc2NyPSJJbmNvbXBhdGlibGUgdHlwZXMuIEZvdW5kOiAnamF2YS5sYW5nLkludGVnZXJbXScsIHJlcXVpcmVkOiAnamF2YS5sYW5nLlN0cmluZ1tdJyI+bmV3IEludGVnZXJbXXt9PC9lcnJvcj59OworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9JbGxlZ2FsRm9yd2FyZFJlZmVyZW5jZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvSWxsZWdhbEZvcndhcmRSZWZlcmVuY2UuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44OGRkOTUzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvSWxsZWdhbEZvcndhcmRSZWZlcmVuY2UuamF2YQpAQCAtMCwwICsxLDc0IEBACisvLy8gZm9yd2FyZCByZWZlcmVuY2VzCitpbXBvcnQgamF2YS5pby4qOworaW1wb3J0IGphdmEubmV0Lio7CisKK3B1YmxpYyBjbGFzcyBhICB7CisKKyAgeworICAgIGludCBpOworICAgIGlmICg8ZXJyb3IgZGVzY3I9IklsbGVnYWwgZm9yd2FyZCByZWZlcmVuY2UiPkZJPC9lcnJvcj4gPT0gNCkgaSA9IDU7CisgIH0KKyAgZmluYWwgaW50IEZJID0gNDsKKworICBpbnQgayA9IDEgKyA8ZXJyb3IgZGVzY3I9IklsbGVnYWwgZm9yd2FyZCByZWZlcmVuY2UiPmtpPC9lcnJvcj47CisgIGludCBraTsKKworICBmaW5hbCBpbnQgZmk1ID0gPGVycm9yIGRlc2NyPSJJbGxlZ2FsIGZvcndhcmQgcmVmZXJlbmNlIj5maTU8L2Vycm9yPiArIDE7Cit9CisKK2NsYXNzIGExIHsKKyBzdGF0aWMgaW50IGkgPSA8ZXJyb3IgZGVzY3I9IklsbGVnYWwgZm9yd2FyZCByZWZlcmVuY2UiPmo8L2Vycm9yPiArIDI7IAorIHN0YXRpYyBpbnQgaiA9IDQ7Cit9CitjbGFzcyBhMiB7Cisgc3RhdGljIHsgaSA9IDxlcnJvciBkZXNjcj0iSWxsZWdhbCBmb3J3YXJkIHJlZmVyZW5jZSI+ajwvZXJyb3I+ICsgMjsgfQorIHN0YXRpYyBpbnQgaSwgajsKKyBzdGF0aWMgeyBqID0gNDsgfQorfQorCisvLyBwYXN0ZWQgZnJvbSBKTFMgOC4zLjIuMworY2xhc3MgVXNlQmVmb3JlRGVjbGFyYXRpb24geworIHN0YXRpYyB7CisgIHggPSAxMDA7IC8vIG9rIC0gYXNzaWdubWVudAorICBpbnQgeSA9IDxlcnJvciBkZXNjcj0iSWxsZWdhbCBmb3J3YXJkIHJlZmVyZW5jZSI+eDwvZXJyb3I+ICsgMTsgLy8gZXJyb3IgLSByZWFkIGJlZm9yZSBkZWNsYXJhdGlvbgorICBpbnQgdiA9IHggPSAzOyAvLyBvayAtIHggYXQgbGVmdCBoYW5kIHNpZGUgb2YgYXNzaWdubWVudAorICBpbnQgeiA9IFVzZUJlZm9yZURlY2xhcmF0aW9uLnggKiAyOwkvLyBvayAtIG5vdCBhY2Nlc3NlZCB2aWEgc2ltcGxlIG5hbWUKKyAgT2JqZWN0IG8gPSBuZXcgT2JqZWN0KCl7IAorICAgICB2b2lkIGZvbygpe3grKzt9IC8vIG9rIC0gb2NjdXJzIGluIGEgZGlmZmVyZW50IGNsYXNzCisgICAgIHt4Kys7fSAvLyBvayAtIG9jY3VycyBpbiBhIGRpZmZlcmVudCBjbGFzcworICAgfTsKKyAgfQorICB7CisgICBqID0gMjAwOyAvLyBvayAtIGFzc2lnbm1lbnQKKyAgIGogPSA8ZXJyb3IgZGVzY3I9IklsbGVnYWwgZm9yd2FyZCByZWZlcmVuY2UiPmo8L2Vycm9yPiArIDE7IC8vIGVycm9yIC0gcmlnaHQgaGFuZCBzaWRlIHJlYWRzIGJlZm9yZSBkZWNsYXJhdGlvbgorICAgaW50IGsgPSBqID0gPGVycm9yIGRlc2NyPSJJbGxlZ2FsIGZvcndhcmQgcmVmZXJlbmNlIj5qPC9lcnJvcj4gKyAxOyAKKyAgIGludCBuID0gaiA9IDMwMDsgLy8gb2sgLSBqIGF0IGxlZnQgaGFuZCBzaWRlIG9mIGFzc2lnbm1lbnQKKyAgIGludCBoID0gPGVycm9yIGRlc2NyPSJJbGxlZ2FsIGZvcndhcmQgcmVmZXJlbmNlIj5qPC9lcnJvcj4rKzsgLy8gZXJyb3IgLSByZWFkIGJlZm9yZSBkZWNsYXJhdGlvbgorICAgaW50IGwgPSB0aGlzLmogKiAzOyAvLyBvayAtIG5vdCBhY2Nlc3NlZCB2aWEgc2ltcGxlIG5hbWUKKyAgIE9iamVjdCBvID0gbmV3IE9iamVjdCgpeyAKKyAgICAgdm9pZCBmb28oKXtqKys7fSAvLyBvayAtIG9jY3VycyBpbiBhIGRpZmZlcmVudCBjbGFzcworICAgICB7IGogPSBqICsgMTt9IC8vIG9rIC0gb2NjdXJzIGluIGEgZGlmZmVyZW50IGNsYXNzCisgICB9OworICB9CisKKyAgaW50IHcgPSB4PSAzOyAvLyBvayAtIHggYXQgbGVmdCBoYW5kIHNpZGUgb2YgYXNzaWdubWVudAorICBpbnQgcCA9IHg7IC8vIG9rIC0gaW5zdGFuY2UgaW5pdGlhbGl6ZXJzIG1heSBhY2Nlc3Mgc3RhdGljIGZpZWxkcworICBzdGF0aWMgaW50IHUgPSAobmV3IE9iamVjdCgpe2ludCBiYXIoKXtyZXR1cm4geDt9fSkuYmFyKCk7ICAvLyBvayAtIG9jY3VycyBpbiBhIGRpZmZlcmVudCBjbGFzcworICBzdGF0aWMgaW50IHg7CisgIGludCBtID0gaiA9IDQ7IC8vIG9rIC0gaiBhdCBsZWZ0IGhhbmQgc2lkZSBvZiBhc3NpZ25tZW50CisgIGludCBvID0gKG5ldyBPYmplY3QoKXtpbnQgYmFyKCl7cmV0dXJuIGo7fX0pLmJhcigpOyAgIC8vIG9rIC0gb2NjdXJzIGluIGEgZGlmZmVyZW50IGNsYXNzCisgIGludCBqOworfQorCitjbGFzcyBhMyB7CisgICAgc3RhdGljIHsKKyAgICAgICAgPGVycm9yIGRlc2NyPSJJbGxlZ2FsIGZvcndhcmQgcmVmZXJlbmNlIj5pPC9lcnJvcj4rPTE7CisgICAgfQorICAgIHN0YXRpYyBpbnQgaj08ZXJyb3IgZGVzY3I9IklsbGVnYWwgZm9yd2FyZCByZWZlcmVuY2UiPmk8L2Vycm9yPis9MTsKKyAgICBzdGF0aWMgaW50IGk9MDsKKyAgICB7CisgICAgICAgIDxlcnJvciBkZXNjcj0iSWxsZWdhbCBmb3J3YXJkIHJlZmVyZW5jZSI+azwvZXJyb3I+Kz0xOworICAgIH0KKyAgICBpbnQgbj08ZXJyb3IgZGVzY3I9IklsbGVnYWwgZm9yd2FyZCByZWZlcmVuY2UiPms8L2Vycm9yPis9MTsKKyAgICBpbnQgaz0wOworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvSWxsZWdhbE1vZGlmaWVyc0NvbWJpbmF0aW9uLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9JbGxlZ2FsTW9kaWZpZXJzQ29tYmluYXRpb24uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNjgyYmEzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvSWxsZWdhbE1vZGlmaWVyc0NvbWJpbmF0aW9uLmphdmEKQEAgLTAsMCArMSw3NCBAQAorLy8gaWxsZWdhbCBtb2RpZmllciBjb21iaW5hdGlvbnMKKworYWJzdHJhY3QgcHVibGljIGNsYXNzIGEgeworICAvLy8vLy8vLy8vLy8vLy8vLy8vLyBmaWVsZHMgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKyAgPGVycm9yIGRlc2NyPSJJbGxlZ2FsIGNvbWJpbmF0aW9uIG9mIG1vZGlmaWVyczogJ3B1YmxpYycgYW5kICdwcm90ZWN0ZWQnIj5wdWJsaWM8L2Vycm9yPiBzdGF0aWMKKyAgPGVycm9yIGRlc2NyPSJJbGxlZ2FsIGNvbWJpbmF0aW9uIG9mIG1vZGlmaWVyczogJ3Byb3RlY3RlZCcgYW5kICdwdWJsaWMnIj5wcm90ZWN0ZWQ8L2Vycm9yPiBpbnQgZjEgPSAwOworCisgIDxlcnJvciBkZXNjcj0iSWxsZWdhbCBjb21iaW5hdGlvbiBvZiBtb2RpZmllcnM6ICdwdWJsaWMnIGFuZCAncHJpdmF0ZSciPnB1YmxpYzwvZXJyb3I+IHZvbGF0aWxlCisgIDxlcnJvciBkZXNjcj0iSWxsZWdhbCBjb21iaW5hdGlvbiBvZiBtb2RpZmllcnM6ICdwcml2YXRlJyBhbmQgJ3B1YmxpYyciPnByaXZhdGU8L2Vycm9yPiBpbnQgZjIgPSAwOworCisgIDxlcnJvciBkZXNjcj0iSWxsZWdhbCBjb21iaW5hdGlvbiBvZiBtb2RpZmllcnM6ICdwcm90ZWN0ZWQnIGFuZCAncHJpdmF0ZSciPnByb3RlY3RlZDwvZXJyb3I+IGZpbmFsCisgIDxlcnJvciBkZXNjcj0iSWxsZWdhbCBjb21iaW5hdGlvbiBvZiBtb2RpZmllcnM6ICdwcml2YXRlJyBhbmQgJ3Byb3RlY3RlZCciPnByaXZhdGU8L2Vycm9yPiBpbnQgZjMgPSAwOworCisgIDxlcnJvciBkZXNjcj0iSWxsZWdhbCBjb21iaW5hdGlvbiBvZiBtb2RpZmllcnM6ICdmaW5hbCcgYW5kICd2b2xhdGlsZSciPmZpbmFsPC9lcnJvcj4KKyAgPGVycm9yIGRlc2NyPSJJbGxlZ2FsIGNvbWJpbmF0aW9uIG9mIG1vZGlmaWVyczogJ3ZvbGF0aWxlJyBhbmQgJ2ZpbmFsJyI+dm9sYXRpbGU8L2Vycm9yPiBwcml2YXRlIGludCBmNCA9IDA7CisKKyAgPGVycm9yIGRlc2NyPSJJbGxlZ2FsIGNvbWJpbmF0aW9uIG9mIG1vZGlmaWVyczogJ3B1YmxpYycgYW5kICdwdWJsaWMnIj5wdWJsaWM8L2Vycm9yPiAKKyAgPGVycm9yIGRlc2NyPSJJbGxlZ2FsIGNvbWJpbmF0aW9uIG9mIG1vZGlmaWVyczogJ3B1YmxpYycgYW5kICdwdWJsaWMnIj5wdWJsaWM8L2Vycm9yPgorICAgICBpbnQgZjUgPSAwOworCisgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IGNmMSA9IDA7CisgIHN0YXRpYyB2b2xhdGlsZSBwcml2YXRlIGludCBjZjI7CisgIHRyYW5zaWVudCBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBjZjMgPSAwOworICBwcm90ZWN0ZWQgdm9sYXRpbGUgdHJhbnNpZW50IGludCBjZjQ7CisgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBjZjUgPSAxOworCisKKworICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8gbWV0aG9kcyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworCisgIDxlcnJvciBkZXNjcj0iSWxsZWdhbCBjb21iaW5hdGlvbiBvZiBtb2RpZmllcnM6ICdhYnN0cmFjdCcgYW5kICduYXRpdmUnIj5hYnN0cmFjdDwvZXJyb3I+ICAKKyAgPGVycm9yIGRlc2NyPSJJbGxlZ2FsIGNvbWJpbmF0aW9uIG9mIG1vZGlmaWVyczogJ25hdGl2ZScgYW5kICdhYnN0cmFjdCciPm5hdGl2ZTwvZXJyb3I+ICB2b2lkIG0xKCk7CisKKyAgPGVycm9yIGRlc2NyPSJJbGxlZ2FsIGNvbWJpbmF0aW9uIG9mIG1vZGlmaWVyczogJ3N0YXRpYycgYW5kICdhYnN0cmFjdCciPnN0YXRpYzwvZXJyb3I+ICBwdWJsaWMKKyAgPGVycm9yIGRlc2NyPSJJbGxlZ2FsIGNvbWJpbmF0aW9uIG9mIG1vZGlmaWVyczogJ2Fic3RyYWN0JyBhbmQgJ3N0YXRpYyciPmFic3RyYWN0PC9lcnJvcj4gIHZvaWQgbTIoKTsKKworICA8ZXJyb3IgZGVzY3I9IklsbGVnYWwgY29tYmluYXRpb24gb2YgbW9kaWZpZXJzOiAnZmluYWwnIGFuZCAnYWJzdHJhY3QnIj5maW5hbDwvZXJyb3I+CisgIDxlcnJvciBkZXNjcj0iSWxsZWdhbCBjb21iaW5hdGlvbiBvZiBtb2RpZmllcnM6ICdhYnN0cmFjdCcgYW5kICdmaW5hbCciPmFic3RyYWN0PC9lcnJvcj4gIHZvaWQgbTMoKTsKKworICA8ZXJyb3IgZGVzY3I9IklsbGVnYWwgY29tYmluYXRpb24gb2YgbW9kaWZpZXJzOiAncHJpdmF0ZScgYW5kICdwdWJsaWMnIj5wcml2YXRlPC9lcnJvcj4gc3RhdGljCisgIDxlcnJvciBkZXNjcj0iSWxsZWdhbCBjb21iaW5hdGlvbiBvZiBtb2RpZmllcnM6ICdwdWJsaWMnIGFuZCAncHJpdmF0ZSciPnB1YmxpYzwvZXJyb3I+ICB2b2lkIG00KCkge30KKworICA8ZXJyb3IgZGVzY3I9IklsbGVnYWwgY29tYmluYXRpb24gb2YgbW9kaWZpZXJzOiAncHJvdGVjdGVkJyBhbmQgJ3ByaXZhdGUnIj5wcm90ZWN0ZWQ8L2Vycm9yPiBmaW5hbAorICA8ZXJyb3IgZGVzY3I9IklsbGVnYWwgY29tYmluYXRpb24gb2YgbW9kaWZpZXJzOiAncHJpdmF0ZScgYW5kICdwcm90ZWN0ZWQnIj5wcml2YXRlPC9lcnJvcj4gIHZvaWQgbTUoKSB7fQorCisgIDxlcnJvciBkZXNjcj0iSWxsZWdhbCBjb21iaW5hdGlvbiBvZiBtb2RpZmllcnM6ICdwdWJsaWMnIGFuZCAncHVibGljJyI+cHVibGljPC9lcnJvcj4gCisgIDxlcnJvciBkZXNjcj0iSWxsZWdhbCBjb21iaW5hdGlvbiBvZiBtb2RpZmllcnM6ICdwdWJsaWMnIGFuZCAncHVibGljJyI+cHVibGljPC9lcnJvcj4gdm9pZCBtNigpIHt9OworCisgIHB1YmxpYyBhYnN0cmFjdCB2b2lkIGNtMSgpOworICBwcm90ZWN0ZWQgc3RhdGljIHN5bmNocm9uaXplZCBuYXRpdmUgdm9pZCBjbTIoKTsKKyAgcHVibGljIHN0YXRpYyBmaW5hbCB2b2lkIGNtMygpIHt9CisKKworICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vIGNsYXNzZXMgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworICA8ZXJyb3IgZGVzY3I9IklsbGVnYWwgY29tYmluYXRpb24gb2YgbW9kaWZpZXJzOiAnZmluYWwnIGFuZCAnYWJzdHJhY3QnIj5maW5hbDwvZXJyb3I+ICBzdGF0aWMgc3RyaWN0ZnAgcHJvdGVjdGVkCisgIDxlcnJvciBkZXNjcj0iSWxsZWdhbCBjb21iaW5hdGlvbiBvZiBtb2RpZmllcnM6ICdhYnN0cmFjdCcgYW5kICdmaW5hbCciPmFic3RyYWN0PC9lcnJvcj4gIGNsYXNzIGMxIHt9CisKKyAgPGVycm9yIGRlc2NyPSJJbGxlZ2FsIGNvbWJpbmF0aW9uIG9mIG1vZGlmaWVyczogJ3ByaXZhdGUnIGFuZCAncHVibGljJyI+cHJpdmF0ZTwvZXJyb3I+IGZpbmFsCisgIDxlcnJvciBkZXNjcj0iSWxsZWdhbCBjb21iaW5hdGlvbiBvZiBtb2RpZmllcnM6ICdwdWJsaWMnIGFuZCAncHJpdmF0ZSciPnB1YmxpYzwvZXJyb3I+ICBjbGFzcyBjMiB7fQorCisgIDxlcnJvciBkZXNjcj0iSWxsZWdhbCBjb21iaW5hdGlvbiBvZiBtb2RpZmllcnM6ICdmaW5hbCcgYW5kICdmaW5hbCciPmZpbmFsPC9lcnJvcj4gCisgIDxlcnJvciBkZXNjcj0iSWxsZWdhbCBjb21iaW5hdGlvbiBvZiBtb2RpZmllcnM6ICdmaW5hbCcgYW5kICdmaW5hbCciPmZpbmFsPC9lcnJvcj4gY2xhc3MgYzMge30KKworICBhYnN0cmFjdCBwcm90ZWN0ZWQgc3RhdGljIHN0cmljdGZwIGNsYXNzIGNjMSB7fQorICBmaW5hbCBwcml2YXRlIHN0YXRpYyBjbGFzcyBjYzIge30KKyAgY2xhc3MgY2MzIHt9CisgIHN0YXRpYyBjbGFzcyBjYzQge30KKworICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vIGxvY2FscworICB2b2lkIGYoKSB7CisgICAgPGVycm9yIGRlc2NyPSJJbGxlZ2FsIGNvbWJpbmF0aW9uIG9mIG1vZGlmaWVyczogJ2ZpbmFsJyBhbmQgJ2ZpbmFsJyI+ZmluYWw8L2Vycm9yPgorICAgIDxlcnJvciBkZXNjcj0iSWxsZWdhbCBjb21iaW5hdGlvbiBvZiBtb2RpZmllcnM6ICdmaW5hbCcgYW5kICdmaW5hbCciPmZpbmFsPC9lcnJvcj4gaW50IGxvYzsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvSWxsZWdhbFR5cGUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nL0lsbGVnYWxUeXBlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWZkMjVjOAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nL0lsbGVnYWxUeXBlLmphdmEKQEAgLTAsMCArMSw4IEBACisKKyAgY2xhc3MgRm9vIHsKKyAgICBpbnQgazsKKyAgICBDbGFzcyBjPTxlcnJvciBkZXNjcj0iVW5rbm93biBjbGFzczogJ2snIj5rPC9lcnJvcj4uY2xhc3M7CisgICAgdm9pZCBmKCkgeworICAgICAgPGVycm9yIGRlc2NyPSJVbmtub3duIGNsYXNzOiAnamF2YS5pbyciPmphdmEuaW88L2Vycm9yPiBqYXZhaW87CisgICAgfQorICB9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9JbGxlZ2FsVm9pZFR5cGUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nL0lsbGVnYWxWb2lkVHlwZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIwNmJlOTAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9JbGxlZ2FsVm9pZFR5cGUuamF2YQpAQCAtMCwwICsxLDE4IEBACitjbGFzcyBzIHsKKyAgdm9pZCBmKCkgeworICAgIC8vIGlsbGVnYWwgdHlwZQorICAgIDxlcnJvciBkZXNjcj0iSWxsZWdhbCB0eXBlOiAndm9pZCciPnZvaWQ8L2Vycm9yPltdIHZhOworICAgIDxlcnJvciBkZXNjcj0iSWxsZWdhbCB0eXBlOiAndm9pZCciPnZvaWQ8L2Vycm9yPiB2djsKKyAgICBjbGFzcyBsb2MgeworICAgICAgdm9pZCBmKDxlcnJvciBkZXNjcj0iSWxsZWdhbCB0eXBlOiAndm9pZCciPnZvaWQ8L2Vycm9yPiBpKSB7fQorICAgIH0KKyAgICBPYmplY3QgbyA9IG5ldyA8ZXJyb3IgZGVzY3I9IklsbGVnYWwgdHlwZTogJ3ZvaWQnIj52b2lkPC9lcnJvcj5bMV07CisKKyAgICAvLyB0aGlzIGlzIHRoZSBvbmx5IHZhbGlkIHZvaWQgdXNhZ2UKKyAgICBDbGFzcyB2b2lkQ2xhc3MgPSB2b2lkLmNsYXNzOworICB9CisKKyAgeworICAgIDxlcnJvciBkZXNjcj0iSW5jb21wYXRpYmxlIHR5cGVzLiBGb3VuZDogJ3ZvaWQnLCByZXF1aXJlZDogJ2phdmEubGFuZy5PYmplY3QnIj5PYmplY3QgbyA9IGYoKTs8L2Vycm9yPgorICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9JbXBsaWNpdENvbnN0cnVjdG9yLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9JbXBsaWNpdENvbnN0cnVjdG9yLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTQwMmRlYwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nL0ltcGxpY2l0Q29uc3RydWN0b3IuamF2YQpAQCAtMCwwICsxLDkgQEAKK2NsYXNzIEFfSSBleHRlbmRzIEJfSXsKKyAgcHVibGljIEFfSSgpIHsKKyAgICBzdXBlcigpOworICAgIG5ldyBCX0koKTsKKyAgfQorfQorCitjbGFzcyBCX0l7Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9JbmNvbXBhdGlibGVUeXBlcy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvSW5jb21wYXRpYmxlVHlwZXMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xOGY4YjM2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvSW5jb21wYXRpYmxlVHlwZXMuamF2YQpAQCAtMCwwICsxLDgwIEBACitjbGFzcyBjIHsKKyAgdm9pZCBmKCkgeworICAgIC8vLS0tLSBzd2l0Y2ggLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICBzd2l0Y2ggKDxlcnJvciBkZXNjcj0iSW5jb21wYXRpYmxlIHR5cGVzLiBGb3VuZDogJ2phdmEubGFuZy5TdHJpbmcnLCByZXF1aXJlZDogJ2J5dGUsIGNoYXIsIHNob3J0IG9yIGludCciPiJzIjwvZXJyb3I+KSAKKyAgICB7ZGVmYXVsdDp9CisgICAgYnl0ZSBidCA9IDA7CisgICAgc3dpdGNoIChidCkgeworICAgICAgY2FzZSA8ZXJyb3IgZGVzY3I9IkluY29tcGF0aWJsZSB0eXBlcy4gRm91bmQ6ICdqYXZhLmxhbmcuU3RyaW5nJywgcmVxdWlyZWQ6ICdieXRlJyI+IlMiPC9lcnJvcj46IGJyZWFrOworICAgICAgY2FzZSA8ZXJyb3IgZGVzY3I9IkluY29tcGF0aWJsZSB0eXBlcy4gRm91bmQ6ICdsb25nJywgcmVxdWlyZWQ6ICdieXRlJyI+MTBMPC9lcnJvcj46IGJyZWFrOworICAgICAgY2FzZSA8ZXJyb3IgZGVzY3I9IkluY29tcGF0aWJsZSB0eXBlcy4gRm91bmQ6ICdib29sZWFuJywgcmVxdWlyZWQ6ICdieXRlJyI+dHJ1ZTwvZXJyb3I+OiBicmVhazsKKyAgICAgIGNhc2UgPGVycm9yIGRlc2NyPSJJbmNvbXBhdGlibGUgdHlwZXMuIEZvdW5kOiAnaW50JywgcmVxdWlyZWQ6ICdieXRlJyI+MHhkZmZmZmZmZjwvZXJyb3I+OiBicmVhazsKKyAgICAgIGNhc2UgPGVycm9yIGRlc2NyPSJJbmNvbXBhdGlibGUgdHlwZXMuIEZvdW5kOiAnY2hhcicsIHJlcXVpcmVkOiAnYnl0ZSciPidcdWRlZGUnPC9lcnJvcj46IGJyZWFrOworICAgICAgY2FzZSA8ZXJyb3IgZGVzY3I9IkluY29tcGF0aWJsZSB0eXBlcy4gRm91bmQ6ICdpbnQnLCByZXF1aXJlZDogJ2J5dGUnIj4xMjgwPC9lcnJvcj46IGJyZWFrOworICAgICAgLy8gYXNzaWduYWJsZSBjb21wYXRpYmxlIHRvIGJ5dGUKKyAgICAgIGNhc2UgMDogYnJlYWs7CisgICAgICBjYXNlICdjJzogYnJlYWs7CisgICAgICBjYXNlIC0xOiBicmVhazsKKyAgICAgIGNhc2UgMTI3OiBicmVhazsKKyAgICB9CisgICAgY2hhciBjaCA9ICdkJzsKKyAgICBzd2l0Y2ggKGNoKSB7CisgICAgICBjYXNlIDxlcnJvciBkZXNjcj0iSW5jb21wYXRpYmxlIHR5cGVzLiBGb3VuZDogJ2phdmEubGFuZy5TdHJpbmcnLCByZXF1aXJlZDogJ2NoYXInIj4iUyI8L2Vycm9yPjogYnJlYWs7CisgICAgICBjYXNlIDxlcnJvciBkZXNjcj0iSW5jb21wYXRpYmxlIHR5cGVzLiBGb3VuZDogJ2xvbmcnLCByZXF1aXJlZDogJ2NoYXInIj4xMEw8L2Vycm9yPjogYnJlYWs7CisgICAgICBjYXNlIDxlcnJvciBkZXNjcj0iSW5jb21wYXRpYmxlIHR5cGVzLiBGb3VuZDogJ2Jvb2xlYW4nLCByZXF1aXJlZDogJ2NoYXInIj50cnVlPC9lcnJvcj46IGJyZWFrOworICAgICAgY2FzZSA8ZXJyb3IgZGVzY3I9IkluY29tcGF0aWJsZSB0eXBlcy4gRm91bmQ6ICdpbnQnLCByZXF1aXJlZDogJ2NoYXInIj4weGFmZmZmZmZmPC9lcnJvcj46IGJyZWFrOworICAgICAgLy8gYXNzaWduYWJsZSBjb21wYXRpYmxlIHRvIGNoYXIKKyAgICAgIGNhc2UgMDogYnJlYWs7CisgICAgICBjYXNlICdcdTQ1NjcnOiBicmVhazsKKyAgICAgIGNhc2UgMHhmZmZmOiBicmVhazsKKyAgICAgIGNhc2UgMjU1OiBicmVhazsKKyAgICB9CisgICAgc3dpdGNoICgnZCcpIHtkZWZhdWx0On0KKworICAgIC8vLyAtLS0tLS0tLS0gaW5jb21wYXRpYmxlIHR5cGVzIGluc2lkZSBhcnJheSBpbml0aWFsaXplciAtLS0tLS0tLS0tCisKKworICAgIGludFtdIGlhID0gbmV3IGludFtdIHsKKyAgICAgIDxlcnJvciBkZXNjcj0iSW5jb21wYXRpYmxlIHR5cGVzLiBGb3VuZDogJ2phdmEubGFuZy5TdHJpbmcnLCByZXF1aXJlZDogJ2ludCciPiJTdHJpbmciPC9lcnJvcj4gCisgICAgICAsIDxlcnJvciBkZXNjcj0iSW5jb21wYXRpYmxlIHR5cGVzLiBGb3VuZDogJ2RvdWJsZScsIHJlcXVpcmVkOiAnaW50JyI+My40PC9lcnJvcj4gCisgICAgfTsKKworICAgIFN0cmluZ1tdIHNhID0geyAicyIsCisgICAgICAgPGVycm9yIGRlc2NyPSJJbmNvbXBhdGlibGUgdHlwZXMuIEZvdW5kOiAnYm9vbGVhbicsIHJlcXVpcmVkOiAnamF2YS5sYW5nLlN0cmluZyciPmZhbHNlPC9lcnJvcj4gCisgICAgICAgLCA8ZXJyb3IgZGVzY3I9IkluY29tcGF0aWJsZSB0eXBlcy4gRm91bmQ6ICdjaGFyJywgcmVxdWlyZWQ6ICdqYXZhLmxhbmcuU3RyaW5nJyI+J1MnPC9lcnJvcj4gCisgICAgfTsKKworICAgIFN0cmluZ1tdIHZhcyA9IG51bGw7CisgICAgT2JqZWN0IG8gPSAgbmV3IGludFs8ZXJyb3IgZGVzY3I9IkluY29tcGF0aWJsZSB0eXBlcy4gRm91bmQ6ICdqYXZhLmxhbmcuU3RyaW5nJywgcmVxdWlyZWQ6ICdpbnQnIj52YXNbMF08L2Vycm9yPl07CisKKyAgICBpbnRbXSB3ZWlyZD17PGVycm9yIGRlc2NyPSJJbGxlZ2FsIGluaXRpYWxpemVyIGZvciAnaW50JyI+ezB9PC9lcnJvcj59OworICAgIGludFtdW10gYXJyYXlJbml0aWFsaXplcnMgPSB7eyB9fTsKKyAgICBpbnRbXVtdW10gYXJyYXlJbml0aWFsaXplcnMyID0ge3sgfSwge3t9fSB9OworICAgIGRvdWJsZVtdW10gaTJkID0ge3sxfX07CisgICAgY2hhcltdW10gaTJjID0ge3sxfX07CisgICAgY2hhciBmb28gPSAweDAwMDA7IC8qIG9rYXkgKi8KKyAgICBjaGFyW10gYmFyID0geyAxLDIsMyB9OyAvKiBzdGlsbCBva2F5ICovCisgICAgY2hhcltdW10gYmF6ID0geyB7IDEsMiwzIH0gfTsgLyogbm90IG9rYXkgaW4gNC41LCBva2F5IGluIDQuMC54IGFuZCBmb3IgamF2YWMgKi8KKworCisgICAgLy8vIC0tLS0tLS0tIGNvbmRpdGlvbmFsIG9wZXJhdG9yCisgICAgaW50IGk4ID0gPGVycm9yIGRlc2NyPSJJbmNvbXBhdGlibGUgdHlwZXMuIEZvdW5kOiAnamF2YS5sYW5nLlN0cmluZycsIHJlcXVpcmVkOiAnYm9vbGVhbiciPiJmZiIgKyB0cnVlPC9lcnJvcj4gPyAxIDogMjsKKyAgICBpbnQgaTkgPSAxPT0yID8gMSA6IDxlcnJvciBkZXNjcj0iSW5jb21wYXRpYmxlIHR5cGVzLiBGb3VuZDogJ2phdmEubGFuZy5TdHJpbmcnLCByZXF1aXJlZDogJ2ludCciPiJmZiIgKyB0cnVlPC9lcnJvcj47CisgICAgaTkgPSAxPT0yID8gMyA6IDxlcnJvciBkZXNjcj0iSW5jb21wYXRpYmxlIHR5cGVzLiBGb3VuZDogJ251bGwnLCByZXF1aXJlZDogJ2ludCciPm51bGw8L2Vycm9yPjsKKyAgICBPYmplY3QgbzkgPSB0cnVlID8gMCA6IDxlcnJvciBkZXNjcj0iSW5jb21wYXRpYmxlIHR5cGVzLiBGb3VuZDogJ2phdmEubGFuZy5PYmplY3QnLCByZXF1aXJlZDogJ2ludCciPm5ldyBPYmplY3QoKTwvZXJyb3I+OworCisKKworICAgIGZpbmFsIGNoYXIgY2NvbnM9JzAnOworICAgIHNob3J0IHNzc3M9Y2NvbnM7CisgICAgYnl0ZSBiYmJiYmI9Y2NvbnM7CisgICAgLy8gdG9vIGJpZyBjaGFyIHRvIGZpdCBpbiBzaG9ydAorICAgIGZpbmFsIGNoYXIgYmlnY2hhcj0nXHVmZmZmJzsKKyAgICA8ZXJyb3IgZGVzY3I9IkluY29tcGF0aWJsZSB0eXBlcy4gRm91bmQ6ICdjaGFyJywgcmVxdWlyZWQ6ICdzaG9ydCciPnNob3J0IHNiaWcgPSBiaWdjaGFyOzwvZXJyb3I+CisgIH0KKworICB2b2lkIGcoYm9vbGVhbiBmLCBieXRlIGIpIHsKKyAgICAgIGJ5dGUgYyA9ICdcbic7CisgICAgICA8ZXJyb3IgZGVzY3I9IkluY29tcGF0aWJsZSB0eXBlcy4gRm91bmQ6ICdpbnQnLCByZXF1aXJlZDogJ2J5dGUnIj5ieXRlIG5leHQgPSBmID8gYiA6ICdcbic7PC9lcnJvcj4KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nL0luaGVyaXRGaW5hbC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvSW5oZXJpdEZpbmFsLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTZlMTI2NQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nL0luaGVyaXRGaW5hbC5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKKy8vIGluaGVyaXQgZnJvbSBmaW5hbAorcHVibGljIGNsYXNzIGEgZXh0ZW5kcyA8ZXJyb3IgZGVzY3I9IkNhbm5vdCBpbmhlcml0IGZyb20gZmluYWwgJ2ZmJyI+ZmY8L2Vycm9yPiB7CisKKyAgdm9pZCBmKCkgeworICAgIE9iamVjdCBvID0gbmV3IDxlcnJvciBkZXNjcj0iQ2Fubm90IGluaGVyaXQgZnJvbSBmaW5hbCAnZmYnIj5mZjwvZXJyb3I+KCkgeyB2b2lkIGdnKCl7fSB9OworICB9Cit9CisKK2ZpbmFsIGNsYXNzIGZmIHsKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nL0luaXRpYWxpemVyQ29tcGxldGlvbi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvSW5pdGlhbGl6ZXJDb21wbGV0aW9uLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmUyNzBjMAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nL0luaXRpYWxpemVyQ29tcGxldGlvbi5qYXZhCkBAIC0wLDAgKzEsMTM0IEBACisvLy8gaW5pdGFsaXplcnMgY29tcGxldGlvbgoraW1wb3J0IGphdmEuaW8uKjsKK2ltcG9ydCBqYXZhLm5ldC4qOworCitwdWJsaWMgY2xhc3MgYSAgeworCisgIDxlcnJvciBkZXNjcj0iSW5pdGlhbGl6ZXIgbXVzdCBiZSBhYmxlIHRvIGNvbXBsZXRlIG5vcm1hbGx5Ij57CisgICAgdGhyb3cgbmV3IFJ1bnRpbWVFeGNlcHRpb24oKTsKKyAgfTwvZXJyb3I+CisKKyAgc3RhdGljIDxlcnJvciBkZXNjcj0iSW5pdGlhbGl6ZXIgbXVzdCBiZSBhYmxlIHRvIGNvbXBsZXRlIG5vcm1hbGx5Ij57CisgICAgdHJ5IHsKKyAgICAgIHRocm93IG5ldyBSdW50aW1lRXhjZXB0aW9uKCk7CisgICAgfQorICAgIGZpbmFsbHkgeworICAgICAgdGhyb3cgbmV3IE51bGxQb2ludGVyRXhjZXB0aW9uKCk7CisgICAgfQorICB9PC9lcnJvcj4KKworCit9CitjbGFzcyBhMiB7CisgIHsgCisgICAgaWYgKDE9PTIpIDxlcnJvciBkZXNjcj0iVW5oYW5kbGVkIGV4Y2VwdGlvbjogamF2YS5pby5JT0V4Y2VwdGlvbiI+dGhyb3cgbmV3IElPRXhjZXB0aW9uKCk7PC9lcnJvcj4gCisgIH0KKworICA8ZXJyb3IgZGVzY3I9IlVuaGFuZGxlZCBleGNlcHRpb246IGphdmEuaW8uSU9FeGNlcHRpb24iPmEyKCk8L2Vycm9yPiB7fQorfQorY2xhc3MgYTMgeworICB7IAorICAgIGlmICgxPT0yKSA8ZXJyb3IgZGVzY3I9IlVuaGFuZGxlZCBleGNlcHRpb246IGphdmEubmV0LlNvY2tldEV4Y2VwdGlvbiI+dGhyb3cgbmV3IFNvY2tldEV4Y2VwdGlvbigpOzwvZXJyb3I+IAorICB9CisKKyAgPGVycm9yIGRlc2NyPSJVbmhhbmRsZWQgZXhjZXB0aW9uOiBqYXZhLm5ldC5Tb2NrZXRFeGNlcHRpb24iPmEzKCkgdGhyb3dzIENvbm5lY3RFeGNlcHRpb248L2Vycm9yPiB7fQorfQorCitjbGFzcyBiIHsKKworICB7IGlmICgxPT0yKSB0aHJvdyBuZXcgU29ja2V0RXhjZXB0aW9uKCk7IH0KKworICBiKCkgdGhyb3dzIElPRXhjZXB0aW9uICB7fQorfQorCitjbGFzcyBhNCB7CisgICAgeworICAgICAgICBpZiAodHJ1ZSkgeworICAgICAgICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbigpOworICAgICAgICB9CisgICAgfQorICAgIGE0KCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgfQorfQorCitjbGFzcyBhNSB7CisgIGludCBpID0gPGVycm9yIGRlc2NyPSJVbmhhbmRsZWQgZXhjZXB0aW9uOiBqYXZhLmxhbmcuQ2xhc3NOb3RGb3VuZEV4Y2VwdGlvbiI+ZigpOzwvZXJyb3I+CisKKyAgaW50IGYoKSB0aHJvd3MgQ2xhc3NOb3RGb3VuZEV4Y2VwdGlvbiB7CisgICAgcmV0dXJuIDA7CisgIH0KK30KK2NsYXNzIGE2IHsKKyAgaW50IGkgPSBmKCk7CisKKyAgaW50IGYoKSB0aHJvd3MgQ2xhc3NOb3RGb3VuZEV4Y2VwdGlvbiB7CisgICAgcmV0dXJuIDA7CisgIH0KKworICBhNigpIHRocm93cyBDbGFzc05vdEZvdW5kRXhjZXB0aW9uIHsKKyAgfQorfQorCitjbGFzcyBhNyB7Cis8ZXJyb3IgZGVzY3I9IkluaXRpYWxpemVyIG11c3QgYmUgYWJsZSB0byBjb21wbGV0ZSBub3JtYWxseSI+eworICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgUnVudGltZUV4Y2VwdGlvbigpOworICAgICAgICAgICAgfSBmaW5hbGx5IHsKKyAgICAgICAgICAgIH0KKyB9PC9lcnJvcj4KK30KKworY2xhc3MgTXlSdW50aW1lRXhjZXB0aW9uIGV4dGVuZHMgUnVudGltZUV4Y2VwdGlvbiB7fQorCitjbGFzcyBHVUlCYXNlIHsKKyAgR1VJQmFzZSAoKSB0aHJvd3MgTXlSdW50aW1lRXhjZXB0aW9uIHt9Cit9CisKK2NsYXNzIEdVSSBleHRlbmRzIEdVSUJhc2UgeworCit9CisKKworY2xhc3MgYTggeworIHsKKyAgIGFzc2VydCB0cnVlOworIH0KKyB7CisgICBhc3NlcnQgZmFsc2U7CisgfQorCit9CisKK2NsYXNzIGE5IHsKKworICBwcml2YXRlIHN0YXRpYyBpbnRlcmZhY2UgQW5JbnRlcmZhY2Uge30KKworICBwdWJsaWMgQW5JbnRlcmZhY2UgZ2V0QW5JbnRlcmZhY2UoKSB7CisgICAgICAgIHJldHVybiBuZXcgQW5JbnRlcmZhY2UoKSB7CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgPGVycm9yIGRlc2NyPSJVbmhhbmRsZWQgZXhjZXB0aW9uOiBqYXZhLmlvLkZpbGVOb3RGb3VuZEV4Y2VwdGlvbiI+bmV3IGphdmEuaW8uRmlsZUlucHV0U3RyZWFtKCJzb21lZmlsZSIpPC9lcnJvcj47CisgICAgICAgICAgICB9CisgICAgICAgIH07CisgICAgfQorfQorCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworY2xhc3MgQmFkU3RhdGljIHsKKyAgICBzdGF0aWMgU3RyaW5nIGYoKSB0aHJvd3MgQ2xhc3NOb3RGb3VuZEV4Y2VwdGlvbiB7CisgICAgICAgIHJldHVybiBudWxsOworICAgIH0KKwlwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgRk9PID0gPGVycm9yIGRlc2NyPSJVbmhhbmRsZWQgZXhjZXB0aW9uOiBqYXZhLmxhbmcuQ2xhc3NOb3RGb3VuZEV4Y2VwdGlvbiI+ZigpOzwvZXJyb3I+CisKKwlwdWJsaWMgQmFkU3RhdGljKCkgIHRocm93cyBDbGFzc05vdEZvdW5kRXhjZXB0aW9uIHsKKwl9Cit9CitjbGFzcyBIIHsKKyAgICBwdWJsaWMgSCgpIHRocm93cyBGaWxlTm90Rm91bmRFeGNlcHRpb24geworICAgIH0KKworICAgIHN0YXRpYyB7CisgICAgICAgIGlmKHRydWUpIHsgICAgICAKKyAgICAgICAgICAgIDxlcnJvciBkZXNjcj0iVW5oYW5kbGVkIGV4Y2VwdGlvbjogamF2YS5pby5GaWxlTm90Rm91bmRFeGNlcHRpb24iPnRocm93IG5ldyBGaWxlTm90Rm91bmRFeGNlcHRpb24oKTs8L2Vycm9yPgorICAgICAgICB9CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvSW5qZWN0ZWRBbm5vdGF0b3IueG1sIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvSW5qZWN0ZWRBbm5vdGF0b3IueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhlZmRlOTEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9JbmplY3RlZEFubm90YXRvci54bWwKQEAgLTAsMCArMSw1IEBACis8eCA8d2FybmluZyBkZXNjcj0iQUFBVFRSIj5hYWE9ImRkZGQiPC93YXJuaW5nPj4KKyAgICA8bD4KKyAgICAgIDx3YXJuaW5nIGRlc3I9IkVOVElUWSI+Jm5ic3A7PC93YXJuaW5nPgorICAgIDwvbD4KKzwveD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9Jbm5lckNsYXNzZXNTaGFkb3dpbmcuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nL0lubmVyQ2xhc3Nlc1NoYWRvd2luZy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU4N2M1ZGIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9Jbm5lckNsYXNzZXNTaGFkb3dpbmcuamF2YQpAQCAtMCwwICsxLDk4IEBACitpbXBvcnQgamF2YS5pby4qOworCitwdWJsaWMgY2xhc3MgTWFpbiB7CisgICAgc3RhdGljIGludGVyZmFjZSBBCisgICAgeworICAgICAgICBpbnRlcmZhY2UgQiAgeyB9CisgICAgfQorCisgICAgc3RhdGljIGNsYXNzIEQgaW1wbGVtZW50cyBBCisgICAgeworICAgICAgICBwcml2YXRlIGludGVyZmFjZSBCIHsgfQorICAgIH0KKworCisgICAgc3RhdGljIGNsYXNzIEMgZXh0ZW5kcyBEIGltcGxlbWVudHMgQQorICAgIHsKKyAgICAgICAgaW50ZXJmYWNlIEUgZXh0ZW5kcyBCIHsgfQorICAgICAgICBpbnRlcmZhY2UgRTEgZXh0ZW5kcyBELkIgeyB9CisgICAgICAgIGludGVyZmFjZSBFMiBleHRlbmRzIEEuQiB7IH0KKyAgICB9CisKK30KKworCisKK2NsYXNzIE1haW4xIHsKKyAgICBzdGF0aWMgaW50ZXJmYWNlIEEKKyAgICB7CisgICAgICAgIGludGVyZmFjZSBCICB7IH0KKyAgICB9CisKKyAgICBzdGF0aWMgY2xhc3MgRCBpbXBsZW1lbnRzIEEKKyAgICB7CisgICAgICAgIGludGVyZmFjZSBCIHsgfQorICAgIH0KKworCisgICAgc3RhdGljIGNsYXNzIEMgZXh0ZW5kcyBEIGltcGxlbWVudHMgQQorICAgIHsKKyAgICAgICAgaW50ZXJmYWNlIEUgZXh0ZW5kcyA8ZXJyb3IgZGVzY3I9IlJlZmVyZW5jZSB0byAnQicgaXMgYW1iaWd1b3VzLCBib3RoICdNYWluMS5ELkInIGFuZCAnTWFpbjEuQS5CJyBtYXRjaCI+QjwvZXJyb3I+IHsgfQorICAgICAgICBpbnRlcmZhY2UgRTEgZXh0ZW5kcyBELkIgeworICAgICAgICB9CisgICAgICAgIGludGVyZmFjZSBFMiBleHRlbmRzIEEuQiB7IH0KKyAgICB9CisKK30KKworCitpbnRlcmZhY2UgQQoreworICAgIGludGVyZmFjZSBCICB7IH0KKyAgICBpbnRlcmZhY2UgQjEgIHsgfQorfQorCitjbGFzcyBEIGltcGxlbWVudHMgQQoreworICAgIHByaXZhdGUgaW50ZXJmYWNlIEIgeyB9CisgICAgaW50ZXJmYWNlIEIxIHsgfQorfQorCisKK2NsYXNzIEMgZXh0ZW5kcyBEIGltcGxlbWVudHMgQQoreworICAgIGludGVyZmFjZSBFIGV4dGVuZHMgQiB7IH0KKyAgICBpbnRlcmZhY2UgRTEgZXh0ZW5kcyBELjxlcnJvciBkZXNjcj0iJ0QuQicgaGFzIHByaXZhdGUgYWNjZXNzIGluICdEJyI+QjwvZXJyb3I+IHsgfQorICAgIGludGVyZmFjZSBFMiBleHRlbmRzIEEuQiB7IH0KKworICAgIGludGVyZmFjZSBGIGV4dGVuZHMgPGVycm9yIGRlc2NyPSJSZWZlcmVuY2UgdG8gJ0IxJyBpcyBhbWJpZ3VvdXMsIGJvdGggJ0QuQjEnIGFuZCAnQS5CMScgbWF0Y2giPkIxPC9lcnJvcj4geyB9CisgICAgaW50ZXJmYWNlIEYxIGV4dGVuZHMgRC5CMSB7IH0KKyAgICBpbnRlcmZhY2UgRjIgZXh0ZW5kcyBBLkIxIHsgfQorCit9CisKKworY2xhc3MgQU8ge30KK2NsYXNzIEJBTyB7CisgICAgQU8gYmFyID0gbmV3IEFPKCk7CisgICAgeworICAgICAgICBiYXIuZm9vKCk7CisgICAgfQorICAgIHByaXZhdGUgY2xhc3MgQU8geworICAgICAgICB2b2lkIGZvbygpe30KKyAgICB9CisKK30KKworY2xhc3MgV2l0aEZpbGVJbnB1dFN0cmVhbSB7CisgIHByaXZhdGUgc3RhdGljIGZpbmFsIFJ1bm5hYmxlIHJ1bm4gPSBuZXcgUnVubmFibGUoKSB7CisgICAgcHVibGljIHZvaWQgcnVuKCkgeworICAgICAgbmV3IEZpbGVJbnB1dFN0cmVhbSgicGF0aCIpOworICAgIH0KKyAgfTsKKyAgCisgIHByaXZhdGUgc3RhdGljIGNsYXNzIEZpbGVJbnB1dFN0cmVhbSB7CisgICAgcHJpdmF0ZSBGaWxlSW5wdXRTdHJlYW0oU3RyaW5nIHN0cikgeworICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nL0luc3RhbnRpYXRlQWJzdHJhY3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nL0luc3RhbnRpYXRlQWJzdHJhY3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45YmYxYmViCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvSW5zdGFudGlhdGVBYnN0cmFjdC5qYXZhCkBAIC0wLDAgKzEsMzcgQEAKKy8vIGluc3RhbnRpYXRlIGFic3RyYWN0CitwdWJsaWMgY2xhc3MgYSB7CisgIHZvaWQgZigpIHsKKyAgICA8ZXJyb3IgZGVzY3I9IidpaScgaXMgYWJzdHJhY3Q7IGNhbm5vdCBiZSBpbnN0YW50aWF0ZWQiPm5ldyBpaSgpPC9lcnJvcj47CisKKyAgICA8ZXJyb3IgZGVzY3I9IidjMScgaXMgYWJzdHJhY3Q7IGNhbm5vdCBiZSBpbnN0YW50aWF0ZWQiPm5ldyBjMSgpPC9lcnJvcj47CisKKyAgICBuZXcgPGVycm9yIGRlc2NyPSJDbGFzcyAnQW5vbnltb3VzIGNsYXNzIGRlcml2ZWQgZnJvbSBjMScgbXVzdCBlaXRoZXIgYmUgZGVjbGFyZWQgYWJzdHJhY3Qgb3IgaW1wbGVtZW50IGFic3RyYWN0IG1ldGhvZCAnZjEoaW50KScgaW4gJ2MxJyI+YzE8L2Vycm9yPigpIHsKKyAgICAgIHB1YmxpYyB2b2lkIGYyKCkge30KKyAgICB9OworCisgICAgbmV3IDxlcnJvciBkZXNjcj0iQ2xhc3MgJ0Fub255bW91cyBjbGFzcyBkZXJpdmVkIGZyb20gYzEnIG11c3QgZWl0aGVyIGJlIGRlY2xhcmVkIGFic3RyYWN0IG9yIGltcGxlbWVudCBhYnN0cmFjdCBtZXRob2QgJ2YxKGludCknIGluICdjMSciPmMxPC9lcnJvcj4oKSB7CisgICAgICBwdWJsaWMgdm9pZCBmMSgpIHt9CisgICAgfTsKKworICAgIG5ldyA8ZXJyb3IgZGVzY3I9IkNsYXNzICdBbm9ueW1vdXMgY2xhc3MgZGVyaXZlZCBmcm9tIGMxJyBtdXN0IGVpdGhlciBiZSBkZWNsYXJlZCBhYnN0cmFjdCBvciBpbXBsZW1lbnQgYWJzdHJhY3QgbWV0aG9kICdmMigpJyBpbiAnQW5vbnltb3VzIGNsYXNzIGRlcml2ZWQgZnJvbSBjMSciPmMxPC9lcnJvcj4oKSB7CisgICAgICBwdWJsaWMgdm9pZCBmMShpbnQgaSkge30KKyAgICAgIHB1YmxpYyA8ZXJyb3IgZGVzY3I9IkFic3RyYWN0IG1ldGhvZCBpbiBub24tYWJzdHJhY3QgY2xhc3MiPmFic3RyYWN0PC9lcnJvcj4gdm9pZCBmMigpOworICAgIH07CisKKworICAgIG5ldyBjMSgpIHsKKyAgICAgIHB1YmxpYyB2b2lkIGYxKGludCBpKSB7fQorICAgIH07CisgICAgbmV3IGlpKCkgeyBwdWJsaWMgdm9pZCBmMSgpe30gcHVibGljIHZvaWQgZjIoKXt9IH07CisKKyAgfQorfQorYWJzdHJhY3QgY2xhc3MgYzEgeworICBhYnN0cmFjdCBwdWJsaWMgdm9pZCBmMShpbnQgaSk7Cit9CisKK2ludGVyZmFjZSBpaSB7CisgIGFic3RyYWN0IHZvaWQgZjEoKTsKKyAgdm9pZCBmMigpOworfQorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9JbnRlcmZhY2UuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nL0ludGVyZmFjZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJkM2M5ODkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9JbnRlcmZhY2UuamF2YQpAQCAtMCwwICsxLDM1IEBACisvKgorICogQ29weXJpZ2h0IDIwMDAtMjAxMiBKZXRCcmFpbnMgcy5yLm8uCisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworaW50ZXJmYWNlIGkgPGVycm9yIGRlc2NyPSJObyBpbXBsZW1lbnRzIGNsYXVzZSBhbGxvd2VkIGZvciBpbnRlcmZhY2UiPmltcGxlbWVudHMgUnVubmFibGU8L2Vycm9yPiB7fQorCitpbnRlcmZhY2UgaWkge30KK2NsYXNzIGNzIGV4dGVuZHMgPGVycm9yIGRlc2NyPSJObyBpbnRlcmZhY2UgZXhwZWN0ZWQgaGVyZSI+aWk8L2Vycm9yPiB7fQoraW50ZXJmYWNlIGlzIGV4dGVuZHMgaWkge30KKworY2xhc3MgY3MyIGltcGxlbWVudHMgPGVycm9yIGRlc2NyPSJJbnRlcmZhY2UgZXhwZWN0ZWQgaGVyZSI+Y3M8L2Vycm9yPiB7fQoraW50ZXJmYWNlIGlzMyBleHRlbmRzIDxlcnJvciBkZXNjcj0iSW50ZXJmYWNlIGV4cGVjdGVkIGhlcmUiPmNzPC9lcnJvcj4ge30KKworYWJzdHJhY3QgY2xhc3MgRXhlcmNpcyB7CisgICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oKSB7CisgICAgICAgIE9iamVjdCBvID0gPGVycm9yIGRlc2NyPSJDbGFzcyBuYW1lIGV4cGVjdGVkIGhlcmUiPmphdmEubGFuZzwvZXJyb3I+LnRoaXM7CisKKyAgICAgICAgbmV3IFJ1bm5hYmxlKCkgeworICAgICAgICAgICAgcHVibGljIHZvaWQgcnVuKCkgeworICAgICAgICAgICAgICAgIDxlcnJvciBkZXNjcj0iJ2phdmEubGFuZy5SdW5uYWJsZScgaXMgbm90IGFuIGVuY2xvc2luZyBjbGFzcyI+UnVubmFibGUudGhpczwvZXJyb3I+LnJ1bigpOworICAgICAgICAgICAgfQorICAgICAgICB9OworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nL0ludmFsaWRFeHByZXNzaW9ucy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvSW52YWxpZEV4cHJlc3Npb25zLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzlhYjJiZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nL0ludmFsaWRFeHByZXNzaW9ucy5qYXZhCkBAIC0wLDAgKzEsMTEyIEBACisvLyBpbnZhbGlkIGV4cHJlc3Npb25zCitwdWJsaWMgY2xhc3MgYTEyIHsKKyAgc3RhdGljIGludCBpOworCisgIGludCBmKGludCBpKSB7CisgICAgPGVycm9yIGRlc2NyPSJOb3QgYSBzdGF0ZW1lbnQiPjE7PC9lcnJvcj4KKyAgICA8ZXJyb3IgZGVzY3I9Ik5vdCBhIHN0YXRlbWVudCI+MT09Mjs8L2Vycm9yPgorICAgIDxlcnJvciBkZXNjcj0iTm90IGEgc3RhdGVtZW50Ij4xPT0yID8gMSA6IDM7PC9lcnJvcj4KKyAgICA8ZXJyb3IgZGVzY3I9Ik5vdCBhIHN0YXRlbWVudCI+ZigxKSA9PSAzOzwvZXJyb3I+CisgICAgPGVycm9yIGRlc2NyPSJOb3QgYSBzdGF0ZW1lbnQiPjEsMjs8L2Vycm9yPgorICAgIDxlcnJvciBkZXNjcj0iTm90IGEgc3RhdGVtZW50Ij5+MTs8L2Vycm9yPgorICAgIDxlcnJvciBkZXNjcj0iTm90IGEgc3RhdGVtZW50Ij4hKDE9PTIpOzwvZXJyb3I+CisgICAgPGVycm9yIGRlc2NyPSJOb3QgYSBzdGF0ZW1lbnQiPm5ldyBpbnRbMF07PC9lcnJvcj4KKyAgICA8ZXJyb3IgZGVzY3I9Ik5vdCBhIHN0YXRlbWVudCI+bmV3IGExMlsxMF07PC9lcnJvcj4KKyAgICA8ZXJyb3IgZGVzY3I9Ik5vdCBhIHN0YXRlbWVudCI+bmV3IGExMltde307PC9lcnJvcj4KKyAgICA8ZXJyb3IgZGVzY3I9Ik5vdCBhIHN0YXRlbWVudCI+bmV3IGludFtdezF9OzwvZXJyb3I+CisgICAgPGVycm9yIGRlc2NyPSJOb3QgYSBzdGF0ZW1lbnQiPm5ldyBTdHJpbmdbXXtuZXcgU3RyaW5nKCl9OzwvZXJyb3I+CisgICAgaWYgKGk9PTEpCisgICAgICA8ZXJyb3IgZGVzY3I9Ik5vdCBhIHN0YXRlbWVudCI+U3RyaW5nIHMwMCA9ICIiOzwvZXJyb3I+CisgICAgZm9yICg7OykKKyAgICAgIDxlcnJvciBkZXNjcj0iTm90IGEgc3RhdGVtZW50Ij5TdHJpbmcgczAxID0gIiI7PC9lcnJvcj4KKworICAgIAorICAgIGZvciAoPGVycm9yIGRlc2NyPSJOb3QgYSBzdGF0ZW1lbnQiPjE9PTIsaT0zOzwvZXJyb3I+IGk8MzsgPGVycm9yIGRlc2NyPSJOb3QgYSBzdGF0ZW1lbnQiPiEoMT09Mik8L2Vycm9yPik7CisKKyAgICBsYWJlbDI6CisgICAgICAgIDxlcnJvciBkZXNjcj0iTm90IGEgc3RhdGVtZW50Ij5pbnQga3NkZmdkZjs8L2Vycm9yPgorCisKKyAgICBpbnQgaTE9MywgZz01OworICAgIGcrKzsKKyAgICArK2c7CisgICAgZm9yIChpbnQgaz0xLGw9MzsgazwzOyBrKyssbC0tKSB7O307CisgICAgY2xhc3MgcyB7fQorICAgIG5ldyBzKCkgeyB2b2lkIGYoKXt9fTsKKyAgICByZXR1cm4gMzsKKyAgfQorCisKKworICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworICB2b2lkIGYoKSB7CisgICAgYTEyIGFbXSA9IG5ldyBhMTJbNF07CisgICAgaW50W10gYWkgPSBudWxsOworCisgICAgPGVycm9yIGRlc2NyPSJWYXJpYWJsZSBleHBlY3RlZCI+NTwvZXJyb3I+ID0gNTsKKyAgICA8ZXJyb3IgZGVzY3I9IlZhcmlhYmxlIGV4cGVjdGVkIj41PC9lcnJvcj4rKzsKKyAgICArKzxlcnJvciBkZXNjcj0iVmFyaWFibGUgZXhwZWN0ZWQiPjU8L2Vycm9yPjsKKyAgICA8ZXJyb3IgZGVzY3I9IlZhcmlhYmxlIGV4cGVjdGVkIj41PC9lcnJvcj4gKz0gNTsKKworICAgIDxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgbWV0aG9kICdmb28xMjNVbnJlc29sdmVkKD8pJyI+Zm9vMTIzVW5yZXNvbHZlZDwvZXJyb3I+KDxlcnJvciBkZXNjcj0iRXhwcmVzc2lvbiBleHBlY3RlZCI+U3RyaW5nPC9lcnJvcj4pOworICAgIDxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgbWV0aG9kICdmb28xMjNVbnJlc29sdmVkKD8pJyI+Zm9vMTIzVW5yZXNvbHZlZDwvZXJyb3I+KDxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICd4eHh4JyI+eHh4eDwvZXJyb3I+KTsKKworICAgIDxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgbWV0aG9kICd4eHh4eHgoPyknIj54eHh4eHg8L2Vycm9yPig8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAneHh4eHh4JyI+eHh4eHh4PC9lcnJvcj4pOworCisgICAgLy8gaW5jb21wbGV0ZSBjb2RlIHNob3VsZCBub3QgY2F1c2UgJ2V4cHIgZXhwZWN0ZWQnCisgICAgT2JqZWN0PGVycm9yIGRlc2NyPSInOycgZXhwZWN0ZWQiPiA8L2Vycm9yPgorCisKKyAgICA8ZXJyb3IgZGVzY3I9IkFycmF5IHR5cGUgZXhwZWN0ZWQ7IGZvdW5kOiAnaW50JyI+NDwvZXJyb3I+WzFdID0gNTsKKyAgICBhWzxlcnJvciBkZXNjcj0iSW5jb21wYXRpYmxlIHR5cGVzLiBGb3VuZDogJ2phdmEubGFuZy5TdHJpbmcnLCByZXF1aXJlZDogJ2ludCciPiJkIjwvZXJyb3I+XSA9IG51bGw7CisKKyAgICA8ZXJyb3IgZGVzY3I9IkFycmF5IHR5cGUgZXhwZWN0ZWQ7IGZvdW5kOiAnYTEyJyI+YVswXTwvZXJyb3I+WzFdID0gNTsKKyAgICA8ZXJyb3IgZGVzY3I9IkFycmF5IHR5cGUgZXhwZWN0ZWQ7IGZvdW5kOiAnaW50JyI+aTwvZXJyb3I+WzBdID0gNTsKKyAgICBpID0gYWlbPGVycm9yIGRlc2NyPSJJbmNvbXBhdGlibGUgdHlwZXMuIEZvdW5kOiAnYTEyJywgcmVxdWlyZWQ6ICdpbnQnIj5hWzFdPC9lcnJvcj5dOworCisgICAgZmluYWwgYTEyW10gYTEyYSA9IG5ldyBhMTJbPGVycm9yIGRlc2NyPSJJbmNvbXBhdGlibGUgdHlwZXMuIEZvdW5kOiAnbnVsbCcsIHJlcXVpcmVkOiAnaW50JyI+e251bGx9PC9lcnJvcj5dOworICAgIGludFtdIGlhcnIgPSBuZXcgaW50WzxlcnJvciBkZXNjcj0iSW5jb21wYXRpYmxlIHR5cGVzLiBGb3VuZDogJ251bGwnLCByZXF1aXJlZDogJ2ludCciPnswfTwvZXJyb3I+XTsKKworCisgICAgbmV3IFN0cmluZ1s8ZXJyb3IgZGVzY3I9IkluY29tcGF0aWJsZSB0eXBlcy4gRm91bmQ6ICdqYXZhLmxhbmcuU3RyaW5nJywgcmVxdWlyZWQ6ICdpbnQnIj4iZCI8L2Vycm9yPl07CisgICAgbmV3IFN0cmluZ1s8ZXJyb3IgZGVzY3I9IkluY29tcGF0aWJsZSB0eXBlcy4gRm91bmQ6ICdkb3VibGUnLCByZXF1aXJlZDogJ2ludCciPjEuMTwvZXJyb3I+XQorICAgICAgICAgICAgICBbPGVycm9yIGRlc2NyPSJJbmNvbXBhdGlibGUgdHlwZXMuIEZvdW5kOiAnYTEyJywgcmVxdWlyZWQ6ICdpbnQnIj50aGlzPC9lcnJvcj5dOworCisgICAgYVswXSA9IG51bGw7CisgICAgKGEpWygxKV0uaSA9IDM7CisgICAgKCggaSkgKSA9ICg1KTsKKyAgICBhMTIuaSA9IDA7CisgICAgYXJyKClbMF0gPSAxOworICAgIG5ldyBpbnRbXSB7IDEsM30gWzBdID0gMjsKKyAgICBPYmplY3RbXSB2YXIgPSBudWxsOworICAgIGkgPSB2YXIubGVuZ3RoOworCisgICAgLy8gYXJyYXkgaW5pdGlhbGl6ZXJzCisgICAgdmFyID0gPGVycm9yIGRlc2NyPSJBcnJheSBpbml0aWFsaXplciBpcyBub3QgYWxsb3dlZCBoZXJlIj57IG51bGwsIG51bGwgfTwvZXJyb3I+OworICAgIE9iamVjdCB2YXIxID0gPGVycm9yIGRlc2NyPSJBcnJheSBpbml0aWFsaXplciBpcyBub3QgYWxsb3dlZCBoZXJlIj57IG51bGwsIG51bGwgfTwvZXJyb3I+OworICAgIGludFtdIHZhcjIgPSB7IDEsMiB9OworICAgIHZhcjIgPSBuZXcgaW50W10geyAyLCA0fTsKKyAgICBpbnRbXVtdIGlpMiA9IHsgeyAxLDJ9LCB7NH0gfTsKKworICB9CisgIDxlcnJvciBkZXNjcj0iSWxsZWdhbCB0eXBlOiAndm9pZCciPnZvaWQ8L2Vycm9yPltdIGZ2KCkgeworICAgICBpZiAoMT09MikgcmV0dXJuIG5ldyA8ZXJyb3IgZGVzY3I9IklsbGVnYWwgdHlwZTogJ3ZvaWQnIj52b2lkPC9lcnJvcj5bMF07CisgICAgIHJldHVybiBudWxsOworICB9CisKKyAgaW50W10gYXJyKCkgeyByZXR1cm4gbmV3IGludFswXTsgfQorCisgIHB1YmxpYyA8ZXJyb3IgZGVzY3I9IkludmFsaWQgbWV0aG9kIGRlY2xhcmF0aW9uOyByZXR1cm4gdHlwZSByZXF1aXJlZCI+Zm9vPC9lcnJvcj4oKSB7CisgIH0KKworICB7CisgICAgbmV3IE9iamVjdCgpIHsKKyAgICAgIDxlcnJvciBkZXNjcj0iSW52YWxpZCBtZXRob2QgZGVjbGFyYXRpb247IHJldHVybiB0eXBlIHJlcXVpcmVkIj5PYmplY3Q8L2Vycm9yPigpIHt9CisgICAgfTsKKyAgfQorCisgIC8vIGRvIG5vdCB3YXJuIGFib3V0IGlsbGVnYWwgdHlwZSBpbiBpbmNvbXBsZXRlIGRlY2xhcmF0aW9ucyAoaHR0cDovL3d3dy5pbnRlbGxpai5uZXQvdHJhY2tlci9pZGVhL3ZpZXdTQ1I/cHVibGljSWQ9OTU4NikKKyAgdm9pZCBmb288RU9MRXJyb3IgZGVzY3I9Iic7JyBleHBlY3RlZCI+PC9FT0xFcnJvcj4KK30KKworCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9KYXZhZG9jLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9KYXZhZG9jLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGE3M2VjMgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nL0phdmFkb2MuamF2YQpAQCAtMCwwICsxLDM5IEBACitjbGFzcyBhICB7CisgIC8qKnBlcmlvZC4KKyAgKiBAcmV0dXJuIHgKKyAgKi8KKyAgaW50IGYoKSB7CisgICAgcmV0dXJuIDA7CisgIH0KKyAgLyoqcGVyaW9kLgorICAqIEByZXR1cm4gPHR0Png8L3R0PiB3dGYgPworICAqLworICBpbnQgZjIoKSB7CisgICAgcmV0dXJuIDA7CisgIH0KKworICAvKipwZXJpb2QuCisgICogQHJldHVybgorICAqICAgdHJ1ZSBpZiBzb21lb25lIHdhbnRzCisgICovCisgIGludCBmMygpIHsKKyAgICByZXR1cm4gMDsKKyAgfQorCisKKyAgLyoqcGVyaW9kLgorICAqIEBwYXJhbSBpIGRlc2NyaXB0aW9uIGdvZXMgaGVyZQorICAqIDx3YXJuaW5nPkByZXR1cm48L3dhcm5pbmc+CisgICovCisgIGludCBmKGludCBpKSB7CisgICAgIHJldHVybiBpOworICB9CisKKyAgCisgICAgICAvKioKKyAgICAgICAgKiBAc2VlIGxvY2FsVmFyCisgICAgICAgICovCisgICAgICAgc3RhdGljIFN0cmluZyBLRVlfRk9SX1ZBUj0iaW5kZXgubG9jYWxWYXIiOworICAgICAgIFN0cmluZyBsb2NhbFZhcjsKK30KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvTGFiZWxzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9MYWJlbHMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iOTg4MjRjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvTGFiZWxzLmphdmEKQEAgLTAsMCArMSw2OSBAQAorLy8gbGFiZWxzCitpbXBvcnQgamF2YS5pby4qOworaW1wb3J0IGphdmEubmV0Lio7CisKK2NsYXNzIGEgeworIHZvaWQgZigpIHsKKyAgIDxlcnJvciBkZXNjcj0iTGFiZWwgd2l0aG91dCBzdGF0ZW1lbnQiPmE6PC9lcnJvcj4KKyB9Cisgdm9pZCBmMSgpIHsKKyAgIGE6CisgICA8ZXJyb3IgZGVzY3I9IkxhYmVsIHdpdGhvdXQgc3RhdGVtZW50Ij5iOjwvZXJyb3I+CisgfQorIHZvaWQgZjIoKSB7CisgICBhOiByZXR1cm47CisgfQorIHZvaWQgZjMoKSB7CisgICBhOiByZXR1cm47CisgfQorIHZvaWQgZjQoKSB7CisgICBhOiAKKyAgIGI6CisgICAgcmV0dXJuOworIH0KKyB2b2lkIGY1KCkgeworICAgYTogCisgICAgaWYgKDQ9PTUpIHJldHVybjsKKyAgIGI6IDsKKyB9Cisgdm9pZCBmNigpIHsKKyAgIGE6IDsKKyB9Cit9IAkKKworCitjbGFzcyBBbHJlYWR5SW5Vc2UgeworIHZvaWQgZjAoKSB7CisgICBhOiB7CisgICAgICAgZjAoKTsKKyAgICAgICA8ZXJyb3IgZGVzY3I9IkxhYmVsICdhJyBhbHJlYWR5IGluIHVzZSI+YTwvZXJyb3I+OiBmMCgpOworICAgfQorCisgfQorIHZvaWQgZjEoKSB7CisgICBhOgorICAgdHJ5IHsKKyAgICAgZjEoKTsKKyAgICAgPGVycm9yIGRlc2NyPSJMYWJlbCAnYScgYWxyZWFkeSBpbiB1c2UiPmE8L2Vycm9yPjoKKyAgICAgZjEoKTsKKyAgIH0KKyAgIGZpbmFsbHkgeworICAgfQorIH0KKyB2b2lkIGYyKCkgeworICB7CisgICAgYTo7CisgIH0KKyAgeworICAgIGE6OworICB9CisgfQorIHZvaWQgZjMoKSB7CisgICBhOgorICAgbmV3IE9iamVjdCgpIHsKKyAgICAgdm9pZCBmKCkgeworICAgICAgYTo7CisgICAgIH0KKyAgIH07CisgfQorfSAgICAgICAKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9Mb2NhbFZhcmlhYmxlSW5pdGlhbGl6YXRpb24uamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nL0xvY2FsVmFyaWFibGVJbml0aWFsaXphdGlvbi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRkZGFhMWQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9Mb2NhbFZhcmlhYmxlSW5pdGlhbGl6YXRpb24uamF2YQpAQCAtMCwwICsxLDQxOCBAQAoraW1wb3J0IGphdmEuaW8uKjsKK2ltcG9ydCBqYXZhLm5ldC4qOworaW1wb3J0IGphdmEudXRpbC4qOworCitwdWJsaWMgY2xhc3MgYSAgeworICBzdGF0aWMgZmluYWwgYSBhaTsKKyAgaW50IGlpOworCisgIHN0YXRpYyB7CisgICAgPGVycm9yIGRlc2NyPSJWYXJpYWJsZSAnYWknIG1pZ2h0IG5vdCBoYXZlIGJlZW4gaW5pdGlhbGl6ZWQiPmFpPC9lcnJvcj4uaWkgPSA0OworICAgIGFpID0gbnVsbDsKKyAgfQorCisgIHZvaWQgZjEoaW50IGkpIHsKKyAgICBpbnQgajsKKyAgICBpID0gPGVycm9yIGRlc2NyPSJWYXJpYWJsZSAnaicgbWlnaHQgbm90IGhhdmUgYmVlbiBpbml0aWFsaXplZCI+ajwvZXJyb3I+OworICB9CisgIHZvaWQgZjIoaW50IGkpIHsKKyAgICBpbnQgajsKKyAgICBpZiAoaSA9PTIpIGogPSA0OworICAgIGkgPSA8ZXJyb3IgZGVzY3I9IlZhcmlhYmxlICdqJyBtaWdodCBub3QgaGF2ZSBiZWVuIGluaXRpYWxpemVkIj5qPC9lcnJvcj47CisgIH0KKyAgdm9pZCBmMyhpbnQgaSkgeworICAgIGludCBqOworICAgIGlmIChpPT0zICYmIChqPWkpICE9IDkpIHsKKyAgICAgIGkgPSBqKzI7CisgICAgfQorICAgIGVsc2UgeworICAgICAgaSAtPSAtMSAtIDxlcnJvciBkZXNjcj0iVmFyaWFibGUgJ2onIG1pZ2h0IG5vdCBoYXZlIGJlZW4gaW5pdGlhbGl6ZWQiPmo8L2Vycm9yPjsKKyAgICB9CisgIH0KKyAgdm9pZCBmNChpbnQgaSkgeworCisgICBmaW5hbCBpbnQgZGQ7CisKKyAgIFJ1bm5hYmxlIHIgPSBuZXcgUnVubmFibGUoKSB7CisgICAgcHVibGljIHZvaWQgcnVuKCkgeworICAgICBpbnQgaiA9IDxlcnJvciBkZXNjcj0iVmFyaWFibGUgJ2RkJyBtaWdodCBub3QgaGF2ZSBiZWVuIGluaXRpYWxpemVkIj5kZDwvZXJyb3I+OworICAgIH0KKyAgIH07CisKKyAgIGlmIChpID09IDMpIGRkID0gNTsKKyAgIGVsc2UgZGQgPSA2OworICB9CisgIHZvaWQgZjUoaW50IGkpIHsKKyAgIGZpbmFsIGludCBrOworICAgY2xhc3MgaW5uZXIgeyAKKyAgICAgdm9pZCBmKCkgeworICAgICAgIGludCBqID0gPGVycm9yIGRlc2NyPSJWYXJpYWJsZSAnaycgbWlnaHQgbm90IGhhdmUgYmVlbiBpbml0aWFsaXplZCI+azwvZXJyb3I+OworICAgICB9CisgICB9CisKKyAgfQorICAgIHZvaWQgZjYoaW50IGEpeworICAgICAgT2JqZWN0W10gdmFyOworICAgICAgaWYgKGEgPiAwKXsKKyAgICAgIH0KKyAgICAgIGVsc2V7CisgICAgICAgIHZhciA9IG5ldyBPYmplY3RbMV07CisgICAgICB9CisgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oPGVycm9yIGRlc2NyPSJWYXJpYWJsZSAndmFyJyBtaWdodCBub3QgaGF2ZSBiZWVuIGluaXRpYWxpemVkIj52YXI8L2Vycm9yPik7CisgICAgfQorCisKKyAgICB2b2lkIGY3KCkgeworICAgICAgICBpbnQgazsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGs9MDsKKyAgICAgICAgfSBmaW5hbGx5IHsKKyAgICAgICAgICAgIGlmICg8ZXJyb3IgZGVzY3I9IlZhcmlhYmxlICdrJyBtaWdodCBub3QgaGF2ZSBiZWVuIGluaXRpYWxpemVkIj5rPC9lcnJvcj49PTApIHsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIHZvaWQgZjgoaW50IG4pCisgICAgeworICAgICAgICBpbnQgazsKKyAgICAgICAgd2hpbGUgKG4gPCA0KSB7CisgICAgICAgICAgICBrID0gbjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIC8vIGsgaXMgbm90ICJkZWZpbml0ZWx5IGFzc2lnbmVkIiBiZWZvcmUgdGhpcworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oPGVycm9yIGRlc2NyPSJWYXJpYWJsZSAnaycgbWlnaHQgbm90IGhhdmUgYmVlbiBpbml0aWFsaXplZCI+azwvZXJyb3I+KTsgIAorICAgIH0KKworICAgIHZvaWQgZjkoKSB7CisgICAgICAgIGZpbmFsIGludCBrOworICAgICAgICA8ZXJyb3IgZGVzY3I9IlZhcmlhYmxlICdrJyBtaWdodCBub3QgaGF2ZSBiZWVuIGluaXRpYWxpemVkIj5rPC9lcnJvcj4rPTE7CisgICAgfQorICAgIHZvaWQgZjEwKCkgeworICAgICAgICBmaW5hbCBpbnQgazsKKyAgICAgICAgPGVycm9yIGRlc2NyPSJWYXJpYWJsZSAnaycgbWlnaHQgbm90IGhhdmUgYmVlbiBpbml0aWFsaXplZCI+azwvZXJyb3I+Kys7CisgICAgICAgIGludCBpID0gPGVycm9yIGRlc2NyPSJWYXJpYWJsZSAnaScgbWlnaHQgbm90IGhhdmUgYmVlbiBpbml0aWFsaXplZCI+aTwvZXJyb3I+ICsgMTsKKyAgICAgICAgaW50IGogPSAoaj0yKSA9PSAxIHx8IGo9PTAgPyAxIDogajsKKyAgICB9CisKKyAgICB2b2lkIGYxMSgpIHsKKyAgICAgICAgaW50IHggPSAwOworICAgICAgICBzd2l0Y2ggKHgpIHsKKyAgICAgICAgICAgIGNhc2UgMDoKKyAgICAgICAgICAgICAgICBpbnQgeSA9IDE7CisgICAgICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKHkpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSAxOgorICAgICAgICAgICAgICAgIGludCB6ID0gPGVycm9yIGRlc2NyPSJWYXJpYWJsZSAneScgbWlnaHQgbm90IGhhdmUgYmVlbiBpbml0aWFsaXplZCI+eTwvZXJyb3I+OworICAgICAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbih6KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKyAgICB2b2lkIGYxMigpIHsKKyAgICAgICAgc3dpdGNoICgwKSB7CisgICAgICAgIGNhc2UgMDoKKyAgICAgICAgICAgIGludCBrPTA7CisgICAgICAgIGNhc2UgMToKKyAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbig8ZXJyb3IgZGVzY3I9IlZhcmlhYmxlICdrJyBtaWdodCBub3QgaGF2ZSBiZWVuIGluaXRpYWxpemVkIj5rPC9lcnJvcj4pOworICAgICAgICB9CisgICAgfQorCisgICAgcHVibGljIGNsYXNzIEFJbm5lciB7CisgICAgICBjbGFzcyBBSTIge30KKyAgICAgIHByaXZhdGUgQUkyIG15VGl0bGVSZW5kZXJlciA9IG5ldyBBSTIoKSB7CisgICAgICAgIHByaXZhdGUgU3RyaW5nIG15TGFiZWwgPSAiIjsKKworICAgICAgICBwdWJsaWMgU3RyaW5nIGdldFRyZWVDZWxsUmVuZGVyZXJDb21wb25lbnQoU3RyaW5nIHZhbHVlKSB7CisgICAgICAgICAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBTdHJpbmcpIHsKKyAgICAgICAgICAgICAgICBpbnQgaSA9IG15TGFiZWwubGVuZ3RoKCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAgfQorICAgICAgfTsKKyAgICB9CisKKyAgICB2b2lkIGYxMygpIHsKKyAgICAgICAgaW50IGkgOworICAgICAgICB0cnkgeworICAgICAgICAgICAgaSA9IDA7CisgICAgICAgICAgICBpZiAoaT09MCkgdGhyb3cgbmV3IElPRXhjZXB0aW9uKCk7CisgICAgICAgIH0KKyAgICAgICAgY2F0Y2ggKElPRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIGlmICg8ZXJyb3IgZGVzY3I9IlZhcmlhYmxlICdpJyBtaWdodCBub3QgaGF2ZSBiZWVuIGluaXRpYWxpemVkIj5pPC9lcnJvcj49PTApIHJldHVybjsKKyAgICAgICAgfQorICAgIH0KKworICAgIGFic3RyYWN0IGNsYXNzIFggeworICAgICAgICBjbGFzcyBYRXhjZXB0aW9uIGV4dGVuZHMgRXhjZXB0aW9ue30KKyAgICAgICAgY2xhc3MgWUV4Y2VwdGlvbiBleHRlbmRzIEV4Y2VwdGlvbnt9CisgICAgICAgIGNsYXNzIFpFeGNlcHRpb24gZXh0ZW5kcyBFeGNlcHRpb257fQorICAgICAgICBwdWJsaWMgdm9pZCB0ZXN0KCkgdGhyb3dzIFhFeGNlcHRpb24geworICAgICAgICAgICAgZmluYWwgT2JqZWN0IG9iajsKKyAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgb2JqID0gdGVzdDEoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNhdGNoIChZRXhjZXB0aW9uIGZuZikgeworICAgICAgICAgICAgfQorICAgICAgICAgICAgZmluYWxseSB7CisgICAgICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICAgICAgdGVzdDIoKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgY2F0Y2ggKFpFeGNlcHRpb24gZW9mKSB7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgPGVycm9yIGRlc2NyPSJWYXJpYWJsZSAnb2JqJyBtaWdodCBub3QgaGF2ZSBiZWVuIGluaXRpYWxpemVkIj5vYmo8L2Vycm9yPi5oYXNoQ29kZSgpOyAvL2NhbiBzdGF5IHVuaW5pdGlhbGl6ZWQKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyBhYnN0cmFjdCBPYmplY3QgdGVzdDEoKSB0aHJvd3MgWUV4Y2VwdGlvbiwgWEV4Y2VwdGlvbjsKKworICAgICAgICBwdWJsaWMgYWJzdHJhY3Qgdm9pZCB0ZXN0MigpIHRocm93cyBYRXhjZXB0aW9uLCBaRXhjZXB0aW9uOworICAgIH0KKworICAgIHB1YmxpYyBzdGF0aWMgaW50IHRlc3QoTGlzdCBhTGlzdCkgeworICAgICAgICBMaXN0IGxpc3QyOworICAgICAgICBpbnQgY291bnRlciA9IDA7CisgICAgICAgIGZvciAoaW50IGk9MDsgaTxhTGlzdC5zaXplKCk7IGkrKykgeworICAgICAgICAgICAgd2hpbGUgKGNvdW50ZXIgIT0gMCkgeworICAgICAgICAgICAgICAgIGNvdW50ZXIrKzsKKyAgICAgICAgICAgICAgICBsaXN0MiA9IG5ldyBBcnJheUxpc3QoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIDxlcnJvciBkZXNjcj0iVmFyaWFibGUgJ2xpc3QyJyBtaWdodCBub3QgaGF2ZSBiZWVuIGluaXRpYWxpemVkIj5saXN0MjwvZXJyb3I+LmFkZChhTGlzdC5nZXQoaSkpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBjb3VudGVyOworICAgIH0KKworICAgIHZvaWQgZm9yRWFjaFBhcmFtKGphdmEuaW8uRmlsZSB4KSB7CisgICAgICAgIGZvciAoamF2YS5pby5GaWxlIGY6IDxlcnJvciBkZXNjcj0iVmFyaWFibGUgJ2YnIG1pZ2h0IG5vdCBoYXZlIGJlZW4gaW5pdGlhbGl6ZWQiPmY8L2Vycm9yPi5saXN0RmlsZXMoKSkgeworICAgICAgICAgICBmb3JFYWNoUGFyYW0oZik7CisgICAgICAgIH0KKyAgICB9CisKKyAgLy8gYWxsIGNvZGUgYmVsb3cgaXMgY29ycmVjdAorICBpbnQgY2YxKGludCBpKSB7CisgICAgcmV0dXJuIGk7CisgIH0KKworICB2b2lkIGNmMihpbnQgaSkgeworICAgIGludCBqOworICAgIGlmIChpID09IDAgJiYgKGo9aSkgIT0gMikgeworICAgICAgaSA9IGo7CisgICAgfQorICAgIGlmIChpID09IDAgfHwgKGo9aSkgIT0gMiB8fCBqPjMpIHsKKyAgICAgIGkgPSAyOworICAgIH0KKyAgfQorCisgIGJvb2xlYW4gY2YzKGludCBpKSB7CisgICAgZmluYWwgaW50IGo7CisgICAgaWYgKGk8MyB8fCBpPjMzKSBqID0gaTsKKyAgICBlbHNlIGogPSA0OworICAgIGkgPSBqOworCisgICAgcmV0dXJuIGk9PTMgJiYgaT09NTsKKyAgfQorICB2b2lkIGNmMzMoaW50IGkpIHsKKyAgICBmaW5hbCBpbnQgajI7CisgICAgd2hpbGUgKHRydWUpIHsKKyAgICAgIGoyID0gNTsKKyAgICAgIGJyZWFrOworICAgIH0KKyAgICBpID0gajI7CisgIH0KKworICB2b2lkIGNmNCgpIHsKKyAgICBmaW5hbCBpbnQgaTE7CisgICAgaW50IGkyOworICAgIGZpbmFsIE9iamVjdCBvMTsKKyAgfQorICB2b2lkIGNmNSgpIHsKKyAgIGZpbmFsIGludCBkaWFsb2cgPSAzOworCisgICBmaW5hbCBpbnQgZGQ7CisgICBpZiAoZGlhbG9nID09IDMpIGRkID0gNTsKKyAgIGVsc2UgZGQgPSA2OworCisgICBSdW5uYWJsZSByID0gbmV3IFJ1bm5hYmxlKCkgeworICAgIHB1YmxpYyB2b2lkIHJ1bigpIHsKKyAgICAgaW50IGkgPSBkaWFsb2c7CisgICAgIGludCBqID0gZGQ7CisgICAgfQorICAgfTsKKworICB9CisgIHZvaWQgY2Y2KCkgeworICAgIGNsYXNzIGlubmVyIGV4dGVuZHMgYSB7CisgICAgICB2b2lkIGZpKCkgeworICAgICAgIGludCBpID0gaWk7CisgICAgICB9CisgICAgfQorICAgIGEgYWluc3QgPSBuZXcgYSgpIHsKKyAgICAgIHZvaWQgZmkoKSB7CisgICAgICAgIGludCBpID0gaWk7CisgICAgICB9CisgICAgfTsKKyAgfQorICBhKCkgeworICAgIGludCBpID0gYWkuaWk7CisgIH0KKyAgdm9pZCBjZjcoKSB7CisgICAgICBmb3IoaW50IGkgPSAwOyBpIDwgMzsgaSsrKXsKKyAgICAgICAgT2JqZWN0IGVsZW1lbnQ7CisgICAgICAgIGlmIChpPT0wKXsKKyAgICAgICAgICBlbGVtZW50ID0gbnVsbDsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChpPT0zKXsKKyAgICAgICAgICBlbGVtZW50ID0gbnVsbDsKKyAgICAgICAgfQorICAgICAgICBlbHNleworICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAgICAgIE9iamVjdCBuZXdlID0gZWxlbWVudDsKKyAgICAgIH0KKyAgfQorICB2b2lkIGNmOChpbnQgbikKKyAgIHsKKyAgICAgICAgaW50IGk7CisgICAgICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgICAgICBpZiAoZmFsc2UpIHsKKyAgICAgICAgICAgICAgaSA9IDA7CisgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGkrKzsKKworICAgIH0KKyAgZmluYWwgYm9vbGVhbiBGQiA9IHRydWU7CisKKyAgdm9pZCBjZjkoKSB7CisgICAgICBpbnQgazsKKyAgICAgIGlmIChGQikgeworICAgICAgICBrID0gNDsKKyAgICAgIH0KKyAgICAgIGludCBqID0gazsKKyAgfQorCisKKyAgdm9pZCBjZjEwKCkgeworICAgIGZvciAoU3RyaW5nIGxpbmU7IChsaW5lID0gIiIpICE9IG51bGw7ICkgeworICAgICAgbGluZS5pbmRleE9mKCIgIik7CisgICAgfQorICB9CisKKyAgdm9pZCBjZjExKGJvb2xlYW4gZCkgeworICAgICAgICBib29sZWFuIGI7CisgICAgICAgIGJvb2xlYW4gYyA9IHRydWU7CisgICAgICAgIGlmIChjICYmIChmYWxzZSAmJiB0cnVlKSkgeworICAgICAgICAgICAgYyA9IGI7CisgICAgICAgIH0KKyAgfQorICB2b2lkIGNmMTIoKSB7CisgICAgICAgIGJvb2xlYW4gYm9vbGVhblZhciA9IHRydWU7CisgICAgICAgIGJvb2xlYW4gc3RyaW5nVmFyOworICAgICAgICBpZiAoIShib29sZWFuVmFyICYmIChzdHJpbmdWYXIgPSB0cnVlKSkpIHsKKyAgICAgICAgICAgIHN0cmluZ1ZhciA9IGZhbHNlOworICAgICAgICB9CisgICAgICAgIGlmIChzdHJpbmdWYXIpIHsKKworICAgICAgICB9CisgIH0KKyAgCisgICAgdm9pZCBjZnh4KGJvb2xlYW4gYSwgYm9vbGVhbiBiKSB7CisgICAgICAgIGludCBuOworICAgICAgICBpZiAoKGEgfHwgYikgJiYgKG4gPSAwKSA+PSAyKSB7CisgICAgICAgICAgICBuKys7ICAgLy8KKyAgICAgICAgfQorICAgIH0KKyAgICB2b2lkIGNmeHgxKGJvb2xlYW4gYSwgaW50IGIpIHsKKyAgICAgICAgZmluYWwgaW50IGk7CisgICAgICAgIGlmICgodHJ1ZSB8fCBmYWxzZSkgJiYgKGkgPSBiKSAhPSAwKSB7CisgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oaSk7IC8vIGkgZ2V0cyBoaWdobGlnaHRlZCB9CisgICAgICAgIH0KKyAgICB9CisgICAgdm9pZCBjZngzKCkgeworICAgICAgYm9vbGVhbiBiOworICAgICAgYm9vbGVhbiBjOy8vID0gdHJ1ZTsKKyAgICAgIGlmICg8ZXJyb3IgZGVzY3I9IlZhcmlhYmxlICdjJyBtaWdodCBub3QgaGF2ZSBiZWVuIGluaXRpYWxpemVkIj5jPC9lcnJvcj4gJiYgZmFsc2UpIHsKKyAgICAgICAgICBjID0gYjsKKyAgICAgIH0KKyAgICB9CisgICAgdm9pZCBjZng0KCkKKyAgICB7CisgICAgICAgIGZpbmFsIGludCBrOworICAgICAgICBpZiAoZmFsc2UpIHsKKyAgICAgICAgICAgIGsgPSAwOworICAgICAgICAgICAgayA9IDE7CisgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oayk7CisgICAgICAgIH0KKyAgICB9Cit9CisKKworY2xhc3MgTWFpbiB7CisgICAgIHZvaWQgZigpIHsKKyAgICAgICAgIGZpbmFsIGludCB4OworICAgICAgICAgeCA9IDA7CisgICAgICAgICBjbGFzcyBDIHsKKyAgICAgICAgICAgICB2b2lkIG0gKCkgeworICAgICAgICAgICAgICAgICBpbnQgeSA9IHg7CisgICAgICAgICAgICAgfQorICAgICAgICAgfQorICAgICB9Cit9CisKKworLy8gY29udGludWUgaW4gZmluYWxseQorY2xhc3MgUXVhcnR6U2NoZWR1bGVyVGhyZWFkIHsKKyAgICBwdWJsaWMgdm9pZCBydW4oKSB0aHJvd3MgSU9FeGNlcHRpb24geworICAgICAgICB3aGlsZSAodHJ1ZSkgeworICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIH0gZmluYWxseSB7CisgICAgICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICAgICAgcnVuKCk7CisgICAgICAgICAgICAgICAgfSBjYXRjaCAoSU9FeGNlcHRpb24gZSkgeworICAgICAgICAgICAgICAgICAgICBlLnByaW50U3RhY2tUcmFjZSgpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworfQorY2xhc3MgRXhjZXB0aW9uUHJvYmxlbXMgeworCisJcHJpdmF0ZSBib29sZWFuIGJhZCgpIHsKKwkJZmluYWwgYm9vbGVhbiBzdWNjZWVkZWQ7CisJCXRyeSB7CisgICAgICAgICAgICBuZXcgRmlsZUlucHV0U3RyZWFtKCJ0ZXN0Iik7CisgICAgICAgICAgICBzdWNjZWVkZWQgPSB0cnVlOworCQl9IGNhdGNoIChJT0V4Y2VwdGlvbiBlKSB7CisJCQk8ZXJyb3IgZGVzY3I9IlZhcmlhYmxlICdzdWNjZWVkZWQnIG1pZ2h0IGFscmVhZHkgaGF2ZSBiZWVuIGFzc2lnbmVkIHRvIj5zdWNjZWVkZWQ8L2Vycm9yPiA9IGZhbHNlOyAvLyBzaG91bGQgd2FybiBoZXJlCisJCX0KKwkJcmV0dXJuIHN1Y2NlZWRlZDsKKwl9Cit9CitjbGFzcyBJbUdvb2QgeworICAgICAgICBpbnQgZm9vKCkgeyAgICAvL0lERUFERVYtNzQ0NiAKKyAgICAgICAgICAgIGludCBmb287CisgICAgICAgICAgICBpZiAodHJ1ZSkgeworICAgICAgICAgICAgICAgIGZvbyA9IDQyOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIGZvbzsKKyAgICAgICAgfQorICAgIH0KKworY2xhc3MgU3dpdGNoVGVzdAoreworICAgIHB1YmxpYyBzdGF0aWMgU3RyaW5nIG1ldGhvZCgpCisgICAgeworICAgICAgICBpbnQgYSA9IDA7CisgICAgICAgIHN3aXRjaCAoYSkKKyAgICAgICAgeworICAgICAgICAgICAgY2FzZSAwOgorICAgICAgICAgICAgICAgIHJldHVybiBudWxsOworICAgICAgICAgICAgY2FzZSA0OgorICAgICAgICAgICAgICAgIFN0cmluZyBkZXNjcmlwdGlvbjsKKyAgICAgICAgICAgICAgICByZXR1cm4gPGVycm9yIGRlc2NyPSJWYXJpYWJsZSAnZGVzY3JpcHRpb24nIG1pZ2h0IG5vdCBoYXZlIGJlZW4gaW5pdGlhbGl6ZWQiPmRlc2NyaXB0aW9uPC9lcnJvcj47CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIHJldHVybiAiIjsKKyAgICAgICAgfQorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9Mb29wLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9Mb29wLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjAwYmFlMwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nL0xvb3AuamF2YQpAQCAtMCwwICsxLDY3IEBACisvLyBjb250aW51ZSBvdXRzaWRlIG9mLi4uL2xvb3AgbGFiZWwKK3B1YmxpYyBjbGFzcyBhIHsKKworICB2b2lkIGYoKSB7CisgICAgPGVycm9yIGRlc2NyPSJDb250aW51ZSBvdXRzaWRlIG9mIGxvb3AiPmNvbnRpbnVlOzwvZXJyb3I+CisgICAgd2hpbGUgKHRydWUpIHsKKyAgICAgIGNvbnRpbnVlOworICAgIH0KKyAgICBkbyB7IGNvbnRpbnVlOyB9IHdoaWxlICh0cnVlKTsKKyAgICBzd2l0Y2ggKDEpIHsKKyAgICAgIGNhc2UgMTogPGVycm9yIGRlc2NyPSJDb250aW51ZSBvdXRzaWRlIG9mIGxvb3AiPmNvbnRpbnVlOzwvZXJyb3I+CisgICAgfQorICAgIGZvciAoOzspIHsKKyAgICAgIGNvbnRpbnVlOworICAgIH0KKworICAgIGZvciAoOzspIHsKKyAgICAgIG5ldyBmZigpIHsKKyAgICAgICAgdm9pZCBmKCkgeyAKKyAgICAgICAgICA8ZXJyb3IgZGVzY3I9IkNvbnRpbnVlIG91dHNpZGUgb2YgbG9vcCI+Y29udGludWU7PC9lcnJvcj4KKyAgICAgICAgfQorICAgICAgfTsKKyAgICAgIGNvbnRpbnVlOworICAgIH0KKworCisgICAgd2hpbGUgKHRydWUpIHsKKyAgICAgIGNsYXNzIHMgeworICAgICAgIHsKKyAgICAgICAgIDxlcnJvciBkZXNjcj0iQ29udGludWUgb3V0c2lkZSBvZiBsb29wIj5jb250aW51ZTs8L2Vycm9yPgorICAgICAgIH0KKyAgICAgIH0KKyAgICAgIGNvbnRpbnVlOworICAgIH0KKworICAgIGRvIHsKKyAgICAgIGNsYXNzIHMgeworICAgICAgIHsKKyAgICAgICAgIDxlcnJvciBkZXNjcj0iQ29udGludWUgb3V0c2lkZSBvZiBsb29wIj5jb250aW51ZTs8L2Vycm9yPgorICAgICAgIH0KKyAgICAgIH0KKyAgICAgIGNvbnRpbnVlOworICAgIH0gd2hpbGUgKHRydWUpOworCisKKworICAgIGE6CisgICAgaWYgKDI9PTQpIHsKKyAgICBmb3IgKDs7KSB7CisgICAgICA8ZXJyb3IgZGVzY3I9Ik5vdCBhIGxvb3AgbGFiZWw6ICdhJyI+Y29udGludWUgYTs8L2Vycm9yPgorICAgIH0KKyAgICB9CisKKyAgICBhOgorICAgIGI6CisgICAgZm9yICg7OykgeworICAgICAgPGVycm9yIGRlc2NyPSJOb3QgYSBsb29wIGxhYmVsOiAnYSciPmNvbnRpbnVlIGE7PC9lcnJvcj4KKyAgICB9CisgICAgCisKKworICB9Cit9CisKK2NsYXNzIGZmIHsKKworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvTWV0aG9kQ2FsbHMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nL01ldGhvZENhbGxzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTgzZThkMAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nL01ldGhvZENhbGxzLmphdmEKQEAgLTAsMCArMSwxMjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwMC0yMDEyIEpldEJyYWlucyBzLnIuby4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKy8vIGlsbGVnYWwgbWV0aG9kIGNhbGxzCisKK2NsYXNzIEEgeworICAgIHByaXZhdGUgY2xhc3MgQiB7CisgICAgICBPYmplY3QgbyA9IHN1cGVyPGVycm9yIGRlc2NyPSInLicgZXhwZWN0ZWQiPjs8L2Vycm9yPgorICAgIH0KKyAgICBwcml2YXRlIEIgYiA9IG51bGw7CisgICAgQShBIGEpCisgICAgeworICAgICAgICBuZXcgQShhKS5uZXcgQigpOworICAgICAgICBCIGIgPSBuZXcgQShhKS5iOworICAgICAgICBBQSBhYSA9IChBQSkgYTsKKyAgICAgICAgQUEuU0FBIHNhYSA9IGFhLm5ldyBTQUEoKTsKKyAgICAgICAgQUEuU0FBIHNhYTEgPSA8ZXJyb3IgZGVzY3I9IidBQScgaXMgbm90IGFuIGVuY2xvc2luZyBjbGFzcyI+bmV3IEFBLlNBQSgpPC9lcnJvcj47CisgICAgfQorfQorCitjbGFzcyBBQSBleHRlbmRzIEEgeworICAgIHByaXZhdGUgQUEgYWE7CisgICAgQUEoQSBhKSB7CisgICAgICAgIHN1cGVyKGEpOworICAgIH0KKyAgICBjbGFzcyBTQUEge30KKworICAgIHZvaWQgZigpIHsKKyAgICAgIG5ldyBBQS5TQUEoKTsKKyAgICAgIG5ldyBTQUEoKTsKKyAgICAgIEFBLnRoaXMuYWEubmV3IFNBQSgpOworCisgICAgICBjbGFzcyBNeUFBIGV4dGVuZHMgQUEgeworICAgICAgICBwdWJsaWMgTXlBQShBIGEpIHsKKyAgICAgICAgICBzdXBlcihhKTsKKyAgICAgICAgfQorICAgICAgfQorICAgIH0KK30KKworY2xhc3MgQVggeworICAgIGNsYXNzIEIgeworICAgIH0KK30KK2NsYXNzIENYIHsKKyAgICB7CisgICAgICAgIDxlcnJvciBkZXNjcj0iJ0FYJyBpcyBub3QgYW4gZW5jbG9zaW5nIGNsYXNzIj5uZXcgQVguQigpPC9lcnJvcj47CisgICAgfQorfQorCisKKworY2xhc3MgYyB7CisgICAgYygpIHt9CisKKyAgICBjbGFzcyBpbm5lciB7CisgICAgICAgIGNsYXNzIGluaW5uZXIge30KKyAgICB9CisKKyAgICBzdGF0aWMgdm9pZCBmKCkgeworICAgICAgICA8ZXJyb3IgZGVzY3I9IidjLnRoaXMnIGNhbm5vdCBiZSByZWZlcmVuY2VkIGZyb20gYSBzdGF0aWMgY29udGV4dCI+bmV3IGlubmVyKCk8L2Vycm9yPjsKKyAgICB9CisKKyAgICBzdGF0aWMgeworICAgICAgICA8ZXJyb3IgZGVzY3I9IidjLnRoaXMnIGNhbm5vdCBiZSByZWZlcmVuY2VkIGZyb20gYSBzdGF0aWMgY29udGV4dCI+bmV3IGlubmVyKCk8L2Vycm9yPjsKKyAgICB9Cit9CisKKworY2xhc3MgQTEgeworICB2b2lkIGYoKSB7fQorfQorY2xhc3MgQjEgeworICB2b2lkIGYoKSB7CisgICAgQTEuPGVycm9yIGRlc2NyPSJOb24tc3RhdGljIG1ldGhvZCAnZigpJyBjYW5ub3QgYmUgcmVmZXJlbmNlZCBmcm9tIGEgc3RhdGljIGNvbnRleHQiPmY8L2Vycm9yPigpOworICB9Cit9CisKK2NsYXNzIEFBQUEgaW1wbGVtZW50cyBqYXZhLmlvLlNlcmlhbGl6YWJsZQoreworICAgIHB1YmxpYyBBQUFBICgpCisgICAgeworICAgICAgICBzdXBlcigpOyAvLyBoZXJlCisgICAgfQorfQorCitjbGFzcyBEQ0MgeworICAgIHB1YmxpYyBEQ0MoaW50IGkpIHsKKyAgICB9CisKKyAgICBwdWJsaWMgRENDKGludCBpLCBpbnQgeikgeworICAgICAgICA8ZXJyb3IgZGVzY3I9Ik1ldGhvZCBjYWxsIGV4cGVjdGVkIj5EQ0MoaSk8L2Vycm9yPjsKKyAgICB9CisgICAgdm9pZCBmKCkgeworICAgICAgICA8ZXJyb3IgZGVzY3I9Ik1ldGhvZCBjYWxsIGV4cGVjdGVkIj5EQ0MoMSk8L2Vycm9yPjsKKyAgICAgICAgbmV3IERDQygxKTsKKyAgICB9CisgICAgeworICAgICAgICA8ZXJyb3IgZGVzY3I9IlF1YWxpZmllciBtdXN0IGJlIGFuIGV4cHJlc3Npb24iPmphdmE8L2Vycm9yPi50b1N0cmluZygpOworICAgIH0KK30KKworY2xhc3MgVGhpc0V4cHJlc3Npb24geworICAgIHN0YXRpYyBTdHJpbmcgZm9vKCkgeworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oPGVycm9yIGRlc2NyPSInVGhpc0V4cHJlc3Npb24udGhpcycgY2Fubm90IGJlIHJlZmVyZW5jZWQgZnJvbSBhIHN0YXRpYyBjb250ZXh0Ij50aGlzPC9lcnJvcj4pOworICAgICAgICByZXR1cm4gPGVycm9yIGRlc2NyPSInVGhpc0V4cHJlc3Npb24uc3VwZXInIGNhbm5vdCBiZSByZWZlcmVuY2VkIGZyb20gYSBzdGF0aWMgY29udGV4dCI+c3VwZXI8L2Vycm9yPi50b1N0cmluZygpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nL01ldGhvZENhbm5vdEJlQXBwbGllZC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvTWV0aG9kQ2Fubm90QmVBcHBsaWVkLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjE5MWRjOQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nL01ldGhvZENhbm5vdEJlQXBwbGllZC5qYXZhCkBAIC0wLDAgKzEsNyBAQAorY2xhc3MgQSB7eworICBTdHJpbmcudmFsdWVPZig8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnY2hhcnMnIj5jaGFyczwvZXJyb3I+LCAwLCAxMCk7IC8vIGFsbCBhcmd1bWVudHMgYXJlIGhpZ2hsaWdodGVkIHdoZW4gb25seSBjaGFycyBoYXMgYSBwcm9ibGVtaWoKKyAgbmV3IFN0cmluZyg8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnY2hhcnMnIj5jaGFyczwvZXJyb3I+LCAwLCAxMCk7IC8vIGhpZ2hsaWdodGluZyBpcyBnb29kIGhlcmUuCisKKyAgU3RyaW5nLnZhbHVlT2Y8ZXJyb3IgZGVzY3I9Iid2YWx1ZU9mKGNoYXJbXSwgaW50LCBpbnQpJyBpbiAnamF2YS5sYW5nLlN0cmluZycgY2Fubm90IGJlIGFwcGxpZWQgdG8gJyhpbnQsIGludCwgaW50KSciPigwLCAwLCAxMCk8L2Vycm9yPjsKKyAgbmV3IFN0cmluZzxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgY29uc3RydWN0b3IgJ1N0cmluZyhpbnQsIGludCwgaW50KSciPigwLCAwLCAxMCk8L2Vycm9yPjsKK319CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9NaXNzaW5nUmV0dXJuLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9NaXNzaW5nUmV0dXJuLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWEzYjcwNQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nL01pc3NpbmdSZXR1cm4uamF2YQpAQCAtMCwwICsxLDEwNTkgQEAKKy8vTWlzc2luZyByZXR1cm4gc3RhdGVtZW50CitpbXBvcnQgamF2YS5pby4qOworaW1wb3J0IGphdmEubmV0Lio7CitwdWJsaWMgY2xhc3MgYSAgeworaW50ZXJmYWNlIGlpIHt9CisKKworCisgaW50IGYxKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisgPGVycm9yIGRlc2NyPSJNaXNzaW5nIHJldHVybiBzdGF0ZW1lbnQiPn08L2Vycm9yPgorIAorIE9iamVjdCBmMihpbnQgaSkgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICBpZiAoaSA9PSAwKSByZXR1cm4gbnVsbDsKKyA8ZXJyb3IgZGVzY3I9Ik1pc3NpbmcgcmV0dXJuIHN0YXRlbWVudCI+fTwvZXJyb3I+CisKKyBPYmplY3QgZjMoaW50IGkpIHRocm93cyBFeGNlcHRpb24geworICAgd2hpbGUgKGkgPT0gMCkgcmV0dXJuIG51bGw7CisgPGVycm9yIGRlc2NyPSJNaXNzaW5nIHJldHVybiBzdGF0ZW1lbnQiPn08L2Vycm9yPgorCisgT2JqZWN0IGY0KGludCBpKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgIHN3aXRjaCAoaSkgeworICAgICBjYXNlIDE6IHJldHVybiBudWxsOworICAgfQorIDxlcnJvciBkZXNjcj0iTWlzc2luZyByZXR1cm4gc3RhdGVtZW50Ij59PC9lcnJvcj4KKworIE9iamVjdCBmNShpbnQgaSkgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICBpZiAoaT09MikgcmV0dXJuIG51bGw7CisgICBlbHNlIGlmIChpICE9IDIpIHJldHVybiBudWxsOworIDxlcnJvciBkZXNjcj0iTWlzc2luZyByZXR1cm4gc3RhdGVtZW50Ij59PC9lcnJvcj4KKworIE9iamVjdCBmNihpbnQgaSkgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICBpZiAodHJ1ZSkgcmV0dXJuIG51bGw7CisgPGVycm9yIGRlc2NyPSJNaXNzaW5nIHJldHVybiBzdGF0ZW1lbnQiPn08L2Vycm9yPgorCisgaW50IGY3KGludCBpKSB7CisgIHRyeSB7CisgICBpZiAoaT09MikgcmV0dXJuIDQ7CisgICBlbHNlIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oKTsKKyAgfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKKyAgfQorIDxlcnJvciBkZXNjcj0iTWlzc2luZyByZXR1cm4gc3RhdGVtZW50Ij59PC9lcnJvcj4KKworICBpbnQgZjgoaW50IGkpIHsKKyAgICB0cnkgeworICAgICAgLy90aHJvdyBuZXcgRXJyb3IoKTsKKyAgICB9CisgICAgZmluYWxseSB7CisgICAgICB0cnkgeworICAgICAgICAvL3Rocm93IG5ldyBFeGNlcHRpb24oKTsKKyAgICAgIH0KKyAgICAgIGNhdGNoIChFeGNlcHRpb24gZSkgeworICAgICAgICByZXR1cm4gNTsKKyAgICAgIH0KKyAgICB9CisgPGVycm9yIGRlc2NyPSJNaXNzaW5nIHJldHVybiBzdGF0ZW1lbnQiPn08L2Vycm9yPgorCisgaW50IGNmMShpbnQgaSkgeworICAgcmV0dXJuIDA7CisgfQorIGludCBjZjIoaW50IGkpIHsKKyAgIGlmIChpPT0yKSByZXR1cm4gMDsKKyAgIGVsc2UgaWYgKGk9PTQpIHJldHVybiAtMTsKKyAgIGVsc2UgcmV0dXJuIDI7CisgfQorIGludCBjZjMoaW50IGkpIHsKKyAgIHJldHVybiBpPT0yID8gMyA6IDU7CisgfQorIGludCBjZjQoaW50IGkpIHsKKyAgIHN3aXRjaCAoaSkgeworICAgIGNhc2UgMTogcmV0dXJuIDQ7CisgICAgY2FzZSAzOiByZXR1cm4gNjsKKyAgICBkZWZhdWx0OiByZXR1cm4gNTsKKyAgIH0KKyB9CisgaW50IGNmNShpbnQgaSkgeworICAgaWYgKGk+MSkgeworICAgIGlmIChpPT00KSByZXR1cm4gMDsKKyAgICBlbHNlIHJldHVybiBpPT0zID8gMiA6IDA7CisgICB9CisgICBlbHNlIHJldHVybiAyOworIH0KKyBpbnQgY2Y2KGludCBpKSB7CisgICByZXR1cm4gY2Y0KGkrMSk7CisgfQorCisgaW50IGNmNyhpbnQgaSkgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICB0cnkgeworICAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCk7CisgICB9IGNhdGNoKEVycm9yIGUpIHsKKyAgICAgcmV0dXJuIDM7CisgICB9IGZpbmFsbHkgeworICAgICByZXR1cm4gMjsKKyAgIH0KKworIH0KKworIGludCBjZjgoaW50IGkpIHRocm93cyBFeGNlcHRpb24geworICAgdHJ5IHsKKyAgICAgcmV0dXJuIDI7CisgICB9IGZpbmFsbHkgeworICAgICByZXR1cm4gNDsKKyAgIH0KKyB9CisgaW50IGNmOShpbnQgaSkgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICB0cnkgeworICAgICBpID0gNTsKKyAgIH0gZmluYWxseSB7CisgICAgIHRocm93IG5ldyBFeGNlcHRpb24oKTsKKyAgIH0KKyB9CisKKyBpbnQgY2YxMChpbnQgaSkgeworCisgICB3aGlsZSAodHJ1ZSkKKyAgICAgcmV0dXJuIDA7CisgfQorIGludCBjZjExKGludCBpKSB7CisKKyAgLy8gY29tbWVudGVkIG91dCByZWZlcmVuY2UKKyAgLy8gZG9lcyBub3Qgd29yayB3aGVuIHJ1bm5pbmcgdW5kZXIgSlJFCisKKyAgIHdoaWxlIChhLmNvICE9IDIgJiYgMSszLzItMSArIChpbnQpMS41ICsgMiUyID09IDIgLyogJiYgMHg3ZmZmZmZmZiA9PSBJbnRlZ2VyLk1BWF9WQUxVRSAqLyAmJiAoJ2MnICYgMHgwMCkgPT0gMCkKKyAgICAgcmV0dXJuIDA7CisgfQorIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBjbyA9IDEvMiArIDE7CisgaW50IGNmMTIoaW50IGkpIHsKKworICAgZm9yIChpbnQgaz0wOyAoMHhmMCB8IDB4MGYpID09IDB4ZmYgJiYgZmFsc2UgIT0gdHJ1ZSAmJiBjbyA9PSAxO2srKykKKyAgICAgcmV0dXJuIDA7CisgfQorCisKKyBpbnQgY2YxMygpIHsKKyB0cnkgeworICB0cnkgeworICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigpOworICAgLy90aHJvdyBuZXcgamF2YS5pby5JT0V4Y2VwdGlvbigpOworICB9IGNhdGNoIChJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gZSkgeworICAgcmV0dXJuIDM7CisgIH0KKyAgZmluYWxseSB7CisgICB0aHJvdyBuZXcgamF2YS5pby5JT0V4Y2VwdGlvbigpOworICB9CisKKyB9IGNhdGNoIChqYXZhLmlvLklPRXhjZXB0aW9uIGVlKSB7CisgICByZXR1cm4gODg7CisgfQorIH0KKworIGludCBjZjE0KCkgeworICAgdHJ5IHsKKyAgICAgY2YxMygpOworICAgICByZXR1cm4gMTM7CisgICB9IGZpbmFsbHkgeworICAgICBjZjEzKCk7CisgICB9CisgfQorIAorIGludCBjZjE1KCkgeworICB0cnkgeworICAgaW50IGk9MDsKKyAgIHJldHVybiBpOworICB9IGNhdGNoIChFeGNlcHRpb24gZSkgeworICB9IGZpbmFsbHkgeworICB9CisgIHJldHVybiAwOworIH0KKyBpbnQgY2YxNigpIHsKKyAgICB0cnkgeworICAgICAgaWYgKCAhICgxPT0zKSkgeworICAgICAgICAgIHJldHVybiAwOworICAgICAgfQorICAgIH0gZmluYWxseSB7CisgICAgICAgIC8vIFJlc3RvcmUgdGhlIGN1cnJlbnQgcG9zaXRpb24gb2YgdGhlIG90aGVyIER5bkFueQorICAgIH0KKyAgICByZXR1cm4gMTsKKyB9CisKKyBpbnQgY2YxNygpIHsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICB9IGZpbmFsbHkgeworICAgICAgICAgICAgfQorICAgICAgICB9IGZpbmFsbHkgeworICAgICAgICB9CisgIH0KKyBpbnQgY2YxOChpbnQgaSkgeworICAgaW50IGs7CisgICB0cnkgeworICAgICAgaWYgKGk9PTQpIHJldHVybiAwOworICAgICAgayA9IDQ7CisgICB9IGZpbmFsbHkgeworICAgfQorICAgcmV0dXJuIGs7CisgIH0KKworCisgdm9pZCBjZjE5KCkgeworCisgICAgICB0cnkgeworCisgICAgICAgIHRyeSB7CisgICAgICAgIH0KKyAgICAgICAgZmluYWxseSB7CisgICAgICAgIH0KKyAgICAgICAgICByZXR1cm4gOworICAgICAgfQorICAgICAgY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CisgICAgICB9CisgfQorCit9CisKKyBjbGFzcyBhMiAgeworaW50ZXJmYWNlIGlpIHt9CisKKworCisgaW50IGYxKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisgPGVycm9yIGRlc2NyPSJNaXNzaW5nIHJldHVybiBzdGF0ZW1lbnQiPn08L2Vycm9yPgorIAorIE9iamVjdCBmMihpbnQgaSkgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICBpZiAoaSA9PSAwKSByZXR1cm4gbnVsbDsKKyA8ZXJyb3IgZGVzY3I9Ik1pc3NpbmcgcmV0dXJuIHN0YXRlbWVudCI+fTwvZXJyb3I+CisKKyBPYmplY3QgZjMoaW50IGkpIHRocm93cyBFeGNlcHRpb24geworICAgd2hpbGUgKGkgPT0gMCkgcmV0dXJuIG51bGw7CisgPGVycm9yIGRlc2NyPSJNaXNzaW5nIHJldHVybiBzdGF0ZW1lbnQiPn08L2Vycm9yPgorCisgT2JqZWN0IGY0KGludCBpKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgIHN3aXRjaCAoaSkgeworICAgICBjYXNlIDE6IHJldHVybiBudWxsOworICAgfQorIDxlcnJvciBkZXNjcj0iTWlzc2luZyByZXR1cm4gc3RhdGVtZW50Ij59PC9lcnJvcj4KKworIE9iamVjdCBmNShpbnQgaSkgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICBpZiAoaT09MikgcmV0dXJuIG51bGw7CisgICBlbHNlIGlmIChpICE9IDIpIHJldHVybiBudWxsOworIDxlcnJvciBkZXNjcj0iTWlzc2luZyByZXR1cm4gc3RhdGVtZW50Ij59PC9lcnJvcj4KKworIE9iamVjdCBmNihpbnQgaSkgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICBpZiAodHJ1ZSkgcmV0dXJuIG51bGw7CisgPGVycm9yIGRlc2NyPSJNaXNzaW5nIHJldHVybiBzdGF0ZW1lbnQiPn08L2Vycm9yPgorCisgaW50IGY3KGludCBpKSB7CisgIHRyeSB7CisgICBpZiAoaT09MikgcmV0dXJuIDQ7CisgICBlbHNlIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oKTsKKyAgfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKKyAgfQorIDxlcnJvciBkZXNjcj0iTWlzc2luZyByZXR1cm4gc3RhdGVtZW50Ij59PC9lcnJvcj4KKworICBpbnQgZjgoaW50IGkpIHsKKyAgICB0cnkgeworICAgICAgLy90aHJvdyBuZXcgRXJyb3IoKTsKKyAgICB9CisgICAgZmluYWxseSB7CisgICAgICB0cnkgeworICAgICAgICAvL3Rocm93IG5ldyBFeGNlcHRpb24oKTsKKyAgICAgIH0KKyAgICAgIGNhdGNoIChFeGNlcHRpb24gZSkgeworICAgICAgICByZXR1cm4gNTsKKyAgICAgIH0KKyAgICB9CisgPGVycm9yIGRlc2NyPSJNaXNzaW5nIHJldHVybiBzdGF0ZW1lbnQiPn08L2Vycm9yPgorCisgaW50IGNmMShpbnQgaSkgeworICAgcmV0dXJuIDA7CisgfQorIGludCBjZjIoaW50IGkpIHsKKyAgIGlmIChpPT0yKSByZXR1cm4gMDsKKyAgIGVsc2UgaWYgKGk9PTQpIHJldHVybiAtMTsKKyAgIGVsc2UgcmV0dXJuIDI7CisgfQorIGludCBjZjMoaW50IGkpIHsKKyAgIHJldHVybiBpPT0yID8gMyA6IDU7CisgfQorIGludCBjZjQoaW50IGkpIHsKKyAgIHN3aXRjaCAoaSkgeworICAgIGNhc2UgMTogcmV0dXJuIDQ7CisgICAgY2FzZSAzOiByZXR1cm4gNjsKKyAgICBkZWZhdWx0OiByZXR1cm4gNTsKKyAgIH0KKyB9CisgaW50IGNmNShpbnQgaSkgeworICAgaWYgKGk+MSkgeworICAgIGlmIChpPT00KSByZXR1cm4gMDsKKyAgICBlbHNlIHJldHVybiBpPT0zID8gMiA6IDA7CisgICB9CisgICBlbHNlIHJldHVybiAyOworIH0KKyBpbnQgY2Y2KGludCBpKSB7CisgICByZXR1cm4gY2Y0KGkrMSk7CisgfQorCisgaW50IGNmNyhpbnQgaSkgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICB0cnkgeworICAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCk7CisgICB9IGNhdGNoKEVycm9yIGUpIHsKKyAgICAgcmV0dXJuIDM7CisgICB9IGZpbmFsbHkgeworICAgICByZXR1cm4gMjsKKyAgIH0KKworIH0KKworIGludCBjZjgoaW50IGkpIHRocm93cyBFeGNlcHRpb24geworICAgdHJ5IHsKKyAgICAgcmV0dXJuIDI7CisgICB9IGZpbmFsbHkgeworICAgICByZXR1cm4gNDsKKyAgIH0KKyB9CisgaW50IGNmOShpbnQgaSkgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICB0cnkgeworICAgICBpID0gNTsKKyAgIH0gZmluYWxseSB7CisgICAgIHRocm93IG5ldyBFeGNlcHRpb24oKTsKKyAgIH0KKyB9CisKKyBpbnQgY2YxMChpbnQgaSkgeworCisgICB3aGlsZSAodHJ1ZSkKKyAgICAgcmV0dXJuIDA7CisgfQorIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBjbyA9IDEvMiArIDE7CisgaW50IGNmMTIoaW50IGkpIHsKKworICAgZm9yIChpbnQgaz0wOyAoMHhmMCB8IDB4MGYpID09IDB4ZmYgJiYgZmFsc2UgIT0gdHJ1ZSAmJiBjbyA9PSAxO2srKykKKyAgICAgcmV0dXJuIDA7CisgfQorCisKKyBpbnQgY2YxMygpIHsKKyB0cnkgeworICB0cnkgeworICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigpOworICAgLy90aHJvdyBuZXcgamF2YS5pby5JT0V4Y2VwdGlvbigpOworICB9IGNhdGNoIChJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gZSkgeworICAgcmV0dXJuIDM7CisgIH0KKyAgZmluYWxseSB7CisgICB0aHJvdyBuZXcgamF2YS5pby5JT0V4Y2VwdGlvbigpOworICB9CisKKyB9IGNhdGNoIChqYXZhLmlvLklPRXhjZXB0aW9uIGVlKSB7CisgICByZXR1cm4gODg7CisgfQorIH0KKworIGludCBjZjE0KCkgeworICAgdHJ5IHsKKyAgICAgY2YxMygpOworICAgICByZXR1cm4gMTM7CisgICB9IGZpbmFsbHkgeworICAgICBjZjEzKCk7CisgICB9CisgfQorIAorIGludCBjZjE1KCkgeworICB0cnkgeworICAgaW50IGk9MDsKKyAgIHJldHVybiBpOworICB9IGNhdGNoIChFeGNlcHRpb24gZSkgeworICB9IGZpbmFsbHkgeworICB9CisgIHJldHVybiAwOworIH0KKyBpbnQgY2YxNigpIHsKKyAgICB0cnkgeworICAgICAgaWYgKCAhICgxPT0zKSkgeworICAgICAgICAgIHJldHVybiAwOworICAgICAgfQorICAgIH0gZmluYWxseSB7CisgICAgICAgIC8vIFJlc3RvcmUgdGhlIGN1cnJlbnQgcG9zaXRpb24gb2YgdGhlIG90aGVyIER5bkFueQorICAgIH0KKyAgICByZXR1cm4gMTsKKyB9CisKKyBpbnQgY2YxNygpIHsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICB9IGZpbmFsbHkgeworICAgICAgICAgICAgfQorICAgICAgICB9IGZpbmFsbHkgeworICAgICAgICB9CisgIH0KKyBpbnQgY2YxOChpbnQgaSkgeworICAgaW50IGs7CisgICB0cnkgeworICAgICAgaWYgKGk9PTQpIHJldHVybiAwOworICAgICAgayA9IDQ7CisgICB9IGZpbmFsbHkgeworICAgfQorICAgcmV0dXJuIGs7CisgIH0KKworCisgdm9pZCBjZjE5KCkgeworCisgICAgICB0cnkgeworCisgICAgICAgIHRyeSB7CisgICAgICAgIH0KKyAgICAgICAgZmluYWxseSB7CisgICAgICAgIH0KKyAgICAgICAgICByZXR1cm4gOworICAgICAgfQorICAgICAgY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CisgICAgICB9CisgfQorCit9CisKKworIGNsYXNzIGEzICB7CitpbnRlcmZhY2UgaWkge30KKworCisKKyBpbnQgZjEoKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyA8ZXJyb3IgZGVzY3I9Ik1pc3NpbmcgcmV0dXJuIHN0YXRlbWVudCI+fTwvZXJyb3I+CisgCisgT2JqZWN0IGYyKGludCBpKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgIGlmIChpID09IDApIHJldHVybiBudWxsOworIDxlcnJvciBkZXNjcj0iTWlzc2luZyByZXR1cm4gc3RhdGVtZW50Ij59PC9lcnJvcj4KKworIE9iamVjdCBmMyhpbnQgaSkgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICB3aGlsZSAoaSA9PSAwKSByZXR1cm4gbnVsbDsKKyA8ZXJyb3IgZGVzY3I9Ik1pc3NpbmcgcmV0dXJuIHN0YXRlbWVudCI+fTwvZXJyb3I+CisKKyBPYmplY3QgZjQoaW50IGkpIHRocm93cyBFeGNlcHRpb24geworICAgc3dpdGNoIChpKSB7CisgICAgIGNhc2UgMTogcmV0dXJuIG51bGw7CisgICB9CisgPGVycm9yIGRlc2NyPSJNaXNzaW5nIHJldHVybiBzdGF0ZW1lbnQiPn08L2Vycm9yPgorCisgT2JqZWN0IGY1KGludCBpKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgIGlmIChpPT0yKSByZXR1cm4gbnVsbDsKKyAgIGVsc2UgaWYgKGkgIT0gMikgcmV0dXJuIG51bGw7CisgPGVycm9yIGRlc2NyPSJNaXNzaW5nIHJldHVybiBzdGF0ZW1lbnQiPn08L2Vycm9yPgorCisgT2JqZWN0IGY2KGludCBpKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgIGlmICh0cnVlKSByZXR1cm4gbnVsbDsKKyA8ZXJyb3IgZGVzY3I9Ik1pc3NpbmcgcmV0dXJuIHN0YXRlbWVudCI+fTwvZXJyb3I+CisKKyBpbnQgZjcoaW50IGkpIHsKKyAgdHJ5IHsKKyAgIGlmIChpPT0yKSByZXR1cm4gNDsKKyAgIGVsc2UgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigpOworICB9IGNhdGNoIChFeGNlcHRpb24gZSkgeworICB9CisgPGVycm9yIGRlc2NyPSJNaXNzaW5nIHJldHVybiBzdGF0ZW1lbnQiPn08L2Vycm9yPgorCisgIGludCBmOChpbnQgaSkgeworICAgIHRyeSB7CisgICAgICAvL3Rocm93IG5ldyBFcnJvcigpOworICAgIH0KKyAgICBmaW5hbGx5IHsKKyAgICAgIHRyeSB7CisgICAgICAgIC8vdGhyb3cgbmV3IEV4Y2VwdGlvbigpOworICAgICAgfQorICAgICAgY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CisgICAgICAgIHJldHVybiA1OworICAgICAgfQorICAgIH0KKyA8ZXJyb3IgZGVzY3I9Ik1pc3NpbmcgcmV0dXJuIHN0YXRlbWVudCI+fTwvZXJyb3I+CisKKyBpbnQgY2YxKGludCBpKSB7CisgICByZXR1cm4gMDsKKyB9CisgaW50IGNmMihpbnQgaSkgeworICAgaWYgKGk9PTIpIHJldHVybiAwOworICAgZWxzZSBpZiAoaT09NCkgcmV0dXJuIC0xOworICAgZWxzZSByZXR1cm4gMjsKKyB9CisgaW50IGNmMyhpbnQgaSkgeworICAgcmV0dXJuIGk9PTIgPyAzIDogNTsKKyB9CisgaW50IGNmNChpbnQgaSkgeworICAgc3dpdGNoIChpKSB7CisgICAgY2FzZSAxOiByZXR1cm4gNDsKKyAgICBjYXNlIDM6IHJldHVybiA2OworICAgIGRlZmF1bHQ6IHJldHVybiA1OworICAgfQorIH0KKyBpbnQgY2Y1KGludCBpKSB7CisgICBpZiAoaT4xKSB7CisgICAgaWYgKGk9PTQpIHJldHVybiAwOworICAgIGVsc2UgcmV0dXJuIGk9PTMgPyAyIDogMDsKKyAgIH0KKyAgIGVsc2UgcmV0dXJuIDI7CisgfQorIGludCBjZjYoaW50IGkpIHsKKyAgIHJldHVybiBjZjQoaSsxKTsKKyB9CisKKyBpbnQgY2Y3KGludCBpKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgIHRyeSB7CisgICAgIHRocm93IG5ldyBFeGNlcHRpb24oKTsKKyAgIH0gY2F0Y2goRXJyb3IgZSkgeworICAgICByZXR1cm4gMzsKKyAgIH0gZmluYWxseSB7CisgICAgIHJldHVybiAyOworICAgfQorCisgfQorCisgaW50IGNmOChpbnQgaSkgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICB0cnkgeworICAgICByZXR1cm4gMjsKKyAgIH0gZmluYWxseSB7CisgICAgIHJldHVybiA0OworICAgfQorIH0KKyBpbnQgY2Y5KGludCBpKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgIHRyeSB7CisgICAgIGkgPSA1OworICAgfSBmaW5hbGx5IHsKKyAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbigpOworICAgfQorIH0KKworIGludCBjZjEwKGludCBpKSB7CisKKyAgIHdoaWxlICh0cnVlKQorICAgICByZXR1cm4gMDsKKyB9CisgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IGNvID0gMS8yICsgMTsKKyBpbnQgY2YxMihpbnQgaSkgeworCisgICBmb3IgKGludCBrPTA7ICgweGYwIHwgMHgwZikgPT0gMHhmZiAmJiBmYWxzZSAhPSB0cnVlICYmIGNvID09IDE7aysrKQorICAgICByZXR1cm4gMDsKKyB9CisKKworIGludCBjZjEzKCkgeworIHRyeSB7CisgIHRyeSB7CisgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCk7CisgICAvL3Rocm93IG5ldyBqYXZhLmlvLklPRXhjZXB0aW9uKCk7CisgIH0gY2F0Y2ggKElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiBlKSB7CisgICByZXR1cm4gMzsKKyAgfQorICBmaW5hbGx5IHsKKyAgIHRocm93IG5ldyBqYXZhLmlvLklPRXhjZXB0aW9uKCk7CisgIH0KKworIH0gY2F0Y2ggKGphdmEuaW8uSU9FeGNlcHRpb24gZWUpIHsKKyAgIHJldHVybiA4ODsKKyB9CisgfQorCisgaW50IGNmMTQoKSB7CisgICB0cnkgeworICAgICBjZjEzKCk7CisgICAgIHJldHVybiAxMzsKKyAgIH0gZmluYWxseSB7CisgICAgIGNmMTMoKTsKKyAgIH0KKyB9CisgCisgaW50IGNmMTUoKSB7CisgIHRyeSB7CisgICBpbnQgaT0wOworICAgcmV0dXJuIGk7CisgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CisgIH0gZmluYWxseSB7CisgIH0KKyAgcmV0dXJuIDA7CisgfQorIGludCBjZjE2KCkgeworICAgIHRyeSB7CisgICAgICBpZiAoICEgKDE9PTMpKSB7CisgICAgICAgICAgcmV0dXJuIDA7CisgICAgICB9CisgICAgfSBmaW5hbGx5IHsKKyAgICAgICAgLy8gUmVzdG9yZSB0aGUgY3VycmVudCBwb3NpdGlvbiBvZiB0aGUgb3RoZXIgRHluQW55CisgICAgfQorICAgIHJldHVybiAxOworIH0KKworIGludCBjZjE3KCkgeworICAgICAgICB0cnkgeworICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIH0gZmluYWxseSB7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZmluYWxseSB7CisgICAgICAgIH0KKyAgfQorIGludCBjZjE4KGludCBpKSB7CisgICBpbnQgazsKKyAgIHRyeSB7CisgICAgICBpZiAoaT09NCkgcmV0dXJuIDA7CisgICAgICBrID0gNDsKKyAgIH0gZmluYWxseSB7CisgICB9CisgICByZXR1cm4gazsKKyAgfQorCisKKyB2b2lkIGNmMTkoKSB7CisKKyAgICAgIHRyeSB7CisKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgfQorICAgICAgICBmaW5hbGx5IHsKKyAgICAgICAgfQorICAgICAgICAgIHJldHVybiA7CisgICAgICB9CisgICAgICBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKKyAgICAgIH0KKyB9CisKK30KKworCisKKyBjbGFzcyBhNCAgeworaW50ZXJmYWNlIGlpIHt9CisKKworCisgaW50IGYxKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisgPGVycm9yIGRlc2NyPSJNaXNzaW5nIHJldHVybiBzdGF0ZW1lbnQiPn08L2Vycm9yPgorIAorIE9iamVjdCBmMihpbnQgaSkgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICBpZiAoaSA9PSAwKSByZXR1cm4gbnVsbDsKKyA8ZXJyb3IgZGVzY3I9Ik1pc3NpbmcgcmV0dXJuIHN0YXRlbWVudCI+fTwvZXJyb3I+CisKKyBPYmplY3QgZjMoaW50IGkpIHRocm93cyBFeGNlcHRpb24geworICAgd2hpbGUgKGkgPT0gMCkgcmV0dXJuIG51bGw7CisgPGVycm9yIGRlc2NyPSJNaXNzaW5nIHJldHVybiBzdGF0ZW1lbnQiPn08L2Vycm9yPgorCisgT2JqZWN0IGY0KGludCBpKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgIHN3aXRjaCAoaSkgeworICAgICBjYXNlIDE6IHJldHVybiBudWxsOworICAgfQorIDxlcnJvciBkZXNjcj0iTWlzc2luZyByZXR1cm4gc3RhdGVtZW50Ij59PC9lcnJvcj4KKworIE9iamVjdCBmNShpbnQgaSkgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICBpZiAoaT09MikgcmV0dXJuIG51bGw7CisgICBlbHNlIGlmIChpICE9IDIpIHJldHVybiBudWxsOworIDxlcnJvciBkZXNjcj0iTWlzc2luZyByZXR1cm4gc3RhdGVtZW50Ij59PC9lcnJvcj4KKworIE9iamVjdCBmNihpbnQgaSkgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICBpZiAodHJ1ZSkgcmV0dXJuIG51bGw7CisgPGVycm9yIGRlc2NyPSJNaXNzaW5nIHJldHVybiBzdGF0ZW1lbnQiPn08L2Vycm9yPgorCisgaW50IGY3KGludCBpKSB7CisgIHRyeSB7CisgICBpZiAoaT09MikgcmV0dXJuIDQ7CisgICBlbHNlIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oKTsKKyAgfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKKyAgfQorIDxlcnJvciBkZXNjcj0iTWlzc2luZyByZXR1cm4gc3RhdGVtZW50Ij59PC9lcnJvcj4KKworICBpbnQgZjgoaW50IGkpIHsKKyAgICB0cnkgeworICAgICAgLy90aHJvdyBuZXcgRXJyb3IoKTsKKyAgICB9CisgICAgZmluYWxseSB7CisgICAgICB0cnkgeworICAgICAgICAvL3Rocm93IG5ldyBFeGNlcHRpb24oKTsKKyAgICAgIH0KKyAgICAgIGNhdGNoIChFeGNlcHRpb24gZSkgeworICAgICAgICByZXR1cm4gNTsKKyAgICAgIH0KKyAgICB9CisgPGVycm9yIGRlc2NyPSJNaXNzaW5nIHJldHVybiBzdGF0ZW1lbnQiPn08L2Vycm9yPgorCisgaW50IGNmMShpbnQgaSkgeworICAgcmV0dXJuIDA7CisgfQorIGludCBjZjIoaW50IGkpIHsKKyAgIGlmIChpPT0yKSByZXR1cm4gMDsKKyAgIGVsc2UgaWYgKGk9PTQpIHJldHVybiAtMTsKKyAgIGVsc2UgcmV0dXJuIDI7CisgfQorIGludCBjZjMoaW50IGkpIHsKKyAgIHJldHVybiBpPT0yID8gMyA6IDU7CisgfQorIGludCBjZjQoaW50IGkpIHsKKyAgIHN3aXRjaCAoaSkgeworICAgIGNhc2UgMTogcmV0dXJuIDQ7CisgICAgY2FzZSAzOiByZXR1cm4gNjsKKyAgICBkZWZhdWx0OiByZXR1cm4gNTsKKyAgIH0KKyB9CisgaW50IGNmNShpbnQgaSkgeworICAgaWYgKGk+MSkgeworICAgIGlmIChpPT00KSByZXR1cm4gMDsKKyAgICBlbHNlIHJldHVybiBpPT0zID8gMiA6IDA7CisgICB9CisgICBlbHNlIHJldHVybiAyOworIH0KKyBpbnQgY2Y2KGludCBpKSB7CisgICByZXR1cm4gY2Y0KGkrMSk7CisgfQorCisgaW50IGNmNyhpbnQgaSkgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICB0cnkgeworICAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCk7CisgICB9IGNhdGNoKEVycm9yIGUpIHsKKyAgICAgcmV0dXJuIDM7CisgICB9IGZpbmFsbHkgeworICAgICByZXR1cm4gMjsKKyAgIH0KKworIH0KKworIGludCBjZjgoaW50IGkpIHRocm93cyBFeGNlcHRpb24geworICAgdHJ5IHsKKyAgICAgcmV0dXJuIDI7CisgICB9IGZpbmFsbHkgeworICAgICByZXR1cm4gNDsKKyAgIH0KKyB9CisgaW50IGNmOShpbnQgaSkgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICB0cnkgeworICAgICBpID0gNTsKKyAgIH0gZmluYWxseSB7CisgICAgIHRocm93IG5ldyBFeGNlcHRpb24oKTsKKyAgIH0KKyB9CisKKyBpbnQgY2YxMChpbnQgaSkgeworCisgICB3aGlsZSAodHJ1ZSkKKyAgICAgcmV0dXJuIDA7CisgfQorIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBjbyA9IDEvMiArIDE7CisgaW50IGNmMTIoaW50IGkpIHsKKworICAgZm9yIChpbnQgaz0wOyAoMHhmMCB8IDB4MGYpID09IDB4ZmYgJiYgZmFsc2UgIT0gdHJ1ZSAmJiBjbyA9PSAxO2srKykKKyAgICAgcmV0dXJuIDA7CisgfQorCisKKyBpbnQgY2YxMygpIHsKKyB0cnkgeworICB0cnkgeworICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigpOworICAgLy90aHJvdyBuZXcgamF2YS5pby5JT0V4Y2VwdGlvbigpOworICB9IGNhdGNoIChJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gZSkgeworICAgcmV0dXJuIDM7CisgIH0KKyAgZmluYWxseSB7CisgICB0aHJvdyBuZXcgamF2YS5pby5JT0V4Y2VwdGlvbigpOworICB9CisKKyB9IGNhdGNoIChqYXZhLmlvLklPRXhjZXB0aW9uIGVlKSB7CisgICByZXR1cm4gODg7CisgfQorIH0KKworIGludCBjZjE0KCkgeworICAgdHJ5IHsKKyAgICAgY2YxMygpOworICAgICByZXR1cm4gMTM7CisgICB9IGZpbmFsbHkgeworICAgICBjZjEzKCk7CisgICB9CisgfQorIAorIGludCBjZjE1KCkgeworICB0cnkgeworICAgaW50IGk9MDsKKyAgIHJldHVybiBpOworICB9IGNhdGNoIChFeGNlcHRpb24gZSkgeworICB9IGZpbmFsbHkgeworICB9CisgIHJldHVybiAwOworIH0KKyBpbnQgY2YxNigpIHsKKyAgICB0cnkgeworICAgICAgaWYgKCAhICgxPT0zKSkgeworICAgICAgICAgIHJldHVybiAwOworICAgICAgfQorICAgIH0gZmluYWxseSB7CisgICAgICAgIC8vIFJlc3RvcmUgdGhlIGN1cnJlbnQgcG9zaXRpb24gb2YgdGhlIG90aGVyIER5bkFueQorICAgIH0KKyAgICByZXR1cm4gMTsKKyB9CisKKyBpbnQgY2YxNygpIHsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICB9IGZpbmFsbHkgeworICAgICAgICAgICAgfQorICAgICAgICB9IGZpbmFsbHkgeworICAgICAgICB9CisgIH0KKyBpbnQgY2YxOChpbnQgaSkgeworICAgaW50IGs7CisgICB0cnkgeworICAgICAgaWYgKGk9PTQpIHJldHVybiAwOworICAgICAgayA9IDQ7CisgICB9IGZpbmFsbHkgeworICAgfQorICAgcmV0dXJuIGs7CisgIH0KKworCisgdm9pZCBjZjE5KCkgeworCisgICAgICB0cnkgeworCisgICAgICAgIHRyeSB7CisgICAgICAgIH0KKyAgICAgICAgZmluYWxseSB7CisgICAgICAgIH0KKyAgICAgICAgICByZXR1cm4gOworICAgICAgfQorICAgICAgY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CisgICAgICB9CisgfQorCit9CisKKyBjbGFzcyBhNSAgeworaW50ZXJmYWNlIGlpIHt9CisKKworCisgaW50IGYxKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisgPGVycm9yIGRlc2NyPSJNaXNzaW5nIHJldHVybiBzdGF0ZW1lbnQiPn08L2Vycm9yPgorIAorIE9iamVjdCBmMihpbnQgaSkgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICBpZiAoaSA9PSAwKSByZXR1cm4gbnVsbDsKKyA8ZXJyb3IgZGVzY3I9Ik1pc3NpbmcgcmV0dXJuIHN0YXRlbWVudCI+fTwvZXJyb3I+CisKKyBPYmplY3QgZjMoaW50IGkpIHRocm93cyBFeGNlcHRpb24geworICAgd2hpbGUgKGkgPT0gMCkgcmV0dXJuIG51bGw7CisgPGVycm9yIGRlc2NyPSJNaXNzaW5nIHJldHVybiBzdGF0ZW1lbnQiPn08L2Vycm9yPgorCisgT2JqZWN0IGY0KGludCBpKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgIHN3aXRjaCAoaSkgeworICAgICBjYXNlIDE6IHJldHVybiBudWxsOworICAgfQorIDxlcnJvciBkZXNjcj0iTWlzc2luZyByZXR1cm4gc3RhdGVtZW50Ij59PC9lcnJvcj4KKworIE9iamVjdCBmNShpbnQgaSkgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICBpZiAoaT09MikgcmV0dXJuIG51bGw7CisgICBlbHNlIGlmIChpICE9IDIpIHJldHVybiBudWxsOworIDxlcnJvciBkZXNjcj0iTWlzc2luZyByZXR1cm4gc3RhdGVtZW50Ij59PC9lcnJvcj4KKworIE9iamVjdCBmNihpbnQgaSkgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICBpZiAodHJ1ZSkgcmV0dXJuIG51bGw7CisgPGVycm9yIGRlc2NyPSJNaXNzaW5nIHJldHVybiBzdGF0ZW1lbnQiPn08L2Vycm9yPgorCisgaW50IGY3KGludCBpKSB7CisgIHRyeSB7CisgICBpZiAoaT09MikgcmV0dXJuIDQ7CisgICBlbHNlIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oKTsKKyAgfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKKyAgfQorIDxlcnJvciBkZXNjcj0iTWlzc2luZyByZXR1cm4gc3RhdGVtZW50Ij59PC9lcnJvcj4KKworICBpbnQgZjgoaW50IGkpIHsKKyAgICB0cnkgeworICAgICAgLy90aHJvdyBuZXcgRXJyb3IoKTsKKyAgICB9CisgICAgZmluYWxseSB7CisgICAgICB0cnkgeworICAgICAgICAvL3Rocm93IG5ldyBFeGNlcHRpb24oKTsKKyAgICAgIH0KKyAgICAgIGNhdGNoIChFeGNlcHRpb24gZSkgeworICAgICAgICByZXR1cm4gNTsKKyAgICAgIH0KKyAgICB9CisgPGVycm9yIGRlc2NyPSJNaXNzaW5nIHJldHVybiBzdGF0ZW1lbnQiPn08L2Vycm9yPgorCisgIGludCBmOShpbnQgaSkgeworICAgIGlmIChpPT0xKSByZXR1cm4gMDsKKyAgICBlbHNlIGFzc2VydCBmYWxzZTsKKyA8ZXJyb3IgZGVzY3I9Ik1pc3NpbmcgcmV0dXJuIHN0YXRlbWVudCI+fTwvZXJyb3I+CisKKworCisgaW50IGNmMShpbnQgaSkgeworICAgcmV0dXJuIDA7CisgfQorIGludCBjZjIoaW50IGkpIHsKKyAgIGlmIChpPT0yKSByZXR1cm4gMDsKKyAgIGVsc2UgaWYgKGk9PTQpIHJldHVybiAtMTsKKyAgIGVsc2UgcmV0dXJuIDI7CisgfQorIGludCBjZjMoaW50IGkpIHsKKyAgIHJldHVybiBpPT0yID8gMyA6IDU7CisgfQorIGludCBjZjQoaW50IGkpIHsKKyAgIHN3aXRjaCAoaSkgeworICAgIGNhc2UgMTogcmV0dXJuIDQ7CisgICAgY2FzZSAzOiByZXR1cm4gNjsKKyAgICBkZWZhdWx0OiByZXR1cm4gNTsKKyAgIH0KKyB9CisgaW50IGNmNShpbnQgaSkgeworICAgaWYgKGk+MSkgeworICAgIGlmIChpPT00KSByZXR1cm4gMDsKKyAgICBlbHNlIHJldHVybiBpPT0zID8gMiA6IDA7CisgICB9CisgICBlbHNlIHJldHVybiAyOworIH0KKyBpbnQgY2Y2KGludCBpKSB7CisgICByZXR1cm4gY2Y0KGkrMSk7CisgfQorCisgaW50IGNmNyhpbnQgaSkgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICB0cnkgeworICAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCk7CisgICB9IGNhdGNoKEVycm9yIGUpIHsKKyAgICAgcmV0dXJuIDM7CisgICB9IGZpbmFsbHkgeworICAgICByZXR1cm4gMjsKKyAgIH0KKworIH0KKworIGludCBjZjgoaW50IGkpIHRocm93cyBFeGNlcHRpb24geworICAgdHJ5IHsKKyAgICAgcmV0dXJuIDI7CisgICB9IGZpbmFsbHkgeworICAgICByZXR1cm4gNDsKKyAgIH0KKyB9CisgaW50IGNmOShpbnQgaSkgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICB0cnkgeworICAgICBpID0gNTsKKyAgIH0gZmluYWxseSB7CisgICAgIHRocm93IG5ldyBFeGNlcHRpb24oKTsKKyAgIH0KKyB9CisKKyBpbnQgY2YxMChpbnQgaSkgeworCisgICB3aGlsZSAodHJ1ZSkKKyAgICAgcmV0dXJuIDA7CisgfQorIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBjbyA9IDEvMiArIDE7CisgaW50IGNmMTIoaW50IGkpIHsKKworICAgZm9yIChpbnQgaz0wOyAoMHhmMCB8IDB4MGYpID09IDB4ZmYgJiYgZmFsc2UgIT0gdHJ1ZSAmJiBjbyA9PSAxO2srKykKKyAgICAgcmV0dXJuIDA7CisgfQorCisKKyBpbnQgY2YxMygpIHsKKyB0cnkgeworICB0cnkgeworICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigpOworICAgLy90aHJvdyBuZXcgamF2YS5pby5JT0V4Y2VwdGlvbigpOworICB9IGNhdGNoIChJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gZSkgeworICAgcmV0dXJuIDM7CisgIH0KKyAgZmluYWxseSB7CisgICB0aHJvdyBuZXcgamF2YS5pby5JT0V4Y2VwdGlvbigpOworICB9CisKKyB9IGNhdGNoIChqYXZhLmlvLklPRXhjZXB0aW9uIGVlKSB7CisgICByZXR1cm4gODg7CisgfQorIH0KKworIGludCBjZjE0KCkgeworICAgdHJ5IHsKKyAgICAgY2YxMygpOworICAgICByZXR1cm4gMTM7CisgICB9IGZpbmFsbHkgeworICAgICBjZjEzKCk7CisgICB9CisgfQorIAorIGludCBjZjE1KCkgeworICB0cnkgeworICAgaW50IGk9MDsKKyAgIHJldHVybiBpOworICB9IGNhdGNoIChFeGNlcHRpb24gZSkgeworICB9IGZpbmFsbHkgeworICB9CisgIHJldHVybiAwOworIH0KKyBpbnQgY2YxNigpIHsKKyAgICB0cnkgeworICAgICAgaWYgKCAhICgxPT0zKSkgeworICAgICAgICAgIHJldHVybiAwOworICAgICAgfQorICAgIH0gZmluYWxseSB7CisgICAgICAgIC8vIFJlc3RvcmUgdGhlIGN1cnJlbnQgcG9zaXRpb24gb2YgdGhlIG90aGVyIER5bkFueQorICAgIH0KKyAgICByZXR1cm4gMTsKKyB9CisKKyBpbnQgY2YxNygpIHsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICB9IGZpbmFsbHkgeworICAgICAgICAgICAgfQorICAgICAgICB9IGZpbmFsbHkgeworICAgICAgICB9CisgIH0KKyBpbnQgY2YxOChpbnQgaSkgeworICAgaW50IGs7CisgICB0cnkgeworICAgICAgaWYgKGk9PTQpIHJldHVybiAwOworICAgICAgayA9IDQ7CisgICB9IGZpbmFsbHkgeworICAgfQorICAgcmV0dXJuIGs7CisgIH0KKworCisgdm9pZCBjZjE5KCkgeworCisgICAgICB0cnkgeworCisgICAgICAgIHRyeSB7CisgICAgICAgIH0KKyAgICAgICAgZmluYWxseSB7CisgICAgICAgIH0KKyAgICAgICAgICByZXR1cm4gOworICAgICAgfQorICAgICAgY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CisgICAgICB9CisgfQorIGludCBjZjIwKGJvb2xlYW4gYjEsIGJvb2xlYW4gYjIpIHsKKyAgICBkbyB7CisgICAgfSB3aGlsZSAoYjEgfHwgYjIpOworICAgIHJldHVybiAwOworIH0KKworIHB1YmxpYyBib29sZWFuIGNmMjEoKSB0aHJvd3MgSU9FeGNlcHRpb24geworICAgIHRyeSB7CisgICAgICByZXR1cm4gZ2V0YSgpOworICAgIH0KKyAgICBjYXRjaChJT0V4Y2VwdGlvbiBlKSB7CisgICAgICB0aHJvdyBuZXcgUnVudGltZUV4Y2VwdGlvbigpOworICAgIH0KKyAgICBmaW5hbGx5IHsKKyAgICAgIGdldGEoKTsKKyAgICB9CisgfQorIHByaXZhdGUgYm9vbGVhbiBnZXRhKCkgdGhyb3dzIElPRXhjZXB0aW9uIHsKKyAgICByZXR1cm4gdHJ1ZTsKKyB9CisKKyBTdHJpbmcgY29tcGxleEFzcyhPYmplY3QgbywgT2JqZWN0IHApIHsKKyAgIGFzc2VydCBvICE9IG51bGwgJiYgcCAhPSBudWxsOworICAgcmV0dXJuIG51bGw7CisgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvTW9kaWZpZXJBbGxvd2VkLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9Nb2RpZmllckFsbG93ZWQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43Y2EyN2U2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvTW9kaWZpZXJBbGxvd2VkLmphdmEKQEAgLTAsMCArMSw3NyBAQAorLy8gbm90IGFsbG93ZWQgbW9kaWZpZXJzCis8ZXJyb3IgZGVzY3I9Ik1vZGlmaWVyICdwcml2YXRlJyBub3QgYWxsb3dlZCBoZXJlIj5wcml2YXRlPC9lcnJvcj4gCis8ZXJyb3IgZGVzY3I9Ik1vZGlmaWVyICdzdGF0aWMnIG5vdCBhbGxvd2VkIGhlcmUiPnN0YXRpYzwvZXJyb3I+Cis8ZXJyb3IgZGVzY3I9Ik1vZGlmaWVyICd2b2xhdGlsZScgbm90IGFsbG93ZWQgaGVyZSI+dm9sYXRpbGU8L2Vycm9yPgorY2xhc3MgYSB7CisKKyAgc3RhdGljIAorICA8ZXJyb3IgZGVzY3I9Ik1vZGlmaWVyICdwcml2YXRlJyBub3QgYWxsb3dlZCBoZXJlIj5wcml2YXRlPC9lcnJvcj4KKyAgPGVycm9yIGRlc2NyPSJNb2RpZmllciAncHVibGljJyBub3QgYWxsb3dlZCBoZXJlIj5wdWJsaWM8L2Vycm9yPgorICA8ZXJyb3IgZGVzY3I9Ik1vZGlmaWVyICdhYnN0cmFjdCcgbm90IGFsbG93ZWQgaGVyZSI+YWJzdHJhY3Q8L2Vycm9yPiB7CisgICAgaW50IGkgPSA0OworICB9CisgIDxlcnJvciBkZXNjcj0iTW9kaWZpZXIgJ3N5bmNocm9uaXplZCcgbm90IGFsbG93ZWQgaGVyZSI+c3luY2hyb25pemVkPC9lcnJvcj4gT2JqZWN0IHg7CisKKworICBwcml2YXRlIGNsYXNzIGMxIHsgCisgICAgcHJpdmF0ZSB2b2lkIGZmKCkge30KKyAgfQorICBzdGF0aWMgc3RyaWN0ZnAgY2xhc3MgYzIge30KKworICBwcml2YXRlIHN0YXRpYyBpbnRlcmZhY2UgaWkgeworICAgIDxlcnJvciBkZXNjcj0iTW9kaWZpZXIgJ3ByaXZhdGUnIG5vdCBhbGxvd2VkIGhlcmUiPnByaXZhdGU8L2Vycm9yPiBpbnQgZjEgPSAyOworICAgIDxlcnJvciBkZXNjcj0iTW9kaWZpZXIgJ3Byb3RlY3RlZCcgbm90IGFsbG93ZWQgaGVyZSI+cHJvdGVjdGVkPC9lcnJvcj4gaW50IGYyID0gMjsKKyAgICBwdWJsaWMgaW50IGYzID0gMzsKKworCisgICAgPGVycm9yIGRlc2NyPSJNb2RpZmllciAncHJpdmF0ZScgbm90IGFsbG93ZWQgaGVyZSI+cHJpdmF0ZTwvZXJyb3I+IGludCBmMSgpOworICAgIDxlcnJvciBkZXNjcj0iTW9kaWZpZXIgJ3Byb3RlY3RlZCcgbm90IGFsbG93ZWQgaGVyZSI+cHJvdGVjdGVkPC9lcnJvcj4gaW50IGYyKCk7CisgICAgcHVibGljIGludCBmMygpOworICAgIHZvaWQgZjQoKTsKKworICB9CisKKyAgdm9pZCBmMShmaW5hbCBTdHJpbmcgaSkgeworICAgIGZpbmFsIGludCBpaSA9IDM7CisgICAgPGVycm9yIGRlc2NyPSJNb2RpZmllciAncHJpdmF0ZScgbm90IGFsbG93ZWQgaGVyZSI+cHJpdmF0ZTwvZXJyb3I+IGludCBpMjsKKyAgICA8ZXJyb3IgZGVzY3I9Ik1vZGlmaWVyICdzdGF0aWMnIG5vdCBhbGxvd2VkIGhlcmUiPnN0YXRpYzwvZXJyb3I+IGludCBpMzsKKworICAgIHRyeSB7CisgICAgIHRocm93IG5ldyBFeGNlcHRpb24oKTsKKyAgICB9IGNhdGNoIChmaW5hbCA8ZXJyb3IgZGVzY3I9Ik1vZGlmaWVyICdzdGF0aWMnIG5vdCBhbGxvd2VkIGhlcmUiPnN0YXRpYzwvZXJyb3I+IEV4Y2VwdGlvbiBlKSB7CisgICAgfQorICB9CisKK30KKworaW50ZXJmYWNlIGZmIHsKKyAgc3RhdGljIGNsYXNzIGNjIHt9Cit9CisKK2Fic3RyYWN0IGNsYXNzIGMgeworICA8ZXJyb3IgZGVzY3I9Ik1vZGlmaWVyICdhYnN0cmFjdCcgbm90IGFsbG93ZWQgaGVyZSI+YWJzdHJhY3Q8L2Vycm9yPiBjKCk7CisgIDxlcnJvciBkZXNjcj0iTW9kaWZpZXIgJ3N0YXRpYycgbm90IGFsbG93ZWQgaGVyZSI+c3RhdGljPC9lcnJvcj4gYyhpbnQgaSkge30KKyAgPGVycm9yIGRlc2NyPSJNb2RpZmllciAnbmF0aXZlJyBub3QgYWxsb3dlZCBoZXJlIj5uYXRpdmU8L2Vycm9yPiBjKGJvb2xlYW4gYik7CisgIDxlcnJvciBkZXNjcj0iTW9kaWZpZXIgJ2ZpbmFsJyBub3QgYWxsb3dlZCBoZXJlIj5maW5hbDwvZXJyb3I+IGMoY2hhciBjKSB7fQorICA8ZXJyb3IgZGVzY3I9Ik1vZGlmaWVyICdzdHJpY3RmcCcgbm90IGFsbG93ZWQgaGVyZSI+c3RyaWN0ZnA8L2Vycm9yPiBjKFN0cmluZyBzKSB7fQorICA8ZXJyb3IgZGVzY3I9Ik1vZGlmaWVyICdzeW5jaHJvbml6ZWQnIG5vdCBhbGxvd2VkIGhlcmUiPnN5bmNocm9uaXplZDwvZXJyb3I+IGMoT2JqZWN0IG8pIHt9Cit9CisKK2ludGVyZmFjZSBpMyB7CisgIDxlcnJvciBkZXNjcj0iTW9kaWZpZXIgJ3N0cmljdGZwJyBub3QgYWxsb3dlZCBoZXJlIj5zdHJpY3RmcDwvZXJyb3I+IGludCBmMTsKKyAgPGVycm9yIGRlc2NyPSJNb2RpZmllciAndHJhbnNpZW50JyBub3QgYWxsb3dlZCBoZXJlIj50cmFuc2llbnQ8L2Vycm9yPiBpbnQgZjI7CisgIDxlcnJvciBkZXNjcj0iTW9kaWZpZXIgJ3N5bmNocm9uaXplZCcgbm90IGFsbG93ZWQgaGVyZSI+c3luY2hyb25pemVkPC9lcnJvcj4gIGludCBmMzsKKworICA8ZXJyb3IgZGVzY3I9Ik1vZGlmaWVyICdzdHJpY3RmcCcgbm90IGFsbG93ZWQgaGVyZSI+c3RyaWN0ZnA8L2Vycm9yPiBpbnQgbTEoKSB7IHJldHVybiAwOyB9CisgIDxlcnJvciBkZXNjcj0iTW9kaWZpZXIgJ3RyYW5zaWVudCcgbm90IGFsbG93ZWQgaGVyZSI+dHJhbnNpZW50PC9lcnJvcj4gaW50IG0yKCkgeyByZXR1cm4gMDsgfQorICA8ZXJyb3IgZGVzY3I9Ik1vZGlmaWVyICdzeW5jaHJvbml6ZWQnIG5vdCBhbGxvd2VkIGhlcmUiPnN5bmNocm9uaXplZDwvZXJyb3I+ICBpbnQgbTMoKSB7IHJldHVybiAwOyB9Cit9CisKK2NsYXNzIExvY2FsQ2xhc3NXaXRoSW5uZXIgeworICAgIHZvaWQgZm9vICgpIHsKKyAgICAgICAgICBjbGFzcyBBIHsKKyAgICAgICAgICAgICA8ZXJyb3IgZGVzY3I9Ik1vZGlmaWVyICdwcml2YXRlJyBub3QgYWxsb3dlZCBoZXJlIj5wcml2YXRlPC9lcnJvcj4gY2xhc3MgQiB7fQorICAgICAgICAgICAgIDxlcnJvciBkZXNjcj0iTW9kaWZpZXIgJ3B1YmxpYycgbm90IGFsbG93ZWQgaGVyZSI+cHVibGljPC9lcnJvcj4gY2xhc3MgQjEge30KKyAgICAgICAgfQorICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nL011bHRpRmllbGREZWNsTmFtZXMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nL011bHRpRmllbGREZWNsTmFtZXMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZWEwYTcwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvTXVsdGlGaWVsZERlY2xOYW1lcy5qYXZhCkBAIC0wLDAgKzEsNCBAQAorY2xhc3MgPHN5bWJvbE5hbWUgZGVzY3I9Im51bGwiIHR5cGU9IkNMQVNTX05BTUUiPlRlc3Q8L3N5bWJvbE5hbWU+eworICBpbnQgPHN5bWJvbE5hbWUgZGVzY3I9Im51bGwiIHR5cGU9IklOU1RBTkNFX0ZJRUxEIj5maWVsZDE8L3N5bWJvbE5hbWU+ID0gMCwgPHN5bWJvbE5hbWUgZGVzY3I9Im51bGwiIHR5cGU9IklOU1RBTkNFX0ZJRUxEIj5maWVsZDI8L3N5bWJvbE5hbWU+ID0gMDsKKyAgaW50IDxzeW1ib2xOYW1lIGRlc2NyPSJudWxsIiB0eXBlPSJJTlNUQU5DRV9GSUVMRCI+ZmllbGQzPC9zeW1ib2xOYW1lPiwgPHN5bWJvbE5hbWUgZGVzY3I9Im51bGwiIHR5cGU9IklOU1RBTkNFX0ZJRUxEIj5maWVsZDQ8L3N5bWJvbE5hbWU+OworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvTXVsdGlwbGVTaW5nbGVUeXBlSW1wb3J0cy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvTXVsdGlwbGVTaW5nbGVUeXBlSW1wb3J0cy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM4MTQ3ZTkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9NdWx0aXBsZVNpbmdsZVR5cGVJbXBvcnRzLmphdmEKQEAgLTAsMCArMSw5IEBACisvLyBtdWx0aXBsZSBzaW5nbGUtdHlwZSBpbXBvcnQgb2YgdGhlIHNhbWUgY2xhc3MgCisKK2ltcG9ydCBqYXZhLmlvLklPRXhjZXB0aW9uOworPHdhcm5pbmcgZGVzY3I9IlVudXNlZCBpbXBvcnQgc3RhdGVtZW50Ij5pbXBvcnQgamF2YS5pby5JT0V4Y2VwdGlvbjs8L3dhcm5pbmc+CisKKworcHVibGljIGNsYXNzIGMgeyAKKyAgcHVibGljIElPRXhjZXB0aW9uIG07Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9NdXN0QmVCb29sZWFuLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9NdXN0QmVCb29sZWFuLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmY1YWZkNQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nL011c3RCZUJvb2xlYW4uamF2YQpAQCAtMCwwICsxLDIwIEBACitjbGFzcyBjIHsKKyAgdm9pZCBmKCkgeworICAgIE9iamVjdCBvID0gbnVsbDsKKyAgICBpZiAoPGVycm9yIGRlc2NyPSJJbmNvbXBhdGlibGUgdHlwZXMuIEZvdW5kOiAnamF2YS5sYW5nLk9iamVjdCcsIHJlcXVpcmVkOiAnYm9vbGVhbiciPm88L2Vycm9yPikgeworICAgICAgcmV0dXJuOworICAgIH0KKworICAgIFN0cmluZyBzdHIxID0gIiI7CisgICAgU3RyaW5nIHN0cjIgPSAiIjsKKyAgICBkbyB7fSAKKyAgICB3aGlsZSAoPGVycm9yIGRlc2NyPSJJbmNvbXBhdGlibGUgdHlwZXMuIEZvdW5kOiAnamF2YS5sYW5nLlN0cmluZycsIHJlcXVpcmVkOiAnYm9vbGVhbiciPnN0cjEgPSBzdHIyPC9lcnJvcj4pOworCisgICAgaW50IGk4ID0gPGVycm9yIGRlc2NyPSJJbmNvbXBhdGlibGUgdHlwZXMuIEZvdW5kOiAnamF2YS5sYW5nLlN0cmluZycsIHJlcXVpcmVkOiAnYm9vbGVhbiciPiJmZiIgKyB0cnVlPC9lcnJvcj4gPyAxIDogMjsKKworICAgIGFzc2VydCA8ZXJyb3IgZGVzY3I9IkluY29tcGF0aWJsZSB0eXBlcy4gRm91bmQ6ICdpbnQnLCByZXF1aXJlZDogJ2Jvb2xlYW4nIj4wPC9lcnJvcj47CisgICAgYXNzZXJ0IDxlcnJvciBkZXNjcj0iSW5jb21wYXRpYmxlIHR5cGVzLiBGb3VuZDogJ2NoYXInLCByZXF1aXJlZDogJ2Jvb2xlYW4nIj4nYSc8L2Vycm9yPjsKKyAgICBhc3NlcnQgPGVycm9yIGRlc2NyPSJJbmNvbXBhdGlibGUgdHlwZXMuIEZvdW5kOiAnamF2YS5sYW5nLlN0cmluZycsIHJlcXVpcmVkOiAnYm9vbGVhbiciPiIiPC9lcnJvcj47IAorICAgIGFzc2VydCA8ZXJyb3IgZGVzY3I9IkluY29tcGF0aWJsZSB0eXBlcy4gRm91bmQ6ICd2b2lkJywgcmVxdWlyZWQ6ICdib29sZWFuJyI+ZigpPC9lcnJvcj47CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9NdXN0QmVGaW5hbC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvTXVzdEJlRmluYWwuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMmE5MTRiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvTXVzdEJlRmluYWwuamF2YQpAQCAtMCwwICsxLDEyIEBACitjbGFzcyBtIHsKKyAgaW50IGk7CisgIHZvaWQgZigpIHsKKyAgICBpbnQgciA9IDA7CisgICAgbmV3IFJ1bm5hYmxlKCkgeworICAgICAgcHVibGljIHZvaWQgcnVuKCkgeworICAgICAgICBpbnQgayA9IDxlcnJvciBkZXNjcj0iVmFyaWFibGUgJ3InIGlzIGFjY2Vzc2VkIGZyb20gd2l0aGluIGlubmVyIGNsYXNzLiBOZWVkcyB0byBiZSBkZWNsYXJlZCBmaW5hbC4iPnI8L2Vycm9yPjsKKyAgICAgICAgaW50IGlpID0gaTsKKyAgICAgIH0KKyAgICB9OworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvTXVzdEJlVGhyb3dhYmxlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9NdXN0QmVUaHJvd2FibGUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZDRlNTliCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvTXVzdEJlVGhyb3dhYmxlLmphdmEKQEAgLTAsMCArMSw0NiBAQAorY2xhc3MgYyB7CisgICAgdm9pZCBmMSgpIHsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgfSBjYXRjaCAoPGVycm9yIGRlc2NyPSJJbmNvbXBhdGlibGUgdHlwZXMuIEZvdW5kOiAnamF2YS5sYW5nLkVycm9yW10nLCByZXF1aXJlZDogJ2phdmEubGFuZy5UaHJvd2FibGUnIj5FcnJvcltdIGU8L2Vycm9yPikgeworICAgICAgICB9CisgICAgICAgIHRyeSB7CisgICAgICAgIH0gY2F0Y2ggKDxlcnJvciBkZXNjcj0iSW5jb21wYXRpYmxlIHR5cGVzLiBGb3VuZDogJ2phdmEubGFuZy5FcnJvcltdJywgcmVxdWlyZWQ6ICdqYXZhLmxhbmcuVGhyb3dhYmxlJyI+RXJyb3IgZVtdPC9lcnJvcj4pIHsKKyAgICAgICAgfQorICAgICAgICB0cnkgeworICAgICAgICB9IGNhdGNoICg8ZXJyb3IgZGVzY3I9IkluY29tcGF0aWJsZSB0eXBlcy4gRm91bmQ6ICdqYXZhLmxhbmcuRXJyb3JbXVtdW11bXScsIHJlcXVpcmVkOiAnamF2YS5sYW5nLlRocm93YWJsZSciPkVycm9yW10gW11lW10gW108L2Vycm9yPikgeworICAgICAgICB9CisgICAgICAgIGNhdGNoKDxlcnJvciBkZXNjcj0iSW5jb21wYXRpYmxlIHR5cGVzLiBGb3VuZDogJ2ludCcsIHJlcXVpcmVkOiAnamF2YS5sYW5nLlRocm93YWJsZSciPmludCBlPC9lcnJvcj4pIHsKKyAgICAgICAgfQorCisgICAgfQorCit9CisKK2NsYXNzIE15RXhjZXB0aW9uIC8vIGRvZXMgbm90IGV4dGVuZCBUaHJvd2FibGUKK3t9CisgCitjbGFzcyBhNjAKK3sKKyAgcHVibGljIHZvaWQgdGVzdCgpIHRocm93cyA8ZXJyb3IgZGVzY3I9IkluY29tcGF0aWJsZSB0eXBlcy4gRm91bmQ6ICdNeUV4Y2VwdGlvbicsIHJlcXVpcmVkOiAnamF2YS5sYW5nLlRocm93YWJsZSciPk15RXhjZXB0aW9uPC9lcnJvcj4KKyAgeworICAgIHRocm93IDxlcnJvciBkZXNjcj0iSW5jb21wYXRpYmxlIHR5cGVzLiBGb3VuZDogJ015RXhjZXB0aW9uJywgcmVxdWlyZWQ6ICdqYXZhLmxhbmcuVGhyb3dhYmxlJyI+bmV3IE15RXhjZXB0aW9uKCk8L2Vycm9yPjsKKyAgfQorICBwdWJsaWMgdm9pZCB0ZXN0KGludCBpKSB7CisJc3dpdGNoIChpKSB7CisJCWNhc2UgMTogdGhyb3cgPGVycm9yIGRlc2NyPSJJbmNvbXBhdGlibGUgdHlwZXMuIEZvdW5kOiAnYm9vbGVhbicsIHJlcXVpcmVkOiAnamF2YS5sYW5nLlRocm93YWJsZSciPmZhbHNlPC9lcnJvcj47CisJCWNhc2UgMjogdGhyb3cgPGVycm9yIGRlc2NyPSJJbmNvbXBhdGlibGUgdHlwZXMuIEZvdW5kOiAnaW50JywgcmVxdWlyZWQ6ICdqYXZhLmxhbmcuVGhyb3dhYmxlJyI+MTwvZXJyb3I+OworCQljYXNlIDM6IHRocm93IDxlcnJvciBkZXNjcj0iSW5jb21wYXRpYmxlIHR5cGVzLiBGb3VuZDogJ2RvdWJsZScsIHJlcXVpcmVkOiAnamF2YS5sYW5nLlRocm93YWJsZSciPjEuMDwvZXJyb3I+OworCQljYXNlIDQ6IHRocm93IDxlcnJvciBkZXNjcj0iSW5jb21wYXRpYmxlIHR5cGVzLiBGb3VuZDogJ2NoYXInLCByZXF1aXJlZDogJ2phdmEubGFuZy5UaHJvd2FibGUnIj4nYSc8L2Vycm9yPjsKKwkJY2FzZSA1OiB0aHJvdyA8ZXJyb3IgZGVzY3I9IkluY29tcGF0aWJsZSB0eXBlcy4gRm91bmQ6ICdsb25nJywgcmVxdWlyZWQ6ICdqYXZhLmxhbmcuVGhyb3dhYmxlJyI+MUw8L2Vycm9yPjsKKwkJY2FzZSA2OiB0aHJvdyA8ZXJyb3IgZGVzY3I9IkluY29tcGF0aWJsZSB0eXBlcy4gRm91bmQ6ICdmbG9hdCcsIHJlcXVpcmVkOiAnamF2YS5sYW5nLlRocm93YWJsZSciPjEuMGY8L2Vycm9yPjsKKwl9CisgIH0KK30KKworIGNsYXNzIENvbnRlc3QgeworICAgIHNob3J0IG1pZGdldDsKKworICAgIHZvaWQgc3Ryb25nTWFuKCkgdGhyb3dzIDxlcnJvciBkZXNjcj0iQ2xhc3MgbmFtZSBleHBlY3RlZCI+bWlkZ2V0PC9lcnJvcj4geworICAgIH0KK30KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvTmFtZXNIaWdobGlnaHRpbmcuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nL05hbWVzSGlnaGxpZ2h0aW5nLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTkyYWVmYQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nL05hbWVzSGlnaGxpZ2h0aW5nLmphdmEKQEAgLTAsMCArMSw2MiBAQAoraW1wb3J0IDxzeW1ib2xOYW1lIGRlc2NyPSJudWxsIiB0eXBlPSJDTEFTU19OQU1FIj5qYXZhLmlvPC9zeW1ib2xOYW1lPi4qOyAvLyBoaWdobGlnaHQgb24gZGVtYW5kIGltcG9ydCBhcyBjbGFzcyBuYW1lCisKK2NsYXNzIDxzeW1ib2xOYW1lIGRlc2NyPSJudWxsIiB0eXBlPSJDTEFTU19OQU1FIj5hPC9zeW1ib2xOYW1lPiB7CisgIHZvaWQgPHN5bWJvbE5hbWUgZGVzY3I9Im51bGwiIHR5cGU9Ik1FVEhPRF9ERUNMQVJBVElPTiI+bWV0aG9kPC9zeW1ib2xOYW1lPigpIHsKKyAgICA8c3ltYm9sTmFtZSBkZXNjcj0ibnVsbCIgdHlwZT0iTUVUSE9EX0NBTEwiPm1ldGhvZDwvc3ltYm9sTmFtZT4oKTsKKworICAgIG5ldyA8c3ltYm9sTmFtZSBkZXNjcj0ibnVsbCIgdHlwZT0iQ09OU1RSVUNUT1JfQ0FMTCI+RXhjZXB0aW9uPC9zeW1ib2xOYW1lPigpOworICAgIG5ldyA8c3ltYm9sTmFtZSBkZXNjcj0ibnVsbCIgdHlwZT0iQ09OU1RSVUNUT1JfQ0FMTCI+amF2YS5sYW5nLkV4Y2VwdGlvbjwvc3ltYm9sTmFtZT4oKTsKKyAgfQorCisgIDxzeW1ib2xOYW1lIGRlc2NyPSJudWxsIiB0eXBlPSJDT05TVFJVQ1RPUl9ERUNMQVJBVElPTiI+YTwvc3ltYm9sTmFtZT4oKSB7CisgICAgbmV3IDxzeW1ib2xOYW1lIGRlc2NyPSJudWxsIiB0eXBlPSJDT05TVFJVQ1RPUl9DQUxMIj5hPC9zeW1ib2xOYW1lPigpOworICB9CisgCisgIC8qKgorICAgKiBAc2VlIDxzeW1ib2xOYW1lIGRlc2NyPSJudWxsIiB0eXBlPSJJTlRFUkZBQ0VfTkFNRSI+aXRmPC9zeW1ib2xOYW1lPiM8c3ltYm9sTmFtZSBkZXNjcj0ibnVsbCIgdHlwZT0iQUJTVFJBQ1RfTUVUSE9EIj5tZXRob2Q8L3N5bWJvbE5hbWU+KGRvdWJsZSkKKyAgICovCisgIHN0YXRpYyB2b2lkIDxzeW1ib2xOYW1lIGRlc2NyPSJudWxsIiB0eXBlPSJNRVRIT0RfREVDTEFSQVRJT04iPmY8L3N5bWJvbE5hbWU+KCkgeworICAgIDxzeW1ib2xOYW1lIGRlc2NyPSJudWxsIiB0eXBlPSJDTEFTU19OQU1FIj5JbnRlZ2VyPC9zeW1ib2xOYW1lPi48c3ltYm9sTmFtZSBkZXNjcj0ibnVsbCIgdHlwZT0iU1RBVElDX01FVEhPRCI+cGFyc2VJbnQ8L3N5bWJvbE5hbWU+KCIiKTsKKyAgICA8c3ltYm9sTmFtZSBkZXNjcj0ibnVsbCIgdHlwZT0iQ0xBU1NfTkFNRSI+amF2YS5sYW5nLkludGVnZXI8L3N5bWJvbE5hbWU+LjxzeW1ib2xOYW1lIGRlc2NyPSJudWxsIiB0eXBlPSJTVEFUSUNfTUVUSE9EIj5wYXJzZUludDwvc3ltYm9sTmFtZT4oIiIpOworICAgIDxzeW1ib2xOYW1lIGRlc2NyPSJudWxsIiB0eXBlPSJTVEFUSUNfTUVUSE9EIj5mPC9zeW1ib2xOYW1lPigpOworICB9CisKKyAgaW50ZXJmYWNlIDxzeW1ib2xOYW1lIGRlc2NyPSJudWxsIiB0eXBlPSJJTlRFUkZBQ0VfTkFNRSI+aXRmPC9zeW1ib2xOYW1lPiB7CisgICAgaW50IDxzeW1ib2xOYW1lIGRlc2NyPSJudWxsIiB0eXBlPSJTVEFUSUNfRklOQUxfRklFTEQiPkNPTlNUPC9zeW1ib2xOYW1lPiA9IDA7CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0gPHN5bWJvbE5hbWUgZGVzY3I9Im51bGwiIHR5cGU9IlBBUkFNRVRFUiI+ZDwvc3ltYm9sTmFtZT4gSW1wb3J0YW50IHBhcmFtCisgICAgICovCisgICAgdm9pZCA8c3ltYm9sTmFtZSBkZXNjcj0ibnVsbCIgdHlwZT0iTUVUSE9EX0RFQ0xBUkFUSU9OIj5tZXRob2Q8L3N5bWJvbE5hbWU+KGRvdWJsZSA8c3ltYm9sTmFtZSBkZXNjcj0ibnVsbCIgdHlwZT0iUEFSQU1FVEVSIj5kPC9zeW1ib2xOYW1lPik7CisgIH0KKworICB2b2lkIDxzeW1ib2xOYW1lIGRlc2NyPSJudWxsIiB0eXBlPSJNRVRIT0RfREVDTEFSQVRJT04iPmZmPC9zeW1ib2xOYW1lPig8c3ltYm9sTmFtZSBkZXNjcj0ibnVsbCIgdHlwZT0iSU5URVJGQUNFX05BTUUiPlJ1bm5hYmxlPC9zeW1ib2xOYW1lPiA8c3ltYm9sTmFtZSBkZXNjcj0ibnVsbCIgdHlwZT0iUEFSQU1FVEVSIj5yPC9zeW1ib2xOYW1lPikgeworICAgICA8c3ltYm9sTmFtZSBkZXNjcj0ibnVsbCIgdHlwZT0iTUVUSE9EX0NBTEwiPmZmPC9zeW1ib2xOYW1lPigKKyAgICAgICBuZXcgPHN5bWJvbE5hbWUgZGVzY3I9Im51bGwiIHR5cGU9IkFOT05ZTU9VU19DTEFTU19OQU1FIj5qYXZhLmxhbmcuUnVubmFibGU8L3N5bWJvbE5hbWU+KCkgeworICAgICAgICAgcHVibGljIHZvaWQgPHN5bWJvbE5hbWUgZGVzY3I9Im51bGwiIHR5cGU9Ik1FVEhPRF9ERUNMQVJBVElPTiI+cnVuPC9zeW1ib2xOYW1lPigpIHt9CisgICAgICAgICBpbnQgPHN5bWJvbE5hbWUgZGVzY3I9Im51bGwiIHR5cGU9IklOU1RBTkNFX0ZJRUxEIj5pbnN0YW5jZTwvc3ltYm9sTmFtZT4gPSAwOworICAgICAgIH0KKyAgICAgKTsKKworICAgIGludCA8c3ltYm9sTmFtZSBkZXNjcj0ibnVsbCIgdHlwZT0iTE9DQUxfVkFSSUFCTEUiPmk8L3N5bWJvbE5hbWU+ID0gPHN5bWJvbE5hbWUgZGVzY3I9Im51bGwiIHR5cGU9IkNMQVNTX05BTUUiPmphdmEubGFuZy5JbnRlZ2VyPC9zeW1ib2xOYW1lPi48c3ltYm9sTmFtZSBkZXNjcj0ibnVsbCIgdHlwZT0iU1RBVElDX0ZJTkFMX0ZJRUxEIj5NSU5fVkFMVUU8L3N5bWJvbE5hbWU+OworICAgIGludCA8c3ltYm9sTmFtZSBkZXNjcj0ibnVsbCIgdHlwZT0iTE9DQUxfVkFSSUFCTEUiPmo8L3N5bWJvbE5hbWU+ID0gPHN5bWJvbE5hbWUgZGVzY3I9Im51bGwiIHR5cGU9IklOVEVSRkFDRV9OQU1FIj5pdGY8L3N5bWJvbE5hbWU+LjxzeW1ib2xOYW1lIGRlc2NyPSJudWxsIiB0eXBlPSJTVEFUSUNfRklOQUxfRklFTEQiPkNPTlNUPC9zeW1ib2xOYW1lPjsKKyAgfQorfQorCitjbGFzcyA8c3ltYm9sTmFtZSBkZXNjcj0ibnVsbCIgdHlwZT0iQ0xBU1NfTkFNRSI+Tm9DdHJDbGFzczwvc3ltYm9sTmFtZT4geworICB7CisgICAgLy8gZGVmYXVsdCBjb25zdHJ1Y3RvciBjYWxsIGxvb2tzIGxpa2UgY2xhc3MKKyAgICBuZXcgPHN5bWJvbE5hbWUgZGVzY3I9Im51bGwiIHR5cGU9IkNMQVNTX05BTUUiPk5vQ3RyQ2xhc3M8L3N5bWJvbE5hbWU+KCk7CisgIH0KKworICB2b2lkIDxzeW1ib2xOYW1lIGRlc2NyPSJudWxsIiB0eXBlPSJNRVRIT0RfREVDTEFSQVRJT04iPmZmPC9zeW1ib2xOYW1lPihpbnQgPHN5bWJvbE5hbWUgZGVzY3I9Im51bGwiIHR5cGU9IlJFQVNTSUdORURfUEFSQU1FVEVSIj5wYXJhbTwvc3ltYm9sTmFtZT4pIHsKKyAgICAgaW50IDxzeW1ib2xOYW1lIGRlc2NyPSJudWxsIiB0eXBlPSJSRUFTU0lHTkVEX0xPQ0FMX1ZBUklBQkxFIj5pPC9zeW1ib2xOYW1lPiA9IDE7CisgICAgIDxzeW1ib2xOYW1lIGRlc2NyPSJudWxsIiB0eXBlPSJSRUFTU0lHTkVEX0xPQ0FMX1ZBUklBQkxFIj5pPC9zeW1ib2xOYW1lPiArKzsKKworICAgICA8c3ltYm9sTmFtZSBkZXNjcj0ibnVsbCIgdHlwZT0iUkVBU1NJR05FRF9QQVJBTUVURVIiPnBhcmFtPC9zeW1ib2xOYW1lPiA9IDA7CisgIH0KK30KKworY2xhc3MgPHN5bWJvbE5hbWUgZGVzY3I9Im51bGwiIHR5cGU9IkNMQVNTX05BTUUiPkdlbmVyaWM8L3N5bWJvbE5hbWU+PDxzeW1ib2xOYW1lIGRlc2NyPSJudWxsIiB0eXBlPSJUWVBFX1BBUkFNRVRFUl9OQU1FIj5UVDwvc3ltYm9sTmFtZT4gZXh0ZW5kcyA8c3ltYm9sTmFtZSBkZXNjcj0ibnVsbCIgdHlwZT0iSU5URVJGQUNFX05BTUUiPlJ1bm5hYmxlPC9zeW1ib2xOYW1lPj4geworICA8c3ltYm9sTmFtZSBkZXNjcj0ibnVsbCIgdHlwZT0iVFlQRV9QQVJBTUVURVJfTkFNRSI+VFQ8L3N5bWJvbE5hbWU+IDxzeW1ib2xOYW1lIGRlc2NyPSJudWxsIiB0eXBlPSJJTlNUQU5DRV9GSUVMRCI+ZmllbGQ8L3N5bWJvbE5hbWU+OworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nL05vdEFsbG93ZWRJbkludGVyZmFjZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvTm90QWxsb3dlZEluSW50ZXJmYWNlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjllOWE5YQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nL05vdEFsbG93ZWRJbkludGVyZmFjZS5qYXZhCkBAIC0wLDAgKzEsOSBAQAorLy8gTm90IGFsbG93ZWQgaW4gaW50ZXJmYWNlCisKKworaW50ZXJmYWNlIEEgeworICAgIDxlcnJvciBkZXNjcj0iTm90IGFsbG93ZWQgaW4gaW50ZXJmYWNlIj5BKCk7PC9lcnJvcj4KKyAgICA8ZXJyb3IgZGVzY3I9Ik5vdCBhbGxvd2VkIGluIGludGVyZmFjZSI+c3RhdGljIHt9PC9lcnJvcj4KKyAgICA8ZXJyb3IgZGVzY3I9Ik5vdCBhbGxvd2VkIGluIGludGVyZmFjZSI+e308L2Vycm9yPgorfQorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9OdW1lcmljTGl0ZXJhbHMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nL051bWVyaWNMaXRlcmFscy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJlY2RkYTUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9OdW1lcmljTGl0ZXJhbHMuamF2YQpAQCAtMCwwICsxLDg1IEBACisvKgorICogQ29weXJpZ2h0IDIwMDAtMjAxMiBKZXRCcmFpbnMgcy5yLm8uCisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisvLy8gYXNzaWdubWVudCBjb21wYXRpYmxlIHR5cGVzCitpbXBvcnQgamF2YS5pby4qOworaW1wb3J0IGphdmEubmV0Lio7CisKK3B1YmxpYyBjbGFzcyBhICB7CisgIGZpbmFsIGludCBGSSA9IDI7CisgIGZpbmFsIGludCBGSUJJRyA9IDIwMDAwMDAwMDsKKworICB2b2lkIGYoKSB7CisgICAgaW50IGkxPSAtPGVycm9yIGRlc2NyPSJJbnRlZ2VyIG51bWJlciB0b28gbGFyZ2UiPjIxNDc0ODM2NDk8L2Vycm9yPjsKKyAgICBpbnQgaTI9IDxlcnJvciBkZXNjcj0iSW50ZWdlciBudW1iZXIgdG9vIGxhcmdlIj4yMTQ3NDgzNjQ4PC9lcnJvcj47CisgICAgaW50IGkzID0gLTIxNDc0ODM2NDg7CisgICAgaW50IGk0ID0gLTB4N2ZmZmZmZmY7CisgICAgaW50IGk1ID0gLTAxNzc3Nzc3Nzc3NzsKKyAgICBpbnQgaTYgPSA8ZXJyb3IgZGVzY3I9IkhleGFkZWNpbWFsIG51bWJlcnMgbXVzdCBjb250YWluIGF0IGxlYXN0IG9uZSBoZXhhZGVjaW1hbCBkaWdpdCI+MHg8L2Vycm9yPjsKKyAgICBpbnQgaTcgPSAweGRlYWRiZWVmOworICAgIGludCBpOCA9IDB4ZmZmZmZmZmY7CisgICAgaW50IGk5ID0gPGVycm9yIGRlc2NyPSJJbnRlZ2VyIG51bWJlciB0b28gbGFyZ2UiPjB4ZmZmZmZmZmY5PC9lcnJvcj47CisgICAgaW50IGkxMCA9IDB4ODAwMDAwMDA7CisgICAgaW50IGkxMSA9IDAwMDAwMDAwMDAwMDArMHgwMDAwMDAwMDA7CisgICAgaW50IGkxMiA9IDB4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA7CisgICAgaW50IGkxMyA9IDxlcnJvciBkZXNjcj0iSW50ZWdlciBudW1iZXIgdG9vIGxhcmdlIj4wNDAwMDAwMDAwMDA8L2Vycm9yPjsKKyAgICBpbnQgaTE0ID0gMDIwMDAwMDAwMDAwOworICAgIGludCBpMTUgPSA8ZXJyb3IgZGVzY3I9IkludGVnZXIgbnVtYmVyIHRvbyBsYXJnZSI+MHhmMDQ0MzMyMjExPC9lcnJvcj47CisgICAgaW50IG9jdGFsZSA9IDAxNzc3Nzc3Nzc3NzsgIC8vIG5lZ2F0aXZlCisgICAgaW50IGJpMSA9IDxlcnJvciBkZXNjcj0iQmluYXJ5IGxpdGVyYWxzIGFyZSBub3Qgc3VwcG9ydGVkIGF0IHRoaXMgbGFuZ3VhZ2UgbGV2ZWwiPjBiMDAxMDwvZXJyb3I+OworICAgIGludCBiaTIgPSA8ZXJyb3IgZGVzY3I9IkJpbmFyeSBsaXRlcmFscyBhcmUgbm90IHN1cHBvcnRlZCBhdCB0aGlzIGxhbmd1YWdlIGxldmVsIj4wQjAwMTA8L2Vycm9yPjsKKyAgICBpbnQgYmkzID0gPGVycm9yIGRlc2NyPSJVbmRlcnNjb3JlcyBpbiBsaXRlcmFscyBhcmUgbm90IHN1cHBvcnRlZCBhdCB0aGlzIGxhbmd1YWdlIGxldmVsIj4xXzI8L2Vycm9yPjsKKworICAgIGxvbmcgbDEgPSAtPGVycm9yIGRlc2NyPSJMb25nIG51bWJlciB0b28gbGFyZ2UiPjkyMjMzNzIwMzY4NTQ3NzU4MDlMPC9lcnJvcj47CisgICAgbG9uZyBsMiA9IDxlcnJvciBkZXNjcj0iTG9uZyBudW1iZXIgdG9vIGxhcmdlIj45MjIzMzcyMDM2ODU0Nzc1ODA4TDwvZXJyb3I+OworICAgIGxvbmcgbDMgPSAtOTIyMzM3MjAzNjg1NDc3NTgwOEw7CisgICAgbG9uZyBsNCA9IC08ZXJyb3IgZGVzY3I9IkludGVnZXIgbnVtYmVyIHRvbyBsYXJnZSI+MjE0NzQ4MzY0OTwvZXJyb3I+OworICAgIGxvbmcgbDUgPSA8ZXJyb3IgZGVzY3I9IkludGVnZXIgbnVtYmVyIHRvbyBsYXJnZSI+MjE0NzQ4MzY0ODwvZXJyb3I+OworICAgIGxvbmcgbDYgPSA8ZXJyb3IgZGVzY3I9IkhleGFkZWNpbWFsIG51bWJlcnMgbXVzdCBjb250YWluIGF0IGxlYXN0IG9uZSBoZXhhZGVjaW1hbCBkaWdpdCI+MHhMPC9lcnJvcj47CisgICAgbG9uZyBsNyA9IDB4ZGVhZGJlZWZmZmZmZmZmZkw7CisgICAgbG9uZyBsOCA9IDB4ZmZmZmZmZmZmZmZmZmZmZkw7CisgICAgbG9uZyBsOSA9IDxlcnJvciBkZXNjcj0iTG9uZyBudW1iZXIgdG9vIGxhcmdlIj4weGZmZmZmZmZmZmZmZmZmZmY5TDwvZXJyb3I+OworICAgIGxvbmcgbDEwID0gMHg4MDAwMDAwMDAwMDAwMDAwTDsKKyAgICBsb25nIG9jdGFsVmFsdWUgPSAwMTc3Nzc3Nzc3Nzc3Nzc3Nzc3NzYwMEw7CisgICAgbG9uZyBvY3RhbFZhbHVhID0gMDE3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3NzdMOworICAgIGxvbmcgYmwxID0gPGVycm9yIGRlc2NyPSJCaW5hcnkgbGl0ZXJhbHMgYXJlIG5vdCBzdXBwb3J0ZWQgYXQgdGhpcyBsYW5ndWFnZSBsZXZlbCI+MGIwMDEwbDwvZXJyb3I+OworICAgIGxvbmcgYmwyID0gPGVycm9yIGRlc2NyPSJCaW5hcnkgbGl0ZXJhbHMgYXJlIG5vdCBzdXBwb3J0ZWQgYXQgdGhpcyBsYW5ndWFnZSBsZXZlbCI+MEIwMDEwTDwvZXJyb3I+OworICAgIGxvbmcgYmwzID0gPGVycm9yIGRlc2NyPSJVbmRlcnNjb3JlcyBpbiBsaXRlcmFscyBhcmUgbm90IHN1cHBvcnRlZCBhdCB0aGlzIGxhbmd1YWdlIGxldmVsIj4xMF8yNEw8L2Vycm9yPjsKKworICAgIGZsb2F0IGYxPSA8ZXJyb3IgZGVzY3I9IkZsb2F0aW5nIHBvaW50IG51bWJlciB0b28gc21hbGwiPjFlLTQ2ZjwvZXJyb3I+OworICAgIGZsb2F0IGYyID0gPGVycm9yIGRlc2NyPSJGbG9hdGluZyBwb2ludCBudW1iZXIgdG9vIGxhcmdlIj4xZTM5ZjwvZXJyb3I+OworICAgIGZsb2F0IGYzID0gMEUxRjsKKyAgICBmbG9hdCBmNCA9IDxlcnJvciBkZXNjcj0iSGV4YWRlY2ltYWwgZmxvYXRpbmcgcG9pbnQgbGl0ZXJhbHMgYXJlIG5vdCBzdXBwb3J0ZWQgYXQgdGhpcyBsYW5ndWFnZSBsZXZlbCI+MHhhYmMuZGVmUDJmPC9lcnJvcj47CisgICAgZmxvYXQgYmYxID0gPGVycm9yIGRlc2NyPSJVbmRlcnNjb3JlcyBpbiBsaXRlcmFscyBhcmUgbm90IHN1cHBvcnRlZCBhdCB0aGlzIGxhbmd1YWdlIGxldmVsIj4zLjE0MV81OTJmPC9lcnJvcj47CisKKyAgICBkb3VibGUgZGQxID0gPGVycm9yIGRlc2NyPSJGbG9hdGluZyBwb2ludCBudW1iZXIgdG9vIHNtYWxsIj4xZS0zMjQ8L2Vycm9yPjsKKyAgICBkb3VibGUgZGQyID0gPGVycm9yIGRlc2NyPSJGbG9hdGluZyBwb2ludCBudW1iZXIgdG9vIGxhcmdlIj4xZTMwOTwvZXJyb3I+OworICAgIGRvdWJsZSBkZDMgPSAwRTE7CisgICAgZG91YmxlIGRkNCA9IDxlcnJvciBkZXNjcj0iSGV4YWRlY2ltYWwgZmxvYXRpbmcgcG9pbnQgbGl0ZXJhbHMgYXJlIG5vdCBzdXBwb3J0ZWQgYXQgdGhpcyBsYW5ndWFnZSBsZXZlbCI+MHgxLmZmZmZmZmZmZmZmZmZQMTAyMzwvZXJyb3I+OworICAgIGRvdWJsZSBkMSA9IDxlcnJvciBkZXNjcj0iTWFsZm9ybWVkIGZsb2F0aW5nIHBvaW50IGxpdGVyYWwiPjEuRTwvZXJyb3I+OworICAgIGRvdWJsZSBkMiA9IDxlcnJvciBkZXNjcj0iTWFsZm9ybWVkIGZsb2F0aW5nIHBvaW50IGxpdGVyYWwiPjEuZTwvZXJyb3I+OworICAgIGRvdWJsZSBkMyA9IDxlcnJvciBkZXNjcj0iTWFsZm9ybWVkIGZsb2F0aW5nIHBvaW50IGxpdGVyYWwiPjEuRSs8L2Vycm9yPjsKKyAgICBkb3VibGUgZDQgPSA8ZXJyb3IgZGVzY3I9Ik1hbGZvcm1lZCBmbG9hdGluZyBwb2ludCBsaXRlcmFsIj4xLkUtPC9lcnJvcj47CisgICAgZG91YmxlIGQ1ID0gPGVycm9yIGRlc2NyPSJNYWxmb3JtZWQgZmxvYXRpbmcgcG9pbnQgbGl0ZXJhbCI+LjFlRDwvZXJyb3I+OworICAgIGRvdWJsZSBkNiA9IDxlcnJvciBkZXNjcj0iTWFsZm9ybWVkIGZsb2F0aW5nIHBvaW50IGxpdGVyYWwiPi4xZStEPC9lcnJvcj47CisgICAgZG91YmxlIGQ3ID0gPGVycm9yIGRlc2NyPSJNYWxmb3JtZWQgZmxvYXRpbmcgcG9pbnQgbGl0ZXJhbCI+MWUrRDwvZXJyb3I+OworICAgIGRvdWJsZSBkOCA9IDxlcnJvciBkZXNjcj0iTWFsZm9ybWVkIGZsb2F0aW5nIHBvaW50IGxpdGVyYWwiPjFlLUQ8L2Vycm9yPjsKKyAgICBkb3VibGUgZDkgPSA8ZXJyb3IgZGVzY3I9Ik1hbGZvcm1lZCBmbG9hdGluZyBwb2ludCBsaXRlcmFsIj4xZS1kPC9lcnJvcj47CisgICAgZG91YmxlIGQxMCA9IDxlcnJvciBkZXNjcj0iTWFsZm9ybWVkIGZsb2F0aW5nIHBvaW50IGxpdGVyYWwiPjFlLUY8L2Vycm9yPjsKKyAgICBkb3VibGUgZDExID0gPGVycm9yIGRlc2NyPSJNYWxmb3JtZWQgZmxvYXRpbmcgcG9pbnQgbGl0ZXJhbCI+MWUtZjwvZXJyb3I+OworICAgIGRvdWJsZSBkMTIgPSA8ZXJyb3IgZGVzY3I9IlVuZGVyc2NvcmVzIGluIGxpdGVyYWxzIGFyZSBub3Qgc3VwcG9ydGVkIGF0IHRoaXMgbGFuZ3VhZ2UgbGV2ZWwiPjMuMTQxXzU5Ml82NTNfNTg5Xzc5M2Q8L2Vycm9yPjsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvTnVtZXJpY092ZXJmbG93LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9OdW1lcmljT3ZlcmZsb3cuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NDJkNWZlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvTnVtZXJpY092ZXJmbG93LmphdmEKQEAgLTAsMCArMSw4OCBAQAorLy8gb3ZlcmZsb3dzIGluIGNvbnN0IGV4cHJlc3Npb25zCisKKworY2xhc3MgYyB7CisgLy8gQCojJCYgISByZWZlcmVuY2VzIGRvIG5vdCB3b3JrIGluIEpSRQorIHN0YXRpYyBmaW5hbCBsb25nIExPTkdfTUlOX1ZBTFVFID0gMHg4MDAwMDAwMDAwMDAwMDAwTDsKKyBzdGF0aWMgZmluYWwgbG9uZyBMT05HX01BWF9WQUxVRSA9IDB4N2ZmZmZmZmZmZmZmZmZmZkw7Cisgc3RhdGljIGZpbmFsIGludCBJTlRFR0VSX01JTl9WQUxVRSA9IDB4ODAwMDAwMDA7Cisgc3RhdGljIGZpbmFsIGludCBJTlRFR0VSX01BWF9WQUxVRSA9IDB4N2ZmZmZmZmY7Cisgc3RhdGljIGZpbmFsIGZsb2F0IEZMT0FUX01JTl9WQUxVRSA9IDEuNGUtNDVmOworIHN0YXRpYyBmaW5hbCBmbG9hdCBGTE9BVF9NQVhfVkFMVUUgPSAzLjQwMjgyMzVlKzM4ZjsKKyBzdGF0aWMgZmluYWwgZG91YmxlIERPVUJMRV9NSU5fVkFMVUUgPSA0LjllLTMyNDsKKyBzdGF0aWMgZmluYWwgZG91YmxlIERPVUJMRV9NQVhfVkFMVUUgPSAxLjc5NzY5MzEzNDg2MjMxNTdlKzMwODsKKworIHZvaWQgZigpIHsKKyAgIGZsb2F0IGYxID0gPHdhcm5pbmcgZGVzY3I9Ik51bWVyaWMgb3ZlcmZsb3cgaW4gZXhwcmVzc2lvbiI+MS4wZiAvIDAuMGY8L3dhcm5pbmc+OworICAgZjEgPSA8d2FybmluZyBkZXNjcj0iTnVtZXJpYyBvdmVyZmxvdyBpbiBleHByZXNzaW9uIj5GTE9BVF9NQVhfVkFMVUUgKyBGTE9BVF9NQVhfVkFMVUU8L3dhcm5pbmc+OworICAgZjEgPSA8d2FybmluZyBkZXNjcj0iTnVtZXJpYyBvdmVyZmxvdyBpbiBleHByZXNzaW9uIj5GTE9BVF9NQVhfVkFMVUUgKiAyPC93YXJuaW5nPjsKKyAgIGYxID0gPHdhcm5pbmcgZGVzY3I9Ik51bWVyaWMgb3ZlcmZsb3cgaW4gZXhwcmVzc2lvbiI+MiAvIEZMT0FUX01JTl9WQUxVRTwvd2FybmluZz47CisgICBmMSA9IEZMT0FUX01JTl9WQUxVRSArIDE7CisgICBmMSA9IC0gRkxPQVRfTUlOX1ZBTFVFOworICAgZjEgPSAtRkxPQVRfTUFYX1ZBTFVFOworICAgU3lzdGVtLm91dC5wcmludGxuKGYxKTsKKworICAgZG91YmxlIGQxID0gPHdhcm5pbmcgZGVzY3I9Ik51bWVyaWMgb3ZlcmZsb3cgaW4gZXhwcmVzc2lvbiI+RE9VQkxFX01BWF9WQUxVRSAtIC1ET1VCTEVfTUFYX1ZBTFVFPC93YXJuaW5nPjsKKyAgIGQxID0gRE9VQkxFX01BWF9WQUxVRSArIDE7CisgICBkMSA9IDx3YXJuaW5nIGRlc2NyPSJOdW1lcmljIG92ZXJmbG93IGluIGV4cHJlc3Npb24iPjIgKiBET1VCTEVfTUFYX1ZBTFVFPC93YXJuaW5nPjsKKyAgIGQxID0gPHdhcm5pbmcgZGVzY3I9Ik51bWVyaWMgb3ZlcmZsb3cgaW4gZXhwcmVzc2lvbiI+MiAvIERPVUJMRV9NSU5fVkFMVUU8L3dhcm5pbmc+OworICAgZDEgPSA8d2FybmluZyBkZXNjcj0iTnVtZXJpYyBvdmVyZmxvdyBpbiBleHByZXNzaW9uIj4yIC8gMC4wZDwvd2FybmluZz47CisgICBkMSA9IDx3YXJuaW5nIGRlc2NyPSJOdW1lcmljIG92ZXJmbG93IGluIGV4cHJlc3Npb24iPjIgLyAwLjA8L3dhcm5pbmc+OworICAgU3lzdGVtLm91dC5wcmludGxuKGQxKTsKKworCisgICBpbnQgaTEgPSA8d2FybmluZyBkZXNjcj0iTnVtZXJpYyBvdmVyZmxvdyBpbiBleHByZXNzaW9uIj5JTlRFR0VSX01BWF9WQUxVRSArIDE8L3dhcm5pbmc+OworICAgaTEgPSA8d2FybmluZyBkZXNjcj0iTnVtZXJpYyBvdmVyZmxvdyBpbiBleHByZXNzaW9uIj5JTlRFR0VSX01BWF9WQUxVRSAtIDEgKyAyPC93YXJuaW5nPjsKKyAgIGkxID0gPHdhcm5pbmcgZGVzY3I9Ik51bWVyaWMgb3ZlcmZsb3cgaW4gZXhwcmVzc2lvbiI+SU5URUdFUl9NQVhfVkFMVUUgLSBJTlRFR0VSX01JTl9WQUxVRTwvd2FybmluZz47CisgICBpMSA9IDx3YXJuaW5nIGRlc2NyPSJOdW1lcmljIG92ZXJmbG93IGluIGV4cHJlc3Npb24iPi1JTlRFR0VSX01JTl9WQUxVRTwvd2FybmluZz47CisgICBpMSA9IDx3YXJuaW5nIGRlc2NyPSJOdW1lcmljIG92ZXJmbG93IGluIGV4cHJlc3Npb24iPklOVEVHRVJfTUlOX1ZBTFVFIC0gMTwvd2FybmluZz47CisgICBpMSA9IDx3YXJuaW5nIGRlc2NyPSJOdW1lcmljIG92ZXJmbG93IGluIGV4cHJlc3Npb24iPklOVEVHRVJfTUlOX1ZBTFVFIC0gSU5URUdFUl9NQVhfVkFMVUU8L3dhcm5pbmc+OworICAgaTEgPSBJTlRFR0VSX01JTl9WQUxVRSArIElOVEVHRVJfTUFYX1ZBTFVFOworICAgaTEgPSAtIElOVEVHRVJfTUFYX1ZBTFVFOworICAgaTEgPSAtIC1JTlRFR0VSX01BWF9WQUxVRTsKKyAgIGkxID0gPHdhcm5pbmcgZGVzY3I9Ik51bWVyaWMgb3ZlcmZsb3cgaW4gZXhwcmVzc2lvbiI+SU5URUdFUl9NSU5fVkFMVUUgKiAtMTwvd2FybmluZz47CisgICBpMSA9IDx3YXJuaW5nIGRlc2NyPSJOdW1lcmljIG92ZXJmbG93IGluIGV4cHJlc3Npb24iPklOVEVHRVJfTUlOX1ZBTFVFICogMjwvd2FybmluZz47CisgICBpMSA9IDx3YXJuaW5nIGRlc2NyPSJOdW1lcmljIG92ZXJmbG93IGluIGV4cHJlc3Npb24iPklOVEVHRVJfTUFYX1ZBTFVFICogLTI8L3dhcm5pbmc+OworICAgaTEgPSBJTlRFR0VSX01BWF9WQUxVRSAqIC0xOworICAgaTEgPSA8d2FybmluZyBkZXNjcj0iTnVtZXJpYyBvdmVyZmxvdyBpbiBleHByZXNzaW9uIj4yIC8gMDwvd2FybmluZz47CisgICBpMSA9IDx3YXJuaW5nIGRlc2NyPSJOdW1lcmljIG92ZXJmbG93IGluIGV4cHJlc3Npb24iPklOVEVHRVJfTUlOX1ZBTFVFIC8gLTE8L3dhcm5pbmc+OworICAgU3lzdGVtLm91dC5wcmludGxuKGkxKTsKKworICAgbG9uZyBsMSA9IDx3YXJuaW5nIGRlc2NyPSJOdW1lcmljIG92ZXJmbG93IGluIGV4cHJlc3Npb24iPkxPTkdfTUFYX1ZBTFVFICsgMTwvd2FybmluZz47CisgICBsMSA9IDx3YXJuaW5nIGRlc2NyPSJOdW1lcmljIG92ZXJmbG93IGluIGV4cHJlc3Npb24iPkxPTkdfTUFYX1ZBTFVFIC0gMSArIDI8L3dhcm5pbmc+OworICAgbDEgPSA8d2FybmluZyBkZXNjcj0iTnVtZXJpYyBvdmVyZmxvdyBpbiBleHByZXNzaW9uIj5MT05HX01BWF9WQUxVRSAtIExPTkdfTUlOX1ZBTFVFPC93YXJuaW5nPjsKKyAgIGwxID0gPHdhcm5pbmcgZGVzY3I9Ik51bWVyaWMgb3ZlcmZsb3cgaW4gZXhwcmVzc2lvbiI+LUxPTkdfTUlOX1ZBTFVFPC93YXJuaW5nPjsKKyAgIGwxID0gPHdhcm5pbmcgZGVzY3I9Ik51bWVyaWMgb3ZlcmZsb3cgaW4gZXhwcmVzc2lvbiI+TE9OR19NSU5fVkFMVUUgLSAxPC93YXJuaW5nPjsKKyAgIGwxID0gPHdhcm5pbmcgZGVzY3I9Ik51bWVyaWMgb3ZlcmZsb3cgaW4gZXhwcmVzc2lvbiI+TE9OR19NSU5fVkFMVUUgLSBMT05HX01BWF9WQUxVRTwvd2FybmluZz47CisgICBsMSA9IExPTkdfTUlOX1ZBTFVFICsgTE9OR19NQVhfVkFMVUU7CisgICBsMSA9IC0gTE9OR19NQVhfVkFMVUU7CisgICBsMSA9IC0gLUxPTkdfTUFYX1ZBTFVFOworICAgbDEgPSA8d2FybmluZyBkZXNjcj0iTnVtZXJpYyBvdmVyZmxvdyBpbiBleHByZXNzaW9uIj4tSU5URUdFUl9NSU5fVkFMVUU8L3dhcm5pbmc+OworICAgbDEgPSAgLTFMICsgSU5URUdFUl9NSU5fVkFMVUU7CisgICBsMSA9IDx3YXJuaW5nIGRlc2NyPSJOdW1lcmljIG92ZXJmbG93IGluIGV4cHJlc3Npb24iPkxPTkdfTUlOX1ZBTFVFICogSU5URUdFUl9NSU5fVkFMVUU8L3dhcm5pbmc+OworICAgbDEgPSA8d2FybmluZyBkZXNjcj0iTnVtZXJpYyBvdmVyZmxvdyBpbiBleHByZXNzaW9uIj5MT05HX01JTl9WQUxVRSAqIC0xPC93YXJuaW5nPjsKKyAgIGwxID0gPHdhcm5pbmcgZGVzY3I9Ik51bWVyaWMgb3ZlcmZsb3cgaW4gZXhwcmVzc2lvbiI+TE9OR19NSU5fVkFMVUUgKiAyPC93YXJuaW5nPjsKKyAgIGwxID0gPHdhcm5pbmcgZGVzY3I9Ik51bWVyaWMgb3ZlcmZsb3cgaW4gZXhwcmVzc2lvbiI+TE9OR19NQVhfVkFMVUUgKiAtMjwvd2FybmluZz47CisgICBsMSA9IElOVEVHRVJfTUlOX1ZBTFVFICogLTFMOworICAgbDEgPSA8d2FybmluZyBkZXNjcj0iTnVtZXJpYyBvdmVyZmxvdyBpbiBleHByZXNzaW9uIj4yIC8gMEw8L3dhcm5pbmc+OworICAgbDEgPSA8d2FybmluZyBkZXNjcj0iTnVtZXJpYyBvdmVyZmxvdyBpbiBleHByZXNzaW9uIj4yICUgMEw8L3dhcm5pbmc+OworICAgbDEgPSA8d2FybmluZyBkZXNjcj0iTnVtZXJpYyBvdmVyZmxvdyBpbiBleHByZXNzaW9uIj5MT05HX01JTl9WQUxVRSAvIC0xPC93YXJuaW5nPjsKKworICAgbDEgPSA8d2FybmluZyBkZXNjcj0iTnVtZXJpYyBvdmVyZmxvdyBpbiBleHByZXNzaW9uIj4zMCAqIDI0ICogNjAgKiA2MCAqIDEwMDA8L3dhcm5pbmc+OyAKKyAgIGwxID0gPHdhcm5pbmcgZGVzY3I9Ik51bWVyaWMgb3ZlcmZsb3cgaW4gZXhwcmVzc2lvbiI+MzAwMDAwMDAgKiAyNDMyMzIzMjM8L3dhcm5pbmc+IAorICAgICAgICAqICg8d2FybmluZyBkZXNjcj0iTnVtZXJpYyBvdmVyZmxvdyBpbiBleHByZXNzaW9uIj5MT05HX01BWF9WQUxVRSArMzwvd2FybmluZz4pIC8gNTsgCisgICBTeXN0ZW0ub3V0LnByaW50bG4obDEpOworCisKKyAgIAorICAgfQorICAgCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgbG9uZyBNSUxMSVNfUEVSX0RBWSA9IDI0ICogMzYwMCAqIDEwMDA7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgbG9uZyBfN0RBWVMgPSA3ICogTUlMTElTX1BFUl9EQVk7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgbG9uZyBfMzBEQVlTID0gMzAgKiBNSUxMSVNfUEVSX0RBWTsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBsb25nIF8xMDAwREFZUyA9IDEwMDAgKiBNSUxMSVNfUEVSX0RBWTsKKyAgICB7CisgICAgICAgU3lzdGVtLm91dC5wcmludGxuKF8xMDAwREFZUyArIF8zMERBWVMgKyBfN0RBWVMpOworICAgIH0KKyAgICBpbnQgaWlpID0gPHdhcm5pbmcgZGVzY3I9Ik51bWVyaWMgb3ZlcmZsb3cgaW4gZXhwcmVzc2lvbiI+MiAlIDA8L3dhcm5pbmc+OworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nL09wZXJhdG9yQXBwbGljYWJpbGl0eS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvT3BlcmF0b3JBcHBsaWNhYmlsaXR5LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTYwYzQ0MAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nL09wZXJhdG9yQXBwbGljYWJpbGl0eS5qYXZhCkBAIC0wLDAgKzEsNzAgQEAKKy8vIG9wZXJhdG9ycyBhcHBsaWNhYmlsaXR5CitwdWJsaWMgY2xhc3MgYSB7CisKKyAgaW50IGYoaW50IGlrKSB7CisgICAgaWYgKDxlcnJvciBkZXNjcj0iT3BlcmF0b3IgJzwnIGNhbm5vdCBiZSBhcHBsaWVkIHRvICdpbnQnLCAnbnVsbCciPjEgPCBudWxsPC9lcnJvcj4pIHt9CisgICAgaWYgKDxlcnJvciBkZXNjcj0iT3BlcmF0b3IgJz09JyBjYW5ub3QgYmUgYXBwbGllZCB0byAnbnVsbCcsICdjaGFyJyI+bnVsbCA9PSAnYyc8L2Vycm9yPikge30KKyAgICBPYmplY3QgbyA9IG51bGw7CisgICAgaWYgKDxlcnJvciBkZXNjcj0iT3BlcmF0b3IgJz49JyBjYW5ub3QgYmUgYXBwbGllZCB0byAnZG91YmxlJywgJ2phdmEubGFuZy5PYmplY3QnIj4xLjIgPj0gbzwvZXJyb3I+KSB7fQorICAgIGlmICg8ZXJyb3IgZGVzY3I9Ik9wZXJhdG9yICchPScgY2Fubm90IGJlIGFwcGxpZWQgdG8gJ2xvbmcnLCAnamF2YS5sYW5nLlN0cmluZyciPjFMICE9ICJudWxsIjwvZXJyb3I+KSB7fQorICAgIGlmICg8ZXJyb3IgZGVzY3I9Ik9wZXJhdG9yICc9PScgY2Fubm90IGJlIGFwcGxpZWQgdG8gJ2Jvb2xlYW4nLCAnaW50JyI+KDE9PTIpID09IDM8L2Vycm9yPikge30KKworICAgIGludCBpID0gKDxlcnJvciBkZXNjcj0iT3BlcmF0b3IgJysnIGNhbm5vdCBiZSBhcHBsaWVkIHRvICdpbnQnLCAnbnVsbCciPjEgKyBudWxsPC9lcnJvcj4pOworICAgIGkgPSA8ZXJyb3IgZGVzY3I9Ik9wZXJhdG9yICcvJyBjYW5ub3QgYmUgYXBwbGllZCB0byAnamF2YS5sYW5nLk9iamVjdCcsICdqYXZhLmxhbmcuT2JqZWN0JyI+by9vPC9lcnJvcj47CisgICAgaSA9IDxlcnJvciBkZXNjcj0iT3BlcmF0b3IgJy0nIGNhbm5vdCBiZSBhcHBsaWVkIHRvICdudWxsJywgJ2RvdWJsZSciPm51bGwgLSAxLjI8L2Vycm9yPjsKKyAgICBpID0gPGVycm9yIGRlc2NyPSJPcGVyYXRvciAnJScgY2Fubm90IGJlIGFwcGxpZWQgdG8gJ2Jvb2xlYW4nLCAnaW50JyI+dHJ1ZSAlIDQ8L2Vycm9yPjsKKworICAgIGkgPSA8ZXJyb3IgZGVzY3I9Ik9wZXJhdG9yICc8PCcgY2Fubm90IGJlIGFwcGxpZWQgdG8gJ2ludCcsICdqYXZhLmxhbmcuT2JqZWN0JyI+aSA8PCBvPC9lcnJvcj47CisgICAgaSA9IDxlcnJvciBkZXNjcj0iT3BlcmF0b3IgJz4+JyBjYW5ub3QgYmUgYXBwbGllZCB0byAnYm9vbGVhbicsICdudWxsJyI+KGk9PTIpID4+IG51bGw8L2Vycm9yPjsKKyAgICBpID0gPGVycm9yIGRlc2NyPSJPcGVyYXRvciAnPj4+JyBjYW5ub3QgYmUgYXBwbGllZCB0byAnaW50JywgJ2RvdWJsZSciPmkgPj4+IDIuMjwvZXJyb3I+OworCisgICAgaSA9IDxlcnJvciBkZXNjcj0iT3BlcmF0b3IgJyYnIGNhbm5vdCBiZSBhcHBsaWVkIHRvICdpbnQnLCAnamF2YS5sYW5nLk9iamVjdCciPmkgJiBvPC9lcnJvcj47CisgICAgaSA9IDxlcnJvciBkZXNjcj0iT3BlcmF0b3IgJ3wnIGNhbm5vdCBiZSBhcHBsaWVkIHRvICdib29sZWFuJywgJ2RvdWJsZSciPnRydWUgfCAyLjE8L2Vycm9yPjsKKyAgICBpID0gPGVycm9yIGRlc2NyPSJPcGVyYXRvciAnJiYnIGNhbm5vdCBiZSBhcHBsaWVkIHRvICdpbnQnLCAnaW50JyI+MiAmJiAzPC9lcnJvcj47CisgICAgaSA9IDxlcnJvciBkZXNjcj0iT3BlcmF0b3IgJ3x8JyBjYW5ub3QgYmUgYXBwbGllZCB0byAnZG91YmxlJywgJ2xvbmcnIj4zLjggfHwgMkw8L2Vycm9yPjsKKyAgICBpID0gPGVycm9yIGRlc2NyPSJPcGVyYXRvciAnfHwnIGNhbm5vdCBiZSBhcHBsaWVkIHRvICdudWxsJywgJ2phdmEubGFuZy5PYmplY3QnIj5udWxsIHx8IG88L2Vycm9yPjsKKworICAgIDxlcnJvciBkZXNjcj0iT3BlcmF0b3IgJ3wnIGNhbm5vdCBiZSBhcHBsaWVkIHRvICdpbnQnLCAnbnVsbCciPmkgfD0gbnVsbDwvZXJyb3I+OworICAgIGRvdWJsZSBkID0gMDsKKyAgICA8ZXJyb3IgZGVzY3I9Ik9wZXJhdG9yICcmJyBjYW5ub3QgYmUgYXBwbGllZCB0byAnZG91YmxlJywgJ2ludCciPmQgJj0gaTwvZXJyb3I+OworICAgIDxlcnJvciBkZXNjcj0iT3BlcmF0b3IgJy8nIGNhbm5vdCBiZSBhcHBsaWVkIHRvICdqYXZhLmxhbmcuT2JqZWN0JywgJ2ludCciPm8gLz0gMzwvZXJyb3I+OworCisKKyAgICBTdHJpbmcgc3NzMiA9IDxlcnJvciBkZXNjcj0iT3BlcmF0b3IgJysnIGNhbm5vdCBiZSBhcHBsaWVkIHRvICdqYXZhLmxhbmcuU3RyaW5nJywgJ3ZvaWQnIj4iIiArIGZ2b2lkKCk8L2Vycm9yPjsKKyAgICBpbnQgc3NzMSA9IDxlcnJvciBkZXNjcj0iT3BlcmF0b3IgJysnIGNhbm5vdCBiZSBhcHBsaWVkIHRvICd2b2lkJywgJ2ludCciPmZ2b2lkKCkgKyAyPC9lcnJvcj47CisKKyAgICBpbnQgaWFbXSA9IG51bGw7CisgICAgYm9vbGVhbiBiID0gMT09MyB8fCAzIDwgJzQnICYmICgxPjMuNSkgPT0gKG8gPT0gbnVsbCkgfHwgZmFsc2UgfHwgKG8gPT0gImQiKTsKKyAgICBiID0gKDEgIT0gJ2YnKSA9PSAoMy40ID49ICd4JykgJiYgbyE9bnVsbCAmIChiIHwgKDM8NCkpOworICAgIGkgPSBpICYgMiB8IGk+PmkgXiAxNT4+PjQgJiB+aWFbaS0tICsgKGludClkXSAtIChpbnQpZDsKKworICAgIGIgfD0gKGkgJj0gNykgPT0gNSB8IChudWxsID09IG51bGwpOworICAgIGQgKj0gKGkgLT0gMykgLyAxMy40OworICAgIGlhWzBdKys7CisgICAgaWFbfmkgfCAoaSs9KCFiPzI6aSkpXSAtPSBpICsgMy4zOworICAgIAorICAgIC8vIE9iamVjdCArPSBTdHJpbmcKKyAgICA8ZXJyb3IgZGVzY3I9Ik9wZXJhdG9yICcrJyBjYW5ub3QgYmUgYXBwbGllZCB0byAnamF2YS5sYW5nLk9iamVjdCcsICdqYXZhLmxhbmcuU3RyaW5nJyI+byArPSBvICsgInN0cmluZyI8L2Vycm9yPjsKKworICAgIHJldHVybiAwOworICB9CisKKyAgdm9pZCBmdm9pZCgpIHt9CisKK30KKworY2xhc3MgVGVzdAoreworICAgcHVibGljIHZvaWQgdGVzdChUZXN0QiBhKQorICAgeworICAgICBpZihhID09IHRoaXMpCisgICAgIHsKKyAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oImEgaXMgZXF1YWxzIHRvIHRoaXMiKTsKKyAgICAgfQorICAgfQorCisgICBwdWJsaWMgc3RhdGljIGludGVyZmFjZSBUZXN0QgorICAgeworICAgICBwdWJsaWMgdm9pZCBibGEoKTsKKyAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nL092ZXJyaWRkZW5NZXRob2RJc0ZpbmFsLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9PdmVycmlkZGVuTWV0aG9kSXNGaW5hbC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIxYzNkZDQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9PdmVycmlkZGVuTWV0aG9kSXNGaW5hbC5qYXZhCkBAIC0wLDAgKzEsMTQgQEAKKworaW50ZXJmYWNlIENvbmZsaWN0V2l0aE9iamVjdCB7CisgICAgPGVycm9yIGRlc2NyPSInbm90aWZ5KCknIGNhbm5vdCBvdmVycmlkZSAnbm90aWZ5KCknIGluICdqYXZhLmxhbmcuT2JqZWN0Jzsgb3ZlcnJpZGRlbiBtZXRob2QgaXMgZmluYWwiPnB1YmxpYyB2b2lkIG5vdGlmeSgpPC9lcnJvcj47Cit9CisKKy8vLS1vdmVycmlkZSBmaW5hbC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK2NsYXNzIGJhc2UgeworIGZpbmFsIHZvaWQgZigpIHt9Cit9CitjbGFzcyBkZXJpdmVkIGV4dGVuZHMgYmFzZSB7CisKKyA8ZXJyb3IgZGVzY3I9IidmKCknIGNhbm5vdCBvdmVycmlkZSAnZigpJyBpbiAnYmFzZSc7IG92ZXJyaWRkZW4gbWV0aG9kIGlzIGZpbmFsIj52b2lkIGYoKTwvZXJyb3I+IHt9CisgICAgICAgICAgICAgICAKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nL092ZXJyaWRlQ29uZmxpY3RzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9PdmVycmlkZUNvbmZsaWN0cy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVmN2NjNzUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9PdmVycmlkZUNvbmZsaWN0cy5qYXZhCkBAIC0wLDAgKzEsMTA2IEBACisvLyB0aHJvd3MgY29uZmxpY3RzIG9uIG92ZXJyaWRpbmcvIG92ZXJyaWRlIGZpbmFsCitpbXBvcnQgamF2YS5pby4qOworaW1wb3J0IGphdmEubmV0Lio7CitwdWJsaWMgY2xhc3MgYSBleHRlbmRzIGMzIHsKKyBwdWJsaWMgdm9pZCBmKCkgdGhyb3dzIDxlcnJvciBkZXNjcj0iJ2YoKScgaW4gJ2EnIGNsYXNoZXMgd2l0aCAnZigpJyBpbiAnYzMnOyBvdmVycmlkZGVuIG1ldGhvZCBkb2VzIG5vdCB0aHJvdyAnamF2YS5sYW5nLkV4Y2VwdGlvbiciPkV4Y2VwdGlvbjwvZXJyb3I+IHsKKyB9Cit9CisKK2ludGVyZmFjZSBpIHsKKyB2b2lkIGYoKSB0aHJvd3MgamF2YS5uZXQuU29ja2V0RXhjZXB0aW9uOworfQorY2xhc3MgYzIgaW1wbGVtZW50cyBpIHsKKyBwdWJsaWMgdm9pZCBmKCkgdGhyb3dzIDxlcnJvciBkZXNjcj0iJ2YoKScgaW4gJ2MyJyBjbGFzaGVzIHdpdGggJ2YoKScgaW4gJ2knOyBvdmVycmlkZGVuIG1ldGhvZCBkb2VzIG5vdCB0aHJvdyAnamF2YS5pby5JT0V4Y2VwdGlvbiciPmphdmEuaW8uSU9FeGNlcHRpb248L2Vycm9yPiB7fQorfQorY2xhc3MgYzJpIGltcGxlbWVudHMgaSB7CisgcHVibGljIHZvaWQgZigpIHRocm93cyA8ZXJyb3IgZGVzY3I9IidmKCknIGluICdjMmknIGNsYXNoZXMgd2l0aCAnZigpJyBpbiAnaSc7IG92ZXJyaWRkZW4gbWV0aG9kIGRvZXMgbm90IHRocm93ICdqYXZhLmxhbmcuRXhjZXB0aW9uJyI+RXhjZXB0aW9uPC9lcnJvcj4ge30KK30KKworY2xhc3MgYzMgaW1wbGVtZW50cyBpIHsKKyBwdWJsaWMgdm9pZCBmKCkgdGhyb3dzIGphdmEubmV0LkNvbm5lY3RFeGNlcHRpb24ge30KK30KKworY2xhc3MgYzQgZXh0ZW5kcyBjMyB7CisgcHVibGljIHZvaWQgZigpIHRocm93cyBqYXZhLm5ldC5Db25uZWN0RXhjZXB0aW9uIHt9Cit9CisKK2ludGVyZmFjZSBNZXRob2RzRnJvbU9iamVjdCB7CisgIE9iamVjdCBjbG9uZSgpOworfQoraW50ZXJmYWNlIGltIGV4dGVuZHMgTWV0aG9kc0Zyb21PYmplY3QgeworfQorPGVycm9yIGRlc2NyPSInY2xvbmUoKScgaW4gJ2phdmEubGFuZy5PYmplY3QnIGNsYXNoZXMgd2l0aCAnY2xvbmUoKScgaW4gJ01ldGhvZHNGcm9tT2JqZWN0Jzsgb3ZlcnJpZGRlbiBtZXRob2QgZG9lcyBub3QgdGhyb3cgJ2phdmEubGFuZy5DbG9uZU5vdFN1cHBvcnRlZEV4Y2VwdGlvbiciPmNsYXNzIGNtIGltcGxlbWVudHMgTWV0aG9kc0Zyb21PYmplY3Q8L2Vycm9yPiB7Cit9CisKKy8vIHNpYmxpbmcgaW5oZXJpdGFuY2UKK2NsYXNzIGM1IHsgcHVibGljIHZvaWQgZigpIHRocm93cyBFeGNlcHRpb24ge30gfQoraW50ZXJmYWNlIGk1IHsgdm9pZCBmKCk7IH0KKzxlcnJvciBkZXNjcj0iJ2YoKScgaW4gJ2M1JyBjbGFzaGVzIHdpdGggJ2YoKScgaW4gJ2k1Jzsgb3ZlcnJpZGRlbiBtZXRob2QgZG9lcyBub3QgdGhyb3cgJ2phdmEubGFuZy5FeGNlcHRpb24nIj5jbGFzcyBjNiBleHRlbmRzIGM1IGltcGxlbWVudHMgaTU8L2Vycm9yPiB7Cit9CisKKy8vIG92ZXJyaWRpbmcgbWV0aG9kIGRvZXMgbm90IHRocm93IGV4Y2VwdGlvbiwgaXRzIE9LCitjbGFzcyBjIHsKKyAgICBwcm90ZWN0ZWQgT2JqZWN0IGNsb25lKCkgeworICAgICAgICByZXR1cm4gbnVsbDsKKyAgICB9Cit9CitpbnRlcmZhY2UgaTYgeworCit9CitjbGFzcyBiIGV4dGVuZHMgYyBpbXBsZW1lbnRzIGk2IHsKKworfQorCisKKy8vLS0tLS0tLS0tLS0tLS0gbWV0aG9kcyB3aXRoIHNhbWUgc2lnbmF0dXJlCitpbnRlcmZhY2UgQUNvbnRyYWN0Cit7CisgIHZvaWQgaW52b2tlICgpIHRocm93cyBFeGNlcHRpb247Cit9CisKK2NsYXNzIEEgaW1wbGVtZW50cyBBQ29udHJhY3QKK3sKKyAgcHVibGljIHZvaWQgaW52b2tlICgpIHRocm93cyBFeGNlcHRpb24geyB9Cit9CisKK2ludGVyZmFjZSBCQ29udHJhY3QKK3sKKyAgdm9pZCBpbnZva2UgKCk7Cit9CisKK2NsYXNzIEIgZXh0ZW5kcyBBIGltcGxlbWVudHMgQkNvbnRyYWN0Cit7CisgIHB1YmxpYyB2b2lkIGludm9rZSAoKSB7IH0KK30KKworY2xhc3MgQyBleHRlbmRzIEIgCit7Cit9CisKKworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworY2xhc3MgQnVnIGV4dGVuZHMgQWJzdHJDb2xsIGltcGxlbWVudHMgamF2YS5pby5TZXJpYWxpemFibGUgeworfQoraW50ZXJmYWNlIENvbGwgIHsKKyAgICBib29sZWFuIGVxdWFscyhPYmplY3QgZik7Cit9CitjbGFzcyBBYnN0ckNvbGwgaW1wbGVtZW50cyBDb2xsIHt9CisKK2ludGVyZmFjZSBJbnRlcmZhY2VPdmVycmlkZXNPYmplY3QgeworICAgIE9iamVjdCBjbG9uZSgpIHRocm93cyBqYXZhLmlvLklPRXhjZXB0aW9uOworfQorCisvLy8vLy8vLy8vLy9tdWx0aXBsZSBpbnRlcmZhY2UgaW5oZXJpdGFuY2UvLy8vLy8vCitjbGFzcyBzcWxFeGNlcHQgZXh0ZW5kcyBFeGNlcHRpb24ge30KK2NsYXNzIHNxbEluaGVyaXRvckV4Y2VwdGlvbiBleHRlbmRzIHNxbEV4Y2VwdCB7fQorY2xhc3MgdGltZW91dEV4IGV4dGVuZHMgRXhjZXB0aW9ue30KKworaW50ZXJmYWNlIEFNdWx0aXBsZSB7CisgIHZvaWQgbSgpIHRocm93cyBqYXZhLmlvLklPRXhjZXB0aW9uLCBzcWxJbmhlcml0b3JFeGNlcHRpb247Cit9CisKK2ludGVyZmFjZSBCTXVsdGlwbGUgeworICB2b2lkIG0oKSB0aHJvd3MgamF2YS5pby5FT0ZFeGNlcHRpb24sIHNxbEV4Y2VwdCwgdGltZW91dEV4OworfQorCitpbnRlcmZhY2UgRE11bHRpcGxlIGV4dGVuZHMgQU11bHRpcGxlLCBCTXVsdGlwbGUge30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9RdWFsaWZpZWROZXcuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nL1F1YWxpZmllZE5ldy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI4MzJiOTEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9RdWFsaWZpZWROZXcuamF2YQpAQCAtMCwwICsxLDMyIEBACisvLyBRdWFsaWZpZWQgbmV3IG9mIHN0YXRpYyBjbGFzcworCitjbGFzcyBBIHsKKyAgICBiIGI7CisgICAgQSgpIHsKKyAgICAgIDxlcnJvciBkZXNjcj0iUXVhbGlmaWVkIG5ldyBvZiBzdGF0aWMgY2xhc3MiPmIubmV3IGMoKTwvZXJyb3I+OworICAgICAgYi5uZXcgaW5uZXIoKTsKKyAgICB9CisgICAgY2xhc3MgaW5uZXIge30KKworICAgIHZvaWQgZigpIHsKKyAgICAgIGNoYXJbXSBjID0gPGVycm9yIGRlc2NyPSJJbnZhbGlkIHF1YWxpZmllZCBuZXciPmIubmV3IGNoYXJbMF08L2Vycm9yPjsKKyAgICB9Cit9CisKK2NsYXNzIGIgZXh0ZW5kcyBBIHsKKyAgc3RhdGljIGNsYXNzIGMge30KK30KKworCitjbGFzcyBXaXRoQW5vbnltIHsKKyAgaW50ZXJmYWNlIEkgeworICB9CisgIGNsYXNzIElubmVye30KK30KKworY2xhc3MgV2l0aEFub255bUluaGVyaXRvciBleHRlbmRzIFdpdGhBbm9ueW0geworICB7CisgICAgPGVycm9yIGRlc2NyPSJBbm9ueW1vdXMgY2xhc3MgaW1wbGVtZW50cyBpbnRlcmZhY2U7IGNhbm5vdCBoYXZlIHF1YWxpZmllciBmb3IgbmV3Ij50aGlzLm5ldyBJKCkge308L2Vycm9yPjsKKyAgICB0aGlzLm5ldyBJbm5lcigpIHt9OworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvUXVhbGlmaWVkU3VwZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nL1F1YWxpZmllZFN1cGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjRjMzQ0NAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nL1F1YWxpZmllZFN1cGVyLmphdmEKQEAgLTAsMCArMSw0OCBAQAorY2xhc3MgT3V0ZXIgeworICAgICAgICAgICAgY2xhc3MgSW5uZXIxIGV4dGVuZHMgT3V0ZXIgeworICAgICAgICAgICAgICBJbm5lcjEoKSB7fQorICAgICAgICAgICAgICBJbm5lcjEoT3V0ZXIgbykge30KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgY2xhc3MgSW5uZXIyIGV4dGVuZHMgSW5uZXIxIHsKKyAgICAgICAgICAgICAgICBwdWJsaWMgSW5uZXIyKE9iamVjdCBvKSB7CisgICAgICAgICAgICAgICAgICAgIDxlcnJvciBkZXNjcj0iSW5jb21wYXRpYmxlIHR5cGVzLiBGb3VuZDogJ2phdmEubGFuZy5PYmplY3QnLCByZXF1aXJlZDogJ091dGVyJyI+bzwvZXJyb3I+LnN1cGVyKCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHB1YmxpYyBJbm5lcjIoaW50IG8pIHsKKyAgICAgICAgICAgICAgICAgIE91dGVyLnRoaXMuc3VwZXIoKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcHVibGljIElubmVyMihPdXRlciBvKSB7CisgICAgICAgICAgICAgICAgICBvLnN1cGVyKE91dGVyLnRoaXMpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBwdWJsaWMgSW5uZXIyKE91dGVyIG8sIGludCBwYXIpIHsKKyAgICAgICAgICAgICAgICAgIG8uc3VwZXIoPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVmZXJlbmNlICd0aGlzJyBiZWZvcmUgc3VwZXJ0eXBlIGNvbnN0cnVjdG9yIGhhcyBiZWVuIGNhbGxlZCI+dGhpczwvZXJyb3I+KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcHVibGljIElubmVyMihPdXRlciBvLCBPYmplY3QgcGFyKSB7CisgICAgICAgICAgICAgICAgICA8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZWZlcmVuY2UgJ3RoaXMnIGJlZm9yZSBzdXBlcnR5cGUgY29uc3RydWN0b3IgaGFzIGJlZW4gY2FsbGVkIj50aGlzPC9lcnJvcj4uc3VwZXIobyk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBjbGFzcyBCYWRJbm5lciBleHRlbmRzIElubmVyMSB7CisgICAgICAgICAgICAgIDxlcnJvciBkZXNjcj0iQ2Fubm90IHJlZmVyZW5jZSAnQmFkSW5uZXIudGhpcycgYmVmb3JlIHN1cGVydHlwZSBjb25zdHJ1Y3RvciBoYXMgYmVlbiBjYWxsZWQiPkJhZElubmVyKCk8L2Vycm9yPiB7fQorICAgICAgICAgICAgfQorICAgICAgICAgICAgPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVmZXJlbmNlICdCYWRJbm5lcjIudGhpcycgYmVmb3JlIHN1cGVydHlwZSBjb25zdHJ1Y3RvciBoYXMgYmVlbiBjYWxsZWQiPmNsYXNzIEJhZElubmVyMiBleHRlbmRzIElubmVyMTwvZXJyb3I+IHsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgY2xhc3MgcyB7CisgICAgICAgICAgICAgICAgdm9pZCBmKE9iamVjdCBvKSB7CisgICAgICAgICAgICAgICAgICAgIG5ldyBzKCk7CisgICAgICAgICAgICAgICAgICAgIE91dGVyLnRoaXMubmV3IHMoKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9Cit9CisKK2NsYXNzIE91dGVyMiB7CisgIGNsYXNzIElubmVyIHt9Cit9CitjbGFzcyBFeHQgZXh0ZW5kcyBPdXRlcjIgeworICAgY2xhc3MgRXh0SW5uZXIgZXh0ZW5kcyBJbm5lciB7CisgICAgICAgRXh0SW5uZXIoKSB7CisgICAgICAgICBzdXBlcigpOworICAgICAgIH0KKyAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9RdWFsaWZpZWRUaGlzU3VwZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nL1F1YWxpZmllZFRoaXNTdXBlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNiYTA4Y2QKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9RdWFsaWZpZWRUaGlzU3VwZXIuamF2YQpAQCAtMCwwICsxLDE3IEBACitjbGFzcyBZIHsKKyAgICBpbnQgc2l6ZSA9IDQ7Cit9CisKK2NsYXNzIFogZXh0ZW5kcyBZIHsKKyAgICBjbGFzcyBJIHsKKyAgICAgICAgdm9pZCBmb28oKSB7CisgICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJzaXplID0gIiArIDxlcnJvciBkZXNjcj0iJ1knIGlzIG5vdCBhbiBlbmNsb3NpbmcgY2xhc3MiPlkudGhpczwvZXJyb3I+LnNpemUpOyAvLyBpbGxlZ2FsIGNvbnN0cnVjdAorICAgICAgICB9CisgICAgfQorfQorCitjbGFzcyBSIHsKKyAgICBwdWJsaWMgdm9pZCBzbXUoKSB7CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbig8ZXJyb3IgZGVzY3I9IidaJyBpcyBub3QgYW4gZW5jbG9zaW5nIGNsYXNzIj5aLnN1cGVyPC9lcnJvcj4udG9TdHJpbmcoKSk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvUXVhbGlmaWVyQmVmb3JlQ2xhc3NOYW1lLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9RdWFsaWZpZXJCZWZvcmVDbGFzc05hbWUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZjgxMDQ0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvUXVhbGlmaWVyQmVmb3JlQ2xhc3NOYW1lLmphdmEKQEAgLTAsMCArMSwyMSBAQAorY2xhc3MgRSB7CisgIGNsYXNzIE91dGVyIHsKKyAgICBjbGFzcyBTIHsKKyAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFNTID0gMDsKKyAgICB9CisgIH0KKworICBPdXRlciBmKCkgeworICAgIGludCBzID0gPGVycm9yIGRlc2NyPSJFeHBlY3RlZCBjbGFzcyBvciBwYWNrYWdlIj5mKCk8L2Vycm9yPi5TLlNTOworICAgIGludCBzMSA9IDxlcnJvciBkZXNjcj0iRXhwZWN0ZWQgY2xhc3Mgb3IgcGFja2FnZSI+dGhpczwvZXJyb3I+Lk91dGVyLlMuU1M7CisgICAgaW50IHMyID0gT3V0ZXIuUy5TUzsKKyAgICByZXR1cm4gbnVsbDsKKyAgfQorCisgIGNsYXNzIG9wb3BvIHsKKyAgICBwdWJsaWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKKyAgICAgIFN0cmluZyBqYXZhID0gImJsYSI7CisgICAgICBqYXZhLjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdsYW5nJyI+bGFuZzwvZXJyb3I+LlN0cmluZy52YWx1ZU9mKCIiKTsKKyAgICB9CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nL1JlY3Vyc2l2ZUNvbnN0cnVjdG9ySW52b2NhdGlvbi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvUmVjdXJzaXZlQ29uc3RydWN0b3JJbnZvY2F0aW9uLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTYwNWRhMwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nL1JlY3Vyc2l2ZUNvbnN0cnVjdG9ySW52b2NhdGlvbi5qYXZhCkBAIC0wLDAgKzEsMzcgQEAKKy8vIHJlY3VzcnNpdmUgY3RyIGNhbGwKKworCitjbGFzcyBzICB7CisgICAgPGVycm9yIGRlc2NyPSJSZWN1cnNpdmUgY29uc3RydWN0b3IgaW52b2NhdGlvbiI+cygpPC9lcnJvcj4geworICAgICAgICB0aGlzKCk7CisgICAgfQorCisgICAgPGVycm9yIGRlc2NyPSJSZWN1cnNpdmUgY29uc3RydWN0b3IgaW52b2NhdGlvbiI+cyhpbnQgaSk8L2Vycm9yPiB7CisgICAgICAgIHRoaXMoMik7CisgICAgfQorfQorCitjbGFzcyBjIHsKKyAgYygpIHsKKyAgICB0aGlzKDIpOworICB9CisKKyAgPGVycm9yIGRlc2NyPSJSZWN1cnNpdmUgY29uc3RydWN0b3IgaW52b2NhdGlvbiI+YyhpbnQgaSk8L2Vycm9yPiB7CisgICAgdGhpcygxLDEpOworICB9CisgIDxlcnJvciBkZXNjcj0iUmVjdXJzaXZlIGNvbnN0cnVjdG9yIGludm9jYXRpb24iPmMoaW50IGksIGludCBrKTwvZXJyb3I+IHsKKyAgICB0aGlzKDEpOworICB9Cit9CisKK2NsYXNzIGN2IHsKKyAgY3YoKSB7CisgICAgdGhpcygxKTsKKyAgfQorCisgIGN2KGludCBpKSB7CisgICAgdGhpcygxLDIpOworICB9CisKKyAgY3YoaW50IGksaW50IGopIHt9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvUmVmZXJlbmNlTWVtYmVyQmVmb3JlQ3RyQ2FsbGVkLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9SZWZlcmVuY2VNZW1iZXJCZWZvcmVDdHJDYWxsZWQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZWM5MWJjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvUmVmZXJlbmNlTWVtYmVyQmVmb3JlQ3RyQ2FsbGVkLmphdmEKQEAgLTAsMCArMSwxNzQgQEAKKy8vIHJlZmVyZW5jZSBiZWZvcmUgY3RyIGNhbGxlZAoraW1wb3J0IGphdmEuaW8uKjsKK2ltcG9ydCBqYXZhLm5ldC4qOworCitjbGFzcyBBIHsKKyBBKGludCBpKSB7fQorIEEoQSBhKSB7fQorIGludCBmKCkgeyByZXR1cm4gMDsgfQorIGludCBmaTsKK30gCQorCitjbGFzcyBCIGV4dGVuZHMgQSB7CisgIGludCBiaTsKKyAgQihpbnQgaCkgeworICAgIHN1cGVyKDxlcnJvciBkZXNjcj0iQ2Fubm90IHJlZmVyZW5jZSAnQi5iaScgYmVmb3JlIHN1cGVydHlwZSBjb25zdHJ1Y3RvciBoYXMgYmVlbiBjYWxsZWQiPmJpPC9lcnJvcj4pOworICB9CisgIEIoKSB7CisgICAgdGhpcyg8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZWZlcmVuY2UgJ0IuYmknIGJlZm9yZSBzdXBlcnR5cGUgY29uc3RydWN0b3IgaGFzIGJlZW4gY2FsbGVkIj5iaTwvZXJyb3I+KTsKKyAgfQorCisgIEIoU3RyaW5nIHMpIHsKKyAgICBzdXBlcig8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZWZlcmVuY2UgJ0IuZGInIGJlZm9yZSBzdXBlcnR5cGUgY29uc3RydWN0b3IgaGFzIGJlZW4gY2FsbGVkIj5kYjwvZXJyb3I+KDEpICk7CisgIH0KKworICBCKGludCBpLCBpbnQgaikgeworICAgIHN1cGVyKDxlcnJvciBkZXNjcj0iQ2Fubm90IHJlZmVyZW5jZSAnQS5mJyBiZWZvcmUgc3VwZXJ0eXBlIGNvbnN0cnVjdG9yIGhhcyBiZWVuIGNhbGxlZCI+ZjwvZXJyb3I+KCkpOworICB9CisgIEIoaW50IGksIGludCBqLCBpbnQgaykgeworICAgIHN1cGVyKDxlcnJvciBkZXNjcj0iQ2Fubm90IHJlZmVyZW5jZSAnQS5mJyBiZWZvcmUgc3VwZXJ0eXBlIGNvbnN0cnVjdG9yIGhhcyBiZWVuIGNhbGxlZCI+c3VwZXIuZjwvZXJyb3I+KCkpOworICB9CisKKyAgQihTdHJpbmcgcywgaW50IGkpIHsKKyAgICBzdXBlcihzLmxlbmd0aCgpKTsKKyAgfQorCisgIEIoaW50IHMsIGludCBpLCBjaGFyIGopIHsKKyAgICBzdXBlcig8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZWZlcmVuY2UgJ0EuZmknIGJlZm9yZSBzdXBlcnR5cGUgY29uc3RydWN0b3IgaGFzIGJlZW4gY2FsbGVkIj5zdXBlci5maTwvZXJyb3I+ICk7CisgIH0KKworICBCKGRvdWJsZSBkKSB7CisgICAgc3VwZXIobmV3IDxlcnJvciBkZXNjcj0iQ2Fubm90IHJlZmVyZW5jZSAnSW5uZXInIGJlZm9yZSBzdXBlcnR5cGUgY29uc3RydWN0b3IgaGFzIGJlZW4gY2FsbGVkIj5Jbm5lcjwvZXJyb3I+KCkgKTsKKyAgfQorICBjbGFzcyBJbm5lciBleHRlbmRzIEEgeworICAgIElubmVyKCl7CisgICAgICBzdXBlcigxKTsKKyAgICB9CisgIH0KKworICBpbnQgZGIoaW50IGopIHsgCisgICByZXR1cm4gMDsKKyAgfQorfQorCisKK2NsYXNzIEVuYyB7CisgIGludCBpZW5jOworICBjbGFzcyBCYiBleHRlbmRzIEEgeworICAgIGludCBpYmI7CisgICAgQmIoKSB7IHN1cGVyKGllbmMpOyB9CisgICAgQmIoaW50IGkpIHsKKyAgICAgIHN1cGVyKGkpOworICAgIH0KKworICAgIEJiKGludCBpLCBpbnQgaikgeworICAgICAgc3VwZXIoPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVmZXJlbmNlICdCYi50aGlzJyBiZWZvcmUgc3VwZXJ0eXBlIGNvbnN0cnVjdG9yIGhhcyBiZWVuIGNhbGxlZCI+RW5jLkJiLnRoaXM8L2Vycm9yPi5pYmIgKTsKKyAgICB9CisKKyAgICBCYihpbnQgaSwgU3RyaW5nIHMpIHsKKyAgICAgIHN1cGVyKEVuYy50aGlzLmllbmMpOworICAgIH0KKworICAgIEJiKGludCBpLCBjaGFyIGopIHsKKyAgICAgIHN1cGVyKDxlcnJvciBkZXNjcj0iQ2Fubm90IHJlZmVyZW5jZSAndGhpcycgYmVmb3JlIHN1cGVydHlwZSBjb25zdHJ1Y3RvciBoYXMgYmVlbiBjYWxsZWQiPnRoaXM8L2Vycm9yPiApOworICAgIH0KKyAgfQorCisgIEVuYygpIHsKKyAgICB0aGlzKG5ldyA8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZWZlcmVuY2UgJ0JiJyBiZWZvcmUgc3VwZXJ0eXBlIGNvbnN0cnVjdG9yIGhhcyBiZWVuIGNhbGxlZCI+QmI8L2Vycm9yPigpKTsKKyAgfQorICBFbmMoQmIgYikge30KK30KKworLy8gc3RhdGljIGFyZSBPSworY2xhc3MgQzIgZXh0ZW5kcyBBIHsKKyAgc3RhdGljIGZpbmFsIGludCBmaSA9IDQ7CisgIEMyKCkgeworICAgIHN1cGVyKGZpKTsKKyAgfQorICBDMihpbnQgaSkgeworICAgIHN1cGVyKHNmKCkpOworICB9CisgIHN0YXRpYyBpbnQgc2YoKSB7IHJldHVybiAwOyB9CisKKyAgQzIoaW50IGksIGludCBqKSB7CisgICAgc3VwZXIobmV3IFNjKCkuaSk7CisgIH0KKyAgc3RhdGljIGNsYXNzIFNjIHsKKyAgICBpbnQgaTsKKyAgfQorfQorCitpbnRlcmZhY2UgQ2FsbGJhY2sgeworICAgIHZvaWQgY2FsbCgpOworfQorCitjbGFzcyBCYXNlIHsKKyAgICBDYWxsYmFjayBjYWxsYmFjazsKKworICAgIHB1YmxpYyBCYXNlKGZpbmFsIENhbGxiYWNrIGNhbGxiYWNrKSB7CisgICAgICAgIHRoaXMuY2FsbGJhY2sgPSBjYWxsYmFjazsKKyAgICB9Cit9CisKK2NsYXNzIFllbGxpbkJ1ZyBleHRlbmRzIEJhc2UgeworICAgIHB1YmxpYyBZZWxsaW5CdWcoKSB7CisgICAgICAgIHN1cGVyKG5ldyBDYWxsYmFjaygpIHsKKworICAgICAgICAgICAgcHVibGljIHZvaWQgY2FsbCgpIHsKKyAgICAgICAgICAgICAgIDxlcnJvciBkZXNjcj0iQ2Fubm90IHJlZmVyZW5jZSAnWWVsbGluQnVnLnRoaXMnIGJlZm9yZSBzdXBlcnR5cGUgY29uc3RydWN0b3IgaGFzIGJlZW4gY2FsbGVkIj5ZZWxsaW5CdWcudGhpczwvZXJyb3I+LmYoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSk7CisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIGYoKSB7fQorCisgICAgeworICAgICAgICBuZXcgQ2FsbGJhY2soKSB7CisKKyAgICAgICAgICAgIHB1YmxpYyB2b2lkIGNhbGwoKSB7CisgICAgICAgICAgICAgICAgWWVsbGluQnVnLnRoaXMuZigpOworICAgICAgICAgICAgfQorICAgICAgICB9OworICAgIH0KK30KKworY2xhc3MgT3V0ZXIgeworICBjbGFzcyBJbm5lciBleHRlbmRzIE91dGVye30KKyAgY2xhc3MgVXNlSXQgZXh0ZW5kcyBJbm5lcnsKKyAgICBPdXRlciBvOworICAgIFVzZUl0KCkgeworICAgICAgPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVmZXJlbmNlICdVc2VJdC5vJyBiZWZvcmUgc3VwZXJ0eXBlIGNvbnN0cnVjdG9yIGhhcyBiZWVuIGNhbGxlZCI+bzwvZXJyb3I+LnN1cGVyKCk7CisgICAgfQorCisgICAgT3V0ZXIgZ2V0bygpIHsKKyAgICAgcmV0dXJuIG51bGw7CisgICAgfQorICAgIFVzZUl0KGludCB4KSB7CisgICAgICA8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZWZlcmVuY2UgJ1VzZUl0LmdldG8nIGJlZm9yZSBzdXBlcnR5cGUgY29uc3RydWN0b3IgaGFzIGJlZW4gY2FsbGVkIj5nZXRvPC9lcnJvcj4oKS5zdXBlcigpOworICAgIH0KKyAgICBVc2VJdChPdXRlciB4KSB7CisgICAgICA8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZWZlcmVuY2UgJ3RoaXMnIGJlZm9yZSBzdXBlcnR5cGUgY29uc3RydWN0b3IgaGFzIGJlZW4gY2FsbGVkIj50aGlzPC9lcnJvcj4uc3VwZXIoKTsKKyAgICB9CisgIH0KK30KKworY2xhc3MgV2l0aEFub255bW91cyB7CisgIHN0YXRpYyBjbGFzcyBTdXBlckNsYXNzIHsKKyAgICAgIHB1YmxpYyB2b2lkIGZvbygpIHt9CisgIH0gCisgIGNsYXNzIENoaWxkQ2xhc3MgZXh0ZW5kcyBTdXBlckNsYXNzIHsKKyAgCisgICAgICBwdWJsaWMgQ2hpbGRDbGFzcyhmaW5hbCBTdHJpbmcgdGl0bGUpIHsKKyAgICAgICAgICB0aGlzKG5ldyBTdXBlckNsYXNzKCl7CisgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgIGZvbygpOworICAgICAgICAgICAgICB9CisgICAgICAgICAgfSk7CisgICAgICB9CisgIAorICAgICAgcHVibGljIENoaWxkQ2xhc3MoU3VwZXJDbGFzcyBjaGlsZCkgeworICAgICAgfQorICAKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nL1JlZ2V4cC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvUmVnZXhwLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjI2OWVlOAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nL1JlZ2V4cC5qYXZhCkBAIC0wLDAgKzEsNiBAQAorY2xhc3MgQyB7CisgIHZvaWQgZm9vKCkgeworICAgICIiLnJlcGxhY2VBbGwoIlxcUVxyXG5cXEUiLCAiIik7CisgIH0KKworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nL1JldHVybi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvUmV0dXJuLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjc1YzYwMgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nL1JldHVybi5qYXZhCkBAIC0wLDAgKzEsMjAgQEAKK2NsYXNzIHMgeworICB2b2lkIGYoKSB7CisgICAgPGVycm9yIGRlc2NyPSJDYW5ub3QgcmV0dXJuIGEgdmFsdWUgZnJvbSBhIG1ldGhvZCB3aXRoIHZvaWQgcmVzdWx0IHR5cGUiPnJldHVybiAwOzwvZXJyb3I+CisgIH0KKyAgdm9pZCBmMigpIHsKKyAgICByZXR1cm47CisgIH0KKworICBpbnQgZjMoKSB7CisgICAgPGVycm9yIGRlc2NyPSJNaXNzaW5nIHJldHVybiB2YWx1ZSI+cmV0dXJuOzwvZXJyb3I+CisgIH0KKyAgaW50IGY0KCkgeworICAgIHJldHVybiAwOworICB9CisKKyAgeworICAgIDxlcnJvciBkZXNjcj0iUmV0dXJuIG91dHNpZGUgbWV0aG9kIj5yZXR1cm47PC9lcnJvcj4KKworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvU2VyaWFsaXphYmxlU3R1ZmYuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nL1NlcmlhbGl6YWJsZVN0dWZmLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmViMjA5ZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nL1NlcmlhbGl6YWJsZVN0dWZmLmphdmEKQEAgLTAsMCArMSw2MiBAQAorLy8gU2VyaWFsaXphYmxlL2V4dGVybmFsaXphYmxlIHNwZWNpZmljCisKK2ltcG9ydCBqYXZhLmlvLio7CitjbGFzcyBhIGltcGxlbWVudHMgU2VyaWFsaXphYmxlIHsKKyAgIHByaXZhdGUgdm9pZCByZWFkT2JqZWN0KE9iamVjdElucHV0U3RyZWFtIHN0cmVhbSkKKyAgICAgICAgdGhyb3dzIElPRXhjZXB0aW9uLCBDbGFzc05vdEZvdW5kRXhjZXB0aW9uIHsKKyAgICAgICBpZiAoc3RyZWFtID09IG51bGwpIHRocm93IG5ldyBJT0V4Y2VwdGlvbigpOworICAgICAgIGlmIChzdHJlYW0gPT0gbnVsbCkgdGhyb3cgbmV3IENsYXNzTm90Rm91bmRFeGNlcHRpb24oKTsKKyAgIH0KKworICAgcHJpdmF0ZSB2b2lkIHJlYWRPYmplY3ROb0RhdGEoKSB0aHJvd3MgT2JqZWN0U3RyZWFtRXhjZXB0aW9uIHsKKyAgICAgICBpZiAodGhpcyA9PSBudWxsKSB0aHJvdyBuZXcgT2JqZWN0U3RyZWFtRXhjZXB0aW9uKCl7fTsKKyAgIH0KKworCisgICBwcml2YXRlIE9iamVjdCByZWFkUmVzb2x2ZSgpCisgICAgICAgICAgICAgICAgICAgIHRocm93cyBPYmplY3RTdHJlYW1FeGNlcHRpb24geworICAgICAgIGlmICh0aGlzID09IG51bGwpIHRocm93IG5ldyBPYmplY3RTdHJlYW1FeGNlcHRpb24oKXt9OworICAgICAgIHJldHVybiBudWxsOworICAgfQorCisgICBwcml2YXRlIE9iamVjdCB3cml0ZVJlcGxhY2UoKSB7IHJldHVybiBudWxsOyB9CisgICBwcml2YXRlIHZvaWQgd3JpdGVPYmplY3QoT2JqZWN0T3V0cHV0U3RyZWFtIHN0cmVhbSkgeyBpZiAoc3RyZWFtPT1udWxsKSByZXR1cm47IH0KKworICAKK30KKworY2xhc3MgYiAgeworICAgcHJpdmF0ZSB2b2lkIDx3YXJuaW5nIGRlc2NyPSJQcml2YXRlIG1ldGhvZCAncmVhZE9iamVjdChqYXZhLmlvLk9iamVjdElucHV0U3RyZWFtKScgaXMgbmV2ZXIgdXNlZCI+cmVhZE9iamVjdDwvd2FybmluZz4oT2JqZWN0SW5wdXRTdHJlYW0gc3RyZWFtKQorICAgICAgICB0aHJvd3MgSU9FeGNlcHRpb24sIENsYXNzTm90Rm91bmRFeGNlcHRpb24geworICAgICAgIGlmIChzdHJlYW0gPT0gbnVsbCkgdGhyb3cgbmV3IElPRXhjZXB0aW9uKCk7CisgICAgICAgaWYgKHN0cmVhbSA9PSBudWxsKSB0aHJvdyBuZXcgQ2xhc3NOb3RGb3VuZEV4Y2VwdGlvbigpOworICAgfQorCisgICBwcml2YXRlIHZvaWQgPHdhcm5pbmcgZGVzY3I9IlByaXZhdGUgbWV0aG9kICdyZWFkT2JqZWN0Tm9EYXRhKCknIGlzIG5ldmVyIHVzZWQiPnJlYWRPYmplY3ROb0RhdGE8L3dhcm5pbmc+KCkgdGhyb3dzIE9iamVjdFN0cmVhbUV4Y2VwdGlvbiB7CisgICAgICAgaWYgKHRoaXMgPT0gbnVsbCkgdGhyb3cgbmV3IE9iamVjdFN0cmVhbUV4Y2VwdGlvbigpe307CisgICB9CisKKworICAgcHJpdmF0ZSBPYmplY3QgPHdhcm5pbmcgZGVzY3I9IlByaXZhdGUgbWV0aG9kICdyZWFkUmVzb2x2ZSgpJyBpcyBuZXZlciB1c2VkIj5yZWFkUmVzb2x2ZTwvd2FybmluZz4oKQorICAgICAgICAgICAgICAgICAgICB0aHJvd3MgT2JqZWN0U3RyZWFtRXhjZXB0aW9uIHsKKyAgICAgICBpZiAodGhpcyA9PSBudWxsKSB0aHJvdyBuZXcgT2JqZWN0U3RyZWFtRXhjZXB0aW9uKCl7fTsKKyAgICAgICByZXR1cm4gbnVsbDsKKyAgIH0KKworICAgcHJpdmF0ZSBPYmplY3QgPHdhcm5pbmcgZGVzY3I9IlByaXZhdGUgbWV0aG9kICd3cml0ZVJlcGxhY2UoKScgaXMgbmV2ZXIgdXNlZCI+d3JpdGVSZXBsYWNlPC93YXJuaW5nPigpIHsgcmV0dXJuIG51bGw7IH0KKyAgIHByaXZhdGUgdm9pZCA8d2FybmluZyBkZXNjcj0iUHJpdmF0ZSBtZXRob2QgJ3dyaXRlT2JqZWN0KGphdmEuaW8uT2JqZWN0T3V0cHV0U3RyZWFtKScgaXMgbmV2ZXIgdXNlZCI+d3JpdGVPYmplY3Q8L3dhcm5pbmc+KE9iamVjdE91dHB1dFN0cmVhbSBzdHJlYW0pIHsgaWYgKHN0cmVhbT09bnVsbCkgcmV0dXJuOyB9Cit9CisKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKworYWJzdHJhY3QgY2xhc3MgYWJzdHJhY3ROb1NlcmlhbGl6YWJsZSB7CisgIHByb3RlY3RlZCBPYmplY3QgcmVhZFJlc29sdmUoKSB0aHJvd3MgT2JqZWN0U3RyZWFtRXhjZXB0aW9uIHsKKyAgICByZXR1cm4gbnVsbDsKKyAgfQorfQorCitjbGFzcyBzZXJpYWxpemFibGVTdWJjbGFzc09mQWJzdHJhY3ROb1NlcmlhbGl6YWJsZSBleHRlbmRzIGFic3RyYWN0Tm9TZXJpYWxpemFibGUgaW1wbGVtZW50cyBTZXJpYWxpemFibGUgeworICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CisgICAgU3lzdGVtLm91dC5wcmludGxuKG5ldyBzZXJpYWxpemFibGVTdWJjbGFzc09mQWJzdHJhY3ROb1NlcmlhbGl6YWJsZSgpLnRvU3RyaW5nKCkpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvU2lsbHlBc3NpZ25tZW50LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9TaWxseUFzc2lnbm1lbnQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MGJkYjRmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvU2lsbHlBc3NpZ25tZW50LmphdmEKQEAgLTAsMCArMSwzNyBAQAorLy8gc2lsbHkgYXNpZ25tZW50CitpbXBvcnQgamF2YXguc3dpbmcuKjsKKworY2xhc3MgYSB7CisgIGludCBmOworICBKUGFuZWwgZnBhbmVsOworCisgIHZvaWQgZihpbnQgaSkgeworCisgICA8d2FybmluZyBkZXNjcj0iVmFyaWFibGUgJ2knIGlzIGFzc2lnbmVkIHRvIGl0c2VsZiI+aSA9IGk8L3dhcm5pbmc+OworICB9CisKKyAgdm9pZCBmMigpIHsKKyAgICA8d2FybmluZyBkZXNjcj0iVmFyaWFibGUgJ2YnIGlzIGFzc2lnbmVkIHRvIGl0c2VsZiI+dGhpcy5mID0gZjwvd2FybmluZz47CisgICAgPHdhcm5pbmcgZGVzY3I9IlZhcmlhYmxlICdmJyBpcyBhc3NpZ25lZCB0byBpdHNlbGYiPmEudGhpcy5mID0gZjwvd2FybmluZz47CisgICAgPHdhcm5pbmcgZGVzY3I9IlZhcmlhYmxlICdmJyBpcyBhc3NpZ25lZCB0byBpdHNlbGYiPmYgPSB0aGlzLmY8L3dhcm5pbmc+OworICB9CisKKyAgdm9pZCBmMyhPYmplY3QgbykgeworICAgIGludCBpID0gMDsKKyAgICA8d2FybmluZyBkZXNjcj0iVmFyaWFibGUgJ2knIGlzIGFzc2lnbmVkIHRvIGl0c2VsZiI+aSA9IGk8L3dhcm5pbmc+OworICAgIDx3YXJuaW5nIGRlc2NyPSJWYXJpYWJsZSAnaScgaXMgYXNzaWduZWQgdG8gaXRzZWxmIj5pID0gKGludClpPC93YXJuaW5nPjsKKyAgICA8d2FybmluZyBkZXNjcj0iVmFyaWFibGUgJ28nIGlzIGFzc2lnbmVkIHRvIGl0c2VsZiI+byA9ICgoT2JqZWN0KShvKSk8L3dhcm5pbmc+OworICB9CisgIHZvaWQgZjQoKSB7CisgICAgZnBhbmVsLmdldFNpemUoKS5oZWlnaHQgPSB0aGlzLmZwYW5lbC5nZXRTaXplKCkuaGVpZ2h0OyAvLyBub3Qgc2lsbHkuIEFyZSB5b3Ugc3VyZSB5b3UgY2FuIGJldCBnZXRTaXplKCkgaGFzIG5vIHNpZGUgZWZmZWN0cz8gCisgIH0KKworICB2b2lkIGNmMSgpIHsKKyAgICBKUGFuZWwgYSA9IG5ldyBKUGFuZWwoKSwgYiA9IG5ldyBKUGFuZWwoKTsKKyAgICBhLmdldFNpemUoKS5oZWlnaHQgPSBiLmdldFNpemUoKS5oZWlnaHQ7IC8vIG5vdCBzaWxseSEKKyAgfQorCisgIHZvaWQgY2YyKGEgYWEpIHsKKyAgICBhYS5mID0gZjsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvU2luZ2xlVHlwZUltcG9ydENvbmZsaWN0cy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvU2luZ2xlVHlwZUltcG9ydENvbmZsaWN0cy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdhN2M5ZGYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9TaW5nbGVUeXBlSW1wb3J0Q29uZmxpY3RzLmphdmEKQEAgLTAsMCArMSwxMSBAQAorLy8gc2luZ2xlIGltcG9ydCBjb25mbGljdAoraW1wb3J0IGphdmEuc3FsLkRhdGU7Cis8ZXJyb3IgZGVzY3I9IidqYXZhLnNxbC5EYXRlJyBpcyBhbHJlYWR5IGRlZmluZWQgaW4gYSBzaW5nbGUtdHlwZSBpbXBvcnQiPmltcG9ydCBqYXZhLnV0aWwuRGF0ZTs8L2Vycm9yPgoraW1wb3J0IGphdmEuc3FsLio7CitpbXBvcnQgamF2YS51dGlsLio7CisvLyBtdWx0aXBsZSBzaW5nbGUtdHlwZSBpbXBvcnQgb2YgdGhlIHNhbWUgY2xhc3MgaXMgZmluZQoraW1wb3J0IGphdmEuaW8uSU9FeGNlcHRpb247CitpbXBvcnQgamF2YS5pby5JT0V4Y2VwdGlvbjsKKworCitwdWJsaWMgY2xhc3MgYyB7fQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvU3RhdGljSW5Jbm5lci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvU3RhdGljSW5Jbm5lci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE4YzgyZjMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9TdGF0aWNJbklubmVyLmphdmEKQEAgLTAsMCArMSwxMTQgQEAKKy8vc3RhdGljcyBpbiBpbm5lcgorcHVibGljIGNsYXNzIGEgeworCisgIHN0YXRpYyBmaW5hbCBOdW1iZXIgeCA9IG51bGw7CisgIHN0YXRpYyBmaW5hbCBpbnQgaXggPSB4PT0gbnVsbCA/IDQgOiAzOworCisgIGNsYXNzIGljIHsKKyAgICA8ZXJyb3IgZGVzY3I9IklubmVyIGNsYXNzZXMgY2Fubm90IGhhdmUgc3RhdGljIGRlY2xhcmF0aW9ucyI+c3RhdGljPC9lcnJvcj4KKyAgICAgIGludCBpOworCisgICAgPGVycm9yIGRlc2NyPSJJbm5lciBjbGFzc2VzIGNhbm5vdCBoYXZlIHN0YXRpYyBkZWNsYXJhdGlvbnMiPnN0YXRpYzwvZXJyb3I+CisgICAgICBmaW5hbCBpbnQgZjEgPSAzIDwgNCA/IChhLml4PT01ID8gIDEgOiAzKSAvIDQgKyAxOCA6IDA7CisKKyAgICA8ZXJyb3IgZGVzY3I9IklubmVyIGNsYXNzZXMgY2Fubm90IGhhdmUgc3RhdGljIGRlY2xhcmF0aW9ucyI+c3RhdGljPC9lcnJvcj4gCisgICAgICBmaW5hbCBpbnQgZjIgPSB4IGluc3RhbmNlb2YgSW50ZWdlciA/IDEgOiAwOworCisgICAgPGVycm9yIGRlc2NyPSJJbm5lciBjbGFzc2VzIGNhbm5vdCBoYXZlIHN0YXRpYyBkZWNsYXJhdGlvbnMiPnN0YXRpYzwvZXJyb3I+IAorICAgICAgY2xhc3MgYV9pY19jIHt9CisKKyAgICA8ZXJyb3IgZGVzY3I9IklubmVyIGNsYXNzZXMgY2Fubm90IGhhdmUgc3RhdGljIGRlY2xhcmF0aW9ucyI+aW50ZXJmYWNlIGFfaWNfaTwvZXJyb3I+IHt9CisgICAgPGVycm9yIGRlc2NyPSJJbm5lciBjbGFzc2VzIGNhbm5vdCBoYXZlIHN0YXRpYyBkZWNsYXJhdGlvbnMiPnN0YXRpYzwvZXJyb3I+ICBpbnRlcmZhY2UgYV9pY19pMiB7fQorCisgICAgPGVycm9yIGRlc2NyPSJJbm5lciBjbGFzc2VzIGNhbm5vdCBoYXZlIHN0YXRpYyBkZWNsYXJhdGlvbnMiPnN0YXRpYzwvZXJyb3I+IAorICAgICAgaW50IGFfaWNfbShTdHJpbmcgcykgeyByZXR1cm4gMDsgfQorCisgICAgLy8gc3RhdGljIGluaXRpYWxpemVyCisgICAgPGVycm9yIGRlc2NyPSJJbm5lciBjbGFzc2VzIGNhbm5vdCBoYXZlIHN0YXRpYyBkZWNsYXJhdGlvbnMiPnN0YXRpYzwvZXJyb3I+CisgICAge30KKyAgfQorCisKKyAgaW50ZXJmYWNlIGlpIHsKKyAgICBzdGF0aWMgaW50IGkgPSA5OworICAgIHZvaWQgZigpOworICAgIC8vIHNpbmNlIG5lc3RlZCBpbnRlcmZhY2UgaXMgaW1wbGljaXRseSBzdGF0aWM6CisgICAgc3RhdGljIGNsYXNzIGlpX2Mge30KKyAgfQorCisgIC8vIHN0YXRpYyBpbnNpZGUgY2xhc3MgaW5zaWRlIGNvZGUgYmxvY2sKKyAgdm9pZCBmKCkgeworICBjbGFzcyBpYzIgeworICAgIDxlcnJvciBkZXNjcj0iSW5uZXIgY2xhc3NlcyBjYW5ub3QgaGF2ZSBzdGF0aWMgZGVjbGFyYXRpb25zIj5zdGF0aWM8L2Vycm9yPgorICAgICAgaW50IGk7CisKKyAgICA8ZXJyb3IgZGVzY3I9IklubmVyIGNsYXNzZXMgY2Fubm90IGhhdmUgc3RhdGljIGRlY2xhcmF0aW9ucyI+c3RhdGljPC9lcnJvcj4KKyAgICAgIGZpbmFsIGludCBmMSA9IDMgPCA0ID8gKGEuaXg9PTUgPyAgMSA6IDMpIC8gNCArIDE4IDogMDsKKworICAgIDxlcnJvciBkZXNjcj0iSW5uZXIgY2xhc3NlcyBjYW5ub3QgaGF2ZSBzdGF0aWMgZGVjbGFyYXRpb25zIj5zdGF0aWM8L2Vycm9yPiAKKyAgICAgIGZpbmFsIGludCBmMiA9IHggaW5zdGFuY2VvZiBJbnRlZ2VyID8gMSA6IDA7CisKKyAgICA8ZXJyb3IgZGVzY3I9Ik1vZGlmaWVyICdzdGF0aWMnIG5vdCBhbGxvd2VkIGhlcmUiPnN0YXRpYzwvZXJyb3I+IAorICAgICAgY2xhc3MgYV9pY19jMiB7fQorCisgICAgPGVycm9yIGRlc2NyPSJJbm5lciBjbGFzc2VzIGNhbm5vdCBoYXZlIHN0YXRpYyBkZWNsYXJhdGlvbnMiPnN0YXRpYzwvZXJyb3I+IAorICAgICAgaW50IGFfaWNfbTIoU3RyaW5nIHMpIHsgcmV0dXJuIDA7IH0KKyAgICAvLyBzdGF0aWMgaW5pdGlhbGl6ZXIKKyAgICA8ZXJyb3IgZGVzY3I9IklubmVyIGNsYXNzZXMgY2Fubm90IGhhdmUgc3RhdGljIGRlY2xhcmF0aW9ucyI+c3RhdGljPC9lcnJvcj4KKyAgICB7fQorICB9CisgIH0KKworICB2b2lkIGYxKCkgCisgIHsKKyAgICBuZXcgYSgpIHsKKyAgICA8ZXJyb3IgZGVzY3I9IklubmVyIGNsYXNzZXMgY2Fubm90IGhhdmUgc3RhdGljIGRlY2xhcmF0aW9ucyI+c3RhdGljPC9lcnJvcj4KKyAgICAgIGludCBpOworCisgICAgPGVycm9yIGRlc2NyPSJJbm5lciBjbGFzc2VzIGNhbm5vdCBoYXZlIHN0YXRpYyBkZWNsYXJhdGlvbnMiPnN0YXRpYzwvZXJyb3I+CisgICAgZmluYWwgaW50IGYxID0gMyA8IDQgPyAoYS5peD09NSA/ICAxIDogMykgLyA0ICsgMTggOiAwOworCisgICAgLy8gaXRzIG5vdCBhIGNvbXBpbGUgdGltZSBjb25zdGFudAorICAgIDxlcnJvciBkZXNjcj0iSW5uZXIgY2xhc3NlcyBjYW5ub3QgaGF2ZSBzdGF0aWMgZGVjbGFyYXRpb25zIj5zdGF0aWM8L2Vycm9yPiAKKyAgICAgIGZpbmFsIE9iamVjdCBvID0gbnVsbDsKKworICAgIDxlcnJvciBkZXNjcj0iSW5uZXIgY2xhc3NlcyBjYW5ub3QgaGF2ZSBzdGF0aWMgZGVjbGFyYXRpb25zIj5zdGF0aWM8L2Vycm9yPiAKKyAgICAgIGZpbmFsIGludCBmMiA9IHggaW5zdGFuY2VvZiBJbnRlZ2VyID8gMSA6IDA7CisKKyAgICA8ZXJyb3IgZGVzY3I9Ik1vZGlmaWVyICdzdGF0aWMnIG5vdCBhbGxvd2VkIGhlcmUiPnN0YXRpYzwvZXJyb3I+IAorICAgICAgY2xhc3MgYV9pY19jMiB7fQorCisgICAgPGVycm9yIGRlc2NyPSJJbm5lciBjbGFzc2VzIGNhbm5vdCBoYXZlIHN0YXRpYyBkZWNsYXJhdGlvbnMiPnN0YXRpYzwvZXJyb3I+IAorICAgICAgaW50IGFfaWNfbTIoU3RyaW5nIHMpIHsgcmV0dXJuIDA7IH0KKyAgICAvLyBzdGF0aWMgaW5pdGlhbGl6ZXIKKyAgICA8ZXJyb3IgZGVzY3I9IklubmVyIGNsYXNzZXMgY2Fubm90IGhhdmUgc3RhdGljIGRlY2xhcmF0aW9ucyI+c3RhdGljPC9lcnJvcj4KKyAgICB7fQorICAgIH07CisgIH0KKworICAvLyBsb2NhbCBpbnRlcmZhY2UKKyAgY2xhc3MgY2MgeworICAgIHZvaWQgZigpIHsKKyAgICAgIDxlcnJvciBkZXNjcj0iTW9kaWZpZXIgJ2ludGVyZmFjZScgbm90IGFsbG93ZWQgaGVyZSI+aW50ZXJmYWNlIGk8L2Vycm9yPiB7fQorICAgIH0KKyAgICB2b2lkIGZmKCkgeworICAgICAgY2xhc3MgaW5uIHsKKyAgICAgICAgPGVycm9yIGRlc2NyPSJJbm5lciBjbGFzc2VzIGNhbm5vdCBoYXZlIHN0YXRpYyBkZWNsYXJhdGlvbnMiPmludGVyZmFjZSBpPC9lcnJvcj4ge30KKyAgICAgIH0KKyAgICB9CisKKyAgICBPYmplY3QgbyA9IG5ldyBSdW5uYWJsZSgpIHsKKyAgICAgIDxlcnJvciBkZXNjcj0iSW5uZXIgY2xhc3NlcyBjYW5ub3QgaGF2ZSBzdGF0aWMgZGVjbGFyYXRpb25zIj5pbnRlcmZhY2UgaTwvZXJyb3I+IHt9CisgICAgICBwdWJsaWMgdm9pZCBydW4oKSB7fQorICAgIH07CisgIH0KKworICB2b2lkIHdpdGhhbm9ueW1vdXMoKSB7CisgICAgbmV3IE9iamVjdCgpIHsKKyAgICAgIDxlcnJvciBkZXNjcj0iTW9kaWZpZXIgJ3ByaXZhdGUnIG5vdCBhbGxvd2VkIGhlcmUiPnByaXZhdGU8L2Vycm9yPiBjbGFzcyBSVCB7fQorICAgICAgcHJpdmF0ZSB2b2lkIG1ldGhvZCgpIHt9CisgICAgICBwcml2YXRlIGludCBteUk7CisgICAgfTsKKyAgfQorfQorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9TdGF0aWNPdmVycmlkZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvU3RhdGljT3ZlcnJpZGUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMjI5MzExCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvU3RhdGljT3ZlcnJpZGUuamF2YQpAQCAtMCwwICsxLDEzMiBAQAorLy8gbWV0aG9kIG92ZXJyaWRlCitpbXBvcnQgamF2YS5pby4qOworaW1wb3J0IGphdmEubmV0Lio7CisKK3B1YmxpYyBjbGFzcyBhIGV4dGVuZHMgYTEgeworIDxlcnJvciBkZXNjcj0iU3RhdGljIG1ldGhvZCAnZigpJyBpbiAnYScgY2Fubm90IG92ZXJyaWRlIGluc3RhbmNlIG1ldGhvZCAnZigpJyBpbiAnYTEnIj5wdWJsaWMgc3RhdGljIHZvaWQgZigpPC9lcnJvcj4geyB9CisgPGVycm9yIGRlc2NyPSJJbnN0YW5jZSBtZXRob2QgJ2YxKCknIGluICdhJyBjYW5ub3Qgb3ZlcnJpZGUgc3RhdGljIG1ldGhvZCAnZjEoKScgaW4gJ2ExJyI+cHVibGljIHZvaWQgZjEoKTwvZXJyb3I+IHsgfQorfQorY2xhc3MgYTEgeworIHB1YmxpYyB2b2lkIGYoKSB7fQorIHB1YmxpYyBzdGF0aWMgdm9pZCBmMSgpIHt9Cit9CisKK2ludGVyZmFjZSBpIHsKKyB2b2lkIGYxKCk7Cit9CisKKzxlcnJvciBkZXNjcj0iU3RhdGljIG1ldGhvZCAnZjEoKScgaW4gJ2ExJyBjYW5ub3Qgb3ZlcnJpZGUgaW5zdGFuY2UgbWV0aG9kICdmMSgpJyBpbiAnaSciPmNsYXNzIGNfYTFfaSBleHRlbmRzIGExIGltcGxlbWVudHMgaTwvZXJyb3I+IHsKK30KKworaW50ZXJmYWNlIGlpIHsKKyBpbnQgZigpOworfQorCis8ZXJyb3IgZGVzY3I9IidmKCknIGluICdhMScgY2xhc2hlcyB3aXRoICdmKCknIGluICdpaSc7IGF0dGVtcHRpbmcgdG8gdXNlIGluY29tcGF0aWJsZSByZXR1cm4gdHlwZSI+YWJzdHJhY3QgY2xhc3MgY19hMV9paSBleHRlbmRzIGExIGltcGxlbWVudHMgaWk8L2Vycm9yPiB7Cit9CisKK2ludGVyZmFjZSBpMiB7CisgaW50IGYxKCk7Cit9Cis8ZXJyb3IgZGVzY3I9IidmMSgpJyBpbiAnaTInIGNsYXNoZXMgd2l0aCAnZjEoKScgaW4gJ2knOyBtZXRob2RzIGhhdmUgdW5yZWxhdGVkIHJldHVybiB0eXBlcyI+aW50ZXJmYWNlIGkzIGV4dGVuZHMgaSwgaTI8L2Vycm9yPiB7Cit9CisKK2NsYXNzIHdlYWsgeworICB2b2lkIGYxKCkge30KK30KKzxlcnJvciBkZXNjcj0iJ2YxKCknIGluICd3ZWFrJyBjbGFzaGVzIHdpdGggJ2YxKCknIGluICdpJzsgYXR0ZW1wdGluZyB0byBhc3NpZ24gd2Vha2VyIGFjY2VzcyBwcml2aWxlZ2VzICgncGFja2FnZUxvY2FsJyk7IHdhcyAncHVibGljJyI+Y2xhc3MgYTIgZXh0ZW5kcyB3ZWFrIGltcGxlbWVudHMgaTwvZXJyb3I+IHsKK30KKworY2xhc3MgYTMgeworICBwcm90ZWN0ZWQgdm9pZCBmMSgpIHt9Cit9Cis8ZXJyb3IgZGVzY3I9IidmMSgpJyBpbiAnYTMnIGNsYXNoZXMgd2l0aCAnZjEoKScgaW4gJ2knOyBhdHRlbXB0aW5nIHRvIGFzc2lnbiB3ZWFrZXIgYWNjZXNzIHByaXZpbGVnZXMgKCdwcm90ZWN0ZWQnKTsgd2FzICdwdWJsaWMnIj5jbGFzcyBhNCBleHRlbmRzIGEzIGltcGxlbWVudHMgaTwvZXJyb3I+IHsKKy8vICBwdWJsaWMgdm9pZCBmMSgpIHt9Cit9CitjbGFzcyBhNSBleHRlbmRzIGEzIGltcGxlbWVudHMgaSB7CisgIC8vIGlmIHdlIG92ZXJyaWRlIHN1c3BpY2lvdXMgbWV0aG9kLCBpdHMgT0sKKyAgcHVibGljIHZvaWQgZjEoKSB7fQorfQorCisKKworLy8gZGVlcCBpbmhlcml0CitjbGFzcyBkYTEgeyB2b2lkIGYoKSB7fSB9CitjbGFzcyBkYTIgZXh0ZW5kcyBkYTEgeyB2b2lkIGYoKSB7fSB9CitjbGFzcyBkYTMgZXh0ZW5kcyBkYTIge30KKworCisKKworaW50ZXJmYWNlIE15SW50ZXJmYWNlCit7CisgICAgcHVibGljIHZvaWQgbXlNZXRob2QoKTsKK30KK2NsYXNzIE15SW50ZXJmYWNlSW1wbCBpbXBsZW1lbnRzIE15SW50ZXJmYWNlIAoreworICAgIDxlcnJvciBkZXNjcj0iU3RhdGljIG1ldGhvZCAnbXlNZXRob2QoKScgaW4gJ015SW50ZXJmYWNlSW1wbCcgY2Fubm90IG92ZXJyaWRlIGluc3RhbmNlIG1ldGhvZCAnbXlNZXRob2QoKScgaW4gJ015SW50ZXJmYWNlJyI+cHVibGljIHN0YXRpYyB2b2lkIG15TWV0aG9kKCk8L2Vycm9yPiB7IC8qIGltcGxlbWVudGF0aW9uIGdvZXMgaGVyZSAqLyB9CisKKyAgICA8ZXJyb3IgZGVzY3I9IlN0YXRpYyBtZXRob2QgJ3RvU3RyaW5nKCknIGluICdNeUludGVyZmFjZUltcGwnIGNhbm5vdCBvdmVycmlkZSBpbnN0YW5jZSBtZXRob2QgJ3RvU3RyaW5nKCknIGluICdqYXZhLmxhbmcuT2JqZWN0JyI+cHJpdmF0ZSBzdGF0aWMgU3RyaW5nIHRvU3RyaW5nKCk8L2Vycm9yPiB7CisgICAgICAgIHJldHVybiBudWxsOworICAgIH0KKworfQorCisKKworLy8gU3VuLXN0eWxlIGluaGVyaXRhbmNlCitwdWJsaWMgY2xhc3MgU3VuYyB7CisgIHByb3RlY3RlZCB2b2lkIGYoKSB7fQorfQorcHVibGljIGNsYXNzIFN1bmNjIGV4dGVuZHMgU3VuYyAgeworICBwdWJsaWMgdm9pZCBmKCkge30KK30KK3B1YmxpYyBpbnRlcmZhY2UgU3VuaSB7CisgIHB1YmxpYyB2b2lkIGYoKTsKK30KK2NsYXNzIFN1bmNjYyBleHRlbmRzIFN1bmNjIGltcGxlbWVudHMgU3VuaSB7Cit9CisKKy8vIG92ZXJyaWRlIHN0YXRpYworY2xhc3MgU3RBIHsKKyAgcHVibGljIHN0YXRpYyBTdEEgY3JlYXRlSW5zdGFuY2UoKSB7CisgICAgcmV0dXJuIG5ldyBTdEEoKTsKKyAgfQorfQorY2xhc3MgU3RCIGV4dGVuZHMgU3RBIHsKKyAgcHVibGljIHN0YXRpYyA8ZXJyb3IgZGVzY3I9IidjcmVhdGVJbnN0YW5jZSgpJyBpbiAnU3RCJyBjbGFzaGVzIHdpdGggJ2NyZWF0ZUluc3RhbmNlKCknIGluICdTdEEnOyBhdHRlbXB0aW5nIHRvIHVzZSBpbmNvbXBhdGlibGUgcmV0dXJuIHR5cGUiPlN0cmluZzwvZXJyb3I+IGNyZWF0ZUluc3RhbmNlKCkgeworICAgIHJldHVybiBudWxsOworICB9Cit9CisKKy8vLy8vLy8vCitjbGFzcyBGb28geworICAgIHByb3RlY3RlZCBzdGF0aWMgdm9pZCBmb28oU3RyaW5nIHMpIHt9Cit9CitwdWJsaWMgY2xhc3MgQmFyIGV4dGVuZHMgRm9veworICAgIDxlcnJvciBkZXNjcj0iJ2ZvbyhTdHJpbmcpJyBpbiAnQmFyJyBjbGFzaGVzIHdpdGggJ2ZvbyhTdHJpbmcpJyBpbiAnRm9vJzsgYXR0ZW1wdGluZyB0byBhc3NpZ24gd2Vha2VyIGFjY2VzcyBwcml2aWxlZ2VzICgncHJpdmF0ZScpOyB3YXMgJ3Byb3RlY3RlZCciPnByaXZhdGU8L2Vycm9yPiBzdGF0aWMgdm9pZCBmb28oU3RyaW5nIHMpIHt9Cit9CisKKworLy8vLy8vLy8vLy8vLyAgSURFQURFVi00MTc3OQorY2xhc3MgQSB7CisgICAgcHVibGljIHN0YXRpYyBDIEMoKSB7IHJldHVybiBuZXcgQygpOyB9Cit9CitjbGFzcyBCIGV4dGVuZHMgQSB7Cit9CitjbGFzcyBDIGV4dGVuZHMgQiB7CisgICAgcHVibGljIEMoKSB7fQorfQorLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCitjbGFzcyBaMSB7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCB2b2lkIGRvSXRCYWJ5KCkgeworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIkhlbGxvLCBkaWFyIEEiKTsKKyAgICB9Cit9CisKK2NsYXNzIFoyIGV4dGVuZHMgWjEgeworICAgIDxlcnJvciBkZXNjcj0iJ2RvSXRCYWJ5KCknIGNhbm5vdCBvdmVycmlkZSAnZG9JdEJhYnkoKScgaW4gJ1oxJzsgb3ZlcnJpZGRlbiBtZXRob2QgaXMgZmluYWwiPnB1YmxpYyBzdGF0aWMgdm9pZCBkb0l0QmFieSgpPC9lcnJvcj4geworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIkhlbGxvLCBkaWFyIEIiKTsKKyAgICB9Cit9CisvLy8vLy8vLy8vLy8vLy8vLy8vClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvU3RhdGljVmlhSW5zdGFuY2UuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nL1N0YXRpY1ZpYUluc3RhbmNlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2VlZWE0ZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nL1N0YXRpY1ZpYUluc3RhbmNlLmphdmEKQEAgLTAsMCArMSwzMSBAQAorLy8gYWNjZXNzIHN0YXRpYyB2aWEgaW5zdGFuY2UKK2NsYXNzIEFDbGFzcworeworICAgIHB1YmxpYyBpbnQgZ2V0KCkgeworICAgICAgICBpbnQgaSA9IDx3YXJuaW5nIGRlc2NyPSJTdGF0aWMgbWVtYmVyICdBQ2xhc3MuZmZmJyBhY2Nlc3NlZCB2aWEgaW5zdGFuY2UgcmVmZXJlbmNlIj50aGlzLmZmZjwvd2FybmluZz47CisgICAgICAgIHJldHVybiBpOworICAgIH0KKyAgICBwdWJsaWMgc3RhdGljIEFDbGFzcyBnZXRBKCkgeworICAgICAgICByZXR1cm4gbnVsbDsKKyAgICB9CisKKyAgICBPYmplY3QgZ2coKQorICAgIHsKKyAgICAgIHJldHVybiA8d2FybmluZyBkZXNjcj0iU3RhdGljIG1lbWJlciAnQUNsYXNzLmdldEEoKScgYWNjZXNzZWQgdmlhIGluc3RhbmNlIHJlZmVyZW5jZSI+dGhpcy5nZXRBPC93YXJuaW5nPigpOworICAgIH0KKyAgICBzdGF0aWMgaW50IGZmZjsKKworICAgIHByb3RlY3RlZCBzdGF0aWMgY2xhc3MgUiB7CisgICAgICAgIHN0YXRpYyBpbnQgcnIgPSAwOworICAgIH0KKyAgICBwdWJsaWMgUiBnZXRSKCkgeworICAgICAgICByZXR1cm4gbnVsbDsKKyAgICB9Cit9CisKK2NsYXNzIGFub3RoZXJjbGFzcyB7CisgICAgaW50IGYoQUNsYXNzIGQpeworICAgICAgICBpbnQgaSA9IDx3YXJuaW5nIGRlc2NyPSJTdGF0aWMgbWVtYmVyICdBQ2xhc3MuUi5ycicgYWNjZXNzZWQgdmlhIGluc3RhbmNlIHJlZmVyZW5jZSI+ZC5nZXRSKCkucnI8L3dhcm5pbmc+OworICAgICAgICByZXR1cm4gaTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9TdHJpbmdMaXRlcmFscy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvU3RyaW5nTGl0ZXJhbHMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MGY3ZTlkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvU3RyaW5nTGl0ZXJhbHMuamF2YQpAQCAtMCwwICsxLDUyIEBACisvKgorICogQ29weXJpZ2h0IDIwMDAtMjAxMiBKZXRCcmFpbnMgcy5yLm8uCisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisvLyBzdHJpbmcgbGl0ZXJhbAorcHVibGljIGNsYXNzIGEgeworICBjaGFyIGMxID0gIDxlcnJvciBkZXNjcj0iRW1wdHkgY2hhcmFjdGVyIGxpdGVyYWwiPicnPC9lcnJvcj47CisgIGNoYXIgYzIgPSAgPGVycm9yIGRlc2NyPSJJbGxlZ2FsIGVzY2FwZSBjaGFyYWN0ZXIgaW4gY2hhcmFjdGVyIGxpdGVyYWwiPidcZGQnPC9lcnJvcj47CisgIGNoYXIgYzQgPSAgPGVycm9yIGRlc2NyPSJUb28gbWFueSBjaGFyYWN0ZXJzIGluIGNoYXJhY3RlciBsaXRlcmFsIj4neHh4JzwvZXJyb3I+OworICBjaGFyIGM1ID0gIDxlcnJvciBkZXNjcj0iVG9vIG1hbnkgY2hhcmFjdGVycyBpbiBjaGFyYWN0ZXIgbGl0ZXJhbCI+J1w3OCc8L2Vycm9yPjsKKyAgY2hhciBjNiA9ICA8ZXJyb3IgZGVzY3I9IlRvbyBtYW55IGNoYXJhY3RlcnMgaW4gY2hhcmFjdGVyIGxpdGVyYWwiPidcNzgnPC9lcnJvcj47CisKKyAgY2hhcltdIGNBID0gbmV3IGNoYXJbXSB7ICdkJywnXGInLCdcZicsJ1xuJywnXHInCisgICAgICAgICAgICAgLCdcdCcsJyInLCdcXCcsJyAnLCdcdTEyMzQnLCdcdUZGRkYnCisgICAgICAgICAgICAgLCAnXDcnLCAnXDc3JywgJ1wzNDUnLCAnXDAnLCA8ZXJyb3IgZGVzY3I9IlVuY2xvc2VkIGNoYXJhY3RlciBsaXRlcmFsIj4neDwvZXJyb3I+CisgIH07CisKKyAgU3RyaW5nIHMxID0gIDxlcnJvciBkZXNjcj0iSWxsZWdhbCBlc2NhcGUgY2hhcmFjdGVyIGluIHN0cmluZyBsaXRlcmFsIj4iXHhkIjwvZXJyb3I+OworICBTdHJpbmcgczExPSAgPGVycm9yIGRlc2NyPSJJbGxlZ2FsIGVzY2FwZSBjaGFyYWN0ZXIgaW4gc3RyaW5nIGxpdGVyYWwiPiJcdWRYIjwvZXJyb3I+OworICBTdHJpbmcgczEyPSAgPGVycm9yIGRlc2NyPSJJbGxlZ2FsIGVzY2FwZSBjaGFyYWN0ZXIgaW4gc3RyaW5nIGxpdGVyYWwiPiJjOlxURU1QXHRlc3QuamFyIjwvZXJyb3I+OworICBTdHJpbmcgczMgPSAiIjsKKyAgU3RyaW5nIHM0ID0gIlx1MDAwMCI7CisKKyAgU3RyaW5nIHM1ID0gPGVycm9yIGRlc2NyPSJJbGxlZ2FsIGVzY2FwZSBjaGFyYWN0ZXIgaW4gc3RyaW5nIGxpdGVyYWwiPiJcdTAwMGQiPC9lcnJvcj47CisgIFN0cmluZyBzNiA9IDxlcnJvciBkZXNjcj0iSWxsZWdhbCBlc2NhcGUgY2hhcmFjdGVyIGluIHN0cmluZyBsaXRlcmFsIj4iXHUwMDBhIjwvZXJyb3I+OworICBjaGFyIGM3ID0gPGVycm9yIGRlc2NyPSJJbGxlZ2FsIGVzY2FwZSBjaGFyYWN0ZXIgaW4gY2hhcmFjdGVyIGxpdGVyYWwiPidcdTAwMGQnPC9lcnJvcj47CisgIGNoYXIgYzggID0gPGVycm9yIGRlc2NyPSJJbGxlZ2FsIGVzY2FwZSBjaGFyYWN0ZXIgaW4gY2hhcmFjdGVyIGxpdGVyYWwiPidcdTAwMGEnPC9lcnJvcj47CisKKyAgU3RyaW5nIHBlcnZlcnRzID0gIlx1dXV1dXV1dXV1dXUxMjM0IjsKKyAgY2hhciBwZXJ2MiA9ICdcdXUzMjY0JzsKKworICB2b2lkIGZvbyhTdHJpbmcgYSkgeworICAgICBmb28oPGVycm9yIGRlc2NyPSJJbGxlZ2FsIGxpbmUgZW5kIGluIHN0cmluZyBsaXRlcmFsIj4iYWFhPC9lcnJvcj4KKyAgICAgKTsKKyAgfQorCisgIFN0cmluZ1tdIHMgPSB7CisgICAgPGVycm9yIGRlc2NyPSJJbGxlZ2FsIGxpbmUgZW5kIGluIHN0cmluZyBsaXRlcmFsIj4idW5jbG9zZWQ8L2Vycm9yPgorICB9OworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvU3RyaW5nU3dpdGNoTGFiZWxzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9TdHJpbmdTd2l0Y2hMYWJlbHMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45YjhmOTliCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvU3RyaW5nU3dpdGNoTGFiZWxzLmphdmEKQEAgLTAsMCArMSwyMyBAQAorcHVibGljIGNsYXNzIFRlc3QgeworICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgQkFaID0gImJheiI7CisKKyAgcHJpdmF0ZSB2b2lkIHN0cmluZ1N3aXRjaCgpIHsKKyAgICAgIGZpbmFsIFN0cmluZyBiYXIgPSAiYmFyIjsKKyAgICAgIFN0cmluZyBrZXkgPSAia2V5IjsKKyAgICAgIHN3aXRjaCAoPGVycm9yPmtleTwvZXJyb3I+KSB7CisgICAgICAgICAgY2FzZSAiIjogeworICAgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIk5vdGhpbmciKTsKKyAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgfQorICAgICAgICAgIGNhc2UgImZvbyI6CisgICAgICAgICAgY2FzZSBiYXI6CisgICAgICAgICAgY2FzZSBCQVo6IHsKKyAgICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJNYXRjaGVkIGtleSIpOworICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICB9CisgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgYnJlYWs7CisgICAgICB9CisgIH0KKworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nL1N1cHByZXNzZWQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nL1N1cHByZXNzZWQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZWU1MzNmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvU3VwcHJlc3NlZC5qYXZhCkBAIC0wLDAgKzEsOCBAQAorcHVibGljIGNsYXNzIFN1cHByZXNzZWQgeworICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgVU5VU0VEX0RFQ0xBUkFUSU9OID0gIlVudXNlZERlY2xhcmF0aW9uIjsKKworICBAamF2YS5sYW5nLlN1cHByZXNzV2FybmluZ3MoVU5VU0VEX0RFQ0xBUkFUSU9OKQorICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CisgICAgaW50IGkgPSAwOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvU3dpdGNoU3RhdGVtZW50LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9Td2l0Y2hTdGF0ZW1lbnQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNzY4YWFjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvU3dpdGNoU3RhdGVtZW50LmphdmEKQEAgLTAsMCArMSwzNSBAQAorLy8gc3dpdGNoIHN0YXRlbWVudAorCitjbGFzcyBhIHsKKyAgICB7CisgICAgICAgIDxlcnJvciBkZXNjcj0iQ2FzZSBzdGF0ZW1lbnQgb3V0c2lkZSBzd2l0Y2giPmNhc2UgMDo8L2Vycm9yPgorICAgIH0KKyAgICB7CisgICAgICAgIDxlcnJvciBkZXNjcj0iQ2FzZSBzdGF0ZW1lbnQgb3V0c2lkZSBzd2l0Y2giPmRlZmF1bHQ6PC9lcnJvcj4KKyAgICB9CisKKyAgICB7CisgICAgICAgIHN3aXRjaCAoMCkgeworICAgICAgICAgY2FzZSAwPGVycm9yIGRlc2NyPSInOicgZXhwZWN0ZWQiPjs8L2Vycm9yPgorICAgICAgICB9CisKKyAgICAgICAgc3dpdGNoICgwKSB7CisgICAgICAgICBkZWZhdWx0PGVycm9yIGRlc2NyPSInOicgZXhwZWN0ZWQiPjs8L2Vycm9yPgorICAgICAgICB9CisKKyAgICAgICAgc3dpdGNoICgwKSB7CisgICAgICAgIC8vLy8vLy8vLy8vLy8vLy8KKyAgICAgICAgLyoqIAorICAgICAgICAqLworICAgICAgICA8ZXJyb3IgZGVzY3I9IlN0YXRlbWVudCBtdXN0IGJlIHByZXBlbmRlZCB3aXRoIGNhc2UgbGFiZWwiPlN5c3RlbS5vdXQucHJpbnRsbigpOzwvZXJyb3I+CisgICAgICAgIAorCisgICAgICAgIGRlZmF1bHQ8ZXJyb3IgZGVzY3I9Iic6JyBleHBlY3RlZCI+OzwvZXJyb3I+CisgICAgICAgIH0KKworICAgICAgICBzd2l0Y2ggKDApIHsKKyAgICAgICAgICA8ZXJyb3IgZGVzY3I9IlN0YXRlbWVudCBtdXN0IGJlIHByZXBlbmRlZCB3aXRoIGNhc2UgbGFiZWwiPmJyZWFrOzwvZXJyb3I+CisgICAgICAgIH0KKyAgICB9CisKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9TeW5jaHJvbml6ZWRFeHByZXNzaW9uLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9TeW5jaHJvbml6ZWRFeHByZXNzaW9uLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmY3ZWRmYgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nL1N5bmNocm9uaXplZEV4cHJlc3Npb24uamF2YQpAQCAtMCwwICsxLDIwIEBACisvLyBzeW5jIHN0YXRlbWVudAorCitjbGFzcyBhIHsKKyAgdm9pZCBmKCkgeworCisgICAgICAgIHN5bmNocm9uaXplZCAoPGVycm9yIGRlc2NyPSJJbmNvbXBhdGlibGUgdHlwZXMuIEZvdW5kOiAnbnVsbCcsIHJlcXVpcmVkOiAnamF2YS5sYW5nLk9iamVjdCciPm51bGw8L2Vycm9yPikgeworICAgICAgICB9CisgICAgICAgIHN5bmNocm9uaXplZCAoPGVycm9yIGRlc2NyPSJJbmNvbXBhdGlibGUgdHlwZXMuIEZvdW5kOiAnaW50JywgcmVxdWlyZWQ6ICdqYXZhLmxhbmcuT2JqZWN0JyI+MDwvZXJyb3I+KSB7CisgICAgICAgIH0KKyAgICAgICAgc3luY2hyb25pemVkICg8ZXJyb3IgZGVzY3I9IkluY29tcGF0aWJsZSB0eXBlcy4gRm91bmQ6ICdjaGFyJywgcmVxdWlyZWQ6ICdqYXZhLmxhbmcuT2JqZWN0JyI+J2EnPC9lcnJvcj4pIHsKKyAgICAgICAgfQorICAgICAgICBzeW5jaHJvbml6ZWQgKDxlcnJvciBkZXNjcj0iSW5jb21wYXRpYmxlIHR5cGVzLiBGb3VuZDogJ2Jvb2xlYW4nLCByZXF1aXJlZDogJ2phdmEubGFuZy5PYmplY3QnIj50cnVlPC9lcnJvcj4pIHsKKyAgICAgICAgfQorICAgICAgICBzeW5jaHJvbml6ZWQgKDxlcnJvciBkZXNjcj0iSW5jb21wYXRpYmxlIHR5cGVzLiBGb3VuZDogJ3ZvaWQnLCByZXF1aXJlZDogJ2phdmEubGFuZy5PYmplY3QnIj5TeXN0ZW0ub3V0LnByaW50bG4oKTwvZXJyb3I+ICkgeworICAgICAgICB9CisKKworICB9CisKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9UZXJuYXJ5LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9UZXJuYXJ5LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzM0YjVlOQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nL1Rlcm5hcnkuamF2YQpAQCAtMCwwICsxLDMxIEBACisvLyB0ZXJuYXJ5IG9wZXJhdG9yCisKK2NsYXNzIGEgeworIHZvaWQgZjEoKSB7CisgICAgYnl0ZSBiID0gNDsKKyAgICBpbnQgaSA9IDI7CisgICAgYm9vbGVhbiBibyA9IGZhbHNlOworICAgIGxvbmcgbCA9IDU7CisgICAgZmxvYXQgZiA9IDU7CisgICAgZG91YmxlIGQgPSA0NTsKKworICAgIFN0cmluZyBzOworICAgIDxlcnJvciBkZXNjcj0iSW5jb21wYXRpYmxlIHR5cGVzLiBGb3VuZDogJ2ludCcsIHJlcXVpcmVkOiAnamF2YS5sYW5nLlN0cmluZyciPnMgPSBibyA/IDEgOiAyPC9lcnJvcj47CisgICAgPGVycm9yIGRlc2NyPSJJbmNvbXBhdGlibGUgdHlwZXMuIEZvdW5kOiAnbG9uZycsIHJlcXVpcmVkOiAnamF2YS5sYW5nLlN0cmluZyciPnMgPSBibyA/IDFMOiAyPC9lcnJvcj47CisgICAgPGVycm9yIGRlc2NyPSJJbmNvbXBhdGlibGUgdHlwZXMuIEZvdW5kOiAnYnl0ZScsIHJlcXVpcmVkOiAnamF2YS5sYW5nLlN0cmluZyciPnMgPSBibyA/IGIgOiAyPC9lcnJvcj47CisgICAgPGVycm9yIGRlc2NyPSJJbmNvbXBhdGlibGUgdHlwZXMuIEZvdW5kOiAnaW50JywgcmVxdWlyZWQ6ICdqYXZhLmxhbmcuU3RyaW5nJyI+cyA9IGJvID8gYiA6IGIrMjwvZXJyb3I+OworICAgIDxlcnJvciBkZXNjcj0iSW5jb21wYXRpYmxlIHR5cGVzLiBGb3VuZDogJ2xvbmcnLCByZXF1aXJlZDogJ2phdmEubGFuZy5TdHJpbmcnIj5zID0gYm8gPyBiKzFMIDogMjwvZXJyb3I+OworICAgIDxlcnJvciBkZXNjcj0iSW5jb21wYXRpYmxlIHR5cGVzLiBGb3VuZDogJ2Zsb2F0JywgcmVxdWlyZWQ6ICdqYXZhLmxhbmcuU3RyaW5nJyI+cyA9IGJvID8gZiA6IGYrMjwvZXJyb3I+OworICAgIDxlcnJvciBkZXNjcj0iSW5jb21wYXRpYmxlIHR5cGVzLiBGb3VuZDogJ2RvdWJsZScsIHJlcXVpcmVkOiAnamF2YS5sYW5nLlN0cmluZyciPnMgPSBibyA/IGQgOiAyPC9lcnJvcj47CisKKyB9CisKKyB2b2lkIGNmMSgpIHsKKworICAgICAgICBieXRlW10gYnl0ZUFyciA9IG5ldyBieXRlWzEwXTsKKyAgICAgICAgYm9vbGVhbiBib29sID0gdHJ1ZTsKKyAgICAgICAgYnl0ZSBpID0gYm9vbCA/IGJ5dGVBcnJbMF0gOiAwOworIH0KKworCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvVGhpc0JlZm9yZVN1cGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9UaGlzQmVmb3JlU3VwZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZGIxZmRhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvVGhpc0JlZm9yZVN1cGVyLmphdmEKQEAgLTAsMCArMSwyNiBAQAorY2xhc3MgQQoreworICAgIGNsYXNzIEIKKyAgICB7CisgICAgfQorfQorCisKK2NsYXNzIEMgZXh0ZW5kcyBBCit7CisgICAgY2xhc3MgRCBleHRlbmRzIEIKKyAgICB7CisgICAgICAgIEQoKXsKKyAgICAgICAgICAgIEMudGhpcy5zdXBlcigpOworICAgICAgICB9CisgICAgfQorfQorCitjbGFzcyBDMSB7CisgICAgY2xhc3MgQjEge30KKyAgICBjbGFzcyBEMSBleHRlbmRzIEMxLkIxIHsKKyAgICAgICAgRDEoKSB7CisgICAgICAgICAgICBDMS50aGlzLnN1cGVyKCk7CisgICAgICAgIH0KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvVGhpc0luSW50ZXJmYWNlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9UaGlzSW5JbnRlcmZhY2UuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZjFiOWIzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvVGhpc0luSW50ZXJmYWNlLmphdmEKQEAgLTAsMCArMSwyNCBAQAorY2xhc3MgQyBpbXBsZW1lbnRzIEEgeworICAgIEMoQSBhKSB7fQorfQorCitpbnRlcmZhY2UgQSB7CisgICAgQSBhID0gbmV3IEMoPGVycm9yIGRlc2NyPSJDYW5ub3QgZmluZCBzeW1ib2wgdmFyaWFibGUgdGhpcyI+dGhpczwvZXJyb3I+KTsKKyAgICBBIGExID0gbmV3IEMoPGVycm9yIGRlc2NyPSJDYW5ub3QgZmluZCBzeW1ib2wgdmFyaWFibGUgdGhpcyI+dGhpczwvZXJyb3I+KXt9OworCisgICAgY2xhc3MgQiAgeworICAgICAgICBBIGZvbygpIHsKKyAgICAgICAgICAgIHJldHVybiA8ZXJyb3IgZGVzY3I9IkNhbm5vdCBmaW5kIHN5bWJvbCB2YXJpYWJsZSB0aGlzIj5BLnRoaXM8L2Vycm9yPjsKKyAgICAgICAgfQorCisgICAgICAgIEIgZm9vMSgpIHsKKyAgICAgICAgICAgIHJldHVybiBCLnRoaXM7CisgICAgICAgIH0KKworICAgICAgICBjbGFzcyBEIHsKKyAgICAgICAgICAgIEIgZigpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gQi50aGlzOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nL1VuY2xvc2VkQmxvY2tDb21tZW50LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9VbmNsb3NlZEJsb2NrQ29tbWVudC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkwNjA3MTgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9VbmNsb3NlZEJsb2NrQ29tbWVudC5qYXZhCkBAIC0wLDAgKzEsOCBAQAorLy8gdW5jbG9zZWQgY29tbWVudAorLyoKKworaW1wb3J0IGphdmEuaW8uKjsKK2ltcG9ydCBqYXZhLm5ldC4qOworCitjbGFzcyBhIHsKKzxlcnJvciBkZXNjcj0iVW5jbG9zZWQgY29tbWVudCI+fTwvZXJyb3I+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvVW5jbG9zZWRDb21tZW50LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9VbmNsb3NlZENvbW1lbnQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNDg3MGVlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvVW5jbG9zZWRDb21tZW50LmphdmEKQEAgLTAsMCArMSw5IEBACisvLyB1bmNsb3NlZCBjb21tZW50CisKKworaW1wb3J0IGphdmEuaW8uKjsKK2ltcG9ydCBqYXZhLm5ldC4qOworCisvKioKK2NsYXNzIGEgeworICBpbnQgaTxlcnJvciBkZXNjcj0iVW5jbG9zZWQgY29tbWVudCI+OzwvZXJyb3I+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvVW5jbG9zZWREZWNsLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9VbmNsb3NlZERlY2wuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MmQ0NTdiYgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nL1VuY2xvc2VkRGVjbC5qYXZhCkBAIC0wLDAgKzEsMyBAQAorLy8gdW5jbG9zZWQgZGVjbAorCitjbGFzcyBhIHs8RU9MRXJyb3IvPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nL1VuZGVmaW5lZExhYmVsLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9VbmRlZmluZWRMYWJlbC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY0NjMwZDI0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvVW5kZWZpbmVkTGFiZWwuamF2YQpAQCAtMCwwICsxLDQyIEBACisvLy8gbGFiZWxzCitpbXBvcnQgamF2YS5pby4qOworaW1wb3J0IGphdmEubmV0Lio7CisKK3B1YmxpYyBjbGFzcyBhICB7CisKKyAgdm9pZCBmKGZpbmFsIGJvb2xlYW4gYikgeworICAgIHdoaWxlIChiKSBicmVhayA8ZXJyb3IgZGVzY3I9IlVuZGVmaW5lZCBsYWJlbDogJ2xhYjEnIj5sYWIxPC9lcnJvcj47CisgICAgd2hpbGUgKGIpIGNvbnRpbnVlIDxlcnJvciBkZXNjcj0iVW5kZWZpbmVkIGxhYmVsOiAnbGFiMSciPmxhYjE8L2Vycm9yPjsKKworICAgIGZvciAoOzspIHsKKyAgICAgIGxhYjI6IDsKKyAgICAgIGJyZWFrIDxlcnJvciBkZXNjcj0iVW5kZWZpbmVkIGxhYmVsOiAnbGFiMiciPmxhYjI8L2Vycm9yPjsKKyAgICAgIGNvbnRpbnVlIDxlcnJvciBkZXNjcj0iVW5kZWZpbmVkIGxhYmVsOiAnbGFiMiciPmxhYjI8L2Vycm9yPjsKKyAgICB9CisKKyAgICBsYWIzOgorICAgIG5ldyBSdW5uYWJsZSgpIHsKKyAgICAgIHB1YmxpYyB2b2lkIHJ1bigpIHsKKyAgICAgICAgd2hpbGUgKHRydWUpIHsKKyAgICAgICAgICBpZiAoYikgYnJlYWsgPGVycm9yIGRlc2NyPSJVbmRlZmluZWQgbGFiZWw6ICdsYWIzJyI+bGFiMzwvZXJyb3I+OworICAgICAgICAgIGlmIChiKSBjb250aW51ZSA8ZXJyb3IgZGVzY3I9IlVuZGVmaW5lZCBsYWJlbDogJ2xhYjMnIj5sYWIzPC9lcnJvcj47CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9OworICB9CisKKyAgdm9pZCBjZigpIHsKKyAgICAgYm9vbGVhbiBiID0gZmFsc2U7CisgICAgIHdoaWxlIChiKSB7CisgICAgICAgbGFiMDogYnJlYWsgbGFiMDsKKyAgICAgfQorCisgICAgIGxhYjE6IHRyeSB7CisgICAgICAgbGFiMjogZm9yICg7YjspIGlmICgxPT0zKSBjb250aW51ZSBsYWIyOworICAgICAgIGJyZWFrIGxhYjE7CisgICAgIH0KKyAgICAgZmluYWxseSB7CisgICAgICAgYnJlYWsgbGFiMTsKKyAgICAgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvVW5oYW5kbGVkRXhjZXB0aW9uc0luU3VwZXJjbGFzcy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvVW5oYW5kbGVkRXhjZXB0aW9uc0luU3VwZXJjbGFzcy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcyMWJlNDYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9VbmhhbmRsZWRFeGNlcHRpb25zSW5TdXBlcmNsYXNzLmphdmEKQEAgLTAsMCArMSwxNzggQEAKKy8vIHVuaGFuZGxlZCBleGNlcHRpb25zIGZyb20gc3VwZXJjbGFzZXMvZXRjCitpbXBvcnQgamF2YS5pby4qOworaW1wb3J0IGphdmEubmV0Lio7CitwdWJsaWMgY2xhc3MgYSAgeworIGEoaW50IGkpIHt9Cit9CisKKy8vIHN1cGVyIGN0cgorCis8ZXJyb3IgZGVzY3I9IlRoZXJlIGlzIG5vIGRlZmF1bHQgY29uc3RydWN0b3IgYXZhaWxhYmxlIGluICdhJyI+Y2xhc3MgYiBleHRlbmRzIGE8L2Vycm9yPiB7Cit9CisKK2NsYXNzIGMgZXh0ZW5kcyBhIHsKKyAgPGVycm9yIGRlc2NyPSJUaGVyZSBpcyBubyBkZWZhdWx0IGNvbnN0cnVjdG9yIGF2YWlsYWJsZSBpbiAnYSciPmMoKTwvZXJyb3I+IHsKKyAgfQorCisgIGMoU3RyaW5nIHMpIHsKKyAgICB0aGlzKDEpOworICB9CisgIGMoaW50IGkpIHsKKyAgICBzdXBlcihpKTsKKyAgfQorfQorCitjbGFzcyBBIHsKKyAgICBwcml2YXRlIEEoKSB7fQorICAgIGNsYXNzIEIgZXh0ZW5kcyBBIHt9Cit9CisKK2NsYXNzIEExIHsKKyAgICBBMSgpIHRocm93cyBFeGNlcHRpb24ge30KK30KKworPGVycm9yIGRlc2NyPSJVbmhhbmRsZWQgZXhjZXB0aW9uOiBqYXZhLmxhbmcuRXhjZXB0aW9uIj5jbGFzcyBCMSBleHRlbmRzIEExPC9lcnJvcj4KK3t9CisKK2NsYXNzIEEyIGV4dGVuZHMgQTEgeworICA8ZXJyb3IgZGVzY3I9IlVuaGFuZGxlZCBleGNlcHRpb246IGphdmEubGFuZy5FeGNlcHRpb24iPkEyKCk8L2Vycm9yPiB7fQorfQorCisKKy8vIGV4Y2VwdGlvbiB0aHJvd24gZnJvbSB3aXRoaW4gYW5vbnltb3VzCitjbGFzcyBBMyB7CisgICAgdm9pZCBmKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgICAgIG5ldyBBMygpIHsKKyAgICAgICAgICAgIGludCBnKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpbnQgaz1nKCk7CisgICAgICAgIH07CisgICAgfQorfQorCisKKy8vIGluIGluaXRpYWxpemVyCitjbGFzcyBUZXN0eworICBmaW5hbCBTdHJpbmcgcyA9IDxlcnJvciBkZXNjcj0iVW5oYW5kbGVkIGV4Y2VwdGlvbjogamF2YS5sYW5nLkV4Y2VwdGlvbiI+bWFrZVN0cmluZygpOzwvZXJyb3I+CisgIFN0cmluZyBtYWtlU3RyaW5nKCkgdGhyb3dzIEV4Y2VwdGlvbiB7dGhyb3cgbmV3IEV4Y2VwdGlvbigpO30KK30KKworCitjbGFzcyBDMSB7CisgIHB1YmxpYyBDMSgpIHRocm93cyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24ge30KK30KK2NsYXNzIEMyIGV4dGVuZHMgQzEgeworICBwdWJsaWMgQzIoKSB7CisgIH0KK30KKworLy8gcHJpdmF0ZSBidXQgYWNjZXNzaWJsZSBiYXNlIGN0cgorY2xhc3MgRDEgeworICAgIHByaXZhdGUgRDEoKSB7fQorICAgIHN0YXRpYyBjbGFzcyBEMiBleHRlbmRzIEQxIHsKKyAgICAgICAgRDIoKSB7CisgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIiEiKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKKyAgICAgICAgbmV3IEQyKCk7CisgICAgICAgIG5ldyBEMSgpOworICAgIH0KK30KKworCisvLy8vLy8vLy8vLy8vLy8KK2NsYXNzIE15Q2xhc3MKK3sKKyAgICBwdWJsaWMgTXlDbGFzcygpIHRocm93cyBFeGNlcHRpb24KKyAgICB7CisgICAgICAgIC8vZGVmYXVsdCBjdG9yIHRocm93cyBleGMKKyAgICB9CisgICAgCisgICAgcHVibGljIE15Q2xhc3MoT2JqZWN0IGFuT2JqZWN0KQorICAgIHsKKyAgICAgICAgLy9vdGhlciBjdG9yIGRvZXMgbm90CisgICAgfQorfQorCitjbGFzcyBNeUNsYXNzMiBleHRlbmRzIE15Q2xhc3MgCit7CisgICAgLy9IRVJFIGdvb2QgY29kZSBpcyBtYXJrZWQgcmVkCisgICAgcHVibGljIE15Q2xhc3MyIChPYmplY3QgYW5PYmplY3QpCisgICAgeworICAgICAgICBzdXBlcihhbk9iamVjdCk7CisgICAgfQorfQorCitjbGFzcyBUaHJvd0NDICB7CisgICAgcHVibGljIHZvaWQgdGVzdDMoKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgIFRocm93YWJsZSBleGNlcHRpb24gPSBudWxsOworICAgICAgPGVycm9yIGRlc2NyPSJVbmhhbmRsZWQgZXhjZXB0aW9uOiBqYXZhLmxhbmcuVGhyb3dhYmxlIj50aHJvdyBleGNlcHRpb247PC9lcnJvcj4KKyAgICB9Cit9CisKKworLy9JbmFjY2Vzc2libGUgZmllbGQKK2NsYXNzIEogeworICAgIGludCB0ID0gbmV3IEkxKCkuaTsgLy9hY2Nlc3Mgb2JqZWN0IGNsYXNzIGlzIE9LCisgICAgaW50IHYgPSBuZXcgSTIoKS48ZXJyb3IgZGVzY3I9IidpJyBoYXMgcHJpdmF0ZSBhY2Nlc3MgaW4gJ0ouSTEnIj5pPC9lcnJvcj47IC8vYmFkIGFjY2VzcyBvYmplY3QgY2xhc3MKKworICAgIGNsYXNzIEkxIHsKKyAgICAgICAgY2xhc3MgSTMgeworICAgICAgICAgICAgaW50IHQgPSBpOyAvL3Zpc2liaWxpdHkgT0sKKyAgICAgICAgfQorCisgICAgICAgIHByaXZhdGUgaW50IGk7CisgICAgfQorCisgICAgY2xhc3MgSTIgZXh0ZW5kcyBJMSB7CisgICAgICAgIGludCBqID0gPGVycm9yIGRlc2NyPSInaScgaGFzIHByaXZhdGUgYWNjZXNzIGluICdKLkkxJyI+aTwvZXJyb3I+OyAvL1dlIGRvbid0IHNlZSBpIGZyb20gYmFzZXIgY2xhc3MKKyAgICB9CisKKyAgICBzdGF0aWMgSTEgaTE7CisgICAgY2xhc3MgSTQgeworICAgICAgICBpbnQgdSA9IGkxLmk7IC8vT0ssIGkgaXMgdmlzaWJsZSBzaW5jZSB0aGUgdG9wbGV2ZWwgY2xhc3MgaXMgdGhlIHNhbWUKKyAgICB9Cit9CitjbGFzcyBUZXN0MyB7CisKKyAgICBwcml2YXRlIGNsYXNzIENoaWxkIGV4dGVuZHMgUGFyZW50IHsKKyAgICB9CisKKyAgICBwcml2YXRlIGNsYXNzIFBhcmVudCBleHRlbmRzIFN1cGVyUGFyZW50IHsKKyAgICB9CisKKyAgICBwcml2YXRlIGNsYXNzIFN1cGVyUGFyZW50IHsKKyAgICAgICAgcHJpdmF0ZSBpbnQgZmllbGQgPSAxOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIGZvbygpIHsKKyAgICAgICAgQ2hpbGQgY2hpbGQgPSBuZXcgQ2hpbGQoKTsKKyAgICAgICAgaW50IGkgPSBjaGlsZC48ZXJyb3IgZGVzY3I9IidmaWVsZCcgaGFzIHByaXZhdGUgYWNjZXNzIGluICdUZXN0My5TdXBlclBhcmVudCciPmZpZWxkPC9lcnJvcj47CisgICAgfQorfQorCisvL0lERUFERVYtNDQ1NTogdGhpcyBjb2RlIGlzIE9LCitjbGFzcyBYWVogeworICAgIHByaXZhdGUgY2xhc3MgSW5uZXIgZXh0ZW5kcyBYWVogeworICAgICAgICBwcml2YXRlIGZpbmFsIFN0cmluZyBzOworICAgICAgICBJbm5lcihTdHJpbmcgX3MpIHsKKyAgICAgICAgICAgIHRoaXMucyA9IF9zOworICAgICAgICB9CisKKworICAgICAgICBwdWJsaWMgYm9vbGVhbiBlcXVhbHMoT2JqZWN0IG8pIHsKKyAgICAgICAgICAgIGlmICh0aGlzID09IG8pIHJldHVybiB0cnVlOworICAgICAgICAgICAgaWYgKG8gPT0gbnVsbCB8fCBnZXRDbGFzcygpICE9IG8uZ2V0Q2xhc3MoKSkgcmV0dXJuIGZhbHNlOworCisgICAgICAgICAgICBmaW5hbCBJbm5lciB5ID0gKElubmVyKSBvOworCisgICAgICAgICAgICBpZiAocyAhPSBudWxsID8gIXMuZXF1YWxzKHkucykgOiB5LnMgIT0gbnVsbCkgcmV0dXJuIGZhbHNlOworCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0KK30KKy8vZW5kIG9mIElERUFERVYtNDQ1NQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nL1VuaGFuZGxlZE1lc3NpbmdXaXRoRmluYWxseS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvVW5oYW5kbGVkTWVzc2luZ1dpdGhGaW5hbGx5LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGU2NTAyNzcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9VbmhhbmRsZWRNZXNzaW5nV2l0aEZpbmFsbHkuamF2YQpAQCAtMCwwICsxLDg0IEBACisvLyB1bmhhbmRsZWQgZXhjZXB0aW9uIHdoZW4gbWVzc2luZyB3aXRoIGZpbmFsbHkgYmxvY2sKKworaW1wb3J0IGphdmEuaW8uKjsKK2NsYXNzIGEgIHsKKyAgdm9pZCBmMShpbnQgaSkgeworICAgIHRyeSB7CisgICAgICBuZXcgRmlsZVJlYWRlcigiIik7CisgICAgfQorICAgIGZpbmFsbHkgeworICAgICAgPGVycm9yIGRlc2NyPSJVbmhhbmRsZWQgZXhjZXB0aW9uOiBqYXZhLmxhbmcuQ2xhc3NOb3RGb3VuZEV4Y2VwdGlvbiI+dGhyb3cgbmV3IENsYXNzTm90Rm91bmRFeGNlcHRpb24oKTs8L2Vycm9yPgorICAgIH0KKyAgfQorCisgIHZvaWQgZjIoaW50IGkpIHsKKyAgICB0cnkgeworICAgICAgPGVycm9yIGRlc2NyPSJVbmhhbmRsZWQgZXhjZXB0aW9uOiBqYXZhLmlvLkZpbGVOb3RGb3VuZEV4Y2VwdGlvbiI+bmV3IEZpbGVSZWFkZXIoIiIpPC9lcnJvcj47CisgICAgfQorICAgIGZpbmFsbHkgeworICAgICAgaWYgKGk9PTQpIDxlcnJvciBkZXNjcj0iVW5oYW5kbGVkIGV4Y2VwdGlvbjogamF2YS5sYW5nLkNsYXNzTm90Rm91bmRFeGNlcHRpb24iPnRocm93IG5ldyBDbGFzc05vdEZvdW5kRXhjZXB0aW9uKCk7PC9lcnJvcj4KKyAgICB9CisgIH0KKworICB2b2lkIGYzKGludCBpKSB7CisgICAgdHJ5IHsKKyAgICAgIDxlcnJvciBkZXNjcj0iVW5oYW5kbGVkIGV4Y2VwdGlvbjogamF2YS5pby5GaWxlTm90Rm91bmRFeGNlcHRpb24iPm5ldyBGaWxlUmVhZGVyKCIiKTwvZXJyb3I+OworICAgIH0KKyAgICBmaW5hbGx5IHsKKyAgICAgIGlmIChpPT0xKSByZXR1cm47CisgICAgfQorICB9CisKKyAgdm9pZCBmNChpbnQgaSkgeworICAgIHRyeSB7CisgICAgICA8ZXJyb3IgZGVzY3I9IlVuaGFuZGxlZCBleGNlcHRpb246IGphdmEuaW8uRmlsZU5vdEZvdW5kRXhjZXB0aW9uIj5uZXcgRmlsZVJlYWRlcigiIik8L2Vycm9yPjsKKyAgICB9CisgICAgZmluYWxseSB7CisgICAgICBpZiAoaT09MSkgPGVycm9yIGRlc2NyPSJVbmhhbmRsZWQgZXhjZXB0aW9uOiBqYXZhLmlvLkZpbGVOb3RGb3VuZEV4Y2VwdGlvbiI+dGhyb3cgbmV3IEZpbGVOb3RGb3VuZEV4Y2VwdGlvbigpOzwvZXJyb3I+CisgICAgfQorICB9CisKKyAgdm9pZCBjZjEoaW50IGkpIHsKKyAgICB0cnkgeworICAgICAgbmV3IEZpbGVSZWFkZXIoIiIpOworICAgIH0KKyAgICBjYXRjaCAoRmlsZU5vdEZvdW5kRXhjZXB0aW9uIGUpIHsKKyAgICB9CisgICAgZmluYWxseSB7CisgICAgICBpZiAoMT09MSkgcmV0dXJuOworICAgIH0KKyAgfQorCisgIHZvaWQgY2YyKGludCBpKSB7CisgICAgdHJ5IHsKKyAgICAgIG5ldyBGaWxlUmVhZGVyKCIiKTsKKyAgICB9CisgICAgZmluYWxseSB7CisgICAgICB3aGlsZSAoMT09MSkgcmV0dXJuOworICAgIH0KKyAgfQorICB2b2lkIGZvbyhPdXRwdXRTdHJlYW0gb3V0LCBieXRlW10gZGF0YSkgdGhyb3dzIElPRXhjZXB0aW9uIHsKKyAgICBvdXQud3JpdGUoZGF0YSk7CisgIH0KKworICAgIHB1YmxpYyB2b2lkIHN3YWxsb3coKSB7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCJIZWxsbyBXb3JsZCEgSSdtIENoZWNrZWQgRXhjZXB0aW9uIGFuZCBtdXN0IGJlIGRlY2xhcmVkISIpOworICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgdGhyb3cgZTsKKyAgICAgICAgfSBmaW5hbGx5IHsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0KKyAgICBwdWJsaWMgdm9pZCBzcGl0b3V0KCkgeworICAgICAgICB0cnkgeworICAgICAgICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbigiSGVsbG8gV29ybGQhIEknbSBDaGVja2VkIEV4Y2VwdGlvbiBhbmQgbXVzdCBiZSBkZWNsYXJlZCEiKTsKKyAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgICA8ZXJyb3IgZGVzY3I9IlVuaGFuZGxlZCBleGNlcHRpb246IGphdmEubGFuZy5FeGNlcHRpb24iPnRocm93IGU7PC9lcnJvcj4KKyAgICAgICAgfSBmaW5hbGx5IHsKKyAgICAgICAgICAgIC8vcmV0dXJuOworICAgICAgICB9CisgICAgfQorCit9CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nL1VucmVhY2hhYmxlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9VbnJlYWNoYWJsZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjliNDE5YjMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9VbnJlYWNoYWJsZS5qYXZhCkBAIC0wLDAgKzEsMzU5IEBACisvLyB1bnJlYWNoYWJsZXMKK2ltcG9ydCBqYXZhLmlvLio7CitpbXBvcnQgamF2YS5uZXQuKjsKK3B1YmxpYyBjbGFzcyBhICB7CitpbnRlcmZhY2UgaWkge30KKworIHsgLy8gaW5pdGlhbGl6ZXIKKyAgIHRyeSB7CisgICAgIHRocm93IG5ldyBFeGNlcHRpb24oKTsKKyAgICAgPGVycm9yIGRlc2NyPSJVbnJlYWNoYWJsZSBzdGF0ZW1lbnQiPmludCBpID0gNTs8L2Vycm9yPgorICAgfQorICAgY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CisgICB9CisgfQorCisKKyBpbnQgZjEoKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgIHJldHVybiAyOworICAgPGVycm9yIGRlc2NyPSJVbnJlYWNoYWJsZSBzdGF0ZW1lbnQiPnJldHVybiA1OzwvZXJyb3I+CisgfQorIGludCBmMihpbnQgaSkgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICBpZiAoaT09MikgcmV0dXJuIDI7CisgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCk7CisgICA8ZXJyb3IgZGVzY3I9IlVucmVhY2hhYmxlIHN0YXRlbWVudCI+cmV0dXJuIDU7PC9lcnJvcj4KKyB9CisgaW50IGYzKGludCBpKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgIGZvciAoOzspIHJldHVybiAyOworICAgPGVycm9yIGRlc2NyPSJVbnJlYWNoYWJsZSBzdGF0ZW1lbnQiPnJldHVybiA1OzwvZXJyb3I+CisgfQorIGludCBmNChpbnQgaSkgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICB0cnkgeworICAgICBpZiAoaT09MykgdGhyb3cgbmV3IEV4Y2VwdGlvbigpOworICAgICByZXR1cm4gNDsKKyAgIH0gZmluYWxseSB7CisgICAgIGlmIChpPT02KSByZXR1cm4gOTsKKyAgIH0KKyAgIDxlcnJvciBkZXNjcj0iVW5yZWFjaGFibGUgc3RhdGVtZW50Ij5yZXR1cm4gNTs8L2Vycm9yPgorIH0KKworIHZvaWQgZjUoKQorICAgIHsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgfSBjYXRjaCAoRXJyb3IgZSkgeworICAgICAgICAgICAgdGhyb3cgZTsKKyAgICAgICAgICAgIDxlcnJvciBkZXNjcj0iVW5yZWFjaGFibGUgc3RhdGVtZW50Ij47PC9lcnJvcj4KKyAgICAgICAgfQorICAgIH0KKworIHZvaWQgZjYoKSB7CisgICAgdHJ5IHsKKyAgICB9CisgICAgZmluYWxseSB7CisgICAgICByZXR1cm47CisgICAgICA8ZXJyb3IgZGVzY3I9IlVucmVhY2hhYmxlIHN0YXRlbWVudCI+OzwvZXJyb3I+CisgICAgfQorIH0KKworICB2b2lkIGY3KFJ1bnRpbWVFeGNlcHRpb24gZSkgeworICAgIGZvciAoOzspIHsKKyAgICAgIGlmIChlPT1udWxsKSB7CisgICAgICAgIHJldHVybjsKKyAgICAgICAgPGVycm9yIGRlc2NyPSJVbnJlYWNoYWJsZSBzdGF0ZW1lbnQiPmJyZWFrOzwvZXJyb3I+CisgICAgICB9CisgICAgfQorICB9CisgIHZvaWQgZjgoUnVudGltZUV4Y2VwdGlvbiBlLGludCBpLGludCBqLGludCBrLGludCBsKSB7CisgICAgZm9yICg7OykgeworICAgICAgaWYgKGU9PW51bGwpIHsKKyAgICAgICAgcmV0dXJuOworICAgICAgICA8ZXJyb3IgZGVzY3I9IlVucmVhY2hhYmxlIHN0YXRlbWVudCI+ZjgoZSxpLGosayxsKTs8L2Vycm9yPgorICAgICAgfQorICAgIH0KKyAgfQorICB2b2lkIGY5KFJ1bnRpbWVFeGNlcHRpb24gZSxpbnQgaSxpbnQgaixpbnQgayxpbnQgbCkgeworICAgIGZvciAoOzspIHsKKyAgICAgIGlmIChlPT1udWxsKSB7CisgICAgICAgIHJldHVybjsKKyAgICAgICAgPGVycm9yIGRlc2NyPSJVbnJlYWNoYWJsZSBzdGF0ZW1lbnQiPnRocm93IGU7PC9lcnJvcj4KKyAgICAgIH0KKyAgICB9CisgIH0KKyAgY2xhc3MgQWYxMCB7CisgICAgaW50IGYoKSB7CisgICAgICAgIHJldHVybiAwOworICAgICAgICA8ZXJyb3IgZGVzY3I9IlVucmVhY2hhYmxlIHN0YXRlbWVudCI+bmV3IEFmMTAoKTs8L2Vycm9yPgorICAgIH0KKworICB9CisgIGNsYXNzIEFmMTEgeworICAgIGludCBmKCkgeworICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgPGVycm9yIGRlc2NyPSJVbnJlYWNoYWJsZSBzdGF0ZW1lbnQiPmludCBrOzwvZXJyb3I+CisgICAgfQorICAgIHZvaWQgdGVzdCgpIHsKKyAgICAgICAgaW50IGk7CisgICAgICAgIHJldHVybjsKKyAgICAgICAgPGVycm9yIGRlc2NyPSJVbnJlYWNoYWJsZSBzdGF0ZW1lbnQiPmFzc2VydCBpID09IGk7PC9lcnJvcj4KKyAgICB9CisgIH0KKworCisKKyBpbnQgY2YxKGludCBpKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgIGlmIChpPT0yKSByZXR1cm4gMjsKKyAgIGZvciAoaW50IGs9MDsxPT0xO2srKykgYnJlYWs7CisgICB0cnkgeworICAgIGkgPSA1OworICAgfSAKKyAgIGNhdGNoIChFcnJvciBlKSB7CisgICAgIGlmIChpPT01KSByZXR1cm4gMjsKKyAgIH0KKyAgIGNhdGNoIChSdW50aW1lRXhjZXB0aW9uIGUpIHsKKyAgIH0KKyAgIGNhdGNoIChUaHJvd2FibGUgZSkgeworICAgfQorCisgICByZXR1cm4gNTsKKyB9CisKKyBpbnQgY2YyKGludCBpKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgIHN3aXRjaCAoaSkgeworICAgICBjYXNlIDE6IHJldHVybiA0OworICAgfQorICAgcmV0dXJuIDU7CisgfQorIHZvaWQgY2YzKCkgeworICAgaWYgKGZhbHNlKSB7CisgICAgIGludCBpID0gNTsKKyAgIH0KKyAgIHdoaWxlICh0cnVlKSB7IGJyZWFrOyB9CisgICBpZiAodHJ1ZSkgeworICAgICBpbnQgaSA9IDQ7CisgICB9CisgICBlbHNlIHsKKyAgICAgaW50IGkgPSA2OworICAgfQorIH0KKyB2b2lkIGNmNCgpIHRocm93cyBqYXZhLm5ldC5Tb2NrZXRFeGNlcHRpb24geworICB0cnkgeworICAgIGJpbmQoKTsKKyAgfSBjYXRjaCAoamF2YS5uZXQuU29ja2V0RXhjZXB0aW9uIHNlKSB7CisgICAgdGhyb3cgc2U7CisgIH0gY2F0Y2goamF2YS5pby5JT0V4Y2VwdGlvbiBlKSB7CisgICAgdGhyb3cgbmV3IGphdmEubmV0LlNvY2tldEV4Y2VwdGlvbihlLmdldE1lc3NhZ2UoKSk7CisgIH0KKyB9Cisgdm9pZCBiaW5kKCkgdGhyb3dzIGphdmEubmV0LlNvY2tldEV4Y2VwdGlvbiB7fQorCisKKyB2b2lkIGNmNSgpIHsKKyAgdHJ5IHsKKyAgfSBjYXRjaChFeGNlcHRpb24gZSkgeworICAgIAorICB9CisgfQorCisgdm9pZCBjZjYoKSB7CisgICAgICAgIGlmICh0cnVlIHx8IHRydWUpIHsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiaGkiKTsKKyAgICAgICAgfQorIH0KKworCisgICAgc3RhdGljIGJvb2xlYW4gZygpIHsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKKyAgICAgICAgYm9vbGVhbiBiPWZhbHNlICYmIGcoKTsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJiID0gIitiKTsKKyAgICB9CisKKworCisgdm9pZCBjZjcoKSB7CisgICAgICAgIHRyeSB7CisgICAgICAgIH0gZmluYWxseSB7CisgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgfSBmaW5hbGx5IHsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICB9IGZpbmFsbHkgeworICAgICAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgfSBmaW5hbGx5IHsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICB9IGZpbmFsbHkgeworICAgICAgICAgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgICAgICB9IGZpbmFsbHkgeworICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0gZmluYWxseSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGZpbmFsbHkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGZpbmFsbHkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgICAgICAgICAgfSBmaW5hbGx5IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfSBmaW5hbGx5IHsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA7CisgfQorCisgdm9pZCBjZjgoKSB7CisgIGNsYXNzIFRlc3QwMQorICB7CisgCisgIHB1YmxpYyBpbnQgdGVzdE1ldGhvZCgpCisgIHsKKyAgICB0cnkKKyAgICB7CisgICAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCJ0ZXN0Iik7CisgICAgfQorICAgIGNhdGNoKEV4Y2VwdGlvbiBlKQorICAgIHsKKyAgICAgIHRyeQorICAgICAgeworICAgICAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCJ0ZXN0Iik7CisgICAgICB9CisgICAgICBjYXRjaChFeGNlcHRpb24gZWUpCisgICAgICB7fQorICAgICAgZmluYWxseQorICAgICAge30KKyAgICB9CisgICAgZmluYWxseQorICAgIHsKKyAKKyAgICAgIHRyeQorICAgICAgeworICAgICAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCJ0ZXN0Iik7CisgICAgICB9CisgICAgICBjYXRjaChFeGNlcHRpb24gZSkKKyAgICAgIHt9CisgICAgICBmaW5hbGx5CisgICAgICB7fQorICAgIH0KKyAgICByZXR1cm4gMDsKKyAgfQorICB9CisgfQorCisgdm9pZCBjZjkoKSB7CisgICAgICAvLyBzaG91bGQgbm90IHRyeSB0byBjb21wdXRlIGNvbnN0YW50IGV4cHJlc3Npb24gd2l0aGluIGFzc2VydAorICAgICAgLy8gc2luY2UgYXNzZXJ0aW9ucyBjYW4gYmUgZGlzYWJsZWQvZW5hYmxlZCBhdCBhbnkgbW9tZW50IHZpYSBKVk0gZmxhZ3MKKyAgIGFzc2VydCB0cnVlOworICAgYXNzZXJ0IGZhbHNlOworICAgZmluYWwgaW50IGk7CisgICBpZiAoMD09MSkgeworICAgICBpID0gOTsKKyAgIH0KKyAgIGVsc2UgeworICAgICBpID0gMDsKKyAgIH0KKyB9CisKKyB2b2lkIGNmMTAoKSB7CisgICBpbnQgayA9IDA7CisgICBzd2l0Y2ggKGspIHsKKyAgIH0KKyB9CisKKworICBwcml2YXRlIEV4Y2VwdGlvbiBnZXRFeGNlcHRpb24oKQorICB7CisgICAgcmV0dXJuIG5ldyBqYXZhLmlvLklPRXhjZXB0aW9uKCk7CisgIH0KKworICBwdWJsaWMgdm9pZCBjZjExKCkKKyAgeworICAgIHRyeSB7CisgICAgICB0aHJvdyBnZXRFeGNlcHRpb24oKTsKKyAgICB9CisgICAgY2F0Y2ggKGphdmEuaW8uSU9FeGNlcHRpb24gZSkgeworICAgICAgZS5wcmludFN0YWNrVHJhY2UoKTsgIC8vIElERUEgY2xhaW1zIHRoaXMgdG8gYmUgIlVucmVhY2hhYmxlIHN0YXRlbWVudCIvLworICAgIH0KKyAgICBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKKyAgICAgIGUucHJpbnRTdGFja1RyYWNlKCk7CisgICAgfQorICB9CisKKyAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKyAgICBwdWJsaWMgdm9pZCBjZjEyKCkgeworICAgICAgICB0cnkgeworICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIH0gZmluYWxseSB7CisgICAgICAgICAgICAgICAgZG9pdCgpOworICAgICAgICAgICAgfQorICAgICAgICB9IGNhdGNoIChFeGNlcDEgZSkgeworICAgICAgICAgICAgU3RyaW5nIGVycm9yID0gIlJvbGxiYWNrRXhjZXB0aW9uIjsKKyAgICAgICAgfSBjYXRjaCAoRXhjZXAyIGUpIHsKKyAgICAgICAgICAgIFN0cmluZyBlcnJvciA9ICJIZXVyaXN0aWNSb2xsYmFja0V4Y2VwdGlvbiI7CisgICAgICAgIH0gY2F0Y2ggKEV4Y2VwMyBlKSB7CisgICAgICAgICAgICBTdHJpbmcgZXJyb3IgPSAiU3lzdGVtRXhjZXB0aW9uIjsKKyAgICAgICAgfSBjYXRjaCAoSWxsZWdhbFN0YXRlRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIFN0cmluZyBlcnJvciA9ICJJbGxlZ2FsU3RhdGVFeGNlcHRpb24iOworICAgICAgICB9IGNhdGNoIChSdW50aW1lRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIFN0cmluZyBlcnJvciA9ICJSdW50aW1lRXhjZXB0aW9uIjsKKyAgICAgICAgfQorICAgIH0KKworICAgIHByaXZhdGUgdm9pZCBkb2l0KCkgdGhyb3dzIEV4Y2VwMSwgRXhjZXAyLCBFeGNlcDN7CisgICAgICAgIC8vVG8gY2hhbmdlIGJvZHkgb2YgY3JlYXRlZCBtZXRob2RzIHVzZSBPcHRpb25zIHwgRmlsZSBUZW1wbGF0ZXMuCisgICAgfQorCisgICBjbGFzcyBFeGNlcDEgZXh0ZW5kcyBFeGNlcHRpb24ge30KKyAgIGNsYXNzIEV4Y2VwMiBleHRlbmRzIEV4Y2VwdGlvbiB7fQorICAgY2xhc3MgRXhjZXAzIGV4dGVuZHMgRXhjZXB0aW9uIHt9CisKKworCisKKyAgICBwdWJsaWMgdm9pZCBjZjEzKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgIGNmMTMoKTsKKyAgICAgICAgICAgIH0gZmluYWxseSB7CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9IAorICAgICAgICB9CisgICAgfQorCit9CisKKworY2xhc3MgTmVzdGVkRmluYWxseVRlc3QgeworICAgIHZvaWQgZnRlc3Q0KCkgeworICAgICAgICB0cnkgeworICAgICAgICB9CisgICAgICAgIGZpbmFsbHkgeworICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGZpbmFsbHkgeworICAgICAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGZpbmFsbHkgeworICAgICAgICAgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGNhdGNoIChUaHJvd2FibGUgdDQpIHsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBmdGVzdDQoKTsKKyAgICB9Cit9CisKKworCisKKworCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9VbnN1cHBvcnRlZEZlYXR1cmVzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9VbnN1cHBvcnRlZEZlYXR1cmVzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDI2MzVjMgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nL1Vuc3VwcG9ydGVkRmVhdHVyZXMuamF2YQpAQCAtMCwwICsxLDQ5IEBACisvKgorICogQ29weXJpZ2h0IDIwMDAtMjAxMiBKZXRCcmFpbnMgcy5yLm8uCisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCitpbXBvcnQgamF2YS5pby4qOworaW1wb3J0IGphdmEudXRpbC4qOworCis8ZXJyb3IgZGVzY3I9IlN0YXRpYyBpbXBvcnRzIGFyZSBub3Qgc3VwcG9ydGVkIGF0IHRoaXMgbGFuZ3VhZ2UgbGV2ZWwiPmltcG9ydCBzdGF0aWMgamF2YS5sYW5nLk1hdGguKjs8L2Vycm9yPgorCitAaW50ZXJmYWNlIDxlcnJvciBkZXNjcj0iQW5ub3RhdGlvbnMgYXJlIG5vdCBzdXBwb3J0ZWQgYXQgdGhpcyBsYW5ndWFnZSBsZXZlbCI+QW5ubzwvZXJyb3I+IHsgfQorCis8ZXJyb3IgZGVzY3I9IkFubm90YXRpb25zIGFyZSBub3Qgc3VwcG9ydGVkIGF0IHRoaXMgbGFuZ3VhZ2UgbGV2ZWwiPkBBbm5vPC9lcnJvcj4KK2NsYXNzIFVuc3VwcG9ydGVkRmVhdHVyZXMgeworICB2b2lkIG0oPGVycm9yIGRlc2NyPSJWYXJpYWJsZSBhcml0eSBtZXRob2RzIGFyZSBub3Qgc3VwcG9ydGVkIGF0IHRoaXMgbGFuZ3VhZ2UgbGV2ZWwiPlN0cmluZy4uLiBhcmdzPC9lcnJvcj4pIHRocm93cyBFeGNlcHRpb24geworICAgIDxlcnJvciBkZXNjcj0iRm9yLWVhY2ggbG9vcHMgYXJlIG5vdCBzdXBwb3J0ZWQgYXQgdGhpcyBsYW5ndWFnZSBsZXZlbCI+Zm9yIChTdHJpbmcgcyA6IGFyZ3MpIHsgU3lzdGVtLm91dC5wcmludGxuKHMpOyB9PC9lcnJvcj4KKworICAgIExpc3Q8ZXJyb3IgZGVzY3I9IkdlbmVyaWNzIGFyZSBub3Qgc3VwcG9ydGVkIGF0IHRoaXMgbGFuZ3VhZ2UgbGV2ZWwiPjxTdHJpbmc+PC9lcnJvcj4gbGlzdCA9CisgICAgICBuZXcgQXJyYXlMaXN0PGVycm9yIGRlc2NyPSJEaWFtb25kIHR5cGVzIGFyZSBub3Qgc3VwcG9ydGVkIGF0IHRoaXMgbGFuZ3VhZ2UgbGV2ZWwiPjw+PC9lcnJvcj4oKTsKKworICAgIGZvciAoPGVycm9yIGRlc2NyPSJJbmNvbXBhdGlibGUgdHlwZXMuIEZvdW5kOiAnamF2YS5sYW5nLk9iamVjdCcsIHJlcXVpcmVkOiAnamF2YS5sYW5nLlN0cmluZyciPlN0cmluZyBzIDogbGlzdDwvZXJyb3I+KSB7fQorICAgIEFycmF5cy5hc0xpc3Q8ZXJyb3IgZGVzY3I9Iidhc0xpc3QoamF2YS5sYW5nLlN0cmluZy4uLiknIGluICdqYXZhLnV0aWwuQXJyYXlzJyBjYW5ub3QgYmUgYXBwbGllZCB0byAnKGphdmEubGFuZy5TdHJpbmcpJyI+KCIiKTwvZXJyb3I+OworICAgIDxlcnJvciBkZXNjcj0iSW5jb21wYXRpYmxlIHR5cGVzLiBGb3VuZDogJ2Jvb2xlYW4nLCByZXF1aXJlZDogJ2phdmEubGFuZy5Cb29sZWFuJyI+Qm9vbGVhbiBiID0gdHJ1ZTs8L2Vycm9yPgorICAgIDxlcnJvciBkZXNjcj0iSW5jb21wYXRpYmxlIHR5cGVzLiBGb3VuZDogJ2phdmEubGFuZy5Cb29sZWFuJywgcmVxdWlyZWQ6ICdib29sZWFuJyI+Ym9vbGVhbiBiMSA9IEJvb2xlYW4uVFJVRTs8L2Vycm9yPgorCisgICAgdHJ5IHsgUmVhZGVyIHIgPSBuZXcgRmlsZVJlYWRlcigiL2Rldi9udWxsIik7IH0KKyAgICBjYXRjaCAoPGVycm9yIGRlc2NyPSJNdWx0aS1jYXRjaGVzIGFyZSBub3Qgc3VwcG9ydGVkIGF0IHRoaXMgbGFuZ3VhZ2UgbGV2ZWwiPkZpbGVOb3RGb3VuZEV4Y2VwdGlvbiB8IElPRXhjZXB0aW9uIGU8L2Vycm9yPikgeyBlLnByaW50U3RhY2tUcmFjZSgpOyB9CisKKyAgICB0cnkgPGVycm9yIGRlc2NyPSJUcnktd2l0aC1yZXNvdXJjZXMgYXJlIG5vdCBzdXBwb3J0ZWQgYXQgdGhpcyBsYW5ndWFnZSBsZXZlbCI+KFJlYWRlciByID0gbmV3IEZpbGVSZWFkZXIoIi9kZXYvbnVsbCIpKTwvZXJyb3I+IHsgfQorCisgICAgSSBpMSA9IDxlcnJvciBkZXNjcj0iTWV0aG9kIHJlZmVyZW5jZXMgYXJlIG5vdCBzdXBwb3J0ZWQgYXQgdGhpcyBsYW5ndWFnZSBsZXZlbCI+VW5zdXBwb3J0ZWRGZWF0dXJlczo6bTwvZXJyb3I+OworICAgIEkgaTIgPSA8ZXJyb3IgZGVzY3I9IkxhbWJkYSBleHByZXNzaW9ucyBhcmUgbm90IHN1cHBvcnRlZCBhdCB0aGlzIGxhbmd1YWdlIGxldmVsIj4oKSAtPiB7IH08L2Vycm9yPjsKKyAgfQorCisgIGludGVyZmFjZSBJIHsKKyAgICA8ZXJyb3IgZGVzY3I9IkV4dGVuc2lvbiBtZXRob2RzIGFyZSBub3Qgc3VwcG9ydGVkIGF0IHRoaXMgbGFuZ3VhZ2UgbGV2ZWwiPnZvaWQgbSgpIGRlZmF1bHQgeyB9PC9lcnJvcj4KKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvVW51c2VkLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9VbnVzZWQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iY2JjZDI3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvVW51c2VkLmphdmEKQEAgLTAsMCArMSw0NiBAQAorcHVibGljIGNsYXNzIGEgZXh0ZW5kcyBFeGNlcHRpb24geworICBwcml2YXRlIDx3YXJuaW5nIGRlc2NyPSJQcml2YXRlIGNvbnN0cnVjdG9yICdhKGphdmEubGFuZy5TdHJpbmcpJyBpcyBuZXZlciB1c2VkIj5hPC93YXJuaW5nPihTdHJpbmcgcykgeworICAgIHN1cGVyKHMpOworICB9Cit9CisKK2NsYXNzIHMgZXh0ZW5kcyBFeGNlcHRpb24geworICBwcml2YXRlIHMoU3RyaW5nIHMpIHsKKyAgICBzdXBlcihzKTsKKyAgfQorICBwdWJsaWMgcyBjcmVhdGUoKSB7CisgICAgcmV0dXJuIG5ldyBzKCIiKTsKKyAgfQorfQorCitjbGFzcyBQcml2YXRlQ2xhc3NUZXN0IHsKKwlwcml2YXRlIHN0YXRpYyBjbGFzcyBUZXN0MSB7CisJCS8vIENvbXBsYWlucyB0aGF0IHRoaXMgY29uc3RydWN0b3IgaXMgbmV2ZXIgdXNlZAorCQlwcml2YXRlIFRlc3QxICgpIHt9CisKKwkJcHJpdmF0ZSBUZXN0MSAoU3RyaW5nIHMpIHsKKyAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihzKTsKKyAgICAgICAgfQorCX0KKworCXByaXZhdGUgc3RhdGljIGNsYXNzIFRlc3QyIGV4dGVuZHMgVGVzdDEgeworCQkvLyBDb21wbGFpbnMgdGhhdCBubyBkZWZhdWx0IGNvbnN0cnVjdG9yIGlzIGF2YWlsYWJsZQorCQlwdWJsaWMgVGVzdDIgKCkgeworICAgICAgICB9CisKKwkJLy8gQ29tcGxhaW5zIHRoYXQgdGhlIHJlbGV2YW50IGNvbnN0cnVjdG9yIGhhcyBwcml2YXRlIGFjY2VzcworCQlwdWJsaWMgVGVzdDIgKFN0cmluZyBzKSB7CisJCQlzdXBlciAocyk7CisJCX0KKwl9CisgICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgeworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4obmV3IFRlc3QyKCkpOworICAgIH0KKworICAgIHByaXZhdGUgdm9pZCA8d2FybmluZyBkZXNjcj0iUHJpdmF0ZSBtZXRob2QgJ2YoYm9vbGVhbiwgaW50KScgaXMgbmV2ZXIgdXNlZCI+Zjwvd2FybmluZz4oYm9vbGVhbiBiLAorICAgICAgICAgICAgICAgaW50IDx3YXJuaW5nIGRlc2NyPSJQYXJhbWV0ZXIgJ3BhcmFtJyBpcyBuZXZlciB1c2VkIj5wYXJhbTwvd2FybmluZz4pIHsKKyAgICAgICBpZiAoYikgeworICAgICAgICAgZihiLCBwYXJhbSk7CisgICAgICAgfQorICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nL1VudXNlZE5vblByaXZhdGVNZW1iZXJzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9VbnVzZWROb25Qcml2YXRlTWVtYmVycy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlmM2E3YjQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9VbnVzZWROb25Qcml2YXRlTWVtYmVycy5qYXZhCkBAIC0wLDAgKzEsMTkgQEAKK3B1YmxpYyBjbGFzcyA8d2FybmluZyBkZXNjcj0iQ2xhc3MgJ1hYWCcgaXMgbmV2ZXIgdXNlZCI+WFhYPC93YXJuaW5nPiB7CisgIHZvaWQgPHdhcm5pbmcgZGVzY3I9Ik1ldGhvZCAnZmZmZmYoKScgaXMgbmV2ZXIgdXNlZCI+ZmZmZmY8L3dhcm5pbmc+KCl7fQorICBwdWJsaWMgdm9pZCA8d2FybmluZyBkZXNjcj0iTWV0aG9kICdhc2RmYWZmZmZmZigpJyBpcyBuZXZlciB1c2VkIj5hc2RmYWZmZmZmZjwvd2FybmluZz4oKXt9CisgIHByb3RlY3RlZCB2b2lkIDx3YXJuaW5nIGRlc2NyPSJNZXRob2QgJ2Rhc2tsZmpoc2FkKCknIGlzIG5ldmVyIHVzZWQiPmRhc2tsZmpoc2FkPC93YXJuaW5nPigpe30KKworICBTdHJpbmcgPHdhcm5pbmcgZGVzY3I9IkZpZWxkICdhc2RmYWRzZicgaXMgbmV2ZXIgdXNlZCI+YXNkZmFkc2Y8L3dhcm5pbmc+OworICBwdWJsaWMgU3RyaW5nIDx3YXJuaW5nIGRlc2NyPSJGaWVsZCAnYXNkYXNkZmFkc2YnIGlzIG5ldmVyIHVzZWQiPmFzZGFzZGZhZHNmPC93YXJuaW5nPjsKKyAgc3RhdGljIGNsYXNzIDx3YXJuaW5nIGRlc2NyPSJDbGFzcyAnc2FzZGZhc2RmYXNkJyBpcyBuZXZlciB1c2VkIj5zYXNkZmFzZGZhc2Q8L3dhcm5pbmc+IHt9CisgIAorICBwdWJsaWMgPHdhcm5pbmcgZGVzY3I9IkNvbnN0cnVjdG9yICdYWFgoKScgaXMgbmV2ZXIgdXNlZCI+WFhYPC93YXJuaW5nPigpIHt9CisKKworICAvLyBvdmVybG9hZGVkCisgIHZvaWQgZmZmZmYoU3RyaW5nIGkpe2kuaGFzaENvZGUoKTt9CisgIHsKKyAgICAgZmZmZmYobnVsbCk7CisgIH0KK30KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvVW51c2VkTm9uUHJpdmF0ZU1lbWJlcnMyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9VbnVzZWROb25Qcml2YXRlTWVtYmVyczIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iN2FlNDc1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvVW51c2VkTm9uUHJpdmF0ZU1lbWJlcnMyLmphdmEKQEAgLTAsMCArMSw5IEBACitwdWJsaWMgY2xhc3MgV2l0aE1haW4geworCisgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpeworCisgIH0KKworICBwdWJsaWMgdm9pZCBteVRlc3RNZXRob2QoKXt9Cit9CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nL1VudXNlZE5vblByaXZhdGVNZW1iZXJzUmVmZXJlbmNlZEZyb21UZXh0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9VbnVzZWROb25Qcml2YXRlTWVtYmVyc1JlZmVyZW5jZWRGcm9tVGV4dC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE1YzBiMmEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9VbnVzZWROb25Qcml2YXRlTWVtYmVyc1JlZmVyZW5jZWRGcm9tVGV4dC5qYXZhCkBAIC0wLDAgKzEsMyBAQAorcHVibGljIGNsYXNzIDx3YXJuaW5nIGRlc2NyPSJDbGFzcyAnWFhYJyBpcyBuZXZlciB1c2VkIj5YWFg8L3dhcm5pbmc+IHsKK30KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvVW51c2VkUGFyYW1zT2ZQdWJsaWNNZXRob2QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nL1VudXNlZFBhcmFtc09mUHVibGljTWV0aG9kLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmFmODBkMWYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9VbnVzZWRQYXJhbXNPZlB1YmxpY01ldGhvZC5qYXZhCkBAIC0wLDAgKzEsMTkgQEAKK2NsYXNzIFN1cCB7CisgIHByb3RlY3RlZCB2b2lkIGYoaW50IGkpe30KK30KK2NsYXNzIEZvbyBleHRlbmRzIFN1cCB7CisgIHB1YmxpYyB2b2lkIGZvbyhpbnQgPHdhcm5pbmcgZGVzY3I9IlBhcmFtZXRlciAnaScgaXMgbmV2ZXIgdXNlZCI+aTwvd2FybmluZz4pe30KKyAgcHVibGljIHZvaWQgZyhpbnQgaSl7fQorICBwcm90ZWN0ZWQgdm9pZCBmKGludCBpKXt9Cit9CitjbGFzcyBTdWIgZXh0ZW5kcyBGb28geworICBwdWJsaWMgdm9pZCBnKGludCBpKXt9Cit9CisKKworaW50ZXJmYWNlIGZmZiB7CisgIHZvaWQgZihpbnQgZ2dnZ2cpOy8vCit9CithYnN0cmFjdCBjbGFzcyBhYiB7CisgIHB1YmxpYyBhYnN0cmFjdCB2b2lkIGYoaW50IGdnZ2dnKTsvLworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nL1VudXNlZFBhcmFtc09mUHVibGljTWV0aG9kRGlzYWJsZWQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nL1VudXNlZFBhcmFtc09mUHVibGljTWV0aG9kRGlzYWJsZWQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45OTRjY2JhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvVW51c2VkUGFyYW1zT2ZQdWJsaWNNZXRob2REaXNhYmxlZC5qYXZhCkBAIC0wLDAgKzEsMTkgQEAKK2NsYXNzIFN1cCB7CisgIHByb3RlY3RlZCB2b2lkIGYoaW50IGkpe30KK30KK2NsYXNzIEZvbyBleHRlbmRzIFN1cCB7CisgIHB1YmxpYyB2b2lkIGZvbyhpbnQgaSl7fQorICBwdWJsaWMgdm9pZCBnKGludCBpKXt9CisgIHByb3RlY3RlZCB2b2lkIGYoaW50IGkpe30KK30KK2NsYXNzIFN1YiBleHRlbmRzIEZvbyB7CisgIHB1YmxpYyB2b2lkIGcoaW50IGkpe30KK30KKworCitpbnRlcmZhY2UgZmZmIHsKKyAgdm9pZCBmKGludCBnZ2dnZyk7Ly8KK30KK2Fic3RyYWN0IGNsYXNzIGFiIHsKKyAgcHVibGljIGFic3RyYWN0IHZvaWQgZihpbnQgZ2dnZ2cpOy8vCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvVmFyRG91YmxlSW5pdGlhbGl6YXRpb24uamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nL1ZhckRvdWJsZUluaXRpYWxpemF0aW9uLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGUwZjRmMAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nL1ZhckRvdWJsZUluaXRpYWxpemF0aW9uLmphdmEKQEAgLTAsMCArMSwxNTAgQEAKKy8vIHZhcnMgZG91YmxlIGluaXRpYWxpemF0aW9uCitpbXBvcnQgamF2YS5pby4qOworaW1wb3J0IGphdmEubmV0Lio7CitwdWJsaWMgY2xhc3MgYTIxICB7CisKKyAgdm9pZCBmMShpbnQgaSkgeworICAgIGZpbmFsIGludCBqOworICAgIGogPSAyOworICAgIDxlcnJvciBkZXNjcj0iVmFyaWFibGUgJ2onIG1pZ2h0IGFscmVhZHkgaGF2ZSBiZWVuIGFzc2lnbmVkIHRvIj5qPC9lcnJvcj4gPSAyOworICB9CisgIHZvaWQgZjIoaW50IGkpIHsKKyAgICBmaW5hbCBpbnQgajsKKyAgICBpZiAoaT09MykgaiA9IDI7CisgICAgZWxzZSBqID0gNTsKKyAgICA8ZXJyb3IgZGVzY3I9IlZhcmlhYmxlICdqJyBtaWdodCBhbHJlYWR5IGhhdmUgYmVlbiBhc3NpZ25lZCB0byI+ajwvZXJyb3I+ID0gMjsKKyAgfQorICB2b2lkIGYzKGludCBpKSB7CisgICAgZmluYWwgaW50IGo7CisgICAgaWYgKGk9PTQpIGogPSAyOworICAgIDxlcnJvciBkZXNjcj0iVmFyaWFibGUgJ2onIG1pZ2h0IGFscmVhZHkgaGF2ZSBiZWVuIGFzc2lnbmVkIHRvIj5qPC9lcnJvcj4gPSAyOworICB9CisgIHZvaWQgZjUoaW50IGkpIHsKKyAgICBmaW5hbCBpbnQgajsKKyAgICBqID0gMjsKKyAgICBpZiAoaT09MykgcmV0dXJuOworICAgIDxlcnJvciBkZXNjcj0iVmFyaWFibGUgJ2onIG1pZ2h0IGFscmVhZHkgaGF2ZSBiZWVuIGFzc2lnbmVkIHRvIj5qPC9lcnJvcj4gPSAyOworICB9CisgIHZvaWQgZjYoaW50IGkpIHsKKyAgICBmaW5hbCBpbnQgajsKKyAgICBzd2l0Y2ggKGkpIHsKKyAgICBjYXNlIDE6IGogPSAyOworICAgIH0KKyAgICA8ZXJyb3IgZGVzY3I9IlZhcmlhYmxlICdqJyBtaWdodCBhbHJlYWR5IGhhdmUgYmVlbiBhc3NpZ25lZCB0byI+ajwvZXJyb3I+ID0gMjsKKyAgfQorICB2b2lkIGY3KGludCBpKSB7CisgICAgZmluYWwgaW50IGo7CisgICAgd2hpbGUgKGkgPCA0KSB7CisgICAgICA8ZXJyb3IgZGVzY3I9IlZhcmlhYmxlICdqJyBtaWdodCBiZSBhc3NpZ25lZCBpbiBsb29wIj5qPC9lcnJvcj4gPSAyOworICAgICAgZmluYWwgaW50IGlpID0gNDsKKyAgICAgIGkrPWlpOworICAgIH0KKyAgICAKKyAgfQorICB2b2lkIGY4KFN0cmluZyBrKSB7CisgICAgICAgIGlmIChrICE9IG51bGwpIHsKKyAgICAgICAgZmluYWwgU3RyaW5nIGk7CisgICAgICAgIGlmIChrLmVxdWFscygiISIpKSBpID0gIjMiOworICAgICAgICBpZiAoay5lcXVhbHMoIiEiKSkgPGVycm9yIGRlc2NyPSJWYXJpYWJsZSAnaScgbWlnaHQgYWxyZWFkeSBoYXZlIGJlZW4gYXNzaWduZWQgdG8iPmk8L2Vycm9yPiA9ICIyIjsKKyAgICAgICAgfQorCisgIH0KKworICB2b2lkIGY5KCkgeworICAgIGZpbmFsIE9iamVjdCB0eXBlOworICAgIHRyeSB7CisgICAgICB0eXBlID0gbnVsbDsgICAgCisgICAgfQorICAgIGNhdGNoIChFeGNlcHRpb24gZSkgeworICAgICAgPGVycm9yIGRlc2NyPSJWYXJpYWJsZSAndHlwZScgbWlnaHQgYWxyZWFkeSBoYXZlIGJlZW4gYXNzaWduZWQgdG8iPnR5cGU8L2Vycm9yPiA9IG51bGw7CisgICAgfQorICB9CisKKyAgdm9pZCBmMTAoKSB7CisgICAgICAgIGZpbmFsIGludCBrOworICAgICAgICBpZiAoZmFsc2UpIHsKKyAgICAgICAgICAgIGs9MDsKKyAgICAgICAgICAgIC8vPCBlcnJvciBkZXNjcj0iVmFyaWFibGUgJ2snIG1pZ2h0IGFscmVhZHkgaGF2ZSBiZWVuIGFzc2lnbmVkIHRvIj5rPCAvZXJyb3I+PTA7CisgICAgICAgIH0KKyAgfQorCitjbGFzcyBGb28geworICAgIGZpbmFsIGludCBrOworICAgIEZvbygpIHsKKyAgICAgICAgaz0wOworICAgICAgICA8ZXJyb3IgZGVzY3I9IlZhcmlhYmxlICdrJyBtaWdodCBhbHJlYWR5IGhhdmUgYmVlbiBhc3NpZ25lZCB0byI+azwvZXJyb3I+PTA7CisgICAgfQorfQorCisKKworCisgIHZvaWQgY2YxKGludCBpKSB7CisgICAgZmluYWwgaW50IGo7CisgICAgZmluYWwgaW50IGoxID0gMzsKKyAgICBqID0gNTsKKyAgICBmaW5hbCBpbnQgdW51c2VkOworICAgIGZpbmFsIGludCBqMjsKKyAgICBpZiAoaiA9PSAzKSBqMiA9IDQ7CisgICAgZmluYWwgaW50IGozOworICAgIGlmIChqPT00KSBqMyA9IDU7CisgICAgZWxzZSBqMyA9IDY7CisgICAgZmluYWwgaW50IGo0ID0gajMgKyA2OworICAgIGZpbmFsIGludCBqNTsKKyAgICB3aGlsZSAoaSAhPSA5KSB7CisgICAgICBpZiAoaiA9PSA4KSB7CisgICAgICAgIGo1ID0gOTsKKyAgICAgICAgYnJlYWs7CisgICAgICB9CisgICAgfQorICB9CisKKyAgZmluYWwgYm9vbGVhbiBGQiA9IHRydWU7CisKKyAgdm9pZCBjZjIoKSB7CisgICAgICBmaW5hbCBpbnQgazsKKyAgICAgIGlmICghRkIpIHsKKyAgICAgICAgayA9IDQ7CisgICAgICB9CisgICAgICAvLyA8IGVycm9yIGRlc2NyPSJWYXJpYWJsZSAnaycgbWlnaHQgYWxyZWFkeSBoYXZlIGJlZW4gYXNzaWduZWQgdG8iPms8IC9lcnJvcj49MDsKKyAgfQorCisKKyAgICAvLyB0b2RvOgorICAgIC8vIGluIElERUEgVmFyaWFibGUgJ2InIG1pZ2h0IG5vdCBoYXZlIGJlZW4gaW5pdGlhbGl6ZWQKKyAgICAvLyBpbiBqYXZhYzogT0sKKyAgICAvKgorICAgIHZvaWQgZjIoKSB7CisgICAgICAgIGJvb2xlYW4gYjsKKyAgICAgICAgYm9vbGVhbiBjID0gdHJ1ZTsKKyAgICAgICAgaWYgKGMgJiYgZmFsc2UpIHsKKyAgICAgICAgICAgIGMgPSBiOworICAgICAgICB9CisgICAgfQorICAgICovCisKK30KKworCitjbGFzcyBBIHsKKyAgICBmaW5hbCBpbnQgazsKKyAgICBBKCkgeworICAgICAgICBmb3IgKDs7KSB7CisgICAgICAgICAgICA8ZXJyb3IgZGVzY3I9IlZhcmlhYmxlICdrJyBtaWdodCBiZSBhc3NpZ25lZCBpbiBsb29wIj5rPC9lcnJvcj49MDsKKyAgICAgICAgfQorICAgIH0KK30KKworY2xhc3MgRXhhbXBsZSB7CisgICAgcHVibGljIGludCBtZXRob2QoYm9vbGVhbiBiKSB7CisgICAgICAgIGlmIChiKSB7CisgICAgICAgICAgZmluYWwgaW50IGluZGVudDsKKyAgICAgICAgICBpbmRlbnQgPSAwOworCisgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgbmV3IDxlcnJvcj5SdW5uYWJsZTwvZXJyb3I+KCl7fTxFT0xFcnJvci8+CisgICAgICAgIH0KKyAgICA8ZXJyb3I+fTwvZXJyb3I+Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvVmFyaWFibGVBbHJlYWR5RGVmaW5lZC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvVmFyaWFibGVBbHJlYWR5RGVmaW5lZC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY1NDlmMjYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9WYXJpYWJsZUFscmVhZHlEZWZpbmVkLmphdmEKQEAgLTAsMCArMSwzNCBAQAorY2xhc3MgcyB7CisgIHZvaWQgZigpIHsKKyAgICBpbnQgaTsKKyAgICBpbnQgPGVycm9yIGRlc2NyPSJWYXJpYWJsZSAnaScgaXMgYWxyZWFkeSBkZWZpbmVkIGluIHRoZSBzY29wZSI+aTwvZXJyb3I+OworICB9CisgIHZvaWQgZjEoKSB7CisgICAgaW50IGk7CisgICAgeworICAgICAgaW50IDxlcnJvciBkZXNjcj0iVmFyaWFibGUgJ2knIGlzIGFscmVhZHkgZGVmaW5lZCBpbiB0aGUgc2NvcGUiPmk8L2Vycm9yPjsKKyAgICB9CisgIH0KKyAgdm9pZCBmMigpIHsKKyAgICBpbnQgaTsKKyAgICBjbGFzcyBzcworICAgIHsKKyAgICAgIGludCBpOworICAgIH0KKyAgfQorCisgIGludCA8ZXJyb3IgZGVzY3I9IlZhcmlhYmxlICdmJyBpcyBhbHJlYWR5IGRlZmluZWQgaW4gdGhlIHNjb3BlIj5mPC9lcnJvcj47CisgIGludCA8ZXJyb3IgZGVzY3I9IlZhcmlhYmxlICdmJyBpcyBhbHJlYWR5IGRlZmluZWQgaW4gdGhlIHNjb3BlIj5mPC9lcnJvcj47CisgIHZvaWQgZjMoKSB7CisgICAgaW50IGY7CisgIH0KKworICBwdWJsaWMgdm9pZCB0dXR1KFN0cmluZyBlKSB7CisgICAgdHJ5IHsKKyAgICAgIEludGVnZXIucGFyc2VJbnQoIjMiKTsKKyAgICB9IGNhdGNoIChOdW1iZXJGb3JtYXRFeGNlcHRpb24gPGVycm9yIGRlc2NyPSJWYXJpYWJsZSAnZScgaXMgYWxyZWFkeSBkZWZpbmVkIGluIHRoZSBzY29wZSI+ZTwvZXJyb3I+KSB7CisgICAgICBlLnByaW50U3RhY2tUcmFjZSgpOworICAgIH0KKyAgfQorCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvVmFyaWFibGVBbHJlYWR5RGVmaW5lZFRvcC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvVmFyaWFibGVBbHJlYWR5RGVmaW5lZFRvcC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU1MGViMWQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9WYXJpYWJsZUFscmVhZHlEZWZpbmVkVG9wLmphdmEKQEAgLTAsMCArMSwyNSBAQAorY2xhc3MgcyB7CisgIHZvaWQgZigpIHsKKyAgICBpbnQgaTsKKyAgICBpbnQgPGVycm9yIGRlc2NyPSJWYXJpYWJsZSAnaScgaXMgYWxyZWFkeSBkZWZpbmVkIGluIHRoZSBzY29wZSI+aTwvZXJyb3I+OworICB9CisgIHZvaWQgZjEoKSB7CisgICAgaW50IGk7CisgICAgeworICAgICAgaW50IDxlcnJvciBkZXNjcj0iVmFyaWFibGUgJ2knIGlzIGFscmVhZHkgZGVmaW5lZCBpbiB0aGUgc2NvcGUiPmk8L2Vycm9yPjsKKyAgICB9CisgIH0KKyAgdm9pZCBmMigpIHsKKyAgICBpbnQgaTsKKyAgICBjbGFzcyBzcworICAgIHsKKyAgICAgIGludCBpOworICAgIH0KKyAgfQorCisgIGludCBmOworICBpbnQgPGVycm9yIGRlc2NyPSJWYXJpYWJsZSAnZicgaXMgYWxyZWFkeSBkZWZpbmVkIGluIHRoZSBzY29wZSI+ZjwvZXJyb3I+OworICB2b2lkIGYzKCkgeworICAgIGludCBmOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvWFhYLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9YWFguamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYTlhMTczCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvWFhYLmphdmEKQEAgLTAsMCArMSw1IEBACitpbXBvcnQgamF2YS5pby4qOworCitwdWJsaWMgY2xhc3MgeCB7Cisgc3RhdGljIHtpbnQgaTt9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvYUNsYXNzTG9hZGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9hQ2xhc3NMb2FkZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYmUzNWVhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvYUNsYXNzTG9hZGVyLmphdmEKQEAgLTAsMCArMSwxNzMxIEBACisvKgorICogQCgjKUNsYXNzTG9hZGVyLmphdmEJMS4xNjIgMDIvMDMvMTkKKyAqCisgKiBDb3B5cmlnaHQgMjAwMiBTdW4gTWljcm9zeXN0ZW1zLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBTVU4gUFJPUFJJRVRBUlkvQ09ORklERU5USUFMLiBVc2UgaXMgc3ViamVjdCB0byBsaWNlbnNlIHRlcm1zLgorICovCisKK2ltcG9ydCBqYXZhLmlvLklucHV0U3RyZWFtOworaW1wb3J0IGphdmEuaW8uSU9FeGNlcHRpb247CitpbXBvcnQgamF2YS5pby5TdHJpbmdXcml0ZXI7CitpbXBvcnQgamF2YS5pby5QcmludFdyaXRlcjsKK2ltcG9ydCBqYXZhLmlvLkZpbGU7CitpbXBvcnQgamF2YS5sYW5nLnJlZmxlY3QuQ29uc3RydWN0b3I7CitpbXBvcnQgamF2YS5sYW5nLnJlZmxlY3QuSW52b2NhdGlvblRhcmdldEV4Y2VwdGlvbjsKK2ltcG9ydCBqYXZhLnV0aWwuSGFzaHRhYmxlOworaW1wb3J0IGphdmEudXRpbC5FbnVtZXJhdGlvbjsKK2ltcG9ydCBqYXZhLnV0aWwuVmVjdG9yOworaW1wb3J0IGphdmEudXRpbC5TdGFjazsKK2ltcG9ydCBqYXZhLnV0aWwuSGFzaE1hcDsKK2ltcG9ydCBqYXZhLnV0aWwuSGFzaFNldDsKK2ltcG9ydCBqYXZhLnV0aWwuTWFwOworaW1wb3J0IGphdmEudXRpbC5Ob1N1Y2hFbGVtZW50RXhjZXB0aW9uOworaW1wb3J0IGphdmEudXRpbC5TZXQ7CitpbXBvcnQgamF2YS51dGlsLmphci5NYW5pZmVzdDsKK2ltcG9ydCBqYXZhLm5ldC5VUkw7CitpbXBvcnQgamF2YS5uZXQuTWFsZm9ybWVkVVJMRXhjZXB0aW9uOworaW1wb3J0IGphdmEuc2VjdXJpdHkuQWNjZXNzQ29udHJvbGxlcjsKK2ltcG9ydCBqYXZhLnNlY3VyaXR5LkFjY2Vzc0NvbnRyb2xDb250ZXh0OworaW1wb3J0IGphdmEuc2VjdXJpdHkuUHJpdmlsZWdlZEFjdGlvbjsKK2ltcG9ydCBqYXZhLnNlY3VyaXR5LlByaXZpbGVnZWRBY3Rpb25FeGNlcHRpb247CitpbXBvcnQgamF2YS5zZWN1cml0eS5Qcml2aWxlZ2VkRXhjZXB0aW9uQWN0aW9uOworaW1wb3J0IGphdmEuc2VjdXJpdHkuUHJvdGVjdGlvbkRvbWFpbjsKK2ltcG9ydCBqYXZhLnNlY3VyaXR5LlBlcm1pc3Npb25zOworaW1wb3J0IGphdmEuc2VjdXJpdHkuQ29kZVNvdXJjZTsKK2ltcG9ydCBqYXZhLnNlY3VyaXR5LlBvbGljeTsKK2ltcG9ydCBzdW4ubWlzYy5VUkxDbGFzc1BhdGg7CitpbXBvcnQgc3VuLm1pc2MuUmVzb3VyY2U7CitpbXBvcnQgc3VuLm1pc2MuQ29tcG91bmRFbnVtZXJhdGlvbjsKK2ltcG9ydCBzdW4ubWlzYy5DbGFzc0ZpbGVUcmFuc2Zvcm1lcjsKKy8vaW1wb3J0IHN1bi5taXNjLkxhdW5jaGVyOworaW1wb3J0IHN1bi5yZWZsZWN0LlJlZmxlY3Rpb247CitpbXBvcnQgc3VuLnNlY3VyaXR5LmFjdGlvbi5HZXRQcm9wZXJ0eUFjdGlvbjsKKworLyoqCisgKiBBIGNsYXNzIGxvYWRlciBpcyBhbiBvYmplY3QgdGhhdCBpcyByZXNwb25zaWJsZSBmb3IgbG9hZGluZworICogY2xhc3Nlcy4gVGhlIGNsYXNzIDxjb2RlPkNsYXNzTG9hZGVyPC9jb2RlPiBpcyBhbiBhYnN0cmFjdCBjbGFzcy4KKyAqIEdpdmVuIHRoZSBuYW1lIG9mIGEgY2xhc3MsIGEgY2xhc3MgbG9hZGVyIHNob3VsZCBhdHRlbXB0IHRvIGxvY2F0ZQorICogb3IgZ2VuZXJhdGUgZGF0YSB0aGF0IGNvbnN0aXR1dGVzIGEgZGVmaW5pdGlvbiBmb3IgdGhlIGNsYXNzLiBBCisgKiB0eXBpY2FsIHN0cmF0ZWd5IGlzIHRvIHRyYW5zZm9ybSB0aGUgbmFtZSBpbnRvIGEgZmlsZQorICogbmFtZSBhbmQgdGhlbiByZWFkIGEgImNsYXNzIGZpbGUiIG9mIHRoYXQgbmFtZSBmcm9tIGEgZmlsZSBzeXN0ZW0uCisgKiA8cD4KKyAqIEV2ZXJ5IDxjb2RlPkNsYXNzPC9jb2RlPiBvYmplY3QgY29udGFpbnMgYQorICoge0BsaW5rIENsYXNzI2dldENsYXNzTG9hZGVyKCkgcmVmZXJlbmNlfSB0byB0aGUKKyAqIDxjb2RlPkNsYXNzTG9hZGVyPC9jb2RlPiB0aGF0IGRlZmluZWQgaXQuCisgKiA8cD4KKyAqIENsYXNzIG9iamVjdHMgZm9yIGFycmF5IGNsYXNzZXMgYXJlIG5vdCBjcmVhdGVkIGJ5IGNsYXNzIGxvYWRlcnMsIGJ1dAorICogYXJlIGNyZWF0ZWQgYXV0b21hdGljYWxseSBhcyByZXF1aXJlZCBieSB0aGUgSmF2YSBydW50aW1lLiBUaGUgY2xhc3MKKyAqIGxvYWRlciBmb3IgYW4gYXJyYXkgY2xhc3MsIGFzIHJldHVybmVkIGJ5IHtAbGluayBDbGFzcyNnZXRDbGFzc0xvYWRlcigpfQorICogaXMgdGhlIHNhbWUgYXMgdGhlIGNsYXNzIGxvYWRlciBmb3IgaXRzIGVsZW1lbnQgdHlwZTsgaWYgdGhlIGVsZW1lbnQKKyAqIHR5cGUgaXMgYSBwcmltaXRpdmUgdHlwZSwgdGhlbiB0aGUgYXJyYXkgY2xhc3MgaGFzIG5vIGNsYXNzIGxvYWRlci4KKyAqIDxwPgorICogQXBwbGljYXRpb25zIGltcGxlbWVudCBzdWJjbGFzc2VzIG9mIDxjb2RlPkNsYXNzTG9hZGVyPC9jb2RlPiBpbgorICogb3JkZXIgdG8gZXh0ZW5kIHRoZSBtYW5uZXIgaW4gd2hpY2ggdGhlIEphdmEgdmlydHVhbCBtYWNoaW5lCisgKiBkeW5hbWljYWxseSBsb2FkcyBjbGFzc2VzLgorICogPHA+CisgKiBDbGFzcyBsb2FkZXJzIG1heSB0eXBpY2FsbHkgYmUgdXNlZCBieSBzZWN1cml0eSBtYW5hZ2VycyB0bworICogaW5kaWNhdGUgc2VjdXJpdHkgZG9tYWlucy4KKyAqIDxwPgorICogVGhlIDxjb2RlPkNsYXNzTG9hZGVyPC9jb2RlPiBjbGFzcyB1c2VzIGEgZGVsZWdhdGlvbiBtb2RlbCB0bworICogc2VhcmNoIGZvciBjbGFzc2VzIGFuZCByZXNvdXJjZXMuIEVhY2ggaW5zdGFuY2Ugb2YKKyAqIDxjb2RlPkNsYXNzTG9hZGVyPC9jb2RlPiBoYXMgYW4gYXNzb2NpYXRlZCBwYXJlbnQgY2xhc3MgbG9hZGVyLgorICogV2hlbiBjYWxsZWQgdXBvbiB0byBmaW5kIGEgY2xhc3Mgb3IgcmVzb3VyY2UsIGEKKyAqIDxjb2RlPkNsYXNzTG9hZGVyPC9jb2RlPiBpbnN0YW5jZSB3aWxsIGRlbGVnYXRlIHRoZSBzZWFyY2ggZm9yCisgKiB0aGUgY2xhc3Mgb3IgcmVzb3VyY2UgdG8gaXRzIHBhcmVudCBjbGFzcyBsb2FkZXIgYmVmb3JlCisgKiBhdHRlbXB0aW5nIHRvIGZpbmQgdGhlIGNsYXNzIG9yIHJlc291cmNlIGl0c2VsZi4gIFRoZSB2aXJ0dWFsCisgKiBtYWNoaW5lJ3MgYnVpbHQtaW4gY2xhc3MgbG9hZGVyLCBjYWxsZWQgdGhlIGJvb3RzdHJhcCBjbGFzcyBsb2FkZXIsCisgKiBkb2VzIG5vdCBpdHNlbGYgaGF2ZSBhIHBhcmVudCBidXQgbWF5IHNlcnZlIGFzIHRoZSBwYXJlbnQgb2YgYQorICogPGNvZGU+Q2xhc3NMb2FkZXI8L2NvZGU+IGluc3RhbmNlLgorICogPHA+CisgKiBOb3JtYWxseSwgdGhlIEphdmEgdmlydHVhbCBtYWNoaW5lIGxvYWRzIGNsYXNzZXMgZnJvbSB0aGUgbG9jYWwKKyAqIGZpbGUgc3lzdGVtIGluIGEgcGxhdGZvcm0tZGVwZW5kZW50IG1hbm5lci4gRm9yIGV4YW1wbGUsIG9uIFVOSVgKKyAqIHN5c3RlbXMsIHRoZSB2aXJ0dWFsIG1hY2hpbmUgbG9hZHMgY2xhc3NlcyBmcm9tIHRoZSBkaXJlY3RvcnkKKyAqIGRlZmluZWQgYnkgdGhlIDxjb2RlPkNMQVNTUEFUSDwvY29kZT4gZW52aXJvbm1lbnQgdmFyaWFibGUuCisgKiA8cD4KKyAqIEhvd2V2ZXIsIHNvbWUgY2xhc3NlcyBtYXkgbm90IG9yaWdpbmF0ZSBmcm9tIGEgZmlsZTsgdGhleSBtYXkKKyAqIG9yaWdpbmF0ZSBmcm9tIG90aGVyIHNvdXJjZXMsIHN1Y2ggYXMgdGhlIG5ldHdvcmssIG9yIHRoZXkgY291bGQKKyAqIGJlIGNvbnN0cnVjdGVkIGJ5IGFuIGFwcGxpY2F0aW9uLiBUaGUgbWV0aG9kCisgKiA8Y29kZT5kZWZpbmVDbGFzczwvY29kZT4gY29udmVydHMgYW4gYXJyYXkgb2YgYnl0ZXMgaW50byBhbgorICogaW5zdGFuY2Ugb2YgY2xhc3MgPGNvZGU+Q2xhc3M8L2NvZGU+LiBJbnN0YW5jZXMgb2YgdGhpcyBuZXdseQorICogZGVmaW5lZCBjbGFzcyBjYW4gYmUgY3JlYXRlZCB1c2luZyB0aGUgPGNvZGU+bmV3SW5zdGFuY2U8L2NvZGU+CisgKiBtZXRob2QgaW4gY2xhc3MgPGNvZGU+Q2xhc3M8L2NvZGU+LgorICogPHA+CisgKiBUaGUgbWV0aG9kcyBhbmQgY29uc3RydWN0b3JzIG9mIG9iamVjdHMgY3JlYXRlZCBieSBhIGNsYXNzIGxvYWRlcgorICogbWF5IHJlZmVyZW5jZSBvdGhlciBjbGFzc2VzLiBUbyBkZXRlcm1pbmUgdGhlIGNsYXNzKGVzKSByZWZlcnJlZAorICogdG8sIHRoZSBKYXZhIHZpcnR1YWwgbWFjaGluZSBjYWxscyB0aGUgPGNvZGU+bG9hZENsYXNzPC9jb2RlPgorICogbWV0aG9kIG9mIHRoZSBjbGFzcyBsb2FkZXIgdGhhdCBvcmlnaW5hbGx5IGNyZWF0ZWQgdGhlIGNsYXNzLgorICogPHA+CisgKiBGb3IgZXhhbXBsZSwgYW4gYXBwbGljYXRpb24gY291bGQgY3JlYXRlIGEgbmV0d29yayBjbGFzcyBsb2FkZXIKKyAqIHRvIGRvd25sb2FkIGNsYXNzIGZpbGVzIGZyb20gYSBzZXJ2ZXIuIFNhbXBsZSBjb2RlIG1pZ2h0IGxvb2sgbGlrZToKKyAqIDxibG9ja3F1b3RlPjxwcmU+CisgKiAgIENsYXNzTG9hZGVyIGxvYWRlciZuYnNwOz0gbmV3IE5ldHdvcmtDbGFzc0xvYWRlcihob3N0LCZuYnNwO3BvcnQpOworICogICBPYmplY3QgbWFpbiZuYnNwOz0gbG9hZGVyLmxvYWRDbGFzcygiTWFpbiIsIHRydWUpLm5ld0luc3RhbmNlKCk7CisgKgkgJm5ic3A7LiZuYnNwOy4mbmJzcDsuCisgKiA8L3ByZT48L2Jsb2NrcXVvdGU+CisgKiA8cD4KKyAqIFRoZSBuZXR3b3JrIGNsYXNzIGxvYWRlciBzdWJjbGFzcyBtdXN0IGRlZmluZSB0aGUgbWV0aG9kcworICogPGNvZGU+ZmluZENsYXNzPC9jb2RlPiBhbmQgPGNvZGU+bG9hZENsYXNzRGF0YTwvY29kZT4KKyAqIHRvIGxvYWQgYSBjbGFzcyBmcm9tIHRoZSBuZXR3b3JrLiBPbmNlIGl0CisgKiBoYXMgZG93bmxvYWRlZCB0aGUgYnl0ZXMgdGhhdCBtYWtlIHVwIHRoZSBjbGFzcywgaXQgc2hvdWxkIHVzZSB0aGUKKyAqIG1ldGhvZCA8Y29kZT5kZWZpbmVDbGFzczwvY29kZT4gdG8gY3JlYXRlIGEgY2xhc3MgaW5zdGFuY2UuIEEKKyAqIHNhbXBsZSBpbXBsZW1lbnRhdGlvbiBpczoKKyAqIDxwPjxocj48YmxvY2txdW90ZT48cHJlPgorICogICAgIGNsYXNzIE5ldHdvcmtDbGFzc0xvYWRlciBleHRlbmRzIENsYXNzTG9hZGVyIHsKKyAqICAgICAgICAgU3RyaW5nIGhvc3Q7CisgKiAgICAgICAgIGludCBwb3J0OworICoKKyAqICAgICAgICAgcHVibGljIENsYXNzIGZpbmRDbGFzcyhTdHJpbmcgbmFtZSkgeworICogICAgICAgICAgICAgYnl0ZVtdIGIgPSBsb2FkQ2xhc3NEYXRhKG5hbWUpOworICogICAgICAgICAgICAgcmV0dXJuIGRlZmluZUNsYXNzKG5hbWUsIGIsIDAsIGIubGVuZ3RoKTsKKyAqICAgICAgICAgfQorICoKKyAqICAgICAgICAgcHJpdmF0ZSBieXRlW10gbG9hZENsYXNzRGF0YShTdHJpbmcgbmFtZSkgeworICogICAgICAgICAgICAgLy8gbG9hZCB0aGUgY2xhc3MgZGF0YSBmcm9tIHRoZSBjb25uZWN0aW9uCisgKiAgICAgICAgICAgICAmbmJzcDsuJm5ic3A7LiZuYnNwOy4KKyAqICAgICAgICAgfQorICogICAgIH0KKyAqIDwvcHJlPjwvYmxvY2txdW90ZT48aHI+CisgKgorICogQHZlcnNpb24gMS4xNjIsIDAzLzE5LzAyCisgKiBAc2VlICAgICBqYXZhLmxhbmcuQ2xhc3MKKyAqIEBzZWUgICAgIGphdmEubGFuZy5DbGFzcyNuZXdJbnN0YW5jZSgpCisgKiBAc2VlICAgICBqYXZhLmxhbmcuQ2xhc3NMb2FkZXIjZGVmaW5lQ2xhc3MoYnl0ZVtdLCBpbnQsIGludCkKKyAqIEBzZWUgICAgIGphdmEubGFuZy5DbGFzc0xvYWRlciNsb2FkQ2xhc3MoamF2YS5sYW5nLlN0cmluZywgYm9vbGVhbikKKyAqIEBzZWUgICAgIGphdmEubGFuZy5DbGFzc0xvYWRlciNyZXNvbHZlQ2xhc3MoamF2YS5sYW5nLkNsYXNzKQorICogQHNpbmNlICAgSkRLMS4wCisgKi8KK3B1YmxpYyBhYnN0cmFjdCBjbGFzcyBDbGFzc0xvYWRlciB7CisKKyAgICBwcml2YXRlIHN0YXRpYyBuYXRpdmUgdm9pZCByZWdpc3Rlck5hdGl2ZXMoKTsKKyAgICBzdGF0aWMgeworICAgICAgICByZWdpc3Rlck5hdGl2ZXMoKTsKKyAgICB9CisKKyAgICAvKgorICAgICAqIElmIGluaXRpYWxpemF0aW9uIHN1Y2NlZWQgdGhpcyBpcyBzZXQgdG8gdHJ1ZSBhbmQgc2VjdXJpdHkgY2hlY2tzIHdpbGwKKyAgICAgKiBzdWNjZWVkLiBPdGhlcndpc2UgdGhlIG9iamVjdCBpcyBub3QgaW5pdGlhbGl6ZWQgYW5kIHRoZSBvYmplY3QgaXMKKyAgICAgKiB1c2VsZXNzLgorICAgICAqLworICAgIHByaXZhdGUgYm9vbGVhbiBpbml0aWFsaXplZCA9IGZhbHNlOworCisgICAgLyoKKyAgICAgKiBUaGUgcGFyZW50IGNsYXNzIGxvYWRlciBmb3IgZGVsZWdhdGlvbi4KKyAgICAgKi8KKyAgICBwcml2YXRlIENsYXNzTG9hZGVyIHBhcmVudDsKKworICAgIC8qCisgICAgICogSGFzaHRhYmxlIHRoYXQgbWFwcyBwYWNrYWdlcyB0byBjZXJ0cworICAgICAqLworICAgIHByaXZhdGUgSGFzaHRhYmxlIHBhY2thZ2UyY2VydHMgPSBuZXcgSGFzaHRhYmxlKDExKTsKKworICAgIC8qCisgICAgICogc2hhcmVkIGFtb25nIGFsbCBwYWNrYWdlcyB3aXRoIHVuc2lnbmVkIGNsYXNzZXMKKyAgICAgKi8KKyAgICBqYXZhLnNlY3VyaXR5LmNlcnQuQ2VydGlmaWNhdGVbXSBub2NlcnRzOworCisgICAgLyoKKyAgICAgKiBUaGUgY2xhc3NlcyBsb2FkZWQgYnkgdGhpcyBjbGFzcyBsb2FkZXIuIFRoZSBvbmx5IHB1cnBvc2Ugb2YgdGhpcworICAgICAqIHRhYmxlIGlzIHRvIGtlZXAgdGhlIGNsYXNzZXMgZnJvbSBiZWluZyBHQydlZCB1bnRpbCB0aGUgbG9hZGVyCisgICAgICogaXMgR0MnZWQuCisgICAgICovCisgICAgcHJpdmF0ZSBWZWN0b3IgY2xhc3NlcyA9IG5ldyBWZWN0b3IoKTsKKworICAgIC8qCisgICAgICogVGhlIGluaXRpYXRpbmcgcHJvdGVjdGlvbiBkb21haW5zIGZvciBhbGwgY2xhc3NlcworICAgICAqIGxvYWRlZCBieSB0aGlzIGxvYWRlci4KKyAgICAgKi8KKyAgICBwcml2YXRlIFNldCBkb21haW5zID0gbmV3IEhhc2hTZXQoKTsKKworICAgIC8qCisgICAgICogQ2FsbGVkIGJ5IHRoZSBWTSB0byByZWNvcmQgZXZlcnkgbG9hZGVkIGNsYXNzIHdpdGggdGhpcyBsb2FkZXIuCisgICAgICovCisgICAgdm9pZCBhZGRDbGFzcyhDbGFzcyBjKSB7CisgICAgICAgIGNsYXNzZXMuYWRkRWxlbWVudChjKTsKKyAgICB9CisKKyAgICAvKgorICAgICAqIFRoZSBwYWNrYWdlcyBkZWZpbmVkIGluIHRoaXMgY2xhc3MgbG9hZGVyLiBFYWNoIHBhY2thZ2UgbmFtZSBpcworICAgICAqIG1hcHBlZCB0byBpdHMgY29ycmVzcG9uZGluZyBQYWNrYWdlIG9iamVjdC4KKyAgICAgKi8KKyAgICBwcml2YXRlIEhhc2hNYXAgcGFja2FnZXMgPSBuZXcgSGFzaE1hcCgpOworCisgICAgLyoqCisgICAgICogQ3JlYXRlcyBhIG5ldyBjbGFzcyBsb2FkZXIgdXNpbmcgdGhlIHNwZWNpZmllZCBwYXJlbnQgY2xhc3MgbG9hZGVyCisgICAgICogZm9yIGRlbGVnYXRpb24uCisgICAgICogPHA+CisgICAgICogSWYgdGhlcmUgaXMgYSBzZWN1cml0eSBtYW5hZ2VyLCBpdHMgPGNvZGU+Y2hlY2tDcmVhdGVDbGFzc0xvYWRlcjwvY29kZT4KKyAgICAgKiBtZXRob2QgaXMgY2FsbGVkLiBUaGlzIG1heSByZXN1bHQgaW4gYSBzZWN1cml0eSBleGNlcHRpb24uCisgICAgICoKKyAgICAgKiBAcGFyYW0gcGFyZW50IHRoZSBwYXJlbnQgY2xhc3MgbG9hZGVyCisgICAgICoKKyAgICAgKiBAdGhyb3dzICBTZWN1cml0eUV4Y2VwdGlvbiBpZiBhIHNlY3VyaXR5IG1hbmFnZXIgZXhpc3RzIGFuZCBpdHMKKyAgICAgKiA8Y29kZT5jaGVja0NyZWF0ZUNsYXNzTG9hZGVyPC9jb2RlPiBtZXRob2QgZG9lc24ndCBhbGxvdyBjcmVhdGlvbiBvZiBhCisgICAgICogbmV3IGNsYXNzIGxvYWRlci4KKyAgICAgKiBAc2VlICAgICAgIGphdmEubGFuZy5TZWN1cml0eUV4Y2VwdGlvbgorICAgICAqIEBzZWUgICAgICAgamF2YS5sYW5nLlNlY3VyaXR5TWFuYWdlciNjaGVja0NyZWF0ZUNsYXNzTG9hZGVyKCkKKyAgICAgKiBAc2luY2UgICAgIDEuMgorICAgICAqLworICAgIHByb3RlY3RlZCBDbGFzc0xvYWRlcihDbGFzc0xvYWRlciBwYXJlbnQpIHsKKwlTZWN1cml0eU1hbmFnZXIgc2VjdXJpdHkgPSBTeXN0ZW0uZ2V0U2VjdXJpdHlNYW5hZ2VyKCk7CisJaWYgKHNlY3VyaXR5ICE9IG51bGwpIHsKKwkgICAgc2VjdXJpdHkuY2hlY2tDcmVhdGVDbGFzc0xvYWRlcigpOworCX0KKwl0aGlzLnBhcmVudCA9IHBhcmVudDsKKwlpbml0aWFsaXplZCA9IHRydWU7CisgICAgfQorCisgICAgLyoqCisgICAgICogQ3JlYXRlcyBhIG5ldyBjbGFzcyBsb2FkZXIgdXNpbmcgdGhlIDxjb2RlPkNsYXNzTG9hZGVyPC9jb2RlPgorICAgICAqIHJldHVybmVkIGJ5IHRoZSBtZXRob2QgPGNvZGU+Z2V0U3lzdGVtQ2xhc3NMb2FkZXIoKTwvY29kZT4gYXMgdGhlCisgICAgICogcGFyZW50IGNsYXNzIGxvYWRlci4KKyAgICAgKiA8cD4KKyAgICAgKiBJZiB0aGVyZSBpcyBhIHNlY3VyaXR5IG1hbmFnZXIsIGl0cyA8Y29kZT5jaGVja0NyZWF0ZUNsYXNzTG9hZGVyPC9jb2RlPgorICAgICAqIG1ldGhvZCBpcyBjYWxsZWQuIFRoaXMgbWF5IHJlc3VsdCBpbiBhIHNlY3VyaXR5IGV4Y2VwdGlvbi4KKyAgICAgKgorICAgICAqIEB0aHJvd3MgIFNlY3VyaXR5RXhjZXB0aW9uCisgICAgICogICAgaWYgYSBzZWN1cml0eSBtYW5hZ2VyIGV4aXN0cyBhbmQgaXRzIDxjb2RlPmNoZWNrQ3JlYXRlQ2xhc3NMb2FkZXI8L2NvZGU+CisgICAgICogICAgbWV0aG9kIGRvZXNuJ3QgYWxsb3cgY3JlYXRpb24gb2YgYSBuZXcgY2xhc3MgbG9hZGVyLgorICAgICAqCisgICAgICogQHNlZSAgICAgICBqYXZhLmxhbmcuU2VjdXJpdHlFeGNlcHRpb24KKyAgICAgKiBAc2VlICAgICAgIGphdmEubGFuZy5TZWN1cml0eU1hbmFnZXIjY2hlY2tDcmVhdGVDbGFzc0xvYWRlcigpCisgICAgICovCisgICAgcHJvdGVjdGVkIENsYXNzTG9hZGVyKCkgeworCVNlY3VyaXR5TWFuYWdlciBzZWN1cml0eSA9IFN5c3RlbS5nZXRTZWN1cml0eU1hbmFnZXIoKTsKKwlpZiAoc2VjdXJpdHkgIT0gbnVsbCkgeworCSAgICBzZWN1cml0eS5jaGVja0NyZWF0ZUNsYXNzTG9hZGVyKCk7CisJfQorCXRoaXMucGFyZW50ID0gZ2V0U3lzdGVtQ2xhc3NMb2FkZXIoKTsKKwlpbml0aWFsaXplZCA9IHRydWU7CisgICAgfQorCisgICAgLyoqCisgICAgICogTG9hZHMgdGhlIGNsYXNzIHdpdGggdGhlIHNwZWNpZmllZCBuYW1lLiBUaGlzIG1ldGhvZCBzZWFyY2hlcyBmb3IKKyAgICAgKiBjbGFzc2VzIGluIHRoZSBzYW1lIG1hbm5lciBhcyB0aGUge0BsaW5rICNsb2FkQ2xhc3MoU3RyaW5nLCBib29sZWFuKX0KKyAgICAgKiBtZXRob2QuIEl0IGlzIGNhbGxlZCBieSB0aGUgSmF2YSB2aXJ0dWFsIG1hY2hpbmUgdG8gcmVzb2x2ZSBjbGFzcworICAgICAqIHJlZmVyZW5jZXMuIENhbGxpbmcgdGhpcyBtZXRob2QgaXMgZXF1aXZhbGVudCB0byBjYWxsaW5nCisgICAgICogPGNvZGU+bG9hZENsYXNzKG5hbWUsIGZhbHNlKTwvY29kZT4uCisgICAgICoKKyAgICAgKiBAcGFyYW0gICAgIG5hbWUgdGhlIG5hbWUgb2YgdGhlIGNsYXNzCisgICAgICogQHJldHVybiAgICB0aGUgcmVzdWx0aW5nIDxjb2RlPkNsYXNzPC9jb2RlPiBvYmplY3QKKyAgICAgKiBAZXhjZXB0aW9uIENsYXNzTm90Rm91bmRFeGNlcHRpb24gaWYgdGhlIGNsYXNzIHdhcyBub3QgZm91bmQKKyAgICAgKi8KKyAgICBwdWJsaWMgQ2xhc3MgbG9hZENsYXNzKFN0cmluZyBuYW1lKSB0aHJvd3MgQ2xhc3NOb3RGb3VuZEV4Y2VwdGlvbgorICAgIHsKKwlyZXR1cm4gbG9hZENsYXNzKG5hbWUsIGZhbHNlKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBMb2FkcyB0aGUgY2xhc3Mgd2l0aCB0aGUgc3BlY2lmaWVkIG5hbWUuICBUaGUgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiBvZgorICAgICAqIHRoaXMgbWV0aG9kIHNlYXJjaGVzIGZvciBjbGFzc2VzIGluIHRoZSBmb2xsb3dpbmcgb3JkZXI6PHA+CisgICAgICoKKyAgICAgKiA8b2w+CisgICAgICogPGxpPiBDYWxsIHtAbGluayAjZmluZExvYWRlZENsYXNzKFN0cmluZyl9IHRvIGNoZWNrIGlmIHRoZSBjbGFzcyBoYXMKKyAgICAgKiAgICAgIGFscmVhZHkgYmVlbiBsb2FkZWQuIDxwPgorICAgICAqIDxsaT4gQ2FsbCB0aGUgPGNvZGU+bG9hZENsYXNzPC9jb2RlPiBtZXRob2Qgb24gdGhlIHBhcmVudCBjbGFzcworICAgICAqICAgICAgbG9hZGVyLiAgSWYgdGhlIHBhcmVudCBpcyA8Y29kZT5udWxsPC9jb2RlPiB0aGUgY2xhc3MgbG9hZGVyCisgICAgICogICAgICBidWlsdC1pbiB0byB0aGUgdmlydHVhbCBtYWNoaW5lIGlzIHVzZWQsIGluc3RlYWQuIDxwPgorICAgICAqIDxsaT4gQ2FsbCB0aGUge0BsaW5rICNmaW5kQ2xhc3MoU3RyaW5nKX0gbWV0aG9kIHRvIGZpbmQgdGhlIGNsYXNzLiA8cD4KKyAgICAgKiA8L29sPgorICAgICAqCisgICAgICogSWYgdGhlIGNsYXNzIHdhcyBmb3VuZCB1c2luZyB0aGUgYWJvdmUgc3RlcHMsIGFuZCB0aGUKKyAgICAgKiA8Y29kZT5yZXNvbHZlPC9jb2RlPiBmbGFnIGlzIHRydWUsIHRoaXMgbWV0aG9kIHdpbGwgdGhlbiBjYWxsIHRoZQorICAgICAqIHtAbGluayAjcmVzb2x2ZUNsYXNzKENsYXNzKX0gbWV0aG9kIG9uIHRoZSByZXN1bHRpbmcgY2xhc3Mgb2JqZWN0LgorICAgICAqIDxwPgorICAgICAqIEZyb20gdGhlIEphdmEgMiBTREssIHYxLjIsIHN1YmNsYXNzZXMgb2YgQ2xhc3NMb2FkZXIgYXJlCisgICAgICogZW5jb3VyYWdlZCB0byBvdmVycmlkZQorICAgICAqIHtAbGluayAjZmluZENsYXNzKFN0cmluZyl9LCByYXRoZXIgdGhhbiB0aGlzIG1ldGhvZC48cD4KKyAgICAgKgorICAgICAqIEBwYXJhbSAgICAgbmFtZSB0aGUgbmFtZSBvZiB0aGUgY2xhc3MKKyAgICAgKiBAcGFyYW0gICAgIHJlc29sdmUgaWYgPGNvZGU+dHJ1ZTwvY29kZT4gdGhlbiByZXNvbHZlIHRoZSBjbGFzcworICAgICAqIEByZXR1cm4JICB0aGUgcmVzdWx0aW5nIDxjb2RlPkNsYXNzPC9jb2RlPiBvYmplY3QKKyAgICAgKiBAZXhjZXB0aW9uIENsYXNzTm90Rm91bmRFeGNlcHRpb24gaWYgdGhlIGNsYXNzIGNvdWxkIG5vdCBiZSBmb3VuZAorICAgICAqLworICAgIHByb3RlY3RlZCBzeW5jaHJvbml6ZWQgQ2xhc3MgbG9hZENsYXNzKFN0cmluZyBuYW1lLCBib29sZWFuIHJlc29sdmUpCisJdGhyb3dzIENsYXNzTm90Rm91bmRFeGNlcHRpb24KKyAgICB7CisJLy8gRmlyc3QsIGNoZWNrIGlmIHRoZSBjbGFzcyBoYXMgYWxyZWFkeSBiZWVuIGxvYWRlZAorCUNsYXNzIGMgPSBmaW5kTG9hZGVkQ2xhc3MobmFtZSk7CisJaWYgKGMgPT0gbnVsbCkgeworCSAgICB0cnkgeworCQlpZiAocGFyZW50ICE9IG51bGwpIHsKKwkJICAgIGMgPSBwYXJlbnQubG9hZENsYXNzKG5hbWUsIGZhbHNlKTsKKwkJfSBlbHNlIHsKKwkJICAgIGMgPSBmaW5kQm9vdHN0cmFwQ2xhc3MwKG5hbWUpOworCQl9CisJICAgIH0gY2F0Y2ggKENsYXNzTm90Rm91bmRFeGNlcHRpb24gZSkgeworCSAgICAgICAgLy8gSWYgc3RpbGwgbm90IGZvdW5kLCB0aGVuIGNhbGwgZmluZENsYXNzIGluIG9yZGVyCisJICAgICAgICAvLyB0byBmaW5kIHRoZSBjbGFzcy4KKwkgICAgICAgIGMgPSBmaW5kQ2xhc3MobmFtZSk7CisJICAgIH0KKwl9CisJaWYgKHJlc29sdmUpIHsKKwkgICAgcmVzb2x2ZUNsYXNzKGMpOworCX0KKwlyZXR1cm4gYzsKKyAgICB9CisKKyAgICAvKgorICAgICAqIFRoaXMgbWV0aG9kIGlzIGNhbGxlZCBieSB0aGUgdmlydHVhbCBtYWNoaW5lIHRvIGxvYWQKKyAgICAgKiBhIGNsYXNzLgorICAgICAqLworICAgIHByaXZhdGUgc3luY2hyb25pemVkIENsYXNzIGxvYWRDbGFzc0ludGVybmFsKFN0cmluZyBuYW1lKQorCXRocm93cyBDbGFzc05vdEZvdW5kRXhjZXB0aW9uIHsKKworCXJldHVybiBsb2FkQ2xhc3MobmFtZSk7CisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIGNoZWNrUGFja2FnZUFjY2VzcyhDbGFzcyBjbHMsIFByb3RlY3Rpb25Eb21haW4gcGQpIHsKKwlmaW5hbCBTZWN1cml0eU1hbmFnZXIgc20gPSBTeXN0ZW0uZ2V0U2VjdXJpdHlNYW5hZ2VyKCk7CisJaWYgKHNtICE9IG51bGwpIHsKKwkgICAgZmluYWwgU3RyaW5nIG5hbWUgPSBjbHMuZ2V0TmFtZSgpOworICAgICAgICAgICAgZmluYWwgaW50IGkgPSBuYW1lLmxhc3RJbmRleE9mKCcuJyk7CisJICAgIGlmIChpICE9IC0xKSB7CisgICAgICAgICAgICAgICAgQWNjZXNzQ29udHJvbGxlci5kb1ByaXZpbGVnZWQobmV3IFByaXZpbGVnZWRBY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgICAgIHB1YmxpYyBPYmplY3QgcnVuKCkgeworCQkgICAgICAgIHNtLmNoZWNrUGFja2FnZUFjY2VzcyhuYW1lLnN1YnN0cmluZygwLCBpKSk7CisJCSAgICAgICAgcmV0dXJuIG51bGw7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9LCBuZXcgQWNjZXNzQ29udHJvbENvbnRleHQobmV3IFByb3RlY3Rpb25Eb21haW5bXSB7cGR9KSk7CisJICAgIH0KKwl9CisJZG9tYWlucy5hZGQocGQpOworICAgIH0KKworICAgIC8qKgorICAgICAqIEZpbmRzIHRoZSBzcGVjaWZpZWQgY2xhc3MuIFRoaXMgbWV0aG9kIHNob3VsZCBiZSBvdmVycmlkZGVuCisgICAgICogYnkgY2xhc3MgbG9hZGVyIGltcGxlbWVudGF0aW9ucyB0aGF0IGZvbGxvdyB0aGUgbmV3IGRlbGVnYXRpb24gbW9kZWwKKyAgICAgKiBmb3IgbG9hZGluZyBjbGFzc2VzLCBhbmQgd2lsbCBiZSBjYWxsZWQgYnkgdGhlIDxjb2RlPmxvYWRDbGFzczwvY29kZT4KKyAgICAgKiBtZXRob2QgYWZ0ZXIgY2hlY2tpbmcgdGhlIHBhcmVudCBjbGFzcyBsb2FkZXIgZm9yIHRoZSByZXF1ZXN0ZWQgY2xhc3MuCisgICAgICogVGhlIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gdGhyb3dzIDxjb2RlPkNsYXNzTm90Rm91bmRFeGNlcHRpb248L2NvZGU+LgorICAgICAqCisgICAgICogQHBhcmFtICBuYW1lIHRoZSBuYW1lIG9mIHRoZSBjbGFzcworICAgICAqIEByZXR1cm4gdGhlIHJlc3VsdGluZyA8Y29kZT5DbGFzczwvY29kZT4gb2JqZWN0CisgICAgICogQGV4Y2VwdGlvbiBDbGFzc05vdEZvdW5kRXhjZXB0aW9uIGlmIHRoZSBjbGFzcyBjb3VsZCBub3QgYmUgZm91bmQKKyAgICAgKiBAc2luY2UgIDEuMgorICAgICAqLworICAgIHByb3RlY3RlZCBDbGFzcyBmaW5kQ2xhc3MoU3RyaW5nIG5hbWUpIHRocm93cyBDbGFzc05vdEZvdW5kRXhjZXB0aW9uIHsKKwl0aHJvdyBuZXcgQ2xhc3NOb3RGb3VuZEV4Y2VwdGlvbihuYW1lKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDb252ZXJ0cyBhbiBhcnJheSBvZiBieXRlcyBpbnRvIGFuIGluc3RhbmNlIG9mIGNsYXNzCisgICAgICogPGNvZGU+Q2xhc3M8L2NvZGU+LiAgQmVmb3JlIHRoZSBDbGFzcyBjYW4gYmUgdXNlZCBpdCBtdXN0IGJlCisgICAgICogcmVzb2x2ZWQuIFRoaXMgbWV0aG9kIGlzIGRlcHJlY2F0ZWQgaW4gZmF2b3Igb2YgdGhlIHZlcnNpb24KKyAgICAgKiB0aGF0IHRha2VzIHRoZSBjbGFzcyBuYW1lIGFzIGl0cyBmaXJzdCBhcmd1bWVudCwgYW5kIGlzIG1vcmUKKyAgICAgKiBzZWN1cmUuCisgICAgICoKKyAgICAgKiBAcGFyYW0gICAgICBiICAgdGhlIGJ5dGVzIHRoYXQgbWFrZSB1cCB0aGUgY2xhc3MgZGF0YS4gVGhlIGJ5dGVzIGluCisgICAgICogICAgICAgICAgICAgcG9zaXRpb25zIDxjb2RlPm9mZjwvY29kZT4gdGhyb3VnaCA8Y29kZT5vZmYrbGVuLTE8L2NvZGU+CisgICAgICogICAgICAgICAgICAgc2hvdWxkIGhhdmUgdGhlIGZvcm1hdCBvZiBhIHZhbGlkIGNsYXNzIGZpbGUgYXMgZGVmaW5lZAorICAgICAqICAgICAgICAgICAgIGJ5IHRoZQorICAgICAqICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHA6Ly9qYXZhLnN1bi5jb20vZG9jcy9ib29rcy92bXNwZWMvIj5KYXZhCisgICAgICogICAgICAgICAgICAgVmlydHVhbCBNYWNoaW5lIFNwZWNpZmljYXRpb248L2E+LgorICAgICAqIEBwYXJhbSAgICAgIG9mZiAgdGhlIHN0YXJ0IG9mZnNldCBpbiA8Y29kZT5iPC9jb2RlPiBvZiB0aGUgY2xhc3MgZGF0YQorICAgICAqIEBwYXJhbSAgICAgIGxlbiB0aGUgbGVuZ3RoIG9mIHRoZSBjbGFzcyBkYXRhCisgICAgICogQHJldHVybiAgICAgdGhlIDxjb2RlPkNsYXNzPC9jb2RlPiBvYmplY3QgdGhhdCB3YXMgY3JlYXRlZCBmcm9tIHRoZQorICAgICAqICAgICAgICAgICAgIHNwZWNpZmllZCBjbGFzcyBkYXRhCisgICAgICogQGV4Y2VwdGlvbiAgQ2xhc3NGb3JtYXRFcnJvciBpZiB0aGUgZGF0YSBkaWQgbm90IGNvbnRhaW4gYSB2YWxpZCBjbGFzcworICAgICAqIEBleGNlcHRpb24gIEluZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb24gaWYgZWl0aGVyIDxjb2RlPm9mZjwvY29kZT4gb3IKKyAgICAgKiAgICAgICAgICAgICA8Y29kZT5sZW48L2NvZGU+IGlzIG5lZ2F0aXZlLCBvciBpZgorICAgICAqICAgICAgICAgICAgIDxjb2RlPm9mZitsZW48L2NvZGU+IGlzIGdyZWF0ZXIgdGhhbiA8Y29kZT5iLmxlbmd0aDwvY29kZT4uCisgICAgICogQHNlZSAgICAgICAgQ2xhc3NMb2FkZXIjbG9hZENsYXNzKGphdmEubGFuZy5TdHJpbmcsIGJvb2xlYW4pCisgICAgICogQHNlZSAgICAgICAgQ2xhc3NMb2FkZXIjcmVzb2x2ZUNsYXNzKGphdmEubGFuZy5DbGFzcykKKyAgICAgKiBAZGVwcmVjYXRlZCBSZXBsYWNlZCBieSBkZWZpbmVDbGFzcyhqYXZhLmxhbmcuU3RyaW5nLCBieXRlW10sIGludCwgaW50KQorICAgICAqLworICAgIHByb3RlY3RlZCBmaW5hbCBDbGFzcyBkZWZpbmVDbGFzcyhieXRlW10gYiwgaW50IG9mZiwgaW50IGxlbikKKwl0aHJvd3MgQ2xhc3NGb3JtYXRFcnJvcgorICAgIHsKKwlyZXR1cm4gZGVmaW5lQ2xhc3MobnVsbCwgYiwgb2ZmLCBsZW4sIG51bGwpOworICAgIH0KKworICAgIC8qKgorICAgICAqIENvbnZlcnRzIGFuIGFycmF5IG9mIGJ5dGVzIGludG8gYW4gaW5zdGFuY2Ugb2YgY2xhc3MgPGNvZGU+Q2xhc3M8L2NvZGU+LgorICAgICAqIEJlZm9yZSB0aGUgQ2xhc3MgY2FuIGJlIHVzZWQgaXQgbXVzdCBiZSByZXNvbHZlZC4KKyAgICAgKiA8cD4KKyAgICAgKiBUaGlzIG1ldGhvZCBhc3NpZ25zIGEgZGVmYXVsdCA8Y29kZT5Qcm90ZWN0aW9uRG9tYWluPC9jb2RlPiB0bworICAgICAqIHRoZSBuZXdseSBkZWZpbmVkIGNsYXNzLiBUaGUgPGNvZGU+UHJvdGVjdGlvbkRvbWFpbjwvY29kZT4KKyAgICAgKiBjb250YWlucyB0aGUgc2V0IG9mIHBlcm1pc3Npb25zIGdyYW50ZWQgd2hlbgorICAgICAqIGEgY2FsbCB0byA8Y29kZT5Qb2xpY3kuZ2V0UG9saWN5KCkuZ2V0UGVybWlzc2lvbnMoKTwvY29kZT4gaXMgbWFkZSB3aXRoCisgICAgICogYSBjb2RlIHNvdXJjZSBvZiA8Y29kZT5udWxsLG51bGw8L2NvZGU+LiBUaGUgZGVmYXVsdCBkb21haW4gaXMKKyAgICAgKiBjcmVhdGVkIG9uIHRoZSBmaXJzdCBpbnZvY2F0aW9uIG9mIDxjb2RlPmRlZmluZUNsYXNzPC9jb2RlPiwgYW5kCisgICAgICogcmUtdXNlZCBvbiBzdWJzZXF1ZW50IGNhbGxzLgorICAgICAqIDxwPgorICAgICAqIFRvIGFzc2lnbiBhIHNwZWNpZmljIDxjb2RlPlByb3RlY3Rpb25Eb21haW48L2NvZGU+IHRvIHRoZSBjbGFzcywKKyAgICAgKiB1c2UgdGhlIDxjb2RlPmRlZmluZUNsYXNzPC9jb2RlPiBtZXRob2QgdGhhdCB0YWtlcyBhCisgICAgICogPGNvZGU+UHJvdGVjdGlvbkRvbWFpbjwvY29kZT4gYXMgb25lIG9mIGl0cyBhcmd1bWVudHMuCisgICAgICoKKyAgICAgKiBAcGFyYW0gICAgICBuYW1lIHRoZSBleHBlY3RlZCBuYW1lIG9mIHRoZSBjbGFzcywgb3IgPGNvZGU+bnVsbDwvY29kZT4KKyAgICAgKiAgICAgICAgICAgICAgICAgIGlmIG5vdCBrbm93biwgdXNpbmcgJy4nIGFuZCBub3QgJy8nIGFzIHRoZSBzZXBhcmF0b3IKKyAgICAgKiAgICAgICAgICAgICAgICAgIGFuZCB3aXRob3V0IGEgdHJhaWxpbmcgIi5jbGFzcyIgc3VmZml4LgorICAgICAqIEBwYXJhbSAgICAgIGIgICAgdGhlIGJ5dGVzIHRoYXQgbWFrZSB1cCB0aGUgY2xhc3MgZGF0YS4gVGhlIGJ5dGVzIGluCisgICAgICogICAgICAgICAgICAgcG9zaXRpb25zIDxjb2RlPm9mZjwvY29kZT4gdGhyb3VnaCA8Y29kZT5vZmYrbGVuLTE8L2NvZGU+CisgICAgICogICAgICAgICAgICAgc2hvdWxkIGhhdmUgdGhlIGZvcm1hdCBvZiBhIHZhbGlkIGNsYXNzIGZpbGUgYXMgZGVmaW5lZAorICAgICAqICAgICAgICAgICAgIGJ5IHRoZQorICAgICAqICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHA6Ly9qYXZhLnN1bi5jb20vZG9jcy9ib29rcy92bXNwZWMvIj5KYXZhCisgICAgICogICAgICAgICAgICAgVmlydHVhbCBNYWNoaW5lIFNwZWNpZmljYXRpb248L2E+LgorICAgICAqIEBwYXJhbSAgICAgIG9mZiAgdGhlIHN0YXJ0IG9mZnNldCBpbiA8Y29kZT5iPC9jb2RlPiBvZiB0aGUgY2xhc3MgZGF0YQorICAgICAqIEBwYXJhbSAgICAgIGxlbiAgdGhlIGxlbmd0aCBvZiB0aGUgY2xhc3MgZGF0YQorICAgICAqIEByZXR1cm4gICAgIHRoZSA8Y29kZT5DbGFzczwvY29kZT4gb2JqZWN0IHRoYXQgd2FzIGNyZWF0ZWQgZnJvbSB0aGUKKyAgICAgKiAgICAgICAgICAgICBzcGVjaWZpZWQgY2xhc3MgZGF0YQorICAgICAqIEBleGNlcHRpb24gIENsYXNzRm9ybWF0RXJyb3IgaWYgdGhlIGRhdGEgZGlkIG5vdCBjb250YWluIGEgdmFsaWQgY2xhc3MKKyAgICAgKiBAZXhjZXB0aW9uICBJbmRleE91dE9mQm91bmRzRXhjZXB0aW9uIGlmIGVpdGhlciA8Y29kZT5vZmY8L2NvZGU+IG9yCisgICAgICogICAgICAgICAgICAgPGNvZGU+bGVuPC9jb2RlPiBpcyBuZWdhdGl2ZSwgb3IgaWYKKyAgICAgKiAgICAgICAgICAgICA8Y29kZT5vZmYrbGVuPC9jb2RlPiBpcyBncmVhdGVyIHRoYW4gPGNvZGU+Yi5sZW5ndGg8L2NvZGU+LgorICAgICAqIEBleGNlcHRpb24gIFNlY3VyaXR5RXhjZXB0aW9uIGlmIGFuIGF0dGVtcHQgaXMgbWFkZSB0byBhZGQgdGhpcyBjbGFzcworICAgICAqICAgICAgICAgICAgIHRvIGEgcGFja2FnZSB0aGF0IGNvbnRhaW5zIGNsYXNzZXMgdGhhdCB3ZXJlIHNpZ25lZCBieQorICAgICAqICAgICAgICAgICAgIGEgZGlmZmVyZW50IHNldCBvZiBjZXJ0aWZpY2F0ZXMgdGhhbiB0aGlzIGNsYXNzICh3aGljaAorICAgICAqICAgICAgICAgICAgIGlzIHVuc2lnbmVkKSwgb3IgaWYgdGhlIGNsYXNzIG5hbWUgYmVnaW5zIHdpdGggImphdmEuIi4KKyAgICAgKgorICAgICAqIEBzZWUgICAgICAgIENsYXNzTG9hZGVyI2xvYWRDbGFzcyhqYXZhLmxhbmcuU3RyaW5nLCBib29sZWFuKQorICAgICAqIEBzZWUgICAgICAgIENsYXNzTG9hZGVyI3Jlc29sdmVDbGFzcyhqYXZhLmxhbmcuQ2xhc3MpCisgICAgICogQHNlZSAgICAgICAgamF2YS5zZWN1cml0eS5Qcm90ZWN0aW9uRG9tYWluCisgICAgICogQHNlZSAgICAgICAgamF2YS5zZWN1cml0eS5Qb2xpY3kKKyAgICAgKiBAc2VlICAgICAgICBqYXZhLnNlY3VyaXR5LkNvZGVTb3VyY2UKKyAgICAgKiBAc2VlICAgICAgICBqYXZhLnNlY3VyaXR5LlNlY3VyZUNsYXNzTG9hZGVyCisgICAgICogQHNpbmNlICAgICAgSkRLMS4xCisgICAgICovCisgICAgcHJvdGVjdGVkIGZpbmFsIENsYXNzIGRlZmluZUNsYXNzKFN0cmluZyBuYW1lLCBieXRlW10gYiwgaW50IG9mZiwgaW50IGxlbikKKwl0aHJvd3MgQ2xhc3NGb3JtYXRFcnJvcgorICAgIHsKKwlyZXR1cm4gZGVmaW5lQ2xhc3MobmFtZSwgYiwgb2ZmLCBsZW4sIG51bGwpOworICAgIH0KKworICAgIC8qKgorICAgICAqIENvbnZlcnRzIGFuIGFycmF5IG9mIGJ5dGVzIGludG8gYW4gaW5zdGFuY2Ugb2YgY2xhc3MgQ2xhc3MsCisgICAgICogd2l0aCBhbiBvcHRpb25hbCBQcm90ZWN0aW9uRG9tYWluLiBJZiB0aGUgZG9tYWluIGlzIDxjb2RlPm51bGw8L2NvZGU+LAorICAgICAqIHRoZW4gYSBkZWZhdWx0IGRvbWFpbiB3aWxsIGJlIGFzc2lnbmVkIHRvIHRoZSBjbGFzcyBhcyBzcGVjaWZpZWQKKyAgICAgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBmb3Ige0BsaW5rICNkZWZpbmVDbGFzcyhTdHJpbmcsYnl0ZVtdLGludCxpbnQpfS4KKyAgICAgKiBCZWZvcmUgdGhlIGNsYXNzIGNhbiBiZSB1c2VkIGl0IG11c3QgYmUgcmVzb2x2ZWQuCisgICAgICoKKyAgICAgKiA8cD5UaGUgZmlyc3QgY2xhc3MgZGVmaW5lZCBpbiBhIHBhY2thZ2UgZGV0ZXJtaW5lcyB0aGUgZXhhY3Qgc2V0IG9mCisgICAgICogY2VydGlmaWNhdGVzIHRoYXQgYWxsIHN1YnNlcXVlbnQgY2xhc3NlcyBkZWZpbmVkIGluIHRoYXQgcGFja2FnZSBtdXN0CisgICAgICogY29udGFpbi4gVGhlIHNldCBvZiBjZXJ0aWZpY2F0ZXMgZm9yIGEgY2xhc3MgaXMgb2J0YWluZWQgZnJvbSB0aGUKKyAgICAgKiA8Y29kZT5Db2RlU291cmNlPC9jb2RlPiB3aXRoaW4gdGhlIDxjb2RlPlByb3RlY3Rpb25Eb21haW48L2NvZGU+IG9mCisgICAgICogdGhlIGNsYXNzLiBBbnkgY2xhc3NlcyBhZGRlZCB0byB0aGF0IHBhY2thZ2UgbXVzdCBjb250YWluCisgICAgICogdGhlIHNhbWUgc2V0IG9mIGNlcnRpZmljYXRlcyBvciBhIDxjb2RlPlNlY3VyaXR5RXhjZXB0aW9uPC9jb2RlPgorICAgICAqIHdpbGwgYmUgdGhyb3duLiBOb3RlIHRoYXQgaWYgdGhlIDxjb2RlPm5hbWU8L2NvZGU+IGFyZ3VtZW50IGlzCisgICAgICogbnVsbCwgdGhpcyBjaGVjayBpcyBub3QgcGVyZm9ybWVkLiBZb3Ugc2hvdWxkIGFsd2F5cyBwYXNzIGluIHRoZQorICAgICAqIG5hbWUgb2YgdGhlIGNsYXNzIHlvdSBhcmUgZGVmaW5pbmcgYXMgd2VsbCBhcyB0aGUgYnl0ZXMuIFRoaXMKKyAgICAgKiBlbnN1cmVzIHRoYXQgdGhlIGNsYXNzIHlvdSBhcmUgZGVmaW5pbmcgaXMgaW5kZWVkIHRoZSBjbGFzcworICAgICAqIHlvdSB0aGluayBpdCBpcy4KKyAgICAgKgorICAgICAqIDxwPlRoZSBzcGVjaWZpZWQgY2xhc3MgbmFtZSBjYW5ub3QgYmVnaW4gd2l0aCAiamF2YS4iLCBzaW5jZSBhbGwKKyAgICAgKiBjbGFzc2VzIGluIHRoZSBqYXZhLiogcGFja2FnZXMgY2FuIG9ubHkgYmUgZGVmaW5lZCBieSB0aGUgYm9vdHN0cmFwCisgICAgICogY2xhc3MgbG9hZGVyLiBJZiB0aGUgbmFtZSBwYXJhbWV0ZXIgaXMgbm90IDxUVD5udWxsPC9UVD4sIGl0CisgICAgICogbXVzdCBiZSBlcXVhbCB0byB0aGUgbmFtZSBvZiB0aGUgY2xhc3Mgc3BlY2lmaWVkIGJ5IHRoZSBieXRlCisgICAgICogYXJyYXkgYiwgb3RoZXJ3aXNlIGEgPFRUPkNsYXNzRm9ybWF0RXJyb3I8L1RUPiBpcyByYWlzZWQuCisgICAgICoKKyAgICAgKiBAcGFyYW0gICAgICBuYW1lIHRoZSBleHBlY3RlZCBuYW1lIG9mIHRoZSBjbGFzcywgb3IgPGNvZGU+bnVsbDwvY29kZT4KKyAgICAgKiAgICAgICAgICAgICAgICAgIGlmIG5vdCBrbm93biwgdXNpbmcgJy4nIGFuZCBub3QgJy8nIGFzIHRoZSBzZXBhcmF0b3IKKyAgICAgKiAgICAgICAgICAgICAgICAgIGFuZCB3aXRob3V0IGEgdHJhaWxpbmcgIi5jbGFzcyIgc3VmZml4LgorICAgICAqIEBwYXJhbSAgICAgIGIgICAgdGhlIGJ5dGVzIHRoYXQgbWFrZSB1cCB0aGUgY2xhc3MgZGF0YS4gVGhlIGJ5dGVzIGluCisgICAgICogICAgICAgICAgICAgcG9zaXRpb25zIDxjb2RlPm9mZjwvY29kZT4gdGhyb3VnaCA8Y29kZT5vZmYrbGVuLTE8L2NvZGU+CisgICAgICogICAgICAgICAgICAgc2hvdWxkIGhhdmUgdGhlIGZvcm1hdCBvZiBhIHZhbGlkIGNsYXNzIGZpbGUgYXMgZGVmaW5lZAorICAgICAqICAgICAgICAgICAgIGJ5IHRoZQorICAgICAqICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHA6Ly9qYXZhLnN1bi5jb20vZG9jcy9ib29rcy92bXNwZWMvIj5KYXZhCisgICAgICogICAgICAgICAgICAgVmlydHVhbCBNYWNoaW5lIFNwZWNpZmljYXRpb248L2E+LgorICAgICAqIEBwYXJhbSAgICAgIG9mZiAgdGhlIHN0YXJ0IG9mZnNldCBpbiA8Y29kZT5iPC9jb2RlPiBvZiB0aGUgY2xhc3MgZGF0YQorICAgICAqIEBwYXJhbSAgICAgIGxlbiAgdGhlIGxlbmd0aCBvZiB0aGUgY2xhc3MgZGF0YQorICAgICAqIEBwYXJhbSBwcm90ZWN0aW9uRG9tYWluIHRoZSBQcm90ZWN0aW9uRG9tYWluIG9mIHRoZSBjbGFzcworICAgICAqIEByZXR1cm4gdGhlIDxjb2RlPkNsYXNzPC9jb2RlPiBvYmplY3QgY3JlYXRlZCBmcm9tIHRoZSBkYXRhLAorICAgICAqICAgICAgICAgYW5kIG9wdGlvbmFsIFByb3RlY3Rpb25Eb21haW4uCisgICAgICogQGV4Y2VwdGlvbiAgQ2xhc3NGb3JtYXRFcnJvciBpZiB0aGUgZGF0YSBkaWQgbm90IGNvbnRhaW4gYSB2YWxpZCBjbGFzcworICAgICAqIEBleGNlcHRpb24gIEluZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb24gaWYgZWl0aGVyIDxjb2RlPm9mZjwvY29kZT4gb3IKKyAgICAgKiAgICAgICAgICAgICA8Y29kZT5sZW48L2NvZGU+IGlzIG5lZ2F0aXZlLCBvciBpZgorICAgICAqICAgICAgICAgICAgIDxjb2RlPm9mZitsZW48L2NvZGU+IGlzIGdyZWF0ZXIgdGhhbiA8Y29kZT5iLmxlbmd0aDwvY29kZT4uCisgICAgICogQGV4Y2VwdGlvbiAgU2VjdXJpdHlFeGNlcHRpb24gaWYgYW4gYXR0ZW1wdCBpcyBtYWRlIHRvIGFkZCB0aGlzIGNsYXNzCisgICAgICogICAgICAgICAgICAgdG8gYSBwYWNrYWdlIHRoYXQgY29udGFpbnMgY2xhc3NlcyB0aGF0IHdlcmUgc2lnbmVkIGJ5CisgICAgICogICAgICAgICAgICAgYSBkaWZmZXJlbnQgc2V0IG9mIGNlcnRpZmljYXRlcyB0aGFuIHRoaXMgY2xhc3MsIG9yIGlmCisgICAgICogICAgICAgICAgICAgdGhlIGNsYXNzIG5hbWUgYmVnaW5zIHdpdGggImphdmEuIi4KKyAgICAgKi8KKyAgICBwcm90ZWN0ZWQgZmluYWwgQ2xhc3MgZGVmaW5lQ2xhc3MoU3RyaW5nIG5hbWUsIGJ5dGVbXSBiLCBpbnQgb2ZmLCBpbnQgbGVuLAorCQkJCSAgICAgIFByb3RlY3Rpb25Eb21haW4gcHJvdGVjdGlvbkRvbWFpbikKKwl0aHJvd3MgQ2xhc3NGb3JtYXRFcnJvcgorICAgIHsKKwljaGVjaygpOworICAgICAgICBpZiAoKG5hbWUgIT0gbnVsbCkgJiYgbmFtZS5zdGFydHNXaXRoKCJqYXZhLiIpKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgU2VjdXJpdHlFeGNlcHRpb24oIlByb2hpYml0ZWQgcGFja2FnZSBuYW1lOiAiICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lLnN1YnN0cmluZygwLCBuYW1lLmxhc3RJbmRleE9mKCcuJykpKTsKKyAgICAgICAgfQorCWlmIChwcm90ZWN0aW9uRG9tYWluID09IG51bGwpIHsKKwkgICAgcHJvdGVjdGlvbkRvbWFpbiA9IGdldERlZmF1bHREb21haW4oKTsKKwl9CisKKwlpZiAobmFtZSAhPSBudWxsKQorCSAgICBjaGVja0NlcnRzKG5hbWUsIHByb3RlY3Rpb25Eb21haW4uZ2V0Q29kZVNvdXJjZSgpKTsKKworCUNsYXNzIGMgPSBudWxsOworCisJdHJ5CisJeworCSAgICBjID0gZGVmaW5lQ2xhc3MwKG5hbWUsIGIsIG9mZiwgbGVuLCBwcm90ZWN0aW9uRG9tYWluKTsKKwl9CisJY2F0Y2ggKENsYXNzRm9ybWF0RXJyb3IgY2ZlKQorCXsKKwkgICAgLy8gQ2xhc3MgZm9ybWF0IGVycm9yIC0gdHJ5IHRvIHRyYW5zZm9ybSB0aGUgYnl0ZWNvZGUgYW5kCisJICAgIC8vIGRlZmluZSB0aGUgY2xhc3MgYWdhaW4KKwkgICAgLy8KKwkgICAgT2JqZWN0W10gdHJhbnNmb3JtZXJzID0gQ2xhc3NGaWxlVHJhbnNmb3JtZXIuZ2V0VHJhbnNmb3JtZXJzKCk7CisKKwkgICAgZm9yIChpbnQgaT0wOyB0cmFuc2Zvcm1lcnMgIT0gbnVsbCAmJiBpIDwgdHJhbnNmb3JtZXJzLmxlbmd0aDsgaSsrKQorCSAgICB7CisJCXRyeQorCQl7CisJCSAgICAvLyBUcmFuc2Zvcm0gYnl0ZSBjb2RlIHVzaW5nIHRyYW5zZm9ybWVyCisJCSAgICBieXRlW10gdGIgPSAoKENsYXNzRmlsZVRyYW5zZm9ybWVyKSB0cmFuc2Zvcm1lcnNbaV0pLnRyYW5zZm9ybShiLCBvZmYsIGxlbik7CisJCSAgICBjID0gZGVmaW5lQ2xhc3MwKG5hbWUsIHRiLCAwLCB0Yi5sZW5ndGgsIHByb3RlY3Rpb25Eb21haW4pOworCQkgICAgYnJlYWs7CisJCX0KKwkJY2F0Y2ggKENsYXNzRm9ybWF0RXJyb3IgY2ZlMikKKwkJeworCQkgICAgLy8gSWYgQ2xhc3NGb3JtYXRFcnJvciBvY2N1cnMsIHRyeSBuZXh0IHRyYW5zZm9ybWVyCisJCX0KKwkgICAgfQorCisJICAgIC8vIFJldGhyb3cgb3JpZ2luYWwgQ2xhc3NGb3JtYXRFcnJvciBpZiB1bmFibGUgdG8gdHJhbnNmb3JtCisJICAgIC8vIGJ5dGVjb2RlIHRvIHdlbGwtZm9ybWVkCisJICAgIC8vCisJICAgIGlmIChjID09IG51bGwpCisJCXRocm93IGNmZTsKKwl9CisKKwlpZiAocHJvdGVjdGlvbkRvbWFpbi5nZXRDb2RlU291cmNlKCkgIT0gbnVsbCkgeworCSAgICBqYXZhLnNlY3VyaXR5LmNlcnQuQ2VydGlmaWNhdGUgY2VydHNbXSA9CisJCXByb3RlY3Rpb25Eb21haW4uZ2V0Q29kZVNvdXJjZSgpLmdldENlcnRpZmljYXRlcygpOworCSAgICBpZiAoY2VydHMgIT0gbnVsbCkKKwkJc2V0U2lnbmVycyhjLCBjZXJ0cyk7CisJfQorCXJldHVybiBjOworICAgIH0KKworICAgIHByaXZhdGUgc3luY2hyb25pemVkIHZvaWQgY2hlY2tDZXJ0cyhTdHJpbmcgbmFtZSwgQ29kZVNvdXJjZSBjcykKKyAgICB7CisJaW50IGkgPSBuYW1lLmxhc3RJbmRleE9mKCcuJyk7CisJU3RyaW5nIHBuYW1lID0gKGkgPT0gLTEpID8gIiIgOiBuYW1lLnN1YnN0cmluZygwLGkpOworCWphdmEuc2VjdXJpdHkuY2VydC5DZXJ0aWZpY2F0ZVtdIHBjZXJ0cyA9CisJICAgIChqYXZhLnNlY3VyaXR5LmNlcnQuQ2VydGlmaWNhdGVbXSkgcGFja2FnZTJjZXJ0cy5nZXQocG5hbWUpOworICAgICAgICBpZiAocGNlcnRzID09IG51bGwpIHsKKwkgICAgLy8gZmlyc3QgY2xhc3MgaW4gdGhpcyBwYWNrYWdlIGdldHMgdG8gZGVmaW5lIHdoaWNoCisJICAgIC8vIGNlcnRpZmljYXRlcyBtdXN0IGJlIHRoZSBzYW1lIGZvciBhbGwgb3RoZXIgY2xhc3NlcworCSAgICAvLyBpbiB0aGlzIHBhY2thZ2UKKwkgICAgaWYgKGNzICE9IG51bGwpIHsKKwkJcGNlcnRzID0gY3MuZ2V0Q2VydGlmaWNhdGVzKCk7CisJICAgIH0KKwkgICAgaWYgKHBjZXJ0cyA9PSBudWxsKSB7CisJCWlmIChub2NlcnRzID09IG51bGwpCisJCSAgICBub2NlcnRzID0gbmV3IGphdmEuc2VjdXJpdHkuY2VydC5DZXJ0aWZpY2F0ZVswXTsKKwkJcGNlcnRzID0gbm9jZXJ0czsKKwkgICAgfQorCSAgICBwYWNrYWdlMmNlcnRzLnB1dChwbmFtZSwgcGNlcnRzKTsKKwl9IGVsc2UgeworCSAgICBqYXZhLnNlY3VyaXR5LmNlcnQuQ2VydGlmaWNhdGVbXSBjZXJ0cyA9IG51bGw7CisJICAgIGlmIChjcyAhPSBudWxsKSB7CisJCWNlcnRzID0gY3MuZ2V0Q2VydGlmaWNhdGVzKCk7CisJICAgIH0KKworCSAgICBpZiAoIWNvbXBhcmVDZXJ0cyhwY2VydHMsY2VydHMpKSB7CisJCXRocm93IG5ldyBTZWN1cml0eUV4Y2VwdGlvbigiY2xhc3MgXCIiKyBuYW1lKworCQkJCQkgICAgIlwiJ3Mgc2lnbmVyIGluZm9ybWF0aW9uIGRvZXMgbm90IG1hdGNoIHNpZ25lciBpbmZvcm1hdGlvbiBvZiBvdGhlciBjbGFzc2VzIGluIHRoZSBzYW1lIHBhY2thZ2UiKTsKKwkgICAgfQorCX0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBjaGVjayB0byBtYWtlIHN1cmUgdGhlIGNlcnRzIGZvciB0aGUgbmV3IGNsYXNzIChjZXJ0cykgYXJlCisgICAgICogdGhlIHNhbWUgYXMgdGhlIGNlcnRzIGZvciB0aGUgZmlyc3QgY2xhc3MgaW5zZXJ0ZWQKKyAgICAgKiBpbiB0aGUgcGFja2FnZSAocGNlcnRzKQorICAgICAqLworICAgIHByaXZhdGUgYm9vbGVhbiBjb21wYXJlQ2VydHMoamF2YS5zZWN1cml0eS5jZXJ0LkNlcnRpZmljYXRlW10gcGNlcnRzLAorCQkJCSBqYXZhLnNlY3VyaXR5LmNlcnQuQ2VydGlmaWNhdGVbXSBjZXJ0cykKKyAgICB7CisJLy8gY2VydHMgY2FuIGJlIG51bGwsIGluZGljYXRpbmcgbm8gY2VydHMuCisJaWYgKChjZXJ0cyA9PSBudWxsKSB8fCAoY2VydHMubGVuZ3RoID09IDApKSB7CisJICAgIHJldHVybiBwY2VydHMubGVuZ3RoID09IDA7CisJfQorCisJLy8gdGhlIGxlbmd0aCBtdXN0IGJlIHRoZSBzYW1lIGF0IHRoaXMgcG9pbnQKKwlpZiAoY2VydHMubGVuZ3RoICE9IHBjZXJ0cy5sZW5ndGgpCisJICAgIHJldHVybiBmYWxzZTsKKworCS8vIGdvIHRocm91Z2ggYW5kIG1ha2Ugc3VyZSBhbGwgdGhlIGNlcnRzIGluIG9uZSBhcnJheQorCS8vIGFyZSBpbiB0aGUgb3RoZXIgYW5kIHZpY2UtdmVyc2EuCisJYm9vbGVhbiBtYXRjaDsKKwlmb3IgKGludCBpPTA7IGkgPCBjZXJ0cy5sZW5ndGg7IGkrKykgeworCSAgICBtYXRjaCA9IGZhbHNlOworCSAgICBmb3IgKGludCBqPTA7IGogPCBwY2VydHMubGVuZ3RoOyBqKyspIHsKKwkJaWYgKGNlcnRzW2ldLmVxdWFscyhwY2VydHNbal0pKSB7CisJCSAgICBtYXRjaCA9IHRydWU7CisJCSAgICBicmVhazsKKwkJfQorCSAgICB9CisJICAgIGlmICghbWF0Y2gpIHJldHVybiBmYWxzZTsKKwl9CisKKwkvLyBub3cgZG8gdGhlIHNhbWUgZm9yIHBjZXJ0cworCWZvciAoaW50IGk9MDsgaSA8IHBjZXJ0cy5sZW5ndGg7IGkrKykgeworCSAgICBtYXRjaCA9IGZhbHNlOworCSAgICBmb3IgKGludCBqPTA7IGogPCBjZXJ0cy5sZW5ndGg7IGorKykgeworCQlpZiAocGNlcnRzW2ldLmVxdWFscyhjZXJ0c1tqXSkpIHsKKwkJICAgIG1hdGNoID0gdHJ1ZTsKKwkJICAgIGJyZWFrOworCQl9CisJICAgIH0KKwkgICAgaWYgKCFtYXRjaCkgcmV0dXJuIGZhbHNlOworCX0KKworCXJldHVybiB0cnVlOworICAgIH0KKworICAgIC8qKgorICAgICAqIExpbmtzIHRoZSBzcGVjaWZpZWQgY2xhc3MuCisgICAgICogVGhpcyAobWlzbGVhZGluZ2x5IG5hbWVkKSBtZXRob2QgbWF5IGJlIHVzZWQgYnkgYSBjbGFzcyBsb2FkZXIgdG8KKyAgICAgKiBsaW5rIGEgY2xhc3MuIElmIHRoZSBjbGFzcyA8Y29kZT5jPC9jb2RlPiBoYXMgYWxyZWFkeSBiZWVuIGxpbmtlZCwKKyAgICAgKiB0aGVuIHRoaXMgbWV0aG9kIHNpbXBseSByZXR1cm5zLiBPdGhlcndpc2UsIHRoZSBjbGFzcyBpcyBsaW5rZWQKKyAgICAgKiBhcyBkZXNjcmliZWQgaW4gdGhlICJFeGVjdXRpb24iIGNoYXB0ZXIgb2YgdGhlIDxpPkphdmEgTGFuZ3VhZ2UKKyAgICAgKiBTcGVjaWZpY2F0aW9uPC9pPi4KKyAgICAgKgorICAgICAqIEBwYXJhbSBjIHRoZSBjbGFzcyB0byBsaW5rCisgICAgICogQGV4Y2VwdGlvbiBOdWxsUG9pbnRlckV4Y2VwdGlvbiBpZiA8Y29kZT5jPC9jb2RlPiBpcyA8Y29kZT5udWxsPC9jb2RlPi4KKyAgICAgKiBAc2VlICAgamF2YS5sYW5nLkNsYXNzTG9hZGVyI2RlZmluZUNsYXNzKGphdmEubGFuZy5TdHJpbmcsYnl0ZVtdLGludCxpbnQpCisgICAgICovCisgICAgcHJvdGVjdGVkIGZpbmFsIHZvaWQgcmVzb2x2ZUNsYXNzKENsYXNzIGMpIHsKKwljaGVjaygpOworCXJlc29sdmVDbGFzczAoYyk7CisgICAgfQorCisgICAgLyoqCisgICAgICogRmluZHMgYSBjbGFzcyB3aXRoIHRoZSBzcGVjaWZpZWQgbmFtZSwgbG9hZGluZyBpdCBpZiBuZWNlc3NhcnkuPHA+CisgICAgICoKKyAgICAgKiBQcmlvciB0byB0aGUgSmF2YSAyIFNESywgdGhpcyBtZXRob2QgbG9hZHMgYSBjbGFzcyBmcm9tIHRoZSBsb2NhbCBmaWxlCisgICAgICogc3lzdGVtIGluIGEgcGxhdGZvcm0tZGVwZW5kZW50IG1hbm5lciwgYW5kIHJldHVybnMgYSBjbGFzcyBvYmplY3QKKyAgICAgKiB0aGF0IGhhcyBubyBhc3NvY2lhdGVkIGNsYXNzIGxvYWRlci48cD4KKyAgICAgKgorICAgICAqIFNpbmNlIHRoZSBKYXZhIDIgU0RLIHYxLjIsIHRoaXMgbWV0aG9kIGxvYWRzIHRoZSBjbGFzcyB0aHJvdWdoIHRoZQorICAgICAqIHN5c3RlbSBjbGFzcyBsb2FkZXIoc2VlIHtAbGluayAjZ2V0U3lzdGVtQ2xhc3NMb2FkZXIoKX0pLiAgQ2xhc3Mgb2JqZWN0cworICAgICAqIHJldHVybmVkIG1pZ2h0IGhhdmUgPGNvZGU+Q2xhc3NMb2FkZXI8L2NvZGU+cyBhc3NvY2lhdGVkIHdpdGggdGhlbS4KKyAgICAgKiBTdWJjbGFzc2VzIG9mIDxjb2RlPkNsYXNzTG9hZGVyPC9jb2RlPiBuZWVkIG5vdCB1c3VhbGx5IGNhbGwgdGhpcworICAgICAqIG1ldGhvZCwgYmVjYXVzZSBtb3N0IGNsYXNzIGxvYWRlcnMgbmVlZCB0byBvdmVycmlkZSBqdXN0IHtAbGluaworICAgICAqICNmaW5kQ2xhc3MoU3RyaW5nKX0uPHA+CisgICAgICoKKyAgICAgKiBAcGFyYW0gICAgIG5hbWUgdGhlIG5hbWUgb2YgdGhlIGNsYXNzIHRoYXQgaXMgdG8gYmUgZm91bmQKKyAgICAgKiBAcmV0dXJuIHRoZSA8Y29kZT5DbGFzczwvY29kZT4gb2JqZWN0IGZvciB0aGUgc3BlY2lmaWVkCisgICAgICogPGNvZGU+bmFtZTwvY29kZT4KKyAgICAgKiBAZXhjZXB0aW9uIENsYXNzTm90Rm91bmRFeGNlcHRpb24gaWYgdGhlIGNsYXNzIGNvdWxkIG5vdCBiZSBmb3VuZAorICAgICAqIEBzZWUgICAgICAgI0NsYXNzTG9hZGVyKENsYXNzTG9hZGVyKQorICAgICAqIEBzZWUgICAgICAgI2dldFBhcmVudCgpCisgICAgICovCisgICAgcHJvdGVjdGVkIGZpbmFsIENsYXNzIGZpbmRTeXN0ZW1DbGFzcyhTdHJpbmcgbmFtZSkKKwl0aHJvd3MgQ2xhc3NOb3RGb3VuZEV4Y2VwdGlvbgorICAgIHsKKwljaGVjaygpOworCUNsYXNzTG9hZGVyIHN5c3RlbSA9IGdldFN5c3RlbUNsYXNzTG9hZGVyKCk7CisJaWYgKHN5c3RlbSA9PSBudWxsKSB7CisJICAgIHJldHVybiBmaW5kQm9vdHN0cmFwQ2xhc3MobmFtZSk7CisJfQorCXJldHVybiBzeXN0ZW0ubG9hZENsYXNzKG5hbWUpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybnMgdGhlIHBhcmVudCBjbGFzcyBsb2FkZXIgZm9yIGRlbGVnYXRpb24uIFNvbWUgaW1wbGVtZW50YXRpb25zCisgICAgICogbWF5IHVzZSA8Y29kZT5udWxsPC9jb2RlPiB0byByZXByZXNlbnQgdGhlIGJvb3RzdHJhcCBjbGFzcworICAgICAqIGxvYWRlci4gVGhpcyBtZXRob2Qgd2lsbCByZXR1cm4gPGNvZGU+bnVsbDwvY29kZT4gaW4gc3VjaAorICAgICAqIGltcGxlbWVudGF0aW9ucyBpZiB0aGlzIGNsYXNzIGxvYWRlcidzIHBhcmVudCBpcyB0aGUgYm9vdHN0cmFwCisgICAgICogY2xhc3MgbG9hZGVyLgorICAgICAqIDxwPgorICAgICAqIElmIGEgc2VjdXJpdHkgbWFuYWdlciBpcyBwcmVzZW50LCBhbmQgdGhlIGNhbGxlcidzIGNsYXNzIGxvYWRlciBpcworICAgICAqIG5vdCBudWxsIGFuZCBpcyBub3QgYW4gYW5jZXN0b3Igb2YgdGhpcyBjbGFzcyBsb2FkZXIsIHRoZW4KKyAgICAgKiB0aGlzIG1ldGhvZCBjYWxscyB0aGUgc2VjdXJpdHkgbWFuYWdlcidzIDxjb2RlPmNoZWNrUGVybWlzc2lvbjwvY29kZT4KKyAgICAgKiBtZXRob2Qgd2l0aCBhIDxjb2RlPlJ1bnRpbWVQZXJtaXNzaW9uKCJnZXRDbGFzc0xvYWRlciIpPC9jb2RlPgorICAgICAqIHBlcm1pc3Npb24gdG8gZW5zdXJlIGl0J3Mgb2sgdG8gYWNjZXNzIHRoZSBwYXJlbnQgY2xhc3MgbG9hZGVyLgorICAgICAqIElmIG5vdCwgYSA8Y29kZT5TZWN1cml0eUV4Y2VwdGlvbjwvY29kZT4gd2lsbCBiZSB0aHJvd24uCisgICAgICoKKyAgICAgKiBAcmV0dXJuIHRoZSBwYXJlbnQgPGNvZGU+Q2xhc3NMb2FkZXI8L2NvZGU+CisgICAgICogQHRocm93cyBTZWN1cml0eUV4Y2VwdGlvbgorICAgICAqICAgIGlmIGEgc2VjdXJpdHkgbWFuYWdlciBleGlzdHMgYW5kIGl0cworICAgICAqICAgIDxjb2RlPmNoZWNrUGVybWlzc2lvbjwvY29kZT4gbWV0aG9kIGRvZXNuJ3QgYWxsb3cKKyAgICAgKiAgICBhY2Nlc3MgdG8gdGhpcyBjbGFzcyBsb2FkZXIncyBwYXJlbnQgY2xhc3MgbG9hZGVyLgorICAgICAqCisgICAgICogQHNlZSBTZWN1cml0eU1hbmFnZXIjY2hlY2tQZXJtaXNzaW9uCisgICAgICogQHNlZSBqYXZhLmxhbmcuUnVudGltZVBlcm1pc3Npb24KKyAgICAgKgorICAgICAqIEBzaW5jZSAxLjIKKyAgICAgKi8KKyAgICBwdWJsaWMgZmluYWwgQ2xhc3NMb2FkZXIgZ2V0UGFyZW50KCkgeworCWlmIChwYXJlbnQgPT0gbnVsbCkKKwkgICAgcmV0dXJuIG51bGw7CisJU2VjdXJpdHlNYW5hZ2VyIHNtID0gU3lzdGVtLmdldFNlY3VyaXR5TWFuYWdlcigpOworCWlmIChzbSAhPSBudWxsKSB7CisJICAgIENsYXNzTG9hZGVyIGNjbCA9IGdldENhbGxlckNsYXNzTG9hZGVyKCk7CisJICAgIGlmIChjY2wgIT0gbnVsbCAmJiAhaXNBbmNlc3RvcihjY2wpKSB7CisJCXNtLmNoZWNrUGVybWlzc2lvbihnZXRHZXRDbGFzc0xvYWRlclBlcm0oKSk7CisJICAgIH0KKwl9CisJcmV0dXJuIHBhcmVudDsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBTZXRzIHRoZSBzaWduZXJzIG9mIGEgY2xhc3MuIFRoaXMgc2hvdWxkIGJlIGNhbGxlZCBhZnRlciBkZWZpbmluZyBhCisgICAgICogY2xhc3MuCisgICAgICoKKyAgICAgKiBAcGFyYW0gYyB0aGUgPGNvZGU+Q2xhc3M8L2NvZGU+IG9iamVjdAorICAgICAqIEBwYXJhbSBzaWduZXJzIHRoZSBzaWduZXJzIGZvciB0aGUgY2xhc3MKKyAgICAgKiBAc2luY2UgSkRLMS4xCisgICAgICovCisgICAgcHJvdGVjdGVkIGZpbmFsIHZvaWQgc2V0U2lnbmVycyhDbGFzcyBjLCBPYmplY3RbXSBzaWduZXJzKSB7CisgICAgICAgIGNoZWNrKCk7CisJYy5zZXRTaWduZXJzKHNpZ25lcnMpOworICAgIH0KKworICAgIHByaXZhdGUgQ2xhc3MgZmluZEJvb3RzdHJhcENsYXNzMChTdHJpbmcgbmFtZSkKKwl0aHJvd3MgQ2xhc3NOb3RGb3VuZEV4Y2VwdGlvbiB7CisJY2hlY2soKTsKKwlyZXR1cm4gZmluZEJvb3RzdHJhcENsYXNzKG5hbWUpOworICAgIH0KKworICAgIHByaXZhdGUgbmF0aXZlIENsYXNzIGRlZmluZUNsYXNzMChTdHJpbmcgbmFtZSwgYnl0ZVtdIGIsIGludCBvZmYsIGludCBsZW4sCisJUHJvdGVjdGlvbkRvbWFpbiBwZCk7CisgICAgcHJpdmF0ZSBuYXRpdmUgdm9pZCByZXNvbHZlQ2xhc3MwKENsYXNzIGMpOworICAgIHByaXZhdGUgbmF0aXZlIENsYXNzIGZpbmRCb290c3RyYXBDbGFzcyhTdHJpbmcgbmFtZSkKKwl0aHJvd3MgQ2xhc3NOb3RGb3VuZEV4Y2VwdGlvbjsKKworICAgIC8qCisgICAgICogQ2hlY2sgdG8gbWFrZSBzdXJlIHRoZSBjbGFzcyBsb2FkZXIgaGFzIGJlZW4gaW5pdGlhbGl6ZWQuCisgICAgICovCisgICAgcHJpdmF0ZSB2b2lkIGNoZWNrKCkgeworCWlmICghaW5pdGlhbGl6ZWQpIHsKKwkgICAgdGhyb3cgbmV3IFNlY3VyaXR5RXhjZXB0aW9uKCJDbGFzc0xvYWRlciBvYmplY3Qgbm90IGluaXRpYWxpemVkIik7CisJfQorICAgIH0KKworICAgIC8qKgorICAgICAqIEZpbmRzIHRoZSBjbGFzcyB3aXRoIHRoZSBnaXZlbiBuYW1lIGlmIGl0IGhhZCBiZWVuIHByZXZpb3VzbHkgbG9hZGVkCisgICAgICogdGhyb3VnaCB0aGlzIGNsYXNzIGxvYWRlci4KKyAgICAgKgorICAgICAqIEBwYXJhbSAgbmFtZSB0aGUgY2xhc3MgbmFtZQorICAgICAqIEByZXR1cm4gdGhlIDxjb2RlPkNsYXNzPC9jb2RlPiBvYmplY3QsIG9yIDxjb2RlPm51bGw8L2NvZGU+IGlmCisgICAgICogICAgICAgICB0aGUgY2xhc3MgaGFzIG5vdCBiZWVuIGxvYWRlZAorICAgICAqIEBzaW5jZSAgSkRLMS4xCisgICAgICovCisgICAgcHJvdGVjdGVkIG5hdGl2ZSBmaW5hbCBDbGFzcyBmaW5kTG9hZGVkQ2xhc3MoU3RyaW5nIG5hbWUpOworCisgICAgLyoqCisgICAgICogRmluZHMgdGhlIHJlc291cmNlIHdpdGggdGhlIGdpdmVuIG5hbWUuIEEgcmVzb3VyY2UgaXMgc29tZSBkYXRhCisgICAgICogKGltYWdlcywgYXVkaW8sIHRleHQsIGV0YykgdGhhdCBjYW4gYmUgYWNjZXNzZWQgYnkgY2xhc3MgY29kZSBpbiBhIHdheQorICAgICAqIHRoYXQgaXMgaW5kZXBlbmRlbnQgb2YgdGhlIGxvY2F0aW9uIG9mIHRoZSBjb2RlLjxwPgorICAgICAqCisgICAgICogVGhlIG5hbWUgb2YgYSByZXNvdXJjZSBpcyBhICIvIi1zZXBhcmF0ZWQgcGF0aCBuYW1lIHRoYXQgaWRlbnRpZmllcworICAgICAqIHRoZSByZXNvdXJjZS48cD4KKyAgICAgKgorICAgICAqIFRoaXMgbWV0aG9kIHdpbGwgZmlyc3Qgc2VhcmNoIHRoZSBwYXJlbnQgY2xhc3MgbG9hZGVyIGZvciB0aGUgcmVzb3VyY2U7CisgICAgICogaWYgdGhlIHBhcmVudCBpcyA8Y29kZT5udWxsPC9jb2RlPiB0aGUgcGF0aCBvZiB0aGUgY2xhc3MgbG9hZGVyCisgICAgICogYnVpbHQtaW4gdG8gdGhlIHZpcnR1YWwgbWFjaGluZSBpcyBzZWFyY2hlZC4gIFRoYXQgZmFpbGluZywgdGhpcyBtZXRob2QKKyAgICAgKiB3aWxsIGNhbGwgPGNvZGU+ZmluZFJlc291cmNlPC9jb2RlPiB0byBmaW5kIHRoZSByZXNvdXJjZS48cD4KKyAgICAgKgorICAgICAqIEBwYXJhbSAgbmFtZSByZXNvdXJjZSBuYW1lCisgICAgICogQHJldHVybiBhIFVSTCBmb3IgcmVhZGluZyB0aGUgcmVzb3VyY2UsIG9yIDxjb2RlPm51bGw8L2NvZGU+IGlmCisgICAgICogICAgICAgICB0aGUgcmVzb3VyY2UgY291bGQgbm90IGJlIGZvdW5kIG9yIHRoZSBjYWxsZXIgZG9lc24ndCBoYXZlCisgICAgICogICAgICAgICBhZGVxdWF0ZSBwcml2aWxlZ2VzIHRvIGdldCB0aGUgcmVzb3VyY2UuCisgICAgICogQHNpbmNlICBKREsxLjEKKyAgICAgKiBAc2VlICNmaW5kUmVzb3VyY2UoU3RyaW5nKQorICAgICAqLworICAgIHB1YmxpYyBVUkwgZ2V0UmVzb3VyY2UoU3RyaW5nIG5hbWUpIHsKKwlVUkwgdXJsOworCWlmIChwYXJlbnQgIT0gbnVsbCkgeworCSAgICB1cmwgPSBwYXJlbnQuZ2V0UmVzb3VyY2UobmFtZSk7CisJfSBlbHNlIHsKKwkgICAgdXJsID0gZ2V0Qm9vdHN0cmFwUmVzb3VyY2UobmFtZSk7CisJfQorCWlmICh1cmwgPT0gbnVsbCkgeworCSAgICB1cmwgPSBmaW5kUmVzb3VyY2UobmFtZSk7CisJfQorCXJldHVybiB1cmw7CisgICAgfQorCisgICAgLyoqCisgICAgICogRmluZHMgYWxsIHRoZSByZXNvdXJjZXMgd2l0aCB0aGUgZ2l2ZW4gbmFtZS4gQSByZXNvdXJjZSBpcyBzb21lIGRhdGEKKyAgICAgKiAoaW1hZ2VzLCBhdWRpbywgdGV4dCwgZXRjKSB0aGF0IGNhbiBiZSBhY2Nlc3NlZCBieSBjbGFzcyBjb2RlIGluIGEgd2F5CisgICAgICogdGhhdCBpcyBpbmRlcGVuZGVudCBvZiB0aGUgbG9jYXRpb24gb2YgdGhlIGNvZGUuPHA+CisgICAgICoKKyAgICAgKiBUaGUgbmFtZSBvZiBhIHJlc291cmNlIGlzIGEgIi8iLXNlcGFyYXRlZCBwYXRoIG5hbWUgdGhhdCBpZGVudGlmaWVzIHRoZQorICAgICAqIHJlc291cmNlLjxwPgorICAgICAqCisgICAgICogVGhlIHNlYXJjaCBvcmRlciBpcyBkZXNjcmliZWQgaW4gdGhlIGRvY3VtZW50YXRpb24gZm9yIHtAbGluaworICAgICAqICNnZXRSZXNvdXJjZShTdHJpbmcpfS48cD4KKyAgICAgKgorICAgICAqIEBwYXJhbSAgbmFtZSByZXNvdXJjZSBuYW1lCisgICAgICogQHJldHVybiBhbiBlbnVtZXJhdGlvbiBvZiBVUkwgdG8gdGhlIHJlc291cmNlLiBJZiBubyByZXNvdXJjZXMgY291bGQKKyAgICAgKiAgICAgICAgIGJlIGZvdW5kLCB0aGUgZW51bWVyYXRpb24gd2lsbCBiZSBlbXB0eS4gUmVzb3VyY2VzIHRoYXQgdGhlCisgICAgICogICAgICAgICBkb2Vzbid0IGhhdmUgYWNjZXNzIHRvIHdpbGwgbm90IGJlIGluIHRoZSBlbnVtZXJhdGlvbi4KKyAgICAgKiBAdGhyb3dzIElPRXhjZXB0aW9uIGlmIEkvTyBlcnJvcnMgb2NjdXIKKyAgICAgKiBAc2luY2UgIDEuMgorICAgICAqIEBzZWUgICAgI2dldFJlc291cmNlCisgICAgICogQHNlZSAjZmluZFJlc291cmNlcworICAgICAqLworICAgIHB1YmxpYyBmaW5hbCBFbnVtZXJhdGlvbiBnZXRSZXNvdXJjZXMoU3RyaW5nIG5hbWUpIHRocm93cyBJT0V4Y2VwdGlvbiB7CisJRW51bWVyYXRpb25bXSB0bXAgPSBuZXcgRW51bWVyYXRpb25bMl07CisJaWYgKHBhcmVudCAhPSBudWxsKSB7CisJICAgIHRtcFswXSA9IHBhcmVudC5nZXRSZXNvdXJjZXMobmFtZSk7CisJfSBlbHNlIHsKKwkgICAgdG1wWzBdID0gZ2V0Qm9vdHN0cmFwUmVzb3VyY2VzKG5hbWUpOworCX0KKwl0bXBbMV0gPSBmaW5kUmVzb3VyY2VzKG5hbWUpOworCisJcmV0dXJuIG5ldyBDb21wb3VuZEVudW1lcmF0aW9uKHRtcCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJucyBhbiBFbnVtZXJhdGlvbiBvZiBVUkxzIHJlcHJlc2VudGluZyBhbGwgdGhlIHJlc291cmNlcyB3aXRoCisgICAgICogdGhlIGdpdmVuIG5hbWUuIENsYXNzIGxvYWRlciBpbXBsZW1lbnRhdGlvbnMgc2hvdWxkIG92ZXJyaWRlIHRoaXMKKyAgICAgKiBtZXRob2QgdG8gc3BlY2lmeSB3aGVyZSB0byBsb2FkIHJlc291cmNlcyBmcm9tLgorICAgICAqCisgICAgICogQHBhcmFtICBuYW1lIHRoZSByZXNvdXJjZSBuYW1lCisgICAgICogQHJldHVybiBhbiBFbnVtZXJhdGlvbiBvZiBVUkxzIGZvciB0aGUgcmVzb3VyY2VzCisgICAgICogQHRocm93cyBJT0V4Y2VwdGlvbiBpZiBJL08gZXJyb3JzIG9jY3VyCisgICAgICogQHNpbmNlICAxLjIKKyAgICAgKi8KKyAgICBwcm90ZWN0ZWQgRW51bWVyYXRpb24gZmluZFJlc291cmNlcyhTdHJpbmcgbmFtZSkgdGhyb3dzIElPRXhjZXB0aW9uIHsKKwlyZXR1cm4gbmV3IENvbXBvdW5kRW51bWVyYXRpb24obmV3IEVudW1lcmF0aW9uWzBdKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBGaW5kcyB0aGUgcmVzb3VyY2Ugd2l0aCB0aGUgZ2l2ZW4gbmFtZS4gQ2xhc3MgbG9hZGVyCisgICAgICogaW1wbGVtZW50YXRpb25zIHNob3VsZCBvdmVycmlkZSB0aGlzIG1ldGhvZCB0byBzcGVjaWZ5IHdoZXJlIHRvCisgICAgICogZmluZCByZXNvdXJjZXMuCisgICAgICoKKyAgICAgKiBAcGFyYW0gIG5hbWUgdGhlIHJlc291cmNlIG5hbWUKKyAgICAgKiBAcmV0dXJuIGEgVVJMIGZvciByZWFkaW5nIHRoZSByZXNvdXJjZSwgb3IgPGNvZGU+bnVsbDwvY29kZT4KKyAgICAgKiAgICAgICAgIGlmIHRoZSByZXNvdXJjZSBjb3VsZCBub3QgYmUgZm91bmQKKyAgICAgKiBAc2luY2UgIDEuMgorICAgICAqLworICAgIHByb3RlY3RlZCBVUkwgZmluZFJlc291cmNlKFN0cmluZyBuYW1lKSB7CisJcmV0dXJuIG51bGw7CisgICAgfQorCisgICAgLyoqCisgICAgICogRmluZCBhIHJlc291cmNlIG9mIHRoZSBzcGVjaWZpZWQgbmFtZSBmcm9tIHRoZSBzZWFyY2ggcGF0aCB1c2VkIHRvIGxvYWQKKyAgICAgKiBjbGFzc2VzLjxwPgorICAgICAqCisgICAgICogSW4gSkRLMS4xLCB0aGUgc2VhcmNoIHBhdGggdXNlZCBpcyB0aGF0IG9mIHRoZSB2aXJ0dWFsIG1hY2hpbmUncworICAgICAqIGJ1aWx0LWluIGNsYXNzIGxvYWRlci48cD4KKyAgICAgKgorICAgICAqIFNpbmNlIHRoZSBKYXZhIDIgU0RLIHYxLjIsIHRoaXMgbWV0aG9kIGxvY2F0ZXMgdGhlIHJlc291cmNlIHRocm91Z2ggdGhlIHN5c3RlbSBjbGFzcworICAgICAqIGxvYWRlciAoc2VlIHtAbGluayAjZ2V0U3lzdGVtQ2xhc3NMb2FkZXIoKX0pLgorICAgICAqCisgICAgICogQHBhcmFtICBuYW1lIHRoZSByZXNvdXJjZSBuYW1lCisgICAgICogQHJldHVybiBhIFVSTCBmb3IgcmVhZGluZyB0aGUgcmVzb3VyY2UsIG9yIDxjb2RlPm51bGw8L2NvZGU+IGlmCisgICAgICogICAgICAgICB0aGUgcmVzb3VyY2UgY291bGQgbm90IGJlIGZvdW5kCisgICAgICogQHNpbmNlIEpESzEuMQorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgVVJMIGdldFN5c3RlbVJlc291cmNlKFN0cmluZyBuYW1lKSB7CisJQ2xhc3NMb2FkZXIgc3lzdGVtID0gZ2V0U3lzdGVtQ2xhc3NMb2FkZXIoKTsKKwlpZiAoc3lzdGVtID09IG51bGwpIHsKKwkgICAgcmV0dXJuIGdldEJvb3RzdHJhcFJlc291cmNlKG5hbWUpOworCX0KKwlyZXR1cm4gc3lzdGVtLmdldFJlc291cmNlKG5hbWUpOworICAgIH0KKworICAgIC8qKgorICAgICAqIEZpbmQgcmVzb3VyY2VzIGZyb20gdGhlIFZNJ3MgYnVpbHQtaW4gY2xhc3Nsb2FkZXIuCisgICAgICovCisgICAgcHJpdmF0ZSBzdGF0aWMgVVJMIGdldEJvb3RzdHJhcFJlc291cmNlKFN0cmluZyBuYW1lKSB7CisJVVJMQ2xhc3NQYXRoIHVjcCA9IGdldEJvb3RzdHJhcENsYXNzUGF0aCgpOworCVJlc291cmNlIHJlcyA9IHVjcC5nZXRSZXNvdXJjZShuYW1lKTsKKwlyZXR1cm4gcmVzICE9IG51bGwgPyByZXMuZ2V0VVJMKCkgOiBudWxsOworICAgIH0KKworICAgIC8qKgorICAgICAqIEZpbmRzIGFsbCByZXNvdXJjZXMgb2YgdGhlIHNwZWNpZmllZCBuYW1lIGZyb20gdGhlIHNlYXJjaCBwYXRoIHVzZWQgdG8KKyAgICAgKiBsb2FkIGNsYXNzZXMuIFRoZSByZXNvdXJjZXMgdGh1cyBmb3VuZCBhcmUgcmV0dXJuZWQgYXMgYW4KKyAgICAgKiA8Y29kZT5FbnVtZXJhdGlvbjwvY29kZT4gb2YgPGNvZGU+VVJMPC9jb2RlPiBvYmplY3RzLiA8cD4KKyAgICAgKgorICAgICAqIFRoZSBzZWFyY2ggb3JkZXIgaXMgZGVzY3JpYmVkIGluIHRoZSBkb2N1bWVudGF0aW9uIGZvciB7QGxpbmsKKyAgICAgKiAjZ2V0U3lzdGVtUmVzb3VyY2UoU3RyaW5nKX0uIDxwPgorICAgICAqCisgICAgICogQHBhcmFtICBuYW1lIHRoZSByZXNvdXJjZSBuYW1lCisgICAgICogQHJldHVybiBhbiBlbnVtZXJhdGlvbiBvZiByZXNvdXJjZSBVUkxzCisgICAgICogQHRocm93cyBJT0V4Y2VwdGlvbiBpZiBJL08gZXJyb3JzIG9jY3VyCisgICAgICogQHNpbmNlIDEuMgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgRW51bWVyYXRpb24gZ2V0U3lzdGVtUmVzb3VyY2VzKFN0cmluZyBuYW1lKQorCXRocm93cyBJT0V4Y2VwdGlvbgorICAgIHsKKwlDbGFzc0xvYWRlciBzeXN0ZW0gPSBnZXRTeXN0ZW1DbGFzc0xvYWRlcigpOworCWlmIChzeXN0ZW0gPT0gbnVsbCkgeworCSAgICByZXR1cm4gZ2V0Qm9vdHN0cmFwUmVzb3VyY2VzKG5hbWUpOworCX0KKwlyZXR1cm4gc3lzdGVtLmdldFJlc291cmNlcyhuYW1lKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBGaW5kIHJlc291cmNlcyBmcm9tIHRoZSBWTSdzIGJ1aWx0LWluIGNsYXNzbG9hZGVyLgorICAgICAqLworICAgIHByaXZhdGUgc3RhdGljIEVudW1lcmF0aW9uIGdldEJvb3RzdHJhcFJlc291cmNlcyhTdHJpbmcgbmFtZSkKKwl0aHJvd3MgSU9FeGNlcHRpb24KKyAgICB7CisJZmluYWwgRW51bWVyYXRpb24gZSA9IGdldEJvb3RzdHJhcENsYXNzUGF0aCgpLmdldFJlc291cmNlcyhuYW1lKTsKKwlyZXR1cm4gbmV3IEVudW1lcmF0aW9uICgpIHsKKwkgICAgcHVibGljIE9iamVjdCBuZXh0RWxlbWVudCgpIHsKKwkJcmV0dXJuICgoUmVzb3VyY2UpZS5uZXh0RWxlbWVudCgpKS5nZXRVUkwoKTsKKwkgICAgfQorCSAgICBwdWJsaWMgYm9vbGVhbiBoYXNNb3JlRWxlbWVudHMoKSB7CisJCXJldHVybiBlLmhhc01vcmVFbGVtZW50cygpOworCSAgICB9CisJfTsKKyAgICB9CisKKyAgICAvKgorICAgICAqIFJldHVybnMgdGhlIFVSTENsYXNzUGF0aCB0aGF0IGlzIHVzZWQgZm9yIGZpbmRpbmcgc3lzdGVtIHJlc291cmNlcy4KKyAgICAgKi8KKyAgICBzdGF0aWMgVVJMQ2xhc3NQYXRoIGdldEJvb3RzdHJhcENsYXNzUGF0aCgpIHsKKwlpZiAoYm9vdHN0cmFwQ2xhc3NQYXRoID09IG51bGwpIHsKKwkgICAgYm9vdHN0cmFwQ2xhc3NQYXRoID0gc3VuLm1pc2MuTGF1bmNoZXIuZ2V0Qm9vdHN0cmFwQ2xhc3NQYXRoKCk7CisJfQorCXJldHVybiBib290c3RyYXBDbGFzc1BhdGg7CisgICAgfQorCisgICAgcHJpdmF0ZSBzdGF0aWMgVVJMQ2xhc3NQYXRoIGJvb3RzdHJhcENsYXNzUGF0aDsKKworICAgIC8qKgorICAgICAqIFJldHVybnMgYW4gaW5wdXQgc3RyZWFtIGZvciByZWFkaW5nIHRoZSBzcGVjaWZpZWQgcmVzb3VyY2UuCisgICAgICoKKyAgICAgKiBUaGUgc2VhcmNoIG9yZGVyIGlzIGRlc2NyaWJlZCBpbiB0aGUgZG9jdW1lbnRhdGlvbiBmb3Ige0BsaW5rCisgICAgICogI2dldFJlc291cmNlKFN0cmluZyl9LjxwPgorICAgICAqCisgICAgICogQHBhcmFtICBuYW1lIHRoZSByZXNvdXJjZSBuYW1lCisgICAgICogQHJldHVybiBhbiBpbnB1dCBzdHJlYW0gZm9yIHJlYWRpbmcgdGhlIHJlc291cmNlLCBvciA8Y29kZT5udWxsPC9jb2RlPgorICAgICAqICAgICAgICAgaWYgdGhlIHJlc291cmNlIGNvdWxkIG5vdCBiZSBmb3VuZAorICAgICAqIEBzaW5jZSAgSkRLMS4xCisgICAgICovCisgICAgcHVibGljIElucHV0U3RyZWFtIGdldFJlc291cmNlQXNTdHJlYW0oU3RyaW5nIG5hbWUpIHsKKwlVUkwgdXJsID0gZ2V0UmVzb3VyY2UobmFtZSk7CisJdHJ5IHsKKwkgICAgcmV0dXJuIHVybCAhPSBudWxsID8gdXJsLm9wZW5TdHJlYW0oKSA6IG51bGw7CisJfSBjYXRjaCAoSU9FeGNlcHRpb24gZSkgeworCSAgICByZXR1cm4gbnVsbDsKKwl9CisgICAgfQorCisgICAgLyoqCisgICAgICogT3BlbiBmb3IgcmVhZGluZywgYSByZXNvdXJjZSBvZiB0aGUgc3BlY2lmaWVkIG5hbWUgZnJvbSB0aGUgc2VhcmNoIHBhdGgKKyAgICAgKiB1c2VkIHRvIGxvYWQgY2xhc3Nlcy48cD4KKyAgICAgKgorICAgICAqIFRoZSBzZWFyY2ggb3JkZXIgaXMgZGVzY3JpYmVkIGluIHRoZSBkb2N1bWVudGF0aW9uIGZvciB7QGxpbmsKKyAgICAgKiAjZ2V0U3lzdGVtUmVzb3VyY2UoU3RyaW5nKX0uIDxwPgorICAgICAqCisgICAgICogQHBhcmFtICBuYW1lIHRoZSByZXNvdXJjZSBuYW1lCisgICAgICogQHJldHVybiBhbiBpbnB1dCBzdHJlYW0gZm9yIHJlYWRpbmcgdGhlIHJlc291cmNlLCBvciA8Y29kZT5udWxsPC9jb2RlPgorICAgICAqIAkgICAgICAgaWYgdGhlIHJlc291cmNlIGNvdWxkIG5vdCBiZSBmb3VuZAorICAgICAqIEBzaW5jZSBKREsxLjEKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIElucHV0U3RyZWFtIGdldFN5c3RlbVJlc291cmNlQXNTdHJlYW0oU3RyaW5nIG5hbWUpIHsKKwlVUkwgdXJsID0gZ2V0U3lzdGVtUmVzb3VyY2UobmFtZSk7CisJdHJ5IHsKKwkgICAgcmV0dXJuIHVybCAhPSBudWxsID8gdXJsLm9wZW5TdHJlYW0oKSA6IG51bGw7CisJfSBjYXRjaCAoSU9FeGNlcHRpb24gZSkgeworCSAgICByZXR1cm4gbnVsbDsKKwl9CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJucyB0aGUgc3lzdGVtIGNsYXNzIGxvYWRlciBmb3IgZGVsZWdhdGlvbi4gVGhpcyBpcyB0aGUgZGVmYXVsdAorICAgICAqIGRlbGVnYXRpb24gcGFyZW50IGZvciBuZXcgPGNvZGU+Q2xhc3NMb2FkZXI8L2NvZGU+IGluc3RhbmNlcywgYW5kCisgICAgICogaXMgdHlwaWNhbGx5IHRoZSBjbGFzcyBsb2FkZXIgdXNlZCB0byBzdGFydCB0aGUgYXBwbGljYXRpb24uCisgICAgICogPHA+CisgICAgICogVGhpcyBtZXRob2QgaXMgZmlyc3QgaW52b2tlZCBlYXJseSBpbiB0aGUgcnVudGltZSdzIHN0YXJ0dXAKKyAgICAgKiBzZXF1ZW5jZSwgYXQgd2hpY2ggcG9pbnQgaXQgY3JlYXRlcyB0aGUgc3lzdGVtIGNsYXNzIGxvYWRlcgorICAgICAqIGFuZCBzZXRzIGl0IGFzIHRoZSBjb250ZXh0IGNsYXNzIGxvYWRlciBvZiB0aGUgaW52b2tpbmcKKyAgICAgKiA8dHQ+VGhyZWFkPC90dD4uCisgICAgICogPHA+CisgICAgICogVGhlIGRlZmF1bHQgc3lzdGVtIGNsYXNzIGxvYWRlciBpcyBhbiBpbXBsZW1lbnRhdGlvbi1kZXBlbmRlbnQKKyAgICAgKiBpbnN0YW5jZSBvZiB0aGlzIGNsYXNzLgorICAgICAqIDxwPgorICAgICAqIElmIHRoZSBzeXN0ZW0gcHJvcGVydHkgPHR0PmphdmEuc3lzdGVtLmNsYXNzLmxvYWRlcjwvdHQ+IGlzCisgICAgICogZGVmaW5lZCB3aGVuIHRoaXMgbWV0aG9kIGlzIGZpcnN0IGludm9rZWQgdGhlbiB0aGUgdmFsdWUgb2YgdGhhdAorICAgICAqIHByb3BlcnR5IGlzIHRha2VuIHRvIGJlIHRoZSBuYW1lIG9mIGEgY2xhc3MgdGhhdCB3aWxsIGJlIHJldHVybmVkIGFzCisgICAgICogdGhlIHN5c3RlbSBjbGFzcyBsb2FkZXIuIFRoZSBjbGFzcyBpcyBsb2FkZWQgdXNpbmcgdGhlIGRlZmF1bHQgc3lzdGVtCisgICAgICogY2xhc3MgbG9hZGVyIGFuZCBtdXN0IGRlZmluZSBhIHB1YmxpYyBjb25zdHJ1Y3RvciB0aGF0IHRha2VzIGEgc2luZ2xlCisgICAgICogcGFyYW1ldGVyIG9mIHR5cGUgPHR0PkNsYXNzTG9hZGVyPC90dD4gd2hpY2ggaXMgdXNlZAorICAgICAqIGFzIHRoZSBkZWxlZ2F0aW9uIHBhcmVudC4gQW4gaW5zdGFuY2UgaXMgdGhlbiBjcmVhdGVkIHVzaW5nIHRoaXMKKyAgICAgKiBjb25zdHJ1Y3RvciB3aXRoIHRoZSBkZWZhdWx0IHN5c3RlbSBjbGFzcyBsb2FkZXIgYXMgdGhlIHBhcmFtZXRlci4KKyAgICAgKiBUaGUgcmVzdWx0aW5nIGNsYXNzIGxvYWRlciBpcyBkZWZpbmVkIHRvIGJlIHRoZSBzeXN0ZW0gY2xhc3MgbG9hZGVyLgorICAgICAqIDxwPgorICAgICAqIElmIGEgc2VjdXJpdHkgbWFuYWdlciBpcyBwcmVzZW50LCBhbmQgdGhlIGNhbGxlcidzIGNsYXNzIGxvYWRlciBpcworICAgICAqIG5vdCBudWxsIGFuZCB0aGUgY2FsbGVyJ3MgY2xhc3MgbG9hZGVyIGlzIG5vdCB0aGUgc2FtZSBhcyBvciBhbiBhbmNlc3RvciBvZgorICAgICAqIHRoZSBzeXN0ZW0gY2xhc3MgbG9hZGVyLCB0aGVuCisgICAgICogdGhpcyBtZXRob2QgY2FsbHMgdGhlIHNlY3VyaXR5IG1hbmFnZXIncyA8Y29kZT5jaGVja1Blcm1pc3Npb248L2NvZGU+CisgICAgICogbWV0aG9kIHdpdGggYSA8Y29kZT5SdW50aW1lUGVybWlzc2lvbigiZ2V0Q2xhc3NMb2FkZXIiKTwvY29kZT4KKyAgICAgKiBwZXJtaXNzaW9uIHRvIGVuc3VyZSBpdCdzIG9rIHRvIGFjY2VzcyB0aGUgc3lzdGVtIGNsYXNzIGxvYWRlci4KKyAgICAgKiBJZiBub3QsIGEgPGNvZGU+U2VjdXJpdHlFeGNlcHRpb248L2NvZGU+IHdpbGwgYmUgdGhyb3duLgorICAgICAqCisgICAgICogQHJldHVybiB0aGUgc3lzdGVtIDxjb2RlPkNsYXNzTG9hZGVyPC9jb2RlPiBmb3IgZGVsZWdhdGlvbiwgb3IKKyAgICAgKiAgICAgICAgIDxjb2RlPm51bGw8L2NvZGU+IGlmIG5vbmUKKyAgICAgKiBAdGhyb3dzIFNlY3VyaXR5RXhjZXB0aW9uCisgICAgICogICAgICAgIGlmIGEgc2VjdXJpdHkgbWFuYWdlciBleGlzdHMgYW5kIGl0cworICAgICAqICAgICAgICA8Y29kZT5jaGVja1Blcm1pc3Npb248L2NvZGU+IG1ldGhvZCBkb2Vzbid0IGFsbG93CisgICAgICogICAgICAgIGFjY2VzcyB0byB0aGUgc3lzdGVtIGNsYXNzIGxvYWRlci4KKyAgICAgKiBAdGhyb3dzIElsbGVnYWxTdGF0ZUV4Y2VwdGlvbgorICAgICAqICAgICAgICBpZiBpbnZva2VkIHJlY3Vyc2l2ZWx5IGR1cmluZyB0aGUgY29uc3RydWN0aW9uCisgICAgICogICAgICAgIG9mIHRoZSBjbGFzcyBsb2FkZXIgc3BlY2lmaWVkIGJ5IHRoZQorICAgICAqICAgICAgICA8Y29kZT5qYXZhLnN5c3RlbS5jbGFzcy5sb2FkZXI8L2NvZGU+IHByb3BlcnR5LgorICAgICAqIEB0aHJvd3MgRXJyb3IKKyAgICAgKiAgICAgICAgaWYgdGhlIHN5c3RlbSBwcm9wZXJ0eSA8dHQ+amF2YS5zeXN0ZW0uY2xhc3MubG9hZGVyPC90dD4KKyAgICAgKiAgICAgICAgaXMgZGVmaW5lZCBidXQgdGhlIG5hbWVkIGNsYXNzIGNvdWxkIG5vdCBiZSBsb2FkZWQsIHRoZQorICAgICAqICAgICAgICBwcm92aWRlciBjbGFzcyBkb2VzIG5vdCBkZWZpbmUgdGhlIHJlcXVpcmVkIGNvbnN0cnVjdG9yLCBvciBhbgorICAgICAqICAgICAgICBleGNlcHRpb24gaXMgdGhyb3duIGJ5IHRoYXQgY29uc3RydWN0b3Igd2hlbiBpdCBpcyBpbnZva2VkLiBUaGUKKyAgICAgKiAgICAgICAgdW5kZXJseWluZyBjYXVzZSBvZiB0aGUgZXJyb3IgY2FuIGJlIHJldHJpZXZlZCB2aWEgdGhlCisgICAgICogICAgICAgIHtAbGluayBUaHJvd2FibGUjZ2V0Q2F1c2UoKX0gbWV0aG9kLgorICAgICAqIEBzZWUgU2VjdXJpdHlNYW5hZ2VyI2NoZWNrUGVybWlzc2lvbgorICAgICAqIEBzZWUgamF2YS5sYW5nLlJ1bnRpbWVQZXJtaXNzaW9uCisgICAgICogQHJldmlzZWQgMS40CisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBDbGFzc0xvYWRlciBnZXRTeXN0ZW1DbGFzc0xvYWRlcigpIHsKKwlpbml0U3lzdGVtQ2xhc3NMb2FkZXIoKTsKKwlpZiAoc2NsID09IG51bGwpIHsKKwkgICAgcmV0dXJuIG51bGw7CisJfQorCVNlY3VyaXR5TWFuYWdlciBzbSA9IFN5c3RlbS5nZXRTZWN1cml0eU1hbmFnZXIoKTsKKwlpZiAoc20gIT0gbnVsbCkgeworCSAgICBDbGFzc0xvYWRlciBjY2wgPSBnZXRDYWxsZXJDbGFzc0xvYWRlcigpOworCSAgICBpZiAoY2NsICE9IG51bGwgJiYgY2NsICE9IHNjbCAmJiAhc2NsLmlzQW5jZXN0b3IoY2NsKSkgeworCQlzbS5jaGVja1Blcm1pc3Npb24oZ2V0R2V0Q2xhc3NMb2FkZXJQZXJtKCkpOworCSAgICB9CisJfQorCXJldHVybiBzY2w7CisgICAgfQorCisgICAgcHJpdmF0ZSBzdGF0aWMgc3luY2hyb25pemVkIHZvaWQgaW5pdFN5c3RlbUNsYXNzTG9hZGVyKCkgeworCWlmICghc2NsU2V0KSB7CisJICAgIGlmIChzY2wgIT0gbnVsbCkKKwkJdGhyb3cgbmV3IElsbGVnYWxTdGF0ZUV4Y2VwdGlvbigicmVjdXJzaXZlIGNhbGwiKTsKKyAgICAgICAgICAgIHN1bi5taXNjLkxhdW5jaGVyIGwgPSBzdW4ubWlzYy5MYXVuY2hlci5nZXRMYXVuY2hlcigpOworCSAgICBpZiAobCAhPSBudWxsKSB7CisJCVRocm93YWJsZSBvb3BzID0gbnVsbDsKKwkJc2NsID0gbC5nZXRDbGFzc0xvYWRlcigpOworCSAgICAgICAgdHJ5IHsKKwkJICAgIFByaXZpbGVnZWRFeGNlcHRpb25BY3Rpb24gYTsKKwkJICAgIGEgPSBuZXcgU3lzdGVtQ2xhc3NMb2FkZXJBY3Rpb24oc2NsKTsKKyAgICAgICAgICAgICAgICAgICAgc2NsID0gKENsYXNzTG9hZGVyKSBBY2Nlc3NDb250cm9sbGVyLmRvUHJpdmlsZWdlZChhKTsKKwkgICAgICAgIH0gY2F0Y2ggKFByaXZpbGVnZWRBY3Rpb25FeGNlcHRpb24gcGFlKSB7CisJCSAgICBvb3BzID0gcGFlLmdldENhdXNlKCk7CisJICAgICAgICAgICAgaWYgKG9vcHMgaW5zdGFuY2VvZiBJbnZvY2F0aW9uVGFyZ2V0RXhjZXB0aW9uKSB7CisJCSAgICAgICAgb29wcyA9IG9vcHMuZ2V0Q2F1c2UoKTsKKwkJICAgIH0KKwkgICAgICAgIH0KKwkJaWYgKG9vcHMgIT0gbnVsbCkgeworCQkgICAgaWYgKG9vcHMgaW5zdGFuY2VvZiBFcnJvcikgeworCQkJdGhyb3cgKEVycm9yKSBvb3BzOworCQkgICAgfSBlbHNlIHsKKwkJICAgICAgICAvLyB3cmFwIHRoZSBleGNlcHRpb24KKwkJICAgICAgICB0aHJvdyBuZXcgRXJyb3Iob29wcyk7CisJCSAgICB9CisJCX0KKwkgICAgfQorCSAgICBzY2xTZXQgPSB0cnVlOworCX0KKyAgICB9CisKKyAgICAvLyBSZXR1cm5zIHRydWUgaWYgdGhlIHNwZWNpZmllZCBjbGFzcyBsb2FkZXIgY2FuIGJlIGZvdW5kCisgICAgLy8gaW4gdGhpcyBjbGFzcyBsb2FkZXIncyBkZWxlZ2F0aW9uIGNoYWluLgorICAgIGJvb2xlYW4gaXNBbmNlc3RvcihDbGFzc0xvYWRlciBjbCkgeworCUNsYXNzTG9hZGVyIGFjbCA9IHRoaXM7CisJZG8geworCSAgICBhY2wgPSBhY2wucGFyZW50OworCSAgICBpZiAoY2wgPT0gYWNsKSB7CisJCXJldHVybiB0cnVlOworCSAgICB9CisJfSB3aGlsZSAoYWNsICE9IG51bGwpOworCXJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICAvLyBSZXR1cm5zIHRoZSBjYWxsZXIncyBjbGFzcyBsb2FkZXIsIG9yIG51bGwgaWYgbm9uZS4KKyAgICAvLyBOT1RFIHRoaXMgbXVzdCBhbHdheXMgYmUgY2FsbGVkIHdoZW4gdGhlcmUgaXMgZXhhY3RseSBvbmUKKyAgICAvLyBpbnRlcnZlbmluZyBmcmFtZSBmcm9tIHRoZSBjb3JlIGxpYnJhcmllcyBvbiB0aGUgc3RhY2sgYmV0d2VlbgorICAgIC8vIHRoaXMgbWV0aG9kJ3MgaW52b2NhdGlvbiBhbmQgdGhlIGRlc2lyZWQgY2FsbGVyLgorICAgIHN0YXRpYyBDbGFzc0xvYWRlciBnZXRDYWxsZXJDbGFzc0xvYWRlcigpIHsKKyAgICAgICAgLy8gTk9URSB1c2Ugb2YgbW9yZSBnZW5lcmljIFJlZmxlY3Rpb24uZ2V0Q2FsbGVyQ2xhc3MoKQorICAgICAgICBDbGFzcyBjYWxsZXIgPSBSZWZsZWN0aW9uLmdldENhbGxlckNsYXNzKDMpOworICAgICAgICAvLyBUaGlzIGNhbiBiZSBudWxsIGlmIHRoZSBWTSBpcyByZXF1ZXN0aW5nIGl0CisgICAgICAgIGlmIChjYWxsZXIgPT0gbnVsbCkgeworICAgICAgICAgICAgcmV0dXJuIG51bGw7CisgICAgICAgIH0KKyAgICAgICAgLy8gQ2lyY3VtdmVudCBzZWN1cml0eSBjaGVjayBzaW5jZSB0aGlzIGlzIHBhY2thZ2UtcHJpdmF0ZQorICAgICAgICByZXR1cm4gY2FsbGVyLmdldENsYXNzTG9hZGVyMCgpOworICAgIH0KKworICAgIC8vIFRoZSBjbGFzcyBsb2FkZXIgZm9yIHRoZSBzeXN0ZW0KKyAgICBwcml2YXRlIHN0YXRpYyBDbGFzc0xvYWRlciBzY2w7CisKKyAgICAvLyBTZXQgdG8gdHJ1ZSBvbmNlIHRoZSBzeXN0ZW0gY2xhc3MgbG9hZGVyIGhhcyBiZWVuIHNldAorICAgIHByaXZhdGUgc3RhdGljIGJvb2xlYW4gc2NsU2V0OworCisgICAgLy8gUGVybWlzc2lvbiB0byBhY2Nlc3Mgc3lzdGVtIG9yIHBhcmVudCBjbGFzcyBsb2FkZXIKKyAgICBwcml2YXRlIHN0YXRpYyBSdW50aW1lUGVybWlzc2lvbiBnZXRDbGFzc0xvYWRlclBlcm0gPSBudWxsOworCisgICAgc3RhdGljIFJ1bnRpbWVQZXJtaXNzaW9uIGdldEdldENsYXNzTG9hZGVyUGVybSgpCisgICAgeworCWlmIChnZXRDbGFzc0xvYWRlclBlcm0gPT0gbnVsbCkKKwkgICAgZ2V0Q2xhc3NMb2FkZXJQZXJtID0gbmV3IFJ1bnRpbWVQZXJtaXNzaW9uKCJnZXRDbGFzc0xvYWRlciIpOworCXJldHVybiBnZXRDbGFzc0xvYWRlclBlcm07CisgICAgfQorCisgICAgLyoqCisgICAgICogRGVmaW5lcyBhIHBhY2thZ2UgYnkgbmFtZSBpbiB0aGlzIENsYXNzTG9hZGVyLiBUaGlzIGFsbG93cyBjbGFzcworICAgICAqIGxvYWRlcnMgdG8gZGVmaW5lIHRoZSBwYWNrYWdlcyBmb3IgdGhlaXIgY2xhc3Nlcy4gUGFja2FnZXMgbXVzdCBiZQorICAgICAqIGNyZWF0ZWQgYmVmb3JlIHRoZSBjbGFzcyBpcyBkZWZpbmVkLCBhbmQgcGFja2FnZSBuYW1lcyBtdXN0IGJlCisgICAgICogdW5pcXVlIHdpdGhpbiBhIGNsYXNzIGxvYWRlciBhbmQgY2Fubm90IGJlIHJlZGVmaW5lZCBvciBjaGFuZ2VkCisgICAgICogb25jZSBjcmVhdGVkLgorICAgICAqCisgICAgICogQHBhcmFtIG5hbWUgICAgICAgIHRoZSBwYWNrYWdlIG5hbWUKKyAgICAgKiBAcGFyYW0gc3BlY1RpdGxlICAgdGhlIHNwZWNpZmljYXRpb24gdGl0bGUKKyAgICAgKiBAcGFyYW0gc3BlY1ZlcnNpb24gdGhlIHNwZWNpZmljYXRpb24gdmVyc2lvbgorICAgICAqIEBwYXJhbSBzcGVjVmVuZG9yICB0aGUgc3BlY2lmaWNhdGlvbiB2ZW5kb3IKKyAgICAgKiBAcGFyYW0gaW1wbFRpdGxlICAgdGhlIGltcGxlbWVudGF0aW9uIHRpdGxlCisgICAgICogQHBhcmFtIGltcGxWZXJzaW9uIHRoZSBpbXBsZW1lbnRhdGlvbiB2ZXJzaW9uCisgICAgICogQHBhcmFtIGltcGxWZW5kb3IgIHRoZSBpbXBsZW1lbnRhdGlvbiB2ZW5kb3IKKyAgICAgKiBAcGFyYW0gc2VhbEJhc2UgICAgSWYgbm90IG51bGwsIHRoZW4gdGhpcyBwYWNrYWdlIGlzIHNlYWxlZCB3aXRoCisgICAgICogICAgICAgICAgICAgICAgICAgIHJlc3BlY3QgdG8gdGhlIGdpdmVuIGNvZGUgc291cmNlIFVSTC4gT3RoZXJ3aXNlLAorICAgICAqCQkJICB0aGUgcGFja2FnZSBpcyBub3Qgc2VhbGVkLgorICAgICAqIEByZXR1cm4gdGhlIG5ld2x5IGRlZmluZWQgPGNvZGU+UGFja2FnZTwvY29kZT4gb2JqZWN0CisgICAgICogQGV4Y2VwdGlvbiBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gaWYgcGFja2FnZSBuYW1lIGR1cGxpY2F0ZXMgYW4KKyAgICAgKiAgICAgICAgICAgIGV4aXN0aW5nIHBhY2thZ2UgZWl0aGVyIGluIHRoaXMgY2xhc3MgbG9hZGVyIG9yIG9uZSBvZgorICAgICAqICAgICAgICAgICAgaXRzIGFuY2VzdG9ycworICAgICAqIEBzaW5jZSAxLjIKKyAgICAgKi8KKyAgICBwcm90ZWN0ZWQgUGFja2FnZSBkZWZpbmVQYWNrYWdlKFN0cmluZyBuYW1lLCBTdHJpbmcgc3BlY1RpdGxlLAorCQkJCSAgICBTdHJpbmcgc3BlY1ZlcnNpb24sIFN0cmluZyBzcGVjVmVuZG9yLAorCQkJCSAgICBTdHJpbmcgaW1wbFRpdGxlLCBTdHJpbmcgaW1wbFZlcnNpb24sCisJCQkJICAgIFN0cmluZyBpbXBsVmVuZG9yLCBVUkwgc2VhbEJhc2UpCisJdGhyb3dzIElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbgorICAgIHsKKwlzeW5jaHJvbml6ZWQgKHBhY2thZ2VzKSB7CisJICAgIFBhY2thZ2UgcGtnID0gZ2V0UGFja2FnZShuYW1lKTsKKwkgICAgaWYgKHBrZyAhPSBudWxsKSB7CisJCXRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24obmFtZSk7CisJICAgIH0KKwkgICAgcGtnID0gbmV3IFBhY2thZ2UobmFtZSwgc3BlY1RpdGxlLCBzcGVjVmVyc2lvbiwgc3BlY1ZlbmRvciwKKwkJCSAgICAgIGltcGxUaXRsZSwgaW1wbFZlcnNpb24sIGltcGxWZW5kb3IsCisJCQkgICAgICBzZWFsQmFzZSk7CisJICAgIHBhY2thZ2VzLnB1dChuYW1lLCBwa2cpOworCSAgICByZXR1cm4gcGtnOworCX0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIGEgUGFja2FnZSB0aGF0IGhhcyBiZWVuIGRlZmluZWQgYnkgdGhpcyBjbGFzcyBsb2FkZXIgb3IgYW55CisgICAgICogb2YgaXRzIGFuY2VzdG9ycy4KKyAgICAgKgorICAgICAqIEBwYXJhbSAgbmFtZSB0aGUgcGFja2FnZSBuYW1lCisgICAgICogQHJldHVybiB0aGUgUGFja2FnZSBjb3JyZXNwb25kaW5nIHRvIHRoZSBnaXZlbiBuYW1lLCBvciBudWxsIGlmIG5vdAorICAgICAqICAgICAgICAgZm91bmQKKyAgICAgKiBAc2luY2UgIDEuMgorICAgICAqLworICAgIHByb3RlY3RlZCBQYWNrYWdlIGdldFBhY2thZ2UoU3RyaW5nIG5hbWUpIHsKKwlzeW5jaHJvbml6ZWQgKHBhY2thZ2VzKSB7CisJICAgIFBhY2thZ2UgcGtnID0gKFBhY2thZ2UpcGFja2FnZXMuZ2V0KG5hbWUpOworCSAgICBpZiAocGtnID09IG51bGwpIHsKKwkJaWYgKHBhcmVudCAhPSBudWxsKSB7CisJCSAgICBwa2cgPSBwYXJlbnQuZ2V0UGFja2FnZShuYW1lKTsKKwkJfSBlbHNlIHsKKwkJICAgIHBrZyA9IFBhY2thZ2UuZ2V0U3lzdGVtUGFja2FnZShuYW1lKTsKKwkJfQorCQlpZiAocGtnICE9IG51bGwpIHsKKwkJICAgIHBhY2thZ2VzLnB1dChuYW1lLCBwa2cpOworCQl9CisJICAgIH0KKwkgICAgcmV0dXJuIHBrZzsKKwl9CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJucyBhbGwgb2YgdGhlIFBhY2thZ2VzIGRlZmluZWQgYnkgdGhpcyBjbGFzcyBsb2FkZXIgYW5kIGl0cworICAgICAqIGFuY2VzdG9ycy4KKyAgICAgKgorICAgICAqIEByZXR1cm4gdGhlIGFycmF5IG9mIDxjb2RlPlBhY2thZ2U8L2NvZGU+IG9iamVjdHMgZGVmaW5lZCBieSB0aGlzCisgICAgICogPGNvZGU+Q2xhc3NMb2FkZXI8L2NvZGU+CisgICAgICogQHNpbmNlIDEuMgorICAgICAqLworICAgIHByb3RlY3RlZCBQYWNrYWdlW10gZ2V0UGFja2FnZXMoKSB7CisJTWFwIG1hcDsKKwlzeW5jaHJvbml6ZWQgKHBhY2thZ2VzKSB7CisJICAgIG1hcCA9IChNYXApcGFja2FnZXMuY2xvbmUoKTsKKwl9CisJUGFja2FnZVtdIHBrZ3M7CisJaWYgKHBhcmVudCAhPSBudWxsKSB7CisJICAgIHBrZ3MgPSBwYXJlbnQuZ2V0UGFja2FnZXMoKTsKKwl9IGVsc2UgeworCSAgICBwa2dzID0gUGFja2FnZS5nZXRTeXN0ZW1QYWNrYWdlcygpOworCX0KKwlpZiAocGtncyAhPSBudWxsKSB7CisJICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcGtncy5sZW5ndGg7IGkrKykgeworICAgICAgICAgICAgICAgIFN0cmluZyBwa2dOYW1lID0gcGtnc1tpXS5nZXROYW1lKCk7CisgICAgICAgICAgICAgICAgaWYgKG1hcC5nZXQocGtnTmFtZSkgPT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICBtYXAucHV0KHBrZ05hbWUsIHBrZ3NbaV0pOworICAgICAgICAgICAgICAgIH0KKwkgICAgfQorCX0KKwlyZXR1cm4gKFBhY2thZ2VbXSltYXAudmFsdWVzKCkudG9BcnJheShuZXcgUGFja2FnZVttYXAuc2l6ZSgpXSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJucyB0aGUgYWJzb2x1dGUgcGF0aCBuYW1lIG9mIGEgbmF0aXZlIGxpYnJhcnkuIFRoZSBWTQorICAgICAqIGludm9rZXMgdGhpcyBtZXRob2QgdG8gbG9jYXRlIHRoZSBuYXRpdmUgbGlicmFyaWVzIHRoYXQgYmVsb25nCisgICAgICogdG8gY2xhc3NlcyBsb2FkZWQgd2l0aCB0aGlzIGNsYXNzIGxvYWRlci4gSWYgdGhpcyBtZXRob2QgcmV0dXJucworICAgICAqIDxjb2RlPm51bGw8L2NvZGU+LCB0aGUgVk0gc2VhcmNoZXMgdGhlIGxpYnJhcnkgYWxvbmcgdGhlIHBhdGgKKyAgICAgKiBzcGVjaWZpZWQgYXMgdGhlIDxjb2RlPmphdmEubGlicmFyeS5wYXRoPC9jb2RlPiBwcm9wZXJ0eS4KKyAgICAgKgorICAgICAqIEBwYXJhbSAgICAgIGxpYm5hbWUgICB0aGUgbGlicmFyeSBuYW1lCisgICAgICogQHJldHVybiAgICAgdGhlIGFic29sdXRlIHBhdGggb2YgdGhlIG5hdGl2ZSBsaWJyYXJ5CisgICAgICogQHNlZSAgICAgICAgamF2YS5sYW5nLlN5c3RlbSNsb2FkTGlicmFyeShqYXZhLmxhbmcuU3RyaW5nKQorICAgICAqIEBzZWUgICAgICAgIGphdmEubGFuZy5TeXN0ZW0jbWFwTGlicmFyeU5hbWUoamF2YS5sYW5nLlN0cmluZykKKyAgICAgKiBAc2luY2UgICAgICAxLjIKKyAgICAgKi8KKyAgICBwcm90ZWN0ZWQgU3RyaW5nIGZpbmRMaWJyYXJ5KFN0cmluZyBsaWJuYW1lKSB7CisgICAgICAgIHJldHVybiBudWxsOworICAgIH0KKworICAgIC8qKgorICAgICAqIFRoZSBpbm5lciBjbGFzcyBOYXRpdmVMaWJyYXJ5IGRlbm90ZXMgYSBsb2FkZWQgbmF0aXZlIGxpYnJhcnkKKyAgICAgKiBpbnN0YW5jZS4gRXZlcnkgY2xhc3Nsb2FkZXIgY29udGFpbnMgYSB2ZWN0b3Igb2YgbG9hZGVkIG5hdGl2ZQorICAgICAqIGxpYnJhcmllcyBpbiB0aGUgcHJpdmF0ZSBmaWVsZCA8Y29kZT5uYXRpdmVMaWJyYXJpZXM8L2NvZGU+LgorICAgICAqIFRoZSBuYXRpdmUgbGlicmFyaWVzIGxvYWRlZCBpbnRvIHRoZSBzeXN0ZW0gYXJlIGVudGVyZWQgaW50bworICAgICAqIHRoZSA8Y29kZT5zeXN0ZW1OYXRpdmVMaWJyYXJpZXM8L2NvZGU+IHZlY3Rvci4KKyAgICAgKgorICAgICAqIEV2ZXJ5IG5hdGl2ZSBsaWJyYXJ5IHJldXFpcmVzIGEgcGFydGljdWxhciB2ZXJzaW9uIG9mIEpOSS4gVGhpcworICAgICAqIGlzIGRlbm90ZWQgYnkgdGhlIHByaXZhdGUgam5pVmVyc2lvbiBmaWVsZC4gVGhpcyBmaWVsZCBpcyBzZXQKKyAgICAgKiBieSB0aGUgVk0gd2hlbiBpdCBsb2FkcyB0aGUgbGlicmFyeSwgYW5kIHVzZWQgYnkgdGhlIFZNIHRvIHBhc3MKKyAgICAgKiB0aGUgY29ycmVjdCB2ZXJzaW9uIG9mIEpOSSB0byB0aGUgbmF0aXZlIG1ldGhvZHMuCisgICAgICoKKyAgICAgKiBAdmVyc2lvbiAxLjE2MiwgMDMvMTkvMDIKKyAgICAgKiBAc2VlICAgICBqYXZhLmxhbmcuQ2xhc3NMb2FkZXIKKyAgICAgKiBAc2luY2UgICAxLjIKKyAgICAgKi8KKyAgICBzdGF0aWMgY2xhc3MgTmF0aXZlTGlicmFyeSB7CisgICAgICAgIC8qIG9wYXF1ZSBoYW5kbGUgdG8gbmF0aXZlIGxpYnJhcnksIHVzZWQgaW4gbmF0aXZlIGNvZGUuICovCisgICAgICAgIGxvbmcgaGFuZGxlOworICAgICAgICAvKiB0aGUgdmVyc2lvbiBvZiBKTkkgZW52aXJvbm1lbnQgdGhlIG5hdGl2ZSBsaWJyYXJ5IHJlcXVpcmVzLiAqLworICAgICAgICBwcml2YXRlIGludCBqbmlWZXJzaW9uOworICAgICAgICAvKiB0aGUgY2xhc3MgZnJvbSB3aGljaCB0aGUgbGlicmFyeSBpcyBsb2FkZWQsIGFsc28gaW5kaWNhdGVzCisJICAgdGhlIGxvYWRlciB0aGlzIG5hdGl2ZSBsaWJyYXJ5IGJlbG9uZ3MuICovCisgICAgICAgIHByaXZhdGUgQ2xhc3MgZnJvbUNsYXNzOworICAgICAgICAvKiB0aGUgY2Fub25pY2FsaXplZCBuYW1lIG9mIHRoZSBuYXRpdmUgbGlicmFyeS4gKi8KKyAgICAgICAgU3RyaW5nIG5hbWU7CisKKyAgICAgICAgbmF0aXZlIHZvaWQgbG9hZChTdHJpbmcgbmFtZSk7CisgICAgICAgIG5hdGl2ZSBsb25nIGZpbmQoU3RyaW5nIG5hbWUpOworICAgICAgICBuYXRpdmUgdm9pZCB1bmxvYWQoKTsKKworICAgICAgICBwdWJsaWMgTmF0aXZlTGlicmFyeShDbGFzcyBmcm9tQ2xhc3MsIFN0cmluZyBuYW1lKSB7CisgICAgICAgICAgICB0aGlzLm5hbWUgPSBuYW1lOworCSAgICB0aGlzLmZyb21DbGFzcyA9IGZyb21DbGFzczsKKwl9CisKKyAgICAgICAgcHJvdGVjdGVkIHZvaWQgZmluYWxpemUoKSB7CisJICAgIHN5bmNocm9uaXplZCAobG9hZGVkTGlicmFyeU5hbWVzKSB7CisJICAgICAgICBpZiAoZnJvbUNsYXNzLmdldENsYXNzTG9hZGVyKCkgIT0gbnVsbCAmJiBoYW5kbGUgIT0gMCkgeworCQkgICAgLyogcmVtb3ZlIHRoZSBuYXRpdmUgbGlicmFyeSBuYW1lICovCisJCSAgICBpbnQgc2l6ZSA9IGxvYWRlZExpYnJhcnlOYW1lcy5zaXplKCk7CisJCSAgICBmb3IgKGludCBpID0gMDsgaSA8IHNpemU7IGkrKykgeworCQkgICAgICAgIGlmIChuYW1lLmVxdWFscyhsb2FkZWRMaWJyYXJ5TmFtZXMuZWxlbWVudEF0KGkpKSkgeworCQkJICAgIGxvYWRlZExpYnJhcnlOYW1lcy5yZW1vdmVFbGVtZW50QXQoaSk7CisJCQkgICAgYnJlYWs7CisJCQl9CisJCSAgICB9CisJCSAgICAvKiB1bmxvYWQgdGhlIGxpYnJhcnkuICovCisJCSAgICBDbGFzc0xvYWRlci5uYXRpdmVMaWJyYXJ5Q29udGV4dC5wdXNoKHRoaXMpOworCQkgICAgdHJ5IHsKKwkJCXVubG9hZCgpOworCQkgICAgfSBmaW5hbGx5IHsKKwkJICAgICAgICBDbGFzc0xvYWRlci5uYXRpdmVMaWJyYXJ5Q29udGV4dC5wb3AoKTsKKwkJICAgIH0KKwkJfQorCSAgICB9CisJfQorICAgICAgICAvKiBDYWxsZWQgaW4gdGhlIFZNIHRvIGRldGVybWluZSB0aGUgY29udGV4dCBjbGFzcyBpbgorCSAgIEpOSV9Mb2FkL0pOSV9VbmxvYWQgKi8KKyAgICAgICAgc3RhdGljIENsYXNzIGdldEZyb21DbGFzcygpIHsKKyAgICAgICAgICAgIHJldHVybiAoKE5hdGl2ZUxpYnJhcnkpCisJCSAgICAoQ2xhc3NMb2FkZXIubmF0aXZlTGlicmFyeUNvbnRleHQucGVlaygpKSkuZnJvbUNsYXNzOworCX0KKyAgICB9CisKKyAgICAvKiB0aGUgImRlZmF1bHQiIGRvbWFpbi4gU2V0IGFzIHRoZSBkZWZhdWx0IFByb3RlY3Rpb25Eb21haW4KKyAgICAgKiBvbiBuZXdseSBjcmVhdGVkIGNsYXNzc2VzLgorICAgICAqLworICAgIHByaXZhdGUgUHJvdGVjdGlvbkRvbWFpbiBkZWZhdWx0RG9tYWluID0gbnVsbDsKKworICAgIC8qCisgICAgICogcmV0dXJucyAoYW5kIGluaXRpYWxpemVzKSB0aGUgZGVmYXVsdCBkb21haW4uCisgICAgICovCisKKyAgICBwcml2YXRlIHN5bmNocm9uaXplZCBQcm90ZWN0aW9uRG9tYWluIGdldERlZmF1bHREb21haW4oKSB7CisJaWYgKGRlZmF1bHREb21haW4gPT0gbnVsbCkgeworCSAgICBDb2RlU291cmNlIGNzID0gbmV3IENvZGVTb3VyY2UobnVsbCwgbnVsbCk7CisJICAgIGRlZmF1bHREb21haW4gPSBuZXcgUHJvdGVjdGlvbkRvbWFpbihjcywgbnVsbCwgdGhpcywgbnVsbCk7CisJfQorCXJldHVybiBkZWZhdWx0RG9tYWluOworICAgIH0KKworICAgIC8qIEFsbCBuYXRpdmUgbGlicmFyeSBuYW1lcyB3ZSd2ZSBsb2FkZWQuICovCisgICAgcHJpdmF0ZSBzdGF0aWMgVmVjdG9yIGxvYWRlZExpYnJhcnlOYW1lcyA9IG5ldyBWZWN0b3IoKTsKKyAgICAvKiBOYXRpdmUgbGlicmFyaWVzIGJlbG9uZ2luZyB0byBzeXN0ZW0gY2xhc3Nlcy4gKi8KKyAgICBwcml2YXRlIHN0YXRpYyBWZWN0b3Igc3lzdGVtTmF0aXZlTGlicmFyaWVzID0gbmV3IFZlY3RvcigpOworICAgIC8qIE5hdGl2ZSBsaWJyYXJpZXMgYXNzb2NpYXRlZCB3aXRoIHRoZSBjbGFzcyBsb2FkZXIuICovCisgICAgcHJpdmF0ZSBWZWN0b3IgbmF0aXZlTGlicmFyaWVzID0gbmV3IFZlY3RvcigpOworCisgICAgLyogbmF0aXZlIGxpYnJhcmllcyBiZWluZyBsb2FkZWQvdW5sb2FkZWQuICovCisgICAgcHJpdmF0ZSBzdGF0aWMgU3RhY2sgbmF0aXZlTGlicmFyeUNvbnRleHQgPSBuZXcgU3RhY2soKTsKKworICAgIC8qIFRoZSBwYXRocyBzZWFyY2hlZCBmb3IgbGlicmFyaWVzICovCisgICAgc3RhdGljIHByaXZhdGUgU3RyaW5nIHVzcl9wYXRoc1tdOworICAgIHN0YXRpYyBwcml2YXRlIFN0cmluZyBzeXNfcGF0aHNbXTsKKworICAgIHByaXZhdGUgc3RhdGljIFN0cmluZ1tdIGluaXRpYWxpemVQYXRoKFN0cmluZyBwcm9wbmFtZSkgeworICAgICAgICBTdHJpbmcgbGRwYXRoID0gU3lzdGVtLmdldFByb3BlcnR5KHByb3BuYW1lLCAiIik7CisJU3RyaW5nIHBzID0gRmlsZS5wYXRoU2VwYXJhdG9yOworCWludCBsZGxlbiA9IGxkcGF0aC5sZW5ndGgoKTsKKwlpbnQgaSwgaiwgbjsKKwkvLyBDb3VudCB0aGUgc2VwYXJhdG9ycyBpbiB0aGUgcGF0aAorCWkgPSBsZHBhdGguaW5kZXhPZihwcyk7CisJbiA9IDA7CisJd2hpbGUgKGkgPj0gMCkgeworCSAgICBuKys7CisJICAgIGkgPSBsZHBhdGguaW5kZXhPZihwcywgaSsxKTsKKwl9CisKKwkvLyBhbGxvY2F0ZSB0aGUgYXJyYXkgb2YgcGF0aHMgLSBuIDoncyA9IG4gKyAxIHBhdGggZWxlbWVudHMKKwlTdHJpbmdbXSBwYXRocyA9IG5ldyBTdHJpbmdbbiArIDFdOworCisJLy8gRmlsbCB0aGUgYXJyYXkgd2l0aCBwYXRocyBmcm9tIHRoZSBsZHBhdGgKKwluID0gaSA9IDA7CisJaiA9IGxkcGF0aC5pbmRleE9mKHBzKTsKKwl3aGlsZSAoaiA+PSAwKSB7CisJICAgIGlmIChqIC0gaSA+IDApIHsKKwkgICAgICAgIHBhdGhzW24rK10gPSBsZHBhdGguc3Vic3RyaW5nKGksIGopOworCSAgICB9IGVsc2UgaWYgKGogLSBpID09IDApIHsKKwkgICAgICAgIHBhdGhzW24rK10gPSAiLiI7CisJICAgIH0KKwkgICAgaSA9IGogKyAxOworCSAgICBqID0gbGRwYXRoLmluZGV4T2YocHMsIGkpOworCX0KKwlwYXRoc1tuXSA9IGxkcGF0aC5zdWJzdHJpbmcoaSwgbGRsZW4pOworCXJldHVybiBwYXRoczsKKyAgICB9CisKKworICAgIC8qIENhbGxlZCBpbiB0aGUgamF2YS5sYW5nLlJ1bnRpbWUgY2xhc3MgdG8gaW1wbGVtZW50IGxvYWQKKyAgICAgKiBhbmQgbG9hZExpYnJhcnkuCisgICAgICovCisgICAgc3RhdGljIHZvaWQgbG9hZExpYnJhcnkoQ2xhc3MgZnJvbUNsYXNzLCBTdHJpbmcgbmFtZSwKKwkJCSAgICBib29sZWFuIGlzQWJzb2x1dGUpIHsKKyAgICAgICAgQ2xhc3NMb2FkZXIgbG9hZGVyID0KKwkgICAgKGZyb21DbGFzcyA9PSBudWxsKSA/IG51bGwgOiBmcm9tQ2xhc3MuZ2V0Q2xhc3NMb2FkZXIoKTsKKyAgICAgICAgaWYgKHN5c19wYXRocyA9PSBudWxsKSB7CisJICAgIHVzcl9wYXRocyA9IGluaXRpYWxpemVQYXRoKCJqYXZhLmxpYnJhcnkucGF0aCIpOworCSAgICBzeXNfcGF0aHMgPSBpbml0aWFsaXplUGF0aCgic3VuLmJvb3QubGlicmFyeS5wYXRoIik7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGlzQWJzb2x1dGUpIHsKKwkgICAgaWYgKGxvYWRMaWJyYXJ5MChmcm9tQ2xhc3MsIG5ldyBGaWxlKG5hbWUpKSkgeworCSAgICAgICAgcmV0dXJuOworCSAgICB9CisJICAgIHRocm93IG5ldyBVbnNhdGlzZmllZExpbmtFcnJvcigiQ2FuJ3QgbG9hZCBsaWJyYXJ5OiAiICsgbmFtZSk7CisJfQorCWlmIChsb2FkZXIgIT0gbnVsbCkgeworCSAgICBTdHJpbmcgbGliZmlsZW5hbWUgPSBsb2FkZXIuZmluZExpYnJhcnkobmFtZSk7CisJICAgIGlmIChsaWJmaWxlbmFtZSAhPSBudWxsKSB7CisJICAgICAgICBGaWxlIGxpYmZpbGUgPSBuZXcgRmlsZShsaWJmaWxlbmFtZSk7CisJICAgICAgICBpZiAoIWxpYmZpbGUuaXNBYnNvbHV0ZSgpKSB7CisJCSAgICB0aHJvdyBuZXcgVW5zYXRpc2ZpZWRMaW5rRXJyb3IoCisgICAgIkNsYXNzTG9hZGVyLmZpbmRMaWJyYXJ5IGZhaWxlZCB0byByZXR1cm4gYW4gYWJzb2x1dGUgcGF0aDogIiArIGxpYmZpbGVuYW1lKTsKKwkJfQorCQlpZiAobG9hZExpYnJhcnkwKGZyb21DbGFzcywgbGliZmlsZSkpIHsKKwkJICAgIHJldHVybjsKKwkJfQorCQl0aHJvdyBuZXcgVW5zYXRpc2ZpZWRMaW5rRXJyb3IgKCJDYW4ndCBsb2FkICIgKyBsaWJmaWxlbmFtZSk7CisJICAgIH0KKwl9CisJZm9yIChpbnQgaSA9IDAgOyBpIDwgc3lzX3BhdGhzLmxlbmd0aCA7IGkrKykgeworCSAgICBGaWxlIGxpYmZpbGUgPSBuZXcgRmlsZShzeXNfcGF0aHNbaV0sIFN5c3RlbS5tYXBMaWJyYXJ5TmFtZShuYW1lKSk7CisJICAgIGlmIChsb2FkTGlicmFyeTAoZnJvbUNsYXNzLCBsaWJmaWxlKSkgeworCSAgICAgICAgcmV0dXJuOworCSAgICB9CisJfQorCWlmIChsb2FkZXIgIT0gbnVsbCkgeworCSAgICBmb3IgKGludCBpID0gMCA7IGkgPCB1c3JfcGF0aHMubGVuZ3RoIDsgaSsrKSB7CisJICAgICAgICBGaWxlIGxpYmZpbGUgPSBuZXcgRmlsZSh1c3JfcGF0aHNbaV0sCisJCQkJCVN5c3RlbS5tYXBMaWJyYXJ5TmFtZShuYW1lKSk7CisJCWlmIChsb2FkTGlicmFyeTAoZnJvbUNsYXNzLCBsaWJmaWxlKSkgeworCQkgICAgcmV0dXJuOworCQl9CisJICAgIH0KKwl9CisJLy8gT29wcywgaXQgZmFpbGVkCisgICAgICAgIHRocm93IG5ldyBVbnNhdGlzZmllZExpbmtFcnJvcigibm8gIiArIG5hbWUgKyAiIGluIGphdmEubGlicmFyeS5wYXRoIik7CisgICAgfQorCisgICAgcHJpdmF0ZSBzdGF0aWMgYm9vbGVhbiBsb2FkTGlicmFyeTAoQ2xhc3MgZnJvbUNsYXNzLCBmaW5hbCBGaWxlIGZpbGUpIHsKKwlCb29sZWFuIGV4aXN0cyA9IChCb29sZWFuKQorCSAgICBBY2Nlc3NDb250cm9sbGVyLmRvUHJpdmlsZWdlZChuZXcgUHJpdmlsZWdlZEFjdGlvbigpIHsKKwkJcHVibGljIE9iamVjdCBydW4oKSB7CisJCSAgICByZXR1cm4gbmV3IEJvb2xlYW4oZmlsZS5leGlzdHMoKSk7CisJCX0KKwkgICAgfSk7CisJaWYgKCFleGlzdHMuYm9vbGVhblZhbHVlKCkpIHsKKwkgICAgcmV0dXJuIGZhbHNlOworCX0KKyAgICAgICAgU3RyaW5nIG5hbWU7CisJdHJ5IHsKKwkgICAgbmFtZSA9IGZpbGUuZ2V0Q2Fub25pY2FsUGF0aCgpOworCX0gY2F0Y2ggKElPRXhjZXB0aW9uIGUpIHsKKwkgICAgcmV0dXJuIGZhbHNlOworCX0KKyAgICAgICAgQ2xhc3NMb2FkZXIgbG9hZGVyID0KKwkgICAgKGZyb21DbGFzcyA9PSBudWxsKSA/IG51bGwgOiBmcm9tQ2xhc3MuZ2V0Q2xhc3NMb2FkZXIoKTsKKyAgICAgICAgVmVjdG9yIGxpYnMgPQorCSAgICBsb2FkZXIgIT0gbnVsbCA/IGxvYWRlci5uYXRpdmVMaWJyYXJpZXMgOiBzeXN0ZW1OYXRpdmVMaWJyYXJpZXM7CisJc3luY2hyb25pemVkIChsaWJzKSB7CisJICAgIGludCBzaXplID0gbGlicy5zaXplKCk7CisJICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7CisJICAgICAgICBOYXRpdmVMaWJyYXJ5IGxpYiA9IChOYXRpdmVMaWJyYXJ5KWxpYnMuZWxlbWVudEF0KGkpOworCQlpZiAobmFtZS5lcXVhbHMobGliLm5hbWUpKSB7CisJCSAgICByZXR1cm4gdHJ1ZTsKKwkJfQorCSAgICB9CisKKwkgICAgc3luY2hyb25pemVkIChsb2FkZWRMaWJyYXJ5TmFtZXMpIHsKKwkgICAgICAgIGlmIChsb2FkZWRMaWJyYXJ5TmFtZXMuY29udGFpbnMobmFtZSkpIHsKKwkJICAgIHRocm93IG5ldyBVbnNhdGlzZmllZExpbmtFcnJvcgorCQkgICAgICAgICgiTmF0aXZlIExpYnJhcnkgIiArCisJCQkgbmFtZSArCisJCQkgIiBhbHJlYWR5IGxvYWRlZCBpbiBhbm90aGVyIGNsYXNzbG9hZGVyIik7CisJCX0KKwkJLyogSWYgdGhlIGxpYnJhcnkgaXMgYmVpbmcgbG9hZGVkIChtdXN0IGJlIGJ5CisJCSAqIHRoZSBzYW1lIHRocmVhZCwgYmVjYXVzZSBSdW50aW1lLmxvYWQgYW5kCisJCSAqIFJ1bnRpbWUubG9hZExpYnJhcnkgYXJlIHN5bmNocm9ub3VzKS4gVGhlCisJCSAqIHJlYXNvbiBpcyBjYW4gb2NjdXIgaXMgdGhhdCB0aGUgSk5JX09uTG9hZAorCQkgKiBmdW5jdGlvbiBjYW4gY2F1c2UgYW5vdGhlciBsb2FkTGlicmFyeSBjYWxsLgorCQkgKgorCQkgKiBUaHVzIHdlIGNhbiB1c2UgYSBzdGF0aWMgc3RhY2sgdG8gaG9sZCB0aGUgbGlzdAorCQkgKiBvZiBsaWJyYXJpZXMgd2UgYXJlIGxvYWRpbmcuCisJCSAqCisJCSAqIElmIHRoZXJlIGlzIGEgcGVuZGluZyBsb2FkIG9wZXJhdGlvbiBmb3IgdGhlCisJCSAqIGxpYnJhcnksIHdlIGltbWVkaWF0ZWx5IHJldHVybiBzdWNjZXNzOyBvdGhlcndpc2UsCisJCSAqIHdlIHJhaXNlIFVuc2F0aXNmaWVkTGlua0Vycm9yLgorCQkgKi8KKwkJaW50IG4gPSBuYXRpdmVMaWJyYXJ5Q29udGV4dC5zaXplKCk7CisJCWZvciAoaW50IGkgPSAwOyBpIDwgbjsgaSsrKSB7CisJCSAgICBOYXRpdmVMaWJyYXJ5IGxpYiA9IChOYXRpdmVMaWJyYXJ5KQorCQkgICAgICAgIG5hdGl2ZUxpYnJhcnlDb250ZXh0LmVsZW1lbnRBdChpKTsKKwkJICAgIGlmIChuYW1lLmVxdWFscyhsaWIubmFtZSkpIHsKKwkJICAgICAgICBpZiAobG9hZGVyID09IGxpYi5mcm9tQ2xhc3MuZ2V0Q2xhc3NMb2FkZXIoKSkgeworCQkJICAgIHJldHVybiB0cnVlOworCQkJfSBlbHNlIHsKKwkJCSAgICB0aHJvdyBuZXcgVW5zYXRpc2ZpZWRMaW5rRXJyb3IKKwkJCSAgICAgICAgKCJOYXRpdmUgTGlicmFyeSAiICsKKwkJCQkgbmFtZSArCisJCQkJICIgaXMgYmVpbmcgbG9hZGVkIGluIGFub3RoZXIgY2xhc3Nsb2FkZXIiKTsKKwkJCX0KKwkJICAgIH0KKwkJfQorCQlOYXRpdmVMaWJyYXJ5IGxpYiA9IG5ldyBOYXRpdmVMaWJyYXJ5KGZyb21DbGFzcywgbmFtZSk7CisJCW5hdGl2ZUxpYnJhcnlDb250ZXh0LnB1c2gobGliKTsKKwkJdHJ5IHsKKwkJICAgIGxpYi5sb2FkKG5hbWUpOworCQl9IGZpbmFsbHkgeworCQkgICAgbmF0aXZlTGlicmFyeUNvbnRleHQucG9wKCk7CisJCX0KKwkJaWYgKGxpYi5oYW5kbGUgIT0gMCkgeworCQkgICAgbG9hZGVkTGlicmFyeU5hbWVzLmFkZEVsZW1lbnQobmFtZSk7CisJCSAgICBsaWJzLmFkZEVsZW1lbnQobGliKTsKKwkJICAgIHJldHVybiB0cnVlOworCQl9CisJCXJldHVybiBmYWxzZTsKKwkgICAgfQorCX0KKyAgICB9CisKKyAgICAvKiBDYWxsZWQgaW4gdGhlIFZNIGNsYXNzIGxpbmtpbmcgY29kZS4gKi8KKyAgICBzdGF0aWMgbG9uZyBmaW5kTmF0aXZlKENsYXNzTG9hZGVyIGxvYWRlciwgU3RyaW5nIG5hbWUpIHsKKyAgICAgICAgVmVjdG9yIGxpYnMgPQorCSAgICBsb2FkZXIgIT0gbnVsbCA/IGxvYWRlci5uYXRpdmVMaWJyYXJpZXMgOiBzeXN0ZW1OYXRpdmVMaWJyYXJpZXM7CisJc3luY2hyb25pemVkIChsaWJzKSB7CisJICAgIGludCBzaXplID0gbGlicy5zaXplKCk7CisJICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7CisJICAgICAgICBOYXRpdmVMaWJyYXJ5IGxpYiA9IChOYXRpdmVMaWJyYXJ5KWxpYnMuZWxlbWVudEF0KGkpOworCQlsb25nIGVudHJ5ID0gbGliLmZpbmQobmFtZSk7CisJCWlmIChlbnRyeSAhPSAwKQorCQkgICAgcmV0dXJuIGVudHJ5OworCSAgICB9CisJfQorCXJldHVybiAwOworICAgIH0KKworICAgIC8qCisgICAgICogVGhlIGRlZmF1bHQgdG9nZ2xlIGZvciBhc3NlcnRpb24gY2hlY2tpbmcuCisgICAgICovCisgICAgcHJpdmF0ZSBib29sZWFuIGRlZmF1bHRBc3NlcnRpb25TdGF0dXMgPSBmYWxzZTsKKworICAgIC8qCisgICAgICogTWFwcyBTdHJpbmcgcGFja2FnZU5hbWUgdG8gQm9vbGVhbiBwYWNrYWdlIGRlZmF1bHQgYXNzZXJ0aW9uIHN0YXR1cworICAgICAqIE5vdGUgdGhhdCB0aGUgZGVmYXVsdCBwYWNrYWdlIGlzIHBsYWNlZCB1bmRlciBhIG51bGwgbWFwIGtleS4KKyAgICAgKiBJZiB0aGlzIGZpZWxkIGlzIG51bGwgdGhlbiB3ZSBhcmUgZGVsZWdhdGluZyBhc3NlcnRpb24gc3RhdHVzIHF1ZXJpZXMKKyAgICAgKiB0byB0aGUgVk0sIGkuZS4sIG5vbmUgb2YgdGhpcyBDbGFzc0xvYWRlcidzIGFzc2VydGlvbiBzdGF0dXMKKyAgICAgKiBtb2RpZmljYXRpb24gbWV0aG9kcyBoYXZlIGJlZW4gY2FsbGVkLgorICAgICAqLworICAgIHByaXZhdGUgTWFwIHBhY2thZ2VBc3NlcnRpb25TdGF0dXMgPSBudWxsOworCisgICAgLyoKKyAgICAgKiBNYXBzIFN0cmluZyBmdWxseVF1YWxpZmllZENsYXNzTmFtZSB0byBCb29sZWFuIGFzc2VydGlvblN0YXR1cworICAgICAqIElmIHRoaXMgZmllbGQgaXMgbnVsbCB0aGVuIHdlIGFyZSBkZWxlZ2F0aW5nIGFzc2VydGlvbiBzdGF0dXMgcXVlcmllcworICAgICAqIHRvIHRoZSBWTSwgaS5lLiwgbm9uZSBvZiB0aGlzIENsYXNzTG9hZGVyJ3MgYXNzZXJ0aW9uIHN0YXR1cworICAgICAqIG1vZGlmaWNhdGlvbiBtZXRob2RzIGhhdmUgYmVlbiBjYWxsZWQuCisgICAgICovCisgICAgTWFwIGNsYXNzQXNzZXJ0aW9uU3RhdHVzID0gbnVsbDsKKworICAgIC8qKgorICAgICAqIFNldHMgdGhlIGRlZmF1bHQgYXNzZXJ0aW9uIHN0YXR1cyBmb3IgdGhpcyBjbGFzcyBsb2FkZXIuICBUaGlzIHNldHRpbmcKKyAgICAgKiBkZXRlcm1pbmVzIHdoZXRoZXIgY2xhc3NlcyBsb2FkZWQgYnkgdGhpcyBjbGFzcyBsb2FkZXIgYW5kIGluaXRpYWxpemVkCisgICAgICogaW4gdGhlIGZ1dHVyZSB3aWxsIGhhdmUgYXNzZXJ0aW9ucyBlbmFibGVkIG9yIGRpc2FibGVkIGJ5IGRlZmF1bHQuCisgICAgICogVGhpcyBzZXR0aW5nIG1heSBiZSBvdmVycmlkZGVuIG9uIGEgcGVyLXBhY2thZ2Ugb3IgcGVyLWNsYXNzIGJhc2lzIGJ5CisgICAgICogaW52b2tpbmcge0BsaW5rICNzZXRQYWNrYWdlQXNzZXJ0aW9uU3RhdHVzKFN0cmluZyxib29sZWFuKX0gb3Ige0BsaW5rCisgICAgICogI3NldENsYXNzQXNzZXJ0aW9uU3RhdHVzKFN0cmluZyxib29sZWFuKX0uCisgICAgICoKKyAgICAgKiBAcGFyYW0gZW5hYmxlZCA8dHQ+dHJ1ZTwvdHQ+IGlmIGNsYXNzZXMgbG9hZGVkIGJ5IHRoaXMgY2xhc3MgbG9hZGVyCisgICAgICogICAgICAgIHdpbGwgaGVuY2Vmb3J0aCBoYXZlIGFzc2VydGlvbnMgZW5hYmxlZCBieSBkZWZhdWx0LAorICAgICAqICAgICAgICA8dHQ+ZmFsc2U8L3R0PiBpZiB0aGV5IHdpbGwgaGF2ZSBhc3NlcnRpb25zIGRpc2FibGVkIGJ5IGRlZmF1bHQuCisgICAgICogQHNpbmNlIDEuNAorICAgICAqLworICAgIHB1YmxpYyBzeW5jaHJvbml6ZWQgdm9pZCBzZXREZWZhdWx0QXNzZXJ0aW9uU3RhdHVzKGJvb2xlYW4gZW5hYmxlZCkgeworICAgICAgICBpZiAoY2xhc3NBc3NlcnRpb25TdGF0dXMgPT0gbnVsbCkKKyAgICAgICAgICAgIGluaXRpYWxpemVKYXZhQXNzZXJ0aW9uTWFwcygpOworCisgICAgICAgIGRlZmF1bHRBc3NlcnRpb25TdGF0dXMgPSBlbmFibGVkOworICAgIH0KKworICAgIC8qKgorICAgICAqIFNldHMgdGhlIHBhY2thZ2UgZGVmYXVsdCBhc3NlcnRpb24gc3RhdHVzIGZvciB0aGUgbmFtZWQKKyAgICAgKiBwYWNrYWdlLiAgVGhlIHBhY2thZ2UgZGVmYXVsdCBhc3NlcnRpb24gc3RhdHVzIGRldGVybWluZXMgdGhlCisgICAgICogYXNzZXJ0aW9uIHN0YXR1cyBmb3IgY2xhc3NlcyBpbml0aWFsaXplZCBpbiB0aGUgZnV0dXJlIHRoYXQgYmVsb25nCisgICAgICogdG8gdGhlIG5hbWVkIHBhY2thZ2Ugb3IgYW55IG9mIGl0cyAic3VicGFja2FnZXMuIgorICAgICAqIDxwPgorICAgICAqIEEgc3VicGFja2FnZSBvZiBhIHBhY2thZ2UgbmFtZWQgcCBpcyBhbnkgcGFja2FnZSB3aG9zZSBuYW1lCisgICAgICogYmVnaW5zIHdpdGggInAuIiAuICBGb3IgZXhhbXBsZSwgPHR0PmphdmF4LnN3aW5nLnRleHQ8L3R0PiBpcworICAgICAqIGEgc3VicGFja2FnZSBvZiA8dHQ+amF2YXguc3dpbmc8L3R0PiwgYW5kIGJvdGggPHR0PmphdmEudXRpbDwvdHQ+CisgICAgICogYW5kIDx0dD5qYXZhLmxhbmcucmVmbGVjdDwvdHQ+IGFyZSBzdWJwYWNrYWdlcyBvZiA8dHQ+amF2YTwvdHQ+LgorICAgICAqIDxwPgorICAgICAqIEluIHRoZSBldmVudCB0aGF0IG11bHRpcGxlIHBhY2thZ2UgZGVmYXVsdHMgYXBwbHkgdG8gYSBnaXZlbgorICAgICAqIGNsYXNzLCB0aGUgcGFja2FnZSBkZWZhdWx0IHBlcnRhaW5pbmcgdG8gdGhlIG1vc3Qgc3BlY2lmaWMgcGFja2FnZQorICAgICAqIHRha2VzIHByZWNlZGVuY2Ugb3ZlciB0aGUgb3RoZXJzLiAgRm9yIGV4YW1wbGUsIGlmCisgICAgICogPHR0PmphdmF4Lmxhbmc8L3R0PiBhbmQgPHR0PmphdmF4LmxhbmcucmVmbGVjdDwvdHQ+IGJvdGggaGF2ZQorICAgICAqIHBhY2thZ2UgZGVmYXVsdHMgYXNzb2NpYXRlZCB3aXRoIHRoZW0sIHRoZSBsYXR0ZXIgcGFja2FnZQorICAgICAqIGRlZmF1bHQgYXBwbGllcyB0byBjbGFzc2VzIGluIDx0dD5qYXZheC5sYW5nLnJlZmxlY3Q8L3R0Pi4KKyAgICAgKiA8cD4KKyAgICAgKiBQYWNrYWdlIGRlZmF1bHRzIHRha2UgcHJlY2VkZW5jZSBvdmVyIHRoZSBjbGFzcyBsb2FkZXIncyBkZWZhdWx0CisgICAgICogYXNzZXJ0aW9uIHN0YXR1cywgYW5kIG1heSBiZSBvdmVycmlkZGVuIG9uIGEgcGVyLWNsYXNzIGJhc2lzIGJ5CisgICAgICogaW52b2tpbmcge0BsaW5rICNzZXRDbGFzc0Fzc2VydGlvblN0YXR1cyhTdHJpbmcsYm9vbGVhbil9LgorICAgICAqCisgICAgICogQHBhcmFtIHBhY2thZ2VOYW1lIHRoZSBuYW1lIG9mIHRoZSBwYWNrYWdlIHdob3NlIHBhY2thZ2UgZGVmYXVsdAorICAgICAqICAgICAgICBhc3NlcnRpb24gc3RhdHVzIGlzIHRvIGJlIHNldC4gQSBudWxsIHZhbHVlCisgICAgICogICAgICAgIGluZGljYXRlcyB0aGUgdW5uYW1lZCBwYWNrYWdlIHRoYXQgaXMgImN1cnJlbnQiCisgICAgICogICAgICAgIChKTFMgNy40LjIpLgorICAgICAqIEBwYXJhbSBlbmFibGVkIDx0dD50cnVlPC90dD4gaWYgY2xhc3NlcyBsb2FkZWQgYnkgdGhpcyBjbGFzc2xvYWRlcgorICAgICAqICAgICAgICBhbmQgYmVsb25naW5nIHRvIHRoZSBuYW1lZCBwYWNrYWdlIG9yIGFueSBvZiBpdHMgc3VicGFja2FnZXMKKyAgICAgKiAgICAgICAgd2lsbCBoYXZlIGFzc2VydGlvbnMgZW5hYmxlZCBieSBkZWZhdWx0LCA8dHQ+ZmFsc2U8L3R0PiBpZiB0aGV5CisgICAgICogICAgICAgIHdpbGwgaGF2ZSBhc3NlcnRpb25zIGRpc2FibGVkIGJ5IGRlZmF1bHQuCisgICAgICogQHNpbmNlIDEuNAorICAgICAqLworICAgIHB1YmxpYyBzeW5jaHJvbml6ZWQgdm9pZCBzZXRQYWNrYWdlQXNzZXJ0aW9uU3RhdHVzKFN0cmluZyBwYWNrYWdlTmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sZWFuIGVuYWJsZWQpCisgICAgeworICAgICAgICBpZiAocGFja2FnZUFzc2VydGlvblN0YXR1cyA9PSBudWxsKQorICAgICAgICAgICAgaW5pdGlhbGl6ZUphdmFBc3NlcnRpb25NYXBzKCk7CisKKyAgICAgICAgcGFja2FnZUFzc2VydGlvblN0YXR1cy5wdXQocGFja2FnZU5hbWUsIEJvb2xlYW4udmFsdWVPZihlbmFibGVkKSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogU2V0cyB0aGUgZGVzaXJlZCBhc3NlcnRpb24gc3RhdHVzIGZvciB0aGUgbmFtZWQgdG9wLWxldmVsIGNsYXNzIGluCisgICAgICogdGhpcyBjbGFzcyBsb2FkZXIgYW5kIGFueSBuZXN0ZWQgY2xhc3NlcyBjb250YWluZWQgdGhlcmVpbi4KKyAgICAgKiBUaGlzIHNldHRpbmcgdGFrZXMgcHJlY2VkZW5jZSBvdmVyIHRoZSAgY2xhc3MgbG9hZGVyJ3MgZGVmYXVsdAorICAgICAqIGFzc2VydGlvbiBzdGF0dXMsIGFuZCBvdmVyIGFueSBhcHBsaWNhYmxlIHBlci1wYWNrYWdlIGRlZmF1bHQuCisgICAgICogVGhpcyBtZXRob2QgaGFzIG5vIGVmZmVjdCBpZiB0aGUgbmFtZWQgY2xhc3MgaGFzIGFscmVhZHkgYmVlbgorICAgICAqIGluaXRpYWxpemVkLiAgKE9uY2UgYSBjbGFzcyBpcyBpbml0aWFsaXplZCwgaXRzIGFzc2VydGlvbiBzdGF0dXMgY2Fubm90CisgICAgICogY2hhbmdlLikKKyAgICAgKiA8cD4KKyAgICAgKiBJZiB0aGUgbmFtZWQgY2xhc3MgaXMgbm90IGEgdG9wLWxldmVsIGNsYXNzLCB0aGlzIGNhbGwgd2lsbCBoYXZlIG5vCisgICAgICogZWZmZWN0IG9uIHRoZSBhY3R1YWwgYXNzZXJ0aW9uIHN0YXR1cyBvZiBhbnkgY2xhc3MsIGFuZCBpdHMgcmV0dXJuCisgICAgICogdmFsdWUgaXMgdW5kZWZpbmVkLgorICAgICAqCisgICAgICogQHBhcmFtIGNsYXNzTmFtZSB0aGUgZnVsbHkgcXVhbGlmaWVkIGNsYXNzIG5hbWUgb2YgdGhlIHRvcC1sZXZlbCBjbGFzcworICAgICAqICAgICAgICB3aG9zZSBhc3NlcnRpb24gc3RhdHVzIGlzIHRvIGJlIHNldC4KKyAgICAgKiBAcGFyYW0gZW5hYmxlZCA8dHQ+dHJ1ZTwvdHQ+IGlmIHRoZSBuYW1lZCBjbGFzcyBpcyB0byBoYXZlIGFzc2VydGlvbnMKKyAgICAgKiAgICAgICAgZW5hYmxlZCB3aGVuIChhbmQgaWYpIGl0IGlzIGluaXRpYWxpemVkLCA8dHQ+ZmFsc2U8L3R0PiBpZiB0aGUKKyAgICAgKiAgICAgICAgY2xhc3MgaXMgdG8gaGF2ZSBhc3NlcnRpb25zIGRpc2FibGVkLgorICAgICAqIEBzaW5jZSAxLjQKKyAgICAgKi8KKyAgICBwdWJsaWMgc3luY2hyb25pemVkIHZvaWQgc2V0Q2xhc3NBc3NlcnRpb25TdGF0dXMoU3RyaW5nIGNsYXNzTmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbGVhbiBlbmFibGVkKQorICAgIHsKKyAgICAgICAgaWYgKGNsYXNzQXNzZXJ0aW9uU3RhdHVzID09IG51bGwpCisgICAgICAgICAgICBpbml0aWFsaXplSmF2YUFzc2VydGlvbk1hcHMoKTsKKworICAgICAgICBjbGFzc0Fzc2VydGlvblN0YXR1cy5wdXQoY2xhc3NOYW1lLCBCb29sZWFuLnZhbHVlT2YoZW5hYmxlZCkpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFNldHMgdGhlIGRlZmF1bHQgYXNzZXJ0aW9uIHN0YXR1cyBmb3IgdGhpcyBjbGFzcyBsb2FkZXIgdG8KKyAgICAgKiA8dHQ+ZmFsc2U8L3R0PiBhbmQgZGlzY2FyZHMgYW55IHBhY2thZ2UgZGVmYXVsdHMgb3IgY2xhc3MgYXNzZXJ0aW9uCisgICAgICogc3RhdHVzIHNldHRpbmdzIGFzc29jaWF0ZWQgd2l0aCB0aGUgY2xhc3MgbG9hZGVyLiAgVGhpcyBjYWxsIGlzCisgICAgICogcHJvdmlkZWQgc28gdGhhdCBjbGFzcyBsb2FkZXJzIGNhbiBiZSBtYWRlIHRvIGlnbm9yZSBhbnkgY29tbWFuZCBsaW5lCisgICAgICogb3IgcGVyc2lzdGVudCBhc3NlcnRpb24gc3RhdHVzIHNldHRpbmdzIGFuZCAic3RhcnQgd2l0aCBhIGNsZWFuIHNsYXRlLiIKKyAgICAgKgorICAgICAqIEBzaW5jZSAxLjQKKyAgICAgKi8KKyAgICBwdWJsaWMgc3luY2hyb25pemVkIHZvaWQgY2xlYXJBc3NlcnRpb25TdGF0dXMoKSB7CisgICAgICAgIC8qCisgICAgICAgICAqIFdoZXRoZXIgb3Igbm90ICJKYXZhIGFzc2VydGlvbiBtYXBzIiBhcmUgaW5pdGlhbGl6ZWQsIHNldAorICAgICAgICAgKiB0aGVtIHRvIGVtcHR5IG1hcHMsIGVmZmVjdGl2ZWx5IGlnbm9yaW5nIGFueSBwcmVzZW50IHNldHRpbmdzLgorICAgICAgICAgKi8KKyAgICAgICAgY2xhc3NBc3NlcnRpb25TdGF0dXMgPSBuZXcgSGFzaE1hcCgpOworICAgICAgICBwYWNrYWdlQXNzZXJ0aW9uU3RhdHVzID0gbmV3IEhhc2hNYXAoKTsKKworICAgICAgICBkZWZhdWx0QXNzZXJ0aW9uU3RhdHVzID0gZmFsc2U7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJucyB0aGUgYXNzZXJ0aW9uIHN0YXR1cyB0aGF0IHdvdWxkIGJlIGFzc2lnbmVkIHRvIHRoZSBzcGVjaWZpZWQKKyAgICAgKiBjbGFzcyBpZiBpdCB3ZXJlIHRvIGJlIGluaXRpYWxpemVkIGF0IHRoZSB0aW1lIHRoaXMgbWV0aG9kIGlzIGludm9rZWQuCisgICAgICogSWYgdGhlIG5hbWVkIGNsYXNzIGhhcyBoYWQgaXRzIGFzc2VydGlvbiBzdGF0dXMgc2V0LCB0aGUgbW9zdCByZWNlbnQKKyAgICAgKiBzZXR0aW5nIHdpbGwgYmUgcmV0dXJuZWQ7IG90aGVyd2lzZSwgaWYgYW55IHBhY2thZ2UgZGVmYXVsdCBhc3NlcnRpb24KKyAgICAgKiBzdGF0dXMgcGVydGFpbnMgdG8gdGhpcyBjbGFzcywgdGhlIG1vc3QgcmVjZW50IHNldHRpbmcgZm9yIHRoZSBtb3N0CisgICAgICogc3BlY2lmaWMgcGVydGluZW50IHBhY2thZ2UgZGVmYXVsdCBhc3NlcnRpb24gc3RhdHVzIGlzIHJldHVybmVkOworICAgICAqIG90aGVyd2lzZSwgdGhpcyBjbGFzcyBsb2FkZXIncyBkZWZhdWx0IGFzc2VydGlvbiBzdGF0dXMgaXMgcmV0dXJuZWQuCisgICAgICoKKyAgICAgKiBAcGFyYW0gIGNsYXNzTmFtZSB0aGUgZnVsbHkgcXVhbGlmaWVkIGNsYXNzIG5hbWUgb2YgdGhlIGNsYXNzIHdob3NlCisgICAgICogICAgICAgICBkZXNpcmVkIGFzc2VydGlvbiBzdGF0dXMgaXMgYmVpbmcgcXVlcmllZC4KKyAgICAgKiBAcmV0dXJuIHRoZSBkZXNpcmVkIGFzc2VydGlvbiBzdGF0dXMgb2YgdGhlIHNwZWNpZmllZCBjbGFzcy4KKyAgICAgKiBAc2VlICAgICNzZXRDbGFzc0Fzc2VydGlvblN0YXR1cyhTdHJpbmcsYm9vbGVhbikKKyAgICAgKiBAc2VlICAgICNzZXRQYWNrYWdlQXNzZXJ0aW9uU3RhdHVzKFN0cmluZyxib29sZWFuKQorICAgICAqIEBzZWUgICAgI3NldERlZmF1bHRBc3NlcnRpb25TdGF0dXMoYm9vbGVhbikKKyAgICAgKiBAc2luY2UgIDEuNAorICAgICAqLworICAgIHN5bmNocm9uaXplZCBib29sZWFuIGRlc2lyZWRBc3NlcnRpb25TdGF0dXMoU3RyaW5nIGNsYXNzTmFtZSkgeworICAgICAgICBCb29sZWFuIHJlc3VsdDsKKworICAgICAgICAvLyBhc3NlcnQgY2xhc3NBc3NlcnRpb25TdGF0dXMgICAhPSBudWxsOworICAgICAgICAvLyBhc3NlcnQgcGFja2FnZUFzc2VydGlvblN0YXR1cyAhPSBudWxsOworCisgICAgICAgIC8vIENoZWNrIGZvciBhIGNsYXNzIGVudHJ5CisgICAgICAgIHJlc3VsdCA9IChCb29sZWFuKWNsYXNzQXNzZXJ0aW9uU3RhdHVzLmdldChjbGFzc05hbWUpOworICAgICAgICBpZiAocmVzdWx0ICE9IG51bGwpCisgICAgICAgICAgICByZXR1cm4gcmVzdWx0LmJvb2xlYW5WYWx1ZSgpOworCisgICAgICAgIC8vIENoZWNrIGZvciBtb3N0IHNwZWNpZmljIHBhY2thZ2UgZW50cnkKKyAgICAgICAgaW50IGRvdEluZGV4ID0gY2xhc3NOYW1lLmxhc3RJbmRleE9mKCIuIik7CisgICAgICAgIGlmIChkb3RJbmRleCA8IDApIHsgLy8gZGVmYXVsdCBwYWNrYWdlCisgICAgICAgICAgICByZXN1bHQgPSAoQm9vbGVhbilwYWNrYWdlQXNzZXJ0aW9uU3RhdHVzLmdldChudWxsKTsKKyAgICAgICAgICAgIGlmIChyZXN1bHQgIT0gbnVsbCkKKyAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0LmJvb2xlYW5WYWx1ZSgpOworICAgICAgICB9CisgICAgICAgIHdoaWxlKGRvdEluZGV4ID4gMCkgeworICAgICAgICAgICAgY2xhc3NOYW1lID0gY2xhc3NOYW1lLnN1YnN0cmluZygwLCBkb3RJbmRleCk7CisgICAgICAgICAgICByZXN1bHQgPSAoQm9vbGVhbilwYWNrYWdlQXNzZXJ0aW9uU3RhdHVzLmdldChjbGFzc05hbWUpOworICAgICAgICAgICAgaWYgKHJlc3VsdCAhPSBudWxsKQorICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQuYm9vbGVhblZhbHVlKCk7CisgICAgICAgICAgICBkb3RJbmRleCA9IGNsYXNzTmFtZS5sYXN0SW5kZXhPZigiLiIsIGRvdEluZGV4LTEpOworICAgICAgICB9CisKKyAgICAgICAgLy8gUmV0dXJuIHRoZSBjbGFzc2xvYWRlciBkZWZhdWx0CisgICAgICAgIHJldHVybiBkZWZhdWx0QXNzZXJ0aW9uU3RhdHVzOworICAgIH0KKworICAgIC8vIFNldCB1cCB0aGUgYXNzZXJ0aW9ucyB3aXRoIGluZm9ybWF0aW9uIHByb3ZpZGVkIGJ5IHRoZSBWTS4KKyAgICBwcml2YXRlIHZvaWQgaW5pdGlhbGl6ZUphdmFBc3NlcnRpb25NYXBzKCkgeworICAgICAgICAvLyBhc3NlcnQgVGhyZWFkLmhvbGRzTG9jayh0aGlzKTsKKworICAgICAgICBjbGFzc0Fzc2VydGlvblN0YXR1cyA9IG5ldyBIYXNoTWFwKCk7CisgICAgICAgIHBhY2thZ2VBc3NlcnRpb25TdGF0dXMgPSBuZXcgSGFzaE1hcCgpOworICAgICAgICBBc3NlcnRpb25TdGF0dXNEaXJlY3RpdmVzIGRpcmVjdGl2ZXMgPSByZXRyaWV2ZURpcmVjdGl2ZXMoKTsKKworICAgICAgICBmb3IoaW50IGk9MDsgaTxkaXJlY3RpdmVzLmNsYXNzZXMubGVuZ3RoOyBpKyspCisgICAgICAgICAgICBjbGFzc0Fzc2VydGlvblN0YXR1cy5wdXQoZGlyZWN0aXZlcy5jbGFzc2VzW2ldLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQm9vbGVhbi52YWx1ZU9mKGRpcmVjdGl2ZXMuY2xhc3NFbmFibGVkW2ldKSk7CisKKyAgICAgICAgZm9yKGludCBpPTA7IGk8ZGlyZWN0aXZlcy5wYWNrYWdlcy5sZW5ndGg7IGkrKykKKyAgICAgICAgICAgIHBhY2thZ2VBc3NlcnRpb25TdGF0dXMucHV0KGRpcmVjdGl2ZXMucGFja2FnZXNbaV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCb29sZWFuLnZhbHVlT2YoZGlyZWN0aXZlcy5wYWNrYWdlRW5hYmxlZFtpXSkpOworCisgICAgICAgIGRlZmF1bHRBc3NlcnRpb25TdGF0dXMgPSBkaXJlY3RpdmVzLmRlZmx0OworICAgIH0KKworICAgIC8vIFJldHJpZXZlcyB0aGUgYXNzZXJ0aW9uIGRpcmVjdGl2ZXMgZnJvbSB0aGUgVk0uCisgICAgcHJpdmF0ZSBzdGF0aWMgbmF0aXZlIEFzc2VydGlvblN0YXR1c0RpcmVjdGl2ZXMgcmV0cmlldmVEaXJlY3RpdmVzKCk7CisKK30KKworCitjbGFzcyBTeXN0ZW1DbGFzc0xvYWRlckFjdGlvbiBpbXBsZW1lbnRzIFByaXZpbGVnZWRFeGNlcHRpb25BY3Rpb24geworICAgIHByaXZhdGUgQ2xhc3NMb2FkZXIgcGFyZW50OworCisgICAgU3lzdGVtQ2xhc3NMb2FkZXJBY3Rpb24oQ2xhc3NMb2FkZXIgcGFyZW50KSB7CisJdGhpcy5wYXJlbnQgPSBwYXJlbnQ7CisgICAgfQorCisgICAgcHVibGljIE9iamVjdCBydW4oKSB0aHJvd3MgRXhjZXB0aW9uIHsKKwlDbGFzc0xvYWRlciBzeXM7CisJQ29uc3RydWN0b3IgY3RvcjsKKwlDbGFzcyBjOworCUNsYXNzIGNwW10gPSB7IENsYXNzTG9hZGVyLmNsYXNzIH07CisJT2JqZWN0IHBhcmFtc1tdID0geyBwYXJlbnQgfTsKKworICAgICAgICBTdHJpbmcgY2xzID0gU3lzdGVtLmdldFByb3BlcnR5KCJqYXZhLnN5c3RlbS5jbGFzcy5sb2FkZXIiKTsKKwlpZiAoY2xzID09IG51bGwpIHsKKwkgICAgcmV0dXJuIHBhcmVudDsKKwl9CisKKwljID0gQ2xhc3MuZm9yTmFtZShjbHMsIHRydWUsIHBhcmVudCk7CisJY3RvciA9IGMuZ2V0RGVjbGFyZWRDb25zdHJ1Y3RvcihjcCk7CisJc3lzID0gKENsYXNzTG9hZGVyKSBjdG9yLm5ld0luc3RhbmNlKHBhcmFtcyk7CisJVGhyZWFkLmN1cnJlbnRUaHJlYWQoKS5zZXRDb250ZXh0Q2xhc3NMb2FkZXIoc3lzKTsKKwlyZXR1cm4gc3lzOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nL2FDbGFzc0xvYWRlcl9obC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvYUNsYXNzTG9hZGVyX2hsLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzdmOTU5YgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nL2FDbGFzc0xvYWRlcl9obC5qYXZhCkBAIC0wLDAgKzEsMTczMSBAQAorLyoKKyAqIEAoIylDbGFzc0xvYWRlci5qYXZhCTEuMTYyIDAyLzAzLzE5CisgKgorICogQ29weXJpZ2h0IDIwMDIgU3VuIE1pY3Jvc3lzdGVtcywgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogU1VOIFBST1BSSUVUQVJZL0NPTkZJREVOVElBTC4gVXNlIGlzIHN1YmplY3QgdG8gbGljZW5zZSB0ZXJtcy4KKyAqLworCitpbXBvcnQgamF2YS5pby5JbnB1dFN0cmVhbTsKK2ltcG9ydCBqYXZhLmlvLklPRXhjZXB0aW9uOworaW1wb3J0IGphdmEuaW8uPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ1N0cmluZ1dyaXRlciciPlN0cmluZ1dyaXRlcjwvZXJyb3I+OworaW1wb3J0IGphdmEuaW8uPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ1ByaW50V3JpdGVyJyI+UHJpbnRXcml0ZXI8L2Vycm9yPjsKK2ltcG9ydCBqYXZhLmlvLkZpbGU7CitpbXBvcnQgamF2YS5sYW5nLnJlZmxlY3QuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ0NvbnN0cnVjdG9yJyI+Q29uc3RydWN0b3I8L2Vycm9yPjsKK2ltcG9ydCBqYXZhLmxhbmcucmVmbGVjdC48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnSW52b2NhdGlvblRhcmdldEV4Y2VwdGlvbiciPkludm9jYXRpb25UYXJnZXRFeGNlcHRpb248L2Vycm9yPjsKK2ltcG9ydCBqYXZhLnV0aWwuSGFzaHRhYmxlOworaW1wb3J0IGphdmEudXRpbC5FbnVtZXJhdGlvbjsKK2ltcG9ydCBqYXZhLnV0aWwuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ1ZlY3RvciciPlZlY3RvcjwvZXJyb3I+OworaW1wb3J0IGphdmEudXRpbC48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnU3RhY2snIj5TdGFjazwvZXJyb3I+OworaW1wb3J0IGphdmEudXRpbC5IYXNoTWFwOworaW1wb3J0IGphdmEudXRpbC48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnSGFzaFNldCciPkhhc2hTZXQ8L2Vycm9yPjsKK2ltcG9ydCBqYXZhLnV0aWwuTWFwOworaW1wb3J0IGphdmEudXRpbC5Ob1N1Y2hFbGVtZW50RXhjZXB0aW9uOworaW1wb3J0IGphdmEudXRpbC5TZXQ7CitpbXBvcnQgamF2YS51dGlsLjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdqYXInIj5qYXI8L2Vycm9yPi5NYW5pZmVzdDsKK2ltcG9ydCBqYXZhLm5ldC5VUkw7CitpbXBvcnQgamF2YS5uZXQuTWFsZm9ybWVkVVJMRXhjZXB0aW9uOworaW1wb3J0IGphdmEuc2VjdXJpdHkuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ0FjY2Vzc0NvbnRyb2xsZXInIj5BY2Nlc3NDb250cm9sbGVyPC9lcnJvcj47CitpbXBvcnQgamF2YS5zZWN1cml0eS48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnQWNjZXNzQ29udHJvbENvbnRleHQnIj5BY2Nlc3NDb250cm9sQ29udGV4dDwvZXJyb3I+OworaW1wb3J0IGphdmEuc2VjdXJpdHkuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ1ByaXZpbGVnZWRBY3Rpb24nIj5Qcml2aWxlZ2VkQWN0aW9uPC9lcnJvcj47CitpbXBvcnQgamF2YS5zZWN1cml0eS48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnUHJpdmlsZWdlZEFjdGlvbkV4Y2VwdGlvbiciPlByaXZpbGVnZWRBY3Rpb25FeGNlcHRpb248L2Vycm9yPjsKK2ltcG9ydCBqYXZhLnNlY3VyaXR5LjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdQcml2aWxlZ2VkRXhjZXB0aW9uQWN0aW9uJyI+UHJpdmlsZWdlZEV4Y2VwdGlvbkFjdGlvbjwvZXJyb3I+OworaW1wb3J0IGphdmEuc2VjdXJpdHkuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ1Byb3RlY3Rpb25Eb21haW4nIj5Qcm90ZWN0aW9uRG9tYWluPC9lcnJvcj47CitpbXBvcnQgamF2YS5zZWN1cml0eS48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnUGVybWlzc2lvbnMnIj5QZXJtaXNzaW9uczwvZXJyb3I+OworaW1wb3J0IGphdmEuc2VjdXJpdHkuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ0NvZGVTb3VyY2UnIj5Db2RlU291cmNlPC9lcnJvcj47CitpbXBvcnQgamF2YS5zZWN1cml0eS5Qb2xpY3k7CitpbXBvcnQgPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ3N1biciPnN1bjwvZXJyb3I+Lm1pc2MuVVJMQ2xhc3NQYXRoOworaW1wb3J0IDxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdzdW4nIj5zdW48L2Vycm9yPi5taXNjLlJlc291cmNlOworaW1wb3J0IDxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdzdW4nIj5zdW48L2Vycm9yPi5taXNjLkNvbXBvdW5kRW51bWVyYXRpb247CitpbXBvcnQgPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ3N1biciPnN1bjwvZXJyb3I+Lm1pc2MuQ2xhc3NGaWxlVHJhbnNmb3JtZXI7CisvL2ltcG9ydCBzdW4ubWlzYy5MYXVuY2hlcjsKK2ltcG9ydCA8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnc3VuJyI+c3VuPC9lcnJvcj4ucmVmbGVjdC5SZWZsZWN0aW9uOworaW1wb3J0IDxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdzdW4nIj5zdW48L2Vycm9yPi5zZWN1cml0eS5hY3Rpb24uR2V0UHJvcGVydHlBY3Rpb247CisKKy8qKgorICogQSBjbGFzcyBsb2FkZXIgaXMgYW4gb2JqZWN0IHRoYXQgaXMgcmVzcG9uc2libGUgZm9yIGxvYWRpbmcKKyAqIGNsYXNzZXMuIFRoZSBjbGFzcyA8Y29kZT5DbGFzc0xvYWRlcjwvY29kZT4gaXMgYW4gYWJzdHJhY3QgY2xhc3MuCisgKiBHaXZlbiB0aGUgbmFtZSBvZiBhIGNsYXNzLCBhIGNsYXNzIGxvYWRlciBzaG91bGQgYXR0ZW1wdCB0byBsb2NhdGUKKyAqIG9yIGdlbmVyYXRlIGRhdGEgdGhhdCBjb25zdGl0dXRlcyBhIGRlZmluaXRpb24gZm9yIHRoZSBjbGFzcy4gQQorICogdHlwaWNhbCBzdHJhdGVneSBpcyB0byB0cmFuc2Zvcm0gdGhlIG5hbWUgaW50byBhIGZpbGUKKyAqIG5hbWUgYW5kIHRoZW4gcmVhZCBhICJjbGFzcyBmaWxlIiBvZiB0aGF0IG5hbWUgZnJvbSBhIGZpbGUgc3lzdGVtLgorICogPHA+CisgKiBFdmVyeSA8Y29kZT5DbGFzczwvY29kZT4gb2JqZWN0IGNvbnRhaW5zIGEKKyAqIHtAbGluayBDbGFzcyNnZXRDbGFzc0xvYWRlcigpIHJlZmVyZW5jZX0gdG8gdGhlCisgKiA8Y29kZT5DbGFzc0xvYWRlcjwvY29kZT4gdGhhdCBkZWZpbmVkIGl0LgorICogPHA+CisgKiBDbGFzcyBvYmplY3RzIGZvciBhcnJheSBjbGFzc2VzIGFyZSBub3QgY3JlYXRlZCBieSBjbGFzcyBsb2FkZXJzLCBidXQKKyAqIGFyZSBjcmVhdGVkIGF1dG9tYXRpY2FsbHkgYXMgcmVxdWlyZWQgYnkgdGhlIEphdmEgcnVudGltZS4gVGhlIGNsYXNzCisgKiBsb2FkZXIgZm9yIGFuIGFycmF5IGNsYXNzLCBhcyByZXR1cm5lZCBieSB7QGxpbmsgQ2xhc3MjZ2V0Q2xhc3NMb2FkZXIoKX0KKyAqIGlzIHRoZSBzYW1lIGFzIHRoZSBjbGFzcyBsb2FkZXIgZm9yIGl0cyBlbGVtZW50IHR5cGU7IGlmIHRoZSBlbGVtZW50CisgKiB0eXBlIGlzIGEgcHJpbWl0aXZlIHR5cGUsIHRoZW4gdGhlIGFycmF5IGNsYXNzIGhhcyBubyBjbGFzcyBsb2FkZXIuCisgKiA8cD4KKyAqIEFwcGxpY2F0aW9ucyBpbXBsZW1lbnQgc3ViY2xhc3NlcyBvZiA8Y29kZT5DbGFzc0xvYWRlcjwvY29kZT4gaW4KKyAqIG9yZGVyIHRvIGV4dGVuZCB0aGUgbWFubmVyIGluIHdoaWNoIHRoZSBKYXZhIHZpcnR1YWwgbWFjaGluZQorICogZHluYW1pY2FsbHkgbG9hZHMgY2xhc3Nlcy4KKyAqIDxwPgorICogQ2xhc3MgbG9hZGVycyBtYXkgdHlwaWNhbGx5IGJlIHVzZWQgYnkgc2VjdXJpdHkgbWFuYWdlcnMgdG8KKyAqIGluZGljYXRlIHNlY3VyaXR5IGRvbWFpbnMuCisgKiA8cD4KKyAqIFRoZSA8Y29kZT5DbGFzc0xvYWRlcjwvY29kZT4gY2xhc3MgdXNlcyBhIGRlbGVnYXRpb24gbW9kZWwgdG8KKyAqIHNlYXJjaCBmb3IgY2xhc3NlcyBhbmQgcmVzb3VyY2VzLiBFYWNoIGluc3RhbmNlIG9mCisgKiA8Y29kZT5DbGFzc0xvYWRlcjwvY29kZT4gaGFzIGFuIGFzc29jaWF0ZWQgcGFyZW50IGNsYXNzIGxvYWRlci4KKyAqIFdoZW4gY2FsbGVkIHVwb24gdG8gZmluZCBhIGNsYXNzIG9yIHJlc291cmNlLCBhCisgKiA8Y29kZT5DbGFzc0xvYWRlcjwvY29kZT4gaW5zdGFuY2Ugd2lsbCBkZWxlZ2F0ZSB0aGUgc2VhcmNoIGZvcgorICogdGhlIGNsYXNzIG9yIHJlc291cmNlIHRvIGl0cyBwYXJlbnQgY2xhc3MgbG9hZGVyIGJlZm9yZQorICogYXR0ZW1wdGluZyB0byBmaW5kIHRoZSBjbGFzcyBvciByZXNvdXJjZSBpdHNlbGYuICBUaGUgdmlydHVhbAorICogbWFjaGluZSdzIGJ1aWx0LWluIGNsYXNzIGxvYWRlciwgY2FsbGVkIHRoZSBib290c3RyYXAgY2xhc3MgbG9hZGVyLAorICogZG9lcyBub3QgaXRzZWxmIGhhdmUgYSBwYXJlbnQgYnV0IG1heSBzZXJ2ZSBhcyB0aGUgcGFyZW50IG9mIGEKKyAqIDxjb2RlPkNsYXNzTG9hZGVyPC9jb2RlPiBpbnN0YW5jZS4KKyAqIDxwPgorICogTm9ybWFsbHksIHRoZSBKYXZhIHZpcnR1YWwgbWFjaGluZSBsb2FkcyBjbGFzc2VzIGZyb20gdGhlIGxvY2FsCisgKiBmaWxlIHN5c3RlbSBpbiBhIHBsYXRmb3JtLWRlcGVuZGVudCBtYW5uZXIuIEZvciBleGFtcGxlLCBvbiBVTklYCisgKiBzeXN0ZW1zLCB0aGUgdmlydHVhbCBtYWNoaW5lIGxvYWRzIGNsYXNzZXMgZnJvbSB0aGUgZGlyZWN0b3J5CisgKiBkZWZpbmVkIGJ5IHRoZSA8Y29kZT5DTEFTU1BBVEg8L2NvZGU+IGVudmlyb25tZW50IHZhcmlhYmxlLgorICogPHA+CisgKiBIb3dldmVyLCBzb21lIGNsYXNzZXMgbWF5IG5vdCBvcmlnaW5hdGUgZnJvbSBhIGZpbGU7IHRoZXkgbWF5CisgKiBvcmlnaW5hdGUgZnJvbSBvdGhlciBzb3VyY2VzLCBzdWNoIGFzIHRoZSBuZXR3b3JrLCBvciB0aGV5IGNvdWxkCisgKiBiZSBjb25zdHJ1Y3RlZCBieSBhbiBhcHBsaWNhdGlvbi4gVGhlIG1ldGhvZAorICogPGNvZGU+ZGVmaW5lQ2xhc3M8L2NvZGU+IGNvbnZlcnRzIGFuIGFycmF5IG9mIGJ5dGVzIGludG8gYW4KKyAqIGluc3RhbmNlIG9mIGNsYXNzIDxjb2RlPkNsYXNzPC9jb2RlPi4gSW5zdGFuY2VzIG9mIHRoaXMgbmV3bHkKKyAqIGRlZmluZWQgY2xhc3MgY2FuIGJlIGNyZWF0ZWQgdXNpbmcgdGhlIDxjb2RlPm5ld0luc3RhbmNlPC9jb2RlPgorICogbWV0aG9kIGluIGNsYXNzIDxjb2RlPkNsYXNzPC9jb2RlPi4KKyAqIDxwPgorICogVGhlIG1ldGhvZHMgYW5kIGNvbnN0cnVjdG9ycyBvZiBvYmplY3RzIGNyZWF0ZWQgYnkgYSBjbGFzcyBsb2FkZXIKKyAqIG1heSByZWZlcmVuY2Ugb3RoZXIgY2xhc3Nlcy4gVG8gZGV0ZXJtaW5lIHRoZSBjbGFzcyhlcykgcmVmZXJyZWQKKyAqIHRvLCB0aGUgSmF2YSB2aXJ0dWFsIG1hY2hpbmUgY2FsbHMgdGhlIDxjb2RlPmxvYWRDbGFzczwvY29kZT4KKyAqIG1ldGhvZCBvZiB0aGUgY2xhc3MgbG9hZGVyIHRoYXQgb3JpZ2luYWxseSBjcmVhdGVkIHRoZSBjbGFzcy4KKyAqIDxwPgorICogRm9yIGV4YW1wbGUsIGFuIGFwcGxpY2F0aW9uIGNvdWxkIGNyZWF0ZSBhIG5ldHdvcmsgY2xhc3MgbG9hZGVyCisgKiB0byBkb3dubG9hZCBjbGFzcyBmaWxlcyBmcm9tIGEgc2VydmVyLiBTYW1wbGUgY29kZSBtaWdodCBsb29rIGxpa2U6CisgKiA8YmxvY2txdW90ZT48cHJlPgorICogICBDbGFzc0xvYWRlciBsb2FkZXImbmJzcDs9IG5ldyBOZXR3b3JrQ2xhc3NMb2FkZXIoaG9zdCwmbmJzcDtwb3J0KTsKKyAqICAgT2JqZWN0IG1haW4mbmJzcDs9IGxvYWRlci5sb2FkQ2xhc3MoIk1haW4iLCB0cnVlKS5uZXdJbnN0YW5jZSgpOworICoJICZuYnNwOy4mbmJzcDsuJm5ic3A7LgorICogPC9wcmU+PC9ibG9ja3F1b3RlPgorICogPHA+CisgKiBUaGUgbmV0d29yayBjbGFzcyBsb2FkZXIgc3ViY2xhc3MgbXVzdCBkZWZpbmUgdGhlIG1ldGhvZHMKKyAqIDxjb2RlPmZpbmRDbGFzczwvY29kZT4gYW5kIDxjb2RlPmxvYWRDbGFzc0RhdGE8L2NvZGU+CisgKiB0byBsb2FkIGEgY2xhc3MgZnJvbSB0aGUgbmV0d29yay4gT25jZSBpdAorICogaGFzIGRvd25sb2FkZWQgdGhlIGJ5dGVzIHRoYXQgbWFrZSB1cCB0aGUgY2xhc3MsIGl0IHNob3VsZCB1c2UgdGhlCisgKiBtZXRob2QgPGNvZGU+ZGVmaW5lQ2xhc3M8L2NvZGU+IHRvIGNyZWF0ZSBhIGNsYXNzIGluc3RhbmNlLiBBCisgKiBzYW1wbGUgaW1wbGVtZW50YXRpb24gaXM6CisgKiA8cD48aHI+PGJsb2NrcXVvdGU+PHByZT4KKyAqICAgICBjbGFzcyBOZXR3b3JrQ2xhc3NMb2FkZXIgZXh0ZW5kcyBDbGFzc0xvYWRlciB7CisgKiAgICAgICAgIFN0cmluZyBob3N0OworICogICAgICAgICBpbnQgcG9ydDsKKyAqCisgKiAgICAgICAgIHB1YmxpYyBDbGFzcyBmaW5kQ2xhc3MoU3RyaW5nIG5hbWUpIHsKKyAqICAgICAgICAgICAgIGJ5dGVbXSBiID0gbG9hZENsYXNzRGF0YShuYW1lKTsKKyAqICAgICAgICAgICAgIHJldHVybiBkZWZpbmVDbGFzcyhuYW1lLCBiLCAwLCBiLmxlbmd0aCk7CisgKiAgICAgICAgIH0KKyAqCisgKiAgICAgICAgIHByaXZhdGUgYnl0ZVtdIGxvYWRDbGFzc0RhdGEoU3RyaW5nIG5hbWUpIHsKKyAqICAgICAgICAgICAgIC8vIGxvYWQgdGhlIGNsYXNzIGRhdGEgZnJvbSB0aGUgY29ubmVjdGlvbgorICogICAgICAgICAgICAgJm5ic3A7LiZuYnNwOy4mbmJzcDsuCisgKiAgICAgICAgIH0KKyAqICAgICB9CisgKiA8L3ByZT48L2Jsb2NrcXVvdGU+PGhyPgorICoKKyAqIEB2ZXJzaW9uIDEuMTYyLCAwMy8xOS8wMgorICogQHNlZSAgICAgamF2YS5sYW5nLkNsYXNzCisgKiBAc2VlICAgICBqYXZhLmxhbmcuQ2xhc3MjbmV3SW5zdGFuY2UoKQorICogQHNlZSAgICAgamF2YS5sYW5nLkNsYXNzTG9hZGVyI2RlZmluZUNsYXNzKGJ5dGVbXSwgaW50LCBpbnQpCisgKiBAc2VlICAgICBqYXZhLmxhbmcuQ2xhc3NMb2FkZXIjbG9hZENsYXNzKGphdmEubGFuZy5TdHJpbmcsIGJvb2xlYW4pCisgKiBAc2VlICAgICBqYXZhLmxhbmcuQ2xhc3NMb2FkZXIjcmVzb2x2ZUNsYXNzKGphdmEubGFuZy5DbGFzcykKKyAqIEBzaW5jZSAgIEpESzEuMAorICovCitwdWJsaWMgYWJzdHJhY3QgY2xhc3MgQ2xhc3NMb2FkZXIgeworCisgICAgcHJpdmF0ZSBzdGF0aWMgbmF0aXZlIHZvaWQgcmVnaXN0ZXJOYXRpdmVzKCk7CisgICAgc3RhdGljIHsKKyAgICAgICAgcmVnaXN0ZXJOYXRpdmVzKCk7CisgICAgfQorCisgICAgLyoKKyAgICAgKiBJZiBpbml0aWFsaXphdGlvbiBzdWNjZWVkIHRoaXMgaXMgc2V0IHRvIHRydWUgYW5kIHNlY3VyaXR5IGNoZWNrcyB3aWxsCisgICAgICogc3VjY2VlZC4gT3RoZXJ3aXNlIHRoZSBvYmplY3QgaXMgbm90IGluaXRpYWxpemVkIGFuZCB0aGUgb2JqZWN0IGlzCisgICAgICogdXNlbGVzcy4KKyAgICAgKi8KKyAgICBwcml2YXRlIGJvb2xlYW4gaW5pdGlhbGl6ZWQgPSBmYWxzZTsKKworICAgIC8qCisgICAgICogVGhlIHBhcmVudCBjbGFzcyBsb2FkZXIgZm9yIGRlbGVnYXRpb24uCisgICAgICovCisgICAgcHJpdmF0ZSBDbGFzc0xvYWRlciBwYXJlbnQ7CisKKyAgICAvKgorICAgICAqIEhhc2h0YWJsZSB0aGF0IG1hcHMgcGFja2FnZXMgdG8gY2VydHMKKyAgICAgKi8KKyAgICBwcml2YXRlIEhhc2h0YWJsZSBwYWNrYWdlMmNlcnRzID0gbmV3IEhhc2h0YWJsZSgxMSk7CisKKyAgICAvKgorICAgICAqIHNoYXJlZCBhbW9uZyBhbGwgcGFja2FnZXMgd2l0aCB1bnNpZ25lZCBjbGFzc2VzCisgICAgICovCisgICAgamF2YS5zZWN1cml0eS48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnY2VydCciPmNlcnQ8L2Vycm9yPi5DZXJ0aWZpY2F0ZVtdIG5vY2VydHM7CisKKyAgICAvKgorICAgICAqIFRoZSBjbGFzc2VzIGxvYWRlZCBieSB0aGlzIGNsYXNzIGxvYWRlci4gVGhlIG9ubHkgcHVycG9zZSBvZiB0aGlzCisgICAgICogdGFibGUgaXMgdG8ga2VlcCB0aGUgY2xhc3NlcyBmcm9tIGJlaW5nIEdDJ2VkIHVudGlsIHRoZSBsb2FkZXIKKyAgICAgKiBpcyBHQydlZC4KKyAgICAgKi8KKyAgICBwcml2YXRlIDxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdWZWN0b3InIj5WZWN0b3I8L2Vycm9yPiBjbGFzc2VzID0gbmV3IDxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdWZWN0b3InIj5WZWN0b3I8L2Vycm9yPigpOworCisgICAgLyoKKyAgICAgKiBUaGUgaW5pdGlhdGluZyBwcm90ZWN0aW9uIGRvbWFpbnMgZm9yIGFsbCBjbGFzc2VzCisgICAgICogbG9hZGVkIGJ5IHRoaXMgbG9hZGVyLgorICAgICAqLworICAgIHByaXZhdGUgU2V0IGRvbWFpbnMgPSBuZXcgPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ0hhc2hTZXQnIj5IYXNoU2V0PC9lcnJvcj4oKTsKKworICAgIC8qCisgICAgICogQ2FsbGVkIGJ5IHRoZSBWTSB0byByZWNvcmQgZXZlcnkgbG9hZGVkIGNsYXNzIHdpdGggdGhpcyBsb2FkZXIuCisgICAgICovCisgICAgdm9pZCBhZGRDbGFzcyhDbGFzcyBjKSB7CisgICAgICAgIGNsYXNzZXMuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBtZXRob2QgJ2FkZEVsZW1lbnQoamF2YS5sYW5nLkNsYXNzKSciPmFkZEVsZW1lbnQ8L2Vycm9yPihjKTsKKyAgICB9CisKKyAgICAvKgorICAgICAqIFRoZSBwYWNrYWdlcyBkZWZpbmVkIGluIHRoaXMgY2xhc3MgbG9hZGVyLiBFYWNoIHBhY2thZ2UgbmFtZSBpcworICAgICAqIG1hcHBlZCB0byBpdHMgY29ycmVzcG9uZGluZyBQYWNrYWdlIG9iamVjdC4KKyAgICAgKi8KKyAgICBwcml2YXRlIEhhc2hNYXAgcGFja2FnZXMgPSBuZXcgSGFzaE1hcCgpOworCisgICAgLyoqCisgICAgICogQ3JlYXRlcyBhIG5ldyBjbGFzcyBsb2FkZXIgdXNpbmcgdGhlIHNwZWNpZmllZCBwYXJlbnQgY2xhc3MgbG9hZGVyCisgICAgICogZm9yIGRlbGVnYXRpb24uCisgICAgICogPHA+CisgICAgICogSWYgdGhlcmUgaXMgYSBzZWN1cml0eSBtYW5hZ2VyLCBpdHMgPGNvZGU+Y2hlY2tDcmVhdGVDbGFzc0xvYWRlcjwvY29kZT4KKyAgICAgKiBtZXRob2QgaXMgY2FsbGVkLiBUaGlzIG1heSByZXN1bHQgaW4gYSBzZWN1cml0eSBleGNlcHRpb24uCisgICAgICoKKyAgICAgKiBAcGFyYW0gcGFyZW50IHRoZSBwYXJlbnQgY2xhc3MgbG9hZGVyCisgICAgICoKKyAgICAgKiBAdGhyb3dzICBTZWN1cml0eUV4Y2VwdGlvbiBpZiBhIHNlY3VyaXR5IG1hbmFnZXIgZXhpc3RzIGFuZCBpdHMKKyAgICAgKiA8Y29kZT5jaGVja0NyZWF0ZUNsYXNzTG9hZGVyPC9jb2RlPiBtZXRob2QgZG9lc24ndCBhbGxvdyBjcmVhdGlvbiBvZiBhCisgICAgICogbmV3IGNsYXNzIGxvYWRlci4KKyAgICAgKiBAc2VlICAgICAgIGphdmEubGFuZy5TZWN1cml0eUV4Y2VwdGlvbgorICAgICAqIEBzZWUgICAgICAgamF2YS5sYW5nLlNlY3VyaXR5TWFuYWdlciNjaGVja0NyZWF0ZUNsYXNzTG9hZGVyKCkKKyAgICAgKiBAc2luY2UgICAgIDEuMgorICAgICAqLworICAgIHByb3RlY3RlZCBDbGFzc0xvYWRlcihDbGFzc0xvYWRlciBwYXJlbnQpIHsKKwk8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnU2VjdXJpdHlNYW5hZ2VyJyI+U2VjdXJpdHlNYW5hZ2VyPC9lcnJvcj4gc2VjdXJpdHkgPSBTeXN0ZW0uZ2V0U2VjdXJpdHlNYW5hZ2VyKCk7CisJaWYgKHNlY3VyaXR5ICE9IG51bGwpIHsKKwkgICAgc2VjdXJpdHkuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBtZXRob2QgJ2NoZWNrQ3JlYXRlQ2xhc3NMb2FkZXIoKSciPmNoZWNrQ3JlYXRlQ2xhc3NMb2FkZXI8L2Vycm9yPigpOworCX0KKwl0aGlzLnBhcmVudCA9IHBhcmVudDsKKwlpbml0aWFsaXplZCA9IHRydWU7CisgICAgfQorCisgICAgLyoqCisgICAgICogQ3JlYXRlcyBhIG5ldyBjbGFzcyBsb2FkZXIgdXNpbmcgdGhlIDxjb2RlPkNsYXNzTG9hZGVyPC9jb2RlPgorICAgICAqIHJldHVybmVkIGJ5IHRoZSBtZXRob2QgPGNvZGU+Z2V0U3lzdGVtQ2xhc3NMb2FkZXIoKTwvY29kZT4gYXMgdGhlCisgICAgICogcGFyZW50IGNsYXNzIGxvYWRlci4KKyAgICAgKiA8cD4KKyAgICAgKiBJZiB0aGVyZSBpcyBhIHNlY3VyaXR5IG1hbmFnZXIsIGl0cyA8Y29kZT5jaGVja0NyZWF0ZUNsYXNzTG9hZGVyPC9jb2RlPgorICAgICAqIG1ldGhvZCBpcyBjYWxsZWQuIFRoaXMgbWF5IHJlc3VsdCBpbiBhIHNlY3VyaXR5IGV4Y2VwdGlvbi4KKyAgICAgKgorICAgICAqIEB0aHJvd3MgIFNlY3VyaXR5RXhjZXB0aW9uCisgICAgICogICAgaWYgYSBzZWN1cml0eSBtYW5hZ2VyIGV4aXN0cyBhbmQgaXRzIDxjb2RlPmNoZWNrQ3JlYXRlQ2xhc3NMb2FkZXI8L2NvZGU+CisgICAgICogICAgbWV0aG9kIGRvZXNuJ3QgYWxsb3cgY3JlYXRpb24gb2YgYSBuZXcgY2xhc3MgbG9hZGVyLgorICAgICAqCisgICAgICogQHNlZSAgICAgICBqYXZhLmxhbmcuU2VjdXJpdHlFeGNlcHRpb24KKyAgICAgKiBAc2VlICAgICAgIGphdmEubGFuZy5TZWN1cml0eU1hbmFnZXIjY2hlY2tDcmVhdGVDbGFzc0xvYWRlcigpCisgICAgICovCisgICAgcHJvdGVjdGVkIENsYXNzTG9hZGVyKCkgeworCTxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdTZWN1cml0eU1hbmFnZXInIj5TZWN1cml0eU1hbmFnZXI8L2Vycm9yPiBzZWN1cml0eSA9IFN5c3RlbS5nZXRTZWN1cml0eU1hbmFnZXIoKTsKKwlpZiAoc2VjdXJpdHkgIT0gbnVsbCkgeworCSAgICBzZWN1cml0eS48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIG1ldGhvZCAnY2hlY2tDcmVhdGVDbGFzc0xvYWRlcigpJyI+Y2hlY2tDcmVhdGVDbGFzc0xvYWRlcjwvZXJyb3I+KCk7CisJfQorCXRoaXMucGFyZW50ID0gZ2V0U3lzdGVtQ2xhc3NMb2FkZXIoKTsKKwlpbml0aWFsaXplZCA9IHRydWU7CisgICAgfQorCisgICAgLyoqCisgICAgICogTG9hZHMgdGhlIGNsYXNzIHdpdGggdGhlIHNwZWNpZmllZCBuYW1lLiBUaGlzIG1ldGhvZCBzZWFyY2hlcyBmb3IKKyAgICAgKiBjbGFzc2VzIGluIHRoZSBzYW1lIG1hbm5lciBhcyB0aGUge0BsaW5rICNsb2FkQ2xhc3MoU3RyaW5nLCBib29sZWFuKX0KKyAgICAgKiBtZXRob2QuIEl0IGlzIGNhbGxlZCBieSB0aGUgSmF2YSB2aXJ0dWFsIG1hY2hpbmUgdG8gcmVzb2x2ZSBjbGFzcworICAgICAqIHJlZmVyZW5jZXMuIENhbGxpbmcgdGhpcyBtZXRob2QgaXMgZXF1aXZhbGVudCB0byBjYWxsaW5nCisgICAgICogPGNvZGU+bG9hZENsYXNzKG5hbWUsIGZhbHNlKTwvY29kZT4uCisgICAgICoKKyAgICAgKiBAcGFyYW0gICAgIG5hbWUgdGhlIG5hbWUgb2YgdGhlIGNsYXNzCisgICAgICogQHJldHVybiAgICB0aGUgcmVzdWx0aW5nIDxjb2RlPkNsYXNzPC9jb2RlPiBvYmplY3QKKyAgICAgKiBAZXhjZXB0aW9uIENsYXNzTm90Rm91bmRFeGNlcHRpb24gaWYgdGhlIGNsYXNzIHdhcyBub3QgZm91bmQKKyAgICAgKi8KKyAgICBwdWJsaWMgQ2xhc3MgbG9hZENsYXNzKFN0cmluZyBuYW1lKSB0aHJvd3MgQ2xhc3NOb3RGb3VuZEV4Y2VwdGlvbgorICAgIHsKKwlyZXR1cm4gbG9hZENsYXNzKG5hbWUsIGZhbHNlKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBMb2FkcyB0aGUgY2xhc3Mgd2l0aCB0aGUgc3BlY2lmaWVkIG5hbWUuICBUaGUgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiBvZgorICAgICAqIHRoaXMgbWV0aG9kIHNlYXJjaGVzIGZvciBjbGFzc2VzIGluIHRoZSBmb2xsb3dpbmcgb3JkZXI6PHA+CisgICAgICoKKyAgICAgKiA8b2w+CisgICAgICogPGxpPiBDYWxsIHtAbGluayAjZmluZExvYWRlZENsYXNzKFN0cmluZyl9IHRvIGNoZWNrIGlmIHRoZSBjbGFzcyBoYXMKKyAgICAgKiAgICAgIGFscmVhZHkgYmVlbiBsb2FkZWQuIDxwPgorICAgICAqIDxsaT4gQ2FsbCB0aGUgPGNvZGU+bG9hZENsYXNzPC9jb2RlPiBtZXRob2Qgb24gdGhlIHBhcmVudCBjbGFzcworICAgICAqICAgICAgbG9hZGVyLiAgSWYgdGhlIHBhcmVudCBpcyA8Y29kZT5udWxsPC9jb2RlPiB0aGUgY2xhc3MgbG9hZGVyCisgICAgICogICAgICBidWlsdC1pbiB0byB0aGUgdmlydHVhbCBtYWNoaW5lIGlzIHVzZWQsIGluc3RlYWQuIDxwPgorICAgICAqIDxsaT4gQ2FsbCB0aGUge0BsaW5rICNmaW5kQ2xhc3MoU3RyaW5nKX0gbWV0aG9kIHRvIGZpbmQgdGhlIGNsYXNzLiA8cD4KKyAgICAgKiA8L29sPgorICAgICAqCisgICAgICogSWYgdGhlIGNsYXNzIHdhcyBmb3VuZCB1c2luZyB0aGUgYWJvdmUgc3RlcHMsIGFuZCB0aGUKKyAgICAgKiA8Y29kZT5yZXNvbHZlPC9jb2RlPiBmbGFnIGlzIHRydWUsIHRoaXMgbWV0aG9kIHdpbGwgdGhlbiBjYWxsIHRoZQorICAgICAqIHtAbGluayAjcmVzb2x2ZUNsYXNzKENsYXNzKX0gbWV0aG9kIG9uIHRoZSByZXN1bHRpbmcgY2xhc3Mgb2JqZWN0LgorICAgICAqIDxwPgorICAgICAqIEZyb20gdGhlIEphdmEgMiBTREssIHYxLjIsIHN1YmNsYXNzZXMgb2YgQ2xhc3NMb2FkZXIgYXJlCisgICAgICogZW5jb3VyYWdlZCB0byBvdmVycmlkZQorICAgICAqIHtAbGluayAjZmluZENsYXNzKFN0cmluZyl9LCByYXRoZXIgdGhhbiB0aGlzIG1ldGhvZC48cD4KKyAgICAgKgorICAgICAqIEBwYXJhbSAgICAgbmFtZSB0aGUgbmFtZSBvZiB0aGUgY2xhc3MKKyAgICAgKiBAcGFyYW0gICAgIHJlc29sdmUgaWYgPGNvZGU+dHJ1ZTwvY29kZT4gdGhlbiByZXNvbHZlIHRoZSBjbGFzcworICAgICAqIEByZXR1cm4JICB0aGUgcmVzdWx0aW5nIDxjb2RlPkNsYXNzPC9jb2RlPiBvYmplY3QKKyAgICAgKiBAZXhjZXB0aW9uIENsYXNzTm90Rm91bmRFeGNlcHRpb24gaWYgdGhlIGNsYXNzIGNvdWxkIG5vdCBiZSBmb3VuZAorICAgICAqLworICAgIHByb3RlY3RlZCBzeW5jaHJvbml6ZWQgQ2xhc3MgbG9hZENsYXNzKFN0cmluZyBuYW1lLCBib29sZWFuIHJlc29sdmUpCisJdGhyb3dzIENsYXNzTm90Rm91bmRFeGNlcHRpb24KKyAgICB7CisJLy8gRmlyc3QsIGNoZWNrIGlmIHRoZSBjbGFzcyBoYXMgYWxyZWFkeSBiZWVuIGxvYWRlZAorCUNsYXNzIGMgPSBmaW5kTG9hZGVkQ2xhc3MobmFtZSk7CisJaWYgKGMgPT0gbnVsbCkgeworCSAgICB0cnkgeworCQlpZiAocGFyZW50ICE9IG51bGwpIHsKKwkJICAgIGMgPSBwYXJlbnQubG9hZENsYXNzKG5hbWUsIGZhbHNlKTsKKwkJfSBlbHNlIHsKKwkJICAgIGMgPSBmaW5kQm9vdHN0cmFwQ2xhc3MwKG5hbWUpOworCQl9CisJICAgIH0gY2F0Y2ggKENsYXNzTm90Rm91bmRFeGNlcHRpb24gZSkgeworCSAgICAgICAgLy8gSWYgc3RpbGwgbm90IGZvdW5kLCB0aGVuIGNhbGwgZmluZENsYXNzIGluIG9yZGVyCisJICAgICAgICAvLyB0byBmaW5kIHRoZSBjbGFzcy4KKwkgICAgICAgIGMgPSBmaW5kQ2xhc3MobmFtZSk7CisJICAgIH0KKwl9CisJaWYgKHJlc29sdmUpIHsKKwkgICAgcmVzb2x2ZUNsYXNzKGMpOworCX0KKwlyZXR1cm4gYzsKKyAgICB9CisKKyAgICAvKgorICAgICAqIFRoaXMgbWV0aG9kIGlzIGNhbGxlZCBieSB0aGUgdmlydHVhbCBtYWNoaW5lIHRvIGxvYWQKKyAgICAgKiBhIGNsYXNzLgorICAgICAqLworICAgIHByaXZhdGUgc3luY2hyb25pemVkIENsYXNzIGxvYWRDbGFzc0ludGVybmFsKFN0cmluZyBuYW1lKQorCXRocm93cyBDbGFzc05vdEZvdW5kRXhjZXB0aW9uIHsKKworCXJldHVybiBsb2FkQ2xhc3MobmFtZSk7CisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIGNoZWNrUGFja2FnZUFjY2VzcyhDbGFzcyBjbHMsIDxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdQcm90ZWN0aW9uRG9tYWluJyI+UHJvdGVjdGlvbkRvbWFpbjwvZXJyb3I+IHBkKSB7CisJZmluYWwgPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ1NlY3VyaXR5TWFuYWdlciciPlNlY3VyaXR5TWFuYWdlcjwvZXJyb3I+IHNtID0gU3lzdGVtLmdldFNlY3VyaXR5TWFuYWdlcigpOworCWlmIChzbSAhPSBudWxsKSB7CisJICAgIGZpbmFsIFN0cmluZyBuYW1lID0gY2xzLmdldE5hbWUoKTsKKyAgICAgICAgICAgIGZpbmFsIGludCBpID0gbmFtZS5sYXN0SW5kZXhPZignLicpOworCSAgICBpZiAoaSAhPSAtMSkgeworICAgICAgICAgICAgICAgIDxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdBY2Nlc3NDb250cm9sbGVyJyI+QWNjZXNzQ29udHJvbGxlcjwvZXJyb3I+LmRvUHJpdmlsZWdlZChuZXcgPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ1ByaXZpbGVnZWRBY3Rpb24nIj5Qcml2aWxlZ2VkQWN0aW9uPC9lcnJvcj4oKSB7CisgICAgICAgICAgICAgICAgICAgIHB1YmxpYyBPYmplY3QgcnVuKCkgeworCQkgICAgICAgIHNtLjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgbWV0aG9kICdjaGVja1BhY2thZ2VBY2Nlc3MoamF2YS5sYW5nLlN0cmluZyknIj5jaGVja1BhY2thZ2VBY2Nlc3M8L2Vycm9yPihuYW1lLnN1YnN0cmluZygwLCBpKSk7CisJCSAgICAgICAgcmV0dXJuIG51bGw7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9LCBuZXcgPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ0FjY2Vzc0NvbnRyb2xDb250ZXh0JyI+QWNjZXNzQ29udHJvbENvbnRleHQ8L2Vycm9yPihuZXcgPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ1Byb3RlY3Rpb25Eb21haW4nIj5Qcm90ZWN0aW9uRG9tYWluPC9lcnJvcj5bXSB7cGR9KSk7CisJICAgIH0KKwl9CisJZG9tYWlucy5hZGQ8ZXJyb3IgZGVzY3I9IidhZGQoamF2YS5sYW5nLk9iamVjdCknIGluICdqYXZhLnV0aWwuU2V0JyBjYW5ub3QgYmUgYXBwbGllZCB0byAnKFByb3RlY3Rpb25Eb21haW4pJyI+KHBkKTwvZXJyb3I+OworICAgIH0KKworICAgIC8qKgorICAgICAqIEZpbmRzIHRoZSBzcGVjaWZpZWQgY2xhc3MuIFRoaXMgbWV0aG9kIHNob3VsZCBiZSBvdmVycmlkZGVuCisgICAgICogYnkgY2xhc3MgbG9hZGVyIGltcGxlbWVudGF0aW9ucyB0aGF0IGZvbGxvdyB0aGUgbmV3IGRlbGVnYXRpb24gbW9kZWwKKyAgICAgKiBmb3IgbG9hZGluZyBjbGFzc2VzLCBhbmQgd2lsbCBiZSBjYWxsZWQgYnkgdGhlIDxjb2RlPmxvYWRDbGFzczwvY29kZT4KKyAgICAgKiBtZXRob2QgYWZ0ZXIgY2hlY2tpbmcgdGhlIHBhcmVudCBjbGFzcyBsb2FkZXIgZm9yIHRoZSByZXF1ZXN0ZWQgY2xhc3MuCisgICAgICogVGhlIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gdGhyb3dzIDxjb2RlPkNsYXNzTm90Rm91bmRFeGNlcHRpb248L2NvZGU+LgorICAgICAqCisgICAgICogQHBhcmFtICBuYW1lIHRoZSBuYW1lIG9mIHRoZSBjbGFzcworICAgICAqIEByZXR1cm4gdGhlIHJlc3VsdGluZyA8Y29kZT5DbGFzczwvY29kZT4gb2JqZWN0CisgICAgICogQGV4Y2VwdGlvbiBDbGFzc05vdEZvdW5kRXhjZXB0aW9uIGlmIHRoZSBjbGFzcyBjb3VsZCBub3QgYmUgZm91bmQKKyAgICAgKiBAc2luY2UgIDEuMgorICAgICAqLworICAgIHByb3RlY3RlZCBDbGFzcyBmaW5kQ2xhc3MoU3RyaW5nIG5hbWUpIHRocm93cyBDbGFzc05vdEZvdW5kRXhjZXB0aW9uIHsKKwl0aHJvdyBuZXcgQ2xhc3NOb3RGb3VuZEV4Y2VwdGlvbihuYW1lKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDb252ZXJ0cyBhbiBhcnJheSBvZiBieXRlcyBpbnRvIGFuIGluc3RhbmNlIG9mIGNsYXNzCisgICAgICogPGNvZGU+Q2xhc3M8L2NvZGU+LiAgQmVmb3JlIHRoZSBDbGFzcyBjYW4gYmUgdXNlZCBpdCBtdXN0IGJlCisgICAgICogcmVzb2x2ZWQuIFRoaXMgbWV0aG9kIGlzIGRlcHJlY2F0ZWQgaW4gZmF2b3Igb2YgdGhlIHZlcnNpb24KKyAgICAgKiB0aGF0IHRha2VzIHRoZSBjbGFzcyBuYW1lIGFzIGl0cyBmaXJzdCBhcmd1bWVudCwgYW5kIGlzIG1vcmUKKyAgICAgKiBzZWN1cmUuCisgICAgICoKKyAgICAgKiBAcGFyYW0gICAgICBiICAgdGhlIGJ5dGVzIHRoYXQgbWFrZSB1cCB0aGUgY2xhc3MgZGF0YS4gVGhlIGJ5dGVzIGluCisgICAgICogICAgICAgICAgICAgcG9zaXRpb25zIDxjb2RlPm9mZjwvY29kZT4gdGhyb3VnaCA8Y29kZT5vZmYrbGVuLTE8L2NvZGU+CisgICAgICogICAgICAgICAgICAgc2hvdWxkIGhhdmUgdGhlIGZvcm1hdCBvZiBhIHZhbGlkIGNsYXNzIGZpbGUgYXMgZGVmaW5lZAorICAgICAqICAgICAgICAgICAgIGJ5IHRoZQorICAgICAqICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHA6Ly9qYXZhLnN1bi5jb20vZG9jcy9ib29rcy92bXNwZWMvIj5KYXZhCisgICAgICogICAgICAgICAgICAgVmlydHVhbCBNYWNoaW5lIFNwZWNpZmljYXRpb248L2E+LgorICAgICAqIEBwYXJhbSAgICAgIG9mZiAgdGhlIHN0YXJ0IG9mZnNldCBpbiA8Y29kZT5iPC9jb2RlPiBvZiB0aGUgY2xhc3MgZGF0YQorICAgICAqIEBwYXJhbSAgICAgIGxlbiB0aGUgbGVuZ3RoIG9mIHRoZSBjbGFzcyBkYXRhCisgICAgICogQHJldHVybiAgICAgdGhlIDxjb2RlPkNsYXNzPC9jb2RlPiBvYmplY3QgdGhhdCB3YXMgY3JlYXRlZCBmcm9tIHRoZQorICAgICAqICAgICAgICAgICAgIHNwZWNpZmllZCBjbGFzcyBkYXRhCisgICAgICogQGV4Y2VwdGlvbiAgQ2xhc3NGb3JtYXRFcnJvciBpZiB0aGUgZGF0YSBkaWQgbm90IGNvbnRhaW4gYSB2YWxpZCBjbGFzcworICAgICAqIEBleGNlcHRpb24gIEluZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb24gaWYgZWl0aGVyIDxjb2RlPm9mZjwvY29kZT4gb3IKKyAgICAgKiAgICAgICAgICAgICA8Y29kZT5sZW48L2NvZGU+IGlzIG5lZ2F0aXZlLCBvciBpZgorICAgICAqICAgICAgICAgICAgIDxjb2RlPm9mZitsZW48L2NvZGU+IGlzIGdyZWF0ZXIgdGhhbiA8Y29kZT5iLmxlbmd0aDwvY29kZT4uCisgICAgICogQHNlZSAgICAgICAgQ2xhc3NMb2FkZXIjbG9hZENsYXNzKGphdmEubGFuZy5TdHJpbmcsIGJvb2xlYW4pCisgICAgICogQHNlZSAgICAgICAgQ2xhc3NMb2FkZXIjcmVzb2x2ZUNsYXNzKGphdmEubGFuZy5DbGFzcykKKyAgICAgKiBAZGVwcmVjYXRlZCBSZXBsYWNlZCBieSBkZWZpbmVDbGFzcyhqYXZhLmxhbmcuU3RyaW5nLCBieXRlW10sIGludCwgaW50KQorICAgICAqLworICAgIHByb3RlY3RlZCBmaW5hbCBDbGFzcyBkZWZpbmVDbGFzcyhieXRlW10gYiwgaW50IG9mZiwgaW50IGxlbikKKwl0aHJvd3MgPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ0NsYXNzRm9ybWF0RXJyb3InIj5DbGFzc0Zvcm1hdEVycm9yPC9lcnJvcj4KKyAgICB7CisJcmV0dXJuIGRlZmluZUNsYXNzKG51bGwsIGIsIG9mZiwgbGVuLCBudWxsKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDb252ZXJ0cyBhbiBhcnJheSBvZiBieXRlcyBpbnRvIGFuIGluc3RhbmNlIG9mIGNsYXNzIDxjb2RlPkNsYXNzPC9jb2RlPi4KKyAgICAgKiBCZWZvcmUgdGhlIENsYXNzIGNhbiBiZSB1c2VkIGl0IG11c3QgYmUgcmVzb2x2ZWQuCisgICAgICogPHA+CisgICAgICogVGhpcyBtZXRob2QgYXNzaWducyBhIGRlZmF1bHQgPGNvZGU+UHJvdGVjdGlvbkRvbWFpbjwvY29kZT4gdG8KKyAgICAgKiB0aGUgbmV3bHkgZGVmaW5lZCBjbGFzcy4gVGhlIDxjb2RlPlByb3RlY3Rpb25Eb21haW48L2NvZGU+CisgICAgICogY29udGFpbnMgdGhlIHNldCBvZiBwZXJtaXNzaW9ucyBncmFudGVkIHdoZW4KKyAgICAgKiBhIGNhbGwgdG8gPGNvZGU+UG9saWN5LmdldFBvbGljeSgpLmdldFBlcm1pc3Npb25zKCk8L2NvZGU+IGlzIG1hZGUgd2l0aAorICAgICAqIGEgY29kZSBzb3VyY2Ugb2YgPGNvZGU+bnVsbCxudWxsPC9jb2RlPi4gVGhlIGRlZmF1bHQgZG9tYWluIGlzCisgICAgICogY3JlYXRlZCBvbiB0aGUgZmlyc3QgaW52b2NhdGlvbiBvZiA8Y29kZT5kZWZpbmVDbGFzczwvY29kZT4sIGFuZAorICAgICAqIHJlLXVzZWQgb24gc3Vic2VxdWVudCBjYWxscy4KKyAgICAgKiA8cD4KKyAgICAgKiBUbyBhc3NpZ24gYSBzcGVjaWZpYyA8Y29kZT5Qcm90ZWN0aW9uRG9tYWluPC9jb2RlPiB0byB0aGUgY2xhc3MsCisgICAgICogdXNlIHRoZSA8Y29kZT5kZWZpbmVDbGFzczwvY29kZT4gbWV0aG9kIHRoYXQgdGFrZXMgYQorICAgICAqIDxjb2RlPlByb3RlY3Rpb25Eb21haW48L2NvZGU+IGFzIG9uZSBvZiBpdHMgYXJndW1lbnRzLgorICAgICAqCisgICAgICogQHBhcmFtICAgICAgbmFtZSB0aGUgZXhwZWN0ZWQgbmFtZSBvZiB0aGUgY2xhc3MsIG9yIDxjb2RlPm51bGw8L2NvZGU+CisgICAgICogICAgICAgICAgICAgICAgICBpZiBub3Qga25vd24sIHVzaW5nICcuJyBhbmQgbm90ICcvJyBhcyB0aGUgc2VwYXJhdG9yCisgICAgICogICAgICAgICAgICAgICAgICBhbmQgd2l0aG91dCBhIHRyYWlsaW5nICIuY2xhc3MiIHN1ZmZpeC4KKyAgICAgKiBAcGFyYW0gICAgICBiICAgIHRoZSBieXRlcyB0aGF0IG1ha2UgdXAgdGhlIGNsYXNzIGRhdGEuIFRoZSBieXRlcyBpbgorICAgICAqICAgICAgICAgICAgIHBvc2l0aW9ucyA8Y29kZT5vZmY8L2NvZGU+IHRocm91Z2ggPGNvZGU+b2ZmK2xlbi0xPC9jb2RlPgorICAgICAqICAgICAgICAgICAgIHNob3VsZCBoYXZlIHRoZSBmb3JtYXQgb2YgYSB2YWxpZCBjbGFzcyBmaWxlIGFzIGRlZmluZWQKKyAgICAgKiAgICAgICAgICAgICBieSB0aGUKKyAgICAgKiAgICAgICAgICAgICA8YSBocmVmPSJodHRwOi8vamF2YS5zdW4uY29tL2RvY3MvYm9va3Mvdm1zcGVjLyI+SmF2YQorICAgICAqICAgICAgICAgICAgIFZpcnR1YWwgTWFjaGluZSBTcGVjaWZpY2F0aW9uPC9hPi4KKyAgICAgKiBAcGFyYW0gICAgICBvZmYgIHRoZSBzdGFydCBvZmZzZXQgaW4gPGNvZGU+YjwvY29kZT4gb2YgdGhlIGNsYXNzIGRhdGEKKyAgICAgKiBAcGFyYW0gICAgICBsZW4gIHRoZSBsZW5ndGggb2YgdGhlIGNsYXNzIGRhdGEKKyAgICAgKiBAcmV0dXJuICAgICB0aGUgPGNvZGU+Q2xhc3M8L2NvZGU+IG9iamVjdCB0aGF0IHdhcyBjcmVhdGVkIGZyb20gdGhlCisgICAgICogICAgICAgICAgICAgc3BlY2lmaWVkIGNsYXNzIGRhdGEKKyAgICAgKiBAZXhjZXB0aW9uICBDbGFzc0Zvcm1hdEVycm9yIGlmIHRoZSBkYXRhIGRpZCBub3QgY29udGFpbiBhIHZhbGlkIGNsYXNzCisgICAgICogQGV4Y2VwdGlvbiAgSW5kZXhPdXRPZkJvdW5kc0V4Y2VwdGlvbiBpZiBlaXRoZXIgPGNvZGU+b2ZmPC9jb2RlPiBvcgorICAgICAqICAgICAgICAgICAgIDxjb2RlPmxlbjwvY29kZT4gaXMgbmVnYXRpdmUsIG9yIGlmCisgICAgICogICAgICAgICAgICAgPGNvZGU+b2ZmK2xlbjwvY29kZT4gaXMgZ3JlYXRlciB0aGFuIDxjb2RlPmIubGVuZ3RoPC9jb2RlPi4KKyAgICAgKiBAZXhjZXB0aW9uICBTZWN1cml0eUV4Y2VwdGlvbiBpZiBhbiBhdHRlbXB0IGlzIG1hZGUgdG8gYWRkIHRoaXMgY2xhc3MKKyAgICAgKiAgICAgICAgICAgICB0byBhIHBhY2thZ2UgdGhhdCBjb250YWlucyBjbGFzc2VzIHRoYXQgd2VyZSBzaWduZWQgYnkKKyAgICAgKiAgICAgICAgICAgICBhIGRpZmZlcmVudCBzZXQgb2YgY2VydGlmaWNhdGVzIHRoYW4gdGhpcyBjbGFzcyAod2hpY2gKKyAgICAgKiAgICAgICAgICAgICBpcyB1bnNpZ25lZCksIG9yIGlmIHRoZSBjbGFzcyBuYW1lIGJlZ2lucyB3aXRoICJqYXZhLiIuCisgICAgICoKKyAgICAgKiBAc2VlICAgICAgICBDbGFzc0xvYWRlciNsb2FkQ2xhc3MoamF2YS5sYW5nLlN0cmluZywgYm9vbGVhbikKKyAgICAgKiBAc2VlICAgICAgICBDbGFzc0xvYWRlciNyZXNvbHZlQ2xhc3MoamF2YS5sYW5nLkNsYXNzKQorICAgICAqIEBzZWUgICAgICAgIGphdmEuc2VjdXJpdHkuUHJvdGVjdGlvbkRvbWFpbgorICAgICAqIEBzZWUgICAgICAgIGphdmEuc2VjdXJpdHkuUG9saWN5CisgICAgICogQHNlZSAgICAgICAgamF2YS5zZWN1cml0eS5Db2RlU291cmNlCisgICAgICogQHNlZSAgICAgICAgamF2YS5zZWN1cml0eS5TZWN1cmVDbGFzc0xvYWRlcgorICAgICAqIEBzaW5jZSAgICAgIEpESzEuMQorICAgICAqLworICAgIHByb3RlY3RlZCBmaW5hbCBDbGFzcyBkZWZpbmVDbGFzcyhTdHJpbmcgbmFtZSwgYnl0ZVtdIGIsIGludCBvZmYsIGludCBsZW4pCisJdGhyb3dzIDxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdDbGFzc0Zvcm1hdEVycm9yJyI+Q2xhc3NGb3JtYXRFcnJvcjwvZXJyb3I+CisgICAgeworCXJldHVybiBkZWZpbmVDbGFzcyhuYW1lLCBiLCBvZmYsIGxlbiwgbnVsbCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogQ29udmVydHMgYW4gYXJyYXkgb2YgYnl0ZXMgaW50byBhbiBpbnN0YW5jZSBvZiBjbGFzcyBDbGFzcywKKyAgICAgKiB3aXRoIGFuIG9wdGlvbmFsIFByb3RlY3Rpb25Eb21haW4uIElmIHRoZSBkb21haW4gaXMgPGNvZGU+bnVsbDwvY29kZT4sCisgICAgICogdGhlbiBhIGRlZmF1bHQgZG9tYWluIHdpbGwgYmUgYXNzaWduZWQgdG8gdGhlIGNsYXNzIGFzIHNwZWNpZmllZAorICAgICAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGZvciB7QGxpbmsgI2RlZmluZUNsYXNzKFN0cmluZyxieXRlW10saW50LGludCl9LgorICAgICAqIEJlZm9yZSB0aGUgY2xhc3MgY2FuIGJlIHVzZWQgaXQgbXVzdCBiZSByZXNvbHZlZC4KKyAgICAgKgorICAgICAqIDxwPlRoZSBmaXJzdCBjbGFzcyBkZWZpbmVkIGluIGEgcGFja2FnZSBkZXRlcm1pbmVzIHRoZSBleGFjdCBzZXQgb2YKKyAgICAgKiBjZXJ0aWZpY2F0ZXMgdGhhdCBhbGwgc3Vic2VxdWVudCBjbGFzc2VzIGRlZmluZWQgaW4gdGhhdCBwYWNrYWdlIG11c3QKKyAgICAgKiBjb250YWluLiBUaGUgc2V0IG9mIGNlcnRpZmljYXRlcyBmb3IgYSBjbGFzcyBpcyBvYnRhaW5lZCBmcm9tIHRoZQorICAgICAqIDxjb2RlPkNvZGVTb3VyY2U8L2NvZGU+IHdpdGhpbiB0aGUgPGNvZGU+UHJvdGVjdGlvbkRvbWFpbjwvY29kZT4gb2YKKyAgICAgKiB0aGUgY2xhc3MuIEFueSBjbGFzc2VzIGFkZGVkIHRvIHRoYXQgcGFja2FnZSBtdXN0IGNvbnRhaW4KKyAgICAgKiB0aGUgc2FtZSBzZXQgb2YgY2VydGlmaWNhdGVzIG9yIGEgPGNvZGU+U2VjdXJpdHlFeGNlcHRpb248L2NvZGU+CisgICAgICogd2lsbCBiZSB0aHJvd24uIE5vdGUgdGhhdCBpZiB0aGUgPGNvZGU+bmFtZTwvY29kZT4gYXJndW1lbnQgaXMKKyAgICAgKiBudWxsLCB0aGlzIGNoZWNrIGlzIG5vdCBwZXJmb3JtZWQuIFlvdSBzaG91bGQgYWx3YXlzIHBhc3MgaW4gdGhlCisgICAgICogbmFtZSBvZiB0aGUgY2xhc3MgeW91IGFyZSBkZWZpbmluZyBhcyB3ZWxsIGFzIHRoZSBieXRlcy4gVGhpcworICAgICAqIGVuc3VyZXMgdGhhdCB0aGUgY2xhc3MgeW91IGFyZSBkZWZpbmluZyBpcyBpbmRlZWQgdGhlIGNsYXNzCisgICAgICogeW91IHRoaW5rIGl0IGlzLgorICAgICAqCisgICAgICogPHA+VGhlIHNwZWNpZmllZCBjbGFzcyBuYW1lIGNhbm5vdCBiZWdpbiB3aXRoICJqYXZhLiIsIHNpbmNlIGFsbAorICAgICAqIGNsYXNzZXMgaW4gdGhlIGphdmEuKiBwYWNrYWdlcyBjYW4gb25seSBiZSBkZWZpbmVkIGJ5IHRoZSBib290c3RyYXAKKyAgICAgKiBjbGFzcyBsb2FkZXIuIElmIHRoZSBuYW1lIHBhcmFtZXRlciBpcyBub3QgPFRUPm51bGw8L1RUPiwgaXQKKyAgICAgKiBtdXN0IGJlIGVxdWFsIHRvIHRoZSBuYW1lIG9mIHRoZSBjbGFzcyBzcGVjaWZpZWQgYnkgdGhlIGJ5dGUKKyAgICAgKiBhcnJheSBiLCBvdGhlcndpc2UgYSA8VFQ+Q2xhc3NGb3JtYXRFcnJvcjwvVFQ+IGlzIHJhaXNlZC4KKyAgICAgKgorICAgICAqIEBwYXJhbSAgICAgIG5hbWUgdGhlIGV4cGVjdGVkIG5hbWUgb2YgdGhlIGNsYXNzLCBvciA8Y29kZT5udWxsPC9jb2RlPgorICAgICAqICAgICAgICAgICAgICAgICAgaWYgbm90IGtub3duLCB1c2luZyAnLicgYW5kIG5vdCAnLycgYXMgdGhlIHNlcGFyYXRvcgorICAgICAqICAgICAgICAgICAgICAgICAgYW5kIHdpdGhvdXQgYSB0cmFpbGluZyAiLmNsYXNzIiBzdWZmaXguCisgICAgICogQHBhcmFtICAgICAgYiAgICB0aGUgYnl0ZXMgdGhhdCBtYWtlIHVwIHRoZSBjbGFzcyBkYXRhLiBUaGUgYnl0ZXMgaW4KKyAgICAgKiAgICAgICAgICAgICBwb3NpdGlvbnMgPGNvZGU+b2ZmPC9jb2RlPiB0aHJvdWdoIDxjb2RlPm9mZitsZW4tMTwvY29kZT4KKyAgICAgKiAgICAgICAgICAgICBzaG91bGQgaGF2ZSB0aGUgZm9ybWF0IG9mIGEgdmFsaWQgY2xhc3MgZmlsZSBhcyBkZWZpbmVkCisgICAgICogICAgICAgICAgICAgYnkgdGhlCisgICAgICogICAgICAgICAgICAgPGEgaHJlZj0iaHR0cDovL2phdmEuc3VuLmNvbS9kb2NzL2Jvb2tzL3Ztc3BlYy8iPkphdmEKKyAgICAgKiAgICAgICAgICAgICBWaXJ0dWFsIE1hY2hpbmUgU3BlY2lmaWNhdGlvbjwvYT4uCisgICAgICogQHBhcmFtICAgICAgb2ZmICB0aGUgc3RhcnQgb2Zmc2V0IGluIDxjb2RlPmI8L2NvZGU+IG9mIHRoZSBjbGFzcyBkYXRhCisgICAgICogQHBhcmFtICAgICAgbGVuICB0aGUgbGVuZ3RoIG9mIHRoZSBjbGFzcyBkYXRhCisgICAgICogQHBhcmFtIHByb3RlY3Rpb25Eb21haW4gdGhlIFByb3RlY3Rpb25Eb21haW4gb2YgdGhlIGNsYXNzCisgICAgICogQHJldHVybiB0aGUgPGNvZGU+Q2xhc3M8L2NvZGU+IG9iamVjdCBjcmVhdGVkIGZyb20gdGhlIGRhdGEsCisgICAgICogICAgICAgICBhbmQgb3B0aW9uYWwgUHJvdGVjdGlvbkRvbWFpbi4KKyAgICAgKiBAZXhjZXB0aW9uICBDbGFzc0Zvcm1hdEVycm9yIGlmIHRoZSBkYXRhIGRpZCBub3QgY29udGFpbiBhIHZhbGlkIGNsYXNzCisgICAgICogQGV4Y2VwdGlvbiAgSW5kZXhPdXRPZkJvdW5kc0V4Y2VwdGlvbiBpZiBlaXRoZXIgPGNvZGU+b2ZmPC9jb2RlPiBvcgorICAgICAqICAgICAgICAgICAgIDxjb2RlPmxlbjwvY29kZT4gaXMgbmVnYXRpdmUsIG9yIGlmCisgICAgICogICAgICAgICAgICAgPGNvZGU+b2ZmK2xlbjwvY29kZT4gaXMgZ3JlYXRlciB0aGFuIDxjb2RlPmIubGVuZ3RoPC9jb2RlPi4KKyAgICAgKiBAZXhjZXB0aW9uICBTZWN1cml0eUV4Y2VwdGlvbiBpZiBhbiBhdHRlbXB0IGlzIG1hZGUgdG8gYWRkIHRoaXMgY2xhc3MKKyAgICAgKiAgICAgICAgICAgICB0byBhIHBhY2thZ2UgdGhhdCBjb250YWlucyBjbGFzc2VzIHRoYXQgd2VyZSBzaWduZWQgYnkKKyAgICAgKiAgICAgICAgICAgICBhIGRpZmZlcmVudCBzZXQgb2YgY2VydGlmaWNhdGVzIHRoYW4gdGhpcyBjbGFzcywgb3IgaWYKKyAgICAgKiAgICAgICAgICAgICB0aGUgY2xhc3MgbmFtZSBiZWdpbnMgd2l0aCAiamF2YS4iLgorICAgICAqLworICAgIHByb3RlY3RlZCBmaW5hbCBDbGFzcyBkZWZpbmVDbGFzcyhTdHJpbmcgbmFtZSwgYnl0ZVtdIGIsIGludCBvZmYsIGludCBsZW4sCisJCQkJICAgICAgPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ1Byb3RlY3Rpb25Eb21haW4nIj5Qcm90ZWN0aW9uRG9tYWluPC9lcnJvcj4gcHJvdGVjdGlvbkRvbWFpbikKKwl0aHJvd3MgPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ0NsYXNzRm9ybWF0RXJyb3InIj5DbGFzc0Zvcm1hdEVycm9yPC9lcnJvcj4KKyAgICB7CisJY2hlY2soKTsKKyAgICAgICAgaWYgKChuYW1lICE9IG51bGwpICYmIG5hbWUuc3RhcnRzV2l0aCgiamF2YS4iKSkgeworICAgICAgICAgICAgdGhyb3cgbmV3IDxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdTZWN1cml0eUV4Y2VwdGlvbiciPlNlY3VyaXR5RXhjZXB0aW9uPC9lcnJvcj4oIlByb2hpYml0ZWQgcGFja2FnZSBuYW1lOiAiICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lLnN1YnN0cmluZygwLCBuYW1lLmxhc3RJbmRleE9mKCcuJykpKTsKKyAgICAgICAgfQorCWlmIChwcm90ZWN0aW9uRG9tYWluID09IG51bGwpIHsKKwkgICAgcHJvdGVjdGlvbkRvbWFpbiA9IGdldERlZmF1bHREb21haW4oKTsKKwl9CisKKwlpZiAobmFtZSAhPSBudWxsKQorCSAgICBjaGVja0NlcnRzKG5hbWUsIHByb3RlY3Rpb25Eb21haW4uPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBtZXRob2QgJ2dldENvZGVTb3VyY2UoKSciPmdldENvZGVTb3VyY2U8L2Vycm9yPigpKTsKKworCUNsYXNzIGMgPSBudWxsOworCisJdHJ5CisJeworCSAgICBjID0gZGVmaW5lQ2xhc3MwKG5hbWUsIGIsIG9mZiwgbGVuLCBwcm90ZWN0aW9uRG9tYWluKTsKKwl9CisJY2F0Y2ggKDxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdDbGFzc0Zvcm1hdEVycm9yJyI+Q2xhc3NGb3JtYXRFcnJvcjwvZXJyb3I+IGNmZSkKKwl7CisJICAgIC8vIENsYXNzIGZvcm1hdCBlcnJvciAtIHRyeSB0byB0cmFuc2Zvcm0gdGhlIGJ5dGVjb2RlIGFuZAorCSAgICAvLyBkZWZpbmUgdGhlIGNsYXNzIGFnYWluCisJICAgIC8vCisJICAgIE9iamVjdFtdIHRyYW5zZm9ybWVycyA9IDxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdDbGFzc0ZpbGVUcmFuc2Zvcm1lciciPkNsYXNzRmlsZVRyYW5zZm9ybWVyPC9lcnJvcj4uZ2V0VHJhbnNmb3JtZXJzKCk7CisKKwkgICAgZm9yIChpbnQgaT0wOyB0cmFuc2Zvcm1lcnMgIT0gbnVsbCAmJiBpIDwgdHJhbnNmb3JtZXJzLmxlbmd0aDsgaSsrKQorCSAgICB7CisJCXRyeQorCQl7CisJCSAgICAvLyBUcmFuc2Zvcm0gYnl0ZSBjb2RlIHVzaW5nIHRyYW5zZm9ybWVyCisJCSAgICBieXRlW10gdGIgPSAoKDxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdDbGFzc0ZpbGVUcmFuc2Zvcm1lciciPkNsYXNzRmlsZVRyYW5zZm9ybWVyPC9lcnJvcj4pIHRyYW5zZm9ybWVyc1tpXSkudHJhbnNmb3JtKGIsIG9mZiwgbGVuKTsKKwkJICAgIGMgPSBkZWZpbmVDbGFzczAobmFtZSwgdGIsIDAsIHRiLmxlbmd0aCwgcHJvdGVjdGlvbkRvbWFpbik7CisJCSAgICBicmVhazsKKwkJfQorCQljYXRjaCAoPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ0NsYXNzRm9ybWF0RXJyb3InIj5DbGFzc0Zvcm1hdEVycm9yPC9lcnJvcj4gY2ZlMikKKwkJeworCQkgICAgLy8gSWYgQ2xhc3NGb3JtYXRFcnJvciBvY2N1cnMsIHRyeSBuZXh0IHRyYW5zZm9ybWVyCisJCX0KKwkgICAgfQorCisJICAgIC8vIFJldGhyb3cgb3JpZ2luYWwgQ2xhc3NGb3JtYXRFcnJvciBpZiB1bmFibGUgdG8gdHJhbnNmb3JtCisJICAgIC8vIGJ5dGVjb2RlIHRvIHdlbGwtZm9ybWVkCisJICAgIC8vCisJICAgIGlmIChjID09IG51bGwpCisJCXRocm93IDxlcnJvciBkZXNjcj0iSW5jb21wYXRpYmxlIHR5cGVzLiBGb3VuZDogJ0NsYXNzRm9ybWF0RXJyb3InLCByZXF1aXJlZDogJ2phdmEubGFuZy5UaHJvd2FibGUnIj5jZmU8L2Vycm9yPjsKKwl9CisKKwlpZiAocHJvdGVjdGlvbkRvbWFpbi48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIG1ldGhvZCAnZ2V0Q29kZVNvdXJjZSgpJyI+Z2V0Q29kZVNvdXJjZTwvZXJyb3I+KCkgIT0gbnVsbCkgeworCSAgICBqYXZhLnNlY3VyaXR5LjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdjZXJ0JyI+Y2VydDwvZXJyb3I+LkNlcnRpZmljYXRlIGNlcnRzW10gPQorCQlwcm90ZWN0aW9uRG9tYWluLjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgbWV0aG9kICdnZXRDb2RlU291cmNlKCknIj5nZXRDb2RlU291cmNlPC9lcnJvcj4oKS5nZXRDZXJ0aWZpY2F0ZXMoKTsKKwkgICAgaWYgKGNlcnRzICE9IG51bGwpCisJCXNldFNpZ25lcnM8ZXJyb3IgZGVzY3I9IidzZXRTaWduZXJzKGphdmEubGFuZy5DbGFzcywgamF2YS5sYW5nLk9iamVjdFtdKScgaW4gJ0NsYXNzTG9hZGVyJyBjYW5ub3QgYmUgYXBwbGllZCB0byAnKGphdmEubGFuZy5DbGFzcywgamF2YS5zZWN1cml0eS5jZXJ0LkNlcnRpZmljYXRlW10pJyI+KGMsIGNlcnRzKTwvZXJyb3I+OworCX0KKwlyZXR1cm4gYzsKKyAgICB9CisKKyAgICBwcml2YXRlIHN5bmNocm9uaXplZCB2b2lkIGNoZWNrQ2VydHMoU3RyaW5nIG5hbWUsIDxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdDb2RlU291cmNlJyI+Q29kZVNvdXJjZTwvZXJyb3I+IGNzKQorICAgIHsKKwlpbnQgaSA9IG5hbWUubGFzdEluZGV4T2YoJy4nKTsKKwlTdHJpbmcgcG5hbWUgPSAoaSA9PSAtMSkgPyAiIiA6IG5hbWUuc3Vic3RyaW5nKDAsaSk7CisJamF2YS5zZWN1cml0eS48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnY2VydCciPmNlcnQ8L2Vycm9yPi5DZXJ0aWZpY2F0ZVtdIHBjZXJ0cyA9CisJICAgIChqYXZhLnNlY3VyaXR5LjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdjZXJ0JyI+Y2VydDwvZXJyb3I+LkNlcnRpZmljYXRlW10pIHBhY2thZ2UyY2VydHMuZ2V0KHBuYW1lKTsKKyAgICAgICAgaWYgKHBjZXJ0cyA9PSBudWxsKSB7CisJICAgIC8vIGZpcnN0IGNsYXNzIGluIHRoaXMgcGFja2FnZSBnZXRzIHRvIGRlZmluZSB3aGljaAorCSAgICAvLyBjZXJ0aWZpY2F0ZXMgbXVzdCBiZSB0aGUgc2FtZSBmb3IgYWxsIG90aGVyIGNsYXNzZXMKKwkgICAgLy8gaW4gdGhpcyBwYWNrYWdlCisJICAgIGlmIChjcyAhPSBudWxsKSB7CisJCXBjZXJ0cyA9IGNzLjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgbWV0aG9kICdnZXRDZXJ0aWZpY2F0ZXMoKSciPmdldENlcnRpZmljYXRlczwvZXJyb3I+KCk7CisJICAgIH0KKwkgICAgaWYgKHBjZXJ0cyA9PSBudWxsKSB7CisJCWlmIChub2NlcnRzID09IG51bGwpCisJCSAgICBub2NlcnRzID0gbmV3IGphdmEuc2VjdXJpdHkuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ2NlcnQnIj5jZXJ0PC9lcnJvcj4uQ2VydGlmaWNhdGVbMF07CisJCXBjZXJ0cyA9IG5vY2VydHM7CisJICAgIH0KKwkgICAgcGFja2FnZTJjZXJ0cy5wdXQocG5hbWUsIHBjZXJ0cyk7CisJfSBlbHNlIHsKKwkgICAgamF2YS5zZWN1cml0eS48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnY2VydCciPmNlcnQ8L2Vycm9yPi5DZXJ0aWZpY2F0ZVtdIGNlcnRzID0gbnVsbDsKKwkgICAgaWYgKGNzICE9IG51bGwpIHsKKwkJY2VydHMgPSBjcy48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIG1ldGhvZCAnZ2V0Q2VydGlmaWNhdGVzKCknIj5nZXRDZXJ0aWZpY2F0ZXM8L2Vycm9yPigpOworCSAgICB9CisKKwkgICAgaWYgKCFjb21wYXJlQ2VydHMocGNlcnRzLGNlcnRzKSkgeworCQl0aHJvdyBuZXcgPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ1NlY3VyaXR5RXhjZXB0aW9uJyI+U2VjdXJpdHlFeGNlcHRpb248L2Vycm9yPigiY2xhc3MgXCIiKyBuYW1lKworCQkJCQkgICAgIlwiJ3Mgc2lnbmVyIGluZm9ybWF0aW9uIGRvZXMgbm90IG1hdGNoIHNpZ25lciBpbmZvcm1hdGlvbiBvZiBvdGhlciBjbGFzc2VzIGluIHRoZSBzYW1lIHBhY2thZ2UiKTsKKwkgICAgfQorCX0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBjaGVjayB0byBtYWtlIHN1cmUgdGhlIGNlcnRzIGZvciB0aGUgbmV3IGNsYXNzIChjZXJ0cykgYXJlCisgICAgICogdGhlIHNhbWUgYXMgdGhlIGNlcnRzIGZvciB0aGUgZmlyc3QgY2xhc3MgaW5zZXJ0ZWQKKyAgICAgKiBpbiB0aGUgcGFja2FnZSAocGNlcnRzKQorICAgICAqLworICAgIHByaXZhdGUgYm9vbGVhbiBjb21wYXJlQ2VydHMoamF2YS5zZWN1cml0eS48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnY2VydCciPmNlcnQ8L2Vycm9yPi5DZXJ0aWZpY2F0ZVtdIHBjZXJ0cywKKwkJCQkgamF2YS5zZWN1cml0eS48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnY2VydCciPmNlcnQ8L2Vycm9yPi5DZXJ0aWZpY2F0ZVtdIGNlcnRzKQorICAgIHsKKwkvLyBjZXJ0cyBjYW4gYmUgbnVsbCwgaW5kaWNhdGluZyBubyBjZXJ0cy4KKwlpZiAoKGNlcnRzID09IG51bGwpIHx8IChjZXJ0cy5sZW5ndGggPT0gMCkpIHsKKwkgICAgcmV0dXJuIHBjZXJ0cy5sZW5ndGggPT0gMDsKKwl9CisKKwkvLyB0aGUgbGVuZ3RoIG11c3QgYmUgdGhlIHNhbWUgYXQgdGhpcyBwb2ludAorCWlmIChjZXJ0cy5sZW5ndGggIT0gcGNlcnRzLmxlbmd0aCkKKwkgICAgcmV0dXJuIGZhbHNlOworCisJLy8gZ28gdGhyb3VnaCBhbmQgbWFrZSBzdXJlIGFsbCB0aGUgY2VydHMgaW4gb25lIGFycmF5CisJLy8gYXJlIGluIHRoZSBvdGhlciBhbmQgdmljZS12ZXJzYS4KKwlib29sZWFuIG1hdGNoOworCWZvciAoaW50IGk9MDsgaSA8IGNlcnRzLmxlbmd0aDsgaSsrKSB7CisJICAgIG1hdGNoID0gZmFsc2U7CisJICAgIGZvciAoaW50IGo9MDsgaiA8IHBjZXJ0cy5sZW5ndGg7IGorKykgeworCQlpZiAoY2VydHNbaV0uPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBtZXRob2QgJ2VxdWFscyhqYXZhLnNlY3VyaXR5LmNlcnQuQ2VydGlmaWNhdGUpJyI+ZXF1YWxzPC9lcnJvcj4ocGNlcnRzW2pdKSkgeworCQkgICAgbWF0Y2ggPSB0cnVlOworCQkgICAgYnJlYWs7CisJCX0KKwkgICAgfQorCSAgICBpZiAoIW1hdGNoKSByZXR1cm4gZmFsc2U7CisJfQorCisJLy8gbm93IGRvIHRoZSBzYW1lIGZvciBwY2VydHMKKwlmb3IgKGludCBpPTA7IGkgPCBwY2VydHMubGVuZ3RoOyBpKyspIHsKKwkgICAgbWF0Y2ggPSBmYWxzZTsKKwkgICAgZm9yIChpbnQgaj0wOyBqIDwgY2VydHMubGVuZ3RoOyBqKyspIHsKKwkJaWYgKHBjZXJ0c1tpXS48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIG1ldGhvZCAnZXF1YWxzKGphdmEuc2VjdXJpdHkuY2VydC5DZXJ0aWZpY2F0ZSknIj5lcXVhbHM8L2Vycm9yPihjZXJ0c1tqXSkpIHsKKwkJICAgIG1hdGNoID0gdHJ1ZTsKKwkJICAgIGJyZWFrOworCQl9CisJICAgIH0KKwkgICAgaWYgKCFtYXRjaCkgcmV0dXJuIGZhbHNlOworCX0KKworCXJldHVybiB0cnVlOworICAgIH0KKworICAgIC8qKgorICAgICAqIExpbmtzIHRoZSBzcGVjaWZpZWQgY2xhc3MuCisgICAgICogVGhpcyAobWlzbGVhZGluZ2x5IG5hbWVkKSBtZXRob2QgbWF5IGJlIHVzZWQgYnkgYSBjbGFzcyBsb2FkZXIgdG8KKyAgICAgKiBsaW5rIGEgY2xhc3MuIElmIHRoZSBjbGFzcyA8Y29kZT5jPC9jb2RlPiBoYXMgYWxyZWFkeSBiZWVuIGxpbmtlZCwKKyAgICAgKiB0aGVuIHRoaXMgbWV0aG9kIHNpbXBseSByZXR1cm5zLiBPdGhlcndpc2UsIHRoZSBjbGFzcyBpcyBsaW5rZWQKKyAgICAgKiBhcyBkZXNjcmliZWQgaW4gdGhlICJFeGVjdXRpb24iIGNoYXB0ZXIgb2YgdGhlIDxpPkphdmEgTGFuZ3VhZ2UKKyAgICAgKiBTcGVjaWZpY2F0aW9uPC9pPi4KKyAgICAgKgorICAgICAqIEBwYXJhbSBjIHRoZSBjbGFzcyB0byBsaW5rCisgICAgICogQGV4Y2VwdGlvbiBOdWxsUG9pbnRlckV4Y2VwdGlvbiBpZiA8Y29kZT5jPC9jb2RlPiBpcyA8Y29kZT5udWxsPC9jb2RlPi4KKyAgICAgKiBAc2VlICAgamF2YS5sYW5nLkNsYXNzTG9hZGVyI2RlZmluZUNsYXNzKGphdmEubGFuZy5TdHJpbmcsYnl0ZVtdLGludCxpbnQpCisgICAgICovCisgICAgcHJvdGVjdGVkIGZpbmFsIHZvaWQgcmVzb2x2ZUNsYXNzKENsYXNzIGMpIHsKKwljaGVjaygpOworCXJlc29sdmVDbGFzczAoYyk7CisgICAgfQorCisgICAgLyoqCisgICAgICogRmluZHMgYSBjbGFzcyB3aXRoIHRoZSBzcGVjaWZpZWQgbmFtZSwgbG9hZGluZyBpdCBpZiBuZWNlc3NhcnkuPHA+CisgICAgICoKKyAgICAgKiBQcmlvciB0byB0aGUgSmF2YSAyIFNESywgdGhpcyBtZXRob2QgbG9hZHMgYSBjbGFzcyBmcm9tIHRoZSBsb2NhbCBmaWxlCisgICAgICogc3lzdGVtIGluIGEgcGxhdGZvcm0tZGVwZW5kZW50IG1hbm5lciwgYW5kIHJldHVybnMgYSBjbGFzcyBvYmplY3QKKyAgICAgKiB0aGF0IGhhcyBubyBhc3NvY2lhdGVkIGNsYXNzIGxvYWRlci48cD4KKyAgICAgKgorICAgICAqIFNpbmNlIHRoZSBKYXZhIDIgU0RLIHYxLjIsIHRoaXMgbWV0aG9kIGxvYWRzIHRoZSBjbGFzcyB0aHJvdWdoIHRoZQorICAgICAqIHN5c3RlbSBjbGFzcyBsb2FkZXIoc2VlIHtAbGluayAjZ2V0U3lzdGVtQ2xhc3NMb2FkZXIoKX0pLiAgQ2xhc3Mgb2JqZWN0cworICAgICAqIHJldHVybmVkIG1pZ2h0IGhhdmUgPGNvZGU+Q2xhc3NMb2FkZXI8L2NvZGU+cyBhc3NvY2lhdGVkIHdpdGggdGhlbS4KKyAgICAgKiBTdWJjbGFzc2VzIG9mIDxjb2RlPkNsYXNzTG9hZGVyPC9jb2RlPiBuZWVkIG5vdCB1c3VhbGx5IGNhbGwgdGhpcworICAgICAqIG1ldGhvZCwgYmVjYXVzZSBtb3N0IGNsYXNzIGxvYWRlcnMgbmVlZCB0byBvdmVycmlkZSBqdXN0IHtAbGluaworICAgICAqICNmaW5kQ2xhc3MoU3RyaW5nKX0uPHA+CisgICAgICoKKyAgICAgKiBAcGFyYW0gICAgIG5hbWUgdGhlIG5hbWUgb2YgdGhlIGNsYXNzIHRoYXQgaXMgdG8gYmUgZm91bmQKKyAgICAgKiBAcmV0dXJuIHRoZSA8Y29kZT5DbGFzczwvY29kZT4gb2JqZWN0IGZvciB0aGUgc3BlY2lmaWVkCisgICAgICogPGNvZGU+bmFtZTwvY29kZT4KKyAgICAgKiBAZXhjZXB0aW9uIENsYXNzTm90Rm91bmRFeGNlcHRpb24gaWYgdGhlIGNsYXNzIGNvdWxkIG5vdCBiZSBmb3VuZAorICAgICAqIEBzZWUgICAgICAgI0NsYXNzTG9hZGVyKENsYXNzTG9hZGVyKQorICAgICAqIEBzZWUgICAgICAgI2dldFBhcmVudCgpCisgICAgICovCisgICAgcHJvdGVjdGVkIGZpbmFsIENsYXNzIGZpbmRTeXN0ZW1DbGFzcyhTdHJpbmcgbmFtZSkKKwl0aHJvd3MgQ2xhc3NOb3RGb3VuZEV4Y2VwdGlvbgorICAgIHsKKwljaGVjaygpOworCUNsYXNzTG9hZGVyIHN5c3RlbSA9IGdldFN5c3RlbUNsYXNzTG9hZGVyKCk7CisJaWYgKHN5c3RlbSA9PSBudWxsKSB7CisJICAgIHJldHVybiBmaW5kQm9vdHN0cmFwQ2xhc3MobmFtZSk7CisJfQorCXJldHVybiBzeXN0ZW0ubG9hZENsYXNzKG5hbWUpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybnMgdGhlIHBhcmVudCBjbGFzcyBsb2FkZXIgZm9yIGRlbGVnYXRpb24uIFNvbWUgaW1wbGVtZW50YXRpb25zCisgICAgICogbWF5IHVzZSA8Y29kZT5udWxsPC9jb2RlPiB0byByZXByZXNlbnQgdGhlIGJvb3RzdHJhcCBjbGFzcworICAgICAqIGxvYWRlci4gVGhpcyBtZXRob2Qgd2lsbCByZXR1cm4gPGNvZGU+bnVsbDwvY29kZT4gaW4gc3VjaAorICAgICAqIGltcGxlbWVudGF0aW9ucyBpZiB0aGlzIGNsYXNzIGxvYWRlcidzIHBhcmVudCBpcyB0aGUgYm9vdHN0cmFwCisgICAgICogY2xhc3MgbG9hZGVyLgorICAgICAqIDxwPgorICAgICAqIElmIGEgc2VjdXJpdHkgbWFuYWdlciBpcyBwcmVzZW50LCBhbmQgdGhlIGNhbGxlcidzIGNsYXNzIGxvYWRlciBpcworICAgICAqIG5vdCBudWxsIGFuZCBpcyBub3QgYW4gYW5jZXN0b3Igb2YgdGhpcyBjbGFzcyBsb2FkZXIsIHRoZW4KKyAgICAgKiB0aGlzIG1ldGhvZCBjYWxscyB0aGUgc2VjdXJpdHkgbWFuYWdlcidzIDxjb2RlPmNoZWNrUGVybWlzc2lvbjwvY29kZT4KKyAgICAgKiBtZXRob2Qgd2l0aCBhIDxjb2RlPlJ1bnRpbWVQZXJtaXNzaW9uKCJnZXRDbGFzc0xvYWRlciIpPC9jb2RlPgorICAgICAqIHBlcm1pc3Npb24gdG8gZW5zdXJlIGl0J3Mgb2sgdG8gYWNjZXNzIHRoZSBwYXJlbnQgY2xhc3MgbG9hZGVyLgorICAgICAqIElmIG5vdCwgYSA8Y29kZT5TZWN1cml0eUV4Y2VwdGlvbjwvY29kZT4gd2lsbCBiZSB0aHJvd24uCisgICAgICoKKyAgICAgKiBAcmV0dXJuIHRoZSBwYXJlbnQgPGNvZGU+Q2xhc3NMb2FkZXI8L2NvZGU+CisgICAgICogQHRocm93cyBTZWN1cml0eUV4Y2VwdGlvbgorICAgICAqICAgIGlmIGEgc2VjdXJpdHkgbWFuYWdlciBleGlzdHMgYW5kIGl0cworICAgICAqICAgIDxjb2RlPmNoZWNrUGVybWlzc2lvbjwvY29kZT4gbWV0aG9kIGRvZXNuJ3QgYWxsb3cKKyAgICAgKiAgICBhY2Nlc3MgdG8gdGhpcyBjbGFzcyBsb2FkZXIncyBwYXJlbnQgY2xhc3MgbG9hZGVyLgorICAgICAqCisgICAgICogQHNlZSBTZWN1cml0eU1hbmFnZXIjY2hlY2tQZXJtaXNzaW9uCisgICAgICogQHNlZSBqYXZhLmxhbmcuUnVudGltZVBlcm1pc3Npb24KKyAgICAgKgorICAgICAqIEBzaW5jZSAxLjIKKyAgICAgKi8KKyAgICBwdWJsaWMgZmluYWwgQ2xhc3NMb2FkZXIgZ2V0UGFyZW50KCkgeworCWlmIChwYXJlbnQgPT0gbnVsbCkKKwkgICAgcmV0dXJuIG51bGw7CisJPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ1NlY3VyaXR5TWFuYWdlciciPlNlY3VyaXR5TWFuYWdlcjwvZXJyb3I+IHNtID0gU3lzdGVtLmdldFNlY3VyaXR5TWFuYWdlcigpOworCWlmIChzbSAhPSBudWxsKSB7CisJICAgIENsYXNzTG9hZGVyIGNjbCA9IGdldENhbGxlckNsYXNzTG9hZGVyKCk7CisJICAgIGlmIChjY2wgIT0gbnVsbCAmJiAhaXNBbmNlc3RvcihjY2wpKSB7CisJCXNtLjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgbWV0aG9kICdjaGVja1Blcm1pc3Npb24oUnVudGltZVBlcm1pc3Npb24pJyI+Y2hlY2tQZXJtaXNzaW9uPC9lcnJvcj4oZ2V0R2V0Q2xhc3NMb2FkZXJQZXJtKCkpOworCSAgICB9CisJfQorCXJldHVybiBwYXJlbnQ7CisgICAgfQorCisgICAgLyoqCisgICAgICogU2V0cyB0aGUgc2lnbmVycyBvZiBhIGNsYXNzLiBUaGlzIHNob3VsZCBiZSBjYWxsZWQgYWZ0ZXIgZGVmaW5pbmcgYQorICAgICAqIGNsYXNzLgorICAgICAqCisgICAgICogQHBhcmFtIGMgdGhlIDxjb2RlPkNsYXNzPC9jb2RlPiBvYmplY3QKKyAgICAgKiBAcGFyYW0gc2lnbmVycyB0aGUgc2lnbmVycyBmb3IgdGhlIGNsYXNzCisgICAgICogQHNpbmNlIEpESzEuMQorICAgICAqLworICAgIHByb3RlY3RlZCBmaW5hbCB2b2lkIHNldFNpZ25lcnMoQ2xhc3MgYywgT2JqZWN0W10gc2lnbmVycykgeworICAgICAgICBjaGVjaygpOworCWMuPGVycm9yIGRlc2NyPSInc2V0U2lnbmVycyhqYXZhLmxhbmcuT2JqZWN0W10pJyBpcyBub3QgcHVibGljIGluICdqYXZhLmxhbmcuQ2xhc3MnLiBDYW5ub3QgYmUgYWNjZXNzZWQgZnJvbSBvdXRzaWRlIHBhY2thZ2UiPnNldFNpZ25lcnM8L2Vycm9yPihzaWduZXJzKTsKKyAgICB9CisKKyAgICBwcml2YXRlIENsYXNzIGZpbmRCb290c3RyYXBDbGFzczAoU3RyaW5nIG5hbWUpCisJdGhyb3dzIENsYXNzTm90Rm91bmRFeGNlcHRpb24geworCWNoZWNrKCk7CisJcmV0dXJuIGZpbmRCb290c3RyYXBDbGFzcyhuYW1lKTsKKyAgICB9CisKKyAgICBwcml2YXRlIG5hdGl2ZSBDbGFzcyBkZWZpbmVDbGFzczAoU3RyaW5nIG5hbWUsIGJ5dGVbXSBiLCBpbnQgb2ZmLCBpbnQgbGVuLAorCTxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdQcm90ZWN0aW9uRG9tYWluJyI+UHJvdGVjdGlvbkRvbWFpbjwvZXJyb3I+IHBkKTsKKyAgICBwcml2YXRlIG5hdGl2ZSB2b2lkIHJlc29sdmVDbGFzczAoQ2xhc3MgYyk7CisgICAgcHJpdmF0ZSBuYXRpdmUgQ2xhc3MgZmluZEJvb3RzdHJhcENsYXNzKFN0cmluZyBuYW1lKQorCXRocm93cyBDbGFzc05vdEZvdW5kRXhjZXB0aW9uOworCisgICAgLyoKKyAgICAgKiBDaGVjayB0byBtYWtlIHN1cmUgdGhlIGNsYXNzIGxvYWRlciBoYXMgYmVlbiBpbml0aWFsaXplZC4KKyAgICAgKi8KKyAgICBwcml2YXRlIHZvaWQgY2hlY2soKSB7CisJaWYgKCFpbml0aWFsaXplZCkgeworCSAgICB0aHJvdyBuZXcgPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ1NlY3VyaXR5RXhjZXB0aW9uJyI+U2VjdXJpdHlFeGNlcHRpb248L2Vycm9yPigiQ2xhc3NMb2FkZXIgb2JqZWN0IG5vdCBpbml0aWFsaXplZCIpOworCX0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBGaW5kcyB0aGUgY2xhc3Mgd2l0aCB0aGUgZ2l2ZW4gbmFtZSBpZiBpdCBoYWQgYmVlbiBwcmV2aW91c2x5IGxvYWRlZAorICAgICAqIHRocm91Z2ggdGhpcyBjbGFzcyBsb2FkZXIuCisgICAgICoKKyAgICAgKiBAcGFyYW0gIG5hbWUgdGhlIGNsYXNzIG5hbWUKKyAgICAgKiBAcmV0dXJuIHRoZSA8Y29kZT5DbGFzczwvY29kZT4gb2JqZWN0LCBvciA8Y29kZT5udWxsPC9jb2RlPiBpZgorICAgICAqICAgICAgICAgdGhlIGNsYXNzIGhhcyBub3QgYmVlbiBsb2FkZWQKKyAgICAgKiBAc2luY2UgIEpESzEuMQorICAgICAqLworICAgIHByb3RlY3RlZCBuYXRpdmUgZmluYWwgQ2xhc3MgZmluZExvYWRlZENsYXNzKFN0cmluZyBuYW1lKTsKKworICAgIC8qKgorICAgICAqIEZpbmRzIHRoZSByZXNvdXJjZSB3aXRoIHRoZSBnaXZlbiBuYW1lLiBBIHJlc291cmNlIGlzIHNvbWUgZGF0YQorICAgICAqIChpbWFnZXMsIGF1ZGlvLCB0ZXh0LCBldGMpIHRoYXQgY2FuIGJlIGFjY2Vzc2VkIGJ5IGNsYXNzIGNvZGUgaW4gYSB3YXkKKyAgICAgKiB0aGF0IGlzIGluZGVwZW5kZW50IG9mIHRoZSBsb2NhdGlvbiBvZiB0aGUgY29kZS48cD4KKyAgICAgKgorICAgICAqIFRoZSBuYW1lIG9mIGEgcmVzb3VyY2UgaXMgYSAiLyItc2VwYXJhdGVkIHBhdGggbmFtZSB0aGF0IGlkZW50aWZpZXMKKyAgICAgKiB0aGUgcmVzb3VyY2UuPHA+CisgICAgICoKKyAgICAgKiBUaGlzIG1ldGhvZCB3aWxsIGZpcnN0IHNlYXJjaCB0aGUgcGFyZW50IGNsYXNzIGxvYWRlciBmb3IgdGhlIHJlc291cmNlOworICAgICAqIGlmIHRoZSBwYXJlbnQgaXMgPGNvZGU+bnVsbDwvY29kZT4gdGhlIHBhdGggb2YgdGhlIGNsYXNzIGxvYWRlcgorICAgICAqIGJ1aWx0LWluIHRvIHRoZSB2aXJ0dWFsIG1hY2hpbmUgaXMgc2VhcmNoZWQuICBUaGF0IGZhaWxpbmcsIHRoaXMgbWV0aG9kCisgICAgICogd2lsbCBjYWxsIDxjb2RlPmZpbmRSZXNvdXJjZTwvY29kZT4gdG8gZmluZCB0aGUgcmVzb3VyY2UuPHA+CisgICAgICoKKyAgICAgKiBAcGFyYW0gIG5hbWUgcmVzb3VyY2UgbmFtZQorICAgICAqIEByZXR1cm4gYSBVUkwgZm9yIHJlYWRpbmcgdGhlIHJlc291cmNlLCBvciA8Y29kZT5udWxsPC9jb2RlPiBpZgorICAgICAqICAgICAgICAgdGhlIHJlc291cmNlIGNvdWxkIG5vdCBiZSBmb3VuZCBvciB0aGUgY2FsbGVyIGRvZXNuJ3QgaGF2ZQorICAgICAqICAgICAgICAgYWRlcXVhdGUgcHJpdmlsZWdlcyB0byBnZXQgdGhlIHJlc291cmNlLgorICAgICAqIEBzaW5jZSAgSkRLMS4xCisgICAgICogQHNlZSAjZmluZFJlc291cmNlKFN0cmluZykKKyAgICAgKi8KKyAgICBwdWJsaWMgVVJMIGdldFJlc291cmNlKFN0cmluZyBuYW1lKSB7CisJVVJMIHVybDsKKwlpZiAocGFyZW50ICE9IG51bGwpIHsKKwkgICAgdXJsID0gcGFyZW50LmdldFJlc291cmNlKG5hbWUpOworCX0gZWxzZSB7CisJICAgIHVybCA9IGdldEJvb3RzdHJhcFJlc291cmNlKG5hbWUpOworCX0KKwlpZiAodXJsID09IG51bGwpIHsKKwkgICAgdXJsID0gZmluZFJlc291cmNlKG5hbWUpOworCX0KKwlyZXR1cm4gdXJsOworICAgIH0KKworICAgIC8qKgorICAgICAqIEZpbmRzIGFsbCB0aGUgcmVzb3VyY2VzIHdpdGggdGhlIGdpdmVuIG5hbWUuIEEgcmVzb3VyY2UgaXMgc29tZSBkYXRhCisgICAgICogKGltYWdlcywgYXVkaW8sIHRleHQsIGV0YykgdGhhdCBjYW4gYmUgYWNjZXNzZWQgYnkgY2xhc3MgY29kZSBpbiBhIHdheQorICAgICAqIHRoYXQgaXMgaW5kZXBlbmRlbnQgb2YgdGhlIGxvY2F0aW9uIG9mIHRoZSBjb2RlLjxwPgorICAgICAqCisgICAgICogVGhlIG5hbWUgb2YgYSByZXNvdXJjZSBpcyBhICIvIi1zZXBhcmF0ZWQgcGF0aCBuYW1lIHRoYXQgaWRlbnRpZmllcyB0aGUKKyAgICAgKiByZXNvdXJjZS48cD4KKyAgICAgKgorICAgICAqIFRoZSBzZWFyY2ggb3JkZXIgaXMgZGVzY3JpYmVkIGluIHRoZSBkb2N1bWVudGF0aW9uIGZvciB7QGxpbmsKKyAgICAgKiAjZ2V0UmVzb3VyY2UoU3RyaW5nKX0uPHA+CisgICAgICoKKyAgICAgKiBAcGFyYW0gIG5hbWUgcmVzb3VyY2UgbmFtZQorICAgICAqIEByZXR1cm4gYW4gZW51bWVyYXRpb24gb2YgVVJMIHRvIHRoZSByZXNvdXJjZS4gSWYgbm8gcmVzb3VyY2VzIGNvdWxkCisgICAgICogICAgICAgICBiZSBmb3VuZCwgdGhlIGVudW1lcmF0aW9uIHdpbGwgYmUgZW1wdHkuIFJlc291cmNlcyB0aGF0IHRoZQorICAgICAqICAgICAgICAgZG9lc24ndCBoYXZlIGFjY2VzcyB0byB3aWxsIG5vdCBiZSBpbiB0aGUgZW51bWVyYXRpb24uCisgICAgICogQHRocm93cyBJT0V4Y2VwdGlvbiBpZiBJL08gZXJyb3JzIG9jY3VyCisgICAgICogQHNpbmNlICAxLjIKKyAgICAgKiBAc2VlICAgICNnZXRSZXNvdXJjZQorICAgICAqIEBzZWUgI2ZpbmRSZXNvdXJjZXMKKyAgICAgKi8KKyAgICBwdWJsaWMgZmluYWwgRW51bWVyYXRpb24gZ2V0UmVzb3VyY2VzKFN0cmluZyBuYW1lKSB0aHJvd3MgSU9FeGNlcHRpb24geworCUVudW1lcmF0aW9uW10gdG1wID0gbmV3IEVudW1lcmF0aW9uWzJdOworCWlmIChwYXJlbnQgIT0gbnVsbCkgeworCSAgICB0bXBbMF0gPSBwYXJlbnQuZ2V0UmVzb3VyY2VzKG5hbWUpOworCX0gZWxzZSB7CisJICAgIHRtcFswXSA9IGdldEJvb3RzdHJhcFJlc291cmNlcyhuYW1lKTsKKwl9CisJdG1wWzFdID0gZmluZFJlc291cmNlcyhuYW1lKTsKKworCXJldHVybiBuZXcgPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ0NvbXBvdW5kRW51bWVyYXRpb24nIj5Db21wb3VuZEVudW1lcmF0aW9uPC9lcnJvcj4odG1wKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIGFuIEVudW1lcmF0aW9uIG9mIFVSTHMgcmVwcmVzZW50aW5nIGFsbCB0aGUgcmVzb3VyY2VzIHdpdGgKKyAgICAgKiB0aGUgZ2l2ZW4gbmFtZS4gQ2xhc3MgbG9hZGVyIGltcGxlbWVudGF0aW9ucyBzaG91bGQgb3ZlcnJpZGUgdGhpcworICAgICAqIG1ldGhvZCB0byBzcGVjaWZ5IHdoZXJlIHRvIGxvYWQgcmVzb3VyY2VzIGZyb20uCisgICAgICoKKyAgICAgKiBAcGFyYW0gIG5hbWUgdGhlIHJlc291cmNlIG5hbWUKKyAgICAgKiBAcmV0dXJuIGFuIEVudW1lcmF0aW9uIG9mIFVSTHMgZm9yIHRoZSByZXNvdXJjZXMKKyAgICAgKiBAdGhyb3dzIElPRXhjZXB0aW9uIGlmIEkvTyBlcnJvcnMgb2NjdXIKKyAgICAgKiBAc2luY2UgIDEuMgorICAgICAqLworICAgIHByb3RlY3RlZCBFbnVtZXJhdGlvbiBmaW5kUmVzb3VyY2VzKFN0cmluZyBuYW1lKSB0aHJvd3MgSU9FeGNlcHRpb24geworCXJldHVybiBuZXcgPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ0NvbXBvdW5kRW51bWVyYXRpb24nIj5Db21wb3VuZEVudW1lcmF0aW9uPC9lcnJvcj4obmV3IEVudW1lcmF0aW9uWzBdKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBGaW5kcyB0aGUgcmVzb3VyY2Ugd2l0aCB0aGUgZ2l2ZW4gbmFtZS4gQ2xhc3MgbG9hZGVyCisgICAgICogaW1wbGVtZW50YXRpb25zIHNob3VsZCBvdmVycmlkZSB0aGlzIG1ldGhvZCB0byBzcGVjaWZ5IHdoZXJlIHRvCisgICAgICogZmluZCByZXNvdXJjZXMuCisgICAgICoKKyAgICAgKiBAcGFyYW0gIG5hbWUgdGhlIHJlc291cmNlIG5hbWUKKyAgICAgKiBAcmV0dXJuIGEgVVJMIGZvciByZWFkaW5nIHRoZSByZXNvdXJjZSwgb3IgPGNvZGU+bnVsbDwvY29kZT4KKyAgICAgKiAgICAgICAgIGlmIHRoZSByZXNvdXJjZSBjb3VsZCBub3QgYmUgZm91bmQKKyAgICAgKiBAc2luY2UgIDEuMgorICAgICAqLworICAgIHByb3RlY3RlZCBVUkwgZmluZFJlc291cmNlKFN0cmluZyBuYW1lKSB7CisJcmV0dXJuIG51bGw7CisgICAgfQorCisgICAgLyoqCisgICAgICogRmluZCBhIHJlc291cmNlIG9mIHRoZSBzcGVjaWZpZWQgbmFtZSBmcm9tIHRoZSBzZWFyY2ggcGF0aCB1c2VkIHRvIGxvYWQKKyAgICAgKiBjbGFzc2VzLjxwPgorICAgICAqCisgICAgICogSW4gSkRLMS4xLCB0aGUgc2VhcmNoIHBhdGggdXNlZCBpcyB0aGF0IG9mIHRoZSB2aXJ0dWFsIG1hY2hpbmUncworICAgICAqIGJ1aWx0LWluIGNsYXNzIGxvYWRlci48cD4KKyAgICAgKgorICAgICAqIFNpbmNlIHRoZSBKYXZhIDIgU0RLIHYxLjIsIHRoaXMgbWV0aG9kIGxvY2F0ZXMgdGhlIHJlc291cmNlIHRocm91Z2ggdGhlIHN5c3RlbSBjbGFzcworICAgICAqIGxvYWRlciAoc2VlIHtAbGluayAjZ2V0U3lzdGVtQ2xhc3NMb2FkZXIoKX0pLgorICAgICAqCisgICAgICogQHBhcmFtICBuYW1lIHRoZSByZXNvdXJjZSBuYW1lCisgICAgICogQHJldHVybiBhIFVSTCBmb3IgcmVhZGluZyB0aGUgcmVzb3VyY2UsIG9yIDxjb2RlPm51bGw8L2NvZGU+IGlmCisgICAgICogICAgICAgICB0aGUgcmVzb3VyY2UgY291bGQgbm90IGJlIGZvdW5kCisgICAgICogQHNpbmNlIEpESzEuMQorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgVVJMIGdldFN5c3RlbVJlc291cmNlKFN0cmluZyBuYW1lKSB7CisJQ2xhc3NMb2FkZXIgc3lzdGVtID0gZ2V0U3lzdGVtQ2xhc3NMb2FkZXIoKTsKKwlpZiAoc3lzdGVtID09IG51bGwpIHsKKwkgICAgcmV0dXJuIGdldEJvb3RzdHJhcFJlc291cmNlKG5hbWUpOworCX0KKwlyZXR1cm4gc3lzdGVtLmdldFJlc291cmNlKG5hbWUpOworICAgIH0KKworICAgIC8qKgorICAgICAqIEZpbmQgcmVzb3VyY2VzIGZyb20gdGhlIFZNJ3MgYnVpbHQtaW4gY2xhc3Nsb2FkZXIuCisgICAgICovCisgICAgcHJpdmF0ZSBzdGF0aWMgVVJMIGdldEJvb3RzdHJhcFJlc291cmNlKFN0cmluZyBuYW1lKSB7CisJPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ1VSTENsYXNzUGF0aCciPlVSTENsYXNzUGF0aDwvZXJyb3I+IHVjcCA9IGdldEJvb3RzdHJhcENsYXNzUGF0aCgpOworCTxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdSZXNvdXJjZSciPlJlc291cmNlPC9lcnJvcj4gcmVzID0gdWNwLjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgbWV0aG9kICdnZXRSZXNvdXJjZShqYXZhLmxhbmcuU3RyaW5nKSciPmdldFJlc291cmNlPC9lcnJvcj4obmFtZSk7CisJcmV0dXJuIHJlcyAhPSBudWxsID8gcmVzLjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgbWV0aG9kICdnZXRVUkwoKSciPmdldFVSTDwvZXJyb3I+KCkgOiBudWxsOworICAgIH0KKworICAgIC8qKgorICAgICAqIEZpbmRzIGFsbCByZXNvdXJjZXMgb2YgdGhlIHNwZWNpZmllZCBuYW1lIGZyb20gdGhlIHNlYXJjaCBwYXRoIHVzZWQgdG8KKyAgICAgKiBsb2FkIGNsYXNzZXMuIFRoZSByZXNvdXJjZXMgdGh1cyBmb3VuZCBhcmUgcmV0dXJuZWQgYXMgYW4KKyAgICAgKiA8Y29kZT5FbnVtZXJhdGlvbjwvY29kZT4gb2YgPGNvZGU+VVJMPC9jb2RlPiBvYmplY3RzLiA8cD4KKyAgICAgKgorICAgICAqIFRoZSBzZWFyY2ggb3JkZXIgaXMgZGVzY3JpYmVkIGluIHRoZSBkb2N1bWVudGF0aW9uIGZvciB7QGxpbmsKKyAgICAgKiAjZ2V0U3lzdGVtUmVzb3VyY2UoU3RyaW5nKX0uIDxwPgorICAgICAqCisgICAgICogQHBhcmFtICBuYW1lIHRoZSByZXNvdXJjZSBuYW1lCisgICAgICogQHJldHVybiBhbiBlbnVtZXJhdGlvbiBvZiByZXNvdXJjZSBVUkxzCisgICAgICogQHRocm93cyBJT0V4Y2VwdGlvbiBpZiBJL08gZXJyb3JzIG9jY3VyCisgICAgICogQHNpbmNlIDEuMgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgRW51bWVyYXRpb24gZ2V0U3lzdGVtUmVzb3VyY2VzKFN0cmluZyBuYW1lKQorCXRocm93cyBJT0V4Y2VwdGlvbgorICAgIHsKKwlDbGFzc0xvYWRlciBzeXN0ZW0gPSBnZXRTeXN0ZW1DbGFzc0xvYWRlcigpOworCWlmIChzeXN0ZW0gPT0gbnVsbCkgeworCSAgICByZXR1cm4gZ2V0Qm9vdHN0cmFwUmVzb3VyY2VzKG5hbWUpOworCX0KKwlyZXR1cm4gc3lzdGVtLmdldFJlc291cmNlcyhuYW1lKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBGaW5kIHJlc291cmNlcyBmcm9tIHRoZSBWTSdzIGJ1aWx0LWluIGNsYXNzbG9hZGVyLgorICAgICAqLworICAgIHByaXZhdGUgc3RhdGljIEVudW1lcmF0aW9uIGdldEJvb3RzdHJhcFJlc291cmNlcyhTdHJpbmcgbmFtZSkKKwl0aHJvd3MgSU9FeGNlcHRpb24KKyAgICB7CisJZmluYWwgRW51bWVyYXRpb24gZSA9IGdldEJvb3RzdHJhcENsYXNzUGF0aCgpLjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgbWV0aG9kICdnZXRSZXNvdXJjZXMoamF2YS5sYW5nLlN0cmluZyknIj5nZXRSZXNvdXJjZXM8L2Vycm9yPihuYW1lKTsKKwlyZXR1cm4gbmV3IEVudW1lcmF0aW9uICgpIHsKKwkgICAgcHVibGljIE9iamVjdCBuZXh0RWxlbWVudCgpIHsKKwkJcmV0dXJuICgoPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ1Jlc291cmNlJyI+UmVzb3VyY2U8L2Vycm9yPillLm5leHRFbGVtZW50KCkpLmdldFVSTCgpOworCSAgICB9CisJICAgIHB1YmxpYyBib29sZWFuIGhhc01vcmVFbGVtZW50cygpIHsKKwkJcmV0dXJuIGUuaGFzTW9yZUVsZW1lbnRzKCk7CisJICAgIH0KKwl9OworICAgIH0KKworICAgIC8qCisgICAgICogUmV0dXJucyB0aGUgVVJMQ2xhc3NQYXRoIHRoYXQgaXMgdXNlZCBmb3IgZmluZGluZyBzeXN0ZW0gcmVzb3VyY2VzLgorICAgICAqLworICAgIHN0YXRpYyA8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnVVJMQ2xhc3NQYXRoJyI+VVJMQ2xhc3NQYXRoPC9lcnJvcj4gZ2V0Qm9vdHN0cmFwQ2xhc3NQYXRoKCkgeworCWlmIChib290c3RyYXBDbGFzc1BhdGggPT0gbnVsbCkgeworCSAgICBib290c3RyYXBDbGFzc1BhdGggPSA8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnc3VuJyI+c3VuPC9lcnJvcj4ubWlzYy5MYXVuY2hlci5nZXRCb290c3RyYXBDbGFzc1BhdGgoKTsKKwl9CisJcmV0dXJuIGJvb3RzdHJhcENsYXNzUGF0aDsKKyAgICB9CisKKyAgICBwcml2YXRlIHN0YXRpYyA8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnVVJMQ2xhc3NQYXRoJyI+VVJMQ2xhc3NQYXRoPC9lcnJvcj4gYm9vdHN0cmFwQ2xhc3NQYXRoOworCisgICAgLyoqCisgICAgICogUmV0dXJucyBhbiBpbnB1dCBzdHJlYW0gZm9yIHJlYWRpbmcgdGhlIHNwZWNpZmllZCByZXNvdXJjZS4KKyAgICAgKgorICAgICAqIFRoZSBzZWFyY2ggb3JkZXIgaXMgZGVzY3JpYmVkIGluIHRoZSBkb2N1bWVudGF0aW9uIGZvciB7QGxpbmsKKyAgICAgKiAjZ2V0UmVzb3VyY2UoU3RyaW5nKX0uPHA+CisgICAgICoKKyAgICAgKiBAcGFyYW0gIG5hbWUgdGhlIHJlc291cmNlIG5hbWUKKyAgICAgKiBAcmV0dXJuIGFuIGlucHV0IHN0cmVhbSBmb3IgcmVhZGluZyB0aGUgcmVzb3VyY2UsIG9yIDxjb2RlPm51bGw8L2NvZGU+CisgICAgICogICAgICAgICBpZiB0aGUgcmVzb3VyY2UgY291bGQgbm90IGJlIGZvdW5kCisgICAgICogQHNpbmNlICBKREsxLjEKKyAgICAgKi8KKyAgICBwdWJsaWMgSW5wdXRTdHJlYW0gZ2V0UmVzb3VyY2VBc1N0cmVhbShTdHJpbmcgbmFtZSkgeworCVVSTCB1cmwgPSBnZXRSZXNvdXJjZShuYW1lKTsKKwl0cnkgeworCSAgICByZXR1cm4gdXJsICE9IG51bGwgPyB1cmwub3BlblN0cmVhbSgpIDogbnVsbDsKKwl9IGNhdGNoIChJT0V4Y2VwdGlvbiBlKSB7CisJICAgIHJldHVybiBudWxsOworCX0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBPcGVuIGZvciByZWFkaW5nLCBhIHJlc291cmNlIG9mIHRoZSBzcGVjaWZpZWQgbmFtZSBmcm9tIHRoZSBzZWFyY2ggcGF0aAorICAgICAqIHVzZWQgdG8gbG9hZCBjbGFzc2VzLjxwPgorICAgICAqCisgICAgICogVGhlIHNlYXJjaCBvcmRlciBpcyBkZXNjcmliZWQgaW4gdGhlIGRvY3VtZW50YXRpb24gZm9yIHtAbGluaworICAgICAqICNnZXRTeXN0ZW1SZXNvdXJjZShTdHJpbmcpfS4gPHA+CisgICAgICoKKyAgICAgKiBAcGFyYW0gIG5hbWUgdGhlIHJlc291cmNlIG5hbWUKKyAgICAgKiBAcmV0dXJuIGFuIGlucHV0IHN0cmVhbSBmb3IgcmVhZGluZyB0aGUgcmVzb3VyY2UsIG9yIDxjb2RlPm51bGw8L2NvZGU+CisgICAgICogCSAgICAgICBpZiB0aGUgcmVzb3VyY2UgY291bGQgbm90IGJlIGZvdW5kCisgICAgICogQHNpbmNlIEpESzEuMQorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgSW5wdXRTdHJlYW0gZ2V0U3lzdGVtUmVzb3VyY2VBc1N0cmVhbShTdHJpbmcgbmFtZSkgeworCVVSTCB1cmwgPSBnZXRTeXN0ZW1SZXNvdXJjZShuYW1lKTsKKwl0cnkgeworCSAgICByZXR1cm4gdXJsICE9IG51bGwgPyB1cmwub3BlblN0cmVhbSgpIDogbnVsbDsKKwl9IGNhdGNoIChJT0V4Y2VwdGlvbiBlKSB7CisJICAgIHJldHVybiBudWxsOworCX0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIHRoZSBzeXN0ZW0gY2xhc3MgbG9hZGVyIGZvciBkZWxlZ2F0aW9uLiBUaGlzIGlzIHRoZSBkZWZhdWx0CisgICAgICogZGVsZWdhdGlvbiBwYXJlbnQgZm9yIG5ldyA8Y29kZT5DbGFzc0xvYWRlcjwvY29kZT4gaW5zdGFuY2VzLCBhbmQKKyAgICAgKiBpcyB0eXBpY2FsbHkgdGhlIGNsYXNzIGxvYWRlciB1c2VkIHRvIHN0YXJ0IHRoZSBhcHBsaWNhdGlvbi4KKyAgICAgKiA8cD4KKyAgICAgKiBUaGlzIG1ldGhvZCBpcyBmaXJzdCBpbnZva2VkIGVhcmx5IGluIHRoZSBydW50aW1lJ3Mgc3RhcnR1cAorICAgICAqIHNlcXVlbmNlLCBhdCB3aGljaCBwb2ludCBpdCBjcmVhdGVzIHRoZSBzeXN0ZW0gY2xhc3MgbG9hZGVyCisgICAgICogYW5kIHNldHMgaXQgYXMgdGhlIGNvbnRleHQgY2xhc3MgbG9hZGVyIG9mIHRoZSBpbnZva2luZworICAgICAqIDx0dD5UaHJlYWQ8L3R0Pi4KKyAgICAgKiA8cD4KKyAgICAgKiBUaGUgZGVmYXVsdCBzeXN0ZW0gY2xhc3MgbG9hZGVyIGlzIGFuIGltcGxlbWVudGF0aW9uLWRlcGVuZGVudAorICAgICAqIGluc3RhbmNlIG9mIHRoaXMgY2xhc3MuCisgICAgICogPHA+CisgICAgICogSWYgdGhlIHN5c3RlbSBwcm9wZXJ0eSA8dHQ+amF2YS5zeXN0ZW0uY2xhc3MubG9hZGVyPC90dD4gaXMKKyAgICAgKiBkZWZpbmVkIHdoZW4gdGhpcyBtZXRob2QgaXMgZmlyc3QgaW52b2tlZCB0aGVuIHRoZSB2YWx1ZSBvZiB0aGF0CisgICAgICogcHJvcGVydHkgaXMgdGFrZW4gdG8gYmUgdGhlIG5hbWUgb2YgYSBjbGFzcyB0aGF0IHdpbGwgYmUgcmV0dXJuZWQgYXMKKyAgICAgKiB0aGUgc3lzdGVtIGNsYXNzIGxvYWRlci4gVGhlIGNsYXNzIGlzIGxvYWRlZCB1c2luZyB0aGUgZGVmYXVsdCBzeXN0ZW0KKyAgICAgKiBjbGFzcyBsb2FkZXIgYW5kIG11c3QgZGVmaW5lIGEgcHVibGljIGNvbnN0cnVjdG9yIHRoYXQgdGFrZXMgYSBzaW5nbGUKKyAgICAgKiBwYXJhbWV0ZXIgb2YgdHlwZSA8dHQ+Q2xhc3NMb2FkZXI8L3R0PiB3aGljaCBpcyB1c2VkCisgICAgICogYXMgdGhlIGRlbGVnYXRpb24gcGFyZW50LiBBbiBpbnN0YW5jZSBpcyB0aGVuIGNyZWF0ZWQgdXNpbmcgdGhpcworICAgICAqIGNvbnN0cnVjdG9yIHdpdGggdGhlIGRlZmF1bHQgc3lzdGVtIGNsYXNzIGxvYWRlciBhcyB0aGUgcGFyYW1ldGVyLgorICAgICAqIFRoZSByZXN1bHRpbmcgY2xhc3MgbG9hZGVyIGlzIGRlZmluZWQgdG8gYmUgdGhlIHN5c3RlbSBjbGFzcyBsb2FkZXIuCisgICAgICogPHA+CisgICAgICogSWYgYSBzZWN1cml0eSBtYW5hZ2VyIGlzIHByZXNlbnQsIGFuZCB0aGUgY2FsbGVyJ3MgY2xhc3MgbG9hZGVyIGlzCisgICAgICogbm90IG51bGwgYW5kIHRoZSBjYWxsZXIncyBjbGFzcyBsb2FkZXIgaXMgbm90IHRoZSBzYW1lIGFzIG9yIGFuIGFuY2VzdG9yIG9mCisgICAgICogdGhlIHN5c3RlbSBjbGFzcyBsb2FkZXIsIHRoZW4KKyAgICAgKiB0aGlzIG1ldGhvZCBjYWxscyB0aGUgc2VjdXJpdHkgbWFuYWdlcidzIDxjb2RlPmNoZWNrUGVybWlzc2lvbjwvY29kZT4KKyAgICAgKiBtZXRob2Qgd2l0aCBhIDxjb2RlPlJ1bnRpbWVQZXJtaXNzaW9uKCJnZXRDbGFzc0xvYWRlciIpPC9jb2RlPgorICAgICAqIHBlcm1pc3Npb24gdG8gZW5zdXJlIGl0J3Mgb2sgdG8gYWNjZXNzIHRoZSBzeXN0ZW0gY2xhc3MgbG9hZGVyLgorICAgICAqIElmIG5vdCwgYSA8Y29kZT5TZWN1cml0eUV4Y2VwdGlvbjwvY29kZT4gd2lsbCBiZSB0aHJvd24uCisgICAgICoKKyAgICAgKiBAcmV0dXJuIHRoZSBzeXN0ZW0gPGNvZGU+Q2xhc3NMb2FkZXI8L2NvZGU+IGZvciBkZWxlZ2F0aW9uLCBvcgorICAgICAqICAgICAgICAgPGNvZGU+bnVsbDwvY29kZT4gaWYgbm9uZQorICAgICAqIEB0aHJvd3MgU2VjdXJpdHlFeGNlcHRpb24KKyAgICAgKiAgICAgICAgaWYgYSBzZWN1cml0eSBtYW5hZ2VyIGV4aXN0cyBhbmQgaXRzCisgICAgICogICAgICAgIDxjb2RlPmNoZWNrUGVybWlzc2lvbjwvY29kZT4gbWV0aG9kIGRvZXNuJ3QgYWxsb3cKKyAgICAgKiAgICAgICAgYWNjZXNzIHRvIHRoZSBzeXN0ZW0gY2xhc3MgbG9hZGVyLgorICAgICAqIEB0aHJvd3MgSWxsZWdhbFN0YXRlRXhjZXB0aW9uCisgICAgICogICAgICAgIGlmIGludm9rZWQgcmVjdXJzaXZlbHkgZHVyaW5nIHRoZSBjb25zdHJ1Y3Rpb24KKyAgICAgKiAgICAgICAgb2YgdGhlIGNsYXNzIGxvYWRlciBzcGVjaWZpZWQgYnkgdGhlCisgICAgICogICAgICAgIDxjb2RlPmphdmEuc3lzdGVtLmNsYXNzLmxvYWRlcjwvY29kZT4gcHJvcGVydHkuCisgICAgICogQHRocm93cyBFcnJvcgorICAgICAqICAgICAgICBpZiB0aGUgc3lzdGVtIHByb3BlcnR5IDx0dD5qYXZhLnN5c3RlbS5jbGFzcy5sb2FkZXI8L3R0PgorICAgICAqICAgICAgICBpcyBkZWZpbmVkIGJ1dCB0aGUgbmFtZWQgY2xhc3MgY291bGQgbm90IGJlIGxvYWRlZCwgdGhlCisgICAgICogICAgICAgIHByb3ZpZGVyIGNsYXNzIGRvZXMgbm90IGRlZmluZSB0aGUgcmVxdWlyZWQgY29uc3RydWN0b3IsIG9yIGFuCisgICAgICogICAgICAgIGV4Y2VwdGlvbiBpcyB0aHJvd24gYnkgdGhhdCBjb25zdHJ1Y3RvciB3aGVuIGl0IGlzIGludm9rZWQuIFRoZQorICAgICAqICAgICAgICB1bmRlcmx5aW5nIGNhdXNlIG9mIHRoZSBlcnJvciBjYW4gYmUgcmV0cmlldmVkIHZpYSB0aGUKKyAgICAgKiAgICAgICAge0BsaW5rIFRocm93YWJsZSNnZXRDYXVzZSgpfSBtZXRob2QuCisgICAgICogQHNlZSBTZWN1cml0eU1hbmFnZXIjY2hlY2tQZXJtaXNzaW9uCisgICAgICogQHNlZSBqYXZhLmxhbmcuUnVudGltZVBlcm1pc3Npb24KKyAgICAgKiBAcmV2aXNlZCAxLjQKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIENsYXNzTG9hZGVyIGdldFN5c3RlbUNsYXNzTG9hZGVyKCkgeworCWluaXRTeXN0ZW1DbGFzc0xvYWRlcigpOworCWlmIChzY2wgPT0gbnVsbCkgeworCSAgICByZXR1cm4gbnVsbDsKKwl9CisJPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ1NlY3VyaXR5TWFuYWdlciciPlNlY3VyaXR5TWFuYWdlcjwvZXJyb3I+IHNtID0gU3lzdGVtLmdldFNlY3VyaXR5TWFuYWdlcigpOworCWlmIChzbSAhPSBudWxsKSB7CisJICAgIENsYXNzTG9hZGVyIGNjbCA9IGdldENhbGxlckNsYXNzTG9hZGVyKCk7CisJICAgIGlmIChjY2wgIT0gbnVsbCAmJiBjY2wgIT0gc2NsICYmICFzY2wuaXNBbmNlc3RvcihjY2wpKSB7CisJCXNtLjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgbWV0aG9kICdjaGVja1Blcm1pc3Npb24oUnVudGltZVBlcm1pc3Npb24pJyI+Y2hlY2tQZXJtaXNzaW9uPC9lcnJvcj4oZ2V0R2V0Q2xhc3NMb2FkZXJQZXJtKCkpOworCSAgICB9CisJfQorCXJldHVybiBzY2w7CisgICAgfQorCisgICAgcHJpdmF0ZSBzdGF0aWMgc3luY2hyb25pemVkIHZvaWQgaW5pdFN5c3RlbUNsYXNzTG9hZGVyKCkgeworCWlmICghc2NsU2V0KSB7CisJICAgIGlmIChzY2wgIT0gbnVsbCkKKwkJdGhyb3cgbmV3IElsbGVnYWxTdGF0ZUV4Y2VwdGlvbigicmVjdXJzaXZlIGNhbGwiKTsKKyAgICAgICAgICAgIDxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdzdW4nIj5zdW48L2Vycm9yPi5taXNjLkxhdW5jaGVyIGwgPSA8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnc3VuJyI+c3VuPC9lcnJvcj4ubWlzYy5MYXVuY2hlci5nZXRMYXVuY2hlcigpOworCSAgICBpZiAobCAhPSBudWxsKSB7CisJCVRocm93YWJsZSBvb3BzID0gbnVsbDsKKwkJc2NsID0gbC48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIG1ldGhvZCAnZ2V0Q2xhc3NMb2FkZXIoKSciPmdldENsYXNzTG9hZGVyPC9lcnJvcj4oKTsKKwkgICAgICAgIHRyeSB7CisJCSAgICA8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnUHJpdmlsZWdlZEV4Y2VwdGlvbkFjdGlvbiciPlByaXZpbGVnZWRFeGNlcHRpb25BY3Rpb248L2Vycm9yPiBhOworCQkgICAgPGVycm9yIGRlc2NyPSJJbmNvbXBhdGlibGUgdHlwZXMuIEZvdW5kOiAnU3lzdGVtQ2xhc3NMb2FkZXJBY3Rpb24nLCByZXF1aXJlZDogJ1ByaXZpbGVnZWRFeGNlcHRpb25BY3Rpb24nIj5hID0gbmV3IFN5c3RlbUNsYXNzTG9hZGVyQWN0aW9uKHNjbCk8L2Vycm9yPjsKKyAgICAgICAgICAgICAgICAgICAgc2NsID0gKENsYXNzTG9hZGVyKSA8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnQWNjZXNzQ29udHJvbGxlciciPkFjY2Vzc0NvbnRyb2xsZXI8L2Vycm9yPi5kb1ByaXZpbGVnZWQoYSk7CisJICAgICAgICB9IGNhdGNoICg8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnUHJpdmlsZWdlZEFjdGlvbkV4Y2VwdGlvbiciPlByaXZpbGVnZWRBY3Rpb25FeGNlcHRpb248L2Vycm9yPiBwYWUpIHsKKwkJICAgIG9vcHMgPSBwYWUuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBtZXRob2QgJ2dldENhdXNlKCknIj5nZXRDYXVzZTwvZXJyb3I+KCk7CisJICAgICAgICAgICAgaWYgKG9vcHMgaW5zdGFuY2VvZiA8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnSW52b2NhdGlvblRhcmdldEV4Y2VwdGlvbiciPkludm9jYXRpb25UYXJnZXRFeGNlcHRpb248L2Vycm9yPikgeworCQkgICAgICAgIG9vcHMgPSBvb3BzLmdldENhdXNlKCk7CisJCSAgICB9CisJICAgICAgICB9CisJCWlmIChvb3BzICE9IG51bGwpIHsKKwkJICAgIGlmIChvb3BzIGluc3RhbmNlb2YgRXJyb3IpIHsKKwkJCXRocm93IChFcnJvcikgb29wczsKKwkJICAgIH0gZWxzZSB7CisJCSAgICAgICAgLy8gd3JhcCB0aGUgZXhjZXB0aW9uCisJCSAgICAgICAgdGhyb3cgbmV3IEVycm9yKG9vcHMpOworCQkgICAgfQorCQl9CisJICAgIH0KKwkgICAgc2NsU2V0ID0gdHJ1ZTsKKwl9CisgICAgfQorCisgICAgLy8gUmV0dXJucyB0cnVlIGlmIHRoZSBzcGVjaWZpZWQgY2xhc3MgbG9hZGVyIGNhbiBiZSBmb3VuZAorICAgIC8vIGluIHRoaXMgY2xhc3MgbG9hZGVyJ3MgZGVsZWdhdGlvbiBjaGFpbi4KKyAgICBib29sZWFuIGlzQW5jZXN0b3IoQ2xhc3NMb2FkZXIgY2wpIHsKKwlDbGFzc0xvYWRlciBhY2wgPSB0aGlzOworCWRvIHsKKwkgICAgYWNsID0gYWNsLnBhcmVudDsKKwkgICAgaWYgKGNsID09IGFjbCkgeworCQlyZXR1cm4gdHJ1ZTsKKwkgICAgfQorCX0gd2hpbGUgKGFjbCAhPSBudWxsKTsKKwlyZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgLy8gUmV0dXJucyB0aGUgY2FsbGVyJ3MgY2xhc3MgbG9hZGVyLCBvciBudWxsIGlmIG5vbmUuCisgICAgLy8gTk9URSB0aGlzIG11c3QgYWx3YXlzIGJlIGNhbGxlZCB3aGVuIHRoZXJlIGlzIGV4YWN0bHkgb25lCisgICAgLy8gaW50ZXJ2ZW5pbmcgZnJhbWUgZnJvbSB0aGUgY29yZSBsaWJyYXJpZXMgb24gdGhlIHN0YWNrIGJldHdlZW4KKyAgICAvLyB0aGlzIG1ldGhvZCdzIGludm9jYXRpb24gYW5kIHRoZSBkZXNpcmVkIGNhbGxlci4KKyAgICBzdGF0aWMgQ2xhc3NMb2FkZXIgZ2V0Q2FsbGVyQ2xhc3NMb2FkZXIoKSB7CisgICAgICAgIC8vIE5PVEUgdXNlIG9mIG1vcmUgZ2VuZXJpYyBSZWZsZWN0aW9uLmdldENhbGxlckNsYXNzKCkKKyAgICAgICAgQ2xhc3MgY2FsbGVyID0gPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ1JlZmxlY3Rpb24nIj5SZWZsZWN0aW9uPC9lcnJvcj4uZ2V0Q2FsbGVyQ2xhc3MoMyk7CisgICAgICAgIC8vIFRoaXMgY2FuIGJlIG51bGwgaWYgdGhlIFZNIGlzIHJlcXVlc3RpbmcgaXQKKyAgICAgICAgaWYgKGNhbGxlciA9PSBudWxsKSB7CisgICAgICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAgfQorICAgICAgICAvLyBDaXJjdW12ZW50IHNlY3VyaXR5IGNoZWNrIHNpbmNlIHRoaXMgaXMgcGFja2FnZS1wcml2YXRlCisgICAgICAgIHJldHVybiBjYWxsZXIuPGVycm9yIGRlc2NyPSInZ2V0Q2xhc3NMb2FkZXIwKCknIGlzIG5vdCBwdWJsaWMgaW4gJ2phdmEubGFuZy5DbGFzcycuIENhbm5vdCBiZSBhY2Nlc3NlZCBmcm9tIG91dHNpZGUgcGFja2FnZSI+Z2V0Q2xhc3NMb2FkZXIwPC9lcnJvcj4oKTsKKyAgICB9CisKKyAgICAvLyBUaGUgY2xhc3MgbG9hZGVyIGZvciB0aGUgc3lzdGVtCisgICAgcHJpdmF0ZSBzdGF0aWMgQ2xhc3NMb2FkZXIgc2NsOworCisgICAgLy8gU2V0IHRvIHRydWUgb25jZSB0aGUgc3lzdGVtIGNsYXNzIGxvYWRlciBoYXMgYmVlbiBzZXQKKyAgICBwcml2YXRlIHN0YXRpYyBib29sZWFuIHNjbFNldDsKKworICAgIC8vIFBlcm1pc3Npb24gdG8gYWNjZXNzIHN5c3RlbSBvciBwYXJlbnQgY2xhc3MgbG9hZGVyCisgICAgcHJpdmF0ZSBzdGF0aWMgPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ1J1bnRpbWVQZXJtaXNzaW9uJyI+UnVudGltZVBlcm1pc3Npb248L2Vycm9yPiBnZXRDbGFzc0xvYWRlclBlcm0gPSBudWxsOworCisgICAgc3RhdGljIDxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdSdW50aW1lUGVybWlzc2lvbiciPlJ1bnRpbWVQZXJtaXNzaW9uPC9lcnJvcj4gZ2V0R2V0Q2xhc3NMb2FkZXJQZXJtKCkKKyAgICB7CisJaWYgKGdldENsYXNzTG9hZGVyUGVybSA9PSBudWxsKQorCSAgICBnZXRDbGFzc0xvYWRlclBlcm0gPSBuZXcgPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ1J1bnRpbWVQZXJtaXNzaW9uJyI+UnVudGltZVBlcm1pc3Npb248L2Vycm9yPigiZ2V0Q2xhc3NMb2FkZXIiKTsKKwlyZXR1cm4gZ2V0Q2xhc3NMb2FkZXJQZXJtOworICAgIH0KKworICAgIC8qKgorICAgICAqIERlZmluZXMgYSBwYWNrYWdlIGJ5IG5hbWUgaW4gdGhpcyBDbGFzc0xvYWRlci4gVGhpcyBhbGxvd3MgY2xhc3MKKyAgICAgKiBsb2FkZXJzIHRvIGRlZmluZSB0aGUgcGFja2FnZXMgZm9yIHRoZWlyIGNsYXNzZXMuIFBhY2thZ2VzIG11c3QgYmUKKyAgICAgKiBjcmVhdGVkIGJlZm9yZSB0aGUgY2xhc3MgaXMgZGVmaW5lZCwgYW5kIHBhY2thZ2UgbmFtZXMgbXVzdCBiZQorICAgICAqIHVuaXF1ZSB3aXRoaW4gYSBjbGFzcyBsb2FkZXIgYW5kIGNhbm5vdCBiZSByZWRlZmluZWQgb3IgY2hhbmdlZAorICAgICAqIG9uY2UgY3JlYXRlZC4KKyAgICAgKgorICAgICAqIEBwYXJhbSBuYW1lICAgICAgICB0aGUgcGFja2FnZSBuYW1lCisgICAgICogQHBhcmFtIHNwZWNUaXRsZSAgIHRoZSBzcGVjaWZpY2F0aW9uIHRpdGxlCisgICAgICogQHBhcmFtIHNwZWNWZXJzaW9uIHRoZSBzcGVjaWZpY2F0aW9uIHZlcnNpb24KKyAgICAgKiBAcGFyYW0gc3BlY1ZlbmRvciAgdGhlIHNwZWNpZmljYXRpb24gdmVuZG9yCisgICAgICogQHBhcmFtIGltcGxUaXRsZSAgIHRoZSBpbXBsZW1lbnRhdGlvbiB0aXRsZQorICAgICAqIEBwYXJhbSBpbXBsVmVyc2lvbiB0aGUgaW1wbGVtZW50YXRpb24gdmVyc2lvbgorICAgICAqIEBwYXJhbSBpbXBsVmVuZG9yICB0aGUgaW1wbGVtZW50YXRpb24gdmVuZG9yCisgICAgICogQHBhcmFtIHNlYWxCYXNlICAgIElmIG5vdCBudWxsLCB0aGVuIHRoaXMgcGFja2FnZSBpcyBzZWFsZWQgd2l0aAorICAgICAqICAgICAgICAgICAgICAgICAgICByZXNwZWN0IHRvIHRoZSBnaXZlbiBjb2RlIHNvdXJjZSBVUkwuIE90aGVyd2lzZSwKKyAgICAgKgkJCSAgdGhlIHBhY2thZ2UgaXMgbm90IHNlYWxlZC4KKyAgICAgKiBAcmV0dXJuIHRoZSBuZXdseSBkZWZpbmVkIDxjb2RlPlBhY2thZ2U8L2NvZGU+IG9iamVjdAorICAgICAqIEBleGNlcHRpb24gSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIGlmIHBhY2thZ2UgbmFtZSBkdXBsaWNhdGVzIGFuCisgICAgICogICAgICAgICAgICBleGlzdGluZyBwYWNrYWdlIGVpdGhlciBpbiB0aGlzIGNsYXNzIGxvYWRlciBvciBvbmUgb2YKKyAgICAgKiAgICAgICAgICAgIGl0cyBhbmNlc3RvcnMKKyAgICAgKiBAc2luY2UgMS4yCisgICAgICovCisgICAgcHJvdGVjdGVkIDxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdQYWNrYWdlJyI+UGFja2FnZTwvZXJyb3I+IGRlZmluZVBhY2thZ2UoU3RyaW5nIG5hbWUsIFN0cmluZyBzcGVjVGl0bGUsCisJCQkJICAgIFN0cmluZyBzcGVjVmVyc2lvbiwgU3RyaW5nIHNwZWNWZW5kb3IsCisJCQkJICAgIFN0cmluZyBpbXBsVGl0bGUsIFN0cmluZyBpbXBsVmVyc2lvbiwKKwkJCQkgICAgU3RyaW5nIGltcGxWZW5kb3IsIFVSTCBzZWFsQmFzZSkKKwl0aHJvd3MgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uCisgICAgeworCXN5bmNocm9uaXplZCAocGFja2FnZXMpIHsKKwkgICAgPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ1BhY2thZ2UnIj5QYWNrYWdlPC9lcnJvcj4gcGtnID0gZ2V0UGFja2FnZShuYW1lKTsKKwkgICAgaWYgKHBrZyAhPSBudWxsKSB7CisJCXRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24obmFtZSk7CisJICAgIH0KKwkgICAgcGtnID0gbmV3IDxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdQYWNrYWdlJyI+UGFja2FnZTwvZXJyb3I+KG5hbWUsIHNwZWNUaXRsZSwgc3BlY1ZlcnNpb24sIHNwZWNWZW5kb3IsCisJCQkgICAgICBpbXBsVGl0bGUsIGltcGxWZXJzaW9uLCBpbXBsVmVuZG9yLAorCQkJICAgICAgc2VhbEJhc2UpOworCSAgICBwYWNrYWdlcy5wdXQ8ZXJyb3IgZGVzY3I9IidwdXQoamF2YS5sYW5nLk9iamVjdCwgamF2YS5sYW5nLk9iamVjdCknIGluICdqYXZhLnV0aWwuSGFzaE1hcCcgY2Fubm90IGJlIGFwcGxpZWQgdG8gJyhqYXZhLmxhbmcuU3RyaW5nLCBQYWNrYWdlKSciPihuYW1lLCBwa2cpPC9lcnJvcj47CisJICAgIHJldHVybiBwa2c7CisJfQorICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybnMgYSBQYWNrYWdlIHRoYXQgaGFzIGJlZW4gZGVmaW5lZCBieSB0aGlzIGNsYXNzIGxvYWRlciBvciBhbnkKKyAgICAgKiBvZiBpdHMgYW5jZXN0b3JzLgorICAgICAqCisgICAgICogQHBhcmFtICBuYW1lIHRoZSBwYWNrYWdlIG5hbWUKKyAgICAgKiBAcmV0dXJuIHRoZSBQYWNrYWdlIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGdpdmVuIG5hbWUsIG9yIG51bGwgaWYgbm90CisgICAgICogICAgICAgICBmb3VuZAorICAgICAqIEBzaW5jZSAgMS4yCisgICAgICovCisgICAgcHJvdGVjdGVkIDxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdQYWNrYWdlJyI+UGFja2FnZTwvZXJyb3I+IGdldFBhY2thZ2UoU3RyaW5nIG5hbWUpIHsKKwlzeW5jaHJvbml6ZWQgKHBhY2thZ2VzKSB7CisJICAgIDxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdQYWNrYWdlJyI+UGFja2FnZTwvZXJyb3I+IHBrZyA9ICg8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnUGFja2FnZSciPlBhY2thZ2U8L2Vycm9yPilwYWNrYWdlcy5nZXQobmFtZSk7CisJICAgIGlmIChwa2cgPT0gbnVsbCkgeworCQlpZiAocGFyZW50ICE9IG51bGwpIHsKKwkJICAgIHBrZyA9IHBhcmVudC5nZXRQYWNrYWdlKG5hbWUpOworCQl9IGVsc2UgeworCQkgICAgcGtnID0gPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ1BhY2thZ2UnIj5QYWNrYWdlPC9lcnJvcj4uZ2V0U3lzdGVtUGFja2FnZShuYW1lKTsKKwkJfQorCQlpZiAocGtnICE9IG51bGwpIHsKKwkJICAgIHBhY2thZ2VzLnB1dDxlcnJvciBkZXNjcj0iJ3B1dChqYXZhLmxhbmcuT2JqZWN0LCBqYXZhLmxhbmcuT2JqZWN0KScgaW4gJ2phdmEudXRpbC5IYXNoTWFwJyBjYW5ub3QgYmUgYXBwbGllZCB0byAnKGphdmEubGFuZy5TdHJpbmcsIFBhY2thZ2UpJyI+KG5hbWUsIHBrZyk8L2Vycm9yPjsKKwkJfQorCSAgICB9CisJICAgIHJldHVybiBwa2c7CisJfQorICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybnMgYWxsIG9mIHRoZSBQYWNrYWdlcyBkZWZpbmVkIGJ5IHRoaXMgY2xhc3MgbG9hZGVyIGFuZCBpdHMKKyAgICAgKiBhbmNlc3RvcnMuCisgICAgICoKKyAgICAgKiBAcmV0dXJuIHRoZSBhcnJheSBvZiA8Y29kZT5QYWNrYWdlPC9jb2RlPiBvYmplY3RzIGRlZmluZWQgYnkgdGhpcworICAgICAqIDxjb2RlPkNsYXNzTG9hZGVyPC9jb2RlPgorICAgICAqIEBzaW5jZSAxLjIKKyAgICAgKi8KKyAgICBwcm90ZWN0ZWQgPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ1BhY2thZ2UnIj5QYWNrYWdlPC9lcnJvcj5bXSBnZXRQYWNrYWdlcygpIHsKKwlNYXAgbWFwOworCXN5bmNocm9uaXplZCAocGFja2FnZXMpIHsKKwkgICAgbWFwID0gKE1hcClwYWNrYWdlcy5jbG9uZSgpOworCX0KKwk8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnUGFja2FnZSciPlBhY2thZ2U8L2Vycm9yPltdIHBrZ3M7CisJaWYgKHBhcmVudCAhPSBudWxsKSB7CisJICAgIHBrZ3MgPSBwYXJlbnQuZ2V0UGFja2FnZXMoKTsKKwl9IGVsc2UgeworCSAgICBwa2dzID0gPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ1BhY2thZ2UnIj5QYWNrYWdlPC9lcnJvcj4uZ2V0U3lzdGVtUGFja2FnZXMoKTsKKwl9CisJaWYgKHBrZ3MgIT0gbnVsbCkgeworCSAgICBmb3IgKGludCBpID0gMDsgaSA8IHBrZ3MubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgICAgICBTdHJpbmcgcGtnTmFtZSA9IHBrZ3NbaV0uPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBtZXRob2QgJ2dldE5hbWUoKSciPmdldE5hbWU8L2Vycm9yPigpOworICAgICAgICAgICAgICAgIGlmIChtYXAuZ2V0KHBrZ05hbWUpID09IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgbWFwLnB1dDxlcnJvciBkZXNjcj0iJ3B1dChqYXZhLmxhbmcuT2JqZWN0LCBqYXZhLmxhbmcuT2JqZWN0KScgaW4gJ2phdmEudXRpbC5NYXAnIGNhbm5vdCBiZSBhcHBsaWVkIHRvICcoamF2YS5sYW5nLlN0cmluZywgUGFja2FnZSknIj4ocGtnTmFtZSwgcGtnc1tpXSk8L2Vycm9yPjsKKyAgICAgICAgICAgICAgICB9CisJICAgIH0KKwl9CisJcmV0dXJuICg8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnUGFja2FnZSciPlBhY2thZ2U8L2Vycm9yPltdKW1hcC52YWx1ZXMoKS50b0FycmF5KG5ldyA8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnUGFja2FnZSciPlBhY2thZ2U8L2Vycm9yPlttYXAuc2l6ZSgpXSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJucyB0aGUgYWJzb2x1dGUgcGF0aCBuYW1lIG9mIGEgbmF0aXZlIGxpYnJhcnkuIFRoZSBWTQorICAgICAqIGludm9rZXMgdGhpcyBtZXRob2QgdG8gbG9jYXRlIHRoZSBuYXRpdmUgbGlicmFyaWVzIHRoYXQgYmVsb25nCisgICAgICogdG8gY2xhc3NlcyBsb2FkZWQgd2l0aCB0aGlzIGNsYXNzIGxvYWRlci4gSWYgdGhpcyBtZXRob2QgcmV0dXJucworICAgICAqIDxjb2RlPm51bGw8L2NvZGU+LCB0aGUgVk0gc2VhcmNoZXMgdGhlIGxpYnJhcnkgYWxvbmcgdGhlIHBhdGgKKyAgICAgKiBzcGVjaWZpZWQgYXMgdGhlIDxjb2RlPmphdmEubGlicmFyeS5wYXRoPC9jb2RlPiBwcm9wZXJ0eS4KKyAgICAgKgorICAgICAqIEBwYXJhbSAgICAgIGxpYm5hbWUgICB0aGUgbGlicmFyeSBuYW1lCisgICAgICogQHJldHVybiAgICAgdGhlIGFic29sdXRlIHBhdGggb2YgdGhlIG5hdGl2ZSBsaWJyYXJ5CisgICAgICogQHNlZSAgICAgICAgamF2YS5sYW5nLlN5c3RlbSNsb2FkTGlicmFyeShqYXZhLmxhbmcuU3RyaW5nKQorICAgICAqIEBzZWUgICAgICAgIGphdmEubGFuZy5TeXN0ZW0jbWFwTGlicmFyeU5hbWUoamF2YS5sYW5nLlN0cmluZykKKyAgICAgKiBAc2luY2UgICAgICAxLjIKKyAgICAgKi8KKyAgICBwcm90ZWN0ZWQgU3RyaW5nIGZpbmRMaWJyYXJ5KFN0cmluZyBsaWJuYW1lKSB7CisgICAgICAgIHJldHVybiBudWxsOworICAgIH0KKworICAgIC8qKgorICAgICAqIFRoZSBpbm5lciBjbGFzcyBOYXRpdmVMaWJyYXJ5IGRlbm90ZXMgYSBsb2FkZWQgbmF0aXZlIGxpYnJhcnkKKyAgICAgKiBpbnN0YW5jZS4gRXZlcnkgY2xhc3Nsb2FkZXIgY29udGFpbnMgYSB2ZWN0b3Igb2YgbG9hZGVkIG5hdGl2ZQorICAgICAqIGxpYnJhcmllcyBpbiB0aGUgcHJpdmF0ZSBmaWVsZCA8Y29kZT5uYXRpdmVMaWJyYXJpZXM8L2NvZGU+LgorICAgICAqIFRoZSBuYXRpdmUgbGlicmFyaWVzIGxvYWRlZCBpbnRvIHRoZSBzeXN0ZW0gYXJlIGVudGVyZWQgaW50bworICAgICAqIHRoZSA8Y29kZT5zeXN0ZW1OYXRpdmVMaWJyYXJpZXM8L2NvZGU+IHZlY3Rvci4KKyAgICAgKgorICAgICAqIEV2ZXJ5IG5hdGl2ZSBsaWJyYXJ5IHJldXFpcmVzIGEgcGFydGljdWxhciB2ZXJzaW9uIG9mIEpOSS4gVGhpcworICAgICAqIGlzIGRlbm90ZWQgYnkgdGhlIHByaXZhdGUgam5pVmVyc2lvbiBmaWVsZC4gVGhpcyBmaWVsZCBpcyBzZXQKKyAgICAgKiBieSB0aGUgVk0gd2hlbiBpdCBsb2FkcyB0aGUgbGlicmFyeSwgYW5kIHVzZWQgYnkgdGhlIFZNIHRvIHBhc3MKKyAgICAgKiB0aGUgY29ycmVjdCB2ZXJzaW9uIG9mIEpOSSB0byB0aGUgbmF0aXZlIG1ldGhvZHMuCisgICAgICoKKyAgICAgKiBAdmVyc2lvbiAxLjE2MiwgMDMvMTkvMDIKKyAgICAgKiBAc2VlICAgICBqYXZhLmxhbmcuQ2xhc3NMb2FkZXIKKyAgICAgKiBAc2luY2UgICAxLjIKKyAgICAgKi8KKyAgICBzdGF0aWMgY2xhc3MgTmF0aXZlTGlicmFyeSB7CisgICAgICAgIC8qIG9wYXF1ZSBoYW5kbGUgdG8gbmF0aXZlIGxpYnJhcnksIHVzZWQgaW4gbmF0aXZlIGNvZGUuICovCisgICAgICAgIGxvbmcgaGFuZGxlOworICAgICAgICAvKiB0aGUgdmVyc2lvbiBvZiBKTkkgZW52aXJvbm1lbnQgdGhlIG5hdGl2ZSBsaWJyYXJ5IHJlcXVpcmVzLiAqLworICAgICAgICBwcml2YXRlIGludCBqbmlWZXJzaW9uOworICAgICAgICAvKiB0aGUgY2xhc3MgZnJvbSB3aGljaCB0aGUgbGlicmFyeSBpcyBsb2FkZWQsIGFsc28gaW5kaWNhdGVzCisJICAgdGhlIGxvYWRlciB0aGlzIG5hdGl2ZSBsaWJyYXJ5IGJlbG9uZ3MuICovCisgICAgICAgIHByaXZhdGUgQ2xhc3MgZnJvbUNsYXNzOworICAgICAgICAvKiB0aGUgY2Fub25pY2FsaXplZCBuYW1lIG9mIHRoZSBuYXRpdmUgbGlicmFyeS4gKi8KKyAgICAgICAgU3RyaW5nIG5hbWU7CisKKyAgICAgICAgbmF0aXZlIHZvaWQgbG9hZChTdHJpbmcgbmFtZSk7CisgICAgICAgIG5hdGl2ZSBsb25nIGZpbmQoU3RyaW5nIG5hbWUpOworICAgICAgICBuYXRpdmUgdm9pZCB1bmxvYWQoKTsKKworICAgICAgICBwdWJsaWMgTmF0aXZlTGlicmFyeShDbGFzcyBmcm9tQ2xhc3MsIFN0cmluZyBuYW1lKSB7CisgICAgICAgICAgICB0aGlzLm5hbWUgPSBuYW1lOworCSAgICB0aGlzLmZyb21DbGFzcyA9IGZyb21DbGFzczsKKwl9CisKKyAgICAgICAgcHJvdGVjdGVkIHZvaWQgZmluYWxpemUoKSB7CisJICAgIHN5bmNocm9uaXplZCAobG9hZGVkTGlicmFyeU5hbWVzKSB7CisJICAgICAgICBpZiAoZnJvbUNsYXNzLmdldENsYXNzTG9hZGVyKCkgIT0gbnVsbCAmJiBoYW5kbGUgIT0gMCkgeworCQkgICAgLyogcmVtb3ZlIHRoZSBuYXRpdmUgbGlicmFyeSBuYW1lICovCisJCSAgICBpbnQgc2l6ZSA9IGxvYWRlZExpYnJhcnlOYW1lcy48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIG1ldGhvZCAnc2l6ZSgpJyI+c2l6ZTwvZXJyb3I+KCk7CisJCSAgICBmb3IgKGludCBpID0gMDsgaSA8IHNpemU7IGkrKykgeworCQkgICAgICAgIGlmIChuYW1lLmVxdWFscyhsb2FkZWRMaWJyYXJ5TmFtZXMuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBtZXRob2QgJ2VsZW1lbnRBdChpbnQpJyI+ZWxlbWVudEF0PC9lcnJvcj4oaSkpKSB7CisJCQkgICAgbG9hZGVkTGlicmFyeU5hbWVzLjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgbWV0aG9kICdyZW1vdmVFbGVtZW50QXQoaW50KSciPnJlbW92ZUVsZW1lbnRBdDwvZXJyb3I+KGkpOworCQkJICAgIGJyZWFrOworCQkJfQorCQkgICAgfQorCQkgICAgLyogdW5sb2FkIHRoZSBsaWJyYXJ5LiAqLworCQkgICAgQ2xhc3NMb2FkZXIubmF0aXZlTGlicmFyeUNvbnRleHQuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBtZXRob2QgJ3B1c2goQ2xhc3NMb2FkZXIuTmF0aXZlTGlicmFyeSknIj5wdXNoPC9lcnJvcj4odGhpcyk7CisJCSAgICB0cnkgeworCQkJdW5sb2FkKCk7CisJCSAgICB9IGZpbmFsbHkgeworCQkgICAgICAgIENsYXNzTG9hZGVyLm5hdGl2ZUxpYnJhcnlDb250ZXh0LjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgbWV0aG9kICdwb3AoKSciPnBvcDwvZXJyb3I+KCk7CisJCSAgICB9CisJCX0KKwkgICAgfQorCX0KKyAgICAgICAgLyogQ2FsbGVkIGluIHRoZSBWTSB0byBkZXRlcm1pbmUgdGhlIGNvbnRleHQgY2xhc3MgaW4KKwkgICBKTklfTG9hZC9KTklfVW5sb2FkICovCisgICAgICAgIHN0YXRpYyBDbGFzcyBnZXRGcm9tQ2xhc3MoKSB7CisgICAgICAgICAgICByZXR1cm4gKChOYXRpdmVMaWJyYXJ5KQorCQkgICAgKENsYXNzTG9hZGVyLm5hdGl2ZUxpYnJhcnlDb250ZXh0LjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgbWV0aG9kICdwZWVrKCknIj5wZWVrPC9lcnJvcj4oKSkpLmZyb21DbGFzczsKKwl9CisgICAgfQorCisgICAgLyogdGhlICJkZWZhdWx0IiBkb21haW4uIFNldCBhcyB0aGUgZGVmYXVsdCBQcm90ZWN0aW9uRG9tYWluCisgICAgICogb24gbmV3bHkgY3JlYXRlZCBjbGFzc3Nlcy4KKyAgICAgKi8KKyAgICBwcml2YXRlIDxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdQcm90ZWN0aW9uRG9tYWluJyI+UHJvdGVjdGlvbkRvbWFpbjwvZXJyb3I+IGRlZmF1bHREb21haW4gPSBudWxsOworCisgICAgLyoKKyAgICAgKiByZXR1cm5zIChhbmQgaW5pdGlhbGl6ZXMpIHRoZSBkZWZhdWx0IGRvbWFpbi4KKyAgICAgKi8KKworICAgIHByaXZhdGUgc3luY2hyb25pemVkIDxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdQcm90ZWN0aW9uRG9tYWluJyI+UHJvdGVjdGlvbkRvbWFpbjwvZXJyb3I+IGdldERlZmF1bHREb21haW4oKSB7CisJaWYgKGRlZmF1bHREb21haW4gPT0gbnVsbCkgeworCSAgICA8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnQ29kZVNvdXJjZSciPkNvZGVTb3VyY2U8L2Vycm9yPiBjcyA9IG5ldyA8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnQ29kZVNvdXJjZSciPkNvZGVTb3VyY2U8L2Vycm9yPihudWxsLCBudWxsKTsKKwkgICAgZGVmYXVsdERvbWFpbiA9IG5ldyA8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnUHJvdGVjdGlvbkRvbWFpbiciPlByb3RlY3Rpb25Eb21haW48L2Vycm9yPihjcywgbnVsbCwgdGhpcywgbnVsbCk7CisJfQorCXJldHVybiBkZWZhdWx0RG9tYWluOworICAgIH0KKworICAgIC8qIEFsbCBuYXRpdmUgbGlicmFyeSBuYW1lcyB3ZSd2ZSBsb2FkZWQuICovCisgICAgcHJpdmF0ZSBzdGF0aWMgPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ1ZlY3RvciciPlZlY3RvcjwvZXJyb3I+IGxvYWRlZExpYnJhcnlOYW1lcyA9IG5ldyA8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnVmVjdG9yJyI+VmVjdG9yPC9lcnJvcj4oKTsKKyAgICAvKiBOYXRpdmUgbGlicmFyaWVzIGJlbG9uZ2luZyB0byBzeXN0ZW0gY2xhc3Nlcy4gKi8KKyAgICBwcml2YXRlIHN0YXRpYyA8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnVmVjdG9yJyI+VmVjdG9yPC9lcnJvcj4gc3lzdGVtTmF0aXZlTGlicmFyaWVzID0gbmV3IDxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdWZWN0b3InIj5WZWN0b3I8L2Vycm9yPigpOworICAgIC8qIE5hdGl2ZSBsaWJyYXJpZXMgYXNzb2NpYXRlZCB3aXRoIHRoZSBjbGFzcyBsb2FkZXIuICovCisgICAgcHJpdmF0ZSA8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnVmVjdG9yJyI+VmVjdG9yPC9lcnJvcj4gbmF0aXZlTGlicmFyaWVzID0gbmV3IDxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdWZWN0b3InIj5WZWN0b3I8L2Vycm9yPigpOworCisgICAgLyogbmF0aXZlIGxpYnJhcmllcyBiZWluZyBsb2FkZWQvdW5sb2FkZWQuICovCisgICAgcHJpdmF0ZSBzdGF0aWMgPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ1N0YWNrJyI+U3RhY2s8L2Vycm9yPiBuYXRpdmVMaWJyYXJ5Q29udGV4dCA9IG5ldyA8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnU3RhY2snIj5TdGFjazwvZXJyb3I+KCk7CisKKyAgICAvKiBUaGUgcGF0aHMgc2VhcmNoZWQgZm9yIGxpYnJhcmllcyAqLworICAgIHN0YXRpYyBwcml2YXRlIFN0cmluZyB1c3JfcGF0aHNbXTsKKyAgICBzdGF0aWMgcHJpdmF0ZSBTdHJpbmcgc3lzX3BhdGhzW107CisKKyAgICBwcml2YXRlIHN0YXRpYyBTdHJpbmdbXSBpbml0aWFsaXplUGF0aChTdHJpbmcgcHJvcG5hbWUpIHsKKyAgICAgICAgU3RyaW5nIGxkcGF0aCA9IFN5c3RlbS5nZXRQcm9wZXJ0eShwcm9wbmFtZSwgIiIpOworCVN0cmluZyBwcyA9IEZpbGUucGF0aFNlcGFyYXRvcjsKKwlpbnQgbGRsZW4gPSBsZHBhdGgubGVuZ3RoKCk7CisJaW50IGksIGosIG47CisJLy8gQ291bnQgdGhlIHNlcGFyYXRvcnMgaW4gdGhlIHBhdGgKKwlpID0gbGRwYXRoLmluZGV4T2YocHMpOworCW4gPSAwOworCXdoaWxlIChpID49IDApIHsKKwkgICAgbisrOworCSAgICBpID0gbGRwYXRoLmluZGV4T2YocHMsIGkrMSk7CisJfQorCisJLy8gYWxsb2NhdGUgdGhlIGFycmF5IG9mIHBhdGhzIC0gbiA6J3MgPSBuICsgMSBwYXRoIGVsZW1lbnRzCisJU3RyaW5nW10gcGF0aHMgPSBuZXcgU3RyaW5nW24gKyAxXTsKKworCS8vIEZpbGwgdGhlIGFycmF5IHdpdGggcGF0aHMgZnJvbSB0aGUgbGRwYXRoCisJbiA9IGkgPSAwOworCWogPSBsZHBhdGguaW5kZXhPZihwcyk7CisJd2hpbGUgKGogPj0gMCkgeworCSAgICBpZiAoaiAtIGkgPiAwKSB7CisJICAgICAgICBwYXRoc1tuKytdID0gbGRwYXRoLnN1YnN0cmluZyhpLCBqKTsKKwkgICAgfSBlbHNlIGlmIChqIC0gaSA9PSAwKSB7CisJICAgICAgICBwYXRoc1tuKytdID0gIi4iOworCSAgICB9CisJICAgIGkgPSBqICsgMTsKKwkgICAgaiA9IGxkcGF0aC5pbmRleE9mKHBzLCBpKTsKKwl9CisJcGF0aHNbbl0gPSBsZHBhdGguc3Vic3RyaW5nKGksIGxkbGVuKTsKKwlyZXR1cm4gcGF0aHM7CisgICAgfQorCisKKyAgICAvKiBDYWxsZWQgaW4gdGhlIGphdmEubGFuZy5SdW50aW1lIGNsYXNzIHRvIGltcGxlbWVudCBsb2FkCisgICAgICogYW5kIGxvYWRMaWJyYXJ5LgorICAgICAqLworICAgIHN0YXRpYyB2b2lkIGxvYWRMaWJyYXJ5KENsYXNzIGZyb21DbGFzcywgU3RyaW5nIG5hbWUsCisJCQkgICAgYm9vbGVhbiBpc0Fic29sdXRlKSB7CisgICAgICAgIDxlcnJvciBkZXNjcj0iSW5jb21wYXRpYmxlIHR5cGVzLiBGb3VuZDogJ2phdmEubGFuZy5DbGFzc0xvYWRlcicsIHJlcXVpcmVkOiAnQ2xhc3NMb2FkZXInIj5DbGFzc0xvYWRlciBsb2FkZXIgPQorCSAgICAoZnJvbUNsYXNzID09IG51bGwpID8gbnVsbCA6IGZyb21DbGFzcy5nZXRDbGFzc0xvYWRlcigpOzwvZXJyb3I+CisgICAgICAgIGlmIChzeXNfcGF0aHMgPT0gbnVsbCkgeworCSAgICB1c3JfcGF0aHMgPSBpbml0aWFsaXplUGF0aCgiamF2YS5saWJyYXJ5LnBhdGgiKTsKKwkgICAgc3lzX3BhdGhzID0gaW5pdGlhbGl6ZVBhdGgoInN1bi5ib290LmxpYnJhcnkucGF0aCIpOworICAgICAgICB9CisgICAgICAgIGlmIChpc0Fic29sdXRlKSB7CisJICAgIGlmIChsb2FkTGlicmFyeTAoZnJvbUNsYXNzLCBuZXcgRmlsZShuYW1lKSkpIHsKKwkgICAgICAgIHJldHVybjsKKwkgICAgfQorCSAgICB0aHJvdyBuZXcgPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ1Vuc2F0aXNmaWVkTGlua0Vycm9yJyI+VW5zYXRpc2ZpZWRMaW5rRXJyb3I8L2Vycm9yPigiQ2FuJ3QgbG9hZCBsaWJyYXJ5OiAiICsgbmFtZSk7CisJfQorCWlmIChsb2FkZXIgIT0gbnVsbCkgeworCSAgICBTdHJpbmcgbGliZmlsZW5hbWUgPSBsb2FkZXIuZmluZExpYnJhcnkobmFtZSk7CisJICAgIGlmIChsaWJmaWxlbmFtZSAhPSBudWxsKSB7CisJICAgICAgICBGaWxlIGxpYmZpbGUgPSBuZXcgRmlsZShsaWJmaWxlbmFtZSk7CisJICAgICAgICBpZiAoIWxpYmZpbGUuaXNBYnNvbHV0ZSgpKSB7CisJCSAgICB0aHJvdyBuZXcgPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ1Vuc2F0aXNmaWVkTGlua0Vycm9yJyI+VW5zYXRpc2ZpZWRMaW5rRXJyb3I8L2Vycm9yPigKKyAgICAiQ2xhc3NMb2FkZXIuZmluZExpYnJhcnkgZmFpbGVkIHRvIHJldHVybiBhbiBhYnNvbHV0ZSBwYXRoOiAiICsgbGliZmlsZW5hbWUpOworCQl9CisJCWlmIChsb2FkTGlicmFyeTAoZnJvbUNsYXNzLCBsaWJmaWxlKSkgeworCQkgICAgcmV0dXJuOworCQl9CisJCXRocm93IG5ldyA8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnVW5zYXRpc2ZpZWRMaW5rRXJyb3InIj5VbnNhdGlzZmllZExpbmtFcnJvcjwvZXJyb3I+ICgiQ2FuJ3QgbG9hZCAiICsgbGliZmlsZW5hbWUpOworCSAgICB9CisJfQorCWZvciAoaW50IGkgPSAwIDsgaSA8IHN5c19wYXRocy5sZW5ndGggOyBpKyspIHsKKwkgICAgRmlsZSBsaWJmaWxlID0gbmV3IEZpbGUoc3lzX3BhdGhzW2ldLCBTeXN0ZW0ubWFwTGlicmFyeU5hbWUobmFtZSkpOworCSAgICBpZiAobG9hZExpYnJhcnkwKGZyb21DbGFzcywgbGliZmlsZSkpIHsKKwkgICAgICAgIHJldHVybjsKKwkgICAgfQorCX0KKwlpZiAobG9hZGVyICE9IG51bGwpIHsKKwkgICAgZm9yIChpbnQgaSA9IDAgOyBpIDwgdXNyX3BhdGhzLmxlbmd0aCA7IGkrKykgeworCSAgICAgICAgRmlsZSBsaWJmaWxlID0gbmV3IEZpbGUodXNyX3BhdGhzW2ldLAorCQkJCQlTeXN0ZW0ubWFwTGlicmFyeU5hbWUobmFtZSkpOworCQlpZiAobG9hZExpYnJhcnkwKGZyb21DbGFzcywgbGliZmlsZSkpIHsKKwkJICAgIHJldHVybjsKKwkJfQorCSAgICB9CisJfQorCS8vIE9vcHMsIGl0IGZhaWxlZAorICAgICAgICB0aHJvdyBuZXcgPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ1Vuc2F0aXNmaWVkTGlua0Vycm9yJyI+VW5zYXRpc2ZpZWRMaW5rRXJyb3I8L2Vycm9yPigibm8gIiArIG5hbWUgKyAiIGluIGphdmEubGlicmFyeS5wYXRoIik7CisgICAgfQorCisgICAgcHJpdmF0ZSBzdGF0aWMgYm9vbGVhbiBsb2FkTGlicmFyeTAoQ2xhc3MgZnJvbUNsYXNzLCBmaW5hbCBGaWxlIGZpbGUpIHsKKwlCb29sZWFuIGV4aXN0cyA9IChCb29sZWFuKQorCSAgICA8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnQWNjZXNzQ29udHJvbGxlciciPkFjY2Vzc0NvbnRyb2xsZXI8L2Vycm9yPi5kb1ByaXZpbGVnZWQobmV3IDxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdQcml2aWxlZ2VkQWN0aW9uJyI+UHJpdmlsZWdlZEFjdGlvbjwvZXJyb3I+KCkgeworCQlwdWJsaWMgT2JqZWN0IHJ1bigpIHsKKwkJICAgIHJldHVybiBuZXcgQm9vbGVhbihmaWxlLmV4aXN0cygpKTsKKwkJfQorCSAgICB9KTsKKwlpZiAoIWV4aXN0cy5ib29sZWFuVmFsdWUoKSkgeworCSAgICByZXR1cm4gZmFsc2U7CisJfQorICAgICAgICBTdHJpbmcgbmFtZTsKKwl0cnkgeworCSAgICBuYW1lID0gZmlsZS5nZXRDYW5vbmljYWxQYXRoKCk7CisJfSBjYXRjaCAoSU9FeGNlcHRpb24gZSkgeworCSAgICByZXR1cm4gZmFsc2U7CisJfQorICAgICAgICA8ZXJyb3IgZGVzY3I9IkluY29tcGF0aWJsZSB0eXBlcy4gRm91bmQ6ICdqYXZhLmxhbmcuQ2xhc3NMb2FkZXInLCByZXF1aXJlZDogJ0NsYXNzTG9hZGVyJyI+Q2xhc3NMb2FkZXIgbG9hZGVyID0KKwkgICAgKGZyb21DbGFzcyA9PSBudWxsKSA/IG51bGwgOiBmcm9tQ2xhc3MuZ2V0Q2xhc3NMb2FkZXIoKTs8L2Vycm9yPgorICAgICAgICA8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnVmVjdG9yJyI+VmVjdG9yPC9lcnJvcj4gbGlicyA9CisJICAgIGxvYWRlciAhPSBudWxsID8gbG9hZGVyLm5hdGl2ZUxpYnJhcmllcyA6IHN5c3RlbU5hdGl2ZUxpYnJhcmllczsKKwlzeW5jaHJvbml6ZWQgKGxpYnMpIHsKKwkgICAgaW50IHNpemUgPSBsaWJzLjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgbWV0aG9kICdzaXplKCknIj5zaXplPC9lcnJvcj4oKTsKKwkgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzaXplOyBpKyspIHsKKwkgICAgICAgIE5hdGl2ZUxpYnJhcnkgbGliID0gKE5hdGl2ZUxpYnJhcnkpbGlicy48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIG1ldGhvZCAnZWxlbWVudEF0KGludCknIj5lbGVtZW50QXQ8L2Vycm9yPihpKTsKKwkJaWYgKG5hbWUuZXF1YWxzKGxpYi5uYW1lKSkgeworCQkgICAgcmV0dXJuIHRydWU7CisJCX0KKwkgICAgfQorCisJICAgIHN5bmNocm9uaXplZCAobG9hZGVkTGlicmFyeU5hbWVzKSB7CisJICAgICAgICBpZiAobG9hZGVkTGlicmFyeU5hbWVzLjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgbWV0aG9kICdjb250YWlucyhqYXZhLmxhbmcuU3RyaW5nKSciPmNvbnRhaW5zPC9lcnJvcj4obmFtZSkpIHsKKwkJICAgIHRocm93IG5ldyA8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnVW5zYXRpc2ZpZWRMaW5rRXJyb3InIj5VbnNhdGlzZmllZExpbmtFcnJvcjwvZXJyb3I+CisJCSAgICAgICAgKCJOYXRpdmUgTGlicmFyeSAiICsKKwkJCSBuYW1lICsKKwkJCSAiIGFscmVhZHkgbG9hZGVkIGluIGFub3RoZXIgY2xhc3Nsb2FkZXIiKTsKKwkJfQorCQkvKiBJZiB0aGUgbGlicmFyeSBpcyBiZWluZyBsb2FkZWQgKG11c3QgYmUgYnkKKwkJICogdGhlIHNhbWUgdGhyZWFkLCBiZWNhdXNlIFJ1bnRpbWUubG9hZCBhbmQKKwkJICogUnVudGltZS5sb2FkTGlicmFyeSBhcmUgc3luY2hyb25vdXMpLiBUaGUKKwkJICogcmVhc29uIGlzIGNhbiBvY2N1ciBpcyB0aGF0IHRoZSBKTklfT25Mb2FkCisJCSAqIGZ1bmN0aW9uIGNhbiBjYXVzZSBhbm90aGVyIGxvYWRMaWJyYXJ5IGNhbGwuCisJCSAqCisJCSAqIFRodXMgd2UgY2FuIHVzZSBhIHN0YXRpYyBzdGFjayB0byBob2xkIHRoZSBsaXN0CisJCSAqIG9mIGxpYnJhcmllcyB3ZSBhcmUgbG9hZGluZy4KKwkJICoKKwkJICogSWYgdGhlcmUgaXMgYSBwZW5kaW5nIGxvYWQgb3BlcmF0aW9uIGZvciB0aGUKKwkJICogbGlicmFyeSwgd2UgaW1tZWRpYXRlbHkgcmV0dXJuIHN1Y2Nlc3M7IG90aGVyd2lzZSwKKwkJICogd2UgcmFpc2UgVW5zYXRpc2ZpZWRMaW5rRXJyb3IuCisJCSAqLworCQlpbnQgbiA9IG5hdGl2ZUxpYnJhcnlDb250ZXh0LjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgbWV0aG9kICdzaXplKCknIj5zaXplPC9lcnJvcj4oKTsKKwkJZm9yIChpbnQgaSA9IDA7IGkgPCBuOyBpKyspIHsKKwkJICAgIE5hdGl2ZUxpYnJhcnkgbGliID0gKE5hdGl2ZUxpYnJhcnkpCisJCSAgICAgICAgbmF0aXZlTGlicmFyeUNvbnRleHQuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBtZXRob2QgJ2VsZW1lbnRBdChpbnQpJyI+ZWxlbWVudEF0PC9lcnJvcj4oaSk7CisJCSAgICBpZiAobmFtZS5lcXVhbHMobGliLm5hbWUpKSB7CisJCSAgICAgICAgaWYgKDxlcnJvciBkZXNjcj0iT3BlcmF0b3IgJz09JyBjYW5ub3QgYmUgYXBwbGllZCB0byAnQ2xhc3NMb2FkZXInLCAnamF2YS5sYW5nLkNsYXNzTG9hZGVyJyI+bG9hZGVyID09IGxpYi5mcm9tQ2xhc3MuZ2V0Q2xhc3NMb2FkZXIoKTwvZXJyb3I+KSB7CisJCQkgICAgcmV0dXJuIHRydWU7CisJCQl9IGVsc2UgeworCQkJICAgIHRocm93IG5ldyA8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnVW5zYXRpc2ZpZWRMaW5rRXJyb3InIj5VbnNhdGlzZmllZExpbmtFcnJvcjwvZXJyb3I+CisJCQkgICAgICAgICgiTmF0aXZlIExpYnJhcnkgIiArCisJCQkJIG5hbWUgKworCQkJCSAiIGlzIGJlaW5nIGxvYWRlZCBpbiBhbm90aGVyIGNsYXNzbG9hZGVyIik7CisJCQl9CisJCSAgICB9CisJCX0KKwkJTmF0aXZlTGlicmFyeSBsaWIgPSBuZXcgTmF0aXZlTGlicmFyeShmcm9tQ2xhc3MsIG5hbWUpOworCQluYXRpdmVMaWJyYXJ5Q29udGV4dC48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIG1ldGhvZCAncHVzaChDbGFzc0xvYWRlci5OYXRpdmVMaWJyYXJ5KSciPnB1c2g8L2Vycm9yPihsaWIpOworCQl0cnkgeworCQkgICAgbGliLmxvYWQobmFtZSk7CisJCX0gZmluYWxseSB7CisJCSAgICBuYXRpdmVMaWJyYXJ5Q29udGV4dC48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIG1ldGhvZCAncG9wKCknIj5wb3A8L2Vycm9yPigpOworCQl9CisJCWlmIChsaWIuaGFuZGxlICE9IDApIHsKKwkJICAgIGxvYWRlZExpYnJhcnlOYW1lcy48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIG1ldGhvZCAnYWRkRWxlbWVudChqYXZhLmxhbmcuU3RyaW5nKSciPmFkZEVsZW1lbnQ8L2Vycm9yPihuYW1lKTsKKwkJICAgIGxpYnMuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBtZXRob2QgJ2FkZEVsZW1lbnQoQ2xhc3NMb2FkZXIuTmF0aXZlTGlicmFyeSknIj5hZGRFbGVtZW50PC9lcnJvcj4obGliKTsKKwkJICAgIHJldHVybiB0cnVlOworCQl9CisJCXJldHVybiBmYWxzZTsKKwkgICAgfQorCX0KKyAgICB9CisKKyAgICAvKiBDYWxsZWQgaW4gdGhlIFZNIGNsYXNzIGxpbmtpbmcgY29kZS4gKi8KKyAgICBzdGF0aWMgbG9uZyBmaW5kTmF0aXZlKENsYXNzTG9hZGVyIGxvYWRlciwgU3RyaW5nIG5hbWUpIHsKKyAgICAgICAgPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ1ZlY3RvciciPlZlY3RvcjwvZXJyb3I+IGxpYnMgPQorCSAgICBsb2FkZXIgIT0gbnVsbCA/IGxvYWRlci5uYXRpdmVMaWJyYXJpZXMgOiBzeXN0ZW1OYXRpdmVMaWJyYXJpZXM7CisJc3luY2hyb25pemVkIChsaWJzKSB7CisJICAgIGludCBzaXplID0gbGlicy48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIG1ldGhvZCAnc2l6ZSgpJyI+c2l6ZTwvZXJyb3I+KCk7CisJICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7CisJICAgICAgICBOYXRpdmVMaWJyYXJ5IGxpYiA9IChOYXRpdmVMaWJyYXJ5KWxpYnMuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBtZXRob2QgJ2VsZW1lbnRBdChpbnQpJyI+ZWxlbWVudEF0PC9lcnJvcj4oaSk7CisJCWxvbmcgZW50cnkgPSBsaWIuZmluZChuYW1lKTsKKwkJaWYgKGVudHJ5ICE9IDApCisJCSAgICByZXR1cm4gZW50cnk7CisJICAgIH0KKwl9CisJcmV0dXJuIDA7CisgICAgfQorCisgICAgLyoKKyAgICAgKiBUaGUgZGVmYXVsdCB0b2dnbGUgZm9yIGFzc2VydGlvbiBjaGVja2luZy4KKyAgICAgKi8KKyAgICBwcml2YXRlIGJvb2xlYW4gZGVmYXVsdEFzc2VydGlvblN0YXR1cyA9IGZhbHNlOworCisgICAgLyoKKyAgICAgKiBNYXBzIFN0cmluZyBwYWNrYWdlTmFtZSB0byBCb29sZWFuIHBhY2thZ2UgZGVmYXVsdCBhc3NlcnRpb24gc3RhdHVzCisgICAgICogTm90ZSB0aGF0IHRoZSBkZWZhdWx0IHBhY2thZ2UgaXMgcGxhY2VkIHVuZGVyIGEgbnVsbCBtYXAga2V5LgorICAgICAqIElmIHRoaXMgZmllbGQgaXMgbnVsbCB0aGVuIHdlIGFyZSBkZWxlZ2F0aW5nIGFzc2VydGlvbiBzdGF0dXMgcXVlcmllcworICAgICAqIHRvIHRoZSBWTSwgaS5lLiwgbm9uZSBvZiB0aGlzIENsYXNzTG9hZGVyJ3MgYXNzZXJ0aW9uIHN0YXR1cworICAgICAqIG1vZGlmaWNhdGlvbiBtZXRob2RzIGhhdmUgYmVlbiBjYWxsZWQuCisgICAgICovCisgICAgcHJpdmF0ZSBNYXAgcGFja2FnZUFzc2VydGlvblN0YXR1cyA9IG51bGw7CisKKyAgICAvKgorICAgICAqIE1hcHMgU3RyaW5nIGZ1bGx5UXVhbGlmaWVkQ2xhc3NOYW1lIHRvIEJvb2xlYW4gYXNzZXJ0aW9uU3RhdHVzCisgICAgICogSWYgdGhpcyBmaWVsZCBpcyBudWxsIHRoZW4gd2UgYXJlIGRlbGVnYXRpbmcgYXNzZXJ0aW9uIHN0YXR1cyBxdWVyaWVzCisgICAgICogdG8gdGhlIFZNLCBpLmUuLCBub25lIG9mIHRoaXMgQ2xhc3NMb2FkZXIncyBhc3NlcnRpb24gc3RhdHVzCisgICAgICogbW9kaWZpY2F0aW9uIG1ldGhvZHMgaGF2ZSBiZWVuIGNhbGxlZC4KKyAgICAgKi8KKyAgICBNYXAgY2xhc3NBc3NlcnRpb25TdGF0dXMgPSBudWxsOworCisgICAgLyoqCisgICAgICogU2V0cyB0aGUgZGVmYXVsdCBhc3NlcnRpb24gc3RhdHVzIGZvciB0aGlzIGNsYXNzIGxvYWRlci4gIFRoaXMgc2V0dGluZworICAgICAqIGRldGVybWluZXMgd2hldGhlciBjbGFzc2VzIGxvYWRlZCBieSB0aGlzIGNsYXNzIGxvYWRlciBhbmQgaW5pdGlhbGl6ZWQKKyAgICAgKiBpbiB0aGUgZnV0dXJlIHdpbGwgaGF2ZSBhc3NlcnRpb25zIGVuYWJsZWQgb3IgZGlzYWJsZWQgYnkgZGVmYXVsdC4KKyAgICAgKiBUaGlzIHNldHRpbmcgbWF5IGJlIG92ZXJyaWRkZW4gb24gYSBwZXItcGFja2FnZSBvciBwZXItY2xhc3MgYmFzaXMgYnkKKyAgICAgKiBpbnZva2luZyB7QGxpbmsgI3NldFBhY2thZ2VBc3NlcnRpb25TdGF0dXMoU3RyaW5nLGJvb2xlYW4pfSBvciB7QGxpbmsKKyAgICAgKiAjc2V0Q2xhc3NBc3NlcnRpb25TdGF0dXMoU3RyaW5nLGJvb2xlYW4pfS4KKyAgICAgKgorICAgICAqIEBwYXJhbSBlbmFibGVkIDx0dD50cnVlPC90dD4gaWYgY2xhc3NlcyBsb2FkZWQgYnkgdGhpcyBjbGFzcyBsb2FkZXIKKyAgICAgKiAgICAgICAgd2lsbCBoZW5jZWZvcnRoIGhhdmUgYXNzZXJ0aW9ucyBlbmFibGVkIGJ5IGRlZmF1bHQsCisgICAgICogICAgICAgIDx0dD5mYWxzZTwvdHQ+IGlmIHRoZXkgd2lsbCBoYXZlIGFzc2VydGlvbnMgZGlzYWJsZWQgYnkgZGVmYXVsdC4KKyAgICAgKiBAc2luY2UgMS40CisgICAgICovCisgICAgcHVibGljIHN5bmNocm9uaXplZCB2b2lkIHNldERlZmF1bHRBc3NlcnRpb25TdGF0dXMoYm9vbGVhbiBlbmFibGVkKSB7CisgICAgICAgIGlmIChjbGFzc0Fzc2VydGlvblN0YXR1cyA9PSBudWxsKQorICAgICAgICAgICAgaW5pdGlhbGl6ZUphdmFBc3NlcnRpb25NYXBzKCk7CisKKyAgICAgICAgZGVmYXVsdEFzc2VydGlvblN0YXR1cyA9IGVuYWJsZWQ7CisgICAgfQorCisgICAgLyoqCisgICAgICogU2V0cyB0aGUgcGFja2FnZSBkZWZhdWx0IGFzc2VydGlvbiBzdGF0dXMgZm9yIHRoZSBuYW1lZAorICAgICAqIHBhY2thZ2UuICBUaGUgcGFja2FnZSBkZWZhdWx0IGFzc2VydGlvbiBzdGF0dXMgZGV0ZXJtaW5lcyB0aGUKKyAgICAgKiBhc3NlcnRpb24gc3RhdHVzIGZvciBjbGFzc2VzIGluaXRpYWxpemVkIGluIHRoZSBmdXR1cmUgdGhhdCBiZWxvbmcKKyAgICAgKiB0byB0aGUgbmFtZWQgcGFja2FnZSBvciBhbnkgb2YgaXRzICJzdWJwYWNrYWdlcy4iCisgICAgICogPHA+CisgICAgICogQSBzdWJwYWNrYWdlIG9mIGEgcGFja2FnZSBuYW1lZCBwIGlzIGFueSBwYWNrYWdlIHdob3NlIG5hbWUKKyAgICAgKiBiZWdpbnMgd2l0aCAicC4iIC4gIEZvciBleGFtcGxlLCA8dHQ+amF2YXguc3dpbmcudGV4dDwvdHQ+IGlzCisgICAgICogYSBzdWJwYWNrYWdlIG9mIDx0dD5qYXZheC5zd2luZzwvdHQ+LCBhbmQgYm90aCA8dHQ+amF2YS51dGlsPC90dD4KKyAgICAgKiBhbmQgPHR0PmphdmEubGFuZy5yZWZsZWN0PC90dD4gYXJlIHN1YnBhY2thZ2VzIG9mIDx0dD5qYXZhPC90dD4uCisgICAgICogPHA+CisgICAgICogSW4gdGhlIGV2ZW50IHRoYXQgbXVsdGlwbGUgcGFja2FnZSBkZWZhdWx0cyBhcHBseSB0byBhIGdpdmVuCisgICAgICogY2xhc3MsIHRoZSBwYWNrYWdlIGRlZmF1bHQgcGVydGFpbmluZyB0byB0aGUgbW9zdCBzcGVjaWZpYyBwYWNrYWdlCisgICAgICogdGFrZXMgcHJlY2VkZW5jZSBvdmVyIHRoZSBvdGhlcnMuICBGb3IgZXhhbXBsZSwgaWYKKyAgICAgKiA8dHQ+amF2YXgubGFuZzwvdHQ+IGFuZCA8dHQ+amF2YXgubGFuZy5yZWZsZWN0PC90dD4gYm90aCBoYXZlCisgICAgICogcGFja2FnZSBkZWZhdWx0cyBhc3NvY2lhdGVkIHdpdGggdGhlbSwgdGhlIGxhdHRlciBwYWNrYWdlCisgICAgICogZGVmYXVsdCBhcHBsaWVzIHRvIGNsYXNzZXMgaW4gPHR0PmphdmF4LmxhbmcucmVmbGVjdDwvdHQ+LgorICAgICAqIDxwPgorICAgICAqIFBhY2thZ2UgZGVmYXVsdHMgdGFrZSBwcmVjZWRlbmNlIG92ZXIgdGhlIGNsYXNzIGxvYWRlcidzIGRlZmF1bHQKKyAgICAgKiBhc3NlcnRpb24gc3RhdHVzLCBhbmQgbWF5IGJlIG92ZXJyaWRkZW4gb24gYSBwZXItY2xhc3MgYmFzaXMgYnkKKyAgICAgKiBpbnZva2luZyB7QGxpbmsgI3NldENsYXNzQXNzZXJ0aW9uU3RhdHVzKFN0cmluZyxib29sZWFuKX0uCisgICAgICoKKyAgICAgKiBAcGFyYW0gcGFja2FnZU5hbWUgdGhlIG5hbWUgb2YgdGhlIHBhY2thZ2Ugd2hvc2UgcGFja2FnZSBkZWZhdWx0CisgICAgICogICAgICAgIGFzc2VydGlvbiBzdGF0dXMgaXMgdG8gYmUgc2V0LiBBIG51bGwgdmFsdWUKKyAgICAgKiAgICAgICAgaW5kaWNhdGVzIHRoZSB1bm5hbWVkIHBhY2thZ2UgdGhhdCBpcyAiY3VycmVudCIKKyAgICAgKiAgICAgICAgKEpMUyA3LjQuMikuCisgICAgICogQHBhcmFtIGVuYWJsZWQgPHR0PnRydWU8L3R0PiBpZiBjbGFzc2VzIGxvYWRlZCBieSB0aGlzIGNsYXNzbG9hZGVyCisgICAgICogICAgICAgIGFuZCBiZWxvbmdpbmcgdG8gdGhlIG5hbWVkIHBhY2thZ2Ugb3IgYW55IG9mIGl0cyBzdWJwYWNrYWdlcworICAgICAqICAgICAgICB3aWxsIGhhdmUgYXNzZXJ0aW9ucyBlbmFibGVkIGJ5IGRlZmF1bHQsIDx0dD5mYWxzZTwvdHQ+IGlmIHRoZXkKKyAgICAgKiAgICAgICAgd2lsbCBoYXZlIGFzc2VydGlvbnMgZGlzYWJsZWQgYnkgZGVmYXVsdC4KKyAgICAgKiBAc2luY2UgMS40CisgICAgICovCisgICAgcHVibGljIHN5bmNocm9uaXplZCB2b2lkIHNldFBhY2thZ2VBc3NlcnRpb25TdGF0dXMoU3RyaW5nIHBhY2thZ2VOYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2xlYW4gZW5hYmxlZCkKKyAgICB7CisgICAgICAgIGlmIChwYWNrYWdlQXNzZXJ0aW9uU3RhdHVzID09IG51bGwpCisgICAgICAgICAgICBpbml0aWFsaXplSmF2YUFzc2VydGlvbk1hcHMoKTsKKworICAgICAgICBwYWNrYWdlQXNzZXJ0aW9uU3RhdHVzLnB1dChwYWNrYWdlTmFtZSwgQm9vbGVhbi52YWx1ZU9mKGVuYWJsZWQpKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBTZXRzIHRoZSBkZXNpcmVkIGFzc2VydGlvbiBzdGF0dXMgZm9yIHRoZSBuYW1lZCB0b3AtbGV2ZWwgY2xhc3MgaW4KKyAgICAgKiB0aGlzIGNsYXNzIGxvYWRlciBhbmQgYW55IG5lc3RlZCBjbGFzc2VzIGNvbnRhaW5lZCB0aGVyZWluLgorICAgICAqIFRoaXMgc2V0dGluZyB0YWtlcyBwcmVjZWRlbmNlIG92ZXIgdGhlICBjbGFzcyBsb2FkZXIncyBkZWZhdWx0CisgICAgICogYXNzZXJ0aW9uIHN0YXR1cywgYW5kIG92ZXIgYW55IGFwcGxpY2FibGUgcGVyLXBhY2thZ2UgZGVmYXVsdC4KKyAgICAgKiBUaGlzIG1ldGhvZCBoYXMgbm8gZWZmZWN0IGlmIHRoZSBuYW1lZCBjbGFzcyBoYXMgYWxyZWFkeSBiZWVuCisgICAgICogaW5pdGlhbGl6ZWQuICAoT25jZSBhIGNsYXNzIGlzIGluaXRpYWxpemVkLCBpdHMgYXNzZXJ0aW9uIHN0YXR1cyBjYW5ub3QKKyAgICAgKiBjaGFuZ2UuKQorICAgICAqIDxwPgorICAgICAqIElmIHRoZSBuYW1lZCBjbGFzcyBpcyBub3QgYSB0b3AtbGV2ZWwgY2xhc3MsIHRoaXMgY2FsbCB3aWxsIGhhdmUgbm8KKyAgICAgKiBlZmZlY3Qgb24gdGhlIGFjdHVhbCBhc3NlcnRpb24gc3RhdHVzIG9mIGFueSBjbGFzcywgYW5kIGl0cyByZXR1cm4KKyAgICAgKiB2YWx1ZSBpcyB1bmRlZmluZWQuCisgICAgICoKKyAgICAgKiBAcGFyYW0gY2xhc3NOYW1lIHRoZSBmdWxseSBxdWFsaWZpZWQgY2xhc3MgbmFtZSBvZiB0aGUgdG9wLWxldmVsIGNsYXNzCisgICAgICogICAgICAgIHdob3NlIGFzc2VydGlvbiBzdGF0dXMgaXMgdG8gYmUgc2V0LgorICAgICAqIEBwYXJhbSBlbmFibGVkIDx0dD50cnVlPC90dD4gaWYgdGhlIG5hbWVkIGNsYXNzIGlzIHRvIGhhdmUgYXNzZXJ0aW9ucworICAgICAqICAgICAgICBlbmFibGVkIHdoZW4gKGFuZCBpZikgaXQgaXMgaW5pdGlhbGl6ZWQsIDx0dD5mYWxzZTwvdHQ+IGlmIHRoZQorICAgICAqICAgICAgICBjbGFzcyBpcyB0byBoYXZlIGFzc2VydGlvbnMgZGlzYWJsZWQuCisgICAgICogQHNpbmNlIDEuNAorICAgICAqLworICAgIHB1YmxpYyBzeW5jaHJvbml6ZWQgdm9pZCBzZXRDbGFzc0Fzc2VydGlvblN0YXR1cyhTdHJpbmcgY2xhc3NOYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sZWFuIGVuYWJsZWQpCisgICAgeworICAgICAgICBpZiAoY2xhc3NBc3NlcnRpb25TdGF0dXMgPT0gbnVsbCkKKyAgICAgICAgICAgIGluaXRpYWxpemVKYXZhQXNzZXJ0aW9uTWFwcygpOworCisgICAgICAgIGNsYXNzQXNzZXJ0aW9uU3RhdHVzLnB1dChjbGFzc05hbWUsIEJvb2xlYW4udmFsdWVPZihlbmFibGVkKSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogU2V0cyB0aGUgZGVmYXVsdCBhc3NlcnRpb24gc3RhdHVzIGZvciB0aGlzIGNsYXNzIGxvYWRlciB0bworICAgICAqIDx0dD5mYWxzZTwvdHQ+IGFuZCBkaXNjYXJkcyBhbnkgcGFja2FnZSBkZWZhdWx0cyBvciBjbGFzcyBhc3NlcnRpb24KKyAgICAgKiBzdGF0dXMgc2V0dGluZ3MgYXNzb2NpYXRlZCB3aXRoIHRoZSBjbGFzcyBsb2FkZXIuICBUaGlzIGNhbGwgaXMKKyAgICAgKiBwcm92aWRlZCBzbyB0aGF0IGNsYXNzIGxvYWRlcnMgY2FuIGJlIG1hZGUgdG8gaWdub3JlIGFueSBjb21tYW5kIGxpbmUKKyAgICAgKiBvciBwZXJzaXN0ZW50IGFzc2VydGlvbiBzdGF0dXMgc2V0dGluZ3MgYW5kICJzdGFydCB3aXRoIGEgY2xlYW4gc2xhdGUuIgorICAgICAqCisgICAgICogQHNpbmNlIDEuNAorICAgICAqLworICAgIHB1YmxpYyBzeW5jaHJvbml6ZWQgdm9pZCBjbGVhckFzc2VydGlvblN0YXR1cygpIHsKKyAgICAgICAgLyoKKyAgICAgICAgICogV2hldGhlciBvciBub3QgIkphdmEgYXNzZXJ0aW9uIG1hcHMiIGFyZSBpbml0aWFsaXplZCwgc2V0CisgICAgICAgICAqIHRoZW0gdG8gZW1wdHkgbWFwcywgZWZmZWN0aXZlbHkgaWdub3JpbmcgYW55IHByZXNlbnQgc2V0dGluZ3MuCisgICAgICAgICAqLworICAgICAgICBjbGFzc0Fzc2VydGlvblN0YXR1cyA9IG5ldyBIYXNoTWFwKCk7CisgICAgICAgIHBhY2thZ2VBc3NlcnRpb25TdGF0dXMgPSBuZXcgSGFzaE1hcCgpOworCisgICAgICAgIGRlZmF1bHRBc3NlcnRpb25TdGF0dXMgPSBmYWxzZTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIHRoZSBhc3NlcnRpb24gc3RhdHVzIHRoYXQgd291bGQgYmUgYXNzaWduZWQgdG8gdGhlIHNwZWNpZmllZAorICAgICAqIGNsYXNzIGlmIGl0IHdlcmUgdG8gYmUgaW5pdGlhbGl6ZWQgYXQgdGhlIHRpbWUgdGhpcyBtZXRob2QgaXMgaW52b2tlZC4KKyAgICAgKiBJZiB0aGUgbmFtZWQgY2xhc3MgaGFzIGhhZCBpdHMgYXNzZXJ0aW9uIHN0YXR1cyBzZXQsIHRoZSBtb3N0IHJlY2VudAorICAgICAqIHNldHRpbmcgd2lsbCBiZSByZXR1cm5lZDsgb3RoZXJ3aXNlLCBpZiBhbnkgcGFja2FnZSBkZWZhdWx0IGFzc2VydGlvbgorICAgICAqIHN0YXR1cyBwZXJ0YWlucyB0byB0aGlzIGNsYXNzLCB0aGUgbW9zdCByZWNlbnQgc2V0dGluZyBmb3IgdGhlIG1vc3QKKyAgICAgKiBzcGVjaWZpYyBwZXJ0aW5lbnQgcGFja2FnZSBkZWZhdWx0IGFzc2VydGlvbiBzdGF0dXMgaXMgcmV0dXJuZWQ7CisgICAgICogb3RoZXJ3aXNlLCB0aGlzIGNsYXNzIGxvYWRlcidzIGRlZmF1bHQgYXNzZXJ0aW9uIHN0YXR1cyBpcyByZXR1cm5lZC4KKyAgICAgKgorICAgICAqIEBwYXJhbSAgY2xhc3NOYW1lIHRoZSBmdWxseSBxdWFsaWZpZWQgY2xhc3MgbmFtZSBvZiB0aGUgY2xhc3Mgd2hvc2UKKyAgICAgKiAgICAgICAgIGRlc2lyZWQgYXNzZXJ0aW9uIHN0YXR1cyBpcyBiZWluZyBxdWVyaWVkLgorICAgICAqIEByZXR1cm4gdGhlIGRlc2lyZWQgYXNzZXJ0aW9uIHN0YXR1cyBvZiB0aGUgc3BlY2lmaWVkIGNsYXNzLgorICAgICAqIEBzZWUgICAgI3NldENsYXNzQXNzZXJ0aW9uU3RhdHVzKFN0cmluZyxib29sZWFuKQorICAgICAqIEBzZWUgICAgI3NldFBhY2thZ2VBc3NlcnRpb25TdGF0dXMoU3RyaW5nLGJvb2xlYW4pCisgICAgICogQHNlZSAgICAjc2V0RGVmYXVsdEFzc2VydGlvblN0YXR1cyhib29sZWFuKQorICAgICAqIEBzaW5jZSAgMS40CisgICAgICovCisgICAgc3luY2hyb25pemVkIGJvb2xlYW4gZGVzaXJlZEFzc2VydGlvblN0YXR1cyhTdHJpbmcgY2xhc3NOYW1lKSB7CisgICAgICAgIEJvb2xlYW4gcmVzdWx0OworCisgICAgICAgIC8vIGFzc2VydCBjbGFzc0Fzc2VydGlvblN0YXR1cyAgICE9IG51bGw7CisgICAgICAgIC8vIGFzc2VydCBwYWNrYWdlQXNzZXJ0aW9uU3RhdHVzICE9IG51bGw7CisKKyAgICAgICAgLy8gQ2hlY2sgZm9yIGEgY2xhc3MgZW50cnkKKyAgICAgICAgcmVzdWx0ID0gKEJvb2xlYW4pY2xhc3NBc3NlcnRpb25TdGF0dXMuZ2V0KGNsYXNzTmFtZSk7CisgICAgICAgIGlmIChyZXN1bHQgIT0gbnVsbCkKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQuYm9vbGVhblZhbHVlKCk7CisKKyAgICAgICAgLy8gQ2hlY2sgZm9yIG1vc3Qgc3BlY2lmaWMgcGFja2FnZSBlbnRyeQorICAgICAgICBpbnQgZG90SW5kZXggPSBjbGFzc05hbWUubGFzdEluZGV4T2YoIi4iKTsKKyAgICAgICAgaWYgKGRvdEluZGV4IDwgMCkgeyAvLyBkZWZhdWx0IHBhY2thZ2UKKyAgICAgICAgICAgIHJlc3VsdCA9IChCb29sZWFuKXBhY2thZ2VBc3NlcnRpb25TdGF0dXMuZ2V0KG51bGwpOworICAgICAgICAgICAgaWYgKHJlc3VsdCAhPSBudWxsKQorICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQuYm9vbGVhblZhbHVlKCk7CisgICAgICAgIH0KKyAgICAgICAgd2hpbGUoZG90SW5kZXggPiAwKSB7CisgICAgICAgICAgICBjbGFzc05hbWUgPSBjbGFzc05hbWUuc3Vic3RyaW5nKDAsIGRvdEluZGV4KTsKKyAgICAgICAgICAgIHJlc3VsdCA9IChCb29sZWFuKXBhY2thZ2VBc3NlcnRpb25TdGF0dXMuZ2V0KGNsYXNzTmFtZSk7CisgICAgICAgICAgICBpZiAocmVzdWx0ICE9IG51bGwpCisgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdC5ib29sZWFuVmFsdWUoKTsKKyAgICAgICAgICAgIGRvdEluZGV4ID0gY2xhc3NOYW1lLmxhc3RJbmRleE9mKCIuIiwgZG90SW5kZXgtMSk7CisgICAgICAgIH0KKworICAgICAgICAvLyBSZXR1cm4gdGhlIGNsYXNzbG9hZGVyIGRlZmF1bHQKKyAgICAgICAgcmV0dXJuIGRlZmF1bHRBc3NlcnRpb25TdGF0dXM7CisgICAgfQorCisgICAgLy8gU2V0IHVwIHRoZSBhc3NlcnRpb25zIHdpdGggaW5mb3JtYXRpb24gcHJvdmlkZWQgYnkgdGhlIFZNLgorICAgIHByaXZhdGUgdm9pZCBpbml0aWFsaXplSmF2YUFzc2VydGlvbk1hcHMoKSB7CisgICAgICAgIC8vIGFzc2VydCBUaHJlYWQuaG9sZHNMb2NrKHRoaXMpOworCisgICAgICAgIGNsYXNzQXNzZXJ0aW9uU3RhdHVzID0gbmV3IEhhc2hNYXAoKTsKKyAgICAgICAgcGFja2FnZUFzc2VydGlvblN0YXR1cyA9IG5ldyBIYXNoTWFwKCk7CisgICAgICAgIDxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdBc3NlcnRpb25TdGF0dXNEaXJlY3RpdmVzJyI+QXNzZXJ0aW9uU3RhdHVzRGlyZWN0aXZlczwvZXJyb3I+IGRpcmVjdGl2ZXMgPSByZXRyaWV2ZURpcmVjdGl2ZXMoKTsKKworICAgICAgICBmb3IoaW50IGk9MDsgaTxkaXJlY3RpdmVzLjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdjbGFzc2VzJyI+Y2xhc3NlczwvZXJyb3I+Lmxlbmd0aDsgaSsrKQorICAgICAgICAgICAgY2xhc3NBc3NlcnRpb25TdGF0dXMucHV0KGRpcmVjdGl2ZXMuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ2NsYXNzZXMnIj5jbGFzc2VzPC9lcnJvcj5baV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCb29sZWFuLnZhbHVlT2Y8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIG1ldGhvZCAndmFsdWVPZig/KSciPihkaXJlY3RpdmVzLjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdjbGFzc0VuYWJsZWQnIj5jbGFzc0VuYWJsZWQ8L2Vycm9yPltpXSk8L2Vycm9yPik7CisKKyAgICAgICAgZm9yKGludCBpPTA7IGk8ZGlyZWN0aXZlcy48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAncGFja2FnZXMnIj5wYWNrYWdlczwvZXJyb3I+Lmxlbmd0aDsgaSsrKQorICAgICAgICAgICAgcGFja2FnZUFzc2VydGlvblN0YXR1cy5wdXQoZGlyZWN0aXZlcy48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAncGFja2FnZXMnIj5wYWNrYWdlczwvZXJyb3I+W2ldLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQm9vbGVhbi52YWx1ZU9mPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBtZXRob2QgJ3ZhbHVlT2YoPyknIj4oZGlyZWN0aXZlcy48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAncGFja2FnZUVuYWJsZWQnIj5wYWNrYWdlRW5hYmxlZDwvZXJyb3I+W2ldKTwvZXJyb3I+KTsKKworICAgICAgICBkZWZhdWx0QXNzZXJ0aW9uU3RhdHVzID0gZGlyZWN0aXZlcy48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnZGVmbHQnIj5kZWZsdDwvZXJyb3I+OworICAgIH0KKworICAgIC8vIFJldHJpZXZlcyB0aGUgYXNzZXJ0aW9uIGRpcmVjdGl2ZXMgZnJvbSB0aGUgVk0uCisgICAgcHJpdmF0ZSBzdGF0aWMgbmF0aXZlIDxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdBc3NlcnRpb25TdGF0dXNEaXJlY3RpdmVzJyI+QXNzZXJ0aW9uU3RhdHVzRGlyZWN0aXZlczwvZXJyb3I+IHJldHJpZXZlRGlyZWN0aXZlcygpOworCit9CisKKworY2xhc3MgU3lzdGVtQ2xhc3NMb2FkZXJBY3Rpb24gaW1wbGVtZW50cyA8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnUHJpdmlsZWdlZEV4Y2VwdGlvbkFjdGlvbiciPlByaXZpbGVnZWRFeGNlcHRpb25BY3Rpb248L2Vycm9yPiB7CisgICAgcHJpdmF0ZSBDbGFzc0xvYWRlciBwYXJlbnQ7CisKKyAgICBTeXN0ZW1DbGFzc0xvYWRlckFjdGlvbihDbGFzc0xvYWRlciBwYXJlbnQpIHsKKwl0aGlzLnBhcmVudCA9IHBhcmVudDsKKyAgICB9CisKKyAgICBwdWJsaWMgT2JqZWN0IHJ1bigpIHRocm93cyBFeGNlcHRpb24geworCUNsYXNzTG9hZGVyIHN5czsKKwk8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnQ29uc3RydWN0b3InIj5Db25zdHJ1Y3RvcjwvZXJyb3I+IGN0b3I7CisJQ2xhc3MgYzsKKwlDbGFzcyBjcFtdID0geyBDbGFzc0xvYWRlci5jbGFzcyB9OworCU9iamVjdCBwYXJhbXNbXSA9IHsgcGFyZW50IH07CisKKyAgICAgICAgU3RyaW5nIGNscyA9IFN5c3RlbS5nZXRQcm9wZXJ0eSgiamF2YS5zeXN0ZW0uY2xhc3MubG9hZGVyIik7CisJaWYgKGNscyA9PSBudWxsKSB7CisJICAgIHJldHVybiBwYXJlbnQ7CisJfQorCisJYyA9IENsYXNzLmZvck5hbWU8ZXJyb3IgZGVzY3I9Iidmb3JOYW1lKGphdmEubGFuZy5TdHJpbmcsIGJvb2xlYW4sIGphdmEubGFuZy5DbGFzc0xvYWRlciknIGluICdqYXZhLmxhbmcuQ2xhc3MnIGNhbm5vdCBiZSBhcHBsaWVkIHRvICcoamF2YS5sYW5nLlN0cmluZywgYm9vbGVhbiwgQ2xhc3NMb2FkZXIpJyI+KGNscywgdHJ1ZSwgcGFyZW50KTwvZXJyb3I+OworCWN0b3IgPSBjLmdldERlY2xhcmVkQ29uc3RydWN0b3IoY3ApOworCXN5cyA9IChDbGFzc0xvYWRlcikgY3Rvci48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIG1ldGhvZCAnbmV3SW5zdGFuY2UoamF2YS5sYW5nLk9iamVjdFtdKSciPm5ld0luc3RhbmNlPC9lcnJvcj4ocGFyYW1zKTsKKwlUaHJlYWQuY3VycmVudFRocmVhZCgpLnNldENvbnRleHRDbGFzc0xvYWRlcjxlcnJvciBkZXNjcj0iJ3NldENvbnRleHRDbGFzc0xvYWRlcihqYXZhLmxhbmcuQ2xhc3NMb2FkZXIpJyBpbiAnamF2YS5sYW5nLlRocmVhZCcgY2Fubm90IGJlIGFwcGxpZWQgdG8gJyhDbGFzc0xvYWRlciknIj4oc3lzKTwvZXJyb3I+OworCXJldHVybiBzeXM7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvYU1ldGhvZHMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nL2FNZXRob2RzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzc5YTFhOAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nL2FNZXRob2RzLmphdmEKQEAgLTAsMCArMSwzMDAyIEBACitjbGFzcyBhX01lIHsgCisgIHZvaWQgbWV0aG9kMCAoKSB7IH0KKyAgdm9pZCBtZXRob2QxICgpIHsgfQorICB2b2lkIG1ldGhvZDIgKCkgeyB9CisgIHZvaWQgbWV0aG9kMyAoKSB7IH0KKyAgdm9pZCBtZXRob2Q0ICgpIHsgfQorICB2b2lkIG1ldGhvZDUgKCkgeyB9CisgIHZvaWQgbWV0aG9kNiAoKSB7IH0KKyAgdm9pZCBtZXRob2Q3ICgpIHsgfQorICB2b2lkIG1ldGhvZDggKCkgeyB9CisgIHZvaWQgbWV0aG9kOSAoKSB7IH0KKyAgdm9pZCBtZXRob2QxMCAoKSB7IH0KKyAgdm9pZCBtZXRob2QxMSAoKSB7IH0KKyAgdm9pZCBtZXRob2QxMiAoKSB7IH0KKyAgdm9pZCBtZXRob2QxMyAoKSB7IH0KKyAgdm9pZCBtZXRob2QxNCAoKSB7IH0KKyAgdm9pZCBtZXRob2QxNSAoKSB7IH0KKyAgdm9pZCBtZXRob2QxNiAoKSB7IH0KKyAgdm9pZCBtZXRob2QxNyAoKSB7IH0KKyAgdm9pZCBtZXRob2QxOCAoKSB7IH0KKyAgdm9pZCBtZXRob2QxOSAoKSB7IH0KKyAgdm9pZCBtZXRob2QyMCAoKSB7IH0KKyAgdm9pZCBtZXRob2QyMSAoKSB7IH0KKyAgdm9pZCBtZXRob2QyMiAoKSB7IH0KKyAgdm9pZCBtZXRob2QyMyAoKSB7IH0KKyAgdm9pZCBtZXRob2QyNCAoKSB7IH0KKyAgdm9pZCBtZXRob2QyNSAoKSB7IH0KKyAgdm9pZCBtZXRob2QyNiAoKSB7IH0KKyAgdm9pZCBtZXRob2QyNyAoKSB7IH0KKyAgdm9pZCBtZXRob2QyOCAoKSB7IH0KKyAgdm9pZCBtZXRob2QyOSAoKSB7IH0KKyAgdm9pZCBtZXRob2QzMCAoKSB7IH0KKyAgdm9pZCBtZXRob2QzMSAoKSB7IH0KKyAgdm9pZCBtZXRob2QzMiAoKSB7IH0KKyAgdm9pZCBtZXRob2QzMyAoKSB7IH0KKyAgdm9pZCBtZXRob2QzNCAoKSB7IH0KKyAgdm9pZCBtZXRob2QzNSAoKSB7IH0KKyAgdm9pZCBtZXRob2QzNiAoKSB7IH0KKyAgdm9pZCBtZXRob2QzNyAoKSB7IH0KKyAgdm9pZCBtZXRob2QzOCAoKSB7IH0KKyAgdm9pZCBtZXRob2QzOSAoKSB7IH0KKyAgdm9pZCBtZXRob2Q0MCAoKSB7IH0KKyAgdm9pZCBtZXRob2Q0MSAoKSB7IH0KKyAgdm9pZCBtZXRob2Q0MiAoKSB7IH0KKyAgdm9pZCBtZXRob2Q0MyAoKSB7IH0KKyAgdm9pZCBtZXRob2Q0NCAoKSB7IH0KKyAgdm9pZCBtZXRob2Q0NSAoKSB7IH0KKyAgdm9pZCBtZXRob2Q0NiAoKSB7IH0KKyAgdm9pZCBtZXRob2Q0NyAoKSB7IH0KKyAgdm9pZCBtZXRob2Q0OCAoKSB7IH0KKyAgdm9pZCBtZXRob2Q0OSAoKSB7IH0KKyAgdm9pZCBtZXRob2Q1MCAoKSB7IH0KKyAgdm9pZCBtZXRob2Q1MSAoKSB7IH0KKyAgdm9pZCBtZXRob2Q1MiAoKSB7IH0KKyAgdm9pZCBtZXRob2Q1MyAoKSB7IH0KKyAgdm9pZCBtZXRob2Q1NCAoKSB7IH0KKyAgdm9pZCBtZXRob2Q1NSAoKSB7IH0KKyAgdm9pZCBtZXRob2Q1NiAoKSB7IH0KKyAgdm9pZCBtZXRob2Q1NyAoKSB7IH0KKyAgdm9pZCBtZXRob2Q1OCAoKSB7IH0KKyAgdm9pZCBtZXRob2Q1OSAoKSB7IH0KKyAgdm9pZCBtZXRob2Q2MCAoKSB7IH0KKyAgdm9pZCBtZXRob2Q2MSAoKSB7IH0KKyAgdm9pZCBtZXRob2Q2MiAoKSB7IH0KKyAgdm9pZCBtZXRob2Q2MyAoKSB7IH0KKyAgdm9pZCBtZXRob2Q2NCAoKSB7IH0KKyAgdm9pZCBtZXRob2Q2NSAoKSB7IH0KKyAgdm9pZCBtZXRob2Q2NiAoKSB7IH0KKyAgdm9pZCBtZXRob2Q2NyAoKSB7IH0KKyAgdm9pZCBtZXRob2Q2OCAoKSB7IH0KKyAgdm9pZCBtZXRob2Q2OSAoKSB7IH0KKyAgdm9pZCBtZXRob2Q3MCAoKSB7IH0KKyAgdm9pZCBtZXRob2Q3MSAoKSB7IH0KKyAgdm9pZCBtZXRob2Q3MiAoKSB7IH0KKyAgdm9pZCBtZXRob2Q3MyAoKSB7IH0KKyAgdm9pZCBtZXRob2Q3NCAoKSB7IH0KKyAgdm9pZCBtZXRob2Q3NSAoKSB7IH0KKyAgdm9pZCBtZXRob2Q3NiAoKSB7IH0KKyAgdm9pZCBtZXRob2Q3NyAoKSB7IH0KKyAgdm9pZCBtZXRob2Q3OCAoKSB7IH0KKyAgdm9pZCBtZXRob2Q3OSAoKSB7IH0KKyAgdm9pZCBtZXRob2Q4MCAoKSB7IH0KKyAgdm9pZCBtZXRob2Q4MSAoKSB7IH0KKyAgdm9pZCBtZXRob2Q4MiAoKSB7IH0KKyAgdm9pZCBtZXRob2Q4MyAoKSB7IH0KKyAgdm9pZCBtZXRob2Q4NCAoKSB7IH0KKyAgdm9pZCBtZXRob2Q4NSAoKSB7IH0KKyAgdm9pZCBtZXRob2Q4NiAoKSB7IH0KKyAgdm9pZCBtZXRob2Q4NyAoKSB7IH0KKyAgdm9pZCBtZXRob2Q4OCAoKSB7IH0KKyAgdm9pZCBtZXRob2Q4OSAoKSB7IH0KKyAgdm9pZCBtZXRob2Q5MCAoKSB7IH0KKyAgdm9pZCBtZXRob2Q5MSAoKSB7IH0KKyAgdm9pZCBtZXRob2Q5MiAoKSB7IH0KKyAgdm9pZCBtZXRob2Q5MyAoKSB7IH0KKyAgdm9pZCBtZXRob2Q5NCAoKSB7IH0KKyAgdm9pZCBtZXRob2Q5NSAoKSB7IH0KKyAgdm9pZCBtZXRob2Q5NiAoKSB7IH0KKyAgdm9pZCBtZXRob2Q5NyAoKSB7IH0KKyAgdm9pZCBtZXRob2Q5OCAoKSB7IH0KKyAgdm9pZCBtZXRob2Q5OSAoKSB7IH0KKyAgdm9pZCBtZXRob2QxMDAgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTAxICgpIHsgfQorICB2b2lkIG1ldGhvZDEwMiAoKSB7IH0KKyAgdm9pZCBtZXRob2QxMDMgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTA0ICgpIHsgfQorICB2b2lkIG1ldGhvZDEwNSAoKSB7IH0KKyAgdm9pZCBtZXRob2QxMDYgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTA3ICgpIHsgfQorICB2b2lkIG1ldGhvZDEwOCAoKSB7IH0KKyAgdm9pZCBtZXRob2QxMDkgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTEwICgpIHsgfQorICB2b2lkIG1ldGhvZDExMSAoKSB7IH0KKyAgdm9pZCBtZXRob2QxMTIgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTEzICgpIHsgfQorICB2b2lkIG1ldGhvZDExNCAoKSB7IH0KKyAgdm9pZCBtZXRob2QxMTUgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTE2ICgpIHsgfQorICB2b2lkIG1ldGhvZDExNyAoKSB7IH0KKyAgdm9pZCBtZXRob2QxMTggKCkgeyB9CisgIHZvaWQgbWV0aG9kMTE5ICgpIHsgfQorICB2b2lkIG1ldGhvZDEyMCAoKSB7IH0KKyAgdm9pZCBtZXRob2QxMjEgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTIyICgpIHsgfQorICB2b2lkIG1ldGhvZDEyMyAoKSB7IH0KKyAgdm9pZCBtZXRob2QxMjQgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTI1ICgpIHsgfQorICB2b2lkIG1ldGhvZDEyNiAoKSB7IH0KKyAgdm9pZCBtZXRob2QxMjcgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTI4ICgpIHsgfQorICB2b2lkIG1ldGhvZDEyOSAoKSB7IH0KKyAgdm9pZCBtZXRob2QxMzAgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTMxICgpIHsgfQorICB2b2lkIG1ldGhvZDEzMiAoKSB7IH0KKyAgdm9pZCBtZXRob2QxMzMgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTM0ICgpIHsgfQorICB2b2lkIG1ldGhvZDEzNSAoKSB7IH0KKyAgdm9pZCBtZXRob2QxMzYgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTM3ICgpIHsgfQorICB2b2lkIG1ldGhvZDEzOCAoKSB7IH0KKyAgdm9pZCBtZXRob2QxMzkgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTQwICgpIHsgfQorICB2b2lkIG1ldGhvZDE0MSAoKSB7IH0KKyAgdm9pZCBtZXRob2QxNDIgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTQzICgpIHsgfQorICB2b2lkIG1ldGhvZDE0NCAoKSB7IH0KKyAgdm9pZCBtZXRob2QxNDUgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTQ2ICgpIHsgfQorICB2b2lkIG1ldGhvZDE0NyAoKSB7IH0KKyAgdm9pZCBtZXRob2QxNDggKCkgeyB9CisgIHZvaWQgbWV0aG9kMTQ5ICgpIHsgfQorICB2b2lkIG1ldGhvZDE1MCAoKSB7IH0KKyAgdm9pZCBtZXRob2QxNTEgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTUyICgpIHsgfQorICB2b2lkIG1ldGhvZDE1MyAoKSB7IH0KKyAgdm9pZCBtZXRob2QxNTQgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTU1ICgpIHsgfQorICB2b2lkIG1ldGhvZDE1NiAoKSB7IH0KKyAgdm9pZCBtZXRob2QxNTcgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTU4ICgpIHsgfQorICB2b2lkIG1ldGhvZDE1OSAoKSB7IH0KKyAgdm9pZCBtZXRob2QxNjAgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTYxICgpIHsgfQorICB2b2lkIG1ldGhvZDE2MiAoKSB7IH0KKyAgdm9pZCBtZXRob2QxNjMgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTY0ICgpIHsgfQorICB2b2lkIG1ldGhvZDE2NSAoKSB7IH0KKyAgdm9pZCBtZXRob2QxNjYgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTY3ICgpIHsgfQorICB2b2lkIG1ldGhvZDE2OCAoKSB7IH0KKyAgdm9pZCBtZXRob2QxNjkgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTcwICgpIHsgfQorICB2b2lkIG1ldGhvZDE3MSAoKSB7IH0KKyAgdm9pZCBtZXRob2QxNzIgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTczICgpIHsgfQorICB2b2lkIG1ldGhvZDE3NCAoKSB7IH0KKyAgdm9pZCBtZXRob2QxNzUgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTc2ICgpIHsgfQorICB2b2lkIG1ldGhvZDE3NyAoKSB7IH0KKyAgdm9pZCBtZXRob2QxNzggKCkgeyB9CisgIHZvaWQgbWV0aG9kMTc5ICgpIHsgfQorICB2b2lkIG1ldGhvZDE4MCAoKSB7IH0KKyAgdm9pZCBtZXRob2QxODEgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTgyICgpIHsgfQorICB2b2lkIG1ldGhvZDE4MyAoKSB7IH0KKyAgdm9pZCBtZXRob2QxODQgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTg1ICgpIHsgfQorICB2b2lkIG1ldGhvZDE4NiAoKSB7IH0KKyAgdm9pZCBtZXRob2QxODcgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTg4ICgpIHsgfQorICB2b2lkIG1ldGhvZDE4OSAoKSB7IH0KKyAgdm9pZCBtZXRob2QxOTAgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTkxICgpIHsgfQorICB2b2lkIG1ldGhvZDE5MiAoKSB7IH0KKyAgdm9pZCBtZXRob2QxOTMgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTk0ICgpIHsgfQorICB2b2lkIG1ldGhvZDE5NSAoKSB7IH0KKyAgdm9pZCBtZXRob2QxOTYgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTk3ICgpIHsgfQorICB2b2lkIG1ldGhvZDE5OCAoKSB7IH0KKyAgdm9pZCBtZXRob2QxOTkgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjAwICgpIHsgfQorICB2b2lkIG1ldGhvZDIwMSAoKSB7IH0KKyAgdm9pZCBtZXRob2QyMDIgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjAzICgpIHsgfQorICB2b2lkIG1ldGhvZDIwNCAoKSB7IH0KKyAgdm9pZCBtZXRob2QyMDUgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjA2ICgpIHsgfQorICB2b2lkIG1ldGhvZDIwNyAoKSB7IH0KKyAgdm9pZCBtZXRob2QyMDggKCkgeyB9CisgIHZvaWQgbWV0aG9kMjA5ICgpIHsgfQorICB2b2lkIG1ldGhvZDIxMCAoKSB7IH0KKyAgdm9pZCBtZXRob2QyMTEgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjEyICgpIHsgfQorICB2b2lkIG1ldGhvZDIxMyAoKSB7IH0KKyAgdm9pZCBtZXRob2QyMTQgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjE1ICgpIHsgfQorICB2b2lkIG1ldGhvZDIxNiAoKSB7IH0KKyAgdm9pZCBtZXRob2QyMTcgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjE4ICgpIHsgfQorICB2b2lkIG1ldGhvZDIxOSAoKSB7IH0KKyAgdm9pZCBtZXRob2QyMjAgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjIxICgpIHsgfQorICB2b2lkIG1ldGhvZDIyMiAoKSB7IH0KKyAgdm9pZCBtZXRob2QyMjMgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjI0ICgpIHsgfQorICB2b2lkIG1ldGhvZDIyNSAoKSB7IH0KKyAgdm9pZCBtZXRob2QyMjYgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjI3ICgpIHsgfQorICB2b2lkIG1ldGhvZDIyOCAoKSB7IH0KKyAgdm9pZCBtZXRob2QyMjkgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjMwICgpIHsgfQorICB2b2lkIG1ldGhvZDIzMSAoKSB7IH0KKyAgdm9pZCBtZXRob2QyMzIgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjMzICgpIHsgfQorICB2b2lkIG1ldGhvZDIzNCAoKSB7IH0KKyAgdm9pZCBtZXRob2QyMzUgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjM2ICgpIHsgfQorICB2b2lkIG1ldGhvZDIzNyAoKSB7IH0KKyAgdm9pZCBtZXRob2QyMzggKCkgeyB9CisgIHZvaWQgbWV0aG9kMjM5ICgpIHsgfQorICB2b2lkIG1ldGhvZDI0MCAoKSB7IH0KKyAgdm9pZCBtZXRob2QyNDEgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjQyICgpIHsgfQorICB2b2lkIG1ldGhvZDI0MyAoKSB7IH0KKyAgdm9pZCBtZXRob2QyNDQgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjQ1ICgpIHsgfQorICB2b2lkIG1ldGhvZDI0NiAoKSB7IH0KKyAgdm9pZCBtZXRob2QyNDcgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjQ4ICgpIHsgfQorICB2b2lkIG1ldGhvZDI0OSAoKSB7IH0KKyAgdm9pZCBtZXRob2QyNTAgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjUxICgpIHsgfQorICB2b2lkIG1ldGhvZDI1MiAoKSB7IH0KKyAgdm9pZCBtZXRob2QyNTMgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjU0ICgpIHsgfQorICB2b2lkIG1ldGhvZDI1NSAoKSB7IH0KKyAgdm9pZCBtZXRob2QyNTYgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjU3ICgpIHsgfQorICB2b2lkIG1ldGhvZDI1OCAoKSB7IH0KKyAgdm9pZCBtZXRob2QyNTkgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjYwICgpIHsgfQorICB2b2lkIG1ldGhvZDI2MSAoKSB7IH0KKyAgdm9pZCBtZXRob2QyNjIgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjYzICgpIHsgfQorICB2b2lkIG1ldGhvZDI2NCAoKSB7IH0KKyAgdm9pZCBtZXRob2QyNjUgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjY2ICgpIHsgfQorICB2b2lkIG1ldGhvZDI2NyAoKSB7IH0KKyAgdm9pZCBtZXRob2QyNjggKCkgeyB9CisgIHZvaWQgbWV0aG9kMjY5ICgpIHsgfQorICB2b2lkIG1ldGhvZDI3MCAoKSB7IH0KKyAgdm9pZCBtZXRob2QyNzEgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjcyICgpIHsgfQorICB2b2lkIG1ldGhvZDI3MyAoKSB7IH0KKyAgdm9pZCBtZXRob2QyNzQgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjc1ICgpIHsgfQorICB2b2lkIG1ldGhvZDI3NiAoKSB7IH0KKyAgdm9pZCBtZXRob2QyNzcgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjc4ICgpIHsgfQorICB2b2lkIG1ldGhvZDI3OSAoKSB7IH0KKyAgdm9pZCBtZXRob2QyODAgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjgxICgpIHsgfQorICB2b2lkIG1ldGhvZDI4MiAoKSB7IH0KKyAgdm9pZCBtZXRob2QyODMgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjg0ICgpIHsgfQorICB2b2lkIG1ldGhvZDI4NSAoKSB7IH0KKyAgdm9pZCBtZXRob2QyODYgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjg3ICgpIHsgfQorICB2b2lkIG1ldGhvZDI4OCAoKSB7IH0KKyAgdm9pZCBtZXRob2QyODkgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjkwICgpIHsgfQorICB2b2lkIG1ldGhvZDI5MSAoKSB7IH0KKyAgdm9pZCBtZXRob2QyOTIgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjkzICgpIHsgfQorICB2b2lkIG1ldGhvZDI5NCAoKSB7IH0KKyAgdm9pZCBtZXRob2QyOTUgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjk2ICgpIHsgfQorICB2b2lkIG1ldGhvZDI5NyAoKSB7IH0KKyAgdm9pZCBtZXRob2QyOTggKCkgeyB9CisgIHZvaWQgbWV0aG9kMjk5ICgpIHsgfQorICB2b2lkIG1ldGhvZDMwMCAoKSB7IH0KKyAgdm9pZCBtZXRob2QzMDEgKCkgeyB9CisgIHZvaWQgbWV0aG9kMzAyICgpIHsgfQorICB2b2lkIG1ldGhvZDMwMyAoKSB7IH0KKyAgdm9pZCBtZXRob2QzMDQgKCkgeyB9CisgIHZvaWQgbWV0aG9kMzA1ICgpIHsgfQorICB2b2lkIG1ldGhvZDMwNiAoKSB7IH0KKyAgdm9pZCBtZXRob2QzMDcgKCkgeyB9CisgIHZvaWQgbWV0aG9kMzA4ICgpIHsgfQorICB2b2lkIG1ldGhvZDMwOSAoKSB7IH0KKyAgdm9pZCBtZXRob2QzMTAgKCkgeyB9CisgIHZvaWQgbWV0aG9kMzExICgpIHsgfQorICB2b2lkIG1ldGhvZDMxMiAoKSB7IH0KKyAgdm9pZCBtZXRob2QzMTMgKCkgeyB9CisgIHZvaWQgbWV0aG9kMzE0ICgpIHsgfQorICB2b2lkIG1ldGhvZDMxNSAoKSB7IH0KKyAgdm9pZCBtZXRob2QzMTYgKCkgeyB9CisgIHZvaWQgbWV0aG9kMzE3ICgpIHsgfQorICB2b2lkIG1ldGhvZDMxOCAoKSB7IH0KKyAgdm9pZCBtZXRob2QzMTkgKCkgeyB9CisgIHZvaWQgbWV0aG9kMzIwICgpIHsgfQorICB2b2lkIG1ldGhvZDMyMSAoKSB7IH0KKyAgdm9pZCBtZXRob2QzMjIgKCkgeyB9CisgIHZvaWQgbWV0aG9kMzIzICgpIHsgfQorICB2b2lkIG1ldGhvZDMyNCAoKSB7IH0KKyAgdm9pZCBtZXRob2QzMjUgKCkgeyB9CisgIHZvaWQgbWV0aG9kMzI2ICgpIHsgfQorICB2b2lkIG1ldGhvZDMyNyAoKSB7IH0KKyAgdm9pZCBtZXRob2QzMjggKCkgeyB9CisgIHZvaWQgbWV0aG9kMzI5ICgpIHsgfQorICB2b2lkIG1ldGhvZDMzMCAoKSB7IH0KKyAgdm9pZCBtZXRob2QzMzEgKCkgeyB9CisgIHZvaWQgbWV0aG9kMzMyICgpIHsgfQorICB2b2lkIG1ldGhvZDMzMyAoKSB7IH0KKyAgdm9pZCBtZXRob2QzMzQgKCkgeyB9CisgIHZvaWQgbWV0aG9kMzM1ICgpIHsgfQorICB2b2lkIG1ldGhvZDMzNiAoKSB7IH0KKyAgdm9pZCBtZXRob2QzMzcgKCkgeyB9CisgIHZvaWQgbWV0aG9kMzM4ICgpIHsgfQorICB2b2lkIG1ldGhvZDMzOSAoKSB7IH0KKyAgdm9pZCBtZXRob2QzNDAgKCkgeyB9CisgIHZvaWQgbWV0aG9kMzQxICgpIHsgfQorICB2b2lkIG1ldGhvZDM0MiAoKSB7IH0KKyAgdm9pZCBtZXRob2QzNDMgKCkgeyB9CisgIHZvaWQgbWV0aG9kMzQ0ICgpIHsgfQorICB2b2lkIG1ldGhvZDM0NSAoKSB7IH0KKyAgdm9pZCBtZXRob2QzNDYgKCkgeyB9CisgIHZvaWQgbWV0aG9kMzQ3ICgpIHsgfQorICB2b2lkIG1ldGhvZDM0OCAoKSB7IH0KKyAgdm9pZCBtZXRob2QzNDkgKCkgeyB9CisgIHZvaWQgbWV0aG9kMzUwICgpIHsgfQorICB2b2lkIG1ldGhvZDM1MSAoKSB7IH0KKyAgdm9pZCBtZXRob2QzNTIgKCkgeyB9CisgIHZvaWQgbWV0aG9kMzUzICgpIHsgfQorICB2b2lkIG1ldGhvZDM1NCAoKSB7IH0KKyAgdm9pZCBtZXRob2QzNTUgKCkgeyB9CisgIHZvaWQgbWV0aG9kMzU2ICgpIHsgfQorICB2b2lkIG1ldGhvZDM1NyAoKSB7IH0KKyAgdm9pZCBtZXRob2QzNTggKCkgeyB9CisgIHZvaWQgbWV0aG9kMzU5ICgpIHsgfQorICB2b2lkIG1ldGhvZDM2MCAoKSB7IH0KKyAgdm9pZCBtZXRob2QzNjEgKCkgeyB9CisgIHZvaWQgbWV0aG9kMzYyICgpIHsgfQorICB2b2lkIG1ldGhvZDM2MyAoKSB7IH0KKyAgdm9pZCBtZXRob2QzNjQgKCkgeyB9CisgIHZvaWQgbWV0aG9kMzY1ICgpIHsgfQorICB2b2lkIG1ldGhvZDM2NiAoKSB7IH0KKyAgdm9pZCBtZXRob2QzNjcgKCkgeyB9CisgIHZvaWQgbWV0aG9kMzY4ICgpIHsgfQorICB2b2lkIG1ldGhvZDM2OSAoKSB7IH0KKyAgdm9pZCBtZXRob2QzNzAgKCkgeyB9CisgIHZvaWQgbWV0aG9kMzcxICgpIHsgfQorICB2b2lkIG1ldGhvZDM3MiAoKSB7IH0KKyAgdm9pZCBtZXRob2QzNzMgKCkgeyB9CisgIHZvaWQgbWV0aG9kMzc0ICgpIHsgfQorICB2b2lkIG1ldGhvZDM3NSAoKSB7IH0KKyAgdm9pZCBtZXRob2QzNzYgKCkgeyB9CisgIHZvaWQgbWV0aG9kMzc3ICgpIHsgfQorICB2b2lkIG1ldGhvZDM3OCAoKSB7IH0KKyAgdm9pZCBtZXRob2QzNzkgKCkgeyB9CisgIHZvaWQgbWV0aG9kMzgwICgpIHsgfQorICB2b2lkIG1ldGhvZDM4MSAoKSB7IH0KKyAgdm9pZCBtZXRob2QzODIgKCkgeyB9CisgIHZvaWQgbWV0aG9kMzgzICgpIHsgfQorICB2b2lkIG1ldGhvZDM4NCAoKSB7IH0KKyAgdm9pZCBtZXRob2QzODUgKCkgeyB9CisgIHZvaWQgbWV0aG9kMzg2ICgpIHsgfQorICB2b2lkIG1ldGhvZDM4NyAoKSB7IH0KKyAgdm9pZCBtZXRob2QzODggKCkgeyB9CisgIHZvaWQgbWV0aG9kMzg5ICgpIHsgfQorICB2b2lkIG1ldGhvZDM5MCAoKSB7IH0KKyAgdm9pZCBtZXRob2QzOTEgKCkgeyB9CisgIHZvaWQgbWV0aG9kMzkyICgpIHsgfQorICB2b2lkIG1ldGhvZDM5MyAoKSB7IH0KKyAgdm9pZCBtZXRob2QzOTQgKCkgeyB9CisgIHZvaWQgbWV0aG9kMzk1ICgpIHsgfQorICB2b2lkIG1ldGhvZDM5NiAoKSB7IH0KKyAgdm9pZCBtZXRob2QzOTcgKCkgeyB9CisgIHZvaWQgbWV0aG9kMzk4ICgpIHsgfQorICB2b2lkIG1ldGhvZDM5OSAoKSB7IH0KKyAgdm9pZCBtZXRob2Q0MDAgKCkgeyB9CisgIHZvaWQgbWV0aG9kNDAxICgpIHsgfQorICB2b2lkIG1ldGhvZDQwMiAoKSB7IH0KKyAgdm9pZCBtZXRob2Q0MDMgKCkgeyB9CisgIHZvaWQgbWV0aG9kNDA0ICgpIHsgfQorICB2b2lkIG1ldGhvZDQwNSAoKSB7IH0KKyAgdm9pZCBtZXRob2Q0MDYgKCkgeyB9CisgIHZvaWQgbWV0aG9kNDA3ICgpIHsgfQorICB2b2lkIG1ldGhvZDQwOCAoKSB7IH0KKyAgdm9pZCBtZXRob2Q0MDkgKCkgeyB9CisgIHZvaWQgbWV0aG9kNDEwICgpIHsgfQorICB2b2lkIG1ldGhvZDQxMSAoKSB7IH0KKyAgdm9pZCBtZXRob2Q0MTIgKCkgeyB9CisgIHZvaWQgbWV0aG9kNDEzICgpIHsgfQorICB2b2lkIG1ldGhvZDQxNCAoKSB7IH0KKyAgdm9pZCBtZXRob2Q0MTUgKCkgeyB9CisgIHZvaWQgbWV0aG9kNDE2ICgpIHsgfQorICB2b2lkIG1ldGhvZDQxNyAoKSB7IH0KKyAgdm9pZCBtZXRob2Q0MTggKCkgeyB9CisgIHZvaWQgbWV0aG9kNDE5ICgpIHsgfQorICB2b2lkIG1ldGhvZDQyMCAoKSB7IH0KKyAgdm9pZCBtZXRob2Q0MjEgKCkgeyB9CisgIHZvaWQgbWV0aG9kNDIyICgpIHsgfQorICB2b2lkIG1ldGhvZDQyMyAoKSB7IH0KKyAgdm9pZCBtZXRob2Q0MjQgKCkgeyB9CisgIHZvaWQgbWV0aG9kNDI1ICgpIHsgfQorICB2b2lkIG1ldGhvZDQyNiAoKSB7IH0KKyAgdm9pZCBtZXRob2Q0MjcgKCkgeyB9CisgIHZvaWQgbWV0aG9kNDI4ICgpIHsgfQorICB2b2lkIG1ldGhvZDQyOSAoKSB7IH0KKyAgdm9pZCBtZXRob2Q0MzAgKCkgeyB9CisgIHZvaWQgbWV0aG9kNDMxICgpIHsgfQorICB2b2lkIG1ldGhvZDQzMiAoKSB7IH0KKyAgdm9pZCBtZXRob2Q0MzMgKCkgeyB9CisgIHZvaWQgbWV0aG9kNDM0ICgpIHsgfQorICB2b2lkIG1ldGhvZDQzNSAoKSB7IH0KKyAgdm9pZCBtZXRob2Q0MzYgKCkgeyB9CisgIHZvaWQgbWV0aG9kNDM3ICgpIHsgfQorICB2b2lkIG1ldGhvZDQzOCAoKSB7IH0KKyAgdm9pZCBtZXRob2Q0MzkgKCkgeyB9CisgIHZvaWQgbWV0aG9kNDQwICgpIHsgfQorICB2b2lkIG1ldGhvZDQ0MSAoKSB7IH0KKyAgdm9pZCBtZXRob2Q0NDIgKCkgeyB9CisgIHZvaWQgbWV0aG9kNDQzICgpIHsgfQorICB2b2lkIG1ldGhvZDQ0NCAoKSB7IH0KKyAgdm9pZCBtZXRob2Q0NDUgKCkgeyB9CisgIHZvaWQgbWV0aG9kNDQ2ICgpIHsgfQorICB2b2lkIG1ldGhvZDQ0NyAoKSB7IH0KKyAgdm9pZCBtZXRob2Q0NDggKCkgeyB9CisgIHZvaWQgbWV0aG9kNDQ5ICgpIHsgfQorICB2b2lkIG1ldGhvZDQ1MCAoKSB7IH0KKyAgdm9pZCBtZXRob2Q0NTEgKCkgeyB9CisgIHZvaWQgbWV0aG9kNDUyICgpIHsgfQorICB2b2lkIG1ldGhvZDQ1MyAoKSB7IH0KKyAgdm9pZCBtZXRob2Q0NTQgKCkgeyB9CisgIHZvaWQgbWV0aG9kNDU1ICgpIHsgfQorICB2b2lkIG1ldGhvZDQ1NiAoKSB7IH0KKyAgdm9pZCBtZXRob2Q0NTcgKCkgeyB9CisgIHZvaWQgbWV0aG9kNDU4ICgpIHsgfQorICB2b2lkIG1ldGhvZDQ1OSAoKSB7IH0KKyAgdm9pZCBtZXRob2Q0NjAgKCkgeyB9CisgIHZvaWQgbWV0aG9kNDYxICgpIHsgfQorICB2b2lkIG1ldGhvZDQ2MiAoKSB7IH0KKyAgdm9pZCBtZXRob2Q0NjMgKCkgeyB9CisgIHZvaWQgbWV0aG9kNDY0ICgpIHsgfQorICB2b2lkIG1ldGhvZDQ2NSAoKSB7IH0KKyAgdm9pZCBtZXRob2Q0NjYgKCkgeyB9CisgIHZvaWQgbWV0aG9kNDY3ICgpIHsgfQorICB2b2lkIG1ldGhvZDQ2OCAoKSB7IH0KKyAgdm9pZCBtZXRob2Q0NjkgKCkgeyB9CisgIHZvaWQgbWV0aG9kNDcwICgpIHsgfQorICB2b2lkIG1ldGhvZDQ3MSAoKSB7IH0KKyAgdm9pZCBtZXRob2Q0NzIgKCkgeyB9CisgIHZvaWQgbWV0aG9kNDczICgpIHsgfQorICB2b2lkIG1ldGhvZDQ3NCAoKSB7IH0KKyAgdm9pZCBtZXRob2Q0NzUgKCkgeyB9CisgIHZvaWQgbWV0aG9kNDc2ICgpIHsgfQorICB2b2lkIG1ldGhvZDQ3NyAoKSB7IH0KKyAgdm9pZCBtZXRob2Q0NzggKCkgeyB9CisgIHZvaWQgbWV0aG9kNDc5ICgpIHsgfQorICB2b2lkIG1ldGhvZDQ4MCAoKSB7IH0KKyAgdm9pZCBtZXRob2Q0ODEgKCkgeyB9CisgIHZvaWQgbWV0aG9kNDgyICgpIHsgfQorICB2b2lkIG1ldGhvZDQ4MyAoKSB7IH0KKyAgdm9pZCBtZXRob2Q0ODQgKCkgeyB9CisgIHZvaWQgbWV0aG9kNDg1ICgpIHsgfQorICB2b2lkIG1ldGhvZDQ4NiAoKSB7IH0KKyAgdm9pZCBtZXRob2Q0ODcgKCkgeyB9CisgIHZvaWQgbWV0aG9kNDg4ICgpIHsgfQorICB2b2lkIG1ldGhvZDQ4OSAoKSB7IH0KKyAgdm9pZCBtZXRob2Q0OTAgKCkgeyB9CisgIHZvaWQgbWV0aG9kNDkxICgpIHsgfQorICB2b2lkIG1ldGhvZDQ5MiAoKSB7IH0KKyAgdm9pZCBtZXRob2Q0OTMgKCkgeyB9CisgIHZvaWQgbWV0aG9kNDk0ICgpIHsgfQorICB2b2lkIG1ldGhvZDQ5NSAoKSB7IH0KKyAgdm9pZCBtZXRob2Q0OTYgKCkgeyB9CisgIHZvaWQgbWV0aG9kNDk3ICgpIHsgfQorICB2b2lkIG1ldGhvZDQ5OCAoKSB7IH0KKyAgdm9pZCBtZXRob2Q0OTkgKCkgeyB9CisgIHZvaWQgbWV0aG9kNTAwICgpIHsgfQorICB2b2lkIG1ldGhvZDUwMSAoKSB7IH0KKyAgdm9pZCBtZXRob2Q1MDIgKCkgeyB9CisgIHZvaWQgbWV0aG9kNTAzICgpIHsgfQorICB2b2lkIG1ldGhvZDUwNCAoKSB7IH0KKyAgdm9pZCBtZXRob2Q1MDUgKCkgeyB9CisgIHZvaWQgbWV0aG9kNTA2ICgpIHsgfQorICB2b2lkIG1ldGhvZDUwNyAoKSB7IH0KKyAgdm9pZCBtZXRob2Q1MDggKCkgeyB9CisgIHZvaWQgbWV0aG9kNTA5ICgpIHsgfQorICB2b2lkIG1ldGhvZDUxMCAoKSB7IH0KKyAgdm9pZCBtZXRob2Q1MTEgKCkgeyB9CisgIHZvaWQgbWV0aG9kNTEyICgpIHsgfQorICB2b2lkIG1ldGhvZDUxMyAoKSB7IH0KKyAgdm9pZCBtZXRob2Q1MTQgKCkgeyB9CisgIHZvaWQgbWV0aG9kNTE1ICgpIHsgfQorICB2b2lkIG1ldGhvZDUxNiAoKSB7IH0KKyAgdm9pZCBtZXRob2Q1MTcgKCkgeyB9CisgIHZvaWQgbWV0aG9kNTE4ICgpIHsgfQorICB2b2lkIG1ldGhvZDUxOSAoKSB7IH0KKyAgdm9pZCBtZXRob2Q1MjAgKCkgeyB9CisgIHZvaWQgbWV0aG9kNTIxICgpIHsgfQorICB2b2lkIG1ldGhvZDUyMiAoKSB7IH0KKyAgdm9pZCBtZXRob2Q1MjMgKCkgeyB9CisgIHZvaWQgbWV0aG9kNTI0ICgpIHsgfQorICB2b2lkIG1ldGhvZDUyNSAoKSB7IH0KKyAgdm9pZCBtZXRob2Q1MjYgKCkgeyB9CisgIHZvaWQgbWV0aG9kNTI3ICgpIHsgfQorICB2b2lkIG1ldGhvZDUyOCAoKSB7IH0KKyAgdm9pZCBtZXRob2Q1MjkgKCkgeyB9CisgIHZvaWQgbWV0aG9kNTMwICgpIHsgfQorICB2b2lkIG1ldGhvZDUzMSAoKSB7IH0KKyAgdm9pZCBtZXRob2Q1MzIgKCkgeyB9CisgIHZvaWQgbWV0aG9kNTMzICgpIHsgfQorICB2b2lkIG1ldGhvZDUzNCAoKSB7IH0KKyAgdm9pZCBtZXRob2Q1MzUgKCkgeyB9CisgIHZvaWQgbWV0aG9kNTM2ICgpIHsgfQorICB2b2lkIG1ldGhvZDUzNyAoKSB7IH0KKyAgdm9pZCBtZXRob2Q1MzggKCkgeyB9CisgIHZvaWQgbWV0aG9kNTM5ICgpIHsgfQorICB2b2lkIG1ldGhvZDU0MCAoKSB7IH0KKyAgdm9pZCBtZXRob2Q1NDEgKCkgeyB9CisgIHZvaWQgbWV0aG9kNTQyICgpIHsgfQorICB2b2lkIG1ldGhvZDU0MyAoKSB7IH0KKyAgdm9pZCBtZXRob2Q1NDQgKCkgeyB9CisgIHZvaWQgbWV0aG9kNTQ1ICgpIHsgfQorICB2b2lkIG1ldGhvZDU0NiAoKSB7IH0KKyAgdm9pZCBtZXRob2Q1NDcgKCkgeyB9CisgIHZvaWQgbWV0aG9kNTQ4ICgpIHsgfQorICB2b2lkIG1ldGhvZDU0OSAoKSB7IH0KKyAgdm9pZCBtZXRob2Q1NTAgKCkgeyB9CisgIHZvaWQgbWV0aG9kNTUxICgpIHsgfQorICB2b2lkIG1ldGhvZDU1MiAoKSB7IH0KKyAgdm9pZCBtZXRob2Q1NTMgKCkgeyB9CisgIHZvaWQgbWV0aG9kNTU0ICgpIHsgfQorICB2b2lkIG1ldGhvZDU1NSAoKSB7IH0KKyAgdm9pZCBtZXRob2Q1NTYgKCkgeyB9CisgIHZvaWQgbWV0aG9kNTU3ICgpIHsgfQorICB2b2lkIG1ldGhvZDU1OCAoKSB7IH0KKyAgdm9pZCBtZXRob2Q1NTkgKCkgeyB9CisgIHZvaWQgbWV0aG9kNTYwICgpIHsgfQorICB2b2lkIG1ldGhvZDU2MSAoKSB7IH0KKyAgdm9pZCBtZXRob2Q1NjIgKCkgeyB9CisgIHZvaWQgbWV0aG9kNTYzICgpIHsgfQorICB2b2lkIG1ldGhvZDU2NCAoKSB7IH0KKyAgdm9pZCBtZXRob2Q1NjUgKCkgeyB9CisgIHZvaWQgbWV0aG9kNTY2ICgpIHsgfQorICB2b2lkIG1ldGhvZDU2NyAoKSB7IH0KKyAgdm9pZCBtZXRob2Q1NjggKCkgeyB9CisgIHZvaWQgbWV0aG9kNTY5ICgpIHsgfQorICB2b2lkIG1ldGhvZDU3MCAoKSB7IH0KKyAgdm9pZCBtZXRob2Q1NzEgKCkgeyB9CisgIHZvaWQgbWV0aG9kNTcyICgpIHsgfQorICB2b2lkIG1ldGhvZDU3MyAoKSB7IH0KKyAgdm9pZCBtZXRob2Q1NzQgKCkgeyB9CisgIHZvaWQgbWV0aG9kNTc1ICgpIHsgfQorICB2b2lkIG1ldGhvZDU3NiAoKSB7IH0KKyAgdm9pZCBtZXRob2Q1NzcgKCkgeyB9CisgIHZvaWQgbWV0aG9kNTc4ICgpIHsgfQorICB2b2lkIG1ldGhvZDU3OSAoKSB7IH0KKyAgdm9pZCBtZXRob2Q1ODAgKCkgeyB9CisgIHZvaWQgbWV0aG9kNTgxICgpIHsgfQorICB2b2lkIG1ldGhvZDU4MiAoKSB7IH0KKyAgdm9pZCBtZXRob2Q1ODMgKCkgeyB9CisgIHZvaWQgbWV0aG9kNTg0ICgpIHsgfQorICB2b2lkIG1ldGhvZDU4NSAoKSB7IH0KKyAgdm9pZCBtZXRob2Q1ODYgKCkgeyB9CisgIHZvaWQgbWV0aG9kNTg3ICgpIHsgfQorICB2b2lkIG1ldGhvZDU4OCAoKSB7IH0KKyAgdm9pZCBtZXRob2Q1ODkgKCkgeyB9CisgIHZvaWQgbWV0aG9kNTkwICgpIHsgfQorICB2b2lkIG1ldGhvZDU5MSAoKSB7IH0KKyAgdm9pZCBtZXRob2Q1OTIgKCkgeyB9CisgIHZvaWQgbWV0aG9kNTkzICgpIHsgfQorICB2b2lkIG1ldGhvZDU5NCAoKSB7IH0KKyAgdm9pZCBtZXRob2Q1OTUgKCkgeyB9CisgIHZvaWQgbWV0aG9kNTk2ICgpIHsgfQorICB2b2lkIG1ldGhvZDU5NyAoKSB7IH0KKyAgdm9pZCBtZXRob2Q1OTggKCkgeyB9CisgIHZvaWQgbWV0aG9kNTk5ICgpIHsgfQorICB2b2lkIG1ldGhvZDYwMCAoKSB7IH0KKyAgdm9pZCBtZXRob2Q2MDEgKCkgeyB9CisgIHZvaWQgbWV0aG9kNjAyICgpIHsgfQorICB2b2lkIG1ldGhvZDYwMyAoKSB7IH0KKyAgdm9pZCBtZXRob2Q2MDQgKCkgeyB9CisgIHZvaWQgbWV0aG9kNjA1ICgpIHsgfQorICB2b2lkIG1ldGhvZDYwNiAoKSB7IH0KKyAgdm9pZCBtZXRob2Q2MDcgKCkgeyB9CisgIHZvaWQgbWV0aG9kNjA4ICgpIHsgfQorICB2b2lkIG1ldGhvZDYwOSAoKSB7IH0KKyAgdm9pZCBtZXRob2Q2MTAgKCkgeyB9CisgIHZvaWQgbWV0aG9kNjExICgpIHsgfQorICB2b2lkIG1ldGhvZDYxMiAoKSB7IH0KKyAgdm9pZCBtZXRob2Q2MTMgKCkgeyB9CisgIHZvaWQgbWV0aG9kNjE0ICgpIHsgfQorICB2b2lkIG1ldGhvZDYxNSAoKSB7IH0KKyAgdm9pZCBtZXRob2Q2MTYgKCkgeyB9CisgIHZvaWQgbWV0aG9kNjE3ICgpIHsgfQorICB2b2lkIG1ldGhvZDYxOCAoKSB7IH0KKyAgdm9pZCBtZXRob2Q2MTkgKCkgeyB9CisgIHZvaWQgbWV0aG9kNjIwICgpIHsgfQorICB2b2lkIG1ldGhvZDYyMSAoKSB7IH0KKyAgdm9pZCBtZXRob2Q2MjIgKCkgeyB9CisgIHZvaWQgbWV0aG9kNjIzICgpIHsgfQorICB2b2lkIG1ldGhvZDYyNCAoKSB7IH0KKyAgdm9pZCBtZXRob2Q2MjUgKCkgeyB9CisgIHZvaWQgbWV0aG9kNjI2ICgpIHsgfQorICB2b2lkIG1ldGhvZDYyNyAoKSB7IH0KKyAgdm9pZCBtZXRob2Q2MjggKCkgeyB9CisgIHZvaWQgbWV0aG9kNjI5ICgpIHsgfQorICB2b2lkIG1ldGhvZDYzMCAoKSB7IH0KKyAgdm9pZCBtZXRob2Q2MzEgKCkgeyB9CisgIHZvaWQgbWV0aG9kNjMyICgpIHsgfQorICB2b2lkIG1ldGhvZDYzMyAoKSB7IH0KKyAgdm9pZCBtZXRob2Q2MzQgKCkgeyB9CisgIHZvaWQgbWV0aG9kNjM1ICgpIHsgfQorICB2b2lkIG1ldGhvZDYzNiAoKSB7IH0KKyAgdm9pZCBtZXRob2Q2MzcgKCkgeyB9CisgIHZvaWQgbWV0aG9kNjM4ICgpIHsgfQorICB2b2lkIG1ldGhvZDYzOSAoKSB7IH0KKyAgdm9pZCBtZXRob2Q2NDAgKCkgeyB9CisgIHZvaWQgbWV0aG9kNjQxICgpIHsgfQorICB2b2lkIG1ldGhvZDY0MiAoKSB7IH0KKyAgdm9pZCBtZXRob2Q2NDMgKCkgeyB9CisgIHZvaWQgbWV0aG9kNjQ0ICgpIHsgfQorICB2b2lkIG1ldGhvZDY0NSAoKSB7IH0KKyAgdm9pZCBtZXRob2Q2NDYgKCkgeyB9CisgIHZvaWQgbWV0aG9kNjQ3ICgpIHsgfQorICB2b2lkIG1ldGhvZDY0OCAoKSB7IH0KKyAgdm9pZCBtZXRob2Q2NDkgKCkgeyB9CisgIHZvaWQgbWV0aG9kNjUwICgpIHsgfQorICB2b2lkIG1ldGhvZDY1MSAoKSB7IH0KKyAgdm9pZCBtZXRob2Q2NTIgKCkgeyB9CisgIHZvaWQgbWV0aG9kNjUzICgpIHsgfQorICB2b2lkIG1ldGhvZDY1NCAoKSB7IH0KKyAgdm9pZCBtZXRob2Q2NTUgKCkgeyB9CisgIHZvaWQgbWV0aG9kNjU2ICgpIHsgfQorICB2b2lkIG1ldGhvZDY1NyAoKSB7IH0KKyAgdm9pZCBtZXRob2Q2NTggKCkgeyB9CisgIHZvaWQgbWV0aG9kNjU5ICgpIHsgfQorICB2b2lkIG1ldGhvZDY2MCAoKSB7IH0KKyAgdm9pZCBtZXRob2Q2NjEgKCkgeyB9CisgIHZvaWQgbWV0aG9kNjYyICgpIHsgfQorICB2b2lkIG1ldGhvZDY2MyAoKSB7IH0KKyAgdm9pZCBtZXRob2Q2NjQgKCkgeyB9CisgIHZvaWQgbWV0aG9kNjY1ICgpIHsgfQorICB2b2lkIG1ldGhvZDY2NiAoKSB7IH0KKyAgdm9pZCBtZXRob2Q2NjcgKCkgeyB9CisgIHZvaWQgbWV0aG9kNjY4ICgpIHsgfQorICB2b2lkIG1ldGhvZDY2OSAoKSB7IH0KKyAgdm9pZCBtZXRob2Q2NzAgKCkgeyB9CisgIHZvaWQgbWV0aG9kNjcxICgpIHsgfQorICB2b2lkIG1ldGhvZDY3MiAoKSB7IH0KKyAgdm9pZCBtZXRob2Q2NzMgKCkgeyB9CisgIHZvaWQgbWV0aG9kNjc0ICgpIHsgfQorICB2b2lkIG1ldGhvZDY3NSAoKSB7IH0KKyAgdm9pZCBtZXRob2Q2NzYgKCkgeyB9CisgIHZvaWQgbWV0aG9kNjc3ICgpIHsgfQorICB2b2lkIG1ldGhvZDY3OCAoKSB7IH0KKyAgdm9pZCBtZXRob2Q2NzkgKCkgeyB9CisgIHZvaWQgbWV0aG9kNjgwICgpIHsgfQorICB2b2lkIG1ldGhvZDY4MSAoKSB7IH0KKyAgdm9pZCBtZXRob2Q2ODIgKCkgeyB9CisgIHZvaWQgbWV0aG9kNjgzICgpIHsgfQorICB2b2lkIG1ldGhvZDY4NCAoKSB7IH0KKyAgdm9pZCBtZXRob2Q2ODUgKCkgeyB9CisgIHZvaWQgbWV0aG9kNjg2ICgpIHsgfQorICB2b2lkIG1ldGhvZDY4NyAoKSB7IH0KKyAgdm9pZCBtZXRob2Q2ODggKCkgeyB9CisgIHZvaWQgbWV0aG9kNjg5ICgpIHsgfQorICB2b2lkIG1ldGhvZDY5MCAoKSB7IH0KKyAgdm9pZCBtZXRob2Q2OTEgKCkgeyB9CisgIHZvaWQgbWV0aG9kNjkyICgpIHsgfQorICB2b2lkIG1ldGhvZDY5MyAoKSB7IH0KKyAgdm9pZCBtZXRob2Q2OTQgKCkgeyB9CisgIHZvaWQgbWV0aG9kNjk1ICgpIHsgfQorICB2b2lkIG1ldGhvZDY5NiAoKSB7IH0KKyAgdm9pZCBtZXRob2Q2OTcgKCkgeyB9CisgIHZvaWQgbWV0aG9kNjk4ICgpIHsgfQorICB2b2lkIG1ldGhvZDY5OSAoKSB7IH0KKyAgdm9pZCBtZXRob2Q3MDAgKCkgeyB9CisgIHZvaWQgbWV0aG9kNzAxICgpIHsgfQorICB2b2lkIG1ldGhvZDcwMiAoKSB7IH0KKyAgdm9pZCBtZXRob2Q3MDMgKCkgeyB9CisgIHZvaWQgbWV0aG9kNzA0ICgpIHsgfQorICB2b2lkIG1ldGhvZDcwNSAoKSB7IH0KKyAgdm9pZCBtZXRob2Q3MDYgKCkgeyB9CisgIHZvaWQgbWV0aG9kNzA3ICgpIHsgfQorICB2b2lkIG1ldGhvZDcwOCAoKSB7IH0KKyAgdm9pZCBtZXRob2Q3MDkgKCkgeyB9CisgIHZvaWQgbWV0aG9kNzEwICgpIHsgfQorICB2b2lkIG1ldGhvZDcxMSAoKSB7IH0KKyAgdm9pZCBtZXRob2Q3MTIgKCkgeyB9CisgIHZvaWQgbWV0aG9kNzEzICgpIHsgfQorICB2b2lkIG1ldGhvZDcxNCAoKSB7IH0KKyAgdm9pZCBtZXRob2Q3MTUgKCkgeyB9CisgIHZvaWQgbWV0aG9kNzE2ICgpIHsgfQorICB2b2lkIG1ldGhvZDcxNyAoKSB7IH0KKyAgdm9pZCBtZXRob2Q3MTggKCkgeyB9CisgIHZvaWQgbWV0aG9kNzE5ICgpIHsgfQorICB2b2lkIG1ldGhvZDcyMCAoKSB7IH0KKyAgdm9pZCBtZXRob2Q3MjEgKCkgeyB9CisgIHZvaWQgbWV0aG9kNzIyICgpIHsgfQorICB2b2lkIG1ldGhvZDcyMyAoKSB7IH0KKyAgdm9pZCBtZXRob2Q3MjQgKCkgeyB9CisgIHZvaWQgbWV0aG9kNzI1ICgpIHsgfQorICB2b2lkIG1ldGhvZDcyNiAoKSB7IH0KKyAgdm9pZCBtZXRob2Q3MjcgKCkgeyB9CisgIHZvaWQgbWV0aG9kNzI4ICgpIHsgfQorICB2b2lkIG1ldGhvZDcyOSAoKSB7IH0KKyAgdm9pZCBtZXRob2Q3MzAgKCkgeyB9CisgIHZvaWQgbWV0aG9kNzMxICgpIHsgfQorICB2b2lkIG1ldGhvZDczMiAoKSB7IH0KKyAgdm9pZCBtZXRob2Q3MzMgKCkgeyB9CisgIHZvaWQgbWV0aG9kNzM0ICgpIHsgfQorICB2b2lkIG1ldGhvZDczNSAoKSB7IH0KKyAgdm9pZCBtZXRob2Q3MzYgKCkgeyB9CisgIHZvaWQgbWV0aG9kNzM3ICgpIHsgfQorICB2b2lkIG1ldGhvZDczOCAoKSB7IH0KKyAgdm9pZCBtZXRob2Q3MzkgKCkgeyB9CisgIHZvaWQgbWV0aG9kNzQwICgpIHsgfQorICB2b2lkIG1ldGhvZDc0MSAoKSB7IH0KKyAgdm9pZCBtZXRob2Q3NDIgKCkgeyB9CisgIHZvaWQgbWV0aG9kNzQzICgpIHsgfQorICB2b2lkIG1ldGhvZDc0NCAoKSB7IH0KKyAgdm9pZCBtZXRob2Q3NDUgKCkgeyB9CisgIHZvaWQgbWV0aG9kNzQ2ICgpIHsgfQorICB2b2lkIG1ldGhvZDc0NyAoKSB7IH0KKyAgdm9pZCBtZXRob2Q3NDggKCkgeyB9CisgIHZvaWQgbWV0aG9kNzQ5ICgpIHsgfQorICB2b2lkIG1ldGhvZDc1MCAoKSB7IH0KKyAgdm9pZCBtZXRob2Q3NTEgKCkgeyB9CisgIHZvaWQgbWV0aG9kNzUyICgpIHsgfQorICB2b2lkIG1ldGhvZDc1MyAoKSB7IH0KKyAgdm9pZCBtZXRob2Q3NTQgKCkgeyB9CisgIHZvaWQgbWV0aG9kNzU1ICgpIHsgfQorICB2b2lkIG1ldGhvZDc1NiAoKSB7IH0KKyAgdm9pZCBtZXRob2Q3NTcgKCkgeyB9CisgIHZvaWQgbWV0aG9kNzU4ICgpIHsgfQorICB2b2lkIG1ldGhvZDc1OSAoKSB7IH0KKyAgdm9pZCBtZXRob2Q3NjAgKCkgeyB9CisgIHZvaWQgbWV0aG9kNzYxICgpIHsgfQorICB2b2lkIG1ldGhvZDc2MiAoKSB7IH0KKyAgdm9pZCBtZXRob2Q3NjMgKCkgeyB9CisgIHZvaWQgbWV0aG9kNzY0ICgpIHsgfQorICB2b2lkIG1ldGhvZDc2NSAoKSB7IH0KKyAgdm9pZCBtZXRob2Q3NjYgKCkgeyB9CisgIHZvaWQgbWV0aG9kNzY3ICgpIHsgfQorICB2b2lkIG1ldGhvZDc2OCAoKSB7IH0KKyAgdm9pZCBtZXRob2Q3NjkgKCkgeyB9CisgIHZvaWQgbWV0aG9kNzcwICgpIHsgfQorICB2b2lkIG1ldGhvZDc3MSAoKSB7IH0KKyAgdm9pZCBtZXRob2Q3NzIgKCkgeyB9CisgIHZvaWQgbWV0aG9kNzczICgpIHsgfQorICB2b2lkIG1ldGhvZDc3NCAoKSB7IH0KKyAgdm9pZCBtZXRob2Q3NzUgKCkgeyB9CisgIHZvaWQgbWV0aG9kNzc2ICgpIHsgfQorICB2b2lkIG1ldGhvZDc3NyAoKSB7IH0KKyAgdm9pZCBtZXRob2Q3NzggKCkgeyB9CisgIHZvaWQgbWV0aG9kNzc5ICgpIHsgfQorICB2b2lkIG1ldGhvZDc4MCAoKSB7IH0KKyAgdm9pZCBtZXRob2Q3ODEgKCkgeyB9CisgIHZvaWQgbWV0aG9kNzgyICgpIHsgfQorICB2b2lkIG1ldGhvZDc4MyAoKSB7IH0KKyAgdm9pZCBtZXRob2Q3ODQgKCkgeyB9CisgIHZvaWQgbWV0aG9kNzg1ICgpIHsgfQorICB2b2lkIG1ldGhvZDc4NiAoKSB7IH0KKyAgdm9pZCBtZXRob2Q3ODcgKCkgeyB9CisgIHZvaWQgbWV0aG9kNzg4ICgpIHsgfQorICB2b2lkIG1ldGhvZDc4OSAoKSB7IH0KKyAgdm9pZCBtZXRob2Q3OTAgKCkgeyB9CisgIHZvaWQgbWV0aG9kNzkxICgpIHsgfQorICB2b2lkIG1ldGhvZDc5MiAoKSB7IH0KKyAgdm9pZCBtZXRob2Q3OTMgKCkgeyB9CisgIHZvaWQgbWV0aG9kNzk0ICgpIHsgfQorICB2b2lkIG1ldGhvZDc5NSAoKSB7IH0KKyAgdm9pZCBtZXRob2Q3OTYgKCkgeyB9CisgIHZvaWQgbWV0aG9kNzk3ICgpIHsgfQorICB2b2lkIG1ldGhvZDc5OCAoKSB7IH0KKyAgdm9pZCBtZXRob2Q3OTkgKCkgeyB9CisgIHZvaWQgbWV0aG9kODAwICgpIHsgfQorICB2b2lkIG1ldGhvZDgwMSAoKSB7IH0KKyAgdm9pZCBtZXRob2Q4MDIgKCkgeyB9CisgIHZvaWQgbWV0aG9kODAzICgpIHsgfQorICB2b2lkIG1ldGhvZDgwNCAoKSB7IH0KKyAgdm9pZCBtZXRob2Q4MDUgKCkgeyB9CisgIHZvaWQgbWV0aG9kODA2ICgpIHsgfQorICB2b2lkIG1ldGhvZDgwNyAoKSB7IH0KKyAgdm9pZCBtZXRob2Q4MDggKCkgeyB9CisgIHZvaWQgbWV0aG9kODA5ICgpIHsgfQorICB2b2lkIG1ldGhvZDgxMCAoKSB7IH0KKyAgdm9pZCBtZXRob2Q4MTEgKCkgeyB9CisgIHZvaWQgbWV0aG9kODEyICgpIHsgfQorICB2b2lkIG1ldGhvZDgxMyAoKSB7IH0KKyAgdm9pZCBtZXRob2Q4MTQgKCkgeyB9CisgIHZvaWQgbWV0aG9kODE1ICgpIHsgfQorICB2b2lkIG1ldGhvZDgxNiAoKSB7IH0KKyAgdm9pZCBtZXRob2Q4MTcgKCkgeyB9CisgIHZvaWQgbWV0aG9kODE4ICgpIHsgfQorICB2b2lkIG1ldGhvZDgxOSAoKSB7IH0KKyAgdm9pZCBtZXRob2Q4MjAgKCkgeyB9CisgIHZvaWQgbWV0aG9kODIxICgpIHsgfQorICB2b2lkIG1ldGhvZDgyMiAoKSB7IH0KKyAgdm9pZCBtZXRob2Q4MjMgKCkgeyB9CisgIHZvaWQgbWV0aG9kODI0ICgpIHsgfQorICB2b2lkIG1ldGhvZDgyNSAoKSB7IH0KKyAgdm9pZCBtZXRob2Q4MjYgKCkgeyB9CisgIHZvaWQgbWV0aG9kODI3ICgpIHsgfQorICB2b2lkIG1ldGhvZDgyOCAoKSB7IH0KKyAgdm9pZCBtZXRob2Q4MjkgKCkgeyB9CisgIHZvaWQgbWV0aG9kODMwICgpIHsgfQorICB2b2lkIG1ldGhvZDgzMSAoKSB7IH0KKyAgdm9pZCBtZXRob2Q4MzIgKCkgeyB9CisgIHZvaWQgbWV0aG9kODMzICgpIHsgfQorICB2b2lkIG1ldGhvZDgzNCAoKSB7IH0KKyAgdm9pZCBtZXRob2Q4MzUgKCkgeyB9CisgIHZvaWQgbWV0aG9kODM2ICgpIHsgfQorICB2b2lkIG1ldGhvZDgzNyAoKSB7IH0KKyAgdm9pZCBtZXRob2Q4MzggKCkgeyB9CisgIHZvaWQgbWV0aG9kODM5ICgpIHsgfQorICB2b2lkIG1ldGhvZDg0MCAoKSB7IH0KKyAgdm9pZCBtZXRob2Q4NDEgKCkgeyB9CisgIHZvaWQgbWV0aG9kODQyICgpIHsgfQorICB2b2lkIG1ldGhvZDg0MyAoKSB7IH0KKyAgdm9pZCBtZXRob2Q4NDQgKCkgeyB9CisgIHZvaWQgbWV0aG9kODQ1ICgpIHsgfQorICB2b2lkIG1ldGhvZDg0NiAoKSB7IH0KKyAgdm9pZCBtZXRob2Q4NDcgKCkgeyB9CisgIHZvaWQgbWV0aG9kODQ4ICgpIHsgfQorICB2b2lkIG1ldGhvZDg0OSAoKSB7IH0KKyAgdm9pZCBtZXRob2Q4NTAgKCkgeyB9CisgIHZvaWQgbWV0aG9kODUxICgpIHsgfQorICB2b2lkIG1ldGhvZDg1MiAoKSB7IH0KKyAgdm9pZCBtZXRob2Q4NTMgKCkgeyB9CisgIHZvaWQgbWV0aG9kODU0ICgpIHsgfQorICB2b2lkIG1ldGhvZDg1NSAoKSB7IH0KKyAgdm9pZCBtZXRob2Q4NTYgKCkgeyB9CisgIHZvaWQgbWV0aG9kODU3ICgpIHsgfQorICB2b2lkIG1ldGhvZDg1OCAoKSB7IH0KKyAgdm9pZCBtZXRob2Q4NTkgKCkgeyB9CisgIHZvaWQgbWV0aG9kODYwICgpIHsgfQorICB2b2lkIG1ldGhvZDg2MSAoKSB7IH0KKyAgdm9pZCBtZXRob2Q4NjIgKCkgeyB9CisgIHZvaWQgbWV0aG9kODYzICgpIHsgfQorICB2b2lkIG1ldGhvZDg2NCAoKSB7IH0KKyAgdm9pZCBtZXRob2Q4NjUgKCkgeyB9CisgIHZvaWQgbWV0aG9kODY2ICgpIHsgfQorICB2b2lkIG1ldGhvZDg2NyAoKSB7IH0KKyAgdm9pZCBtZXRob2Q4NjggKCkgeyB9CisgIHZvaWQgbWV0aG9kODY5ICgpIHsgfQorICB2b2lkIG1ldGhvZDg3MCAoKSB7IH0KKyAgdm9pZCBtZXRob2Q4NzEgKCkgeyB9CisgIHZvaWQgbWV0aG9kODcyICgpIHsgfQorICB2b2lkIG1ldGhvZDg3MyAoKSB7IH0KKyAgdm9pZCBtZXRob2Q4NzQgKCkgeyB9CisgIHZvaWQgbWV0aG9kODc1ICgpIHsgfQorICB2b2lkIG1ldGhvZDg3NiAoKSB7IH0KKyAgdm9pZCBtZXRob2Q4NzcgKCkgeyB9CisgIHZvaWQgbWV0aG9kODc4ICgpIHsgfQorICB2b2lkIG1ldGhvZDg3OSAoKSB7IH0KKyAgdm9pZCBtZXRob2Q4ODAgKCkgeyB9CisgIHZvaWQgbWV0aG9kODgxICgpIHsgfQorICB2b2lkIG1ldGhvZDg4MiAoKSB7IH0KKyAgdm9pZCBtZXRob2Q4ODMgKCkgeyB9CisgIHZvaWQgbWV0aG9kODg0ICgpIHsgfQorICB2b2lkIG1ldGhvZDg4NSAoKSB7IH0KKyAgdm9pZCBtZXRob2Q4ODYgKCkgeyB9CisgIHZvaWQgbWV0aG9kODg3ICgpIHsgfQorICB2b2lkIG1ldGhvZDg4OCAoKSB7IH0KKyAgdm9pZCBtZXRob2Q4ODkgKCkgeyB9CisgIHZvaWQgbWV0aG9kODkwICgpIHsgfQorICB2b2lkIG1ldGhvZDg5MSAoKSB7IH0KKyAgdm9pZCBtZXRob2Q4OTIgKCkgeyB9CisgIHZvaWQgbWV0aG9kODkzICgpIHsgfQorICB2b2lkIG1ldGhvZDg5NCAoKSB7IH0KKyAgdm9pZCBtZXRob2Q4OTUgKCkgeyB9CisgIHZvaWQgbWV0aG9kODk2ICgpIHsgfQorICB2b2lkIG1ldGhvZDg5NyAoKSB7IH0KKyAgdm9pZCBtZXRob2Q4OTggKCkgeyB9CisgIHZvaWQgbWV0aG9kODk5ICgpIHsgfQorICB2b2lkIG1ldGhvZDkwMCAoKSB7IH0KKyAgdm9pZCBtZXRob2Q5MDEgKCkgeyB9CisgIHZvaWQgbWV0aG9kOTAyICgpIHsgfQorICB2b2lkIG1ldGhvZDkwMyAoKSB7IH0KKyAgdm9pZCBtZXRob2Q5MDQgKCkgeyB9CisgIHZvaWQgbWV0aG9kOTA1ICgpIHsgfQorICB2b2lkIG1ldGhvZDkwNiAoKSB7IH0KKyAgdm9pZCBtZXRob2Q5MDcgKCkgeyB9CisgIHZvaWQgbWV0aG9kOTA4ICgpIHsgfQorICB2b2lkIG1ldGhvZDkwOSAoKSB7IH0KKyAgdm9pZCBtZXRob2Q5MTAgKCkgeyB9CisgIHZvaWQgbWV0aG9kOTExICgpIHsgfQorICB2b2lkIG1ldGhvZDkxMiAoKSB7IH0KKyAgdm9pZCBtZXRob2Q5MTMgKCkgeyB9CisgIHZvaWQgbWV0aG9kOTE0ICgpIHsgfQorICB2b2lkIG1ldGhvZDkxNSAoKSB7IH0KKyAgdm9pZCBtZXRob2Q5MTYgKCkgeyB9CisgIHZvaWQgbWV0aG9kOTE3ICgpIHsgfQorICB2b2lkIG1ldGhvZDkxOCAoKSB7IH0KKyAgdm9pZCBtZXRob2Q5MTkgKCkgeyB9CisgIHZvaWQgbWV0aG9kOTIwICgpIHsgfQorICB2b2lkIG1ldGhvZDkyMSAoKSB7IH0KKyAgdm9pZCBtZXRob2Q5MjIgKCkgeyB9CisgIHZvaWQgbWV0aG9kOTIzICgpIHsgfQorICB2b2lkIG1ldGhvZDkyNCAoKSB7IH0KKyAgdm9pZCBtZXRob2Q5MjUgKCkgeyB9CisgIHZvaWQgbWV0aG9kOTI2ICgpIHsgfQorICB2b2lkIG1ldGhvZDkyNyAoKSB7IH0KKyAgdm9pZCBtZXRob2Q5MjggKCkgeyB9CisgIHZvaWQgbWV0aG9kOTI5ICgpIHsgfQorICB2b2lkIG1ldGhvZDkzMCAoKSB7IH0KKyAgdm9pZCBtZXRob2Q5MzEgKCkgeyB9CisgIHZvaWQgbWV0aG9kOTMyICgpIHsgfQorICB2b2lkIG1ldGhvZDkzMyAoKSB7IH0KKyAgdm9pZCBtZXRob2Q5MzQgKCkgeyB9CisgIHZvaWQgbWV0aG9kOTM1ICgpIHsgfQorICB2b2lkIG1ldGhvZDkzNiAoKSB7IH0KKyAgdm9pZCBtZXRob2Q5MzcgKCkgeyB9CisgIHZvaWQgbWV0aG9kOTM4ICgpIHsgfQorICB2b2lkIG1ldGhvZDkzOSAoKSB7IH0KKyAgdm9pZCBtZXRob2Q5NDAgKCkgeyB9CisgIHZvaWQgbWV0aG9kOTQxICgpIHsgfQorICB2b2lkIG1ldGhvZDk0MiAoKSB7IH0KKyAgdm9pZCBtZXRob2Q5NDMgKCkgeyB9CisgIHZvaWQgbWV0aG9kOTQ0ICgpIHsgfQorICB2b2lkIG1ldGhvZDk0NSAoKSB7IH0KKyAgdm9pZCBtZXRob2Q5NDYgKCkgeyB9CisgIHZvaWQgbWV0aG9kOTQ3ICgpIHsgfQorICB2b2lkIG1ldGhvZDk0OCAoKSB7IH0KKyAgdm9pZCBtZXRob2Q5NDkgKCkgeyB9CisgIHZvaWQgbWV0aG9kOTUwICgpIHsgfQorICB2b2lkIG1ldGhvZDk1MSAoKSB7IH0KKyAgdm9pZCBtZXRob2Q5NTIgKCkgeyB9CisgIHZvaWQgbWV0aG9kOTUzICgpIHsgfQorICB2b2lkIG1ldGhvZDk1NCAoKSB7IH0KKyAgdm9pZCBtZXRob2Q5NTUgKCkgeyB9CisgIHZvaWQgbWV0aG9kOTU2ICgpIHsgfQorICB2b2lkIG1ldGhvZDk1NyAoKSB7IH0KKyAgdm9pZCBtZXRob2Q5NTggKCkgeyB9CisgIHZvaWQgbWV0aG9kOTU5ICgpIHsgfQorICB2b2lkIG1ldGhvZDk2MCAoKSB7IH0KKyAgdm9pZCBtZXRob2Q5NjEgKCkgeyB9CisgIHZvaWQgbWV0aG9kOTYyICgpIHsgfQorICB2b2lkIG1ldGhvZDk2MyAoKSB7IH0KKyAgdm9pZCBtZXRob2Q5NjQgKCkgeyB9CisgIHZvaWQgbWV0aG9kOTY1ICgpIHsgfQorICB2b2lkIG1ldGhvZDk2NiAoKSB7IH0KKyAgdm9pZCBtZXRob2Q5NjcgKCkgeyB9CisgIHZvaWQgbWV0aG9kOTY4ICgpIHsgfQorICB2b2lkIG1ldGhvZDk2OSAoKSB7IH0KKyAgdm9pZCBtZXRob2Q5NzAgKCkgeyB9CisgIHZvaWQgbWV0aG9kOTcxICgpIHsgfQorICB2b2lkIG1ldGhvZDk3MiAoKSB7IH0KKyAgdm9pZCBtZXRob2Q5NzMgKCkgeyB9CisgIHZvaWQgbWV0aG9kOTc0ICgpIHsgfQorICB2b2lkIG1ldGhvZDk3NSAoKSB7IH0KKyAgdm9pZCBtZXRob2Q5NzYgKCkgeyB9CisgIHZvaWQgbWV0aG9kOTc3ICgpIHsgfQorICB2b2lkIG1ldGhvZDk3OCAoKSB7IH0KKyAgdm9pZCBtZXRob2Q5NzkgKCkgeyB9CisgIHZvaWQgbWV0aG9kOTgwICgpIHsgfQorICB2b2lkIG1ldGhvZDk4MSAoKSB7IH0KKyAgdm9pZCBtZXRob2Q5ODIgKCkgeyB9CisgIHZvaWQgbWV0aG9kOTgzICgpIHsgfQorICB2b2lkIG1ldGhvZDk4NCAoKSB7IH0KKyAgdm9pZCBtZXRob2Q5ODUgKCkgeyB9CisgIHZvaWQgbWV0aG9kOTg2ICgpIHsgfQorICB2b2lkIG1ldGhvZDk4NyAoKSB7IH0KKyAgdm9pZCBtZXRob2Q5ODggKCkgeyB9CisgIHZvaWQgbWV0aG9kOTg5ICgpIHsgfQorICB2b2lkIG1ldGhvZDk5MCAoKSB7IH0KKyAgdm9pZCBtZXRob2Q5OTEgKCkgeyB9CisgIHZvaWQgbWV0aG9kOTkyICgpIHsgfQorICB2b2lkIG1ldGhvZDk5MyAoKSB7IH0KKyAgdm9pZCBtZXRob2Q5OTQgKCkgeyB9CisgIHZvaWQgbWV0aG9kOTk1ICgpIHsgfQorICB2b2lkIG1ldGhvZDk5NiAoKSB7IH0KKyAgdm9pZCBtZXRob2Q5OTcgKCkgeyB9CisgIHZvaWQgbWV0aG9kOTk4ICgpIHsgfQorICB2b2lkIG1ldGhvZDk5OSAoKSB7IH0KKyAgdm9pZCBtZXRob2QxMDAwICgpIHsgfQorICB2b2lkIG1ldGhvZDEwMDEgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTAwMiAoKSB7IH0KKyAgdm9pZCBtZXRob2QxMDAzICgpIHsgfQorICB2b2lkIG1ldGhvZDEwMDQgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTAwNSAoKSB7IH0KKyAgdm9pZCBtZXRob2QxMDA2ICgpIHsgfQorICB2b2lkIG1ldGhvZDEwMDcgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTAwOCAoKSB7IH0KKyAgdm9pZCBtZXRob2QxMDA5ICgpIHsgfQorICB2b2lkIG1ldGhvZDEwMTAgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTAxMSAoKSB7IH0KKyAgdm9pZCBtZXRob2QxMDEyICgpIHsgfQorICB2b2lkIG1ldGhvZDEwMTMgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTAxNCAoKSB7IH0KKyAgdm9pZCBtZXRob2QxMDE1ICgpIHsgfQorICB2b2lkIG1ldGhvZDEwMTYgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTAxNyAoKSB7IH0KKyAgdm9pZCBtZXRob2QxMDE4ICgpIHsgfQorICB2b2lkIG1ldGhvZDEwMTkgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTAyMCAoKSB7IH0KKyAgdm9pZCBtZXRob2QxMDIxICgpIHsgfQorICB2b2lkIG1ldGhvZDEwMjIgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTAyMyAoKSB7IH0KKyAgdm9pZCBtZXRob2QxMDI0ICgpIHsgfQorICB2b2lkIG1ldGhvZDEwMjUgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTAyNiAoKSB7IH0KKyAgdm9pZCBtZXRob2QxMDI3ICgpIHsgfQorICB2b2lkIG1ldGhvZDEwMjggKCkgeyB9CisgIHZvaWQgbWV0aG9kMTAyOSAoKSB7IH0KKyAgdm9pZCBtZXRob2QxMDMwICgpIHsgfQorICB2b2lkIG1ldGhvZDEwMzEgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTAzMiAoKSB7IH0KKyAgdm9pZCBtZXRob2QxMDMzICgpIHsgfQorICB2b2lkIG1ldGhvZDEwMzQgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTAzNSAoKSB7IH0KKyAgdm9pZCBtZXRob2QxMDM2ICgpIHsgfQorICB2b2lkIG1ldGhvZDEwMzcgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTAzOCAoKSB7IH0KKyAgdm9pZCBtZXRob2QxMDM5ICgpIHsgfQorICB2b2lkIG1ldGhvZDEwNDAgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTA0MSAoKSB7IH0KKyAgdm9pZCBtZXRob2QxMDQyICgpIHsgfQorICB2b2lkIG1ldGhvZDEwNDMgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTA0NCAoKSB7IH0KKyAgdm9pZCBtZXRob2QxMDQ1ICgpIHsgfQorICB2b2lkIG1ldGhvZDEwNDYgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTA0NyAoKSB7IH0KKyAgdm9pZCBtZXRob2QxMDQ4ICgpIHsgfQorICB2b2lkIG1ldGhvZDEwNDkgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTA1MCAoKSB7IH0KKyAgdm9pZCBtZXRob2QxMDUxICgpIHsgfQorICB2b2lkIG1ldGhvZDEwNTIgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTA1MyAoKSB7IH0KKyAgdm9pZCBtZXRob2QxMDU0ICgpIHsgfQorICB2b2lkIG1ldGhvZDEwNTUgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTA1NiAoKSB7IH0KKyAgdm9pZCBtZXRob2QxMDU3ICgpIHsgfQorICB2b2lkIG1ldGhvZDEwNTggKCkgeyB9CisgIHZvaWQgbWV0aG9kMTA1OSAoKSB7IH0KKyAgdm9pZCBtZXRob2QxMDYwICgpIHsgfQorICB2b2lkIG1ldGhvZDEwNjEgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTA2MiAoKSB7IH0KKyAgdm9pZCBtZXRob2QxMDYzICgpIHsgfQorICB2b2lkIG1ldGhvZDEwNjQgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTA2NSAoKSB7IH0KKyAgdm9pZCBtZXRob2QxMDY2ICgpIHsgfQorICB2b2lkIG1ldGhvZDEwNjcgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTA2OCAoKSB7IH0KKyAgdm9pZCBtZXRob2QxMDY5ICgpIHsgfQorICB2b2lkIG1ldGhvZDEwNzAgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTA3MSAoKSB7IH0KKyAgdm9pZCBtZXRob2QxMDcyICgpIHsgfQorICB2b2lkIG1ldGhvZDEwNzMgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTA3NCAoKSB7IH0KKyAgdm9pZCBtZXRob2QxMDc1ICgpIHsgfQorICB2b2lkIG1ldGhvZDEwNzYgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTA3NyAoKSB7IH0KKyAgdm9pZCBtZXRob2QxMDc4ICgpIHsgfQorICB2b2lkIG1ldGhvZDEwNzkgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTA4MCAoKSB7IH0KKyAgdm9pZCBtZXRob2QxMDgxICgpIHsgfQorICB2b2lkIG1ldGhvZDEwODIgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTA4MyAoKSB7IH0KKyAgdm9pZCBtZXRob2QxMDg0ICgpIHsgfQorICB2b2lkIG1ldGhvZDEwODUgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTA4NiAoKSB7IH0KKyAgdm9pZCBtZXRob2QxMDg3ICgpIHsgfQorICB2b2lkIG1ldGhvZDEwODggKCkgeyB9CisgIHZvaWQgbWV0aG9kMTA4OSAoKSB7IH0KKyAgdm9pZCBtZXRob2QxMDkwICgpIHsgfQorICB2b2lkIG1ldGhvZDEwOTEgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTA5MiAoKSB7IH0KKyAgdm9pZCBtZXRob2QxMDkzICgpIHsgfQorICB2b2lkIG1ldGhvZDEwOTQgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTA5NSAoKSB7IH0KKyAgdm9pZCBtZXRob2QxMDk2ICgpIHsgfQorICB2b2lkIG1ldGhvZDEwOTcgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTA5OCAoKSB7IH0KKyAgdm9pZCBtZXRob2QxMDk5ICgpIHsgfQorICB2b2lkIG1ldGhvZDExMDAgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTEwMSAoKSB7IH0KKyAgdm9pZCBtZXRob2QxMTAyICgpIHsgfQorICB2b2lkIG1ldGhvZDExMDMgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTEwNCAoKSB7IH0KKyAgdm9pZCBtZXRob2QxMTA1ICgpIHsgfQorICB2b2lkIG1ldGhvZDExMDYgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTEwNyAoKSB7IH0KKyAgdm9pZCBtZXRob2QxMTA4ICgpIHsgfQorICB2b2lkIG1ldGhvZDExMDkgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTExMCAoKSB7IH0KKyAgdm9pZCBtZXRob2QxMTExICgpIHsgfQorICB2b2lkIG1ldGhvZDExMTIgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTExMyAoKSB7IH0KKyAgdm9pZCBtZXRob2QxMTE0ICgpIHsgfQorICB2b2lkIG1ldGhvZDExMTUgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTExNiAoKSB7IH0KKyAgdm9pZCBtZXRob2QxMTE3ICgpIHsgfQorICB2b2lkIG1ldGhvZDExMTggKCkgeyB9CisgIHZvaWQgbWV0aG9kMTExOSAoKSB7IH0KKyAgdm9pZCBtZXRob2QxMTIwICgpIHsgfQorICB2b2lkIG1ldGhvZDExMjEgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTEyMiAoKSB7IH0KKyAgdm9pZCBtZXRob2QxMTIzICgpIHsgfQorICB2b2lkIG1ldGhvZDExMjQgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTEyNSAoKSB7IH0KKyAgdm9pZCBtZXRob2QxMTI2ICgpIHsgfQorICB2b2lkIG1ldGhvZDExMjcgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTEyOCAoKSB7IH0KKyAgdm9pZCBtZXRob2QxMTI5ICgpIHsgfQorICB2b2lkIG1ldGhvZDExMzAgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTEzMSAoKSB7IH0KKyAgdm9pZCBtZXRob2QxMTMyICgpIHsgfQorICB2b2lkIG1ldGhvZDExMzMgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTEzNCAoKSB7IH0KKyAgdm9pZCBtZXRob2QxMTM1ICgpIHsgfQorICB2b2lkIG1ldGhvZDExMzYgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTEzNyAoKSB7IH0KKyAgdm9pZCBtZXRob2QxMTM4ICgpIHsgfQorICB2b2lkIG1ldGhvZDExMzkgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTE0MCAoKSB7IH0KKyAgdm9pZCBtZXRob2QxMTQxICgpIHsgfQorICB2b2lkIG1ldGhvZDExNDIgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTE0MyAoKSB7IH0KKyAgdm9pZCBtZXRob2QxMTQ0ICgpIHsgfQorICB2b2lkIG1ldGhvZDExNDUgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTE0NiAoKSB7IH0KKyAgdm9pZCBtZXRob2QxMTQ3ICgpIHsgfQorICB2b2lkIG1ldGhvZDExNDggKCkgeyB9CisgIHZvaWQgbWV0aG9kMTE0OSAoKSB7IH0KKyAgdm9pZCBtZXRob2QxMTUwICgpIHsgfQorICB2b2lkIG1ldGhvZDExNTEgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTE1MiAoKSB7IH0KKyAgdm9pZCBtZXRob2QxMTUzICgpIHsgfQorICB2b2lkIG1ldGhvZDExNTQgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTE1NSAoKSB7IH0KKyAgdm9pZCBtZXRob2QxMTU2ICgpIHsgfQorICB2b2lkIG1ldGhvZDExNTcgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTE1OCAoKSB7IH0KKyAgdm9pZCBtZXRob2QxMTU5ICgpIHsgfQorICB2b2lkIG1ldGhvZDExNjAgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTE2MSAoKSB7IH0KKyAgdm9pZCBtZXRob2QxMTYyICgpIHsgfQorICB2b2lkIG1ldGhvZDExNjMgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTE2NCAoKSB7IH0KKyAgdm9pZCBtZXRob2QxMTY1ICgpIHsgfQorICB2b2lkIG1ldGhvZDExNjYgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTE2NyAoKSB7IH0KKyAgdm9pZCBtZXRob2QxMTY4ICgpIHsgfQorICB2b2lkIG1ldGhvZDExNjkgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTE3MCAoKSB7IH0KKyAgdm9pZCBtZXRob2QxMTcxICgpIHsgfQorICB2b2lkIG1ldGhvZDExNzIgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTE3MyAoKSB7IH0KKyAgdm9pZCBtZXRob2QxMTc0ICgpIHsgfQorICB2b2lkIG1ldGhvZDExNzUgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTE3NiAoKSB7IH0KKyAgdm9pZCBtZXRob2QxMTc3ICgpIHsgfQorICB2b2lkIG1ldGhvZDExNzggKCkgeyB9CisgIHZvaWQgbWV0aG9kMTE3OSAoKSB7IH0KKyAgdm9pZCBtZXRob2QxMTgwICgpIHsgfQorICB2b2lkIG1ldGhvZDExODEgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTE4MiAoKSB7IH0KKyAgdm9pZCBtZXRob2QxMTgzICgpIHsgfQorICB2b2lkIG1ldGhvZDExODQgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTE4NSAoKSB7IH0KKyAgdm9pZCBtZXRob2QxMTg2ICgpIHsgfQorICB2b2lkIG1ldGhvZDExODcgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTE4OCAoKSB7IH0KKyAgdm9pZCBtZXRob2QxMTg5ICgpIHsgfQorICB2b2lkIG1ldGhvZDExOTAgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTE5MSAoKSB7IH0KKyAgdm9pZCBtZXRob2QxMTkyICgpIHsgfQorICB2b2lkIG1ldGhvZDExOTMgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTE5NCAoKSB7IH0KKyAgdm9pZCBtZXRob2QxMTk1ICgpIHsgfQorICB2b2lkIG1ldGhvZDExOTYgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTE5NyAoKSB7IH0KKyAgdm9pZCBtZXRob2QxMTk4ICgpIHsgfQorICB2b2lkIG1ldGhvZDExOTkgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTIwMCAoKSB7IH0KKyAgdm9pZCBtZXRob2QxMjAxICgpIHsgfQorICB2b2lkIG1ldGhvZDEyMDIgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTIwMyAoKSB7IH0KKyAgdm9pZCBtZXRob2QxMjA0ICgpIHsgfQorICB2b2lkIG1ldGhvZDEyMDUgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTIwNiAoKSB7IH0KKyAgdm9pZCBtZXRob2QxMjA3ICgpIHsgfQorICB2b2lkIG1ldGhvZDEyMDggKCkgeyB9CisgIHZvaWQgbWV0aG9kMTIwOSAoKSB7IH0KKyAgdm9pZCBtZXRob2QxMjEwICgpIHsgfQorICB2b2lkIG1ldGhvZDEyMTEgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTIxMiAoKSB7IH0KKyAgdm9pZCBtZXRob2QxMjEzICgpIHsgfQorICB2b2lkIG1ldGhvZDEyMTQgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTIxNSAoKSB7IH0KKyAgdm9pZCBtZXRob2QxMjE2ICgpIHsgfQorICB2b2lkIG1ldGhvZDEyMTcgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTIxOCAoKSB7IH0KKyAgdm9pZCBtZXRob2QxMjE5ICgpIHsgfQorICB2b2lkIG1ldGhvZDEyMjAgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTIyMSAoKSB7IH0KKyAgdm9pZCBtZXRob2QxMjIyICgpIHsgfQorICB2b2lkIG1ldGhvZDEyMjMgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTIyNCAoKSB7IH0KKyAgdm9pZCBtZXRob2QxMjI1ICgpIHsgfQorICB2b2lkIG1ldGhvZDEyMjYgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTIyNyAoKSB7IH0KKyAgdm9pZCBtZXRob2QxMjI4ICgpIHsgfQorICB2b2lkIG1ldGhvZDEyMjkgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTIzMCAoKSB7IH0KKyAgdm9pZCBtZXRob2QxMjMxICgpIHsgfQorICB2b2lkIG1ldGhvZDEyMzIgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTIzMyAoKSB7IH0KKyAgdm9pZCBtZXRob2QxMjM0ICgpIHsgfQorICB2b2lkIG1ldGhvZDEyMzUgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTIzNiAoKSB7IH0KKyAgdm9pZCBtZXRob2QxMjM3ICgpIHsgfQorICB2b2lkIG1ldGhvZDEyMzggKCkgeyB9CisgIHZvaWQgbWV0aG9kMTIzOSAoKSB7IH0KKyAgdm9pZCBtZXRob2QxMjQwICgpIHsgfQorICB2b2lkIG1ldGhvZDEyNDEgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTI0MiAoKSB7IH0KKyAgdm9pZCBtZXRob2QxMjQzICgpIHsgfQorICB2b2lkIG1ldGhvZDEyNDQgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTI0NSAoKSB7IH0KKyAgdm9pZCBtZXRob2QxMjQ2ICgpIHsgfQorICB2b2lkIG1ldGhvZDEyNDcgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTI0OCAoKSB7IH0KKyAgdm9pZCBtZXRob2QxMjQ5ICgpIHsgfQorICB2b2lkIG1ldGhvZDEyNTAgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTI1MSAoKSB7IH0KKyAgdm9pZCBtZXRob2QxMjUyICgpIHsgfQorICB2b2lkIG1ldGhvZDEyNTMgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTI1NCAoKSB7IH0KKyAgdm9pZCBtZXRob2QxMjU1ICgpIHsgfQorICB2b2lkIG1ldGhvZDEyNTYgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTI1NyAoKSB7IH0KKyAgdm9pZCBtZXRob2QxMjU4ICgpIHsgfQorICB2b2lkIG1ldGhvZDEyNTkgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTI2MCAoKSB7IH0KKyAgdm9pZCBtZXRob2QxMjYxICgpIHsgfQorICB2b2lkIG1ldGhvZDEyNjIgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTI2MyAoKSB7IH0KKyAgdm9pZCBtZXRob2QxMjY0ICgpIHsgfQorICB2b2lkIG1ldGhvZDEyNjUgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTI2NiAoKSB7IH0KKyAgdm9pZCBtZXRob2QxMjY3ICgpIHsgfQorICB2b2lkIG1ldGhvZDEyNjggKCkgeyB9CisgIHZvaWQgbWV0aG9kMTI2OSAoKSB7IH0KKyAgdm9pZCBtZXRob2QxMjcwICgpIHsgfQorICB2b2lkIG1ldGhvZDEyNzEgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTI3MiAoKSB7IH0KKyAgdm9pZCBtZXRob2QxMjczICgpIHsgfQorICB2b2lkIG1ldGhvZDEyNzQgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTI3NSAoKSB7IH0KKyAgdm9pZCBtZXRob2QxMjc2ICgpIHsgfQorICB2b2lkIG1ldGhvZDEyNzcgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTI3OCAoKSB7IH0KKyAgdm9pZCBtZXRob2QxMjc5ICgpIHsgfQorICB2b2lkIG1ldGhvZDEyODAgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTI4MSAoKSB7IH0KKyAgdm9pZCBtZXRob2QxMjgyICgpIHsgfQorICB2b2lkIG1ldGhvZDEyODMgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTI4NCAoKSB7IH0KKyAgdm9pZCBtZXRob2QxMjg1ICgpIHsgfQorICB2b2lkIG1ldGhvZDEyODYgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTI4NyAoKSB7IH0KKyAgdm9pZCBtZXRob2QxMjg4ICgpIHsgfQorICB2b2lkIG1ldGhvZDEyODkgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTI5MCAoKSB7IH0KKyAgdm9pZCBtZXRob2QxMjkxICgpIHsgfQorICB2b2lkIG1ldGhvZDEyOTIgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTI5MyAoKSB7IH0KKyAgdm9pZCBtZXRob2QxMjk0ICgpIHsgfQorICB2b2lkIG1ldGhvZDEyOTUgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTI5NiAoKSB7IH0KKyAgdm9pZCBtZXRob2QxMjk3ICgpIHsgfQorICB2b2lkIG1ldGhvZDEyOTggKCkgeyB9CisgIHZvaWQgbWV0aG9kMTI5OSAoKSB7IH0KKyAgdm9pZCBtZXRob2QxMzAwICgpIHsgfQorICB2b2lkIG1ldGhvZDEzMDEgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTMwMiAoKSB7IH0KKyAgdm9pZCBtZXRob2QxMzAzICgpIHsgfQorICB2b2lkIG1ldGhvZDEzMDQgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTMwNSAoKSB7IH0KKyAgdm9pZCBtZXRob2QxMzA2ICgpIHsgfQorICB2b2lkIG1ldGhvZDEzMDcgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTMwOCAoKSB7IH0KKyAgdm9pZCBtZXRob2QxMzA5ICgpIHsgfQorICB2b2lkIG1ldGhvZDEzMTAgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTMxMSAoKSB7IH0KKyAgdm9pZCBtZXRob2QxMzEyICgpIHsgfQorICB2b2lkIG1ldGhvZDEzMTMgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTMxNCAoKSB7IH0KKyAgdm9pZCBtZXRob2QxMzE1ICgpIHsgfQorICB2b2lkIG1ldGhvZDEzMTYgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTMxNyAoKSB7IH0KKyAgdm9pZCBtZXRob2QxMzE4ICgpIHsgfQorICB2b2lkIG1ldGhvZDEzMTkgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTMyMCAoKSB7IH0KKyAgdm9pZCBtZXRob2QxMzIxICgpIHsgfQorICB2b2lkIG1ldGhvZDEzMjIgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTMyMyAoKSB7IH0KKyAgdm9pZCBtZXRob2QxMzI0ICgpIHsgfQorICB2b2lkIG1ldGhvZDEzMjUgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTMyNiAoKSB7IH0KKyAgdm9pZCBtZXRob2QxMzI3ICgpIHsgfQorICB2b2lkIG1ldGhvZDEzMjggKCkgeyB9CisgIHZvaWQgbWV0aG9kMTMyOSAoKSB7IH0KKyAgdm9pZCBtZXRob2QxMzMwICgpIHsgfQorICB2b2lkIG1ldGhvZDEzMzEgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTMzMiAoKSB7IH0KKyAgdm9pZCBtZXRob2QxMzMzICgpIHsgfQorICB2b2lkIG1ldGhvZDEzMzQgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTMzNSAoKSB7IH0KKyAgdm9pZCBtZXRob2QxMzM2ICgpIHsgfQorICB2b2lkIG1ldGhvZDEzMzcgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTMzOCAoKSB7IH0KKyAgdm9pZCBtZXRob2QxMzM5ICgpIHsgfQorICB2b2lkIG1ldGhvZDEzNDAgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTM0MSAoKSB7IH0KKyAgdm9pZCBtZXRob2QxMzQyICgpIHsgfQorICB2b2lkIG1ldGhvZDEzNDMgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTM0NCAoKSB7IH0KKyAgdm9pZCBtZXRob2QxMzQ1ICgpIHsgfQorICB2b2lkIG1ldGhvZDEzNDYgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTM0NyAoKSB7IH0KKyAgdm9pZCBtZXRob2QxMzQ4ICgpIHsgfQorICB2b2lkIG1ldGhvZDEzNDkgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTM1MCAoKSB7IH0KKyAgdm9pZCBtZXRob2QxMzUxICgpIHsgfQorICB2b2lkIG1ldGhvZDEzNTIgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTM1MyAoKSB7IH0KKyAgdm9pZCBtZXRob2QxMzU0ICgpIHsgfQorICB2b2lkIG1ldGhvZDEzNTUgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTM1NiAoKSB7IH0KKyAgdm9pZCBtZXRob2QxMzU3ICgpIHsgfQorICB2b2lkIG1ldGhvZDEzNTggKCkgeyB9CisgIHZvaWQgbWV0aG9kMTM1OSAoKSB7IH0KKyAgdm9pZCBtZXRob2QxMzYwICgpIHsgfQorICB2b2lkIG1ldGhvZDEzNjEgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTM2MiAoKSB7IH0KKyAgdm9pZCBtZXRob2QxMzYzICgpIHsgfQorICB2b2lkIG1ldGhvZDEzNjQgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTM2NSAoKSB7IH0KKyAgdm9pZCBtZXRob2QxMzY2ICgpIHsgfQorICB2b2lkIG1ldGhvZDEzNjcgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTM2OCAoKSB7IH0KKyAgdm9pZCBtZXRob2QxMzY5ICgpIHsgfQorICB2b2lkIG1ldGhvZDEzNzAgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTM3MSAoKSB7IH0KKyAgdm9pZCBtZXRob2QxMzcyICgpIHsgfQorICB2b2lkIG1ldGhvZDEzNzMgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTM3NCAoKSB7IH0KKyAgdm9pZCBtZXRob2QxMzc1ICgpIHsgfQorICB2b2lkIG1ldGhvZDEzNzYgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTM3NyAoKSB7IH0KKyAgdm9pZCBtZXRob2QxMzc4ICgpIHsgfQorICB2b2lkIG1ldGhvZDEzNzkgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTM4MCAoKSB7IH0KKyAgdm9pZCBtZXRob2QxMzgxICgpIHsgfQorICB2b2lkIG1ldGhvZDEzODIgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTM4MyAoKSB7IH0KKyAgdm9pZCBtZXRob2QxMzg0ICgpIHsgfQorICB2b2lkIG1ldGhvZDEzODUgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTM4NiAoKSB7IH0KKyAgdm9pZCBtZXRob2QxMzg3ICgpIHsgfQorICB2b2lkIG1ldGhvZDEzODggKCkgeyB9CisgIHZvaWQgbWV0aG9kMTM4OSAoKSB7IH0KKyAgdm9pZCBtZXRob2QxMzkwICgpIHsgfQorICB2b2lkIG1ldGhvZDEzOTEgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTM5MiAoKSB7IH0KKyAgdm9pZCBtZXRob2QxMzkzICgpIHsgfQorICB2b2lkIG1ldGhvZDEzOTQgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTM5NSAoKSB7IH0KKyAgdm9pZCBtZXRob2QxMzk2ICgpIHsgfQorICB2b2lkIG1ldGhvZDEzOTcgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTM5OCAoKSB7IH0KKyAgdm9pZCBtZXRob2QxMzk5ICgpIHsgfQorICB2b2lkIG1ldGhvZDE0MDAgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTQwMSAoKSB7IH0KKyAgdm9pZCBtZXRob2QxNDAyICgpIHsgfQorICB2b2lkIG1ldGhvZDE0MDMgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTQwNCAoKSB7IH0KKyAgdm9pZCBtZXRob2QxNDA1ICgpIHsgfQorICB2b2lkIG1ldGhvZDE0MDYgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTQwNyAoKSB7IH0KKyAgdm9pZCBtZXRob2QxNDA4ICgpIHsgfQorICB2b2lkIG1ldGhvZDE0MDkgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTQxMCAoKSB7IH0KKyAgdm9pZCBtZXRob2QxNDExICgpIHsgfQorICB2b2lkIG1ldGhvZDE0MTIgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTQxMyAoKSB7IH0KKyAgdm9pZCBtZXRob2QxNDE0ICgpIHsgfQorICB2b2lkIG1ldGhvZDE0MTUgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTQxNiAoKSB7IH0KKyAgdm9pZCBtZXRob2QxNDE3ICgpIHsgfQorICB2b2lkIG1ldGhvZDE0MTggKCkgeyB9CisgIHZvaWQgbWV0aG9kMTQxOSAoKSB7IH0KKyAgdm9pZCBtZXRob2QxNDIwICgpIHsgfQorICB2b2lkIG1ldGhvZDE0MjEgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTQyMiAoKSB7IH0KKyAgdm9pZCBtZXRob2QxNDIzICgpIHsgfQorICB2b2lkIG1ldGhvZDE0MjQgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTQyNSAoKSB7IH0KKyAgdm9pZCBtZXRob2QxNDI2ICgpIHsgfQorICB2b2lkIG1ldGhvZDE0MjcgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTQyOCAoKSB7IH0KKyAgdm9pZCBtZXRob2QxNDI5ICgpIHsgfQorICB2b2lkIG1ldGhvZDE0MzAgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTQzMSAoKSB7IH0KKyAgdm9pZCBtZXRob2QxNDMyICgpIHsgfQorICB2b2lkIG1ldGhvZDE0MzMgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTQzNCAoKSB7IH0KKyAgdm9pZCBtZXRob2QxNDM1ICgpIHsgfQorICB2b2lkIG1ldGhvZDE0MzYgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTQzNyAoKSB7IH0KKyAgdm9pZCBtZXRob2QxNDM4ICgpIHsgfQorICB2b2lkIG1ldGhvZDE0MzkgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTQ0MCAoKSB7IH0KKyAgdm9pZCBtZXRob2QxNDQxICgpIHsgfQorICB2b2lkIG1ldGhvZDE0NDIgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTQ0MyAoKSB7IH0KKyAgdm9pZCBtZXRob2QxNDQ0ICgpIHsgfQorICB2b2lkIG1ldGhvZDE0NDUgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTQ0NiAoKSB7IH0KKyAgdm9pZCBtZXRob2QxNDQ3ICgpIHsgfQorICB2b2lkIG1ldGhvZDE0NDggKCkgeyB9CisgIHZvaWQgbWV0aG9kMTQ0OSAoKSB7IH0KKyAgdm9pZCBtZXRob2QxNDUwICgpIHsgfQorICB2b2lkIG1ldGhvZDE0NTEgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTQ1MiAoKSB7IH0KKyAgdm9pZCBtZXRob2QxNDUzICgpIHsgfQorICB2b2lkIG1ldGhvZDE0NTQgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTQ1NSAoKSB7IH0KKyAgdm9pZCBtZXRob2QxNDU2ICgpIHsgfQorICB2b2lkIG1ldGhvZDE0NTcgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTQ1OCAoKSB7IH0KKyAgdm9pZCBtZXRob2QxNDU5ICgpIHsgfQorICB2b2lkIG1ldGhvZDE0NjAgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTQ2MSAoKSB7IH0KKyAgdm9pZCBtZXRob2QxNDYyICgpIHsgfQorICB2b2lkIG1ldGhvZDE0NjMgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTQ2NCAoKSB7IH0KKyAgdm9pZCBtZXRob2QxNDY1ICgpIHsgfQorICB2b2lkIG1ldGhvZDE0NjYgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTQ2NyAoKSB7IH0KKyAgdm9pZCBtZXRob2QxNDY4ICgpIHsgfQorICB2b2lkIG1ldGhvZDE0NjkgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTQ3MCAoKSB7IH0KKyAgdm9pZCBtZXRob2QxNDcxICgpIHsgfQorICB2b2lkIG1ldGhvZDE0NzIgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTQ3MyAoKSB7IH0KKyAgdm9pZCBtZXRob2QxNDc0ICgpIHsgfQorICB2b2lkIG1ldGhvZDE0NzUgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTQ3NiAoKSB7IH0KKyAgdm9pZCBtZXRob2QxNDc3ICgpIHsgfQorICB2b2lkIG1ldGhvZDE0NzggKCkgeyB9CisgIHZvaWQgbWV0aG9kMTQ3OSAoKSB7IH0KKyAgdm9pZCBtZXRob2QxNDgwICgpIHsgfQorICB2b2lkIG1ldGhvZDE0ODEgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTQ4MiAoKSB7IH0KKyAgdm9pZCBtZXRob2QxNDgzICgpIHsgfQorICB2b2lkIG1ldGhvZDE0ODQgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTQ4NSAoKSB7IH0KKyAgdm9pZCBtZXRob2QxNDg2ICgpIHsgfQorICB2b2lkIG1ldGhvZDE0ODcgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTQ4OCAoKSB7IH0KKyAgdm9pZCBtZXRob2QxNDg5ICgpIHsgfQorICB2b2lkIG1ldGhvZDE0OTAgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTQ5MSAoKSB7IH0KKyAgdm9pZCBtZXRob2QxNDkyICgpIHsgfQorICB2b2lkIG1ldGhvZDE0OTMgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTQ5NCAoKSB7IH0KKyAgdm9pZCBtZXRob2QxNDk1ICgpIHsgfQorICB2b2lkIG1ldGhvZDE0OTYgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTQ5NyAoKSB7IH0KKyAgdm9pZCBtZXRob2QxNDk4ICgpIHsgfQorICB2b2lkIG1ldGhvZDE0OTkgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTUwMCAoKSB7IH0KKyAgdm9pZCBtZXRob2QxNTAxICgpIHsgfQorICB2b2lkIG1ldGhvZDE1MDIgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTUwMyAoKSB7IH0KKyAgdm9pZCBtZXRob2QxNTA0ICgpIHsgfQorICB2b2lkIG1ldGhvZDE1MDUgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTUwNiAoKSB7IH0KKyAgdm9pZCBtZXRob2QxNTA3ICgpIHsgfQorICB2b2lkIG1ldGhvZDE1MDggKCkgeyB9CisgIHZvaWQgbWV0aG9kMTUwOSAoKSB7IH0KKyAgdm9pZCBtZXRob2QxNTEwICgpIHsgfQorICB2b2lkIG1ldGhvZDE1MTEgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTUxMiAoKSB7IH0KKyAgdm9pZCBtZXRob2QxNTEzICgpIHsgfQorICB2b2lkIG1ldGhvZDE1MTQgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTUxNSAoKSB7IH0KKyAgdm9pZCBtZXRob2QxNTE2ICgpIHsgfQorICB2b2lkIG1ldGhvZDE1MTcgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTUxOCAoKSB7IH0KKyAgdm9pZCBtZXRob2QxNTE5ICgpIHsgfQorICB2b2lkIG1ldGhvZDE1MjAgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTUyMSAoKSB7IH0KKyAgdm9pZCBtZXRob2QxNTIyICgpIHsgfQorICB2b2lkIG1ldGhvZDE1MjMgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTUyNCAoKSB7IH0KKyAgdm9pZCBtZXRob2QxNTI1ICgpIHsgfQorICB2b2lkIG1ldGhvZDE1MjYgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTUyNyAoKSB7IH0KKyAgdm9pZCBtZXRob2QxNTI4ICgpIHsgfQorICB2b2lkIG1ldGhvZDE1MjkgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTUzMCAoKSB7IH0KKyAgdm9pZCBtZXRob2QxNTMxICgpIHsgfQorICB2b2lkIG1ldGhvZDE1MzIgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTUzMyAoKSB7IH0KKyAgdm9pZCBtZXRob2QxNTM0ICgpIHsgfQorICB2b2lkIG1ldGhvZDE1MzUgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTUzNiAoKSB7IH0KKyAgdm9pZCBtZXRob2QxNTM3ICgpIHsgfQorICB2b2lkIG1ldGhvZDE1MzggKCkgeyB9CisgIHZvaWQgbWV0aG9kMTUzOSAoKSB7IH0KKyAgdm9pZCBtZXRob2QxNTQwICgpIHsgfQorICB2b2lkIG1ldGhvZDE1NDEgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTU0MiAoKSB7IH0KKyAgdm9pZCBtZXRob2QxNTQzICgpIHsgfQorICB2b2lkIG1ldGhvZDE1NDQgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTU0NSAoKSB7IH0KKyAgdm9pZCBtZXRob2QxNTQ2ICgpIHsgfQorICB2b2lkIG1ldGhvZDE1NDcgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTU0OCAoKSB7IH0KKyAgdm9pZCBtZXRob2QxNTQ5ICgpIHsgfQorICB2b2lkIG1ldGhvZDE1NTAgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTU1MSAoKSB7IH0KKyAgdm9pZCBtZXRob2QxNTUyICgpIHsgfQorICB2b2lkIG1ldGhvZDE1NTMgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTU1NCAoKSB7IH0KKyAgdm9pZCBtZXRob2QxNTU1ICgpIHsgfQorICB2b2lkIG1ldGhvZDE1NTYgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTU1NyAoKSB7IH0KKyAgdm9pZCBtZXRob2QxNTU4ICgpIHsgfQorICB2b2lkIG1ldGhvZDE1NTkgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTU2MCAoKSB7IH0KKyAgdm9pZCBtZXRob2QxNTYxICgpIHsgfQorICB2b2lkIG1ldGhvZDE1NjIgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTU2MyAoKSB7IH0KKyAgdm9pZCBtZXRob2QxNTY0ICgpIHsgfQorICB2b2lkIG1ldGhvZDE1NjUgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTU2NiAoKSB7IH0KKyAgdm9pZCBtZXRob2QxNTY3ICgpIHsgfQorICB2b2lkIG1ldGhvZDE1NjggKCkgeyB9CisgIHZvaWQgbWV0aG9kMTU2OSAoKSB7IH0KKyAgdm9pZCBtZXRob2QxNTcwICgpIHsgfQorICB2b2lkIG1ldGhvZDE1NzEgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTU3MiAoKSB7IH0KKyAgdm9pZCBtZXRob2QxNTczICgpIHsgfQorICB2b2lkIG1ldGhvZDE1NzQgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTU3NSAoKSB7IH0KKyAgdm9pZCBtZXRob2QxNTc2ICgpIHsgfQorICB2b2lkIG1ldGhvZDE1NzcgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTU3OCAoKSB7IH0KKyAgdm9pZCBtZXRob2QxNTc5ICgpIHsgfQorICB2b2lkIG1ldGhvZDE1ODAgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTU4MSAoKSB7IH0KKyAgdm9pZCBtZXRob2QxNTgyICgpIHsgfQorICB2b2lkIG1ldGhvZDE1ODMgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTU4NCAoKSB7IH0KKyAgdm9pZCBtZXRob2QxNTg1ICgpIHsgfQorICB2b2lkIG1ldGhvZDE1ODYgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTU4NyAoKSB7IH0KKyAgdm9pZCBtZXRob2QxNTg4ICgpIHsgfQorICB2b2lkIG1ldGhvZDE1ODkgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTU5MCAoKSB7IH0KKyAgdm9pZCBtZXRob2QxNTkxICgpIHsgfQorICB2b2lkIG1ldGhvZDE1OTIgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTU5MyAoKSB7IH0KKyAgdm9pZCBtZXRob2QxNTk0ICgpIHsgfQorICB2b2lkIG1ldGhvZDE1OTUgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTU5NiAoKSB7IH0KKyAgdm9pZCBtZXRob2QxNTk3ICgpIHsgfQorICB2b2lkIG1ldGhvZDE1OTggKCkgeyB9CisgIHZvaWQgbWV0aG9kMTU5OSAoKSB7IH0KKyAgdm9pZCBtZXRob2QxNjAwICgpIHsgfQorICB2b2lkIG1ldGhvZDE2MDEgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTYwMiAoKSB7IH0KKyAgdm9pZCBtZXRob2QxNjAzICgpIHsgfQorICB2b2lkIG1ldGhvZDE2MDQgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTYwNSAoKSB7IH0KKyAgdm9pZCBtZXRob2QxNjA2ICgpIHsgfQorICB2b2lkIG1ldGhvZDE2MDcgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTYwOCAoKSB7IH0KKyAgdm9pZCBtZXRob2QxNjA5ICgpIHsgfQorICB2b2lkIG1ldGhvZDE2MTAgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTYxMSAoKSB7IH0KKyAgdm9pZCBtZXRob2QxNjEyICgpIHsgfQorICB2b2lkIG1ldGhvZDE2MTMgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTYxNCAoKSB7IH0KKyAgdm9pZCBtZXRob2QxNjE1ICgpIHsgfQorICB2b2lkIG1ldGhvZDE2MTYgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTYxNyAoKSB7IH0KKyAgdm9pZCBtZXRob2QxNjE4ICgpIHsgfQorICB2b2lkIG1ldGhvZDE2MTkgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTYyMCAoKSB7IH0KKyAgdm9pZCBtZXRob2QxNjIxICgpIHsgfQorICB2b2lkIG1ldGhvZDE2MjIgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTYyMyAoKSB7IH0KKyAgdm9pZCBtZXRob2QxNjI0ICgpIHsgfQorICB2b2lkIG1ldGhvZDE2MjUgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTYyNiAoKSB7IH0KKyAgdm9pZCBtZXRob2QxNjI3ICgpIHsgfQorICB2b2lkIG1ldGhvZDE2MjggKCkgeyB9CisgIHZvaWQgbWV0aG9kMTYyOSAoKSB7IH0KKyAgdm9pZCBtZXRob2QxNjMwICgpIHsgfQorICB2b2lkIG1ldGhvZDE2MzEgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTYzMiAoKSB7IH0KKyAgdm9pZCBtZXRob2QxNjMzICgpIHsgfQorICB2b2lkIG1ldGhvZDE2MzQgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTYzNSAoKSB7IH0KKyAgdm9pZCBtZXRob2QxNjM2ICgpIHsgfQorICB2b2lkIG1ldGhvZDE2MzcgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTYzOCAoKSB7IH0KKyAgdm9pZCBtZXRob2QxNjM5ICgpIHsgfQorICB2b2lkIG1ldGhvZDE2NDAgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTY0MSAoKSB7IH0KKyAgdm9pZCBtZXRob2QxNjQyICgpIHsgfQorICB2b2lkIG1ldGhvZDE2NDMgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTY0NCAoKSB7IH0KKyAgdm9pZCBtZXRob2QxNjQ1ICgpIHsgfQorICB2b2lkIG1ldGhvZDE2NDYgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTY0NyAoKSB7IH0KKyAgdm9pZCBtZXRob2QxNjQ4ICgpIHsgfQorICB2b2lkIG1ldGhvZDE2NDkgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTY1MCAoKSB7IH0KKyAgdm9pZCBtZXRob2QxNjUxICgpIHsgfQorICB2b2lkIG1ldGhvZDE2NTIgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTY1MyAoKSB7IH0KKyAgdm9pZCBtZXRob2QxNjU0ICgpIHsgfQorICB2b2lkIG1ldGhvZDE2NTUgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTY1NiAoKSB7IH0KKyAgdm9pZCBtZXRob2QxNjU3ICgpIHsgfQorICB2b2lkIG1ldGhvZDE2NTggKCkgeyB9CisgIHZvaWQgbWV0aG9kMTY1OSAoKSB7IH0KKyAgdm9pZCBtZXRob2QxNjYwICgpIHsgfQorICB2b2lkIG1ldGhvZDE2NjEgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTY2MiAoKSB7IH0KKyAgdm9pZCBtZXRob2QxNjYzICgpIHsgfQorICB2b2lkIG1ldGhvZDE2NjQgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTY2NSAoKSB7IH0KKyAgdm9pZCBtZXRob2QxNjY2ICgpIHsgfQorICB2b2lkIG1ldGhvZDE2NjcgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTY2OCAoKSB7IH0KKyAgdm9pZCBtZXRob2QxNjY5ICgpIHsgfQorICB2b2lkIG1ldGhvZDE2NzAgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTY3MSAoKSB7IH0KKyAgdm9pZCBtZXRob2QxNjcyICgpIHsgfQorICB2b2lkIG1ldGhvZDE2NzMgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTY3NCAoKSB7IH0KKyAgdm9pZCBtZXRob2QxNjc1ICgpIHsgfQorICB2b2lkIG1ldGhvZDE2NzYgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTY3NyAoKSB7IH0KKyAgdm9pZCBtZXRob2QxNjc4ICgpIHsgfQorICB2b2lkIG1ldGhvZDE2NzkgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTY4MCAoKSB7IH0KKyAgdm9pZCBtZXRob2QxNjgxICgpIHsgfQorICB2b2lkIG1ldGhvZDE2ODIgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTY4MyAoKSB7IH0KKyAgdm9pZCBtZXRob2QxNjg0ICgpIHsgfQorICB2b2lkIG1ldGhvZDE2ODUgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTY4NiAoKSB7IH0KKyAgdm9pZCBtZXRob2QxNjg3ICgpIHsgfQorICB2b2lkIG1ldGhvZDE2ODggKCkgeyB9CisgIHZvaWQgbWV0aG9kMTY4OSAoKSB7IH0KKyAgdm9pZCBtZXRob2QxNjkwICgpIHsgfQorICB2b2lkIG1ldGhvZDE2OTEgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTY5MiAoKSB7IH0KKyAgdm9pZCBtZXRob2QxNjkzICgpIHsgfQorICB2b2lkIG1ldGhvZDE2OTQgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTY5NSAoKSB7IH0KKyAgdm9pZCBtZXRob2QxNjk2ICgpIHsgfQorICB2b2lkIG1ldGhvZDE2OTcgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTY5OCAoKSB7IH0KKyAgdm9pZCBtZXRob2QxNjk5ICgpIHsgfQorICB2b2lkIG1ldGhvZDE3MDAgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTcwMSAoKSB7IH0KKyAgdm9pZCBtZXRob2QxNzAyICgpIHsgfQorICB2b2lkIG1ldGhvZDE3MDMgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTcwNCAoKSB7IH0KKyAgdm9pZCBtZXRob2QxNzA1ICgpIHsgfQorICB2b2lkIG1ldGhvZDE3MDYgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTcwNyAoKSB7IH0KKyAgdm9pZCBtZXRob2QxNzA4ICgpIHsgfQorICB2b2lkIG1ldGhvZDE3MDkgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTcxMCAoKSB7IH0KKyAgdm9pZCBtZXRob2QxNzExICgpIHsgfQorICB2b2lkIG1ldGhvZDE3MTIgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTcxMyAoKSB7IH0KKyAgdm9pZCBtZXRob2QxNzE0ICgpIHsgfQorICB2b2lkIG1ldGhvZDE3MTUgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTcxNiAoKSB7IH0KKyAgdm9pZCBtZXRob2QxNzE3ICgpIHsgfQorICB2b2lkIG1ldGhvZDE3MTggKCkgeyB9CisgIHZvaWQgbWV0aG9kMTcxOSAoKSB7IH0KKyAgdm9pZCBtZXRob2QxNzIwICgpIHsgfQorICB2b2lkIG1ldGhvZDE3MjEgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTcyMiAoKSB7IH0KKyAgdm9pZCBtZXRob2QxNzIzICgpIHsgfQorICB2b2lkIG1ldGhvZDE3MjQgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTcyNSAoKSB7IH0KKyAgdm9pZCBtZXRob2QxNzI2ICgpIHsgfQorICB2b2lkIG1ldGhvZDE3MjcgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTcyOCAoKSB7IH0KKyAgdm9pZCBtZXRob2QxNzI5ICgpIHsgfQorICB2b2lkIG1ldGhvZDE3MzAgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTczMSAoKSB7IH0KKyAgdm9pZCBtZXRob2QxNzMyICgpIHsgfQorICB2b2lkIG1ldGhvZDE3MzMgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTczNCAoKSB7IH0KKyAgdm9pZCBtZXRob2QxNzM1ICgpIHsgfQorICB2b2lkIG1ldGhvZDE3MzYgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTczNyAoKSB7IH0KKyAgdm9pZCBtZXRob2QxNzM4ICgpIHsgfQorICB2b2lkIG1ldGhvZDE3MzkgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTc0MCAoKSB7IH0KKyAgdm9pZCBtZXRob2QxNzQxICgpIHsgfQorICB2b2lkIG1ldGhvZDE3NDIgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTc0MyAoKSB7IH0KKyAgdm9pZCBtZXRob2QxNzQ0ICgpIHsgfQorICB2b2lkIG1ldGhvZDE3NDUgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTc0NiAoKSB7IH0KKyAgdm9pZCBtZXRob2QxNzQ3ICgpIHsgfQorICB2b2lkIG1ldGhvZDE3NDggKCkgeyB9CisgIHZvaWQgbWV0aG9kMTc0OSAoKSB7IH0KKyAgdm9pZCBtZXRob2QxNzUwICgpIHsgfQorICB2b2lkIG1ldGhvZDE3NTEgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTc1MiAoKSB7IH0KKyAgdm9pZCBtZXRob2QxNzUzICgpIHsgfQorICB2b2lkIG1ldGhvZDE3NTQgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTc1NSAoKSB7IH0KKyAgdm9pZCBtZXRob2QxNzU2ICgpIHsgfQorICB2b2lkIG1ldGhvZDE3NTcgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTc1OCAoKSB7IH0KKyAgdm9pZCBtZXRob2QxNzU5ICgpIHsgfQorICB2b2lkIG1ldGhvZDE3NjAgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTc2MSAoKSB7IH0KKyAgdm9pZCBtZXRob2QxNzYyICgpIHsgfQorICB2b2lkIG1ldGhvZDE3NjMgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTc2NCAoKSB7IH0KKyAgdm9pZCBtZXRob2QxNzY1ICgpIHsgfQorICB2b2lkIG1ldGhvZDE3NjYgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTc2NyAoKSB7IH0KKyAgdm9pZCBtZXRob2QxNzY4ICgpIHsgfQorICB2b2lkIG1ldGhvZDE3NjkgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTc3MCAoKSB7IH0KKyAgdm9pZCBtZXRob2QxNzcxICgpIHsgfQorICB2b2lkIG1ldGhvZDE3NzIgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTc3MyAoKSB7IH0KKyAgdm9pZCBtZXRob2QxNzc0ICgpIHsgfQorICB2b2lkIG1ldGhvZDE3NzUgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTc3NiAoKSB7IH0KKyAgdm9pZCBtZXRob2QxNzc3ICgpIHsgfQorICB2b2lkIG1ldGhvZDE3NzggKCkgeyB9CisgIHZvaWQgbWV0aG9kMTc3OSAoKSB7IH0KKyAgdm9pZCBtZXRob2QxNzgwICgpIHsgfQorICB2b2lkIG1ldGhvZDE3ODEgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTc4MiAoKSB7IH0KKyAgdm9pZCBtZXRob2QxNzgzICgpIHsgfQorICB2b2lkIG1ldGhvZDE3ODQgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTc4NSAoKSB7IH0KKyAgdm9pZCBtZXRob2QxNzg2ICgpIHsgfQorICB2b2lkIG1ldGhvZDE3ODcgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTc4OCAoKSB7IH0KKyAgdm9pZCBtZXRob2QxNzg5ICgpIHsgfQorICB2b2lkIG1ldGhvZDE3OTAgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTc5MSAoKSB7IH0KKyAgdm9pZCBtZXRob2QxNzkyICgpIHsgfQorICB2b2lkIG1ldGhvZDE3OTMgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTc5NCAoKSB7IH0KKyAgdm9pZCBtZXRob2QxNzk1ICgpIHsgfQorICB2b2lkIG1ldGhvZDE3OTYgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTc5NyAoKSB7IH0KKyAgdm9pZCBtZXRob2QxNzk4ICgpIHsgfQorICB2b2lkIG1ldGhvZDE3OTkgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTgwMCAoKSB7IH0KKyAgdm9pZCBtZXRob2QxODAxICgpIHsgfQorICB2b2lkIG1ldGhvZDE4MDIgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTgwMyAoKSB7IH0KKyAgdm9pZCBtZXRob2QxODA0ICgpIHsgfQorICB2b2lkIG1ldGhvZDE4MDUgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTgwNiAoKSB7IH0KKyAgdm9pZCBtZXRob2QxODA3ICgpIHsgfQorICB2b2lkIG1ldGhvZDE4MDggKCkgeyB9CisgIHZvaWQgbWV0aG9kMTgwOSAoKSB7IH0KKyAgdm9pZCBtZXRob2QxODEwICgpIHsgfQorICB2b2lkIG1ldGhvZDE4MTEgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTgxMiAoKSB7IH0KKyAgdm9pZCBtZXRob2QxODEzICgpIHsgfQorICB2b2lkIG1ldGhvZDE4MTQgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTgxNSAoKSB7IH0KKyAgdm9pZCBtZXRob2QxODE2ICgpIHsgfQorICB2b2lkIG1ldGhvZDE4MTcgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTgxOCAoKSB7IH0KKyAgdm9pZCBtZXRob2QxODE5ICgpIHsgfQorICB2b2lkIG1ldGhvZDE4MjAgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTgyMSAoKSB7IH0KKyAgdm9pZCBtZXRob2QxODIyICgpIHsgfQorICB2b2lkIG1ldGhvZDE4MjMgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTgyNCAoKSB7IH0KKyAgdm9pZCBtZXRob2QxODI1ICgpIHsgfQorICB2b2lkIG1ldGhvZDE4MjYgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTgyNyAoKSB7IH0KKyAgdm9pZCBtZXRob2QxODI4ICgpIHsgfQorICB2b2lkIG1ldGhvZDE4MjkgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTgzMCAoKSB7IH0KKyAgdm9pZCBtZXRob2QxODMxICgpIHsgfQorICB2b2lkIG1ldGhvZDE4MzIgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTgzMyAoKSB7IH0KKyAgdm9pZCBtZXRob2QxODM0ICgpIHsgfQorICB2b2lkIG1ldGhvZDE4MzUgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTgzNiAoKSB7IH0KKyAgdm9pZCBtZXRob2QxODM3ICgpIHsgfQorICB2b2lkIG1ldGhvZDE4MzggKCkgeyB9CisgIHZvaWQgbWV0aG9kMTgzOSAoKSB7IH0KKyAgdm9pZCBtZXRob2QxODQwICgpIHsgfQorICB2b2lkIG1ldGhvZDE4NDEgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTg0MiAoKSB7IH0KKyAgdm9pZCBtZXRob2QxODQzICgpIHsgfQorICB2b2lkIG1ldGhvZDE4NDQgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTg0NSAoKSB7IH0KKyAgdm9pZCBtZXRob2QxODQ2ICgpIHsgfQorICB2b2lkIG1ldGhvZDE4NDcgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTg0OCAoKSB7IH0KKyAgdm9pZCBtZXRob2QxODQ5ICgpIHsgfQorICB2b2lkIG1ldGhvZDE4NTAgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTg1MSAoKSB7IH0KKyAgdm9pZCBtZXRob2QxODUyICgpIHsgfQorICB2b2lkIG1ldGhvZDE4NTMgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTg1NCAoKSB7IH0KKyAgdm9pZCBtZXRob2QxODU1ICgpIHsgfQorICB2b2lkIG1ldGhvZDE4NTYgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTg1NyAoKSB7IH0KKyAgdm9pZCBtZXRob2QxODU4ICgpIHsgfQorICB2b2lkIG1ldGhvZDE4NTkgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTg2MCAoKSB7IH0KKyAgdm9pZCBtZXRob2QxODYxICgpIHsgfQorICB2b2lkIG1ldGhvZDE4NjIgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTg2MyAoKSB7IH0KKyAgdm9pZCBtZXRob2QxODY0ICgpIHsgfQorICB2b2lkIG1ldGhvZDE4NjUgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTg2NiAoKSB7IH0KKyAgdm9pZCBtZXRob2QxODY3ICgpIHsgfQorICB2b2lkIG1ldGhvZDE4NjggKCkgeyB9CisgIHZvaWQgbWV0aG9kMTg2OSAoKSB7IH0KKyAgdm9pZCBtZXRob2QxODcwICgpIHsgfQorICB2b2lkIG1ldGhvZDE4NzEgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTg3MiAoKSB7IH0KKyAgdm9pZCBtZXRob2QxODczICgpIHsgfQorICB2b2lkIG1ldGhvZDE4NzQgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTg3NSAoKSB7IH0KKyAgdm9pZCBtZXRob2QxODc2ICgpIHsgfQorICB2b2lkIG1ldGhvZDE4NzcgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTg3OCAoKSB7IH0KKyAgdm9pZCBtZXRob2QxODc5ICgpIHsgfQorICB2b2lkIG1ldGhvZDE4ODAgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTg4MSAoKSB7IH0KKyAgdm9pZCBtZXRob2QxODgyICgpIHsgfQorICB2b2lkIG1ldGhvZDE4ODMgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTg4NCAoKSB7IH0KKyAgdm9pZCBtZXRob2QxODg1ICgpIHsgfQorICB2b2lkIG1ldGhvZDE4ODYgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTg4NyAoKSB7IH0KKyAgdm9pZCBtZXRob2QxODg4ICgpIHsgfQorICB2b2lkIG1ldGhvZDE4ODkgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTg5MCAoKSB7IH0KKyAgdm9pZCBtZXRob2QxODkxICgpIHsgfQorICB2b2lkIG1ldGhvZDE4OTIgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTg5MyAoKSB7IH0KKyAgdm9pZCBtZXRob2QxODk0ICgpIHsgfQorICB2b2lkIG1ldGhvZDE4OTUgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTg5NiAoKSB7IH0KKyAgdm9pZCBtZXRob2QxODk3ICgpIHsgfQorICB2b2lkIG1ldGhvZDE4OTggKCkgeyB9CisgIHZvaWQgbWV0aG9kMTg5OSAoKSB7IH0KKyAgdm9pZCBtZXRob2QxOTAwICgpIHsgfQorICB2b2lkIG1ldGhvZDE5MDEgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTkwMiAoKSB7IH0KKyAgdm9pZCBtZXRob2QxOTAzICgpIHsgfQorICB2b2lkIG1ldGhvZDE5MDQgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTkwNSAoKSB7IH0KKyAgdm9pZCBtZXRob2QxOTA2ICgpIHsgfQorICB2b2lkIG1ldGhvZDE5MDcgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTkwOCAoKSB7IH0KKyAgdm9pZCBtZXRob2QxOTA5ICgpIHsgfQorICB2b2lkIG1ldGhvZDE5MTAgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTkxMSAoKSB7IH0KKyAgdm9pZCBtZXRob2QxOTEyICgpIHsgfQorICB2b2lkIG1ldGhvZDE5MTMgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTkxNCAoKSB7IH0KKyAgdm9pZCBtZXRob2QxOTE1ICgpIHsgfQorICB2b2lkIG1ldGhvZDE5MTYgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTkxNyAoKSB7IH0KKyAgdm9pZCBtZXRob2QxOTE4ICgpIHsgfQorICB2b2lkIG1ldGhvZDE5MTkgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTkyMCAoKSB7IH0KKyAgdm9pZCBtZXRob2QxOTIxICgpIHsgfQorICB2b2lkIG1ldGhvZDE5MjIgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTkyMyAoKSB7IH0KKyAgdm9pZCBtZXRob2QxOTI0ICgpIHsgfQorICB2b2lkIG1ldGhvZDE5MjUgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTkyNiAoKSB7IH0KKyAgdm9pZCBtZXRob2QxOTI3ICgpIHsgfQorICB2b2lkIG1ldGhvZDE5MjggKCkgeyB9CisgIHZvaWQgbWV0aG9kMTkyOSAoKSB7IH0KKyAgdm9pZCBtZXRob2QxOTMwICgpIHsgfQorICB2b2lkIG1ldGhvZDE5MzEgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTkzMiAoKSB7IH0KKyAgdm9pZCBtZXRob2QxOTMzICgpIHsgfQorICB2b2lkIG1ldGhvZDE5MzQgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTkzNSAoKSB7IH0KKyAgdm9pZCBtZXRob2QxOTM2ICgpIHsgfQorICB2b2lkIG1ldGhvZDE5MzcgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTkzOCAoKSB7IH0KKyAgdm9pZCBtZXRob2QxOTM5ICgpIHsgfQorICB2b2lkIG1ldGhvZDE5NDAgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTk0MSAoKSB7IH0KKyAgdm9pZCBtZXRob2QxOTQyICgpIHsgfQorICB2b2lkIG1ldGhvZDE5NDMgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTk0NCAoKSB7IH0KKyAgdm9pZCBtZXRob2QxOTQ1ICgpIHsgfQorICB2b2lkIG1ldGhvZDE5NDYgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTk0NyAoKSB7IH0KKyAgdm9pZCBtZXRob2QxOTQ4ICgpIHsgfQorICB2b2lkIG1ldGhvZDE5NDkgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTk1MCAoKSB7IH0KKyAgdm9pZCBtZXRob2QxOTUxICgpIHsgfQorICB2b2lkIG1ldGhvZDE5NTIgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTk1MyAoKSB7IH0KKyAgdm9pZCBtZXRob2QxOTU0ICgpIHsgfQorICB2b2lkIG1ldGhvZDE5NTUgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTk1NiAoKSB7IH0KKyAgdm9pZCBtZXRob2QxOTU3ICgpIHsgfQorICB2b2lkIG1ldGhvZDE5NTggKCkgeyB9CisgIHZvaWQgbWV0aG9kMTk1OSAoKSB7IH0KKyAgdm9pZCBtZXRob2QxOTYwICgpIHsgfQorICB2b2lkIG1ldGhvZDE5NjEgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTk2MiAoKSB7IH0KKyAgdm9pZCBtZXRob2QxOTYzICgpIHsgfQorICB2b2lkIG1ldGhvZDE5NjQgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTk2NSAoKSB7IH0KKyAgdm9pZCBtZXRob2QxOTY2ICgpIHsgfQorICB2b2lkIG1ldGhvZDE5NjcgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTk2OCAoKSB7IH0KKyAgdm9pZCBtZXRob2QxOTY5ICgpIHsgfQorICB2b2lkIG1ldGhvZDE5NzAgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTk3MSAoKSB7IH0KKyAgdm9pZCBtZXRob2QxOTcyICgpIHsgfQorICB2b2lkIG1ldGhvZDE5NzMgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTk3NCAoKSB7IH0KKyAgdm9pZCBtZXRob2QxOTc1ICgpIHsgfQorICB2b2lkIG1ldGhvZDE5NzYgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTk3NyAoKSB7IH0KKyAgdm9pZCBtZXRob2QxOTc4ICgpIHsgfQorICB2b2lkIG1ldGhvZDE5NzkgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTk4MCAoKSB7IH0KKyAgdm9pZCBtZXRob2QxOTgxICgpIHsgfQorICB2b2lkIG1ldGhvZDE5ODIgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTk4MyAoKSB7IH0KKyAgdm9pZCBtZXRob2QxOTg0ICgpIHsgfQorICB2b2lkIG1ldGhvZDE5ODUgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTk4NiAoKSB7IH0KKyAgdm9pZCBtZXRob2QxOTg3ICgpIHsgfQorICB2b2lkIG1ldGhvZDE5ODggKCkgeyB9CisgIHZvaWQgbWV0aG9kMTk4OSAoKSB7IH0KKyAgdm9pZCBtZXRob2QxOTkwICgpIHsgfQorICB2b2lkIG1ldGhvZDE5OTEgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTk5MiAoKSB7IH0KKyAgdm9pZCBtZXRob2QxOTkzICgpIHsgfQorICB2b2lkIG1ldGhvZDE5OTQgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTk5NSAoKSB7IH0KKyAgdm9pZCBtZXRob2QxOTk2ICgpIHsgfQorICB2b2lkIG1ldGhvZDE5OTcgKCkgeyB9CisgIHZvaWQgbWV0aG9kMTk5OCAoKSB7IH0KKyAgdm9pZCBtZXRob2QxOTk5ICgpIHsgfQorICB2b2lkIG1ldGhvZDIwMDAgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjAwMSAoKSB7IH0KKyAgdm9pZCBtZXRob2QyMDAyICgpIHsgfQorICB2b2lkIG1ldGhvZDIwMDMgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjAwNCAoKSB7IH0KKyAgdm9pZCBtZXRob2QyMDA1ICgpIHsgfQorICB2b2lkIG1ldGhvZDIwMDYgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjAwNyAoKSB7IH0KKyAgdm9pZCBtZXRob2QyMDA4ICgpIHsgfQorICB2b2lkIG1ldGhvZDIwMDkgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjAxMCAoKSB7IH0KKyAgdm9pZCBtZXRob2QyMDExICgpIHsgfQorICB2b2lkIG1ldGhvZDIwMTIgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjAxMyAoKSB7IH0KKyAgdm9pZCBtZXRob2QyMDE0ICgpIHsgfQorICB2b2lkIG1ldGhvZDIwMTUgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjAxNiAoKSB7IH0KKyAgdm9pZCBtZXRob2QyMDE3ICgpIHsgfQorICB2b2lkIG1ldGhvZDIwMTggKCkgeyB9CisgIHZvaWQgbWV0aG9kMjAxOSAoKSB7IH0KKyAgdm9pZCBtZXRob2QyMDIwICgpIHsgfQorICB2b2lkIG1ldGhvZDIwMjEgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjAyMiAoKSB7IH0KKyAgdm9pZCBtZXRob2QyMDIzICgpIHsgfQorICB2b2lkIG1ldGhvZDIwMjQgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjAyNSAoKSB7IH0KKyAgdm9pZCBtZXRob2QyMDI2ICgpIHsgfQorICB2b2lkIG1ldGhvZDIwMjcgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjAyOCAoKSB7IH0KKyAgdm9pZCBtZXRob2QyMDI5ICgpIHsgfQorICB2b2lkIG1ldGhvZDIwMzAgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjAzMSAoKSB7IH0KKyAgdm9pZCBtZXRob2QyMDMyICgpIHsgfQorICB2b2lkIG1ldGhvZDIwMzMgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjAzNCAoKSB7IH0KKyAgdm9pZCBtZXRob2QyMDM1ICgpIHsgfQorICB2b2lkIG1ldGhvZDIwMzYgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjAzNyAoKSB7IH0KKyAgdm9pZCBtZXRob2QyMDM4ICgpIHsgfQorICB2b2lkIG1ldGhvZDIwMzkgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjA0MCAoKSB7IH0KKyAgdm9pZCBtZXRob2QyMDQxICgpIHsgfQorICB2b2lkIG1ldGhvZDIwNDIgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjA0MyAoKSB7IH0KKyAgdm9pZCBtZXRob2QyMDQ0ICgpIHsgfQorICB2b2lkIG1ldGhvZDIwNDUgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjA0NiAoKSB7IH0KKyAgdm9pZCBtZXRob2QyMDQ3ICgpIHsgfQorICB2b2lkIG1ldGhvZDIwNDggKCkgeyB9CisgIHZvaWQgbWV0aG9kMjA0OSAoKSB7IH0KKyAgdm9pZCBtZXRob2QyMDUwICgpIHsgfQorICB2b2lkIG1ldGhvZDIwNTEgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjA1MiAoKSB7IH0KKyAgdm9pZCBtZXRob2QyMDUzICgpIHsgfQorICB2b2lkIG1ldGhvZDIwNTQgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjA1NSAoKSB7IH0KKyAgdm9pZCBtZXRob2QyMDU2ICgpIHsgfQorICB2b2lkIG1ldGhvZDIwNTcgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjA1OCAoKSB7IH0KKyAgdm9pZCBtZXRob2QyMDU5ICgpIHsgfQorICB2b2lkIG1ldGhvZDIwNjAgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjA2MSAoKSB7IH0KKyAgdm9pZCBtZXRob2QyMDYyICgpIHsgfQorICB2b2lkIG1ldGhvZDIwNjMgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjA2NCAoKSB7IH0KKyAgdm9pZCBtZXRob2QyMDY1ICgpIHsgfQorICB2b2lkIG1ldGhvZDIwNjYgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjA2NyAoKSB7IH0KKyAgdm9pZCBtZXRob2QyMDY4ICgpIHsgfQorICB2b2lkIG1ldGhvZDIwNjkgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjA3MCAoKSB7IH0KKyAgdm9pZCBtZXRob2QyMDcxICgpIHsgfQorICB2b2lkIG1ldGhvZDIwNzIgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjA3MyAoKSB7IH0KKyAgdm9pZCBtZXRob2QyMDc0ICgpIHsgfQorICB2b2lkIG1ldGhvZDIwNzUgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjA3NiAoKSB7IH0KKyAgdm9pZCBtZXRob2QyMDc3ICgpIHsgfQorICB2b2lkIG1ldGhvZDIwNzggKCkgeyB9CisgIHZvaWQgbWV0aG9kMjA3OSAoKSB7IH0KKyAgdm9pZCBtZXRob2QyMDgwICgpIHsgfQorICB2b2lkIG1ldGhvZDIwODEgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjA4MiAoKSB7IH0KKyAgdm9pZCBtZXRob2QyMDgzICgpIHsgfQorICB2b2lkIG1ldGhvZDIwODQgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjA4NSAoKSB7IH0KKyAgdm9pZCBtZXRob2QyMDg2ICgpIHsgfQorICB2b2lkIG1ldGhvZDIwODcgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjA4OCAoKSB7IH0KKyAgdm9pZCBtZXRob2QyMDg5ICgpIHsgfQorICB2b2lkIG1ldGhvZDIwOTAgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjA5MSAoKSB7IH0KKyAgdm9pZCBtZXRob2QyMDkyICgpIHsgfQorICB2b2lkIG1ldGhvZDIwOTMgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjA5NCAoKSB7IH0KKyAgdm9pZCBtZXRob2QyMDk1ICgpIHsgfQorICB2b2lkIG1ldGhvZDIwOTYgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjA5NyAoKSB7IH0KKyAgdm9pZCBtZXRob2QyMDk4ICgpIHsgfQorICB2b2lkIG1ldGhvZDIwOTkgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjEwMCAoKSB7IH0KKyAgdm9pZCBtZXRob2QyMTAxICgpIHsgfQorICB2b2lkIG1ldGhvZDIxMDIgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjEwMyAoKSB7IH0KKyAgdm9pZCBtZXRob2QyMTA0ICgpIHsgfQorICB2b2lkIG1ldGhvZDIxMDUgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjEwNiAoKSB7IH0KKyAgdm9pZCBtZXRob2QyMTA3ICgpIHsgfQorICB2b2lkIG1ldGhvZDIxMDggKCkgeyB9CisgIHZvaWQgbWV0aG9kMjEwOSAoKSB7IH0KKyAgdm9pZCBtZXRob2QyMTEwICgpIHsgfQorICB2b2lkIG1ldGhvZDIxMTEgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjExMiAoKSB7IH0KKyAgdm9pZCBtZXRob2QyMTEzICgpIHsgfQorICB2b2lkIG1ldGhvZDIxMTQgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjExNSAoKSB7IH0KKyAgdm9pZCBtZXRob2QyMTE2ICgpIHsgfQorICB2b2lkIG1ldGhvZDIxMTcgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjExOCAoKSB7IH0KKyAgdm9pZCBtZXRob2QyMTE5ICgpIHsgfQorICB2b2lkIG1ldGhvZDIxMjAgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjEyMSAoKSB7IH0KKyAgdm9pZCBtZXRob2QyMTIyICgpIHsgfQorICB2b2lkIG1ldGhvZDIxMjMgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjEyNCAoKSB7IH0KKyAgdm9pZCBtZXRob2QyMTI1ICgpIHsgfQorICB2b2lkIG1ldGhvZDIxMjYgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjEyNyAoKSB7IH0KKyAgdm9pZCBtZXRob2QyMTI4ICgpIHsgfQorICB2b2lkIG1ldGhvZDIxMjkgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjEzMCAoKSB7IH0KKyAgdm9pZCBtZXRob2QyMTMxICgpIHsgfQorICB2b2lkIG1ldGhvZDIxMzIgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjEzMyAoKSB7IH0KKyAgdm9pZCBtZXRob2QyMTM0ICgpIHsgfQorICB2b2lkIG1ldGhvZDIxMzUgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjEzNiAoKSB7IH0KKyAgdm9pZCBtZXRob2QyMTM3ICgpIHsgfQorICB2b2lkIG1ldGhvZDIxMzggKCkgeyB9CisgIHZvaWQgbWV0aG9kMjEzOSAoKSB7IH0KKyAgdm9pZCBtZXRob2QyMTQwICgpIHsgfQorICB2b2lkIG1ldGhvZDIxNDEgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjE0MiAoKSB7IH0KKyAgdm9pZCBtZXRob2QyMTQzICgpIHsgfQorICB2b2lkIG1ldGhvZDIxNDQgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjE0NSAoKSB7IH0KKyAgdm9pZCBtZXRob2QyMTQ2ICgpIHsgfQorICB2b2lkIG1ldGhvZDIxNDcgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjE0OCAoKSB7IH0KKyAgdm9pZCBtZXRob2QyMTQ5ICgpIHsgfQorICB2b2lkIG1ldGhvZDIxNTAgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjE1MSAoKSB7IH0KKyAgdm9pZCBtZXRob2QyMTUyICgpIHsgfQorICB2b2lkIG1ldGhvZDIxNTMgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjE1NCAoKSB7IH0KKyAgdm9pZCBtZXRob2QyMTU1ICgpIHsgfQorICB2b2lkIG1ldGhvZDIxNTYgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjE1NyAoKSB7IH0KKyAgdm9pZCBtZXRob2QyMTU4ICgpIHsgfQorICB2b2lkIG1ldGhvZDIxNTkgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjE2MCAoKSB7IH0KKyAgdm9pZCBtZXRob2QyMTYxICgpIHsgfQorICB2b2lkIG1ldGhvZDIxNjIgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjE2MyAoKSB7IH0KKyAgdm9pZCBtZXRob2QyMTY0ICgpIHsgfQorICB2b2lkIG1ldGhvZDIxNjUgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjE2NiAoKSB7IH0KKyAgdm9pZCBtZXRob2QyMTY3ICgpIHsgfQorICB2b2lkIG1ldGhvZDIxNjggKCkgeyB9CisgIHZvaWQgbWV0aG9kMjE2OSAoKSB7IH0KKyAgdm9pZCBtZXRob2QyMTcwICgpIHsgfQorICB2b2lkIG1ldGhvZDIxNzEgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjE3MiAoKSB7IH0KKyAgdm9pZCBtZXRob2QyMTczICgpIHsgfQorICB2b2lkIG1ldGhvZDIxNzQgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjE3NSAoKSB7IH0KKyAgdm9pZCBtZXRob2QyMTc2ICgpIHsgfQorICB2b2lkIG1ldGhvZDIxNzcgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjE3OCAoKSB7IH0KKyAgdm9pZCBtZXRob2QyMTc5ICgpIHsgfQorICB2b2lkIG1ldGhvZDIxODAgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjE4MSAoKSB7IH0KKyAgdm9pZCBtZXRob2QyMTgyICgpIHsgfQorICB2b2lkIG1ldGhvZDIxODMgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjE4NCAoKSB7IH0KKyAgdm9pZCBtZXRob2QyMTg1ICgpIHsgfQorICB2b2lkIG1ldGhvZDIxODYgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjE4NyAoKSB7IH0KKyAgdm9pZCBtZXRob2QyMTg4ICgpIHsgfQorICB2b2lkIG1ldGhvZDIxODkgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjE5MCAoKSB7IH0KKyAgdm9pZCBtZXRob2QyMTkxICgpIHsgfQorICB2b2lkIG1ldGhvZDIxOTIgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjE5MyAoKSB7IH0KKyAgdm9pZCBtZXRob2QyMTk0ICgpIHsgfQorICB2b2lkIG1ldGhvZDIxOTUgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjE5NiAoKSB7IH0KKyAgdm9pZCBtZXRob2QyMTk3ICgpIHsgfQorICB2b2lkIG1ldGhvZDIxOTggKCkgeyB9CisgIHZvaWQgbWV0aG9kMjE5OSAoKSB7IH0KKyAgdm9pZCBtZXRob2QyMjAwICgpIHsgfQorICB2b2lkIG1ldGhvZDIyMDEgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjIwMiAoKSB7IH0KKyAgdm9pZCBtZXRob2QyMjAzICgpIHsgfQorICB2b2lkIG1ldGhvZDIyMDQgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjIwNSAoKSB7IH0KKyAgdm9pZCBtZXRob2QyMjA2ICgpIHsgfQorICB2b2lkIG1ldGhvZDIyMDcgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjIwOCAoKSB7IH0KKyAgdm9pZCBtZXRob2QyMjA5ICgpIHsgfQorICB2b2lkIG1ldGhvZDIyMTAgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjIxMSAoKSB7IH0KKyAgdm9pZCBtZXRob2QyMjEyICgpIHsgfQorICB2b2lkIG1ldGhvZDIyMTMgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjIxNCAoKSB7IH0KKyAgdm9pZCBtZXRob2QyMjE1ICgpIHsgfQorICB2b2lkIG1ldGhvZDIyMTYgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjIxNyAoKSB7IH0KKyAgdm9pZCBtZXRob2QyMjE4ICgpIHsgfQorICB2b2lkIG1ldGhvZDIyMTkgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjIyMCAoKSB7IH0KKyAgdm9pZCBtZXRob2QyMjIxICgpIHsgfQorICB2b2lkIG1ldGhvZDIyMjIgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjIyMyAoKSB7IH0KKyAgdm9pZCBtZXRob2QyMjI0ICgpIHsgfQorICB2b2lkIG1ldGhvZDIyMjUgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjIyNiAoKSB7IH0KKyAgdm9pZCBtZXRob2QyMjI3ICgpIHsgfQorICB2b2lkIG1ldGhvZDIyMjggKCkgeyB9CisgIHZvaWQgbWV0aG9kMjIyOSAoKSB7IH0KKyAgdm9pZCBtZXRob2QyMjMwICgpIHsgfQorICB2b2lkIG1ldGhvZDIyMzEgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjIzMiAoKSB7IH0KKyAgdm9pZCBtZXRob2QyMjMzICgpIHsgfQorICB2b2lkIG1ldGhvZDIyMzQgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjIzNSAoKSB7IH0KKyAgdm9pZCBtZXRob2QyMjM2ICgpIHsgfQorICB2b2lkIG1ldGhvZDIyMzcgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjIzOCAoKSB7IH0KKyAgdm9pZCBtZXRob2QyMjM5ICgpIHsgfQorICB2b2lkIG1ldGhvZDIyNDAgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjI0MSAoKSB7IH0KKyAgdm9pZCBtZXRob2QyMjQyICgpIHsgfQorICB2b2lkIG1ldGhvZDIyNDMgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjI0NCAoKSB7IH0KKyAgdm9pZCBtZXRob2QyMjQ1ICgpIHsgfQorICB2b2lkIG1ldGhvZDIyNDYgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjI0NyAoKSB7IH0KKyAgdm9pZCBtZXRob2QyMjQ4ICgpIHsgfQorICB2b2lkIG1ldGhvZDIyNDkgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjI1MCAoKSB7IH0KKyAgdm9pZCBtZXRob2QyMjUxICgpIHsgfQorICB2b2lkIG1ldGhvZDIyNTIgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjI1MyAoKSB7IH0KKyAgdm9pZCBtZXRob2QyMjU0ICgpIHsgfQorICB2b2lkIG1ldGhvZDIyNTUgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjI1NiAoKSB7IH0KKyAgdm9pZCBtZXRob2QyMjU3ICgpIHsgfQorICB2b2lkIG1ldGhvZDIyNTggKCkgeyB9CisgIHZvaWQgbWV0aG9kMjI1OSAoKSB7IH0KKyAgdm9pZCBtZXRob2QyMjYwICgpIHsgfQorICB2b2lkIG1ldGhvZDIyNjEgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjI2MiAoKSB7IH0KKyAgdm9pZCBtZXRob2QyMjYzICgpIHsgfQorICB2b2lkIG1ldGhvZDIyNjQgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjI2NSAoKSB7IH0KKyAgdm9pZCBtZXRob2QyMjY2ICgpIHsgfQorICB2b2lkIG1ldGhvZDIyNjcgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjI2OCAoKSB7IH0KKyAgdm9pZCBtZXRob2QyMjY5ICgpIHsgfQorICB2b2lkIG1ldGhvZDIyNzAgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjI3MSAoKSB7IH0KKyAgdm9pZCBtZXRob2QyMjcyICgpIHsgfQorICB2b2lkIG1ldGhvZDIyNzMgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjI3NCAoKSB7IH0KKyAgdm9pZCBtZXRob2QyMjc1ICgpIHsgfQorICB2b2lkIG1ldGhvZDIyNzYgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjI3NyAoKSB7IH0KKyAgdm9pZCBtZXRob2QyMjc4ICgpIHsgfQorICB2b2lkIG1ldGhvZDIyNzkgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjI4MCAoKSB7IH0KKyAgdm9pZCBtZXRob2QyMjgxICgpIHsgfQorICB2b2lkIG1ldGhvZDIyODIgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjI4MyAoKSB7IH0KKyAgdm9pZCBtZXRob2QyMjg0ICgpIHsgfQorICB2b2lkIG1ldGhvZDIyODUgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjI4NiAoKSB7IH0KKyAgdm9pZCBtZXRob2QyMjg3ICgpIHsgfQorICB2b2lkIG1ldGhvZDIyODggKCkgeyB9CisgIHZvaWQgbWV0aG9kMjI4OSAoKSB7IH0KKyAgdm9pZCBtZXRob2QyMjkwICgpIHsgfQorICB2b2lkIG1ldGhvZDIyOTEgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjI5MiAoKSB7IH0KKyAgdm9pZCBtZXRob2QyMjkzICgpIHsgfQorICB2b2lkIG1ldGhvZDIyOTQgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjI5NSAoKSB7IH0KKyAgdm9pZCBtZXRob2QyMjk2ICgpIHsgfQorICB2b2lkIG1ldGhvZDIyOTcgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjI5OCAoKSB7IH0KKyAgdm9pZCBtZXRob2QyMjk5ICgpIHsgfQorICB2b2lkIG1ldGhvZDIzMDAgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjMwMSAoKSB7IH0KKyAgdm9pZCBtZXRob2QyMzAyICgpIHsgfQorICB2b2lkIG1ldGhvZDIzMDMgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjMwNCAoKSB7IH0KKyAgdm9pZCBtZXRob2QyMzA1ICgpIHsgfQorICB2b2lkIG1ldGhvZDIzMDYgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjMwNyAoKSB7IH0KKyAgdm9pZCBtZXRob2QyMzA4ICgpIHsgfQorICB2b2lkIG1ldGhvZDIzMDkgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjMxMCAoKSB7IH0KKyAgdm9pZCBtZXRob2QyMzExICgpIHsgfQorICB2b2lkIG1ldGhvZDIzMTIgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjMxMyAoKSB7IH0KKyAgdm9pZCBtZXRob2QyMzE0ICgpIHsgfQorICB2b2lkIG1ldGhvZDIzMTUgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjMxNiAoKSB7IH0KKyAgdm9pZCBtZXRob2QyMzE3ICgpIHsgfQorICB2b2lkIG1ldGhvZDIzMTggKCkgeyB9CisgIHZvaWQgbWV0aG9kMjMxOSAoKSB7IH0KKyAgdm9pZCBtZXRob2QyMzIwICgpIHsgfQorICB2b2lkIG1ldGhvZDIzMjEgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjMyMiAoKSB7IH0KKyAgdm9pZCBtZXRob2QyMzIzICgpIHsgfQorICB2b2lkIG1ldGhvZDIzMjQgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjMyNSAoKSB7IH0KKyAgdm9pZCBtZXRob2QyMzI2ICgpIHsgfQorICB2b2lkIG1ldGhvZDIzMjcgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjMyOCAoKSB7IH0KKyAgdm9pZCBtZXRob2QyMzI5ICgpIHsgfQorICB2b2lkIG1ldGhvZDIzMzAgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjMzMSAoKSB7IH0KKyAgdm9pZCBtZXRob2QyMzMyICgpIHsgfQorICB2b2lkIG1ldGhvZDIzMzMgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjMzNCAoKSB7IH0KKyAgdm9pZCBtZXRob2QyMzM1ICgpIHsgfQorICB2b2lkIG1ldGhvZDIzMzYgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjMzNyAoKSB7IH0KKyAgdm9pZCBtZXRob2QyMzM4ICgpIHsgfQorICB2b2lkIG1ldGhvZDIzMzkgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjM0MCAoKSB7IH0KKyAgdm9pZCBtZXRob2QyMzQxICgpIHsgfQorICB2b2lkIG1ldGhvZDIzNDIgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjM0MyAoKSB7IH0KKyAgdm9pZCBtZXRob2QyMzQ0ICgpIHsgfQorICB2b2lkIG1ldGhvZDIzNDUgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjM0NiAoKSB7IH0KKyAgdm9pZCBtZXRob2QyMzQ3ICgpIHsgfQorICB2b2lkIG1ldGhvZDIzNDggKCkgeyB9CisgIHZvaWQgbWV0aG9kMjM0OSAoKSB7IH0KKyAgdm9pZCBtZXRob2QyMzUwICgpIHsgfQorICB2b2lkIG1ldGhvZDIzNTEgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjM1MiAoKSB7IH0KKyAgdm9pZCBtZXRob2QyMzUzICgpIHsgfQorICB2b2lkIG1ldGhvZDIzNTQgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjM1NSAoKSB7IH0KKyAgdm9pZCBtZXRob2QyMzU2ICgpIHsgfQorICB2b2lkIG1ldGhvZDIzNTcgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjM1OCAoKSB7IH0KKyAgdm9pZCBtZXRob2QyMzU5ICgpIHsgfQorICB2b2lkIG1ldGhvZDIzNjAgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjM2MSAoKSB7IH0KKyAgdm9pZCBtZXRob2QyMzYyICgpIHsgfQorICB2b2lkIG1ldGhvZDIzNjMgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjM2NCAoKSB7IH0KKyAgdm9pZCBtZXRob2QyMzY1ICgpIHsgfQorICB2b2lkIG1ldGhvZDIzNjYgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjM2NyAoKSB7IH0KKyAgdm9pZCBtZXRob2QyMzY4ICgpIHsgfQorICB2b2lkIG1ldGhvZDIzNjkgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjM3MCAoKSB7IH0KKyAgdm9pZCBtZXRob2QyMzcxICgpIHsgfQorICB2b2lkIG1ldGhvZDIzNzIgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjM3MyAoKSB7IH0KKyAgdm9pZCBtZXRob2QyMzc0ICgpIHsgfQorICB2b2lkIG1ldGhvZDIzNzUgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjM3NiAoKSB7IH0KKyAgdm9pZCBtZXRob2QyMzc3ICgpIHsgfQorICB2b2lkIG1ldGhvZDIzNzggKCkgeyB9CisgIHZvaWQgbWV0aG9kMjM3OSAoKSB7IH0KKyAgdm9pZCBtZXRob2QyMzgwICgpIHsgfQorICB2b2lkIG1ldGhvZDIzODEgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjM4MiAoKSB7IH0KKyAgdm9pZCBtZXRob2QyMzgzICgpIHsgfQorICB2b2lkIG1ldGhvZDIzODQgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjM4NSAoKSB7IH0KKyAgdm9pZCBtZXRob2QyMzg2ICgpIHsgfQorICB2b2lkIG1ldGhvZDIzODcgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjM4OCAoKSB7IH0KKyAgdm9pZCBtZXRob2QyMzg5ICgpIHsgfQorICB2b2lkIG1ldGhvZDIzOTAgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjM5MSAoKSB7IH0KKyAgdm9pZCBtZXRob2QyMzkyICgpIHsgfQorICB2b2lkIG1ldGhvZDIzOTMgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjM5NCAoKSB7IH0KKyAgdm9pZCBtZXRob2QyMzk1ICgpIHsgfQorICB2b2lkIG1ldGhvZDIzOTYgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjM5NyAoKSB7IH0KKyAgdm9pZCBtZXRob2QyMzk4ICgpIHsgfQorICB2b2lkIG1ldGhvZDIzOTkgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjQwMCAoKSB7IH0KKyAgdm9pZCBtZXRob2QyNDAxICgpIHsgfQorICB2b2lkIG1ldGhvZDI0MDIgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjQwMyAoKSB7IH0KKyAgdm9pZCBtZXRob2QyNDA0ICgpIHsgfQorICB2b2lkIG1ldGhvZDI0MDUgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjQwNiAoKSB7IH0KKyAgdm9pZCBtZXRob2QyNDA3ICgpIHsgfQorICB2b2lkIG1ldGhvZDI0MDggKCkgeyB9CisgIHZvaWQgbWV0aG9kMjQwOSAoKSB7IH0KKyAgdm9pZCBtZXRob2QyNDEwICgpIHsgfQorICB2b2lkIG1ldGhvZDI0MTEgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjQxMiAoKSB7IH0KKyAgdm9pZCBtZXRob2QyNDEzICgpIHsgfQorICB2b2lkIG1ldGhvZDI0MTQgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjQxNSAoKSB7IH0KKyAgdm9pZCBtZXRob2QyNDE2ICgpIHsgfQorICB2b2lkIG1ldGhvZDI0MTcgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjQxOCAoKSB7IH0KKyAgdm9pZCBtZXRob2QyNDE5ICgpIHsgfQorICB2b2lkIG1ldGhvZDI0MjAgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjQyMSAoKSB7IH0KKyAgdm9pZCBtZXRob2QyNDIyICgpIHsgfQorICB2b2lkIG1ldGhvZDI0MjMgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjQyNCAoKSB7IH0KKyAgdm9pZCBtZXRob2QyNDI1ICgpIHsgfQorICB2b2lkIG1ldGhvZDI0MjYgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjQyNyAoKSB7IH0KKyAgdm9pZCBtZXRob2QyNDI4ICgpIHsgfQorICB2b2lkIG1ldGhvZDI0MjkgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjQzMCAoKSB7IH0KKyAgdm9pZCBtZXRob2QyNDMxICgpIHsgfQorICB2b2lkIG1ldGhvZDI0MzIgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjQzMyAoKSB7IH0KKyAgdm9pZCBtZXRob2QyNDM0ICgpIHsgfQorICB2b2lkIG1ldGhvZDI0MzUgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjQzNiAoKSB7IH0KKyAgdm9pZCBtZXRob2QyNDM3ICgpIHsgfQorICB2b2lkIG1ldGhvZDI0MzggKCkgeyB9CisgIHZvaWQgbWV0aG9kMjQzOSAoKSB7IH0KKyAgdm9pZCBtZXRob2QyNDQwICgpIHsgfQorICB2b2lkIG1ldGhvZDI0NDEgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjQ0MiAoKSB7IH0KKyAgdm9pZCBtZXRob2QyNDQzICgpIHsgfQorICB2b2lkIG1ldGhvZDI0NDQgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjQ0NSAoKSB7IH0KKyAgdm9pZCBtZXRob2QyNDQ2ICgpIHsgfQorICB2b2lkIG1ldGhvZDI0NDcgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjQ0OCAoKSB7IH0KKyAgdm9pZCBtZXRob2QyNDQ5ICgpIHsgfQorICB2b2lkIG1ldGhvZDI0NTAgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjQ1MSAoKSB7IH0KKyAgdm9pZCBtZXRob2QyNDUyICgpIHsgfQorICB2b2lkIG1ldGhvZDI0NTMgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjQ1NCAoKSB7IH0KKyAgdm9pZCBtZXRob2QyNDU1ICgpIHsgfQorICB2b2lkIG1ldGhvZDI0NTYgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjQ1NyAoKSB7IH0KKyAgdm9pZCBtZXRob2QyNDU4ICgpIHsgfQorICB2b2lkIG1ldGhvZDI0NTkgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjQ2MCAoKSB7IH0KKyAgdm9pZCBtZXRob2QyNDYxICgpIHsgfQorICB2b2lkIG1ldGhvZDI0NjIgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjQ2MyAoKSB7IH0KKyAgdm9pZCBtZXRob2QyNDY0ICgpIHsgfQorICB2b2lkIG1ldGhvZDI0NjUgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjQ2NiAoKSB7IH0KKyAgdm9pZCBtZXRob2QyNDY3ICgpIHsgfQorICB2b2lkIG1ldGhvZDI0NjggKCkgeyB9CisgIHZvaWQgbWV0aG9kMjQ2OSAoKSB7IH0KKyAgdm9pZCBtZXRob2QyNDcwICgpIHsgfQorICB2b2lkIG1ldGhvZDI0NzEgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjQ3MiAoKSB7IH0KKyAgdm9pZCBtZXRob2QyNDczICgpIHsgfQorICB2b2lkIG1ldGhvZDI0NzQgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjQ3NSAoKSB7IH0KKyAgdm9pZCBtZXRob2QyNDc2ICgpIHsgfQorICB2b2lkIG1ldGhvZDI0NzcgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjQ3OCAoKSB7IH0KKyAgdm9pZCBtZXRob2QyNDc5ICgpIHsgfQorICB2b2lkIG1ldGhvZDI0ODAgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjQ4MSAoKSB7IH0KKyAgdm9pZCBtZXRob2QyNDgyICgpIHsgfQorICB2b2lkIG1ldGhvZDI0ODMgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjQ4NCAoKSB7IH0KKyAgdm9pZCBtZXRob2QyNDg1ICgpIHsgfQorICB2b2lkIG1ldGhvZDI0ODYgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjQ4NyAoKSB7IH0KKyAgdm9pZCBtZXRob2QyNDg4ICgpIHsgfQorICB2b2lkIG1ldGhvZDI0ODkgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjQ5MCAoKSB7IH0KKyAgdm9pZCBtZXRob2QyNDkxICgpIHsgfQorICB2b2lkIG1ldGhvZDI0OTIgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjQ5MyAoKSB7IH0KKyAgdm9pZCBtZXRob2QyNDk0ICgpIHsgfQorICB2b2lkIG1ldGhvZDI0OTUgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjQ5NiAoKSB7IH0KKyAgdm9pZCBtZXRob2QyNDk3ICgpIHsgfQorICB2b2lkIG1ldGhvZDI0OTggKCkgeyB9CisgIHZvaWQgbWV0aG9kMjQ5OSAoKSB7IH0KKyAgdm9pZCBtZXRob2QyNTAwICgpIHsgfQorICB2b2lkIG1ldGhvZDI1MDEgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjUwMiAoKSB7IH0KKyAgdm9pZCBtZXRob2QyNTAzICgpIHsgfQorICB2b2lkIG1ldGhvZDI1MDQgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjUwNSAoKSB7IH0KKyAgdm9pZCBtZXRob2QyNTA2ICgpIHsgfQorICB2b2lkIG1ldGhvZDI1MDcgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjUwOCAoKSB7IH0KKyAgdm9pZCBtZXRob2QyNTA5ICgpIHsgfQorICB2b2lkIG1ldGhvZDI1MTAgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjUxMSAoKSB7IH0KKyAgdm9pZCBtZXRob2QyNTEyICgpIHsgfQorICB2b2lkIG1ldGhvZDI1MTMgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjUxNCAoKSB7IH0KKyAgdm9pZCBtZXRob2QyNTE1ICgpIHsgfQorICB2b2lkIG1ldGhvZDI1MTYgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjUxNyAoKSB7IH0KKyAgdm9pZCBtZXRob2QyNTE4ICgpIHsgfQorICB2b2lkIG1ldGhvZDI1MTkgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjUyMCAoKSB7IH0KKyAgdm9pZCBtZXRob2QyNTIxICgpIHsgfQorICB2b2lkIG1ldGhvZDI1MjIgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjUyMyAoKSB7IH0KKyAgdm9pZCBtZXRob2QyNTI0ICgpIHsgfQorICB2b2lkIG1ldGhvZDI1MjUgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjUyNiAoKSB7IH0KKyAgdm9pZCBtZXRob2QyNTI3ICgpIHsgfQorICB2b2lkIG1ldGhvZDI1MjggKCkgeyB9CisgIHZvaWQgbWV0aG9kMjUyOSAoKSB7IH0KKyAgdm9pZCBtZXRob2QyNTMwICgpIHsgfQorICB2b2lkIG1ldGhvZDI1MzEgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjUzMiAoKSB7IH0KKyAgdm9pZCBtZXRob2QyNTMzICgpIHsgfQorICB2b2lkIG1ldGhvZDI1MzQgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjUzNSAoKSB7IH0KKyAgdm9pZCBtZXRob2QyNTM2ICgpIHsgfQorICB2b2lkIG1ldGhvZDI1MzcgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjUzOCAoKSB7IH0KKyAgdm9pZCBtZXRob2QyNTM5ICgpIHsgfQorICB2b2lkIG1ldGhvZDI1NDAgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjU0MSAoKSB7IH0KKyAgdm9pZCBtZXRob2QyNTQyICgpIHsgfQorICB2b2lkIG1ldGhvZDI1NDMgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjU0NCAoKSB7IH0KKyAgdm9pZCBtZXRob2QyNTQ1ICgpIHsgfQorICB2b2lkIG1ldGhvZDI1NDYgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjU0NyAoKSB7IH0KKyAgdm9pZCBtZXRob2QyNTQ4ICgpIHsgfQorICB2b2lkIG1ldGhvZDI1NDkgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjU1MCAoKSB7IH0KKyAgdm9pZCBtZXRob2QyNTUxICgpIHsgfQorICB2b2lkIG1ldGhvZDI1NTIgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjU1MyAoKSB7IH0KKyAgdm9pZCBtZXRob2QyNTU0ICgpIHsgfQorICB2b2lkIG1ldGhvZDI1NTUgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjU1NiAoKSB7IH0KKyAgdm9pZCBtZXRob2QyNTU3ICgpIHsgfQorICB2b2lkIG1ldGhvZDI1NTggKCkgeyB9CisgIHZvaWQgbWV0aG9kMjU1OSAoKSB7IH0KKyAgdm9pZCBtZXRob2QyNTYwICgpIHsgfQorICB2b2lkIG1ldGhvZDI1NjEgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjU2MiAoKSB7IH0KKyAgdm9pZCBtZXRob2QyNTYzICgpIHsgfQorICB2b2lkIG1ldGhvZDI1NjQgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjU2NSAoKSB7IH0KKyAgdm9pZCBtZXRob2QyNTY2ICgpIHsgfQorICB2b2lkIG1ldGhvZDI1NjcgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjU2OCAoKSB7IH0KKyAgdm9pZCBtZXRob2QyNTY5ICgpIHsgfQorICB2b2lkIG1ldGhvZDI1NzAgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjU3MSAoKSB7IH0KKyAgdm9pZCBtZXRob2QyNTcyICgpIHsgfQorICB2b2lkIG1ldGhvZDI1NzMgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjU3NCAoKSB7IH0KKyAgdm9pZCBtZXRob2QyNTc1ICgpIHsgfQorICB2b2lkIG1ldGhvZDI1NzYgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjU3NyAoKSB7IH0KKyAgdm9pZCBtZXRob2QyNTc4ICgpIHsgfQorICB2b2lkIG1ldGhvZDI1NzkgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjU4MCAoKSB7IH0KKyAgdm9pZCBtZXRob2QyNTgxICgpIHsgfQorICB2b2lkIG1ldGhvZDI1ODIgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjU4MyAoKSB7IH0KKyAgdm9pZCBtZXRob2QyNTg0ICgpIHsgfQorICB2b2lkIG1ldGhvZDI1ODUgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjU4NiAoKSB7IH0KKyAgdm9pZCBtZXRob2QyNTg3ICgpIHsgfQorICB2b2lkIG1ldGhvZDI1ODggKCkgeyB9CisgIHZvaWQgbWV0aG9kMjU4OSAoKSB7IH0KKyAgdm9pZCBtZXRob2QyNTkwICgpIHsgfQorICB2b2lkIG1ldGhvZDI1OTEgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjU5MiAoKSB7IH0KKyAgdm9pZCBtZXRob2QyNTkzICgpIHsgfQorICB2b2lkIG1ldGhvZDI1OTQgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjU5NSAoKSB7IH0KKyAgdm9pZCBtZXRob2QyNTk2ICgpIHsgfQorICB2b2lkIG1ldGhvZDI1OTcgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjU5OCAoKSB7IH0KKyAgdm9pZCBtZXRob2QyNTk5ICgpIHsgfQorICB2b2lkIG1ldGhvZDI2MDAgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjYwMSAoKSB7IH0KKyAgdm9pZCBtZXRob2QyNjAyICgpIHsgfQorICB2b2lkIG1ldGhvZDI2MDMgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjYwNCAoKSB7IH0KKyAgdm9pZCBtZXRob2QyNjA1ICgpIHsgfQorICB2b2lkIG1ldGhvZDI2MDYgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjYwNyAoKSB7IH0KKyAgdm9pZCBtZXRob2QyNjA4ICgpIHsgfQorICB2b2lkIG1ldGhvZDI2MDkgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjYxMCAoKSB7IH0KKyAgdm9pZCBtZXRob2QyNjExICgpIHsgfQorICB2b2lkIG1ldGhvZDI2MTIgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjYxMyAoKSB7IH0KKyAgdm9pZCBtZXRob2QyNjE0ICgpIHsgfQorICB2b2lkIG1ldGhvZDI2MTUgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjYxNiAoKSB7IH0KKyAgdm9pZCBtZXRob2QyNjE3ICgpIHsgfQorICB2b2lkIG1ldGhvZDI2MTggKCkgeyB9CisgIHZvaWQgbWV0aG9kMjYxOSAoKSB7IH0KKyAgdm9pZCBtZXRob2QyNjIwICgpIHsgfQorICB2b2lkIG1ldGhvZDI2MjEgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjYyMiAoKSB7IH0KKyAgdm9pZCBtZXRob2QyNjIzICgpIHsgfQorICB2b2lkIG1ldGhvZDI2MjQgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjYyNSAoKSB7IH0KKyAgdm9pZCBtZXRob2QyNjI2ICgpIHsgfQorICB2b2lkIG1ldGhvZDI2MjcgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjYyOCAoKSB7IH0KKyAgdm9pZCBtZXRob2QyNjI5ICgpIHsgfQorICB2b2lkIG1ldGhvZDI2MzAgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjYzMSAoKSB7IH0KKyAgdm9pZCBtZXRob2QyNjMyICgpIHsgfQorICB2b2lkIG1ldGhvZDI2MzMgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjYzNCAoKSB7IH0KKyAgdm9pZCBtZXRob2QyNjM1ICgpIHsgfQorICB2b2lkIG1ldGhvZDI2MzYgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjYzNyAoKSB7IH0KKyAgdm9pZCBtZXRob2QyNjM4ICgpIHsgfQorICB2b2lkIG1ldGhvZDI2MzkgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjY0MCAoKSB7IH0KKyAgdm9pZCBtZXRob2QyNjQxICgpIHsgfQorICB2b2lkIG1ldGhvZDI2NDIgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjY0MyAoKSB7IH0KKyAgdm9pZCBtZXRob2QyNjQ0ICgpIHsgfQorICB2b2lkIG1ldGhvZDI2NDUgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjY0NiAoKSB7IH0KKyAgdm9pZCBtZXRob2QyNjQ3ICgpIHsgfQorICB2b2lkIG1ldGhvZDI2NDggKCkgeyB9CisgIHZvaWQgbWV0aG9kMjY0OSAoKSB7IH0KKyAgdm9pZCBtZXRob2QyNjUwICgpIHsgfQorICB2b2lkIG1ldGhvZDI2NTEgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjY1MiAoKSB7IH0KKyAgdm9pZCBtZXRob2QyNjUzICgpIHsgfQorICB2b2lkIG1ldGhvZDI2NTQgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjY1NSAoKSB7IH0KKyAgdm9pZCBtZXRob2QyNjU2ICgpIHsgfQorICB2b2lkIG1ldGhvZDI2NTcgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjY1OCAoKSB7IH0KKyAgdm9pZCBtZXRob2QyNjU5ICgpIHsgfQorICB2b2lkIG1ldGhvZDI2NjAgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjY2MSAoKSB7IH0KKyAgdm9pZCBtZXRob2QyNjYyICgpIHsgfQorICB2b2lkIG1ldGhvZDI2NjMgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjY2NCAoKSB7IH0KKyAgdm9pZCBtZXRob2QyNjY1ICgpIHsgfQorICB2b2lkIG1ldGhvZDI2NjYgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjY2NyAoKSB7IH0KKyAgdm9pZCBtZXRob2QyNjY4ICgpIHsgfQorICB2b2lkIG1ldGhvZDI2NjkgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjY3MCAoKSB7IH0KKyAgdm9pZCBtZXRob2QyNjcxICgpIHsgfQorICB2b2lkIG1ldGhvZDI2NzIgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjY3MyAoKSB7IH0KKyAgdm9pZCBtZXRob2QyNjc0ICgpIHsgfQorICB2b2lkIG1ldGhvZDI2NzUgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjY3NiAoKSB7IH0KKyAgdm9pZCBtZXRob2QyNjc3ICgpIHsgfQorICB2b2lkIG1ldGhvZDI2NzggKCkgeyB9CisgIHZvaWQgbWV0aG9kMjY3OSAoKSB7IH0KKyAgdm9pZCBtZXRob2QyNjgwICgpIHsgfQorICB2b2lkIG1ldGhvZDI2ODEgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjY4MiAoKSB7IH0KKyAgdm9pZCBtZXRob2QyNjgzICgpIHsgfQorICB2b2lkIG1ldGhvZDI2ODQgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjY4NSAoKSB7IH0KKyAgdm9pZCBtZXRob2QyNjg2ICgpIHsgfQorICB2b2lkIG1ldGhvZDI2ODcgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjY4OCAoKSB7IH0KKyAgdm9pZCBtZXRob2QyNjg5ICgpIHsgfQorICB2b2lkIG1ldGhvZDI2OTAgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjY5MSAoKSB7IH0KKyAgdm9pZCBtZXRob2QyNjkyICgpIHsgfQorICB2b2lkIG1ldGhvZDI2OTMgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjY5NCAoKSB7IH0KKyAgdm9pZCBtZXRob2QyNjk1ICgpIHsgfQorICB2b2lkIG1ldGhvZDI2OTYgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjY5NyAoKSB7IH0KKyAgdm9pZCBtZXRob2QyNjk4ICgpIHsgfQorICB2b2lkIG1ldGhvZDI2OTkgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjcwMCAoKSB7IH0KKyAgdm9pZCBtZXRob2QyNzAxICgpIHsgfQorICB2b2lkIG1ldGhvZDI3MDIgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjcwMyAoKSB7IH0KKyAgdm9pZCBtZXRob2QyNzA0ICgpIHsgfQorICB2b2lkIG1ldGhvZDI3MDUgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjcwNiAoKSB7IH0KKyAgdm9pZCBtZXRob2QyNzA3ICgpIHsgfQorICB2b2lkIG1ldGhvZDI3MDggKCkgeyB9CisgIHZvaWQgbWV0aG9kMjcwOSAoKSB7IH0KKyAgdm9pZCBtZXRob2QyNzEwICgpIHsgfQorICB2b2lkIG1ldGhvZDI3MTEgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjcxMiAoKSB7IH0KKyAgdm9pZCBtZXRob2QyNzEzICgpIHsgfQorICB2b2lkIG1ldGhvZDI3MTQgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjcxNSAoKSB7IH0KKyAgdm9pZCBtZXRob2QyNzE2ICgpIHsgfQorICB2b2lkIG1ldGhvZDI3MTcgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjcxOCAoKSB7IH0KKyAgdm9pZCBtZXRob2QyNzE5ICgpIHsgfQorICB2b2lkIG1ldGhvZDI3MjAgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjcyMSAoKSB7IH0KKyAgdm9pZCBtZXRob2QyNzIyICgpIHsgfQorICB2b2lkIG1ldGhvZDI3MjMgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjcyNCAoKSB7IH0KKyAgdm9pZCBtZXRob2QyNzI1ICgpIHsgfQorICB2b2lkIG1ldGhvZDI3MjYgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjcyNyAoKSB7IH0KKyAgdm9pZCBtZXRob2QyNzI4ICgpIHsgfQorICB2b2lkIG1ldGhvZDI3MjkgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjczMCAoKSB7IH0KKyAgdm9pZCBtZXRob2QyNzMxICgpIHsgfQorICB2b2lkIG1ldGhvZDI3MzIgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjczMyAoKSB7IH0KKyAgdm9pZCBtZXRob2QyNzM0ICgpIHsgfQorICB2b2lkIG1ldGhvZDI3MzUgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjczNiAoKSB7IH0KKyAgdm9pZCBtZXRob2QyNzM3ICgpIHsgfQorICB2b2lkIG1ldGhvZDI3MzggKCkgeyB9CisgIHZvaWQgbWV0aG9kMjczOSAoKSB7IH0KKyAgdm9pZCBtZXRob2QyNzQwICgpIHsgfQorICB2b2lkIG1ldGhvZDI3NDEgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjc0MiAoKSB7IH0KKyAgdm9pZCBtZXRob2QyNzQzICgpIHsgfQorICB2b2lkIG1ldGhvZDI3NDQgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjc0NSAoKSB7IH0KKyAgdm9pZCBtZXRob2QyNzQ2ICgpIHsgfQorICB2b2lkIG1ldGhvZDI3NDcgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjc0OCAoKSB7IH0KKyAgdm9pZCBtZXRob2QyNzQ5ICgpIHsgfQorICB2b2lkIG1ldGhvZDI3NTAgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjc1MSAoKSB7IH0KKyAgdm9pZCBtZXRob2QyNzUyICgpIHsgfQorICB2b2lkIG1ldGhvZDI3NTMgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjc1NCAoKSB7IH0KKyAgdm9pZCBtZXRob2QyNzU1ICgpIHsgfQorICB2b2lkIG1ldGhvZDI3NTYgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjc1NyAoKSB7IH0KKyAgdm9pZCBtZXRob2QyNzU4ICgpIHsgfQorICB2b2lkIG1ldGhvZDI3NTkgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjc2MCAoKSB7IH0KKyAgdm9pZCBtZXRob2QyNzYxICgpIHsgfQorICB2b2lkIG1ldGhvZDI3NjIgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjc2MyAoKSB7IH0KKyAgdm9pZCBtZXRob2QyNzY0ICgpIHsgfQorICB2b2lkIG1ldGhvZDI3NjUgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjc2NiAoKSB7IH0KKyAgdm9pZCBtZXRob2QyNzY3ICgpIHsgfQorICB2b2lkIG1ldGhvZDI3NjggKCkgeyB9CisgIHZvaWQgbWV0aG9kMjc2OSAoKSB7IH0KKyAgdm9pZCBtZXRob2QyNzcwICgpIHsgfQorICB2b2lkIG1ldGhvZDI3NzEgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjc3MiAoKSB7IH0KKyAgdm9pZCBtZXRob2QyNzczICgpIHsgfQorICB2b2lkIG1ldGhvZDI3NzQgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjc3NSAoKSB7IH0KKyAgdm9pZCBtZXRob2QyNzc2ICgpIHsgfQorICB2b2lkIG1ldGhvZDI3NzcgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjc3OCAoKSB7IH0KKyAgdm9pZCBtZXRob2QyNzc5ICgpIHsgfQorICB2b2lkIG1ldGhvZDI3ODAgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjc4MSAoKSB7IH0KKyAgdm9pZCBtZXRob2QyNzgyICgpIHsgfQorICB2b2lkIG1ldGhvZDI3ODMgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjc4NCAoKSB7IH0KKyAgdm9pZCBtZXRob2QyNzg1ICgpIHsgfQorICB2b2lkIG1ldGhvZDI3ODYgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjc4NyAoKSB7IH0KKyAgdm9pZCBtZXRob2QyNzg4ICgpIHsgfQorICB2b2lkIG1ldGhvZDI3ODkgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjc5MCAoKSB7IH0KKyAgdm9pZCBtZXRob2QyNzkxICgpIHsgfQorICB2b2lkIG1ldGhvZDI3OTIgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjc5MyAoKSB7IH0KKyAgdm9pZCBtZXRob2QyNzk0ICgpIHsgfQorICB2b2lkIG1ldGhvZDI3OTUgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjc5NiAoKSB7IH0KKyAgdm9pZCBtZXRob2QyNzk3ICgpIHsgfQorICB2b2lkIG1ldGhvZDI3OTggKCkgeyB9CisgIHZvaWQgbWV0aG9kMjc5OSAoKSB7IH0KKyAgdm9pZCBtZXRob2QyODAwICgpIHsgfQorICB2b2lkIG1ldGhvZDI4MDEgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjgwMiAoKSB7IH0KKyAgdm9pZCBtZXRob2QyODAzICgpIHsgfQorICB2b2lkIG1ldGhvZDI4MDQgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjgwNSAoKSB7IH0KKyAgdm9pZCBtZXRob2QyODA2ICgpIHsgfQorICB2b2lkIG1ldGhvZDI4MDcgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjgwOCAoKSB7IH0KKyAgdm9pZCBtZXRob2QyODA5ICgpIHsgfQorICB2b2lkIG1ldGhvZDI4MTAgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjgxMSAoKSB7IH0KKyAgdm9pZCBtZXRob2QyODEyICgpIHsgfQorICB2b2lkIG1ldGhvZDI4MTMgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjgxNCAoKSB7IH0KKyAgdm9pZCBtZXRob2QyODE1ICgpIHsgfQorICB2b2lkIG1ldGhvZDI4MTYgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjgxNyAoKSB7IH0KKyAgdm9pZCBtZXRob2QyODE4ICgpIHsgfQorICB2b2lkIG1ldGhvZDI4MTkgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjgyMCAoKSB7IH0KKyAgdm9pZCBtZXRob2QyODIxICgpIHsgfQorICB2b2lkIG1ldGhvZDI4MjIgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjgyMyAoKSB7IH0KKyAgdm9pZCBtZXRob2QyODI0ICgpIHsgfQorICB2b2lkIG1ldGhvZDI4MjUgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjgyNiAoKSB7IH0KKyAgdm9pZCBtZXRob2QyODI3ICgpIHsgfQorICB2b2lkIG1ldGhvZDI4MjggKCkgeyB9CisgIHZvaWQgbWV0aG9kMjgyOSAoKSB7IH0KKyAgdm9pZCBtZXRob2QyODMwICgpIHsgfQorICB2b2lkIG1ldGhvZDI4MzEgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjgzMiAoKSB7IH0KKyAgdm9pZCBtZXRob2QyODMzICgpIHsgfQorICB2b2lkIG1ldGhvZDI4MzQgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjgzNSAoKSB7IH0KKyAgdm9pZCBtZXRob2QyODM2ICgpIHsgfQorICB2b2lkIG1ldGhvZDI4MzcgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjgzOCAoKSB7IH0KKyAgdm9pZCBtZXRob2QyODM5ICgpIHsgfQorICB2b2lkIG1ldGhvZDI4NDAgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjg0MSAoKSB7IH0KKyAgdm9pZCBtZXRob2QyODQyICgpIHsgfQorICB2b2lkIG1ldGhvZDI4NDMgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjg0NCAoKSB7IH0KKyAgdm9pZCBtZXRob2QyODQ1ICgpIHsgfQorICB2b2lkIG1ldGhvZDI4NDYgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjg0NyAoKSB7IH0KKyAgdm9pZCBtZXRob2QyODQ4ICgpIHsgfQorICB2b2lkIG1ldGhvZDI4NDkgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjg1MCAoKSB7IH0KKyAgdm9pZCBtZXRob2QyODUxICgpIHsgfQorICB2b2lkIG1ldGhvZDI4NTIgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjg1MyAoKSB7IH0KKyAgdm9pZCBtZXRob2QyODU0ICgpIHsgfQorICB2b2lkIG1ldGhvZDI4NTUgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjg1NiAoKSB7IH0KKyAgdm9pZCBtZXRob2QyODU3ICgpIHsgfQorICB2b2lkIG1ldGhvZDI4NTggKCkgeyB9CisgIHZvaWQgbWV0aG9kMjg1OSAoKSB7IH0KKyAgdm9pZCBtZXRob2QyODYwICgpIHsgfQorICB2b2lkIG1ldGhvZDI4NjEgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjg2MiAoKSB7IH0KKyAgdm9pZCBtZXRob2QyODYzICgpIHsgfQorICB2b2lkIG1ldGhvZDI4NjQgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjg2NSAoKSB7IH0KKyAgdm9pZCBtZXRob2QyODY2ICgpIHsgfQorICB2b2lkIG1ldGhvZDI4NjcgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjg2OCAoKSB7IH0KKyAgdm9pZCBtZXRob2QyODY5ICgpIHsgfQorICB2b2lkIG1ldGhvZDI4NzAgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjg3MSAoKSB7IH0KKyAgdm9pZCBtZXRob2QyODcyICgpIHsgfQorICB2b2lkIG1ldGhvZDI4NzMgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjg3NCAoKSB7IH0KKyAgdm9pZCBtZXRob2QyODc1ICgpIHsgfQorICB2b2lkIG1ldGhvZDI4NzYgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjg3NyAoKSB7IH0KKyAgdm9pZCBtZXRob2QyODc4ICgpIHsgfQorICB2b2lkIG1ldGhvZDI4NzkgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjg4MCAoKSB7IH0KKyAgdm9pZCBtZXRob2QyODgxICgpIHsgfQorICB2b2lkIG1ldGhvZDI4ODIgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjg4MyAoKSB7IH0KKyAgdm9pZCBtZXRob2QyODg0ICgpIHsgfQorICB2b2lkIG1ldGhvZDI4ODUgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjg4NiAoKSB7IH0KKyAgdm9pZCBtZXRob2QyODg3ICgpIHsgfQorICB2b2lkIG1ldGhvZDI4ODggKCkgeyB9CisgIHZvaWQgbWV0aG9kMjg4OSAoKSB7IH0KKyAgdm9pZCBtZXRob2QyODkwICgpIHsgfQorICB2b2lkIG1ldGhvZDI4OTEgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjg5MiAoKSB7IH0KKyAgdm9pZCBtZXRob2QyODkzICgpIHsgfQorICB2b2lkIG1ldGhvZDI4OTQgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjg5NSAoKSB7IH0KKyAgdm9pZCBtZXRob2QyODk2ICgpIHsgfQorICB2b2lkIG1ldGhvZDI4OTcgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjg5OCAoKSB7IH0KKyAgdm9pZCBtZXRob2QyODk5ICgpIHsgfQorICB2b2lkIG1ldGhvZDI5MDAgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjkwMSAoKSB7IH0KKyAgdm9pZCBtZXRob2QyOTAyICgpIHsgfQorICB2b2lkIG1ldGhvZDI5MDMgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjkwNCAoKSB7IH0KKyAgdm9pZCBtZXRob2QyOTA1ICgpIHsgfQorICB2b2lkIG1ldGhvZDI5MDYgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjkwNyAoKSB7IH0KKyAgdm9pZCBtZXRob2QyOTA4ICgpIHsgfQorICB2b2lkIG1ldGhvZDI5MDkgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjkxMCAoKSB7IH0KKyAgdm9pZCBtZXRob2QyOTExICgpIHsgfQorICB2b2lkIG1ldGhvZDI5MTIgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjkxMyAoKSB7IH0KKyAgdm9pZCBtZXRob2QyOTE0ICgpIHsgfQorICB2b2lkIG1ldGhvZDI5MTUgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjkxNiAoKSB7IH0KKyAgdm9pZCBtZXRob2QyOTE3ICgpIHsgfQorICB2b2lkIG1ldGhvZDI5MTggKCkgeyB9CisgIHZvaWQgbWV0aG9kMjkxOSAoKSB7IH0KKyAgdm9pZCBtZXRob2QyOTIwICgpIHsgfQorICB2b2lkIG1ldGhvZDI5MjEgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjkyMiAoKSB7IH0KKyAgdm9pZCBtZXRob2QyOTIzICgpIHsgfQorICB2b2lkIG1ldGhvZDI5MjQgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjkyNSAoKSB7IH0KKyAgdm9pZCBtZXRob2QyOTI2ICgpIHsgfQorICB2b2lkIG1ldGhvZDI5MjcgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjkyOCAoKSB7IH0KKyAgdm9pZCBtZXRob2QyOTI5ICgpIHsgfQorICB2b2lkIG1ldGhvZDI5MzAgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjkzMSAoKSB7IH0KKyAgdm9pZCBtZXRob2QyOTMyICgpIHsgfQorICB2b2lkIG1ldGhvZDI5MzMgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjkzNCAoKSB7IH0KKyAgdm9pZCBtZXRob2QyOTM1ICgpIHsgfQorICB2b2lkIG1ldGhvZDI5MzYgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjkzNyAoKSB7IH0KKyAgdm9pZCBtZXRob2QyOTM4ICgpIHsgfQorICB2b2lkIG1ldGhvZDI5MzkgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjk0MCAoKSB7IH0KKyAgdm9pZCBtZXRob2QyOTQxICgpIHsgfQorICB2b2lkIG1ldGhvZDI5NDIgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjk0MyAoKSB7IH0KKyAgdm9pZCBtZXRob2QyOTQ0ICgpIHsgfQorICB2b2lkIG1ldGhvZDI5NDUgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjk0NiAoKSB7IH0KKyAgdm9pZCBtZXRob2QyOTQ3ICgpIHsgfQorICB2b2lkIG1ldGhvZDI5NDggKCkgeyB9CisgIHZvaWQgbWV0aG9kMjk0OSAoKSB7IH0KKyAgdm9pZCBtZXRob2QyOTUwICgpIHsgfQorICB2b2lkIG1ldGhvZDI5NTEgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjk1MiAoKSB7IH0KKyAgdm9pZCBtZXRob2QyOTUzICgpIHsgfQorICB2b2lkIG1ldGhvZDI5NTQgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjk1NSAoKSB7IH0KKyAgdm9pZCBtZXRob2QyOTU2ICgpIHsgfQorICB2b2lkIG1ldGhvZDI5NTcgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjk1OCAoKSB7IH0KKyAgdm9pZCBtZXRob2QyOTU5ICgpIHsgfQorICB2b2lkIG1ldGhvZDI5NjAgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjk2MSAoKSB7IH0KKyAgdm9pZCBtZXRob2QyOTYyICgpIHsgfQorICB2b2lkIG1ldGhvZDI5NjMgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjk2NCAoKSB7IH0KKyAgdm9pZCBtZXRob2QyOTY1ICgpIHsgfQorICB2b2lkIG1ldGhvZDI5NjYgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjk2NyAoKSB7IH0KKyAgdm9pZCBtZXRob2QyOTY4ICgpIHsgfQorICB2b2lkIG1ldGhvZDI5NjkgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjk3MCAoKSB7IH0KKyAgdm9pZCBtZXRob2QyOTcxICgpIHsgfQorICB2b2lkIG1ldGhvZDI5NzIgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjk3MyAoKSB7IH0KKyAgdm9pZCBtZXRob2QyOTc0ICgpIHsgfQorICB2b2lkIG1ldGhvZDI5NzUgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjk3NiAoKSB7IH0KKyAgdm9pZCBtZXRob2QyOTc3ICgpIHsgfQorICB2b2lkIG1ldGhvZDI5NzggKCkgeyB9CisgIHZvaWQgbWV0aG9kMjk3OSAoKSB7IH0KKyAgdm9pZCBtZXRob2QyOTgwICgpIHsgfQorICB2b2lkIG1ldGhvZDI5ODEgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjk4MiAoKSB7IH0KKyAgdm9pZCBtZXRob2QyOTgzICgpIHsgfQorICB2b2lkIG1ldGhvZDI5ODQgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjk4NSAoKSB7IH0KKyAgdm9pZCBtZXRob2QyOTg2ICgpIHsgfQorICB2b2lkIG1ldGhvZDI5ODcgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjk4OCAoKSB7IH0KKyAgdm9pZCBtZXRob2QyOTg5ICgpIHsgfQorICB2b2lkIG1ldGhvZDI5OTAgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjk5MSAoKSB7IH0KKyAgdm9pZCBtZXRob2QyOTkyICgpIHsgfQorICB2b2lkIG1ldGhvZDI5OTMgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjk5NCAoKSB7IH0KKyAgdm9pZCBtZXRob2QyOTk1ICgpIHsgfQorICB2b2lkIG1ldGhvZDI5OTYgKCkgeyB9CisgIHZvaWQgbWV0aG9kMjk5NyAoKSB7IH0KKyAgdm9pZCBtZXRob2QyOTk4ICgpIHsgfQorICB2b2lkIG1ldGhvZDI5OTkgKCkgeyB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9hVGhpbmxldC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvYVRoaW5sZXQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYTBlNzczCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvYVRoaW5sZXQuamF2YQpAQCAtMCwwICsxLDUzOTMgQEAKKy8qCisJVGhpbmxldCBHVUkgdG9vbGtpdCAtIHd3dy50aGlubGV0LmNvbQorCUNvcHlyaWdodCAoQykgMjAwMiBSb2JlcnQgQmFqemF0IChyb2JlcnQuYmFqemF0QHRoaW5sZXQuY29tKQorCQorCVRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKwltb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisJTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisJdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisJCisJVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisJYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKwlNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorCUxlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisJCisJWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworCUxpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKwlGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBCisqLworCisvL3BhY2thZ2UgdGhpbmxldDsgLy9qYXZhCisvL21pZHAgcGFja2FnZSB0aGlubGV0Lm1pZHA7CisKK2ltcG9ydCBqYXZhLmFwcGxldC4qOyAvL2phdmEKK2ltcG9ydCBqYXZhLmF3dC4qOyAvL2phdmEKK2ltcG9ydCBqYXZhLmF3dC5kYXRhdHJhbnNmZXIuKjsgLy9qYXZhCitpbXBvcnQgamF2YS5hd3QuaW1hZ2UuKjsgLy9qYXZhCitpbXBvcnQgamF2YS5hd3QuZXZlbnQuKjsgLy9qYXZhCitpbXBvcnQgamF2YS5sYW5nLnJlZmxlY3QuKjsgLy9qYXZhCitpbXBvcnQgamF2YS5pby4qOworaW1wb3J0IGphdmEubmV0Lio7IC8vamF2YQoraW1wb3J0IGphdmEudXRpbC4qOworLy9taWRwIGltcG9ydCBqYXZheC5taWNyb2VkaXRpb24ubGNkdWkuKjsKKy8vbWlkcCBpbXBvcnQgamF2YXgubWljcm9lZGl0aW9uLm1pZGxldC4qOworCisvKioKKyAqCisgKi8KK3B1YmxpYyBjbGFzcyBUaGlubGV0IGV4dGVuZHMgQ29udGFpbmVyIC8vamF2YQorCWltcGxlbWVudHMgUnVubmFibGUsIFNlcmlhbGl6YWJsZSB7IC8vamF2YQorLy9taWRwIHB1YmxpYyBjbGFzcyBUaGlubGV0IGV4dGVuZHMgQ2FudmFzIGltcGxlbWVudHMgQ29tbWFuZExpc3RlbmVyIHsKKworCS8vbWlkcCBwcml2YXRlIHN0YXRpYyBmaW5hbCBCb29sZWFuIFRSVUUgPSBuZXcgQm9vbGVhbih0cnVlKTsKKwkvL21pZHAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgQm9vbGVhbiBGQUxTRSA9IG5ldyBCb29sZWFuKGZhbHNlKTsKKworCS8vbWlkcCBwcml2YXRlIHRyYW5zaWVudCBGb250IGZvbnQ7CisJcHJpdmF0ZSB0cmFuc2llbnQgQ29sb3IgY19iZzsKKwlwcml2YXRlIHRyYW5zaWVudCBDb2xvciBjX3RleHQ7CisJcHJpdmF0ZSB0cmFuc2llbnQgQ29sb3IgY190ZXh0Ymc7CisJcHJpdmF0ZSB0cmFuc2llbnQgQ29sb3IgY19ib3JkZXI7CisJcHJpdmF0ZSB0cmFuc2llbnQgQ29sb3IgY19kaXNhYmxlOworCXByaXZhdGUgdHJhbnNpZW50IENvbG9yIGNfaG92ZXI7CisJcHJpdmF0ZSB0cmFuc2llbnQgQ29sb3IgY19wcmVzczsKKwlwcml2YXRlIHRyYW5zaWVudCBDb2xvciBjX2ZvY3VzOworCXByaXZhdGUgdHJhbnNpZW50IENvbG9yIGNfc2VsZWN0OworCXByaXZhdGUgdHJhbnNpZW50IENvbG9yIGNfY3RybCA9IG51bGw7IC8vamF2YQorCS8vbWlkcCBwcml2YXRlIHRyYW5zaWVudCBDb2xvciBjX2N0cmw7CisJcHJpdmF0ZSB0cmFuc2llbnQgaW50IGJsb2NrOworCXByaXZhdGUgdHJhbnNpZW50IEltYWdlIGdyYWRpZW50OyAvL2phdmEKKwl7CisJCXNldEZvbnQobmV3IEZvbnQoIlNhbnNTZXJpZiIsIEZvbnQuUExBSU4sIDEyKSk7IC8vamF2YQorCQkvL21pZHAgc2V0Rm9udChGb250LmdldERlZmF1bHRGb250KCkpOworCQlzZXRDb2xvcnMoMHhlNmU2ZTYsIDB4MDAwMDAwLCAweGZmZmZmZiwKKwkJCTB4OTA5MDkwLCAweGIwYjBiMCwgMHhlZGVkZWQsIDB4YjliOWI5LCAweDg5ODk5YSwgMHhjNWM1ZGQpOyAvLyBmOTkyMzcgZWFjMTZhIC8vIGU2OGIyYyBmZmM3M2MKKwl9CisKKwlwcml2YXRlIHRyYW5zaWVudCBUaHJlYWQgdGltZXI7CisJcHJpdmF0ZSB0cmFuc2llbnQgbG9uZyB3YXRjaGRlbGF5OworCXByaXZhdGUgdHJhbnNpZW50IGxvbmcgd2F0Y2g7CisJcHJpdmF0ZSB0cmFuc2llbnQgU3RyaW5nIGNsaXBib2FyZDsKKworCXByaXZhdGUgT2JqZWN0IGNvbnRlbnQgPSBjcmVhdGVJbXBsKCJkZXNrdG9wIik7CisJcHJpdmF0ZSB0cmFuc2llbnQgT2JqZWN0IG1vdXNlaW5zaWRlOworCXByaXZhdGUgdHJhbnNpZW50IE9iamVjdCBpbnNpZGVwYXJ0OworCXByaXZhdGUgdHJhbnNpZW50IE9iamVjdCBtb3VzZXByZXNzZWQ7CisJcHJpdmF0ZSB0cmFuc2llbnQgT2JqZWN0IHByZXNzZWRwYXJ0OworCXByaXZhdGUgdHJhbnNpZW50IGludCByZWZlcmVuY2V4LCByZWZlcmVuY2V5OworCXByaXZhdGUgdHJhbnNpZW50IGludCBtb3VzZXgsIG1vdXNleTsKKwlwcml2YXRlIHRyYW5zaWVudCBPYmplY3QgZm9jdXNvd25lcjsKKwlwcml2YXRlIHRyYW5zaWVudCBib29sZWFuIGZvY3VzaW5zaWRlOyAvL21pZHAgeyBmb2N1c2luc2lkZSA9IHRydWU7IH0KKwlwcml2YXRlIHRyYW5zaWVudCBPYmplY3QgcG9wdXBvd25lcjsKKwlwcml2YXRlIHRyYW5zaWVudCBPYmplY3QgdG9vbHRpcG93bmVyOworCS8vcHJpdmF0ZSB0cmFuc2llbnQgaW50IHByZXNzZWRrZXk7CisKKwkvL2phdmE+CQorCXByaXZhdGUgc3RhdGljIGZpbmFsIGludCBEUkFHX0VOVEVSRUQgPSBBV1RFdmVudC5SRVNFUlZFRF9JRF9NQVggKyAxOworCXByaXZhdGUgc3RhdGljIGZpbmFsIGludCBEUkFHX0VYSVRFRCA9IEFXVEV2ZW50LlJFU0VSVkVEX0lEX01BWCArIDI7CisJCisJcHJpdmF0ZSBzdGF0aWMgbG9uZyBXSEVFTF9NQVNLID0gMDsKKwlwcml2YXRlIHN0YXRpYyBpbnQgTU9VU0VfV0hFRUwgPSAwOworCXByaXZhdGUgc3RhdGljIE1ldGhvZCB3aGVlbHJvdGF0aW9uID0gbnVsbDsKKwlzdGF0aWMgeworCQl0cnkgeworCQkJV0hFRUxfTUFTSyA9IEFXVEV2ZW50LmNsYXNzLmdldEZpZWxkKCJNT1VTRV9XSEVFTF9FVkVOVF9NQVNLIikuZ2V0TG9uZyhudWxsKTsKKwkJCU1PVVNFX1dIRUVMID0gTW91c2VFdmVudC5jbGFzcy5nZXRGaWVsZCgiTU9VU0VfV0hFRUwiKS5nZXRJbnQobnVsbCk7CisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBleGMpIHsgLyogbm90IDEuNCAqLyB9CisJfQorCXsKKwkJaWYgKE1PVVNFX1dIRUVMICE9IDApIHsgLy8gZGlzYWJsZSBnbG9iYWwgZm9jdXMtbWFuYWdlciBmb3IgdGhpcyBjb21wb25lbnQgaW4gMS40CisJCQl0cnkgeworCQkJCWdldENsYXNzKCkuZ2V0TWV0aG9kKCJzZXRGb2N1c1RyYXZlcnNhbEtleXNFbmFibGVkIiwgbmV3IENsYXNzW10geyBCb29sZWFuLlRZUEUgfSkuCisJCQkJCWludm9rZSh0aGlzLCBuZXcgT2JqZWN0W10geyBCb29sZWFuLkZBTFNFIH0pOworCQkJfSBjYXRjaCAoRXhjZXB0aW9uIGV4YykgeyAvKiBuZXZlciAqLyB9CisJCX0KKwkJZW5hYmxlRXZlbnRzKEFXVEV2ZW50LkNPTVBPTkVOVF9FVkVOVF9NQVNLIHwKKwkJCUFXVEV2ZW50LkZPQ1VTX0VWRU5UX01BU0sgfCBBV1RFdmVudC5LRVlfRVZFTlRfTUFTSyB8CisJCQlBV1RFdmVudC5NT1VTRV9FVkVOVF9NQVNLIHwgQVdURXZlbnQuTU9VU0VfTU9USU9OX0VWRU5UX01BU0sgfCBXSEVFTF9NQVNLKTsKKwl9CisJLy88amF2YQorCisJLyoqCisJICoKKwkgKi8KKwlwdWJsaWMgdm9pZCBzZXRDb2xvcnMoaW50IGJhY2tncm91bmQsIGludCB0ZXh0LCBpbnQgdGV4dGJhY2tncm91bmQsCisJCQlpbnQgYm9yZGVyLCBpbnQgZGlzYWJsZSwgaW50IGhvdmVyLCBpbnQgcHJlc3MsCisJCQlpbnQgZm9jdXMsIGludCBzZWxlY3QpIHsKKwkJY19iZyA9IG5ldyBDb2xvcihiYWNrZ3JvdW5kKTsgY190ZXh0ID0gbmV3IENvbG9yKHRleHQpOworCQljX3RleHRiZyA9IG5ldyBDb2xvcih0ZXh0YmFja2dyb3VuZCk7IGNfYm9yZGVyID0gbmV3IENvbG9yKGJvcmRlcik7CisJCWNfZGlzYWJsZSA9IG5ldyBDb2xvcihkaXNhYmxlKTsgY19ob3ZlciA9IG5ldyBDb2xvcihob3Zlcik7CisJCWNfcHJlc3MgPSBuZXcgQ29sb3IocHJlc3MpOyBjX2ZvY3VzID0gbmV3IENvbG9yKGZvY3VzKTsKKwkJY19zZWxlY3QgPSBuZXcgQ29sb3Ioc2VsZWN0KTsKKwkJLy9taWRwIGNfY3RybCA9IGNfaG92ZXI7CisJCS8vamF2YT4KKwkJaW50W10gcGl4ID0gbmV3IGludFtibG9jayAqIGJsb2NrXTsKKwkJaW50IHIxID0gY19iZy5nZXRSZWQoKTsgaW50IHIyID0gY19wcmVzcy5nZXRSZWQoKTsKKwkJaW50IGcxID0gY19iZy5nZXRHcmVlbigpOyBpbnQgZzIgPSBjX3ByZXNzLmdldEdyZWVuKCk7CisJCWludCBiMSA9IGNfYmcuZ2V0Qmx1ZSgpOyBpbnQgYjIgPSBjX3ByZXNzLmdldEJsdWUoKTsKKwkJZm9yIChpbnQgaSA9IDA7IGkgPCBibG9jazsgaSsrKSB7CisJCQlpbnQgciA9IHIxIC0gKHIxIC0gcjIpICogaSAvIGJsb2NrOworCQkJaW50IGcgPSBnMSAtIChnMSAtIGcyKSAqIGkgLyBibG9jazsKKwkJCWludCBiID0gYjEgLSAoYjEgLSBiMikgKiBpIC8gYmxvY2s7CisJCQlpbnQgY29sb3IgPSAoMjU1IDw8IDI0KSB8IChyIDw8IDE2KSB8IChnIDw8IDgpIHwgYjsKKwkJCWZvciAoaW50IGogPSAwOyBqIDwgYmxvY2s7IGorKykgeworCQkJCXBpeFtpICogYmxvY2sgKyBqXSA9IGNvbG9yOworCQkJCS8vcGl4W2ogKiBibG9jayArIGldID0gY29sb3I7CisJCQl9CisJCX0KKwkJZ3JhZGllbnQgPSBjcmVhdGVJbWFnZShuZXcgTWVtb3J5SW1hZ2VTb3VyY2UoYmxvY2ssIGJsb2NrLCBwaXgsIDAsIGJsb2NrKSk7CisJCS8vPGphdmEKKwl9CisKKwkvKioKKwkgKgorCSAqLworCXB1YmxpYyB2b2lkIHNldEZvbnQoRm9udCBmb250KSB7CisJCWJsb2NrID0gZ2V0Rm9udE1ldHJpY3MoZm9udCkuZ2V0SGVpZ2h0KCk7IC8vamF2YQorCQlzdXBlci5zZXRGb250KGZvbnQpOyAvL2phdmEKKwkJLy9taWRwIGJsb2NrID0gZm9udC5nZXRIZWlnaHQoKTsKKwkJLy9taWRwIHRoaXMuZm9udCA9IGZvbnQ7CisJfQorCisJLyoqCisJICoKKwkgKi8KKwlwcml2YXRlIHZvaWQgZG9MYXlvdXQoT2JqZWN0IGNvbXBvbmVudCkgeworCQlTdHJpbmcgY2xhc3NuYW1lID0gZ2V0Q2xhc3MoY29tcG9uZW50KTsKKwkJaWYgKCJjb21ib2JveCIgPT0gY2xhc3NuYW1lKSB7CisJCQlpZiAoZ2V0Qm9vbGVhbihjb21wb25lbnQsICJlZGl0YWJsZSIsIHRydWUpKSB7CisJCQkJSW1hZ2UgaWNvbiA9IGdldEljb24oY29tcG9uZW50LCAiaWNvbiIsIG51bGwpOworCQkJCWxheW91dEZpZWxkKGNvbXBvbmVudCwgYmxvY2ssIGZhbHNlLAorCQkJCQkoaWNvbiAhPSBudWxsKSA/IGljb24uZ2V0V2lkdGgodGhpcykgOiAwKTsKKwkJCX0gLy8gc2V0IGVkaXRhYmxlIC0+IHZhbGlkYXRlIChvdmVyd3JpdGUgdGV4dGZpZWxkIHJlcGFpbnQpCisJCQllbHNlIHsKKwkJCQlpbnQgc2VsZWN0ZWQgPSBnZXRJbnRlZ2VyKGNvbXBvbmVudCwgInNlbGVjdGVkIiwgLTEpOworCQkJCWlmIChzZWxlY3RlZCAhPSAtMSkgeworCQkJCQlPYmplY3QgY2hvaWNlID0gZ2V0SXRlbShjb21wb25lbnQsICJjaG9pY2UiLCBzZWxlY3RlZCk7CisJCQkJCXNldChjb21wb25lbnQsICJ0ZXh0IiwgZ2V0KGNob2ljZSwgInRleHQiKSk7CisJCQkJCXNldChjb21wb25lbnQsICJpY29uIiwgZ2V0KGNob2ljZSwgImljb24iKSk7CisJCQkJfQorCQkJfQorCQl9CisJCWVsc2UgaWYgKCgidGV4dGZpZWxkIiA9PSBjbGFzc25hbWUpIHx8ICgicGFzc3dvcmRmaWVsZCIgPT0gY2xhc3NuYW1lKSkgeworCQkJbGF5b3V0RmllbGQoY29tcG9uZW50LCAwLCAoInBhc3N3b3JkZmllbGQiID09IGNsYXNzbmFtZSksIDApOworCQl9CisJCWVsc2UgaWYgKCJ0ZXh0YXJlYSIgPT0gY2xhc3NuYW1lKSB7CisJCQlTdHJpbmcgdGV4dCA9IGdldFN0cmluZyhjb21wb25lbnQsICJ0ZXh0IiwgIiIpOworCQkJaW50IHN0YXJ0ID0gZ2V0SW50ZWdlcihjb21wb25lbnQsICJzdGFydCIsIDApOworCQkJaWYgKHN0YXJ0ID4gdGV4dC5sZW5ndGgoKSkgeyBzZXRJbnRlZ2VyKGNvbXBvbmVudCwgInN0YXJ0Iiwgc3RhcnQgPSB0ZXh0Lmxlbmd0aCgpLCAwKTsgfQorCQkJaW50IGVuZCA9IGdldEludGVnZXIoY29tcG9uZW50LCAiZW5kIiwgMCk7CisJCQlpZiAoZW5kID4gdGV4dC5sZW5ndGgoKSkgeyBzZXRJbnRlZ2VyKGNvbXBvbmVudCwgImVuZCIsIGVuZCA9IHRleHQubGVuZ3RoKCksIDApOyB9CisJCQlpbnQgY2FyZXR4ID0gMDsgaW50IGNhcmV0eSA9IDA7CisJCQlGb250TWV0cmljcyBmbSA9IGdldEZvbnRNZXRyaWNzKGdldEZvbnQoKSk7IC8vamF2YQorCQkJaW50IHdpZHRoID0gMCwgaGVpZ2h0ID0gMDsKKwkJCWZvciAoaW50IGkgPSAwLCBqID0gMDsgaiAhPSAtMTsgaSA9IGogKyAxKSB7CisJCQkJaiA9IHRleHQuaW5kZXhPZignXG4nLCBpKTsKKwkJCQlpZiAoaSAhPSBqKSB7IC8vICYmIGkgIT0gdGV4dC5sZW5ndGgoKQorCQkJCQlTdHJpbmcgbGluZSA9IChqICE9IC0xKSA/IHRleHQuc3Vic3RyaW5nKGksIGopIDogdGV4dC5zdWJzdHJpbmcoaSk7IC8vamF2YQorCQkJCQl3aWR0aCA9IE1hdGgubWF4KHdpZHRoLCBmbS5zdHJpbmdXaWR0aChsaW5lKSk7IC8vamF2YQorCQkJCQkvL21pZHAgd2lkdGggPSBmb250LnN1YnN0cmluZ1dpZHRoKHRleHQsIGksICgoaiAhPSAtMSkgPyBqIDogdGV4dC5sZW5ndGgoKSkgLSBpKTsKKwkJCQl9CisJCQkJaWYgKChlbmQgPj0gaSkgJiYgKChqID09IC0xKSB8fCAoZW5kIDw9IGopKSkgeworCQkJCQljYXJldHggPSBmbS5zdHJpbmdXaWR0aCh0ZXh0LnN1YnN0cmluZyhpLCBlbmQpKTsgLy9qYXZhCisJCQkJCS8vbWlkcCBjYXJldHggPSBmb250LnN1YnN0cmluZ1dpZHRoKHRleHQsIGksIGVuZCAtIGkpOworCQkJCQljYXJldHkgPSBoZWlnaHQ7CisJCQkJfQorCQkJCWhlaWdodCArPSBmbS5nZXRIZWlnaHQoKTsKKwkJCX0KKwkJCWxheW91dFNjcm9sbFBhbmUoY29tcG9uZW50LCB3aWR0aCArIDIsCisJCQkJaGVpZ2h0IC0gZm0uZ2V0TGVhZGluZygpICsgMiwgMCwgMCk7CisJCQlzY3JvbGxUb1Zpc2libGUoY29tcG9uZW50LCBjYXJldHgsIGNhcmV0eSwKKwkJCQkyLCBmbS5nZXRBc2NlbnQoKSArIGZtLmdldERlc2NlbnQoKSArIDIpOworCQl9IAorCQllbHNlIGlmICgidGFiYmVkcGFuZSIgPT0gY2xhc3NuYW1lKSB7CisJCQlSZWN0YW5nbGUgYm91bmRzID0gZ2V0UmVjdGFuZ2xlKGNvbXBvbmVudCwgImJvdW5kcyIpOworCQkJU3RyaW5nIHBsYWNlbWVudCA9IGdldFN0cmluZyhjb21wb25lbnQsICJwbGFjZW1lbnQiLCAidG9wIik7CisJCQlib29sZWFuIGhvcml6b250YWwgPSAoKHBsYWNlbWVudCA9PSAidG9wIikgfHwgKHBsYWNlbWVudCA9PSAiYm90dG9tIikpOworCQkJaW50IHRhYmQgPSAwOworCQkJaW50IHRhYnNpemUgPSAwOworCQkJZm9yIChPYmplY3QgY29tcCA9IGdldChjb21wb25lbnQsICJ0YWIiKTsKKwkJCQkJY29tcCAhPSBudWxsOyBjb21wID0gZ2V0KGNvbXAsICI6bmV4dCIpKSB7CisJCQkJRGltZW5zaW9uIGQgPSBnZXRTaXplKGNvbXAsIDgsIDQsICJsZWZ0Iik7CisJCQkJc2V0UmVjdGFuZ2xlKGNvbXAsICJib3VuZHMiLAorCQkJCQlob3Jpem9udGFsID8gdGFiZCA6IDAsIGhvcml6b250YWwgPyAwIDogdGFiZCwgZC53aWR0aCwgZC5oZWlnaHQpOworCQkJCXRhYmQgKz0gaG9yaXpvbnRhbCA/IGQud2lkdGggOiBkLmhlaWdodDsKKwkJCQl0YWJzaXplID0gTWF0aC5tYXgodGFic2l6ZSwgaG9yaXpvbnRhbCA/IGQuaGVpZ2h0IDogZC53aWR0aCk7CisJCQl9CisJCQlmb3IgKE9iamVjdCBjb21wID0gZ2V0KGNvbXBvbmVudCwgInRhYiIpOworCQkJCQljb21wICE9IG51bGw7IGNvbXAgPSBnZXQoY29tcCwgIjpuZXh0IikpIHsKKwkJCQlSZWN0YW5nbGUgciA9IGdldFJlY3RhbmdsZShjb21wLCAiYm91bmRzIik7CisJCQkJaWYgKGhvcml6b250YWwpIHsKKwkJCQkJaWYgKHBsYWNlbWVudCA9PSAiYm90dG9tIikgeyByLnkgPSBib3VuZHMuaGVpZ2h0IC0gdGFic2l6ZTsgfQorCQkJCQlyLmhlaWdodCA9IHRhYnNpemU7CisJCQkJfSBlbHNlIHsKKwkJCQkJaWYgKHBsYWNlbWVudCA9PSAicmlnaHQiKSB7IHIueCA9IGJvdW5kcy53aWR0aCAtIHRhYnNpemU7IH0KKwkJCQkJci53aWR0aCA9IHRhYnNpemU7CisJCQkJfQorCQkJfQorCQkJaW50IGN4ID0gKHBsYWNlbWVudCA9PSAibGVmdCIpID8gKHRhYnNpemUgKyAxKSA6IDI7CisJCQlpbnQgY3kgPSAocGxhY2VtZW50ID09ICJ0b3AiKSA/ICh0YWJzaXplICsgMSkgOiAyOworCQkJaW50IGN3aWR0aCA9IGJvdW5kcy53aWR0aCAtIChob3Jpem9udGFsID8gNCA6ICh0YWJzaXplICsgMykpOworCQkJaW50IGNoZWlnaHQgPSBib3VuZHMuaGVpZ2h0IC0gKGhvcml6b250YWwgPyAodGFic2l6ZSArIDMpIDogNCk7CisJCQlmb3IgKE9iamVjdCBjb21wID0gZ2V0KGNvbXBvbmVudCwgImNvbXBvbmVudCIpOworCQkJCQljb21wICE9IG51bGw7IGNvbXAgPSBnZXQoY29tcCwgIjpuZXh0IikpIHsKKwkJCQlpZiAoIWdldEJvb2xlYW4oY29tcCwgInZpc2libGUiLCB0cnVlKSkgeyBjb250aW51ZTsgfQorCQkJCXNldFJlY3RhbmdsZShjb21wLCAiYm91bmRzIiwgY3gsIGN5LCBjd2lkdGgsIGNoZWlnaHQpOworCQkJCWRvTGF5b3V0KGNvbXApOworCQkJfQorCQl9CisJCWVsc2UgaWYgKCgicGFuZWwiID09IGNsYXNzbmFtZSkgfHwgKGNsYXNzbmFtZSA9PSAiZGlhbG9nIikpIHsKKwkJCWludCBnYXAgPSBnZXRJbnRlZ2VyKGNvbXBvbmVudCwgImdhcCIsIDApOworCQkJaW50W11bXSBncmlkID0gZ2V0R3JpZChjb21wb25lbnQsIGdhcCk7CisJCQlpZiAoZ3JpZCAhPSBudWxsKSB7CisJCQkJaW50IHRvcCA9IGdldEludGVnZXIoY29tcG9uZW50LCAidG9wIiwgMCk7CisJCQkJaW50IGxlZnQgPSBnZXRJbnRlZ2VyKGNvbXBvbmVudCwgImxlZnQiLCAwKTsKKwkJCQlpbnQgYm90dG9tID0gZ2V0SW50ZWdlcihjb21wb25lbnQsICJib3R0b20iLCAwKTsKKwkJCQlpbnQgcmlnaHQgPSBnZXRJbnRlZ2VyKGNvbXBvbmVudCwgInJpZ2h0IiwgMCk7CisJCQkJaWYgKGNsYXNzbmFtZSA9PSAiZGlhbG9nIikgeworCQkJCQlpbnQgdGl0bGVoZWlnaHQgPSBnZXRJbnRlZ2VyKGNvbXBvbmVudCwgInRpdGxlaGVpZ2h0IiwgMCk7CisJCQkJCXRvcCArPSA0ICsgdGl0bGVoZWlnaHQ7IGxlZnQgKz0gNDsgYm90dG9tICs9IDQ7IHJpZ2h0ICs9IDQ7CisJCQkJfQorCisJCQkJUmVjdGFuZ2xlIGJvdW5kcyA9IGdldFJlY3RhbmdsZShjb21wb25lbnQsICJib3VuZHMiKTsKKwkJCQlmb3IgKGludCBpID0gMDsgaSA8IDI7IGkrKykgeworCQkJCQlpbnQgZCA9ICgoaSA9PSAwKSA/IChib3VuZHMud2lkdGggLSBsZWZ0IC0gcmlnaHQpIDoKKwkJCQkJCShib3VuZHMuaGVpZ2h0IC0gdG9wIC0gYm90dG9tKSkgLQorCQkJCQkJZ2V0U3VtKGdyaWRbaV0sIDAsIGdyaWRbaV0ubGVuZ3RoLCBnYXAsIGZhbHNlKTsKKwkJCQkJaWYgKGQgIT0gMCkgeworCQkJCQkJaW50IHcgPSBnZXRTdW0oZ3JpZFsyICsgaV0sIDAsIGdyaWRbMiArIGldLmxlbmd0aCwgMCwgZmFsc2UpOworCQkJCQkJaWYgKHcgPiAwKSB7CisJCQkJCQkJZm9yIChpbnQgaiA9IDA7IGogPCBncmlkW2ldLmxlbmd0aDsgaisrKSB7CisJCQkJCQkJCWlmIChncmlkWzIgKyBpXVtqXSAhPSAwKSB7CisJCQkJCQkJCQlncmlkW2ldW2pdICs9IGQgKiBncmlkWzIgKyBpXVtqXSAvIHc7CisJCQkJCQkJCX0KKwkJCQkJCQl9CisJCQkJCQl9CisJCQkJCX0KKwkJCQl9CisKKwkJCQlpbnQgaSA9IDA7CisJCQkJZm9yIChPYmplY3QgY29tcCA9IGdldChjb21wb25lbnQsICJjb21wb25lbnQiKTsKKwkJCQkJCWNvbXAgIT0gbnVsbDsgY29tcCA9IGdldChjb21wLCAiOm5leHQiKSkgeworCQkJCQlpZiAoIWdldEJvb2xlYW4oY29tcCwgInZpc2libGUiLCB0cnVlKSkgeyBjb250aW51ZTsgfQorCQkJCQlpbnQgaXggPSBsZWZ0ICsgZ2V0U3VtKGdyaWRbMF0sIDAsIGdyaWRbNF1baV0sIGdhcCwgdHJ1ZSk7CisJCQkJCWludCBpeSA9IHRvcCArIGdldFN1bShncmlkWzFdLCAwLCBncmlkWzVdW2ldLCBnYXAsIHRydWUpOworCQkJCQlpbnQgaXdpZHRoID0gZ2V0U3VtKGdyaWRbMF0sIGdyaWRbNF1baV0sIGdyaWRbNl1baV0sIGdhcCwgZmFsc2UpOworCQkJCQlpbnQgaWhlaWdodCA9IGdldFN1bShncmlkWzFdLCBncmlkWzVdW2ldLCBncmlkWzddW2ldLCBnYXAsIGZhbHNlKTsKKwkJCQkJU3RyaW5nIGhhbGlnbiA9IGdldFN0cmluZyhjb21wLCAiaGFsaWduIiwgImZpbGwiKTsKKwkJCQkJU3RyaW5nIHZhbGlnbiA9IGdldFN0cmluZyhjb21wLCAidmFsaWduIiwgImZpbGwiKTsKKwkJCQkJaWYgKChoYWxpZ24gIT0gImZpbGwiKSB8fCAodmFsaWduICE9ICJmaWxsIikpIHsKKwkJCQkJCURpbWVuc2lvbiBkID0gZ2V0UHJlZmVycmVkU2l6ZShjb21wKTsKKwkJCQkJCWlmIChoYWxpZ24gIT0gImZpbGwiKSB7CisJCQkJCQkJaW50IGR3ID0gTWF0aC5tYXgoMCwgaXdpZHRoIC0gZC53aWR0aCk7CisJCQkJCQkJaWYgKGhhbGlnbiA9PSAiY2VudGVyIikgeyBpeCArPSBkdyAvIDI7IH0KKwkJCQkJCQkJZWxzZSBpZiAoaGFsaWduID09ICJyaWdodCIpIHsgaXggKz0gZHc7IH0KKwkJCQkJCQlpd2lkdGggLT0gZHc7CisJCQkJCQl9CisJCQkJCQlpZiAodmFsaWduICE9ICJmaWxsIikgeworCQkJCQkJCWludCBkaCA9IE1hdGgubWF4KDAsIGloZWlnaHQgLSBkLmhlaWdodCk7CisJCQkJCQkJaWYgKHZhbGlnbiA9PSAiY2VudGVyIikgeyBpeSArPSBkaCAvIDI7IH0KKwkJCQkJCQkJZWxzZSBpZiAodmFsaWduID09ICJib3R0b20iKSB7IGl5ICs9IGRoOyB9CisJCQkJCQkJaWhlaWdodCAtPSBkaDsKKwkJCQkJCX0KKwkJCQkJfQorCQkJCQlzZXRSZWN0YW5nbGUoY29tcCwgImJvdW5kcyIsIGl4LCBpeSwgaXdpZHRoLCBpaGVpZ2h0KTsKKwkJCQkJZG9MYXlvdXQoY29tcCk7CisJCQkJCWkrKzsKKwkJCQl9CisJCQl9CisJCX0KKwkJZWxzZSBpZiAoImRlc2t0b3AiID09IGNsYXNzbmFtZSkgeworCQkJUmVjdGFuZ2xlIGJvdW5kcyA9IGdldFJlY3RhbmdsZShjb21wb25lbnQsICJib3VuZHMiKTsKKwkJCWZvciAoT2JqZWN0IGNvbXAgPSBnZXQoY29tcG9uZW50LCAiY29tcG9uZW50Iik7CisJCQkJCWNvbXAgIT0gbnVsbDsgY29tcCA9IGdldChjb21wLCAiOm5leHQiKSkgeworCQkJCVN0cmluZyBpY2xhc3MgPSBnZXRDbGFzcyhjb21wKTsKKwkJCQlpZiAoaWNsYXNzID09ICJkaWFsb2ciKSB7CisJCQkJCURpbWVuc2lvbiBkID0gZ2V0UHJlZmVycmVkU2l6ZShjb21wKTsKKwkJCQkJaWYgKGdldChjb21wLCAiYm91bmRzIikgPT0gbnVsbCkKKwkJCQkJc2V0UmVjdGFuZ2xlKGNvbXAsICJib3VuZHMiLAorCQkJCQkJTWF0aC5tYXgoMCwgKGJvdW5kcy53aWR0aCAtIGQud2lkdGgpIC8gMiksCisJCQkJCQlNYXRoLm1heCgwLCAoYm91bmRzLmhlaWdodCAtIGQuaGVpZ2h0KSAvIDIpLAorCQkJCQkJTWF0aC5taW4oZC53aWR0aCwgYm91bmRzLndpZHRoKSwgTWF0aC5taW4oZC5oZWlnaHQsIGJvdW5kcy5oZWlnaHQpKTsKKwkJCQl9IGVsc2UgaWYgKChpY2xhc3MgPT0gImNvbWJvbGlzdCIpIHx8IChpY2xhc3MgPT0gInBvcHVwbWVudSIpKSB7CisJCQkJCQlpY2xhc3MgPSBpY2xhc3M7IC8vY29tcGlsZXIgYnVnCisJCQkJfSBlbHNlIHsKKwkJCQkJc2V0UmVjdGFuZ2xlKGNvbXAsICJib3VuZHMiLCAwLCAwLCBib3VuZHMud2lkdGgsIGJvdW5kcy5oZWlnaHQpOworCQkJCX0KKwkJCQlkb0xheW91dChjb21wKTsKKwkJCX0KKwkJfQorCQllbHNlIGlmICgic3BpbmJveCIgPT0gY2xhc3NuYW1lKSB7CisJCQlsYXlvdXRGaWVsZChjb21wb25lbnQsIGJsb2NrLCBmYWxzZSwgMCk7CisJCX0KKwkJZWxzZSBpZiAoInNwbGl0cGFuZSIgPT0gY2xhc3NuYW1lKSB7CisJCQlSZWN0YW5nbGUgYm91bmRzID0gZ2V0UmVjdGFuZ2xlKGNvbXBvbmVudCwgImJvdW5kcyIpOworCQkJYm9vbGVhbiBob3Jpem9udGFsID0gKCJ2ZXJ0aWNhbCIgIT0gZ2V0KGNvbXBvbmVudCwgIm9yaWVudGF0aW9uIikpOworCQkJaW50IGRpdmlkZXIgPSBnZXRJbnRlZ2VyKGNvbXBvbmVudCwgImRpdmlkZXIiLCAtMSk7CisJCQlpbnQgbWF4ZGl2ID0gKGhvcml6b250YWwgPyBib3VuZHMud2lkdGggOiBib3VuZHMuaGVpZ2h0KSAtIDU7CisKKwkJCU9iamVjdCBjb21wMSA9IGdldChjb21wb25lbnQsICJjb21wb25lbnQiKTsKKwkJCWJvb2xlYW4gdmlzaWJsZTEgPSAoY29tcDEgIT0gbnVsbCkgJiYgZ2V0Qm9vbGVhbihjb21wMSwgInZpc2libGUiLCB0cnVlKTsKKwkJCWlmIChkaXZpZGVyID09IC0xKSB7CisJCQkJaW50IGQxID0gMDsKKwkJCQlpZiAodmlzaWJsZTEpIHsKKwkJCQkJRGltZW5zaW9uIGQgPSBnZXRQcmVmZXJyZWRTaXplKGNvbXAxKTsKKwkJCQkJZDEgPSBob3Jpem9udGFsID8gZC53aWR0aCA6IGQuaGVpZ2h0OworCQkJCX0KKwkJCQlkaXZpZGVyID0gTWF0aC5taW4oZDEsIG1heGRpdik7CisJCQkJc2V0SW50ZWdlcihjb21wb25lbnQsICJkaXZpZGVyIiwgZGl2aWRlciwgLTEpOworCQkJfQorCQkJZWxzZSBpZiAoZGl2aWRlciA+IG1heGRpdikgeworCQkJCXNldEludGVnZXIoY29tcG9uZW50LCAiZGl2aWRlciIsIGRpdmlkZXIgPSBtYXhkaXYsIC0xKTsKKwkJCX0KKworCQkJaWYgKHZpc2libGUxKSB7CisJCQkJc2V0UmVjdGFuZ2xlKGNvbXAxLCAiYm91bmRzIiwgMCwgMCwgaG9yaXpvbnRhbCA/IGRpdmlkZXIgOiBib3VuZHMud2lkdGgsCisJCQkJCWhvcml6b250YWwgPyBib3VuZHMuaGVpZ2h0IDogZGl2aWRlcik7CisJCQkJZG9MYXlvdXQoY29tcDEpOworCQkJfQorCQkJT2JqZWN0IGNvbXAyID0gKGNvbXAxICE9IG51bGwpID8gZ2V0KGNvbXAxLCAiOm5leHQiKSA6IG51bGw7CisJCQlpZiAoKGNvbXAyICE9IG51bGwpICYmIGdldEJvb2xlYW4oY29tcDIsICJ2aXNpYmxlIiwgdHJ1ZSkpIHsKKwkJCQlzZXRSZWN0YW5nbGUoY29tcDIsICJib3VuZHMiLCBob3Jpem9udGFsID8gKGRpdmlkZXIgKyA1KSA6IDAsCisJCQkJCWhvcml6b250YWwgPyAwIDogKGRpdmlkZXIgKyA1KSwKKwkJCQkJaG9yaXpvbnRhbCA/IChib3VuZHMud2lkdGggLSA1IC0gZGl2aWRlcikgOiBib3VuZHMud2lkdGgsCisJCQkJCWhvcml6b250YWwgPyBib3VuZHMuaGVpZ2h0IDogKGJvdW5kcy5oZWlnaHQgLSA1IC0gZGl2aWRlcikpOworCQkJCWRvTGF5b3V0KGNvbXAyKTsKKwkJCX0KKwkJfSAKKwkJZWxzZSBpZiAoKCJsaXN0IiA9PSBjbGFzc25hbWUpIHx8CisJCQkJKCJ0YWJsZSIgPT0gY2xhc3NuYW1lKSB8fCAoInRyZWUiID09IGNsYXNzbmFtZSkpIHsKKwkJCWludCB3aWR0aCA9IDA7CisJCQlpbnQgY29sdW1uaGVpZ2h0ID0gMDsKKwkJCWlmICgidGFibGUiID09IGNsYXNzbmFtZSkgeworCQkJCWZvciAoT2JqZWN0IGNvbHVtbiA9IGdldChjb21wb25lbnQsICJjb2x1bW4iKTsKKwkJCQkJCWNvbHVtbiAhPSBudWxsOyBjb2x1bW4gPSBnZXQoY29sdW1uLCAiOm5leHQiKSkgeworCQkJCQl3aWR0aCArPSBnZXRJbnRlZ2VyKGNvbHVtbiwgIndpZHRoIiwgODApOworCQkJCQlEaW1lbnNpb24gZCA9IGdldFNpemUoY29sdW1uLCAyLCAyLCAibGVmdCIpOworCQkJCQljb2x1bW5oZWlnaHQgPSBNYXRoLm1heChjb2x1bW5oZWlnaHQsIGQuaGVpZ2h0KTsKKwkJCQl9CisJCQl9CisJCQlTdHJpbmcgaXRlbW5hbWUgPSAoImxpc3QiID09IGNsYXNzbmFtZSkgPyAiaXRlbSIgOgorCQkJCSgoInRhYmxlIiA9PSBjbGFzc25hbWUpID8gInJvdyIgOiAibm9kZSIpOworCQkJaW50IHkgPSAwOworCQkJaW50IGxldmVsID0gMDsKKwkJCWZvciAoT2JqZWN0IGl0ZW0gPSBnZXQoY29tcG9uZW50LCBpdGVtbmFtZSk7IGl0ZW0gIT0gbnVsbDspIHsKKwkJCQlpbnQgeCA9IDA7CisJCQkJaW50IGl3aWR0aCA9IDA7IGludCBpaGVpZ2h0ID0gMDsKKwkJCQlpZiAoInRhYmxlIiA9PSBjbGFzc25hbWUpIHsKKwkJCQkJaXdpZHRoID0gd2lkdGg7CisJCQkJCWZvciAoT2JqZWN0IGNlbGwgPSBnZXQoaXRlbSwgImNlbGwiKTsKKwkJCQkJCQljZWxsICE9IG51bGw7IGNlbGwgPSBnZXQoY2VsbCwgIjpuZXh0IikpIHsKKwkJCQkJCURpbWVuc2lvbiBkID0gZ2V0U2l6ZShjZWxsLCAyLCAzLCAibGVmdCIpOworCQkJCQkJaWhlaWdodCA9IE1hdGgubWF4KGloZWlnaHQsIGQuaGVpZ2h0KTsKKwkJCQkJfQorCQkJCX0KKwkJCQllbHNlIHsKKwkJCQkJaWYgKCJ0cmVlIiA9PSBjbGFzc25hbWUpIHsKKwkJCQkJCXggPSAobGV2ZWwgKyAxKSAqIGJsb2NrOworCQkJCQl9CisJCQkJCURpbWVuc2lvbiBkID0gZ2V0U2l6ZShpdGVtLCAyLCAzLCAibGVmdCIpOworCQkJCQlpd2lkdGggPSBkLndpZHRoOyBpaGVpZ2h0ID0gZC5oZWlnaHQ7CisJCQkJCXdpZHRoID0gTWF0aC5tYXgod2lkdGgsIHggKyBkLndpZHRoKTsKKwkJCQl9CisJCQkJc2V0UmVjdGFuZ2xlKGl0ZW0sICJib3VuZHMiLCB4LCB5LCBpd2lkdGgsIGloZWlnaHQpOworCQkJCXkgKz0gaWhlaWdodDsKKwkJCQlpZiAoInRyZWUiID09IGNsYXNzbmFtZSkgeworCQkJCQlPYmplY3QgbmV4dCA9IGdldChpdGVtLCAibm9kZSIpOworCQkJCQlpZiAoKG5leHQgIT0gbnVsbCkgJiYgZ2V0Qm9vbGVhbihpdGVtLCAiZXhwYW5kZWQiLCB0cnVlKSkgeworCQkJCQkJbGV2ZWwrKzsKKwkJCQkJfSBlbHNlIHsKKwkJCQkJCXdoaWxlICgoKG5leHQgPSBnZXQoaXRlbSwgIjpuZXh0IikpID09IG51bGwpICYmIChsZXZlbCA+IDApKSB7CisJCQkJCQkJaXRlbSA9IGdldFBhcmVudChpdGVtKTsKKwkJCQkJCQlsZXZlbC0tOworCQkJCQkJfQorCQkJCQl9CisJCQkJCWl0ZW0gPSBuZXh0OworCQkJCX0gZWxzZSB7CisJCQkJCWl0ZW0gPSBnZXQoaXRlbSwgIjpuZXh0Iik7CisJCQkJfQorCQkJfQorCQkJbGF5b3V0U2Nyb2xsUGFuZShjb21wb25lbnQsIHdpZHRoLCB5IC0gMSwgMCwgY29sdW1uaGVpZ2h0KTsKKwkJfQorCQllbHNlIGlmICgibWVudWJhciIgPT0gY2xhc3NuYW1lKSB7IAorCQkJUmVjdGFuZ2xlIGJvdW5kcyA9IGdldFJlY3RhbmdsZShjb21wb25lbnQsICJib3VuZHMiKTsKKwkJCWludCB4ID0gMDsKKwkJCWZvciAoT2JqZWN0IG1lbnUgPSBnZXQoY29tcG9uZW50LCAibWVudSIpOworCQkJCQltZW51ICE9IG51bGw7IG1lbnUgPSBnZXQobWVudSwgIjpuZXh0IikpIHsKKwkJCQlEaW1lbnNpb24gZCA9IGdldFNpemUobWVudSwgOCwgNCwgImxlZnQiKTsKKwkJCQlzZXRSZWN0YW5nbGUobWVudSwgImJvdW5kcyIsIHgsIDAsIGQud2lkdGgsIGJvdW5kcy5oZWlnaHQpOworCQkJCXggKz0gZC53aWR0aDsKKwkJCX0KKwkJfQorCQllbHNlIGlmICgoImNvbWJvbGlzdCIgPT0gY2xhc3NuYW1lKSB8fCAoInBvcHVwbWVudSIgPT0gY2xhc3NuYW1lKSkgeworCQkJYm9vbGVhbiBjb21ibyA9ICgiY29tYm9saXN0IiA9PSBjbGFzc25hbWUpOworCQkJaW50IHB3ID0gMDsgaW50IHBoID0gMDsgaW50IHB4eSA9IGNvbWJvID8gMCA6IDE7CisJCQlmb3IgKE9iamVjdCBpdGVtID0gZ2V0KGdldChjb21wb25lbnQsIGNvbWJvID8gImNvbWJvYm94IiA6ICJtZW51IiksCisJCQkJCWNvbWJvID8gImNob2ljZSIgOiAibWVudSIpOyBpdGVtICE9IG51bGw7IGl0ZW0gPSBnZXQoaXRlbSwgIjpuZXh0IikpIHsKKwkJCQlTdHJpbmcgaXRlbWNsYXNzID0gY29tYm8gPyBudWxsIDogZ2V0Q2xhc3MoaXRlbSk7CisJCQkJRGltZW5zaW9uIGQgPSAoaXRlbWNsYXNzID09ICJzZXBhcmF0b3IiKSA/IG5ldyBEaW1lbnNpb24oMSwgMSkgOgorCQkJCQlnZXRTaXplKGl0ZW0sIDggLCA0LCAibGVmdCIpOworCQkJCWlmIChpdGVtY2xhc3MgPT0gImNoZWNrYm94bWVudWl0ZW0iKSB7CisJCQkJCWQud2lkdGggPSBkLndpZHRoICsgYmxvY2sgKyAzOworCQkJCQlkLmhlaWdodCA9IE1hdGgubWF4KGJsb2NrLCBkLmhlaWdodCk7CisJCQkJfQorCQkJCWVsc2UgaWYgKGl0ZW1jbGFzcyA9PSAibWVudSIpIHsKKwkJCQkJZC53aWR0aCArPSBibG9jazsKKwkJCQl9CisJCQkJc2V0UmVjdGFuZ2xlKGl0ZW0sICJib3VuZHMiLCBweHksIHB4eSArIHBoLCBkLndpZHRoLCBkLmhlaWdodCk7CisJCQkJcHcgPSBNYXRoLm1heChwdywgZC53aWR0aCk7CisJCQkJcGggKz0gZC5oZWlnaHQ7CisJCQl9CisJCQlSZWN0YW5nbGUgciA9IGdldFJlY3RhbmdsZShjb21wb25lbnQsICJib3VuZHMiKTsKKwkJCXIud2lkdGggPSBwdyArIDI7IHIuaGVpZ2h0ID0gcGggKyAyOworCQkJaWYgKGNvbWJvKSB7CisJCQkJUmVjdGFuZ2xlIGRiID0gZ2V0UmVjdGFuZ2xlKGNvbnRlbnQsICJib3VuZHMiKTsKKwkJCQlpZiAoci55ICsgcGggKyAyID4gZGIuaGVpZ2h0KSB7CisJCQkJCXIud2lkdGggPSBwdyArIDIgKyBibG9jazsKKwkJCQkJci5oZWlnaHQgPSBkYi5oZWlnaHQgLSByLnk7CisJCQkJfQorCQkJCWVsc2UgeworCQkJCQlyLmhlaWdodCA9IE1hdGgubWluKHIuaGVpZ2h0LCBkYi5oZWlnaHQgLSByLnkpOworCQkJCX0KKwkJCQlyLndpZHRoID0gTWF0aC5taW4oci53aWR0aCwgZGIud2lkdGggLSByLngpOworCQkJCWxheW91dFNjcm9sbFBhbmUoY29tcG9uZW50LCBwdywgcGgsIDAsIDApOy8vfgorCQkJfQorCQl9CisJCS8vamF2YT4KKwkJZWxzZSBpZiAoImJlYW4iID09IGNsYXNzbmFtZSkgeworCQkJCVJlY3RhbmdsZSByID0gZ2V0UmVjdGFuZ2xlKGNvbXBvbmVudCwgImJvdW5kcyIpOworCQkJCSgoQ29tcG9uZW50KSBnZXQoY29tcG9uZW50LCAiYmVhbiIpKS5zZXRCb3VuZHMocik7CisJCX0KKwkJLy88amF2YQorCX0KKworCS8qKgorCSAqCisJICovCisJcHJpdmF0ZSBPYmplY3QgcG9wdXAoT2JqZWN0IGNvbXBvbmVudCwgT2JqZWN0IGNsYXNzbmFtZSkgeworCQlPYmplY3QgcG9wdXAgPSBudWxsOworCQlpbnQgcHggPSAwOyBpbnQgcHkgPSAwOworCQlpZiAoKCJtZW51YmFyIiA9PSBjbGFzc25hbWUpIHx8ICgicG9wdXBtZW51IiA9PSBjbGFzc25hbWUpKSB7CisJCQlPYmplY3QgcG9wdXBtZW51ID0gZ2V0KGNvbXBvbmVudCwgInBvcHVwbWVudSIpOworCQkJT2JqZWN0IHNlbGVjdGVkID0gZ2V0KGNvbXBvbmVudCwgInNlbGVjdGVkIik7CisJCQlpZiAocG9wdXBtZW51ICE9IG51bGwpIHsKKwkJCQlpZiAoZ2V0KHBvcHVwbWVudSwgIm1lbnUiKSA9PSBzZWxlY3RlZCkgeyByZXR1cm4gbnVsbDsgfQorCQkJCXNldChwb3B1cG1lbnUsICJzZWxlY3RlZCIsIG51bGwpOworCQkJCXNldChwb3B1cG1lbnUsICJtZW51IiwgbnVsbCk7CisJCQkJcmVtb3ZlSXRlbUltcGwoY29udGVudCwgImNvbXBvbmVudCIsIHBvcHVwbWVudSk7CisJCQkJcmVwYWludChwb3B1cG1lbnUpOworCQkJCXNldChwb3B1cG1lbnUsICI6cGFyZW50IiwgbnVsbCk7CisJCQkJc2V0KGNvbXBvbmVudCwgInBvcHVwbWVudSIsIG51bGwpOworCQkJCWlmIChtb3VzZWluc2lkZSA9PSBwb3B1cG1lbnUpIHsKKwkJCQkJZmluZENvbXBvbmVudChjb250ZW50LCBtb3VzZXgsIG1vdXNleSk7CisJCQkJCWhhbmRsZU1vdXNlRXZlbnQobW91c2V4LCBtb3VzZXgsIDEsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIC8vamF2YQorCQkJCQkJTW91c2VFdmVudC5NT1VTRV9FTlRFUkVELCBtb3VzZWluc2lkZSwgaW5zaWRlcGFydCk7IC8vamF2YQorCQkJCX0KKwkJCQlwb3B1cChwb3B1cG1lbnUsICJwb3B1cG1lbnUiKTsKKwkJCX0KKwkJCWlmICgoc2VsZWN0ZWQgPT0gbnVsbCkgfHwgKGdldENsYXNzKHNlbGVjdGVkKSAhPSAibWVudSIpKSB7IHJldHVybiBudWxsOyB9CisJCQlwb3B1cCA9IGNyZWF0ZUltcGwoInBvcHVwbWVudSIpOworCQkJc2V0KHBvcHVwLCAibWVudSIsIHNlbGVjdGVkKTsKKwkJCXNldChjb21wb25lbnQsICJwb3B1cG1lbnUiLCBwb3B1cCk7CisKKwkJCVJlY3RhbmdsZSBib3VuZHMgPSBnZXRSZWN0YW5nbGUoc2VsZWN0ZWQsICJib3VuZHMiKTsKKwkJCWlmICgibWVudWJhciIgPT0gY2xhc3NuYW1lKSB7CisJCQkJcHggPSBib3VuZHMueDsgcHkgPSBib3VuZHMueSArIGJvdW5kcy5oZWlnaHQgLSAxOworCQkJfSBlbHNlIHsKKwkJCQlweCA9IGJvdW5kcy54ICsgZ2V0UmVjdGFuZ2xlKGNvbXBvbmVudCwgImJvdW5kcyIpLndpZHRoIC0gNDsKKwkJCQlweSA9IGJvdW5kcy55OworCQkJfQorCQl9CisJCWVsc2UgeyAvL2lmICgiY29tYm9ib3giID09IGNsYXNzbmFtZSkgeworCQkJcG9wdXAgPSBjcmVhdGVJbXBsKCJjb21ib2xpc3QiKTsKKwkJCXNldChwb3B1cCwgImNvbWJvYm94IiwgY29tcG9uZW50KTsKKwkJCXNldChjb21wb25lbnQsICJjb21ib2xpc3QiLCBwb3B1cCk7CisKKwkJCXB5ID0gZ2V0UmVjdGFuZ2xlKGNvbXBvbmVudCwgImJvdW5kcyIpLmhlaWdodCArIDE7CisJCX0KKwkJaWYgKCgibWVudWJhciIgPT0gY2xhc3NuYW1lKSB8fCAoImNvbWJvYm94IiA9PSBjbGFzc25hbWUpKSB7CisJCQlwb3B1cG93bmVyID0gY29tcG9uZW50OworCQl9CisJCWluc2VydEl0ZW0oY29udGVudCwgImNvbXBvbmVudCIsIHBvcHVwLCAwKTsKKwkJc2V0KHBvcHVwLCAiOnBhcmVudCIsIGNvbnRlbnQpOworCQl3aGlsZSAoY29tcG9uZW50ICE9IGNvbnRlbnQpIHsKKwkJCVJlY3RhbmdsZSByID0gZ2V0UmVjdGFuZ2xlKGNvbXBvbmVudCwgImJvdW5kcyIpOworCQkJcHggKz0gci54OyBweSArPSByLnk7CisJCQljb21wb25lbnQgPSBnZXRQYXJlbnQoY29tcG9uZW50KTsKKwkJfQorCQlzZXRSZWN0YW5nbGUocG9wdXAsICJib3VuZHMiLCBweCwgcHksIDAsIDApOworCQlkb0xheW91dChwb3B1cCk7IHJlcGFpbnQocG9wdXApOworCQlyZXR1cm4gcG9wdXA7CisJfQorCisJLyoqCisJICoKKwkgKi8KKwlwcml2YXRlIHZvaWQgY2xvc2V1cChPYmplY3QgY29tYm9ib3gsIE9iamVjdCBjb21ib2xpc3QsIE9iamVjdCBpdGVtKSB7CisJCWlmICgoaXRlbSAhPSBudWxsKSAmJiBnZXRCb29sZWFuKGl0ZW0sICJlbmFibGVkIiwgdHJ1ZSkpIHsKKwkJCVN0cmluZyB0ZXh0ID0gZ2V0U3RyaW5nKGl0ZW0sICJ0ZXh0IiwgIiIpOworCQkJc2V0KGNvbWJvYm94LCAidGV4dCIsIHRleHQpOyAvLyBpZiBlZGl0YWJsZQorCQkJc2V0SW50ZWdlcihjb21ib2JveCwgInN0YXJ0IiwgdGV4dC5sZW5ndGgoKSwgMCk7CisJCQlzZXRJbnRlZ2VyKGNvbWJvYm94LCAiZW5kIiwgMCwgMCk7CisJCQlzZXQoY29tYm9ib3gsICJpY29uIiwgZ2V0KGl0ZW0sICJpY29uIikpOworCQkJdmFsaWRhdGUoY29tYm9ib3gpOworCQkJc2V0SW50ZWdlcihjb21ib2JveCwgInNlbGVjdGVkIiwgZ2V0SW5kZXgoY29tYm9ib3gsICJjaG9pY2UiLCBpdGVtKSwgLTEpOworCQkJaW52b2tlKGNvbWJvYm94LCAiYWN0aW9uIik7CisJCX0KKwkJc2V0KGNvbWJvbGlzdCwgImNvbWJvYm94IiwgbnVsbCk7CisJCXNldChjb21ib2JveCwgImNvbWJvbGlzdCIsIG51bGwpOworCQlyZW1vdmVJdGVtSW1wbChjb250ZW50LCAiY29tcG9uZW50IiwgY29tYm9saXN0KTsKKwkJcmVwYWludChjb21ib2xpc3QpOworCQlzZXQoY29tYm9saXN0LCAiOnBhcmVudCIsIG51bGwpOworCQlwb3B1cG93bmVyID0gbnVsbDsKKwkJaWYgKG1vdXNlaW5zaWRlID09IGNvbWJvbGlzdCkgeworCQkJZmluZENvbXBvbmVudChjb250ZW50LCBtb3VzZXgsIG1vdXNleSk7CisJCQloYW5kbGVNb3VzZUV2ZW50KG1vdXNleCwgbW91c2V4LCAxLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCAvL2phdmEKKwkJCQlNb3VzZUV2ZW50Lk1PVVNFX0VOVEVSRUQsIG1vdXNlaW5zaWRlLCBpbnNpZGVwYXJ0KTsgLy9qYXZhCisJCX0KKwl9CisKKwkvKioKKwkgKgorCSAqLworCXByaXZhdGUgdm9pZCBjbG9zZXVwKE9iamVjdCBtZW51YmFyKSB7CisJCXNldChtZW51YmFyLCAic2VsZWN0ZWQiLCBudWxsKTsKKwkJcG9wdXAobWVudWJhciwgIm1lbnViYXIiKTsKKwkJcmVwYWludChtZW51YmFyKTsgLy8gLCBzZWxlY3RlZAorCQlwb3B1cG93bmVyID0gbnVsbDsKKwl9CisKKwkvKioKKwkgKgorCSAqLworCXByaXZhdGUgdm9pZCBjbG9zZXVwKCkgeworCQlpZiAocG9wdXBvd25lciAhPSBudWxsKSB7CisJCQlTdHJpbmcgY2xhc3NuYW1lID0gZ2V0Q2xhc3MocG9wdXBvd25lcik7CisJCQlpZiAoIm1lbnViYXIiID09IGNsYXNzbmFtZSkgeworCQkJCWNsb3NldXAocG9wdXBvd25lcik7CisJCQl9CisJCQllbHNlIGlmICgiY29tYm9ib3giID09IGNsYXNzbmFtZSkgeworCQkJCWNsb3NldXAocG9wdXBvd25lciwgZ2V0KHBvcHVwb3duZXIsICJjb21ib2xpc3QiKSwgbnVsbCk7CisJCQl9CisJCX0KKwl9CisKKwkvKioKKwkgKgorCSAqLworCXByaXZhdGUgdm9pZCBzaG93VGlwKCkgeworCQlTdHJpbmcgdGV4dCA9IG51bGw7CisJCXRvb2x0aXBvd25lciA9IG51bGw7CisJCVN0cmluZyBjbGFzc25hbWUgPSBnZXRDbGFzcyhtb3VzZWluc2lkZSk7CisJCWlmICgoY2xhc3NuYW1lID09ICJ0YWJiZWRwYW5lIikgfHwgKGNsYXNzbmFtZSA9PSAibWVudWJhciIpIHx8IChjbGFzc25hbWUgPT0gInBvcHVwbWVudSIpKSB7CisJCQlpZiAoaW5zaWRlcGFydCAhPSBudWxsKSB7CisJCQkJdGV4dCA9IGdldFN0cmluZyhpbnNpZGVwYXJ0LCAidG9vbHRpcCIsIG51bGwpOworCQkJfQorCQl9CisJCWVsc2UgaWYgKGNsYXNzbmFtZSA9PSAiY29tYm9saXN0IikgeworCQkJaWYgKGluc2lkZXBhcnQgaW5zdGFuY2VvZiBPYmplY3RbXSkgeworCQkJCXRleHQgPSBnZXRTdHJpbmcoaW5zaWRlcGFydCwgInRvb2x0aXAiLCBudWxsKTsKKwkJCX0KKwkJfQorCQkvL2xpc3QgdGFibGUgdHJlZQorCQlpZiAodGV4dCA9PSBudWxsKSB7IHRleHQgPSBnZXRTdHJpbmcobW91c2VpbnNpZGUsICJ0b29sdGlwIiwgbnVsbCk7IH0KKwkJCWVsc2UgeyB0b29sdGlwb3duZXIgPSBpbnNpZGVwYXJ0OyB9CisJCWlmICh0ZXh0ICE9IG51bGwpIHsKKwkJCUZvbnRNZXRyaWNzIGZtID0gZ2V0Rm9udE1ldHJpY3MoZ2V0Rm9udCgpKTsKKwkJCWludCB3aWR0aCA9IGZtLnN0cmluZ1dpZHRoKHRleHQpICsgNDsKKwkJCWludCBoZWlnaHQgPSBmbS5nZXRBc2NlbnQoKSArIGZtLmdldERlc2NlbnQoKSArIDQ7CisJCQlpZiAodG9vbHRpcG93bmVyID09IG51bGwpIHsgdG9vbHRpcG93bmVyID0gbW91c2VpbnNpZGU7IH0KKwkJCXNldFJlY3RhbmdsZSh0b29sdGlwb3duZXIsICJ0b29sdGlwYm91bmRzIiwgbW91c2V4ICsgMTAsIG1vdXNleSArIDEwLCB3aWR0aCwgaGVpZ2h0KTsKKwkJCXJlcGFpbnQobW91c2V4ICsgMTAsIG1vdXNleSArIDEwLCB3aWR0aCwgaGVpZ2h0KTsKKwkJfQorCX0KKworCS8qKgorCSAqCisJICovCisJcHJpdmF0ZSB2b2lkIGhpZGVUaXAoKSB7CisJCWlmICh0b29sdGlwb3duZXIgIT0gbnVsbCkgeworCQkJUmVjdGFuZ2xlIGJvdW5kcyA9IGdldFJlY3RhbmdsZSh0b29sdGlwb3duZXIsICJ0b29sdGlwYm91bmRzIik7CisJCQlzZXQodG9vbHRpcG93bmVyLCAidG9vbHRpcGJvdW5kcyIsIG51bGwpOworCQkJdG9vbHRpcG93bmVyID0gbnVsbDsKKwkJCXJlcGFpbnQoYm91bmRzLngsIGJvdW5kcy55LCBib3VuZHMud2lkdGgsIGJvdW5kcy5oZWlnaHQpOworCQl9CisJfQorCisJLyoqCisJICoKKwkgKi8KKwlwcml2YXRlIHZvaWQgbGF5b3V0RmllbGQoT2JqZWN0IGNvbXBvbmVudCwgaW50IGR3LCBib29sZWFuIGhpZGRlbiwgaW50IGxlZnQpIHsKKwkJaW50IHdpZHRoID0gZ2V0UmVjdGFuZ2xlKGNvbXBvbmVudCwgImJvdW5kcyIpLndpZHRoIC0gbGVmdCAtZHc7CisJCVN0cmluZyB0ZXh0ID0gZ2V0U3RyaW5nKGNvbXBvbmVudCwgInRleHQiLCAiIik7CisJCWludCBzdGFydCA9IGdldEludGVnZXIoY29tcG9uZW50LCAic3RhcnQiLCAwKTsKKwkJaWYgKHN0YXJ0ID4gdGV4dC5sZW5ndGgoKSkgeyBzZXRJbnRlZ2VyKGNvbXBvbmVudCwgInN0YXJ0Iiwgc3RhcnQgPSB0ZXh0Lmxlbmd0aCgpLCAwKTsgfQorCQlpbnQgZW5kID0gZ2V0SW50ZWdlcihjb21wb25lbnQsICJlbmQiLCAwKTsKKwkJaWYgKGVuZCA+IHRleHQubGVuZ3RoKCkpIHsgc2V0SW50ZWdlcihjb21wb25lbnQsICJlbmQiLCBlbmQgPSB0ZXh0Lmxlbmd0aCgpLCAwKTsgfQorCQlpbnQgb2Zmc2V0ID0gZ2V0SW50ZWdlcihjb21wb25lbnQsICJvZmZzZXQiLCAwKTsKKwkJaW50IG9mZiA9IG9mZnNldDsKKwkJRm9udE1ldHJpY3MgZm0gPSBnZXRGb250TWV0cmljcyhnZXRGb250KCkpOworCQlpbnQgY2FyZXQgPSBoaWRkZW4gPyAoZm0uY2hhcldpZHRoKCcqJykgKiBlbmQpIDoKKwkJCWZtLnN0cmluZ1dpZHRoKHRleHQuc3Vic3RyaW5nKDAsIGVuZCkpOyAvL2phdmEKKwkJCS8vbWlkcCBmb250LnN1YnN0cmluZ1dpZHRoKHRleHQsIDAsIGVuZCk7CisJCWlmIChvZmYgPiBjYXJldCkgeworCQkJb2ZmID0gY2FyZXQ7CisJCX0KKwkJZWxzZSBpZiAob2ZmIDwgY2FyZXQgLSB3aWR0aCArIDQpIHsKKwkJCW9mZiA9IGNhcmV0IC0gd2lkdGggKyA0OworCQl9CisJCW9mZiA9IE1hdGgubWF4KDAsIE1hdGgubWluKG9mZiwgKGhpZGRlbiA/IChmbS5jaGFyV2lkdGgoJyonKSAqCisJCQl0ZXh0Lmxlbmd0aCgpKSA6IGZtLnN0cmluZ1dpZHRoKHRleHQpKSAtIHdpZHRoICsgNCkpOyAKKwkJaWYgKG9mZiAhPSBvZmZzZXQpIHsKKwkJCXNldEludGVnZXIoY29tcG9uZW50LCAib2Zmc2V0Iiwgb2ZmLCAwKTsKKwkJfQorCX0KKworCS8qKgorCSAqCisJICovCisJcHJpdmF0ZSB2b2lkIGxheW91dFNjcm9sbFBhbmUoT2JqZWN0IGNvbXBvbmVudCwKKwkJCWludCBjb250ZW50d2lkdGgsIGludCBjb250ZW50aGVpZ2h0LCBpbnQgcm93d2lkdGgsIGludCBjb2x1bW5oZWlnaHQpIHsKKwkJUmVjdGFuZ2xlIGJvdW5kcyA9IGdldFJlY3RhbmdsZShjb21wb25lbnQsICJib3VuZHMiKTsKKwkJYm9vbGVhbiBobmVlZCA9IGZhbHNlOyBib29sZWFuIHZuZWVkID0gZmFsc2U7CisJCWlmIChjb250ZW50d2lkdGggPiBib3VuZHMud2lkdGggLSByb3d3aWR0aCAtIDIpIHsKKwkJCWhuZWVkID0gdHJ1ZTsKKwkJCXZuZWVkID0gKGNvbnRlbnRoZWlnaHQgPiBib3VuZHMuaGVpZ2h0IC0gY29sdW1uaGVpZ2h0IC0gMiAtIGJsb2NrKTsKKwkJfQorCQlpZiAodm5lZWQgfHwgKGNvbnRlbnRoZWlnaHQgPiBib3VuZHMuaGVpZ2h0IC0gY29sdW1uaGVpZ2h0IC0gMikpIHsKKwkJCXZuZWVkID0gdHJ1ZTsKKwkJCWhuZWVkID0gaG5lZWQgfHwgKGNvbnRlbnR3aWR0aCA+IGJvdW5kcy53aWR0aCAtIHJvd3dpZHRoIC0gMiAtIGJsb2NrKTsKKwkJfQorCQlpbnQgdmlld3BvcnR3aWR0aCA9IGJvdW5kcy53aWR0aCAtIHJvd3dpZHRoIC0gKHZuZWVkID8gYmxvY2sgOiAwKTsKKwkJaW50IHZpZXdwb3J0aGVpZ2h0ID0gYm91bmRzLmhlaWdodCAtIGNvbHVtbmhlaWdodCAtIChobmVlZCA/IGJsb2NrIDogMCk7CisJCXNldFJlY3RhbmdsZShjb21wb25lbnQsICI6cG9ydCIsCisJCQlyb3d3aWR0aCwgY29sdW1uaGVpZ2h0LCB2aWV3cG9ydHdpZHRoLCB2aWV3cG9ydGhlaWdodCk7IC8vP3Jvd3dpZHRoCisKKwkJUmVjdGFuZ2xlIHZpZXcgPSBnZXRSZWN0YW5nbGUoY29tcG9uZW50LCAiOnZpZXciKTsKKwkJc2V0UmVjdGFuZ2xlKGNvbXBvbmVudCwgIjp2aWV3IiwKKwkJCSh2aWV3ICE9IG51bGwpID8gTWF0aC5tYXgoMCwKKwkJCQlNYXRoLm1pbih2aWV3LngsIGNvbnRlbnR3aWR0aCAtIHZpZXdwb3J0d2lkdGggKyAyKSkgOiAwLAorCQkJKHZpZXcgIT0gbnVsbCkgPyBNYXRoLm1heCgwLAorCQkJCU1hdGgubWluKHZpZXcueSwgY29udGVudGhlaWdodCAtIHZpZXdwb3J0aGVpZ2h0ICsgMikpIDogMCwKKwkJCU1hdGgubWF4KHZpZXdwb3J0d2lkdGggLSAyLCBjb250ZW50d2lkdGgpLAorCQkJTWF0aC5tYXgodmlld3BvcnRoZWlnaHQgLSAyLCBjb250ZW50aGVpZ2h0KSk7CisJfQorCisJLyoqCisJICoKKwkgKi8KKwlwcml2YXRlIHZvaWQgc2Nyb2xsVG9WaXNpYmxlKE9iamVjdCBjb21wb25lbnQsCisJCQlpbnQgeCwgaW50IHksIGludCB3aWR0aCwgaW50IGhlaWdodCkgeworCQlSZWN0YW5nbGUgdmlldyA9IGdldFJlY3RhbmdsZShjb21wb25lbnQsICI6dmlldyIpOworCQlSZWN0YW5nbGUgcG9ydCA9IGdldFJlY3RhbmdsZShjb21wb25lbnQsICI6cG9ydCIpOworCQlpbnQgdnggPSBNYXRoLm1heCh4ICsgd2lkdGggLSBwb3J0LndpZHRoICsgMiwgTWF0aC5taW4odmlldy54LCB4KSk7CisJCWludCB2eSA9IE1hdGgubWF4KHkgKyBoZWlnaHQgLSBwb3J0LmhlaWdodCArIDIsIE1hdGgubWluKHZpZXcueSwgeSkpOworCQlpZiAoKHZpZXcueCAhPSB2eCkgfHwgKHZpZXcueSAhPSB2eSkpIHsKKwkJCXJlcGFpbnQoY29tcG9uZW50KTsgLy8gaG9yaXpvbnRhbCB8IHZlcnRpY2FsCisJCQl2aWV3LnggPSB2eDsgdmlldy55ID0gdnk7CisJCX0KKwl9CisJCisJLyoqCisJICoKKwkgKi8KKwlwdWJsaWMgRGltZW5zaW9uIGdldFByZWZlcnJlZFNpemUoKSB7CisJCXJldHVybiBnZXRQcmVmZXJyZWRTaXplKGNvbnRlbnQpOworCX0KKworCS8qKgorCSAqCisJICovCisJcHJpdmF0ZSBEaW1lbnNpb24gZ2V0UHJlZmVycmVkU2l6ZShPYmplY3QgY29tcG9uZW50KSB7CisJCWludCB3aWR0aCA9IGdldEludGVnZXIoY29tcG9uZW50LCAid2lkdGgiLCAwKTsKKwkJaW50IGhlaWdodCA9IGdldEludGVnZXIoY29tcG9uZW50LCAiaGVpZ2h0IiwgMCk7CisJCWlmICgod2lkdGggPiAwKSAmJiAoaGVpZ2h0ID4gMCkpIHsKKwkJCXJldHVybiBuZXcgRGltZW5zaW9uKHdpZHRoLCBoZWlnaHQpOworCQl9CisJCVN0cmluZyBjbGFzc25hbWUgPSBnZXRDbGFzcyhjb21wb25lbnQpOworCQkvL1N5c3RlbS5vdXQucHJpbnRsbigiY2xhc3NuYW1lOiAiICsgY2xhc3NuYW1lKTsKKwkJaWYgKCJsYWJlbCIgPT0gY2xhc3NuYW1lKSB7CisJCQlyZXR1cm4gZ2V0U2l6ZShjb21wb25lbnQsIDAsIDAsICJsZWZ0Iik7CisJCX0gCisJCWlmICgiYnV0dG9uIiA9PSBjbGFzc25hbWUpIHsKKwkJCXJldHVybiBnZXRTaXplKGNvbXBvbmVudCwgMTIsIDYsICJjZW50ZXIiKTsKKwkJfSAKKwkJaWYgKCJjaGVja2JveCIgPT0gY2xhc3NuYW1lKSB7CisJCQlEaW1lbnNpb24gZCA9IGdldFNpemUoY29tcG9uZW50LCAwLCAwLCAibGVmdCIpOworCQkJZC53aWR0aCA9IGQud2lkdGggKyBibG9jayArIDM7CisJCQlkLmhlaWdodCA9IE1hdGgubWF4KGJsb2NrLCBkLmhlaWdodCk7CisJCQlyZXR1cm4gZDsKKwkJfQorCQlpZiAoImNvbWJvYm94IiA9PSBjbGFzc25hbWUpIHsKKwkJCWlmIChnZXRCb29sZWFuKGNvbXBvbmVudCwgImVkaXRhYmxlIiwgdHJ1ZSkpIHsKKwkJCQlEaW1lbnNpb24gc2l6ZSA9IGdldEZpZWxkU2l6ZShjb21wb25lbnQpOworCQkJCUltYWdlIGljb24gPSBnZXRJY29uKGNvbXBvbmVudCwgImljb24iLCBudWxsKTsKKwkJCQlpZiAoaWNvbiAhPSBudWxsKSB7CisJCQkJCXNpemUud2lkdGggKz0gaWNvbi5nZXRXaWR0aCh0aGlzKTsKKwkJCQkJc2l6ZS5oZWlnaHQgPSBNYXRoLm1heChzaXplLmhlaWdodCwgaWNvbi5nZXRIZWlnaHQodGhpcykgKyAyKTsKKwkJCQl9CisJCQkJc2l6ZS53aWR0aCArPSBibG9jazsKKwkJCQlyZXR1cm4gc2l6ZTsKKwkJCX0gZWxzZSB7CisJCQkJaW50IHNlbGVjdGVkID0gZ2V0SW50ZWdlcihjb21wb25lbnQsICJzZWxlY3RlZCIsIC0xKTsKKwkJCQlyZXR1cm4gZ2V0U2l6ZSgoc2VsZWN0ZWQgIT0gLTEpID8KKwkJCQkJZ2V0SXRlbUltcGwoY29tcG9uZW50LCAiY2hvaWNlIiwgc2VsZWN0ZWQpIDoKKwkJCQkJZ2V0KGNvbXBvbmVudCwgImNob2ljZSIpLCA0ICsgYmxvY2ssIDQsICJsZWZ0Iik7CisJCQl9CisJCX0KKwkJaWYgKCgidGV4dGZpZWxkIiA9PSBjbGFzc25hbWUpIHx8ICgicGFzc3dvcmRmaWVsZCIgPT0gY2xhc3NuYW1lKSkgeworCQkJcmV0dXJuIGdldEZpZWxkU2l6ZShjb21wb25lbnQpOworCQl9CisJCWlmICgidGV4dGFyZWEiID09IGNsYXNzbmFtZSkgeworCQkJaW50IGNvbHVtbnMgPSBnZXRJbnRlZ2VyKGNvbXBvbmVudCwgImNvbHVtbnMiLCAwKTsKKwkJCWludCByb3dzID0gZ2V0SW50ZWdlcihjb21wb25lbnQsICJyb3dzIiwgMCk7IC8vICdlJyAtPiAnbScgPworCQkJRm9udE1ldHJpY3MgZm0gPSBnZXRGb250TWV0cmljcyhnZXRGb250KCkpOyAvL2phdmEKKwkJCXJldHVybiBuZXcgRGltZW5zaW9uKAorCQkJCSgoY29sdW1ucyA+IDApID8gKGNvbHVtbnMgKiBmbS5jaGFyV2lkdGgoJ2UnKSArIDIpIDogNzYpICsgMiArIGJsb2NrLAorCQkJCSgocm93cyA+IDApID8gKHJvd3MgKiBmbS5nZXRIZWlnaHQoKSAtIGZtLmdldExlYWRpbmcoKSArIDIpIDogNzYpICsgMiArIGJsb2NrKTsKKwkJfQorCQlpZiAoInRhYmJlZHBhbmUiID09IGNsYXNzbmFtZSkgeworCQkJU3RyaW5nIHBsYWNlbWVudCA9IGdldFN0cmluZyhjb21wb25lbnQsICJwbGFjZW1lbnQiLCAidG9wIik7CisJCQlib29sZWFuIGhvcml6b250YWwgPSAoKHBsYWNlbWVudCA9PSAidG9wIikgfHwgKHBsYWNlbWVudCA9PSAiYm90dG9tIikpOworCQkJaW50IHRhYnNpemUgPSAwOwkKKwkJCWludCBjb250ZW50d2lkdGggPSAwOyBpbnQgY29udGVudGhlaWdodCA9IDA7CisJCQlmb3IgKE9iamVjdCBjb21wID0gZ2V0KGNvbXBvbmVudCwgInRhYiIpOworCQkJCQljb21wICE9IG51bGw7IGNvbXAgPSBnZXQoY29tcCwgIjpuZXh0IikpIHsKKwkJCQlEaW1lbnNpb24gZCA9IGdldFNpemUoY29tcCwgOCwgNCwgImxlZnQiKTsKKwkJCQl0YWJzaXplID0gTWF0aC5tYXgodGFic2l6ZSwgaG9yaXpvbnRhbCA/IGQuaGVpZ2h0IDogZC53aWR0aCk7CisJCQl9CisJCQlmb3IgKE9iamVjdCBjb21wID0gZ2V0KGNvbXBvbmVudCwgImNvbXBvbmVudCIpOworCQkJCQljb21wICE9IG51bGw7IGNvbXAgPSBnZXQoY29tcCwgIjpuZXh0IikpIHsKKwkJCQlpZiAoIWdldEJvb2xlYW4oY29tcCwgInZpc2libGUiLCB0cnVlKSkgeyBjb250aW51ZTsgfQorCQkJCURpbWVuc2lvbiBkID0gZ2V0UHJlZmVycmVkU2l6ZShjb21wKTsKKwkJCQljb250ZW50d2lkdGggPSBNYXRoLm1heChjb250ZW50d2lkdGgsIGQud2lkdGgpOworCQkJCWNvbnRlbnRoZWlnaHQgPSBNYXRoLm1heChjb250ZW50aGVpZ2h0LCBkLmhlaWdodCk7CisJCQl9CisJCQlyZXR1cm4gbmV3IERpbWVuc2lvbihjb250ZW50d2lkdGggKyAoaG9yaXpvbnRhbCA/IDQgOiAodGFic2l6ZSArIDMpKSwKKwkJCQljb250ZW50aGVpZ2h0ICsgKGhvcml6b250YWwgPyAodGFic2l6ZSArIDMpIDogNCkpOworCQl9CisJCWlmICgoInBhbmVsIiA9PSBjbGFzc25hbWUpIHx8IChjbGFzc25hbWUgPT0gImRpYWxvZyIpKSB7CisJCQlEaW1lbnNpb24gc2l6ZSA9IG5ldyBEaW1lbnNpb24oCisJCQkJZ2V0SW50ZWdlcihjb21wb25lbnQsICJsZWZ0IiwgMCkgKyBnZXRJbnRlZ2VyKGNvbXBvbmVudCwgInJpZ2h0IiwgMCksCisJCQkJZ2V0SW50ZWdlcihjb21wb25lbnQsICJ0b3AiLCAwKSArIGdldEludGVnZXIoY29tcG9uZW50LCAiYm90dG9tIiwgMCkpOworCQkJaWYgKGNsYXNzbmFtZSA9PSAiZGlhbG9nIikgeworCQkJCWludCB0aXRsZWhlaWdodCA9IGdldFNpemUoY29tcG9uZW50LCAwLCAwLCAibGVmdCIpLmhlaWdodDsKKwkJCQlzZXRJbnRlZ2VyKGNvbXBvbmVudCwgInRpdGxlaGVpZ2h0IiwgdGl0bGVoZWlnaHQsIDApOworCQkJCXNpemUud2lkdGggKz0gODsgc2l6ZS5oZWlnaHQgKz0gOCArIHRpdGxlaGVpZ2h0OworCQkJfQorCQkJaW50IGdhcCA9IGdldEludGVnZXIoY29tcG9uZW50LCAiZ2FwIiwgMCk7CisJCQlpbnRbXVtdIGdyaWQgPSBnZXRHcmlkKGNvbXBvbmVudCwgZ2FwKTsKKwkJCWlmIChncmlkICE9IG51bGwpIHsKKwkJCQlzaXplLndpZHRoICs9IGdldFN1bShncmlkWzBdLCAwLCBncmlkWzBdLmxlbmd0aCwgZ2FwLCBmYWxzZSk7CisJCQkJc2l6ZS5oZWlnaHQgKz0gZ2V0U3VtKGdyaWRbMV0sIDAsIGdyaWRbMV0ubGVuZ3RoLCBnYXAsIGZhbHNlKTsKKwkJCX0KKwkJCXJldHVybiBzaXplOworCQl9CisJCWVsc2UgaWYgKCJkZXNrdG9wIiA9PSBjbGFzc25hbWUpIHsKKwkJCURpbWVuc2lvbiBzaXplID0gbmV3IERpbWVuc2lvbigpOworCQkJZm9yIChPYmplY3QgY29tcCA9IGdldChjb21wb25lbnQsICJjb21wb25lbnQiKTsKKwkJCQkJY29tcCAhPSBudWxsOyBjb21wID0gZ2V0KGNvbXAsICI6bmV4dCIpKSB7CisJCQkJU3RyaW5nIGljbGFzcyA9IGdldENsYXNzKGNvbXApOworCQkJCWlmICgoaWNsYXNzICE9ICJkaWFsb2ciKSAmJiAoaWNsYXNzICE9ICJwb3B1cG1lbnUiKSAmJgorCQkJCQkJKGljbGFzcyAhPSAiY29tYm9saXN0IikpIHsKKwkJCQkJRGltZW5zaW9uIGQgPSBnZXRQcmVmZXJyZWRTaXplKGNvbXApOworCQkJCQlzaXplLndpZHRoID0gTWF0aC5tYXgoZC53aWR0aCwgc2l6ZS53aWR0aCk7CisJCQkJCXNpemUuaGVpZ2h0ID0gTWF0aC5tYXgoZC5oZWlnaHQsIHNpemUuaGVpZ2h0KTsKKwkJCQl9CisJCQl9CisJCQlyZXR1cm4gc2l6ZTsKKwkJfQorCQlpZiAoInNwaW5ib3giID09IGNsYXNzbmFtZSkgeworCQkJRGltZW5zaW9uIHNpemUgPSBnZXRGaWVsZFNpemUoY29tcG9uZW50KTsKKwkJCXNpemUud2lkdGggKz0gYmxvY2s7CisJCQlyZXR1cm4gc2l6ZTsKKwkJfQorCQlpZiAoInByb2dyZXNzYmFyIiA9PSBjbGFzc25hbWUpIHsKKwkJCWJvb2xlYW4gaG9yaXpvbnRhbCA9ICgidmVydGljYWwiICE9IGdldChjb21wb25lbnQsICJvcmllbnRhdGlvbiIpKTsKKwkJCXJldHVybiBuZXcgRGltZW5zaW9uKGhvcml6b250YWwgPyA3NiA6IDYsIGhvcml6b250YWwgPyA2IDogNzYpOworCQl9CisJCWlmICgic2xpZGVyIiA9PSBjbGFzc25hbWUpIHsKKwkJCWJvb2xlYW4gaG9yaXpvbnRhbCA9ICgidmVydGljYWwiICE9IGdldChjb21wb25lbnQsICJvcmllbnRhdGlvbiIpKTsKKwkJCXJldHVybiBuZXcgRGltZW5zaW9uKGhvcml6b250YWwgPyA3NiA6IDEwLCBob3Jpem9udGFsID8gMTAgOiA3Nik7CisJCX0KKwkJaWYgKCJzcGxpdHBhbmUiID09IGNsYXNzbmFtZSkgeworCQkJYm9vbGVhbiBob3Jpem9udGFsID0gKCJ2ZXJ0aWNhbCIgIT0gZ2V0KGNvbXBvbmVudCwgIm9yaWVudGF0aW9uIikpOworCQkJT2JqZWN0IGNvbXAxID0gZ2V0KGNvbXBvbmVudCwgImNvbXBvbmVudCIpOworCQkJRGltZW5zaW9uIHNpemUgPSAoKGNvbXAxID09IG51bGwpIHx8ICFnZXRCb29sZWFuKGNvbXAxLCAidmlzaWJsZSIsIHRydWUpKSA/CisJCQkJbmV3IERpbWVuc2lvbigpIDogZ2V0UHJlZmVycmVkU2l6ZShjb21wMSk7CisJCQlPYmplY3QgY29tcDIgPSBnZXQoY29tcDEsICI6bmV4dCIpOworCQkJaWYgKChjb21wMiAhPSBudWxsKSAmJiBnZXRCb29sZWFuKGNvbXAyLCAidmlzaWJsZSIsIHRydWUpKSB7CisJCQkJRGltZW5zaW9uIGQgPSBnZXRQcmVmZXJyZWRTaXplKGNvbXAyKTsKKwkJCQlzaXplLndpZHRoID0gaG9yaXpvbnRhbCA/IChzaXplLndpZHRoICsgZC53aWR0aCkgOgorCQkJCQlNYXRoLm1heChzaXplLndpZHRoLCBkLndpZHRoKTsKKwkJCQlzaXplLmhlaWdodCA9IGhvcml6b250YWwgPyBNYXRoLm1heChzaXplLmhlaWdodCwgZC5oZWlnaHQpIDoKKwkJCQkJKHNpemUuaGVpZ2h0ICsgZC5oZWlnaHQpOworCQkJfQorCQkJaWYgKGhvcml6b250YWwpIHsgc2l6ZS53aWR0aCArPSA1OyB9IGVsc2UgeyBzaXplLmhlaWdodCArPSA1OyB9CisJCQlyZXR1cm4gc2l6ZTsKKwkJfQorCQlpZiAoKCJsaXN0IiA9PSBjbGFzc25hbWUpIHx8CisJCQkJKCJ0YWJsZSIgPT0gY2xhc3NuYW1lKSB8fCAoInRyZWUiID09IGNsYXNzbmFtZSkpIHsKKwkJCXJldHVybiBuZXcgRGltZW5zaW9uKDc2ICsgMiArIGJsb2NrLCA3NiArIDIgKyBibG9jayk7CisJCX0KKwkJaWYgKCJzZXBhcmF0b3IiID09IGNsYXNzbmFtZSkgeworCQkJcmV0dXJuIG5ldyBEaW1lbnNpb24oMSwgMSk7CisJCX0KKwkJaWYgKCJtZW51YmFyIiA9PSBjbGFzc25hbWUpIHsgCisJCQlEaW1lbnNpb24gc2l6ZSA9IG5ldyBEaW1lbnNpb24oMCwgMCk7CisJCQlmb3IgKE9iamVjdCBtZW51ID0gZ2V0KGNvbXBvbmVudCwgIm1lbnUiKTsKKwkJCQkJbWVudSAhPSBudWxsOyBtZW51ID0gZ2V0KG1lbnUsICI6bmV4dCIpKSB7CisJCQkJRGltZW5zaW9uIGQgPSBnZXRTaXplKG1lbnUsIDgsIDQsICJsZWZ0Iik7CisJCQkJc2l6ZS53aWR0aCArPSBkLndpZHRoOworCQkJCXNpemUuaGVpZ2h0ID0gTWF0aC5tYXgoc2l6ZS5oZWlnaHQsIGQuaGVpZ2h0KTsKKwkJCX0KKwkJCXJldHVybiBzaXplOworCQl9CisJCS8vamF2YT4KKwkJaWYgKCJiZWFuIiA9PSBjbGFzc25hbWUpIHsKKwkJCQlyZXR1cm4gKChDb21wb25lbnQpIGdldChjb21wb25lbnQsICJiZWFuIikpLmdldFByZWZlcnJlZFNpemUoKTsKKwkJfQorCQkvLzxqYXZhCisJCXRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oKFN0cmluZykgY2xhc3NuYW1lKTsKKwl9CisKKwkvKioKKwkgKgorCSAqLworCXByaXZhdGUgaW50W11bXSBnZXRHcmlkKE9iamVjdCBjb21wb25lbnQsIGludCBnYXApIHsKKwkJaW50IGNvdW50ID0gMDsKKwkJZm9yIChPYmplY3QgY29tcCA9IGdldChjb21wb25lbnQsICJjb21wb25lbnQiKTsgY29tcCAhPSBudWxsOworCQkJCWNvbXAgPSBnZXQoY29tcCwgIjpuZXh0IikpIHsKKwkJCWlmIChnZXRCb29sZWFuKGNvbXAsICJ2aXNpYmxlIiwgdHJ1ZSkpIHsgY291bnQrKzsgfQorCQl9CisJCWlmIChjb3VudCA9PSAwKSB7IHJldHVybiBudWxsOyB9CisJCWludCBjb2x1bW5zID0gZ2V0SW50ZWdlcihjb21wb25lbnQsICJjb2x1bW5zIiwgMCk7CisJCWludCBpY29scyA9IChjb2x1bW5zICE9IDApID8gY29sdW1ucyA6IGNvdW50OworCQlpbnQgaXJvd3MgPSAoY29sdW1ucyAhPSAwKSA/ICgoY291bnQgKyBjb2x1bW5zIC0gMSkgLyBjb2x1bW5zKSA6IDE7CisJCWludFtdW10gZ3JpZCA9IHsKKwkJCW5ldyBpbnRbaWNvbHNdLCBuZXcgaW50W2lyb3dzXSwgLy8gY29sdW1ud2lkdGhzLCByb3doZWlnaHRzCisJCQluZXcgaW50W2ljb2xzXSwgbmV3IGludFtpcm93c10sIC8vIGNvbHVtbndlaWdodHMsIHJvd3dlaWdodHMKKwkJCW5ldyBpbnRbY291bnRdLCBuZXcgaW50W2NvdW50XSwgLy8gZ3JpZHgsIGdyaWR5CisJCQluZXcgaW50W2NvdW50XSwgbmV3IGludFtjb3VudF0gfTsgLy8gZ3JpZHdpZHRoLCBncmlkaGVpZ2h0CisJCWludFtdIGNvbHVtbmhlaWdodCA9IG5ldyBpbnRbaWNvbHNdOworCQlpbnRbXVtdIGNhY2hlID0gbnVsbDsgLy8gcHJlZmVycmVkd2lkdGgsIGhlaWdodCwgY29sdW1ud2VpZ2h0LCByb3d3ZWlnaHQKKworCQlpbnQgaSA9IDA7IGludCB4ID0gMDsgaW50IHkgPSAwOworCQlpbnQgbmV4dHNpemUgPSAwOworCQlmb3IgKE9iamVjdCBjb21wID0gZ2V0KGNvbXBvbmVudCwgImNvbXBvbmVudCIpOworCQkJCWNvbXAgIT0gbnVsbDsgY29tcCA9IGdldChjb21wLCAiOm5leHQiKSkgeworCQkJaWYgKCFnZXRCb29sZWFuKGNvbXAsICJ2aXNpYmxlIiwgdHJ1ZSkpIHsgY29udGludWU7IH0KKwkJCWludCBjb2xzcGFuID0gKChjb2x1bW5zICE9IDApICYmIChjb2x1bW5zIDwgY291bnQpKSA/CisJCQkJTWF0aC5taW4oZ2V0SW50ZWdlcihjb21wLCAiY29sc3BhbiIsIDEpLCBjb2x1bW5zKSA6IDE7CisJCQlpbnQgcm93c3BhbiA9IChjb2x1bW5zICE9IDEpID8gZ2V0SW50ZWdlcihjb21wLCAicm93c3BhbiIsIDEpIDogMTsKKwkJCQorCQkJZm9yIChpbnQgaiA9IDA7IGogPCBjb2xzcGFuOyBqKyspIHsKKwkJCQlpZiAoKGNvbHVtbnMgIT0gMCkgJiYgKHggKyBjb2xzcGFuID4gY29sdW1ucykpIHsKKwkJCQkJeCA9IDA7IHkrKzsgaiA9IC0xOworCQkJCX0KKwkJCQllbHNlIGlmIChjb2x1bW5oZWlnaHRbeCArIGpdID4geSkgeworCQkJCQl4ICs9IChqICsgMSk7IGogPSAtMTsKKwkJCQl9CisJCQl9CisJCQlpZiAoeSArIHJvd3NwYW4gPiBncmlkWzFdLmxlbmd0aCkgeworCQkJCWludFtdIHJvd2hlaWdodHMgPSBuZXcgaW50W3kgKyByb3dzcGFuXTsKKwkJCQlTeXN0ZW0uYXJyYXljb3B5KGdyaWRbMV0sIDAsIHJvd2hlaWdodHMsIDAsIGdyaWRbMV0ubGVuZ3RoKTsKKwkJCQlncmlkWzFdID0gcm93aGVpZ2h0czsKKwkJCQlpbnRbXSByb3d3ZWlnaHRzID0gbmV3IGludFt5ICsgcm93c3Bhbl07CisJCQkJU3lzdGVtLmFycmF5Y29weShncmlkWzNdLCAwLCByb3d3ZWlnaHRzLCAwLCBncmlkWzNdLmxlbmd0aCk7CisJCQkJZ3JpZFszXSA9IHJvd3dlaWdodHM7CisJCQl9CisJCQlmb3IgKGludCBqID0gMDsgaiA8IGNvbHNwYW47IGorKykgeworCQkJCWNvbHVtbmhlaWdodFt4ICsgal0gPSB5ICsgcm93c3BhbjsKKwkJCX0KKworCQkJaW50IHdlaWdodHggPSBnZXRJbnRlZ2VyKGNvbXAsICJ3ZWlnaHR4IiwgMCk7CisJCQlpbnQgd2VpZ2h0eSA9IGdldEludGVnZXIoY29tcCwgIndlaWdodHkiLCAwKTsKKwkJCURpbWVuc2lvbiBkID0gZ2V0UHJlZmVycmVkU2l6ZShjb21wKTsKKworCQkJaWYgKGNvbHNwYW4gPT0gMSkgeworCQkJCWdyaWRbMF1beF0gPSBNYXRoLm1heChncmlkWzBdW3hdLCBkLndpZHRoKTsgLy8gY29sdW1ud2lkdGhzCisJCQkJZ3JpZFsyXVt4XSA9IE1hdGgubWF4KGdyaWRbMl1beF0sIHdlaWdodHgpOyAvLyBjb2x1bW53ZWlnaHRzCisJCQl9CisJCQllbHNlIHsKKwkJCQlpZiAoY2FjaGUgPT0gbnVsbCkgeyBjYWNoZSA9IG5ldyBpbnRbNF1bY291bnRdOyB9CisJCQkJY2FjaGVbMF1baV0gPSBkLndpZHRoOworCQkJCWNhY2hlWzJdW2ldID0gd2VpZ2h0eDsKKwkJCQlpZiAoKG5leHRzaXplID09IDApIHx8IChjb2xzcGFuIDwgbmV4dHNpemUpKSB7IG5leHRzaXplID0gY29sc3BhbjsgfQorCQkJfQorCQkJaWYgKHJvd3NwYW4gPT0gMSkgeworCQkJCWdyaWRbMV1beV0gPSBNYXRoLm1heChncmlkWzFdW3ldLCBkLmhlaWdodCk7IC8vIHJvd2hlaWdodHMgCisJCQkJZ3JpZFszXVt5XSA9IE1hdGgubWF4KGdyaWRbM11beV0sIHdlaWdodHkpOyAvLyByb3d3ZWlnaHRzCisJCQl9CisJCQllbHNlIHsKKwkJCQlpZiAoY2FjaGUgPT0gbnVsbCkgeyBjYWNoZSA9IG5ldyBpbnRbNF1bY291bnRdOyB9CisJCQkJY2FjaGVbMV1baV0gPSBkLmhlaWdodDsKKwkJCQljYWNoZVszXVtpXSA9IHdlaWdodHk7CisJCQkJaWYgKChuZXh0c2l6ZSA9PSAwKSB8fCAocm93c3BhbiA8IG5leHRzaXplKSkgeyBuZXh0c2l6ZSA9IHJvd3NwYW47IH0KKwkJCX0KKwkJCWdyaWRbNF1baV0gPSB4OyAvL2dyaWR4CisJCQlncmlkWzVdW2ldID0geTsgLy9ncmlkeQorCQkJZ3JpZFs2XVtpXSA9IGNvbHNwYW47IC8vZ3JpZHdpZHRoCisJCQlncmlkWzddW2ldID0gcm93c3BhbjsgLy9ncmlkaGVpZ2h0CisJCQkKKwkJCXggKz0gY29sc3BhbjsKKwkJCWkrKzsKKwkJfQorCisJCXdoaWxlIChuZXh0c2l6ZSAhPSAwKSB7CisJCQlpbnQgc2l6ZSA9IG5leHRzaXplOyBuZXh0c2l6ZSA9IDA7CisJCQlmb3IgKGludCBqID0gMDsgaiA8IDI7IGorKykgeyAvLyBob3Jpem9udGFsLCB2ZXJ0aWNhbAorCQkJCWZvciAoaW50IGsgPSAwOyBrIDwgY291bnQ7IGsrKykgeworCQkJCQlpZiAoZ3JpZFs2ICsgal1ba10gPT0gc2l6ZSkgeyAvLyBncmlkd2lkdGgsIGdyaWRoZWlnaHQKKwkJCQkJCWludCBncmlkcG9pbnQgPSBncmlkWzQgKyBqXVtrXTsgLy8gZ3JpZHgsIGdyaWR5CisKKwkJCQkJCWludCB3ZWlnaHRkaWZmID0gY2FjaGVbMiArIGpdW2tdOworCQkJCQkJZm9yIChpbnQgbSA9IDA7ICh3ZWlnaHRkaWZmID4gMCkgJiYgKG0gPCBzaXplKTsgbSsrKSB7CisJCQkJCQkJd2VpZ2h0ZGlmZiAtPSBncmlkWzIgKyBqXVtncmlkcG9pbnQgKyBtXTsKKwkJCQkJCX0KKwkJCQkJCWlmICh3ZWlnaHRkaWZmID4gMCkgeworCQkJCQkJCWludCB3ZWlnaHRzdW0gPSBjYWNoZVsyICsgal1ba10gLSB3ZWlnaHRkaWZmOworCQkJCQkJCWZvciAoaW50IG0gPSAwOyAod2VpZ2h0c3VtID4gMCkgJiYgKG0gPCBzaXplKTsgbSsrKSB7CisJCQkJCQkJCWludCB3ZWlnaHQgPSBncmlkWzIgKyBqXVtncmlkcG9pbnQgKyBtXTsKKwkJCQkJCQkJaWYgKHdlaWdodCA+IDApIHsKKwkJCQkJCQkJCWludCB3ZWlnaHRpbmMgPSB3ZWlnaHQgKiB3ZWlnaHRkaWZmIC8gd2VpZ2h0c3VtOworCQkJCQkJCQkJZ3JpZFsyICsgal1bZ3JpZHBvaW50ICsgbV0gKz0gd2VpZ2h0aW5jOworCQkJCQkJCQkJd2VpZ2h0ZGlmZiAtPSB3ZWlnaHRpbmM7CisJCQkJCQkJCQl3ZWlnaHRzdW0gLT0gd2VpZ2h0aW5jOworCQkJCQkJCQl9CisJCQkJCQkJfQorCQkJCQkJCWdyaWRbMiArIGpdW2dyaWRwb2ludCArIHNpemUgLSAxXSArPSB3ZWlnaHRkaWZmOworCQkJCQkJfQorCisJCQkJCQlpbnQgc2l6ZWRpZmYgPSBjYWNoZVtqXVtrXTsKKwkJCQkJCWludCB3ZWlnaHRzdW0gPSAwOworCQkJCQkJZm9yIChpbnQgbSA9IDA7IChzaXplZGlmZiA+IDApICYmIChtIDwgc2l6ZSk7IG0rKykgeworCQkJCQkJCXNpemVkaWZmIC09IGdyaWRbal1bZ3JpZHBvaW50ICsgbV07CisJCQkJCQkJd2VpZ2h0c3VtICs9IGdyaWRbMiArIGpdW2dyaWRwb2ludCArIG1dOworCQkJCQkJfQorCQkJCQkJaWYgKHNpemVkaWZmID4gMCkgeworCQkJCQkJCWZvciAoaW50IG0gPSAwOyAod2VpZ2h0c3VtID4gMCkgJiYgKG0gPCBzaXplKTsgbSsrKSB7CisJCQkJCQkJCWludCB3ZWlnaHQgPSBncmlkWzIgKyBqXVtncmlkcG9pbnQgKyBtXTsKKwkJCQkJCQkJaWYgKHdlaWdodCA+IDApIHsKKwkJCQkJCQkJCWludCBzaXplaW5jID0gd2VpZ2h0ICogc2l6ZWRpZmYgLyB3ZWlnaHRzdW07CisJCQkJCQkJCQlncmlkW2pdW2dyaWRwb2ludCArIG1dICs9IHNpemVpbmM7CisJCQkJCQkJCQlzaXplZGlmZiAtPSBzaXplaW5jOworCQkJCQkJCQkJd2VpZ2h0c3VtIC09IHdlaWdodDsKKwkJCQkJCQkJfQorCQkJCQkJCX0KKwkJCQkJCQlncmlkW2pdW2dyaWRwb2ludCArIHNpemUgLSAxXSArPSBzaXplZGlmZjsKKwkJCQkJCX0KKwkJCQkJfQorCQkJCQllbHNlIGlmICgoZ3JpZFs2ICsgal1ba10gPiBzaXplKSAmJgorCQkJCQkJCSgobmV4dHNpemUgPT0gMCkgfHwgKGdyaWRbNiArIGpdW2tdIDwgbmV4dHNpemUpKSkgeworCQkJCQkJbmV4dHNpemUgPSBncmlkWzYgKyBqXVtrXTsKKwkJCQkJfQorCQkJCX0KKwkJCX0KKwkJfQorCQlyZXR1cm4gZ3JpZDsKKwl9CisKKwkvKioKKwkgKgorCSAqLworCXByaXZhdGUgaW50IGdldFN1bShpbnRbXSB2YWx1ZXMsCisJCQlpbnQgZnJvbSwgaW50IGxlbmd0aCwgaW50IGdhcCwgYm9vbGVhbiBsYXN0KSB7CisJCWlmIChsZW5ndGggPD0gMCkgeyByZXR1cm4gMDsgfQorCQlpbnQgdmFsdWUgPSAwOworCQlmb3IgKGludCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7CisJCQl2YWx1ZSArPSB2YWx1ZXNbZnJvbSArIGldOworCQl9CisJCXJldHVybiB2YWx1ZSArIChsZW5ndGggLSAobGFzdCA/IDAgOiAxKSkgKiBnYXA7CisJfQorCisJLyoqCisJICoKKwkgKi8KKwlwcml2YXRlIERpbWVuc2lvbiBnZXRGaWVsZFNpemUoT2JqZWN0IGNvbXBvbmVudCkgeworCQlTdHJpbmcgdGV4dCA9IGdldFN0cmluZyhjb21wb25lbnQsICJ0ZXh0IiwgIiIpOworCQlpbnQgY29sdW1ucyA9IGdldEludGVnZXIoY29tcG9uZW50LCAiY29sdW1ucyIsIDApOworCQlGb250TWV0cmljcyBmbSA9IGdldEZvbnRNZXRyaWNzKGdldEZvbnQoKSk7CisJCXJldHVybiBuZXcgRGltZW5zaW9uKCgoY29sdW1ucyA+IDApID8KKwkJCShjb2x1bW5zICogZm0uY2hhcldpZHRoKCdlJykpIDogNzYpICsgNCwKKwkJCWZtLmdldEFzY2VudCgpICsgZm0uZ2V0RGVzY2VudCgpICsgNCk7IC8vIGZtLnN0cmluZ1dpZHRoKHRleHQpCisJfQorCisJLyoqCisJICoKKwkgKi8KKwlwcml2YXRlIERpbWVuc2lvbiBnZXRTaXplKE9iamVjdCBjb21wb25lbnQsCisJCQlpbnQgZHgsIGludCBkeSwgU3RyaW5nIGRlZmF1bHRhbGlnbm1lbnQpIHsKKwkJU3RyaW5nIHRleHQgPSBnZXRTdHJpbmcoY29tcG9uZW50LCAidGV4dCIsIG51bGwpOworCQlpbnQgdHcgPSAwOyBpbnQgdGggPSAwOworCQlpZiAodGV4dCAhPSBudWxsKSB7CisJCQlGb250TWV0cmljcyBmbSA9IGdldEZvbnRNZXRyaWNzKGdldEZvbnQoKSk7CisJCQl0dyA9IGZtLnN0cmluZ1dpZHRoKHRleHQpOworCQkJdGggPSBmbS5nZXRBc2NlbnQoKSArIGZtLmdldERlc2NlbnQoKTsKKwkJfQorCQlJbWFnZSBpY29uID0gZ2V0SWNvbihjb21wb25lbnQsICJpY29uIiwgbnVsbCk7CisJCWludCBpdyA9IDA7IGludCBpaCA9IDA7CisJCWlmIChpY29uICE9IG51bGwpIHsKKwkJCWl3ID0gaWNvbi5nZXRXaWR0aCh0aGlzKTsKKwkJCWloID0gaWNvbi5nZXRIZWlnaHQodGhpcyk7CisJCX0KKwkJcmV0dXJuIG5ldyBEaW1lbnNpb24odHcgKyBpdyArIGR4LCBNYXRoLm1heCh0aCwgaWgpICsgZHkpOworCX0KKwkvL2phdmE+CisKKwkvKioKKwkgKgorCSAqLworCXB1YmxpYyB2b2lkIHVwZGF0ZShHcmFwaGljcyBnKSB7CisJCXBhaW50KGcpOworCX0KKworCS8qKgorCSAqfgorCSAqLworCXB1YmxpYyBib29sZWFuIGltYWdlVXBkYXRlKEltYWdlIGltZywgaW50IGluZm9mbGFncywgaW50IHgsIGludCB5LCBpbnQgd2lkdGgsIGludCBoZWlnaHQpIHsKKwkJaWYgKGluZm9mbGFncyA9PSBJbWFnZU9ic2VydmVyLkFMTEJJVFMpIHsKKwkJCXZhbGlkYXRlKGNvbnRlbnQpOworCQkJcmV0dXJuIHN1cGVyLmltYWdlVXBkYXRlKGltZywgaW5mb2ZsYWdzLCB4LCB5LCB3aWR0aCwgaGVpZ2h0KTsKKwkJfQorCQlyZXR1cm4gdHJ1ZTsKKwl9CisKKwkvKioKKwkgKgorCSAqLworCXB1YmxpYyB2b2lkIHBhaW50KEdyYXBoaWNzIGcpIHsgCisJCS8vZy5zZXRDb2xvcihDb2xvci5vcmFuZ2UpOworCQkvL2cuZmlsbFJlY3QoMCwgMCwgZ2V0U2l6ZSgpLndpZHRoLCBnZXRTaXplKCkuaGVpZ2h0KTsKKwkJLy9sb25nIHRpbWUgPSBTeXN0ZW0uY3VycmVudFRpbWVNaWxsaXMoKTsKKwkJUmVjdGFuZ2xlIGNsaXAgPSBnLmdldENsaXBCb3VuZHMoKTsKKwkJLy8vZGcuc2V0Q2xpcChyLngsIHIueSwgci53aWR0aCwgci5oZWlnaHQpOworCQlwYWludChnLCBjbGlwLngsIGNsaXAueSwgY2xpcC53aWR0aCwgY2xpcC5oZWlnaHQsIGNvbnRlbnQsIGlzRW5hYmxlZCgpKTsKKwkJLy9TeXN0ZW0ub3V0LnByaW50bG4oU3lzdGVtLmN1cnJlbnRUaW1lTWlsbGlzKCkgLSB0aW1lKTsKKwkJLy8vZy5zZXRDbGlwKDAsIDAsIGdldFNpemUoKS53aWR0aCwgZ2V0U2l6ZSgpLmhlaWdodCk7CisJCS8vZy5zZXRDb2xvcihDb2xvci5yZWQpOyBnLmRyYXdSZWN0KGNsaXAueCwgY2xpcC55LCBjbGlwLndpZHRoIC0gMSwgY2xpcC5oZWlnaHQgLSAxKTsKKwl9CisKKwkvLzxqYXZhCisJLyptaWRwCisJcHJvdGVjdGVkIHZvaWQgcGFpbnQoR3JhcGhpY3MgZykgeworCQlwYWludChnLCBnLmdldENsaXBYKCksIGcuZ2V0Q2xpcFkoKSwKKwkJCWcuZ2V0Q2xpcFdpZHRoKCksIGcuZ2V0Q2xpcEhlaWdodCgpLCBjb250ZW50LCB0cnVlKTsKKwl9CisKKwlwcm90ZWN0ZWQgdm9pZCBzaG93Tm90aWZ5KCkgeworCQlzZXRSZWN0YW5nbGUoY29udGVudCwgImJvdW5kcyIsIDAsIDAsIGdldFdpZHRoKCksIGdldEhlaWdodCgpKTsKKwkJZG9MYXlvdXQoY29udGVudCk7CisJfQorCW1pZHAqLworCisJLyoqCisJICoKKwkgKi8KKwlwcml2YXRlIHZvaWQgcGFpbnQoR3JhcGhpY3MgZywKKwkJCWludCBjbGlweCwgaW50IGNsaXB5LCBpbnQgY2xpcHdpZHRoLCBpbnQgY2xpcGhlaWdodCwKKwkJCU9iamVjdCBjb21wb25lbnQsIGJvb2xlYW4gZW5hYmxlZCkgeworCQlpZiAoIWdldEJvb2xlYW4oY29tcG9uZW50LCAidmlzaWJsZSIsIHRydWUpKSB7IHJldHVybjsgfQorCQlSZWN0YW5nbGUgYm91bmRzID0gZ2V0UmVjdGFuZ2xlKGNvbXBvbmVudCwgImJvdW5kcyIpOworCQlpZiAoYm91bmRzID09IG51bGwpIHsgcmV0dXJuOyB9CisJCWlmIChib3VuZHMud2lkdGggPCAwKSB7CisJCQlib3VuZHMud2lkdGggPSBNYXRoLmFicyhib3VuZHMud2lkdGgpOworCQkJZG9MYXlvdXQoY29tcG9uZW50KTsKKwkJfQorCQlpZiAoKGNsaXB4ICsgY2xpcHdpZHRoIDwgYm91bmRzLngpIHx8CisJCQkJKGNsaXB4ID4gYm91bmRzLnggKyBib3VuZHMud2lkdGgpIHx8CisJCQkJKGNsaXB5ICsgY2xpcGhlaWdodCA8IGJvdW5kcy55KSB8fAorCQkJCShjbGlweSA+IGJvdW5kcy55ICsgYm91bmRzLmhlaWdodCkpIHsKKwkJCXJldHVybjsKKwkJfQorCQljbGlweCAtPSBib3VuZHMueDsgY2xpcHkgLT0gYm91bmRzLnk7CisJCVN0cmluZyBjbGFzc25hbWUgPSBnZXRDbGFzcyhjb21wb25lbnQpOworCQlib29sZWFuIHByZXNzZWQgPSAobW91c2VwcmVzc2VkID09IGNvbXBvbmVudCk7CisJCWJvb2xlYW4gaW5zaWRlID0gKG1vdXNlaW5zaWRlID09IGNvbXBvbmVudCkgJiYKKwkJCSgobW91c2VwcmVzc2VkID09IG51bGwpIHx8IHByZXNzZWQpOworCQlib29sZWFuIGZvY3VzID0gZm9jdXNpbnNpZGUgJiYgKGZvY3Vzb3duZXIgPT0gY29tcG9uZW50KTsKKwkJZW5hYmxlZCA9IGdldEJvb2xlYW4oY29tcG9uZW50LCAiZW5hYmxlZCIsIHRydWUpOyAvL2VuYWJsZWQgJiYKKwkJZy50cmFuc2xhdGUoYm91bmRzLngsIGJvdW5kcy55KTsgCisJCS8vZy5zZXRDbGlwKDAsIDAsIGJvdW5kcy53aWR0aCwgYm91bmRzLmhlaWdodCk7CisKKwkJaWYgKCJsYWJlbCIgPT0gY2xhc3NuYW1lKSB7CisJCQlwYWludENvbnRlbnQoY29tcG9uZW50LCBnLCBjbGlweCwgY2xpcHksIGNsaXB3aWR0aCwgY2xpcGhlaWdodCwKKwkJCQkwLCAwLCBib3VuZHMud2lkdGgsIGJvdW5kcy5oZWlnaHQsCisJCQkJZW5hYmxlZCA/IGNfdGV4dCA6IGNfZGlzYWJsZSwgImxlZnQiLCB0cnVlKTsKKwkJfQorCQllbHNlIGlmICgiYnV0dG9uIiA9PSBjbGFzc25hbWUpIHsKKwkJCXBhaW50UmVjdChnLCAwLCAwLCBib3VuZHMud2lkdGgsIGJvdW5kcy5oZWlnaHQsCisJCQkJZW5hYmxlZCA/IGNfYm9yZGVyIDogY19kaXNhYmxlLAorCQkJCWVuYWJsZWQgPyAoKGluc2lkZSAhPSBwcmVzc2VkKSA/IGNfaG92ZXIgOgorCQkJCQkocHJlc3NlZCA/IGNfcHJlc3MgOiBjX2N0cmwpKSA6IGNfYmcsIHRydWUsIHRydWUsIHRydWUsIHRydWUpOworCQkJaWYgKGZvY3VzKSB7CisJCQkJZy5zZXRDb2xvcihjX2ZvY3VzKTsKKwkJCQlnLmRyYXdSZWN0KDIsIDIsIGJvdW5kcy53aWR0aCAtIDUsIGJvdW5kcy5oZWlnaHQgLSA1KTsKKwkJCX0KKwkJCXBhaW50Q29udGVudChjb21wb25lbnQsIGcsIGNsaXB4LCBjbGlweSwgY2xpcHdpZHRoLCBjbGlwaGVpZ2h0LAorCQkJCTYsIDMsIGJvdW5kcy53aWR0aCAtIDEyLCBib3VuZHMuaGVpZ2h0IC0gNiwKKwkJCQllbmFibGVkID8gY190ZXh0IDogY19kaXNhYmxlLCAiY2VudGVyIiwgdHJ1ZSk7CisJCX0KKwkJZWxzZSBpZiAoImNoZWNrYm94IiA9PSBjbGFzc25hbWUpIHsKKwkJCWJvb2xlYW4gc2VsZWN0ZWQgPSBnZXRCb29sZWFuKGNvbXBvbmVudCwgInNlbGVjdGVkIiwgZmFsc2UpOworCQkJU3RyaW5nIGdyb3VwID0gZ2V0U3RyaW5nKGNvbXBvbmVudCwgImdyb3VwIiwgbnVsbCk7CisJCQlDb2xvciBib3JkZXIgPSBlbmFibGVkID8gY19ib3JkZXIgOiBjX2Rpc2FibGU7CisJCQlDb2xvciBmb3JlZ3JvdW5kID0gZW5hYmxlZCA/ICgoaW5zaWRlICE9IHByZXNzZWQpID8gY19ob3ZlciA6CisJCQkJKHByZXNzZWQgPyBjX3ByZXNzIDogY19jdHJsKSkgOiBjX2JnOworCQkJaW50IGR5ID0gKGJvdW5kcy5oZWlnaHQgLSBibG9jayArIDIpIC8gMjsKKwkJCWlmIChncm91cCA9PSBudWxsKSB7CisJCQkJcGFpbnRSZWN0KGcsIDEsIGR5ICsgMSwgYmxvY2sgLSAyLCBibG9jayAtIDIsCisJCQkJCWJvcmRlciwgZm9yZWdyb3VuZCwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSk7CisJCQl9IGVsc2UgeworCQkJCWcuc2V0Q29sb3IoKGZvcmVncm91bmQgIT0gY19jdHJsKSA/IGZvcmVncm91bmQgOiBjX2JnKTsKKwkJCQlnLmZpbGxPdmFsKDEsIGR5ICsgMSwgYmxvY2sgLSAzLCBibG9jayAtIDMpOyAvL2phdmEKKwkJCQlnLnNldENvbG9yKGJvcmRlcik7CisJCQkJZy5kcmF3T3ZhbCgxLCBkeSArIDEsIGJsb2NrIC0gMywgYmxvY2sgLSAzKTsgLy9qYXZhCisJCQl9CisJCQlpZiAoZm9jdXMpIHsKKwkJCQlnLnNldENvbG9yKGNfZm9jdXMpOworCQkJCWlmIChncm91cCA9PSBudWxsKSB7CisJCQkJCWcuZHJhd1JlY3QoMywgZHkgKyAzLCBibG9jayAtIDcsIGJsb2NrIC0gNyk7CisJCQkJfSBlbHNlIHsKKwkJCQkJZy5kcmF3T3ZhbCgzLCBkeSArIDMsIGJsb2NrIC0gNywgYmxvY2sgLSA3KTsgLy9qYXZhCisJCQkJfQorCQkJfQorCQkJaWYoKCFzZWxlY3RlZCAmJiBpbnNpZGUgJiYgcHJlc3NlZCkgfHwKKwkJCQkJKHNlbGVjdGVkICYmICghaW5zaWRlIHx8ICFwcmVzc2VkKSkpIHsKKwkJCQlnLnNldENvbG9yKGVuYWJsZWQgPyBjX3RleHQgOiBjX2Rpc2FibGUpOworCQkJCWlmIChncm91cCA9PSBudWxsKSB7CisJCQkJCWcuZmlsbFJlY3QoMywgZHkgKyBibG9jayAtIDksIDIsIDYpOworCQkJCQlnLmRyYXdMaW5lKDMsIGR5ICsgYmxvY2sgLSA0LCBibG9jayAtIDQsIGR5ICsgMyk7CisJCQkJCWcuZHJhd0xpbmUoNCwgZHkgKyBibG9jayAtIDQsIGJsb2NrIC0gNCwgZHkgKyA0KTsKKwkJCQl9IGVsc2UgeworCQkJCQlnLmZpbGxPdmFsKDUsIGR5ICsgNSwgYmxvY2sgLSAxMCwgYmxvY2sgLSAxMCk7IC8vamF2YQorCQkJCQlnLmRyYXdPdmFsKDQsIGR5ICsgNCwgYmxvY2sgLSA5LCBibG9jayAtIDkpOyAvL2phdmEKKwkJCQl9CisJCQl9CisJCQlwYWludENvbnRlbnQoY29tcG9uZW50LCBnLCBjbGlweCwgY2xpcHksIGNsaXB3aWR0aCwgY2xpcGhlaWdodCwKKwkJCQlibG9jayArIDMsIDAsIGJvdW5kcy53aWR0aCAtIGJsb2NrIC0gMywgYm91bmRzLmhlaWdodCwKKwkJCQllbmFibGVkID8gY190ZXh0IDogY19kaXNhYmxlLCAibGVmdCIsIHRydWUpOworCQl9CisJCWVsc2UgaWYgKCJjb21ib2JveCIgPT0gY2xhc3NuYW1lKSB7CisJCQlpZiAoZ2V0Qm9vbGVhbihjb21wb25lbnQsICJlZGl0YWJsZSIsIHRydWUpKSB7CisJCQkJSW1hZ2UgaWNvbiA9IGdldEljb24oY29tcG9uZW50LCAiaWNvbiIsIG51bGwpOworCQkJCWludCBsZWZ0ID0gKGljb24gIT0gbnVsbCkgPyBpY29uLmdldFdpZHRoKHRoaXMpIDogMDsKKwkJCQlwYWludEZpZWxkKGcsIGNsaXB4LCBjbGlweSwgY2xpcHdpZHRoLCBjbGlwaGVpZ2h0LCBjb21wb25lbnQsCisJCQkJCWJvdW5kcy53aWR0aCAtIGJsb2NrLCBib3VuZHMuaGVpZ2h0LAorCQkJCQlpbnNpZGUsIHByZXNzZWQsIGZvY3VzLCBlbmFibGVkLCBmYWxzZSwgbGVmdCk7CisJCQkJaWYgKGljb24gIT0gbnVsbCkgeworCQkJCQlnLmRyYXdJbWFnZShpY29uLCAyLCAoYm91bmRzLmhlaWdodCAtIGljb24uZ2V0SGVpZ2h0KHRoaXMpKSAvIDIsIHRoaXMpOyAvL2phdmEKKwkJCQkJLy9taWRwIGcuZHJhd0ltYWdlKGljb24sIDIsIGJvdW5kcy5oZWlnaHQgLyAyLCBHcmFwaGljcy5MRUZUIHwgR3JhcGhpY3MuVkNFTlRFUik7CisJCQkJfQorCQkJCXBhaW50QXJyb3coZywgYm91bmRzLndpZHRoIC0gYmxvY2ssIDAsIGJsb2NrLCBib3VuZHMuaGVpZ2h0LAorCQkJCQknUycsIGVuYWJsZWQsIGluc2lkZSwgcHJlc3NlZCwgImRvd24iLCB0cnVlLCBmYWxzZSwgdHJ1ZSwgdHJ1ZSk7CisJCQl9IGVsc2UgeworCQkJCXBhaW50UmVjdChnLCAwLCAwLCBib3VuZHMud2lkdGgsIGJvdW5kcy5oZWlnaHQsCisJCQkJCWVuYWJsZWQgPyBjX2JvcmRlciA6IGNfZGlzYWJsZSwKKwkJCQkJZW5hYmxlZCA/ICgoaW5zaWRlICE9IHByZXNzZWQpID8gY19ob3ZlciA6CisJCQkJCQkocHJlc3NlZCA/IGNfcHJlc3MgOiBjX2N0cmwpKSA6IGNfYmcsIHRydWUsIHRydWUsIHRydWUsIHRydWUpOworCQkJCXBhaW50Q29udGVudChjb21wb25lbnQsIGcsIGNsaXB4LCBjbGlweSwgY2xpcHdpZHRoLCBjbGlwaGVpZ2h0LAorCQkJCQkyLCAyLCBib3VuZHMud2lkdGggLSBibG9jayAtIDQsIGJvdW5kcy5oZWlnaHQgLSA0LAorCQkJCQllbmFibGVkID8gY190ZXh0IDogY19kaXNhYmxlLCAibGVmdCIsIGZhbHNlKTsKKwkJCQlwYWludEFycm93KGcsIGJvdW5kcy53aWR0aCAtIGJsb2NrLCAwLCBibG9jaywgYm91bmRzLmhlaWdodCwgJ1MnKTsKKwkJCQlpZiAoZm9jdXMpIHsKKwkJCQkJZy5zZXRDb2xvcihjX2ZvY3VzKTsKKwkJCQkJZy5kcmF3UmVjdCgyLCAyLCBib3VuZHMud2lkdGggLSBibG9jayAtIDUsIGJvdW5kcy5oZWlnaHQgLSA1KTsKKwkJCQl9CisJCQl9CisJCX0KKwkJZWxzZSBpZiAoImNvbWJvbGlzdCIgPT0gY2xhc3NuYW1lKSB7CisJCQlSZWN0YW5nbGUgdmlldyA9IGdldFJlY3RhbmdsZShjb21wb25lbnQsICI6dmlldyIpOworCQkJUmVjdGFuZ2xlIHZpZXdwb3J0ID0gZ2V0UmVjdGFuZ2xlKGNvbXBvbmVudCwgIjpwb3J0Iik7CisJCQlnLnNldENvbG9yKGNfYm9yZGVyKTsKKwkJCWcuZHJhd1JlY3Qodmlld3BvcnQueCwgdmlld3BvcnQueSwgdmlld3BvcnQud2lkdGggLSAxLCB2aWV3cG9ydC5oZWlnaHQgLSAxKTsKKwkJCWlmIChwYWludFNjcm9sbFBhbmUoZywgY2xpcHgsIGNsaXB5LCBjbGlwd2lkdGgsIGNsaXBoZWlnaHQsCisJCQkJCWJvdW5kcywgdmlldywgdmlld3BvcnQsIGVuYWJsZWQsIGluc2lkZSwgcHJlc3NlZCkpIHsKKwkJCQlPYmplY3Qgc2VsZWN0ZWQgPSBnZXQoY29tcG9uZW50LCAiaW5zaWRlIik7CisJCQkJaW50IGx5ID0gY2xpcHkgLSB2aWV3cG9ydC55IC0gMTsKKwkJCQlpbnQgeWZyb20gPSB2aWV3LnkgKyBNYXRoLm1heCgwLCBseSk7CisJCQkJaW50IHl0byA9IHZpZXcueSArIE1hdGgubWluKHZpZXdwb3J0LmhlaWdodCAtIDIsIGx5ICsgY2xpcGhlaWdodCk7CisJCQkJZm9yIChPYmplY3QgY2hvaWNlID0gZ2V0KGdldChjb21wb25lbnQsICJjb21ib2JveCIpLCAiY2hvaWNlIik7CisJCQkJCQljaG9pY2UgIT0gbnVsbDsgY2hvaWNlID0gZ2V0KGNob2ljZSwgIjpuZXh0IikpIHsKKwkJCQkJUmVjdGFuZ2xlIHIgPSBnZXRSZWN0YW5nbGUoY2hvaWNlLCAiYm91bmRzIik7CisJCQkJCWlmICh5dG8gPD0gci55KSB7IGJyZWFrOyB9CisJCQkJCWlmICh5ZnJvbSA+PSByLnkgKyByLmhlaWdodCkgeyBjb250aW51ZTsgfQorCQkJCQlib29sZWFuIGFybWVkID0gKHNlbGVjdGVkID09IGNob2ljZSk7CisJCQkJCXBhaW50UmVjdChnLCByLngsIHIueSwgYm91bmRzLndpZHRoIC0gMiwgci5oZWlnaHQsIGNfYm9yZGVyLAorCQkJCQkJYXJtZWQgPyBjX3NlbGVjdCA6IGNfYmcsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKTsKKwkJCQkJcGFpbnRDb250ZW50KGNob2ljZSwgZywgY2xpcHgsIHlmcm9tLCBjbGlwd2lkdGgsIHl0byAtIHlmcm9tLAorCQkJCQkJci54ICsgNCwgci55ICsgMiwgYm91bmRzLndpZHRoIC0gMTAsIHIuaGVpZ2h0IC0gNCwKKwkJCQkJCWdldEJvb2xlYW4oY2hvaWNlLCAiZW5hYmxlZCIsIHRydWUpID8gY190ZXh0IDogY19kaXNhYmxlLCAibGVmdCIsIGZhbHNlKTsKKwkJCQl9CisJCQkJcmVzZXRTY3JvbGxQYW5lKGcsIGNsaXB4LCBjbGlweSwgY2xpcHdpZHRoLCBjbGlwaGVpZ2h0LCB2aWV3LCB2aWV3cG9ydCk7CisJCQl9CisJCQkvL3BhaW50UmVjdChnLCAwLCAwLCBib3VuZHMud2lkdGgsIGJvdW5kcy5oZWlnaHQsCisJCQkvLwlzZWNvbmRhcnkxLCBjX2N0cmwsIHRydWUsIHRydWUsIHRydWUsIHRydWUpOworCQl9CisJCWVsc2UgaWYgKCgidGV4dGZpZWxkIiA9PSBjbGFzc25hbWUpIHx8ICgicGFzc3dvcmRmaWVsZCIgPT0gY2xhc3NuYW1lKSkgeworCQkJcGFpbnRGaWVsZChnLCBjbGlweCwgY2xpcHksIGNsaXB3aWR0aCwgY2xpcGhlaWdodCwgY29tcG9uZW50LAorCQkJCWJvdW5kcy53aWR0aCwgYm91bmRzLmhlaWdodCwKKwkJCQlpbnNpZGUsIHByZXNzZWQsIGZvY3VzLCBlbmFibGVkLCAoInBhc3N3b3JkZmllbGQiID09IGNsYXNzbmFtZSksIDApOworCQl9CisJCWVsc2UgaWYgKCJ0ZXh0YXJlYSIgPT0gY2xhc3NuYW1lKSB7CisJCQlSZWN0YW5nbGUgdmlldyA9IGdldFJlY3RhbmdsZShjb21wb25lbnQsICI6dmlldyIpOworCQkJUmVjdGFuZ2xlIHZpZXdwb3J0ID0gZ2V0UmVjdGFuZ2xlKGNvbXBvbmVudCwgIjpwb3J0Iik7CisJCQlib29sZWFuIGVkaXRhYmxlID0gZ2V0Qm9vbGVhbihjb21wb25lbnQsICJlZGl0YWJsZSIsIHRydWUpOworCQkJcGFpbnRSZWN0KGcsIHZpZXdwb3J0LngsIHZpZXdwb3J0LnksIHZpZXdwb3J0LndpZHRoLCB2aWV3cG9ydC5oZWlnaHQsCisJCQkJZW5hYmxlZCA/IGNfYm9yZGVyIDogY19kaXNhYmxlLCBlZGl0YWJsZSA/IGNfdGV4dGJnIDogY19iZywKKwkJCQl0cnVlLCB0cnVlLCB0cnVlLCB0cnVlKTsKKwkJCWlmIChwYWludFNjcm9sbFBhbmUoZywgY2xpcHgsIGNsaXB5LCBjbGlwd2lkdGgsIGNsaXBoZWlnaHQsCisJCQkJCWJvdW5kcywgdmlldywgdmlld3BvcnQsIGVuYWJsZWQsIGluc2lkZSwgcHJlc3NlZCkpIHsKKwkJCQlTdHJpbmcgdGV4dCA9IGdldFN0cmluZyhjb21wb25lbnQsICJ0ZXh0IiwgIiIpOworCQkJCWludCBzdGFydCA9IGZvY3VzID8gZ2V0SW50ZWdlcihjb21wb25lbnQsICJzdGFydCIsIDApIDogMDsKKwkJCQlpbnQgZW5kID0gZm9jdXMgPyBnZXRJbnRlZ2VyKGNvbXBvbmVudCwgImVuZCIsIDApIDogMDsKKwkJCQlpbnQgaXMgPSBNYXRoLm1pbihzdGFydCwgZW5kKTsgaW50IGllID0gTWF0aC5tYXgoc3RhcnQsIGVuZCk7CisJCQkJYm9vbGVhbiB3cmFwID0gZ2V0Qm9vbGVhbihjb21wb25lbnQsICJ3cmFwIiwgZmFsc2UpOworCQkJCUZvbnRNZXRyaWNzIGZtID0gZy5nZXRGb250TWV0cmljcygpOyAvL2phdmEKKwkJCQlpbnQgZm9udGFzY2VudCA9IGZtLmdldEFzY2VudCgpOyBpbnQgZm9udGhlaWdodCA9IGZtLmdldEhlaWdodCgpOyAvL2phdmEKKwkJCQkvL21pZHAgaW50IGZvbnRoZWlnaHQgPSBmbS5nZXRIZWlnaHQoKTsKKwkJCQlpbnQgYXNjZW50ID0gMTsKKwkJCQlpbnQgbHkgPSBjbGlweSAtIHZpZXdwb3J0LnkgLSAxOworCQkJCWludCB5ZnJvbSA9IHZpZXcueSArIE1hdGgubWF4KDAsIGx5KTsKKwkJCQlpbnQgeXRvID0gdmlldy55ICsgTWF0aC5taW4odmlld3BvcnQuaGVpZ2h0IC0gMiwgbHkgKyBjbGlwaGVpZ2h0KTsKKwkJCQkvL2cuc2V0Q29sb3IoQ29sb3IucGluayk7IGcuZmlsbFJlY3QoMCwgeWZyb20gLSAxLCA3NSwgMik7IGcuZmlsbFJlY3QoMCwgeXRvIC0gMSwgNzUsIDIpOworCisJCQkJYm9vbGVhbiBwcmV2bGV0dGVyID0gZmFsc2U7IGludCBuID0gdGV4dC5sZW5ndGgoKTsgY2hhciBjID0gMDsKKwkJCQlmb3IgKGludCBpID0gMCwgaiA9IC0xLCBrID0gMDsgayA8PSBuOyBrKyspIHsgLy8gaiBpcyB0aGUgbGFzdCBzcGFjZSBpbmRleCAoYmVmb3JlIGspCisJCQkJCWlmICh5dG8gPD0gYXNjZW50KSB7IGJyZWFrOyB9CisJCQkJCWlmICh3cmFwKSB7CisJCQkJCQlpZiAoKChrID09IG4pIHx8ICgoYyA9IHRleHQuY2hhckF0KGspKSA9PSAnXG4nKSB8fCAoYyA9PSAnICcpKSAmJgorCQkJCQkJCQkoaiAgPiBpKSAmJiAoZm0uc3RyaW5nV2lkdGgodGV4dC5zdWJzdHJpbmcoaSwgaykpID4gdmlld3BvcnQud2lkdGggLSA0KSkgeworCQkJCQkJCWstLTsgLy8gZHJhdyBsaW5lIHRvIHRoZSBiZWdpbiBvZiB0aGUgY3VycmVudCB3b3JkICgrIHNwYWNlcykgaWYgaXQgaXMgb3V0IG9mIHdpZHRoCisJCQkJCQl9CisJCQkJCQllbHNlIGlmICgoayA9PSBuKSB8fCAoYyA9PSAnXG4nKSkgeyAvLyBkcmF3IGxpbmUgdG8gdGhlIHRleHQvbGluZSBlbmQKKwkJCQkJCQlqID0gazsgcHJldmxldHRlciA9IGZhbHNlOworCQkJCQkJfQorCQkJCQkJZWxzZSB7CisJCQkJCQkJaWYgKChjID09ICcgJykgJiYgKHByZXZsZXR0ZXIgfHwgKGogPiBpKSkpIHsgaiA9IGs7IH0gLy8ga2VlcCBzcGFjZXMgc3RhcnRpbmcgdGhlIGxpbmUKKwkJCQkJCQlwcmV2bGV0dGVyID0gKGMgIT0gJyAnKTsKKwkJCQkJCQljb250aW51ZTsKKwkJCQkJCX0KKwkJCQkJfQorCQkJCQllbHNlIHsKKwkJCQkJCWlmICgoayA9PSBuKSB8fCAoKGMgPSB0ZXh0LmNoYXJBdChrKSkgPT0gJ1xuJykpIHsgaiA9IGs7IH0gZWxzZSB7IGNvbnRpbnVlOyB9CisJCQkJCX0KKwkJCQkJaWYgKHlmcm9tIDwgYXNjZW50ICsgZm9udGhlaWdodCkgeworCQkJCQkJU3RyaW5nIGxpbmUgPSAoaiAhPSAtMSkgPyB0ZXh0LnN1YnN0cmluZyhpLCBqKSA6IHRleHQuc3Vic3RyaW5nKGkpOyAvL2phdmEKKwkJCQkJCWlmIChmb2N1cyAmJiAoaXMgIT0gaWUpICYmIChpZSA+PSBpKSAmJiAoKGogPT0gLTEpIHx8IChpcyA8PSBqKSkpIHsKKwkJCQkJCQlpbnQgeHMgPSAoaXMgPCBpKSA/IC0xIDogKCgoaiAhPSAtMSkgJiYgKGlzID4gaikpID8gKHZpZXcud2lkdGggLSAxKSA6CisJCQkJCQkJCWZtLnN0cmluZ1dpZHRoKHRleHQuc3Vic3RyaW5nKGksIGlzKSkpOyAvL2phdmEKKwkJCQkJCQkJLy9taWRwIGZvbnQuc3Vic3RyaW5nV2lkdGgodGV4dCwgaSwgaXMgLSBpKSk7CisJCQkJCQkJaW50IHhlID0gKChqICE9IC0xKSAmJiAoaWUgPiBqKSkgPyAodmlldy53aWR0aCAtIDEpIDoKKwkJCQkJCQkJZm0uc3RyaW5nV2lkdGgodGV4dC5zdWJzdHJpbmcoaSwgaWUpKTsgLy9qYXZhCisJCQkJCQkJCS8vbWlkcCBmb250LnN1YnN0cmluZ1dpZHRoKHRleHQsIGksIGllIC0gaSk7CisJCQkJCQkJZy5zZXRDb2xvcihjX3NlbGVjdCk7CisJCQkJCQkJZy5maWxsUmVjdCgxICsgeHMsIGFzY2VudCwgeGUgLSB4cywgZm9udGhlaWdodCk7CisJCQkJCQl9CisJCQkJCQlnLnNldENvbG9yKGVuYWJsZWQgPyBjX3RleHQgOiBjX2Rpc2FibGUpOworCQkJCQkJZy5kcmF3U3RyaW5nKGxpbmUsIDEsIGFzY2VudCArIGZvbnRhc2NlbnQpOyAvL2phdmEKKwkJCQkJCS8vbWlkcCBnLmRyYXdTdWJzdHJpbmcodGV4dCwgaSwgKChqICE9IC0xKSA/IGogOiB0ZXh0Lmxlbmd0aCgpKSAtIGksIDEsIGFzY2VudCwgR3JhcGhpY3MuTEVGVCB8IEdyYXBoaWNzLlRPUCk7CisJCQkJCQlpZiAoZm9jdXMgJiYgKGVuZCA+PSBpKSAmJiAoKGogPT0gLTEpIHx8IChlbmQgPD0gaikpKSB7CisJCQkJCQkJaW50IGNhcmV0ID0gZm0uc3RyaW5nV2lkdGgodGV4dC5zdWJzdHJpbmcoaSwgZW5kKSk7IC8vamF2YQorCQkJCQkJCS8vbWlkcCBpbnQgY2FyZXQgPSBmb250LnN1YnN0cmluZ1dpZHRoKHRleHQsIGksIGVuZCAtIGkpOworCQkJCQkJCWcuc2V0Q29sb3IoY19mb2N1cyk7CisJCQkJCQkJZy5maWxsUmVjdChjYXJldCwgYXNjZW50LCAxLCBmb250aGVpZ2h0KTsKKwkJCQkJCX0KKwkJCQkJfQorCQkJCQlhc2NlbnQgKz0gZm9udGhlaWdodDsKKwkJCQkJaSA9IGogKyAxOworCQkJCX0KKwkJCQlyZXNldFNjcm9sbFBhbmUoZywgY2xpcHgsIGNsaXB5LCBjbGlwd2lkdGgsIGNsaXBoZWlnaHQsIHZpZXcsIHZpZXdwb3J0KTsKKwkJCX0KKwkJfQorCQllbHNlIGlmICgidGFiYmVkcGFuZSIgPT0gY2xhc3NuYW1lKSB7CisJCQlpbnQgaSA9IDA7IFJlY3RhbmdsZSBsYXN0ID0gbnVsbDsKKwkJCWludCBzZWxlY3RlZCA9IGdldEludGVnZXIoY29tcG9uZW50LCAic2VsZWN0ZWQiLCAwKTsKKwkJCVN0cmluZyBwbGFjZW1lbnQgPSBnZXRTdHJpbmcoY29tcG9uZW50LCAicGxhY2VtZW50IiwgInRvcCIpOworCQkJZm9yIChPYmplY3QgY29tcCA9IGdldChjb21wb25lbnQsICJ0YWIiKTsKKwkJCQkJY29tcCAhPSBudWxsOyBjb21wID0gZ2V0KGNvbXAsICI6bmV4dCIpKSB7CisJCQkJUmVjdGFuZ2xlIHIgPSBnZXRSZWN0YW5nbGUoY29tcCwgImJvdW5kcyIpOworCQkJCWJvb2xlYW4gaG92ZXIgPSAhKHNlbGVjdGVkID09IGkpICYmIGluc2lkZSAmJgorCQkJCQkobW91c2VwcmVzc2VkID09IG51bGwpICYmIChpbnNpZGVwYXJ0ID09IGNvbXApOworCQkJCWJvb2xlYW4gc2VsID0gKHNlbGVjdGVkID09IGkpOworCQkJCWJvb2xlYW4gdGFiZW5hYmxlZCA9IGVuYWJsZWQgJiYgZ2V0Qm9vbGVhbihjb21wLCAiZW5hYmxlZCIsIHRydWUpOworCQkJCXBhaW50UmVjdChnLCByLngsIHIueSwgci53aWR0aCwgci5oZWlnaHQsCisJCQkJCWVuYWJsZWQgPyBjX2JvcmRlciA6IGNfZGlzYWJsZSwKKwkJCQkJdGFiZW5hYmxlZCA/IChzZWwgPyBjX2JnIDogKGhvdmVyID8gY19ob3ZlciA6IGNfY3RybCkpIDogY19jdHJsLAorCQkJCQkocGxhY2VtZW50ICE9ICJib3R0b20iKSB8fCAhc2VsLCAocGxhY2VtZW50ICE9ICJyaWdodCIpIHx8ICFzZWwsCisJCQkJCShwbGFjZW1lbnQgPT0gImJvdHRvbSIpIHx8ICgocGxhY2VtZW50ID09ICJ0b3AiKSAmJiAhc2VsKSwKKwkJCQkJKHBsYWNlbWVudCA9PSAicmlnaHQiKSB8fCAoKHBsYWNlbWVudCA9PSAibGVmdCIpICYmICFzZWwpKTsKKwkJCQlpZiAoZm9jdXMgJiYgc2VsKSB7CisJCQkJCWcuc2V0Q29sb3IoY19mb2N1cyk7CisJCQkJCWcuZHJhd1JlY3Qoci54ICsgMiwgci55ICsgMiwgci53aWR0aCAtIDQsIHIuaGVpZ2h0IC0gNCk7CisJCQkJfQorCQkJCXBhaW50Q29udGVudChjb21wLCBnLCBjbGlweCwgY2xpcHksIGNsaXB3aWR0aCwgY2xpcGhlaWdodCwKKwkJCQkJci54ICsgNCwgci55ICsgMiwgci53aWR0aCAtIDgsIHIuaGVpZ2h0IC0gNCwKKwkJCQkJdGFiZW5hYmxlZCA/IGNfdGV4dCA6IGNfZGlzYWJsZSwgImxlZnQiLCB0cnVlKTsKKwkJCQlpKys7IGxhc3QgPSByOworCQkJfQorCQkJaWYgKGxhc3QgIT0gbnVsbCkgeworCQkJCWJvb2xlYW4gaG9yaXpvbnRhbCA9ICgocGxhY2VtZW50ID09ICJ0b3AiKSB8fCAocGxhY2VtZW50ID09ICJib3R0b20iKSk7CisJCQkJcGFpbnRSZWN0KGcsIGhvcml6b250YWwgPyAobGFzdC54ICsgbGFzdC53aWR0aCkgOiBsYXN0LngsCisJCQkJCWhvcml6b250YWwgPyBsYXN0LnkgOiAobGFzdC55ICsgbGFzdC5oZWlnaHQpLAorCQkJCQlob3Jpem9udGFsID8gKGJvdW5kcy53aWR0aCAtIGxhc3QueCAtIGxhc3Qud2lkdGgpIDogbGFzdC53aWR0aCwKKwkJCQkJaG9yaXpvbnRhbCA/IGxhc3QuaGVpZ2h0IDogKGJvdW5kcy5oZWlnaHQgLSBsYXN0LnkgLSBsYXN0LmhlaWdodCksCisJCQkJCWVuYWJsZWQgPyBjX2JvcmRlciA6IGNfZGlzYWJsZSwgY19iZywKKwkJCQkJKHBsYWNlbWVudCAhPSAidG9wIiksIChwbGFjZW1lbnQgIT0gImxlZnQiKSwKKwkJCQkJKHBsYWNlbWVudCA9PSAidG9wIiksIChwbGFjZW1lbnQgPT0gImxlZnQiKSk7CisJCQkJcGFpbnRSZWN0KGcsIChwbGFjZW1lbnQgPT0gImxlZnQiKSA/IGxhc3Qud2lkdGggOiAwLAorCQkJCQkocGxhY2VtZW50ID09ICJ0b3AiKSA/IGxhc3QuaGVpZ2h0IDogMCwKKwkJCQkJaG9yaXpvbnRhbCA/IGJvdW5kcy53aWR0aCA6IChib3VuZHMud2lkdGggLSBsYXN0LndpZHRoKSwKKwkJCQkJaG9yaXpvbnRhbCA/IChib3VuZHMuaGVpZ2h0IC0gbGFzdC5oZWlnaHQpIDogYm91bmRzLmhlaWdodCwKKwkJCQkJZW5hYmxlZCA/IGNfYm9yZGVyIDogY19kaXNhYmxlLCBjX2JnLAorCQkJCQkocGxhY2VtZW50ICE9ICJ0b3AiKSwgKHBsYWNlbWVudCAhPSAibGVmdCIpLAorCQkJCQkocGxhY2VtZW50ICE9ICJib3R0b20iKSwgKHBsYWNlbWVudCAhPSAicmlnaHQiKSk7CQkJCQkKKwkJCX0KKwkJCU9iamVjdCB0YWJjb250ZW50ID0gZ2V0SXRlbUltcGwoY29tcG9uZW50LCAiY29tcG9uZW50Iiwgc2VsZWN0ZWQpOworCQkJaWYgKHRhYmNvbnRlbnQgIT0gbnVsbCkgeworCQkJCXBhaW50KGcsIGNsaXB4LCBjbGlweSwgY2xpcHdpZHRoLCBjbGlwaGVpZ2h0LCB0YWJjb250ZW50LCBlbmFibGVkKTsKKwkJCX0KKwkJfQorCQllbHNlIGlmICgoInBhbmVsIiA9PSBjbGFzc25hbWUpIHx8ICgiZGlhbG9nIiA9PSBjbGFzc25hbWUpKSB7CisJCQlpZiAoImRpYWxvZyIgPT0gY2xhc3NuYW1lKSB7CisJCQkJaW50IHRpdGxlaGVpZ2h0ID0gZ2V0SW50ZWdlcihjb21wb25lbnQsICJ0aXRsZWhlaWdodCIsIDApOworCQkJCXBhaW50UmVjdChnLCAwLCAwLCBib3VuZHMud2lkdGgsIDMgKyB0aXRsZWhlaWdodCwKKwkJCQkJY19ib3JkZXIsIGNfY3RybCwgdHJ1ZSwgdHJ1ZSwgZmFsc2UsIHRydWUpOworCQkJCXBhaW50UmVjdChnLCAwLCAzICsgdGl0bGVoZWlnaHQsIGJvdW5kcy53aWR0aCwgYm91bmRzLmhlaWdodCAtIDMgLSB0aXRsZWhlaWdodCwKKwkJCQkJY19ib3JkZXIsIGNfcHJlc3MsIGZhbHNlLCB0cnVlLCB0cnVlLCB0cnVlKTsKKwkJCQlwYWludENvbnRlbnQoY29tcG9uZW50LCBnLCBjbGlweCwgY2xpcHksIGNsaXB3aWR0aCwgY2xpcGhlaWdodCwKKwkJCQkJMywgMiwgYm91bmRzLndpZHRoIC0gNiwgdGl0bGVoZWlnaHQsIGNfdGV4dCwgImxlZnQiLCBmYWxzZSk7CisJCQkJcGFpbnRSZWN0KGcsIDMsIDMgKyB0aXRsZWhlaWdodCwgYm91bmRzLndpZHRoIC0gNiwgYm91bmRzLmhlaWdodCAtIDYgLSB0aXRsZWhlaWdodCwKKwkJCQkJY19ib3JkZXIsIGNfYmcsIHRydWUsIHRydWUsIHRydWUsIHRydWUpOworCQkJfSBlbHNlIHsKKwkJCQlwYWludFJlY3QoZywgMCwgMCwgYm91bmRzLndpZHRoLCBib3VuZHMuaGVpZ2h0LAorCQkJCQljX2JvcmRlciwgY19iZywgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UpOworCQkJfQorCQkJZm9yIChPYmplY3QgY29tcCA9IGdldChjb21wb25lbnQsICJjb21wb25lbnQiKTsKKwkJCQkJY29tcCAhPSBudWxsOyBjb21wID0gZ2V0KGNvbXAsICI6bmV4dCIpKSB7CisJCQkJcGFpbnQoZywgY2xpcHgsIGNsaXB5LCBjbGlwd2lkdGgsIGNsaXBoZWlnaHQsIGNvbXAsIGVuYWJsZWQpOworCQkJfQorCQl9CisJCWVsc2UgaWYgKCJkZXNrdG9wIiA9PSBjbGFzc25hbWUpIHsKKwkJCXBhaW50UmV2ZXJzZShnLCBjbGlweCwgY2xpcHksIGNsaXB3aWR0aCwgY2xpcGhlaWdodCwKKwkJCQlnZXQoY29tcG9uZW50LCAiY29tcG9uZW50IiksIGVuYWJsZWQpOworCQkJLy9nLnNldENvbG9yKENvbG9yLnJlZCk7IGlmIChjbGlwICE9IG51bGwpIGcuZHJhd1JlY3QoY2xpcHgsIGNsaXB5LCBjbGlwd2lkdGgsIGNsaXBoZWlnaHQpOworCQkJaWYgKHRvb2x0aXBvd25lciAhPSBudWxsKSB7CisJCQkJUmVjdGFuZ2xlIHIgPSBnZXRSZWN0YW5nbGUodG9vbHRpcG93bmVyLCAidG9vbHRpcGJvdW5kcyIpOworCQkJCXBhaW50UmVjdChnLCByLngsIHIueSwgci53aWR0aCwgci5oZWlnaHQsCisJCQkJCWNfYm9yZGVyLCBjX2JnLCB0cnVlLCB0cnVlLCB0cnVlLCB0cnVlKTsKKwkJCQlTdHJpbmcgdGV4dCA9IGdldFN0cmluZyh0b29sdGlwb3duZXIsICJ0b29sdGlwIiwgbnVsbCk7CisJCQkJZy5zZXRDb2xvcihjX3RleHQpOworCQkJCWcuZHJhd1N0cmluZyh0ZXh0LCByLnggKyAyLCByLnkgKyBnLmdldEZvbnRNZXRyaWNzKCkuZ2V0QXNjZW50KCkgKyAyKTsgLy9qYXZhCisJCQkJLy9taWRwIGcuZHJhd1N0cmluZyh0ZXh0LCByLnggKyAyLCByLnkgKyAoci5oZWlnaHQgLSBmb250LmdldEhlaWdodCgpKSAvIDIsIEdyYXBoaWNzLkxFRlQgfCBHcmFwaGljcy5UT1ApOworCQkJfQkJCQorCQl9CisJCWVsc2UgaWYgKCJzcGluYm94IiA9PSBjbGFzc25hbWUpIHsKKwkJCXBhaW50RmllbGQoZywgY2xpcHgsIGNsaXB5LCBjbGlwd2lkdGgsIGNsaXBoZWlnaHQsIGNvbXBvbmVudCwKKwkJCQlib3VuZHMud2lkdGggLSBibG9jaywgYm91bmRzLmhlaWdodCwKKwkJCQlpbnNpZGUsIHByZXNzZWQsIGZvY3VzLCBlbmFibGVkLCBmYWxzZSwgMCk7CisJCQlwYWludEFycm93KGcsIGJvdW5kcy53aWR0aCAtIGJsb2NrLCAwLCBibG9jaywgYm91bmRzLmhlaWdodCAvIDIsCisJCQkJCSdOJywgZW5hYmxlZCwgaW5zaWRlLCBwcmVzc2VkLCAidXAiLCB0cnVlLCBmYWxzZSwgZmFsc2UsIHRydWUpOworCQkJcGFpbnRBcnJvdyhnLCBib3VuZHMud2lkdGggLSBibG9jaywgYm91bmRzLmhlaWdodCAvIDIsCisJCQkJYmxvY2ssIGJvdW5kcy5oZWlnaHQgLSAoYm91bmRzLmhlaWdodCAvIDIpLAorCQkJCSdTJywgZW5hYmxlZCwgaW5zaWRlLCBwcmVzc2VkLCAiZG93biIsIHRydWUsIGZhbHNlLCB0cnVlLCB0cnVlKTsKKwkJfQorCQllbHNlIGlmICgicHJvZ3Jlc3NiYXIiID09IGNsYXNzbmFtZSkgeworCQkJaW50IG1pbmltdW0gPSBnZXRJbnRlZ2VyKGNvbXBvbmVudCwgIm1pbmltdW0iLCAwKTsKKwkJCWludCBtYXhpbXVtID0gZ2V0SW50ZWdlcihjb21wb25lbnQsICJtYXhpbXVtIiwgMTAwKTsKKwkJCWludCB2YWx1ZSA9IGdldEludGVnZXIoY29tcG9uZW50LCAidmFsdWUiLCAwKTsKKwkJCWJvb2xlYW4gaG9yaXpvbnRhbCA9ICgidmVydGljYWwiICE9IGdldChjb21wb25lbnQsICJvcmllbnRhdGlvbiIpKTsKKwkJCWludCBsZW5ndGggPSAodmFsdWUgLSBtaW5pbXVtKSAqCisJCQkJKChob3Jpem9udGFsID8gYm91bmRzLndpZHRoIDogYm91bmRzLmhlaWdodCkgLSAxKSAvIChtYXhpbXVtIC0gbWluaW11bSk7CisJCQlwYWludFJlY3QoZywgMCwgMCwgaG9yaXpvbnRhbCA/IGxlbmd0aCA6IGJvdW5kcy53aWR0aCwKKwkJCQlob3Jpem9udGFsID8gYm91bmRzLmhlaWdodCA6IGxlbmd0aCwgZW5hYmxlZCA/IGNfYm9yZGVyIDogY19kaXNhYmxlLAorCQkJCWNfc2VsZWN0LCB0cnVlLCB0cnVlLCBob3Jpem9udGFsLCAhaG9yaXpvbnRhbCk7CisJCQlwYWludFJlY3QoZywgaG9yaXpvbnRhbCA/IGxlbmd0aCA6IDAsIGhvcml6b250YWwgPyAwIDogbGVuZ3RoLAorCQkJCWhvcml6b250YWwgPyAoYm91bmRzLndpZHRoIC0gbGVuZ3RoKSA6IGJvdW5kcy53aWR0aAksCisJCQkJaG9yaXpvbnRhbCA/IGJvdW5kcy5oZWlnaHQgOiAoYm91bmRzLmhlaWdodCAtIGxlbmd0aCksCisJCQkJZW5hYmxlZCA/IGNfYm9yZGVyIDogY19kaXNhYmxlLCBjX2JnLCB0cnVlLCB0cnVlLCB0cnVlLCB0cnVlKTsKKwkJfQorCQllbHNlIGlmICgic2xpZGVyIiA9PSBjbGFzc25hbWUpIHsKKwkJCWludCBtaW5pbXVtID0gZ2V0SW50ZWdlcihjb21wb25lbnQsICJtaW5pbXVtIiwgMCk7CisJCQlpbnQgbWF4aW11bSA9IGdldEludGVnZXIoY29tcG9uZW50LCAibWF4aW11bSIsIDEwMCk7CisJCQlpbnQgdmFsdWUgPSBnZXRJbnRlZ2VyKGNvbXBvbmVudCwgInZhbHVlIiwgMCk7CisJCQlib29sZWFuIGhvcml6b250YWwgPSAoInZlcnRpY2FsIiAhPSBnZXQoY29tcG9uZW50LCAib3JpZW50YXRpb24iKSk7CisJCQlpbnQgbGVuZ3RoID0gKHZhbHVlIC0gbWluaW11bSkgKgorCQkJCSgoaG9yaXpvbnRhbCA/IGJvdW5kcy53aWR0aCA6IGJvdW5kcy5oZWlnaHQpIC0gYmxvY2spIC8KKwkJCQkobWF4aW11bSAtIG1pbmltdW0pOworCQkJcGFpbnRSZWN0KGcsIGhvcml6b250YWwgPyAwIDogMywgaG9yaXpvbnRhbCA/IDMgOiAwLAorCQkJCWhvcml6b250YWwgPyBsZW5ndGggOiAoYm91bmRzLndpZHRoIC0gNiksCisJCQkJaG9yaXpvbnRhbCA/IChib3VuZHMuaGVpZ2h0IC0gNikgOiBsZW5ndGgsCisJCQkJZW5hYmxlZCA/IGNfYm9yZGVyIDogY19kaXNhYmxlLAorCQkJCWNfYmcsIHRydWUsIHRydWUsIGhvcml6b250YWwsICFob3Jpem9udGFsKTsKKwkJCXBhaW50UmVjdChnLCBob3Jpem9udGFsID8gbGVuZ3RoIDogMCwgaG9yaXpvbnRhbCA/IDAgOiBsZW5ndGgsCisJCQkJaG9yaXpvbnRhbCA/IGJsb2NrIDogYm91bmRzLndpZHRoLCBob3Jpem9udGFsID8gYm91bmRzLmhlaWdodCA6IGJsb2NrLAorCQkJCWVuYWJsZWQgPyBjX2JvcmRlciA6IGNfZGlzYWJsZSwKKwkJCQllbmFibGVkID8gY19jdHJsIDogY19iZywgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSk7CisJCQlpZiAoZm9jdXMpIHsKKwkJCQlnLnNldENvbG9yKGNfZm9jdXMpOworCQkJCWcuZHJhd1JlY3QoaG9yaXpvbnRhbCA/IChsZW5ndGggKyAyKSA6IDIsIGhvcml6b250YWwgPyAyIDogKGxlbmd0aCArIDIpLAorCQkJCQkoaG9yaXpvbnRhbCA/IGJsb2NrIDogYm91bmRzLndpZHRoKSAtIDUsCisJCQkJCShob3Jpem9udGFsID8gYm91bmRzLmhlaWdodCA6IGJsb2NrKSAtIDUpOworCQkJCS8vZy5kcmF3UmVjdChsZW5ndGggKyAxLCAxLCBibG9jayAtIDMsIGJvdW5kcy5oZWlnaHQgLSAzKTsKKwkJCX0KKwkJCXBhaW50UmVjdChnLCBob3Jpem9udGFsID8gKGJsb2NrICsgbGVuZ3RoKSA6IDMsCisJCQkJaG9yaXpvbnRhbCA/IDMgOiAoYmxvY2sgKyBsZW5ndGgpLAorCQkJCWJvdW5kcy53aWR0aCAtIChob3Jpem9udGFsID8gKGJsb2NrICsgbGVuZ3RoKSA6IDYpLAorCQkJCWJvdW5kcy5oZWlnaHQgLSAoaG9yaXpvbnRhbCA/IDYgOiAoYmxvY2sgKyBsZW5ndGgpKSwKKwkJCQllbmFibGVkID8gY19ib3JkZXIgOiBjX2Rpc2FibGUsCisJCQkJY19iZywgaG9yaXpvbnRhbCwgIWhvcml6b250YWwsIHRydWUsIHRydWUpOworCQl9CisJCWVsc2UgaWYgKCJzcGxpdHBhbmUiID09IGNsYXNzbmFtZSkgeworCQkJYm9vbGVhbiBob3Jpem9udGFsID0gKCJ2ZXJ0aWNhbCIgIT0gZ2V0KGNvbXBvbmVudCwgIm9yaWVudGF0aW9uIikpOworCQkJaW50IGRpdmlkZXIgPSBnZXRJbnRlZ2VyKGNvbXBvbmVudCwgImRpdmlkZXIiLCAtMSk7CisJCQlwYWludFJlY3QoZywgaG9yaXpvbnRhbCA/IGRpdmlkZXIgOiAwLCBob3Jpem9udGFsID8gMCA6IGRpdmlkZXIsCisJCQkJaG9yaXpvbnRhbCA/IDUgOiBib3VuZHMud2lkdGgsIGhvcml6b250YWwgPyBib3VuZHMuaGVpZ2h0IDogNSwKKwkJCQljX2JvcmRlciwgY19iZywgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UpOworCQkJZy5zZXRDb2xvcihlbmFibGVkID8gKGZvY3VzID8gY19mb2N1cyA6IGNfYm9yZGVyKSA6IGNfZGlzYWJsZSk7CisJCQlpbnQgeHkgPSBob3Jpem9udGFsID8gYm91bmRzLmhlaWdodCA6IGJvdW5kcy53aWR0aDsKKwkJCWludCB4eTEgPSBNYXRoLm1heCgwLCB4eSAvIDIgLSAxMik7CisJCQlpbnQgeHkyID0gTWF0aC5taW4oeHkgLyAyICsgMTIsIHh5IC0gMSk7CisJCQlmb3IgKGludCBpID0gZGl2aWRlciArIDE7IGkgPCBkaXZpZGVyICsgNDsgaSArPSAyKSB7CisJCQkJaWYgKGhvcml6b250YWwpIHsgZy5kcmF3TGluZShpLCB4eTEsIGksIHh5Mik7IH0KKwkJCQkJZWxzZSB7IGcuZHJhd0xpbmUoeHkxLCBpLCB4eTIsIGkpOyB9CisJCQl9CisJCQlPYmplY3QgY29tcDEgPSBnZXQoY29tcG9uZW50LCAiY29tcG9uZW50Iik7CisJCQlpZiAoY29tcDEgIT0gbnVsbCkgeworCQkJCXBhaW50KGcsIGNsaXB4LCBjbGlweSwgY2xpcHdpZHRoLCBjbGlwaGVpZ2h0LCBjb21wMSwgZW5hYmxlZCk7CisJCQkJT2JqZWN0IGNvbXAyID0gZ2V0KGNvbXAxLCAiOm5leHQiKTsKKwkJCQlpZiAoY29tcDIgIT0gbnVsbCkgeworCQkJCQlwYWludChnLCBjbGlweCwgY2xpcHksIGNsaXB3aWR0aCwgY2xpcGhlaWdodCwgY29tcDIsIGVuYWJsZWQpOworCQkJCX0KKwkJCX0KKwkJfQorCQllbHNlIGlmICgoImxpc3QiID09IGNsYXNzbmFtZSkgfHwKKwkJCQkoInRhYmxlIiA9PSBjbGFzc25hbWUpIHx8ICgidHJlZSIgPT0gY2xhc3NuYW1lKSkgeworCQkJUmVjdGFuZ2xlIHZpZXcgPSBnZXRSZWN0YW5nbGUoY29tcG9uZW50LCAiOnZpZXciKTsKKwkJCVJlY3RhbmdsZSB2aWV3cG9ydCA9IGdldFJlY3RhbmdsZShjb21wb25lbnQsICI6cG9ydCIpOworCQkJaW50W10gY29sdW1ud2lkdGhzID0gbnVsbDsKKwkJCWludCBseCA9IGNsaXB4IC0gdmlld3BvcnQueCAtIDE7CisJCQlpbnQgeGZyb20gPSB2aWV3LnggKyBNYXRoLm1heCgwLCBseCk7CisJCQlpbnQgeHRvID0gdmlldy54ICsgTWF0aC5taW4odmlld3BvcnQud2lkdGggLSAyLCBseCArIGNsaXB3aWR0aCk7CisJCQlpZiAoInRhYmxlIiA9PSBjbGFzc25hbWUpIHsKKwkJCQljb2x1bW53aWR0aHMgPSBuZXcgaW50W2dldEl0ZW1Db3VudEltcGwoY29tcG9uZW50LCAiY29sdW1uIildOworCQkJCWludCBpID0gMDsgaW50IHggPSAwOyBib29sZWFuIGRyYXdoZWFkZXIgPSAoY2xpcHkgPCB2aWV3cG9ydC55KTsKKwkJCQlpZiAoZHJhd2hlYWRlcikgeyBnLnNldENsaXAodmlld3BvcnQueCwgMCwgdmlld3BvcnQud2lkdGgsIHZpZXdwb3J0LnkpOyB9CisJCQkJZm9yIChPYmplY3QgY29sdW1uID0gZ2V0KGNvbXBvbmVudCwgImNvbHVtbiIpOworCQkJCQkJY29sdW1uICE9IG51bGw7IGNvbHVtbiA9IGdldChjb2x1bW4sICI6bmV4dCIpKSB7CisJCQkJCWJvb2xlYW4gbGFzdGNvbHVtbiA9IChpID09IGNvbHVtbndpZHRocy5sZW5ndGggLSAxKTsKKwkJCQkJaW50IHdpZHRoID0gZ2V0SW50ZWdlcihjb2x1bW4sICJ3aWR0aCIsIDgwKTsKKwkJCQkJaWYgKGxhc3Rjb2x1bW4pIHsgd2lkdGggPSBNYXRoLm1heCh3aWR0aCwgdmlld3BvcnQud2lkdGggLSB4KTsgfQorCQkJCQljb2x1bW53aWR0aHNbaV0gPSB3aWR0aDsKKwkJCQkJaWYgKGRyYXdoZWFkZXIgJiYgKHhmcm9tIDwgeCArIHdpZHRoKSAmJiAoeHRvID4geCkpIHsKKwkJCQkJCXBhaW50UmVjdChnLCB4IC0gdmlldy54LCAwLCB3aWR0aCwgdmlld3BvcnQueSwKKwkJCQkJCQllbmFibGVkID8gY19ib3JkZXIgOiBjX2Rpc2FibGUsIGVuYWJsZWQgPyBjX2N0cmwgOiBjX2JnLAorCQkJCQkJCXRydWUsIHRydWUsIGZhbHNlLCBsYXN0Y29sdW1uKTsKKwkJCQkJCXBhaW50Q29udGVudChjb2x1bW4sIGcsIGNsaXB4LCBjbGlweSwgY2xpcHdpZHRoLCBjbGlwaGVpZ2h0LAorCQkJCQkJCXggKyAyIC0gdmlldy54LCAxLCB3aWR0aCAtIDIsCisJCQkJCQkJdmlld3BvcnQueSAtIDIsIGVuYWJsZWQgPyBjX3RleHQgOiBjX2Rpc2FibGUsICJsZWZ0IiwgZmFsc2UpOworCQkJCQl9CisJCQkJCWkrKzsgeCArPSB3aWR0aDsKKwkJCQl9CisJCQkJaWYgKGRyYXdoZWFkZXIpIHsgZy5zZXRDbGlwKGNsaXB4LCBjbGlweSwgY2xpcHdpZHRoLCBjbGlwaGVpZ2h0KTsgfQorCQkJfQorCQkJcGFpbnRSZWN0KGcsIHZpZXdwb3J0LngsIHZpZXdwb3J0LnksIHZpZXdwb3J0LndpZHRoLCB2aWV3cG9ydC5oZWlnaHQsCisJCQkJZW5hYmxlZCA/IGNfYm9yZGVyIDogY19kaXNhYmxlLCBjX3RleHRiZywgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSk7CisJCQlpZiAocGFpbnRTY3JvbGxQYW5lKGcsIGNsaXB4LCBjbGlweSwgY2xpcHdpZHRoLCBjbGlwaGVpZ2h0LCBib3VuZHMsCisJCQkJCXZpZXcsIHZpZXdwb3J0LCBlbmFibGVkLCBpbnNpZGUsIHByZXNzZWQpKSB7CisJCQkJT2JqZWN0IGxlYWQgPSBnZXQoY29tcG9uZW50LCAibGVhZCIpOworCQkJCWludCBseSA9IGNsaXB5IC0gdmlld3BvcnQueSAtIDE7CisJCQkJaW50IHlmcm9tID0gdmlldy55ICsgTWF0aC5tYXgoMCwgbHkpOworCQkJCWludCB5dG8gPSB2aWV3LnkgKyBNYXRoLm1pbih2aWV3cG9ydC5oZWlnaHQgLSAyLCBseSArIGNsaXBoZWlnaHQpOworCQkJCWZvciAoT2JqZWN0IGl0ZW0gPSBnZXQoY29tcG9uZW50LCAoImxpc3QiID09IGNsYXNzbmFtZSkgPyAiaXRlbSIgOgorCQkJCQkJKCgidGFibGUiID09IGNsYXNzbmFtZSkgPyAicm93IiA6ICJub2RlIikpOyBpdGVtICE9IG51bGw7KSB7CisJCQkJCVJlY3RhbmdsZSByID0gZ2V0UmVjdGFuZ2xlKGl0ZW0sICJib3VuZHMiKTsKKwkJCQkJaWYgKGxlYWQgPT0gbnVsbCkgeworCQkJCQkJc2V0KGNvbXBvbmVudCwgImxlYWQiLCBsZWFkID0gaXRlbSk7IC8vIGRyYXcgZmlyc3QgaXRlbSBmb2N1c2VkIHdoZW4gbGVhZCBpcyBudWxsCisJCQkJCX0KKwkJCQkJaWYgKHl0byA8PSByLnkpIHsgYnJlYWs7IH0gLy8gdGhlIGNsaXAgYm91bmRzIGFyZSBhYm92ZQorCisJCQkJCU9iamVjdCBuZXh0ID0gKCJ0cmVlIiA9PSBjbGFzc25hbWUpID8gZ2V0KGl0ZW0sICJub2RlIikgOiBudWxsOworCQkJCQlib29sZWFuIGV4cGFuZGVkID0gKG5leHQgIT0gbnVsbCkgJiYKKwkJCQkJCQlnZXRCb29sZWFuKGl0ZW0sICJleHBhbmRlZCIsIHRydWUpOworCQkJCQlpZiAoeWZyb20gPCByLnkgKyByLmhlaWdodCkgeyAvLyB0aGUgY2xpcCByZWN0YW5nbGUgaXMgbm90IGJlbGxvdyB0aGUgY3VycmVudCBpdGVtCisJCQkJCQlib29sZWFuIHNlbGVjdGVkID0gZ2V0Qm9vbGVhbihpdGVtLCAic2VsZWN0ZWQiLCBmYWxzZSk7CisJCQkJCQlwYWludFJlY3QoZywgMCwgci55LCB2aWV3LndpZHRoLCByLmhlaWdodCwKKwkJCQkJCQljX2JnLCBzZWxlY3RlZCA/IGNfc2VsZWN0IDogY190ZXh0YmcsIGZhbHNlLCBmYWxzZSwgdHJ1ZSwgZmFsc2UpOworCQkJCQkJaWYgKGZvY3VzICYmIChsZWFkID09IGl0ZW0pKSB7CisJCQkJCQkJZy5zZXRDb2xvcihjX2ZvY3VzKTsKKwkJCQkJCQlnLmRyYXdSZWN0KDAsIHIueSwgdmlldy53aWR0aCAtIDEsIHIuaGVpZ2h0IC0gMik7CisJCQkJCQl9CisJCQkJCQlpZiAoInRhYmxlIiA9PSBjbGFzc25hbWUpIHsKKwkJCQkJCQlpbnQgeCA9IDA7IGludCBpID0gMDsKKwkJCQkJCQlmb3IgKE9iamVjdCBjZWxsID0gZ2V0KGl0ZW0sICJjZWxsIik7CisJCQkJCQkJCQljZWxsICE9IG51bGw7IGNlbGwgPSBnZXQoY2VsbCwgIjpuZXh0IikpIHsKKwkJCQkJCQkJaWYgKHh0byA8PSB4KSB7IGJyZWFrOyB9CisJCQkJCQkJCWludCBpd2lkdGggPSAoaSA8IGNvbHVtbndpZHRocy5sZW5ndGgpID8gY29sdW1ud2lkdGhzW2ldIDogODA7CisJCQkJCQkJCWlmICh4ZnJvbSA8IHggKyBpd2lkdGgpIHsKKwkJCQkJCQkJCWJvb2xlYW4gY2VsbGVuYWJsZWQgPSBlbmFibGVkICYmIGdldEJvb2xlYW4oY2VsbCwgImVuYWJsZWQiLCB0cnVlKTsKKwkJCQkJCQkJCXBhaW50Q29udGVudChjZWxsLCBnLCB4ZnJvbSwgeWZyb20sIHh0byAtIHhmcm9tLCB5dG8gLSB5ZnJvbSwKKwkJCQkJCQkJCQlyLnggKyB4ICsgMSwgci55ICsgMSwgaXdpZHRoIC0gMiwgci5oZWlnaHQgLSAzLAorCQkJCQkJCQkJCWNlbGxlbmFibGVkID8gY190ZXh0IDogY19kaXNhYmxlLCAibGVmdCIsIGZhbHNlKTsKKwkJCQkJCQkJfQorCQkJCQkJCQl4ICs9IGl3aWR0aDsgaSsrOworCQkJCQkJCX0KKwkJCQkJCX0gZWxzZSB7CisJCQkJCQkJYm9vbGVhbiBpdGVtZW5hYmxlZCA9IGVuYWJsZWQgJiYgZ2V0Qm9vbGVhbihpdGVtLCAiZW5hYmxlZCIsIHRydWUpOworCQkJCQkJCXBhaW50Q29udGVudChpdGVtLCBnLCB4ZnJvbSwgeWZyb20sIHh0byAtIHhmcm9tLCB5dG8gLSB5ZnJvbSwKKwkJCQkJCQkJci54ICsgMSwgci55ICsgMSwgdmlldy53aWR0aCAtIHIueCAtIDIsCisJCQkJCQkJCXIuaGVpZ2h0IC0gMywgaXRlbWVuYWJsZWQgPyBjX3RleHQgOiBjX2Rpc2FibGUsICJsZWZ0IiwgZmFsc2UpOworCisJCQkJCQkJaWYgKG5leHQgIT0gbnVsbCkgeworCQkJCQkJCQlpbnQgeCA9IHIueCAtIGJsb2NrIC8gMjsKKwkJCQkJCQkJaW50IHkgPSByLnkgKyAoci5oZWlnaHQgLSAxKSAvIDI7CisJCQkJCQkJCS8vZy5kcmF3UmVjdCh4IC0gNCwgeSAtIDQsIDgsIDgpOworCQkJCQkJCQlwYWludFJlY3QoZywgeCAtIDQsIHkgLSA0LCA5LCA5LCBpdGVtZW5hYmxlZCA/IGNfYm9yZGVyIDogY19kaXNhYmxlLAorCQkJCQkJCQkJaXRlbWVuYWJsZWQgPyBjX2N0cmwgOiBjX2JnLCB0cnVlLCB0cnVlLCB0cnVlLCB0cnVlKTsKKwkJCQkJCQkJZy5zZXRDb2xvcihpdGVtZW5hYmxlZCA/IGNfdGV4dCA6IGNfZGlzYWJsZSk7CisJCQkJCQkJCWcuZHJhd0xpbmUoeCAtIDIsIHksIHggKyAyLCB5KTsKKwkJCQkJCQkJaWYgKCFleHBhbmRlZCkgeworCQkJCQkJCQkJZy5kcmF3TGluZSh4LCB5IC0gMiwgeCwgeSArIDIpOworCQkJCQkJCQl9CisJCQkJCQkJfQorCQkJCQkJfQorCQkJCQl9CisJCQkJCWlmICgidHJlZSIgPT0gY2xhc3NuYW1lKSB7CisJCQkJCQlpZiAoKG5leHQgPT0gbnVsbCkgfHwgIWV4cGFuZGVkKSB7CisJCQkJCQkJd2hpbGUgKChpdGVtICE9IGNvbXBvbmVudCkgJiYgKChuZXh0ID0gZ2V0KGl0ZW0sICI6bmV4dCIpKSA9PSBudWxsKSkgeworCQkJCQkJCQlpdGVtID0gZ2V0UGFyZW50KGl0ZW0pOworCQkJCQkJCX0KKwkJCQkJCX0KKwkJCQkJCWl0ZW0gPSBuZXh0OworCQkJCQl9IGVsc2UgeworCQkJCQkJaXRlbSA9IGdldChpdGVtLCAiOm5leHQiKTsKKwkJCQkJfQorCQkJCX0KKwkJCQkvKmlmIChjb2x1bW53aWR0aHMgIT0gbnVsbCkgeworCQkJCQlnLnNldENvbG9yKGNfYmcpOworCQkJCQlmb3IgKGludCBpID0gMCwgY3ggPSAtMTsgaSA8IGNvbHVtbndpZHRocy5sZW5ndGggLSAxOyBpKyspIHsKKwkJCQkJCWN4ICs9IGNvbHVtbndpZHRoc1tpXTsKKwkJCQkJCWcuZHJhd0xpbmUoY3gsIDAsIGN4LCB2aWV3LmhlaWdodCk7CisJCQkJCX0KKwkJCQl9Ki8KKwkJCQlyZXNldFNjcm9sbFBhbmUoZywgY2xpcHgsIGNsaXB5LCBjbGlwd2lkdGgsIGNsaXBoZWlnaHQsIHZpZXcsIHZpZXdwb3J0KTsKKwkJCX0KKwkJfQorCQllbHNlIGlmICgic2VwYXJhdG9yIiA9PSBjbGFzc25hbWUpIHsKKwkJCWcuc2V0Q29sb3IoZW5hYmxlZCA/IGNfYm9yZGVyIDogY19kaXNhYmxlKTsKKwkJCWcuZmlsbFJlY3QoMCwgMCwgYm91bmRzLndpZHRoLCBib3VuZHMuaGVpZ2h0KTsKKwkJfQorCQllbHNlIGlmICgibWVudWJhciIgPT0gY2xhc3NuYW1lKSB7CisJCQlPYmplY3Qgc2VsZWN0ZWQgPSBnZXQoY29tcG9uZW50LCAic2VsZWN0ZWQiKTsKKwkJCWludCBsYXN0eCA9IDA7CisJCQlmb3IgKE9iamVjdCBtZW51ID0gZ2V0KGNvbXBvbmVudCwgIm1lbnUiKTsKKwkJCQkJbWVudSAhPSBudWxsOyBtZW51ID0gZ2V0KG1lbnUsICI6bmV4dCIpKSB7CisJCQkJUmVjdGFuZ2xlIG1iID0gZ2V0UmVjdGFuZ2xlKG1lbnUsICJib3VuZHMiKTsKKwkJCQlpZiAoY2xpcHggKyBjbGlwd2lkdGggPD0gbWIueCkgeyBicmVhazsgfQorCQkJCWlmIChjbGlweCA+PSBtYi54ICsgbWIud2lkdGgpIHsgY29udGludWU7IH0KKwkJCQlib29sZWFuIGFybWVkID0gKHNlbGVjdGVkID09IG1lbnUpOworCQkJCWJvb2xlYW4gaG9vdmVyID0gKHNlbGVjdGVkID09IG51bGwpICYmIChpbnNpZGVwYXJ0ID09IG1lbnUpOworCQkJCXBhaW50UmVjdChnLCBtYi54LCAwLCBtYi53aWR0aCwgYm91bmRzLmhlaWdodCwgZW5hYmxlZCA/IGNfYm9yZGVyIDogY19kaXNhYmxlLAorCQkJCQllbmFibGVkID8gKGFybWVkID8gY19zZWxlY3QgOiAoaG9vdmVyID8gY19ob3ZlciA6IGNfY3RybCkpIDogY19iZywKKwkJCQkJYXJtZWQsIGFybWVkLCB0cnVlLCBhcm1lZCk7CisJCQkJcGFpbnRDb250ZW50KG1lbnUsIGcsIGNsaXB4LCBjbGlweSwgY2xpcHdpZHRoLCBjbGlwaGVpZ2h0LAorCQkJCQltYi54ICsgNCwgMSwgbWIud2lkdGgsIGJvdW5kcy5oZWlnaHQsCisJCQkJCShlbmFibGVkICYmIGdldEJvb2xlYW4obWVudSwgImVuYWJsZWQiLCB0cnVlKSkgPyBjX3RleHQgOiBjX2Rpc2FibGUsCisJCQkJCSJsZWZ0IiwgdHJ1ZSk7CisJCQkJbGFzdHggPSBtYi54ICsgbWIud2lkdGg7CisJCQl9CisJCQlwYWludFJlY3QoZywgbGFzdHgsIDAsIGJvdW5kcy53aWR0aCAtIGxhc3R4LCBib3VuZHMuaGVpZ2h0LAorCQkJCWVuYWJsZWQgPyBjX2JvcmRlciA6IGNfZGlzYWJsZSwgZW5hYmxlZCA/IGNfY3RybCA6IGNfYmcsCisJCQkJZmFsc2UsIGZhbHNlLCB0cnVlLCBmYWxzZSk7CisJCX0KKwkJZWxzZSBpZiAoInBvcHVwbWVudSIgPT0gY2xhc3NuYW1lKSB7CisJCQlwYWludFJlY3QoZywgMCwgMCwgYm91bmRzLndpZHRoLCBib3VuZHMuaGVpZ2h0LAorCQkJCWNfYm9yZGVyLCBjX2JnLCB0cnVlLCB0cnVlLCB0cnVlLCB0cnVlKTsKKwkJCU9iamVjdCBzZWxlY3RlZCA9IGdldChjb21wb25lbnQsICJzZWxlY3RlZCIpOworCQkJZm9yIChPYmplY3QgbWVudSA9IGdldChnZXQoY29tcG9uZW50LCAibWVudSIpLCAibWVudSIpOworCQkJCQltZW51ICE9IG51bGw7IG1lbnUgPSBnZXQobWVudSwgIjpuZXh0IikpIHsKKwkJCQlSZWN0YW5nbGUgciA9IGdldFJlY3RhbmdsZShtZW51LCAiYm91bmRzIik7CisJCQkJaWYgKGNsaXB5ICsgY2xpcGhlaWdodCA8PSByLnkpIHsgYnJlYWs7IH0KKwkJCQlpZiAoY2xpcHkgPj0gci55ICsgci5oZWlnaHQpIHsgY29udGludWU7IH0KKwkJCQlTdHJpbmcgaXRlbWNsYXNzID0gZ2V0Q2xhc3MobWVudSk7CisJCQkJaWYgKGl0ZW1jbGFzcyA9PSAic2VwYXJhdG9yIikgeworCQkJCQlnLnNldENvbG9yKGNfYm9yZGVyKTsKKwkJCQkJZy5maWxsUmVjdChyLngsIHIueSwgYm91bmRzLndpZHRoIC0gMiwgci5oZWlnaHQpOworCQkJCX0gZWxzZSB7CisJCQkJCWJvb2xlYW4gYXJtZWQgPSAoc2VsZWN0ZWQgPT0gbWVudSk7CisJCQkJCWJvb2xlYW4gbWVudWVuYWJsZWQgPSBnZXRCb29sZWFuKG1lbnUsICJlbmFibGVkIiwgdHJ1ZSk7CisJCQkJCXBhaW50UmVjdChnLCByLngsIHIueSwgYm91bmRzLndpZHRoIC0gMiwgci5oZWlnaHQsIGNfYm9yZGVyLAorCQkJCQkJYXJtZWQgPyBjX3NlbGVjdCA6IGNfYmcsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKTsKKwkJCQkJaW50IHR4ID0gci54OworCQkJCQlpZiAoaXRlbWNsYXNzID09ICJjaGVja2JveG1lbnVpdGVtIikgeworCQkJCQkJdHggKz0gYmxvY2sgKyAzOworCQkJCQkJYm9vbGVhbiBjaGVja2VkID0gZ2V0Qm9vbGVhbihtZW51LCAic2VsZWN0ZWQiLCBmYWxzZSk7CisJCQkJCQlTdHJpbmcgZ3JvdXAgPSBnZXRTdHJpbmcobWVudSwgImdyb3VwIiwgbnVsbCk7CisJCQkJCQlnLnRyYW5zbGF0ZShyLnggKyA0LCByLnkgKyAyKTsKKwkJCQkJCWcuc2V0Q29sb3IobWVudWVuYWJsZWQgPyBjX2JvcmRlciA6IGNfZGlzYWJsZSk7CisJCQkJCQlpZiAoZ3JvdXAgPT0gbnVsbCkgeworCQkJCQkJCWcuZHJhd1JlY3QoMSwgMSwgYmxvY2sgLSAzLCBibG9jayAtIDMpOworCQkJCQkJfSBlbHNlIHsKKwkJCQkJCQlnLmRyYXdPdmFsKDEsIDEsIGJsb2NrIC0gMywgYmxvY2sgLSAzKTsgLy9qYXZhCisJCQkJCQl9CisJCQkJCQlpZiAoY2hlY2tlZCkgeworCQkJCQkJCWcuc2V0Q29sb3IobWVudWVuYWJsZWQgPyBjX3RleHQgOiBjX2Rpc2FibGUpOworCQkJCQkJCWlmIChncm91cCA9PSBudWxsKSB7CisJCQkJCQkJCWcuZmlsbFJlY3QoMywgYmxvY2sgLSA5LCAyLCA2KTsKKwkJCQkJCQkJZy5kcmF3TGluZSgzLCBibG9jayAtIDQsIGJsb2NrIC0gNCwgMyk7CisJCQkJCQkJCWcuZHJhd0xpbmUoNCwgYmxvY2sgLSA0LCBibG9jayAtIDQsIDQpOworCQkJCQkJCX0gZWxzZSB7CisJCQkJCQkJCWcuZmlsbE92YWwoNSwgNSwgYmxvY2sgLSAxMCwgYmxvY2sgLSAxMCk7IC8vamF2YQorCQkJCQkJCQlnLmRyYXdPdmFsKDQsIDQsIGJsb2NrIC0gOSwgYmxvY2sgLSA5KTsgLy9qYXZhCisJCQkJCQkJfQorCQkJCQkJfQorCQkJCQkJZy50cmFuc2xhdGUoLXIueCAtIDQsIC1yLnkgLSAyKTsKKwkJCQkJfQorCQkJCQlwYWludENvbnRlbnQobWVudSwgZywgY2xpcHgsIGNsaXB5LCBjbGlwd2lkdGgsIGNsaXBoZWlnaHQsCisJCQkJCQl0eCArIDQsIHIueSArIDIsIGJvdW5kcy53aWR0aCAtIDEwLAorCQkJCQkJci5oZWlnaHQgLSA0LCBtZW51ZW5hYmxlZCA/IGNfdGV4dCA6IGNfZGlzYWJsZSwgImxlZnQiLCB0cnVlKTsKKwkJCQkJaWYgKGl0ZW1jbGFzcyA9PSAibWVudSIpIHsKKwkJCQkJCXBhaW50QXJyb3coZywgci54ICsgYm91bmRzLndpZHRoIC0gYmxvY2ssIHIueSwgYmxvY2ssIHIuaGVpZ2h0LCAnRScpOworCQkJCQl9CisJCQkJfQorCQkJfQorCQl9CisJCS8vamF2YT4KKwkJZWxzZSBpZiAoImJlYW4iID09IGNsYXNzbmFtZSkgeworCQkJCWcuY2xpcFJlY3QoMCwgMCwgYm91bmRzLndpZHRoLCBib3VuZHMuaGVpZ2h0KTsKKwkJCQkoKENvbXBvbmVudCkgZ2V0KGNvbXBvbmVudCwgImJlYW4iKSkucGFpbnQoZyk7CisJCQkJZy5zZXRDbGlwKGNsaXB4LCBjbGlweSwgY2xpcHdpZHRoLCBjbGlwaGVpZ2h0KTsKKwkJfQorCQkvLzxqYXZhCisJCWVsc2UgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigoU3RyaW5nKSBjbGFzc25hbWUpOworCQlnLnRyYW5zbGF0ZSgtYm91bmRzLngsIC1ib3VuZHMueSk7CisJCWNsaXB4ICs9IGJvdW5kcy54OyBjbGlweSArPSBib3VuZHMueTsKKwl9CisKKwkvKioKKwkgKgorCSAqLworCXByaXZhdGUgdm9pZCBwYWludFJldmVyc2UoR3JhcGhpY3MgZywKKwkJCWludCBjbGlweCwgaW50IGNsaXB5LCBpbnQgY2xpcHdpZHRoLCBpbnQgY2xpcGhlaWdodCwKKwkJCU9iamVjdCBjb21wb25lbnQsIGJvb2xlYW4gZW5hYmxlZCkgeworCQlpZiAoY29tcG9uZW50ICE9IG51bGwpIHsKKwkJCVJlY3RhbmdsZSBib3VuZHMgPSBnZXRSZWN0YW5nbGUoY29tcG9uZW50LCAiYm91bmRzIik7CisJCQlpZiAoKGNsaXB4IDwgYm91bmRzLngpIHx8CisJCQkJCShjbGlweCArIGNsaXB3aWR0aCA+IGJvdW5kcy54ICsgYm91bmRzLndpZHRoKSB8fAorCQkJCQkoY2xpcHkgPCBib3VuZHMueSkgfHwKKwkJCQkJKGNsaXB5ICsgY2xpcGhlaWdodCA+IGJvdW5kcy55ICsgYm91bmRzLmhlaWdodCkpIHsKKwkJCQlwYWludFJldmVyc2UoZywgY2xpcHgsIGNsaXB5LCBjbGlwd2lkdGgsIGNsaXBoZWlnaHQsCisJCQkJCWdldChjb21wb25lbnQsICI6bmV4dCIpLCBlbmFibGVkKTsKKwkJCX0KKwkJCXBhaW50KGcsIGNsaXB4LCBjbGlweSwgY2xpcHdpZHRoLCBjbGlwaGVpZ2h0LCBjb21wb25lbnQsIGVuYWJsZWQpOworCQl9CisJfQorCisJLyoqCisJICoKKwkgKi8KKwlwcml2YXRlIHZvaWQgcGFpbnRGaWVsZChHcmFwaGljcyBnLAorCQkJaW50IGNsaXB4LCBpbnQgY2xpcHksIGludCBjbGlwd2lkdGgsIGludCBjbGlwaGVpZ2h0LCBPYmplY3QgY29tcG9uZW50LAorCQkJaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCBib29sZWFuIGluc2lkZSwgYm9vbGVhbiBwcmVzc2VkLAorCQkJYm9vbGVhbiBmb2N1cywgYm9vbGVhbiBlbmFibGVkLCBib29sZWFuIGhpZGRlbiwgaW50IGxlZnQpIHsKKwkJYm9vbGVhbiBlZGl0YWJsZSA9IGdldEJvb2xlYW4oY29tcG9uZW50LCAiZWRpdGFibGUiLCB0cnVlKTsKKwkJcGFpbnRSZWN0KGcsIDAsIDAsIHdpZHRoLCBoZWlnaHQsIGVuYWJsZWQgPyBjX2JvcmRlciA6IGNfZGlzYWJsZSwKKwkJCWVkaXRhYmxlID8gY190ZXh0YmcgOiBjX2JnLCB0cnVlLCB0cnVlLCB0cnVlLCB0cnVlKTsKKwkJZy5jbGlwUmVjdCgxICsgbGVmdCwgMSwgd2lkdGggLSBsZWZ0IC0gMiwgaGVpZ2h0IC0gMik7CisKKwkJU3RyaW5nIHRleHQgPSBnZXRTdHJpbmcoY29tcG9uZW50LCAidGV4dCIsICIiKTsKKwkJaW50IG9mZnNldCA9IGdldEludGVnZXIoY29tcG9uZW50LCAib2Zmc2V0IiwgMCk7CisJCUZvbnRNZXRyaWNzIGZtID0gZy5nZXRGb250TWV0cmljcygpOyAvL2phdmEKKworCQlpbnQgY2FyZXQgPSAwOworCQlpZiAoZm9jdXMpIHsgCisJCQlpbnQgc3RhcnQgPSBnZXRJbnRlZ2VyKGNvbXBvbmVudCwgInN0YXJ0IiwgMCk7IAorCQkJaW50IGVuZCA9IGdldEludGVnZXIoY29tcG9uZW50LCAiZW5kIiwgMCk7CisJCQljYXJldCA9IGhpZGRlbiA/IChmbS5jaGFyV2lkdGgoJyonKSAqIGVuZCkgOgorCQkJCWZtLnN0cmluZ1dpZHRoKHRleHQuc3Vic3RyaW5nKDAsIGVuZCkpOyAvL2phdmEKKwkJCQkvL21pZHAgZm9udC5zdWJzdHJpbmdXaWR0aCh0ZXh0LCAwLCBlbmQpOworCQkJaWYgKHN0YXJ0ICE9IGVuZCkgeworCQkJCWludCBpcyA9IGhpZGRlbiA/IChmbS5jaGFyV2lkdGgoJyonKSAqIHN0YXJ0KSA6CisJCQkJCWZtLnN0cmluZ1dpZHRoKHRleHQuc3Vic3RyaW5nKDAsIHN0YXJ0KSk7IC8vamF2YQorCQkJCQkvL21pZHAgZm9udC5zdWJzdHJpbmdXaWR0aCh0ZXh0LCAwLCBzdGFydCk7CisJCQkJZy5zZXRDb2xvcihjX3NlbGVjdCk7CisJCQkJZy5maWxsUmVjdCgyICsgbGVmdCAtIG9mZnNldCArIE1hdGgubWluKGlzLCBjYXJldCksIDEsCisJCQkJCU1hdGguYWJzKGNhcmV0IC0gaXMpLCBoZWlnaHQgLSAyKTsKKwkJCX0KKwkJfQorCisJCWlmIChmb2N1cykgeworCQkJZy5zZXRDb2xvcihjX2ZvY3VzKTsKKwkJCWcuZmlsbFJlY3QoMSArIGxlZnQgLSBvZmZzZXQgKyBjYXJldCwgMSwgMSwgaGVpZ2h0IC0gMik7CisJCX0KKworCQlnLnNldENvbG9yKGVuYWJsZWQgPyBjX3RleHQgOiBjX2Rpc2FibGUpOworCQlpbnQgZnggPSAyICsgbGVmdCAtIG9mZnNldDsKKwkJaW50IGZ5ID0gKGhlaWdodCArIGZtLmdldEFzY2VudCgpIC0gZm0uZ2V0RGVzY2VudCgpKSAvIDI7IC8vamF2YQorCQkvL21pZHAgaW50IGZ5ID0gKGhlaWdodCAtIGZvbnQuZ2V0SGVpZ2h0KCkpIC8gMjsKKwkJaWYgKGhpZGRlbikgeworCQkJaW50IGZoID0gZm0uY2hhcldpZHRoKCcqJyk7CisJCQlmb3IgKGludCBpID0gdGV4dC5sZW5ndGgoKTsgaSA+IDA7IGktLSkgeworCQkJCWcuZHJhd1N0cmluZygiKiIsIGZ4LCBmeSk7IC8vamF2YQorCQkJCS8vbWlkcCBnLmRyYXdDaGFyKCcqJywgZngsIGZ5LCBHcmFwaGljcy5MRUZUIHwgR3JhcGhpY3MuVE9QKTsKKwkJCQlmeCArPSBmaDsKKwkJCX0KKwkJfSBlbHNlIHsKKwkJCWcuZHJhd1N0cmluZyh0ZXh0LCBmeCwgZnkpOyAvL2phdmEKKwkJCS8vbWlkcCBnLmRyYXdTdHJpbmcodGV4dCwgZngsIGZ5LCBHcmFwaGljcy5MRUZUIHwgR3JhcGhpY3MuVE9QKTsKKwkJfQorCQlnLnNldENsaXAoY2xpcHgsIGNsaXB5LCBjbGlwd2lkdGgsIGNsaXBoZWlnaHQpOworCX0KKworCS8qKgorCSAqCisJICovCisJcHJpdmF0ZSBib29sZWFuIHBhaW50U2Nyb2xsUGFuZShHcmFwaGljcyBnLAorCQkJaW50IGNsaXB4LCBpbnQgY2xpcHksIGludCBjbGlwd2lkdGgsIGludCBjbGlwaGVpZ2h0LCBSZWN0YW5nbGUgYm91bmRzLAorCQkJUmVjdGFuZ2xlIHZpZXcsIFJlY3RhbmdsZSB2aWV3cG9ydCwKKwkJCWJvb2xlYW4gZW5hYmxlZCwgYm9vbGVhbiBpbnNpZGUsIGJvb2xlYW4gcHJlc3NlZCkgeworCQlpZiAoKHZpZXdwb3J0LnkgKyB2aWV3cG9ydC5oZWlnaHQgPCBib3VuZHMuaGVpZ2h0KSAmJgorCQkJCShjbGlweSArIGNsaXBoZWlnaHQgPiB2aWV3cG9ydC55ICsgdmlld3BvcnQuaGVpZ2h0KSkgeyAvLyBuZWVkIGhvcml6b250YWwKKwkJCWludCB4ID0gdmlld3BvcnQueDsKKwkJCWludCB5ID0gdmlld3BvcnQueSArIHZpZXdwb3J0LmhlaWdodDsKKwkJCWludCBoZWlnaHQgPSBib3VuZHMuaGVpZ2h0IC0geTsKKwkJCWludCBidXR0b24gPSBNYXRoLm1pbihibG9jaywgdmlld3BvcnQud2lkdGggLyAyKTsKKwkJCWludCB0cmFjayA9IHZpZXdwb3J0LndpZHRoIC0gKDIgKiBidXR0b24pOyAvL21heCAxMAorCQkJaW50IGtub2IgPSBNYXRoLm1pbih0cmFjaywgTWF0aC5tYXgodHJhY2sgKiAodmlld3BvcnQud2lkdGggLSAyKSAvIHZpZXcud2lkdGgsIDYpKTsKKwkJCWludCBkZWNyZWFzZSA9IHZpZXcueCAqICh0cmFjayAtIGtub2IpIC8KKwkJCQkodmlldy53aWR0aCAtIHZpZXdwb3J0LndpZHRoICsgMik7CisJCQlpbnQgaW5jcmVhc2UgPSB0cmFjayAtIGRlY3JlYXNlIC0ga25vYjsKKwkJCXBhaW50QXJyb3coZywgeCwgeSwgYnV0dG9uLCBoZWlnaHQsCisJCQkJJ1cnLCBlbmFibGVkLCBpbnNpZGUsIHByZXNzZWQsICJsZWZ0IiwgZmFsc2UsIHRydWUsIHRydWUsIGZhbHNlKTsKKwkJCXBhaW50UmVjdChnLCB4ICsgYnV0dG9uLCB5LCBkZWNyZWFzZSwgaGVpZ2h0LAorCQkJCWVuYWJsZWQgPyBjX2JvcmRlciA6IGNfZGlzYWJsZSwgY19iZywgZmFsc2UsIHRydWUsIHRydWUsIGZhbHNlKTsKKwkJCXBhaW50UmVjdChnLCB4ICsgYnV0dG9uICsgZGVjcmVhc2UsIHksIGtub2IsIGhlaWdodCwKKwkJCQllbmFibGVkID8gY19ib3JkZXIgOiBjX2Rpc2FibGUsIGVuYWJsZWQgPyBjX2N0cmwgOiBjX2JnLCBmYWxzZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSk7CisJCQlpbnQgbiA9IE1hdGgubWluKDUsIChrbm9iIC0gNCkgLyAzKTsKKwkJCWcuc2V0Q29sb3IoZW5hYmxlZCA/IGNfYm9yZGVyIDogY19kaXNhYmxlKTsKKwkJCWludCBjeCA9ICh4ICsgYnV0dG9uICsgZGVjcmVhc2UpICsgKGtub2IgKyAyIC0gbiAqIDMpIC8gMjsKKwkJCWZvciAoaW50IGkgPSAwOyBpIDwgbjsgaSsrICkgeworCQkJCWcuZHJhd0xpbmUoY3ggKyBpICogMywgeSArIDIsIGN4ICsgaSAqIDMsIHkgKyBoZWlnaHQgLSA0KTsKKwkJCX0KKwkJCXBhaW50UmVjdChnLCB4ICsgYnV0dG9uICsgZGVjcmVhc2UgKyBrbm9iLCB5LCBpbmNyZWFzZSwgaGVpZ2h0LAorCQkJCWVuYWJsZWQgPyBjX2JvcmRlciA6IGNfZGlzYWJsZSwgY19iZywgZmFsc2UsIGZhbHNlLCB0cnVlLCB0cnVlKTsKKwkJCXBhaW50QXJyb3coZywgeCArIGJ1dHRvbiArIHRyYWNrLCB5LCBidXR0b24sIGhlaWdodCwKKwkJCQknRScsIGVuYWJsZWQsIGluc2lkZSwgcHJlc3NlZCwgInJpZ2h0IiwgZmFsc2UsIGZhbHNlLCB0cnVlLCB0cnVlKTsKKwkJfQorCQlpZiAoKHZpZXdwb3J0LnggKyB2aWV3cG9ydC53aWR0aCA8IGJvdW5kcy53aWR0aCkgJiYKKwkJCQkoY2xpcHggKyBjbGlwd2lkdGggPiB2aWV3cG9ydC54ICsgdmlld3BvcnQud2lkdGgpKSB7IC8vIG5lZWQgdmVydGljYWwKKwkJCWludCB4ID0gdmlld3BvcnQueCArIHZpZXdwb3J0LndpZHRoOworCQkJaW50IHkgPSB2aWV3cG9ydC55OworCQkJaW50IHdpZHRoID0gYm91bmRzLndpZHRoIC0geDsKKwkJCS8vaWYgKHkgPiAwKSB7CisJCQkvLwlwYWludFJlY3QoZywgeCAtIDEsIDAsIHdpZHRoICsgMSwgeSwKKwkJCS8vCQllbmFibGVkID8gY19ib3JkZXIgOiBjX2Rpc2FibGUsIGNfYmcsIGZhbHNlLCB0cnVlLCBmYWxzZSwgZmFsc2UpOworCQkJLy99CisJCQlpbnQgdHJhY2sgPSB2aWV3cG9ydC5oZWlnaHQgLSAoMiAqIGJsb2NrKTsKKwkJCWludCBrbm9iID0gdHJhY2sgKiAodmlld3BvcnQuaGVpZ2h0IC0gMikgLyB2aWV3LmhlaWdodDsKKwkJCWludCBkZWNyZWFzZSA9IHZpZXcueSAqICh0cmFjayAtIGtub2IpIC8KKwkJCQkodmlldy5oZWlnaHQgLSB2aWV3cG9ydC5oZWlnaHQgKyAyKTsKKwkJCWludCBpbmNyZWFzZSA9IHRyYWNrIC0gZGVjcmVhc2UgLSBrbm9iOworCQkJcGFpbnRBcnJvdyhnLCB4LCB5LCB3aWR0aCwgYmxvY2ssCisJCQkJJ04nLCBlbmFibGVkLCBpbnNpZGUsIHByZXNzZWQsICJ1cCIsIHRydWUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSk7CisJCQlwYWludFJlY3QoZywgeCwgeSArIGJsb2NrLCB3aWR0aCwgZGVjcmVhc2UsCisJCQkJZW5hYmxlZCA/IGNfYm9yZGVyIDogY19kaXNhYmxlLCBjX2JnLCB0cnVlLCBmYWxzZSwgZmFsc2UsIHRydWUpOworCQkJcGFpbnRSZWN0KGcsIHgsIHkgKyBibG9jayArIGRlY3JlYXNlLCB3aWR0aCwga25vYiwKKwkJCQllbmFibGVkID8gY19ib3JkZXIgOiBjX2Rpc2FibGUsIGVuYWJsZWQgPyBjX2N0cmwgOiBjX2JnLCB0cnVlLCBmYWxzZSwgdHJ1ZSwgdHJ1ZSk7CisJCQlpbnQgbiA9IE1hdGgubWluKDUsIChrbm9iIC0gNCkgLyAzKTsKKwkJCWcuc2V0Q29sb3IoZW5hYmxlZCA/IGNfYm9yZGVyIDogY19kaXNhYmxlKTsKKwkJCWludCBjeSA9ICh5ICsgYmxvY2sgKyBkZWNyZWFzZSkgKyAoa25vYiArIDIgLSBuICogMykgLyAyOworCQkJZm9yIChpbnQgaSA9IDA7IGkgPCBuOyBpKysgKSB7CisJCQkJZy5kcmF3TGluZSh4ICsgMiwgY3kgKyBpICogMywgeCArIHdpZHRoIC0gNCwgY3kgKyBpICogMyk7CisJCQl9CisJCQlwYWludFJlY3QoZywgeCwgeSArIGJsb2NrICsgZGVjcmVhc2UgKyBrbm9iLCB3aWR0aCwgaW5jcmVhc2UsCisJCQkJZW5hYmxlZCA/IGNfYm9yZGVyIDogY19kaXNhYmxlLCBjX2JnLCBmYWxzZSwgZmFsc2UsIHRydWUsIHRydWUpOworCQkJcGFpbnRBcnJvdyhnLCB4LCB5ICsgYmxvY2sgKyB0cmFjaywgd2lkdGgsIGJsb2NrLAorCQkJJ1MnLCBlbmFibGVkLCBpbnNpZGUsIHByZXNzZWQsICJkb3duIiwgZmFsc2UsIGZhbHNlLCB0cnVlLCB0cnVlKTsKKwkJfQorCQlpZiAoKGNsaXB4ICsgY2xpcHdpZHRoID4gdmlld3BvcnQueCkgJiYgKGNsaXB5ICsgY2xpcGhlaWdodCA+IHZpZXdwb3J0LnkpICYmCisJCQkJKGNsaXB4IDwgdmlld3BvcnQueCArIHZpZXdwb3J0LndpZHRoKSAmJiAoY2xpcHkgPCB2aWV3cG9ydC55ICsgdmlld3BvcnQuaGVpZ2h0KSkgeworCQkJZy5jbGlwUmVjdCh2aWV3cG9ydC54ICsgMSwgdmlld3BvcnQueSArIDEsIHZpZXdwb3J0LndpZHRoIC0gMiwgdmlld3BvcnQuaGVpZ2h0IC0gMik7CisJCQlnLnRyYW5zbGF0ZSh2aWV3cG9ydC54ICsgMSAtIHZpZXcueCwgdmlld3BvcnQueSArIDEgLSB2aWV3LnkpOworCSAJCXJldHVybiB0cnVlOworCQl9CisJCXJldHVybiBmYWxzZTsKKwl9CisJCQorCS8qKgorCSAqCisJICovCisJcHJpdmF0ZSB2b2lkIHJlc2V0U2Nyb2xsUGFuZShHcmFwaGljcyBnLAorCQkJaW50IGNsaXB4LCBpbnQgY2xpcHksIGludCBjbGlwd2lkdGgsIGludCBjbGlwaGVpZ2h0LAorCQkJUmVjdGFuZ2xlIHZpZXcsIFJlY3RhbmdsZSB2aWV3cG9ydCkgeworCQlnLnRyYW5zbGF0ZSh2aWV3LnggLSB2aWV3cG9ydC54IC0gMSwgdmlldy55IC0gdmlld3BvcnQueSAtIDEpOworCQlnLnNldENsaXAoY2xpcHgsIGNsaXB5LCBjbGlwd2lkdGgsIGNsaXBoZWlnaHQpOworCX0KKworCS8qKgorCSAqCisJICovCisJcHJpdmF0ZSB2b2lkIHBhaW50UmVjdChHcmFwaGljcyBnLCBpbnQgeCwgaW50IHksIGludCB3aWR0aCwgaW50IGhlaWdodCwKKwkJCUNvbG9yIGJvcmRlciwgQ29sb3IgYmcsCisJCQlib29sZWFuIHRvcCwgYm9vbGVhbiBsZWZ0LCBib29sZWFuIGJvdHRvbSwgYm9vbGVhbiByaWdodCkgeworCQlpZiAoKHdpZHRoIDw9IDApIHx8IChoZWlnaHQgPD0gMCkpIHJldHVybjsKKwkJZy5zZXRDb2xvcihib3JkZXIpOworCQlpZiAodG9wKSB7CisJCQlnLmRyYXdMaW5lKHggKyB3aWR0aCAtIDEsIHksIHgsIHkpOworCQkJeSsrOyBoZWlnaHQtLTsgaWYgKGhlaWdodCA8PSAwKSByZXR1cm47CisJCX0KKwkJaWYgKGxlZnQpIHsKKwkJCWcuZHJhd0xpbmUoeCwgeSwgeCwgeSArIGhlaWdodCAtIDEpOworCQkJeCsrOyB3aWR0aC0tOyBpZiAod2lkdGggPD0gMCkgcmV0dXJuOworCQl9CisJCWlmIChib3R0b20pIHsKKwkJCWcuZHJhd0xpbmUoeCwgeSArIGhlaWdodCAtIDEsIHggKyB3aWR0aCAtIDEsIHkgKyBoZWlnaHQgLSAxKTsKKwkJCWhlaWdodC0tOyBpZiAoaGVpZ2h0IDw9IDApIHJldHVybjsKKwkJfQorCQlpZiAocmlnaHQpIHsKKwkJCWcuZHJhd0xpbmUoeCArIHdpZHRoIC0gMSwgeSArIGhlaWdodCAtIDEsIHggKyB3aWR0aCAtIDEsIHkpOworCQkJd2lkdGgtLTsgaWYgKHdpZHRoIDw9IDApIHJldHVybjsKKwkJfQorCisJCS8vamF2YT4KKwkJaWYgKGJnID09IGNfY3RybCkgeworCQkJaWYgKGhlaWdodCA+IGJsb2NrKSB7CisJCQkJZy5zZXRDb2xvcihjX2JnKTsKKwkJCQlnLmZpbGxSZWN0KHgsIHksIHdpZHRoLCBoZWlnaHQgLSBibG9jayk7CisJCQl9CisJCQlmb3IgKGludCBpID0gMDsgaSA8IHdpZHRoOyBpICs9IGJsb2NrKSB7CisJCQkJZy5kcmF3SW1hZ2UoZ3JhZGllbnQsIHggKyBpLCAoaGVpZ2h0ID4gYmxvY2spID8gKHkgKyBoZWlnaHQgLSBibG9jaykgOiB5LAorCQkJCQl4ICsgTWF0aC5taW4oaSArIGJsb2NrLCB3aWR0aCksIHkgKyBoZWlnaHQsCisJCQkJCTAsIDAsIE1hdGgubWluKGJsb2NrLCB3aWR0aCAtIGkpLCBNYXRoLm1pbihibG9jaywgaGVpZ2h0KSwgbnVsbCk7CisJCQl9CisJCQkvKmlmICh3aWR0aCA+IGJsb2NrKSB7CisJCQkJZy5zZXRDb2xvcihjX2JnKTsKKwkJCQlnLmZpbGxSZWN0KHgsIHksIHdpZHRoIC0gYmxvY2ssIGhlaWdodCk7CisJCQl9CisJCQlmb3IgKGludCBpID0gMDsgaSA8IGhlaWdodDsgaSArPSBibG9jaykgeworCQkJCWcuZHJhd0ltYWdlKGdyYWRpZW50LCAod2lkdGggPiBibG9jaykgPyAoeCArIHdpZHRoIC0gYmxvY2spIDogeCwgeSArIGksCisJCQkJCXggKyB3aWR0aCwgeSArIE1hdGgubWluKGkgKyBibG9jaywgaGVpZ2h0KSwKKwkJCQkJMCwgMCwgTWF0aC5taW4oYmxvY2ssIHdpZHRoKSwgTWF0aC5taW4oYmxvY2ssIGhlaWdodCAtIGkpLCBudWxsKTsKKwkJCX0qLworCQl9CisJCWVsc2UgeworCQkJZy5zZXRDb2xvcihiZyk7CisJCQlnLmZpbGxSZWN0KHgsIHksIHdpZHRoLCBoZWlnaHQpOworCQl9CisJCS8vPGphdmEKKwkJLy9taWRwIGcuc2V0Q29sb3IoYmcpOworCQkvL21pZHAgZy5maWxsUmVjdCh4LCB5LCB3aWR0aCwgaGVpZ2h0KTsKKwl9CisKKwkvKioKKwkgKgorCSAqLworCXByaXZhdGUgdm9pZCBwYWludEFycm93KEdyYXBoaWNzIGcsIGludCB4LCBpbnQgeSwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0LAorCQkJY2hhciBkaXIsIGJvb2xlYW4gZW5hYmxlZCwgYm9vbGVhbiBpbnNpZGUsIGJvb2xlYW4gcHJlc3NlZCwgU3RyaW5nIHBhcnQsCisJCQlib29sZWFuIHRvcCwgYm9vbGVhbiBsZWZ0LCBib29sZWFuIGJvdHRvbSwgYm9vbGVhbiByaWdodCkgeworCQlpbnNpZGUgPSBpbnNpZGUgJiYgKGluc2lkZXBhcnQgPT0gcGFydCk7CisJCXByZXNzZWQgPSBwcmVzc2VkICYmIChwcmVzc2VkcGFydCA9PSBwYXJ0KTsKKwkJcGFpbnRSZWN0KGcsIHgsIHksIHdpZHRoLCBoZWlnaHQsIGVuYWJsZWQgPyBjX2JvcmRlciA6IGNfZGlzYWJsZSwKKwkJCWVuYWJsZWQgPyAoKGluc2lkZSAhPSBwcmVzc2VkKSA/IGNfaG92ZXIgOgorCQkJCShwcmVzc2VkID8gY19wcmVzcyA6IGNfY3RybCkpIDogY19iZywKKwkJCXRvcCwgbGVmdCwgYm90dG9tLCByaWdodCk7CisJCWcuc2V0Q29sb3IoZW5hYmxlZCA/IGNfdGV4dCA6IGNfZGlzYWJsZSk7CisJCXBhaW50QXJyb3coZywgeCwgeSwgd2lkdGgsIGhlaWdodCwgZGlyKTsKKwl9CisKKwkvKioKKwkgKgorCSAqLworCXByaXZhdGUgdm9pZCBwYWludEFycm93KEdyYXBoaWNzIGcsCisJCQlpbnQgeCwgaW50IHksIGludCB3aWR0aCwgaW50IGhlaWdodCwgY2hhciBkaXIpIHsKKwkJaW50IGN4ID0geCArIHdpZHRoIC8gMiAtIDI7CisJCWludCBjeSA9IHkgKyBoZWlnaHQgLyAyIC0gMjsKKwkJZm9yIChpbnQgaSA9IDA7IGkgPCA0OyBpKyspIHsKKwkJCWlmIChkaXIgPT0gJ04nKSB7IC8vIG5vcnRoCisJCQkJZy5kcmF3TGluZShjeCArIDEgLSBpLCBjeSArIGksIGN4ICsgMS8qMiovICsgaSwgY3kgKyBpKTsKKwkJCX0KKwkJCWVsc2UgaWYgKGRpciA9PSAnVycpIHsgLy8gd2VzdAorCQkJCWcuZHJhd0xpbmUoY3ggKyBpLCBjeSArIDEgLSBpLCBjeCArIGksIGN5ICsgMS8qMiovICsgaSk7CisJCQl9CisJCQllbHNlIGlmIChkaXIgPT0gJ1MnKSB7IC8vIHNvdXRoCisJCQkJZy5kcmF3TGluZShjeCArIDEgLSBpLCBjeSArIDQgLSBpLCBjeCArIDEvKjIqLyArIGksIGN5ICsgNCAtIGkpOworCQkJfQorCQkJZWxzZSB7IC8vIGVhc3QKKwkJCQlnLmRyYXdMaW5lKGN4ICsgNCAtIGksIGN5ICsgMSAtIGksIGN4ICsgNCAtIGksIGN5ICsgMS8qMiovICsgaSk7CisJCQl9CisJCX0KKwl9CisKKwkvKioKKwkgKgorCSAqLworCXByaXZhdGUgdm9pZCBwYWludENvbnRlbnQoT2JqZWN0IGNvbXBvbmVudCwgR3JhcGhpY3MgZywKKwkJCWludCBjbGlweCwgaW50IGNsaXB5LCBpbnQgY2xpcHdpZHRoLCBpbnQgY2xpcGhlaWdodCwKKwkJCWludCB4LCBpbnQgeSwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCBDb2xvciBmZywgU3RyaW5nIGRlZmF1bHRhbGlnbm1lbnQsCisJCQlib29sZWFuIGNoZWNrbW5lbW9uaWMpIHsKKwkJU3RyaW5nIHRleHQgPSBnZXRTdHJpbmcoY29tcG9uZW50LCAidGV4dCIsIG51bGwpOworCQlJbWFnZSBpY29uID0gZ2V0SWNvbihjb21wb25lbnQsICJpY29uIiwgbnVsbCk7CisJCWlmICgodGV4dCA9PSBudWxsKSAmJiAoaWNvbiA9PSBudWxsKSkgeyByZXR1cm47IH0KKwkJU3RyaW5nIGFsaWdubWVudCA9IGdldFN0cmluZyhjb21wb25lbnQsICJhbGlnbm1lbnQiLCBkZWZhdWx0YWxpZ25tZW50KTsKKworCQlGb250TWV0cmljcyBmbSA9IG51bGw7IC8vamF2YQorCQlpbnQgdHcgPSAwLCB0aCA9IDA7CisJCWludCB0YSA9IDA7IC8vamF2YQorCQlpZiAodGV4dCAhPSBudWxsKSB7CisJCQlmbSA9IGcuZ2V0Rm9udE1ldHJpY3MoKTsgLy9qYXZhCisJCQl0dyA9IGZtLnN0cmluZ1dpZHRoKHRleHQpOworCQkJdGEgPSBmbS5nZXRBc2NlbnQoKTsgLy9qYXZhCisJCQl0aCA9IGZtLmdldERlc2NlbnQoKSArIHRhOyAvL2phdmEKKwkJCS8vbWlkcCB0aCA9IGZvbnQuZ2V0SGVpZ2h0KCk7CisJCQlnLnNldENvbG9yKGZnKTsKKwkJfQorCQlpbnQgaXcgPSAwLCBpaCA9IDA7CisJCWlmIChpY29uICE9IG51bGwpIHsKKwkJCWl3ID0gaWNvbi5nZXRXaWR0aCh0aGlzKTsKKwkJCWloID0gaWNvbi5nZXRIZWlnaHQodGhpcyk7IC8vamF2YQorCQl9CisKKwkJYm9vbGVhbiBjbGlwcGVkID0gKHR3ICsgaXcgPiB3aWR0aCkgfHwgKHRoID4gaGVpZ2h0KSB8fCAoaWggPiBoZWlnaHQpOworCQlpbnQgY3ggPSB4OworCQlpZiAoImNlbnRlciIgPT0gYWxpZ25tZW50KSB7IGN4ICs9ICh3aWR0aCAtIHR3IC0gaXcpIC8gMjsgfQorCQkJZWxzZSBpZiAoInJpZ2h0IiA9PSBhbGlnbm1lbnQpIHsgY3ggKz0gd2lkdGggLSB0dyAtIGl3OyB9CisKKwkJaWYgKGNsaXBwZWQpIHsgZy5jbGlwUmVjdCh4LCB5LCB3aWR0aCwgaGVpZ2h0KTsgfQorCQlpZiAoaWNvbiAhPSBudWxsKSB7CisJCQlnLmRyYXdJbWFnZShpY29uLCBjeCwgeSArIChoZWlnaHQgLSBpaCkgLyAyLCB0aGlzKTsgLy9qYXZhCisJCQkvL21pZHAgZy5kcmF3SW1hZ2UoaWNvbiwgY3gsIHkgKyBoZWlnaHQgLyAyLCBHcmFwaGljcy5MRUZUIHwgR3JhcGhpY3MuVkNFTlRFUik7CisJCQljeCArPSBpdzsKKwkJfQorCQlpZiAodGV4dCAhPSBudWxsKSB7CisJCQlpbnQgdHkgPSB5ICsgKGhlaWdodCAtIHRoKSAvIDIgKyB0YTsgLy9qYXZhCisJCQlnLmRyYXdTdHJpbmcodGV4dCwgY3gsIHR5KTsgLy9qYXZhCisJCQkvL21pZHAgZy5kcmF3U3RyaW5nKHRleHQsIGN4LCB5ICsgKGhlaWdodCAtIHRoKSAvIDIsIEdyYXBoaWNzLkxFRlQgfCBHcmFwaGljcy5UT1ApOworCQkJaWYgKGNoZWNrbW5lbW9uaWMpIHsKKwkJCQlpbnQgbW5lbW9uaWMgPSBnZXRJbnRlZ2VyKGNvbXBvbmVudCwgIm1uZW1vbmljIiwgLTEpOworCQkJCWlmICgobW5lbW9uaWMgIT0gLTEpICYmIChtbmVtb25pYyA8IHRleHQubGVuZ3RoKCkpKSB7CisJCQkJCWludCBteCA9IGN4ICsgZm0uc3RyaW5nV2lkdGgodGV4dC5zdWJzdHJpbmcoMCwgbW5lbW9uaWMpKTsgLy9qYXZhCisJCQkJCS8vbWlkcCBpbnQgbXggPSBjeCArIGZvbnQuc3Vic3RyaW5nV2lkdGgodGV4dCwgMCwgbW5lbW9uaWMpOworCQkJCQkvL21pZHAgaW50IHR5ID0gKGhlaWdodCArIHRoKSAvIDI7CisJCQkJCWcuZHJhd0xpbmUobXgsIHR5ICsgMSwgbXggKyBmbS5jaGFyV2lkdGgodGV4dC5jaGFyQXQobW5lbW9uaWMpKSwgdHkgKyAxKTsKKwkJCQl9CisJCQl9CisJCX0KKwkJaWYgKGNsaXBwZWQpIHsgZy5zZXRDbGlwKGNsaXB4LCBjbGlweSwgY2xpcHdpZHRoLCBjbGlwaGVpZ2h0KTsgfQorCX0KKwkvL21pZHAgcHJpdmF0ZSB2b2lkIHNldFRpbWVyKGxvbmcgZGVsYXkpIHt9CisJLy9qYXZhPgorCisJLyoqCisJICoKKwkgKi8KKwlwdWJsaWMgc3luY2hyb25pemVkIHZvaWQgcnVuKCkgeworCQl3aGlsZSAodGltZXIgPT0gVGhyZWFkLmN1cnJlbnRUaHJlYWQoKSkgeworCQkJdHJ5IHsKKwkJCQlpZiAod2F0Y2ggPT0gMCkgeworCQkJCQl3YWl0KDApOworCQkJCX0gZWxzZSB7CisJCQkJCWxvbmcgY3VycmVudCA9IFN5c3RlbS5jdXJyZW50VGltZU1pbGxpcygpOworCQkJCQlpZiAod2F0Y2ggPiBjdXJyZW50KSB7CisJCQkJCQl3YWl0KHdhdGNoIC0gY3VycmVudCk7CisJCQkJCX0gZWxzZSB7CisJCQkJCQl3YXRjaCA9IDA7CisJCQkJCQlpZiAoKHdhdGNoZGVsYXkgPT0gMzAwTCkgfHwgKHdhdGNoZGVsYXkgPT0gNjBMKSkgeworCQkJCQkJCWlmIChwcm9jZXNzU2Nyb2xsKG1vdXNlcHJlc3NlZCwgcHJlc3NlZHBhcnQpKSB7IHNldFRpbWVyKDYwTCk7IH0KKwkJCQkJCX0gZWxzZSBpZiAoKHdhdGNoZGVsYXkgPT0gMzc1TCkgfHwgKHdhdGNoZGVsYXkgPT0gNzVMKSkgeworCQkJCQkJCWlmIChwcm9jZXNzU3Bpbihtb3VzZXByZXNzZWQsIHByZXNzZWRwYXJ0KSkgeyBzZXRUaW1lcig3NUwpOyB9CisJCQkJCQl9IGVsc2UgaWYgKHdhdGNoZGVsYXkgPT0gNzUwTCkgeworCQkJCQkJCS8vU3lzdGVtLm91dC5wcmludGxuKCI+IHRpcDogIiArIGdldENsYXNzKG1vdXNlaW5zaWRlKSArICIgOiAiICsgKChpbnNpZGVwYXJ0IGluc3RhbmNlb2YgT2JqZWN0W10pID8gZ2V0Q2xhc3MoaW5zaWRlcGFydCkgOiBpbnNpZGVwYXJ0KSk7CisJCQkJCQkJc2hvd1RpcCgpOworCQkJCQkJfQorCQkJCQl9CisJCQkJfQorCQkJfSBjYXRjaCAoSW50ZXJydXB0ZWRFeGNlcHRpb24gaWUpIHt9IC8vaWUucHJpbnRTdGFja1RyYWNlKCk7CisJCX0KKwl9CisKKwkvKioKKwkgKgorCSAqLworCXByaXZhdGUgdm9pZCBzZXRUaW1lcihsb25nIGRlbGF5KSB7CisJCXdhdGNoZGVsYXkgPSBkZWxheTsKKwkJaWYgKGRlbGF5ID09IDApIHsKKwkJCXdhdGNoID0gMDsKKwkJfSBlbHNlIHsKKwkJCWxvbmcgcHJldiA9IHdhdGNoOworCQkJd2F0Y2ggPSBTeXN0ZW0uY3VycmVudFRpbWVNaWxsaXMoKSArIGRlbGF5OworCQkJaWYgKHRpbWVyID09IG51bGwpIHsKKwkJCQl0aW1lciA9IG5ldyBUaHJlYWQodGhpcyk7CisJCQkJdGltZXIuc2V0UHJpb3JpdHkoVGhyZWFkLk1JTl9QUklPUklUWSk7CisJCQkJdGltZXIuc2V0RGFlbW9uKHRydWUpOworCQkJCXRpbWVyLnN0YXJ0KCk7CisJCQl9CisJCQlpZiAoKHByZXYgPT0gMCkgfHwgKHdhdGNoIDwgcHJldikpIHsKKwkJCQlzeW5jaHJvbml6ZWQgKHRoaXMpIHsgbm90aWZ5KCk7IH0gLy90cnkge31jYXRjaCAoSWxsZWdhbE1vbml0b3JTdGF0ZUV4Y2VwdGlvbiBpbXNlKSB7fQorCQkJfQorCQl9CisJfQorCisJLyoqCisJICoKKwkgKi8KKwlwdWJsaWMgYm9vbGVhbiBpc0ZvY3VzVHJhdmVyc2FibGUoKSB7CisJCXJldHVybiB0cnVlOworCX0KKworCS8vPGphdmEKKwkvKm1pZHAKKwlwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgTU9VU0VfRU5URVJFRCA9IDE7CisJcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IE1PVVNFX0VYSVRFRCA9IDI7IC8vCisJcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IE1PVVNFX1BSRVNTRUQgPSAzOworCXByaXZhdGUgc3RhdGljIGZpbmFsIGludCBNT1VTRV9EUkFHR0VEID0gNDsKKwlwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgTU9VU0VfUkVMRUFTRUQgPSA1OworCXByaXZhdGUgc3RhdGljIGZpbmFsIGludCBEUkFHX0VOVEVSRUQgPSA2OworCXByaXZhdGUgc3RhdGljIGZpbmFsIGludCBEUkFHX0VYSVRFRCA9IDc7CisKKwlwcm90ZWN0ZWQgdm9pZCBwb2ludGVyUHJlc3NlZChpbnQgeCwgaW50IHkpIHsKKwkJZmluZENvbXBvbmVudChjb250ZW50LCB4LCB5KTsKKwkJaWYgKHBvcHVwb3duZXIgIT0gbnVsbCkgeworCQkJU3RyaW5nIGNsYXNzbmFtZSA9IGdldENsYXNzKG1vdXNlaW5zaWRlKTsKKwkJCWlmICgocG9wdXBvd25lciAhPSBtb3VzZWluc2lkZSkgJiYKKwkJCQkJKGNsYXNzbmFtZSAhPSAicG9wdXBtZW51IikgJiYgKGNsYXNzbmFtZSAhPSAiY29tYm9saXN0IikpIHsKKwkJCQljbG9zZXVwKCk7CisJCQl9CisJCX0KKwkJaGFuZGxlTW91c2VFdmVudCh4LCB5LCAxLCBmYWxzZSwgZmFsc2UsIGZhbHNlLAorCQkJTW91c2VFdmVudC5NT1VTRV9FTlRFUkVELCBtb3VzZWluc2lkZSwgaW5zaWRlcGFydCk7CisJCW1vdXNlcHJlc3NlZCA9IG1vdXNlaW5zaWRlOworCQlwcmVzc2VkcGFydCA9IGluc2lkZXBhcnQ7CisJCWhhbmRsZU1vdXNlRXZlbnQoeCwgeSwgMSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwKKwkJCU1vdXNlRXZlbnQuTU9VU0VfUFJFU1NFRCwgbW91c2VwcmVzc2VkLCBwcmVzc2VkcGFydCk7CisJfQorCisJcHJvdGVjdGVkIHZvaWQgcG9pbnRlclJlbGVhc2VkKGludCB4LCBpbnQgeSkgeworCQlPYmplY3QgbW91c2VyZWxlYXNlID0gbW91c2VwcmVzc2VkOworCQlPYmplY3QgcmVsZWFzZXBhcnQgPSBwcmVzc2VkcGFydDsKKwkJbW91c2VwcmVzc2VkID0gcHJlc3NlZHBhcnQgPSBudWxsOworCQloYW5kbGVNb3VzZUV2ZW50KHgsIHksIDEsIGZhbHNlLCBmYWxzZSwgZmFsc2UsCisJCQlNb3VzZUV2ZW50Lk1PVVNFX1JFTEVBU0VELCBtb3VzZXJlbGVhc2UsIHJlbGVhc2VwYXJ0KTsKKwl9CisKKwlwcm90ZWN0ZWQgdm9pZCBwb2ludGVyRHJhZ2dlZChpbnQgeCwgaW50IHkpIHsKKwkJT2JqZWN0IHByZXZpbnNpZGUgPSBtb3VzZWluc2lkZTsKKwkJT2JqZWN0IHByZXZwYXJ0ID0gaW5zaWRlcGFydDsKKwkJZmluZENvbXBvbmVudChjb250ZW50LCB4LCB5KTsKKwkJYm9vbGVhbiBzYW1lID0gKHByZXZpbnNpZGUgPT0gbW91c2VpbnNpZGUpICYmIChwcmV2cGFydCA9PSBpbnNpZGVwYXJ0KTsKKwkJYm9vbGVhbiBpc2luID0gKG1vdXNlcHJlc3NlZCA9PSBtb3VzZWluc2lkZSkgJiYgKHByZXNzZWRwYXJ0ID09IGluc2lkZXBhcnQpOworCQlib29sZWFuIHdhc2luID0gKG1vdXNlcHJlc3NlZCA9PSBwcmV2aW5zaWRlKSAmJiAocHJlc3NlZHBhcnQgPT0gcHJldnBhcnQpOworCQkKKwkJaWYgKHdhc2luICYmICFpc2luKSB7CisJCQloYW5kbGVNb3VzZUV2ZW50KHgsIHksIDEsIGZhbHNlLCBmYWxzZSwgZmFsc2UsCisJCQkJTW91c2VFdmVudC5NT1VTRV9FWElURUQsIG1vdXNlcHJlc3NlZCwgcHJlc3NlZHBhcnQpOworCQl9CisJCWVsc2UgaWYgKCFzYW1lICYmIChwb3B1cG93bmVyICE9IG51bGwpICYmICF3YXNpbikgeworCQkJaGFuZGxlTW91c2VFdmVudCh4LCB5LCAxLCBmYWxzZSwgZmFsc2UsIGZhbHNlLAorCQkJCURSQUdfRVhJVEVELCBwcmV2aW5zaWRlLCBwcmV2cGFydCk7CisJCX0KKwkJaWYgKGlzaW4gJiYgIXdhc2luKSB7CisJCQloYW5kbGVNb3VzZUV2ZW50KHgsIHksIDEsIGZhbHNlLCBmYWxzZSwgZmFsc2UsCisJCQkJTW91c2VFdmVudC5NT1VTRV9FTlRFUkVELCBtb3VzZXByZXNzZWQsIHByZXNzZWRwYXJ0KTsKKwkJfQorCQllbHNlIGlmICghc2FtZSAmJiAocG9wdXBvd25lciAhPSBudWxsKSAmJiAhaXNpbikgeworCQkJaGFuZGxlTW91c2VFdmVudCh4LCB5LCAxLCBmYWxzZSwgZmFsc2UsIGZhbHNlLAorCQkJCURSQUdfRU5URVJFRCwgbW91c2VpbnNpZGUsIGluc2lkZXBhcnQpOworCQl9CisJCWlmIChpc2luID09IHdhc2luKSB7CisJCQloYW5kbGVNb3VzZUV2ZW50KHgsIHksIDEsIGZhbHNlLCBmYWxzZSwgZmFsc2UsCisJCQkJTW91c2VFdmVudC5NT1VTRV9EUkFHR0VELCBtb3VzZXByZXNzZWQsIHByZXNzZWRwYXJ0KTsKKwkJfQorCX0KKworCXByb3RlY3RlZCB2b2lkIGtleVByZXNzZWQoaW50IGtleUNvZGUpIHsKKwkJaWYgKChwb3B1cG93bmVyICE9IG51bGwpIHx8IChmb2N1c293bmVyICE9IG51bGwpKSB7CisJCQloaWRlVGlwKCk7CisJCQlpZiAoa2V5Q29kZSA+IDApIHsKKwkJCQlwcm9jZXNzS2V5UHJlc3MoKHBvcHVwb3duZXIgIT0gbnVsbCkgPyBwb3B1cG93bmVyIDogZm9jdXNvd25lciwKKwkJCQkJZmFsc2UsIGZhbHNlLCAxLCBrZXlDb2RlLCAwKTsKKwkJCX0KKwkJCWVsc2UgeworCQkJCWludCBrZXljaGFyID0gMCwga2V5ID0gMDsKKwkJCQlzd2l0Y2ggKGdldEdhbWVBY3Rpb24oa2V5Q29kZSkpIHsKKwkJCQkJY2FzZSBVUDoga2V5ID0gS2V5RXZlbnQuVktfVVA7IGJyZWFrOworCQkJCQljYXNlIExFRlQ6IGtleSA9IEtleUV2ZW50LlZLX0xFRlQ7IGJyZWFrOworCQkJCQljYXNlIERPV046IGtleSA9IEtleUV2ZW50LlZLX0RPV047IGJyZWFrOworCQkJCQljYXNlIFJJR0hUOiBrZXkgPSBLZXlFdmVudC5WS19SSUdIVDsgYnJlYWs7CisJCQkJCWNhc2UgRklSRToga2V5ID0gS2V5RXZlbnQuVktfRU5URVI7IGtleWNoYXIgPSBLZXlFdmVudC5WS19TUEFDRTsgYnJlYWs7CisJCQkJCWNhc2UgR0FNRV9BOiBrZXkgPSBLZXlFdmVudC5WS19FU0NBUEU7IGJyZWFrOworCQkJCX0KKwkJCQlpZiAoa2V5ICE9IDApIHsKKwkJCQkJcHJvY2Vzc0tleVByZXNzKChwb3B1cG93bmVyICE9IG51bGwpID8gcG9wdXBvd25lciA6IGZvY3Vzb3duZXIsCisJCQkJCQlmYWxzZSwgZmFsc2UsIDEsIGtleWNoYXIsIGtleSk7CisJCQkJfQorCQkJCS8vaWYgKGtleUNvZGUgPT0gZ2V0S2V5Q29kZShMRUZUKSkgeworCQkJfQorCQl9CisJfQorCisJcHJvdGVjdGVkIHZvaWQga2V5UmVwZWF0ZWQoaW50IGtleUNvZGUpIHsKKwkJa2V5UHJlc3NlZChrZXlDb2RlKTsKKwl9CisJCisJcHJpdmF0ZSBzdGF0aWMgZmluYWwgQ29tbWFuZCBuZXh0Y29tbWFuZCA9IG5ldyBDb21tYW5kKCJOZXh0IiwgQ29tbWFuZC5TQ1JFRU4sIDApOworCS8vcHJpdmF0ZSBzdGF0aWMgZmluYWwgQ29tbWFuZCBwcmV2Y29tbWFuZCA9IG5ldyBDb21tYW5kKCJQcmV2aW91cyIsIENvbW1hbmQuU0NSRUVOLCAwKTsKKwl7CisJCWFkZENvbW1hbmQobmV4dGNvbW1hbmQpOworCQkvL2FkZENvbW1hbmQocHJldmNvbW1hbmQpOworCQlzZXRDb21tYW5kTGlzdGVuZXIodGhpcyk7CisJfQorCQorCXB1YmxpYyB2b2lkIGNvbW1hbmRBY3Rpb24oQ29tbWFuZCBjb21tYW5kLCBEaXNwbGF5YWJsZSBkaXNwbGF5YWJsZSkgeworCQlpZiAoY29tbWFuZCA9PSBuZXh0Y29tbWFuZCkgeworCQkJc2V0TmV4dEZvY3VzYWJsZShmb2N1c293bmVyLCBmYWxzZSk7CisJCQlyZXBhaW50KGZvY3Vzb3duZXIpOworCQkJY2xvc2V1cCgpOworCQl9CisJCS8vZWxzZSBpZiAoY29tbWFuZCA9PSBwcmV2Y29tbWFuZCkgeworCQkJLy9zZXRQcmV2aW91c0ZvY3VzYWJsZShmb2N1c293bmVyLCBudWxsLCB0cnVlLCB0cnVlLCBmYWxzZSk7CisJCQkvL3JlcGFpbnQoZm9jdXNvd25lcik7CisJCQkvL2Nsb3NldXAoKTsKKwkJLy99CisJfQorCW1pZHAqLworCS8vamF2YT4KKworCS8qKgorCSAqCisJICovCisJcHJvdGVjdGVkIHZvaWQgcHJvY2Vzc0V2ZW50KEFXVEV2ZW50IGUpIHsKKwkJaW50IGlkID0gZS5nZXRJRCgpOworCQlpZiAoKGlkID49IE1vdXNlRXZlbnQuTU9VU0VfRklSU1QpICYmIChpZCA8PSBNb3VzZUV2ZW50Lk1PVVNFX0xBU1QpKSB7CisJCQlNb3VzZUV2ZW50IG1lID0gKE1vdXNlRXZlbnQpIGU7CisJCQlpbnQgeCA9IG1lLmdldFgoKTsKKwkJCWludCB5ID0gbWUuZ2V0WSgpOworCQkJaW50IGNsaWNrY291bnQgPSBtZS5nZXRDbGlja0NvdW50KCk7CisJCQlib29sZWFuIHNoaWZ0ZG93biA9IG1lLmlzU2hpZnREb3duKCk7CisJCQlib29sZWFuIGNvbnRyb2xkb3duID0gbWUuaXNDb250cm9sRG93bigpOworCQkJYm9vbGVhbiBwb3B1cHRyaWdnZXIgPSBtZS5pc1BvcHVwVHJpZ2dlcigpOworCQkJaWYgKGlkID09IE1vdXNlRXZlbnQuTU9VU0VfRU5URVJFRCkgeworCQkJCWlmIChtb3VzZXByZXNzZWQgPT0gbnVsbCkgeworCQkJCQlmaW5kQ29tcG9uZW50KGNvbnRlbnQsIHgsIHkpOworCQkJCQloYW5kbGVNb3VzZUV2ZW50KHgsIHksIGNsaWNrY291bnQsIHNoaWZ0ZG93biwgY29udHJvbGRvd24sIHBvcHVwdHJpZ2dlciwKKwkJCQkJCU1vdXNlRXZlbnQuTU9VU0VfRU5URVJFRCwgbW91c2VpbnNpZGUsIGluc2lkZXBhcnQpOworCQkJCX0KKwkJCX0KKwkJCWVsc2UgaWYgKGlkID09IE1vdXNlRXZlbnQuTU9VU0VfTU9WRUQpIHsKKwkJCQlPYmplY3QgcHJldmluc2lkZSA9IG1vdXNlaW5zaWRlOworCQkJCU9iamVjdCBwcmV2cGFydCA9IGluc2lkZXBhcnQ7CisJCQkJZmluZENvbXBvbmVudChjb250ZW50LCB4LCB5KTsKKwkJCQlpZiAoKHByZXZpbnNpZGUgPT0gbW91c2VpbnNpZGUpICYmIChwcmV2cGFydCA9PSBpbnNpZGVwYXJ0KSkgeworCQkJCQloYW5kbGVNb3VzZUV2ZW50KHgsIHksIGNsaWNrY291bnQsIHNoaWZ0ZG93biwgY29udHJvbGRvd24sIHBvcHVwdHJpZ2dlciwKKwkJCQkJCU1vdXNlRXZlbnQuTU9VU0VfTU9WRUQsIG1vdXNlaW5zaWRlLCBpbnNpZGVwYXJ0KTsKKwkJCQl9CisJCQkJZWxzZSB7CisJCQkJCWhhbmRsZU1vdXNlRXZlbnQoeCwgeSwgY2xpY2tjb3VudCwgc2hpZnRkb3duLCBjb250cm9sZG93biwgcG9wdXB0cmlnZ2VyLAorCQkJCQkJTW91c2VFdmVudC5NT1VTRV9FWElURUQsIHByZXZpbnNpZGUsIHByZXZwYXJ0KTsKKwkJCQkJaGFuZGxlTW91c2VFdmVudCh4LCB5LCBjbGlja2NvdW50LCBzaGlmdGRvd24sIGNvbnRyb2xkb3duLCBwb3B1cHRyaWdnZXIsCisJCQkJCQlNb3VzZUV2ZW50Lk1PVVNFX0VOVEVSRUQsIG1vdXNlaW5zaWRlLCBpbnNpZGVwYXJ0KTsKKwkJCQl9CisJCQl9CisJCQllbHNlIGlmIChpZCA9PSBNb3VzZUV2ZW50Lk1PVVNFX0VYSVRFRCkgeworCQkJCWlmIChtb3VzZXByZXNzZWQgPT0gbnVsbCkgeworCQkJCQlPYmplY3QgbW91c2VleGl0ID0gbW91c2VpbnNpZGU7CisJCQkJCU9iamVjdCBleGl0cGFydCA9IGluc2lkZXBhcnQ7CisJCQkJCW1vdXNlaW5zaWRlID0gaW5zaWRlcGFydCA9IG51bGw7CisJCQkJCWhhbmRsZU1vdXNlRXZlbnQoeCwgeSwgY2xpY2tjb3VudCwgc2hpZnRkb3duLCBjb250cm9sZG93biwgcG9wdXB0cmlnZ2VyLAorCQkJCQkJTW91c2VFdmVudC5NT1VTRV9FWElURUQsIG1vdXNlZXhpdCwgZXhpdHBhcnQpOworCQkJCX0KKwkJCX0KKwkJCWVsc2UgaWYgKGlkID09IE1vdXNlRXZlbnQuTU9VU0VfUFJFU1NFRCkgeworCQkJCWlmIChwb3B1cG93bmVyICE9IG51bGwpIHsKKwkJCQkJU3RyaW5nIGNsYXNzbmFtZSA9IGdldENsYXNzKG1vdXNlaW5zaWRlKTsKKwkJCQkJaWYgKChwb3B1cG93bmVyICE9IG1vdXNlaW5zaWRlKSAmJgorCQkJCQkJCShjbGFzc25hbWUgIT0gInBvcHVwbWVudSIpICYmIChjbGFzc25hbWUgIT0gImNvbWJvbGlzdCIpKSB7CisJCQkJCQljbG9zZXVwKCk7CisJCQkJCX0KKwkJCQl9CisJCQkJbW91c2VwcmVzc2VkID0gbW91c2VpbnNpZGU7CisJCQkJcHJlc3NlZHBhcnQgPSBpbnNpZGVwYXJ0OworCQkJCWhhbmRsZU1vdXNlRXZlbnQoeCwgeSwgY2xpY2tjb3VudCwgc2hpZnRkb3duLCBjb250cm9sZG93biwgcG9wdXB0cmlnZ2VyLAorCQkJCQlNb3VzZUV2ZW50Lk1PVVNFX1BSRVNTRUQsIG1vdXNlcHJlc3NlZCwgcHJlc3NlZHBhcnQpOworCQkJfQorCQkJZWxzZSBpZiAoaWQgPT0gTW91c2VFdmVudC5NT1VTRV9EUkFHR0VEKSB7CisJCQkJT2JqZWN0IHByZXZpbnNpZGUgPSBtb3VzZWluc2lkZTsKKwkJCQlPYmplY3QgcHJldnBhcnQgPSBpbnNpZGVwYXJ0OworCQkJCWZpbmRDb21wb25lbnQoY29udGVudCwgeCwgeSk7CisJCQkJYm9vbGVhbiBzYW1lID0gKHByZXZpbnNpZGUgPT0gbW91c2VpbnNpZGUpICYmIChwcmV2cGFydCA9PSBpbnNpZGVwYXJ0KTsKKwkJCQlib29sZWFuIGlzaW4gPSAobW91c2VwcmVzc2VkID09IG1vdXNlaW5zaWRlKSAmJiAocHJlc3NlZHBhcnQgPT0gaW5zaWRlcGFydCk7CisJCQkJYm9vbGVhbiB3YXNpbiA9IChtb3VzZXByZXNzZWQgPT0gcHJldmluc2lkZSkgJiYgKHByZXNzZWRwYXJ0ID09IHByZXZwYXJ0KTsKKwkJCQkKKwkJCQlpZiAod2FzaW4gJiYgIWlzaW4pIHsKKwkJCQkJaGFuZGxlTW91c2VFdmVudCh4LCB5LCBjbGlja2NvdW50LCBzaGlmdGRvd24sIGNvbnRyb2xkb3duLCBwb3B1cHRyaWdnZXIsCisJCQkJCQlNb3VzZUV2ZW50Lk1PVVNFX0VYSVRFRCwgbW91c2VwcmVzc2VkLCBwcmVzc2VkcGFydCk7CisJCQkJfQorCQkJCWVsc2UgaWYgKCFzYW1lICYmIChwb3B1cG93bmVyICE9IG51bGwpICYmICF3YXNpbikgeworCQkJCQloYW5kbGVNb3VzZUV2ZW50KHgsIHksIGNsaWNrY291bnQsIHNoaWZ0ZG93biwgY29udHJvbGRvd24sIHBvcHVwdHJpZ2dlciwKKwkJCQkJCURSQUdfRVhJVEVELCBwcmV2aW5zaWRlLCBwcmV2cGFydCk7CisJCQkJfQorCQkJCWlmIChpc2luICYmICF3YXNpbikgeworCQkJCQloYW5kbGVNb3VzZUV2ZW50KHgsIHksIGNsaWNrY291bnQsIHNoaWZ0ZG93biwgY29udHJvbGRvd24sIHBvcHVwdHJpZ2dlciwKKwkJCQkJCU1vdXNlRXZlbnQuTU9VU0VfRU5URVJFRCwgbW91c2VwcmVzc2VkLCBwcmVzc2VkcGFydCk7CisJCQkJfQorCQkJCWVsc2UgaWYgKCFzYW1lICYmIChwb3B1cG93bmVyICE9IG51bGwpICYmICFpc2luKSB7CisJCQkJCWhhbmRsZU1vdXNlRXZlbnQoeCwgeSwgY2xpY2tjb3VudCwgc2hpZnRkb3duLCBjb250cm9sZG93biwgcG9wdXB0cmlnZ2VyLAorCQkJCQkJRFJBR19FTlRFUkVELCBtb3VzZWluc2lkZSwgaW5zaWRlcGFydCk7CisJCQkJfQorCQkJCWlmIChpc2luID09IHdhc2luKSB7CisJCQkJCWhhbmRsZU1vdXNlRXZlbnQoeCwgeSwgY2xpY2tjb3VudCwgc2hpZnRkb3duLCBjb250cm9sZG93biwgcG9wdXB0cmlnZ2VyLAorCQkJCQkJTW91c2VFdmVudC5NT1VTRV9EUkFHR0VELCBtb3VzZXByZXNzZWQsIHByZXNzZWRwYXJ0KTsKKwkJCQl9CisJCQl9CisJCQllbHNlIGlmIChpZCA9PSBNb3VzZUV2ZW50Lk1PVVNFX1JFTEVBU0VEKSB7CisJCQkJT2JqZWN0IG1vdXNlcmVsZWFzZSA9IG1vdXNlcHJlc3NlZDsKKwkJCQlPYmplY3QgcmVsZWFzZXBhcnQgPSBwcmVzc2VkcGFydDsKKwkJCQltb3VzZXByZXNzZWQgPSBwcmVzc2VkcGFydCA9IG51bGw7CisJCQkJaGFuZGxlTW91c2VFdmVudCh4LCB5LCBjbGlja2NvdW50LCBzaGlmdGRvd24sIGNvbnRyb2xkb3duLCBwb3B1cHRyaWdnZXIsCisJCQkJCU1vdXNlRXZlbnQuTU9VU0VfUkVMRUFTRUQsIG1vdXNlcmVsZWFzZSwgcmVsZWFzZXBhcnQpOworCQkJCWlmICgobW91c2VpbnNpZGUgIT0gbnVsbCkgJiYKKwkJCQkJCSgobW91c2VyZWxlYXNlICE9IG1vdXNlaW5zaWRlKSB8fCAocmVsZWFzZXBhcnQgIT0gaW5zaWRlcGFydCkpKSB7CisJCQkJCWhhbmRsZU1vdXNlRXZlbnQoeCwgeSwgY2xpY2tjb3VudCwgc2hpZnRkb3duLCBjb250cm9sZG93biwgcG9wdXB0cmlnZ2VyLAorCQkJCQkJTW91c2VFdmVudC5NT1VTRV9FTlRFUkVELCBtb3VzZWluc2lkZSwgaW5zaWRlcGFydCk7CisJCQkJfQorCQkJfQorCQl9CisJCWVsc2UgaWYgKGlkID09IE1PVVNFX1dIRUVMKSB7CisJCQlSZWN0YW5nbGUgcG9ydCA9IGdldFJlY3RhbmdsZShtb3VzZWluc2lkZSwgIjpwb3J0Iik7CisJCQlpZiAocG9ydCAhPSBudWxsKSB7IC8vIGlzIHNjcm9sbGFibGUKKwkJCQlSZWN0YW5nbGUgYm91bmRzID0gZ2V0UmVjdGFuZ2xlKG1vdXNlaW5zaWRlLCAiYm91bmRzIik7CQorCQkJCXRyeSB7IC8vIG1vdXNlIHdoZWVsIGlzIHN1cHBvcnRlZCBzaW5jZSAxLjQgdGh1cyBpdCB1c2UgcmVmbGVjdGlvbgorCQkJCQlpZiAod2hlZWxyb3RhdGlvbiA9PSBudWxsKSB7CisJCQkJCQl3aGVlbHJvdGF0aW9uID0gZS5nZXRDbGFzcygpLmdldE1ldGhvZCgiZ2V0V2hlZWxSb3RhdGlvbiIsIG51bGwpOworCQkJCQl9CisJCQkJCWludCByb3RhdGlvbiA9ICgoSW50ZWdlcikgd2hlZWxyb3RhdGlvbi5pbnZva2UoZSwgbnVsbCkpLmludFZhbHVlKCk7CisJCQkJCQorCQkJCQlpZiAocG9ydC54ICsgcG9ydC53aWR0aCA8IGJvdW5kcy53aWR0aCkgeyAvLyBoYXMgdmVydGljYWwgc2Nyb2xsYmFyCisJCQkJCQlwcm9jZXNzU2Nyb2xsKG1vdXNlaW5zaWRlLCAocm90YXRpb24gPiAwKSA/ICJkb3duIiA6ICJ1cCIpOworCQkJCQl9CisJCQkJCWVsc2UgaWYgKHBvcnQueSArIHBvcnQuaGVpZ2h0IDwgYm91bmRzLmhlaWdodCkgeyAvLyBoYXMgaG9yaXpvbnRhbCBzY3JvbGxiYXIKKwkJCQkJCXByb2Nlc3NTY3JvbGwobW91c2VpbnNpZGUsIChyb3RhdGlvbiA+IDApID8gInJpZ2h0IiA6ICJsZWZ0Iik7CisJCQkJCX0KKwkJCQl9IGNhdGNoIChFeGNlcHRpb24gZXhjKSB7IC8qIG5ldmVyICovIH0KKwkJCX0KKwkJfQorCQllbHNlIGlmICgoaWQgPT0gS2V5RXZlbnQuS0VZX1BSRVNTRUQpIHx8IChpZCA9PSBLZXlFdmVudC5LRVlfVFlQRUQpKSB7CisJCQlpZiAoZm9jdXNpbnNpZGUgJiYgKChwb3B1cG93bmVyICE9IG51bGwpIHx8IChmb2N1c293bmVyICE9IG51bGwpKSkgeworCQkJCWhpZGVUaXAoKTsKKwkJCQlLZXlFdmVudCBrZSA9IChLZXlFdmVudCkgZTsKKwkJCQlpbnQga2V5Y2hhciA9IGtlLmdldEtleUNoYXIoKTsKKwkJCQlib29sZWFuIGNvbnRyb2wgPSAoa2V5Y2hhciA8PSAweDFmKSB8fAorCQkJCQkoKGtleWNoYXIgPj0gMHg3ZikgJiYgKGtleWNoYXIgPD0gMHg5ZikpIHx8CisJCQkJCShrZXljaGFyID49IDB4ZmZmZikgfHwga2UuaXNDb250cm9sRG93bigpOworCQkJCWlmIChjb250cm9sID09IChpZCA9PSBLZXlFdmVudC5LRVlfUFJFU1NFRCkpIHsKKwkJCQkJaW50IGtleWNvZGUgPSBjb250cm9sID8ga2UuZ2V0S2V5Q29kZSgpIDogMDsKKwkJCQkJaWYgKCFwcm9jZXNzS2V5UHJlc3MoKHBvcHVwb3duZXIgIT0gbnVsbCkgPyBwb3B1cG93bmVyIDogZm9jdXNvd25lciwKKwkJCQkJCQlrZS5pc1NoaWZ0RG93bigpLCBrZS5pc0NvbnRyb2xEb3duKCksIGtlLmdldE1vZGlmaWVycygpLAorCQkJCQkJCWNvbnRyb2wgPyAwIDoga2V5Y2hhciwga2V5Y29kZSkpIHsKKwkJCQkJCWlmICgoa2V5Y29kZSA9PSBLZXlFdmVudC5WS19UQUIpIHx8CisJCQkJCQkJCSgoa2V5Y29kZSA9PSBLZXlFdmVudC5WS19GNikgJiYgKGtlLmlzQWx0RG93bigpIHx8IGtlLmlzQ29udHJvbERvd24oKSkpKSB7CisJCQkJCQkJYm9vbGVhbiBvdXRnbyA9IChrZXljb2RlID09IEtleUV2ZW50LlZLX0Y2KTsKKwkJCQkJCQlpZiAoIWtlLmlzU2hpZnREb3duKCkgPyBzZXROZXh0Rm9jdXNhYmxlKGZvY3Vzb3duZXIsIG91dGdvKSA6CisJCQkJCQkJCQlzZXRQcmV2aW91c0ZvY3VzYWJsZShmb2N1c293bmVyLCBvdXRnbykpIHsKKwkJCQkJCQkJa2UuY29uc3VtZSgpOworCQkJCQkJCX0gZWxzZSBpZiAoTU9VU0VfV0hFRUwgIT0gMCkgeyAvLyAxLjQKKwkJCQkJCQkJaWYgKCFrZS5pc1NoaWZ0RG93bigpKSB7CisJCQkJCQkJCQl0cmFuc2ZlckZvY3VzKCk7CisJCQkJCQkJCX0KKwkJCQkJCQkJZWxzZSB7IHRyeSB7CisJCQkJCQkJCQkJZ2V0Q2xhc3MoKS5nZXRNZXRob2QoInRyYW5zZmVyRm9jdXNCYWNrd2FyZCIsIG51bGwpLiBpbnZva2UodGhpcywgbnVsbCk7CisJCQkJCQkJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBleGMpIHsgLyogbmV2ZXIgKi8gfSB9CisJCQkJCQkJfQorCQkJCQkJCXJlcGFpbnQoZm9jdXNvd25lcik7CisJCQkJCQkJY2xvc2V1cCgpOworCQkJCQkJfQorCQkJCQkJZWxzZSBpZiAoa2V5Y29kZSA9PSBLZXlFdmVudC5WS19GOCkgeworCQkJCQkJCWZvciAoT2JqZWN0IHNwbGl0cGFuZSA9IGZvY3Vzb3duZXI7CisJCQkJCQkJCQlzcGxpdHBhbmUgIT0gbnVsbDsgc3BsaXRwYW5lID0gZ2V0UGFyZW50KHNwbGl0cGFuZSkpIHsKKwkJCQkJCQkJaWYgKGdldENsYXNzKHNwbGl0cGFuZSkgPT0gInNwbGl0cGFuZSIpIHsKKwkJCQkJCQkJCXNldEZvY3VzKHNwbGl0cGFuZSk7IHJlcGFpbnQoc3BsaXRwYW5lKTsgYnJlYWs7IC8vbWlkZGxlCisJCQkJCQkJCX0KKwkJCQkJCQl9CisJCQkJCQl9CisJCQkJCX0KKwkJCQkJZWxzZSBrZS5jb25zdW1lKCk7CisJCQkJCS8qZWxzZSBpZiAoa2V5Y29kZSA9PSBLZXlFdmVudC5WS19GMTApIHsKKwkJCQkJCU9iamVjdCBtZW51YmFyID0gbnVsbDsgLy8gZmluZCgiY2xhc3MiLCAibWVudWJhciIpCisJCQkJCQlpZiAoKG1lbnViYXIgIT0gbnVsbCkgJiYgKGdldChtZW51YmFyLCAic2VsZWN0ZWQiKSA9PSBudWxsKSkgeworCQkJCQkJCXNldChtZW51YmFyLCAic2VsZWN0ZWQiLCBnZXRNZW51KG1lbnViYXIsIG51bGwsIHRydWUsIGZhbHNlKSk7CisJCQkJCQkJT2JqZWN0IHBvcHVwID0gcG9wdXAobWVudWJhciwgIm1lbnViYXIiKTsKKwkJCQkJCQlzZXQocG9wdXAsICJzZWxlY3RlZCIsIGdldE1lbnUocG9wdXAsIG51bGwsIHRydWUsIHRydWUpKTsKKwkJCQkJCQlyZXBhaW50KG1lbnViYXIpOyAvLyAsIHNlbGVjdGVkCisJCQkJCQl9CisJCQkJCX0qLworCQkJCX0KKwkJCX0KKwkJfQorCQkvKmVsc2UgaWYgKGlkID09IEtleUV2ZW50LktFWV9SRUxFQVNFRCkgeworCQkJaWYgKGZvY3VzaW5zaWRlICYmIChmb2N1c293bmVyICE9IG51bGwpKSB7CisJCQkJS2V5RXZlbnQga2UgPSAoS2V5RXZlbnQpIGU7CisJCQkJLy9wcmVzc2Vka2V5ID0gMDsKKwkJCQlwcm9jZXNzS2V5UmVsZWFzZShmb2N1c293bmVyLCBrZSwga2UuZ2V0S2V5Q29kZSgpKTsKKwkJCX0KKwkJfSovCisJCWVsc2UgaWYgKGlkID09IEZvY3VzRXZlbnQuRk9DVVNfTE9TVCkgeworCQkJZm9jdXNpbnNpZGUgPSBmYWxzZTsKKwkJCWlmIChmb2N1c293bmVyICE9IG51bGwpIHsgcmVwYWludChmb2N1c293bmVyKTsgfQorCQkJY2xvc2V1cCgpOworCQl9CisJCWVsc2UgaWYgKGlkID09IEZvY3VzRXZlbnQuRk9DVVNfR0FJTkVEKSB7CisJCQlmb2N1c2luc2lkZSA9IHRydWU7CisJCQlpZiAoZm9jdXNvd25lciA9PSBudWxsKSB7IHNldEZvY3VzKGNvbnRlbnQpOyB9CisJCQkJZWxzZSB7IHJlcGFpbnQoZm9jdXNvd25lcik7IH0KKwkJfQorCQllbHNlIGlmICgoaWQgPT0gQ29tcG9uZW50RXZlbnQuQ09NUE9ORU5UX1JFU0laRUQpIHx8CisJCQkJKGlkID09IENvbXBvbmVudEV2ZW50LkNPTVBPTkVOVF9TSE9XTikpIHsKKwkJCURpbWVuc2lvbiBkID0gZ2V0U2l6ZSgpOworCQkJLy9TeXN0ZW0ub3V0LnByaW50bG4oaWQgKyAiOiAiICsgZC53aWR0aCArICIsICIgKyBkLmhlaWdodCk7CisJCQlzZXRSZWN0YW5nbGUoY29udGVudCwgImJvdW5kcyIsIDAsIDAsIGQud2lkdGgsIGQuaGVpZ2h0KTsKKwkJCXZhbGlkYXRlKGNvbnRlbnQpOworCQkJY2xvc2V1cCgpOworCQkJaWYgKCFmb2N1c2luc2lkZSkgIHsgcmVxdWVzdEZvY3VzKCk7IH0KKwkJfQorCX0KKworCS8qKgorCSAqCisJICovCisJLypwcml2YXRlIGJvb2xlYW4gcHJvY2Vzc0tleVByZXNzKE9iamVjdCBjb21wb25lbnQsCisJCQlLZXlFdmVudCBlLCBpbnQga2V5Y29kZSwgT2JqZWN0IGludm9rZXIpIHsKKwkJaWYgKHByb2Nlc3NLZXlQcmVzcyhjb21wb25lbnQsIGUsIGtleWNvZGUpKSB7IHJldHVybiB0cnVlOyB9CisJCWZvciAoT2JqZWN0IGNvbXAgPSBnZXQoY29tcG9uZW50LCAiY29tcG9uZW50Iik7CisJCQkJY29tcCAhPSBudWxsOyBjb21wID0gZ2V0KGNvbXAsICI6bmV4dCIpKSB7CisJCQlpZiAoKGNvbXAgIT0gaW52b2tlcikgJiYgcHJvY2Vzc0tleVByZXNzKGNvbXAsIGUsIGtleWNvZGUsIG51bGwpKSB7CisJCQkJcmV0dXJuIHRydWU7CisJCQl9CisJCX0KKwkJaWYgKChpbnZva2VyICE9IG51bGwpICYmIChjb21wb25lbnQgIT0gY29udGVudCkpIHsKKwkJCU9iamVjdCBwYXJlbnQgPSBnZXRQYXJlbnQoY29tcG9uZW50KTsKKwkJCWlmIChwYXJlbnQgIT0gbnVsbCkgeworCQkJCXJldHVybiBwcm9jZXNzS2V5UHJlc3MocGFyZW50LCBlLCBrZXljb2RlLCBjb21wb25lbnQpOworCQkJfQorCQl9CisJCXJldHVybiBmYWxzZTsKKwl9Ki8KKwkvLzxqYXZhCisKKwkvKioKKwkgKgorCSAqLworCXByaXZhdGUgYm9vbGVhbiBwcm9jZXNzS2V5UHJlc3MoT2JqZWN0IGNvbXBvbmVudCwKKwkJCWJvb2xlYW4gc2hpZnRkb3duLCBib29sZWFuIGNvbnRyb2xkb3duLCBpbnQgbW9kaWZpZXJzLCBpbnQga2V5Y2hhciwgaW50IGtleWNvZGUpIHsKKwkJU3RyaW5nIGNsYXNzbmFtZSA9IGdldENsYXNzKGNvbXBvbmVudCk7CisJCWlmICgiYnV0dG9uIiA9PSBjbGFzc25hbWUpIHsKKwkJCWlmIChrZXljaGFyID09IEtleUV2ZW50LlZLX1NQQUNFIHx8CisJCQkJCSgoa2V5Y29kZSA9PSBLZXlFdmVudC5WS19FTlRFUikgJiYKKwkJCQkJCShnZXRTdHJpbmcoY29tcG9uZW50LCAidHlwZSIsIG51bGwpID09ICJkZWZhdWx0IikpIHx8CisJCQkJCSgoa2V5Y29kZSA9PSBLZXlFdmVudC5WS19FU0NBUEUpICYmIC8vLi4uCisJCQkJCQkoZ2V0U3RyaW5nKGNvbXBvbmVudCwgInR5cGUiLCBudWxsKSA9PSAiY2FuY2VsIikpKSB7CisJCQkJLy9wcmVzc2Vka2V5ID0ga2V5Y2hhcjsKKwkJCQlpbnZva2UoY29tcG9uZW50LCAiYWN0aW9uIik7CisJCQkJcmVwYWludChjb21wb25lbnQpOworCQkJCXJldHVybiB0cnVlOworCQkJfQorCQl9CisJCWVsc2UgaWYgKCJjaGVja2JveCIgPT0gY2xhc3NuYW1lKSB7CisJCQlpZiAoa2V5Y2hhciA9PSBLZXlFdmVudC5WS19TUEFDRSkgeworCQkJCWNoYW5nZUNoZWNrKGNvbXBvbmVudCwgdHJ1ZSk7CisJCQkJcmVwYWludChjb21wb25lbnQpOworCQkJCXJldHVybiB0cnVlOworCQkJfQorCQl9CisJCWVsc2UgaWYgKCJjb21ib2JveCIgPT0gY2xhc3NuYW1lKSB7CisJCQlPYmplY3QgY29tYm9saXN0ID0gZ2V0KGNvbXBvbmVudCwgImNvbWJvbGlzdCIpOworCQkJaWYgKGNvbWJvbGlzdCA9PSBudWxsKSB7CisJCQkJaWYgKGdldEJvb2xlYW4oY29tcG9uZW50LCAiZWRpdGFibGUiLCB0cnVlKSAmJgorCQkJCQkJcHJvY2Vzc0ZpZWxkKGNvbXBvbmVudCwgc2hpZnRkb3duLCBjb250cm9sZG93biwgbW9kaWZpZXJzLAorCQkJCQkJCWtleWNoYXIsIGtleWNvZGUsIGZhbHNlLCBmYWxzZSkpIHsKKwkJCQkJc2V0SW50ZWdlcihjb21wb25lbnQsICJzZWxlY3RlZCIsIC0xLCAtMSk7CisJCQkJCXJldHVybiB0cnVlOworCQkJCX0KKwkJCQlpZiAoKGtleWNoYXIgPT0gS2V5RXZlbnQuVktfU1BBQ0UpIHx8IChrZXljb2RlID09IEtleUV2ZW50LlZLX0RPV04pKSB7CisJCQkJCWNvbWJvbGlzdCA9IHBvcHVwKGNvbXBvbmVudCwgY2xhc3NuYW1lKTsKKwkJCQkJaW50IHNlbGVjdGVkID0gZ2V0SW50ZWdlcihjb21wb25lbnQsICJzZWxlY3RlZCIsIC0xKTsKKwkJCQkJc2V0KGNvbWJvbGlzdCwgImluc2lkZSIsIChzZWxlY3RlZCAhPSAtMSkgPworCQkJCQkJZ2V0SXRlbUltcGwoY29tcG9uZW50LCAiY2hvaWNlIiwgc2VsZWN0ZWQpIDoKKwkJCQkJCWdldChjb21wb25lbnQsICJjaG9pY2UiKSk7IC8vc2Nyb2xsIHRvIGl0IQorCQkJCX0KKwkJCQllbHNlIHJldHVybiBmYWxzZTsKKwkJCX0gZWxzZSB7CisJCQkJaWYgKChrZXljb2RlID09IEtleUV2ZW50LlZLX1VQKSB8fAorCQkJCQkJKGtleWNvZGUgPT0gS2V5RXZlbnQuVktfRE9XTikgfHwgKGtleWNvZGUgPT0gS2V5RXZlbnQuVktfUEFHRV9VUCkgfHwKKwkJCQkJCShrZXljb2RlID09IEtleUV2ZW50LlZLX1BBR0VfRE9XTikgfHwKKwkJCQkJCShrZXljb2RlID09IEtleUV2ZW50LlZLX0hPTUUpIHx8IChrZXljb2RlID09IEtleUV2ZW50LlZLX0VORCkpIHsKKwkJCQkJT2JqZWN0IHNlbGVjdGVkID0gZ2V0KGNvbWJvbGlzdCwgImluc2lkZSIpOworCQkJCQlPYmplY3QgbmV4dCA9IGdldExpc3RJdGVtKGNvbXBvbmVudCwgY29tYm9saXN0LAorCQkJCQkJa2V5Y29kZSwgc2VsZWN0ZWQsICJjaG9pY2UiLCBudWxsKTsKKwkJCQkJaWYgKG5leHQgIT0gbnVsbCkgeworCQkJCQkJc2V0KGNvbWJvbGlzdCwgImluc2lkZSIsIG5leHQpOworCQkJCQkJUmVjdGFuZ2xlIHIgPSBnZXRSZWN0YW5nbGUobmV4dCwgImJvdW5kcyIpOworCQkJCQkJc2Nyb2xsVG9WaXNpYmxlKGNvbWJvbGlzdCwgci54LCByLnksIDAsIHIuaGVpZ2h0KTsKKwkJCQkJCWlmIChzZWxlY3RlZCAhPSBudWxsKSB7IHJlcGFpbnQoY29tYm9saXN0LCAiY29tYm9saXN0Iiwgc2VsZWN0ZWQpOyB9IAorCQkJCQkJcmVwYWludChjb21ib2xpc3QsICJjb21ib2xpc3QiLCBuZXh0KTsKKwkJCQkJfQorCQkJCX0KKwkJCQllbHNlIGlmICgoa2V5Y29kZSA9PSBLZXlFdmVudC5WS19FTlRFUikgfHwgKGtleWNoYXIgPT0gS2V5RXZlbnQuVktfU1BBQ0UpKSB7CisJCQkJCWNsb3NldXAoY29tcG9uZW50LCBjb21ib2xpc3QsIGdldChjb21ib2xpc3QsICJpbnNpZGUiKSk7IC8vQWx0K1VwCisJCQkJfQorCQkJCWVsc2UgaWYgKGtleWNvZGUgPT0gS2V5RXZlbnQuVktfRVNDQVBFKSB7CisJCQkJCWNsb3NldXAoY29tcG9uZW50LCBjb21ib2xpc3QsIG51bGwpOworCQkJCX0KKwkJCQllbHNlIHJldHVybiBwcm9jZXNzRmllbGQoY29tcG9uZW50LCBzaGlmdGRvd24sIGNvbnRyb2xkb3duLCBtb2RpZmllcnMsCisJCQkJCWtleWNoYXIsIGtleWNvZGUsIGZhbHNlLCBmYWxzZSk7CisJCQl9CisJCQlyZXR1cm4gdHJ1ZTsKKwkJfQorCQllbHNlIGlmICgoInRleHRmaWVsZCIgPT0gY2xhc3NuYW1lKSB8fCAoInBhc3N3b3JkZmllbGQiID09IGNsYXNzbmFtZSkpIHsKKwkJCXJldHVybiBwcm9jZXNzRmllbGQoY29tcG9uZW50LCBzaGlmdGRvd24sIGNvbnRyb2xkb3duLCBtb2RpZmllcnMsCisJCQkJa2V5Y2hhciwga2V5Y29kZSwgZmFsc2UsICgicGFzc3dvcmRmaWVsZCIgPT0gY2xhc3NuYW1lKSk7CisJCX0KKwkJZWxzZSBpZiAoInRleHRhcmVhIiA9PSBjbGFzc25hbWUpIHsKKwkJCVN0cmluZyB0ZXh0ID0gZ2V0U3RyaW5nKGNvbXBvbmVudCwgInRleHQiLCAiIik7IAorCQkJaW50IHN0YXJ0ID0gZ2V0SW50ZWdlcihjb21wb25lbnQsICJzdGFydCIsIDApOworCQkJaW50IGVuZCA9IGdldEludGVnZXIoY29tcG9uZW50LCAiZW5kIiwgMCk7CisKKwkJCWludCBpc3RhcnQgPSBzdGFydDsKKwkJCWludCBpZW5kID0gZW5kOworCQkJU3RyaW5nIGluc2VydCA9IG51bGw7CisJCQlpZiAoKGtleWNvZGUgPT0gS2V5RXZlbnQuVktfSE9NRSkgJiYgIWNvbnRyb2xkb3duKSB7CisJCQkJd2hpbGUgKChpZW5kID4gMCkgJiYgKHRleHQuY2hhckF0KGllbmQgLSAxKSAhPSAnXG4nKSkgeyBpZW5kLS07IH0KKwkJCQlpZiAoIXNoaWZ0ZG93bikgeyBpc3RhcnQgPSBpZW5kOyB9CisJCQl9CisJCQllbHNlIGlmICgoa2V5Y29kZSA9PSBLZXlFdmVudC5WS19FTkQpICYmICFjb250cm9sZG93bikgeworCQkJCWllbmQgPSB0ZXh0LmluZGV4T2YoJ1xuJywgZW5kKTsKKwkJCQlpZiAoaWVuZCA9PSAtMSkgeyBpZW5kID0gdGV4dC5sZW5ndGgoKTsgfQorCQkJCWlmICghc2hpZnRkb3duKSB7IGlzdGFydCA9IGllbmQ7IH0KKwkJCX0KKwkJCWVsc2UgaWYgKChrZXljb2RlID09IEtleUV2ZW50LlZLX1VQKSB8fAorCQkJCQkoa2V5Y29kZSA9PSBLZXlFdmVudC5WS19QQUdFX1VQKSkgeworCQkJCWludCBwcmV2ID0gZW5kOworCQkJCXdoaWxlICgocHJldiA+IDApICYmICh0ZXh0LmNoYXJBdChwcmV2IC0gMSkgIT0gJ1xuJykpIHsgcHJldi0tOyB9CisJCQkJaWYgKHByZXYgIT0gMCkgeworCQkJCQlpbnQgZHggPSBlbmQgLSBwcmV2OworCQkJCQlpbnQgbGluZXMgPSAoa2V5Y29kZSA9PSBLZXlFdmVudC5WS19QQUdFX1VQKSA/CisJCQkJCQkoZ2V0UmVjdGFuZ2xlKGNvbXBvbmVudCwgIjpwb3J0IikuaGVpZ2h0IC8KKwkJCQkJCQlnZXRGb250TWV0cmljcyhnZXRGb250KCkpLmdldEhlaWdodCgpKSA6IDE7CisJCQkJCWludCBmaXJzdCA9IHByZXY7CisJCQkJCWRvIHsKKwkJCQkJCXByZXYgPSBmaXJzdDsgZmlyc3QtLTsgbGluZXMtLTsKKwkJCQkJCXdoaWxlICgoZmlyc3QgPiAwKSAmJiAodGV4dC5jaGFyQXQoZmlyc3QgLSAxKSAhPSAnXG4nKSkgeyBmaXJzdC0tOyB9CisJCQkJCX0gd2hpbGUgKChmaXJzdCA+IDApICYmIChsaW5lcyA+IDApKTsKKwkJCQkJaWVuZCA9IE1hdGgubWluKGZpcnN0ICsgZHgsIHByZXYgLSAxKTsKKwkJCQkJaWYgKCFzaGlmdGRvd24pIHsgaXN0YXJ0ID0gaWVuZDsgfQorCQkJCX0KKwkJCX0KKwkJCWVsc2UgaWYgKChrZXljb2RlID09IEtleUV2ZW50LlZLX0RPV04pIHx8CisJCQkJCShrZXljb2RlID09IEtleUV2ZW50LlZLX1BBR0VfRE9XTikpIHsKKwkJCQlpbnQgbmV4dCA9IHRleHQuaW5kZXhPZignXG4nLCBlbmQpOworCQkJCWlmIChuZXh0ICE9IC0xKSB7CisJCQkJCWludCBwcmV2ID0gZW5kOworCQkJCQl3aGlsZSAoKHByZXYgPiAwKSAmJiAodGV4dC5jaGFyQXQocHJldiAtIDEpICE9ICdcbicpKSB7IHByZXYtLTsgfQorCQkJCQlpZiAoa2V5Y29kZSA9PSBLZXlFdmVudC5WS19QQUdFX0RPV04pIHsKKwkJCQkJCWludCBsaW5lcyA9IGdldFJlY3RhbmdsZShjb21wb25lbnQsICI6cG9ydCIpLmhlaWdodCAvCisJCQkJCQkJZ2V0Rm9udE1ldHJpY3MoZ2V0Rm9udCgpKS5nZXRIZWlnaHQoKTsKKwkJCQkJCWZvciAoaW50IG1vcmUgPSAwOyAobGluZXMgPiAxKSAmJgorCQkJCQkJCQkoKG1vcmUgPSB0ZXh0LmluZGV4T2YoJ1xuJywgbmV4dCArIDEpKSAhPSAtMSk7IG5leHQgPSBtb3JlKSB7CisJCQkJCQkJbGluZXMtLTsKKwkJCQkJCX0KKwkJCQkJfQorCQkJCQlpbnQgbGFzdCA9IHRleHQuaW5kZXhPZignXG4nLCBuZXh0ICsgMSk7CisJCQkJCWllbmQgPSBNYXRoLm1pbihuZXh0ICsgMSArIGVuZCAtIHByZXYsCisJCQkJCQkobGFzdCA9PSAtMSkgPyAodGV4dC5sZW5ndGgoKSArIDEpIDogbGFzdCk7CisJCQkJCWlmICghc2hpZnRkb3duKSB7IGlzdGFydCA9IGllbmQ7IH0KKwkJCQl9CisJCQl9CisJCQlyZXR1cm4gY2hhbmdlRmllbGQoY29tcG9uZW50LCB0ZXh0LCBpbnNlcnQsIGlzdGFydCwgaWVuZCwgc3RhcnQsIGVuZCkgPworCQkJCXRydWUgOiBwcm9jZXNzRmllbGQoY29tcG9uZW50LCBzaGlmdGRvd24sIGNvbnRyb2xkb3duLCBtb2RpZmllcnMsCisJCQkJCWtleWNoYXIsIGtleWNvZGUsIHRydWUsIGZhbHNlKTsKKwkJfQorCQllbHNlIGlmICgidGFiYmVkcGFuZSIgPT0gY2xhc3NuYW1lKSB7CisJCQlpZiAoKGtleWNvZGUgPT0gS2V5RXZlbnQuVktfUklHSFQpIHx8IChrZXljb2RlID09IEtleUV2ZW50LlZLX0RPV04pIHx8CisJCQkJCShrZXljb2RlID09IEtleUV2ZW50LlZLX0xFRlQpIHx8IChrZXljb2RlID09IEtleUV2ZW50LlZLX1VQKSkgeworCQkJCWludCBzZWxlY3RlZCA9IGdldEludGVnZXIoY29tcG9uZW50LCAic2VsZWN0ZWQiLCAwKTsKKwkJCQlib29sZWFuIGluY3JlYXNlID0gKGtleWNvZGUgPT0gS2V5RXZlbnQuVktfUklHSFQpIHx8IChrZXljb2RlID09IEtleUV2ZW50LlZLX0RPV04pOworCQkJCWludCBuZXd2YWx1ZSA9IHNlbGVjdGVkOworCQkJCWludCBuID0gaW5jcmVhc2UgPyBnZXRJdGVtQ291bnRJbXBsKGNvbXBvbmVudCwgInRhYiIpIDogMDsKKwkJCQlpbnQgZCA9IChpbmNyZWFzZSA/IDEgOiAtMSk7CQkJCQkJCisJCQkJZm9yIChpbnQgaSA9IHNlbGVjdGVkICsgZDsgaW5jcmVhc2UgPyAoaSA8IG4pICA6IChpID49IDApOyBpICs9IGQpIHsKKwkJCQkJaWYgKGdldEJvb2xlYW4oZ2V0SXRlbUltcGwoY29tcG9uZW50LCAidGFiIiwgaSksICJlbmFibGVkIiwgdHJ1ZSkpIHsKKwkJCQkJCW5ld3ZhbHVlID0gaTsgYnJlYWs7CisJCQkJCX0JCisJCQkJfQorCQkJCWlmIChuZXd2YWx1ZSAhPSBzZWxlY3RlZCkgeworCQkJCQlzZXRJbnRlZ2VyKGNvbXBvbmVudCwgInNlbGVjdGVkIiwgbmV3dmFsdWUsIDApOworCQkJCQlyZXBhaW50KGNvbXBvbmVudCk7CisJCQkJCWludm9rZShjb21wb25lbnQsICJhY3Rpb24iKTsKKwkJCQl9CisJCQl9CisJCX0KKwkJZWxzZSBpZiAoInNwaW5ib3giID09IGNsYXNzbmFtZSkgeworCQkJaWYgKChrZXljb2RlID09IEtleUV2ZW50LlZLX1VQKSB8fCAoa2V5Y29kZSA9PSBLZXlFdmVudC5WS19ET1dOKSkgeworCQkJCXByb2Nlc3NTcGluKGNvbXBvbmVudCwgKGtleWNvZGUgPT0gS2V5RXZlbnQuVktfVVApPyAidXAiIDogImRvd24iKTsKKwkJCQlyZXR1cm4gdHJ1ZTsKKwkJCX0KKwkJCXJldHVybiBwcm9jZXNzRmllbGQoY29tcG9uZW50LCBzaGlmdGRvd24sIGNvbnRyb2xkb3duLCBtb2RpZmllcnMsCisJCQkJa2V5Y2hhciwga2V5Y29kZSwgZmFsc2UsIGZhbHNlKTsKKwkJfQorCQllbHNlIGlmICgic2xpZGVyIiA9PSBjbGFzc25hbWUpIHsKKwkJCWludCB2YWx1ZSA9IGdldEludGVnZXIoY29tcG9uZW50LCAidmFsdWUiLCAwKTsKKwkJCWludCBkID0gMDsKKwkJCWlmICgoa2V5Y29kZSA9PSBLZXlFdmVudC5WS19IT01FKSB8fCAoa2V5Y29kZSA9PSBLZXlFdmVudC5WS19MRUZUKSB8fAorCQkJCQkoa2V5Y29kZSA9PSBLZXlFdmVudC5WS19VUCkgfHwgKGtleWNvZGUgPT0gS2V5RXZlbnQuVktfUEFHRV9VUCkpIHsKKwkJCQlkID0gZ2V0SW50ZWdlcihjb21wb25lbnQsICJtaW5pbXVtIiwgMCkgLSB2YWx1ZTsKKwkJCQlpZiAoKGtleWNvZGUgPT0gS2V5RXZlbnQuVktfTEVGVCkgfHwgKGtleWNvZGUgPT0gS2V5RXZlbnQuVktfVVApKSB7CisJCQkJCWQgPSBNYXRoLm1heChkLCAtZ2V0SW50ZWdlcihjb21wb25lbnQsICJ1bml0IiwgNSkpOworCQkJCX0KKwkJCQllbHNlIGlmIChrZXljb2RlID09IEtleUV2ZW50LlZLX1BBR0VfVVApIHsKKwkJCQkJZCA9IE1hdGgubWF4KGQsIC1nZXRJbnRlZ2VyKGNvbXBvbmVudCwgImJsb2NrIiwgMjUpKTsKKwkJCQl9CisJCQl9CisJCQllbHNlIGlmICgoa2V5Y29kZSA9PSBLZXlFdmVudC5WS19FTkQpIHx8IChrZXljb2RlID09IEtleUV2ZW50LlZLX1JJR0hUKSB8fAorCQkJCQkoa2V5Y29kZSA9PSBLZXlFdmVudC5WS19ET1dOKSB8fCAoa2V5Y29kZSA9PSBLZXlFdmVudC5WS19QQUdFX0RPV04pKSB7CisJCQkJZCA9IGdldEludGVnZXIoY29tcG9uZW50LCAibWF4aW11bSIsIDEwMCkgLSB2YWx1ZTsKKwkJCQlpZiAoKGtleWNvZGUgPT0gS2V5RXZlbnQuVktfUklHSFQpIHx8IChrZXljb2RlID09IEtleUV2ZW50LlZLX0RPV04pKSB7CisJCQkJCWQgPSBNYXRoLm1pbihkLCBnZXRJbnRlZ2VyKGNvbXBvbmVudCwgInVuaXQiLCA1KSk7CisJCQkJfQorCQkJCWVsc2UgaWYgKGtleWNvZGUgPT0gS2V5RXZlbnQuVktfUEFHRV9ET1dOKSB7CisJCQkJCWQgPSBNYXRoLm1pbihkLCBnZXRJbnRlZ2VyKGNvbXBvbmVudCwgImJsb2NrIiwgMjUpKTsKKwkJCQl9CisJCQl9CisJCQlpZiAoZCAhPSAwKSB7CisJCQkJc2V0SW50ZWdlcihjb21wb25lbnQsICJ2YWx1ZSIsIHZhbHVlICsgZCwgMCk7CisJCQkJcmVwYWludChjb21wb25lbnQpOworCQkJCWludm9rZShjb21wb25lbnQsICJhY3Rpb24iKTsKKwkJCX0KKwkJfQorCQllbHNlIGlmICgic3BsaXRwYW5lIiA9PSBjbGFzc25hbWUpIHsKKwkJCWludCBkaXZpZGVyID0gZ2V0SW50ZWdlcihjb21wb25lbnQsICJkaXZpZGVyIiwgLTEpOworCQkJaW50IGQgPSAwOworCQkJaWYgKGtleWNvZGUgPT0gS2V5RXZlbnQuVktfSE9NRSkgeworCQkJCWQgPSAtZGl2aWRlcjsKKwkJCX0KKwkJCWVsc2UgaWYgKChrZXljb2RlID09IEtleUV2ZW50LlZLX0xFRlQpIHx8IChrZXljb2RlID09IEtleUV2ZW50LlZLX1VQKSkgeworCQkJCWQgPSBNYXRoLm1heCgtMTAsIC1kaXZpZGVyKTsKKwkJCX0KKwkJCWVsc2UgaWYgKChrZXljb2RlID09IEtleUV2ZW50LlZLX0VORCkgfHwKKwkJCQkJKGtleWNvZGUgPT0gS2V5RXZlbnQuVktfUklHSFQpIHx8IChrZXljb2RlID09IEtleUV2ZW50LlZLX0RPV04pKSB7CisJCQkJYm9vbGVhbiBob3Jpem9udGFsID0gKCJ2ZXJ0aWNhbCIgIT0gZ2V0KGNvbXBvbmVudCwgIm9yaWVudGF0aW9uIikpOworCQkJCVJlY3RhbmdsZSBib3VuZHMgPSBnZXRSZWN0YW5nbGUoY29tcG9uZW50LCAiYm91bmRzIik7CisJCQkJaW50IG1heCA9IChob3Jpem9udGFsID8gYm91bmRzLndpZHRoIDogYm91bmRzLmhlaWdodCkgLSA1OwkJCQkKKwkJCQlkID0gbWF4IC0gZGl2aWRlcjsKKwkJCQlpZiAoa2V5Y29kZSAhPSBLZXlFdmVudC5WS19FTkQpIHsKKwkJCQkJZCA9IE1hdGgubWluKGQsIDEwKTsKKwkJCQl9CisJCQl9CisJCQlpZiAoZCAhPSAwKSB7CisJCQkJc2V0SW50ZWdlcihjb21wb25lbnQsICJkaXZpZGVyIiwgZGl2aWRlciArIGQsIC0xKTsKKwkJCQl2YWxpZGF0ZShjb21wb25lbnQpOworCQkJfQorCQl9CisJCWVsc2UgaWYgKCJsaXN0IiA9PSBjbGFzc25hbWUpIHsKKwkJCXJldHVybiBwcm9jZXNzTGlzdChjb21wb25lbnQsIHNoaWZ0ZG93biwgY29udHJvbGRvd24sIGtleWNoYXIsIGtleWNvZGUsICJpdGVtIiwgbnVsbCk7CisJCX0KKwkJZWxzZSBpZiAoInRhYmxlIiA9PSBjbGFzc25hbWUpIHsKKwkJCXJldHVybiBwcm9jZXNzTGlzdChjb21wb25lbnQsIHNoaWZ0ZG93biwgY29udHJvbGRvd24sIGtleWNoYXIsIGtleWNvZGUsICJyb3ciLCBudWxsKTsKKwkJfQorCQllbHNlIGlmICgidHJlZSIgPT0gY2xhc3NuYW1lKSB7CisJCQkvLz8gY2xlYXIgY2hpbGRzJyBzZWxlY3Rpb24sIHNlbGVjdCB0aGlzIGlzIGl0cyAJc3Vibm9kZSB3YXMgc2VsZWN0ZWQKKwkJCWlmIChrZXljb2RlID09IEtleUV2ZW50LlZLX0xFRlQpIHsKKwkJCQlPYmplY3QgbGVhZCA9IGdldChjb21wb25lbnQsICJsZWFkIik7CisJCQkJaWYgKChnZXQobGVhZCwgIm5vZGUiKSAhPSBudWxsKSAmJiBnZXRCb29sZWFuKGxlYWQsICJleHBhbmRlZCIsIHRydWUpKSB7CisJCQkJCXNldEJvb2xlYW4obGVhZCwgImV4cGFuZGVkIiwgZmFsc2UsIHRydWUpOworCQkJCQlzZWxlY3RJdGVtKGNvbXBvbmVudCwgbGVhZCwgIm5vZGUiLCAibm9kZSIpOworCQkJCQl2YWxpZGF0ZShjb21wb25lbnQpOworCQkJCQlpbnZva2UoY29tcG9uZW50LCAiY29sbGFwc2UiKTsgLy9sZWFkCisJCQkJCXJldHVybiB0cnVlOworCQkJCX0KKwkJCQllbHNlIHsKKwkJCQkJT2JqZWN0IHBhcmVudCA9IGdldFBhcmVudChsZWFkKTsKKwkJCQkJaWYgKHBhcmVudCAhPSBjb21wb25lbnQpIHsKKwkJCQkJCXNlbGVjdEl0ZW0oY29tcG9uZW50LCBwYXJlbnQsICJub2RlIiwgIm5vZGUiKTsKKwkJCQkJCXNldExlYWQoY29tcG9uZW50LCBsZWFkLCBwYXJlbnQpOworCQkJCQkJcmV0dXJuIHRydWU7CisJCQkJCX0KKwkJCQl9CisJCQl9CisJCQkvLz8gZm9yIGludGVydmFsIG1vZGUgc2VsZWN0IGl0cyBhbGwgc3Vibm9kZSBvciBkZXNlbGVjdCBhbGwgYWZ0ZXIKKwkJCWVsc2UgaWYgKGtleWNvZGUgPT0gS2V5RXZlbnQuVktfUklHSFQpIHsKKwkJCQlPYmplY3QgbGVhZCA9IGdldChjb21wb25lbnQsICJsZWFkIik7CisJCQkJT2JqZWN0IG5vZGUgPSBnZXQobGVhZCwgIm5vZGUiKTsKKwkJCQlpZiAobm9kZSAhPSBudWxsKSB7CisJCQkJCWlmIChnZXRCb29sZWFuKGxlYWQsICJleHBhbmRlZCIsIHRydWUpKSB7CisJCQkJCQlzZWxlY3RJdGVtKGNvbXBvbmVudCwgbm9kZSwgIm5vZGUiLCAibm9kZSIpOworCQkJCQkJc2V0TGVhZChjb21wb25lbnQsIGxlYWQsIG5vZGUpOworCQkJCQl9CisJCQkJCWVsc2UgeworCQkJCQkJc2V0Qm9vbGVhbihsZWFkLCAiZXhwYW5kZWQiLCB0cnVlLCB0cnVlKTsKKwkJCQkJCXNlbGVjdEl0ZW0oY29tcG9uZW50LCBsZWFkLCAibm9kZSIsICJub2RlIik7CisJCQkJCQl2YWxpZGF0ZShjb21wb25lbnQpOworCQkJCQkJaW52b2tlKGNvbXBvbmVudCwgImV4cGFuZCIpOyAvL2xlYWQKKwkJCQkJfQorCQkJCQlyZXR1cm4gdHJ1ZTsKKwkJCQl9CisJCQl9CisJCQlyZXR1cm4gcHJvY2Vzc0xpc3QoY29tcG9uZW50LCBzaGlmdGRvd24sIGNvbnRyb2xkb3duLCBrZXljaGFyLCBrZXljb2RlLCAibm9kZSIsICJub2RlIik7CisJCX0KKwkJZWxzZSBpZiAoIm1lbnViYXIiID09IGNsYXNzbmFtZSkgeworCQkJT2JqZWN0IHByZXZpb3VzID0gbnVsbDsgT2JqZWN0IGxhc3QgPSBudWxsOworCQkJZm9yIChPYmplY3QgaSA9IGdldChjb21wb25lbnQsICJwb3B1cG1lbnUiKTsKKwkJCQkJaSAhPSBudWxsOyBpID0gZ2V0KGksICJwb3B1cG1lbnUiKSkgeworCQkJCXByZXZpb3VzID0gbGFzdDsgbGFzdCA9IGk7CisJCQl9CisJCQlPYmplY3Qgc2VsZWN0ZWQgPSBnZXQobGFzdCwgInNlbGVjdGVkIik7CisJCQlPYmplY3QgaG90cG9wdXAgPSAoKHNlbGVjdGVkICE9IG51bGwpIHx8IChwcmV2aW91cyA9PSBudWxsKSkgPworCQkJCWxhc3QgOiBwcmV2aW91czsKKwkJCWlmICgoc2VsZWN0ZWQgPT0gbnVsbCkgJiYgKHByZXZpb3VzICE9IG51bGwpKSB7CisJCQkJc2VsZWN0ZWQgPSBnZXQocHJldmlvdXMsICJzZWxlY3RlZCIpOworCQkJfQorCisJCQlpZiAoKGtleWNvZGUgPT0gS2V5RXZlbnQuVktfVVApIHx8IChrZXljb2RlID09IEtleUV2ZW50LlZLX0RPV04pKSB7CisJCQkJc2V0KGhvdHBvcHVwLCAic2VsZWN0ZWQiLCBudWxsKTsKKwkJCQlwb3B1cChob3Rwb3B1cCwgInBvcHVwbWVudSIpOworCQkJCXNlbGVjdGVkID0gZ2V0TWVudShob3Rwb3B1cCwKKwkJCQkJc2VsZWN0ZWQsIGtleWNvZGUgPT0gS2V5RXZlbnQuVktfRE9XTiwgdHJ1ZSk7CisJCQkJc2V0KGhvdHBvcHVwLCAic2VsZWN0ZWQiLCBzZWxlY3RlZCk7CisJCQkJcmVwYWludChob3Rwb3B1cCk7CisJCQl9CisJCQllbHNlIGlmIChrZXljb2RlID09IEtleUV2ZW50LlZLX0xFRlQpIHsKKwkJCQlpZiAocHJldmlvdXMgIT0gbnVsbCkgeworCQkJCQlzZWxlY3RlZCA9IGdldChwcmV2aW91cywgInNlbGVjdGVkIik7CisJCQkJCXNldChwcmV2aW91cywgInNlbGVjdGVkIiwgbnVsbCk7CisJCQkJCXBvcHVwKHByZXZpb3VzLCAicG9wdXBtZW51Iik7CisJCQkJCXNldChwcmV2aW91cywgInNlbGVjdGVkIiwgc2VsZWN0ZWQpOworCQkJCQlyZXBhaW50KHByZXZpb3VzKTsgLy8gLCBzZWxlY3RlZAorCQkJCX0KKwkJCQllbHNlIHsKKwkJCQkJc2VsZWN0ZWQgPSBnZXRNZW51KGNvbXBvbmVudCwgZ2V0KGNvbXBvbmVudCwgInNlbGVjdGVkIiksIGZhbHNlLCBmYWxzZSk7CisJCQkJCXNldChjb21wb25lbnQsICJzZWxlY3RlZCIsIHNlbGVjdGVkKTsKKwkJCQkJT2JqZWN0IHBvcHVwID0gcG9wdXAoY29tcG9uZW50LCAibWVudWJhciIpOworCQkJCQlzZXQocG9wdXAsICJzZWxlY3RlZCIsIGdldE1lbnUocG9wdXAsIG51bGwsIHRydWUsIHRydWUpKTsKKwkJCQkJcmVwYWludChjb21wb25lbnQpOyAvLyAsIHNlbGVjdGVkCisJCQkJfQorCQkJfQorCQkJZWxzZSBpZiAoa2V5Y29kZSA9PSBLZXlFdmVudC5WS19SSUdIVCkgeworCQkJCWlmICgocHJldmlvdXMgIT0gbnVsbCkgJiYgKHNlbGVjdGVkID09IG51bGwpKSB7CisJCQkJCXNldChsYXN0LCAic2VsZWN0ZWQiLCBnZXQoZ2V0KGxhc3QsICJtZW51IiksICJtZW51IikpOworCQkJCQlyZXBhaW50KGxhc3QpOyAvLyAsIHNlbGVjdGVkCisJCQkJfQorCQkJCWVsc2UgaWYgKChzZWxlY3RlZCAhPSBudWxsKSAmJiAoZ2V0Q2xhc3Moc2VsZWN0ZWQpID09ICJtZW51IikpIHsKKwkJCQkJT2JqZWN0IHBvcHVwID0gcG9wdXAobGFzdCwgInBvcHVwbWVudSIpOworCQkJCQlzZXQocG9wdXAsICJzZWxlY3RlZCIsIGdldChnZXQocG9wdXAsICJtZW51IiksICJtZW51IikpOworCQkJCX0KKwkJCQllbHNlIHsKKwkJCQkJc2VsZWN0ZWQgPSBnZXRNZW51KGNvbXBvbmVudCwgZ2V0KGNvbXBvbmVudCwgInNlbGVjdGVkIiksIHRydWUsIGZhbHNlKTsKKwkJCQkJc2V0KGNvbXBvbmVudCwgInNlbGVjdGVkIiwgc2VsZWN0ZWQpOworCQkJCQlPYmplY3QgcG9wdXAgPSBwb3B1cChjb21wb25lbnQsICJtZW51YmFyIik7CisJCQkJCXNldChwb3B1cCwgInNlbGVjdGVkIiwgZ2V0TWVudShwb3B1cCwgbnVsbCwgdHJ1ZSwgdHJ1ZSkpOworCQkJCQlyZXBhaW50KGNvbXBvbmVudCk7IC8vICwgc2VsZWN0ZWQKKwkJCQl9CisJCQl9CisJCQllbHNlIGlmICgoa2V5Y29kZSA9PSBLZXlFdmVudC5WS19FTlRFUikgfHwKKwkJCQkJKGtleWNoYXIgPT0gS2V5RXZlbnQuVktfU1BBQ0UpIHx8IChrZXljb2RlID09IEtleUV2ZW50LlZLX0VTQ0FQRSkpIHsKKwkJCQlpZiAoKGtleWNvZGUgIT0gS2V5RXZlbnQuVktfRVNDQVBFKSAmJgorCQkJCQkJZ2V0Qm9vbGVhbihzZWxlY3RlZCwgImVuYWJsZWQiLCB0cnVlKSkgeworCQkJCQlpZiAoKHNlbGVjdGVkICE9IG51bGwpICYmIChnZXRDbGFzcyhzZWxlY3RlZCkgPT0gImNoZWNrYm94bWVudWl0ZW0iKSkgeworCQkJCQkJY2hhbmdlQ2hlY2soc2VsZWN0ZWQsIGZhbHNlKTsKKwkJCQkJfQorCQkJCQllbHNlIGludm9rZShzZWxlY3RlZCwgImFjdGlvbiIpOworCQkJCX0KKwkJCQljbG9zZXVwKGNvbXBvbmVudCk7CisJCQl9CisJCQllbHNlIHJldHVybiBmYWxzZTsKKwkJCXJldHVybiB0cnVlOworCQl9CisJCXJldHVybiBmYWxzZTsKKwl9CisKKwkvKioKKwkgKgorCSAqLworCXByaXZhdGUgYm9vbGVhbiBjaGFuZ2VDaGVjayhPYmplY3QgY29tcG9uZW50LCBib29sZWFuIGJveCkgeworCQlTdHJpbmcgZ3JvdXAgPSBnZXRTdHJpbmcoY29tcG9uZW50LCAiZ3JvdXAiLCBudWxsKTsKKwkJaWYgKGdyb3VwICE9IG51bGwpIHsKKwkJCWlmIChnZXRCb29sZWFuKGNvbXBvbmVudCwgInNlbGVjdGVkIiwgZmFsc2UpKSB7IHJldHVybiBmYWxzZTsgfQorCQkJZm9yIChPYmplY3QgY29tcCA9IGdldChnZXRQYXJlbnQoY29tcG9uZW50KSwKKwkJCQkJYm94ID8gImNvbXBvbmVudCIgOiAibWVudSIpOyBjb21wICE9IG51bGw7IGNvbXAgPSBnZXQoY29tcCwgIjpuZXh0IikpIHsKKwkJCQlpZiAoY29tcCA9PSBjb21wb25lbnQpIHsKKwkJCQkJc2V0Qm9vbGVhbihjb21wb25lbnQsICJzZWxlY3RlZCIsIHRydWUpOworCQkJCX0KKwkJCQllbHNlIGlmIChncm91cC5lcXVhbHMoZ2V0KGNvbXAsICJncm91cCIpKSAmJgorCQkJCQkJZ2V0Qm9vbGVhbihjb21wLCAic2VsZWN0ZWQiLCBmYWxzZSkpIHsKKwkJCQkJc2V0Qm9vbGVhbihjb21wLCAic2VsZWN0ZWQiLCBmYWxzZSk7CisJCQkJCWlmIChib3gpIHsgcmVwYWludChjb21wKTsgfSAvL2NoZWNrYm94IG9ubHkKKwkJCQl9CisJCQl9CisJCX0KKwkJZWxzZSB7CisJCQlzZXRCb29sZWFuKGNvbXBvbmVudCwgInNlbGVjdGVkIiwKKwkJCQkhZ2V0Qm9vbGVhbihjb21wb25lbnQsICJzZWxlY3RlZCIsIGZhbHNlKSwgZmFsc2UpOworCQl9CisJCWludm9rZShjb21wb25lbnQsICJhY3Rpb24iKTsKKwkJcmV0dXJuIHRydWU7CisJfQorCisJLyoqCisJICoKKwkgKi8KKwlwcml2YXRlIE9iamVjdCBnZXRNZW51KE9iamVjdCBjb21wb25lbnQsIE9iamVjdCBwYXJ0LAorCQkJYm9vbGVhbiBmb3J3YXJkLCBib29sZWFuIHBvcHVwKSB7CisJCWlmIChmb3J3YXJkKSB7CisJCQlpZiAocGFydCAhPSBudWxsKSB7IHBhcnQgPSBnZXQocGFydCwgIjpuZXh0Iik7IH0KKwkJCWlmIChwYXJ0ID09IG51bGwpIHsKKwkJCQlwYXJ0ID0gZ2V0KHBvcHVwID8gZ2V0KGNvbXBvbmVudCwgIm1lbnUiKSA6IGNvbXBvbmVudCwgIm1lbnUiKTsKKwkJCX0KKwkJfQorCQllbHNlIHsKKwkJCU9iamVjdCBwcmV2ID0gZ2V0KHBvcHVwID8gZ2V0KGNvbXBvbmVudCwgIm1lbnUiKSA6IGNvbXBvbmVudCwgIm1lbnUiKTsKKwkJCWZvciAoT2JqZWN0IG5leHQgPSBnZXQocHJldiwgIjpuZXh0Iik7CisJCQkJCShuZXh0ICE9IG51bGwpICYmIChuZXh0ICE9IHBhcnQpOyBuZXh0ID0gZ2V0KG5leHQsICI6bmV4dCIpKSB7CisJCQkJcHJldiA9IG5leHQ7CisJCQl9CisJCQlwYXJ0ID0gcHJldjsKKwkJfQorCQlyZXR1cm4gKGdldENsYXNzKHBhcnQpID09ICJzZXBhcmF0b3IiKSA/CisJCQlnZXRNZW51KGNvbXBvbmVudCwgcGFydCwgZm9yd2FyZCwgcG9wdXApIDogcGFydDsKKwl9CisKKwkvKioKKwkgKgorCSAqLworCS8qcHJpdmF0ZSBib29sZWFuIHByb2Nlc3NLZXlSZWxlYXNlKE9iamVjdCBjb21wb25lbnQsIEtleUV2ZW50IGUsIGludCBrZXljb2RlKSB7CisJCXJldHVybiB0cnVlOworCX0qLworCisJLyoqCisJICoKKwkgKi8KKwlwcml2YXRlIGJvb2xlYW4gcHJvY2Vzc0ZpZWxkKE9iamVjdCBjb21wb25lbnQsCisJCQlib29sZWFuIHNoaWZ0ZG93biwgYm9vbGVhbiBjb250cm9sZG93biwgaW50IG1vZGlmaWVycywKKwkJCWludCBrZXljaGFyLCBpbnQga2V5Y29kZSwgYm9vbGVhbiBtdWx0aWxpbmUsIGJvb2xlYW4gaGlkZGVuKSB7CisJCVN0cmluZyB0ZXh0ID0gZ2V0U3RyaW5nKGNvbXBvbmVudCwgInRleHQiLCAiIik7IAorCQlpbnQgc3RhcnQgPSBnZXRJbnRlZ2VyKGNvbXBvbmVudCwgInN0YXJ0IiwgMCk7CisJCWludCBlbmQgPSBnZXRJbnRlZ2VyKGNvbXBvbmVudCwgImVuZCIsIDApOworCQlib29sZWFuIGVkaXRhYmxlID0gZ2V0Qm9vbGVhbihjb21wb25lbnQsICJlZGl0YWJsZSIsIHRydWUpOworCisJCWludCBpc3RhcnQgPSBzdGFydDsKKwkJaW50IGllbmQgPSBlbmQ7CisJCVN0cmluZyBpbnNlcnQgPSBudWxsOworCQkvL21pZHAgaWYgKGVkaXRhYmxlICYmIChrZXljaGFyICE9IDApKSB7CisJCWlmIChlZGl0YWJsZSAmJiAoa2V5Y2hhciAhPSAwKSAmJiAvL2phdmEKKwkJCSgobW9kaWZpZXJzID09IDApIHx8IChtb2RpZmllcnMgPT0gSW5wdXRFdmVudC5TSElGVF9NQVNLKSkpIHsgLy9qYXZhCisJCQlpbnNlcnQgPSBTdHJpbmcudmFsdWVPZigoY2hhcikga2V5Y2hhcik7CisJCX0KKwkJZWxzZSBpZiAobXVsdGlsaW5lICYmIGVkaXRhYmxlICYmIChrZXljb2RlID09IEtleUV2ZW50LlZLX0VOVEVSKSkgeworCQkJaW5zZXJ0ID0gIlxuIjsKKwkJfQorCQllbHNlIGlmIChlZGl0YWJsZSAmJiAoa2V5Y29kZSA9PSBLZXlFdmVudC5WS19CQUNLX1NQQUNFKSkgeworCQkJaW5zZXJ0ID0gIiI7CisJCQlpZiAoc3RhcnQgPT0gZW5kKSB7IGlzdGFydCAtPSAxOyB9CisJCX0KKwkJZWxzZSBpZiAoa2V5Y29kZSA9PSBLZXlFdmVudC5WS19FTkQpIHsKKwkJCWllbmQgPSB0ZXh0Lmxlbmd0aCgpOworCQkJaWYgKCFzaGlmdGRvd24pIHsgaXN0YXJ0ID0gaWVuZDsgfQorCQl9CisJCWVsc2UgaWYgKGtleWNvZGUgPT0gS2V5RXZlbnQuVktfSE9NRSkgeworCQkJaWVuZCA9IDA7CisJCQlpZiAoIXNoaWZ0ZG93bikgeyBpc3RhcnQgPSBpZW5kOyB9CisJCX0KKwkJZWxzZSBpZiAoa2V5Y29kZSA9PSBLZXlFdmVudC5WS19MRUZUKSB7CisJCQkvL2phdmE+CisJCQlpZiAoY29udHJvbGRvd24pIHsKKwkJCQlmb3IgKGludCBpID0gMDsgaSA8IDI7IGkrKykgeworCQkJCQl3aGlsZSAoKGllbmQgPiAwKSAmJiAoKGkgIT0gMCkgPT0KKwkJCQkJCUNoYXJhY3Rlci5pc0xldHRlck9yRGlnaXQodGV4dC5jaGFyQXQoaWVuZCAtIDEpKSkpIHsgaWVuZC0tOyB9CQorCQkJCX0KKwkJCX0gZWxzZSB7CisJCQkJaWVuZCAtPSAxOworCQkJfQorCQkJLy88amF2YQorCQkJLy9taWRwIGllbmQgLT0gMTsKKwkJCWlmICghc2hpZnRkb3duKSB7IGlzdGFydCA9IGllbmQ7IH0KKwkJfQorCQllbHNlIGlmIChrZXljb2RlID09IEtleUV2ZW50LlZLX1JJR0hUKSB7CisJCQkvL2phdmE+CisJCQlpZiAoY29udHJvbGRvd24pIHsKKwkJCQlmb3IgKGludCBpID0gMDsgaSA8IDI7IGkrKykgeworCQkJCQl3aGlsZSAoKGllbmQgPCB0ZXh0Lmxlbmd0aCgpKSAmJiAoKGkgPT0gMCkgPT0KKwkJCQkJCUNoYXJhY3Rlci5pc0xldHRlck9yRGlnaXQodGV4dC5jaGFyQXQoaWVuZCkpKSkgeyBpZW5kKys7IH0KKwkJCQl9CisJCQl9IGVsc2UgeworCQkJCWllbmQgKz0gMTsKKwkJCX0KKwkJCS8vPGphdmEKKwkJCS8vbWlkcCBpZW5kICs9IDE7CisJCQlpZiAoIXNoaWZ0ZG93bikgeyBpc3RhcnQgPSBpZW5kOyB9CisJCX0KKwkJZWxzZSBpZiAoZWRpdGFibGUgJiYgKGtleWNvZGUgPT0gS2V5RXZlbnQuVktfREVMRVRFKSkgeworCQkJaW5zZXJ0ID0gIiI7CisJCQlpZiAoc3RhcnQgPT0gZW5kKSB7IGllbmQgKz0gMTsgfQorCQl9CisJCWVsc2UgaWYgKGNvbnRyb2xkb3duICYmCisJCQkJKChrZXljb2RlID09IEtleUV2ZW50LlZLX0EpIHx8IChrZXljb2RlID09IDB4QkYpKSkgeworCQkJaXN0YXJ0ID0gMDsgLy8gS2V5RXZlbnQuVktfU0xBU0gKKwkJCWllbmQgPSB0ZXh0Lmxlbmd0aCgpOworCQl9CisJCWVsc2UgaWYgKGNvbnRyb2xkb3duICYmIChrZXljb2RlID09IDB4REMpKSB7CisJCQlpc3RhcnQgPSBpZW5kID0gdGV4dC5sZW5ndGgoKTsgLy8gS2V5RXZlbnQuVktfQkFDS19TTEFTSAorCQl9CisJCWVsc2UgaWYgKChlZGl0YWJsZSAmJiAhaGlkZGVuICYmIGNvbnRyb2xkb3duICYmIChrZXljb2RlID09IEtleUV2ZW50LlZLX1gpKSB8fAorCQkJCSghaGlkZGVuICYmIGNvbnRyb2xkb3duICYmIChrZXljb2RlID09IEtleUV2ZW50LlZLX0MpKSkgeworCQkJaWYgKHN0YXJ0ICE9IGVuZCkgeworCQkJCWNsaXBib2FyZCA9IHRleHQuc3Vic3RyaW5nKAorCQkJCQlNYXRoLm1pbihzdGFydCwgZW5kKSwgTWF0aC5tYXgoc3RhcnQsIGVuZCkpOworCQkJCS8vamF2YT4KKwkJCQl0cnkgeworCQkJCQkvKiBQZXJzb25hbCBCYXNpcyBQcm9maWxlIGRvZXNuJ3QgY29udGFpbiBkYXRhdHJhbnNmZXIgcGFja2FnZQorCQkJCQlUb29sa2l0IHRvb2xraXQgPSBnZXRUb29sa2l0KCk7CisJCQkJCU9iamVjdCBzeXN0ZW1jbGlwYm9hcmQgPSB0b29sa2l0LmdldENsYXNzKCkuZ2V0TWV0aG9kKCJnZXRTeXN0ZW1DbGlwYm9hcmQiLCBudWxsKS5pbnZva2UodG9vbGtpdCwgbnVsbCk7CisJCQkJCUNsYXNzIHNlbGVjdGlvbmNsYXNzID0gQ2xhc3MuZm9yTmFtZSgiamF2YS5hd3QuZGF0YXRyYW5zZmVyLiIgKyAiU3RyaW5nU2VsZWN0aW9uIik7CisJCQkJCU9iamVjdCBzZWxlY3Rpb24gPSBzZWxlY3Rpb25jbGFzcy5nZXRDb25zdHJ1Y3RvcihuZXcgQ2xhc3NbXSB7IFN0cmluZy5jbGFzcyB9KS4KKwkJCQkJCW5ld0luc3RhbmNlKG5ldyBPYmplY3RbXSB7IGNsaXBib2FyZCB9KTsKKwkJCQkJc3lzdGVtY2xpcGJvYXJkLmdldENsYXNzKCkuZ2V0TWV0aG9kKCJzZXRDb250ZW50cyIsIG5ldyBDbGFzc1tdIHsKKwkJCQkJCQlDbGFzcy5mb3JOYW1lKCJqYXZhLmF3dC5kYXRhdHJhbnNmZXIuIiArICJUcmFuc2ZlcmFibGUiKSwKKwkJCQkJCQlDbGFzcy5mb3JOYW1lKCJqYXZhLmF3dC5kYXRhdHJhbnNmZXIuIiArICJDbGlwYm9hcmRPd25lciIpIH0pLgorCQkJCQkJaW52b2tlKHN5c3RlbWNsaXBib2FyZCwgbmV3IE9iamVjdFtdIHsgc2VsZWN0aW9uLCBudWxsIH0pOyovCQkJCQkKKwkJCQkJZ2V0VG9vbGtpdCgpLmdldFN5c3RlbUNsaXBib2FyZCgpLnNldENvbnRlbnRzKAorCQkJCQkJbmV3IFN0cmluZ1NlbGVjdGlvbihjbGlwYm9hcmQpLCBudWxsKTsKKwkJCQl9IGNhdGNoIChFeGNlcHRpb24gZXhjKSB7fQorCQkJCS8vPGphdmEKKwkJCQlpZiAoa2V5Y29kZSA9PSBLZXlFdmVudC5WS19YKSB7IGluc2VydCA9ICIiOyB9CisJCQl9CisJCX0KKwkJZWxzZSBpZiAoZWRpdGFibGUgJiYgY29udHJvbGRvd24gJiYgKGtleWNvZGUgPT0gS2V5RXZlbnQuVktfVikpIHsKKwkJCS8vamF2YT4KKwkJCXRyeSB7CisJCQkJLyogbm8gZGF0YXRyYW5zZmVyIHBhY2thZ2UgaW4gUEJQCisJCQkJVG9vbGtpdCB0b29sa2l0ID0gZ2V0VG9vbGtpdCgpOworCQkJCU9iamVjdCBzeXN0ZW1jbGlwYm9hcmQgPSB0b29sa2l0LmdldENsYXNzKCkuZ2V0TWV0aG9kKCJnZXRTeXN0ZW1DbGlwYm9hcmQiLCBudWxsKS5pbnZva2UodG9vbGtpdCwgbnVsbCk7CisJCQkJT2JqZWN0IGNvbnRlbnRzID0gc3lzdGVtY2xpcGJvYXJkLmdldENsYXNzKCkuZ2V0TWV0aG9kKCJnZXRDb250ZW50cyIsIG5ldyBDbGFzc1tdIHsgT2JqZWN0LmNsYXNzIH0pLgorCQkJCQlpbnZva2Uoc3lzdGVtY2xpcGJvYXJkLCBuZXcgT2JqZWN0W10geyB0aGlzIH0pOworCQkJCUNsYXNzIGRhdGFmbGF2b3IgPSBDbGFzcy5mb3JOYW1lKCJqYXZhLmF3dC5kYXRhdHJhbnNmZXIuIiArICJEYXRhRmxhdm9yIik7CisJCQkJaW5zZXJ0ID0gKFN0cmluZykgKGNvbnRlbnRzLmdldENsYXNzKCkuZ2V0TWV0aG9kKCJnZXRUcmFuc2ZlckRhdGEiLCBuZXcgQ2xhc3NbXSB7IGRhdGFmbGF2b3IgfSkuCisJCQkJCWludm9rZShjb250ZW50cywgbmV3IE9iamVjdFtdIHsgZGF0YWZsYXZvci5nZXRGaWVsZCgic3RyaW5nRmxhdm9yIikuZ2V0KG51bGwpIH0pKTsqLworCQkJCWluc2VydCA9IChTdHJpbmcpIGdldFRvb2xraXQoKS5nZXRTeXN0ZW1DbGlwYm9hcmQoKS4KKwkJCQkJZ2V0Q29udGVudHModGhpcykuZ2V0VHJhbnNmZXJEYXRhKERhdGFGbGF2b3Iuc3RyaW5nRmxhdm9yKTsKKwkJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBleGMpIHsKKwkJCQlpbnNlcnQgPSBjbGlwYm9hcmQ7CisJCQl9CisJCQkvLzxqYXZhCisJCQkvL21pZHAgaW5zZXJ0ID0gY2xpcGJvYXJkOworCQkJU3RyaW5nQnVmZmVyIGZpbHRlcmVkID0gbmV3IFN0cmluZ0J1ZmZlcihpbnNlcnQubGVuZ3RoKCkpOworCQkJZm9yIChpbnQgaSA9IDA7IGkgPCBpbnNlcnQubGVuZ3RoKCk7IGkrKykgeworCQkJCWNoYXIgY2tleSA9IGluc2VydC5jaGFyQXQoaSk7CisJCQkJaWYgKCgoY2tleSA+IDB4MWYpICYmIChja2V5IDwgMHg3ZikpIHx8CisJCQkJCQkoKGNrZXkgPiAweDlmKSAmJiAoY2tleSA8IDB4ZmZmZikpIHx8CisJCQkJCQkobXVsdGlsaW5lICYmIChja2V5ID09ICdcbicpKSkgeworCQkJCQlmaWx0ZXJlZC5hcHBlbmQoY2tleSk7CisJCQkJfQorCQkJfQorCQkJaWYgKGZpbHRlcmVkLmxlbmd0aCgpICE9IGluc2VydC5sZW5ndGgoKSkgeworCQkJCWluc2VydCA9IGZpbHRlcmVkLnRvU3RyaW5nKCk7CisJCQl9CisJCX0KKwkJcmV0dXJuIGNoYW5nZUZpZWxkKGNvbXBvbmVudCwgdGV4dCwgaW5zZXJ0LCBpc3RhcnQsIGllbmQsIHN0YXJ0LCBlbmQpOworCX0KKworCS8qKgorCSAqCisJICovCisJcHJpdmF0ZSBib29sZWFuIGNoYW5nZUZpZWxkKE9iamVjdCBjb21wb25lbnQsIFN0cmluZyB0ZXh0LCBTdHJpbmcgaW5zZXJ0LAorCQkJaW50IG1vdmVzdGFydCwgaW50IG1vdmVlbmQsIGludCBzdGFydCwgaW50IGVuZCkgeworCQlpZiAoKGluc2VydCA9PSBudWxsKSAmJiAoc3RhcnQgPT0gbW92ZXN0YXJ0KSAmJiAoZW5kID09IG1vdmVlbmQpKSB7CisJCQlyZXR1cm4gZmFsc2U7CisJCX0KKwkJbW92ZXN0YXJ0ID0gTWF0aC5tYXgoMCwgTWF0aC5taW4obW92ZXN0YXJ0LCB0ZXh0Lmxlbmd0aCgpKSk7CisJCW1vdmVlbmQgPSBNYXRoLm1heCgwLCBNYXRoLm1pbihtb3ZlZW5kLCB0ZXh0Lmxlbmd0aCgpKSk7CisJCWlmIChpbnNlcnQgIT0gbnVsbCkgeworCQkJaW50IG1pbiA9IE1hdGgubWluKG1vdmVzdGFydCwgbW92ZWVuZCk7CisJCQlzZXQoY29tcG9uZW50LCAidGV4dCIsIHRleHQuc3Vic3RyaW5nKDAsIG1pbikgKyBpbnNlcnQgKworCQkJCXRleHQuc3Vic3RyaW5nKE1hdGgubWF4KG1vdmVzdGFydCwgbW92ZWVuZCkpKTsKKwkJCW1vdmVzdGFydCA9IG1vdmVlbmQgPSBtaW4gKyBpbnNlcnQubGVuZ3RoKCk7CisJCQlpbnZva2UoY29tcG9uZW50LCAiYWN0aW9uIik7CisJCX0KKwkJaWYgKHN0YXJ0ICE9IG1vdmVzdGFydCkgeyBzZXRJbnRlZ2VyKGNvbXBvbmVudCwgInN0YXJ0IiwgbW92ZXN0YXJ0LCAwKTsgfQorCQlpZiAoZW5kICE9IG1vdmVlbmQpIHsgc2V0SW50ZWdlcihjb21wb25lbnQsICJlbmQiLCBtb3ZlZW5kLCAwKTsgfQorCQlpZiAoKGluc2VydCAhPSBudWxsKSB8fCAoc3RhcnQgIT0gbW92ZXN0YXJ0KSB8fCAoZW5kICE9IG1vdmVlbmQpKSB7CisJCQl2YWxpZGF0ZShjb21wb25lbnQpOworCQl9CisJCXJldHVybiB0cnVlOworCX0KKworCS8qKgorCSAqCisJICovCisJcHJpdmF0ZSBib29sZWFuIHByb2Nlc3NMaXN0KE9iamVjdCBjb21wb25lbnQsIGJvb2xlYW4gc2hpZnRkb3duLCBib29sZWFuIGNvbnRyb2xkb3duLAorCQkJaW50IGtleWNoYXIsIGludCBrZXljb2RlLCBTdHJpbmcgaXRlbW5hbWUsIFN0cmluZyBsZWFmbmFtZSkgeworCQlpZiAoKGtleWNvZGUgPT0gS2V5RXZlbnQuVktfVVApIHx8CisJCQkJKGtleWNvZGUgPT0gS2V5RXZlbnQuVktfRE9XTikgfHwgKGtleWNvZGUgPT0gS2V5RXZlbnQuVktfUEFHRV9VUCkgfHwKKwkJCQkoa2V5Y29kZSA9PSBLZXlFdmVudC5WS19QQUdFX0RPV04pIHx8CisJCQkJKGtleWNvZGUgPT0gS2V5RXZlbnQuVktfSE9NRSkgfHwgKGtleWNvZGUgPT0gS2V5RXZlbnQuVktfRU5EKSkgeworCQkJT2JqZWN0IGxlYWQgPSBnZXQoY29tcG9uZW50LCAibGVhZCIpOworCQkJT2JqZWN0IHJvdyA9IGdldExpc3RJdGVtKGNvbXBvbmVudCwgY29tcG9uZW50LAorCQkJCWtleWNvZGUsIGxlYWQsIGl0ZW1uYW1lLCBsZWFmbmFtZSk7CisJCQlpZiAocm93ICE9IG51bGwpIHsKKwkJCQlTdHJpbmcgc2VsZWN0aW9uID0gZ2V0U3RyaW5nKGNvbXBvbmVudCwgInNlbGVjdGlvbiIsICJzaW5nbGUiKTsKKwkJCQlpZiAoc2hpZnRkb3duICYmIChzZWxlY3Rpb24gIT0gInNpbmdsZSIpICYmIChsZWFkICE9IG51bGwpKSB7CisJCQkJCWV4dGVuZChjb21wb25lbnQsIGxlYWQsIHJvdywgaXRlbW5hbWUsIGxlYWZuYW1lKTsKKwkJCQl9CisJCQkJZWxzZSBpZiAoIWNvbnRyb2xkb3duKSB7CisJCQkJCXNlbGVjdEl0ZW0oY29tcG9uZW50LCByb3csIGl0ZW1uYW1lLCBsZWFmbmFtZSk7CisJCQkJfQorCQkJCXNldExlYWQoY29tcG9uZW50LCBsZWFkLCByb3cpOworCQkJCVJlY3RhbmdsZSByID0gZ2V0UmVjdGFuZ2xlKHJvdywgImJvdW5kcyIpOworCQkJCXNjcm9sbFRvVmlzaWJsZShjb21wb25lbnQsIHIueCwgci55LCAwLCByLmhlaWdodCAtIDEpOworCQkJCXJldHVybiB0cnVlOworCQkJfQorCQl9CisJCWVsc2UgaWYgKGtleWNoYXIgPT0gS2V5RXZlbnQuVktfU1BBQ0UpIHsKKwkJCXNlbGVjdChjb21wb25lbnQsIGdldChjb21wb25lbnQsICJsZWFkIiksCisJCQkJaXRlbW5hbWUsIGxlYWZuYW1lLCBzaGlmdGRvd24sIGNvbnRyb2xkb3duKTsgLy8uLi4KKwkJCXJldHVybiB0cnVlOworCQl9CisJCWVsc2UgaWYgKGNvbnRyb2xkb3duKSB7CisJCQlpZiAoKChrZXljb2RlID09IEtleUV2ZW50LlZLX0EpIHx8IChrZXljb2RlID09IDB4QkYpKSAmJiAvL0tleUV2ZW50LlZLX1NMQVNICisJCQkJCShnZXRTdHJpbmcoY29tcG9uZW50LCAic2VsZWN0aW9uIiwgInNpbmdsZSIpICE9ICJzaW5nbGUiKSkgeworCQkJCXNlbGVjdEFsbChjb21wb25lbnQsIHRydWUsIGl0ZW1uYW1lLCBsZWFmbmFtZSk7CisJCQkJcmV0dXJuIHRydWU7CisJCQl9CisJCQllbHNlIGlmIChrZXljb2RlID09IDB4REMpIHsgLy9LZXlFdmVudC5WS19CQUNLX1NMQVNICisJCQkJc2VsZWN0QWxsKGNvbXBvbmVudCwgZmFsc2UsIGl0ZW1uYW1lLCBsZWFmbmFtZSk7CisJCQkJcmV0dXJuIHRydWU7CisJCQl9CisJCX0KKwkJcmV0dXJuIGZhbHNlOworCX0KKworCS8qKgorCSAqCisJICovCisJcHJpdmF0ZSBPYmplY3QgZ2V0TGlzdEl0ZW0oT2JqZWN0IGNvbXBvbmVudCwgT2JqZWN0IHNjcm9sbHBhbmUsCisJCQlpbnQga2V5Y29kZSwgT2JqZWN0IGxlYWQsIFN0cmluZyBpdGVtbmFtZSwgU3RyaW5nIGxlYWZuYW1lKSB7CisJCU9iamVjdCByb3cgPSBudWxsOworCQlpZiAoa2V5Y29kZSA9PSBLZXlFdmVudC5WS19VUCkgeworCQkJZm9yIChPYmplY3QgcHJldiA9IGdldChjb21wb25lbnQsIGl0ZW1uYW1lKTsgcHJldiAhPSBsZWFkOworCQkJCQlwcmV2ID0gZ2V0TmV4dEl0ZW0oY29tcG9uZW50LCBwcmV2LCBsZWFmbmFtZSkpIHsKKwkJCQlyb3cgPSBwcmV2OyAvLyBjb21wb25lbnQgLT4gZ2V0UGFyZW50KGxlYWQpCisJCQl9CisJCX0KKwkJZWxzZSBpZiAoa2V5Y29kZSA9PSBLZXlFdmVudC5WS19ET1dOKSB7CisJCQlyb3cgPSAobGVhZCA9PSBudWxsKSA/IGdldChjb21wb25lbnQsIGl0ZW1uYW1lKSA6CisJCQkJZ2V0TmV4dEl0ZW0oY29tcG9uZW50LCBsZWFkLCBsZWFmbmFtZSk7CisJCX0KKwkJZWxzZSBpZiAoKGtleWNvZGUgPT0gS2V5RXZlbnQuVktfUEFHRV9VUCkgfHwKKwkJCQkoa2V5Y29kZSA9PSBLZXlFdmVudC5WS19QQUdFX0RPV04pKSB7CisJCQlSZWN0YW5nbGUgdmlldyA9IGdldFJlY3RhbmdsZShzY3JvbGxwYW5lLCAiOnZpZXciKTsKKwkJCVJlY3RhbmdsZSBwb3J0ID0gZ2V0UmVjdGFuZ2xlKHNjcm9sbHBhbmUsICI6cG9ydCIpOworCQkJUmVjdGFuZ2xlIHJsID0gKGxlYWQgIT0gbnVsbCkgPyBnZXRSZWN0YW5nbGUobGVhZCwgImJvdW5kcyIpIDogbnVsbDsKKwkJCWludCB2eSA9IChrZXljb2RlID09IEtleUV2ZW50LlZLX1BBR0VfVVApID8KKwkJCQl2aWV3LnkgOiAodmlldy55ICsgcG9ydC5oZWlnaHQgLSAyKTsKKwkJCWlmICgoa2V5Y29kZSA9PSBLZXlFdmVudC5WS19QQUdFX1VQKSAmJgorCQkJCQkocmwgIT0gbnVsbCkgJiYgKHJsLnkgPD0gdmlldy55KSkgeworCQkJCXZ5IC09IHBvcnQuaGVpZ2h0IC0gMjsKKwkJCX0KKwkJCWlmICgoa2V5Y29kZSA9PSBLZXlFdmVudC5WS19QQUdFX0RPV04pICYmCisJCQkJCShybCAhPSBudWxsKSAmJiAocmwueSArIHJsLmhlaWdodCA+PSB2aWV3LnkgKyBwb3J0LmhlaWdodCAtIDIpKSB7CisJCQkJdnkgKz0gcG9ydC5oZWlnaHQgLSAyOworCQkJfQorCQkJZm9yIChPYmplY3QgaXRlbSA9IGdldChjb21wb25lbnQsIGl0ZW1uYW1lKTsgaXRlbSAhPSBudWxsOworCQkJCQlpdGVtID0gZ2V0TmV4dEl0ZW0oY29tcG9uZW50LCBpdGVtLCBsZWFmbmFtZSkpIHsKKwkJCQlSZWN0YW5nbGUgciA9IGdldFJlY3RhbmdsZShpdGVtLCAiYm91bmRzIik7CisJCQkJaWYgKGtleWNvZGUgPT0gS2V5RXZlbnQuVktfUEFHRV9VUCkgeworCQkJCQlyb3cgPSBpdGVtOworCQkJCQlpZiAoci55ICsgci5oZWlnaHQgPiB2eSkgeyBicmVhazsgfQorCQkJCX0gZWxzZSB7CisJCQkJCWlmIChyLnkgPiB2eSkgeyBicmVhazsgfQorCQkJCQlyb3cgPSBpdGVtOworCQkJCX0KKwkJCX0KKwkJfQorCQllbHNlIGlmIChrZXljb2RlID09IEtleUV2ZW50LlZLX0hPTUUpIHsKKwkJCXJvdyA9IGdldChjb21wb25lbnQsIGl0ZW1uYW1lKTsKKwkJfQorCQllbHNlIGlmIChrZXljb2RlID09IEtleUV2ZW50LlZLX0VORCkgeworCQkJZm9yIChPYmplY3QgbGFzdCA9IGxlYWQ7IGxhc3QgIT0gbnVsbDsKKwkJCQkJbGFzdCA9IGdldE5leHRJdGVtKGNvbXBvbmVudCwgbGFzdCwgbGVhZm5hbWUpKSB7CisJCQkJcm93ID0gbGFzdDsKKwkJCX0KKwkJfQorCQlyZXR1cm4gcm93OworCX0KKworCS8qKgorCSAqCisJICovCisJcHJpdmF0ZSB2b2lkIHNlbGVjdEFsbChPYmplY3QgY29tcG9uZW50LAorCQkJYm9vbGVhbiBzZWxlY3RlZCwgU3RyaW5nIGl0ZW1uYW1lLCBTdHJpbmcgbGVhZm5hbWUpIHsKKwkJYm9vbGVhbiBjaGFuZ2VkID0gZmFsc2U7CisJCWZvciAoT2JqZWN0IGl0ZW0gPSBnZXQoY29tcG9uZW50LCBpdGVtbmFtZSk7CisJCQkJaXRlbSAhPSBudWxsOyBpdGVtID0gZ2V0TmV4dEl0ZW0oY29tcG9uZW50LCBpdGVtLCBsZWFmbmFtZSkpIHsKKwkJCWlmIChzZXRCb29sZWFuKGl0ZW0sICJzZWxlY3RlZCIsIHNlbGVjdGVkLCBmYWxzZSkpIHsKKwkJCQlyZXBhaW50KGNvbXBvbmVudCwgbnVsbCwgaXRlbSk7IGNoYW5nZWQgPSB0cnVlOworCQkJfQorCQl9CisJCXNldChjb21wb25lbnQsICJhbmNob3IiLCBudWxsKTsKKwkJaWYgKGNoYW5nZWQpIHtpbnZva2UoY29tcG9uZW50LCAiYWN0aW9uIik7IH0KKwl9CisKKwkvKioKKwkgKgorCSAqLworCXByaXZhdGUgdm9pZCBzZWxlY3RJdGVtKE9iamVjdCBjb21wb25lbnQsCisJCQlPYmplY3Qgcm93LCBTdHJpbmcgaXRlbW5hbWUsIFN0cmluZyBsZWFmbmFtZSkgeworCQlib29sZWFuIGNoYW5nZWQgPSBmYWxzZTsKKwkJZm9yIChPYmplY3QgaXRlbSA9IGdldChjb21wb25lbnQsIGl0ZW1uYW1lKTsKKwkJCQlpdGVtICE9IG51bGw7IGl0ZW0gPSBnZXROZXh0SXRlbShjb21wb25lbnQsIGl0ZW0sIGxlYWZuYW1lKSkgeworCQkJaWYgKHNldEJvb2xlYW4oaXRlbSwgInNlbGVjdGVkIiwgKGl0ZW0gPT0gcm93KSwgZmFsc2UpKSB7CisJCQkJcmVwYWludChjb21wb25lbnQsIG51bGwsIGl0ZW0pOyBjaGFuZ2VkID0gdHJ1ZTsKKwkJCX0KKwkJfQorCQlzZXQoY29tcG9uZW50LCAiYW5jaG9yIiwgbnVsbCk7CisJCWlmIChjaGFuZ2VkKSB7IGludm9rZShjb21wb25lbnQsICJhY3Rpb24iKTsgfQorCX0KKworCS8qKgorCSAqCisJICovCisJcHJpdmF0ZSB2b2lkIGV4dGVuZChPYmplY3QgY29tcG9uZW50LCBPYmplY3QgbGVhZCwKKwkJCU9iamVjdCByb3csIFN0cmluZyBpdGVtbmFtZSwgU3RyaW5nIGxlYWZuYW1lKSB7CisJCU9iamVjdCBhbmNob3IgPSBnZXQoY29tcG9uZW50LCAiYW5jaG9yIik7CisJCWlmIChhbmNob3IgPT0gbnVsbCkgeyBzZXQoY29tcG9uZW50LCAiYW5jaG9yIiwgYW5jaG9yID0gbGVhZCk7IH0KKwkJY2hhciBzZWxlY3QgPSAnbic7IGJvb2xlYW4gY2hhbmdlZCA9IGZhbHNlOworCQlmb3IgKE9iamVjdCBpdGVtID0gZ2V0KGNvbXBvbmVudCwgaXRlbW5hbWUpOyAvLyBhbmNob3IgLSByb3cKKwkJCQlpdGVtICE9IG51bGw7IGl0ZW0gPSBnZXROZXh0SXRlbShjb21wb25lbnQsIGl0ZW0sIGxlYWZuYW1lKSkgeworCQkJaWYgKGl0ZW0gPT0gYW5jaG9yKSBzZWxlY3QgPSAoc2VsZWN0ID09ICduJykgPyAneScgOiAncic7CisJCQlpZiAoaXRlbSA9PSByb3cpIHNlbGVjdCA9IChzZWxlY3QgPT0gJ24nKSA/ICd5JyA6ICdyJzsKKwkJCWlmIChzZXRCb29sZWFuKGl0ZW0sICJzZWxlY3RlZCIsIChzZWxlY3QgIT0gJ24nKSwgZmFsc2UpKSB7CisJCQkJcmVwYWludChjb21wb25lbnQsIG51bGwsIGl0ZW0pOyBjaGFuZ2VkID0gdHJ1ZTsKKwkJCX0KKwkJCWlmIChzZWxlY3QgPT0gJ3InKSBzZWxlY3QgPSAnbic7CisJCX0KKwkJaWYgKGNoYW5nZWQpIHsgaW52b2tlKGNvbXBvbmVudCwgImFjdGlvbiIpOyB9CisJfQorCisJLyoqCisJICoKKwkgKi8KKwlwcml2YXRlIHZvaWQgc2V0TGVhZChPYmplY3QgY29tcG9uZW50LCBPYmplY3Qgb2xkbGVhZCwgT2JqZWN0IGxlYWQpIHsKKwkJaWYgKG9sZGxlYWQgIT0gbGVhZCkgeyAvLz8KKwkJCWlmIChvbGRsZWFkICE9IG51bGwpIHsgcmVwYWludChjb21wb25lbnQsIG51bGwsIG9sZGxlYWQpOyB9CisJCQlzZXQoY29tcG9uZW50LCAibGVhZCIsIGxlYWQpOworCQkJcmVwYWludChjb21wb25lbnQsIG51bGwsIGxlYWQpOworCQl9CisJfQorCisJLypwdWJsaWMgdm9pZCByZXBhaW50KGludCB4LCBpbnQgeSwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KSB7CisJCVN5c3RlbS5vdXQucHJpbnRsbigicmVwYWludCgiICsgeCArICIsICIgKyB5ICsgIiwgIiArIHdpZHRoICsgIiwgIiArIGhlaWdodCArICIpIik7CisJCXN1cGVyLnJlcGFpbnQoeCwgeSwgd2lkdGgsIGhlaWdodCk7CisJfSovCisJCQkKKwkvKioKKwkgKgorCSAqLworCXByaXZhdGUgdm9pZCBoYW5kbGVNb3VzZUV2ZW50KGludCB4LCBpbnQgeSwgaW50IGNsaWNrY291bnQsCisJCQlib29sZWFuIHNoaWZ0ZG93biwgYm9vbGVhbiBjb250cm9sZG93biwgYm9vbGVhbiBwb3B1cHRyaWdnZXIsCisJCQlpbnQgaWQsIE9iamVjdCBjb21wb25lbnQsIE9iamVjdCBwYXJ0KSB7CisJCWlmIChpZCA9PSBNb3VzZUV2ZW50Lk1PVVNFX0VOVEVSRUQpIHsKKwkJCXNldFRpbWVyKDc1MEwpOworCQl9CisJCWVsc2UgaWYgKGlkID09IE1vdXNlRXZlbnQuTU9VU0VfRVhJVEVEKSB7CisJCQloaWRlVGlwKCk7CisJCX0KKwkJaWYgKCFnZXRCb29sZWFuKGNvbXBvbmVudCwgImVuYWJsZWQiLCB0cnVlKSkgeyByZXR1cm47IH0KKwkJU3RyaW5nIGNsYXNzbmFtZSA9IGdldENsYXNzKGNvbXBvbmVudCk7CisJCWlmICgoImJ1dHRvbiIgPT0gY2xhc3NuYW1lKSB8fCAoImNoZWNrYm94IiA9PSBjbGFzc25hbWUpKSB7CisJCQlpZiAoKGlkID09IE1vdXNlRXZlbnQuTU9VU0VfRU5URVJFRCkgfHwKKwkJCQkJKGlkID09IE1vdXNlRXZlbnQuTU9VU0VfRVhJVEVEKSB8fAorCQkJCQkoaWQgPT0gTW91c2VFdmVudC5NT1VTRV9QUkVTU0VEKSB8fAorCQkJCQkoaWQgPT0gTW91c2VFdmVudC5NT1VTRV9SRUxFQVNFRCkpIHsKKwkJCQlpZiAoaWQgPT0gTW91c2VFdmVudC5NT1VTRV9QUkVTU0VEKSB7CisJCQkJCXNldEZvY3VzKGNvbXBvbmVudCk7CisJCQkJfQorCQkJCWVsc2UgaWYgKChpZCA9PSBNb3VzZUV2ZW50Lk1PVVNFX1JFTEVBU0VEKSAmJgorCQkJCQkJKG1vdXNlaW5zaWRlID09IGNvbXBvbmVudCkpIHsKKwkJCQkJaWYgKCJjaGVja2JveCIgPT0gY2xhc3NuYW1lKSB7CisJCQkJCQljaGFuZ2VDaGVjayhjb21wb25lbnQsIHRydWUpOworCQkJCQl9CisJCQkJCWVsc2UgaW52b2tlKGNvbXBvbmVudCwgImFjdGlvbiIpOworCQkJCX0KKwkJCQlyZXBhaW50KGNvbXBvbmVudCk7CisJCQl9CisJCX0KKwkJZWxzZSBpZiAoImNvbWJvYm94IiA9PSBjbGFzc25hbWUpIHsKKwkJCWJvb2xlYW4gZWRpdGFibGUgPSBnZXRCb29sZWFuKGNvbXBvbmVudCwgImVkaXRhYmxlIiwgdHJ1ZSk7CisJCQlpZiAoZWRpdGFibGUgJiYgKHBhcnQgPT0gbnVsbCkpIHsKKwkJCQlJbWFnZSBpY29uID0gbnVsbDsKKwkJCQlpbnQgbGVmdCA9ICgoaWQgPT0gTW91c2VFdmVudC5NT1VTRV9QUkVTU0VEKSAmJgorCQkJCQkoKGljb24gPSBnZXRJY29uKGNvbXBvbmVudCwgImljb24iLCBudWxsKSkgIT0gbnVsbCkpID8KKwkJCQkJCWljb24uZ2V0V2lkdGgodGhpcykgOiAwOworCQkJCXByb2Nlc3NGaWVsZCh4LCB5LCBjbGlja2NvdW50LCBpZCwgY29tcG9uZW50LCBwYXJ0LCBmYWxzZSwgZmFsc2UsIGxlZnQpOworCQkJfQorCQkJZWxzZSBpZiAocGFydCAhPSAiaWNvbiIpIHsgLy8gcGFydCA9ICJkb3duIgorCQkJCWlmICgoKGlkID09IE1vdXNlRXZlbnQuTU9VU0VfRU5URVJFRCkgfHwKKwkJCQkJCShpZCA9PSBNb3VzZUV2ZW50Lk1PVVNFX0VYSVRFRCkpICYmIChtb3VzZXByZXNzZWQgPT0gbnVsbCkpIHsKKwkJCQkJaWYgKGVkaXRhYmxlKSB7IHJlcGFpbnQoY29tcG9uZW50LCAiY29tYm9ib3giLCBwYXJ0KTsgfQorCQkJCQkJZWxzZSB7IHJlcGFpbnQoY29tcG9uZW50KTsgfQorCQkJCX0KKwkJCQllbHNlIGlmIChpZCA9PSBNb3VzZUV2ZW50Lk1PVVNFX1BSRVNTRUQpIHsKKwkJCQkJT2JqZWN0IGNvbWJvbGlzdCA9IGdldChjb21wb25lbnQsICJjb21ib2xpc3QiKTsKKwkJCQkJaWYgKGNvbWJvbGlzdCA9PSBudWxsKSB7CisJCQkJCQlzZXRGb2N1cyhjb21wb25lbnQpOworCQkJCQkJcmVwYWludChjb21wb25lbnQpOworCQkJCQkJcG9wdXAoY29tcG9uZW50LCBjbGFzc25hbWUpOworCQkJCQl9IGVsc2UgeworCQkJCQkJY2xvc2V1cChjb21wb25lbnQsIGNvbWJvbGlzdCwgbnVsbCk7CisJCQkJCX0KKwkJCQl9CisJCQkJZWxzZSBpZiAoaWQgPT0gTW91c2VFdmVudC5NT1VTRV9SRUxFQVNFRCkgeworCQkJCQlpZiAobW91c2VpbnNpZGUgIT0gY29tcG9uZW50KSB7CisJCQkJCQlPYmplY3QgY29tYm9saXN0ID0gZ2V0KGNvbXBvbmVudCwgImNvbWJvbGlzdCIpOworCQkJCQkJY2xvc2V1cChjb21wb25lbnQsIGNvbWJvbGlzdCwKKwkJCQkJCQkobW91c2VpbnNpZGUgPT0gY29tYm9saXN0KSA/IGluc2lkZXBhcnQgOiBudWxsKTsKKwkJCQkJfSBlbHNlIHsKKwkJCQkJCXJlcGFpbnQoY29tcG9uZW50KTsKKwkJCQkJfQorCQkJCX0KKwkJCX0KKwkJfQorCQllbHNlIGlmICgiY29tYm9saXN0IiA9PSBjbGFzc25hbWUpIHsKKwkJCWlmICghcHJvY2Vzc1Njcm9sbCh4LCB5LCBpZCwgY29tcG9uZW50LCBwYXJ0KSkgeworCQkJCWlmICgoaWQgPT0gTW91c2VFdmVudC5NT1VTRV9FTlRFUkVEKSB8fCAoaWQgPT0gRFJBR19FTlRFUkVEKSkgeworCQkJCQlpZiAocGFydCAhPSBudWxsKSB7CisJCQkJCQkvLyByZXBhaW50IHByZXZpb3VzIGluc2lkZQorCQkJCQkJc2V0KGNvbXBvbmVudCwgImluc2lkZSIsIHBhcnQpOworCQkJCQkJcmVwYWludChjb21wb25lbnQsIGNsYXNzbmFtZSwgcGFydCk7CisJCQkJCX0KKwkJCQl9CisJCQkJZWxzZSBpZiAoKGlkID09IE1vdXNlRXZlbnQuTU9VU0VfRVhJVEVEKSB8fCAoaWQgPT0gRFJBR19FWElURUQpKSB7CisJCQkJCWlmIChwYXJ0ICE9IG51bGwpIHsKKwkJCQkJCXNldChjb21wb25lbnQsICJpbnNpZGUiLCBudWxsKTsKKwkJCQkJCXJlcGFpbnQoY29tcG9uZW50LCBjbGFzc25hbWUsIHBhcnQpOworCQkJCQl9CisJCQkJfQorCQkJCWVsc2UgaWYgKGlkID09IE1vdXNlRXZlbnQuTU9VU0VfUkVMRUFTRUQpIHsKKwkJCQkJY2xvc2V1cChnZXQoY29tcG9uZW50LCAiY29tYm9ib3giKSwgY29tcG9uZW50LCBwYXJ0KTsKKwkJCQl9CisJCQl9CisJCX0KKwkJZWxzZSBpZiAoKCJ0ZXh0ZmllbGQiID09IGNsYXNzbmFtZSkgfHwgKCJwYXNzd29yZGZpZWxkIiA9PSBjbGFzc25hbWUpKSB7CisJCQlwcm9jZXNzRmllbGQoeCwgeSwgY2xpY2tjb3VudCwgaWQsIGNvbXBvbmVudCwgcGFydCwKKwkJCQlmYWxzZSwgKCJwYXNzd29yZGZpZWxkIiA9PSBjbGFzc25hbWUpLCAwKTsKKwkJfQorCQllbHNlIGlmICgidGV4dGFyZWEiID09IGNsYXNzbmFtZSkgeworCQkJaWYgKCFwcm9jZXNzU2Nyb2xsKHgsIHksIGlkLCBjb21wb25lbnQsIHBhcnQpKSB7CisJCQkJcHJvY2Vzc0ZpZWxkKHgsIHksIGNsaWNrY291bnQsIGlkLCBjb21wb25lbnQsIHBhcnQsIHRydWUsIGZhbHNlLCAwKTsKKwkJCX0KKwkJfQorCQkvL2phdmE+CisJCWVsc2UgaWYgKCJkZXNrdG9wIiA9PSBjbGFzc25hbWUpIHsKKwkJCWlmIChpZCA9PSBNb3VzZUV2ZW50Lk1PVVNFX0VOVEVSRUQpIHsKKwkJCQlzZXRDdXJzb3IoQ3Vyc29yLmdldFByZWRlZmluZWRDdXJzb3IoQ3Vyc29yLldBSVRfQ1VSU09SKSk7CisJCQl9CisJCQllbHNlIGlmIChpZCA9PSBNb3VzZUV2ZW50Lk1PVVNFX0VYSVRFRCkgeworCQkJCXNldEN1cnNvcihDdXJzb3IuZ2V0UHJlZGVmaW5lZEN1cnNvcihDdXJzb3IuREVGQVVMVF9DVVJTT1IpKTsKKwkJCX0KKwkJfQorCQkvLzxqYXZhCisJCWVsc2UgaWYgKCJzcGluYm94IiA9PSBjbGFzc25hbWUpIHsKKwkJCWlmIChwYXJ0ID09IG51bGwpIHsKKwkJCQlwcm9jZXNzRmllbGQoeCwgeSwgY2xpY2tjb3VudCwgaWQsIGNvbXBvbmVudCwgcGFydCwgZmFsc2UsIGZhbHNlLCAwKTsKKwkJCX0KKwkJCWVsc2UgeyAvLyBwYXJ0ID0gInVwIiB8fCAiZG93biIKKwkJCQlpZiAoKGlkID09IE1vdXNlRXZlbnQuTU9VU0VfRU5URVJFRCkgfHwKKwkJCQkJCShpZCA9PSBNb3VzZUV2ZW50Lk1PVVNFX0VYSVRFRCkgfHwKKwkJCQkJCShpZCA9PSBNb3VzZUV2ZW50Lk1PVVNFX1BSRVNTRUQpIHx8CisJCQkJCQkoaWQgPT0gTW91c2VFdmVudC5NT1VTRV9SRUxFQVNFRCkpIHsKKwkJCQkJaWYgKGlkID09IE1vdXNlRXZlbnQuTU9VU0VfUFJFU1NFRCkgeworCQkJCQkJc2V0Rm9jdXMoY29tcG9uZW50KTsKKwkJCQkJCWlmIChwcm9jZXNzU3Bpbihjb21wb25lbnQsIHBhcnQpKSB7IHNldFRpbWVyKDM3NUwpOyB9CisJCQkJCQkvL3NldHRleHQ6IHN0YXJ0IGVuZCBzZWxlY3Rpb24sIHBhcnNlIGV4Y2VwdGlvbi4uLgorCQkJCQl9CisJCQkJCWVsc2UgeworCQkJCQkJaWYgKGlkID09IE1vdXNlRXZlbnQuTU9VU0VfUkVMRUFTRUQpIHsKKwkJCQkJCQlzZXRUaW1lcigwTCk7CisJCQkJCQl9CisJCQkJCX0KKwkJCQkJcmVwYWludChjb21wb25lbnQsIGNsYXNzbmFtZSwgcGFydCk7CisJCQkJfQorCQkJfQorCQl9CisJCWVsc2UgaWYgKCJ0YWJiZWRwYW5lIiA9PSBjbGFzc25hbWUpIHsKKwkJCWlmICgoaWQgPT0gTW91c2VFdmVudC5NT1VTRV9FTlRFUkVEKSB8fAorCQkJCQkoaWQgPT0gTW91c2VFdmVudC5NT1VTRV9FWElURUQpKSB7CisJCQkJaWYgKChwYXJ0ICE9IG51bGwpICYmIGdldEJvb2xlYW4ocGFydCwgImVuYWJsZWQiLCB0cnVlKSAmJgorCQkJCQkJKGdldEludGVnZXIoY29tcG9uZW50LCAic2VsZWN0ZWQiLCAwKSAhPSBnZXRJbmRleChjb21wb25lbnQsICJ0YWIiLCBwYXJ0KSkpIHsKKwkJCQkJcmVwYWludChjb21wb25lbnQsICJ0YWJiZWRwYW5lIiwgcGFydCk7CisJCQkJfQorCQkJfQorCQkJZWxzZSBpZiAoKHBhcnQgIT0gbnVsbCkgJiYgKGlkID09IE1vdXNlRXZlbnQuTU9VU0VfUFJFU1NFRCkgJiYKKwkJCQkJZ2V0Qm9vbGVhbihwYXJ0LCAiZW5hYmxlZCIsIHRydWUpKSB7CisJCQkJaW50IHNlbGVjdGVkID0gZ2V0SW50ZWdlcihjb21wb25lbnQsICJzZWxlY3RlZCIsIDApOworCQkJCWludCBjdXJyZW50ID0gZ2V0SW5kZXgoY29tcG9uZW50LCAidGFiIiwgcGFydCk7CisJCQkJaWYgKHNlbGVjdGVkID09IGN1cnJlbnQpIHsKKwkJCQkJc2V0Rm9jdXMoY29tcG9uZW50KTsKKwkJCQkJcmVwYWludChjb21wb25lbnQsICJ0YWJiZWRwYW5lIiwgcGFydCk7CisJCQkJfQorCQkJCWVsc2UgeworCQkJCQlzZXRJbnRlZ2VyKGNvbXBvbmVudCwgInNlbGVjdGVkIiwgY3VycmVudCwgMCk7CisJCQkJCS8vT2JqZWN0IHRhYmNvbnRlbnQgPSBnZXRJdGVtSW1wbChjb21wb25lbnQsICJjb21wb25lbnQiLCBjdXJyZW50KTsKKwkJCQkJLy9zZXRGb2N1cygodGFiY29udGVudCAhPSBudWxsKSA/IHRhYmNvbnRlbnQgOiBjb21wb25lbnQpOworCQkJCQlzZXROZXh0Rm9jdXNhYmxlKGNvbXBvbmVudCwgZmFsc2UpOworCQkJCQlyZXBhaW50KGNvbXBvbmVudCk7CisJCQkJCWludm9rZShjb21wb25lbnQsICJhY3Rpb24iKTsKKwkJCQl9CisJCQl9CisJCX0KKwkJZWxzZSBpZiAoInNsaWRlciIgPT0gY2xhc3NuYW1lKSB7CisJCQlpZiAoKGlkID09IE1vdXNlRXZlbnQuTU9VU0VfUFJFU1NFRCkgfHwKKwkJCQkJKGlkID09IE1vdXNlRXZlbnQuTU9VU0VfRFJBR0dFRCkpIHsKKwkJCQlpZiAoaWQgPT0gTW91c2VFdmVudC5NT1VTRV9QUkVTU0VEKSB7CisJCQkJCXNldFJlZmVyZW5jZShjb21wb25lbnQsIGJsb2NrIC8gMiwgYmxvY2sgLyAyKTsKKwkJCQkJc2V0Rm9jdXMoY29tcG9uZW50KTsKKwkJCQl9CisJCQkJaW50IG1pbmltdW0gPSBnZXRJbnRlZ2VyKGNvbXBvbmVudCwgIm1pbmltdW0iLCAwKTsKKwkJCQlpbnQgbWF4aW11bSA9IGdldEludGVnZXIoY29tcG9uZW50LCAibWF4aW11bSIsIDEwMCk7CisJCQkJaW50IHZhbHVlID0gZ2V0SW50ZWdlcihjb21wb25lbnQsICJ2YWx1ZSIsIDUwKTsKKwkJCQlSZWN0YW5nbGUgYm91bmRzID0gZ2V0UmVjdGFuZ2xlKGNvbXBvbmVudCwgImJvdW5kcyIpOworCQkJCWJvb2xlYW4gaG9yaXpvbnRhbCA9ICgidmVydGljYWwiICE9IGdldChjb21wb25lbnQsICJvcmllbnRhdGlvbiIpKTsKKwkJCQlpbnQgbmV3dmFsdWUgPSBtaW5pbXVtICsKKwkJCQkJKGhvcml6b250YWwgPyAobW91c2V4IC0gcmVmZXJlbmNleCkgOiAobW91c2V5IC0gcmVmZXJlbmNleSkpICoKKwkJCQkJKG1heGltdW0gLSBtaW5pbXVtKSAvCisJCQkJCSgoaG9yaXpvbnRhbCA/IGJvdW5kcy53aWR0aCA6IGJvdW5kcy5oZWlnaHQpIC0gYmxvY2spOyAvLy4uLiArMC41CisJCQkJbmV3dmFsdWUgPSBNYXRoLm1heChtaW5pbXVtLCBNYXRoLm1pbihuZXd2YWx1ZSwgbWF4aW11bSkpOworCQkJCWlmICh2YWx1ZSAhPSBuZXd2YWx1ZSkgeworCQkJCQlzZXRJbnRlZ2VyKGNvbXBvbmVudCwgInZhbHVlIiwgbmV3dmFsdWUsIDUwKTsKKwkJCQkJaW52b2tlKGNvbXBvbmVudCwgImFjdGlvbiIpOworCQkJCX0KKwkJCQlpZiAoKHZhbHVlICE9IG5ld3ZhbHVlKSB8fCAoaWQgPT0gTW91c2VFdmVudC5NT1VTRV9QUkVTU0VEKSkgeworCQkJCQlyZXBhaW50KGNvbXBvbmVudCk7CisJCQkJfQorCQkJfQorCQl9CisJCWVsc2UgaWYgKCJzcGxpdHBhbmUiID09IGNsYXNzbmFtZSkgeworCQkJaWYgKGlkID09IE1vdXNlRXZlbnQuTU9VU0VfUFJFU1NFRCkgeworCQkJCXNldFJlZmVyZW5jZShjb21wb25lbnQsIDIsIDIpOworCQkJfQorCQkJZWxzZSBpZiAoaWQgPT0gTW91c2VFdmVudC5NT1VTRV9EUkFHR0VEKSB7CisJCQkJaW50IGRpdmlkZXIgPSBnZXRJbnRlZ2VyKGNvbXBvbmVudCwgImRpdmlkZXIiLCAtMSk7CisJCQkJYm9vbGVhbiBob3Jpem9udGFsID0gKCJ2ZXJ0aWNhbCIgIT0gZ2V0KGNvbXBvbmVudCwgIm9yaWVudGF0aW9uIikpOworCQkJCWludCBtb3ZldG8gPSBob3Jpem9udGFsID8gKG1vdXNleCAtIHJlZmVyZW5jZXgpIDoKKwkJCQkJKG1vdXNleSAtIHJlZmVyZW5jZXkpOworCQkJCVJlY3RhbmdsZSBib3VuZHMgPSBnZXRSZWN0YW5nbGUoY29tcG9uZW50LCAiYm91bmRzIik7CisJCQkJbW92ZXRvID0gTWF0aC5tYXgoMCwgTWF0aC5taW4obW92ZXRvLAorCQkJCQlNYXRoLmFicyhob3Jpem9udGFsID8gYm91bmRzLndpZHRoIDogYm91bmRzLmhlaWdodCkgLSA1KSk7CisJCQkJaWYgKGRpdmlkZXIgIT0gbW92ZXRvKSB7CisJCQkJCXNldEludGVnZXIoY29tcG9uZW50LCAiZGl2aWRlciIsIG1vdmV0bywgLTEpOworCQkJCQl2YWxpZGF0ZShjb21wb25lbnQpOworCQkJCX0KKwkJCX0KKwkJCS8vamF2YT4KKwkJCWVsc2UgaWYgKChpZCA9PSBNb3VzZUV2ZW50Lk1PVVNFX0VOVEVSRUQpICYmIChtb3VzZXByZXNzZWQgPT0gbnVsbCkpIHsKKwkJCQlib29sZWFuIGhvcml6b250YWwgPSAoInZlcnRpY2FsIiAhPSBnZXQoY29tcG9uZW50LCAib3JpZW50YXRpb24iKSk7CisJCQkJc2V0Q3Vyc29yKEN1cnNvci5nZXRQcmVkZWZpbmVkQ3Vyc29yKGhvcml6b250YWwgPworCQkJCQlDdXJzb3IuRV9SRVNJWkVfQ1VSU09SIDogQ3Vyc29yLlNfUkVTSVpFX0NVUlNPUikpOworCQkJfQorCQkJZWxzZSBpZiAoKChpZCA9PSBNb3VzZUV2ZW50Lk1PVVNFX0VYSVRFRCkgJiYgKG1vdXNlcHJlc3NlZCA9PSBudWxsKSkgfHwKKwkJCQkJKChpZCA9PSBNb3VzZUV2ZW50Lk1PVVNFX1JFTEVBU0VEKSAmJiAobW91c2VpbnNpZGUgIT0gY29tcG9uZW50KSkpIHsKKwkJCQlzZXRDdXJzb3IoQ3Vyc29yLmdldFByZWRlZmluZWRDdXJzb3IoQ3Vyc29yLkRFRkFVTFRfQ1VSU09SKSk7CisJCQl9CisJCQkvLzxqYXZhCisJCX0KKwkJZWxzZSBpZiAoKCJsaXN0IiA9PSBjbGFzc25hbWUpIHx8CisJCQkJKCJ0YWJsZSIgPT0gY2xhc3NuYW1lKSB8fCAoInRyZWUiID09IGNsYXNzbmFtZSkpIHsKKwkJCWlmICghcHJvY2Vzc1Njcm9sbCh4LCB5LCBpZCwgY29tcG9uZW50LCBwYXJ0KSkgeworCQkJCWlmICgoKGlkID09IE1vdXNlRXZlbnQuTU9VU0VfUFJFU1NFRCl8fAorCQkJCQkJKChpZCA9PSBNb3VzZUV2ZW50Lk1PVVNFX0RSQUdHRUQpICYmCisJCQkJCQkJIXNoaWZ0ZG93biAmJiAhY29udHJvbGRvd24pKSAmJgorCQkJCQkJIXBvcHVwdHJpZ2dlcikgeyAvLyBlLmdldENsaWNrQ291bnQoKSAKKwkJCQkJUmVjdGFuZ2xlIHZpZXcgPSBnZXRSZWN0YW5nbGUoY29tcG9uZW50LCAiOnZpZXciKTsKKwkJCQkJUmVjdGFuZ2xlIHZpZXdwb3J0ID0gZ2V0UmVjdGFuZ2xlKGNvbXBvbmVudCwgIjpwb3J0Iik7CisJCQkJCWludCBteSA9IG1vdXNleSArIHZpZXcueSAtIHJlZmVyZW5jZXk7CisJCQkJCVN0cmluZyBpdGVtbmFtZSA9ICgibGlzdCIgPT0gY2xhc3NuYW1lKSA/ICJpdGVtIiA6CisJCQkJCQkoKCJ0YWJsZSIgPT0gY2xhc3NuYW1lKSA/ICJyb3ciIDogIm5vZGUiKTsKKwkJCQkJU3RyaW5nIHN1Yml0ZW0gPSAoInRyZWUiID09IGNsYXNzbmFtZSkgPyAibm9kZSIgOiBudWxsOworCQkJCQlmb3IgKE9iamVjdCBpdGVtID0gZ2V0KGNvbXBvbmVudCwgaXRlbW5hbWUpOyBpdGVtICE9IG51bGw7KSB7CisJCQkJCQlSZWN0YW5nbGUgciA9IGdldFJlY3RhbmdsZShpdGVtLCAiYm91bmRzIik7CisJCQkJCQlpZiAobXkgPCByLnkgKyByLmhlaWdodCkgeworCQkJCQkJCWlmIChpZCA9PSBNb3VzZUV2ZW50Lk1PVVNFX0RSQUdHRUQpIHsgLy8hISEKKwkJCQkJCQkJc2Nyb2xsVG9WaXNpYmxlKGNvbXBvbmVudCwgci54LCByLnksIDAsIHIuaGVpZ2h0IC0gMSk7CisJCQkJCQkJfQorCQkJCQkJCWVsc2UgaWYgKCJ0cmVlIiA9PSBjbGFzc25hbWUpIHsKKwkJCQkJCQkJaW50IG14ID0gbW91c2V4ICsgdmlldy54IC0gcmVmZXJlbmNleDsKKwkJCQkJCQkJaWYgKG14IDwgci54KSB7CisJCQkJCQkJCQlpZiAoKG14ID49IHIueCAtIGJsb2NrKSAmJiAoZ2V0KGl0ZW0sICJub2RlIikgIT0gbnVsbCkpIHsKKwkJCQkJCQkJCQlib29sZWFuIGV4cGFuZGVkID0gZ2V0Qm9vbGVhbihpdGVtLCAiZXhwYW5kZWQiLCB0cnVlKTsKKwkJCQkJCQkJCQlzZXRCb29sZWFuKGl0ZW0sICJleHBhbmRlZCIsICFleHBhbmRlZCwgCXRydWUpOworCQkJCQkJCQkJCXNlbGVjdEl0ZW0oY29tcG9uZW50LCBpdGVtLCAibm9kZSIsICJub2RlIik7CisJCQkJCQkJCQkJc2V0TGVhZChjb21wb25lbnQsIGdldChjb21wb25lbnQsICJsZWFkIiksIGl0ZW0pOworCQkJCQkJCQkJCXNldEZvY3VzKGNvbXBvbmVudCk7CisJCQkJCQkJCQkJdmFsaWRhdGUoY29tcG9uZW50KTsKKwkJCQkJCQkJCQlpbnZva2UoY29tcG9uZW50LCBleHBhbmRlZCA/ICJjb2xsYXBzZSIgOiAiZXhwYW5kIik7IC8vaXRlbQorCQkJCQkJCQkJfQorCQkJCQkJCQkJYnJlYWs7CisJCQkJCQkJCX0KKwkJCQkJCQl9CisJCQkJCQkJaWYgKChpZCAhPSBNb3VzZUV2ZW50Lk1PVVNFX0RSQUdHRUQpIHx8CisJCQkJCQkJCQkhZ2V0Qm9vbGVhbihpdGVtLCAic2VsZWN0ZWQiLCBmYWxzZSkpIHsKKwkJCQkJCQkJc2VsZWN0KGNvbXBvbmVudCwgaXRlbSwgaXRlbW5hbWUsIHN1Yml0ZW0sIHNoaWZ0ZG93biwgY29udHJvbGRvd24pOworCQkJCQkJCQlpZiAoaWQgIT0gTW91c2VFdmVudC5NT1VTRV9EUkFHR0VEKSB7CisJCQkJCQkJCQlpZiAoc2V0Rm9jdXMoY29tcG9uZW50KSkgeyByZXBhaW50KGNvbXBvbmVudCwgY2xhc3NuYW1lLCBpdGVtKTsgfSAvLz8KKwkJCQkJCQkJfQorCQkJCQkJCX0KKwkJCQkJCQlicmVhazsKKwkJCQkJCX0KKwkJCQkJCWl0ZW0gPSBnZXROZXh0SXRlbShjb21wb25lbnQsIGl0ZW0sIHN1Yml0ZW0pOworCQkJCQl9CisJCQkJfQorCQkgCX0KKwkJfQorCQllbHNlIGlmICgibWVudWJhciIgPT0gY2xhc3NuYW1lKSB7CisJCQlPYmplY3Qgc2VsZWN0ZWQgPSBnZXQoY29tcG9uZW50LCAic2VsZWN0ZWQiKTsKKwkJCWlmICgoKGlkID09IE1vdXNlRXZlbnQuTU9VU0VfRU5URVJFRCkgfHwgKGlkID09IE1vdXNlRXZlbnQuTU9VU0VfRVhJVEVEKSkgJiYKKwkJCQkJKHBhcnQgIT0gbnVsbCkgJiYgKHNlbGVjdGVkID09IG51bGwpKSB7CisJCQkJcmVwYWludChjb21wb25lbnQsIGNsYXNzbmFtZSwgcGFydCk7CisJCQl9CisJCQllbHNlIGlmICgocGFydCAhPSBudWxsKSAmJiAoKHNlbGVjdGVkID09IG51bGwpID8KKwkJCQkoaWQgPT0gTW91c2VFdmVudC5NT1VTRV9QUkVTU0VEKSA6CisJCQkJCSgoaWQgPT0gTW91c2VFdmVudC5NT1VTRV9FTlRFUkVEKSB8fCAoaWQgPT0gRFJBR19FTlRFUkVEKSkpKSB7CisJCQkJc2V0KGNvbXBvbmVudCwgInNlbGVjdGVkIiwgcGFydCk7CisJCQkJcG9wdXAoY29tcG9uZW50LCBjbGFzc25hbWUpOworCQkJCXJlcGFpbnQoY29tcG9uZW50LCBjbGFzc25hbWUsIHBhcnQpOworCQkJfQorCQkJZWxzZSBpZiAoKGlkID09IE1vdXNlRXZlbnQuTU9VU0VfUFJFU1NFRCkgJiYgKHNlbGVjdGVkICE9IG51bGwpKSB7CisJCQkJY2xvc2V1cChjb21wb25lbnQpOworCQkJfQorCQkJZWxzZSBpZiAoaWQgPT0gTW91c2VFdmVudC5NT1VTRV9SRUxFQVNFRCkgeworCQkJCWlmICgocGFydCAhPSBpbnNpZGVwYXJ0KSAmJgorCQkJCQkJKChpbnNpZGVwYXJ0ID09IG51bGwpIHx8IChnZXRDbGFzcyhpbnNpZGVwYXJ0KSAhPSAibWVudSIpKSkgeworCQkJCQlpZiAoKGluc2lkZXBhcnQgIT0gbnVsbCkgJiYgZ2V0Qm9vbGVhbihpbnNpZGVwYXJ0LCAiZW5hYmxlZCIsIHRydWUpKSB7CisJCQkJCQlpZiAoZ2V0Q2xhc3MoaW5zaWRlcGFydCkgPT0gImNoZWNrYm94bWVudWl0ZW0iKSB7CisJCQkJCQkJY2hhbmdlQ2hlY2soaW5zaWRlcGFydCwgZmFsc2UpOworCQkJCQkJfQorCQkJCQkJZWxzZSBpbnZva2UoaW5zaWRlcGFydCwgImFjdGlvbiIpOworCQkJCQl9CisJCQkJCWNsb3NldXAoY29tcG9uZW50KTsKKwkJCQl9CisJCQl9CisJCX0KKwkJZWxzZSBpZiAoInBvcHVwbWVudSIgPT0gY2xhc3NuYW1lKSB7CisJCQlpZiAocGFydCAhPSBudWxsKSB7CisJCQkJaWYgKChpZCA9PSBNb3VzZUV2ZW50Lk1PVVNFX0VOVEVSRUQpIHx8IChpZCA9PSBEUkFHX0VOVEVSRUQpKSB7CisJCQkJCXNldChjb21wb25lbnQsICJzZWxlY3RlZCIsIHBhcnQpOworCQkJCQlwb3B1cChjb21wb25lbnQsIGNsYXNzbmFtZSk7CisJCQkJCXJlcGFpbnQoY29tcG9uZW50LCBjbGFzc25hbWUsIHBhcnQpOworCQkJCX0KKwkJCQllbHNlIGlmIChpZCA9PSBNb3VzZUV2ZW50Lk1PVVNFX1JFTEVBU0VEKSB7CisJCQkJCWlmICgoaW5zaWRlcGFydCA9PSBudWxsKSB8fCAoZ2V0Q2xhc3MoaW5zaWRlcGFydCkgIT0gIm1lbnUiKSkgeworCQkJCQkJT2JqZWN0IG1lbnViYXIgPSBwYXJ0OworCQkJCQkJZG8geworCQkJCQkJCW1lbnViYXIgPSBnZXRQYXJlbnQobWVudWJhcik7CisJCQkJCQl9IHdoaWxlIChnZXRDbGFzcyhtZW51YmFyKSAhPSAibWVudWJhciIpOworCQkJCQkJaWYgKChpbnNpZGVwYXJ0ICE9IG51bGwpICYmIGdldEJvb2xlYW4oaW5zaWRlcGFydCwgImVuYWJsZWQiLCB0cnVlKSkgeworCQkJCQkJCWlmIChnZXRDbGFzcyhpbnNpZGVwYXJ0KSA9PSAiY2hlY2tib3htZW51aXRlbSIpIHsKKwkJCQkJCQkJY2hhbmdlQ2hlY2soaW5zaWRlcGFydCwgZmFsc2UpOworCQkJCQkJCX0KKwkJCQkJCQllbHNlIGludm9rZShpbnNpZGVwYXJ0LCAiYWN0aW9uIik7CisJCQkJCQl9CisJCQkJCQljbG9zZXVwKG1lbnViYXIpOworCQkJCQl9CisJCQkJfQorCQkJCWVsc2UgaWYgKChpZCA9PSBNb3VzZUV2ZW50Lk1PVVNFX0VYSVRFRCkgfHwgKGlkID09IERSQUdfRVhJVEVEKSkgeworCQkJCQlpZiAoZ2V0Q2xhc3MocGFydCkgIT0gIm1lbnUiKSB7CisJCQkJCQlzZXQoY29tcG9uZW50LCAic2VsZWN0ZWQiLCBudWxsKTsKKwkJCQkJfQorCQkJCQlyZXBhaW50KGNvbXBvbmVudCwgY2xhc3NuYW1lLCBwYXJ0KTsKKwkJCQl9CisJCQl9CisJCX0KKwkJZWxzZSBpZiAoImRpYWxvZyIgPT0gY2xhc3NuYW1lKSB7CisJCQlpZiAocGFydCA9PSAiaGVhZGVyIikgeworCQkJCWlmIChpZCA9PSBNb3VzZUV2ZW50Lk1PVVNFX1BSRVNTRUQpIHsKKwkJCQkJcmVmZXJlbmNleCA9IG1vdXNleDsgcmVmZXJlbmNleSA9IG1vdXNleTsKKwkJCQkJaWYgKCFnZXRCb29sZWFuKGNvbXBvbmVudCwgIm1vZGFsIiwgZmFsc2UpICYmCisJCQkJCQkJKGdldChjb250ZW50LCAiY29tcG9uZW50IikgIT0gY29tcG9uZW50KSkgeworCQkJCQkJcmVtb3ZlSXRlbUltcGwoY29udGVudCwgImNvbXBvbmVudCIsIGNvbXBvbmVudCk7CisJCQkJCQlpbnNlcnRJdGVtKGNvbnRlbnQsICJjb21wb25lbnQiLCBjb21wb25lbnQsIDApOworCQkJCQkJc2V0KGNvbXBvbmVudCwgIjpwYXJlbnQiLCBjb250ZW50KTsKKwkJCQkJCXJlcGFpbnQoY29tcG9uZW50KTsKKwkJCQkJfQorCQkJCX0KKwkJCQllbHNlIGlmIChpZCA9PSBNb3VzZUV2ZW50Lk1PVVNFX0RSQUdHRUQpIHsKKwkJCQkJUmVjdGFuZ2xlIGJvdW5kcyA9IGdldFJlY3RhbmdsZShjb21wb25lbnQsICJib3VuZHMiKTsKKwkJCQkJaW50IGR4ID0gbW91c2V4IC0gcmVmZXJlbmNleDsgaW50IGR5ID0gbW91c2V5IC0gcmVmZXJlbmNleTsKKwkJCQkJcmVwYWludChjb21wb25lbnQsCisJCQkJCQlib3VuZHMueCArIE1hdGgubWluKDAsIGR4KSwgYm91bmRzLnkgKyBNYXRoLm1pbigwLCBkeSksCisJCQkJCQlib3VuZHMud2lkdGggKyBNYXRoLmFicyhkeCksIGJvdW5kcy5oZWlnaHQgKyBNYXRoLmFicyhkeSkpOworCQkJCQlib3VuZHMueCArPSBkeDsgYm91bmRzLnkgKz0gZHk7CisJCQkJCXJlZmVyZW5jZXggPSBtb3VzZXg7IHJlZmVyZW5jZXkgPSBtb3VzZXk7CisJCQkJfQorCQkJfQorCQl9CisJfQorCisJLyoqCisJICoKKwkgKi8KKwlwcml2YXRlIHZvaWQgc2V0UmVmZXJlbmNlKE9iamVjdCBjb21wb25lbnQsIGludCB4LCBpbnQgeSkgeworCQlyZWZlcmVuY2V4ID0geDsgcmVmZXJlbmNleSA9IHk7CisJCWZvciAoOyBjb21wb25lbnQgIT0gbnVsbDsgY29tcG9uZW50ID0gZ2V0UGFyZW50KGNvbXBvbmVudCkpIHsKKwkJCVJlY3RhbmdsZSBib3VuZHMgPSBnZXRSZWN0YW5nbGUoY29tcG9uZW50LCAiYm91bmRzIik7CisJCQlyZWZlcmVuY2V4ICs9IGJvdW5kcy54OyByZWZlcmVuY2V5ICs9IGJvdW5kcy55OworCQl9CisJfQorCisJLyoqCisJICoKKwkgKi8KKwlwcml2YXRlIHZvaWQgc2VsZWN0KE9iamVjdCBjb21wb25lbnQsIE9iamVjdCByb3csIFN0cmluZyBmaXJzdCwKKwkJCVN0cmluZyBjaGlsZCwgYm9vbGVhbiBzaGlmdGRvd24sIGJvb2xlYW4gY29udHJvbGRvd24pIHsKKwkJU3RyaW5nIHNlbGVjdGlvbiA9IGdldFN0cmluZyhjb21wb25lbnQsICJzZWxlY3Rpb24iLCAic2luZ2xlIik7CisJCU9iamVjdCBsZWFkID0gbnVsbDsKKwkJaWYgKHNoaWZ0ZG93biAmJiAoc2VsZWN0aW9uICE9ICJzaW5nbGUiKSAmJgorCQkJCSgobGVhZCA9IGdldChjb21wb25lbnQsICJsZWFkIikpICE9IG51bGwpKSB7CisJCQlleHRlbmQoY29tcG9uZW50LCBsZWFkLCByb3csIGZpcnN0LCBjaGlsZCk7CisJCX0KKwkJZWxzZSB7CisJCQlpZiAoY29udHJvbGRvd24gJiYgKHNlbGVjdGlvbiA9PSAibXVsdGlwbGUiKSkgeworCQkJCXNldEJvb2xlYW4ocm93LCAic2VsZWN0ZWQiLAorCQkJCQkhZ2V0Qm9vbGVhbihyb3csICJzZWxlY3RlZCIsIGZhbHNlKSwgZmFsc2UpOworCQkJCXJlcGFpbnQoY29tcG9uZW50LCBudWxsLCByb3cpOworCQkJCWludm9rZShjb21wb25lbnQsICJhY3Rpb24iKTsKKwkJCQlzZXQoY29tcG9uZW50LCAiYW5jaG9yIiwgbnVsbCk7CisJCQl9CisJCQllbHNlIGlmIChjb250cm9sZG93biAmJiBnZXRCb29sZWFuKHJvdywgInNlbGVjdGVkIiwgZmFsc2UpKSB7CisJCQkJZm9yIChPYmplY3QgaXRlbSA9IHJvdzsKKwkJCQkJCWl0ZW0gIT0gbnVsbDsgaXRlbSA9IGdldE5leHRJdGVtKGNvbXBvbmVudCwgaXRlbSwgY2hpbGQpKSB7CisJCQkJCWlmIChzZXRCb29sZWFuKGl0ZW0sICJzZWxlY3RlZCIsIGZhbHNlLCBmYWxzZSkpIHsKKwkJCQkJCXJlcGFpbnQoY29tcG9uZW50LCBudWxsLCBpdGVtKTsKKwkJCQkJfQorCQkJCX0KKwkJCQlpbnZva2UoY29tcG9uZW50LCAiYWN0aW9uIik7CisJCQkJc2V0KGNvbXBvbmVudCwgImFuY2hvciIsIG51bGwpOworCQkJfQorCQkJZWxzZSB7CisJCQkJc2VsZWN0SXRlbShjb21wb25lbnQsIHJvdywgZmlyc3QsIGNoaWxkKTsKKwkJCX0KKwkJfQorCQlzZXRMZWFkKGNvbXBvbmVudCwgKGxlYWQgIT0gbnVsbCkgPyBsZWFkIDogZ2V0KGNvbXBvbmVudCwgImxlYWQiKSwgcm93KTsKKwl9CisKKwkvKioKKwkgKgorCSAqLworCXByaXZhdGUgT2JqZWN0IGdldE5leHRJdGVtKE9iamVjdCBjb21wb25lbnQsCisJCQlPYmplY3QgaXRlbSwgU3RyaW5nIHN1Yml0ZW0pIHsKKwkJaWYgKHN1Yml0ZW0gPT0gbnVsbCkgeyByZXR1cm4gZ2V0KGl0ZW0sICI6bmV4dCIpOyB9CisJCU9iamVjdCBuZXh0ID0gZ2V0KGl0ZW0sIHN1Yml0ZW0pOworCQlpZiAoKG5leHQgPT0gbnVsbCkgfHwgIWdldEJvb2xlYW4oaXRlbSwgImV4cGFuZGVkIiwgdHJ1ZSkpIHsKKwkJCXdoaWxlICgoaXRlbSAhPSBjb21wb25lbnQpICYmICgobmV4dCA9IGdldChpdGVtLCAiOm5leHQiKSkgPT0gbnVsbCkpIHsKKwkJCQlpdGVtID0gZ2V0UGFyZW50KGl0ZW0pOworCQkJfQorCQl9CisJCXJldHVybiBuZXh0OworCX0KKwkKKwkvKioKKwkgKgorCSAqLworCXByaXZhdGUgdm9pZCBwcm9jZXNzRmllbGQoaW50IHgsIGludCB5LCBpbnQgY2xpY2tjb3VudCwKKwkJCWludCBpZCwgT2JqZWN0IGNvbXBvbmVudCwKKwkJCU9iamVjdCBwYXJ0LCBib29sZWFuIG11bHRpbGluZSwgYm9vbGVhbiBoaWRkZW4sIGludCBsZWZ0KSB7CisJCWlmIChpZCA9PSBNb3VzZUV2ZW50Lk1PVVNFX1BSRVNTRUQpIHsKKwkJCXNldFJlZmVyZW5jZShjb21wb25lbnQsIDIgKyBsZWZ0LCAyKTsKKwkJCWludCBteCA9IHggLSByZWZlcmVuY2V4OworCQkJaW50IG15ID0gMDsKKwkJCWlmICghbXVsdGlsaW5lKSB7CisJCQkJbXggKz0gZ2V0SW50ZWdlcihjb21wb25lbnQsICJvZmZzZXQiLCAwKTsKKwkJCX0gZWxzZSB7CisJCQkJUmVjdGFuZ2xlIHZpZXcgPSBnZXRSZWN0YW5nbGUoY29tcG9uZW50LCAiOnZpZXciKTsKKwkJCQlteCArPSB2aWV3LnggLSAxOworCQkJCW15ID0geSAtIHJlZmVyZW5jZXkgKyB2aWV3LnkgLSAxOworCQkJfQorCQkJaW50IGNhcmV0c3RhcnQgPSBnZXRDYXJldExvY2F0aW9uKGNvbXBvbmVudCwgbXgsIG15LCBoaWRkZW4pOworCQkJaW50IGNhcmV0ZW5kID0gY2FyZXRzdGFydDsKKwkJCS8vamF2YT4KKwkJCWlmIChjbGlja2NvdW50ID4gMSkgeworCQkJCVN0cmluZyB0ZXh0ID0gZ2V0U3RyaW5nKGNvbXBvbmVudCwgInRleHQiLCAiIik7CisJCQkJd2hpbGUgKChjYXJldHN0YXJ0ID4gMCkgJiYgKChjbGlja2NvdW50ID09IDIpID8KKwkJCQkJQ2hhcmFjdGVyLmlzTGV0dGVyT3JEaWdpdCh0ZXh0LmNoYXJBdChjYXJldHN0YXJ0IC0gMSkpIDoKKwkJCQkJCSh0ZXh0LmNoYXJBdChjYXJldHN0YXJ0IC0gMSkgIT0gJ1xuJykpKSB7IGNhcmV0c3RhcnQtLTsgfQorCQkJCXdoaWxlICgoY2FyZXRlbmQgPCB0ZXh0Lmxlbmd0aCgpKSAmJiAoKGNsaWNrY291bnQgPT0gMikgPworCQkJCQlDaGFyYWN0ZXIuaXNMZXR0ZXJPckRpZ2l0KHRleHQuY2hhckF0KGNhcmV0ZW5kKSkgOgorCQkJCQkJKHRleHQuY2hhckF0KGNhcmV0ZW5kKSAhPSAnXG4nKSkpIHsgY2FyZXRlbmQrKzsgfQorCQkJfQorCQkJLy88amF2YQorCQkJc2V0SW50ZWdlcihjb21wb25lbnQsICJzdGFydCIsIGNhcmV0c3RhcnQsIDApOworCQkJc2V0SW50ZWdlcihjb21wb25lbnQsICJlbmQiLCBjYXJldGVuZCwgMCk7CisJCQlzZXRGb2N1cyhjb21wb25lbnQpOworCQkJdmFsaWRhdGUoY29tcG9uZW50KTsgLy8gY2FyZXQgY2hlY2sgb25seQorCQl9CisJCWVsc2UgaWYgKGlkID09IE1vdXNlRXZlbnQuTU9VU0VfRFJBR0dFRCkgeworCQkJaW50IG14ID0geCAtIHJlZmVyZW5jZXg7CisJCQlpbnQgbXkgPSAwOworCQkJaWYgKCFtdWx0aWxpbmUpIHsKKwkJCQlteCArPSBnZXRJbnRlZ2VyKGNvbXBvbmVudCwgIm9mZnNldCIsIDApOworCQkJfSBlbHNlIHsKKwkJCQlSZWN0YW5nbGUgdmlldyA9IGdldFJlY3RhbmdsZShjb21wb25lbnQsICI6dmlldyIpOworCQkJCW14ICs9IHZpZXcueCAtIDE7CisJCQkJbXkgPSB5IC0gcmVmZXJlbmNleSArIHZpZXcueSAtIDE7CisJCQl9CisJCQlpbnQgZHJhZ2NhcmV0ID0gZ2V0Q2FyZXRMb2NhdGlvbihjb21wb25lbnQsIG14LCBteSwgaGlkZGVuKTsKKwkJCWlmIChkcmFnY2FyZXQgIT0gZ2V0SW50ZWdlcihjb21wb25lbnQsICJlbmQiLCAwKSkgeworCQkJCXNldEludGVnZXIoY29tcG9uZW50LCAiZW5kIiwgZHJhZ2NhcmV0LCAwKTsKKwkJCQl2YWxpZGF0ZShjb21wb25lbnQpOyAvLyBjYXJldCBjaGVjayBvbmx5CisJCQl9CisJCX0KKwkJLy9qYXZhPgorCQllbHNlIGlmICgoaWQgPT0gTW91c2VFdmVudC5NT1VTRV9FTlRFUkVEKSAmJiAobW91c2VwcmVzc2VkID09IG51bGwpKSB7CisJCQlzZXRDdXJzb3IoQ3Vyc29yLmdldFByZWRlZmluZWRDdXJzb3IoQ3Vyc29yLlRFWFRfQ1VSU09SKSk7CisJCX0KKwkJZWxzZSBpZiAoKChpZCA9PSBNb3VzZUV2ZW50Lk1PVVNFX0VYSVRFRCkgJiYgKG1vdXNlcHJlc3NlZCA9PSBudWxsKSkgfHwKKwkJCSgoaWQgPT0gTW91c2VFdmVudC5NT1VTRV9SRUxFQVNFRCkgJiYKKwkJCQkoKG1vdXNlaW5zaWRlICE9IGNvbXBvbmVudCkgfHwgKGluc2lkZXBhcnQgIT0gbnVsbCkpKSkgeworCQkJc2V0Q3Vyc29yKEN1cnNvci5nZXRQcmVkZWZpbmVkQ3Vyc29yKEN1cnNvci5ERUZBVUxUX0NVUlNPUikpOworCQl9CisJCS8vPGphdmEKKwl9CisKKwkvKioKKwkgKgorCSAqLworCXByaXZhdGUgaW50IGdldENhcmV0TG9jYXRpb24oT2JqZWN0IGNvbXBvbmVudCwgaW50IHgsIGludCB5LCBib29sZWFuIGhpZGRlbikgeworCQlTdHJpbmcgdGV4dCA9IGdldFN0cmluZyhjb21wb25lbnQsICJ0ZXh0IiwgIiIpOworCQlGb250TWV0cmljcyBmbSA9IGdldEZvbnRNZXRyaWNzKGdldEZvbnQoKSk7CisJCWZvciAoaW50IGkgPSAwLCBqID0gMDsgdHJ1ZTsgaSA9IGogKyAxKSB7CisJCQlqID0gdGV4dC5pbmRleE9mKCdcbicsIGkpOworCQkJaWYgKChqID09IC0xKSB8fCB5IDwgZm0uZ2V0SGVpZ2h0KCkpIHsKKwkJCQlpZiAoaiA9PSAtMSkgeyBqID0gdGV4dC5sZW5ndGgoKTsgfQorCQkJCWZvciAoaW50IGsgPSBpOyBrIDwgajsgaysrKSB7CisJCQkJCWludCBjaGFyd2lkdGggPSBmbS5jaGFyV2lkdGgoaGlkZGVuID8gJyonIDogdGV4dC5jaGFyQXQoaykpOworCQkJCQlpZiAoeCA8PSAoY2hhcndpZHRoIC8gMikpIHsKKwkJCQkJCXJldHVybiBrOworCQkJCQl9CisJCQkJCXggLT0gY2hhcndpZHRoOworCQkJCX0KKwkJCQlyZXR1cm4gajsKKwkJCX0KKwkJCXkgLT0gZm0uZ2V0SGVpZ2h0KCk7CisJCX0KKwl9CisJCisJLyoqCisJICoKKwkgKi8KKwlwcml2YXRlIGJvb2xlYW4gcHJvY2Vzc1Njcm9sbChpbnQgeCwgaW50IHksCisJCQlpbnQgaWQsIE9iamVjdCBjb21wb25lbnQsIE9iamVjdCBwYXJ0KSB7CisJCWlmICgocGFydCA9PSAidXAiKSB8fCAocGFydCA9PSAiZG93biIpIHx8CisJCQkJKHBhcnQgPT0gImxlZnQiKSB8fCAocGFydCA9PSAicmlnaHQiKSkgeworCQkJaWYgKChpZCA9PSBNb3VzZUV2ZW50Lk1PVVNFX0VOVEVSRUQpIHx8CisJCQkJCShpZCA9PSBNb3VzZUV2ZW50Lk1PVVNFX0VYSVRFRCkgfHwKKwkJCQkJKGlkID09IE1vdXNlRXZlbnQuTU9VU0VfUFJFU1NFRCkgfHwKKwkJCQkJKGlkID09IE1vdXNlRXZlbnQuTU9VU0VfUkVMRUFTRUQpKSB7CisJCQkJaWYgKGlkID09IE1vdXNlRXZlbnQuTU9VU0VfUFJFU1NFRCkgeworCQkJCQlpZiAocHJvY2Vzc1Njcm9sbChjb21wb25lbnQsIHBhcnQpKSB7CisJCQkJCQlzZXRUaW1lcigzMDBMKTsgcmV0dXJuIHRydWU7CisJCQkJCX0KKwkJCQl9CisJCQkJZWxzZSB7CisJCQkJCWlmIChpZCA9PSBNb3VzZUV2ZW50Lk1PVVNFX1JFTEVBU0VEKSB7IHNldFRpbWVyKDBMKTsgfQorCQkJCQlyZXBhaW50KGNvbXBvbmVudCwgbnVsbCwgcGFydCk7CisJCQkJfQorCQkJfQorCQl9CisJCWVsc2UgaWYgKChwYXJ0ID09ICJ1cHRyYWNrIikgfHwgKHBhcnQgPT0gImRvd250cmFjayIpIHx8CisJCQkJKHBhcnQgPT0gImxlZnR0cmFjayIpIHx8IChwYXJ0ID09ICJyaWdodHRyYWNrIikpIHsKKwkJCWlmIChpZCA9PSBNb3VzZUV2ZW50Lk1PVVNFX1BSRVNTRUQpIHsKKwkJCQlpZiAocHJvY2Vzc1Njcm9sbChjb21wb25lbnQsIHBhcnQpKSB7CisJCQkJCXNldFRpbWVyKDMwMEwpOworCQkJCX0KKwkJCX0KKwkJCWVsc2UgaWYgKGlkID09IE1vdXNlRXZlbnQuTU9VU0VfUkVMRUFTRUQpIHsKKwkJCQlzZXRUaW1lcigwTCk7CisJCQl9CisJCX0KKwkJZWxzZSBpZiAoKHBhcnQgPT0gInZrbm9iIikgfHwgKHBhcnQgPT0gImhrbm9iIikpIHsKKwkJCWlmIChpZCA9PSBNb3VzZUV2ZW50Lk1PVVNFX1BSRVNTRUQpIHsKKwkJCQlSZWN0YW5nbGUgcG9ydCA9IGdldFJlY3RhbmdsZShjb21wb25lbnQsICI6cG9ydCIpOworCQkJCVJlY3RhbmdsZSB2aWV3ID0gZ2V0UmVjdGFuZ2xlKGNvbXBvbmVudCwgIjp2aWV3Iik7CisJCQkJaWYgKHBhcnQgPT0gImhrbm9iIikgeworCQkJCQlyZWZlcmVuY2V4ID0geCAtCisJCQkJCQl2aWV3LnggKiAocG9ydC53aWR0aCAtIDIgKiBibG9jaykgLyB2aWV3LndpZHRoOworCQkJCX0gZWxzZSB7CisJCQkJCXJlZmVyZW5jZXkgPSB5IC0KKwkJCQkJCXZpZXcueSAqIChwb3J0LmhlaWdodCAtIDIgKiBibG9jaykgLyB2aWV3LmhlaWdodDsKKwkJCQl9CisJCQl9CisJCQllbHNlIGlmIChpZCA9PSBNb3VzZUV2ZW50Lk1PVVNFX0RSQUdHRUQpIHsKKwkJCQlSZWN0YW5nbGUgcG9ydCA9IGdldFJlY3RhbmdsZShjb21wb25lbnQsICI6cG9ydCIpOworCQkJCVJlY3RhbmdsZSB2aWV3ID0gZ2V0UmVjdGFuZ2xlKGNvbXBvbmVudCwgIjp2aWV3Iik7CisJCQkJaWYgKHBhcnQgPT0gImhrbm9iIikgeworCQkJCQlpbnQgdmlld3ggPSAoeCAtIHJlZmVyZW5jZXgpICoKKwkJCQkJCXZpZXcud2lkdGggLyAocG9ydC53aWR0aCAtIDIgKiBibG9jayk7CisJCQkJCXZpZXd4ID0gTWF0aC5tYXgoMCwgTWF0aC5taW4odmlld3gsIHZpZXcud2lkdGggLSBwb3J0LndpZHRoICsgMikpOworCQkJCQlpZiAodmlldy54ICE9IHZpZXd4KSB7CisJCQkJCQl2aWV3LnggPSB2aWV3eDsKKwkJCQkJCXJlcGFpbnQoY29tcG9uZW50LCBudWxsLCAiaG9yaXpvbnRhbCIpOworCQkJCQl9CisJCQkJfSBlbHNlIHsKKwkJCQkJaW50IHZpZXd5ID0gKHkgLSByZWZlcmVuY2V5KSAqCisJCQkJCQl2aWV3LmhlaWdodCAvIChwb3J0LmhlaWdodCAtIDIgKiBibG9jayk7CisJCQkJCXZpZXd5ID0gTWF0aC5tYXgoMCwgTWF0aC5taW4odmlld3ksIHZpZXcuaGVpZ2h0IC0gcG9ydC5oZWlnaHQgKyAyKSk7CisJCQkJCWlmICh2aWV3LnkgIT0gdmlld3kpIHsKKwkJCQkJCXZpZXcueSA9IHZpZXd5OworCQkJCQkJcmVwYWludChjb21wb25lbnQsIG51bGwsICJ2ZXJ0aWNhbCIpOworCQkJCQl9CisJCQkJfQorCQkJfQorCQl9CisJCWVsc2UgaWYgKHBhcnQgPT0gImNvcm5lciIpIHsKKwkJCQlwYXJ0ID0gImNvcm5lciI7IC8vIGNvbXBpbGVyIGJ1ZworCQl9CisJCWVsc2UgeworCQkJaWYgKGlkID09IE1vdXNlRXZlbnQuTU9VU0VfUFJFU1NFRCkgeworCQkJCVJlY3RhbmdsZSBwb3J0ID0gZ2V0UmVjdGFuZ2xlKGNvbXBvbmVudCwgIjpwb3J0Iik7CisJCQkJc2V0UmVmZXJlbmNlKGNvbXBvbmVudCwgcG9ydC54ICsgMSwgcG9ydC55ICsgMSk7CisJCQl9CisJCQlyZXR1cm4gZmFsc2U7CisJCX0KKwkJcmV0dXJuIHRydWU7CisJfQorCisJLyoqCisJICoKKwkgKi8KKwlwcml2YXRlIGJvb2xlYW4gcHJvY2Vzc1Njcm9sbChPYmplY3QgY29tcG9uZW50LCBPYmplY3QgcGFydCkgeworCQlSZWN0YW5nbGUgdmlldyA9IGdldFJlY3RhbmdsZShjb21wb25lbnQsICI6dmlldyIpOworCQlSZWN0YW5nbGUgcG9ydCA9ICgocGFydCA9PSAibGVmdCIpIHx8IChwYXJ0ID09ICJ1cCIpKSA/IG51bGwgOgorCQkJZ2V0UmVjdGFuZ2xlKGNvbXBvbmVudCwgIjpwb3J0Iik7CisJCWludCBkeCA9IDA7IGludCBkeSA9IDA7CisJCWlmIChwYXJ0ID09ICJsZWZ0IikgeyBkeCA9IC0xMDsgfQorCQllbHNlIGlmIChwYXJ0ID09ICJsZWZ0dHJhY2siKSB7IGR4ID0gLXBvcnQud2lkdGg7IH0KKwkJZWxzZSBpZiAocGFydCA9PSAicmlnaHQiKSB7IGR4ID0gMTA7IH0KKwkJZWxzZSBpZiAocGFydCA9PSAicmlnaHR0cmFjayIpIHsgZHggPSBwb3J0LndpZHRoOyB9CisJCWVsc2UgaWYgKHBhcnQgPT0gInVwIikgeyBkeSA9IC0xMDsgfQorCQllbHNlIGlmIChwYXJ0ID09ICJ1cHRyYWNrIikgeyBkeSA9IC1wb3J0LmhlaWdodDsgfQorCQllbHNlIGlmIChwYXJ0ID09ICJkb3duIikgeyBkeSA9IDEwOyB9CisJCWVsc2UgaWYgKHBhcnQgPT0gImRvd250cmFjayIpIHsgZHkgPSBwb3J0LmhlaWdodDsgfQorCQlpZiAoZHggIT0gMCkgeworCQkJZHggPSAoZHggPCAwKSA/IE1hdGgubWF4KC12aWV3LngsIGR4KSA6CisJCQkJTWF0aC5taW4oZHgsIHZpZXcud2lkdGggLSBwb3J0LndpZHRoICsgMiAtIHZpZXcueCk7CisJCX0KKwkJZWxzZSBpZiAoZHkgIT0gMCkgeworCQkJZHkgPSAoZHkgPCAwKSA/IE1hdGgubWF4KC12aWV3LnksIGR5KSA6CisJCQkJTWF0aC5taW4oZHksIHZpZXcuaGVpZ2h0IC0gcG9ydC5oZWlnaHQgKyAyIC0gdmlldy55KTsKKwkJfQorCQllbHNlIHJldHVybiBmYWxzZTsKKwkJdmlldy54ICs9IGR4OyB2aWV3LnkgKz0gZHk7CisJCXJlcGFpbnQoY29tcG9uZW50LCBudWxsLCAoZHggIT0gMCkgPyAiaG9yaXpvbnRhbCIgOiAidmVydGljYWwiKTsKKwkJcmV0dXJuICgoKHBhcnQgPT0gImxlZnQiKSB8fCAocGFydCA9PSAibGVmdHRyYWNrIikpICYmICh2aWV3LnggPiAwKSkgfHwKKwkJCSgoKHBhcnQgPT0gInJpZ2h0IikgfHwgKHBhcnQgPT0gInJpZ2h0dHJhY2siKSkgJiYKKwkJCQkodmlldy54IDwgdmlldy53aWR0aCAtIHBvcnQud2lkdGggKyAyKSkgfHwKKwkJCSgoKHBhcnQgPT0gInVwIikgfHwgKHBhcnQgPT0gInVwdHJhY2siKSkgJiYgKHZpZXcueSA+IDApKSB8fAorCQkJKCgocGFydCA9PSAiZG93biIpIHx8IChwYXJ0ID09ICJkb3dudHJhY2siKSkgJiYKKwkJCQkodmlldy55IDwgdmlldy5oZWlnaHQgLSBwb3J0LmhlaWdodCArIDIpKTsKKwl9CisKKwkvKioKKwkgKgorCSAqLworCXByaXZhdGUgYm9vbGVhbiBwcm9jZXNzU3BpbihPYmplY3QgY29tcG9uZW50LCBPYmplY3QgcGFydCkgeworCQlTdHJpbmcgdGV4dCA9IGdldFN0cmluZyhjb21wb25lbnQsICJ0ZXh0IiwgbnVsbCk7CisJCWlmICh0ZXh0ICE9IG51bGwpIHsKKwkJCXRyeSB7CisJCQkJU3RyaW5nIHZhbHVlID0gU3RyaW5nLnZhbHVlT2YoCisJCQkJCUludGVnZXIucGFyc2VJbnQodGV4dCkgKyAoKHBhcnQgPT0gInVwIikgPyAxIDogLTEpKTsKKwkJCQlzZXRTdHJpbmcoY29tcG9uZW50LCAidGV4dCIsIHZhbHVlLCBudWxsKTsKKwkJCQlzZXRJbnRlZ2VyKGNvbXBvbmVudCwgInN0YXJ0IiwgdmFsdWUubGVuZ3RoKCksIDApOworCQkJCXNldEludGVnZXIoY29tcG9uZW50LCAiZW5kIiwgMCwgMCk7CisJCQkJcmVwYWludChjb21wb25lbnQsICJzcGluYm94IiwgbnVsbCk7CisJCQkJaW52b2tlKGNvbXBvbmVudCwgImFjdGlvbiIpOworCQkJCXJldHVybiB0cnVlOworCQkJfSBjYXRjaCAoTnVtYmVyRm9ybWF0RXhjZXB0aW9uIG5mZSkge30KKwkJfQorCQlyZXR1cm4gZmFsc2U7CisJfQorCisJLy9qYXZhPgorCS8qcHVibGljIHZvaWQgc2V0RXZlbnRIYW5kbGVyKE9iamVjdCBjb21wb25lbnQsIE9iamVjdCBldmVudGhhbmRsZXIpIHsKKwkJc2V0KGNvbXBvbmVudCwgIjpoYW5kbGVyIiwgZXZlbnRoYW5kbGVyKTsKKwl9Ki8KKwkKKwkvKioKKwkgKgorCSAqLworCXByaXZhdGUgdm9pZCBpbnZva2UoT2JqZWN0IGNvbXBvbmVudCwgU3RyaW5nIGV2ZW50KSB7CisJCU1ldGhvZCBtZXRob2QgPSAoTWV0aG9kKSBnZXQoY29tcG9uZW50LCBldmVudCk7CisJCWlmIChtZXRob2QgIT0gbnVsbCkgeworCQkJdHJ5IHsKKwkJCQltZXRob2QuaW52b2tlKHRoaXMsIG51bGwpOworCQkJfSBjYXRjaCAoSW52b2NhdGlvblRhcmdldEV4Y2VwdGlvbiBpdGUpIHsKKwkJCQlpdGUuZ2V0VGFyZ2V0RXhjZXB0aW9uKCkucHJpbnRTdGFja1RyYWNlKCk7CisJCQl9IGNhdGNoIChFeGNlcHRpb24gZXhjKSB7CisJCQkJZXhjLnByaW50U3RhY2tUcmFjZSgpOworCQkJfQorCQl9CisJfQorCS8vPGphdmEKKwkvKm1pZHAKKwlwcml2YXRlIHZvaWQgaW52b2tlKE9iamVjdCBjb21wb25lbnQsIFN0cmluZyBldmVudCkgeworCQkJU3RyaW5nIGFjdGlvbiA9IChTdHJpbmcpIGdldChjb21wb25lbnQsIGV2ZW50KTsKKwkJCWlmIChhY3Rpb24gIT0gbnVsbCkgeyBoYW5kbGUoY29tcG9uZW50LCBhY3Rpb24pOyB9CisJfQorCXByb3RlY3RlZCB2b2lkIGhhbmRsZShPYmplY3Qgc291cmNlLCBTdHJpbmcgYWN0aW9uKSB7CisJfQorCW1pZHAqLworCisJLyoqCisJICoKKwkgKi8KKwlwcml2YXRlIGJvb2xlYW4gZmluZENvbXBvbmVudChPYmplY3QgY29tcG9uZW50LCBpbnQgeCwgaW50IHkpIHsKKwkJaWYgKGNvbXBvbmVudCA9PSBjb250ZW50KSB7CisJCQltb3VzZWluc2lkZSA9IGluc2lkZXBhcnQgPSBudWxsOworCQkJbW91c2V4ID0geDsgbW91c2V5ID0geTsKKwkJfQorCQlpZiAoIWdldEJvb2xlYW4oY29tcG9uZW50LCAidmlzaWJsZSIsIHRydWUpKSB7IHJldHVybiBmYWxzZTsgfQorCQlSZWN0YW5nbGUgYm91bmRzID0gZ2V0UmVjdGFuZ2xlKGNvbXBvbmVudCwgImJvdW5kcyIpOworCQlpZiAoKGJvdW5kcyA9PSBudWxsKSB8fCAhKGJvdW5kcy5jb250YWlucyh4LCB5KSkpIHsgcmV0dXJuIGZhbHNlOyB9IC8vamF2YQorCQkvL21pZHAgaWYgKChib3VuZHMgPT0gbnVsbCkgfHwgKHggPCBib3VuZHMueCkgfHwgKHggLSBib3VuZHMueCA+PSBib3VuZHMud2lkdGgpIHx8CisJCS8vbWlkcCAJKHkgPCBib3VuZHMueSkgfHwgKHkgLSBib3VuZHMueSA+PSBib3VuZHMuaGVpZ2h0KSkgeyByZXR1cm4gZmFsc2U7IH0KKwkJbW91c2VpbnNpZGUgPSBjb21wb25lbnQ7CisJCXggLT0gYm91bmRzLng7IHkgLT0gYm91bmRzLnk7CisJCVN0cmluZyBjbGFzc25hbWUgPSBnZXRDbGFzcyhjb21wb25lbnQpOworCisJCWlmICgiY29tYm9ib3giID09IGNsYXNzbmFtZSkgeworCQkJaWYgKGdldEJvb2xlYW4oY29tcG9uZW50LCAiZWRpdGFibGUiLCB0cnVlKSAmJiAoeCA8PSBib3VuZHMud2lkdGggLSBibG9jaykpIHsKKwkJCQlJbWFnZSBpY29uID0gZ2V0SWNvbihjb21wb25lbnQsICJpY29uIiwgbnVsbCk7CisJCQkJaW5zaWRlcGFydCA9ICgoaWNvbiAhPSBudWxsKSAmJiAoeCA8PSAyICsgaWNvbi5nZXRXaWR0aCh0aGlzKSkpID8KKwkJCQkJImljb24iIDogbnVsbDsKKwkJCX0gZWxzZSB7CisJCQkJaW5zaWRlcGFydCA9ICJkb3duIjsKKwkJCX0KKwkJfQorCQllbHNlIGlmICgiY29tYm9saXN0IiA9PSBjbGFzc25hbWUpIHsKKwkJCWlmICghZmluZFNjcm9sbFBhbmUoY29tcG9uZW50LCB4LCB5LCBib3VuZHMpKSB7CisJCQkJeSArPSBnZXRSZWN0YW5nbGUoY29tcG9uZW50LCAiOnZpZXciKS55OworCQkJCWZvciAoT2JqZWN0IGNob2ljZSA9IGdldChnZXQoY29tcG9uZW50LCAiY29tYm9ib3giKSwgImNob2ljZSIpOworCQkJCQkJY2hvaWNlICE9IG51bGw7IGNob2ljZSA9IGdldChjaG9pY2UsICI6bmV4dCIpKSB7CisJCQkJCVJlY3RhbmdsZSByID0gZ2V0UmVjdGFuZ2xlKGNob2ljZSwgImJvdW5kcyIpOworCQkJCQlpZiAoKHkgPj0gci55KSAmJiAoeSA8IHIueSArIHIuaGVpZ2h0KSkgeworCQkJCQkJaW5zaWRlcGFydCA9IGNob2ljZTsgYnJlYWs7CisJCQkJCX0KKwkJCQl9CisJCQl9CisJCX0KKwkJZWxzZSBpZiAoInRleHRhcmVhIiA9PSBjbGFzc25hbWUpIHsKKwkJCWZpbmRTY3JvbGxQYW5lKGNvbXBvbmVudCwgeCwgeSwgYm91bmRzKTsKKwkJfQorCQllbHNlIGlmICgidGFiYmVkcGFuZSIgPT0gY2xhc3NuYW1lKSB7CisJCQlPYmplY3QgdGFiY29udGVudCA9IGdldEl0ZW1JbXBsKGNvbXBvbmVudCwKKwkJCQkiY29tcG9uZW50IiwgZ2V0SW50ZWdlcihjb21wb25lbnQsICJzZWxlY3RlZCIsIDApKTsKKwkJCWlmICgodGFiY29udGVudCA9PSBudWxsKSB8fCAhZmluZENvbXBvbmVudCh0YWJjb250ZW50LCB4LCB5KSkgeworCQkJCWZvciAoT2JqZWN0IGNvbXAgPSBnZXQoY29tcG9uZW50LCAidGFiIik7CisJCQkJCQljb21wICE9IG51bGw7IGNvbXAgPSBnZXQoY29tcCwgIjpuZXh0IikpIHsKKwkJCQkJUmVjdGFuZ2xlIHIgPSBnZXRSZWN0YW5nbGUoY29tcCwgImJvdW5kcyIpOworCQkJCQlpZiAoci5jb250YWlucyh4LCB5KSkgeyAvL2phdmEKKwkJCQkJLy9taWRwIGlmICgoeCA+PSByLngpICYmICh4IC0gci54IDwgci53aWR0aCkgJiYgKHkgPj0gci55KSAmJiAoeSAtIHIueSA8IHIuaGVpZ2h0KSkgeworCQkJCQkJaW5zaWRlcGFydCA9IGNvbXA7IGJyZWFrOworCQkJCQl9CisJCQkJfQorCQkJfQorCQl9CisJCWVsc2UgaWYgKCgicGFuZWwiID09IGNsYXNzbmFtZSkgfHwgKCJkZXNrdG9wIiA9PSBjbGFzc25hbWUpIHx8CisJCQkJKCJkaWFsb2ciID09IGNsYXNzbmFtZSkpIHsKKwkJCWlmICgoImRpYWxvZyIgPT0gY2xhc3NuYW1lKSAmJgorCQkJCQkoeSA8IDQgKyBnZXRJbnRlZ2VyKGNvbXBvbmVudCwgInRpdGxlaGVpZ2h0IiwgMCkpKSB7CisJCQkJaW5zaWRlcGFydCA9ICJoZWFkZXIiOworCQkJfSBlbHNlIHsKKwkJCQlmb3IgKE9iamVjdCBjb21wID0gZ2V0KGNvbXBvbmVudCwgImNvbXBvbmVudCIpOworCQkJCQkJY29tcCAhPSBudWxsOyBjb21wID0gZ2V0KGNvbXAsICI6bmV4dCIpKSB7CisJCQkJCWlmIChmaW5kQ29tcG9uZW50KGNvbXAsIHgsIHkpKSB7IGJyZWFrOyB9CisJCQkJCWlmICgoImRlc2t0b3AiID09IGNsYXNzbmFtZSkgJiYKKwkJCQkJCQlnZXRCb29sZWFuKGNvbXAsICJtb2RhbCIsIGZhbHNlKSkgeyBicmVhazsgfSAvLyAmJiBkaWFsb2cKKwkJCQl9CisJCQl9CisJCX0KKwkJZWxzZSBpZiAoInNwaW5ib3giID09IGNsYXNzbmFtZSkgeworCQkJaW5zaWRlcGFydCA9ICh4IDw9IGJvdW5kcy53aWR0aCAtIGJsb2NrKSA/IG51bGwgOgorCQkJCSgoeSA8PSBib3VuZHMuaGVpZ2h0IC8gMikgPyAidXAiIDogImRvd24iKTsKKwkJfQorCQllbHNlIGlmICgic3BsaXRwYW5lIiA9PSBjbGFzc25hbWUpIHsgCisJCQlPYmplY3QgY29tcDEgPSBnZXQoY29tcG9uZW50LCAiY29tcG9uZW50Iik7CisJCQlpZiAoY29tcDEgIT0gbnVsbCkgeworCQkJCWlmICghZmluZENvbXBvbmVudChjb21wMSwgeCwgeSkpIHsKKwkJCQkJT2JqZWN0IGNvbXAyID0gZ2V0KGNvbXAxLCAiOm5leHQiKTsKKwkJCQkJaWYgKGNvbXAyICE9IG51bGwpIHsKKwkJCQkJCWZpbmRDb21wb25lbnQoY29tcDIsIHgsIHkpOworCQkJCQl9CisJCQkJfQorCQkJfQorCQl9CisJCWVsc2UgaWYgKCJsaXN0IiA9PSBjbGFzc25hbWUpIHsKKwkJCWZpbmRTY3JvbGxQYW5lKGNvbXBvbmVudCwgeCwgeSwgYm91bmRzKTsKKwkJfQorCQllbHNlIGlmICgidGFibGUiID09IGNsYXNzbmFtZSkgeworCQkJZmluZFNjcm9sbFBhbmUoY29tcG9uZW50LCB4LCB5LCBib3VuZHMpOworCQl9CisJCWVsc2UgaWYgKCJ0cmVlIiA9PSBjbGFzc25hbWUpIHsKKwkJCWZpbmRTY3JvbGxQYW5lKGNvbXBvbmVudCwgeCwgeSwgYm91bmRzKTsKKwkJfQorCQllbHNlIGlmICgibWVudWJhciIgPT0gY2xhc3NuYW1lKSB7CisJCQlmb3IgKE9iamVjdCBtZW51ID0gZ2V0KGNvbXBvbmVudCwgIm1lbnUiKTsKKwkJCQkJbWVudSAhPSBudWxsOyBtZW51ID0gZ2V0KG1lbnUsICI6bmV4dCIpKSB7CisJCQkJUmVjdGFuZ2xlIHIgPSBnZXRSZWN0YW5nbGUobWVudSwgImJvdW5kcyIpOworCQkJCWlmICgoeCA+PSByLngpICYmICh4IDwgci54ICsgci53aWR0aCkpIHsKKwkJCQkJaW5zaWRlcGFydCA9IG1lbnU7IGJyZWFrOworCQkJCX0KKwkJCX0KKwkJfQorCQllbHNlIGlmICgicG9wdXBtZW51IiA9PSBjbGFzc25hbWUpIHsKKwkJCWZvciAoT2JqZWN0IG1lbnUgPSBnZXQoZ2V0KGNvbXBvbmVudCwgIm1lbnUiKSwgIm1lbnUiKTsKKwkJCQkJbWVudSAhPSBudWxsOyBtZW51ID0gZ2V0KG1lbnUsICI6bmV4dCIpKSB7CisJCQkJUmVjdGFuZ2xlIHIgPSBnZXRSZWN0YW5nbGUobWVudSwgImJvdW5kcyIpOworCQkJCWlmICgoeSA+PSByLnkpICYmICh5IDwgci55ICsgci5oZWlnaHQpKSB7CisJCQkJCWluc2lkZXBhcnQgPSBtZW51OyBicmVhazsKKwkJCQl9CisJCQl9CisJCX0KKwkJcmV0dXJuIHRydWU7CisJfQorCisJLyoqCisJICoKKwkgKi8KKwlwcml2YXRlIGJvb2xlYW4gZmluZFNjcm9sbFBhbmUoT2JqZWN0IGNvbXBvbmVudCwKKwkJCWludCB4LCBpbnQgeSwgUmVjdGFuZ2xlIGJvdW5kcykgeworCQlSZWN0YW5nbGUgcG9ydCA9IGdldFJlY3RhbmdsZShjb21wb25lbnQsICI6cG9ydCIpOworCQlpZiAoKHggPCBwb3J0LngpIHx8ICh5IDwgcG9ydC55KSB8fAorCQkJCSgoeCA+PSBwb3J0LnggKyBwb3J0LndpZHRoKSAmJiAoeSA+PSBwb3J0LnkgKyBwb3J0LmhlaWdodCkpKSB7CisJCQlpbnNpZGVwYXJ0ID0gImNvcm5lciI7CisJCX0KKwkJZWxzZSBpZiAoKHggPj0gcG9ydC54ICsgcG9ydC53aWR0aCkgfHwgKHkgPj0gcG9ydC55ICsgcG9ydC5oZWlnaHQpKSB7CisJCQlib29sZWFuIGhvcml6b250YWwgPSAoeSA+PSBwb3J0LnkgKyBwb3J0LmhlaWdodCk7CisJCQlpbnQgcCA9IGhvcml6b250YWwgPyAoeCAtIHBvcnQueCkgOiAoeSAtIHBvcnQueSk7CisJCQlpbnQgcG9ydHNpemUgPSBob3Jpem9udGFsID8gcG9ydC53aWR0aCA6IHBvcnQuaGVpZ2h0OworCQkJaW50IGJ1dHRvbiA9IE1hdGgubWluKGJsb2NrLCBwb3J0c2l6ZSAvIDIpOworCQkJaWYgKHAgPCBidXR0b24pIHsKKwkJCQlpbnNpZGVwYXJ0ID0gaG9yaXpvbnRhbCA/ICJsZWZ0IiA6ICJ1cCI7CisJCQl9CisJCQllbHNlIGlmIChwID49IHBvcnRzaXplIC0gYnV0dG9uKSB7CisJCQkJaW5zaWRlcGFydCA9IGhvcml6b250YWwgPyAicmlnaHQiIDogImRvd24iOworCQkJfQorCQkJZWxzZSB7CisJCQkJUmVjdGFuZ2xlIHZpZXcgPSBnZXRSZWN0YW5nbGUoY29tcG9uZW50LCAiOnZpZXciKTsKKwkJCQlpbnQgdmlld3AgPSBob3Jpem9udGFsID8gdmlldy54IDogdmlldy55OworCQkJCWludCB2aWV3c2l6ZSA9IGhvcml6b250YWwgPyB2aWV3LndpZHRoIDogdmlldy5oZWlnaHQ7CisJCQkJaW50IHRyYWNrID0gcG9ydHNpemUgLSAoMiAqIGJ1dHRvbik7CisJCQkJaW50IGtub2IgPSBNYXRoLm1pbih0cmFjaywKKwkJCQkJTWF0aC5tYXgodHJhY2sgKiAocG9ydHNpemUgLSAyKSAvIHZpZXdzaXplLCA2KSk7CisJCQkJaW50IGRlY3JlYXNlID0gdmlld3AgKiAodHJhY2sgLSBrbm9iKSAvICh2aWV3c2l6ZSAtIHBvcnRzaXplICsgMik7CisJCQkJaWYgKHAgPCBidXR0b24gKyBkZWNyZWFzZSkgeworCQkJCQlpbnNpZGVwYXJ0ID0gaG9yaXpvbnRhbCA/ICJsZWZ0dHJhY2siIDogInVwdHJhY2siOworCQkJCX0KKwkJCQllbHNlIGlmIChwIDwgYnV0dG9uICsgZGVjcmVhc2UgKyBrbm9iKSB7CisJCQkJCWluc2lkZXBhcnQgPSBob3Jpem9udGFsID8gImhrbm9iIiA6ICJ2a25vYiI7CisJCQkJfQorCQkJCWVsc2UgeworCQkJCQlpbnNpZGVwYXJ0ID0gaG9yaXpvbnRhbCA/ICJyaWdodHRyYWNrIiA6ICJkb3dudHJhY2siOworCQkJCX0KKwkJCX0KKwkJfQorCQllbHNlIHsgcmV0dXJuIGZhbHNlOyB9CisJCXJldHVybiB0cnVlOworCX0KKworCS8qKgorCSAqCisJICovCisJcHJpdmF0ZSB2b2lkIHJlcGFpbnQoT2JqZWN0IGNvbXBvbmVudCwgT2JqZWN0IGNsYXNzbmFtZSwgT2JqZWN0IHBhcnQpIHsKKwkJUmVjdGFuZ2xlIGIgPSBnZXRSZWN0YW5nbGUoY29tcG9uZW50LCAiYm91bmRzIik7CisJCWlmICgoY2xhc3NuYW1lID09ICJjb21ib2JveCIpIHx8IChjbGFzc25hbWUgPT0gInNwaW5ib3giKSkgeworCQkJYm9vbGVhbiBkb3duID0gKHBhcnQgPT0gInVwIikgfHwgKHBhcnQgPT0gImRvd24iKTsgLy8gZWxzZSB0ZXh0CisJCQlyZXBhaW50KGNvbXBvbmVudCwgZG93biA/IChiLnggKyBiLndpZHRoIC0gYmxvY2spIDogYi54LCBiLnksCisJCQkJZG93biA/IGJsb2NrIDogKGIud2lkdGggLSBibG9jayksIGIuaGVpZ2h0KTsKKwkJfQorCQkvL2Vsc2UgaWYgKGNsYXNzbmFtZSA9PSAiZGlhbG9nIikge30KKwkJCS8vaW50IHRpdGxlaGVpZ2h0ID0gZ2V0SW50ZWdlcihjb21wb25lbnQsICJ0aXRsZWhlaWdodCIsIDApOworCQkvL2Vsc2UgaWYgKGNsYXNzbmFtZSA9PSAic3BsaXRwYW5lIikge30KKwkJZWxzZSBpZiAoKGNsYXNzbmFtZSA9PSAidGFiYmVkcGFuZSIpIHx8CisJCQkJKGNsYXNzbmFtZSA9PSAibWVudWJhciIpIHx8IChjbGFzc25hbWUgPT0gInBvcHVwbWVudSIpKSB7CisJCQlSZWN0YW5nbGUgciA9IGdldFJlY3RhbmdsZShwYXJ0LCAiYm91bmRzIik7CisJCQlyZXBhaW50KGNvbXBvbmVudCwgYi54ICsgci54LCBiLnkgKyByLnksCisJCQkJKGNsYXNzbmFtZSA9PSAicG9wdXBtZW51IikgPyBiLndpZHRoIDogci53aWR0aCwgci5oZWlnaHQpOworCQl9CisJCWVsc2UgLy9pZiAoKGNsYXNzbmFtZSA9PSAiY29tYm9saXN0IikgfHwgKGNsYXNzbmFtZSA9PSAidGV4dGFyZWEiKSB8fAorCQkJCXsvLyhjbGFzc25hbWUgPT0gImxpc3QiKSB8fCAoY2xhc3NuYW1lID09ICJ0YWJsZSIpIHx8IChjbGFzc25hbWUgPT0gInRyZWUiKSkgeworCQkJUmVjdGFuZ2xlIHBvcnQgPSBnZXRSZWN0YW5nbGUoY29tcG9uZW50LCAiOnBvcnQiKTsKKwkJCWlmIChwYXJ0ID09ICJsZWZ0IikgeworCQkJCXJlcGFpbnQoY29tcG9uZW50LCBiLnggKyBwb3J0LngsIGIueSArIGIuaGVpZ2h0IC0gYmxvY2ssIGJsb2NrLCBibG9jayk7CisJCQl9CisJCQllbHNlIGlmIChwYXJ0ID09ICJyaWdodCIpIHsKKwkJCQlyZXBhaW50KGNvbXBvbmVudCwgYi54ICsgcG9ydC54ICsgcG9ydC53aWR0aCAtIGJsb2NrLCBiLnkgKyBiLmhlaWdodCAtIGJsb2NrLCBibG9jaywgYmxvY2spOworCQkJfQorCQkJZWxzZSBpZiAocGFydCA9PSAidXAiKSB7CisJCQkJcmVwYWludChjb21wb25lbnQsIGIueCArIGIud2lkdGggLSBibG9jaywgYi55ICsgcG9ydC55LCBibG9jaywgYmxvY2spOworCQkJfQorCQkJZWxzZSBpZiAocGFydCA9PSAiZG93biIpIHsKKwkJCQlyZXBhaW50KGNvbXBvbmVudCwgYi54ICsgYi53aWR0aCAtIGJsb2NrLCBiLnkgKyBwb3J0LnkgKyBwb3J0LmhlaWdodCAtIGJsb2NrLCBibG9jaywgYmxvY2spOworCQkJfQorCQkJZWxzZSBpZiAocGFydCA9PSAiaG9yaXpvbnRhbCIpIHsgLy8gaG9yaXpvbnRhbHkgY2VudGVyIHBhcnQKKwkJCQlyZXBhaW50KGNvbXBvbmVudCwgYi54ICsgcG9ydC54LCBiLnksIHBvcnQud2lkdGgsIGIuaGVpZ2h0KTsKKwkJCX0KKwkJCWVsc2UgaWYgKHBhcnQgPT0gInZlcnRpY2FsIikgeworCQkJCXJlcGFpbnQoY29tcG9uZW50LCBiLngsIGIueSArIHBvcnQueSwgYi53aWR0aCwgcG9ydC5oZWlnaHQpOworCQkJfQorCQkJZWxzZSBpZiAocGFydCA9PSAidGV4dCIpIHsgLy90ZXh0YXJlYQorCQkJCXJlcGFpbnQoY29tcG9uZW50LCBiLnggKyBwb3J0LngsIGIueSArIHBvcnQueSwgcG9ydC53aWR0aCwgcG9ydC5oZWlnaHQpOworCQkJfQorCQkJZWxzZSB7CisJCQkJUmVjdGFuZ2xlIHZpZXcgPSBnZXRSZWN0YW5nbGUoY29tcG9uZW50LCAiOnZpZXciKTsKKwkJCQlSZWN0YW5nbGUgciA9IGdldFJlY3RhbmdsZShwYXJ0LCAiYm91bmRzIik7CisJCQkJaWYgKChyLnkgKyByLmhlaWdodCA+PSB2aWV3LnkpICYmIChyLnkgPD0gdmlldy55ICsgcG9ydC5oZWlnaHQpKSB7CisJCQkJCXJlcGFpbnQoY29tcG9uZW50LCBiLnggKyBwb3J0LngsIGIueSArIHBvcnQueSAtIHZpZXcueSArIDEgKyByLnksCisJCQkJCQlwb3J0LndpZHRoLCByLmhlaWdodCk7CisJCQkJCS8vPyBuZWVkIGN1dCBpdGVtIHJlY3RhbmdsZSBhYm92ZS9iZWxsb3cgdmlld3BvcnQKKwkJCQl9CisJCQl9CisJCX0KKwl9CisJCisJLyoqCisJICoKKwkgKi8KKwlwcml2YXRlIHZvaWQgdmFsaWRhdGUoT2JqZWN0IGNvbXBvbmVudCkgeworCQlyZXBhaW50KGNvbXBvbmVudCk7CisJCVJlY3RhbmdsZSBib3VuZHMgPSBnZXRSZWN0YW5nbGUoY29tcG9uZW50LCAiYm91bmRzIik7CisJCWJvdW5kcy53aWR0aCA9IC0xICogTWF0aC5hYnMoYm91bmRzLndpZHRoKTsKKwl9CisJCisJLyoqCisJICoKKwkgKi8KKwlwcml2YXRlIHZvaWQgcmVwYWludChPYmplY3QgY29tcG9uZW50KSB7CisJCVJlY3RhbmdsZSBib3VuZHMgPSBnZXRSZWN0YW5nbGUoY29tcG9uZW50LCAiYm91bmRzIik7CisJCWlmIChib3VuZHMgIT0gbnVsbCkgeworCQkJcmVwYWludChjb21wb25lbnQsIGJvdW5kcy54LCBib3VuZHMueSwgYm91bmRzLndpZHRoLCBib3VuZHMuaGVpZ2h0KTsKKwkJfQorCX0KKworCS8qKgorCSAqCisJICovCisJcHJpdmF0ZSB2b2lkIHJlcGFpbnQoT2JqZWN0IGNvbXBvbmVudCwgaW50IHgsIGludCB5LCBpbnQgd2lkdGgsIGludCBoZWlnaHQpIHsKKwkJd2hpbGUgKChjb21wb25lbnQgPSBnZXRQYXJlbnQoY29tcG9uZW50KSkgIT0gbnVsbCkgeworCQkJUmVjdGFuZ2xlIGJvdW5kcyA9IGdldFJlY3RhbmdsZShjb21wb25lbnQsICJib3VuZHMiKTsKKwkJCXggKz0gYm91bmRzLng7CisJCQl5ICs9IGJvdW5kcy55OworCQl9CisJCXJlcGFpbnQoeCwgeSwgd2lkdGgsIGhlaWdodCk7CisJfQorCisJLypwcml2YXRlIHZvaWQgY2xpcChHcmFwaGljcyBnLAorCQkJUmVjdGFuZ2xlIGNsaXAsIGludCB4LCBpbnQgeSwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KSB7CisJCWludCB4MSA9IE1hdGgubWF4KGNsaXAueCwgeCk7IAorCQlpbnQgeTEgPSBNYXRoLm1heChjbGlwLnksIHkpOworCQlpbnQgeDIgPSBNYXRoLm1pbihjbGlwLnggKyBjbGlwLndpZHRoLCB4ICsgd2lkdGgpOworCQlpbnQgeTIgPSBNYXRoLm1pbihjbGlwLnkgKyBjbGlwLmhlaWdodCwgeSArIGhlaWdodCk7CisJCWcuc2V0Q2xpcCh4MSwgeTEsIHgyIC0geDEsIHkyIC0geTEpOworCX0qLworCisJLyoqCisJICoKKwkgKi8KKwlwdWJsaWMgYm9vbGVhbiByZXF1ZXN0Rm9jdXMoT2JqZWN0IGNvbXBvbmVudCkgeworCQlpZiAoY2hlY2tGb2N1c2FibGUoY29tcG9uZW50LCB0cnVlKSkgeworCQkJc2V0Rm9jdXMoY29tcG9uZW50KTsgcmV0dXJuIHRydWU7CisJCX0KKwkJcmV0dXJuIGZhbHNlOworCX0KKworCS8qKgorCSAqCisJICovCisJcHJpdmF0ZSBib29sZWFuIHNldEZvY3VzKE9iamVjdCBjb21wb25lbnQpIHsKKwkJaWYgKCFmb2N1c2luc2lkZSkgeyAvL2phdmEKKwkJCXJlcXVlc3RGb2N1cygpOyAvL2phdmEKKwkJfSAvL2phdmEKKwkJaWYgKGZvY3Vzb3duZXIgIT0gY29tcG9uZW50KSB7CisJCQlPYmplY3QgZm9jdXNlZCA9IGZvY3Vzb3duZXI7CisJCQlmb2N1c293bmVyID0gY29tcG9uZW50OworCQkJaWYgKGZvY3VzZWQgIT0gbnVsbCkgeworCQkJCS8vbW91c2VFdmVudChudWxsLCBGb2N1c0V2ZW50LkZPQ1VTX0xPU1QsIGZvY3VzZWQsIG51bGwsIG51bGwpOworCQkJCXJlcGFpbnQoZm9jdXNlZCk7CisJCQkJLy9mb2N1c0dhaW5lZChjb21wb25lbnQpOworCQkJfQorCQkJcmV0dXJuIHRydWU7CisJCX0KKwkJcmV0dXJuIGZhbHNlOworCX0KKwkKKwkvKioKKwkgKiBAcmV0dXJuIG5leHQgZm9jdXNhYmxlIGNvbXBvbmVudCBpcyBmb3VuZCAobm90IHRoZSBmaXJzdCBvZiB0aGUgZGVza3RvcC9kaWFsb2cpCisJICovCisJcHJpdmF0ZSBib29sZWFuIHNldE5leHRGb2N1c2FibGUoT2JqZWN0IGN1cnJlbnQsIGJvb2xlYW4gb3V0Z28pIHsKKwkJYm9vbGVhbiBjb25zdW1lZCA9IHRydWU7CisJCWZvciAoT2JqZWN0IG5leHQgPSBudWxsLCBjb21wb25lbnQgPSBjdXJyZW50OyB0cnVlOyBjb21wb25lbnQgPSBuZXh0KSB7CisJCQluZXh0ID0gZ2V0KGNvbXBvbmVudCwgImNvbXBvbmVudCIpOyAvLyBjaGVjayBmaXJzdCBzdWJjb21wb25lbnQKKwkJCWlmIChuZXh0ID09IG51bGwpIHsgbmV4dCA9IGdldChjb21wb25lbnQsICI6bmV4dCIpOyB9IC8vIGNoZWNrIG5leHQgY29tcG9uZW50CisJCQl3aGlsZSAobmV4dCA9PSBudWxsKSB7IC8vIGZpbmQgdGhlIG5leHQgb2YgdGhlIHBhcmVudHMsIG9yIHRoZSB0b3Btb3N0CisJCQkJY29tcG9uZW50ID0gZ2V0UGFyZW50KGNvbXBvbmVudCk7IC8vIGN1cnJlbnQgaXMgbm90IG9uIHRoZSBkZXNrdG9wCisJCQkJaWYgKGNvbXBvbmVudCA9PSBudWxsKSB7IHJldHVybiBmYWxzZTsgfQorCQkJCWlmICgoY29tcG9uZW50ID09IGNvbnRlbnQpIHx8ICgoZ2V0Q2xhc3MoY29tcG9uZW50KSA9PSAiZGlhbG9nIikgJiYKKwkJCQkJCSghb3V0Z28gIHx8IGdldEJvb2xlYW4oY29tcG9uZW50LCAibW9kYWwiLCBmYWxzZSkpKSkgeworCQkJCQljb25zdW1lZCA9IGZhbHNlOyAvLyBmaW5kIG5leHQgZm9jdXNhYmxlIGJ1dCBkb2VzIG5vdCBjb25zdW1lIGV2ZW50CisJCQkJCW5leHQgPSBjb21wb25lbnQ7IC8vIHRoZSB0b3Btb3N0IChkZXNrdG9wIG9yIG1vZGFsIGRpYWxvZykKKwkJCQl9CisJCQkJZWxzZSB7CisJCQkJCW5leHQgPSBnZXQoY29tcG9uZW50LCAiOm5leHQiKTsKKwkJCQl9CisJCQl9CisJCQlpZiAobmV4dCA9PSBjdXJyZW50KSB7IHJldHVybiBmYWxzZTsgfSAvLyBvbmUgZnVjdXNhYmxlLCBubyBsb29wCisJCQlpZiAoY2hlY2tGb2N1c2FibGUobmV4dCwgZmFsc2UpKSB7CisJCQkJc2V0Rm9jdXMobmV4dCk7CisJCQkJcmV0dXJuIGNvbnN1bWVkOworCQkJfQorCQl9CisJfQorCisJLy9qYXZhPgorCS8qKgorCSAqIEByZXR1cm4gcHJldmlvdXMgZm9jdXNhYmxlIGNvbXBvbmVudCBpcyBmb3VuZCAobm90IHRoZSBsYXN0IG9mIHRoZSBkZXNrdG9wL2RpYWxvZykKKwkgKi8KKwlwcml2YXRlIGJvb2xlYW4gc2V0UHJldmlvdXNGb2N1c2FibGUoT2JqZWN0IGNvbXBvbmVudCwgYm9vbGVhbiBvdXRnbykgeworCQlmb3IgKGludCBpID0gMDsgaSA8IDI7IGkrKykgeyAvLyAwIGlzIGJhY2t3YXJkIGRpcmVjdGlvbgorCQkJT2JqZWN0IHByZXZpb3VzID0gZ2V0UHJldmlvdXNGb2N1c2FibGUoY29tcG9uZW50LCBudWxsLCB0cnVlLCBmYWxzZSwgKGkgPT0gMCksIG91dGdvKTsKKwkJCWlmIChwcmV2aW91cyAhPSBudWxsKSB7CisJCQkJc2V0Rm9jdXMocHJldmlvdXMpOworCQkJCXJldHVybiAoaSA9PSAwKTsKKwkJCX0KKwkJfQorCQlyZXR1cm4gZmFsc2U7CisJfQorCQorCS8qKgorCSAqIEZvciB0aGUgc3RhcnRpbmcgY29tcG9uZW50IHNlYXJjaCBpdHMgcGFyZW50IGRpcmVjdGlvbiBmb3IgYSBmb2N1c2FibGUgY29tcG9uZW50LCBhbmQgdGhlbgorCSAqIGl0cyBuZXh0IGNvbXBvbmVudCAoaWYgbm90IHNlYXJjaCBiYWNrd2FyZCBmcm9tIHRoZSBjb21wb25lbnQpLjxicj4KKwkgKiBGb3IgaXRzIHBhcmVudCBjb21wb25lbnRzIGNoZWNrIGl0cyBmaXJzdCBjb21wb25lbnQsIHRoZSBjdXJyZW50IG9uZSwgYW5kIGl0cyBwYXJlbnQgZGlyZWN0aW9uCisJICogKGJhY2t3YXJkIHNlYXJjaCksIG9yIGl0cyBwYXJlbnQsIHRoZW4gbmV4dCBjb21wb25lbnQgKGZvcndhcmQgZGlyZWN0aW9uKS48YnI+CisJICogRm9yIHRoZSByZXN0IGNvbXBvbmVudHMgY2hlY2sgdGhlIG5leHQsIHRoZW4gdGhlIGZpcnN0IHN1YmNvbXBvbmVudCBkaXJlY3Rpb24sIGFuZCBmaW5hbGx5CisJICogY2hlY2sgd2hldGhlciB0aGUgY29tcG9uZW50IGlzIGZvY3VzYWJsZS4KKwkgKi8KKwlwcml2YXRlIE9iamVjdCBnZXRQcmV2aW91c0ZvY3VzYWJsZShPYmplY3QgY29tcG9uZW50LAorCQkJT2JqZWN0IGJsb2NrLCBib29sZWFuIHN0YXJ0LCBib29sZWFuIHVwd2FyZCwgYm9vbGVhbiBiYWNrd2FyZCwgYm9vbGVhbiBvdXRnbykgeworCQlPYmplY3QgcHJldmlvdXMgPSBudWxsOworCQlpZiAoKGNvbXBvbmVudCAhPSBudWxsKSAmJiAoY29tcG9uZW50ICE9IGJsb2NrKSkgeworCQkJYm9vbGVhbiBnbyA9ICgoZ2V0Q2xhc3MoY29tcG9uZW50KSAhPSAiZGlhbG9nIikgfHwKKwkJCQkob3V0Z28gJiYgIWdldEJvb2xlYW4oY29tcG9uZW50LCAibW9kYWwiLCBmYWxzZSkpKTsKKwkJCWlmICghc3RhcnQgJiYgIXVwd2FyZCAmJiBnbykgeworCQkJCXByZXZpb3VzID0gZ2V0UHJldmlvdXNGb2N1c2FibGUoZ2V0KGNvbXBvbmVudCwgIjpuZXh0IiksIGJsb2NrLCBmYWxzZSwgZmFsc2UsIGJhY2t3YXJkLCBvdXRnbyk7CisJCQl9CisJCQlpZiAoKHByZXZpb3VzID09IG51bGwpICYmICgodXB3YXJkICYmIGJhY2t3YXJkKSB8fCAoIXN0YXJ0ICYmICF1cHdhcmQpKSkgeworCQkJCXByZXZpb3VzID0gZ2V0UHJldmlvdXNGb2N1c2FibGUoZ2V0KGNvbXBvbmVudCwgImNvbXBvbmVudCIpLCBibG9jaywgZmFsc2UsIGZhbHNlLCBiYWNrd2FyZCwgb3V0Z28pOworCQkJCWlmICgocHJldmlvdXMgPT0gbnVsbCkgJiYgY2hlY2tGb2N1c2FibGUoY29tcG9uZW50LCBmYWxzZSkpIHsKKwkJCQkJcHJldmlvdXMgPSBjb21wb25lbnQ7CisJCQkJfQorCQkJfQorCQkJaWYgKChwcmV2aW91cyA9PSBudWxsKSAmJiAoc3RhcnQgfHwgdXB3YXJkKSAmJiBnbykgeworCQkJCXByZXZpb3VzID0gZ2V0UHJldmlvdXNGb2N1c2FibGUoZ2V0UGFyZW50KGNvbXBvbmVudCksIGNvbXBvbmVudCwgZmFsc2UsIHRydWUsIGJhY2t3YXJkLCBvdXRnbyk7CisJCQl9CisJCQlpZiAoKHByZXZpb3VzID09IG51bGwpICYmIChzdGFydCB8fCB1cHdhcmQpICYmICFiYWNrd2FyZCAmJiBnbykgeworCQkJCXByZXZpb3VzID0gZ2V0UHJldmlvdXNGb2N1c2FibGUoZ2V0KGNvbXBvbmVudCwgIjpuZXh0IiksIGJsb2NrLCBmYWxzZSwgZmFsc2UsIGJhY2t3YXJkLCBvdXRnbyk7CisJCQl9CisJCX0KKwkJcmV0dXJuIHByZXZpb3VzOworCX0KKwkvLzxqYXZhCisJCisJLyoqCisJICoKKwkgKi8KKwlwcml2YXRlIGJvb2xlYW4gY2hlY2tGb2N1c2FibGUoT2JqZWN0IGNvbXBvbmVudCwgYm9vbGVhbiBmb3JjZWQpIHsKKwkJU3RyaW5nIGNsYXNzbmFtZSA9IGdldENsYXNzKGNvbXBvbmVudCk7CisJCS8vbWlkcCBmb3JjZWQ9dHJ1ZTsKKwkJaWYgKChjbGFzc25hbWUgPT0gImJ1dHRvbiIpIHx8IChjbGFzc25hbWUgPT0gImNoZWNrYm94IikgfHwKKwkJCQkoY2xhc3NuYW1lID09ICJjb21ib2JveCIpIHx8IChjbGFzc25hbWUgPT0gInRleHRmaWVsZCIpIHx8CisJCQkJKGNsYXNzbmFtZSA9PSAicGFzc3dvcmRmaWVsZCIpIHx8IChjbGFzc25hbWUgPT0gInRleHRhcmVhIikgfHwKKwkJCQkoY2xhc3NuYW1lID09ICJzcGluYm94IikgfHwgKGNsYXNzbmFtZSA9PSAic2xpZGVyIikgfHwKKwkJCQkoY2xhc3NuYW1lID09ICJsaXN0IikgfHwgKGNsYXNzbmFtZSA9PSAidGFibGUiKSB8fCAoY2xhc3NuYW1lID09ICJ0cmVlIikgfHwKKwkJCQkoY2xhc3NuYW1lID09ICJ0YWJiZWRwYW5lIikgfHwgKGZvcmNlZCAmJiAoY2xhc3NuYW1lID09ICJzcGxpdHBhbmUiKSkpIHsKKwkJCWZvciAoT2JqZWN0IGNvbXAgPSBjb21wb25lbnQ7IGNvbXAgIT0gbnVsbDspIHsKKwkJCQlpZiAoIWdldEJvb2xlYW4oY29tcCwgImVuYWJsZWQiLCB0cnVlKSB8fCAhZ2V0Qm9vbGVhbihjb21wLCAidmlzaWJsZSIsIHRydWUpKSB7CisJCQkJCXJldHVybiBmYWxzZTsKKwkJCQl9CisJCQkJT2JqZWN0IHBhcmVudCA9IGdldFBhcmVudChjb21wKTsKKwkJCQlpZiAoKGdldENsYXNzKHBhcmVudCkgPT0gInRhYmJlZHBhbmUiKSAmJiAoZ2V0SXRlbUltcGwocGFyZW50LAorCQkJCQkiY29tcG9uZW50IiwgZ2V0SW50ZWdlcihwYXJlbnQsICJzZWxlY3RlZCIsIDApKSAhPSBjb21wKSkgeyByZXR1cm4gZmFsc2U7IH0KKwkJCQljb21wID0gcGFyZW50OworCQkJfQorCQkJcmV0dXJuIHRydWU7CisJCX0KKwkJcmV0dXJuIGZhbHNlOworCX0KKworCS8qaWYgKGNsaXBhcmVhID09IG51bGwpIHsgYWRkKGNsaXBhcmVhID0gbmV3IFRleHRBcmVhKCkpOyB9CisJY2xpcGFyZWEuc2V0VGV4dChjb250ZW50KTsKKwljbGlwYXJlYS5zZWxlY3RBbGwoKTsKKwljbGlwYXJlYS5kaXNwYXRjaEV2ZW50KG5ldyBLZXlFdmVudCh0aGlzLCBLZXlFdmVudC5LRVlfVFlQRUQsIDBMLCBLZXlFdmVudC5DVFJMX01BU0ssIDAsIChjaGFyKSAzKSk7CisJY2xpcGFyZWEuc2VsZWN0QWxsKCk7CisKKwlpZiAoY2xpcGFyZWEgPT0gbnVsbCkgeyBhZGQoY2xpcGFyZWEgPSBuZXcgVGV4dEFyZWEoKSk7IH0KKwljbGlwYXJlYS5kaXNwYXRjaEV2ZW50KG5ldyBLZXlFdmVudCh0aGlzLCBLZXlFdmVudC5LRVlfVFlQRUQsIDBMLCBLZXlFdmVudC5DVFJMX01BU0ssIDAsIChjaGFyKSAyMikpOworCWNsaXBhcmVhLmdldFRleHQoKTsgcmV0dXJuIGNsaXBhcmVhLmdldFRleHQoKTsqLworCisJLy8gLS0tLS0gLS0tLS0gLS0tLS0gLS0tLS0gLS0tLS0gLS0tLS0gLS0tLS0gLS0tLS0gLS0tLS0gLS0tLS0gLS0tLS0gLS0tLS0KKworCS8qKgorCSAqCisJICovCisJcHVibGljIE9iamVjdCBjcmVhdGUoU3RyaW5nIGNsYXNzbmFtZSkgeworCQlmb3IgKGludCBpID0gMDsgaSA8IGR0ZC5sZW5ndGg7IGkgKz0gMykgeworCQkJaWYgKGR0ZFtpXS5lcXVhbHMoY2xhc3NuYW1lKSkgeworCQkJCXJldHVybiBjcmVhdGVJbXBsKChTdHJpbmcpIGR0ZFtpXSk7CisJCQl9CisJCX0KKwkJdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigidW5rbm93biAiICsgY2xhc3NuYW1lKTsKKwl9CisJCisJLyoqCisJICogQHJldHVybiBjbGFzc25hbWUKKwkgKi8KKwlwdWJsaWMgU3RyaW5nIGdldENsYXNzKE9iamVjdCBjb21wb25lbnQpIHsKKwkJcmV0dXJuIChTdHJpbmcpIGdldChjb21wb25lbnQsICI6Y2xhc3MiKTsKKwl9CisKKwkvKioKKwkgKgorCSAqLworCXB1YmxpYyBPYmplY3QgZ2V0RGVza3RvcCgpIHsKKwkJcmV0dXJuIGNvbnRlbnQ7CisJfQorCisJLyoqCisJICoKKwkgKi8KKwlwcml2YXRlIE9iamVjdCBjcmVhdGVJbXBsKFN0cmluZyBjbGFzc25hbWUpIHsKKwkJcmV0dXJuIG5ldyBPYmplY3RbXSB7ICI6Y2xhc3MiLCBjbGFzc25hbWUsIG51bGwgfTsKKwl9CisJCisJLyoqCisJICoKKwkgKi8KKwlwcml2YXRlIGJvb2xlYW4gc2V0KE9iamVjdCBjb21wb25lbnQsIE9iamVjdCBrZXksIE9iamVjdCB2YWx1ZSkgeworCQlPYmplY3RbXSBwcmV2aW91cyA9IChPYmplY3RbXSkgY29tcG9uZW50OworCQlmb3IgKE9iamVjdFtdIGVudHJ5ID0gcHJldmlvdXM7IGVudHJ5ICE9IG51bGw7CisJCQkJZW50cnkgPSAoT2JqZWN0W10pIGVudHJ5WzJdKSB7CisJCQlpZiAoZW50cnlbMF0gPT0ga2V5KSB7CisJCQkJaWYgKHZhbHVlICE9IG51bGwpIHsgLy8gc2V0IHRoZSByb3cncyB2YWx1ZQorCQkJCQlPYmplY3Qgb2xkdmFsdWUgPSBlbnRyeVsxXTsKKwkJCQkJZW50cnlbMV0gPSB2YWx1ZTsKKwkJCQkJcmV0dXJuICF2YWx1ZS5lcXVhbHMob2xkdmFsdWUpOworCQkJCX0KKwkJCQllbHNlIHsgLy8gcmVtb3ZlIHRoZSByb3cKKwkJCQkJcHJldmlvdXNbMl0gPSBlbnRyeVsyXTsKKwkJCQkJZW50cnlbMl0gPSBudWxsOworCQkJCQlyZXR1cm4gdHJ1ZTsKKwkJCQl9CisJCQl9CisJCQlwcmV2aW91cyA9IGVudHJ5OworCQl9CisJCWlmICh2YWx1ZSAhPSBudWxsKSB7IC8vIGFwcGVuZCBhIG5ldyByb3cKKwkJCXByZXZpb3VzWzJdID0gbmV3IE9iamVjdFtdIHsga2V5LCB2YWx1ZSwgbnVsbCB9OworCQkJcmV0dXJuIHRydWU7CisJCX0KKwkJcmV0dXJuIGZhbHNlOworCX0KKworCS8qKgorCSAqCisJICovCisJcHJpdmF0ZSBPYmplY3QgZ2V0KE9iamVjdCBjb21wb25lbnQsIE9iamVjdCBrZXkpIHsKKwkJZm9yIChPYmplY3RbXSBlbnRyeSA9IChPYmplY3RbXSkgY29tcG9uZW50OyBlbnRyeSAhPSBudWxsOworCQkJCWVudHJ5ID0gKE9iamVjdFtdKSBlbnRyeVsyXSkgeworCQkJaWYgKGVudHJ5WzBdID09IGtleSkgeworCQkJCXJldHVybiBlbnRyeVsxXTsKKwkJCX0KKwkJfQorCQlyZXR1cm4gbnVsbDsKKwl9CisKKwkvKioKKwkgKgorCSAqLworCXB1YmxpYyBpbnQgZ2V0Q291bnQoT2JqZWN0IGNvbXBvbmVudCkgeworCQlyZXR1cm4gZ2V0Q291bnQoY29tcG9uZW50LCBudWxsKTsKKwl9CisKKwkvKioKKwkgKgorCSAqLworCXB1YmxpYyBpbnQgZ2V0Q291bnQoT2JqZWN0IGNvbXBvbmVudCwgU3RyaW5nIGtleSkgeworCQlyZXR1cm4gZ2V0SXRlbUNvdW50SW1wbChjb21wb25lbnQsIGdldENvbXBvbmVudE5hbWUoY29tcG9uZW50LCBrZXkpKTsKKwl9CisJCisJLyoqCisJICoKKwkgKi8KKwlwdWJsaWMgT2JqZWN0IGdldFBhcmVudChPYmplY3QgY29tcG9uZW50KSB7CisJCXJldHVybiBnZXQoY29tcG9uZW50LCAiOnBhcmVudCIpOworCX0KKworCS8qKgorCSAqIEByZXR1cm4gdGhlIGZpcnN0IHNlbGVjdGVkIGluZGV4IG9yIC0xCisJICovCisJcHVibGljIGludCBnZXRTZWxlY3RlZEluZGV4KE9iamVjdCBjb21wb25lbnQpIHsKKwkJaW50IGkgPSAwOworCQlmb3IgKE9iamVjdCBpdGVtID0gZ2V0KGNvbXBvbmVudCwgZ2V0Q29tcG9uZW50TmFtZShjb21wb25lbnQsIG51bGwpKTsKKwkJCQlpdGVtICE9IG51bGw7IGl0ZW0gPSBnZXQoaXRlbSwgIjpuZXh0IikpIHsKKwkJCWlmIChnZXRCb29sZWFuKGl0ZW0sICJzZWxlY3RlZCIsIGZhbHNlKSkgeyByZXR1cm4gaTsgfQorCQkJaSsrOworCQl9CisJCXJldHVybiAtMTsKKwl9CisKKwkvKioKKwkgKgorCSAqLworCXB1YmxpYyB2b2lkIHJlbW92ZUFsbChPYmplY3QgY29tcG9uZW50KSB7CisJCXJlbW92ZUFsbChjb21wb25lbnQsIG51bGwpOworCX0KKworCS8qKgorCSAqCisJICovCisJcHVibGljIHZvaWQgcmVtb3ZlQWxsKE9iamVjdCBjb21wb25lbnQsIFN0cmluZyBrZXkpIHsKKwkJU3RyaW5nIGxpc3QgPSBnZXRDb21wb25lbnROYW1lKGNvbXBvbmVudCwga2V5KTsKKwkJaWYgKGdldChjb21wb25lbnQsIGxpc3QpICE9IG51bGwpIHsKKwkJCXNldChjb21wb25lbnQsIGxpc3QsIG51bGwpOworCQkJdXBkYXRlKGNvbXBvbmVudCwgInZhbGlkYXRlIik7CisJCX0KKwl9CisKKwkvKioKKwkgKgorCSAqLworCXByaXZhdGUgaW50IGdldEl0ZW1Db3VudEltcGwoT2JqZWN0IGNvbXBvbmVudCwgT2JqZWN0IGtleSkgeworCQlpbnQgaSA9IDA7CisJCWZvciAoY29tcG9uZW50ID0gZ2V0KGNvbXBvbmVudCwga2V5KTsgY29tcG9uZW50ICE9IG51bGw7CisJCQkJY29tcG9uZW50ID0gZ2V0KGNvbXBvbmVudCwgIjpuZXh0IikpIHsKKwkJCWkrKzsKKwkJfQorCQlyZXR1cm4gaTsKKwl9CisKKwkvKioKKwkgKgorCSAqLworCXB1YmxpYyBPYmplY3QgZ2V0SXRlbShPYmplY3QgY29tcG9uZW50LCBpbnQgaW5kZXgpIHsKKwkJcmV0dXJuIGdldEl0ZW0oY29tcG9uZW50LCBudWxsLCBpbmRleCk7CisJfQorCQorCS8qKgorCSAqCisJICovCisJcHVibGljIE9iamVjdFtdIGdldEl0ZW1zKE9iamVjdCBjb21wb25lbnQpIHsKKwkJcmV0dXJuIGdldEl0ZW1zKGNvbXBvbmVudCwgbnVsbCk7CisJfQorCisJLyoqCisJICoKKwkgKi8KKwlwdWJsaWMgT2JqZWN0IGdldEl0ZW0oT2JqZWN0IGNvbXBvbmVudCwgU3RyaW5nIGtleSwgaW50IGluZGV4KSB7CisJCXJldHVybiBnZXRJdGVtSW1wbChjb21wb25lbnQsIGdldENvbXBvbmVudE5hbWUoY29tcG9uZW50LCBrZXkpLCBpbmRleCk7CisJfQorCisJLyoqCisJICoKKwkgKi8KKwlwdWJsaWMgT2JqZWN0W10gZ2V0SXRlbXMoT2JqZWN0IGNvbXBvbmVudCwgU3RyaW5nIGtleSkgeworCQlrZXkgPSBnZXRDb21wb25lbnROYW1lKGNvbXBvbmVudCwga2V5KTsKKwkJT2JqZWN0W10gaXRlbXMgPSBuZXcgT2JqZWN0W2dldEl0ZW1Db3VudEltcGwoY29tcG9uZW50LCBrZXkpXTsKKwkJY29tcG9uZW50ID0gZ2V0KGNvbXBvbmVudCwga2V5KTsKKwkJZm9yIChpbnQgaSA9IDA7IGkgPCBpdGVtcy5sZW5ndGg7IGkrKykgeworCQkJaXRlbXNbaV0gPSBjb21wb25lbnQ7CisJCQljb21wb25lbnQgPSBnZXQoY29tcG9uZW50LCAiOm5leHQiKTsKKwkJfQorCQlyZXR1cm4gaXRlbXM7CisJfQorCisJLyoqCisJICoKKwkgKi8KKwlwcml2YXRlIE9iamVjdCBnZXRJdGVtSW1wbChPYmplY3QgY29tcG9uZW50LCBPYmplY3Qga2V5LCBpbnQgaW5kZXgpIHsKKwkJaW50IGkgPSAwOworCQlmb3IgKE9iamVjdCBpdGVtID0gZ2V0KGNvbXBvbmVudCwga2V5KTsKKwkJCQlpdGVtICE9IG51bGw7IGl0ZW0gPSBnZXQoaXRlbSwgIjpuZXh0IikpIHsKKwkJCWlmIChpID09IGluZGV4KSB7IHJldHVybiBpdGVtOyB9CisJCQlpKys7CisJCX0KKwkJcmV0dXJuIG51bGw7CisJfQorCisJLyoqCisJICoKKwkgKi8KKwlwcml2YXRlIGludCBnZXRJbmRleChPYmplY3QgY29tcG9uZW50LCBPYmplY3Qga2V5LCBPYmplY3QgdmFsdWUpIHsKKwkJaW50IGluZGV4ID0gMDsKKwkJZm9yIChPYmplY3QgaXRlbSA9IGdldChjb21wb25lbnQsIGtleSk7CisJCQkJaXRlbSAhPSBudWxsOyBpdGVtID0gZ2V0KGl0ZW0sICI6bmV4dCIpKSB7CisJCQlpZiAodmFsdWUgPT0gaXRlbSkgeyByZXR1cm4gaW5kZXg7IH0KKwkJCWluZGV4Kys7CisJCX0KKwkJcmV0dXJuIC0xOworCX0KKworCS8qKgorCSAqCisJICovCisJcHVibGljIHZvaWQgYWRkKE9iamVjdCBjb21wb25lbnQpIHsKKwkJYWRkKGNvbnRlbnQsIGNvbXBvbmVudCwgMCk7CisJfQorCisJLyoqCisJICoKKwkgKi8KKwlwdWJsaWMgdm9pZCBhZGQoT2JqZWN0IHBhcmVudCwgT2JqZWN0IGNvbXBvbmVudCkgeworCQlhZGQocGFyZW50LCBjb21wb25lbnQsIC0xKTsKKwl9CisKKwkvKioKKwkgKgorCSAqLworCXB1YmxpYyB2b2lkIGFkZChPYmplY3QgcGFyZW50LCBPYmplY3QgY29tcG9uZW50LCBpbnQgaW5kZXgpIHsKKwkJYWRkSW1wbChwYXJlbnQsIGNvbXBvbmVudCwgaW5kZXgpOworCQl1cGRhdGUoY29tcG9uZW50LCAidmFsaWRhdGUiKTsKKwkJaWYgKHBhcmVudCA9PSBjb250ZW50KSB7CisJCQlzZXROZXh0Rm9jdXNhYmxlKGNvbXBvbmVudCwgZmFsc2UpOworCQl9CisJfQorCisJLyoqCisJICoKKwkgKi8KKwlwcml2YXRlIHZvaWQgYWRkSXRlbShPYmplY3QgcGFyZW50LCBPYmplY3Qga2V5LCBPYmplY3QgY29tcG9uZW50KSB7CisJCWluc2VydEl0ZW0ocGFyZW50LCBrZXksIGNvbXBvbmVudCwgLTEpOworCX0KKworCS8qKgorCSAqCisJICovCisJcHJpdmF0ZSB2b2lkIGluc2VydEl0ZW0oT2JqZWN0IHBhcmVudCwKKwkJCU9iamVjdCBrZXksIE9iamVjdCBjb21wb25lbnQsIGludCBpbmRleCkgeworCQlPYmplY3QgdGFyZ2V0ID0gZ2V0KHBhcmVudCwga2V5KTsKKwkJaWYgKGluZGV4ID09IC0xKSB7CisJCQl3aGlsZSAodGFyZ2V0ICE9IG51bGwpIHsKKwkJCQl0YXJnZXQgPSBnZXQocGFyZW50ID0gdGFyZ2V0LCBrZXkgPSAiOm5leHQiKTsKKwkJCX0KKwkJfQorCQllbHNlIHsKKwkJCWZvciAoaW50IGkgPSAwOyBpIDwgaW5kZXg7IGkrKykgeworCQkJCXRhcmdldCA9IGdldChwYXJlbnQgPSB0YXJnZXQsIGtleSA9ICI6bmV4dCIpOworCQkJfQorCQkJc2V0KGNvbXBvbmVudCwgIjpuZXh0IiwgZ2V0KHBhcmVudCwga2V5KSk7CisJCX0KKwkJc2V0KHBhcmVudCwga2V5LCBjb21wb25lbnQpOworCX0KKworCS8qKgorCSAqCisJICovCisJcHVibGljIHZvaWQgcmVtb3ZlKE9iamVjdCBjb21wb25lbnQpIHsKKwkJT2JqZWN0IHBhcmVudCA9IGdldFBhcmVudChjb21wb25lbnQpOworCQlTdHJpbmcgcGFyZW50Y2xhc3MgPSBnZXRDbGFzcyhwYXJlbnQpOworCQlTdHJpbmcgY2xhc3NuYW1lID0gZ2V0Q2xhc3MoY29tcG9uZW50KTsKKwkJU3RyaW5nIGxpc3RrZXkgPSAoImNvbWJvYm94IiA9PSBwYXJlbnRjbGFzcykgPyAiY2hvaWNlIiA6CisJCQkoKCJ0YWJiZWRwYW5lIiA9PSBwYXJlbnRjbGFzcykgJiYgKCJ0YWIiID09IGNsYXNzbmFtZSkpID8gInRhYiIgOgorCQkJKCJsaXN0IiA9PSBwYXJlbnRjbGFzcykgPyAiaXRlbSIgOgorCQkJKCgidGFibGUiID09IHBhcmVudGNsYXNzKSAmJiAoImNvbHVtbiIgPT0gY2xhc3NuYW1lKSkgPyAiY29sdW1uIiA6CisJCQkoKCJ0YWJsZSIgPT0gcGFyZW50Y2xhc3MpICYmICgicm93IiA9PSBjbGFzc25hbWUpKSA/ICJyb3ciIDoKKwkJCSgicm93IiA9PSBwYXJlbnRjbGFzcykgPyAiY2VsbCIgOgorCQkJKCgidHJlZSIgPT0gcGFyZW50Y2xhc3MpIHx8ICgibm9kZSIgPT0gcGFyZW50Y2xhc3MpKSA/ICJub2RlIiA6CisJCQkoKCJtZW51YmFyIiA9PSBwYXJlbnRjbGFzcykgfHwgKCJtZW51IiA9PSBwYXJlbnRjbGFzcykpID8gIm1lbnUiIDoKKwkJCSgoInBhbmVsIiA9PSBwYXJlbnRjbGFzcykgfHwgKCJkZXNrdG9wIiA9PSBwYXJlbnRjbGFzcykgfHwKKwkJCQkoInNwbGl0cGFuZSIgPT0gcGFyZW50Y2xhc3MpIHx8ICgiZGlhbG9nIiA9PSBwYXJlbnRjbGFzcykgfHwKKwkJCQkoInRhYmJlZHBhbmUiID09IHBhcmVudGNsYXNzKSkgPyAiY29tcG9uZW50IiA6IG51bGw7CisJCWlmIChsaXN0a2V5ID09IG51bGwpIHsgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigidW5rbm93biAiICsgY2xhc3NuYW1lKTsgfQorCQl1cGRhdGUoY29tcG9uZW50LCAidmFsaWRhdGUiKTsKKwkJcmVtb3ZlSXRlbUltcGwocGFyZW50LCBsaXN0a2V5LCBjb21wb25lbnQpOworCQkvLyByZXVlc3QgZm9jdXMgZm9yIGl0cyBwYXJlbnQgaWYgdGhlIGNvbXBvbmVudCAob3Igc3ViY29tcG9uZW50KSBpcyBjdXJyZW50bHkgZm9jdXNlZAorCQlmb3IgKE9iamVjdCBjb21wID0gZm9jdXNvd25lcjsgY29tcCAhPSBudWxsOyBjb21wID0gZ2V0UGFyZW50KGNvbXApKSB7CisJCQlpZiAoY29tcCA9PSBjb21wb25lbnQpIHsKKwkJCQlzZXROZXh0Rm9jdXNhYmxlKHBhcmVudCwgZmFsc2UpOyBicmVhazsKKwkJCX0KKwkJfQorCX0KKworCS8qKgorCSAqCisJICovCisJcHJpdmF0ZSB2b2lkIHJlbW92ZUl0ZW1JbXBsKE9iamVjdCBwYXJlbnQsIE9iamVjdCBrZXksIE9iamVjdCBjb21wb25lbnQpIHsKKwkJT2JqZWN0IHRhcmdldCA9IGdldChwYXJlbnQsIGtleSk7CisJCXdoaWxlICh0YXJnZXQgIT0gY29tcG9uZW50KSB7CisJCQl0YXJnZXQgPSBnZXQocGFyZW50ID0gdGFyZ2V0LCBrZXkgPSAiOm5leHQiKTsgLy8gKHRhcmdldCAhPSBudWxsKQorCQl9CisJCXNldChwYXJlbnQsIGtleSwgZ2V0KHRhcmdldCwgIjpuZXh0IikpOworCQlzZXQodGFyZ2V0LCAiOm5leHQiLCBudWxsKTsKKwkJc2V0KHRhcmdldCwgIjpwYXJlbnQiLCBudWxsKTsKKwl9CisKKwkvKgorCXByaXZhdGUgdm9pZCByZW1vdmVJdGVtSW1wbChPYmplY3QgcGFyZW50LCBTdHJpbmcga2V5LCBpbnQgaW5kZXgpIHsKKwkJT2JqZWN0IHRhcmdldCA9IGdldChwYXJlbnQsIGtleSk7CisJCWZvciAoaW50IGkgPSAwOyBpIDwgaW5kZXg7IGkrKykgeworCQkJdGFyZ2V0ID0gZ2V0KHBhcmVudCA9IHRhcmdldCwga2V5ID0gIjpuZXh0Iik7CisJCX0KKwkJc2V0KHBhcmVudCwga2V5LCBnZXQodGFyZ2V0LCAiOm5leHQiKSk7CisJCXNldCh0YXJnZXQsICI6bmV4dCIsIG51bGwpOworCX0qLworCisJLyoqCisJICoKKwkgKi8KKwlwcml2YXRlIFN0cmluZyBnZXRDb21wb25lbnROYW1lKE9iamVjdCBwYXJlbnQsIE9iamVjdCBjbGFzc25hbWUpIHsKKwkJU3RyaW5nIHBhcmVudGNsYXNzID0gZ2V0Q2xhc3MocGFyZW50KTsKKwkJU3RyaW5nIGNvbXBuYW1lID0gKCJjb21ib2JveCIgPT0gcGFyZW50Y2xhc3MpID8gImNob2ljZSIgOgorCQkJKCJsaXN0IiA9PSBwYXJlbnRjbGFzcykgPyAiaXRlbSIgOgorCQkJKCJyb3ciID09IHBhcmVudGNsYXNzKSA/ICJjZWxsIiA6CisJCQkoKCJ0cmVlIiA9PSBwYXJlbnRjbGFzcykgfHwgKCJub2RlIiA9PSBwYXJlbnRjbGFzcykpID8gIm5vZGUiIDoKKwkJCSgoIm1lbnViYXIiID09IHBhcmVudGNsYXNzKSB8fCAoIm1lbnUiID09IHBhcmVudGNsYXNzKSkgPyAibWVudSIgOgorCQkJKCgicGFuZWwiID09IHBhcmVudGNsYXNzKSB8fCAoImRlc2t0b3AiID09IHBhcmVudGNsYXNzKSB8fAorCQkJCSgic3BsaXRwYW5lIiA9PSBwYXJlbnRjbGFzcykgfHwgKCJkaWFsb2ciID09IHBhcmVudGNsYXNzKSkgPworCQkJCSJjb21wb25lbnQiIDogbnVsbDsKKwkJaWYgKChjb21wbmFtZSAhPSBudWxsKSAmJiAoKGNsYXNzbmFtZSA9PSBudWxsKSB8fAorCQkJCWNvbXBuYW1lLmVxdWFscyhjbGFzc25hbWUpKSkgeyByZXR1cm4gY29tcG5hbWU7IH0KKwkJaWYgKCJ0YWJiZWRwYW5lIiA9PSBwYXJlbnRjbGFzcykgeworCQkJaWYgKCJ0YWIiLmVxdWFscyhjbGFzc25hbWUpKSB7IHJldHVybiAidGFiIjsgfQorCQkJaWYgKChjbGFzc25hbWUgPT0gbnVsbCkgfHwgImNvbXBvbmVudCIuZXF1YWxzKGNsYXNzbmFtZSkpIHsgcmV0dXJuICJjb21wb25lbnQiOyB9CisJCX0KKwkJZWxzZSBpZiAoInRhYmxlIiA9PSBwYXJlbnRjbGFzcykgeworCQkJaWYgKCJjb2x1bW4iLmVxdWFscyhjbGFzc25hbWUpKSB7IHJldHVybiAiY29sdW1uIjsgfQorCQkJaWYgKChjbGFzc25hbWUgPT0gbnVsbCkgfHwgInJvdyIuZXF1YWxzKGNsYXNzbmFtZSkpIHsgcmV0dXJuICJyb3ciOyB9CisJCX0KKwkJdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigidW5rbm93biAiICsgY2xhc3NuYW1lKTsKKwl9CisKKwkvKioKKwkgKgorCSAqLworCXB1YmxpYyBPYmplY3QgZmluZChTdHJpbmcgbmFtZSkgeworCQlyZXR1cm4gZmluZChjb250ZW50LCBuYW1lKTsKKwl9CisKKwkvKioKKwkgKgorCSAqLworCXB1YmxpYyBPYmplY3QgZmluZChPYmplY3QgY29tcG9uZW50LCBTdHJpbmcgbmFtZSkgeworCQlpZiAobmFtZS5lcXVhbHMoZ2V0KGNvbXBvbmVudCwgIm5hbWUiKSkpIHsgcmV0dXJuIGNvbXBvbmVudDsgfQorCQlTdHJpbmcgY2xhc3NuYW1lID0gZ2V0Q2xhc3MoY29tcG9uZW50KTsKKwkJU3RyaW5nIGNoaWxkbmFtZSA9IG51bGw7IFN0cmluZyBjaGlsZG5hbWUyID0gbnVsbDsKKwkJaWYgKCgicGFuZWwiID09IGNsYXNzbmFtZSkgfHwgKCJkZXNrdG9wIiA9PSBjbGFzc25hbWUpIHx8CisJCQkJKCJzcGxpdHBhbmUiID09IGNsYXNzbmFtZSkgfHwgKCJkaWFsb2ciID09IGNsYXNzbmFtZSkpIHsgY2hpbGRuYW1lID0gImNvbXBvbmVudCI7IH0KKwkJZWxzZSBpZiAoImNvbWJvYm94IiA9PSBjbGFzc25hbWUpIHsgY2hpbGRuYW1lID0gImNob2ljZSI7IH0KKwkJZWxzZSBpZiAoInRhYmJlZHBhbmUiID09IGNsYXNzbmFtZSkgeyBjaGlsZG5hbWUgPSAidGFiIjsgY2hpbGRuYW1lMiA9ICJjb21wb25lbnQiOyB9CisJCWVsc2UgaWYgKCJsaXN0IiA9PSBjbGFzc25hbWUpIHsgY2hpbGRuYW1lID0gIml0ZW0iOyB9CisJCWVsc2UgaWYgKCJ0YWJsZSIgPT0gY2xhc3NuYW1lKSB7IGNoaWxkbmFtZSA9ICJjb2x1bW4iOyBjaGlsZG5hbWUyID0gInJvdyI7IH0KKwkJZWxzZSBpZiAoInJvdyIgPT0gY2xhc3NuYW1lKSB7IGNoaWxkbmFtZSA9ICJjZWxsIjsgfQorCQllbHNlIGlmICgoInRyZWUiID09IGNsYXNzbmFtZSkgfHwgKCJub2RlIiA9PSBjbGFzc25hbWUpKSB7IGNoaWxkbmFtZSA9ICJub2RlIjsgfQorCQllbHNlIGlmICgoIm1lbnViYXIiID09IGNsYXNzbmFtZSkgfHwgKCJtZW51IiA9PSBjbGFzc25hbWUpKSB7IGNoaWxkbmFtZSA9ICJtZW51IjsgfQorCQl3aGlsZSAoY2hpbGRuYW1lICE9IG51bGwpIHsKKwkJCWZvciAoT2JqZWN0IGNvbXAgPSBnZXQoY29tcG9uZW50LCBjaGlsZG5hbWUpOworCQkJCQljb21wICE9IG51bGw7IGNvbXAgPSBnZXQoY29tcCwgIjpuZXh0IikpIHsKKwkJCQlPYmplY3QgZm91bmQgPSBmaW5kKGNvbXAsIG5hbWUpOworCQkJCWlmIChmb3VuZCAhPSBudWxsKSB7IHJldHVybiBmb3VuZDsgfQorCQkJfQorCQkJY2hpbGRuYW1lID0gY2hpbGRuYW1lMjsgY2hpbGRuYW1lMiA9IG51bGw7CisJCX0KKwkJcmV0dXJuIG51bGw7CisJfQorCisJLy8gLS0tLS0gLS0tLS0gLS0tLS0gLS0tLS0gLS0tLS0gLS0tLS0gLS0tLS0gLS0tLS0gLS0tLS0gLS0tLS0gLS0tLS0gLS0tLS0KKworCS8qcHVibGljIFN0cmluZyB0b1hNTChPYmplY3QgY29tcG9uZW50KSB7CisJCVN0cmluZ0J1ZmZlciB4bWwgPSBuZXcgU3RyaW5nQnVmZmVyKCk7CisJCU9iamVjdFtdIGVudHJ5ID0gKE9iamVjdFtdKSBjb21wb25lbnQ7CisJCVN0cmluZyBjbGFzc25hbWUgPSAoU3RyaW5nKSBlbnRyeVsxXTsKKwkJd2hpbGUgKChlbnRyeSA9IChPYmplY3RbXSkgZW50cnlbMl0pICE9IG51bGwpIHsKKwkJCXRyeSB7CisJCQkJT2JqZWN0W10gZGVmaW5pdGlvbiA9IGdldERlZmluaXRpb24oY29tcG9uZW50LCAoU3RyaW5nKSBlbnRyeVswXSwgbnVsbCk7CisJCQkJaWYgKGRlZmluaXRpb24gIT0gbnVsbCkgeworCQkJCQl4bWwuYXBwZW5kKCIgIiArIGVudHJ5WzBdICsgIj1cIiIgKyBlbnRyeVsxXSArICJcIiIpOworCQkJCX0KKwkJCX0gY2F0Y2ggKElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiBleGMpIHt9CisJCX0KKwkJcmV0dXJuIHhtbC50b1N0cmluZygpOworCX0qLwkKKworCS8qKgorCSAqCisJICovCisJcHVibGljIE9iamVjdCBwYXJzZShTdHJpbmcgcGF0aCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisJCUlucHV0U3RyZWFtIGlucHV0c3RyZWFtID0gbnVsbDsKKwkJdHJ5IHsgLy9qYXZhCisJCQkvL21pZHAgaW5wdXRzdHJlYW0gPSBnZXRDbGFzcygpLmdldFJlc291cmNlQXNTdHJlYW0ocGF0aCk7CisJCQlpbnB1dHN0cmVhbSA9IGdldENsYXNzKCkuZ2V0UmVzb3VyY2VBc1N0cmVhbShwYXRoKTsgLy9qYXZhCisJCQkvL1N5c3RlbS5vdXQucHJpbnRsbigiPiAiICsgcGF0aCArICIgIiArIGlucHV0c3RyZWFtKTsKKwkJfSBjYXRjaCAoVGhyb3dhYmxlIGUpIHt9IC8vamF2YQorCQkvL2lmIChpbnB1dHN0cmVhbSA9PSBudWxsKSB7IC8vIGFwcGxldCBjb2RlCisJCS8vCWlucHV0c3RyZWFtID0gbmV3IFVSTChnZXRDb2RlQmFzZSgpLCBwYXRoKS5vcGVuU3RyZWFtKCk7CisJCS8vfQorCQlyZXR1cm4gcGFyc2UoaW5wdXRzdHJlYW0pOyAvLywgT2JqZWN0IGhhbmRsZXIKKwl9CisKKwkvKioKKwkgKgorCSAqLworCXB1YmxpYyBPYmplY3QgcGFyc2UoSW5wdXRTdHJlYW0gaW5wdXRzdHJlYW0pIHRocm93cyBFeGNlcHRpb24geworCQlyZXR1cm4gcGFyc2UoaW5wdXRzdHJlYW0sIHRydWUpOworCX0KKworCS8qKgorCSAqCisJICovCisJcHJvdGVjdGVkIHZvaWQgcGFyc2VYTUwoSW5wdXRTdHJlYW0gaW5wdXRzdHJlYW0pIHRocm93cyBFeGNlcHRpb24geworCQlwYXJzZShpbnB1dHN0cmVhbSwgZmFsc2UpOworCX0KKworCS8qKgorCSAqCisJICovCisJcHJvdGVjdGVkIHZvaWQgc3RhcnRFbGVtZW50KFN0cmluZyBuYW1lLCBIYXNodGFibGUgYXR0cmlidXRlbGlzdCkge30KKworCS8qKgorCSAqCisJICovCisJcHJvdGVjdGVkIHZvaWQgY2hhcmFjdGVycyhTdHJpbmcgdGV4dCkge30KKworCS8qKgorCSAqCisJICovCisJcHJvdGVjdGVkIHZvaWQgZW5kRWxlbWVudCgpIHt9CisKKwkvKioKKwkgKgorCSAqLworCXByaXZhdGUgT2JqZWN0IHBhcnNlKElucHV0U3RyZWFtIGlucHV0c3RyZWFtLCBib29sZWFuIHZhbGlkYXRlKSB0aHJvd3MgRXhjZXB0aW9uIHsKKwkJQnVmZmVyZWRSZWFkZXIgcmVhZGVyID0gbmV3IEJ1ZmZlcmVkUmVhZGVyKG5ldyBJbnB1dFN0cmVhbVJlYWRlcihpbnB1dHN0cmVhbSkpOyAvL2phdmEKKwkJLy9taWRwIElucHV0U3RyZWFtUmVhZGVyIHJlYWRlciA9IG5ldyBJbnB1dFN0cmVhbVJlYWRlcihpbnB1dHN0cmVhbSk7CisJCU9iamVjdFtdIHBhcmVudGxpc3QgPSBudWxsOworCQlPYmplY3QgY3VycmVudCA9IG51bGw7CisJCUhhc2h0YWJsZSBhdHRyaWJ1dGVsaXN0ID0gbnVsbDsKKwkJU3RyaW5nQnVmZmVyIHRleHQgPSBuZXcgU3RyaW5nQnVmZmVyKCk7CisJCWZvciAoaW50IGMgPSByZWFkZXIucmVhZCgpOyBjICE9IC0xOykgeworCQkJaWYgKGMgPT0gJzwnKSB7CisJCQkJaWYgKChjID0gcmVhZGVyLnJlYWQoKSkgPT0gJy8nKSB7IC8vZW5kdGFnCisJCQkJCWlmICh0ZXh0Lmxlbmd0aCgpID4gMCkgeworCQkJCQkJaWYgKHRleHQuY2hhckF0KHRleHQubGVuZ3RoKCkgLSAxKSA9PSAnICcpIHsKKwkJCQkJCQl0ZXh0LnNldExlbmd0aCh0ZXh0Lmxlbmd0aCgpIC0gMSk7CisJCQkJCQl9CisJCQkJCQlpZiAoIXZhbGlkYXRlKSB7CisJCQkJCQkJY2hhcmFjdGVycyh0ZXh0LnRvU3RyaW5nKCkpOworCQkJCQkJfS8vIGVsc2UgeworCQkJCQkJCS8vYWRkQ29udGVudChjdXJyZW50LCB0ZXh0LnRvU3RyaW5nKCkpOworCQkJCQkJLy99CisJCQkJCQl0ZXh0LnNldExlbmd0aCgwKTsKKwkJCQkJfQorCQkJCQlTdHJpbmcgdGFnbmFtZSA9IChTdHJpbmcpIHBhcmVudGxpc3RbMl07IC8vZ2V0Q2xhc3MoY3VycmVudCk7CisJCQkJCWZvciAoaW50IGkgPSAwOyBpIDwgdGFnbmFtZS5sZW5ndGgoKTsgaSsrKSB7IC8vIGN1cnJlbnQtdGFnCisJCQkJCQlpZiAoKGMgPSByZWFkZXIucmVhZCgpKSAhPSB0YWduYW1lLmNoYXJBdChpKSkgeworCQkJCQkJCXRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24odGFnbmFtZSk7CisJCQkJCQl9CisJCQkJCX0KKwkJCQkJd2hpbGUgKCIgXHRcblxyIi5pbmRleE9mKGMgPSByZWFkZXIucmVhZCgpKSAhPSAtMSk7IC8vIHdoaXRlc3BhY2UKKwkJCQkJaWYgKGMgIT0gJz4nKSB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCk7IC8vICc+JworCQkJCQljID0gcmVhZGVyLnJlYWQoKTsKKwkJCQkJaWYgKCF2YWxpZGF0ZSkgeyBlbmRFbGVtZW50KCk7IH0KKwkJCQkJaWYgKHBhcmVudGxpc3RbMF0gPT0gbnVsbCkgeworCQkJCQkJcmVhZGVyLmNsb3NlKCk7CisJCQkJCQlyZXR1cm4gY3VycmVudDsKKwkJCQkJfQorCQkJCQljdXJyZW50ID0gcGFyZW50bGlzdFswXTsKKwkJCQkJcGFyZW50bGlzdCA9IChPYmplY3RbXSkgcGFyZW50bGlzdFsxXTsKKwkJCQl9CisJCQkJZWxzZSB7IC8vc3RhcnQgb3Igc3RhbmRhbG9uZSB0YWcKKwkJCQkJYm9vbGVhbiBpbnN0cnVjdGlvbiA9IChjID09ICc/Jyk7IC8vIFByb2Nlc3NpbmcgSW5zdHJ1Y3Rpb25zCisJCQkJCWlmIChjID09ICchJykgeyB3aGlsZSAoKGMgPSByZWFkZXIucmVhZCgpKSAhPSAnPicpOyBjb250aW51ZTsgfSAvLyBET0NUWVBFCisJCQkJCWlmIChpbnN0cnVjdGlvbikgeyBjID0gcmVhZGVyLnJlYWQoKTsgfQorCQkJCQl0ZXh0LnNldExlbmd0aCgwKTsKKwkJCQkJYm9vbGVhbiBpc2NvbW1lbnQgPSBmYWxzZTsKKwkJCQkJd2hpbGUgKCI+LyBcdFxuXHIiLmluZGV4T2YoYykgPT0gLTEpIHsKKwkJCQkJCXRleHQuYXBwZW5kKChjaGFyKSBjKTsKKwkJCQkJCWlmICgodGV4dC5sZW5ndGgoKSA9PSAzKSAmJiAodGV4dC5jaGFyQXQoMCkgPT0gJyEnKSAmJgorCQkJCQkJCQkodGV4dC5jaGFyQXQoMSkgPT0gJy0nKSAmJiAodGV4dC5jaGFyQXQoMikgPT0gJy0nKSkgeworCQkJCQkJCWludCBtID0gMDsKKwkJCQkJCQl3aGlsZSAodHJ1ZSkgeworCQkJCQkJCQljID0gcmVhZGVyLnJlYWQoKTsKKwkJCQkJCQkJaWYgKGMgPT0gJy0nKSB7IG0rKzsgfQorCQkJCQkJCQllbHNlIGlmICgoYyA9PSAnPicpICYmIChtID49IDIpKSB7IGJyZWFrOyB9CisJCQkJCQkJCWVsc2UgeyBtID0gMDsgfQorCQkJCQkJCX0KKwkJCQkJCQlpc2NvbW1lbnQgPSB0cnVlOworCQkJCQkJfQorCQkJCQkJYyA9IHJlYWRlci5yZWFkKCk7CisJCQkJCX0KKwkJCQkJaWYgKGlzY29tbWVudCkgeyBjb250aW51ZTsgfQorCQkJCQlpZiAoIWluc3RydWN0aW9uKSB7CisJCQkJCQlTdHJpbmcgdGFnbmFtZSA9IHRleHQudG9TdHJpbmcoKTsKKwkJCQkJCXBhcmVudGxpc3QgPSBuZXcgT2JqZWN0W10geyBjdXJyZW50LCBwYXJlbnRsaXN0LCB0YWduYW1lIH07CisJCQkJCQlpZiAodmFsaWRhdGUpIHsKKwkJCQkJCQljdXJyZW50ID0gKGN1cnJlbnQgIT0gbnVsbCkgPworCQkJCQkJCQlhZGRFbGVtZW50KGN1cnJlbnQsIHRhZ25hbWUpIDogY3JlYXRlKHRhZ25hbWUpOworCQkJCQkJfSBlbHNlIHsKKwkJCQkJCQljdXJyZW50ID0gdGFnbmFtZTsKKwkJCQkJCX0KKwkJCQkJfQorCQkJCQl0ZXh0LnNldExlbmd0aCgwKTsKKwkJCQkJd2hpbGUgKHRydWUpIHsKKwkJCQkJCWJvb2xlYW4gd2hpdGVzcGFjZSA9IGZhbHNlOworCQkJCQkJd2hpbGUgKCIgXHRcblxyIi5pbmRleE9mKGMpICE9IC0xKSB7CisJCQkJCQkJYyA9IHJlYWRlci5yZWFkKCk7CisJCQkJCQkJd2hpdGVzcGFjZSA9IHRydWU7CisJCQkJCQl9CisJCQkJCQlpZiAoYyA9PSAnPicpIHsKKwkJCQkJCQlpZiAoaW5zdHJ1Y3Rpb24pIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oKTsgLy8gJz8+JworCQkJCQkJCWlmICghdmFsaWRhdGUpIHsKKwkJCQkJCQkJc3RhcnRFbGVtZW50KChTdHJpbmcpIGN1cnJlbnQsIGF0dHJpYnV0ZWxpc3QpOyBhdHRyaWJ1dGVsaXN0ID0gbnVsbDsKKwkJCQkJCQl9CisJCQkJCQkJYyA9IHJlYWRlci5yZWFkKCk7CisJCQkJCQkJYnJlYWs7CisJCQkJCQl9CisJCQkJCQllbHNlIGlmIChjID09ICcvJykgeworCQkJCQkJCWlmIChpbnN0cnVjdGlvbikgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigpOyAvLyAnPz4nCisJCQkJCQkJaWYgKChjID0gcmVhZGVyLnJlYWQoKSkgIT0gJz4nKSB7CisJCQkJCQkJCXRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oKTsgLy8gJz4nCisJCQkJCQkJfQorCQkJCQkJCWlmICghdmFsaWRhdGUpIHsKKwkJCQkJCQkJc3RhcnRFbGVtZW50KChTdHJpbmcpIGN1cnJlbnQsIGF0dHJpYnV0ZWxpc3QpOyBhdHRyaWJ1dGVsaXN0ID0gbnVsbDsKKwkJCQkJCQkJZW5kRWxlbWVudCgpOworCQkJCQkJCX0KKwkJCQkJCQlpZiAocGFyZW50bGlzdFswXSA9PSBudWxsKSB7CisJCQkJCQkJCXJlYWRlci5jbG9zZSgpOworCQkJCQkJCQlyZXR1cm4gY3VycmVudDsKKwkJCQkJCQl9CisJCQkJCQkJY3VycmVudCA9IHBhcmVudGxpc3RbMF07CisJCQkJCQkJcGFyZW50bGlzdCA9IChPYmplY3RbXSkgcGFyZW50bGlzdFsxXTsKKwkJCQkJCQljID0gcmVhZGVyLnJlYWQoKTsKKwkJCQkJCQlicmVhazsKKwkJCQkJCX0KKwkJCQkJCWVsc2UgaWYgKGluc3RydWN0aW9uICYmIChjID09ICc/JykpIHsKKwkJCQkJCQlpZiAoKGMgPSByZWFkZXIucmVhZCgpKSAhPSAnPicpIHsKKwkJCQkJCQkJdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigpOyAvLyAnPicKKwkJCQkJCQl9CisJCQkJCQkJYyA9IHJlYWRlci5yZWFkKCk7CisJCQkJCQkJYnJlYWs7CisJCQkJCQl9CisJCQkJCQllbHNlIGlmICh3aGl0ZXNwYWNlKSB7CisJCQkJCQkJd2hpbGUgKCI9IFx0XG5cciIuaW5kZXhPZihjKSA9PSAtMSkgeworCQkJCQkJCQl0ZXh0LmFwcGVuZCgoY2hhcikgYyk7CisJCQkJCQkJCWMgPSByZWFkZXIucmVhZCgpOworCQkJCQkJCX0KKwkJCQkJCQlTdHJpbmcga2V5ID0gdGV4dC50b1N0cmluZygpOworCQkJCQkJCXRleHQuc2V0TGVuZ3RoKDApOworCQkJCQkJCXdoaWxlICgiIFx0XG5cciIuaW5kZXhPZihjKSAhPSAtMSkgYyA9IHJlYWRlci5yZWFkKCk7CisJCQkJCQkJaWYgKGMgIT0gJz0nKSB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCk7CisJCQkJCQkJd2hpbGUgKCIgXHRcblxyIi5pbmRleE9mKGMgPSByZWFkZXIucmVhZCgpKSAhPSAtMSk7CisJCQkJCQkJY2hhciBxdW90ZSA9IChjaGFyKSBjOworCQkJCQkJCWlmICgoYyAhPSAnXCInKSAmJiAoYyAhPSAnXCcnKSkgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigpOworCQkJCQkJCXdoaWxlIChxdW90ZSAhPSAoYyA9IHJlYWRlci5yZWFkKCkpKSB7CisJCQkJCQkJCWlmIChjID09ICcmJykgeworCQkJCQkJCQkJU3RyaW5nQnVmZmVyIGViID0gbmV3IFN0cmluZ0J1ZmZlcigpOworCQkJCQkJCQkJd2hpbGUgKCc7JyAhPSAoYyA9IHJlYWRlci5yZWFkKCkpKSB7IGViLmFwcGVuZCgoY2hhcikgYyk7IH0KKwkJCQkJCQkJCVN0cmluZyBlbnRpdHkgPSBlYi50b1N0cmluZygpOworCQkJCQkJCQkJaWYgKCJsdCIuZXF1YWxzKGVudGl0eSkpIHsgdGV4dC5hcHBlbmQoJzwnKTsgfQorCQkJCQkJCQkJZWxzZSBpZiAoImd0Ii5lcXVhbHMoZW50aXR5KSkgeyB0ZXh0LmFwcGVuZCgnPicpOyB9CisJCQkJCQkJCQllbHNlIGlmICgiYW1wIi5lcXVhbHMoZW50aXR5KSkgeyB0ZXh0LmFwcGVuZCgnJicpOyB9CisJCQkJCQkJCQllbHNlIGlmICgicXVvdCIuZXF1YWxzKGVudGl0eSkpIHsgdGV4dC5hcHBlbmQoJyInKTsgfQorCQkJCQkJCQkJZWxzZSBpZiAoImFwb3MiLmVxdWFscyhlbnRpdHkpKSB7IHRleHQuYXBwZW5kKCdcJycpOyB9CisJCQkJCQkJCQllbHNlIGlmIChlbnRpdHkuc3RhcnRzV2l0aCgiIyIpKSB7CisJCQkJCQkJCQkJdGV4dC5hcHBlbmQoKGNoYXIpIEludGVnZXIucGFyc2VJbnQoZW50aXR5LnN1YnN0cmluZygxKSkpOworCQkJCQkJCQkJfQorCQkJCQkJCQkJZWxzZSB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJ1bmtub3duICIgKyAiZW50aXR5ICIgKyBlbnRpdHkpOworCQkJCQkJCQl9CisJCQkJCQkJCWVsc2UgdGV4dC5hcHBlbmQoKGNoYXIpIGMpOworCQkJCQkJCX0KKwkJCQkJCQlpZiAoIWluc3RydWN0aW9uKSB7CisJCQkJCQkJCWlmICh2YWxpZGF0ZSkgeworCQkJCQkJCQkJYWRkQXR0cmlidXRlKGN1cnJlbnQsIGtleSwgdGV4dC50b1N0cmluZygpKTsKKwkJCQkJCQkJfSBlbHNlIHsKKwkJCQkJCQkJCWlmIChhdHRyaWJ1dGVsaXN0ID09IG51bGwpIHsgYXR0cmlidXRlbGlzdCA9IG5ldyBIYXNodGFibGUoKTsgfQorCQkJCQkJCQkJYXR0cmlidXRlbGlzdC5wdXQoa2V5LCB0ZXh0LnRvU3RyaW5nKCkpOworCQkJCQkJCQl9CisJCQkJCQkJfQorCQkJCQkJCXRleHQuc2V0TGVuZ3RoKDApOworCQkJCQkJCWMgPSByZWFkZXIucmVhZCgpOworCQkJCQkJfQorCQkJCQkJZWxzZSB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCk7CisJCQkJCX0KKwkJCQl9CisJCQl9CisJCQllbHNlIHsKKwkJCQlpZiAoIiBcdFxuXHIiLmluZGV4T2YoYykgIT0gLTEpIHsKKwkJCQkJaWYgKCh0ZXh0Lmxlbmd0aCgpID4gMCkgJiYgKHRleHQuY2hhckF0KHRleHQubGVuZ3RoKCkgLSAxKSAhPSAnICcpKSB7CisJCQkJCQl0ZXh0LmFwcGVuZCgnICcpOworCQkJCQl9CisJCQkJfQorCQkJCWVsc2UgeworCQkJCQl0ZXh0LmFwcGVuZCgoY2hhcikgYyk7CisJCQkJfQorCQkJCWMgPSByZWFkZXIucmVhZCgpOworCQkJfSAKKwkJfQorCQl0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCk7CisJfQorCQorCS8qKgorCSAqIENvbnZlcnQgZW50aXRpZXMuCisJICovCisJcHJpdmF0ZSBzdGF0aWMgU3RyaW5nIGNvbnZlcnQoU3RyaW5nQnVmZmVyIHRleHQpIHsKKwkJcmV0dXJuIG51bGw7CisJfQorCisJLypwcml2YXRlIElucHV0U3RyZWFtIGlucHV0cmVhZGVyOworCXByaXZhdGUgYnl0ZVtdIGRhdGE7CisJcHJpdmF0ZSBpbnQgaW5wdXRmcm9tID0gMCwgaW5wdXR0byA9IDA7CisJcHJpdmF0ZSBpbnQgcmVhZCgpIHRocm93cyBFeGNlcHRpb24geworCQlpZiAoZGF0YSA9PSBudWxsKSB7IGRhdGEgPSBuZXcgYnl0ZVsxMDI0XTsgfQorCQlpZiAoaW5wdXRmcm9tID49IGlucHV0dG8pIHsKKwkJCWlucHV0ZnJvbSA9IDA7CisJCQlpbnB1dHRvID0gaW5wdXRyZWFkZXIucmVhZChkYXRhKTsKKwkJfQorCQlpbnB1dGZyb20rKzsKKwkJcmV0dXJuIGRhdGFbaW5wdXRmcm9tIC0gMV07CisJfSovCisKKwkvKioKKwkgKgorCSAqLworCXByaXZhdGUgdm9pZCBhZGRJbXBsKE9iamVjdCBwYXJlbnQsIE9iamVjdCBjb21wb25lbnQsIGludCBpbmRleCkgeworCQlTdHJpbmcgcGFyZW50Y2xhc3MgPSBnZXRDbGFzcyhwYXJlbnQpOworCQlTdHJpbmcgY2xhc3NuYW1lID0gZ2V0Q2xhc3MoY29tcG9uZW50KTsKKwkJLy9TeXN0ZW0ub3V0LnByaW50bG4oImFkZCAiICsgY2xhc3NuYW1lICsgIiAtPiAiICsgcGFyZW50Y2xhc3MpOworCQlpZiAoKCgiY29tYm9ib3giID09IHBhcmVudGNsYXNzKSAmJiAoImNob2ljZSIgPT0gY2xhc3NuYW1lKSkgfHwKKwkJCQkJKCgidGFiYmVkcGFuZSIgPT0gcGFyZW50Y2xhc3MpICYmICgidGFiIiA9PSBjbGFzc25hbWUpKSB8fAorCQkJCQkoKCJsaXN0IiA9PSBwYXJlbnRjbGFzcykgJiYgKCJpdGVtIiA9PSBjbGFzc25hbWUpKSB8fAorCQkJCQkoKCJ0YWJsZSIgPT0gcGFyZW50Y2xhc3MpICYmICgoImNvbHVtbiIgPT0gY2xhc3NuYW1lKSB8fCAoInJvdyIgPT0gY2xhc3NuYW1lKSkpIHx8CisJCQkJCSgoInJvdyIgPT0gcGFyZW50Y2xhc3MpICYmICgiY2VsbCIgPT0gY2xhc3NuYW1lKSkgfHwKKwkJCQkJKCgoInRyZWUiID09IHBhcmVudGNsYXNzKSB8fCAoIm5vZGUiID09IHBhcmVudGNsYXNzKSkgJiYgKCJub2RlIiA9PSBjbGFzc25hbWUpKSB8fAorCQkJCQkoKCJtZW51YmFyIiA9PSBwYXJlbnRjbGFzcykgJiYgKCJtZW51IiA9PSBjbGFzc25hbWUpKSkgeworCQkJCWNsYXNzbmFtZSA9IGNsYXNzbmFtZTsgLy8gY29tcGlsZXIgYnVnCisJCX0KKwkJZWxzZSBpZiAoKCJtZW51IiA9PSBwYXJlbnRjbGFzcykgJiYgKCgibWVudSIgPT0gY2xhc3NuYW1lKSB8fCAoIm1lbnVpdGVtIiA9PSBjbGFzc25hbWUpIHx8CisJCQkJKCJjaGVja2JveG1lbnVpdGVtIiA9PSBjbGFzc25hbWUpIHx8ICgic2VwYXJhdG9yIiA9PSBjbGFzc25hbWUpKSkgeworCQkJY2xhc3NuYW1lID0gIm1lbnUiOworCQl9CisJCWVsc2UgaWYgKCgicGFuZWwiID09IHBhcmVudGNsYXNzKSB8fCAoImRlc2t0b3AiID09IHBhcmVudGNsYXNzKSB8fAorCQkJCSgic3BsaXRwYW5lIiA9PSBwYXJlbnRjbGFzcykgfHwgKCJkaWFsb2ciID09IHBhcmVudGNsYXNzKSB8fAorCQkJCSgidGFiYmVkcGFuZSIgPT0gcGFyZW50Y2xhc3MpKSB7CisJCQl3aGlsZSAoImNvbXBvbmVudCIgIT0gY2xhc3NuYW1lKSB7CisJCQkJU3RyaW5nIGV4dGVuZGNsYXNzID0gbnVsbDsKKwkJCQlmb3IgKGludCBpID0gMDsgaSA8IGR0ZC5sZW5ndGg7IGkgKz0gMykgeworCQkJCQlpZiAoY2xhc3NuYW1lID09IGR0ZFtpXSkgeworCQkJCQkJZXh0ZW5kY2xhc3MgPSAoU3RyaW5nKSBkdGRbaSArIDFdOyBicmVhazsKKwkJCQkJfQorCQkJCX0KKwkJCQlpZiAoZXh0ZW5kY2xhc3MgPT0gbnVsbCkgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbihjbGFzc25hbWUgKyAiIG5vdCBjb21wb25lbnQiKTsKKwkJCQljbGFzc25hbWUgPSBleHRlbmRjbGFzczsKKwkJCX0KKwkJfQorCQllbHNlIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oY2xhc3NuYW1lICsgIiBhZGQgIiArIHBhcmVudGNsYXNzKTsKKwkJaW5zZXJ0SXRlbShwYXJlbnQsIChTdHJpbmcpIGNsYXNzbmFtZSwgY29tcG9uZW50LCBpbmRleCk7CisJCXNldChjb21wb25lbnQsICI6cGFyZW50IiwgcGFyZW50KTsKKwkJLy9pZiAocGFyZW50ID09IGNvbnRlbnQpIFN5c3RlbS5vdXQucHJpbnRsbihnZXRDbGFzcyhwYXJlbnQpICsgIi5hZGQoIiArIGdldENsYXNzKGNvbXBvbmVudCkgKyAiKSA6ICIgKyBjbGFzc25hbWUpOworCX0KKworCS8qKgorCSAqCisJICovCisJcHJpdmF0ZSBPYmplY3QgYWRkRWxlbWVudChPYmplY3QgcGFyZW50LCBTdHJpbmcgbmFtZSkgeworCQkvL1N5c3RlbS5vdXQucHJpbnRsbigiY3JlYXRlICciICsgbmFtZSArICInIik7CisJCU9iamVjdCBjb21wb25lbnQgPSBjcmVhdGUobmFtZSk7CisJCWFkZEltcGwocGFyZW50LCBjb21wb25lbnQsIC0xKTsKKwkJcmV0dXJuIGNvbXBvbmVudDsKKwl9CisKKwkvKioKKwkgKgorCSAqLworCXByaXZhdGUgdm9pZCBhZGRBdHRyaWJ1dGUoT2JqZWN0IGNvbXBvbmVudCwgU3RyaW5nIGtleSwgU3RyaW5nIHZhbHVlKSB7CisJCS8vU3lzdGVtLm91dC5wcmludGxuKCJhdHRyaWJ1dGUgJyIgKyBrZXkgKyAiJz0nIiArIHZhbHVlICsgIiciKTsKKwkJT2JqZWN0W10gZGVmaW5pdGlvbiA9IGdldERlZmluaXRpb24oY29tcG9uZW50LCBrZXksIG51bGwpOworCQlrZXkgPSAoU3RyaW5nKSBkZWZpbml0aW9uWzFdOworCQlpZiAoInN0cmluZyIgPT0gZGVmaW5pdGlvblswXSkgeworCQkJc2V0U3RyaW5nKGNvbXBvbmVudCwga2V5LCB2YWx1ZSwgKFN0cmluZykgZGVmaW5pdGlvblszXSk7CisJCX0KKwkJZWxzZSBpZiAoImNob2ljZSIgPT0gZGVmaW5pdGlvblswXSkgeworCQkJU3RyaW5nW10gdmFsdWVzID0gKFN0cmluZ1tdKSBkZWZpbml0aW9uWzNdOworCQkJc2V0Q2hvaWNlKGNvbXBvbmVudCwga2V5LCB2YWx1ZSwgdmFsdWVzLCB2YWx1ZXNbMF0pOworCQl9CisJCWVsc2UgaWYgKCJib29sZWFuIiA9PSBkZWZpbml0aW9uWzBdKSB7CisJCQlpZiAoInRydWUiLmVxdWFscyh2YWx1ZSkpIHsKKwkJCQlpZiAoZGVmaW5pdGlvblszXSA9PSBCb29sZWFuLkZBTFNFKSB7CisJCQkJCXNldChjb21wb25lbnQsIGtleSwgQm9vbGVhbi5UUlVFKTsKKwkJCSAJfQorCQkJfQorCQkJZWxzZSBpZiAoImZhbHNlIi5lcXVhbHModmFsdWUpKSB7CisJCQkJaWYgKGRlZmluaXRpb25bM10gPT0gQm9vbGVhbi5UUlVFKSB7CisJCQkJCXNldChjb21wb25lbnQsIGtleSwgQm9vbGVhbi5GQUxTRSk7CisJCQkgCX0KKwkJCX0KKwkJCWVsc2UgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbih2YWx1ZSk7CisJCX0KKwkJZWxzZSBpZiAoImludGVnZXIiID09IGRlZmluaXRpb25bMF0pIHsKKwkJCXNldChjb21wb25lbnQsIGtleSwgSW50ZWdlci52YWx1ZU9mKHZhbHVlKSk7CisJCX0KKwkJZWxzZSBpZiAoImljb24iID09IGRlZmluaXRpb25bMF0pIHsKKwkJCXNldChjb21wb25lbnQsIGtleSwgZ2V0SWNvbih2YWx1ZSkpOworCQl9CisJCWVsc2UgaWYgKCJtZXRob2QiID09IGRlZmluaXRpb25bMF0pIHsKKwkJCXRyeSB7IC8vamF2YQorCQkJCXNldChjb21wb25lbnQsIGtleSwgZ2V0Q2xhc3MoKS5nZXRNZXRob2QodmFsdWUsIG51bGwpKTsgLy9qYXZhCisJCQl9IGNhdGNoIChFeGNlcHRpb24gZXhjKSB7IFN5c3RlbS5lcnIucHJpbnRsbih2YWx1ZSk7IGV4Yy5wcmludFN0YWNrVHJhY2UoKTsgfSAvL2phdmEKKwkJCS8vbWlkcCBzZXRNZXRob2QoY29tcG9uZW50LCBrZXksIHZhbHVlKTsKKwkJfQorCQkvL2phdmE+CisJCWVsc2UgaWYgKCJiZWFuIiA9PSBkZWZpbml0aW9uWzBdKSB7CisJCQl0cnkgeworCQkJCXNldChjb21wb25lbnQsIGtleSwgKENvbXBvbmVudCkgQ2xhc3MuZm9yTmFtZSh2YWx1ZSkubmV3SW5zdGFuY2UoKSk7CisJCQl9IGNhdGNoIChFeGNlcHRpb24gZXhjKSB7IFN5c3RlbS5lcnIucHJpbnRsbih2YWx1ZSk7IGV4Yy5wcmludFN0YWNrVHJhY2UoKTsgfQorCQl9CisJCS8vPGphdmEKKwkJZWxzZSB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKChTdHJpbmcpIGRlZmluaXRpb25bMF0pOworCX0KKworCS8qKgorCSAqCisJICovCisJcHJpdmF0ZSBPYmplY3RbXSBnZXREZWZpbml0aW9uKE9iamVjdCBjb21wb25lbnQsIFN0cmluZyBrZXksIFN0cmluZyB0eXBlKSB7CisJCU9iamVjdCBjbGFzc25hbWUgPSBnZXRDbGFzcyhjb21wb25lbnQpOworCQlPYmplY3QgY3VycmVudG5hbWUgPSBjbGFzc25hbWU7CisJCXdoaWxlIChjbGFzc25hbWUgIT0gbnVsbCkgeworCQkJZm9yIChpbnQgaSA9IDA7IGkgPCBkdGQubGVuZ3RoOyBpICs9IDMpIHsKKwkJCQlpZiAoZHRkW2ldID09IGNsYXNzbmFtZSkgeworCQkJCQlPYmplY3RbXVtdIGF0dHJpYnV0ZXMgPSAoT2JqZWN0W11bXSkgZHRkW2kgKyAyXTsKKwkJCQkJZm9yIChpbnQgaiA9IDA7IGogPCBhdHRyaWJ1dGVzLmxlbmd0aDsgaisrKSB7CisJCQkJCQlpZiAoYXR0cmlidXRlc1tqXVsxXS5lcXVhbHMoa2V5KSkgeworCQkJCQkJCWlmICgodHlwZSAhPSBudWxsKSAmJiAodHlwZSAhPSBhdHRyaWJ1dGVzW2pdWzBdKSkgeworCQkJCQkJCQl0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKGF0dHJpYnV0ZXNbal1bMF0udG9TdHJpbmcoKSk7CisJCQkJCQkJfQorCQkJCQkJCXJldHVybiBhdHRyaWJ1dGVzW2pdOworCQkJCQkJfQorCQkJCQl9CisJCQkJCWNsYXNzbmFtZSA9IGR0ZFtpICsgMV07CisJCQkJCWJyZWFrOworCQkJCX0KKwkJCX0KKwkJfQorCQl0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJ1bmtub3duICIgKyBrZXkgKyAiICIgKyB0eXBlICsKKwkJCSIgZm9yICIgKyBjdXJyZW50bmFtZSk7CisJfQorCisJLyoqCisJICoKKwkgKi8KKwkvL3ByaXZhdGUgdm9pZCBhZGRDb250ZW50KE9iamVjdCBjb21wb25lbnQsIFN0cmluZyBjb250ZW50KSB7CisJCS8vc2V0KGNvbXBvbmVudCwgImNvbnRlbnQiLCBjb250ZW50KTsKKwkvL30KKworCS8vIC0tLS0tIC0tLS0tIC0tLS0tIC0tLS0tIC0tLS0tIC0tLS0tIC0tLS0tIC0tLS0tIC0tLS0tIC0tLS0tIC0tLS0tIC0tLS0tCisKKwkvKioKKwkgKgorCSAqLworCXB1YmxpYyB2b2lkIHNldFN0cmluZyhPYmplY3QgY29tcG9uZW50LCBTdHJpbmcga2V5LCBTdHJpbmcgdmFsdWUpIHsKKwkJT2JqZWN0W10gZGVmaW5pdGlvbiA9IGdldERlZmluaXRpb24oY29tcG9uZW50LCBrZXksICJzdHJpbmciKTsKKwkJaWYgKHNldFN0cmluZyhjb21wb25lbnQsIChTdHJpbmcpIGRlZmluaXRpb25bMV0sCisJCQkJdmFsdWUsIChTdHJpbmcpIGRlZmluaXRpb25bM10pKSB7CisJCQl1cGRhdGUoY29tcG9uZW50LCBkZWZpbml0aW9uWzJdKTsKKwkJfQorCX0KKworCS8qKgorCSAqCisJICovCisJcHVibGljIFN0cmluZyBnZXRTdHJpbmcoT2JqZWN0IGNvbXBvbmVudCwgU3RyaW5nIGtleSkgeworCQlPYmplY3RbXSBkZWZpbml0aW9uID0gZ2V0RGVmaW5pdGlvbihjb21wb25lbnQsIGtleSwgInN0cmluZyIpOworCQlyZXR1cm4gZ2V0U3RyaW5nKGNvbXBvbmVudCwgKFN0cmluZykgZGVmaW5pdGlvblsxXSwKKwkJCShTdHJpbmcpIGRlZmluaXRpb25bM10pOworCX0KKworCS8qKgorCSAqCisJICovCisJcHVibGljIHZvaWQgc2V0Q2hvaWNlKE9iamVjdCBjb21wb25lbnQsIFN0cmluZyBrZXksIFN0cmluZyB2YWx1ZSkgeworCQlPYmplY3RbXSBkZWZpbml0aW9uID0gZ2V0RGVmaW5pdGlvbihjb21wb25lbnQsIGtleSwgImNob2ljZSIpOworCQlTdHJpbmdbXSB2YWx1ZXMgPSAoU3RyaW5nW10pIGRlZmluaXRpb25bM107CisJCWlmIChzZXRDaG9pY2UoY29tcG9uZW50LCAoU3RyaW5nKSBkZWZpbml0aW9uWzFdLAorCQkJCXZhbHVlLCB2YWx1ZXMsIHZhbHVlc1swXSkpIHsKKwkJCXVwZGF0ZShjb21wb25lbnQsIGRlZmluaXRpb25bMl0pOworCQl9CisJfQorCisJLyoqCisJICoKKwkgKi8KKwlwdWJsaWMgU3RyaW5nIGdldENob2ljZShPYmplY3QgY29tcG9uZW50LCBTdHJpbmcga2V5KSB7CisJCU9iamVjdFtdIGRlZmluaXRpb24gPSBnZXREZWZpbml0aW9uKGNvbXBvbmVudCwga2V5LCAiY2hvaWNlIik7CisJCXJldHVybiBnZXRTdHJpbmcoY29tcG9uZW50LCAoU3RyaW5nKSBkZWZpbml0aW9uWzFdLAorCQkJKChTdHJpbmdbXSkgZGVmaW5pdGlvblszXSlbMF0pOworCX0KKworCS8qKgorCSAqCisJICovCisJcHVibGljIHZvaWQgc2V0Qm9vbGVhbihPYmplY3QgY29tcG9uZW50LCBTdHJpbmcga2V5LCBib29sZWFuIHZhbHVlKSB7CisJCU9iamVjdFtdIGRlZmluaXRpb24gPSBnZXREZWZpbml0aW9uKGNvbXBvbmVudCwga2V5LCAiYm9vbGVhbiIpOworCQlpZiAoc2V0Qm9vbGVhbihjb21wb25lbnQsIChTdHJpbmcpIGRlZmluaXRpb25bMV0sCisJCQkJdmFsdWUsIChkZWZpbml0aW9uWzNdID09IEJvb2xlYW4uVFJVRSkpKSB7CisJCQl1cGRhdGUoY29tcG9uZW50LCBkZWZpbml0aW9uWzJdKTsKKwkJfQorCX0KKworCS8qKgorCSAqCisJICovCisJcHVibGljIGJvb2xlYW4gZ2V0Qm9vbGVhbihPYmplY3QgY29tcG9uZW50LCBTdHJpbmcga2V5KSB7CisJCU9iamVjdFtdIGRlZmluaXRpb24gPSBnZXREZWZpbml0aW9uKGNvbXBvbmVudCwga2V5LCAiYm9vbGVhbiIpOworCQlyZXR1cm4gZ2V0Qm9vbGVhbihjb21wb25lbnQsIChTdHJpbmcpIGRlZmluaXRpb25bMV0sCisJCQkoZGVmaW5pdGlvblszXSA9PSBCb29sZWFuLlRSVUUpKTsKKwl9CisKKwkvKioKKwkgKgorCSAqLworCXB1YmxpYyB2b2lkIHNldEludGVnZXIoT2JqZWN0IGNvbXBvbmVudCwgU3RyaW5nIGtleSwgaW50IHZhbHVlKSB7CisJCU9iamVjdFtdIGRlZmluaXRpb24gPSBnZXREZWZpbml0aW9uKGNvbXBvbmVudCwga2V5LCAiaW50ZWdlciIpOworCQlpZiAoc2V0SW50ZWdlcihjb21wb25lbnQsIChTdHJpbmcpIGRlZmluaXRpb25bMV0sCisJCQkJdmFsdWUsICgoSW50ZWdlcikgZGVmaW5pdGlvblszXSkuaW50VmFsdWUoKSkpIHsKKwkJCXVwZGF0ZShjb21wb25lbnQsIGRlZmluaXRpb25bMl0pOworCQl9CisJfQorCisJLyoqCisJICoKKwkgKi8KKwlwdWJsaWMgaW50IGdldEludGVnZXIoT2JqZWN0IGNvbXBvbmVudCwgU3RyaW5nIGtleSkgeworCQlPYmplY3RbXSBkZWZpbml0aW9uID0gZ2V0RGVmaW5pdGlvbihjb21wb25lbnQsIGtleSwgImludGVnZXIiKTsKKwkJcmV0dXJuIGdldEludGVnZXIoY29tcG9uZW50LCAoU3RyaW5nKSBkZWZpbml0aW9uWzFdLAorCQkJKChJbnRlZ2VyKSBkZWZpbml0aW9uWzNdKS5pbnRWYWx1ZSgpKTsKKwl9CisKKwkvKioKKwkgKgorCSAqLworCXB1YmxpYyB2b2lkIHNldEljb24oT2JqZWN0IGNvbXBvbmVudCwgU3RyaW5nIGtleSwgSW1hZ2UgaWNvbikgeworCQlPYmplY3RbXSBkZWZpbml0aW9uID0gZ2V0RGVmaW5pdGlvbihjb21wb25lbnQsIGtleSwgImljb24iKTsKKwkJaWYgKHNldChjb21wb25lbnQsIChTdHJpbmcpIGRlZmluaXRpb25bMV0sIGljb24pKSB7CisJCQl1cGRhdGUoY29tcG9uZW50LCBkZWZpbml0aW9uWzJdKTsKKwkJfQorCX0KKworCS8qKgorCSAqCisJICovCisJcHVibGljIEltYWdlIGdldEljb24oT2JqZWN0IGNvbXBvbmVudCwgU3RyaW5nIGtleSkgeworCQlPYmplY3RbXSBkZWZpbml0aW9uID0gZ2V0RGVmaW5pdGlvbihjb21wb25lbnQsIGtleSwgImljb24iKTsKKwkJcmV0dXJuIGdldEljb24oY29tcG9uZW50LCAoU3RyaW5nKSBkZWZpbml0aW9uWzFdLCAoSW1hZ2UpIGRlZmluaXRpb25bM10pOworCX0KKworCS8qKgorCSAqCisJICovCisJcHVibGljIHZvaWQgc2V0TWV0aG9kKE9iamVjdCBjb21wb25lbnQsIFN0cmluZyBrZXksIE1ldGhvZCBtZXRob2QpIHsgLy9qYXZhCisJLy9taWRwIHB1YmxpYyB2b2lkIHNldE1ldGhvZChPYmplY3QgY29tcG9uZW50LCBTdHJpbmcga2V5LCBTdHJpbmcgbWV0aG9kKSB7CisJCU9iamVjdFtdIGRlZmluaXRpb24gPSBnZXREZWZpbml0aW9uKGNvbXBvbmVudCwga2V5LCAibWV0aG9kIik7CisJCWlmIChzZXQoY29tcG9uZW50LCAoU3RyaW5nKSBkZWZpbml0aW9uWzFdLCBtZXRob2QpKSB7CisJCQl1cGRhdGUoY29tcG9uZW50LCBkZWZpbml0aW9uWzJdKTsKKwkJfQorCX0KKworCS8qKgorCSAqCisJICovCisJcHVibGljIE1ldGhvZCBnZXRNZXRob2QoT2JqZWN0IGNvbXBvbmVudCwgU3RyaW5nIGtleSkgeyAvL2phdmEKKwkvL21pZHAgcHVibGljIFN0cmluZyBnZXRNZXRob2QoT2JqZWN0IGNvbXBvbmVudCwgU3RyaW5nIGtleSkgeworCQlPYmplY3RbXSBkZWZpbml0aW9uID0gZ2V0RGVmaW5pdGlvbihjb21wb25lbnQsIGtleSwgIm1ldGhvZCIpOworCQlyZXR1cm4gKE1ldGhvZCkgZ2V0KGNvbXBvbmVudCwgKFN0cmluZykgZGVmaW5pdGlvblsxXSk7IC8vamF2YQorCQkvL21pZHAgcmV0dXJuIChTdHJpbmcpIGdldChjb21wb25lbnQsIChTdHJpbmcpIGRlZmluaXRpb25bMV0pOworCX0KKworCS8qKgorCSAqCisJICovCisJcHJpdmF0ZSB2b2lkIHVwZGF0ZShPYmplY3QgY29tcG9uZW50LCBPYmplY3QgbW9kZSkgeworCQlpZiAoInBhcmVudCIgPT0gbW9kZSkgeworCQkJY29tcG9uZW50ID0gZ2V0UGFyZW50KGNvbXBvbmVudCk7CisJCQltb2RlID0gInZhbGlkYXRlIjsKKwkJfQorCQlib29sZWFuIGZpcnN0cGFpbnQgPSB0cnVlOworCQlpbnQgeCA9IDA7IGludCB5ID0gMDsgaW50IHdpZHRoID0gMDsgaW50IGhlaWdodCA9IDA7CisJCXdoaWxlIChjb21wb25lbnQgIT0gbnVsbCkgeworCQkJaWYgKCFnZXRCb29sZWFuKGNvbXBvbmVudCwgInZpc2libGUiLCB0cnVlKSkgeyBicmVhazsgfQorCQkJaWYgKCJwYWludCIgPT0gbW9kZSkgey8vfHwgKGZpcnN0cGFpbnQgJiYgKGNvbXBvbmVudCA9PSBjb250ZW50KSkKKwkJCQlSZWN0YW5nbGUgYm91bmRzID0gZ2V0UmVjdGFuZ2xlKGNvbXBvbmVudCwgImJvdW5kcyIpOworCQkJCWlmIChib3VuZHMgPT0gbnVsbCkgeyByZXR1cm47IH0KKwkJCQlpZiAoZmlyc3RwYWludCkgeworCQkJCQl4ID0gYm91bmRzLng7IHkgPSBib3VuZHMueTsKKwkJCQkJd2lkdGggPSBNYXRoLmFicyhib3VuZHMud2lkdGgpOyBoZWlnaHQgPSBib3VuZHMuaGVpZ2h0OworCQkJCQlmaXJzdHBhaW50ID0gZmFsc2U7CisJCQkJfSBlbHNlIHsKKwkJCQkJeCArPSBib3VuZHMueDsgeSArPSBib3VuZHMueTsKKwkJCQl9CisJCQkJaWYgKGNvbXBvbmVudCA9PSBjb250ZW50KSB7CisJCQkJCXJlcGFpbnQoeCwgeSwgd2lkdGgsIGhlaWdodCk7CisJCQkJfQorCQkJfQorCQkJT2JqZWN0IHBhcmVudCA9IGdldFBhcmVudChjb21wb25lbnQpOworCQkJU3RyaW5nIGNsYXNzbmFtZSA9IGdldENsYXNzKHBhcmVudCk7CisJCQlpZiAoImNvbWJvYm94IiA9PSBjbGFzc25hbWUpIHsKKwkJCQlwYXJlbnQgPSBnZXQocGFyZW50LCAiY29tYm9saXN0Iik7CisJCQl9CisJCQllbHNlIGlmICgibWVudSIgPT0gY2xhc3NuYW1lKSB7CisJCQkJcGFyZW50ID0gZ2V0KHBhcmVudCwgInBvcHVwbWVudSIpOworCQkJfQorCQkJZWxzZSBpZiAoKCJwYWludCIgPT0gbW9kZSkgJiYgKCJ0YWJiZWRwYW5lIiA9PSBjbGFzc25hbWUpKSB7CisJCQkJaWYgKGdldEl0ZW1JbXBsKHBhcmVudCwgImNvbXBvbmVudCIsCisJCQkJCQlnZXRJbnRlZ2VyKHBhcmVudCwgInNlbGVjdGVkIiwgMCkpICE9IGNvbXBvbmVudCkgeyBicmVhazsgfQorCQkJfQorCQkJaWYgKCgibGF5b3V0IiA9PSBtb2RlKSB8fCAoKCJ2YWxpZGF0ZSIgPT0gbW9kZSkgJiYKKwkJCQkJKCgibGlzdCIgPT0gY2xhc3NuYW1lKSB8fCAoInRhYmxlIiA9PSBjbGFzc25hbWUpIHx8CisJCQkJCSgidHJlZSIgPT0gY2xhc3NuYW1lKSB8fCAoImRpYWxvZyIgPT0gY2xhc3NuYW1lKSB8fCAocGFyZW50ID09IGNvbnRlbnQpKSkpIHsKKwkJCQlSZWN0YW5nbGUgYm91bmRzID0gZ2V0UmVjdGFuZ2xlKHBhcmVudCwgImJvdW5kcyIpOworCQkJCWlmIChib3VuZHMgPT0gbnVsbCkgeyByZXR1cm47IH0KKwkJCQlib3VuZHMud2lkdGggPSAtMSAqIE1hdGguYWJzKGJvdW5kcy53aWR0aCk7CisJCQkJbW9kZSA9ICJwYWludCI7CisJCQl9CisJCQljb21wb25lbnQgPSBwYXJlbnQ7CisJCX0KKwl9CisKKwkvLyAtLS0tLSAtLS0tLSAtLS0tLSAtLS0tLSAtLS0tLSAtLS0tLSAtLS0tLSAtLS0tLSAtLS0tLSAtLS0tLSAtLS0tLSAtLS0tLQorCisJLyoqCisJICoKKwkgKi8KKwlwcml2YXRlIGJvb2xlYW4gc2V0U3RyaW5nKE9iamVjdCBjb21wb25lbnQsCisJCQlTdHJpbmcga2V5LCBTdHJpbmcgdmFsdWUsIFN0cmluZyBkZWZhdWx0dmFsdWUpIHsKKwkJLypib29sZWFuIGNoYW5nZWQgPSBzZXQoY29tcG9uZW50LCBrZXksIHZhbHVlKTsKKwkJaWYgKGNoYW5nZWQgJiYgKCJuYW1lIiA9PSBrZXkpKSB7CisJCQkvL2ZvciAoQ2xhc3MgY2xzID0gZ2V0Q2xhc3MoKTsgY2xzICE9IG51bGw7IGNscyA9IGNscy5nZXRTdXBlcmNsYXNzKCkpIHsKKwkJCUZpZWxkW10gZmllbGRzID0gZ2V0Q2xhc3MoKS5nZXREZWNsYXJlZEZpZWxkcygpOworCQkJZm9yIChpbnQgaSA9IDA7IGkgPCBmaWVsZHMubGVuZ3RoOyBpKyspIHsKKwkJCQlpZiAoKGZpZWxkc1tpXS5nZXRUeXBlKCkgPT0gT2JqZWN0LmNsYXNzKSAmJgorCQkJCQkJZmllbGRzW2ldLmdldE5hbWUoKS5lcXVhbHModmFsdWUpKSB7CisJCQkJCXRyeSB7CisJCQkJCQlmaWVsZHNbaV0uc2V0KHRoaXMsIGNvbXBvbmVudCk7CisJCQkJCQlyZXR1cm4gdHJ1ZTsKKwkJCQkJfSBjYXRjaCAoSWxsZWdhbEFjY2Vzc0V4Y2VwdGlvbiBpYWUpIHt9CisJCQkJfQorCQkJfQorCQkJLy99CisJCQl0cnkgeworCQkJCWdldENsYXNzKCkuZ2V0RmllbGQodmFsdWUpLnNldCh0aGlzLCBjb21wb25lbnQpOworCQkJfSBjYXRjaCAoRXhjZXB0aW9uIGV4Yykge30KKwkJfQorCQlyZXR1cm4gY2hhbmdlZDsqLworCQlyZXR1cm4gc2V0KGNvbXBvbmVudCwga2V5LCB2YWx1ZSk7CisJfQorCisJLyoqCisJICoKKwkgKi8KKwlwcml2YXRlIFN0cmluZyBnZXRTdHJpbmcoT2JqZWN0IGNvbXBvbmVudCwKKwkJCVN0cmluZyBrZXksIFN0cmluZyBkZWZhdWx0dmFsdWUpIHsKKwkJT2JqZWN0IHZhbHVlID0gZ2V0KGNvbXBvbmVudCwga2V5KTsKKwkJcmV0dXJuICh2YWx1ZSA9PSBudWxsKSA/IGRlZmF1bHR2YWx1ZSA6IChTdHJpbmcpIHZhbHVlOworCX0KKworCS8qKgorCSAqCisJICovCisJcHJpdmF0ZSBib29sZWFuIHNldENob2ljZShPYmplY3QgY29tcG9uZW50LAorCQkJU3RyaW5nIGtleSwgU3RyaW5nIHZhbHVlLCBTdHJpbmdbXSB2YWx1ZXMsIFN0cmluZyBkZWZhdWx0dmFsdWUpIHsKKwkJaWYgKHZhbHVlID09IG51bGwpIHsKKwkJCXJldHVybiBzZXQoY29tcG9uZW50LCBrZXksIGRlZmF1bHR2YWx1ZSk7CisJCX0KKwkJZm9yIChpbnQgaSA9IDA7IGkgPCB2YWx1ZXMubGVuZ3RoOyBpKyspIHsKKwkJCWlmICh2YWx1ZS5lcXVhbHModmFsdWVzW2ldKSkgeworCQkJCXJldHVybiBzZXQoY29tcG9uZW50LCBrZXksIHZhbHVlc1tpXSk7CisJCQl9CisJCX0KKwkJdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigidW5rbm93biAiICsgdmFsdWUgKyAiIGZvciAiICsga2V5KTsKKwl9CisKKwkvKioKKwkgKgorCSAqLworCXByaXZhdGUgYm9vbGVhbiBzZXRJY29uKE9iamVjdCBjb21wb25lbnQsCisJCQlTdHJpbmcga2V5LCBTdHJpbmcgcGF0aCwgSW1hZ2UgZGVmYXVsdHZhbHVlKSB7CisJCXJldHVybiBzZXQoY29tcG9uZW50LCBrZXksIChwYXRoICE9IG51bGwpID8gZ2V0SWNvbihwYXRoKSA6IGRlZmF1bHR2YWx1ZSk7CisJfQorCisJLyoqCisJICoKKwkgKi8KKwlwcml2YXRlIEltYWdlIGdldEljb24oT2JqZWN0IGNvbXBvbmVudCwgU3RyaW5nIGtleSwgSW1hZ2UgZGVmYXVsdHZhbHVlKSB7CisJCU9iamVjdCB2YWx1ZSA9IGdldChjb21wb25lbnQsIGtleSk7CisJCXJldHVybiAodmFsdWUgPT0gbnVsbCkgPyBkZWZhdWx0dmFsdWUgOiAoSW1hZ2UpIHZhbHVlOworCX0KKworCS8qKgorCSAqCisJICovCisJcHJpdmF0ZSBib29sZWFuIHNldEJvb2xlYW4oT2JqZWN0IGNvbXBvbmVudCwKKwkJCVN0cmluZyBrZXksIGJvb2xlYW4gdmFsdWUsIGJvb2xlYW4gZGVmYXVsdHZhbHVlKSB7CisJCXJldHVybiBzZXQoY29tcG9uZW50LCBrZXksICh2YWx1ZSA9PSBkZWZhdWx0dmFsdWUpID8gbnVsbCA6CisJCQkodmFsdWUgPyBCb29sZWFuLlRSVUUgOiBCb29sZWFuLkZBTFNFKSk7CisJfQorCisJLyoqCisJICoKKwkgKi8KKwlwcml2YXRlIGJvb2xlYW4gZ2V0Qm9vbGVhbihPYmplY3QgY29tcG9uZW50LCAKKwkJCVN0cmluZyBrZXksIGJvb2xlYW4gZGVmYXVsdHZhbHVlKSB7CisJCU9iamVjdCB2YWx1ZSA9IGdldChjb21wb25lbnQsIGtleSk7CisJCXJldHVybiAodmFsdWUgPT0gbnVsbCkgPyBkZWZhdWx0dmFsdWUgOiAoKEJvb2xlYW4pIHZhbHVlKS5ib29sZWFuVmFsdWUoKTsKKwl9CisKKwkvKioKKwkgKgorCSAqLworCXByaXZhdGUgYm9vbGVhbiBzZXRJbnRlZ2VyKE9iamVjdCBjb21wb25lbnQsCisJCQlTdHJpbmcga2V5LCBpbnQgdmFsdWUsIGludCBkZWZhdWx0dmFsdWUpIHsKKwkJcmV0dXJuIHNldChjb21wb25lbnQsIGtleSwgKHZhbHVlID09IGRlZmF1bHR2YWx1ZSkgPyBudWxsIDogbmV3IEludGVnZXIodmFsdWUpKTsKKwl9CisKKwkvKioKKwkgKgorCSAqLworCXByaXZhdGUgaW50IGdldEludGVnZXIoT2JqZWN0IGNvbXBvbmVudCwgU3RyaW5nIGtleSwgaW50IGRlZmF1bHR2YWx1ZSkgeworCQlPYmplY3QgdmFsdWUgPSBnZXQoY29tcG9uZW50LCBrZXkpOworCQlyZXR1cm4gKHZhbHVlID09IG51bGwpID8gZGVmYXVsdHZhbHVlIDogKChJbnRlZ2VyKSB2YWx1ZSkuaW50VmFsdWUoKTsKKwl9CisKKwkvKioKKwkgKgorCSAqLworCXByaXZhdGUgdm9pZCBzZXRSZWN0YW5nbGUoT2JqZWN0IGNvbXBvbmVudCwKKwkJCVN0cmluZyBrZXksIGludCB4LCBpbnQgeSwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KSB7CisJCVJlY3RhbmdsZSByZWN0YW5nbGUgPSBnZXRSZWN0YW5nbGUoY29tcG9uZW50LCBrZXkpOworCQlpZiAocmVjdGFuZ2xlICE9IG51bGwpIHsKKwkJCXJlY3RhbmdsZS54ID0geDsgcmVjdGFuZ2xlLnkgPSB5OworCQkJcmVjdGFuZ2xlLndpZHRoID0gd2lkdGg7IHJlY3RhbmdsZS5oZWlnaHQgPSBoZWlnaHQ7CisJCX0KKwkJZWxzZSB7CisJCQlzZXQoY29tcG9uZW50LCBrZXksIG5ldyBSZWN0YW5nbGUoeCwgeSwgd2lkdGgsIGhlaWdodCkpOyAvL2phdmEKKwkJCS8vbWlkcCBzZXQoY29tcG9uZW50LCBrZXksIG5ldyBpbnRbXSB7IHdpZHRoLCBoZWlnaHQsIHgsIHkgfSk7CisJCX0KKwl9CisKKwkvKioKKwkgKgorCSAqLworCXByaXZhdGUgUmVjdGFuZ2xlIGdldFJlY3RhbmdsZShPYmplY3QgY29tcG9uZW50LCBTdHJpbmcga2V5KSB7CisJCXJldHVybiAoUmVjdGFuZ2xlKSBnZXQoY29tcG9uZW50LCBrZXkpOyAvL2phdmEKKwkJLy9taWRwIHJldHVybiAoaW50W10pIGdldChjb21wb25lbnQsIGtleSk7CisJfQorCisJLy8gLS0tLS0gLS0tLS0gLS0tLS0gLS0tLS0gLS0tLS0gLS0tLS0gLS0tLS0gLS0tLS0gLS0tLS0gLS0tLS0gLS0tLS0gLS0tLS0KKworCS8qKgorCSAqCisJICovCisJcHVibGljIEltYWdlIGdldEljb24oU3RyaW5nIHBhdGgpIHsKKwkJcmV0dXJuIGdldEljb24ocGF0aCwgdHJ1ZSk7CisJfQorCisJLyoqCisJICoKKwkgKi8KKwlwdWJsaWMgSW1hZ2UgZ2V0SWNvbihTdHJpbmcgcGF0aCwgYm9vbGVhbiBwcmVsb2FkKSB7CisJCWlmICgocGF0aCA9PSBudWxsKSB8fCAocGF0aC5sZW5ndGgoKSA9PSAwKSkgeworCQkJcmV0dXJuIG51bGw7CisJCX0KKwkJSW1hZ2UgaW1hZ2UgPSBudWxsOyAvLyhJbWFnZSkgaW1hZ2Vwb29sLmdldChwYXRoKTsKKwkJLy9taWRwIHRyeSB7CisJCS8vbWlkcCAJaW1hZ2UgPSBJbWFnZS5jcmVhdGVJbWFnZShwYXRoKTsKKwkJLy9taWRwIH0gY2F0Y2ggKElPRXhjZXB0aW9uIGlvZSkge30KKwkJLy9qYXZhPgorCQl0cnkgeworCQkJaW1hZ2UgPSBUb29sa2l0LmdldERlZmF1bHRUb29sa2l0KCkuZ2V0SW1hZ2UoZ2V0Q2xhc3MoKS5nZXRSZXNvdXJjZShwYXRoKSk7CisJCQkvL2ltYWdlID0gVG9vbGtpdC5nZXREZWZhdWx0VG9vbGtpdCgpLmdldEltYWdlKENsYXNzTG9hZGVyLmdldFN5c3RlbVJlc291cmNlKHBhdGgpKTsKKwkJfSBjYXRjaCAoVGhyb3dhYmxlIGUpIHt9CisJCWlmIChpbWFnZSA9PSBudWxsKSB7CisJCQl0cnkgeworCQkJCUlucHV0U3RyZWFtIGlzID0gZ2V0Q2xhc3MoKS5nZXRSZXNvdXJjZUFzU3RyZWFtKHBhdGgpOworCQkJCS8vSW5wdXRTdHJlYW0gaXMgPSBDbGFzc0xvYWRlci5nZXRTeXN0ZW1SZXNvdXJjZUFzU3RyZWFtKHBhdGgpOworCQkJCWlmIChpcyAhPSBudWxsKSB7CisJCQkJCWJ5dGVbXSBkYXRhID0gbmV3IGJ5dGVbaXMuYXZhaWxhYmxlKCldOworCQkJCQlpcy5yZWFkKGRhdGEsIDAsIGRhdGEubGVuZ3RoKTsKKwkJCQkJaW1hZ2UgPSBnZXRUb29sa2l0KCkuY3JlYXRlSW1hZ2UoZGF0YSk7CisJCQkJCWlzLmNsb3NlKCk7CisJCQkJfQorCQkJfSBjYXRjaCAoVGhyb3dhYmxlIGUpIHt9CisJCX0KKwkJLy9pZiAoaW1hZ2UgPT0gbnVsbCkgeyAvLyBhcHBsZXQgY29kZQorCQkvLwl0cnkgeworCQkvLwkJaW1hZ2UgPSBnZXRJbWFnZShnZXRDb2RlQmFzZSgpLCBwYXRoKTsKKwkJLy8JfSBjYXRjaCAoVGhyb3dhYmxlIGUpIHt9CisJCS8vfQorCQlpZiAocHJlbG9hZCAmJiAoaW1hZ2UgIT0gbnVsbCkpIHsKKwkJCU1lZGlhVHJhY2tlciBtZWRpYXRyYWNrZXIgPSBuZXcgTWVkaWFUcmFja2VyKHRoaXMpOworCQkJbWVkaWF0cmFja2VyLmFkZEltYWdlKGltYWdlLCAxKTsKKwkJCXRyeSB7CisJCQkJbWVkaWF0cmFja2VyLndhaXRGb3JJRCgxLCA1MCk7CisJCQl9IGNhdGNoIChJbnRlcnJ1cHRlZEV4Y2VwdGlvbiBpZSkgeyB9CisJCQkvL2ltYWdlcG9vbC5wdXQocGF0aCwgaW1hZ2UpOworCQl9IAorCQkvLzxqYXZhCisJCXJldHVybiBpbWFnZTsKKwl9CisKKwkvKioKKwkgKgorCSAqLworCXB1YmxpYyBib29sZWFuIGRlc3Ryb3koKSB7CisJCXJldHVybiB0cnVlOworCX0KKworCXByaXZhdGUgc3RhdGljIE9iamVjdFtdIGR0ZDsKKwlzdGF0aWMgeworCQlJbnRlZ2VyIGludGVnZXJfMSA9IG5ldyBJbnRlZ2VyKC0xKTsKKwkJSW50ZWdlciBpbnRlZ2VyMCA9IG5ldyBJbnRlZ2VyKDApOworCQlJbnRlZ2VyIGludGVnZXIxID0gbmV3IEludGVnZXIoMSk7CisJCVN0cmluZ1tdIG9yaWVudGF0aW9uID0geyAiaG9yaXpvbnRhbCIsICJ2ZXJ0aWNhbCIgfTsKKwkJU3RyaW5nW10gbGVmdGNlbnRlcnJpZ2h0ID0geyAibGVmdCIsICJjZW50ZXIiLCAicmlnaHQiIH07CisJCVN0cmluZ1tdIHNlbGVjdGlvbnMgPSB7ICJzaW5nbGUiLCAiaW50ZXJ2YWwiLCAibXVsdGlwbGUiIH07CisJCWR0ZCA9IG5ldyBPYmplY3RbXSB7CisJCQkiY29tcG9uZW50IiwgbnVsbCwgbmV3IE9iamVjdFtdW10geworCQkJCXsgInN0cmluZyIsICJuYW1lIiwgIiIsIG51bGwgfSwKKwkJCQl7ICJib29sZWFuIiwgImVuYWJsZWQiLCAicGFpbnQiLCBCb29sZWFuLlRSVUUgfSwKKwkJCQl7ICJib29sZWFuIiwgInZpc2libGUiLCAicGFyZW50IiwgQm9vbGVhbi5UUlVFIH0sCisJCQkJeyAic3RyaW5nIiwgInRvb2x0aXAiLCAiIiwgbnVsbCB9LAorCQkJCXsgImludGVnZXIiLCAid2lkdGgiLCAidmFsaWRhdGUiLCBpbnRlZ2VyMCB9LAorCQkJCXsgImludGVnZXIiLCAiaGVpZ2h0IiwgInZhbGlkYXRlIiwgaW50ZWdlcjAgfSwKKwkJCQl7ICJpbnRlZ2VyIiwgImNvbHNwYW4iLCAidmFsaWRhdGUiLCBpbnRlZ2VyMSB9LAorCQkJCXsgImludGVnZXIiLCAicm93c3BhbiIsICJ2YWxpZGF0ZSIsIGludGVnZXIxIH0sCisJCQkJeyAiaW50ZWdlciIsICJ3ZWlnaHR4IiwgInZhbGlkYXRlIiwgaW50ZWdlcjAgfSwKKwkJCQl7ICJpbnRlZ2VyIiwgIndlaWdodHkiLCAidmFsaWRhdGUiLCBpbnRlZ2VyMCB9LAorCQkJCXsgImNob2ljZSIsICJoYWxpZ24iLCAidmFsaWRhdGUiLAorCQkJCQluZXcgU3RyaW5nW10geyAiZmlsbCIsICJjZW50ZXIiLCAibGVmdCIsICJyaWdodCIgfSB9LAorCQkJCXsgImNob2ljZSIsICJ2YWxpZ24iLCAidmFsaWRhdGUiLAorCQkJCQluZXcgU3RyaW5nW10geyAiZmlsbCIsICJjZW50ZXIiLCAidG9wIiwgImJvdHRvbSIgfSB9CisJCQkJLy8gY29tcG9uZW50IGNsYXNzIFN0cmluZyBudWxsKgorCQkJCS8vIHBhcmVudCBPYmplY3QgbnVsbAorCQkJCS8vIChib3VuZHMpIFJlY3RhbmdsZSAwIDAgMCAwCisJCQl9LAorCQkJImxhYmVsIiwgImNvbXBvbmVudCIsIG5ldyBPYmplY3RbXVtdIHsKKwkJCQl7ICJzdHJpbmciLCAidGV4dCIsICJ2YWxpZGF0ZSIsIG51bGwgfSwKKwkJCQl7ICJpY29uIiwgImljb24iLCAidmFsaWRhdGUiLCBudWxsIH0sCisJCQkgCXsgImNob2ljZSIsICJhbGlnbm1lbnQiLCAidmFsaWRhdGUiLCBsZWZ0Y2VudGVycmlnaHQgfSwKKwkJCSAJeyAiaW50ZWdlciIsICJtbmVtb25pYyIsICJwYWludCIsIGludGVnZXJfMSB9IH0sCisJCQkiYnV0dG9uIiwgImxhYmVsIiwgbmV3IE9iamVjdFtdW10geworCQkJIAl7ICJjaG9pY2UiLCAiYWxpZ25tZW50IiwgInZhbGlkYXRlIiwgbmV3IFN0cmluZ1tdIHsgImNlbnRlciIsICJsZWZ0IiwgInJpZ2h0IiB9IH0sCisJCQkJeyAibWV0aG9kIiwgImFjdGlvbiIsICIiLCBudWxsIH0sCisJCQkJLy97ICJjaG9pY2UiLCAidHlwZSIsICIiLCBuZXcgU3RyaW5nW10geyAibm9ybWFsIiwgImRlZmF1bHQiLCAiY2FuY2VsIiB9IH0KKwkJCQl9LC8vLi4uCisJCQkiY2hlY2tib3giLCAibGFiZWwiLCBuZXcgT2JqZWN0W11bXSB7CisJCQkJeyAiYm9vbGVhbiIsICJzZWxlY3RlZCIsICJwYWludCIsIEJvb2xlYW4uRkFMU0UgfSwgLy8uLi5ncm91cAorCQkJCXsgInN0cmluZyIsICJncm91cCIsICJwYWludCIsIG51bGwgfSwgLy8uLi5ncm91cAorCQkJCXsgIm1ldGhvZCIsICJhY3Rpb24iLCAiIiwgbnVsbCB9IH0sCisJCQkiY29tYm9ib3giLCAidGV4dGZpZWxkIiwgbmV3IE9iamVjdFtdW10geworCQkJCXsgImljb24iLCAiaWNvbiIsICJ2YWxpZGF0ZSIsIG51bGwgfSwKKwkJCQl7ICJpbnRlZ2VyIiwgInNlbGVjdGVkIiwgImxheW91dCIsIGludGVnZXJfMSB9IH0sCisJCQkiY2hvaWNlIiwgbnVsbCwgbmV3IE9iamVjdFtdW10geworCQkJCXsgInN0cmluZyIsICJuYW1lIiwgIiIsIG51bGwgfSwKKwkJCQl7ICJib29sZWFuIiwgImVuYWJsZWQiLCAicGFpbnQiLCBCb29sZWFuLlRSVUUgfSwKKwkJCQl7ICJzdHJpbmciLCAidGV4dCIsICIiLCBudWxsIH0sCisJCQkJeyAiaWNvbiIsICJpY29uIiwgIiIsIG51bGwgfSwKKwkJCQl7ICJjaG9pY2UiLCAiYWxpZ25tZW50IiwgIiIsIGxlZnRjZW50ZXJyaWdodCB9LAorCQkJCXsgInN0cmluZyIsICJ0b29sdGlwIiwgIiIsIG51bGwgfSB9LAorCQkJInRleHRmaWVsZCIsICJjb21wb25lbnQiLCBuZXcgT2JqZWN0W11bXSB7CisJCQkJeyAic3RyaW5nIiwgInRleHQiLCAibGF5b3V0IiwgIiIgfSwKKwkJCQl7ICJpbnRlZ2VyIiwgImNvbHVtbnMiLCAidmFsaWRhdGUiLCBpbnRlZ2VyMCB9LAorCQkJCXsgImJvb2xlYW4iLCAiZWRpdGFibGUiLCAicGFpbnQiLCBCb29sZWFuLlRSVUUgfSwKKwkJCQl7ICJpbnRlZ2VyIiwgInN0YXJ0IiwgImxheW91dCIsIGludGVnZXIwIH0sCisJCQkJeyAiaW50ZWdlciIsICJlbmQiLCAibGF5b3V0IiwgaW50ZWdlcjAgfSwKKwkJCQl7ICJtZXRob2QiLCAiYWN0aW9uIiwgIiIsIG51bGwgfSB9LAorCQkJInBhc3N3b3JkZmllbGQiLCAidGV4dGZpZWxkIiwgbmV3IE9iamVjdFtdW10ge30sCisJCQkidGV4dGFyZWEiLCAidGV4dGZpZWxkIiwgbmV3IE9iamVjdFtdW10geworCQkJCXsgImludGVnZXIiLCAicm93cyIsICJ2YWxpZGF0ZSIsIGludGVnZXIwIH0sCisJCQkJeyAiYm9vbGVhbiIsICJ3cmFwIiwgImxheW91dCIsIEJvb2xlYW4uRkFMU0UgfSB9LAorCQkJInRhYmJlZHBhbmUiLCAiY29tcG9uZW50IiwgbmV3IE9iamVjdFtdW10geworCQkJCXsgImNob2ljZSIsICJwbGFjZW1lbnQiLCAidmFsaWRhdGUiLAorCQkJCQluZXcgU3RyaW5nW10geyAidG9wIiwgImxlZnQiLCAiYm90dG9tIiwgInJpZ2h0IiB9IH0sCisJCQkJeyAiaW50ZWdlciIsICJzZWxlY3RlZCIsICJwYWludCIsIGludGVnZXIwIH0sCisJCQkJeyAibWV0aG9kIiwgImFjdGlvbiIsICIiLCBudWxsIH0gfSwgLy8uLi5mb2N1cworCQkJInRhYiIsICJjaG9pY2UiLCBuZXcgT2JqZWN0W11bXSB7CisJCQkJeyAiaW50ZWdlciIsICJtbmVtb25pYyIsICJwYWludCIsIGludGVnZXJfMSB9IH0sCisJCQkicGFuZWwiLCAiY29tcG9uZW50IiwgbmV3IE9iamVjdFtdW10geworCQkJCXsgImludGVnZXIiLCAiY29sdW1ucyIsICJ2YWxpZGF0ZSIsIGludGVnZXIwIH0sCisJCQkJeyAiaW50ZWdlciIsICJ0b3AiLCAidmFsaWRhdGUiLCBpbnRlZ2VyMCB9LAorCQkJCXsgImludGVnZXIiLCAibGVmdCIsICJ2YWxpZGF0ZSIsIGludGVnZXIwIH0sCisJCQkJeyAiaW50ZWdlciIsICJib3R0b20iLCAidmFsaWRhdGUiLCBpbnRlZ2VyMCB9LAorCQkJCXsgImludGVnZXIiLCAicmlnaHQiLCAidmFsaWRhdGUiLCBpbnRlZ2VyMCB9LAorCQkJCXsgImludGVnZXIiLCAiZ2FwIiwgInZhbGlkYXRlIiwgaW50ZWdlcjAgfSB9LAorCQkJImRlc2t0b3AiLCAiY29tcG9uZW50IiwgbmV3IE9iamVjdFtdW10ge30sCisJCQkiZGlhbG9nIiwgInBhbmVsIiwgbmV3IE9iamVjdFtdW10geworCQkJCXsgInN0cmluZyIsICJ0ZXh0IiwgIiIsIG51bGwgfSwKKwkJCQl7ICJpY29uIiwgImljb24iLCAiIiwgbnVsbCB9LAorCQkJCXsgImJvb2xlYW4iLCAibW9kYWwiLCAiIiwgQm9vbGVhbi5GQUxTRSB9IH0sCisJCQkic3BpbmJveCIsICJ0ZXh0ZmllbGQiLCBuZXcgT2JqZWN0W11bXSB7fSwgLy8uLi4KKwkJCSJwcm9ncmVzc2JhciIsICJjb21wb25lbnQiLCBuZXcgT2JqZWN0W11bXSB7CisJCQkJeyAiY2hvaWNlIiwgIm9yaWVudGF0aW9uIiwgInZhbGlkYXRlIiwgb3JpZW50YXRpb24gfSwKKwkJCQl7ICJpbnRlZ2VyIiwgIm1pbmltdW0iLCAicGFpbnQiLCBpbnRlZ2VyMCB9LCAvLy4uLmNoZWNrdmFsdWUKKwkJCQl7ICJpbnRlZ2VyIiwgIm1heGltdW0iLCAicGFpbnQiLCBuZXcgSW50ZWdlcigxMDApIH0sCisJCQkJeyAiaW50ZWdlciIsICJ2YWx1ZSIsICJwYWludCIsIGludGVnZXIwIH0gfSwKKwkJCQkvLyBjaGFuZ2Ugc3RyaW5ncGFpbnRlZAorCQkJInNsaWRlciIsICJwcm9ncmVzc2JhciIsIG5ldyBPYmplY3RbXVtdIHsKKwkJCQl7ICJpbnRlZ2VyIiwgInVuaXQiLCAiIiwgbmV3IEludGVnZXIoNSkgfSwKKwkJCQl7ICJpbnRlZ2VyIiwgImJsb2NrIiwgIiIsIG5ldyBJbnRlZ2VyKDI1KSB9LAorCQkJCXsgIm1ldGhvZCIsICJhY3Rpb24iLCAiIiwgbnVsbCB9IH0sCisJCQkJLy8gbWlub3IvbWFqb3J0aWNrc3BhY2luZworCQkJCS8vIGludmVydGVkCisJCQkJLy8gbGFiZWxpbmNyZW1lbnQgbGFiZWxzdGFydAorCQkJInNwbGl0cGFuZSIsICJjb21wb25lbnQiLCBuZXcgT2JqZWN0W11bXSB7CisJCQkJeyAiY2hvaWNlIiwgIm9yaWVudGF0aW9uIiwgInZhbGlkYXRlIiwgb3JpZW50YXRpb24gfSwKKwkJCQl7ICJpbnRlZ2VyIiwgImRpdmlkZXIiLCAibGF5b3V0IiwgaW50ZWdlcl8xIH0gfSwKKwkJCSJsaXN0IiwgImNvbXBvbmVudCIsIG5ldyBPYmplY3RbXVtdIHsKKwkJCQl7ICJjaG9pY2UiLCAic2VsZWN0aW9uIiwgInBhaW50Iiwgc2VsZWN0aW9ucyB9LAorCQkJCXsgIm1ldGhvZCIsICJhY3Rpb24iLCAiIiwgbnVsbCB9IH0sIC8vLi4uPworCQkJIml0ZW0iLCAiY2hvaWNlIiwgbmV3IE9iamVjdFtdW10geworCQkJCXsgImJvb2xlYW4iLCAic2VsZWN0ZWQiLCAiIiwgQm9vbGVhbi5GQUxTRSB9IH0sCisJCQkidGFibGUiLCAiY29tcG9uZW50IiwgbmV3IE9iamVjdFtdW10geworCQkJCXsgImNob2ljZSIsICJzZWxlY3Rpb24iLCAicGFpbnQiLCBzZWxlY3Rpb25zIH0sCisJCQkJeyAibWV0aG9kIiwgImFjdGlvbiIsICIiLCBudWxsIH0KKwkJCQkvKnsgImNob2ljZSIsICJzZWxlY3Rpb24iLAorCQkJCQluZXcgU3RyaW5nW10geyAic2luZ2xlcm93IiwgInJvd2ludGVydmFsIiwgIm11bHRpcGxlcm93IiwKKwkJCQkJCSJjZWxsIiwgImNlbGxpbnRlcnZhbCIsCisJCQkJCQkic2luZ2xlY29sdW1uIiwgImNvbHVtbmludGVydmFsIiwgIm11bHRpcGxlY29sdW1uIiB9IH0qLyB9LAorCQkJImNvbHVtbiIsICJjaG9pY2UiLCBuZXcgT2JqZWN0W11bXSB7CisJCQkJeyAiaW50ZWdlciIsICJ3aWR0aCIsICIiLCBuZXcgSW50ZWdlcig4MCkgfX0sCisJCQkicm93IiwgbnVsbCwgbmV3IE9iamVjdFtdW10geworCQkJCXsgImJvb2xlYW4iLCAic2VsZWN0ZWQiLCAiIiwgQm9vbGVhbi5GQUxTRSB9IH0sCisJCQkiY2VsbCIsICJjaG9pY2UiLCBuZXcgT2JqZWN0W11bXSB7fSwKKwkJCSJ0cmVlIiwgImNvbXBvbmVudCIsIG5ldyBPYmplY3RbXVtdIHsKKwkJCQl7ICJjaG9pY2UiLCAic2VsZWN0aW9uIiwgInBhaW50Iiwgc2VsZWN0aW9ucyB9LAorCQkJCXsgIm1ldGhvZCIsICJhY3Rpb24iLCAiIiwgbnVsbCB9LAorCQkJCXsgIm1ldGhvZCIsICJleHBhbmQiLCAiIiwgbnVsbCB9LAorCQkJCXsgIm1ldGhvZCIsICJjb2xsYXBzZSIsICIiLCBudWxsIH0gfSwKKwkJCSJub2RlIiwgImNob2ljZSIsIG5ldyBPYmplY3RbXVtdIHsKKwkJCQl7ICJib29sZWFuIiwgInNlbGVjdGVkIiwgIiIsIEJvb2xlYW4uRkFMU0UgfSwKKwkJCQl7ICJib29sZWFuIiwgImV4cGFuZGVkIiwgIiIsIEJvb2xlYW4uVFJVRSB9IH0sCisJCQkic2VwYXJhdG9yIiwgImNvbXBvbmVudCIsIG5ldyBPYmplY3RbXVtdIHt9LAorCQkJIm1lbnViYXIiLCAiY29tcG9uZW50IiwgbmV3IE9iamVjdFtdW10ge30sCisJCQkibWVudSIsICJjaG9pY2UiLCBuZXcgT2JqZWN0W11bXSB7CisJCQkJeyAiaW50ZWdlciIsICJtbmVtb25pYyIsICJwYWludCIsIGludGVnZXJfMSB9IH0sCisJCQkibWVudWl0ZW0iLCAiY2hvaWNlIiwgbmV3IE9iamVjdFtdW10geworCQkJCXsgInN0cmluZyIsICJhY2NlbGVyYXRvciIsICIiLCBudWxsIH0sCisJCQkJeyAibWV0aG9kIiwgImFjdGlvbiIsICIiLCBudWxsIH0sCisJCQkJeyAiaW50ZWdlciIsICJtbmVtb25pYyIsICJwYWludCIsIGludGVnZXJfMSB9CisJCQkJLy8uLi4gS2V5U3Ryb2tlPWtleUNvZGUrbW9kaWZpZXJzKFNISUZUIENUUkwgTUVUQSBBTFRfTUFTSykKKwkJCX0sCisJCQkiY2hlY2tib3htZW51aXRlbSIsICJtZW51aXRlbSIsIG5ldyBPYmplY3RbXVtdIHsKKwkJCQl7ICJib29sZWFuIiwgInNlbGVjdGVkIiwgInBhaW50IiwgQm9vbGVhbi5GQUxTRSB9LCAvLy4uLmdyb3VwCisJCQkJeyAic3RyaW5nIiwgImdyb3VwIiwgInBhaW50IiwgbnVsbCB9IH0sIC8vLi4uZ3JvdXAKKwkJCSJiZWFuIiwgImNvbXBvbmVudCIsIG5ldyBPYmplY3RbXVtdIHsKKwkJCQl7ICJiZWFuIiwgImJlYW4iLCAiIiwgbnVsbCB9CisJCQl9CisJCX07CisJfQkKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nL2FUaGlubGV0X2hsLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9hVGhpbmxldF9obC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhhY2EwNWEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9hVGhpbmxldF9obC5qYXZhCkBAIC0wLDAgKzEsNTM5MyBAQAorLyoKKwlUaGlubGV0IEdVSSB0b29sa2l0IC0gd3d3LnRoaW5sZXQuY29tCisJQ29weXJpZ2h0IChDKSAyMDAyIFJvYmVydCBCYWp6YXQgKHJvYmVydC5iYWp6YXRAdGhpbmxldC5jb20pCisKKwlUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisJbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworCUxpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorCXZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisJVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisJYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKwlNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorCUxlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKwlZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisJTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorCUZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EKKyovCisKKy8vcGFja2FnZSB0aGlubGV0OyAvL2phdmEKKy8vbWlkcCBwYWNrYWdlIHRoaW5sZXQubWlkcDsKKworaW1wb3J0IGphdmEuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ2FwcGxldCciPmFwcGxldDwvZXJyb3I+Lio7IC8vamF2YQoraW1wb3J0IGphdmEuYXd0Lio7IC8vamF2YQoraW1wb3J0IGphdmEuYXd0LjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdkYXRhdHJhbnNmZXInIj5kYXRhdHJhbnNmZXI8L2Vycm9yPi4qOyAvL2phdmEKK2ltcG9ydCBqYXZhLmF3dC48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnaW1hZ2UnIj5pbWFnZTwvZXJyb3I+Lio7IC8vamF2YQoraW1wb3J0IGphdmEuYXd0LmV2ZW50Lio7IC8vamF2YQoraW1wb3J0IGphdmEubGFuZy5yZWZsZWN0Lio7IC8vamF2YQoraW1wb3J0IGphdmEuaW8uKjsKK2ltcG9ydCBqYXZhLm5ldC4qOyAvL2phdmEKK2ltcG9ydCBqYXZhLnV0aWwuKjsKKy8vbWlkcCBpbXBvcnQgamF2YXgubWljcm9lZGl0aW9uLmxjZHVpLio7CisvL21pZHAgaW1wb3J0IGphdmF4Lm1pY3JvZWRpdGlvbi5taWRsZXQuKjsKKworLyoqCisgKgorICovCitwdWJsaWMgY2xhc3MgVGhpbmxldCBleHRlbmRzIENvbnRhaW5lciAvL2phdmEKKwlpbXBsZW1lbnRzIFJ1bm5hYmxlLCBTZXJpYWxpemFibGUgeyAvL2phdmEKKy8vbWlkcCBwdWJsaWMgY2xhc3MgVGhpbmxldCBleHRlbmRzIENhbnZhcyBpbXBsZW1lbnRzIENvbW1hbmRMaXN0ZW5lciB7CisKKwkvL21pZHAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgQm9vbGVhbiBUUlVFID0gbmV3IEJvb2xlYW4odHJ1ZSk7CisJLy9taWRwIHByaXZhdGUgc3RhdGljIGZpbmFsIEJvb2xlYW4gRkFMU0UgPSBuZXcgQm9vbGVhbihmYWxzZSk7CisKKwkvL21pZHAgcHJpdmF0ZSB0cmFuc2llbnQgRm9udCBmb250OworCXByaXZhdGUgdHJhbnNpZW50IDxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdDb2xvciciPkNvbG9yPC9lcnJvcj4gY19iZzsKKwlwcml2YXRlIHRyYW5zaWVudCA8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnQ29sb3InIj5Db2xvcjwvZXJyb3I+IGNfdGV4dDsKKwlwcml2YXRlIHRyYW5zaWVudCA8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnQ29sb3InIj5Db2xvcjwvZXJyb3I+IGNfdGV4dGJnOworCXByaXZhdGUgdHJhbnNpZW50IDxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdDb2xvciciPkNvbG9yPC9lcnJvcj4gY19ib3JkZXI7CisJcHJpdmF0ZSB0cmFuc2llbnQgPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ0NvbG9yJyI+Q29sb3I8L2Vycm9yPiBjX2Rpc2FibGU7CisJcHJpdmF0ZSB0cmFuc2llbnQgPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ0NvbG9yJyI+Q29sb3I8L2Vycm9yPiBjX2hvdmVyOworCXByaXZhdGUgdHJhbnNpZW50IDxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdDb2xvciciPkNvbG9yPC9lcnJvcj4gY19wcmVzczsKKwlwcml2YXRlIHRyYW5zaWVudCA8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnQ29sb3InIj5Db2xvcjwvZXJyb3I+IGNfZm9jdXM7CisJcHJpdmF0ZSB0cmFuc2llbnQgPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ0NvbG9yJyI+Q29sb3I8L2Vycm9yPiBjX3NlbGVjdDsKKwlwcml2YXRlIHRyYW5zaWVudCA8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnQ29sb3InIj5Db2xvcjwvZXJyb3I+IGNfY3RybCA9IG51bGw7IC8vamF2YQorCS8vbWlkcCBwcml2YXRlIHRyYW5zaWVudCBDb2xvciBjX2N0cmw7CisJcHJpdmF0ZSB0cmFuc2llbnQgaW50IGJsb2NrOworCXByaXZhdGUgdHJhbnNpZW50IDxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdJbWFnZSciPkltYWdlPC9lcnJvcj4gZ3JhZGllbnQ7IC8vamF2YQorCXsKKwkJc2V0Rm9udChuZXcgPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ0ZvbnQnIj5Gb250PC9lcnJvcj4oIlNhbnNTZXJpZiIsIDxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdGb250JyI+Rm9udDwvZXJyb3I+LlBMQUlOLCAxMikpOyAvL2phdmEKKwkJLy9taWRwIHNldEZvbnQoRm9udC5nZXREZWZhdWx0Rm9udCgpKTsKKwkJc2V0Q29sb3JzKDB4ZTZlNmU2LCAweDAwMDAwMCwgMHhmZmZmZmYsCisJCQkweDkwOTA5MCwgMHhiMGIwYjAsIDB4ZWRlZGVkLCAweGI5YjliOSwgMHg4OTg5OWEsIDB4YzVjNWRkKTsgLy8gZjk5MjM3IGVhYzE2YSAvLyBlNjhiMmMgZmZjNzNjCisJfQorCisJcHJpdmF0ZSB0cmFuc2llbnQgVGhyZWFkIHRpbWVyOworCXByaXZhdGUgdHJhbnNpZW50IGxvbmcgd2F0Y2hkZWxheTsKKwlwcml2YXRlIHRyYW5zaWVudCBsb25nIHdhdGNoOworCXByaXZhdGUgdHJhbnNpZW50IFN0cmluZyBjbGlwYm9hcmQ7CisKKwlwcml2YXRlIE9iamVjdCBjb250ZW50ID0gY3JlYXRlSW1wbCgiZGVza3RvcCIpOworCXByaXZhdGUgdHJhbnNpZW50IE9iamVjdCBtb3VzZWluc2lkZTsKKwlwcml2YXRlIHRyYW5zaWVudCBPYmplY3QgaW5zaWRlcGFydDsKKwlwcml2YXRlIHRyYW5zaWVudCBPYmplY3QgbW91c2VwcmVzc2VkOworCXByaXZhdGUgdHJhbnNpZW50IE9iamVjdCBwcmVzc2VkcGFydDsKKwlwcml2YXRlIHRyYW5zaWVudCBpbnQgcmVmZXJlbmNleCwgcmVmZXJlbmNleTsKKwlwcml2YXRlIHRyYW5zaWVudCBpbnQgbW91c2V4LCBtb3VzZXk7CisJcHJpdmF0ZSB0cmFuc2llbnQgT2JqZWN0IGZvY3Vzb3duZXI7CisJcHJpdmF0ZSB0cmFuc2llbnQgYm9vbGVhbiBmb2N1c2luc2lkZTsgLy9taWRwIHsgZm9jdXNpbnNpZGUgPSB0cnVlOyB9CisJcHJpdmF0ZSB0cmFuc2llbnQgT2JqZWN0IHBvcHVwb3duZXI7CisJcHJpdmF0ZSB0cmFuc2llbnQgT2JqZWN0IHRvb2x0aXBvd25lcjsKKwkvL3ByaXZhdGUgdHJhbnNpZW50IGludCBwcmVzc2Vka2V5OworCisJLy9qYXZhPgorCXByaXZhdGUgc3RhdGljIGZpbmFsIGludCBEUkFHX0VOVEVSRUQgPSA8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnQVdURXZlbnQnIj5BV1RFdmVudDwvZXJyb3I+LlJFU0VSVkVEX0lEX01BWCArIDE7CisJcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IERSQUdfRVhJVEVEID0gPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ0FXVEV2ZW50JyI+QVdURXZlbnQ8L2Vycm9yPi5SRVNFUlZFRF9JRF9NQVggKyAyOworCisJcHJpdmF0ZSBzdGF0aWMgbG9uZyBXSEVFTF9NQVNLID0gMDsKKwlwcml2YXRlIHN0YXRpYyBpbnQgTU9VU0VfV0hFRUwgPSAwOworCXByaXZhdGUgc3RhdGljIDxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdNZXRob2QnIj5NZXRob2Q8L2Vycm9yPiB3aGVlbHJvdGF0aW9uID0gbnVsbDsKKwlzdGF0aWMgeworCQl0cnkgeworCQkJV0hFRUxfTUFTSyA9IDxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdBV1RFdmVudCciPkFXVEV2ZW50PC9lcnJvcj4uY2xhc3MuZ2V0RmllbGQoIk1PVVNFX1dIRUVMX0VWRU5UX01BU0siKS5nZXRMb25nKG51bGwpOworCQkJTU9VU0VfV0hFRUwgPSA8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnTW91c2VFdmVudCciPk1vdXNlRXZlbnQ8L2Vycm9yPi5jbGFzcy5nZXRGaWVsZCgiTU9VU0VfV0hFRUwiKS5nZXRJbnQobnVsbCk7CisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBleGMpIHsgLyogbm90IDEuNCAqLyB9CisJfQorCXsKKwkJaWYgKE1PVVNFX1dIRUVMICE9IDApIHsgLy8gZGlzYWJsZSBnbG9iYWwgZm9jdXMtbWFuYWdlciBmb3IgdGhpcyBjb21wb25lbnQgaW4gMS40CisJCQl0cnkgeworCQkJCWdldENsYXNzKCkuZ2V0TWV0aG9kKCJzZXRGb2N1c1RyYXZlcnNhbEtleXNFbmFibGVkIiwgbmV3IENsYXNzW10geyBCb29sZWFuLlRZUEUgfSkuCisJCQkJCTxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgbWV0aG9kICdpbnZva2UoVGhpbmxldCwgamF2YS5sYW5nLk9iamVjdFtdKSciPmludm9rZTwvZXJyb3I+KHRoaXMsIG5ldyBPYmplY3RbXSB7IEJvb2xlYW4uRkFMU0UgfSk7CisJCQl9IGNhdGNoIChFeGNlcHRpb24gZXhjKSB7IC8qIG5ldmVyICovIH0KKwkJfQorCQllbmFibGVFdmVudHMoPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ0FXVEV2ZW50JyI+QVdURXZlbnQ8L2Vycm9yPi5DT01QT05FTlRfRVZFTlRfTUFTSyB8CisJCQk8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnQVdURXZlbnQnIj5BV1RFdmVudDwvZXJyb3I+LkZPQ1VTX0VWRU5UX01BU0sgfCA8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnQVdURXZlbnQnIj5BV1RFdmVudDwvZXJyb3I+LktFWV9FVkVOVF9NQVNLIHwKKwkJCTxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdBV1RFdmVudCciPkFXVEV2ZW50PC9lcnJvcj4uTU9VU0VfRVZFTlRfTUFTSyB8IDxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdBV1RFdmVudCciPkFXVEV2ZW50PC9lcnJvcj4uTU9VU0VfTU9USU9OX0VWRU5UX01BU0sgfCBXSEVFTF9NQVNLKTsKKwl9CisJLy88amF2YQorCisJLyoqCisJICoKKwkgKi8KKwlwdWJsaWMgdm9pZCBzZXRDb2xvcnMoaW50IGJhY2tncm91bmQsIGludCB0ZXh0LCBpbnQgdGV4dGJhY2tncm91bmQsCisJCQlpbnQgYm9yZGVyLCBpbnQgZGlzYWJsZSwgaW50IGhvdmVyLCBpbnQgcHJlc3MsCisJCQlpbnQgZm9jdXMsIGludCBzZWxlY3QpIHsKKwkJY19iZyA9IG5ldyA8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnQ29sb3InIj5Db2xvcjwvZXJyb3I+KGJhY2tncm91bmQpOyBjX3RleHQgPSBuZXcgPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ0NvbG9yJyI+Q29sb3I8L2Vycm9yPih0ZXh0KTsKKwkJY190ZXh0YmcgPSBuZXcgPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ0NvbG9yJyI+Q29sb3I8L2Vycm9yPih0ZXh0YmFja2dyb3VuZCk7IGNfYm9yZGVyID0gbmV3IDxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdDb2xvciciPkNvbG9yPC9lcnJvcj4oYm9yZGVyKTsKKwkJY19kaXNhYmxlID0gbmV3IDxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdDb2xvciciPkNvbG9yPC9lcnJvcj4oZGlzYWJsZSk7IGNfaG92ZXIgPSBuZXcgPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ0NvbG9yJyI+Q29sb3I8L2Vycm9yPihob3Zlcik7CisJCWNfcHJlc3MgPSBuZXcgPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ0NvbG9yJyI+Q29sb3I8L2Vycm9yPihwcmVzcyk7IGNfZm9jdXMgPSBuZXcgPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ0NvbG9yJyI+Q29sb3I8L2Vycm9yPihmb2N1cyk7CisJCWNfc2VsZWN0ID0gbmV3IDxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdDb2xvciciPkNvbG9yPC9lcnJvcj4oc2VsZWN0KTsKKwkJLy9taWRwIGNfY3RybCA9IGNfaG92ZXI7CisJCS8vamF2YT4KKwkJaW50W10gcGl4ID0gbmV3IGludFtibG9jayAqIGJsb2NrXTsKKwkJaW50IHIxID0gY19iZy48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIG1ldGhvZCAnZ2V0UmVkKCknIj5nZXRSZWQ8L2Vycm9yPigpOyBpbnQgcjIgPSBjX3ByZXNzLjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgbWV0aG9kICdnZXRSZWQoKSciPmdldFJlZDwvZXJyb3I+KCk7CisJCWludCBnMSA9IGNfYmcuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBtZXRob2QgJ2dldEdyZWVuKCknIj5nZXRHcmVlbjwvZXJyb3I+KCk7IGludCBnMiA9IGNfcHJlc3MuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBtZXRob2QgJ2dldEdyZWVuKCknIj5nZXRHcmVlbjwvZXJyb3I+KCk7CisJCWludCBiMSA9IGNfYmcuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBtZXRob2QgJ2dldEJsdWUoKSciPmdldEJsdWU8L2Vycm9yPigpOyBpbnQgYjIgPSBjX3ByZXNzLjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgbWV0aG9kICdnZXRCbHVlKCknIj5nZXRCbHVlPC9lcnJvcj4oKTsKKwkJZm9yIChpbnQgaSA9IDA7IGkgPCBibG9jazsgaSsrKSB7CisJCQlpbnQgciA9IHIxIC0gKHIxIC0gcjIpICogaSAvIGJsb2NrOworCQkJaW50IGcgPSBnMSAtIChnMSAtIGcyKSAqIGkgLyBibG9jazsKKwkJCWludCBiID0gYjEgLSAoYjEgLSBiMikgKiBpIC8gYmxvY2s7CisJCQlpbnQgY29sb3IgPSAoMjU1IDw8IDI0KSB8IChyIDw8IDE2KSB8IChnIDw8IDgpIHwgYjsKKwkJCWZvciAoaW50IGogPSAwOyBqIDwgYmxvY2s7IGorKykgeworCQkJCXBpeFtpICogYmxvY2sgKyBqXSA9IGNvbG9yOworCQkJCS8vcGl4W2ogKiBibG9jayArIGldID0gY29sb3I7CisJCQl9CisJCX0KKwkJZ3JhZGllbnQgPSBjcmVhdGVJbWFnZShuZXcgPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ01lbW9yeUltYWdlU291cmNlJyI+TWVtb3J5SW1hZ2VTb3VyY2U8L2Vycm9yPihibG9jaywgYmxvY2ssIHBpeCwgMCwgYmxvY2spKTsKKwkJLy88amF2YQorCX0KKworCS8qKgorCSAqCisJICovCisJcHVibGljIHZvaWQgc2V0Rm9udCg8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnRm9udCciPkZvbnQ8L2Vycm9yPiBmb250KSB7CisJCWJsb2NrID0gZ2V0Rm9udE1ldHJpY3MoZm9udCkuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBtZXRob2QgJ2dldEhlaWdodCgpJyI+Z2V0SGVpZ2h0PC9lcnJvcj4oKTsgLy9qYXZhCisJCXN1cGVyLnNldEZvbnQoZm9udCk7IC8vamF2YQorCQkvL21pZHAgYmxvY2sgPSBmb250LmdldEhlaWdodCgpOworCQkvL21pZHAgdGhpcy5mb250ID0gZm9udDsKKwl9CisKKwkvKioKKwkgKgorCSAqLworCXByaXZhdGUgdm9pZCBkb0xheW91dChPYmplY3QgY29tcG9uZW50KSB7CisJCVN0cmluZyBjbGFzc25hbWUgPSBnZXRDbGFzcyhjb21wb25lbnQpOworCQlpZiAoImNvbWJvYm94IiA9PSBjbGFzc25hbWUpIHsKKwkJCWlmIChnZXRCb29sZWFuKGNvbXBvbmVudCwgImVkaXRhYmxlIiwgdHJ1ZSkpIHsKKwkJCQk8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnSW1hZ2UnIj5JbWFnZTwvZXJyb3I+IGljb24gPSBnZXRJY29uKGNvbXBvbmVudCwgImljb24iLCBudWxsKTsKKwkJCQlsYXlvdXRGaWVsZChjb21wb25lbnQsIGJsb2NrLCBmYWxzZSwKKwkJCQkJKGljb24gIT0gbnVsbCkgPyBpY29uLjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgbWV0aG9kICdnZXRXaWR0aChUaGlubGV0KSciPmdldFdpZHRoPC9lcnJvcj4odGhpcykgOiAwKTsKKwkJCX0gLy8gc2V0IGVkaXRhYmxlIC0+IHZhbGlkYXRlIChvdmVyd3JpdGUgdGV4dGZpZWxkIHJlcGFpbnQpCisJCQllbHNlIHsKKwkJCQlpbnQgc2VsZWN0ZWQgPSBnZXRJbnRlZ2VyKGNvbXBvbmVudCwgInNlbGVjdGVkIiwgLTEpOworCQkJCWlmIChzZWxlY3RlZCAhPSAtMSkgeworCQkJCQlPYmplY3QgY2hvaWNlID0gZ2V0SXRlbShjb21wb25lbnQsICJjaG9pY2UiLCBzZWxlY3RlZCk7CisJCQkJCXNldChjb21wb25lbnQsICJ0ZXh0IiwgZ2V0KGNob2ljZSwgInRleHQiKSk7CisJCQkJCXNldChjb21wb25lbnQsICJpY29uIiwgZ2V0KGNob2ljZSwgImljb24iKSk7CisJCQkJfQorCQkJfQorCQl9CisJCWVsc2UgaWYgKCgidGV4dGZpZWxkIiA9PSBjbGFzc25hbWUpIHx8ICgicGFzc3dvcmRmaWVsZCIgPT0gY2xhc3NuYW1lKSkgeworCQkJbGF5b3V0RmllbGQoY29tcG9uZW50LCAwLCAoInBhc3N3b3JkZmllbGQiID09IGNsYXNzbmFtZSksIDApOworCQl9CisJCWVsc2UgaWYgKCJ0ZXh0YXJlYSIgPT0gY2xhc3NuYW1lKSB7CisJCQlTdHJpbmcgdGV4dCA9IGdldFN0cmluZyhjb21wb25lbnQsICJ0ZXh0IiwgIiIpOworCQkJaW50IHN0YXJ0ID0gZ2V0SW50ZWdlcihjb21wb25lbnQsICJzdGFydCIsIDApOworCQkJaWYgKHN0YXJ0ID4gdGV4dC5sZW5ndGgoKSkgeyBzZXRJbnRlZ2VyKGNvbXBvbmVudCwgInN0YXJ0Iiwgc3RhcnQgPSB0ZXh0Lmxlbmd0aCgpLCAwKTsgfQorCQkJaW50IGVuZCA9IGdldEludGVnZXIoY29tcG9uZW50LCAiZW5kIiwgMCk7CisJCQlpZiAoZW5kID4gdGV4dC5sZW5ndGgoKSkgeyBzZXRJbnRlZ2VyKGNvbXBvbmVudCwgImVuZCIsIGVuZCA9IHRleHQubGVuZ3RoKCksIDApOyB9CisJCQlpbnQgY2FyZXR4ID0gMDsgaW50IGNhcmV0eSA9IDA7CisJCQk8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnRm9udE1ldHJpY3MnIj5Gb250TWV0cmljczwvZXJyb3I+IGZtID0gZ2V0Rm9udE1ldHJpY3MoZ2V0Rm9udCgpKTsgLy9qYXZhCisJCQlpbnQgd2lkdGggPSAwLCBoZWlnaHQgPSAwOworCQkJZm9yIChpbnQgaSA9IDAsIGogPSAwOyBqICE9IC0xOyBpID0gaiArIDEpIHsKKwkJCQlqID0gdGV4dC5pbmRleE9mKCdcbicsIGkpOworCQkJCWlmIChpICE9IGopIHsgLy8gJiYgaSAhPSB0ZXh0Lmxlbmd0aCgpCisJCQkJCVN0cmluZyBsaW5lID0gKGogIT0gLTEpID8gdGV4dC5zdWJzdHJpbmcoaSwgaikgOiB0ZXh0LnN1YnN0cmluZyhpKTsgLy9qYXZhCisJCQkJCXdpZHRoID0gTWF0aC5tYXg8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIG1ldGhvZCAnbWF4KGludCwgPyknIj4od2lkdGgsIGZtLjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgbWV0aG9kICdzdHJpbmdXaWR0aChqYXZhLmxhbmcuU3RyaW5nKSciPnN0cmluZ1dpZHRoPC9lcnJvcj4obGluZSkpPC9lcnJvcj47IC8vamF2YQorCQkJCQkvL21pZHAgd2lkdGggPSBmb250LnN1YnN0cmluZ1dpZHRoKHRleHQsIGksICgoaiAhPSAtMSkgPyBqIDogdGV4dC5sZW5ndGgoKSkgLSBpKTsKKwkJCQl9CisJCQkJaWYgKChlbmQgPj0gaSkgJiYgKChqID09IC0xKSB8fCAoZW5kIDw9IGopKSkgeworCQkJCQljYXJldHggPSBmbS48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIG1ldGhvZCAnc3RyaW5nV2lkdGgoamF2YS5sYW5nLlN0cmluZyknIj5zdHJpbmdXaWR0aDwvZXJyb3I+KHRleHQuc3Vic3RyaW5nKGksIGVuZCkpOyAvL2phdmEKKwkJCQkJLy9taWRwIGNhcmV0eCA9IGZvbnQuc3Vic3RyaW5nV2lkdGgodGV4dCwgaSwgZW5kIC0gaSk7CisJCQkJCWNhcmV0eSA9IGhlaWdodDsKKwkJCQl9CisJCQkJaGVpZ2h0ICs9IGZtLjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgbWV0aG9kICdnZXRIZWlnaHQoKSciPmdldEhlaWdodDwvZXJyb3I+KCk7CisJCQl9CisJCQlsYXlvdXRTY3JvbGxQYW5lKGNvbXBvbmVudCwgd2lkdGggKyAyLAorCQkJCWhlaWdodCAtIGZtLjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgbWV0aG9kICdnZXRMZWFkaW5nKCknIj5nZXRMZWFkaW5nPC9lcnJvcj4oKSArIDIsIDAsIDApOworCQkJc2Nyb2xsVG9WaXNpYmxlKGNvbXBvbmVudCwgY2FyZXR4LCBjYXJldHksCisJCQkJMiwgZm0uPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBtZXRob2QgJ2dldEFzY2VudCgpJyI+Z2V0QXNjZW50PC9lcnJvcj4oKSArIGZtLjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgbWV0aG9kICdnZXREZXNjZW50KCknIj5nZXREZXNjZW50PC9lcnJvcj4oKSArIDIpOworCQl9CisJCWVsc2UgaWYgKCJ0YWJiZWRwYW5lIiA9PSBjbGFzc25hbWUpIHsKKwkJCTxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdSZWN0YW5nbGUnIj5SZWN0YW5nbGU8L2Vycm9yPiBib3VuZHMgPSBnZXRSZWN0YW5nbGUoY29tcG9uZW50LCAiYm91bmRzIik7CisJCQlTdHJpbmcgcGxhY2VtZW50ID0gZ2V0U3RyaW5nKGNvbXBvbmVudCwgInBsYWNlbWVudCIsICJ0b3AiKTsKKwkJCWJvb2xlYW4gaG9yaXpvbnRhbCA9ICgocGxhY2VtZW50ID09ICJ0b3AiKSB8fCAocGxhY2VtZW50ID09ICJib3R0b20iKSk7CisJCQlpbnQgdGFiZCA9IDA7CisJCQlpbnQgdGFic2l6ZSA9IDA7CisJCQlmb3IgKE9iamVjdCBjb21wID0gZ2V0KGNvbXBvbmVudCwgInRhYiIpOworCQkJCQljb21wICE9IG51bGw7IGNvbXAgPSBnZXQoY29tcCwgIjpuZXh0IikpIHsKKwkJCQlEaW1lbnNpb24gZCA9IGdldFNpemUoY29tcCwgOCwgNCwgImxlZnQiKTsKKwkJCQlzZXRSZWN0YW5nbGUoY29tcCwgImJvdW5kcyIsCisJCQkJCWhvcml6b250YWwgPyB0YWJkIDogMCwgaG9yaXpvbnRhbCA/IDAgOiB0YWJkLCBkLndpZHRoLCBkLmhlaWdodCk7CisJCQkJdGFiZCArPSBob3Jpem9udGFsID8gZC53aWR0aCA6IGQuaGVpZ2h0OworCQkJCXRhYnNpemUgPSBNYXRoLm1heCh0YWJzaXplLCBob3Jpem9udGFsID8gZC5oZWlnaHQgOiBkLndpZHRoKTsKKwkJCX0KKwkJCWZvciAoT2JqZWN0IGNvbXAgPSBnZXQoY29tcG9uZW50LCAidGFiIik7CisJCQkJCWNvbXAgIT0gbnVsbDsgY29tcCA9IGdldChjb21wLCAiOm5leHQiKSkgeworCQkJCTxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdSZWN0YW5nbGUnIj5SZWN0YW5nbGU8L2Vycm9yPiByID0gZ2V0UmVjdGFuZ2xlKGNvbXAsICJib3VuZHMiKTsKKwkJCQlpZiAoaG9yaXpvbnRhbCkgeworCQkJCQlpZiAocGxhY2VtZW50ID09ICJib3R0b20iKSB7IHIuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ3knIj55PC9lcnJvcj4gPSBib3VuZHMuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ2hlaWdodCciPmhlaWdodDwvZXJyb3I+IC0gdGFic2l6ZTsgfQorCQkJCQlyLjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdoZWlnaHQnIj5oZWlnaHQ8L2Vycm9yPiA9IHRhYnNpemU7CisJCQkJfSBlbHNlIHsKKwkJCQkJaWYgKHBsYWNlbWVudCA9PSAicmlnaHQiKSB7IHIuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ3gnIj54PC9lcnJvcj4gPSBib3VuZHMuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ3dpZHRoJyI+d2lkdGg8L2Vycm9yPiAtIHRhYnNpemU7IH0KKwkJCQkJci48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnd2lkdGgnIj53aWR0aDwvZXJyb3I+ID0gdGFic2l6ZTsKKwkJCQl9CisJCQl9CisJCQlpbnQgY3ggPSAocGxhY2VtZW50ID09ICJsZWZ0IikgPyAodGFic2l6ZSArIDEpIDogMjsKKwkJCWludCBjeSA9IChwbGFjZW1lbnQgPT0gInRvcCIpID8gKHRhYnNpemUgKyAxKSA6IDI7CisJCQlpbnQgY3dpZHRoID0gYm91bmRzLjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICd3aWR0aCciPndpZHRoPC9lcnJvcj4gLSAoaG9yaXpvbnRhbCA/IDQgOiAodGFic2l6ZSArIDMpKTsKKwkJCWludCBjaGVpZ2h0ID0gYm91bmRzLjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdoZWlnaHQnIj5oZWlnaHQ8L2Vycm9yPiAtIChob3Jpem9udGFsID8gKHRhYnNpemUgKyAzKSA6IDQpOworCQkJZm9yIChPYmplY3QgY29tcCA9IGdldChjb21wb25lbnQsICJjb21wb25lbnQiKTsKKwkJCQkJY29tcCAhPSBudWxsOyBjb21wID0gZ2V0KGNvbXAsICI6bmV4dCIpKSB7CisJCQkJaWYgKCFnZXRCb29sZWFuKGNvbXAsICJ2aXNpYmxlIiwgdHJ1ZSkpIHsgY29udGludWU7IH0KKwkJCQlzZXRSZWN0YW5nbGUoY29tcCwgImJvdW5kcyIsIGN4LCBjeSwgY3dpZHRoLCBjaGVpZ2h0KTsKKwkJCQlkb0xheW91dChjb21wKTsKKwkJCX0KKwkJfQorCQllbHNlIGlmICgoInBhbmVsIiA9PSBjbGFzc25hbWUpIHx8IChjbGFzc25hbWUgPT0gImRpYWxvZyIpKSB7CisJCQlpbnQgZ2FwID0gZ2V0SW50ZWdlcihjb21wb25lbnQsICJnYXAiLCAwKTsKKwkJCWludFtdW10gZ3JpZCA9IGdldEdyaWQoY29tcG9uZW50LCBnYXApOworCQkJaWYgKGdyaWQgIT0gbnVsbCkgeworCQkJCWludCB0b3AgPSBnZXRJbnRlZ2VyKGNvbXBvbmVudCwgInRvcCIsIDApOworCQkJCWludCBsZWZ0ID0gZ2V0SW50ZWdlcihjb21wb25lbnQsICJsZWZ0IiwgMCk7CisJCQkJaW50IGJvdHRvbSA9IGdldEludGVnZXIoY29tcG9uZW50LCAiYm90dG9tIiwgMCk7CisJCQkJaW50IHJpZ2h0ID0gZ2V0SW50ZWdlcihjb21wb25lbnQsICJyaWdodCIsIDApOworCQkJCWlmIChjbGFzc25hbWUgPT0gImRpYWxvZyIpIHsKKwkJCQkJaW50IHRpdGxlaGVpZ2h0ID0gZ2V0SW50ZWdlcihjb21wb25lbnQsICJ0aXRsZWhlaWdodCIsIDApOworCQkJCQl0b3AgKz0gNCArIHRpdGxlaGVpZ2h0OyBsZWZ0ICs9IDQ7IGJvdHRvbSArPSA0OyByaWdodCArPSA0OworCQkJCX0KKworCQkJCTxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdSZWN0YW5nbGUnIj5SZWN0YW5nbGU8L2Vycm9yPiBib3VuZHMgPSBnZXRSZWN0YW5nbGUoY29tcG9uZW50LCAiYm91bmRzIik7CisJCQkJZm9yIChpbnQgaSA9IDA7IGkgPCAyOyBpKyspIHsKKwkJCQkJaW50IGQgPSAoKGkgPT0gMCkgPyAoYm91bmRzLjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICd3aWR0aCciPndpZHRoPC9lcnJvcj4gLSBsZWZ0IC0gcmlnaHQpIDoKKwkJCQkJCShib3VuZHMuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ2hlaWdodCciPmhlaWdodDwvZXJyb3I+IC0gdG9wIC0gYm90dG9tKSkgLQorCQkJCQkJZ2V0U3VtKGdyaWRbaV0sIDAsIGdyaWRbaV0ubGVuZ3RoLCBnYXAsIGZhbHNlKTsKKwkJCQkJaWYgKGQgIT0gMCkgeworCQkJCQkJaW50IHcgPSBnZXRTdW0oZ3JpZFsyICsgaV0sIDAsIGdyaWRbMiArIGldLmxlbmd0aCwgMCwgZmFsc2UpOworCQkJCQkJaWYgKHcgPiAwKSB7CisJCQkJCQkJZm9yIChpbnQgaiA9IDA7IGogPCBncmlkW2ldLmxlbmd0aDsgaisrKSB7CisJCQkJCQkJCWlmIChncmlkWzIgKyBpXVtqXSAhPSAwKSB7CisJCQkJCQkJCQlncmlkW2ldW2pdICs9IGQgKiBncmlkWzIgKyBpXVtqXSAvIHc7CisJCQkJCQkJCX0KKwkJCQkJCQl9CisJCQkJCQl9CisJCQkJCX0KKwkJCQl9CisKKwkJCQlpbnQgaSA9IDA7CisJCQkJZm9yIChPYmplY3QgY29tcCA9IGdldChjb21wb25lbnQsICJjb21wb25lbnQiKTsKKwkJCQkJCWNvbXAgIT0gbnVsbDsgY29tcCA9IGdldChjb21wLCAiOm5leHQiKSkgeworCQkJCQlpZiAoIWdldEJvb2xlYW4oY29tcCwgInZpc2libGUiLCB0cnVlKSkgeyBjb250aW51ZTsgfQorCQkJCQlpbnQgaXggPSBsZWZ0ICsgZ2V0U3VtKGdyaWRbMF0sIDAsIGdyaWRbNF1baV0sIGdhcCwgdHJ1ZSk7CisJCQkJCWludCBpeSA9IHRvcCArIGdldFN1bShncmlkWzFdLCAwLCBncmlkWzVdW2ldLCBnYXAsIHRydWUpOworCQkJCQlpbnQgaXdpZHRoID0gZ2V0U3VtKGdyaWRbMF0sIGdyaWRbNF1baV0sIGdyaWRbNl1baV0sIGdhcCwgZmFsc2UpOworCQkJCQlpbnQgaWhlaWdodCA9IGdldFN1bShncmlkWzFdLCBncmlkWzVdW2ldLCBncmlkWzddW2ldLCBnYXAsIGZhbHNlKTsKKwkJCQkJU3RyaW5nIGhhbGlnbiA9IGdldFN0cmluZyhjb21wLCAiaGFsaWduIiwgImZpbGwiKTsKKwkJCQkJU3RyaW5nIHZhbGlnbiA9IGdldFN0cmluZyhjb21wLCAidmFsaWduIiwgImZpbGwiKTsKKwkJCQkJaWYgKChoYWxpZ24gIT0gImZpbGwiKSB8fCAodmFsaWduICE9ICJmaWxsIikpIHsKKwkJCQkJCURpbWVuc2lvbiBkID0gZ2V0UHJlZmVycmVkU2l6ZShjb21wKTsKKwkJCQkJCWlmIChoYWxpZ24gIT0gImZpbGwiKSB7CisJCQkJCQkJaW50IGR3ID0gTWF0aC5tYXgoMCwgaXdpZHRoIC0gZC53aWR0aCk7CisJCQkJCQkJaWYgKGhhbGlnbiA9PSAiY2VudGVyIikgeyBpeCArPSBkdyAvIDI7IH0KKwkJCQkJCQkJZWxzZSBpZiAoaGFsaWduID09ICJyaWdodCIpIHsgaXggKz0gZHc7IH0KKwkJCQkJCQlpd2lkdGggLT0gZHc7CisJCQkJCQl9CisJCQkJCQlpZiAodmFsaWduICE9ICJmaWxsIikgeworCQkJCQkJCWludCBkaCA9IE1hdGgubWF4KDAsIGloZWlnaHQgLSBkLmhlaWdodCk7CisJCQkJCQkJaWYgKHZhbGlnbiA9PSAiY2VudGVyIikgeyBpeSArPSBkaCAvIDI7IH0KKwkJCQkJCQkJZWxzZSBpZiAodmFsaWduID09ICJib3R0b20iKSB7IGl5ICs9IGRoOyB9CisJCQkJCQkJaWhlaWdodCAtPSBkaDsKKwkJCQkJCX0KKwkJCQkJfQorCQkJCQlzZXRSZWN0YW5nbGUoY29tcCwgImJvdW5kcyIsIGl4LCBpeSwgaXdpZHRoLCBpaGVpZ2h0KTsKKwkJCQkJZG9MYXlvdXQoY29tcCk7CisJCQkJCWkrKzsKKwkJCQl9CisJCQl9CisJCX0KKwkJZWxzZSBpZiAoImRlc2t0b3AiID09IGNsYXNzbmFtZSkgeworCQkJPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ1JlY3RhbmdsZSciPlJlY3RhbmdsZTwvZXJyb3I+IGJvdW5kcyA9IGdldFJlY3RhbmdsZShjb21wb25lbnQsICJib3VuZHMiKTsKKwkJCWZvciAoT2JqZWN0IGNvbXAgPSBnZXQoY29tcG9uZW50LCAiY29tcG9uZW50Iik7CisJCQkJCWNvbXAgIT0gbnVsbDsgY29tcCA9IGdldChjb21wLCAiOm5leHQiKSkgeworCQkJCVN0cmluZyBpY2xhc3MgPSBnZXRDbGFzcyhjb21wKTsKKwkJCQlpZiAoaWNsYXNzID09ICJkaWFsb2ciKSB7CisJCQkJCURpbWVuc2lvbiBkID0gZ2V0UHJlZmVycmVkU2l6ZShjb21wKTsKKwkJCQkJaWYgKGdldChjb21wLCAiYm91bmRzIikgPT0gbnVsbCkKKwkJCQkJc2V0UmVjdGFuZ2xlKGNvbXAsICJib3VuZHMiLAorCQkJCQkJTWF0aC5tYXg8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIG1ldGhvZCAnbWF4KGludCwgPyknIj4oMCwgKGJvdW5kcy48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnd2lkdGgnIj53aWR0aDwvZXJyb3I+IC0gZC53aWR0aCkgLyAyKTwvZXJyb3I+LAorCQkJCQkJTWF0aC5tYXg8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIG1ldGhvZCAnbWF4KGludCwgPyknIj4oMCwgKGJvdW5kcy48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnaGVpZ2h0JyI+aGVpZ2h0PC9lcnJvcj4gLSBkLmhlaWdodCkgLyAyKTwvZXJyb3I+LAorCQkJCQkJTWF0aC5taW48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIG1ldGhvZCAnbWluKGludCwgPyknIj4oZC53aWR0aCwgYm91bmRzLjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICd3aWR0aCciPndpZHRoPC9lcnJvcj4pPC9lcnJvcj4sIE1hdGgubWluPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBtZXRob2QgJ21pbihpbnQsID8pJyI+KGQuaGVpZ2h0LCBib3VuZHMuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ2hlaWdodCciPmhlaWdodDwvZXJyb3I+KTwvZXJyb3I+KTsKKwkJCQl9IGVsc2UgaWYgKChpY2xhc3MgPT0gImNvbWJvbGlzdCIpIHx8IChpY2xhc3MgPT0gInBvcHVwbWVudSIpKSB7CisJCQkJCQlpY2xhc3MgPSBpY2xhc3M7IC8vY29tcGlsZXIgYnVnCisJCQkJfSBlbHNlIHsKKwkJCQkJc2V0UmVjdGFuZ2xlKGNvbXAsICJib3VuZHMiLCAwLCAwLCBib3VuZHMuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ3dpZHRoJyI+d2lkdGg8L2Vycm9yPiwgYm91bmRzLjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdoZWlnaHQnIj5oZWlnaHQ8L2Vycm9yPik7CisJCQkJfQorCQkJCWRvTGF5b3V0KGNvbXApOworCQkJfQorCQl9CisJCWVsc2UgaWYgKCJzcGluYm94IiA9PSBjbGFzc25hbWUpIHsKKwkJCWxheW91dEZpZWxkKGNvbXBvbmVudCwgYmxvY2ssIGZhbHNlLCAwKTsKKwkJfQorCQllbHNlIGlmICgic3BsaXRwYW5lIiA9PSBjbGFzc25hbWUpIHsKKwkJCTxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdSZWN0YW5nbGUnIj5SZWN0YW5nbGU8L2Vycm9yPiBib3VuZHMgPSBnZXRSZWN0YW5nbGUoY29tcG9uZW50LCAiYm91bmRzIik7CisJCQlib29sZWFuIGhvcml6b250YWwgPSAoInZlcnRpY2FsIiAhPSBnZXQoY29tcG9uZW50LCAib3JpZW50YXRpb24iKSk7CisJCQlpbnQgZGl2aWRlciA9IGdldEludGVnZXIoY29tcG9uZW50LCAiZGl2aWRlciIsIC0xKTsKKwkJCWludCBtYXhkaXYgPSAoaG9yaXpvbnRhbCA/IGJvdW5kcy48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnd2lkdGgnIj53aWR0aDwvZXJyb3I+IDogYm91bmRzLjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdoZWlnaHQnIj5oZWlnaHQ8L2Vycm9yPikgLSA1OworCisJCQlPYmplY3QgY29tcDEgPSBnZXQoY29tcG9uZW50LCAiY29tcG9uZW50Iik7CisJCQlib29sZWFuIHZpc2libGUxID0gKGNvbXAxICE9IG51bGwpICYmIGdldEJvb2xlYW4oY29tcDEsICJ2aXNpYmxlIiwgdHJ1ZSk7CisJCQlpZiAoZGl2aWRlciA9PSAtMSkgeworCQkJCWludCBkMSA9IDA7CisJCQkJaWYgKHZpc2libGUxKSB7CisJCQkJCURpbWVuc2lvbiBkID0gZ2V0UHJlZmVycmVkU2l6ZShjb21wMSk7CisJCQkJCWQxID0gaG9yaXpvbnRhbCA/IGQud2lkdGggOiBkLmhlaWdodDsKKwkJCQl9CisJCQkJZGl2aWRlciA9IE1hdGgubWluKGQxLCBtYXhkaXYpOworCQkJCXNldEludGVnZXIoY29tcG9uZW50LCAiZGl2aWRlciIsIGRpdmlkZXIsIC0xKTsKKwkJCX0KKwkJCWVsc2UgaWYgKGRpdmlkZXIgPiBtYXhkaXYpIHsKKwkJCQlzZXRJbnRlZ2VyKGNvbXBvbmVudCwgImRpdmlkZXIiLCBkaXZpZGVyID0gbWF4ZGl2LCAtMSk7CisJCQl9CisKKwkJCWlmICh2aXNpYmxlMSkgeworCQkJCXNldFJlY3RhbmdsZShjb21wMSwgImJvdW5kcyIsIDAsIDAsIGhvcml6b250YWwgPyBkaXZpZGVyIDogYm91bmRzLjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICd3aWR0aCciPndpZHRoPC9lcnJvcj4sCisJCQkJCWhvcml6b250YWwgPyBib3VuZHMuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ2hlaWdodCciPmhlaWdodDwvZXJyb3I+IDogZGl2aWRlcik7CisJCQkJZG9MYXlvdXQoY29tcDEpOworCQkJfQorCQkJT2JqZWN0IGNvbXAyID0gKGNvbXAxICE9IG51bGwpID8gZ2V0KGNvbXAxLCAiOm5leHQiKSA6IG51bGw7CisJCQlpZiAoKGNvbXAyICE9IG51bGwpICYmIGdldEJvb2xlYW4oY29tcDIsICJ2aXNpYmxlIiwgdHJ1ZSkpIHsKKwkJCQlzZXRSZWN0YW5nbGUoY29tcDIsICJib3VuZHMiLCBob3Jpem9udGFsID8gKGRpdmlkZXIgKyA1KSA6IDAsCisJCQkJCWhvcml6b250YWwgPyAwIDogKGRpdmlkZXIgKyA1KSwKKwkJCQkJaG9yaXpvbnRhbCA/IChib3VuZHMuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ3dpZHRoJyI+d2lkdGg8L2Vycm9yPiAtIDUgLSBkaXZpZGVyKSA6IGJvdW5kcy48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnd2lkdGgnIj53aWR0aDwvZXJyb3I+LAorCQkJCQlob3Jpem9udGFsID8gYm91bmRzLjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdoZWlnaHQnIj5oZWlnaHQ8L2Vycm9yPiA6IChib3VuZHMuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ2hlaWdodCciPmhlaWdodDwvZXJyb3I+IC0gNSAtIGRpdmlkZXIpKTsKKwkJCQlkb0xheW91dChjb21wMik7CisJCQl9CisJCX0KKwkJZWxzZSBpZiAoKCJsaXN0IiA9PSBjbGFzc25hbWUpIHx8CisJCQkJKCJ0YWJsZSIgPT0gY2xhc3NuYW1lKSB8fCAoInRyZWUiID09IGNsYXNzbmFtZSkpIHsKKwkJCWludCB3aWR0aCA9IDA7CisJCQlpbnQgY29sdW1uaGVpZ2h0ID0gMDsKKwkJCWlmICgidGFibGUiID09IGNsYXNzbmFtZSkgeworCQkJCWZvciAoT2JqZWN0IGNvbHVtbiA9IGdldChjb21wb25lbnQsICJjb2x1bW4iKTsKKwkJCQkJCWNvbHVtbiAhPSBudWxsOyBjb2x1bW4gPSBnZXQoY29sdW1uLCAiOm5leHQiKSkgeworCQkJCQl3aWR0aCArPSBnZXRJbnRlZ2VyKGNvbHVtbiwgIndpZHRoIiwgODApOworCQkJCQlEaW1lbnNpb24gZCA9IGdldFNpemUoY29sdW1uLCAyLCAyLCAibGVmdCIpOworCQkJCQljb2x1bW5oZWlnaHQgPSBNYXRoLm1heChjb2x1bW5oZWlnaHQsIGQuaGVpZ2h0KTsKKwkJCQl9CisJCQl9CisJCQlTdHJpbmcgaXRlbW5hbWUgPSAoImxpc3QiID09IGNsYXNzbmFtZSkgPyAiaXRlbSIgOgorCQkJCSgoInRhYmxlIiA9PSBjbGFzc25hbWUpID8gInJvdyIgOiAibm9kZSIpOworCQkJaW50IHkgPSAwOworCQkJaW50IGxldmVsID0gMDsKKwkJCWZvciAoT2JqZWN0IGl0ZW0gPSBnZXQoY29tcG9uZW50LCBpdGVtbmFtZSk7IGl0ZW0gIT0gbnVsbDspIHsKKwkJCQlpbnQgeCA9IDA7CisJCQkJaW50IGl3aWR0aCA9IDA7IGludCBpaGVpZ2h0ID0gMDsKKwkJCQlpZiAoInRhYmxlIiA9PSBjbGFzc25hbWUpIHsKKwkJCQkJaXdpZHRoID0gd2lkdGg7CisJCQkJCWZvciAoT2JqZWN0IGNlbGwgPSBnZXQoaXRlbSwgImNlbGwiKTsKKwkJCQkJCQljZWxsICE9IG51bGw7IGNlbGwgPSBnZXQoY2VsbCwgIjpuZXh0IikpIHsKKwkJCQkJCURpbWVuc2lvbiBkID0gZ2V0U2l6ZShjZWxsLCAyLCAzLCAibGVmdCIpOworCQkJCQkJaWhlaWdodCA9IE1hdGgubWF4KGloZWlnaHQsIGQuaGVpZ2h0KTsKKwkJCQkJfQorCQkJCX0KKwkJCQllbHNlIHsKKwkJCQkJaWYgKCJ0cmVlIiA9PSBjbGFzc25hbWUpIHsKKwkJCQkJCXggPSAobGV2ZWwgKyAxKSAqIGJsb2NrOworCQkJCQl9CisJCQkJCURpbWVuc2lvbiBkID0gZ2V0U2l6ZShpdGVtLCAyLCAzLCAibGVmdCIpOworCQkJCQlpd2lkdGggPSBkLndpZHRoOyBpaGVpZ2h0ID0gZC5oZWlnaHQ7CisJCQkJCXdpZHRoID0gTWF0aC5tYXgod2lkdGgsIHggKyBkLndpZHRoKTsKKwkJCQl9CisJCQkJc2V0UmVjdGFuZ2xlKGl0ZW0sICJib3VuZHMiLCB4LCB5LCBpd2lkdGgsIGloZWlnaHQpOworCQkJCXkgKz0gaWhlaWdodDsKKwkJCQlpZiAoInRyZWUiID09IGNsYXNzbmFtZSkgeworCQkJCQlPYmplY3QgbmV4dCA9IGdldChpdGVtLCAibm9kZSIpOworCQkJCQlpZiAoKG5leHQgIT0gbnVsbCkgJiYgZ2V0Qm9vbGVhbihpdGVtLCAiZXhwYW5kZWQiLCB0cnVlKSkgeworCQkJCQkJbGV2ZWwrKzsKKwkJCQkJfSBlbHNlIHsKKwkJCQkJCXdoaWxlICgoKG5leHQgPSBnZXQoaXRlbSwgIjpuZXh0IikpID09IG51bGwpICYmIChsZXZlbCA+IDApKSB7CisJCQkJCQkJaXRlbSA9IGdldFBhcmVudChpdGVtKTsKKwkJCQkJCQlsZXZlbC0tOworCQkJCQkJfQorCQkJCQl9CisJCQkJCWl0ZW0gPSBuZXh0OworCQkJCX0gZWxzZSB7CisJCQkJCWl0ZW0gPSBnZXQoaXRlbSwgIjpuZXh0Iik7CisJCQkJfQorCQkJfQorCQkJbGF5b3V0U2Nyb2xsUGFuZShjb21wb25lbnQsIHdpZHRoLCB5IC0gMSwgMCwgY29sdW1uaGVpZ2h0KTsKKwkJfQorCQllbHNlIGlmICgibWVudWJhciIgPT0gY2xhc3NuYW1lKSB7CisJCQk8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnUmVjdGFuZ2xlJyI+UmVjdGFuZ2xlPC9lcnJvcj4gYm91bmRzID0gZ2V0UmVjdGFuZ2xlKGNvbXBvbmVudCwgImJvdW5kcyIpOworCQkJaW50IHggPSAwOworCQkJZm9yIChPYmplY3QgbWVudSA9IGdldChjb21wb25lbnQsICJtZW51Iik7CisJCQkJCW1lbnUgIT0gbnVsbDsgbWVudSA9IGdldChtZW51LCAiOm5leHQiKSkgeworCQkJCURpbWVuc2lvbiBkID0gZ2V0U2l6ZShtZW51LCA4LCA0LCAibGVmdCIpOworCQkJCXNldFJlY3RhbmdsZShtZW51LCAiYm91bmRzIiwgeCwgMCwgZC53aWR0aCwgYm91bmRzLjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdoZWlnaHQnIj5oZWlnaHQ8L2Vycm9yPik7CisJCQkJeCArPSBkLndpZHRoOworCQkJfQorCQl9CisJCWVsc2UgaWYgKCgiY29tYm9saXN0IiA9PSBjbGFzc25hbWUpIHx8ICgicG9wdXBtZW51IiA9PSBjbGFzc25hbWUpKSB7CisJCQlib29sZWFuIGNvbWJvID0gKCJjb21ib2xpc3QiID09IGNsYXNzbmFtZSk7CisJCQlpbnQgcHcgPSAwOyBpbnQgcGggPSAwOyBpbnQgcHh5ID0gY29tYm8gPyAwIDogMTsKKwkJCWZvciAoT2JqZWN0IGl0ZW0gPSBnZXQoZ2V0KGNvbXBvbmVudCwgY29tYm8gPyAiY29tYm9ib3giIDogIm1lbnUiKSwKKwkJCQkJY29tYm8gPyAiY2hvaWNlIiA6ICJtZW51Iik7IGl0ZW0gIT0gbnVsbDsgaXRlbSA9IGdldChpdGVtLCAiOm5leHQiKSkgeworCQkJCVN0cmluZyBpdGVtY2xhc3MgPSBjb21ibyA/IG51bGwgOiBnZXRDbGFzcyhpdGVtKTsKKwkJCQlEaW1lbnNpb24gZCA9IChpdGVtY2xhc3MgPT0gInNlcGFyYXRvciIpID8gbmV3IERpbWVuc2lvbigxLCAxKSA6CisJCQkJCWdldFNpemUoaXRlbSwgOCAsIDQsICJsZWZ0Iik7CisJCQkJaWYgKGl0ZW1jbGFzcyA9PSAiY2hlY2tib3htZW51aXRlbSIpIHsKKwkJCQkJZC53aWR0aCA9IGQud2lkdGggKyBibG9jayArIDM7CisJCQkJCWQuaGVpZ2h0ID0gTWF0aC5tYXgoYmxvY2ssIGQuaGVpZ2h0KTsKKwkJCQl9CisJCQkJZWxzZSBpZiAoaXRlbWNsYXNzID09ICJtZW51IikgeworCQkJCQlkLndpZHRoICs9IGJsb2NrOworCQkJCX0KKwkJCQlzZXRSZWN0YW5nbGUoaXRlbSwgImJvdW5kcyIsIHB4eSwgcHh5ICsgcGgsIGQud2lkdGgsIGQuaGVpZ2h0KTsKKwkJCQlwdyA9IE1hdGgubWF4KHB3LCBkLndpZHRoKTsKKwkJCQlwaCArPSBkLmhlaWdodDsKKwkJCX0KKwkJCTxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdSZWN0YW5nbGUnIj5SZWN0YW5nbGU8L2Vycm9yPiByID0gZ2V0UmVjdGFuZ2xlKGNvbXBvbmVudCwgImJvdW5kcyIpOworCQkJci48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnd2lkdGgnIj53aWR0aDwvZXJyb3I+ID0gcHcgKyAyOyByLjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdoZWlnaHQnIj5oZWlnaHQ8L2Vycm9yPiA9IHBoICsgMjsKKwkJCWlmIChjb21ibykgeworCQkJCTxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdSZWN0YW5nbGUnIj5SZWN0YW5nbGU8L2Vycm9yPiBkYiA9IGdldFJlY3RhbmdsZShjb250ZW50LCAiYm91bmRzIik7CisJCQkJaWYgKHIuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ3knIj55PC9lcnJvcj4gKyBwaCArIDIgPiBkYi48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnaGVpZ2h0JyI+aGVpZ2h0PC9lcnJvcj4pIHsKKwkJCQkJci48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnd2lkdGgnIj53aWR0aDwvZXJyb3I+ID0gcHcgKyAyICsgYmxvY2s7CisJCQkJCXIuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ2hlaWdodCciPmhlaWdodDwvZXJyb3I+ID0gZGIuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ2hlaWdodCciPmhlaWdodDwvZXJyb3I+IC0gci48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAneSciPnk8L2Vycm9yPjsKKwkJCQl9CisJCQkJZWxzZSB7CisJCQkJCXIuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ2hlaWdodCciPmhlaWdodDwvZXJyb3I+ID0gTWF0aC5taW48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIG1ldGhvZCAnbWluKD8sID8pJyI+KHIuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ2hlaWdodCciPmhlaWdodDwvZXJyb3I+LCBkYi48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnaGVpZ2h0JyI+aGVpZ2h0PC9lcnJvcj4gLSByLjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICd5JyI+eTwvZXJyb3I+KTwvZXJyb3I+OworCQkJCX0KKwkJCQlyLjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICd3aWR0aCciPndpZHRoPC9lcnJvcj4gPSBNYXRoLm1pbjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgbWV0aG9kICdtaW4oPywgPyknIj4oci48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnd2lkdGgnIj53aWR0aDwvZXJyb3I+LCBkYi48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnd2lkdGgnIj53aWR0aDwvZXJyb3I+IC0gci48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAneCciPng8L2Vycm9yPik8L2Vycm9yPjsKKwkJCQlsYXlvdXRTY3JvbGxQYW5lKGNvbXBvbmVudCwgcHcsIHBoLCAwLCAwKTsvL34KKwkJCX0KKwkJfQorCQkvL2phdmE+CisJCWVsc2UgaWYgKCJiZWFuIiA9PSBjbGFzc25hbWUpIHsKKwkJCQk8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnUmVjdGFuZ2xlJyI+UmVjdGFuZ2xlPC9lcnJvcj4gciA9IGdldFJlY3RhbmdsZShjb21wb25lbnQsICJib3VuZHMiKTsKKwkJCQkoKENvbXBvbmVudCkgZ2V0KGNvbXBvbmVudCwgImJlYW4iKSkuc2V0Qm91bmRzKHIpOworCQl9CisJCS8vPGphdmEKKwl9CisKKwkvKioKKwkgKgorCSAqLworCXByaXZhdGUgT2JqZWN0IHBvcHVwKE9iamVjdCBjb21wb25lbnQsIE9iamVjdCBjbGFzc25hbWUpIHsKKwkJT2JqZWN0IHBvcHVwID0gbnVsbDsKKwkJaW50IHB4ID0gMDsgaW50IHB5ID0gMDsKKwkJaWYgKCgibWVudWJhciIgPT0gY2xhc3NuYW1lKSB8fCAoInBvcHVwbWVudSIgPT0gY2xhc3NuYW1lKSkgeworCQkJT2JqZWN0IHBvcHVwbWVudSA9IGdldChjb21wb25lbnQsICJwb3B1cG1lbnUiKTsKKwkJCU9iamVjdCBzZWxlY3RlZCA9IGdldChjb21wb25lbnQsICJzZWxlY3RlZCIpOworCQkJaWYgKHBvcHVwbWVudSAhPSBudWxsKSB7CisJCQkJaWYgKGdldChwb3B1cG1lbnUsICJtZW51IikgPT0gc2VsZWN0ZWQpIHsgcmV0dXJuIG51bGw7IH0KKwkJCQlzZXQocG9wdXBtZW51LCAic2VsZWN0ZWQiLCBudWxsKTsKKwkJCQlzZXQocG9wdXBtZW51LCAibWVudSIsIG51bGwpOworCQkJCXJlbW92ZUl0ZW1JbXBsKGNvbnRlbnQsICJjb21wb25lbnQiLCBwb3B1cG1lbnUpOworCQkJCXJlcGFpbnQocG9wdXBtZW51KTsKKwkJCQlzZXQocG9wdXBtZW51LCAiOnBhcmVudCIsIG51bGwpOworCQkJCXNldChjb21wb25lbnQsICJwb3B1cG1lbnUiLCBudWxsKTsKKwkJCQlpZiAobW91c2VpbnNpZGUgPT0gcG9wdXBtZW51KSB7CisJCQkJCWZpbmRDb21wb25lbnQoY29udGVudCwgbW91c2V4LCBtb3VzZXkpOworCQkJCQloYW5kbGVNb3VzZUV2ZW50KG1vdXNleCwgbW91c2V4LCAxLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCAvL2phdmEKKwkJCQkJCTxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdNb3VzZUV2ZW50JyI+TW91c2VFdmVudDwvZXJyb3I+Lk1PVVNFX0VOVEVSRUQsIG1vdXNlaW5zaWRlLCBpbnNpZGVwYXJ0KTsgLy9qYXZhCisJCQkJfQorCQkJCXBvcHVwKHBvcHVwbWVudSwgInBvcHVwbWVudSIpOworCQkJfQorCQkJaWYgKChzZWxlY3RlZCA9PSBudWxsKSB8fCAoZ2V0Q2xhc3Moc2VsZWN0ZWQpICE9ICJtZW51IikpIHsgcmV0dXJuIG51bGw7IH0KKwkJCXBvcHVwID0gY3JlYXRlSW1wbCgicG9wdXBtZW51Iik7CisJCQlzZXQocG9wdXAsICJtZW51Iiwgc2VsZWN0ZWQpOworCQkJc2V0KGNvbXBvbmVudCwgInBvcHVwbWVudSIsIHBvcHVwKTsKKworCQkJPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ1JlY3RhbmdsZSciPlJlY3RhbmdsZTwvZXJyb3I+IGJvdW5kcyA9IGdldFJlY3RhbmdsZShzZWxlY3RlZCwgImJvdW5kcyIpOworCQkJaWYgKCJtZW51YmFyIiA9PSBjbGFzc25hbWUpIHsKKwkJCQlweCA9IGJvdW5kcy48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAneCciPng8L2Vycm9yPjsgcHkgPSBib3VuZHMuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ3knIj55PC9lcnJvcj4gKyBib3VuZHMuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ2hlaWdodCciPmhlaWdodDwvZXJyb3I+IC0gMTsKKwkJCX0gZWxzZSB7CisJCQkJcHggPSBib3VuZHMuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ3gnIj54PC9lcnJvcj4gKyBnZXRSZWN0YW5nbGUoY29tcG9uZW50LCAiYm91bmRzIikuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ3dpZHRoJyI+d2lkdGg8L2Vycm9yPiAtIDQ7CisJCQkJcHkgPSBib3VuZHMuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ3knIj55PC9lcnJvcj47CisJCQl9CisJCX0KKwkJZWxzZSB7IC8vaWYgKCJjb21ib2JveCIgPT0gY2xhc3NuYW1lKSB7CisJCQlwb3B1cCA9IGNyZWF0ZUltcGwoImNvbWJvbGlzdCIpOworCQkJc2V0KHBvcHVwLCAiY29tYm9ib3giLCBjb21wb25lbnQpOworCQkJc2V0KGNvbXBvbmVudCwgImNvbWJvbGlzdCIsIHBvcHVwKTsKKworCQkJcHkgPSBnZXRSZWN0YW5nbGUoY29tcG9uZW50LCAiYm91bmRzIikuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ2hlaWdodCciPmhlaWdodDwvZXJyb3I+ICsgMTsKKwkJfQorCQlpZiAoKCJtZW51YmFyIiA9PSBjbGFzc25hbWUpIHx8ICgiY29tYm9ib3giID09IGNsYXNzbmFtZSkpIHsKKwkJCXBvcHVwb3duZXIgPSBjb21wb25lbnQ7CisJCX0KKwkJaW5zZXJ0SXRlbShjb250ZW50LCAiY29tcG9uZW50IiwgcG9wdXAsIDApOworCQlzZXQocG9wdXAsICI6cGFyZW50IiwgY29udGVudCk7CisJCXdoaWxlIChjb21wb25lbnQgIT0gY29udGVudCkgeworCQkJPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ1JlY3RhbmdsZSciPlJlY3RhbmdsZTwvZXJyb3I+IHIgPSBnZXRSZWN0YW5nbGUoY29tcG9uZW50LCAiYm91bmRzIik7CisJCQlweCArPSByLjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICd4JyI+eDwvZXJyb3I+OyBweSArPSByLjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICd5JyI+eTwvZXJyb3I+OworCQkJY29tcG9uZW50ID0gZ2V0UGFyZW50KGNvbXBvbmVudCk7CisJCX0KKwkJc2V0UmVjdGFuZ2xlKHBvcHVwLCAiYm91bmRzIiwgcHgsIHB5LCAwLCAwKTsKKwkJZG9MYXlvdXQocG9wdXApOyByZXBhaW50KHBvcHVwKTsKKwkJcmV0dXJuIHBvcHVwOworCX0KKworCS8qKgorCSAqCisJICovCisJcHJpdmF0ZSB2b2lkIGNsb3NldXAoT2JqZWN0IGNvbWJvYm94LCBPYmplY3QgY29tYm9saXN0LCBPYmplY3QgaXRlbSkgeworCQlpZiAoKGl0ZW0gIT0gbnVsbCkgJiYgZ2V0Qm9vbGVhbihpdGVtLCAiZW5hYmxlZCIsIHRydWUpKSB7CisJCQlTdHJpbmcgdGV4dCA9IGdldFN0cmluZyhpdGVtLCAidGV4dCIsICIiKTsKKwkJCXNldChjb21ib2JveCwgInRleHQiLCB0ZXh0KTsgLy8gaWYgZWRpdGFibGUKKwkJCXNldEludGVnZXIoY29tYm9ib3gsICJzdGFydCIsIHRleHQubGVuZ3RoKCksIDApOworCQkJc2V0SW50ZWdlcihjb21ib2JveCwgImVuZCIsIDAsIDApOworCQkJc2V0KGNvbWJvYm94LCAiaWNvbiIsIGdldChpdGVtLCAiaWNvbiIpKTsKKwkJCXZhbGlkYXRlKGNvbWJvYm94KTsKKwkJCXNldEludGVnZXIoY29tYm9ib3gsICJzZWxlY3RlZCIsIGdldEluZGV4KGNvbWJvYm94LCAiY2hvaWNlIiwgaXRlbSksIC0xKTsKKwkJCWludm9rZShjb21ib2JveCwgImFjdGlvbiIpOworCQl9CisJCXNldChjb21ib2xpc3QsICJjb21ib2JveCIsIG51bGwpOworCQlzZXQoY29tYm9ib3gsICJjb21ib2xpc3QiLCBudWxsKTsKKwkJcmVtb3ZlSXRlbUltcGwoY29udGVudCwgImNvbXBvbmVudCIsIGNvbWJvbGlzdCk7CisJCXJlcGFpbnQoY29tYm9saXN0KTsKKwkJc2V0KGNvbWJvbGlzdCwgIjpwYXJlbnQiLCBudWxsKTsKKwkJcG9wdXBvd25lciA9IG51bGw7CisJCWlmIChtb3VzZWluc2lkZSA9PSBjb21ib2xpc3QpIHsKKwkJCWZpbmRDb21wb25lbnQoY29udGVudCwgbW91c2V4LCBtb3VzZXkpOworCQkJaGFuZGxlTW91c2VFdmVudChtb3VzZXgsIG1vdXNleCwgMSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgLy9qYXZhCisJCQkJPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ01vdXNlRXZlbnQnIj5Nb3VzZUV2ZW50PC9lcnJvcj4uTU9VU0VfRU5URVJFRCwgbW91c2VpbnNpZGUsIGluc2lkZXBhcnQpOyAvL2phdmEKKwkJfQorCX0KKworCS8qKgorCSAqCisJICovCisJcHJpdmF0ZSB2b2lkIGNsb3NldXAoT2JqZWN0IG1lbnViYXIpIHsKKwkJc2V0KG1lbnViYXIsICJzZWxlY3RlZCIsIG51bGwpOworCQlwb3B1cChtZW51YmFyLCAibWVudWJhciIpOworCQlyZXBhaW50KG1lbnViYXIpOyAvLyAsIHNlbGVjdGVkCisJCXBvcHVwb3duZXIgPSBudWxsOworCX0KKworCS8qKgorCSAqCisJICovCisJcHJpdmF0ZSB2b2lkIGNsb3NldXAoKSB7CisJCWlmIChwb3B1cG93bmVyICE9IG51bGwpIHsKKwkJCVN0cmluZyBjbGFzc25hbWUgPSBnZXRDbGFzcyhwb3B1cG93bmVyKTsKKwkJCWlmICgibWVudWJhciIgPT0gY2xhc3NuYW1lKSB7CisJCQkJY2xvc2V1cChwb3B1cG93bmVyKTsKKwkJCX0KKwkJCWVsc2UgaWYgKCJjb21ib2JveCIgPT0gY2xhc3NuYW1lKSB7CisJCQkJY2xvc2V1cChwb3B1cG93bmVyLCBnZXQocG9wdXBvd25lciwgImNvbWJvbGlzdCIpLCBudWxsKTsKKwkJCX0KKwkJfQorCX0KKworCS8qKgorCSAqCisJICovCisJcHJpdmF0ZSB2b2lkIHNob3dUaXAoKSB7CisJCVN0cmluZyB0ZXh0ID0gbnVsbDsKKwkJdG9vbHRpcG93bmVyID0gbnVsbDsKKwkJU3RyaW5nIGNsYXNzbmFtZSA9IGdldENsYXNzKG1vdXNlaW5zaWRlKTsKKwkJaWYgKChjbGFzc25hbWUgPT0gInRhYmJlZHBhbmUiKSB8fCAoY2xhc3NuYW1lID09ICJtZW51YmFyIikgfHwgKGNsYXNzbmFtZSA9PSAicG9wdXBtZW51IikpIHsKKwkJCWlmIChpbnNpZGVwYXJ0ICE9IG51bGwpIHsKKwkJCQl0ZXh0ID0gZ2V0U3RyaW5nKGluc2lkZXBhcnQsICJ0b29sdGlwIiwgbnVsbCk7CisJCQl9CisJCX0KKwkJZWxzZSBpZiAoY2xhc3NuYW1lID09ICJjb21ib2xpc3QiKSB7CisJCQlpZiAoaW5zaWRlcGFydCBpbnN0YW5jZW9mIE9iamVjdFtdKSB7CisJCQkJdGV4dCA9IGdldFN0cmluZyhpbnNpZGVwYXJ0LCAidG9vbHRpcCIsIG51bGwpOworCQkJfQorCQl9CisJCS8vbGlzdCB0YWJsZSB0cmVlCisJCWlmICh0ZXh0ID09IG51bGwpIHsgdGV4dCA9IGdldFN0cmluZyhtb3VzZWluc2lkZSwgInRvb2x0aXAiLCBudWxsKTsgfQorCQkJZWxzZSB7IHRvb2x0aXBvd25lciA9IGluc2lkZXBhcnQ7IH0KKwkJaWYgKHRleHQgIT0gbnVsbCkgeworCQkJPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ0ZvbnRNZXRyaWNzJyI+Rm9udE1ldHJpY3M8L2Vycm9yPiBmbSA9IGdldEZvbnRNZXRyaWNzKGdldEZvbnQoKSk7CisJCQlpbnQgd2lkdGggPSBmbS48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIG1ldGhvZCAnc3RyaW5nV2lkdGgoamF2YS5sYW5nLlN0cmluZyknIj5zdHJpbmdXaWR0aDwvZXJyb3I+KHRleHQpICsgNDsKKwkJCWludCBoZWlnaHQgPSBmbS48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIG1ldGhvZCAnZ2V0QXNjZW50KCknIj5nZXRBc2NlbnQ8L2Vycm9yPigpICsgZm0uPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBtZXRob2QgJ2dldERlc2NlbnQoKSciPmdldERlc2NlbnQ8L2Vycm9yPigpICsgNDsKKwkJCWlmICh0b29sdGlwb3duZXIgPT0gbnVsbCkgeyB0b29sdGlwb3duZXIgPSBtb3VzZWluc2lkZTsgfQorCQkJc2V0UmVjdGFuZ2xlKHRvb2x0aXBvd25lciwgInRvb2x0aXBib3VuZHMiLCBtb3VzZXggKyAxMCwgbW91c2V5ICsgMTAsIHdpZHRoLCBoZWlnaHQpOworCQkJcmVwYWludChtb3VzZXggKyAxMCwgbW91c2V5ICsgMTAsIHdpZHRoLCBoZWlnaHQpOworCQl9CisJfQorCisJLyoqCisJICoKKwkgKi8KKwlwcml2YXRlIHZvaWQgaGlkZVRpcCgpIHsKKwkJaWYgKHRvb2x0aXBvd25lciAhPSBudWxsKSB7CisJCQk8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnUmVjdGFuZ2xlJyI+UmVjdGFuZ2xlPC9lcnJvcj4gYm91bmRzID0gZ2V0UmVjdGFuZ2xlKHRvb2x0aXBvd25lciwgInRvb2x0aXBib3VuZHMiKTsKKwkJCXNldCh0b29sdGlwb3duZXIsICJ0b29sdGlwYm91bmRzIiwgbnVsbCk7CisJCQl0b29sdGlwb3duZXIgPSBudWxsOworCQkJcmVwYWludChib3VuZHMuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ3gnIj54PC9lcnJvcj4sIGJvdW5kcy48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAneSciPnk8L2Vycm9yPiwgYm91bmRzLjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICd3aWR0aCciPndpZHRoPC9lcnJvcj4sIGJvdW5kcy48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnaGVpZ2h0JyI+aGVpZ2h0PC9lcnJvcj4pOworCQl9CisJfQorCisJLyoqCisJICoKKwkgKi8KKwlwcml2YXRlIHZvaWQgbGF5b3V0RmllbGQoT2JqZWN0IGNvbXBvbmVudCwgaW50IGR3LCBib29sZWFuIGhpZGRlbiwgaW50IGxlZnQpIHsKKwkJaW50IHdpZHRoID0gZ2V0UmVjdGFuZ2xlKGNvbXBvbmVudCwgImJvdW5kcyIpLjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICd3aWR0aCciPndpZHRoPC9lcnJvcj4gLSBsZWZ0IC1kdzsKKwkJU3RyaW5nIHRleHQgPSBnZXRTdHJpbmcoY29tcG9uZW50LCAidGV4dCIsICIiKTsKKwkJaW50IHN0YXJ0ID0gZ2V0SW50ZWdlcihjb21wb25lbnQsICJzdGFydCIsIDApOworCQlpZiAoc3RhcnQgPiB0ZXh0Lmxlbmd0aCgpKSB7IHNldEludGVnZXIoY29tcG9uZW50LCAic3RhcnQiLCBzdGFydCA9IHRleHQubGVuZ3RoKCksIDApOyB9CisJCWludCBlbmQgPSBnZXRJbnRlZ2VyKGNvbXBvbmVudCwgImVuZCIsIDApOworCQlpZiAoZW5kID4gdGV4dC5sZW5ndGgoKSkgeyBzZXRJbnRlZ2VyKGNvbXBvbmVudCwgImVuZCIsIGVuZCA9IHRleHQubGVuZ3RoKCksIDApOyB9CisJCWludCBvZmZzZXQgPSBnZXRJbnRlZ2VyKGNvbXBvbmVudCwgIm9mZnNldCIsIDApOworCQlpbnQgb2ZmID0gb2Zmc2V0OworCQk8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnRm9udE1ldHJpY3MnIj5Gb250TWV0cmljczwvZXJyb3I+IGZtID0gZ2V0Rm9udE1ldHJpY3MoZ2V0Rm9udCgpKTsKKwkJaW50IGNhcmV0ID0gaGlkZGVuID8gKGZtLjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgbWV0aG9kICdjaGFyV2lkdGgoY2hhciknIj5jaGFyV2lkdGg8L2Vycm9yPignKicpICogZW5kKSA6CisJCQlmbS48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIG1ldGhvZCAnc3RyaW5nV2lkdGgoamF2YS5sYW5nLlN0cmluZyknIj5zdHJpbmdXaWR0aDwvZXJyb3I+KHRleHQuc3Vic3RyaW5nKDAsIGVuZCkpOyAvL2phdmEKKwkJCS8vbWlkcCBmb250LnN1YnN0cmluZ1dpZHRoKHRleHQsIDAsIGVuZCk7CisJCWlmIChvZmYgPiBjYXJldCkgeworCQkJb2ZmID0gY2FyZXQ7CisJCX0KKwkJZWxzZSBpZiAob2ZmIDwgY2FyZXQgLSB3aWR0aCArIDQpIHsKKwkJCW9mZiA9IGNhcmV0IC0gd2lkdGggKyA0OworCQl9CisJCW9mZiA9IE1hdGgubWF4PGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBtZXRob2QgJ21heChpbnQsID8pJyI+KDAsIE1hdGgubWluPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBtZXRob2QgJ21pbihpbnQsID8pJyI+KG9mZiwgKGhpZGRlbiA/IChmbS48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIG1ldGhvZCAnY2hhcldpZHRoKGNoYXIpJyI+Y2hhcldpZHRoPC9lcnJvcj4oJyonKSAqCisJCQl0ZXh0Lmxlbmd0aCgpKSA6IGZtLjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgbWV0aG9kICdzdHJpbmdXaWR0aChqYXZhLmxhbmcuU3RyaW5nKSciPnN0cmluZ1dpZHRoPC9lcnJvcj4odGV4dCkpIC0gd2lkdGggKyA0KTwvZXJyb3I+KTwvZXJyb3I+OworCQlpZiAob2ZmICE9IG9mZnNldCkgeworCQkJc2V0SW50ZWdlcihjb21wb25lbnQsICJvZmZzZXQiLCBvZmYsIDApOworCQl9CisJfQorCisJLyoqCisJICoKKwkgKi8KKwlwcml2YXRlIHZvaWQgbGF5b3V0U2Nyb2xsUGFuZShPYmplY3QgY29tcG9uZW50LAorCQkJaW50IGNvbnRlbnR3aWR0aCwgaW50IGNvbnRlbnRoZWlnaHQsIGludCByb3d3aWR0aCwgaW50IGNvbHVtbmhlaWdodCkgeworCQk8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnUmVjdGFuZ2xlJyI+UmVjdGFuZ2xlPC9lcnJvcj4gYm91bmRzID0gZ2V0UmVjdGFuZ2xlKGNvbXBvbmVudCwgImJvdW5kcyIpOworCQlib29sZWFuIGhuZWVkID0gZmFsc2U7IGJvb2xlYW4gdm5lZWQgPSBmYWxzZTsKKwkJaWYgKGNvbnRlbnR3aWR0aCA+IGJvdW5kcy48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnd2lkdGgnIj53aWR0aDwvZXJyb3I+IC0gcm93d2lkdGggLSAyKSB7CisJCQlobmVlZCA9IHRydWU7CisJCQl2bmVlZCA9IChjb250ZW50aGVpZ2h0ID4gYm91bmRzLjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdoZWlnaHQnIj5oZWlnaHQ8L2Vycm9yPiAtIGNvbHVtbmhlaWdodCAtIDIgLSBibG9jayk7CisJCX0KKwkJaWYgKHZuZWVkIHx8IChjb250ZW50aGVpZ2h0ID4gYm91bmRzLjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdoZWlnaHQnIj5oZWlnaHQ8L2Vycm9yPiAtIGNvbHVtbmhlaWdodCAtIDIpKSB7CisJCQl2bmVlZCA9IHRydWU7CisJCQlobmVlZCA9IGhuZWVkIHx8IChjb250ZW50d2lkdGggPiBib3VuZHMuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ3dpZHRoJyI+d2lkdGg8L2Vycm9yPiAtIHJvd3dpZHRoIC0gMiAtIGJsb2NrKTsKKwkJfQorCQlpbnQgdmlld3BvcnR3aWR0aCA9IGJvdW5kcy48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnd2lkdGgnIj53aWR0aDwvZXJyb3I+IC0gcm93d2lkdGggLSAodm5lZWQgPyBibG9jayA6IDApOworCQlpbnQgdmlld3BvcnRoZWlnaHQgPSBib3VuZHMuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ2hlaWdodCciPmhlaWdodDwvZXJyb3I+IC0gY29sdW1uaGVpZ2h0IC0gKGhuZWVkID8gYmxvY2sgOiAwKTsKKwkJc2V0UmVjdGFuZ2xlKGNvbXBvbmVudCwgIjpwb3J0IiwKKwkJCXJvd3dpZHRoLCBjb2x1bW5oZWlnaHQsIHZpZXdwb3J0d2lkdGgsIHZpZXdwb3J0aGVpZ2h0KTsgLy8/cm93d2lkdGgKKworCQk8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnUmVjdGFuZ2xlJyI+UmVjdGFuZ2xlPC9lcnJvcj4gdmlldyA9IGdldFJlY3RhbmdsZShjb21wb25lbnQsICI6dmlldyIpOworCQlzZXRSZWN0YW5nbGUoY29tcG9uZW50LCAiOnZpZXciLAorCQkJKHZpZXcgIT0gbnVsbCkgPyBNYXRoLm1heDxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgbWV0aG9kICdtYXgoaW50LCA/KSciPigwLAorCQkJCU1hdGgubWluPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBtZXRob2QgJ21pbig/LCBpbnQpJyI+KHZpZXcuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ3gnIj54PC9lcnJvcj4sIGNvbnRlbnR3aWR0aCAtIHZpZXdwb3J0d2lkdGggKyAyKTwvZXJyb3I+KTwvZXJyb3I+IDogMCwKKwkJCSh2aWV3ICE9IG51bGwpID8gTWF0aC5tYXg8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIG1ldGhvZCAnbWF4KGludCwgPyknIj4oMCwKKwkJCQlNYXRoLm1pbjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgbWV0aG9kICdtaW4oPywgaW50KSciPih2aWV3LjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICd5JyI+eTwvZXJyb3I+LCBjb250ZW50aGVpZ2h0IC0gdmlld3BvcnRoZWlnaHQgKyAyKTwvZXJyb3I+KTwvZXJyb3I+IDogMCwKKwkJCU1hdGgubWF4KHZpZXdwb3J0d2lkdGggLSAyLCBjb250ZW50d2lkdGgpLAorCQkJTWF0aC5tYXgodmlld3BvcnRoZWlnaHQgLSAyLCBjb250ZW50aGVpZ2h0KSk7CisJfQorCisJLyoqCisJICoKKwkgKi8KKwlwcml2YXRlIHZvaWQgc2Nyb2xsVG9WaXNpYmxlKE9iamVjdCBjb21wb25lbnQsCisJCQlpbnQgeCwgaW50IHksIGludCB3aWR0aCwgaW50IGhlaWdodCkgeworCQk8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnUmVjdGFuZ2xlJyI+UmVjdGFuZ2xlPC9lcnJvcj4gdmlldyA9IGdldFJlY3RhbmdsZShjb21wb25lbnQsICI6dmlldyIpOworCQk8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnUmVjdGFuZ2xlJyI+UmVjdGFuZ2xlPC9lcnJvcj4gcG9ydCA9IGdldFJlY3RhbmdsZShjb21wb25lbnQsICI6cG9ydCIpOworCQlpbnQgdnggPSBNYXRoLm1heDxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgbWV0aG9kICdtYXgoPywgPyknIj4oeCArIHdpZHRoIC0gcG9ydC48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnd2lkdGgnIj53aWR0aDwvZXJyb3I+ICsgMiwgTWF0aC5taW48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIG1ldGhvZCAnbWluKD8sIGludCknIj4odmlldy48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAneCciPng8L2Vycm9yPiwgeCk8L2Vycm9yPik8L2Vycm9yPjsKKwkJaW50IHZ5ID0gTWF0aC5tYXg8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIG1ldGhvZCAnbWF4KD8sID8pJyI+KHkgKyBoZWlnaHQgLSBwb3J0LjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdoZWlnaHQnIj5oZWlnaHQ8L2Vycm9yPiArIDIsIE1hdGgubWluPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBtZXRob2QgJ21pbig/LCBpbnQpJyI+KHZpZXcuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ3knIj55PC9lcnJvcj4sIHkpPC9lcnJvcj4pPC9lcnJvcj47CisJCWlmICgodmlldy48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAneCciPng8L2Vycm9yPiAhPSB2eCkgfHwgKHZpZXcuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ3knIj55PC9lcnJvcj4gIT0gdnkpKSB7CisJCQlyZXBhaW50KGNvbXBvbmVudCk7IC8vIGhvcml6b250YWwgfCB2ZXJ0aWNhbAorCQkJdmlldy48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAneCciPng8L2Vycm9yPiA9IHZ4OyB2aWV3LjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICd5JyI+eTwvZXJyb3I+ID0gdnk7CisJCX0KKwl9CisKKwkvKioKKwkgKgorCSAqLworCXB1YmxpYyBEaW1lbnNpb24gZ2V0UHJlZmVycmVkU2l6ZSgpIHsKKwkJcmV0dXJuIGdldFByZWZlcnJlZFNpemUoY29udGVudCk7CisJfQorCisJLyoqCisJICoKKwkgKi8KKwlwcml2YXRlIERpbWVuc2lvbiBnZXRQcmVmZXJyZWRTaXplKE9iamVjdCBjb21wb25lbnQpIHsKKwkJaW50IHdpZHRoID0gZ2V0SW50ZWdlcihjb21wb25lbnQsICJ3aWR0aCIsIDApOworCQlpbnQgaGVpZ2h0ID0gZ2V0SW50ZWdlcihjb21wb25lbnQsICJoZWlnaHQiLCAwKTsKKwkJaWYgKCh3aWR0aCA+IDApICYmIChoZWlnaHQgPiAwKSkgeworCQkJcmV0dXJuIG5ldyBEaW1lbnNpb24od2lkdGgsIGhlaWdodCk7CisJCX0KKwkJU3RyaW5nIGNsYXNzbmFtZSA9IGdldENsYXNzKGNvbXBvbmVudCk7CisJCS8vU3lzdGVtLm91dC5wcmludGxuKCJjbGFzc25hbWU6ICIgKyBjbGFzc25hbWUpOworCQlpZiAoImxhYmVsIiA9PSBjbGFzc25hbWUpIHsKKwkJCXJldHVybiBnZXRTaXplKGNvbXBvbmVudCwgMCwgMCwgImxlZnQiKTsKKwkJfQorCQlpZiAoImJ1dHRvbiIgPT0gY2xhc3NuYW1lKSB7CisJCQlyZXR1cm4gZ2V0U2l6ZShjb21wb25lbnQsIDEyLCA2LCAiY2VudGVyIik7CisJCX0KKwkJaWYgKCJjaGVja2JveCIgPT0gY2xhc3NuYW1lKSB7CisJCQlEaW1lbnNpb24gZCA9IGdldFNpemUoY29tcG9uZW50LCAwLCAwLCAibGVmdCIpOworCQkJZC53aWR0aCA9IGQud2lkdGggKyBibG9jayArIDM7CisJCQlkLmhlaWdodCA9IE1hdGgubWF4KGJsb2NrLCBkLmhlaWdodCk7CisJCQlyZXR1cm4gZDsKKwkJfQorCQlpZiAoImNvbWJvYm94IiA9PSBjbGFzc25hbWUpIHsKKwkJCWlmIChnZXRCb29sZWFuKGNvbXBvbmVudCwgImVkaXRhYmxlIiwgdHJ1ZSkpIHsKKwkJCQlEaW1lbnNpb24gc2l6ZSA9IGdldEZpZWxkU2l6ZShjb21wb25lbnQpOworCQkJCTxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdJbWFnZSciPkltYWdlPC9lcnJvcj4gaWNvbiA9IGdldEljb24oY29tcG9uZW50LCAiaWNvbiIsIG51bGwpOworCQkJCWlmIChpY29uICE9IG51bGwpIHsKKwkJCQkJc2l6ZS53aWR0aCArPSBpY29uLjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgbWV0aG9kICdnZXRXaWR0aChUaGlubGV0KSciPmdldFdpZHRoPC9lcnJvcj4odGhpcyk7CisJCQkJCXNpemUuaGVpZ2h0ID0gTWF0aC5tYXg8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIG1ldGhvZCAnbWF4KGludCwgPyknIj4oc2l6ZS5oZWlnaHQsIGljb24uPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBtZXRob2QgJ2dldEhlaWdodChUaGlubGV0KSciPmdldEhlaWdodDwvZXJyb3I+KHRoaXMpICsgMik8L2Vycm9yPjsKKwkJCQl9CisJCQkJc2l6ZS53aWR0aCArPSBibG9jazsKKwkJCQlyZXR1cm4gc2l6ZTsKKwkJCX0gZWxzZSB7CisJCQkJaW50IHNlbGVjdGVkID0gZ2V0SW50ZWdlcihjb21wb25lbnQsICJzZWxlY3RlZCIsIC0xKTsKKwkJCQlyZXR1cm4gZ2V0U2l6ZSgoc2VsZWN0ZWQgIT0gLTEpID8KKwkJCQkJZ2V0SXRlbUltcGwoY29tcG9uZW50LCAiY2hvaWNlIiwgc2VsZWN0ZWQpIDoKKwkJCQkJZ2V0KGNvbXBvbmVudCwgImNob2ljZSIpLCA0ICsgYmxvY2ssIDQsICJsZWZ0Iik7CisJCQl9CisJCX0KKwkJaWYgKCgidGV4dGZpZWxkIiA9PSBjbGFzc25hbWUpIHx8ICgicGFzc3dvcmRmaWVsZCIgPT0gY2xhc3NuYW1lKSkgeworCQkJcmV0dXJuIGdldEZpZWxkU2l6ZShjb21wb25lbnQpOworCQl9CisJCWlmICgidGV4dGFyZWEiID09IGNsYXNzbmFtZSkgeworCQkJaW50IGNvbHVtbnMgPSBnZXRJbnRlZ2VyKGNvbXBvbmVudCwgImNvbHVtbnMiLCAwKTsKKwkJCWludCByb3dzID0gZ2V0SW50ZWdlcihjb21wb25lbnQsICJyb3dzIiwgMCk7IC8vICdlJyAtPiAnbScgPworCQkJPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ0ZvbnRNZXRyaWNzJyI+Rm9udE1ldHJpY3M8L2Vycm9yPiBmbSA9IGdldEZvbnRNZXRyaWNzKGdldEZvbnQoKSk7IC8vamF2YQorCQkJcmV0dXJuIG5ldyBEaW1lbnNpb24oCisJCQkJKChjb2x1bW5zID4gMCkgPyAoY29sdW1ucyAqIGZtLjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgbWV0aG9kICdjaGFyV2lkdGgoY2hhciknIj5jaGFyV2lkdGg8L2Vycm9yPignZScpICsgMikgOiA3NikgKyAyICsgYmxvY2ssCisJCQkJKChyb3dzID4gMCkgPyAocm93cyAqIGZtLjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgbWV0aG9kICdnZXRIZWlnaHQoKSciPmdldEhlaWdodDwvZXJyb3I+KCkgLSBmbS48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIG1ldGhvZCAnZ2V0TGVhZGluZygpJyI+Z2V0TGVhZGluZzwvZXJyb3I+KCkgKyAyKSA6IDc2KSArIDIgKyBibG9jayk7CisJCX0KKwkJaWYgKCJ0YWJiZWRwYW5lIiA9PSBjbGFzc25hbWUpIHsKKwkJCVN0cmluZyBwbGFjZW1lbnQgPSBnZXRTdHJpbmcoY29tcG9uZW50LCAicGxhY2VtZW50IiwgInRvcCIpOworCQkJYm9vbGVhbiBob3Jpem9udGFsID0gKChwbGFjZW1lbnQgPT0gInRvcCIpIHx8IChwbGFjZW1lbnQgPT0gImJvdHRvbSIpKTsKKwkJCWludCB0YWJzaXplID0gMDsKKwkJCWludCBjb250ZW50d2lkdGggPSAwOyBpbnQgY29udGVudGhlaWdodCA9IDA7CisJCQlmb3IgKE9iamVjdCBjb21wID0gZ2V0KGNvbXBvbmVudCwgInRhYiIpOworCQkJCQljb21wICE9IG51bGw7IGNvbXAgPSBnZXQoY29tcCwgIjpuZXh0IikpIHsKKwkJCQlEaW1lbnNpb24gZCA9IGdldFNpemUoY29tcCwgOCwgNCwgImxlZnQiKTsKKwkJCQl0YWJzaXplID0gTWF0aC5tYXgodGFic2l6ZSwgaG9yaXpvbnRhbCA/IGQuaGVpZ2h0IDogZC53aWR0aCk7CisJCQl9CisJCQlmb3IgKE9iamVjdCBjb21wID0gZ2V0KGNvbXBvbmVudCwgImNvbXBvbmVudCIpOworCQkJCQljb21wICE9IG51bGw7IGNvbXAgPSBnZXQoY29tcCwgIjpuZXh0IikpIHsKKwkJCQlpZiAoIWdldEJvb2xlYW4oY29tcCwgInZpc2libGUiLCB0cnVlKSkgeyBjb250aW51ZTsgfQorCQkJCURpbWVuc2lvbiBkID0gZ2V0UHJlZmVycmVkU2l6ZShjb21wKTsKKwkJCQljb250ZW50d2lkdGggPSBNYXRoLm1heChjb250ZW50d2lkdGgsIGQud2lkdGgpOworCQkJCWNvbnRlbnRoZWlnaHQgPSBNYXRoLm1heChjb250ZW50aGVpZ2h0LCBkLmhlaWdodCk7CisJCQl9CisJCQlyZXR1cm4gbmV3IERpbWVuc2lvbihjb250ZW50d2lkdGggKyAoaG9yaXpvbnRhbCA/IDQgOiAodGFic2l6ZSArIDMpKSwKKwkJCQljb250ZW50aGVpZ2h0ICsgKGhvcml6b250YWwgPyAodGFic2l6ZSArIDMpIDogNCkpOworCQl9CisJCWlmICgoInBhbmVsIiA9PSBjbGFzc25hbWUpIHx8IChjbGFzc25hbWUgPT0gImRpYWxvZyIpKSB7CisJCQlEaW1lbnNpb24gc2l6ZSA9IG5ldyBEaW1lbnNpb24oCisJCQkJZ2V0SW50ZWdlcihjb21wb25lbnQsICJsZWZ0IiwgMCkgKyBnZXRJbnRlZ2VyKGNvbXBvbmVudCwgInJpZ2h0IiwgMCksCisJCQkJZ2V0SW50ZWdlcihjb21wb25lbnQsICJ0b3AiLCAwKSArIGdldEludGVnZXIoY29tcG9uZW50LCAiYm90dG9tIiwgMCkpOworCQkJaWYgKGNsYXNzbmFtZSA9PSAiZGlhbG9nIikgeworCQkJCWludCB0aXRsZWhlaWdodCA9IGdldFNpemUoY29tcG9uZW50LCAwLCAwLCAibGVmdCIpLmhlaWdodDsKKwkJCQlzZXRJbnRlZ2VyKGNvbXBvbmVudCwgInRpdGxlaGVpZ2h0IiwgdGl0bGVoZWlnaHQsIDApOworCQkJCXNpemUud2lkdGggKz0gODsgc2l6ZS5oZWlnaHQgKz0gOCArIHRpdGxlaGVpZ2h0OworCQkJfQorCQkJaW50IGdhcCA9IGdldEludGVnZXIoY29tcG9uZW50LCAiZ2FwIiwgMCk7CisJCQlpbnRbXVtdIGdyaWQgPSBnZXRHcmlkKGNvbXBvbmVudCwgZ2FwKTsKKwkJCWlmIChncmlkICE9IG51bGwpIHsKKwkJCQlzaXplLndpZHRoICs9IGdldFN1bShncmlkWzBdLCAwLCBncmlkWzBdLmxlbmd0aCwgZ2FwLCBmYWxzZSk7CisJCQkJc2l6ZS5oZWlnaHQgKz0gZ2V0U3VtKGdyaWRbMV0sIDAsIGdyaWRbMV0ubGVuZ3RoLCBnYXAsIGZhbHNlKTsKKwkJCX0KKwkJCXJldHVybiBzaXplOworCQl9CisJCWVsc2UgaWYgKCJkZXNrdG9wIiA9PSBjbGFzc25hbWUpIHsKKwkJCURpbWVuc2lvbiBzaXplID0gbmV3IERpbWVuc2lvbigpOworCQkJZm9yIChPYmplY3QgY29tcCA9IGdldChjb21wb25lbnQsICJjb21wb25lbnQiKTsKKwkJCQkJY29tcCAhPSBudWxsOyBjb21wID0gZ2V0KGNvbXAsICI6bmV4dCIpKSB7CisJCQkJU3RyaW5nIGljbGFzcyA9IGdldENsYXNzKGNvbXApOworCQkJCWlmICgoaWNsYXNzICE9ICJkaWFsb2ciKSAmJiAoaWNsYXNzICE9ICJwb3B1cG1lbnUiKSAmJgorCQkJCQkJKGljbGFzcyAhPSAiY29tYm9saXN0IikpIHsKKwkJCQkJRGltZW5zaW9uIGQgPSBnZXRQcmVmZXJyZWRTaXplKGNvbXApOworCQkJCQlzaXplLndpZHRoID0gTWF0aC5tYXgoZC53aWR0aCwgc2l6ZS53aWR0aCk7CisJCQkJCXNpemUuaGVpZ2h0ID0gTWF0aC5tYXgoZC5oZWlnaHQsIHNpemUuaGVpZ2h0KTsKKwkJCQl9CisJCQl9CisJCQlyZXR1cm4gc2l6ZTsKKwkJfQorCQlpZiAoInNwaW5ib3giID09IGNsYXNzbmFtZSkgeworCQkJRGltZW5zaW9uIHNpemUgPSBnZXRGaWVsZFNpemUoY29tcG9uZW50KTsKKwkJCXNpemUud2lkdGggKz0gYmxvY2s7CisJCQlyZXR1cm4gc2l6ZTsKKwkJfQorCQlpZiAoInByb2dyZXNzYmFyIiA9PSBjbGFzc25hbWUpIHsKKwkJCWJvb2xlYW4gaG9yaXpvbnRhbCA9ICgidmVydGljYWwiICE9IGdldChjb21wb25lbnQsICJvcmllbnRhdGlvbiIpKTsKKwkJCXJldHVybiBuZXcgRGltZW5zaW9uKGhvcml6b250YWwgPyA3NiA6IDYsIGhvcml6b250YWwgPyA2IDogNzYpOworCQl9CisJCWlmICgic2xpZGVyIiA9PSBjbGFzc25hbWUpIHsKKwkJCWJvb2xlYW4gaG9yaXpvbnRhbCA9ICgidmVydGljYWwiICE9IGdldChjb21wb25lbnQsICJvcmllbnRhdGlvbiIpKTsKKwkJCXJldHVybiBuZXcgRGltZW5zaW9uKGhvcml6b250YWwgPyA3NiA6IDEwLCBob3Jpem9udGFsID8gMTAgOiA3Nik7CisJCX0KKwkJaWYgKCJzcGxpdHBhbmUiID09IGNsYXNzbmFtZSkgeworCQkJYm9vbGVhbiBob3Jpem9udGFsID0gKCJ2ZXJ0aWNhbCIgIT0gZ2V0KGNvbXBvbmVudCwgIm9yaWVudGF0aW9uIikpOworCQkJT2JqZWN0IGNvbXAxID0gZ2V0KGNvbXBvbmVudCwgImNvbXBvbmVudCIpOworCQkJRGltZW5zaW9uIHNpemUgPSAoKGNvbXAxID09IG51bGwpIHx8ICFnZXRCb29sZWFuKGNvbXAxLCAidmlzaWJsZSIsIHRydWUpKSA/CisJCQkJbmV3IERpbWVuc2lvbigpIDogZ2V0UHJlZmVycmVkU2l6ZShjb21wMSk7CisJCQlPYmplY3QgY29tcDIgPSBnZXQoY29tcDEsICI6bmV4dCIpOworCQkJaWYgKChjb21wMiAhPSBudWxsKSAmJiBnZXRCb29sZWFuKGNvbXAyLCAidmlzaWJsZSIsIHRydWUpKSB7CisJCQkJRGltZW5zaW9uIGQgPSBnZXRQcmVmZXJyZWRTaXplKGNvbXAyKTsKKwkJCQlzaXplLndpZHRoID0gaG9yaXpvbnRhbCA/IChzaXplLndpZHRoICsgZC53aWR0aCkgOgorCQkJCQlNYXRoLm1heChzaXplLndpZHRoLCBkLndpZHRoKTsKKwkJCQlzaXplLmhlaWdodCA9IGhvcml6b250YWwgPyBNYXRoLm1heChzaXplLmhlaWdodCwgZC5oZWlnaHQpIDoKKwkJCQkJKHNpemUuaGVpZ2h0ICsgZC5oZWlnaHQpOworCQkJfQorCQkJaWYgKGhvcml6b250YWwpIHsgc2l6ZS53aWR0aCArPSA1OyB9IGVsc2UgeyBzaXplLmhlaWdodCArPSA1OyB9CisJCQlyZXR1cm4gc2l6ZTsKKwkJfQorCQlpZiAoKCJsaXN0IiA9PSBjbGFzc25hbWUpIHx8CisJCQkJKCJ0YWJsZSIgPT0gY2xhc3NuYW1lKSB8fCAoInRyZWUiID09IGNsYXNzbmFtZSkpIHsKKwkJCXJldHVybiBuZXcgRGltZW5zaW9uKDc2ICsgMiArIGJsb2NrLCA3NiArIDIgKyBibG9jayk7CisJCX0KKwkJaWYgKCJzZXBhcmF0b3IiID09IGNsYXNzbmFtZSkgeworCQkJcmV0dXJuIG5ldyBEaW1lbnNpb24oMSwgMSk7CisJCX0KKwkJaWYgKCJtZW51YmFyIiA9PSBjbGFzc25hbWUpIHsKKwkJCURpbWVuc2lvbiBzaXplID0gbmV3IERpbWVuc2lvbigwLCAwKTsKKwkJCWZvciAoT2JqZWN0IG1lbnUgPSBnZXQoY29tcG9uZW50LCAibWVudSIpOworCQkJCQltZW51ICE9IG51bGw7IG1lbnUgPSBnZXQobWVudSwgIjpuZXh0IikpIHsKKwkJCQlEaW1lbnNpb24gZCA9IGdldFNpemUobWVudSwgOCwgNCwgImxlZnQiKTsKKwkJCQlzaXplLndpZHRoICs9IGQud2lkdGg7CisJCQkJc2l6ZS5oZWlnaHQgPSBNYXRoLm1heChzaXplLmhlaWdodCwgZC5oZWlnaHQpOworCQkJfQorCQkJcmV0dXJuIHNpemU7CisJCX0KKwkJLy9qYXZhPgorCQlpZiAoImJlYW4iID09IGNsYXNzbmFtZSkgeworCQkJCXJldHVybiAoKENvbXBvbmVudCkgZ2V0KGNvbXBvbmVudCwgImJlYW4iKSkuZ2V0UHJlZmVycmVkU2l6ZSgpOworCQl9CisJCS8vPGphdmEKKwkJdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigoU3RyaW5nKSBjbGFzc25hbWUpOworCX0KKworCS8qKgorCSAqCisJICovCisJcHJpdmF0ZSBpbnRbXVtdIGdldEdyaWQoT2JqZWN0IGNvbXBvbmVudCwgaW50IGdhcCkgeworCQlpbnQgY291bnQgPSAwOworCQlmb3IgKE9iamVjdCBjb21wID0gZ2V0KGNvbXBvbmVudCwgImNvbXBvbmVudCIpOyBjb21wICE9IG51bGw7CisJCQkJY29tcCA9IGdldChjb21wLCAiOm5leHQiKSkgeworCQkJaWYgKGdldEJvb2xlYW4oY29tcCwgInZpc2libGUiLCB0cnVlKSkgeyBjb3VudCsrOyB9CisJCX0KKwkJaWYgKGNvdW50ID09IDApIHsgcmV0dXJuIG51bGw7IH0KKwkJaW50IGNvbHVtbnMgPSBnZXRJbnRlZ2VyKGNvbXBvbmVudCwgImNvbHVtbnMiLCAwKTsKKwkJaW50IGljb2xzID0gKGNvbHVtbnMgIT0gMCkgPyBjb2x1bW5zIDogY291bnQ7CisJCWludCBpcm93cyA9IChjb2x1bW5zICE9IDApID8gKChjb3VudCArIGNvbHVtbnMgLSAxKSAvIGNvbHVtbnMpIDogMTsKKwkJaW50W11bXSBncmlkID0geworCQkJbmV3IGludFtpY29sc10sIG5ldyBpbnRbaXJvd3NdLCAvLyBjb2x1bW53aWR0aHMsIHJvd2hlaWdodHMKKwkJCW5ldyBpbnRbaWNvbHNdLCBuZXcgaW50W2lyb3dzXSwgLy8gY29sdW1ud2VpZ2h0cywgcm93d2VpZ2h0cworCQkJbmV3IGludFtjb3VudF0sIG5ldyBpbnRbY291bnRdLCAvLyBncmlkeCwgZ3JpZHkKKwkJCW5ldyBpbnRbY291bnRdLCBuZXcgaW50W2NvdW50XSB9OyAvLyBncmlkd2lkdGgsIGdyaWRoZWlnaHQKKwkJaW50W10gY29sdW1uaGVpZ2h0ID0gbmV3IGludFtpY29sc107CisJCWludFtdW10gY2FjaGUgPSBudWxsOyAvLyBwcmVmZXJyZWR3aWR0aCwgaGVpZ2h0LCBjb2x1bW53ZWlnaHQsIHJvd3dlaWdodAorCisJCWludCBpID0gMDsgaW50IHggPSAwOyBpbnQgeSA9IDA7CisJCWludCBuZXh0c2l6ZSA9IDA7CisJCWZvciAoT2JqZWN0IGNvbXAgPSBnZXQoY29tcG9uZW50LCAiY29tcG9uZW50Iik7CisJCQkJY29tcCAhPSBudWxsOyBjb21wID0gZ2V0KGNvbXAsICI6bmV4dCIpKSB7CisJCQlpZiAoIWdldEJvb2xlYW4oY29tcCwgInZpc2libGUiLCB0cnVlKSkgeyBjb250aW51ZTsgfQorCQkJaW50IGNvbHNwYW4gPSAoKGNvbHVtbnMgIT0gMCkgJiYgKGNvbHVtbnMgPCBjb3VudCkpID8KKwkJCQlNYXRoLm1pbihnZXRJbnRlZ2VyKGNvbXAsICJjb2xzcGFuIiwgMSksIGNvbHVtbnMpIDogMTsKKwkJCWludCByb3dzcGFuID0gKGNvbHVtbnMgIT0gMSkgPyBnZXRJbnRlZ2VyKGNvbXAsICJyb3dzcGFuIiwgMSkgOiAxOworCisJCQlmb3IgKGludCBqID0gMDsgaiA8IGNvbHNwYW47IGorKykgeworCQkJCWlmICgoY29sdW1ucyAhPSAwKSAmJiAoeCArIGNvbHNwYW4gPiBjb2x1bW5zKSkgeworCQkJCQl4ID0gMDsgeSsrOyBqID0gLTE7CisJCQkJfQorCQkJCWVsc2UgaWYgKGNvbHVtbmhlaWdodFt4ICsgal0gPiB5KSB7CisJCQkJCXggKz0gKGogKyAxKTsgaiA9IC0xOworCQkJCX0KKwkJCX0KKwkJCWlmICh5ICsgcm93c3BhbiA+IGdyaWRbMV0ubGVuZ3RoKSB7CisJCQkJaW50W10gcm93aGVpZ2h0cyA9IG5ldyBpbnRbeSArIHJvd3NwYW5dOworCQkJCVN5c3RlbS5hcnJheWNvcHkoZ3JpZFsxXSwgMCwgcm93aGVpZ2h0cywgMCwgZ3JpZFsxXS5sZW5ndGgpOworCQkJCWdyaWRbMV0gPSByb3doZWlnaHRzOworCQkJCWludFtdIHJvd3dlaWdodHMgPSBuZXcgaW50W3kgKyByb3dzcGFuXTsKKwkJCQlTeXN0ZW0uYXJyYXljb3B5KGdyaWRbM10sIDAsIHJvd3dlaWdodHMsIDAsIGdyaWRbM10ubGVuZ3RoKTsKKwkJCQlncmlkWzNdID0gcm93d2VpZ2h0czsKKwkJCX0KKwkJCWZvciAoaW50IGogPSAwOyBqIDwgY29sc3BhbjsgaisrKSB7CisJCQkJY29sdW1uaGVpZ2h0W3ggKyBqXSA9IHkgKyByb3dzcGFuOworCQkJfQorCisJCQlpbnQgd2VpZ2h0eCA9IGdldEludGVnZXIoY29tcCwgIndlaWdodHgiLCAwKTsKKwkJCWludCB3ZWlnaHR5ID0gZ2V0SW50ZWdlcihjb21wLCAid2VpZ2h0eSIsIDApOworCQkJRGltZW5zaW9uIGQgPSBnZXRQcmVmZXJyZWRTaXplKGNvbXApOworCisJCQlpZiAoY29sc3BhbiA9PSAxKSB7CisJCQkJZ3JpZFswXVt4XSA9IE1hdGgubWF4KGdyaWRbMF1beF0sIGQud2lkdGgpOyAvLyBjb2x1bW53aWR0aHMKKwkJCQlncmlkWzJdW3hdID0gTWF0aC5tYXgoZ3JpZFsyXVt4XSwgd2VpZ2h0eCk7IC8vIGNvbHVtbndlaWdodHMKKwkJCX0KKwkJCWVsc2UgeworCQkJCWlmIChjYWNoZSA9PSBudWxsKSB7IGNhY2hlID0gbmV3IGludFs0XVtjb3VudF07IH0KKwkJCQljYWNoZVswXVtpXSA9IGQud2lkdGg7CisJCQkJY2FjaGVbMl1baV0gPSB3ZWlnaHR4OworCQkJCWlmICgobmV4dHNpemUgPT0gMCkgfHwgKGNvbHNwYW4gPCBuZXh0c2l6ZSkpIHsgbmV4dHNpemUgPSBjb2xzcGFuOyB9CisJCQl9CisJCQlpZiAocm93c3BhbiA9PSAxKSB7CisJCQkJZ3JpZFsxXVt5XSA9IE1hdGgubWF4KGdyaWRbMV1beV0sIGQuaGVpZ2h0KTsgLy8gcm93aGVpZ2h0cworCQkJCWdyaWRbM11beV0gPSBNYXRoLm1heChncmlkWzNdW3ldLCB3ZWlnaHR5KTsgLy8gcm93d2VpZ2h0cworCQkJfQorCQkJZWxzZSB7CisJCQkJaWYgKGNhY2hlID09IG51bGwpIHsgY2FjaGUgPSBuZXcgaW50WzRdW2NvdW50XTsgfQorCQkJCWNhY2hlWzFdW2ldID0gZC5oZWlnaHQ7CisJCQkJY2FjaGVbM11baV0gPSB3ZWlnaHR5OworCQkJCWlmICgobmV4dHNpemUgPT0gMCkgfHwgKHJvd3NwYW4gPCBuZXh0c2l6ZSkpIHsgbmV4dHNpemUgPSByb3dzcGFuOyB9CisJCQl9CisJCQlncmlkWzRdW2ldID0geDsgLy9ncmlkeAorCQkJZ3JpZFs1XVtpXSA9IHk7IC8vZ3JpZHkKKwkJCWdyaWRbNl1baV0gPSBjb2xzcGFuOyAvL2dyaWR3aWR0aAorCQkJZ3JpZFs3XVtpXSA9IHJvd3NwYW47IC8vZ3JpZGhlaWdodAorCisJCQl4ICs9IGNvbHNwYW47CisJCQlpKys7CisJCX0KKworCQl3aGlsZSAobmV4dHNpemUgIT0gMCkgeworCQkJaW50IHNpemUgPSBuZXh0c2l6ZTsgbmV4dHNpemUgPSAwOworCQkJZm9yIChpbnQgaiA9IDA7IGogPCAyOyBqKyspIHsgLy8gaG9yaXpvbnRhbCwgdmVydGljYWwKKwkJCQlmb3IgKGludCBrID0gMDsgayA8IGNvdW50OyBrKyspIHsKKwkJCQkJaWYgKGdyaWRbNiArIGpdW2tdID09IHNpemUpIHsgLy8gZ3JpZHdpZHRoLCBncmlkaGVpZ2h0CisJCQkJCQlpbnQgZ3JpZHBvaW50ID0gZ3JpZFs0ICsgal1ba107IC8vIGdyaWR4LCBncmlkeQorCisJCQkJCQlpbnQgd2VpZ2h0ZGlmZiA9IGNhY2hlWzIgKyBqXVtrXTsKKwkJCQkJCWZvciAoaW50IG0gPSAwOyAod2VpZ2h0ZGlmZiA+IDApICYmIChtIDwgc2l6ZSk7IG0rKykgeworCQkJCQkJCXdlaWdodGRpZmYgLT0gZ3JpZFsyICsgal1bZ3JpZHBvaW50ICsgbV07CisJCQkJCQl9CisJCQkJCQlpZiAod2VpZ2h0ZGlmZiA+IDApIHsKKwkJCQkJCQlpbnQgd2VpZ2h0c3VtID0gY2FjaGVbMiArIGpdW2tdIC0gd2VpZ2h0ZGlmZjsKKwkJCQkJCQlmb3IgKGludCBtID0gMDsgKHdlaWdodHN1bSA+IDApICYmIChtIDwgc2l6ZSk7IG0rKykgeworCQkJCQkJCQlpbnQgd2VpZ2h0ID0gZ3JpZFsyICsgal1bZ3JpZHBvaW50ICsgbV07CisJCQkJCQkJCWlmICh3ZWlnaHQgPiAwKSB7CisJCQkJCQkJCQlpbnQgd2VpZ2h0aW5jID0gd2VpZ2h0ICogd2VpZ2h0ZGlmZiAvIHdlaWdodHN1bTsKKwkJCQkJCQkJCWdyaWRbMiArIGpdW2dyaWRwb2ludCArIG1dICs9IHdlaWdodGluYzsKKwkJCQkJCQkJCXdlaWdodGRpZmYgLT0gd2VpZ2h0aW5jOworCQkJCQkJCQkJd2VpZ2h0c3VtIC09IHdlaWdodGluYzsKKwkJCQkJCQkJfQorCQkJCQkJCX0KKwkJCQkJCQlncmlkWzIgKyBqXVtncmlkcG9pbnQgKyBzaXplIC0gMV0gKz0gd2VpZ2h0ZGlmZjsKKwkJCQkJCX0KKworCQkJCQkJaW50IHNpemVkaWZmID0gY2FjaGVbal1ba107CisJCQkJCQlpbnQgd2VpZ2h0c3VtID0gMDsKKwkJCQkJCWZvciAoaW50IG0gPSAwOyAoc2l6ZWRpZmYgPiAwKSAmJiAobSA8IHNpemUpOyBtKyspIHsKKwkJCQkJCQlzaXplZGlmZiAtPSBncmlkW2pdW2dyaWRwb2ludCArIG1dOworCQkJCQkJCXdlaWdodHN1bSArPSBncmlkWzIgKyBqXVtncmlkcG9pbnQgKyBtXTsKKwkJCQkJCX0KKwkJCQkJCWlmIChzaXplZGlmZiA+IDApIHsKKwkJCQkJCQlmb3IgKGludCBtID0gMDsgKHdlaWdodHN1bSA+IDApICYmIChtIDwgc2l6ZSk7IG0rKykgeworCQkJCQkJCQlpbnQgd2VpZ2h0ID0gZ3JpZFsyICsgal1bZ3JpZHBvaW50ICsgbV07CisJCQkJCQkJCWlmICh3ZWlnaHQgPiAwKSB7CisJCQkJCQkJCQlpbnQgc2l6ZWluYyA9IHdlaWdodCAqIHNpemVkaWZmIC8gd2VpZ2h0c3VtOworCQkJCQkJCQkJZ3JpZFtqXVtncmlkcG9pbnQgKyBtXSArPSBzaXplaW5jOworCQkJCQkJCQkJc2l6ZWRpZmYgLT0gc2l6ZWluYzsKKwkJCQkJCQkJCXdlaWdodHN1bSAtPSB3ZWlnaHQ7CisJCQkJCQkJCX0KKwkJCQkJCQl9CisJCQkJCQkJZ3JpZFtqXVtncmlkcG9pbnQgKyBzaXplIC0gMV0gKz0gc2l6ZWRpZmY7CisJCQkJCQl9CisJCQkJCX0KKwkJCQkJZWxzZSBpZiAoKGdyaWRbNiArIGpdW2tdID4gc2l6ZSkgJiYKKwkJCQkJCQkoKG5leHRzaXplID09IDApIHx8IChncmlkWzYgKyBqXVtrXSA8IG5leHRzaXplKSkpIHsKKwkJCQkJCW5leHRzaXplID0gZ3JpZFs2ICsgal1ba107CisJCQkJCX0KKwkJCQl9CisJCQl9CisJCX0KKwkJcmV0dXJuIGdyaWQ7CisJfQorCisJLyoqCisJICoKKwkgKi8KKwlwcml2YXRlIGludCBnZXRTdW0oaW50W10gdmFsdWVzLAorCQkJaW50IGZyb20sIGludCBsZW5ndGgsIGludCBnYXAsIGJvb2xlYW4gbGFzdCkgeworCQlpZiAobGVuZ3RoIDw9IDApIHsgcmV0dXJuIDA7IH0KKwkJaW50IHZhbHVlID0gMDsKKwkJZm9yIChpbnQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgeworCQkJdmFsdWUgKz0gdmFsdWVzW2Zyb20gKyBpXTsKKwkJfQorCQlyZXR1cm4gdmFsdWUgKyAobGVuZ3RoIC0gKGxhc3QgPyAwIDogMSkpICogZ2FwOworCX0KKworCS8qKgorCSAqCisJICovCisJcHJpdmF0ZSBEaW1lbnNpb24gZ2V0RmllbGRTaXplKE9iamVjdCBjb21wb25lbnQpIHsKKwkJU3RyaW5nIHRleHQgPSBnZXRTdHJpbmcoY29tcG9uZW50LCAidGV4dCIsICIiKTsKKwkJaW50IGNvbHVtbnMgPSBnZXRJbnRlZ2VyKGNvbXBvbmVudCwgImNvbHVtbnMiLCAwKTsKKwkJPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ0ZvbnRNZXRyaWNzJyI+Rm9udE1ldHJpY3M8L2Vycm9yPiBmbSA9IGdldEZvbnRNZXRyaWNzKGdldEZvbnQoKSk7CisJCXJldHVybiBuZXcgRGltZW5zaW9uKCgoY29sdW1ucyA+IDApID8KKwkJCShjb2x1bW5zICogZm0uPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBtZXRob2QgJ2NoYXJXaWR0aChjaGFyKSciPmNoYXJXaWR0aDwvZXJyb3I+KCdlJykpIDogNzYpICsgNCwKKwkJCWZtLjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgbWV0aG9kICdnZXRBc2NlbnQoKSciPmdldEFzY2VudDwvZXJyb3I+KCkgKyBmbS48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIG1ldGhvZCAnZ2V0RGVzY2VudCgpJyI+Z2V0RGVzY2VudDwvZXJyb3I+KCkgKyA0KTsgLy8gZm0uc3RyaW5nV2lkdGgodGV4dCkKKwl9CisKKwkvKioKKwkgKgorCSAqLworCXByaXZhdGUgRGltZW5zaW9uIGdldFNpemUoT2JqZWN0IGNvbXBvbmVudCwKKwkJCWludCBkeCwgaW50IGR5LCBTdHJpbmcgZGVmYXVsdGFsaWdubWVudCkgeworCQlTdHJpbmcgdGV4dCA9IGdldFN0cmluZyhjb21wb25lbnQsICJ0ZXh0IiwgbnVsbCk7CisJCWludCB0dyA9IDA7IGludCB0aCA9IDA7CisJCWlmICh0ZXh0ICE9IG51bGwpIHsKKwkJCTxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdGb250TWV0cmljcyciPkZvbnRNZXRyaWNzPC9lcnJvcj4gZm0gPSBnZXRGb250TWV0cmljcyhnZXRGb250KCkpOworCQkJdHcgPSBmbS48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIG1ldGhvZCAnc3RyaW5nV2lkdGgoamF2YS5sYW5nLlN0cmluZyknIj5zdHJpbmdXaWR0aDwvZXJyb3I+KHRleHQpOworCQkJdGggPSBmbS48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIG1ldGhvZCAnZ2V0QXNjZW50KCknIj5nZXRBc2NlbnQ8L2Vycm9yPigpICsgZm0uPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBtZXRob2QgJ2dldERlc2NlbnQoKSciPmdldERlc2NlbnQ8L2Vycm9yPigpOworCQl9CisJCTxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdJbWFnZSciPkltYWdlPC9lcnJvcj4gaWNvbiA9IGdldEljb24oY29tcG9uZW50LCAiaWNvbiIsIG51bGwpOworCQlpbnQgaXcgPSAwOyBpbnQgaWggPSAwOworCQlpZiAoaWNvbiAhPSBudWxsKSB7CisJCQlpdyA9IGljb24uPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBtZXRob2QgJ2dldFdpZHRoKFRoaW5sZXQpJyI+Z2V0V2lkdGg8L2Vycm9yPih0aGlzKTsKKwkJCWloID0gaWNvbi48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIG1ldGhvZCAnZ2V0SGVpZ2h0KFRoaW5sZXQpJyI+Z2V0SGVpZ2h0PC9lcnJvcj4odGhpcyk7CisJCX0KKwkJcmV0dXJuIG5ldyBEaW1lbnNpb24odHcgKyBpdyArIGR4LCBNYXRoLm1heCh0aCwgaWgpICsgZHkpOworCX0KKwkvL2phdmE+CisKKwkvKioKKwkgKgorCSAqLworCXB1YmxpYyB2b2lkIHVwZGF0ZSg8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnR3JhcGhpY3MnIj5HcmFwaGljczwvZXJyb3I+IGcpIHsKKwkJcGFpbnQoZyk7CisJfQorCisJLyoqCisJICp+CisJICovCisJcHVibGljIGJvb2xlYW4gaW1hZ2VVcGRhdGUoPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ0ltYWdlJyI+SW1hZ2U8L2Vycm9yPiBpbWcsIGludCBpbmZvZmxhZ3MsIGludCB4LCBpbnQgeSwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KSB7CisJCWlmIChpbmZvZmxhZ3MgPT0gPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ0ltYWdlT2JzZXJ2ZXInIj5JbWFnZU9ic2VydmVyPC9lcnJvcj4uQUxMQklUUykgeworCQkJdmFsaWRhdGUoY29udGVudCk7CisJCQlyZXR1cm4gc3VwZXIuaW1hZ2VVcGRhdGUoaW1nLCBpbmZvZmxhZ3MsIHgsIHksIHdpZHRoLCBoZWlnaHQpOworCQl9CisJCXJldHVybiB0cnVlOworCX0KKworCS8qKgorCSAqCisJICovCisJcHVibGljIHZvaWQgcGFpbnQoPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ0dyYXBoaWNzJyI+R3JhcGhpY3M8L2Vycm9yPiBnKSB7CisJCS8vZy5zZXRDb2xvcihDb2xvci5vcmFuZ2UpOworCQkvL2cuZmlsbFJlY3QoMCwgMCwgZ2V0U2l6ZSgpLndpZHRoLCBnZXRTaXplKCkuaGVpZ2h0KTsKKwkJLy9sb25nIHRpbWUgPSBTeXN0ZW0uY3VycmVudFRpbWVNaWxsaXMoKTsKKwkJPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ1JlY3RhbmdsZSciPlJlY3RhbmdsZTwvZXJyb3I+IGNsaXAgPSBnLjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgbWV0aG9kICdnZXRDbGlwQm91bmRzKCknIj5nZXRDbGlwQm91bmRzPC9lcnJvcj4oKTsKKwkJLy8vZGcuc2V0Q2xpcChyLngsIHIueSwgci53aWR0aCwgci5oZWlnaHQpOworCQlwYWludChnLCBjbGlwLjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICd4JyI+eDwvZXJyb3I+LCBjbGlwLjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICd5JyI+eTwvZXJyb3I+LCBjbGlwLjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICd3aWR0aCciPndpZHRoPC9lcnJvcj4sIGNsaXAuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ2hlaWdodCciPmhlaWdodDwvZXJyb3I+LCBjb250ZW50LCBpc0VuYWJsZWQoKSk7CisJCS8vU3lzdGVtLm91dC5wcmludGxuKFN5c3RlbS5jdXJyZW50VGltZU1pbGxpcygpIC0gdGltZSk7CisJCS8vL2cuc2V0Q2xpcCgwLCAwLCBnZXRTaXplKCkud2lkdGgsIGdldFNpemUoKS5oZWlnaHQpOworCQkvL2cuc2V0Q29sb3IoQ29sb3IucmVkKTsgZy5kcmF3UmVjdChjbGlwLngsIGNsaXAueSwgY2xpcC53aWR0aCAtIDEsIGNsaXAuaGVpZ2h0IC0gMSk7CisJfQorCisJLy88amF2YQorCS8qbWlkcAorCXByb3RlY3RlZCB2b2lkIHBhaW50KEdyYXBoaWNzIGcpIHsKKwkJcGFpbnQoZywgZy5nZXRDbGlwWCgpLCBnLmdldENsaXBZKCksCisJCQlnLmdldENsaXBXaWR0aCgpLCBnLmdldENsaXBIZWlnaHQoKSwgY29udGVudCwgdHJ1ZSk7CisJfQorCisJcHJvdGVjdGVkIHZvaWQgc2hvd05vdGlmeSgpIHsKKwkJc2V0UmVjdGFuZ2xlKGNvbnRlbnQsICJib3VuZHMiLCAwLCAwLCBnZXRXaWR0aCgpLCBnZXRIZWlnaHQoKSk7CisJCWRvTGF5b3V0KGNvbnRlbnQpOworCX0KKwltaWRwKi8KKworCS8qKgorCSAqCisJICovCisJcHJpdmF0ZSB2b2lkIHBhaW50KDxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdHcmFwaGljcyciPkdyYXBoaWNzPC9lcnJvcj4gZywKKwkJCWludCBjbGlweCwgaW50IGNsaXB5LCBpbnQgY2xpcHdpZHRoLCBpbnQgY2xpcGhlaWdodCwKKwkJCU9iamVjdCBjb21wb25lbnQsIGJvb2xlYW4gZW5hYmxlZCkgeworCQlpZiAoIWdldEJvb2xlYW4oY29tcG9uZW50LCAidmlzaWJsZSIsIHRydWUpKSB7IHJldHVybjsgfQorCQk8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnUmVjdGFuZ2xlJyI+UmVjdGFuZ2xlPC9lcnJvcj4gYm91bmRzID0gZ2V0UmVjdGFuZ2xlKGNvbXBvbmVudCwgImJvdW5kcyIpOworCQlpZiAoYm91bmRzID09IG51bGwpIHsgcmV0dXJuOyB9CisJCWlmIChib3VuZHMuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ3dpZHRoJyI+d2lkdGg8L2Vycm9yPiA8IDApIHsKKwkJCWJvdW5kcy48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnd2lkdGgnIj53aWR0aDwvZXJyb3I+ID0gTWF0aC5hYnM8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIG1ldGhvZCAnYWJzKD8pJyI+KGJvdW5kcy48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnd2lkdGgnIj53aWR0aDwvZXJyb3I+KTwvZXJyb3I+OworCQkJZG9MYXlvdXQoY29tcG9uZW50KTsKKwkJfQorCQlpZiAoKGNsaXB4ICsgY2xpcHdpZHRoIDwgYm91bmRzLjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICd4JyI+eDwvZXJyb3I+KSB8fAorCQkJCShjbGlweCA+IGJvdW5kcy48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAneCciPng8L2Vycm9yPiArIGJvdW5kcy48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnd2lkdGgnIj53aWR0aDwvZXJyb3I+KSB8fAorCQkJCShjbGlweSArIGNsaXBoZWlnaHQgPCBib3VuZHMuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ3knIj55PC9lcnJvcj4pIHx8CisJCQkJKGNsaXB5ID4gYm91bmRzLjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICd5JyI+eTwvZXJyb3I+ICsgYm91bmRzLjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdoZWlnaHQnIj5oZWlnaHQ8L2Vycm9yPikpIHsKKwkJCXJldHVybjsKKwkJfQorCQljbGlweCAtPSBib3VuZHMuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ3gnIj54PC9lcnJvcj47IGNsaXB5IC09IGJvdW5kcy48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAneSciPnk8L2Vycm9yPjsKKwkJU3RyaW5nIGNsYXNzbmFtZSA9IGdldENsYXNzKGNvbXBvbmVudCk7CisJCWJvb2xlYW4gcHJlc3NlZCA9IChtb3VzZXByZXNzZWQgPT0gY29tcG9uZW50KTsKKwkJYm9vbGVhbiBpbnNpZGUgPSAobW91c2VpbnNpZGUgPT0gY29tcG9uZW50KSAmJgorCQkJKChtb3VzZXByZXNzZWQgPT0gbnVsbCkgfHwgcHJlc3NlZCk7CisJCWJvb2xlYW4gZm9jdXMgPSBmb2N1c2luc2lkZSAmJiAoZm9jdXNvd25lciA9PSBjb21wb25lbnQpOworCQllbmFibGVkID0gZ2V0Qm9vbGVhbihjb21wb25lbnQsICJlbmFibGVkIiwgdHJ1ZSk7IC8vZW5hYmxlZCAmJgorCQlnLjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgbWV0aG9kICd0cmFuc2xhdGUoPywgPyknIj50cmFuc2xhdGU8L2Vycm9yPihib3VuZHMuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ3gnIj54PC9lcnJvcj4sIGJvdW5kcy48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAneSciPnk8L2Vycm9yPik7CisJCS8vZy5zZXRDbGlwKDAsIDAsIGJvdW5kcy53aWR0aCwgYm91bmRzLmhlaWdodCk7CisKKwkJaWYgKCJsYWJlbCIgPT0gY2xhc3NuYW1lKSB7CisJCQlwYWludENvbnRlbnQoY29tcG9uZW50LCBnLCBjbGlweCwgY2xpcHksIGNsaXB3aWR0aCwgY2xpcGhlaWdodCwKKwkJCQkwLCAwLCBib3VuZHMuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ3dpZHRoJyI+d2lkdGg8L2Vycm9yPiwgYm91bmRzLjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdoZWlnaHQnIj5oZWlnaHQ8L2Vycm9yPiwKKwkJCQllbmFibGVkID8gY190ZXh0IDogY19kaXNhYmxlLCAibGVmdCIsIHRydWUpOworCQl9CisJCWVsc2UgaWYgKCJidXR0b24iID09IGNsYXNzbmFtZSkgeworCQkJcGFpbnRSZWN0KGcsIDAsIDAsIGJvdW5kcy48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnd2lkdGgnIj53aWR0aDwvZXJyb3I+LCBib3VuZHMuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ2hlaWdodCciPmhlaWdodDwvZXJyb3I+LAorCQkJCWVuYWJsZWQgPyBjX2JvcmRlciA6IGNfZGlzYWJsZSwKKwkJCQllbmFibGVkID8gKChpbnNpZGUgIT0gcHJlc3NlZCkgPyBjX2hvdmVyIDoKKwkJCQkJKHByZXNzZWQgPyBjX3ByZXNzIDogY19jdHJsKSkgOiBjX2JnLCB0cnVlLCB0cnVlLCB0cnVlLCB0cnVlKTsKKwkJCWlmIChmb2N1cykgeworCQkJCWcuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBtZXRob2QgJ3NldENvbG9yKENvbG9yKSciPnNldENvbG9yPC9lcnJvcj4oY19mb2N1cyk7CisJCQkJZy48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIG1ldGhvZCAnZHJhd1JlY3QoaW50LCBpbnQsID8sID8pJyI+ZHJhd1JlY3Q8L2Vycm9yPigyLCAyLCBib3VuZHMuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ3dpZHRoJyI+d2lkdGg8L2Vycm9yPiAtIDUsIGJvdW5kcy48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnaGVpZ2h0JyI+aGVpZ2h0PC9lcnJvcj4gLSA1KTsKKwkJCX0KKwkJCXBhaW50Q29udGVudChjb21wb25lbnQsIGcsIGNsaXB4LCBjbGlweSwgY2xpcHdpZHRoLCBjbGlwaGVpZ2h0LAorCQkJCTYsIDMsIGJvdW5kcy48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnd2lkdGgnIj53aWR0aDwvZXJyb3I+IC0gMTIsIGJvdW5kcy48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnaGVpZ2h0JyI+aGVpZ2h0PC9lcnJvcj4gLSA2LAorCQkJCWVuYWJsZWQgPyBjX3RleHQgOiBjX2Rpc2FibGUsICJjZW50ZXIiLCB0cnVlKTsKKwkJfQorCQllbHNlIGlmICgiY2hlY2tib3giID09IGNsYXNzbmFtZSkgeworCQkJYm9vbGVhbiBzZWxlY3RlZCA9IGdldEJvb2xlYW4oY29tcG9uZW50LCAic2VsZWN0ZWQiLCBmYWxzZSk7CisJCQlTdHJpbmcgZ3JvdXAgPSBnZXRTdHJpbmcoY29tcG9uZW50LCAiZ3JvdXAiLCBudWxsKTsKKwkJCTxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdDb2xvciciPkNvbG9yPC9lcnJvcj4gYm9yZGVyID0gZW5hYmxlZCA/IGNfYm9yZGVyIDogY19kaXNhYmxlOworCQkJPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ0NvbG9yJyI+Q29sb3I8L2Vycm9yPiBmb3JlZ3JvdW5kID0gZW5hYmxlZCA/ICgoaW5zaWRlICE9IHByZXNzZWQpID8gY19ob3ZlciA6CisJCQkJKHByZXNzZWQgPyBjX3ByZXNzIDogY19jdHJsKSkgOiBjX2JnOworCQkJaW50IGR5ID0gKGJvdW5kcy48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnaGVpZ2h0JyI+aGVpZ2h0PC9lcnJvcj4gLSBibG9jayArIDIpIC8gMjsKKwkJCWlmIChncm91cCA9PSBudWxsKSB7CisJCQkJcGFpbnRSZWN0KGcsIDEsIGR5ICsgMSwgYmxvY2sgLSAyLCBibG9jayAtIDIsCisJCQkJCWJvcmRlciwgZm9yZWdyb3VuZCwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSk7CisJCQl9IGVsc2UgeworCQkJCWcuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBtZXRob2QgJ3NldENvbG9yKENvbG9yKSciPnNldENvbG9yPC9lcnJvcj4oKGZvcmVncm91bmQgIT0gY19jdHJsKSA/IGZvcmVncm91bmQgOiBjX2JnKTsKKwkJCQlnLjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgbWV0aG9kICdmaWxsT3ZhbChpbnQsIGludCwgaW50LCBpbnQpJyI+ZmlsbE92YWw8L2Vycm9yPigxLCBkeSArIDEsIGJsb2NrIC0gMywgYmxvY2sgLSAzKTsgLy9qYXZhCisJCQkJZy48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIG1ldGhvZCAnc2V0Q29sb3IoQ29sb3IpJyI+c2V0Q29sb3I8L2Vycm9yPihib3JkZXIpOworCQkJCWcuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBtZXRob2QgJ2RyYXdPdmFsKGludCwgaW50LCBpbnQsIGludCknIj5kcmF3T3ZhbDwvZXJyb3I+KDEsIGR5ICsgMSwgYmxvY2sgLSAzLCBibG9jayAtIDMpOyAvL2phdmEKKwkJCX0KKwkJCWlmIChmb2N1cykgeworCQkJCWcuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBtZXRob2QgJ3NldENvbG9yKENvbG9yKSciPnNldENvbG9yPC9lcnJvcj4oY19mb2N1cyk7CisJCQkJaWYgKGdyb3VwID09IG51bGwpIHsKKwkJCQkJZy48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIG1ldGhvZCAnZHJhd1JlY3QoaW50LCBpbnQsIGludCwgaW50KSciPmRyYXdSZWN0PC9lcnJvcj4oMywgZHkgKyAzLCBibG9jayAtIDcsIGJsb2NrIC0gNyk7CisJCQkJfSBlbHNlIHsKKwkJCQkJZy48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIG1ldGhvZCAnZHJhd092YWwoaW50LCBpbnQsIGludCwgaW50KSciPmRyYXdPdmFsPC9lcnJvcj4oMywgZHkgKyAzLCBibG9jayAtIDcsIGJsb2NrIC0gNyk7IC8vamF2YQorCQkJCX0KKwkJCX0KKwkJCWlmKCghc2VsZWN0ZWQgJiYgaW5zaWRlICYmIHByZXNzZWQpIHx8CisJCQkJCShzZWxlY3RlZCAmJiAoIWluc2lkZSB8fCAhcHJlc3NlZCkpKSB7CisJCQkJZy48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIG1ldGhvZCAnc2V0Q29sb3IoQ29sb3IpJyI+c2V0Q29sb3I8L2Vycm9yPihlbmFibGVkID8gY190ZXh0IDogY19kaXNhYmxlKTsKKwkJCQlpZiAoZ3JvdXAgPT0gbnVsbCkgeworCQkJCQlnLjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgbWV0aG9kICdmaWxsUmVjdChpbnQsIGludCwgaW50LCBpbnQpJyI+ZmlsbFJlY3Q8L2Vycm9yPigzLCBkeSArIGJsb2NrIC0gOSwgMiwgNik7CisJCQkJCWcuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBtZXRob2QgJ2RyYXdMaW5lKGludCwgaW50LCBpbnQsIGludCknIj5kcmF3TGluZTwvZXJyb3I+KDMsIGR5ICsgYmxvY2sgLSA0LCBibG9jayAtIDQsIGR5ICsgMyk7CisJCQkJCWcuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBtZXRob2QgJ2RyYXdMaW5lKGludCwgaW50LCBpbnQsIGludCknIj5kcmF3TGluZTwvZXJyb3I+KDQsIGR5ICsgYmxvY2sgLSA0LCBibG9jayAtIDQsIGR5ICsgNCk7CisJCQkJfSBlbHNlIHsKKwkJCQkJZy48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIG1ldGhvZCAnZmlsbE92YWwoaW50LCBpbnQsIGludCwgaW50KSciPmZpbGxPdmFsPC9lcnJvcj4oNSwgZHkgKyA1LCBibG9jayAtIDEwLCBibG9jayAtIDEwKTsgLy9qYXZhCisJCQkJCWcuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBtZXRob2QgJ2RyYXdPdmFsKGludCwgaW50LCBpbnQsIGludCknIj5kcmF3T3ZhbDwvZXJyb3I+KDQsIGR5ICsgNCwgYmxvY2sgLSA5LCBibG9jayAtIDkpOyAvL2phdmEKKwkJCQl9CisJCQl9CisJCQlwYWludENvbnRlbnQoY29tcG9uZW50LCBnLCBjbGlweCwgY2xpcHksIGNsaXB3aWR0aCwgY2xpcGhlaWdodCwKKwkJCQlibG9jayArIDMsIDAsIGJvdW5kcy48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnd2lkdGgnIj53aWR0aDwvZXJyb3I+IC0gYmxvY2sgLSAzLCBib3VuZHMuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ2hlaWdodCciPmhlaWdodDwvZXJyb3I+LAorCQkJCWVuYWJsZWQgPyBjX3RleHQgOiBjX2Rpc2FibGUsICJsZWZ0IiwgdHJ1ZSk7CisJCX0KKwkJZWxzZSBpZiAoImNvbWJvYm94IiA9PSBjbGFzc25hbWUpIHsKKwkJCWlmIChnZXRCb29sZWFuKGNvbXBvbmVudCwgImVkaXRhYmxlIiwgdHJ1ZSkpIHsKKwkJCQk8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnSW1hZ2UnIj5JbWFnZTwvZXJyb3I+IGljb24gPSBnZXRJY29uKGNvbXBvbmVudCwgImljb24iLCBudWxsKTsKKwkJCQlpbnQgbGVmdCA9IChpY29uICE9IG51bGwpID8gaWNvbi48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIG1ldGhvZCAnZ2V0V2lkdGgoVGhpbmxldCknIj5nZXRXaWR0aDwvZXJyb3I+KHRoaXMpIDogMDsKKwkJCQlwYWludEZpZWxkKGcsIGNsaXB4LCBjbGlweSwgY2xpcHdpZHRoLCBjbGlwaGVpZ2h0LCBjb21wb25lbnQsCisJCQkJCWJvdW5kcy48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnd2lkdGgnIj53aWR0aDwvZXJyb3I+IC0gYmxvY2ssIGJvdW5kcy48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnaGVpZ2h0JyI+aGVpZ2h0PC9lcnJvcj4sCisJCQkJCWluc2lkZSwgcHJlc3NlZCwgZm9jdXMsIGVuYWJsZWQsIGZhbHNlLCBsZWZ0KTsKKwkJCQlpZiAoaWNvbiAhPSBudWxsKSB7CisJCQkJCWcuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBtZXRob2QgJ2RyYXdJbWFnZShJbWFnZSwgaW50LCA/LCBUaGlubGV0KSciPmRyYXdJbWFnZTwvZXJyb3I+KGljb24sIDIsIChib3VuZHMuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ2hlaWdodCciPmhlaWdodDwvZXJyb3I+IC0gaWNvbi48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIG1ldGhvZCAnZ2V0SGVpZ2h0KFRoaW5sZXQpJyI+Z2V0SGVpZ2h0PC9lcnJvcj4odGhpcykpIC8gMiwgdGhpcyk7IC8vamF2YQorCQkJCQkvL21pZHAgZy5kcmF3SW1hZ2UoaWNvbiwgMiwgYm91bmRzLmhlaWdodCAvIDIsIEdyYXBoaWNzLkxFRlQgfCBHcmFwaGljcy5WQ0VOVEVSKTsKKwkJCQl9CisJCQkJcGFpbnRBcnJvdyhnLCBib3VuZHMuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ3dpZHRoJyI+d2lkdGg8L2Vycm9yPiAtIGJsb2NrLCAwLCBibG9jaywgYm91bmRzLjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdoZWlnaHQnIj5oZWlnaHQ8L2Vycm9yPiwKKwkJCQkJJ1MnLCBlbmFibGVkLCBpbnNpZGUsIHByZXNzZWQsICJkb3duIiwgdHJ1ZSwgZmFsc2UsIHRydWUsIHRydWUpOworCQkJfSBlbHNlIHsKKwkJCQlwYWludFJlY3QoZywgMCwgMCwgYm91bmRzLjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICd3aWR0aCciPndpZHRoPC9lcnJvcj4sIGJvdW5kcy48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnaGVpZ2h0JyI+aGVpZ2h0PC9lcnJvcj4sCisJCQkJCWVuYWJsZWQgPyBjX2JvcmRlciA6IGNfZGlzYWJsZSwKKwkJCQkJZW5hYmxlZCA/ICgoaW5zaWRlICE9IHByZXNzZWQpID8gY19ob3ZlciA6CisJCQkJCQkocHJlc3NlZCA/IGNfcHJlc3MgOiBjX2N0cmwpKSA6IGNfYmcsIHRydWUsIHRydWUsIHRydWUsIHRydWUpOworCQkJCXBhaW50Q29udGVudChjb21wb25lbnQsIGcsIGNsaXB4LCBjbGlweSwgY2xpcHdpZHRoLCBjbGlwaGVpZ2h0LAorCQkJCQkyLCAyLCBib3VuZHMuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ3dpZHRoJyI+d2lkdGg8L2Vycm9yPiAtIGJsb2NrIC0gNCwgYm91bmRzLjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdoZWlnaHQnIj5oZWlnaHQ8L2Vycm9yPiAtIDQsCisJCQkJCWVuYWJsZWQgPyBjX3RleHQgOiBjX2Rpc2FibGUsICJsZWZ0IiwgZmFsc2UpOworCQkJCXBhaW50QXJyb3coZywgYm91bmRzLjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICd3aWR0aCciPndpZHRoPC9lcnJvcj4gLSBibG9jaywgMCwgYmxvY2ssIGJvdW5kcy48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnaGVpZ2h0JyI+aGVpZ2h0PC9lcnJvcj4sICdTJyk7CisJCQkJaWYgKGZvY3VzKSB7CisJCQkJCWcuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBtZXRob2QgJ3NldENvbG9yKENvbG9yKSciPnNldENvbG9yPC9lcnJvcj4oY19mb2N1cyk7CisJCQkJCWcuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBtZXRob2QgJ2RyYXdSZWN0KGludCwgaW50LCA/LCA/KSciPmRyYXdSZWN0PC9lcnJvcj4oMiwgMiwgYm91bmRzLjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICd3aWR0aCciPndpZHRoPC9lcnJvcj4gLSBibG9jayAtIDUsIGJvdW5kcy48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnaGVpZ2h0JyI+aGVpZ2h0PC9lcnJvcj4gLSA1KTsKKwkJCQl9CisJCQl9CisJCX0KKwkJZWxzZSBpZiAoImNvbWJvbGlzdCIgPT0gY2xhc3NuYW1lKSB7CisJCQk8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnUmVjdGFuZ2xlJyI+UmVjdGFuZ2xlPC9lcnJvcj4gdmlldyA9IGdldFJlY3RhbmdsZShjb21wb25lbnQsICI6dmlldyIpOworCQkJPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ1JlY3RhbmdsZSciPlJlY3RhbmdsZTwvZXJyb3I+IHZpZXdwb3J0ID0gZ2V0UmVjdGFuZ2xlKGNvbXBvbmVudCwgIjpwb3J0Iik7CisJCQlnLjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgbWV0aG9kICdzZXRDb2xvcihDb2xvciknIj5zZXRDb2xvcjwvZXJyb3I+KGNfYm9yZGVyKTsKKwkJCWcuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBtZXRob2QgJ2RyYXdSZWN0KD8sID8sID8sID8pJyI+ZHJhd1JlY3Q8L2Vycm9yPih2aWV3cG9ydC48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAneCciPng8L2Vycm9yPiwgdmlld3BvcnQuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ3knIj55PC9lcnJvcj4sIHZpZXdwb3J0LjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICd3aWR0aCciPndpZHRoPC9lcnJvcj4gLSAxLCB2aWV3cG9ydC48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnaGVpZ2h0JyI+aGVpZ2h0PC9lcnJvcj4gLSAxKTsKKwkJCWlmIChwYWludFNjcm9sbFBhbmUoZywgY2xpcHgsIGNsaXB5LCBjbGlwd2lkdGgsIGNsaXBoZWlnaHQsCisJCQkJCWJvdW5kcywgdmlldywgdmlld3BvcnQsIGVuYWJsZWQsIGluc2lkZSwgcHJlc3NlZCkpIHsKKwkJCQlPYmplY3Qgc2VsZWN0ZWQgPSBnZXQoY29tcG9uZW50LCAiaW5zaWRlIik7CisJCQkJaW50IGx5ID0gY2xpcHkgLSB2aWV3cG9ydC48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAneSciPnk8L2Vycm9yPiAtIDE7CisJCQkJaW50IHlmcm9tID0gdmlldy48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAneSciPnk8L2Vycm9yPiArIE1hdGgubWF4KDAsIGx5KTsKKwkJCQlpbnQgeXRvID0gdmlldy48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAneSciPnk8L2Vycm9yPiArIE1hdGgubWluPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBtZXRob2QgJ21pbig/LCBpbnQpJyI+KHZpZXdwb3J0LjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdoZWlnaHQnIj5oZWlnaHQ8L2Vycm9yPiAtIDIsIGx5ICsgY2xpcGhlaWdodCk8L2Vycm9yPjsKKwkJCQlmb3IgKE9iamVjdCBjaG9pY2UgPSBnZXQoZ2V0KGNvbXBvbmVudCwgImNvbWJvYm94IiksICJjaG9pY2UiKTsKKwkJCQkJCWNob2ljZSAhPSBudWxsOyBjaG9pY2UgPSBnZXQoY2hvaWNlLCAiOm5leHQiKSkgeworCQkJCQk8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnUmVjdGFuZ2xlJyI+UmVjdGFuZ2xlPC9lcnJvcj4gciA9IGdldFJlY3RhbmdsZShjaG9pY2UsICJib3VuZHMiKTsKKwkJCQkJaWYgKHl0byA8PSByLjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICd5JyI+eTwvZXJyb3I+KSB7IGJyZWFrOyB9CisJCQkJCWlmICh5ZnJvbSA+PSByLjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICd5JyI+eTwvZXJyb3I+ICsgci48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnaGVpZ2h0JyI+aGVpZ2h0PC9lcnJvcj4pIHsgY29udGludWU7IH0KKwkJCQkJYm9vbGVhbiBhcm1lZCA9IChzZWxlY3RlZCA9PSBjaG9pY2UpOworCQkJCQlwYWludFJlY3QoZywgci48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAneCciPng8L2Vycm9yPiwgci48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAneSciPnk8L2Vycm9yPiwgYm91bmRzLjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICd3aWR0aCciPndpZHRoPC9lcnJvcj4gLSAyLCByLjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdoZWlnaHQnIj5oZWlnaHQ8L2Vycm9yPiwgY19ib3JkZXIsCisJCQkJCQlhcm1lZCA/IGNfc2VsZWN0IDogY19iZywgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UpOworCQkJCQlwYWludENvbnRlbnQoY2hvaWNlLCBnLCBjbGlweCwgeWZyb20sIGNsaXB3aWR0aCwgeXRvIC0geWZyb20sCisJCQkJCQlyLjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICd4JyI+eDwvZXJyb3I+ICsgNCwgci48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAneSciPnk8L2Vycm9yPiArIDIsIGJvdW5kcy48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnd2lkdGgnIj53aWR0aDwvZXJyb3I+IC0gMTAsIHIuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ2hlaWdodCciPmhlaWdodDwvZXJyb3I+IC0gNCwKKwkJCQkJCWdldEJvb2xlYW4oY2hvaWNlLCAiZW5hYmxlZCIsIHRydWUpID8gY190ZXh0IDogY19kaXNhYmxlLCAibGVmdCIsIGZhbHNlKTsKKwkJCQl9CisJCQkJcmVzZXRTY3JvbGxQYW5lKGcsIGNsaXB4LCBjbGlweSwgY2xpcHdpZHRoLCBjbGlwaGVpZ2h0LCB2aWV3LCB2aWV3cG9ydCk7CisJCQl9CisJCQkvL3BhaW50UmVjdChnLCAwLCAwLCBib3VuZHMud2lkdGgsIGJvdW5kcy5oZWlnaHQsCisJCQkvLwlzZWNvbmRhcnkxLCBjX2N0cmwsIHRydWUsIHRydWUsIHRydWUsIHRydWUpOworCQl9CisJCWVsc2UgaWYgKCgidGV4dGZpZWxkIiA9PSBjbGFzc25hbWUpIHx8ICgicGFzc3dvcmRmaWVsZCIgPT0gY2xhc3NuYW1lKSkgeworCQkJcGFpbnRGaWVsZChnLCBjbGlweCwgY2xpcHksIGNsaXB3aWR0aCwgY2xpcGhlaWdodCwgY29tcG9uZW50LAorCQkJCWJvdW5kcy48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnd2lkdGgnIj53aWR0aDwvZXJyb3I+LCBib3VuZHMuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ2hlaWdodCciPmhlaWdodDwvZXJyb3I+LAorCQkJCWluc2lkZSwgcHJlc3NlZCwgZm9jdXMsIGVuYWJsZWQsICgicGFzc3dvcmRmaWVsZCIgPT0gY2xhc3NuYW1lKSwgMCk7CisJCX0KKwkJZWxzZSBpZiAoInRleHRhcmVhIiA9PSBjbGFzc25hbWUpIHsKKwkJCTxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdSZWN0YW5nbGUnIj5SZWN0YW5nbGU8L2Vycm9yPiB2aWV3ID0gZ2V0UmVjdGFuZ2xlKGNvbXBvbmVudCwgIjp2aWV3Iik7CisJCQk8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnUmVjdGFuZ2xlJyI+UmVjdGFuZ2xlPC9lcnJvcj4gdmlld3BvcnQgPSBnZXRSZWN0YW5nbGUoY29tcG9uZW50LCAiOnBvcnQiKTsKKwkJCWJvb2xlYW4gZWRpdGFibGUgPSBnZXRCb29sZWFuKGNvbXBvbmVudCwgImVkaXRhYmxlIiwgdHJ1ZSk7CisJCQlwYWludFJlY3QoZywgdmlld3BvcnQuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ3gnIj54PC9lcnJvcj4sIHZpZXdwb3J0LjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICd5JyI+eTwvZXJyb3I+LCB2aWV3cG9ydC48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnd2lkdGgnIj53aWR0aDwvZXJyb3I+LCB2aWV3cG9ydC48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnaGVpZ2h0JyI+aGVpZ2h0PC9lcnJvcj4sCisJCQkJZW5hYmxlZCA/IGNfYm9yZGVyIDogY19kaXNhYmxlLCBlZGl0YWJsZSA/IGNfdGV4dGJnIDogY19iZywKKwkJCQl0cnVlLCB0cnVlLCB0cnVlLCB0cnVlKTsKKwkJCWlmIChwYWludFNjcm9sbFBhbmUoZywgY2xpcHgsIGNsaXB5LCBjbGlwd2lkdGgsIGNsaXBoZWlnaHQsCisJCQkJCWJvdW5kcywgdmlldywgdmlld3BvcnQsIGVuYWJsZWQsIGluc2lkZSwgcHJlc3NlZCkpIHsKKwkJCQlTdHJpbmcgdGV4dCA9IGdldFN0cmluZyhjb21wb25lbnQsICJ0ZXh0IiwgIiIpOworCQkJCWludCBzdGFydCA9IGZvY3VzID8gZ2V0SW50ZWdlcihjb21wb25lbnQsICJzdGFydCIsIDApIDogMDsKKwkJCQlpbnQgZW5kID0gZm9jdXMgPyBnZXRJbnRlZ2VyKGNvbXBvbmVudCwgImVuZCIsIDApIDogMDsKKwkJCQlpbnQgaXMgPSBNYXRoLm1pbihzdGFydCwgZW5kKTsgaW50IGllID0gTWF0aC5tYXgoc3RhcnQsIGVuZCk7CisJCQkJYm9vbGVhbiB3cmFwID0gZ2V0Qm9vbGVhbihjb21wb25lbnQsICJ3cmFwIiwgZmFsc2UpOworCQkJCTxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdGb250TWV0cmljcyciPkZvbnRNZXRyaWNzPC9lcnJvcj4gZm0gPSBnLjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgbWV0aG9kICdnZXRGb250TWV0cmljcygpJyI+Z2V0Rm9udE1ldHJpY3M8L2Vycm9yPigpOyAvL2phdmEKKwkJCQlpbnQgZm9udGFzY2VudCA9IGZtLjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgbWV0aG9kICdnZXRBc2NlbnQoKSciPmdldEFzY2VudDwvZXJyb3I+KCk7IGludCBmb250aGVpZ2h0ID0gZm0uPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBtZXRob2QgJ2dldEhlaWdodCgpJyI+Z2V0SGVpZ2h0PC9lcnJvcj4oKTsgLy9qYXZhCisJCQkJLy9taWRwIGludCBmb250aGVpZ2h0ID0gZm0uZ2V0SGVpZ2h0KCk7CisJCQkJaW50IGFzY2VudCA9IDE7CisJCQkJaW50IGx5ID0gY2xpcHkgLSB2aWV3cG9ydC48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAneSciPnk8L2Vycm9yPiAtIDE7CisJCQkJaW50IHlmcm9tID0gdmlldy48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAneSciPnk8L2Vycm9yPiArIE1hdGgubWF4KDAsIGx5KTsKKwkJCQlpbnQgeXRvID0gdmlldy48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAneSciPnk8L2Vycm9yPiArIE1hdGgubWluPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBtZXRob2QgJ21pbig/LCBpbnQpJyI+KHZpZXdwb3J0LjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdoZWlnaHQnIj5oZWlnaHQ8L2Vycm9yPiAtIDIsIGx5ICsgY2xpcGhlaWdodCk8L2Vycm9yPjsKKwkJCQkvL2cuc2V0Q29sb3IoQ29sb3IucGluayk7IGcuZmlsbFJlY3QoMCwgeWZyb20gLSAxLCA3NSwgMik7IGcuZmlsbFJlY3QoMCwgeXRvIC0gMSwgNzUsIDIpOworCisJCQkJYm9vbGVhbiBwcmV2bGV0dGVyID0gZmFsc2U7IGludCBuID0gdGV4dC5sZW5ndGgoKTsgY2hhciBjID0gMDsKKwkJCQlmb3IgKGludCBpID0gMCwgaiA9IC0xLCBrID0gMDsgayA8PSBuOyBrKyspIHsgLy8gaiBpcyB0aGUgbGFzdCBzcGFjZSBpbmRleCAoYmVmb3JlIGspCisJCQkJCWlmICh5dG8gPD0gYXNjZW50KSB7IGJyZWFrOyB9CisJCQkJCWlmICh3cmFwKSB7CisJCQkJCQlpZiAoKChrID09IG4pIHx8ICgoYyA9IHRleHQuY2hhckF0KGspKSA9PSAnXG4nKSB8fCAoYyA9PSAnICcpKSAmJgorCQkJCQkJCQkoaiAgPiBpKSAmJiAoZm0uPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBtZXRob2QgJ3N0cmluZ1dpZHRoKGphdmEubGFuZy5TdHJpbmcpJyI+c3RyaW5nV2lkdGg8L2Vycm9yPih0ZXh0LnN1YnN0cmluZyhpLCBrKSkgPiB2aWV3cG9ydC48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnd2lkdGgnIj53aWR0aDwvZXJyb3I+IC0gNCkpIHsKKwkJCQkJCQlrLS07IC8vIGRyYXcgbGluZSB0byB0aGUgYmVnaW4gb2YgdGhlIGN1cnJlbnQgd29yZCAoKyBzcGFjZXMpIGlmIGl0IGlzIG91dCBvZiB3aWR0aAorCQkJCQkJfQorCQkJCQkJZWxzZSBpZiAoKGsgPT0gbikgfHwgKGMgPT0gJ1xuJykpIHsgLy8gZHJhdyBsaW5lIHRvIHRoZSB0ZXh0L2xpbmUgZW5kCisJCQkJCQkJaiA9IGs7IHByZXZsZXR0ZXIgPSBmYWxzZTsKKwkJCQkJCX0KKwkJCQkJCWVsc2UgeworCQkJCQkJCWlmICgoYyA9PSAnICcpICYmIChwcmV2bGV0dGVyIHx8IChqID4gaSkpKSB7IGogPSBrOyB9IC8vIGtlZXAgc3BhY2VzIHN0YXJ0aW5nIHRoZSBsaW5lCisJCQkJCQkJcHJldmxldHRlciA9IChjICE9ICcgJyk7CisJCQkJCQkJY29udGludWU7CisJCQkJCQl9CisJCQkJCX0KKwkJCQkJZWxzZSB7CisJCQkJCQlpZiAoKGsgPT0gbikgfHwgKChjID0gdGV4dC5jaGFyQXQoaykpID09ICdcbicpKSB7IGogPSBrOyB9IGVsc2UgeyBjb250aW51ZTsgfQorCQkJCQl9CisJCQkJCWlmICh5ZnJvbSA8IGFzY2VudCArIGZvbnRoZWlnaHQpIHsKKwkJCQkJCVN0cmluZyBsaW5lID0gKGogIT0gLTEpID8gdGV4dC5zdWJzdHJpbmcoaSwgaikgOiB0ZXh0LnN1YnN0cmluZyhpKTsgLy9qYXZhCisJCQkJCQlpZiAoZm9jdXMgJiYgKGlzICE9IGllKSAmJiAoaWUgPj0gaSkgJiYgKChqID09IC0xKSB8fCAoaXMgPD0gaikpKSB7CisJCQkJCQkJaW50IHhzID0gKGlzIDwgaSkgPyAtMSA6ICgoKGogIT0gLTEpICYmIChpcyA+IGopKSA/ICh2aWV3LjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICd3aWR0aCciPndpZHRoPC9lcnJvcj4gLSAxKSA6CisJCQkJCQkJCWZtLjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgbWV0aG9kICdzdHJpbmdXaWR0aChqYXZhLmxhbmcuU3RyaW5nKSciPnN0cmluZ1dpZHRoPC9lcnJvcj4odGV4dC5zdWJzdHJpbmcoaSwgaXMpKSk7IC8vamF2YQorCQkJCQkJCQkvL21pZHAgZm9udC5zdWJzdHJpbmdXaWR0aCh0ZXh0LCBpLCBpcyAtIGkpKTsKKwkJCQkJCQlpbnQgeGUgPSAoKGogIT0gLTEpICYmIChpZSA+IGopKSA/ICh2aWV3LjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICd3aWR0aCciPndpZHRoPC9lcnJvcj4gLSAxKSA6CisJCQkJCQkJCWZtLjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgbWV0aG9kICdzdHJpbmdXaWR0aChqYXZhLmxhbmcuU3RyaW5nKSciPnN0cmluZ1dpZHRoPC9lcnJvcj4odGV4dC5zdWJzdHJpbmcoaSwgaWUpKTsgLy9qYXZhCisJCQkJCQkJCS8vbWlkcCBmb250LnN1YnN0cmluZ1dpZHRoKHRleHQsIGksIGllIC0gaSk7CisJCQkJCQkJZy48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIG1ldGhvZCAnc2V0Q29sb3IoQ29sb3IpJyI+c2V0Q29sb3I8L2Vycm9yPihjX3NlbGVjdCk7CisJCQkJCQkJZy48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIG1ldGhvZCAnZmlsbFJlY3QoaW50LCBpbnQsIGludCwgaW50KSciPmZpbGxSZWN0PC9lcnJvcj4oMSArIHhzLCBhc2NlbnQsIHhlIC0geHMsIGZvbnRoZWlnaHQpOworCQkJCQkJfQorCQkJCQkJZy48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIG1ldGhvZCAnc2V0Q29sb3IoQ29sb3IpJyI+c2V0Q29sb3I8L2Vycm9yPihlbmFibGVkID8gY190ZXh0IDogY19kaXNhYmxlKTsKKwkJCQkJCWcuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBtZXRob2QgJ2RyYXdTdHJpbmcoamF2YS5sYW5nLlN0cmluZywgaW50LCBpbnQpJyI+ZHJhd1N0cmluZzwvZXJyb3I+KGxpbmUsIDEsIGFzY2VudCArIGZvbnRhc2NlbnQpOyAvL2phdmEKKwkJCQkJCS8vbWlkcCBnLmRyYXdTdWJzdHJpbmcodGV4dCwgaSwgKChqICE9IC0xKSA/IGogOiB0ZXh0Lmxlbmd0aCgpKSAtIGksIDEsIGFzY2VudCwgR3JhcGhpY3MuTEVGVCB8IEdyYXBoaWNzLlRPUCk7CisJCQkJCQlpZiAoZm9jdXMgJiYgKGVuZCA+PSBpKSAmJiAoKGogPT0gLTEpIHx8IChlbmQgPD0gaikpKSB7CisJCQkJCQkJaW50IGNhcmV0ID0gZm0uPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBtZXRob2QgJ3N0cmluZ1dpZHRoKGphdmEubGFuZy5TdHJpbmcpJyI+c3RyaW5nV2lkdGg8L2Vycm9yPih0ZXh0LnN1YnN0cmluZyhpLCBlbmQpKTsgLy9qYXZhCisJCQkJCQkJLy9taWRwIGludCBjYXJldCA9IGZvbnQuc3Vic3RyaW5nV2lkdGgodGV4dCwgaSwgZW5kIC0gaSk7CisJCQkJCQkJZy48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIG1ldGhvZCAnc2V0Q29sb3IoQ29sb3IpJyI+c2V0Q29sb3I8L2Vycm9yPihjX2ZvY3VzKTsKKwkJCQkJCQlnLjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgbWV0aG9kICdmaWxsUmVjdChpbnQsIGludCwgaW50LCBpbnQpJyI+ZmlsbFJlY3Q8L2Vycm9yPihjYXJldCwgYXNjZW50LCAxLCBmb250aGVpZ2h0KTsKKwkJCQkJCX0KKwkJCQkJfQorCQkJCQlhc2NlbnQgKz0gZm9udGhlaWdodDsKKwkJCQkJaSA9IGogKyAxOworCQkJCX0KKwkJCQlyZXNldFNjcm9sbFBhbmUoZywgY2xpcHgsIGNsaXB5LCBjbGlwd2lkdGgsIGNsaXBoZWlnaHQsIHZpZXcsIHZpZXdwb3J0KTsKKwkJCX0KKwkJfQorCQllbHNlIGlmICgidGFiYmVkcGFuZSIgPT0gY2xhc3NuYW1lKSB7CisJCQlpbnQgaSA9IDA7IDxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdSZWN0YW5nbGUnIj5SZWN0YW5nbGU8L2Vycm9yPiBsYXN0ID0gbnVsbDsKKwkJCWludCBzZWxlY3RlZCA9IGdldEludGVnZXIoY29tcG9uZW50LCAic2VsZWN0ZWQiLCAwKTsKKwkJCVN0cmluZyBwbGFjZW1lbnQgPSBnZXRTdHJpbmcoY29tcG9uZW50LCAicGxhY2VtZW50IiwgInRvcCIpOworCQkJZm9yIChPYmplY3QgY29tcCA9IGdldChjb21wb25lbnQsICJ0YWIiKTsKKwkJCQkJY29tcCAhPSBudWxsOyBjb21wID0gZ2V0KGNvbXAsICI6bmV4dCIpKSB7CisJCQkJPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ1JlY3RhbmdsZSciPlJlY3RhbmdsZTwvZXJyb3I+IHIgPSBnZXRSZWN0YW5nbGUoY29tcCwgImJvdW5kcyIpOworCQkJCWJvb2xlYW4gaG92ZXIgPSAhKHNlbGVjdGVkID09IGkpICYmIGluc2lkZSAmJgorCQkJCQkobW91c2VwcmVzc2VkID09IG51bGwpICYmIChpbnNpZGVwYXJ0ID09IGNvbXApOworCQkJCWJvb2xlYW4gc2VsID0gKHNlbGVjdGVkID09IGkpOworCQkJCWJvb2xlYW4gdGFiZW5hYmxlZCA9IGVuYWJsZWQgJiYgZ2V0Qm9vbGVhbihjb21wLCAiZW5hYmxlZCIsIHRydWUpOworCQkJCXBhaW50UmVjdChnLCByLjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICd4JyI+eDwvZXJyb3I+LCByLjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICd5JyI+eTwvZXJyb3I+LCByLjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICd3aWR0aCciPndpZHRoPC9lcnJvcj4sIHIuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ2hlaWdodCciPmhlaWdodDwvZXJyb3I+LAorCQkJCQllbmFibGVkID8gY19ib3JkZXIgOiBjX2Rpc2FibGUsCisJCQkJCXRhYmVuYWJsZWQgPyAoc2VsID8gY19iZyA6IChob3ZlciA/IGNfaG92ZXIgOiBjX2N0cmwpKSA6IGNfY3RybCwKKwkJCQkJKHBsYWNlbWVudCAhPSAiYm90dG9tIikgfHwgIXNlbCwgKHBsYWNlbWVudCAhPSAicmlnaHQiKSB8fCAhc2VsLAorCQkJCQkocGxhY2VtZW50ID09ICJib3R0b20iKSB8fCAoKHBsYWNlbWVudCA9PSAidG9wIikgJiYgIXNlbCksCisJCQkJCShwbGFjZW1lbnQgPT0gInJpZ2h0IikgfHwgKChwbGFjZW1lbnQgPT0gImxlZnQiKSAmJiAhc2VsKSk7CisJCQkJaWYgKGZvY3VzICYmIHNlbCkgeworCQkJCQlnLjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgbWV0aG9kICdzZXRDb2xvcihDb2xvciknIj5zZXRDb2xvcjwvZXJyb3I+KGNfZm9jdXMpOworCQkJCQlnLjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgbWV0aG9kICdkcmF3UmVjdCg/LCA/LCA/LCA/KSciPmRyYXdSZWN0PC9lcnJvcj4oci48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAneCciPng8L2Vycm9yPiArIDIsIHIuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ3knIj55PC9lcnJvcj4gKyAyLCByLjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICd3aWR0aCciPndpZHRoPC9lcnJvcj4gLSA0LCByLjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdoZWlnaHQnIj5oZWlnaHQ8L2Vycm9yPiAtIDQpOworCQkJCX0KKwkJCQlwYWludENvbnRlbnQoY29tcCwgZywgY2xpcHgsIGNsaXB5LCBjbGlwd2lkdGgsIGNsaXBoZWlnaHQsCisJCQkJCXIuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ3gnIj54PC9lcnJvcj4gKyA0LCByLjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICd5JyI+eTwvZXJyb3I+ICsgMiwgci48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnd2lkdGgnIj53aWR0aDwvZXJyb3I+IC0gOCwgci48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnaGVpZ2h0JyI+aGVpZ2h0PC9lcnJvcj4gLSA0LAorCQkJCQl0YWJlbmFibGVkID8gY190ZXh0IDogY19kaXNhYmxlLCAibGVmdCIsIHRydWUpOworCQkJCWkrKzsgbGFzdCA9IHI7CisJCQl9CisJCQlpZiAobGFzdCAhPSBudWxsKSB7CisJCQkJYm9vbGVhbiBob3Jpem9udGFsID0gKChwbGFjZW1lbnQgPT0gInRvcCIpIHx8IChwbGFjZW1lbnQgPT0gImJvdHRvbSIpKTsKKwkJCQlwYWludFJlY3QoZywgaG9yaXpvbnRhbCA/IChsYXN0LjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICd4JyI+eDwvZXJyb3I+ICsgbGFzdC48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnd2lkdGgnIj53aWR0aDwvZXJyb3I+KSA6IGxhc3QuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ3gnIj54PC9lcnJvcj4sCisJCQkJCWhvcml6b250YWwgPyBsYXN0LjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICd5JyI+eTwvZXJyb3I+IDogKGxhc3QuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ3knIj55PC9lcnJvcj4gKyBsYXN0LjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdoZWlnaHQnIj5oZWlnaHQ8L2Vycm9yPiksCisJCQkJCWhvcml6b250YWwgPyAoYm91bmRzLjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICd3aWR0aCciPndpZHRoPC9lcnJvcj4gLSBsYXN0LjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICd4JyI+eDwvZXJyb3I+IC0gbGFzdC48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnd2lkdGgnIj53aWR0aDwvZXJyb3I+KSA6IGxhc3QuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ3dpZHRoJyI+d2lkdGg8L2Vycm9yPiwKKwkJCQkJaG9yaXpvbnRhbCA/IGxhc3QuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ2hlaWdodCciPmhlaWdodDwvZXJyb3I+IDogKGJvdW5kcy48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnaGVpZ2h0JyI+aGVpZ2h0PC9lcnJvcj4gLSBsYXN0LjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICd5JyI+eTwvZXJyb3I+IC0gbGFzdC48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnaGVpZ2h0JyI+aGVpZ2h0PC9lcnJvcj4pLAorCQkJCQllbmFibGVkID8gY19ib3JkZXIgOiBjX2Rpc2FibGUsIGNfYmcsCisJCQkJCShwbGFjZW1lbnQgIT0gInRvcCIpLCAocGxhY2VtZW50ICE9ICJsZWZ0IiksCisJCQkJCShwbGFjZW1lbnQgPT0gInRvcCIpLCAocGxhY2VtZW50ID09ICJsZWZ0IikpOworCQkJCXBhaW50UmVjdChnLCAocGxhY2VtZW50ID09ICJsZWZ0IikgPyBsYXN0LjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICd3aWR0aCciPndpZHRoPC9lcnJvcj4gOiAwLAorCQkJCQkocGxhY2VtZW50ID09ICJ0b3AiKSA/IGxhc3QuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ2hlaWdodCciPmhlaWdodDwvZXJyb3I+IDogMCwKKwkJCQkJaG9yaXpvbnRhbCA/IGJvdW5kcy48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnd2lkdGgnIj53aWR0aDwvZXJyb3I+IDogKGJvdW5kcy48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnd2lkdGgnIj53aWR0aDwvZXJyb3I+IC0gbGFzdC48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnd2lkdGgnIj53aWR0aDwvZXJyb3I+KSwKKwkJCQkJaG9yaXpvbnRhbCA/IChib3VuZHMuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ2hlaWdodCciPmhlaWdodDwvZXJyb3I+IC0gbGFzdC48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnaGVpZ2h0JyI+aGVpZ2h0PC9lcnJvcj4pIDogYm91bmRzLjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdoZWlnaHQnIj5oZWlnaHQ8L2Vycm9yPiwKKwkJCQkJZW5hYmxlZCA/IGNfYm9yZGVyIDogY19kaXNhYmxlLCBjX2JnLAorCQkJCQkocGxhY2VtZW50ICE9ICJ0b3AiKSwgKHBsYWNlbWVudCAhPSAibGVmdCIpLAorCQkJCQkocGxhY2VtZW50ICE9ICJib3R0b20iKSwgKHBsYWNlbWVudCAhPSAicmlnaHQiKSk7CisJCQl9CisJCQlPYmplY3QgdGFiY29udGVudCA9IGdldEl0ZW1JbXBsKGNvbXBvbmVudCwgImNvbXBvbmVudCIsIHNlbGVjdGVkKTsKKwkJCWlmICh0YWJjb250ZW50ICE9IG51bGwpIHsKKwkJCQlwYWludChnLCBjbGlweCwgY2xpcHksIGNsaXB3aWR0aCwgY2xpcGhlaWdodCwgdGFiY29udGVudCwgZW5hYmxlZCk7CisJCQl9CisJCX0KKwkJZWxzZSBpZiAoKCJwYW5lbCIgPT0gY2xhc3NuYW1lKSB8fCAoImRpYWxvZyIgPT0gY2xhc3NuYW1lKSkgeworCQkJaWYgKCJkaWFsb2ciID09IGNsYXNzbmFtZSkgeworCQkJCWludCB0aXRsZWhlaWdodCA9IGdldEludGVnZXIoY29tcG9uZW50LCAidGl0bGVoZWlnaHQiLCAwKTsKKwkJCQlwYWludFJlY3QoZywgMCwgMCwgYm91bmRzLjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICd3aWR0aCciPndpZHRoPC9lcnJvcj4sIDMgKyB0aXRsZWhlaWdodCwKKwkJCQkJY19ib3JkZXIsIGNfY3RybCwgdHJ1ZSwgdHJ1ZSwgZmFsc2UsIHRydWUpOworCQkJCXBhaW50UmVjdChnLCAwLCAzICsgdGl0bGVoZWlnaHQsIGJvdW5kcy48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnd2lkdGgnIj53aWR0aDwvZXJyb3I+LCBib3VuZHMuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ2hlaWdodCciPmhlaWdodDwvZXJyb3I+IC0gMyAtIHRpdGxlaGVpZ2h0LAorCQkJCQljX2JvcmRlciwgY19wcmVzcywgZmFsc2UsIHRydWUsIHRydWUsIHRydWUpOworCQkJCXBhaW50Q29udGVudChjb21wb25lbnQsIGcsIGNsaXB4LCBjbGlweSwgY2xpcHdpZHRoLCBjbGlwaGVpZ2h0LAorCQkJCQkzLCAyLCBib3VuZHMuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ3dpZHRoJyI+d2lkdGg8L2Vycm9yPiAtIDYsIHRpdGxlaGVpZ2h0LCBjX3RleHQsICJsZWZ0IiwgZmFsc2UpOworCQkJCXBhaW50UmVjdChnLCAzLCAzICsgdGl0bGVoZWlnaHQsIGJvdW5kcy48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnd2lkdGgnIj53aWR0aDwvZXJyb3I+IC0gNiwgYm91bmRzLjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdoZWlnaHQnIj5oZWlnaHQ8L2Vycm9yPiAtIDYgLSB0aXRsZWhlaWdodCwKKwkJCQkJY19ib3JkZXIsIGNfYmcsIHRydWUsIHRydWUsIHRydWUsIHRydWUpOworCQkJfSBlbHNlIHsKKwkJCQlwYWludFJlY3QoZywgMCwgMCwgYm91bmRzLjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICd3aWR0aCciPndpZHRoPC9lcnJvcj4sIGJvdW5kcy48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnaGVpZ2h0JyI+aGVpZ2h0PC9lcnJvcj4sCisJCQkJCWNfYm9yZGVyLCBjX2JnLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSk7CisJCQl9CisJCQlmb3IgKE9iamVjdCBjb21wID0gZ2V0KGNvbXBvbmVudCwgImNvbXBvbmVudCIpOworCQkJCQljb21wICE9IG51bGw7IGNvbXAgPSBnZXQoY29tcCwgIjpuZXh0IikpIHsKKwkJCQlwYWludChnLCBjbGlweCwgY2xpcHksIGNsaXB3aWR0aCwgY2xpcGhlaWdodCwgY29tcCwgZW5hYmxlZCk7CisJCQl9CisJCX0KKwkJZWxzZSBpZiAoImRlc2t0b3AiID09IGNsYXNzbmFtZSkgeworCQkJcGFpbnRSZXZlcnNlKGcsIGNsaXB4LCBjbGlweSwgY2xpcHdpZHRoLCBjbGlwaGVpZ2h0LAorCQkJCWdldChjb21wb25lbnQsICJjb21wb25lbnQiKSwgZW5hYmxlZCk7CisJCQkvL2cuc2V0Q29sb3IoQ29sb3IucmVkKTsgaWYgKGNsaXAgIT0gbnVsbCkgZy5kcmF3UmVjdChjbGlweCwgY2xpcHksIGNsaXB3aWR0aCwgY2xpcGhlaWdodCk7CisJCQlpZiAodG9vbHRpcG93bmVyICE9IG51bGwpIHsKKwkJCQk8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnUmVjdGFuZ2xlJyI+UmVjdGFuZ2xlPC9lcnJvcj4gciA9IGdldFJlY3RhbmdsZSh0b29sdGlwb3duZXIsICJ0b29sdGlwYm91bmRzIik7CisJCQkJcGFpbnRSZWN0KGcsIHIuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ3gnIj54PC9lcnJvcj4sIHIuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ3knIj55PC9lcnJvcj4sIHIuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ3dpZHRoJyI+d2lkdGg8L2Vycm9yPiwgci48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnaGVpZ2h0JyI+aGVpZ2h0PC9lcnJvcj4sCisJCQkJCWNfYm9yZGVyLCBjX2JnLCB0cnVlLCB0cnVlLCB0cnVlLCB0cnVlKTsKKwkJCQlTdHJpbmcgdGV4dCA9IGdldFN0cmluZyh0b29sdGlwb3duZXIsICJ0b29sdGlwIiwgbnVsbCk7CisJCQkJZy48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIG1ldGhvZCAnc2V0Q29sb3IoQ29sb3IpJyI+c2V0Q29sb3I8L2Vycm9yPihjX3RleHQpOworCQkJCWcuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBtZXRob2QgJ2RyYXdTdHJpbmcoamF2YS5sYW5nLlN0cmluZywgPywgPyknIj5kcmF3U3RyaW5nPC9lcnJvcj4odGV4dCwgci48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAneCciPng8L2Vycm9yPiArIDIsIHIuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ3knIj55PC9lcnJvcj4gKyBnLjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgbWV0aG9kICdnZXRGb250TWV0cmljcygpJyI+Z2V0Rm9udE1ldHJpY3M8L2Vycm9yPigpLmdldEFzY2VudCgpICsgMik7IC8vamF2YQorCQkJCS8vbWlkcCBnLmRyYXdTdHJpbmcodGV4dCwgci54ICsgMiwgci55ICsgKHIuaGVpZ2h0IC0gZm9udC5nZXRIZWlnaHQoKSkgLyAyLCBHcmFwaGljcy5MRUZUIHwgR3JhcGhpY3MuVE9QKTsKKwkJCX0KKwkJfQorCQllbHNlIGlmICgic3BpbmJveCIgPT0gY2xhc3NuYW1lKSB7CisJCQlwYWludEZpZWxkKGcsIGNsaXB4LCBjbGlweSwgY2xpcHdpZHRoLCBjbGlwaGVpZ2h0LCBjb21wb25lbnQsCisJCQkJYm91bmRzLjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICd3aWR0aCciPndpZHRoPC9lcnJvcj4gLSBibG9jaywgYm91bmRzLjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdoZWlnaHQnIj5oZWlnaHQ8L2Vycm9yPiwKKwkJCQlpbnNpZGUsIHByZXNzZWQsIGZvY3VzLCBlbmFibGVkLCBmYWxzZSwgMCk7CisJCQlwYWludEFycm93KGcsIGJvdW5kcy48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnd2lkdGgnIj53aWR0aDwvZXJyb3I+IC0gYmxvY2ssIDAsIGJsb2NrLCBib3VuZHMuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ2hlaWdodCciPmhlaWdodDwvZXJyb3I+IC8gMiwKKwkJCQkJJ04nLCBlbmFibGVkLCBpbnNpZGUsIHByZXNzZWQsICJ1cCIsIHRydWUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSk7CisJCQlwYWludEFycm93KGcsIGJvdW5kcy48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnd2lkdGgnIj53aWR0aDwvZXJyb3I+IC0gYmxvY2ssIGJvdW5kcy48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnaGVpZ2h0JyI+aGVpZ2h0PC9lcnJvcj4gLyAyLAorCQkJCWJsb2NrLCBib3VuZHMuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ2hlaWdodCciPmhlaWdodDwvZXJyb3I+IC0gKGJvdW5kcy48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnaGVpZ2h0JyI+aGVpZ2h0PC9lcnJvcj4gLyAyKSwKKwkJCQknUycsIGVuYWJsZWQsIGluc2lkZSwgcHJlc3NlZCwgImRvd24iLCB0cnVlLCBmYWxzZSwgdHJ1ZSwgdHJ1ZSk7CisJCX0KKwkJZWxzZSBpZiAoInByb2dyZXNzYmFyIiA9PSBjbGFzc25hbWUpIHsKKwkJCWludCBtaW5pbXVtID0gZ2V0SW50ZWdlcihjb21wb25lbnQsICJtaW5pbXVtIiwgMCk7CisJCQlpbnQgbWF4aW11bSA9IGdldEludGVnZXIoY29tcG9uZW50LCAibWF4aW11bSIsIDEwMCk7CisJCQlpbnQgdmFsdWUgPSBnZXRJbnRlZ2VyKGNvbXBvbmVudCwgInZhbHVlIiwgMCk7CisJCQlib29sZWFuIGhvcml6b250YWwgPSAoInZlcnRpY2FsIiAhPSBnZXQoY29tcG9uZW50LCAib3JpZW50YXRpb24iKSk7CisJCQlpbnQgbGVuZ3RoID0gKHZhbHVlIC0gbWluaW11bSkgKgorCQkJCSgoaG9yaXpvbnRhbCA/IGJvdW5kcy48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnd2lkdGgnIj53aWR0aDwvZXJyb3I+IDogYm91bmRzLjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdoZWlnaHQnIj5oZWlnaHQ8L2Vycm9yPikgLSAxKSAvIChtYXhpbXVtIC0gbWluaW11bSk7CisJCQlwYWludFJlY3QoZywgMCwgMCwgaG9yaXpvbnRhbCA/IGxlbmd0aCA6IGJvdW5kcy48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnd2lkdGgnIj53aWR0aDwvZXJyb3I+LAorCQkJCWhvcml6b250YWwgPyBib3VuZHMuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ2hlaWdodCciPmhlaWdodDwvZXJyb3I+IDogbGVuZ3RoLCBlbmFibGVkID8gY19ib3JkZXIgOiBjX2Rpc2FibGUsCisJCQkJY19zZWxlY3QsIHRydWUsIHRydWUsIGhvcml6b250YWwsICFob3Jpem9udGFsKTsKKwkJCXBhaW50UmVjdChnLCBob3Jpem9udGFsID8gbGVuZ3RoIDogMCwgaG9yaXpvbnRhbCA/IDAgOiBsZW5ndGgsCisJCQkJaG9yaXpvbnRhbCA/IChib3VuZHMuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ3dpZHRoJyI+d2lkdGg8L2Vycm9yPiAtIGxlbmd0aCkgOiBib3VuZHMuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ3dpZHRoJyI+d2lkdGg8L2Vycm9yPgksCisJCQkJaG9yaXpvbnRhbCA/IGJvdW5kcy48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnaGVpZ2h0JyI+aGVpZ2h0PC9lcnJvcj4gOiAoYm91bmRzLjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdoZWlnaHQnIj5oZWlnaHQ8L2Vycm9yPiAtIGxlbmd0aCksCisJCQkJZW5hYmxlZCA/IGNfYm9yZGVyIDogY19kaXNhYmxlLCBjX2JnLCB0cnVlLCB0cnVlLCB0cnVlLCB0cnVlKTsKKwkJfQorCQllbHNlIGlmICgic2xpZGVyIiA9PSBjbGFzc25hbWUpIHsKKwkJCWludCBtaW5pbXVtID0gZ2V0SW50ZWdlcihjb21wb25lbnQsICJtaW5pbXVtIiwgMCk7CisJCQlpbnQgbWF4aW11bSA9IGdldEludGVnZXIoY29tcG9uZW50LCAibWF4aW11bSIsIDEwMCk7CisJCQlpbnQgdmFsdWUgPSBnZXRJbnRlZ2VyKGNvbXBvbmVudCwgInZhbHVlIiwgMCk7CisJCQlib29sZWFuIGhvcml6b250YWwgPSAoInZlcnRpY2FsIiAhPSBnZXQoY29tcG9uZW50LCAib3JpZW50YXRpb24iKSk7CisJCQlpbnQgbGVuZ3RoID0gKHZhbHVlIC0gbWluaW11bSkgKgorCQkJCSgoaG9yaXpvbnRhbCA/IGJvdW5kcy48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnd2lkdGgnIj53aWR0aDwvZXJyb3I+IDogYm91bmRzLjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdoZWlnaHQnIj5oZWlnaHQ8L2Vycm9yPikgLSBibG9jaykgLworCQkJCShtYXhpbXVtIC0gbWluaW11bSk7CisJCQlwYWludFJlY3QoZywgaG9yaXpvbnRhbCA/IDAgOiAzLCBob3Jpem9udGFsID8gMyA6IDAsCisJCQkJaG9yaXpvbnRhbCA/IGxlbmd0aCA6IChib3VuZHMuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ3dpZHRoJyI+d2lkdGg8L2Vycm9yPiAtIDYpLAorCQkJCWhvcml6b250YWwgPyAoYm91bmRzLjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdoZWlnaHQnIj5oZWlnaHQ8L2Vycm9yPiAtIDYpIDogbGVuZ3RoLAorCQkJCWVuYWJsZWQgPyBjX2JvcmRlciA6IGNfZGlzYWJsZSwKKwkJCQljX2JnLCB0cnVlLCB0cnVlLCBob3Jpem9udGFsLCAhaG9yaXpvbnRhbCk7CisJCQlwYWludFJlY3QoZywgaG9yaXpvbnRhbCA/IGxlbmd0aCA6IDAsIGhvcml6b250YWwgPyAwIDogbGVuZ3RoLAorCQkJCWhvcml6b250YWwgPyBibG9jayA6IGJvdW5kcy48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnd2lkdGgnIj53aWR0aDwvZXJyb3I+LCBob3Jpem9udGFsID8gYm91bmRzLjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdoZWlnaHQnIj5oZWlnaHQ8L2Vycm9yPiA6IGJsb2NrLAorCQkJCWVuYWJsZWQgPyBjX2JvcmRlciA6IGNfZGlzYWJsZSwKKwkJCQllbmFibGVkID8gY19jdHJsIDogY19iZywgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSk7CisJCQlpZiAoZm9jdXMpIHsKKwkJCQlnLjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgbWV0aG9kICdzZXRDb2xvcihDb2xvciknIj5zZXRDb2xvcjwvZXJyb3I+KGNfZm9jdXMpOworCQkJCWcuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBtZXRob2QgJ2RyYXdSZWN0KGludCwgaW50LCBpbnQsIGludCknIj5kcmF3UmVjdDwvZXJyb3I+KGhvcml6b250YWwgPyAobGVuZ3RoICsgMikgOiAyLCBob3Jpem9udGFsID8gMiA6IChsZW5ndGggKyAyKSwKKwkJCQkJKGhvcml6b250YWwgPyBibG9jayA6IGJvdW5kcy48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnd2lkdGgnIj53aWR0aDwvZXJyb3I+KSAtIDUsCisJCQkJCShob3Jpem9udGFsID8gYm91bmRzLjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdoZWlnaHQnIj5oZWlnaHQ8L2Vycm9yPiA6IGJsb2NrKSAtIDUpOworCQkJCS8vZy5kcmF3UmVjdChsZW5ndGggKyAxLCAxLCBibG9jayAtIDMsIGJvdW5kcy5oZWlnaHQgLSAzKTsKKwkJCX0KKwkJCXBhaW50UmVjdChnLCBob3Jpem9udGFsID8gKGJsb2NrICsgbGVuZ3RoKSA6IDMsCisJCQkJaG9yaXpvbnRhbCA/IDMgOiAoYmxvY2sgKyBsZW5ndGgpLAorCQkJCWJvdW5kcy48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnd2lkdGgnIj53aWR0aDwvZXJyb3I+IC0gKGhvcml6b250YWwgPyAoYmxvY2sgKyBsZW5ndGgpIDogNiksCisJCQkJYm91bmRzLjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdoZWlnaHQnIj5oZWlnaHQ8L2Vycm9yPiAtIChob3Jpem9udGFsID8gNiA6IChibG9jayArIGxlbmd0aCkpLAorCQkJCWVuYWJsZWQgPyBjX2JvcmRlciA6IGNfZGlzYWJsZSwKKwkJCQljX2JnLCBob3Jpem9udGFsLCAhaG9yaXpvbnRhbCwgdHJ1ZSwgdHJ1ZSk7CisJCX0KKwkJZWxzZSBpZiAoInNwbGl0cGFuZSIgPT0gY2xhc3NuYW1lKSB7CisJCQlib29sZWFuIGhvcml6b250YWwgPSAoInZlcnRpY2FsIiAhPSBnZXQoY29tcG9uZW50LCAib3JpZW50YXRpb24iKSk7CisJCQlpbnQgZGl2aWRlciA9IGdldEludGVnZXIoY29tcG9uZW50LCAiZGl2aWRlciIsIC0xKTsKKwkJCXBhaW50UmVjdChnLCBob3Jpem9udGFsID8gZGl2aWRlciA6IDAsIGhvcml6b250YWwgPyAwIDogZGl2aWRlciwKKwkJCQlob3Jpem9udGFsID8gNSA6IGJvdW5kcy48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnd2lkdGgnIj53aWR0aDwvZXJyb3I+LCBob3Jpem9udGFsID8gYm91bmRzLjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdoZWlnaHQnIj5oZWlnaHQ8L2Vycm9yPiA6IDUsCisJCQkJY19ib3JkZXIsIGNfYmcsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKTsKKwkJCWcuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBtZXRob2QgJ3NldENvbG9yKENvbG9yKSciPnNldENvbG9yPC9lcnJvcj4oZW5hYmxlZCA/IChmb2N1cyA/IGNfZm9jdXMgOiBjX2JvcmRlcikgOiBjX2Rpc2FibGUpOworCQkJaW50IHh5ID0gaG9yaXpvbnRhbCA/IGJvdW5kcy48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnaGVpZ2h0JyI+aGVpZ2h0PC9lcnJvcj4gOiBib3VuZHMuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ3dpZHRoJyI+d2lkdGg8L2Vycm9yPjsKKwkJCWludCB4eTEgPSBNYXRoLm1heCgwLCB4eSAvIDIgLSAxMik7CisJCQlpbnQgeHkyID0gTWF0aC5taW4oeHkgLyAyICsgMTIsIHh5IC0gMSk7CisJCQlmb3IgKGludCBpID0gZGl2aWRlciArIDE7IGkgPCBkaXZpZGVyICsgNDsgaSArPSAyKSB7CisJCQkJaWYgKGhvcml6b250YWwpIHsgZy48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIG1ldGhvZCAnZHJhd0xpbmUoaW50LCBpbnQsIGludCwgaW50KSciPmRyYXdMaW5lPC9lcnJvcj4oaSwgeHkxLCBpLCB4eTIpOyB9CisJCQkJCWVsc2UgeyBnLjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgbWV0aG9kICdkcmF3TGluZShpbnQsIGludCwgaW50LCBpbnQpJyI+ZHJhd0xpbmU8L2Vycm9yPih4eTEsIGksIHh5MiwgaSk7IH0KKwkJCX0KKwkJCU9iamVjdCBjb21wMSA9IGdldChjb21wb25lbnQsICJjb21wb25lbnQiKTsKKwkJCWlmIChjb21wMSAhPSBudWxsKSB7CisJCQkJcGFpbnQoZywgY2xpcHgsIGNsaXB5LCBjbGlwd2lkdGgsIGNsaXBoZWlnaHQsIGNvbXAxLCBlbmFibGVkKTsKKwkJCQlPYmplY3QgY29tcDIgPSBnZXQoY29tcDEsICI6bmV4dCIpOworCQkJCWlmIChjb21wMiAhPSBudWxsKSB7CisJCQkJCXBhaW50KGcsIGNsaXB4LCBjbGlweSwgY2xpcHdpZHRoLCBjbGlwaGVpZ2h0LCBjb21wMiwgZW5hYmxlZCk7CisJCQkJfQorCQkJfQorCQl9CisJCWVsc2UgaWYgKCgibGlzdCIgPT0gY2xhc3NuYW1lKSB8fAorCQkJCSgidGFibGUiID09IGNsYXNzbmFtZSkgfHwgKCJ0cmVlIiA9PSBjbGFzc25hbWUpKSB7CisJCQk8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnUmVjdGFuZ2xlJyI+UmVjdGFuZ2xlPC9lcnJvcj4gdmlldyA9IGdldFJlY3RhbmdsZShjb21wb25lbnQsICI6dmlldyIpOworCQkJPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ1JlY3RhbmdsZSciPlJlY3RhbmdsZTwvZXJyb3I+IHZpZXdwb3J0ID0gZ2V0UmVjdGFuZ2xlKGNvbXBvbmVudCwgIjpwb3J0Iik7CisJCQlpbnRbXSBjb2x1bW53aWR0aHMgPSBudWxsOworCQkJaW50IGx4ID0gY2xpcHggLSB2aWV3cG9ydC48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAneCciPng8L2Vycm9yPiAtIDE7CisJCQlpbnQgeGZyb20gPSB2aWV3LjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICd4JyI+eDwvZXJyb3I+ICsgTWF0aC5tYXgoMCwgbHgpOworCQkJaW50IHh0byA9IHZpZXcuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ3gnIj54PC9lcnJvcj4gKyBNYXRoLm1pbjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgbWV0aG9kICdtaW4oPywgaW50KSciPih2aWV3cG9ydC48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnd2lkdGgnIj53aWR0aDwvZXJyb3I+IC0gMiwgbHggKyBjbGlwd2lkdGgpPC9lcnJvcj47CisJCQlpZiAoInRhYmxlIiA9PSBjbGFzc25hbWUpIHsKKwkJCQljb2x1bW53aWR0aHMgPSBuZXcgaW50W2dldEl0ZW1Db3VudEltcGwoY29tcG9uZW50LCAiY29sdW1uIildOworCQkJCWludCBpID0gMDsgaW50IHggPSAwOyBib29sZWFuIGRyYXdoZWFkZXIgPSAoY2xpcHkgPCB2aWV3cG9ydC48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAneSciPnk8L2Vycm9yPik7CisJCQkJaWYgKGRyYXdoZWFkZXIpIHsgZy48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIG1ldGhvZCAnc2V0Q2xpcCg/LCBpbnQsID8sID8pJyI+c2V0Q2xpcDwvZXJyb3I+KHZpZXdwb3J0LjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICd4JyI+eDwvZXJyb3I+LCAwLCB2aWV3cG9ydC48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnd2lkdGgnIj53aWR0aDwvZXJyb3I+LCB2aWV3cG9ydC48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAneSciPnk8L2Vycm9yPik7IH0KKwkJCQlmb3IgKE9iamVjdCBjb2x1bW4gPSBnZXQoY29tcG9uZW50LCAiY29sdW1uIik7CisJCQkJCQljb2x1bW4gIT0gbnVsbDsgY29sdW1uID0gZ2V0KGNvbHVtbiwgIjpuZXh0IikpIHsKKwkJCQkJYm9vbGVhbiBsYXN0Y29sdW1uID0gKGkgPT0gY29sdW1ud2lkdGhzLmxlbmd0aCAtIDEpOworCQkJCQlpbnQgd2lkdGggPSBnZXRJbnRlZ2VyKGNvbHVtbiwgIndpZHRoIiwgODApOworCQkJCQlpZiAobGFzdGNvbHVtbikgeyB3aWR0aCA9IE1hdGgubWF4PGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBtZXRob2QgJ21heChpbnQsID8pJyI+KHdpZHRoLCB2aWV3cG9ydC48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnd2lkdGgnIj53aWR0aDwvZXJyb3I+IC0geCk8L2Vycm9yPjsgfQorCQkJCQljb2x1bW53aWR0aHNbaV0gPSB3aWR0aDsKKwkJCQkJaWYgKGRyYXdoZWFkZXIgJiYgKHhmcm9tIDwgeCArIHdpZHRoKSAmJiAoeHRvID4geCkpIHsKKwkJCQkJCXBhaW50UmVjdChnLCB4IC0gdmlldy48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAneCciPng8L2Vycm9yPiwgMCwgd2lkdGgsIHZpZXdwb3J0LjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICd5JyI+eTwvZXJyb3I+LAorCQkJCQkJCWVuYWJsZWQgPyBjX2JvcmRlciA6IGNfZGlzYWJsZSwgZW5hYmxlZCA/IGNfY3RybCA6IGNfYmcsCisJCQkJCQkJdHJ1ZSwgdHJ1ZSwgZmFsc2UsIGxhc3Rjb2x1bW4pOworCQkJCQkJcGFpbnRDb250ZW50KGNvbHVtbiwgZywgY2xpcHgsIGNsaXB5LCBjbGlwd2lkdGgsIGNsaXBoZWlnaHQsCisJCQkJCQkJeCArIDIgLSB2aWV3LjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICd4JyI+eDwvZXJyb3I+LCAxLCB3aWR0aCAtIDIsCisJCQkJCQkJdmlld3BvcnQuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ3knIj55PC9lcnJvcj4gLSAyLCBlbmFibGVkID8gY190ZXh0IDogY19kaXNhYmxlLCAibGVmdCIsIGZhbHNlKTsKKwkJCQkJfQorCQkJCQlpKys7IHggKz0gd2lkdGg7CisJCQkJfQorCQkJCWlmIChkcmF3aGVhZGVyKSB7IGcuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBtZXRob2QgJ3NldENsaXAoaW50LCBpbnQsIGludCwgaW50KSciPnNldENsaXA8L2Vycm9yPihjbGlweCwgY2xpcHksIGNsaXB3aWR0aCwgY2xpcGhlaWdodCk7IH0KKwkJCX0KKwkJCXBhaW50UmVjdChnLCB2aWV3cG9ydC48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAneCciPng8L2Vycm9yPiwgdmlld3BvcnQuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ3knIj55PC9lcnJvcj4sIHZpZXdwb3J0LjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICd3aWR0aCciPndpZHRoPC9lcnJvcj4sIHZpZXdwb3J0LjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdoZWlnaHQnIj5oZWlnaHQ8L2Vycm9yPiwKKwkJCQllbmFibGVkID8gY19ib3JkZXIgOiBjX2Rpc2FibGUsIGNfdGV4dGJnLCB0cnVlLCB0cnVlLCB0cnVlLCB0cnVlKTsKKwkJCWlmIChwYWludFNjcm9sbFBhbmUoZywgY2xpcHgsIGNsaXB5LCBjbGlwd2lkdGgsIGNsaXBoZWlnaHQsIGJvdW5kcywKKwkJCQkJdmlldywgdmlld3BvcnQsIGVuYWJsZWQsIGluc2lkZSwgcHJlc3NlZCkpIHsKKwkJCQlPYmplY3QgbGVhZCA9IGdldChjb21wb25lbnQsICJsZWFkIik7CisJCQkJaW50IGx5ID0gY2xpcHkgLSB2aWV3cG9ydC48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAneSciPnk8L2Vycm9yPiAtIDE7CisJCQkJaW50IHlmcm9tID0gdmlldy48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAneSciPnk8L2Vycm9yPiArIE1hdGgubWF4KDAsIGx5KTsKKwkJCQlpbnQgeXRvID0gdmlldy48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAneSciPnk8L2Vycm9yPiArIE1hdGgubWluPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBtZXRob2QgJ21pbig/LCBpbnQpJyI+KHZpZXdwb3J0LjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdoZWlnaHQnIj5oZWlnaHQ8L2Vycm9yPiAtIDIsIGx5ICsgY2xpcGhlaWdodCk8L2Vycm9yPjsKKwkJCQlmb3IgKE9iamVjdCBpdGVtID0gZ2V0KGNvbXBvbmVudCwgKCJsaXN0IiA9PSBjbGFzc25hbWUpID8gIml0ZW0iIDoKKwkJCQkJCSgoInRhYmxlIiA9PSBjbGFzc25hbWUpID8gInJvdyIgOiAibm9kZSIpKTsgaXRlbSAhPSBudWxsOykgeworCQkJCQk8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnUmVjdGFuZ2xlJyI+UmVjdGFuZ2xlPC9lcnJvcj4gciA9IGdldFJlY3RhbmdsZShpdGVtLCAiYm91bmRzIik7CisJCQkJCWlmIChsZWFkID09IG51bGwpIHsKKwkJCQkJCXNldChjb21wb25lbnQsICJsZWFkIiwgbGVhZCA9IGl0ZW0pOyAvLyBkcmF3IGZpcnN0IGl0ZW0gZm9jdXNlZCB3aGVuIGxlYWQgaXMgbnVsbAorCQkJCQl9CisJCQkJCWlmICh5dG8gPD0gci48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAneSciPnk8L2Vycm9yPikgeyBicmVhazsgfSAvLyB0aGUgY2xpcCBib3VuZHMgYXJlIGFib3ZlCisKKwkJCQkJT2JqZWN0IG5leHQgPSAoInRyZWUiID09IGNsYXNzbmFtZSkgPyBnZXQoaXRlbSwgIm5vZGUiKSA6IG51bGw7CisJCQkJCWJvb2xlYW4gZXhwYW5kZWQgPSAobmV4dCAhPSBudWxsKSAmJgorCQkJCQkJCWdldEJvb2xlYW4oaXRlbSwgImV4cGFuZGVkIiwgdHJ1ZSk7CisJCQkJCWlmICh5ZnJvbSA8IHIuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ3knIj55PC9lcnJvcj4gKyByLjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdoZWlnaHQnIj5oZWlnaHQ8L2Vycm9yPikgeyAvLyB0aGUgY2xpcCByZWN0YW5nbGUgaXMgbm90IGJlbGxvdyB0aGUgY3VycmVudCBpdGVtCisJCQkJCQlib29sZWFuIHNlbGVjdGVkID0gZ2V0Qm9vbGVhbihpdGVtLCAic2VsZWN0ZWQiLCBmYWxzZSk7CisJCQkJCQlwYWludFJlY3QoZywgMCwgci48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAneSciPnk8L2Vycm9yPiwgdmlldy48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnd2lkdGgnIj53aWR0aDwvZXJyb3I+LCByLjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdoZWlnaHQnIj5oZWlnaHQ8L2Vycm9yPiwKKwkJCQkJCQljX2JnLCBzZWxlY3RlZCA/IGNfc2VsZWN0IDogY190ZXh0YmcsIGZhbHNlLCBmYWxzZSwgdHJ1ZSwgZmFsc2UpOworCQkJCQkJaWYgKGZvY3VzICYmIChsZWFkID09IGl0ZW0pKSB7CisJCQkJCQkJZy48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIG1ldGhvZCAnc2V0Q29sb3IoQ29sb3IpJyI+c2V0Q29sb3I8L2Vycm9yPihjX2ZvY3VzKTsKKwkJCQkJCQlnLjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgbWV0aG9kICdkcmF3UmVjdChpbnQsID8sID8sID8pJyI+ZHJhd1JlY3Q8L2Vycm9yPigwLCByLjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICd5JyI+eTwvZXJyb3I+LCB2aWV3LjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICd3aWR0aCciPndpZHRoPC9lcnJvcj4gLSAxLCByLjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdoZWlnaHQnIj5oZWlnaHQ8L2Vycm9yPiAtIDIpOworCQkJCQkJfQorCQkJCQkJaWYgKCJ0YWJsZSIgPT0gY2xhc3NuYW1lKSB7CisJCQkJCQkJaW50IHggPSAwOyBpbnQgaSA9IDA7CisJCQkJCQkJZm9yIChPYmplY3QgY2VsbCA9IGdldChpdGVtLCAiY2VsbCIpOworCQkJCQkJCQkJY2VsbCAhPSBudWxsOyBjZWxsID0gZ2V0KGNlbGwsICI6bmV4dCIpKSB7CisJCQkJCQkJCWlmICh4dG8gPD0geCkgeyBicmVhazsgfQorCQkJCQkJCQlpbnQgaXdpZHRoID0gKGkgPCBjb2x1bW53aWR0aHMubGVuZ3RoKSA/IGNvbHVtbndpZHRoc1tpXSA6IDgwOworCQkJCQkJCQlpZiAoeGZyb20gPCB4ICsgaXdpZHRoKSB7CisJCQkJCQkJCQlib29sZWFuIGNlbGxlbmFibGVkID0gZW5hYmxlZCAmJiBnZXRCb29sZWFuKGNlbGwsICJlbmFibGVkIiwgdHJ1ZSk7CisJCQkJCQkJCQlwYWludENvbnRlbnQoY2VsbCwgZywgeGZyb20sIHlmcm9tLCB4dG8gLSB4ZnJvbSwgeXRvIC0geWZyb20sCisJCQkJCQkJCQkJci48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAneCciPng8L2Vycm9yPiArIHggKyAxLCByLjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICd5JyI+eTwvZXJyb3I+ICsgMSwgaXdpZHRoIC0gMiwgci48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnaGVpZ2h0JyI+aGVpZ2h0PC9lcnJvcj4gLSAzLAorCQkJCQkJCQkJCWNlbGxlbmFibGVkID8gY190ZXh0IDogY19kaXNhYmxlLCAibGVmdCIsIGZhbHNlKTsKKwkJCQkJCQkJfQorCQkJCQkJCQl4ICs9IGl3aWR0aDsgaSsrOworCQkJCQkJCX0KKwkJCQkJCX0gZWxzZSB7CisJCQkJCQkJYm9vbGVhbiBpdGVtZW5hYmxlZCA9IGVuYWJsZWQgJiYgZ2V0Qm9vbGVhbihpdGVtLCAiZW5hYmxlZCIsIHRydWUpOworCQkJCQkJCXBhaW50Q29udGVudChpdGVtLCBnLCB4ZnJvbSwgeWZyb20sIHh0byAtIHhmcm9tLCB5dG8gLSB5ZnJvbSwKKwkJCQkJCQkJci48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAneCciPng8L2Vycm9yPiArIDEsIHIuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ3knIj55PC9lcnJvcj4gKyAxLCB2aWV3LjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICd3aWR0aCciPndpZHRoPC9lcnJvcj4gLSByLjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICd4JyI+eDwvZXJyb3I+IC0gMiwKKwkJCQkJCQkJci48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnaGVpZ2h0JyI+aGVpZ2h0PC9lcnJvcj4gLSAzLCBpdGVtZW5hYmxlZCA/IGNfdGV4dCA6IGNfZGlzYWJsZSwgImxlZnQiLCBmYWxzZSk7CisKKwkJCQkJCQlpZiAobmV4dCAhPSBudWxsKSB7CisJCQkJCQkJCWludCB4ID0gci48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAneCciPng8L2Vycm9yPiAtIGJsb2NrIC8gMjsKKwkJCQkJCQkJaW50IHkgPSByLjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICd5JyI+eTwvZXJyb3I+ICsgKHIuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ2hlaWdodCciPmhlaWdodDwvZXJyb3I+IC0gMSkgLyAyOworCQkJCQkJCQkvL2cuZHJhd1JlY3QoeCAtIDQsIHkgLSA0LCA4LCA4KTsKKwkJCQkJCQkJcGFpbnRSZWN0KGcsIHggLSA0LCB5IC0gNCwgOSwgOSwgaXRlbWVuYWJsZWQgPyBjX2JvcmRlciA6IGNfZGlzYWJsZSwKKwkJCQkJCQkJCWl0ZW1lbmFibGVkID8gY19jdHJsIDogY19iZywgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSk7CisJCQkJCQkJCWcuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBtZXRob2QgJ3NldENvbG9yKENvbG9yKSciPnNldENvbG9yPC9lcnJvcj4oaXRlbWVuYWJsZWQgPyBjX3RleHQgOiBjX2Rpc2FibGUpOworCQkJCQkJCQlnLjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgbWV0aG9kICdkcmF3TGluZShpbnQsIGludCwgaW50LCBpbnQpJyI+ZHJhd0xpbmU8L2Vycm9yPih4IC0gMiwgeSwgeCArIDIsIHkpOworCQkJCQkJCQlpZiAoIWV4cGFuZGVkKSB7CisJCQkJCQkJCQlnLjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgbWV0aG9kICdkcmF3TGluZShpbnQsIGludCwgaW50LCBpbnQpJyI+ZHJhd0xpbmU8L2Vycm9yPih4LCB5IC0gMiwgeCwgeSArIDIpOworCQkJCQkJCQl9CisJCQkJCQkJfQorCQkJCQkJfQorCQkJCQl9CisJCQkJCWlmICgidHJlZSIgPT0gY2xhc3NuYW1lKSB7CisJCQkJCQlpZiAoKG5leHQgPT0gbnVsbCkgfHwgIWV4cGFuZGVkKSB7CisJCQkJCQkJd2hpbGUgKChpdGVtICE9IGNvbXBvbmVudCkgJiYgKChuZXh0ID0gZ2V0KGl0ZW0sICI6bmV4dCIpKSA9PSBudWxsKSkgeworCQkJCQkJCQlpdGVtID0gZ2V0UGFyZW50KGl0ZW0pOworCQkJCQkJCX0KKwkJCQkJCX0KKwkJCQkJCWl0ZW0gPSBuZXh0OworCQkJCQl9IGVsc2UgeworCQkJCQkJaXRlbSA9IGdldChpdGVtLCAiOm5leHQiKTsKKwkJCQkJfQorCQkJCX0KKwkJCQkvKmlmIChjb2x1bW53aWR0aHMgIT0gbnVsbCkgeworCQkJCQlnLnNldENvbG9yKGNfYmcpOworCQkJCQlmb3IgKGludCBpID0gMCwgY3ggPSAtMTsgaSA8IGNvbHVtbndpZHRocy5sZW5ndGggLSAxOyBpKyspIHsKKwkJCQkJCWN4ICs9IGNvbHVtbndpZHRoc1tpXTsKKwkJCQkJCWcuZHJhd0xpbmUoY3gsIDAsIGN4LCB2aWV3LmhlaWdodCk7CisJCQkJCX0KKwkJCQl9Ki8KKwkJCQlyZXNldFNjcm9sbFBhbmUoZywgY2xpcHgsIGNsaXB5LCBjbGlwd2lkdGgsIGNsaXBoZWlnaHQsIHZpZXcsIHZpZXdwb3J0KTsKKwkJCX0KKwkJfQorCQllbHNlIGlmICgic2VwYXJhdG9yIiA9PSBjbGFzc25hbWUpIHsKKwkJCWcuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBtZXRob2QgJ3NldENvbG9yKENvbG9yKSciPnNldENvbG9yPC9lcnJvcj4oZW5hYmxlZCA/IGNfYm9yZGVyIDogY19kaXNhYmxlKTsKKwkJCWcuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBtZXRob2QgJ2ZpbGxSZWN0KGludCwgaW50LCA/LCA/KSciPmZpbGxSZWN0PC9lcnJvcj4oMCwgMCwgYm91bmRzLjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICd3aWR0aCciPndpZHRoPC9lcnJvcj4sIGJvdW5kcy48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnaGVpZ2h0JyI+aGVpZ2h0PC9lcnJvcj4pOworCQl9CisJCWVsc2UgaWYgKCJtZW51YmFyIiA9PSBjbGFzc25hbWUpIHsKKwkJCU9iamVjdCBzZWxlY3RlZCA9IGdldChjb21wb25lbnQsICJzZWxlY3RlZCIpOworCQkJaW50IGxhc3R4ID0gMDsKKwkJCWZvciAoT2JqZWN0IG1lbnUgPSBnZXQoY29tcG9uZW50LCAibWVudSIpOworCQkJCQltZW51ICE9IG51bGw7IG1lbnUgPSBnZXQobWVudSwgIjpuZXh0IikpIHsKKwkJCQk8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnUmVjdGFuZ2xlJyI+UmVjdGFuZ2xlPC9lcnJvcj4gbWIgPSBnZXRSZWN0YW5nbGUobWVudSwgImJvdW5kcyIpOworCQkJCWlmIChjbGlweCArIGNsaXB3aWR0aCA8PSBtYi48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAneCciPng8L2Vycm9yPikgeyBicmVhazsgfQorCQkJCWlmIChjbGlweCA+PSBtYi48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAneCciPng8L2Vycm9yPiArIG1iLjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICd3aWR0aCciPndpZHRoPC9lcnJvcj4pIHsgY29udGludWU7IH0KKwkJCQlib29sZWFuIGFybWVkID0gKHNlbGVjdGVkID09IG1lbnUpOworCQkJCWJvb2xlYW4gaG9vdmVyID0gKHNlbGVjdGVkID09IG51bGwpICYmIChpbnNpZGVwYXJ0ID09IG1lbnUpOworCQkJCXBhaW50UmVjdChnLCBtYi48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAneCciPng8L2Vycm9yPiwgMCwgbWIuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ3dpZHRoJyI+d2lkdGg8L2Vycm9yPiwgYm91bmRzLjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdoZWlnaHQnIj5oZWlnaHQ8L2Vycm9yPiwgZW5hYmxlZCA/IGNfYm9yZGVyIDogY19kaXNhYmxlLAorCQkJCQllbmFibGVkID8gKGFybWVkID8gY19zZWxlY3QgOiAoaG9vdmVyID8gY19ob3ZlciA6IGNfY3RybCkpIDogY19iZywKKwkJCQkJYXJtZWQsIGFybWVkLCB0cnVlLCBhcm1lZCk7CisJCQkJcGFpbnRDb250ZW50KG1lbnUsIGcsIGNsaXB4LCBjbGlweSwgY2xpcHdpZHRoLCBjbGlwaGVpZ2h0LAorCQkJCQltYi48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAneCciPng8L2Vycm9yPiArIDQsIDEsIG1iLjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICd3aWR0aCciPndpZHRoPC9lcnJvcj4sIGJvdW5kcy48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnaGVpZ2h0JyI+aGVpZ2h0PC9lcnJvcj4sCisJCQkJCShlbmFibGVkICYmIGdldEJvb2xlYW4obWVudSwgImVuYWJsZWQiLCB0cnVlKSkgPyBjX3RleHQgOiBjX2Rpc2FibGUsCisJCQkJCSJsZWZ0IiwgdHJ1ZSk7CisJCQkJbGFzdHggPSBtYi48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAneCciPng8L2Vycm9yPiArIG1iLjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICd3aWR0aCciPndpZHRoPC9lcnJvcj47CisJCQl9CisJCQlwYWludFJlY3QoZywgbGFzdHgsIDAsIGJvdW5kcy48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnd2lkdGgnIj53aWR0aDwvZXJyb3I+IC0gbGFzdHgsIGJvdW5kcy48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnaGVpZ2h0JyI+aGVpZ2h0PC9lcnJvcj4sCisJCQkJZW5hYmxlZCA/IGNfYm9yZGVyIDogY19kaXNhYmxlLCBlbmFibGVkID8gY19jdHJsIDogY19iZywKKwkJCQlmYWxzZSwgZmFsc2UsIHRydWUsIGZhbHNlKTsKKwkJfQorCQllbHNlIGlmICgicG9wdXBtZW51IiA9PSBjbGFzc25hbWUpIHsKKwkJCXBhaW50UmVjdChnLCAwLCAwLCBib3VuZHMuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ3dpZHRoJyI+d2lkdGg8L2Vycm9yPiwgYm91bmRzLjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdoZWlnaHQnIj5oZWlnaHQ8L2Vycm9yPiwKKwkJCQljX2JvcmRlciwgY19iZywgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSk7CisJCQlPYmplY3Qgc2VsZWN0ZWQgPSBnZXQoY29tcG9uZW50LCAic2VsZWN0ZWQiKTsKKwkJCWZvciAoT2JqZWN0IG1lbnUgPSBnZXQoZ2V0KGNvbXBvbmVudCwgIm1lbnUiKSwgIm1lbnUiKTsKKwkJCQkJbWVudSAhPSBudWxsOyBtZW51ID0gZ2V0KG1lbnUsICI6bmV4dCIpKSB7CisJCQkJPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ1JlY3RhbmdsZSciPlJlY3RhbmdsZTwvZXJyb3I+IHIgPSBnZXRSZWN0YW5nbGUobWVudSwgImJvdW5kcyIpOworCQkJCWlmIChjbGlweSArIGNsaXBoZWlnaHQgPD0gci48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAneSciPnk8L2Vycm9yPikgeyBicmVhazsgfQorCQkJCWlmIChjbGlweSA+PSByLjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICd5JyI+eTwvZXJyb3I+ICsgci48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnaGVpZ2h0JyI+aGVpZ2h0PC9lcnJvcj4pIHsgY29udGludWU7IH0KKwkJCQlTdHJpbmcgaXRlbWNsYXNzID0gZ2V0Q2xhc3MobWVudSk7CisJCQkJaWYgKGl0ZW1jbGFzcyA9PSAic2VwYXJhdG9yIikgeworCQkJCQlnLjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgbWV0aG9kICdzZXRDb2xvcihDb2xvciknIj5zZXRDb2xvcjwvZXJyb3I+KGNfYm9yZGVyKTsKKwkJCQkJZy48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIG1ldGhvZCAnZmlsbFJlY3QoPywgPywgPywgPyknIj5maWxsUmVjdDwvZXJyb3I+KHIuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ3gnIj54PC9lcnJvcj4sIHIuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ3knIj55PC9lcnJvcj4sIGJvdW5kcy48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnd2lkdGgnIj53aWR0aDwvZXJyb3I+IC0gMiwgci48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnaGVpZ2h0JyI+aGVpZ2h0PC9lcnJvcj4pOworCQkJCX0gZWxzZSB7CisJCQkJCWJvb2xlYW4gYXJtZWQgPSAoc2VsZWN0ZWQgPT0gbWVudSk7CisJCQkJCWJvb2xlYW4gbWVudWVuYWJsZWQgPSBnZXRCb29sZWFuKG1lbnUsICJlbmFibGVkIiwgdHJ1ZSk7CisJCQkJCXBhaW50UmVjdChnLCByLjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICd4JyI+eDwvZXJyb3I+LCByLjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICd5JyI+eTwvZXJyb3I+LCBib3VuZHMuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ3dpZHRoJyI+d2lkdGg8L2Vycm9yPiAtIDIsIHIuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ2hlaWdodCciPmhlaWdodDwvZXJyb3I+LCBjX2JvcmRlciwKKwkJCQkJCWFybWVkID8gY19zZWxlY3QgOiBjX2JnLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSk7CisJCQkJCWludCB0eCA9IHIuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ3gnIj54PC9lcnJvcj47CisJCQkJCWlmIChpdGVtY2xhc3MgPT0gImNoZWNrYm94bWVudWl0ZW0iKSB7CisJCQkJCQl0eCArPSBibG9jayArIDM7CisJCQkJCQlib29sZWFuIGNoZWNrZWQgPSBnZXRCb29sZWFuKG1lbnUsICJzZWxlY3RlZCIsIGZhbHNlKTsKKwkJCQkJCVN0cmluZyBncm91cCA9IGdldFN0cmluZyhtZW51LCAiZ3JvdXAiLCBudWxsKTsKKwkJCQkJCWcuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBtZXRob2QgJ3RyYW5zbGF0ZSg/LCA/KSciPnRyYW5zbGF0ZTwvZXJyb3I+KHIuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ3gnIj54PC9lcnJvcj4gKyA0LCByLjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICd5JyI+eTwvZXJyb3I+ICsgMik7CisJCQkJCQlnLjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgbWV0aG9kICdzZXRDb2xvcihDb2xvciknIj5zZXRDb2xvcjwvZXJyb3I+KG1lbnVlbmFibGVkID8gY19ib3JkZXIgOiBjX2Rpc2FibGUpOworCQkJCQkJaWYgKGdyb3VwID09IG51bGwpIHsKKwkJCQkJCQlnLjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgbWV0aG9kICdkcmF3UmVjdChpbnQsIGludCwgaW50LCBpbnQpJyI+ZHJhd1JlY3Q8L2Vycm9yPigxLCAxLCBibG9jayAtIDMsIGJsb2NrIC0gMyk7CisJCQkJCQl9IGVsc2UgeworCQkJCQkJCWcuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBtZXRob2QgJ2RyYXdPdmFsKGludCwgaW50LCBpbnQsIGludCknIj5kcmF3T3ZhbDwvZXJyb3I+KDEsIDEsIGJsb2NrIC0gMywgYmxvY2sgLSAzKTsgLy9qYXZhCisJCQkJCQl9CisJCQkJCQlpZiAoY2hlY2tlZCkgeworCQkJCQkJCWcuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBtZXRob2QgJ3NldENvbG9yKENvbG9yKSciPnNldENvbG9yPC9lcnJvcj4obWVudWVuYWJsZWQgPyBjX3RleHQgOiBjX2Rpc2FibGUpOworCQkJCQkJCWlmIChncm91cCA9PSBudWxsKSB7CisJCQkJCQkJCWcuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBtZXRob2QgJ2ZpbGxSZWN0KGludCwgaW50LCBpbnQsIGludCknIj5maWxsUmVjdDwvZXJyb3I+KDMsIGJsb2NrIC0gOSwgMiwgNik7CisJCQkJCQkJCWcuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBtZXRob2QgJ2RyYXdMaW5lKGludCwgaW50LCBpbnQsIGludCknIj5kcmF3TGluZTwvZXJyb3I+KDMsIGJsb2NrIC0gNCwgYmxvY2sgLSA0LCAzKTsKKwkJCQkJCQkJZy48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIG1ldGhvZCAnZHJhd0xpbmUoaW50LCBpbnQsIGludCwgaW50KSciPmRyYXdMaW5lPC9lcnJvcj4oNCwgYmxvY2sgLSA0LCBibG9jayAtIDQsIDQpOworCQkJCQkJCX0gZWxzZSB7CisJCQkJCQkJCWcuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBtZXRob2QgJ2ZpbGxPdmFsKGludCwgaW50LCBpbnQsIGludCknIj5maWxsT3ZhbDwvZXJyb3I+KDUsIDUsIGJsb2NrIC0gMTAsIGJsb2NrIC0gMTApOyAvL2phdmEKKwkJCQkJCQkJZy48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIG1ldGhvZCAnZHJhd092YWwoaW50LCBpbnQsIGludCwgaW50KSciPmRyYXdPdmFsPC9lcnJvcj4oNCwgNCwgYmxvY2sgLSA5LCBibG9jayAtIDkpOyAvL2phdmEKKwkJCQkJCQl9CisJCQkJCQl9CisJCQkJCQlnLjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgbWV0aG9kICd0cmFuc2xhdGUoPywgPyknIj50cmFuc2xhdGU8L2Vycm9yPigtci48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAneCciPng8L2Vycm9yPiAtIDQsIC1yLjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICd5JyI+eTwvZXJyb3I+IC0gMik7CisJCQkJCX0KKwkJCQkJcGFpbnRDb250ZW50KG1lbnUsIGcsIGNsaXB4LCBjbGlweSwgY2xpcHdpZHRoLCBjbGlwaGVpZ2h0LAorCQkJCQkJdHggKyA0LCByLjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICd5JyI+eTwvZXJyb3I+ICsgMiwgYm91bmRzLjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICd3aWR0aCciPndpZHRoPC9lcnJvcj4gLSAxMCwKKwkJCQkJCXIuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ2hlaWdodCciPmhlaWdodDwvZXJyb3I+IC0gNCwgbWVudWVuYWJsZWQgPyBjX3RleHQgOiBjX2Rpc2FibGUsICJsZWZ0IiwgdHJ1ZSk7CisJCQkJCWlmIChpdGVtY2xhc3MgPT0gIm1lbnUiKSB7CisJCQkJCQlwYWludEFycm93KGcsIHIuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ3gnIj54PC9lcnJvcj4gKyBib3VuZHMuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ3dpZHRoJyI+d2lkdGg8L2Vycm9yPiAtIGJsb2NrLCByLjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICd5JyI+eTwvZXJyb3I+LCBibG9jaywgci48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnaGVpZ2h0JyI+aGVpZ2h0PC9lcnJvcj4sICdFJyk7CisJCQkJCX0KKwkJCQl9CisJCQl9CisJCX0KKwkJLy9qYXZhPgorCQllbHNlIGlmICgiYmVhbiIgPT0gY2xhc3NuYW1lKSB7CisJCQkJZy48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIG1ldGhvZCAnY2xpcFJlY3QoaW50LCBpbnQsID8sID8pJyI+Y2xpcFJlY3Q8L2Vycm9yPigwLCAwLCBib3VuZHMuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ3dpZHRoJyI+d2lkdGg8L2Vycm9yPiwgYm91bmRzLjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdoZWlnaHQnIj5oZWlnaHQ8L2Vycm9yPik7CisJCQkJKChDb21wb25lbnQpIGdldChjb21wb25lbnQsICJiZWFuIikpLnBhaW50KGcpOworCQkJCWcuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBtZXRob2QgJ3NldENsaXAoaW50LCBpbnQsIGludCwgaW50KSciPnNldENsaXA8L2Vycm9yPihjbGlweCwgY2xpcHksIGNsaXB3aWR0aCwgY2xpcGhlaWdodCk7CisJCX0KKwkJLy88amF2YQorCQllbHNlIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oKFN0cmluZykgY2xhc3NuYW1lKTsKKwkJZy48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIG1ldGhvZCAndHJhbnNsYXRlKD8sID8pJyI+dHJhbnNsYXRlPC9lcnJvcj4oLWJvdW5kcy48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAneCciPng8L2Vycm9yPiwgLWJvdW5kcy48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAneSciPnk8L2Vycm9yPik7CisJCWNsaXB4ICs9IGJvdW5kcy48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAneCciPng8L2Vycm9yPjsgY2xpcHkgKz0gYm91bmRzLjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICd5JyI+eTwvZXJyb3I+OworCX0KKworCS8qKgorCSAqCisJICovCisJcHJpdmF0ZSB2b2lkIHBhaW50UmV2ZXJzZSg8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnR3JhcGhpY3MnIj5HcmFwaGljczwvZXJyb3I+IGcsCisJCQlpbnQgY2xpcHgsIGludCBjbGlweSwgaW50IGNsaXB3aWR0aCwgaW50IGNsaXBoZWlnaHQsCisJCQlPYmplY3QgY29tcG9uZW50LCBib29sZWFuIGVuYWJsZWQpIHsKKwkJaWYgKGNvbXBvbmVudCAhPSBudWxsKSB7CisJCQk8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnUmVjdGFuZ2xlJyI+UmVjdGFuZ2xlPC9lcnJvcj4gYm91bmRzID0gZ2V0UmVjdGFuZ2xlKGNvbXBvbmVudCwgImJvdW5kcyIpOworCQkJaWYgKChjbGlweCA8IGJvdW5kcy48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAneCciPng8L2Vycm9yPikgfHwKKwkJCQkJKGNsaXB4ICsgY2xpcHdpZHRoID4gYm91bmRzLjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICd4JyI+eDwvZXJyb3I+ICsgYm91bmRzLjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICd3aWR0aCciPndpZHRoPC9lcnJvcj4pIHx8CisJCQkJCShjbGlweSA8IGJvdW5kcy48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAneSciPnk8L2Vycm9yPikgfHwKKwkJCQkJKGNsaXB5ICsgY2xpcGhlaWdodCA+IGJvdW5kcy48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAneSciPnk8L2Vycm9yPiArIGJvdW5kcy48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnaGVpZ2h0JyI+aGVpZ2h0PC9lcnJvcj4pKSB7CisJCQkJcGFpbnRSZXZlcnNlKGcsIGNsaXB4LCBjbGlweSwgY2xpcHdpZHRoLCBjbGlwaGVpZ2h0LAorCQkJCQlnZXQoY29tcG9uZW50LCAiOm5leHQiKSwgZW5hYmxlZCk7CisJCQl9CisJCQlwYWludChnLCBjbGlweCwgY2xpcHksIGNsaXB3aWR0aCwgY2xpcGhlaWdodCwgY29tcG9uZW50LCBlbmFibGVkKTsKKwkJfQorCX0KKworCS8qKgorCSAqCisJICovCisJcHJpdmF0ZSB2b2lkIHBhaW50RmllbGQoPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ0dyYXBoaWNzJyI+R3JhcGhpY3M8L2Vycm9yPiBnLAorCQkJaW50IGNsaXB4LCBpbnQgY2xpcHksIGludCBjbGlwd2lkdGgsIGludCBjbGlwaGVpZ2h0LCBPYmplY3QgY29tcG9uZW50LAorCQkJaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCBib29sZWFuIGluc2lkZSwgYm9vbGVhbiBwcmVzc2VkLAorCQkJYm9vbGVhbiBmb2N1cywgYm9vbGVhbiBlbmFibGVkLCBib29sZWFuIGhpZGRlbiwgaW50IGxlZnQpIHsKKwkJYm9vbGVhbiBlZGl0YWJsZSA9IGdldEJvb2xlYW4oY29tcG9uZW50LCAiZWRpdGFibGUiLCB0cnVlKTsKKwkJcGFpbnRSZWN0KGcsIDAsIDAsIHdpZHRoLCBoZWlnaHQsIGVuYWJsZWQgPyBjX2JvcmRlciA6IGNfZGlzYWJsZSwKKwkJCWVkaXRhYmxlID8gY190ZXh0YmcgOiBjX2JnLCB0cnVlLCB0cnVlLCB0cnVlLCB0cnVlKTsKKwkJZy48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIG1ldGhvZCAnY2xpcFJlY3QoaW50LCBpbnQsIGludCwgaW50KSciPmNsaXBSZWN0PC9lcnJvcj4oMSArIGxlZnQsIDEsIHdpZHRoIC0gbGVmdCAtIDIsIGhlaWdodCAtIDIpOworCisJCVN0cmluZyB0ZXh0ID0gZ2V0U3RyaW5nKGNvbXBvbmVudCwgInRleHQiLCAiIik7CisJCWludCBvZmZzZXQgPSBnZXRJbnRlZ2VyKGNvbXBvbmVudCwgIm9mZnNldCIsIDApOworCQk8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnRm9udE1ldHJpY3MnIj5Gb250TWV0cmljczwvZXJyb3I+IGZtID0gZy48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIG1ldGhvZCAnZ2V0Rm9udE1ldHJpY3MoKSciPmdldEZvbnRNZXRyaWNzPC9lcnJvcj4oKTsgLy9qYXZhCisKKwkJaW50IGNhcmV0ID0gMDsKKwkJaWYgKGZvY3VzKSB7CisJCQlpbnQgc3RhcnQgPSBnZXRJbnRlZ2VyKGNvbXBvbmVudCwgInN0YXJ0IiwgMCk7CisJCQlpbnQgZW5kID0gZ2V0SW50ZWdlcihjb21wb25lbnQsICJlbmQiLCAwKTsKKwkJCWNhcmV0ID0gaGlkZGVuID8gKGZtLjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgbWV0aG9kICdjaGFyV2lkdGgoY2hhciknIj5jaGFyV2lkdGg8L2Vycm9yPignKicpICogZW5kKSA6CisJCQkJZm0uPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBtZXRob2QgJ3N0cmluZ1dpZHRoKGphdmEubGFuZy5TdHJpbmcpJyI+c3RyaW5nV2lkdGg8L2Vycm9yPih0ZXh0LnN1YnN0cmluZygwLCBlbmQpKTsgLy9qYXZhCisJCQkJLy9taWRwIGZvbnQuc3Vic3RyaW5nV2lkdGgodGV4dCwgMCwgZW5kKTsKKwkJCWlmIChzdGFydCAhPSBlbmQpIHsKKwkJCQlpbnQgaXMgPSBoaWRkZW4gPyAoZm0uPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBtZXRob2QgJ2NoYXJXaWR0aChjaGFyKSciPmNoYXJXaWR0aDwvZXJyb3I+KCcqJykgKiBzdGFydCkgOgorCQkJCQlmbS48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIG1ldGhvZCAnc3RyaW5nV2lkdGgoamF2YS5sYW5nLlN0cmluZyknIj5zdHJpbmdXaWR0aDwvZXJyb3I+KHRleHQuc3Vic3RyaW5nKDAsIHN0YXJ0KSk7IC8vamF2YQorCQkJCQkvL21pZHAgZm9udC5zdWJzdHJpbmdXaWR0aCh0ZXh0LCAwLCBzdGFydCk7CisJCQkJZy48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIG1ldGhvZCAnc2V0Q29sb3IoQ29sb3IpJyI+c2V0Q29sb3I8L2Vycm9yPihjX3NlbGVjdCk7CisJCQkJZy48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIG1ldGhvZCAnZmlsbFJlY3QoaW50LCBpbnQsIGludCwgaW50KSciPmZpbGxSZWN0PC9lcnJvcj4oMiArIGxlZnQgLSBvZmZzZXQgKyBNYXRoLm1pbihpcywgY2FyZXQpLCAxLAorCQkJCQlNYXRoLmFicyhjYXJldCAtIGlzKSwgaGVpZ2h0IC0gMik7CisJCQl9CisJCX0KKworCQlpZiAoZm9jdXMpIHsKKwkJCWcuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBtZXRob2QgJ3NldENvbG9yKENvbG9yKSciPnNldENvbG9yPC9lcnJvcj4oY19mb2N1cyk7CisJCQlnLjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgbWV0aG9kICdmaWxsUmVjdChpbnQsIGludCwgaW50LCBpbnQpJyI+ZmlsbFJlY3Q8L2Vycm9yPigxICsgbGVmdCAtIG9mZnNldCArIGNhcmV0LCAxLCAxLCBoZWlnaHQgLSAyKTsKKwkJfQorCisJCWcuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBtZXRob2QgJ3NldENvbG9yKENvbG9yKSciPnNldENvbG9yPC9lcnJvcj4oZW5hYmxlZCA/IGNfdGV4dCA6IGNfZGlzYWJsZSk7CisJCWludCBmeCA9IDIgKyBsZWZ0IC0gb2Zmc2V0OworCQlpbnQgZnkgPSAoaGVpZ2h0ICsgZm0uPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBtZXRob2QgJ2dldEFzY2VudCgpJyI+Z2V0QXNjZW50PC9lcnJvcj4oKSAtIGZtLjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgbWV0aG9kICdnZXREZXNjZW50KCknIj5nZXREZXNjZW50PC9lcnJvcj4oKSkgLyAyOyAvL2phdmEKKwkJLy9taWRwIGludCBmeSA9IChoZWlnaHQgLSBmb250LmdldEhlaWdodCgpKSAvIDI7CisJCWlmIChoaWRkZW4pIHsKKwkJCWludCBmaCA9IGZtLjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgbWV0aG9kICdjaGFyV2lkdGgoY2hhciknIj5jaGFyV2lkdGg8L2Vycm9yPignKicpOworCQkJZm9yIChpbnQgaSA9IHRleHQubGVuZ3RoKCk7IGkgPiAwOyBpLS0pIHsKKwkJCQlnLjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgbWV0aG9kICdkcmF3U3RyaW5nKGphdmEubGFuZy5TdHJpbmcsIGludCwgaW50KSciPmRyYXdTdHJpbmc8L2Vycm9yPigiKiIsIGZ4LCBmeSk7IC8vamF2YQorCQkJCS8vbWlkcCBnLmRyYXdDaGFyKCcqJywgZngsIGZ5LCBHcmFwaGljcy5MRUZUIHwgR3JhcGhpY3MuVE9QKTsKKwkJCQlmeCArPSBmaDsKKwkJCX0KKwkJfSBlbHNlIHsKKwkJCWcuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBtZXRob2QgJ2RyYXdTdHJpbmcoamF2YS5sYW5nLlN0cmluZywgaW50LCBpbnQpJyI+ZHJhd1N0cmluZzwvZXJyb3I+KHRleHQsIGZ4LCBmeSk7IC8vamF2YQorCQkJLy9taWRwIGcuZHJhd1N0cmluZyh0ZXh0LCBmeCwgZnksIEdyYXBoaWNzLkxFRlQgfCBHcmFwaGljcy5UT1ApOworCQl9CisJCWcuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBtZXRob2QgJ3NldENsaXAoaW50LCBpbnQsIGludCwgaW50KSciPnNldENsaXA8L2Vycm9yPihjbGlweCwgY2xpcHksIGNsaXB3aWR0aCwgY2xpcGhlaWdodCk7CisJfQorCisJLyoqCisJICoKKwkgKi8KKwlwcml2YXRlIGJvb2xlYW4gcGFpbnRTY3JvbGxQYW5lKDxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdHcmFwaGljcyciPkdyYXBoaWNzPC9lcnJvcj4gZywKKwkJCWludCBjbGlweCwgaW50IGNsaXB5LCBpbnQgY2xpcHdpZHRoLCBpbnQgY2xpcGhlaWdodCwgPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ1JlY3RhbmdsZSciPlJlY3RhbmdsZTwvZXJyb3I+IGJvdW5kcywKKwkJCTxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdSZWN0YW5nbGUnIj5SZWN0YW5nbGU8L2Vycm9yPiB2aWV3LCA8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnUmVjdGFuZ2xlJyI+UmVjdGFuZ2xlPC9lcnJvcj4gdmlld3BvcnQsCisJCQlib29sZWFuIGVuYWJsZWQsIGJvb2xlYW4gaW5zaWRlLCBib29sZWFuIHByZXNzZWQpIHsKKwkJaWYgKCh2aWV3cG9ydC48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAneSciPnk8L2Vycm9yPiArIHZpZXdwb3J0LjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdoZWlnaHQnIj5oZWlnaHQ8L2Vycm9yPiA8IGJvdW5kcy48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnaGVpZ2h0JyI+aGVpZ2h0PC9lcnJvcj4pICYmCisJCQkJKGNsaXB5ICsgY2xpcGhlaWdodCA+IHZpZXdwb3J0LjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICd5JyI+eTwvZXJyb3I+ICsgdmlld3BvcnQuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ2hlaWdodCciPmhlaWdodDwvZXJyb3I+KSkgeyAvLyBuZWVkIGhvcml6b250YWwKKwkJCWludCB4ID0gdmlld3BvcnQuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ3gnIj54PC9lcnJvcj47CisJCQlpbnQgeSA9IHZpZXdwb3J0LjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICd5JyI+eTwvZXJyb3I+ICsgdmlld3BvcnQuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ2hlaWdodCciPmhlaWdodDwvZXJyb3I+OworCQkJaW50IGhlaWdodCA9IGJvdW5kcy48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnaGVpZ2h0JyI+aGVpZ2h0PC9lcnJvcj4gLSB5OworCQkJaW50IGJ1dHRvbiA9IE1hdGgubWluPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBtZXRob2QgJ21pbihpbnQsID8pJyI+KGJsb2NrLCB2aWV3cG9ydC48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnd2lkdGgnIj53aWR0aDwvZXJyb3I+IC8gMik8L2Vycm9yPjsKKwkJCWludCB0cmFjayA9IHZpZXdwb3J0LjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICd3aWR0aCciPndpZHRoPC9lcnJvcj4gLSAoMiAqIGJ1dHRvbik7IC8vbWF4IDEwCisJCQlpbnQga25vYiA9IE1hdGgubWluPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBtZXRob2QgJ21pbihpbnQsID8pJyI+KHRyYWNrLCBNYXRoLm1heDxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgbWV0aG9kICdtYXgoPywgaW50KSciPih0cmFjayAqICh2aWV3cG9ydC48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnd2lkdGgnIj53aWR0aDwvZXJyb3I+IC0gMikgLyB2aWV3LjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICd3aWR0aCciPndpZHRoPC9lcnJvcj4sIDYpPC9lcnJvcj4pPC9lcnJvcj47CisJCQlpbnQgZGVjcmVhc2UgPSB2aWV3LjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICd4JyI+eDwvZXJyb3I+ICogKHRyYWNrIC0ga25vYikgLworCQkJCSh2aWV3LjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICd3aWR0aCciPndpZHRoPC9lcnJvcj4gLSB2aWV3cG9ydC48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnd2lkdGgnIj53aWR0aDwvZXJyb3I+ICsgMik7CisJCQlpbnQgaW5jcmVhc2UgPSB0cmFjayAtIGRlY3JlYXNlIC0ga25vYjsKKwkJCXBhaW50QXJyb3coZywgeCwgeSwgYnV0dG9uLCBoZWlnaHQsCisJCQkJJ1cnLCBlbmFibGVkLCBpbnNpZGUsIHByZXNzZWQsICJsZWZ0IiwgZmFsc2UsIHRydWUsIHRydWUsIGZhbHNlKTsKKwkJCXBhaW50UmVjdChnLCB4ICsgYnV0dG9uLCB5LCBkZWNyZWFzZSwgaGVpZ2h0LAorCQkJCWVuYWJsZWQgPyBjX2JvcmRlciA6IGNfZGlzYWJsZSwgY19iZywgZmFsc2UsIHRydWUsIHRydWUsIGZhbHNlKTsKKwkJCXBhaW50UmVjdChnLCB4ICsgYnV0dG9uICsgZGVjcmVhc2UsIHksIGtub2IsIGhlaWdodCwKKwkJCQllbmFibGVkID8gY19ib3JkZXIgOiBjX2Rpc2FibGUsIGVuYWJsZWQgPyBjX2N0cmwgOiBjX2JnLCBmYWxzZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSk7CisJCQlpbnQgbiA9IE1hdGgubWluKDUsIChrbm9iIC0gNCkgLyAzKTsKKwkJCWcuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBtZXRob2QgJ3NldENvbG9yKENvbG9yKSciPnNldENvbG9yPC9lcnJvcj4oZW5hYmxlZCA/IGNfYm9yZGVyIDogY19kaXNhYmxlKTsKKwkJCWludCBjeCA9ICh4ICsgYnV0dG9uICsgZGVjcmVhc2UpICsgKGtub2IgKyAyIC0gbiAqIDMpIC8gMjsKKwkJCWZvciAoaW50IGkgPSAwOyBpIDwgbjsgaSsrICkgeworCQkJCWcuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBtZXRob2QgJ2RyYXdMaW5lKGludCwgaW50LCBpbnQsIGludCknIj5kcmF3TGluZTwvZXJyb3I+KGN4ICsgaSAqIDMsIHkgKyAyLCBjeCArIGkgKiAzLCB5ICsgaGVpZ2h0IC0gNCk7CisJCQl9CisJCQlwYWludFJlY3QoZywgeCArIGJ1dHRvbiArIGRlY3JlYXNlICsga25vYiwgeSwgaW5jcmVhc2UsIGhlaWdodCwKKwkJCQllbmFibGVkID8gY19ib3JkZXIgOiBjX2Rpc2FibGUsIGNfYmcsIGZhbHNlLCBmYWxzZSwgdHJ1ZSwgdHJ1ZSk7CisJCQlwYWludEFycm93KGcsIHggKyBidXR0b24gKyB0cmFjaywgeSwgYnV0dG9uLCBoZWlnaHQsCisJCQkJJ0UnLCBlbmFibGVkLCBpbnNpZGUsIHByZXNzZWQsICJyaWdodCIsIGZhbHNlLCBmYWxzZSwgdHJ1ZSwgdHJ1ZSk7CisJCX0KKwkJaWYgKCh2aWV3cG9ydC48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAneCciPng8L2Vycm9yPiArIHZpZXdwb3J0LjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICd3aWR0aCciPndpZHRoPC9lcnJvcj4gPCBib3VuZHMuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ3dpZHRoJyI+d2lkdGg8L2Vycm9yPikgJiYKKwkJCQkoY2xpcHggKyBjbGlwd2lkdGggPiB2aWV3cG9ydC48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAneCciPng8L2Vycm9yPiArIHZpZXdwb3J0LjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICd3aWR0aCciPndpZHRoPC9lcnJvcj4pKSB7IC8vIG5lZWQgdmVydGljYWwKKwkJCWludCB4ID0gdmlld3BvcnQuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ3gnIj54PC9lcnJvcj4gKyB2aWV3cG9ydC48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnd2lkdGgnIj53aWR0aDwvZXJyb3I+OworCQkJaW50IHkgPSB2aWV3cG9ydC48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAneSciPnk8L2Vycm9yPjsKKwkJCWludCB3aWR0aCA9IGJvdW5kcy48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnd2lkdGgnIj53aWR0aDwvZXJyb3I+IC0geDsKKwkJCS8vaWYgKHkgPiAwKSB7CisJCQkvLwlwYWludFJlY3QoZywgeCAtIDEsIDAsIHdpZHRoICsgMSwgeSwKKwkJCS8vCQllbmFibGVkID8gY19ib3JkZXIgOiBjX2Rpc2FibGUsIGNfYmcsIGZhbHNlLCB0cnVlLCBmYWxzZSwgZmFsc2UpOworCQkJLy99CisJCQlpbnQgdHJhY2sgPSB2aWV3cG9ydC48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnaGVpZ2h0JyI+aGVpZ2h0PC9lcnJvcj4gLSAoMiAqIGJsb2NrKTsKKwkJCWludCBrbm9iID0gdHJhY2sgKiAodmlld3BvcnQuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ2hlaWdodCciPmhlaWdodDwvZXJyb3I+IC0gMikgLyB2aWV3LjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdoZWlnaHQnIj5oZWlnaHQ8L2Vycm9yPjsKKwkJCWludCBkZWNyZWFzZSA9IHZpZXcuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ3knIj55PC9lcnJvcj4gKiAodHJhY2sgLSBrbm9iKSAvCisJCQkJKHZpZXcuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ2hlaWdodCciPmhlaWdodDwvZXJyb3I+IC0gdmlld3BvcnQuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ2hlaWdodCciPmhlaWdodDwvZXJyb3I+ICsgMik7CisJCQlpbnQgaW5jcmVhc2UgPSB0cmFjayAtIGRlY3JlYXNlIC0ga25vYjsKKwkJCXBhaW50QXJyb3coZywgeCwgeSwgd2lkdGgsIGJsb2NrLAorCQkJCSdOJywgZW5hYmxlZCwgaW5zaWRlLCBwcmVzc2VkLCAidXAiLCB0cnVlLCBmYWxzZSwgZmFsc2UsIHRydWUpOworCQkJcGFpbnRSZWN0KGcsIHgsIHkgKyBibG9jaywgd2lkdGgsIGRlY3JlYXNlLAorCQkJCWVuYWJsZWQgPyBjX2JvcmRlciA6IGNfZGlzYWJsZSwgY19iZywgdHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVlKTsKKwkJCXBhaW50UmVjdChnLCB4LCB5ICsgYmxvY2sgKyBkZWNyZWFzZSwgd2lkdGgsIGtub2IsCisJCQkJZW5hYmxlZCA/IGNfYm9yZGVyIDogY19kaXNhYmxlLCBlbmFibGVkID8gY19jdHJsIDogY19iZywgdHJ1ZSwgZmFsc2UsIHRydWUsIHRydWUpOworCQkJaW50IG4gPSBNYXRoLm1pbig1LCAoa25vYiAtIDQpIC8gMyk7CisJCQlnLjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgbWV0aG9kICdzZXRDb2xvcihDb2xvciknIj5zZXRDb2xvcjwvZXJyb3I+KGVuYWJsZWQgPyBjX2JvcmRlciA6IGNfZGlzYWJsZSk7CisJCQlpbnQgY3kgPSAoeSArIGJsb2NrICsgZGVjcmVhc2UpICsgKGtub2IgKyAyIC0gbiAqIDMpIC8gMjsKKwkJCWZvciAoaW50IGkgPSAwOyBpIDwgbjsgaSsrICkgeworCQkJCWcuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBtZXRob2QgJ2RyYXdMaW5lKGludCwgaW50LCBpbnQsIGludCknIj5kcmF3TGluZTwvZXJyb3I+KHggKyAyLCBjeSArIGkgKiAzLCB4ICsgd2lkdGggLSA0LCBjeSArIGkgKiAzKTsKKwkJCX0KKwkJCXBhaW50UmVjdChnLCB4LCB5ICsgYmxvY2sgKyBkZWNyZWFzZSArIGtub2IsIHdpZHRoLCBpbmNyZWFzZSwKKwkJCQllbmFibGVkID8gY19ib3JkZXIgOiBjX2Rpc2FibGUsIGNfYmcsIGZhbHNlLCBmYWxzZSwgdHJ1ZSwgdHJ1ZSk7CisJCQlwYWludEFycm93KGcsIHgsIHkgKyBibG9jayArIHRyYWNrLCB3aWR0aCwgYmxvY2ssCisJCQknUycsIGVuYWJsZWQsIGluc2lkZSwgcHJlc3NlZCwgImRvd24iLCBmYWxzZSwgZmFsc2UsIHRydWUsIHRydWUpOworCQl9CisJCWlmICgoY2xpcHggKyBjbGlwd2lkdGggPiB2aWV3cG9ydC48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAneCciPng8L2Vycm9yPikgJiYgKGNsaXB5ICsgY2xpcGhlaWdodCA+IHZpZXdwb3J0LjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICd5JyI+eTwvZXJyb3I+KSAmJgorCQkJCShjbGlweCA8IHZpZXdwb3J0LjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICd4JyI+eDwvZXJyb3I+ICsgdmlld3BvcnQuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ3dpZHRoJyI+d2lkdGg8L2Vycm9yPikgJiYgKGNsaXB5IDwgdmlld3BvcnQuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ3knIj55PC9lcnJvcj4gKyB2aWV3cG9ydC48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnaGVpZ2h0JyI+aGVpZ2h0PC9lcnJvcj4pKSB7CisJCQlnLjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgbWV0aG9kICdjbGlwUmVjdCg/LCA/LCA/LCA/KSciPmNsaXBSZWN0PC9lcnJvcj4odmlld3BvcnQuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ3gnIj54PC9lcnJvcj4gKyAxLCB2aWV3cG9ydC48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAneSciPnk8L2Vycm9yPiArIDEsIHZpZXdwb3J0LjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICd3aWR0aCciPndpZHRoPC9lcnJvcj4gLSAyLCB2aWV3cG9ydC48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnaGVpZ2h0JyI+aGVpZ2h0PC9lcnJvcj4gLSAyKTsKKwkJCWcuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBtZXRob2QgJ3RyYW5zbGF0ZSg/LCA/KSciPnRyYW5zbGF0ZTwvZXJyb3I+KHZpZXdwb3J0LjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICd4JyI+eDwvZXJyb3I+ICsgMSAtIHZpZXcuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ3gnIj54PC9lcnJvcj4sIHZpZXdwb3J0LjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICd5JyI+eTwvZXJyb3I+ICsgMSAtIHZpZXcuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ3knIj55PC9lcnJvcj4pOworCSAJCXJldHVybiB0cnVlOworCQl9CisJCXJldHVybiBmYWxzZTsKKwl9CisKKwkvKioKKwkgKgorCSAqLworCXByaXZhdGUgdm9pZCByZXNldFNjcm9sbFBhbmUoPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ0dyYXBoaWNzJyI+R3JhcGhpY3M8L2Vycm9yPiBnLAorCQkJaW50IGNsaXB4LCBpbnQgY2xpcHksIGludCBjbGlwd2lkdGgsIGludCBjbGlwaGVpZ2h0LAorCQkJPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ1JlY3RhbmdsZSciPlJlY3RhbmdsZTwvZXJyb3I+IHZpZXcsIDxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdSZWN0YW5nbGUnIj5SZWN0YW5nbGU8L2Vycm9yPiB2aWV3cG9ydCkgeworCQlnLjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgbWV0aG9kICd0cmFuc2xhdGUoPywgPyknIj50cmFuc2xhdGU8L2Vycm9yPih2aWV3LjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICd4JyI+eDwvZXJyb3I+IC0gdmlld3BvcnQuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ3gnIj54PC9lcnJvcj4gLSAxLCB2aWV3LjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICd5JyI+eTwvZXJyb3I+IC0gdmlld3BvcnQuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ3knIj55PC9lcnJvcj4gLSAxKTsKKwkJZy48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIG1ldGhvZCAnc2V0Q2xpcChpbnQsIGludCwgaW50LCBpbnQpJyI+c2V0Q2xpcDwvZXJyb3I+KGNsaXB4LCBjbGlweSwgY2xpcHdpZHRoLCBjbGlwaGVpZ2h0KTsKKwl9CisKKwkvKioKKwkgKgorCSAqLworCXByaXZhdGUgdm9pZCBwYWludFJlY3QoPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ0dyYXBoaWNzJyI+R3JhcGhpY3M8L2Vycm9yPiBnLCBpbnQgeCwgaW50IHksIGludCB3aWR0aCwgaW50IGhlaWdodCwKKwkJCTxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdDb2xvciciPkNvbG9yPC9lcnJvcj4gYm9yZGVyLCA8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnQ29sb3InIj5Db2xvcjwvZXJyb3I+IGJnLAorCQkJYm9vbGVhbiB0b3AsIGJvb2xlYW4gbGVmdCwgYm9vbGVhbiBib3R0b20sIGJvb2xlYW4gcmlnaHQpIHsKKwkJaWYgKCh3aWR0aCA8PSAwKSB8fCAoaGVpZ2h0IDw9IDApKSByZXR1cm47CisJCWcuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBtZXRob2QgJ3NldENvbG9yKENvbG9yKSciPnNldENvbG9yPC9lcnJvcj4oYm9yZGVyKTsKKwkJaWYgKHRvcCkgeworCQkJZy48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIG1ldGhvZCAnZHJhd0xpbmUoaW50LCBpbnQsIGludCwgaW50KSciPmRyYXdMaW5lPC9lcnJvcj4oeCArIHdpZHRoIC0gMSwgeSwgeCwgeSk7CisJCQl5Kys7IGhlaWdodC0tOyBpZiAoaGVpZ2h0IDw9IDApIHJldHVybjsKKwkJfQorCQlpZiAobGVmdCkgeworCQkJZy48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIG1ldGhvZCAnZHJhd0xpbmUoaW50LCBpbnQsIGludCwgaW50KSciPmRyYXdMaW5lPC9lcnJvcj4oeCwgeSwgeCwgeSArIGhlaWdodCAtIDEpOworCQkJeCsrOyB3aWR0aC0tOyBpZiAod2lkdGggPD0gMCkgcmV0dXJuOworCQl9CisJCWlmIChib3R0b20pIHsKKwkJCWcuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBtZXRob2QgJ2RyYXdMaW5lKGludCwgaW50LCBpbnQsIGludCknIj5kcmF3TGluZTwvZXJyb3I+KHgsIHkgKyBoZWlnaHQgLSAxLCB4ICsgd2lkdGggLSAxLCB5ICsgaGVpZ2h0IC0gMSk7CisJCQloZWlnaHQtLTsgaWYgKGhlaWdodCA8PSAwKSByZXR1cm47CisJCX0KKwkJaWYgKHJpZ2h0KSB7CisJCQlnLjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgbWV0aG9kICdkcmF3TGluZShpbnQsIGludCwgaW50LCBpbnQpJyI+ZHJhd0xpbmU8L2Vycm9yPih4ICsgd2lkdGggLSAxLCB5ICsgaGVpZ2h0IC0gMSwgeCArIHdpZHRoIC0gMSwgeSk7CisJCQl3aWR0aC0tOyBpZiAod2lkdGggPD0gMCkgcmV0dXJuOworCQl9CisKKwkJLy9qYXZhPgorCQlpZiAoYmcgPT0gY19jdHJsKSB7CisJCQlpZiAoaGVpZ2h0ID4gYmxvY2spIHsKKwkJCQlnLjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgbWV0aG9kICdzZXRDb2xvcihDb2xvciknIj5zZXRDb2xvcjwvZXJyb3I+KGNfYmcpOworCQkJCWcuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBtZXRob2QgJ2ZpbGxSZWN0KGludCwgaW50LCBpbnQsIGludCknIj5maWxsUmVjdDwvZXJyb3I+KHgsIHksIHdpZHRoLCBoZWlnaHQgLSBibG9jayk7CisJCQl9CisJCQlmb3IgKGludCBpID0gMDsgaSA8IHdpZHRoOyBpICs9IGJsb2NrKSB7CisJCQkJZy48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIG1ldGhvZCAnZHJhd0ltYWdlKEltYWdlLCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgbnVsbCknIj5kcmF3SW1hZ2U8L2Vycm9yPihncmFkaWVudCwgeCArIGksIChoZWlnaHQgPiBibG9jaykgPyAoeSArIGhlaWdodCAtIGJsb2NrKSA6IHksCisJCQkJCXggKyBNYXRoLm1pbihpICsgYmxvY2ssIHdpZHRoKSwgeSArIGhlaWdodCwKKwkJCQkJMCwgMCwgTWF0aC5taW4oYmxvY2ssIHdpZHRoIC0gaSksIE1hdGgubWluKGJsb2NrLCBoZWlnaHQpLCBudWxsKTsKKwkJCX0KKwkJCS8qaWYgKHdpZHRoID4gYmxvY2spIHsKKwkJCQlnLnNldENvbG9yKGNfYmcpOworCQkJCWcuZmlsbFJlY3QoeCwgeSwgd2lkdGggLSBibG9jaywgaGVpZ2h0KTsKKwkJCX0KKwkJCWZvciAoaW50IGkgPSAwOyBpIDwgaGVpZ2h0OyBpICs9IGJsb2NrKSB7CisJCQkJZy5kcmF3SW1hZ2UoZ3JhZGllbnQsICh3aWR0aCA+IGJsb2NrKSA/ICh4ICsgd2lkdGggLSBibG9jaykgOiB4LCB5ICsgaSwKKwkJCQkJeCArIHdpZHRoLCB5ICsgTWF0aC5taW4oaSArIGJsb2NrLCBoZWlnaHQpLAorCQkJCQkwLCAwLCBNYXRoLm1pbihibG9jaywgd2lkdGgpLCBNYXRoLm1pbihibG9jaywgaGVpZ2h0IC0gaSksIG51bGwpOworCQkJfSovCisJCX0KKwkJZWxzZSB7CisJCQlnLjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgbWV0aG9kICdzZXRDb2xvcihDb2xvciknIj5zZXRDb2xvcjwvZXJyb3I+KGJnKTsKKwkJCWcuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBtZXRob2QgJ2ZpbGxSZWN0KGludCwgaW50LCBpbnQsIGludCknIj5maWxsUmVjdDwvZXJyb3I+KHgsIHksIHdpZHRoLCBoZWlnaHQpOworCQl9CisJCS8vPGphdmEKKwkJLy9taWRwIGcuc2V0Q29sb3IoYmcpOworCQkvL21pZHAgZy5maWxsUmVjdCh4LCB5LCB3aWR0aCwgaGVpZ2h0KTsKKwl9CisKKwkvKioKKwkgKgorCSAqLworCXByaXZhdGUgdm9pZCBwYWludEFycm93KDxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdHcmFwaGljcyciPkdyYXBoaWNzPC9lcnJvcj4gZywgaW50IHgsIGludCB5LCBpbnQgd2lkdGgsIGludCBoZWlnaHQsCisJCQljaGFyIGRpciwgYm9vbGVhbiBlbmFibGVkLCBib29sZWFuIGluc2lkZSwgYm9vbGVhbiBwcmVzc2VkLCBTdHJpbmcgcGFydCwKKwkJCWJvb2xlYW4gdG9wLCBib29sZWFuIGxlZnQsIGJvb2xlYW4gYm90dG9tLCBib29sZWFuIHJpZ2h0KSB7CisJCWluc2lkZSA9IGluc2lkZSAmJiAoaW5zaWRlcGFydCA9PSBwYXJ0KTsKKwkJcHJlc3NlZCA9IHByZXNzZWQgJiYgKHByZXNzZWRwYXJ0ID09IHBhcnQpOworCQlwYWludFJlY3QoZywgeCwgeSwgd2lkdGgsIGhlaWdodCwgZW5hYmxlZCA/IGNfYm9yZGVyIDogY19kaXNhYmxlLAorCQkJZW5hYmxlZCA/ICgoaW5zaWRlICE9IHByZXNzZWQpID8gY19ob3ZlciA6CisJCQkJKHByZXNzZWQgPyBjX3ByZXNzIDogY19jdHJsKSkgOiBjX2JnLAorCQkJdG9wLCBsZWZ0LCBib3R0b20sIHJpZ2h0KTsKKwkJZy48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIG1ldGhvZCAnc2V0Q29sb3IoQ29sb3IpJyI+c2V0Q29sb3I8L2Vycm9yPihlbmFibGVkID8gY190ZXh0IDogY19kaXNhYmxlKTsKKwkJcGFpbnRBcnJvdyhnLCB4LCB5LCB3aWR0aCwgaGVpZ2h0LCBkaXIpOworCX0KKworCS8qKgorCSAqCisJICovCisJcHJpdmF0ZSB2b2lkIHBhaW50QXJyb3coPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ0dyYXBoaWNzJyI+R3JhcGhpY3M8L2Vycm9yPiBnLAorCQkJaW50IHgsIGludCB5LCBpbnQgd2lkdGgsIGludCBoZWlnaHQsIGNoYXIgZGlyKSB7CisJCWludCBjeCA9IHggKyB3aWR0aCAvIDIgLSAyOworCQlpbnQgY3kgPSB5ICsgaGVpZ2h0IC8gMiAtIDI7CisJCWZvciAoaW50IGkgPSAwOyBpIDwgNDsgaSsrKSB7CisJCQlpZiAoZGlyID09ICdOJykgeyAvLyBub3J0aAorCQkJCWcuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBtZXRob2QgJ2RyYXdMaW5lKGludCwgaW50LCBpbnQsIGludCknIj5kcmF3TGluZTwvZXJyb3I+KGN4ICsgMSAtIGksIGN5ICsgaSwgY3ggKyAxLyoyKi8gKyBpLCBjeSArIGkpOworCQkJfQorCQkJZWxzZSBpZiAoZGlyID09ICdXJykgeyAvLyB3ZXN0CisJCQkJZy48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIG1ldGhvZCAnZHJhd0xpbmUoaW50LCBpbnQsIGludCwgaW50KSciPmRyYXdMaW5lPC9lcnJvcj4oY3ggKyBpLCBjeSArIDEgLSBpLCBjeCArIGksIGN5ICsgMS8qMiovICsgaSk7CisJCQl9CisJCQllbHNlIGlmIChkaXIgPT0gJ1MnKSB7IC8vIHNvdXRoCisJCQkJZy48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIG1ldGhvZCAnZHJhd0xpbmUoaW50LCBpbnQsIGludCwgaW50KSciPmRyYXdMaW5lPC9lcnJvcj4oY3ggKyAxIC0gaSwgY3kgKyA0IC0gaSwgY3ggKyAxLyoyKi8gKyBpLCBjeSArIDQgLSBpKTsKKwkJCX0KKwkJCWVsc2UgeyAvLyBlYXN0CisJCQkJZy48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIG1ldGhvZCAnZHJhd0xpbmUoaW50LCBpbnQsIGludCwgaW50KSciPmRyYXdMaW5lPC9lcnJvcj4oY3ggKyA0IC0gaSwgY3kgKyAxIC0gaSwgY3ggKyA0IC0gaSwgY3kgKyAxLyoyKi8gKyBpKTsKKwkJCX0KKwkJfQorCX0KKworCS8qKgorCSAqCisJICovCisJcHJpdmF0ZSB2b2lkIHBhaW50Q29udGVudChPYmplY3QgY29tcG9uZW50LCA8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnR3JhcGhpY3MnIj5HcmFwaGljczwvZXJyb3I+IGcsCisJCQlpbnQgY2xpcHgsIGludCBjbGlweSwgaW50IGNsaXB3aWR0aCwgaW50IGNsaXBoZWlnaHQsCisJCQlpbnQgeCwgaW50IHksIGludCB3aWR0aCwgaW50IGhlaWdodCwgPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ0NvbG9yJyI+Q29sb3I8L2Vycm9yPiBmZywgU3RyaW5nIGRlZmF1bHRhbGlnbm1lbnQsCisJCQlib29sZWFuIGNoZWNrbW5lbW9uaWMpIHsKKwkJU3RyaW5nIHRleHQgPSBnZXRTdHJpbmcoY29tcG9uZW50LCAidGV4dCIsIG51bGwpOworCQk8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnSW1hZ2UnIj5JbWFnZTwvZXJyb3I+IGljb24gPSBnZXRJY29uKGNvbXBvbmVudCwgImljb24iLCBudWxsKTsKKwkJaWYgKCh0ZXh0ID09IG51bGwpICYmIChpY29uID09IG51bGwpKSB7IHJldHVybjsgfQorCQlTdHJpbmcgYWxpZ25tZW50ID0gZ2V0U3RyaW5nKGNvbXBvbmVudCwgImFsaWdubWVudCIsIGRlZmF1bHRhbGlnbm1lbnQpOworCisJCTxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdGb250TWV0cmljcyciPkZvbnRNZXRyaWNzPC9lcnJvcj4gZm0gPSBudWxsOyAvL2phdmEKKwkJaW50IHR3ID0gMCwgdGggPSAwOworCQlpbnQgdGEgPSAwOyAvL2phdmEKKwkJaWYgKHRleHQgIT0gbnVsbCkgeworCQkJZm0gPSBnLjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgbWV0aG9kICdnZXRGb250TWV0cmljcygpJyI+Z2V0Rm9udE1ldHJpY3M8L2Vycm9yPigpOyAvL2phdmEKKwkJCXR3ID0gZm0uPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBtZXRob2QgJ3N0cmluZ1dpZHRoKGphdmEubGFuZy5TdHJpbmcpJyI+c3RyaW5nV2lkdGg8L2Vycm9yPih0ZXh0KTsKKwkJCXRhID0gZm0uPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBtZXRob2QgJ2dldEFzY2VudCgpJyI+Z2V0QXNjZW50PC9lcnJvcj4oKTsgLy9qYXZhCisJCQl0aCA9IGZtLjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgbWV0aG9kICdnZXREZXNjZW50KCknIj5nZXREZXNjZW50PC9lcnJvcj4oKSArIHRhOyAvL2phdmEKKwkJCS8vbWlkcCB0aCA9IGZvbnQuZ2V0SGVpZ2h0KCk7CisJCQlnLjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgbWV0aG9kICdzZXRDb2xvcihDb2xvciknIj5zZXRDb2xvcjwvZXJyb3I+KGZnKTsKKwkJfQorCQlpbnQgaXcgPSAwLCBpaCA9IDA7CisJCWlmIChpY29uICE9IG51bGwpIHsKKwkJCWl3ID0gaWNvbi48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIG1ldGhvZCAnZ2V0V2lkdGgoVGhpbmxldCknIj5nZXRXaWR0aDwvZXJyb3I+KHRoaXMpOworCQkJaWggPSBpY29uLjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgbWV0aG9kICdnZXRIZWlnaHQoVGhpbmxldCknIj5nZXRIZWlnaHQ8L2Vycm9yPih0aGlzKTsgLy9qYXZhCisJCX0KKworCQlib29sZWFuIGNsaXBwZWQgPSAodHcgKyBpdyA+IHdpZHRoKSB8fCAodGggPiBoZWlnaHQpIHx8IChpaCA+IGhlaWdodCk7CisJCWludCBjeCA9IHg7CisJCWlmICgiY2VudGVyIiA9PSBhbGlnbm1lbnQpIHsgY3ggKz0gKHdpZHRoIC0gdHcgLSBpdykgLyAyOyB9CisJCQllbHNlIGlmICgicmlnaHQiID09IGFsaWdubWVudCkgeyBjeCArPSB3aWR0aCAtIHR3IC0gaXc7IH0KKworCQlpZiAoY2xpcHBlZCkgeyBnLjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgbWV0aG9kICdjbGlwUmVjdChpbnQsIGludCwgaW50LCBpbnQpJyI+Y2xpcFJlY3Q8L2Vycm9yPih4LCB5LCB3aWR0aCwgaGVpZ2h0KTsgfQorCQlpZiAoaWNvbiAhPSBudWxsKSB7CisJCQlnLjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgbWV0aG9kICdkcmF3SW1hZ2UoSW1hZ2UsIGludCwgaW50LCBUaGlubGV0KSciPmRyYXdJbWFnZTwvZXJyb3I+KGljb24sIGN4LCB5ICsgKGhlaWdodCAtIGloKSAvIDIsIHRoaXMpOyAvL2phdmEKKwkJCS8vbWlkcCBnLmRyYXdJbWFnZShpY29uLCBjeCwgeSArIGhlaWdodCAvIDIsIEdyYXBoaWNzLkxFRlQgfCBHcmFwaGljcy5WQ0VOVEVSKTsKKwkJCWN4ICs9IGl3OworCQl9CisJCWlmICh0ZXh0ICE9IG51bGwpIHsKKwkJCWludCB0eSA9IHkgKyAoaGVpZ2h0IC0gdGgpIC8gMiArIHRhOyAvL2phdmEKKwkJCWcuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBtZXRob2QgJ2RyYXdTdHJpbmcoamF2YS5sYW5nLlN0cmluZywgaW50LCBpbnQpJyI+ZHJhd1N0cmluZzwvZXJyb3I+KHRleHQsIGN4LCB0eSk7IC8vamF2YQorCQkJLy9taWRwIGcuZHJhd1N0cmluZyh0ZXh0LCBjeCwgeSArIChoZWlnaHQgLSB0aCkgLyAyLCBHcmFwaGljcy5MRUZUIHwgR3JhcGhpY3MuVE9QKTsKKwkJCWlmIChjaGVja21uZW1vbmljKSB7CisJCQkJaW50IG1uZW1vbmljID0gZ2V0SW50ZWdlcihjb21wb25lbnQsICJtbmVtb25pYyIsIC0xKTsKKwkJCQlpZiAoKG1uZW1vbmljICE9IC0xKSAmJiAobW5lbW9uaWMgPCB0ZXh0Lmxlbmd0aCgpKSkgeworCQkJCQlpbnQgbXggPSBjeCArIGZtLjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgbWV0aG9kICdzdHJpbmdXaWR0aChqYXZhLmxhbmcuU3RyaW5nKSciPnN0cmluZ1dpZHRoPC9lcnJvcj4odGV4dC5zdWJzdHJpbmcoMCwgbW5lbW9uaWMpKTsgLy9qYXZhCisJCQkJCS8vbWlkcCBpbnQgbXggPSBjeCArIGZvbnQuc3Vic3RyaW5nV2lkdGgodGV4dCwgMCwgbW5lbW9uaWMpOworCQkJCQkvL21pZHAgaW50IHR5ID0gKGhlaWdodCArIHRoKSAvIDI7CisJCQkJCWcuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBtZXRob2QgJ2RyYXdMaW5lKGludCwgaW50LCA/LCBpbnQpJyI+ZHJhd0xpbmU8L2Vycm9yPihteCwgdHkgKyAxLCBteCArIGZtLjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgbWV0aG9kICdjaGFyV2lkdGgoY2hhciknIj5jaGFyV2lkdGg8L2Vycm9yPih0ZXh0LmNoYXJBdChtbmVtb25pYykpLCB0eSArIDEpOworCQkJCX0KKwkJCX0KKwkJfQorCQlpZiAoY2xpcHBlZCkgeyBnLjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgbWV0aG9kICdzZXRDbGlwKGludCwgaW50LCBpbnQsIGludCknIj5zZXRDbGlwPC9lcnJvcj4oY2xpcHgsIGNsaXB5LCBjbGlwd2lkdGgsIGNsaXBoZWlnaHQpOyB9CisJfQorCS8vbWlkcCBwcml2YXRlIHZvaWQgc2V0VGltZXIobG9uZyBkZWxheSkge30KKwkvL2phdmE+CisKKwkvKioKKwkgKgorCSAqLworCXB1YmxpYyBzeW5jaHJvbml6ZWQgdm9pZCBydW4oKSB7CisJCXdoaWxlICh0aW1lciA9PSBUaHJlYWQuY3VycmVudFRocmVhZCgpKSB7CisJCQl0cnkgeworCQkJCWlmICh3YXRjaCA9PSAwKSB7CisJCQkJCXdhaXQoMCk7CisJCQkJfSBlbHNlIHsKKwkJCQkJbG9uZyBjdXJyZW50ID0gU3lzdGVtLmN1cnJlbnRUaW1lTWlsbGlzKCk7CisJCQkJCWlmICh3YXRjaCA+IGN1cnJlbnQpIHsKKwkJCQkJCXdhaXQod2F0Y2ggLSBjdXJyZW50KTsKKwkJCQkJfSBlbHNlIHsKKwkJCQkJCXdhdGNoID0gMDsKKwkJCQkJCWlmICgod2F0Y2hkZWxheSA9PSAzMDBMKSB8fCAod2F0Y2hkZWxheSA9PSA2MEwpKSB7CisJCQkJCQkJaWYgKHByb2Nlc3NTY3JvbGwobW91c2VwcmVzc2VkLCBwcmVzc2VkcGFydCkpIHsgc2V0VGltZXIoNjBMKTsgfQorCQkJCQkJfSBlbHNlIGlmICgod2F0Y2hkZWxheSA9PSAzNzVMKSB8fCAod2F0Y2hkZWxheSA9PSA3NUwpKSB7CisJCQkJCQkJaWYgKHByb2Nlc3NTcGluKG1vdXNlcHJlc3NlZCwgcHJlc3NlZHBhcnQpKSB7IHNldFRpbWVyKDc1TCk7IH0KKwkJCQkJCX0gZWxzZSBpZiAod2F0Y2hkZWxheSA9PSA3NTBMKSB7CisJCQkJCQkJLy9TeXN0ZW0ub3V0LnByaW50bG4oIj4gdGlwOiAiICsgZ2V0Q2xhc3MobW91c2VpbnNpZGUpICsgIiA6ICIgKyAoKGluc2lkZXBhcnQgaW5zdGFuY2VvZiBPYmplY3RbXSkgPyBnZXRDbGFzcyhpbnNpZGVwYXJ0KSA6IGluc2lkZXBhcnQpKTsKKwkJCQkJCQlzaG93VGlwKCk7CisJCQkJCQl9CisJCQkJCX0KKwkJCQl9CisJCQl9IGNhdGNoICg8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnSW50ZXJydXB0ZWRFeGNlcHRpb24nIj5JbnRlcnJ1cHRlZEV4Y2VwdGlvbjwvZXJyb3I+IGllKSB7fSAvL2llLnByaW50U3RhY2tUcmFjZSgpOworCQl9CisJfQorCisJLyoqCisJICoKKwkgKi8KKwlwcml2YXRlIHZvaWQgc2V0VGltZXIobG9uZyBkZWxheSkgeworCQl3YXRjaGRlbGF5ID0gZGVsYXk7CisJCWlmIChkZWxheSA9PSAwKSB7CisJCQl3YXRjaCA9IDA7CisJCX0gZWxzZSB7CisJCQlsb25nIHByZXYgPSB3YXRjaDsKKwkJCXdhdGNoID0gU3lzdGVtLmN1cnJlbnRUaW1lTWlsbGlzKCkgKyBkZWxheTsKKwkJCWlmICh0aW1lciA9PSBudWxsKSB7CisJCQkJdGltZXIgPSBuZXcgVGhyZWFkKHRoaXMpOworCQkJCXRpbWVyLnNldFByaW9yaXR5KFRocmVhZC5NSU5fUFJJT1JJVFkpOworCQkJCXRpbWVyLnNldERhZW1vbih0cnVlKTsKKwkJCQl0aW1lci5zdGFydCgpOworCQkJfQorCQkJaWYgKChwcmV2ID09IDApIHx8ICh3YXRjaCA8IHByZXYpKSB7CisJCQkJc3luY2hyb25pemVkICh0aGlzKSB7IG5vdGlmeSgpOyB9IC8vdHJ5IHt9Y2F0Y2ggKElsbGVnYWxNb25pdG9yU3RhdGVFeGNlcHRpb24gaW1zZSkge30KKwkJCX0KKwkJfQorCX0KKworCS8qKgorCSAqCisJICovCisJcHVibGljIGJvb2xlYW4gaXNGb2N1c1RyYXZlcnNhYmxlKCkgeworCQlyZXR1cm4gdHJ1ZTsKKwl9CisKKwkvLzxqYXZhCisJLyptaWRwCisJcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IE1PVVNFX0VOVEVSRUQgPSAxOworCXByaXZhdGUgc3RhdGljIGZpbmFsIGludCBNT1VTRV9FWElURUQgPSAyOyAvLworCXByaXZhdGUgc3RhdGljIGZpbmFsIGludCBNT1VTRV9QUkVTU0VEID0gMzsKKwlwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgTU9VU0VfRFJBR0dFRCA9IDQ7CisJcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IE1PVVNFX1JFTEVBU0VEID0gNTsKKwlwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgRFJBR19FTlRFUkVEID0gNjsKKwlwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgRFJBR19FWElURUQgPSA3OworCisJcHJvdGVjdGVkIHZvaWQgcG9pbnRlclByZXNzZWQoaW50IHgsIGludCB5KSB7CisJCWZpbmRDb21wb25lbnQoY29udGVudCwgeCwgeSk7CisJCWlmIChwb3B1cG93bmVyICE9IG51bGwpIHsKKwkJCVN0cmluZyBjbGFzc25hbWUgPSBnZXRDbGFzcyhtb3VzZWluc2lkZSk7CisJCQlpZiAoKHBvcHVwb3duZXIgIT0gbW91c2VpbnNpZGUpICYmCisJCQkJCShjbGFzc25hbWUgIT0gInBvcHVwbWVudSIpICYmIChjbGFzc25hbWUgIT0gImNvbWJvbGlzdCIpKSB7CisJCQkJY2xvc2V1cCgpOworCQkJfQorCQl9CisJCWhhbmRsZU1vdXNlRXZlbnQoeCwgeSwgMSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwKKwkJCU1vdXNlRXZlbnQuTU9VU0VfRU5URVJFRCwgbW91c2VpbnNpZGUsIGluc2lkZXBhcnQpOworCQltb3VzZXByZXNzZWQgPSBtb3VzZWluc2lkZTsKKwkJcHJlc3NlZHBhcnQgPSBpbnNpZGVwYXJ0OworCQloYW5kbGVNb3VzZUV2ZW50KHgsIHksIDEsIGZhbHNlLCBmYWxzZSwgZmFsc2UsCisJCQlNb3VzZUV2ZW50Lk1PVVNFX1BSRVNTRUQsIG1vdXNlcHJlc3NlZCwgcHJlc3NlZHBhcnQpOworCX0KKworCXByb3RlY3RlZCB2b2lkIHBvaW50ZXJSZWxlYXNlZChpbnQgeCwgaW50IHkpIHsKKwkJT2JqZWN0IG1vdXNlcmVsZWFzZSA9IG1vdXNlcHJlc3NlZDsKKwkJT2JqZWN0IHJlbGVhc2VwYXJ0ID0gcHJlc3NlZHBhcnQ7CisJCW1vdXNlcHJlc3NlZCA9IHByZXNzZWRwYXJ0ID0gbnVsbDsKKwkJaGFuZGxlTW91c2VFdmVudCh4LCB5LCAxLCBmYWxzZSwgZmFsc2UsIGZhbHNlLAorCQkJTW91c2VFdmVudC5NT1VTRV9SRUxFQVNFRCwgbW91c2VyZWxlYXNlLCByZWxlYXNlcGFydCk7CisJfQorCisJcHJvdGVjdGVkIHZvaWQgcG9pbnRlckRyYWdnZWQoaW50IHgsIGludCB5KSB7CisJCU9iamVjdCBwcmV2aW5zaWRlID0gbW91c2VpbnNpZGU7CisJCU9iamVjdCBwcmV2cGFydCA9IGluc2lkZXBhcnQ7CisJCWZpbmRDb21wb25lbnQoY29udGVudCwgeCwgeSk7CisJCWJvb2xlYW4gc2FtZSA9IChwcmV2aW5zaWRlID09IG1vdXNlaW5zaWRlKSAmJiAocHJldnBhcnQgPT0gaW5zaWRlcGFydCk7CisJCWJvb2xlYW4gaXNpbiA9IChtb3VzZXByZXNzZWQgPT0gbW91c2VpbnNpZGUpICYmIChwcmVzc2VkcGFydCA9PSBpbnNpZGVwYXJ0KTsKKwkJYm9vbGVhbiB3YXNpbiA9IChtb3VzZXByZXNzZWQgPT0gcHJldmluc2lkZSkgJiYgKHByZXNzZWRwYXJ0ID09IHByZXZwYXJ0KTsKKworCQlpZiAod2FzaW4gJiYgIWlzaW4pIHsKKwkJCWhhbmRsZU1vdXNlRXZlbnQoeCwgeSwgMSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwKKwkJCQlNb3VzZUV2ZW50Lk1PVVNFX0VYSVRFRCwgbW91c2VwcmVzc2VkLCBwcmVzc2VkcGFydCk7CisJCX0KKwkJZWxzZSBpZiAoIXNhbWUgJiYgKHBvcHVwb3duZXIgIT0gbnVsbCkgJiYgIXdhc2luKSB7CisJCQloYW5kbGVNb3VzZUV2ZW50KHgsIHksIDEsIGZhbHNlLCBmYWxzZSwgZmFsc2UsCisJCQkJRFJBR19FWElURUQsIHByZXZpbnNpZGUsIHByZXZwYXJ0KTsKKwkJfQorCQlpZiAoaXNpbiAmJiAhd2FzaW4pIHsKKwkJCWhhbmRsZU1vdXNlRXZlbnQoeCwgeSwgMSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwKKwkJCQlNb3VzZUV2ZW50Lk1PVVNFX0VOVEVSRUQsIG1vdXNlcHJlc3NlZCwgcHJlc3NlZHBhcnQpOworCQl9CisJCWVsc2UgaWYgKCFzYW1lICYmIChwb3B1cG93bmVyICE9IG51bGwpICYmICFpc2luKSB7CisJCQloYW5kbGVNb3VzZUV2ZW50KHgsIHksIDEsIGZhbHNlLCBmYWxzZSwgZmFsc2UsCisJCQkJRFJBR19FTlRFUkVELCBtb3VzZWluc2lkZSwgaW5zaWRlcGFydCk7CisJCX0KKwkJaWYgKGlzaW4gPT0gd2FzaW4pIHsKKwkJCWhhbmRsZU1vdXNlRXZlbnQoeCwgeSwgMSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwKKwkJCQlNb3VzZUV2ZW50Lk1PVVNFX0RSQUdHRUQsIG1vdXNlcHJlc3NlZCwgcHJlc3NlZHBhcnQpOworCQl9CisJfQorCisJcHJvdGVjdGVkIHZvaWQga2V5UHJlc3NlZChpbnQga2V5Q29kZSkgeworCQlpZiAoKHBvcHVwb3duZXIgIT0gbnVsbCkgfHwgKGZvY3Vzb3duZXIgIT0gbnVsbCkpIHsKKwkJCWhpZGVUaXAoKTsKKwkJCWlmIChrZXlDb2RlID4gMCkgeworCQkJCXByb2Nlc3NLZXlQcmVzcygocG9wdXBvd25lciAhPSBudWxsKSA/IHBvcHVwb3duZXIgOiBmb2N1c293bmVyLAorCQkJCQlmYWxzZSwgZmFsc2UsIDEsIGtleUNvZGUsIDApOworCQkJfQorCQkJZWxzZSB7CisJCQkJaW50IGtleWNoYXIgPSAwLCBrZXkgPSAwOworCQkJCXN3aXRjaCAoZ2V0R2FtZUFjdGlvbihrZXlDb2RlKSkgeworCQkJCQljYXNlIFVQOiBrZXkgPSBLZXlFdmVudC5WS19VUDsgYnJlYWs7CisJCQkJCWNhc2UgTEVGVDoga2V5ID0gS2V5RXZlbnQuVktfTEVGVDsgYnJlYWs7CisJCQkJCWNhc2UgRE9XTjoga2V5ID0gS2V5RXZlbnQuVktfRE9XTjsgYnJlYWs7CisJCQkJCWNhc2UgUklHSFQ6IGtleSA9IEtleUV2ZW50LlZLX1JJR0hUOyBicmVhazsKKwkJCQkJY2FzZSBGSVJFOiBrZXkgPSBLZXlFdmVudC5WS19FTlRFUjsga2V5Y2hhciA9IEtleUV2ZW50LlZLX1NQQUNFOyBicmVhazsKKwkJCQkJY2FzZSBHQU1FX0E6IGtleSA9IEtleUV2ZW50LlZLX0VTQ0FQRTsgYnJlYWs7CisJCQkJfQorCQkJCWlmIChrZXkgIT0gMCkgeworCQkJCQlwcm9jZXNzS2V5UHJlc3MoKHBvcHVwb3duZXIgIT0gbnVsbCkgPyBwb3B1cG93bmVyIDogZm9jdXNvd25lciwKKwkJCQkJCWZhbHNlLCBmYWxzZSwgMSwga2V5Y2hhciwga2V5KTsKKwkJCQl9CisJCQkJLy9pZiAoa2V5Q29kZSA9PSBnZXRLZXlDb2RlKExFRlQpKSB7CisJCQl9CisJCX0KKwl9CisKKwlwcm90ZWN0ZWQgdm9pZCBrZXlSZXBlYXRlZChpbnQga2V5Q29kZSkgeworCQlrZXlQcmVzc2VkKGtleUNvZGUpOworCX0KKworCXByaXZhdGUgc3RhdGljIGZpbmFsIENvbW1hbmQgbmV4dGNvbW1hbmQgPSBuZXcgQ29tbWFuZCgiTmV4dCIsIENvbW1hbmQuU0NSRUVOLCAwKTsKKwkvL3ByaXZhdGUgc3RhdGljIGZpbmFsIENvbW1hbmQgcHJldmNvbW1hbmQgPSBuZXcgQ29tbWFuZCgiUHJldmlvdXMiLCBDb21tYW5kLlNDUkVFTiwgMCk7CisJeworCQlhZGRDb21tYW5kKG5leHRjb21tYW5kKTsKKwkJLy9hZGRDb21tYW5kKHByZXZjb21tYW5kKTsKKwkJc2V0Q29tbWFuZExpc3RlbmVyKHRoaXMpOworCX0KKworCXB1YmxpYyB2b2lkIGNvbW1hbmRBY3Rpb24oQ29tbWFuZCBjb21tYW5kLCBEaXNwbGF5YWJsZSBkaXNwbGF5YWJsZSkgeworCQlpZiAoY29tbWFuZCA9PSBuZXh0Y29tbWFuZCkgeworCQkJc2V0TmV4dEZvY3VzYWJsZShmb2N1c293bmVyLCBmYWxzZSk7CisJCQlyZXBhaW50KGZvY3Vzb3duZXIpOworCQkJY2xvc2V1cCgpOworCQl9CisJCS8vZWxzZSBpZiAoY29tbWFuZCA9PSBwcmV2Y29tbWFuZCkgeworCQkJLy9zZXRQcmV2aW91c0ZvY3VzYWJsZShmb2N1c293bmVyLCBudWxsLCB0cnVlLCB0cnVlLCBmYWxzZSk7CisJCQkvL3JlcGFpbnQoZm9jdXNvd25lcik7CisJCQkvL2Nsb3NldXAoKTsKKwkJLy99CisJfQorCW1pZHAqLworCS8vamF2YT4KKworCS8qKgorCSAqCisJICovCisJcHJvdGVjdGVkIHZvaWQgcHJvY2Vzc0V2ZW50KDxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdBV1RFdmVudCciPkFXVEV2ZW50PC9lcnJvcj4gZSkgeworCQlpbnQgaWQgPSBlLjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgbWV0aG9kICdnZXRJRCgpJyI+Z2V0SUQ8L2Vycm9yPigpOworCQlpZiAoKGlkID49IDxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdNb3VzZUV2ZW50JyI+TW91c2VFdmVudDwvZXJyb3I+Lk1PVVNFX0ZJUlNUKSAmJiAoaWQgPD0gPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ01vdXNlRXZlbnQnIj5Nb3VzZUV2ZW50PC9lcnJvcj4uTU9VU0VfTEFTVCkpIHsKKwkJCTxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdNb3VzZUV2ZW50JyI+TW91c2VFdmVudDwvZXJyb3I+IG1lID0gKDxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdNb3VzZUV2ZW50JyI+TW91c2VFdmVudDwvZXJyb3I+KSBlOworCQkJaW50IHggPSBtZS48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIG1ldGhvZCAnZ2V0WCgpJyI+Z2V0WDwvZXJyb3I+KCk7CisJCQlpbnQgeSA9IG1lLjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgbWV0aG9kICdnZXRZKCknIj5nZXRZPC9lcnJvcj4oKTsKKwkJCWludCBjbGlja2NvdW50ID0gbWUuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBtZXRob2QgJ2dldENsaWNrQ291bnQoKSciPmdldENsaWNrQ291bnQ8L2Vycm9yPigpOworCQkJYm9vbGVhbiBzaGlmdGRvd24gPSBtZS48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIG1ldGhvZCAnaXNTaGlmdERvd24oKSciPmlzU2hpZnREb3duPC9lcnJvcj4oKTsKKwkJCWJvb2xlYW4gY29udHJvbGRvd24gPSBtZS48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIG1ldGhvZCAnaXNDb250cm9sRG93bigpJyI+aXNDb250cm9sRG93bjwvZXJyb3I+KCk7CisJCQlib29sZWFuIHBvcHVwdHJpZ2dlciA9IG1lLjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgbWV0aG9kICdpc1BvcHVwVHJpZ2dlcigpJyI+aXNQb3B1cFRyaWdnZXI8L2Vycm9yPigpOworCQkJaWYgKGlkID09IDxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdNb3VzZUV2ZW50JyI+TW91c2VFdmVudDwvZXJyb3I+Lk1PVVNFX0VOVEVSRUQpIHsKKwkJCQlpZiAobW91c2VwcmVzc2VkID09IG51bGwpIHsKKwkJCQkJZmluZENvbXBvbmVudChjb250ZW50LCB4LCB5KTsKKwkJCQkJaGFuZGxlTW91c2VFdmVudCh4LCB5LCBjbGlja2NvdW50LCBzaGlmdGRvd24sIGNvbnRyb2xkb3duLCBwb3B1cHRyaWdnZXIsCisJCQkJCQk8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnTW91c2VFdmVudCciPk1vdXNlRXZlbnQ8L2Vycm9yPi5NT1VTRV9FTlRFUkVELCBtb3VzZWluc2lkZSwgaW5zaWRlcGFydCk7CisJCQkJfQorCQkJfQorCQkJZWxzZSBpZiAoaWQgPT0gPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ01vdXNlRXZlbnQnIj5Nb3VzZUV2ZW50PC9lcnJvcj4uTU9VU0VfTU9WRUQpIHsKKwkJCQlPYmplY3QgcHJldmluc2lkZSA9IG1vdXNlaW5zaWRlOworCQkJCU9iamVjdCBwcmV2cGFydCA9IGluc2lkZXBhcnQ7CisJCQkJZmluZENvbXBvbmVudChjb250ZW50LCB4LCB5KTsKKwkJCQlpZiAoKHByZXZpbnNpZGUgPT0gbW91c2VpbnNpZGUpICYmIChwcmV2cGFydCA9PSBpbnNpZGVwYXJ0KSkgeworCQkJCQloYW5kbGVNb3VzZUV2ZW50KHgsIHksIGNsaWNrY291bnQsIHNoaWZ0ZG93biwgY29udHJvbGRvd24sIHBvcHVwdHJpZ2dlciwKKwkJCQkJCTxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdNb3VzZUV2ZW50JyI+TW91c2VFdmVudDwvZXJyb3I+Lk1PVVNFX01PVkVELCBtb3VzZWluc2lkZSwgaW5zaWRlcGFydCk7CisJCQkJfQorCQkJCWVsc2UgeworCQkJCQloYW5kbGVNb3VzZUV2ZW50KHgsIHksIGNsaWNrY291bnQsIHNoaWZ0ZG93biwgY29udHJvbGRvd24sIHBvcHVwdHJpZ2dlciwKKwkJCQkJCTxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdNb3VzZUV2ZW50JyI+TW91c2VFdmVudDwvZXJyb3I+Lk1PVVNFX0VYSVRFRCwgcHJldmluc2lkZSwgcHJldnBhcnQpOworCQkJCQloYW5kbGVNb3VzZUV2ZW50KHgsIHksIGNsaWNrY291bnQsIHNoaWZ0ZG93biwgY29udHJvbGRvd24sIHBvcHVwdHJpZ2dlciwKKwkJCQkJCTxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdNb3VzZUV2ZW50JyI+TW91c2VFdmVudDwvZXJyb3I+Lk1PVVNFX0VOVEVSRUQsIG1vdXNlaW5zaWRlLCBpbnNpZGVwYXJ0KTsKKwkJCQl9CisJCQl9CisJCQllbHNlIGlmIChpZCA9PSA8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnTW91c2VFdmVudCciPk1vdXNlRXZlbnQ8L2Vycm9yPi5NT1VTRV9FWElURUQpIHsKKwkJCQlpZiAobW91c2VwcmVzc2VkID09IG51bGwpIHsKKwkJCQkJT2JqZWN0IG1vdXNlZXhpdCA9IG1vdXNlaW5zaWRlOworCQkJCQlPYmplY3QgZXhpdHBhcnQgPSBpbnNpZGVwYXJ0OworCQkJCQltb3VzZWluc2lkZSA9IGluc2lkZXBhcnQgPSBudWxsOworCQkJCQloYW5kbGVNb3VzZUV2ZW50KHgsIHksIGNsaWNrY291bnQsIHNoaWZ0ZG93biwgY29udHJvbGRvd24sIHBvcHVwdHJpZ2dlciwKKwkJCQkJCTxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdNb3VzZUV2ZW50JyI+TW91c2VFdmVudDwvZXJyb3I+Lk1PVVNFX0VYSVRFRCwgbW91c2VleGl0LCBleGl0cGFydCk7CisJCQkJfQorCQkJfQorCQkJZWxzZSBpZiAoaWQgPT0gPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ01vdXNlRXZlbnQnIj5Nb3VzZUV2ZW50PC9lcnJvcj4uTU9VU0VfUFJFU1NFRCkgeworCQkJCWlmIChwb3B1cG93bmVyICE9IG51bGwpIHsKKwkJCQkJU3RyaW5nIGNsYXNzbmFtZSA9IGdldENsYXNzKG1vdXNlaW5zaWRlKTsKKwkJCQkJaWYgKChwb3B1cG93bmVyICE9IG1vdXNlaW5zaWRlKSAmJgorCQkJCQkJCShjbGFzc25hbWUgIT0gInBvcHVwbWVudSIpICYmIChjbGFzc25hbWUgIT0gImNvbWJvbGlzdCIpKSB7CisJCQkJCQljbG9zZXVwKCk7CisJCQkJCX0KKwkJCQl9CisJCQkJbW91c2VwcmVzc2VkID0gbW91c2VpbnNpZGU7CisJCQkJcHJlc3NlZHBhcnQgPSBpbnNpZGVwYXJ0OworCQkJCWhhbmRsZU1vdXNlRXZlbnQoeCwgeSwgY2xpY2tjb3VudCwgc2hpZnRkb3duLCBjb250cm9sZG93biwgcG9wdXB0cmlnZ2VyLAorCQkJCQk8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnTW91c2VFdmVudCciPk1vdXNlRXZlbnQ8L2Vycm9yPi5NT1VTRV9QUkVTU0VELCBtb3VzZXByZXNzZWQsIHByZXNzZWRwYXJ0KTsKKwkJCX0KKwkJCWVsc2UgaWYgKGlkID09IDxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdNb3VzZUV2ZW50JyI+TW91c2VFdmVudDwvZXJyb3I+Lk1PVVNFX0RSQUdHRUQpIHsKKwkJCQlPYmplY3QgcHJldmluc2lkZSA9IG1vdXNlaW5zaWRlOworCQkJCU9iamVjdCBwcmV2cGFydCA9IGluc2lkZXBhcnQ7CisJCQkJZmluZENvbXBvbmVudChjb250ZW50LCB4LCB5KTsKKwkJCQlib29sZWFuIHNhbWUgPSAocHJldmluc2lkZSA9PSBtb3VzZWluc2lkZSkgJiYgKHByZXZwYXJ0ID09IGluc2lkZXBhcnQpOworCQkJCWJvb2xlYW4gaXNpbiA9IChtb3VzZXByZXNzZWQgPT0gbW91c2VpbnNpZGUpICYmIChwcmVzc2VkcGFydCA9PSBpbnNpZGVwYXJ0KTsKKwkJCQlib29sZWFuIHdhc2luID0gKG1vdXNlcHJlc3NlZCA9PSBwcmV2aW5zaWRlKSAmJiAocHJlc3NlZHBhcnQgPT0gcHJldnBhcnQpOworCisJCQkJaWYgKHdhc2luICYmICFpc2luKSB7CisJCQkJCWhhbmRsZU1vdXNlRXZlbnQoeCwgeSwgY2xpY2tjb3VudCwgc2hpZnRkb3duLCBjb250cm9sZG93biwgcG9wdXB0cmlnZ2VyLAorCQkJCQkJPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ01vdXNlRXZlbnQnIj5Nb3VzZUV2ZW50PC9lcnJvcj4uTU9VU0VfRVhJVEVELCBtb3VzZXByZXNzZWQsIHByZXNzZWRwYXJ0KTsKKwkJCQl9CisJCQkJZWxzZSBpZiAoIXNhbWUgJiYgKHBvcHVwb3duZXIgIT0gbnVsbCkgJiYgIXdhc2luKSB7CisJCQkJCWhhbmRsZU1vdXNlRXZlbnQoeCwgeSwgY2xpY2tjb3VudCwgc2hpZnRkb3duLCBjb250cm9sZG93biwgcG9wdXB0cmlnZ2VyLAorCQkJCQkJRFJBR19FWElURUQsIHByZXZpbnNpZGUsIHByZXZwYXJ0KTsKKwkJCQl9CisJCQkJaWYgKGlzaW4gJiYgIXdhc2luKSB7CisJCQkJCWhhbmRsZU1vdXNlRXZlbnQoeCwgeSwgY2xpY2tjb3VudCwgc2hpZnRkb3duLCBjb250cm9sZG93biwgcG9wdXB0cmlnZ2VyLAorCQkJCQkJPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ01vdXNlRXZlbnQnIj5Nb3VzZUV2ZW50PC9lcnJvcj4uTU9VU0VfRU5URVJFRCwgbW91c2VwcmVzc2VkLCBwcmVzc2VkcGFydCk7CisJCQkJfQorCQkJCWVsc2UgaWYgKCFzYW1lICYmIChwb3B1cG93bmVyICE9IG51bGwpICYmICFpc2luKSB7CisJCQkJCWhhbmRsZU1vdXNlRXZlbnQoeCwgeSwgY2xpY2tjb3VudCwgc2hpZnRkb3duLCBjb250cm9sZG93biwgcG9wdXB0cmlnZ2VyLAorCQkJCQkJRFJBR19FTlRFUkVELCBtb3VzZWluc2lkZSwgaW5zaWRlcGFydCk7CisJCQkJfQorCQkJCWlmIChpc2luID09IHdhc2luKSB7CisJCQkJCWhhbmRsZU1vdXNlRXZlbnQoeCwgeSwgY2xpY2tjb3VudCwgc2hpZnRkb3duLCBjb250cm9sZG93biwgcG9wdXB0cmlnZ2VyLAorCQkJCQkJPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ01vdXNlRXZlbnQnIj5Nb3VzZUV2ZW50PC9lcnJvcj4uTU9VU0VfRFJBR0dFRCwgbW91c2VwcmVzc2VkLCBwcmVzc2VkcGFydCk7CisJCQkJfQorCQkJfQorCQkJZWxzZSBpZiAoaWQgPT0gPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ01vdXNlRXZlbnQnIj5Nb3VzZUV2ZW50PC9lcnJvcj4uTU9VU0VfUkVMRUFTRUQpIHsKKwkJCQlPYmplY3QgbW91c2VyZWxlYXNlID0gbW91c2VwcmVzc2VkOworCQkJCU9iamVjdCByZWxlYXNlcGFydCA9IHByZXNzZWRwYXJ0OworCQkJCW1vdXNlcHJlc3NlZCA9IHByZXNzZWRwYXJ0ID0gbnVsbDsKKwkJCQloYW5kbGVNb3VzZUV2ZW50KHgsIHksIGNsaWNrY291bnQsIHNoaWZ0ZG93biwgY29udHJvbGRvd24sIHBvcHVwdHJpZ2dlciwKKwkJCQkJPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ01vdXNlRXZlbnQnIj5Nb3VzZUV2ZW50PC9lcnJvcj4uTU9VU0VfUkVMRUFTRUQsIG1vdXNlcmVsZWFzZSwgcmVsZWFzZXBhcnQpOworCQkJCWlmICgobW91c2VpbnNpZGUgIT0gbnVsbCkgJiYKKwkJCQkJCSgobW91c2VyZWxlYXNlICE9IG1vdXNlaW5zaWRlKSB8fCAocmVsZWFzZXBhcnQgIT0gaW5zaWRlcGFydCkpKSB7CisJCQkJCWhhbmRsZU1vdXNlRXZlbnQoeCwgeSwgY2xpY2tjb3VudCwgc2hpZnRkb3duLCBjb250cm9sZG93biwgcG9wdXB0cmlnZ2VyLAorCQkJCQkJPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ01vdXNlRXZlbnQnIj5Nb3VzZUV2ZW50PC9lcnJvcj4uTU9VU0VfRU5URVJFRCwgbW91c2VpbnNpZGUsIGluc2lkZXBhcnQpOworCQkJCX0KKwkJCX0KKwkJfQorCQllbHNlIGlmIChpZCA9PSBNT1VTRV9XSEVFTCkgeworCQkJPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ1JlY3RhbmdsZSciPlJlY3RhbmdsZTwvZXJyb3I+IHBvcnQgPSBnZXRSZWN0YW5nbGUobW91c2VpbnNpZGUsICI6cG9ydCIpOworCQkJaWYgKHBvcnQgIT0gbnVsbCkgeyAvLyBpcyBzY3JvbGxhYmxlCisJCQkJPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ1JlY3RhbmdsZSciPlJlY3RhbmdsZTwvZXJyb3I+IGJvdW5kcyA9IGdldFJlY3RhbmdsZShtb3VzZWluc2lkZSwgImJvdW5kcyIpOworCQkJCXRyeSB7IC8vIG1vdXNlIHdoZWVsIGlzIHN1cHBvcnRlZCBzaW5jZSAxLjQgdGh1cyBpdCB1c2UgcmVmbGVjdGlvbgorCQkJCQlpZiAod2hlZWxyb3RhdGlvbiA9PSBudWxsKSB7CisJCQkJCQl3aGVlbHJvdGF0aW9uID0gZS48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIG1ldGhvZCAnZ2V0Q2xhc3MoKSciPmdldENsYXNzPC9lcnJvcj4oKS5nZXRNZXRob2QoImdldFdoZWVsUm90YXRpb24iLCBudWxsKTsKKwkJCQkJfQorCQkJCQlpbnQgcm90YXRpb24gPSAoKEludGVnZXIpIHdoZWVscm90YXRpb24uPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBtZXRob2QgJ2ludm9rZShBV1RFdmVudCwgbnVsbCknIj5pbnZva2U8L2Vycm9yPihlLCBudWxsKSkuaW50VmFsdWUoKTsKKworCQkJCQlpZiAocG9ydC48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAneCciPng8L2Vycm9yPiArIHBvcnQuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ3dpZHRoJyI+d2lkdGg8L2Vycm9yPiA8IGJvdW5kcy48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnd2lkdGgnIj53aWR0aDwvZXJyb3I+KSB7IC8vIGhhcyB2ZXJ0aWNhbCBzY3JvbGxiYXIKKwkJCQkJCXByb2Nlc3NTY3JvbGwobW91c2VpbnNpZGUsIChyb3RhdGlvbiA+IDApID8gImRvd24iIDogInVwIik7CisJCQkJCX0KKwkJCQkJZWxzZSBpZiAocG9ydC48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAneSciPnk8L2Vycm9yPiArIHBvcnQuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ2hlaWdodCciPmhlaWdodDwvZXJyb3I+IDwgYm91bmRzLjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdoZWlnaHQnIj5oZWlnaHQ8L2Vycm9yPikgeyAvLyBoYXMgaG9yaXpvbnRhbCBzY3JvbGxiYXIKKwkJCQkJCXByb2Nlc3NTY3JvbGwobW91c2VpbnNpZGUsIChyb3RhdGlvbiA+IDApID8gInJpZ2h0IiA6ICJsZWZ0Iik7CisJCQkJCX0KKwkJCQl9IGNhdGNoIChFeGNlcHRpb24gZXhjKSB7IC8qIG5ldmVyICovIH0KKwkJCX0KKwkJfQorCQllbHNlIGlmICgoaWQgPT0gPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ0tleUV2ZW50JyI+S2V5RXZlbnQ8L2Vycm9yPi5LRVlfUFJFU1NFRCkgfHwgKGlkID09IDxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdLZXlFdmVudCciPktleUV2ZW50PC9lcnJvcj4uS0VZX1RZUEVEKSkgeworCQkJaWYgKGZvY3VzaW5zaWRlICYmICgocG9wdXBvd25lciAhPSBudWxsKSB8fCAoZm9jdXNvd25lciAhPSBudWxsKSkpIHsKKwkJCQloaWRlVGlwKCk7CisJCQkJPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ0tleUV2ZW50JyI+S2V5RXZlbnQ8L2Vycm9yPiBrZSA9ICg8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnS2V5RXZlbnQnIj5LZXlFdmVudDwvZXJyb3I+KSBlOworCQkJCWludCBrZXljaGFyID0ga2UuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBtZXRob2QgJ2dldEtleUNoYXIoKSciPmdldEtleUNoYXI8L2Vycm9yPigpOworCQkJCWJvb2xlYW4gY29udHJvbCA9IChrZXljaGFyIDw9IDB4MWYpIHx8CisJCQkJCSgoa2V5Y2hhciA+PSAweDdmKSAmJiAoa2V5Y2hhciA8PSAweDlmKSkgfHwKKwkJCQkJKGtleWNoYXIgPj0gMHhmZmZmKSB8fCBrZS48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIG1ldGhvZCAnaXNDb250cm9sRG93bigpJyI+aXNDb250cm9sRG93bjwvZXJyb3I+KCk7CisJCQkJaWYgKGNvbnRyb2wgPT0gKGlkID09IDxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdLZXlFdmVudCciPktleUV2ZW50PC9lcnJvcj4uS0VZX1BSRVNTRUQpKSB7CisJCQkJCWludCBrZXljb2RlID0gY29udHJvbCA/IGtlLjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgbWV0aG9kICdnZXRLZXlDb2RlKCknIj5nZXRLZXlDb2RlPC9lcnJvcj4oKSA6IDA7CisJCQkJCWlmICghcHJvY2Vzc0tleVByZXNzKChwb3B1cG93bmVyICE9IG51bGwpID8gcG9wdXBvd25lciA6IGZvY3Vzb3duZXIsCisJCQkJCQkJa2UuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBtZXRob2QgJ2lzU2hpZnREb3duKCknIj5pc1NoaWZ0RG93bjwvZXJyb3I+KCksIGtlLjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgbWV0aG9kICdpc0NvbnRyb2xEb3duKCknIj5pc0NvbnRyb2xEb3duPC9lcnJvcj4oKSwga2UuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBtZXRob2QgJ2dldE1vZGlmaWVycygpJyI+Z2V0TW9kaWZpZXJzPC9lcnJvcj4oKSwKKwkJCQkJCQljb250cm9sID8gMCA6IGtleWNoYXIsIGtleWNvZGUpKSB7CisJCQkJCQlpZiAoKGtleWNvZGUgPT0gPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ0tleUV2ZW50JyI+S2V5RXZlbnQ8L2Vycm9yPi5WS19UQUIpIHx8CisJCQkJCQkJCSgoa2V5Y29kZSA9PSA8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnS2V5RXZlbnQnIj5LZXlFdmVudDwvZXJyb3I+LlZLX0Y2KSAmJiAoa2UuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBtZXRob2QgJ2lzQWx0RG93bigpJyI+aXNBbHREb3duPC9lcnJvcj4oKSB8fCBrZS48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIG1ldGhvZCAnaXNDb250cm9sRG93bigpJyI+aXNDb250cm9sRG93bjwvZXJyb3I+KCkpKSkgeworCQkJCQkJCWJvb2xlYW4gb3V0Z28gPSAoa2V5Y29kZSA9PSA8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnS2V5RXZlbnQnIj5LZXlFdmVudDwvZXJyb3I+LlZLX0Y2KTsKKwkJCQkJCQlpZiAoIWtlLjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgbWV0aG9kICdpc1NoaWZ0RG93bigpJyI+aXNTaGlmdERvd248L2Vycm9yPigpID8gc2V0TmV4dEZvY3VzYWJsZShmb2N1c293bmVyLCBvdXRnbykgOgorCQkJCQkJCQkJc2V0UHJldmlvdXNGb2N1c2FibGUoZm9jdXNvd25lciwgb3V0Z28pKSB7CisJCQkJCQkJCWtlLjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgbWV0aG9kICdjb25zdW1lKCknIj5jb25zdW1lPC9lcnJvcj4oKTsKKwkJCQkJCQl9IGVsc2UgaWYgKE1PVVNFX1dIRUVMICE9IDApIHsgLy8gMS40CisJCQkJCQkJCWlmICgha2UuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBtZXRob2QgJ2lzU2hpZnREb3duKCknIj5pc1NoaWZ0RG93bjwvZXJyb3I+KCkpIHsKKwkJCQkJCQkJCXRyYW5zZmVyRm9jdXMoKTsKKwkJCQkJCQkJfQorCQkJCQkJCQllbHNlIHsgdHJ5IHsKKwkJCQkJCQkJCQlnZXRDbGFzcygpLmdldE1ldGhvZCgidHJhbnNmZXJGb2N1c0JhY2t3YXJkIiwgbnVsbCkuIDxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgbWV0aG9kICdpbnZva2UoVGhpbmxldCwgbnVsbCknIj5pbnZva2U8L2Vycm9yPih0aGlzLCBudWxsKTsKKwkJCQkJCQkJfSBjYXRjaCAoRXhjZXB0aW9uIGV4YykgeyAvKiBuZXZlciAqLyB9IH0KKwkJCQkJCQl9CisJCQkJCQkJcmVwYWludChmb2N1c293bmVyKTsKKwkJCQkJCQljbG9zZXVwKCk7CisJCQkJCQl9CisJCQkJCQllbHNlIGlmIChrZXljb2RlID09IDxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdLZXlFdmVudCciPktleUV2ZW50PC9lcnJvcj4uVktfRjgpIHsKKwkJCQkJCQlmb3IgKE9iamVjdCBzcGxpdHBhbmUgPSBmb2N1c293bmVyOworCQkJCQkJCQkJc3BsaXRwYW5lICE9IG51bGw7IHNwbGl0cGFuZSA9IGdldFBhcmVudChzcGxpdHBhbmUpKSB7CisJCQkJCQkJCWlmIChnZXRDbGFzcyhzcGxpdHBhbmUpID09ICJzcGxpdHBhbmUiKSB7CisJCQkJCQkJCQlzZXRGb2N1cyhzcGxpdHBhbmUpOyByZXBhaW50KHNwbGl0cGFuZSk7IGJyZWFrOyAvL21pZGRsZQorCQkJCQkJCQl9CisJCQkJCQkJfQorCQkJCQkJfQorCQkJCQl9CisJCQkJCWVsc2Uga2UuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBtZXRob2QgJ2NvbnN1bWUoKSciPmNvbnN1bWU8L2Vycm9yPigpOworCQkJCQkvKmVsc2UgaWYgKGtleWNvZGUgPT0gS2V5RXZlbnQuVktfRjEwKSB7CisJCQkJCQlPYmplY3QgbWVudWJhciA9IG51bGw7IC8vIGZpbmQoImNsYXNzIiwgIm1lbnViYXIiKQorCQkJCQkJaWYgKChtZW51YmFyICE9IG51bGwpICYmIChnZXQobWVudWJhciwgInNlbGVjdGVkIikgPT0gbnVsbCkpIHsKKwkJCQkJCQlzZXQobWVudWJhciwgInNlbGVjdGVkIiwgZ2V0TWVudShtZW51YmFyLCBudWxsLCB0cnVlLCBmYWxzZSkpOworCQkJCQkJCU9iamVjdCBwb3B1cCA9IHBvcHVwKG1lbnViYXIsICJtZW51YmFyIik7CisJCQkJCQkJc2V0KHBvcHVwLCAic2VsZWN0ZWQiLCBnZXRNZW51KHBvcHVwLCBudWxsLCB0cnVlLCB0cnVlKSk7CisJCQkJCQkJcmVwYWludChtZW51YmFyKTsgLy8gLCBzZWxlY3RlZAorCQkJCQkJfQorCQkJCQl9Ki8KKwkJCQl9CisJCQl9CisJCX0KKwkJLyplbHNlIGlmIChpZCA9PSBLZXlFdmVudC5LRVlfUkVMRUFTRUQpIHsKKwkJCWlmIChmb2N1c2luc2lkZSAmJiAoZm9jdXNvd25lciAhPSBudWxsKSkgeworCQkJCUtleUV2ZW50IGtlID0gKEtleUV2ZW50KSBlOworCQkJCS8vcHJlc3NlZGtleSA9IDA7CisJCQkJcHJvY2Vzc0tleVJlbGVhc2UoZm9jdXNvd25lciwga2UsIGtlLmdldEtleUNvZGUoKSk7CisJCQl9CisJCX0qLworCQllbHNlIGlmIChpZCA9PSA8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnRm9jdXNFdmVudCciPkZvY3VzRXZlbnQ8L2Vycm9yPi5GT0NVU19MT1NUKSB7CisJCQlmb2N1c2luc2lkZSA9IGZhbHNlOworCQkJaWYgKGZvY3Vzb3duZXIgIT0gbnVsbCkgeyByZXBhaW50KGZvY3Vzb3duZXIpOyB9CisJCQljbG9zZXVwKCk7CisJCX0KKwkJZWxzZSBpZiAoaWQgPT0gPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ0ZvY3VzRXZlbnQnIj5Gb2N1c0V2ZW50PC9lcnJvcj4uRk9DVVNfR0FJTkVEKSB7CisJCQlmb2N1c2luc2lkZSA9IHRydWU7CisJCQlpZiAoZm9jdXNvd25lciA9PSBudWxsKSB7IHNldEZvY3VzKGNvbnRlbnQpOyB9CisJCQkJZWxzZSB7IHJlcGFpbnQoZm9jdXNvd25lcik7IH0KKwkJfQorCQllbHNlIGlmICgoaWQgPT0gPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ0NvbXBvbmVudEV2ZW50JyI+Q29tcG9uZW50RXZlbnQ8L2Vycm9yPi5DT01QT05FTlRfUkVTSVpFRCkgfHwKKwkJCQkoaWQgPT0gPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ0NvbXBvbmVudEV2ZW50JyI+Q29tcG9uZW50RXZlbnQ8L2Vycm9yPi5DT01QT05FTlRfU0hPV04pKSB7CisJCQlEaW1lbnNpb24gZCA9IGdldFNpemUoKTsKKwkJCS8vU3lzdGVtLm91dC5wcmludGxuKGlkICsgIjogIiArIGQud2lkdGggKyAiLCAiICsgZC5oZWlnaHQpOworCQkJc2V0UmVjdGFuZ2xlKGNvbnRlbnQsICJib3VuZHMiLCAwLCAwLCBkLndpZHRoLCBkLmhlaWdodCk7CisJCQl2YWxpZGF0ZShjb250ZW50KTsKKwkJCWNsb3NldXAoKTsKKwkJCWlmICghZm9jdXNpbnNpZGUpICB7IHJlcXVlc3RGb2N1cygpOyB9CisJCX0KKwl9CisKKwkvKioKKwkgKgorCSAqLworCS8qcHJpdmF0ZSBib29sZWFuIHByb2Nlc3NLZXlQcmVzcyhPYmplY3QgY29tcG9uZW50LAorCQkJS2V5RXZlbnQgZSwgaW50IGtleWNvZGUsIE9iamVjdCBpbnZva2VyKSB7CisJCWlmIChwcm9jZXNzS2V5UHJlc3MoY29tcG9uZW50LCBlLCBrZXljb2RlKSkgeyByZXR1cm4gdHJ1ZTsgfQorCQlmb3IgKE9iamVjdCBjb21wID0gZ2V0KGNvbXBvbmVudCwgImNvbXBvbmVudCIpOworCQkJCWNvbXAgIT0gbnVsbDsgY29tcCA9IGdldChjb21wLCAiOm5leHQiKSkgeworCQkJaWYgKChjb21wICE9IGludm9rZXIpICYmIHByb2Nlc3NLZXlQcmVzcyhjb21wLCBlLCBrZXljb2RlLCBudWxsKSkgeworCQkJCXJldHVybiB0cnVlOworCQkJfQorCQl9CisJCWlmICgoaW52b2tlciAhPSBudWxsKSAmJiAoY29tcG9uZW50ICE9IGNvbnRlbnQpKSB7CisJCQlPYmplY3QgcGFyZW50ID0gZ2V0UGFyZW50KGNvbXBvbmVudCk7CisJCQlpZiAocGFyZW50ICE9IG51bGwpIHsKKwkJCQlyZXR1cm4gcHJvY2Vzc0tleVByZXNzKHBhcmVudCwgZSwga2V5Y29kZSwgY29tcG9uZW50KTsKKwkJCX0KKwkJfQorCQlyZXR1cm4gZmFsc2U7CisJfSovCisJLy88amF2YQorCisJLyoqCisJICoKKwkgKi8KKwlwcml2YXRlIGJvb2xlYW4gcHJvY2Vzc0tleVByZXNzKE9iamVjdCBjb21wb25lbnQsCisJCQlib29sZWFuIHNoaWZ0ZG93biwgYm9vbGVhbiBjb250cm9sZG93biwgaW50IG1vZGlmaWVycywgaW50IGtleWNoYXIsIGludCBrZXljb2RlKSB7CisJCVN0cmluZyBjbGFzc25hbWUgPSBnZXRDbGFzcyhjb21wb25lbnQpOworCQlpZiAoImJ1dHRvbiIgPT0gY2xhc3NuYW1lKSB7CisJCQlpZiAoa2V5Y2hhciA9PSA8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnS2V5RXZlbnQnIj5LZXlFdmVudDwvZXJyb3I+LlZLX1NQQUNFIHx8CisJCQkJCSgoa2V5Y29kZSA9PSA8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnS2V5RXZlbnQnIj5LZXlFdmVudDwvZXJyb3I+LlZLX0VOVEVSKSAmJgorCQkJCQkJKGdldFN0cmluZyhjb21wb25lbnQsICJ0eXBlIiwgbnVsbCkgPT0gImRlZmF1bHQiKSkgfHwKKwkJCQkJKChrZXljb2RlID09IDxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdLZXlFdmVudCciPktleUV2ZW50PC9lcnJvcj4uVktfRVNDQVBFKSAmJiAvLy4uLgorCQkJCQkJKGdldFN0cmluZyhjb21wb25lbnQsICJ0eXBlIiwgbnVsbCkgPT0gImNhbmNlbCIpKSkgeworCQkJCS8vcHJlc3NlZGtleSA9IGtleWNoYXI7CisJCQkJaW52b2tlKGNvbXBvbmVudCwgImFjdGlvbiIpOworCQkJCXJlcGFpbnQoY29tcG9uZW50KTsKKwkJCQlyZXR1cm4gdHJ1ZTsKKwkJCX0KKwkJfQorCQllbHNlIGlmICgiY2hlY2tib3giID09IGNsYXNzbmFtZSkgeworCQkJaWYgKGtleWNoYXIgPT0gPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ0tleUV2ZW50JyI+S2V5RXZlbnQ8L2Vycm9yPi5WS19TUEFDRSkgeworCQkJCWNoYW5nZUNoZWNrKGNvbXBvbmVudCwgdHJ1ZSk7CisJCQkJcmVwYWludChjb21wb25lbnQpOworCQkJCXJldHVybiB0cnVlOworCQkJfQorCQl9CisJCWVsc2UgaWYgKCJjb21ib2JveCIgPT0gY2xhc3NuYW1lKSB7CisJCQlPYmplY3QgY29tYm9saXN0ID0gZ2V0KGNvbXBvbmVudCwgImNvbWJvbGlzdCIpOworCQkJaWYgKGNvbWJvbGlzdCA9PSBudWxsKSB7CisJCQkJaWYgKGdldEJvb2xlYW4oY29tcG9uZW50LCAiZWRpdGFibGUiLCB0cnVlKSAmJgorCQkJCQkJcHJvY2Vzc0ZpZWxkKGNvbXBvbmVudCwgc2hpZnRkb3duLCBjb250cm9sZG93biwgbW9kaWZpZXJzLAorCQkJCQkJCWtleWNoYXIsIGtleWNvZGUsIGZhbHNlLCBmYWxzZSkpIHsKKwkJCQkJc2V0SW50ZWdlcihjb21wb25lbnQsICJzZWxlY3RlZCIsIC0xLCAtMSk7CisJCQkJCXJldHVybiB0cnVlOworCQkJCX0KKwkJCQlpZiAoKGtleWNoYXIgPT0gPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ0tleUV2ZW50JyI+S2V5RXZlbnQ8L2Vycm9yPi5WS19TUEFDRSkgfHwgKGtleWNvZGUgPT0gPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ0tleUV2ZW50JyI+S2V5RXZlbnQ8L2Vycm9yPi5WS19ET1dOKSkgeworCQkJCQljb21ib2xpc3QgPSBwb3B1cChjb21wb25lbnQsIGNsYXNzbmFtZSk7CisJCQkJCWludCBzZWxlY3RlZCA9IGdldEludGVnZXIoY29tcG9uZW50LCAic2VsZWN0ZWQiLCAtMSk7CisJCQkJCXNldChjb21ib2xpc3QsICJpbnNpZGUiLCAoc2VsZWN0ZWQgIT0gLTEpID8KKwkJCQkJCWdldEl0ZW1JbXBsKGNvbXBvbmVudCwgImNob2ljZSIsIHNlbGVjdGVkKSA6CisJCQkJCQlnZXQoY29tcG9uZW50LCAiY2hvaWNlIikpOyAvL3Njcm9sbCB0byBpdCEKKwkJCQl9CisJCQkJZWxzZSByZXR1cm4gZmFsc2U7CisJCQl9IGVsc2UgeworCQkJCWlmICgoa2V5Y29kZSA9PSA8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnS2V5RXZlbnQnIj5LZXlFdmVudDwvZXJyb3I+LlZLX1VQKSB8fAorCQkJCQkJKGtleWNvZGUgPT0gPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ0tleUV2ZW50JyI+S2V5RXZlbnQ8L2Vycm9yPi5WS19ET1dOKSB8fCAoa2V5Y29kZSA9PSA8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnS2V5RXZlbnQnIj5LZXlFdmVudDwvZXJyb3I+LlZLX1BBR0VfVVApIHx8CisJCQkJCQkoa2V5Y29kZSA9PSA8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnS2V5RXZlbnQnIj5LZXlFdmVudDwvZXJyb3I+LlZLX1BBR0VfRE9XTikgfHwKKwkJCQkJCShrZXljb2RlID09IDxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdLZXlFdmVudCciPktleUV2ZW50PC9lcnJvcj4uVktfSE9NRSkgfHwgKGtleWNvZGUgPT0gPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ0tleUV2ZW50JyI+S2V5RXZlbnQ8L2Vycm9yPi5WS19FTkQpKSB7CisJCQkJCU9iamVjdCBzZWxlY3RlZCA9IGdldChjb21ib2xpc3QsICJpbnNpZGUiKTsKKwkJCQkJT2JqZWN0IG5leHQgPSBnZXRMaXN0SXRlbShjb21wb25lbnQsIGNvbWJvbGlzdCwKKwkJCQkJCWtleWNvZGUsIHNlbGVjdGVkLCAiY2hvaWNlIiwgbnVsbCk7CisJCQkJCWlmIChuZXh0ICE9IG51bGwpIHsKKwkJCQkJCXNldChjb21ib2xpc3QsICJpbnNpZGUiLCBuZXh0KTsKKwkJCQkJCTxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdSZWN0YW5nbGUnIj5SZWN0YW5nbGU8L2Vycm9yPiByID0gZ2V0UmVjdGFuZ2xlKG5leHQsICJib3VuZHMiKTsKKwkJCQkJCXNjcm9sbFRvVmlzaWJsZShjb21ib2xpc3QsIHIuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ3gnIj54PC9lcnJvcj4sIHIuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ3knIj55PC9lcnJvcj4sIDAsIHIuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ2hlaWdodCciPmhlaWdodDwvZXJyb3I+KTsKKwkJCQkJCWlmIChzZWxlY3RlZCAhPSBudWxsKSB7IHJlcGFpbnQoY29tYm9saXN0LCAiY29tYm9saXN0Iiwgc2VsZWN0ZWQpOyB9CisJCQkJCQlyZXBhaW50KGNvbWJvbGlzdCwgImNvbWJvbGlzdCIsIG5leHQpOworCQkJCQl9CisJCQkJfQorCQkJCWVsc2UgaWYgKChrZXljb2RlID09IDxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdLZXlFdmVudCciPktleUV2ZW50PC9lcnJvcj4uVktfRU5URVIpIHx8IChrZXljaGFyID09IDxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdLZXlFdmVudCciPktleUV2ZW50PC9lcnJvcj4uVktfU1BBQ0UpKSB7CisJCQkJCWNsb3NldXAoY29tcG9uZW50LCBjb21ib2xpc3QsIGdldChjb21ib2xpc3QsICJpbnNpZGUiKSk7IC8vQWx0K1VwCisJCQkJfQorCQkJCWVsc2UgaWYgKGtleWNvZGUgPT0gPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ0tleUV2ZW50JyI+S2V5RXZlbnQ8L2Vycm9yPi5WS19FU0NBUEUpIHsKKwkJCQkJY2xvc2V1cChjb21wb25lbnQsIGNvbWJvbGlzdCwgbnVsbCk7CisJCQkJfQorCQkJCWVsc2UgcmV0dXJuIHByb2Nlc3NGaWVsZChjb21wb25lbnQsIHNoaWZ0ZG93biwgY29udHJvbGRvd24sIG1vZGlmaWVycywKKwkJCQkJa2V5Y2hhciwga2V5Y29kZSwgZmFsc2UsIGZhbHNlKTsKKwkJCX0KKwkJCXJldHVybiB0cnVlOworCQl9CisJCWVsc2UgaWYgKCgidGV4dGZpZWxkIiA9PSBjbGFzc25hbWUpIHx8ICgicGFzc3dvcmRmaWVsZCIgPT0gY2xhc3NuYW1lKSkgeworCQkJcmV0dXJuIHByb2Nlc3NGaWVsZChjb21wb25lbnQsIHNoaWZ0ZG93biwgY29udHJvbGRvd24sIG1vZGlmaWVycywKKwkJCQlrZXljaGFyLCBrZXljb2RlLCBmYWxzZSwgKCJwYXNzd29yZGZpZWxkIiA9PSBjbGFzc25hbWUpKTsKKwkJfQorCQllbHNlIGlmICgidGV4dGFyZWEiID09IGNsYXNzbmFtZSkgeworCQkJU3RyaW5nIHRleHQgPSBnZXRTdHJpbmcoY29tcG9uZW50LCAidGV4dCIsICIiKTsKKwkJCWludCBzdGFydCA9IGdldEludGVnZXIoY29tcG9uZW50LCAic3RhcnQiLCAwKTsKKwkJCWludCBlbmQgPSBnZXRJbnRlZ2VyKGNvbXBvbmVudCwgImVuZCIsIDApOworCisJCQlpbnQgaXN0YXJ0ID0gc3RhcnQ7CisJCQlpbnQgaWVuZCA9IGVuZDsKKwkJCVN0cmluZyBpbnNlcnQgPSBudWxsOworCQkJaWYgKChrZXljb2RlID09IDxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdLZXlFdmVudCciPktleUV2ZW50PC9lcnJvcj4uVktfSE9NRSkgJiYgIWNvbnRyb2xkb3duKSB7CisJCQkJd2hpbGUgKChpZW5kID4gMCkgJiYgKHRleHQuY2hhckF0KGllbmQgLSAxKSAhPSAnXG4nKSkgeyBpZW5kLS07IH0KKwkJCQlpZiAoIXNoaWZ0ZG93bikgeyBpc3RhcnQgPSBpZW5kOyB9CisJCQl9CisJCQllbHNlIGlmICgoa2V5Y29kZSA9PSA8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnS2V5RXZlbnQnIj5LZXlFdmVudDwvZXJyb3I+LlZLX0VORCkgJiYgIWNvbnRyb2xkb3duKSB7CisJCQkJaWVuZCA9IHRleHQuaW5kZXhPZignXG4nLCBlbmQpOworCQkJCWlmIChpZW5kID09IC0xKSB7IGllbmQgPSB0ZXh0Lmxlbmd0aCgpOyB9CisJCQkJaWYgKCFzaGlmdGRvd24pIHsgaXN0YXJ0ID0gaWVuZDsgfQorCQkJfQorCQkJZWxzZSBpZiAoKGtleWNvZGUgPT0gPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ0tleUV2ZW50JyI+S2V5RXZlbnQ8L2Vycm9yPi5WS19VUCkgfHwKKwkJCQkJKGtleWNvZGUgPT0gPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ0tleUV2ZW50JyI+S2V5RXZlbnQ8L2Vycm9yPi5WS19QQUdFX1VQKSkgeworCQkJCWludCBwcmV2ID0gZW5kOworCQkJCXdoaWxlICgocHJldiA+IDApICYmICh0ZXh0LmNoYXJBdChwcmV2IC0gMSkgIT0gJ1xuJykpIHsgcHJldi0tOyB9CisJCQkJaWYgKHByZXYgIT0gMCkgeworCQkJCQlpbnQgZHggPSBlbmQgLSBwcmV2OworCQkJCQlpbnQgbGluZXMgPSAoa2V5Y29kZSA9PSA8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnS2V5RXZlbnQnIj5LZXlFdmVudDwvZXJyb3I+LlZLX1BBR0VfVVApID8KKwkJCQkJCShnZXRSZWN0YW5nbGUoY29tcG9uZW50LCAiOnBvcnQiKS48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnaGVpZ2h0JyI+aGVpZ2h0PC9lcnJvcj4gLworCQkJCQkJCWdldEZvbnRNZXRyaWNzKGdldEZvbnQoKSkuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBtZXRob2QgJ2dldEhlaWdodCgpJyI+Z2V0SGVpZ2h0PC9lcnJvcj4oKSkgOiAxOworCQkJCQlpbnQgZmlyc3QgPSBwcmV2OworCQkJCQlkbyB7CisJCQkJCQlwcmV2ID0gZmlyc3Q7IGZpcnN0LS07IGxpbmVzLS07CisJCQkJCQl3aGlsZSAoKGZpcnN0ID4gMCkgJiYgKHRleHQuY2hhckF0KGZpcnN0IC0gMSkgIT0gJ1xuJykpIHsgZmlyc3QtLTsgfQorCQkJCQl9IHdoaWxlICgoZmlyc3QgPiAwKSAmJiAobGluZXMgPiAwKSk7CisJCQkJCWllbmQgPSBNYXRoLm1pbihmaXJzdCArIGR4LCBwcmV2IC0gMSk7CisJCQkJCWlmICghc2hpZnRkb3duKSB7IGlzdGFydCA9IGllbmQ7IH0KKwkJCQl9CisJCQl9CisJCQllbHNlIGlmICgoa2V5Y29kZSA9PSA8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnS2V5RXZlbnQnIj5LZXlFdmVudDwvZXJyb3I+LlZLX0RPV04pIHx8CisJCQkJCShrZXljb2RlID09IDxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdLZXlFdmVudCciPktleUV2ZW50PC9lcnJvcj4uVktfUEFHRV9ET1dOKSkgeworCQkJCWludCBuZXh0ID0gdGV4dC5pbmRleE9mKCdcbicsIGVuZCk7CisJCQkJaWYgKG5leHQgIT0gLTEpIHsKKwkJCQkJaW50IHByZXYgPSBlbmQ7CisJCQkJCXdoaWxlICgocHJldiA+IDApICYmICh0ZXh0LmNoYXJBdChwcmV2IC0gMSkgIT0gJ1xuJykpIHsgcHJldi0tOyB9CisJCQkJCWlmIChrZXljb2RlID09IDxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdLZXlFdmVudCciPktleUV2ZW50PC9lcnJvcj4uVktfUEFHRV9ET1dOKSB7CisJCQkJCQlpbnQgbGluZXMgPSBnZXRSZWN0YW5nbGUoY29tcG9uZW50LCAiOnBvcnQiKS48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnaGVpZ2h0JyI+aGVpZ2h0PC9lcnJvcj4gLworCQkJCQkJCWdldEZvbnRNZXRyaWNzKGdldEZvbnQoKSkuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBtZXRob2QgJ2dldEhlaWdodCgpJyI+Z2V0SGVpZ2h0PC9lcnJvcj4oKTsKKwkJCQkJCWZvciAoaW50IG1vcmUgPSAwOyAobGluZXMgPiAxKSAmJgorCQkJCQkJCQkoKG1vcmUgPSB0ZXh0LmluZGV4T2YoJ1xuJywgbmV4dCArIDEpKSAhPSAtMSk7IG5leHQgPSBtb3JlKSB7CisJCQkJCQkJbGluZXMtLTsKKwkJCQkJCX0KKwkJCQkJfQorCQkJCQlpbnQgbGFzdCA9IHRleHQuaW5kZXhPZignXG4nLCBuZXh0ICsgMSk7CisJCQkJCWllbmQgPSBNYXRoLm1pbihuZXh0ICsgMSArIGVuZCAtIHByZXYsCisJCQkJCQkobGFzdCA9PSAtMSkgPyAodGV4dC5sZW5ndGgoKSArIDEpIDogbGFzdCk7CisJCQkJCWlmICghc2hpZnRkb3duKSB7IGlzdGFydCA9IGllbmQ7IH0KKwkJCQl9CisJCQl9CisJCQlyZXR1cm4gY2hhbmdlRmllbGQoY29tcG9uZW50LCB0ZXh0LCBpbnNlcnQsIGlzdGFydCwgaWVuZCwgc3RhcnQsIGVuZCkgPworCQkJCXRydWUgOiBwcm9jZXNzRmllbGQoY29tcG9uZW50LCBzaGlmdGRvd24sIGNvbnRyb2xkb3duLCBtb2RpZmllcnMsCisJCQkJCWtleWNoYXIsIGtleWNvZGUsIHRydWUsIGZhbHNlKTsKKwkJfQorCQllbHNlIGlmICgidGFiYmVkcGFuZSIgPT0gY2xhc3NuYW1lKSB7CisJCQlpZiAoKGtleWNvZGUgPT0gPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ0tleUV2ZW50JyI+S2V5RXZlbnQ8L2Vycm9yPi5WS19SSUdIVCkgfHwgKGtleWNvZGUgPT0gPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ0tleUV2ZW50JyI+S2V5RXZlbnQ8L2Vycm9yPi5WS19ET1dOKSB8fAorCQkJCQkoa2V5Y29kZSA9PSA8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnS2V5RXZlbnQnIj5LZXlFdmVudDwvZXJyb3I+LlZLX0xFRlQpIHx8IChrZXljb2RlID09IDxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdLZXlFdmVudCciPktleUV2ZW50PC9lcnJvcj4uVktfVVApKSB7CisJCQkJaW50IHNlbGVjdGVkID0gZ2V0SW50ZWdlcihjb21wb25lbnQsICJzZWxlY3RlZCIsIDApOworCQkJCWJvb2xlYW4gaW5jcmVhc2UgPSAoa2V5Y29kZSA9PSA8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnS2V5RXZlbnQnIj5LZXlFdmVudDwvZXJyb3I+LlZLX1JJR0hUKSB8fCAoa2V5Y29kZSA9PSA8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnS2V5RXZlbnQnIj5LZXlFdmVudDwvZXJyb3I+LlZLX0RPV04pOworCQkJCWludCBuZXd2YWx1ZSA9IHNlbGVjdGVkOworCQkJCWludCBuID0gaW5jcmVhc2UgPyBnZXRJdGVtQ291bnRJbXBsKGNvbXBvbmVudCwgInRhYiIpIDogMDsKKwkJCQlpbnQgZCA9IChpbmNyZWFzZSA/IDEgOiAtMSk7CisJCQkJZm9yIChpbnQgaSA9IHNlbGVjdGVkICsgZDsgaW5jcmVhc2UgPyAoaSA8IG4pICA6IChpID49IDApOyBpICs9IGQpIHsKKwkJCQkJaWYgKGdldEJvb2xlYW4oZ2V0SXRlbUltcGwoY29tcG9uZW50LCAidGFiIiwgaSksICJlbmFibGVkIiwgdHJ1ZSkpIHsKKwkJCQkJCW5ld3ZhbHVlID0gaTsgYnJlYWs7CisJCQkJCX0KKwkJCQl9CisJCQkJaWYgKG5ld3ZhbHVlICE9IHNlbGVjdGVkKSB7CisJCQkJCXNldEludGVnZXIoY29tcG9uZW50LCAic2VsZWN0ZWQiLCBuZXd2YWx1ZSwgMCk7CisJCQkJCXJlcGFpbnQoY29tcG9uZW50KTsKKwkJCQkJaW52b2tlKGNvbXBvbmVudCwgImFjdGlvbiIpOworCQkJCX0KKwkJCX0KKwkJfQorCQllbHNlIGlmICgic3BpbmJveCIgPT0gY2xhc3NuYW1lKSB7CisJCQlpZiAoKGtleWNvZGUgPT0gPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ0tleUV2ZW50JyI+S2V5RXZlbnQ8L2Vycm9yPi5WS19VUCkgfHwgKGtleWNvZGUgPT0gPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ0tleUV2ZW50JyI+S2V5RXZlbnQ8L2Vycm9yPi5WS19ET1dOKSkgeworCQkJCXByb2Nlc3NTcGluKGNvbXBvbmVudCwgKGtleWNvZGUgPT0gPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ0tleUV2ZW50JyI+S2V5RXZlbnQ8L2Vycm9yPi5WS19VUCk/ICJ1cCIgOiAiZG93biIpOworCQkJCXJldHVybiB0cnVlOworCQkJfQorCQkJcmV0dXJuIHByb2Nlc3NGaWVsZChjb21wb25lbnQsIHNoaWZ0ZG93biwgY29udHJvbGRvd24sIG1vZGlmaWVycywKKwkJCQlrZXljaGFyLCBrZXljb2RlLCBmYWxzZSwgZmFsc2UpOworCQl9CisJCWVsc2UgaWYgKCJzbGlkZXIiID09IGNsYXNzbmFtZSkgeworCQkJaW50IHZhbHVlID0gZ2V0SW50ZWdlcihjb21wb25lbnQsICJ2YWx1ZSIsIDApOworCQkJaW50IGQgPSAwOworCQkJaWYgKChrZXljb2RlID09IDxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdLZXlFdmVudCciPktleUV2ZW50PC9lcnJvcj4uVktfSE9NRSkgfHwgKGtleWNvZGUgPT0gPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ0tleUV2ZW50JyI+S2V5RXZlbnQ8L2Vycm9yPi5WS19MRUZUKSB8fAorCQkJCQkoa2V5Y29kZSA9PSA8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnS2V5RXZlbnQnIj5LZXlFdmVudDwvZXJyb3I+LlZLX1VQKSB8fCAoa2V5Y29kZSA9PSA8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnS2V5RXZlbnQnIj5LZXlFdmVudDwvZXJyb3I+LlZLX1BBR0VfVVApKSB7CisJCQkJZCA9IGdldEludGVnZXIoY29tcG9uZW50LCAibWluaW11bSIsIDApIC0gdmFsdWU7CisJCQkJaWYgKChrZXljb2RlID09IDxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdLZXlFdmVudCciPktleUV2ZW50PC9lcnJvcj4uVktfTEVGVCkgfHwgKGtleWNvZGUgPT0gPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ0tleUV2ZW50JyI+S2V5RXZlbnQ8L2Vycm9yPi5WS19VUCkpIHsKKwkJCQkJZCA9IE1hdGgubWF4KGQsIC1nZXRJbnRlZ2VyKGNvbXBvbmVudCwgInVuaXQiLCA1KSk7CisJCQkJfQorCQkJCWVsc2UgaWYgKGtleWNvZGUgPT0gPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ0tleUV2ZW50JyI+S2V5RXZlbnQ8L2Vycm9yPi5WS19QQUdFX1VQKSB7CisJCQkJCWQgPSBNYXRoLm1heChkLCAtZ2V0SW50ZWdlcihjb21wb25lbnQsICJibG9jayIsIDI1KSk7CisJCQkJfQorCQkJfQorCQkJZWxzZSBpZiAoKGtleWNvZGUgPT0gPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ0tleUV2ZW50JyI+S2V5RXZlbnQ8L2Vycm9yPi5WS19FTkQpIHx8IChrZXljb2RlID09IDxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdLZXlFdmVudCciPktleUV2ZW50PC9lcnJvcj4uVktfUklHSFQpIHx8CisJCQkJCShrZXljb2RlID09IDxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdLZXlFdmVudCciPktleUV2ZW50PC9lcnJvcj4uVktfRE9XTikgfHwgKGtleWNvZGUgPT0gPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ0tleUV2ZW50JyI+S2V5RXZlbnQ8L2Vycm9yPi5WS19QQUdFX0RPV04pKSB7CisJCQkJZCA9IGdldEludGVnZXIoY29tcG9uZW50LCAibWF4aW11bSIsIDEwMCkgLSB2YWx1ZTsKKwkJCQlpZiAoKGtleWNvZGUgPT0gPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ0tleUV2ZW50JyI+S2V5RXZlbnQ8L2Vycm9yPi5WS19SSUdIVCkgfHwgKGtleWNvZGUgPT0gPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ0tleUV2ZW50JyI+S2V5RXZlbnQ8L2Vycm9yPi5WS19ET1dOKSkgeworCQkJCQlkID0gTWF0aC5taW4oZCwgZ2V0SW50ZWdlcihjb21wb25lbnQsICJ1bml0IiwgNSkpOworCQkJCX0KKwkJCQllbHNlIGlmIChrZXljb2RlID09IDxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdLZXlFdmVudCciPktleUV2ZW50PC9lcnJvcj4uVktfUEFHRV9ET1dOKSB7CisJCQkJCWQgPSBNYXRoLm1pbihkLCBnZXRJbnRlZ2VyKGNvbXBvbmVudCwgImJsb2NrIiwgMjUpKTsKKwkJCQl9CisJCQl9CisJCQlpZiAoZCAhPSAwKSB7CisJCQkJc2V0SW50ZWdlcihjb21wb25lbnQsICJ2YWx1ZSIsIHZhbHVlICsgZCwgMCk7CisJCQkJcmVwYWludChjb21wb25lbnQpOworCQkJCWludm9rZShjb21wb25lbnQsICJhY3Rpb24iKTsKKwkJCX0KKwkJfQorCQllbHNlIGlmICgic3BsaXRwYW5lIiA9PSBjbGFzc25hbWUpIHsKKwkJCWludCBkaXZpZGVyID0gZ2V0SW50ZWdlcihjb21wb25lbnQsICJkaXZpZGVyIiwgLTEpOworCQkJaW50IGQgPSAwOworCQkJaWYgKGtleWNvZGUgPT0gPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ0tleUV2ZW50JyI+S2V5RXZlbnQ8L2Vycm9yPi5WS19IT01FKSB7CisJCQkJZCA9IC1kaXZpZGVyOworCQkJfQorCQkJZWxzZSBpZiAoKGtleWNvZGUgPT0gPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ0tleUV2ZW50JyI+S2V5RXZlbnQ8L2Vycm9yPi5WS19MRUZUKSB8fCAoa2V5Y29kZSA9PSA8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnS2V5RXZlbnQnIj5LZXlFdmVudDwvZXJyb3I+LlZLX1VQKSkgeworCQkJCWQgPSBNYXRoLm1heCgtMTAsIC1kaXZpZGVyKTsKKwkJCX0KKwkJCWVsc2UgaWYgKChrZXljb2RlID09IDxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdLZXlFdmVudCciPktleUV2ZW50PC9lcnJvcj4uVktfRU5EKSB8fAorCQkJCQkoa2V5Y29kZSA9PSA8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnS2V5RXZlbnQnIj5LZXlFdmVudDwvZXJyb3I+LlZLX1JJR0hUKSB8fCAoa2V5Y29kZSA9PSA8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnS2V5RXZlbnQnIj5LZXlFdmVudDwvZXJyb3I+LlZLX0RPV04pKSB7CisJCQkJYm9vbGVhbiBob3Jpem9udGFsID0gKCJ2ZXJ0aWNhbCIgIT0gZ2V0KGNvbXBvbmVudCwgIm9yaWVudGF0aW9uIikpOworCQkJCTxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdSZWN0YW5nbGUnIj5SZWN0YW5nbGU8L2Vycm9yPiBib3VuZHMgPSBnZXRSZWN0YW5nbGUoY29tcG9uZW50LCAiYm91bmRzIik7CisJCQkJaW50IG1heCA9IChob3Jpem9udGFsID8gYm91bmRzLjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICd3aWR0aCciPndpZHRoPC9lcnJvcj4gOiBib3VuZHMuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ2hlaWdodCciPmhlaWdodDwvZXJyb3I+KSAtIDU7CisJCQkJZCA9IG1heCAtIGRpdmlkZXI7CisJCQkJaWYgKGtleWNvZGUgIT0gPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ0tleUV2ZW50JyI+S2V5RXZlbnQ8L2Vycm9yPi5WS19FTkQpIHsKKwkJCQkJZCA9IE1hdGgubWluKGQsIDEwKTsKKwkJCQl9CisJCQl9CisJCQlpZiAoZCAhPSAwKSB7CisJCQkJc2V0SW50ZWdlcihjb21wb25lbnQsICJkaXZpZGVyIiwgZGl2aWRlciArIGQsIC0xKTsKKwkJCQl2YWxpZGF0ZShjb21wb25lbnQpOworCQkJfQorCQl9CisJCWVsc2UgaWYgKCJsaXN0IiA9PSBjbGFzc25hbWUpIHsKKwkJCXJldHVybiBwcm9jZXNzTGlzdChjb21wb25lbnQsIHNoaWZ0ZG93biwgY29udHJvbGRvd24sIGtleWNoYXIsIGtleWNvZGUsICJpdGVtIiwgbnVsbCk7CisJCX0KKwkJZWxzZSBpZiAoInRhYmxlIiA9PSBjbGFzc25hbWUpIHsKKwkJCXJldHVybiBwcm9jZXNzTGlzdChjb21wb25lbnQsIHNoaWZ0ZG93biwgY29udHJvbGRvd24sIGtleWNoYXIsIGtleWNvZGUsICJyb3ciLCBudWxsKTsKKwkJfQorCQllbHNlIGlmICgidHJlZSIgPT0gY2xhc3NuYW1lKSB7CisJCQkvLz8gY2xlYXIgY2hpbGRzJyBzZWxlY3Rpb24sIHNlbGVjdCB0aGlzIGlzIGl0cyAJc3Vibm9kZSB3YXMgc2VsZWN0ZWQKKwkJCWlmIChrZXljb2RlID09IDxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdLZXlFdmVudCciPktleUV2ZW50PC9lcnJvcj4uVktfTEVGVCkgeworCQkJCU9iamVjdCBsZWFkID0gZ2V0KGNvbXBvbmVudCwgImxlYWQiKTsKKwkJCQlpZiAoKGdldChsZWFkLCAibm9kZSIpICE9IG51bGwpICYmIGdldEJvb2xlYW4obGVhZCwgImV4cGFuZGVkIiwgdHJ1ZSkpIHsKKwkJCQkJc2V0Qm9vbGVhbihsZWFkLCAiZXhwYW5kZWQiLCBmYWxzZSwgdHJ1ZSk7CisJCQkJCXNlbGVjdEl0ZW0oY29tcG9uZW50LCBsZWFkLCAibm9kZSIsICJub2RlIik7CisJCQkJCXZhbGlkYXRlKGNvbXBvbmVudCk7CisJCQkJCWludm9rZShjb21wb25lbnQsICJjb2xsYXBzZSIpOyAvL2xlYWQKKwkJCQkJcmV0dXJuIHRydWU7CisJCQkJfQorCQkJCWVsc2UgeworCQkJCQlPYmplY3QgcGFyZW50ID0gZ2V0UGFyZW50KGxlYWQpOworCQkJCQlpZiAocGFyZW50ICE9IGNvbXBvbmVudCkgeworCQkJCQkJc2VsZWN0SXRlbShjb21wb25lbnQsIHBhcmVudCwgIm5vZGUiLCAibm9kZSIpOworCQkJCQkJc2V0TGVhZChjb21wb25lbnQsIGxlYWQsIHBhcmVudCk7CisJCQkJCQlyZXR1cm4gdHJ1ZTsKKwkJCQkJfQorCQkJCX0KKwkJCX0KKwkJCS8vPyBmb3IgaW50ZXJ2YWwgbW9kZSBzZWxlY3QgaXRzIGFsbCBzdWJub2RlIG9yIGRlc2VsZWN0IGFsbCBhZnRlcgorCQkJZWxzZSBpZiAoa2V5Y29kZSA9PSA8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnS2V5RXZlbnQnIj5LZXlFdmVudDwvZXJyb3I+LlZLX1JJR0hUKSB7CisJCQkJT2JqZWN0IGxlYWQgPSBnZXQoY29tcG9uZW50LCAibGVhZCIpOworCQkJCU9iamVjdCBub2RlID0gZ2V0KGxlYWQsICJub2RlIik7CisJCQkJaWYgKG5vZGUgIT0gbnVsbCkgeworCQkJCQlpZiAoZ2V0Qm9vbGVhbihsZWFkLCAiZXhwYW5kZWQiLCB0cnVlKSkgeworCQkJCQkJc2VsZWN0SXRlbShjb21wb25lbnQsIG5vZGUsICJub2RlIiwgIm5vZGUiKTsKKwkJCQkJCXNldExlYWQoY29tcG9uZW50LCBsZWFkLCBub2RlKTsKKwkJCQkJfQorCQkJCQllbHNlIHsKKwkJCQkJCXNldEJvb2xlYW4obGVhZCwgImV4cGFuZGVkIiwgdHJ1ZSwgdHJ1ZSk7CisJCQkJCQlzZWxlY3RJdGVtKGNvbXBvbmVudCwgbGVhZCwgIm5vZGUiLCAibm9kZSIpOworCQkJCQkJdmFsaWRhdGUoY29tcG9uZW50KTsKKwkJCQkJCWludm9rZShjb21wb25lbnQsICJleHBhbmQiKTsgLy9sZWFkCisJCQkJCX0KKwkJCQkJcmV0dXJuIHRydWU7CisJCQkJfQorCQkJfQorCQkJcmV0dXJuIHByb2Nlc3NMaXN0KGNvbXBvbmVudCwgc2hpZnRkb3duLCBjb250cm9sZG93biwga2V5Y2hhciwga2V5Y29kZSwgIm5vZGUiLCAibm9kZSIpOworCQl9CisJCWVsc2UgaWYgKCJtZW51YmFyIiA9PSBjbGFzc25hbWUpIHsKKwkJCU9iamVjdCBwcmV2aW91cyA9IG51bGw7IE9iamVjdCBsYXN0ID0gbnVsbDsKKwkJCWZvciAoT2JqZWN0IGkgPSBnZXQoY29tcG9uZW50LCAicG9wdXBtZW51Iik7CisJCQkJCWkgIT0gbnVsbDsgaSA9IGdldChpLCAicG9wdXBtZW51IikpIHsKKwkJCQlwcmV2aW91cyA9IGxhc3Q7IGxhc3QgPSBpOworCQkJfQorCQkJT2JqZWN0IHNlbGVjdGVkID0gZ2V0KGxhc3QsICJzZWxlY3RlZCIpOworCQkJT2JqZWN0IGhvdHBvcHVwID0gKChzZWxlY3RlZCAhPSBudWxsKSB8fCAocHJldmlvdXMgPT0gbnVsbCkpID8KKwkJCQlsYXN0IDogcHJldmlvdXM7CisJCQlpZiAoKHNlbGVjdGVkID09IG51bGwpICYmIChwcmV2aW91cyAhPSBudWxsKSkgeworCQkJCXNlbGVjdGVkID0gZ2V0KHByZXZpb3VzLCAic2VsZWN0ZWQiKTsKKwkJCX0KKworCQkJaWYgKChrZXljb2RlID09IDxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdLZXlFdmVudCciPktleUV2ZW50PC9lcnJvcj4uVktfVVApIHx8IChrZXljb2RlID09IDxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdLZXlFdmVudCciPktleUV2ZW50PC9lcnJvcj4uVktfRE9XTikpIHsKKwkJCQlzZXQoaG90cG9wdXAsICJzZWxlY3RlZCIsIG51bGwpOworCQkJCXBvcHVwKGhvdHBvcHVwLCAicG9wdXBtZW51Iik7CisJCQkJc2VsZWN0ZWQgPSBnZXRNZW51KGhvdHBvcHVwLAorCQkJCQlzZWxlY3RlZCwga2V5Y29kZSA9PSA8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnS2V5RXZlbnQnIj5LZXlFdmVudDwvZXJyb3I+LlZLX0RPV04sIHRydWUpOworCQkJCXNldChob3Rwb3B1cCwgInNlbGVjdGVkIiwgc2VsZWN0ZWQpOworCQkJCXJlcGFpbnQoaG90cG9wdXApOworCQkJfQorCQkJZWxzZSBpZiAoa2V5Y29kZSA9PSA8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnS2V5RXZlbnQnIj5LZXlFdmVudDwvZXJyb3I+LlZLX0xFRlQpIHsKKwkJCQlpZiAocHJldmlvdXMgIT0gbnVsbCkgeworCQkJCQlzZWxlY3RlZCA9IGdldChwcmV2aW91cywgInNlbGVjdGVkIik7CisJCQkJCXNldChwcmV2aW91cywgInNlbGVjdGVkIiwgbnVsbCk7CisJCQkJCXBvcHVwKHByZXZpb3VzLCAicG9wdXBtZW51Iik7CisJCQkJCXNldChwcmV2aW91cywgInNlbGVjdGVkIiwgc2VsZWN0ZWQpOworCQkJCQlyZXBhaW50KHByZXZpb3VzKTsgLy8gLCBzZWxlY3RlZAorCQkJCX0KKwkJCQllbHNlIHsKKwkJCQkJc2VsZWN0ZWQgPSBnZXRNZW51KGNvbXBvbmVudCwgZ2V0KGNvbXBvbmVudCwgInNlbGVjdGVkIiksIGZhbHNlLCBmYWxzZSk7CisJCQkJCXNldChjb21wb25lbnQsICJzZWxlY3RlZCIsIHNlbGVjdGVkKTsKKwkJCQkJT2JqZWN0IHBvcHVwID0gcG9wdXAoY29tcG9uZW50LCAibWVudWJhciIpOworCQkJCQlzZXQocG9wdXAsICJzZWxlY3RlZCIsIGdldE1lbnUocG9wdXAsIG51bGwsIHRydWUsIHRydWUpKTsKKwkJCQkJcmVwYWludChjb21wb25lbnQpOyAvLyAsIHNlbGVjdGVkCisJCQkJfQorCQkJfQorCQkJZWxzZSBpZiAoa2V5Y29kZSA9PSA8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnS2V5RXZlbnQnIj5LZXlFdmVudDwvZXJyb3I+LlZLX1JJR0hUKSB7CisJCQkJaWYgKChwcmV2aW91cyAhPSBudWxsKSAmJiAoc2VsZWN0ZWQgPT0gbnVsbCkpIHsKKwkJCQkJc2V0KGxhc3QsICJzZWxlY3RlZCIsIGdldChnZXQobGFzdCwgIm1lbnUiKSwgIm1lbnUiKSk7CisJCQkJCXJlcGFpbnQobGFzdCk7IC8vICwgc2VsZWN0ZWQKKwkJCQl9CisJCQkJZWxzZSBpZiAoKHNlbGVjdGVkICE9IG51bGwpICYmIChnZXRDbGFzcyhzZWxlY3RlZCkgPT0gIm1lbnUiKSkgeworCQkJCQlPYmplY3QgcG9wdXAgPSBwb3B1cChsYXN0LCAicG9wdXBtZW51Iik7CisJCQkJCXNldChwb3B1cCwgInNlbGVjdGVkIiwgZ2V0KGdldChwb3B1cCwgIm1lbnUiKSwgIm1lbnUiKSk7CisJCQkJfQorCQkJCWVsc2UgeworCQkJCQlzZWxlY3RlZCA9IGdldE1lbnUoY29tcG9uZW50LCBnZXQoY29tcG9uZW50LCAic2VsZWN0ZWQiKSwgdHJ1ZSwgZmFsc2UpOworCQkJCQlzZXQoY29tcG9uZW50LCAic2VsZWN0ZWQiLCBzZWxlY3RlZCk7CisJCQkJCU9iamVjdCBwb3B1cCA9IHBvcHVwKGNvbXBvbmVudCwgIm1lbnViYXIiKTsKKwkJCQkJc2V0KHBvcHVwLCAic2VsZWN0ZWQiLCBnZXRNZW51KHBvcHVwLCBudWxsLCB0cnVlLCB0cnVlKSk7CisJCQkJCXJlcGFpbnQoY29tcG9uZW50KTsgLy8gLCBzZWxlY3RlZAorCQkJCX0KKwkJCX0KKwkJCWVsc2UgaWYgKChrZXljb2RlID09IDxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdLZXlFdmVudCciPktleUV2ZW50PC9lcnJvcj4uVktfRU5URVIpIHx8CisJCQkJCShrZXljaGFyID09IDxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdLZXlFdmVudCciPktleUV2ZW50PC9lcnJvcj4uVktfU1BBQ0UpIHx8IChrZXljb2RlID09IDxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdLZXlFdmVudCciPktleUV2ZW50PC9lcnJvcj4uVktfRVNDQVBFKSkgeworCQkJCWlmICgoa2V5Y29kZSAhPSA8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnS2V5RXZlbnQnIj5LZXlFdmVudDwvZXJyb3I+LlZLX0VTQ0FQRSkgJiYKKwkJCQkJCWdldEJvb2xlYW4oc2VsZWN0ZWQsICJlbmFibGVkIiwgdHJ1ZSkpIHsKKwkJCQkJaWYgKChzZWxlY3RlZCAhPSBudWxsKSAmJiAoZ2V0Q2xhc3Moc2VsZWN0ZWQpID09ICJjaGVja2JveG1lbnVpdGVtIikpIHsKKwkJCQkJCWNoYW5nZUNoZWNrKHNlbGVjdGVkLCBmYWxzZSk7CisJCQkJCX0KKwkJCQkJZWxzZSBpbnZva2Uoc2VsZWN0ZWQsICJhY3Rpb24iKTsKKwkJCQl9CisJCQkJY2xvc2V1cChjb21wb25lbnQpOworCQkJfQorCQkJZWxzZSByZXR1cm4gZmFsc2U7CisJCQlyZXR1cm4gdHJ1ZTsKKwkJfQorCQlyZXR1cm4gZmFsc2U7CisJfQorCisJLyoqCisJICoKKwkgKi8KKwlwcml2YXRlIGJvb2xlYW4gY2hhbmdlQ2hlY2soT2JqZWN0IGNvbXBvbmVudCwgYm9vbGVhbiBib3gpIHsKKwkJU3RyaW5nIGdyb3VwID0gZ2V0U3RyaW5nKGNvbXBvbmVudCwgImdyb3VwIiwgbnVsbCk7CisJCWlmIChncm91cCAhPSBudWxsKSB7CisJCQlpZiAoZ2V0Qm9vbGVhbihjb21wb25lbnQsICJzZWxlY3RlZCIsIGZhbHNlKSkgeyByZXR1cm4gZmFsc2U7IH0KKwkJCWZvciAoT2JqZWN0IGNvbXAgPSBnZXQoZ2V0UGFyZW50KGNvbXBvbmVudCksCisJCQkJCWJveCA/ICJjb21wb25lbnQiIDogIm1lbnUiKTsgY29tcCAhPSBudWxsOyBjb21wID0gZ2V0KGNvbXAsICI6bmV4dCIpKSB7CisJCQkJaWYgKGNvbXAgPT0gY29tcG9uZW50KSB7CisJCQkJCXNldEJvb2xlYW4oY29tcG9uZW50LCAic2VsZWN0ZWQiLCB0cnVlKTsKKwkJCQl9CisJCQkJZWxzZSBpZiAoZ3JvdXAuZXF1YWxzKGdldChjb21wLCAiZ3JvdXAiKSkgJiYKKwkJCQkJCWdldEJvb2xlYW4oY29tcCwgInNlbGVjdGVkIiwgZmFsc2UpKSB7CisJCQkJCXNldEJvb2xlYW4oY29tcCwgInNlbGVjdGVkIiwgZmFsc2UpOworCQkJCQlpZiAoYm94KSB7IHJlcGFpbnQoY29tcCk7IH0gLy9jaGVja2JveCBvbmx5CisJCQkJfQorCQkJfQorCQl9CisJCWVsc2UgeworCQkJc2V0Qm9vbGVhbihjb21wb25lbnQsICJzZWxlY3RlZCIsCisJCQkJIWdldEJvb2xlYW4oY29tcG9uZW50LCAic2VsZWN0ZWQiLCBmYWxzZSksIGZhbHNlKTsKKwkJfQorCQlpbnZva2UoY29tcG9uZW50LCAiYWN0aW9uIik7CisJCXJldHVybiB0cnVlOworCX0KKworCS8qKgorCSAqCisJICovCisJcHJpdmF0ZSBPYmplY3QgZ2V0TWVudShPYmplY3QgY29tcG9uZW50LCBPYmplY3QgcGFydCwKKwkJCWJvb2xlYW4gZm9yd2FyZCwgYm9vbGVhbiBwb3B1cCkgeworCQlpZiAoZm9yd2FyZCkgeworCQkJaWYgKHBhcnQgIT0gbnVsbCkgeyBwYXJ0ID0gZ2V0KHBhcnQsICI6bmV4dCIpOyB9CisJCQlpZiAocGFydCA9PSBudWxsKSB7CisJCQkJcGFydCA9IGdldChwb3B1cCA/IGdldChjb21wb25lbnQsICJtZW51IikgOiBjb21wb25lbnQsICJtZW51Iik7CisJCQl9CisJCX0KKwkJZWxzZSB7CisJCQlPYmplY3QgcHJldiA9IGdldChwb3B1cCA/IGdldChjb21wb25lbnQsICJtZW51IikgOiBjb21wb25lbnQsICJtZW51Iik7CisJCQlmb3IgKE9iamVjdCBuZXh0ID0gZ2V0KHByZXYsICI6bmV4dCIpOworCQkJCQkobmV4dCAhPSBudWxsKSAmJiAobmV4dCAhPSBwYXJ0KTsgbmV4dCA9IGdldChuZXh0LCAiOm5leHQiKSkgeworCQkJCXByZXYgPSBuZXh0OworCQkJfQorCQkJcGFydCA9IHByZXY7CisJCX0KKwkJcmV0dXJuIChnZXRDbGFzcyhwYXJ0KSA9PSAic2VwYXJhdG9yIikgPworCQkJZ2V0TWVudShjb21wb25lbnQsIHBhcnQsIGZvcndhcmQsIHBvcHVwKSA6IHBhcnQ7CisJfQorCisJLyoqCisJICoKKwkgKi8KKwkvKnByaXZhdGUgYm9vbGVhbiBwcm9jZXNzS2V5UmVsZWFzZShPYmplY3QgY29tcG9uZW50LCBLZXlFdmVudCBlLCBpbnQga2V5Y29kZSkgeworCQlyZXR1cm4gdHJ1ZTsKKwl9Ki8KKworCS8qKgorCSAqCisJICovCisJcHJpdmF0ZSBib29sZWFuIHByb2Nlc3NGaWVsZChPYmplY3QgY29tcG9uZW50LAorCQkJYm9vbGVhbiBzaGlmdGRvd24sIGJvb2xlYW4gY29udHJvbGRvd24sIGludCBtb2RpZmllcnMsCisJCQlpbnQga2V5Y2hhciwgaW50IGtleWNvZGUsIGJvb2xlYW4gbXVsdGlsaW5lLCBib29sZWFuIGhpZGRlbikgeworCQlTdHJpbmcgdGV4dCA9IGdldFN0cmluZyhjb21wb25lbnQsICJ0ZXh0IiwgIiIpOworCQlpbnQgc3RhcnQgPSBnZXRJbnRlZ2VyKGNvbXBvbmVudCwgInN0YXJ0IiwgMCk7CisJCWludCBlbmQgPSBnZXRJbnRlZ2VyKGNvbXBvbmVudCwgImVuZCIsIDApOworCQlib29sZWFuIGVkaXRhYmxlID0gZ2V0Qm9vbGVhbihjb21wb25lbnQsICJlZGl0YWJsZSIsIHRydWUpOworCisJCWludCBpc3RhcnQgPSBzdGFydDsKKwkJaW50IGllbmQgPSBlbmQ7CisJCVN0cmluZyBpbnNlcnQgPSBudWxsOworCQkvL21pZHAgaWYgKGVkaXRhYmxlICYmIChrZXljaGFyICE9IDApKSB7CisJCWlmIChlZGl0YWJsZSAmJiAoa2V5Y2hhciAhPSAwKSAmJiAvL2phdmEKKwkJCSgobW9kaWZpZXJzID09IDApIHx8IChtb2RpZmllcnMgPT0gPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ0lucHV0RXZlbnQnIj5JbnB1dEV2ZW50PC9lcnJvcj4uU0hJRlRfTUFTSykpKSB7IC8vamF2YQorCQkJaW5zZXJ0ID0gU3RyaW5nLnZhbHVlT2YoKGNoYXIpIGtleWNoYXIpOworCQl9CisJCWVsc2UgaWYgKG11bHRpbGluZSAmJiBlZGl0YWJsZSAmJiAoa2V5Y29kZSA9PSA8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnS2V5RXZlbnQnIj5LZXlFdmVudDwvZXJyb3I+LlZLX0VOVEVSKSkgeworCQkJaW5zZXJ0ID0gIlxuIjsKKwkJfQorCQllbHNlIGlmIChlZGl0YWJsZSAmJiAoa2V5Y29kZSA9PSA8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnS2V5RXZlbnQnIj5LZXlFdmVudDwvZXJyb3I+LlZLX0JBQ0tfU1BBQ0UpKSB7CisJCQlpbnNlcnQgPSAiIjsKKwkJCWlmIChzdGFydCA9PSBlbmQpIHsgaXN0YXJ0IC09IDE7IH0KKwkJfQorCQllbHNlIGlmIChrZXljb2RlID09IDxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdLZXlFdmVudCciPktleUV2ZW50PC9lcnJvcj4uVktfRU5EKSB7CisJCQlpZW5kID0gdGV4dC5sZW5ndGgoKTsKKwkJCWlmICghc2hpZnRkb3duKSB7IGlzdGFydCA9IGllbmQ7IH0KKwkJfQorCQllbHNlIGlmIChrZXljb2RlID09IDxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdLZXlFdmVudCciPktleUV2ZW50PC9lcnJvcj4uVktfSE9NRSkgeworCQkJaWVuZCA9IDA7CisJCQlpZiAoIXNoaWZ0ZG93bikgeyBpc3RhcnQgPSBpZW5kOyB9CisJCX0KKwkJZWxzZSBpZiAoa2V5Y29kZSA9PSA8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnS2V5RXZlbnQnIj5LZXlFdmVudDwvZXJyb3I+LlZLX0xFRlQpIHsKKwkJCS8vamF2YT4KKwkJCWlmIChjb250cm9sZG93bikgeworCQkJCWZvciAoaW50IGkgPSAwOyBpIDwgMjsgaSsrKSB7CisJCQkJCXdoaWxlICgoaWVuZCA+IDApICYmICgoaSAhPSAwKSA9PQorCQkJCQkJQ2hhcmFjdGVyLmlzTGV0dGVyT3JEaWdpdCh0ZXh0LmNoYXJBdChpZW5kIC0gMSkpKSkgeyBpZW5kLS07IH0KKwkJCQl9CisJCQl9IGVsc2UgeworCQkJCWllbmQgLT0gMTsKKwkJCX0KKwkJCS8vPGphdmEKKwkJCS8vbWlkcCBpZW5kIC09IDE7CisJCQlpZiAoIXNoaWZ0ZG93bikgeyBpc3RhcnQgPSBpZW5kOyB9CisJCX0KKwkJZWxzZSBpZiAoa2V5Y29kZSA9PSA8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnS2V5RXZlbnQnIj5LZXlFdmVudDwvZXJyb3I+LlZLX1JJR0hUKSB7CisJCQkvL2phdmE+CisJCQlpZiAoY29udHJvbGRvd24pIHsKKwkJCQlmb3IgKGludCBpID0gMDsgaSA8IDI7IGkrKykgeworCQkJCQl3aGlsZSAoKGllbmQgPCB0ZXh0Lmxlbmd0aCgpKSAmJiAoKGkgPT0gMCkgPT0KKwkJCQkJCUNoYXJhY3Rlci5pc0xldHRlck9yRGlnaXQodGV4dC5jaGFyQXQoaWVuZCkpKSkgeyBpZW5kKys7IH0KKwkJCQl9CisJCQl9IGVsc2UgeworCQkJCWllbmQgKz0gMTsKKwkJCX0KKwkJCS8vPGphdmEKKwkJCS8vbWlkcCBpZW5kICs9IDE7CisJCQlpZiAoIXNoaWZ0ZG93bikgeyBpc3RhcnQgPSBpZW5kOyB9CisJCX0KKwkJZWxzZSBpZiAoZWRpdGFibGUgJiYgKGtleWNvZGUgPT0gPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ0tleUV2ZW50JyI+S2V5RXZlbnQ8L2Vycm9yPi5WS19ERUxFVEUpKSB7CisJCQlpbnNlcnQgPSAiIjsKKwkJCWlmIChzdGFydCA9PSBlbmQpIHsgaWVuZCArPSAxOyB9CisJCX0KKwkJZWxzZSBpZiAoY29udHJvbGRvd24gJiYKKwkJCQkoKGtleWNvZGUgPT0gPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ0tleUV2ZW50JyI+S2V5RXZlbnQ8L2Vycm9yPi5WS19BKSB8fCAoa2V5Y29kZSA9PSAweEJGKSkpIHsKKwkJCWlzdGFydCA9IDA7IC8vIEtleUV2ZW50LlZLX1NMQVNICisJCQlpZW5kID0gdGV4dC5sZW5ndGgoKTsKKwkJfQorCQllbHNlIGlmIChjb250cm9sZG93biAmJiAoa2V5Y29kZSA9PSAweERDKSkgeworCQkJaXN0YXJ0ID0gaWVuZCA9IHRleHQubGVuZ3RoKCk7IC8vIEtleUV2ZW50LlZLX0JBQ0tfU0xBU0gKKwkJfQorCQllbHNlIGlmICgoZWRpdGFibGUgJiYgIWhpZGRlbiAmJiBjb250cm9sZG93biAmJiAoa2V5Y29kZSA9PSA8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnS2V5RXZlbnQnIj5LZXlFdmVudDwvZXJyb3I+LlZLX1gpKSB8fAorCQkJCSghaGlkZGVuICYmIGNvbnRyb2xkb3duICYmIChrZXljb2RlID09IDxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdLZXlFdmVudCciPktleUV2ZW50PC9lcnJvcj4uVktfQykpKSB7CisJCQlpZiAoc3RhcnQgIT0gZW5kKSB7CisJCQkJY2xpcGJvYXJkID0gdGV4dC5zdWJzdHJpbmcoCisJCQkJCU1hdGgubWluKHN0YXJ0LCBlbmQpLCBNYXRoLm1heChzdGFydCwgZW5kKSk7CisJCQkJLy9qYXZhPgorCQkJCXRyeSB7CisJCQkJCS8qIFBlcnNvbmFsIEJhc2lzIFByb2ZpbGUgZG9lc24ndCBjb250YWluIGRhdGF0cmFuc2ZlciBwYWNrYWdlCisJCQkJCVRvb2xraXQgdG9vbGtpdCA9IGdldFRvb2xraXQoKTsKKwkJCQkJT2JqZWN0IHN5c3RlbWNsaXBib2FyZCA9IHRvb2xraXQuZ2V0Q2xhc3MoKS5nZXRNZXRob2QoImdldFN5c3RlbUNsaXBib2FyZCIsIG51bGwpLmludm9rZSh0b29sa2l0LCBudWxsKTsKKwkJCQkJQ2xhc3Mgc2VsZWN0aW9uY2xhc3MgPSBDbGFzcy5mb3JOYW1lKCJqYXZhLmF3dC5kYXRhdHJhbnNmZXIuIiArICJTdHJpbmdTZWxlY3Rpb24iKTsKKwkJCQkJT2JqZWN0IHNlbGVjdGlvbiA9IHNlbGVjdGlvbmNsYXNzLmdldENvbnN0cnVjdG9yKG5ldyBDbGFzc1tdIHsgU3RyaW5nLmNsYXNzIH0pLgorCQkJCQkJbmV3SW5zdGFuY2UobmV3IE9iamVjdFtdIHsgY2xpcGJvYXJkIH0pOworCQkJCQlzeXN0ZW1jbGlwYm9hcmQuZ2V0Q2xhc3MoKS5nZXRNZXRob2QoInNldENvbnRlbnRzIiwgbmV3IENsYXNzW10geworCQkJCQkJCUNsYXNzLmZvck5hbWUoImphdmEuYXd0LmRhdGF0cmFuc2Zlci4iICsgIlRyYW5zZmVyYWJsZSIpLAorCQkJCQkJCUNsYXNzLmZvck5hbWUoImphdmEuYXd0LmRhdGF0cmFuc2Zlci4iICsgIkNsaXBib2FyZE93bmVyIikgfSkuCisJCQkJCQlpbnZva2Uoc3lzdGVtY2xpcGJvYXJkLCBuZXcgT2JqZWN0W10geyBzZWxlY3Rpb24sIG51bGwgfSk7Ki8KKwkJCQkJZ2V0VG9vbGtpdCgpLjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgbWV0aG9kICdnZXRTeXN0ZW1DbGlwYm9hcmQoKSciPmdldFN5c3RlbUNsaXBib2FyZDwvZXJyb3I+KCkuc2V0Q29udGVudHMoCisJCQkJCQluZXcgPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ1N0cmluZ1NlbGVjdGlvbiciPlN0cmluZ1NlbGVjdGlvbjwvZXJyb3I+KGNsaXBib2FyZCksIG51bGwpOworCQkJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBleGMpIHt9CisJCQkJLy88amF2YQorCQkJCWlmIChrZXljb2RlID09IDxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdLZXlFdmVudCciPktleUV2ZW50PC9lcnJvcj4uVktfWCkgeyBpbnNlcnQgPSAiIjsgfQorCQkJfQorCQl9CisJCWVsc2UgaWYgKGVkaXRhYmxlICYmIGNvbnRyb2xkb3duICYmIChrZXljb2RlID09IDxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdLZXlFdmVudCciPktleUV2ZW50PC9lcnJvcj4uVktfVikpIHsKKwkJCS8vamF2YT4KKwkJCXRyeSB7CisJCQkJLyogbm8gZGF0YXRyYW5zZmVyIHBhY2thZ2UgaW4gUEJQCisJCQkJVG9vbGtpdCB0b29sa2l0ID0gZ2V0VG9vbGtpdCgpOworCQkJCU9iamVjdCBzeXN0ZW1jbGlwYm9hcmQgPSB0b29sa2l0LmdldENsYXNzKCkuZ2V0TWV0aG9kKCJnZXRTeXN0ZW1DbGlwYm9hcmQiLCBudWxsKS5pbnZva2UodG9vbGtpdCwgbnVsbCk7CisJCQkJT2JqZWN0IGNvbnRlbnRzID0gc3lzdGVtY2xpcGJvYXJkLmdldENsYXNzKCkuZ2V0TWV0aG9kKCJnZXRDb250ZW50cyIsIG5ldyBDbGFzc1tdIHsgT2JqZWN0LmNsYXNzIH0pLgorCQkJCQlpbnZva2Uoc3lzdGVtY2xpcGJvYXJkLCBuZXcgT2JqZWN0W10geyB0aGlzIH0pOworCQkJCUNsYXNzIGRhdGFmbGF2b3IgPSBDbGFzcy5mb3JOYW1lKCJqYXZhLmF3dC5kYXRhdHJhbnNmZXIuIiArICJEYXRhRmxhdm9yIik7CisJCQkJaW5zZXJ0ID0gKFN0cmluZykgKGNvbnRlbnRzLmdldENsYXNzKCkuZ2V0TWV0aG9kKCJnZXRUcmFuc2ZlckRhdGEiLCBuZXcgQ2xhc3NbXSB7IGRhdGFmbGF2b3IgfSkuCisJCQkJCWludm9rZShjb250ZW50cywgbmV3IE9iamVjdFtdIHsgZGF0YWZsYXZvci5nZXRGaWVsZCgic3RyaW5nRmxhdm9yIikuZ2V0KG51bGwpIH0pKTsqLworCQkJCWluc2VydCA9IChTdHJpbmcpIGdldFRvb2xraXQoKS48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIG1ldGhvZCAnZ2V0U3lzdGVtQ2xpcGJvYXJkKCknIj5nZXRTeXN0ZW1DbGlwYm9hcmQ8L2Vycm9yPigpLgorCQkJCQlnZXRDb250ZW50cyh0aGlzKS5nZXRUcmFuc2ZlckRhdGEoPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ0RhdGFGbGF2b3InIj5EYXRhRmxhdm9yPC9lcnJvcj4uc3RyaW5nRmxhdm9yKTsKKwkJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBleGMpIHsKKwkJCQlpbnNlcnQgPSBjbGlwYm9hcmQ7CisJCQl9CisJCQkvLzxqYXZhCisJCQkvL21pZHAgaW5zZXJ0ID0gY2xpcGJvYXJkOworCQkJU3RyaW5nQnVmZmVyIGZpbHRlcmVkID0gbmV3IFN0cmluZ0J1ZmZlcihpbnNlcnQubGVuZ3RoKCkpOworCQkJZm9yIChpbnQgaSA9IDA7IGkgPCBpbnNlcnQubGVuZ3RoKCk7IGkrKykgeworCQkJCWNoYXIgY2tleSA9IGluc2VydC5jaGFyQXQoaSk7CisJCQkJaWYgKCgoY2tleSA+IDB4MWYpICYmIChja2V5IDwgMHg3ZikpIHx8CisJCQkJCQkoKGNrZXkgPiAweDlmKSAmJiAoY2tleSA8IDB4ZmZmZikpIHx8CisJCQkJCQkobXVsdGlsaW5lICYmIChja2V5ID09ICdcbicpKSkgeworCQkJCQlmaWx0ZXJlZC5hcHBlbmQoY2tleSk7CisJCQkJfQorCQkJfQorCQkJaWYgKGZpbHRlcmVkLmxlbmd0aCgpICE9IGluc2VydC5sZW5ndGgoKSkgeworCQkJCWluc2VydCA9IGZpbHRlcmVkLnRvU3RyaW5nKCk7CisJCQl9CisJCX0KKwkJcmV0dXJuIGNoYW5nZUZpZWxkKGNvbXBvbmVudCwgdGV4dCwgaW5zZXJ0LCBpc3RhcnQsIGllbmQsIHN0YXJ0LCBlbmQpOworCX0KKworCS8qKgorCSAqCisJICovCisJcHJpdmF0ZSBib29sZWFuIGNoYW5nZUZpZWxkKE9iamVjdCBjb21wb25lbnQsIFN0cmluZyB0ZXh0LCBTdHJpbmcgaW5zZXJ0LAorCQkJaW50IG1vdmVzdGFydCwgaW50IG1vdmVlbmQsIGludCBzdGFydCwgaW50IGVuZCkgeworCQlpZiAoKGluc2VydCA9PSBudWxsKSAmJiAoc3RhcnQgPT0gbW92ZXN0YXJ0KSAmJiAoZW5kID09IG1vdmVlbmQpKSB7CisJCQlyZXR1cm4gZmFsc2U7CisJCX0KKwkJbW92ZXN0YXJ0ID0gTWF0aC5tYXgoMCwgTWF0aC5taW4obW92ZXN0YXJ0LCB0ZXh0Lmxlbmd0aCgpKSk7CisJCW1vdmVlbmQgPSBNYXRoLm1heCgwLCBNYXRoLm1pbihtb3ZlZW5kLCB0ZXh0Lmxlbmd0aCgpKSk7CisJCWlmIChpbnNlcnQgIT0gbnVsbCkgeworCQkJaW50IG1pbiA9IE1hdGgubWluKG1vdmVzdGFydCwgbW92ZWVuZCk7CisJCQlzZXQoY29tcG9uZW50LCAidGV4dCIsIHRleHQuc3Vic3RyaW5nKDAsIG1pbikgKyBpbnNlcnQgKworCQkJCXRleHQuc3Vic3RyaW5nKE1hdGgubWF4KG1vdmVzdGFydCwgbW92ZWVuZCkpKTsKKwkJCW1vdmVzdGFydCA9IG1vdmVlbmQgPSBtaW4gKyBpbnNlcnQubGVuZ3RoKCk7CisJCQlpbnZva2UoY29tcG9uZW50LCAiYWN0aW9uIik7CisJCX0KKwkJaWYgKHN0YXJ0ICE9IG1vdmVzdGFydCkgeyBzZXRJbnRlZ2VyKGNvbXBvbmVudCwgInN0YXJ0IiwgbW92ZXN0YXJ0LCAwKTsgfQorCQlpZiAoZW5kICE9IG1vdmVlbmQpIHsgc2V0SW50ZWdlcihjb21wb25lbnQsICJlbmQiLCBtb3ZlZW5kLCAwKTsgfQorCQlpZiAoKGluc2VydCAhPSBudWxsKSB8fCAoc3RhcnQgIT0gbW92ZXN0YXJ0KSB8fCAoZW5kICE9IG1vdmVlbmQpKSB7CisJCQl2YWxpZGF0ZShjb21wb25lbnQpOworCQl9CisJCXJldHVybiB0cnVlOworCX0KKworCS8qKgorCSAqCisJICovCisJcHJpdmF0ZSBib29sZWFuIHByb2Nlc3NMaXN0KE9iamVjdCBjb21wb25lbnQsIGJvb2xlYW4gc2hpZnRkb3duLCBib29sZWFuIGNvbnRyb2xkb3duLAorCQkJaW50IGtleWNoYXIsIGludCBrZXljb2RlLCBTdHJpbmcgaXRlbW5hbWUsIFN0cmluZyBsZWFmbmFtZSkgeworCQlpZiAoKGtleWNvZGUgPT0gPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ0tleUV2ZW50JyI+S2V5RXZlbnQ8L2Vycm9yPi5WS19VUCkgfHwKKwkJCQkoa2V5Y29kZSA9PSA8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnS2V5RXZlbnQnIj5LZXlFdmVudDwvZXJyb3I+LlZLX0RPV04pIHx8IChrZXljb2RlID09IDxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdLZXlFdmVudCciPktleUV2ZW50PC9lcnJvcj4uVktfUEFHRV9VUCkgfHwKKwkJCQkoa2V5Y29kZSA9PSA8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnS2V5RXZlbnQnIj5LZXlFdmVudDwvZXJyb3I+LlZLX1BBR0VfRE9XTikgfHwKKwkJCQkoa2V5Y29kZSA9PSA8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnS2V5RXZlbnQnIj5LZXlFdmVudDwvZXJyb3I+LlZLX0hPTUUpIHx8IChrZXljb2RlID09IDxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdLZXlFdmVudCciPktleUV2ZW50PC9lcnJvcj4uVktfRU5EKSkgeworCQkJT2JqZWN0IGxlYWQgPSBnZXQoY29tcG9uZW50LCAibGVhZCIpOworCQkJT2JqZWN0IHJvdyA9IGdldExpc3RJdGVtKGNvbXBvbmVudCwgY29tcG9uZW50LAorCQkJCWtleWNvZGUsIGxlYWQsIGl0ZW1uYW1lLCBsZWFmbmFtZSk7CisJCQlpZiAocm93ICE9IG51bGwpIHsKKwkJCQlTdHJpbmcgc2VsZWN0aW9uID0gZ2V0U3RyaW5nKGNvbXBvbmVudCwgInNlbGVjdGlvbiIsICJzaW5nbGUiKTsKKwkJCQlpZiAoc2hpZnRkb3duICYmIChzZWxlY3Rpb24gIT0gInNpbmdsZSIpICYmIChsZWFkICE9IG51bGwpKSB7CisJCQkJCWV4dGVuZChjb21wb25lbnQsIGxlYWQsIHJvdywgaXRlbW5hbWUsIGxlYWZuYW1lKTsKKwkJCQl9CisJCQkJZWxzZSBpZiAoIWNvbnRyb2xkb3duKSB7CisJCQkJCXNlbGVjdEl0ZW0oY29tcG9uZW50LCByb3csIGl0ZW1uYW1lLCBsZWFmbmFtZSk7CisJCQkJfQorCQkJCXNldExlYWQoY29tcG9uZW50LCBsZWFkLCByb3cpOworCQkJCTxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdSZWN0YW5nbGUnIj5SZWN0YW5nbGU8L2Vycm9yPiByID0gZ2V0UmVjdGFuZ2xlKHJvdywgImJvdW5kcyIpOworCQkJCXNjcm9sbFRvVmlzaWJsZShjb21wb25lbnQsIHIuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ3gnIj54PC9lcnJvcj4sIHIuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ3knIj55PC9lcnJvcj4sIDAsIHIuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ2hlaWdodCciPmhlaWdodDwvZXJyb3I+IC0gMSk7CisJCQkJcmV0dXJuIHRydWU7CisJCQl9CisJCX0KKwkJZWxzZSBpZiAoa2V5Y2hhciA9PSA8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnS2V5RXZlbnQnIj5LZXlFdmVudDwvZXJyb3I+LlZLX1NQQUNFKSB7CisJCQlzZWxlY3QoY29tcG9uZW50LCBnZXQoY29tcG9uZW50LCAibGVhZCIpLAorCQkJCWl0ZW1uYW1lLCBsZWFmbmFtZSwgc2hpZnRkb3duLCBjb250cm9sZG93bik7IC8vLi4uCisJCQlyZXR1cm4gdHJ1ZTsKKwkJfQorCQllbHNlIGlmIChjb250cm9sZG93bikgeworCQkJaWYgKCgoa2V5Y29kZSA9PSA8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnS2V5RXZlbnQnIj5LZXlFdmVudDwvZXJyb3I+LlZLX0EpIHx8IChrZXljb2RlID09IDB4QkYpKSAmJiAvL0tleUV2ZW50LlZLX1NMQVNICisJCQkJCShnZXRTdHJpbmcoY29tcG9uZW50LCAic2VsZWN0aW9uIiwgInNpbmdsZSIpICE9ICJzaW5nbGUiKSkgeworCQkJCXNlbGVjdEFsbChjb21wb25lbnQsIHRydWUsIGl0ZW1uYW1lLCBsZWFmbmFtZSk7CisJCQkJcmV0dXJuIHRydWU7CisJCQl9CisJCQllbHNlIGlmIChrZXljb2RlID09IDB4REMpIHsgLy9LZXlFdmVudC5WS19CQUNLX1NMQVNICisJCQkJc2VsZWN0QWxsKGNvbXBvbmVudCwgZmFsc2UsIGl0ZW1uYW1lLCBsZWFmbmFtZSk7CisJCQkJcmV0dXJuIHRydWU7CisJCQl9CisJCX0KKwkJcmV0dXJuIGZhbHNlOworCX0KKworCS8qKgorCSAqCisJICovCisJcHJpdmF0ZSBPYmplY3QgZ2V0TGlzdEl0ZW0oT2JqZWN0IGNvbXBvbmVudCwgT2JqZWN0IHNjcm9sbHBhbmUsCisJCQlpbnQga2V5Y29kZSwgT2JqZWN0IGxlYWQsIFN0cmluZyBpdGVtbmFtZSwgU3RyaW5nIGxlYWZuYW1lKSB7CisJCU9iamVjdCByb3cgPSBudWxsOworCQlpZiAoa2V5Y29kZSA9PSA8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnS2V5RXZlbnQnIj5LZXlFdmVudDwvZXJyb3I+LlZLX1VQKSB7CisJCQlmb3IgKE9iamVjdCBwcmV2ID0gZ2V0KGNvbXBvbmVudCwgaXRlbW5hbWUpOyBwcmV2ICE9IGxlYWQ7CisJCQkJCXByZXYgPSBnZXROZXh0SXRlbShjb21wb25lbnQsIHByZXYsIGxlYWZuYW1lKSkgeworCQkJCXJvdyA9IHByZXY7IC8vIGNvbXBvbmVudCAtPiBnZXRQYXJlbnQobGVhZCkKKwkJCX0KKwkJfQorCQllbHNlIGlmIChrZXljb2RlID09IDxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdLZXlFdmVudCciPktleUV2ZW50PC9lcnJvcj4uVktfRE9XTikgeworCQkJcm93ID0gKGxlYWQgPT0gbnVsbCkgPyBnZXQoY29tcG9uZW50LCBpdGVtbmFtZSkgOgorCQkJCWdldE5leHRJdGVtKGNvbXBvbmVudCwgbGVhZCwgbGVhZm5hbWUpOworCQl9CisJCWVsc2UgaWYgKChrZXljb2RlID09IDxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdLZXlFdmVudCciPktleUV2ZW50PC9lcnJvcj4uVktfUEFHRV9VUCkgfHwKKwkJCQkoa2V5Y29kZSA9PSA8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnS2V5RXZlbnQnIj5LZXlFdmVudDwvZXJyb3I+LlZLX1BBR0VfRE9XTikpIHsKKwkJCTxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdSZWN0YW5nbGUnIj5SZWN0YW5nbGU8L2Vycm9yPiB2aWV3ID0gZ2V0UmVjdGFuZ2xlKHNjcm9sbHBhbmUsICI6dmlldyIpOworCQkJPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ1JlY3RhbmdsZSciPlJlY3RhbmdsZTwvZXJyb3I+IHBvcnQgPSBnZXRSZWN0YW5nbGUoc2Nyb2xscGFuZSwgIjpwb3J0Iik7CisJCQk8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnUmVjdGFuZ2xlJyI+UmVjdGFuZ2xlPC9lcnJvcj4gcmwgPSAobGVhZCAhPSBudWxsKSA/IGdldFJlY3RhbmdsZShsZWFkLCAiYm91bmRzIikgOiBudWxsOworCQkJaW50IHZ5ID0gKGtleWNvZGUgPT0gPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ0tleUV2ZW50JyI+S2V5RXZlbnQ8L2Vycm9yPi5WS19QQUdFX1VQKSA/CisJCQkJdmlldy48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAneSciPnk8L2Vycm9yPiA6ICh2aWV3LjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICd5JyI+eTwvZXJyb3I+ICsgcG9ydC48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnaGVpZ2h0JyI+aGVpZ2h0PC9lcnJvcj4gLSAyKTsKKwkJCWlmICgoa2V5Y29kZSA9PSA8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnS2V5RXZlbnQnIj5LZXlFdmVudDwvZXJyb3I+LlZLX1BBR0VfVVApICYmCisJCQkJCShybCAhPSBudWxsKSAmJiAocmwuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ3knIj55PC9lcnJvcj4gPD0gdmlldy48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAneSciPnk8L2Vycm9yPikpIHsKKwkJCQl2eSAtPSBwb3J0LjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdoZWlnaHQnIj5oZWlnaHQ8L2Vycm9yPiAtIDI7CisJCQl9CisJCQlpZiAoKGtleWNvZGUgPT0gPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ0tleUV2ZW50JyI+S2V5RXZlbnQ8L2Vycm9yPi5WS19QQUdFX0RPV04pICYmCisJCQkJCShybCAhPSBudWxsKSAmJiAocmwuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ3knIj55PC9lcnJvcj4gKyBybC48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnaGVpZ2h0JyI+aGVpZ2h0PC9lcnJvcj4gPj0gdmlldy48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAneSciPnk8L2Vycm9yPiArIHBvcnQuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ2hlaWdodCciPmhlaWdodDwvZXJyb3I+IC0gMikpIHsKKwkJCQl2eSArPSBwb3J0LjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdoZWlnaHQnIj5oZWlnaHQ8L2Vycm9yPiAtIDI7CisJCQl9CisJCQlmb3IgKE9iamVjdCBpdGVtID0gZ2V0KGNvbXBvbmVudCwgaXRlbW5hbWUpOyBpdGVtICE9IG51bGw7CisJCQkJCWl0ZW0gPSBnZXROZXh0SXRlbShjb21wb25lbnQsIGl0ZW0sIGxlYWZuYW1lKSkgeworCQkJCTxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdSZWN0YW5nbGUnIj5SZWN0YW5nbGU8L2Vycm9yPiByID0gZ2V0UmVjdGFuZ2xlKGl0ZW0sICJib3VuZHMiKTsKKwkJCQlpZiAoa2V5Y29kZSA9PSA8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnS2V5RXZlbnQnIj5LZXlFdmVudDwvZXJyb3I+LlZLX1BBR0VfVVApIHsKKwkJCQkJcm93ID0gaXRlbTsKKwkJCQkJaWYgKHIuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ3knIj55PC9lcnJvcj4gKyByLjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdoZWlnaHQnIj5oZWlnaHQ8L2Vycm9yPiA+IHZ5KSB7IGJyZWFrOyB9CisJCQkJfSBlbHNlIHsKKwkJCQkJaWYgKHIuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ3knIj55PC9lcnJvcj4gPiB2eSkgeyBicmVhazsgfQorCQkJCQlyb3cgPSBpdGVtOworCQkJCX0KKwkJCX0KKwkJfQorCQllbHNlIGlmIChrZXljb2RlID09IDxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdLZXlFdmVudCciPktleUV2ZW50PC9lcnJvcj4uVktfSE9NRSkgeworCQkJcm93ID0gZ2V0KGNvbXBvbmVudCwgaXRlbW5hbWUpOworCQl9CisJCWVsc2UgaWYgKGtleWNvZGUgPT0gPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ0tleUV2ZW50JyI+S2V5RXZlbnQ8L2Vycm9yPi5WS19FTkQpIHsKKwkJCWZvciAoT2JqZWN0IGxhc3QgPSBsZWFkOyBsYXN0ICE9IG51bGw7CisJCQkJCWxhc3QgPSBnZXROZXh0SXRlbShjb21wb25lbnQsIGxhc3QsIGxlYWZuYW1lKSkgeworCQkJCXJvdyA9IGxhc3Q7CisJCQl9CisJCX0KKwkJcmV0dXJuIHJvdzsKKwl9CisKKwkvKioKKwkgKgorCSAqLworCXByaXZhdGUgdm9pZCBzZWxlY3RBbGwoT2JqZWN0IGNvbXBvbmVudCwKKwkJCWJvb2xlYW4gc2VsZWN0ZWQsIFN0cmluZyBpdGVtbmFtZSwgU3RyaW5nIGxlYWZuYW1lKSB7CisJCWJvb2xlYW4gY2hhbmdlZCA9IGZhbHNlOworCQlmb3IgKE9iamVjdCBpdGVtID0gZ2V0KGNvbXBvbmVudCwgaXRlbW5hbWUpOworCQkJCWl0ZW0gIT0gbnVsbDsgaXRlbSA9IGdldE5leHRJdGVtKGNvbXBvbmVudCwgaXRlbSwgbGVhZm5hbWUpKSB7CisJCQlpZiAoc2V0Qm9vbGVhbihpdGVtLCAic2VsZWN0ZWQiLCBzZWxlY3RlZCwgZmFsc2UpKSB7CisJCQkJcmVwYWludChjb21wb25lbnQsIG51bGwsIGl0ZW0pOyBjaGFuZ2VkID0gdHJ1ZTsKKwkJCX0KKwkJfQorCQlzZXQoY29tcG9uZW50LCAiYW5jaG9yIiwgbnVsbCk7CisJCWlmIChjaGFuZ2VkKSB7aW52b2tlKGNvbXBvbmVudCwgImFjdGlvbiIpOyB9CisJfQorCisJLyoqCisJICoKKwkgKi8KKwlwcml2YXRlIHZvaWQgc2VsZWN0SXRlbShPYmplY3QgY29tcG9uZW50LAorCQkJT2JqZWN0IHJvdywgU3RyaW5nIGl0ZW1uYW1lLCBTdHJpbmcgbGVhZm5hbWUpIHsKKwkJYm9vbGVhbiBjaGFuZ2VkID0gZmFsc2U7CisJCWZvciAoT2JqZWN0IGl0ZW0gPSBnZXQoY29tcG9uZW50LCBpdGVtbmFtZSk7CisJCQkJaXRlbSAhPSBudWxsOyBpdGVtID0gZ2V0TmV4dEl0ZW0oY29tcG9uZW50LCBpdGVtLCBsZWFmbmFtZSkpIHsKKwkJCWlmIChzZXRCb29sZWFuKGl0ZW0sICJzZWxlY3RlZCIsIChpdGVtID09IHJvdyksIGZhbHNlKSkgeworCQkJCXJlcGFpbnQoY29tcG9uZW50LCBudWxsLCBpdGVtKTsgY2hhbmdlZCA9IHRydWU7CisJCQl9CisJCX0KKwkJc2V0KGNvbXBvbmVudCwgImFuY2hvciIsIG51bGwpOworCQlpZiAoY2hhbmdlZCkgeyBpbnZva2UoY29tcG9uZW50LCAiYWN0aW9uIik7IH0KKwl9CisKKwkvKioKKwkgKgorCSAqLworCXByaXZhdGUgdm9pZCBleHRlbmQoT2JqZWN0IGNvbXBvbmVudCwgT2JqZWN0IGxlYWQsCisJCQlPYmplY3Qgcm93LCBTdHJpbmcgaXRlbW5hbWUsIFN0cmluZyBsZWFmbmFtZSkgeworCQlPYmplY3QgYW5jaG9yID0gZ2V0KGNvbXBvbmVudCwgImFuY2hvciIpOworCQlpZiAoYW5jaG9yID09IG51bGwpIHsgc2V0KGNvbXBvbmVudCwgImFuY2hvciIsIGFuY2hvciA9IGxlYWQpOyB9CisJCWNoYXIgc2VsZWN0ID0gJ24nOyBib29sZWFuIGNoYW5nZWQgPSBmYWxzZTsKKwkJZm9yIChPYmplY3QgaXRlbSA9IGdldChjb21wb25lbnQsIGl0ZW1uYW1lKTsgLy8gYW5jaG9yIC0gcm93CisJCQkJaXRlbSAhPSBudWxsOyBpdGVtID0gZ2V0TmV4dEl0ZW0oY29tcG9uZW50LCBpdGVtLCBsZWFmbmFtZSkpIHsKKwkJCWlmIChpdGVtID09IGFuY2hvcikgc2VsZWN0ID0gKHNlbGVjdCA9PSAnbicpID8gJ3knIDogJ3InOworCQkJaWYgKGl0ZW0gPT0gcm93KSBzZWxlY3QgPSAoc2VsZWN0ID09ICduJykgPyAneScgOiAncic7CisJCQlpZiAoc2V0Qm9vbGVhbihpdGVtLCAic2VsZWN0ZWQiLCAoc2VsZWN0ICE9ICduJyksIGZhbHNlKSkgeworCQkJCXJlcGFpbnQoY29tcG9uZW50LCBudWxsLCBpdGVtKTsgY2hhbmdlZCA9IHRydWU7CisJCQl9CisJCQlpZiAoc2VsZWN0ID09ICdyJykgc2VsZWN0ID0gJ24nOworCQl9CisJCWlmIChjaGFuZ2VkKSB7IGludm9rZShjb21wb25lbnQsICJhY3Rpb24iKTsgfQorCX0KKworCS8qKgorCSAqCisJICovCisJcHJpdmF0ZSB2b2lkIHNldExlYWQoT2JqZWN0IGNvbXBvbmVudCwgT2JqZWN0IG9sZGxlYWQsIE9iamVjdCBsZWFkKSB7CisJCWlmIChvbGRsZWFkICE9IGxlYWQpIHsgLy8/CisJCQlpZiAob2xkbGVhZCAhPSBudWxsKSB7IHJlcGFpbnQoY29tcG9uZW50LCBudWxsLCBvbGRsZWFkKTsgfQorCQkJc2V0KGNvbXBvbmVudCwgImxlYWQiLCBsZWFkKTsKKwkJCXJlcGFpbnQoY29tcG9uZW50LCBudWxsLCBsZWFkKTsKKwkJfQorCX0KKworCS8qcHVibGljIHZvaWQgcmVwYWludChpbnQgeCwgaW50IHksIGludCB3aWR0aCwgaW50IGhlaWdodCkgeworCQlTeXN0ZW0ub3V0LnByaW50bG4oInJlcGFpbnQoIiArIHggKyAiLCAiICsgeSArICIsICIgKyB3aWR0aCArICIsICIgKyBoZWlnaHQgKyAiKSIpOworCQlzdXBlci5yZXBhaW50KHgsIHksIHdpZHRoLCBoZWlnaHQpOworCX0qLworCisJLyoqCisJICoKKwkgKi8KKwlwcml2YXRlIHZvaWQgaGFuZGxlTW91c2VFdmVudChpbnQgeCwgaW50IHksIGludCBjbGlja2NvdW50LAorCQkJYm9vbGVhbiBzaGlmdGRvd24sIGJvb2xlYW4gY29udHJvbGRvd24sIGJvb2xlYW4gcG9wdXB0cmlnZ2VyLAorCQkJaW50IGlkLCBPYmplY3QgY29tcG9uZW50LCBPYmplY3QgcGFydCkgeworCQlpZiAoaWQgPT0gPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ01vdXNlRXZlbnQnIj5Nb3VzZUV2ZW50PC9lcnJvcj4uTU9VU0VfRU5URVJFRCkgeworCQkJc2V0VGltZXIoNzUwTCk7CisJCX0KKwkJZWxzZSBpZiAoaWQgPT0gPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ01vdXNlRXZlbnQnIj5Nb3VzZUV2ZW50PC9lcnJvcj4uTU9VU0VfRVhJVEVEKSB7CisJCQloaWRlVGlwKCk7CisJCX0KKwkJaWYgKCFnZXRCb29sZWFuKGNvbXBvbmVudCwgImVuYWJsZWQiLCB0cnVlKSkgeyByZXR1cm47IH0KKwkJU3RyaW5nIGNsYXNzbmFtZSA9IGdldENsYXNzKGNvbXBvbmVudCk7CisJCWlmICgoImJ1dHRvbiIgPT0gY2xhc3NuYW1lKSB8fCAoImNoZWNrYm94IiA9PSBjbGFzc25hbWUpKSB7CisJCQlpZiAoKGlkID09IDxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdNb3VzZUV2ZW50JyI+TW91c2VFdmVudDwvZXJyb3I+Lk1PVVNFX0VOVEVSRUQpIHx8CisJCQkJCShpZCA9PSA8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnTW91c2VFdmVudCciPk1vdXNlRXZlbnQ8L2Vycm9yPi5NT1VTRV9FWElURUQpIHx8CisJCQkJCShpZCA9PSA8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnTW91c2VFdmVudCciPk1vdXNlRXZlbnQ8L2Vycm9yPi5NT1VTRV9QUkVTU0VEKSB8fAorCQkJCQkoaWQgPT0gPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ01vdXNlRXZlbnQnIj5Nb3VzZUV2ZW50PC9lcnJvcj4uTU9VU0VfUkVMRUFTRUQpKSB7CisJCQkJaWYgKGlkID09IDxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdNb3VzZUV2ZW50JyI+TW91c2VFdmVudDwvZXJyb3I+Lk1PVVNFX1BSRVNTRUQpIHsKKwkJCQkJc2V0Rm9jdXMoY29tcG9uZW50KTsKKwkJCQl9CisJCQkJZWxzZSBpZiAoKGlkID09IDxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdNb3VzZUV2ZW50JyI+TW91c2VFdmVudDwvZXJyb3I+Lk1PVVNFX1JFTEVBU0VEKSAmJgorCQkJCQkJKG1vdXNlaW5zaWRlID09IGNvbXBvbmVudCkpIHsKKwkJCQkJaWYgKCJjaGVja2JveCIgPT0gY2xhc3NuYW1lKSB7CisJCQkJCQljaGFuZ2VDaGVjayhjb21wb25lbnQsIHRydWUpOworCQkJCQl9CisJCQkJCWVsc2UgaW52b2tlKGNvbXBvbmVudCwgImFjdGlvbiIpOworCQkJCX0KKwkJCQlyZXBhaW50KGNvbXBvbmVudCk7CisJCQl9CisJCX0KKwkJZWxzZSBpZiAoImNvbWJvYm94IiA9PSBjbGFzc25hbWUpIHsKKwkJCWJvb2xlYW4gZWRpdGFibGUgPSBnZXRCb29sZWFuKGNvbXBvbmVudCwgImVkaXRhYmxlIiwgdHJ1ZSk7CisJCQlpZiAoZWRpdGFibGUgJiYgKHBhcnQgPT0gbnVsbCkpIHsKKwkJCQk8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnSW1hZ2UnIj5JbWFnZTwvZXJyb3I+IGljb24gPSBudWxsOworCQkJCWludCBsZWZ0ID0gKChpZCA9PSA8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnTW91c2VFdmVudCciPk1vdXNlRXZlbnQ8L2Vycm9yPi5NT1VTRV9QUkVTU0VEKSAmJgorCQkJCQkoKGljb24gPSBnZXRJY29uKGNvbXBvbmVudCwgImljb24iLCBudWxsKSkgIT0gbnVsbCkpID8KKwkJCQkJCWljb24uPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBtZXRob2QgJ2dldFdpZHRoKFRoaW5sZXQpJyI+Z2V0V2lkdGg8L2Vycm9yPih0aGlzKSA6IDA7CisJCQkJcHJvY2Vzc0ZpZWxkKHgsIHksIGNsaWNrY291bnQsIGlkLCBjb21wb25lbnQsIHBhcnQsIGZhbHNlLCBmYWxzZSwgbGVmdCk7CisJCQl9CisJCQllbHNlIGlmIChwYXJ0ICE9ICJpY29uIikgeyAvLyBwYXJ0ID0gImRvd24iCisJCQkJaWYgKCgoaWQgPT0gPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ01vdXNlRXZlbnQnIj5Nb3VzZUV2ZW50PC9lcnJvcj4uTU9VU0VfRU5URVJFRCkgfHwKKwkJCQkJCShpZCA9PSA8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnTW91c2VFdmVudCciPk1vdXNlRXZlbnQ8L2Vycm9yPi5NT1VTRV9FWElURUQpKSAmJiAobW91c2VwcmVzc2VkID09IG51bGwpKSB7CisJCQkJCWlmIChlZGl0YWJsZSkgeyByZXBhaW50KGNvbXBvbmVudCwgImNvbWJvYm94IiwgcGFydCk7IH0KKwkJCQkJCWVsc2UgeyByZXBhaW50KGNvbXBvbmVudCk7IH0KKwkJCQl9CisJCQkJZWxzZSBpZiAoaWQgPT0gPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ01vdXNlRXZlbnQnIj5Nb3VzZUV2ZW50PC9lcnJvcj4uTU9VU0VfUFJFU1NFRCkgeworCQkJCQlPYmplY3QgY29tYm9saXN0ID0gZ2V0KGNvbXBvbmVudCwgImNvbWJvbGlzdCIpOworCQkJCQlpZiAoY29tYm9saXN0ID09IG51bGwpIHsKKwkJCQkJCXNldEZvY3VzKGNvbXBvbmVudCk7CisJCQkJCQlyZXBhaW50KGNvbXBvbmVudCk7CisJCQkJCQlwb3B1cChjb21wb25lbnQsIGNsYXNzbmFtZSk7CisJCQkJCX0gZWxzZSB7CisJCQkJCQljbG9zZXVwKGNvbXBvbmVudCwgY29tYm9saXN0LCBudWxsKTsKKwkJCQkJfQorCQkJCX0KKwkJCQllbHNlIGlmIChpZCA9PSA8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnTW91c2VFdmVudCciPk1vdXNlRXZlbnQ8L2Vycm9yPi5NT1VTRV9SRUxFQVNFRCkgeworCQkJCQlpZiAobW91c2VpbnNpZGUgIT0gY29tcG9uZW50KSB7CisJCQkJCQlPYmplY3QgY29tYm9saXN0ID0gZ2V0KGNvbXBvbmVudCwgImNvbWJvbGlzdCIpOworCQkJCQkJY2xvc2V1cChjb21wb25lbnQsIGNvbWJvbGlzdCwKKwkJCQkJCQkobW91c2VpbnNpZGUgPT0gY29tYm9saXN0KSA/IGluc2lkZXBhcnQgOiBudWxsKTsKKwkJCQkJfSBlbHNlIHsKKwkJCQkJCXJlcGFpbnQoY29tcG9uZW50KTsKKwkJCQkJfQorCQkJCX0KKwkJCX0KKwkJfQorCQllbHNlIGlmICgiY29tYm9saXN0IiA9PSBjbGFzc25hbWUpIHsKKwkJCWlmICghcHJvY2Vzc1Njcm9sbCh4LCB5LCBpZCwgY29tcG9uZW50LCBwYXJ0KSkgeworCQkJCWlmICgoaWQgPT0gPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ01vdXNlRXZlbnQnIj5Nb3VzZUV2ZW50PC9lcnJvcj4uTU9VU0VfRU5URVJFRCkgfHwgKGlkID09IERSQUdfRU5URVJFRCkpIHsKKwkJCQkJaWYgKHBhcnQgIT0gbnVsbCkgeworCQkJCQkJLy8gcmVwYWludCBwcmV2aW91cyBpbnNpZGUKKwkJCQkJCXNldChjb21wb25lbnQsICJpbnNpZGUiLCBwYXJ0KTsKKwkJCQkJCXJlcGFpbnQoY29tcG9uZW50LCBjbGFzc25hbWUsIHBhcnQpOworCQkJCQl9CisJCQkJfQorCQkJCWVsc2UgaWYgKChpZCA9PSA8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnTW91c2VFdmVudCciPk1vdXNlRXZlbnQ8L2Vycm9yPi5NT1VTRV9FWElURUQpIHx8IChpZCA9PSBEUkFHX0VYSVRFRCkpIHsKKwkJCQkJaWYgKHBhcnQgIT0gbnVsbCkgeworCQkJCQkJc2V0KGNvbXBvbmVudCwgImluc2lkZSIsIG51bGwpOworCQkJCQkJcmVwYWludChjb21wb25lbnQsIGNsYXNzbmFtZSwgcGFydCk7CisJCQkJCX0KKwkJCQl9CisJCQkJZWxzZSBpZiAoaWQgPT0gPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ01vdXNlRXZlbnQnIj5Nb3VzZUV2ZW50PC9lcnJvcj4uTU9VU0VfUkVMRUFTRUQpIHsKKwkJCQkJY2xvc2V1cChnZXQoY29tcG9uZW50LCAiY29tYm9ib3giKSwgY29tcG9uZW50LCBwYXJ0KTsKKwkJCQl9CisJCQl9CisJCX0KKwkJZWxzZSBpZiAoKCJ0ZXh0ZmllbGQiID09IGNsYXNzbmFtZSkgfHwgKCJwYXNzd29yZGZpZWxkIiA9PSBjbGFzc25hbWUpKSB7CisJCQlwcm9jZXNzRmllbGQoeCwgeSwgY2xpY2tjb3VudCwgaWQsIGNvbXBvbmVudCwgcGFydCwKKwkJCQlmYWxzZSwgKCJwYXNzd29yZGZpZWxkIiA9PSBjbGFzc25hbWUpLCAwKTsKKwkJfQorCQllbHNlIGlmICgidGV4dGFyZWEiID09IGNsYXNzbmFtZSkgeworCQkJaWYgKCFwcm9jZXNzU2Nyb2xsKHgsIHksIGlkLCBjb21wb25lbnQsIHBhcnQpKSB7CisJCQkJcHJvY2Vzc0ZpZWxkKHgsIHksIGNsaWNrY291bnQsIGlkLCBjb21wb25lbnQsIHBhcnQsIHRydWUsIGZhbHNlLCAwKTsKKwkJCX0KKwkJfQorCQkvL2phdmE+CisJCWVsc2UgaWYgKCJkZXNrdG9wIiA9PSBjbGFzc25hbWUpIHsKKwkJCWlmIChpZCA9PSA8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnTW91c2VFdmVudCciPk1vdXNlRXZlbnQ8L2Vycm9yPi5NT1VTRV9FTlRFUkVEKSB7CisJCQkJc2V0Q3Vyc29yKDxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdDdXJzb3InIj5DdXJzb3I8L2Vycm9yPi5nZXRQcmVkZWZpbmVkQ3Vyc29yKDxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdDdXJzb3InIj5DdXJzb3I8L2Vycm9yPi5XQUlUX0NVUlNPUikpOworCQkJfQorCQkJZWxzZSBpZiAoaWQgPT0gPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ01vdXNlRXZlbnQnIj5Nb3VzZUV2ZW50PC9lcnJvcj4uTU9VU0VfRVhJVEVEKSB7CisJCQkJc2V0Q3Vyc29yKDxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdDdXJzb3InIj5DdXJzb3I8L2Vycm9yPi5nZXRQcmVkZWZpbmVkQ3Vyc29yKDxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdDdXJzb3InIj5DdXJzb3I8L2Vycm9yPi5ERUZBVUxUX0NVUlNPUikpOworCQkJfQorCQl9CisJCS8vPGphdmEKKwkJZWxzZSBpZiAoInNwaW5ib3giID09IGNsYXNzbmFtZSkgeworCQkJaWYgKHBhcnQgPT0gbnVsbCkgeworCQkJCXByb2Nlc3NGaWVsZCh4LCB5LCBjbGlja2NvdW50LCBpZCwgY29tcG9uZW50LCBwYXJ0LCBmYWxzZSwgZmFsc2UsIDApOworCQkJfQorCQkJZWxzZSB7IC8vIHBhcnQgPSAidXAiIHx8ICJkb3duIgorCQkJCWlmICgoaWQgPT0gPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ01vdXNlRXZlbnQnIj5Nb3VzZUV2ZW50PC9lcnJvcj4uTU9VU0VfRU5URVJFRCkgfHwKKwkJCQkJCShpZCA9PSA8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnTW91c2VFdmVudCciPk1vdXNlRXZlbnQ8L2Vycm9yPi5NT1VTRV9FWElURUQpIHx8CisJCQkJCQkoaWQgPT0gPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ01vdXNlRXZlbnQnIj5Nb3VzZUV2ZW50PC9lcnJvcj4uTU9VU0VfUFJFU1NFRCkgfHwKKwkJCQkJCShpZCA9PSA8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnTW91c2VFdmVudCciPk1vdXNlRXZlbnQ8L2Vycm9yPi5NT1VTRV9SRUxFQVNFRCkpIHsKKwkJCQkJaWYgKGlkID09IDxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdNb3VzZUV2ZW50JyI+TW91c2VFdmVudDwvZXJyb3I+Lk1PVVNFX1BSRVNTRUQpIHsKKwkJCQkJCXNldEZvY3VzKGNvbXBvbmVudCk7CisJCQkJCQlpZiAocHJvY2Vzc1NwaW4oY29tcG9uZW50LCBwYXJ0KSkgeyBzZXRUaW1lcigzNzVMKTsgfQorCQkJCQkJLy9zZXR0ZXh0OiBzdGFydCBlbmQgc2VsZWN0aW9uLCBwYXJzZSBleGNlcHRpb24uLi4KKwkJCQkJfQorCQkJCQllbHNlIHsKKwkJCQkJCWlmIChpZCA9PSA8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnTW91c2VFdmVudCciPk1vdXNlRXZlbnQ8L2Vycm9yPi5NT1VTRV9SRUxFQVNFRCkgeworCQkJCQkJCXNldFRpbWVyKDBMKTsKKwkJCQkJCX0KKwkJCQkJfQorCQkJCQlyZXBhaW50KGNvbXBvbmVudCwgY2xhc3NuYW1lLCBwYXJ0KTsKKwkJCQl9CisJCQl9CisJCX0KKwkJZWxzZSBpZiAoInRhYmJlZHBhbmUiID09IGNsYXNzbmFtZSkgeworCQkJaWYgKChpZCA9PSA8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnTW91c2VFdmVudCciPk1vdXNlRXZlbnQ8L2Vycm9yPi5NT1VTRV9FTlRFUkVEKSB8fAorCQkJCQkoaWQgPT0gPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ01vdXNlRXZlbnQnIj5Nb3VzZUV2ZW50PC9lcnJvcj4uTU9VU0VfRVhJVEVEKSkgeworCQkJCWlmICgocGFydCAhPSBudWxsKSAmJiBnZXRCb29sZWFuKHBhcnQsICJlbmFibGVkIiwgdHJ1ZSkgJiYKKwkJCQkJCShnZXRJbnRlZ2VyKGNvbXBvbmVudCwgInNlbGVjdGVkIiwgMCkgIT0gZ2V0SW5kZXgoY29tcG9uZW50LCAidGFiIiwgcGFydCkpKSB7CisJCQkJCXJlcGFpbnQoY29tcG9uZW50LCAidGFiYmVkcGFuZSIsIHBhcnQpOworCQkJCX0KKwkJCX0KKwkJCWVsc2UgaWYgKChwYXJ0ICE9IG51bGwpICYmIChpZCA9PSA8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnTW91c2VFdmVudCciPk1vdXNlRXZlbnQ8L2Vycm9yPi5NT1VTRV9QUkVTU0VEKSAmJgorCQkJCQlnZXRCb29sZWFuKHBhcnQsICJlbmFibGVkIiwgdHJ1ZSkpIHsKKwkJCQlpbnQgc2VsZWN0ZWQgPSBnZXRJbnRlZ2VyKGNvbXBvbmVudCwgInNlbGVjdGVkIiwgMCk7CisJCQkJaW50IGN1cnJlbnQgPSBnZXRJbmRleChjb21wb25lbnQsICJ0YWIiLCBwYXJ0KTsKKwkJCQlpZiAoc2VsZWN0ZWQgPT0gY3VycmVudCkgeworCQkJCQlzZXRGb2N1cyhjb21wb25lbnQpOworCQkJCQlyZXBhaW50KGNvbXBvbmVudCwgInRhYmJlZHBhbmUiLCBwYXJ0KTsKKwkJCQl9CisJCQkJZWxzZSB7CisJCQkJCXNldEludGVnZXIoY29tcG9uZW50LCAic2VsZWN0ZWQiLCBjdXJyZW50LCAwKTsKKwkJCQkJLy9PYmplY3QgdGFiY29udGVudCA9IGdldEl0ZW1JbXBsKGNvbXBvbmVudCwgImNvbXBvbmVudCIsIGN1cnJlbnQpOworCQkJCQkvL3NldEZvY3VzKCh0YWJjb250ZW50ICE9IG51bGwpID8gdGFiY29udGVudCA6IGNvbXBvbmVudCk7CisJCQkJCXNldE5leHRGb2N1c2FibGUoY29tcG9uZW50LCBmYWxzZSk7CisJCQkJCXJlcGFpbnQoY29tcG9uZW50KTsKKwkJCQkJaW52b2tlKGNvbXBvbmVudCwgImFjdGlvbiIpOworCQkJCX0KKwkJCX0KKwkJfQorCQllbHNlIGlmICgic2xpZGVyIiA9PSBjbGFzc25hbWUpIHsKKwkJCWlmICgoaWQgPT0gPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ01vdXNlRXZlbnQnIj5Nb3VzZUV2ZW50PC9lcnJvcj4uTU9VU0VfUFJFU1NFRCkgfHwKKwkJCQkJKGlkID09IDxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdNb3VzZUV2ZW50JyI+TW91c2VFdmVudDwvZXJyb3I+Lk1PVVNFX0RSQUdHRUQpKSB7CisJCQkJaWYgKGlkID09IDxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdNb3VzZUV2ZW50JyI+TW91c2VFdmVudDwvZXJyb3I+Lk1PVVNFX1BSRVNTRUQpIHsKKwkJCQkJc2V0UmVmZXJlbmNlKGNvbXBvbmVudCwgYmxvY2sgLyAyLCBibG9jayAvIDIpOworCQkJCQlzZXRGb2N1cyhjb21wb25lbnQpOworCQkJCX0KKwkJCQlpbnQgbWluaW11bSA9IGdldEludGVnZXIoY29tcG9uZW50LCAibWluaW11bSIsIDApOworCQkJCWludCBtYXhpbXVtID0gZ2V0SW50ZWdlcihjb21wb25lbnQsICJtYXhpbXVtIiwgMTAwKTsKKwkJCQlpbnQgdmFsdWUgPSBnZXRJbnRlZ2VyKGNvbXBvbmVudCwgInZhbHVlIiwgNTApOworCQkJCTxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdSZWN0YW5nbGUnIj5SZWN0YW5nbGU8L2Vycm9yPiBib3VuZHMgPSBnZXRSZWN0YW5nbGUoY29tcG9uZW50LCAiYm91bmRzIik7CisJCQkJYm9vbGVhbiBob3Jpem9udGFsID0gKCJ2ZXJ0aWNhbCIgIT0gZ2V0KGNvbXBvbmVudCwgIm9yaWVudGF0aW9uIikpOworCQkJCWludCBuZXd2YWx1ZSA9IG1pbmltdW0gKworCQkJCQkoaG9yaXpvbnRhbCA/IChtb3VzZXggLSByZWZlcmVuY2V4KSA6IChtb3VzZXkgLSByZWZlcmVuY2V5KSkgKgorCQkJCQkobWF4aW11bSAtIG1pbmltdW0pIC8KKwkJCQkJKChob3Jpem9udGFsID8gYm91bmRzLjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICd3aWR0aCciPndpZHRoPC9lcnJvcj4gOiBib3VuZHMuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ2hlaWdodCciPmhlaWdodDwvZXJyb3I+KSAtIGJsb2NrKTsgLy8uLi4gKzAuNQorCQkJCW5ld3ZhbHVlID0gTWF0aC5tYXgobWluaW11bSwgTWF0aC5taW4obmV3dmFsdWUsIG1heGltdW0pKTsKKwkJCQlpZiAodmFsdWUgIT0gbmV3dmFsdWUpIHsKKwkJCQkJc2V0SW50ZWdlcihjb21wb25lbnQsICJ2YWx1ZSIsIG5ld3ZhbHVlLCA1MCk7CisJCQkJCWludm9rZShjb21wb25lbnQsICJhY3Rpb24iKTsKKwkJCQl9CisJCQkJaWYgKCh2YWx1ZSAhPSBuZXd2YWx1ZSkgfHwgKGlkID09IDxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdNb3VzZUV2ZW50JyI+TW91c2VFdmVudDwvZXJyb3I+Lk1PVVNFX1BSRVNTRUQpKSB7CisJCQkJCXJlcGFpbnQoY29tcG9uZW50KTsKKwkJCQl9CisJCQl9CisJCX0KKwkJZWxzZSBpZiAoInNwbGl0cGFuZSIgPT0gY2xhc3NuYW1lKSB7CisJCQlpZiAoaWQgPT0gPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ01vdXNlRXZlbnQnIj5Nb3VzZUV2ZW50PC9lcnJvcj4uTU9VU0VfUFJFU1NFRCkgeworCQkJCXNldFJlZmVyZW5jZShjb21wb25lbnQsIDIsIDIpOworCQkJfQorCQkJZWxzZSBpZiAoaWQgPT0gPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ01vdXNlRXZlbnQnIj5Nb3VzZUV2ZW50PC9lcnJvcj4uTU9VU0VfRFJBR0dFRCkgeworCQkJCWludCBkaXZpZGVyID0gZ2V0SW50ZWdlcihjb21wb25lbnQsICJkaXZpZGVyIiwgLTEpOworCQkJCWJvb2xlYW4gaG9yaXpvbnRhbCA9ICgidmVydGljYWwiICE9IGdldChjb21wb25lbnQsICJvcmllbnRhdGlvbiIpKTsKKwkJCQlpbnQgbW92ZXRvID0gaG9yaXpvbnRhbCA/IChtb3VzZXggLSByZWZlcmVuY2V4KSA6CisJCQkJCShtb3VzZXkgLSByZWZlcmVuY2V5KTsKKwkJCQk8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnUmVjdGFuZ2xlJyI+UmVjdGFuZ2xlPC9lcnJvcj4gYm91bmRzID0gZ2V0UmVjdGFuZ2xlKGNvbXBvbmVudCwgImJvdW5kcyIpOworCQkJCW1vdmV0byA9IE1hdGgubWF4PGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBtZXRob2QgJ21heChpbnQsID8pJyI+KDAsIE1hdGgubWluPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBtZXRob2QgJ21pbihpbnQsID8pJyI+KG1vdmV0bywKKwkJCQkJTWF0aC5hYnM8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIG1ldGhvZCAnYWJzKD8pJyI+KGhvcml6b250YWwgPyBib3VuZHMuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ3dpZHRoJyI+d2lkdGg8L2Vycm9yPiA6IGJvdW5kcy48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnaGVpZ2h0JyI+aGVpZ2h0PC9lcnJvcj4pPC9lcnJvcj4gLSA1KTwvZXJyb3I+KTwvZXJyb3I+OworCQkJCWlmIChkaXZpZGVyICE9IG1vdmV0bykgeworCQkJCQlzZXRJbnRlZ2VyKGNvbXBvbmVudCwgImRpdmlkZXIiLCBtb3ZldG8sIC0xKTsKKwkJCQkJdmFsaWRhdGUoY29tcG9uZW50KTsKKwkJCQl9CisJCQl9CisJCQkvL2phdmE+CisJCQllbHNlIGlmICgoaWQgPT0gPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ01vdXNlRXZlbnQnIj5Nb3VzZUV2ZW50PC9lcnJvcj4uTU9VU0VfRU5URVJFRCkgJiYgKG1vdXNlcHJlc3NlZCA9PSBudWxsKSkgeworCQkJCWJvb2xlYW4gaG9yaXpvbnRhbCA9ICgidmVydGljYWwiICE9IGdldChjb21wb25lbnQsICJvcmllbnRhdGlvbiIpKTsKKwkJCQlzZXRDdXJzb3IoPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ0N1cnNvciciPkN1cnNvcjwvZXJyb3I+LmdldFByZWRlZmluZWRDdXJzb3IoaG9yaXpvbnRhbCA/CisJCQkJCTxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdDdXJzb3InIj5DdXJzb3I8L2Vycm9yPi5FX1JFU0laRV9DVVJTT1IgOiA8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnQ3Vyc29yJyI+Q3Vyc29yPC9lcnJvcj4uU19SRVNJWkVfQ1VSU09SKSk7CisJCQl9CisJCQllbHNlIGlmICgoKGlkID09IDxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdNb3VzZUV2ZW50JyI+TW91c2VFdmVudDwvZXJyb3I+Lk1PVVNFX0VYSVRFRCkgJiYgKG1vdXNlcHJlc3NlZCA9PSBudWxsKSkgfHwKKwkJCQkJKChpZCA9PSA8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnTW91c2VFdmVudCciPk1vdXNlRXZlbnQ8L2Vycm9yPi5NT1VTRV9SRUxFQVNFRCkgJiYgKG1vdXNlaW5zaWRlICE9IGNvbXBvbmVudCkpKSB7CisJCQkJc2V0Q3Vyc29yKDxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdDdXJzb3InIj5DdXJzb3I8L2Vycm9yPi5nZXRQcmVkZWZpbmVkQ3Vyc29yKDxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdDdXJzb3InIj5DdXJzb3I8L2Vycm9yPi5ERUZBVUxUX0NVUlNPUikpOworCQkJfQorCQkJLy88amF2YQorCQl9CisJCWVsc2UgaWYgKCgibGlzdCIgPT0gY2xhc3NuYW1lKSB8fAorCQkJCSgidGFibGUiID09IGNsYXNzbmFtZSkgfHwgKCJ0cmVlIiA9PSBjbGFzc25hbWUpKSB7CisJCQlpZiAoIXByb2Nlc3NTY3JvbGwoeCwgeSwgaWQsIGNvbXBvbmVudCwgcGFydCkpIHsKKwkJCQlpZiAoKChpZCA9PSA8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnTW91c2VFdmVudCciPk1vdXNlRXZlbnQ8L2Vycm9yPi5NT1VTRV9QUkVTU0VEKXx8CisJCQkJCQkoKGlkID09IDxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdNb3VzZUV2ZW50JyI+TW91c2VFdmVudDwvZXJyb3I+Lk1PVVNFX0RSQUdHRUQpICYmCisJCQkJCQkJIXNoaWZ0ZG93biAmJiAhY29udHJvbGRvd24pKSAmJgorCQkJCQkJIXBvcHVwdHJpZ2dlcikgeyAvLyBlLmdldENsaWNrQ291bnQoKQorCQkJCQk8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnUmVjdGFuZ2xlJyI+UmVjdGFuZ2xlPC9lcnJvcj4gdmlldyA9IGdldFJlY3RhbmdsZShjb21wb25lbnQsICI6dmlldyIpOworCQkJCQk8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnUmVjdGFuZ2xlJyI+UmVjdGFuZ2xlPC9lcnJvcj4gdmlld3BvcnQgPSBnZXRSZWN0YW5nbGUoY29tcG9uZW50LCAiOnBvcnQiKTsKKwkJCQkJaW50IG15ID0gbW91c2V5ICsgdmlldy48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAneSciPnk8L2Vycm9yPiAtIHJlZmVyZW5jZXk7CisJCQkJCVN0cmluZyBpdGVtbmFtZSA9ICgibGlzdCIgPT0gY2xhc3NuYW1lKSA/ICJpdGVtIiA6CisJCQkJCQkoKCJ0YWJsZSIgPT0gY2xhc3NuYW1lKSA/ICJyb3ciIDogIm5vZGUiKTsKKwkJCQkJU3RyaW5nIHN1Yml0ZW0gPSAoInRyZWUiID09IGNsYXNzbmFtZSkgPyAibm9kZSIgOiBudWxsOworCQkJCQlmb3IgKE9iamVjdCBpdGVtID0gZ2V0KGNvbXBvbmVudCwgaXRlbW5hbWUpOyBpdGVtICE9IG51bGw7KSB7CisJCQkJCQk8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnUmVjdGFuZ2xlJyI+UmVjdGFuZ2xlPC9lcnJvcj4gciA9IGdldFJlY3RhbmdsZShpdGVtLCAiYm91bmRzIik7CisJCQkJCQlpZiAobXkgPCByLjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICd5JyI+eTwvZXJyb3I+ICsgci48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnaGVpZ2h0JyI+aGVpZ2h0PC9lcnJvcj4pIHsKKwkJCQkJCQlpZiAoaWQgPT0gPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ01vdXNlRXZlbnQnIj5Nb3VzZUV2ZW50PC9lcnJvcj4uTU9VU0VfRFJBR0dFRCkgeyAvLyEhIQorCQkJCQkJCQlzY3JvbGxUb1Zpc2libGUoY29tcG9uZW50LCByLjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICd4JyI+eDwvZXJyb3I+LCByLjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICd5JyI+eTwvZXJyb3I+LCAwLCByLjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdoZWlnaHQnIj5oZWlnaHQ8L2Vycm9yPiAtIDEpOworCQkJCQkJCX0KKwkJCQkJCQllbHNlIGlmICgidHJlZSIgPT0gY2xhc3NuYW1lKSB7CisJCQkJCQkJCWludCBteCA9IG1vdXNleCArIHZpZXcuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ3gnIj54PC9lcnJvcj4gLSByZWZlcmVuY2V4OworCQkJCQkJCQlpZiAobXggPCByLjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICd4JyI+eDwvZXJyb3I+KSB7CisJCQkJCQkJCQlpZiAoKG14ID49IHIuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ3gnIj54PC9lcnJvcj4gLSBibG9jaykgJiYgKGdldChpdGVtLCAibm9kZSIpICE9IG51bGwpKSB7CisJCQkJCQkJCQkJYm9vbGVhbiBleHBhbmRlZCA9IGdldEJvb2xlYW4oaXRlbSwgImV4cGFuZGVkIiwgdHJ1ZSk7CisJCQkJCQkJCQkJc2V0Qm9vbGVhbihpdGVtLCAiZXhwYW5kZWQiLCAhZXhwYW5kZWQsIAl0cnVlKTsKKwkJCQkJCQkJCQlzZWxlY3RJdGVtKGNvbXBvbmVudCwgaXRlbSwgIm5vZGUiLCAibm9kZSIpOworCQkJCQkJCQkJCXNldExlYWQoY29tcG9uZW50LCBnZXQoY29tcG9uZW50LCAibGVhZCIpLCBpdGVtKTsKKwkJCQkJCQkJCQlzZXRGb2N1cyhjb21wb25lbnQpOworCQkJCQkJCQkJCXZhbGlkYXRlKGNvbXBvbmVudCk7CisJCQkJCQkJCQkJaW52b2tlKGNvbXBvbmVudCwgZXhwYW5kZWQgPyAiY29sbGFwc2UiIDogImV4cGFuZCIpOyAvL2l0ZW0KKwkJCQkJCQkJCX0KKwkJCQkJCQkJCWJyZWFrOworCQkJCQkJCQl9CisJCQkJCQkJfQorCQkJCQkJCWlmICgoaWQgIT0gPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ01vdXNlRXZlbnQnIj5Nb3VzZUV2ZW50PC9lcnJvcj4uTU9VU0VfRFJBR0dFRCkgfHwKKwkJCQkJCQkJCSFnZXRCb29sZWFuKGl0ZW0sICJzZWxlY3RlZCIsIGZhbHNlKSkgeworCQkJCQkJCQlzZWxlY3QoY29tcG9uZW50LCBpdGVtLCBpdGVtbmFtZSwgc3ViaXRlbSwgc2hpZnRkb3duLCBjb250cm9sZG93bik7CisJCQkJCQkJCWlmIChpZCAhPSA8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnTW91c2VFdmVudCciPk1vdXNlRXZlbnQ8L2Vycm9yPi5NT1VTRV9EUkFHR0VEKSB7CisJCQkJCQkJCQlpZiAoc2V0Rm9jdXMoY29tcG9uZW50KSkgeyByZXBhaW50KGNvbXBvbmVudCwgY2xhc3NuYW1lLCBpdGVtKTsgfSAvLz8KKwkJCQkJCQkJfQorCQkJCQkJCX0KKwkJCQkJCQlicmVhazsKKwkJCQkJCX0KKwkJCQkJCWl0ZW0gPSBnZXROZXh0SXRlbShjb21wb25lbnQsIGl0ZW0sIHN1Yml0ZW0pOworCQkJCQl9CisJCQkJfQorCQkgCX0KKwkJfQorCQllbHNlIGlmICgibWVudWJhciIgPT0gY2xhc3NuYW1lKSB7CisJCQlPYmplY3Qgc2VsZWN0ZWQgPSBnZXQoY29tcG9uZW50LCAic2VsZWN0ZWQiKTsKKwkJCWlmICgoKGlkID09IDxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdNb3VzZUV2ZW50JyI+TW91c2VFdmVudDwvZXJyb3I+Lk1PVVNFX0VOVEVSRUQpIHx8IChpZCA9PSA8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnTW91c2VFdmVudCciPk1vdXNlRXZlbnQ8L2Vycm9yPi5NT1VTRV9FWElURUQpKSAmJgorCQkJCQkocGFydCAhPSBudWxsKSAmJiAoc2VsZWN0ZWQgPT0gbnVsbCkpIHsKKwkJCQlyZXBhaW50KGNvbXBvbmVudCwgY2xhc3NuYW1lLCBwYXJ0KTsKKwkJCX0KKwkJCWVsc2UgaWYgKChwYXJ0ICE9IG51bGwpICYmICgoc2VsZWN0ZWQgPT0gbnVsbCkgPworCQkJCShpZCA9PSA8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnTW91c2VFdmVudCciPk1vdXNlRXZlbnQ8L2Vycm9yPi5NT1VTRV9QUkVTU0VEKSA6CisJCQkJCSgoaWQgPT0gPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ01vdXNlRXZlbnQnIj5Nb3VzZUV2ZW50PC9lcnJvcj4uTU9VU0VfRU5URVJFRCkgfHwgKGlkID09IERSQUdfRU5URVJFRCkpKSkgeworCQkJCXNldChjb21wb25lbnQsICJzZWxlY3RlZCIsIHBhcnQpOworCQkJCXBvcHVwKGNvbXBvbmVudCwgY2xhc3NuYW1lKTsKKwkJCQlyZXBhaW50KGNvbXBvbmVudCwgY2xhc3NuYW1lLCBwYXJ0KTsKKwkJCX0KKwkJCWVsc2UgaWYgKChpZCA9PSA8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnTW91c2VFdmVudCciPk1vdXNlRXZlbnQ8L2Vycm9yPi5NT1VTRV9QUkVTU0VEKSAmJiAoc2VsZWN0ZWQgIT0gbnVsbCkpIHsKKwkJCQljbG9zZXVwKGNvbXBvbmVudCk7CisJCQl9CisJCQllbHNlIGlmIChpZCA9PSA8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnTW91c2VFdmVudCciPk1vdXNlRXZlbnQ8L2Vycm9yPi5NT1VTRV9SRUxFQVNFRCkgeworCQkJCWlmICgocGFydCAhPSBpbnNpZGVwYXJ0KSAmJgorCQkJCQkJKChpbnNpZGVwYXJ0ID09IG51bGwpIHx8IChnZXRDbGFzcyhpbnNpZGVwYXJ0KSAhPSAibWVudSIpKSkgeworCQkJCQlpZiAoKGluc2lkZXBhcnQgIT0gbnVsbCkgJiYgZ2V0Qm9vbGVhbihpbnNpZGVwYXJ0LCAiZW5hYmxlZCIsIHRydWUpKSB7CisJCQkJCQlpZiAoZ2V0Q2xhc3MoaW5zaWRlcGFydCkgPT0gImNoZWNrYm94bWVudWl0ZW0iKSB7CisJCQkJCQkJY2hhbmdlQ2hlY2soaW5zaWRlcGFydCwgZmFsc2UpOworCQkJCQkJfQorCQkJCQkJZWxzZSBpbnZva2UoaW5zaWRlcGFydCwgImFjdGlvbiIpOworCQkJCQl9CisJCQkJCWNsb3NldXAoY29tcG9uZW50KTsKKwkJCQl9CisJCQl9CisJCX0KKwkJZWxzZSBpZiAoInBvcHVwbWVudSIgPT0gY2xhc3NuYW1lKSB7CisJCQlpZiAocGFydCAhPSBudWxsKSB7CisJCQkJaWYgKChpZCA9PSA8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnTW91c2VFdmVudCciPk1vdXNlRXZlbnQ8L2Vycm9yPi5NT1VTRV9FTlRFUkVEKSB8fCAoaWQgPT0gRFJBR19FTlRFUkVEKSkgeworCQkJCQlzZXQoY29tcG9uZW50LCAic2VsZWN0ZWQiLCBwYXJ0KTsKKwkJCQkJcG9wdXAoY29tcG9uZW50LCBjbGFzc25hbWUpOworCQkJCQlyZXBhaW50KGNvbXBvbmVudCwgY2xhc3NuYW1lLCBwYXJ0KTsKKwkJCQl9CisJCQkJZWxzZSBpZiAoaWQgPT0gPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ01vdXNlRXZlbnQnIj5Nb3VzZUV2ZW50PC9lcnJvcj4uTU9VU0VfUkVMRUFTRUQpIHsKKwkJCQkJaWYgKChpbnNpZGVwYXJ0ID09IG51bGwpIHx8IChnZXRDbGFzcyhpbnNpZGVwYXJ0KSAhPSAibWVudSIpKSB7CisJCQkJCQlPYmplY3QgbWVudWJhciA9IHBhcnQ7CisJCQkJCQlkbyB7CisJCQkJCQkJbWVudWJhciA9IGdldFBhcmVudChtZW51YmFyKTsKKwkJCQkJCX0gd2hpbGUgKGdldENsYXNzKG1lbnViYXIpICE9ICJtZW51YmFyIik7CisJCQkJCQlpZiAoKGluc2lkZXBhcnQgIT0gbnVsbCkgJiYgZ2V0Qm9vbGVhbihpbnNpZGVwYXJ0LCAiZW5hYmxlZCIsIHRydWUpKSB7CisJCQkJCQkJaWYgKGdldENsYXNzKGluc2lkZXBhcnQpID09ICJjaGVja2JveG1lbnVpdGVtIikgeworCQkJCQkJCQljaGFuZ2VDaGVjayhpbnNpZGVwYXJ0LCBmYWxzZSk7CisJCQkJCQkJfQorCQkJCQkJCWVsc2UgaW52b2tlKGluc2lkZXBhcnQsICJhY3Rpb24iKTsKKwkJCQkJCX0KKwkJCQkJCWNsb3NldXAobWVudWJhcik7CisJCQkJCX0KKwkJCQl9CisJCQkJZWxzZSBpZiAoKGlkID09IDxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdNb3VzZUV2ZW50JyI+TW91c2VFdmVudDwvZXJyb3I+Lk1PVVNFX0VYSVRFRCkgfHwgKGlkID09IERSQUdfRVhJVEVEKSkgeworCQkJCQlpZiAoZ2V0Q2xhc3MocGFydCkgIT0gIm1lbnUiKSB7CisJCQkJCQlzZXQoY29tcG9uZW50LCAic2VsZWN0ZWQiLCBudWxsKTsKKwkJCQkJfQorCQkJCQlyZXBhaW50KGNvbXBvbmVudCwgY2xhc3NuYW1lLCBwYXJ0KTsKKwkJCQl9CisJCQl9CisJCX0KKwkJZWxzZSBpZiAoImRpYWxvZyIgPT0gY2xhc3NuYW1lKSB7CisJCQlpZiAocGFydCA9PSAiaGVhZGVyIikgeworCQkJCWlmIChpZCA9PSA8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnTW91c2VFdmVudCciPk1vdXNlRXZlbnQ8L2Vycm9yPi5NT1VTRV9QUkVTU0VEKSB7CisJCQkJCXJlZmVyZW5jZXggPSBtb3VzZXg7IHJlZmVyZW5jZXkgPSBtb3VzZXk7CisJCQkJCWlmICghZ2V0Qm9vbGVhbihjb21wb25lbnQsICJtb2RhbCIsIGZhbHNlKSAmJgorCQkJCQkJCShnZXQoY29udGVudCwgImNvbXBvbmVudCIpICE9IGNvbXBvbmVudCkpIHsKKwkJCQkJCXJlbW92ZUl0ZW1JbXBsKGNvbnRlbnQsICJjb21wb25lbnQiLCBjb21wb25lbnQpOworCQkJCQkJaW5zZXJ0SXRlbShjb250ZW50LCAiY29tcG9uZW50IiwgY29tcG9uZW50LCAwKTsKKwkJCQkJCXNldChjb21wb25lbnQsICI6cGFyZW50IiwgY29udGVudCk7CisJCQkJCQlyZXBhaW50KGNvbXBvbmVudCk7CisJCQkJCX0KKwkJCQl9CisJCQkJZWxzZSBpZiAoaWQgPT0gPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ01vdXNlRXZlbnQnIj5Nb3VzZUV2ZW50PC9lcnJvcj4uTU9VU0VfRFJBR0dFRCkgeworCQkJCQk8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnUmVjdGFuZ2xlJyI+UmVjdGFuZ2xlPC9lcnJvcj4gYm91bmRzID0gZ2V0UmVjdGFuZ2xlKGNvbXBvbmVudCwgImJvdW5kcyIpOworCQkJCQlpbnQgZHggPSBtb3VzZXggLSByZWZlcmVuY2V4OyBpbnQgZHkgPSBtb3VzZXkgLSByZWZlcmVuY2V5OworCQkJCQlyZXBhaW50PGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBtZXRob2QgJ3JlcGFpbnQoamF2YS5sYW5nLk9iamVjdCwgPywgPywgPywgPyknIj4oY29tcG9uZW50LAorCQkJCQkJYm91bmRzLjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICd4JyI+eDwvZXJyb3I+ICsgTWF0aC5taW4oMCwgZHgpLCBib3VuZHMuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ3knIj55PC9lcnJvcj4gKyBNYXRoLm1pbigwLCBkeSksCisJCQkJCQlib3VuZHMuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ3dpZHRoJyI+d2lkdGg8L2Vycm9yPiArIE1hdGguYWJzKGR4KSwgYm91bmRzLjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdoZWlnaHQnIj5oZWlnaHQ8L2Vycm9yPiArIE1hdGguYWJzKGR5KSk8L2Vycm9yPjsKKwkJCQkJYm91bmRzLjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICd4JyI+eDwvZXJyb3I+ICs9IGR4OyBib3VuZHMuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ3knIj55PC9lcnJvcj4gKz0gZHk7CisJCQkJCXJlZmVyZW5jZXggPSBtb3VzZXg7IHJlZmVyZW5jZXkgPSBtb3VzZXk7CisJCQkJfQorCQkJfQorCQl9CisJfQorCisJLyoqCisJICoKKwkgKi8KKwlwcml2YXRlIHZvaWQgc2V0UmVmZXJlbmNlKE9iamVjdCBjb21wb25lbnQsIGludCB4LCBpbnQgeSkgeworCQlyZWZlcmVuY2V4ID0geDsgcmVmZXJlbmNleSA9IHk7CisJCWZvciAoOyBjb21wb25lbnQgIT0gbnVsbDsgY29tcG9uZW50ID0gZ2V0UGFyZW50KGNvbXBvbmVudCkpIHsKKwkJCTxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdSZWN0YW5nbGUnIj5SZWN0YW5nbGU8L2Vycm9yPiBib3VuZHMgPSBnZXRSZWN0YW5nbGUoY29tcG9uZW50LCAiYm91bmRzIik7CisJCQlyZWZlcmVuY2V4ICs9IGJvdW5kcy48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAneCciPng8L2Vycm9yPjsgcmVmZXJlbmNleSArPSBib3VuZHMuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ3knIj55PC9lcnJvcj47CisJCX0KKwl9CisKKwkvKioKKwkgKgorCSAqLworCXByaXZhdGUgdm9pZCBzZWxlY3QoT2JqZWN0IGNvbXBvbmVudCwgT2JqZWN0IHJvdywgU3RyaW5nIGZpcnN0LAorCQkJU3RyaW5nIGNoaWxkLCBib29sZWFuIHNoaWZ0ZG93biwgYm9vbGVhbiBjb250cm9sZG93bikgeworCQlTdHJpbmcgc2VsZWN0aW9uID0gZ2V0U3RyaW5nKGNvbXBvbmVudCwgInNlbGVjdGlvbiIsICJzaW5nbGUiKTsKKwkJT2JqZWN0IGxlYWQgPSBudWxsOworCQlpZiAoc2hpZnRkb3duICYmIChzZWxlY3Rpb24gIT0gInNpbmdsZSIpICYmCisJCQkJKChsZWFkID0gZ2V0KGNvbXBvbmVudCwgImxlYWQiKSkgIT0gbnVsbCkpIHsKKwkJCWV4dGVuZChjb21wb25lbnQsIGxlYWQsIHJvdywgZmlyc3QsIGNoaWxkKTsKKwkJfQorCQllbHNlIHsKKwkJCWlmIChjb250cm9sZG93biAmJiAoc2VsZWN0aW9uID09ICJtdWx0aXBsZSIpKSB7CisJCQkJc2V0Qm9vbGVhbihyb3csICJzZWxlY3RlZCIsCisJCQkJCSFnZXRCb29sZWFuKHJvdywgInNlbGVjdGVkIiwgZmFsc2UpLCBmYWxzZSk7CisJCQkJcmVwYWludChjb21wb25lbnQsIG51bGwsIHJvdyk7CisJCQkJaW52b2tlKGNvbXBvbmVudCwgImFjdGlvbiIpOworCQkJCXNldChjb21wb25lbnQsICJhbmNob3IiLCBudWxsKTsKKwkJCX0KKwkJCWVsc2UgaWYgKGNvbnRyb2xkb3duICYmIGdldEJvb2xlYW4ocm93LCAic2VsZWN0ZWQiLCBmYWxzZSkpIHsKKwkJCQlmb3IgKE9iamVjdCBpdGVtID0gcm93OworCQkJCQkJaXRlbSAhPSBudWxsOyBpdGVtID0gZ2V0TmV4dEl0ZW0oY29tcG9uZW50LCBpdGVtLCBjaGlsZCkpIHsKKwkJCQkJaWYgKHNldEJvb2xlYW4oaXRlbSwgInNlbGVjdGVkIiwgZmFsc2UsIGZhbHNlKSkgeworCQkJCQkJcmVwYWludChjb21wb25lbnQsIG51bGwsIGl0ZW0pOworCQkJCQl9CisJCQkJfQorCQkJCWludm9rZShjb21wb25lbnQsICJhY3Rpb24iKTsKKwkJCQlzZXQoY29tcG9uZW50LCAiYW5jaG9yIiwgbnVsbCk7CisJCQl9CisJCQllbHNlIHsKKwkJCQlzZWxlY3RJdGVtKGNvbXBvbmVudCwgcm93LCBmaXJzdCwgY2hpbGQpOworCQkJfQorCQl9CisJCXNldExlYWQoY29tcG9uZW50LCAobGVhZCAhPSBudWxsKSA/IGxlYWQgOiBnZXQoY29tcG9uZW50LCAibGVhZCIpLCByb3cpOworCX0KKworCS8qKgorCSAqCisJICovCisJcHJpdmF0ZSBPYmplY3QgZ2V0TmV4dEl0ZW0oT2JqZWN0IGNvbXBvbmVudCwKKwkJCU9iamVjdCBpdGVtLCBTdHJpbmcgc3ViaXRlbSkgeworCQlpZiAoc3ViaXRlbSA9PSBudWxsKSB7IHJldHVybiBnZXQoaXRlbSwgIjpuZXh0Iik7IH0KKwkJT2JqZWN0IG5leHQgPSBnZXQoaXRlbSwgc3ViaXRlbSk7CisJCWlmICgobmV4dCA9PSBudWxsKSB8fCAhZ2V0Qm9vbGVhbihpdGVtLCAiZXhwYW5kZWQiLCB0cnVlKSkgeworCQkJd2hpbGUgKChpdGVtICE9IGNvbXBvbmVudCkgJiYgKChuZXh0ID0gZ2V0KGl0ZW0sICI6bmV4dCIpKSA9PSBudWxsKSkgeworCQkJCWl0ZW0gPSBnZXRQYXJlbnQoaXRlbSk7CisJCQl9CisJCX0KKwkJcmV0dXJuIG5leHQ7CisJfQorCisJLyoqCisJICoKKwkgKi8KKwlwcml2YXRlIHZvaWQgcHJvY2Vzc0ZpZWxkKGludCB4LCBpbnQgeSwgaW50IGNsaWNrY291bnQsCisJCQlpbnQgaWQsIE9iamVjdCBjb21wb25lbnQsCisJCQlPYmplY3QgcGFydCwgYm9vbGVhbiBtdWx0aWxpbmUsIGJvb2xlYW4gaGlkZGVuLCBpbnQgbGVmdCkgeworCQlpZiAoaWQgPT0gPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ01vdXNlRXZlbnQnIj5Nb3VzZUV2ZW50PC9lcnJvcj4uTU9VU0VfUFJFU1NFRCkgeworCQkJc2V0UmVmZXJlbmNlKGNvbXBvbmVudCwgMiArIGxlZnQsIDIpOworCQkJaW50IG14ID0geCAtIHJlZmVyZW5jZXg7CisJCQlpbnQgbXkgPSAwOworCQkJaWYgKCFtdWx0aWxpbmUpIHsKKwkJCQlteCArPSBnZXRJbnRlZ2VyKGNvbXBvbmVudCwgIm9mZnNldCIsIDApOworCQkJfSBlbHNlIHsKKwkJCQk8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnUmVjdGFuZ2xlJyI+UmVjdGFuZ2xlPC9lcnJvcj4gdmlldyA9IGdldFJlY3RhbmdsZShjb21wb25lbnQsICI6dmlldyIpOworCQkJCW14ICs9IHZpZXcuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ3gnIj54PC9lcnJvcj4gLSAxOworCQkJCW15ID0geSAtIHJlZmVyZW5jZXkgKyB2aWV3LjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICd5JyI+eTwvZXJyb3I+IC0gMTsKKwkJCX0KKwkJCWludCBjYXJldHN0YXJ0ID0gZ2V0Q2FyZXRMb2NhdGlvbihjb21wb25lbnQsIG14LCBteSwgaGlkZGVuKTsKKwkJCWludCBjYXJldGVuZCA9IGNhcmV0c3RhcnQ7CisJCQkvL2phdmE+CisJCQlpZiAoY2xpY2tjb3VudCA+IDEpIHsKKwkJCQlTdHJpbmcgdGV4dCA9IGdldFN0cmluZyhjb21wb25lbnQsICJ0ZXh0IiwgIiIpOworCQkJCXdoaWxlICgoY2FyZXRzdGFydCA+IDApICYmICgoY2xpY2tjb3VudCA9PSAyKSA/CisJCQkJCUNoYXJhY3Rlci5pc0xldHRlck9yRGlnaXQodGV4dC5jaGFyQXQoY2FyZXRzdGFydCAtIDEpKSA6CisJCQkJCQkodGV4dC5jaGFyQXQoY2FyZXRzdGFydCAtIDEpICE9ICdcbicpKSkgeyBjYXJldHN0YXJ0LS07IH0KKwkJCQl3aGlsZSAoKGNhcmV0ZW5kIDwgdGV4dC5sZW5ndGgoKSkgJiYgKChjbGlja2NvdW50ID09IDIpID8KKwkJCQkJQ2hhcmFjdGVyLmlzTGV0dGVyT3JEaWdpdCh0ZXh0LmNoYXJBdChjYXJldGVuZCkpIDoKKwkJCQkJCSh0ZXh0LmNoYXJBdChjYXJldGVuZCkgIT0gJ1xuJykpKSB7IGNhcmV0ZW5kKys7IH0KKwkJCX0KKwkJCS8vPGphdmEKKwkJCXNldEludGVnZXIoY29tcG9uZW50LCAic3RhcnQiLCBjYXJldHN0YXJ0LCAwKTsKKwkJCXNldEludGVnZXIoY29tcG9uZW50LCAiZW5kIiwgY2FyZXRlbmQsIDApOworCQkJc2V0Rm9jdXMoY29tcG9uZW50KTsKKwkJCXZhbGlkYXRlKGNvbXBvbmVudCk7IC8vIGNhcmV0IGNoZWNrIG9ubHkKKwkJfQorCQllbHNlIGlmIChpZCA9PSA8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnTW91c2VFdmVudCciPk1vdXNlRXZlbnQ8L2Vycm9yPi5NT1VTRV9EUkFHR0VEKSB7CisJCQlpbnQgbXggPSB4IC0gcmVmZXJlbmNleDsKKwkJCWludCBteSA9IDA7CisJCQlpZiAoIW11bHRpbGluZSkgeworCQkJCW14ICs9IGdldEludGVnZXIoY29tcG9uZW50LCAib2Zmc2V0IiwgMCk7CisJCQl9IGVsc2UgeworCQkJCTxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdSZWN0YW5nbGUnIj5SZWN0YW5nbGU8L2Vycm9yPiB2aWV3ID0gZ2V0UmVjdGFuZ2xlKGNvbXBvbmVudCwgIjp2aWV3Iik7CisJCQkJbXggKz0gdmlldy48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAneCciPng8L2Vycm9yPiAtIDE7CisJCQkJbXkgPSB5IC0gcmVmZXJlbmNleSArIHZpZXcuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ3knIj55PC9lcnJvcj4gLSAxOworCQkJfQorCQkJaW50IGRyYWdjYXJldCA9IGdldENhcmV0TG9jYXRpb24oY29tcG9uZW50LCBteCwgbXksIGhpZGRlbik7CisJCQlpZiAoZHJhZ2NhcmV0ICE9IGdldEludGVnZXIoY29tcG9uZW50LCAiZW5kIiwgMCkpIHsKKwkJCQlzZXRJbnRlZ2VyKGNvbXBvbmVudCwgImVuZCIsIGRyYWdjYXJldCwgMCk7CisJCQkJdmFsaWRhdGUoY29tcG9uZW50KTsgLy8gY2FyZXQgY2hlY2sgb25seQorCQkJfQorCQl9CisJCS8vamF2YT4KKwkJZWxzZSBpZiAoKGlkID09IDxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdNb3VzZUV2ZW50JyI+TW91c2VFdmVudDwvZXJyb3I+Lk1PVVNFX0VOVEVSRUQpICYmIChtb3VzZXByZXNzZWQgPT0gbnVsbCkpIHsKKwkJCXNldEN1cnNvcig8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnQ3Vyc29yJyI+Q3Vyc29yPC9lcnJvcj4uZ2V0UHJlZGVmaW5lZEN1cnNvcig8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnQ3Vyc29yJyI+Q3Vyc29yPC9lcnJvcj4uVEVYVF9DVVJTT1IpKTsKKwkJfQorCQllbHNlIGlmICgoKGlkID09IDxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdNb3VzZUV2ZW50JyI+TW91c2VFdmVudDwvZXJyb3I+Lk1PVVNFX0VYSVRFRCkgJiYgKG1vdXNlcHJlc3NlZCA9PSBudWxsKSkgfHwKKwkJCSgoaWQgPT0gPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ01vdXNlRXZlbnQnIj5Nb3VzZUV2ZW50PC9lcnJvcj4uTU9VU0VfUkVMRUFTRUQpICYmCisJCQkJKChtb3VzZWluc2lkZSAhPSBjb21wb25lbnQpIHx8IChpbnNpZGVwYXJ0ICE9IG51bGwpKSkpIHsKKwkJCXNldEN1cnNvcig8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnQ3Vyc29yJyI+Q3Vyc29yPC9lcnJvcj4uZ2V0UHJlZGVmaW5lZEN1cnNvcig8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnQ3Vyc29yJyI+Q3Vyc29yPC9lcnJvcj4uREVGQVVMVF9DVVJTT1IpKTsKKwkJfQorCQkvLzxqYXZhCisJfQorCisJLyoqCisJICoKKwkgKi8KKwlwcml2YXRlIGludCBnZXRDYXJldExvY2F0aW9uKE9iamVjdCBjb21wb25lbnQsIGludCB4LCBpbnQgeSwgYm9vbGVhbiBoaWRkZW4pIHsKKwkJU3RyaW5nIHRleHQgPSBnZXRTdHJpbmcoY29tcG9uZW50LCAidGV4dCIsICIiKTsKKwkJPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ0ZvbnRNZXRyaWNzJyI+Rm9udE1ldHJpY3M8L2Vycm9yPiBmbSA9IGdldEZvbnRNZXRyaWNzKGdldEZvbnQoKSk7CisJCWZvciAoaW50IGkgPSAwLCBqID0gMDsgdHJ1ZTsgaSA9IGogKyAxKSB7CisJCQlqID0gdGV4dC5pbmRleE9mKCdcbicsIGkpOworCQkJaWYgKChqID09IC0xKSB8fCB5IDwgZm0uPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBtZXRob2QgJ2dldEhlaWdodCgpJyI+Z2V0SGVpZ2h0PC9lcnJvcj4oKSkgeworCQkJCWlmIChqID09IC0xKSB7IGogPSB0ZXh0Lmxlbmd0aCgpOyB9CisJCQkJZm9yIChpbnQgayA9IGk7IGsgPCBqOyBrKyspIHsKKwkJCQkJaW50IGNoYXJ3aWR0aCA9IGZtLjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgbWV0aG9kICdjaGFyV2lkdGgoY2hhciknIj5jaGFyV2lkdGg8L2Vycm9yPihoaWRkZW4gPyAnKicgOiB0ZXh0LmNoYXJBdChrKSk7CisJCQkJCWlmICh4IDw9IChjaGFyd2lkdGggLyAyKSkgeworCQkJCQkJcmV0dXJuIGs7CisJCQkJCX0KKwkJCQkJeCAtPSBjaGFyd2lkdGg7CisJCQkJfQorCQkJCXJldHVybiBqOworCQkJfQorCQkJeSAtPSBmbS48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIG1ldGhvZCAnZ2V0SGVpZ2h0KCknIj5nZXRIZWlnaHQ8L2Vycm9yPigpOworCQl9CisJfQorCisJLyoqCisJICoKKwkgKi8KKwlwcml2YXRlIGJvb2xlYW4gcHJvY2Vzc1Njcm9sbChpbnQgeCwgaW50IHksCisJCQlpbnQgaWQsIE9iamVjdCBjb21wb25lbnQsIE9iamVjdCBwYXJ0KSB7CisJCWlmICgocGFydCA9PSAidXAiKSB8fCAocGFydCA9PSAiZG93biIpIHx8CisJCQkJKHBhcnQgPT0gImxlZnQiKSB8fCAocGFydCA9PSAicmlnaHQiKSkgeworCQkJaWYgKChpZCA9PSA8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnTW91c2VFdmVudCciPk1vdXNlRXZlbnQ8L2Vycm9yPi5NT1VTRV9FTlRFUkVEKSB8fAorCQkJCQkoaWQgPT0gPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ01vdXNlRXZlbnQnIj5Nb3VzZUV2ZW50PC9lcnJvcj4uTU9VU0VfRVhJVEVEKSB8fAorCQkJCQkoaWQgPT0gPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ01vdXNlRXZlbnQnIj5Nb3VzZUV2ZW50PC9lcnJvcj4uTU9VU0VfUFJFU1NFRCkgfHwKKwkJCQkJKGlkID09IDxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdNb3VzZUV2ZW50JyI+TW91c2VFdmVudDwvZXJyb3I+Lk1PVVNFX1JFTEVBU0VEKSkgeworCQkJCWlmIChpZCA9PSA8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnTW91c2VFdmVudCciPk1vdXNlRXZlbnQ8L2Vycm9yPi5NT1VTRV9QUkVTU0VEKSB7CisJCQkJCWlmIChwcm9jZXNzU2Nyb2xsKGNvbXBvbmVudCwgcGFydCkpIHsKKwkJCQkJCXNldFRpbWVyKDMwMEwpOyByZXR1cm4gdHJ1ZTsKKwkJCQkJfQorCQkJCX0KKwkJCQllbHNlIHsKKwkJCQkJaWYgKGlkID09IDxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdNb3VzZUV2ZW50JyI+TW91c2VFdmVudDwvZXJyb3I+Lk1PVVNFX1JFTEVBU0VEKSB7IHNldFRpbWVyKDBMKTsgfQorCQkJCQlyZXBhaW50KGNvbXBvbmVudCwgbnVsbCwgcGFydCk7CisJCQkJfQorCQkJfQorCQl9CisJCWVsc2UgaWYgKChwYXJ0ID09ICJ1cHRyYWNrIikgfHwgKHBhcnQgPT0gImRvd250cmFjayIpIHx8CisJCQkJKHBhcnQgPT0gImxlZnR0cmFjayIpIHx8IChwYXJ0ID09ICJyaWdodHRyYWNrIikpIHsKKwkJCWlmIChpZCA9PSA8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnTW91c2VFdmVudCciPk1vdXNlRXZlbnQ8L2Vycm9yPi5NT1VTRV9QUkVTU0VEKSB7CisJCQkJaWYgKHByb2Nlc3NTY3JvbGwoY29tcG9uZW50LCBwYXJ0KSkgeworCQkJCQlzZXRUaW1lcigzMDBMKTsKKwkJCQl9CisJCQl9CisJCQllbHNlIGlmIChpZCA9PSA8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnTW91c2VFdmVudCciPk1vdXNlRXZlbnQ8L2Vycm9yPi5NT1VTRV9SRUxFQVNFRCkgeworCQkJCXNldFRpbWVyKDBMKTsKKwkJCX0KKwkJfQorCQllbHNlIGlmICgocGFydCA9PSAidmtub2IiKSB8fCAocGFydCA9PSAiaGtub2IiKSkgeworCQkJaWYgKGlkID09IDxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdNb3VzZUV2ZW50JyI+TW91c2VFdmVudDwvZXJyb3I+Lk1PVVNFX1BSRVNTRUQpIHsKKwkJCQk8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnUmVjdGFuZ2xlJyI+UmVjdGFuZ2xlPC9lcnJvcj4gcG9ydCA9IGdldFJlY3RhbmdsZShjb21wb25lbnQsICI6cG9ydCIpOworCQkJCTxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdSZWN0YW5nbGUnIj5SZWN0YW5nbGU8L2Vycm9yPiB2aWV3ID0gZ2V0UmVjdGFuZ2xlKGNvbXBvbmVudCwgIjp2aWV3Iik7CisJCQkJaWYgKHBhcnQgPT0gImhrbm9iIikgeworCQkJCQlyZWZlcmVuY2V4ID0geCAtCisJCQkJCQl2aWV3LjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICd4JyI+eDwvZXJyb3I+ICogKHBvcnQuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ3dpZHRoJyI+d2lkdGg8L2Vycm9yPiAtIDIgKiBibG9jaykgLyB2aWV3LjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICd3aWR0aCciPndpZHRoPC9lcnJvcj47CisJCQkJfSBlbHNlIHsKKwkJCQkJcmVmZXJlbmNleSA9IHkgLQorCQkJCQkJdmlldy48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAneSciPnk8L2Vycm9yPiAqIChwb3J0LjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdoZWlnaHQnIj5oZWlnaHQ8L2Vycm9yPiAtIDIgKiBibG9jaykgLyB2aWV3LjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdoZWlnaHQnIj5oZWlnaHQ8L2Vycm9yPjsKKwkJCQl9CisJCQl9CisJCQllbHNlIGlmIChpZCA9PSA8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnTW91c2VFdmVudCciPk1vdXNlRXZlbnQ8L2Vycm9yPi5NT1VTRV9EUkFHR0VEKSB7CisJCQkJPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ1JlY3RhbmdsZSciPlJlY3RhbmdsZTwvZXJyb3I+IHBvcnQgPSBnZXRSZWN0YW5nbGUoY29tcG9uZW50LCAiOnBvcnQiKTsKKwkJCQk8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnUmVjdGFuZ2xlJyI+UmVjdGFuZ2xlPC9lcnJvcj4gdmlldyA9IGdldFJlY3RhbmdsZShjb21wb25lbnQsICI6dmlldyIpOworCQkJCWlmIChwYXJ0ID09ICJoa25vYiIpIHsKKwkJCQkJaW50IHZpZXd4ID0gKHggLSByZWZlcmVuY2V4KSAqCisJCQkJCQl2aWV3LjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICd3aWR0aCciPndpZHRoPC9lcnJvcj4gLyAocG9ydC48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnd2lkdGgnIj53aWR0aDwvZXJyb3I+IC0gMiAqIGJsb2NrKTsKKwkJCQkJdmlld3ggPSBNYXRoLm1heDxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgbWV0aG9kICdtYXgoaW50LCA/KSciPigwLCBNYXRoLm1pbjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgbWV0aG9kICdtaW4oaW50LCA/KSciPih2aWV3eCwgdmlldy48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnd2lkdGgnIj53aWR0aDwvZXJyb3I+IC0gcG9ydC48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnd2lkdGgnIj53aWR0aDwvZXJyb3I+ICsgMik8L2Vycm9yPik8L2Vycm9yPjsKKwkJCQkJaWYgKHZpZXcuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ3gnIj54PC9lcnJvcj4gIT0gdmlld3gpIHsKKwkJCQkJCXZpZXcuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ3gnIj54PC9lcnJvcj4gPSB2aWV3eDsKKwkJCQkJCXJlcGFpbnQoY29tcG9uZW50LCBudWxsLCAiaG9yaXpvbnRhbCIpOworCQkJCQl9CisJCQkJfSBlbHNlIHsKKwkJCQkJaW50IHZpZXd5ID0gKHkgLSByZWZlcmVuY2V5KSAqCisJCQkJCQl2aWV3LjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdoZWlnaHQnIj5oZWlnaHQ8L2Vycm9yPiAvIChwb3J0LjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdoZWlnaHQnIj5oZWlnaHQ8L2Vycm9yPiAtIDIgKiBibG9jayk7CisJCQkJCXZpZXd5ID0gTWF0aC5tYXg8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIG1ldGhvZCAnbWF4KGludCwgPyknIj4oMCwgTWF0aC5taW48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIG1ldGhvZCAnbWluKGludCwgPyknIj4odmlld3ksIHZpZXcuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ2hlaWdodCciPmhlaWdodDwvZXJyb3I+IC0gcG9ydC48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnaGVpZ2h0JyI+aGVpZ2h0PC9lcnJvcj4gKyAyKTwvZXJyb3I+KTwvZXJyb3I+OworCQkJCQlpZiAodmlldy48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAneSciPnk8L2Vycm9yPiAhPSB2aWV3eSkgeworCQkJCQkJdmlldy48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAneSciPnk8L2Vycm9yPiA9IHZpZXd5OworCQkJCQkJcmVwYWludChjb21wb25lbnQsIG51bGwsICJ2ZXJ0aWNhbCIpOworCQkJCQl9CisJCQkJfQorCQkJfQorCQl9CisJCWVsc2UgaWYgKHBhcnQgPT0gImNvcm5lciIpIHsKKwkJCQlwYXJ0ID0gImNvcm5lciI7IC8vIGNvbXBpbGVyIGJ1ZworCQl9CisJCWVsc2UgeworCQkJaWYgKGlkID09IDxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdNb3VzZUV2ZW50JyI+TW91c2VFdmVudDwvZXJyb3I+Lk1PVVNFX1BSRVNTRUQpIHsKKwkJCQk8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnUmVjdGFuZ2xlJyI+UmVjdGFuZ2xlPC9lcnJvcj4gcG9ydCA9IGdldFJlY3RhbmdsZShjb21wb25lbnQsICI6cG9ydCIpOworCQkJCXNldFJlZmVyZW5jZShjb21wb25lbnQsIHBvcnQuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ3gnIj54PC9lcnJvcj4gKyAxLCBwb3J0LjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICd5JyI+eTwvZXJyb3I+ICsgMSk7CisJCQl9CisJCQlyZXR1cm4gZmFsc2U7CisJCX0KKwkJcmV0dXJuIHRydWU7CisJfQorCisJLyoqCisJICoKKwkgKi8KKwlwcml2YXRlIGJvb2xlYW4gcHJvY2Vzc1Njcm9sbChPYmplY3QgY29tcG9uZW50LCBPYmplY3QgcGFydCkgeworCQk8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnUmVjdGFuZ2xlJyI+UmVjdGFuZ2xlPC9lcnJvcj4gdmlldyA9IGdldFJlY3RhbmdsZShjb21wb25lbnQsICI6dmlldyIpOworCQk8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnUmVjdGFuZ2xlJyI+UmVjdGFuZ2xlPC9lcnJvcj4gcG9ydCA9ICgocGFydCA9PSAibGVmdCIpIHx8IChwYXJ0ID09ICJ1cCIpKSA/IG51bGwgOgorCQkJZ2V0UmVjdGFuZ2xlKGNvbXBvbmVudCwgIjpwb3J0Iik7CisJCWludCBkeCA9IDA7IGludCBkeSA9IDA7CisJCWlmIChwYXJ0ID09ICJsZWZ0IikgeyBkeCA9IC0xMDsgfQorCQllbHNlIGlmIChwYXJ0ID09ICJsZWZ0dHJhY2siKSB7IGR4ID0gLXBvcnQuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ3dpZHRoJyI+d2lkdGg8L2Vycm9yPjsgfQorCQllbHNlIGlmIChwYXJ0ID09ICJyaWdodCIpIHsgZHggPSAxMDsgfQorCQllbHNlIGlmIChwYXJ0ID09ICJyaWdodHRyYWNrIikgeyBkeCA9IHBvcnQuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ3dpZHRoJyI+d2lkdGg8L2Vycm9yPjsgfQorCQllbHNlIGlmIChwYXJ0ID09ICJ1cCIpIHsgZHkgPSAtMTA7IH0KKwkJZWxzZSBpZiAocGFydCA9PSAidXB0cmFjayIpIHsgZHkgPSAtcG9ydC48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnaGVpZ2h0JyI+aGVpZ2h0PC9lcnJvcj47IH0KKwkJZWxzZSBpZiAocGFydCA9PSAiZG93biIpIHsgZHkgPSAxMDsgfQorCQllbHNlIGlmIChwYXJ0ID09ICJkb3dudHJhY2siKSB7IGR5ID0gcG9ydC48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnaGVpZ2h0JyI+aGVpZ2h0PC9lcnJvcj47IH0KKwkJaWYgKGR4ICE9IDApIHsKKwkJCWR4ID0gKGR4IDwgMCkgPyBNYXRoLm1heDxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgbWV0aG9kICdtYXgoPywgaW50KSciPigtdmlldy48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAneCciPng8L2Vycm9yPiwgZHgpPC9lcnJvcj4gOgorCQkJCU1hdGgubWluPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBtZXRob2QgJ21pbihpbnQsID8pJyI+KGR4LCB2aWV3LjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICd3aWR0aCciPndpZHRoPC9lcnJvcj4gLSBwb3J0LjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICd3aWR0aCciPndpZHRoPC9lcnJvcj4gKyAyIC0gdmlldy48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAneCciPng8L2Vycm9yPik8L2Vycm9yPjsKKwkJfQorCQllbHNlIGlmIChkeSAhPSAwKSB7CisJCQlkeSA9IChkeSA8IDApID8gTWF0aC5tYXg8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIG1ldGhvZCAnbWF4KD8sIGludCknIj4oLXZpZXcuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ3knIj55PC9lcnJvcj4sIGR5KTwvZXJyb3I+IDoKKwkJCQlNYXRoLm1pbjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgbWV0aG9kICdtaW4oaW50LCA/KSciPihkeSwgdmlldy48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnaGVpZ2h0JyI+aGVpZ2h0PC9lcnJvcj4gLSBwb3J0LjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdoZWlnaHQnIj5oZWlnaHQ8L2Vycm9yPiArIDIgLSB2aWV3LjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICd5JyI+eTwvZXJyb3I+KTwvZXJyb3I+OworCQl9CisJCWVsc2UgcmV0dXJuIGZhbHNlOworCQl2aWV3LjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICd4JyI+eDwvZXJyb3I+ICs9IGR4OyB2aWV3LjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICd5JyI+eTwvZXJyb3I+ICs9IGR5OworCQlyZXBhaW50KGNvbXBvbmVudCwgbnVsbCwgKGR4ICE9IDApID8gImhvcml6b250YWwiIDogInZlcnRpY2FsIik7CisJCXJldHVybiAoKChwYXJ0ID09ICJsZWZ0IikgfHwgKHBhcnQgPT0gImxlZnR0cmFjayIpKSAmJiAodmlldy48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAneCciPng8L2Vycm9yPiA+IDApKSB8fAorCQkJKCgocGFydCA9PSAicmlnaHQiKSB8fCAocGFydCA9PSAicmlnaHR0cmFjayIpKSAmJgorCQkJCSh2aWV3LjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICd4JyI+eDwvZXJyb3I+IDwgdmlldy48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnd2lkdGgnIj53aWR0aDwvZXJyb3I+IC0gcG9ydC48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnd2lkdGgnIj53aWR0aDwvZXJyb3I+ICsgMikpIHx8CisJCQkoKChwYXJ0ID09ICJ1cCIpIHx8IChwYXJ0ID09ICJ1cHRyYWNrIikpICYmICh2aWV3LjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICd5JyI+eTwvZXJyb3I+ID4gMCkpIHx8CisJCQkoKChwYXJ0ID09ICJkb3duIikgfHwgKHBhcnQgPT0gImRvd250cmFjayIpKSAmJgorCQkJCSh2aWV3LjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICd5JyI+eTwvZXJyb3I+IDwgdmlldy48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnaGVpZ2h0JyI+aGVpZ2h0PC9lcnJvcj4gLSBwb3J0LjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdoZWlnaHQnIj5oZWlnaHQ8L2Vycm9yPiArIDIpKTsKKwl9CisKKwkvKioKKwkgKgorCSAqLworCXByaXZhdGUgYm9vbGVhbiBwcm9jZXNzU3BpbihPYmplY3QgY29tcG9uZW50LCBPYmplY3QgcGFydCkgeworCQlTdHJpbmcgdGV4dCA9IGdldFN0cmluZyhjb21wb25lbnQsICJ0ZXh0IiwgbnVsbCk7CisJCWlmICh0ZXh0ICE9IG51bGwpIHsKKwkJCXRyeSB7CisJCQkJU3RyaW5nIHZhbHVlID0gU3RyaW5nLnZhbHVlT2YoCisJCQkJCUludGVnZXIucGFyc2VJbnQodGV4dCkgKyAoKHBhcnQgPT0gInVwIikgPyAxIDogLTEpKTsKKwkJCQlzZXRTdHJpbmcoY29tcG9uZW50LCAidGV4dCIsIHZhbHVlLCBudWxsKTsKKwkJCQlzZXRJbnRlZ2VyKGNvbXBvbmVudCwgInN0YXJ0IiwgdmFsdWUubGVuZ3RoKCksIDApOworCQkJCXNldEludGVnZXIoY29tcG9uZW50LCAiZW5kIiwgMCwgMCk7CisJCQkJcmVwYWludChjb21wb25lbnQsICJzcGluYm94IiwgbnVsbCk7CisJCQkJaW52b2tlKGNvbXBvbmVudCwgImFjdGlvbiIpOworCQkJCXJldHVybiB0cnVlOworCQkJfSBjYXRjaCAoTnVtYmVyRm9ybWF0RXhjZXB0aW9uIG5mZSkge30KKwkJfQorCQlyZXR1cm4gZmFsc2U7CisJfQorCisJLy9qYXZhPgorCS8qcHVibGljIHZvaWQgc2V0RXZlbnRIYW5kbGVyKE9iamVjdCBjb21wb25lbnQsIE9iamVjdCBldmVudGhhbmRsZXIpIHsKKwkJc2V0KGNvbXBvbmVudCwgIjpoYW5kbGVyIiwgZXZlbnRoYW5kbGVyKTsKKwl9Ki8KKworCS8qKgorCSAqCisJICovCisJcHJpdmF0ZSB2b2lkIGludm9rZShPYmplY3QgY29tcG9uZW50LCBTdHJpbmcgZXZlbnQpIHsKKwkJPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ01ldGhvZCciPk1ldGhvZDwvZXJyb3I+IG1ldGhvZCA9ICg8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnTWV0aG9kJyI+TWV0aG9kPC9lcnJvcj4pIGdldChjb21wb25lbnQsIGV2ZW50KTsKKwkJaWYgKG1ldGhvZCAhPSBudWxsKSB7CisJCQl0cnkgeworCQkJCW1ldGhvZC48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIG1ldGhvZCAnaW52b2tlKFRoaW5sZXQsIG51bGwpJyI+aW52b2tlPC9lcnJvcj4odGhpcywgbnVsbCk7CisJCQl9IGNhdGNoICg8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnSW52b2NhdGlvblRhcmdldEV4Y2VwdGlvbiciPkludm9jYXRpb25UYXJnZXRFeGNlcHRpb248L2Vycm9yPiBpdGUpIHsKKwkJCQlpdGUuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBtZXRob2QgJ2dldFRhcmdldEV4Y2VwdGlvbigpJyI+Z2V0VGFyZ2V0RXhjZXB0aW9uPC9lcnJvcj4oKS5wcmludFN0YWNrVHJhY2UoKTsKKwkJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBleGMpIHsKKwkJCQlleGMucHJpbnRTdGFja1RyYWNlKCk7CisJCQl9CisJCX0KKwl9CisJLy88amF2YQorCS8qbWlkcAorCXByaXZhdGUgdm9pZCBpbnZva2UoT2JqZWN0IGNvbXBvbmVudCwgU3RyaW5nIGV2ZW50KSB7CisJCQlTdHJpbmcgYWN0aW9uID0gKFN0cmluZykgZ2V0KGNvbXBvbmVudCwgZXZlbnQpOworCQkJaWYgKGFjdGlvbiAhPSBudWxsKSB7IGhhbmRsZShjb21wb25lbnQsIGFjdGlvbik7IH0KKwl9CisJcHJvdGVjdGVkIHZvaWQgaGFuZGxlKE9iamVjdCBzb3VyY2UsIFN0cmluZyBhY3Rpb24pIHsKKwl9CisJbWlkcCovCisKKwkvKioKKwkgKgorCSAqLworCXByaXZhdGUgYm9vbGVhbiBmaW5kQ29tcG9uZW50KE9iamVjdCBjb21wb25lbnQsIGludCB4LCBpbnQgeSkgeworCQlpZiAoY29tcG9uZW50ID09IGNvbnRlbnQpIHsKKwkJCW1vdXNlaW5zaWRlID0gaW5zaWRlcGFydCA9IG51bGw7CisJCQltb3VzZXggPSB4OyBtb3VzZXkgPSB5OworCQl9CisJCWlmICghZ2V0Qm9vbGVhbihjb21wb25lbnQsICJ2aXNpYmxlIiwgdHJ1ZSkpIHsgcmV0dXJuIGZhbHNlOyB9CisJCTxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdSZWN0YW5nbGUnIj5SZWN0YW5nbGU8L2Vycm9yPiBib3VuZHMgPSBnZXRSZWN0YW5nbGUoY29tcG9uZW50LCAiYm91bmRzIik7CisJCWlmICgoYm91bmRzID09IG51bGwpIHx8ICEoYm91bmRzLjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgbWV0aG9kICdjb250YWlucyhpbnQsIGludCknIj5jb250YWluczwvZXJyb3I+KHgsIHkpKSkgeyByZXR1cm4gZmFsc2U7IH0gLy9qYXZhCisJCS8vbWlkcCBpZiAoKGJvdW5kcyA9PSBudWxsKSB8fCAoeCA8IGJvdW5kcy54KSB8fCAoeCAtIGJvdW5kcy54ID49IGJvdW5kcy53aWR0aCkgfHwKKwkJLy9taWRwIAkoeSA8IGJvdW5kcy55KSB8fCAoeSAtIGJvdW5kcy55ID49IGJvdW5kcy5oZWlnaHQpKSB7IHJldHVybiBmYWxzZTsgfQorCQltb3VzZWluc2lkZSA9IGNvbXBvbmVudDsKKwkJeCAtPSBib3VuZHMuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ3gnIj54PC9lcnJvcj47IHkgLT0gYm91bmRzLjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICd5JyI+eTwvZXJyb3I+OworCQlTdHJpbmcgY2xhc3NuYW1lID0gZ2V0Q2xhc3MoY29tcG9uZW50KTsKKworCQlpZiAoImNvbWJvYm94IiA9PSBjbGFzc25hbWUpIHsKKwkJCWlmIChnZXRCb29sZWFuKGNvbXBvbmVudCwgImVkaXRhYmxlIiwgdHJ1ZSkgJiYgKHggPD0gYm91bmRzLjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICd3aWR0aCciPndpZHRoPC9lcnJvcj4gLSBibG9jaykpIHsKKwkJCQk8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnSW1hZ2UnIj5JbWFnZTwvZXJyb3I+IGljb24gPSBnZXRJY29uKGNvbXBvbmVudCwgImljb24iLCBudWxsKTsKKwkJCQlpbnNpZGVwYXJ0ID0gKChpY29uICE9IG51bGwpICYmICh4IDw9IDIgKyBpY29uLjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgbWV0aG9kICdnZXRXaWR0aChUaGlubGV0KSciPmdldFdpZHRoPC9lcnJvcj4odGhpcykpKSA/CisJCQkJCSJpY29uIiA6IG51bGw7CisJCQl9IGVsc2UgeworCQkJCWluc2lkZXBhcnQgPSAiZG93biI7CisJCQl9CisJCX0KKwkJZWxzZSBpZiAoImNvbWJvbGlzdCIgPT0gY2xhc3NuYW1lKSB7CisJCQlpZiAoIWZpbmRTY3JvbGxQYW5lKGNvbXBvbmVudCwgeCwgeSwgYm91bmRzKSkgeworCQkJCXkgKz0gZ2V0UmVjdGFuZ2xlKGNvbXBvbmVudCwgIjp2aWV3IikuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ3knIj55PC9lcnJvcj47CisJCQkJZm9yIChPYmplY3QgY2hvaWNlID0gZ2V0KGdldChjb21wb25lbnQsICJjb21ib2JveCIpLCAiY2hvaWNlIik7CisJCQkJCQljaG9pY2UgIT0gbnVsbDsgY2hvaWNlID0gZ2V0KGNob2ljZSwgIjpuZXh0IikpIHsKKwkJCQkJPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ1JlY3RhbmdsZSciPlJlY3RhbmdsZTwvZXJyb3I+IHIgPSBnZXRSZWN0YW5nbGUoY2hvaWNlLCAiYm91bmRzIik7CisJCQkJCWlmICgoeSA+PSByLjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICd5JyI+eTwvZXJyb3I+KSAmJiAoeSA8IHIuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ3knIj55PC9lcnJvcj4gKyByLjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdoZWlnaHQnIj5oZWlnaHQ8L2Vycm9yPikpIHsKKwkJCQkJCWluc2lkZXBhcnQgPSBjaG9pY2U7IGJyZWFrOworCQkJCQl9CisJCQkJfQorCQkJfQorCQl9CisJCWVsc2UgaWYgKCJ0ZXh0YXJlYSIgPT0gY2xhc3NuYW1lKSB7CisJCQlmaW5kU2Nyb2xsUGFuZShjb21wb25lbnQsIHgsIHksIGJvdW5kcyk7CisJCX0KKwkJZWxzZSBpZiAoInRhYmJlZHBhbmUiID09IGNsYXNzbmFtZSkgeworCQkJT2JqZWN0IHRhYmNvbnRlbnQgPSBnZXRJdGVtSW1wbChjb21wb25lbnQsCisJCQkJImNvbXBvbmVudCIsIGdldEludGVnZXIoY29tcG9uZW50LCAic2VsZWN0ZWQiLCAwKSk7CisJCQlpZiAoKHRhYmNvbnRlbnQgPT0gbnVsbCkgfHwgIWZpbmRDb21wb25lbnQodGFiY29udGVudCwgeCwgeSkpIHsKKwkJCQlmb3IgKE9iamVjdCBjb21wID0gZ2V0KGNvbXBvbmVudCwgInRhYiIpOworCQkJCQkJY29tcCAhPSBudWxsOyBjb21wID0gZ2V0KGNvbXAsICI6bmV4dCIpKSB7CisJCQkJCTxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdSZWN0YW5nbGUnIj5SZWN0YW5nbGU8L2Vycm9yPiByID0gZ2V0UmVjdGFuZ2xlKGNvbXAsICJib3VuZHMiKTsKKwkJCQkJaWYgKHIuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBtZXRob2QgJ2NvbnRhaW5zKGludCwgaW50KSciPmNvbnRhaW5zPC9lcnJvcj4oeCwgeSkpIHsgLy9qYXZhCisJCQkJCS8vbWlkcCBpZiAoKHggPj0gci54KSAmJiAoeCAtIHIueCA8IHIud2lkdGgpICYmICh5ID49IHIueSkgJiYgKHkgLSByLnkgPCByLmhlaWdodCkpIHsKKwkJCQkJCWluc2lkZXBhcnQgPSBjb21wOyBicmVhazsKKwkJCQkJfQorCQkJCX0KKwkJCX0KKwkJfQorCQllbHNlIGlmICgoInBhbmVsIiA9PSBjbGFzc25hbWUpIHx8ICgiZGVza3RvcCIgPT0gY2xhc3NuYW1lKSB8fAorCQkJCSgiZGlhbG9nIiA9PSBjbGFzc25hbWUpKSB7CisJCQlpZiAoKCJkaWFsb2ciID09IGNsYXNzbmFtZSkgJiYKKwkJCQkJKHkgPCA0ICsgZ2V0SW50ZWdlcihjb21wb25lbnQsICJ0aXRsZWhlaWdodCIsIDApKSkgeworCQkJCWluc2lkZXBhcnQgPSAiaGVhZGVyIjsKKwkJCX0gZWxzZSB7CisJCQkJZm9yIChPYmplY3QgY29tcCA9IGdldChjb21wb25lbnQsICJjb21wb25lbnQiKTsKKwkJCQkJCWNvbXAgIT0gbnVsbDsgY29tcCA9IGdldChjb21wLCAiOm5leHQiKSkgeworCQkJCQlpZiAoZmluZENvbXBvbmVudChjb21wLCB4LCB5KSkgeyBicmVhazsgfQorCQkJCQlpZiAoKCJkZXNrdG9wIiA9PSBjbGFzc25hbWUpICYmCisJCQkJCQkJZ2V0Qm9vbGVhbihjb21wLCAibW9kYWwiLCBmYWxzZSkpIHsgYnJlYWs7IH0gLy8gJiYgZGlhbG9nCisJCQkJfQorCQkJfQorCQl9CisJCWVsc2UgaWYgKCJzcGluYm94IiA9PSBjbGFzc25hbWUpIHsKKwkJCWluc2lkZXBhcnQgPSAoeCA8PSBib3VuZHMuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ3dpZHRoJyI+d2lkdGg8L2Vycm9yPiAtIGJsb2NrKSA/IG51bGwgOgorCQkJCSgoeSA8PSBib3VuZHMuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ2hlaWdodCciPmhlaWdodDwvZXJyb3I+IC8gMikgPyAidXAiIDogImRvd24iKTsKKwkJfQorCQllbHNlIGlmICgic3BsaXRwYW5lIiA9PSBjbGFzc25hbWUpIHsKKwkJCU9iamVjdCBjb21wMSA9IGdldChjb21wb25lbnQsICJjb21wb25lbnQiKTsKKwkJCWlmIChjb21wMSAhPSBudWxsKSB7CisJCQkJaWYgKCFmaW5kQ29tcG9uZW50KGNvbXAxLCB4LCB5KSkgeworCQkJCQlPYmplY3QgY29tcDIgPSBnZXQoY29tcDEsICI6bmV4dCIpOworCQkJCQlpZiAoY29tcDIgIT0gbnVsbCkgeworCQkJCQkJZmluZENvbXBvbmVudChjb21wMiwgeCwgeSk7CisJCQkJCX0KKwkJCQl9CisJCQl9CisJCX0KKwkJZWxzZSBpZiAoImxpc3QiID09IGNsYXNzbmFtZSkgeworCQkJZmluZFNjcm9sbFBhbmUoY29tcG9uZW50LCB4LCB5LCBib3VuZHMpOworCQl9CisJCWVsc2UgaWYgKCJ0YWJsZSIgPT0gY2xhc3NuYW1lKSB7CisJCQlmaW5kU2Nyb2xsUGFuZShjb21wb25lbnQsIHgsIHksIGJvdW5kcyk7CisJCX0KKwkJZWxzZSBpZiAoInRyZWUiID09IGNsYXNzbmFtZSkgeworCQkJZmluZFNjcm9sbFBhbmUoY29tcG9uZW50LCB4LCB5LCBib3VuZHMpOworCQl9CisJCWVsc2UgaWYgKCJtZW51YmFyIiA9PSBjbGFzc25hbWUpIHsKKwkJCWZvciAoT2JqZWN0IG1lbnUgPSBnZXQoY29tcG9uZW50LCAibWVudSIpOworCQkJCQltZW51ICE9IG51bGw7IG1lbnUgPSBnZXQobWVudSwgIjpuZXh0IikpIHsKKwkJCQk8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnUmVjdGFuZ2xlJyI+UmVjdGFuZ2xlPC9lcnJvcj4gciA9IGdldFJlY3RhbmdsZShtZW51LCAiYm91bmRzIik7CisJCQkJaWYgKCh4ID49IHIuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ3gnIj54PC9lcnJvcj4pICYmICh4IDwgci48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAneCciPng8L2Vycm9yPiArIHIuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ3dpZHRoJyI+d2lkdGg8L2Vycm9yPikpIHsKKwkJCQkJaW5zaWRlcGFydCA9IG1lbnU7IGJyZWFrOworCQkJCX0KKwkJCX0KKwkJfQorCQllbHNlIGlmICgicG9wdXBtZW51IiA9PSBjbGFzc25hbWUpIHsKKwkJCWZvciAoT2JqZWN0IG1lbnUgPSBnZXQoZ2V0KGNvbXBvbmVudCwgIm1lbnUiKSwgIm1lbnUiKTsKKwkJCQkJbWVudSAhPSBudWxsOyBtZW51ID0gZ2V0KG1lbnUsICI6bmV4dCIpKSB7CisJCQkJPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ1JlY3RhbmdsZSciPlJlY3RhbmdsZTwvZXJyb3I+IHIgPSBnZXRSZWN0YW5nbGUobWVudSwgImJvdW5kcyIpOworCQkJCWlmICgoeSA+PSByLjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICd5JyI+eTwvZXJyb3I+KSAmJiAoeSA8IHIuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ3knIj55PC9lcnJvcj4gKyByLjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdoZWlnaHQnIj5oZWlnaHQ8L2Vycm9yPikpIHsKKwkJCQkJaW5zaWRlcGFydCA9IG1lbnU7IGJyZWFrOworCQkJCX0KKwkJCX0KKwkJfQorCQlyZXR1cm4gdHJ1ZTsKKwl9CisKKwkvKioKKwkgKgorCSAqLworCXByaXZhdGUgYm9vbGVhbiBmaW5kU2Nyb2xsUGFuZShPYmplY3QgY29tcG9uZW50LAorCQkJaW50IHgsIGludCB5LCA8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnUmVjdGFuZ2xlJyI+UmVjdGFuZ2xlPC9lcnJvcj4gYm91bmRzKSB7CisJCTxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdSZWN0YW5nbGUnIj5SZWN0YW5nbGU8L2Vycm9yPiBwb3J0ID0gZ2V0UmVjdGFuZ2xlKGNvbXBvbmVudCwgIjpwb3J0Iik7CisJCWlmICgoeCA8IHBvcnQuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ3gnIj54PC9lcnJvcj4pIHx8ICh5IDwgcG9ydC48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAneSciPnk8L2Vycm9yPikgfHwKKwkJCQkoKHggPj0gcG9ydC48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAneCciPng8L2Vycm9yPiArIHBvcnQuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ3dpZHRoJyI+d2lkdGg8L2Vycm9yPikgJiYgKHkgPj0gcG9ydC48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAneSciPnk8L2Vycm9yPiArIHBvcnQuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ2hlaWdodCciPmhlaWdodDwvZXJyb3I+KSkpIHsKKwkJCWluc2lkZXBhcnQgPSAiY29ybmVyIjsKKwkJfQorCQllbHNlIGlmICgoeCA+PSBwb3J0LjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICd4JyI+eDwvZXJyb3I+ICsgcG9ydC48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnd2lkdGgnIj53aWR0aDwvZXJyb3I+KSB8fCAoeSA+PSBwb3J0LjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICd5JyI+eTwvZXJyb3I+ICsgcG9ydC48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnaGVpZ2h0JyI+aGVpZ2h0PC9lcnJvcj4pKSB7CisJCQlib29sZWFuIGhvcml6b250YWwgPSAoeSA+PSBwb3J0LjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICd5JyI+eTwvZXJyb3I+ICsgcG9ydC48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnaGVpZ2h0JyI+aGVpZ2h0PC9lcnJvcj4pOworCQkJaW50IHAgPSBob3Jpem9udGFsID8gKHggLSBwb3J0LjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICd4JyI+eDwvZXJyb3I+KSA6ICh5IC0gcG9ydC48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAneSciPnk8L2Vycm9yPik7CisJCQlpbnQgcG9ydHNpemUgPSBob3Jpem9udGFsID8gcG9ydC48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnd2lkdGgnIj53aWR0aDwvZXJyb3I+IDogcG9ydC48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnaGVpZ2h0JyI+aGVpZ2h0PC9lcnJvcj47CisJCQlpbnQgYnV0dG9uID0gTWF0aC5taW4oYmxvY2ssIHBvcnRzaXplIC8gMik7CisJCQlpZiAocCA8IGJ1dHRvbikgeworCQkJCWluc2lkZXBhcnQgPSBob3Jpem9udGFsID8gImxlZnQiIDogInVwIjsKKwkJCX0KKwkJCWVsc2UgaWYgKHAgPj0gcG9ydHNpemUgLSBidXR0b24pIHsKKwkJCQlpbnNpZGVwYXJ0ID0gaG9yaXpvbnRhbCA/ICJyaWdodCIgOiAiZG93biI7CisJCQl9CisJCQllbHNlIHsKKwkJCQk8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnUmVjdGFuZ2xlJyI+UmVjdGFuZ2xlPC9lcnJvcj4gdmlldyA9IGdldFJlY3RhbmdsZShjb21wb25lbnQsICI6dmlldyIpOworCQkJCWludCB2aWV3cCA9IGhvcml6b250YWwgPyB2aWV3LjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICd4JyI+eDwvZXJyb3I+IDogdmlldy48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAneSciPnk8L2Vycm9yPjsKKwkJCQlpbnQgdmlld3NpemUgPSBob3Jpem9udGFsID8gdmlldy48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnd2lkdGgnIj53aWR0aDwvZXJyb3I+IDogdmlldy48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnaGVpZ2h0JyI+aGVpZ2h0PC9lcnJvcj47CisJCQkJaW50IHRyYWNrID0gcG9ydHNpemUgLSAoMiAqIGJ1dHRvbik7CisJCQkJaW50IGtub2IgPSBNYXRoLm1pbih0cmFjaywKKwkJCQkJTWF0aC5tYXgodHJhY2sgKiAocG9ydHNpemUgLSAyKSAvIHZpZXdzaXplLCA2KSk7CisJCQkJaW50IGRlY3JlYXNlID0gdmlld3AgKiAodHJhY2sgLSBrbm9iKSAvICh2aWV3c2l6ZSAtIHBvcnRzaXplICsgMik7CisJCQkJaWYgKHAgPCBidXR0b24gKyBkZWNyZWFzZSkgeworCQkJCQlpbnNpZGVwYXJ0ID0gaG9yaXpvbnRhbCA/ICJsZWZ0dHJhY2siIDogInVwdHJhY2siOworCQkJCX0KKwkJCQllbHNlIGlmIChwIDwgYnV0dG9uICsgZGVjcmVhc2UgKyBrbm9iKSB7CisJCQkJCWluc2lkZXBhcnQgPSBob3Jpem9udGFsID8gImhrbm9iIiA6ICJ2a25vYiI7CisJCQkJfQorCQkJCWVsc2UgeworCQkJCQlpbnNpZGVwYXJ0ID0gaG9yaXpvbnRhbCA/ICJyaWdodHRyYWNrIiA6ICJkb3dudHJhY2siOworCQkJCX0KKwkJCX0KKwkJfQorCQllbHNlIHsgcmV0dXJuIGZhbHNlOyB9CisJCXJldHVybiB0cnVlOworCX0KKworCS8qKgorCSAqCisJICovCisJcHJpdmF0ZSB2b2lkIHJlcGFpbnQoT2JqZWN0IGNvbXBvbmVudCwgT2JqZWN0IGNsYXNzbmFtZSwgT2JqZWN0IHBhcnQpIHsKKwkJPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ1JlY3RhbmdsZSciPlJlY3RhbmdsZTwvZXJyb3I+IGIgPSBnZXRSZWN0YW5nbGUoY29tcG9uZW50LCAiYm91bmRzIik7CisJCWlmICgoY2xhc3NuYW1lID09ICJjb21ib2JveCIpIHx8IChjbGFzc25hbWUgPT0gInNwaW5ib3giKSkgeworCQkJYm9vbGVhbiBkb3duID0gKHBhcnQgPT0gInVwIikgfHwgKHBhcnQgPT0gImRvd24iKTsgLy8gZWxzZSB0ZXh0CisJCQlyZXBhaW50PGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBtZXRob2QgJ3JlcGFpbnQoamF2YS5sYW5nLk9iamVjdCwgPywgPywgaW50LCA/KSciPihjb21wb25lbnQsIGRvd24gPyAoYi48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAneCciPng8L2Vycm9yPiArIGIuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ3dpZHRoJyI+d2lkdGg8L2Vycm9yPiAtIGJsb2NrKSA6IGIuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ3gnIj54PC9lcnJvcj4sIGIuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ3knIj55PC9lcnJvcj4sCisJCQkJZG93biA/IGJsb2NrIDogKGIuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ3dpZHRoJyI+d2lkdGg8L2Vycm9yPiAtIGJsb2NrKSwgYi48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnaGVpZ2h0JyI+aGVpZ2h0PC9lcnJvcj4pPC9lcnJvcj47CisJCX0KKwkJLy9lbHNlIGlmIChjbGFzc25hbWUgPT0gImRpYWxvZyIpIHt9CisJCQkvL2ludCB0aXRsZWhlaWdodCA9IGdldEludGVnZXIoY29tcG9uZW50LCAidGl0bGVoZWlnaHQiLCAwKTsKKwkJLy9lbHNlIGlmIChjbGFzc25hbWUgPT0gInNwbGl0cGFuZSIpIHt9CisJCWVsc2UgaWYgKChjbGFzc25hbWUgPT0gInRhYmJlZHBhbmUiKSB8fAorCQkJCShjbGFzc25hbWUgPT0gIm1lbnViYXIiKSB8fCAoY2xhc3NuYW1lID09ICJwb3B1cG1lbnUiKSkgeworCQkJPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ1JlY3RhbmdsZSciPlJlY3RhbmdsZTwvZXJyb3I+IHIgPSBnZXRSZWN0YW5nbGUocGFydCwgImJvdW5kcyIpOworCQkJcmVwYWludDxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgbWV0aG9kICdyZXBhaW50KGphdmEubGFuZy5PYmplY3QsID8sID8sID8sID8pJyI+KGNvbXBvbmVudCwgYi48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAneCciPng8L2Vycm9yPiArIHIuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ3gnIj54PC9lcnJvcj4sIGIuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ3knIj55PC9lcnJvcj4gKyByLjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICd5JyI+eTwvZXJyb3I+LAorCQkJCShjbGFzc25hbWUgPT0gInBvcHVwbWVudSIpID8gYi48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnd2lkdGgnIj53aWR0aDwvZXJyb3I+IDogci48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnd2lkdGgnIj53aWR0aDwvZXJyb3I+LCByLjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdoZWlnaHQnIj5oZWlnaHQ8L2Vycm9yPik8L2Vycm9yPjsKKwkJfQorCQllbHNlIC8vaWYgKChjbGFzc25hbWUgPT0gImNvbWJvbGlzdCIpIHx8IChjbGFzc25hbWUgPT0gInRleHRhcmVhIikgfHwKKwkJCQl7Ly8oY2xhc3NuYW1lID09ICJsaXN0IikgfHwgKGNsYXNzbmFtZSA9PSAidGFibGUiKSB8fCAoY2xhc3NuYW1lID09ICJ0cmVlIikpIHsKKwkJCTxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdSZWN0YW5nbGUnIj5SZWN0YW5nbGU8L2Vycm9yPiBwb3J0ID0gZ2V0UmVjdGFuZ2xlKGNvbXBvbmVudCwgIjpwb3J0Iik7CisJCQlpZiAocGFydCA9PSAibGVmdCIpIHsKKwkJCQlyZXBhaW50PGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBtZXRob2QgJ3JlcGFpbnQoamF2YS5sYW5nLk9iamVjdCwgPywgPywgaW50LCBpbnQpJyI+KGNvbXBvbmVudCwgYi48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAneCciPng8L2Vycm9yPiArIHBvcnQuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ3gnIj54PC9lcnJvcj4sIGIuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ3knIj55PC9lcnJvcj4gKyBiLjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdoZWlnaHQnIj5oZWlnaHQ8L2Vycm9yPiAtIGJsb2NrLCBibG9jaywgYmxvY2spPC9lcnJvcj47CisJCQl9CisJCQllbHNlIGlmIChwYXJ0ID09ICJyaWdodCIpIHsKKwkJCQlyZXBhaW50PGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBtZXRob2QgJ3JlcGFpbnQoamF2YS5sYW5nLk9iamVjdCwgPywgPywgaW50LCBpbnQpJyI+KGNvbXBvbmVudCwgYi48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAneCciPng8L2Vycm9yPiArIHBvcnQuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ3gnIj54PC9lcnJvcj4gKyBwb3J0LjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICd3aWR0aCciPndpZHRoPC9lcnJvcj4gLSBibG9jaywgYi48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAneSciPnk8L2Vycm9yPiArIGIuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ2hlaWdodCciPmhlaWdodDwvZXJyb3I+IC0gYmxvY2ssIGJsb2NrLCBibG9jayk8L2Vycm9yPjsKKwkJCX0KKwkJCWVsc2UgaWYgKHBhcnQgPT0gInVwIikgeworCQkJCXJlcGFpbnQ8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIG1ldGhvZCAncmVwYWludChqYXZhLmxhbmcuT2JqZWN0LCA/LCA/LCBpbnQsIGludCknIj4oY29tcG9uZW50LCBiLjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICd4JyI+eDwvZXJyb3I+ICsgYi48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnd2lkdGgnIj53aWR0aDwvZXJyb3I+IC0gYmxvY2ssIGIuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ3knIj55PC9lcnJvcj4gKyBwb3J0LjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICd5JyI+eTwvZXJyb3I+LCBibG9jaywgYmxvY2spPC9lcnJvcj47CisJCQl9CisJCQllbHNlIGlmIChwYXJ0ID09ICJkb3duIikgeworCQkJCXJlcGFpbnQ8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIG1ldGhvZCAncmVwYWludChqYXZhLmxhbmcuT2JqZWN0LCA/LCA/LCBpbnQsIGludCknIj4oY29tcG9uZW50LCBiLjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICd4JyI+eDwvZXJyb3I+ICsgYi48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnd2lkdGgnIj53aWR0aDwvZXJyb3I+IC0gYmxvY2ssIGIuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ3knIj55PC9lcnJvcj4gKyBwb3J0LjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICd5JyI+eTwvZXJyb3I+ICsgcG9ydC48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnaGVpZ2h0JyI+aGVpZ2h0PC9lcnJvcj4gLSBibG9jaywgYmxvY2ssIGJsb2NrKTwvZXJyb3I+OworCQkJfQorCQkJZWxzZSBpZiAocGFydCA9PSAiaG9yaXpvbnRhbCIpIHsgLy8gaG9yaXpvbnRhbHkgY2VudGVyIHBhcnQKKwkJCQlyZXBhaW50PGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBtZXRob2QgJ3JlcGFpbnQoamF2YS5sYW5nLk9iamVjdCwgPywgPywgPywgPyknIj4oY29tcG9uZW50LCBiLjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICd4JyI+eDwvZXJyb3I+ICsgcG9ydC48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAneCciPng8L2Vycm9yPiwgYi48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAneSciPnk8L2Vycm9yPiwgcG9ydC48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnd2lkdGgnIj53aWR0aDwvZXJyb3I+LCBiLjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdoZWlnaHQnIj5oZWlnaHQ8L2Vycm9yPik8L2Vycm9yPjsKKwkJCX0KKwkJCWVsc2UgaWYgKHBhcnQgPT0gInZlcnRpY2FsIikgeworCQkJCXJlcGFpbnQ8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIG1ldGhvZCAncmVwYWludChqYXZhLmxhbmcuT2JqZWN0LCA/LCA/LCA/LCA/KSciPihjb21wb25lbnQsIGIuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ3gnIj54PC9lcnJvcj4sIGIuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ3knIj55PC9lcnJvcj4gKyBwb3J0LjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICd5JyI+eTwvZXJyb3I+LCBiLjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICd3aWR0aCciPndpZHRoPC9lcnJvcj4sIHBvcnQuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ2hlaWdodCciPmhlaWdodDwvZXJyb3I+KTwvZXJyb3I+OworCQkJfQorCQkJZWxzZSBpZiAocGFydCA9PSAidGV4dCIpIHsgLy90ZXh0YXJlYQorCQkJCXJlcGFpbnQ8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIG1ldGhvZCAncmVwYWludChqYXZhLmxhbmcuT2JqZWN0LCA/LCA/LCA/LCA/KSciPihjb21wb25lbnQsIGIuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ3gnIj54PC9lcnJvcj4gKyBwb3J0LjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICd4JyI+eDwvZXJyb3I+LCBiLjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICd5JyI+eTwvZXJyb3I+ICsgcG9ydC48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAneSciPnk8L2Vycm9yPiwgcG9ydC48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnd2lkdGgnIj53aWR0aDwvZXJyb3I+LCBwb3J0LjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdoZWlnaHQnIj5oZWlnaHQ8L2Vycm9yPik8L2Vycm9yPjsKKwkJCX0KKwkJCWVsc2UgeworCQkJCTxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdSZWN0YW5nbGUnIj5SZWN0YW5nbGU8L2Vycm9yPiB2aWV3ID0gZ2V0UmVjdGFuZ2xlKGNvbXBvbmVudCwgIjp2aWV3Iik7CisJCQkJPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ1JlY3RhbmdsZSciPlJlY3RhbmdsZTwvZXJyb3I+IHIgPSBnZXRSZWN0YW5nbGUocGFydCwgImJvdW5kcyIpOworCQkJCWlmICgoci48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAneSciPnk8L2Vycm9yPiArIHIuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ2hlaWdodCciPmhlaWdodDwvZXJyb3I+ID49IHZpZXcuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ3knIj55PC9lcnJvcj4pICYmIChyLjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICd5JyI+eTwvZXJyb3I+IDw9IHZpZXcuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ3knIj55PC9lcnJvcj4gKyBwb3J0LjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdoZWlnaHQnIj5oZWlnaHQ8L2Vycm9yPikpIHsKKwkJCQkJcmVwYWludDxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgbWV0aG9kICdyZXBhaW50KGphdmEubGFuZy5PYmplY3QsID8sID8sID8sID8pJyI+KGNvbXBvbmVudCwgYi48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAneCciPng8L2Vycm9yPiArIHBvcnQuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ3gnIj54PC9lcnJvcj4sIGIuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ3knIj55PC9lcnJvcj4gKyBwb3J0LjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICd5JyI+eTwvZXJyb3I+IC0gdmlldy48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAneSciPnk8L2Vycm9yPiArIDEgKyByLjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICd5JyI+eTwvZXJyb3I+LAorCQkJCQkJcG9ydC48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnd2lkdGgnIj53aWR0aDwvZXJyb3I+LCByLjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdoZWlnaHQnIj5oZWlnaHQ8L2Vycm9yPik8L2Vycm9yPjsKKwkJCQkJLy8/IG5lZWQgY3V0IGl0ZW0gcmVjdGFuZ2xlIGFib3ZlL2JlbGxvdyB2aWV3cG9ydAorCQkJCX0KKwkJCX0KKwkJfQorCX0KKworCS8qKgorCSAqCisJICovCisJcHJpdmF0ZSB2b2lkIHZhbGlkYXRlKE9iamVjdCBjb21wb25lbnQpIHsKKwkJcmVwYWludChjb21wb25lbnQpOworCQk8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnUmVjdGFuZ2xlJyI+UmVjdGFuZ2xlPC9lcnJvcj4gYm91bmRzID0gZ2V0UmVjdGFuZ2xlKGNvbXBvbmVudCwgImJvdW5kcyIpOworCQlib3VuZHMuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ3dpZHRoJyI+d2lkdGg8L2Vycm9yPiA9IC0xICogTWF0aC5hYnM8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIG1ldGhvZCAnYWJzKD8pJyI+KGJvdW5kcy48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnd2lkdGgnIj53aWR0aDwvZXJyb3I+KTwvZXJyb3I+OworCX0KKworCS8qKgorCSAqCisJICovCisJcHJpdmF0ZSB2b2lkIHJlcGFpbnQoT2JqZWN0IGNvbXBvbmVudCkgeworCQk8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnUmVjdGFuZ2xlJyI+UmVjdGFuZ2xlPC9lcnJvcj4gYm91bmRzID0gZ2V0UmVjdGFuZ2xlKGNvbXBvbmVudCwgImJvdW5kcyIpOworCQlpZiAoYm91bmRzICE9IG51bGwpIHsKKwkJCXJlcGFpbnQ8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIG1ldGhvZCAncmVwYWludChqYXZhLmxhbmcuT2JqZWN0LCA/LCA/LCA/LCA/KSciPihjb21wb25lbnQsIGJvdW5kcy48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAneCciPng8L2Vycm9yPiwgYm91bmRzLjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICd5JyI+eTwvZXJyb3I+LCBib3VuZHMuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ3dpZHRoJyI+d2lkdGg8L2Vycm9yPiwgYm91bmRzLjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdoZWlnaHQnIj5oZWlnaHQ8L2Vycm9yPik8L2Vycm9yPjsKKwkJfQorCX0KKworCS8qKgorCSAqCisJICovCisJcHJpdmF0ZSB2b2lkIHJlcGFpbnQoT2JqZWN0IGNvbXBvbmVudCwgaW50IHgsIGludCB5LCBpbnQgd2lkdGgsIGludCBoZWlnaHQpIHsKKwkJd2hpbGUgKChjb21wb25lbnQgPSBnZXRQYXJlbnQoY29tcG9uZW50KSkgIT0gbnVsbCkgeworCQkJPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ1JlY3RhbmdsZSciPlJlY3RhbmdsZTwvZXJyb3I+IGJvdW5kcyA9IGdldFJlY3RhbmdsZShjb21wb25lbnQsICJib3VuZHMiKTsKKwkJCXggKz0gYm91bmRzLjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICd4JyI+eDwvZXJyb3I+OworCQkJeSArPSBib3VuZHMuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ3knIj55PC9lcnJvcj47CisJCX0KKwkJcmVwYWludCh4LCB5LCB3aWR0aCwgaGVpZ2h0KTsKKwl9CisKKwkvKnByaXZhdGUgdm9pZCBjbGlwKEdyYXBoaWNzIGcsCisJCQlSZWN0YW5nbGUgY2xpcCwgaW50IHgsIGludCB5LCBpbnQgd2lkdGgsIGludCBoZWlnaHQpIHsKKwkJaW50IHgxID0gTWF0aC5tYXgoY2xpcC54LCB4KTsKKwkJaW50IHkxID0gTWF0aC5tYXgoY2xpcC55LCB5KTsKKwkJaW50IHgyID0gTWF0aC5taW4oY2xpcC54ICsgY2xpcC53aWR0aCwgeCArIHdpZHRoKTsKKwkJaW50IHkyID0gTWF0aC5taW4oY2xpcC55ICsgY2xpcC5oZWlnaHQsIHkgKyBoZWlnaHQpOworCQlnLnNldENsaXAoeDEsIHkxLCB4MiAtIHgxLCB5MiAtIHkxKTsKKwl9Ki8KKworCS8qKgorCSAqCisJICovCisJcHVibGljIGJvb2xlYW4gcmVxdWVzdEZvY3VzKE9iamVjdCBjb21wb25lbnQpIHsKKwkJaWYgKGNoZWNrRm9jdXNhYmxlKGNvbXBvbmVudCwgdHJ1ZSkpIHsKKwkJCXNldEZvY3VzKGNvbXBvbmVudCk7IHJldHVybiB0cnVlOworCQl9CisJCXJldHVybiBmYWxzZTsKKwl9CisKKwkvKioKKwkgKgorCSAqLworCXByaXZhdGUgYm9vbGVhbiBzZXRGb2N1cyhPYmplY3QgY29tcG9uZW50KSB7CisJCWlmICghZm9jdXNpbnNpZGUpIHsgLy9qYXZhCisJCQlyZXF1ZXN0Rm9jdXMoKTsgLy9qYXZhCisJCX0gLy9qYXZhCisJCWlmIChmb2N1c293bmVyICE9IGNvbXBvbmVudCkgeworCQkJT2JqZWN0IGZvY3VzZWQgPSBmb2N1c293bmVyOworCQkJZm9jdXNvd25lciA9IGNvbXBvbmVudDsKKwkJCWlmIChmb2N1c2VkICE9IG51bGwpIHsKKwkJCQkvL21vdXNlRXZlbnQobnVsbCwgRm9jdXNFdmVudC5GT0NVU19MT1NULCBmb2N1c2VkLCBudWxsLCBudWxsKTsKKwkJCQlyZXBhaW50KGZvY3VzZWQpOworCQkJCS8vZm9jdXNHYWluZWQoY29tcG9uZW50KTsKKwkJCX0KKwkJCXJldHVybiB0cnVlOworCQl9CisJCXJldHVybiBmYWxzZTsKKwl9CisKKwkvKioKKwkgKiBAcmV0dXJuIG5leHQgZm9jdXNhYmxlIGNvbXBvbmVudCBpcyBmb3VuZCAobm90IHRoZSBmaXJzdCBvZiB0aGUgZGVza3RvcC9kaWFsb2cpCisJICovCisJcHJpdmF0ZSBib29sZWFuIHNldE5leHRGb2N1c2FibGUoT2JqZWN0IGN1cnJlbnQsIGJvb2xlYW4gb3V0Z28pIHsKKwkJYm9vbGVhbiBjb25zdW1lZCA9IHRydWU7CisJCWZvciAoT2JqZWN0IG5leHQgPSBudWxsLCBjb21wb25lbnQgPSBjdXJyZW50OyB0cnVlOyBjb21wb25lbnQgPSBuZXh0KSB7CisJCQluZXh0ID0gZ2V0KGNvbXBvbmVudCwgImNvbXBvbmVudCIpOyAvLyBjaGVjayBmaXJzdCBzdWJjb21wb25lbnQKKwkJCWlmIChuZXh0ID09IG51bGwpIHsgbmV4dCA9IGdldChjb21wb25lbnQsICI6bmV4dCIpOyB9IC8vIGNoZWNrIG5leHQgY29tcG9uZW50CisJCQl3aGlsZSAobmV4dCA9PSBudWxsKSB7IC8vIGZpbmQgdGhlIG5leHQgb2YgdGhlIHBhcmVudHMsIG9yIHRoZSB0b3Btb3N0CisJCQkJY29tcG9uZW50ID0gZ2V0UGFyZW50KGNvbXBvbmVudCk7IC8vIGN1cnJlbnQgaXMgbm90IG9uIHRoZSBkZXNrdG9wCisJCQkJaWYgKGNvbXBvbmVudCA9PSBudWxsKSB7IHJldHVybiBmYWxzZTsgfQorCQkJCWlmICgoY29tcG9uZW50ID09IGNvbnRlbnQpIHx8ICgoZ2V0Q2xhc3MoY29tcG9uZW50KSA9PSAiZGlhbG9nIikgJiYKKwkJCQkJCSghb3V0Z28gIHx8IGdldEJvb2xlYW4oY29tcG9uZW50LCAibW9kYWwiLCBmYWxzZSkpKSkgeworCQkJCQljb25zdW1lZCA9IGZhbHNlOyAvLyBmaW5kIG5leHQgZm9jdXNhYmxlIGJ1dCBkb2VzIG5vdCBjb25zdW1lIGV2ZW50CisJCQkJCW5leHQgPSBjb21wb25lbnQ7IC8vIHRoZSB0b3Btb3N0IChkZXNrdG9wIG9yIG1vZGFsIGRpYWxvZykKKwkJCQl9CisJCQkJZWxzZSB7CisJCQkJCW5leHQgPSBnZXQoY29tcG9uZW50LCAiOm5leHQiKTsKKwkJCQl9CisJCQl9CisJCQlpZiAobmV4dCA9PSBjdXJyZW50KSB7IHJldHVybiBmYWxzZTsgfSAvLyBvbmUgZnVjdXNhYmxlLCBubyBsb29wCisJCQlpZiAoY2hlY2tGb2N1c2FibGUobmV4dCwgZmFsc2UpKSB7CisJCQkJc2V0Rm9jdXMobmV4dCk7CisJCQkJcmV0dXJuIGNvbnN1bWVkOworCQkJfQorCQl9CisJfQorCisJLy9qYXZhPgorCS8qKgorCSAqIEByZXR1cm4gcHJldmlvdXMgZm9jdXNhYmxlIGNvbXBvbmVudCBpcyBmb3VuZCAobm90IHRoZSBsYXN0IG9mIHRoZSBkZXNrdG9wL2RpYWxvZykKKwkgKi8KKwlwcml2YXRlIGJvb2xlYW4gc2V0UHJldmlvdXNGb2N1c2FibGUoT2JqZWN0IGNvbXBvbmVudCwgYm9vbGVhbiBvdXRnbykgeworCQlmb3IgKGludCBpID0gMDsgaSA8IDI7IGkrKykgeyAvLyAwIGlzIGJhY2t3YXJkIGRpcmVjdGlvbgorCQkJT2JqZWN0IHByZXZpb3VzID0gZ2V0UHJldmlvdXNGb2N1c2FibGUoY29tcG9uZW50LCBudWxsLCB0cnVlLCBmYWxzZSwgKGkgPT0gMCksIG91dGdvKTsKKwkJCWlmIChwcmV2aW91cyAhPSBudWxsKSB7CisJCQkJc2V0Rm9jdXMocHJldmlvdXMpOworCQkJCXJldHVybiAoaSA9PSAwKTsKKwkJCX0KKwkJfQorCQlyZXR1cm4gZmFsc2U7CisJfQorCisJLyoqCisJICogRm9yIHRoZSBzdGFydGluZyBjb21wb25lbnQgc2VhcmNoIGl0cyBwYXJlbnQgZGlyZWN0aW9uIGZvciBhIGZvY3VzYWJsZSBjb21wb25lbnQsIGFuZCB0aGVuCisJICogaXRzIG5leHQgY29tcG9uZW50IChpZiBub3Qgc2VhcmNoIGJhY2t3YXJkIGZyb20gdGhlIGNvbXBvbmVudCkuPGJyPgorCSAqIEZvciBpdHMgcGFyZW50IGNvbXBvbmVudHMgY2hlY2sgaXRzIGZpcnN0IGNvbXBvbmVudCwgdGhlIGN1cnJlbnQgb25lLCBhbmQgaXRzIHBhcmVudCBkaXJlY3Rpb24KKwkgKiAoYmFja3dhcmQgc2VhcmNoKSwgb3IgaXRzIHBhcmVudCwgdGhlbiBuZXh0IGNvbXBvbmVudCAoZm9yd2FyZCBkaXJlY3Rpb24pLjxicj4KKwkgKiBGb3IgdGhlIHJlc3QgY29tcG9uZW50cyBjaGVjayB0aGUgbmV4dCwgdGhlbiB0aGUgZmlyc3Qgc3ViY29tcG9uZW50IGRpcmVjdGlvbiwgYW5kIGZpbmFsbHkKKwkgKiBjaGVjayB3aGV0aGVyIHRoZSBjb21wb25lbnQgaXMgZm9jdXNhYmxlLgorCSAqLworCXByaXZhdGUgT2JqZWN0IGdldFByZXZpb3VzRm9jdXNhYmxlKE9iamVjdCBjb21wb25lbnQsCisJCQlPYmplY3QgYmxvY2ssIGJvb2xlYW4gc3RhcnQsIGJvb2xlYW4gdXB3YXJkLCBib29sZWFuIGJhY2t3YXJkLCBib29sZWFuIG91dGdvKSB7CisJCU9iamVjdCBwcmV2aW91cyA9IG51bGw7CisJCWlmICgoY29tcG9uZW50ICE9IG51bGwpICYmIChjb21wb25lbnQgIT0gYmxvY2spKSB7CisJCQlib29sZWFuIGdvID0gKChnZXRDbGFzcyhjb21wb25lbnQpICE9ICJkaWFsb2ciKSB8fAorCQkJCShvdXRnbyAmJiAhZ2V0Qm9vbGVhbihjb21wb25lbnQsICJtb2RhbCIsIGZhbHNlKSkpOworCQkJaWYgKCFzdGFydCAmJiAhdXB3YXJkICYmIGdvKSB7CisJCQkJcHJldmlvdXMgPSBnZXRQcmV2aW91c0ZvY3VzYWJsZShnZXQoY29tcG9uZW50LCAiOm5leHQiKSwgYmxvY2ssIGZhbHNlLCBmYWxzZSwgYmFja3dhcmQsIG91dGdvKTsKKwkJCX0KKwkJCWlmICgocHJldmlvdXMgPT0gbnVsbCkgJiYgKCh1cHdhcmQgJiYgYmFja3dhcmQpIHx8ICghc3RhcnQgJiYgIXVwd2FyZCkpKSB7CisJCQkJcHJldmlvdXMgPSBnZXRQcmV2aW91c0ZvY3VzYWJsZShnZXQoY29tcG9uZW50LCAiY29tcG9uZW50IiksIGJsb2NrLCBmYWxzZSwgZmFsc2UsIGJhY2t3YXJkLCBvdXRnbyk7CisJCQkJaWYgKChwcmV2aW91cyA9PSBudWxsKSAmJiBjaGVja0ZvY3VzYWJsZShjb21wb25lbnQsIGZhbHNlKSkgeworCQkJCQlwcmV2aW91cyA9IGNvbXBvbmVudDsKKwkJCQl9CisJCQl9CisJCQlpZiAoKHByZXZpb3VzID09IG51bGwpICYmIChzdGFydCB8fCB1cHdhcmQpICYmIGdvKSB7CisJCQkJcHJldmlvdXMgPSBnZXRQcmV2aW91c0ZvY3VzYWJsZShnZXRQYXJlbnQoY29tcG9uZW50KSwgY29tcG9uZW50LCBmYWxzZSwgdHJ1ZSwgYmFja3dhcmQsIG91dGdvKTsKKwkJCX0KKwkJCWlmICgocHJldmlvdXMgPT0gbnVsbCkgJiYgKHN0YXJ0IHx8IHVwd2FyZCkgJiYgIWJhY2t3YXJkICYmIGdvKSB7CisJCQkJcHJldmlvdXMgPSBnZXRQcmV2aW91c0ZvY3VzYWJsZShnZXQoY29tcG9uZW50LCAiOm5leHQiKSwgYmxvY2ssIGZhbHNlLCBmYWxzZSwgYmFja3dhcmQsIG91dGdvKTsKKwkJCX0KKwkJfQorCQlyZXR1cm4gcHJldmlvdXM7CisJfQorCS8vPGphdmEKKworCS8qKgorCSAqCisJICovCisJcHJpdmF0ZSBib29sZWFuIGNoZWNrRm9jdXNhYmxlKE9iamVjdCBjb21wb25lbnQsIGJvb2xlYW4gZm9yY2VkKSB7CisJCVN0cmluZyBjbGFzc25hbWUgPSBnZXRDbGFzcyhjb21wb25lbnQpOworCQkvL21pZHAgZm9yY2VkPXRydWU7CisJCWlmICgoY2xhc3NuYW1lID09ICJidXR0b24iKSB8fCAoY2xhc3NuYW1lID09ICJjaGVja2JveCIpIHx8CisJCQkJKGNsYXNzbmFtZSA9PSAiY29tYm9ib3giKSB8fCAoY2xhc3NuYW1lID09ICJ0ZXh0ZmllbGQiKSB8fAorCQkJCShjbGFzc25hbWUgPT0gInBhc3N3b3JkZmllbGQiKSB8fCAoY2xhc3NuYW1lID09ICJ0ZXh0YXJlYSIpIHx8CisJCQkJKGNsYXNzbmFtZSA9PSAic3BpbmJveCIpIHx8IChjbGFzc25hbWUgPT0gInNsaWRlciIpIHx8CisJCQkJKGNsYXNzbmFtZSA9PSAibGlzdCIpIHx8IChjbGFzc25hbWUgPT0gInRhYmxlIikgfHwgKGNsYXNzbmFtZSA9PSAidHJlZSIpIHx8CisJCQkJKGNsYXNzbmFtZSA9PSAidGFiYmVkcGFuZSIpIHx8IChmb3JjZWQgJiYgKGNsYXNzbmFtZSA9PSAic3BsaXRwYW5lIikpKSB7CisJCQlmb3IgKE9iamVjdCBjb21wID0gY29tcG9uZW50OyBjb21wICE9IG51bGw7KSB7CisJCQkJaWYgKCFnZXRCb29sZWFuKGNvbXAsICJlbmFibGVkIiwgdHJ1ZSkgfHwgIWdldEJvb2xlYW4oY29tcCwgInZpc2libGUiLCB0cnVlKSkgeworCQkJCQlyZXR1cm4gZmFsc2U7CisJCQkJfQorCQkJCU9iamVjdCBwYXJlbnQgPSBnZXRQYXJlbnQoY29tcCk7CisJCQkJaWYgKChnZXRDbGFzcyhwYXJlbnQpID09ICJ0YWJiZWRwYW5lIikgJiYgKGdldEl0ZW1JbXBsKHBhcmVudCwKKwkJCQkJImNvbXBvbmVudCIsIGdldEludGVnZXIocGFyZW50LCAic2VsZWN0ZWQiLCAwKSkgIT0gY29tcCkpIHsgcmV0dXJuIGZhbHNlOyB9CisJCQkJY29tcCA9IHBhcmVudDsKKwkJCX0KKwkJCXJldHVybiB0cnVlOworCQl9CisJCXJldHVybiBmYWxzZTsKKwl9CisKKwkvKmlmIChjbGlwYXJlYSA9PSBudWxsKSB7IGFkZChjbGlwYXJlYSA9IG5ldyBUZXh0QXJlYSgpKTsgfQorCWNsaXBhcmVhLnNldFRleHQoY29udGVudCk7CisJY2xpcGFyZWEuc2VsZWN0QWxsKCk7CisJY2xpcGFyZWEuZGlzcGF0Y2hFdmVudChuZXcgS2V5RXZlbnQodGhpcywgS2V5RXZlbnQuS0VZX1RZUEVELCAwTCwgS2V5RXZlbnQuQ1RSTF9NQVNLLCAwLCAoY2hhcikgMykpOworCWNsaXBhcmVhLnNlbGVjdEFsbCgpOworCisJaWYgKGNsaXBhcmVhID09IG51bGwpIHsgYWRkKGNsaXBhcmVhID0gbmV3IFRleHRBcmVhKCkpOyB9CisJY2xpcGFyZWEuZGlzcGF0Y2hFdmVudChuZXcgS2V5RXZlbnQodGhpcywgS2V5RXZlbnQuS0VZX1RZUEVELCAwTCwgS2V5RXZlbnQuQ1RSTF9NQVNLLCAwLCAoY2hhcikgMjIpKTsKKwljbGlwYXJlYS5nZXRUZXh0KCk7IHJldHVybiBjbGlwYXJlYS5nZXRUZXh0KCk7Ki8KKworCS8vIC0tLS0tIC0tLS0tIC0tLS0tIC0tLS0tIC0tLS0tIC0tLS0tIC0tLS0tIC0tLS0tIC0tLS0tIC0tLS0tIC0tLS0tIC0tLS0tCisKKwkvKioKKwkgKgorCSAqLworCXB1YmxpYyBPYmplY3QgY3JlYXRlKFN0cmluZyBjbGFzc25hbWUpIHsKKwkJZm9yIChpbnQgaSA9IDA7IGkgPCBkdGQubGVuZ3RoOyBpICs9IDMpIHsKKwkJCWlmIChkdGRbaV0uZXF1YWxzKGNsYXNzbmFtZSkpIHsKKwkJCQlyZXR1cm4gY3JlYXRlSW1wbCgoU3RyaW5nKSBkdGRbaV0pOworCQkJfQorCQl9CisJCXRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oInVua25vd24gIiArIGNsYXNzbmFtZSk7CisJfQorCisJLyoqCisJICogQHJldHVybiBjbGFzc25hbWUKKwkgKi8KKwlwdWJsaWMgU3RyaW5nIGdldENsYXNzKE9iamVjdCBjb21wb25lbnQpIHsKKwkJcmV0dXJuIChTdHJpbmcpIGdldChjb21wb25lbnQsICI6Y2xhc3MiKTsKKwl9CisKKwkvKioKKwkgKgorCSAqLworCXB1YmxpYyBPYmplY3QgZ2V0RGVza3RvcCgpIHsKKwkJcmV0dXJuIGNvbnRlbnQ7CisJfQorCisJLyoqCisJICoKKwkgKi8KKwlwcml2YXRlIE9iamVjdCBjcmVhdGVJbXBsKFN0cmluZyBjbGFzc25hbWUpIHsKKwkJcmV0dXJuIG5ldyBPYmplY3RbXSB7ICI6Y2xhc3MiLCBjbGFzc25hbWUsIG51bGwgfTsKKwl9CisKKwkvKioKKwkgKgorCSAqLworCXByaXZhdGUgYm9vbGVhbiBzZXQoT2JqZWN0IGNvbXBvbmVudCwgT2JqZWN0IGtleSwgT2JqZWN0IHZhbHVlKSB7CisJCU9iamVjdFtdIHByZXZpb3VzID0gKE9iamVjdFtdKSBjb21wb25lbnQ7CisJCWZvciAoT2JqZWN0W10gZW50cnkgPSBwcmV2aW91czsgZW50cnkgIT0gbnVsbDsKKwkJCQllbnRyeSA9IChPYmplY3RbXSkgZW50cnlbMl0pIHsKKwkJCWlmIChlbnRyeVswXSA9PSBrZXkpIHsKKwkJCQlpZiAodmFsdWUgIT0gbnVsbCkgeyAvLyBzZXQgdGhlIHJvdydzIHZhbHVlCisJCQkJCU9iamVjdCBvbGR2YWx1ZSA9IGVudHJ5WzFdOworCQkJCQllbnRyeVsxXSA9IHZhbHVlOworCQkJCQlyZXR1cm4gIXZhbHVlLmVxdWFscyhvbGR2YWx1ZSk7CisJCQkJfQorCQkJCWVsc2UgeyAvLyByZW1vdmUgdGhlIHJvdworCQkJCQlwcmV2aW91c1syXSA9IGVudHJ5WzJdOworCQkJCQllbnRyeVsyXSA9IG51bGw7CisJCQkJCXJldHVybiB0cnVlOworCQkJCX0KKwkJCX0KKwkJCXByZXZpb3VzID0gZW50cnk7CisJCX0KKwkJaWYgKHZhbHVlICE9IG51bGwpIHsgLy8gYXBwZW5kIGEgbmV3IHJvdworCQkJcHJldmlvdXNbMl0gPSBuZXcgT2JqZWN0W10geyBrZXksIHZhbHVlLCBudWxsIH07CisJCQlyZXR1cm4gdHJ1ZTsKKwkJfQorCQlyZXR1cm4gZmFsc2U7CisJfQorCisJLyoqCisJICoKKwkgKi8KKwlwcml2YXRlIE9iamVjdCBnZXQoT2JqZWN0IGNvbXBvbmVudCwgT2JqZWN0IGtleSkgeworCQlmb3IgKE9iamVjdFtdIGVudHJ5ID0gKE9iamVjdFtdKSBjb21wb25lbnQ7IGVudHJ5ICE9IG51bGw7CisJCQkJZW50cnkgPSAoT2JqZWN0W10pIGVudHJ5WzJdKSB7CisJCQlpZiAoZW50cnlbMF0gPT0ga2V5KSB7CisJCQkJcmV0dXJuIGVudHJ5WzFdOworCQkJfQorCQl9CisJCXJldHVybiBudWxsOworCX0KKworCS8qKgorCSAqCisJICovCisJcHVibGljIGludCBnZXRDb3VudChPYmplY3QgY29tcG9uZW50KSB7CisJCXJldHVybiBnZXRDb3VudChjb21wb25lbnQsIG51bGwpOworCX0KKworCS8qKgorCSAqCisJICovCisJcHVibGljIGludCBnZXRDb3VudChPYmplY3QgY29tcG9uZW50LCBTdHJpbmcga2V5KSB7CisJCXJldHVybiBnZXRJdGVtQ291bnRJbXBsKGNvbXBvbmVudCwgZ2V0Q29tcG9uZW50TmFtZShjb21wb25lbnQsIGtleSkpOworCX0KKworCS8qKgorCSAqCisJICovCisJcHVibGljIE9iamVjdCBnZXRQYXJlbnQoT2JqZWN0IGNvbXBvbmVudCkgeworCQlyZXR1cm4gZ2V0KGNvbXBvbmVudCwgIjpwYXJlbnQiKTsKKwl9CisKKwkvKioKKwkgKiBAcmV0dXJuIHRoZSBmaXJzdCBzZWxlY3RlZCBpbmRleCBvciAtMQorCSAqLworCXB1YmxpYyBpbnQgZ2V0U2VsZWN0ZWRJbmRleChPYmplY3QgY29tcG9uZW50KSB7CisJCWludCBpID0gMDsKKwkJZm9yIChPYmplY3QgaXRlbSA9IGdldChjb21wb25lbnQsIGdldENvbXBvbmVudE5hbWUoY29tcG9uZW50LCBudWxsKSk7CisJCQkJaXRlbSAhPSBudWxsOyBpdGVtID0gZ2V0KGl0ZW0sICI6bmV4dCIpKSB7CisJCQlpZiAoZ2V0Qm9vbGVhbihpdGVtLCAic2VsZWN0ZWQiLCBmYWxzZSkpIHsgcmV0dXJuIGk7IH0KKwkJCWkrKzsKKwkJfQorCQlyZXR1cm4gLTE7CisJfQorCisJLyoqCisJICoKKwkgKi8KKwlwdWJsaWMgdm9pZCByZW1vdmVBbGwoT2JqZWN0IGNvbXBvbmVudCkgeworCQlyZW1vdmVBbGwoY29tcG9uZW50LCBudWxsKTsKKwl9CisKKwkvKioKKwkgKgorCSAqLworCXB1YmxpYyB2b2lkIHJlbW92ZUFsbChPYmplY3QgY29tcG9uZW50LCBTdHJpbmcga2V5KSB7CisJCVN0cmluZyBsaXN0ID0gZ2V0Q29tcG9uZW50TmFtZShjb21wb25lbnQsIGtleSk7CisJCWlmIChnZXQoY29tcG9uZW50LCBsaXN0KSAhPSBudWxsKSB7CisJCQlzZXQoY29tcG9uZW50LCBsaXN0LCBudWxsKTsKKwkJCXVwZGF0ZShjb21wb25lbnQsICJ2YWxpZGF0ZSIpOworCQl9CisJfQorCisJLyoqCisJICoKKwkgKi8KKwlwcml2YXRlIGludCBnZXRJdGVtQ291bnRJbXBsKE9iamVjdCBjb21wb25lbnQsIE9iamVjdCBrZXkpIHsKKwkJaW50IGkgPSAwOworCQlmb3IgKGNvbXBvbmVudCA9IGdldChjb21wb25lbnQsIGtleSk7IGNvbXBvbmVudCAhPSBudWxsOworCQkJCWNvbXBvbmVudCA9IGdldChjb21wb25lbnQsICI6bmV4dCIpKSB7CisJCQlpKys7CisJCX0KKwkJcmV0dXJuIGk7CisJfQorCisJLyoqCisJICoKKwkgKi8KKwlwdWJsaWMgT2JqZWN0IGdldEl0ZW0oT2JqZWN0IGNvbXBvbmVudCwgaW50IGluZGV4KSB7CisJCXJldHVybiBnZXRJdGVtKGNvbXBvbmVudCwgbnVsbCwgaW5kZXgpOworCX0KKworCS8qKgorCSAqCisJICovCisJcHVibGljIE9iamVjdFtdIGdldEl0ZW1zKE9iamVjdCBjb21wb25lbnQpIHsKKwkJcmV0dXJuIGdldEl0ZW1zKGNvbXBvbmVudCwgbnVsbCk7CisJfQorCisJLyoqCisJICoKKwkgKi8KKwlwdWJsaWMgT2JqZWN0IGdldEl0ZW0oT2JqZWN0IGNvbXBvbmVudCwgU3RyaW5nIGtleSwgaW50IGluZGV4KSB7CisJCXJldHVybiBnZXRJdGVtSW1wbChjb21wb25lbnQsIGdldENvbXBvbmVudE5hbWUoY29tcG9uZW50LCBrZXkpLCBpbmRleCk7CisJfQorCisJLyoqCisJICoKKwkgKi8KKwlwdWJsaWMgT2JqZWN0W10gZ2V0SXRlbXMoT2JqZWN0IGNvbXBvbmVudCwgU3RyaW5nIGtleSkgeworCQlrZXkgPSBnZXRDb21wb25lbnROYW1lKGNvbXBvbmVudCwga2V5KTsKKwkJT2JqZWN0W10gaXRlbXMgPSBuZXcgT2JqZWN0W2dldEl0ZW1Db3VudEltcGwoY29tcG9uZW50LCBrZXkpXTsKKwkJY29tcG9uZW50ID0gZ2V0KGNvbXBvbmVudCwga2V5KTsKKwkJZm9yIChpbnQgaSA9IDA7IGkgPCBpdGVtcy5sZW5ndGg7IGkrKykgeworCQkJaXRlbXNbaV0gPSBjb21wb25lbnQ7CisJCQljb21wb25lbnQgPSBnZXQoY29tcG9uZW50LCAiOm5leHQiKTsKKwkJfQorCQlyZXR1cm4gaXRlbXM7CisJfQorCisJLyoqCisJICoKKwkgKi8KKwlwcml2YXRlIE9iamVjdCBnZXRJdGVtSW1wbChPYmplY3QgY29tcG9uZW50LCBPYmplY3Qga2V5LCBpbnQgaW5kZXgpIHsKKwkJaW50IGkgPSAwOworCQlmb3IgKE9iamVjdCBpdGVtID0gZ2V0KGNvbXBvbmVudCwga2V5KTsKKwkJCQlpdGVtICE9IG51bGw7IGl0ZW0gPSBnZXQoaXRlbSwgIjpuZXh0IikpIHsKKwkJCWlmIChpID09IGluZGV4KSB7IHJldHVybiBpdGVtOyB9CisJCQlpKys7CisJCX0KKwkJcmV0dXJuIG51bGw7CisJfQorCisJLyoqCisJICoKKwkgKi8KKwlwcml2YXRlIGludCBnZXRJbmRleChPYmplY3QgY29tcG9uZW50LCBPYmplY3Qga2V5LCBPYmplY3QgdmFsdWUpIHsKKwkJaW50IGluZGV4ID0gMDsKKwkJZm9yIChPYmplY3QgaXRlbSA9IGdldChjb21wb25lbnQsIGtleSk7CisJCQkJaXRlbSAhPSBudWxsOyBpdGVtID0gZ2V0KGl0ZW0sICI6bmV4dCIpKSB7CisJCQlpZiAodmFsdWUgPT0gaXRlbSkgeyByZXR1cm4gaW5kZXg7IH0KKwkJCWluZGV4Kys7CisJCX0KKwkJcmV0dXJuIC0xOworCX0KKworCS8qKgorCSAqCisJICovCisJcHVibGljIHZvaWQgYWRkKE9iamVjdCBjb21wb25lbnQpIHsKKwkJYWRkKGNvbnRlbnQsIGNvbXBvbmVudCwgMCk7CisJfQorCisJLyoqCisJICoKKwkgKi8KKwlwdWJsaWMgdm9pZCBhZGQoT2JqZWN0IHBhcmVudCwgT2JqZWN0IGNvbXBvbmVudCkgeworCQlhZGQocGFyZW50LCBjb21wb25lbnQsIC0xKTsKKwl9CisKKwkvKioKKwkgKgorCSAqLworCXB1YmxpYyB2b2lkIGFkZChPYmplY3QgcGFyZW50LCBPYmplY3QgY29tcG9uZW50LCBpbnQgaW5kZXgpIHsKKwkJYWRkSW1wbChwYXJlbnQsIGNvbXBvbmVudCwgaW5kZXgpOworCQl1cGRhdGUoY29tcG9uZW50LCAidmFsaWRhdGUiKTsKKwkJaWYgKHBhcmVudCA9PSBjb250ZW50KSB7CisJCQlzZXROZXh0Rm9jdXNhYmxlKGNvbXBvbmVudCwgZmFsc2UpOworCQl9CisJfQorCisJLyoqCisJICoKKwkgKi8KKwlwcml2YXRlIHZvaWQgYWRkSXRlbShPYmplY3QgcGFyZW50LCBPYmplY3Qga2V5LCBPYmplY3QgY29tcG9uZW50KSB7CisJCWluc2VydEl0ZW0ocGFyZW50LCBrZXksIGNvbXBvbmVudCwgLTEpOworCX0KKworCS8qKgorCSAqCisJICovCisJcHJpdmF0ZSB2b2lkIGluc2VydEl0ZW0oT2JqZWN0IHBhcmVudCwKKwkJCU9iamVjdCBrZXksIE9iamVjdCBjb21wb25lbnQsIGludCBpbmRleCkgeworCQlPYmplY3QgdGFyZ2V0ID0gZ2V0KHBhcmVudCwga2V5KTsKKwkJaWYgKGluZGV4ID09IC0xKSB7CisJCQl3aGlsZSAodGFyZ2V0ICE9IG51bGwpIHsKKwkJCQl0YXJnZXQgPSBnZXQocGFyZW50ID0gdGFyZ2V0LCBrZXkgPSAiOm5leHQiKTsKKwkJCX0KKwkJfQorCQllbHNlIHsKKwkJCWZvciAoaW50IGkgPSAwOyBpIDwgaW5kZXg7IGkrKykgeworCQkJCXRhcmdldCA9IGdldChwYXJlbnQgPSB0YXJnZXQsIGtleSA9ICI6bmV4dCIpOworCQkJfQorCQkJc2V0KGNvbXBvbmVudCwgIjpuZXh0IiwgZ2V0KHBhcmVudCwga2V5KSk7CisJCX0KKwkJc2V0KHBhcmVudCwga2V5LCBjb21wb25lbnQpOworCX0KKworCS8qKgorCSAqCisJICovCisJcHVibGljIHZvaWQgcmVtb3ZlKE9iamVjdCBjb21wb25lbnQpIHsKKwkJT2JqZWN0IHBhcmVudCA9IGdldFBhcmVudChjb21wb25lbnQpOworCQlTdHJpbmcgcGFyZW50Y2xhc3MgPSBnZXRDbGFzcyhwYXJlbnQpOworCQlTdHJpbmcgY2xhc3NuYW1lID0gZ2V0Q2xhc3MoY29tcG9uZW50KTsKKwkJU3RyaW5nIGxpc3RrZXkgPSAoImNvbWJvYm94IiA9PSBwYXJlbnRjbGFzcykgPyAiY2hvaWNlIiA6CisJCQkoKCJ0YWJiZWRwYW5lIiA9PSBwYXJlbnRjbGFzcykgJiYgKCJ0YWIiID09IGNsYXNzbmFtZSkpID8gInRhYiIgOgorCQkJKCJsaXN0IiA9PSBwYXJlbnRjbGFzcykgPyAiaXRlbSIgOgorCQkJKCgidGFibGUiID09IHBhcmVudGNsYXNzKSAmJiAoImNvbHVtbiIgPT0gY2xhc3NuYW1lKSkgPyAiY29sdW1uIiA6CisJCQkoKCJ0YWJsZSIgPT0gcGFyZW50Y2xhc3MpICYmICgicm93IiA9PSBjbGFzc25hbWUpKSA/ICJyb3ciIDoKKwkJCSgicm93IiA9PSBwYXJlbnRjbGFzcykgPyAiY2VsbCIgOgorCQkJKCgidHJlZSIgPT0gcGFyZW50Y2xhc3MpIHx8ICgibm9kZSIgPT0gcGFyZW50Y2xhc3MpKSA/ICJub2RlIiA6CisJCQkoKCJtZW51YmFyIiA9PSBwYXJlbnRjbGFzcykgfHwgKCJtZW51IiA9PSBwYXJlbnRjbGFzcykpID8gIm1lbnUiIDoKKwkJCSgoInBhbmVsIiA9PSBwYXJlbnRjbGFzcykgfHwgKCJkZXNrdG9wIiA9PSBwYXJlbnRjbGFzcykgfHwKKwkJCQkoInNwbGl0cGFuZSIgPT0gcGFyZW50Y2xhc3MpIHx8ICgiZGlhbG9nIiA9PSBwYXJlbnRjbGFzcykgfHwKKwkJCQkoInRhYmJlZHBhbmUiID09IHBhcmVudGNsYXNzKSkgPyAiY29tcG9uZW50IiA6IG51bGw7CisJCWlmIChsaXN0a2V5ID09IG51bGwpIHsgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigidW5rbm93biAiICsgY2xhc3NuYW1lKTsgfQorCQl1cGRhdGUoY29tcG9uZW50LCAidmFsaWRhdGUiKTsKKwkJcmVtb3ZlSXRlbUltcGwocGFyZW50LCBsaXN0a2V5LCBjb21wb25lbnQpOworCQkvLyByZXVlc3QgZm9jdXMgZm9yIGl0cyBwYXJlbnQgaWYgdGhlIGNvbXBvbmVudCAob3Igc3ViY29tcG9uZW50KSBpcyBjdXJyZW50bHkgZm9jdXNlZAorCQlmb3IgKE9iamVjdCBjb21wID0gZm9jdXNvd25lcjsgY29tcCAhPSBudWxsOyBjb21wID0gZ2V0UGFyZW50KGNvbXApKSB7CisJCQlpZiAoY29tcCA9PSBjb21wb25lbnQpIHsKKwkJCQlzZXROZXh0Rm9jdXNhYmxlKHBhcmVudCwgZmFsc2UpOyBicmVhazsKKwkJCX0KKwkJfQorCX0KKworCS8qKgorCSAqCisJICovCisJcHJpdmF0ZSB2b2lkIHJlbW92ZUl0ZW1JbXBsKE9iamVjdCBwYXJlbnQsIE9iamVjdCBrZXksIE9iamVjdCBjb21wb25lbnQpIHsKKwkJT2JqZWN0IHRhcmdldCA9IGdldChwYXJlbnQsIGtleSk7CisJCXdoaWxlICh0YXJnZXQgIT0gY29tcG9uZW50KSB7CisJCQl0YXJnZXQgPSBnZXQocGFyZW50ID0gdGFyZ2V0LCBrZXkgPSAiOm5leHQiKTsgLy8gKHRhcmdldCAhPSBudWxsKQorCQl9CisJCXNldChwYXJlbnQsIGtleSwgZ2V0KHRhcmdldCwgIjpuZXh0IikpOworCQlzZXQodGFyZ2V0LCAiOm5leHQiLCBudWxsKTsKKwkJc2V0KHRhcmdldCwgIjpwYXJlbnQiLCBudWxsKTsKKwl9CisKKwkvKgorCXByaXZhdGUgdm9pZCByZW1vdmVJdGVtSW1wbChPYmplY3QgcGFyZW50LCBTdHJpbmcga2V5LCBpbnQgaW5kZXgpIHsKKwkJT2JqZWN0IHRhcmdldCA9IGdldChwYXJlbnQsIGtleSk7CisJCWZvciAoaW50IGkgPSAwOyBpIDwgaW5kZXg7IGkrKykgeworCQkJdGFyZ2V0ID0gZ2V0KHBhcmVudCA9IHRhcmdldCwga2V5ID0gIjpuZXh0Iik7CisJCX0KKwkJc2V0KHBhcmVudCwga2V5LCBnZXQodGFyZ2V0LCAiOm5leHQiKSk7CisJCXNldCh0YXJnZXQsICI6bmV4dCIsIG51bGwpOworCX0qLworCisJLyoqCisJICoKKwkgKi8KKwlwcml2YXRlIFN0cmluZyBnZXRDb21wb25lbnROYW1lKE9iamVjdCBwYXJlbnQsIE9iamVjdCBjbGFzc25hbWUpIHsKKwkJU3RyaW5nIHBhcmVudGNsYXNzID0gZ2V0Q2xhc3MocGFyZW50KTsKKwkJU3RyaW5nIGNvbXBuYW1lID0gKCJjb21ib2JveCIgPT0gcGFyZW50Y2xhc3MpID8gImNob2ljZSIgOgorCQkJKCJsaXN0IiA9PSBwYXJlbnRjbGFzcykgPyAiaXRlbSIgOgorCQkJKCJyb3ciID09IHBhcmVudGNsYXNzKSA/ICJjZWxsIiA6CisJCQkoKCJ0cmVlIiA9PSBwYXJlbnRjbGFzcykgfHwgKCJub2RlIiA9PSBwYXJlbnRjbGFzcykpID8gIm5vZGUiIDoKKwkJCSgoIm1lbnViYXIiID09IHBhcmVudGNsYXNzKSB8fCAoIm1lbnUiID09IHBhcmVudGNsYXNzKSkgPyAibWVudSIgOgorCQkJKCgicGFuZWwiID09IHBhcmVudGNsYXNzKSB8fCAoImRlc2t0b3AiID09IHBhcmVudGNsYXNzKSB8fAorCQkJCSgic3BsaXRwYW5lIiA9PSBwYXJlbnRjbGFzcykgfHwgKCJkaWFsb2ciID09IHBhcmVudGNsYXNzKSkgPworCQkJCSJjb21wb25lbnQiIDogbnVsbDsKKwkJaWYgKChjb21wbmFtZSAhPSBudWxsKSAmJiAoKGNsYXNzbmFtZSA9PSBudWxsKSB8fAorCQkJCWNvbXBuYW1lLmVxdWFscyhjbGFzc25hbWUpKSkgeyByZXR1cm4gY29tcG5hbWU7IH0KKwkJaWYgKCJ0YWJiZWRwYW5lIiA9PSBwYXJlbnRjbGFzcykgeworCQkJaWYgKCJ0YWIiLmVxdWFscyhjbGFzc25hbWUpKSB7IHJldHVybiAidGFiIjsgfQorCQkJaWYgKChjbGFzc25hbWUgPT0gbnVsbCkgfHwgImNvbXBvbmVudCIuZXF1YWxzKGNsYXNzbmFtZSkpIHsgcmV0dXJuICJjb21wb25lbnQiOyB9CisJCX0KKwkJZWxzZSBpZiAoInRhYmxlIiA9PSBwYXJlbnRjbGFzcykgeworCQkJaWYgKCJjb2x1bW4iLmVxdWFscyhjbGFzc25hbWUpKSB7IHJldHVybiAiY29sdW1uIjsgfQorCQkJaWYgKChjbGFzc25hbWUgPT0gbnVsbCkgfHwgInJvdyIuZXF1YWxzKGNsYXNzbmFtZSkpIHsgcmV0dXJuICJyb3ciOyB9CisJCX0KKwkJdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigidW5rbm93biAiICsgY2xhc3NuYW1lKTsKKwl9CisKKwkvKioKKwkgKgorCSAqLworCXB1YmxpYyBPYmplY3QgZmluZChTdHJpbmcgbmFtZSkgeworCQlyZXR1cm4gZmluZChjb250ZW50LCBuYW1lKTsKKwl9CisKKwkvKioKKwkgKgorCSAqLworCXB1YmxpYyBPYmplY3QgZmluZChPYmplY3QgY29tcG9uZW50LCBTdHJpbmcgbmFtZSkgeworCQlpZiAobmFtZS5lcXVhbHMoZ2V0KGNvbXBvbmVudCwgIm5hbWUiKSkpIHsgcmV0dXJuIGNvbXBvbmVudDsgfQorCQlTdHJpbmcgY2xhc3NuYW1lID0gZ2V0Q2xhc3MoY29tcG9uZW50KTsKKwkJU3RyaW5nIGNoaWxkbmFtZSA9IG51bGw7IFN0cmluZyBjaGlsZG5hbWUyID0gbnVsbDsKKwkJaWYgKCgicGFuZWwiID09IGNsYXNzbmFtZSkgfHwgKCJkZXNrdG9wIiA9PSBjbGFzc25hbWUpIHx8CisJCQkJKCJzcGxpdHBhbmUiID09IGNsYXNzbmFtZSkgfHwgKCJkaWFsb2ciID09IGNsYXNzbmFtZSkpIHsgY2hpbGRuYW1lID0gImNvbXBvbmVudCI7IH0KKwkJZWxzZSBpZiAoImNvbWJvYm94IiA9PSBjbGFzc25hbWUpIHsgY2hpbGRuYW1lID0gImNob2ljZSI7IH0KKwkJZWxzZSBpZiAoInRhYmJlZHBhbmUiID09IGNsYXNzbmFtZSkgeyBjaGlsZG5hbWUgPSAidGFiIjsgY2hpbGRuYW1lMiA9ICJjb21wb25lbnQiOyB9CisJCWVsc2UgaWYgKCJsaXN0IiA9PSBjbGFzc25hbWUpIHsgY2hpbGRuYW1lID0gIml0ZW0iOyB9CisJCWVsc2UgaWYgKCJ0YWJsZSIgPT0gY2xhc3NuYW1lKSB7IGNoaWxkbmFtZSA9ICJjb2x1bW4iOyBjaGlsZG5hbWUyID0gInJvdyI7IH0KKwkJZWxzZSBpZiAoInJvdyIgPT0gY2xhc3NuYW1lKSB7IGNoaWxkbmFtZSA9ICJjZWxsIjsgfQorCQllbHNlIGlmICgoInRyZWUiID09IGNsYXNzbmFtZSkgfHwgKCJub2RlIiA9PSBjbGFzc25hbWUpKSB7IGNoaWxkbmFtZSA9ICJub2RlIjsgfQorCQllbHNlIGlmICgoIm1lbnViYXIiID09IGNsYXNzbmFtZSkgfHwgKCJtZW51IiA9PSBjbGFzc25hbWUpKSB7IGNoaWxkbmFtZSA9ICJtZW51IjsgfQorCQl3aGlsZSAoY2hpbGRuYW1lICE9IG51bGwpIHsKKwkJCWZvciAoT2JqZWN0IGNvbXAgPSBnZXQoY29tcG9uZW50LCBjaGlsZG5hbWUpOworCQkJCQljb21wICE9IG51bGw7IGNvbXAgPSBnZXQoY29tcCwgIjpuZXh0IikpIHsKKwkJCQlPYmplY3QgZm91bmQgPSBmaW5kKGNvbXAsIG5hbWUpOworCQkJCWlmIChmb3VuZCAhPSBudWxsKSB7IHJldHVybiBmb3VuZDsgfQorCQkJfQorCQkJY2hpbGRuYW1lID0gY2hpbGRuYW1lMjsgY2hpbGRuYW1lMiA9IG51bGw7CisJCX0KKwkJcmV0dXJuIG51bGw7CisJfQorCisJLy8gLS0tLS0gLS0tLS0gLS0tLS0gLS0tLS0gLS0tLS0gLS0tLS0gLS0tLS0gLS0tLS0gLS0tLS0gLS0tLS0gLS0tLS0gLS0tLS0KKworCS8qcHVibGljIFN0cmluZyB0b1hNTChPYmplY3QgY29tcG9uZW50KSB7CisJCVN0cmluZ0J1ZmZlciB4bWwgPSBuZXcgU3RyaW5nQnVmZmVyKCk7CisJCU9iamVjdFtdIGVudHJ5ID0gKE9iamVjdFtdKSBjb21wb25lbnQ7CisJCVN0cmluZyBjbGFzc25hbWUgPSAoU3RyaW5nKSBlbnRyeVsxXTsKKwkJd2hpbGUgKChlbnRyeSA9IChPYmplY3RbXSkgZW50cnlbMl0pICE9IG51bGwpIHsKKwkJCXRyeSB7CisJCQkJT2JqZWN0W10gZGVmaW5pdGlvbiA9IGdldERlZmluaXRpb24oY29tcG9uZW50LCAoU3RyaW5nKSBlbnRyeVswXSwgbnVsbCk7CisJCQkJaWYgKGRlZmluaXRpb24gIT0gbnVsbCkgeworCQkJCQl4bWwuYXBwZW5kKCIgIiArIGVudHJ5WzBdICsgIj1cIiIgKyBlbnRyeVsxXSArICJcIiIpOworCQkJCX0KKwkJCX0gY2F0Y2ggKElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiBleGMpIHt9CisJCX0KKwkJcmV0dXJuIHhtbC50b1N0cmluZygpOworCX0qLworCisJLyoqCisJICoKKwkgKi8KKwlwdWJsaWMgT2JqZWN0IHBhcnNlKFN0cmluZyBwYXRoKSB0aHJvd3MgRXhjZXB0aW9uIHsKKwkJSW5wdXRTdHJlYW0gaW5wdXRzdHJlYW0gPSBudWxsOworCQl0cnkgeyAvL2phdmEKKwkJCS8vbWlkcCBpbnB1dHN0cmVhbSA9IGdldENsYXNzKCkuZ2V0UmVzb3VyY2VBc1N0cmVhbShwYXRoKTsKKwkJCWlucHV0c3RyZWFtID0gZ2V0Q2xhc3MoKS5nZXRSZXNvdXJjZUFzU3RyZWFtKHBhdGgpOyAvL2phdmEKKwkJCS8vU3lzdGVtLm91dC5wcmludGxuKCI+ICIgKyBwYXRoICsgIiAiICsgaW5wdXRzdHJlYW0pOworCQl9IGNhdGNoIChUaHJvd2FibGUgZSkge30gLy9qYXZhCisJCS8vaWYgKGlucHV0c3RyZWFtID09IG51bGwpIHsgLy8gYXBwbGV0IGNvZGUKKwkJLy8JaW5wdXRzdHJlYW0gPSBuZXcgVVJMKGdldENvZGVCYXNlKCksIHBhdGgpLm9wZW5TdHJlYW0oKTsKKwkJLy99CisJCXJldHVybiBwYXJzZShpbnB1dHN0cmVhbSk7IC8vLCBPYmplY3QgaGFuZGxlcgorCX0KKworCS8qKgorCSAqCisJICovCisJcHVibGljIE9iamVjdCBwYXJzZShJbnB1dFN0cmVhbSBpbnB1dHN0cmVhbSkgdGhyb3dzIEV4Y2VwdGlvbiB7CisJCXJldHVybiBwYXJzZShpbnB1dHN0cmVhbSwgdHJ1ZSk7CisJfQorCisJLyoqCisJICoKKwkgKi8KKwlwcm90ZWN0ZWQgdm9pZCBwYXJzZVhNTChJbnB1dFN0cmVhbSBpbnB1dHN0cmVhbSkgdGhyb3dzIEV4Y2VwdGlvbiB7CisJCXBhcnNlKGlucHV0c3RyZWFtLCBmYWxzZSk7CisJfQorCisJLyoqCisJICoKKwkgKi8KKwlwcm90ZWN0ZWQgdm9pZCBzdGFydEVsZW1lbnQoU3RyaW5nIG5hbWUsIEhhc2h0YWJsZSBhdHRyaWJ1dGVsaXN0KSB7fQorCisJLyoqCisJICoKKwkgKi8KKwlwcm90ZWN0ZWQgdm9pZCBjaGFyYWN0ZXJzKFN0cmluZyB0ZXh0KSB7fQorCisJLyoqCisJICoKKwkgKi8KKwlwcm90ZWN0ZWQgdm9pZCBlbmRFbGVtZW50KCkge30KKworCS8qKgorCSAqCisJICovCisJcHJpdmF0ZSBPYmplY3QgcGFyc2UoSW5wdXRTdHJlYW0gaW5wdXRzdHJlYW0sIGJvb2xlYW4gdmFsaWRhdGUpIHRocm93cyBFeGNlcHRpb24geworCQlCdWZmZXJlZFJlYWRlciByZWFkZXIgPSBuZXcgQnVmZmVyZWRSZWFkZXIobmV3IElucHV0U3RyZWFtUmVhZGVyKGlucHV0c3RyZWFtKSk7IC8vamF2YQorCQkvL21pZHAgSW5wdXRTdHJlYW1SZWFkZXIgcmVhZGVyID0gbmV3IElucHV0U3RyZWFtUmVhZGVyKGlucHV0c3RyZWFtKTsKKwkJT2JqZWN0W10gcGFyZW50bGlzdCA9IG51bGw7CisJCU9iamVjdCBjdXJyZW50ID0gbnVsbDsKKwkJSGFzaHRhYmxlIGF0dHJpYnV0ZWxpc3QgPSBudWxsOworCQlTdHJpbmdCdWZmZXIgdGV4dCA9IG5ldyBTdHJpbmdCdWZmZXIoKTsKKwkJZm9yIChpbnQgYyA9IHJlYWRlci5yZWFkKCk7IGMgIT0gLTE7KSB7CisJCQlpZiAoYyA9PSAnPCcpIHsKKwkJCQlpZiAoKGMgPSByZWFkZXIucmVhZCgpKSA9PSAnLycpIHsgLy9lbmR0YWcKKwkJCQkJaWYgKHRleHQubGVuZ3RoKCkgPiAwKSB7CisJCQkJCQlpZiAodGV4dC5jaGFyQXQodGV4dC5sZW5ndGgoKSAtIDEpID09ICcgJykgeworCQkJCQkJCXRleHQuc2V0TGVuZ3RoKHRleHQubGVuZ3RoKCkgLSAxKTsKKwkJCQkJCX0KKwkJCQkJCWlmICghdmFsaWRhdGUpIHsKKwkJCQkJCQljaGFyYWN0ZXJzKHRleHQudG9TdHJpbmcoKSk7CisJCQkJCQl9Ly8gZWxzZSB7CisJCQkJCQkJLy9hZGRDb250ZW50KGN1cnJlbnQsIHRleHQudG9TdHJpbmcoKSk7CisJCQkJCQkvL30KKwkJCQkJCXRleHQuc2V0TGVuZ3RoKDApOworCQkJCQl9CisJCQkJCVN0cmluZyB0YWduYW1lID0gKFN0cmluZykgcGFyZW50bGlzdFsyXTsgLy9nZXRDbGFzcyhjdXJyZW50KTsKKwkJCQkJZm9yIChpbnQgaSA9IDA7IGkgPCB0YWduYW1lLmxlbmd0aCgpOyBpKyspIHsgLy8gY3VycmVudC10YWcKKwkJCQkJCWlmICgoYyA9IHJlYWRlci5yZWFkKCkpICE9IHRhZ25hbWUuY2hhckF0KGkpKSB7CisJCQkJCQkJdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbih0YWduYW1lKTsKKwkJCQkJCX0KKwkJCQkJfQorCQkJCQl3aGlsZSAoIiBcdFxuXHIiLmluZGV4T2YoYyA9IHJlYWRlci5yZWFkKCkpICE9IC0xKTsgLy8gd2hpdGVzcGFjZQorCQkJCQlpZiAoYyAhPSAnPicpIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oKTsgLy8gJz4nCisJCQkJCWMgPSByZWFkZXIucmVhZCgpOworCQkJCQlpZiAoIXZhbGlkYXRlKSB7IGVuZEVsZW1lbnQoKTsgfQorCQkJCQlpZiAocGFyZW50bGlzdFswXSA9PSBudWxsKSB7CisJCQkJCQlyZWFkZXIuY2xvc2UoKTsKKwkJCQkJCXJldHVybiBjdXJyZW50OworCQkJCQl9CisJCQkJCWN1cnJlbnQgPSBwYXJlbnRsaXN0WzBdOworCQkJCQlwYXJlbnRsaXN0ID0gKE9iamVjdFtdKSBwYXJlbnRsaXN0WzFdOworCQkJCX0KKwkJCQllbHNlIHsgLy9zdGFydCBvciBzdGFuZGFsb25lIHRhZworCQkJCQlib29sZWFuIGluc3RydWN0aW9uID0gKGMgPT0gJz8nKTsgLy8gUHJvY2Vzc2luZyBJbnN0cnVjdGlvbnMKKwkJCQkJaWYgKGMgPT0gJyEnKSB7IHdoaWxlICgoYyA9IHJlYWRlci5yZWFkKCkpICE9ICc+Jyk7IGNvbnRpbnVlOyB9IC8vIERPQ1RZUEUKKwkJCQkJaWYgKGluc3RydWN0aW9uKSB7IGMgPSByZWFkZXIucmVhZCgpOyB9CisJCQkJCXRleHQuc2V0TGVuZ3RoKDApOworCQkJCQlib29sZWFuIGlzY29tbWVudCA9IGZhbHNlOworCQkJCQl3aGlsZSAoIj4vIFx0XG5cciIuaW5kZXhPZihjKSA9PSAtMSkgeworCQkJCQkJdGV4dC5hcHBlbmQoKGNoYXIpIGMpOworCQkJCQkJaWYgKCh0ZXh0Lmxlbmd0aCgpID09IDMpICYmICh0ZXh0LmNoYXJBdCgwKSA9PSAnIScpICYmCisJCQkJCQkJCSh0ZXh0LmNoYXJBdCgxKSA9PSAnLScpICYmICh0ZXh0LmNoYXJBdCgyKSA9PSAnLScpKSB7CisJCQkJCQkJaW50IG0gPSAwOworCQkJCQkJCXdoaWxlICh0cnVlKSB7CisJCQkJCQkJCWMgPSByZWFkZXIucmVhZCgpOworCQkJCQkJCQlpZiAoYyA9PSAnLScpIHsgbSsrOyB9CisJCQkJCQkJCWVsc2UgaWYgKChjID09ICc+JykgJiYgKG0gPj0gMikpIHsgYnJlYWs7IH0KKwkJCQkJCQkJZWxzZSB7IG0gPSAwOyB9CisJCQkJCQkJfQorCQkJCQkJCWlzY29tbWVudCA9IHRydWU7CisJCQkJCQl9CisJCQkJCQljID0gcmVhZGVyLnJlYWQoKTsKKwkJCQkJfQorCQkJCQlpZiAoaXNjb21tZW50KSB7IGNvbnRpbnVlOyB9CisJCQkJCWlmICghaW5zdHJ1Y3Rpb24pIHsKKwkJCQkJCVN0cmluZyB0YWduYW1lID0gdGV4dC50b1N0cmluZygpOworCQkJCQkJcGFyZW50bGlzdCA9IG5ldyBPYmplY3RbXSB7IGN1cnJlbnQsIHBhcmVudGxpc3QsIHRhZ25hbWUgfTsKKwkJCQkJCWlmICh2YWxpZGF0ZSkgeworCQkJCQkJCWN1cnJlbnQgPSAoY3VycmVudCAhPSBudWxsKSA/CisJCQkJCQkJCWFkZEVsZW1lbnQoY3VycmVudCwgdGFnbmFtZSkgOiBjcmVhdGUodGFnbmFtZSk7CisJCQkJCQl9IGVsc2UgeworCQkJCQkJCWN1cnJlbnQgPSB0YWduYW1lOworCQkJCQkJfQorCQkJCQl9CisJCQkJCXRleHQuc2V0TGVuZ3RoKDApOworCQkJCQl3aGlsZSAodHJ1ZSkgeworCQkJCQkJYm9vbGVhbiB3aGl0ZXNwYWNlID0gZmFsc2U7CisJCQkJCQl3aGlsZSAoIiBcdFxuXHIiLmluZGV4T2YoYykgIT0gLTEpIHsKKwkJCQkJCQljID0gcmVhZGVyLnJlYWQoKTsKKwkJCQkJCQl3aGl0ZXNwYWNlID0gdHJ1ZTsKKwkJCQkJCX0KKwkJCQkJCWlmIChjID09ICc+JykgeworCQkJCQkJCWlmIChpbnN0cnVjdGlvbikgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigpOyAvLyAnPz4nCisJCQkJCQkJaWYgKCF2YWxpZGF0ZSkgeworCQkJCQkJCQlzdGFydEVsZW1lbnQoKFN0cmluZykgY3VycmVudCwgYXR0cmlidXRlbGlzdCk7IGF0dHJpYnV0ZWxpc3QgPSBudWxsOworCQkJCQkJCX0KKwkJCQkJCQljID0gcmVhZGVyLnJlYWQoKTsKKwkJCQkJCQlicmVhazsKKwkJCQkJCX0KKwkJCQkJCWVsc2UgaWYgKGMgPT0gJy8nKSB7CisJCQkJCQkJaWYgKGluc3RydWN0aW9uKSB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCk7IC8vICc/PicKKwkJCQkJCQlpZiAoKGMgPSByZWFkZXIucmVhZCgpKSAhPSAnPicpIHsKKwkJCQkJCQkJdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigpOyAvLyAnPicKKwkJCQkJCQl9CisJCQkJCQkJaWYgKCF2YWxpZGF0ZSkgeworCQkJCQkJCQlzdGFydEVsZW1lbnQoKFN0cmluZykgY3VycmVudCwgYXR0cmlidXRlbGlzdCk7IGF0dHJpYnV0ZWxpc3QgPSBudWxsOworCQkJCQkJCQllbmRFbGVtZW50KCk7CisJCQkJCQkJfQorCQkJCQkJCWlmIChwYXJlbnRsaXN0WzBdID09IG51bGwpIHsKKwkJCQkJCQkJcmVhZGVyLmNsb3NlKCk7CisJCQkJCQkJCXJldHVybiBjdXJyZW50OworCQkJCQkJCX0KKwkJCQkJCQljdXJyZW50ID0gcGFyZW50bGlzdFswXTsKKwkJCQkJCQlwYXJlbnRsaXN0ID0gKE9iamVjdFtdKSBwYXJlbnRsaXN0WzFdOworCQkJCQkJCWMgPSByZWFkZXIucmVhZCgpOworCQkJCQkJCWJyZWFrOworCQkJCQkJfQorCQkJCQkJZWxzZSBpZiAoaW5zdHJ1Y3Rpb24gJiYgKGMgPT0gJz8nKSkgeworCQkJCQkJCWlmICgoYyA9IHJlYWRlci5yZWFkKCkpICE9ICc+JykgeworCQkJCQkJCQl0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCk7IC8vICc+JworCQkJCQkJCX0KKwkJCQkJCQljID0gcmVhZGVyLnJlYWQoKTsKKwkJCQkJCQlicmVhazsKKwkJCQkJCX0KKwkJCQkJCWVsc2UgaWYgKHdoaXRlc3BhY2UpIHsKKwkJCQkJCQl3aGlsZSAoIj0gXHRcblxyIi5pbmRleE9mKGMpID09IC0xKSB7CisJCQkJCQkJCXRleHQuYXBwZW5kKChjaGFyKSBjKTsKKwkJCQkJCQkJYyA9IHJlYWRlci5yZWFkKCk7CisJCQkJCQkJfQorCQkJCQkJCVN0cmluZyBrZXkgPSB0ZXh0LnRvU3RyaW5nKCk7CisJCQkJCQkJdGV4dC5zZXRMZW5ndGgoMCk7CisJCQkJCQkJd2hpbGUgKCIgXHRcblxyIi5pbmRleE9mKGMpICE9IC0xKSBjID0gcmVhZGVyLnJlYWQoKTsKKwkJCQkJCQlpZiAoYyAhPSAnPScpIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oKTsKKwkJCQkJCQl3aGlsZSAoIiBcdFxuXHIiLmluZGV4T2YoYyA9IHJlYWRlci5yZWFkKCkpICE9IC0xKTsKKwkJCQkJCQljaGFyIHF1b3RlID0gKGNoYXIpIGM7CisJCQkJCQkJaWYgKChjICE9ICdcIicpICYmIChjICE9ICdcJycpKSB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCk7CisJCQkJCQkJd2hpbGUgKHF1b3RlICE9IChjID0gcmVhZGVyLnJlYWQoKSkpIHsKKwkJCQkJCQkJaWYgKGMgPT0gJyYnKSB7CisJCQkJCQkJCQlTdHJpbmdCdWZmZXIgZWIgPSBuZXcgU3RyaW5nQnVmZmVyKCk7CisJCQkJCQkJCQl3aGlsZSAoJzsnICE9IChjID0gcmVhZGVyLnJlYWQoKSkpIHsgZWIuYXBwZW5kKChjaGFyKSBjKTsgfQorCQkJCQkJCQkJU3RyaW5nIGVudGl0eSA9IGViLnRvU3RyaW5nKCk7CisJCQkJCQkJCQlpZiAoImx0Ii5lcXVhbHMoZW50aXR5KSkgeyB0ZXh0LmFwcGVuZCgnPCcpOyB9CisJCQkJCQkJCQllbHNlIGlmICgiZ3QiLmVxdWFscyhlbnRpdHkpKSB7IHRleHQuYXBwZW5kKCc+Jyk7IH0KKwkJCQkJCQkJCWVsc2UgaWYgKCJhbXAiLmVxdWFscyhlbnRpdHkpKSB7IHRleHQuYXBwZW5kKCcmJyk7IH0KKwkJCQkJCQkJCWVsc2UgaWYgKCJxdW90Ii5lcXVhbHMoZW50aXR5KSkgeyB0ZXh0LmFwcGVuZCgnIicpOyB9CisJCQkJCQkJCQllbHNlIGlmICgiYXBvcyIuZXF1YWxzKGVudGl0eSkpIHsgdGV4dC5hcHBlbmQoJ1wnJyk7IH0KKwkJCQkJCQkJCWVsc2UgaWYgKGVudGl0eS5zdGFydHNXaXRoKCIjIikpIHsKKwkJCQkJCQkJCQl0ZXh0LmFwcGVuZCgoY2hhcikgSW50ZWdlci5wYXJzZUludChlbnRpdHkuc3Vic3RyaW5nKDEpKSk7CisJCQkJCQkJCQl9CisJCQkJCQkJCQllbHNlIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oInVua25vd24gIiArICJlbnRpdHkgIiArIGVudGl0eSk7CisJCQkJCQkJCX0KKwkJCQkJCQkJZWxzZSB0ZXh0LmFwcGVuZCgoY2hhcikgYyk7CisJCQkJCQkJfQorCQkJCQkJCWlmICghaW5zdHJ1Y3Rpb24pIHsKKwkJCQkJCQkJaWYgKHZhbGlkYXRlKSB7CisJCQkJCQkJCQlhZGRBdHRyaWJ1dGUoY3VycmVudCwga2V5LCB0ZXh0LnRvU3RyaW5nKCkpOworCQkJCQkJCQl9IGVsc2UgeworCQkJCQkJCQkJaWYgKGF0dHJpYnV0ZWxpc3QgPT0gbnVsbCkgeyBhdHRyaWJ1dGVsaXN0ID0gbmV3IEhhc2h0YWJsZSgpOyB9CisJCQkJCQkJCQlhdHRyaWJ1dGVsaXN0LnB1dChrZXksIHRleHQudG9TdHJpbmcoKSk7CisJCQkJCQkJCX0KKwkJCQkJCQl9CisJCQkJCQkJdGV4dC5zZXRMZW5ndGgoMCk7CisJCQkJCQkJYyA9IHJlYWRlci5yZWFkKCk7CisJCQkJCQl9CisJCQkJCQllbHNlIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oKTsKKwkJCQkJfQorCQkJCX0KKwkJCX0KKwkJCWVsc2UgeworCQkJCWlmICgiIFx0XG5cciIuaW5kZXhPZihjKSAhPSAtMSkgeworCQkJCQlpZiAoKHRleHQubGVuZ3RoKCkgPiAwKSAmJiAodGV4dC5jaGFyQXQodGV4dC5sZW5ndGgoKSAtIDEpICE9ICcgJykpIHsKKwkJCQkJCXRleHQuYXBwZW5kKCcgJyk7CisJCQkJCX0KKwkJCQl9CisJCQkJZWxzZSB7CisJCQkJCXRleHQuYXBwZW5kKChjaGFyKSBjKTsKKwkJCQl9CisJCQkJYyA9IHJlYWRlci5yZWFkKCk7CisJCQl9CisJCX0KKwkJdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigpOworCX0KKworCS8qKgorCSAqIENvbnZlcnQgZW50aXRpZXMuCisJICovCisJcHJpdmF0ZSBzdGF0aWMgU3RyaW5nIGNvbnZlcnQoU3RyaW5nQnVmZmVyIHRleHQpIHsKKwkJcmV0dXJuIG51bGw7CisJfQorCisJLypwcml2YXRlIElucHV0U3RyZWFtIGlucHV0cmVhZGVyOworCXByaXZhdGUgYnl0ZVtdIGRhdGE7CisJcHJpdmF0ZSBpbnQgaW5wdXRmcm9tID0gMCwgaW5wdXR0byA9IDA7CisJcHJpdmF0ZSBpbnQgcmVhZCgpIHRocm93cyBFeGNlcHRpb24geworCQlpZiAoZGF0YSA9PSBudWxsKSB7IGRhdGEgPSBuZXcgYnl0ZVsxMDI0XTsgfQorCQlpZiAoaW5wdXRmcm9tID49IGlucHV0dG8pIHsKKwkJCWlucHV0ZnJvbSA9IDA7CisJCQlpbnB1dHRvID0gaW5wdXRyZWFkZXIucmVhZChkYXRhKTsKKwkJfQorCQlpbnB1dGZyb20rKzsKKwkJcmV0dXJuIGRhdGFbaW5wdXRmcm9tIC0gMV07CisJfSovCisKKwkvKioKKwkgKgorCSAqLworCXByaXZhdGUgdm9pZCBhZGRJbXBsKE9iamVjdCBwYXJlbnQsIE9iamVjdCBjb21wb25lbnQsIGludCBpbmRleCkgeworCQlTdHJpbmcgcGFyZW50Y2xhc3MgPSBnZXRDbGFzcyhwYXJlbnQpOworCQlTdHJpbmcgY2xhc3NuYW1lID0gZ2V0Q2xhc3MoY29tcG9uZW50KTsKKwkJLy9TeXN0ZW0ub3V0LnByaW50bG4oImFkZCAiICsgY2xhc3NuYW1lICsgIiAtPiAiICsgcGFyZW50Y2xhc3MpOworCQlpZiAoKCgiY29tYm9ib3giID09IHBhcmVudGNsYXNzKSAmJiAoImNob2ljZSIgPT0gY2xhc3NuYW1lKSkgfHwKKwkJCQkJKCgidGFiYmVkcGFuZSIgPT0gcGFyZW50Y2xhc3MpICYmICgidGFiIiA9PSBjbGFzc25hbWUpKSB8fAorCQkJCQkoKCJsaXN0IiA9PSBwYXJlbnRjbGFzcykgJiYgKCJpdGVtIiA9PSBjbGFzc25hbWUpKSB8fAorCQkJCQkoKCJ0YWJsZSIgPT0gcGFyZW50Y2xhc3MpICYmICgoImNvbHVtbiIgPT0gY2xhc3NuYW1lKSB8fCAoInJvdyIgPT0gY2xhc3NuYW1lKSkpIHx8CisJCQkJCSgoInJvdyIgPT0gcGFyZW50Y2xhc3MpICYmICgiY2VsbCIgPT0gY2xhc3NuYW1lKSkgfHwKKwkJCQkJKCgoInRyZWUiID09IHBhcmVudGNsYXNzKSB8fCAoIm5vZGUiID09IHBhcmVudGNsYXNzKSkgJiYgKCJub2RlIiA9PSBjbGFzc25hbWUpKSB8fAorCQkJCQkoKCJtZW51YmFyIiA9PSBwYXJlbnRjbGFzcykgJiYgKCJtZW51IiA9PSBjbGFzc25hbWUpKSkgeworCQkJCWNsYXNzbmFtZSA9IGNsYXNzbmFtZTsgLy8gY29tcGlsZXIgYnVnCisJCX0KKwkJZWxzZSBpZiAoKCJtZW51IiA9PSBwYXJlbnRjbGFzcykgJiYgKCgibWVudSIgPT0gY2xhc3NuYW1lKSB8fCAoIm1lbnVpdGVtIiA9PSBjbGFzc25hbWUpIHx8CisJCQkJKCJjaGVja2JveG1lbnVpdGVtIiA9PSBjbGFzc25hbWUpIHx8ICgic2VwYXJhdG9yIiA9PSBjbGFzc25hbWUpKSkgeworCQkJY2xhc3NuYW1lID0gIm1lbnUiOworCQl9CisJCWVsc2UgaWYgKCgicGFuZWwiID09IHBhcmVudGNsYXNzKSB8fCAoImRlc2t0b3AiID09IHBhcmVudGNsYXNzKSB8fAorCQkJCSgic3BsaXRwYW5lIiA9PSBwYXJlbnRjbGFzcykgfHwgKCJkaWFsb2ciID09IHBhcmVudGNsYXNzKSB8fAorCQkJCSgidGFiYmVkcGFuZSIgPT0gcGFyZW50Y2xhc3MpKSB7CisJCQl3aGlsZSAoImNvbXBvbmVudCIgIT0gY2xhc3NuYW1lKSB7CisJCQkJU3RyaW5nIGV4dGVuZGNsYXNzID0gbnVsbDsKKwkJCQlmb3IgKGludCBpID0gMDsgaSA8IGR0ZC5sZW5ndGg7IGkgKz0gMykgeworCQkJCQlpZiAoY2xhc3NuYW1lID09IGR0ZFtpXSkgeworCQkJCQkJZXh0ZW5kY2xhc3MgPSAoU3RyaW5nKSBkdGRbaSArIDFdOyBicmVhazsKKwkJCQkJfQorCQkJCX0KKwkJCQlpZiAoZXh0ZW5kY2xhc3MgPT0gbnVsbCkgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbihjbGFzc25hbWUgKyAiIG5vdCBjb21wb25lbnQiKTsKKwkJCQljbGFzc25hbWUgPSBleHRlbmRjbGFzczsKKwkJCX0KKwkJfQorCQllbHNlIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oY2xhc3NuYW1lICsgIiBhZGQgIiArIHBhcmVudGNsYXNzKTsKKwkJaW5zZXJ0SXRlbShwYXJlbnQsIChTdHJpbmcpIGNsYXNzbmFtZSwgY29tcG9uZW50LCBpbmRleCk7CisJCXNldChjb21wb25lbnQsICI6cGFyZW50IiwgcGFyZW50KTsKKwkJLy9pZiAocGFyZW50ID09IGNvbnRlbnQpIFN5c3RlbS5vdXQucHJpbnRsbihnZXRDbGFzcyhwYXJlbnQpICsgIi5hZGQoIiArIGdldENsYXNzKGNvbXBvbmVudCkgKyAiKSA6ICIgKyBjbGFzc25hbWUpOworCX0KKworCS8qKgorCSAqCisJICovCisJcHJpdmF0ZSBPYmplY3QgYWRkRWxlbWVudChPYmplY3QgcGFyZW50LCBTdHJpbmcgbmFtZSkgeworCQkvL1N5c3RlbS5vdXQucHJpbnRsbigiY3JlYXRlICciICsgbmFtZSArICInIik7CisJCU9iamVjdCBjb21wb25lbnQgPSBjcmVhdGUobmFtZSk7CisJCWFkZEltcGwocGFyZW50LCBjb21wb25lbnQsIC0xKTsKKwkJcmV0dXJuIGNvbXBvbmVudDsKKwl9CisKKwkvKioKKwkgKgorCSAqLworCXByaXZhdGUgdm9pZCBhZGRBdHRyaWJ1dGUoT2JqZWN0IGNvbXBvbmVudCwgU3RyaW5nIGtleSwgU3RyaW5nIHZhbHVlKSB7CisJCS8vU3lzdGVtLm91dC5wcmludGxuKCJhdHRyaWJ1dGUgJyIgKyBrZXkgKyAiJz0nIiArIHZhbHVlICsgIiciKTsKKwkJT2JqZWN0W10gZGVmaW5pdGlvbiA9IGdldERlZmluaXRpb24oY29tcG9uZW50LCBrZXksIG51bGwpOworCQlrZXkgPSAoU3RyaW5nKSBkZWZpbml0aW9uWzFdOworCQlpZiAoInN0cmluZyIgPT0gZGVmaW5pdGlvblswXSkgeworCQkJc2V0U3RyaW5nKGNvbXBvbmVudCwga2V5LCB2YWx1ZSwgKFN0cmluZykgZGVmaW5pdGlvblszXSk7CisJCX0KKwkJZWxzZSBpZiAoImNob2ljZSIgPT0gZGVmaW5pdGlvblswXSkgeworCQkJU3RyaW5nW10gdmFsdWVzID0gKFN0cmluZ1tdKSBkZWZpbml0aW9uWzNdOworCQkJc2V0Q2hvaWNlKGNvbXBvbmVudCwga2V5LCB2YWx1ZSwgdmFsdWVzLCB2YWx1ZXNbMF0pOworCQl9CisJCWVsc2UgaWYgKCJib29sZWFuIiA9PSBkZWZpbml0aW9uWzBdKSB7CisJCQlpZiAoInRydWUiLmVxdWFscyh2YWx1ZSkpIHsKKwkJCQlpZiAoZGVmaW5pdGlvblszXSA9PSBCb29sZWFuLkZBTFNFKSB7CisJCQkJCXNldChjb21wb25lbnQsIGtleSwgQm9vbGVhbi5UUlVFKTsKKwkJCSAJfQorCQkJfQorCQkJZWxzZSBpZiAoImZhbHNlIi5lcXVhbHModmFsdWUpKSB7CisJCQkJaWYgKGRlZmluaXRpb25bM10gPT0gQm9vbGVhbi5UUlVFKSB7CisJCQkJCXNldChjb21wb25lbnQsIGtleSwgQm9vbGVhbi5GQUxTRSk7CisJCQkgCX0KKwkJCX0KKwkJCWVsc2UgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbih2YWx1ZSk7CisJCX0KKwkJZWxzZSBpZiAoImludGVnZXIiID09IGRlZmluaXRpb25bMF0pIHsKKwkJCXNldChjb21wb25lbnQsIGtleSwgSW50ZWdlci52YWx1ZU9mKHZhbHVlKSk7CisJCX0KKwkJZWxzZSBpZiAoImljb24iID09IGRlZmluaXRpb25bMF0pIHsKKwkJCXNldDxlcnJvciBkZXNjcj0iJ3NldChqYXZhLmxhbmcuT2JqZWN0LCBqYXZhLmxhbmcuT2JqZWN0LCBqYXZhLmxhbmcuT2JqZWN0KScgaW4gJ1RoaW5sZXQnIGNhbm5vdCBiZSBhcHBsaWVkIHRvICcoamF2YS5sYW5nLk9iamVjdCwgamF2YS5sYW5nLlN0cmluZywgSW1hZ2UpJyI+KGNvbXBvbmVudCwga2V5LCBnZXRJY29uKHZhbHVlKSk8L2Vycm9yPjsKKwkJfQorCQllbHNlIGlmICgibWV0aG9kIiA9PSBkZWZpbml0aW9uWzBdKSB7CisJCQl0cnkgeyAvL2phdmEKKwkJCQlzZXQ8ZXJyb3IgZGVzY3I9IidzZXQoamF2YS5sYW5nLk9iamVjdCwgamF2YS5sYW5nLk9iamVjdCwgamF2YS5sYW5nLk9iamVjdCknIGluICdUaGlubGV0JyBjYW5ub3QgYmUgYXBwbGllZCB0byAnKGphdmEubGFuZy5PYmplY3QsIGphdmEubGFuZy5TdHJpbmcsIGphdmEubGFuZy5yZWZsZWN0Lk1ldGhvZCknIj4oY29tcG9uZW50LCBrZXksIGdldENsYXNzKCkuZ2V0TWV0aG9kKHZhbHVlLCBudWxsKSk8L2Vycm9yPjsgLy9qYXZhCisJCQl9IGNhdGNoIChFeGNlcHRpb24gZXhjKSB7IFN5c3RlbS5lcnIucHJpbnRsbih2YWx1ZSk7IGV4Yy5wcmludFN0YWNrVHJhY2UoKTsgfSAvL2phdmEKKwkJCS8vbWlkcCBzZXRNZXRob2QoY29tcG9uZW50LCBrZXksIHZhbHVlKTsKKwkJfQorCQkvL2phdmE+CisJCWVsc2UgaWYgKCJiZWFuIiA9PSBkZWZpbml0aW9uWzBdKSB7CisJCQl0cnkgeworCQkJCXNldChjb21wb25lbnQsIGtleSwgKENvbXBvbmVudCkgQ2xhc3MuZm9yTmFtZSh2YWx1ZSkubmV3SW5zdGFuY2UoKSk7CisJCQl9IGNhdGNoIChFeGNlcHRpb24gZXhjKSB7IFN5c3RlbS5lcnIucHJpbnRsbih2YWx1ZSk7IGV4Yy5wcmludFN0YWNrVHJhY2UoKTsgfQorCQl9CisJCS8vPGphdmEKKwkJZWxzZSB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKChTdHJpbmcpIGRlZmluaXRpb25bMF0pOworCX0KKworCS8qKgorCSAqCisJICovCisJcHJpdmF0ZSBPYmplY3RbXSBnZXREZWZpbml0aW9uKE9iamVjdCBjb21wb25lbnQsIFN0cmluZyBrZXksIFN0cmluZyB0eXBlKSB7CisJCU9iamVjdCBjbGFzc25hbWUgPSBnZXRDbGFzcyhjb21wb25lbnQpOworCQlPYmplY3QgY3VycmVudG5hbWUgPSBjbGFzc25hbWU7CisJCXdoaWxlIChjbGFzc25hbWUgIT0gbnVsbCkgeworCQkJZm9yIChpbnQgaSA9IDA7IGkgPCBkdGQubGVuZ3RoOyBpICs9IDMpIHsKKwkJCQlpZiAoZHRkW2ldID09IGNsYXNzbmFtZSkgeworCQkJCQlPYmplY3RbXVtdIGF0dHJpYnV0ZXMgPSAoT2JqZWN0W11bXSkgZHRkW2kgKyAyXTsKKwkJCQkJZm9yIChpbnQgaiA9IDA7IGogPCBhdHRyaWJ1dGVzLmxlbmd0aDsgaisrKSB7CisJCQkJCQlpZiAoYXR0cmlidXRlc1tqXVsxXS5lcXVhbHMoa2V5KSkgeworCQkJCQkJCWlmICgodHlwZSAhPSBudWxsKSAmJiAodHlwZSAhPSBhdHRyaWJ1dGVzW2pdWzBdKSkgeworCQkJCQkJCQl0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKGF0dHJpYnV0ZXNbal1bMF0udG9TdHJpbmcoKSk7CisJCQkJCQkJfQorCQkJCQkJCXJldHVybiBhdHRyaWJ1dGVzW2pdOworCQkJCQkJfQorCQkJCQl9CisJCQkJCWNsYXNzbmFtZSA9IGR0ZFtpICsgMV07CisJCQkJCWJyZWFrOworCQkJCX0KKwkJCX0KKwkJfQorCQl0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJ1bmtub3duICIgKyBrZXkgKyAiICIgKyB0eXBlICsKKwkJCSIgZm9yICIgKyBjdXJyZW50bmFtZSk7CisJfQorCisJLyoqCisJICoKKwkgKi8KKwkvL3ByaXZhdGUgdm9pZCBhZGRDb250ZW50KE9iamVjdCBjb21wb25lbnQsIFN0cmluZyBjb250ZW50KSB7CisJCS8vc2V0KGNvbXBvbmVudCwgImNvbnRlbnQiLCBjb250ZW50KTsKKwkvL30KKworCS8vIC0tLS0tIC0tLS0tIC0tLS0tIC0tLS0tIC0tLS0tIC0tLS0tIC0tLS0tIC0tLS0tIC0tLS0tIC0tLS0tIC0tLS0tIC0tLS0tCisKKwkvKioKKwkgKgorCSAqLworCXB1YmxpYyB2b2lkIHNldFN0cmluZyhPYmplY3QgY29tcG9uZW50LCBTdHJpbmcga2V5LCBTdHJpbmcgdmFsdWUpIHsKKwkJT2JqZWN0W10gZGVmaW5pdGlvbiA9IGdldERlZmluaXRpb24oY29tcG9uZW50LCBrZXksICJzdHJpbmciKTsKKwkJaWYgKHNldFN0cmluZyhjb21wb25lbnQsIChTdHJpbmcpIGRlZmluaXRpb25bMV0sCisJCQkJdmFsdWUsIChTdHJpbmcpIGRlZmluaXRpb25bM10pKSB7CisJCQl1cGRhdGUoY29tcG9uZW50LCBkZWZpbml0aW9uWzJdKTsKKwkJfQorCX0KKworCS8qKgorCSAqCisJICovCisJcHVibGljIFN0cmluZyBnZXRTdHJpbmcoT2JqZWN0IGNvbXBvbmVudCwgU3RyaW5nIGtleSkgeworCQlPYmplY3RbXSBkZWZpbml0aW9uID0gZ2V0RGVmaW5pdGlvbihjb21wb25lbnQsIGtleSwgInN0cmluZyIpOworCQlyZXR1cm4gZ2V0U3RyaW5nKGNvbXBvbmVudCwgKFN0cmluZykgZGVmaW5pdGlvblsxXSwKKwkJCShTdHJpbmcpIGRlZmluaXRpb25bM10pOworCX0KKworCS8qKgorCSAqCisJICovCisJcHVibGljIHZvaWQgc2V0Q2hvaWNlKE9iamVjdCBjb21wb25lbnQsIFN0cmluZyBrZXksIFN0cmluZyB2YWx1ZSkgeworCQlPYmplY3RbXSBkZWZpbml0aW9uID0gZ2V0RGVmaW5pdGlvbihjb21wb25lbnQsIGtleSwgImNob2ljZSIpOworCQlTdHJpbmdbXSB2YWx1ZXMgPSAoU3RyaW5nW10pIGRlZmluaXRpb25bM107CisJCWlmIChzZXRDaG9pY2UoY29tcG9uZW50LCAoU3RyaW5nKSBkZWZpbml0aW9uWzFdLAorCQkJCXZhbHVlLCB2YWx1ZXMsIHZhbHVlc1swXSkpIHsKKwkJCXVwZGF0ZShjb21wb25lbnQsIGRlZmluaXRpb25bMl0pOworCQl9CisJfQorCisJLyoqCisJICoKKwkgKi8KKwlwdWJsaWMgU3RyaW5nIGdldENob2ljZShPYmplY3QgY29tcG9uZW50LCBTdHJpbmcga2V5KSB7CisJCU9iamVjdFtdIGRlZmluaXRpb24gPSBnZXREZWZpbml0aW9uKGNvbXBvbmVudCwga2V5LCAiY2hvaWNlIik7CisJCXJldHVybiBnZXRTdHJpbmcoY29tcG9uZW50LCAoU3RyaW5nKSBkZWZpbml0aW9uWzFdLAorCQkJKChTdHJpbmdbXSkgZGVmaW5pdGlvblszXSlbMF0pOworCX0KKworCS8qKgorCSAqCisJICovCisJcHVibGljIHZvaWQgc2V0Qm9vbGVhbihPYmplY3QgY29tcG9uZW50LCBTdHJpbmcga2V5LCBib29sZWFuIHZhbHVlKSB7CisJCU9iamVjdFtdIGRlZmluaXRpb24gPSBnZXREZWZpbml0aW9uKGNvbXBvbmVudCwga2V5LCAiYm9vbGVhbiIpOworCQlpZiAoc2V0Qm9vbGVhbihjb21wb25lbnQsIChTdHJpbmcpIGRlZmluaXRpb25bMV0sCisJCQkJdmFsdWUsIChkZWZpbml0aW9uWzNdID09IEJvb2xlYW4uVFJVRSkpKSB7CisJCQl1cGRhdGUoY29tcG9uZW50LCBkZWZpbml0aW9uWzJdKTsKKwkJfQorCX0KKworCS8qKgorCSAqCisJICovCisJcHVibGljIGJvb2xlYW4gZ2V0Qm9vbGVhbihPYmplY3QgY29tcG9uZW50LCBTdHJpbmcga2V5KSB7CisJCU9iamVjdFtdIGRlZmluaXRpb24gPSBnZXREZWZpbml0aW9uKGNvbXBvbmVudCwga2V5LCAiYm9vbGVhbiIpOworCQlyZXR1cm4gZ2V0Qm9vbGVhbihjb21wb25lbnQsIChTdHJpbmcpIGRlZmluaXRpb25bMV0sCisJCQkoZGVmaW5pdGlvblszXSA9PSBCb29sZWFuLlRSVUUpKTsKKwl9CisKKwkvKioKKwkgKgorCSAqLworCXB1YmxpYyB2b2lkIHNldEludGVnZXIoT2JqZWN0IGNvbXBvbmVudCwgU3RyaW5nIGtleSwgaW50IHZhbHVlKSB7CisJCU9iamVjdFtdIGRlZmluaXRpb24gPSBnZXREZWZpbml0aW9uKGNvbXBvbmVudCwga2V5LCAiaW50ZWdlciIpOworCQlpZiAoc2V0SW50ZWdlcihjb21wb25lbnQsIChTdHJpbmcpIGRlZmluaXRpb25bMV0sCisJCQkJdmFsdWUsICgoSW50ZWdlcikgZGVmaW5pdGlvblszXSkuaW50VmFsdWUoKSkpIHsKKwkJCXVwZGF0ZShjb21wb25lbnQsIGRlZmluaXRpb25bMl0pOworCQl9CisJfQorCisJLyoqCisJICoKKwkgKi8KKwlwdWJsaWMgaW50IGdldEludGVnZXIoT2JqZWN0IGNvbXBvbmVudCwgU3RyaW5nIGtleSkgeworCQlPYmplY3RbXSBkZWZpbml0aW9uID0gZ2V0RGVmaW5pdGlvbihjb21wb25lbnQsIGtleSwgImludGVnZXIiKTsKKwkJcmV0dXJuIGdldEludGVnZXIoY29tcG9uZW50LCAoU3RyaW5nKSBkZWZpbml0aW9uWzFdLAorCQkJKChJbnRlZ2VyKSBkZWZpbml0aW9uWzNdKS5pbnRWYWx1ZSgpKTsKKwl9CisKKwkvKioKKwkgKgorCSAqLworCXB1YmxpYyB2b2lkIHNldEljb24oT2JqZWN0IGNvbXBvbmVudCwgU3RyaW5nIGtleSwgPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ0ltYWdlJyI+SW1hZ2U8L2Vycm9yPiBpY29uKSB7CisJCU9iamVjdFtdIGRlZmluaXRpb24gPSBnZXREZWZpbml0aW9uKGNvbXBvbmVudCwga2V5LCAiaWNvbiIpOworCQlpZiAoc2V0PGVycm9yIGRlc2NyPSInc2V0KGphdmEubGFuZy5PYmplY3QsIGphdmEubGFuZy5PYmplY3QsIGphdmEubGFuZy5PYmplY3QpJyBpbiAnVGhpbmxldCcgY2Fubm90IGJlIGFwcGxpZWQgdG8gJyhqYXZhLmxhbmcuT2JqZWN0LCBqYXZhLmxhbmcuU3RyaW5nLCBJbWFnZSknIj4oY29tcG9uZW50LCAoU3RyaW5nKSBkZWZpbml0aW9uWzFdLCBpY29uKTwvZXJyb3I+KSB7CisJCQl1cGRhdGUoY29tcG9uZW50LCBkZWZpbml0aW9uWzJdKTsKKwkJfQorCX0KKworCS8qKgorCSAqCisJICovCisJcHVibGljIDxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdJbWFnZSciPkltYWdlPC9lcnJvcj4gZ2V0SWNvbihPYmplY3QgY29tcG9uZW50LCBTdHJpbmcga2V5KSB7CisJCU9iamVjdFtdIGRlZmluaXRpb24gPSBnZXREZWZpbml0aW9uKGNvbXBvbmVudCwga2V5LCAiaWNvbiIpOworCQlyZXR1cm4gZ2V0SWNvbihjb21wb25lbnQsIChTdHJpbmcpIGRlZmluaXRpb25bMV0sICg8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnSW1hZ2UnIj5JbWFnZTwvZXJyb3I+KSBkZWZpbml0aW9uWzNdKTsKKwl9CisKKwkvKioKKwkgKgorCSAqLworCXB1YmxpYyB2b2lkIHNldE1ldGhvZChPYmplY3QgY29tcG9uZW50LCBTdHJpbmcga2V5LCA8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnTWV0aG9kJyI+TWV0aG9kPC9lcnJvcj4gbWV0aG9kKSB7IC8vamF2YQorCS8vbWlkcCBwdWJsaWMgdm9pZCBzZXRNZXRob2QoT2JqZWN0IGNvbXBvbmVudCwgU3RyaW5nIGtleSwgU3RyaW5nIG1ldGhvZCkgeworCQlPYmplY3RbXSBkZWZpbml0aW9uID0gZ2V0RGVmaW5pdGlvbihjb21wb25lbnQsIGtleSwgIm1ldGhvZCIpOworCQlpZiAoc2V0PGVycm9yIGRlc2NyPSInc2V0KGphdmEubGFuZy5PYmplY3QsIGphdmEubGFuZy5PYmplY3QsIGphdmEubGFuZy5PYmplY3QpJyBpbiAnVGhpbmxldCcgY2Fubm90IGJlIGFwcGxpZWQgdG8gJyhqYXZhLmxhbmcuT2JqZWN0LCBqYXZhLmxhbmcuU3RyaW5nLCBNZXRob2QpJyI+KGNvbXBvbmVudCwgKFN0cmluZykgZGVmaW5pdGlvblsxXSwgbWV0aG9kKTwvZXJyb3I+KSB7CisJCQl1cGRhdGUoY29tcG9uZW50LCBkZWZpbml0aW9uWzJdKTsKKwkJfQorCX0KKworCS8qKgorCSAqCisJICovCisJcHVibGljIDxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdNZXRob2QnIj5NZXRob2Q8L2Vycm9yPiBnZXRNZXRob2QoT2JqZWN0IGNvbXBvbmVudCwgU3RyaW5nIGtleSkgeyAvL2phdmEKKwkvL21pZHAgcHVibGljIFN0cmluZyBnZXRNZXRob2QoT2JqZWN0IGNvbXBvbmVudCwgU3RyaW5nIGtleSkgeworCQlPYmplY3RbXSBkZWZpbml0aW9uID0gZ2V0RGVmaW5pdGlvbihjb21wb25lbnQsIGtleSwgIm1ldGhvZCIpOworCQlyZXR1cm4gKDxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdNZXRob2QnIj5NZXRob2Q8L2Vycm9yPikgZ2V0KGNvbXBvbmVudCwgKFN0cmluZykgZGVmaW5pdGlvblsxXSk7IC8vamF2YQorCQkvL21pZHAgcmV0dXJuIChTdHJpbmcpIGdldChjb21wb25lbnQsIChTdHJpbmcpIGRlZmluaXRpb25bMV0pOworCX0KKworCS8qKgorCSAqCisJICovCisJcHJpdmF0ZSB2b2lkIHVwZGF0ZShPYmplY3QgY29tcG9uZW50LCBPYmplY3QgbW9kZSkgeworCQlpZiAoInBhcmVudCIgPT0gbW9kZSkgeworCQkJY29tcG9uZW50ID0gZ2V0UGFyZW50KGNvbXBvbmVudCk7CisJCQltb2RlID0gInZhbGlkYXRlIjsKKwkJfQorCQlib29sZWFuIGZpcnN0cGFpbnQgPSB0cnVlOworCQlpbnQgeCA9IDA7IGludCB5ID0gMDsgaW50IHdpZHRoID0gMDsgaW50IGhlaWdodCA9IDA7CisJCXdoaWxlIChjb21wb25lbnQgIT0gbnVsbCkgeworCQkJaWYgKCFnZXRCb29sZWFuKGNvbXBvbmVudCwgInZpc2libGUiLCB0cnVlKSkgeyBicmVhazsgfQorCQkJaWYgKCJwYWludCIgPT0gbW9kZSkgey8vfHwgKGZpcnN0cGFpbnQgJiYgKGNvbXBvbmVudCA9PSBjb250ZW50KSkKKwkJCQk8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnUmVjdGFuZ2xlJyI+UmVjdGFuZ2xlPC9lcnJvcj4gYm91bmRzID0gZ2V0UmVjdGFuZ2xlKGNvbXBvbmVudCwgImJvdW5kcyIpOworCQkJCWlmIChib3VuZHMgPT0gbnVsbCkgeyByZXR1cm47IH0KKwkJCQlpZiAoZmlyc3RwYWludCkgeworCQkJCQl4ID0gYm91bmRzLjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICd4JyI+eDwvZXJyb3I+OyB5ID0gYm91bmRzLjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICd5JyI+eTwvZXJyb3I+OworCQkJCQl3aWR0aCA9IE1hdGguYWJzPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBtZXRob2QgJ2Ficyg/KSciPihib3VuZHMuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ3dpZHRoJyI+d2lkdGg8L2Vycm9yPik8L2Vycm9yPjsgaGVpZ2h0ID0gYm91bmRzLjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdoZWlnaHQnIj5oZWlnaHQ8L2Vycm9yPjsKKwkJCQkJZmlyc3RwYWludCA9IGZhbHNlOworCQkJCX0gZWxzZSB7CisJCQkJCXggKz0gYm91bmRzLjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICd4JyI+eDwvZXJyb3I+OyB5ICs9IGJvdW5kcy48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAneSciPnk8L2Vycm9yPjsKKwkJCQl9CisJCQkJaWYgKGNvbXBvbmVudCA9PSBjb250ZW50KSB7CisJCQkJCXJlcGFpbnQoeCwgeSwgd2lkdGgsIGhlaWdodCk7CisJCQkJfQorCQkJfQorCQkJT2JqZWN0IHBhcmVudCA9IGdldFBhcmVudChjb21wb25lbnQpOworCQkJU3RyaW5nIGNsYXNzbmFtZSA9IGdldENsYXNzKHBhcmVudCk7CisJCQlpZiAoImNvbWJvYm94IiA9PSBjbGFzc25hbWUpIHsKKwkJCQlwYXJlbnQgPSBnZXQocGFyZW50LCAiY29tYm9saXN0Iik7CisJCQl9CisJCQllbHNlIGlmICgibWVudSIgPT0gY2xhc3NuYW1lKSB7CisJCQkJcGFyZW50ID0gZ2V0KHBhcmVudCwgInBvcHVwbWVudSIpOworCQkJfQorCQkJZWxzZSBpZiAoKCJwYWludCIgPT0gbW9kZSkgJiYgKCJ0YWJiZWRwYW5lIiA9PSBjbGFzc25hbWUpKSB7CisJCQkJaWYgKGdldEl0ZW1JbXBsKHBhcmVudCwgImNvbXBvbmVudCIsCisJCQkJCQlnZXRJbnRlZ2VyKHBhcmVudCwgInNlbGVjdGVkIiwgMCkpICE9IGNvbXBvbmVudCkgeyBicmVhazsgfQorCQkJfQorCQkJaWYgKCgibGF5b3V0IiA9PSBtb2RlKSB8fCAoKCJ2YWxpZGF0ZSIgPT0gbW9kZSkgJiYKKwkJCQkJKCgibGlzdCIgPT0gY2xhc3NuYW1lKSB8fCAoInRhYmxlIiA9PSBjbGFzc25hbWUpIHx8CisJCQkJCSgidHJlZSIgPT0gY2xhc3NuYW1lKSB8fCAoImRpYWxvZyIgPT0gY2xhc3NuYW1lKSB8fCAocGFyZW50ID09IGNvbnRlbnQpKSkpIHsKKwkJCQk8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnUmVjdGFuZ2xlJyI+UmVjdGFuZ2xlPC9lcnJvcj4gYm91bmRzID0gZ2V0UmVjdGFuZ2xlKHBhcmVudCwgImJvdW5kcyIpOworCQkJCWlmIChib3VuZHMgPT0gbnVsbCkgeyByZXR1cm47IH0KKwkJCQlib3VuZHMuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ3dpZHRoJyI+d2lkdGg8L2Vycm9yPiA9IC0xICogTWF0aC5hYnM8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIG1ldGhvZCAnYWJzKD8pJyI+KGJvdW5kcy48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnd2lkdGgnIj53aWR0aDwvZXJyb3I+KTwvZXJyb3I+OworCQkJCW1vZGUgPSAicGFpbnQiOworCQkJfQorCQkJY29tcG9uZW50ID0gcGFyZW50OworCQl9CisJfQorCisJLy8gLS0tLS0gLS0tLS0gLS0tLS0gLS0tLS0gLS0tLS0gLS0tLS0gLS0tLS0gLS0tLS0gLS0tLS0gLS0tLS0gLS0tLS0gLS0tLS0KKworCS8qKgorCSAqCisJICovCisJcHJpdmF0ZSBib29sZWFuIHNldFN0cmluZyhPYmplY3QgY29tcG9uZW50LAorCQkJU3RyaW5nIGtleSwgU3RyaW5nIHZhbHVlLCBTdHJpbmcgZGVmYXVsdHZhbHVlKSB7CisJCS8qYm9vbGVhbiBjaGFuZ2VkID0gc2V0KGNvbXBvbmVudCwga2V5LCB2YWx1ZSk7CisJCWlmIChjaGFuZ2VkICYmICgibmFtZSIgPT0ga2V5KSkgeworCQkJLy9mb3IgKENsYXNzIGNscyA9IGdldENsYXNzKCk7IGNscyAhPSBudWxsOyBjbHMgPSBjbHMuZ2V0U3VwZXJjbGFzcygpKSB7CisJCQlGaWVsZFtdIGZpZWxkcyA9IGdldENsYXNzKCkuZ2V0RGVjbGFyZWRGaWVsZHMoKTsKKwkJCWZvciAoaW50IGkgPSAwOyBpIDwgZmllbGRzLmxlbmd0aDsgaSsrKSB7CisJCQkJaWYgKChmaWVsZHNbaV0uZ2V0VHlwZSgpID09IE9iamVjdC5jbGFzcykgJiYKKwkJCQkJCWZpZWxkc1tpXS5nZXROYW1lKCkuZXF1YWxzKHZhbHVlKSkgeworCQkJCQl0cnkgeworCQkJCQkJZmllbGRzW2ldLnNldCh0aGlzLCBjb21wb25lbnQpOworCQkJCQkJcmV0dXJuIHRydWU7CisJCQkJCX0gY2F0Y2ggKElsbGVnYWxBY2Nlc3NFeGNlcHRpb24gaWFlKSB7fQorCQkJCX0KKwkJCX0KKwkJCS8vfQorCQkJdHJ5IHsKKwkJCQlnZXRDbGFzcygpLmdldEZpZWxkKHZhbHVlKS5zZXQodGhpcywgY29tcG9uZW50KTsKKwkJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBleGMpIHt9CisJCX0KKwkJcmV0dXJuIGNoYW5nZWQ7Ki8KKwkJcmV0dXJuIHNldChjb21wb25lbnQsIGtleSwgdmFsdWUpOworCX0KKworCS8qKgorCSAqCisJICovCisJcHJpdmF0ZSBTdHJpbmcgZ2V0U3RyaW5nKE9iamVjdCBjb21wb25lbnQsCisJCQlTdHJpbmcga2V5LCBTdHJpbmcgZGVmYXVsdHZhbHVlKSB7CisJCU9iamVjdCB2YWx1ZSA9IGdldChjb21wb25lbnQsIGtleSk7CisJCXJldHVybiAodmFsdWUgPT0gbnVsbCkgPyBkZWZhdWx0dmFsdWUgOiAoU3RyaW5nKSB2YWx1ZTsKKwl9CisKKwkvKioKKwkgKgorCSAqLworCXByaXZhdGUgYm9vbGVhbiBzZXRDaG9pY2UoT2JqZWN0IGNvbXBvbmVudCwKKwkJCVN0cmluZyBrZXksIFN0cmluZyB2YWx1ZSwgU3RyaW5nW10gdmFsdWVzLCBTdHJpbmcgZGVmYXVsdHZhbHVlKSB7CisJCWlmICh2YWx1ZSA9PSBudWxsKSB7CisJCQlyZXR1cm4gc2V0KGNvbXBvbmVudCwga2V5LCBkZWZhdWx0dmFsdWUpOworCQl9CisJCWZvciAoaW50IGkgPSAwOyBpIDwgdmFsdWVzLmxlbmd0aDsgaSsrKSB7CisJCQlpZiAodmFsdWUuZXF1YWxzKHZhbHVlc1tpXSkpIHsKKwkJCQlyZXR1cm4gc2V0KGNvbXBvbmVudCwga2V5LCB2YWx1ZXNbaV0pOworCQkJfQorCQl9CisJCXRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oInVua25vd24gIiArIHZhbHVlICsgIiBmb3IgIiArIGtleSk7CisJfQorCisJLyoqCisJICoKKwkgKi8KKwlwcml2YXRlIGJvb2xlYW4gc2V0SWNvbihPYmplY3QgY29tcG9uZW50LAorCQkJU3RyaW5nIGtleSwgU3RyaW5nIHBhdGgsIDxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdJbWFnZSciPkltYWdlPC9lcnJvcj4gZGVmYXVsdHZhbHVlKSB7CisJCXJldHVybiBzZXQ8ZXJyb3IgZGVzY3I9IidzZXQoamF2YS5sYW5nLk9iamVjdCwgamF2YS5sYW5nLk9iamVjdCwgamF2YS5sYW5nLk9iamVjdCknIGluICdUaGlubGV0JyBjYW5ub3QgYmUgYXBwbGllZCB0byAnKGphdmEubGFuZy5PYmplY3QsIGphdmEubGFuZy5TdHJpbmcsIEltYWdlKSciPihjb21wb25lbnQsIGtleSwgKHBhdGggIT0gbnVsbCkgPyBnZXRJY29uKHBhdGgpIDogZGVmYXVsdHZhbHVlKTwvZXJyb3I+OworCX0KKworCS8qKgorCSAqCisJICovCisJcHJpdmF0ZSA8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnSW1hZ2UnIj5JbWFnZTwvZXJyb3I+IGdldEljb24oT2JqZWN0IGNvbXBvbmVudCwgU3RyaW5nIGtleSwgPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ0ltYWdlJyI+SW1hZ2U8L2Vycm9yPiBkZWZhdWx0dmFsdWUpIHsKKwkJT2JqZWN0IHZhbHVlID0gZ2V0KGNvbXBvbmVudCwga2V5KTsKKwkJcmV0dXJuICh2YWx1ZSA9PSBudWxsKSA/IGRlZmF1bHR2YWx1ZSA6ICg8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnSW1hZ2UnIj5JbWFnZTwvZXJyb3I+KSB2YWx1ZTsKKwl9CisKKwkvKioKKwkgKgorCSAqLworCXByaXZhdGUgYm9vbGVhbiBzZXRCb29sZWFuKE9iamVjdCBjb21wb25lbnQsCisJCQlTdHJpbmcga2V5LCBib29sZWFuIHZhbHVlLCBib29sZWFuIGRlZmF1bHR2YWx1ZSkgeworCQlyZXR1cm4gc2V0KGNvbXBvbmVudCwga2V5LCAodmFsdWUgPT0gZGVmYXVsdHZhbHVlKSA/IG51bGwgOgorCQkJKHZhbHVlID8gQm9vbGVhbi5UUlVFIDogQm9vbGVhbi5GQUxTRSkpOworCX0KKworCS8qKgorCSAqCisJICovCisJcHJpdmF0ZSBib29sZWFuIGdldEJvb2xlYW4oT2JqZWN0IGNvbXBvbmVudCwKKwkJCVN0cmluZyBrZXksIGJvb2xlYW4gZGVmYXVsdHZhbHVlKSB7CisJCU9iamVjdCB2YWx1ZSA9IGdldChjb21wb25lbnQsIGtleSk7CisJCXJldHVybiAodmFsdWUgPT0gbnVsbCkgPyBkZWZhdWx0dmFsdWUgOiAoKEJvb2xlYW4pIHZhbHVlKS5ib29sZWFuVmFsdWUoKTsKKwl9CisKKwkvKioKKwkgKgorCSAqLworCXByaXZhdGUgYm9vbGVhbiBzZXRJbnRlZ2VyKE9iamVjdCBjb21wb25lbnQsCisJCQlTdHJpbmcga2V5LCBpbnQgdmFsdWUsIGludCBkZWZhdWx0dmFsdWUpIHsKKwkJcmV0dXJuIHNldChjb21wb25lbnQsIGtleSwgKHZhbHVlID09IGRlZmF1bHR2YWx1ZSkgPyBudWxsIDogbmV3IEludGVnZXIodmFsdWUpKTsKKwl9CisKKwkvKioKKwkgKgorCSAqLworCXByaXZhdGUgaW50IGdldEludGVnZXIoT2JqZWN0IGNvbXBvbmVudCwgU3RyaW5nIGtleSwgaW50IGRlZmF1bHR2YWx1ZSkgeworCQlPYmplY3QgdmFsdWUgPSBnZXQoY29tcG9uZW50LCBrZXkpOworCQlyZXR1cm4gKHZhbHVlID09IG51bGwpID8gZGVmYXVsdHZhbHVlIDogKChJbnRlZ2VyKSB2YWx1ZSkuaW50VmFsdWUoKTsKKwl9CisKKwkvKioKKwkgKgorCSAqLworCXByaXZhdGUgdm9pZCBzZXRSZWN0YW5nbGUoT2JqZWN0IGNvbXBvbmVudCwKKwkJCVN0cmluZyBrZXksIGludCB4LCBpbnQgeSwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KSB7CisJCTxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdSZWN0YW5nbGUnIj5SZWN0YW5nbGU8L2Vycm9yPiByZWN0YW5nbGUgPSBnZXRSZWN0YW5nbGUoY29tcG9uZW50LCBrZXkpOworCQlpZiAocmVjdGFuZ2xlICE9IG51bGwpIHsKKwkJCXJlY3RhbmdsZS48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAneCciPng8L2Vycm9yPiA9IHg7IHJlY3RhbmdsZS48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAneSciPnk8L2Vycm9yPiA9IHk7CisJCQlyZWN0YW5nbGUuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ3dpZHRoJyI+d2lkdGg8L2Vycm9yPiA9IHdpZHRoOyByZWN0YW5nbGUuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ2hlaWdodCciPmhlaWdodDwvZXJyb3I+ID0gaGVpZ2h0OworCQl9CisJCWVsc2UgeworCQkJc2V0KGNvbXBvbmVudCwga2V5LCBuZXcgPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ1JlY3RhbmdsZSciPlJlY3RhbmdsZTwvZXJyb3I+KHgsIHksIHdpZHRoLCBoZWlnaHQpKTsgLy9qYXZhCisJCQkvL21pZHAgc2V0KGNvbXBvbmVudCwga2V5LCBuZXcgaW50W10geyB3aWR0aCwgaGVpZ2h0LCB4LCB5IH0pOworCQl9CisJfQorCisJLyoqCisJICoKKwkgKi8KKwlwcml2YXRlIDxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdSZWN0YW5nbGUnIj5SZWN0YW5nbGU8L2Vycm9yPiBnZXRSZWN0YW5nbGUoT2JqZWN0IGNvbXBvbmVudCwgU3RyaW5nIGtleSkgeworCQlyZXR1cm4gKDxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdSZWN0YW5nbGUnIj5SZWN0YW5nbGU8L2Vycm9yPikgZ2V0KGNvbXBvbmVudCwga2V5KTsgLy9qYXZhCisJCS8vbWlkcCByZXR1cm4gKGludFtdKSBnZXQoY29tcG9uZW50LCBrZXkpOworCX0KKworCS8vIC0tLS0tIC0tLS0tIC0tLS0tIC0tLS0tIC0tLS0tIC0tLS0tIC0tLS0tIC0tLS0tIC0tLS0tIC0tLS0tIC0tLS0tIC0tLS0tCisKKwkvKioKKwkgKgorCSAqLworCXB1YmxpYyA8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnSW1hZ2UnIj5JbWFnZTwvZXJyb3I+IGdldEljb24oU3RyaW5nIHBhdGgpIHsKKwkJcmV0dXJuIGdldEljb24ocGF0aCwgdHJ1ZSk7CisJfQorCisJLyoqCisJICoKKwkgKi8KKwlwdWJsaWMgPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ0ltYWdlJyI+SW1hZ2U8L2Vycm9yPiBnZXRJY29uKFN0cmluZyBwYXRoLCBib29sZWFuIHByZWxvYWQpIHsKKwkJaWYgKChwYXRoID09IG51bGwpIHx8IChwYXRoLmxlbmd0aCgpID09IDApKSB7CisJCQlyZXR1cm4gbnVsbDsKKwkJfQorCQk8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnSW1hZ2UnIj5JbWFnZTwvZXJyb3I+IGltYWdlID0gbnVsbDsgLy8oSW1hZ2UpIGltYWdlcG9vbC5nZXQocGF0aCk7CisJCS8vbWlkcCB0cnkgeworCQkvL21pZHAgCWltYWdlID0gSW1hZ2UuY3JlYXRlSW1hZ2UocGF0aCk7CisJCS8vbWlkcCB9IGNhdGNoIChJT0V4Y2VwdGlvbiBpb2UpIHt9CisJCS8vamF2YT4KKwkJdHJ5IHsKKwkJCWltYWdlID0gPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ1Rvb2xraXQnIj5Ub29sa2l0PC9lcnJvcj4uZ2V0RGVmYXVsdFRvb2xraXQoKS5nZXRJbWFnZShnZXRDbGFzcygpLmdldFJlc291cmNlKHBhdGgpKTsKKwkJCS8vaW1hZ2UgPSBUb29sa2l0LmdldERlZmF1bHRUb29sa2l0KCkuZ2V0SW1hZ2UoQ2xhc3NMb2FkZXIuZ2V0U3lzdGVtUmVzb3VyY2UocGF0aCkpOworCQl9IGNhdGNoIChUaHJvd2FibGUgZSkge30KKwkJaWYgKGltYWdlID09IG51bGwpIHsKKwkJCXRyeSB7CisJCQkJSW5wdXRTdHJlYW0gaXMgPSBnZXRDbGFzcygpLmdldFJlc291cmNlQXNTdHJlYW0ocGF0aCk7CisJCQkJLy9JbnB1dFN0cmVhbSBpcyA9IENsYXNzTG9hZGVyLmdldFN5c3RlbVJlc291cmNlQXNTdHJlYW0ocGF0aCk7CisJCQkJaWYgKGlzICE9IG51bGwpIHsKKwkJCQkJYnl0ZVtdIGRhdGEgPSBuZXcgYnl0ZVtpcy5hdmFpbGFibGUoKV07CisJCQkJCWlzLnJlYWQoZGF0YSwgMCwgZGF0YS5sZW5ndGgpOworCQkJCQlpbWFnZSA9IGdldFRvb2xraXQoKS48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIG1ldGhvZCAnY3JlYXRlSW1hZ2UoYnl0ZVtdKSciPmNyZWF0ZUltYWdlPC9lcnJvcj4oZGF0YSk7CisJCQkJCWlzLmNsb3NlKCk7CisJCQkJfQorCQkJfSBjYXRjaCAoVGhyb3dhYmxlIGUpIHt9CisJCX0KKwkJLy9pZiAoaW1hZ2UgPT0gbnVsbCkgeyAvLyBhcHBsZXQgY29kZQorCQkvLwl0cnkgeworCQkvLwkJaW1hZ2UgPSBnZXRJbWFnZShnZXRDb2RlQmFzZSgpLCBwYXRoKTsKKwkJLy8JfSBjYXRjaCAoVGhyb3dhYmxlIGUpIHt9CisJCS8vfQorCQlpZiAocHJlbG9hZCAmJiAoaW1hZ2UgIT0gbnVsbCkpIHsKKwkJCTxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdNZWRpYVRyYWNrZXInIj5NZWRpYVRyYWNrZXI8L2Vycm9yPiBtZWRpYXRyYWNrZXIgPSBuZXcgPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ01lZGlhVHJhY2tlciciPk1lZGlhVHJhY2tlcjwvZXJyb3I+KHRoaXMpOworCQkJbWVkaWF0cmFja2VyLjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgbWV0aG9kICdhZGRJbWFnZShJbWFnZSwgaW50KSciPmFkZEltYWdlPC9lcnJvcj4oaW1hZ2UsIDEpOworCQkJdHJ5IHsKKwkJCQltZWRpYXRyYWNrZXIuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBtZXRob2QgJ3dhaXRGb3JJRChpbnQsIGludCknIj53YWl0Rm9ySUQ8L2Vycm9yPigxLCA1MCk7CisJCQl9IGNhdGNoICg8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnSW50ZXJydXB0ZWRFeGNlcHRpb24nIj5JbnRlcnJ1cHRlZEV4Y2VwdGlvbjwvZXJyb3I+IGllKSB7IH0KKwkJCS8vaW1hZ2Vwb29sLnB1dChwYXRoLCBpbWFnZSk7CisJCX0KKwkJLy88amF2YQorCQlyZXR1cm4gaW1hZ2U7CisJfQorCisJLyoqCisJICoKKwkgKi8KKwlwdWJsaWMgYm9vbGVhbiBkZXN0cm95KCkgeworCQlyZXR1cm4gdHJ1ZTsKKwl9CisKKwlwcml2YXRlIHN0YXRpYyBPYmplY3RbXSBkdGQ7CisJc3RhdGljIHsKKwkJSW50ZWdlciBpbnRlZ2VyXzEgPSBuZXcgSW50ZWdlcigtMSk7CisJCUludGVnZXIgaW50ZWdlcjAgPSBuZXcgSW50ZWdlcigwKTsKKwkJSW50ZWdlciBpbnRlZ2VyMSA9IG5ldyBJbnRlZ2VyKDEpOworCQlTdHJpbmdbXSBvcmllbnRhdGlvbiA9IHsgImhvcml6b250YWwiLCAidmVydGljYWwiIH07CisJCVN0cmluZ1tdIGxlZnRjZW50ZXJyaWdodCA9IHsgImxlZnQiLCAiY2VudGVyIiwgInJpZ2h0IiB9OworCQlTdHJpbmdbXSBzZWxlY3Rpb25zID0geyAic2luZ2xlIiwgImludGVydmFsIiwgIm11bHRpcGxlIiB9OworCQlkdGQgPSBuZXcgT2JqZWN0W10geworCQkJImNvbXBvbmVudCIsIG51bGwsIG5ldyBPYmplY3RbXVtdIHsKKwkJCQl7ICJzdHJpbmciLCAibmFtZSIsICIiLCBudWxsIH0sCisJCQkJeyAiYm9vbGVhbiIsICJlbmFibGVkIiwgInBhaW50IiwgQm9vbGVhbi5UUlVFIH0sCisJCQkJeyAiYm9vbGVhbiIsICJ2aXNpYmxlIiwgInBhcmVudCIsIEJvb2xlYW4uVFJVRSB9LAorCQkJCXsgInN0cmluZyIsICJ0b29sdGlwIiwgIiIsIG51bGwgfSwKKwkJCQl7ICJpbnRlZ2VyIiwgIndpZHRoIiwgInZhbGlkYXRlIiwgaW50ZWdlcjAgfSwKKwkJCQl7ICJpbnRlZ2VyIiwgImhlaWdodCIsICJ2YWxpZGF0ZSIsIGludGVnZXIwIH0sCisJCQkJeyAiaW50ZWdlciIsICJjb2xzcGFuIiwgInZhbGlkYXRlIiwgaW50ZWdlcjEgfSwKKwkJCQl7ICJpbnRlZ2VyIiwgInJvd3NwYW4iLCAidmFsaWRhdGUiLCBpbnRlZ2VyMSB9LAorCQkJCXsgImludGVnZXIiLCAid2VpZ2h0eCIsICJ2YWxpZGF0ZSIsIGludGVnZXIwIH0sCisJCQkJeyAiaW50ZWdlciIsICJ3ZWlnaHR5IiwgInZhbGlkYXRlIiwgaW50ZWdlcjAgfSwKKwkJCQl7ICJjaG9pY2UiLCAiaGFsaWduIiwgInZhbGlkYXRlIiwKKwkJCQkJbmV3IFN0cmluZ1tdIHsgImZpbGwiLCAiY2VudGVyIiwgImxlZnQiLCAicmlnaHQiIH0gfSwKKwkJCQl7ICJjaG9pY2UiLCAidmFsaWduIiwgInZhbGlkYXRlIiwKKwkJCQkJbmV3IFN0cmluZ1tdIHsgImZpbGwiLCAiY2VudGVyIiwgInRvcCIsICJib3R0b20iIH0gfQorCQkJCS8vIGNvbXBvbmVudCBjbGFzcyBTdHJpbmcgbnVsbCoKKwkJCQkvLyBwYXJlbnQgT2JqZWN0IG51bGwKKwkJCQkvLyAoYm91bmRzKSBSZWN0YW5nbGUgMCAwIDAgMAorCQkJfSwKKwkJCSJsYWJlbCIsICJjb21wb25lbnQiLCBuZXcgT2JqZWN0W11bXSB7CisJCQkJeyAic3RyaW5nIiwgInRleHQiLCAidmFsaWRhdGUiLCBudWxsIH0sCisJCQkJeyAiaWNvbiIsICJpY29uIiwgInZhbGlkYXRlIiwgbnVsbCB9LAorCQkJIAl7ICJjaG9pY2UiLCAiYWxpZ25tZW50IiwgInZhbGlkYXRlIiwgbGVmdGNlbnRlcnJpZ2h0IH0sCisJCQkgCXsgImludGVnZXIiLCAibW5lbW9uaWMiLCAicGFpbnQiLCBpbnRlZ2VyXzEgfSB9LAorCQkJImJ1dHRvbiIsICJsYWJlbCIsIG5ldyBPYmplY3RbXVtdIHsKKwkJCSAJeyAiY2hvaWNlIiwgImFsaWdubWVudCIsICJ2YWxpZGF0ZSIsIG5ldyBTdHJpbmdbXSB7ICJjZW50ZXIiLCAibGVmdCIsICJyaWdodCIgfSB9LAorCQkJCXsgIm1ldGhvZCIsICJhY3Rpb24iLCAiIiwgbnVsbCB9LAorCQkJCS8veyAiY2hvaWNlIiwgInR5cGUiLCAiIiwgbmV3IFN0cmluZ1tdIHsgIm5vcm1hbCIsICJkZWZhdWx0IiwgImNhbmNlbCIgfSB9CisJCQkJfSwvLy4uLgorCQkJImNoZWNrYm94IiwgImxhYmVsIiwgbmV3IE9iamVjdFtdW10geworCQkJCXsgImJvb2xlYW4iLCAic2VsZWN0ZWQiLCAicGFpbnQiLCBCb29sZWFuLkZBTFNFIH0sIC8vLi4uZ3JvdXAKKwkJCQl7ICJzdHJpbmciLCAiZ3JvdXAiLCAicGFpbnQiLCBudWxsIH0sIC8vLi4uZ3JvdXAKKwkJCQl7ICJtZXRob2QiLCAiYWN0aW9uIiwgIiIsIG51bGwgfSB9LAorCQkJImNvbWJvYm94IiwgInRleHRmaWVsZCIsIG5ldyBPYmplY3RbXVtdIHsKKwkJCQl7ICJpY29uIiwgImljb24iLCAidmFsaWRhdGUiLCBudWxsIH0sCisJCQkJeyAiaW50ZWdlciIsICJzZWxlY3RlZCIsICJsYXlvdXQiLCBpbnRlZ2VyXzEgfSB9LAorCQkJImNob2ljZSIsIG51bGwsIG5ldyBPYmplY3RbXVtdIHsKKwkJCQl7ICJzdHJpbmciLCAibmFtZSIsICIiLCBudWxsIH0sCisJCQkJeyAiYm9vbGVhbiIsICJlbmFibGVkIiwgInBhaW50IiwgQm9vbGVhbi5UUlVFIH0sCisJCQkJeyAic3RyaW5nIiwgInRleHQiLCAiIiwgbnVsbCB9LAorCQkJCXsgImljb24iLCAiaWNvbiIsICIiLCBudWxsIH0sCisJCQkJeyAiY2hvaWNlIiwgImFsaWdubWVudCIsICIiLCBsZWZ0Y2VudGVycmlnaHQgfSwKKwkJCQl7ICJzdHJpbmciLCAidG9vbHRpcCIsICIiLCBudWxsIH0gfSwKKwkJCSJ0ZXh0ZmllbGQiLCAiY29tcG9uZW50IiwgbmV3IE9iamVjdFtdW10geworCQkJCXsgInN0cmluZyIsICJ0ZXh0IiwgImxheW91dCIsICIiIH0sCisJCQkJeyAiaW50ZWdlciIsICJjb2x1bW5zIiwgInZhbGlkYXRlIiwgaW50ZWdlcjAgfSwKKwkJCQl7ICJib29sZWFuIiwgImVkaXRhYmxlIiwgInBhaW50IiwgQm9vbGVhbi5UUlVFIH0sCisJCQkJeyAiaW50ZWdlciIsICJzdGFydCIsICJsYXlvdXQiLCBpbnRlZ2VyMCB9LAorCQkJCXsgImludGVnZXIiLCAiZW5kIiwgImxheW91dCIsIGludGVnZXIwIH0sCisJCQkJeyAibWV0aG9kIiwgImFjdGlvbiIsICIiLCBudWxsIH0gfSwKKwkJCSJwYXNzd29yZGZpZWxkIiwgInRleHRmaWVsZCIsIG5ldyBPYmplY3RbXVtdIHt9LAorCQkJInRleHRhcmVhIiwgInRleHRmaWVsZCIsIG5ldyBPYmplY3RbXVtdIHsKKwkJCQl7ICJpbnRlZ2VyIiwgInJvd3MiLCAidmFsaWRhdGUiLCBpbnRlZ2VyMCB9LAorCQkJCXsgImJvb2xlYW4iLCAid3JhcCIsICJsYXlvdXQiLCBCb29sZWFuLkZBTFNFIH0gfSwKKwkJCSJ0YWJiZWRwYW5lIiwgImNvbXBvbmVudCIsIG5ldyBPYmplY3RbXVtdIHsKKwkJCQl7ICJjaG9pY2UiLCAicGxhY2VtZW50IiwgInZhbGlkYXRlIiwKKwkJCQkJbmV3IFN0cmluZ1tdIHsgInRvcCIsICJsZWZ0IiwgImJvdHRvbSIsICJyaWdodCIgfSB9LAorCQkJCXsgImludGVnZXIiLCAic2VsZWN0ZWQiLCAicGFpbnQiLCBpbnRlZ2VyMCB9LAorCQkJCXsgIm1ldGhvZCIsICJhY3Rpb24iLCAiIiwgbnVsbCB9IH0sIC8vLi4uZm9jdXMKKwkJCSJ0YWIiLCAiY2hvaWNlIiwgbmV3IE9iamVjdFtdW10geworCQkJCXsgImludGVnZXIiLCAibW5lbW9uaWMiLCAicGFpbnQiLCBpbnRlZ2VyXzEgfSB9LAorCQkJInBhbmVsIiwgImNvbXBvbmVudCIsIG5ldyBPYmplY3RbXVtdIHsKKwkJCQl7ICJpbnRlZ2VyIiwgImNvbHVtbnMiLCAidmFsaWRhdGUiLCBpbnRlZ2VyMCB9LAorCQkJCXsgImludGVnZXIiLCAidG9wIiwgInZhbGlkYXRlIiwgaW50ZWdlcjAgfSwKKwkJCQl7ICJpbnRlZ2VyIiwgImxlZnQiLCAidmFsaWRhdGUiLCBpbnRlZ2VyMCB9LAorCQkJCXsgImludGVnZXIiLCAiYm90dG9tIiwgInZhbGlkYXRlIiwgaW50ZWdlcjAgfSwKKwkJCQl7ICJpbnRlZ2VyIiwgInJpZ2h0IiwgInZhbGlkYXRlIiwgaW50ZWdlcjAgfSwKKwkJCQl7ICJpbnRlZ2VyIiwgImdhcCIsICJ2YWxpZGF0ZSIsIGludGVnZXIwIH0gfSwKKwkJCSJkZXNrdG9wIiwgImNvbXBvbmVudCIsIG5ldyBPYmplY3RbXVtdIHt9LAorCQkJImRpYWxvZyIsICJwYW5lbCIsIG5ldyBPYmplY3RbXVtdIHsKKwkJCQl7ICJzdHJpbmciLCAidGV4dCIsICIiLCBudWxsIH0sCisJCQkJeyAiaWNvbiIsICJpY29uIiwgIiIsIG51bGwgfSwKKwkJCQl7ICJib29sZWFuIiwgIm1vZGFsIiwgIiIsIEJvb2xlYW4uRkFMU0UgfSB9LAorCQkJInNwaW5ib3giLCAidGV4dGZpZWxkIiwgbmV3IE9iamVjdFtdW10ge30sIC8vLi4uCisJCQkicHJvZ3Jlc3NiYXIiLCAiY29tcG9uZW50IiwgbmV3IE9iamVjdFtdW10geworCQkJCXsgImNob2ljZSIsICJvcmllbnRhdGlvbiIsICJ2YWxpZGF0ZSIsIG9yaWVudGF0aW9uIH0sCisJCQkJeyAiaW50ZWdlciIsICJtaW5pbXVtIiwgInBhaW50IiwgaW50ZWdlcjAgfSwgLy8uLi5jaGVja3ZhbHVlCisJCQkJeyAiaW50ZWdlciIsICJtYXhpbXVtIiwgInBhaW50IiwgbmV3IEludGVnZXIoMTAwKSB9LAorCQkJCXsgImludGVnZXIiLCAidmFsdWUiLCAicGFpbnQiLCBpbnRlZ2VyMCB9IH0sCisJCQkJLy8gY2hhbmdlIHN0cmluZ3BhaW50ZWQKKwkJCSJzbGlkZXIiLCAicHJvZ3Jlc3NiYXIiLCBuZXcgT2JqZWN0W11bXSB7CisJCQkJeyAiaW50ZWdlciIsICJ1bml0IiwgIiIsIG5ldyBJbnRlZ2VyKDUpIH0sCisJCQkJeyAiaW50ZWdlciIsICJibG9jayIsICIiLCBuZXcgSW50ZWdlcigyNSkgfSwKKwkJCQl7ICJtZXRob2QiLCAiYWN0aW9uIiwgIiIsIG51bGwgfSB9LAorCQkJCS8vIG1pbm9yL21ham9ydGlja3NwYWNpbmcKKwkJCQkvLyBpbnZlcnRlZAorCQkJCS8vIGxhYmVsaW5jcmVtZW50IGxhYmVsc3RhcnQKKwkJCSJzcGxpdHBhbmUiLCAiY29tcG9uZW50IiwgbmV3IE9iamVjdFtdW10geworCQkJCXsgImNob2ljZSIsICJvcmllbnRhdGlvbiIsICJ2YWxpZGF0ZSIsIG9yaWVudGF0aW9uIH0sCisJCQkJeyAiaW50ZWdlciIsICJkaXZpZGVyIiwgImxheW91dCIsIGludGVnZXJfMSB9IH0sCisJCQkibGlzdCIsICJjb21wb25lbnQiLCBuZXcgT2JqZWN0W11bXSB7CisJCQkJeyAiY2hvaWNlIiwgInNlbGVjdGlvbiIsICJwYWludCIsIHNlbGVjdGlvbnMgfSwKKwkJCQl7ICJtZXRob2QiLCAiYWN0aW9uIiwgIiIsIG51bGwgfSB9LCAvLy4uLj8KKwkJCSJpdGVtIiwgImNob2ljZSIsIG5ldyBPYmplY3RbXVtdIHsKKwkJCQl7ICJib29sZWFuIiwgInNlbGVjdGVkIiwgIiIsIEJvb2xlYW4uRkFMU0UgfSB9LAorCQkJInRhYmxlIiwgImNvbXBvbmVudCIsIG5ldyBPYmplY3RbXVtdIHsKKwkJCQl7ICJjaG9pY2UiLCAic2VsZWN0aW9uIiwgInBhaW50Iiwgc2VsZWN0aW9ucyB9LAorCQkJCXsgIm1ldGhvZCIsICJhY3Rpb24iLCAiIiwgbnVsbCB9CisJCQkJLyp7ICJjaG9pY2UiLCAic2VsZWN0aW9uIiwKKwkJCQkJbmV3IFN0cmluZ1tdIHsgInNpbmdsZXJvdyIsICJyb3dpbnRlcnZhbCIsICJtdWx0aXBsZXJvdyIsCisJCQkJCQkiY2VsbCIsICJjZWxsaW50ZXJ2YWwiLAorCQkJCQkJInNpbmdsZWNvbHVtbiIsICJjb2x1bW5pbnRlcnZhbCIsICJtdWx0aXBsZWNvbHVtbiIgfSB9Ki8gfSwKKwkJCSJjb2x1bW4iLCAiY2hvaWNlIiwgbmV3IE9iamVjdFtdW10geworCQkJCXsgImludGVnZXIiLCAid2lkdGgiLCAiIiwgbmV3IEludGVnZXIoODApIH19LAorCQkJInJvdyIsIG51bGwsIG5ldyBPYmplY3RbXVtdIHsKKwkJCQl7ICJib29sZWFuIiwgInNlbGVjdGVkIiwgIiIsIEJvb2xlYW4uRkFMU0UgfSB9LAorCQkJImNlbGwiLCAiY2hvaWNlIiwgbmV3IE9iamVjdFtdW10ge30sCisJCQkidHJlZSIsICJjb21wb25lbnQiLCBuZXcgT2JqZWN0W11bXSB7CisJCQkJeyAiY2hvaWNlIiwgInNlbGVjdGlvbiIsICJwYWludCIsIHNlbGVjdGlvbnMgfSwKKwkJCQl7ICJtZXRob2QiLCAiYWN0aW9uIiwgIiIsIG51bGwgfSwKKwkJCQl7ICJtZXRob2QiLCAiZXhwYW5kIiwgIiIsIG51bGwgfSwKKwkJCQl7ICJtZXRob2QiLCAiY29sbGFwc2UiLCAiIiwgbnVsbCB9IH0sCisJCQkibm9kZSIsICJjaG9pY2UiLCBuZXcgT2JqZWN0W11bXSB7CisJCQkJeyAiYm9vbGVhbiIsICJzZWxlY3RlZCIsICIiLCBCb29sZWFuLkZBTFNFIH0sCisJCQkJeyAiYm9vbGVhbiIsICJleHBhbmRlZCIsICIiLCBCb29sZWFuLlRSVUUgfSB9LAorCQkJInNlcGFyYXRvciIsICJjb21wb25lbnQiLCBuZXcgT2JqZWN0W11bXSB7fSwKKwkJCSJtZW51YmFyIiwgImNvbXBvbmVudCIsIG5ldyBPYmplY3RbXVtdIHt9LAorCQkJIm1lbnUiLCAiY2hvaWNlIiwgbmV3IE9iamVjdFtdW10geworCQkJCXsgImludGVnZXIiLCAibW5lbW9uaWMiLCAicGFpbnQiLCBpbnRlZ2VyXzEgfSB9LAorCQkJIm1lbnVpdGVtIiwgImNob2ljZSIsIG5ldyBPYmplY3RbXVtdIHsKKwkJCQl7ICJzdHJpbmciLCAiYWNjZWxlcmF0b3IiLCAiIiwgbnVsbCB9LAorCQkJCXsgIm1ldGhvZCIsICJhY3Rpb24iLCAiIiwgbnVsbCB9LAorCQkJCXsgImludGVnZXIiLCAibW5lbW9uaWMiLCAicGFpbnQiLCBpbnRlZ2VyXzEgfQorCQkJCS8vLi4uIEtleVN0cm9rZT1rZXlDb2RlK21vZGlmaWVycyhTSElGVCBDVFJMIE1FVEEgQUxUX01BU0spCisJCQl9LAorCQkJImNoZWNrYm94bWVudWl0ZW0iLCAibWVudWl0ZW0iLCBuZXcgT2JqZWN0W11bXSB7CisJCQkJeyAiYm9vbGVhbiIsICJzZWxlY3RlZCIsICJwYWludCIsIEJvb2xlYW4uRkFMU0UgfSwgLy8uLi5ncm91cAorCQkJCXsgInN0cmluZyIsICJncm91cCIsICJwYWludCIsIG51bGwgfSB9LCAvLy4uLmdyb3VwCisJCQkiYmVhbiIsICJjb21wb25lbnQiLCBuZXcgT2JqZWN0W11bXSB7CisJCQkJeyAiYmVhbiIsICJiZWFuIiwgIiIsIG51bGwgfQorCQkJfQorCQl9OworCX0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nL2FjY2Vzc0xldmVsL2VmZmVjdGl2ZUFjY2Vzcy9wMi9wMi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvYWNjZXNzTGV2ZWwvZWZmZWN0aXZlQWNjZXNzL3AyL3AyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWJmMTExMwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nL2FjY2Vzc0xldmVsL2VmZmVjdGl2ZUFjY2Vzcy9wMi9wMi5qYXZhCkBAIC0wLDAgKzEsMTUgQEAKK3BhY2thZ2UgZWZmZWN0aXZlQWNjZXNzLnAyOworCitpbXBvcnQgZWZmZWN0aXZlQWNjZXNzLnBwcDsKKworLyoqCisgKiBDcmVhdGVkIGJ5IEludGVsbGlKIElERUEuCisgKiBVc2VyOiBjZHIKKyAqIERhdGU6IEphbiAyNCwgMjAwMworICogVGltZTogMzoxMzo0OSBQTQorICogVG8gY2hhbmdlIHRoaXMgdGVtcGxhdGUgdXNlIE9wdGlvbnMgfCBGaWxlIFRlbXBsYXRlcy4KKyAqLworcHVibGljIGNsYXNzIHAyIGV4dGVuZHMgcHBwIHsKKyAgcHJvdGVjdGVkIHZvaWQgZigpIHsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvYWNjZXNzTGV2ZWwvZWZmZWN0aXZlQWNjZXNzL3AyL3AzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9hY2Nlc3NMZXZlbC9lZmZlY3RpdmVBY2Nlc3MvcDIvcDMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41Yjc0MjQ5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvYWNjZXNzTGV2ZWwvZWZmZWN0aXZlQWNjZXNzL3AyL3AzLmphdmEKQEAgLTAsMCArMSwxNyBAQAorcGFja2FnZSBlZmZlY3RpdmVBY2Nlc3MucDI7CisKK3B1YmxpYyBjbGFzcyBwMyBleHRlbmRzIHAyIHsKK30KKworPGVycm9yIGRlc2NyPSJDbGFzcyAncDQnIG11c3QgZWl0aGVyIGJlIGRlY2xhcmVkIGFic3RyYWN0IG9yIGltcGxlbWVudCBhYnN0cmFjdCBtZXRob2QgJ2YoKScgaW4gJ3BwJyI+Y2xhc3MgcDQgZXh0ZW5kcyBlZmZlY3RpdmVBY2Nlc3MucHA8L2Vycm9yPiB7CisgIHB1YmxpYyB2b2lkIGYoKSB7fQorfQorCitjbGFzcyBwZGVyaXZlZCBleHRlbmRzIHAyIHsKKyAgcHJvdGVjdGVkIHZvaWQgZigpIHsKKyAgICBzdXBlci5mKCk7CisgIH0KKyAgcHJvdGVjdGVkIHZvaWQgdigpIHsKKyAgICBzdXBlci52KCk7CisgIH0KK30gCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9hY2Nlc3NMZXZlbC9lZmZlY3RpdmVBY2Nlc3MvcHAuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nL2FjY2Vzc0xldmVsL2VmZmVjdGl2ZUFjY2Vzcy9wcC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc2MDcyZjIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9hY2Nlc3NMZXZlbC9lZmZlY3RpdmVBY2Nlc3MvcHAuamF2YQpAQCAtMCwwICsxLDEyIEBACitwYWNrYWdlIGVmZmVjdGl2ZUFjY2VzczsKKworLyoqCisgKiBDcmVhdGVkIGJ5IEludGVsbGlKIElERUEuCisgKiBVc2VyOiBjZHIKKyAqIERhdGU6IEphbiAyNCwgMjAwMworICogVGltZTogMzoxMjowOSBQTQorICogVG8gY2hhbmdlIHRoaXMgdGVtcGxhdGUgdXNlIE9wdGlvbnMgfCBGaWxlIFRlbXBsYXRlcy4KKyAqLworcHVibGljIGFic3RyYWN0IGNsYXNzIHBwIHsKKyAgYWJzdHJhY3Qgdm9pZCBmKCk7Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9hY2Nlc3NMZXZlbC9lZmZlY3RpdmVBY2Nlc3MvcHBwLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9hY2Nlc3NMZXZlbC9lZmZlY3RpdmVBY2Nlc3MvcHBwLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmM5M2U3NgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nL2FjY2Vzc0xldmVsL2VmZmVjdGl2ZUFjY2Vzcy9wcHAuamF2YQpAQCAtMCwwICsxLDEzIEBACitwYWNrYWdlIGVmZmVjdGl2ZUFjY2VzczsKKworLyoqCisgKiBDcmVhdGVkIGJ5IEludGVsbGlKIElERUEuCisgKiBVc2VyOiBjZHIKKyAqIERhdGU6IEphbiAyNCwgMjAwMworICogVGltZTogMzoxMzowOSBQTQorICogVG8gY2hhbmdlIHRoaXMgdGVtcGxhdGUgdXNlIE9wdGlvbnMgfCBGaWxlIFRlbXBsYXRlcy4KKyAqLworcHVibGljIGFic3RyYWN0IGNsYXNzIHBwcCBleHRlbmRzIHBwIHsKKyAgYWJzdHJhY3QgcHJvdGVjdGVkIHZvaWQgZigpOworICBwcm90ZWN0ZWQgdm9pZCB2KCkge30KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nL2FjY2Vzc2libGVNZW1iZXIvY29tL2JsdWUvQmFzZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvYWNjZXNzaWJsZU1lbWJlci9jb20vYmx1ZS9CYXNlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2I5YjQ2NwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nL2FjY2Vzc2libGVNZW1iZXIvY29tL2JsdWUvQmFzZS5qYXZhCkBAIC0wLDAgKzEsNSBAQAorcGFja2FnZSBjb20uYmx1ZTsKKworcHVibGljIGNsYXNzIEJhc2UgeworICBwdWJsaWMgdm9pZCBmb28oKSB7fQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nL2FjY2Vzc2libGVNZW1iZXIvY29tL2JsdWUvQmFzZUNvbXBvbmVudC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvYWNjZXNzaWJsZU1lbWJlci9jb20vYmx1ZS9CYXNlQ29tcG9uZW50LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWY1ZGExNgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nL2FjY2Vzc2libGVNZW1iZXIvY29tL2JsdWUvQmFzZUNvbXBvbmVudC5qYXZhCkBAIC0wLDAgKzEsOCBAQAorcGFja2FnZSBjb20uYmx1ZTsKKworcHVibGljIGNsYXNzIEJhc2VDb21wb25lbnQgeworCisgICAgcHJvdGVjdGVkIGNsYXNzIEhlYWRlciBleHRlbmRzIEJhc2UgeworICAgIH0KKworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvYWNjZXNzaWJsZU1lbWJlci9jb20vcmVkL0IuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nL2FjY2Vzc2libGVNZW1iZXIvY29tL3JlZC9CLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDhkNjQzMQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nL2FjY2Vzc2libGVNZW1iZXIvY29tL3JlZC9CLmphdmEKQEAgLTAsMCArMSwxMSBAQAorcGFja2FnZSBjb20ucmVkOworCitpbXBvcnQgY29tLmJsdWUuQmFzZUNvbXBvbmVudDsKKworcHVibGljIGNsYXNzIEIgZXh0ZW5kcyBCYXNlQ29tcG9uZW50IHsKKworICAgIHB1YmxpYyBIZWFkZXIgZ2V0SGVhZGVyKCkgeworICAgICAgICByZXR1cm4gbnVsbDsKKyAgICB9CisKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nL2FjY2Vzc2libGVNZW1iZXIvY29tL3JlZC9DLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9hY2Nlc3NpYmxlTWVtYmVyL2NvbS9yZWQvQy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg5NjJkZjgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9hY2Nlc3NpYmxlTWVtYmVyL2NvbS9yZWQvQy5qYXZhCkBAIC0wLDAgKzEsNyBAQAorcGFja2FnZSBjb20ucmVkOworCitwdWJsaWMgY2xhc3MgQyBleHRlbmRzIEIgeworICAgIHByb3RlY3RlZCB2b2lkIGFkZChCIG5vZGVHcmlkKSB7CisgICAgICAgIG5vZGVHcmlkLmdldEhlYWRlcigpLmZvbygpOyAvLyBubyBlcnJvciBoZXJlIHNpbmNlIHdlIGFyZSBjaGVja2luZyBnZXRIZWFkZXIoKSBtZXRob2QgYWNjZXNzaWJpbGl0eSByYXRoZXIgdGhhbiBIZWFkZXIgY2xhc3MKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9hbHJlYWR5SW1wb3J0ZWRDbGFzcy9wYWNrL0FscmVhZHlJbXBvcnRlZENsYXNzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9hbHJlYWR5SW1wb3J0ZWRDbGFzcy9wYWNrL0FscmVhZHlJbXBvcnRlZENsYXNzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGUzYjJmZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nL2FscmVhZHlJbXBvcnRlZENsYXNzL3BhY2svQWxyZWFkeUltcG9ydGVkQ2xhc3MuamF2YQpAQCAtMCwwICsxLDEyIEBACitwYWNrYWdlIHBhY2s7CisKK2ltcG9ydCBqYXZhLnV0aWwuRGF0ZTsKK2ltcG9ydCBwYWNrLm15OworCitjbGFzcyA8ZXJyb3IgZGVzY3I9IidEYXRlJyBpcyBhbHJlYWR5IGRlZmluZWQgaW4gdGhpcyBjb21waWxhdGlvbiB1bml0Ij5EYXRlPC9lcnJvcj4geworfQorCitjbGFzcyBteSB7CisgIGNsYXNzIERhdGUgZXh0ZW5kcyBqYXZhLnV0aWwuRGF0ZSB7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9hcnJheUxlbmd0aC9wL1Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nL2FycmF5TGVuZ3RoL3AvVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE2NGNjMzkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9hcnJheUxlbmd0aC9wL1Rlc3QuamF2YQpAQCAtMCwwICsxLDYgQEAKK3BhY2thZ2UgcDsKK3B1YmxpYyBjbGFzcyBUZXN0IHsKKyAgICBwcm90ZWN0ZWQgY2xhc3MgSW5uZXIge30KKworICAgIHByb3RlY3RlZCBJbm5lcltdIHN0cmluZ3MgPSBuZXcgSW5uZXJbMTBdOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nL2FycmF5TGVuZ3RoL3AyL1N1YlRlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nL2FycmF5TGVuZ3RoL3AyL1N1YlRlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYjdmMDEwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvYXJyYXlMZW5ndGgvcDIvU3ViVGVzdC5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKK3BhY2thZ2UgcDI7CisKK2ltcG9ydCBwLlRlc3Q7CisKK3B1YmxpYyBjbGFzcyBTdWJUZXN0IGV4dGVuZHMgVGVzdCB7Cit2b2lkIGZvbygpIHsKK1N5c3RlbS5vdXQucHJpbnRsbihzdHJpbmdzLmxlbmd0aCk7CisvLyAiQ2Fubm90IGFjY2VzcyAnbGVuZ3RoJyBpbiAnX0R1bW15Xy5fX0FycmF5X18nIiB3YXJuaW5nIGhlcmUKK30KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nL2R1cGxpY2F0ZUNsYXNzL0EuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nL2R1cGxpY2F0ZUNsYXNzL0EuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYzZhOWRhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvZHVwbGljYXRlQ2xhc3MvQS5qYXZhCkBAIC0wLDAgKzEsNiBAQAorcGFja2FnZSBkdXBsaWNhdGVDbGFzczsKKworLy8gYWN0dWFsIGVycm9yIHRleHQgZGVwZW5kcyBvbiB0ZW1wb3JhcnkgZGlyIGxvY2F0aW9uCisKKzxlcnJvcj5jbGFzcyBGb288L2Vycm9yPiB7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvZHVwbGljYXRlQ2xhc3MvQi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvZHVwbGljYXRlQ2xhc3MvQi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRkNTk2MDAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9kdXBsaWNhdGVDbGFzcy9CLmphdmEKQEAgLTAsMCArMSw0IEBACitwYWNrYWdlIGR1cGxpY2F0ZUNsYXNzOworCitjbGFzcyBGb28geworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nL2R1cGxpY2F0ZUNsYXNzL2phdmEvbGFuZy9SdW5uYWJsZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvZHVwbGljYXRlQ2xhc3MvamF2YS9sYW5nL1J1bm5hYmxlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjM0OGIxNwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nL2R1cGxpY2F0ZUNsYXNzL2phdmEvbGFuZy9SdW5uYWJsZS5qYXZhCkBAIC0wLDAgKzEsNyBAQAorCisvLyBzaG91bGQgbm90IGNvbnRlbmQgd2l0aCBSdW5uYWJsZSBmcm9tIHJ0LmphcgorCitwYWNrYWdlIGphdmEubGFuZzsKKworcHVibGljIGNsYXNzIFJ1bm5hYmxlIHsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9mb3JlaWduUGFja2FnZUluQmV0d2Vlbi9hL0ExLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9mb3JlaWduUGFja2FnZUluQmV0d2Vlbi9hL0ExLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmM1ODE5ZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nL2ZvcmVpZ25QYWNrYWdlSW5CZXR3ZWVuL2EvQTEuamF2YQpAQCAtMCwwICsxLDExIEBACitwYWNrYWdlIGE7CisKK2ltcG9ydCBiLkI7CisKK2NsYXNzIEExIHsKKworICB7CisgICAgbmV3IEIoKS48ZXJyb3IgZGVzY3I9IidmKCknIGlzIG5vdCBwdWJsaWMgaW4gJ2EuQTInLiBDYW5ub3QgYmUgYWNjZXNzZWQgZnJvbSBvdXRzaWRlIHBhY2thZ2UiPmY8L2Vycm9yPigpOworICB9CisKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9mb3JlaWduUGFja2FnZUluQmV0d2Vlbi9hL0EyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9mb3JlaWduUGFja2FnZUluQmV0d2Vlbi9hL0EyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWY0MWU3OAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nL2ZvcmVpZ25QYWNrYWdlSW5CZXR3ZWVuL2EvQTIuamF2YQpAQCAtMCwwICsxLDggQEAKK3BhY2thZ2UgYTsKKworcHVibGljIGNsYXNzIEEyIHsKKworICB2b2lkIGYoKSB7CisgIH0KKworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nL2ZvcmVpZ25QYWNrYWdlSW5CZXR3ZWVuL2IvQi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvZm9yZWlnblBhY2thZ2VJbkJldHdlZW4vYi9CLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjg5OWU5NQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nL2ZvcmVpZ25QYWNrYWdlSW5CZXR3ZWVuL2IvQi5qYXZhCkBAIC0wLDAgKzEsNyBAQAorcGFja2FnZSBiOworCitpbXBvcnQgYS5BMjsKKworcHVibGljIGNsYXNzIEIgZXh0ZW5kcyBBMiB7CisKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9pbXBvcnREZWZhdWx0UGFja2FnZS9UZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9pbXBvcnREZWZhdWx0UGFja2FnZS9UZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjRmMTdiMwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nL2ltcG9ydERlZmF1bHRQYWNrYWdlL1Rlc3QuamF2YQpAQCAtMCwwICsxLDQgQEAKK3B1YmxpYyBjbGFzcyBUZXN0IHsKKyAgcHVibGljIFRlc3QoaW50IGkpIHsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvaW1wb3J0RGVmYXVsdFBhY2thZ2UveC9JbXBvcnRPbkRlbWFuZFVzYWdlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9pbXBvcnREZWZhdWx0UGFja2FnZS94L0ltcG9ydE9uRGVtYW5kVXNhZ2UuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZTI2OTUxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvaW1wb3J0RGVmYXVsdFBhY2thZ2UveC9JbXBvcnRPbkRlbWFuZFVzYWdlLmphdmEKQEAgLTAsMCArMSw3IEBACitwYWNrYWdlIHg7CisKK2ltcG9ydCB4Lm4uKjsKKworY2xhc3MgRm9vczIgeworICBUZXN0IHQgPSBuZXcgVGVzdCgpOworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvaW1wb3J0RGVmYXVsdFBhY2thZ2UveC9JbnZhbGlkVXNlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9pbXBvcnREZWZhdWx0UGFja2FnZS94L0ludmFsaWRVc2UuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMDIwMjU5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvaW1wb3J0RGVmYXVsdFBhY2thZ2UveC9JbnZhbGlkVXNlLmphdmEKQEAgLTAsMCArMSw1IEBACitwYWNrYWdlIHg7CisKK2NsYXNzIEludmFsaWRVc2UgeworICA8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnVGVzdCciPlRlc3Q8L2Vycm9yPiB0ID0gbnVsbDsKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nL2ltcG9ydERlZmF1bHRQYWNrYWdlL3gvVXNhZ2UuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nL2ltcG9ydERlZmF1bHRQYWNrYWdlL3gvVXNhZ2UuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZmYyNjliCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvaW1wb3J0RGVmYXVsdFBhY2thZ2UveC9Vc2FnZS5qYXZhCkBAIC0wLDAgKzEsNyBAQAorcGFja2FnZSB4OworCitpbXBvcnQgeC5uLlRlc3Q7CisKK2NsYXNzIEZvb3MgeworICBUZXN0IHQgPSBuZXcgVGVzdCgpOworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvaW1wb3J0RGVmYXVsdFBhY2thZ2UveC9uL1Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nL2ltcG9ydERlZmF1bHRQYWNrYWdlL3gvbi9UZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTAwZmU1OQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nL2ltcG9ydERlZmF1bHRQYWNrYWdlL3gvbi9UZXN0LmphdmEKQEAgLTAsMCArMSwyIEBACitwYWNrYWdlIHgubjsKK3B1YmxpYyBjbGFzcyBUZXN0IHt9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9pbXBvcnRPbkRlbWFuZC94MS9YMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvaW1wb3J0T25EZW1hbmQveDEvWDEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMzZmMWZjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvaW1wb3J0T25EZW1hbmQveDEvWDEuamF2YQpAQCAtMCwwICsxLDIgQEAKK3BhY2thZ2UgeDE7CitwdWJsaWMgY2xhc3MgWDEge30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9pbXBvcnRPbkRlbWFuZC94Mi9YMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvaW1wb3J0T25EZW1hbmQveDIvWDEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZmFmY2I5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvaW1wb3J0T25EZW1hbmQveDIvWDEuamF2YQpAQCAtMCwwICsxLDIgQEAKK3BhY2thZ2UgeDI7CitwdWJsaWMgY2xhc3MgWDEge30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9pbXBvcnRPbkRlbWFuZC95L1kuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nL2ltcG9ydE9uRGVtYW5kL3kvWS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE1OGFkNmUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9pbXBvcnRPbkRlbWFuZC95L1kuamF2YQpAQCAtMCwwICsxLDYgQEAKK2ltcG9ydCB4MS4qOworaW1wb3J0IHgyLio7CisKK2NsYXNzIFkgeworICA8ZXJyb3IgZGVzY3I9IlJlZmVyZW5jZSB0byAnWDEnIGlzIGFtYmlndW91cywgYm90aCAneDEuWDEnIGFuZCAneDIuWDEnIG1hdGNoIj5YMTwvZXJyb3I+IHgxOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nL2ltcG9ydE9uRGVtYW5kVnNJbmhlcml0ZWQvVGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvaW1wb3J0T25EZW1hbmRWc0luaGVyaXRlZC9UZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDFhMGYyZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nL2ltcG9ydE9uRGVtYW5kVnNJbmhlcml0ZWQvVGVzdC5qYXZhCkBAIC0wLDAgKzEsOSBAQAoraW1wb3J0IHAuQmFzZS4qOworaW1wb3J0IHAuQmFzZUltcGw7CisKK2NsYXNzIFRlc3QgZXh0ZW5kcyBCYXNlSW1wbCB7CisgIHZvaWQgbSgpIHsKKyAgICBJbm5lciBpbm5lciA9IG5ldyBJbm5lcigpIHsgfTsgIC8vIGltcG9ydGVkIHB1YmxpYyBCYXNlLklubmVyIHNob3VsZCBzaGFkb3cgaW5oZXJpdGVkIHBhY2thZ2UtcHJpdmF0ZSBCYXNlSW1wbC5Jbm5lcgorICAgIEJhc2VJbXBsLjxlcnJvciBkZXNjcj0iJ3AuQmFzZUltcGwuSW5uZXInIGlzIG5vdCBwdWJsaWMgaW4gJ3AuQmFzZUltcGwnLiBDYW5ub3QgYmUgYWNjZXNzZWQgZnJvbSBvdXRzaWRlIHBhY2thZ2UiPklubmVyPC9lcnJvcj4gaTIgPSBudWxsOworICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9pbXBvcnRPbkRlbWFuZFZzSW5oZXJpdGVkL3AvQmFzZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvaW1wb3J0T25EZW1hbmRWc0luaGVyaXRlZC9wL0Jhc2UuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YTEzOTQzMAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nL2ltcG9ydE9uRGVtYW5kVnNJbmhlcml0ZWQvcC9CYXNlLmphdmEKQEAgLTAsMCArMSw1IEBACitwYWNrYWdlIHA7CisKK3B1YmxpYyBpbnRlcmZhY2UgQmFzZSB7CisgIGludGVyZmFjZSBJbm5lciB7IH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9pbXBvcnRPbkRlbWFuZFZzSW5oZXJpdGVkL3AvQmFzZUltcGwuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nL2ltcG9ydE9uRGVtYW5kVnNJbmhlcml0ZWQvcC9CYXNlSW1wbC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU4OWNlYTgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9pbXBvcnRPbkRlbWFuZFZzSW5oZXJpdGVkL3AvQmFzZUltcGwuamF2YQpAQCAtMCwwICsxLDUgQEAKK3BhY2thZ2UgcDsKKworcHVibGljIGNsYXNzIEJhc2VJbXBsIGltcGxlbWVudHMgQmFzZSB7CisgIHN0YXRpYyBjbGFzcyBJbm5lciBpbXBsZW1lbnRzIElubmVyIHsgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nL2ltcG9ydE9uRGVtYW5kVnNTaW5nbGUveDEvQ2xhc3MuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nL2ltcG9ydE9uRGVtYW5kVnNTaW5nbGUveDEvQ2xhc3MuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jY2QxZDliCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvaW1wb3J0T25EZW1hbmRWc1NpbmdsZS94MS9DbGFzcy5qYXZhCkBAIC0wLDAgKzEsMiBAQAorcGFja2FnZSB4MTsKK3B1YmxpYyBjbGFzcyBDbGFzc3t9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvaW1wb3J0T25EZW1hbmRWc1NpbmdsZS95L1kuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nL2ltcG9ydE9uRGVtYW5kVnNTaW5nbGUveS9ZLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjY3NGQ4YQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nL2ltcG9ydE9uRGVtYW5kVnNTaW5nbGUveS9ZLmphdmEKQEAgLTAsMCArMSw2IEBACitpbXBvcnQgeDEuKjsKK2ltcG9ydCBqYXZhLmxhbmcuQ2xhc3M7CisKK2NsYXNzIFkgeworICBDbGFzcyBhQ2xhc3M7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvaW1wb3J0U2luZ2xlVnNJbmhlcml0ZWQvVGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvaW1wb3J0U2luZ2xlVnNJbmhlcml0ZWQvVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhmMmU2NTIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9pbXBvcnRTaW5nbGVWc0luaGVyaXRlZC9UZXN0LmphdmEKQEAgLTAsMCArMSw5IEBACitpbXBvcnQgcC5CYXNlLklubmVyOworaW1wb3J0IHAuQmFzZUltcGw7CisKK2NsYXNzIFRlc3QgZXh0ZW5kcyBCYXNlSW1wbCB7CisgIHZvaWQgbSgpIHsKKyAgICBJbm5lciBpbm5lciA9IG5ldyBJbm5lcigpIHsgfTsgIC8vIGltcG9ydGVkIHB1YmxpYyBCYXNlLklubmVyIHNob3VsZCBzaGFkb3cgaW5oZXJpdGVkIHBhY2thZ2UtcHJpdmF0ZSBCYXNlSW1wbC5Jbm5lcgorICAgIEJhc2VJbXBsLjxlcnJvciBkZXNjcj0iJ3AuQmFzZUltcGwuSW5uZXInIGlzIG5vdCBwdWJsaWMgaW4gJ3AuQmFzZUltcGwnLiBDYW5ub3QgYmUgYWNjZXNzZWQgZnJvbSBvdXRzaWRlIHBhY2thZ2UiPklubmVyPC9lcnJvcj4gaTIgPSBudWxsOworICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9pbXBvcnRTaW5nbGVWc0luaGVyaXRlZC9wL0Jhc2UuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nL2ltcG9ydFNpbmdsZVZzSW5oZXJpdGVkL3AvQmFzZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhhMTM5NDMwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvaW1wb3J0U2luZ2xlVnNJbmhlcml0ZWQvcC9CYXNlLmphdmEKQEAgLTAsMCArMSw1IEBACitwYWNrYWdlIHA7CisKK3B1YmxpYyBpbnRlcmZhY2UgQmFzZSB7CisgIGludGVyZmFjZSBJbm5lciB7IH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9pbXBvcnRTaW5nbGVWc0luaGVyaXRlZC9wL0Jhc2VJbXBsLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9pbXBvcnRTaW5nbGVWc0luaGVyaXRlZC9wL0Jhc2VJbXBsLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmNiNDg3YgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nL2ltcG9ydFNpbmdsZVZzSW5oZXJpdGVkL3AvQmFzZUltcGwuamF2YQpAQCAtMCwwICsxLDUgQEAKK3BhY2thZ2UgcDsKKworcHVibGljIGNsYXNzIEJhc2VJbXBsIGltcGxlbWVudHMgQmFzZSB7CisgIHN0YXRpYyBjbGFzcyBJbm5lciBpbXBsZW1lbnRzIEJhc2VJbXBsLklubmVyIHsgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nL2ltcG9ydFNpbmdsZVZzU2FtZVBhY2thZ2UveDEvQy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvaW1wb3J0U2luZ2xlVnNTYW1lUGFja2FnZS94MS9DLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGRhZDY1MgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nL2ltcG9ydFNpbmdsZVZzU2FtZVBhY2thZ2UveDEvQy5qYXZhCkBAIC0wLDAgKzEsNCBAQAorcGFja2FnZSB4MTsKK3B1YmxpYyBjbGFzcyBDIHsKKyAgcHVibGljIEMoU3RyaW5nIHMpe30KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9pbXBvcnRTaW5nbGVWc1NhbWVQYWNrYWdlL3kvQy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvaW1wb3J0U2luZ2xlVnNTYW1lUGFja2FnZS95L0MuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZWEyMzExCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvaW1wb3J0U2luZ2xlVnNTYW1lUGFja2FnZS95L0MuamF2YQpAQCAtMCwwICsxLDQgQEAKK3BhY2thZ2UgeTsKK3B1YmxpYyBjbGFzcyBDIHsKKworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nL2ltcG9ydFNpbmdsZVZzU2FtZVBhY2thZ2UveS9ZLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9pbXBvcnRTaW5nbGVWc1NhbWVQYWNrYWdlL3kvWS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk4NzY3MDMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9pbXBvcnRTaW5nbGVWc1NhbWVQYWNrYWdlL3kvWS5qYXZhCkBAIC0wLDAgKzEsNiBAQAorcGFja2FnZSB5OworaW1wb3J0IHgxLkM7CisKK2NsYXNzIFkgeworICBDIGFDbGFzcyA9IG5ldyBDKCIiKTsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9tdWx0aUpES0NvbmZsaWN0L21vZHVsZUphdmE0L2NvbS9KYXZhNC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvbXVsdGlKREtDb25mbGljdC9tb2R1bGVKYXZhNC9jb20vSmF2YTQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZTRjMmQ0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvbXVsdGlKREtDb25mbGljdC9tb2R1bGVKYXZhNC9jb20vSmF2YTQuamF2YQpAQCAtMCwwICsxLDkgQEAKK3BhY2thZ2UgY29tOworCitpbXBvcnQgamF2YS51dGlsLio7CisKK3B1YmxpYyBjbGFzcyBKYXZhNCB7CisgICAgcHVibGljIExpc3QgZ2V0TGlzdCgpIHsKKyAgICAgICAgcmV0dXJuIG51bGw7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nL211bHRpSkRLQ29uZmxpY3QvbW9kdWxlSmF2YTQvamF2YTQuaW1sIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvbXVsdGlKREtDb25mbGljdC9tb2R1bGVKYXZhNC9qYXZhNC5pbWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTJhMWU3NQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nL211bHRpSkRLQ29uZmxpY3QvbW9kdWxlSmF2YTQvamF2YTQuaW1sCkBAIC0wLDAgKzEsMTQgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8bW9kdWxlIHJlbGF0aXZlUGF0aHM9InRydWUiIHR5cGU9IkpBVkFfTU9EVUxFIiB2ZXJzaW9uPSI1Ij4KKyAgPGNvbXBvbmVudCBuYW1lPSJOZXdNb2R1bGVSb290TWFuYWdlciIgTEFOR1VBR0VfTEVWRUw9IkpES18xXzQiIGluaGVyaXQtY29tcGlsZXItb3V0cHV0PSJmYWxzZSI+CisgICAgPG91dHB1dCB1cmw9ImZpbGU6Ly8kTU9EVUxFX0RJUiQvY2xhc3NlcyIgLz4KKyAgICA8ZXhjbHVkZS1vdXRwdXQgLz4KKyAgICA8Y29udGVudCB1cmw9ImZpbGU6Ly8kTU9EVUxFX0RJUiQiPgorICAgICAgPHNvdXJjZUZvbGRlciB1cmw9ImZpbGU6Ly8kTU9EVUxFX0RJUiQiIGlzVGVzdFNvdXJjZT0iZmFsc2UiIC8+CisgICAgPC9jb250ZW50PgorICAgIDxvcmRlckVudHJ5IHR5cGU9ImpkayIgamRrTmFtZT0iMS4zIiBqZGtUeXBlPSJKYXZhU0RLIiAvPgorICAgIDxvcmRlckVudHJ5IHR5cGU9InNvdXJjZUZvbGRlciIgZm9yVGVzdHM9ImZhbHNlIiAvPgorICAgIDxvcmRlckVudHJ5UHJvcGVydGllcyAvPgorICA8L2NvbXBvbmVudD4KKzwvbW9kdWxlPgorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9tdWx0aUpES0NvbmZsaWN0L21vZHVsZUphdmE1L2NvbS9KYXZhNS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvbXVsdGlKREtDb25mbGljdC9tb2R1bGVKYXZhNS9jb20vSmF2YTUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYjc5YTIzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvbXVsdGlKREtDb25mbGljdC9tb2R1bGVKYXZhNS9jb20vSmF2YTUuamF2YQpAQCAtMCwwICsxLDEyIEBACitwYWNrYWdlIGNvbTsKK2ltcG9ydCBqYXZhLnV0aWwuTGlzdDsKKworcHVibGljIGNsYXNzIEphdmE1IHsKKyAgICB2b2lkIHRlc3QoSmF2YTQgZm9vKSB7CisgICAgICAgIExpc3QgbGlzdCA9IGZvby5nZXRMaXN0KCk7CisgICAgICAgIGZvciAoT2JqZWN0IG8gOiBsaXN0KSB7CisgICAgICAgIH0KKyAgICAgICAgZm9yIChPYmplY3QgbyA6IGZvby5nZXRMaXN0KCkpIHsKKyAgICAgICAgfQorICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nL211bHRpSkRLQ29uZmxpY3QvbW9kdWxlSmF2YTUvamF2YTUuaW1sIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvbXVsdGlKREtDb25mbGljdC9tb2R1bGVKYXZhNS9qYXZhNS5pbWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDQ3OWVmNgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nL211bHRpSkRLQ29uZmxpY3QvbW9kdWxlSmF2YTUvamF2YTUuaW1sCkBAIC0wLDAgKzEsMTYgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8bW9kdWxlIHJlbGF0aXZlUGF0aHM9InRydWUiIHR5cGU9IkpBVkFfTU9EVUxFIiB2ZXJzaW9uPSI1Ij4KKyAgPGNvbXBvbmVudCBuYW1lPSJOZXdNb2R1bGVSb290TWFuYWdlciIgTEFOR1VBR0VfTEVWRUw9IkpES18xXzUiIGluaGVyaXQtY29tcGlsZXItb3V0cHV0PSJmYWxzZSI+CisgICAgPG91dHB1dCB1cmw9ImZpbGU6Ly8kTU9EVUxFX0RJUiQvY2xhc3NlcyIgLz4KKyAgICA8ZXhjbHVkZS1vdXRwdXQgLz4KKyAgICA8Y29udGVudCB1cmw9ImZpbGU6Ly8kTU9EVUxFX0RJUiQiPgorICAgICAgPHNvdXJjZUZvbGRlciB1cmw9ImZpbGU6Ly8kTU9EVUxFX0RJUiQiIGlzVGVzdFNvdXJjZT0iZmFsc2UiIC8+CisgICAgPC9jb250ZW50PgorICAgIDxvcmRlckVudHJ5IHR5cGU9ImpkayIgamRrTmFtZT0iMS4zIiBqZGtUeXBlPSJKYXZhU0RLIiAvPgorICAgIDxvcmRlckVudHJ5IHR5cGU9InNvdXJjZUZvbGRlciIgZm9yVGVzdHM9ImZhbHNlIiAvPgorICAgIDxvcmRlckVudHJ5IHR5cGU9Im1vZHVsZSIgbW9kdWxlLW5hbWU9ImphdmE0IiAvPgorCisgICAgPG9yZGVyRW50cnlQcm9wZXJ0aWVzIC8+CisgIDwvY29tcG9uZW50PgorPC9tb2R1bGU+CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nL25vdEFLZXl3b3Jkcy9UZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9ub3RBS2V5d29yZHMvVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI0MjMwOTkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9ub3RBS2V5d29yZHMvVGVzdC5qYXZhCkBAIC0wLDAgKzEsOSBAQAoraW1wb3J0IHBrZy5CYXI7CitpbXBvcnQgcGtnLmVudW0uRm9vOworCitjbGFzcyBUZXN0IHsKKyAgdm9pZCBtKCkgeworICAgIEJhciBiID0gbmV3IEJhcigpOworICAgIGIuZG9Tb21ldGhpbmcoRm9vLkZPTyk7ICAvLyB3aXRoIGxhbmd1YWdlIGxldmVsIEpESyAxLjQgJ2VudW0nIHNob3VsZG4ndCBiZSBhIGtleXdvcmQgKHNlZSBJREVBLTY3NTU2KQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvbm90QUtleXdvcmRzL3BrZy9CYXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nL25vdEFLZXl3b3Jkcy9wa2cvQmFyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGQyMzYwNwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nL25vdEFLZXl3b3Jkcy9wa2cvQmFyLmphdmEKQEAgLTAsMCArMSw5IEBACitwYWNrYWdlIHBrZzsKKworaW1wb3J0IHBrZy5lbnVtLkZvbzsKKworcHVibGljIGNsYXNzIEJhciB7CisgIHB1YmxpYyB2b2lkIGRvU29tZXRoaW5nKEZvbyBmb28pIHsKKyAgICBTeXN0ZW0ub3V0LnByaW50bG4oImZvbz0iICsgZm9vKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nL25vdEFLZXl3b3Jkcy9wa2cvZW51bS9Gb28uamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nL25vdEFLZXl3b3Jkcy9wa2cvZW51bS9Gb28uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMTczYjEyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvbm90QUtleXdvcmRzL3BrZy9lbnVtL0Zvby5qYXZhCkBAIC0wLDAgKzEsNSBAQAorcGFja2FnZSBwa2cuZW51bTsKKworcHVibGljIGNsYXNzIEZvbyB7CisgIHB1YmxpYyBzdGF0aWMgRm9vIEZPTyA9IG5ldyBGb28oKTsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9vbkRlbWFuZEltcG9ydENvbmZsaWN0L091dGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9vbkRlbWFuZEltcG9ydENvbmZsaWN0L091dGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDE1NjVlMwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nL29uRGVtYW5kSW1wb3J0Q29uZmxpY3QvT3V0ZXIuamF2YQpAQCAtMCwwICsxLDUgQEAKK2ltcG9ydCB4Lio7CitpbXBvcnQgeS4qOworcHVibGljIGNsYXNzIE91dGVyIHsKKyAgICBUVFQgdHR0ID0gbmV3IFRUVCgpOworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvb25EZW1hbmRJbXBvcnRDb25mbGljdC94L1RUVC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvb25EZW1hbmRJbXBvcnRDb25mbGljdC94L1RUVC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBhNjI5ODkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9vbkRlbWFuZEltcG9ydENvbmZsaWN0L3gvVFRULmphdmEKQEAgLTAsMCArMSwzIEBACitwYWNrYWdlIHg7CisKK3B1YmxpYyBjbGFzcyBUVFQge30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9vbkRlbWFuZEltcG9ydENvbmZsaWN0L3kvVFRULmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9vbkRlbWFuZEltcG9ydENvbmZsaWN0L3kvVFRULmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWMzNzFiMAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nL29uRGVtYW5kSW1wb3J0Q29uZmxpY3QveS9UVFQuamF2YQpAQCAtMCwwICsxLDMgQEAKK3BhY2thZ2UgeTsKKworY2xhc3MgVFRUIHt9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvb3ZlcnJpZGVQYWNrYWdlTG9jYWwveC9CYXNlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9vdmVycmlkZVBhY2thZ2VMb2NhbC94L0Jhc2UuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zY2RjNzNkNwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nL292ZXJyaWRlUGFja2FnZUxvY2FsL3gvQmFzZS5qYXZhCkBAIC0wLDAgKzEsNCBAQAorcGFja2FnZSB4OworcHVibGljIGNsYXNzIEJhc2UgeworICB2b2lkIGYoKSB7fQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nL292ZXJyaWRlUGFja2FnZUxvY2FsL3gveS9EZXJpdmVkLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9vdmVycmlkZVBhY2thZ2VMb2NhbC94L3kvRGVyaXZlZC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQyNmE2MTcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9vdmVycmlkZVBhY2thZ2VMb2NhbC94L3kvRGVyaXZlZC5qYXZhCkBAIC0wLDAgKzEsNSBAQAorcGFja2FnZSB4Lnk7CisKK3B1YmxpYyBjbGFzcyBEZXJpdmVkIGV4dGVuZHMgeC5CYXNlIHsKKyAgcHJpdmF0ZSB2b2lkIGYoKSB7fQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nL3BhY2thZ2VMb2NhbE92ZXJyaWRlL3gvQS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvcGFja2FnZUxvY2FsT3ZlcnJpZGUveC9BLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTUzNDI5NAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nL3BhY2thZ2VMb2NhbE92ZXJyaWRlL3gvQS5qYXZhCkBAIC0wLDAgKzEsNiBAQAorcGFja2FnZSB4OworCitwdWJsaWMgY2xhc3MgQSB7CisgICAgaW50IG1ldGhvZCgpIHsgcmV0dXJuIDA7IH0KKworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvcGFja2FnZUxvY2FsT3ZlcnJpZGUveS9CLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9wYWNrYWdlTG9jYWxPdmVycmlkZS95L0IuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMjUzMGU2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvcGFja2FnZUxvY2FsT3ZlcnJpZGUveS9CLmphdmEKQEAgLTAsMCArMSw4IEBACitwYWNrYWdlIHk7CisKK2ltcG9ydCB4LkE7CisKK3B1YmxpYyBjbGFzcyBCIGV4dGVuZHMgQSB7CisgICAgcHVibGljIGRvdWJsZSBtZXRob2QoKSB7IHJldHVybiAwLjA7IH0KK30KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvcGFja2FnZUxvY2FsT3ZlcnJpZGUveS9DLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9wYWNrYWdlTG9jYWxPdmVycmlkZS95L0MuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZDQwMTA0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvcGFja2FnZUxvY2FsT3ZlcnJpZGUveS9DLmphdmEKQEAgLTAsMCArMSw1IEBACitwYWNrYWdlIHk7CisKK3B1YmxpYyBjbGFzcyBDIGV4dGVuZHMgQiB7CisgICAgcHVibGljIGRvdWJsZSBtZXRob2QoKSB7IHJldHVybiAwOyB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9wYWNrYWdlTG9jYWxzL3gvQS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvcGFja2FnZUxvY2Fscy94L0EuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYmJiZDFhNQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nL3BhY2thZ2VMb2NhbHMveC9BLmphdmEKQEAgLTAsMCArMSwxNSBAQAorcGFja2FnZSB4OworcHVibGljIGNsYXNzIEEgZXh0ZW5kcyBEeworICAgIGludCBrOworICAgIHN0YXRpYyB2b2lkIHN0YXRpY0YoKSB7fQorfQorY2xhc3MgQyBleHRlbmRzIHguc3ViLkIgeworICAgIGludCBuPTxlcnJvciBkZXNjcj0iJ2snIGlzIG5vdCBwdWJsaWMgaW4gJ3guQScuIENhbm5vdCBiZSBhY2Nlc3NlZCBmcm9tIG91dHNpZGUgcGFja2FnZSI+azwvZXJyb3I+OworCisgICAgLy8gY2FuIGNhbGwgZGVzcGl0ZSBpbmhlcml0ZWQgdGhyb3VnaCBwYWNrYWdlIGxvY2FsIGZyb20gb3RoZXIgcGFja2FnZQorICAgIHZvaWQgZigpIHsgQS5zdGF0aWNGKCk7IH0KK30KKworY2xhc3MgRHsKKyAgICBwdWJsaWMgdm9pZCBmb28oKXt9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9wYWNrYWdlTG9jYWxzL3gvQ29udGFpbmVyQ2xhc3MuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nL3BhY2thZ2VMb2NhbHMveC9Db250YWluZXJDbGFzcy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg1ZmU4Y2UKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9wYWNrYWdlTG9jYWxzL3gvQ29udGFpbmVyQ2xhc3MuamF2YQpAQCAtMCwwICsxLDkgQEAKKy8vIHBhY2thZ2UgbG9jYWwgY2xhc3MgaW4gdGhlIG1pZGRsZQorCitwYWNrYWdlIHg7CitjbGFzcyBDb21wb25lbnRDbGFzcyB7CisgICAgcHVibGljIGludCBzaXplOworfQorcHVibGljIGNsYXNzIENvbnRhaW5lckNsYXNzIHsKKyAgICBwdWJsaWMgQ29tcG9uZW50Q2xhc3MgY2MgPSBuZXcgQ29tcG9uZW50Q2xhc3MoKTsKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nL3BhY2thZ2VMb2NhbHMveC9zdWIvQi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvcGFja2FnZUxvY2Fscy94L3N1Yi9CLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDk1Yzg3MgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nL3BhY2thZ2VMb2NhbHMveC9zdWIvQi5qYXZhCkBAIC0wLDAgKzEsNiBAQAorcGFja2FnZSB4LnN1YjsKKworcHVibGljIGNsYXNzIEIgZXh0ZW5kcyB4LkEgeworfQorCisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nL3BhY2thZ2VMb2NhbHMveC9zdWIvVXNpbmdNYWluLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9wYWNrYWdlTG9jYWxzL3gvc3ViL1VzaW5nTWFpbi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc2MjE0ZWEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9wYWNrYWdlTG9jYWxzL3gvc3ViL1VzaW5nTWFpbi5qYXZhCkBAIC0wLDAgKzEsMTIgQEAKK3BhY2thZ2UgeC5zdWI7CisKK2ltcG9ydCB4LkNvbnRhaW5lckNsYXNzOworaW1wb3J0IHguQTsKKworcHVibGljIGNsYXNzIFVzaW5nTWFpbiB7CisgICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgeworICAgICAgICBmaW5hbCBDb250YWluZXJDbGFzcyBjb250ID0gbmV3IENvbnRhaW5lckNsYXNzKCk7CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihjb250LmNjLjxlcnJvciBkZXNjcj0iJ3guQ29tcG9uZW50Q2xhc3MnIGlzIG5vdCBwdWJsaWMgaW4gJ3gnLiBDYW5ub3QgYmUgYWNjZXNzZWQgZnJvbSBvdXRzaWRlIHBhY2thZ2UiPnNpemU8L2Vycm9yPik7Ly8vLworICAgICAgICBuZXcgQSgpLmZvbygpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nL3Byb3RlY3RlZEFjY2Vzc0Zyb21PdGhlclBhY2thZ2UvYS9BLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9wcm90ZWN0ZWRBY2Nlc3NGcm9tT3RoZXJQYWNrYWdlL2EvQS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU2ZTFlNmYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9wcm90ZWN0ZWRBY2Nlc3NGcm9tT3RoZXJQYWNrYWdlL2EvQS5qYXZhCkBAIC0wLDAgKzEsNiBAQAorcGFja2FnZSBhOworaW1wb3J0IGIuQjsKKworcHVibGljIGNsYXNzIEEgZXh0ZW5kcyBCIHsKKyAgaW50IGYgPSBzdXBlci5iYmI7Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9wcm90ZWN0ZWRBY2Nlc3NGcm9tT3RoZXJQYWNrYWdlL2EvRmF0aGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9wcm90ZWN0ZWRBY2Nlc3NGcm9tT3RoZXJQYWNrYWdlL2EvRmF0aGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmQ1YzAzOQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nL3Byb3RlY3RlZEFjY2Vzc0Zyb21PdGhlclBhY2thZ2UvYS9GYXRoZXIuamF2YQpAQCAtMCwwICsxLDcgQEAKK3BhY2thZ2UgYTsKKworcHVibGljIGNsYXNzIEZhdGhlciB7CisgICAgcHJvdGVjdGVkIHZvaWQgZnVuYygpIHsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJGYXRoZXIuZnVuYyIpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nL3Byb3RlY3RlZEFjY2Vzc0Zyb21PdGhlclBhY2thZ2UvYS9NYWluLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9wcm90ZWN0ZWRBY2Nlc3NGcm9tT3RoZXJQYWNrYWdlL2EvTWFpbi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM5ZWY1ZWQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9wcm90ZWN0ZWRBY2Nlc3NGcm9tT3RoZXJQYWNrYWdlL2EvTWFpbi5qYXZhCkBAIC0wLDAgKzEsMTIgQEAKK3BhY2thZ2UgYTsKKworaW1wb3J0IGIuU29uOworCitwdWJsaWMgY2xhc3MgTWFpbiB7CisgICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgeworCisgICAgICAgIFNvbiBiYWQgPSBuZXcgU29uKCk7CisgICAgICAgIGJhZC48ZXJyb3IgZGVzY3I9IidmdW5jKCknIGhhcyBwcm90ZWN0ZWQgYWNjZXNzIGluICdiLlNvbiciPmZ1bmM8L2Vycm9yPigpOworCisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvcHJvdGVjdGVkQWNjZXNzRnJvbU90aGVyUGFja2FnZS9iL0IuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nL3Byb3RlY3RlZEFjY2Vzc0Zyb21PdGhlclBhY2thZ2UvYi9CLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWM3NzhiZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nL3Byb3RlY3RlZEFjY2Vzc0Zyb21PdGhlclBhY2thZ2UvYi9CLmphdmEKQEAgLTAsMCArMSw1IEBACitwYWNrYWdlIGI7CisKK3B1YmxpYyBjbGFzcyBCIHsKKyAgcHJvdGVjdGVkIGludCBiYmI7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvcHJvdGVjdGVkQWNjZXNzRnJvbU90aGVyUGFja2FnZS9iL1Nvbi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvcHJvdGVjdGVkQWNjZXNzRnJvbU90aGVyUGFja2FnZS9iL1Nvbi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhhZDcxMjgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9wcm90ZWN0ZWRBY2Nlc3NGcm9tT3RoZXJQYWNrYWdlL2IvU29uLmphdmEKQEAgLTAsMCArMSw5IEBACitwYWNrYWdlIGI7CisKK2ltcG9ydCBhLkZhdGhlcjsKKworcHVibGljIGNsYXNzIFNvbiBleHRlbmRzIEZhdGhlciB7CisgICAgcHJvdGVjdGVkIHZvaWQgZnVuYygpIHsKKyAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiU29uLmZ1bmMiKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9wcm90ZWN0ZWRDb25zdHJ1Y3Rvci9wMS9DMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvcHJvdGVjdGVkQ29uc3RydWN0b3IvcDEvQzEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YWUxNTdkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvcHJvdGVjdGVkQ29uc3RydWN0b3IvcDEvQzEuamF2YQpAQCAtMCwwICsxLDUgQEAKK3BhY2thZ2UgcDE7CisKK3B1YmxpYyBjbGFzcyBDMSB7CisgICAgcHJvdGVjdGVkIEMxKGludCBpKSB7IH0gLy9wcm90ZWN0ZWQgY29uc3RydWN0b3IKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nL3Byb3RlY3RlZENvbnN0cnVjdG9yL3AyL0MyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9wcm90ZWN0ZWRDb25zdHJ1Y3Rvci9wMi9DMi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE1Njk4MDMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9wcm90ZWN0ZWRDb25zdHJ1Y3Rvci9wMi9DMi5qYXZhCkBAIC0wLDAgKzEsMTggQEAKK3BhY2thZ2UgcDI7CisKK2ltcG9ydCBwMS5DMTsKKworcHVibGljIGNsYXNzIEMyIGV4dGVuZHMgQzEgeworICAgIHB1YmxpYyBDMigpIHsKKyAgICAgICAgc3VwZXIoOSk7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgYW1ldGhvZCgpIHsKKyAgICAgICAgbmV3IDxlcnJvciBkZXNjcj0iJ0MxKGludCknIGhhcyBwcm90ZWN0ZWQgYWNjZXNzIGluICdwMS5DMSciPkMxPC9lcnJvcj4oOSk7IAorICAgIH0KKworICAgIE9iamVjdCBnZygpIHsKKyAgICAgICAgLy8gYW5vbnltb3VzIGlzIG9rPyEKKyAgICAgICAgcmV0dXJuIG5ldyBDMSgxKXt9OworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nL3Byb3RlY3RlZENvbnN0cnVjdG9yL3NhbWVQYWNrYWdlL0MxLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9wcm90ZWN0ZWRDb25zdHJ1Y3Rvci9zYW1lUGFja2FnZS9DMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdiZGNkYjgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9wcm90ZWN0ZWRDb25zdHJ1Y3Rvci9zYW1lUGFja2FnZS9DMS5qYXZhCkBAIC0wLDAgKzEsMTQgQEAKK3BhY2thZ2Ugc2FtZVBhY2thZ2U7CisKK3B1YmxpYyBjbGFzcyBDMSB7CisgICAgcHJvdGVjdGVkIEMxKGludCBpKSB7IH0gLy9wcm90ZWN0ZWQgY29uc3RydWN0b3IKK30KK2NsYXNzIENjIGV4dGVuZHMgQzEgeworICAgIHB1YmxpYyBDYygpIHsKKyAgICAgICAgc3VwZXIoOSk7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgYW1ldGhvZCgpIHsKKyAgICAgICAgbmV3IEMxKDkpOyAvLyA8PDw8LS0tLS0tLS0tLSBUaGlzIGlzIGFuIGVycm9yCisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvcHJvdGVjdGVkQ29uc3RydWN0b3Ivc2FtZVBhY2thZ2UvQzIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nL3Byb3RlY3RlZENvbnN0cnVjdG9yL3NhbWVQYWNrYWdlL0MyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2MyMWE3YgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nL3Byb3RlY3RlZENvbnN0cnVjdG9yL3NhbWVQYWNrYWdlL0MyLmphdmEKQEAgLTAsMCArMSwxMyBAQAorcGFja2FnZSBzYW1lUGFja2FnZTsKKworaW1wb3J0IHNhbWVQYWNrYWdlLkMxOworCitwdWJsaWMgY2xhc3MgQzIgZXh0ZW5kcyBDMSB7CisgICAgcHVibGljIEMyKCkgeworICAgICAgICBzdXBlcig5KTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBhbWV0aG9kKCkgeworICAgICAgICBuZXcgQzEoOSk7IC8vIDw8PDwtLS0tLS0tLS0tIFRoaXMgaXMgYW4gZXJyb3IKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9wcm90ZWN0ZWRDb25zdHJ1Y3RvckluSW5uZXIvcDEvQzEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nL3Byb3RlY3RlZENvbnN0cnVjdG9ySW5Jbm5lci9wMS9DMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA2NzQ4MWIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9wcm90ZWN0ZWRDb25zdHJ1Y3RvckluSW5uZXIvcDEvQzEuamF2YQpAQCAtMCwwICsxLDcgQEAKK3BhY2thZ2UgcDE7CisKK3B1YmxpYyBjbGFzcyBDMSB7CisgICAgICAgIHByb3RlY3RlZCBzdGF0aWMgY2xhc3MgSW5uZXJDbGFzc0luQmFzZQorICAgICAgICB7CisgICAgICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nL3Byb3RlY3RlZENvbnN0cnVjdG9ySW5Jbm5lci9wMi9DMi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvcHJvdGVjdGVkQ29uc3RydWN0b3JJbklubmVyL3AyL0MyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzlkNWQxOQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nL3Byb3RlY3RlZENvbnN0cnVjdG9ySW5Jbm5lci9wMi9DMi5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKK3BhY2thZ2UgcDI7CisKK2ltcG9ydCBwMS5DMTsKKworcHVibGljIGNsYXNzIEMyIGV4dGVuZHMgQzEgeworICAgIHB1YmxpYyB2b2lkIGFtZXRob2QoKSB7CisgICAgICAgIElubmVyQ2xhc3NJbkJhc2UgaW5uZXI7CisgICAgICAgIGlubmVyID0gbmV3IDxlcnJvciBkZXNjcj0iJ3AxLkMxLklubmVyQ2xhc3NJbkJhc2UnIGhhcyBwcm90ZWN0ZWQgYWNjZXNzIGluICdwMS5DMSciPklubmVyQ2xhc3NJbkJhc2U8L2Vycm9yPigpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nL3JlaW1wb3J0Q29uZmxpY3RpbmdDbGFzc2VzL3gvVXNhZ2UuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nL3JlaW1wb3J0Q29uZmxpY3RpbmdDbGFzc2VzL3gvVXNhZ2UuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNmUyNmNmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvcmVpbXBvcnRDb25mbGljdGluZ0NsYXNzZXMveC9Vc2FnZS5qYXZhCkBAIC0wLDAgKzEsMTQgQEAKK3BhY2thZ2UgeDsKKworaW1wb3J0IHgubi5YMTsKK2ltcG9ydCB4Lm4uWDI7CitpbXBvcnQgeC5uLlgzOworCitARGVwcmVjYXRlZAorcHVibGljIGNsYXNzIFkgeworICAgIFgxIHgxOworICAgIHgubi5DbGFzcyBzOworICAgIFgyIHgyOworICAgIENsYXNzIGFjbGFzczsKKyAgICBYMyBjYzM7Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9yZWltcG9ydENvbmZsaWN0aW5nQ2xhc3Nlcy94L1VzYWdlX2FmdGVyT3B0aW1pemUudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvcmVpbXBvcnRDb25mbGljdGluZ0NsYXNzZXMveC9Vc2FnZV9hZnRlck9wdGltaXplLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNWYxNmIyYgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nL3JlaW1wb3J0Q29uZmxpY3RpbmdDbGFzc2VzL3gvVXNhZ2VfYWZ0ZXJPcHRpbWl6ZS50eHQKQEAgLTAsMCArMSwxNCBAQAorcGFja2FnZSB4OworCitpbXBvcnQgeC5uLio7CisKK2ltcG9ydCBqYXZhLmxhbmcuQ2xhc3M7CisKK0BEZXByZWNhdGVkCitwdWJsaWMgY2xhc3MgWSB7CisgICAgWDEgeDE7CisgICAgeC5uLkNsYXNzIHM7CisgICAgWDIgeDI7CisgICAgQ2xhc3MgYWNsYXNzOworICAgIFgzIGNjMzsKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nL3JlaW1wb3J0Q29uZmxpY3RpbmdDbGFzc2VzL3gvbi9DbGFzcy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvcmVpbXBvcnRDb25mbGljdGluZ0NsYXNzZXMveC9uL0NsYXNzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODkwODU1YgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nL3JlaW1wb3J0Q29uZmxpY3RpbmdDbGFzc2VzL3gvbi9DbGFzcy5qYXZhCkBAIC0wLDAgKzEsMiBAQAorcGFja2FnZSB4Lm47CitwdWJsaWMgY2xhc3MgQ2xhc3N7fQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nL3JlaW1wb3J0Q29uZmxpY3RpbmdDbGFzc2VzL3gvbi9YMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvcmVpbXBvcnRDb25mbGljdGluZ0NsYXNzZXMveC9uL1gxLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjYwMWQ4NgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nL3JlaW1wb3J0Q29uZmxpY3RpbmdDbGFzc2VzL3gvbi9YMS5qYXZhCkBAIC0wLDAgKzEsNCBAQAorcGFja2FnZSB4Lm47CisKK3B1YmxpYyBjbGFzcyBYMSB7Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9yZWltcG9ydENvbmZsaWN0aW5nQ2xhc3Nlcy94L24vWDIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nL3JlaW1wb3J0Q29uZmxpY3RpbmdDbGFzc2VzL3gvbi9YMi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMyMmJiNGMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9yZWltcG9ydENvbmZsaWN0aW5nQ2xhc3Nlcy94L24vWDIuamF2YQpAQCAtMCwwICsxLDQgQEAKK3BhY2thZ2UgeC5uOworCitwdWJsaWMgY2xhc3MgWDIgeworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvcmVpbXBvcnRDb25mbGljdGluZ0NsYXNzZXMveC9uL1gzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9yZWltcG9ydENvbmZsaWN0aW5nQ2xhc3Nlcy94L24vWDMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lOGFmZDZjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvcmVpbXBvcnRDb25mbGljdGluZ0NsYXNzZXMveC9uL1gzLmphdmEKQEAgLTAsMCArMSw0IEBACitwYWNrYWdlIHgubjsKKworcHVibGljIGNsYXNzIFgzIHsKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nL3NhbWVDbGFzc2VzSW5Tb3VyY2VBbmRMaWIvbGliL2xpYi5qYXIgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9zYW1lQ2xhc3Nlc0luU291cmNlQW5kTGliL2xpYi9saWIuamFyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgwZTQ0NWQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9zYW1lQ2xhc3Nlc0luU291cmNlQW5kTGliL2xpYi9saWIuamFyCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nL3NhbWVDbGFzc2VzSW5Tb3VyY2VBbmRMaWIvbGliL2xpYnNyYy56aXAgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9zYW1lQ2xhc3Nlc0luU291cmNlQW5kTGliL2xpYi9saWJzcmMuemlwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdlYWY4NzQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9zYW1lQ2xhc3Nlc0luU291cmNlQW5kTGliL2xpYi9saWJzcmMuemlwCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nL3NhbWVDbGFzc2VzSW5Tb3VyY2VBbmRMaWIvc2V2ZXJhbEluc3RhbmNlcy5pbWwgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9zYW1lQ2xhc3Nlc0luU291cmNlQW5kTGliL3NldmVyYWxJbnN0YW5jZXMuaW1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdjZDMzOWU0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvc2FtZUNsYXNzZXNJblNvdXJjZUFuZExpYi9zZXZlcmFsSW5zdGFuY2VzLmltbApAQCAtMCwwICsxLDIzIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPG1vZHVsZSByZWxhdGl2ZVBhdGhzPSJ0cnVlIiB0eXBlPSJKQVZBX01PRFVMRSIgdmVyc2lvbj0iNCI+CisgIDxjb21wb25lbnQgbmFtZT0iTmV3TW9kdWxlUm9vdE1hbmFnZXIiIGluaGVyaXQtY29tcGlsZXItb3V0cHV0PSJ0cnVlIj4KKyAgICA8ZXhjbHVkZS1vdXRwdXQgLz4KKyAgICA8Y29udGVudCB1cmw9ImZpbGU6Ly8kTU9EVUxFX0RJUiQiPgorICAgICAgPHNvdXJjZUZvbGRlciB1cmw9ImZpbGU6Ly8kTU9EVUxFX0RJUiQvc3JjIiBpc1Rlc3RTb3VyY2U9ImZhbHNlIiAvPgorICAgIDwvY29udGVudD4KKyAgICA8b3JkZXJFbnRyeSB0eXBlPSJpbmhlcml0ZWRKZGsiIC8+CisgICAgPG9yZGVyRW50cnkgdHlwZT0ic291cmNlRm9sZGVyIiBmb3JUZXN0cz0iZmFsc2UiIC8+CisgICAgPG9yZGVyRW50cnkgdHlwZT0ibW9kdWxlLWxpYnJhcnkiPgorICAgICAgPGxpYnJhcnk+CisgICAgICAgIDxDTEFTU0VTPgorICAgICAgICAgIDxyb290IHVybD0iamFyOi8vJE1PRFVMRV9ESVIkL2xpYi9saWIuamFyIS8iIC8+CisgICAgICAgIDwvQ0xBU1NFUz4KKyAgICAgICAgPEpBVkFET0MgLz4KKyAgICAgICAgPFNPVVJDRVM+CisgICAgICAgICAgPHJvb3QgdXJsPSJqYXI6Ly8kTU9EVUxFX0RJUiQvbGliL2xpYnNyYy56aXAhLyIgLz4KKyAgICAgICAgPC9TT1VSQ0VTPgorICAgICAgPC9saWJyYXJ5PgorICAgIDwvb3JkZXJFbnRyeT4KKyAgPC9jb21wb25lbnQ+Cis8L21vZHVsZT4KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvc2FtZUNsYXNzZXNJblNvdXJjZUFuZExpYi9zZXZlcmFsSW5zdGFuY2VzLmlwciBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nL3NhbWVDbGFzc2VzSW5Tb3VyY2VBbmRMaWIvc2V2ZXJhbEluc3RhbmNlcy5pcHIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzI1Y2JmMQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nL3NhbWVDbGFzc2VzSW5Tb3VyY2VBbmRMaWIvc2V2ZXJhbEluc3RhbmNlcy5pcHIKQEAgLTAsMCArMSwyNjUgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8cHJvamVjdCByZWxhdGl2ZVBhdGhzPSJmYWxzZSIgdmVyc2lvbj0iNCI+CisgIDxjb21wb25lbnQgbmFtZT0iQW50Q29uZmlndXJhdGlvbiI+CisgICAgPGRlZmF1bHRBbnQgYnVuZGxlZEFudD0idHJ1ZSIgLz4KKyAgPC9jb21wb25lbnQ+CisgIDxjb21wb25lbnQgbmFtZT0iQnVpbGRKYXJQcm9qZWN0U2V0dGluZ3MiPgorICAgIDxvcHRpb24gbmFtZT0iQlVJTERfSkFSU19PTl9NQUtFIiB2YWx1ZT0iZmFsc2UiIC8+CisgIDwvY29tcG9uZW50PgorICA8Y29tcG9uZW50IG5hbWU9IkNvZGVTdHlsZVNldHRpbmdzTWFuYWdlciI+CisgICAgPG9wdGlvbiBuYW1lPSJQRVJfUFJPSkVDVF9TRVRUSU5HUyIgLz4KKyAgICA8b3B0aW9uIG5hbWU9IlVTRV9QRVJfUFJPSkVDVF9TRVRUSU5HUyIgdmFsdWU9ImZhbHNlIiAvPgorICA8L2NvbXBvbmVudD4KKyAgPGNvbXBvbmVudCBuYW1lPSJDb21waWxlckNvbmZpZ3VyYXRpb24iPgorICAgIDxvcHRpb24gbmFtZT0iREVGQVVMVF9DT01QSUxFUiIgdmFsdWU9IkphdmFjIiAvPgorICAgIDxvcHRpb24gbmFtZT0iREVQTE9ZX0FGVEVSX01BS0UiIHZhbHVlPSIwIiAvPgorICAgIDxyZXNvdXJjZUV4dGVuc2lvbnM+CisgICAgICA8ZW50cnkgbmFtZT0iLitcLihwcm9wZXJ0aWVzfHhtbHxodG1sfGR0ZHx0bGQpIiAvPgorICAgICAgPGVudHJ5IG5hbWU9Ii4rXC4oZ2lmfHBuZ3xqcGVnfGpwZykiIC8+CisgICAgPC9yZXNvdXJjZUV4dGVuc2lvbnM+CisgICAgPHdpbGRjYXJkUmVzb3VyY2VQYXR0ZXJucz4KKyAgICAgIDxlbnRyeSBuYW1lPSI/Ki5wcm9wZXJ0aWVzIiAvPgorICAgICAgPGVudHJ5IG5hbWU9Ij8qLnhtbCIgLz4KKyAgICAgIDxlbnRyeSBuYW1lPSI/Ki5naWYiIC8+CisgICAgICA8ZW50cnkgbmFtZT0iPyoucG5nIiAvPgorICAgICAgPGVudHJ5IG5hbWU9Ij8qLmpwZWciIC8+CisgICAgICA8ZW50cnkgbmFtZT0iPyouanBnIiAvPgorICAgICAgPGVudHJ5IG5hbWU9Ij8qLmh0bWwiIC8+CisgICAgICA8ZW50cnkgbmFtZT0iPyouZHRkIiAvPgorICAgICAgPGVudHJ5IG5hbWU9Ij8qLnRsZCIgLz4KKyAgICAgIDxlbnRyeSBuYW1lPSI/Ki5mdGwiIC8+CisgICAgPC93aWxkY2FyZFJlc291cmNlUGF0dGVybnM+CisgIDwvY29tcG9uZW50PgorICA8Y29tcG9uZW50IG5hbWU9IkNvcHlyaWdodE1hbmFnZXIiIGRlZmF1bHQ9IiI+CisgICAgPG1vZHVsZTJjb3B5cmlnaHQgLz4KKyAgPC9jb21wb25lbnQ+CisgIDxjb21wb25lbnQgbmFtZT0iRGVwZW5kZW5jaWVzQW5hbHl6ZU1hbmFnZXIiPgorICAgIDxvcHRpb24gbmFtZT0ibXlGb3J3YXJkRGlyZWN0aW9uIiB2YWx1ZT0iZmFsc2UiIC8+CisgIDwvY29tcG9uZW50PgorICA8Y29tcG9uZW50IG5hbWU9IkRlcGVuZGVuY3lWYWxpZGF0aW9uTWFuYWdlciI+CisgICAgPG9wdGlvbiBuYW1lPSJTS0lQX0lNUE9SVF9TVEFURU1FTlRTIiB2YWx1ZT0iZmFsc2UiIC8+CisgIDwvY29tcG9uZW50PgorICA8Y29tcG9uZW50IG5hbWU9IkVjbGlwc2VDb21waWxlclNldHRpbmdzIj4KKyAgICA8b3B0aW9uIG5hbWU9IkRFQlVHR0lOR19JTkZPIiB2YWx1ZT0idHJ1ZSIgLz4KKyAgICA8b3B0aW9uIG5hbWU9IkdFTkVSQVRFX05PX1dBUk5JTkdTIiB2YWx1ZT0idHJ1ZSIgLz4KKyAgICA8b3B0aW9uIG5hbWU9IkRFUFJFQ0FUSU9OIiB2YWx1ZT0iZmFsc2UiIC8+CisgICAgPG9wdGlvbiBuYW1lPSJBRERJVElPTkFMX09QVElPTlNfU1RSSU5HIiB2YWx1ZT0iIiAvPgorICAgIDxvcHRpb24gbmFtZT0iTUFYSU1VTV9IRUFQX1NJWkUiIHZhbHVlPSIxMjgiIC8+CisgIDwvY29tcG9uZW50PgorICA8Y29tcG9uZW50IG5hbWU9IkVjbGlwc2VFbWJlZGRlZENvbXBpbGVyU2V0dGluZ3MiPgorICAgIDxvcHRpb24gbmFtZT0iREVCVUdHSU5HX0lORk8iIHZhbHVlPSJ0cnVlIiAvPgorICAgIDxvcHRpb24gbmFtZT0iR0VORVJBVEVfTk9fV0FSTklOR1MiIHZhbHVlPSJ0cnVlIiAvPgorICAgIDxvcHRpb24gbmFtZT0iREVQUkVDQVRJT04iIHZhbHVlPSJmYWxzZSIgLz4KKyAgICA8b3B0aW9uIG5hbWU9IkFERElUSU9OQUxfT1BUSU9OU19TVFJJTkciIHZhbHVlPSIiIC8+CisgICAgPG9wdGlvbiBuYW1lPSJNQVhJTVVNX0hFQVBfU0laRSIgdmFsdWU9IjEyOCIgLz4KKyAgPC9jb21wb25lbnQ+CisgIDxjb21wb25lbnQgbmFtZT0iRW5jb2RpbmciIHVzZVVURkd1ZXNzaW5nPSJ0cnVlIiBuYXRpdmUyQXNjaWlGb3JQcm9wZXJ0aWVzRmlsZXM9ImZhbHNlIiAvPgorICA8Y29tcG9uZW50IG5hbWU9IkVudHJ5UG9pbnRzTWFuYWdlciI+CisgICAgPGVudHJ5X3BvaW50cyB2ZXJzaW9uPSIyLjAiIC8+CisgIDwvY29tcG9uZW50PgorICA8Y29tcG9uZW50IG5hbWU9IkhpZXJhcmNoeUJyb3dzZXJNYW5hZ2VyIj4KKyAgICA8b3B0aW9uIG5hbWU9IklTX0FVVE9TQ1JPTExfVE9fU09VUkNFIiB2YWx1ZT0iZmFsc2UiIC8+CisgICAgPG9wdGlvbiBuYW1lPSJTT1JUX0FMUEhBQkVUSUNBTExZIiB2YWx1ZT0iZmFsc2UiIC8+CisgICAgPG9wdGlvbiBuYW1lPSJISURFX0NMQVNTRVNfV0hFUkVfTUVUSE9EX05PVF9JTVBMRU1FTlRFRCIgdmFsdWU9ImZhbHNlIiAvPgorICA8L2NvbXBvbmVudD4KKyAgPGNvbXBvbmVudCBuYW1lPSJJbnNwZWN0aW9uUHJvamVjdFByb2ZpbGVNYW5hZ2VyIj4KKyAgICA8b3B0aW9uIG5hbWU9IlBST0pFQ1RfUFJPRklMRSIgdmFsdWU9IlByb2plY3QgRGVmYXVsdCIgLz4KKyAgICA8b3B0aW9uIG5hbWU9IlVTRV9QUk9KRUNUX0xFVkVMX1NFVFRJTkdTIiB2YWx1ZT0iZmFsc2UiIC8+CisgICAgPHNjb3BlcyAvPgorICAgIDxwcm9maWxlcz4KKyAgICAgIDxwcm9maWxlIHZlcnNpb249IjEuMCIgaXNfbG9ja2VkPSJmYWxzZSI+CisgICAgICAgIDxvcHRpb24gbmFtZT0ibXlOYW1lIiB2YWx1ZT0iUHJvamVjdCBEZWZhdWx0IiAvPgorICAgICAgICA8b3B0aW9uIG5hbWU9Im15TG9jYWwiIHZhbHVlPSJmYWxzZSIgLz4KKyAgICAgIDwvcHJvZmlsZT4KKyAgICA8L3Byb2ZpbGVzPgorICAgIDxsaXN0IHNpemU9IjAiIC8+CisgIDwvY29tcG9uZW50PgorICA8Y29tcG9uZW50IG5hbWU9IkphdmFjU2V0dGluZ3MiPgorICAgIDxvcHRpb24gbmFtZT0iREVCVUdHSU5HX0lORk8iIHZhbHVlPSJ0cnVlIiAvPgorICAgIDxvcHRpb24gbmFtZT0iR0VORVJBVEVfTk9fV0FSTklOR1MiIHZhbHVlPSJmYWxzZSIgLz4KKyAgICA8b3B0aW9uIG5hbWU9IkRFUFJFQ0FUSU9OIiB2YWx1ZT0idHJ1ZSIgLz4KKyAgICA8b3B0aW9uIG5hbWU9IkFERElUSU9OQUxfT1BUSU9OU19TVFJJTkciIHZhbHVlPSIiIC8+CisgICAgPG9wdGlvbiBuYW1lPSJNQVhJTVVNX0hFQVBfU0laRSIgdmFsdWU9IjEyOCIgLz4KKyAgPC9jb21wb25lbnQ+CisgIDxjb21wb25lbnQgbmFtZT0iSmF2YWRvY0dlbmVyYXRpb25NYW5hZ2VyIj4KKyAgICA8b3B0aW9uIG5hbWU9Ik9VVFBVVF9ESVJFQ1RPUlkiIC8+CisgICAgPG9wdGlvbiBuYW1lPSJPUFRJT05fU0NPUEUiIHZhbHVlPSJwcm90ZWN0ZWQiIC8+CisgICAgPG9wdGlvbiBuYW1lPSJPUFRJT05fSElFUkFSQ0hZIiB2YWx1ZT0idHJ1ZSIgLz4KKyAgICA8b3B0aW9uIG5hbWU9Ik9QVElPTl9OQVZJR0FUT1IiIHZhbHVlPSJ0cnVlIiAvPgorICAgIDxvcHRpb24gbmFtZT0iT1BUSU9OX0lOREVYIiB2YWx1ZT0idHJ1ZSIgLz4KKyAgICA8b3B0aW9uIG5hbWU9Ik9QVElPTl9TRVBBUkFURV9JTkRFWCIgdmFsdWU9InRydWUiIC8+CisgICAgPG9wdGlvbiBuYW1lPSJPUFRJT05fRE9DVU1FTlRfVEFHX1VTRSIgdmFsdWU9ImZhbHNlIiAvPgorICAgIDxvcHRpb24gbmFtZT0iT1BUSU9OX0RPQ1VNRU5UX1RBR19BVVRIT1IiIHZhbHVlPSJmYWxzZSIgLz4KKyAgICA8b3B0aW9uIG5hbWU9Ik9QVElPTl9ET0NVTUVOVF9UQUdfVkVSU0lPTiIgdmFsdWU9ImZhbHNlIiAvPgorICAgIDxvcHRpb24gbmFtZT0iT1BUSU9OX0RPQ1VNRU5UX1RBR19ERVBSRUNBVEVEIiB2YWx1ZT0idHJ1ZSIgLz4KKyAgICA8b3B0aW9uIG5hbWU9Ik9QVElPTl9ERVBSRUNBVEVEX0xJU1QiIHZhbHVlPSJ0cnVlIiAvPgorICAgIDxvcHRpb24gbmFtZT0iT1RIRVJfT1BUSU9OUyIgdmFsdWU9IiIgLz4KKyAgICA8b3B0aW9uIG5hbWU9IkhFQVBfU0laRSIgLz4KKyAgICA8b3B0aW9uIG5hbWU9IkxPQ0FMRSIgLz4KKyAgICA8b3B0aW9uIG5hbWU9Ik9QRU5fSU5fQlJPV1NFUiIgdmFsdWU9InRydWUiIC8+CisgIDwvY29tcG9uZW50PgorICA8Y29tcG9uZW50IG5hbWU9Ikppa2VzU2V0dGluZ3MiPgorICAgIDxvcHRpb24gbmFtZT0iSklLRVNfUEFUSCIgdmFsdWU9IiIgLz4KKyAgICA8b3B0aW9uIG5hbWU9IkRFQlVHR0lOR19JTkZPIiB2YWx1ZT0idHJ1ZSIgLz4KKyAgICA8b3B0aW9uIG5hbWU9IkRFUFJFQ0FUSU9OIiB2YWx1ZT0idHJ1ZSIgLz4KKyAgICA8b3B0aW9uIG5hbWU9IkdFTkVSQVRFX05PX1dBUk5JTkdTIiB2YWx1ZT0iZmFsc2UiIC8+CisgICAgPG9wdGlvbiBuYW1lPSJJU19FTUFDU19FUlJPUlNfTU9ERSIgdmFsdWU9InRydWUiIC8+CisgICAgPG9wdGlvbiBuYW1lPSJBRERJVElPTkFMX09QVElPTlNfU1RSSU5HIiB2YWx1ZT0iIiAvPgorICA8L2NvbXBvbmVudD4KKyAgPGNvbXBvbmVudCBuYW1lPSJQYWxldHRlMiI+CisgICAgPGdyb3VwIG5hbWU9IlN3aW5nIj4KKyAgICAgIDxpdGVtIGNsYXNzPSJjb20uaW50ZWxsaWoudWlEZXNpZ25lci5IU3BhY2VyIiB0b29sdGlwLXRleHQ9Ikhvcml6b250YWwgU3BhY2VyIiBpY29uPSIvY29tL2ludGVsbGlqL3VpRGVzaWduZXIvaWNvbnMvaHNwYWNlci5wbmciIHJlbW92YWJsZT0iZmFsc2UiIGF1dG8tY3JlYXRlLWJpbmRpbmc9ImZhbHNlIiBjYW4tYXR0YWNoLWxhYmVsPSJmYWxzZSI+CisgICAgICAgIDxkZWZhdWx0LWNvbnN0cmFpbnRzIHZzaXplLXBvbGljeT0iMSIgaHNpemUtcG9saWN5PSI2IiBhbmNob3I9IjAiIGZpbGw9IjEiIC8+CisgICAgICA8L2l0ZW0+CisgICAgICA8aXRlbSBjbGFzcz0iY29tLmludGVsbGlqLnVpRGVzaWduZXIuVlNwYWNlciIgdG9vbHRpcC10ZXh0PSJWZXJ0aWNhbCBTcGFjZXIiIGljb249Ii9jb20vaW50ZWxsaWovdWlEZXNpZ25lci9pY29ucy92c3BhY2VyLnBuZyIgcmVtb3ZhYmxlPSJmYWxzZSIgYXV0by1jcmVhdGUtYmluZGluZz0iZmFsc2UiIGNhbi1hdHRhY2gtbGFiZWw9ImZhbHNlIj4KKyAgICAgICAgPGRlZmF1bHQtY29uc3RyYWludHMgdnNpemUtcG9saWN5PSI2IiBoc2l6ZS1wb2xpY3k9IjEiIGFuY2hvcj0iMCIgZmlsbD0iMiIgLz4KKyAgICAgIDwvaXRlbT4KKyAgICAgIDxpdGVtIGNsYXNzPSJqYXZheC5zd2luZy5KUGFuZWwiIGljb249Ii9jb20vaW50ZWxsaWovdWlEZXNpZ25lci9pY29ucy9wYW5lbC5wbmciIHJlbW92YWJsZT0iZmFsc2UiIGF1dG8tY3JlYXRlLWJpbmRpbmc9ImZhbHNlIiBjYW4tYXR0YWNoLWxhYmVsPSJmYWxzZSI+CisgICAgICAgIDxkZWZhdWx0LWNvbnN0cmFpbnRzIHZzaXplLXBvbGljeT0iMyIgaHNpemUtcG9saWN5PSIzIiBhbmNob3I9IjAiIGZpbGw9IjMiIC8+CisgICAgICA8L2l0ZW0+CisgICAgICA8aXRlbSBjbGFzcz0iamF2YXguc3dpbmcuSlNjcm9sbFBhbmUiIGljb249Ii9jb20vaW50ZWxsaWovdWlEZXNpZ25lci9pY29ucy9zY3JvbGxQYW5lLnBuZyIgcmVtb3ZhYmxlPSJmYWxzZSIgYXV0by1jcmVhdGUtYmluZGluZz0iZmFsc2UiIGNhbi1hdHRhY2gtbGFiZWw9InRydWUiPgorICAgICAgICA8ZGVmYXVsdC1jb25zdHJhaW50cyB2c2l6ZS1wb2xpY3k9IjciIGhzaXplLXBvbGljeT0iNyIgYW5jaG9yPSIwIiBmaWxsPSIzIiAvPgorICAgICAgPC9pdGVtPgorICAgICAgPGl0ZW0gY2xhc3M9ImphdmF4LnN3aW5nLkpCdXR0b24iIGljb249Ii9jb20vaW50ZWxsaWovdWlEZXNpZ25lci9pY29ucy9idXR0b24ucG5nIiByZW1vdmFibGU9ImZhbHNlIiBhdXRvLWNyZWF0ZS1iaW5kaW5nPSJ0cnVlIiBjYW4tYXR0YWNoLWxhYmVsPSJmYWxzZSI+CisgICAgICAgIDxkZWZhdWx0LWNvbnN0cmFpbnRzIHZzaXplLXBvbGljeT0iMCIgaHNpemUtcG9saWN5PSIzIiBhbmNob3I9IjAiIGZpbGw9IjEiIC8+CisgICAgICAgIDxpbml0aWFsLXZhbHVlcz4KKyAgICAgICAgICA8cHJvcGVydHkgbmFtZT0idGV4dCIgdmFsdWU9IkJ1dHRvbiIgLz4KKyAgICAgICAgPC9pbml0aWFsLXZhbHVlcz4KKyAgICAgIDwvaXRlbT4KKyAgICAgIDxpdGVtIGNsYXNzPSJqYXZheC5zd2luZy5KUmFkaW9CdXR0b24iIGljb249Ii9jb20vaW50ZWxsaWovdWlEZXNpZ25lci9pY29ucy9yYWRpb0J1dHRvbi5wbmciIHJlbW92YWJsZT0iZmFsc2UiIGF1dG8tY3JlYXRlLWJpbmRpbmc9InRydWUiIGNhbi1hdHRhY2gtbGFiZWw9ImZhbHNlIj4KKyAgICAgICAgPGRlZmF1bHQtY29uc3RyYWludHMgdnNpemUtcG9saWN5PSIwIiBoc2l6ZS1wb2xpY3k9IjMiIGFuY2hvcj0iOCIgZmlsbD0iMCIgLz4KKyAgICAgICAgPGluaXRpYWwtdmFsdWVzPgorICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJ0ZXh0IiB2YWx1ZT0iUmFkaW9CdXR0b24iIC8+CisgICAgICAgIDwvaW5pdGlhbC12YWx1ZXM+CisgICAgICA8L2l0ZW0+CisgICAgICA8aXRlbSBjbGFzcz0iamF2YXguc3dpbmcuSkNoZWNrQm94IiBpY29uPSIvY29tL2ludGVsbGlqL3VpRGVzaWduZXIvaWNvbnMvY2hlY2tCb3gucG5nIiByZW1vdmFibGU9ImZhbHNlIiBhdXRvLWNyZWF0ZS1iaW5kaW5nPSJ0cnVlIiBjYW4tYXR0YWNoLWxhYmVsPSJmYWxzZSI+CisgICAgICAgIDxkZWZhdWx0LWNvbnN0cmFpbnRzIHZzaXplLXBvbGljeT0iMCIgaHNpemUtcG9saWN5PSIzIiBhbmNob3I9IjgiIGZpbGw9IjAiIC8+CisgICAgICAgIDxpbml0aWFsLXZhbHVlcz4KKyAgICAgICAgICA8cHJvcGVydHkgbmFtZT0idGV4dCIgdmFsdWU9IkNoZWNrQm94IiAvPgorICAgICAgICA8L2luaXRpYWwtdmFsdWVzPgorICAgICAgPC9pdGVtPgorICAgICAgPGl0ZW0gY2xhc3M9ImphdmF4LnN3aW5nLkpMYWJlbCIgaWNvbj0iL2NvbS9pbnRlbGxpai91aURlc2lnbmVyL2ljb25zL2xhYmVsLnBuZyIgcmVtb3ZhYmxlPSJmYWxzZSIgYXV0by1jcmVhdGUtYmluZGluZz0iZmFsc2UiIGNhbi1hdHRhY2gtbGFiZWw9ImZhbHNlIj4KKyAgICAgICAgPGRlZmF1bHQtY29uc3RyYWludHMgdnNpemUtcG9saWN5PSIwIiBoc2l6ZS1wb2xpY3k9IjAiIGFuY2hvcj0iOCIgZmlsbD0iMCIgLz4KKyAgICAgICAgPGluaXRpYWwtdmFsdWVzPgorICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJ0ZXh0IiB2YWx1ZT0iTGFiZWwiIC8+CisgICAgICAgIDwvaW5pdGlhbC12YWx1ZXM+CisgICAgICA8L2l0ZW0+CisgICAgICA8aXRlbSBjbGFzcz0iamF2YXguc3dpbmcuSlRleHRGaWVsZCIgaWNvbj0iL2NvbS9pbnRlbGxpai91aURlc2lnbmVyL2ljb25zL3RleHRGaWVsZC5wbmciIHJlbW92YWJsZT0iZmFsc2UiIGF1dG8tY3JlYXRlLWJpbmRpbmc9InRydWUiIGNhbi1hdHRhY2gtbGFiZWw9InRydWUiPgorICAgICAgICA8ZGVmYXVsdC1jb25zdHJhaW50cyB2c2l6ZS1wb2xpY3k9IjAiIGhzaXplLXBvbGljeT0iNiIgYW5jaG9yPSI4IiBmaWxsPSIxIj4KKyAgICAgICAgICA8cHJlZmVycmVkLXNpemUgd2lkdGg9IjE1MCIgaGVpZ2h0PSItMSIgLz4KKyAgICAgICAgPC9kZWZhdWx0LWNvbnN0cmFpbnRzPgorICAgICAgPC9pdGVtPgorICAgICAgPGl0ZW0gY2xhc3M9ImphdmF4LnN3aW5nLkpQYXNzd29yZEZpZWxkIiBpY29uPSIvY29tL2ludGVsbGlqL3VpRGVzaWduZXIvaWNvbnMvcGFzc3dvcmRGaWVsZC5wbmciIHJlbW92YWJsZT0iZmFsc2UiIGF1dG8tY3JlYXRlLWJpbmRpbmc9InRydWUiIGNhbi1hdHRhY2gtbGFiZWw9InRydWUiPgorICAgICAgICA8ZGVmYXVsdC1jb25zdHJhaW50cyB2c2l6ZS1wb2xpY3k9IjAiIGhzaXplLXBvbGljeT0iNiIgYW5jaG9yPSI4IiBmaWxsPSIxIj4KKyAgICAgICAgICA8cHJlZmVycmVkLXNpemUgd2lkdGg9IjE1MCIgaGVpZ2h0PSItMSIgLz4KKyAgICAgICAgPC9kZWZhdWx0LWNvbnN0cmFpbnRzPgorICAgICAgPC9pdGVtPgorICAgICAgPGl0ZW0gY2xhc3M9ImphdmF4LnN3aW5nLkpGb3JtYXR0ZWRUZXh0RmllbGQiIGljb249Ii9jb20vaW50ZWxsaWovdWlEZXNpZ25lci9pY29ucy9mb3JtYXR0ZWRUZXh0RmllbGQucG5nIiByZW1vdmFibGU9ImZhbHNlIiBhdXRvLWNyZWF0ZS1iaW5kaW5nPSJ0cnVlIiBjYW4tYXR0YWNoLWxhYmVsPSJ0cnVlIj4KKyAgICAgICAgPGRlZmF1bHQtY29uc3RyYWludHMgdnNpemUtcG9saWN5PSIwIiBoc2l6ZS1wb2xpY3k9IjYiIGFuY2hvcj0iOCIgZmlsbD0iMSI+CisgICAgICAgICAgPHByZWZlcnJlZC1zaXplIHdpZHRoPSIxNTAiIGhlaWdodD0iLTEiIC8+CisgICAgICAgIDwvZGVmYXVsdC1jb25zdHJhaW50cz4KKyAgICAgIDwvaXRlbT4KKyAgICAgIDxpdGVtIGNsYXNzPSJqYXZheC5zd2luZy5KVGV4dEFyZWEiIGljb249Ii9jb20vaW50ZWxsaWovdWlEZXNpZ25lci9pY29ucy90ZXh0QXJlYS5wbmciIHJlbW92YWJsZT0iZmFsc2UiIGF1dG8tY3JlYXRlLWJpbmRpbmc9InRydWUiIGNhbi1hdHRhY2gtbGFiZWw9InRydWUiPgorICAgICAgICA8ZGVmYXVsdC1jb25zdHJhaW50cyB2c2l6ZS1wb2xpY3k9IjYiIGhzaXplLXBvbGljeT0iNiIgYW5jaG9yPSIwIiBmaWxsPSIzIj4KKyAgICAgICAgICA8cHJlZmVycmVkLXNpemUgd2lkdGg9IjE1MCIgaGVpZ2h0PSI1MCIgLz4KKyAgICAgICAgPC9kZWZhdWx0LWNvbnN0cmFpbnRzPgorICAgICAgPC9pdGVtPgorICAgICAgPGl0ZW0gY2xhc3M9ImphdmF4LnN3aW5nLkpUZXh0UGFuZSIgaWNvbj0iL2NvbS9pbnRlbGxpai91aURlc2lnbmVyL2ljb25zL3RleHRQYW5lLnBuZyIgcmVtb3ZhYmxlPSJmYWxzZSIgYXV0by1jcmVhdGUtYmluZGluZz0idHJ1ZSIgY2FuLWF0dGFjaC1sYWJlbD0idHJ1ZSI+CisgICAgICAgIDxkZWZhdWx0LWNvbnN0cmFpbnRzIHZzaXplLXBvbGljeT0iNiIgaHNpemUtcG9saWN5PSI2IiBhbmNob3I9IjAiIGZpbGw9IjMiPgorICAgICAgICAgIDxwcmVmZXJyZWQtc2l6ZSB3aWR0aD0iMTUwIiBoZWlnaHQ9IjUwIiAvPgorICAgICAgICA8L2RlZmF1bHQtY29uc3RyYWludHM+CisgICAgICA8L2l0ZW0+CisgICAgICA8aXRlbSBjbGFzcz0iamF2YXguc3dpbmcuSkVkaXRvclBhbmUiIGljb249Ii9jb20vaW50ZWxsaWovdWlEZXNpZ25lci9pY29ucy9lZGl0b3JQYW5lLnBuZyIgcmVtb3ZhYmxlPSJmYWxzZSIgYXV0by1jcmVhdGUtYmluZGluZz0idHJ1ZSIgY2FuLWF0dGFjaC1sYWJlbD0idHJ1ZSI+CisgICAgICAgIDxkZWZhdWx0LWNvbnN0cmFpbnRzIHZzaXplLXBvbGljeT0iNiIgaHNpemUtcG9saWN5PSI2IiBhbmNob3I9IjAiIGZpbGw9IjMiPgorICAgICAgICAgIDxwcmVmZXJyZWQtc2l6ZSB3aWR0aD0iMTUwIiBoZWlnaHQ9IjUwIiAvPgorICAgICAgICA8L2RlZmF1bHQtY29uc3RyYWludHM+CisgICAgICA8L2l0ZW0+CisgICAgICA8aXRlbSBjbGFzcz0iamF2YXguc3dpbmcuSkNvbWJvQm94IiBpY29uPSIvY29tL2ludGVsbGlqL3VpRGVzaWduZXIvaWNvbnMvY29tYm9Cb3gucG5nIiByZW1vdmFibGU9ImZhbHNlIiBhdXRvLWNyZWF0ZS1iaW5kaW5nPSJ0cnVlIiBjYW4tYXR0YWNoLWxhYmVsPSJ0cnVlIj4KKyAgICAgICAgPGRlZmF1bHQtY29uc3RyYWludHMgdnNpemUtcG9saWN5PSIwIiBoc2l6ZS1wb2xpY3k9IjIiIGFuY2hvcj0iOCIgZmlsbD0iMSIgLz4KKyAgICAgIDwvaXRlbT4KKyAgICAgIDxpdGVtIGNsYXNzPSJqYXZheC5zd2luZy5KVGFibGUiIGljb249Ii9jb20vaW50ZWxsaWovdWlEZXNpZ25lci9pY29ucy90YWJsZS5wbmciIHJlbW92YWJsZT0iZmFsc2UiIGF1dG8tY3JlYXRlLWJpbmRpbmc9InRydWUiIGNhbi1hdHRhY2gtbGFiZWw9ImZhbHNlIj4KKyAgICAgICAgPGRlZmF1bHQtY29uc3RyYWludHMgdnNpemUtcG9saWN5PSI2IiBoc2l6ZS1wb2xpY3k9IjYiIGFuY2hvcj0iMCIgZmlsbD0iMyI+CisgICAgICAgICAgPHByZWZlcnJlZC1zaXplIHdpZHRoPSIxNTAiIGhlaWdodD0iNTAiIC8+CisgICAgICAgIDwvZGVmYXVsdC1jb25zdHJhaW50cz4KKyAgICAgIDwvaXRlbT4KKyAgICAgIDxpdGVtIGNsYXNzPSJqYXZheC5zd2luZy5KTGlzdCIgaWNvbj0iL2NvbS9pbnRlbGxpai91aURlc2lnbmVyL2ljb25zL2xpc3QucG5nIiByZW1vdmFibGU9ImZhbHNlIiBhdXRvLWNyZWF0ZS1iaW5kaW5nPSJ0cnVlIiBjYW4tYXR0YWNoLWxhYmVsPSJmYWxzZSI+CisgICAgICAgIDxkZWZhdWx0LWNvbnN0cmFpbnRzIHZzaXplLXBvbGljeT0iNiIgaHNpemUtcG9saWN5PSIyIiBhbmNob3I9IjAiIGZpbGw9IjMiPgorICAgICAgICAgIDxwcmVmZXJyZWQtc2l6ZSB3aWR0aD0iMTUwIiBoZWlnaHQ9IjUwIiAvPgorICAgICAgICA8L2RlZmF1bHQtY29uc3RyYWludHM+CisgICAgICA8L2l0ZW0+CisgICAgICA8aXRlbSBjbGFzcz0iamF2YXguc3dpbmcuSlRyZWUiIGljb249Ii9jb20vaW50ZWxsaWovdWlEZXNpZ25lci9pY29ucy90cmVlLnBuZyIgcmVtb3ZhYmxlPSJmYWxzZSIgYXV0by1jcmVhdGUtYmluZGluZz0idHJ1ZSIgY2FuLWF0dGFjaC1sYWJlbD0iZmFsc2UiPgorICAgICAgICA8ZGVmYXVsdC1jb25zdHJhaW50cyB2c2l6ZS1wb2xpY3k9IjYiIGhzaXplLXBvbGljeT0iNiIgYW5jaG9yPSIwIiBmaWxsPSIzIj4KKyAgICAgICAgICA8cHJlZmVycmVkLXNpemUgd2lkdGg9IjE1MCIgaGVpZ2h0PSI1MCIgLz4KKyAgICAgICAgPC9kZWZhdWx0LWNvbnN0cmFpbnRzPgorICAgICAgPC9pdGVtPgorICAgICAgPGl0ZW0gY2xhc3M9ImphdmF4LnN3aW5nLkpUYWJiZWRQYW5lIiBpY29uPSIvY29tL2ludGVsbGlqL3VpRGVzaWduZXIvaWNvbnMvdGFiYmVkUGFuZS5wbmciIHJlbW92YWJsZT0iZmFsc2UiIGF1dG8tY3JlYXRlLWJpbmRpbmc9InRydWUiIGNhbi1hdHRhY2gtbGFiZWw9ImZhbHNlIj4KKyAgICAgICAgPGRlZmF1bHQtY29uc3RyYWludHMgdnNpemUtcG9saWN5PSIzIiBoc2l6ZS1wb2xpY3k9IjMiIGFuY2hvcj0iMCIgZmlsbD0iMyI+CisgICAgICAgICAgPHByZWZlcnJlZC1zaXplIHdpZHRoPSIyMDAiIGhlaWdodD0iMjAwIiAvPgorICAgICAgICA8L2RlZmF1bHQtY29uc3RyYWludHM+CisgICAgICA8L2l0ZW0+CisgICAgICA8aXRlbSBjbGFzcz0iamF2YXguc3dpbmcuSlNwbGl0UGFuZSIgaWNvbj0iL2NvbS9pbnRlbGxpai91aURlc2lnbmVyL2ljb25zL3NwbGl0UGFuZS5wbmciIHJlbW92YWJsZT0iZmFsc2UiIGF1dG8tY3JlYXRlLWJpbmRpbmc9ImZhbHNlIiBjYW4tYXR0YWNoLWxhYmVsPSJmYWxzZSI+CisgICAgICAgIDxkZWZhdWx0LWNvbnN0cmFpbnRzIHZzaXplLXBvbGljeT0iMyIgaHNpemUtcG9saWN5PSIzIiBhbmNob3I9IjAiIGZpbGw9IjMiPgorICAgICAgICAgIDxwcmVmZXJyZWQtc2l6ZSB3aWR0aD0iMjAwIiBoZWlnaHQ9IjIwMCIgLz4KKyAgICAgICAgPC9kZWZhdWx0LWNvbnN0cmFpbnRzPgorICAgICAgPC9pdGVtPgorICAgICAgPGl0ZW0gY2xhc3M9ImphdmF4LnN3aW5nLkpTcGlubmVyIiBpY29uPSIvY29tL2ludGVsbGlqL3VpRGVzaWduZXIvaWNvbnMvc3Bpbm5lci5wbmciIHJlbW92YWJsZT0iZmFsc2UiIGF1dG8tY3JlYXRlLWJpbmRpbmc9InRydWUiIGNhbi1hdHRhY2gtbGFiZWw9InRydWUiPgorICAgICAgICA8ZGVmYXVsdC1jb25zdHJhaW50cyB2c2l6ZS1wb2xpY3k9IjAiIGhzaXplLXBvbGljeT0iNiIgYW5jaG9yPSI4IiBmaWxsPSIxIiAvPgorICAgICAgPC9pdGVtPgorICAgICAgPGl0ZW0gY2xhc3M9ImphdmF4LnN3aW5nLkpTbGlkZXIiIGljb249Ii9jb20vaW50ZWxsaWovdWlEZXNpZ25lci9pY29ucy9zbGlkZXIucG5nIiByZW1vdmFibGU9ImZhbHNlIiBhdXRvLWNyZWF0ZS1iaW5kaW5nPSJ0cnVlIiBjYW4tYXR0YWNoLWxhYmVsPSJmYWxzZSI+CisgICAgICAgIDxkZWZhdWx0LWNvbnN0cmFpbnRzIHZzaXplLXBvbGljeT0iMCIgaHNpemUtcG9saWN5PSI2IiBhbmNob3I9IjgiIGZpbGw9IjEiIC8+CisgICAgICA8L2l0ZW0+CisgICAgICA8aXRlbSBjbGFzcz0iamF2YXguc3dpbmcuSlNlcGFyYXRvciIgaWNvbj0iL2NvbS9pbnRlbGxpai91aURlc2lnbmVyL2ljb25zL3NlcGFyYXRvci5wbmciIHJlbW92YWJsZT0iZmFsc2UiIGF1dG8tY3JlYXRlLWJpbmRpbmc9ImZhbHNlIiBjYW4tYXR0YWNoLWxhYmVsPSJmYWxzZSI+CisgICAgICAgIDxkZWZhdWx0LWNvbnN0cmFpbnRzIHZzaXplLXBvbGljeT0iNiIgaHNpemUtcG9saWN5PSI2IiBhbmNob3I9IjAiIGZpbGw9IjMiIC8+CisgICAgICA8L2l0ZW0+CisgICAgICA8aXRlbSBjbGFzcz0iamF2YXguc3dpbmcuSlByb2dyZXNzQmFyIiBpY29uPSIvY29tL2ludGVsbGlqL3VpRGVzaWduZXIvaWNvbnMvcHJvZ3Jlc3NiYXIucG5nIiByZW1vdmFibGU9ImZhbHNlIiBhdXRvLWNyZWF0ZS1iaW5kaW5nPSJ0cnVlIiBjYW4tYXR0YWNoLWxhYmVsPSJmYWxzZSI+CisgICAgICAgIDxkZWZhdWx0LWNvbnN0cmFpbnRzIHZzaXplLXBvbGljeT0iMCIgaHNpemUtcG9saWN5PSI2IiBhbmNob3I9IjAiIGZpbGw9IjEiIC8+CisgICAgICA8L2l0ZW0+CisgICAgICA8aXRlbSBjbGFzcz0iamF2YXguc3dpbmcuSlRvb2xCYXIiIGljb249Ii9jb20vaW50ZWxsaWovdWlEZXNpZ25lci9pY29ucy90b29sYmFyLnBuZyIgcmVtb3ZhYmxlPSJmYWxzZSIgYXV0by1jcmVhdGUtYmluZGluZz0iZmFsc2UiIGNhbi1hdHRhY2gtbGFiZWw9ImZhbHNlIj4KKyAgICAgICAgPGRlZmF1bHQtY29uc3RyYWludHMgdnNpemUtcG9saWN5PSIwIiBoc2l6ZS1wb2xpY3k9IjYiIGFuY2hvcj0iMCIgZmlsbD0iMSI+CisgICAgICAgICAgPHByZWZlcnJlZC1zaXplIHdpZHRoPSItMSIgaGVpZ2h0PSIyMCIgLz4KKyAgICAgICAgPC9kZWZhdWx0LWNvbnN0cmFpbnRzPgorICAgICAgPC9pdGVtPgorICAgICAgPGl0ZW0gY2xhc3M9ImphdmF4LnN3aW5nLkpUb29sQmFyJFNlcGFyYXRvciIgaWNvbj0iL2NvbS9pbnRlbGxpai91aURlc2lnbmVyL2ljb25zL3Rvb2xiYXJTZXBhcmF0b3IucG5nIiByZW1vdmFibGU9ImZhbHNlIiBhdXRvLWNyZWF0ZS1iaW5kaW5nPSJmYWxzZSIgY2FuLWF0dGFjaC1sYWJlbD0iZmFsc2UiPgorICAgICAgICA8ZGVmYXVsdC1jb25zdHJhaW50cyB2c2l6ZS1wb2xpY3k9IjAiIGhzaXplLXBvbGljeT0iMCIgYW5jaG9yPSIwIiBmaWxsPSIxIiAvPgorICAgICAgPC9pdGVtPgorICAgICAgPGl0ZW0gY2xhc3M9ImphdmF4LnN3aW5nLkpTY3JvbGxCYXIiIGljb249Ii9jb20vaW50ZWxsaWovdWlEZXNpZ25lci9pY29ucy9zY3JvbGxiYXIucG5nIiByZW1vdmFibGU9ImZhbHNlIiBhdXRvLWNyZWF0ZS1iaW5kaW5nPSJ0cnVlIiBjYW4tYXR0YWNoLWxhYmVsPSJmYWxzZSI+CisgICAgICAgIDxkZWZhdWx0LWNvbnN0cmFpbnRzIHZzaXplLXBvbGljeT0iNiIgaHNpemUtcG9saWN5PSIwIiBhbmNob3I9IjAiIGZpbGw9IjIiIC8+CisgICAgICA8L2l0ZW0+CisgICAgPC9ncm91cD4KKyAgPC9jb21wb25lbnQ+CisgIDxjb21wb25lbnQgbmFtZT0iUHJvamVjdERldGFpbHMiPgorICAgIDxvcHRpb24gbmFtZT0icHJvamVjdE5hbWUiIHZhbHVlPSJzZXZlcmFsSW5zdGFuY2VzIiAvPgorICA8L2NvbXBvbmVudD4KKyAgPGNvbXBvbmVudCBuYW1lPSJQcm9qZWN0RmlsZVZlcnNpb24iIGNvbnZlcnRlZD0idHJ1ZSI+CisgICAgPGNvbnZlcnRlciBpZD0iamF2YWVlLW1vZHVsZXMiIC8+CisgICAgPGNvbnZlcnRlciBpZD0icm9yLW1vZHVsZXMiIC8+CisgICAgPGNvbnZlcnRlciBpZD0iU2VsZW5hUnVuQ29uZlRvRGlhbmEiIC8+CisgIDwvY29tcG9uZW50PgorICA8Y29tcG9uZW50IG5hbWU9IlByb2plY3RNb2R1bGVNYW5hZ2VyIj4KKyAgICA8bW9kdWxlcz4KKyAgICAgIDxtb2R1bGUgZmlsZXVybD0iZmlsZTovLyRQUk9KRUNUX0RJUiQvc2V2ZXJhbEluc3RhbmNlcy5pbWwiIGZpbGVwYXRoPSIkUFJPSkVDVF9ESVIkL3NldmVyYWxJbnN0YW5jZXMuaW1sIiAvPgorICAgIDwvbW9kdWxlcz4KKyAgPC9jb21wb25lbnQ+CisgIDxjb21wb25lbnQgbmFtZT0iUHJvamVjdFJvb3RNYW5hZ2VyIiB2ZXJzaW9uPSIyIiBsYW5ndWFnZUxldmVsPSJKREtfMV81IiBhc3NlcnQta2V5d29yZD0idHJ1ZSIgamRrLTE1PSJ0cnVlIiBwcm9qZWN0LWpkay1uYW1lPSIxLjYiIHByb2plY3QtamRrLXR5cGU9IkphdmFTREsiPgorICAgIDxvdXRwdXQgdXJsPSJmaWxlOi8vJFBST0pFQ1RfRElSJC9vdXQiIC8+CisgIDwvY29tcG9uZW50PgorICA8Y29tcG9uZW50IG5hbWU9IlJlc291cmNlTWFuYWdlckNvbnRhaW5lciI+CisgICAgPG9wdGlvbiBuYW1lPSJteVJlc291cmNlQnVuZGxlcyI+CisgICAgICA8dmFsdWU+CisgICAgICAgIDxsaXN0IHNpemU9IjAiIC8+CisgICAgICA8L3ZhbHVlPgorICAgIDwvb3B0aW9uPgorICA8L2NvbXBvbmVudD4KKyAgPGNvbXBvbmVudCBuYW1lPSJSbWljU2V0dGluZ3MiPgorICAgIDxvcHRpb24gbmFtZT0iSVNfRUFOQUJMRUQiIHZhbHVlPSJmYWxzZSIgLz4KKyAgICA8b3B0aW9uIG5hbWU9IkRFQlVHR0lOR19JTkZPIiB2YWx1ZT0idHJ1ZSIgLz4KKyAgICA8b3B0aW9uIG5hbWU9IkdFTkVSQVRFX05PX1dBUk5JTkdTIiB2YWx1ZT0iZmFsc2UiIC8+CisgICAgPG9wdGlvbiBuYW1lPSJHRU5FUkFURV9JSU9QX1NUVUJTIiB2YWx1ZT0iZmFsc2UiIC8+CisgICAgPG9wdGlvbiBuYW1lPSJBRERJVElPTkFMX09QVElPTlNfU1RSSU5HIiB2YWx1ZT0iIiAvPgorICA8L2NvbXBvbmVudD4KKyAgPGNvbXBvbmVudCBuYW1lPSJXZWJTZXJ2aWNlc1BsdWdpbiIgYWRkUmVxdWlyZWRMaWJyYXJpZXM9InRydWUiIC8+CisgIDxVc2VkUGF0aE1hY3Jvcz4KKyAgICA8bWFjcm8gbmFtZT0iQ1ZTX0JBU0UiIC8+CisgIDwvVXNlZFBhdGhNYWNyb3M+Cis8L3Byb2plY3Q+CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nL3NhbWVDbGFzc2VzSW5Tb3VyY2VBbmRMaWIvc2V2ZXJhbEluc3RhbmNlcy5pd3MgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9zYW1lQ2xhc3Nlc0luU291cmNlQW5kTGliL3NldmVyYWxJbnN0YW5jZXMuaXdzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI1MThiODkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9zYW1lQ2xhc3Nlc0luU291cmNlQW5kTGliL3NldmVyYWxJbnN0YW5jZXMuaXdzCkBAIC0wLDAgKzEsNTI5IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPHByb2plY3QgcmVsYXRpdmVQYXRocz0iZmFsc2UiIHZlcnNpb249IjQiPgorICA8Y29tcG9uZW50IG5hbWU9IkNDYXNlQ29uZmlnIj4KKyAgICA8b3B0aW9uIG5hbWU9ImNoZWNrb3V0UmVzZXJ2ZWQiIHZhbHVlPSJmYWxzZSIgLz4KKyAgICA8b3B0aW9uIG5hbWU9Im1hcmtFeHRlcm5hbENoYW5nZUFzVXBUb0RhdGUiIHZhbHVlPSJ0cnVlIiAvPgorICAgIDxvcHRpb24gbmFtZT0iY2hlY2tJblVzZUhpamFjayIgdmFsdWU9InRydWUiIC8+CisgICAgPG9wdGlvbiBuYW1lPSJ1c2VVY21Nb2RlbCIgdmFsdWU9InRydWUiIC8+CisgICAgPG9wdGlvbiBuYW1lPSJpc09mZmxpbmUiIHZhbHVlPSJmYWxzZSIgLz4KKyAgICA8b3B0aW9uIG5hbWU9InN5bmNoT3V0c2lkZSIgdmFsdWU9ImZhbHNlIiAvPgorICAgIDxvcHRpb24gbmFtZT0iaXNIaXN0b3J5UmVzdGljdGVkIiB2YWx1ZT0idHJ1ZSIgLz4KKyAgICA8b3B0aW9uIG5hbWU9InVzZUlkZW50aWNhbFN3aXRjaCIgdmFsdWU9InRydWUiIC8+CisgICAgPG9wdGlvbiBuYW1lPSJzeW5jaEFjdGl2aXRpZXNPblJlZnJlc2giIHZhbHVlPSJ0cnVlIiAvPgorICAgIDxvcHRpb24gbmFtZT0ibGFzdFNjciIgdmFsdWU9IiIgLz4KKyAgICA8b3B0aW9uIG5hbWU9InNjclRleHRGaWxlTmFtZSIgdmFsdWU9IiIgLz4KKyAgICA8b3B0aW9uIG5hbWU9Imhpc3RvcnlSZXZpc2lvbnNOdW1iZXIiIHZhbHVlPSI0IiAvPgorICA8L2NvbXBvbmVudD4KKyAgPGNvbXBvbmVudCBuYW1lPSJDaGFuZ2VMaXN0TWFuYWdlciI+CisgICAgPGxpc3QgZGVmYXVsdD0idHJ1ZSIgcmVhZG9ubHk9InRydWUiIG5hbWU9IkRlZmF1bHQiIGNvbW1lbnQ9IiIgLz4KKyAgICA8aWdub3JlZCBwYXRoPSJzZXZlcmFsSW5zdGFuY2VzLml3cyIgLz4KKyAgICA8aWdub3JlZCBwYXRoPSIuaWRlYS93b3Jrc3BhY2UueG1sIiAvPgorICA8L2NvbXBvbmVudD4KKyAgPGNvbXBvbmVudCBuYW1lPSJDaGFuZ2VzVmlld01hbmFnZXIiIGZsYXR0ZW5lZF92aWV3PSJ0cnVlIiBzaG93X2lnbm9yZWQ9ImZhbHNlIiAvPgorICA8Y29tcG9uZW50IG5hbWU9IkNvbW1hbmRlciI+CisgICAgPGxlZnRQYW5lbCAvPgorICAgIDxyaWdodFBhbmVsIC8+CisgICAgPHNwbGl0dGVyIHByb3BvcnRpb249IjAuNSIgLz4KKyAgPC9jb21wb25lbnQ+CisgIDxjb21wb25lbnQgbmFtZT0iQ3JlYXRlUGF0Y2hDb21taXRFeGVjdXRvciI+CisgICAgPG9wdGlvbiBuYW1lPSJQQVRDSF9QQVRIIiB2YWx1ZT0iIiAvPgorICAgIDxvcHRpb24gbmFtZT0iUkVWRVJTRV9QQVRDSCIgdmFsdWU9ImZhbHNlIiAvPgorICA8L2NvbXBvbmVudD4KKyAgPGNvbXBvbmVudCBuYW1lPSJEYWVtb25Db2RlQW5hbHl6ZXIiPgorICAgIDxkaXNhYmxlX2hpbnRzIC8+CisgIDwvY29tcG9uZW50PgorICA8Y29tcG9uZW50IG5hbWU9IkRlYnVnZ2VyTWFuYWdlciI+CisgICAgPGJyZWFrcG9pbnRfYW55PgorICAgICAgPGJyZWFrcG9pbnQ+CisgICAgICAgIDxvcHRpb24gbmFtZT0iTk9USUZZX0NBVUdIVCIgdmFsdWU9InRydWUiIC8+CisgICAgICAgIDxvcHRpb24gbmFtZT0iTk9USUZZX1VOQ0FVR0hUIiB2YWx1ZT0idHJ1ZSIgLz4KKyAgICAgICAgPG9wdGlvbiBuYW1lPSJFTkFCTEVEIiB2YWx1ZT0iZmFsc2UiIC8+CisgICAgICAgIDxvcHRpb24gbmFtZT0iTE9HX0VOQUJMRUQiIHZhbHVlPSJmYWxzZSIgLz4KKyAgICAgICAgPG9wdGlvbiBuYW1lPSJMT0dfRVhQUkVTU0lPTl9FTkFCTEVEIiB2YWx1ZT0iZmFsc2UiIC8+CisgICAgICAgIDxvcHRpb24gbmFtZT0iU1VTUEVORF9QT0xJQ1kiIHZhbHVlPSJTdXNwZW5kQWxsIiAvPgorICAgICAgICA8b3B0aW9uIG5hbWU9IkNPVU5UX0ZJTFRFUl9FTkFCTEVEIiB2YWx1ZT0iZmFsc2UiIC8+CisgICAgICAgIDxvcHRpb24gbmFtZT0iQ09VTlRfRklMVEVSIiB2YWx1ZT0iMCIgLz4KKyAgICAgICAgPG9wdGlvbiBuYW1lPSJDT05ESVRJT05fRU5BQkxFRCIgdmFsdWU9ImZhbHNlIiAvPgorICAgICAgICA8b3B0aW9uIG5hbWU9IkNMQVNTX0ZJTFRFUlNfRU5BQkxFRCIgdmFsdWU9ImZhbHNlIiAvPgorICAgICAgICA8b3B0aW9uIG5hbWU9IklOU1RBTkNFX0ZJTFRFUlNfRU5BQkxFRCIgdmFsdWU9ImZhbHNlIiAvPgorICAgICAgICA8b3B0aW9uIG5hbWU9IkNPTkRJVElPTiIgdmFsdWU9IiIgLz4KKyAgICAgICAgPG9wdGlvbiBuYW1lPSJMT0dfTUVTU0FHRSIgdmFsdWU9IiIgLz4KKyAgICAgIDwvYnJlYWtwb2ludD4KKyAgICAgIDxicmVha3BvaW50PgorICAgICAgICA8b3B0aW9uIG5hbWU9Ik5PVElGWV9DQVVHSFQiIHZhbHVlPSJ0cnVlIiAvPgorICAgICAgICA8b3B0aW9uIG5hbWU9Ik5PVElGWV9VTkNBVUdIVCIgdmFsdWU9InRydWUiIC8+CisgICAgICAgIDxvcHRpb24gbmFtZT0iRU5BQkxFRCIgdmFsdWU9ImZhbHNlIiAvPgorICAgICAgICA8b3B0aW9uIG5hbWU9IkxPR19FTkFCTEVEIiB2YWx1ZT0iZmFsc2UiIC8+CisgICAgICAgIDxvcHRpb24gbmFtZT0iTE9HX0VYUFJFU1NJT05fRU5BQkxFRCIgdmFsdWU9ImZhbHNlIiAvPgorICAgICAgICA8b3B0aW9uIG5hbWU9IlNVU1BFTkRfUE9MSUNZIiB2YWx1ZT0iU3VzcGVuZEFsbCIgLz4KKyAgICAgICAgPG9wdGlvbiBuYW1lPSJDT1VOVF9GSUxURVJfRU5BQkxFRCIgdmFsdWU9ImZhbHNlIiAvPgorICAgICAgICA8b3B0aW9uIG5hbWU9IkNPVU5UX0ZJTFRFUiIgdmFsdWU9IjAiIC8+CisgICAgICAgIDxvcHRpb24gbmFtZT0iQ09ORElUSU9OX0VOQUJMRUQiIHZhbHVlPSJmYWxzZSIgLz4KKyAgICAgICAgPG9wdGlvbiBuYW1lPSJDTEFTU19GSUxURVJTX0VOQUJMRUQiIHZhbHVlPSJmYWxzZSIgLz4KKyAgICAgICAgPG9wdGlvbiBuYW1lPSJJTlNUQU5DRV9GSUxURVJTX0VOQUJMRUQiIHZhbHVlPSJmYWxzZSIgLz4KKyAgICAgICAgPG9wdGlvbiBuYW1lPSJDT05ESVRJT04iIHZhbHVlPSIiIC8+CisgICAgICAgIDxvcHRpb24gbmFtZT0iTE9HX01FU1NBR0UiIHZhbHVlPSIiIC8+CisgICAgICA8L2JyZWFrcG9pbnQ+CisgICAgPC9icmVha3BvaW50X2FueT4KKyAgICA8YnJlYWtwb2ludF9ydWxlcyAvPgorICAgIDx1aV9wcm9wZXJ0aWVzIC8+CisgIDwvY29tcG9uZW50PgorICA8Y29tcG9uZW50IG5hbWU9IkZhdm9yaXRlc01hbmFnZXIiPgorICAgIDxmYXZvcml0ZXNfbGlzdCBuYW1lPSJzZXZlcmFsSW5zdGFuY2VzIiAvPgorICA8L2NvbXBvbmVudD4KKyAgPGNvbXBvbmVudCBuYW1lPSJGaWxlRWRpdG9yTWFuYWdlciI+CisgICAgPGxlYWY+CisgICAgICA8ZmlsZSBsZWFmLWZpbGUtbmFtZT0iU29tZUNsYXNzLmphdmEiIHBpbm5lZD0iZmFsc2UiIGN1cnJlbnQ9InRydWUiIGN1cnJlbnQtaW4tdGFiPSJ0cnVlIj4KKyAgICAgICAgPGVudHJ5IGZpbGU9ImZpbGU6Ly8kUFJPSkVDVF9ESVIkL3NyYy9wcHAvU29tZUNsYXNzLmphdmEiPgorICAgICAgICAgIDxwcm92aWRlciBzZWxlY3RlZD0idHJ1ZSIgZWRpdG9yLXR5cGUtaWQ9InRleHQtZWRpdG9yIj4KKyAgICAgICAgICAgIDxzdGF0ZSBsaW5lPSIzIiBjb2x1bW49IjkiIHNlbGVjdGlvbi1zdGFydD0iNDgiIHNlbGVjdGlvbi1lbmQ9IjQ4IiB2ZXJ0aWNhbC1zY3JvbGwtcHJvcG9ydGlvbj0iMC4wNTc4ODg3NiI+CisgICAgICAgICAgICAgIDxmb2xkaW5nIC8+CisgICAgICAgICAgICA8L3N0YXRlPgorICAgICAgICAgIDwvcHJvdmlkZXI+CisgICAgICAgIDwvZW50cnk+CisgICAgICA8L2ZpbGU+CisgICAgICA8ZmlsZSBsZWFmLWZpbGUtbmFtZT0iQmFkQ2xhc3MuamF2YSIgcGlubmVkPSJmYWxzZSIgY3VycmVudD0iZmFsc2UiIGN1cnJlbnQtaW4tdGFiPSJmYWxzZSI+CisgICAgICAgIDxlbnRyeSBmaWxlPSJmaWxlOi8vJFBST0pFQ1RfRElSJC9zcmMvcHBwL0JhZENsYXNzLmphdmEiPgorICAgICAgICAgIDxwcm92aWRlciBzZWxlY3RlZD0idHJ1ZSIgZWRpdG9yLXR5cGUtaWQ9InRleHQtZWRpdG9yIj4KKyAgICAgICAgICAgIDxzdGF0ZSBsaW5lPSI5IiBjb2x1bW49IjEzIiBzZWxlY3Rpb24tc3RhcnQ9IjE4NSIgc2VsZWN0aW9uLWVuZD0iMTg1IiB2ZXJ0aWNhbC1zY3JvbGwtcHJvcG9ydGlvbj0iMC4wIj4KKyAgICAgICAgICAgICAgPGZvbGRpbmcgLz4KKyAgICAgICAgICAgIDwvc3RhdGU+CisgICAgICAgICAgPC9wcm92aWRlcj4KKyAgICAgICAgPC9lbnRyeT4KKyAgICAgIDwvZmlsZT4KKyAgICAgIDxmaWxlIGxlYWYtZmlsZS1uYW1lPSJCYWRDbGFzcy5qYXZhIiBwaW5uZWQ9ImZhbHNlIiBjdXJyZW50PSJmYWxzZSIgY3VycmVudC1pbi10YWI9ImZhbHNlIj4KKyAgICAgICAgPGVudHJ5IGZpbGU9ImphcjovLyRQUk9KRUNUX0RJUiQvbGliL2xpYnNyYy56aXAhL3BwcC9CYWRDbGFzcy5qYXZhIj4KKyAgICAgICAgICA8cHJvdmlkZXIgc2VsZWN0ZWQ9InRydWUiIGVkaXRvci10eXBlLWlkPSJ0ZXh0LWVkaXRvciI+CisgICAgICAgICAgICA8c3RhdGUgbGluZT0iOSIgY29sdW1uPSIxMyIgc2VsZWN0aW9uLXN0YXJ0PSIxODUiIHNlbGVjdGlvbi1lbmQ9IjE4NSIgdmVydGljYWwtc2Nyb2xsLXByb3BvcnRpb249IjAuMCI+CisgICAgICAgICAgICAgIDxmb2xkaW5nIC8+CisgICAgICAgICAgICA8L3N0YXRlPgorICAgICAgICAgIDwvcHJvdmlkZXI+CisgICAgICAgIDwvZW50cnk+CisgICAgICA8L2ZpbGU+CisgICAgPC9sZWFmPgorICA8L2NvbXBvbmVudD4KKyAgPGNvbXBvbmVudCBuYW1lPSJGaW5kTWFuYWdlciI+CisgICAgPEZpbmRVc2FnZXNNYW5hZ2VyPgorICAgICAgPHNldHRpbmcgbmFtZT0iT1BFTl9ORVdfVEFCIiB2YWx1ZT0iZmFsc2UiIC8+CisgICAgPC9GaW5kVXNhZ2VzTWFuYWdlcj4KKyAgPC9jb21wb25lbnQ+CisgIDxjb21wb25lbnQgbmFtZT0iTW9kdWxlRWRpdG9yU3RhdGUiPgorICAgIDxvcHRpb24gbmFtZT0iTEFTVF9FRElURURfTU9EVUxFX05BTUUiIC8+CisgICAgPG9wdGlvbiBuYW1lPSJMQVNUX0VESVRFRF9UQUJfTkFNRSIgLz4KKyAgPC9jb21wb25lbnQ+CisgIDxjb21wb25lbnQgbmFtZT0iUHJvamVjdExldmVsVmNzTWFuYWdlciI+CisgICAgPE9wdGlvbnNTZXR0aW5nIHZhbHVlPSJ0cnVlIiBpZD0iQWRkIiAvPgorICAgIDxPcHRpb25zU2V0dGluZyB2YWx1ZT0idHJ1ZSIgaWQ9IlJlbW92ZSIgLz4KKyAgICA8T3B0aW9uc1NldHRpbmcgdmFsdWU9InRydWUiIGlkPSJDaGVja291dCIgLz4KKyAgICA8T3B0aW9uc1NldHRpbmcgdmFsdWU9InRydWUiIGlkPSJVcGRhdGUiIC8+CisgICAgPE9wdGlvbnNTZXR0aW5nIHZhbHVlPSJ0cnVlIiBpZD0iU3RhdHVzIiAvPgorICAgIDxPcHRpb25zU2V0dGluZyB2YWx1ZT0idHJ1ZSIgaWQ9IkVkaXQiIC8+CisgICAgPE9wdGlvbnNTZXR0aW5nIHZhbHVlPSJ0cnVlIiBpZD0iVW5kbyBDaGVjayBPdXQiIC8+CisgICAgPE9wdGlvbnNTZXR0aW5nIHZhbHVlPSJ0cnVlIiBpZD0iR2V0IExhdGVzdCBWZXJzaW9uIiAvPgorICAgIDxDb25maXJtYXRpb25zU2V0dGluZyB2YWx1ZT0iMCIgaWQ9IkFkZCIgLz4KKyAgICA8Q29uZmlybWF0aW9uc1NldHRpbmcgdmFsdWU9IjAiIGlkPSJSZW1vdmUiIC8+CisgIDwvY29tcG9uZW50PgorICA8Y29tcG9uZW50IG5hbWU9IlByb2plY3RQYW5lIj4KKyAgICA8c3ViUGFuZT4KKyAgICAgIDxQQVRIPgorICAgICAgICA8UEFUSF9FTEVNRU5UPgorICAgICAgICAgIDxvcHRpb24gbmFtZT0ibXlJdGVtSWQiIHZhbHVlPSJzZXZlcmFsSW5zdGFuY2VzIiAvPgorICAgICAgICAgIDxvcHRpb24gbmFtZT0ibXlJdGVtVHlwZSIgdmFsdWU9ImNvbS5pbnRlbGxpai5pZGUucHJvamVjdFZpZXcuaW1wbC5ub2Rlcy5Qcm9qZWN0Vmlld1Byb2plY3ROb2RlIiAvPgorICAgICAgICA8L1BBVEhfRUxFTUVOVD4KKyAgICAgICAgPFBBVEhfRUxFTUVOVD4KKyAgICAgICAgICA8b3B0aW9uIG5hbWU9Im15SXRlbUlkIiB2YWx1ZT0ic2V2ZXJhbEluc3RhbmNlcyIgLz4KKyAgICAgICAgICA8b3B0aW9uIG5hbWU9Im15SXRlbVR5cGUiIHZhbHVlPSJjb20uaW50ZWxsaWouaWRlLnByb2plY3RWaWV3LmltcGwubm9kZXMuUHJvamVjdFZpZXdNb2R1bGVOb2RlIiAvPgorICAgICAgICA8L1BBVEhfRUxFTUVOVD4KKyAgICAgIDwvUEFUSD4KKyAgICAgIDxQQVRIPgorICAgICAgICA8UEFUSF9FTEVNRU5UPgorICAgICAgICAgIDxvcHRpb24gbmFtZT0ibXlJdGVtSWQiIHZhbHVlPSJzZXZlcmFsSW5zdGFuY2VzIiAvPgorICAgICAgICAgIDxvcHRpb24gbmFtZT0ibXlJdGVtVHlwZSIgdmFsdWU9ImNvbS5pbnRlbGxpai5pZGUucHJvamVjdFZpZXcuaW1wbC5ub2Rlcy5Qcm9qZWN0Vmlld1Byb2plY3ROb2RlIiAvPgorICAgICAgICA8L1BBVEhfRUxFTUVOVD4KKyAgICAgICAgPFBBVEhfRUxFTUVOVD4KKyAgICAgICAgICA8b3B0aW9uIG5hbWU9Im15SXRlbUlkIiB2YWx1ZT0ic2V2ZXJhbEluc3RhbmNlcyIgLz4KKyAgICAgICAgICA8b3B0aW9uIG5hbWU9Im15SXRlbVR5cGUiIHZhbHVlPSJjb20uaW50ZWxsaWouaWRlLnByb2plY3RWaWV3LmltcGwubm9kZXMuUHJvamVjdFZpZXdNb2R1bGVOb2RlIiAvPgorICAgICAgICA8L1BBVEhfRUxFTUVOVD4KKyAgICAgICAgPFBBVEhfRUxFTUVOVD4KKyAgICAgICAgICA8b3B0aW9uIG5hbWU9Im15SXRlbUlkIiB2YWx1ZT0ic2V2ZXJhbEluc3RhbmNlcyIgLz4KKyAgICAgICAgICA8b3B0aW9uIG5hbWU9Im15SXRlbVR5cGUiIHZhbHVlPSJjb20uaW50ZWxsaWouaWRlLnByb2plY3RWaWV3LmltcGwubm9kZXMuUHNpRGlyZWN0b3J5Tm9kZSIgLz4KKyAgICAgICAgPC9QQVRIX0VMRU1FTlQ+CisgICAgICA8L1BBVEg+CisgICAgICA8UEFUSD4KKyAgICAgICAgPFBBVEhfRUxFTUVOVD4KKyAgICAgICAgICA8b3B0aW9uIG5hbWU9Im15SXRlbUlkIiB2YWx1ZT0ic2V2ZXJhbEluc3RhbmNlcyIgLz4KKyAgICAgICAgICA8b3B0aW9uIG5hbWU9Im15SXRlbVR5cGUiIHZhbHVlPSJjb20uaW50ZWxsaWouaWRlLnByb2plY3RWaWV3LmltcGwubm9kZXMuUHJvamVjdFZpZXdQcm9qZWN0Tm9kZSIgLz4KKyAgICAgICAgPC9QQVRIX0VMRU1FTlQ+CisgICAgICAgIDxQQVRIX0VMRU1FTlQ+CisgICAgICAgICAgPG9wdGlvbiBuYW1lPSJteUl0ZW1JZCIgdmFsdWU9InNldmVyYWxJbnN0YW5jZXMiIC8+CisgICAgICAgICAgPG9wdGlvbiBuYW1lPSJteUl0ZW1UeXBlIiB2YWx1ZT0iY29tLmludGVsbGlqLmlkZS5wcm9qZWN0Vmlldy5pbXBsLm5vZGVzLlByb2plY3RWaWV3TW9kdWxlTm9kZSIgLz4KKyAgICAgICAgPC9QQVRIX0VMRU1FTlQ+CisgICAgICAgIDxQQVRIX0VMRU1FTlQ+CisgICAgICAgICAgPG9wdGlvbiBuYW1lPSJteUl0ZW1JZCIgdmFsdWU9InNldmVyYWxJbnN0YW5jZXMiIC8+CisgICAgICAgICAgPG9wdGlvbiBuYW1lPSJteUl0ZW1UeXBlIiB2YWx1ZT0iY29tLmludGVsbGlqLmlkZS5wcm9qZWN0Vmlldy5pbXBsLm5vZGVzLlBzaURpcmVjdG9yeU5vZGUiIC8+CisgICAgICAgIDwvUEFUSF9FTEVNRU5UPgorICAgICAgICA8UEFUSF9FTEVNRU5UPgorICAgICAgICAgIDxvcHRpb24gbmFtZT0ibXlJdGVtSWQiIHZhbHVlPSJzcmMiIC8+CisgICAgICAgICAgPG9wdGlvbiBuYW1lPSJteUl0ZW1UeXBlIiB2YWx1ZT0iY29tLmludGVsbGlqLmlkZS5wcm9qZWN0Vmlldy5pbXBsLm5vZGVzLlBzaURpcmVjdG9yeU5vZGUiIC8+CisgICAgICAgIDwvUEFUSF9FTEVNRU5UPgorICAgICAgICA8UEFUSF9FTEVNRU5UPgorICAgICAgICAgIDxvcHRpb24gbmFtZT0ibXlJdGVtSWQiIHZhbHVlPSJwcHAiIC8+CisgICAgICAgICAgPG9wdGlvbiBuYW1lPSJteUl0ZW1UeXBlIiB2YWx1ZT0iY29tLmludGVsbGlqLmlkZS5wcm9qZWN0Vmlldy5pbXBsLm5vZGVzLlBzaURpcmVjdG9yeU5vZGUiIC8+CisgICAgICAgIDwvUEFUSF9FTEVNRU5UPgorICAgICAgPC9QQVRIPgorICAgIDwvc3ViUGFuZT4KKyAgPC9jb21wb25lbnQ+CisgIDxjb21wb25lbnQgbmFtZT0iUHJvamVjdFJlbG9hZFN0YXRlIj4KKyAgICA8b3B0aW9uIG5hbWU9IlNUQVRFIiB2YWx1ZT0iMCIgLz4KKyAgPC9jb21wb25lbnQ+CisgIDxjb21wb25lbnQgbmFtZT0iUHJvamVjdFZpZXciPgorICAgIDxuYXZpZ2F0b3IgY3VycmVudFZpZXc9IlByb2plY3RQYW5lIiBwcm9wb3J0aW9ucz0iMC41IiB2ZXJzaW9uPSIxIiBzcGxpdHRlclByb3BvcnRpb249IjAuNSI+CisgICAgICA8ZmxhdHRlblBhY2thZ2VzIC8+CisgICAgICA8c2hvd01lbWJlcnMgLz4KKyAgICAgIDxzaG93TW9kdWxlcyAvPgorICAgICAgPHNob3dMaWJyYXJ5Q29udGVudHMgLz4KKyAgICAgIDxoaWRlRW1wdHlQYWNrYWdlcyAvPgorICAgICAgPGFiYnJldmlhdGVQYWNrYWdlTmFtZXMgLz4KKyAgICAgIDxzaG93U3RydWN0dXJlIFByb2plY3RQYW5lPSJmYWxzZSIgLz4KKyAgICAgIDxhdXRvc2Nyb2xsVG9Tb3VyY2UgLz4KKyAgICAgIDxhdXRvc2Nyb2xsRnJvbVNvdXJjZSAvPgorICAgICAgPHNvcnRCeVR5cGUgLz4KKyAgICA8L25hdmlnYXRvcj4KKyAgPC9jb21wb25lbnQ+CisgIDxjb21wb25lbnQgbmFtZT0iUHJvcGVydGllc0NvbXBvbmVudCI+CisgICAgPHByb3BlcnR5IG5hbWU9InByb2plY3Quc3RydWN0dXJlLmxhc3QuZWRpdGVkIiB2YWx1ZT0iTW9kdWxlcyIgLz4KKyAgICA8cHJvcGVydHkgbmFtZT0iR29Ub0ZpbGUuaW5jbHVkZUphdmFGaWxlcyIgdmFsdWU9ImZhbHNlIiAvPgorICAgIDxwcm9wZXJ0eSBuYW1lPSJwcm9qZWN0LnN0cnVjdHVyZS5wcm9wb3J0aW9uIiB2YWx1ZT0iMC4xNSIgLz4KKyAgICA8cHJvcGVydHkgbmFtZT0iR29Ub0NsYXNzLnRvU2F2ZUluY2x1ZGVMaWJyYXJpZXMiIHZhbHVlPSJmYWxzZSIgLz4KKyAgICA8cHJvcGVydHkgbmFtZT0iUnVuTWFuYWdlckNvbmZpZy5zaG93U2V0dGluZ3NCZWZvcmVSdW5uaWciIHZhbHVlPSJmYWxzZSIgLz4KKyAgICA8cHJvcGVydHkgbmFtZT0iTWVtYmVyQ2hvb3Nlci5zb3J0ZWQiIHZhbHVlPSJmYWxzZSIgLz4KKyAgICA8cHJvcGVydHkgbmFtZT0iTWVtYmVyQ2hvb3Nlci5zaG93Q2xhc3NlcyIgdmFsdWU9InRydWUiIC8+CisgICAgPHByb3BlcnR5IG5hbWU9InByb2plY3Quc3RydWN0dXJlLnNpZGUucHJvcG9ydGlvbiIgdmFsdWU9IjAuMiIgLz4KKyAgICA8cHJvcGVydHkgbmFtZT0iR29Ub0NsYXNzLmluY2x1ZGVMaWJyYXJpZXMiIHZhbHVlPSJmYWxzZSIgLz4KKyAgICA8cHJvcGVydHkgbmFtZT0iTWVtYmVyQ2hvb3Nlci5jb3B5SmF2YWRvYyIgdmFsdWU9ImZhbHNlIiAvPgorICA8L2NvbXBvbmVudD4KKyAgPGNvbXBvbmVudCBuYW1lPSJSdW5NYW5hZ2VyIiBzZWxlY3RlZD0iQXBwbGljYXRpb24uU29tZUNsYXNzIj4KKyAgICA8Y29uZmlndXJhdGlvbiBkZWZhdWx0PSJ0cnVlIiB0eXBlPSJSZW1vdGUiIGZhY3RvcnlOYW1lPSJSZW1vdGUiPgorICAgICAgPG9wdGlvbiBuYW1lPSJVU0VfU09DS0VUX1RSQU5TUE9SVCIgdmFsdWU9InRydWUiIC8+CisgICAgICA8b3B0aW9uIG5hbWU9IlNFUlZFUl9NT0RFIiB2YWx1ZT0iZmFsc2UiIC8+CisgICAgICA8b3B0aW9uIG5hbWU9IlNITUVNX0FERFJFU1MiIHZhbHVlPSJqYXZhZGVidWciIC8+CisgICAgICA8b3B0aW9uIG5hbWU9IkhPU1QiIHZhbHVlPSJsb2NhbGhvc3QiIC8+CisgICAgICA8b3B0aW9uIG5hbWU9IlBPUlQiIHZhbHVlPSI1MDA1IiAvPgorICAgIDwvY29uZmlndXJhdGlvbj4KKyAgICA8Y29uZmlndXJhdGlvbiBkZWZhdWx0PSJ0cnVlIiB0eXBlPSJBcHBsZXQiIGZhY3RvcnlOYW1lPSJBcHBsZXQiPgorICAgICAgPG1vZHVsZSBuYW1lPSIiIC8+CisgICAgICA8b3B0aW9uIG5hbWU9Ik1BSU5fQ0xBU1NfTkFNRSIgLz4KKyAgICAgIDxvcHRpb24gbmFtZT0iSFRNTF9GSUxFX05BTUUiIC8+CisgICAgICA8b3B0aW9uIG5hbWU9IkhUTUxfVVNFRCIgdmFsdWU9ImZhbHNlIiAvPgorICAgICAgPG9wdGlvbiBuYW1lPSJXSURUSCIgdmFsdWU9IjQwMCIgLz4KKyAgICAgIDxvcHRpb24gbmFtZT0iSEVJR0hUIiB2YWx1ZT0iMzAwIiAvPgorICAgICAgPG9wdGlvbiBuYW1lPSJQT0xJQ1lfRklMRSIgdmFsdWU9IiRDVlNfQkFTRSQvYXBwbGV0dmlld2VyLnBvbGljeSIgLz4KKyAgICAgIDxvcHRpb24gbmFtZT0iVk1fUEFSQU1FVEVSUyIgLz4KKyAgICAgIDxvcHRpb24gbmFtZT0iQUxURVJOQVRJVkVfSlJFX1BBVEhfRU5BQkxFRCIgdmFsdWU9ImZhbHNlIiAvPgorICAgICAgPG9wdGlvbiBuYW1lPSJBTFRFUk5BVElWRV9KUkVfUEFUSCIgLz4KKyAgICA8L2NvbmZpZ3VyYXRpb24+CisgICAgPGNvbmZpZ3VyYXRpb24gZGVmYXVsdD0idHJ1ZSIgdHlwZT0iQXBwbGljYXRpb24iIGZhY3RvcnlOYW1lPSJBcHBsaWNhdGlvbiIgZW5hYmxlZD0iZmFsc2UiIG1lcmdlPSJmYWxzZSIgcnVubmVyPSJlbW1hIj4KKyAgICAgIDxvcHRpb24gbmFtZT0iTUFJTl9DTEFTU19OQU1FIiAvPgorICAgICAgPG9wdGlvbiBuYW1lPSJWTV9QQVJBTUVURVJTIiAvPgorICAgICAgPG9wdGlvbiBuYW1lPSJQUk9HUkFNX1BBUkFNRVRFUlMiIC8+CisgICAgICA8b3B0aW9uIG5hbWU9IldPUktJTkdfRElSRUNUT1JZIiB2YWx1ZT0iJFBST0pFQ1RfRElSJCIgLz4KKyAgICAgIDxvcHRpb24gbmFtZT0iQUxURVJOQVRJVkVfSlJFX1BBVEhfRU5BQkxFRCIgdmFsdWU9ImZhbHNlIiAvPgorICAgICAgPG9wdGlvbiBuYW1lPSJBTFRFUk5BVElWRV9KUkVfUEFUSCIgLz4KKyAgICAgIDxvcHRpb24gbmFtZT0iRU5BQkxFX1NXSU5HX0lOU1BFQ1RPUiIgdmFsdWU9ImZhbHNlIiAvPgorICAgICAgPG9wdGlvbiBuYW1lPSJFTlZfVkFSSUFCTEVTIiAvPgorICAgICAgPG9wdGlvbiBuYW1lPSJQQVNTX1BBUkVOVF9FTlZTIiB2YWx1ZT0idHJ1ZSIgLz4KKyAgICAgIDxtb2R1bGUgbmFtZT0iIiAvPgorICAgICAgPGVudnMgLz4KKyAgICA8L2NvbmZpZ3VyYXRpb24+CisgICAgPGNvbmZpZ3VyYXRpb24gZGVmYXVsdD0idHJ1ZSIgdHlwZT0iSlVuaXQiIGZhY3RvcnlOYW1lPSJKVW5pdCIgZW5hYmxlZD0iZmFsc2UiIG1lcmdlPSJmYWxzZSIgcnVubmVyPSJlbW1hIj4KKyAgICAgIDxtb2R1bGUgbmFtZT0iIiAvPgorICAgICAgPG9wdGlvbiBuYW1lPSJBTFRFUk5BVElWRV9KUkVfUEFUSF9FTkFCTEVEIiB2YWx1ZT0iZmFsc2UiIC8+CisgICAgICA8b3B0aW9uIG5hbWU9IkFMVEVSTkFUSVZFX0pSRV9QQVRIIiAvPgorICAgICAgPG9wdGlvbiBuYW1lPSJQQUNLQUdFX05BTUUiIC8+CisgICAgICA8b3B0aW9uIG5hbWU9Ik1BSU5fQ0xBU1NfTkFNRSIgLz4KKyAgICAgIDxvcHRpb24gbmFtZT0iTUVUSE9EX05BTUUiIC8+CisgICAgICA8b3B0aW9uIG5hbWU9IlRFU1RfT0JKRUNUIiB2YWx1ZT0iY2xhc3MiIC8+CisgICAgICA8b3B0aW9uIG5hbWU9IlZNX1BBUkFNRVRFUlMiIC8+CisgICAgICA8b3B0aW9uIG5hbWU9IlBBUkFNRVRFUlMiIC8+CisgICAgICA8b3B0aW9uIG5hbWU9IldPUktJTkdfRElSRUNUT1JZIiB2YWx1ZT0iJFBST0pFQ1RfRElSJCIgLz4KKyAgICAgIDxvcHRpb24gbmFtZT0iRU5WX1ZBUklBQkxFUyIgLz4KKyAgICAgIDxvcHRpb24gbmFtZT0iUEFTU19QQVJFTlRfRU5WUyIgdmFsdWU9InRydWUiIC8+CisgICAgICA8b3B0aW9uIG5hbWU9IkFERElUSU9OQUxfQ0xBU1NfUEFUSCIgLz4KKyAgICAgIDxvcHRpb24gbmFtZT0iVEVTVF9TRUFSQ0hfU0NPUEUiPgorICAgICAgICA8dmFsdWUgZGVmYXVsdE5hbWU9Im1vZHVsZVdpdGhEZXBlbmRlbmNpZXMiIC8+CisgICAgICA8L29wdGlvbj4KKyAgICAgIDxlbnZzIC8+CisgICAgPC9jb25maWd1cmF0aW9uPgorICAgIDxjb25maWd1cmF0aW9uIGRlZmF1bHQ9ImZhbHNlIiBuYW1lPSJTb21lQ2xhc3MiIHR5cGU9IkFwcGxpY2F0aW9uIiBmYWN0b3J5TmFtZT0iQXBwbGljYXRpb24iIGVuYWJsZWQ9ImZhbHNlIiBtZXJnZT0iZmFsc2UiIHNhbXBsZV9jb3ZlcmFnZT0idHJ1ZSIgcnVubmVyPSJlbW1hIj4KKyAgICAgIDxvcHRpb24gbmFtZT0iTUFJTl9DTEFTU19OQU1FIiB2YWx1ZT0icHBwLlNvbWVDbGFzcyIgLz4KKyAgICAgIDxvcHRpb24gbmFtZT0iVk1fUEFSQU1FVEVSUyIgdmFsdWU9IiIgLz4KKyAgICAgIDxvcHRpb24gbmFtZT0iUFJPR1JBTV9QQVJBTUVURVJTIiB2YWx1ZT0iIiAvPgorICAgICAgPG9wdGlvbiBuYW1lPSJXT1JLSU5HX0RJUkVDVE9SWSIgdmFsdWU9ImZpbGU6Ly8kUFJPSkVDVF9ESVIkIiAvPgorICAgICAgPG9wdGlvbiBuYW1lPSJBTFRFUk5BVElWRV9KUkVfUEFUSF9FTkFCTEVEIiB2YWx1ZT0iZmFsc2UiIC8+CisgICAgICA8b3B0aW9uIG5hbWU9IkFMVEVSTkFUSVZFX0pSRV9QQVRIIiB2YWx1ZT0iIiAvPgorICAgICAgPG9wdGlvbiBuYW1lPSJFTkFCTEVfU1dJTkdfSU5TUEVDVE9SIiB2YWx1ZT0iZmFsc2UiIC8+CisgICAgICA8b3B0aW9uIG5hbWU9IkVOVl9WQVJJQUJMRVMiIC8+CisgICAgICA8b3B0aW9uIG5hbWU9IlBBU1NfUEFSRU5UX0VOVlMiIHZhbHVlPSJ0cnVlIiAvPgorICAgICAgPG1vZHVsZSBuYW1lPSJzZXZlcmFsSW5zdGFuY2VzIiAvPgorICAgICAgPGVudnMgLz4KKyAgICAgIDxSdW5uZXJTZXR0aW5ncyBSdW5uZXJJZD0iUnVuIiAvPgorICAgICAgPENvbmZpZ3VyYXRpb25XcmFwcGVyIFJ1bm5lcklkPSJSdW4iIC8+CisgICAgICA8bWV0aG9kPgorICAgICAgICA8b3B0aW9uIG5hbWU9Ik1ha2UiIHZhbHVlPSJ0cnVlIiAvPgorICAgICAgPC9tZXRob2Q+CisgICAgPC9jb25maWd1cmF0aW9uPgorICAgIDxsaXN0IHNpemU9IjEiPgorICAgICAgPGl0ZW0gaW5kZXg9IjAiIGNsYXNzPSJqYXZhLmxhbmcuU3RyaW5nIiBpdGVtdmFsdWU9IkFwcGxpY2F0aW9uLlNvbWVDbGFzcyIgLz4KKyAgICA8L2xpc3Q+CisgICAgPGNvbmZpZ3VyYXRpb24gbmFtZT0iJmx0O3RlbXBsYXRlJmd0OyIgdHlwZT0iV2ViQXBwIiBkZWZhdWx0PSJ0cnVlIiBzZWxlY3RlZD0iZmFsc2UiPgorICAgICAgPEhvc3Q+bG9jYWxob3N0PC9Ib3N0PgorICAgICAgPFBvcnQ+NTA1MDwvUG9ydD4KKyAgICA8L2NvbmZpZ3VyYXRpb24+CisgIDwvY29tcG9uZW50PgorICA8Y29tcG9uZW50IG5hbWU9IlNoZWx2ZUNoYW5nZXNNYW5hZ2VyIiBzaG93X3JlY3ljbGVkPSJmYWxzZSIgLz4KKyAgPGNvbXBvbmVudCBuYW1lPSJTdGFydGVhbUNvbmZpZ3VyYXRpb24iPgorICAgIDxvcHRpb24gbmFtZT0iU0VSVkVSIiB2YWx1ZT0iIiAvPgorICAgIDxvcHRpb24gbmFtZT0iUE9SVCIgdmFsdWU9IjQ5MjAxIiAvPgorICAgIDxvcHRpb24gbmFtZT0iVVNFUiIgdmFsdWU9IiIgLz4KKyAgICA8b3B0aW9uIG5hbWU9IlBBU1NXT1JEIiB2YWx1ZT0iIiAvPgorICAgIDxvcHRpb24gbmFtZT0iUFJPSkVDVCIgdmFsdWU9IiIgLz4KKyAgICA8b3B0aW9uIG5hbWU9IlZJRVciIHZhbHVlPSIiIC8+CisgICAgPG9wdGlvbiBuYW1lPSJBTFRFUk5BVElWRV9XT1JLSU5HX1BBVEgiIHZhbHVlPSIiIC8+CisgICAgPG9wdGlvbiBuYW1lPSJMT0NLX09OX0NIRUNLT1VUIiB2YWx1ZT0iZmFsc2UiIC8+CisgICAgPG9wdGlvbiBuYW1lPSJVTkxPQ0tfT05fQ0hFQ0tJTiIgdmFsdWU9ImZhbHNlIiAvPgorICA8L2NvbXBvbmVudD4KKyAgPGNvbXBvbmVudCBuYW1lPSJTdHJ1Y3R1cmVWaWV3RmFjdG9yeSI+CisgICAgPG9wdGlvbiBuYW1lPSJBVVRPU0NST0xMX01PREUiIHZhbHVlPSJ0cnVlIiAvPgorICAgIDxvcHRpb24gbmFtZT0iQVVUT1NDUk9MTF9GUk9NX1NPVVJDRSIgdmFsdWU9ImZhbHNlIiAvPgorICAgIDxvcHRpb24gbmFtZT0iQUNUSVZFX0FDVElPTlMiIHZhbHVlPSIiIC8+CisgIDwvY29tcG9uZW50PgorICA8Y29tcG9uZW50IG5hbWU9IlN2bkNvbmZpZ3VyYXRpb24iPgorICAgIDxvcHRpb24gbmFtZT0iVVNFUiIgdmFsdWU9IiIgLz4KKyAgICA8b3B0aW9uIG5hbWU9IlBBU1NXT1JEIiB2YWx1ZT0iIiAvPgorICAgIDxvcHRpb24gbmFtZT0iTEFTVF9NRVJHRURfUkVWSVNJT04iIC8+CisgICAgPG9wdGlvbiBuYW1lPSJVUERBVEVfUlVOX1NUQVRVUyIgdmFsdWU9ImZhbHNlIiAvPgorICAgIDxvcHRpb24gbmFtZT0iTUVSR0VfRFJZX1JVTiIgdmFsdWU9ImZhbHNlIiAvPgorICAgIDxvcHRpb24gbmFtZT0iTUVSR0VfRElGRl9VU0VfQU5DRVNUUlkiIHZhbHVlPSJ0cnVlIiAvPgorICAgIDxvcHRpb24gbmFtZT0iVVBEQVRFX0xPQ0tfT05fREVNQU5EIiB2YWx1ZT0iZmFsc2UiIC8+CisgICAgPGNvbmZpZ3VyYXRpb24gdXNlRGVmYXVsdD0idHJ1ZSI+QzpcRG9jdW1lbnRzIGFuZCBTZXR0aW5nc1xqZWthXEFwcGxpY2F0aW9uIERhdGFcU3VidmVyc2lvbjwvY29uZmlndXJhdGlvbj4KKyAgICA8bXlJc1VzZURlZmF1bHRQcm94eT5mYWxzZTwvbXlJc1VzZURlZmF1bHRQcm94eT4KKyAgPC9jb21wb25lbnQ+CisgIDxjb21wb25lbnQgbmFtZT0iVG9kb1ZpZXciIHNlbGVjdGVkLWluZGV4PSIwIj4KKyAgICA8dG9kby1wYW5lbCBpZD0ic2VsZWN0ZWQtZmlsZSI+CisgICAgICA8YXJlLXBhY2thZ2VzLXNob3duIHZhbHVlPSJmYWxzZSIgLz4KKyAgICAgIDxhcmUtbW9kdWxlcy1zaG93biB2YWx1ZT0iZmFsc2UiIC8+CisgICAgICA8ZmxhdHRlbi1wYWNrYWdlcyB2YWx1ZT0iZmFsc2UiIC8+CisgICAgICA8aXMtYXV0b3Njcm9sbC10by1zb3VyY2UgdmFsdWU9InRydWUiIC8+CisgICAgPC90b2RvLXBhbmVsPgorICAgIDx0b2RvLXBhbmVsIGlkPSJhbGwiPgorICAgICAgPGFyZS1wYWNrYWdlcy1zaG93biB2YWx1ZT0idHJ1ZSIgLz4KKyAgICAgIDxhcmUtbW9kdWxlcy1zaG93biB2YWx1ZT0iZmFsc2UiIC8+CisgICAgICA8ZmxhdHRlbi1wYWNrYWdlcyB2YWx1ZT0iZmFsc2UiIC8+CisgICAgICA8aXMtYXV0b3Njcm9sbC10by1zb3VyY2UgdmFsdWU9InRydWUiIC8+CisgICAgPC90b2RvLXBhbmVsPgorICAgIDx0b2RvLXBhbmVsIGlkPSJkZWZhdWx0LWNoYW5nZWxpc3QiPgorICAgICAgPGFyZS1wYWNrYWdlcy1zaG93biB2YWx1ZT0iZmFsc2UiIC8+CisgICAgICA8YXJlLW1vZHVsZXMtc2hvd24gdmFsdWU9ImZhbHNlIiAvPgorICAgICAgPGZsYXR0ZW4tcGFja2FnZXMgdmFsdWU9ImZhbHNlIiAvPgorICAgICAgPGlzLWF1dG9zY3JvbGwtdG8tc291cmNlIHZhbHVlPSJmYWxzZSIgLz4KKyAgICA8L3RvZG8tcGFuZWw+CisgIDwvY29tcG9uZW50PgorICA8Y29tcG9uZW50IG5hbWU9IlRvb2xXaW5kb3dNYW5hZ2VyIj4KKyAgICA8ZnJhbWUgeD0iMTI3NiIgeT0iLTQiIHdpZHRoPSIxMjg4IiBoZWlnaHQ9IjEwMzIiIGV4dGVuZGVkLXN0YXRlPSIwIiAvPgorICAgIDxlZGl0b3IgYWN0aXZlPSJ0cnVlIiAvPgorICAgIDxsYXlvdXQ+CisgICAgICA8d2luZG93X2luZm8gaWQ9IkNoYW5nZXMiIGFjdGl2ZT0iZmFsc2UiIGFuY2hvcj0iYm90dG9tIiBhdXRvX2hpZGU9ImZhbHNlIiBpbnRlcm5hbF90eXBlPSJET0NLRUQiIHR5cGU9IkRPQ0tFRCIgdmlzaWJsZT0iZmFsc2UiIHdlaWdodD0iMC4zMyIgc2lkZVdlaWdodD0iMC41IiBvcmRlcj0iNyIgc2lkZV90b29sPSJmYWxzZSIgLz4KKyAgICAgIDx3aW5kb3dfaW5mbyBpZD0iUGFsZXR0ZSIgYWN0aXZlPSJmYWxzZSIgYW5jaG9yPSJyaWdodCIgYXV0b19oaWRlPSJmYWxzZSIgaW50ZXJuYWxfdHlwZT0iRE9DS0VEIiB0eXBlPSJET0NLRUQiIHZpc2libGU9ImZhbHNlIiB3ZWlnaHQ9IjAuMzMiIHNpZGVXZWlnaHQ9IjAuNSIgb3JkZXI9IjMiIHNpZGVfdG9vbD0iZmFsc2UiIC8+CisgICAgICA8d2luZG93X2luZm8gaWQ9IkRhdGFiYXNlIiBhY3RpdmU9ImZhbHNlIiBhbmNob3I9InJpZ2h0IiBhdXRvX2hpZGU9ImZhbHNlIiBpbnRlcm5hbF90eXBlPSJET0NLRUQiIHR5cGU9IkRPQ0tFRCIgdmlzaWJsZT0iZmFsc2UiIHdlaWdodD0iMC4zMyIgc2lkZVdlaWdodD0iMC41IiBvcmRlcj0iMyIgc2lkZV90b29sPSJmYWxzZSIgLz4KKyAgICAgIDx3aW5kb3dfaW5mbyBpZD0iQW50IEJ1aWxkIiBhY3RpdmU9ImZhbHNlIiBhbmNob3I9InJpZ2h0IiBhdXRvX2hpZGU9ImZhbHNlIiBpbnRlcm5hbF90eXBlPSJET0NLRUQiIHR5cGU9IkRPQ0tFRCIgdmlzaWJsZT0iZmFsc2UiIHdlaWdodD0iMC4yNSIgc2lkZVdlaWdodD0iMC41IiBvcmRlcj0iMSIgc2lkZV90b29sPSJmYWxzZSIgLz4KKyAgICAgIDx3aW5kb3dfaW5mbyBpZD0iRmluZCIgYWN0aXZlPSJmYWxzZSIgYW5jaG9yPSJib3R0b20iIGF1dG9faGlkZT0iZmFsc2UiIGludGVybmFsX3R5cGU9IkRPQ0tFRCIgdHlwZT0iRE9DS0VEIiB2aXNpYmxlPSJmYWxzZSIgd2VpZ2h0PSIwLjMzIiBzaWRlV2VpZ2h0PSIwLjUiIG9yZGVyPSIxIiBzaWRlX3Rvb2w9ImZhbHNlIiAvPgorICAgICAgPHdpbmRvd19pbmZvIGlkPSJEZWJ1ZyIgYWN0aXZlPSJmYWxzZSIgYW5jaG9yPSJib3R0b20iIGF1dG9faGlkZT0iZmFsc2UiIGludGVybmFsX3R5cGU9IkRPQ0tFRCIgdHlwZT0iRE9DS0VEIiB2aXNpYmxlPSJmYWxzZSIgd2VpZ2h0PSIwLjQiIHNpZGVXZWlnaHQ9IjAuNSIgb3JkZXI9IjMiIHNpZGVfdG9vbD0iZmFsc2UiIC8+CisgICAgICA8d2luZG93X2luZm8gaWQ9IlZlcnNpb24gQ29udHJvbCIgYWN0aXZlPSJmYWxzZSIgYW5jaG9yPSJib3R0b20iIGF1dG9faGlkZT0iZmFsc2UiIGludGVybmFsX3R5cGU9IkRPQ0tFRCIgdHlwZT0iRE9DS0VEIiB2aXNpYmxlPSJmYWxzZSIgd2VpZ2h0PSIwLjMzIiBzaWRlV2VpZ2h0PSIwLjUiIG9yZGVyPSI3IiBzaWRlX3Rvb2w9ImZhbHNlIiAvPgorICAgICAgPHdpbmRvd19pbmZvIGlkPSJTbGljZSIgYWN0aXZlPSJmYWxzZSIgYW5jaG9yPSJib3R0b20iIGF1dG9faGlkZT0iZmFsc2UiIGludGVybmFsX3R5cGU9IkRPQ0tFRCIgdHlwZT0iRE9DS0VEIiB2aXNpYmxlPSJmYWxzZSIgd2VpZ2h0PSIwLjMzIiBzaWRlV2VpZ2h0PSIwLjUiIG9yZGVyPSI3IiBzaWRlX3Rvb2w9ImZhbHNlIiAvPgorICAgICAgPHdpbmRvd19pbmZvIGlkPSJNZXNzYWdlcyIgYWN0aXZlPSJmYWxzZSIgYW5jaG9yPSJib3R0b20iIGF1dG9faGlkZT0iZmFsc2UiIGludGVybmFsX3R5cGU9IkRPQ0tFRCIgdHlwZT0iRE9DS0VEIiB2aXNpYmxlPSJmYWxzZSIgd2VpZ2h0PSIwLjMzIiBzaWRlV2VpZ2h0PSIwLjUiIG9yZGVyPSI3IiBzaWRlX3Rvb2w9ImZhbHNlIiAvPgorICAgICAgPHdpbmRvd19pbmZvIGlkPSJUT0RPIiBhY3RpdmU9ImZhbHNlIiBhbmNob3I9ImJvdHRvbSIgYXV0b19oaWRlPSJmYWxzZSIgaW50ZXJuYWxfdHlwZT0iRE9DS0VEIiB0eXBlPSJET0NLRUQiIHZpc2libGU9ImZhbHNlIiB3ZWlnaHQ9IjAuMzMiIHNpZGVXZWlnaHQ9IjAuNSIgb3JkZXI9IjYiIHNpZGVfdG9vbD0iZmFsc2UiIC8+CisgICAgICA8d2luZG93X2luZm8gaWQ9IlN0cnVjdHVyZSIgYWN0aXZlPSJmYWxzZSIgYW5jaG9yPSJsZWZ0IiBhdXRvX2hpZGU9ImZhbHNlIiBpbnRlcm5hbF90eXBlPSJET0NLRUQiIHR5cGU9IkRPQ0tFRCIgdmlzaWJsZT0iZmFsc2UiIHdlaWdodD0iMC4yNSIgc2lkZVdlaWdodD0iMC41IiBvcmRlcj0iMSIgc2lkZV90b29sPSJmYWxzZSIgLz4KKyAgICAgIDx3aW5kb3dfaW5mbyBpZD0iQ29tbWFuZGVyIiBhY3RpdmU9ImZhbHNlIiBhbmNob3I9InJpZ2h0IiBhdXRvX2hpZGU9ImZhbHNlIiBpbnRlcm5hbF90eXBlPSJET0NLRUQiIHR5cGU9IkRPQ0tFRCIgdmlzaWJsZT0iZmFsc2UiIHdlaWdodD0iMC40IiBzaWRlV2VpZ2h0PSIwLjUiIG9yZGVyPSIwIiBzaWRlX3Rvb2w9ImZhbHNlIiAvPgorICAgICAgPHdpbmRvd19pbmZvIGlkPSJNYXZlbiBQcm9qZWN0cyIgYWN0aXZlPSJmYWxzZSIgYW5jaG9yPSJyaWdodCIgYXV0b19oaWRlPSJmYWxzZSIgaW50ZXJuYWxfdHlwZT0iRE9DS0VEIiB0eXBlPSJET0NLRUQiIHZpc2libGU9ImZhbHNlIiB3ZWlnaHQ9IjAuMzMiIHNpZGVXZWlnaHQ9IjAuNSIgb3JkZXI9IjMiIHNpZGVfdG9vbD0iZmFsc2UiIC8+CisgICAgICA8d2luZG93X2luZm8gaWQ9Ik1vZHVsZSBEZXBlbmRlbmNpZXMiIGFjdGl2ZT0iZmFsc2UiIGFuY2hvcj0icmlnaHQiIGF1dG9faGlkZT0iZmFsc2UiIGludGVybmFsX3R5cGU9IkRPQ0tFRCIgdHlwZT0iRE9DS0VEIiB2aXNpYmxlPSJmYWxzZSIgd2VpZ2h0PSIwLjMzIiBzaWRlV2VpZ2h0PSIwLjUiIG9yZGVyPSIzIiBzaWRlX3Rvb2w9ImZhbHNlIiAvPgorICAgICAgPHdpbmRvd19pbmZvIGlkPSJQcm9qZWN0IiBhY3RpdmU9ImZhbHNlIiBhbmNob3I9ImxlZnQiIGF1dG9faGlkZT0iZmFsc2UiIGludGVybmFsX3R5cGU9IkRPQ0tFRCIgdHlwZT0iRE9DS0VEIiB2aXNpYmxlPSJ0cnVlIiB3ZWlnaHQ9IjAuMjUiIHNpZGVXZWlnaHQ9IjAuNjYwOTQ5OSIgb3JkZXI9IjAiIHNpZGVfdG9vbD0iZmFsc2UiIC8+CisgICAgICA8d2luZG93X2luZm8gaWQ9IkRlcGVuZGVuY3kgVmlld2VyIiBhY3RpdmU9ImZhbHNlIiBhbmNob3I9ImJvdHRvbSIgYXV0b19oaWRlPSJmYWxzZSIgaW50ZXJuYWxfdHlwZT0iRE9DS0VEIiB0eXBlPSJET0NLRUQiIHZpc2libGU9ImZhbHNlIiB3ZWlnaHQ9IjAuMzMiIHNpZGVXZWlnaHQ9IjAuNSIgb3JkZXI9IjciIHNpZGVfdG9vbD0iZmFsc2UiIC8+CisgICAgICA8d2luZG93X2luZm8gaWQ9Ikluc3BlY3Rpb24iIGFjdGl2ZT0iZmFsc2UiIGFuY2hvcj0iYm90dG9tIiBhdXRvX2hpZGU9ImZhbHNlIiBpbnRlcm5hbF90eXBlPSJET0NLRUQiIHR5cGU9IkRPQ0tFRCIgdmlzaWJsZT0iZmFsc2UiIHdlaWdodD0iMC40IiBzaWRlV2VpZ2h0PSIwLjUiIG9yZGVyPSI1IiBzaWRlX3Rvb2w9ImZhbHNlIiAvPgorICAgICAgPHdpbmRvd19pbmZvIGlkPSJEdXBsaWNhdGVzIiBhY3RpdmU9ImZhbHNlIiBhbmNob3I9ImJvdHRvbSIgYXV0b19oaWRlPSJmYWxzZSIgaW50ZXJuYWxfdHlwZT0iRE9DS0VEIiB0eXBlPSJET0NLRUQiIHZpc2libGU9ImZhbHNlIiB3ZWlnaHQ9IjAuMzMiIHNpZGVXZWlnaHQ9IjAuNSIgb3JkZXI9IjciIHNpZGVfdG9vbD0iZmFsc2UiIC8+CisgICAgICA8d2luZG93X2luZm8gaWQ9IlJ1biIgYWN0aXZlPSJmYWxzZSIgYW5jaG9yPSJib3R0b20iIGF1dG9faGlkZT0iZmFsc2UiIGludGVybmFsX3R5cGU9IkRPQ0tFRCIgdHlwZT0iRE9DS0VEIiB2aXNpYmxlPSJmYWxzZSIgd2VpZ2h0PSIwLjMyOTgxNTMiIHNpZGVXZWlnaHQ9IjAuNSIgb3JkZXI9IjIiIHNpZGVfdG9vbD0iZmFsc2UiIC8+CisgICAgICA8d2luZG93X2luZm8gaWQ9IkN2cyIgYWN0aXZlPSJmYWxzZSIgYW5jaG9yPSJib3R0b20iIGF1dG9faGlkZT0iZmFsc2UiIGludGVybmFsX3R5cGU9IkRPQ0tFRCIgdHlwZT0iRE9DS0VEIiB2aXNpYmxlPSJmYWxzZSIgd2VpZ2h0PSIwLjI1IiBzaWRlV2VpZ2h0PSIwLjUiIG9yZGVyPSI0IiBzaWRlX3Rvb2w9ImZhbHNlIiAvPgorICAgICAgPHdpbmRvd19pbmZvIGlkPSJNZXNzYWdlIiBhY3RpdmU9ImZhbHNlIiBhbmNob3I9ImJvdHRvbSIgYXV0b19oaWRlPSJmYWxzZSIgaW50ZXJuYWxfdHlwZT0iRE9DS0VEIiB0eXBlPSJET0NLRUQiIHZpc2libGU9ImZhbHNlIiB3ZWlnaHQ9IjAuMzMiIHNpZGVXZWlnaHQ9IjAuNSIgb3JkZXI9IjAiIHNpZGVfdG9vbD0iZmFsc2UiIC8+CisgICAgICA8d2luZG93X2luZm8gaWQ9IldlYiIgYWN0aXZlPSJmYWxzZSIgYW5jaG9yPSJsZWZ0IiBhdXRvX2hpZGU9ImZhbHNlIiBpbnRlcm5hbF90eXBlPSJET0NLRUQiIHR5cGU9IkRPQ0tFRCIgdmlzaWJsZT0iZmFsc2UiIHdlaWdodD0iMC4yNSIgc2lkZVdlaWdodD0iMC41IiBvcmRlcj0iMiIgc2lkZV90b29sPSJmYWxzZSIgLz4KKyAgICAgIDx3aW5kb3dfaW5mbyBpZD0iRUpCIiBhY3RpdmU9ImZhbHNlIiBhbmNob3I9ImJvdHRvbSIgYXV0b19oaWRlPSJmYWxzZSIgaW50ZXJuYWxfdHlwZT0iRE9DS0VEIiB0eXBlPSJET0NLRUQiIHZpc2libGU9ImZhbHNlIiB3ZWlnaHQ9IjAuMjUiIHNpZGVXZWlnaHQ9IjAuNSIgb3JkZXI9IjQiIHNpZGVfdG9vbD0iZmFsc2UiIC8+CisgICAgICA8d2luZG93X2luZm8gaWQ9IkhpZXJhcmNoeSIgYWN0aXZlPSJmYWxzZSIgYW5jaG9yPSJyaWdodCIgYXV0b19oaWRlPSJmYWxzZSIgaW50ZXJuYWxfdHlwZT0iRE9DS0VEIiB0eXBlPSJET0NLRUQiIHZpc2libGU9ImZhbHNlIiB3ZWlnaHQ9IjAuMjUiIHNpZGVXZWlnaHQ9IjAuNSIgb3JkZXI9IjIiIHNpZGVfdG9vbD0iZmFsc2UiIC8+CisgICAgPC9sYXlvdXQ+CisgIDwvY29tcG9uZW50PgorICA8Y29tcG9uZW50IG5hbWU9IlZjc01hbmFnZXJDb25maWd1cmF0aW9uIj4KKyAgICA8b3B0aW9uIG5hbWU9Ik9GRkVSX01PVkVfVE9fQU5PVEhFUl9DSEFOR0VMSVNUX09OX1BBUlRJQUxfQ09NTUlUIiB2YWx1ZT0idHJ1ZSIgLz4KKyAgICA8b3B0aW9uIG5hbWU9IkNIRUNLX0NPREVfU01FTExTX0JFRk9SRV9QUk9KRUNUX0NPTU1JVCIgdmFsdWU9InRydWUiIC8+CisgICAgPG9wdGlvbiBuYW1lPSJQRVJGT1JNX1VQREFURV9JTl9CQUNLR1JPVU5EIiB2YWx1ZT0iZmFsc2UiIC8+CisgICAgPG9wdGlvbiBuYW1lPSJQRVJGT1JNX0NPTU1JVF9JTl9CQUNLR1JPVU5EIiB2YWx1ZT0iZmFsc2UiIC8+CisgICAgPG9wdGlvbiBuYW1lPSJQRVJGT1JNX0VESVRfSU5fQkFDS0dST1VORCIgdmFsdWU9InRydWUiIC8+CisgICAgPG9wdGlvbiBuYW1lPSJQRVJGT1JNX0NIRUNLT1VUX0lOX0JBQ0tHUk9VTkQiIHZhbHVlPSJ0cnVlIiAvPgorICAgIDxvcHRpb24gbmFtZT0iUEVSRk9STV9BRERfUkVNT1ZFX0lOX0JBQ0tHUk9VTkQiIHZhbHVlPSJ0cnVlIiAvPgorICAgIDxvcHRpb24gbmFtZT0iRk9SQ0VfTk9OX0VNUFRZX0NPTU1FTlQiIHZhbHVlPSJmYWxzZSIgLz4KKyAgICA8b3B0aW9uIG5hbWU9IkxBU1RfQ09NTUlUX01FU1NBR0UiIC8+CisgICAgPG9wdGlvbiBuYW1lPSJPUFRJTUlaRV9JTVBPUlRTX0JFRk9SRV9QUk9KRUNUX0NPTU1JVCIgdmFsdWU9ImZhbHNlIiAvPgorICAgIDxvcHRpb24gbmFtZT0iUkVGT1JNQVRfQkVGT1JFX1BST0pFQ1RfQ09NTUlUIiB2YWx1ZT0iZmFsc2UiIC8+CisgICAgPG9wdGlvbiBuYW1lPSJSRUZPUk1BVF9CRUZPUkVfRklMRV9DT01NSVQiIHZhbHVlPSJmYWxzZSIgLz4KKyAgICA8b3B0aW9uIG5hbWU9IkZJTEVfSElTVE9SWV9ESUFMT0dfQ09NTUVOVFNfU1BMSVRURVJfUFJPUE9SVElPTiIgdmFsdWU9IjAuOCIgLz4KKyAgICA8b3B0aW9uIG5hbWU9IkZJTEVfSElTVE9SWV9ESUFMT0dfU1BMSVRURVJfUFJPUE9SVElPTiIgdmFsdWU9IjAuNSIgLz4KKyAgICA8b3B0aW9uIG5hbWU9IkFDVElWRV9WQ1NfTkFNRSIgLz4KKyAgICA8b3B0aW9uIG5hbWU9IlVQREFURV9HUk9VUF9CWV9QQUNLQUdFUyIgdmFsdWU9ImZhbHNlIiAvPgorICAgIDxvcHRpb24gbmFtZT0iVVBEQVRFX0dST1VQX0JZX0NIQU5HRUxJU1QiIHZhbHVlPSJmYWxzZSIgLz4KKyAgICA8b3B0aW9uIG5hbWU9IlNIT1dfRklMRV9ISVNUT1JZX0FTX1RSRUUiIHZhbHVlPSJmYWxzZSIgLz4KKyAgICA8b3B0aW9uIG5hbWU9IkZJTEVfSElTVE9SWV9TUExJVFRFUl9QUk9QT1JUSU9OIiB2YWx1ZT0iMC42IiAvPgorICA8L2NvbXBvbmVudD4KKyAgPGNvbXBvbmVudCBuYW1lPSJWc3NDb25maWd1cmF0aW9uIj4KKyAgICA8b3B0aW9uIG5hbWU9IkNMSUVOVF9QQVRIIiB2YWx1ZT0iIiAvPgorICAgIDxvcHRpb24gbmFtZT0iU1JDU0FGRUlOSV9QQVRIIiB2YWx1ZT0iIiAvPgorICAgIDxvcHRpb24gbmFtZT0iVVNFUl9OQU1FIiB2YWx1ZT0iIiAvPgorICAgIDxvcHRpb24gbmFtZT0iUFdEIiB2YWx1ZT0iIiAvPgorICAgIDxDaGVja291dE9wdGlvbnM+CisgICAgICA8b3B0aW9uIG5hbWU9IkNPTU1FTlQiIHZhbHVlPSIiIC8+CisgICAgICA8b3B0aW9uIG5hbWU9IkRPX05PVF9HRVRfTEFURVNUX1ZFUlNJT04iIHZhbHVlPSJmYWxzZSIgLz4KKyAgICAgIDxvcHRpb24gbmFtZT0iUkVQTEFDRV9XUklUQUJMRSIgdmFsdWU9ImZhbHNlIiAvPgorICAgICAgPG9wdGlvbiBuYW1lPSJSRUNVUlNJVkUiIHZhbHVlPSJmYWxzZSIgLz4KKyAgICA8L0NoZWNrb3V0T3B0aW9ucz4KKyAgICA8Q2hlY2tpbk9wdGlvbnM+CisgICAgICA8b3B0aW9uIG5hbWU9IkNPTU1FTlQiIHZhbHVlPSIiIC8+CisgICAgICA8b3B0aW9uIG5hbWU9IktFRVBfQ0hFQ0tFRF9PVVQiIHZhbHVlPSJmYWxzZSIgLz4KKyAgICAgIDxvcHRpb24gbmFtZT0iUkVDVVJTSVZFIiB2YWx1ZT0iZmFsc2UiIC8+CisgICAgPC9DaGVja2luT3B0aW9ucz4KKyAgICA8QWRkT3B0aW9ucz4KKyAgICAgIDxvcHRpb24gbmFtZT0iU1RPUkVfT05MWV9MQVRFU1RfVkVSU0lPTiIgdmFsdWU9ImZhbHNlIiAvPgorICAgICAgPG9wdGlvbiBuYW1lPSJDSEVDS19PVVRfSU1NRURJQVRFTFkiIHZhbHVlPSJmYWxzZSIgLz4KKyAgICA8L0FkZE9wdGlvbnM+CisgICAgPFVuZG9jaGVja291dE9wdGlvbnM+CisgICAgICA8b3B0aW9uIG5hbWU9Ik1BS0VfV1JJVEFCTEUiIHZhbHVlPSJmYWxzZSIgLz4KKyAgICAgIDxvcHRpb24gbmFtZT0iUkVQTEFDRV9MT0NBTF9DT1BZIiB2YWx1ZT0iMiIgLz4KKyAgICAgIDxvcHRpb24gbmFtZT0iUkVDVVJTSVZFIiB2YWx1ZT0iZmFsc2UiIC8+CisgICAgPC9VbmRvY2hlY2tvdXRPcHRpb25zPgorICAgIDxHZXRPcHRpb25zPgorICAgICAgPG9wdGlvbiBuYW1lPSJSRVBMQUNFX1dSSVRBQkxFIiB2YWx1ZT0iMCIgLz4KKyAgICAgIDxvcHRpb24gbmFtZT0iTUFLRV9XUklUQUJMRSIgdmFsdWU9ImZhbHNlIiAvPgorICAgICAgPG9wdGlvbiBuYW1lPSJBTlNXRVJfTkVHQVRJVkVMWSIgdmFsdWU9ImZhbHNlIiAvPgorICAgICAgPG9wdGlvbiBuYW1lPSJBTlNXRVJfUE9TSVRJVkVMWSIgdmFsdWU9ImZhbHNlIiAvPgorICAgICAgPG9wdGlvbiBuYW1lPSJSRUNVUlNJVkUiIHZhbHVlPSJmYWxzZSIgLz4KKyAgICAgIDxvcHRpb24gbmFtZT0iVkVSU0lPTiIgLz4KKyAgICA8L0dldE9wdGlvbnM+CisgIDwvY29tcG9uZW50PgorICA8Y29tcG9uZW50IG5hbWU9IlhEZWJ1Z2dlck1hbmFnZXIiPgorICAgIDxicmVha3BvaW50LW1hbmFnZXIgLz4KKyAgPC9jb21wb25lbnQ+CisgIDxjb21wb25lbnQgbmFtZT0iWFBhdGhWaWV3LlhQYXRoUHJvamVjdENvbXBvbmVudCI+CisgICAgPGhpc3RvcnkgLz4KKyAgICA8ZmluZC1oaXN0b3J5IC8+CisgIDwvY29tcG9uZW50PgorICA8Y29tcG9uZW50IG5hbWU9ImFudFdvcmtzcGFjZUNvbmZpZ3VyYXRpb24iPgorICAgIDxvcHRpb24gbmFtZT0iSVNfQVVUT1NDUk9MTF9UT19TT1VSQ0UiIHZhbHVlPSJmYWxzZSIgLz4KKyAgICA8b3B0aW9uIG5hbWU9IkZJTFRFUl9UQVJHRVRTIiB2YWx1ZT0iZmFsc2UiIC8+CisgIDwvY29tcG9uZW50PgorICA8Y29tcG9uZW50IG5hbWU9ImVkaXRvckhpc3RvcnlNYW5hZ2VyIj4KKyAgICA8ZW50cnkgZmlsZT0iamFyOi8vJFBST0pFQ1RfRElSJC9saWIvbGlic3JjLnppcCEvcHBwL0JhZENsYXNzLmphdmEiPgorICAgICAgPHByb3ZpZGVyIHNlbGVjdGVkPSJ0cnVlIiBlZGl0b3ItdHlwZS1pZD0idGV4dC1lZGl0b3IiPgorICAgICAgICA8c3RhdGUgbGluZT0iOSIgY29sdW1uPSIxMyIgc2VsZWN0aW9uLXN0YXJ0PSIxODUiIHNlbGVjdGlvbi1lbmQ9IjE4NSIgdmVydGljYWwtc2Nyb2xsLXByb3BvcnRpb249IjAuMCI+CisgICAgICAgICAgPGZvbGRpbmcgLz4KKyAgICAgICAgPC9zdGF0ZT4KKyAgICAgIDwvcHJvdmlkZXI+CisgICAgPC9lbnRyeT4KKyAgICA8ZW50cnkgZmlsZT0iZmlsZTovLyRQUk9KRUNUX0RJUiQvc3JjL3BwcC9CYWRDbGFzcy5qYXZhIj4KKyAgICAgIDxwcm92aWRlciBzZWxlY3RlZD0idHJ1ZSIgZWRpdG9yLXR5cGUtaWQ9InRleHQtZWRpdG9yIj4KKyAgICAgICAgPHN0YXRlIGxpbmU9IjkiIGNvbHVtbj0iMTMiIHNlbGVjdGlvbi1zdGFydD0iMTg1IiBzZWxlY3Rpb24tZW5kPSIxODUiIHZlcnRpY2FsLXNjcm9sbC1wcm9wb3J0aW9uPSIwLjAiPgorICAgICAgICAgIDxmb2xkaW5nIC8+CisgICAgICAgIDwvc3RhdGU+CisgICAgICA8L3Byb3ZpZGVyPgorICAgIDwvZW50cnk+CisgICAgPGVudHJ5IGZpbGU9ImZpbGU6Ly8kUFJPSkVDVF9ESVIkL3NyYy9wcHAvU29tZUNsYXNzLmphdmEiPgorICAgICAgPHByb3ZpZGVyIHNlbGVjdGVkPSJ0cnVlIiBlZGl0b3ItdHlwZS1pZD0idGV4dC1lZGl0b3IiPgorICAgICAgICA8c3RhdGUgbGluZT0iMyIgY29sdW1uPSI5IiBzZWxlY3Rpb24tc3RhcnQ9IjQ4IiBzZWxlY3Rpb24tZW5kPSI0OCIgdmVydGljYWwtc2Nyb2xsLXByb3BvcnRpb249IjAuMDU3ODg4NzYiPgorICAgICAgICAgIDxmb2xkaW5nIC8+CisgICAgICAgIDwvc3RhdGU+CisgICAgICA8L3Byb3ZpZGVyPgorICAgIDwvZW50cnk+CisgIDwvY29tcG9uZW50PgorICA8Y29tcG9uZW50IG5hbWU9Im1hc3RlckRldGFpbHMiPgorICAgIDxvcHRpb24gbmFtZT0ic3RhdGVzIj4KKyAgICAgIDxtYXA+CisgICAgICAgIDxlbnRyeSBrZXk9IkVycm9ycy5VSSI+CisgICAgICAgICAgPHZhbHVlPgorICAgICAgICAgICAgPFVJU3RhdGU+CisgICAgICAgICAgICAgIDxvcHRpb24gbmFtZT0icHJvcG9ydGlvbnMiPgorICAgICAgICAgICAgICAgIDxTcGxpdHRlclByb3BvcnRpb25zRGF0YUltcGwgLz4KKyAgICAgICAgICAgICAgPC9vcHRpb24+CisgICAgICAgICAgICA8L1VJU3RhdGU+CisgICAgICAgICAgPC92YWx1ZT4KKyAgICAgICAgPC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGtleT0iUHJvamVjdEpES3MuVUkiPgorICAgICAgICAgIDx2YWx1ZT4KKyAgICAgICAgICAgIDxVSVN0YXRlPgorICAgICAgICAgICAgICA8b3B0aW9uIG5hbWU9InByb3BvcnRpb25zIj4KKyAgICAgICAgICAgICAgICA8U3BsaXR0ZXJQcm9wb3J0aW9uc0RhdGFJbXBsPgorICAgICAgICAgICAgICAgICAgPG9wdGlvbiBuYW1lPSJwcm9wb3J0aW9ucyI+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0PgorICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9IjAuNSIgLz4KKyAgICAgICAgICAgICAgICAgICAgPC9saXN0PgorICAgICAgICAgICAgICAgICAgPC9vcHRpb24+CisgICAgICAgICAgICAgICAgPC9TcGxpdHRlclByb3BvcnRpb25zRGF0YUltcGw+CisgICAgICAgICAgICAgIDwvb3B0aW9uPgorICAgICAgICAgICAgICA8b3B0aW9uIG5hbWU9Imxhc3RFZGl0ZWRDb25maWd1cmFibGUiIHZhbHVlPSIxLjMiIC8+CisgICAgICAgICAgICA8L1VJU3RhdGU+CisgICAgICAgICAgPC92YWx1ZT4KKyAgICAgICAgPC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGtleT0iU2NvcGVDaG9vc2VyQ29uZmlndXJhYmxlLlVJIj4KKyAgICAgICAgICA8dmFsdWU+CisgICAgICAgICAgICA8VUlTdGF0ZT4KKyAgICAgICAgICAgICAgPG9wdGlvbiBuYW1lPSJwcm9wb3J0aW9ucyI+CisgICAgICAgICAgICAgICAgPFNwbGl0dGVyUHJvcG9ydGlvbnNEYXRhSW1wbCAvPgorICAgICAgICAgICAgICA8L29wdGlvbj4KKyAgICAgICAgICAgIDwvVUlTdGF0ZT4KKyAgICAgICAgICA8L3ZhbHVlPgorICAgICAgICA8L2VudHJ5PgorICAgICAgPC9tYXA+CisgICAgPC9vcHRpb24+CisgICAgPG9wdGlvbiBuYW1lPSJteVN0YXRlcyI+CisgICAgICA8bWFwPgorICAgICAgICA8ZW50cnkga2V5PSJFcnJvcnMuVUkiPgorICAgICAgICAgIDx2YWx1ZT4KKyAgICAgICAgICAgIDxVSVN0YXRlPgorICAgICAgICAgICAgICA8b3B0aW9uIG5hbWU9InByb3BvcnRpb25zIj4KKyAgICAgICAgICAgICAgICA8U3BsaXR0ZXJQcm9wb3J0aW9uc0RhdGFJbXBsIC8+CisgICAgICAgICAgICAgIDwvb3B0aW9uPgorICAgICAgICAgICAgPC9VSVN0YXRlPgorICAgICAgICAgIDwvdmFsdWU+CisgICAgICAgIDwvZW50cnk+CisgICAgICAgIDxlbnRyeSBrZXk9IlByb2plY3RKREtzLlVJIj4KKyAgICAgICAgICA8dmFsdWU+CisgICAgICAgICAgICA8VUlTdGF0ZT4KKyAgICAgICAgICAgICAgPG9wdGlvbiBuYW1lPSJwcm9wb3J0aW9ucyI+CisgICAgICAgICAgICAgICAgPFNwbGl0dGVyUHJvcG9ydGlvbnNEYXRhSW1wbD4KKyAgICAgICAgICAgICAgICAgIDxvcHRpb24gbmFtZT0icHJvcG9ydGlvbnMiPgorICAgICAgICAgICAgICAgICAgICA8bGlzdD4KKyAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSIwLjUiIC8+CisgICAgICAgICAgICAgICAgICAgIDwvbGlzdD4KKyAgICAgICAgICAgICAgICAgIDwvb3B0aW9uPgorICAgICAgICAgICAgICAgIDwvU3BsaXR0ZXJQcm9wb3J0aW9uc0RhdGFJbXBsPgorICAgICAgICAgICAgICA8L29wdGlvbj4KKyAgICAgICAgICAgICAgPG9wdGlvbiBuYW1lPSJsYXN0RWRpdGVkQ29uZmlndXJhYmxlIiB2YWx1ZT0iMS4zIiAvPgorICAgICAgICAgICAgPC9VSVN0YXRlPgorICAgICAgICAgIDwvdmFsdWU+CisgICAgICAgIDwvZW50cnk+CisgICAgICAgIDxlbnRyeSBrZXk9IlNjb3BlQ2hvb3NlckNvbmZpZ3VyYWJsZS5VSSI+CisgICAgICAgICAgPHZhbHVlPgorICAgICAgICAgICAgPFVJU3RhdGU+CisgICAgICAgICAgICAgIDxvcHRpb24gbmFtZT0icHJvcG9ydGlvbnMiPgorICAgICAgICAgICAgICAgIDxTcGxpdHRlclByb3BvcnRpb25zRGF0YUltcGwgLz4KKyAgICAgICAgICAgICAgPC9vcHRpb24+CisgICAgICAgICAgICA8L1VJU3RhdGU+CisgICAgICAgICAgPC92YWx1ZT4KKyAgICAgICAgPC9lbnRyeT4KKyAgICAgIDwvbWFwPgorICAgIDwvb3B0aW9uPgorICA8L2NvbXBvbmVudD4KKzwvcHJvamVjdD4KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvc2FtZUNsYXNzZXNJblNvdXJjZUFuZExpYi9zcmMvcHBwL0JhZENsYXNzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9zYW1lQ2xhc3Nlc0luU291cmNlQW5kTGliL3NyYy9wcHAvQmFkQ2xhc3MuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mM2FjOWY1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvc2FtZUNsYXNzZXNJblNvdXJjZUFuZExpYi9zcmMvcHBwL0JhZENsYXNzLmphdmEKQEAgLTAsMCArMSwxNyBAQAorcGFja2FnZSBwcHA7CisKKy8qKgorICogQ3JlYXRlZCBieSBJbnRlbGxpSiBJREVBLgorICogVXNlcjogSkVLQQorICogRGF0ZTogU2VwIDExLCAyMDA4CisgKiBUaW1lOiA0OjAxOjM4IFBNCisgKiBUbyBjaGFuZ2UgdGhpcyB0ZW1wbGF0ZSB1c2UgRmlsZSB8IFNldHRpbmdzIHwgRmlsZSBUZW1wbGF0ZXMuCisgKi8KK3B1YmxpYyBjbGFzcyBCYWRDbGFzcyB7CisgICAgcHVibGljIHN0YXRpYyB2b2lkIG1ldGhvZCgpIHsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJIZWxsbyIpOworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIkhlbGxvIik7CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiSGVsbG8iKTsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJIZWxsbyIpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nL3NhbWVDbGFzc2VzSW5Tb3VyY2VBbmRMaWIvc3JjL3BwcC9Tb21lQ2xhc3MuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nL3NhbWVDbGFzc2VzSW5Tb3VyY2VBbmRMaWIvc3JjL3BwcC9Tb21lQ2xhc3MuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNzgyNTRkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvc2FtZUNsYXNzZXNJblNvdXJjZUFuZExpYi9zcmMvcHBwL1NvbWVDbGFzcy5qYXZhCkBAIC0wLDAgKzEsNSBAQAorcGFja2FnZSBwcHA7CisKK3B1YmxpYyBjbGFzcyBTb21lQ2xhc3MgeworICAgIEJhZENsYXNzIGY7Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9zYW1lRlFOQ2xhc3Nlcy9iYXNlL0Jhc2UuaW1sIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvc2FtZUZRTkNsYXNzZXMvYmFzZS9CYXNlLmltbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZWM0M2VmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvc2FtZUZRTkNsYXNzZXMvYmFzZS9CYXNlLmltbApAQCAtMCwwICsxLDEzIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPG1vZHVsZSByZWxhdGl2ZVBhdGhzPSJ0cnVlIiB0eXBlPSJKQVZBX01PRFVMRSIgdmVyc2lvbj0iNCI+CisgIDxjb21wb25lbnQgbmFtZT0iTmV3TW9kdWxlUm9vdE1hbmFnZXIiIGluaGVyaXQtY29tcGlsZXItb3V0cHV0PSJ0cnVlIj4KKyAgICA8ZXhjbHVkZS1vdXRwdXQgLz4KKyAgICA8Y29udGVudCB1cmw9ImZpbGU6Ly8kTU9EVUxFX0RJUiQiPgorICAgICAgPHNvdXJjZUZvbGRlciB1cmw9ImZpbGU6Ly8kTU9EVUxFX0RJUiQvc3JjIiBpc1Rlc3RTb3VyY2U9ImZhbHNlIiAvPgorICAgIDwvY29udGVudD4KKyAgICA8b3JkZXJFbnRyeSB0eXBlPSJpbmhlcml0ZWRKZGsiIC8+CisgICAgPG9yZGVyRW50cnkgdHlwZT0ic291cmNlRm9sZGVyIiBmb3JUZXN0cz0iZmFsc2UiIC8+CisgICAgPG9yZGVyRW50cnlQcm9wZXJ0aWVzIC8+CisgIDwvY29tcG9uZW50PgorPC9tb2R1bGU+CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nL3NhbWVGUU5DbGFzc2VzL2Jhc2Uvc3JjL2J1Zy90ZXN0L0Jhc2VDbGFzcy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvc2FtZUZRTkNsYXNzZXMvYmFzZS9zcmMvYnVnL3Rlc3QvQmFzZUNsYXNzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzQ2MTJjNgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nL3NhbWVGUU5DbGFzc2VzL2Jhc2Uvc3JjL2J1Zy90ZXN0L0Jhc2VDbGFzcy5qYXZhCkBAIC0wLDAgKzEsMTUgQEAKK3BhY2thZ2UgYnVnLnRlc3Q7CisKKy8qKgorICogQ3JlYXRlZCBieSBJbnRlbGxpSiBJREVBLgorICogRGF0ZTogRGVjIDEzLCAyMDA3CisgKiBUaW1lOiA0OjEyOjUwIFBNCisgKiBUbyBjaGFuZ2UgdGhpcyB0ZW1wbGF0ZSB1c2UgRmlsZSB8IFNldHRpbmdzIHwgRmlsZSBUZW1wbGF0ZXMuCisgKi8KK3B1YmxpYyBjbGFzcyBCYXNlQ2xhc3MgeworCisgICAgcHVibGljIHZvaWQgZG9Tb21ldGhpbmcoU3RyaW5nIGFyZzEpeworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIkluIEJhc2VDbGFzczo6ZG9Tb21ldGhpbmcoaW50IGFyZzEpIik7CisgICAgfQorCit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9zYW1lRlFOQ2xhc3Nlcy9jbGllbnQvQ2xpZW50LmltbCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nL3NhbWVGUU5DbGFzc2VzL2NsaWVudC9DbGllbnQuaW1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMzM2UxNzEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9zYW1lRlFOQ2xhc3Nlcy9jbGllbnQvQ2xpZW50LmltbApAQCAtMCwwICsxLDE0IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPG1vZHVsZSByZWxhdGl2ZVBhdGhzPSJ0cnVlIiB0eXBlPSJKQVZBX01PRFVMRSIgdmVyc2lvbj0iNCI+CisgIDxjb21wb25lbnQgbmFtZT0iTmV3TW9kdWxlUm9vdE1hbmFnZXIiIGluaGVyaXQtY29tcGlsZXItb3V0cHV0PSJ0cnVlIj4KKyAgICA8ZXhjbHVkZS1vdXRwdXQgLz4KKyAgICA8Y29udGVudCB1cmw9ImZpbGU6Ly8kTU9EVUxFX0RJUiQiPgorICAgICAgPHNvdXJjZUZvbGRlciB1cmw9ImZpbGU6Ly8kTU9EVUxFX0RJUiQvc3JjIiBpc1Rlc3RTb3VyY2U9ImZhbHNlIiAvPgorICAgIDwvY29udGVudD4KKyAgICA8b3JkZXJFbnRyeSB0eXBlPSJpbmhlcml0ZWRKZGsiIC8+CisgICAgPG9yZGVyRW50cnkgdHlwZT0ic291cmNlRm9sZGVyIiBmb3JUZXN0cz0iZmFsc2UiIC8+CisgICAgPG9yZGVyRW50cnkgdHlwZT0ibW9kdWxlIiBtb2R1bGUtbmFtZT0iT3ZlcnJpZGUiIC8+CisgICAgPG9yZGVyRW50cnlQcm9wZXJ0aWVzIC8+CisgIDwvY29tcG9uZW50PgorPC9tb2R1bGU+CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nL3NhbWVGUU5DbGFzc2VzL2NsaWVudC9zcmMvQnVnVGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvc2FtZUZRTkNsYXNzZXMvY2xpZW50L3NyYy9CdWdUZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjY5OGE2NgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nL3NhbWVGUU5DbGFzc2VzL2NsaWVudC9zcmMvQnVnVGVzdC5qYXZhCkBAIC0wLDAgKzEsMTcgQEAKK2ltcG9ydCBidWcudGVzdC5CYXNlQ2xhc3M7IAorCisvKioKKyAqIENyZWF0ZWQgYnkgSW50ZWxsaUogSURFQS4KKyAqIERhdGU6IERlYyAxMywgMjAwNworICogVGltZTogNDoxNTo0OCBQTQorICogVG8gY2hhbmdlIHRoaXMgdGVtcGxhdGUgdXNlIEZpbGUgfCBTZXR0aW5ncyB8IEZpbGUgVGVtcGxhdGVzLgorICovCitwdWJsaWMgY2xhc3MgQnVnVGVzdCB7CisgICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oKXsKKyAgICAgICAgQmFzZUNsYXNzIHRlc3RDbGFzcyA9IG5ldyBCYXNlQ2xhc3MoKTsKKworICAgICAgICB0ZXN0Q2xhc3MuZG9Tb21ldGhpbmcoNSk7CisKKyAgICAgICAgdGVzdENsYXNzLmRvU29tZXRoaW5nRWxzZSg1KTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9zYW1lRlFOQ2xhc3Nlcy9vdmVycmlkZS9PdmVycmlkZS5pbWwgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9zYW1lRlFOQ2xhc3Nlcy9vdmVycmlkZS9PdmVycmlkZS5pbWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjFhNGM5MAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nL3NhbWVGUU5DbGFzc2VzL292ZXJyaWRlL092ZXJyaWRlLmltbApAQCAtMCwwICsxLDE0IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPG1vZHVsZSByZWxhdGl2ZVBhdGhzPSJ0cnVlIiB0eXBlPSJKQVZBX01PRFVMRSIgdmVyc2lvbj0iNCI+CisgIDxjb21wb25lbnQgbmFtZT0iTmV3TW9kdWxlUm9vdE1hbmFnZXIiIGluaGVyaXQtY29tcGlsZXItb3V0cHV0PSJ0cnVlIj4KKyAgICA8ZXhjbHVkZS1vdXRwdXQgLz4KKyAgICA8Y29udGVudCB1cmw9ImZpbGU6Ly8kTU9EVUxFX0RJUiQiPgorICAgICAgPHNvdXJjZUZvbGRlciB1cmw9ImZpbGU6Ly8kTU9EVUxFX0RJUiQvc3JjIiBpc1Rlc3RTb3VyY2U9ImZhbHNlIiAvPgorICAgIDwvY29udGVudD4KKyAgICA8b3JkZXJFbnRyeSB0eXBlPSJpbmhlcml0ZWRKZGsiIC8+CisgICAgPG9yZGVyRW50cnkgdHlwZT0ic291cmNlRm9sZGVyIiBmb3JUZXN0cz0iZmFsc2UiIC8+CisgICAgPG9yZGVyRW50cnkgdHlwZT0ibW9kdWxlIiBtb2R1bGUtbmFtZT0iQmFzZSIgZXhwb3J0ZWQ9IiIgLz4KKyAgICA8b3JkZXJFbnRyeVByb3BlcnRpZXMgLz4KKyAgPC9jb21wb25lbnQ+Cis8L21vZHVsZT4KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvc2FtZUZRTkNsYXNzZXMvb3ZlcnJpZGUvc3JjL2J1Zy90ZXN0L0Jhc2VDbGFzcy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvc2FtZUZRTkNsYXNzZXMvb3ZlcnJpZGUvc3JjL2J1Zy90ZXN0L0Jhc2VDbGFzcy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNlMTNjY2QKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9zYW1lRlFOQ2xhc3Nlcy9vdmVycmlkZS9zcmMvYnVnL3Rlc3QvQmFzZUNsYXNzLmphdmEKQEAgLTAsMCArMSwxOCBAQAorcGFja2FnZSBidWcudGVzdDsKKworLyoqCisgKiBDcmVhdGVkIGJ5IEludGVsbGlKIElERUEuCisgKiBEYXRlOiBEZWMgMTMsIDIwMDcKKyAqIFRpbWU6IDQ6MTQ6NDkgUE0KKyAqLworcHVibGljIGNsYXNzIEJhc2VDbGFzcyB7CisKKyAgICBwdWJsaWMgdm9pZCBkb1NvbWV0aGluZyhpbnQgYXJnMSkgeworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIkluIE9WRVJSSURERU4gQmFzZUNsYXNzOjpkb1NvbWV0aGluZyhpbnQgYXJnMSkiKTsKKyAgICB9CisKKworICAgIHB1YmxpYyB2b2lkIGRvU29tZXRoaW5nRWxzZShpbnQgYXJnMSkgeworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIkluIE9WRVJSSURERU4gQmFzZUNsYXNzOjpkb1NvbWV0aGluZ0Vsc2UoaW50IGFyZzEpIik7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvc2NvcGVCYXNlZC94L1NoYXJlZC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvc2NvcGVCYXNlZC94L1NoYXJlZC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBmYzc1ZTcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9zY29wZUJhc2VkL3gvU2hhcmVkLmphdmEKQEAgLTAsMCArMSwxMCBAQAorcGFja2FnZSB4OworY2xhc3MgPHN5bWJvbE5hbWUgZGVzY3I9Im51bGwiIHR5cGU9IkNMQVNTX05BTUUiIGZvcmVncm91bmQ9IjB4MDBmZmZmIiBiYWNrZ3JvdW5kPSIweDQwNDA0MCIgZWZmZWN0Y29sb3I9IjB4MDAwMGZmIiBlZmZlY3R0eXBlPSJCT1hFRCIgZm9udHR5cGU9IjIiPlNoYXJlZDwvc3ltYm9sTmFtZT4geworICA8c3ltYm9sTmFtZSBkZXNjcj0ibnVsbCIgdHlwZT0iQ0xBU1NfTkFNRSIgZm9yZWdyb3VuZD0iMHgwMGZmZmYiIGJhY2tncm91bmQ9IjB4NDA0MDQwIiBlZmZlY3Rjb2xvcj0iMHgwMDAwZmYiIGVmZmVjdHR5cGU9IkJPWEVEIiBmb250dHlwZT0iMiI+U2hhcmVkPC9zeW1ib2xOYW1lPiA8c3ltYm9sTmFtZSBkZXNjcj0ibnVsbCIgdHlwZT0iSU5TVEFOQ0VfRklFTEQiPng8L3N5bWJvbE5hbWU+ID0gbmV3IDxzeW1ib2xOYW1lIGRlc2NyPSJudWxsIiB0eXBlPSJDTEFTU19OQU1FIiBmb3JlZ3JvdW5kPSIweDAwZmZmZiIgYmFja2dyb3VuZD0iMHg0MDQwNDAiIGVmZmVjdGNvbG9yPSIweDAwMDBmZiIgZWZmZWN0dHlwZT0iQk9YRUQiIGZvbnR0eXBlPSIyIj5TaGFyZWQ8L3N5bWJvbE5hbWU+KCk7CisgIDxzeW1ib2xOYW1lIGRlc2NyPSJudWxsIiB0eXBlPSJJTlRFUkZBQ0VfTkFNRSIgZm9yZWdyb3VuZD0iMHg4MDgwODAiIGJhY2tncm91bmQ9IjB4ZmYwMGZmIiBlZmZlY3Rjb2xvcj0iMHhmZmM4MDAiIGVmZmVjdHR5cGU9IlNUUklLRU9VVCIgZm9udHR5cGU9IjEiPmphdmEudXRpbC5MaXN0PC9zeW1ib2xOYW1lPgorICA8c3ltYm9sTmFtZSBkZXNjcj0ibnVsbCIgdHlwZT0iTUVUSE9EX0RFQ0xBUkFUSU9OIj5saXN0PC9zeW1ib2xOYW1lPigKKyAgICA8c3ltYm9sTmFtZSBkZXNjcj0ibnVsbCIgdHlwZT0iSU5URVJGQUNFX05BTUUiIGZvcmVncm91bmQ9IjB4ODA4MDgwIiBiYWNrZ3JvdW5kPSIweGZmMDBmZiIgZWZmZWN0Y29sb3I9IjB4ZmZjODAwIiBlZmZlY3R0eXBlPSJTVFJJS0VPVVQiIGZvbnR0eXBlPSIxIj5qYXZhLnV0aWwuTWFwPC9zeW1ib2xOYW1lPiA8c3ltYm9sTmFtZSBkZXNjcj0ibnVsbCIgdHlwZT0iUEFSQU1FVEVSIj5tYXA8L3N5bWJvbE5hbWU+CisgICkgeworICAgcmV0dXJuIG51bGw7CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nL3Njb3BlQmFzZWQveC9YLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9zY29wZUJhc2VkL3gvWC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMxNmE4Y2QKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9zY29wZUJhc2VkL3gvWC5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKK3BhY2thZ2UgeDsKK2NsYXNzIDxzeW1ib2xOYW1lIGRlc2NyPSJudWxsIiB0eXBlPSJDTEFTU19OQU1FIiBmb3JlZ3JvdW5kPSIweDAwZmZmZiIgYmFja2dyb3VuZD0iMHg0MDQwNDAiIGVmZmVjdGNvbG9yPSIweDAwMDBmZiIgZWZmZWN0dHlwZT0iQk9YRUQiIGZvbnR0eXBlPSIyIj5YPC9zeW1ib2xOYW1lPiB7CisgIDxzeW1ib2xOYW1lIGRlc2NyPSJudWxsIiB0eXBlPSJDTEFTU19OQU1FIiBmb3JlZ3JvdW5kPSIweDAwZmZmZiIgYmFja2dyb3VuZD0iMHg0MDQwNDAiIGVmZmVjdGNvbG9yPSIweDAwMDBmZiIgZWZmZWN0dHlwZT0iQk9YRUQiIGZvbnR0eXBlPSIyIj5YPC9zeW1ib2xOYW1lPiA8c3ltYm9sTmFtZSBkZXNjcj0ibnVsbCIgdHlwZT0iSU5TVEFOQ0VfRklFTEQiPng8L3N5bWJvbE5hbWU+ID0gbmV3IDxzeW1ib2xOYW1lIGRlc2NyPSJudWxsIiB0eXBlPSJDTEFTU19OQU1FIiBmb3JlZ3JvdW5kPSIweDAwZmZmZiIgYmFja2dyb3VuZD0iMHg0MDQwNDAiIGVmZmVjdGNvbG9yPSIweDAwMDBmZiIgZWZmZWN0dHlwZT0iQk9YRUQiIGZvbnR0eXBlPSIyIj5YPC9zeW1ib2xOYW1lPigpOworICA8c3ltYm9sTmFtZSBkZXNjcj0ibnVsbCIgdHlwZT0iSU5URVJGQUNFX05BTUUiIGZvcmVncm91bmQ9IjB4ODA4MDgwIiBiYWNrZ3JvdW5kPSIweGZmMDBmZiIgZWZmZWN0Y29sb3I9IjB4ZmZjODAwIiBlZmZlY3R0eXBlPSJTVFJJS0VPVVQiIGZvbnR0eXBlPSIxIj5qYXZhLnV0aWwuTGlzdDwvc3ltYm9sTmFtZT4KKyAgPHN5bWJvbE5hbWUgZGVzY3I9Im51bGwiIHR5cGU9Ik1FVEhPRF9ERUNMQVJBVElPTiI+bGlzdDwvc3ltYm9sTmFtZT4oCisgICAgPHN5bWJvbE5hbWUgZGVzY3I9Im51bGwiIHR5cGU9IklOVEVSRkFDRV9OQU1FIiBmb3JlZ3JvdW5kPSIweDgwODA4MCIgYmFja2dyb3VuZD0iMHhmZjAwZmYiIGVmZmVjdGNvbG9yPSIweGZmYzgwMCIgZWZmZWN0dHlwZT0iU1RSSUtFT1VUIiBmb250dHlwZT0iMSI+amF2YS51dGlsLk1hcDwvc3ltYm9sTmFtZT4gPHN5bWJvbE5hbWUgZGVzY3I9Im51bGwiIHR5cGU9IlBBUkFNRVRFUiI+bWFwPC9zeW1ib2xOYW1lPgorICApIHsKKyAgIHJldHVybiBudWxsOworICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9zaW5nbGVJbXBvcnQvZC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvc2luZ2xlSW1wb3J0L2QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xM2RlYTQ2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvc2luZ2xlSW1wb3J0L2QuamF2YQpAQCAtMCwwICsxLDcgQEAKK2ltcG9ydCBwLmM7CitpbXBvcnQgcC5jLio7CisKK2NsYXNzIGQgeworIGMgYyA9IG51bGw7CisgaW5uIGlubiA9IG51bGw7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvc2luZ2xlSW1wb3J0L3AvYy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmcvc2luZ2xlSW1wb3J0L3AvYy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI1YzNiMzMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZy9zaW5nbGVJbXBvcnQvcC9jLmphdmEKQEAgLTAsMCArMSw0IEBACitwYWNrYWdlIHA7CitwdWJsaWMgY2xhc3MgYyB7CisgcHVibGljIHN0YXRpYyBjbGFzcyBpbm4ge30KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nNy9BbGxKYXZhMTVGZWF0dXJlcy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmc3L0FsbEphdmExNUZlYXR1cmVzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTRiZDBhOAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nNy9BbGxKYXZhMTVGZWF0dXJlcy5qYXZhCkBAIC0wLDAgKzEsMzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwMC0yMDEyIEpldEJyYWlucyBzLnIuby4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitpbXBvcnQgamF2YS51dGlsLkxpc3Q7CitpbXBvcnQgc3RhdGljIGphdmEubGFuZy5NYXRoLm1pbjsKKworY2xhc3MgYSB7CisgICBMaXN0PFN0cmluZz4gbDsKKworICAgcHJpdmF0ZSB2b2lkIGFzTGlzdChPYmplY3QuLi4gb2JqZWN0cykge30KKworICAgdm9pZCBmb28oKSB7CisgICAgIGZvciAoU3RyaW5nIHMgOiBsKSB7fQorCisgICAgIGZvciAoT2JqZWN0IG8gOiBsKSB7fQorCisgICAgIGFzTGlzdCgiIik7CisKKyAgICAgQm9vbGVhbiBiID0gdHJ1ZTsKKworICAgICBib29sZWFuIGIxID0gQm9vbGVhbi5UUlVFOworICAgfQorCisgICBlbnVtIGUge30KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nNy9BbWJpZ3VvdXNNZXRob2RDYWxsSURFQTk3OTgzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZzcvQW1iaWd1b3VzTWV0aG9kQ2FsbElERUE5Nzk4My5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYyNjI3OGQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZzcvQW1iaWd1b3VzTWV0aG9kQ2FsbElERUE5Nzk4My5qYXZhCkBAIC0wLDAgKzEsMjQgQEAKK2NsYXNzIFRlc3QgeworICBwdWJsaWMgc3RhdGljIHZvaWQgZm9vKGludFtdIGkxLCBpbnRbXSBpMikgeworICB9CisKKyAgcHVibGljIHN0YXRpYyA8VD4gdm9pZCBmb28oVCBpMSwgVCBpMikgeworICB9CisKKyAgcHVibGljIHN0YXRpYyBmaW5hbCB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgaW50W10gaSA9IG51bGw7CisgICAgZm9vKGksIGkpOworICB9Cit9CitjbGFzcyBUZXN0MSB7CisgIHB1YmxpYyBzdGF0aWMgdm9pZCBmb28oaW50IGkxLCBpbnQgaTIpIHsKKyAgfQorCisgIHB1YmxpYyBzdGF0aWMgPFQ+IHZvaWQgZm9vKFQgaTEsIFQgaTIpIHsKKyAgfQorCisgIHB1YmxpYyBzdGF0aWMgZmluYWwgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHRocm93cyBFeGNlcHRpb24geworICAgIGludFtdIGkgPSBudWxsOworICAgIGZvbyhpLCBpKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nNy9DbGFzc0xpdGVyYWwuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nNy9DbGFzc0xpdGVyYWwuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NzY3M2E1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmc3L0NsYXNzTGl0ZXJhbC5qYXZhCkBAIC0wLDAgKzEsMTMgQEAKK2ltcG9ydCBqYXZhLmxhbmcucmVmbGVjdC4qOworCitjbGFzcyBFeGFtcGxlIHsKKyAgICBwcml2YXRlIHZvaWQgZGVtbygpIHsKKyAgICAgICAgPGVycm9yIGRlc2NyPSJJbmNvbXBhdGlibGUgdHlwZXMuIEZvdW5kOiAnamF2YS5sYW5nLnJlZmxlY3QuVHlwZVZhcmlhYmxlPGphdmEubGFuZy5DbGFzczxjYXB0dXJlPD8gZXh0ZW5kcyBFeGFtcGxlPj4+W10nLCByZXF1aXJlZDogJ2phdmEubGFuZy5yZWZsZWN0LlR5cGVWYXJpYWJsZTxqYXZhLmxhbmcuQ2xhc3M8PyBleHRlbmRzIEV4YW1wbGU+PltdJyI+VHlwZVZhcmlhYmxlPENsYXNzPD8gZXh0ZW5kcyBFeGFtcGxlPj5bXSAgdHlwZVBhcmFtZXRlcnMgID0gIGdldENsYXNzKCkuZ2V0VHlwZVBhcmFtZXRlcnMoKTs8L2Vycm9yPgorICAgICAgICBPYmplY3QgdHlwZVBhcmFtZXRlcnMxICA9ICA8ZXJyb3IgZGVzY3I9IkluY29udmVydGlibGUgdHlwZXM7IGNhbm5vdCBjYXN0ICdqYXZhLmxhbmcucmVmbGVjdC5UeXBlVmFyaWFibGU8amF2YS5sYW5nLkNsYXNzPGNhcHR1cmU8PyBleHRlbmRzIEV4YW1wbGU+Pj5bXScgdG8gJ2phdmEubGFuZy5yZWZsZWN0LlR5cGVWYXJpYWJsZTxqYXZhLmxhbmcuQ2xhc3M8PyBleHRlbmRzIEV4YW1wbGU+PltdJyI+KFR5cGVWYXJpYWJsZTxDbGFzczw/IGV4dGVuZHMgRXhhbXBsZT4+W10pIGdldENsYXNzKCkuZ2V0VHlwZVBhcmFtZXRlcnMoKTwvZXJyb3I+OworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyBib29sZWFuIGVxdWFscyhPYmplY3Qgb2JqKSB7CisgICAgICByZXR1cm4gZ2V0Q2xhc3MoKSA9PSBvYmouZ2V0Q2xhc3MoKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZzcvRGVmYXVsdE1ldGhvZFZpc2liaWxpdHkuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nNy9EZWZhdWx0TWV0aG9kVmlzaWJpbGl0eS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRhMmMwZWUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZzcvRGVmYXVsdE1ldGhvZFZpc2liaWxpdHkuamF2YQpAQCAtMCwwICsxLDE0IEBACitpbnRlcmZhY2UgT2ZJbnQgZXh0ZW5kcyBTaW5rPEludGVnZXI+IHsKKyAgZGVmYXVsdCB2b2lkIGFjY2VwdChJbnRlZ2VyIGkpIHt9Cit9CitpbnRlcmZhY2UgU2luazxUPiBleHRlbmRzIEJsb2NrPFQ+IHsKK30KKworaW50ZXJmYWNlIEJsb2NrPFQ+IHsKKyAgcHVibGljIHZvaWQgYWNjZXB0KFQgdCk7Cit9CisKKworY2xhc3MgSGVsbG8xIGltcGxlbWVudHMgU2luazxJbnRlZ2VyPiwgT2ZJbnQge30KK2NsYXNzIEhlbGxvMiBpbXBsZW1lbnRzIE9mSW50LCBTaW5rPEludGVnZXI+e30KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmc3L0RpYW1vbmRNaXNjLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZzcvRGlhbW9uZE1pc2MuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNTE2NDdhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmc3L0RpYW1vbmRNaXNjLmphdmEKQEAgLTAsMCArMSwyMjUgQEAKK2ltcG9ydCBqYXZhLnV0aWwuQXJyYXlMaXN0OworaW1wb3J0IGphdmEudXRpbC5MaXN0OworCitjbGFzcyBUZXN0IHsKKyAgTGlzdDxTdHJpbmc+IHF1ZXVlID0gbmV3IEFycmF5TGlzdDw+KCk7CisgIEFycmF5TGlzdCBsID0gbmV3IEFycmF5TGlzdDw+KDgpOworfQorCitjbGFzcyBITUNvcHk8SywgVj4geworICBwcml2YXRlIEVudHJ5W10gdGFibGU7CisKKyAgY2xhc3MgRW50cnk8SywgVj4geworICAgIEVudHJ5KGludCBoLCBLIGssIFYgdiwgRW50cnk8SywgVj4gbikgeworICAgIH0KKyAgfQorCisgIHZvaWQgYWRkRW50cnkoaW50IGhhc2gsIEsga2V5LCBWIHZhbHVlLCBpbnQgYnVja2V0SW5kZXgpIHsKKyAgICBFbnRyeTxLLCBWPiBlID0gdGFibGVbYnVja2V0SW5kZXhdOworICAgIHRhYmxlW2J1Y2tldEluZGV4XSA9IG5ldyBFbnRyeTw+KGhhc2gsIGtleSwgdmFsdWUsIGUpOworICB9Cit9CisKK2NsYXNzIEREIHsKKyAgICBQMTxQPFN0cmluZz4+IGwgPSBuZXcgTDxTdHJpbmc+KCkgeworICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgdm9pZCBmKCkgeworICAgICAgICB9CisgICAgfTsKKworICAgIFAxPFA8U3RyaW5nPj4gbDEgPSBuZXcgTDw+KCk7CisKKyAgICBQMTxQPFN0cmluZz4+IGZvbygpIHsKKyAgICAgICAgcmV0dXJuIG5ldyBMPD4oKTsKKyAgICB9CisKKyAgICBTdHJpbmcgcyA9ICIiOworfQorCitjbGFzcyBMPEs+IGV4dGVuZHMgUDE8UDxLPj4geworICAgIHZvaWQgZigpIHsKKyAgICB9Cit9CisKK2NsYXNzIFAxPFAxVD4gZXh0ZW5kcyBQPFAxVD4geworfQorCitjbGFzcyBQPFBUPiB7Cit9CisKKworY2xhc3MgVGVzdDEgeworICB2b2lkIGJhcigpIHsKKyAgICBmb288ZXJyb3IgZGVzY3I9Iidmb28oRjxGPGphdmEubGFuZy5TdHJpbmc+PiknIGluICdUZXN0MScgY2Fubm90IGJlIGFwcGxpZWQgdG8gJyhGRjxqYXZhLmxhbmcuT2JqZWN0PiknIj4obmV3IEZGPD4oKSk8L2Vycm9yPjsKKyAgfQorCisgIHZvaWQgZm9vKEY8RjxTdHJpbmc+PiBwKSB7fQorfQorCitjbGFzcyBGRjxYPiBleHRlbmRzIEY8WD57fQorY2xhc3MgRjxUPiB7fQorCitjbGFzcyBNeVRlc3QgeworICAgICBzdGF0aWMgY2xhc3MgRm9vPFg+IHsKKyAgICAgICAgRm9vKFggeCkge30KKyAgICAgfQorCisgICAgIHN0YXRpYyBpbnRlcmZhY2UgQmFzZTxZPiB7fQorICAgICBzdGF0aWMgY2xhc3MgQSBleHRlbmRzIEV4Y2VwdGlvbiBpbXBsZW1lbnRzIEJhc2U8U3RyaW5nPiB7fQorICAgICBzdGF0aWMgY2xhc3MgQiBleHRlbmRzIEV4Y2VwdGlvbiBpbXBsZW1lbnRzIEJhc2U8SW50ZWdlcj4ge30KKworICAgICB2b2lkIG0oKSB0aHJvd3MgQiB7CisgICAgICAgICB0cnkgeworICAgICAgICAgICAgIGlmICh0cnVlKSB7CisgICAgICAgICAgICAgICAgIHRocm93IG5ldyBBKCk7CisgICAgICAgICAgICAgfQorICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgQigpOworICAgICAgICAgICAgIH0KKyAgICAgICAgIH0gY2F0Y2ggKEEgZXgpIHsKKyAgICAgICAgICAgICBGb288PyBleHRlbmRzIEJhc2U8U3RyaW5nPj4gZm9vMSA9IG5ldyBGb288PihleCk7ICAvLyBvaworICAgICAgICAgICAgIDxlcnJvciBkZXNjcj0iSW5jb21wYXRpYmxlIHR5cGVzLiBGb3VuZDogJ015VGVzdC5Gb288TXlUZXN0LkE+JywgcmVxdWlyZWQ6ICdNeVRlc3QuRm9vPE15VGVzdC5CYXNlPGphdmEubGFuZy5TdHJpbmc+PiciPkZvbzxCYXNlPFN0cmluZz4+IGZvbzIgPSBuZXcgRm9vPD4oZXgpOzwvZXJyb3I+ICAvLyBzaG91bGQgYmUgZXJyb3IKKyAgICAgICAgIH0KKyAgICAgfQorfQorCitjbGFzcyBOb25QYXJhbWV0ZXJpemVkIHsKKyAgdm9pZCBmb28oKSB7CisgICAgbmV3IE5vblBhcmFtZXRlcml6ZWQ8PGVycm9yIGRlc2NyPSJEaWFtb25kIG9wZXJhdG9yIGlzIG5vdCBhcHBsaWNhYmxlIGZvciBub24tcGFyYW1ldGVyaXplZCB0eXBlcyI+PC9lcnJvcj4+KCk7CisgIH0KK30KKworCitpbnRlcmZhY2UgSTxUPiB7CisgIFQgbSgpOworfQorCitjbGFzcyBGSTEgeworICBJPD8gZXh0ZW5kcyBTdHJpbmc+IGkxID0gbmV3IEk8PGVycm9yIGRlc2NyPSJDYW5ub3QgdXNlICcnPD4nJyB3aXRoIGFub255bW91cyBpbm5lciBjbGFzc2VzIj48L2Vycm9yPj4oKSB7CisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIDxlcnJvciBkZXNjcj0iJ20oKScgaW4gJ0Fub255bW91cyBjbGFzcyBkZXJpdmVkIGZyb20gSScgY2xhc2hlcyB3aXRoICdtKCknIGluICdJJzsgYXR0ZW1wdGluZyB0byB1c2UgaW5jb21wYXRpYmxlIHJldHVybiB0eXBlIj5TdHJpbmc8L2Vycm9yPiBtKCkgeworICAgICAgcmV0dXJuIG51bGw7CisgICAgfQorICB9OworCisgIEk8Pz4gaTIgPSBuZXcgSTw8ZXJyb3IgZGVzY3I9IkNhbm5vdCB1c2UgJyc8PicnIHdpdGggYW5vbnltb3VzIGlubmVyIGNsYXNzZXMiPjwvZXJyb3I+PigpIHsKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgPGVycm9yIGRlc2NyPSInbSgpJyBpbiAnQW5vbnltb3VzIGNsYXNzIGRlcml2ZWQgZnJvbSBJJyBjbGFzaGVzIHdpdGggJ20oKScgaW4gJ0knOyBhdHRlbXB0aW5nIHRvIHVzZSBpbmNvbXBhdGlibGUgcmV0dXJuIHR5cGUiPk9iamVjdDwvZXJyb3I+IG0oKSB7CisgICAgICByZXR1cm4gbnVsbDsKKyAgICB9CisgIH07Cit9CisKK2NsYXNzIFN1cGVyPFgsWT4geworICAgIHByaXZhdGUgU3VwZXIoSW50ZWdlciBpLCBZIHksIFggeCkge30KKyAgICBwdWJsaWMgU3VwZXIoTnVtYmVyIG4sIFggeCwgWSB5KSB7fQorfQorCitjbGFzcyBUZXN0TXlTdXBlciB7CisgICAgU3VwZXI8U3RyaW5nLEludGVnZXI+IHNzaTEgPSBuZXcgU3VwZXI8PigxLCAiIiwgMik7Cit9CisKK2NsYXNzIFRlc3RMb2NhbDxYPiB7CisgICAgY2xhc3MgTWVtYmVyIHsgfQorICAgIHN0YXRpYyBjbGFzcyBOZXN0ZWQge30KKworICAgIHZvaWQgdGVzdCgpIHsKKyAgICAgICAgY2xhc3MgTG9jYWwge30KKworICAgICAgICBNZW1iZXIgbSA9IG5ldyBNZW1iZXI8PGVycm9yIGRlc2NyPSJEaWFtb25kIG9wZXJhdG9yIGlzIG5vdCBhcHBsaWNhYmxlIGZvciBub24tcGFyYW1ldGVyaXplZCB0eXBlcyI+PC9lcnJvcj4+KCk7CisgICAgICAgIE5lc3RlZCBuID0gbmV3IE5lc3RlZDw8ZXJyb3IgZGVzY3I9IkRpYW1vbmQgb3BlcmF0b3IgaXMgbm90IGFwcGxpY2FibGUgZm9yIG5vbi1wYXJhbWV0ZXJpemVkIHR5cGVzIj48L2Vycm9yPj4oKTsKKyAgICAgICAgTG9jYWwgbCA9IG5ldyBMb2NhbDw8ZXJyb3IgZGVzY3I9IkRpYW1vbmQgb3BlcmF0b3IgaXMgbm90IGFwcGxpY2FibGUgZm9yIG5vbi1wYXJhbWV0ZXJpemVkIHR5cGVzIj48L2Vycm9yPj4oKTsKKyAgICB9Cit9CisKK2NsYXNzIFF1YWxpZmllZFRlc3QgeworICBqYXZhLnV0aWwuTWFwPFN0cmluZywgU3RyaW5nPiBzID0gbmV3IGphdmEudXRpbC5IYXNoTWFwPD4oKTsKK30KKworCitjbGFzcyBUWiB7CisKK30KKworY2xhc3MgUGFyZW50aFRlc3Q8VCBleHRlbmRzIFRaPiB7CisgICAgcHVibGljIFBhcmVudGhUZXN0KFQgeCkgeworCisgICAgfQorCisgICAgcHVibGljIFQgeiA9IG51bGw7CisKKyAgICBwdWJsaWMgaW50IGEoKSB7CisgICAgICAgIFBhcmVudGhUZXN0PFQ+IHggPSAobmV3IFBhcmVudGhUZXN0PD4obnVsbCkpOyAvL3JlZCBjb2RlIGlzIGhlcmUKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorfQorCitjbGFzcyBUZXN0V2lsZGNhcmRJbmZlcmVuY2UgeworICBpbnRlcmZhY2UgQTxUPiB7CisgIH0KKyAgCisgIGNsYXNzIEI8Vj4gaW1wbGVtZW50cyBBPFY+IHsKKyAgICBCKEM8Vj4gdikgeworICAgIH0KKyAgfQorICAKKyAgY2xhc3MgQzxFPiB7fQorICAKKyAgY2xhc3MgVSB7CisgICAgdm9pZCBmb28oKSB7CisgICAgICBDPD8gZXh0ZW5kcyBOdW1iZXI+IHggPSBudWxsOworICAgICAgQTw/IGV4dGVuZHMgTnVtYmVyPiB5ID0gbmV3IEI8Pih4KTsKKyAgICB9CisgIH0KK30KKworY2xhc3MgUHJlZGVmaW5lZEVycm9yc092ZXJSYXc8VD4geworICA8VT4gUHJlZGVmaW5lZEVycm9yc092ZXJSYXcoVCB0KSB7CisgIH0KKworICB2b2lkIHRlc3QoKSB7CisgICAgUHJlZGVmaW5lZEVycm9yc092ZXJSYXcgbWMgPSBuZXcgPEJvb2xlYW4+UHJlZGVmaW5lZEVycm9yc092ZXJSYXc8PGVycm9yIGRlc2NyPSJDYW5ub3QgdXNlIGRpYW1vbmRzIHdpdGggZXhwbGljaXQgdHlwZSBwYXJhbWV0ZXJzIGZvciBjb25zdHJ1Y3RvciI+PC9lcnJvcj4+KCIiKTsKKyAgfQorfQorCitjbGFzcyBPdXRlciB7CisgICAgY2xhc3MgSW5uZXI8VD4ge30KK30KK2NsYXNzIE91dGVyMSB7fQorCitjbGFzcyBPdXRlcjI8Sz4geworICAgIGNsYXNzIElubmVyMjxUPiB7fQorfQorCitjbGFzcyBBbm90aGVyIHsKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CisgICAgICAgIE91dGVyIG8gPSBuZXcgT3V0ZXIoKTsKKyAgICAgICAgT3V0ZXIuSW5uZXI8U3RyaW5nPiBpID0gby5uZXcgSW5uZXI8PigpOworICAgICAgICBPdXRlci5Jbm5lcjxTdHJpbmc+IGkxID0gbSgpLm5ldyBJbm5lcjw+KCk7CisgICAgICAgIE91dGVyLklubmVyPFN0cmluZz4gaTIgPSBtMSgpLm5ldyBJbm5lcjw+KCk7CisKKyAgICAgICAgT3V0ZXIuSW5uZXI8U3RyaW5nPiBpMyA9IG0yKCkubmV3IDxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdJbm5lciciPklubmVyPC9lcnJvcj48PigpOworCisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihpKTsKKworICAgICAgICA8ZXJyb3IgZGVzY3I9IkluY29tcGF0aWJsZSB0eXBlcy4gRm91bmQ6ICdPdXRlcjIuSW5uZXIyPGphdmEubGFuZy5TdHJpbmc+JywgcmVxdWlyZWQ6ICdPdXRlcjIuSW5uZXIyPGphdmEubGFuZy5TdHJpbmc+JyI+T3V0ZXIyPEludGVnZXI+LklubmVyMjxTdHJpbmc+IGk1ID0gbmV3IE91dGVyMjw+KCkubmV3IElubmVyMjw+KCk7PC9lcnJvcj4KKyAgICB9CisKKyAgc3RhdGljIE91dGVyIG0oKSB7cmV0dXJuIG51bGw7fQorICBzdGF0aWMgPFQgZXh0ZW5kcyBPdXRlcj4gVCBtMSgpIHtyZXR1cm4gbnVsbDt9CisgIHN0YXRpYyA8VD4gVCBtMigpIHtyZXR1cm4gbnVsbDt9CisgIAorfQorCitjbGFzcyBUeXBlUGFyYW1zRXh0ZW5kc0xpc3QgeworCisgICAgICAgIHsKKyAgICAgICAgICAgICAgIG5ldyBUeXBlV2l0aEdlbmVyaWM8PigpOworICAgICAgICB9CisKKyAgICAgICAgcHJpdmF0ZSBzdGF0aWMgY2xhc3MgQSB7fQorCisgICAgICAgIHByaXZhdGUgc3RhdGljIGNsYXNzIFR5cGVXaXRoR2VuZXJpYzxUIGV4dGVuZHMgQT4gZXh0ZW5kcyBBcnJheUxpc3Q8VD4geworCisgICAgICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nNy9EaWFtb25kTmVnMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmc3L0RpYW1vbmROZWcxLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2Q5YzdlMQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nNy9EaWFtb25kTmVnMS5qYXZhCkBAIC0wLDAgKzEsMTggQEAKK2NsYXNzIE5lZzAxPFggZXh0ZW5kcyBOdW1iZXI+IHsKKworICAgIE5lZzAxKFggeCkge30KKworICAgIDxaPiBOZWcwMShYIHgsIFogeikge30KKworICAgIHZvaWQgdGVzdCgpIHsKKyAgICAgICAgTmVnMDE8PGVycm9yIGRlc2NyPSJUeXBlIHBhcmFtZXRlciAnamF2YS5sYW5nLlN0cmluZycgaXMgbm90IHdpdGhpbiBpdHMgYm91bmQ7IHNob3VsZCBleHRlbmQgJ2phdmEubGFuZy5OdW1iZXInIj5TdHJpbmc8L2Vycm9yPj4gbjEgPSBuZXcgTmVnMDE8PjxlcnJvciBkZXNjcj0iJ05lZzAxKGphdmEubGFuZy5TdHJpbmcgJiBqYXZhLmxhbmcuTnVtYmVyKScgaW4gJ05lZzAxJyBjYW5ub3QgYmUgYXBwbGllZCB0byAnKGphdmEubGFuZy5TdHJpbmcpJyI+KCIiKTwvZXJyb3I+OworICAgICAgICBOZWcwMTw8ZXJyb3IgZGVzY3I9IlR5cGUgcGFyYW1ldGVyICc/IGV4dGVuZHMgU3RyaW5nJyBpcyBub3Qgd2l0aGluIGl0cyBib3VuZDsgc2hvdWxkIGV4dGVuZCAnamF2YS5sYW5nLk51bWJlciciPj8gZXh0ZW5kcyBTdHJpbmc8L2Vycm9yPj4gbjIgPSBuZXcgTmVnMDE8PjxlcnJvciBkZXNjcj0iJ05lZzAxKGphdmEubGFuZy5TdHJpbmcgJiBqYXZhLmxhbmcuTnVtYmVyKScgaW4gJ05lZzAxJyBjYW5ub3QgYmUgYXBwbGllZCB0byAnKGphdmEubGFuZy5TdHJpbmcpJyI+KCIiKTwvZXJyb3I+OworICAgICAgICBOZWcwMTw/PiBuMyA9IG5ldyBOZWcwMTw+PGVycm9yIGRlc2NyPSInTmVnMDEoamF2YS5sYW5nLlN0cmluZyAmIGphdmEubGFuZy5OdW1iZXIpJyBpbiAnTmVnMDEnIGNhbm5vdCBiZSBhcHBsaWVkIHRvICcoamF2YS5sYW5nLlN0cmluZyknIj4oIiIpPC9lcnJvcj47CisgICAgICAgIE5lZzAxPDxlcnJvciBkZXNjcj0iVHlwZSBwYXJhbWV0ZXIgJz8gc3VwZXIgU3RyaW5nJyBpcyBub3Qgd2l0aGluIGl0cyBib3VuZDsgc2hvdWxkIGV4dGVuZCAnamF2YS5sYW5nLk51bWJlciciPj8gc3VwZXIgU3RyaW5nPC9lcnJvcj4+IG40ID0gbmV3IE5lZzAxPD48ZXJyb3IgZGVzY3I9IidOZWcwMShqYXZhLmxhbmcuU3RyaW5nICYgamF2YS5sYW5nLk51bWJlciknIGluICdOZWcwMScgY2Fubm90IGJlIGFwcGxpZWQgdG8gJyhqYXZhLmxhbmcuU3RyaW5nKSciPigiIik8L2Vycm9yPjsKKworICAgICAgICBOZWcwMTw8ZXJyb3IgZGVzY3I9IlR5cGUgcGFyYW1ldGVyICdqYXZhLmxhbmcuU3RyaW5nJyBpcyBub3Qgd2l0aGluIGl0cyBib3VuZDsgc2hvdWxkIGV4dGVuZCAnamF2YS5sYW5nLk51bWJlciciPlN0cmluZzwvZXJyb3I+PiBuNSA9IG5ldyBOZWcwMTw+PGVycm9yIGRlc2NyPSInTmVnMDEoamF2YS5sYW5nLlN0cmluZyAmIGphdmEubGFuZy5OdW1iZXIsIGphdmEubGFuZy5TdHJpbmcpJyBpbiAnTmVnMDEnIGNhbm5vdCBiZSBhcHBsaWVkIHRvICcoamF2YS5sYW5nLlN0cmluZywgamF2YS5sYW5nLlN0cmluZyknIj4oIiIsICIiKTwvZXJyb3I+OworICAgICAgICBOZWcwMTw8ZXJyb3IgZGVzY3I9IlR5cGUgcGFyYW1ldGVyICc/IGV4dGVuZHMgU3RyaW5nJyBpcyBub3Qgd2l0aGluIGl0cyBib3VuZDsgc2hvdWxkIGV4dGVuZCAnamF2YS5sYW5nLk51bWJlciciPj8gZXh0ZW5kcyBTdHJpbmc8L2Vycm9yPj4gbjYgPSBuZXcgTmVnMDE8PjxlcnJvciBkZXNjcj0iJ05lZzAxKGphdmEubGFuZy5TdHJpbmcgJiBqYXZhLmxhbmcuTnVtYmVyLCBqYXZhLmxhbmcuU3RyaW5nKScgaW4gJ05lZzAxJyBjYW5ub3QgYmUgYXBwbGllZCB0byAnKGphdmEubGFuZy5TdHJpbmcsIGphdmEubGFuZy5TdHJpbmcpJyI+KCIiLCAiIik8L2Vycm9yPjsKKyAgICAgICAgTmVnMDE8Pz4gbjcgPSBuZXcgTmVnMDE8PjxlcnJvciBkZXNjcj0iJ05lZzAxKGphdmEubGFuZy5TdHJpbmcgJiBqYXZhLmxhbmcuTnVtYmVyLCBqYXZhLmxhbmcuU3RyaW5nKScgaW4gJ05lZzAxJyBjYW5ub3QgYmUgYXBwbGllZCB0byAnKGphdmEubGFuZy5TdHJpbmcsIGphdmEubGFuZy5TdHJpbmcpJyI+KCIiLCAiIik8L2Vycm9yPjsKKyAgICAgICAgPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ0ZvbyciPkZvbzwvZXJyb3I+PD8gc3VwZXIgU3RyaW5nPiBuOCA9IG5ldyBOZWcwMTw+PGVycm9yIGRlc2NyPSInTmVnMDEoamF2YS5sYW5nLlN0cmluZyAmIGphdmEubGFuZy5OdW1iZXIsIGphdmEubGFuZy5TdHJpbmcpJyBpbiAnTmVnMDEnIGNhbm5vdCBiZSBhcHBsaWVkIHRvICcoamF2YS5sYW5nLlN0cmluZywgamF2YS5sYW5nLlN0cmluZyknIj4oIiIsICIiKTwvZXJyb3I+OworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZzcvRGlhbW9uZE5lZzEwLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZzcvRGlhbW9uZE5lZzEwLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODZiNzNhOQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nNy9EaWFtb25kTmVnMTAuamF2YQpAQCAtMCwwICsxLDcgQEAKK2NsYXNzIE5lZzEwIHsKKyAgICBzdGF0aWMgY2xhc3MgRm9vPFg+IHsKKyAgICAgICAgRm9vKFggeCkge30KKyAgICB9CisKKyAgICA8ZXJyb3IgZGVzY3I9IkluY29tcGF0aWJsZSB0eXBlcy4gRm91bmQ6ICdOZWcxMC5Gb288amF2YS5sYW5nLkludGVnZXI+JywgcmVxdWlyZWQ6ICdOZWcxMC5Gb288amF2YS5sYW5nLk51bWJlcj4nIj5Gb288TnVtYmVyPiBmdyA9IG5ldyBGb288PigxKTs8L2Vycm9yPgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nNy9EaWFtb25kTmVnMTEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nNy9EaWFtb25kTmVnMTEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZTMyZTFhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmc3L0RpYW1vbmROZWcxMS5qYXZhCkBAIC0wLDAgKzEsOCBAQAorY2xhc3MgTmVnMTEgeworCisgICAgdm9pZCB0ZXN0KCkgeworICAgICAgICBjbGFzcyBGb288WCBleHRlbmRzIE51bWJlcj4geyB9CisgICAgICAgIEZvbzw/PiBmMSA9IG5ldyA8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnVW5kZWNsYXJlZE5hbWUnIj5VbmRlY2xhcmVkTmFtZTwvZXJyb3I+PD4oKTsgLy90aGlzIGlzIGRlbGliZXJhdGU6IGFpbSBpcyB0byB0ZXN0IGVycm9uZW91cyBwYXRoCisgICAgICAgIEZvbzw/PiBmMiA9IG5ldyA8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnVW5kZWNsYXJlZE5hbWUnIj5VbmRlY2xhcmVkTmFtZTwvZXJyb3I+PD4oKSB7fTsgLy90aGlzIGlzIGRlbGliZXJhdGU6IGFpbSBpcyB0byB0ZXN0IGVycm9uZW91cyBwYXRoCisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmc3L0RpYW1vbmROZWcxMi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmc3L0RpYW1vbmROZWcxMi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIzYzVlZTIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZzcvRGlhbW9uZE5lZzEyLmphdmEKQEAgLTAsMCArMSwxMCBAQAorY2xhc3MgTmVnMTIgeworCisgICAgc3RhdGljIGNsYXNzIEZvbzxYPiB7CisgICAgICAgIDxUPiBGb28oVCB0KSB7fQorICAgIH0KKworICAgIEZvbzxJbnRlZ2VyPiBmaTEgPSBuZXcgPFN0cmluZz4gRm9vPDxlcnJvciBkZXNjcj0iQ2Fubm90IHVzZSBkaWFtb25kcyB3aXRoIGV4cGxpY2l0IHR5cGUgcGFyYW1ldGVycyBmb3IgY29uc3RydWN0b3IiPjwvZXJyb3I+PigxKTsKKyAgICBGb288SW50ZWdlcj4gZmkyID0gbmV3IDw8ZXJyb3IgZGVzY3I9IkFjdHVhbCB0eXBlIGFyZ3VtZW50IGFuZCBpbmZlcnJlZCB0eXBlIGNvbnRyYWRpY3QgZWFjaCBvdGhlciI+U3RyaW5nPC9lcnJvcj4+IEZvbzxJbnRlZ2VyPigxKTsKKyAgICBGb288SW50ZWdlcj4gZmkzID0gbmV3IEZvbzxJbnRlZ2VyPigxKTsKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nNy9EaWFtb25kTmVnMTMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nNy9EaWFtb25kTmVnMTMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZGQ4NjU5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmc3L0RpYW1vbmROZWcxMy5qYXZhCkBAIC0wLDAgKzEsOSBAQAorY2xhc3MgTmVnMTMgeworCisgICAgc3RhdGljIGNsYXNzIEZvbzxYPiB7CisgICAgICAgIDxUPiBGb28oVCB0KSB7fQorICAgIH0KKworICAgIEZvbzxJbnRlZ2VyPiBmaTEgPSBuZXcgPFN0cmluZywgSW50ZWdlcj4gRm9vPDxlcnJvciBkZXNjcj0iQ2Fubm90IHVzZSBkaWFtb25kcyB3aXRoIGV4cGxpY2l0IHR5cGUgcGFyYW1ldGVycyBmb3IgY29uc3RydWN0b3IiPjwvZXJyb3I+PigiIik7CisgICAgRm9vPEludGVnZXI+IGZpMiA9IG5ldyA8ZXJyb3IgZGVzY3I9Ildyb25nIG51bWJlciBvZiB0eXBlIGFyZ3VtZW50czogMjsgcmVxdWlyZWQ6IDEiPjxTdHJpbmcsIEludGVnZXI+PC9lcnJvcj4gRm9vPEludGVnZXI+KCIiKTsKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nNy9EaWFtb25kTmVnMTQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nNy9EaWFtb25kTmVnMTQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mOTU4NTY5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmc3L0RpYW1vbmROZWcxNC5qYXZhCkBAIC0wLDAgKzEsOSBAQAorY2xhc3MgTmVnMTQgeworCisgICAgc3RhdGljIGNsYXNzIEZvbzxYPiB7CisgICAgICAgIDxUIGV4dGVuZHMgSW50ZWdlcj4gRm9vKFQgdCkge30KKyAgICB9CisKKyAgICBGb288SW50ZWdlcj4gZmkxID0gbmV3IDxTdHJpbmc+IEZvbzw8ZXJyb3IgZGVzY3I9IkNhbm5vdCB1c2UgZGlhbW9uZHMgd2l0aCBleHBsaWNpdCB0eXBlIHBhcmFtZXRlcnMgZm9yIGNvbnN0cnVjdG9yIj48L2Vycm9yPj4oMSk7CisgICAgRm9vPEludGVnZXI+IGZpMiA9IG5ldyA8PGVycm9yIGRlc2NyPSJBY3R1YWwgdHlwZSBhcmd1bWVudCBhbmQgaW5mZXJyZWQgdHlwZSBjb250cmFkaWN0IGVhY2ggb3RoZXIiPlN0cmluZzwvZXJyb3I+PiBGb288SW50ZWdlcj4oMSk7Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZzcvRGlhbW9uZE5lZzE1LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZzcvRGlhbW9uZE5lZzE1LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTdlZWU0NgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nNy9EaWFtb25kTmVnMTUuamF2YQpAQCAtMCwwICsxLDEzIEBACitjbGFzcyBQb3M4IHsKKworICAgIHN0YXRpYyBjbGFzcyBGb288WD4geworICAgICAgICBGb28oWCB0KSB7fQorICAgIH0KKworICAgIEZvbzxJbnRlZ2VyPiBmaTEgPSBuZXcgRm9vPD4oMSk7CisgICAgRm9vPEludGVnZXI+IGZpMiA9IG5ldyBGb288SW50ZWdlcj4oMSk7CisgICAgRm9vPEludGVnZXI+IGZpMyA9IG5ldyA8U3RyaW5nPiBGb288PGVycm9yIGRlc2NyPSJDYW5ub3QgdXNlIGRpYW1vbmRzIHdpdGggZXhwbGljaXQgdHlwZSBwYXJhbWV0ZXJzIGZvciBjb25zdHJ1Y3RvciI+PC9lcnJvcj4+KDEpOworICAgIEZvbzxJbnRlZ2VyPiBmaTQgPSBuZXcgPFN0cmluZz4gRm9vPEludGVnZXI+KDEpOworICAgIEZvbzxJbnRlZ2VyPiBmaTUgPSBuZXcgPFN0cmluZywgU3RyaW5nPiBGb288PGVycm9yIGRlc2NyPSJDYW5ub3QgdXNlIGRpYW1vbmRzIHdpdGggZXhwbGljaXQgdHlwZSBwYXJhbWV0ZXJzIGZvciBjb25zdHJ1Y3RvciI+PC9lcnJvcj4+KDEpOworICAgIEZvbzxJbnRlZ2VyPiBmaTYgPSBuZXcgPFN0cmluZywgU3RyaW5nPiBGb288SW50ZWdlcj4oMSk7Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZzcvRGlhbW9uZE5lZzIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nNy9EaWFtb25kTmVnMi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYxYTJmNzUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZzcvRGlhbW9uZE5lZzIuamF2YQpAQCAtMCwwICsxLDMxIEBACitjbGFzcyBOZWcwMiB7CisKKyAgICBzdGF0aWMgY2xhc3MgRm9vPFggZXh0ZW5kcyBOdW1iZXI+IHsKKyAgICAgICAgRm9vKFggeCkge30KKyAgICAgICAgPFo+IEZvbyhYIHgsIFogeikge30KKyAgICB9CisKKyAgICB2b2lkIHRlc3RTaW1wbGUoKSB7CisgICAgICAgIEZvbzw8ZXJyb3IgZGVzY3I9IlR5cGUgcGFyYW1ldGVyICdqYXZhLmxhbmcuU3RyaW5nJyBpcyBub3Qgd2l0aGluIGl0cyBib3VuZDsgc2hvdWxkIGV4dGVuZCAnamF2YS5sYW5nLk51bWJlciciPlN0cmluZzwvZXJyb3I+PiBmMSA9IG5ldyBGb288PjxlcnJvciBkZXNjcj0iJ0ZvbyhqYXZhLmxhbmcuU3RyaW5nICYgamF2YS5sYW5nLk51bWJlciknIGluICdOZWcwMi5Gb28nIGNhbm5vdCBiZSBhcHBsaWVkIHRvICcoamF2YS5sYW5nLlN0cmluZyknIj4oIiIpPC9lcnJvcj47CisgICAgICAgIEZvbzw8ZXJyb3IgZGVzY3I9IlR5cGUgcGFyYW1ldGVyICc/IGV4dGVuZHMgU3RyaW5nJyBpcyBub3Qgd2l0aGluIGl0cyBib3VuZDsgc2hvdWxkIGV4dGVuZCAnamF2YS5sYW5nLk51bWJlciciPj8gZXh0ZW5kcyBTdHJpbmc8L2Vycm9yPj4gZjIgPSBuZXcgRm9vPD48ZXJyb3IgZGVzY3I9IidGb28oamF2YS5sYW5nLlN0cmluZyAmIGphdmEubGFuZy5OdW1iZXIpJyBpbiAnTmVnMDIuRm9vJyBjYW5ub3QgYmUgYXBwbGllZCB0byAnKGphdmEubGFuZy5TdHJpbmcpJyI+KCIiKTwvZXJyb3I+OworICAgICAgICBGb288Pz4gZjMgPSBuZXcgRm9vPD48ZXJyb3IgZGVzY3I9IidGb28oamF2YS5sYW5nLlN0cmluZyAmIGphdmEubGFuZy5OdW1iZXIpJyBpbiAnTmVnMDIuRm9vJyBjYW5ub3QgYmUgYXBwbGllZCB0byAnKGphdmEubGFuZy5TdHJpbmcpJyI+KCIiKTwvZXJyb3I+OworICAgICAgICBGb288PGVycm9yIGRlc2NyPSJUeXBlIHBhcmFtZXRlciAnPyBzdXBlciBTdHJpbmcnIGlzIG5vdCB3aXRoaW4gaXRzIGJvdW5kOyBzaG91bGQgZXh0ZW5kICdqYXZhLmxhbmcuTnVtYmVyJyI+PyBzdXBlciBTdHJpbmc8L2Vycm9yPj4gZjQgPSBuZXcgRm9vPD48ZXJyb3IgZGVzY3I9IidGb28oamF2YS5sYW5nLlN0cmluZyAmIGphdmEubGFuZy5OdW1iZXIpJyBpbiAnTmVnMDIuRm9vJyBjYW5ub3QgYmUgYXBwbGllZCB0byAnKGphdmEubGFuZy5TdHJpbmcpJyI+KCIiKTwvZXJyb3I+OworCisgICAgICAgIEZvbzw8ZXJyb3IgZGVzY3I9IlR5cGUgcGFyYW1ldGVyICdqYXZhLmxhbmcuU3RyaW5nJyBpcyBub3Qgd2l0aGluIGl0cyBib3VuZDsgc2hvdWxkIGV4dGVuZCAnamF2YS5sYW5nLk51bWJlciciPlN0cmluZzwvZXJyb3I+PiBmNSA9IG5ldyBGb288PjxlcnJvciBkZXNjcj0iJ0ZvbyhqYXZhLmxhbmcuU3RyaW5nICYgamF2YS5sYW5nLk51bWJlciwgamF2YS5sYW5nLlN0cmluZyknIGluICdOZWcwMi5Gb28nIGNhbm5vdCBiZSBhcHBsaWVkIHRvICcoamF2YS5sYW5nLlN0cmluZywgamF2YS5sYW5nLlN0cmluZyknIj4oIiIsICIiKTwvZXJyb3I+OworICAgICAgICBGb288PGVycm9yIGRlc2NyPSJUeXBlIHBhcmFtZXRlciAnPyBleHRlbmRzIFN0cmluZycgaXMgbm90IHdpdGhpbiBpdHMgYm91bmQ7IHNob3VsZCBleHRlbmQgJ2phdmEubGFuZy5OdW1iZXInIj4/IGV4dGVuZHMgU3RyaW5nPC9lcnJvcj4+IGY2ID0gbmV3IEZvbzw+PGVycm9yIGRlc2NyPSInRm9vKGphdmEubGFuZy5TdHJpbmcgJiBqYXZhLmxhbmcuTnVtYmVyLCBqYXZhLmxhbmcuU3RyaW5nKScgaW4gJ05lZzAyLkZvbycgY2Fubm90IGJlIGFwcGxpZWQgdG8gJyhqYXZhLmxhbmcuU3RyaW5nLCBqYXZhLmxhbmcuU3RyaW5nKSciPigiIiwgIiIpPC9lcnJvcj47CisgICAgICAgIEZvbzw/PiBmNyA9IG5ldyBGb288PjxlcnJvciBkZXNjcj0iJ0ZvbyhqYXZhLmxhbmcuU3RyaW5nICYgamF2YS5sYW5nLk51bWJlciwgamF2YS5sYW5nLlN0cmluZyknIGluICdOZWcwMi5Gb28nIGNhbm5vdCBiZSBhcHBsaWVkIHRvICcoamF2YS5sYW5nLlN0cmluZywgamF2YS5sYW5nLlN0cmluZyknIj4oIiIsICIiKTwvZXJyb3I+OworICAgICAgICBGb288PGVycm9yIGRlc2NyPSJUeXBlIHBhcmFtZXRlciAnPyBzdXBlciBTdHJpbmcnIGlzIG5vdCB3aXRoaW4gaXRzIGJvdW5kOyBzaG91bGQgZXh0ZW5kICdqYXZhLmxhbmcuTnVtYmVyJyI+PyBzdXBlciBTdHJpbmc8L2Vycm9yPj4gZjggPSBuZXcgRm9vPD48ZXJyb3IgZGVzY3I9IidGb28oamF2YS5sYW5nLlN0cmluZyAmIGphdmEubGFuZy5OdW1iZXIsIGphdmEubGFuZy5TdHJpbmcpJyBpbiAnTmVnMDIuRm9vJyBjYW5ub3QgYmUgYXBwbGllZCB0byAnKGphdmEubGFuZy5TdHJpbmcsIGphdmEubGFuZy5TdHJpbmcpJyI+KCIiLCAiIik8L2Vycm9yPjsKKyAgICB9CisKKyAgICB2b2lkIHRlc3RRdWFsaWZpZWQoKSB7CisgICAgICAgIEZvbzw8ZXJyb3IgZGVzY3I9IlR5cGUgcGFyYW1ldGVyICdqYXZhLmxhbmcuU3RyaW5nJyBpcyBub3Qgd2l0aGluIGl0cyBib3VuZDsgc2hvdWxkIGV4dGVuZCAnamF2YS5sYW5nLk51bWJlciciPlN0cmluZzwvZXJyb3I+PiBmMSA9IG5ldyBOZWcwMi5Gb288PjxlcnJvciBkZXNjcj0iJ0ZvbyhqYXZhLmxhbmcuU3RyaW5nICYgamF2YS5sYW5nLk51bWJlciknIGluICdOZWcwMi5Gb28nIGNhbm5vdCBiZSBhcHBsaWVkIHRvICcoamF2YS5sYW5nLlN0cmluZyknIj4oIiIpPC9lcnJvcj47CisgICAgICAgIEZvbzw8ZXJyb3IgZGVzY3I9IlR5cGUgcGFyYW1ldGVyICc/IGV4dGVuZHMgU3RyaW5nJyBpcyBub3Qgd2l0aGluIGl0cyBib3VuZDsgc2hvdWxkIGV4dGVuZCAnamF2YS5sYW5nLk51bWJlciciPj8gZXh0ZW5kcyBTdHJpbmc8L2Vycm9yPj4gZjIgPSBuZXcgTmVnMDIuRm9vPD48ZXJyb3IgZGVzY3I9IidGb28oamF2YS5sYW5nLlN0cmluZyAmIGphdmEubGFuZy5OdW1iZXIpJyBpbiAnTmVnMDIuRm9vJyBjYW5ub3QgYmUgYXBwbGllZCB0byAnKGphdmEubGFuZy5TdHJpbmcpJyI+KCIiKTwvZXJyb3I+OworICAgICAgICBGb288Pz4gZjMgPSBuZXcgTmVnMDIuRm9vPD48ZXJyb3IgZGVzY3I9IidGb28oamF2YS5sYW5nLlN0cmluZyAmIGphdmEubGFuZy5OdW1iZXIpJyBpbiAnTmVnMDIuRm9vJyBjYW5ub3QgYmUgYXBwbGllZCB0byAnKGphdmEubGFuZy5TdHJpbmcpJyI+KCIiKTwvZXJyb3I+OworICAgICAgICBGb288PGVycm9yIGRlc2NyPSJUeXBlIHBhcmFtZXRlciAnPyBzdXBlciBTdHJpbmcnIGlzIG5vdCB3aXRoaW4gaXRzIGJvdW5kOyBzaG91bGQgZXh0ZW5kICdqYXZhLmxhbmcuTnVtYmVyJyI+PyBzdXBlciBTdHJpbmc8L2Vycm9yPj4gZjQgPSBuZXcgTmVnMDIuRm9vPD48ZXJyb3IgZGVzY3I9IidGb28oamF2YS5sYW5nLlN0cmluZyAmIGphdmEubGFuZy5OdW1iZXIpJyBpbiAnTmVnMDIuRm9vJyBjYW5ub3QgYmUgYXBwbGllZCB0byAnKGphdmEubGFuZy5TdHJpbmcpJyI+KCIiKTwvZXJyb3I+OworCisgICAgICAgIEZvbzw8ZXJyb3IgZGVzY3I9IlR5cGUgcGFyYW1ldGVyICdqYXZhLmxhbmcuU3RyaW5nJyBpcyBub3Qgd2l0aGluIGl0cyBib3VuZDsgc2hvdWxkIGV4dGVuZCAnamF2YS5sYW5nLk51bWJlciciPlN0cmluZzwvZXJyb3I+PiBmNSA9IG5ldyBOZWcwMi5Gb288PjxlcnJvciBkZXNjcj0iJ0ZvbyhqYXZhLmxhbmcuU3RyaW5nICYgamF2YS5sYW5nLk51bWJlciwgamF2YS5sYW5nLlN0cmluZyknIGluICdOZWcwMi5Gb28nIGNhbm5vdCBiZSBhcHBsaWVkIHRvICcoamF2YS5sYW5nLlN0cmluZywgamF2YS5sYW5nLlN0cmluZyknIj4oIiIsICIiKTwvZXJyb3I+OworICAgICAgICBGb288PGVycm9yIGRlc2NyPSJUeXBlIHBhcmFtZXRlciAnPyBleHRlbmRzIFN0cmluZycgaXMgbm90IHdpdGhpbiBpdHMgYm91bmQ7IHNob3VsZCBleHRlbmQgJ2phdmEubGFuZy5OdW1iZXInIj4/IGV4dGVuZHMgU3RyaW5nPC9lcnJvcj4+IGY2ID0gbmV3IE5lZzAyLkZvbzw+PGVycm9yIGRlc2NyPSInRm9vKGphdmEubGFuZy5TdHJpbmcgJiBqYXZhLmxhbmcuTnVtYmVyLCBqYXZhLmxhbmcuU3RyaW5nKScgaW4gJ05lZzAyLkZvbycgY2Fubm90IGJlIGFwcGxpZWQgdG8gJyhqYXZhLmxhbmcuU3RyaW5nLCBqYXZhLmxhbmcuU3RyaW5nKSciPigiIiwgIiIpPC9lcnJvcj47CisgICAgICAgIEZvbzw/PiBmNyA9IG5ldyBOZWcwMi5Gb288PjxlcnJvciBkZXNjcj0iJ0ZvbyhqYXZhLmxhbmcuU3RyaW5nICYgamF2YS5sYW5nLk51bWJlciwgamF2YS5sYW5nLlN0cmluZyknIGluICdOZWcwMi5Gb28nIGNhbm5vdCBiZSBhcHBsaWVkIHRvICcoamF2YS5sYW5nLlN0cmluZywgamF2YS5sYW5nLlN0cmluZyknIj4oIiIsICIiKTwvZXJyb3I+OworICAgICAgICBGb288PGVycm9yIGRlc2NyPSJUeXBlIHBhcmFtZXRlciAnPyBzdXBlciBTdHJpbmcnIGlzIG5vdCB3aXRoaW4gaXRzIGJvdW5kOyBzaG91bGQgZXh0ZW5kICdqYXZhLmxhbmcuTnVtYmVyJyI+PyBzdXBlciBTdHJpbmc8L2Vycm9yPj4gZjggPSBuZXcgTmVnMDIuRm9vPD48ZXJyb3IgZGVzY3I9IidGb28oamF2YS5sYW5nLlN0cmluZyAmIGphdmEubGFuZy5OdW1iZXIsIGphdmEubGFuZy5TdHJpbmcpJyBpbiAnTmVnMDIuRm9vJyBjYW5ub3QgYmUgYXBwbGllZCB0byAnKGphdmEubGFuZy5TdHJpbmcsIGphdmEubGFuZy5TdHJpbmcpJyI+KCIiLCAiIik8L2Vycm9yPjsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZzcvRGlhbW9uZE5lZzMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nNy9EaWFtb25kTmVnMy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFjNjZkMmEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZzcvRGlhbW9uZE5lZzMuamF2YQpAQCAtMCwwICsxLDQzIEBACitjbGFzcyBOZWcwMzxVPiB7CisKKyAgICBjbGFzcyBGb288ViBleHRlbmRzIE51bWJlcj4geworICAgICAgICBGb28oViB4KSB7fQorICAgICAgICA8Wj4gRm9vKFYgeCwgWiB6KSB7fQorICAgIH0KKworICAgIHZvaWQgdGVzdFNpbXBsZSgpIHsKKyAgICAgICAgRm9vPDxlcnJvciBkZXNjcj0iVHlwZSBwYXJhbWV0ZXIgJ2phdmEubGFuZy5TdHJpbmcnIGlzIG5vdCB3aXRoaW4gaXRzIGJvdW5kOyBzaG91bGQgZXh0ZW5kICdqYXZhLmxhbmcuTnVtYmVyJyI+U3RyaW5nPC9lcnJvcj4+IGYxID0gbmV3IEZvbzw+PGVycm9yIGRlc2NyPSInRm9vKGphdmEubGFuZy5TdHJpbmcgJiBqYXZhLmxhbmcuTnVtYmVyKScgaW4gJ05lZzAzLkZvbycgY2Fubm90IGJlIGFwcGxpZWQgdG8gJyhqYXZhLmxhbmcuU3RyaW5nKSciPigiIik8L2Vycm9yPjsKKyAgICAgICAgRm9vPDxlcnJvciBkZXNjcj0iVHlwZSBwYXJhbWV0ZXIgJz8gZXh0ZW5kcyBTdHJpbmcnIGlzIG5vdCB3aXRoaW4gaXRzIGJvdW5kOyBzaG91bGQgZXh0ZW5kICdqYXZhLmxhbmcuTnVtYmVyJyI+PyBleHRlbmRzIFN0cmluZzwvZXJyb3I+PiBmMiA9IG5ldyBGb288PjxlcnJvciBkZXNjcj0iJ0ZvbyhqYXZhLmxhbmcuU3RyaW5nICYgamF2YS5sYW5nLk51bWJlciknIGluICdOZWcwMy5Gb28nIGNhbm5vdCBiZSBhcHBsaWVkIHRvICcoamF2YS5sYW5nLlN0cmluZyknIj4oIiIpPC9lcnJvcj47CisgICAgICAgIEZvbzw/PiBmMyA9IG5ldyBGb288PjxlcnJvciBkZXNjcj0iJ0ZvbyhqYXZhLmxhbmcuU3RyaW5nICYgamF2YS5sYW5nLk51bWJlciknIGluICdOZWcwMy5Gb28nIGNhbm5vdCBiZSBhcHBsaWVkIHRvICcoamF2YS5sYW5nLlN0cmluZyknIj4oIiIpPC9lcnJvcj47CisgICAgICAgIEZvbzw8ZXJyb3IgZGVzY3I9IlR5cGUgcGFyYW1ldGVyICc/IHN1cGVyIFN0cmluZycgaXMgbm90IHdpdGhpbiBpdHMgYm91bmQ7IHNob3VsZCBleHRlbmQgJ2phdmEubGFuZy5OdW1iZXInIj4/IHN1cGVyIFN0cmluZzwvZXJyb3I+PiBmNCA9IG5ldyBGb288PjxlcnJvciBkZXNjcj0iJ0ZvbyhqYXZhLmxhbmcuU3RyaW5nICYgamF2YS5sYW5nLk51bWJlciknIGluICdOZWcwMy5Gb28nIGNhbm5vdCBiZSBhcHBsaWVkIHRvICcoamF2YS5sYW5nLlN0cmluZyknIj4oIiIpPC9lcnJvcj47CisKKyAgICAgICAgRm9vPDxlcnJvciBkZXNjcj0iVHlwZSBwYXJhbWV0ZXIgJ2phdmEubGFuZy5TdHJpbmcnIGlzIG5vdCB3aXRoaW4gaXRzIGJvdW5kOyBzaG91bGQgZXh0ZW5kICdqYXZhLmxhbmcuTnVtYmVyJyI+U3RyaW5nPC9lcnJvcj4+IGY1ID0gbmV3IEZvbzw+PGVycm9yIGRlc2NyPSInRm9vKGphdmEubGFuZy5TdHJpbmcgJiBqYXZhLmxhbmcuTnVtYmVyLCBqYXZhLmxhbmcuU3RyaW5nKScgaW4gJ05lZzAzLkZvbycgY2Fubm90IGJlIGFwcGxpZWQgdG8gJyhqYXZhLmxhbmcuU3RyaW5nLCBqYXZhLmxhbmcuU3RyaW5nKSciPigiIiwgIiIpPC9lcnJvcj47CisgICAgICAgIEZvbzw8ZXJyb3IgZGVzY3I9IlR5cGUgcGFyYW1ldGVyICc/IGV4dGVuZHMgU3RyaW5nJyBpcyBub3Qgd2l0aGluIGl0cyBib3VuZDsgc2hvdWxkIGV4dGVuZCAnamF2YS5sYW5nLk51bWJlciciPj8gZXh0ZW5kcyBTdHJpbmc8L2Vycm9yPj4gZjYgPSBuZXcgRm9vPD48ZXJyb3IgZGVzY3I9IidGb28oamF2YS5sYW5nLlN0cmluZyAmIGphdmEubGFuZy5OdW1iZXIsIGphdmEubGFuZy5TdHJpbmcpJyBpbiAnTmVnMDMuRm9vJyBjYW5ub3QgYmUgYXBwbGllZCB0byAnKGphdmEubGFuZy5TdHJpbmcsIGphdmEubGFuZy5TdHJpbmcpJyI+KCIiLCAiIik8L2Vycm9yPjsKKyAgICAgICAgRm9vPD8+IGY3ID0gbmV3IEZvbzw+PGVycm9yIGRlc2NyPSInRm9vKGphdmEubGFuZy5TdHJpbmcgJiBqYXZhLmxhbmcuTnVtYmVyLCBqYXZhLmxhbmcuU3RyaW5nKScgaW4gJ05lZzAzLkZvbycgY2Fubm90IGJlIGFwcGxpZWQgdG8gJyhqYXZhLmxhbmcuU3RyaW5nLCBqYXZhLmxhbmcuU3RyaW5nKSciPigiIiwgIiIpPC9lcnJvcj47CisgICAgICAgIEZvbzw8ZXJyb3IgZGVzY3I9IlR5cGUgcGFyYW1ldGVyICc/IHN1cGVyIFN0cmluZycgaXMgbm90IHdpdGhpbiBpdHMgYm91bmQ7IHNob3VsZCBleHRlbmQgJ2phdmEubGFuZy5OdW1iZXInIj4/IHN1cGVyIFN0cmluZzwvZXJyb3I+PiBmOCA9IG5ldyBGb288PjxlcnJvciBkZXNjcj0iJ0ZvbyhqYXZhLmxhbmcuU3RyaW5nICYgamF2YS5sYW5nLk51bWJlciwgamF2YS5sYW5nLlN0cmluZyknIGluICdOZWcwMy5Gb28nIGNhbm5vdCBiZSBhcHBsaWVkIHRvICcoamF2YS5sYW5nLlN0cmluZywgamF2YS5sYW5nLlN0cmluZyknIj4oIiIsICIiKTwvZXJyb3I+OworICAgIH0KKworICAgIHZvaWQgdGVzdFF1YWxpZmllZF8xKCkgeworICAgICAgICBGb288PGVycm9yIGRlc2NyPSJUeXBlIHBhcmFtZXRlciAnamF2YS5sYW5nLlN0cmluZycgaXMgbm90IHdpdGhpbiBpdHMgYm91bmQ7IHNob3VsZCBleHRlbmQgJ2phdmEubGFuZy5OdW1iZXInIj5TdHJpbmc8L2Vycm9yPj4gZjEgPSBuZXcgTmVnMDM8VT4uRm9vPD48ZXJyb3IgZGVzY3I9IidGb28oamF2YS5sYW5nLlN0cmluZyAmIGphdmEubGFuZy5OdW1iZXIpJyBpbiAnTmVnMDMuRm9vJyBjYW5ub3QgYmUgYXBwbGllZCB0byAnKGphdmEubGFuZy5TdHJpbmcpJyI+KCIiKTwvZXJyb3I+OworICAgICAgICBGb288PGVycm9yIGRlc2NyPSJUeXBlIHBhcmFtZXRlciAnPyBleHRlbmRzIFN0cmluZycgaXMgbm90IHdpdGhpbiBpdHMgYm91bmQ7IHNob3VsZCBleHRlbmQgJ2phdmEubGFuZy5OdW1iZXInIj4/IGV4dGVuZHMgU3RyaW5nPC9lcnJvcj4+IGYyID0gbmV3IE5lZzAzPFU+LkZvbzw+PGVycm9yIGRlc2NyPSInRm9vKGphdmEubGFuZy5TdHJpbmcgJiBqYXZhLmxhbmcuTnVtYmVyKScgaW4gJ05lZzAzLkZvbycgY2Fubm90IGJlIGFwcGxpZWQgdG8gJyhqYXZhLmxhbmcuU3RyaW5nKSciPigiIik8L2Vycm9yPjsKKyAgICAgICAgRm9vPD8+IGYzID0gbmV3IE5lZzAzPFU+LkZvbzw+PGVycm9yIGRlc2NyPSInRm9vKGphdmEubGFuZy5TdHJpbmcgJiBqYXZhLmxhbmcuTnVtYmVyKScgaW4gJ05lZzAzLkZvbycgY2Fubm90IGJlIGFwcGxpZWQgdG8gJyhqYXZhLmxhbmcuU3RyaW5nKSciPigiIik8L2Vycm9yPjsKKyAgICAgICAgRm9vPDxlcnJvciBkZXNjcj0iVHlwZSBwYXJhbWV0ZXIgJz8gc3VwZXIgU3RyaW5nJyBpcyBub3Qgd2l0aGluIGl0cyBib3VuZDsgc2hvdWxkIGV4dGVuZCAnamF2YS5sYW5nLk51bWJlciciPj8gc3VwZXIgU3RyaW5nPC9lcnJvcj4+IGY0ID0gbmV3IE5lZzAzPFU+LkZvbzw+PGVycm9yIGRlc2NyPSInRm9vKGphdmEubGFuZy5TdHJpbmcgJiBqYXZhLmxhbmcuTnVtYmVyKScgaW4gJ05lZzAzLkZvbycgY2Fubm90IGJlIGFwcGxpZWQgdG8gJyhqYXZhLmxhbmcuU3RyaW5nKSciPigiIik8L2Vycm9yPjsKKworICAgICAgICBGb288PGVycm9yIGRlc2NyPSJUeXBlIHBhcmFtZXRlciAnamF2YS5sYW5nLlN0cmluZycgaXMgbm90IHdpdGhpbiBpdHMgYm91bmQ7IHNob3VsZCBleHRlbmQgJ2phdmEubGFuZy5OdW1iZXInIj5TdHJpbmc8L2Vycm9yPj4gZjUgPSBuZXcgTmVnMDM8VT4uRm9vPD48ZXJyb3IgZGVzY3I9IidGb28oamF2YS5sYW5nLlN0cmluZyAmIGphdmEubGFuZy5OdW1iZXIsIGphdmEubGFuZy5TdHJpbmcpJyBpbiAnTmVnMDMuRm9vJyBjYW5ub3QgYmUgYXBwbGllZCB0byAnKGphdmEubGFuZy5TdHJpbmcsIGphdmEubGFuZy5TdHJpbmcpJyI+KCIiLCAiIik8L2Vycm9yPjsKKyAgICAgICAgRm9vPDxlcnJvciBkZXNjcj0iVHlwZSBwYXJhbWV0ZXIgJz8gZXh0ZW5kcyBTdHJpbmcnIGlzIG5vdCB3aXRoaW4gaXRzIGJvdW5kOyBzaG91bGQgZXh0ZW5kICdqYXZhLmxhbmcuTnVtYmVyJyI+PyBleHRlbmRzIFN0cmluZzwvZXJyb3I+PiBmNiA9IG5ldyBOZWcwMzxVPi5Gb288PjxlcnJvciBkZXNjcj0iJ0ZvbyhqYXZhLmxhbmcuU3RyaW5nICYgamF2YS5sYW5nLk51bWJlciwgamF2YS5sYW5nLlN0cmluZyknIGluICdOZWcwMy5Gb28nIGNhbm5vdCBiZSBhcHBsaWVkIHRvICcoamF2YS5sYW5nLlN0cmluZywgamF2YS5sYW5nLlN0cmluZyknIj4oIiIsICIiKTwvZXJyb3I+OworICAgICAgICBGb288Pz4gZjcgPSBuZXcgTmVnMDM8VT4uRm9vPD48ZXJyb3IgZGVzY3I9IidGb28oamF2YS5sYW5nLlN0cmluZyAmIGphdmEubGFuZy5OdW1iZXIsIGphdmEubGFuZy5TdHJpbmcpJyBpbiAnTmVnMDMuRm9vJyBjYW5ub3QgYmUgYXBwbGllZCB0byAnKGphdmEubGFuZy5TdHJpbmcsIGphdmEubGFuZy5TdHJpbmcpJyI+KCIiLCAiIik8L2Vycm9yPjsKKyAgICAgICAgRm9vPDxlcnJvciBkZXNjcj0iVHlwZSBwYXJhbWV0ZXIgJz8gc3VwZXIgU3RyaW5nJyBpcyBub3Qgd2l0aGluIGl0cyBib3VuZDsgc2hvdWxkIGV4dGVuZCAnamF2YS5sYW5nLk51bWJlciciPj8gc3VwZXIgU3RyaW5nPC9lcnJvcj4+IGY4ID0gbmV3IE5lZzAzPFU+LkZvbzw+PGVycm9yIGRlc2NyPSInRm9vKGphdmEubGFuZy5TdHJpbmcgJiBqYXZhLmxhbmcuTnVtYmVyLCBqYXZhLmxhbmcuU3RyaW5nKScgaW4gJ05lZzAzLkZvbycgY2Fubm90IGJlIGFwcGxpZWQgdG8gJyhqYXZhLmxhbmcuU3RyaW5nLCBqYXZhLmxhbmcuU3RyaW5nKSciPigiIiwgIiIpPC9lcnJvcj47CisgICAgfQorCisgICAgdm9pZCB0ZXN0UXVhbGlmaWVkXzIoTmVnMDM8VT4gbikgeworICAgICAgICBGb288PGVycm9yIGRlc2NyPSJUeXBlIHBhcmFtZXRlciAnamF2YS5sYW5nLlN0cmluZycgaXMgbm90IHdpdGhpbiBpdHMgYm91bmQ7IHNob3VsZCBleHRlbmQgJ2phdmEubGFuZy5OdW1iZXInIj5TdHJpbmc8L2Vycm9yPj4gZjEgPSBuLm5ldyBGb288PjxlcnJvciBkZXNjcj0iJ0ZvbyhqYXZhLmxhbmcuU3RyaW5nICYgamF2YS5sYW5nLk51bWJlciknIGluICdOZWcwMy5Gb28nIGNhbm5vdCBiZSBhcHBsaWVkIHRvICcoamF2YS5sYW5nLlN0cmluZyknIj4oIiIpPC9lcnJvcj47CisgICAgICAgIEZvbzw8ZXJyb3IgZGVzY3I9IlR5cGUgcGFyYW1ldGVyICc/IGV4dGVuZHMgU3RyaW5nJyBpcyBub3Qgd2l0aGluIGl0cyBib3VuZDsgc2hvdWxkIGV4dGVuZCAnamF2YS5sYW5nLk51bWJlciciPj8gZXh0ZW5kcyBTdHJpbmc8L2Vycm9yPj4gZjIgPSBuLm5ldyBGb288PjxlcnJvciBkZXNjcj0iJ0ZvbyhqYXZhLmxhbmcuU3RyaW5nICYgamF2YS5sYW5nLk51bWJlciknIGluICdOZWcwMy5Gb28nIGNhbm5vdCBiZSBhcHBsaWVkIHRvICcoamF2YS5sYW5nLlN0cmluZyknIj4oIiIpPC9lcnJvcj47CisgICAgICAgIEZvbzw/PiBmMyA9IG4ubmV3IEZvbzw+PGVycm9yIGRlc2NyPSInRm9vKGphdmEubGFuZy5TdHJpbmcgJiBqYXZhLmxhbmcuTnVtYmVyKScgaW4gJ05lZzAzLkZvbycgY2Fubm90IGJlIGFwcGxpZWQgdG8gJyhqYXZhLmxhbmcuU3RyaW5nKSciPigiIik8L2Vycm9yPjsKKyAgICAgICAgRm9vPDxlcnJvciBkZXNjcj0iVHlwZSBwYXJhbWV0ZXIgJz8gc3VwZXIgU3RyaW5nJyBpcyBub3Qgd2l0aGluIGl0cyBib3VuZDsgc2hvdWxkIGV4dGVuZCAnamF2YS5sYW5nLk51bWJlciciPj8gc3VwZXIgU3RyaW5nPC9lcnJvcj4+IGY0ID0gbi5uZXcgRm9vPD48ZXJyb3IgZGVzY3I9IidGb28oamF2YS5sYW5nLlN0cmluZyAmIGphdmEubGFuZy5OdW1iZXIpJyBpbiAnTmVnMDMuRm9vJyBjYW5ub3QgYmUgYXBwbGllZCB0byAnKGphdmEubGFuZy5TdHJpbmcpJyI+KCIiKTwvZXJyb3I+OworCisgICAgICAgIEZvbzw8ZXJyb3IgZGVzY3I9IlR5cGUgcGFyYW1ldGVyICdqYXZhLmxhbmcuU3RyaW5nJyBpcyBub3Qgd2l0aGluIGl0cyBib3VuZDsgc2hvdWxkIGV4dGVuZCAnamF2YS5sYW5nLk51bWJlciciPlN0cmluZzwvZXJyb3I+PiBmNSA9IG4ubmV3IEZvbzw+PGVycm9yIGRlc2NyPSInRm9vKGphdmEubGFuZy5TdHJpbmcgJiBqYXZhLmxhbmcuTnVtYmVyLCBqYXZhLmxhbmcuU3RyaW5nKScgaW4gJ05lZzAzLkZvbycgY2Fubm90IGJlIGFwcGxpZWQgdG8gJyhqYXZhLmxhbmcuU3RyaW5nLCBqYXZhLmxhbmcuU3RyaW5nKSciPigiIiwgIiIpPC9lcnJvcj47CisgICAgICAgIEZvbzw8ZXJyb3IgZGVzY3I9IlR5cGUgcGFyYW1ldGVyICc/IGV4dGVuZHMgU3RyaW5nJyBpcyBub3Qgd2l0aGluIGl0cyBib3VuZDsgc2hvdWxkIGV4dGVuZCAnamF2YS5sYW5nLk51bWJlciciPj8gZXh0ZW5kcyBTdHJpbmc8L2Vycm9yPj4gZjYgPSBuLm5ldyBGb288PjxlcnJvciBkZXNjcj0iJ0ZvbyhqYXZhLmxhbmcuU3RyaW5nICYgamF2YS5sYW5nLk51bWJlciwgamF2YS5sYW5nLlN0cmluZyknIGluICdOZWcwMy5Gb28nIGNhbm5vdCBiZSBhcHBsaWVkIHRvICcoamF2YS5sYW5nLlN0cmluZywgamF2YS5sYW5nLlN0cmluZyknIj4oIiIsICIiKTwvZXJyb3I+OworICAgICAgICBGb288Pz4gZjcgPSBuLm5ldyBGb288PjxlcnJvciBkZXNjcj0iJ0ZvbyhqYXZhLmxhbmcuU3RyaW5nICYgamF2YS5sYW5nLk51bWJlciwgamF2YS5sYW5nLlN0cmluZyknIGluICdOZWcwMy5Gb28nIGNhbm5vdCBiZSBhcHBsaWVkIHRvICcoamF2YS5sYW5nLlN0cmluZywgamF2YS5sYW5nLlN0cmluZyknIj4oIiIsICIiKTwvZXJyb3I+OworICAgICAgICBGb288PGVycm9yIGRlc2NyPSJUeXBlIHBhcmFtZXRlciAnPyBzdXBlciBTdHJpbmcnIGlzIG5vdCB3aXRoaW4gaXRzIGJvdW5kOyBzaG91bGQgZXh0ZW5kICdqYXZhLmxhbmcuTnVtYmVyJyI+PyBzdXBlciBTdHJpbmc8L2Vycm9yPj4gZjggPSBuLm5ldyBGb288PjxlcnJvciBkZXNjcj0iJ0ZvbyhqYXZhLmxhbmcuU3RyaW5nICYgamF2YS5sYW5nLk51bWJlciwgamF2YS5sYW5nLlN0cmluZyknIGluICdOZWcwMy5Gb28nIGNhbm5vdCBiZSBhcHBsaWVkIHRvICcoamF2YS5sYW5nLlN0cmluZywgamF2YS5sYW5nLlN0cmluZyknIj4oIiIsICIiKTwvZXJyb3I+OworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nNy9EaWFtb25kTmVnNC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmc3L0RpYW1vbmROZWc0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTViNTBjNQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nNy9EaWFtb25kTmVnNC5qYXZhCkBAIC0wLDAgKzEsMTggQEAKK2NsYXNzIE5lZzA0IHsKKworICAgIHZvaWQgdGVzdCgpIHsKKyAgICAgICAgY2xhc3MgRm9vPFYgZXh0ZW5kcyBOdW1iZXI+IHsKKyAgICAgICAgICAgIEZvbyhWIHgpIHt9CisgICAgICAgICAgICA8Wj4gRm9vKFYgeCwgWiB6KSB7fQorICAgICAgICB9CisgICAgICAgIEZvbzw8ZXJyb3IgZGVzY3I9IlR5cGUgcGFyYW1ldGVyICdqYXZhLmxhbmcuU3RyaW5nJyBpcyBub3Qgd2l0aGluIGl0cyBib3VuZDsgc2hvdWxkIGV4dGVuZCAnamF2YS5sYW5nLk51bWJlciciPlN0cmluZzwvZXJyb3I+PiBuMSA9IG5ldyBGb288PjxlcnJvciBkZXNjcj0iJ0ZvbyhqYXZhLmxhbmcuU3RyaW5nICYgamF2YS5sYW5nLk51bWJlciknIGluICdGb28nIGNhbm5vdCBiZSBhcHBsaWVkIHRvICcoamF2YS5sYW5nLlN0cmluZyknIj4oIiIpPC9lcnJvcj47CisgICAgICAgIEZvbzw8ZXJyb3IgZGVzY3I9IlR5cGUgcGFyYW1ldGVyICc/IGV4dGVuZHMgU3RyaW5nJyBpcyBub3Qgd2l0aGluIGl0cyBib3VuZDsgc2hvdWxkIGV4dGVuZCAnamF2YS5sYW5nLk51bWJlciciPj8gZXh0ZW5kcyBTdHJpbmc8L2Vycm9yPj4gbjIgPSBuZXcgRm9vPD48ZXJyb3IgZGVzY3I9IidGb28oamF2YS5sYW5nLlN0cmluZyAmIGphdmEubGFuZy5OdW1iZXIpJyBpbiAnRm9vJyBjYW5ub3QgYmUgYXBwbGllZCB0byAnKGphdmEubGFuZy5TdHJpbmcpJyI+KCIiKTwvZXJyb3I+OworICAgICAgICBGb288Pz4gbjMgPSBuZXcgRm9vPD48ZXJyb3IgZGVzY3I9IidGb28oamF2YS5sYW5nLlN0cmluZyAmIGphdmEubGFuZy5OdW1iZXIpJyBpbiAnRm9vJyBjYW5ub3QgYmUgYXBwbGllZCB0byAnKGphdmEubGFuZy5TdHJpbmcpJyI+KCIiKTwvZXJyb3I+OworICAgICAgICBGb288PGVycm9yIGRlc2NyPSJUeXBlIHBhcmFtZXRlciAnPyBzdXBlciBTdHJpbmcnIGlzIG5vdCB3aXRoaW4gaXRzIGJvdW5kOyBzaG91bGQgZXh0ZW5kICdqYXZhLmxhbmcuTnVtYmVyJyI+PyBzdXBlciBTdHJpbmc8L2Vycm9yPj4gbjQgPSBuZXcgRm9vPD48ZXJyb3IgZGVzY3I9IidGb28oamF2YS5sYW5nLlN0cmluZyAmIGphdmEubGFuZy5OdW1iZXIpJyBpbiAnRm9vJyBjYW5ub3QgYmUgYXBwbGllZCB0byAnKGphdmEubGFuZy5TdHJpbmcpJyI+KCIiKTwvZXJyb3I+OworCisgICAgICAgIEZvbzw8ZXJyb3IgZGVzY3I9IlR5cGUgcGFyYW1ldGVyICdqYXZhLmxhbmcuU3RyaW5nJyBpcyBub3Qgd2l0aGluIGl0cyBib3VuZDsgc2hvdWxkIGV4dGVuZCAnamF2YS5sYW5nLk51bWJlciciPlN0cmluZzwvZXJyb3I+PiBuNSA9IG5ldyBGb288PjxlcnJvciBkZXNjcj0iJ0ZvbyhqYXZhLmxhbmcuU3RyaW5nICYgamF2YS5sYW5nLk51bWJlciwgamF2YS5sYW5nLlN0cmluZyknIGluICdGb28nIGNhbm5vdCBiZSBhcHBsaWVkIHRvICcoamF2YS5sYW5nLlN0cmluZywgamF2YS5sYW5nLlN0cmluZyknIj4oIiIsICIiKTwvZXJyb3I+OworICAgICAgICBGb288PGVycm9yIGRlc2NyPSJUeXBlIHBhcmFtZXRlciAnPyBleHRlbmRzIFN0cmluZycgaXMgbm90IHdpdGhpbiBpdHMgYm91bmQ7IHNob3VsZCBleHRlbmQgJ2phdmEubGFuZy5OdW1iZXInIj4/IGV4dGVuZHMgU3RyaW5nPC9lcnJvcj4+IG42ID0gbmV3IEZvbzw+PGVycm9yIGRlc2NyPSInRm9vKGphdmEubGFuZy5TdHJpbmcgJiBqYXZhLmxhbmcuTnVtYmVyLCBqYXZhLmxhbmcuU3RyaW5nKScgaW4gJ0ZvbycgY2Fubm90IGJlIGFwcGxpZWQgdG8gJyhqYXZhLmxhbmcuU3RyaW5nLCBqYXZhLmxhbmcuU3RyaW5nKSciPigiIiwgIiIpPC9lcnJvcj47CisgICAgICAgIEZvbzw/PiBuNyA9IG5ldyBGb288PjxlcnJvciBkZXNjcj0iJ0ZvbyhqYXZhLmxhbmcuU3RyaW5nICYgamF2YS5sYW5nLk51bWJlciwgamF2YS5sYW5nLlN0cmluZyknIGluICdGb28nIGNhbm5vdCBiZSBhcHBsaWVkIHRvICcoamF2YS5sYW5nLlN0cmluZywgamF2YS5sYW5nLlN0cmluZyknIj4oIiIsICIiKTwvZXJyb3I+OworICAgICAgICBGb288PGVycm9yIGRlc2NyPSJUeXBlIHBhcmFtZXRlciAnPyBzdXBlciBTdHJpbmcnIGlzIG5vdCB3aXRoaW4gaXRzIGJvdW5kOyBzaG91bGQgZXh0ZW5kICdqYXZhLmxhbmcuTnVtYmVyJyI+PyBzdXBlciBTdHJpbmc8L2Vycm9yPj4gbjggPSBuZXcgRm9vPD48ZXJyb3IgZGVzY3I9IidGb28oamF2YS5sYW5nLlN0cmluZyAmIGphdmEubGFuZy5OdW1iZXIsIGphdmEubGFuZy5TdHJpbmcpJyBpbiAnRm9vJyBjYW5ub3QgYmUgYXBwbGllZCB0byAnKGphdmEubGFuZy5TdHJpbmcsIGphdmEubGFuZy5TdHJpbmcpJyI+KCIiLCAiIik8L2Vycm9yPjsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZzcvRGlhbW9uZE5lZzUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nNy9EaWFtb25kTmVnNS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcxZDY0NDEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZzcvRGlhbW9uZE5lZzUuamF2YQpAQCAtMCwwICsxLDMxIEBACitjbGFzcyBOZWcwNTxVPiB7CisKKyAgICBjbGFzcyBGb288Vj4geworICAgICAgICBGb28oViB4KSB7fQorICAgICAgICA8Wj4gRm9vKFYgeCwgWiB6KSB7fQorICAgIH0KKworICAgIHZvaWQgdGVzdFJhcmVfMSgpIHsKKyAgICAgICAgTmVnMDU8Pz4uRm9vPFN0cmluZz4gZjEgPSBuZXcgTmVnMDUuRm9vPGVycm9yIGRlc2NyPSJUeXBlIGFyZ3VtZW50cyBnaXZlbiBvbiBhIHJhdyB0eXBlIj48PjwvZXJyb3I+KCIiKTsKKyAgICAgICAgTmVnMDU8Pz4uRm9vPD8gZXh0ZW5kcyBTdHJpbmc+IGYyID0gbmV3IE5lZzA1LkZvbzxlcnJvciBkZXNjcj0iVHlwZSBhcmd1bWVudHMgZ2l2ZW4gb24gYSByYXcgdHlwZSI+PD48L2Vycm9yPigiIik7CisgICAgICAgIE5lZzA1PD8+LkZvbzw/PiBmMyA9IG5ldyBOZWcwNS5Gb288ZXJyb3IgZGVzY3I9IlR5cGUgYXJndW1lbnRzIGdpdmVuIG9uIGEgcmF3IHR5cGUiPjw+PC9lcnJvcj4oIiIpOworICAgICAgICBOZWcwNTw/Pi5Gb288PyBzdXBlciBTdHJpbmc+IGY0ID0gbmV3IE5lZzA1LkZvbzxlcnJvciBkZXNjcj0iVHlwZSBhcmd1bWVudHMgZ2l2ZW4gb24gYSByYXcgdHlwZSI+PD48L2Vycm9yPigiIik7CisKKyAgICAgICAgTmVnMDU8Pz4uRm9vPFN0cmluZz4gZjUgPSBuZXcgTmVnMDUuRm9vPGVycm9yIGRlc2NyPSJUeXBlIGFyZ3VtZW50cyBnaXZlbiBvbiBhIHJhdyB0eXBlIj48PjwvZXJyb3I+KCIiLCAiIik7CisgICAgICAgIE5lZzA1PD8+LkZvbzw/IGV4dGVuZHMgU3RyaW5nPiBmNiA9IG5ldyBOZWcwNS5Gb288ZXJyb3IgZGVzY3I9IlR5cGUgYXJndW1lbnRzIGdpdmVuIG9uIGEgcmF3IHR5cGUiPjw+PC9lcnJvcj4oIiIsICIiKTsKKyAgICAgICAgTmVnMDU8Pz4uRm9vPD8+IGY3ID0gbmV3IE5lZzA1LkZvbzxlcnJvciBkZXNjcj0iVHlwZSBhcmd1bWVudHMgZ2l2ZW4gb24gYSByYXcgdHlwZSI+PD48L2Vycm9yPigiIiwgIiIpOworICAgICAgICBOZWcwNTw/Pi5Gb288PyBzdXBlciBTdHJpbmc+IGY4ID0gbmV3IE5lZzA1LkZvbzxlcnJvciBkZXNjcj0iVHlwZSBhcmd1bWVudHMgZ2l2ZW4gb24gYSByYXcgdHlwZSI+PD48L2Vycm9yPigiIiwgIiIpOworICAgIH0KKworICAgIHZvaWQgdGVzdFJhcmVfMihOZWcwNSBuKSB7CisgICAgICAgIE5lZzA1PD8+LkZvbzxTdHJpbmc+IGYxID0gbi5uZXcgRm9vPGVycm9yIGRlc2NyPSJUeXBlIGFyZ3VtZW50cyBnaXZlbiBvbiBhIHJhdyB0eXBlIj48PjwvZXJyb3I+KCIiKTsKKyAgICAgICAgTmVnMDU8Pz4uRm9vPD8gZXh0ZW5kcyBTdHJpbmc+IGYyID0gbi5uZXcgRm9vPGVycm9yIGRlc2NyPSJUeXBlIGFyZ3VtZW50cyBnaXZlbiBvbiBhIHJhdyB0eXBlIj48PjwvZXJyb3I+KCIiKTsKKyAgICAgICAgTmVnMDU8Pz4uRm9vPD8+IGYzID0gbi5uZXcgRm9vPGVycm9yIGRlc2NyPSJUeXBlIGFyZ3VtZW50cyBnaXZlbiBvbiBhIHJhdyB0eXBlIj48PjwvZXJyb3I+KCIiKTsKKyAgICAgICAgTmVnMDU8Pz4uRm9vPD8gc3VwZXIgU3RyaW5nPiBmNCA9IG4ubmV3IEZvbzxlcnJvciBkZXNjcj0iVHlwZSBhcmd1bWVudHMgZ2l2ZW4gb24gYSByYXcgdHlwZSI+PD48L2Vycm9yPigiIik7CisKKyAgICAgICAgTmVnMDU8Pz4uRm9vPFN0cmluZz4gZjUgPSBuLm5ldyBGb288ZXJyb3IgZGVzY3I9IlR5cGUgYXJndW1lbnRzIGdpdmVuIG9uIGEgcmF3IHR5cGUiPjw+PC9lcnJvcj4oIiIsICIiKTsKKyAgICAgICAgTmVnMDU8Pz4uRm9vPD8gZXh0ZW5kcyBTdHJpbmc+IGY2ID0gbi5uZXcgRm9vPGVycm9yIGRlc2NyPSJUeXBlIGFyZ3VtZW50cyBnaXZlbiBvbiBhIHJhdyB0eXBlIj48PjwvZXJyb3I+KCIiLCAiIik7CisgICAgICAgIE5lZzA1PD8+LkZvbzw/PiBmNyA9IG4ubmV3IEZvbzxlcnJvciBkZXNjcj0iVHlwZSBhcmd1bWVudHMgZ2l2ZW4gb24gYSByYXcgdHlwZSI+PD48L2Vycm9yPigiIiwgIiIpOworICAgICAgICBOZWcwNTw/Pi5Gb288PyBzdXBlciBTdHJpbmc+IGY4ID0gbi5uZXcgRm9vPGVycm9yIGRlc2NyPSJUeXBlIGFyZ3VtZW50cyBnaXZlbiBvbiBhIHJhdyB0eXBlIj48PjwvZXJyb3I+KCIiLCAiIik7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nNy9EaWFtb25kTmVnNi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmc3L0RpYW1vbmROZWc2LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTIzM2VkMgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nNy9EaWFtb25kTmVnNi5qYXZhCkBAIC0wLDAgKzEsNyBAQAorY2xhc3MgTmVnMDYgeworCisgICBzdGF0aWMgY2xhc3MgQ1N1cGVyRm9vPFg+IHt9CisgICBzdGF0aWMgY2xhc3MgQ0ZvbzxYIGV4dGVuZHMgTnVtYmVyPiBleHRlbmRzIENTdXBlckZvbzxYPiB7fQorCisgICBDU3VwZXJGb288U3RyaW5nPiBjc2YxID0gbmV3IENGb288PGVycm9yIGRlc2NyPSJUeXBlIHBhcmFtZXRlciAnamF2YS5sYW5nLlN0cmluZycgaXMgbm90IHdpdGhpbiBpdHMgYm91bmQ7IHNob3VsZCBleHRlbmQgJ2phdmEubGFuZy5OdW1iZXInIj48L2Vycm9yPj4oKTsKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nNy9EaWFtb25kTmVnNy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmc3L0RpYW1vbmROZWc3LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODQ3NzFhNgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nNy9EaWFtb25kTmVnNy5qYXZhCkBAIC0wLDAgKzEsOCBAQAorY2xhc3MgTmVnMDcgeworICAgc3RhdGljIGNsYXNzIFN1cGVyRm9vPFg+IHt9CisgICBzdGF0aWMgY2xhc3MgRm9vPFggZXh0ZW5kcyBOdW1iZXI+IGV4dGVuZHMgU3VwZXJGb288WD4geworICAgICAgIEZvbyhYIHgpIHt9CisgICB9CisKKyAgIFN1cGVyRm9vPFN0cmluZz4gc2YxID0gbmV3IEZvbzw+PGVycm9yIGRlc2NyPSInRm9vKGphdmEubGFuZy5TdHJpbmcgJiBqYXZhLmxhbmcuTnVtYmVyKScgaW4gJ05lZzA3LkZvbycgY2Fubm90IGJlIGFwcGxpZWQgdG8gJyhqYXZhLmxhbmcuU3RyaW5nKSciPigiIik8L2Vycm9yPjsKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nNy9EaWFtb25kTmVnOC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmc3L0RpYW1vbmROZWc4LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzBhOTczMDgyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmc3L0RpYW1vbmROZWc4LmphdmEKQEAgLTAsMCArMSw1IEBACitjbGFzcyBOZWcwOCB7CisgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CisgICAgIFN0cmluZyBzID0gbmV3IFN0cmluZzw8ZXJyb3IgZGVzY3I9IkRpYW1vbmQgb3BlcmF0b3IgaXMgbm90IGFwcGxpY2FibGUgZm9yIG5vbi1wYXJhbWV0ZXJpemVkIHR5cGVzIj48L2Vycm9yPj4oImZvbyIpOworICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmc3L0RpYW1vbmROZWc5LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZzcvRGlhbW9uZE5lZzkuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNGMyN2IwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmc3L0RpYW1vbmROZWc5LmphdmEKQEAgLTAsMCArMSwxNSBAQAorY2xhc3MgTmVnMDkgeworICAgIGNsYXNzIE1lbWJlcjxYPiB7fQorCisgICAgc3RhdGljIGNsYXNzIE5lc3RlZDxYPiB7fQorCisgICAgdm9pZCB0ZXN0U2ltcGxlKCkgeworICAgICAgICBNZW1iZXI8Pz4gbTEgPSBuZXcgTWVtYmVyPDxlcnJvciBkZXNjcj0iQ2Fubm90IHVzZSAnJzw+Jycgd2l0aCBhbm9ueW1vdXMgaW5uZXIgY2xhc3NlcyI+PC9lcnJvcj4+KCkge307CisgICAgICAgIE5lc3RlZDw/PiBtMiA9IG5ldyBOZXN0ZWQ8PGVycm9yIGRlc2NyPSJDYW5ub3QgdXNlICcnPD4nJyB3aXRoIGFub255bW91cyBpbm5lciBjbGFzc2VzIj48L2Vycm9yPj4oKSB7fTsKKyAgICB9CisKKyAgICB2b2lkIHRlc3RRdWFsaWZpZWQoKSB7CisgICAgICAgIE1lbWJlcjw/PiBtMSA9IHRoaXMubmV3IE1lbWJlcjw8ZXJyb3IgZGVzY3I9IkNhbm5vdCB1c2UgJyc8PicnIHdpdGggYW5vbnltb3VzIGlubmVyIGNsYXNzZXMiPjwvZXJyb3I+PigpIHt9OworICAgICAgICBOZXN0ZWQ8Pz4gbTIgPSBuZXcgTmVnMDkuTmVzdGVkPDxlcnJvciBkZXNjcj0iQ2Fubm90IHVzZSAnJzw+Jycgd2l0aCBhbm9ueW1vdXMgaW5uZXIgY2xhc3NlcyI+PC9lcnJvcj4+KCkge307CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmc3L0RpYW1vbmRQb3MxLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZzcvRGlhbW9uZFBvczEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MjdkZjFkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmc3L0RpYW1vbmRQb3MxLmphdmEKQEAgLTAsMCArMSwyMyBAQAorcHVibGljIGNsYXNzIFBvczAxPFg+IHsKKworICAgIFBvczAxKFggeCkge30KKworICAgIDxaPiBQb3MwMShYIHgsIFogeikge30KKworICAgIHZvaWQgdGVzdCgpIHsKKyAgICAgICAgUG9zMDE8SW50ZWdlcj4gcDEgPSBuZXcgUG9zMDE8PigxKTsKKyAgICAgICAgUG9zMDE8PyBleHRlbmRzIEludGVnZXI+IHAyID0gbmV3IFBvczAxPD4oMSk7CisgICAgICAgIFBvczAxPD8+IHAzID0gbmV3IFBvczAxPD4oMSk7CisgICAgICAgIFBvczAxPD8gc3VwZXIgSW50ZWdlcj4gcDQgPSBuZXcgUG9zMDE8PigxKTsKKworICAgICAgICBQb3MwMTxJbnRlZ2VyPiBwNSA9IG5ldyBQb3MwMTw+KDEsICIiKTsKKyAgICAgICAgUG9zMDE8PyBleHRlbmRzIEludGVnZXI+IHA2ID0gbmV3IFBvczAxPD4oMSwgIiIpOworICAgICAgICBQb3MwMTw/PiBwNyA9IG5ldyBQb3MwMTw+KDEsICIiKTsKKyAgICAgICAgUG9zMDE8PyBzdXBlciBJbnRlZ2VyPiBwOCA9IG5ldyBQb3MwMTw+KDEsICIiKTsKKyAgICB9CisKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CisgICAgICAgIFBvczAxPFN0cmluZz4gcDEgPSBuZXcgUG9zMDE8PigiIik7CisgICAgICAgIHAxLnRlc3QoKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmc3L0RpYW1vbmRQb3MyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZzcvRGlhbW9uZFBvczIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZjdhNTA4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmc3L0RpYW1vbmRQb3MyLmphdmEKQEAgLTAsMCArMSwzNyBAQAorcHVibGljIGNsYXNzIFBvczAyIHsKKworICAgIHN0YXRpYyBjbGFzcyBGb288WD4geworICAgICAgICBGb28oWCB4KSB7fQorICAgICAgICA8Wj4gRm9vKFggeCwgWiB6KSB7fQorICAgIH0KKworICAgIHZvaWQgdGVzdFNpbXBsZSgpIHsKKyAgICAgICAgRm9vPEludGVnZXI+IGYxID0gbmV3IEZvbzw+KDEpOworICAgICAgICBGb288PyBleHRlbmRzIEludGVnZXI+IGYyID0gbmV3IEZvbzw+KDEpOworICAgICAgICBGb288Pz4gZjMgPSBuZXcgRm9vPD4oMSk7CisgICAgICAgIEZvbzw/IHN1cGVyIEludGVnZXI+IGY0ID0gbmV3IEZvbzw+KDEpOworCisgICAgICAgIEZvbzxJbnRlZ2VyPiBmNSA9IG5ldyBGb288PigxLCAiIik7CisgICAgICAgIEZvbzw/IGV4dGVuZHMgSW50ZWdlcj4gZjYgPSBuZXcgRm9vPD4oMSwgIiIpOworICAgICAgICBGb288Pz4gZjcgPSBuZXcgRm9vPD4oMSwgIiIpOworICAgICAgICBGb288PyBzdXBlciBJbnRlZ2VyPiBmOCA9IG5ldyBGb288PigxLCAiIik7CisgICAgfQorCisgICAgdm9pZCB0ZXN0UXVhbGlmaWVkKCkgeworICAgICAgICBGb288SW50ZWdlcj4gZjEgPSBuZXcgUG9zMDIuRm9vPD4oMSk7CisgICAgICAgIEZvbzw/IGV4dGVuZHMgSW50ZWdlcj4gZjIgPSBuZXcgUG9zMDIuRm9vPD4oMSk7CisgICAgICAgIEZvbzw/PiBmMyA9IG5ldyBQb3MwMi5Gb288PigxKTsKKyAgICAgICAgRm9vPD8gc3VwZXIgSW50ZWdlcj4gZjQgPSBuZXcgUG9zMDIuRm9vPD4oMSk7CisKKyAgICAgICAgRm9vPEludGVnZXI+IGY1ID0gbmV3IFBvczAyLkZvbzw+KDEsICIiKTsKKyAgICAgICAgRm9vPD8gZXh0ZW5kcyBJbnRlZ2VyPiBmNiA9IG5ldyBQb3MwMi5Gb288PigxLCAiIik7CisgICAgICAgIEZvbzw/PiBmNyA9IG5ldyBQb3MwMi5Gb288PigxLCAiIik7CisgICAgICAgIEZvbzw/IHN1cGVyIEludGVnZXI+IGY4ID0gbmV3IFBvczAyLkZvbzw+KDEsICIiKTsKKyAgICB9CisKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CisgICAgICAgIFBvczAyIHAyID0gbmV3IFBvczAyKCk7CisgICAgICAgIHAyLnRlc3RTaW1wbGUoKTsKKyAgICAgICAgcDIudGVzdFF1YWxpZmllZCgpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZzcvRGlhbW9uZFBvczMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nNy9EaWFtb25kUG9zMy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdjYjAxNzgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZzcvRGlhbW9uZFBvczMuamF2YQpAQCAtMCwwICsxLDUwIEBACitwdWJsaWMgY2xhc3MgUG9zMDM8VT4geworCisgICAgY2xhc3MgRm9vPFY+IHsKKyAgICAgICAgRm9vKFYgeCkge30KKyAgICAgICAgPFo+IEZvbyhWIHgsIFogeikge30KKyAgICB9CisKKyAgICB2b2lkIHRlc3RTaW1wbGUoKSB7CisgICAgICAgIEZvbzxJbnRlZ2VyPiBmMSA9IG5ldyBGb288PigxKTsKKyAgICAgICAgRm9vPD8gZXh0ZW5kcyBJbnRlZ2VyPiBmMiA9IG5ldyBGb288PigxKTsKKyAgICAgICAgRm9vPD8+IGYzID0gbmV3IEZvbzw+KDEpOworICAgICAgICBGb288PyBzdXBlciBJbnRlZ2VyPiBmNCA9IG5ldyBGb288PigxKTsKKworICAgICAgICBGb288SW50ZWdlcj4gZjUgPSBuZXcgRm9vPD4oMSwgIiIpOworICAgICAgICBGb288PyBleHRlbmRzIEludGVnZXI+IGY2ID0gbmV3IEZvbzw+KDEsICIiKTsKKyAgICAgICAgRm9vPD8+IGY3ID0gbmV3IEZvbzw+KDEsICIiKTsKKyAgICAgICAgRm9vPD8gc3VwZXIgSW50ZWdlcj4gZjggPSBuZXcgRm9vPD4oMSwgIiIpOworICAgIH0KKworICAgIHZvaWQgdGVzdFF1YWxpZmllZF8xKCkgeworICAgICAgICBGb288SW50ZWdlcj4gZjEgPSBuZXcgUG9zMDM8VT4uRm9vPD4oMSk7CisgICAgICAgIEZvbzw/IGV4dGVuZHMgSW50ZWdlcj4gZjIgPSBuZXcgUG9zMDM8VT4uRm9vPD4oMSk7CisgICAgICAgIEZvbzw/PiBmMyA9IG5ldyBQb3MwMzxVPi5Gb288PigxKTsKKyAgICAgICAgRm9vPD8gc3VwZXIgSW50ZWdlcj4gZjQgPSBuZXcgUG9zMDM8VT4uRm9vPD4oMSk7CisKKyAgICAgICAgRm9vPEludGVnZXI+IGY1ID0gbmV3IFBvczAzPFU+LkZvbzw+KDEsICIiKTsKKyAgICAgICAgRm9vPD8gZXh0ZW5kcyBJbnRlZ2VyPiBmNiA9IG5ldyBQb3MwMzxVPi5Gb288PigxLCAiIik7CisgICAgICAgIEZvbzw/PiBmNyA9IG5ldyBQb3MwMzxVPi5Gb288PigxLCAiIik7CisgICAgICAgIEZvbzw/IHN1cGVyIEludGVnZXI+IGY4ID0gbmV3IFBvczAzPFU+LkZvbzw+KDEsICIiKTsKKyAgICB9CisKKyAgICB2b2lkIHRlc3RRdWFsaWZpZWRfMihQb3MwMzxVPiBwKSB7CisgICAgICAgIEZvbzxJbnRlZ2VyPiBmMSA9IHAubmV3IEZvbzw+KDEpOworICAgICAgICBGb288PyBleHRlbmRzIEludGVnZXI+IGYyID0gcC5uZXcgRm9vPD4oMSk7CisgICAgICAgIEZvbzw/PiBmMyA9IHAubmV3IEZvbzw+KDEpOworICAgICAgICBGb288PyBzdXBlciBJbnRlZ2VyPiBmNCA9IHAubmV3IEZvbzw+KDEpOworCisgICAgICAgIEZvbzxJbnRlZ2VyPiBmNSA9IHAubmV3IEZvbzw+KDEsICIiKTsKKyAgICAgICAgRm9vPD8gZXh0ZW5kcyBJbnRlZ2VyPiBmNiA9IHAubmV3IEZvbzw+KDEsICIiKTsKKyAgICAgICAgRm9vPD8+IGY3ID0gcC5uZXcgRm9vPD4oMSwgIiIpOworICAgICAgICBGb288PyBzdXBlciBJbnRlZ2VyPiBmOCA9IHAubmV3IEZvbzw+KDEsICIiKTsKKyAgICB9CisKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CisgICAgICAgIFBvczAzPFN0cmluZz4gcDMgPSBuZXcgUG9zMDM8PigpOworICAgICAgICBwMy50ZXN0U2ltcGxlKCk7CisgICAgICAgIHAzLnRlc3RRdWFsaWZpZWRfMSgpOworICAgICAgICBwMy50ZXN0UXVhbGlmaWVkXzIocDMpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nNy9EaWFtb25kUG9zNC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmc3L0RpYW1vbmRQb3M0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjY2YWNiOAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nNy9EaWFtb25kUG9zNC5qYXZhCkBAIC0wLDAgKzEsMjMgQEAKK3B1YmxpYyBjbGFzcyBQb3M0PFU+IHsKKworICAgIHZvaWQgdGVzdCgpIHsKKyAgICAgICAgY2xhc3MgRm9vPFY+IHsKKyAgICAgICAgICAgIEZvbyhWIHgpIHt9CisgICAgICAgICAgICA8Wj4gRm9vKFYgeCwgWiB6KSB7fQorICAgICAgICB9CisgICAgICAgIEZvbzxJbnRlZ2VyPiBwMSA9IG5ldyBGb288PigxKTsKKyAgICAgICAgRm9vPD8gZXh0ZW5kcyBJbnRlZ2VyPiBwMiA9IG5ldyBGb288PigxKTsKKyAgICAgICAgRm9vPD8+IHAzID0gbmV3IEZvbzw+KDEpOworICAgICAgICBGb288PyBzdXBlciBJbnRlZ2VyPiBwNCA9IG5ldyBGb288PigxKTsKKworICAgICAgICBGb288SW50ZWdlcj4gcDUgPSBuZXcgRm9vPD4oMSwgIiIpOworICAgICAgICBGb288PyBleHRlbmRzIEludGVnZXI+IHA2ID0gbmV3IEZvbzw+KDEsICIiKTsKKyAgICAgICAgRm9vPD8+IHA3ID0gbmV3IEZvbzw+KDEsICIiKTsKKyAgICAgICAgRm9vPD8gc3VwZXIgSW50ZWdlcj4gcDggPSBuZXcgRm9vPD4oMSwgIiIpOworICAgIH0KKworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKKyAgICAgICAgUG9zNDxTdHJpbmc+IHA0ID0gbmV3IFBvczQ8PigpOworICAgICAgICBwNC50ZXN0KCk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmc3L0RpYW1vbmRQb3M1LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZzcvRGlhbW9uZFBvczUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZjYwNDUxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmc3L0RpYW1vbmRQb3M1LmphdmEKQEAgLTAsMCArMSwxMiBAQAorcHVibGljIGNsYXNzIFBvczA1IHsKKworICAgIHN0YXRpYyBjbGFzcyBGb288WD4geworICAgICAgICBGb28oWCB4KSB7fQorICAgIH0KKworICAgIHZvaWQgbShGb288SW50ZWdlcj4gZmkpIHt9CisKKyAgICB2b2lkIHRlc3QoKSB7CisgICAgICAgIG0obmV3IEZvbzw+KDEpKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZzcvRGlhbW9uZFBvczYuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nNy9EaWFtb25kUG9zNi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM1ZmM2OTIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZzcvRGlhbW9uZFBvczYuamF2YQpAQCAtMCwwICsxLDIwIEBACitjbGFzcyBQb3MwNiB7CisgICAgc3RhdGljIGNsYXNzIEZvbzxYPiB7CisgICAgICAgIEZvbyhYIHgpIHsgIH0KKyAgICB9CisKKyAgICBzdGF0aWMgY2xhc3MgRG91YmxlRm9vPFgsWT4geworICAgICAgICBEb3VibGVGb28oWCB4LFkgeSkgeyAgfQorICAgIH0KKworICAgIHN0YXRpYyBjbGFzcyBUcmlwbGVGb288WCxZLFo+IHsKKyAgICAgICAgVHJpcGxlRm9vKFggeCxZIHksWiB6KSB7ICB9CisgICAgfQorCisgICAgRm9vPD8gZXh0ZW5kcyBJbnRlZ2VyPiBmaSA9IG5ldyBGb288PigxKTsKKyAgICBGb288Pz4gZncgPSBuZXcgRm9vPD4oZmkpOworICAgIEZvbzw/IGV4dGVuZHMgRG91YmxlPiBmZCA9IG5ldyBGb288PigzLjApOworICAgIERvdWJsZUZvbzw/LD8+IGR3ID0gbmV3IERvdWJsZUZvbzw+KGZpLGZkKTsKKyAgICBGb288U3RyaW5nPiBmcyA9IG5ldyBGb288Pigib25lIik7CisgICAgVHJpcGxlRm9vPD8sPyw/PiB0dyA9IG5ldyBUcmlwbGVGb288PihmaSxmZCxmcyk7Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZzcvRGlhbW9uZFBvczcuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nNy9EaWFtb25kUG9zNy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk1ODQ0M2UKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZzcvRGlhbW9uZFBvczcuamF2YQpAQCAtMCwwICsxLDEyIEBACitjbGFzcyBQb3MwNyB7CisgICAgc3RhdGljIGNsYXNzIEZvbzxYIGV4dGVuZHMgTnVtYmVyICYgQ29tcGFyYWJsZTxOdW1iZXI+PiB7fQorICAgIHN0YXRpYyBjbGFzcyBEb3VibGVGb288WCBleHRlbmRzIE51bWJlciAmIENvbXBhcmFibGU8TnVtYmVyPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFkgZXh0ZW5kcyBOdW1iZXIgJiBDb21wYXJhYmxlPE51bWJlcj4+IHt9CisgICAgc3RhdGljIGNsYXNzIFRyaXBsZUZvbzxYIGV4dGVuZHMgTnVtYmVyICYgQ29tcGFyYWJsZTxOdW1iZXI+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgWSBleHRlbmRzIE51bWJlciAmIENvbXBhcmFibGU8TnVtYmVyPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFo+IHt9CisKKyAgICBGb288Pz4gZncgPSBuZXcgRm9vPD4oKTsKKyAgICBEb3VibGVGb288Pyw/PiBkdyA9IG5ldyBEb3VibGVGb288PigpOworICAgIFRyaXBsZUZvbzw/LD8sPz4gdHcgPSBuZXcgVHJpcGxlRm9vPD4oKTsKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nNy9EaWFtb25kUG9zOS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmc3L0RpYW1vbmRQb3M5LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2QzMDg2MQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nNy9EaWFtb25kUG9zOS5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKK2NsYXNzIFBvczk8WD4geworCisgICAgUG9zOShYIHgpIHt9CisKKworICAgIFBvczk8WD4gdGVzdChYIHgpIHsKKyAgICAgICAgcmV0dXJuIG5ldyBQb3M5PD4oeCk7CisgICAgfQorfQorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZzcvRHVwbGljYXRlQW5ub3RhdGlvbnMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nNy9EdXBsaWNhdGVBbm5vdGF0aW9ucy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRiNTRhZmYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZzcvRHVwbGljYXRlQW5ub3RhdGlvbnMuamF2YQpAQCAtMCwwICsxLDQgQEAKK2NsYXNzIEN7CisgICAgQDxlcnJvciBkZXNjcj0iRHVwbGljYXRlIGFubm90YXRpb24iPkRlcHJlY2F0ZWQ8L2Vycm9yPiBAPGVycm9yIGRlc2NyPSJEdXBsaWNhdGUgYW5ub3RhdGlvbiI+RGVwcmVjYXRlZDwvZXJyb3I+CisgICAgdm9pZCBmb28oQDxlcnJvciBkZXNjcj0iRHVwbGljYXRlIGFubm90YXRpb24iPkRlcHJlY2F0ZWQ8L2Vycm9yPiBAPGVycm9yIGRlc2NyPSJEdXBsaWNhdGUgYW5ub3RhdGlvbiI+RGVwcmVjYXRlZDwvZXJyb3I+IGludCB4KXt9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZzcvRHluYW1pY2FsbHlBZGRJZ25vcmVkQW5ub3RhdGlvbnMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nNy9EeW5hbWljYWxseUFkZElnbm9yZWRBbm5vdGF0aW9ucy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk3ZDQwNWQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZzcvRHluYW1pY2FsbHlBZGRJZ25vcmVkQW5ub3RhdGlvbnMuamF2YQpAQCAtMCwwICsxLDkgQEAKKworcHVibGljIGNsYXNzIDx3YXJuaW5nIGRlc2NyPSJDbGFzcyAnV2l0aE1haW4nIGlzIG5ldmVyIHVzZWQiPldpdGhNYWluPC93YXJuaW5nPiB7CisgIEBNeUFubm8KKyAgcHVibGljIHZvaWQgPHdhcm5pbmcgZGVzY3I9Ik1ldGhvZCAnbXlUZXN0TWV0aG9kKCknIGlzIG5ldmVyIHVzZWQiPm15VGVzdE1ldGhvZDwvd2FybmluZz4oKXt9Cit9CisKK0BpbnRlcmZhY2UgTXlBbm5vIHsKKworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nNy9FbmNsb3NpbmdJbnN0YW5jZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmc3L0VuY2xvc2luZ0luc3RhbmNlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDkwNmY1NAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nNy9FbmNsb3NpbmdJbnN0YW5jZS5qYXZhCkBAIC0wLDAgKzEsMjIgQEAKK2NsYXNzIE90aGVyQ2xhc3MgeworICAgIHB1YmxpYyBjbGFzcyBJbm5lckNsYXNzIHt9Cit9CisKK2NsYXNzIE1haW48QiBleHRlbmRzIE90aGVyQ2xhc3MuSW5uZXJDbGFzcz4geyB9CitjbGFzcyBNYWluMSBleHRlbmRzIDxlcnJvciBkZXNjcj0iTm8gZW5jbG9zaW5nIGluc3RhbmNlIG9mIHR5cGUgJ090aGVyQ2xhc3MnIGlzIGluIHNjb3BlIj5PdGhlckNsYXNzLklubmVyQ2xhc3M8L2Vycm9yPiB7IH0KKworY2xhc3MgTm9uRGVmYXVsdENvbnN0cnVjdG9yQ29udGFpbmVyIHsKKyAgICBwdWJsaWMgY2xhc3MgSW5uZXIgeworICAgICAgICBwdWJsaWMgSW5uZXIoU3RyaW5nIHMpIHt9CisgICAgfQorfQorCitjbGFzcyBVc2FnZVdpdGhQYXJlbnRoZXNpcyBleHRlbmRzIE5vbkRlZmF1bHRDb25zdHJ1Y3RvckNvbnRhaW5lci5Jbm5lciB7CisgICAgcHVibGljIFVzYWdlV2l0aFBhcmVudGhlc2lzKCkgeworICAgICAgIChuZXcgTm9uRGVmYXVsdENvbnN0cnVjdG9yQ29udGFpbmVyKCkpLnN1cGVyKCIiKTsKKyAgICB9CisKKyAgICBwdWJsaWMgVXNhZ2VXaXRoUGFyZW50aGVzaXMoTm9uRGVmYXVsdENvbnN0cnVjdG9yQ29udGFpbmVyIGUpIHsKKyAgICAgICAoZSkuc3VwZXIoIiIpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nNy9FbnVtU3ludGhldGljTWV0aG9kcy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmc3L0VudW1TeW50aGV0aWNNZXRob2RzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2NmZTUzNwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nNy9FbnVtU3ludGhldGljTWV0aG9kcy5qYXZhCkBAIC0wLDAgKzEsMjUgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwMC0yMDExIEpldEJyYWlucyBzLnIuby4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitlbnVtIENvbG9yIHsKKyAgUkVELCBHUkVFTiwgQkxVRTsKKworICB2b2lkIGZvbyAoKSB7CisgICAgZm9yIChDb2xvciBjIDogdmFsdWVzICgpKSB7CisgICAgfQorCisgICAgQ29sb3IgcmVkID0gdmFsdWVPZigiUkVEIik7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZzcvRXJhc3VyZUNsYXNoQ29uZnVzaW9uLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZzcvRXJhc3VyZUNsYXNoQ29uZnVzaW9uLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTM0M2JmOAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nNy9FcmFzdXJlQ2xhc2hDb25mdXNpb24uamF2YQpAQCAtMCwwICsxLDM5IEBACisvKgorICogQ29weXJpZ2h0IDIwMDAtMjAxMSBKZXRCcmFpbnMgcy5yLm8uCisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworaW1wb3J0IGphdmEudXRpbC5IYXNoTWFwOworaW1wb3J0IGphdmEudXRpbC5NYXA7CisKKy8vIElERUEtNjk2MjkKK2NsYXNzIEMgeworICBwdWJsaWMgc3RhdGljIGludGVyZmFjZSBHZW5lcmljQWdub3N0aWNQcm9jZXNzb3IgeworICAgIHZvaWQgPHdhcm5pbmcgZGVzY3I9Ik1ldGhvZCAncHJvY2Vzc01hcChqYXZhLnV0aWwuTWFwKScgaXMgbmV2ZXIgdXNlZCI+cHJvY2Vzc01hcDwvd2FybmluZz4oTWFwIG1hcCk7CisgICAgLy8gICBeXl4gdG8gY2RyOiBzaG91bGQgbm90IGJlIG1hcmtlZCBhcyB1bnVzZWQKKyAgfQorCisgIHB1YmxpYyBzdGF0aWMgaW50ZXJmYWNlIEdlbmVyaWNBd2FyZVByb2Nlc3NvciB7CisgICAgdm9pZCA8d2FybmluZyBkZXNjcj0iTWV0aG9kICdwcm9jZXNzTWFwKGphdmEudXRpbC5NYXA8amF2YS5sYW5nLlN0cmluZyxqYXZhLmxhbmcuU3RyaW5nPiknIGlzIG5ldmVyIHVzZWQiPnByb2Nlc3NNYXA8L3dhcm5pbmc+KE1hcDxTdHJpbmcsIFN0cmluZz4gbWFwKTsKKyAgICAvLyAgIF5eXiB0byBjZHI6IHNob3VsZCBub3QgYmUgbWFya2VkIGFzIHVudXNlZAorICB9CisKKyAgcHVibGljIHN0YXRpYyBjbGFzcyBUZXN0UHJvY2Vzc29yIGltcGxlbWVudHMgR2VuZXJpY0F3YXJlUHJvY2Vzc29yLCBHZW5lcmljQWdub3N0aWNQcm9jZXNzb3IgeworICAgIEBPdmVycmlkZSBwdWJsaWMgdm9pZCBwcm9jZXNzTWFwKE1hcCBtYXApIHsgfQorICB9CisKKyAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgeworICAgIGZpbmFsIFRlc3RQcm9jZXNzb3IgdGVzdFByb2Nlc3NvciA9IG5ldyBUZXN0UHJvY2Vzc29yKCk7CisgICAgdGVzdFByb2Nlc3Nvci5wcm9jZXNzTWFwKG5ldyBIYXNoTWFwKCkpOworICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZzcvRXh0ZW5kc0JvdW5kLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZzcvRXh0ZW5kc0JvdW5kLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmI0ODYyYgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nNy9FeHRlbmRzQm91bmQuamF2YQpAQCAtMCwwICsxLDMyIEBACisvKgorICogQ29weXJpZ2h0IDIwMDAtMjAxMSBKZXRCcmFpbnMgcy5yLm8uCisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworY2xhc3MgRXh0ZW5kc0JvdW5kIHsKKyAgc3RhdGljIGNsYXNzIEVudGl0eTxULCBQPiB7IH0KKyAgc3RhdGljIGNsYXNzIFdyYXBwZXI8RSBleHRlbmRzIEVudGl0eTxULCA/PiwgVD4geyB9CisKKyAgc3RhdGljIDxULCBFIGV4dGVuZHMgRW50aXR5PFQsID8+PiBXcmFwcGVyPEUsIFQ+IGNyZWF0ZTEoVCB0KSB7CisgICAgcmV0dXJuIG5ldyBXcmFwcGVyPEUsIFQ+KCk7CisgIH0KKworICBzdGF0aWMgPEUgZXh0ZW5kcyBFbnRpdHk8VCwgPz4sIFQ+IFdyYXBwZXI8RSwgVD4gY3JlYXRlMihUIHQpIHsKKyAgICByZXR1cm4gbmV3IFdyYXBwZXI8RSwgVD4oKTsKKyAgfQorCisgIHN0YXRpYyB2b2lkIHRlc3QoT2JqZWN0IG8pIHsKKyAgICBjcmVhdGUxKG8pOworICAgIGNyZWF0ZTIobyk7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZzcvRXh0ZW5zaW9uTWV0aG9kU3ludGF4LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZzcvRXh0ZW5zaW9uTWV0aG9kU3ludGF4LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTVlMDkxNwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nNy9FeHRlbnNpb25NZXRob2RTeW50YXguamF2YQpAQCAtMCwwICsxLDggQEAKK2ludGVyZmFjZSBJIHsKKyAgdm9pZCBtMSgpIDxlcnJvciBkZXNjcj0iRGVwcmVjYXRlZCBleHRlbnNpb24gbWV0aG9kIHN5bnRheCI+ZGVmYXVsdDwvZXJyb3I+IHsgfQorCisgIGRlZmF1bHQgdm9pZCBtMigpIDxlcnJvciBkZXNjcj0iRGVwcmVjYXRlZCBleHRlbnNpb24gbWV0aG9kIHN5bnRheCI+ZGVmYXVsdDwvZXJyb3I+IHsgfQorCisgIEBTdXBwcmVzc1dhcm5pbmdzKCJleHRlbnNpb25TeW50YXgiKQorICB2b2lkIG0zKCkgZGVmYXVsdCB7IH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZzcvRXh0ZW5zaW9uTWV0aG9kcy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmc3L0V4dGVuc2lvbk1ldGhvZHMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hN2ZjYjk5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmc3L0V4dGVuc2lvbk1ldGhvZHMuamF2YQpAQCAtMCwwICsxLDY0IEBACisvKgorICogQ29weXJpZ2h0IDIwMDAtMjAxMiBKZXRCcmFpbnMgcy5yLm8uCisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCitjbGFzcyBDIHsKKyAgaW50ZXJmYWNlIEkgeworICAgIGludCBpID0gNDI7CisgICAgdm9pZCBtKCkgZGVmYXVsdCB7IH0KKyAgfQorCisgIGludGVyZmFjZSBJSSBleHRlbmRzIEkgeworICAgIHZvaWQgbSgpIGRlZmF1bHQgeworICAgICAgSS5zdXBlci5tKCk7CisgICAgICA8ZXJyb3IgZGVzY3I9IlVucXVhbGlmaWVkIHN1cGVyIHJlZmVyZW5jZSBpcyBub3QgYWxsb3dlZCBpbiBleHRlbnNpb24gbWV0aG9kIj5zdXBlci5tPC9lcnJvcj4oKTsKKworICAgICAgU3lzdGVtLm91dC5wcmludGxuKEkuc3VwZXIuaSk7CisgICAgICBTeXN0ZW0ub3V0LnByaW50bG48ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIG1ldGhvZCAncHJpbnRsbig/KSciPig8ZXJyb3IgZGVzY3I9IlVucXVhbGlmaWVkIHN1cGVyIHJlZmVyZW5jZSBpcyBub3QgYWxsb3dlZCBpbiBleHRlbnNpb24gbWV0aG9kIj5zdXBlci5pPC9lcnJvcj4pPC9lcnJvcj47CisgICAgfQorCisgICAgdm9pZCBtYSgpOworICB9CisKKyAgdm9pZCB0ZXN0KCkgeworICAgIG5ldyBJKCl7fS5tKCk7CisKKyAgICBuZXcgSUkoKSB7CisgICAgICBwdWJsaWMgdm9pZCBtYSgpIHsKKyAgICAgICAgPGVycm9yIGRlc2NyPSInQy5JJyBpcyBub3QgYW4gZW5jbG9zaW5nIGNsYXNzIj5JLnN1cGVyPC9lcnJvcj4ubSgpOworICAgICAgICBJSS5zdXBlci5tKCk7CisgICAgICAgIDxlcnJvciBkZXNjcj0iQWJzdHJhY3QgbWV0aG9kICdtYSgpJyBjYW5ub3QgYmUgYWNjZXNzZWQgZGlyZWN0bHkiPklJLnN1cGVyLm1hKCk8L2Vycm9yPjsKKyAgICAgIH0KKyAgICB9Lm0oKTsKKyAgfQorfQorCitjbGFzcyBEIHsKKyAgPGVycm9yIGRlc2NyPSJFeHRlbnNpb24gbWV0aG9kcyBjYW4gb25seSBiZSB1c2VkIHdpdGhpbiBhbiBpbnRlcmZhY2UiPnZvaWQgbSgpPC9lcnJvcj4gZGVmYXVsdCB7IH0KK30KKworaW50ZXJmYWNlIElsbGVnYWxNb2RzIHsKKyAgPGVycm9yIGRlc2NyPSJJbGxlZ2FsIGNvbWJpbmF0aW9uIG9mIG1vZGlmaWVyczogJ3N0YXRpYycgYW5kICdhYnN0cmFjdCciPnN0YXRpYzwvZXJyb3I+IHZvaWQgbTEoKTsKKyAgPGVycm9yIGRlc2NyPSJJbGxlZ2FsIGNvbWJpbmF0aW9uIG9mIG1vZGlmaWVyczogJ3N0YXRpYycgYW5kICdkZWZhdWx0JyI+c3RhdGljPC9lcnJvcj4gdm9pZCBtMigpIGRlZmF1bHQgeyB9CisgIDxlcnJvciBkZXNjcj0iSWxsZWdhbCBjb21iaW5hdGlvbiBvZiBtb2RpZmllcnM6ICdzdGF0aWMnIGFuZCAnZGVmYXVsdCciPnN0YXRpYzwvZXJyb3I+IDxlcnJvciBkZXNjcj0iSWxsZWdhbCBjb21iaW5hdGlvbiBvZiBtb2RpZmllcnM6ICdkZWZhdWx0JyBhbmQgJ3N0YXRpYyciPmRlZmF1bHQ8L2Vycm9yPiB2b2lkIG0zKCkgeyB9CisKKyAgPGVycm9yIGRlc2NyPSJJbGxlZ2FsIGNvbWJpbmF0aW9uIG9mIG1vZGlmaWVyczogJ2Fic3RyYWN0JyBhbmQgJ2RlZmF1bHQnIj5hYnN0cmFjdDwvZXJyb3I+IHZvaWQgbTQoKSBkZWZhdWx0IHsgfQorICA8ZXJyb3IgZGVzY3I9IklsbGVnYWwgY29tYmluYXRpb24gb2YgbW9kaWZpZXJzOiAnYWJzdHJhY3QnIGFuZCAnZGVmYXVsdCciPmFic3RyYWN0PC9lcnJvcj4gPGVycm9yIGRlc2NyPSJJbGxlZ2FsIGNvbWJpbmF0aW9uIG9mIG1vZGlmaWVyczogJ2RlZmF1bHQnIGFuZCAnYWJzdHJhY3QnIj5kZWZhdWx0PC9lcnJvcj4gdm9pZCBtNSgpIHsgfQorCisgIDxlcnJvciBkZXNjcj0iRXh0ZW5zaW9uIG1ldGhvZCBzaG91bGQgaGF2ZSBhIGJvZHkiPmRlZmF1bHQgdm9pZCBtNigpPC9lcnJvcj47CisKKyAgPGVycm9yIGRlc2NyPSJNb2RpZmllciAnZGVmYXVsdCcgbm90IGFsbG93ZWQgaGVyZSI+ZGVmYXVsdDwvZXJyb3I+IGludCBpOworICA8ZXJyb3IgZGVzY3I9Ik1vZGlmaWVyICdkZWZhdWx0JyBub3QgYWxsb3dlZCBoZXJlIj5kZWZhdWx0PC9lcnJvcj4gaW50ZXJmYWNlIFggeyB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmc3L0dlbmVyaWNzQXJyYXlDcmVhdGlvbi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmc3L0dlbmVyaWNzQXJyYXlDcmVhdGlvbi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVhZTgwZTAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZzcvR2VuZXJpY3NBcnJheUNyZWF0aW9uLmphdmEKQEAgLTAsMCArMSw4IEBACitjbGFzcyBBPFQ+IHsKKyAgICBjbGFzcyBCe30KK30KK2NsYXNzIEM8VD4gZXh0ZW5kcyBBPFQ+IHsKKyAgICB7CisgICAgICAgIEJbXSBvID0gPGVycm9yIGRlc2NyPSJHZW5lcmljIGFycmF5IGNyZWF0aW9uIj57fTwvZXJyb3I+OworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZzcvSGlnaGxpZ2h0SW5hY2Nlc3NpYmxlRnJvbUNsYXNzTW9kaWZpZXJMaXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZzcvSGlnaGxpZ2h0SW5hY2Nlc3NpYmxlRnJvbUNsYXNzTW9kaWZpZXJMaXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTAyZGI4ZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nNy9IaWdobGlnaHRJbmFjY2Vzc2libGVGcm9tQ2xhc3NNb2RpZmllckxpc3QuamF2YQpAQCAtMCwwICsxLDQgQEAKK0BTdXBwcmVzc1dhcm5pbmdzKDxlcnJvciBkZXNjcj0iJ1RoaXNDbGFzcy5GT08nIGhhcyBwcml2YXRlIGFjY2VzcyBpbiAnVGhpc0NsYXNzJyI+VGhpc0NsYXNzLkZPTzwvZXJyb3I+KQorcHVibGljIGNsYXNzIFRoaXNDbGFzcyB7CisgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBGT08gPSAiZm9vIjsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZzcvSURFQTg0NTMzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZzcvSURFQTg0NTMzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjNjMjdlZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nNy9JREVBODQ1MzMuamF2YQpAQCAtMCwwICsxLDE5IEBACitwdWJsaWMgY2xhc3MgTWFpbiB7CisgICAgc3RhdGljIGNsYXNzIEEge30KKyAgICBzdGF0aWMgY2xhc3MgQiBleHRlbmRzIEEge30KKyAgICBzdGF0aWMgY2xhc3MgWDxUPiB7IH0KKyAgICBzdGF0aWMgY2xhc3MgWTxUPiBleHRlbmRzIFg8VD4geyB9CisKKyAgICBwcml2YXRlIHZvaWQgdGVzdDEoWDxCPiB4KSB7CisgICAgICAgIFk8QT4geSA9IDxlcnJvciBkZXNjcj0iSW5jb252ZXJ0aWJsZSB0eXBlczsgY2Fubm90IGNhc3QgJ01haW4uWDxNYWluLkI+JyB0byAnTWFpbi5ZPE1haW4uQT4nIj4oWTxBPikgeDwvZXJyb3I+OworICAgIH0KKworICAgIHByaXZhdGUgdm9pZCB0ZXN0MihYPEE+IHgpIHsKKyAgICAgICAgWTxBPiB5ID0gKFk8QT4pIHg7CisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIHRlc3QzKFk8Qj4geTEpIHsKKyAgICAgICAgQFN1cHByZXNzV2FybmluZ3MoInVuY2hlY2tlZCIpCisgICAgICAgIFk8QT4geTIgPSA8ZXJyb3IgZGVzY3I9IkluY29udmVydGlibGUgdHlwZXM7IGNhbm5vdCBjYXN0ICdNYWluLlk8TWFpbi5CPicgdG8gJ01haW4uWTxNYWluLkE+JyI+KFk8QT4pIHkxPC9lcnJvcj47CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmc3L0ltcHJvdmVkQ2F0Y2hBbmFseXNpcy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmc3L0ltcHJvdmVkQ2F0Y2hBbmFseXNpcy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY1OTM1MzEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZzcvSW1wcm92ZWRDYXRjaEFuYWx5c2lzLmphdmEKQEAgLTAsMCArMSwyNDEgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwMC0yMDExIEpldEJyYWlucyBzLnIuby4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitpbXBvcnQgamF2YS5pby4qOworCitjbGFzcyBDIHsKKyAgc3RhdGljIGNsYXNzIEUgZXh0ZW5kcyBFeGNlcHRpb24geyB9CisgIHN0YXRpYyBjbGFzcyBSRSBleHRlbmRzIFJ1bnRpbWVFeGNlcHRpb24geyB9CisKKyAgdm9pZCBmKCkgeyB9CisgIHZvaWQgZygpIHRocm93cyBFIHsgfQorICB2b2lkIGgoKSB0aHJvd3MgUkUgeyB9CisKKyAgdm9pZCBtMCgpIHsKKyAgICB0cnkgeyB0aHJvdyBuZXcgRmlsZU5vdEZvdW5kRXhjZXB0aW9uKCk7IH0KKyAgICBjYXRjaCAoRmlsZU5vdEZvdW5kRXhjZXB0aW9uIGUpIHsgfQorICAgIDx3YXJuaW5nIGRlc2NyPSJVbnJlYWNoYWJsZSBzZWN0aW9uOiBleGNlcHRpb24gJ2phdmEuaW8uRmlsZU5vdEZvdW5kRXhjZXB0aW9uJyBoYXMgYWxyZWFkeSBiZWVuIGNhdWdodCI+Y2F0Y2ggKElPRXhjZXB0aW9uIGUpIHsgfTwvd2FybmluZz4KKyAgfQorCisgIHZvaWQgbTEoKSB7CisgICAgdHJ5IHsgdGhyb3cgbmV3IElPRXhjZXB0aW9uKCk7IH0KKyAgICBjYXRjaCAoRmlsZU5vdEZvdW5kRXhjZXB0aW9uIGUpIHsgfQorICAgIGNhdGNoIChJT0V4Y2VwdGlvbiBlKSB7IH0KKyAgfQorCisgIHZvaWQgbTIoKSB7CisgICAgdHJ5IHsgZigpOyB9CisgICAgY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7IH0KKyAgfQorCisgIHZvaWQgbTMoKSB7CisgICAgdHJ5IHsgZygpOyB9CisgICAgY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7IH0KKyAgfQorCisgIHZvaWQgbTQoKSB7CisgICAgdHJ5IHsgaCgpOyB9CisgICAgY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7IH0KKyAgfQorCisgIHZvaWQgbTUoKSB7CisgICAgdHJ5IHsgZigpOyB9CisgICAgY2F0Y2ggKFRocm93YWJsZSB0KSB7IH0KKyAgfQorCisgIHZvaWQgbTYoKSB7CisgICAgdHJ5IHsgZygpOyB9CisgICAgY2F0Y2ggKFRocm93YWJsZSB0KSB7IH0KKyAgfQorCisgIHZvaWQgbTcoKSB7CisgICAgdHJ5IHsgaCgpOyB9CisgICAgY2F0Y2ggKFRocm93YWJsZSB0KSB7IH0KKyAgfQorCisgIHZvaWQgbTkoKSB7CisgICAgdHJ5IHsgZigpOyB9CisgICAgY2F0Y2ggKEVycm9yIGUpIHsgfQorICAgIGNhdGNoIChUaHJvd2FibGUgdCkgeyB9CisgIH0KKworICB2b2lkIG0xMCgpIHsKKyAgICB0cnkgeyBnKCk7IH0KKyAgICBjYXRjaCAoRXJyb3IgZSkgeyB9CisgICAgY2F0Y2ggKFRocm93YWJsZSB0KSB7IH0KKyAgfQorCisgIHZvaWQgbTExKCkgeworICAgIHRyeSB7IGgoKTsgfQorICAgIGNhdGNoIChFcnJvciBlKSB7IH0KKyAgICBjYXRjaCAoVGhyb3dhYmxlIHQpIHsgfQorICB9CisKKyAgdm9pZCBtMTIoKSB7CisgICAgdHJ5IHsgZigpOyB9CisgICAgY2F0Y2ggKFJ1bnRpbWVFeGNlcHRpb24gZSkgeyB9CisgICAgY2F0Y2ggKFRocm93YWJsZSB0KSB7IH0KKyAgfQorCisgIHZvaWQgbTEzKCkgeworICAgIHRyeSB7IGcoKTsgfQorICAgIGNhdGNoIChSdW50aW1lRXhjZXB0aW9uIGUpIHsgfQorICAgIGNhdGNoIChUaHJvd2FibGUgdCkgeyB9CisgIH0KKworICB2b2lkIG0xNCgpIHsKKyAgICB0cnkgeyBoKCk7IH0KKyAgICBjYXRjaCAoUnVudGltZUV4Y2VwdGlvbiBlKSB7IH0KKyAgICBjYXRjaCAoVGhyb3dhYmxlIHQpIHsgfQorICB9CisKKyAgdm9pZCBtMTUoKSB7CisgICAgdHJ5IHsgZigpOyB9CisgICAgY2F0Y2ggKFJ1bnRpbWVFeGNlcHRpb24gZSkgeyB9CisgICAgY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7IH0KKyAgfQorCisgIHZvaWQgbTE2KCkgeworICAgIHRyeSB7IGcoKTsgfQorICAgIGNhdGNoIChSdW50aW1lRXhjZXB0aW9uIGUpIHsgfQorICAgIGNhdGNoIChFeGNlcHRpb24gZSkgeyB9CisgIH0KKworICB2b2lkIG0xNygpIHsKKyAgICB0cnkgeyBoKCk7IH0KKyAgICBjYXRjaCAoUnVudGltZUV4Y2VwdGlvbiBlKSB7IH0KKyAgICBjYXRjaCAoRXhjZXB0aW9uIGUpIHsgfQorICB9CisKKyAgdm9pZCBtMTgoKSB7CisgICAgdHJ5IHsgZigpOyB9CisgICAgY2F0Y2ggKFJ1bnRpbWVFeGNlcHRpb24gZSkgeyB9CisgICAgY2F0Y2ggKDxlcnJvciBkZXNjcj0iRXhjZXB0aW9uICdDLkUnIGlzIG5ldmVyIHRocm93biBpbiB0aGUgY29ycmVzcG9uZGluZyB0cnkgYmxvY2siPkUgZTwvZXJyb3I+KSB7IH0KKyAgICBjYXRjaCAoRXhjZXB0aW9uIGUpIHsgfQorICB9CisKKyAgdm9pZCBtMTkoKSB7CisgICAgdHJ5IHsgZygpOyB9CisgICAgY2F0Y2ggKFJ1bnRpbWVFeGNlcHRpb24gZSkgeyB9CisgICAgY2F0Y2ggKEUgZSkgeyB9CisgICAgY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7IH0KKyAgfQorCisgIHZvaWQgbTIwKCkgeworICAgIHRyeSB7IGgoKTsgfQorICAgIGNhdGNoIChSdW50aW1lRXhjZXB0aW9uIGUpIHsgfQorICAgIGNhdGNoICg8ZXJyb3IgZGVzY3I9IkV4Y2VwdGlvbiAnQy5FJyBpcyBuZXZlciB0aHJvd24gaW4gdGhlIGNvcnJlc3BvbmRpbmcgdHJ5IGJsb2NrIj5FIGU8L2Vycm9yPikgeyB9CisgICAgY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7IH0KKyAgfQorCisgIHZvaWQgbTIxKCkgeworICAgIHRyeSB7IGYoKTsgfQorICAgIGNhdGNoIChSdW50aW1lRXhjZXB0aW9uIGUpIHsgfQorICAgIGNhdGNoIChFeGNlcHRpb24gZSkgeyB9CisgIH0KKworICB2b2lkIG0yMigpIHsKKyAgICB0cnkgeyBnKCk7IH0KKyAgICBjYXRjaCAoUnVudGltZUV4Y2VwdGlvbiBlKSB7IH0KKyAgICBjYXRjaCAoRXhjZXB0aW9uIGUpIHsgfQorICB9CisKKyAgdm9pZCBtMjMoKSB7CisgICAgdHJ5IHsgaCgpOyB9CisgICAgY2F0Y2ggKFJ1bnRpbWVFeGNlcHRpb24gZSkgeyB9CisgICAgY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7IH0KKyAgfQorCisgIHZvaWQgbTI0KCkgeworICAgIHRyeSB7IGYoKTsgfQorICAgIGNhdGNoIChSdW50aW1lRXhjZXB0aW9uIGUpIHsgfQorICAgIGNhdGNoIChFcnJvciBlKSB7IH0KKyAgICBjYXRjaCAoVGhyb3dhYmxlIHQpIHsgfQorICB9CisKKyAgdm9pZCBtMjUoKSB7CisgICAgdHJ5IHsgZygpOyB9CisgICAgY2F0Y2ggKFJ1bnRpbWVFeGNlcHRpb24gZSkgeyB9CisgICAgY2F0Y2ggKEVycm9yIGUpIHsgfQorICAgIGNhdGNoIChUaHJvd2FibGUgdCkgeyB9CisgIH0KKworICB2b2lkIG0yNigpIHsKKyAgICB0cnkgeyBoKCk7IH0KKyAgICBjYXRjaCAoUnVudGltZUV4Y2VwdGlvbiBlKSB7IH0KKyAgICBjYXRjaCAoRXJyb3IgZSkgeyB9CisgICAgY2F0Y2ggKFRocm93YWJsZSB0KSB7IH0KKyAgfQorCisgIHZvaWQgbTI3KCkgeworICAgIHRyeSB7IGYoKTsgfQorICAgIGNhdGNoIChSdW50aW1lRXhjZXB0aW9uIGUpIHsgfQorICAgIGNhdGNoIChFcnJvciBlKSB7IH0KKyAgICBjYXRjaCAoPGVycm9yIGRlc2NyPSJFeGNlcHRpb24gJ0MuRScgaXMgbmV2ZXIgdGhyb3duIGluIHRoZSBjb3JyZXNwb25kaW5nIHRyeSBibG9jayI+RSBlPC9lcnJvcj4pIHsgfQorICAgIGNhdGNoIChUaHJvd2FibGUgdCkgeyB9CisgIH0KKworICB2b2lkIG0yOCgpIHsKKyAgICB0cnkgeyBnKCk7IH0KKyAgICBjYXRjaCAoUnVudGltZUV4Y2VwdGlvbiBlKSB7IH0KKyAgICBjYXRjaCAoRXJyb3IgZSkgeyB9CisgICAgY2F0Y2ggKEUgZSkgeyB9CisgICAgY2F0Y2ggKFRocm93YWJsZSB0KSB7IH0KKyAgfQorCisgIHZvaWQgbTI5KCkgeworICAgIHRyeSB7IGgoKTsgfQorICAgIGNhdGNoIChSdW50aW1lRXhjZXB0aW9uIGUpIHsgfQorICAgIGNhdGNoIChFcnJvciBlKSB7IH0KKyAgICBjYXRjaCAoPGVycm9yIGRlc2NyPSJFeGNlcHRpb24gJ0MuRScgaXMgbmV2ZXIgdGhyb3duIGluIHRoZSBjb3JyZXNwb25kaW5nIHRyeSBibG9jayI+RSBlPC9lcnJvcj4pIHsgfQorICAgIGNhdGNoIChUaHJvd2FibGUgdCkgeyB9CisgIH0KKworICB2b2lkIG0zMCgpIHsKKyAgICB0cnkgeyBmKCk7IH0KKyAgICBjYXRjaCAoUnVudGltZUV4Y2VwdGlvbiBlKSB7IH0KKyAgICBjYXRjaCAoRXJyb3IgZSkgeyB9CisgICAgY2F0Y2ggKFRocm93YWJsZSB0KSB7IH0KKyAgfQorCisgIHZvaWQgbTMxKCkgeworICAgIHRyeSB7IGcoKTsgfQorICAgIGNhdGNoIChSdW50aW1lRXhjZXB0aW9uIGUpIHsgfQorICAgIGNhdGNoIChFcnJvciBlKSB7IH0KKyAgICBjYXRjaCAoVGhyb3dhYmxlIHQpIHsgfQorICB9CisKKyAgdm9pZCBtMzIoKSB7CisgICAgdHJ5IHsgaCgpOyB9CisgICAgY2F0Y2ggKFJ1bnRpbWVFeGNlcHRpb24gZSkgeyB9CisgICAgY2F0Y2ggKEVycm9yIGUpIHsgfQorICAgIGNhdGNoIChUaHJvd2FibGUgdCkgeyB9CisgIH0KKworICB2b2lkIG0zMygpIHsKKyAgICB0cnkgeyBnKCk7IH0KKyAgICBjYXRjaCAoRSBlKSB7IH0KKyAgfQorCisgIHZvaWQgbTM0KCkgeworICAgIHRyeSB7IGgoKTsgfQorICAgIGNhdGNoICg8ZXJyb3IgZGVzY3I9IkV4Y2VwdGlvbiAnQy5FJyBpcyBuZXZlciB0aHJvd24gaW4gdGhlIGNvcnJlc3BvbmRpbmcgdHJ5IGJsb2NrIj5FIGU8L2Vycm9yPikgeyB9CisgIH0KKworICB2b2lkIG0zNSgpIHsKKyAgICB0cnkgeyBmKCk7IH0KKyAgICBjYXRjaCAoPGVycm9yIGRlc2NyPSJFeGNlcHRpb24gJ0MuRScgaXMgbmV2ZXIgdGhyb3duIGluIHRoZSBjb3JyZXNwb25kaW5nIHRyeSBibG9jayI+RSBlPC9lcnJvcj4pIHsgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmc3L0lubmVySW5UeXBlQXJndW1lbnRzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZzcvSW5uZXJJblR5cGVBcmd1bWVudHMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41OTRmZWUyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmc3L0lubmVySW5UeXBlQXJndW1lbnRzLmphdmEKQEAgLTAsMCArMSwzIEBACitjbGFzcyBBPFQgZXh0ZW5kcyA8ZXJyb3IgZGVzY3I9IidBLkInIGhhcyBwcml2YXRlIGFjY2VzcyBpbiAnQSciPkE8VD4uQjwvZXJyb3I+PiB7CisgICAgcHJpdmF0ZSBjbGFzcyBCIHt9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZzcvSmF2YTdDYXN0Q29udmVudGlvbnMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nNy9KYXZhN0Nhc3RDb252ZW50aW9ucy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM3MDM3MTUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZzcvSmF2YTdDYXN0Q29udmVudGlvbnMuamF2YQpAQCAtMCwwICsxLDcgQEAKK2NsYXNzIFRlc3QgeworICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CisgICAgT2JqZWN0IG8gPSBudWxsOworICAgIGlmIChvID09IDEpIHt9CisgICAgaWYgKDEgPT0gbykge30KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nNy9KYXZhY1F1aXJrcy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmc3L0phdmFjUXVpcmtzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTk1NTI5YwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nNy9KYXZhY1F1aXJrcy5qYXZhCkBAIC0wLDAgKzEsMzggQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwMC0yMDExIEpldEJyYWlucyBzLnIuby4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitpbXBvcnQgamF2YS5sYW5nLk9iamVjdDsKKworY2xhc3MgQyB7CisgIEBpbnRlcmZhY2UgVGVzdEFubm90YXRpb24geworICAgIGludFtdIHZhbHVlKCk7CisgIH0KKworICBAVGVzdEFubm90YXRpb24oezAsIDE8d2FybmluZyBkZXNjcj0iVHJhaWxpbmcgY29tbWEgaW4gYW5ub3RhdGlvbiBhcnJheSBpbml0aWFsaXplciBtYXkgY2F1c2UgY29tcGlsYXRpb24gZXJyb3IgaW4gc29tZSBKYXZhYyB2ZXJzaW9ucyAoZS5nLiBKREsgNSBhbmQgSkRLIDYpLiI+LDwvd2FybmluZz59KQorICB2b2lkIG0oKSB7IH0KKworICBjbGFzcyBBPFQ+IHsKKyAgICBjbGFzcyBCPFY+IHsKKyAgICAgIHZvaWQgbShUIHQsIFYgdikgeyBTeXN0ZW0ub3V0LnByaW50bG4odCArICIsICIgKyB2KTsgfQorICAgIH0KKyAgfQorCisgIHZvaWQgbShPYmplY3QgbykgeworICAgIGlmIChvIGluc3RhbmNlb2YgQTw/Pi5CPD8+KSB7CisgICAgICBmaW5hbCBBPD8+LkI8Pz4gYiA9IChBPHdhcm5pbmcgZGVzY3I9IkdlbmVyaWNzIGluIHF1YWxpZmllciByZWZlcmVuY2UgbWF5IGNhdXNlIGNvbXBpbGF0aW9uIGVycm9yIGluIHNvbWUgSmF2YWMgdmVyc2lvbnMgKGUuZy4gSkRLIDUgYW5kIEpESyA2KS4iPjw/Pjwvd2FybmluZz4uQjw/PilvOworICAgICAgYi5tKG51bGwsIG51bGwpOworICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nNy9MYW1iZGFFeHByZXNzaW9ucy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmc3L0xhbWJkYUV4cHJlc3Npb25zLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmFiOTRlMQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nNy9MYW1iZGFFeHByZXNzaW9ucy5qYXZhCkBAIC0wLDAgKzEsMzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwMC0yMDEyIEpldEJyYWlucyBzLnIuby4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKK2ltcG9ydCBqYXZhLnV0aWwuKjsKKworY2xhc3MgQyB7CisgIGludGVyZmFjZSBTaW1wbGVzdCB7CisgICAgdm9pZCBtKCk7CisgIH0KKyAgdm9pZCB1c2UoU2ltcGxlc3QgcykgeyB9CisKKyAgaW50ZXJmYWNlIEludFBhcnNlciB7CisgICAgaW50IHBhcnNlKFN0cmluZyBzKTsKKyAgfQorCisgIHZvaWQgdGVzdCgpIHsKKyAgICBTaW1wbGVzdCBzaW1wbGVzdCA9ICgpIC0+IHsgfTsKKyAgICB1c2UoKCkgLT4geyB9KTsKKworICAgIEludFBhcnNlciBpbnRQYXJzZXIgPSAoU3RyaW5nIHMpIC0+IEludGVnZXIucGFyc2VJbnQocyk7CisgIH0KKworICBSdW5uYWJsZSBmb28oKSB7CisgICAgcmV0dXJuICgpIC0+IHsgU3lzdGVtLm91dC5wcmludGxuKCJmb28iKTsgfTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nNy9NZXRob2RSZWZlcmVuY2VzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZzcvTWV0aG9kUmVmZXJlbmNlcy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU2OWJmYmQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZzcvTWV0aG9kUmVmZXJlbmNlcy5qYXZhCkBAIC0wLDAgKzEsMjggQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwMC0yMDEyIEpldEJyYWlucyBzLnIuby4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKK2NsYXNzIEMgeworICBpbnRlcmZhY2UgU2ltcGxlc3QgeworICAgIHZvaWQgbSgpOworICB9CisgIHZvaWQgc2ltcGxlc3QoKSB7IH0KKyAgdm9pZCB1c2UoU2ltcGxlc3QgcykgeyB9CisKKyAgdm9pZCB0ZXN0KCkgeworICAgIFNpbXBsZXN0IHNpbXBsZXN0ID0gdGhpczo6c2ltcGxlc3Q7CisgICAgdXNlKHRoaXM6OnNpbXBsZXN0KTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nNy9NdWx0aUNhdGNoLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZzcvTXVsdGlDYXRjaC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk0ZTk0NDgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZzcvTXVsdGlDYXRjaC5qYXZhCkBAIC0wLDAgKzEsODggQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwMC0yMDEyIEpldEJyYWlucyBzLnIuby4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCithYnN0cmFjdCBjbGFzcyBDIHsKKyAgcHJpdmF0ZSBzdGF0aWMgY2xhc3MgTkUgeyB9CisgIHByaXZhdGUgc3RhdGljIGNsYXNzIEUgZXh0ZW5kcyBFeGNlcHRpb24geyBwdWJsaWMgU3RyaW5nIHM7IH0KKyAgcHJpdmF0ZSBzdGF0aWMgY2xhc3MgRTEgZXh0ZW5kcyBFIHsgfQorICBwcml2YXRlIHN0YXRpYyBjbGFzcyBFMiBleHRlbmRzIEUgeyB9CisgIHByaXZhdGUgc3RhdGljIGNsYXNzIEUzIGV4dGVuZHMgRSB7IH0KKyAgcHJpdmF0ZSBzdGF0aWMgY2xhc3MgRTQgZXh0ZW5kcyBFIHsgfQorICBwcml2YXRlIHN0YXRpYyBjbGFzcyBSRSBleHRlbmRzIFJ1bnRpbWVFeGNlcHRpb24geyB9CisgIHByaXZhdGUgaW50ZXJmYWNlIEk8VD4geyB2b2lkIGkoKTsgfQorICBwcml2YXRlIHN0YXRpYyBjbGFzcyBJRTEgZXh0ZW5kcyBFIGltcGxlbWVudHMgSTxJbnRlZ2VyPiB7IHB1YmxpYyB2b2lkIGkoKSB7IH0gfQorICBwcml2YXRlIHN0YXRpYyBjbGFzcyBJRTIgZXh0ZW5kcyBFIGltcGxlbWVudHMgSTxMb25nPiB7IHB1YmxpYyB2b2lkIGkoKSB7IH0gfQorICBwcml2YXRlIHN0YXRpYyBjbGFzcyBGPFg+IHsgRihYIHgpIHsgfSB9CisKKyAgYWJzdHJhY3Qgdm9pZCBmKCkgdGhyb3dzIEUxLCBFMjsKKyAgYWJzdHJhY3Qgdm9pZCBnKCkgdGhyb3dzIElFMSwgSUUyOworCisgIDxUIGV4dGVuZHMgVGhyb3dhYmxlPiB2b2lkIG0oKSB7CisgICAgdHJ5IHsgZigpOyB9IGNhdGNoIChFMSB8IEUyIGUpIHsgfQorICAgIHRyeSB7IGYoKTsgfSBjYXRjaCAoRTIgfCBFMSBlKSB7IGUucHJpbnRTdGFja1RyYWNlKCk7IFN5c3RlbS5vdXQucHJpbnRsbihlLnMpOyB9CisgICAgdHJ5IHsgZigpOyB9IGNhdGNoIChFMiB8IEUxIGUpIHsgfSBjYXRjaCAoRSBlKSB7IH0gY2F0Y2ggKFJFIGUpIHsgfQorICAgIHRyeSB7IGcoKTsgfSBjYXRjaCAoSUUxIHwgSUUyIGUpIHsgRSBlZSA9IGU7IEkgaWkgPSBlOyBlLmkoKTsgfQorICAgIHRyeSB7IGcoKTsgfSBjYXRjaCAoSUUxIHwgSUUyIGUpIHsgRjw/PiBmID0gbmV3IEY8PihlKTsgfQorICAgIHRyeSB7IGcoKTsgfSBjYXRjaCAoSUUxIHwgSUUyIGUpIHsgbmV3IEY8STw/IGV4dGVuZHMgTnVtYmVyPj4oZSk7IH0KKworICAgIHRyeSB7IH0gY2F0Y2ggKDxlcnJvciBkZXNjcj0iSW5jb21wYXRpYmxlIHR5cGVzLiBGb3VuZDogJ0MuUkUgfCBDLk5FJywgcmVxdWlyZWQ6ICdqYXZhLmxhbmcuVGhyb3dhYmxlJyI+UkUgfCBORSBlPC9lcnJvcj4pIHsgfQorICAgIHRyeSB7IH0gY2F0Y2ggKDxlcnJvciBkZXNjcj0iSW5jb21wYXRpYmxlIHR5cGVzLiBGb3VuZDogJ0MuUkUgfCBDLk5FW10nLCByZXF1aXJlZDogJ2phdmEubGFuZy5UaHJvd2FibGUnIj5SRSB8IE5FIGVbXTwvZXJyb3I+KSB7IH0KKyAgICB0cnkgeyBmKCk7IH0gY2F0Y2ggKDxlcnJvciBkZXNjcj0iSW5jb21wYXRpYmxlIHR5cGVzLiBGb3VuZDogJ0MuRSB8IFRbXScsIHJlcXVpcmVkOiAnamF2YS5sYW5nLlRocm93YWJsZSciPkUgfCBUIGVbXTwvZXJyb3I+KSB7IH0gY2F0Y2goRSBlKSB7IH0KKyAgICB0cnkgeyBmKCk7IH0gY2F0Y2ggKEUgfCA8ZXJyb3IgZGVzY3I9IkNhbm5vdCBjYXRjaCB0eXBlIHBhcmFtZXRlcnMiPlQ8L2Vycm9yPiBlKSB7IH0KKworICAgIHRyeSB7IGYoKTsgfSBjYXRjaCAoPGVycm9yIGRlc2NyPSJUeXBlcyBpbiBtdWx0aS1jYXRjaCBtdXN0IGJlIGRpc2pvaW50OiAnQy5FMScgaXMgYSBzdWJjbGFzcyBvZiAnQy5FJyI+RTE8L2Vycm9yPiB8IEUgaWdub3JlKSB7IH0KKyAgICB0cnkgeyBmKCk7IH0gY2F0Y2ggKEUgfCA8ZXJyb3IgZGVzY3I9IlR5cGVzIGluIG11bHRpLWNhdGNoIG11c3QgYmUgZGlzam9pbnQ6ICdDLkUxJyBpcyBhIHN1YmNsYXNzIG9mICdDLkUnIj5FMTwvZXJyb3I+IGlnbm9yZSkgeyB9CisgICAgdHJ5IHsgZigpOyB9IGNhdGNoICg8ZXJyb3IgZGVzY3I9IlR5cGVzIGluIG11bHRpLWNhdGNoIG11c3QgYmUgZGlzam9pbnQ6ICdDLkUnIGlzIGEgc3ViY2xhc3Mgb2YgJ0MuRSciPkU8L2Vycm9yPiB8IEUgaWdub3JlKSB7IH0KKworICAgIHRyeSB7IGYoKTsgfSBjYXRjaCAoRTEgfCBFMiB8IDxlcnJvciBkZXNjcj0iRXhjZXB0aW9uICdDLkUzJyBpcyBuZXZlciB0aHJvd24gaW4gdGhlIGNvcnJlc3BvbmRpbmcgdHJ5IGJsb2NrIj5FMzwvZXJyb3I+IGUpIHsgfQorICAgIHRyeSB7IGYoKTsgfSBjYXRjaCAoPGVycm9yIGRlc2NyPSJFeGNlcHRpb24gJ0MuRTMnIGlzIG5ldmVyIHRocm93biBpbiB0aGUgY29ycmVzcG9uZGluZyB0cnkgYmxvY2siPkUzPC9lcnJvcj4gfCA8ZXJyb3IgZGVzY3I9IkV4Y2VwdGlvbiAnQy5FNCcgaXMgbmV2ZXIgdGhyb3duIGluIHRoZSBjb3JyZXNwb25kaW5nIHRyeSBibG9jayI+RTQ8L2Vycm9yPiB8IFJFIGUpIHsgfSBjYXRjaCAoRSBlKSB7IH0KKyAgICB0cnkgeyA8ZXJyb3IgZGVzY3I9IlVuaGFuZGxlZCBleGNlcHRpb25zOiBDLkUxLCBDLkUyIj5mKCk7PC9lcnJvcj4gfSBjYXRjaCAoRTMgfCBFNCB8IFJFIGUpIHsgfQorCisgICAgdHJ5IHsgZigpOyB9IGNhdGNoIChFIGUpIHsgfSBjYXRjaCAoPGVycm9yIGRlc2NyPSJFeGNlcHRpb24gJ0MuRTEnIGhhcyBhbHJlYWR5IGJlZW4gY2F1Z2h0Ij5FMTwvZXJyb3I+IHwgPGVycm9yIGRlc2NyPSJFeGNlcHRpb24gJ0MuRTMnIGhhcyBhbHJlYWR5IGJlZW4gY2F1Z2h0Ij5FMzwvZXJyb3I+IGUpIHsgfQorICAgIHRyeSB7IGYoKTsgfSBjYXRjaCAoRTEgfCBFMiBlKSB7IH0gY2F0Y2ggKDxlcnJvciBkZXNjcj0iRXhjZXB0aW9uICdDLkUyJyBoYXMgYWxyZWFkeSBiZWVuIGNhdWdodCI+RTI8L2Vycm9yPiBlKSB7IH0KKworICAgIHRyeSB7IGYoKTsgfSBjYXRjaCAoRTEgfCBFMiBlKSB7IDxlcnJvciBkZXNjcj0iSW5jb21wYXRpYmxlIHR5cGVzLiBGb3VuZDogJ0MuRTEgfCBDLkUyJywgcmVxdWlyZWQ6ICdDLkUyJyI+RTIgZWUgPSBlOzwvZXJyb3I+IH0KKyAgICB0cnkgeyBmKCk7IH0gY2F0Y2ggKEUxIHwgRTIgZSkgeyA8ZXJyb3IgZGVzY3I9IkNhbm5vdCBhc3NpZ24gYSB2YWx1ZSB0byBmaW5hbCB2YXJpYWJsZSAnZSciPmUgPSBuZXcgRTEoKTwvZXJyb3I+OyB9CisgICAgdHJ5IHsgZigpOyB9IGNhdGNoIChFMSB8IEUyIGUpIHsgPGVycm9yIGRlc2NyPSJJbmNvbXBhdGlibGUgdHlwZXMuIEZvdW5kOiAnQy5FJywgcmVxdWlyZWQ6ICdDLkUxIHwgQy5FMiciPmUgPSBuZXcgRSgpPC9lcnJvcj47IH0KKworICAgIHRyeSB7IGcoKTsgfQorICAgIGNhdGNoIChJRTEgfCBJRTIgZSkgeworICAgICAgQ2xhc3M8PyBleHRlbmRzIEU+IGNsYXp6MSA9IGUuZ2V0Q2xhc3MoKTsKKyAgICAgIDxlcnJvciBkZXNjcj0iSW5jb21wYXRpYmxlIHR5cGVzLiBGb3VuZDogJ2phdmEubGFuZy5DbGFzczw/IGV4dGVuZHMgQy5FPicsIHJlcXVpcmVkOiAnamF2YS5sYW5nLkNsYXNzPD8gZXh0ZW5kcyBDLklFMT4nIj5DbGFzczw/IGV4dGVuZHMgSUUxPiBjbGF6ejIgPSBlLmdldENsYXNzKCk7PC9lcnJvcj4KKyAgICAgIDxlcnJvciBkZXNjcj0iSW5jb21wYXRpYmxlIHR5cGVzLiBGb3VuZDogJ2phdmEubGFuZy5DbGFzczw/IGV4dGVuZHMgQy5FPicsIHJlcXVpcmVkOiAnamF2YS5sYW5nLkNsYXNzPD8gZXh0ZW5kcyBDLkk+JyI+Q2xhc3M8PyBleHRlbmRzIEk+IGNsYXp6MyA9IGUuZ2V0Q2xhc3MoKTs8L2Vycm9yPgorICAgIH0KKworICAgIHRyeSB7IGYoKTsgfQorICAgIGNhdGNoICg8ZXJyb3IgZGVzY3I9IkluY29tcGF0aWJsZSB0eXBlcy4gRm91bmQ6ICdpbnQgfCBDLkUnLCByZXF1aXJlZDogJ2phdmEubGFuZy5UaHJvd2FibGUnIj5pbnQgfCBFIGU8L2Vycm9yPikgeyB9CisgIH0KK30KKworY2xhc3MgRCB7CisgIHN0YXRpYyBjbGFzcyBFIGV4dGVuZHMgRXhjZXB0aW9uIHsgfQorICBzdGF0aWMgaW50ZXJmYWNlIEkgeyB2b2lkIGkoKTsgfQorICBzdGF0aWMgY2xhc3MgRTEgZXh0ZW5kcyBFIGltcGxlbWVudHMgSSB7IHB1YmxpYyB2b2lkIGkoKSB7IH0gfQorICBzdGF0aWMgY2xhc3MgRTIgZXh0ZW5kcyBFIGltcGxlbWVudHMgSSB7IHB1YmxpYyB2b2lkIGkoKSB7IH0gfQorCisgIHZvaWQgbShib29sZWFuIGYpIHsKKyAgICB0cnkgeworICAgICAgaWYgKGYpCisgICAgICAgIHRocm93IG5ldyBFMSgpOworICAgICAgZWxzZQorICAgICAgICB0aHJvdyBuZXcgRTIoKTsKKyAgICB9IGNhdGNoIChFMXxFMiBlKSB7CisgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oZSk7CisgICAgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmc3L051bWVyaWNMaXRlcmFscy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmc3L051bWVyaWNMaXRlcmFscy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJmOWY5NmYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZzcvTnVtZXJpY0xpdGVyYWxzLmphdmEKQEAgLTAsMCArMSw0NSBAQAorcHVibGljIGNsYXNzIE51bWVyaWNMaXRlcmFscyB7CisgIHZvaWQgZigpIHsKKyAgICBpbnQgaTEgPSAxXzI7CisgICAgaW50IGkyID0gMDEyX18zNDsKKyAgICBpbnQgaTMgPSAweDFfMl8zXzQ7CisgICAgaW50IGk0ID0gMEIwOworICAgIGludCBpNSA9IDBiMDAwMV8wMDEwXzAxMDBfMTAwMDsKKyAgICBpbnQgaTYgPSA8ZXJyb3IgZGVzY3I9IkJpbmFyeSBudW1iZXJzIG11c3QgY29udGFpbiBhdCBsZWFzdCBvbmUgYmluYXJ5IGRpZ2l0Ij4wYjwvZXJyb3I+OworICAgIGludCBpNyA9IDxlcnJvciBkZXNjcj0iSW50ZWdlciBudW1iZXIgdG9vIGxhcmdlIj4wYjFfMTExMV8xMTExXzExMTFfMTExMV8xMTExXzExMTFfMTExMV8xMTExPC9lcnJvcj47CisKKyAgICBsb25nIGwxID0gMV8yTDsKKyAgICBsb25nIGwyID0gMDEyX18zNGw7CisgICAgbG9uZyBsMyA9IDB4MV8yXzNfNEw7CisgICAgbG9uZyBsNCA9IDBCMEw7CisgICAgbG9uZyBsNSA9IDBiMDAwMV8wMDEwXzAxMDBfMTAwMGw7CisgICAgbG9uZyBsNiA9IDxlcnJvciBkZXNjcj0iQmluYXJ5IG51bWJlcnMgbXVzdCBjb250YWluIGF0IGxlYXN0IG9uZSBiaW5hcnkgZGlnaXQiPjBCbDwvZXJyb3I+OworICAgIGxvbmcgbDcgPSA8ZXJyb3IgZGVzY3I9IkxvbmcgbnVtYmVyIHRvbyBsYXJnZSI+MEIxXzExMTFfMTExMV8xMTExXzExMTFfMTExMV8xMTExXzExMTFfMTExMV8xMTExXzExMTFfMTExMV8xMTExXzExMTFfMTExMV8xMTExXzExMTFMPC9lcnJvcj47CisKKyAgICBmbG9hdCBmMSA9IDFfMGY7CisgICAgZmxvYXQgZjIgPSAxZTFfMmY7CisgICAgZmxvYXQgZjMgPSAyXzIuZjsKKyAgICBmbG9hdCBmNCA9IC4zXzNmOworICAgIGZsb2F0IGY1ID0gMy4xNF8xNmY7CisgICAgZmxvYXQgZjYgPSA2LjAyMl9fXzEzN2UrMl8zZjsKKyAgICBmbG9hdCBmNyA9IDB4YV9hcDFfMGY7CisgICAgZmxvYXQgZjggPSAweGFfYi5wMjJGOworICAgIGZsb2F0IGY5ID0gMHguYWJfX2NQMGY7CisgICAgZmxvYXQgZjEwID0gMHhhX2JjLmRfZWZQMEY7CisgICAgZmxvYXQgZjExPSA8ZXJyb3IgZGVzY3I9IkZsb2F0aW5nIHBvaW50IG51bWJlciB0b28gc21hbGwiPjFlLTRfXzZmPC9lcnJvcj47CisgICAgZmxvYXQgZjEyID0gPGVycm9yIGRlc2NyPSJGbG9hdGluZyBwb2ludCBudW1iZXIgdG9vIGxhcmdlIj4xZTNfOWY8L2Vycm9yPjsKKworICAgIGRvdWJsZSBkMSA9IDBfMGQ7CisgICAgZG91YmxlIGQyID0gMWUxXzE7CisgICAgZG91YmxlIGQzID0gMl8yLjsKKyAgICBkb3VibGUgZDQgPSAuM18zOworICAgIGRvdWJsZSBkNSA9IDMuMTQxXzU5MjsKKyAgICBkb3VibGUgZDYgPSAxZS05XzlkOworICAgIGRvdWJsZSBkNyA9IDFlMV9fM183OworICAgIGRvdWJsZSBkOCA9IDB4YV9hcDE7CisgICAgZG91YmxlIGQ5ID0gMHhhX2IuUDFfMjsKKyAgICBkb3VibGUgZDEwID0gMHguYV9iY1AxX19fMjNkOworICAgIGRvdWJsZSBkMTEgPSA8ZXJyb3IgZGVzY3I9IkZsb2F0aW5nIHBvaW50IG51bWJlciB0b28gc21hbGwiPjFlLTNfMl80PC9lcnJvcj47CisgICAgZG91YmxlIGQxMiA9IDxlcnJvciBkZXNjcj0iRmxvYXRpbmcgcG9pbnQgbnVtYmVyIHRvbyBsYXJnZSI+MHhhX2JjLmRlX2ZQMV8yMzREPC9lcnJvcj47CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nNy9Qb2x5bW9ycGhpY1R5cGVDYXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZzcvUG9seW1vcnBoaWNUeXBlQ2FzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhiZTE2ZmMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZzcvUG9seW1vcnBoaWNUeXBlQ2FzdC5qYXZhCkBAIC0wLDAgKzEsOTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwMC0yMDExIEpldEJyYWlucyBzLnIuby4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKK2ltcG9ydCBqYXZhLmxhbmcuaW52b2tlLk1ldGhvZEhhbmRsZTsKK2ltcG9ydCBqYXZhLmxhbmcuaW52b2tlLk1ldGhvZEhhbmRsZXM7CitpbXBvcnQgamF2YS5sYW5nLmludm9rZS5NZXRob2RUeXBlOworCitAU3VwcHJlc3NXYXJuaW5ncyh7IlVudXNlZERlY2xhcmF0aW9uIn0pCitjbGFzcyBDIHsKKyAgLy8gZnJvbSBodHRwOi8vZG93bmxvYWQuamF2YS5uZXQvamRrNy9kb2NzL2FwaS9qYXZhL2xhbmcvaW52b2tlL01ldGhvZEhhbmRsZS5odG1sLCAiVXNhZ2UgZXhhbXBsZXMiCisgIHZvaWQgbSgpIHRocm93cyBUaHJvd2FibGUgeworICAgIE9iamVjdCB4LCB5OyBTdHJpbmcgczsgaW50IGk7CisgICAgTWV0aG9kVHlwZSBtdDsgTWV0aG9kSGFuZGxlIG1oOworICAgIE1ldGhvZEhhbmRsZXMuTG9va3VwIGxvb2t1cCA9IE1ldGhvZEhhbmRsZXMubG9va3VwKCk7CisKKy8vIG10IGlzIChjaGFyLGNoYXIpU3RyaW5nCisgICAgbXQgPSBNZXRob2RUeXBlLm1ldGhvZFR5cGUoU3RyaW5nLmNsYXNzLCBjaGFyLmNsYXNzLCBjaGFyLmNsYXNzKTsKKyAgICBtaCA9IGxvb2t1cC5maW5kVmlydHVhbChTdHJpbmcuY2xhc3MsICJyZXBsYWNlIiwgbXQpOworICAgIHMgPSAoU3RyaW5nKSBtaC5pbnZva2VFeGFjdCgiZGFkZHkiLCdkJywnbicpOworCisvLyBpbnZva2VFeGFjdChMamF2YS9sYW5nL1N0cmluZztDQylMamF2YS9sYW5nL1N0cmluZzsKKyAgICBhc3NlcnQocy5lcXVhbHMoIm5hbm55IikpOworCisvLyB3ZWFrbHkgdHlwZWQgaW52b2NhdGlvbiAodXNpbmcgTUhzLmludm9rZSkKKyAgICBzID0gKFN0cmluZykgbWguaW52b2tlV2l0aEFyZ3VtZW50cygic2FwcHkiLCAncCcsICd2Jyk7CisgICAgYXNzZXJ0KHMuZXF1YWxzKCJzYXZ2eSIpKTsKKworLy8gbXQgaXMgKE9iamVjdFtdKUxpc3QKKyAgICBtdCA9IE1ldGhvZFR5cGUubWV0aG9kVHlwZShqYXZhLnV0aWwuTGlzdC5jbGFzcywgT2JqZWN0W10uY2xhc3MpOworICAgIG1oID0gbG9va3VwLmZpbmRTdGF0aWMoamF2YS51dGlsLkFycmF5cy5jbGFzcywgImFzTGlzdCIsIG10KTsKKyAgICBhc3NlcnQobWguaXNWYXJhcmdzQ29sbGVjdG9yKCkpOworICAgIHggPSBtaC5pbnZva2VHZW5lcmljKCJvbmUiLCAidHdvIik7CisKKy8vIGludm9rZUdlbmVyaWMoTGphdmEvbGFuZy9TdHJpbmc7TGphdmEvbGFuZy9TdHJpbmc7KUxqYXZhL2xhbmcvT2JqZWN0OworICAgIGFzc2VydCh4LmVxdWFscyhqYXZhLnV0aWwuQXJyYXlzLmFzTGlzdCgib25lIiwidHdvIikpKTsKKworLy8gbXQgaXMgKE9iamVjdCxPYmplY3QsT2JqZWN0KU9iamVjdAorICAgIG10ID0gTWV0aG9kVHlwZS5nZW5lcmljTWV0aG9kVHlwZSgzKTsKKyAgICBtaCA9IG1oLmFzVHlwZShtdCk7CisgICAgeCA9IG1oLmludm9rZUV4YWN0KChPYmplY3QpMSwgKE9iamVjdCkyLCAoT2JqZWN0KTMpOworCisvLyBpbnZva2VFeGFjdChMamF2YS9sYW5nL09iamVjdDtMamF2YS9sYW5nL09iamVjdDtMamF2YS9sYW5nL09iamVjdDspTGphdmEvbGFuZy9PYmplY3Q7CisgICAgYXNzZXJ0KHguZXF1YWxzKGphdmEudXRpbC5BcnJheXMuYXNMaXN0KDEsMiwzKSkpOworCisvLyBtdCBpcyBpbnQoKQorICAgIG10ID0gTWV0aG9kVHlwZS5tZXRob2RUeXBlKGludC5jbGFzcyk7CisgICAgbWggPSBsb29rdXAuZmluZFZpcnR1YWwoamF2YS51dGlsLkxpc3QuY2xhc3MsICJzaXplIiwgbXQpOworICAgIGkgPSAoaW50KSBtaC5pbnZva2VFeGFjdChqYXZhLnV0aWwuQXJyYXlzLmFzTGlzdCgxLDIsMykpOworCisvLyBpbnZva2VFeGFjdChMamF2YS91dGlsL0xpc3Q7KUkKKyAgICBhc3NlcnQoaSA9PSAzKTsKKyAgICBtdCA9IE1ldGhvZFR5cGUubWV0aG9kVHlwZSh2b2lkLmNsYXNzLCBTdHJpbmcuY2xhc3MpOworICAgIG1oID0gbG9va3VwLmZpbmRWaXJ0dWFsKGphdmEuaW8uUHJpbnRTdHJlYW0uY2xhc3MsICJwcmludGxuIiwgbXQpOworICAgIG1oLmludm9rZUV4YWN0KFN5c3RlbS5vdXQsICJIZWxsbywgd29ybGQuIik7CisvLyBpbnZva2VFeGFjdChMamF2YS9pby9QcmludFN0cmVhbTtMamF2YS9sYW5nL1N0cmluZzspVgorCisgICAgTWV0aG9kSGFuZGxlIG1oMCA9IGxvb2t1cC5maW5kVmlydHVhbChTdHJpbmcuY2xhc3MsICJsZW5ndGgiLCBNZXRob2RUeXBlLm1ldGhvZFR5cGUoaW50LmNsYXNzKSk7CisgICAgTWV0aG9kSGFuZGxlIG1oMSA9IE1ldGhvZEhhbmRsZXMuY29udmVydEFyZ3VtZW50cyhtaDAsIE1ldGhvZFR5cGUubWV0aG9kVHlwZShJbnRlZ2VyLmNsYXNzLCBTdHJpbmcuY2xhc3MpKTsKKyAgICBTeXN0ZW0ub3V0LnByaW50bG4oKEludGVnZXIpIG1oMS5pbnZva2VFeGFjdCgiZGFkZHkiKSk7CisgIH0KKyAgCisgIHZvaWQgc3VwcG9ydGVkKCkgeworICAgIE9iamVjdCBvID0gNDI7CisgICAgaW50IGkgPSAoaW50KSBvOworICAgIFN0cmluZyBzID0gIiI7CisgICAgaW50IGkxID0gPGVycm9yIGRlc2NyPSJJbmNvbnZlcnRpYmxlIHR5cGVzOyBjYW5ub3QgY2FzdCAnamF2YS5sYW5nLlN0cmluZycgdG8gJ2ludCciPihpbnQpIHM8L2Vycm9yPjsKKyAgICBTeXN0ZW0ub3V0LnByaW50bG4oaSk7CisgICAgbSgoaW50KSBvKTsKKyAgfQorCisgIHZvaWQgdW5zdXBwb3J0ZWQoKSB7CisgICAgT2JqZWN0IG8gPSA0MjsKKyAgICBpZiAoPGVycm9yIGRlc2NyPSJJbmNvbnZlcnRpYmxlIHR5cGVzOyBjYW5ub3QgY2FzdCAnamF2YS5sYW5nLk9iamVjdCcgdG8gJ2ludCciPm8gaW5zdGFuY2VvZiBpbnQ8L2Vycm9yPikgeworICAgICAgaW50IGkgPSAoSW50ZWdlcikgbzsKKyAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihpKTsKKyAgICB9CisgIH0KKworICB2b2lkIG0oaW50IGkpIHsgfQorICAKKyAgdm9pZCBhc0xvbmdzKEludGVnZXIgaSkgeworICAgICAgbG9uZyBsID0gKGxvbmcpIGk7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZzcvUHJlY2lzZVJldGhyb3cuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nNy9QcmVjaXNlUmV0aHJvdy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFkNDE0ZmM2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmc3L1ByZWNpc2VSZXRocm93LmphdmEKQEAgLTAsMCArMSwyMzAgQEAKK2NsYXNzIEMgeworICBzdGF0aWMgY2xhc3MgRSBleHRlbmRzIEV4Y2VwdGlvbiB7IH0KKyAgc3RhdGljIGNsYXNzIEUxIGV4dGVuZHMgRSB7IH0KKyAgc3RhdGljIGNsYXNzIEUyIGV4dGVuZHMgRSB7IH0KKyAgc3RhdGljIGNsYXNzIEVyciBleHRlbmRzIEVycm9yIHsgfQorCisgIHZvaWQgbTAoKSB7CisgICAgdHJ5IHsKKyAgICAgIHRocm93IG5ldyBFMSgpOworICAgIH0KKyAgICBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKKyAgICAgIHRyeSB7CisgICAgICAgIC8vIHRocm93cyBFMSBpbiBKREs3CisgICAgICAgIDxlcnJvciBkZXNjcj0iVW5oYW5kbGVkIGV4Y2VwdGlvbjogQy5FMSI+dGhyb3cgZTs8L2Vycm9yPgorICAgICAgfSBjYXRjaCAoRTIgZTIpIHsgfQorICAgIH0KKyAgfQorCisgIHZvaWQgbTEoKSB0aHJvd3MgRTEgeworICAgIHRyeSB7CisgICAgICB0aHJvdyBuZXcgRTEoKTsKKyAgICB9CisgICAgY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CisgICAgICB0cnkgeworICAgICAgICAvLyB0aHJvd3MgRTEgaW4gSkRLNworICAgICAgICB0aHJvdyBlOworICAgICAgfSBjYXRjaCAoPGVycm9yIGRlc2NyPSJFeGNlcHRpb24gJ0MuRTInIGlzIG5ldmVyIHRocm93biBpbiB0aGUgY29ycmVzcG9uZGluZyB0cnkgYmxvY2siPkUyIGUyPC9lcnJvcj4pIHsgfQorICAgIH0KKyAgfQorCisgIHZvaWQgbTIoKSB7CisgICAgdHJ5IHsKKyAgICAgIHRocm93IG5ldyBFMSgpOworICAgIH0KKyAgICBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKKyAgICAgIHRyeSB7CisgICAgICAgIGlmICh0cnVlKSB7CisgICAgICAgICAgPGVycm9yIGRlc2NyPSJVbmhhbmRsZWQgZXhjZXB0aW9uOiBqYXZhLmxhbmcuRXhjZXB0aW9uIj50aHJvdyBlOzwvZXJyb3I+CisgICAgICAgIH0KKyAgICAgICAgZSA9IG5ldyBFMSgpOyAvLyBhbmFseXNpcyBkaXNhYmxlZCwgZXZlbiBieSBsYXRlIGFzc2lnbm1lbnQKKyAgICAgIH0KKyAgICAgIGNhdGNoIChFMiBlMikgeyB9CisgICAgfQorICB9CisKKyAgdm9pZCBtMyhib29sZWFuIGYpIHRocm93cyBFMSwgRTIgeworICAgIHRyeSB7CisgICAgICBpZiAoZikKKyAgICAgICAgdGhyb3cgbmV3IEUxKCk7CisgICAgICBlbHNlCisgICAgICAgIHRocm93IG5ldyBFMigpOworICAgIH0KKyAgICBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKKyAgICAgIC8vIHJlYWQgYWNjZXNzIGRvZXNuJ3QgZGlzYWJsZXMgYW4gYW5hbHlzaXMKKyAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihlKTsKKyAgICAgIC8vIHRocm93cyBFMSwgRTIgaW4gSkRLNworICAgICAgdGhyb3cgZTsKKyAgICB9CisgIH0KKworICB2b2lkIG00KGJvb2xlYW4gZikgdGhyb3dzIEUxLCBFMiB7CisgICAgdHJ5IHsKKyAgICAgIGlmIChmKQorICAgICAgICB0aHJvdyBuZXcgRTEoKTsKKyAgICAgIGVsc2UKKyAgICAgICAgdGhyb3cgbmV3IEUyKCk7CisgICAgfQorICAgIGNhdGNoIChFeGNlcHRpb24gZSkgeworICAgICAgZSA9IG5ldyBFMigpOyAvLyBhbmFseXNpcyBkaXNhYmxlZAorICAgICAgPGVycm9yIGRlc2NyPSJVbmhhbmRsZWQgZXhjZXB0aW9uOiBqYXZhLmxhbmcuRXhjZXB0aW9uIj50aHJvdyBlOzwvZXJyb3I+CisgICAgfQorICB9CisKKyAgdm9pZCBtNShib29sZWFuIGYpIHRocm93cyBFIHsKKyAgICB0cnkgeworICAgICAgaWYgKGYpCisgICAgICAgIHRocm93IG5ldyBFMSgpOworICAgICAgZWxzZSBpZiAoIWYpCisgICAgICAgIHRocm93IG5ldyBFMigpOworICAgICAgZWxzZQorICAgICAgICB0aHJvdyAoVGhyb3dhYmxlKW5ldyBFKCk7CisgICAgfQorICAgIGNhdGNoIChFMSBlMSkgeyB9CisgICAgY2F0Y2ggKGZpbmFsIEV4Y2VwdGlvbiBlKSB7CisgICAgICAvLyBUaHJvd2FibGUgaXNuJ3QgYSBzdWJ0eXBlIG9mIEV4Y2VwdGlvbgorICAgICAgPGVycm9yIGRlc2NyPSJVbmhhbmRsZWQgZXhjZXB0aW9uOiBqYXZhLmxhbmcuRXhjZXB0aW9uIj50aHJvdyBlOzwvZXJyb3I+CisgICAgfQorICAgIGNhdGNoIChUaHJvd2FibGUgdCkgeyB9CisgIH0KKworICB2b2lkIG02KGJvb2xlYW4gZikgdGhyb3dzIEUyIHsKKyAgICB0cnkgeworICAgICAgaWYgKGYpCisgICAgICAgIHRocm93IG5ldyBFMSgpOworICAgICAgZWxzZSBpZiAoIWYpCisgICAgICAgIHRocm93IG5ldyBFMigpOworICAgIH0KKyAgICBjYXRjaCAoRTEgZTEpIHsgfQorICAgIGNhdGNoIChmaW5hbCBFeGNlcHRpb24gZSkgeworICAgICAgdGhyb3cgZTsKKyAgICB9CisgIH0KKworICB2b2lkIG03KCkgeworICAgIHRyeSB7CisgICAgICBpZiAodHJ1ZSkKKyAgICAgICAgdGhyb3cgbmV3IEUxKCk7CisgICAgICBlbHNlIGlmIChmYWxzZSkKKyAgICAgICAgdGhyb3cgbmV3IEUyKCk7CisgICAgfQorICAgIGNhdGNoIChFIGUpIHsKKyAgICAgIC8vIHRocm93cyBFMSwgRTIgaW4gSkRLNworICAgICAgPGVycm9yIGRlc2NyPSJVbmhhbmRsZWQgZXhjZXB0aW9uczogQy5FMSwgQy5FMiI+dGhyb3cgZTs8L2Vycm9yPgorICAgIH0KKyAgfQorCisgIHZvaWQgbTgoKSB0aHJvd3MgRTEgeworICAgIHRyeSB7CisgICAgICBpZiAodHJ1ZSkKKyAgICAgICAgdGhyb3cgbmV3IEUxKCk7CisgICAgICBlbHNlIGlmIChmYWxzZSkKKyAgICAgICAgdGhyb3cgbmV3IEUyKCk7CisgICAgfQorICAgIGNhdGNoIChFMSB8IEUyIGUpIHsKKyAgICAgIDxlcnJvciBkZXNjcj0iVW5oYW5kbGVkIGV4Y2VwdGlvbjogQy5FMiI+dGhyb3cgZTs8L2Vycm9yPgorICAgIH0KKyAgfQorCisgIHZvaWQgbTkoKSB7CisgICAgdHJ5IHsKKyAgICAgIHRocm93IG5ldyBFMSgpOworICAgIH0KKyAgICBjYXRjaCAoRSB4KSB7CisgICAgICB0cnkgeworICAgICAgICB0aHJvdyB4OworICAgICAgfQorICAgICAgY2F0Y2ggKEUgeSkgeworICAgICAgICB0cnkgeworICAgICAgICAgIHRocm93IHk7CisgICAgICAgIH0KKyAgICAgICAgY2F0Y2ggKEUgeikgeworICAgICAgICAgIC8vIGNoYWluZWQgZXhjZXB0aW9uIHR5cGUgZXZhbHVhdGlvbgorICAgICAgICAgIDxlcnJvciBkZXNjcj0iVW5oYW5kbGVkIGV4Y2VwdGlvbjogQy5FMSI+dGhyb3cgejs8L2Vycm9yPgorICAgICAgICB9CisgICAgICB9CisgICAgfQorICB9CisKKyAgdm9pZCBtMTAoKSB7CisgICAgdHJ5IHsKKyAgICAgIHRocm93IG5ldyBFMSgpOworICAgIH0KKyAgICBjYXRjaCAoRSBlKSB7CisgICAgICBFIHggPSBlOworICAgICAgLy8gbm8gY2hhaW5lZCBleGNlcHRpb24gdHlwZSBldmFsdWF0aW9uCisgICAgICA8ZXJyb3IgZGVzY3I9IlVuaGFuZGxlZCBleGNlcHRpb246IEMuRSI+dGhyb3cgeDs8L2Vycm9yPgorICAgIH0KKyAgfQorCisgIHZvaWQgbTExXzEoKSB7CisgICAgdHJ5IHsKKyAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigpOworICAgIH0KKyAgICBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKKyAgICAgIHRocm93IGU7CisgICAgfQorICB9CisKKyAgdm9pZCBtMTFfMigpIHsKKyAgICB0cnkgeworICAgICAgU3lzdGVtLm91dC5wcmludGxuKCk7CisgICAgfQorICAgIGNhdGNoIChFcnJvciBlKSB7CisgICAgICB0aHJvdyBlOworICAgIH0KKyAgfQorCisgIHZvaWQgbTExXzMoKSB7CisgICAgdHJ5IHsKKyAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigpOworICAgIH0KKyAgICBjYXRjaCAoRXJyIGUpIHsKKyAgICAgIHRocm93IGU7CisgICAgfQorICB9CisKKyAgdm9pZCBtMTFfNCgpIHsKKyAgICB0cnkgeworICAgICAgaWYgKGZhbHNlKSB0aHJvdyBuZXcgUnVudGltZUV4Y2VwdGlvbigpOworICAgIH0KKyAgICBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKKyAgICAgIHRocm93IGU7CisgICAgfQorICB9CisKKyAgc3RhdGljIGNsYXNzIE15UmVzb3VyY2UgaW1wbGVtZW50cyBBdXRvQ2xvc2VhYmxlIHsKKyAgICBwdWJsaWMgdm9pZCBjbG9zZSgpIHRocm93cyBFMSB7IH0KKyAgfQorCisgIE15UmVzb3VyY2UgZ2V0UmVzb3VyY2UoKSB0aHJvd3MgRTIgeworICAgIHJldHVybiBudWxsOworICB9CisKKyAgdm9pZCBtMTIoKSB7CisgICAgdHJ5IChNeVJlc291cmNlIHIgPSBnZXRSZXNvdXJjZSgpKSB7CisgICAgICBTeXN0ZW0ub3V0LnByaW50bG4ocik7CisgICAgfQorICAgIGNhdGNoIChFeGNlcHRpb24gZSkgeworICAgICAgLy8gdGVzdCBmb3IgYW5vdGhlciBwcmVjaXNlIHR5cGVzIGNhbGN1bGF0aW9uIGZpeAorICAgICAgPGVycm9yIGRlc2NyPSJVbmhhbmRsZWQgZXhjZXB0aW9uczogQy5FMSwgQy5FMiI+dGhyb3cgZTs8L2Vycm9yPgorICAgIH0KKyAgfQorCisgIHZvaWQgbTEzKCkgdGhyb3dzIEUxIHsKKyAgICB0cnkgeworICAgICAgdHJ5IHsKKyAgICAgICAgaWYgKHRydWUpCisgICAgICAgICAgdGhyb3cgbmV3IEUxKCk7CisgICAgICAgIGVsc2UgaWYgKGZhbHNlKQorICAgICAgICAgIHRocm93IG5ldyBFMigpOworICAgICAgfQorICAgICAgY2F0Y2ggKEUxIHwgRTIgZSkgeworICAgICAgICB0aHJvdyBlOworICAgICAgfQorICAgIH0KKyAgICBjYXRjaCAoRTIgZSkgeworICAgICAgdGhyb3cgbmV3IFJ1bnRpbWVFeGNlcHRpb24oZSk7CisgICAgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmc3L1NhZmVWYXJhcmdzQXBwbGljYWJpbGl0eS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmc3L1NhZmVWYXJhcmdzQXBwbGljYWJpbGl0eS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg1MzBkZTcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZzcvU2FmZVZhcmFyZ3NBcHBsaWNhYmlsaXR5LmphdmEKQEAgLTAsMCArMSw2MSBAQAoraW1wb3J0IGphdmEudXRpbC5MaXN0OworCitAPGVycm9yIGRlc2NyPSInQFNhZmVWYXJhcmdzJyBub3QgYXBwbGljYWJsZSB0byB0eXBlIj5TYWZlVmFyYXJnczwvZXJyb3I+CitwdWJsaWMgY2xhc3MgU2FmZVZhcmFyZ3NUZXN0cyB7CisgICAgLy9maXhlZCBhcml0eQorICAgIDxlcnJvciBkZXNjcj0iQFNhZmVWYXJhcmdzIGlzIG5vdCBhbGxvd2VkIG9uIG1ldGhvZHMgd2l0aCBmaXhlZCBhcml0eSI+QFNhZmVWYXJhcmdzPC9lcnJvcj4KKyAgICBwdWJsaWMgdm9pZCB0ZXN0Tm9uVmFyYXJnczEoKXt9CisKKyAgICA8ZXJyb3IgZGVzY3I9IkBTYWZlVmFyYXJncyBpcyBub3QgYWxsb3dlZCBvbiBtZXRob2RzIHdpdGggZml4ZWQgYXJpdHkiPkBTYWZlVmFyYXJnczwvZXJyb3I+CisgICAgcHVibGljIHZvaWQgdGVzdE5vblZhcmFyZ3MyKGludCA8d2FybmluZyBkZXNjcj0iUGFyYW1ldGVyICdpJyBpcyBuZXZlciB1c2VkIj5pPC93YXJuaW5nPil7fQorCisgICAgPGVycm9yIGRlc2NyPSJAU2FmZVZhcmFyZ3MgaXMgbm90IGFsbG93ZWQgb24gbWV0aG9kcyB3aXRoIGZpeGVkIGFyaXR5Ij5AU2FmZVZhcmFyZ3M8L2Vycm9yPgorICAgIHB1YmxpYyA8VD4gdm9pZCB0ZXN0Tm9uVmFyYXJnczMoVCA8d2FybmluZyBkZXNjcj0iUGFyYW1ldGVyICd0JyBpcyBuZXZlciB1c2VkIj50PC93YXJuaW5nPil7fQorCisgICAgLy9ub24gc3RhdGljL25vbiBmaW5hbAorICAgIDxlcnJvciBkZXNjcj0iQFNhZmVWYXJhcmdzIGlzIG5vdCBhbGxvd2VkIG9uIG5vbi1maW5hbCBpbnN0YW5jZSBtZXRob2RzIj5AU2FmZVZhcmFyZ3M8L2Vycm9yPgorICAgIHB1YmxpYyB2b2lkIHRlc3ROb25WYXJhcmdzNChpbnQuLi4gPHdhcm5pbmcgZGVzY3I9IlBhcmFtZXRlciAnaScgaXMgbmV2ZXIgdXNlZCI+aTwvd2FybmluZz4pe30KKworICAgIC8vcmVhc3NpZ25lZAorICAgIEBTYWZlVmFyYXJncworICAgIHB1YmxpYyBmaW5hbCA8VD4gdm9pZCB0ZXN0VChUW10gdHQsIFQuLi4gdCkgeworICAgICAgICA8d2FybmluZyBkZXNjcj0iQFNhZmVWYXJhcmdzIGRvIG5vdCBzdXBwcmVzcyBwb3RlbnRpYWxseSB1bnNhZmUgb3BlcmF0aW9ucyI+dDwvd2FybmluZz4gPSB0dDsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKHRbMF0pOworICAgIH0KKworICAgIC8vaW5jb3JyZWN0IHR5cGVzCisgICAgQFNhZmVWYXJhcmdzCisgICAgcHVibGljIGZpbmFsIHZvaWQgdGVzdFN0cmluZyg8d2FybmluZyBkZXNjcj0iQFNhZmVWYXJhcmdzIGlzIG5vdCBhcHBsaWNhYmxlIGZvciByZWlmaWFibGUgdHlwZXMiPlN0cmluZy4uLjwvd2FybmluZz4gPHdhcm5pbmcgZGVzY3I9IlBhcmFtZXRlciAnc3RyJyBpcyBuZXZlciB1c2VkIj5zdHI8L3dhcm5pbmc+KXsKKyAgICB9CisKKyAgICBAU2FmZVZhcmFyZ3MKKyAgICBwdWJsaWMgZmluYWwgdm9pZCB0ZXN0U3RyaW5nQXJyYXkoPHdhcm5pbmcgZGVzY3I9IkBTYWZlVmFyYXJncyBpcyBub3QgYXBwbGljYWJsZSBmb3IgcmVpZmlhYmxlIHR5cGVzIj5TdHJpbmdbXS4uLjwvd2FybmluZz4gPHdhcm5pbmcgZGVzY3I9IlBhcmFtZXRlciAnc3RyJyBpcyBuZXZlciB1c2VkIj5zdHI8L3dhcm5pbmc+KXsKKyAgICB9CisKKyAgICBAU2FmZVZhcmFyZ3MKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgdGVzdFVuYm91bmQoPHdhcm5pbmcgZGVzY3I9IkBTYWZlVmFyYXJncyBpcyBub3QgYXBwbGljYWJsZSBmb3IgcmVpZmlhYmxlIHR5cGVzIj5MaXN0PD8+Li4uPC93YXJuaW5nPiA8d2FybmluZyBkZXNjcj0iUGFyYW1ldGVyICd0JyBpcyBuZXZlciB1c2VkIj50PC93YXJuaW5nPil7fQorCisKKyAgICAvL2NvcnJlY3QgdXNhZ2VzCisgICAgQFNhZmVWYXJhcmdzCisgICAgcHVibGljIHN0YXRpYyA8VD4gdm9pZCBmb28oVC4uLiA8d2FybmluZyBkZXNjcj0iUGFyYW1ldGVyICd0JyBpcyBuZXZlciB1c2VkIj50PC93YXJuaW5nPil7fQorICAgIEBTYWZlVmFyYXJncworICAgIHB1YmxpYyBzdGF0aWMgPFQ+IHZvaWQgZm9vMShMaXN0PFQ+Li4uIDx3YXJuaW5nIGRlc2NyPSJQYXJhbWV0ZXIgJ3QnIGlzIG5ldmVyIHVzZWQiPnQ8L3dhcm5pbmc+KXt9CisgICAgQFNhZmVWYXJhcmdzCisgICAgcHVibGljIHN0YXRpYyA8VD4gdm9pZCBmb28yKExpc3Q8PyBleHRlbmRzIFQ+Li4uIDx3YXJuaW5nIGRlc2NyPSJQYXJhbWV0ZXIgJ3QnIGlzIG5ldmVyIHVzZWQiPnQ8L3dhcm5pbmc+KXt9CisKK30KKworYWJzdHJhY3QgY2xhc3MgQUNsYXNzIHsKKyAgICBAU2FmZVZhcmFyZ3MKKyAgICA8VD4gQUNsYXNzKFQuLi4gZCl7CisgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oZCk7CisgICAgfQorfQorCitjbGFzcyBBQkNsYXNzIGV4dGVuZHMgQUNsYXNzIHsKKyAgICBAU2FmZVZhcmFyZ3MKKyAgICA8VD4gQUJDbGFzcyhULi4uIGQpeworICAgICAgICBzdXBlcihkKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmc3L1N1cGVyQm91bmQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nNy9TdXBlckJvdW5kLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2NlYjQyOQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nNy9TdXBlckJvdW5kLmphdmEKQEAgLTAsMCArMSw1MyBAQAorLyoKKyAqIENvcHlyaWdodCAyMDAwLTIwMTEgSmV0QnJhaW5zIHMuci5vLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK2ltcG9ydCBqYXZhLmxhbmcuT3ZlcnJpZGU7CitpbXBvcnQgamF2YS51dGlsLkxpc3Q7CitwdWJsaWMgY2xhc3MgVGVzdAoreworICAgIHB1YmxpYyBpbnRlcmZhY2UgTXlMaXN0PE4gZXh0ZW5kcyBOdW1iZXI+IGV4dGVuZHMgTGlzdDxOPgorICAgIHsKKyAgICB9CisKKyAgICB2b2lkIHRlc3QoTXlMaXN0PD8gc3VwZXIgSW50ZWdlcj4gbGlzdCkKKyAgICB7CisgICAgICAgIE51bWJlciBuID0gbGlzdC5nZXQoMCk7CisgICAgfQorfQorCitjbGFzcyBUZXN0MQoreworICAgIHB1YmxpYyBpbnRlcmZhY2UgTXlMaXN0PE4gZXh0ZW5kcyBOdW1iZXI+IGV4dGVuZHMgTGlzdDxOPiB7CisgICAgICBAT3ZlcnJpZGUKKyAgICAgIE4gZ2V0KGludCBpbmRleCk7CisgICAgfQorCisgICAgdm9pZCB0ZXN0KE15TGlzdDw/IHN1cGVyIEludGVnZXI+IGxpc3QpCisgICAgeworICAgICAgICBOdW1iZXIgbiA9IGxpc3QuZ2V0KDApOworICAgIH0KK30KKworY2xhc3MgVGVzdDIKK3sKKyAgICBwdWJsaWMgaW50ZXJmYWNlIE15TGlzdDxOIGV4dGVuZHMgTnVtYmVyPnsKKyAgICAgIE4gZ2V0KGludCBpbmRleCk7CisgICAgfQorCisgICAgdm9pZCB0ZXN0KE15TGlzdDw/IHN1cGVyIEludGVnZXI+IGxpc3QpCisgICAgeworICAgICAgICBOdW1iZXIgbiA9IGxpc3QuZ2V0KDApOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nNy9Td2l0Y2hCeUluYWNjZXNzaWJsZUVudW0uamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nNy9Td2l0Y2hCeUluYWNjZXNzaWJsZUVudW0uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43Y2RkOTBmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmc3L1N3aXRjaEJ5SW5hY2Nlc3NpYmxlRW51bS5qYXZhCkBAIC0wLDAgKzEsMjMgQEAKK2ludGVyZmFjZSBBIHsKKyAgICBCIGdldEIoKTsKKworICAgIGNsYXNzIEIgeworICAgICAgICBwdWJsaWMgQyBjOworCisgICAgICAgIHByaXZhdGUgZW51bSBDIHsKKyAgICAgICAgICAgIFNPTUUKKyAgICAgICAgfQorICAgIH0KK30KKworY2xhc3MgRCB7CisgICAgcHVibGljIHN0YXRpYyB2b2lkIGYoQSBhKSB7CisgICAgICAgIEEuQiBiID0gYS5nZXRCKCk7CisgICAgICAgIHN3aXRjaCAoPGVycm9yIGRlc2NyPSJBLkIuQyBpcyBpbmFjY2Vzc2libGUgaGVyZSI+Yi5jPC9lcnJvcj4pIHsKKyAgICAgICAgICAgIGNhc2UgU09NRToKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKworCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmc3L1N3aXRjaEJ5U3RyaW5nLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZzcvU3dpdGNoQnlTdHJpbmcuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZjcyNTNmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmc3L1N3aXRjaEJ5U3RyaW5nLmphdmEKQEAgLTAsMCArMSw0MSBAQAorcHVibGljIGNsYXNzIFRlc3QgeworICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgQkFaID0gImJheiI7CisKKyAgcHJpdmF0ZSB2b2lkIHN0cmluZ1N3aXRjaCgpIHsKKyAgICBmaW5hbCBTdHJpbmcgYmFyID0gImJhciI7CisgICAgU3RyaW5nIGtleSA9ICJrZXkiOworICAgIHN3aXRjaCAoa2V5KSB7CisgICAgICBjYXNlICIiOiB7CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiTm90aGluZyIpOworICAgICAgICBicmVhazsKKyAgICAgIH0KKyAgICAgIGNhc2UgImZvbyI6IC8vIGZhbGx0aHJvdWdoIHdvcmtzIGFzIGJlZm9yZQorICAgICAgY2FzZSBiYXI6ICAgLy8gbG9jYWwgZmluYWwgdmFyaWFibGVzIGFyZSBvaworICAgICAgY2FzZSBCQVo6IHsgLy8gY29uc3RhbnRzIGFyZSBvaworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIk1hdGNoZWQga2V5Iik7CisgICAgICAgIGJyZWFrOworICAgICAgfQorICAgICAgZGVmYXVsdDoKKyAgICAgICAgYnJlYWs7CisgICAgfQorICB9CisKKyAgcHJpdmF0ZSB2b2lkIGlsbGVnYWxTdHJpbmdTd2l0Y2goKSB7CisgICAgU3RyaW5nIGZvbyA9ICJmb28iOworICAgIFN0cmluZyBrZXkgPSAia2V5IjsKKyAgICBzd2l0Y2ggKGtleSkgeworICAgICAgY2FzZSA8ZXJyb3I+Zm9vPC9lcnJvcj46CisgICAgICBjYXNlIDxlcnJvcj5nZXRTdHJpbmdWYWx1ZSgpPC9lcnJvcj46IHsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJpbGxlZ2FsIik7CisgICAgICAgIGJyZWFrOworICAgICAgfQorICAgICAgZGVmYXVsdDoKKyAgICAgICAgYnJlYWs7CisgICAgfQorICB9CisKKyAgcHJpdmF0ZSBTdHJpbmcgZ2V0U3RyaW5nVmFsdWUoKSB7CisgICAgcmV0dXJuICIiOworICB9CisKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZzcvVHJ5V2l0aFJlc291cmNlcy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmc3L1RyeVdpdGhSZXNvdXJjZXMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMGY4ZWI3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmc3L1RyeVdpdGhSZXNvdXJjZXMuamF2YQpAQCAtMCwwICsxLDkzIEBACisvKgorICogQ29weXJpZ2h0IDIwMDAtMjAxMiBKZXRCcmFpbnMgcy5yLm8uCisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworY2xhc3MgQyB7CisgIHN0YXRpYyBjbGFzcyBFIGV4dGVuZHMgRXhjZXB0aW9uIHsgfQorICBzdGF0aWMgY2xhc3MgRTEgZXh0ZW5kcyBFIHsgfQorICBzdGF0aWMgY2xhc3MgRTIgZXh0ZW5kcyBFIHsgfQorICBzdGF0aWMgY2xhc3MgRTMgZXh0ZW5kcyBFIHsgfQorCisgIHN0YXRpYyBjbGFzcyBNeVJlc291cmNlIGltcGxlbWVudHMgQXV0b0Nsb3NlYWJsZSB7CisgICAgcHVibGljIE15UmVzb3VyY2UoKSB0aHJvd3MgRTEgeyB9CisgICAgcHVibGljIHZvaWQgZG9Tb21ldGhpbmcoKSB0aHJvd3MgRTIgeyB9CisgICAgQE92ZXJyaWRlIHB1YmxpYyB2b2lkIGNsb3NlKCkgdGhyb3dzIEUzIHsgfQorICB9CisKKyAgc3RhdGljIGludGVyZmFjZSBJIGV4dGVuZHMgQXV0b0Nsb3NlYWJsZSB7IH0KKworICB2b2lkIG0xKCkgeworICAgIHRyeSAoTXlSZXNvdXJjZSByID0gbmV3IE15UmVzb3VyY2UoKSkgeyByLmRvU29tZXRoaW5nKCk7IH0KKyAgICBjYXRjaCAoRTEgfCBFMiB8IEUzIGlnbm9yZSkgeyB9CisKKyAgICB0cnkgKE15UmVzb3VyY2UgciA9IG5ldyBNeVJlc291cmNlKCkpIHsgfQorICAgIGNhdGNoIChFMSB8IEUzIGlnbm9yZSkgeyB9CisKKyAgICB0cnkgKDxlcnJvciBkZXNjcj0iVW5oYW5kbGVkIGV4Y2VwdGlvbiBmcm9tIGF1dG8tY2xvc2VhYmxlIHJlc291cmNlOiBDLkUzIj5NeVJlc291cmNlIHIgPSBuZXcgTXlSZXNvdXJjZSgpPC9lcnJvcj4pIHsgfQorICAgIGNhdGNoIChFMSBlKSB7IH0KKworICAgIHRyeSAoTXlSZXNvdXJjZSByID0gPGVycm9yIGRlc2NyPSJVbmhhbmRsZWQgZXhjZXB0aW9uOiBDLkUxIj5uZXcgTXlSZXNvdXJjZSgpPC9lcnJvcj4pIHsgfQorICAgIGNhdGNoIChFMyBlKSB7IH0KKworICAgIHRyeSAoTXlSZXNvdXJjZSByID0gPGVycm9yIGRlc2NyPSJVbmhhbmRsZWQgZXhjZXB0aW9uOiBDLkUxIj5uZXcgTXlSZXNvdXJjZSgpPC9lcnJvcj4pIHsgfQorCisgICAgdHJ5ICg8ZXJyb3IgZGVzY3I9IlVuaGFuZGxlZCBleGNlcHRpb24gZnJvbSBhdXRvLWNsb3NlYWJsZSByZXNvdXJjZTogamF2YS5sYW5nLkV4Y2VwdGlvbiI+SSByID0gbnVsbDwvZXJyb3I+KSB7IFN5c3RlbS5vdXQucHJpbnRsbihyKTsgfQorICB9CisKKyAgdm9pZCBtMigpIHRocm93cyBFeGNlcHRpb24geworICAgIHRyeSAoPGVycm9yIGRlc2NyPSJJbmNvbXBhdGlibGUgdHlwZXMuIEZvdW5kOiAnamF2YS5sYW5nLk9iamVjdCcsIHJlcXVpcmVkOiAnamF2YS5sYW5nLkF1dG9DbG9zZWFibGUnIj5PYmplY3QgciA9IG5ldyBNeVJlc291cmNlKCk8L2Vycm9yPikgeyB9CisKKyAgICB0cnkgKDxlcnJvciBkZXNjcj0iSW5jb21wYXRpYmxlIHR5cGVzLiBGb3VuZDogJ2phdmEubGFuZy5TdHJpbmcnLCByZXF1aXJlZDogJ2phdmEubGFuZy5BdXRvQ2xvc2VhYmxlJyI+QXV0b0Nsb3NlYWJsZSByID0gInJlc291cmNlIjwvZXJyb3I+KSB7IH0KKyAgfQorCisgIHZvaWQgbTMoaW50IHApIHRocm93cyBFeGNlcHRpb24geworICAgIHRyeSAoTXlSZXNvdXJjZSByID0gbmV3IE15UmVzb3VyY2UoKSkgeworICAgICAgci5kb1NvbWV0aGluZygpOworICAgICAgPGVycm9yIGRlc2NyPSJDYW5ub3QgYXNzaWduIGEgdmFsdWUgdG8gZmluYWwgdmFyaWFibGUgJ3InIj5yID0gbnVsbDwvZXJyb3I+OworICAgICAgaW50IDxlcnJvciBkZXNjcj0iVmFyaWFibGUgJ3InIGlzIGFscmVhZHkgZGVmaW5lZCBpbiB0aGUgc2NvcGUiPnI8L2Vycm9yPiA9IDA7CisgICAgfQorICAgIGNhdGNoIChFIGUpIHsKKyAgICAgIDxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdyJyI+cjwvZXJyb3I+ID0gbnVsbDsKKyAgICB9CisgICAgZmluYWxseSB7CisgICAgICA8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnciciPnI8L2Vycm9yPiA9IG51bGw7CisgICAgfQorICAgIDxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdyJyI+cjwvZXJyb3I+ID0gbnVsbDsKKworICAgIHRyeSAoTXlSZXNvdXJjZSByID0gbmV3IE15UmVzb3VyY2UoKTsgTXlSZXNvdXJjZSA8ZXJyb3IgZGVzY3I9IlZhcmlhYmxlICdyJyBpcyBhbHJlYWR5IGRlZmluZWQgaW4gdGhlIHNjb3BlIj5yPC9lcnJvcj4gPSBuZXcgTXlSZXNvdXJjZSgpKSB7IH0KKworICAgIHRyeSAoTXlSZXNvdXJjZSByMSA9IG5ldyBNeVJlc291cmNlKCk7IE15UmVzb3VyY2UgcjIgPSByMSkgeyB9CisKKyAgICB0cnkgKE15UmVzb3VyY2UgcjEgPSA8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAncjInIj5yMjwvZXJyb3I+OyBNeVJlc291cmNlIHIyID0gcjEpIHsgfQorCisgICAgTXlSZXNvdXJjZSByID0gbnVsbDsKKyAgICB0cnkgKE15UmVzb3VyY2UgPGVycm9yIGRlc2NyPSJWYXJpYWJsZSAncicgaXMgYWxyZWFkeSBkZWZpbmVkIGluIHRoZSBzY29wZSI+cjwvZXJyb3I+ID0gbmV3IE15UmVzb3VyY2UoKSkgeyB9CisgICAgdHJ5IChNeVJlc291cmNlIHJyID0gcikgeyB9CisKKyAgICB0cnkgKE15UmVzb3VyY2UgPGVycm9yIGRlc2NyPSJWYXJpYWJsZSAncCcgaXMgYWxyZWFkeSBkZWZpbmVkIGluIHRoZSBzY29wZSI+cDwvZXJyb3I+ID0gbmV3IE15UmVzb3VyY2UoKSkgeyB9CisgICAgbmV3IFJ1bm5hYmxlKCkgeworICAgICAgcHVibGljIHZvaWQgcnVuKCkgeworICAgICAgICB0cnkgKE15UmVzb3VyY2UgcCA9IG5ldyBNeVJlc291cmNlKCkpIHsgfQorICAgICAgICBjYXRjaCAoRSBlKSB7IH0KKyAgICAgIH0KKyAgICB9LnJ1bigpOworICB9CisKKyAgdm9pZCBtNCgpIHRocm93cyBFeGNlcHRpb24geworICAgIHRyeSAoTXlSZXNvdXJjZSByID0gPGVycm9yIGRlc2NyPSJWYXJpYWJsZSAncicgbWlnaHQgbm90IGhhdmUgYmVlbiBpbml0aWFsaXplZCI+cjwvZXJyb3I+KSB7IH0KKworICAgIE15UmVzb3VyY2UgcjsKKyAgICB0cnkgKE15UmVzb3VyY2UgcjEgPSA8ZXJyb3IgZGVzY3I9IlZhcmlhYmxlICdyJyBtaWdodCBub3QgaGF2ZSBiZWVuIGluaXRpYWxpemVkIj5yPC9lcnJvcj4pIHsgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmc3L1RyeVdpdGhSZXNvdXJjZXNXYXJuLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZzcvVHJ5V2l0aFJlc291cmNlc1dhcm4uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNTBhMjZlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmc3L1RyeVdpdGhSZXNvdXJjZXNXYXJuLmphdmEKQEAgLTAsMCArMSwyNiBAQAorY2xhc3MgQyB7CisgIHN0YXRpYyBjbGFzcyBNeVJlc291cmNlIGltcGxlbWVudHMgQXV0b0Nsb3NlYWJsZSB7CisgICAgQE92ZXJyaWRlIHB1YmxpYyB2b2lkIGNsb3NlKCkgeyB9CisgIH0KKworICB2b2lkIG0xKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgdHJ5IChNeVJlc291cmNlIHIxID0gbmV3IE15UmVzb3VyY2UoKSkgeworICAgICAgU3lzdGVtLm91dC5wcmludGxuKHIxKTsKKyAgICB9CisKKyAgICBNeVJlc291cmNlIHIyID0gbmV3IE15UmVzb3VyY2UoKTsKKyAgICB0cnkgKE15UmVzb3VyY2UgciA9IHIyKSB7CisgICAgICBTeXN0ZW0ub3V0LnByaW50bG4ocik7CisgICAgICBTeXN0ZW0ub3V0LnByaW50bG4ocjIpOworICAgIH0KKyAgfQorCisgIHZvaWQgbTIoKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICB0cnkgKE15UmVzb3VyY2UgPHdhcm5pbmcgZGVzY3I9IlZhcmlhYmxlICdyMicgaXMgbmV2ZXIgdXNlZCI+cjI8L3dhcm5pbmc+ID0gbmV3IE15UmVzb3VyY2UoKSkgeyB9CisKKyAgICBNeVJlc291cmNlIDx3YXJuaW5nIGRlc2NyPSJWYXJpYWJsZSAncjMnIGlzIG5ldmVyIGFzc2lnbmVkIj5yMzwvd2FybmluZz47CisgICAgdHJ5IChNeVJlc291cmNlIHIgPSA8ZXJyb3IgZGVzY3I9IlZhcmlhYmxlICdyMycgbWlnaHQgbm90IGhhdmUgYmVlbiBpbml0aWFsaXplZCI+cjM8L2Vycm9yPikgeworICAgICAgU3lzdGVtLm91dC5wcmludGxuKHIpOworICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nNy9VbmNoZWNrZWRHZW5lcmljc0FycmF5Q3JlYXRpb24uamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nNy9VbmNoZWNrZWRHZW5lcmljc0FycmF5Q3JlYXRpb24uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44OTAyODg3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmc3L1VuY2hlY2tlZEdlbmVyaWNzQXJyYXlDcmVhdGlvbi5qYXZhCkBAIC0wLDAgKzEsMTMxIEBACitpbXBvcnQgamF2YS51dGlsLio7CisKK3B1YmxpYyBjbGFzcyBUZXN0IHsKKyAgc3RhdGljIDxUPiBMaXN0PFQ+IGFzTGlzdChULi4uIHR0KSB7CisgICAgU3lzdGVtLm91dC5wcmludGxuKHR0KTsKKyAgICByZXR1cm4gbnVsbDsKKyAgfQorCisgIEBTYWZlVmFyYXJncworICBzdGF0aWMgPFQ+IExpc3Q8VD4gYXNMaXN0U3VwcHJlc3NlZChULi4uIHR0KSB7CisgICAgU3lzdGVtLm91dC5wcmludGxuKHR0KTsKKyAgICByZXR1cm4gbnVsbDsKKyAgfQorCisgIHN0YXRpYyBMaXN0PFN0cmluZz4gYXNTdHJpbmdMaXN0KExpc3Q8U3RyaW5nPi4uLiB0dCkgeworICAgIHJldHVybiB0dFswXTsKKyAgfQorCisgIHN0YXRpYyBMaXN0PD8+IGFzUUxpc3QoTGlzdDw/Pi4uLiB0dCkgeworICAgIHJldHVybiB0dFswXTsKKyAgfQorCisgIHN0YXRpYyBMaXN0PD8+IGFzSW50TGlzdChpbnQuLi4gdHQpIHsKKyAgICBTeXN0ZW0ub3V0LnByaW50bG4odHQpOworICAgIHJldHVybiBudWxsOworICB9CisKKworICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CisgICAgPHdhcm5pbmcgZGVzY3I9IlVuY2hlY2tlZCBnZW5lcmljcyBhcnJheSBjcmVhdGlvbiBmb3IgdmFyYXJncyBwYXJhbWV0ZXIiPmFzTGlzdDwvd2FybmluZz4obmV3IEFycmF5TGlzdDxTdHJpbmc+KCkpOworCisgICAgYXNMaXN0U3VwcHJlc3NlZChuZXcgQXJyYXlMaXN0PFN0cmluZz4oKSk7CisKKyAgICAvL25vaW5zcGVjdGlvbiB1bmNoZWNrZWQKKyAgICBhc0xpc3QobmV3IEFycmF5TGlzdDxTdHJpbmc+KCkpOworCisgICAgPHdhcm5pbmcgZGVzY3I9IlVuY2hlY2tlZCBnZW5lcmljcyBhcnJheSBjcmVhdGlvbiBmb3IgdmFyYXJncyBwYXJhbWV0ZXIiPmFzU3RyaW5nTGlzdDwvd2FybmluZz4obmV3IEFycmF5TGlzdDxTdHJpbmc+KCkpOworCisgICAgYXNRTGlzdChuZXcgQXJyYXlMaXN0PFN0cmluZz4oKSk7CisgICAgYXNJbnRMaXN0KDEpOworCisgICAgZmluYWwgQXJyYXlMaXN0PFN0cmluZz4gbGlzdCA9IG5ldyBBcnJheUxpc3Q8U3RyaW5nPigpOworICAgIDx3YXJuaW5nIGRlc2NyPSJVbmNoZWNrZWQgZ2VuZXJpY3MgYXJyYXkgY3JlYXRpb24gZm9yIHZhcmFyZ3MgcGFyYW1ldGVyIj5hc0xpc3Q8L3dhcm5pbmc+KGxpc3QpOworICB9CisKKyAgcHVibGljIHN0YXRpYyA8Vj4gdm9pZCBqb2luKFZbXSBsaXN0KSB7CisgICAgQXJyYXlzLmFzTGlzdChsaXN0KTsKKyAgfQorfQorCitjbGFzcyBOb1dhcm5ncyB7CisgICAgc3RhdGljIGZpbmFsIFNlbUtleTxTdHJpbmc+IEZJTEVfREVTQ1JJUFRJT05fS0VZID0gPHdhcm5pbmcgZGVzY3I9IlVuY2hlY2tlZCBnZW5lcmljcyBhcnJheSBjcmVhdGlvbiBmb3IgdmFyYXJncyBwYXJhbWV0ZXIiPlNlbUtleS5jcmVhdGVLZXk8L3dhcm5pbmc+KCJGSUxFX0RFU0NSSVBUSU9OX0tFWSIpOworCisgICAgdm9pZCBmKCkgeworICAgICAgICBPQ008U3RyaW5nPiBvID0KKyAgICAgICAgICAgICAgICBuZXcgPHdhcm5pbmcgZGVzY3I9IlVuY2hlY2tlZCBnZW5lcmljcyBhcnJheSBjcmVhdGlvbiBmb3IgdmFyYXJncyBwYXJhbWV0ZXIiPk9DTTw+PC93YXJuaW5nPigiIiwgdHJ1ZSwgbmV3IENvbmRpdGlvbjxTdHJpbmc+KCl7CisgICAgICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgICAgIHB1YmxpYyBib29sZWFuIHZhbChTdHJpbmcgcykgeworICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSwgQ29uZGl0aW9uLlRSVUUpOworICAgICAgU3lzdGVtLm91dC5wcmludGxuKG8pOworICAgIH0KK30KKworY2xhc3MgU2VtS2V5PFQgZXh0ZW5kcyBTdHJpbmc+IHsKKyAgcHJpdmF0ZSBmaW5hbCBTdHJpbmcgbXlEZWJ1Z05hbWU7CisgIHByaXZhdGUgZmluYWwgU2VtS2V5PD8gc3VwZXIgVD5bXSBteVN1cGVyczsKKworICBwcml2YXRlIFNlbUtleShTdHJpbmcgZGVidWdOYW1lLCBTZW1LZXk8PyBzdXBlciBUPi4uLiBzdXBlcnMpIHsKKyAgICBteURlYnVnTmFtZSA9IGRlYnVnTmFtZTsKKyAgICBTeXN0ZW0ub3V0LnByaW50bG4obXlEZWJ1Z05hbWUpOworICAgIG15U3VwZXJzID0gc3VwZXJzOworICAgIFN5c3RlbS5vdXQucHJpbnRsbihteVN1cGVycyk7CisgIH0KKworICBwdWJsaWMgc3RhdGljIDxUIGV4dGVuZHMgU3RyaW5nPiBTZW1LZXk8VD4gY3JlYXRlS2V5KFN0cmluZyBkZWJ1Z05hbWUsIFNlbUtleTw/IHN1cGVyIFQ+Li4uIHN1cGVycykgeworICAgIHJldHVybiBuZXcgU2VtS2V5PFQ+KGRlYnVnTmFtZSwgc3VwZXJzKTsKKyAgfQorCisgIHB1YmxpYyA8SyBleHRlbmRzIFQ+IFNlbUtleTxLPiBzdWJLZXkoU3RyaW5nIGRlYnVnTmFtZSwgU2VtS2V5PD8gc3VwZXIgVD4uLi4gb3RoZXJTdXBlcnMpIHsKKyAgICBpZiAob3RoZXJTdXBlcnMubGVuZ3RoID09IDApIHsKKyAgICAgIHJldHVybiBuZXcgPHdhcm5pbmcgZGVzY3I9IlVuY2hlY2tlZCBnZW5lcmljcyBhcnJheSBjcmVhdGlvbiBmb3IgdmFyYXJncyBwYXJhbWV0ZXIiPlNlbUtleTxLPjwvd2FybmluZz4oZGVidWdOYW1lLCB0aGlzKTsKKyAgICB9CisgICAgcmV0dXJuIG5ldyBTZW1LZXk8Sz4oZGVidWdOYW1lLCBhcHBlbmQob3RoZXJTdXBlcnMsIHRoaXMpKTsKKyAgfQorCisgIHB1YmxpYyBzdGF0aWMgPFQ+IFRbXSBhcHBlbmQoZmluYWwgVFtdIHNyYywgZmluYWwgVCBlbGVtZW50KSB7CisgICAgcmV0dXJuIGFwcGVuZChzcmMsIGVsZW1lbnQsIDx3YXJuaW5nIGRlc2NyPSJVbmNoZWNrZWQgY2FzdDogJ2phdmEubGFuZy5DbGFzczxjYXB0dXJlPD8+PicgdG8gJ2phdmEubGFuZy5DbGFzczxUPiciPihDbGFzczxUPilzcmMuZ2V0Q2xhc3MoKS5nZXRDb21wb25lbnRUeXBlKCk8L3dhcm5pbmc+KTsKKyAgfQorCisgICBwdWJsaWMgc3RhdGljIDxUPiBUW10gYXBwZW5kKFRbXSBzcmMsIGZpbmFsIFQgZWxlbWVudCwgQ2xhc3M8VD4gY29tcG9uZW50VHlwZSkgeworICAgIGludCBsZW5ndGggPSBzcmMubGVuZ3RoOworICAgIFRbXSByZXN1bHQgPSA8d2FybmluZyBkZXNjcj0iVW5jaGVja2VkIGNhc3Q6ICdqYXZhLmxhbmcuT2JqZWN0JyB0byAnVFtdJyI+KFRbXSlqYXZhLmxhbmcucmVmbGVjdC5BcnJheS5uZXdJbnN0YW5jZShjb21wb25lbnRUeXBlLCBsZW5ndGggKyAxKTwvd2FybmluZz47CisgICAgU3lzdGVtLmFycmF5Y29weShzcmMsIDAsIHJlc3VsdCwgMCwgbGVuZ3RoKTsKKyAgICByZXN1bHRbbGVuZ3RoXSA9IGVsZW1lbnQ7CisgICAgcmV0dXJuIHJlc3VsdDsKKyAgfQorfQorCitpbnRlcmZhY2UgQ29uZGl0aW9uPFQ+IHsKKyAgIGJvb2xlYW4gdmFsKFQgdCk7CisKKyAgIENvbmRpdGlvbiBUUlVFID0gbmV3IENvbmRpdGlvbigpIHsKKyAgICAgICBAT3ZlcnJpZGUKKyAgICAgICBwdWJsaWMgYm9vbGVhbiB2YWwoT2JqZWN0IG8pIHsKKyAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgfQorICAgfTsKK30KK2NsYXNzIE9DTTxUPiB7CisgICAgT0NNKFQgcywgYm9vbGVhbiBiLCBDb25kaXRpb248VD4uLi4gYykgeworICAgICAgU3lzdGVtLm91dC5wcmludGxuKHMpOworICAgICAgU3lzdGVtLm91dC5wcmludGxuKGIpOworICAgICAgU3lzdGVtLm91dC5wcmludGxuKGMpOworICAgIH0KKworICAgIE9DTShUIHMsIENvbmRpdGlvbjxUPi4uLiBjKSB7CisgICAgICB0aGlzKHMsIGZhbHNlLCBjKTsKKyAgICB9Cit9CisKK2NsYXNzIFRQU3Vic3RpdHV0aW9uPFQ+IHsKKyAgICBwdWJsaWMgdm9pZCBmKFQuLi4gYXJncykgeworICAgICAgU3lzdGVtLm91dC5wcmludGxuKGFyZ3MpOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIGcoKSB7CisgICAgICAgIG5ldyBUUFN1YnN0aXR1dGlvbjxTdHJpbmc+KCkuZigpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZzcvVW5jaGVja2VkV2FybmluZy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmc3L1VuY2hlY2tlZFdhcm5pbmcuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZmYxMTU0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmc3L1VuY2hlY2tlZFdhcm5pbmcuamF2YQpAQCAtMCwwICsxLDYgQEAKK2NsYXNzIFRlc3QgeworICB7CisgICAgQ2xhc3MgZm9vID0gT2JqZWN0LmNsYXNzOworICAgIDx3YXJuaW5nIGRlc2NyPSJVbmNoZWNrZWQgY2FsbCB0byAnaXNBc3NpZ25hYmxlRnJvbShDbGFzczw/PiknIGFzIGEgbWVtYmVyIG9mIHJhdyB0eXBlICdqYXZhLmxhbmcuQ2xhc3MnIj5mb28uaXNBc3NpZ25hYmxlRnJvbTwvd2FybmluZz4oT2JqZWN0LmNsYXNzKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nNy9VbmNoZWNrZWRXYXJuaW5nSURFQTIxNDMyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZzcvVW5jaGVja2VkV2FybmluZ0lERUEyMTQzMi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdjYjY2YzQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZzcvVW5jaGVja2VkV2FybmluZ0lERUEyMTQzMi5qYXZhCkBAIC0wLDAgKzEsMjMgQEAKKworaW1wb3J0IGphdmEudXRpbC5NYXA7CisKK3B1YmxpYyBjbGFzcyBNaXNzaW5nV2FybmluZyB7CisKKyAgc3RhdGljIGZpbmFsIE1hcDxTdHJpbmcsIFN0cmluZz4gVkFMSURfVkFMVUVTX0JZX0tFWSA9IDx3YXJuaW5nIGRlc2NyPSJVbmNoZWNrZWQgZ2VuZXJpY3MgYXJyYXkgY3JlYXRpb24gZm9yIHZhcmFyZ3MgcGFyYW1ldGVyIj5uZXdFeGNlcHRpb25Pbk51bGxIYXNoTWFwPC93YXJuaW5nPigKKyAgICAiSW52YWxpZCBrZXkiLAorICAgIG5ld0VudHJ5KCJrZXkxIiwgInZhbEEiKSwgLy8gPDwtLS0gY29tcGlsZXIgd2FybmluZyBvbiB0aGlzIGxpbmUKKyAgICBuZXdFbnRyeSgia2V5MiIsICJ2YWxCIiksCisgICAgbmV3RW50cnkoImtleTMiLCAidmFsQyIpLAorICAgIG5ld0VudHJ5KCJrZXk0IiwgInZhbEQiKQorICApOworCisgIHB1YmxpYyBzdGF0aWMgPEssIFY+IE1hcDxLLCBWPiBuZXdFeGNlcHRpb25Pbk51bGxIYXNoTWFwKGZpbmFsIFN0cmluZyA8d2FybmluZyBkZXNjcj0iUGFyYW1ldGVyICdleGNlcHRpb25NZXNzYWdlJyBpcyBuZXZlciB1c2VkIj5leGNlcHRpb25NZXNzYWdlPC93YXJuaW5nPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFwLkVudHJ5PEssIFY+Li4uIDx3YXJuaW5nIGRlc2NyPSJQYXJhbWV0ZXIgJ2VudHJpZXMnIGlzIG5ldmVyIHVzZWQiPmVudHJpZXM8L3dhcm5pbmc+KQorICB7CisgICAgcmV0dXJuIG51bGw7CisgIH0KKworICBwdWJsaWMgc3RhdGljIDxLLCBWPiBNYXAuRW50cnk8SywgVj4gbmV3RW50cnkoSyA8d2FybmluZyBkZXNjcj0iUGFyYW1ldGVyICdrZXknIGlzIG5ldmVyIHVzZWQiPmtleTwvd2FybmluZz4sIFYgPHdhcm5pbmcgZGVzY3I9IlBhcmFtZXRlciAndmFsdWUnIGlzIG5ldmVyIHVzZWQiPnZhbHVlPC93YXJuaW5nPikgeworICAgIHJldHVybiBudWxsOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmc3L1VuY2hlY2tlZFdhcm5pbmdJREVBMjY3MzguamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nNy9VbmNoZWNrZWRXYXJuaW5nSURFQTI2NzM4LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODI0OTgyYwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nNy9VbmNoZWNrZWRXYXJuaW5nSURFQTI2NzM4LmphdmEKQEAgLTAsMCArMSwxOSBAQAoraW1wb3J0IGphdmEudXRpbC5Db2xsZWN0aW9uOworCisKK2NsYXNzIFVuY2hlY2tlZEJ1ZworeworCisgIHZvaWQgZm9vKENvbGxlY3Rpb248U3RyaW5nPiBzdHJpbmdzKSB7CisgICAgYXNzZXJ0VGhhdChzdHJpbmdzLCBoYXNTaXplKDApKTsKKyAgfQorCisgIHB1YmxpYyBzdGF0aWMgPEU+IE1hdGNoZXI8Q29sbGVjdGlvbjw/IGV4dGVuZHMgRT4+IGhhc1NpemUoaW50IDx3YXJuaW5nIGRlc2NyPSJQYXJhbWV0ZXIgJ3NpemUnIGlzIG5ldmVyIHVzZWQiPnNpemU8L3dhcm5pbmc+KSB7CisgICAgcmV0dXJuIG51bGw7CisgIH0KKworICBwdWJsaWMgc3RhdGljIDxUPiB2b2lkIGFzc2VydFRoYXQoVCA8d2FybmluZyBkZXNjcj0iUGFyYW1ldGVyICdhY3R1YWwnIGlzIG5ldmVyIHVzZWQiPmFjdHVhbDwvd2FybmluZz4sIE1hdGNoZXI8PyBzdXBlciBUPiA8d2FybmluZyBkZXNjcj0iUGFyYW1ldGVyICdtYXRjaGVyJyBpcyBuZXZlciB1c2VkIj5tYXRjaGVyPC93YXJuaW5nPikgeworICB9CisKKyAgaW50ZXJmYWNlIE1hdGNoZXI8PHdhcm5pbmcgZGVzY3I9IlR5cGUgcGFyYW1ldGVyICdUJyBpcyBuZXZlciB1c2VkIj5UPC93YXJuaW5nPj4ge30KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZzcvVW5jaGVja2VkV2FybmluZ0lERUE1OTI5MC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmc3L1VuY2hlY2tlZFdhcm5pbmdJREVBNTkyOTAuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZTMxMDNjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmc3L1VuY2hlY2tlZFdhcm5pbmdJREVBNTkyOTAuamF2YQpAQCAtMCwwICsxLDEyIEBACitpbXBvcnQgamF2YS51dGlsLio7CitjbGFzcyBUZXN0IHsKKyAgeyAKKyAgICBMaXN0PD8gc3VwZXIgQ2hhclNlcXVlbmNlPiBsaXN0ID0gbmV3IEFycmF5TGlzdDxDaGFyU2VxdWVuY2U+KCk7CisgICAgTGlzdDw/IHN1cGVyIFN0cmluZz4gZm9vID0gbGlzdDsKKyAgICBTeXN0ZW0ub3V0LnByaW50bG4oZm9vKTsKKworICAgIExpc3Q8PyBleHRlbmRzIFN0cmluZz4gbGlzdDEgPSBuZXcgQXJyYXlMaXN0PFN0cmluZz4oKTsKKyAgICBMaXN0PD8gZXh0ZW5kcyBDaGFyU2VxdWVuY2U+IGZvbzEgPSBsaXN0MTsKKyAgICBTeXN0ZW0ub3V0LnByaW50bG4oZm9vMSk7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZzcvVW5jaGVja2VkV2FybmluZ0lERUE2MDE2Ni5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmc3L1VuY2hlY2tlZFdhcm5pbmdJREVBNjAxNjYuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MDY5MGI2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmc3L1VuY2hlY2tlZFdhcm5pbmdJREVBNjAxNjYuamF2YQpAQCAtMCwwICsxLDE1IEBACitjbGFzcyBOb2RlPEU+IHsKKyAgcHVibGljIGNsYXNzIERldGFpbHMgeworICAgIHB1YmxpYyBFIGRhdGE7CisgIH0KKyAgcHVibGljIERldGFpbHMgYWRkTm9kZShOb2RlPEU+IDx3YXJuaW5nIGRlc2NyPSJQYXJhbWV0ZXIgJ2NoaWxkJyBpcyBuZXZlciB1c2VkIj5jaGlsZDwvd2FybmluZz4pIHsKKyAgICByZXR1cm4gbmV3IERldGFpbHMoKTsKKyAgfQorfQorY2xhc3MgVGVzdDVfMSB7CisgIHN0YXRpYyBOb2RlPFN0cmluZz4uRGV0YWlscyBkZXRhaWxzOworICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CisgICAgTm9kZTxTdHJpbmc+IHN0cmluZ05vZGUgPSBuZXcgTm9kZTxTdHJpbmc+KCk7CisgICAgZGV0YWlscyA9IDx3YXJuaW5nIGRlc2NyPSJVbmNoZWNrZWQgYXNzaWdubWVudDogJ05vZGUuRGV0YWlscycgdG8gJ05vZGU8amF2YS5sYW5nLlN0cmluZz4uRGV0YWlscyciPihOb2RlLkRldGFpbHMpc3RyaW5nTm9kZS5hZGROb2RlKG5ldyBOb2RlPFN0cmluZz4oKSk8L3dhcm5pbmc+OworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmc3L1VuY2hlY2tlZFdhcm5pbmdJREVBNzA2MjAuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nNy9VbmNoZWNrZWRXYXJuaW5nSURFQTcwNjIwLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGY4NTZhZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nNy9VbmNoZWNrZWRXYXJuaW5nSURFQTcwNjIwLmphdmEKQEAgLTAsMCArMSwyOSBAQAorY2xhc3MgVW5jaGVja2VkQ2FzdEZhbHNlUG9zaXRpdmU8VD4geworCisgIHByaXZhdGUgdm9pZCA8d2FybmluZyBkZXNjcj0iUHJpdmF0ZSBtZXRob2QgJ3Rlc3QoamF2YS5sYW5nLk9iamVjdCwgamF2YS5sYW5nLk9iamVjdCknIGlzIG5ldmVyIHVzZWQiPnRlc3Q8L3dhcm5pbmc+KCBPYmplY3Qgb25lLCBPYmplY3QgdHdvICkgeworICAgIEBTdXBwcmVzc1dhcm5pbmdzKCAidW5jaGVja2VkIiApCisgICAgVW5jaGVja2VkQ2FzdEZhbHNlUG9zaXRpdmU8VD4gb3V0ZXIgPSAoIFVuY2hlY2tlZENhc3RGYWxzZVBvc2l0aXZlPFQ+ICkgb25lOworICAgIFN5c3RlbS5vdXQucHJpbnRsbihvdXRlcik7CisKKyAgICBJbm5lckNsYXNzIGlubmVyID0gPHdhcm5pbmcgZGVzY3I9IlVuY2hlY2tlZCBjYXN0OiAnamF2YS5sYW5nLk9iamVjdCcgdG8gJ1VuY2hlY2tlZENhc3RGYWxzZVBvc2l0aXZlLklubmVyQ2xhc3MnIj4oIElubmVyQ2xhc3MgKSB0d288L3dhcm5pbmc+OworICAgIFN5c3RlbS5vdXQucHJpbnRsbihpbm5lcik7CisgIH0KKworICBwcml2YXRlIGNsYXNzIElubmVyQ2xhc3Mge30KK30KKworCitjbGFzcyBVbmNoZWNrZWRDYXN0RmFsc2VQb3NpdGl2ZTE8VD4geworCisgIHByaXZhdGUgdm9pZCA8d2FybmluZyBkZXNjcj0iUHJpdmF0ZSBtZXRob2QgJ3Rlc3QoamF2YS5sYW5nLk9iamVjdCwgamF2YS5sYW5nLk9iamVjdCknIGlzIG5ldmVyIHVzZWQiPnRlc3Q8L3dhcm5pbmc+KCBPYmplY3Qgb25lLCBPYmplY3QgdHdvICkgeworICAgIEBTdXBwcmVzc1dhcm5pbmdzKCAidW5jaGVja2VkIiApCisgICAgVW5jaGVja2VkQ2FzdEZhbHNlUG9zaXRpdmUxPFQ+IG91dGVyID0gKCBVbmNoZWNrZWRDYXN0RmFsc2VQb3NpdGl2ZTE8VD4gKSBvbmU7CisgICAgU3lzdGVtLm91dC5wcmludGxuKG91dGVyKTsKKworICAgIFVuY2hlY2tlZENhc3RGYWxzZVBvc2l0aXZlMTxUPi5Jbm5lckNsYXNzIGlubmVyID0gPHdhcm5pbmcgZGVzY3I9IlVuY2hlY2tlZCBjYXN0OiAnamF2YS5sYW5nLk9iamVjdCcgdG8gJ1VuY2hlY2tlZENhc3RGYWxzZVBvc2l0aXZlMTxUPi5Jbm5lckNsYXNzJyI+KCBVbmNoZWNrZWRDYXN0RmFsc2VQb3NpdGl2ZTE8VD4uSW5uZXJDbGFzcyApIHR3bzwvd2FybmluZz47CisgICAgU3lzdGVtLm91dC5wcmludGxuKGlubmVyKTsKKyAgfQorCisgIHByaXZhdGUgY2xhc3MgSW5uZXJDbGFzcyB7fQorCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmc3L1VudXNlZC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmc3L1VudXNlZC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFjMzA1MDQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZzcvVW51c2VkLmphdmEKQEAgLTAsMCArMSw2NyBAQAorLyoKKyAqIENvcHlyaWdodCAyMDAwLTIwMTIgSmV0QnJhaW5zIHMuci5vLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK2ltcG9ydCBqYXZhLmlvLio7CitpbXBvcnQgamF2YS5uZXQuKjsKKworY2xhc3MgVW51c2VkRGVjbEJ1ZyB7CisgICAgcHVibGljIHN0YXRpYyBlbnVtIENvbmNlcm4geworICAgICAgICAvLyBUaGVzZSBmaWVsZHMgYXJlIHVzZWQhICBKdXN0IGJlY2F1c2UgSSBkb24ndCBtZW50aW9uIHRoZW0gYnkgbmFtZQorICAgICAgICAvLyBkb2Vzbid0IG1lYW4gdGhleSBhcmVuJ3QgdXNlZCEKKyAgICAgICAgLy8gSURFQSB0ZWxscyBtZSBJIG5lZWQ6IEBTdXBwcmVzc1dhcm5pbmdzKHsiVW51c2VkRGVjbGFyYXRpb24ifSkKKyAgICAgICAgTE9XLAorICAgICAgICBNRURJVU0sCisgICAgICAgIEhJR0g7CisgICAgfTsKKworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJDb25jZXJucyBhcmU6Iik7CisKKyAgICAgICAgLy8gSW52b2tpbmcgQ29uY2Vybi52YWx1ZXMoKSBzaG91bGQgY291bnQgYXMgdXNpbmcgYWxsIHRoZSBmaWVsZHMgaW4gdGhlCisgICAgICAgIC8vIGVudW0uCisgICAgICAgIGZvciAoQ29uY2VybiBjb25jZXJuIDogQ29uY2Vybi52YWx1ZXMoKSkgeworICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludCgiXHQiKTsKKyAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihjb25jZXJuKTsKKyAgICAgICAgfSAvLyBlbmQgZm9yCisgICAgfQorfQorCitjbGFzcyBGb3JFYWNoVGVzdCB7CisgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKKyAgICBpbnQgY291bnQgPSAwOworICAgIGZvciAoU3RyaW5nIGlnbm9yZSA6IGFyZ3MpIHsKKyAgICAgIGNvdW50Kys7CisgICAgfQorICAgIFN5c3RlbS5vdXQucHJpbnRsbihjb3VudCk7CisgIH0KK30KKworY2xhc3MgVHJ5V2l0aFJlc291cmNlc1Rlc3QgeworICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CisgICAgU3lzdGVtLm91dC5wcmludGxuKGNoZWNrVXJsKCJiYWQgdXJsIikpOworICB9CisKKyAgcHJpdmF0ZSBzdGF0aWMgU3RyaW5nIGNoZWNrVXJsKFN0cmluZyB1cmwpIHsKKyAgICB0cnkgeworICAgICAgVVJMQ29ubmVjdGlvbiBjb25uZWN0aW9uID0gbmV3IFVSTCh1cmwpLm9wZW5Db25uZWN0aW9uKCk7CisgICAgICB0cnkgKElucHV0U3RyZWFtIGlnbm9yZWQgPSBjb25uZWN0aW9uLmdldElucHV0U3RyZWFtKCkpIHsKKyAgICAgICAgcmV0dXJuIGNvbm5lY3Rpb24uZ2V0VVJMKCkudG9TdHJpbmcoKTsKKyAgICAgIH0KKyAgICB9CisgICAgY2F0Y2ggKElPRXhjZXB0aW9uIGUpIHsKKyAgICAgIHJldHVybiBudWxsOworICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nNy9Vc2VkTWV0aG9kc0J5TWV0aG9kUmVmZXJlbmNlcy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmc3L1VzZWRNZXRob2RzQnlNZXRob2RSZWZlcmVuY2VzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzVkMDkwMAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nNy9Vc2VkTWV0aG9kc0J5TWV0aG9kUmVmZXJlbmNlcy5qYXZhCkBAIC0wLDAgKzEsMTIgQEAKK2NsYXNzIEMgeworICBpbnRlcmZhY2UgU2ltcGxlc3QgeworICAgIHZvaWQgbSgpOworICB9CisgIHByaXZhdGUgc3RhdGljIHZvaWQgc2ltcGxlc3QxKCkgeyB9CisgIHByaXZhdGUgc3RhdGljIHZvaWQgPHdhcm5pbmcgZGVzY3I9IlByaXZhdGUgbWV0aG9kICdzaW1wbGVzdCgpJyBpcyBuZXZlciB1c2VkIj5zaW1wbGVzdDwvd2FybmluZz4oKSB7IH0KKworICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CisgICAgU2ltcGxlc3QgbyA9IEM6OnNpbXBsZXN0MTsKKyAgICBTeXN0ZW0ub3V0LnByaW50bG4obyk7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZzcvV3JvbmdBcmdzQW5kVW5rbm93blR5cGVQYXJhbXMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nNy9Xcm9uZ0FyZ3NBbmRVbmtub3duVHlwZVBhcmFtcy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjViZmUxN2MKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZzcvV3JvbmdBcmdzQW5kVW5rbm93blR5cGVQYXJhbXMuamF2YQpAQCAtMCwwICsxLDExIEBACitjbGFzcyBUY3BDb25uZWN0aW9uIGV4dGVuZHMgQ2xpZW50Q29ubmVjdGlvbiB7CisgICAgQ29ubmVjdGlvbkV2ZW50RGVsZWdhdGU8PyBleHRlbmRzIENsaWVudENvbm5lY3Rpb24+IGV2ZW50RGVsZWdhdGU7CisgICAgeworICAgICAgICBldmVudERlbGVnYXRlLjxDbGllbnRDb25uZWN0aW9uPiBvbkRpc2Nvbm5lY3Q8ZXJyb3IgZGVzY3I9IidvbkRpc2Nvbm5lY3QoY2FwdHVyZTw/IGV4dGVuZHMgQ2xpZW50Q29ubmVjdGlvbj4pJyBpbiAnQ29ubmVjdGlvbkV2ZW50RGVsZWdhdGUnIGNhbm5vdCBiZSBhcHBsaWVkIHRvICcoVGNwQ29ubmVjdGlvbiknIj4odGhpcyk8L2Vycm9yPjsKKyAgICB9Cit9CisKK2NsYXNzIENsaWVudENvbm5lY3Rpb24ge30KK2ludGVyZmFjZSBDb25uZWN0aW9uRXZlbnREZWxlZ2F0ZTxUIGV4dGVuZHMgQ2xpZW50Q29ubmVjdGlvbj4geworICAgIHZvaWQgb25EaXNjb25uZWN0KFQgdCk7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmc3L2FtYmlndW91cy9wY2svQW1iaWd1b3VzTWV0aG9kQ2FsbC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmc3L2FtYmlndW91cy9wY2svQW1iaWd1b3VzTWV0aG9kQ2FsbC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJhZGFlY2QKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZzcvYW1iaWd1b3VzL3Bjay9BbWJpZ3VvdXNNZXRob2RDYWxsLmphdmEKQEAgLTAsMCArMSwyMSBAQAorcGFja2FnZSBwY2s7CisKK2ltcG9ydCBqYXZhLnV0aWwuTGlzdDsKKworaW1wb3J0IHN0YXRpYyBwY2suQy5mb287CitpbXBvcnQgc3RhdGljIHBjay5ELmZvbzsKKworY2xhc3MgQyB7CisgICAgc3RhdGljIDxUPiB2b2lkIGZvbyhMaXN0PD8gZXh0ZW5kcyBMaXN0PFQ+PiB4KSB7IH0KK30KKworY2xhc3MgRCB7CisgICAgc3RhdGljIDxUPiBTdHJpbmcgZm9vKExpc3Q8TGlzdDxUPj4geCkgeyByZXR1cm4gbnVsbDsgfQorfQorCitwdWJsaWMgY2xhc3MgTWFpbiB7CisgICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncyl7CisgICAgICAgIExpc3Q8TGlzdDxTdHJpbmc+PiB4ID0gbnVsbDsKKyAgICAgICAgZm9vKHgpLnRvTG93ZXJDYXNlKCk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmc3L2FtYmlndW91c0FycmF5SW5TdWJzdC9wY2svQW1iaWd1b3VzTWV0aG9kQ2FsbC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmc3L2FtYmlndW91c0FycmF5SW5TdWJzdC9wY2svQW1iaWd1b3VzTWV0aG9kQ2FsbC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRhODMzNDIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZzcvYW1iaWd1b3VzQXJyYXlJblN1YnN0L3Bjay9BbWJpZ3VvdXNNZXRob2RDYWxsLmphdmEKQEAgLTAsMCArMSwyMSBAQAorcGFja2FnZSBwY2s7CisKK2ltcG9ydCBqYXZhLnV0aWwuTGlzdDsKKworaW1wb3J0IHN0YXRpYyBwY2suQy5mb287CitpbXBvcnQgc3RhdGljIHBjay5ELmZvbzsKKworY2xhc3MgQyB7CisgICAgc3RhdGljIDxUPiB2b2lkIGZvbyhMaXN0PFQ+IHgpIHsgfQorfQorCitjbGFzcyBEIHsKKyAgICBzdGF0aWMgPFQ+IFN0cmluZyBmb28oTGlzdDxUW10+IHgpIHsgcmV0dXJuIG51bGw7IH0KK30KKworcHVibGljIGNsYXNzIE1haW4geworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpeworICAgICAgICBMaXN0PFN0cmluZ1tdPiB4ID0gbnVsbDsKKyAgICAgICAgZm9vKHgpLnRvTG93ZXJDYXNlKCk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmc3L2FtYmlndW91c0lERUEyMTY2MC9wY2svQW1iaWd1b3VzTWV0aG9kQ2FsbC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmc3L2FtYmlndW91c0lERUEyMTY2MC9wY2svQW1iaWd1b3VzTWV0aG9kQ2FsbC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZkNzMxNWQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZzcvYW1iaWd1b3VzSURFQTIxNjYwL3Bjay9BbWJpZ3VvdXNNZXRob2RDYWxsLmphdmEKQEAgLTAsMCArMSwxNSBAQAorcGFja2FnZSBwY2s7CisKK2NsYXNzIFRlc3RDYXNlIHsKKyAgdm9pZCBhc3NlcnRFcXVhbHMoT2JqZWN0IG8xLCBPYmplY3QgbzIpIHt9CisKKyAgdm9pZCBhc3NlcnRFcXVhbHMoaW50IGkxLCBpbnQgaTIpIHt9Cit9CisKK2NsYXNzIFRlc3QgZXh0ZW5kcyBUZXN0Q2FzZSB7CisgIHZvaWQgdGVzdCgpIHsKKyAgICBpbnQgZXhwZWN0ZWQgPSAxOworICAgIEludGVnZXIgYWN0dWFsID0gMjsKKyAgICBhc3NlcnRFcXVhbHM8ZXJyb3IgZGVzY3I9IkFtYmlndW91cyBtZXRob2QgY2FsbDogYm90aCAnVGVzdENhc2UuYXNzZXJ0RXF1YWxzKE9iamVjdCwgT2JqZWN0KScgYW5kICdUZXN0Q2FzZS5hc3NlcnRFcXVhbHMoaW50LCBpbnQpJyBtYXRjaCI+KGV4cGVjdGVkLCBhY3R1YWwpPC9lcnJvcj47CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZzcvYW1iaWd1b3VzSURFQTIyNTQ3L3Bjay9BbWJpZ3VvdXNNZXRob2RDYWxsLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZzcvYW1iaWd1b3VzSURFQTIyNTQ3L3Bjay9BbWJpZ3VvdXNNZXRob2RDYWxsLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTkxZmFjNQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nNy9hbWJpZ3VvdXNJREVBMjI1NDcvcGNrL0FtYmlndW91c01ldGhvZENhbGwuamF2YQpAQCAtMCwwICsxLDMwIEBACisvKgorICogQ29weXJpZ2h0IDIwMDAtMjAxMiBKZXRCcmFpbnMgcy5yLm8uCisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcGFja2FnZSBwY2s7CisKK2ltcG9ydCBzdGF0aWMgcGNrLkFzc2VydC5hc3NlcnRFcXVhbHM7CisKK2NsYXNzIEFzc2VydCB7CisgIHN0YXRpYyB2b2lkIGFzc2VydEVxdWFscyhPYmplY3QgbzEsIE9iamVjdCBvMikge30KKworICBzdGF0aWMgdm9pZCBhc3NlcnRFcXVhbHMobG9uZyBsMSwgbG9uZyBsMikge30KK30KKworY2xhc3MgVGVzdCB7CisgIHZvaWQgdGVzdCgpIHsKKyAgICBhc3NlcnRFcXVhbHM8ZXJyb3IgZGVzY3I9IkFtYmlndW91cyBtZXRob2QgY2FsbDogYm90aCAnQXNzZXJ0LmFzc2VydEVxdWFscyhPYmplY3QsIE9iamVjdCknIGFuZCAnQXNzZXJ0LmFzc2VydEVxdWFscyhsb25nLCBsb25nKScgbWF0Y2giPigxMDBMLCBMb25nLnZhbHVlT2YoMTAwTCkpPC9lcnJvcj47CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZzcvYW1iaWd1b3VzSURFQTI0NzY4L3Bjay9BbWJpZ3VvdXNNZXRob2RDYWxsLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZzcvYW1iaWd1b3VzSURFQTI0NzY4L3Bjay9BbWJpZ3VvdXNNZXRob2RDYWxsLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzhlOTgzMgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nNy9hbWJpZ3VvdXNJREVBMjQ3NjgvcGNrL0FtYmlndW91c01ldGhvZENhbGwuamF2YQpAQCAtMCwwICsxLDQzIEBACisvKgorICogQ29weXJpZ2h0IDIwMDAtMjAxMiBKZXRCcmFpbnMgcy5yLm8uCisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcGFja2FnZSBwY2s7CisKK2ltcG9ydCBqYXZhLnV0aWwuQXJyYXlMaXN0OworaW1wb3J0IGphdmEudXRpbC5MaXN0OworCitjbGFzcyBJZGVhQnVnIHsKKworICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CisgICAgQ2xhc3NBLmNvcHlPZihuZXcgQXJyYXlMaXN0PFN0cmluZz4oKSk7CisgIH0KKworICBwcml2YXRlIHN0YXRpYyBjbGFzcyBDbGFzc0E8RT4gZXh0ZW5kcyBDbGFzc0I8RT4geworCisgICAgPGVycm9yIGRlc2NyPSInY29weU9mKEl0ZXJhYmxlPD8gZXh0ZW5kcyBFPiknIGluICdwY2suSWRlYUJ1Zy5DbGFzc0EnIGNsYXNoZXMgd2l0aCAnY29weU9mKEl0ZXJhYmxlPD8gZXh0ZW5kcyBFPiknIGluICdwY2suSWRlYUJ1Zy5DbGFzc0InOyBib3RoIG1ldGhvZHMgaGF2ZSBzYW1lIGVyYXN1cmUsIHlldCBuZWl0aGVyIGhpZGVzIHRoZSBvdGhlciI+cHVibGljIHN0YXRpYyA8RSBleHRlbmRzIENvbXBhcmFibGU8PyBzdXBlciBFPj4gQ2xhc3NBPEU+IGNvcHlPZigKKyAgICAgICAgSXRlcmFibGU8PyBleHRlbmRzIEU+IGVsZW1lbnRzKTwvZXJyb3I+IHsKKyAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiSGVsbG8gZnJvbSBDbGFzc0EiKTsKKyAgICAgIHJldHVybiBudWxsOworICAgIH0KKyAgfQorCisgIHByaXZhdGUgc3RhdGljIGNsYXNzIENsYXNzQjxFPiB7CisKKyAgICBwdWJsaWMgc3RhdGljIDxFPiBDbGFzc0E8RT4gY29weU9mKEl0ZXJhYmxlPD8gZXh0ZW5kcyBFPiBlbGVtZW50cykgeworICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJIZWxsbyBmcm9tIENsYXNzQiIpOworICAgICAgcmV0dXJuIG51bGw7CisgICAgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmc3L2FtYmlndW91c0lERUEyNTA5Ny9wY2svQW1iaWd1b3VzTWV0aG9kQ2FsbC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmc3L2FtYmlndW91c0lERUEyNTA5Ny9wY2svQW1iaWd1b3VzTWV0aG9kQ2FsbC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY4NWJhN2UKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZzcvYW1iaWd1b3VzSURFQTI1MDk3L3Bjay9BbWJpZ3VvdXNNZXRob2RDYWxsLmphdmEKQEAgLTAsMCArMSwyOSBAQAorLyoKKyAqIENvcHlyaWdodCAyMDAwLTIwMTIgSmV0QnJhaW5zIHMuci5vLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2UgcGNrOworY2xhc3MgR2VuZXJpY3M8VD4geworICBwdWJsaWMgdm9pZCByZW5kZXIoVCB0KSB7CisgICAgU3lzdGVtLm91dC5wcmludGxuKCJnZW5lcmljIik7CisgIH0KKworICBwdWJsaWMgdm9pZCByZW5kZXIoSW50ZWdlciB0KSB7CisgICAgU3lzdGVtLm91dC5wcmludGxuKCJpbnQiKTsKKyAgfQorCisgIHN0YXRpYyB7CisgICAgbmV3IEdlbmVyaWNzPEludGVnZXI+KCkucmVuZGVyPGVycm9yIGRlc2NyPSJBbWJpZ3VvdXMgbWV0aG9kIGNhbGw6IGJvdGggJ0dlbmVyaWNzLnJlbmRlcihJbnRlZ2VyKScgYW5kICdHZW5lcmljcy5yZW5kZXIoSW50ZWdlciknIG1hdGNoIj4oNSk8L2Vycm9yPjsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nNy9hbWJpZ3VvdXNJREVBNTcyNjkvcGNrL0FtYmlndW91c01ldGhvZENhbGwuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nNy9hbWJpZ3VvdXNJREVBNTcyNjkvcGNrL0FtYmlndW91c01ldGhvZENhbGwuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43OGFmMDY5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmc3L2FtYmlndW91c0lERUE1NzI2OS9wY2svQW1iaWd1b3VzTWV0aG9kQ2FsbC5qYXZhCkBAIC0wLDAgKzEsMTkgQEAKK3BhY2thZ2UgcGNrOworCitjbGFzcyBBIHsKKyAgPFQ+IHZvaWQgZm9vKFQgeCkgeworICAgIGZvbygxKTsKKworICAgIGxvbmcgeDEgPSAxTDsKKyAgICBmb28oeDEpOworICAgIAorICAgIExvbmcgeDIgPSAxTDsKKyAgICBmb28oeDIpOworICAgIAorICAgIEludGVnZXIgeDMgPSAxOworICAgIGZvbyh4Myk7CisgIH0KKworICB2b2lkIGZvbyhsb25nIHgpIHsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmc3L2FtYmlndW91c0lERUE1NzI3OC9wY2svQW1iaWd1b3VzTWV0aG9kQ2FsbC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmc3L2FtYmlndW91c0lERUE1NzI3OC9wY2svQW1iaWd1b3VzTWV0aG9kQ2FsbC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZhYjgyNWEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZzcvYW1iaWd1b3VzSURFQTU3Mjc4L3Bjay9BbWJpZ3VvdXNNZXRob2RDYWxsLmphdmEKQEAgLTAsMCArMSwxMiBAQAorcGFja2FnZSBwY2s7CisKK2ludGVyZmFjZSBJeworICAgIDxUIGV4dGVuZHMgSXRlcmFibGU8U3RyaW5nPiAmIENsb25lYWJsZT4gdm9pZCBmb28oKTsKK30KKworYWJzdHJhY3QgY2xhc3MgQSB7CisgICAgYWJzdHJhY3QgPFQgZXh0ZW5kcyBJdGVyYWJsZTxTdHJpbmc+PiB2b2lkIGZvbygpOworICAgIDxUIGV4dGVuZHMgQSAmIEk+IHZvaWQgYmFyKFQgeCl7CisgICAgICAgIHguZm9vPGVycm9yIGRlc2NyPSJBbWJpZ3VvdXMgbWV0aG9kIGNhbGw6IGJvdGggJ0EuZm9vKCknIGFuZCAnSS5mb28oKScgbWF0Y2giPigpPC9lcnJvcj47CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmc3L2FtYmlndW91c0lERUE1NzMwNi9wY2svQW1iaWd1b3VzTWV0aG9kQ2FsbC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmc3L2FtYmlndW91c0lERUE1NzMwNi9wY2svQW1iaWd1b3VzTWV0aG9kQ2FsbC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBlNzgwN2QKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZzcvYW1iaWd1b3VzSURFQTU3MzA2L3Bjay9BbWJpZ3VvdXNNZXRob2RDYWxsLmphdmEKQEAgLTAsMCArMSwxNSBAQAorcGFja2FnZSBwY2s7CisKK2NsYXNzIEE8VD4ge30KKworaW50ZXJmYWNlIElBeworICAgIDxUPiB2b2lkIGZvbyhBPFQ+IHgpOworfQoraW50ZXJmYWNlIElCeworICAgIDxUIGV4dGVuZHMgRXhjZXB0aW9uPiB2b2lkIGZvbyhBPFQ+IHgpOworfQorY2xhc3MgQyB7CisgICAgPDxlcnJvciBkZXNjcj0iJ2ZvbyhBPFQ+KScgaW4gJ3Bjay5JQicgY2xhc2hlcyB3aXRoICdmb28oQTxUPiknIGluICdwY2suSUEnOyBib3RoIG1ldGhvZHMgaGF2ZSBzYW1lIGVyYXN1cmUsIHlldCBuZWl0aGVyIG92ZXJyaWRlcyB0aGUgb3RoZXIiPjwvZXJyb3I+VCBleHRlbmRzIElBICYgSUI+IHZvaWQgYmFyKFQgeCwgQTxFeGNlcHRpb24+IHkpeworICAgICAgICB4LmZvbyh5KTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZzcvYW1iaWd1b3VzSURFQTU3MzE3L3Bjay9BbWJpZ3VvdXNNZXRob2RDYWxsLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZzcvYW1iaWd1b3VzSURFQTU3MzE3L3Bjay9BbWJpZ3VvdXNNZXRob2RDYWxsLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTI4ZmJlMQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nNy9hbWJpZ3VvdXNJREVBNTczMTcvcGNrL0FtYmlndW91c01ldGhvZENhbGwuamF2YQpAQCAtMCwwICsxLDExIEBACitwYWNrYWdlIHBjazsKKworY2xhc3MgQjxLPiB7fQorY2xhc3MgQTxLPiBleHRlbmRzIEI8Sz4geworICAgIHZvaWQgZm9vKEE8QTxTdHJpbmc+PiBiKXsKKyAgICAgICAgYmFyPGVycm9yIGRlc2NyPSJBbWJpZ3VvdXMgbWV0aG9kIGNhbGw6IGJvdGggJ0EuYmFyKEI8PyBleHRlbmRzIEE8U3RyaW5nPj4pJyBhbmQgJ0EuYmFyKEE8PyBleHRlbmRzIEI8U3RyaW5nPj4pJyBtYXRjaCI+KGIpPC9lcnJvcj47CisgICAgfQorCisgICAgPFQ+IHZvaWQgYmFyKEI8PyBleHRlbmRzIEE8VD4+IGEpe30KKyAgICA8VD4gdm9pZCBiYXIoQTw/IGV4dGVuZHMgQjxUPj4gYSl7fQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmc3L2FtYmlndW91c0lERUE1NzUzNS9wY2svQW1iaWd1b3VzTWV0aG9kQ2FsbC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmc3L2FtYmlndW91c0lERUE1NzUzNS9wY2svQW1iaWd1b3VzTWV0aG9kQ2FsbC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM5NDlhMmQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZzcvYW1iaWd1b3VzSURFQTU3NTM1L3Bjay9BbWJpZ3VvdXNNZXRob2RDYWxsLmphdmEKQEAgLTAsMCArMSw5IEBACitwYWNrYWdlIHBjazsKKworYWJzdHJhY3QgY2xhc3MgQ3sKKyAgICBhYnN0cmFjdCA8VCBleHRlbmRzIENvbXBhcmFibGU8Pz4+IHZvaWQgZm9vKFQgeCk7CisgICAgYWJzdHJhY3QgPFQgZXh0ZW5kcyBOdW1iZXIgJiBDb21wYXJhYmxlPD8+PiB2b2lkIGZvbyhUIHgpOworICAgIHZvaWQgYmFyKEludGVnZXIgeCl7CisgICAgICAgIGZvbyh4KTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZzcvYW1iaWd1b3VzSURFQTY3NTczL3Bjay9BbWJpZ3VvdXNNZXRob2RDYWxsLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZzcvYW1iaWd1b3VzSURFQTY3NTczL3Bjay9BbWJpZ3VvdXNNZXRob2RDYWxsLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjYzYjZhYQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nNy9hbWJpZ3VvdXNJREVBNjc1NzMvcGNrL0FtYmlndW91c01ldGhvZENhbGwuamF2YQpAQCAtMCwwICsxLDE3IEBACitpbnRlcmZhY2UgQQoreworICAgIGFic3RyYWN0IHZvaWQgZm9vKFN0cmluZ1tdIC4uLiBzKTsKK30KKworaW50ZXJmYWNlIEIKK3sKKyAgICBhYnN0cmFjdCB2b2lkIGZvbyhTdHJpbmdbXSBzKTsKK30KKworY2xhc3MgQzxUIGV4dGVuZHMgQSAmIEI+Cit7CisgICAgdm9pZCBiYXIoVCB4KQorICAgIHsKKyAgICAgICAgeC5mb28obnVsbCk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmc3L2FtYmlndW91c0lERUE2NzgzMi9wY2svQW1iaWd1b3VzTWV0aG9kQ2FsbC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmc3L2FtYmlndW91c0lERUE2NzgzMi9wY2svQW1iaWd1b3VzTWV0aG9kQ2FsbC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ1OTEwZDEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZzcvYW1iaWd1b3VzSURFQTY3ODMyL3Bjay9BbWJpZ3VvdXNNZXRob2RDYWxsLmphdmEKQEAgLTAsMCArMSwxNyBAQAorcGFja2FnZSBwY2s7CitpbXBvcnQgc3RhdGljIHBjay5ELmZvbzsKK2ltcG9ydCBzdGF0aWMgcGNrLkMuZm9vOworCitwdWJsaWMgY2xhc3MgQyB7CisgICAgIHB1YmxpYyBzdGF0aWMgPFQgZXh0ZW5kcyBDb21wYXJhYmxlPFM+LCBTPiB2b2lkIGZvbyhUIHgpe30KK30KKworY2xhc3MgRCB7CisgICAgIHB1YmxpYyBzdGF0aWMgPFQgZXh0ZW5kcyBDb21wYXJhYmxlPD8+PiB2b2lkIGZvbyhUIHgpe30KK30KKworY2xhc3MgQnsKKyAgICB7CisgICAgICAgZm9vPGVycm9yIGRlc2NyPSJBbWJpZ3VvdXMgbWV0aG9kIGNhbGw6IGJvdGggJ0QuZm9vKEludGVnZXIpJyBhbmQgJ0MuZm9vKEludGVnZXIpJyBtYXRjaCI+KDEpPC9lcnJvcj47CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmc3L2FtYmlndW91c0lERUE2NzgzNy9wY2svQW1iaWd1b3VzTWV0aG9kQ2FsbC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmc3L2FtYmlndW91c0lERUE2NzgzNy9wY2svQW1iaWd1b3VzTWV0aG9kQ2FsbC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBmYmM1YmMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZzcvYW1iaWd1b3VzSURFQTY3ODM3L3Bjay9BbWJpZ3VvdXNNZXRob2RDYWxsLmphdmEKQEAgLTAsMCArMSwxOCBAQAorcGFja2FnZSBwY2s7CisKK2ltcG9ydCBzdGF0aWMgcGNrLkQuZm9vOworaW1wb3J0IHN0YXRpYyBwY2suQy5mb287CisKK3B1YmxpYyBjbGFzcyBDIHsKKyAgICAgcHVibGljIHN0YXRpYyA8VD4gdm9pZCBmb28oQ29tcGFyYWJsZTw/IGV4dGVuZHMgQ29tcGFyYWJsZTxUPj4geCl7fQorfQorCitjbGFzcyBEIHsKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgZm9vKENvbXBhcmFibGU8PyBleHRlbmRzIE51bWJlcj4geCl7fQorfQorCitjbGFzcyBCeworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBiYXIoKXsKKyAgICAgICAgZm9vPGVycm9yIGRlc2NyPSJBbWJpZ3VvdXMgbWV0aG9kIGNhbGw6IGJvdGggJ0QuZm9vKENvbXBhcmFibGU8PyBleHRlbmRzIE51bWJlcj4pJyBhbmQgJ0MuZm9vKENvbXBhcmFibGU8PyBleHRlbmRzIENvbXBhcmFibGU8SW50ZWdlcj4+KScgbWF0Y2giPigxKTwvZXJyb3I+OworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nNy9hbWJpZ3VvdXNJREVBNzgwMjcvcGNrL0FtYmlndW91c01ldGhvZENhbGwuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nNy9hbWJpZ3VvdXNJREVBNzgwMjcvcGNrL0FtYmlndW91c01ldGhvZENhbGwuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMDAxNmEyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmc3L2FtYmlndW91c0lERUE3ODAyNy9wY2svQW1iaWd1b3VzTWV0aG9kQ2FsbC5qYXZhCkBAIC0wLDAgKzEsMTcgQEAKK3BhY2thZ2UgcGNrOworY2xhc3MgVGVzdCB7CisgICB2b2lkIHRlc3QoKSB7CisgICAgICAgQi5tZXRob2QobmV3IEFyZ3VtZW50QigpKTsKKyAgIH0KK30KKworY2xhc3MgQSB7CisgICBzdGF0aWMgdm9pZCBtZXRob2QoQXJndW1lbnRBIGEpIHsgfQorfQorCitjbGFzcyBCIGV4dGVuZHMgQSB7CisgICBzdGF0aWMgdm9pZCBtZXRob2QoQXJndW1lbnRCIGIpIHsgfQorfQorCitjbGFzcyBBcmd1bWVudEE8VD4ge30KK2NsYXNzIEFyZ3VtZW50QiBleHRlbmRzIEFyZ3VtZW50QTxPYmplY3Q+IHt9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmc3L2FtYmlndW91c0lERUE4NzY3Mi9wY2svQW1iaWd1b3VzTWV0aG9kQ2FsbC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmc3L2FtYmlndW91c0lERUE4NzY3Mi9wY2svQW1iaWd1b3VzTWV0aG9kQ2FsbC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgyYmJmMDAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZzcvYW1iaWd1b3VzSURFQTg3NjcyL3Bjay9BbWJpZ3VvdXNNZXRob2RDYWxsLmphdmEKQEAgLTAsMCArMSwyMyBAQAorcGFja2FnZSBwY2s7CitjbGFzcyBCYXNlTWF0Y2hlcjxUPiB7Cit9CisKK2NsYXNzIE15TWF0Y2hlciBleHRlbmRzIEJhc2VNYXRjaGVyPFN0cmluZz4geworfQorCitjbGFzcyBFeHBlY3RhdGlvbnMgeworICAgIHB1YmxpYyA8VD4gVCB3aXRoKFQgdCkgeworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIlQiKTsKKyAgICAgICAgcmV0dXJuIG51bGw7CisgICAgfQorCisgICAgcHVibGljIDxUPiBUIHdpdGgoQmFzZU1hdGNoZXI8VD4gbSkgeworICAgICAgICByZXR1cm4gbnVsbDsKKyAgICB9CisKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CisgICAgICAgIE15TWF0Y2hlciB0ID0gbmV3IE15TWF0Y2hlcigpOworICAgICAgICBTdHJpbmcgdyA9IG5ldyBFeHBlY3RhdGlvbnMoKS53aXRoKCB0KTsKKyAgICB9Cit9CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nNy9hbWJpZ3VvdXNJbmZlcmVuY2VPcmRlci9wY2svQW1iaWd1b3VzTWV0aG9kQ2FsbC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmc3L2FtYmlndW91c0luZmVyZW5jZU9yZGVyL3Bjay9BbWJpZ3VvdXNNZXRob2RDYWxsLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmMyZWJkOQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nNy9hbWJpZ3VvdXNJbmZlcmVuY2VPcmRlci9wY2svQW1iaWd1b3VzTWV0aG9kQ2FsbC5qYXZhCkBAIC0wLDAgKzEsMzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwMC0yMDEyIEpldEJyYWlucyBzLnIuby4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIHBjazsKKworY2xhc3MgS2V5PEs+e30KKworcHVibGljIGNsYXNzIEMgeworICAgICBwdWJsaWMgPFQ+IHZvaWQgcHV0Q29weWFibGVVc2VyRGF0YShLZXk8VD4ga2V5LCBUIHZhbHVlKSB7CisgICAgIH0KK30KKworaW50ZXJmYWNlIEQgeworICA8VD4gdm9pZCBwdXRDb3B5YWJsZVVzZXJEYXRhKEtleTxUPiBrZXksIFQgdmFsdWUpOworfQorCitjbGFzcyBCIGV4dGVuZHMgQyBpbXBsZW1lbnRzIEQge30KKworY2xhc3MgQSB7CisgIHByaXZhdGUgc3RhdGljIGZpbmFsIEtleTxJbnRlZ2VyPiBJTkRFTlRfSU5GTyA9IG5ldyBLZXk8SW50ZWdlcj4oKTsKKyAgCisgIHB1YmxpYyBzdGF0aWMgdm9pZCBmb28oQiBiLCBpbnQgb2xkSW5kZW50YXRpb24pIHsKKyAgICBiLnB1dENvcHlhYmxlVXNlckRhdGEoSU5ERU5UX0lORk8sIG9sZEluZGVudGF0aW9uID49IDAgPyBvbGRJbmRlbnRhdGlvbiA6IG51bGwpOworICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZzcvYW1iaWd1b3VzSW5oZXJpdGFuY2UvcGNrL0FtYmlndW91c01ldGhvZENhbGwuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nNy9hbWJpZ3VvdXNJbmhlcml0YW5jZS9wY2svQW1iaWd1b3VzTWV0aG9kQ2FsbC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU4MGEzMGEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZzcvYW1iaWd1b3VzSW5oZXJpdGFuY2UvcGNrL0FtYmlndW91c01ldGhvZENhbGwuamF2YQpAQCAtMCwwICsxLDE2IEBACitwYWNrYWdlIHBjazsKKworaW50ZXJmYWNlIEE8VD4KK3sKKyAgICBUIGZvbygpOworfQorCitpbnRlcmZhY2UgQjxUPiBleHRlbmRzIEE8VFtdPiB7IH0KKworY2xhc3MgQzxUIGV4dGVuZHMgQTxPYmplY3RbXT4gJiBCPD8+PgoreworICAgIHZvaWQgZm9vKFQgeCkKKyAgICB7CisgICAgICAgIE9iamVjdFtdIGZvbyA9IHguZm9vKCk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmc3L2FtYmlndW91c0luaGVyaXRhbmNlMS9wY2svQW1iaWd1b3VzTWV0aG9kQ2FsbC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmc3L2FtYmlndW91c0luaGVyaXRhbmNlMS9wY2svQW1iaWd1b3VzTWV0aG9kQ2FsbC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY2ZDkzOWYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZzcvYW1iaWd1b3VzSW5oZXJpdGFuY2UxL3Bjay9BbWJpZ3VvdXNNZXRob2RDYWxsLmphdmEKQEAgLTAsMCArMSwzMSBAQAorLyoKKyAqIENvcHlyaWdodCAyMDAwLTIwMTIgSmV0QnJhaW5zIHMuci5vLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2UgcGNrOworCitpbnRlcmZhY2UgQTxUPiAKK3sKKyAgICBUIGZvbygpOworfQorCitpbnRlcmZhY2UgQjxUIGV4dGVuZHMgQ2xvbmVhYmxlPiBleHRlbmRzIEE8VD4geyB9CisKK2NsYXNzIEM8VCBleHRlbmRzIEE8Pz4gJiBCPD8+PgoreworICAgIHZvaWQgYmFyKFQgeCkKKyAgICB7CisgICAgICAgIHguZm9vKCk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nNy9hbWJpZ3VvdXNNdWx0aUludEluaGVyaXRhbmNlL3Bjay9BbWJpZ3VvdXNNZXRob2RDYWxsLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZzcvYW1iaWd1b3VzTXVsdGlJbnRJbmhlcml0YW5jZS9wY2svQW1iaWd1b3VzTWV0aG9kQ2FsbC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlmNGZmM2EKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZzcvYW1iaWd1b3VzTXVsdGlJbnRJbmhlcml0YW5jZS9wY2svQW1iaWd1b3VzTWV0aG9kQ2FsbC5qYXZhCkBAIC0wLDAgKzEsMjggQEAKK3BhY2thZ2UgcGNrOworCitpbnRlcmZhY2UgSUE8VD4geworICAgIFQgYSgpOworfQorCitpbnRlcmZhY2UgSUIgeworICAgIFN0cmluZyBhKCk7Cit9CisKK2Fic3RyYWN0IGNsYXNzIEMgaW1wbGVtZW50cyBJQTxTdHJpbmc+LCBJQiB7CisKKyAgICB7CisgICAgICAgIGEoKTsKKyAgICB9Cit9CisKKworaW50ZXJmYWNlIElBTyB7CisgICAgT2JqZWN0IGEoKTsKK30KKworYWJzdHJhY3QgY2xhc3MgQ08gaW1wbGVtZW50cyBJQU8sIElCIHsKKworICAgIHsKKyAgICAgICAgYSgpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZzcvYW1iaWd1b3VzTXVsdGlwbGVUeXBlUGFyYW1FeHRlbmRzL3Bjay9BbWJpZ3VvdXNNZXRob2RDYWxsLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZzcvYW1iaWd1b3VzTXVsdGlwbGVUeXBlUGFyYW1FeHRlbmRzL3Bjay9BbWJpZ3VvdXNNZXRob2RDYWxsLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjIzNTc5ZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nNy9hbWJpZ3VvdXNNdWx0aXBsZVR5cGVQYXJhbUV4dGVuZHMvcGNrL0FtYmlndW91c01ldGhvZENhbGwuamF2YQpAQCAtMCwwICsxLDQzIEBACisvKgorICogQ29weXJpZ2h0IDIwMDAtMjAxMiBKZXRCcmFpbnMgcy5yLm8uCisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcGFja2FnZSBwY2s7CisKK2ludGVyZmFjZSBJQTxUPiB7CisgICAgVCBhKCk7Cit9CisKK2ludGVyZmFjZSBJQiB7CisgICAgU3RyaW5nIGEoKTsKK30KKworYWJzdHJhY3QgY2xhc3MgQyBpbXBsZW1lbnRzIElBPFN0cmluZz4sIElCIHsKKworICAgIHsKKyAgICAgICAgYSgpOworICAgIH0KK30KKworCitpbnRlcmZhY2UgSUFPIHsKKyAgICBPYmplY3QgYSgpOworfQorCithYnN0cmFjdCBjbGFzcyBDTyBpbXBsZW1lbnRzIElBTywgSUIgeworCisgICAgeworICAgICAgICBhKCk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nNy9hbWJpZ3VvdXNNdWx0aXBsZVR5cGVQYXJhbUV4dGVuZHMxL3Bjay9BbWJpZ3VvdXNNZXRob2RDYWxsLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZzcvYW1iaWd1b3VzTXVsdGlwbGVUeXBlUGFyYW1FeHRlbmRzMS9wY2svQW1iaWd1b3VzTWV0aG9kQ2FsbC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhjZmJjN2QKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZzcvYW1iaWd1b3VzTXVsdGlwbGVUeXBlUGFyYW1FeHRlbmRzMS9wY2svQW1iaWd1b3VzTWV0aG9kQ2FsbC5qYXZhCkBAIC0wLDAgKzEsMTUgQEAKK3BhY2thZ2UgcGNrOworCitjbGFzcyBBPFQ+IHt9CisKK2ludGVyZmFjZSBJQXsKKyAgICB2b2lkIGZvbyhBPD8+IHgpOworfQoraW50ZXJmYWNlIElCeworICAgIDxUPiB2b2lkIGZvbyhBPFQ+IHgpOworfQorY2xhc3MgQyB7CisgICAgPDxlcnJvciBkZXNjcj0iJ2ZvbyhBPFQ+KScgaW4gJ3Bjay5JQicgY2xhc2hlcyB3aXRoICdmb28oQTw/PiknIGluICdwY2suSUEnOyBib3RoIG1ldGhvZHMgaGF2ZSBzYW1lIGVyYXN1cmUsIHlldCBuZWl0aGVyIG92ZXJyaWRlcyB0aGUgb3RoZXIiPjwvZXJyb3I+VCBleHRlbmRzIElBICYgSUI+IHZvaWQgYmFyKFQgeCwgQTxTdHJpbmc+IHkpeworICAgICAgICB4LmZvbzxlcnJvciBkZXNjcj0iQW1iaWd1b3VzIG1ldGhvZCBjYWxsOiBib3RoICdJQS5mb28oQTw/PiknIGFuZCAnSUIuZm9vKEE8U3RyaW5nPiknIG1hdGNoIj4oeSk8L2Vycm9yPjsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmc3L2FtYmlndW91c011bHRpcGxlVHlwZVBhcmFtRXh0ZW5kczIvcGNrL0FtYmlndW91c01ldGhvZENhbGwuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nNy9hbWJpZ3VvdXNNdWx0aXBsZVR5cGVQYXJhbUV4dGVuZHMyL3Bjay9BbWJpZ3VvdXNNZXRob2RDYWxsLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzhjM2JhMQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nNy9hbWJpZ3VvdXNNdWx0aXBsZVR5cGVQYXJhbUV4dGVuZHMyL3Bjay9BbWJpZ3VvdXNNZXRob2RDYWxsLmphdmEKQEAgLTAsMCArMSwxNSBAQAorcGFja2FnZSBwY2s7CisKK2NsYXNzIEE8VD4ge30KKworaW50ZXJmYWNlIElBeworICAgIDxUPiB2b2lkIGZvbyhBPEE8VD4+IHgpOworfQoraW50ZXJmYWNlIElCeworICAgIDxUPiB2b2lkIGZvbyhBPD8gc3VwZXIgQTxUPj4geCk7Cit9CitjbGFzcyBDIHsKKyAgICA8PGVycm9yIGRlc2NyPSInZm9vKEE8QTxUPj4pJyBpbiAncGNrLklBJyBjbGFzaGVzIHdpdGggJ2ZvbyhBPD8gc3VwZXIgQTxUPj4pJyBpbiAncGNrLklCJzsgYm90aCBtZXRob2RzIGhhdmUgc2FtZSBlcmFzdXJlLCB5ZXQgbmVpdGhlciBvdmVycmlkZXMgdGhlIG90aGVyIj48L2Vycm9yPlQgZXh0ZW5kcyBJQiAmIElBPiB2b2lkIGJhcihUIHgsIEE8QTxTdHJpbmc+PiB5KXsKKyAgICAgICAgeC5mb28oeSk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nNy9hbWJpZ3VvdXNNdWx0aXBsZVR5cGVQYXJhbUV4dGVuZHMzL3Bjay9BbWJpZ3VvdXNNZXRob2RDYWxsLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZzcvYW1iaWd1b3VzTXVsdGlwbGVUeXBlUGFyYW1FeHRlbmRzMy9wY2svQW1iaWd1b3VzTWV0aG9kQ2FsbC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ5YjcyOWIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZzcvYW1iaWd1b3VzTXVsdGlwbGVUeXBlUGFyYW1FeHRlbmRzMy9wY2svQW1iaWd1b3VzTWV0aG9kQ2FsbC5qYXZhCkBAIC0wLDAgKzEsMTEgQEAKK3BhY2thZ2UgcGNrOworCitjbGFzcyBCPEs+IHt9CitjbGFzcyBBPEs+IGV4dGVuZHMgQjxLPiB7CisgICAgdm9pZCBmb28oQTxBPFN0cmluZz4+IGIpeworICAgICAgICBiYXIoYik7CisgICAgfQorCisgICAgPFQ+IHZvaWQgYmFyKEI8PyBleHRlbmRzIEE8Pz4+IGEpe30KKyAgICA8VD4gdm9pZCBiYXIoQTw/IGV4dGVuZHMgQTxUPj4gYSl7fQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nNy9hbWJpZ3VvdXNUeXBlUGFyYW1FeHRlbmRzL3Bjay9BbWJpZ3VvdXNNZXRob2RDYWxsLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZzcvYW1iaWd1b3VzVHlwZVBhcmFtRXh0ZW5kcy9wY2svQW1iaWd1b3VzTWV0aG9kQ2FsbC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg2ODk2OTMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZzcvYW1iaWd1b3VzVHlwZVBhcmFtRXh0ZW5kcy9wY2svQW1iaWd1b3VzTWV0aG9kQ2FsbC5qYXZhCkBAIC0wLDAgKzEsMjEgQEAKK3BhY2thZ2UgcGNrOworCitpbXBvcnQgamF2YS51dGlsLkxpc3Q7CisKK2ltcG9ydCBzdGF0aWMgcGNrLkMuZm9vOworaW1wb3J0IHN0YXRpYyBwY2suRC5mb287CisKK2NsYXNzIEMgeworICAgIHN0YXRpYyA8VD4gdm9pZCBmb28oTGlzdDxUPiB4KSB7IH0KK30KKworY2xhc3MgRCB7CisgICAgc3RhdGljIDxUIGV4dGVuZHMgTGlzdDw/Pj4gU3RyaW5nIGZvbyhMaXN0PFQ+IHgpIHsgcmV0dXJuIG51bGw7IH0KK30KKworcHVibGljIGNsYXNzIE1haW4geworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpeworICAgICAgICBMaXN0PExpc3Q8U3RyaW5nPj4geCA9IG51bGw7CisgICAgICAgIGZvbyh4KS50b0NoYXJBcnJheSgpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nNy9hbWJpZ3VvdXNUeXBlUGFyYW1ObWIvcGNrL0FtYmlndW91c01ldGhvZENhbGwuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nNy9hbWJpZ3VvdXNUeXBlUGFyYW1ObWIvcGNrL0FtYmlndW91c01ldGhvZENhbGwuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYjI5MWFkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmc3L2FtYmlndW91c1R5cGVQYXJhbU5tYi9wY2svQW1iaWd1b3VzTWV0aG9kQ2FsbC5qYXZhCkBAIC0wLDAgKzEsMTYgQEAKK3BhY2thZ2UgcGNrOworaW1wb3J0IHN0YXRpYyBwY2suQy5mb287CitpbXBvcnQgc3RhdGljIHBjay5ELmZvbzsKKworcHVibGljIGNsYXNzIEMgeworICAgICBwdWJsaWMgc3RhdGljIHZvaWQgZm9vKCl7fQorfQorY2xhc3MgRCB7CisgICAgIHB1YmxpYyBzdGF0aWMgPFQ+IHZvaWQgZm9vKCl7fQorfQorCitjbGFzcyBCIHsKKyAgICB7CisgICAgICAgIGZvbzxlcnJvciBkZXNjcj0iQW1iaWd1b3VzIG1ldGhvZCBjYWxsOiBib3RoICdDLmZvbygpJyBhbmQgJ0QuZm9vKCknIG1hdGNoIj4oKTwvZXJyb3I+OworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZzcvYW1iaWd1b3VzVHlwZVBhcmFtTm1iMS9wY2svQW1iaWd1b3VzTWV0aG9kQ2FsbC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmc3L2FtYmlndW91c1R5cGVQYXJhbU5tYjEvcGNrL0FtYmlndW91c01ldGhvZENhbGwuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMDMwZGQzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmc3L2FtYmlndW91c1R5cGVQYXJhbU5tYjEvcGNrL0FtYmlndW91c01ldGhvZENhbGwuamF2YQpAQCAtMCwwICsxLDE3IEBACitwYWNrYWdlIHBjazsKK2ltcG9ydCBzdGF0aWMgcGNrLkQuZm9vOworaW1wb3J0IHN0YXRpYyBwY2suQy5mb287CisKK3B1YmxpYyBjbGFzcyBDIHsKKyAgICAgcHVibGljIHN0YXRpYyA8VD4gdm9pZCBmb28oQ29tcGFyYWJsZTxUPiB4KXt9Cit9CisKK2NsYXNzIEQgeworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBmb28oQ29tcGFyYWJsZTw/PiB4KXt9Cit9CisKK2NsYXNzIEJ7CisgICAgcHVibGljIHN0YXRpYyB2b2lkIGJhcihDb21wYXJhYmxlPD8+IHgpeworICAgICAgICBmb288ZXJyb3IgZGVzY3I9IkFtYmlndW91cyBtZXRob2QgY2FsbDogYm90aCAnRC5mb28oQ29tcGFyYWJsZTw/PiknIGFuZCAnQy5mb28oQ29tcGFyYWJsZTw/PiknIG1hdGNoIj4oeCk8L2Vycm9yPjsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmc3L2FtYmlndW91c1ZhcmFyZ3MvcGNrL0FtYmlndW91c01ldGhvZENhbGwuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nNy9hbWJpZ3VvdXNWYXJhcmdzL3Bjay9BbWJpZ3VvdXNNZXRob2RDYWxsLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDFiMTIwMgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nNy9hbWJpZ3VvdXNWYXJhcmdzL3Bjay9BbWJpZ3VvdXNNZXRob2RDYWxsLmphdmEKQEAgLTAsMCArMSwzMiBAQAorLyoKKyAqIENvcHlyaWdodCAyMDAwLTIwMTIgSmV0QnJhaW5zIHMuci5vLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2UgcGNrOworYWJzdHJhY3QgY2xhc3MgQSB7CisgICAgYWJzdHJhY3Qgdm9pZCBmb28oT2JqZWN0Li4uIHgpOworICAgIGFic3RyYWN0IHZvaWQgZm9vKGludC4uLiB4KTsKKworICAgIHsKKyAgICAgICAgZm9vPGVycm9yIGRlc2NyPSJBbWJpZ3VvdXMgbWV0aG9kIGNhbGw6IGJvdGggJ0EuZm9vKE9iamVjdC4uLiknIGFuZCAnQS5mb28oaW50Li4uKScgbWF0Y2giPigxKTwvZXJyb3I+OworICAgIH0KK30KK2Fic3RyYWN0IGNsYXNzIEExIHsKKyAgICBhYnN0cmFjdCB2b2lkIGZvbyhkb3VibGUgLi4uIHgpOworICAgIGFic3RyYWN0IHZvaWQgZm9vKGludC4uLiB4KTsKKworICAgIHsKKyAgICAgICAgZm9vKDEpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nNy9hbWJpZ3VvdXNWYXJhcmdzMS9wY2svQW1iaWd1b3VzTWV0aG9kQ2FsbC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmc3L2FtYmlndW91c1ZhcmFyZ3MxL3Bjay9BbWJpZ3VvdXNNZXRob2RDYWxsLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjEyMjk4ZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nNy9hbWJpZ3VvdXNWYXJhcmdzMS9wY2svQW1iaWd1b3VzTWV0aG9kQ2FsbC5qYXZhCkBAIC0wLDAgKzEsOSBAQAorcGFja2FnZSBwY2s7CisKK2Fic3RyYWN0IGNsYXNzIEEgeworICAgIGFic3RyYWN0IDxUPiB2b2lkIGZvbyhULi4uIHkpOworICAgIGFic3RyYWN0IDxUPiB2b2lkIGZvbyhUW10uLi4geSk7CisgICAgdm9pZCBiYXIoKXsKKyAgICAgICAgZm9vKCk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nNy9zdGF0aWNJbXBvcnRDb25mbGljdC9Vc2FnZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmc3L3N0YXRpY0ltcG9ydENvbmZsaWN0L1VzYWdlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGNiYzhjYwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nNy9zdGF0aWNJbXBvcnRDb25mbGljdC9Vc2FnZS5qYXZhCkBAIC0wLDAgKzEsMjkgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwMC0yMDExIEpldEJyYWlucyBzLnIuby4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitpbXBvcnQgeC5CYXNlMTsKK2ltcG9ydCBzdGF0aWMgeC5CYXNlMi5GOworaW1wb3J0IHN0YXRpYyB4LkJhc2UxLm07CitpbXBvcnQgc3RhdGljIHguQmFzZTIubTsKK2ltcG9ydCBzdGF0aWMgPGVycm9yIGRlc2NyPSJGaWVsZCAnSUYnIGlzIGFtYmlndW91cyBpbiBhIHNpbmdsZSBzdGF0aWMgaW1wb3J0Ij54LkJhc2UyLklJLklGPC9lcnJvcj47CisKK2NsYXNzIFVzYWdlIHsKKyAgdm9pZCB1c2UoKSB7CisgICAgbShCYXNlMS5GKTsgLy9CYXNlMS5tKGludCkKKyAgICBtKEYpOyAvL0Jhc2UyLm0oZmxvYXQpLCBmbG9hdCBCYXNlMi5GCisgICAgRi5jbGFzcy5nZXROYW1lKCk7IC8vIGNsYXNzIEJhc2UyLkYKKyAgICBtPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBtZXRob2QgJ20oPyknIj4oPGVycm9yIGRlc2NyPSJSZWZlcmVuY2UgdG8gJ0lGJyBpcyBhbWJpZ3VvdXMsIGJvdGggJ0kxLklGJyBhbmQgJ0kyLklGJyBtYXRjaCI+SUY8L2Vycm9yPik8L2Vycm9yPjsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nNy9zdGF0aWNJbXBvcnRDb25mbGljdC9Vc2FnZU1peGVkLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZzcvc3RhdGljSW1wb3J0Q29uZmxpY3QvVXNhZ2VNaXhlZC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjliNWFjZDMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZzcvc3RhdGljSW1wb3J0Q29uZmxpY3QvVXNhZ2VNaXhlZC5qYXZhCkBAIC0wLDAgKzEsMjMgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwMC0yMDExIEpldEJyYWlucyBzLnIuby4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitpbXBvcnQgeC5CYXNlMS5EOworaW1wb3J0IHN0YXRpYyA8ZXJyb3IgZGVzY3I9IidEJyBpcyBhbHJlYWR5IGRlZmluZWQgaW4gYSBzaW5nbGUtdHlwZSBpbXBvcnQiPnguQmFzZTIuRDwvZXJyb3I+OworCitjbGFzcyBVc2FnZU1peGVkIHsKKyAgdm9pZCB1c2UoKSB7CisgICAgPGVycm9yIGRlc2NyPSJSZWZlcmVuY2UgdG8gJ0QnIGlzIGFtYmlndW91cywgYm90aCAneC5CYXNlMS5EJyBhbmQgJ3guQmFzZTIuRCcgbWF0Y2giPkQ8L2Vycm9yPi5jbGFzcy5nZXROYW1lKCk7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZzcvc3RhdGljSW1wb3J0Q29uZmxpY3QvVXNhZ2VPbkRlbWFuZC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmc3L3N0YXRpY0ltcG9ydENvbmZsaWN0L1VzYWdlT25EZW1hbmQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NDEzYzg5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmc3L3N0YXRpY0ltcG9ydENvbmZsaWN0L1VzYWdlT25EZW1hbmQuamF2YQpAQCAtMCwwICsxLDI2IEBACisvKgorICogQ29weXJpZ2h0IDIwMDAtMjAxMSBKZXRCcmFpbnMgcy5yLm8uCisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworaW1wb3J0IHguRTsKK2ltcG9ydCBzdGF0aWMgeC5CYXNlMS4qOworaW1wb3J0IHN0YXRpYyB4LkJhc2UyLio7CisKK2NsYXNzIFVzYWdlT25EZW1hbmQgeworICB2b2lkIHVzZSgpIHsKKyAgICBtKDEpOyAvL0Jhc2UxLm0oaW50KQorICAgIG0oMS4wZik7IC8vQmFzZTIubShmbG9hdCkKKyAgICBFLmNsYXNzLmdldE5hbWUoKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nNy9zdGF0aWNJbXBvcnRDb25mbGljdC94L0Jhc2UxLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZzcvc3RhdGljSW1wb3J0Q29uZmxpY3QveC9CYXNlMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhkYzliYjgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZzcvc3RhdGljSW1wb3J0Q29uZmxpY3QveC9CYXNlMS5qYXZhCkBAIC0wLDAgKzEsMjkgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwMC0yMDExIEpldEJyYWlucyBzLnIuby4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIHg7CisKK3B1YmxpYyBjbGFzcyBCYXNlMSB7CisgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEYgPSAxOworICBwdWJsaWMgc3RhdGljIHZvaWQgbShpbnQgaSkgeyB9CisgIHB1YmxpYyBzdGF0aWMgY2xhc3MgRiB7IH0KKyAgcHVibGljIHN0YXRpYyBjbGFzcyBEIHsgfQorICBwdWJsaWMgaW50ZXJmYWNlIEkxIHsKKyAgICBpbnQgSUYgPSAxOworICB9CisgIHB1YmxpYyBpbnRlcmZhY2UgSTIgeworICAgIGZsb2F0IElGID0gMi4wZjsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nNy9zdGF0aWNJbXBvcnRDb25mbGljdC94L0Jhc2UyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZzcvc3RhdGljSW1wb3J0Q29uZmxpY3QveC9CYXNlMi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMyN2YzMDcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZzcvc3RhdGljSW1wb3J0Q29uZmxpY3QveC9CYXNlMi5qYXZhCkBAIC0wLDAgKzEsMjUgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwMC0yMDExIEpldEJyYWlucyBzLnIuby4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIHg7CisKK3B1YmxpYyBjbGFzcyBCYXNlMiBleHRlbmRzIEJhc2UxIHsKKyAgcHVibGljIHN0YXRpYyBmaW5hbCBmbG9hdCBGID0gMi4wZjsKKyAgcHVibGljIHN0YXRpYyB2b2lkIG0oZmxvYXQgZikgeyB9CisgIHB1YmxpYyBzdGF0aWMgY2xhc3MgRiB7IH0KKyAgcHVibGljIHN0YXRpYyBjbGFzcyBEIHsgfQorICBwdWJsaWMgaW50ZXJmYWNlIElJIGV4dGVuZHMgSTEsIEkyIHsgfQorICBwdWJsaWMgZW51bSBFIHsgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nNy9zdGF0aWNJbXBvcnRDb25mbGljdC94L0UuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nNy9zdGF0aWNJbXBvcnRDb25mbGljdC94L0UuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZDkwMWY4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmc3L3N0YXRpY0ltcG9ydENvbmZsaWN0L3gvRS5qYXZhCkBAIC0wLDAgKzEsMTggQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwMC0yMDExIEpldEJyYWlucyBzLnIuby4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIHg7CisKK3B1YmxpYyBjbGFzcyBFIHsgfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nNy9zdGF0aWNJbXBvcnRzL1AxL0MxLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZzcvc3RhdGljSW1wb3J0cy9QMS9DMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE4YTA1YzUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZzcvc3RhdGljSW1wb3J0cy9QMS9DMS5qYXZhCkBAIC0wLDAgKzEsMjAgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwMC0yMDExIEpldEJyYWlucyBzLnIuby4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIFAxOworCitwdWJsaWMgY2xhc3MgQzEgeworICAgIHB1YmxpYyBzdGF0aWMgaW50IEZvbzsKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nNy9zdGF0aWNJbXBvcnRzL1AxL0MyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZzcvc3RhdGljSW1wb3J0cy9QMS9DMi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdhZWM0YjUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZzcvc3RhdGljSW1wb3J0cy9QMS9DMi5qYXZhCkBAIC0wLDAgKzEsMjAgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwMC0yMDExIEpldEJyYWlucyBzLnIuby4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIFAxOworCitwdWJsaWMgY2xhc3MgQzIgeworICAgIHB1YmxpYyBzdGF0aWMgaW50IEZvbzsKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nNy9zdGF0aWNJbXBvcnRzL1AxL01ldGhvZFNoYWRvd2luZy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmc3L3N0YXRpY0ltcG9ydHMvUDEvTWV0aG9kU2hhZG93aW5nLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjk0Y2VkYQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYWR2SGlnaGxpZ2h0aW5nNy9zdGF0aWNJbXBvcnRzL1AxL01ldGhvZFNoYWRvd2luZy5qYXZhCkBAIC0wLDAgKzEsMzEgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwMC0yMDExIEpldEJyYWlucyBzLnIuby4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIFAxOworCitpbXBvcnQgc3RhdGljIFAxLk91dHNpZGUuZ2V0T2JqZWN0OworCitjbGFzcyBPdXRzaWRlIHsKKyAgc3RhdGljIE9iamVjdCBnZXRPYmplY3QoT2JqZWN0IGR1bW15KSB7IHJldHVybiAiU3RhdGljIjsgfQorfQorCitjbGFzcyBCYXNlIHsKKyAgT2JqZWN0IGdldE9iamVjdCgpIHsgcmV0dXJuICJJbnN0YW5jZSI7IH0KK30KKworY2xhc3MgRGVyaXZlZCBleHRlbmRzIEJhc2UgeworICBmaW5hbCBzdGF0aWMgT2JqZWN0IG8xID0gPGVycm9yIGRlc2NyPSJOb24tc3RhdGljIG1ldGhvZCAnZ2V0T2JqZWN0KCknIGNhbm5vdCBiZSByZWZlcmVuY2VkIGZyb20gYSBzdGF0aWMgY29udGV4dCI+Z2V0T2JqZWN0PC9lcnJvcj4obnVsbCk7CisgIGZpbmFsIE9iamVjdCBvMiA9IGdldE9iamVjdDxlcnJvciBkZXNjcj0iJ2dldE9iamVjdCgpJyBpbiAnUDEuQmFzZScgY2Fubm90IGJlIGFwcGxpZWQgdG8gJyhudWxsKSciPihudWxsKTwvZXJyb3I+OworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmc3L3N0YXRpY0ltcG9ydHMvc3RhdGljSW1wb3J0cy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hZHZIaWdobGlnaHRpbmc3L3N0YXRpY0ltcG9ydHMvc3RhdGljSW1wb3J0cy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM2MmM3MGMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FkdkhpZ2hsaWdodGluZzcvc3RhdGljSW1wb3J0cy9zdGF0aWNJbXBvcnRzLmphdmEKQEAgLTAsMCArMSwyMyBAQAorLyoKKyAqIENvcHlyaWdodCAyMDAwLTIwMTEgSmV0QnJhaW5zIHMuci5vLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK2ltcG9ydCBzdGF0aWMgUDEuQzEuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ0JhciciPkJhcjwvZXJyb3I+OworaW1wb3J0IHN0YXRpYyBQMS5DMS5Gb287CitpbXBvcnQgc3RhdGljIDxlcnJvciBkZXNjcj0iRmllbGQgJ0ZvbycgaXMgYWxyZWFkeSBkZWZpbmVkIGluIGEgc2luZ2xlIHN0YXRpYyBpbXBvcnQiPlAxLkMyLkZvbzwvZXJyb3I+OworCitpbXBvcnQgc3RhdGljIGphdmEubGFuZy5CeXRlLnZhbHVlT2Y7CitpbXBvcnQgc3RhdGljIGphdmEubGFuZy5JbnRlZ2VyLnZhbHVlT2Y7CisKK2NsYXNzIEMge30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYW1iaWd1b3VzQ2FsbHMvQm94aW5nQW5kU3RhdGljTWV0aG9kcy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hbWJpZ3VvdXNDYWxscy9Cb3hpbmdBbmRTdGF0aWNNZXRob2RzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDg3YmNkMgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYW1iaWd1b3VzQ2FsbHMvQm94aW5nQW5kU3RhdGljTWV0aG9kcy5qYXZhCkBAIC0wLDAgKzEsNDcgQEAKK2ltcG9ydCBqYXZhLnV0aWwuQ29sbGVjdGlvbnM7CitpbXBvcnQgamF2YS51dGlsLkl0ZXJhdG9yOworCitwdWJsaWMgY2xhc3MgQW1iaWd1b3VzVGVzdCBleHRlbmRzIEFic3RyYWN0VGVzdCB7CisgIHB1YmxpYyB2b2lkIHRlc3RGb28oKSB7CisgICAgSXRlcmF0b3I8SW50ZWdlcj4gbGlzdCA9IENvbGxlY3Rpb25zLnNpbmdsZXRvbigxKS5pdGVyYXRvcigpOworICAgIGFzc2VydEVxdWFsczxlcnJvciBkZXNjcj0iQW1iaWd1b3VzIG1ldGhvZCBjYWxsOiBib3RoICdBc3NlcnQuYXNzZXJ0RXF1YWxzKE9iamVjdCwgT2JqZWN0KScgYW5kICdBc3NlcnQuYXNzZXJ0RXF1YWxzKGxvbmcsIGxvbmcpJyBtYXRjaCI+KDEsIGxpc3QubmV4dCgpKTwvZXJyb3I+OworICB9Cit9CisKK2Fic3RyYWN0IGNsYXNzIEFic3RyYWN0VGVzdCBleHRlbmRzIEFzc2VydCB7CisgIHB1YmxpYyBzdGF0aWMgdm9pZCBhc3NlcnRFcXVhbHMoZmxvYXQgZXhwZWN0ZWQsIGZsb2F0IGFjdHVhbCkgeworICAgIEFzc2VydC5hc3NlcnRFcXVhbHMoZXhwZWN0ZWQsIGFjdHVhbCwgMC4wMDAwMSk7CisgIH0KK30KK2NsYXNzIEFzc2VydCAgeworICAgIHByb3RlY3RlZCBBc3NlcnQoKSB7IC8qIGNvbXBpbGVkIGNvZGUgKi8gfQorICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBhc3NlcnRFcXVhbHMoamF2YS5sYW5nLlN0cmluZyBtZXNzYWdlLCBqYXZhLmxhbmcuT2JqZWN0IGV4cGVjdGVkLCBqYXZhLmxhbmcuT2JqZWN0IGFjdHVhbCkgeyAvKiBjb21waWxlZCBjb2RlICovIH0KKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgYXNzZXJ0RXF1YWxzKGphdmEubGFuZy5PYmplY3QgZXhwZWN0ZWQsIGphdmEubGFuZy5PYmplY3QgYWN0dWFsKSB7IC8qIGNvbXBpbGVkIGNvZGUgKi8gfQorICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBhc3NlcnRFcXVhbHMoamF2YS5sYW5nLlN0cmluZyBtZXNzYWdlLCBkb3VibGUgZXhwZWN0ZWQsIGRvdWJsZSBhY3R1YWwsIGRvdWJsZSBkZWx0YSkgeyAvKiBjb21waWxlZCBjb2RlICovIH0KKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgYXNzZXJ0RXF1YWxzKGxvbmcgZXhwZWN0ZWQsIGxvbmcgYWN0dWFsKSB7IC8qIGNvbXBpbGVkIGNvZGUgKi8gfQorICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBhc3NlcnRFcXVhbHMoamF2YS5sYW5nLlN0cmluZyBtZXNzYWdlLCBsb25nIGV4cGVjdGVkLCBsb25nIGFjdHVhbCkgeyAvKiBjb21waWxlZCBjb2RlICovIH0KKyAgICAvKioKKyAgICAgKiBAZGVwcmVjYXRlZAorICAgICAqLworICAgIEBqYXZhLmxhbmcuRGVwcmVjYXRlZAorICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBhc3NlcnRFcXVhbHMoZG91YmxlIGV4cGVjdGVkLCBkb3VibGUgYWN0dWFsKSB7IC8qIGNvbXBpbGVkIGNvZGUgKi8gfQorICAgIAorICAgIC8qKgorICAgICAqIEBkZXByZWNhdGVkCisgICAgICovCisgICAgQGphdmEubGFuZy5EZXByZWNhdGVkCisgICAgcHVibGljIHN0YXRpYyB2b2lkIGFzc2VydEVxdWFscyhqYXZhLmxhbmcuU3RyaW5nIG1lc3NhZ2UsIGRvdWJsZSBleHBlY3RlZCwgZG91YmxlIGFjdHVhbCkgeyAvKiBjb21waWxlZCBjb2RlICovIH0KKyAgICAKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgYXNzZXJ0RXF1YWxzKGRvdWJsZSBleHBlY3RlZCwgZG91YmxlIGFjdHVhbCwgZG91YmxlIGRlbHRhKSB7IC8qIGNvbXBpbGVkIGNvZGUgKi8gfQorICAgIC8qKgorICAgICAqIEBkZXByZWNhdGVkCisgICAgICovCisgICAgQGphdmEubGFuZy5EZXByZWNhdGVkCisgICAgcHVibGljIHN0YXRpYyB2b2lkIGFzc2VydEVxdWFscyhqYXZhLmxhbmcuU3RyaW5nIG1lc3NhZ2UsIGphdmEubGFuZy5PYmplY3RbXSBleHBlY3RlZHMsIGphdmEubGFuZy5PYmplY3RbXSBhY3R1YWxzKSB7IC8qIGNvbXBpbGVkIGNvZGUgKi8gfQorICAgIAorICAgIC8qKgorICAgICAqIEBkZXByZWNhdGVkCisgICAgICovCisgICAgQGphdmEubGFuZy5EZXByZWNhdGVkCisgICAgcHVibGljIHN0YXRpYyB2b2lkIGFzc2VydEVxdWFscyhqYXZhLmxhbmcuT2JqZWN0W10gZXhwZWN0ZWRzLCBqYXZhLmxhbmcuT2JqZWN0W10gYWN0dWFscykgeyAvKiBjb21waWxlZCBjb2RlICovIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FtYmlndW91c0NhbGxzL011bHRpcGxlSW5oZXJpdGFuY2UuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYW1iaWd1b3VzQ2FsbHMvTXVsdGlwbGVJbmhlcml0YW5jZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg1ZTZjMzIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2FtYmlndW91c0NhbGxzL011bHRpcGxlSW5oZXJpdGFuY2UuamF2YQpAQCAtMCwwICsxLDI4IEBACitjbGFzcyBBPFQ+e30KKworICAgIGludGVyZmFjZSBJPFEgZXh0ZW5kcyBJPFE+PiB7CisgICAgICAgIFEgZnJvbShBPD8+Li4uIHBhdGhzKTsKKyAgICB9CisKKyAgICBpbnRlcmZhY2UgSUkgZXh0ZW5kcyBJPElJPiB7fQorICAgIGNsYXNzIEM8USBleHRlbmRzIEM8UT4+IHsKKyAgICAgICAgcHVibGljIFEgZnJvbShBPD8+Li4uIGFyZ3MpIHtyZXR1cm4gbnVsbDt9CisgICAgfQorICAgIGNsYXNzIEFDPFEgZXh0ZW5kcyBBQzxRPj4gIGV4dGVuZHMgQzxRPiB7fQorICAgIGNsYXNzIENDIGV4dGVuZHMgQUM8Q0M+IGltcGxlbWVudHMgSUkgeworICAgICAgdm9pZCBiYXIoKSB7CisgICAgICAgIGZyb20obnVsbCk7CisgICAgICB9CisgICAgICAKKyAgICAgIHN0YXRpYyB2b2lkIGJhclN0YXRpYygpIHsKKyAgICAgICAgPGVycm9yIGRlc2NyPSJOb24tc3RhdGljIG1ldGhvZCAnZnJvbShBPD8+Li4uKScgY2Fubm90IGJlIHJlZmVyZW5jZWQgZnJvbSBhIHN0YXRpYyBjb250ZXh0Ij5mcm9tPC9lcnJvcj4obnVsbCk7CisgICAgICB9CisgICAgfQorCitjbGFzcyBUZXN0IHsKKyAKKyAgICB2b2lkIGZvbyhDQyBhKXsKKyAgICAgICAgYS5mcm9tKG51bGwpOworICAgIH0KKworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYW5ub3RhdGlvbnMvY2Fubm90RmluZE1ldGhvZC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hbm5vdGF0aW9ucy9jYW5ub3RGaW5kTWV0aG9kLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTc3MzZlNgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYW5ub3RhdGlvbnMvY2Fubm90RmluZE1ldGhvZC5qYXZhCkBAIC0wLDAgKzEsNiBAQAorQGludGVyZmFjZSBBbm4geworICAgIGludCB1ICgpIGRlZmF1bHQgMDsKK30KKworQEFubig8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIG1ldGhvZCAndiciPnY8L2Vycm9yPj0wKSBjbGFzcyBEIHsKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYW5ub3RhdGlvbnMvZHVwbGljYXRlQW5ub3RhdGlvbi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hbm5vdGF0aW9ucy9kdXBsaWNhdGVBbm5vdGF0aW9uLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTE1M2RhNwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYW5ub3RhdGlvbnMvZHVwbGljYXRlQW5ub3RhdGlvbi5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKK0BpbnRlcmZhY2UgQW5uIHsKK30KKworQDxlcnJvciBkZXNjcj0iRHVwbGljYXRlIGFubm90YXRpb24iPkFubjwvZXJyb3I+IEA8ZXJyb3IgZGVzY3I9IkR1cGxpY2F0ZSBhbm5vdGF0aW9uIj5Bbm48L2Vycm9yPiBjbGFzcyBEIHsKK30KKworQFN1cHByZXNzV2FybmluZ3Moe30pCitAPGVycm9yIGRlc2NyPSJBbm5vdGF0aW9uIHR5cGUgZXhwZWN0ZWQiPmphdmEubGFuZzwvZXJyb3I+CitjbGFzcyBQc2lEYSB7Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2Fubm90YXRpb25zL2R1cGxpY2F0ZUF0dHJpYnV0ZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hbm5vdGF0aW9ucy9kdXBsaWNhdGVBdHRyaWJ1dGUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZTIxNTQ2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hbm5vdGF0aW9ucy9kdXBsaWNhdGVBdHRyaWJ1dGUuamF2YQpAQCAtMCwwICsxLDUgQEAKK0BpbnRlcmZhY2UgQSB7CisgIGludCB2YWx1ZSgpOworfQorCitAQSh2YWx1ZSA9IDAsIDxlcnJvciBkZXNjcj0iRHVwbGljYXRlIGF0dHJpYnV0ZSAndmFsdWUnIj52YWx1ZSA9IDE8L2Vycm9yPikgY2xhc3MgQyB7fQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYW5ub3RhdGlvbnMvZHVwbGljYXRlVGFyZ2V0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2Fubm90YXRpb25zL2R1cGxpY2F0ZVRhcmdldC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlmYzI5ZjcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2Fubm90YXRpb25zL2R1cGxpY2F0ZVRhcmdldC5qYXZhCkBAIC0wLDAgKzEsNSBAQAoraW1wb3J0IGphdmEubGFuZy5hbm5vdGF0aW9uLlRhcmdldDsKK2ltcG9ydCBqYXZhLmxhbmcuYW5ub3RhdGlvbi5FbGVtZW50VHlwZTsKKworQFRhcmdldCh7RWxlbWVudFR5cGUuQU5OT1RBVElPTl9UWVBFLCBFbGVtZW50VHlwZS5NRVRIT0QsIEVsZW1lbnRUeXBlLlRZUEUsIDxlcnJvciBkZXNjcj0iUmVwZWF0ZWQgYW5ub3RhdGlvbiB0YXJnZXQiPkVsZW1lbnRUeXBlLkFOTk9UQVRJT05fVFlQRTwvZXJyb3I+fSkKK0BpbnRlcmZhY2UgQSB7fQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hbm5vdGF0aW9ucy9pbmFwcGxpY2FibGUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYW5ub3RhdGlvbnMvaW5hcHBsaWNhYmxlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWU4OTIxYwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYW5ub3RhdGlvbnMvaW5hcHBsaWNhYmxlLmphdmEKQEAgLTAsMCArMSw4IEBACitpbXBvcnQgamF2YS5sYW5nLmFubm90YXRpb24uKjsKKworLy9PSworQFRhcmdldCh7RWxlbWVudFR5cGUuVFlQRX0pCitARXhwb3NlIEBpbnRlcmZhY2UgRXhwb3NlIHt9CisKK0BUYXJnZXQoe0VsZW1lbnRUeXBlLkZJRUxEfSkKK0A8ZXJyb3IgZGVzY3I9IidARXhwb3NlMScgbm90IGFwcGxpY2FibGUgdG8gYW5ub3RhdGlvbiB0eXBlIj5FeHBvc2UxPC9lcnJvcj5AaW50ZXJmYWNlIEV4cG9zZTEge30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2Fubm90YXRpb25zL2luY29tcGF0aWJsZVR5cGUxLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2Fubm90YXRpb25zL2luY29tcGF0aWJsZVR5cGUxLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTI1YzAyYQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYW5ub3RhdGlvbnMvaW5jb21wYXRpYmxlVHlwZTEuamF2YQpAQCAtMCwwICsxLDYgQEAKK0BpbnRlcmZhY2UgQW5uIHsKKyAgICBpbnQgdSAoKSBkZWZhdWx0IDA7Cit9CisKK0BBbm4odT08ZXJyb3IgZGVzY3I9IkluY29tcGF0aWJsZSB0eXBlcy4gRm91bmQ6ICdkb3VibGUnLCByZXF1aXJlZDogJ2ludCciPjAuMDwvZXJyb3I+KSBjbGFzcyBEIHsKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYW5ub3RhdGlvbnMvaW5jb21wYXRpYmxlVHlwZTIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYW5ub3RhdGlvbnMvaW5jb21wYXRpYmxlVHlwZTIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40M2I3NTNkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hbm5vdGF0aW9ucy9pbmNvbXBhdGlibGVUeXBlMi5qYXZhCkBAIC0wLDAgKzEsNiBAQAorQGludGVyZmFjZSBBbm4geworICAgIGludFtdIHUgKCkgZGVmYXVsdCAwOworfQorCitAQW5uKHU9MCkgY2xhc3MgRCB7Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2Fubm90YXRpb25zL2luY29tcGF0aWJsZVR5cGUzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2Fubm90YXRpb25zL2luY29tcGF0aWJsZVR5cGUzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGU5NDEyYQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYW5ub3RhdGlvbnMvaW5jb21wYXRpYmxlVHlwZTMuamF2YQpAQCAtMCwwICsxLDYgQEAKK0BpbnRlcmZhY2UgQW5uIHsKKyAgICBzaG9ydFtdIHUgKCkgZGVmYXVsdCAwOworfQorCitAQW5uKHU9ezxlcnJvciBkZXNjcj0iSW5jb21wYXRpYmxlIHR5cGVzLiBGb3VuZDogJ2ludCcsIHJlcXVpcmVkOiAnc2hvcnQnIj4yMjIyMjIyPC9lcnJvcj59KSBjbGFzcyBEIHsKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYW5ub3RhdGlvbnMvaW5jb21wYXRpYmxlVHlwZTQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYW5ub3RhdGlvbnMvaW5jb21wYXRpYmxlVHlwZTQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZDViYjQ4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hbm5vdGF0aW9ucy9pbmNvbXBhdGlibGVUeXBlNC5qYXZhCkBAIC0wLDAgKzEsMTUgQEAKK0BpbnRlcmZhY2UgQW5uIHsKKyAgICBJbm5lcjEgaW5uZXIgKCk7Cit9CisKK0BpbnRlcmZhY2UgSW5uZXIxIHsKKyAgaW50IGkgKCk7Cit9CisKK0BpbnRlcmZhY2UgSW5uZXIyIHsKKyAgaW50IGkgKCk7Cit9CisKKworQEFubihpbm5lcj08ZXJyb3IgZGVzY3I9IkluY29tcGF0aWJsZSB0eXBlcy4gRm91bmQ6ICdJbm5lcjInLCByZXF1aXJlZDogJ0lubmVyMSciPkBJbm5lcjIoaT0wKTwvZXJyb3I+KSBjbGFzcyBEIHsKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYW5ub3RhdGlvbnMvaW5jb21wYXRpYmxlVHlwZTUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYW5ub3RhdGlvbnMvaW5jb21wYXRpYmxlVHlwZTUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMzk2N2M1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hbm5vdGF0aW9ucy9pbmNvbXBhdGlibGVUeXBlNS5qYXZhCkBAIC0wLDAgKzEsMTMgQEAKK0BpbnRlcmZhY2UgQW5uIHsKKyAgICBDbGFzcyB0eXBlKCk7Cit9CisKK2NsYXNzIEMgeworICBwcml2YXRlIHN0YXRpYyBmaW5hbCBDbGFzczxDPiBUSElTX1RZUEUgPSBDLmNsYXNzOworCisgIEBBbm4odHlwZSA9IDxlcnJvciBkZXNjcj0iQXR0cmlidXRlIHZhbHVlIG11c3QgYmUgYSBjbGFzcyBsaXRlcmFsIj5USElTX1RZUEU8L2Vycm9yPikKKyAgdm9pZCBiYWQoKSB7IH0KKworICBAQW5uKHR5cGUgPSBDLmNsYXNzKQorICB2b2lkIGdvb2QoKSB7IH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYW5ub3RhdGlvbnMvaW52YWxpZFBhY2thZ2VBbm5vdGF0aW9uVGFyZ2V0L3BhY2thZ2UtaW5mby5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hbm5vdGF0aW9ucy9pbnZhbGlkUGFja2FnZUFubm90YXRpb25UYXJnZXQvcGFja2FnZS1pbmZvLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTliYTNmNwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYW5ub3RhdGlvbnMvaW52YWxpZFBhY2thZ2VBbm5vdGF0aW9uVGFyZ2V0L3BhY2thZ2UtaW5mby5qYXZhCkBAIC0wLDAgKzEgQEAKK0A8ZXJyb3IgZGVzY3I9IidAU3VwcHJlc3NXYXJuaW5ncycgbm90IGFwcGxpY2FibGUgdG8gcGFja2FnZSI+U3VwcHJlc3NXYXJuaW5nczwvZXJyb3I+KCJhbGwiKSBwYWNrYWdlIGFubm90YXRpb25zLmludmFsaWRQYWNrYWdlQW5ub3RhdGlvblRhcmdldDsKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYW5ub3RhdGlvbnMvaW52YWxpZFR5cGUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYW5ub3RhdGlvbnMvaW52YWxpZFR5cGUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMzkxNWM2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hbm5vdGF0aW9ucy9pbnZhbGlkVHlwZS5qYXZhCkBAIC0wLDAgKzEsOCBAQAorY2xhc3MgQ2xhenoge30KKworQGludGVyZmFjZSBBbm4geworICAgIDxlcnJvciBkZXNjcj0iSW52YWxpZCB0eXBlIGZvciBhbm5vdGF0aW9uIG1lbWJlciI+Q2xheno8L2Vycm9yPiBpICgpOworICAgIDxlcnJvciBkZXNjcj0iQ3ljbGljIGFubm90YXRpb24gZWxlbWVudCB0eXBlIj5Bbm48L2Vycm9yPiBqICgpOworCisgICAgPGVycm9yIGRlc2NyPSJJbnZhbGlkIHR5cGUgZm9yIGFubm90YXRpb24gbWVtYmVyIj52b2lkPC9lcnJvcj4gZigpOyAKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYW5ub3RhdGlvbnMvbWlzc2luZ0F0dHJpYnV0ZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hbm5vdGF0aW9ucy9taXNzaW5nQXR0cmlidXRlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODM4MDc1MAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYW5ub3RhdGlvbnMvbWlzc2luZ0F0dHJpYnV0ZS5qYXZhCkBAIC0wLDAgKzEsNiBAQAorQGludGVyZmFjZSBBbm4geworICAgIGludCBpICgpOworfQorCitAPGVycm9yIGRlc2NyPSInaScgbWlzc2luZyB0aG91Z2ggcmVxdWlyZWQiPkFubjwvZXJyb3I+KCkgY2xhc3MgRCB7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hbm5vdGF0aW9ucy9ub25Db25zdGFudEluaXRpYWxpemVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2Fubm90YXRpb25zL25vbkNvbnN0YW50SW5pdGlhbGl6ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jODk5OGIyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hbm5vdGF0aW9ucy9ub25Db25zdGFudEluaXRpYWxpemVyLmphdmEKQEAgLTAsMCArMSwxOCBAQAorQGludGVyZmFjZSBBbm4geworICAgIGludCBpICgpOworCisgICAgU3RyaW5nW10gaigpOworfQorCitjbGFzcyBEIHsKKyAgICBpbnQgZmllbGQ7CisgICAgQEFubihpPTxlcnJvciBkZXNjcj0iQXR0cmlidXRlIHZhbHVlIG11c3QgYmUgY29uc3RhbnQiPmZpZWxkPC9lcnJvcj4pIHZvaWQgZm9vICgpIHt9CisKKyAgICBAQW5uKGo9ezxlcnJvciBkZXNjcj0iQXR0cmlidXRlIHZhbHVlIG11c3QgYmUgY29uc3RhbnQiPm51bGw8L2Vycm9yPn0pIHZvaWQgYmFyKCkge30KK30KKworQGludGVyZmFjZSBNYW5pc3RhRG91YmxlCit7CisgICAgcHVibGljIGFic3RyYWN0IGRvdWJsZSBkZWZhdWx0VmFsdWUoKSBkZWZhdWx0IERvdWJsZS5OYU47IAorfQorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2Fubm90YXRpb25zL25vdFZhbHVlTmFtZU9taXR0ZWQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYW5ub3RhdGlvbnMvbm90VmFsdWVOYW1lT21pdHRlZC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJjMDRhNmYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2Fubm90YXRpb25zL25vdFZhbHVlTmFtZU9taXR0ZWQuamF2YQpAQCAtMCwwICsxLDE0IEBACitAaW50ZXJmYWNlIEFubiB7CisgICAgaW50IHUgKCkgZGVmYXVsdCAwOworfQorCitAQW5uKDxlcnJvciBkZXNjcj0iQ2Fubm90IGZpbmQgbWV0aG9kICd2YWx1ZSciPjA8L2Vycm9yPikgY2xhc3MgRCB7Cit9CisKK0BJbigiIjxlcnJvciBkZXNjcj0iQW5ub3RhdGlvbiBhdHRyaWJ1dGUgbXVzdCBiZSBvZiB0aGUgZm9ybSAnbmFtZT12YWx1ZSciPiw8L2Vycm9yPiBjcmVhdGUgPSAiIikgCitjbGFzcyBaWlogeworfQorQGludGVyZmFjZSBJbiB7CisgICAgU3RyaW5nIHZhbHVlKCk7CisgICAgU3RyaW5nIGNyZWF0ZSgpOworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hbm5vdGF0aW9ucy9wYWNrYWdlQW5ub3RhdGlvbk5vdEluUGFja2FnZUluZm8vbm90UGFja2FnZUluZm8uamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYW5ub3RhdGlvbnMvcGFja2FnZUFubm90YXRpb25Ob3RJblBhY2thZ2VJbmZvL25vdFBhY2thZ2VJbmZvLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDNmOWE4NwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYW5ub3RhdGlvbnMvcGFja2FnZUFubm90YXRpb25Ob3RJblBhY2thZ2VJbmZvL25vdFBhY2thZ2VJbmZvLmphdmEKQEAgLTAsMCArMSBAQAorPGVycm9yIGRlc2NyPSJQYWNrYWdlIGFubm90YXRpb25zIHNob3VsZCBiZSBpbiBmaWxlIHBhY2thZ2UtaW5mby5qYXZhIj5ARGVwcmVjYXRlZDwvZXJyb3I+IHBhY2thZ2UgYW5ub3RhdGlvbnMucGFja2FnZUFubm90YXRpb25Ob3RJblBhY2thZ2VJbmZvOyAKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2Fubm90YXRpb25zL3R5cGVBbm5vdGF0aW9ucy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hbm5vdGF0aW9ucy90eXBlQW5ub3RhdGlvbnMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZjBmNmY2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9hbm5vdGF0aW9ucy90eXBlQW5ub3RhdGlvbnMuamF2YQpAQCAtMCwwICsxLDMzIEBACitpbXBvcnQgamF2YS5sYW5nLmFubm90YXRpb24uVGFyZ2V0OworaW1wb3J0IGphdmEubGFuZy5hbm5vdGF0aW9uLkVsZW1lbnRUeXBlOworaW1wb3J0IGphdmEudXRpbC4qOworCitAVGFyZ2V0KHtFbGVtZW50VHlwZS5UWVBFX1VTRS8qLCBFbGVtZW50VHlwZS5UWVBFKi99KQorQGludGVyZmFjZSBUQSB7Cit9CisKK0A8ZXJyb3IgZGVzY3I9IidAVEEnIG5vdCBhcHBsaWNhYmxlIHRvIHR5cGUiPlRBPC9lcnJvcj4KK2NsYXNzIFgwPEA8ZXJyb3IgZGVzY3I9IidAVEEnIG5vdCBhcHBsaWNhYmxlIHRvIHR5cGUgcGFyYW1ldGVyIj5UQTwvZXJyb3I+IFQ+IHsKKyAgICBAVEEKKyAgICBwcm90ZWN0ZWQKKyAgICB2b2lkIGYoKSBAPGVycm9yIGRlc2NyPSInQFRBJyBub3QgYXBwbGljYWJsZSB0byBwYXJhbWV0ZXIiPlRBPC9lcnJvcj4gIHsKKyAgICAgICAgQFRBIFN0cmluZyBwPW5ldyBAVEEgU3RyaW5nKCk7CisKKyAgICAgICAgaWYgKHRoaXMgaW5zdGFuY2VvZiBAVEEgT2JqZWN0KSByZXR1cm47CisgICAgICAgIFN0cmluZyBvID0gcDsKKyAgICAgICAgTGlzdDxAVEEgU3RyaW5nPiBsOworICAgICAgICBDbGFzcyBjID0gQFRBIFN0cmluZy5jbGFzczsKKyAgICB9CisKKyAgICBAVEEgaW50IEBUQVtdIG1ldGhvZGYoKSB0aHJvd3MgQFRBIEV4Y2VwdGlvbiB7CisgICAgICAgIGJvb2xlYW4gYSA9IHRoaXMgaW5zdGFuY2VvZiBAVEEgWDA7CisgICAgICAgIFgwPEA8ZXJyb3IgZGVzY3I9IkR1cGxpY2F0ZSBhbm5vdGF0aW9uIj5UQTwvZXJyb3I+IEA8ZXJyb3IgZGVzY3I9IkR1cGxpY2F0ZSBhbm5vdGF0aW9uIj5UQTwvZXJyb3I+IFgwPiBjID0gbmV3IEBUQSBYMDxAVEEgWDA+KCk7CisgICAgICAgIE9iamVjdCBvID0gKEBUQSBPYmplY3QpIGM7CisgICAgICAgIEBUQSBYMC5maWVsZCA9IG51bGw7CisgICAgICAgIHJldHVybiBudWxsOworICAgIH0KKworICAgIEBUQSgpIGludCBAVEFbXSBwOworICAgIHN0YXRpYyBAVEEgT2JqZWN0IGZpZWxkOworICAgIEBUQSBMaXN0PFN0cmluZz4gZGlzYW1iaWd1YXRlQmV0d2VlbkJpbmFyeUV4cHI7Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2Fubm90YXRpb25zL3dyb25nUGxhY2UuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvYW5ub3RhdGlvbnMvd3JvbmdQbGFjZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIxMmQwNzQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2Fubm90YXRpb25zL3dyb25nUGxhY2UuamF2YQpAQCAtMCwwICsxLDMwIEBACitpbXBvcnQgamF2YS51dGlsLkNvbGxlY3Rpb247CisKK0BpbnRlcmZhY2UgQW5ubyB7CisgIEFubm9bXSBuZXN0ZWQoKSBkZWZhdWx0IHt9OworfQorCithYnN0cmFjdCBjbGFzcyBDIHsKKyAgYWJzdHJhY3Qgdm9pZCBmKCk7CisKKyAgdm9pZCB3cm9uZygpIHsKKyAgICA8ZXJyb3IgZGVzY3I9IkFubm90YXRpb25zIGFyZSBub3QgYWxsb3dlZCBoZXJlIj5AQW5ubzwvZXJyb3I+IGYoKTsKKyAgfQorCisgIEBBbm5vKG5lc3RlZCA9IHtAQW5ubywgQEFubm99KQorICB2b2lkIG5vdFdyb25nKCkgeyB9Cit9CisKK2NsYXNzIEIgZXh0ZW5kcyA8ZXJyb3IgZGVzY3I9IkFubm90YXRpb25zIGFyZSBub3QgYWxsb3dlZCBoZXJlIj5ARGVwcmVjYXRlZDwvZXJyb3I+IE9iamVjdCB7IH0KKworZW51bSBFIHsKKyAgQEFubm8gRTEKK30KKworaW50ZXJmYWNlIEkgeworICBAPGVycm9yIGRlc2NyPSJEdXBsaWNhdGUgYW5ub3RhdGlvbiI+QW5ubzwvZXJyb3I+IHB1YmxpYyBAPGVycm9yIGRlc2NyPSJEdXBsaWNhdGUgYW5ub3RhdGlvbiI+QW5ubzwvZXJyb3I+IENvbGxlY3Rpb248PGVycm9yIGRlc2NyPSJBbm5vdGF0aW9ucyBhcmUgbm90IGFsbG93ZWQgaGVyZSI+QEFubm88L2Vycm9yPiBTdHJpbmc+IG1ldGhvZChAPGVycm9yIGRlc2NyPSJEdXBsaWNhdGUgYW5ub3RhdGlvbiI+QW5ubzwvZXJyb3I+IEA8ZXJyb3IgZGVzY3I9IkR1cGxpY2F0ZSBhbm5vdGF0aW9uIj5Bbm5vPC9lcnJvcj4gT2JqZWN0IG8pOworfQorCitAaW50ZXJmYWNlIENhbGxlciB7CisgIEFubm8gYW5ubygpIGRlZmF1bHQgQEFubm87Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9nZW5lcmljc0hpZ2hsaWdodGluZy9Bbm5vdGF0aW9uc0FzUGFydE9mTW9kaWZpZXJMaXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2dlbmVyaWNzSGlnaGxpZ2h0aW5nL0Fubm90YXRpb25zQXNQYXJ0T2ZNb2RpZmllckxpc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZmNhMGMwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9nZW5lcmljc0hpZ2hsaWdodGluZy9Bbm5vdGF0aW9uc0FzUGFydE9mTW9kaWZpZXJMaXN0LmphdmEKQEAgLTAsMCArMSw5IEBACitARGVwcmVjYXRlZCBAU3VwcHJlc3NXYXJuaW5ncygiIikKKzxlcnJvciBkZXNjcj0iQ2xhc3MgJ0ZvbycgbXVzdCBlaXRoZXIgYmUgZGVjbGFyZWQgYWJzdHJhY3Qgb3IgaW1wbGVtZW50IGFic3RyYWN0IG1ldGhvZCAncnVuKCknIGluICdSdW5uYWJsZSciPnB1YmxpYyBjbGFzcyBGb28gaW1wbGVtZW50cyBSdW5uYWJsZTwvZXJyb3I+IHsKKworfQorCitjbGFzcyBGIHsKKyAgQERlcHJlY2F0ZWQgQFN1cHByZXNzV2FybmluZ3MoIiIpIDxlcnJvciBkZXNjcj0iJ2YoKScgaXMgYWxyZWFkeSBkZWZpbmVkIGluICdGJyI+dm9pZCBmKCk8L2Vycm9yPiB7fQorICBARGVwcmVjYXRlZCBAU3VwcHJlc3NXYXJuaW5ncygiIikgPGVycm9yIGRlc2NyPSInZigpJyBpcyBhbHJlYWR5IGRlZmluZWQgaW4gJ0YnIj52b2lkIGYoKTwvZXJyb3I+IHt9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2dlbmVyaWNzSGlnaGxpZ2h0aW5nL0F1dG9ib3hpbmcuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvZ2VuZXJpY3NIaWdobGlnaHRpbmcvQXV0b2JveGluZy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhlY2M4NjQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2dlbmVyaWNzSGlnaGxpZ2h0aW5nL0F1dG9ib3hpbmcuamF2YQpAQCAtMCwwICsxLDY5IEBACitwdWJsaWMgY2xhc3MgQXV0b2JveGluZyB7CisgICAgcHVibGljIGJvb2xlYW4gY29tcGFyZShzaG9ydCBzLCBJbnRlZ2VyIGkpIHsKKyAgICAgICAgIHJldHVybiBpID09IHM7IC8vT0ssIGkgaXMgdW5ib3hlZAorICAgIH0KKworICAgIHB1YmxpYyBib29sZWFuIGNvbXBhcmUoU2hvcnQgcywgSW50ZWdlciBpKSB7CisgICAgICAgICByZXR1cm4gPGVycm9yIGRlc2NyPSJPcGVyYXRvciAnPT0nIGNhbm5vdCBiZSBhcHBsaWVkIHRvICdqYXZhLmxhbmcuSW50ZWdlcicsICdqYXZhLmxhbmcuU2hvcnQnIj5pID09IHM8L2Vycm9yPjsgLy9jb21wYXJpbmcgYXMgcmVmZXJlbmNlcworICAgIH0KKworICAgIHZvaWQgZihJbnRlZ2VyIGkpIHsKKyAgICAgIHN3aXRjaChpKSB7CisgICAgICAgZGVmYXVsdDoKKyAgICAgIH0KKyAgICB9CisKKyAgICB7CisgICAgICBPYmplY3QgZGF0YSA9IDE7CisgICAgICBib29sZWFuIGlzMSA9IDxlcnJvciBkZXNjcj0iT3BlcmF0b3IgJz09JyBjYW5ub3QgYmUgYXBwbGllZCB0byAnamF2YS5sYW5nLk9iamVjdCcsICdpbnQnIj5kYXRhID09IDE8L2Vycm9yPjsKKyAgICB9CisKKyAgICAvL0lERUFERVYtNTU0OTogU2hvcnQgYW5kIGRvdWJsZSBhcmUgY29udmVydGlibGUKKyAgICBwdWJsaWMgc3RhdGljIGRvdWJsZSBmICgpIHsKKyAgICAgIFNob3J0IHMgPSAwOworICAgICAgcmV0dXJuIChkb3VibGUpczsKKyAgICB9CisKKyAgICAvL0lERUFERVYtNTYxMworICAgIGNsYXNzIER1bWJUZXN0IHsKKyAgICAgIHByaXZhdGUgbG9uZyBldmVudElkOworCisgICAgICBwdWJsaWMgaW50IGhhc2hDb2RlKCkgeworICAgICAgICByZXR1cm4gKChMb25nKSBldmVudElkKS5oYXNoQ29kZSgpOworICAgICAgfQorICAgIH0KKworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKKyAgICAgICAgTG9uZyBsID0gMEw7CisgICAgICAgIFNob3J0IHMgPSAwOworCisgICAgICAgIGludCBkID0gPGVycm9yIGRlc2NyPSJJbmNvbnZlcnRpYmxlIHR5cGVzOyBjYW5ub3QgY2FzdCAnamF2YS5sYW5nLkxvbmcnIHRvICdpbnQnIj4oaW50KWw8L2Vycm9yPjsKKyAgICAgICAgZCA9IChpbnQpczsKKworICAgICAgICBzaG9ydCB0ID0gMDsKKyAgICAgICAgSW50ZWdlciBkMSA9IDxlcnJvciBkZXNjcj0iSW5jb252ZXJ0aWJsZSB0eXBlczsgY2Fubm90IGNhc3QgJ3Nob3J0JyB0byAnamF2YS5sYW5nLkludGVnZXInIj4oSW50ZWdlcikgdDwvZXJyb3I+OworICAgICAgICBCeXRlIGIgPSA8ZXJyb3IgZGVzY3I9IkluY29udmVydGlibGUgdHlwZXM7IGNhbm5vdCBjYXN0ICdzaG9ydCcgdG8gJ2phdmEubGFuZy5CeXRlJyI+KEJ5dGUpIHQ8L2Vycm9yPjsKKworICAgIH0KKworICB7CisgICAgeworICAgICAgYm9vbGVhbiBjb25kID0gdHJ1ZTsKKyAgICAgIC8vIHRlc3QgZm9yIEpMUzMgYnVnLCBzZWUgaHR0cDovL2J1Z3Muc3VuLmNvbS9idWdkYXRhYmFzZS92aWV3X2J1Zy5kbz9idWdfaWQ9Njg4ODc3MAorICAgICAgQnl0ZSBCID0gMDsKKyAgICAgIGJ5dGUgYiA9IDA7CisgICAgICBieXRlIHZhbHVlID0gY29uZCA/IEIgOiBiOyAgLy8vLy8vLy8vCisKKyAgICAgIHNob3J0IHMgPSAwOworICAgICAgU2hvcnQgUyA9IDA7CisgICAgICBzaG9ydCBycyA9IGNvbmQgPyBTIDogczsKKworICAgICAgY2hhciBjID0gMDsKKyAgICAgIENoYXJhY3RlciBDID0gMDsKKyAgICAgIGNoYXIgcmMgPSBjb25kID8gQyA6IGM7CisKKyAgICAgIGJvb2xlYW4gYmIgPSBjb25kID8gQm9vbGVhbi5GQUxTRSA6IHRydWU7CisgICAgfQorICAgIAorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9nZW5lcmljc0hpZ2hsaWdodGluZy9BdXRvYm94aW5nQ29uc3RydWN0b3JzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2dlbmVyaWNzSGlnaGxpZ2h0aW5nL0F1dG9ib3hpbmdDb25zdHJ1Y3RvcnMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMmM1MzMyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9nZW5lcmljc0hpZ2hsaWdodGluZy9BdXRvYm94aW5nQ29uc3RydWN0b3JzLmphdmEKQEAgLTAsMCArMSwxMyBAQAorcHVibGljIGNsYXNzIFRlc3QgeworCisgICAgcHVibGljIFRlc3QoT2JqZWN0IGEpIHsKKyAgICB9CisKKyAgICBwdWJsaWMgVGVzdChpbnQgaSkgeworICAgICAgICB0aGlzKG5ldyBJbnRlZ2VyKGkpKTsKKyAgICB9CisKKyAgICBwdWJsaWMgVGVzdChsb25nIGwpIHsKKyAgICAgICAgdGhpcyhuZXcgTG9uZyhsKSk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9nZW5lcmljc0hpZ2hsaWdodGluZy9BdXRvYm94aW5nTWV0aG9kcy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9nZW5lcmljc0hpZ2hsaWdodGluZy9BdXRvYm94aW5nTWV0aG9kcy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQwMjA5OTcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2dlbmVyaWNzSGlnaGxpZ2h0aW5nL0F1dG9ib3hpbmdNZXRob2RzLmphdmEKQEAgLTAsMCArMSw0NCBAQAorcHVibGljIGNsYXNzIEF1dG9ib3hpbmcgeworICAgIHZvaWQgbWV0aG9kKGludCBpKSB7CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiaSA9ICIgKyBpKTsKKyAgICB9CisKKyAgICB2b2lkIG1ldGhvZChJbnRlZ2VyIGludGVnZXIpIHsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJpbnRlZ2VyID0gIiArIGludGVnZXIpOworICAgIH0KKworICAgIHZvaWQgbTEoSW50ZWdlciBpbnRlZ2VyKSB7IH0KKyAgICB2b2lkIG0yKGludCBpKSB7IH0KKworICAgIHsKKyAgICAgICAgbWV0aG9kKDEwKTsKKyAgICAgICAgbWV0aG9kKG5ldyBJbnRlZ2VyKDEwKSk7CisgICAgICAgIG0xKDEwKTsKKyAgICAgICAgbTEobmV3IEludGVnZXIoMTApKTsKKyAgICAgICAgbTIoMTApOworICAgICAgICBtMihuZXcgSW50ZWdlcigxMCkpOworICAgIH0KK30KK3B1YmxpYyBjbGFzcyBBdXRvYm94aW5nMSB7CisgICAgdm9pZCBtZXRob2QoU3RyaW5nIHMsIGludCBpKSB7CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiaSA9ICIgKyBpKTsKKyAgICB9CisKKyAgICB2b2lkIG1ldGhvZChTdHJpbmcgcywgT2JqZWN0IG8pIHsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJpbnRlZ2VyID0gIiArIG8pOworICAgIH0KKworICAgIHsKKyAgICAgICAgbWV0aG9kKCJhYmMiLCBuZXcgSW50ZWdlcigxMCkpOworICAgICAgICBtZXRob2QoImFiYyIsIDEwKTsKKyAgICB9Cit9CisKK2NsYXNzIEJveGluZ0NvbmZsaWN0IHsKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CisgICAgICAgIGFkZDxlcnJvciBkZXNjcj0iQW1iaWd1b3VzIG1ldGhvZCBjYWxsOiBib3RoICdCb3hpbmdDb25mbGljdC5hZGQobG9uZywgTG9uZyknIGFuZCAnQm94aW5nQ29uZmxpY3QuYWRkKExvbmcsIExvbmcpJyBtYXRjaCI+KDBMLCAwTCk8L2Vycm9yPjsKKyAgICB9CisKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgYWRkKGxvbmcgaywgTG9uZyB2KSB7IH0KKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgYWRkKExvbmcgaywgTG9uZyB2KSB7IH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvZ2VuZXJpY3NIaWdobGlnaHRpbmcvQ2FwdHVyZWRXaWxkY2FyZEFzc2lnbm1lbnRzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2dlbmVyaWNzSGlnaGxpZ2h0aW5nL0NhcHR1cmVkV2lsZGNhcmRBc3NpZ25tZW50cy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI3NTBjZDIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2dlbmVyaWNzSGlnaGxpZ2h0aW5nL0NhcHR1cmVkV2lsZGNhcmRBc3NpZ25tZW50cy5qYXZhCkBAIC0wLDAgKzEsMzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwMC0yMDEyIEpldEJyYWlucyBzLnIuby4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKK2ltcG9ydCBqYXZhLnV0aWwuKjsKKworcHVibGljIGNsYXNzIFRlc3QgeworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBiYXIoKSB7CisgICAgICA8ZXJyb3IgZGVzY3I9IkluY29tcGF0aWJsZSB0eXBlcy4gRm91bmQ6ICdqYXZhLmxhbmcuQ2xhc3M8Y2FwdHVyZTw/IGV4dGVuZHMgamF2YS51dGlsLkl0ZXJhdG9yPj4nLCByZXF1aXJlZDogJ2phdmEubGFuZy5DbGFzczw/IGV4dGVuZHMgamF2YS51dGlsLkl0ZXJhdG9yPD8+PiciPkNsYXNzPD8gZXh0ZW5kcyBJdGVyYXRvcjw/Pj4gYyA9IGZvbygpOzwvZXJyb3I+CisgICAgfQorICAKKyAgICBwdWJsaWMgc3RhdGljIENsYXNzPD8gZXh0ZW5kcyBJdGVyYXRvcj4gZm9vKCkgeworICAgICAgcmV0dXJuIG51bGw7CisgICAgfQorfQorCitjbGFzcyBFeGFtcGxlIHsKKyAgICBzdGF0aWMgTGlzdDw/IGV4dGVuZHMgQWJzdHJhY3RUcmVlTm9kZT4gdHJlZU5vZGVzID0gbnVsbDsKKworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKKyAgICAgICAgZm9yIChBYnN0cmFjdFRyZWVOb2RlPFN0cmluZz4gdHJlZU5vZGUgOiB0cmVlTm9kZXMpIHsKKworICAgICAgICB9CisgICAgfQorCit9CitjbGFzcyBBYnN0cmFjdFRyZWVOb2RlPFQ+IHt9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9nZW5lcmljc0hpZ2hsaWdodGluZy9DbGFzc0luaGVyaXRhbmNlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2dlbmVyaWNzSGlnaGxpZ2h0aW5nL0NsYXNzSW5oZXJpdGFuY2UuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYTRlODBmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9nZW5lcmljc0hpZ2hsaWdodGluZy9DbGFzc0luaGVyaXRhbmNlLmphdmEKQEAgLTAsMCArMSwxMjIgQEAKK2NsYXNzIEQgaW1wbGVtZW50cyBJPEk+eworfQorY2xhc3MgRFQ8VD4gaW1wbGVtZW50cyBJPFQ+eworfQorCitpbnRlcmZhY2UgSSA8VD4geworfQorCis8ZXJyb3IgZGVzY3I9IidJJyBjYW5ub3QgYmUgaW5oZXJpdGVkIHdpdGggZGlmZmVyZW50IHR5cGUgYXJndW1lbnRzOiAnSScgYW5kICdEJyI+Y2xhc3MgQ0NDIGV4dGVuZHMgRCBpbXBsZW1lbnRzIEk8RD48L2Vycm9yPiB7Cit9CithYnN0cmFjdCBjbGFzcyBDQ0MyPFQ+IGV4dGVuZHMgRFQ8VD4gaW1wbGVtZW50cyBJPFQ+IHsKK30KKworY2xhc3MgYSBleHRlbmRzIGI8ZCwgYz4gaW1wbGVtZW50cyBjPGQsIGM8YyxjPj4sIGQ8YjxjPGMsYz4sZD4+IHt9CitwdWJsaWMgY2xhc3MgYjxLLFY+IGltcGxlbWVudHMgYzxLLCBjPFYsVj4+IHsgfQoraW50ZXJmYWNlIGM8SyxWPiBleHRlbmRzIGQ8YjxWLEs+PiB7fQoraW50ZXJmYWNlIGQ8Sz4ge30KKworLy8gZXh0ZW5kaW5nIGZpbmFsIGNsYXNzZXMgaW4gYm91bmRzCitjbGFzcyBDPFQgZXh0ZW5kcyBTdHJpbmc+IHsKKyA8RSBleHRlbmRzIEludGVnZXI+IHZvaWQgZigpIHt9Cit9CisKK2NsYXNzIEdlbmVyaWNFeHRlbmRJdHNlbGY8VCwgVSBleHRlbmRzIFQ+Cit7CisgICAgR2VuZXJpY0V4dGVuZEl0c2VsZjxPYmplY3QsT2JqZWN0PiBmb287Cit9CisKKworLy8vLy8vLy8vLy8vLy8vLy8vLy8KK3B1YmxpYyBhYnN0cmFjdCBjbGFzcyBaWlpaPEU+IHsKKyAgICBwdWJsaWMgYWJzdHJhY3QgRSBnZXRFbGVtZW50KCk7Cit9CithYnN0cmFjdCBjbGFzcyBaPEU+IGV4dGVuZHMgWlpaWjxFPiB7fQorY2xhc3MgWjIgZXh0ZW5kcyBaPEludGVnZXI+IHsKKyAgICBwdWJsaWMgSW50ZWdlciBnZXRFbGVtZW50KCkgeworICAgICAgICByZXR1cm4gbnVsbDsgIAorICAgIH0KK30KKy8vLy8vLy8vLy8vLy8vLy8vCitjbGFzcyBCYXNlQyA8RT4geworICAgIEUgcmVtb3ZlKCl7CisgICAgICAgIHJldHVybiBudWxsOworICAgIH0KK30KKworY2xhc3MgRGVyaXZlZEMgZXh0ZW5kcyBCYXNlQzxTdHJpbmc+IHsKKyAgICBwdWJsaWMgU3RyaW5nIHJlbW92ZSgpIHsKKyAgICAgICAgU3RyaW5nIHMgPSBzdXBlci5yZW1vdmUoKTsKKyAgICAgICAgcmV0dXJuIG51bGw7CisgICAgfQorfQorCisvLy8gcmF3IGluIHRoZSBtdWx0aXBsZSBzdXBlcnMKK2ludGVyZmFjZSBJbnQ8VD4geworICAgIEFDbGFzczxUPiBmKCk7Cit9CithYnN0cmFjdCBjbGFzcyBBQ2xhc3M8VD4gaW1wbGVtZW50cyBJbnQ8VD4geworICAgIHB1YmxpYyBhYnN0cmFjdCBBQ2xhc3M8VD4gZigpOworfQorCitjbGFzcyBNeUNsYXNzIGV4dGVuZHMgQUNsYXNzIGltcGxlbWVudHMgSW50eworICAgIHB1YmxpYyBBQ2xhc3MgZigpIHsKKyAgICAgICAgcmV0dXJuIG51bGw7CisgICAgfQorfQorCitjbGFzcyBBPFQ+eworICBBKCl7fQorICBBKFQgdCl7fQorCisgIHsKKyAgIG5ldyBBPEE+KG5ldyBBKCkpe307CisgIH0KK30KKworLy9JREVBREVWLTQ3MzM6IHRoaXMgb3ZlcnJpZGluZyBpcyBPSworY2xhc3MgT3V0ZXI8VD4KK3sKKyAgICBwdWJsaWMgY2xhc3MgSW5uZXIKKyAgICB7CisgICAgICAgIHByaXZhdGUgZmluYWwgVCB0OworCisgICAgICAgIHB1YmxpYyBJbm5lcihUIHQpIHsgdGhpcy50ID0gdDsgfQorCisgICAgICAgIHB1YmxpYyBUIGdldFQoKSB7IHJldHVybiB0OyB9CisKKyAgICAgICAgcHVibGljIFN0cmluZyB0b1N0cmluZygpIHsgcmV0dXJuIHQudG9TdHJpbmcoKTsgfQorICAgIH0KK30KKworY2xhc3MgT3RoZXIgZXh0ZW5kcyBPdXRlcjxTdHJpbmc+Cit7CisgICAgcHVibGljIGNsYXNzIEl0aGVyIGV4dGVuZHMgT3V0ZXI8U3RyaW5nPi5Jbm5lcgorICAgIHsKKyAgICAgICAgcHVibGljIEl0aGVyKCkKKyAgICAgICAgeworICAgICAgICAgICAgc3VwZXIoImhlbGxvIik7IC8vdmFsaWQgc3VwZXIgY29uc3RydWN0b3IgY2FsbAorICAgICAgICB9CisgICAgfQorfQorCisvL2VuZCBvZiAvL0lERUFERVYtNDczMworaW50ZXJmYWNlIEFJIHsKK30KK2ludGVyZmFjZSBCSSB7Cit9CithYnN0cmFjdCBjbGFzcyBBYnN0cmFjdENsYXNzPFQ+IHsKKyAgICBBYnN0cmFjdENsYXNzKENsYXNzPFQ+IGNsYXp6KSB7CisgICAgfQorfQorY2xhc3MgQ29uY3JldGVDbGFzcyBleHRlbmRzIEFic3RyYWN0Q2xhc3M8QUk+IHsKKyAgICBDb25jcmV0ZUNsYXNzKCkgeworICAgICAgICBzdXBlcihBSS5jbGFzcyk7CisgICAgfQorICAgIGNsYXNzIElubmVyQ2xhc3MgZXh0ZW5kcyBBYnN0cmFjdENsYXNzPEJJPiB7CisgICAgICAgIElubmVyQ2xhc3MoKSB7CisgICAgICAgICAgICBzdXBlcihCSS5jbGFzcyk7IC8vCisgICAgICAgIH0KKyAgICB9Cit9CisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9nZW5lcmljc0hpZ2hsaWdodGluZy9Db25kaXRpb25hbEV4cHJlc3Npb24uamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvZ2VuZXJpY3NIaWdobGlnaHRpbmcvQ29uZGl0aW9uYWxFeHByZXNzaW9uLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjRkNmFjMQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvZ2VuZXJpY3NIaWdobGlnaHRpbmcvQ29uZGl0aW9uYWxFeHByZXNzaW9uLmphdmEKQEAgLTAsMCArMSwyMSBAQAoraW1wb3J0IGphdmEudXRpbC5UcmVlTWFwOworaW1wb3J0IGphdmEudXRpbC5IYXNoTWFwOworaW1wb3J0IGphdmEudXRpbC5NYXA7CisKK2NsYXNzIFRlc3QgeworICBib29sZWFuIGYgKCkgeworICAgIHJldHVybiBmYWxzZTsKKyAgfQorCisgIEJvb2xlYW4gZyAoaW50IGkpIHsKKyAgICAvL1RoaXMgaXMgT0sgdGhhbmtzIHRvIGJveGluZyBmKCkKKyAgICByZXR1cm4gaSA+IDAgPyBmICgpIDogbnVsbDsKKyAgfQorCisgIHsKKyAgICBPYmplY3QgdmFsdWVzID0gbmV3IE9iamVjdCgpOworICAgIC8vSURFQURFVi0xNzU2OiB0aGlzIHNob3VsZCBiZSBPSworICAgIGZpbmFsIE1hcDxPYmplY3QsT2JqZWN0PiBuZXdWYWx1ZXMgPSB0cnVlID8gbmV3IFRyZWVNYXA8T2JqZWN0LE9iamVjdD4oKSA6IG5ldyBIYXNoTWFwPE9iamVjdCxPYmplY3Q+KCk7CisgICAgbmV3VmFsdWVzLmdldCh2YWx1ZXMpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9nZW5lcmljc0hpZ2hsaWdodGluZy9Db250aW51ZUluZmVyZW5jZUFmdGVyRmlyc3RSYXdSZXN1bHQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvZ2VuZXJpY3NIaWdobGlnaHRpbmcvQ29udGludWVJbmZlcmVuY2VBZnRlckZpcnN0UmF3UmVzdWx0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2YyZTFkMAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvZ2VuZXJpY3NIaWdobGlnaHRpbmcvQ29udGludWVJbmZlcmVuY2VBZnRlckZpcnN0UmF3UmVzdWx0LmphdmEKQEAgLTAsMCArMSwyMyBAQAoraW1wb3J0IGphdmEudXRpbC4qOworCitjbGFzcyBUZXN0IHsKKworICBMaXN0PFN0cmluZz4gZ2V0TGlzdChGdW5jdGlvbjxPYmplY3QsIFN0cmluZz4gZnVuY3Rpb24pIHsKKyAgICAgICAgLyoKKyAgICAgICAgICogV2hlbiB0aGUgZmlyc3QgYXJndW1lbnQgYmVsb3cgaXMgYSByYXcgdHlwZSBpdCB0dXJucyByZWQgYmVjYXVzZSBJREVBIHRoaW5rcyB0aGUgcmV0dXJuCisgICAgICAgICAqIHR5cGUgaXMgQ29sbGVjdGlvbjw+LiAgamF2YWMgYW5kIEVjbGlwc2UgZG9uJ3QgY2FyZQorICAgICAgICAgKi8KKyAgICByZXR1cm4gIHRyYW5zZm9ybShuZXcgQXJyYXlMaXN0KCksIG5ldyBBcnJheUxpc3Q8U3RyaW5nPigpLCBmdW5jdGlvbik7CisgIH0KKworICA8UiwgUywgVCBleHRlbmRzIENvbGxlY3Rpb248Uz4+IFQgdHJhbnNmb3JtKEl0ZXJhYmxlPD8gZXh0ZW5kcyBSPiBvbGRDb2xsZWN0aW9uLCBUIG5ld0NvbGxlY3Rpb24sIEZ1bmN0aW9uPFIsIFM+IGZ1bmN0aW9uKSB7CisgICAgZm9yIChSIHIgOiBvbGRDb2xsZWN0aW9uKSB7CisgICAgICBuZXdDb2xsZWN0aW9uLmFkZChmdW5jdGlvbi5hcHBseShyKSk7CisgICAgfQorICAgIHJldHVybiBuZXdDb2xsZWN0aW9uOworICB9CisKKyAgaW50ZXJmYWNlIEZ1bmN0aW9uPFgsIFk+IHsKKyAgICBZIGFwcGx5KFggaW5wdXQpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9nZW5lcmljc0hpZ2hsaWdodGluZy9Db252ZXJ0aWJsZVR5cGVzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2dlbmVyaWNzSGlnaGxpZ2h0aW5nL0NvbnZlcnRpYmxlVHlwZXMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MDJlMzBjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9nZW5lcmljc0hpZ2hsaWdodGluZy9Db252ZXJ0aWJsZVR5cGVzLmphdmEKQEAgLTAsMCArMSw5MCBAQAoraW1wb3J0IGphdmEudXRpbC5Db2xsZWN0aW9uOworaW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7CisKK2ludGVyZmFjZSBZTzw8d2FybmluZyBkZXNjcj0iVHlwZSBwYXJhbWV0ZXIgJ1QnIGlzIG5ldmVyIHVzZWQiPlQ8L3dhcm5pbmc+PiB7fQoraW50ZXJmYWNlIFlPMSBleHRlbmRzIFlPPFN0cmluZz4ge30KK2ludGVyZmFjZSBZTzIgZXh0ZW5kcyBZTzxJbnRlZ2VyPiB7fQorCitwdWJsaWMgY2xhc3MgQ29udmVydGlibGVUZXN0IHsKKworICAgIFlPMiBiYXIgKFlPMSBzKSB7CisgICAgICAgICAgcmV0dXJuIDxlcnJvciBkZXNjcj0iSW5jb252ZXJ0aWJsZSB0eXBlczsgY2Fubm90IGNhc3QgJ1lPMScgdG8gJ1lPMiciPihZTzIpIHM8L2Vycm9yPjsKKyAgICB9Cit9CisKKworLy9JREVBLTEwOTcKK2ludGVyZmFjZSBJbnRlcmZhY2UxIHt9CitpbnRlcmZhY2UgSW50ZXJmYWNlMiB7fQorCitjbGFzcyBJbXBsZW1lbnRhdGlvbiBpbXBsZW1lbnRzIEludGVyZmFjZTEge30KKworcHVibGljIGNsYXNzIEluY29udmVydGlibGVUeXBlc1Rlc3QgPEUgZXh0ZW5kcyBJbnRlcmZhY2UyPgoreworICAgIEUgdGhpbmc7CisKKyAgICBwdWJsaWMgRSBnZXRUaGluZygpIHsKKyAgICAgICAgIHJldHVybiB0aGluZzsKKyAgICB9CisKKyAgICBJbXBsZW1lbnRhdGlvbiBmb28oSW5jb252ZXJ0aWJsZVR5cGVzVGVzdDw/IGV4dGVuZHMgSW50ZXJmYWNlMT4gaTIpIHsKKyAgICAgICAvL1RoaXMgaXMgYSB2YWxpZCBjYXN0IGZyb20gaW50ZXJzZWN0aW9uIHR5cGUKKyAgICAgICByZXR1cm4gKEltcGxlbWVudGF0aW9uKSBpMi5nZXRUaGluZygpOworICAgIH0KK30KKworY2xhc3MgTXlDb2xsZWN0aW9uIGV4dGVuZHMgQXJyYXlMaXN0PEludGVnZXI+IHt9CitjbGFzcyBUZXN0ZXIgeworICAgIENvbGxlY3Rpb248U3RyaW5nPiB4KE15Q29sbGVjdGlvbiBsKSB7CisgICAgICAgIHJldHVybiA8ZXJyb3IgZGVzY3I9IkluY29udmVydGlibGUgdHlwZXM7IGNhbm5vdCBjYXN0ICdNeUNvbGxlY3Rpb24nIHRvICdqYXZhLnV0aWwuQ29sbGVjdGlvbjxqYXZhLmxhbmcuU3RyaW5nPiciPihDb2xsZWN0aW9uPFN0cmluZz4pIGw8L2Vycm9yPjsKKyAgICB9Cit9CisKKworY2xhc3MgSURFQURFVjM5NzggeworICAgIGNsYXNzIENvbnN0cnVjdG9yPFQ+IHsKKyAgICAgICAgQ2xhc3M8VD4gZ2V0RGVjbGFyaW5nQ2xhc3MoKSB7CisgICAgICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAgfQorICAgIH0KKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgZm9vKENvbnN0cnVjdG9yPD8+IGNvbnN0cnVjdG9yKSB7CisgICAgICAgIGlmKGNvbnN0cnVjdG9yLmdldERlY2xhcmluZ0NsYXNzKCkgPT0gU3RyaW5nLmNsYXNzKSB7IC8vY2FwdHVyZWQgd2lsZGNhcmQgaXMgY29udmVydGlibGUKKyAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigieWVwIik7CisgICAgICAgIH0KKyAgICB9Cit9CisKK2NsYXNzIEMyPFQ+IHsKKyAgIHZvaWQgZihUIHQpIHsKKyAgICAgaWYgKHQgaW5zdGFuY2VvZiBPYmplY3RbXSkgcmV0dXJuOworICAgfQorfQorCitjbGFzcyBDYXN0aW5nIHsKKyB2b2lkIGYoT2JqZWN0IG8pCisgeworICAgICAgICAgaWYgKG8gaW5zdGFuY2VvZiBpbnRbXSkgcmV0dXJuOworCisgICAgICAgICBPYmplY3Qgb2JqMSA9IChPYmplY3QpdHJ1ZTsgICBmKG9iajEpOworICAgICAgICAgT2JqZWN0IG9iID0gKE51bWJlcikxOyAgICAgICAgZihvYik7CisgICAgICAgICBPYmplY3Qgb2IyID0gKE9iamVjdCkxOyAgICAgICBmKG9iMik7CisKKyB9CisKKyBwdWJsaWMgc3RhdGljIDxUPiBUIGNvbnZlcnQoQ2xhc3M8VD4gY2xhenosIE9iamVjdCBvYmopIHsKKyAgICAgaWYgKG9iaiA9PSBudWxsKSByZXR1cm4gbnVsbDsKKyAgICAgaWYgKFN0cmluZ1tdLmNsYXNzID09IGNsYXp6KQorICAgICAgICByZXR1cm4gPHdhcm5pbmcgZGVzY3I9IlVuY2hlY2tlZCBjYXN0OiAnamF2YS5sYW5nLlN0cmluZ1tdJyB0byAnVCciPihUKSBwYXJzZUFycmF5KG9iaik8L3dhcm5pbmc+OworICAgICByZXR1cm4gbnVsbDsKKyB9CisKKyBwcml2YXRlIHN0YXRpYyBTdHJpbmdbXSBwYXJzZUFycmF5KE9iamVjdCBvYmopIHsKKyAgICByZXR1cm4gb2JqLnRvU3RyaW5nKCkuc3BsaXQoIiwiKTsKKyB9Cit9CisKK2NsYXNzIENhc3RQcmltaXRpdmVUb1R5cGVQYXJhbTxUPiB7CisgIFQgZm9vKCkgeworICAgIHJldHVybiA8ZXJyb3IgZGVzY3I9IkluY29udmVydGlibGUgdHlwZXM7IGNhbm5vdCBjYXN0ICdpbnQnIHRvICdUJyI+KFQpMTwvZXJyb3I+OworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9nZW5lcmljc0hpZ2hsaWdodGluZy9EZWVwQ29uZmxpY3RpbmdSZXR1cm5UeXBlcy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9nZW5lcmljc0hpZ2hsaWdodGluZy9EZWVwQ29uZmxpY3RpbmdSZXR1cm5UeXBlcy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA0NzdhZWUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2dlbmVyaWNzSGlnaGxpZ2h0aW5nL0RlZXBDb25mbGljdGluZ1JldHVyblR5cGVzLmphdmEKQEAgLTAsMCArMSwyMSBAQAorY2xhc3MgVyB7CisgICAgT2JqZWN0IGYoKSB7CisgICAgICAgIHJldHVybiAwOworICAgIH0KK30KKworY2xhc3MgV1cgZXh0ZW5kcyBXIHsKKyAgICBTdHJpbmcgZigpIHsKKyAgICAgICAgcmV0dXJuIG51bGw7CisgICAgfQorfQorCitpbnRlcmZhY2UgSVEgeworICAgIHZvaWQgZigpOworfQorCisKKzxlcnJvciBkZXNjcj0iJ2YoKScgaW4gJ1dXJyBjbGFzaGVzIHdpdGggJ2YoKScgaW4gJ0lRJzsgYXR0ZW1wdGluZyB0byB1c2UgaW5jb21wYXRpYmxlIHJldHVybiB0eXBlIj5jbGFzcyBXV1cgZXh0ZW5kcyBXVyBpbXBsZW1lbnRzIElRPC9lcnJvcj4geworCit9CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvZ2VuZXJpY3NIaWdobGlnaHRpbmcvRGlmZmVyZW50VHlwZVBhcmFtc0luT3ZlcmxvYWRlZE1ldGhvZHMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvZ2VuZXJpY3NIaWdobGlnaHRpbmcvRGlmZmVyZW50VHlwZVBhcmFtc0luT3ZlcmxvYWRlZE1ldGhvZHMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNDRlNTU1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9nZW5lcmljc0hpZ2hsaWdodGluZy9EaWZmZXJlbnRUeXBlUGFyYW1zSW5PdmVybG9hZGVkTWV0aG9kcy5qYXZhCkBAIC0wLDAgKzEsMjggQEAKK2ltcG9ydCBqYXZhLnV0aWwuKjsKK2NsYXNzIE5hdiB7CisgICAgaW50ZXJmYWNlIFNpemVkIHt9CisgICAgaW50ZXJmYWNlIFN0cmVhbTw8d2FybmluZyBkZXNjcj0iVHlwZSBwYXJhbWV0ZXIgJ1QnIGlzIG5ldmVyIHVzZWQiPlQ8L3dhcm5pbmc+PiB7IH0KKworICAgIHByaXZhdGUgc3RhdGljPFUsIFQgZXh0ZW5kcyBTaXplZCAmIEl0ZXJhYmxlPFU+PiBTdHJlYW08VT4gc3RyZWFtKFQgZW50aXR5LCBpbnQgZmxhZ3MpIHsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKGVudGl0eSk7CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihmbGFncyk7CisgICAgICAgIHJldHVybiBudWxsOworICAgIH0KKworICAgIHByaXZhdGUgc3RhdGljPFUsIFQgZXh0ZW5kcyBJdGVyYWJsZTxVPj4gU3RyZWFtPFU+IDx3YXJuaW5nIGRlc2NyPSJQcml2YXRlIG1ldGhvZCAnc3RyZWFtKFQsIGludCknIGlzIG5ldmVyIHVzZWQiPnN0cmVhbTwvd2FybmluZz4oVCBlbnRpdHksIGludCBmbGFncykgeworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oZW50aXR5KTsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKGZsYWdzKTsKKyAgICAgICAgcmV0dXJuIG51bGw7CisgICAgfQorCisgICAgc3RhdGljIGNsYXNzIEE8VD4gaW1wbGVtZW50cyBJdGVyYWJsZTxUPiwgU2l6ZWQgeworICAgICAgICBwdWJsaWMgSXRlcmF0b3I8VD4gaXRlcmF0b3IoKSB7CisgICAgICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAgfQorICAgIH0KKworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKKyAgICAgICAgU3RyZWFtPFN0cmluZz4gYVN0cmVhbSA9IHN0cmVhbShuZXcgQTxTdHJpbmc+KCksIDApOworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oYVN0cmVhbSk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvZ2VuZXJpY3NIaWdobGlnaHRpbmcvRG9Ob3RBY2NlcHRMb3dlckJvdW5kSWZSYXcuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvZ2VuZXJpY3NIaWdobGlnaHRpbmcvRG9Ob3RBY2NlcHRMb3dlckJvdW5kSWZSYXcuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iOWJiY2JlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9nZW5lcmljc0hpZ2hsaWdodGluZy9Eb05vdEFjY2VwdExvd2VyQm91bmRJZlJhdy5qYXZhCkBAIC0wLDAgKzEsMTcgQEAKK2ltcG9ydCBqYXZhLnV0aWwuKjsKKworY2xhc3MgVGVzdCB7CisgIGludGVyZmFjZSBDb25kaXRpb248Sz4ge30KKyAgY2xhc3MgSU9DPE0+IGltcGxlbWVudHMgQ29uZGl0aW9uIHt9CisKKyAgc3RhdGljIDxUPiBMaXN0PFQ+IGZpbHRlcihUW10gYywgQ29uZGl0aW9uPD8gc3VwZXIgVD4gY29uKSB7CisgICAgcmV0dXJuIG51bGw7CisgIH0KKworICBpbnRlcmZhY2UgT0Uge30KKyAgaW50ZXJmYWNlIExPRSBleHRlbmRzIE9FIHt9CisKKyAgdm9pZCBmb28oT0VbXSBlcywgSU9DPExPRT4gY29uKSB7CisgICAgTGlzdDxMT0U+IGwgPSBmaWx0ZXIoZXMsIGNvbik7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2dlbmVyaWNzSGlnaGxpZ2h0aW5nL0VudW0uamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvZ2VuZXJpY3NIaWdobGlnaHRpbmcvRW51bS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUxMTMxNTcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2dlbmVyaWNzSGlnaGxpZ2h0aW5nL0VudW0uamF2YQpAQCAtMCwwICsxLDE4OSBAQAorZW51bSBPcGVyYXRpb24geworICBYOworICBzdGF0aWMgaW50IHMgPSAwOworICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBjb25zdFMgPSAiIjsKKyAgT3BlcmF0aW9uKCkgeworICAgIGludCBpID0gPGVycm9yIGRlc2NyPSJJdCBpcyBpbGxlZ2FsIHRvIGFjY2VzcyBzdGF0aWMgbWVtYmVyICdzJyBmcm9tIGVudW0gY29uc3RydWN0b3Igb3IgaW5zdGFuY2UgaW5pdGlhbGl6ZXIiPk9wZXJhdGlvbi5zPC9lcnJvcj47CisgICAgaSA9IDxlcnJvciBkZXNjcj0iSXQgaXMgaWxsZWdhbCB0byBhY2Nlc3Mgc3RhdGljIG1lbWJlciAncycgZnJvbSBlbnVtIGNvbnN0cnVjdG9yIG9yIGluc3RhbmNlIGluaXRpYWxpemVyIj5zPC9lcnJvcj47CisgICAgPGVycm9yIGRlc2NyPSJJdCBpcyBpbGxlZ2FsIHRvIGFjY2VzcyBzdGF0aWMgbWVtYmVyICdzJyBmcm9tIGVudW0gY29uc3RydWN0b3Igb3IgaW5zdGFuY2UgaW5pdGlhbGl6ZXIiPnM8L2Vycm9yPiA9IDA7CisgICAgZmluYWwgaW50IHggPSBJbnRlZ2VyLk1BWF9WQUxVRTsKKyAgICBTdHJpbmcgY28gPSBjb25zdFM7CisgICAgLy8gVE9ETzogdW5jbGVhcgorICAgIC8vT3BlcmF0aW9uIG8gPSBYOworICB9CisgIHN0YXRpYyB7CisgICAgaW50IGkgPSBPcGVyYXRpb24uczsKKyAgICBpID0gczsKKyAgICBzID0gMDsKKyAgICBmaW5hbCBpbnQgeCA9IEludGVnZXIuTUFYX1ZBTFVFOworICAgIFN0cmluZyBjbyA9IGNvbnN0UzsKKyAgICAvLyBUT0RPOiB1bmNsZWFyCisgICAgLy9PcGVyYXRpb24gbyA9IFg7CisgIH0KKyAgeworICAgIGludCBpID0gPGVycm9yIGRlc2NyPSJJdCBpcyBpbGxlZ2FsIHRvIGFjY2VzcyBzdGF0aWMgbWVtYmVyICdzJyBmcm9tIGVudW0gY29uc3RydWN0b3Igb3IgaW5zdGFuY2UgaW5pdGlhbGl6ZXIiPk9wZXJhdGlvbi5zPC9lcnJvcj47CisgICAgaSA9IDxlcnJvciBkZXNjcj0iSXQgaXMgaWxsZWdhbCB0byBhY2Nlc3Mgc3RhdGljIG1lbWJlciAncycgZnJvbSBlbnVtIGNvbnN0cnVjdG9yIG9yIGluc3RhbmNlIGluaXRpYWxpemVyIj5zPC9lcnJvcj47CisgICAgPGVycm9yIGRlc2NyPSJJdCBpcyBpbGxlZ2FsIHRvIGFjY2VzcyBzdGF0aWMgbWVtYmVyICdzJyBmcm9tIGVudW0gY29uc3RydWN0b3Igb3IgaW5zdGFuY2UgaW5pdGlhbGl6ZXIiPnM8L2Vycm9yPiA9IDA7CisgICAgZmluYWwgaW50IHggPSBJbnRlZ2VyLk1BWF9WQUxVRTsKKyAgICBTdHJpbmcgY28gPSBjb25zdFM7CisgICAgLy8gVE9ETzogdW5jbGVhcgorICAgIC8vT3BlcmF0aW9uIG8gPSBYOworCisgICAgT3BlcmF0aW9uIG9vbyA9IDxlcnJvciBkZXNjcj0iRW51bSB0eXBlcyBjYW5ub3QgYmUgaW5zdGFudGlhdGVkIj5uZXcgT3BlcmF0aW9uKCk8L2Vycm9yPjsKKyAgfQorCisgIDxlcnJvciBkZXNjcj0iJ3ZhbHVlcygpJyBpcyBhbHJlYWR5IGRlZmluZWQgaW4gJ09wZXJhdGlvbiciPnZvaWQgdmFsdWVzKCk8L2Vycm9yPiB7fQorICB2b2lkIHZhbHVlcyhpbnQgaSkge30KKyAgdm9pZCB2YWx1ZU9mKCkge30KKyAgPGVycm9yIGRlc2NyPSIndmFsdWVPZihTdHJpbmcpJyBpcyBhbHJlYWR5IGRlZmluZWQgaW4gJ09wZXJhdGlvbiciPnZvaWQgdmFsdWVPZihTdHJpbmcgcyk8L2Vycm9yPiB7fQorfQorCitjbGFzcyBleHRlIGV4dGVuZHMgPGVycm9yIGRlc2NyPSJDYW5ub3QgaW5oZXJpdCBmcm9tIGZpbmFsICdPcGVyYXRpb24nIj5PcGVyYXRpb248L2Vycm9yPiB7Cit9CisKK2NsYXNzIHVzZSB7CisgIHZvaWQgZihPcGVyYXRpb24gb3ApIHsKKyAgIHN3aXRjaChvcCkgeworICAgIGNhc2UgPGVycm9yIGRlc2NyPSJBbiBlbnVtIHN3aXRjaCBjYXNlIGxhYmVsIG11c3QgYmUgdGhlIHVucXVhbGlmaWVkIG5hbWUgb2YgYW4gZW51bWVyYXRpb24gY29uc3RhbnQiPk9wZXJhdGlvbi5YPC9lcnJvcj46IGJyZWFrOworICAgfQorICAgc3dpdGNoKG9wKSB7CisgICAgY2FzZSBYOiBicmVhazsKKyAgIH0KKyAgIHN3aXRjaChvcCkgeworICAgIGNhc2UgPGVycm9yIGRlc2NyPSJEdXBsaWNhdGUgbGFiZWwgJ1gnIj5YPC9lcnJvcj46IGJyZWFrOworICAgIGNhc2UgPGVycm9yIGRlc2NyPSJEdXBsaWNhdGUgbGFiZWwgJ1gnIj5YPC9lcnJvcj46IGJyZWFrOworICAgfQorICB9Cit9CisKK2VudW0gcHViQ3RyIHsKKyAgWCgxKTsKKyAgPGVycm9yIGRlc2NyPSJNb2RpZmllciAncHVibGljJyBub3QgYWxsb3dlZCBoZXJlIj5wdWJsaWM8L2Vycm9yPiBwdWJDdHIoaW50IGkpIHt9Cit9CitlbnVtIHByb3RDdHIgeworICBYKDEpOworICA8ZXJyb3IgZGVzY3I9Ik1vZGlmaWVyICdwcm90ZWN0ZWQnIG5vdCBhbGxvd2VkIGhlcmUiPnByb3RlY3RlZDwvZXJyb3I+IHByb3RDdHIoaW50IGkpIHt9Cit9Cis8ZXJyb3IgZGVzY3I9Ik1vZGlmaWVyICdmaW5hbCcgbm90IGFsbG93ZWQgaGVyZSI+ZmluYWw8L2Vycm9yPiBlbnVtIEZpbiB7IFkgfQorPGVycm9yIGRlc2NyPSJNb2RpZmllciAnYWJzdHJhY3QnIG5vdCBhbGxvd2VkIGhlcmUiPmFic3RyYWN0PC9lcnJvcj4gZW51bSBBYnN0ciB7ICB9CisKK2VudW0gcGFyYW1zPGVycm9yIGRlc2NyPSJFbnVtIG1heSBub3QgaGF2ZSB0eXBlIHBhcmFtZXRlcnMiPjxUPjwvZXJyb3I+IHsKK30KKworZW51bSBPdXJFbnVtIHsKKyAgQSwgQiwgQzsKKworICBPdXJFbnVtKCkgeworICB9CisKKyAgeworICAgIEVudW08T3VyRW51bT4gYSA9IEE7CisgICAgT3VyRW51bSBlbnVtVmFsdWUgPSBCOworICAgIHN3aXRjaCAoZW51bVZhbHVlKSB7CisgICAgfQorCisgICAgc3dpdGNoIChlbnVtVmFsdWUpIHsKKyAgICAgIGNhc2UgQToKKyAgICAgICAgYnJlYWs7CisgICAgfQorICB9Cit9CisKK2VudW0gVGVzdEVudW0KK3sKKyAgICBBKDxlcnJvciBkZXNjcj0iSWxsZWdhbCBmb3J3YXJkIHJlZmVyZW5jZSI+QjwvZXJyb3I+KSwgQihBKTsgCisgICAgVGVzdEVudW0oVGVzdEVudW0gb3RoZXIpIHsKKyAgICAgIDxlcnJvciBkZXNjcj0iQ2FsbCB0byBzdXBlciBpcyBub3QgYWxsb3dlZCBpbiBlbnVtIGNvbnN0cnVjdG9yIj5zdXBlcihudWxsLCAwKTwvZXJyb3I+OworICAgIH0KK30KKworPGVycm9yIGRlc2NyPSJDbGFzcyAnYWJzdHInIG11c3QgZWl0aGVyIGJlIGRlY2xhcmVkIGFic3RyYWN0IG9yIGltcGxlbWVudCBhYnN0cmFjdCBtZXRob2QgJ3J1bigpJyBpbiAnUnVubmFibGUnIj5lbnVtIGFic3RyIGltcGxlbWVudHMgUnVubmFibGU8L2Vycm9yPiB7Cit9CisKKy8vdGhpcyBvbmUgaXMgT0ssIGVudW0gY29uc3RhbnRzIGFyZSBjaGVja2VkIGluc3RlYWQgb2YgZW51bSBpdHNlbGYKK2VudW0gYWJzdHIxIGltcGxlbWVudHMgUnVubmFibGUgeworICAgIEEgeworICAgICAgICBwdWJsaWMgdm9pZCBydW4oKSB7fQorICAgIH07Cit9CisKK2NsYXNzIFggZXh0ZW5kcyA8ZXJyb3IgZGVzY3I9IkNsYXNzZXMgY2Fubm90IGRpcmVjdGx5IGV4dGVuZCAnamF2YS5sYW5nLkVudW0nIj5FbnVtPC9lcnJvcj4geworICAgIHB1YmxpYyBYKFN0cmluZyBuYW1lLCBpbnQgb3JkaW5hbCkgeworICAgICAgICBzdXBlcihuYW1lLCBvcmRpbmFsKTsKKyAgICB9Cit9CisKK2VudW0gU3RhdGljSW5FbnVtQ29uc3RhbnRJbml0aWFsaXplciB7CisgICAgQU4geworICAgICAgICA8ZXJyb3IgZGVzY3I9Ik1vZGlmaWVyICdzdGF0aWMnIG5vdCBhbGxvd2VkIGhlcmUiPnN0YXRpYzwvZXJyb3I+IGNsYXNzIHMgeworICAgICAgICB9CisgICAgICAgIHByaXZhdGUgPGVycm9yIGRlc2NyPSJJbm5lciBjbGFzc2VzIGNhbm5vdCBoYXZlIHN0YXRpYyBkZWNsYXJhdGlvbnMiPnN0YXRpYzwvZXJyb3I+IGZpbmFsIFN0cmluZyB0ID0gU3RyaW5nLnZhbHVlT2YoMSk7CisgICAgfTsKK30KKworaW50ZXJmYWNlIEJhcnogeworICAgIHZvaWQgYmF6KCk7Cit9CisKK2VudW0gRm9veiBpbXBsZW1lbnRzIEJhcnogeworICAgIDxlcnJvciBkZXNjcj0iQ2xhc3MgJ0Zvb3onIG11c3QgZWl0aGVyIGJlIGRlY2xhcmVkIGFic3RyYWN0IG9yIGltcGxlbWVudCBhYnN0cmFjdCBtZXRob2QgJ2JheigpJyBpbiAnQmFyeiciPkZPTzwvZXJyb3I+OworfQorCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworY2xhc3Mgc3NzIHsKKyB2b2lkIGYoKSB7CisgICA8ZXJyb3IgZGVzY3I9IkVudW0gbXVzdCBub3QgYmUgbG9jYWwiPmVudW0gRUVFRTwvZXJyb3I+IHsgRUUsIFlZIH07CisgfQorfQorCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisvL1RoaXMgY29kZSBpcyBPSworZW51bSBQb3dlck9mVGVuIHsKKyAgICBPTkUoMSksVEVOKDEwKSwKKyAgICBIVU5EUkVEKDEwMCkgeworICAgICAgICBwdWJsaWMgU3RyaW5nIHRvU3RyaW5nKCkgeworICAgICAgICAgICAgcmV0dXJuIEludGVnZXIudG9TdHJpbmcoc3VwZXIudmFsKTsKKyAgICAgICAgfQorICAgIH07CisKKyAgICBwcml2YXRlIGZpbmFsIGludCB2YWw7CisKKyAgICBQb3dlck9mVGVuKGludCB2YWwpIHsKKyAgICAgICAgdGhpcy52YWwgPSB2YWw7CisgICAgfQorCisgICAgcHVibGljIFN0cmluZyB0b1N0cmluZygpIHsKKyAgICAgICAgcmV0dXJuIG5hbWUoKS50b0xvd2VyQ2FzZSgpOworICAgIH0KKworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKE9ORSArICIgIiArIFRFTiArICIgIiArIEhVTkRSRUQpOworICAgIH0KK30KKworLy9JREVBREVWLTgxOTIKK2VudW0gTXlFbnVtIHsKKyAgICBYMSwgWDI7CisKKyAgICBwcml2YXRlIHN0YXRpYyBNeUVudW1bXSB2YWx1ZXMgPSB2YWx1ZXMoKTsKKworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCB0ZXN0KCkgeworCisgICAgICAgIGZvciAoTXlFbnVtIGUgOiB2YWx1ZXMpIHsgLy8gdmFsdWVzIGlzIGNvbG9yZWQgcmVkCisgICAgICAgICAgICBlLnRvU3RyaW5nKCk7CisgICAgICAgIH0KKyAgICB9Cit9CisvL2VuZCBvZiBJREVBREVWLTgxOTIKKworCitjbGFzcyBFbnVtQnVnSURFQURFVjE1MzMzICB7CisgIHB1YmxpYyBlbnVtIFR5cGUgeyBvbmUsIHRvIH0KKyAgVHlwZSB0eXBlID0gVHlwZS5vbmU7CisgIHB1YmxpYyB2b2lkIG1haW4oKSB7CisgICAgc3dpdGNoKHR5cGUpeworICAgICAgY2FzZSBvbmU6CisgICAgICBPYmplY3Qgb25lID0gbmV3IE9iamVjdCgpOworICAgIH0KKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9nZW5lcmljc0hpZ2hsaWdodGluZy9FbnVtV2l0aEFic3RyYWN0TWV0aG9kcy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9nZW5lcmljc0hpZ2hsaWdodGluZy9FbnVtV2l0aEFic3RyYWN0TWV0aG9kcy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFhYmFlNmIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2dlbmVyaWNzSGlnaGxpZ2h0aW5nL0VudW1XaXRoQWJzdHJhY3RNZXRob2RzLmphdmEKQEAgLTAsMCArMSwyNCBAQAorPGVycm9yIGRlc2NyPSJNb2RpZmllciAnYWJzdHJhY3QnIG5vdCBhbGxvd2VkIGhlcmUiPmFic3RyYWN0PC9lcnJvcj4gZW51bSBPdXJFbnVtIHsKKyAgPGVycm9yIGRlc2NyPSJDbGFzcyAnQW5vbnltb3VzIGNsYXNzIGRlcml2ZWQgZnJvbSBPdXJFbnVtJyBtdXN0IGltcGxlbWVudCBhYnN0cmFjdCBtZXRob2QgJ2ZvbygpJyBpbiAnT3VyRW51bSciPkE8L2Vycm9yPiB7CisgIH0sCisgIDxlcnJvciBkZXNjcj0iJ091ckVudW0nIGlzIGFic3RyYWN0OyBjYW5ub3QgYmUgaW5zdGFudGlhdGVkIj5CPC9lcnJvcj4sCisgIEMgeworICAgIHZvaWQgZm9vKCkge30KKyAgfQorICA7CisKKyAgYWJzdHJhY3Qgdm9pZCBmb28oKTsKK30KKworZW51bSB4eHggeworICA8ZXJyb3IgZGVzY3I9Iid4eHgnIGlzIGFic3RyYWN0OyBjYW5ub3QgYmUgaW5zdGFudGlhdGVkIj5YPC9lcnJvcj4sCisgIDxlcnJvciBkZXNjcj0iQ2xhc3MgJ0Fub255bW91cyBjbGFzcyBkZXJpdmVkIGZyb20geHh4JyBtdXN0IGltcGxlbWVudCBhYnN0cmFjdCBtZXRob2QgJ2YoKScgaW4gJ3h4eCciPlk8L2Vycm9yPiB7CisgIH07CisKKyAgYWJzdHJhY3Qgdm9pZCBmKCk7Cit9CisKK2VudW0gb2sgeworICBYIHsgdm9pZCBmKCkge30gfTsKKyAgYWJzdHJhY3Qgdm9pZCBmKCk7Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2dlbmVyaWNzSGlnaGxpZ2h0aW5nL0VyYXN1cmVUeXBlUGFyYW1ldGVyQm91bmQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvZ2VuZXJpY3NIaWdobGlnaHRpbmcvRXJhc3VyZVR5cGVQYXJhbWV0ZXJCb3VuZC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjllMmExZWEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2dlbmVyaWNzSGlnaGxpZ2h0aW5nL0VyYXN1cmVUeXBlUGFyYW1ldGVyQm91bmQuamF2YQpAQCAtMCwwICsxLDkgQEAKK2ludGVyZmFjZSBGb288VD4geworICAgIHB1YmxpYyA8QSBleHRlbmRzIFQsIEIgZXh0ZW5kcyBBPiB2b2lkIGJhcihDbGFzczxBPiBrZXksIEIgdmFsdWUpOworfQorCitjbGFzcyBGb29JbXBsIGltcGxlbWVudHMgRm9vPFN0cmluZz57CisgICAgIHB1YmxpYyA8QSBleHRlbmRzIFN0cmluZywgIEIgZXh0ZW5kcyBBPiB2b2lkIGJhcihDbGFzczxBPiBrZXksIEIgdmFsdWUpIHsKKworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2dlbmVyaWNzSGlnaGxpZ2h0aW5nL0V4Y2VwdGlvbnMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvZ2VuZXJpY3NIaWdobGlnaHRpbmcvRXhjZXB0aW9ucy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAzOWNmZTYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2dlbmVyaWNzSGlnaGxpZ2h0aW5nL0V4Y2VwdGlvbnMuamF2YQpAQCAtMCwwICsxLDIzIEBACitjbGFzcyBDIDxUIGV4dGVuZHMgRXhjZXB0aW9uPiB7CisgICAgdm9pZCBmb28gKCkgdGhyb3dzIFQge30KKyAgICB2b2lkIGJhciAoKSB7CisgICAgICAgIDxlcnJvciBkZXNjcj0iVW5oYW5kbGVkIGV4Y2VwdGlvbjogVCI+Zm9vICgpOzwvZXJyb3I+CisgICAgfQorCisgICAgPFQgZXh0ZW5kcyBFcnJvcj4gdm9pZCBnb28oKSB7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBpbnQgaSA9IDEyOworICAgICAgICB9IGNhdGNoICg8ZXJyb3IgZGVzY3I9IkNhbm5vdCBjYXRjaCB0eXBlIHBhcmFtZXRlcnMiPlQ8L2Vycm9yPiBleCkgeworICAgICAgICB9CisgICAgfQorfQorCisvL0lERUFERVYtNDE2OTogbm8gcHJvYmxlbSBoZXJlCitpbnRlcmZhY2UgQmx1YiB7CisgICAgcHVibGljIDxFIGV4dGVuZHMgVGhyb3dhYmxlPiB2b2lkIFN3aXRjaCgpIHRocm93cyBFOworfQorCitjbGFzcyBCbGliIGltcGxlbWVudHMgQmx1YiB7CisgICAgcHVibGljIDxFIGV4dGVuZHMgVGhyb3dhYmxlPiB2b2lkIFN3aXRjaCgpIHRocm93cyBFIHsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2dlbmVyaWNzSGlnaGxpZ2h0aW5nL0V4cGxpY2l0TWV0aG9kUGFyYW1ldGVycy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9nZW5lcmljc0hpZ2hsaWdodGluZy9FeHBsaWNpdE1ldGhvZFBhcmFtZXRlcnMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45OGZiODhiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9nZW5lcmljc0hpZ2hsaWdodGluZy9FeHBsaWNpdE1ldGhvZFBhcmFtZXRlcnMuamF2YQpAQCAtMCwwICsxLDIwIEBACitpbXBvcnQgamF2YS51dGlsLio7CisKK2NsYXNzIEZvbyB7CisgIDxUPiB2b2lkIGZvbygpIHt9CisgIDxUMSBleHRlbmRzIExpc3QsIFQyPiB2b2lkIGZvbzEoKSB7fQorICB2b2lkIGJhcigpIHt9CisgIDxUPiB2b2lkIHh5eihUIGwpIHt9CisKKyAgeworICAgIGZvbygpOworICAgIHRoaXMuPFN0cmluZz5mb28oKTsKKyAgICB0aGlzLjxlcnJvciBkZXNjcj0iV3JvbmcgbnVtYmVyIG9mIHR5cGUgYXJndW1lbnRzOiAyOyByZXF1aXJlZDogMSI+PFN0cmluZywgSW50ZWdlcj48L2Vycm9yPmZvbygpOworICAgIHRoaXMuPGVycm9yIGRlc2NyPSJNZXRob2QgJ2JhcigpJyBkb2VzIG5vdCBoYXZlIHR5cGUgcGFyYW1ldGVycyI+PFN0cmluZz48L2Vycm9yPmJhcigpOworICAgIHRoaXMuPGVycm9yIGRlc2NyPSJNZXRob2QgJ2JhcigpJyBkb2VzIG5vdCBoYXZlIHR5cGUgcGFyYW1ldGVycyI+PFN0cmluZywgSW50ZWdlcj48L2Vycm9yPmJhcigpOworICAgIHRoaXMuPDxlcnJvciBkZXNjcj0iVHlwZSBwYXJhbWV0ZXIgJ2phdmEubGFuZy5TdHJpbmcnIGlzIG5vdCB3aXRoaW4gaXRzIGJvdW5kOyBzaG91bGQgaW1wbGVtZW50ICdqYXZhLnV0aWwuTGlzdCciPlN0cmluZzwvZXJyb3I+LCBJbnRlZ2VyPmZvbzEoKTsKKyAgICB0aGlzLjxTdHJpbmc+eHl6PGVycm9yIGRlc2NyPSIneHl6KGphdmEubGFuZy5TdHJpbmcpJyBpbiAnRm9vJyBjYW5ub3QgYmUgYXBwbGllZCB0byAnKGphdmEubGFuZy5JbnRlZ2VyKSciPihJbnRlZ2VyLnZhbHVlT2YoIjI3IikpPC9lcnJvcj47CisgICAgQXJyYXlMaXN0IGxpc3QgPSBuZXcgPGVycm9yIGRlc2NyPSJNZXRob2QgJ0FycmF5TGlzdCgpJyBkb2VzIG5vdCBoYXZlIHR5cGUgcGFyYW1ldGVycyI+PFN0cmluZz48L2Vycm9yPkFycmF5TGlzdDxTdHJpbmc+KCk7CisgIH0KK30KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9nZW5lcmljc0hpZ2hsaWdodGluZy9FeHBsaWNpdE1ldGhvZFBhcmFtZXRlcnMxLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2dlbmVyaWNzSGlnaGxpZ2h0aW5nL0V4cGxpY2l0TWV0aG9kUGFyYW1ldGVyczEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYzNkODNlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9nZW5lcmljc0hpZ2hsaWdodGluZy9FeHBsaWNpdE1ldGhvZFBhcmFtZXRlcnMxLmphdmEKQEAgLTAsMCArMSwxNSBAQAoraW1wb3J0IGphdmEudXRpbC4qOworCitjbGFzcyBGb28geworICBpbnRlcmZhY2UgQ29tcGFyYWJsZTxUPiB7IH0KKyAgc3RhdGljIDxUIGV4dGVuZHMgQ29tcGFyYWJsZTxUPj4gdm9pZCBzb3J0KFQgdCkge30KKworICBjbGFzcyBDIGltcGxlbWVudHMgQ29tcGFyYWJsZTxDPiB7fQorICBjbGFzcyBEIGltcGxlbWVudHMgQ29tcGFyYWJsZTxTdHJpbmc+IHt9CisKKyAgeworICAgIEZvby48Qz5zb3J0KG5ldyBDKCkpOworICAgIEZvby48PGVycm9yIGRlc2NyPSJUeXBlIHBhcmFtZXRlciAnRm9vLkQnIGlzIG5vdCB3aXRoaW4gaXRzIGJvdW5kOyBzaG91bGQgaW1wbGVtZW50ICdGb28uQ29tcGFyYWJsZTxGb28uRD4nIj5EPC9lcnJvcj4+c29ydChuZXcgRCgpKTsKKyAgfQorfQorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2dlbmVyaWNzSGlnaGxpZ2h0aW5nL0ZhaWxlZEluZmVyZW5jZVdpdGhCb3hpbmcuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvZ2VuZXJpY3NIaWdobGlnaHRpbmcvRmFpbGVkSW5mZXJlbmNlV2l0aEJveGluZy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMyOGJjNmIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2dlbmVyaWNzSGlnaGxpZ2h0aW5nL0ZhaWxlZEluZmVyZW5jZVdpdGhCb3hpbmcuamF2YQpAQCAtMCwwICsxLDEyIEBACitjbGFzcyBUZXN0IHsKKyAgICAgICAgcHVibGljIDxUPiBUIGRvU3R1ZmYoKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7CisgICAgICAgIH0KKyAgICAgICAgcHVibGljIGJvb2xlYW4gdGVzdCgpIHsKKyAgICAgICAgICAgICAgICA8ZXJyb3IgZGVzY3I9IkluY29tcGF0aWJsZSB0eXBlcy4gRm91bmQ6ICdqYXZhLmxhbmcuT2JqZWN0JywgcmVxdWlyZWQ6ICdib29sZWFuJyI+cmV0dXJuIGRvU3R1ZmYoKTs8L2Vycm9yPgorICAgICAgICB9CisgICAgICAgIAorICAgICAgICBwdWJsaWMgQm9vbGVhbiB0ZXN0MSgpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gZG9TdHVmZigpOworICAgICAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9nZW5lcmljc0hpZ2hsaWdodGluZy9GaWVsZHMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvZ2VuZXJpY3NIaWdobGlnaHRpbmcvRmllbGRzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTY4ZTRlNwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvZ2VuZXJpY3NIaWdobGlnaHRpbmcvRmllbGRzLmphdmEKQEAgLTAsMCArMSwxMCBAQAoraW1wb3J0IGphdmEudXRpbC4qOworCitjbGFzcyBDIHsKKyAgc3RhdGljIGZpbmFsIExpc3QgRU1QVFkgPSBuZXcgQXJyYXlMaXN0KDApOworCisgIHZvaWQgbSgpIHsKKyAgICBMaXN0PFN0cmluZz4gbGlzdCA9IEMuPGVycm9yIGRlc2NyPSJSZWZlcmVuY2UgcGFyYW1ldGVycyBhcmUgbm90IGFsbG93ZWQgaGVyZSI+PFN0cmluZz48L2Vycm9yPkVNUFRZOworICAgIFN5c3RlbS5vdXQucHJpbnRsbihsaXN0KTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvZ2VuZXJpY3NIaWdobGlnaHRpbmcvRml4ZWRGYWlsZWRJbmZlcmVuY2VXaXRoQm94aW5nLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2dlbmVyaWNzSGlnaGxpZ2h0aW5nL0ZpeGVkRmFpbGVkSW5mZXJlbmNlV2l0aEJveGluZy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE2N2FjNTEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2dlbmVyaWNzSGlnaGxpZ2h0aW5nL0ZpeGVkRmFpbGVkSW5mZXJlbmNlV2l0aEJveGluZy5qYXZhCkBAIC0wLDAgKzEsMTIgQEAKK2NsYXNzIFRlc3QgeworICAgICAgICBwdWJsaWMgPFQ+IFQgZG9TdHVmZigpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAgfQorICAgICAgICBwdWJsaWMgYm9vbGVhbiB0ZXN0KCkgeworICAgICAgICAgICAgICAgIHJldHVybiBkb1N0dWZmKCk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHB1YmxpYyBCb29sZWFuIHRlc3QxKCkgeworICAgICAgICAgICAgICAgIHJldHVybiBkb1N0dWZmKCk7CisgICAgICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2dlbmVyaWNzSGlnaGxpZ2h0aW5nL0ZsYXR0ZW5JbnRlcnNlY3Rpb25UeXBlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2dlbmVyaWNzSGlnaGxpZ2h0aW5nL0ZsYXR0ZW5JbnRlcnNlY3Rpb25UeXBlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGZmODVhMgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvZ2VuZXJpY3NIaWdobGlnaHRpbmcvRmxhdHRlbkludGVyc2VjdGlvblR5cGUuamF2YQpAQCAtMCwwICsxLDE2IEBACitpbnRlcmZhY2UgQnVzaW5lc3NFbnRpdHk8RSBleHRlbmRzIEJ1c2luZXNzRW50aXR5PEU+PiB7Cit9CisKK2ludGVyZmFjZSBFbnRpdHlJZDxFIGV4dGVuZHMgQnVzaW5lc3NFbnRpdHk+IHsKKyAgICBFIGdldEVudGl0eSgpOworfQorCitwdWJsaWMgY2xhc3MgTXlUZXN0IHsKKyAgICA8VCBleHRlbmRzIEJ1c2luZXNzRW50aXR5PFQ+PiBUIGdldEVudGl0eShFbnRpdHlJZDxUPiBkZWZhdWx0VmFsdWUpIHsKKyAgICAgICAgcmV0dXJuIGdldEVudGl0eUlEKGRlZmF1bHRWYWx1ZSkuZ2V0RW50aXR5KCk7CisgICAgfQorCisgICAgcHVibGljIDxQIGV4dGVuZHMgRW50aXR5SWQ8Pz4+IFAgZ2V0RW50aXR5SUQoUCBkZWZhdWx0VmFsdWUpIHsKKyAgICAgICAgcmV0dXJuIG51bGw7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvZ2VuZXJpY3NIaWdobGlnaHRpbmcvRm9yZWFjaFR5cGVzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2dlbmVyaWNzSGlnaGxpZ2h0aW5nL0ZvcmVhY2hUeXBlcy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM5ZmM4MjEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2dlbmVyaWNzSGlnaGxpZ2h0aW5nL0ZvcmVhY2hUeXBlcy5qYXZhCkBAIC0wLDAgKzEsMjkgQEAKK2NsYXNzIGEgeworICB2b2lkIGYoaW50W10gYykgeworICAgIGZvciAoaW50IGk6Yykge30KKyAgICBmb3IgKDxlcnJvciBkZXNjcj0iSW5jb21wYXRpYmxlIHR5cGVzLiBGb3VuZDogJ2ludCcsIHJlcXVpcmVkOiAnY2hhciciPmNoYXIgaTpjPC9lcnJvcj4pIHt9CisgICAgZm9yIChkb3VibGUgaTpjKSB7fQorICAgIGRvdWJsZVtdIGRiID0gbnVsbDsKKyAgICBmb3IgKDxlcnJvciBkZXNjcj0iSW5jb21wYXRpYmxlIHR5cGVzLiBGb3VuZDogJ2RvdWJsZScsIHJlcXVpcmVkOiAnaW50JyI+aW50IGk6ZGI8L2Vycm9yPikge30KKyAgICBmb3IgKGRvdWJsZSBpOmRiKSB7fQorCisgICAgamF2YS51dGlsLkxpc3QgbGlzdCA9IG51bGw7CisgICAgZm9yICg8ZXJyb3IgZGVzY3I9IkluY29tcGF0aWJsZSB0eXBlcy4gRm91bmQ6ICdqYXZhLmxhbmcuT2JqZWN0JywgcmVxdWlyZWQ6ICdqYXZhLmxhbmcuU3RyaW5nJyI+U3RyaW5nIGk6bGlzdDwvZXJyb3I+KSB7fQorICAgIGZvciAoT2JqZWN0IG86bGlzdCkge30KKworICAgIGphdmEudXRpbC5MaXN0PEludGVnZXI+IGN0ID0gbnVsbDsKKyAgICBmb3IgKE51bWJlciBuOmN0KSB7fQorICAgIGZvciAoT2JqZWN0IG46Y3QpIHt9CisgICAgZm9yIChJbnRlZ2VyIG46Y3QpIHt9CisgICAgZm9yICg8ZXJyb3IgZGVzY3I9IkluY29tcGF0aWJsZSB0eXBlcy4gRm91bmQ6ICdqYXZhLmxhbmcuSW50ZWdlcicsIHJlcXVpcmVkOiAnamF2YS5sYW5nLlN0cmluZyciPlN0cmluZyBpOmN0PC9lcnJvcj4pIHt9CisgICAgZm9yICg8ZXJyb3IgZGVzY3I9IkluY29tcGF0aWJsZSB0eXBlcy4gRm91bmQ6ICdqYXZhLmxhbmcuSW50ZWdlcicsIHJlcXVpcmVkOiAnamF2YS51dGlsLkxpc3Q8amF2YS5sYW5nLkludGVnZXI+JyI+amF2YS51dGlsLkxpc3Q8SW50ZWdlcj4gaTpjdDwvZXJyb3I+KSB7fQorCisgICAgT2JqZWN0IG8gPSBudWxsOworICAgIGZvciAoT2JqZWN0IG9pOiAoSXRlcmFibGUpbykge30KKworCisgICAgZm9yICg8ZXJyb3IgZGVzY3I9IkluY29tcGF0aWJsZSB0eXBlcy4gRm91bmQ6ICdkb3VibGUnLCByZXF1aXJlZDogJ2ludCciPmludCBpOmRiPC9lcnJvcj4pIHsKKyAgICAgIGZvciAoPGVycm9yIGRlc2NyPSJJbmNvbXBhdGlibGUgdHlwZXMuIEZvdW5kOiAnamF2YS5sYW5nLk9iamVjdCcsIHJlcXVpcmVkOiAnaW50JyI+aW50IHA6IGxpc3Q8L2Vycm9yPikge30KKyAgICB9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2dlbmVyaWNzSGlnaGxpZ2h0aW5nL0dlbmVyaWNFeHRlbmRFeGNlcHRpb24uamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvZ2VuZXJpY3NIaWdobGlnaHRpbmcvR2VuZXJpY0V4dGVuZEV4Y2VwdGlvbi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFiZWZjY2IKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2dlbmVyaWNzSGlnaGxpZ2h0aW5nL0dlbmVyaWNFeHRlbmRFeGNlcHRpb24uamF2YQpAQCAtMCwwICsxLDQgQEAKK2NsYXNzIFQgZXh0ZW5kcyBFeGNlcHRpb24ge30KK2NsYXNzIEU8VD4gZXh0ZW5kcyA8ZXJyb3IgZGVzY3I9IkdlbmVyaWMgY2xhc3MgbWF5IG5vdCBleHRlbmQgJ2phdmEubGFuZy5UaHJvd2FibGUnIj5FcnJvcjwvZXJyb3I+IHt9CitjbGFzcyBNPFQyIGV4dGVuZHMgRXhjZXB0aW9uPiBleHRlbmRzIDxlcnJvciBkZXNjcj0iR2VuZXJpYyBjbGFzcyBtYXkgbm90IGV4dGVuZCAnamF2YS5sYW5nLlRocm93YWJsZSciPlQ8L2Vycm9yPiB7fQorY2xhc3MgRXg8WCxZPiBleHRlbmRzIDxlcnJvciBkZXNjcj0iR2VuZXJpYyBjbGFzcyBtYXkgbm90IGV4dGVuZCAnamF2YS5sYW5nLlRocm93YWJsZSciPlRocm93YWJsZTwvZXJyb3I+IHt9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9nZW5lcmljc0hpZ2hsaWdodGluZy9JREVBNTcyNjQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvZ2VuZXJpY3NIaWdobGlnaHRpbmcvSURFQTU3MjY0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTEyMDEyNwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvZ2VuZXJpY3NIaWdobGlnaHRpbmcvSURFQTU3MjY0LmphdmEKQEAgLTAsMCArMSwxNyBAQAorY2xhc3MgQTE8VD4ge30KK2NsYXNzIEIxPFQgZXh0ZW5kcyBBMTw/IHN1cGVyIEExPD8gc3VwZXIgVD4+PnsKKyAgICB7CisgICAgICAgIFQgYSA9IG51bGw7CisgICAgICAgIDxlcnJvciBkZXNjcj0iSW5jb21wYXRpYmxlIHR5cGVzLiBGb3VuZDogJ1QnLCByZXF1aXJlZDogJ0ExPD8gc3VwZXIgVD4nIj5BMTw/IHN1cGVyIFQ+IGIgPSBhOzwvZXJyb3I+CisgICAgfQorfQorCitjbGFzcyBBPFQ+IHt9CitjbGFzcyBCPFQgZXh0ZW5kcyBBPD8gc3VwZXIgQTw/IHN1cGVyIFQ+Pj4geworCisgICAgdm9pZCBiYXIoVCB4KXsKKyAgICAgICAgZm9vKHgpOworICAgIH0KKyAgICB2b2lkIGZvbyhBPD8gc3VwZXIgVD4geCl7fQorICAgIHZvaWQgZm9vKE9iamVjdCB4KXt9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9nZW5lcmljc0hpZ2hsaWdodGluZy9JREVBNTcyNzUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvZ2VuZXJpY3NIaWdobGlnaHRpbmcvSURFQTU3Mjc1LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzExMWI4ZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvZ2VuZXJpY3NIaWdobGlnaHRpbmcvSURFQTU3Mjc1LmphdmEKQEAgLTAsMCArMSwxMyBAQAorYWJzdHJhY3QgY2xhc3MgQSB7CisgICAgYWJzdHJhY3QgPFMsIFQgZXh0ZW5kcyBJdGVyYWJsZTxTPj4gdm9pZCBmb28oKTsKKworICAgIHsKKyAgICAgICAgZm9vKCk7CisgICAgfQorfQorCitjbGFzcyBYeworICAgIDxUIGV4dGVuZHMgRW51bTxUPj4gdm9pZCBmb28oKXsKKyAgICAgICAgZm9vKCk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvZ2VuZXJpY3NIaWdobGlnaHRpbmcvSURFQTU3Mjg0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2dlbmVyaWNzSGlnaGxpZ2h0aW5nL0lERUE1NzI4NC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQxN2UyZjMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2dlbmVyaWNzSGlnaGxpZ2h0aW5nL0lERUE1NzI4NC5qYXZhCkBAIC0wLDAgKzEsNiBAQAorYWJzdHJhY3QgY2xhc3MgQTxTPiB7CisgICAgYWJzdHJhY3QgPFQgZXh0ZW5kcyBTPiB2b2lkIGZvbygpOworICAgIHZvaWQgYmFyKEE8PyBzdXBlciBFeGNlcHRpb24+IHgpeworICAgICAgICB4Ljw8ZXJyb3IgZGVzY3I9IlR5cGUgcGFyYW1ldGVyICdTdHJpbmdbXScgaXMgbm90IHdpdGhpbiBpdHMgYm91bmQ7IHNob3VsZCBleHRlbmQgJ2NhcHR1cmU8PyBzdXBlciBqYXZhLmxhbmcuRXhjZXB0aW9uPiciPlN0cmluZ1tdPC9lcnJvcj4+Zm9vKCk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvZ2VuZXJpY3NIaWdobGlnaHRpbmcvSURFQTU3Mjg2LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2dlbmVyaWNzSGlnaGxpZ2h0aW5nL0lERUE1NzI4Ni5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYyNmM3ODQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2dlbmVyaWNzSGlnaGxpZ2h0aW5nL0lERUE1NzI4Ni5qYXZhCkBAIC0wLDAgKzEsNiBAQAorY2xhc3MgQTxUPiB7CisgICAgPFMgZXh0ZW5kcyBBPD8gZXh0ZW5kcyBUPj4gdm9pZCBmb28oKXt9CisgICAgdm9pZCBiYXIoQTw/PiBhKXsKKyAgICAgICAgYS48PGVycm9yIGRlc2NyPSJUeXBlIHBhcmFtZXRlciAnQScgaXMgbm90IHdpdGhpbiBpdHMgYm91bmQ7IHNob3VsZCBleHRlbmQgJ0E8Y2FwdHVyZTw/Pj4nIj5BPD8+PC9lcnJvcj4+Zm9vKCk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvZ2VuZXJpY3NIaWdobGlnaHRpbmcvSURFQTU3MzA3LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2dlbmVyaWNzSGlnaGxpZ2h0aW5nL0lERUE1NzMwNy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMxY2E0ODIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2dlbmVyaWNzSGlnaGxpZ2h0aW5nL0lERUE1NzMwNy5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKK2NsYXNzIEM8PHdhcm5pbmcgZGVzY3I9IlR5cGUgcGFyYW1ldGVyICdUJyBpcyBuZXZlciB1c2VkIj5UPC93YXJuaW5nPj57fQorY2xhc3MgQTw8d2FybmluZyBkZXNjcj0iVHlwZSBwYXJhbWV0ZXIgJ1MnIGlzIG5ldmVyIHVzZWQiPlM8L3dhcm5pbmc+LDx3YXJuaW5nIGRlc2NyPSJUeXBlIHBhcmFtZXRlciAnVCcgaXMgbmV2ZXIgdXNlZCI+VDwvd2FybmluZz4+IHt9CitjbGFzcyBCPFMsVCBleHRlbmRzIEM8Uz4+IGV4dGVuZHMgQTxTLFQ+IHsKKyAgICB2b2lkIGZvbyhCPD8sPz4geCl7CisgICAgICAgIGJhcih4KTsKKyAgICB9CisgICAgPFMsIFQ+IHZvaWQgYmFyKEE8UyxUPiB4KXsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKHgpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2dlbmVyaWNzSGlnaGxpZ2h0aW5nL0lERUE1NzMwOC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9nZW5lcmljc0hpZ2hsaWdodGluZy9JREVBNTczMDguamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYTQ5ZDIxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9nZW5lcmljc0hpZ2hsaWdodGluZy9JREVBNTczMDguamF2YQpAQCAtMCwwICsxLDEzIEBACitjbGFzcyBBPFQ+IHt9CisKK2ludGVyZmFjZSBJQXsKKyAgICA8VD4gdm9pZCBmb28oQTw/IGV4dGVuZHMgVFtdPiB4KTsKK30KK2ludGVyZmFjZSBJQnsKKyAgICA8VD4gaW50IGZvbyhBPD8gZXh0ZW5kcyBUPiB4KTsKK30KK2NsYXNzIEMgeworICAgIDxUIGV4dGVuZHMgSUEgJiBJQj4gdm9pZCBiYXIoVCB4LCBBPFN0cmluZ1tdPiB5KXsKKyAgICAgICAgPGVycm9yIGRlc2NyPSJJbmNvbXBhdGlibGUgdHlwZXMuIEZvdW5kOiAndm9pZCcsIHJlcXVpcmVkOiAnaW50JyI+aW50IHogPSB4LmZvbyh5KTs8L2Vycm9yPgorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2dlbmVyaWNzSGlnaGxpZ2h0aW5nL0lERUE1NzMwOS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9nZW5lcmljc0hpZ2hsaWdodGluZy9JREVBNTczMDkuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZmI0MzE3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9nZW5lcmljc0hpZ2hsaWdodGluZy9JREVBNTczMDkuamF2YQpAQCAtMCwwICsxLDkgQEAKK2NsYXNzIEE8Uz4geworICAgIHZvaWQgYmFyKEE8PyBzdXBlciBFeGNlcHRpb24+IHgsIEE8PyBzdXBlciBUaHJvd2FibGU+IHkpeworICAgICAgICBmb28oeCwgeSk7CisgICAgfQorCisgICAgPFQ+IFQgZm9vKEE8PyBzdXBlciBUPiB4LCBBPD8gc3VwZXIgVD4geSl7CisgICAgICAgIHJldHVybiBudWxsOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvZ2VuZXJpY3NIaWdobGlnaHRpbmcvSURFQTU3MzEwLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2dlbmVyaWNzSGlnaGxpZ2h0aW5nL0lERUE1NzMxMC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQwNDU5NzIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2dlbmVyaWNzSGlnaGxpZ2h0aW5nL0lERUE1NzMxMC5qYXZhCkBAIC0wLDAgKzEsOSBAQAorY2xhc3MgQTxUPiB7CisgICAgRXhjZXB0aW9uW10gYmFyKEE8PyBzdXBlciBFeGNlcHRpb25bXT4geCwgQTw/IHN1cGVyIFRocm93YWJsZVtdPiB5KXsKKyAgICAgICAgcmV0dXJuIHRoaXMuZm9vKHgsIHkpOworICAgIH0KKworICAgIDxUPiBUIGZvbyhBPD8gc3VwZXIgVD4geCwgQTw/IHN1cGVyIFQ+IHkpeworICAgICAgICByZXR1cm4gbnVsbDsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9nZW5lcmljc0hpZ2hsaWdodGluZy9JREVBNTczMTEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvZ2VuZXJpY3NIaWdobGlnaHRpbmcvSURFQTU3MzExLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmJlOWE0ZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvZ2VuZXJpY3NIaWdobGlnaHRpbmcvSURFQTU3MzExLmphdmEKQEAgLTAsMCArMSwxMSBAQAorY2xhc3MgQTxUPiB7CisgICAgQTxBPD8gZXh0ZW5kcyBUPj4gZm9vKCl7CisgICAgICAgIHJldHVybiBudWxsOworICAgIH0KKworICAgIHZvaWQgYmFyKEE8Pz4geCl7CisgICAgICAgIGJhejxlcnJvciBkZXNjcj0iJ2JheihBPEE8Pz4+KScgaW4gJ0EnIGNhbm5vdCBiZSBhcHBsaWVkIHRvICcoQTxBPGNhcHR1cmU8Pz4+PiknIj4oeC5mb28oKSk8L2Vycm9yPjsKKyAgICB9CisKKyAgICA8Uz4gdm9pZCBiYXooQTxBPD8gZXh0ZW5kcyBTPj4geCl7fQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvZ2VuZXJpY3NIaWdobGlnaHRpbmcvSURFQTU3MzE1LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2dlbmVyaWNzSGlnaGxpZ2h0aW5nL0lERUE1NzMxNS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFkYWM5ZmUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2dlbmVyaWNzSGlnaGxpZ2h0aW5nL0lERUE1NzMxNS5qYXZhCkBAIC0wLDAgKzEsNCBAQAorY2xhc3MgQTxLPnsKKyAgICB2b2lkIGZvbyhBPEE8QTxTdHJpbmc+Pj4gYil7IDxlcnJvciBkZXNjcj0iSW5mZXJyZWQgdHlwZSAnQTxqYXZhLmxhbmcuU3RyaW5nPicgZm9yIHR5cGUgcGFyYW1ldGVyICdTJyBpcyBub3Qgd2l0aGluIGl0cyBib3VuZDsgc2hvdWxkIGV4dGVuZCAnQTxqYXZhLmxhbmcuT2JqZWN0PiciPmJhcihiKTwvZXJyb3I+OyB9CisgICAgPFUsIFMgZXh0ZW5kcyBBPFU+LCBUIGV4dGVuZHMgQTxTPj4gdm9pZCBiYXIoQTxUPiBhKXt9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9nZW5lcmljc0hpZ2hsaWdodGluZy9JREVBNTczMzkuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvZ2VuZXJpY3NIaWdobGlnaHRpbmcvSURFQTU3MzM5LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzk2NDE3NwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvZ2VuZXJpY3NIaWdobGlnaHRpbmcvSURFQTU3MzM5LmphdmEKQEAgLTAsMCArMSw3IEBACithYnN0cmFjdCBjbGFzcyBBIHsKKyAgICBhYnN0cmFjdCA8VCBleHRlbmRzIEl0ZXJhYmxlICYgQ2xvbmVhYmxlPiB2b2lkIGZvbygpOworfQorCithYnN0cmFjdCBjbGFzcyBCIGV4dGVuZHMgQXsKKyAgICBhYnN0cmFjdCA8VCBleHRlbmRzIENsb25lYWJsZSAmIEl0ZXJhYmxlPiB2b2lkIGZvbygpOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvZ2VuZXJpY3NIaWdobGlnaHRpbmcvSURFQTU3MzQwLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2dlbmVyaWNzSGlnaGxpZ2h0aW5nL0lERUE1NzM0MC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdiYmJhN2IKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2dlbmVyaWNzSGlnaGxpZ2h0aW5nL0lERUE1NzM0MC5qYXZhCkBAIC0wLDAgKzEsMjYgQEAKK2NsYXNzIEE8VCwgUz4geworfQorCitjbGFzcyBCPEw+IHsKKyAgICBBPEwsIEw+IGZvbygpIHsKKyAgICAgICAgcmV0dXJuIG51bGw7CisgICAgfQorCisgICAgdm9pZCBiYXIoQjw/PiBiLCBBPD8sID8+IGZvbzEpIHsKKyAgICAgICAgYmF6KGIuZm9vKCkpOworICAgICAgICBBPD8sID8+IGZvbyA9IGIuZm9vKCk7CisgICAgICAgIGJhejxlcnJvciBkZXNjcj0iJ2JheihBPEssSz4pJyBpbiAnQicgY2Fubm90IGJlIGFwcGxpZWQgdG8gJyhBPGNhcHR1cmU8Pz4sY2FwdHVyZTw/Pj4pJyI+KGZvbyk8L2Vycm9yPjsKKyAgICAgICAgYmF6PGVycm9yIGRlc2NyPSInYmF6KEE8SyxLPiknIGluICdCJyBjYW5ub3QgYmUgYXBwbGllZCB0byAnKEE8Y2FwdHVyZTw/PixjYXB0dXJlPD8+PiknIj4oZm9vMSk8L2Vycm9yPjsKKyAgICB9CisKKyAgICA8Sz4gdm9pZCBiYXooQTxLLCBLPiBhKSB7CisgICAgfQorfQorCisKKworY2xhc3MgQzxULFM+e30KK2NsYXNzIEQ8VD4gZXh0ZW5kcyBDPFQsVD4geworICAgIHZvaWQgZm9vKEQ8Pz4geCl7IGJhcih4KTsgfQorICAgIDxUPiB2b2lkIGJhcihDPFQsVD4geCl7fQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9nZW5lcmljc0hpZ2hsaWdodGluZy9JREVBNTczNDYuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvZ2VuZXJpY3NIaWdobGlnaHRpbmcvSURFQTU3MzQ2LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGQ4NWQ3MgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvZ2VuZXJpY3NIaWdobGlnaHRpbmcvSURFQTU3MzQ2LmphdmEKQEAgLTAsMCArMSw1IEBACisKK2NsYXNzIEQ8VD4gIHsKKyAgICB2b2lkIGZvbyhEPEQ8Pz4+IHgpeyB0aGlzLmJhcih4KTsgfQorICAgIDxUIGV4dGVuZHMgVGhyb3dhYmxlPiB2b2lkIGJhcihEPD8gc3VwZXIgRDxUPj4geCl7fQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvZ2VuZXJpY3NIaWdobGlnaHRpbmcvSURFQTU3Mzc4LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2dlbmVyaWNzSGlnaGxpZ2h0aW5nL0lERUE1NzM3OC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU0MTA3OWUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2dlbmVyaWNzSGlnaGxpZ2h0aW5nL0lERUE1NzM3OC5qYXZhCkBAIC0wLDAgKzEsOSBAQAoraW50ZXJmYWNlIElBIHsKKyAgICA8VCBleHRlbmRzIENsb25lYWJsZSAmIEl0ZXJhYmxlPiB2b2lkIGZvbyhUIHgpOworICAgIDxUIGV4dGVuZHMgSXRlcmFibGUgJiBDbG9uZWFibGU+IHZvaWQgZm9vKFQgeCk7Cit9CisKK2Fic3RyYWN0IGNsYXNzIEE8VCBleHRlbmRzIFRocm93YWJsZT4geworICAgIGFic3RyYWN0IDxUIGV4dGVuZHMgQ29tcGFyYWJsZTw/PiAmIEl0ZXJhYmxlPiB2b2lkIGZvbyhUIHgsIEE8Pz4geSk7CisgICAgYWJzdHJhY3QgPFQgZXh0ZW5kcyBJdGVyYWJsZSAmIENvbXBhcmFibGU8Pz4+IHZvaWQgZm9vKFQgeCwgQTw/IGV4dGVuZHMgVGhyb3dhYmxlPiB5KTsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2dlbmVyaWNzSGlnaGxpZ2h0aW5nL0lERUE1NzQxMC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9nZW5lcmljc0hpZ2hsaWdodGluZy9JREVBNTc0MTAuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45M2VmZWE1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9nZW5lcmljc0hpZ2hsaWdodGluZy9JREVBNTc0MTAuamF2YQpAQCAtMCwwICsxLDEwIEBACisKK2ludGVyZmFjZSBJQSB7CisgICAgPFQ+IHZvaWQgYShJdGVyYWJsZTxTdHJpbmc+IHgpOworfQorCitpbnRlcmZhY2UgSUIgeworICAgIDxUPiB2b2lkIGEoSXRlcmFibGUgeCk7Cit9CisKKzxlcnJvciBkZXNjcj0iJ2EoSXRlcmFibGUpJyBpbiAnSUInIGNsYXNoZXMgd2l0aCAnYShJdGVyYWJsZTxTdHJpbmc+KScgaW4gJ0lBJzsgYm90aCBtZXRob2RzIGhhdmUgc2FtZSBlcmFzdXJlLCB5ZXQgbmVpdGhlciBvdmVycmlkZXMgdGhlIG90aGVyIj5hYnN0cmFjdCBjbGFzcyBDIGltcGxlbWVudHMgSUEsIElCPC9lcnJvcj4ge30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2dlbmVyaWNzSGlnaGxpZ2h0aW5nL0lERUE1NzQxMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9nZW5lcmljc0hpZ2hsaWdodGluZy9JREVBNTc0MTEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wY2E2ZjZlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9nZW5lcmljc0hpZ2hsaWdodGluZy9JREVBNTc0MTEuamF2YQpAQCAtMCwwICsxLDE4IEBACitjbGFzcyBBPFM+IHsKKyAgICA8VD4gVCBmb28oVCB4LCBTIHkpeworICAgICAgICByZXR1cm4geDsKKyAgICB9Cit9CisKK2NsYXNzIEI8Uz4gZXh0ZW5kcyBBPFM+IHsKKyAgICBPYmplY3QgZm9vKE9iamVjdCB4LCBPYmplY3QgeSl7CisgICAgICAgIHJldHVybiB4OworICAgIH0KK30KKworPGVycm9yIGRlc2NyPSInZm9vKFQsIFMpJyBpbiAnQScgY2xhc2hlcyB3aXRoICdmb28oT2JqZWN0LCBPYmplY3QpJyBpbiAnQic7IGJvdGggbWV0aG9kcyBoYXZlIHNhbWUgZXJhc3VyZSwgeWV0IG5laXRoZXIgb3ZlcnJpZGVzIHRoZSBvdGhlciI+Y2xhc3MgQyBleHRlbmRzIEI8U3RyaW5nPjwvZXJyb3I+IHsKKyAgICBAT3ZlcnJpZGUKKyAgICA8VD4gVCBmb28oVCB4LCBTdHJpbmcgeSkgeworICAgICAgICA8ZXJyb3IgZGVzY3I9IkluY29tcGF0aWJsZSB0eXBlcy4gRm91bmQ6ICdqYXZhLmxhbmcuT2JqZWN0JywgcmVxdWlyZWQ6ICdUJyI+cmV0dXJuIHN1cGVyLmZvbyh4LCB5KTs8L2Vycm9yPgorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2dlbmVyaWNzSGlnaGxpZ2h0aW5nL0lERUE1NzQ4NC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9nZW5lcmljc0hpZ2hsaWdodGluZy9JREVBNTc0ODQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44Mzc5ZWU1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9nZW5lcmljc0hpZ2hsaWdodGluZy9JREVBNTc0ODQuamF2YQpAQCAtMCwwICsxLDcgQEAKK2Fic3RyYWN0IGNsYXNzIEN7CisgICAgYWJzdHJhY3QgPFQ+IFQgZm9vKFQgeCwgVCB5KTsKKworICAgIHsKKyAgICAgICAgTG9uZyBzID0gKExvbmcpIGZvbygxLDFMKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9nZW5lcmljc0hpZ2hsaWdodGluZy9JREVBNTc0ODUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvZ2VuZXJpY3NIaWdobGlnaHRpbmcvSURFQTU3NDg1LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGZjZWI2OQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvZ2VuZXJpY3NIaWdobGlnaHRpbmcvSURFQTU3NDg1LmphdmEKQEAgLTAsMCArMSw5IEBACithYnN0cmFjdCBjbGFzcyBBeworICAgIGFic3RyYWN0IDxTIGV4dGVuZHMgTnVtYmVyICYgQ29tcGFyYWJsZTw/PiwgVCBleHRlbmRzIE51bWJlciAmIENvbXBhcmFibGU8PyBleHRlbmRzIFM+PiBUIGZvbygKKyAgICAgICAgICAgIENvbXBhcmFibGU8PyBleHRlbmRzIFQ+IHgsCisgICAgICAgICAgICBDb21wYXJhYmxlPD8gZXh0ZW5kcyBUPiB5KTsKKworICAgIHsKKyAgICAgICAgZm9vKDEsIDFMKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9nZW5lcmljc0hpZ2hsaWdodGluZy9JREVBNTc0ODYuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvZ2VuZXJpY3NIaWdobGlnaHRpbmcvSURFQTU3NDg2LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDk0MmVkZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvZ2VuZXJpY3NIaWdobGlnaHRpbmcvSURFQTU3NDg2LmphdmEKQEAgLTAsMCArMSw4IEBACitjbGFzcyBCPFQsUz57fQorYWJzdHJhY3QgY2xhc3MgQTxUPiB7CisgICAgYWJzdHJhY3QgQjxULFQ+IGZvbygpOworICAgIDxUPiB2b2lkIGJheihCPFQsVD4gYil7fQorICAgIHZvaWQgYmFyKEE8Pz4gYSl7CisgICAgICAgIGJheihhLmZvbygpKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9nZW5lcmljc0hpZ2hsaWdodGluZy9JREVBNTc0OTIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvZ2VuZXJpY3NIaWdobGlnaHRpbmcvSURFQTU3NDkyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWNkNDAyYQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvZ2VuZXJpY3NIaWdobGlnaHRpbmcvSURFQTU3NDkyLmphdmEKQEAgLTAsMCArMSwxNyBAQAorYWJzdHJhY3QgY2xhc3MgQTxUPnsKKyAgICBhYnN0cmFjdCA8Uz4gUyBmb28oUyB4LCBTIHkpOworICAgIDxTIGV4dGVuZHMgTnVtYmVyICYgQ29tcGFyYWJsZTw/IGV4dGVuZHMgTnVtYmVyPj4gdm9pZCBiYXooQTxTPiBhKXt9CisKKyAgICB2b2lkIGJhcihBPExvbmc+IHgsIEE8SW50ZWdlcj4geSl7CisgICAgICAgIGJheihmb28oeCwgeSkpOworICAgIH0KK30KKworYWJzdHJhY3QgY2xhc3MgQTE8VD57CisgICAgYWJzdHJhY3QgPFM+IFMgZm9vKFMgeCwgUyB5KTsKKyAgICA8VCBleHRlbmRzIE51bWJlciAmIENvbXBhcmFibGU8Pz4sIFMgZXh0ZW5kcyBOdW1iZXIgJiBDb21wYXJhYmxlPD8gZXh0ZW5kcyBUPj4gdm9pZCBiYXooQTE8Uz4gYSl7fQorCisgICAgdm9pZCBiYXIoQTE8TG9uZz4geCwgQTE8SW50ZWdlcj4geSl7CisgICAgICAgIGJheihmb28oeCwgeSkpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2dlbmVyaWNzSGlnaGxpZ2h0aW5nL0lERUE1NzQ5My5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9nZW5lcmljc0hpZ2hsaWdodGluZy9JREVBNTc0OTMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iODcyMGI4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9nZW5lcmljc0hpZ2hsaWdodGluZy9JREVBNTc0OTMuamF2YQpAQCAtMCwwICsxLDggQEAKK2Fic3RyYWN0IGNsYXNzIEE8VD57CisgICAgYWJzdHJhY3QgPFM+IFMgZm9vKFMgeCwgUyB5KTsKKyAgICA8UyBleHRlbmRzIE51bWJlciAmIENvbXBhcmFibGU8Pz4+IHZvaWQgYmF6KEE8Uz4gYSl7fQorCisgICAgdm9pZCBiYXIoQTxMb25nPiB4LCBBPEludGVnZXI+IHkpeworICAgICAgICBiYXooZm9vKHgsIHkpKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9nZW5lcmljc0hpZ2hsaWdodGluZy9JREVBNTc0OTQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvZ2VuZXJpY3NIaWdobGlnaHRpbmcvSURFQTU3NDk0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzcwMTgyZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvZ2VuZXJpY3NIaWdobGlnaHRpbmcvSURFQTU3NDk0LmphdmEKQEAgLTAsMCArMSwxNiBAQAoraW1wb3J0IGphdmEudXRpbC4qOworYWJzdHJhY3QgY2xhc3MgQSB7CisgICAgYWJzdHJhY3QgPFQ+IFQgYmF6KExpc3Q8PyBzdXBlciBMaXN0PD8gc3VwZXIgVD4+IGEpOworCisgICAgdm9pZCBiYXIoTGlzdDxMaXN0PD8+PiB4KXsKKyAgICAgICAgU3RyaW5nIHMgPSBiYXooeCk7CisgICAgfQorfQorCithYnN0cmFjdCBjbGFzcyBBMXsKKyAgICBhYnN0cmFjdCA8VD4gVCBiYXooTGlzdDw/IHN1cGVyIFQ+IGEpOworCisgICAgdm9pZCBiYXIoTGlzdDw/PiB4KXsKKyAgICAgICAgU3RyaW5nIG8gPSBiYXo8ZXJyb3IgZGVzY3I9IidiYXooamF2YS51dGlsLkxpc3Q8PyBzdXBlciBqYXZhLmxhbmcuU3RyaW5nPiknIGluICdBMScgY2Fubm90IGJlIGFwcGxpZWQgdG8gJyhqYXZhLnV0aWwuTGlzdDxjYXB0dXJlPD8+PiknIj4oeCk8L2Vycm9yPjsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9nZW5lcmljc0hpZ2hsaWdodGluZy9JREVBNTc0OTUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvZ2VuZXJpY3NIaWdobGlnaHRpbmcvSURFQTU3NDk1LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjkxZDQwNAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvZ2VuZXJpY3NIaWdobGlnaHRpbmcvSURFQTU3NDk1LmphdmEKQEAgLTAsMCArMSw5IEBACitpbXBvcnQgamF2YS51dGlsLio7CitpbnRlcmZhY2UgQzxUPiBleHRlbmRzIExpc3Q8TGlzdDxUPj57fQorYWJzdHJhY3QgY2xhc3MgQSB7CisgICAgYWJzdHJhY3QgPFQ+IFQgYmF6KExpc3Q8PyBzdXBlciBMaXN0PD8gc3VwZXIgVD4+IGEpOworCisgICAgdm9pZCBiYXIoQzw/PiB4KXsKKyAgICAgICAgYmF6PGVycm9yIGRlc2NyPSInYmF6KGphdmEudXRpbC5MaXN0PD8gc3VwZXIgamF2YS51dGlsLkxpc3Q8PyBzdXBlciBqYXZhLmxhbmcuT2JqZWN0Pj4pJyBpbiAnQScgY2Fubm90IGJlIGFwcGxpZWQgdG8gJyhDPGNhcHR1cmU8Pz4+KSciPih4KTwvZXJyb3I+OworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2dlbmVyaWNzSGlnaGxpZ2h0aW5nL0lERUE1NzQ5Ni5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9nZW5lcmljc0hpZ2hsaWdodGluZy9JREVBNTc0OTYuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNTBiOGZjMQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvZ2VuZXJpY3NIaWdobGlnaHRpbmcvSURFQTU3NDk2LmphdmEKQEAgLTAsMCArMSwxMSBAQAoraW50ZXJmYWNlIEk8VD57fQoraW50ZXJmYWNlIEEgZXh0ZW5kcyBJPEFbXT57fQoraW50ZXJmYWNlIEIgZXh0ZW5kcyBJPEJbXT57fQorCithYnN0cmFjdCBjbGFzcyBjeworICAgIGFic3RyYWN0IDxUPiBUIGJheihUIHgsIFQgeSk7CisKKyAgICB2b2lkIGJhcihBIHgsIEIgeSl7CisgICAgICAgIGJheih4LCB5KTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9nZW5lcmljc0hpZ2hsaWdodGluZy9JREVBNTc1MDkuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvZ2VuZXJpY3NIaWdobGlnaHRpbmcvSURFQTU3NTA5LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODAxNWZiNQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvZ2VuZXJpY3NIaWdobGlnaHRpbmcvSURFQTU3NTA5LmphdmEKQEAgLTAsMCArMSw5IEBACitpbXBvcnQgamF2YS51dGlsLkxpc3Q7CisKK2Fic3RyYWN0IGNsYXNzIFggeworICAgIGFic3RyYWN0IDxUPiB2b2lkIGNvcHkoTGlzdDxUPiBkZXN0LCBMaXN0PD8gZXh0ZW5kcyBUPiBzcmMpOworCisgICAgdm9pZCBmb28oTGlzdDw/IHN1cGVyIFRocm93YWJsZT4geCwgTGlzdDw/IGV4dGVuZHMgRXhjZXB0aW9uPiB5KXsKKyAgICAgICAgY29weSh4LCB5KTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9nZW5lcmljc0hpZ2hsaWdodGluZy9JREVBNTc1MzMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvZ2VuZXJpY3NIaWdobGlnaHRpbmcvSURFQTU3NTMzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWJmODY3NAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvZ2VuZXJpY3NIaWdobGlnaHRpbmcvSURFQTU3NTMzLmphdmEKQEAgLTAsMCArMSw2IEBACitjbGFzcyBDPFQgZXh0ZW5kcyBDPD8gZXh0ZW5kcyBDPD8gZXh0ZW5kcyBUPj4+eworICAgIHZvaWQgZm9vKEM8Pz4geCl7CisgICAgICAgIDxlcnJvciBkZXNjcj0iSW5mZXJyZWQgdHlwZSAnPyBleHRlbmRzIEM8PyBleHRlbmRzIEM8Y2FwdHVyZTw/Pj4+JyBmb3IgdHlwZSBwYXJhbWV0ZXIgJ1QnIGlzIG5vdCB3aXRoaW4gaXRzIGJvdW5kOyBzaG91bGQgZXh0ZW5kICdDPD8gZXh0ZW5kcyBDPD8gZXh0ZW5kcyBDPGNhcHR1cmU8Pz4+Pj4nIj5iYXIoeCk8L2Vycm9yPjsKKyAgICB9CisgICAgPFQgZXh0ZW5kcyBDPD8gZXh0ZW5kcyBUPj4gdm9pZCBiYXIoQzxUPiB4KXt9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9nZW5lcmljc0hpZ2hsaWdodGluZy9JREVBNTc1MzkuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvZ2VuZXJpY3NIaWdobGlnaHRpbmcvSURFQTU3NTM5LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2ZhYWY1OQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvZ2VuZXJpY3NIaWdobGlnaHRpbmcvSURFQTU3NTM5LmphdmEKQEAgLTAsMCArMSwxMyBAQAorY2xhc3MgRTxUPiB7CisgICAgQ2xhc3M8VFtdPiBvID0gPGVycm9yIGRlc2NyPSJDYW5ub3Qgc2VsZWN0IGZyb20gYSB0eXBlIHZhcmlhYmxlIj5UW108L2Vycm9yPi5jbGFzczsKK30KKworY2xhc3MgTXlDbGFzczxUPiB7CisgICAgQ2xhc3M8VFtdPiBnZXRUcygpIHsKKyAgICAgICAgcmV0dXJuIDxlcnJvciBkZXNjcj0iQ2Fubm90IHNlbGVjdCBmcm9tIGEgdHlwZSB2YXJpYWJsZSI+VFtdPC9lcnJvcj4uY2xhc3M7CisgICAgfQorCisgICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgeworICAgICAgICBuZXcgTXlDbGFzczxTdHJpbmc+KCkuZ2V0VHMoKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9nZW5lcmljc0hpZ2hsaWdodGluZy9JREVBNTc1NTcuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvZ2VuZXJpY3NIaWdobGlnaHRpbmcvSURFQTU3NTU3LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTZlZmVjMQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvZ2VuZXJpY3NIaWdobGlnaHRpbmcvSURFQTU3NTU3LmphdmEKQEAgLTAsMCArMSw3IEBACithYnN0cmFjdCBjbGFzcyBBIHsKKyAgICBhYnN0cmFjdCB2b2lkIGZvbyhFbnVtPD8+IHgpOworfQorCitjbGFzcyBCIGV4dGVuZHMgQSB7CisgICAgdm9pZCBmb28oRW51bTw/IGV4dGVuZHMgRW51bTw/Pj4geCkgeyB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9nZW5lcmljc0hpZ2hsaWdodGluZy9JREVBNTc1NjMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvZ2VuZXJpY3NIaWdobGlnaHRpbmcvSURFQTU3NTYzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYThjYjIzOQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvZ2VuZXJpY3NIaWdobGlnaHRpbmcvSURFQTU3NTYzLmphdmEKQEAgLTAsMCArMSw3IEBACitjbGFzcyBDIHsKKyAgICB2b2lkIGZvbygpe30KK30KKworY2xhc3MgRCBleHRlbmRzIEN7CisgICAgc3RhdGljIDxUPiB2b2lkIGZvbygpe30KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2dlbmVyaWNzSGlnaGxpZ2h0aW5nL0lERUE1NzY1MC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9nZW5lcmljc0hpZ2hsaWdodGluZy9JREVBNTc2NTAuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZjViYjczCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9nZW5lcmljc0hpZ2hsaWdodGluZy9JREVBNTc2NTAuamF2YQpAQCAtMCwwICsxLDcgQEAKK2Fic3RyYWN0IGNsYXNzIEEgeworICAgIGFic3RyYWN0IDxUPiBUIGZvbygpOworCisgICAgeworICAgICAgICBpbnQgeCA9IGZvbygpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2dlbmVyaWNzSGlnaGxpZ2h0aW5nL0lERUE1NzY2Ny5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9nZW5lcmljc0hpZ2hsaWdodGluZy9JREVBNTc2NjcuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZjI3ZmEwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9nZW5lcmljc0hpZ2hsaWdodGluZy9JREVBNTc2NjcuamF2YQpAQCAtMCwwICsxLDcgQEAKK2NsYXNzIEEgeworICAgIDxUPiBBKFQgeCkge30KKworICAgIHsKKyAgICAgICAgbmV3IDw8ZXJyb3IgZGVzY3I9IkFjdHVhbCB0eXBlIGFyZ3VtZW50IGFuZCBpbmZlcnJlZCB0eXBlIGNvbnRyYWRpY3QgZWFjaCBvdGhlciI+U3RyaW5nPC9lcnJvcj4+QSgxKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9nZW5lcmljc0hpZ2hsaWdodGluZy9JREVBNTc2NjguamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvZ2VuZXJpY3NIaWdobGlnaHRpbmcvSURFQTU3NjY4LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2M0OTE2MgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvZ2VuZXJpY3NIaWdobGlnaHRpbmcvSURFQTU3NjY4LmphdmEKQEAgLTAsMCArMSwxNyBAQAorY2xhc3MgQSB7CisgICAgPFQ+IEEoKSB7fQorCisgICAgeworICAgICAgICBuZXcgPDxlcnJvciBkZXNjcj0iVHlwZSBhcmd1bWVudCBjYW5ub3QgYmUgb2YgcHJpbWl0aXZlIHR5cGUiPmludDwvZXJyb3I+PkEoKTsKKyAgICB9Cit9CisKK2NsYXNzIEI8VD4geworICAgIHsKKyAgICAgICAgbmV3IEI8PGVycm9yIGRlc2NyPSJUeXBlIGFyZ3VtZW50IGNhbm5vdCBiZSBvZiBwcmltaXRpdmUgdHlwZSI+aW50PC9lcnJvcj4+KCk7CisgICAgICAgIEIuPDxlcnJvciBkZXNjcj0iVHlwZSBhcmd1bWVudCBjYW5ub3QgYmUgb2YgcHJpbWl0aXZlIHR5cGUiPmludDwvZXJyb3I+Pm0oKTsKKyAgICB9CisKKyAgICA8Uz4gdm9pZCBtKCl7fQorCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9nZW5lcmljc0hpZ2hsaWdodGluZy9JREVBNjMyOTEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvZ2VuZXJpY3NIaWdobGlnaHRpbmcvSURFQTYzMjkxLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzM0M2RiNwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvZ2VuZXJpY3NIaWdobGlnaHRpbmcvSURFQTYzMjkxLmphdmEKQEAgLTAsMCArMSw1NyBAQAoraW1wb3J0IGphdmEudXRpbC5Db21wYXJhdG9yOworaW1wb3J0IGphdmEudXRpbC5TZXQ7CisKK3B1YmxpYyBjbGFzcyBDYXN0RXJyb3IgeworICAgIHB1YmxpYyB2b2lkIGZvbyhDb21wYXJhdG9yPD8gc3VwZXIgYnl0ZVtdPiBjb21wYXJhdG9yKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgICAgTXlDb21wYXJhdG9yIGNvbXBhcmF0b3IxID0gKE15Q29tcGFyYXRvcikgY29tcGFyYXRvcjsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBmb28xKENvbXBhcmF0b3I8Ynl0ZVtdPiBjb21wYXJhdG9yKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgICAgTXlDb21wYXJhdG9yIGNvbXBhcmF0b3IxID0gKE15Q29tcGFyYXRvcikgY29tcGFyYXRvcjsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBmb28yKENvbXBhcmF0b3I8PyBleHRlbmRzIGJ5dGVbXT4gY29tcGFyYXRvcikgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgICAgIE15Q29tcGFyYXRvciBjb21wYXJhdG9yMSA9IChNeUNvbXBhcmF0b3IpIGNvbXBhcmF0b3I7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgZm9vMyhDb21wYXJhdG9yPD8gc3VwZXIgU3RyaW5nW10+IGNvbXBhcmF0b3IpIHRocm93cyBFeGNlcHRpb24geworICAgICAgICBNeUNvbXBhcmF0b3IgY29tcGFyYXRvcjEgPSA8ZXJyb3IgZGVzY3I9IkluY29udmVydGlibGUgdHlwZXM7IGNhbm5vdCBjYXN0ICdqYXZhLnV0aWwuQ29tcGFyYXRvcjxjYXB0dXJlPD8gc3VwZXIgamF2YS5sYW5nLlN0cmluZ1tdPj4nIHRvICdNeUNvbXBhcmF0b3InIj4oTXlDb21wYXJhdG9yKSBjb21wYXJhdG9yPC9lcnJvcj47CisgICAgfQorCisgICAgcHVibGljIHZvaWQgZm9vNChDb21wYXJhdG9yPD8gZXh0ZW5kcyBTdHJpbmdbXT4gY29tcGFyYXRvcikgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgICAgIE15Q29tcGFyYXRvciBjb21wYXJhdG9yMSA9IDxlcnJvciBkZXNjcj0iSW5jb252ZXJ0aWJsZSB0eXBlczsgY2Fubm90IGNhc3QgJ2phdmEudXRpbC5Db21wYXJhdG9yPGNhcHR1cmU8PyBleHRlbmRzIGphdmEubGFuZy5TdHJpbmdbXT4+JyB0byAnTXlDb21wYXJhdG9yJyI+KE15Q29tcGFyYXRvcikgY29tcGFyYXRvcjwvZXJyb3I+OworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIGZvbzUoQ29tcGFyYXRvcjw/PiBjb21wYXJhdG9yKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgICAgTXlDb21wYXJhdG9yIGNvbXBhcmF0b3IxID0gKE15Q29tcGFyYXRvcikgY29tcGFyYXRvcjsKKyAgICB9CisKKyAgICAvLy0tfHwtLXx8LS18fC0tfHwtLXx8LS18fC0tfHwtLXx8LS18fC0tfHwtLXx8LS18fC0tfHwtLXx8LS18fC0tfHwtLXx8LS18fC0tCisKKyAgICBwdWJsaWMgdm9pZCBzZm9vKFNldDxDb21wYXJhdG9yPD8gc3VwZXIgYnl0ZVtdPj4gY29tcGFyYXRvcikgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgICAgIFNldDxNeUNvbXBhcmF0b3I+IGNvbXBhcmF0b3IxID0gPGVycm9yIGRlc2NyPSJJbmNvbnZlcnRpYmxlIHR5cGVzOyBjYW5ub3QgY2FzdCAnamF2YS51dGlsLlNldDxqYXZhLnV0aWwuQ29tcGFyYXRvcjw/IHN1cGVyIGJ5dGVbXT4+JyB0byAnamF2YS51dGlsLlNldDxNeUNvbXBhcmF0b3I+JyI+KFNldDxNeUNvbXBhcmF0b3I+KSBjb21wYXJhdG9yPC9lcnJvcj47CisgICAgfQorCisgICAgcHVibGljIHZvaWQgc2ZvbzEoU2V0PENvbXBhcmF0b3I8Ynl0ZVtdPj4gY29tcGFyYXRvcikgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgICAgIFNldDxNeUNvbXBhcmF0b3I+IGNvbXBhcmF0b3IxID0gPGVycm9yIGRlc2NyPSJJbmNvbnZlcnRpYmxlIHR5cGVzOyBjYW5ub3QgY2FzdCAnamF2YS51dGlsLlNldDxqYXZhLnV0aWwuQ29tcGFyYXRvcjxieXRlW10+PicgdG8gJ2phdmEudXRpbC5TZXQ8TXlDb21wYXJhdG9yPiciPihTZXQ8TXlDb21wYXJhdG9yPikgY29tcGFyYXRvcjwvZXJyb3I+OworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNmb28yKFNldDxDb21wYXJhdG9yPD8gZXh0ZW5kcyBieXRlW10+PiBjb21wYXJhdG9yKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgICAgU2V0PE15Q29tcGFyYXRvcj4gY29tcGFyYXRvcjEgPSA8ZXJyb3IgZGVzY3I9IkluY29udmVydGlibGUgdHlwZXM7IGNhbm5vdCBjYXN0ICdqYXZhLnV0aWwuU2V0PGphdmEudXRpbC5Db21wYXJhdG9yPD8gZXh0ZW5kcyBieXRlW10+PicgdG8gJ2phdmEudXRpbC5TZXQ8TXlDb21wYXJhdG9yPiciPihTZXQ8TXlDb21wYXJhdG9yPikgY29tcGFyYXRvcjwvZXJyb3I+OworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNmb28zKFNldDxDb21wYXJhdG9yPD8gc3VwZXIgU3RyaW5nW10+PiBjb21wYXJhdG9yKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgICAgU2V0PE15Q29tcGFyYXRvcj4gY29tcGFyYXRvcjEgPSA8ZXJyb3IgZGVzY3I9IkluY29udmVydGlibGUgdHlwZXM7IGNhbm5vdCBjYXN0ICdqYXZhLnV0aWwuU2V0PGphdmEudXRpbC5Db21wYXJhdG9yPD8gc3VwZXIgamF2YS5sYW5nLlN0cmluZ1tdPj4nIHRvICdqYXZhLnV0aWwuU2V0PE15Q29tcGFyYXRvcj4nIj4oU2V0PE15Q29tcGFyYXRvcj4pIGNvbXBhcmF0b3I8L2Vycm9yPjsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZm9vNChTZXQ8Q29tcGFyYXRvcjw/IGV4dGVuZHMgU3RyaW5nW10+PiBjb21wYXJhdG9yKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgICAgU2V0PE15Q29tcGFyYXRvcj4gY29tcGFyYXRvcjEgPSA8ZXJyb3IgZGVzY3I9IkluY29udmVydGlibGUgdHlwZXM7IGNhbm5vdCBjYXN0ICdqYXZhLnV0aWwuU2V0PGphdmEudXRpbC5Db21wYXJhdG9yPD8gZXh0ZW5kcyBqYXZhLmxhbmcuU3RyaW5nW10+PicgdG8gJ2phdmEudXRpbC5TZXQ8TXlDb21wYXJhdG9yPiciPihTZXQ8TXlDb21wYXJhdG9yPikgY29tcGFyYXRvcjwvZXJyb3I+OworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNmb281KFNldDxDb21wYXJhdG9yPD8+PiBjb21wYXJhdG9yKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgICAgU2V0PE15Q29tcGFyYXRvcj4gY29tcGFyYXRvcjEgPSA8ZXJyb3IgZGVzY3I9IkluY29udmVydGlibGUgdHlwZXM7IGNhbm5vdCBjYXN0ICdqYXZhLnV0aWwuU2V0PGphdmEudXRpbC5Db21wYXJhdG9yPD8+PicgdG8gJ2phdmEudXRpbC5TZXQ8TXlDb21wYXJhdG9yPiciPihTZXQ8TXlDb21wYXJhdG9yPikgY29tcGFyYXRvcjwvZXJyb3I+OworICAgIH0KK30KKworYWJzdHJhY3QgY2xhc3MgTXlDb21wYXJhdG9yIGltcGxlbWVudHMgQ29tcGFyYXRvcjxieXRlW10+IHsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2dlbmVyaWNzSGlnaGxpZ2h0aW5nL0lERUE2NjMxMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9nZW5lcmljc0hpZ2hsaWdodGluZy9JREVBNjYzMTEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNjdhYzY1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9nZW5lcmljc0hpZ2hsaWdodGluZy9JREVBNjYzMTEuamF2YQpAQCAtMCwwICsxLDIxIEBACitpbXBvcnQgamF2YS51dGlsLio7CisKK2NsYXNzIEVyYXN1cmVUZXN0IHsKKyAgPGVycm9yIGRlc2NyPSIndG9BcnJheURvdWJsZShMaXN0PD8gZXh0ZW5kcyBOdW1iZXI+KScgY2xhc2hlcyB3aXRoICd0b0FycmF5RG91YmxlKExpc3Q8ZG91YmxlW10+KSc7IGJvdGggbWV0aG9kcyBoYXZlIHNhbWUgZXJhc3VyZSI+cHVibGljIHN0YXRpYyBkb3VibGVbXSB0b0FycmF5RG91YmxlKExpc3Q8PyBleHRlbmRzIE51bWJlcj4gdik8L2Vycm9yPiB7CisgICAgcmV0dXJuIG51bGw7CisgIH0KKworICBwdWJsaWMgc3RhdGljIGRvdWJsZVtdW10gdG9BcnJheURvdWJsZShMaXN0PGRvdWJsZVtdPiB2KSB7CisgICAgcmV0dXJuIG51bGw7CisgIH0KK30KKworY2xhc3MgRXJhc3VyZVRlc3QxIHsKKyAgPGVycm9yIGRlc2NyPSIndG9BcnJheURvdWJsZShMaXN0PD8gZXh0ZW5kcyBOdW1iZXI+KScgY2xhc2hlcyB3aXRoICd0b0FycmF5RG91YmxlKExpc3QpJzsgYm90aCBtZXRob2RzIGhhdmUgc2FtZSBlcmFzdXJlIj5wdWJsaWMgc3RhdGljIGRvdWJsZVtdIHRvQXJyYXlEb3VibGUoTGlzdDw/IGV4dGVuZHMgTnVtYmVyPiB2KTwvZXJyb3I+IHsKKyAgICByZXR1cm4gbnVsbDsKKyAgfQorCisgIHB1YmxpYyBzdGF0aWMgZG91YmxlW11bXSB0b0FycmF5RG91YmxlKExpc3QgdikgeworICAgIHJldHVybiBudWxsOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9nZW5lcmljc0hpZ2hsaWdodGluZy9JREVBNjYzMTFfMTYuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvZ2VuZXJpY3NIaWdobGlnaHRpbmcvSURFQTY2MzExXzE2LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGI3YWJkYwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvZ2VuZXJpY3NIaWdobGlnaHRpbmcvSURFQTY2MzExXzE2LmphdmEKQEAgLTAsMCArMSwzMSBAQAoraW1wb3J0IGphdmEudXRpbC4qOworCitjbGFzcyBFcmFzdXJlVGVzdCB7CisgIHB1YmxpYyBzdGF0aWMgZG91YmxlW10gdG9BcnJheURvdWJsZShMaXN0PD8gZXh0ZW5kcyBOdW1iZXI+IHYpIHsKKyAgICByZXR1cm4gbnVsbDsKKyAgfQorCisgIHB1YmxpYyBzdGF0aWMgZG91YmxlW11bXSB0b0FycmF5RG91YmxlKExpc3Q8ZG91YmxlW10+IHYpIHsKKyAgICByZXR1cm4gbnVsbDsKKyAgfQorfQorCitjbGFzcyBFcmFzdXJlVGVzdDEgeworICA8ZXJyb3IgZGVzY3I9Iid0b0FycmF5RG91YmxlKExpc3Q8PyBleHRlbmRzIE51bWJlcj4pJyBjbGFzaGVzIHdpdGggJ3RvQXJyYXlEb3VibGUoTGlzdCknOyBib3RoIG1ldGhvZHMgaGF2ZSBzYW1lIGVyYXN1cmUiPnB1YmxpYyBzdGF0aWMgZG91YmxlW10gdG9BcnJheURvdWJsZShMaXN0PD8gZXh0ZW5kcyBOdW1iZXI+IHYpPC9lcnJvcj4geworICAgIHJldHVybiBudWxsOworICB9CisKKyAgcHVibGljIHN0YXRpYyBkb3VibGVbXVtdIHRvQXJyYXlEb3VibGUoTGlzdCB2KSB7CisgICAgcmV0dXJuIG51bGw7CisgIH0KK30KKworY2xhc3MgRXJhc3VyZVRlc3QyIHsKKyAgPGVycm9yIGRlc2NyPSIndG9BcnJheURvdWJsZShMaXN0PD8gZXh0ZW5kcyBOdW1iZXI+KScgY2xhc2hlcyB3aXRoICd0b0FycmF5RG91YmxlKExpc3Q8U3RyaW5nPiknOyBib3RoIG1ldGhvZHMgaGF2ZSBzYW1lIGVyYXN1cmUiPnB1YmxpYyBzdGF0aWMgZG91YmxlW10gdG9BcnJheURvdWJsZShMaXN0PD8gZXh0ZW5kcyBOdW1iZXI+IHYpPC9lcnJvcj4geworICAgIHJldHVybiBudWxsOworICB9CisKKyAgcHVibGljIHN0YXRpYyBkb3VibGVbXSB0b0FycmF5RG91YmxlKExpc3Q8U3RyaW5nPiB2KSB7CisgICAgcmV0dXJuIG51bGw7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2dlbmVyaWNzSGlnaGxpZ2h0aW5nL0lERUE2NzU3MC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9nZW5lcmljc0hpZ2hsaWdodGluZy9JREVBNjc1NzAuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YmEyNjIwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9nZW5lcmljc0hpZ2hsaWdodGluZy9JREVBNjc1NzAuamF2YQpAQCAtMCwwICsxLDIxIEBACitpbnRlcmZhY2UgQTEKK3sKKyAgICBTdHJpbmcgZm9vKCk7Cit9CisKK2ludGVyZmFjZSBCMQoreworICAgIE9iamVjdCBmb28oKTsKK30KKworY2xhc3MgQzE8VCBleHRlbmRzIEIxICYgQTE+IHsKKyAgICB2b2lkIGJhcihUIHgpIHsKKyAgICAgICAgU3RyaW5nIGZvbyA9IHguZm9vKCk7CisgICAgfQorfQorCitjbGFzcyBDMjxUIGV4dGVuZHMgQTEgJiBCMT4geworICAgIHZvaWQgYmFyKFQgeCkgeworICAgICAgICBTdHJpbmcgZm9vID0geC5mb28oKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9nZW5lcmljc0hpZ2hsaWdodGluZy9JREVBNjc1OTcuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvZ2VuZXJpY3NIaWdobGlnaHRpbmcvSURFQTY3NTk3LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjBkMmQyNwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvZ2VuZXJpY3NIaWdobGlnaHRpbmcvSURFQTY3NTk3LmphdmEKQEAgLTAsMCArMSw0IEBACitjbGFzcyBBPFQ+Cit7CisgICAgVCB4ID0gPGVycm9yIGRlc2NyPSJJbmNvbnZlcnRpYmxlIHR5cGVzOyBjYW5ub3QgY2FzdCAnaW50JyB0byAnVCciPihUKSAxPC9lcnJvcj47Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9nZW5lcmljc0hpZ2hsaWdodGluZy9JREVBNjc1OTkuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvZ2VuZXJpY3NIaWdobGlnaHRpbmcvSURFQTY3NTk5LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmQ2YzZiNAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvZ2VuZXJpY3NIaWdobGlnaHRpbmcvSURFQTY3NTk5LmphdmEKQEAgLTAsMCArMSw4IEBACithYnN0cmFjdCBjbGFzcyBBPFQsIFMgZXh0ZW5kcyBUPgoreworICAgICAgYWJzdHJhY3QgUyBiYXIoKTsKKyAgICAgIHZvaWQgZm9vKEE8Q2xvbmVhYmxlW10sID8gZXh0ZW5kcyBUaHJvd2FibGVbXT4gYSkKKyAgICAgIHsKKyAgICAgICAgICBpbnQgeCA9IGEuYmFyKCkubGVuZ3RoOworICAgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvZ2VuZXJpY3NIaWdobGlnaHRpbmcvSURFQTY3NjY3LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2dlbmVyaWNzSGlnaGxpZ2h0aW5nL0lERUE2NzY2Ny5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg1ZjQ2YTAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2dlbmVyaWNzSGlnaGxpZ2h0aW5nL0lERUE2NzY2Ny5qYXZhCkBAIC0wLDAgKzEsOCBAQAoraW1wb3J0IGphdmEudXRpbC5Db2xsZWN0aW9uOworaW1wb3J0IGphdmEudXRpbC5MaXN0OworCitpbnRlcmZhY2UgQQoreworICAgIDxTIGV4dGVuZHMgQ2xvbmVhYmxlICYgQ29tcGFyYWJsZTw/Pj4gdm9pZCBmb28oUyB4KTsKKyAgICA8UyBleHRlbmRzIENvbXBhcmFibGU8Pz4gJiBDbG9uZWFibGU+IHZvaWQgZm9vKFMgeCk7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9nZW5lcmljc0hpZ2hsaWdodGluZy9JREVBNjc2NzIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvZ2VuZXJpY3NIaWdobGlnaHRpbmcvSURFQTY3NjcyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTM5Y2UzZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvZ2VuZXJpY3NIaWdobGlnaHRpbmcvSURFQTY3NjcyLmphdmEKQEAgLTAsMCArMSw3IEBACitpbXBvcnQgamF2YS51dGlsLkNvbGxlY3Rpb247CitpbXBvcnQgamF2YS51dGlsLkxpc3Q7CisKK2ludGVyZmFjZSBBCit7CisgICAgPDxlcnJvciBkZXNjcj0iJ2FkZEFsbChDb2xsZWN0aW9uPD8gZXh0ZW5kcyBFPiknIGluICdqYXZhLnV0aWwuQ29sbGVjdGlvbicgY2xhc2hlcyB3aXRoICdhZGRBbGwoQ29sbGVjdGlvbjw/IGV4dGVuZHMgRT4pJyBpbiAnamF2YS51dGlsLkxpc3QnOyBib3RoIG1ldGhvZHMgaGF2ZSBzYW1lIGVyYXN1cmUsIHlldCBuZWl0aGVyIG92ZXJyaWRlcyB0aGUgb3RoZXIiPjwvZXJyb3I+VCBleHRlbmRzIExpc3Q8Pz4gJiBDb2xsZWN0aW9uPD8gZXh0ZW5kcyBDbG9uZWFibGU+PiB2b2lkIGZvbyhUIHgpOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvZ2VuZXJpY3NIaWdobGlnaHRpbmcvSURFQTY3NjgxLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2dlbmVyaWNzSGlnaGxpZ2h0aW5nL0lERUE2NzY4MS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMxYTNiMTIyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9nZW5lcmljc0hpZ2hsaWdodGluZy9JREVBNjc2ODEuamF2YQpAQCAtMCwwICsxLDMzIEBACisKK2ludGVyZmFjZSBBPFQ+IHsgfQorCitjbGFzcyBCPFQ+IGltcGxlbWVudHMgQTxUPiB7fQorCitjbGFzcyBDIHsKKyAgICB2b2lkIGJhcihBPEE8Pz4+IHgpeworICAgICAgICBCPEE8U3RyaW5nPj4geSA9IDxlcnJvciBkZXNjcj0iSW5jb252ZXJ0aWJsZSB0eXBlczsgY2Fubm90IGNhc3QgJ0E8QTw/Pj4nIHRvICdCPEE8amF2YS5sYW5nLlN0cmluZz4+JyI+KEI8QTxTdHJpbmc+PikgeDwvZXJyb3I+OworICAgIH0KK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoraW50ZXJmYWNlIEEyPFQ+IHsgfQorCitjbGFzcyBCMjxUPiBpbXBsZW1lbnRzIEEyPFQ+IHt9CisKK2NsYXNzIEMyIHsKKyAgICB2b2lkIGJhcihBMjxBMj4geCl7CisgICAgICAgIEIyPEEyPD8+PiB5ID0gPGVycm9yIGRlc2NyPSJJbmNvbnZlcnRpYmxlIHR5cGVzOyBjYW5ub3QgY2FzdCAnQTI8QTI+JyB0byAnQjI8QTI8Pz4+JyI+KEIyPEEyPD8+PikgeDwvZXJyb3I+OworICAgIH0KK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoraW50ZXJmYWNlIEEzPFQ+IHsgfQorCitjbGFzcyBCMzxUPiBpbXBsZW1lbnRzIEEzPFQ+IHt9CisKK2NsYXNzIEMzIHsKKyAgICA8VD4gdm9pZCBiYXIoQTM8QTM8VD4+IHgpeworICAgICAgICBBMzxBMzw/Pj4geSA9IDxlcnJvciBkZXNjcj0iSW5jb252ZXJ0aWJsZSB0eXBlczsgY2Fubm90IGNhc3QgJ0EzPEEzPFQ+PicgdG8gJ0EzPEEzPD8+PiciPihBMzxBMzw/Pj4pIHg8L2Vycm9yPjsKKworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2dlbmVyaWNzSGlnaGxpZ2h0aW5nL0lERUE2Nzg2MS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9nZW5lcmljc0hpZ2hsaWdodGluZy9JREVBNjc4NjEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mN2Q2NTRkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9nZW5lcmljc0hpZ2hsaWdodGluZy9JREVBNjc4NjEuamF2YQpAQCAtMCwwICsxLDggQEAKK2Fic3RyYWN0IGNsYXNzIEMgeworICAgICAgICA8VD4gdm9pZCBmb28oT2JqZWN0IHMpeyB9CisgICAgICAgIGFic3RyYWN0IFN0cmluZyBmb28oU3RyaW5nIHMpOworCisgICAgeworICAgICAgICB0aGlzLjxTdHJpbmc+Zm9vKCIiKS50b0xvd2VyQ2FzZSgpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2dlbmVyaWNzSGlnaGxpZ2h0aW5nL0lERUE3MDM3MC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9nZW5lcmljc0hpZ2hsaWdodGluZy9JREVBNzAzNzAuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMWM5MzMxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9nZW5lcmljc0hpZ2hsaWdodGluZy9JREVBNzAzNzAuamF2YQpAQCAtMCwwICsxLDEzIEBACitjbGFzcyBEZXZrMSB7CisgIHB1YmxpYyB2b2lkIG1haW4oU3RyaW5nIGFyZ3NbXSkgeworICAgIGZvbygpOworICB9CisKKyAgcHJpdmF0ZSB2b2lkIDx3YXJuaW5nIGRlc2NyPSJQcml2YXRlIG1ldGhvZCAnZm9vKGphdmEubGFuZy5PYmplY3QuLi4pJyBpcyBuZXZlciB1c2VkIj5mb288L3dhcm5pbmc+KE9iamVjdC4uLiBvYmplY3RzKSB7CisgICAgU3lzdGVtLm91dC5wcmludGxuKCJPQkpFQ1RTIiArIG9iamVjdHMpOworICB9CisKKyAgcHJpdmF0ZSB2b2lkIGZvbyhpbnQuLi4gaW50cykgeworICAgIFN5c3RlbS5vdXQucHJpbnRsbigiSU5UUyIgKyBpbnRzKTsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9nZW5lcmljc0hpZ2hsaWdodGluZy9JREVBNzI5MTIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvZ2VuZXJpY3NIaWdobGlnaHRpbmcvSURFQTcyOTEyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzU3YmJiNQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvZ2VuZXJpY3NIaWdobGlnaHRpbmcvSURFQTcyOTEyLmphdmEKQEAgLTAsMCArMSwxNiBAQAoraW1wb3J0IGphdmEudXRpbC4qOworCitwdWJsaWMgY2xhc3MgVGVzdDxUPgoreworICAgICAgICBMaXN0PENvbGxlY3Rpb248VD4+IGdldExpc3QgKCkKKyAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQXJyYXlMaXN0PENvbGxlY3Rpb248VD4+ICgpOworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIHZvaWQgdGVzdDEgKFRlc3Q8VD4gYXJnKQorICAgICAgICB7CisgICAgICAgICAgICAgICAgTGlzdDxDb2xsZWN0aW9uPFQ+PiByZXN1bHQgPSBhcmcuZ2V0TGlzdCAoKTsKKyAgICAgICAgICAgICAgICByZXN1bHQuYWRkIDxlcnJvciBkZXNjcj0iJ2FkZChqYXZhLnV0aWwuQ29sbGVjdGlvbjxUPiknIGluICdqYXZhLnV0aWwuTGlzdCcgY2Fubm90IGJlIGFwcGxpZWQgdG8gJyhqYXZhLnV0aWwuSGFzaE1hcDxqYXZhLmxhbmcuSW50ZWdlcixqYXZhLmxhbmcuSW50ZWdlcj4pJyI+KG5ldyBIYXNoTWFwPEludGVnZXIsIEludGVnZXI+ICgpKTwvZXJyb3I+OworICAgICAgICB9CisKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvZ2VuZXJpY3NIaWdobGlnaHRpbmcvSURFQTc0ODk5LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2dlbmVyaWNzSGlnaGxpZ2h0aW5nL0lERUE3NDg5OS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg3MjM4MjkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2dlbmVyaWNzSGlnaGxpZ2h0aW5nL0lERUE3NDg5OS5qYXZhCkBAIC0wLDAgKzEsMTEgQEAKK2ltcG9ydCBqYXZhLnV0aWwuQ29sbGVjdGlvbnM7CitpbXBvcnQgamF2YS51dGlsLk1hcDsKKworcHVibGljIGNsYXNzIElERUE3NDg5OSB7CisgICAgdm9pZCBmb28oKSB7CisgICAgICAgIE1hcDxTdHJpbmcsIFN0cmluZz4gbSA9IENvbGxlY3Rpb25zLmVtcHR5TWFwKCk7CisgICAgICAgIGlmICg8ZXJyb3IgZGVzY3I9Ik9wZXJhdG9yICc9PScgY2Fubm90IGJlIGFwcGxpZWQgdG8gJ2phdmEudXRpbC5NYXA8amF2YS5sYW5nLlN0cmluZyxqYXZhLmxhbmcuU3RyaW5nPicsICdqYXZhLnV0aWwuTWFwPGphdmEubGFuZy5PYmplY3QsamF2YS5sYW5nLk9iamVjdD4nIj5tID09IENvbGxlY3Rpb25zLmVtcHR5TWFwKCk8L2Vycm9yPikgeworICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2dlbmVyaWNzSGlnaGxpZ2h0aW5nL0lERUE3NjI4My5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9nZW5lcmljc0hpZ2hsaWdodGluZy9JREVBNzYyODMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMjIxZDFiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9nZW5lcmljc0hpZ2hsaWdodGluZy9JREVBNzYyODMuamF2YQpAQCAtMCwwICsxLDQ5IEBACitpbXBvcnQgamF2YS51dGlsLio7CitwdWJsaWMgY2xhc3MgSURFQTc2MjgzIHsKK30KKworaW50ZXJmYWNlIFBhcmFtZXRyaXplZDxUIGV4dGVuZHMgTnVtYmVyPiB7Cit9CisKK2NsYXNzIEJ1ZzE8VCBleHRlbmRzIE51bWJlcj4geworICAgIDxJIGV4dGVuZHMgTnVtYmVyPiBQYXJhbWV0cml6ZWQ8ST4gZm9vKFBhcmFtZXRyaXplZDxJPiBwYXJhbSkgeworICAgICAgICByZXR1cm4gbnVsbDsKKyAgICB9CisKKyAgICB2b2lkIGJ1ZzEoUGFyYW1ldHJpemVkPD8gc3VwZXIgVD4gcGFyYW0pIHsKKyAgICAgICAgZm9vKHBhcmFtKTsKKyAgICB9CisKKyAgICB2b2lkIGJ1ZzIoU2V0PFBhcmFtZXRyaXplZDw/IGV4dGVuZHMgTnVtYmVyPj4gcGFyYW1ldHJpemVkcykgeworICAgICAgICBTZXQ8UGFyYW1ldHJpemVkPD8+PiBpdGVtcyA9IHBhcmFtZXRyaXplZHM7CisgICAgfQorCisgICAgdm9pZCBidWczKFNldDxQYXJhbWV0cml6ZWQ8Pz4+IHBhcmFtZXRyaXplZHMpIHsKKyAgICAgICAgU2V0PFBhcmFtZXRyaXplZDw/Pj4gaXRlbXMgPSBwYXJhbWV0cml6ZWRzOworICAgIH0KKworICAgIHZvaWQgYnVnNChTZXQ8UGFyYW1ldHJpemVkPDxlcnJvciBkZXNjcj0iVHlwZSBwYXJhbWV0ZXIgJz8gZXh0ZW5kcyBTdHJpbmcnIGlzIG5vdCB3aXRoaW4gaXRzIGJvdW5kOyBzaG91bGQgZXh0ZW5kICdqYXZhLmxhbmcuTnVtYmVyJyI+PyBleHRlbmRzIFN0cmluZzwvZXJyb3I+Pj4gcGFyYW1ldHJpemVkcykgeworICAgICAgICA8ZXJyb3IgZGVzY3I9IkluY29tcGF0aWJsZSB0eXBlcy4gRm91bmQ6ICdqYXZhLnV0aWwuU2V0PFBhcmFtZXRyaXplZDw/IGV4dGVuZHMgamF2YS5sYW5nLlN0cmluZz4+JywgcmVxdWlyZWQ6ICdqYXZhLnV0aWwuU2V0PFBhcmFtZXRyaXplZDw/Pj4nIj5TZXQ8UGFyYW1ldHJpemVkPD8+PiBpdGVtcyA9IHBhcmFtZXRyaXplZHM7PC9lcnJvcj4KKyAgICB9CisKKyAgICB2b2lkIGJ1ZzUoU2V0PFBhcmFtZXRyaXplZDw/IGV4dGVuZHMgSW50ZWdlcj4+IHBhcmFtZXRyaXplZHMpIHsKKyAgICAgICAgPGVycm9yIGRlc2NyPSJJbmNvbXBhdGlibGUgdHlwZXMuIEZvdW5kOiAnamF2YS51dGlsLlNldDxQYXJhbWV0cml6ZWQ8PyBleHRlbmRzIGphdmEubGFuZy5JbnRlZ2VyPj4nLCByZXF1aXJlZDogJ2phdmEudXRpbC5TZXQ8UGFyYW1ldHJpemVkPD8+PiciPlNldDxQYXJhbWV0cml6ZWQ8Pz4+IGl0ZW1zID0gcGFyYW1ldHJpemVkczs8L2Vycm9yPgorICAgIH0KKworICAgIHZvaWQgYnVnNihTZXQ8UGFyYW1ldHJpemVkPD8gc3VwZXIgTnVtYmVyPj4gcGFyYW1ldHJpemVkcykgeworICAgICAgICA8ZXJyb3IgZGVzY3I9IkluY29tcGF0aWJsZSB0eXBlcy4gRm91bmQ6ICdqYXZhLnV0aWwuU2V0PFBhcmFtZXRyaXplZDw/IHN1cGVyIGphdmEubGFuZy5OdW1iZXI+PicsIHJlcXVpcmVkOiAnamF2YS51dGlsLlNldDxQYXJhbWV0cml6ZWQ8Pz4+JyI+U2V0PFBhcmFtZXRyaXplZDw/Pj4gaXRlbXMgPSBwYXJhbWV0cml6ZWRzOzwvZXJyb3I+CisgICAgfQorCisgICAgdm9pZCBidWc3KFNldDxQYXJhbWV0cml6ZWQ8PyBzdXBlciBJbnRlZ2VyPj4gcGFyYW1ldHJpemVkcykgeworICAgICAgICA8ZXJyb3IgZGVzY3I9IkluY29tcGF0aWJsZSB0eXBlcy4gRm91bmQ6ICdqYXZhLnV0aWwuU2V0PFBhcmFtZXRyaXplZDw/IHN1cGVyIGphdmEubGFuZy5JbnRlZ2VyPj4nLCByZXF1aXJlZDogJ2phdmEudXRpbC5TZXQ8UGFyYW1ldHJpemVkPD8+PiciPlNldDxQYXJhbWV0cml6ZWQ8Pz4+IGl0ZW1zID0gcGFyYW1ldHJpemVkczs8L2Vycm9yPgorICAgIH0KKworICAgIHZvaWQgYnVnOChTZXQ8UGFyYW1ldHJpemVkPDxlcnJvciBkZXNjcj0iVHlwZSBwYXJhbWV0ZXIgJz8gc3VwZXIgU3RyaW5nJyBpcyBub3Qgd2l0aGluIGl0cyBib3VuZDsgc2hvdWxkIGV4dGVuZCAnamF2YS5sYW5nLk51bWJlciciPj8gc3VwZXIgU3RyaW5nPC9lcnJvcj4+PiBwYXJhbWV0cml6ZWRzKSB7CisgICAgICAgIDxlcnJvciBkZXNjcj0iSW5jb21wYXRpYmxlIHR5cGVzLiBGb3VuZDogJ2phdmEudXRpbC5TZXQ8UGFyYW1ldHJpemVkPD8gc3VwZXIgamF2YS5sYW5nLlN0cmluZz4+JywgcmVxdWlyZWQ6ICdqYXZhLnV0aWwuU2V0PFBhcmFtZXRyaXplZDw/Pj4nIj5TZXQ8UGFyYW1ldHJpemVkPD8+PiBpdGVtcyA9IHBhcmFtZXRyaXplZHM7PC9lcnJvcj4KKyAgICB9CisKKyAgICB2b2lkIGJ1ZzkoU2V0PFBhcmFtZXRyaXplZDw8ZXJyb3IgZGVzY3I9IlR5cGUgcGFyYW1ldGVyICc/IHN1cGVyIE9iamVjdCcgaXMgbm90IHdpdGhpbiBpdHMgYm91bmQ7IHNob3VsZCBleHRlbmQgJ2phdmEubGFuZy5OdW1iZXInIj4/IHN1cGVyIE9iamVjdDwvZXJyb3I+Pj4gcGFyYW1ldHJpemVkcykgeworICAgICAgICA8ZXJyb3IgZGVzY3I9IkluY29tcGF0aWJsZSB0eXBlcy4gRm91bmQ6ICdqYXZhLnV0aWwuU2V0PFBhcmFtZXRyaXplZDw/IHN1cGVyIGphdmEubGFuZy5PYmplY3Q+PicsIHJlcXVpcmVkOiAnamF2YS51dGlsLlNldDxQYXJhbWV0cml6ZWQ8Pz4+JyI+U2V0PFBhcmFtZXRyaXplZDw/Pj4gaXRlbXMgPSBwYXJhbWV0cml6ZWRzOzwvZXJyb3I+CisgICAgfQorfQorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2dlbmVyaWNzSGlnaGxpZ2h0aW5nL0lERUE3Nzk5MS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9nZW5lcmljc0hpZ2hsaWdodGluZy9JREVBNzc5OTEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zY2Q0OTNiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9nZW5lcmljc0hpZ2hsaWdodGluZy9JREVBNzc5OTEuamF2YQpAQCAtMCwwICsxLDI2IEBACitjbGFzcyBUZXN0IHsKKyAgICBzdGF0aWMgeworICAgICAgICBDbGFzczxUZXN0PiB0ZXN0Q2xhc3MgPSBnZXQoVGVzdC5jbGFzcyk7CisgICAgICAgIGZvbyh0ZXN0Q2xhc3MpOworICAgICAgICBUZXN0IGYgPSBmb28odGVzdENsYXNzKTsKKyAgICB9CisKKyAgICBzdGF0aWMgPEU+IENsYXNzPEU+IGdldChDbGFzczw/IHN1cGVyIEU+IHZhbHVlKSB7CisgICAgICAgIHJldHVybiBudWxsOworICAgIH0KKworICAgIHN0YXRpYyA8RT4gRSBmb28oQ2xhc3M8PyBzdXBlciBFPiB2YWx1ZSkgeworICAgICAgICByZXR1cm4gbnVsbDsKKyAgICB9Cit9CisKK2NsYXNzIENvbXAgeworICBwdWJsaWMgc3RhdGljIDxUPiBib29sZWFuIGVxdWFsKFQgYXJnMSwgVCBhcmcyKSB7CisgICAgcmV0dXJuIGZhbHNlOworICB9CisKKyAgdm9pZCBmb28oU3RyaW5nIHMsIE9iamVjdCBvKSB7CisgICAgaWYgKGVxdWFsKHMsIG8pKSB7CisgICAgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9nZW5lcmljc0hpZ2hsaWdodGluZy9JREVBODAzODYuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvZ2VuZXJpY3NIaWdobGlnaHRpbmcvSURFQTgwMzg2LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzU4N2Y0ZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvZ2VuZXJpY3NIaWdobGlnaHRpbmcvSURFQTgwMzg2LmphdmEKQEAgLTAsMCArMSwzMyBAQAoraW1wb3J0IGphdmEudXRpbC5MaXN0OworCitwdWJsaWMgY2xhc3MgSURFQTgwMzg2IHsKKyAgdm9pZCBmb28oQ2xhc3M8TGlzdD4gbGlzdENsYXNzKSB7CisgICAgPGVycm9yIGRlc2NyPSJJbmNvbXBhdGlibGUgdHlwZXMuIEZvdW5kOiAnamF2YS5sYW5nLkNsYXNzPGphdmEudXRpbC5MaXN0PicsIHJlcXVpcmVkOiAnamF2YS5sYW5nLkNsYXNzPD8gZXh0ZW5kcyBqYXZhLnV0aWwuTGlzdDw/Pj4nIj5DbGFzczw/IGV4dGVuZHMgTGlzdDw/Pj4gY2xzID0gbGlzdENsYXNzOzwvZXJyb3I+CisgICAgQ2xhc3MgPCA/ZXh0ZW5kcyBMaXN0ID4gY2xzMSA9IGxpc3RDbGFzczsKKyAgICA8ZXJyb3IgZGVzY3I9IkluY29tcGF0aWJsZSB0eXBlcy4gRm91bmQ6ICdqYXZhLmxhbmcuQ2xhc3M8amF2YS51dGlsLkxpc3Q+JywgcmVxdWlyZWQ6ICdqYXZhLmxhbmcuQ2xhc3M8PyBleHRlbmRzIGphdmEudXRpbC5MaXN0PD8gZXh0ZW5kcyBqYXZhLnV0aWwuTGlzdDw/Pj4+JyI+Q2xhc3M8PyBleHRlbmRzIExpc3Q8PyBleHRlbmRzIExpc3Q8Pz4+PiBjbHMyID0gbGlzdENsYXNzOzwvZXJyb3I+CisgICAgQ2xhc3M8PyBzdXBlciBMaXN0PD8+PiBjbHNTID0gbGlzdENsYXNzOworICAgIENsYXNzPD8gc3VwZXIgTGlzdD4gY2xzUzEgPSBsaXN0Q2xhc3M7CisgIH0KKworICB2b2lkIGZvb0UoQ2xhc3M8PyBleHRlbmRzIExpc3Q+IGxpc3RDbGFzcykgeworICAgIDxlcnJvciBkZXNjcj0iSW5jb21wYXRpYmxlIHR5cGVzLiBGb3VuZDogJ2phdmEubGFuZy5DbGFzczxjYXB0dXJlPD8gZXh0ZW5kcyBqYXZhLnV0aWwuTGlzdD4+JywgcmVxdWlyZWQ6ICdqYXZhLmxhbmcuQ2xhc3M8PyBleHRlbmRzIGphdmEudXRpbC5MaXN0PD8+PiciPkNsYXNzPD8gZXh0ZW5kcyBMaXN0PD8+PiBjbHMgPSBsaXN0Q2xhc3M7PC9lcnJvcj4KKyAgICBDbGFzczw/IGV4dGVuZHMgTGlzdD4gY2xzMSA9IGxpc3RDbGFzczsKKyAgICA8ZXJyb3IgZGVzY3I9IkluY29tcGF0aWJsZSB0eXBlcy4gRm91bmQ6ICdqYXZhLmxhbmcuQ2xhc3M8Y2FwdHVyZTw/IGV4dGVuZHMgamF2YS51dGlsLkxpc3Q+PicsIHJlcXVpcmVkOiAnamF2YS5sYW5nLkNsYXNzPD8gZXh0ZW5kcyBqYXZhLnV0aWwuTGlzdDw/IGV4dGVuZHMgamF2YS51dGlsLkxpc3Q8Pz4+PiciPkNsYXNzPD8gZXh0ZW5kcyBMaXN0PD8gZXh0ZW5kcyBMaXN0PD8+Pj4gY2xzMiA9IGxpc3RDbGFzczs8L2Vycm9yPgorICAgIDxlcnJvciBkZXNjcj0iSW5jb21wYXRpYmxlIHR5cGVzLiBGb3VuZDogJ2phdmEubGFuZy5DbGFzczxjYXB0dXJlPD8gZXh0ZW5kcyBqYXZhLnV0aWwuTGlzdD4+JywgcmVxdWlyZWQ6ICdqYXZhLmxhbmcuQ2xhc3M8PyBzdXBlciBqYXZhLnV0aWwuTGlzdDw/Pj4nIj5DbGFzczw/IHN1cGVyIExpc3Q8Pz4+IGNsc1MgPSBsaXN0Q2xhc3M7PC9lcnJvcj4KKyAgICA8ZXJyb3IgZGVzY3I9IkluY29tcGF0aWJsZSB0eXBlcy4gRm91bmQ6ICdqYXZhLmxhbmcuQ2xhc3M8Y2FwdHVyZTw/IGV4dGVuZHMgamF2YS51dGlsLkxpc3Q+PicsIHJlcXVpcmVkOiAnamF2YS5sYW5nLkNsYXNzPD8gc3VwZXIgamF2YS51dGlsLkxpc3Q+JyI+Q2xhc3M8PyBzdXBlciBMaXN0PiBjbHNTMSA9IGxpc3RDbGFzczs8L2Vycm9yPgorICB9CisKKyAgdm9pZCBmb29TKENsYXNzPD8gc3VwZXIgTGlzdD4gbGlzdENsYXNzKSB7CisgICAgPGVycm9yIGRlc2NyPSJJbmNvbXBhdGlibGUgdHlwZXMuIEZvdW5kOiAnamF2YS5sYW5nLkNsYXNzPGNhcHR1cmU8PyBzdXBlciBqYXZhLnV0aWwuTGlzdD4+JywgcmVxdWlyZWQ6ICdqYXZhLmxhbmcuQ2xhc3M8PyBleHRlbmRzIGphdmEudXRpbC5MaXN0PD8+PiciPkNsYXNzPD8gZXh0ZW5kcyBMaXN0PD8+PiBjbHMxID0gbGlzdENsYXNzOzwvZXJyb3I+CisgICAgPGVycm9yIGRlc2NyPSJJbmNvbXBhdGlibGUgdHlwZXMuIEZvdW5kOiAnamF2YS5sYW5nLkNsYXNzPGNhcHR1cmU8PyBzdXBlciBqYXZhLnV0aWwuTGlzdD4+JywgcmVxdWlyZWQ6ICdqYXZhLmxhbmcuQ2xhc3M8PyBleHRlbmRzIGphdmEudXRpbC5MaXN0PD8gZXh0ZW5kcyBqYXZhLnV0aWwuTGlzdDw/Pj4+JyI+Q2xhc3M8PyBleHRlbmRzIExpc3Q8PyBleHRlbmRzIExpc3Q8Pz4+PiBjbHMyID0gbGlzdENsYXNzOzwvZXJyb3I+CisgICAgQ2xhc3M8PyBzdXBlciBMaXN0PD8+PiBjbHNTID0gbGlzdENsYXNzOworICAgIENsYXNzPD8gc3VwZXIgTGlzdD4gY2xzUzEgPSBsaXN0Q2xhc3M7CisgIH0KKworICB2b2lkIGZvb1UoQ2xhc3M8Pz4gbGlzdENsYXNzKSB7CisgICAgPGVycm9yIGRlc2NyPSJJbmNvbXBhdGlibGUgdHlwZXMuIEZvdW5kOiAnamF2YS5sYW5nLkNsYXNzPGNhcHR1cmU8Pz4+JywgcmVxdWlyZWQ6ICdqYXZhLmxhbmcuQ2xhc3M8PyBleHRlbmRzIGphdmEudXRpbC5MaXN0PD8+PiciPkNsYXNzPD8gZXh0ZW5kcyBMaXN0PD8+PiBjbHMxID0gbGlzdENsYXNzOzwvZXJyb3I+CisgICAgPGVycm9yIGRlc2NyPSJJbmNvbXBhdGlibGUgdHlwZXMuIEZvdW5kOiAnamF2YS5sYW5nLkNsYXNzPGNhcHR1cmU8Pz4+JywgcmVxdWlyZWQ6ICdqYXZhLmxhbmcuQ2xhc3M8PyBleHRlbmRzIGphdmEudXRpbC5MaXN0PD8gZXh0ZW5kcyBqYXZhLnV0aWwuTGlzdDw/Pj4+JyI+Q2xhc3M8PyBleHRlbmRzIExpc3Q8PyBleHRlbmRzIExpc3Q8Pz4+PiBjbHMyID0gbGlzdENsYXNzOzwvZXJyb3I+CisgICAgPGVycm9yIGRlc2NyPSJJbmNvbXBhdGlibGUgdHlwZXMuIEZvdW5kOiAnamF2YS5sYW5nLkNsYXNzPGNhcHR1cmU8Pz4+JywgcmVxdWlyZWQ6ICdqYXZhLmxhbmcuQ2xhc3M8PyBzdXBlciBqYXZhLnV0aWwuTGlzdDw/Pj4nIj5DbGFzczw/IHN1cGVyIExpc3Q8Pz4+IGNsc1MgPSBsaXN0Q2xhc3M7PC9lcnJvcj4KKyAgICA8ZXJyb3IgZGVzY3I9IkluY29tcGF0aWJsZSB0eXBlcy4gRm91bmQ6ICdqYXZhLmxhbmcuQ2xhc3M8Y2FwdHVyZTw/Pj4nLCByZXF1aXJlZDogJ2phdmEubGFuZy5DbGFzczw/IHN1cGVyIGphdmEudXRpbC5MaXN0PiciPkNsYXNzPD8gc3VwZXIgTGlzdD4gY2xzUzEgPSBsaXN0Q2xhc3M7PC9lcnJvcj4KKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9nZW5lcmljc0hpZ2hsaWdodGluZy9JREVBODg4OTUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvZ2VuZXJpY3NIaWdobGlnaHRpbmcvSURFQTg4ODk1LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTM0ODJkNwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvZ2VuZXJpY3NIaWdobGlnaHRpbmcvSURFQTg4ODk1LmphdmEKQEAgLTAsMCArMSwyNiBAQAoraW1wb3J0IGphdmEudXRpbC5JdGVyYXRvcjsKKworcHVibGljIGNsYXNzIFdpbGRjYXJkR2VuZXJpY0FuZFByaXZhdGVGaWVsZCB7CisKKyAgICBwcml2YXRlIE9iamVjdCBmaWVsZDsKKworICAgIHB1YmxpYyBJdGVyYXRvcjw/IGV4dGVuZHMgV2lsZGNhcmRHZW5lcmljQW5kUHJpdmF0ZUZpZWxkPiBpdGVyYXRvcigpIHsKKyAgICAgICAgcmV0dXJuIG51bGw7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgbWV0aG9kRG9lc05vdENvbXBpbGUoKSB7CisgICAgICAgIEl0ZXJhdG9yPD8gZXh0ZW5kcyBXaWxkY2FyZEdlbmVyaWNBbmRQcml2YXRlRmllbGQ+IGl0ZXJhdG9yID0gaXRlcmF0b3IoKTsKKyAgICAgICAgd2hpbGUgKCBpdGVyYXRvci5oYXNOZXh0KCkgKSB7CisgICAgICAgICAgICBPYmplY3QgbyA9IGl0ZXJhdG9yLm5leHQoKS48ZXJyb3IgZGVzY3I9IidmaWVsZCcgaGFzIHByaXZhdGUgYWNjZXNzIGluICdXaWxkY2FyZEdlbmVyaWNBbmRQcml2YXRlRmllbGQnIj5maWVsZDwvZXJyb3I+OworICAgICAgICB9CisgICAgfQorCisgICAgcHVibGljIHZvaWQgbWV0aG9kQ29tcGlsZXMoKSB7CisgICAgICAgIEl0ZXJhdG9yPD8gZXh0ZW5kcyBXaWxkY2FyZEdlbmVyaWNBbmRQcml2YXRlRmllbGQ+IGl0ZXJhdG9yID0gaXRlcmF0b3IoKTsKKyAgICAgICAgd2hpbGUgKCBpdGVyYXRvci5oYXNOZXh0KCkgKSB7CisgICAgICAgICAgICBXaWxkY2FyZEdlbmVyaWNBbmRQcml2YXRlRmllbGQgbmV4dCA9IGl0ZXJhdG9yLm5leHQoKTsKKyAgICAgICAgICAgIE9iamVjdCBvID0gbmV4dC5maWVsZDsKKyAgICAgICAgfQorICAgIH0KKworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvZ2VuZXJpY3NIaWdobGlnaHRpbmcvSURFQTg5NzcxLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2dlbmVyaWNzSGlnaGxpZ2h0aW5nL0lERUE4OTc3MS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYzYTA0ZGUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2dlbmVyaWNzSGlnaGxpZ2h0aW5nL0lERUE4OTc3MS5qYXZhCkBAIC0wLDAgKzEsMyBAQAorcHVibGljIEBpbnRlcmZhY2UgTXlBbm5vdGF0aW9uIHsKKyAgICBDbGFzczw/IGV4dGVuZHMgRW51bTw/Pj4gZW51bUNsYXNzKCkgZGVmYXVsdCA8ZXJyb3IgZGVzY3I9IkluY29tcGF0aWJsZSB0eXBlcy4gRm91bmQ6ICdqYXZhLmxhbmcuQ2xhc3M8amF2YS5sYW5nLkVudW0+JywgcmVxdWlyZWQ6ICdqYXZhLmxhbmcuQ2xhc3M8PyBleHRlbmRzIGphdmEubGFuZy5FbnVtPD8+PiciPkVudW0uY2xhc3M8L2Vycm9yPjsKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvZ2VuZXJpY3NIaWdobGlnaHRpbmcvSURFQTg5ODAxLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2dlbmVyaWNzSGlnaGxpZ2h0aW5nL0lERUE4OTgwMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI4ZDk3MDcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2dlbmVyaWNzSGlnaGxpZ2h0aW5nL0lERUE4OTgwMS5qYXZhCkBAIC0wLDAgKzEsNyBAQAoraW1wb3J0IGphdmEudXRpbC4qOworY2xhc3MgVGVzdCB7CisgIHsKKyAgICBNYXA8TnVtYmVyLCBTdHJpbmc+IG1hcDEgPSBudWxsOworICAgIE1hcDxJbnRlZ2VyLCBTdHJpbmc+IG1hcDIgPSA8ZXJyb3IgZGVzY3I9IkluY29udmVydGlibGUgdHlwZXM7IGNhbm5vdCBjYXN0ICdqYXZhLnV0aWwuTWFwPGphdmEubGFuZy5OdW1iZXIsamF2YS5sYW5nLlN0cmluZz4nIHRvICdqYXZhLnV0aWwuTWFwPGphdmEubGFuZy5JbnRlZ2VyLGphdmEubGFuZy5TdHJpbmc+JyI+KE1hcDxJbnRlZ2VyLCBTdHJpbmc+KSBtYXAxPC9lcnJvcj47CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2dlbmVyaWNzSGlnaGxpZ2h0aW5nL0lERUE5MDgwMi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9nZW5lcmljc0hpZ2hsaWdodGluZy9JREVBOTA4MDIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NDMzM2NjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9nZW5lcmljc0hpZ2hsaWdodGluZy9JREVBOTA4MDIuamF2YQpAQCAtMCwwICsxLDI0IEBACitpbXBvcnQgamF2YS51dGlsLio7CisKK2ludGVyZmFjZSBWY3NSb290IHsKK30KKworaW50ZXJmYWNlIFNWY3NSb290IGV4dGVuZHMgVmNzUm9vdCB7Cit9CisKK2ludGVyZmFjZSBBIHsKKyAgICBMaXN0PD8gZXh0ZW5kcyBWY3NSb290PiBnZXRWY3NSb290cygpOworfQorCitpbnRlcmZhY2UgQiB7CisgICAgTGlzdDxTVmNzUm9vdD4gZ2V0VmNzUm9vdHMoKTsKK30KKworaW50ZXJmYWNlIEYxIGV4dGVuZHMgQSwgQiB7Cit9CisKK2NsYXNzIEcgeworICAgIHZvaWQgZihGMSBvKSB7CisgICAgICAgIFNWY3NSb290IHIgPSBvLmdldFZjc1Jvb3RzKCkuZ2V0KDApOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2dlbmVyaWNzSGlnaGxpZ2h0aW5nL0lERUE5MTYyNi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9nZW5lcmljc0hpZ2hsaWdodGluZy9JREVBOTE2MjYuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZjI5NzI5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9nZW5lcmljc0hpZ2hsaWdodGluZy9JREVBOTE2MjYuamF2YQpAQCAtMCwwICsxLDI1IEBACitjbGFzcyBUZXN0IHsKKyAgICBpbnRlcmZhY2UgQTxUPiB7CisgICAgICAgIHZvaWQgXyhULi4uIHQpOworICAgIH0KKworICAgIHN0YXRpYyB2b2lkIGZvbyhmaW5hbCBBPD8+IGJhcikgeworICAgICAgICBiYXIuXygiIik7CisgICAgfQorICAgIHN0YXRpYyB2b2lkIGZvbzEoZmluYWwgQTw/IGV4dGVuZHMgU3RyaW5nPiBiYXIpIHsKKyAgICAgICAgYmFyLl8oIiIpOworICAgIH0KKworICAgIHN0YXRpYyB2b2lkIGZvbzIoZmluYWwgQTw/IGV4dGVuZHMgSW50ZWdlcj4gYmFyKSB7CisgICAgICAgIGJhci5fPGVycm9yIGRlc2NyPSInXyhjYXB0dXJlPD8gZXh0ZW5kcyBqYXZhLmxhbmcuSW50ZWdlcj4uLi4pJyBpbiAnVGVzdC5BJyBjYW5ub3QgYmUgYXBwbGllZCB0byAnKGphdmEubGFuZy5TdHJpbmcpJyI+KCIiKTwvZXJyb3I+OworICAgIH0KKworCisgICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgeworICAgICAgICBmb28obmV3IEE8SW50ZWdlcj4oKSB7CisgICAgICAgICAgICBwdWJsaWMgdm9pZCBfKGZpbmFsIEludGVnZXIuLi4gdCkgeworCisgICAgICAgICAgICB9CisgICAgICAgIH0pOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvZ2VuZXJpY3NIaWdobGlnaHRpbmcvSURFQTkyMDIyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2dlbmVyaWNzSGlnaGxpZ2h0aW5nL0lERUE5MjAyMi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZhOWJiOTUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2dlbmVyaWNzSGlnaGxpZ2h0aW5nL0lERUE5MjAyMi5qYXZhCkBAIC0wLDAgKzEsMjMgQEAKK2NsYXNzIEdldENsYXNzQ2xpZW50IHsKKyAgICAgICAgcHVibGljIHZvaWQgdXNlKCkgeworICAgICAgICAgICAgICAgIENsYXNzPD8gZXh0ZW5kcyBMb2NhbEdlbmVyaWM+IHYxID0gbnVsbDsKKyAgICAgICAgICAgICAgICBDbGFzczw/IGV4dGVuZHMgTG9jYWxHZW5lcmljPE9iamVjdD4+IHYyID0gbnVsbDsKKyAgICAgICAgICAgICAgICB2MSA9IHYyOworICAgICAgICAgICAgICA8ZXJyb3IgZGVzY3I9IkluY29tcGF0aWJsZSB0eXBlcy4gRm91bmQ6ICdqYXZhLmxhbmcuQ2xhc3M8Y2FwdHVyZTw/IGV4dGVuZHMgR2V0Q2xhc3NDbGllbnQuTG9jYWxHZW5lcmljPj4nLCByZXF1aXJlZDogJ2phdmEubGFuZy5DbGFzczw/IGV4dGVuZHMgR2V0Q2xhc3NDbGllbnQuTG9jYWxHZW5lcmljPGphdmEubGFuZy5PYmplY3Q+PiciPnYyID0gdjE8L2Vycm9yPjsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyBzdGF0aWMgY2xhc3MgTG9jYWxHZW5lcmljPFQ+IHsKKyAgICAgICAgfQorfQorCisKK2ludGVyZmFjZSBDb21wYXJhYmxlPFQgZXh0ZW5kcyBDb21wYXJhYmxlPFQ+PiB7fQorY2xhc3MgTGlzdDxUPiB7fQorCitjbGFzcyBGb28gaW1wbGVtZW50cyBDb21wYXJhYmxlPEZvbz4geworICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKXsKKyAgICBMaXN0PD8gZXh0ZW5kcyBGb28+IGxpc3QgPSBudWxsOworICAgIExpc3Q8PyBleHRlbmRzIENvbXBhcmFibGU+IGMgPSBudWxsOworICAgIGMgPSBsaXN0OworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9nZW5lcmljc0hpZ2hsaWdodGluZy9JREVBOTQwMTEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvZ2VuZXJpY3NIaWdobGlnaHRpbmcvSURFQTk0MDExLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzZiZWIzYwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvZ2VuZXJpY3NIaWdobGlnaHRpbmcvSURFQTk0MDExLmphdmEKQEAgLTAsMCArMSwyMSBAQAoraW1wb3J0IGphdmEudXRpbC4qOworY2xhc3MgVGVzdCB7CisKKyAgICBjbGFzcyBQYXJlbnQgeyB9CisKKyAgICBpbnRlcmZhY2UgQ29uc3VtZXI8VD4geyB9CisKKyAgICBpbnRlcmZhY2UgTXlDb25zdW1lcjxUIGV4dGVuZHMgUGFyZW50PiBleHRlbmRzIENvbnN1bWVyPFQ+IHsgfQorCisKKyAgICBwdWJsaWMgdm9pZCB0ZXN0KFNldDxNeUNvbnN1bWVyPiBzZXQpIHsKKyAgICAgICAgQFN1cHByZXNzV2FybmluZ3MoInVuY2hlY2tlZCIpCisgICAgICAgIE1hcDxQYXJlbnQsIE15Q29uc3VtZXI8UGFyZW50Pj4gbWFwID0gY3JlYXRlKHNldCk7CisKKyAgICB9CisKKyAgICBwdWJsaWMgPFMsIFQgZXh0ZW5kcyBDb25zdW1lcjxTPj4gTWFwPFMsIFQ+IGNyZWF0ZShTZXQ8VD4gY29uc3VtZXJzKSB7CisgICAgICAgIHJldHVybiBudWxsOworICAgIH0KKworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9nZW5lcmljc0hpZ2hsaWdodGluZy9JREVBOTcyNzYuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvZ2VuZXJpY3NIaWdobGlnaHRpbmcvSURFQTk3Mjc2LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzA1OWU4MwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvZ2VuZXJpY3NIaWdobGlnaHRpbmcvSURFQTk3Mjc2LmphdmEKQEAgLTAsMCArMSw0IEBACitpbnRlcmZhY2UgSW50ZXJmPFggZXh0ZW5kcyBJbnRlcmY+IHt9CitjbGFzcyBTb21lQ2xhc3MgeworICAgIHN0YXRpYyA8SSBleHRlbmRzIEludGVyZjw/IHN1cGVyIEk+PiBDbGFzczxJPiBzb21lTWV0aG9kKEkgaSkgeyByZXR1cm4gbnVsbDsgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9nZW5lcmljc0hpZ2hsaWdodGluZy9JREVBOTc4ODguamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvZ2VuZXJpY3NIaWdobGlnaHRpbmcvSURFQTk3ODg4LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWE4MjY3OAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvZ2VuZXJpY3NIaWdobGlnaHRpbmcvSURFQTk3ODg4LmphdmEKQEAgLTAsMCArMSwyMyBAQAoraW1wb3J0IGphdmEudXRpbC4qOworaW1wb3J0IGphdmEuaW8uRmlsZTsKK2NsYXNzIEZvbyB7CisgICAgcHVibGljIENvbGxlY3Rpb248QnVpbGRUYXJnZXQ8Pz4+IGdldERlcGVuZGVuY2llcyhMYXlvdXRFbGVtZW50QnVpbGRlclNlcnZpY2UgYnVpbGRlciwgSnBzUGFja2FnaW5nRWxlbWVudCBlbGVtZW50LCBUYXJnZXRPdXRwdXRJbmRleCBvdXRwdXRJbmRleCkgeworICAgICAgICByZXR1cm4gYnVpbGRlci5nZXREZXBlbmRlbmNpZXMoZWxlbWVudCwgb3V0cHV0SW5kZXgpOworICAgIH0KK30KKworY2xhc3MgQnVpbGRUYXJnZXQ8UiBleHRlbmRzIEJ1aWxkUm9vdERlc2NyaXB0b3I+IHt9CisKK2ludGVyZmFjZSBUYXJnZXRPdXRwdXRJbmRleCB7CisgICAgQ29sbGVjdGlvbjxCdWlsZFRhcmdldDw/Pj4gZ2V0VGFyZ2V0c0J5T3V0cHV0RmlsZShGaWxlIGZpbGUpOworfQorCitjbGFzcyBCdWlsZFJvb3REZXNjcmlwdG9yIHt9CisKK2NsYXNzIExheW91dEVsZW1lbnRCdWlsZGVyU2VydmljZTxFIGV4dGVuZHMgSnBzUGFja2FnaW5nRWxlbWVudD4geworICAgIHB1YmxpYyBDb2xsZWN0aW9uPD8gZXh0ZW5kcyBCdWlsZFRhcmdldDw/Pj4gZ2V0RGVwZW5kZW5jaWVzKEUgZWxlbWVudCwgVGFyZ2V0T3V0cHV0SW5kZXggb3V0cHV0SW5kZXgpIHsKKyAgICAgICAgcmV0dXJuIENvbGxlY3Rpb25zLmVtcHR5TGlzdCgpOworICAgIH0KK30KKworY2xhc3MgSnBzUGFja2FnaW5nRWxlbWVudCB7fQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvZ2VuZXJpY3NIaWdobGlnaHRpbmcvSURFQTk4NDIxLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2dlbmVyaWNzSGlnaGxpZ2h0aW5nL0lERUE5ODQyMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI4YWM4NmIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2dlbmVyaWNzSGlnaGxpZ2h0aW5nL0lERUE5ODQyMS5qYXZhCkBAIC0wLDAgKzEsMTEgQEAKK2NsYXNzIE91dGVyIHsKKyAgY2xhc3MgSW5uZXIgeworICAgIHB1YmxpYyA8VD4gSW5uZXIoVCB0KSB7IH0KKyAgfQorCisgIGNsYXNzIE90aGVyIGV4dGVuZHMgT3V0ZXIuSW5uZXIgeworICAgIHB1YmxpYyBPdGhlcigpIHsKKyAgICAgIG5ldyBPdXRlcigpLjxPYmplY3Q+c3VwZXIoIkhpIik7CisgICAgfQorICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2dlbmVyaWNzSGlnaGxpZ2h0aW5nL0lERUFERVYxMDQ1OS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9nZW5lcmljc0hpZ2hsaWdodGluZy9JREVBREVWMTA0NTkuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZTUyNjU5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9nZW5lcmljc0hpZ2hsaWdodGluZy9JREVBREVWMTA0NTkuamF2YQpAQCAtMCwwICsxLDMxIEBACitpbXBvcnQgamF2YS5pby5TZXJpYWxpemFibGU7CitpbXBvcnQgamF2YS51dGlsLkFycmF5TGlzdDsKK2ltcG9ydCBqYXZhLnV0aWwuTGlzdDsKKworLyoqIEBub2luc3BlY3Rpb24gVW51c2VkRGVjbGFyYXRpb24qLworcHVibGljIGNsYXNzIEdlbmVyaWNzVGVzdDk4IHsKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB0aHJvd3MgRXhjZXB0aW9ueworICAgICAgICBMaXN0PE1vdmFibGU8PyBleHRlbmRzIFNlcmlhbGl6YWJsZT4+IGxpc3QgPSBuZXcgQXJyYXlMaXN0PE1vdmFibGU8PyBleHRlbmRzIFNlcmlhbGl6YWJsZT4+ICgpOworICAgICAgICBGYWN0b3J5IGZhY3RvcnkgPSBGYWN0b3J5Lm5ld0luc3RhbmNlKCk7CisgICAgICAgIC8vIERvZXNuJ3QgY29tcGlsZSwgYnV0IElkZWEgZG9lc24ndCBjb21wbGFpbgorICAgICAgICBNb3Zlcjw/IGV4dGVuZHMgU2VyaWFsaXphYmxlPiBtb3ZlciAgPSBmYWN0b3J5LmdldE5ldzxlcnJvciBkZXNjcj0iJ2dldE5ldyhqYXZhLnV0aWwuTGlzdDw/IGV4dGVuZHMgTW92YWJsZTxUPj4pJyBpbiAnRmFjdG9yeScgY2Fubm90IGJlIGFwcGxpZWQgdG8gJyhqYXZhLnV0aWwuTGlzdDxNb3ZhYmxlPD8gZXh0ZW5kcyBqYXZhLmlvLlNlcmlhbGl6YWJsZT4+KSciPihsaXN0KTwvZXJyb3I+OworICAgIH0KK30KKworYWJzdHJhY3QgY2xhc3MgRmFjdG9yeSB7CisgICAgcHVibGljIHN0YXRpYyBGYWN0b3J5IG5ld0luc3RhbmNlKCl7CisgICAgICAgIHJldHVybiBudWxsOworICAgIH0KKworICAgIC8vIFRoaXMgc2hvdWxkIGFjdHVhbGx5IGJlCisgICAgLy8gcHVibGljIGFic3RyYWN0IDxUIGV4dGVuZHMgU2VyaWFsaXphYmxlPiBNb3ZlcjxUPiBnZXROZXcgKExpc3Q8PyBleHRlbmRzIE1vdmFibGU8PyBleHRlbmRzIFQ+PiBzb3VyY2UpOworICAgIHB1YmxpYyBhYnN0cmFjdCA8VCBleHRlbmRzIFNlcmlhbGl6YWJsZT4gTW92ZXI8VD4gZ2V0TmV3IChMaXN0PD8gZXh0ZW5kcyBNb3ZhYmxlPFQ+PiBzb3VyY2UpOworfQorCisvKiogQG5vaW5zcGVjdGlvbiBVbnVzZWREZWNsYXJhdGlvbiovCitpbnRlcmZhY2UgTW92YWJsZTxUIGV4dGVuZHMgU2VyaWFsaXphYmxlPiBleHRlbmRzIFNlcmlhbGl6YWJsZSB7Cit9CisKKy8qKiBAbm9pbnNwZWN0aW9uIFVudXNlZERlY2xhcmF0aW9uKi8KK2ludGVyZmFjZSBNb3ZlcjxUIGV4dGVuZHMgU2VyaWFsaXphYmxlPiB7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9nZW5lcmljc0hpZ2hsaWdodGluZy9JREVBREVWMTI5NTEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvZ2VuZXJpY3NIaWdobGlnaHRpbmcvSURFQURFVjEyOTUxLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDNjZDRiNgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvZ2VuZXJpY3NIaWdobGlnaHRpbmcvSURFQURFVjEyOTUxLmphdmEKQEAgLTAsMCArMSwyOSBAQAorY2xhc3MgQ2xhc3NFeHQgeworCisgICAgLyoqIEBub2luc3BlY3Rpb24gVW51c2VkRGVjbGFyYXRpb24qLworICAgIHB1YmxpYyBzdGF0aWMgPFQsIFAxLCBQMj4gVCBuZXdJbnN0YW5jZShDbGFzczxUPiBjbGF6eiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2xhc3M8PyBzdXBlciBQMT4gdDEsIFAxIHAxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDbGFzczw/IHN1cGVyIFAyPiB0MiwgUDIgcDIpIHsKKyAgICAgICAgcmV0dXJuIG51bGw7CisgICAgfQorCisKK30KKworYWJzdHJhY3QgY2xhc3MgVEtleTxUPiB7CisKKyAgICBwcm90ZWN0ZWQgYWJzdHJhY3QgQ2xhc3M8VD4gZ2V0VHlwZSgpOworfQorCisKK2NsYXNzIEdvb2RJc1JlZDYgeworCisKKyAgICBwdWJsaWMgc3RhdGljIDxUSyBleHRlbmRzIFRLZXk8Pz4+IFRLIGNyZWF0ZUNsb25lKFRLIHRrZXksIFN0cmluZyBrZXkpIHsKKworCisgICAgICAgIENsYXNzPFRLPiBjbGF6eiA9IG51bGw7CisKKyAgICAgICAgcmV0dXJuIENsYXNzRXh0Lm5ld0luc3RhbmNlKGNsYXp6LCBTdHJpbmcuY2xhc3MsIGtleSwgQ2xhc3MuY2xhc3MsIHRrZXkuZ2V0VHlwZSgpKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2dlbmVyaWNzSGlnaGxpZ2h0aW5nL0lERUFERVYxMzAxMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9nZW5lcmljc0hpZ2hsaWdodGluZy9JREVBREVWMTMwMTEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNGU1YzUzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9nZW5lcmljc0hpZ2hsaWdodGluZy9JREVBREVWMTMwMTEuamF2YQpAQCAtMCwwICsxLDI5IEBACisvKiogQG5vaW5zcGVjdGlvbiBVbnVzZWREZWNsYXJhdGlvbiovCitjbGFzcyBMaW1pdGVkUG9vbDxUPiB7CisgIHByaXZhdGUgaW50IGNhcGFjaXR5OworICBwcml2YXRlIGZpbmFsIE9iamVjdEZhY3Rvcnk8VD4gZmFjdG9yeTsKKyAgcHJpdmF0ZSBPYmplY3RbXSBzdG9yYWdlOworICBwcml2YXRlIGludCBpbmRleCA9IDA7CisKKyAgcHVibGljIExpbWl0ZWRQb29sKGZpbmFsIGludCBjYXBhY2l0eSwgT2JqZWN0RmFjdG9yeTxUPiBmYWN0b3J5KSB7CisgICAgdGhpcy5jYXBhY2l0eSA9IGNhcGFjaXR5OworICAgIHRoaXMuZmFjdG9yeSA9IGZhY3Rvcnk7CisgICAgc3RvcmFnZSA9IG5ldyBPYmplY3RbY2FwYWNpdHldOworICB9CisKKyAgaW50ZXJmYWNlIE9iamVjdEZhY3Rvcnk8VD4geworICAgIFQgY3JlYXRlKCk7CisgICAgdm9pZCBjbGVhbnVwKFQgdCk7CisgIH0KKworICBwdWJsaWMgVCBhbGxvYygpIHsKKyAgICBpZiAoaW5kZXggPj0gY2FwYWNpdHkpIHJldHVybiBmYWN0b3J5LmNyZWF0ZSgpOworCisgICAgaWYgKHN0b3JhZ2VbaW5kZXhdID09IG51bGwpIHsKKyAgICAgIHN0b3JhZ2VbaW5kZXhdID0gZmFjdG9yeS5jcmVhdGUoKTsKKyAgICB9CisKKyAgICA8ZXJyb3IgZGVzY3I9IkluY29tcGF0aWJsZSB0eXBlcy4gRm91bmQ6ICdqYXZhLmxhbmcuT2JqZWN0W10nLCByZXF1aXJlZDogJ1QnIj5yZXR1cm4gc3RvcmFnZTs8L2Vycm9yPgorICB9CisKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2dlbmVyaWNzSGlnaGxpZ2h0aW5nL0lERUFERVYxNDAwNi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9nZW5lcmljc0hpZ2hsaWdodGluZy9JREVBREVWMTQwMDYuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNzMyMDZiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9nZW5lcmljc0hpZ2hsaWdodGluZy9JREVBREVWMTQwMDYuamF2YQpAQCAtMCwwICsxLDE4IEBACisvKiogQG5vaW5zcGVjdGlvbiBVbnVzZWREZWNsYXJhdGlvbiovCitpbnRlcmZhY2UgVGVzdElGMjxUPiBleHRlbmRzIFRlc3RJRjM8VD4ge30KKworLyoqIEBub2luc3BlY3Rpb24gVW51c2VkRGVjbGFyYXRpb24qLworaW50ZXJmYWNlIFRlc3RJRjxUIGV4dGVuZHMgVGVzdElGMjw/IGV4dGVuZHMgVGVzdDI+PiB7CisgICAgdm9pZCBydW4oVCBvMSk7Cit9CisKKy8qKiBAbm9pbnNwZWN0aW9uIFVudXNlZERlY2xhcmF0aW9uKi8KK2ludGVyZmFjZSBUZXN0SUYzPFQ+IHt9CisKK2NsYXNzIFRlc3QyIHt9CisKK2NsYXNzIFRlc3QgeworICAgIHB1YmxpYyB2b2lkIHRlc3QoVGVzdElGPD8+IHRlc3RJRikgeworICAgICAgICB0ZXN0SUYucnVuPGVycm9yIGRlc2NyPSIncnVuKGNhcHR1cmU8PyBleHRlbmRzIFRlc3RJRjI8PyBleHRlbmRzIFRlc3QyPj4pJyBpbiAnVGVzdElGJyBjYW5ub3QgYmUgYXBwbGllZCB0byAnKCknIj4oKTwvZXJyb3I+OworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2dlbmVyaWNzSGlnaGxpZ2h0aW5nL0lERUFERVYxNDEwMy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9nZW5lcmljc0hpZ2hsaWdodGluZy9JREVBREVWMTQxMDMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43N2U2YmIwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9nZW5lcmljc0hpZ2hsaWdodGluZy9JREVBREVWMTQxMDMuamF2YQpAQCAtMCwwICsxLDUyIEBACitjbGFzcyBUZXN0R2VuZXJpY3MgeworCisgICAgc3RhdGljIGludGVyZmFjZSBFbnVtSW50ZXJmYWNlIHsKKyAgICAgICAgcHVibGljIFN0cmluZyBnZXRTb21ldGhpbmcoKTsKKyAgICB9CisKKyAgICBzdGF0aWMgZW51bSBFbnVtMSBpbXBsZW1lbnRzIEVudW1JbnRlcmZhY2UgeworICAgICAgICBBKCJhbHBoYSIpLAorICAgICAgICBCKCJiZXRhIiksCisgICAgICAgIEcoImdhbW1lIiksCisgICAgICAgIDsKKyAgICAgICAgcHJpdmF0ZSBTdHJpbmcgdGV4dDsKKworICAgICAgICBFbnVtMShTdHJpbmcgdGV4dCkgeworICAgICAgICAgICAgdGhpcy50ZXh0ID0gdGV4dDsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyBTdHJpbmcgZ2V0U29tZXRoaW5nKCkgeworICAgICAgICAgICAgcmV0dXJuIHRleHQ7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBzdGF0aWMgY2xhc3MgVGVzdEJhc2U8SSBleHRlbmRzIEVudW08ST4gJiBFbnVtSW50ZXJmYWNlPiB7CisKKyAgICAgICAgcHJvdGVjdGVkIGZpbmFsIHZvaWQgYWRkKEV2YWwgZXZhbCkgeworICAgICAgICAgICAgZXZhbC5oYXNoQ29kZSgpOworICAgICAgICB9CisKKyAgICAgICAgYWJzdHJhY3QgY2xhc3MgRXZhbCB7CisgICAgICAgICAgICBwcml2YXRlIEkgZW51bUk7CisKKyAgICAgICAgICAgIHB1YmxpYyBFdmFsKEkgZW51bUkpIHsKKyAgICAgICAgICAgICAgICB0aGlzLmVudW1JID0gZW51bUk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHB1YmxpYyBmaW5hbCB2b2lkIGRvU29tZXRoaW5nKCkgeworICAgICAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihlbnVtSS5nZXRTb21ldGhpbmcoKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgIH0KKworCisKKworICAgIGNsYXNzIFRlc3QxIGV4dGVuZHMgVGVzdEJhc2U8RW51bTE+IHsKKworICAgICAgICBwdWJsaWMgVGVzdDEoKSB7CisgICAgICAgICAgICBhZGQobmV3IEV2YWwoRW51bTEuQSkge30pOworICAgICAgICB9CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9nZW5lcmljc0hpZ2hsaWdodGluZy9JREVBREVWMTU1MzQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvZ2VuZXJpY3NIaWdobGlnaHRpbmcvSURFQURFVjE1NTM0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDQwNDJhNQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvZ2VuZXJpY3NIaWdobGlnaHRpbmcvSURFQURFVjE1NTM0LmphdmEKQEAgLTAsMCArMSwyOSBAQAoraW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7CitpbXBvcnQgamF2YS51dGlsLkNvbGxlY3Rpb25zOworCitjbGFzcyBTb3J0VGVzdDxSIGV4dGVuZHMgQ29tcGFyYWJsZTxSPj4gaW1wbGVtZW50cyBDb21wYXJhYmxlPFNvcnRUZXN0PFI+PiB7CisgICAgUiByOworCisgICAgcHVibGljIFNvcnRUZXN0KFIgcikgeworICAgICAgICB0aGlzLnIgPSByOworICAgIH0KKworICAgIHB1YmxpYyBpbnQgY29tcGFyZVRvKFNvcnRUZXN0PFI+IG8pIHsKKyAgICAgICAgcmV0dXJuIHIuY29tcGFyZVRvKG8ucik7CisgICAgfQorCisgICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgeworICAgICAgICBBcnJheUxpc3Q8U29ydFRlc3Q8Pz4+IGxpc3QgPSBuZXcgQXJyYXlMaXN0PFNvcnRUZXN0PD8+PigpOworICAgICAgICBTb3J0VGVzdDw/PiB0MSA9IG5ldyBTb3J0VGVzdDxTdHJpbmc+KCIiKTsKKyAgICAgICAgbGlzdC5hZGQodDEpOworICAgICAgICBTb3J0VGVzdDw/PiB0MiA9IG5ldyBTb3J0VGVzdDxJbnRlZ2VyPigwKTsKKyAgICAgICAgbGlzdC5hZGQodDIpOworICAgICAgICA8ZXJyb3IgZGVzY3I9IkluZmVycmVkIHR5cGUgJ1NvcnRUZXN0PGNhcHR1cmU8Pz4+JyBmb3IgdHlwZSBwYXJhbWV0ZXIgJ1QnIGlzIG5vdCB3aXRoaW4gaXRzIGJvdW5kOyBzaG91bGQgaW1wbGVtZW50ICdqYXZhLmxhbmcuQ29tcGFyYWJsZTw/IHN1cGVyIFNvcnRUZXN0PD8+PiciPkNvbGxlY3Rpb25zLnNvcnQobGlzdCk8L2Vycm9yPjsKKyAgICAgICAgdDEuY29tcGFyZVRvPGVycm9yIGRlc2NyPSInY29tcGFyZVRvKFNvcnRUZXN0PGNhcHR1cmU8PyBleHRlbmRzIGphdmEubGFuZy5Db21wYXJhYmxlPGNhcHR1cmU8Pz4+Pj4pJyBpbiAnU29ydFRlc3QnIGNhbm5vdCBiZSBhcHBsaWVkIHRvICcoU29ydFRlc3Q8Y2FwdHVyZTw/Pj4pJyI+KHQyKTwvZXJyb3I+OworCisgICAgICAgIC8vdGhpcyBzaG91bGQgYmUgT0sKKyAgICAgICAgU29ydFRlc3Q8Pz5bXSBhcnIgPSBuZXcgU29ydFRlc3Q8Pz5bMF07CisgICAgICAgIGFyclswXSA9IG5ldyBTb3J0VGVzdDxTdHJpbmc+KCIiKTsKKyAgICB9CisKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2dlbmVyaWNzSGlnaGxpZ2h0aW5nL0lERUFERVYyMzE1Ny5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9nZW5lcmljc0hpZ2hsaWdodGluZy9JREVBREVWMjMxNTcuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMGMyYjcwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9nZW5lcmljc0hpZ2hsaWdodGluZy9JREVBREVWMjMxNTcuamF2YQpAQCAtMCwwICsxLDEwIEBACitpbXBvcnQgamF2YS51dGlsLkxpc3Q7CitpbXBvcnQgamF2YS51dGlsLkFycmF5czsKKworcHVibGljIGNsYXNzIFpaWiB7CisKKyAgICBMaXN0PENsYXNzPD8+PiBmKENsYXNzPD8+W10gZXhjZXB0aW9uVHlwZXMpIHsKKyAgICAgICBMaXN0PENsYXNzPD8+PiBuZCA9IEFycmF5cy5hc0xpc3QoZXhjZXB0aW9uVHlwZXMpOworICAgICAgIHJldHVybiBuZDsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9nZW5lcmljc0hpZ2hsaWdodGluZy9JREVBREVWMjQxNjYuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvZ2VuZXJpY3NIaWdobGlnaHRpbmcvSURFQURFVjI0MTY2LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzE5NTJkMQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvZ2VuZXJpY3NIaWdobGlnaHRpbmcvSURFQURFVjI0MTY2LmphdmEKQEAgLTAsMCArMSw0OSBAQAoraW1wb3J0IGphdmEudXRpbC4qOworCitpbnRlcmZhY2UgVHlwZXNhZmVNYXA8QkFTRT4geworCisgIEBTdXBwcmVzc1dhcm5pbmdzKHsiVW51c2VkRGVjbGFyYXRpb24ifSkKKyAgcHVibGljIGludGVyZmFjZSBLZXk8QkFTRSxWQUxVRT4geyB9CisKKyAgcHVibGljIDxWQUxVRSwgS0VZIGV4dGVuZHMgS2V5PEJBU0UsVkFMVUU+PgorICAgIGJvb2xlYW4gaGFzKENsYXNzPEtFWT4ga2V5KTsKKworICBwdWJsaWMgPFZBTFVFLCBLRVkgZXh0ZW5kcyBLZXk8QkFTRSxWQUxVRT4+CisgICAgVkFMVUUgZ2V0KENsYXNzPEtFWT4ga2V5KTsKKworICBwdWJsaWMgPFZBTFVFQkFTRSwgVkFMVUUgZXh0ZW5kcyBWQUxVRUJBU0UsIEtFWSBleHRlbmRzIEtleTxCQVNFLFZBTFVFQkFTRT4+CisgICAgVkFMVUUgc2V0KENsYXNzPEtFWT4ga2V5LCBWQUxVRSB2YWx1ZSk7CisKKyAgcHVibGljIDxWQUxVRSwgS0VZIGV4dGVuZHMgS2V5PEJBU0UsVkFMVUU+PgorICAgIFZBTFVFIHJlbW92ZShDbGFzczxLRVk+IGtleSk7CisKKyAgcHVibGljIFNldDxDbGFzczw/Pj4ga2V5U2V0KCk7CisKKyAgcHVibGljIDxWQUxVRSwgS0VZIGV4dGVuZHMgS2V5PENvcmVNYXAsIFZBTFVFPj4KKyAgICBib29sZWFuIGNvbnRhaW5zS2V5KENsYXNzPEtFWT4ga2V5KTsKK30KKworCitpbnRlcmZhY2UgQ29yZU1hcCBleHRlbmRzIFR5cGVzYWZlTWFwPENvcmVNYXA+IHsgfQorCitpbnRlcmZhY2UgQ29yZUFubm90YXRpb248Vj4KKyAgZXh0ZW5kcyBUeXBlc2FmZU1hcC5LZXk8Q29yZU1hcCwgVj4geworCisgIHB1YmxpYyBDbGFzczxWPiBnZXRUeXBlKCk7Cit9CisKKworY2xhc3MgQ29yZU1hcHMgeworCisgIHB1YmxpYyBzdGF0aWMgPEssVj4gTWFwPEssVj4gdG9NYXAoQ29sbGVjdGlvbjxDb3JlTWFwPiBjb3JlbWFwcywKKyAgICAgIENsYXNzPENvcmVBbm5vdGF0aW9uPEs+PiBrZXlLZXksIENsYXNzPENvcmVBbm5vdGF0aW9uPFY+PiB2YWx1ZUtleSkgeworCisgICAgTWFwPEssVj4gbWFwID0gbmV3IEhhc2hNYXA8SyxWPigpOworICAgIGZvciAoQ29yZU1hcCBjbSA6IGNvcmVtYXBzKSB7CisgICAgICBtYXAucHV0KGNtLmdldChrZXlLZXkpLCBjbS5nZXQodmFsdWVLZXkpKTsKKyAgICB9CisKKyAgICByZXR1cm4gbWFwOworICB9Cit9CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvZ2VuZXJpY3NIaWdobGlnaHRpbmcvSURFQURFVjI1Nzc4LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2dlbmVyaWNzSGlnaGxpZ2h0aW5nL0lERUFERVYyNTc3OC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE0NmE0YTgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2dlbmVyaWNzSGlnaGxpZ2h0aW5nL0lERUFERVYyNTc3OC5qYXZhCkBAIC0wLDAgKzEsMTcgQEAKK2NsYXNzIFByaWNlIHsKKyAgICBwdWJsaWMgPFBUIGV4dGVuZHMgUHJpY2U+IFBUIGNsb25lKCkgeworICAgICAgICByZXR1cm4gbnVsbDsKKyAgICB9Cit9CisKK2NsYXNzIEJvbmRQcmljZSBleHRlbmRzIFByaWNlIHsKKyAgICBwdWJsaWMgPFBUIGV4dGVuZHMgQm9uZFByaWNlPiBQVCBjbG9uZSgpIHsKKyAgICAgICAgcmV0dXJuIG51bGw7CisgICAgfQorfQorCitjbGFzcyBVc2VyIHsKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CisgICAgICAgIG5ldyBCb25kUHJpY2UoKS5jbG9uZTxlcnJvciBkZXNjcj0iQW1iaWd1b3VzIG1ldGhvZCBjYWxsOiBib3RoICdCb25kUHJpY2UuY2xvbmUoKScgYW5kICdQcmljZS5jbG9uZSgpJyBtYXRjaCI+KCk8L2Vycm9yPjsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9nZW5lcmljc0hpZ2hsaWdodGluZy9JREVBREVWNTczNDMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvZ2VuZXJpY3NIaWdobGlnaHRpbmcvSURFQURFVjU3MzQzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzA0NTYyMQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvZ2VuZXJpY3NIaWdobGlnaHRpbmcvSURFQURFVjU3MzQzLmphdmEKQEAgLTAsMCArMSw2IEBACitjbGFzcyBEPFQ+ICB7CisgICAgdm9pZCBmb28oRDw/PiB4KXsKKyAgICAgICAgYmFyPGVycm9yIGRlc2NyPSInYmFyKEQ8Pz4sIEQ8PyBzdXBlciBqYXZhLmxhbmcuT2JqZWN0PiknIGluICdEJyBjYW5ub3QgYmUgYXBwbGllZCB0byAnKEQ8Y2FwdHVyZTw/Pj4sIEQ8Y2FwdHVyZTw/Pj4pJyI+KHgseCk8L2Vycm9yPjsKKyAgICB9CisgICAgPFQ+IHZvaWQgYmFyKEQ8PyBleHRlbmRzIFQ+IHgsIEQ8PyBzdXBlciBUPiB5KXt9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9nZW5lcmljc0hpZ2hsaWdodGluZy9JREVBREVWNzMzNy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9nZW5lcmljc0hpZ2hsaWdodGluZy9JREVBREVWNzMzNy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlhYmM3ZjUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2dlbmVyaWNzSGlnaGxpZ2h0aW5nL0lERUFERVY3MzM3LmphdmEKQEAgLTAsMCArMSw3NCBAQAoraW1wb3J0IGphdmEuaW8uU2VyaWFsaXphYmxlOworaW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7CitpbXBvcnQgamF2YS51dGlsLkxpc3Q7CitpbXBvcnQgamF2YS51dGlsLkNvbXBhcmF0b3I7CisKKworY2xhc3MgVGVzdElERUEKK3sKKworICBwdWJsaWMgc3RhdGljIGNsYXNzIFRlc3QxPFR5cGUgZXh0ZW5kcyBMaXN0ICYgU2VyaWFsaXphYmxlPgorICB7CisgICAgcHVibGljIHZvaWQgcHJvY2VzcyhTZXJpYWxpemFibGUgcykKKyAgICB7CisgICAgfQorICAgIHB1YmxpYyB2b2lkIHByb2Nlc3MoVHlwZSB0KQorICAgIHsKKyAgICB9CisgIH0KKworICBwdWJsaWMgc3RhdGljIGNsYXNzIFRlc3QyIGV4dGVuZHMgVGVzdDE8QXJyYXlMaXN0PgorICB7CisgICAgcHVibGljIHZvaWQgcHJvY2VzcyhTZXJpYWxpemFibGUgcykKKyAgICB7CisgICAgICBzdXBlci5wcm9jZXNzKHMpOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHByb2Nlc3MoQXJyYXlMaXN0IHQpCisgICAgeworICAgICAgc3VwZXIucHJvY2Vzcyh0KTsgICAvLyB0aGlzIGNhbGwgaXMgT0sgcmVzb2x2aW5nIHRvIHBhcmFtZXRlcml6ZWQgbWV0aG9kIGluIHN1cGVyCisgICAgfQorICB9CisKKyAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykKKyAgeworICAgIFRlc3QyIHRlc3Q9bmV3IFRlc3QyKCk7CisgICAgQXJyYXlMaXN0IGxpc3Q9bmV3IEFycmF5TGlzdCgpOworICAgIHRlc3QucHJvY2VzcyhsaXN0KTsKKyAgICB0ZXN0LnByb2Nlc3MoKFNlcmlhbGl6YWJsZSlsaXN0KTsKKyAgfQorfQorCitjbGFzcyBLZXk8VD4geworICAgIE9iamVjdCBhZGQoVCB2KSB7CisgICAgICAgIHJldHVybiB2OworICAgIH0KK30KKworY2xhc3MgV0tleTxXLCBUPiBleHRlbmRzIEtleTxUPiB7CisKKyAgICBXIGFkZChUIHYpIHsKKyAgICAgICAgcmV0dXJuIG51bGw7CisgICAgfQorfQorCitjbGFzcyBJQnVnIHsKKworICAgIHB1YmxpYyBzdGF0aWMgPFcsIFQ+IHZvaWQgYWRkSXRlbShXS2V5PFcsIFQ+IGtleSwgVCB2KSB7CisgICAgICAgIGtleS5hZGQodik7IC8vIC0tPiBkZW1ldHJhIGRyYXcgdGhpcyBpbiByZWQsIHNlZSBhdHRhY2htZW50CisgICAgfQorfQorCisvL0lERUFERVYtNzY5OAorYWJzdHJhY3QgY2xhc3MgQ29sbGF0b3IgaW1wbGVtZW50cyBDb21wYXJhdG9yPE9iamVjdD4geworICBwdWJsaWMgYWJzdHJhY3QgaW50IGNvbXBhcmUoU3RyaW5nIHNvdXJjZSwgU3RyaW5nIHRhcmdldCk7CisKKyAgcHVibGljIGludCBjb21wYXJlKE9iamVjdCBvMSwgT2JqZWN0IG8yKSB7CisgICAgcmV0dXJuIGNvbXBhcmUoKFN0cmluZylvMSwgKFN0cmluZylvMik7CisgIH0KKworICBwdWJsaWMgdm9pZCBmb28oQ29sbGF0b3IgYykgeworICAgIGMuY29tcGFyZSgiZm9vIiwgImJhciIpOworICB9Cit9CisvL2VuZCBvZiAvL0lERUFERVYtNzY5OApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvZ2VuZXJpY3NIaWdobGlnaHRpbmcvSWxsZWdhbEdlbmVyaWNUeXBlSW5JbnN0YW5jZW9mLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2dlbmVyaWNzSGlnaGxpZ2h0aW5nL0lsbGVnYWxHZW5lcmljVHlwZUluSW5zdGFuY2VvZi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUyODcxZTgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2dlbmVyaWNzSGlnaGxpZ2h0aW5nL0lsbGVnYWxHZW5lcmljVHlwZUluSW5zdGFuY2VvZi5qYXZhCkBAIC0wLDAgKzEsNTMgQEAKK2NsYXNzIEE8VD4geworICBwdWJsaWMgdm9pZCBmb28oT2JqZWN0IG9iamVjdCkgeworICAgIGlmIChvYmplY3QgaW5zdGFuY2VvZiA8ZXJyb3IgZGVzY3I9IklsbGVnYWwgZ2VuZXJpYyB0eXBlIGZvciBpbnN0YW5jZW9mIj5CPC9lcnJvcj4pIHt9CisgICAgaWYgKG9iamVjdCBpbnN0YW5jZW9mIEEuQikge30KKyAgICBpZiAob2JqZWN0IGluc3RhbmNlb2YgQTw/Pi5CKSB7fQorICAgIGlmIChvYmplY3QgaW5zdGFuY2VvZiBBPD8+KSB7fQorICAgIGlmIChvYmplY3QgaW5zdGFuY2VvZiA8ZXJyb3IgZGVzY3I9IklsbGVnYWwgZ2VuZXJpYyB0eXBlIGZvciBpbnN0YW5jZW9mIj5BPFN0cmluZz48L2Vycm9yPikge30KKyAgICBpZiAob2JqZWN0IGluc3RhbmNlb2YgQSkge30KKyAgICBpZiAob2JqZWN0IGluc3RhbmNlb2YgQVtdKSB7fQorICAgIGlmIChvYmplY3QgaW5zdGFuY2VvZiA8ZXJyb3IgZGVzY3I9IklsbGVnYWwgZ2VuZXJpYyB0eXBlIGZvciBpbnN0YW5jZW9mIj5CW108L2Vycm9yPikge30KKyAgICBpZiAob2JqZWN0IGluc3RhbmNlb2YgQS5CW10pIHt9CisgIH0KKworICBwcml2YXRlIGNsYXNzIEIgeworICB9Cit9CisKK2NsYXNzIEExIHsKKyAgcHVibGljIHZvaWQgZm9vKE9iamVjdCBvYmplY3QpIHsKKyAgICBpZiAob2JqZWN0IGluc3RhbmNlb2YgQjEpIHt9CisgICAgaWYgKG9iamVjdCBpbnN0YW5jZW9mIEExLkIxKSB7fQorICAgIGlmIChvYmplY3QgaW5zdGFuY2VvZiBCMVtdKSB7fQorICB9CisKKyAgcHJpdmF0ZSBjbGFzcyBCMSB7CisgIH0KK30KKworY2xhc3MgQnJlYWtwb2ludFRyZWU8VFA+IHsKKyAgICB2b2lkIGZvbyhOb2RlIG5vZGUpIHsKKyAgICAgICAgaWYgKG5vZGUgaW5zdGFuY2VvZiBCTm9kZTw/PikgeworCisgICAgICAgIH0KKyAgICB9CisKKyAgICBzdGF0aWMgY2xhc3MgQk5vZGU8QiBleHRlbmRzIFhCcmVha3BvaW50PD8+PiBleHRlbmRzIE5vZGV7fQorfQorY2xhc3MgTm9kZSB7fQorY2xhc3MgWEJyZWFrcG9pbnQ8U1I+e30KKworcHVibGljIGNsYXNzIEdlbmVyaWNJbm5lckNsYXNzPEU+IHsKKyAgICBwcml2YXRlIHZvaWQgcHJvYmxlbSggQmFzZSBiYXNlICkgeworICAgICAgICBpZiAoIGJhc2UgaW5zdGFuY2VvZiBGaXJzdCkge30KKyAgICB9CisKKyAgICBwcml2YXRlIGNsYXNzIEJhc2UgeworICAgIH0KKworICAgIHByaXZhdGUgY2xhc3MgRmlyc3Q8VD4gZXh0ZW5kcyBCYXNlIHsKKyAgICB9CisKK30KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9nZW5lcmljc0hpZ2hsaWdodGluZy9JbXBsZW1lbnRBbm5vdGF0aW9uLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2dlbmVyaWNzSGlnaGxpZ2h0aW5nL0ltcGxlbWVudEFubm90YXRpb24uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYmUxZTMwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9nZW5lcmljc0hpZ2hsaWdodGluZy9JbXBsZW1lbnRBbm5vdGF0aW9uLmphdmEKQEAgLTAsMCArMSwxNSBAQAoraW1wb3J0IGphdmEubGFuZy5hbm5vdGF0aW9uLkFubm90YXRpb247CisKK3B1YmxpYyBAaW50ZXJmYWNlIEZvbyB7CisgICAgU3RyaW5nIGlkKCk7Cit9CisKK2NsYXNzIEJhciBpbXBsZW1lbnRzIEZvbyB7CisgICAgcHVibGljIFN0cmluZyBpZCgpIHsKKyAgICAgICAgcmV0dXJuIG51bGw7CisgICAgfQorCisgICAgcHVibGljIENsYXNzPD8gZXh0ZW5kcyBBbm5vdGF0aW9uPiBhbm5vdGF0aW9uVHlwZSgpIHsKKyAgICAgICAgcmV0dXJuIG51bGw7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9nZW5lcmljc0hpZ2hsaWdodGluZy9JbmFjY2Vzc2libGVUaHJvdWdoV2lsZGNhcmQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvZ2VuZXJpY3NIaWdobGlnaHRpbmcvSW5hY2Nlc3NpYmxlVGhyb3VnaFdpbGRjYXJkLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODRlYTU2MQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvZ2VuZXJpY3NIaWdobGlnaHRpbmcvSW5hY2Nlc3NpYmxlVGhyb3VnaFdpbGRjYXJkLmphdmEKQEAgLTAsMCArMSwxMyBAQAorY2xhc3MgSmF2YWNDb25maWd1cmF0aW9uIHsKKyAgcHJpdmF0ZSBmaW5hbCBTdHJpbmcgbXlTZXR0aW5ncyA9ICIiOworCisgIHB1YmxpYyBzdGF0aWMgdm9pZCBmb28oQ2xhc3M8PyBleHRlbmRzIEphdmFjQ29uZmlndXJhdGlvbj4gYUNsYXNzKSB7CisgICAgT2JqZWN0IG8gPSBnZXRTZXJ2aWNlKGFDbGFzcykuPGVycm9yIGRlc2NyPSInbXlTZXR0aW5ncycgaGFzIHByaXZhdGUgYWNjZXNzIGluICdKYXZhY0NvbmZpZ3VyYXRpb24nIj5teVNldHRpbmdzPC9lcnJvcj47CisgICAgSmF2YWNDb25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb24gPSBnZXRTZXJ2aWNlKGFDbGFzcyk7CisgICAgU3RyaW5nIHN0cmluZyA9IGNvbmZpZ3VyYXRpb24ubXlTZXR0aW5nczsKKyAgfQorCisgICAgcHVibGljIHN0YXRpYyA8VD4gVCBnZXRTZXJ2aWNlKENsYXNzPFQ+IHNlcnZpY2VDbGFzcykgeworICAgICAgIHJldHVybiBudWxsOworICAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9nZW5lcmljc0hpZ2hsaWdodGluZy9JbmNvbXBhdGlibGVSZXR1cm5UeXBlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2dlbmVyaWNzSGlnaGxpZ2h0aW5nL0luY29tcGF0aWJsZVJldHVyblR5cGUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNmNjNzYxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9nZW5lcmljc0hpZ2hsaWdodGluZy9JbmNvbXBhdGlibGVSZXR1cm5UeXBlLmphdmEKQEAgLTAsMCArMSwyMCBAQAorYWJzdHJhY3QgY2xhc3MgRjxBLCBCPiB7CisgIHB1YmxpYyBhYnN0cmFjdCBCIGYoQSBhKTsKKworICBwdWJsaWMgZmluYWwgRjxBLCBQMTxCPj4gbGF6eSgpIHsKKyAgICByZXR1cm4gbmV3IEY8QSwgUDE8Qj4+KCkgeworICAgICAgcHVibGljIFAxPEI+IGYoZmluYWwgQSBhKSB7CisgICAgICAgIHJldHVybiBudWxsOworICAgICAgfQorICAgIH07CisgIH0KKworICBwcml2YXRlIGNsYXNzIFRlc3RDbGllbnQ8QSwgQj4gZXh0ZW5kcyBGPEEsIFAxPEI+PiB7CisgICAgcHVibGljIFAxPEI+IGYoZmluYWwgQSBhKSB7CisgICAgICByZXR1cm4gbnVsbDsKKyAgICB9CisgIH0KK30KKworY2xhc3MgUDE8VD4geworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvZ2VuZXJpY3NIaWdobGlnaHRpbmcvSW5jb252ZXJ0aWJsZVR5cGVzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2dlbmVyaWNzSGlnaGxpZ2h0aW5nL0luY29udmVydGlibGVUeXBlcy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIwNjM4OWYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2dlbmVyaWNzSGlnaGxpZ2h0aW5nL0luY29udmVydGlibGVUeXBlcy5qYXZhCkBAIC0wLDAgKzEsOCBAQAoraW1wb3J0IGphdmEudXRpbC4qOworCitjbGFzcyBUZXN0IHsKKyAgdm9pZCBmb28oKXsKKyAgICBQcm9wZXJ0aWVzIHByb3BlcnRpZXMgPSBTeXN0ZW0uZ2V0UHJvcGVydGllcygpOworICAgIGZpbmFsIE1hcDxTdHJpbmcsIFN0cmluZz4gc3lzdGVtUHJvcGVydGllcyA9IDxlcnJvciBkZXNjcj0iSW5jb252ZXJ0aWJsZSB0eXBlczsgY2Fubm90IGNhc3QgJ2phdmEudXRpbC5Qcm9wZXJ0aWVzJyB0byAnamF2YS51dGlsLk1hcDxqYXZhLmxhbmcuU3RyaW5nLGphdmEubGFuZy5TdHJpbmc+JyI+KE1hcDxTdHJpbmcsIFN0cmluZz4pIHByb3BlcnRpZXM8L2Vycm9yPjsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvZ2VuZXJpY3NIaWdobGlnaHRpbmcvSW5mZXJlbmNlV2l0aEJvdW5kcy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9nZW5lcmljc0hpZ2hsaWdodGluZy9JbmZlcmVuY2VXaXRoQm91bmRzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmZkYjhjNQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvZ2VuZXJpY3NIaWdobGlnaHRpbmcvSW5mZXJlbmNlV2l0aEJvdW5kcy5qYXZhCkBAIC0wLDAgKzEsNjEgQEAKK2ltcG9ydCBqYXZhLnV0aWwuKjsKKworY2xhc3MgQ0xTIHsKKyAgICBzdGF0aWMgPFYgZXh0ZW5kcyBTdHJpbmc+ICB2b2lkIGJhciAoViB2KSB7fQorCisgICAgc3RhdGljIHZvaWQgZm9vICgpIHsKKyAgICAgICAgYmFyPGVycm9yIGRlc2NyPSInYmFyKGphdmEubGFuZy5TdHJpbmcpJyBpbiAnQ0xTJyBjYW5ub3QgYmUgYXBwbGllZCB0byAnKGphdmEubGFuZy5PYmplY3QpJyI+KG5ldyBPYmplY3QoKSk8L2Vycm9yPjsKKyAgICB9Cit9CisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KK3B1YmxpYyBhYnN0cmFjdCBjbGFzcyBaWlo8Sz4geworICBwdWJsaWMgYWJzdHJhY3QgPFQgZXh0ZW5kcyBTdHJpbmc+IFpaWjxUPiBnZXQoKTsKK30KK2NsYXNzIFoyPEs+IGV4dGVuZHMgWlpaPEs+IHsKKyAgICBwdWJsaWMgPFQgZXh0ZW5kcyBTdHJpbmc+IFoyPFQ+IGdldCgpIHsKKyAgICAgICAgcmV0dXJuIG51bGw7CisgICAgfQorICAgIHZvaWQgZigpIHsKKyAgICAgICAgWjIgejIgPSBnZXQoKTsKKyAgICB9Cit9CisvLy8vLy8vLy8vLy8vLy8vLworYWJzdHJhY3QgY2xhc3MgTGVhc3RSZWNlbnRseVVzZWRDYWNoZSB7CitpbnRlcmZhY2UgQ2FsbGFibGU8Vj4geworICAgIFYgY2FsbCgpIHRocm93cyBFeGNlcHRpb247Cit9CisKKyAgICA8RSBleHRlbmRzIEE+IENhbGxhYmxlPEU+IGUoRSBlKSB7CisgICAgICAgIHJldHVybiBudWxsOworICAgIH0KKyAgICA8VCBleHRlbmRzIEI+IENhbGxhYmxlPFQ+IGYoYm9vbGVhbiBiLCBmaW5hbCBUIHQpIHsKKyAgICAgICAgcmV0dXJuIGIgPyBlKHQpIDogbmV3IENhbGxhYmxlPFQ+KCkgeworICAgICAgICAgICAgcHVibGljIFQgY2FsbCgpIHRocm93cyBFeGNlcHRpb24geworICAgICAgICAgICAgICAgIHJldHVybiB0OworICAgICAgICAgICAgfQorICAgICAgICB9OworICAgIH0KKworICAgIHZvaWQgZmYoKSB7CisKKyAgICB9CisKKyAgICBjbGFzcyBBIHt9CisgICAgY2xhc3MgQiBleHRlbmRzIEEge30KK30KKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCitwdWJsaWMgY2xhc3MgQmFkQ29kZUdyZWVuPFQsIEMgZXh0ZW5kcyBDb2xsZWN0aW9uPD8gZXh0ZW5kcyBUPj4geworICAgIHB1YmxpYyBCYWRDb2RlR3JlZW4oQyBjLCBUIHQpIHsKKyAgICAgICAgYy5hZGQ8ZXJyb3IgZGVzY3I9IidhZGQoY2FwdHVyZTw/IGV4dGVuZHMgVD4pJyBpbiAnamF2YS51dGlsLkNvbGxlY3Rpb24nIGNhbm5vdCBiZSBhcHBsaWVkIHRvICcoVCknIj4odCk8L2Vycm9yPjsKKyAgICB9Cit9CisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCithYnN0cmFjdCBjbGFzcyBBIHsKKyAgICBwdWJsaWMgYWJzdHJhY3QgPFQgZXh0ZW5kcyBMaXN0PD8+PiBUIGNyZWF0ZSgpOworfQorY2xhc3MgQiBleHRlbmRzIEEgeworICAgIHB1YmxpYyA8VCBleHRlbmRzIExpc3Q8Pz4+IFQgY3JlYXRlKCkgeworICAgICAgICByZXR1cm4gbnVsbDsKKyAgICB9Cit9CisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2dlbmVyaWNzSGlnaGxpZ2h0aW5nL0luZmVyZW5jZVdpdGhCb3hpbmdDb3ZhcmlhbnQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvZ2VuZXJpY3NIaWdobGlnaHRpbmcvSW5mZXJlbmNlV2l0aEJveGluZ0NvdmFyaWFudC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM3OGY4OTM0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9nZW5lcmljc0hpZ2hsaWdodGluZy9JbmZlcmVuY2VXaXRoQm94aW5nQ292YXJpYW50LmphdmEKQEAgLTAsMCArMSwxNiBAQAoraW1wb3J0IGphdmEudXRpbC4qOworCitjbGFzcyBUZXN0IHsKKyAgc3RhdGljIGNsYXNzIFBhaXI8QSwgQj4geworICAgIFBhaXIoQSBhLCBCIGIpIHsKKyAgICB9CisKKyAgICBzdGF0aWMgPEEsIEI+IFBhaXI8QSwgQj4gY3JlYXRlKEEgYSwgQiBiKSB7CisgICAgICByZXR1cm4gbmV3IFBhaXI8QSwgQj4oYSwgYik7CisgICAgfQorICB9CisKKyAgcHVibGljIHN0YXRpYyB2b2lkIGdldFdvcmRzV2l0aE9mZnNldChTdHJpbmcgcywgaW50IHN0YXJ0SW5kLCBmaW5hbCBMaXN0PFBhaXI8U3RyaW5nLCBJbnRlZ2VyPj4gcmVzKSB7CisgICAgcmVzLmFkZChQYWlyLmNyZWF0ZShzLCBzdGFydEluZCkpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9nZW5lcmljc0hpZ2hsaWdodGluZy9JbmZlcmVuY2VXaXRoU3VwZXJCb3VuZHMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvZ2VuZXJpY3NIaWdobGlnaHRpbmcvSW5mZXJlbmNlV2l0aFN1cGVyQm91bmRzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDY4ZjkwNwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvZ2VuZXJpY3NIaWdobGlnaHRpbmcvSW5mZXJlbmNlV2l0aFN1cGVyQm91bmRzLmphdmEKQEAgLTAsMCArMSwxNiBAQAorcHVibGljIGNsYXNzIEV4YW1wbGVQcm9ibGVtIHsKKyAgICA8VD4gdm9pZCBhc3NlcnRpbmcoVCB0LCBTaW1wbGU8VD4gbCl7CisgICAgfQorCisgICAgPEs+IFNpbXBsZTw/IHN1cGVyIEs+IGNvbXAoSyBrKXsKKyAgICAgICAgcmV0dXJuIG51bGw7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CisgICAgICAgIGFzc2VydGluZygwLCBjb21wKDApKTsKKyAgICB9Cit9CisKK2NsYXNzIFNpbXBsZTxTU1Q+eworCit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2dlbmVyaWNzSGlnaGxpZ2h0aW5nL0luZmVyZW5jZVdpdGhVcHBlckJvdW5kUHJvbW90aW9uLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2dlbmVyaWNzSGlnaGxpZ2h0aW5nL0luZmVyZW5jZVdpdGhVcHBlckJvdW5kUHJvbW90aW9uLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODJhMmE2OAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvZ2VuZXJpY3NIaWdobGlnaHRpbmcvSW5mZXJlbmNlV2l0aFVwcGVyQm91bmRQcm9tb3Rpb24uamF2YQpAQCAtMCwwICsxLDMwIEBACisKK3B1YmxpYyBjbGFzcyBOZXN0ZWRHZW5lcmljR29vZENvZGVJc1JlZCB7CisKKyAgICBwdWJsaWMgdm9pZCBtYWluKCBTdHJpbmdbXSBhcmdzICkgeworICAgICAgICBzYXRpc2ZpZXNBbGxPZihpc1Bvc2l0aXZlKCksIGlzRXF1YWxUbygxMC45KSk7CisgICAgICAgIHNhdGlzZmllc0FsbE9mKGlzUG9zaXRpdmUoKSwgaXNFcXVhbFRvKDEwKSk7CisKKyAgICAgICAgTnVtYmVyIG51bSA9IG51bGw7CisgICAgICAgIHNhdGlzZmllc0FsbE9mKGlzUG9zaXRpdmUoKSwgaXNFcXVhbFRvKG51bSkpOworCisgICAgICAgIHRoaXMuPE51bWJlcj5zYXRpc2ZpZXNBbGxPZjxlcnJvciBkZXNjcj0iJ3NhdGlzZmllc0FsbE9mKE5lc3RlZEdlbmVyaWNHb29kQ29kZUlzUmVkLlByZWRpY2F0ZTw/IHN1cGVyIGphdmEubGFuZy5OdW1iZXI+LCBOZXN0ZWRHZW5lcmljR29vZENvZGVJc1JlZC5QcmVkaWNhdGU8PyBzdXBlciBqYXZhLmxhbmcuTnVtYmVyPiknIGluICdOZXN0ZWRHZW5lcmljR29vZENvZGVJc1JlZCcgY2Fubm90IGJlIGFwcGxpZWQgdG8gJyhOZXN0ZWRHZW5lcmljR29vZENvZGVJc1JlZC5QcmVkaWNhdGU8amF2YS5sYW5nLk51bWJlcj4sIE5lc3RlZEdlbmVyaWNHb29kQ29kZUlzUmVkLlByZWRpY2F0ZTxqYXZhLmxhbmcuSW50ZWdlcj4pJyI+KGlzUG9zaXRpdmUoKSwgaXNFcXVhbFRvKDEwKSk8L2Vycm9yPjsKKyAgICB9CisKKworICAgIHB1YmxpYyBpbnRlcmZhY2UgUHJlZGljYXRlPFQ+IHsKKworICAgIH0KKworICAgIHB1YmxpYyAgPEFMTD4gdm9pZCBzYXRpc2ZpZXNBbGxPZiggUHJlZGljYXRlPD8gc3VwZXIgQUxMPiBmaXJzdCwgUHJlZGljYXRlPD8gc3VwZXIgQUxMPiBzZWNvbmQgKSB7CisgICAgfQorCisgICAgcHVibGljICA8UE9TSVRJVkUgZXh0ZW5kcyBOdW1iZXI+IFByZWRpY2F0ZTxQT1NJVElWRT4gaXNQb3NpdGl2ZSgpIHsKKyAgICAgICAgcmV0dXJuIG51bGw7CisgICAgfQorCisgICAgcHVibGljIDxFUVVBTFRPIGV4dGVuZHMgTnVtYmVyPiBQcmVkaWNhdGU8RVFVQUxUTz4gaXNFcXVhbFRvKCBFUVVBTFRPIHRhcmdldCApIHsKKyAgICAgICAgcmV0dXJuIG51bGw7CisgICAgfQorCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9nZW5lcmljc0hpZ2hsaWdodGluZy9Jbmhlcml0RnJvbVR5cGVQYXJhbWV0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvZ2VuZXJpY3NIaWdobGlnaHRpbmcvSW5oZXJpdEZyb21UeXBlUGFyYW1ldGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2Y5YzI2YwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvZ2VuZXJpY3NIaWdobGlnaHRpbmcvSW5oZXJpdEZyb21UeXBlUGFyYW1ldGVyLmphdmEKQEAgLTAsMCArMSwyIEBACitjbGFzcyBDPFQ+IGV4dGVuZHMgPGVycm9yIGRlc2NyPSJDbGFzcyBjYW5ub3QgaW5oZXJpdCBmcm9tIGl0cyB0eXBlIHBhcmFtZXRlciI+VDwvZXJyb3I+Cit7fQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvZ2VuZXJpY3NIaWdobGlnaHRpbmcvSW5uZXJDbGFzc1JlZi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9nZW5lcmljc0hpZ2hsaWdodGluZy9Jbm5lckNsYXNzUmVmLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjdlZmI4MwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvZ2VuZXJpY3NIaWdobGlnaHRpbmcvSW5uZXJDbGFzc1JlZi5qYXZhCkBAIC0wLDAgKzEsMTkgQEAKK2ltcG9ydCBqYXZhLnV0aWwuKjsKK2ltcG9ydCBOb2RlLkRldGFpbHM7CisKK3B1YmxpYyBjbGFzcyBOb2RlPEU+IHsKKyAgICBwdWJsaWMgY2xhc3MgRGV0YWlscyB7CisgICAgICAgIHB1YmxpYyBFIGRhdGE7CisgICAgfQorICAgIHB1YmxpYyBEZXRhaWxzIGFkZE5vZGUoTm9kZTxFPiBjaGlsZCkgeworICAgICAgICByZXR1cm4gbmV3IERldGFpbHMoKTsKKyAgICB9Cit9CisKK2NsYXNzIFRlc3QgeworICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CisgICAgIE1hcDxTdHJpbmcsIERldGFpbHM+IG0gPSBudWxsOworICAgICBNYXA8U3RyaW5nLCBOb2RlLkRldGFpbHM+IHNvcnRlZDE7CisgICAgIHNvcnRlZDEgPSBtOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9nZW5lcmljc0hpZ2hsaWdodGluZy9JbnN0YW5jZUNsYXNzSW5TdGF0aWNDb250ZXh0QWNjZXNzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2dlbmVyaWNzSGlnaGxpZ2h0aW5nL0luc3RhbmNlQ2xhc3NJblN0YXRpY0NvbnRleHRBY2Nlc3MuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kY2ZhZDU2YgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvZ2VuZXJpY3NIaWdobGlnaHRpbmcvSW5zdGFuY2VDbGFzc0luU3RhdGljQ29udGV4dEFjY2Vzcy5qYXZhCkBAIC0wLDAgKzEsNjIgQEAKK2NsYXNzIE15VGVzdDxLPiB7CisKKyAgICBjbGFzcyBBPFQ+IHsKKyAgICB9CisKKyAgICAvL25vdCBhbiBlcnJvciBpbiBqYXZhIDg/IQorICAgIHN0YXRpYyBjbGFzcyBDPFQgZXh0ZW5kcyA8ZXJyb3IgZGVzY3I9IidNeVRlc3QudGhpcycgY2Fubm90IGJlIHJlZmVyZW5jZWQgZnJvbSBhIHN0YXRpYyBjb250ZXh0Ij5BPFN0cmluZz48L2Vycm9yPj4geworICAgIH0KKworICAgIHN0YXRpYyA8VCBleHRlbmRzIDxlcnJvciBkZXNjcj0iJ015VGVzdC50aGlzJyBjYW5ub3QgYmUgcmVmZXJlbmNlZCBmcm9tIGEgc3RhdGljIGNvbnRleHQiPkE8U3RyaW5nPjwvZXJyb3I+PiB2b2lkIGJhcigpIHsKKyAgICB9CisKKyAgICBzdGF0aWMgY2xhc3MgQiB7CisgICAgICAgIHsKKyAgICAgICAgICAgIEIuPDxlcnJvciBkZXNjcj0iJ015VGVzdC50aGlzJyBjYW5ub3QgYmUgcmVmZXJlbmNlZCBmcm9tIGEgc3RhdGljIGNvbnRleHQiPkE8L2Vycm9yPj5iYXIoKTsKKyAgICAgICAgICAgIDxlcnJvciBkZXNjcj0iJ015VGVzdC50aGlzJyBjYW5ub3QgYmUgcmVmZXJlbmNlZCBmcm9tIGEgc3RhdGljIGNvbnRleHQiPkE8L2Vycm9yPiBhOworICAgICAgICB9CisKKyAgICAgICAgc3RhdGljIDxUIGV4dGVuZHMgPGVycm9yIGRlc2NyPSInTXlUZXN0LnRoaXMnIGNhbm5vdCBiZSByZWZlcmVuY2VkIGZyb20gYSBzdGF0aWMgY29udGV4dCI+QTxTdHJpbmc+PC9lcnJvcj4+IHZvaWQgYmFyKCkgeworICAgICAgICB9CisKKyAgICAgICAgdm9pZCB2KEM8PGVycm9yIGRlc2NyPSInTXlUZXN0LnRoaXMnIGNhbm5vdCBiZSByZWZlcmVuY2VkIGZyb20gYSBzdGF0aWMgY29udGV4dCI+QTxTdHJpbmc+PC9lcnJvcj4+IGMpIHsKKyAgICAgICAgfQorICAgIH0KK30KKworY2xhc3MgTXlUZXN0MSB7CisKKyAgICBjbGFzcyBBPFQ+IHsKKyAgICB9CisKKyAgICBzdGF0aWMgY2xhc3MgQzxUIGV4dGVuZHMgQTxTdHJpbmc+PiB7CisgICAgfQorCisgICAgc3RhdGljIDxUIGV4dGVuZHMgQTxTdHJpbmc+PiB2b2lkIGJhcigpIHsKKyAgICB9CisKKyAgICBzdGF0aWMgY2xhc3MgQiB7CisgICAgICAgIHsKKyAgICAgICAgICAgIEIuPEE+YmFyKCk7CisgICAgICAgICAgICBBIGEgPSA8ZXJyb3IgZGVzY3I9IidNeVRlc3QxLnRoaXMnIGNhbm5vdCBiZSByZWZlcmVuY2VkIGZyb20gYSBzdGF0aWMgY29udGV4dCI+bmV3IEEoKTwvZXJyb3I+OworICAgICAgICB9CisKKyAgICAgICAgc3RhdGljIDxUIGV4dGVuZHMgQTxTdHJpbmc+PiB2b2lkIGJhcigpIHsKKyAgICAgICAgfQorCisgICAgICAgIHZvaWQgdihDPEE8U3RyaW5nPj4gYykgeworICAgICAgICB9CisgICAgfQorfQorCitjbGFzcyBNeVRlc3QyPFQ+IHsKKyAgICBzdGF0aWMgY2xhc3MgQSB7CisgICAgICBwcml2YXRlIE15VGVzdDIgbXlUZXN0OworICAKKyAgICAgIHB1YmxpYyBPYmplY3QgZm9vKCkgeworICAgICAgICByZXR1cm4gbXlUZXN0Lm5ldyBCYXIoKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICBjbGFzcyBCYXIge30KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvZ2VuZXJpY3NIaWdobGlnaHRpbmcvSW50ZXJzZWN0aW9uVHlwZXMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvZ2VuZXJpY3NIaWdobGlnaHRpbmcvSW50ZXJzZWN0aW9uVHlwZXMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMTk3YmYwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9nZW5lcmljc0hpZ2hsaWdodGluZy9JbnRlcnNlY3Rpb25UeXBlcy5qYXZhCkBAIC0wLDAgKzEsMTgxIEBACitpbXBvcnQgamF2YS5pby4qOworaW1wb3J0IGphdmEudXRpbC4qOworCitjbGFzcyBUZXN0IHsKKyAgICA8VD4gTGlzdDxUPiBhc0xpc3QgKFQuLi4gdHMpIHsKKyAgICAgIHRzLmhhc2hDb2RlKCk7CisgICAgICByZXR1cm4gbnVsbDsKKyAgICB9CisKKyAgICB2b2lkIGZvbygpIHsKKyAgICAgICAgPGVycm9yIGRlc2NyPSJJbmNvbXBhdGlibGUgdHlwZXMuIEZvdW5kOiAnamF2YS51dGlsLkxpc3Q8amF2YS5sYW5nLkNsYXNzPD8gZXh0ZW5kcyBqYXZhLmlvLlNlcmlhbGl6YWJsZSAmIGphdmEubGFuZy5Db21wYXJhYmxlPD8+Pj4nLCByZXF1aXJlZDogJ2phdmEudXRpbC5MaXN0PGphdmEubGFuZy5DbGFzczw/IGV4dGVuZHMgamF2YS5pby5TZXJpYWxpemFibGU+PiciPkxpc3Q8Q2xhc3M8PyBleHRlbmRzIFNlcmlhbGl6YWJsZT4+IGwgPSA8d2FybmluZyBkZXNjcj0iVW5jaGVja2VkIGdlbmVyaWNzIGFycmF5IGNyZWF0aW9uIGZvciB2YXJhcmdzIHBhcmFtZXRlciI+dGhpcy5hc0xpc3Q8L3dhcm5pbmc+KFN0cmluZy5jbGFzcywgSW50ZWdlci5jbGFzcyk7PC9lcnJvcj4KKyAgICAgICAgbC5zaXplKCk7CisgICAgICAgIExpc3Q8PyBleHRlbmRzIE9iamVjdD4gb2JqZWN0cyA9IHRoaXMuYXNMaXN0KG5ldyBTdHJpbmcoKSwgbmV3IEludGVnZXIoMCkpOworICAgICAgICBvYmplY3RzLnNpemUoKTsKKyAgICB9Cit9CisKKy8vU1VOIEJVRyBJRCA1MDM0NTcxCitpbnRlcmZhY2UgSTEgeworICAgIHZvaWQgaTEoKTsKK30KKworY2xhc3MgRzEgPFQgZXh0ZW5kcyBJMT4geworICAgIFQgZ2V0KCkgeyByZXR1cm4gbnVsbDsgfQorfQorCitpbnRlcmZhY2UgSTIgeworICAgIHZvaWQgaTIoKTsKK30KKworY2xhc3MgTWFpbiB7CisgICAgdm9pZCBmMihHMTw/IGV4dGVuZHMgSTI+IGcxKSB7CisgICAgICAgIGcxLmdldCgpLmkxKCk7IC8vIHRoaXMgc2hvdWxkIGJlIE9LCisgICAgICAgIGcxLmdldCgpLmkyKCk7IC8vIHRoaXMgc2hvdWxkIGFsc28gYmUgT0sKKyAgICB9Cit9CisKKy8vSURFQURFVjQyMDA6IHRoaXMgY29kZSBpcyBPSworaW50ZXJmYWNlIEkxMSB7CisgICAgU3RyaW5nIGkxKCk7Cit9CisKK2ludGVyZmFjZSBJMjEgeworICAgIFN0cmluZyBpMigpOworfQorCitpbnRlcmZhY2UgQTxUPiB7CisgICAgVCBzb21lKCk7Cit9CisKK2ludGVyZmFjZSBCPFQgZXh0ZW5kcyBJMTEgJiBJMjE+IGV4dGVuZHMgQTxUPiB7CisKK30KKworY2xhc3MgVXNlciB7CisKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihCPD8+IHRlc3QpIHsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKHRlc3Quc29tZSgpLmkxKCkpOworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4odGVzdC5zb21lKCkuaTIoKSk7CisgICAgfQorfQorLyoKKyAqIENvcHlyaWdodCAyMDAwLTIwMTEgSmV0QnJhaW5zIHMuci5vLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworLy9lbmQgb2YgSURFQURFVjQyMDAKKworLy9JREVBREVWLTQyMTQKK2ludGVyZmFjZSBLZXlhYmxlPEs+IHsKKyAgICAvKioKKyAgICAgKiBAcmV0dXJuIHRoZSBrZXkgZm9yIHRoZSBpbnN0YW5jZS4KKyAgICAgKi8KKyAgICBwdWJsaWMgSyBnZXRLZXkoKTsKK30KKworYWJzdHJhY3QgY2xhc3MgRGF0ZSBpbXBsZW1lbnRzIGphdmEuaW8uU2VyaWFsaXphYmxlLCBDbG9uZWFibGUsIENvbXBhcmFibGU8RGF0ZT4geworCit9CisKK2NsYXNzIE1hcHMgeworICAgIHB1YmxpYyBzdGF0aWMgY2xhc3MgTWFwRW50cnk8SywgVj4gaW1wbGVtZW50cyBNYXAuRW50cnk8SywgVj4geworICAgICAgICBLIGs7CisgICAgICAgIFYgdjsKKworICAgICAgICBwdWJsaWMgSyBnZXRLZXkoKSB7CisgICAgICAgICAgICByZXR1cm4gazsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyBWIGdldFZhbHVlKCkgeworICAgICAgICAgICAgcmV0dXJuIHY7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgViBzZXRWYWx1ZShWIHZhbHVlKSB7CisgICAgICAgICAgICByZXR1cm4gdiA9IHZhbHVlOworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIE1hcEVudHJ5KEsgaywgViB2KSB7CisgICAgICAgICAgICB0aGlzLmsgPSBrOworICAgICAgICAgICAgdGhpcy52ID0gdjsKKyAgICAgICAgfQorICAgIH0KKworICAgIHB1YmxpYyBzdGF0aWMgPEssIFY+IE1hcC5FbnRyeTxLLCBWPiBlbnRyeShLIGtleSwgViB2YWx1ZSkgeworICAgICAgICByZXR1cm4gbmV3IE1hcEVudHJ5PEssIFY+KGtleSwgdmFsdWUpOworICAgIH0KKworICAgIHB1YmxpYyBzdGF0aWMgPEssIFY+IE1hcDxLLCBWPiBhc01hcChNYXAuRW50cnk8PyBleHRlbmRzIEssID8gZXh0ZW5kcyBWPiAuLi4gPHdhcm5pbmcgZGVzY3I9IlBhcmFtZXRlciAnZW50cmllcycgaXMgbmV2ZXIgdXNlZCI+ZW50cmllczwvd2FybmluZz4pIHsKKyAgICAgICAgcmV0dXJuIG51bGw7CisgICAgfQorCisgICAgcHVibGljIHN0YXRpYyA8SywgViBleHRlbmRzIEtleWFibGU8Sz4+IE1hcDxLLCBWPiBhc01hcChWIC4uLiA8d2FybmluZyBkZXNjcj0iUGFyYW1ldGVyICdlbnRyaWVzJyBpcyBuZXZlciB1c2VkIj5lbnRyaWVzPC93YXJuaW5nPikgeworICAgICAgICByZXR1cm4gbnVsbDsKKyAgICB9Cit9CisKK2NsYXNzIENsaWVudCB7CisgICAgdm9pZCBmKERhdGUgZCkgeworICAgICAgICAvL3RoaXMgY2FsbCBzaG91bGQgYmUgT0sKKyAgICAgICAgPHdhcm5pbmcgZGVzY3I9IlVuY2hlY2tlZCBnZW5lcmljcyBhcnJheSBjcmVhdGlvbiBmb3IgdmFyYXJncyBwYXJhbWV0ZXIiPk1hcHMuYXNNYXA8L3dhcm5pbmc+KE1hcHMuZW50cnkoZmllbGROYW1lKCksICJUZXN0IiksCisgICAgICAgICAgICAgICAgICAgTWFwcy5lbnRyeShmaWVsZE5hbWUoKSwgMSksCisgICAgICAgICAgICAgICAgICAgTWFwcy5lbnRyeShmaWVsZE5hbWUoKSwgZCkpOworICAgIH0KKworICAgIFN0cmluZyBmaWVsZE5hbWUoKSB7CisgICAgICAgIHJldHVybiBudWxsOworICAgIH0KK30KKy8vZW5kIG9mIElERUFERVYtNDIxNAorCitjbGFzcyBJREVBREVWMjU1MTUgeworICAgIHN0YXRpYyA8VD4gTGlzdDxUPiBhc0xpc3QgKFQuLi4gdHMpIHsKKyAgICAgIHRzLmhhc2hDb2RlKCk7CisgICAgICByZXR1cm4gbnVsbDsKKyAgICB9CisKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsCisgICAgPGVycm9yIGRlc2NyPSJJbmNvbXBhdGlibGUgdHlwZXMuIEZvdW5kOiAnamF2YS51dGlsLkxpc3Q8amF2YS5sYW5nLkNsYXNzPD8gZXh0ZW5kcyBqYXZhLmlvLlNlcmlhbGl6YWJsZSAmIGphdmEubGFuZy5Db21wYXJhYmxlPD8+Pj4nLCByZXF1aXJlZDogJ2phdmEudXRpbC5MaXN0PGphdmEubGFuZy5DbGFzczw/IGV4dGVuZHMgamF2YS5pby5TZXJpYWxpemFibGU+PiciPkxpc3Q8Q2xhc3M8PyBleHRlbmRzIFNlcmlhbGl6YWJsZT4+IFNJTVBMRV9UWVBFUyA9Cis8d2FybmluZyBkZXNjcj0iVW5jaGVja2VkIGdlbmVyaWNzIGFycmF5IGNyZWF0aW9uIGZvciB2YXJhcmdzIHBhcmFtZXRlciI+YXNMaXN0PC93YXJuaW5nPihTdHJpbmcuY2xhc3MsIEludGVnZXIuY2xhc3MgLExvbmcuY2xhc3MsIERvdWJsZS5jbGFzcywgLypEYXRlLmNsYXNzLCovCitCb29sZWFuLmNsYXNzLCBCb29sZWFuLlRZUEUgLyosU3RyaW5nW10uY2xhc3MgKi8gLyosQmlnRGVjaW1hbC5jbGFzcyovKTs8L2Vycm9yPgorCisKKyAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgTGlzdDxDbGFzczw/IGV4dGVuZHMgU2VyaWFsaXphYmxlPj4gU0lNUExFX1RZUEVTX0lORkVSUkVEID0KKyAgPHdhcm5pbmcgZGVzY3I9IlVuY2hlY2tlZCBnZW5lcmljcyBhcnJheSBjcmVhdGlvbiBmb3IgdmFyYXJncyBwYXJhbWV0ZXIiPmFzTGlzdDwvd2FybmluZz4oU3RyaW5nLmNsYXNzLCBJbnRlZ2VyLmNsYXNzICxMb25nLmNsYXNzLCBEb3VibGUuY2xhc3MsIC8qRGF0ZS5jbGFzcywqLworICBCb29sZWFuLmNsYXNzLCBCb29sZWFuLlRZUEUgLFN0cmluZ1tdLmNsYXNzICAvKixCaWdEZWNpbWFsLmNsYXNzKi8pOworCisKK30KKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCitjbGFzcyBBeHggeworICA8VCBleHRlbmRzIFJ1bm5hYmxlPiBUIGEoKSB7CisgICAgPGVycm9yIGRlc2NyPSJJbmNvbXBhdGlibGUgdHlwZXMuIEZvdW5kOiAnamF2YS5sYW5nLlJ1bm5hYmxlJywgcmVxdWlyZWQ6ICdqYXZhLmxhbmcuU3RyaW5nJyI+U3RyaW5nIHMgPSBhKCk7PC9lcnJvcj4KKyAgICBzLmhhc2hDb2RlKCk7CisgICAgcmV0dXJuIG51bGw7CisgIH0KK30KKy8vLy8vLy8vLy8vLy8vLworaW50ZXJmYWNlIEwge30KK3B1YmxpYyBjbGFzcyBNYXhpbWFsVHlwZSAgeworICAgIHB1YmxpYyBzdGF0aWMgPFQ+IFQgZ2V0UGFyZW50T2ZUeXBlKENsYXNzPD8gZXh0ZW5kcyBUPi4uLiBjbGFzc2VzKSB7CisgICAgICAgY2xhc3Nlcy5oYXNoQ29kZSgpOworICAgICAgIHJldHVybiBudWxsOworICAgIH0KKyAgICB7CisgICAgICAgIDx3YXJuaW5nIGRlc2NyPSJVbmNoZWNrZWQgZ2VuZXJpY3MgYXJyYXkgY3JlYXRpb24gZm9yIHZhcmFyZ3MgcGFyYW1ldGVyIj5nZXRQYXJlbnRPZlR5cGU8L3dhcm5pbmc+KE0yLmNsYXNzLCBNLmNsYXNzKTsKKyAgICB9Cit9CitjbGFzcyBNIGV4dGVuZHMgTWF4aW1hbFR5cGUgaW1wbGVtZW50cyBMe30KK2NsYXNzIE0yIGV4dGVuZHMgTWF4aW1hbFR5cGUgaW1wbGVtZW50cyBMe30KKy8vLy8vLy8vLy8vLy8KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvZ2VuZXJpY3NIaWdobGlnaHRpbmcvTWV0aG9kQ2FsbFBhcmFtc09uUmF3VHlwZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9nZW5lcmljc0hpZ2hsaWdodGluZy9NZXRob2RDYWxsUGFyYW1zT25SYXdUeXBlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTM5OWU1YQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvZ2VuZXJpY3NIaWdobGlnaHRpbmcvTWV0aG9kQ2FsbFBhcmFtc09uUmF3VHlwZS5qYXZhCkBAIC0wLDAgKzEsMzIgQEAKK2NsYXNzIFRlc3RPblJhd1R5cGUgeworICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CisgICAgbmV3IEZvb0dlbmVyYXRvcigpLnByb2Nlc3MoVGVzdE9uUmF3VHlwZS5jbGFzcyk7CisgICAgbmV3IEZvb0dlbmVyYXRvcigpLnByb2Nlc3MoQUZvby5jbGFzcyk7CisgICAgbmV3IEZvb0dlbmVyYXRvcigpLnByb2Nlc3MoTUZvby5jbGFzcyk7CisgICAgbmV3IEZvb0dlbmVyYXRvcjxTdHJpbmc+KCkucHJvY2VzczxlcnJvciBkZXNjcj0iJ3Byb2Nlc3MoamF2YS5sYW5nLkNsYXNzPFRlc3RPblJhd1R5cGUuQUZvbz4pJyBpbiAnVGVzdE9uUmF3VHlwZS5Gb29HZW5lcmF0b3InIGNhbm5vdCBiZSBhcHBsaWVkIHRvICcoamF2YS5sYW5nLkNsYXNzPFRlc3RPblJhd1R5cGU+KSciPihUZXN0T25SYXdUeXBlLmNsYXNzKTwvZXJyb3I+OworICAgIG5ldyBGb29HZW5lcmF0b3I8U3RyaW5nPigpLnByb2Nlc3MoQUZvby5jbGFzcyk7CisgICAgbmV3IEZvb0dlbmVyYXRvcjxTdHJpbmc+KCkucHJvY2VzczxlcnJvciBkZXNjcj0iJ3Byb2Nlc3MoamF2YS5sYW5nLkNsYXNzPFRlc3RPblJhd1R5cGUuQUZvbz4pJyBpbiAnVGVzdE9uUmF3VHlwZS5Gb29HZW5lcmF0b3InIGNhbm5vdCBiZSBhcHBsaWVkIHRvICcoamF2YS5sYW5nLkNsYXNzPFRlc3RPblJhd1R5cGUuTUZvbz4pJyI+KE1Gb28uY2xhc3MpPC9lcnJvcj47CisgIH0KKworICBzdGF0aWMgY2xhc3MgQUZvbyB7fQorICBzdGF0aWMgY2xhc3MgTUZvbyBleHRlbmRzIEFGb28ge30KKyAgc3RhdGljIGNsYXNzIEZvb0dlbmVyYXRvcjxUPiB7CisgICAgcHVibGljIHZvaWQgcHJvY2VzcyhDbGFzczxBRm9vPiBjbHMpIHsKKyAgICB9CisgIH0KK30KKworY2xhc3MgVGVzdE5vbkdlbmVyaWNUeXBlIHsKKyAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgeworICAgIG5ldyBGb29HZW5lcmF0b3IoKS5wcm9jZXNzPGVycm9yIGRlc2NyPSIncHJvY2VzcyhqYXZhLmxhbmcuQ2xhc3M8VGVzdE5vbkdlbmVyaWNUeXBlLkFGb28+KScgaW4gJ1Rlc3ROb25HZW5lcmljVHlwZS5Gb29HZW5lcmF0b3InIGNhbm5vdCBiZSBhcHBsaWVkIHRvICcoamF2YS5sYW5nLkNsYXNzPFRlc3ROb25HZW5lcmljVHlwZT4pJyI+KFRlc3ROb25HZW5lcmljVHlwZS5jbGFzcyk8L2Vycm9yPjsKKyAgICBuZXcgRm9vR2VuZXJhdG9yKCkucHJvY2VzcyhBRm9vLmNsYXNzKTsKKyAgICBuZXcgRm9vR2VuZXJhdG9yKCkucHJvY2VzczxlcnJvciBkZXNjcj0iJ3Byb2Nlc3MoamF2YS5sYW5nLkNsYXNzPFRlc3ROb25HZW5lcmljVHlwZS5BRm9vPiknIGluICdUZXN0Tm9uR2VuZXJpY1R5cGUuRm9vR2VuZXJhdG9yJyBjYW5ub3QgYmUgYXBwbGllZCB0byAnKGphdmEubGFuZy5DbGFzczxUZXN0Tm9uR2VuZXJpY1R5cGUuTUZvbz4pJyI+KE1Gb28uY2xhc3MpPC9lcnJvcj47CisgIH0KKworICBzdGF0aWMgY2xhc3MgQUZvbyB7fQorICBzdGF0aWMgY2xhc3MgTUZvbyBleHRlbmRzIEFGb28ge30KKyAgc3RhdGljIGNsYXNzIEZvb0dlbmVyYXRvciB7CisgICAgcHVibGljIHZvaWQgcHJvY2VzcyhDbGFzczxBRm9vPiBjbHMpIHsKKyAgICB9CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvZ2VuZXJpY3NIaWdobGlnaHRpbmcvTWV0aG9kU2lnbmF0dXJlRXF1YWxpdHkuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvZ2VuZXJpY3NIaWdobGlnaHRpbmcvTWV0aG9kU2lnbmF0dXJlRXF1YWxpdHkuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNDFiNDcxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9nZW5lcmljc0hpZ2hsaWdodGluZy9NZXRob2RTaWduYXR1cmVFcXVhbGl0eS5qYXZhCkBAIC0wLDAgKzEsOTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwMC0yMDEwIEpldEJyYWlucyBzLnIuby4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitpbXBvcnQgamF2YS5pby4qOworY2xhc3MgVGVzdCB7CisgIGludGVyZmFjZSBJbnRlcmZBIHsKKyAgICA8VCBleHRlbmRzIENsb25lYWJsZSAmIEl0ZXJhYmxlPiB2b2lkIGZvbyhUIHgpOworCisgICAgPFQgZXh0ZW5kcyBJdGVyYWJsZSAmIENsb25lYWJsZT4gdm9pZCBmb28oVCB4KTsKKyAgfQorCisgIGNsYXNzIEFOb3RTYW1lIHsKKyAgICA8VCBleHRlbmRzIENsb25lYWJsZSAmIEl0ZXJhYmxlPiB2b2lkIGZvbyhUIHgpe30KKworICAgIDxUIGV4dGVuZHMgSXRlcmFibGUgJiBDbG9uZWFibGU+IHZvaWQgZm9vKFQgeCl7fQorICB9CisKKyAgY2xhc3MgQk5vdFNhbWUgZXh0ZW5kcyBBTm90U2FtZSB7CisgICAgICBAT3ZlcnJpZGUKKyAgICAgIDxUIGV4dGVuZHMgQ2xvbmVhYmxlICYgSXRlcmFibGU+IHZvaWQgZm9vKFQgeCl7fQorICB9CisKKyAgYWJzdHJhY3QgY2xhc3MgQTxUIGV4dGVuZHMgVGhyb3dhYmxlPiB7CisgICAgYWJzdHJhY3QgPFQgZXh0ZW5kcyBDb21wYXJhYmxlPD8+ICYgU2VyaWFsaXphYmxlPiB2b2lkIGZvbyhUIHgsIEE8Pz4geSk7CisKKyAgICBhYnN0cmFjdCA8VCBleHRlbmRzIFNlcmlhbGl6YWJsZSAmIENvbXBhcmFibGU8Pz4+IHZvaWQgZm9vKFQgeCwgQTw/IGV4dGVuZHMgQ2xvbmVhYmxlPiB5KTsKKyAgfQorCisgLyogYWJzdHJhY3QgY2xhc3MgQjxUIGV4dGVuZHMgVGhyb3dhYmxlPiB7CisgICAgYWJzdHJhY3QgPFQgZXh0ZW5kcyBDb21wYXJhYmxlPD8+ICYgU2VyaWFsaXphYmxlPiB2b2lkIGZvbyhUIHgsIEI8Pz4geSk7CisKKyAgICBhYnN0cmFjdCA8VCBleHRlbmRzIFNlcmlhbGl6YWJsZSAmIENvbXBhcmFibGU8Pz4+IHZvaWQgZm9vKFQgeCwgQjw/IGV4dGVuZHMgVGhyb3dhYmxlPiB5KTsKKyAgfQorCisKKyAgYWJzdHJhY3QgY2xhc3MgQzxUIGV4dGVuZHMgVGhyb3dhYmxlICYgU2VyaWFsaXphYmxlPiB7CisgICAgYWJzdHJhY3QgPFQgZXh0ZW5kcyBDb21wYXJhYmxlPD8+ICYgU2VyaWFsaXphYmxlPiB2b2lkIGZvbyhUIHgsIEM8PyBleHRlbmRzIFNlcmlhbGl6YWJsZT4geSk7CisKKyAgICBhYnN0cmFjdCA8VCBleHRlbmRzIFNlcmlhbGl6YWJsZSAmIENvbXBhcmFibGU8Pz4+IHZvaWQgZm9vKFQgeCwgQzw/IGV4dGVuZHMgVGhyb3dhYmxlPiB5KTsKKyAgfSovCisKKyAgYWJzdHJhY3QgY2xhc3MgRDxUIGV4dGVuZHMgVGhyb3dhYmxlICYgUnVubmFibGU+IHsKKyAgICA8ZXJyb3IgZGVzY3I9Iidmb28oVCwgRDw/IGV4dGVuZHMgUnVubmFibGU+KScgY2xhc2hlcyB3aXRoICdmb28oVCwgRDw/IGV4dGVuZHMgVGhyb3dhYmxlPiknOyBib3RoIG1ldGhvZHMgaGF2ZSBzYW1lIGVyYXN1cmUiPmFic3RyYWN0IDxUIGV4dGVuZHMgU2VyaWFsaXphYmxlICYgQ29tcGFyYWJsZTw/Pj4gdm9pZCBmb28oVCB4LCBEPD8gZXh0ZW5kcyBSdW5uYWJsZT4geSk8L2Vycm9yPjsKKworICAgIGFic3RyYWN0IDxUIGV4dGVuZHMgU2VyaWFsaXphYmxlICYgQ29tcGFyYWJsZTw/Pj4gdm9pZCBmb28oVCB4LCBEPD8gZXh0ZW5kcyBUaHJvd2FibGU+IHkpOworICB9CisKKworICBpbnRlcmZhY2UgSUEge30KKyAgaW50ZXJmYWNlIElCIHt9CisgIHZvaWQgdGVzdEV4dGVuZHNPcmRlcigpIHsKKyAgICBjbGFzcyBFPFQgZXh0ZW5kcyBJQSAmIElCPiB7CisgICAgICA8ZXJyb3IgZGVzY3I9Iidmb28oRTw/IGV4dGVuZHMgSUE+KScgY2xhc2hlcyB3aXRoICdmb28oRTw/IGV4dGVuZHMgSUI+KSc7IGJvdGggbWV0aG9kcyBoYXZlIHNhbWUgZXJhc3VyZSI+dm9pZCBmb28oRTw/IGV4dGVuZHMgSUE+IHgpPC9lcnJvcj4ge30KKyAgICAgIHZvaWQgZm9vKEU8PyBleHRlbmRzIElCPiB4KSB7fQorICAgIH0KKyAgfQorCisgIGFic3RyYWN0IGNsYXNzIEY8VCBleHRlbmRzIFRocm93YWJsZT4geworICAgIDxlcnJvciBkZXNjcj0iJ2ZvbyhGPD8+KScgaXMgYWxyZWFkeSBkZWZpbmVkIGluICdUZXN0LkYnIj5hYnN0cmFjdCB2b2lkIGZvbyhGPD8+IHkpPC9lcnJvcj47CisKKyAgICBhYnN0cmFjdCB2b2lkIGZvbyhGPD8gZXh0ZW5kcyBUaHJvd2FibGU+IHkpOworICB9Cit9CisKK2NsYXNzIEFvIHt9CisKK2NsYXNzIEJvIGV4dGVuZHMgQW8ge30KKworY2xhc3MgU2V0dGluZ3NFZGl0b3I8VD4geworfQorCithYnN0cmFjdCBjbGFzcyBSdW5Db25maWd1cmF0aW9uRXh0ZW5zaW9uPFQgZXh0ZW5kcyBBbz4geworICAgIHByb3RlY3RlZCBhYnN0cmFjdCA8UCBleHRlbmRzIFQ+IFNldHRpbmdzRWRpdG9yPFA+IGNyZWF0ZUVkaXRvcihmaW5hbCBQIGNvbmZpZ3VyYXRpb24pOworfQorCitjbGFzcyBGIGV4dGVuZHMgUnVuQ29uZmlndXJhdGlvbkV4dGVuc2lvbjxCbz4geworCisgICAgQE92ZXJyaWRlCisgICAgcHJvdGVjdGVkIDxQIGV4dGVuZHMgQm8+IFNldHRpbmdzRWRpdG9yPFA+IGNyZWF0ZUVkaXRvcihQIGNvbmZpZ3VyYXRpb24pIHsKKyAgICAgICAgcmV0dXJuIG51bGw7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9nZW5lcmljc0hpZ2hsaWdodGluZy9NZXRob2RzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2dlbmVyaWNzSGlnaGxpZ2h0aW5nL01ldGhvZHMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMGY5OTRlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9nZW5lcmljc0hpZ2hsaWdodGluZy9NZXRob2RzLmphdmEKQEAgLTAsMCArMSwzOCBAQAoraW1wb3J0IGphdmEudXRpbC4qOworCitpbnRlcmZhY2UgQmFzZSB7Cit9CisKK2NsYXNzIERlcml2ZWQgaW1wbGVtZW50cyBCYXNlIHsKK30KKworY2xhc3MgWCB7CisgICAgdm9pZCBtZXRob2QoaW50IGksIEJhc2UgYikgeyB9CisgICAgdm9pZCBtZXRob2QoaW50IGksIERlcml2ZWQgYikgeyB9CisKKyAgICB7CisgICAgICAgIERlcml2ZWQgZCA9IG5ldyBEZXJpdmVkKCk7CisgICAgICAgIG1ldGhvZCgxMCwgZCk7CisgICAgfQorfQorCitjbGFzcyBUZW1wPFQ+IHt9CisKK2NsYXNzIEEgeworICAgPGVycm9yIGRlc2NyPSInQShUKScgY2xhc2hlcyB3aXRoICdBKFQpJzsgYm90aCBtZXRob2RzIGhhdmUgc2FtZSBlcmFzdXJlIj5wdWJsaWMgPFQgZXh0ZW5kcyBUZW1wPFN0cmluZz4+IEEoVCBsaXN0KTwvZXJyb3I+IHt9CisgICBwdWJsaWMgPFQgZXh0ZW5kcyBUZW1wPEludGVnZXI+PiBBKFQgbGlzdCkge30KK30KK2NsYXNzIEIgeworICAgcHVibGljIDxUIGV4dGVuZHMgQT4gQihUIGxpc3QpIHt9CisgICBwdWJsaWMgPFQgZXh0ZW5kcyBUZW1wPEludGVnZXI+PiBCKFQgbGlzdCkge30KK30KKworCisKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworY2xhc3MgSWRlYUJ1ZyB7CisKKyAgICBzdGF0aWMgPFQ+IFQgY2xvbmVNZShUIGFyZykgdGhyb3dzIENsb25lTm90U3VwcG9ydGVkRXhjZXB0aW9uIHsKKyAgICAgICAgcmV0dXJuIChUKSBhcmcuPGVycm9yIGRlc2NyPSInY2xvbmUoKScgaGFzIHByb3RlY3RlZCBhY2Nlc3MgaW4gJ2phdmEubGFuZy5PYmplY3QnIj5jbG9uZTwvZXJyb3I+KCk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9nZW5lcmljc0hpZ2hsaWdodGluZy9PdmVycmlkZUF0TGFuZ3VhZ2VMZXZlbDUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvZ2VuZXJpY3NIaWdobGlnaHRpbmcvT3ZlcnJpZGVBdExhbmd1YWdlTGV2ZWw1LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODYzNDY3NwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvZ2VuZXJpY3NIaWdobGlnaHRpbmcvT3ZlcnJpZGVBdExhbmd1YWdlTGV2ZWw1LmphdmEKQEAgLTAsMCArMSwxNiBAQAoraW50ZXJmYWNlIEkgeworCXZvaWQgZigpOworfQoraW50ZXJmYWNlIElJIGV4dGVuZHMgSSB7CisgICAgPGVycm9yIGRlc2NyPSJAT3ZlcnJpZGUgaXMgbm90IGFsbG93ZWQgd2hlbiBpbXBsZW1lbnRpbmcgaW50ZXJmYWNlIG1ldGhvZCI+QE92ZXJyaWRlPC9lcnJvcj4KKyAgICB2b2lkIGYoKTsKK30KK2NsYXNzIEMgaW1wbGVtZW50cyBJIHsKKyAgICA8ZXJyb3IgZGVzY3I9IkBPdmVycmlkZSBpcyBub3QgYWxsb3dlZCB3aGVuIGltcGxlbWVudGluZyBpbnRlcmZhY2UgbWV0aG9kIj5AT3ZlcnJpZGU8L2Vycm9yPgorICAgIHB1YmxpYyB2b2lkIGYoKSB7CisgICAgfQorCisgICAgPGVycm9yIGRlc2NyPSJNZXRob2QgZG9lcyBub3Qgb3ZlcnJpZGUgbWV0aG9kIGZyb20gaXRzIHN1cGVyY2xhc3MiPkBPdmVycmlkZTwvZXJyb3I+CisgICAgcHVibGljIHZvaWQgbm90b3ZlcnJpZGUoKSB7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9nZW5lcmljc0hpZ2hsaWdodGluZy9PdmVycmlkZUF0TGFuZ3VhZ2VMZXZlbDYuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvZ2VuZXJpY3NIaWdobGlnaHRpbmcvT3ZlcnJpZGVBdExhbmd1YWdlTGV2ZWw2LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDgzY2Y2NQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvZ2VuZXJpY3NIaWdobGlnaHRpbmcvT3ZlcnJpZGVBdExhbmd1YWdlTGV2ZWw2LmphdmEKQEAgLTAsMCArMSwxMyBAQAoraW50ZXJmYWNlIEkgeworCXZvaWQgZigpOworfQoraW50ZXJmYWNlIElJIGV4dGVuZHMgSSB7CisgICAgQE92ZXJyaWRlCisgICAgdm9pZCBmKCk7Cit9CitjbGFzcyBDIGltcGxlbWVudHMgSSB7CisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIHZvaWQgZigpIHsKKworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvZ2VuZXJpY3NIaWdobGlnaHRpbmcvT3ZlcnJpZGVXaXRoTW9yZVNwZWNpZmljUmV0dXJuLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2dlbmVyaWNzSGlnaGxpZ2h0aW5nL092ZXJyaWRlV2l0aE1vcmVTcGVjaWZpY1JldHVybi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMyZjY4NzcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2dlbmVyaWNzSGlnaGxpZ2h0aW5nL092ZXJyaWRlV2l0aE1vcmVTcGVjaWZpY1JldHVybi5qYXZhCkBAIC0wLDAgKzEsMTUgQEAKK2ltcG9ydCBqYXZhLnV0aWwuTGlzdDsKKworaW50ZXJmYWNlIEV4YW1wbGVJbnRlcmZhY2UgeworICAgIHB1YmxpYyBMaXN0IGV4YW1wbGVNZXRob2QoKTsKK30KKworY2xhc3MgRXhhbXBsZVN1cGVyQ2xhc3MgeworICAgIHB1YmxpYyBMaXN0PFN0cmluZz4gZXhhbXBsZU1ldGhvZCgpIHsKKyAgICAgICAgcmV0dXJuIG51bGw7CisgICAgfQorfQorCisKK3B1YmxpYyBjbGFzcyAgRXhhbXBsZVN1YkNsYXNzIGV4dGVuZHMgRXhhbXBsZVN1cGVyQ2xhc3MgaW1wbGVtZW50cyBFeGFtcGxlSW50ZXJmYWNlIHsKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvZ2VuZXJpY3NIaWdobGlnaHRpbmcvT3ZlcnJpZGluZ01ldGhvZHMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvZ2VuZXJpY3NIaWdobGlnaHRpbmcvT3ZlcnJpZGluZ01ldGhvZHMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNGQyZmUyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9nZW5lcmljc0hpZ2hsaWdodGluZy9PdmVycmlkaW5nTWV0aG9kcy5qYXZhCkBAIC0wLDAgKzEsNTE3IEBACitpbXBvcnQgamF2YS51dGlsLio7CisKK2Fic3RyYWN0IGNsYXNzIEM8VD4geworICAgIGFic3RyYWN0IFQgZihpbnQgdCk7CisgICAgdm9pZCBmZihUIHQpIHt9CisKKyAgICBDIGNvdmFyaWFudDEoKSB7IHJldHVybiBudWxsOyB9CisgICAgQyBjb3ZhcmlhbnQyKCkgeyByZXR1cm4gbnVsbDsgfQorICAgIDxBPiBBIGdldCgpIHsgcmV0dXJuIG51bGw7IH0KK30KK2Fic3RyYWN0IGNsYXNzIEQ8VT4gZXh0ZW5kcyBDPEM8VT4+IHsKKyAgICBhYnN0cmFjdCA8ZXJyb3IgZGVzY3I9IidmKGludCknIGluICdEJyBjbGFzaGVzIHdpdGggJ2YoaW50KScgaW4gJ0MnOyBhdHRlbXB0aW5nIHRvIHVzZSBpbmNvbXBhdGlibGUgcmV0dXJuIHR5cGUiPlU8L2Vycm9yPiBmKGludCB0KTsKKworICAgIC8vIG92ZXJsb2FkZWQsIG5vdCBvdmVycnJpZGRlbgorICAgIGludCBmZihpbnQgdSkgeyByZXR1cm4gMDsgfQorCisgICAgPGVycm9yIGRlc2NyPSInZmYoQzxVPiknIGluICdEJyBjbGFzaGVzIHdpdGggJ2ZmKFQpJyBpbiAnQyc7IGF0dGVtcHRpbmcgdG8gdXNlIGluY29tcGF0aWJsZSByZXR1cm4gdHlwZSI+aW50PC9lcnJvcj4gZmYoQzxVPiB1KSB7CisgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICA8ZXJyb3IgZGVzY3I9Iidjb3ZhcmlhbnQxKCknIGluICdEJyBjbGFzaGVzIHdpdGggJ2NvdmFyaWFudDEoKScgaW4gJ0MnOyBhdHRlbXB0aW5nIHRvIHVzZSBpbmNvbXBhdGlibGUgcmV0dXJuIHR5cGUiPk9iamVjdDwvZXJyb3I+IGNvdmFyaWFudDEoKSB7IHJldHVybiBudWxsOyB9CisgICAgRCBjb3ZhcmlhbnQyKCkgeyByZXR1cm4gbnVsbDsgfQorCisgICAgPEE+IEEgZ2V0KCkgeyByZXR1cm4gbnVsbDsgfQorfQorCisKK2Fic3RyYWN0IGNsYXNzIEMxPFQ+IHsKKyAgICBhYnN0cmFjdCBUIGYoaW50IHQpOworfQorYWJzdHJhY3QgY2xhc3MgRDE8VT4gZXh0ZW5kcyBDMTxDMTxVPj4geworICAgIGFic3RyYWN0IEMxPFU+IGYoaW50IGkpOworfQorCisKK2NsYXNzIENDPFQ+IHsKKyBDQzxJbnRlZ2VyPiBmKCkgeyByZXR1cm4gbnVsbDsgfQorIENDPEludGVnZXI+IGYyKCkgeyByZXR1cm4gbnVsbDsgfQorIENDPEludGVnZXI+IGYzKCkgeyByZXR1cm4gbnVsbDsgfQorCisKKyA8SyxWPiBLIGYoViB2KSB7IHJldHVybiBudWxsOyB9CisgaW50IGZQcmltaXRpdmUoKSB7IHJldHVybiAwOyB9Cit9CitjbGFzcyBERDxUPiBleHRlbmRzIENDPFQ+IHsKKyA8ZXJyb3IgZGVzY3I9IidmKCknIGluICdERCcgY2xhc2hlcyB3aXRoICdmKCknIGluICdDQyc7IGF0dGVtcHRpbmcgdG8gdXNlIGluY29tcGF0aWJsZSByZXR1cm4gdHlwZSI+REQ8U3RyaW5nPjwvZXJyb3I+IGYoKSB7IHJldHVybiBudWxsOyB9CisKKyBERDxJbnRlZ2VyPiBmMigpIHsgcmV0dXJuIG51bGw7IH0KKyBDQyBmMygpIHsgcmV0dXJuIG51bGw7IH0KKworIDxQLE8+IDxlcnJvciBkZXNjcj0iJ2YoTyknIGluICdERCcgY2xhc2hlcyB3aXRoICdmKFYpJyBpbiAnQ0MnOyBhdHRlbXB0aW5nIHRvIHVzZSBpbmNvbXBhdGlibGUgcmV0dXJuIHR5cGUiPk88L2Vycm9yPiBmKE8gbykgeyByZXR1cm4gbnVsbDsgfQorCisgLy8gaW5jb21wYXRpYmxlIGFsdGhvdWdoIGFzc2lnbmFibGUKKyA8ZXJyb3IgZGVzY3I9IidmUHJpbWl0aXZlKCknIGluICdERCcgY2xhc2hlcyB3aXRoICdmUHJpbWl0aXZlKCknIGluICdDQyc7IGF0dGVtcHRpbmcgdG8gdXNlIGluY29tcGF0aWJsZSByZXR1cm4gdHlwZSI+ZG91YmxlPC9lcnJvcj4gZlByaW1pdGl2ZSgpIHsgcmV0dXJuIDA7IH0KK30KKworaW50ZXJmYWNlIEdlbjxUPiB7CisgPEsxIGV4dGVuZHMgVD4gdm9pZCBmKEdlbjxLMT4gY2MpOworfQorY2xhc3MgUmF3IGltcGxlbWVudHMgR2VuIHsKKyBwdWJsaWMgdm9pZCBmKEdlbiBvKSB7CisgICBhYnN0cmFjdCBjbGFzcyBNeUNvbXBhcmF0b3I8VD4geworICAgICAgYWJzdHJhY3QgaW50IGNvbXBhcmUoVCB0LCBUIHQxKTsKKyAgIH0KKyAgIC8vIHJhdyB0eXBlIGltcGxlbWV0YXRpb24KKyAgIG5ldyBNeUNvbXBhcmF0b3IoKSB7CisgICAgICAgcHVibGljIGludCBjb21wYXJlKE9iamVjdCB0LCBPYmplY3QgdDEpIHsKKyAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgfQorICAgfTsKKyB9Cit9CisKK2NsYXNzIEdlbjI8R1Q+IGltcGxlbWVudHMgR2VuPEdUPiB7CisgcHVibGljIDxLMiBleHRlbmRzIEdUPiB2b2lkIGYoR2VuPEsyPiBvKSB7fQorfQorCisvLy8vLy8vLy8vLy8vLyBFUkFTVVJFIENPTkZMSUNUCitjbGFzcyBBMSA8VD4geworICAgIFQgaWQoVCB0KSB7CisgICAgICAgIHJldHVybiB0OworICAgIH0KK30KK2ludGVyZmFjZSBJMSA8VD4geworICAgIFQgaWQoVCB0KTsKK30KK2NsYXNzIEEyIDxUPiBleHRlbmRzIEExPFN0cmluZz4geworICAgIDxlcnJvciBkZXNjcj0iJ2lkKFQpJyBpbiAnQTInIGNsYXNoZXMgd2l0aCAnaWQoVCknIGluICdBMSc7IGJvdGggbWV0aG9kcyBoYXZlIHNhbWUgZXJhc3VyZSwgeWV0IG5laXRoZXIgb3ZlcnJpZGVzIHRoZSBvdGhlciI+VCBpZChUIHQpPC9lcnJvcj4geworICAgICAgICByZXR1cm4gdDsKKyAgICB9Cit9CitjbGFzcyBBMyA8VD4gZXh0ZW5kcyBBMTxTdHJpbmc+IHsKKyAgICA8ZXJyb3IgZGVzY3I9IidpZChPYmplY3QpJyBpbiAnQTMnIGNsYXNoZXMgd2l0aCAnaWQoVCknIGluICdBMSc7IGJvdGggbWV0aG9kcyBoYXZlIHNhbWUgZXJhc3VyZSwgeWV0IG5laXRoZXIgb3ZlcnJpZGVzIHRoZSBvdGhlciI+T2JqZWN0IGlkKE9iamVjdCBvKTwvZXJyb3I+IHsKKyAgICAgICAgcmV0dXJuIG87CisgICAgfQorfQorPGVycm9yIGRlc2NyPSInaWQoVCknIGluICdBMScgY2xhc2hlcyB3aXRoICdpZChUKScgaW4gJ0kxJzsgYm90aCBtZXRob2RzIGhhdmUgc2FtZSBlcmFzdXJlLCB5ZXQgbmVpdGhlciBvdmVycmlkZXMgdGhlIG90aGVyIj5jbGFzcyBBNCBleHRlbmRzIEExPFN0cmluZz4gaW1wbGVtZW50cyBJMTxJbnRlZ2VyPjwvZXJyb3I+IHsKKyAgU3RyaW5nIGlkKFN0cmluZyB0KQorICAgIHsgcmV0dXJuIG51bGw7fQorICBwdWJsaWMgSW50ZWdlciBpZChJbnRlZ2VyIGkpCisgICAgeyByZXR1cm4gbnVsbDsgfQorfQorCitpbnRlcmZhY2UgSUkxIDxUPiB7CisgICAgVCBpZChpbnQgdCk7Cit9CitpbnRlcmZhY2UgSUkyIDxUPiB7CisgICAgVCBpZChpbnQgdCk7Cit9CithYnN0cmFjdCBjbGFzcyBBNSBpbXBsZW1lbnRzIElJMTxJbnRlZ2VyPiwgSUkyPEludGVnZXI+IHt9Cis8ZXJyb3IgZGVzY3I9IidpZChpbnQpJyBpbiAnSUkyJyBjbGFzaGVzIHdpdGggJ2lkKGludCknIGluICdJSTEnOyBtZXRob2RzIGhhdmUgdW5yZWxhdGVkIHJldHVybiB0eXBlcyI+YWJzdHJhY3QgY2xhc3MgQTYgaW1wbGVtZW50cyBJSTE8SW50ZWdlcj4sIElJMjxTdHJpbmc+PC9lcnJvcj4ge30KK2Fic3RyYWN0IGNsYXNzIEE3IGltcGxlbWVudHMgSUkxPE51bWJlcj4sIElJMjxJbnRlZ2VyPnt9CithYnN0cmFjdCBjbGFzcyBBOCBpbXBsZW1lbnRzIElJMTxJbnRlZ2VyPiwgSUkyPE51bWJlcj57fQorCisKK2Fic3RyYWN0IGNsYXNzIEhhc0dlbmVyaWNNZXRob2RzPFQ+IHsKKyAgICBhYnN0cmFjdCA8UD4gdm9pZCB0b0FycmF5KFBbXSBwKTsKK30KK3B1YmxpYyBjbGFzcyBSYXdPdmVycmlkZXNHZW5lcmljTWV0aG9kcyBleHRlbmRzIEhhc0dlbmVyaWNNZXRob2RzeworICAgIHB1YmxpYyB2b2lkIHRvQXJyYXkoT2JqZWN0W10gcHMpIHsKKyAgICB9Cit9CisKK2NsYXNzIENsb25lVGVzdCB7CisgICAgaW50ZXJmYWNlIEEgeworICAgICAgICBBIGR1cCgpOworICAgIH0KKyAgICBpbnRlcmZhY2UgQiBleHRlbmRzIEEgeworICAgICAgICBCIGR1cCgpOworICAgIH0KKyAgICBpbnRlcmZhY2UgQyBleHRlbmRzIEEgeworICAgICAgICBDIGR1cCgpOworICAgIH0KKyAgICBpbnRlcmZhY2UgRCBleHRlbmRzIEIsIEMgeworICAgICAgICBEIGR1cCgpOworICAgIH0KKyAgICBpbnRlcmZhY2UgWCBleHRlbmRzIEMsIEIgeworICAgICAgICBYIGR1cCgpOworICAgIH0KKyAgICBpbnRlcmZhY2UgRSBleHRlbmRzIEMsQSB7CisgICAgICBFIGR1cCgpOworICAgIH0KK30KKy8vLy8vLy8vLy8vLy8vLworY2xhc3MgQXJyQmFzZSB7CisgICAgQzxTdHJpbmc+IGdldEMoKSB7IHJldHVybiBudWxsOyB9CisgICAgT2JqZWN0W10gZ2V0TygpIHsgcmV0dXJuIG51bGw7IH0KK30KK2NsYXNzIEFyclRlc3QgZXh0ZW5kcyBBcnJCYXNlIHsKKyAgICBDIGdldEMoKSB7IHJldHVybiBudWxsOyB9CisgICAgU3RyaW5nW10gZ2V0TygpIHsgcmV0dXJuIG51bGw7IH0KK30KKworLy8vLy8vLy8vLy8KK2NsYXNzIEJhcklVIHsKKyAgICBwdWJsaWMgPEI+IEJbXSB0b0FycmF5KEJbXSB0cykgeworICAgICAgICByZXR1cm4gbnVsbDsKKyAgICB9Cit9CitpbnRlcmZhY2UgSVUgeworICAgIHB1YmxpYyA8ST4gSVtdIHRvQXJyYXkoSVtdIHRzKTsKK30KK3B1YmxpYyBjbGFzcyBCYXJJVUJhcklVIGV4dGVuZHMgQmFySVUgaW1wbGVtZW50cyBJVXsKKyAgICBwdWJsaWMgPFQ+IFRbXSB0b0FycmF5KFRbXSB0cykgeworICAgICAgICByZXR1cm4gbnVsbDsKKyAgICB9Cit9CisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vCitjbGFzcyBNeUl0ZXJhdG9yPFQ+IHsKK30KK2NsYXNzIEFBQSA8QT4geworICAgIHB1YmxpYyBNeUl0ZXJhdG9yPEE+IGl0ZXJhdG9yKCkgeworICAgICAgICByZXR1cm4gbnVsbDsKKyAgICB9Cit9CisKK2ludGVyZmFjZSBJSUkgPEk+IHsKKyAgICBNeUl0ZXJhdG9yPEk+IGl0ZXJhdG9yKCk7Cit9CisKK2NsYXNzIENDQyA8VD4gZXh0ZW5kcyBBQUE8VD4gaW1wbGVtZW50cyBJSUk8VD4geworICAgIHB1YmxpYyBNeUl0ZXJhdG9yPFQ+IGl0ZXJhdG9yKCkgeworICAgICAgICByZXR1cm4gbnVsbDsKKyAgICB9Cit9CisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCitpbnRlcmZhY2UgQ2xvbmVDb3ZhcmlhbnQgeworICAgIENsb25lQ292YXJpYW50IGNsb25lKCk7Cit9CisKK2ludGVyZmFjZSBJQ2xvbmVDb3ZhcmlhbnQgZXh0ZW5kcyBDbG9uZUNvdmFyaWFudCB7Cit9CisKK2ludGVyZmFjZSBDbXA8VD4geworICAgIGludCBjb21wYXJlVG8gKFQgdCk7Cit9Cis8ZXJyb3IgZGVzY3I9IkNsYXNzICdTaW5nbGV0b24nIG11c3QgZWl0aGVyIGJlIGRlY2xhcmVkIGFic3RyYWN0IG9yIGltcGxlbWVudCBhYnN0cmFjdCBtZXRob2QgJ2NvbXBhcmVUbyhUKScgaW4gJ0NtcCciPmNsYXNzIFNpbmdsZXRvbjxUMT4gaW1wbGVtZW50cyBDbXA8U2luZ2xldG9uPFQxPj48L2Vycm9yPiB7CisgIHB1YmxpYyA8VDI+IGludCBjb21wYXJlVG8oU2luZ2xldG9uPFQxPiB0MSkgeworICAgIHJldHVybiAwOworICB9Cit9CisKK2NsYXNzIGU8Vj4gIHsKKyAgICA8VD4gdm9pZCB1IChUIHQpIHt9Cit9CisKK2NsYXNzIGYgZXh0ZW5kcyBlPFN0cmluZz4geworICAgIC8vSWYgd2UgaW5oZXJpdCBieSBlcmFzdXJlLCB0aGVuIG5vIHR5cGUgcGFyYW1ldGVycyBtdXN0IGJlIHByZXNlbnQKKyAgICA8ZXJyb3IgZGVzY3I9Iid1KE9iamVjdCknIGluICdmJyBjbGFzaGVzIHdpdGggJ3UoVCknIGluICdlJzsgYm90aCBtZXRob2RzIGhhdmUgc2FtZSBlcmFzdXJlLCB5ZXQgbmVpdGhlciBvdmVycmlkZXMgdGhlIG90aGVyIj48VD4gdm9pZCB1IChPYmplY3Qgbyk8L2Vycm9yPiB7fQorfQorCisvL1NDUiA0MTU5MywgdGhlIGZvbGxvd2luZyBvdmVycmlkaW5nIGlzIHZhbGlkCitpbnRlcmZhY2UgcSB7CisgICAgcSBmb28oKTsKK30KKworaW50ZXJmYWNlIHAgeworICAgIHAgZm9vKCk7Cit9CisKK2NsYXNzIHIgaW1wbGVtZW50cyBxLCBwIHsKKyAgICBwdWJsaWMgIHIgZm9vKCkgeworICAgICAgICByZXR1cm4gbnVsbDsKKyAgICB9Cit9CisKKy8vSURFQURFVi0yMjU1OiB0aGlzIG92ZXJyaWRpbmcgaXMgT0sKK2NsYXNzIEV4YW1wbGUgeworICAgIGludGVyZmFjZSBQcm9wZXJ0eTxUPiB7CisgICAgICAgIFQgdCgpOworICAgIH0KKworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKKyAgICAgICAgbmV3IFZhbHVlQ2hhbmdlTGlzdGVuZXI8TnVtYmVyPigpIHsKKyAgICAgICAgICAgIHB1YmxpYyA8RSBleHRlbmRzIE51bWJlcj4gdm9pZCB2YWx1ZUNoYW5nZWQoUHJvcGVydHk8RT4gcGFyZW50LCBFIG9sZFZhbHVlLCBFIG5ld1ZhbHVlKSB7CisgICAgICAgICAgICB9CisgICAgICAgIH07CisgICAgfQorCisgICAgaW50ZXJmYWNlIFZhbHVlQ2hhbmdlTGlzdGVuZXI8VD4geworICAgICAgICA8RSBleHRlbmRzIFQ+IHZvaWQgdmFsdWVDaGFuZ2VkKFByb3BlcnR5PEU+IHByb3BlcnR5LCBFIG9sZFZhbHVlLCBFIG5ld1ZhbHVlKTsKKyAgICB9Cit9CisKKy8vSURFQURFVi0zMzEwOiB0aGVyZSBpcyBubyBoaWRpbmcoInN0YXRpYyBvdmVycmlkaW5nIikgaW4gdGhpcyBjb2RlIHRodXMgbm8gcmV0dXJuLXR5cGUtc3Vic3RpdHV0YWJpbGl0eSBzaG91bGQgYmUgY2hlY2tlZAorY2xhc3MgQmFzZUNsYXNzIHt9CisKK2NsYXNzIFN1YkNsYXNzIGV4dGVuZHMgQmFzZUNsYXNzIHt9CisKK2NsYXNzIEJhc2VCdWdSZXBvcnQgeworCisgICAgcHVibGljIHN0YXRpYyA8VCBleHRlbmRzIEJhc2VDbGFzcz4KKyAgICBqYXZhLnV0aWwuU2V0PFQ+IGRvU29tZXRoaW5nKCkgeworICAgICAgICByZXR1cm4gbnVsbDsKKyAgICB9Cit9CisKK2NsYXNzIFN1YkJ1Z1JlcG9ydCBleHRlbmRzIEJhc2VCdWdSZXBvcnQgeworCisgICAgcHVibGljIHN0YXRpYyA8VCBleHRlbmRzIFN1YkNsYXNzPgorICAgIGphdmEudXRpbC5TZXQ8VD4gZG9Tb21ldGhpbmcoKSB7CisgICAgICAgIHJldHVybiBudWxsOworICAgIH0KK30KKworY2xhc3MgRmlyc3Q8VCBleHRlbmRzIE51bWJlcj4geworICAgIHZvaWQgbShUIHQpIHsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJBOiAiICsgdCk7CisgICAgfQorfQorCitjbGFzcyBTZWNvbmQ8UyBleHRlbmRzIEludGVnZXI+IGV4dGVuZHMgRmlyc3Q8Uz4geworICAgIC8vQE92ZXJyaWRlCisgICAgdm9pZCBtKFMgdCkgeworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIkI6ICIgKyB0KTsKKyAgICB9Cit9CisKK2NsYXNzIFRoaXJkIGV4dGVuZHMgU2Vjb25kPEludGVnZXI+IHsKKyAgICA8ZXJyb3IgZGVzY3I9IidtKE51bWJlciknIGluICdUaGlyZCcgY2xhc2hlcyB3aXRoICdtKFQpJyBpbiAnRmlyc3QnOyBib3RoIG1ldGhvZHMgaGF2ZSBzYW1lIGVyYXN1cmUsIHlldCBuZWl0aGVyIG92ZXJyaWRlcyB0aGUgb3RoZXIiPnZvaWQgbShOdW1iZXIgdCk8L2Vycm9yPiB7CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiRCNtKE51bWJlcik6ICIgKyB0KTsKKyAgICB9CisKKyAgICAvL0BPdmVycmlkZQorICAgIHZvaWQgbShJbnRlZ2VyIHQpIHsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJEI20oSW50ZWdlcik6ICIgKyB0KTsKKyAgICB9Cit9CisKKy8vSURFQURFVi00NTg3OiB0aGlzIGNvZGUgaXMgT0sKK2ludGVyZmFjZSBTdXBlckE8VCwgRSBleHRlbmRzIFRocm93YWJsZT4geworICAgIFQgbWV0aG9kKCkgdGhyb3dzIEU7Cit9CisKK2ludGVyZmFjZSBTdXBlckI8VCwgRSBleHRlbmRzIFRocm93YWJsZT4geworICAgIFQgbWV0aG9kKCkgdGhyb3dzIEU7Cit9CisKK2ludGVyZmFjZSBNeUludGVyZmFjZTxULCBFIGV4dGVuZHMgVGhyb3dhYmxlPiBleHRlbmRzIFN1cGVyQTxULCBFPiwgU3VwZXJCPFQsIEU+IHsKK30KKworLy9JREVBREVWLTI4MzIKK2NsYXNzIElERUFERVYyODMyVGVzdCB7CisgICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgeworICAgICAgICBMaXN0ZW5lcjxTdHJpbmc+IGRsID0gbmV3IDxlcnJvciBkZXNjcj0iJ2xpc3RlbihUKScgaW4gJ0xpc3RlbmVyJyBjbGFzaGVzIHdpdGggJ2xpc3RlbihPYmplY3QpJyBpbiAnQW5vbnltb3VzIGNsYXNzIGRlcml2ZWQgZnJvbSBMaXN0ZW5lcic7IGJvdGggbWV0aG9kcyBoYXZlIHNhbWUgZXJhc3VyZSwgeWV0IG5laXRoZXIgb3ZlcnJpZGVzIHRoZSBvdGhlciI+TGlzdGVuZXI8U3RyaW5nPjwvZXJyb3I+KCkgeworICAgICAgICAgICAgcHVibGljIHZvaWQgbGlzdGVuKFN0cmluZyBvYmopIHsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcHVibGljIHZvaWQgbGlzdGVuKE9iamVjdCBvYmopIHsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKyAgICB9Cit9CisKK2ludGVyZmFjZSBMaXN0ZW5lcjxUPiB7CisgICAgdm9pZCBsaXN0ZW4oVCBvYmopOworfQorCisvL2VuZCBvZiBJREVBREVWLTI4MzIKKworLy9JREVBREVWLTgzOTMKK2NsYXNzIFN1cGVyPEEgZXh0ZW5kcyBDb2xsZWN0aW9uPiB7CisgICAgcHVibGljIFN0cmluZyBzYW1lRXJhc3VyZShmaW5hbCBMaXN0PD8+IGFyZykKKyAgICB7CisgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIkludCBsaXN0Iik7CisgICAgICByZXR1cm4gbnVsbDsKKyAgICB9CisKK30KKworCitmaW5hbCBjbGFzcyBNYW5pc3RhIGV4dGVuZHMgU3VwZXI8Q29sbGVjdGlvbj4geworCisgICAgcHVibGljICBDb2xsZWN0aW9uIHNhbWVFcmFzdXJlKGZpbmFsIExpc3Q8U3RyaW5nPiBhcmcpIHsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJTdHJpbmcgbGlzdCIpOworICAgICAgICByZXR1cm4gbnVsbDsKKyAgICB9Cit9CisvL2VuZCBvZiBJREVBREVWLTgzOTMKKworLy8vLy8vLy8vLy8vLy8vLy8vLworcHVibGljIGNsYXNzIFByaW0geworICAgIE9iamVjdCBnKCkgeworICAgICAgICByZXR1cm4gbnVsbDsKKyAgICB9Cit9CitjbGFzcyBTUHJpbSBleHRlbmRzIFByaW0geworICAgIGJ5dGVbXSBnKCkgeworICAgICAgICByZXR1cm4gbnVsbDsKKyAgICB9Cit9CisKKy8vSURFQURFVi0yMTkyMQoraW50ZXJmYWNlIFR5cGVEaXNwYXRjaGVyPFQsVj4geworICAgIHB1YmxpYyA8UyBleHRlbmRzIFQ+IHZvaWQgZGlzcGF0Y2goQ2xhc3M8Uz4gY2xhenosIFMgb2JqKTsKK30KK2NsYXNzIERlZmF1bHREaXNwYXRjaGVyPFQsVj4gaW1wbGVtZW50cyBUeXBlRGlzcGF0Y2hlcjxULFY+IHsKKyAgICBwdWJsaWMgPFMgZXh0ZW5kcyBUPiB2b2lkIGRpc3BhdGNoKENsYXNzPFM+IGNsYXp6LCBTIG9iaikgeworICAgIH0KK30KK2ludGVyZmFjZSBOb2RlIHsKK30KKworY2xhc3MgQnViYmxlVHlwZURpc3BhdGNoZXIgZXh0ZW5kcyBEZWZhdWx0RGlzcGF0Y2hlcjxOb2RlLCBTdHJpbmc+IHsKK30KKy8vZW5kIG9mIElERUFERVYtMjE5MjEKKworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworcHVibGljIGNsYXNzIEJ1ZzIgZXh0ZW5kcyBTbWFydExpc3Q8QnVnMj4gaW1wbGVtZW50cyBQbGFjZXMgIHsKK30KK2ludGVyZmFjZSBQbGFjZXMgZXh0ZW5kcyBqYXZhLnV0aWwuTGlzdDxCdWcyPiB7fQorCitjbGFzcyBTbWFydExpc3Q8RT4gZXh0ZW5kcyBqYXZhLnV0aWwuQWJzdHJhY3RMaXN0PEU+eworICAgIHB1YmxpYyBFIGdldChpbnQgaW5kZXgpIHsKKyAgICAgICAgcmV0dXJuIG51bGw7CisgICAgfQorCisgICAgcHVibGljIGludCBzaXplKCkgeworICAgICAgICByZXR1cm4gMDsKKyAgICB9Cit9CisvLy8vLy8vLy8vLy8vLy8vSURFQURFVi0yMzE3NgorY2xhc3MgQWN0aW9uSW1wbGVtZW50YXRpb24gZXh0ZW5kcyBNeUFic3RyYWN0QWN0aW9uCit7CisgIHB1YmxpYyB2b2lkIGFjdGlvblBlcmZvcm1lZCgpCisgIHsKKyAgICB0aHJvdyBuZXcgUnVudGltZUV4Y2VwdGlvbigpOworICB9Cit9CithYnN0cmFjdCBjbGFzcyBNeUFic3RyYWN0QWN0aW9uIGV4dGVuZHMgQWJzdHJhY3RBY3Rpb24gaW1wbGVtZW50cyBNeUFjdGlvbiB7IH0KK2ludGVyZmFjZSBNeUFjdGlvbiBleHRlbmRzIEFjdGlvbiwgQm91bmRCZWFuIHsgfQoraW50ZXJmYWNlIEJvdW5kQmVhbiB7CisgIHZvaWQgYWRkUHJvcGVydHlDaGFuZ2VMaXN0ZW5lcigpOworICB2b2lkIHJlbW92ZVByb3BlcnR5Q2hhbmdlTGlzdGVuZXIoKTsKK30KK2ludGVyZmFjZSBBY3Rpb24gZXh0ZW5kcyBBY3Rpb25MaXN0ZW5lciB7CisgICAgcHVibGljIHZvaWQgYWRkUHJvcGVydHlDaGFuZ2VMaXN0ZW5lcigpOworICAgIHB1YmxpYyB2b2lkIHJlbW92ZVByb3BlcnR5Q2hhbmdlTGlzdGVuZXIoKTsKK30KK2ludGVyZmFjZSBBY3Rpb25MaXN0ZW5lciB7CisgICAgcHVibGljIHZvaWQgYWN0aW9uUGVyZm9ybWVkKCk7Cit9CithYnN0cmFjdCBjbGFzcyBBYnN0cmFjdEFjdGlvbiBpbXBsZW1lbnRzIEFjdGlvbnsKKyAgICBwdWJsaWMgc3luY2hyb25pemVkIHZvaWQgYWRkUHJvcGVydHlDaGFuZ2VMaXN0ZW5lcigpIHsKKyAgICB9CisgICAgcHVibGljIHN5bmNocm9uaXplZCB2b2lkIHJlbW92ZVByb3BlcnR5Q2hhbmdlTGlzdGVuZXIoKSB7CisgICAgfQorfQorLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCitjbGFzcyBBIGV4dGVuZHMgQmFzZUJ1aWxkIGltcGxlbWVudHMgU1J1bm5pbmdCdWlsZHsKK30KKworaW50ZXJmYWNlIEJ1aWxkIHsKKyAgYm9vbGVhbiBpc1BlcnNvbmFsKCk7Cit9CitjbGFzcyBCYXNlQnVpbGQgaW1wbGVtZW50cyBCdWlsZCB7CisgICAgcHVibGljIGJvb2xlYW4gaXNQZXJzb25hbCgpIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KK30KK2ludGVyZmFjZSBIaXN0b3J5QnVpbGQgeworICBib29sZWFuIGlzUGVyc29uYWwoKTsKK30KK2ludGVyZmFjZSBTUnVubmluZ0J1aWxkIGV4dGVuZHMgQnVpbGQsSGlzdG9yeUJ1aWxkeyB9CisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKworaW50ZXJmYWNlIFBzaVJlZmVyZW5jZUV4cHJlc3Npb24gZXh0ZW5kcyBQc2lFbGVtZW50LCBQc2lKYXZhQ29kZVJlZmVyZW5jZUVsZW1lbnR7fQorCitpbnRlcmZhY2UgUHNpSmF2YUNvZGVSZWZlcmVuY2VFbGVtZW50IGV4dGVuZHMgQ2xvbmVhYmxlLCBQc2lRdWFsaWZpZWRSZWZlcmVuY2V7fQoraW50ZXJmYWNlIFBzaVF1YWxpZmllZFJlZmVyZW5jZSBleHRlbmRzIFBzaUVsZW1lbnQge30KKworaW50ZXJmYWNlIFBzaUVsZW1lbnQgeworICAgIFN0cmluZyB0b1N0cmluZygpOworfQorLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9JREVBREVWLTI0MzAwIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworcHVibGljIGNsYXNzIEFjdGlvbkNvbnRleHQ8QSBleHRlbmRzIENvbnRleHRBY3Rpb24+IHsKK30KK3B1YmxpYyBhYnN0cmFjdCBjbGFzcyBDb250ZXh0QWN0aW9uPEFDIGV4dGVuZHMgQWN0aW9uQ29udGV4dD4geworCXByb3RlY3RlZCBhYnN0cmFjdCB2b2lkIHBlcmZvcm1BY3Rpb24oQUMgY29udGV4dCk7Cit9CitwdWJsaWMgY2xhc3MgT3VyQWN0aW9uIGV4dGVuZHMgVGFibGVDb250ZXh0QWN0aW9uPE9iamVjdD4geworCXByb3RlY3RlZCB2b2lkIHBlcmZvcm1BY3Rpb24oVGFibGVDb250ZXh0PE9iamVjdD4gY29udGV4dCkgeworCX0KK30KK3B1YmxpYyBjbGFzcyBUYWJsZUNvbnRleHQ8VENQPiBleHRlbmRzIEFjdGlvbkNvbnRleHQ8VGFibGVDb250ZXh0QWN0aW9uPFRDUD4+IHsKK30KK3B1YmxpYyBhYnN0cmFjdCBjbGFzcyBUYWJsZUNvbnRleHRBY3Rpb248Uk8+IGV4dGVuZHMgQ29udGV4dEFjdGlvbjxUYWJsZUNvbnRleHQ8Uk8+PiB7Cit9CisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vSURFQURFVi0yMzE3NiAvLy8vLy8vLy8vLy8vLy8vLy8vLy8KK3B1YmxpYyBpbnRlcmZhY2UgTXlMaXN0TW9kZWwgeyB9CitwdWJsaWMgaW50ZXJmYWNlIE15TGlzdCB7CisgICAgT2JqZWN0IGdldChpbnQgaSk7CisgICAgaW50IGhhc2hDb2RlKCk7Cit9CitwdWJsaWMgaW50ZXJmYWNlIE11dGFibGVMaXN0TW9kZWwgZXh0ZW5kcyBNeUxpc3RNb2RlbCwgTXlMaXN0IHsKK30KK3B1YmxpYyBjbGFzcyBMaXN0TW9kZWxJbXBsIHsKKyAgICBwdWJsaWMgT2JqZWN0IGdldChpbnQgaSkgeworICAgICAgICByZXR1cm4gbnVsbDsKKyAgICB9Cit9CitwdWJsaWMgY2xhc3MgTXV0YWJsZUxpc3RNb2RlbEltcGwgZXh0ZW5kcyBMaXN0TW9kZWxJbXBsIGltcGxlbWVudHMgTXV0YWJsZUxpc3RNb2RlbCB7Cit9CisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKworcHVibGljIGNsYXNzIEluaGVyaXRhbmNlQnVnIHsKKyAgICBpbnRlcmZhY2UgQSB7CisgICAgICAgIE9iamVjdCBjbG9uZSgpOworICAgIH0KKworICAgIGludGVyZmFjZSBCIHsKKworICAgIH0KKworICAgIGludGVyZmFjZSBDIGV4dGVuZHMgQSwgQiB7CisKKyAgICB9CisKKyAgICBjbGFzcyBYIGltcGxlbWVudHMgQyB7CisgICAgICAgIHB1YmxpYyBPYmplY3QgY2xvbmUoKSB7CisgICAgICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAgfQorICAgIH0KKworICAgIGNsYXNzIFkgZXh0ZW5kcyBYIHsKKyAgICB9Cit9CisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KK2NsYXNzIGlkZWFkZXYgeworaW50ZXJmYWNlIEEgeworICAgIEEgZigpOworfQorCitpbnRlcmZhY2UgQiBleHRlbmRzIEEgeworICAgIEIgZigpOworfQorCitpbnRlcmZhY2UgQyBleHRlbmRzICBBLEIgeworCit9CisKK2NsYXNzIHMgaW1wbGVtZW50cyBDIHsKKyAgICBwdWJsaWMgPGVycm9yIGRlc2NyPSInZigpJyBpbiAnaWRlYWRldi5zJyBjbGFzaGVzIHdpdGggJ2YoKScgaW4gJ2lkZWFkZXYuQic7IGF0dGVtcHRpbmcgdG8gdXNlIGluY29tcGF0aWJsZSByZXR1cm4gdHlwZSI+QTwvZXJyb3I+IGYoKSB7CisgICAgICAgIHJldHVybiBudWxsOworICAgIH0KK30KK2NsYXNzIHNPayBpbXBsZW1lbnRzIEMgeworICAgIHB1YmxpYyAgQiBmKCkgeworICAgICAgICByZXR1cm4gbnVsbDsKKyAgICB9Cit9CisKK30KKworaW50ZXJmYWNlIE92ZXJyaWRlT2JqZWN0IHsKKyAgIDxUPiB2b2lkIG5vdGlmeSgpOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvZ2VuZXJpY3NIaWdobGlnaHRpbmcvUGFyYW1ldGVyaXplZFBhcmFtZXRlckJvdW5kLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2dlbmVyaWNzSGlnaGxpZ2h0aW5nL1BhcmFtZXRlcml6ZWRQYXJhbWV0ZXJCb3VuZC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUwZTExN2IKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2dlbmVyaWNzSGlnaGxpZ2h0aW5nL1BhcmFtZXRlcml6ZWRQYXJhbWV0ZXJCb3VuZC5qYXZhCkBAIC0wLDAgKzEsNiBAQAoraW1wb3J0IGphdmEudXRpbC4qOworY2xhc3MgUGFyYW1Ib2xkZXI8VCBleHRlbmRzIExpc3Q8U3RyaW5nPj4ge30KK2NsYXNzIEhvbGRlclVzYWdlIHsKKyAgICAgICAgcHVibGljIHZvaWQgZmFpbChQYXJhbUhvbGRlcjw8ZXJyb3IgZGVzY3I9IlR5cGUgcGFyYW1ldGVyICdqYXZhLnV0aWwuTGlzdCcgaXMgbm90IHdpdGhpbiBpdHMgYm91bmQ7IHNob3VsZCBleHRlbmQgJ2phdmEudXRpbC5MaXN0PGphdmEubGFuZy5TdHJpbmc+JyI+TGlzdDwvZXJyb3I+PiBwKSB7IH0KKyAgICAgICAgcHVibGljIHZvaWQgc3VjY2VzcyhQYXJhbUhvbGRlcjxBcnJheUxpc3Q8U3RyaW5nPj4gcCkgeyB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2dlbmVyaWNzSGlnaGxpZ2h0aW5nL1ByaXZhdGVJbm5lckNsYXNzUmVmLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2dlbmVyaWNzSGlnaGxpZ2h0aW5nL1ByaXZhdGVJbm5lckNsYXNzUmVmLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmZlMGVmZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvZ2VuZXJpY3NIaWdobGlnaHRpbmcvUHJpdmF0ZUlubmVyQ2xhc3NSZWYuamF2YQpAQCAtMCwwICsxLDMwIEBACitpbXBvcnQgamF2YS51dGlsLkNvbXBhcmF0b3I7CisKK3B1YmxpYyBhYnN0cmFjdCBjbGFzcyBBIGltcGxlbWVudHMgPGVycm9yIGRlc2NyPSInQS5CJyBoYXMgcHJpdmF0ZSBhY2Nlc3MgaW4gJ0EnIj5Db21wYXJhdG9yPEEuQj48L2Vycm9yPiB7CisKKyAgcHJpdmF0ZSBzdGF0aWMgY2xhc3MgQiB7CisgIH0KKworICBwcml2YXRlIGludGVyZmFjZSBJIGV4dGVuZHMgQ29tcGFyYXRvcjxJPnt9CisgIHByaXZhdGUgaW50ZXJmYWNlIEkxIGV4dGVuZHMgQ29tcGFyYXRvcjxJPnt9Cit9CisKKy8vYWJzdHJhY3QgY2xhc3MgQyBpbXBsZW1lbnRzIGVycm9yIGRlc2NyPSInQy5EJyBoYXMgcHJpdmF0ZSBhY2Nlc3MgaW4gJ0MnIj5DLkQgZXJyb3IgeworLy8gIHByaXZhdGUgc3RhdGljIGNsYXNzIEQge30KKy8vfQorCitjbGFzcyBKU1JlZmVyZW5jZVNldCB7CisgICAgc3RhdGljIGNsYXNzIE15UmVzb2x2ZXIgaW1wbGVtZW50cyBKU1Jlc29sdmVVdGlsLlJlc29sdmVyPE0+IHt9CisgICAgY2xhc3MgTSBleHRlbmRzIEpTUmVzb2x2ZVV0aWwuRiB7fQorfQorY2xhc3MgSlNSZXNvbHZlVXRpbCB7CisgICAgc3RhdGljIGludGVyZmFjZSBSZXNvbHZlcjxUIGV4dGVuZHMgRj4ge30KKyAgICBzdGF0aWMgY2xhc3MgRiB7fQorfQorCisKK2NsYXNzIFRlc3RJREVBNjI1MTUgeworICBwdWJsaWMgc3RhdGljIGludGVyZmFjZSBNb2RlbDxUPiB7fQorICBwdWJsaWMgY2xhc3MgSW5uZXIge30KKyAgcHVibGljIHN0YXRpYyBjbGFzcyBGb28gaW1wbGVtZW50cyBNb2RlbDxJbm5lcj4ge30KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2dlbmVyaWNzSGlnaGxpZ2h0aW5nL1Jhdy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9nZW5lcmljc0hpZ2hsaWdodGluZy9SYXcuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYjExMDE5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9nZW5lcmljc0hpZ2hsaWdodGluZy9SYXcuamF2YQpAQCAtMCwwICsxLDE3NyBAQAoraW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7CisKK2NsYXNzIFJlZmVyZW5jZTw8d2FybmluZyBkZXNjcj0iVHlwZSBwYXJhbWV0ZXIgJ1QnIGlzIG5ldmVyIHVzZWQiPlQ8L3dhcm5pbmc+PiB7Cit9CitjbGFzcyBXZWFrUmVmZXJlbmNlPFQ+IGV4dGVuZHMgUmVmZXJlbmNlPFQ+IHsKK30KK2NsYXNzIEl0ZW08PHdhcm5pbmcgZGVzY3I9IlR5cGUgcGFyYW1ldGVyICdLZXknIGlzIG5ldmVyIHVzZWQiPktleTwvd2FybmluZz4sIFQ+IGV4dGVuZHMgV2Vha1JlZmVyZW5jZTxUPiB7CisgeworICAgUmVmZXJlbmNlPFQ+IHJlZiA9IG51bGw7CisgICBJdGVtIGl0ZW0gPSAoSXRlbSkgcmVmOworICAgZXF1YWxzKGl0ZW0pOworIH0KK30KKworLy8gYXNzaWduIHJhdyB0byBnZW5lcmljIGFyZSBhbGxvd2VkCitjbGFzcyBhPEU+IHsKKyB2b2lkIGYoYTxFPiB0KXsKKyAgICB0Lmhhc2hDb2RlKCk7CisgfQorfQorY2xhc3MgYiAgeworICBhPGI+IGYoYSByYXcpIHsKKyAgIGE8Pz4gdW5ib3VuZCA9IHJhdzsKKyAgIHJhdyA9IHVuYm91bmQ7CisKKyAgIGE8SW50ZWdlcj4gZ2VuZXJpYyA9IDx3YXJuaW5nIGRlc2NyPSJVbmNoZWNrZWQgYXNzaWdubWVudDogJ2EnIHRvICdhPGphdmEubGFuZy5JbnRlZ2VyPiciPnJhdzwvd2FybmluZz47CisgICA8d2FybmluZyBkZXNjcj0iVW5jaGVja2VkIGNhbGwgdG8gJ2YoYTxFPiknIGFzIGEgbWVtYmVyIG9mIHJhdyB0eXBlICdhJyI+cmF3LmY8L3dhcm5pbmc+KHJhdyk7CisgICA8d2FybmluZyBkZXNjcj0iVW5jaGVja2VkIGNhbGwgdG8gJ2YoYTxFPiknIGFzIGEgbWVtYmVyIG9mIHJhdyB0eXBlICdhJyI+cmF3LmY8L3dhcm5pbmc+KGdlbmVyaWMpOworICAgZ2VuZXJpYy5mKDx3YXJuaW5nIGRlc2NyPSJVbmNoZWNrZWQgYXNzaWdubWVudDogJ2EnIHRvICdhPGphdmEubGFuZy5JbnRlZ2VyPiciPnJhdzwvd2FybmluZz4pOworICAgZ2VuZXJpYy5mKGdlbmVyaWMpOworICAgZ2VuZXJpYy5mPGVycm9yIGRlc2NyPSInZihhPGphdmEubGFuZy5JbnRlZ2VyPiknIGluICdhJyBjYW5ub3QgYmUgYXBwbGllZCB0byAnKGE8amF2YS5sYW5nLlN0cmluZz4pJyI+KG5ldyBhPFN0cmluZz4oKSk8L2Vycm9yPjsKKyAgIGdlbmVyaWMgPSA8d2FybmluZyBkZXNjcj0iVW5jaGVja2VkIGFzc2lnbm1lbnQ6ICdhJyB0byAnYTxqYXZhLmxhbmcuSW50ZWdlcj4nIj5yYXc8L3dhcm5pbmc+OworCisKKyAgIHJldHVybiA8d2FybmluZyBkZXNjcj0iVW5jaGVja2VkIGFzc2lnbm1lbnQ6ICdhJyB0byAnYTxiPiciPnJhdzwvd2FybmluZz47CisgIH0KK30KKworY2xhc3MgTGlzdDxUPiB7CisgICA8Vj4gVltdIHRvQXJyYXkgKFZbXSB2cykgeyByZXR1cm4gdnM7IH0KKyAgIHZvaWQgYWRkKFQgdCkgeworICAgICB0Lmhhc2hDb2RlKCk7CisgICB9Cit9CisKK2NsYXNzIGMgeworICAvKlN0cmluZ1tdIGYgKCkgeworICAgIExpc3QgbCA9IG5ldyBMaXN0KCk7CisgICAgZXJyb3IgZGVzY3I9IkluY29tcGF0aWJsZSB0eXBlcy4gRm91bmQ6ICdqYXZhLmxhbmcuT2JqZWN0W10nLCByZXF1aXJlZDogJ2phdmEubGFuZy5TdHJpbmdbXSciPnJldHVybiBsLnRvQXJyYXkgKG5ldyBTdHJpbmdbMF0pOzwvZXJyb3IKKyAgfSovCisgIAorICBTdHJpbmdbXSBnICgpIHsKKyAgICBMaXN0PFN0cmluZz4gbCA9IG5ldyBMaXN0PFN0cmluZz4oKTsKKyAgICByZXR1cm4gbC50b0FycmF5IChuZXcgU3RyaW5nWzBdKTsKKyAgfQorfQorCitjbGFzcyBkIHsKKyAgICBjbGFzcyBZIDw8d2FybmluZyBkZXNjcj0iVHlwZSBwYXJhbWV0ZXIgJ1QnIGlzIG5ldmVyIHVzZWQiPlQ8L3dhcm5pbmc+PiB7CisgICAgfQorCisgICAgY2xhc3MgWiA8PHdhcm5pbmcgZGVzY3I9IlR5cGUgcGFyYW1ldGVyICdUJyBpcyBuZXZlciB1c2VkIj5UPC93YXJuaW5nPj4gZXh0ZW5kcyBZPFk+IHsKKyAgICB9CisKKyAgICBjbGFzcyBQYWlyIDxYPiB7CisgICAgICAgIHZvaWQgZm9vKFk8PyBleHRlbmRzIFg+IHkpIHsKKyAgICAgICAgICB5Lmhhc2hDb2RlKCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBQYWlyPFo+IHBhaXI7CisKKyAgICB2b2lkIGJhcihZPD8gZXh0ZW5kcyBZPiB5KSB7CisgICAgICAgIHBhaXIuZm9vPGVycm9yIGRlc2NyPSInZm9vKGQuWTw/IGV4dGVuZHMgZC5aPiknIGluICdkLlBhaXInIGNhbm5vdCBiZSBhcHBsaWVkIHRvICcoZC5ZPGNhcHR1cmU8PyBleHRlbmRzIGQuWT4+KSciPih5KTwvZXJyb3I+OworICAgIH0KK30KKworY2xhc3MgZSB7CisgICAgU3RyaW5nIGZvbyAoKSB7CisgICAgICAgIE15TGlzdCBteUxpc3QgPSBuZXcgTXlMaXN0KCk7CisgICAgICAgIDxlcnJvciBkZXNjcj0iSW5jb21wYXRpYmxlIHR5cGVzLiBGb3VuZDogJ2phdmEubGFuZy5PYmplY3QnLCByZXF1aXJlZDogJ2phdmEubGFuZy5TdHJpbmcnIj5yZXR1cm4gbXlMaXN0LmdldCgwKTs8L2Vycm9yPgorICAgIH0KKworICAgIHN0YXRpYyBjbGFzcyBNeUxpc3Q8PHdhcm5pbmcgZGVzY3I9IlR5cGUgcGFyYW1ldGVyICdUJyBpcyBuZXZlciB1c2VkIj5UPC93YXJuaW5nPj4gZXh0ZW5kcyBBcnJheUxpc3Q8U3RyaW5nPnsKKyAgICB9Cit9CisKK2NsYXNzIGNjYyB7CisgICAgc3RhdGljIENvbXBhcmFibGU8PyBzdXBlciBjY2M+IGYoKSB7CisgICAgICAgIHJldHVybiA8d2FybmluZyBkZXNjcj0iVW5jaGVja2VkIGFzc2lnbm1lbnQ6ICdqYXZhLmxhbmcuQ29tcGFyYWJsZScgdG8gJ2phdmEubGFuZy5Db21wYXJhYmxlPD8gc3VwZXIgY2NjPiciPm5ldyBDb21wYXJhYmxlICgpIHsKKyAgICAgICAgICAgIHB1YmxpYyBpbnQgY29tcGFyZVRvKGZpbmFsIE9iamVjdCBvKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICB9CisgICAgICAgIH08L3dhcm5pbmc+OworICAgIH0KK30KKworY2xhc3MgZGRkPENPTVAgZXh0ZW5kcyBkZGQ+IHsKKyAgICBDT01QIGNvbXA7CisgICAgZGRkIGZvbygpIHsKKyAgICAgICAgcmV0dXJuIGNvbXA7IC8vbm8gdW5jaGVja2VkIHdhcm5pbmcgaXMgc2lnbmFsbGVkIGhlcmUKKyAgICB9Cit9CisKK2NsYXNzIEcxPFQ+IHsKKyAgVCB0OworfQorY2xhc3MgRzI8VD4geworICAgIFQgdDsKKyAgICAKKyAgICBzdGF0aWMgQXJyYXlMaXN0PEcxPiBmKCkgeworICAgICAgICByZXR1cm4gbnVsbDsKKyAgICB9Cit9CisKK2NsYXNzIEluc3QgeworICAgIHN0YXRpYyB2b2lkIGYgKCkgeworICAgICAgICBHMjxHMTxTdHJpbmc+PiBnMiA9IG5ldyBHMjxHMTxTdHJpbmc+PigpOworICAgICAgICBmb3IgKDx3YXJuaW5nIGRlc2NyPSJVbmNoZWNrZWQgYXNzaWdubWVudDogJ0cxJyB0byAnRzE8amF2YS5sYW5nLlN0cmluZz4nIj5HMTxTdHJpbmc+IGcxPC93YXJuaW5nPiA6IGcyLmYoKSkgeworICAgICAgICAgIGcxLnRvU3RyaW5nKCk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK2NsYXNzIEExMTE8VD4geworICBUIHQ7CisgIDxWPiBWIGYoViB2KSB7CisgICAgcmV0dXJuIHY7CisgIH0KKworICBTdHJpbmcgZyhBMTExIGEpIHsKKyAgICAvL25vaW5zcGVjdGlvbiB1bmNoZWNrZWQKKyAgICA8ZXJyb3IgZGVzY3I9IkluY29tcGF0aWJsZSB0eXBlcy4gRm91bmQ6ICdqYXZhLmxhbmcuT2JqZWN0JywgcmVxdWlyZWQ6ICdqYXZhLmxhbmcuU3RyaW5nJyI+cmV0dXJuIGEuZigiIik7PC9lcnJvcj4KKyAgfQorfQorCitjbGFzcyBBMSB7CisgIDxWPiBWIGYoViB2KSB7CisgICAgcmV0dXJuIHY7CisgIH0KK30KKworY2xhc3MgQTExPFQ+IGV4dGVuZHMgQTEgeworICAgIFQgdDsKKworICAgIC8vdGhpcyBpcyBPSywgdHlwZSBwYXJhbWV0ZXJzIG9mIGJhc2UgY2xhc3MgYXJlIG5vdCByYXcKKyAgICBTdHJpbmcgcyA9IG5ldyBBMTEoKS5mKCIiKTsKK30KKworLy9JREVBREVWLTI2MTYzCitjbGFzcyBUZXN0MTxYPiB7CisgIFggeDsKKyAgamF2YS51dGlsLkFycmF5TGlzdDxOdW1iZXI+IGZvbyA9IG5ldyBqYXZhLnV0aWwuQXJyYXlMaXN0PE51bWJlcj4oKTsKKyAgcHVibGljIHN0YXRpYyBOdW1iZXIgZm9vKCkgeworICAgIDxlcnJvciBkZXNjcj0iSW5jb21wYXRpYmxlIHR5cGVzLiBGb3VuZDogJ2phdmEubGFuZy5PYmplY3QnLCByZXF1aXJlZDogJ2phdmEubGFuZy5OdW1iZXInIj5yZXR1cm4gbmV3IFRlc3QxKCkuZm9vLmdldCgwKTs8L2Vycm9yPgorICB9Cit9CisvL2VuZCBvZiBJREVBREVWLTI2MTYzCisKKworLy8vLy8vLy8vLy8vLy8vICBzaWduYXR1cmVzIGluIG5vbi1wYXJhbWV0ZXJpemVkIGNsYXNzIGFyZSBub3QgZXJhc2VkCitwdWJsaWMgY2xhc3MgQzMgIHsKKyAgICBwdWJsaWMgaW50IGdldChDbGFzczw/PiBjKSB7CisgICAgICAgIHJldHVybiAwOworICAgIH0KK30KKworY2xhc3MgQ3A8VD4gZXh0ZW5kcyBDMyB7CisgIHB1YmxpYyBUIGk7Cit9CitjbGFzcyBDIGV4dGVuZHMgQ3AvKjxDPiovIHsKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgaW50IGdldChDbGFzczw/PiBjKSB7CisgICAgICAgIHJldHVybiAwOworICAgIH0KK30KKy8vLy8vLy8vLy8vLy8vClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9nZW5lcmljc0hpZ2hsaWdodGluZy9SYXdPblBhcmFtZXRlcml6ZWQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvZ2VuZXJpY3NIaWdobGlnaHRpbmcvUmF3T25QYXJhbWV0ZXJpemVkLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTQwNzllOQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvZ2VuZXJpY3NIaWdobGlnaHRpbmcvUmF3T25QYXJhbWV0ZXJpemVkLmphdmEKQEAgLTAsMCArMSwyOSBAQAorY2xhc3MgR2VuZXJpY091dGVyPFQ+IHsKKyAgICBwdWJsaWMgY2xhc3MgR2VuZXJpY0lubmVyPFU+IHsKKyAgICB9CisKKyAgICBwdWJsaWMgc3RhdGljIGNsYXNzIFN0YXRpY0dlbmVyaWNJbm5lcjxVPiB7CisgICAgfQorCisgICAgcHVibGljIGNsYXNzIFNpbXBsZUlubmVyIHsKKyAgICB9Cit9CisKK2NsYXNzIE91dGVyQ2xpZW50IHsKKyAgICBwdWJsaWMgdm9pZCBjb250ZXh0KCkgeworICAgICAgICA8ZXJyb3IgZGVzY3I9IkltcHJvcGVyIGZvcm1lZCB0eXBlOyBzb21lIHR5cGUgcGFyYW1ldGVycyBhcmUgbWlzc2luZyI+R2VuZXJpY091dGVyPFN0cmluZz4uR2VuZXJpY0lubmVyPC9lcnJvcj4gdjEgPSBudWxsOworICAgICAgICBHZW5lcmljT3V0ZXIuR2VuZXJpY0lubmVyPGVycm9yIGRlc2NyPSJUeXBlIGFyZ3VtZW50cyBnaXZlbiBvbiBhIHJhdyB0eXBlIj48U3RyaW5nPjwvZXJyb3I+IHYyID0gbnVsbDsKKyAgICAgICAgR2VuZXJpY091dGVyLkdlbmVyaWNJbm5lciB2MyA9IG51bGw7IAorICAgICAgICBHZW5lcmljT3V0ZXI8U3RyaW5nPi5HZW5lcmljSW5uZXI8U3RyaW5nPiB2NCA9IG51bGw7CisKKyAgICAgICAgR2VuZXJpY091dGVyPGVycm9yIGRlc2NyPSJDYW5ub3Qgc2VsZWN0IHN0YXRpYyBjbGFzcyAnR2VuZXJpY091dGVyLlN0YXRpY0dlbmVyaWNJbm5lcicgZnJvbSBwYXJhbWV0ZXJpemVkIHR5cGUiPjxTdHJpbmc+PC9lcnJvcj4uU3RhdGljR2VuZXJpY0lubmVyIHN2MSA9IG51bGw7CisgICAgICAgIEdlbmVyaWNPdXRlci5TdGF0aWNHZW5lcmljSW5uZXI8U3RyaW5nPiBzdjIgPSBudWxsOworICAgICAgICBHZW5lcmljT3V0ZXIuU3RhdGljR2VuZXJpY0lubmVyIHN2MyA9IG51bGw7CisgICAgICAgIEdlbmVyaWNPdXRlcjxlcnJvciBkZXNjcj0iQ2Fubm90IHNlbGVjdCBzdGF0aWMgY2xhc3MgJ0dlbmVyaWNPdXRlci5TdGF0aWNHZW5lcmljSW5uZXInIGZyb20gcGFyYW1ldGVyaXplZCB0eXBlIj48U3RyaW5nPjwvZXJyb3I+LlN0YXRpY0dlbmVyaWNJbm5lcjxTdHJpbmc+IHN2NCA9IG51bGw7CisKKyAgICAgICAgR2VuZXJpY091dGVyPFN0cmluZz4uU2ltcGxlSW5uZXIgaXYxID0gbnVsbDsKKyAgICAgICAgR2VuZXJpY091dGVyLlNpbXBsZUlubmVyPGVycm9yIGRlc2NyPSJUeXBlIGFyZ3VtZW50cyBnaXZlbiBvbiBhIHJhdyB0eXBlIj48U3RyaW5nPjwvZXJyb3I+IGl2MiA9IG51bGw7CisgICAgICAgIEdlbmVyaWNPdXRlci5TaW1wbGVJbm5lciBpdjMgPSBudWxsOworICAgICAgICBHZW5lcmljT3V0ZXI8U3RyaW5nPi5TaW1wbGVJbm5lcjxlcnJvciBkZXNjcj0iVHlwZSAnR2VuZXJpY091dGVyLlNpbXBsZUlubmVyJyBkb2VzIG5vdCBoYXZlIHR5cGUgcGFyYW1ldGVycyI+PFN0cmluZz48L2Vycm9yPiBpdjQgPSBudWxsOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2dlbmVyaWNzSGlnaGxpZ2h0aW5nL1Jhd092ZXJyaWRpbmdNZXRob2RzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2dlbmVyaWNzSGlnaGxpZ2h0aW5nL1Jhd092ZXJyaWRpbmdNZXRob2RzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTkzNDAxMgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvZ2VuZXJpY3NIaWdobGlnaHRpbmcvUmF3T3ZlcnJpZGluZ01ldGhvZHMuamF2YQpAQCAtMCwwICsxLDI3MSBAQAoraW1wb3J0IGphdmEudXRpbC4qOworCitjbGFzcyBCYXNlPFQ+IHsKKyAgICBwdWJsaWMgdm9pZCBtZXRob2QoQmFzZTw/PiBiYXNlKSB7IH0KKyAgICBwdWJsaWMgdm9pZCBtZXRob2QxKEJhc2U8QmFzZTw/Pj4gYmFzZSkgeyB9CisgICAgcHVibGljIDxWPiBCYXNlPFY+IGZvbygpIHsgcmV0dXJuIG51bGw7IH0KKyAgICBwdWJsaWMgQmFzZTw/PiBiYXIoKSB7IHJldHVybiBudWxsOyB9CisgICAgcHVibGljIEJhc2U8QmFzZTw/Pj4gZmFyKCkgeyByZXR1cm4gbnVsbDsgfQorfQorCitjbGFzcyBEZXJpdmVkIGV4dGVuZHMgQmFzZSB7CisgICAgcHVibGljIHZvaWQgbWV0aG9kKEJhc2UgYmFzZSkgeyB9CisgICAgcHVibGljIEJhc2UgZm9vKCkgeyByZXR1cm4gbnVsbDsgfQorICAgIHB1YmxpYyBCYXNlIGJhcigpIHsgcmV0dXJuIG51bGw7IH0KK30KKworY2xhc3MgRGVyaXZlZDEgZXh0ZW5kcyBCYXNlIHsKKyAgICA8ZXJyb3IgZGVzY3I9IidtZXRob2QxKEJhc2U8U3RyaW5nPiknIGluICdEZXJpdmVkMScgY2xhc2hlcyB3aXRoICdtZXRob2QxKEJhc2U8QmFzZTw/Pj4pJyBpbiAnQmFzZSc7IGJvdGggbWV0aG9kcyBoYXZlIHNhbWUgZXJhc3VyZSwgeWV0IG5laXRoZXIgb3ZlcnJpZGVzIHRoZSBvdGhlciI+cHVibGljIHZvaWQgbWV0aG9kMShCYXNlPFN0cmluZz4gYmFzZSk8L2Vycm9yPiB7IH0KKyAgICBwdWJsaWMgQmFzZTxTdHJpbmc+IGZhcigpIHsgcmV0dXJuIG51bGw7IH0gLy8gQWNjZXB0YWJsZSBjb25zdHJ1Y3QgYXMgb2YgSkRLIDEuNSBiZXRhIDIgbWF5IDIwMDQKK30KKworY2xhc3MgWCA8VD4geworICAgIHB1YmxpYyA8Vj4gdm9pZCBmb28gKCkge30KK30KKworY2xhc3MgWVkgZXh0ZW5kcyBYIHsKKyAgICA8ZXJyb3IgZGVzY3I9Iidmb28oKScgaW4gJ1lZJyBjbGFzaGVzIHdpdGggJ2ZvbygpJyBpbiAnWCc7IGJvdGggbWV0aG9kcyBoYXZlIHNhbWUgZXJhc3VyZSwgeWV0IG5laXRoZXIgb3ZlcnJpZGVzIHRoZSBvdGhlciI+cHVibGljIDxWPiB2b2lkIGZvbygpPC9lcnJvcj4ge30KK30KKworaW50ZXJmYWNlIExpc3Q8WT4geworICAgIHB1YmxpYyA8VD4gVFtdIHRvQXJyYXkoVFtdIHRzKTsKK30KK2NsYXNzIEFic3RyYWN0TGlzdDxZPiB7CisgICAgcHVibGljIDxUPiBUW10gdG9BcnJheShUW10gdHMpIHtyZXR1cm4gbnVsbDt9Cit9CisvL1NpZ25hdHVyZXMgZnJvbSBMaXN0IGFuZCBBYnN0cmFjdExpc3QgYXJlIGVxdWFsCitjbGFzcyBBcnJheUxpc3QgZXh0ZW5kcyBBYnN0cmFjdExpc3QgaW1wbGVtZW50cyBMaXN0IHt9CisKKy8vU0NSIDM5NDg1OiB0aGUgZm9sbG93aW5nIG92ZXJyaWRpbmcgaXMgT0sKK2Fic3RyYWN0IGNsYXNzIERvZXIgeworICAgIGFic3RyYWN0IDxYPiB2b2lkIGdvKFggeCk7Cit9CisKK2NsYXNzIE15TGlzdCA8WD4KKyAgIGV4dGVuZHMgRG9lciB7CisgICBYIHg7IAorICAgPFk+IHZvaWQgZ28oWSB5KSB7fQorfQorCitjbGFzcyBNeUxpc3RSYXcKKyAgICAgICBleHRlbmRzIE15TGlzdCB7Cit9CisKKy8vU2VlIElERUFERVYtMTEyNQorLy9UaGUgZm9sbG93aW5nIHR3byBjbGFzc2VzIGFyZSBPSworY2xhc3MgQTEgeworICAgIDxUPiB2b2lkIGZvbyhUIHQpIHt9Cit9CisKK2NsYXNzIEEyIGV4dGVuZHMgQTEgeworICAgIHZvaWQgZm9vKE9iamVjdCBvKSB7fQorfQorCisvL1doaWxlIHRoZXNlIGFyZSBub3QKK2NsYXNzIEEzIHsKKyAgICB2b2lkIGZvbyhPYmplY3Qgbykge30KK30KKworY2xhc3MgQTQgZXh0ZW5kcyBBMyB7CisgICAgPGVycm9yIGRlc2NyPSInZm9vKFQpJyBpbiAnQTQnIGNsYXNoZXMgd2l0aCAnZm9vKE9iamVjdCknIGluICdBMyc7IGJvdGggbWV0aG9kcyBoYXZlIHNhbWUgZXJhc3VyZSwgeWV0IG5laXRoZXIgb3ZlcnJpZGVzIHRoZSBvdGhlciI+PFQ+IHZvaWQgZm9vKFQgdCk8L2Vycm9yPiB7fQorfQorCisvL1RoaXMgc2libGluZyBvdmVycmlkZSBpcyBPSworY2xhc3MgQTUgeworICAgIHB1YmxpYyB2b2lkIGZvbyhPYmplY3Qgbykge30KK30KKworaW50ZXJmYWNlIEkxIHsKKyAgICA8VD4gdm9pZCBmb28oVCB0KTsKK30KKworY2xhc3MgQTYgZXh0ZW5kcyBBNSBpbXBsZW1lbnRzIEkxIHt9CisKKy8vV2hpbGUgdGhpcyBpcyBub3QKK2NsYXNzIEE3IHsKKyAgICBwdWJsaWMgPFQ+IHZvaWQgZm9vKFQgdCkge30KK30KKworaW50ZXJmYWNlIEkyIHsKKyAgICBwdWJsaWMgdm9pZCBmb28oT2JqZWN0IG8pOworfQorCis8ZXJyb3IgZGVzY3I9IkNsYXNzICdBOCcgbXVzdCBlaXRoZXIgYmUgZGVjbGFyZWQgYWJzdHJhY3Qgb3IgaW1wbGVtZW50IGFic3RyYWN0IG1ldGhvZCAnZm9vKE9iamVjdCknIGluICdJMiciPmNsYXNzIEE4IGV4dGVuZHMgQTcgaW1wbGVtZW50cyBJMjwvZXJyb3I+IHt9CisKKy8vSURFQS05MzIxCithYnN0cmFjdCBjbGFzcyBNeU1hcDxLLCBWPiBpbXBsZW1lbnRzIGphdmEudXRpbC5NYXA8SywgVj4geworICAgIHB1YmxpYyAgPGVycm9yIGRlc2NyPSIncHV0KEssIFYpJyBpbiAnTXlNYXAnIGNsYXNoZXMgd2l0aCAncHV0KEssIFYpJyBpbiAnamF2YS51dGlsLk1hcCc7IGF0dGVtcHRpbmcgdG8gdXNlIGluY29tcGF0aWJsZSByZXR1cm4gdHlwZSI+T2JqZWN0PC9lcnJvcj4gcHV0KEsga2V5LCBWIHZhbHVlKSB7CisgICAgICAgIHJldHVybiBudWxsOworICAgIH0KK30KKy8vZW5kIG9mIElERUEtOTMyMQorCithYnN0cmFjdCBjbGFzcyBBQSA8VD4geworICAgIGFic3RyYWN0IHZvaWQgZm9vKFQgdCk7Cit9CisKK2Fic3RyYWN0IGNsYXNzIEJCPFQ+IGV4dGVuZHMgQUE8QkI+IHsKKyAgICB2b2lkIGZvbyhCQiBiKSB7fQorfQorCitjbGFzcyBDQyBleHRlbmRzIEJCIHsKKyAgLy9mb28gaXMgY29ycmVjdGx5IHNlZW4gZnJvbSBCQgorfQorCitjbGFzcyBRUVEge30KKworYWJzdHJhY3QgY2xhc3MgR3JhbmRQYXJlbnQ8VD4geworICAgIHB1YmxpYyBhYnN0cmFjdCB2b2lkIHBhaW50KFQgb2JqZWN0KTsKK30KKworY2xhc3MgUGFyZW50PFQgZXh0ZW5kcyBRUVE+IGV4dGVuZHMgR3JhbmRQYXJlbnQ8VD4geworICAgIHB1YmxpYyB2b2lkIHBhaW50KFQgY29tcG9uZW50KSB7CisgICAgfQorfQorCisvLyB0aGlzIG92ZXJyaWRpbmcgc2hvdWxkIGJlIE9LCitjbGFzcyBDaGlsZDIgZXh0ZW5kcyBQYXJlbnQgeworCit9CisKK2NsYXNzIElERUExNjQ5NCAgeworICAgIGNsYXNzIEJhc2U8Qj4geworICAgICAgICBwdWJsaWMgTGlzdDxCPiBlbGVtZW50cygpIHsKKyAgICAgICAgICAgIHJldHVybiBudWxsOworICAgICAgICB9CisgICAgfQorCisgICAgY2xhc3MgRGVyaXZlZDxUPiBleHRlbmRzIEJhc2U8VFtdPiB7CisgICAgfQorCisgICAgY2xhc3MgTW9zdERlcml2ZWQgZXh0ZW5kcyBEZXJpdmVkIHsKKworICAgICAgICBwdWJsaWMgTGlzdDxNb3N0RGVyaXZlZFtdPiBlbGVtZW50cygpIHsKKyAgICAgICAgICAgIHJldHVybiBudWxsOworICAgICAgICB9CisgICAgfQorfQorY2xhc3MgSURFQTE2NDk0T3JpZ2luYWwgIHsKKyAgICBjbGFzcyBCYXNlPEI+IHsKKyAgICAgICAgcHVibGljIExpc3Q8Qj4gZWxlbWVudHMoKSB7CisgICAgICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAgfQorICAgIH0KKworICAgIGNsYXNzIERlcml2ZWQ8VD4gZXh0ZW5kcyBCYXNlPFQ+IHsKKyAgICB9CisKKyAgICBjbGFzcyBNb3N0RGVyaXZlZCBleHRlbmRzIERlcml2ZWQgeworCisgICAgICAgIHB1YmxpYyBMaXN0PE1vc3REZXJpdmVkPiBlbGVtZW50cygpIHsKKyAgICAgICAgICAgIHJldHVybiBudWxsOworICAgICAgICB9CisgICAgfQorfQorY2xhc3MgSURFQURFVjIzMTc2RXhhbXBsZSB7CisgIHB1YmxpYyBhYnN0cmFjdCBjbGFzcyBBYnN0cmFjdEJhc2U8RT4gZXh0ZW5kcyBBYnN0cmFjdFBhcmVudDxFPiBpbXBsZW1lbnRzIEludGVyZmFjZTxFPiB7CisgIH0KKyAgcHVibGljIGFic3RyYWN0IGNsYXNzIEFic3RyYWN0UGFyZW50PEU+IHsKKyAgICBwdWJsaWMgdm9pZCBJbXBsZW1lbnRlZChDb2xsZWN0aW9uPD8+IGMpIHsKKyAgICB9CisgICAgcHVibGljIGFic3RyYWN0IHZvaWQgbXVzdEltcGxlbWVudCgpOworICB9CisgIHB1YmxpYyBjbGFzcyBCYXNlY2xhc3MgZXh0ZW5kcyBBYnN0cmFjdEJhc2UgaW1wbGVtZW50cyBJbnRlcmZhY2UgeworICAgIHB1YmxpYyB2b2lkIG11c3RJbXBsZW1lbnQoKSB7CisgICAgfQorICB9CisgIHB1YmxpYyBpbnRlcmZhY2UgSW50ZXJmYWNlPEU+IHsKKyAgICB2b2lkIEltcGxlbWVudGVkKENvbGxlY3Rpb248Pz4gYyk7CisgIH0KK30KKworLyoqIEBub2luc3BlY3Rpb24gVW51c2VkRGVjbGFyYXRpb24qLworY2xhc3MgSURFQURFVjI2MTg1Cit7CisgICAgcHVibGljIHN0YXRpYyBhYnN0cmFjdCBjbGFzcyBTdXBlckFic3RyYWN0PE93bmVyLCBUeXBlPgorICAgIHsKKyAgICAgICAgcHVibGljIGFic3RyYWN0IE9iamVjdCBmb28oVHlwZSBvdGhlcik7CisgICAgfQorCisgICAgcHVibGljIHN0YXRpYyBhYnN0cmFjdCBjbGFzcyBIYWxmR2VuZXJpY1N1cGVyPE93bmVyPiBleHRlbmRzIFN1cGVyQWJzdHJhY3Q8T3duZXIsIFN0cmluZz4KKyAgICB7CisgICAgICAgIHB1YmxpYyBhYnN0cmFjdCBPYmplY3QgZm9vKFN0cmluZyBvdGhlcik7CisgICAgfQorCisgICAgcHVibGljIHN0YXRpYyBhYnN0cmFjdCBjbGFzcyBBYnN0cmFjdEltcGw8T3duZXI+IGV4dGVuZHMgSGFsZkdlbmVyaWNTdXBlcjxPd25lcj4KKyAgICB7CisgICAgICAgIHB1YmxpYyBPYmplY3QgZm9vKFN0cmluZyBvdGhlcikKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIG51bGw7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwdWJsaWMgc3RhdGljIGNsYXNzIENvbmNyZXRlIGV4dGVuZHMgQWJzdHJhY3RJbXBsCisgICAgeworICAgIH0KK30KKworY2xhc3MgaWRlYWRldjMwMDkwIHsKKyAgYWJzdHJhY3QgY2xhc3MgTXlCZWFuQ29udGV4dAorICAgICAgICBpbXBsZW1lbnRzIE15TGlzdEludGVyZmFjZS8qPE15TGlzdE1lbWJlcj4qLyB7CisgICAgcHVibGljIE9iamVjdCBnZXQoaW50IGluZGV4KSB7CisgICAgICAgIHJldHVybiBudWxsOworICAgIH0KKyAgfQorCisgIGludGVyZmFjZSBNeUxpc3RJbnRlcmZhY2U8RSBleHRlbmRzIE15TGlzdE1lbWJlcj4KKyAgICAgICAgZXh0ZW5kcyBMaXN0PEU+IHsKKyAgfQorICBpbnRlcmZhY2UgTXlMaXN0TWVtYmVyIHsKKyAgICAgdm9pZCBmKCk7CisgIH0KK30KKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworY2xhc3MgSURFQURFVjMyNDIxIHsKKyBpbnRlcmZhY2UgSW50ZXJmYWNlV2l0aEZvbyB7CisgICAgQ2xhc3M8Pz4gZm9vKCk7CisgfQorCisgY2xhc3MgUGFyZW50V2l0aEZvbyBpbXBsZW1lbnRzIEludGVyZmFjZVdpdGhGb28geworICAgIHB1YmxpYyBDbGFzcyBmb28oKSB7CisgICAgICAgIHJldHVybiBudWxsOworICAgIH0KKyB9CisKKyBjbGFzcyBUZXN0SUkgZXh0ZW5kcyBQYXJlbnRXaXRoRm9vIGltcGxlbWVudHMgSW50ZXJmYWNlV2l0aEZvbyB7CisgfQorfQorCitjbGFzcyBJREVBREVWMzI0MjFfVGhlT3RoZXJXYXkgeworIGludGVyZmFjZSBJbnRlcmZhY2VXaXRoRm9vIHsKKyAgICBDbGFzcyBmb28oKTsKKyB9CisKKyBjbGFzcyBQYXJlbnRXaXRoRm9vIGltcGxlbWVudHMgSW50ZXJmYWNlV2l0aEZvbyB7CisgICAgcHVibGljIENsYXNzPD8+IGZvbygpIHsKKyAgICAgICAgcmV0dXJuIG51bGw7CisgICAgfQorIH0KKworIGNsYXNzIFRlc3RJSSBleHRlbmRzIFBhcmVudFdpdGhGb28gaW1wbGVtZW50cyBJbnRlcmZhY2VXaXRoRm9vIHsKKyB9Cit9CisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworY2xhc3MgU0JCdWcgeworICBhYnN0cmFjdCBjbGFzcyBBPFQ+IGltcGxlbWVudHMgQ29tcGFyYWJsZTxBPFQ+PiB7fQorCisgIGNsYXNzIEIgZXh0ZW5kcyBBIHsKKyAgICAgIHB1YmxpYyBpbnQgY29tcGFyZVRvKE9iamVjdCBvKSB7CisgICAgICAgICAgcmV0dXJuIDA7CisgICAgICB9CisgIH0KK30KK2NsYXNzIFNCQnVnMiB7CisgICAgYWJzdHJhY3QgY2xhc3MgQTxUPiBpbXBsZW1lbnRzIENvbXBhcmFibGU8QTxUPj4ge30KKworICAgIDxlcnJvciBkZXNjcj0iQ2xhc3MgJ0InIG11c3QgZWl0aGVyIGJlIGRlY2xhcmVkIGFic3RyYWN0IG9yIGltcGxlbWVudCBhYnN0cmFjdCBtZXRob2QgJ2NvbXBhcmVUbyhUKScgaW4gJ0NvbXBhcmFibGUnIj5jbGFzcyBCIGV4dGVuZHMgQTwvZXJyb3I+IHsKKyAgICAgICAgcHVibGljIGludCBjb21wYXJlVG8oQSBvKSB7CisgICAgICAgICAgICByZXR1cm4gMDsgCisgICAgICAgIH0KKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2dlbmVyaWNzSGlnaGxpZ2h0aW5nL1JlZmVyZW5jZVR5cGVQYXJhbXMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvZ2VuZXJpY3NIaWdobGlnaHRpbmcvUmVmZXJlbmNlVHlwZVBhcmFtcy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjliNzAzNDAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2dlbmVyaWNzSGlnaGxpZ2h0aW5nL1JlZmVyZW5jZVR5cGVQYXJhbXMuamF2YQpAQCAtMCwwICsxLDE1MiBAQAoraW1wb3J0IGphdmEubGFuZy5PYmplY3Q7CitpbXBvcnQgamF2YS51dGlsLio7CisKK2NsYXNzIEM8VCxVPiB7CisKKyAgQyBjMSA9IG5ldyBDPGVycm9yIGRlc2NyPSJXcm9uZyBudW1iZXIgb2YgdHlwZSBhcmd1bWVudHM6IDE7IHJlcXVpcmVkOiAyIj48SW50ZWdlcj48L2Vycm9yPigpOworICBDIGMyID0gbmV3IEM8ZXJyb3IgZGVzY3I9Ildyb25nIG51bWJlciBvZiB0eXBlIGFyZ3VtZW50czogMzsgcmVxdWlyZWQ6IDIiPjxJbnRlZ2VyLCBGbG9hdCwgT2JqZWN0PjwvZXJyb3I+KCk7CisgIE9iamVjdCBvID0gbmV3IE9iamVjdDxlcnJvciBkZXNjcj0iVHlwZSAnamF2YS5sYW5nLk9iamVjdCcgZG9lcyBub3QgaGF2ZSB0eXBlIHBhcmFtZXRlcnMiPjxDPjwvZXJyb3I+KCk7CisKKyAgQyBjMyA9IG5ldyBDKCk7CisgIEMgYzQgPSBuZXcgQzxPYmplY3QsIEM+KCk7CisgIEM8SW50ZWdlciwgRmxvYXQ+IGM1ID0gbmV3IEM8SW50ZWdlciwgRmxvYXQ+KCk7IAorfQorCitjbGFzcyBEPFQgZXh0ZW5kcyBDPiB7CisgIHsKKyAgICBuZXcgRDw8ZXJyb3IgZGVzY3I9IlR5cGUgcGFyYW1ldGVyICdqYXZhLmxhbmcuSW50ZWdlcicgaXMgbm90IHdpdGhpbiBpdHMgYm91bmQ7IHNob3VsZCBleHRlbmQgJ0MnIj5JbnRlZ2VyPC9lcnJvcj4+KCk7CisgICAgbmV3IEQ8Qz4oKTsKKyAgICBjbGFzcyBDQyBleHRlbmRzIEMge307CisgICAgbmV3IEQ8Q0M+KCk7CisgICAgbmV3IEQ8VD4oKTsKKyAgfQorCisgIFQgZmllbGQgPSBuZXcgPGVycm9yIGRlc2NyPSJUeXBlIHBhcmFtZXRlciAnVCcgY2Fubm90IGJlIGluc3RhbnRpYXRlZCBkaXJlY3RseSI+VDwvZXJyb3I+KCk7CisgIFQgZmllbGQyID0gbmV3IDxlcnJvciBkZXNjcj0iVHlwZSBwYXJhbWV0ZXIgJ1QnIGNhbm5vdCBiZSBpbnN0YW50aWF0ZWQgZGlyZWN0bHkiPlQ8L2Vycm9yPigpIHsgfTsKKyAgVFtdIGFycmF5ID0gbmV3IDxlcnJvciBkZXNjcj0iVHlwZSBwYXJhbWV0ZXIgJ1QnIGNhbm5vdCBiZSBpbnN0YW50aWF0ZWQgZGlyZWN0bHkiPlQ8L2Vycm9yPlsxMF07Cit9CisKK2NsYXNzIFByaW1pdGl2ZXM8VD4geworICBPYmplY3QgYSA9IG5ldyBQcmltaXRpdmVzPDxlcnJvciBkZXNjcj0iVHlwZSBhcmd1bWVudCBjYW5ub3QgYmUgb2YgcHJpbWl0aXZlIHR5cGUiPj8gZXh0ZW5kcyBpbnQ8L2Vycm9yPj4oKTsKKyAgT2JqZWN0IG8gPSBuZXcgUHJpbWl0aXZlczw8ZXJyb3IgZGVzY3I9IlR5cGUgYXJndW1lbnQgY2Fubm90IGJlIG9mIHByaW1pdGl2ZSB0eXBlIj5pbnQ8L2Vycm9yPj4oKTsKKyAgdm9pZCBmKFByaW1pdGl2ZXM8PGVycm9yIGRlc2NyPSJUeXBlIGFyZ3VtZW50IGNhbm5vdCBiZSBvZiBwcmltaXRpdmUgdHlwZSI+Ym9vbGVhbjwvZXJyb3I+PiBwYXJhbSkgeworICAgIGlmICh0aGlzIGluc3RhbmNlb2YgUHJpbWl0aXZlczw8ZXJyb3IgZGVzY3I9IlR5cGUgYXJndW1lbnQgY2Fubm90IGJlIG9mIHByaW1pdGl2ZSB0eXBlIj5kb3VibGU8L2Vycm9yPj4pIHsKKyAgICAgIHJldHVybjsKKyAgICB9CisgIH0KK30KKworCisvLy8vLy8vIGNhbGxpbmcgc3VwZXIgb24gZ2VuZXJpYyBib3VuZCBjbGFzcworcHVibGljIGNsYXNzIEdlbmVyaWM8VD4geworICAgIEdlbmVyaWMoVCB0KXt9Cit9CitwdWJsaWMgY2xhc3MgQm91bmQgZXh0ZW5kcyBHZW5lcmljPFN0cmluZz57CisgICAgcHVibGljIEJvdW5kKFN0cmluZyBzKSB7CisgICAgICAgIHN1cGVyKHMpOworICAgIH0KK30KKworLy8vLworY2xhc3MgR2VuZXJpYzI8VDEsVDI+IHsKKyAgY2xhc3MgQSB7fQorICBjbGFzcyBCIHt9CisgIHByaXZhdGUgPGVycm9yIGRlc2NyPSJJbmNvbXBhdGlibGUgdHlwZXMuIEZvdW5kOiAnR2VuZXJpYzI8amF2YS5sYW5nLlN0cmluZyxHZW5lcmljMi5CPicsIHJlcXVpcmVkOiAnR2VuZXJpYzI8amF2YS5sYW5nLlN0cmluZyxHZW5lcmljMi5BPiciPkdlbmVyaWMyPFN0cmluZywgQT4gbWFwID0gbmV3IEdlbmVyaWMyPFN0cmluZyxCPigpOzwvZXJyb3I+CisgIHsKKyAgICA8ZXJyb3IgZGVzY3I9IkluY29tcGF0aWJsZSB0eXBlcy4gRm91bmQ6ICdHZW5lcmljMjxqYXZhLmxhbmcuU3RyaW5nLGphdmEubGFuZy5TdHJpbmc+JywgcmVxdWlyZWQ6ICdHZW5lcmljMjxqYXZhLmxhbmcuU3RyaW5nLEdlbmVyaWMyLkE+JyI+bWFwID0gbmV3IEdlbmVyaWMyPFN0cmluZyxTdHJpbmc+KCk8L2Vycm9yPjsKKyAgICBtYXAgPSBuZXcgR2VuZXJpYzI8U3RyaW5nLEE+KCk7CisgIH0KK30KKworY2xhc3MgRHVtbXlMaXN0PFQ+IHt9CithYnN0cmFjdCBjbGFzcyBHZW5lcmljVGVzdDMgaW1wbGVtZW50cyBEdW1teUxpc3Q8PGVycm9yIGRlc2NyPSJObyB3aWxkY2FyZCBleHBlY3RlZCI+PyBleHRlbmRzIFN0cmluZzwvZXJyb3I+PiB7CisgICAgRHVtbXlMaXN0PER1bW15TGlzdDw/IGV4dGVuZHMgRHVtbXlMaXN0Pj4gbDsKKyAgICA8VD4gdm9pZCBmb28gKCkge30KKyAgICB2b2lkIGJhciAoKSB7CisgICAgICAgICB0aGlzLjxEdW1teUxpc3Q8PyBleHRlbmRzIER1bW15TGlzdD4+Zm9vKCk7CisgICAgICAgICBEdW1teUxpc3Q8RHVtbXlMaXN0PD8gc3VwZXIgU3RyaW5nPj5bXSBsID0gPGVycm9yIGRlc2NyPSJHZW5lcmljIGFycmF5IGNyZWF0aW9uIj5uZXcgRHVtbXlMaXN0PER1bW15TGlzdDw/IHN1cGVyIFN0cmluZz4+WzBdPC9lcnJvcj47CisgICAgICAgICBEdW1teUxpc3Q8U3RyaW5nPltdIGwxID0gPGVycm9yIGRlc2NyPSJHZW5lcmljIGFycmF5IGNyZWF0aW9uIj57fTwvZXJyb3I+OworICAgIH0KKworICAgIHB1YmxpYyA8VD4gVFtdIGdldENvbXBvbmVudHMgKENsYXNzPFQ+IGJhc2VJbnRlcmZhY2VDbGFzcykgeworICAgICAgICBUW10gdHMgPSA8ZXJyb3IgZGVzY3I9IkdlbmVyaWMgYXJyYXkgY3JlYXRpb24iPnt9PC9lcnJvcj47CisKKyAgICAgICAgcmV0dXJuIHRzOworICAgIH0KK30KKworY2xhc3MgbXlsaXN0PFQ+IHt9CitjbGFzcyBteUFMaXN0PFQ+IGV4dGVuZHMgbXlsaXN0PFQ+IHsKKyAgeworICAgICAgICBteWxpc3Q8U3RyaW5nPiBsID0gPGVycm9yIGRlc2NyPSJJbmNvbnZlcnRpYmxlIHR5cGVzOyBjYW5ub3QgY2FzdCAnbXlBTGlzdDxqYXZhLmxhbmcuSW50ZWdlcj4nIHRvICdteWxpc3Q8amF2YS5sYW5nLlN0cmluZz4nIj4obXlsaXN0PFN0cmluZz4pIG5ldyBteUFMaXN0PEludGVnZXI+KCk8L2Vycm9yPjsKKyAgICAgICAgYm9vbGVhbiBiID0gPGVycm9yIGRlc2NyPSJPcGVyYXRvciAnPT0nIGNhbm5vdCBiZSBhcHBsaWVkIHRvICdteUFMaXN0PGphdmEubGFuZy5JbnRlZ2VyPicsICdteUFMaXN0PGphdmEubGFuZy5TdHJpbmc+JyI+bmV3IG15QUxpc3Q8SW50ZWdlcj4oKSA9PSBuZXcgbXlBTGlzdDxTdHJpbmc+KCk8L2Vycm9yPjsKKworICAgICAgICBpZiAobCBpbnN0YW5jZW9mIDxlcnJvciBkZXNjcj0iSWxsZWdhbCBnZW5lcmljIHR5cGUgZm9yIGluc3RhbmNlb2YiPm15QUxpc3Q8U3RyaW5nPjwvZXJyb3I+KTsKKyAgICAgICAgT2JqZWN0IG8gPSBuZXcgT2JqZWN0KCk7CisgICAgICAgIGlmIChvIGluc3RhbmNlb2YgPGVycm9yIGRlc2NyPSJDbGFzcyBvciBhcnJheSBleHBlY3RlZCI+VDwvZXJyb3I+KTsKKyAgfQorCisgIENsYXNzPFQ+IGZvbyAoQ2xhc3M8VD4gY2xhenopIHsKKyAgICAgICAgQ2xhc3M8U3RyaW5nPiBjbGF6ejEgPSAoQ2xhc3M8U3RyaW5nPiljbGF6ejsgIC8vU2hvdWxkIGJlIHVuY2hlY2tlZCB3YXJuaW5nCisgICAgICAgIHJldHVybiA8ZXJyb3IgZGVzY3I9IkNhbm5vdCBzZWxlY3QgZnJvbSBhIHR5cGUgdmFyaWFibGUiPlQ8L2Vycm9yPi5jbGFzczsKKyAgfQorfQorCitjbGFzcyB0ZXN0RHVwPFQsIDxlcnJvciBkZXNjcj0iRHVwbGljYXRlIHR5cGUgcGFyYW1ldGVyOiAnVCciPlQ8L2Vycm9yPj4geyAvLyBDQU4gSVQgQkUgSElHSExJR0hURUQ/IGIKKyAgICBwdWJsaWMgPFQsIDxlcnJvciBkZXNjcj0iRHVwbGljYXRlIHR5cGUgcGFyYW1ldGVyOiAnVCciPlQ8L2Vycm9yPj4gdm9pZCBmb28oKSB7IC8vIENBTiBJVCBCRSBISUdITElHSFRFRD8KKyAgICB9Cit9CisKK2NsYXNzIGFhYWEgeworICAgIHsKKyAgICAgICAgPGVycm9yIGRlc2NyPSJJbmNvbXBhdGlibGUgdHlwZXMuIEZvdW5kOiAnamF2YS5sYW5nLkNsYXNzPGphdmEubGFuZy5TdHJpbmc+JywgcmVxdWlyZWQ6ICdqYXZhLmxhbmcuQ2xhc3M8PyBzdXBlciBqYXZhLmxhbmcuT2JqZWN0PiciPkNsYXNzPD8gc3VwZXIgT2JqZWN0PiBjID0gU3RyaW5nLmNsYXNzOzwvZXJyb3I+CisgICAgfQorfQorCisvL0lERUFERVYtNjEwMzogdGhpcyBjb2RlIGlzIE9LCitjbGFzcyBGb28geworICAgIG15bGlzdDxUZXN0PiBmb287CisKKyAgICBwdWJsaWMgRm9vKG15bGlzdDxUZXN0PiBmb28pIHsKKyAgICAgICAgdGhpcy5mb28gPSBmb287CisgICAgfQorCisgICAgcHVibGljIEZvbygpIHsKKyAgICAgICAgICB0aGlzKG5ldyBteWxpc3Q8VGVzdD4oKSk7CisgICAgfQorCisgICAgcHJpdmF0ZSBjbGFzcyBUZXN0IHsKKyAgICB9Cit9CisvL2VuZCBvZiBJREVBREVWLTYxMDMKKworY2xhc3MgSURvbnRDb21waWxlIHsKKyAgIE1hcDxlcnJvciBkZXNjcj0iQ2Fubm90IHNlbGVjdCBzdGF0aWMgY2xhc3MgJ2phdmEudXRpbC5NYXAuRW50cnknIGZyb20gcGFyYW1ldGVyaXplZCB0eXBlIj48PywgPz48L2Vycm9yPi5FbnRyeSBtYXA7Cit9CisKK2Fic3RyYWN0IGNsYXNzIEdlbmVyaWNUZXN0OTk8RSBleHRlbmRzIEVudW08RT4+IHsKKyAgICBHZW5lcmljVGVzdDk5PDxlcnJvciBkZXNjcj0iVHlwZSBwYXJhbWV0ZXIgJ2phdmEubGFuZy5FbnVtJyBpcyBub3Qgd2l0aGluIGl0cyBib3VuZDsgc2hvdWxkIGV4dGVuZCAnamF2YS5sYW5nLkVudW08amF2YS5sYW5nLkVudW0+JyI+RW51bTwvZXJyb3I+PiBsb2NhbDsKK30KKworY2xhc3MgQ2xhc3NMaXRlcmFsPFQ+IHsKKyAgeworICAgIE9iamVjdCBjMSA9IDxlcnJvciBkZXNjcj0iQ2Fubm90IHNlbGVjdCBmcm9tIGEgdHlwZSB2YXJpYWJsZSI+VDwvZXJyb3I+LmNsYXNzOworICAgIE9iamVjdCBjMiA9IDxlcnJvciBkZXNjcj0iQ2Fubm90IHNlbGVjdCBmcm9tIGEgdHlwZSB2YXJpYWJsZSI+VFtdPC9lcnJvcj4uY2xhc3M7CisgICAgCisgICAgT2JqZWN0IGMzID0gPGVycm9yIGRlc2NyPSJDYW5ub3Qgc2VsZWN0IGZyb20gcGFyYW1ldGVyaXplZCB0eXBlIj5MaXN0PFN0cmluZz48L2Vycm9yPi5jbGFzczsKKyAgICBPYmplY3QgYzQgPSA8ZXJyb3IgZGVzY3I9IkNhbm5vdCBzZWxlY3QgZnJvbSBwYXJhbWV0ZXJpemVkIHR5cGUiPkxpc3Q8U3RyaW5nPltdPC9lcnJvcj4uY2xhc3M7CisgICAgT2JqZWN0IGM1ID0gTGlzdFtdLmNsYXNzOworICAgIE9iamVjdCBjNiA9IExpc3QuY2xhc3M7CisgIH0KK30KKworY2xhc3MgT3V0ZXI8RT4geworICAgIGZpbmFsIElubmVyW10gaSA9IDxlcnJvciBkZXNjcj0iR2VuZXJpYyBhcnJheSBjcmVhdGlvbiI+bmV3IElubmVyWzEwXTwvZXJyb3I+OworICAgIGNsYXNzIElubmVyIHsKKyAgICB9Cit9CitjbGFzcyBPdXRlcjE8RT4geworICAgIGZpbmFsIElubmVyW10gaSA9IG5ldyBJbm5lclsxMF07CisgICAgc3RhdGljIGNsYXNzIElubmVyIHsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9nZW5lcmljc0hpZ2hsaWdodGluZy9TT0UuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvZ2VuZXJpY3NIaWdobGlnaHRpbmcvU09FLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTVmNDNlMQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvZ2VuZXJpY3NIaWdobGlnaHRpbmcvU09FLmphdmEKQEAgLTAsMCArMSwyNCBAQAorcHVibGljIGNsYXNzIFNPRSB7Cit9CithYnN0cmFjdCBjbGFzcyBWZXJzaW9uRW50aXR5PFYgZXh0ZW5kcyBWZXJzaW9uPFYsIFI+LCBSIGV4dGVuZHMgUmVmPFYsIFI+PgorICAgIGltcGxlbWVudHMgVmVyc2lvbjxWLCBSPnt9CisKK2ludGVyZmFjZSBWZXJzaW9uPFYgZXh0ZW5kcyBWZXJzaW9uPFYsIFI+LCBSIGV4dGVuZHMgUmVmPFYsIFI+Pnt9CisKK2Fic3RyYWN0IGNsYXNzIFJlZkVudGl0eTxWIGV4dGVuZHMgVmVyc2lvbjxWLCBSPiwgUiBleHRlbmRzIFJlZjxWLCBSPj4KKyAgICBpbXBsZW1lbnRzIFJlZjxWLCBSPiB7fQorCitpbnRlcmZhY2UgUmVmPFYgZXh0ZW5kcyBWZXJzaW9uPFYsIFI+LCBSIGV4dGVuZHMgUmVmPFYsIFI+Pnt9CisKKworYWJzdHJhY3QgY2xhc3MgTm9kZTxHIGV4dGVuZHMgTm9kZTxHLCBHUj4sCisgICAgICAgICAgICAgICBHUiBleHRlbmRzIE5vZGVSZWY8RywgR1I+PiBleHRlbmRzIFZlcnNpb25FbnRpdHk8RywgR1I+IHt9CisKK2Fic3RyYWN0IGNsYXNzIE5vZGVSZWY8RyBleHRlbmRzIE5vZGU8RywgR1I+LCBHUiBleHRlbmRzIE5vZGVSZWY8RywgR1I+PiBleHRlbmRzIFJlZkVudGl0eTxHLCBHUj4ge30KKworCitjbGFzcyBEIHsKKyAgICB2b2lkIGYoKSB7CisgICAgICAgIFZlcnNpb24gdiA9IG5ldyBOb2RlPDxlcnJvciBkZXNjcj0iV2lsZGNhcmQgdHlwZSAnPycgY2Fubm90IGJlIGluc3RhbnRpYXRlZCBkaXJlY3RseSI+PzwvZXJyb3I+LCA8ZXJyb3IgZGVzY3I9IldpbGRjYXJkIHR5cGUgJz8nIGNhbm5vdCBiZSBpbnN0YW50aWF0ZWQgZGlyZWN0bHkiPj88L2Vycm9yPj4oKXt9PEVPTEVycm9yIGRlc2NyPSInOycgZXhwZWN0ZWQiPjwvRU9MRXJyb3I+CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvZ2VuZXJpY3NIaWdobGlnaHRpbmcvU2FtZUVyYXN1cmUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvZ2VuZXJpY3NIaWdobGlnaHRpbmcvU2FtZUVyYXN1cmUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45YmI0OWIyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9nZW5lcmljc0hpZ2hsaWdodGluZy9TYW1lRXJhc3VyZS5qYXZhCkBAIC0wLDAgKzEsMzQgQEAKK2ltcG9ydCBqYXZhLnV0aWwuKjsKKworY2xhc3MgU2FtZVNpZ25hdHVyZVRlc3QgeworICAgIDxlcnJvciBkZXNjcj0iJ3NhbWVFcmFzdXJlKExpc3Q8U3RyaW5nPiknIGNsYXNoZXMgd2l0aCAnc2FtZUVyYXN1cmUoTGlzdDxJbnRlZ2VyPiknOyBib3RoIG1ldGhvZHMgaGF2ZSBzYW1lIGVyYXN1cmUiPnB1YmxpYyBzdGF0aWMgdm9pZCBzYW1lRXJhc3VyZShMaXN0PFN0cmluZz4gc3RyaW5ncyk8L2Vycm9yPiB7CisgICAgfQorCisgICAgcHVibGljIHN0YXRpYyB2b2lkIHNhbWVFcmFzdXJlKExpc3Q8SW50ZWdlcj4gaW50ZWdlcnMpIHsKKyAgICB9Cit9CisKKyBjbGFzcyBDQ0MgeworICAgIDxlcnJvciBkZXNjcj0iJ2YoT2JqZWN0KScgY2xhc2hlcyB3aXRoICdmKE9iamVjdCknOyBib3RoIG1ldGhvZHMgaGF2ZSBzYW1lIGVyYXN1cmUiPjxUPiB2b2lkIGYoT2JqZWN0IG8pPC9lcnJvcj4ge30KKworICAgIHZvaWQgZihPYmplY3Qgbykge30KK30KKworcHVibGljIGNsYXNzIFRlc3QxIHsKKyAgICA8ZXJyb3IgZGVzY3I9IididWcoU3RyaW5nKScgY2xhc2hlcyB3aXRoICdidWcoU3RyaW5nKSc7IGJvdGggbWV0aG9kcyBoYXZlIHNhbWUgZXJhc3VyZSI+cHVibGljIHZvaWQgYnVnKFN0cmluZyBzKTwvZXJyb3I+IHsKKyAgICB9CisKKyAgICBwdWJsaWMgc3RhdGljIDxUPiBUIGJ1ZyhTdHJpbmcgcykgeworICAgICAgICByZXR1cm4gbnVsbDsKKyAgICB9Cit9CisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworY2xhc3MgVGVzdCB7CisgICAgPGVycm9yIGRlc2NyPSIndGVzdCgpJyBjbGFzaGVzIHdpdGggJ3Rlc3QoKSc7IGJvdGggbWV0aG9kcyBoYXZlIHNhbWUgZXJhc3VyZSI+cHVibGljIHN0YXRpYyA8SywgVj4gSGFzaE1hcDxLLCBWPiB0ZXN0KCk8L2Vycm9yPiB7CisgICAgICAgIHJldHVybiBuZXcgSGFzaE1hcDxLLCBWPigpOworICAgIH0KKworICAgIHB1YmxpYyBzdGF0aWMgU3RyaW5nIHRlc3QoKSB7CisgICAgICAgIHJldHVybiAiIjsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2dlbmVyaWNzSGlnaGxpZ2h0aW5nL1NhbWVFcmFzdXJlRGlmZmVyZW50UmV0dXJuVHlwZXMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvZ2VuZXJpY3NIaWdobGlnaHRpbmcvU2FtZUVyYXN1cmVEaWZmZXJlbnRSZXR1cm5UeXBlcy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhiYmQ3YjYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2dlbmVyaWNzSGlnaGxpZ2h0aW5nL1NhbWVFcmFzdXJlRGlmZmVyZW50UmV0dXJuVHlwZXMuamF2YQpAQCAtMCwwICsxLDUzIEBACisvKiogQG5vaW5zcGVjdGlvbiBVbnVzZWREZWNsYXJhdGlvbiovCitpbnRlcmZhY2UgTWF0Y2hlcjxUPiB7CisKKyAgICBib29sZWFuIG1hdGNoZXMoamF2YS5sYW5nLk9iamVjdCBvYmplY3QpOworCisgICAgdm9pZCBfZG9udF9pbXBsZW1lbnRfTWF0Y2hlcl9fX2luc3RlYWRfZXh0ZW5kX0Jhc2VNYXRjaGVyXygpOworfQorCitpbnRlcmZhY2UgQXJndW1lbnRDb25zdHJhaW50UGhyYXNlcyB7CisgICAgPGVycm9yIGRlc2NyPSInd2l0aChNYXRjaGVyPFQ+KScgY2xhc2hlcyB3aXRoICd3aXRoKE1hdGNoZXI8Qm9vbGVhbj4pJzsgYm90aCBtZXRob2RzIGhhdmUgc2FtZSBlcmFzdXJlIj48VD4gVCB3aXRoKE1hdGNoZXI8VD4gbWF0Y2hlcik8L2Vycm9yPjsKKyAgICBib29sZWFuIHdpdGgoTWF0Y2hlcjxCb29sZWFuPiBtYXRjaGVyKTsKKyAgICBieXRlIHdpdGgoTWF0Y2hlcjxCeXRlPiBtYXRjaGVyKTsKKyAgICBzaG9ydCB3aXRoKE1hdGNoZXI8U2hvcnQ+IG1hdGNoZXIpOworICAgIGludCB3aXRoKE1hdGNoZXI8SW50ZWdlcj4gbWF0Y2hlcik7CisgICAgbG9uZyB3aXRoKE1hdGNoZXI8TG9uZz4gbWF0Y2hlcik7CisgICAgZmxvYXQgd2l0aChNYXRjaGVyPEZsb2F0PiBtYXRjaGVyKTsKKyAgICBkb3VibGUgd2l0aChNYXRjaGVyPERvdWJsZT4gbWF0Y2hlcik7Cit9CisKK2NsYXNzIEV4cGVjdGF0aW9uR3JvdXBCdWlsZGVyIGltcGxlbWVudHMgQXJndW1lbnRDb25zdHJhaW50UGhyYXNlcyB7CisKKyAgICA8ZXJyb3IgZGVzY3I9Iid3aXRoKE1hdGNoZXI8VD4pJyBjbGFzaGVzIHdpdGggJ3dpdGgoTWF0Y2hlcjxCb29sZWFuPiknOyBib3RoIG1ldGhvZHMgaGF2ZSBzYW1lIGVyYXN1cmUiPnB1YmxpYyA8VD4gVCB3aXRoKGZpbmFsIE1hdGNoZXI8VD4gbWF0Y2hlcik8L2Vycm9yPiB7CisgICAgICAgIHJldHVybiBudWxsOworICAgIH0KKworICAgIHB1YmxpYyBib29sZWFuIHdpdGgoZmluYWwgTWF0Y2hlcjxCb29sZWFuPiBtYXRjaGVyKSB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBwdWJsaWMgYnl0ZSB3aXRoKGZpbmFsIE1hdGNoZXI8Qnl0ZT4gbWF0Y2hlcikgeworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBwdWJsaWMgc2hvcnQgd2l0aChmaW5hbCBNYXRjaGVyPFNob3J0PiBtYXRjaGVyKSB7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIHB1YmxpYyBpbnQgd2l0aChmaW5hbCBNYXRjaGVyPEludGVnZXI+IG1hdGNoZXIpIHsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgcHVibGljIGxvbmcgd2l0aChmaW5hbCBNYXRjaGVyPExvbmc+IG1hdGNoZXIpIHsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgcHVibGljIGZsb2F0IHdpdGgoZmluYWwgTWF0Y2hlcjxGbG9hdD4gbWF0Y2hlcikgeworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBwdWJsaWMgZG91YmxlIHdpdGgoZmluYWwgTWF0Y2hlcjxEb3VibGU+IG1hdGNoZXIpIHsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9nZW5lcmljc0hpZ2hsaWdodGluZy9TYW1lRXJhc3VyZURpZmZlcmVudFJldHVyblR5cGVzSmRrMTQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvZ2VuZXJpY3NIaWdobGlnaHRpbmcvU2FtZUVyYXN1cmVEaWZmZXJlbnRSZXR1cm5UeXBlc0pkazE0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjA0NjA2OQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvZ2VuZXJpY3NIaWdobGlnaHRpbmcvU2FtZUVyYXN1cmVEaWZmZXJlbnRSZXR1cm5UeXBlc0pkazE0LmphdmEKQEAgLTAsMCArMSw0OCBAQAorLyoqIEBub2luc3BlY3Rpb24gVW51c2VkRGVjbGFyYXRpb24qLworaW50ZXJmYWNlIE1hdGNoZXI8VD4geworCisgICAgYm9vbGVhbiBtYXRjaGVzKE9iamVjdCBvYmplY3QpOworCisgICAgdm9pZCBfZG9udF9pbXBsZW1lbnRfTWF0Y2hlcl9fX2luc3RlYWRfZXh0ZW5kX0Jhc2VNYXRjaGVyXygpOworfQorCitpbnRlcmZhY2UgQXJndW1lbnRDb25zdHJhaW50UGhyYXNlcyB7CisgICAgPFQ+IFQgd2l0aChNYXRjaGVyPFQ+IG1hdGNoZXIpOworICAgIGJvb2xlYW4gd2l0aChNYXRjaGVyPEJvb2xlYW4+IG1hdGNoZXIpOworICAgIGJ5dGUgd2l0aChNYXRjaGVyPEJ5dGU+IG1hdGNoZXIpOworICAgIGludCB3aXRoKE1hdGNoZXI8SW50ZWdlcj4gbWF0Y2hlcik7CisgICAgbG9uZyB3aXRoKE1hdGNoZXI8TG9uZz4gbWF0Y2hlcik7CisgICAgZmxvYXQgd2l0aChNYXRjaGVyPEZsb2F0PiBtYXRjaGVyKTsKKyAgICBkb3VibGUgd2l0aChNYXRjaGVyPERvdWJsZT4gbWF0Y2hlcik7Cit9CisKK2NsYXNzIEV4cGVjdGF0aW9uR3JvdXBCdWlsZGVyIGltcGxlbWVudHMgQXJndW1lbnRDb25zdHJhaW50UGhyYXNlcyB7CisKKyAgICBwdWJsaWMgPFQ+IFQgd2l0aChmaW5hbCBNYXRjaGVyPFQ+IG1hdGNoZXIpIHsKKyAgICAgICAgcmV0dXJuIG51bGw7CisgICAgfQorCisgICAgcHVibGljIGJvb2xlYW4gd2l0aChmaW5hbCBNYXRjaGVyPEJvb2xlYW4+IG1hdGNoZXIpIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHB1YmxpYyBieXRlIHdpdGgoZmluYWwgTWF0Y2hlcjxCeXRlPiBtYXRjaGVyKSB7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIHB1YmxpYyBpbnQgd2l0aChmaW5hbCBNYXRjaGVyPEludGVnZXI+IG1hdGNoZXIpIHsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgcHVibGljIGxvbmcgd2l0aChmaW5hbCBNYXRjaGVyPExvbmc+IG1hdGNoZXIpIHsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgcHVibGljIGZsb2F0IHdpdGgoZmluYWwgTWF0Y2hlcjxGbG9hdD4gbWF0Y2hlcikgeworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBwdWJsaWMgZG91YmxlIHdpdGgoZmluYWwgTWF0Y2hlcjxEb3VibGU+IG1hdGNoZXIpIHsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9nZW5lcmljc0hpZ2hsaWdodGluZy9TcGVjaWZpY1JldHVyblR5cGUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvZ2VuZXJpY3NIaWdobGlnaHRpbmcvU3BlY2lmaWNSZXR1cm5UeXBlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGZiODkwYgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvZ2VuZXJpY3NIaWdobGlnaHRpbmcvU3BlY2lmaWNSZXR1cm5UeXBlLmphdmEKQEAgLTAsMCArMSwxMyBAQAorYWJzdHJhY3QgY2xhc3MgRmllbGQ8RD4geworICAgIHB1YmxpYyBEIGdldFZhbHVlKCl7cmV0dXJuIG51bGw7fQorfQorCitjbGFzcyBMYWJlbEZpZWxkIGV4dGVuZHMgRmllbGQ8T2JqZWN0PiB7CisgICAgcHVibGljIE9iamVjdCBnZXRWYWx1ZSgpIHsgcmV0dXJuIG51bGw7IH0KK30KK2ludGVyZmFjZSBNeUludGVyZmFjZTxEPiB7CisgICAgRCBnZXRWYWx1ZSgpOworfQorCitjbGFzcyBNeUxhYmVsRmllbGQgZXh0ZW5kcyBMYWJlbEZpZWxkIGltcGxlbWVudHMgTXlJbnRlcmZhY2U8T2JqZWN0PiB7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9nZW5lcmljc0hpZ2hsaWdodGluZy9TdGF0aWNJbXBvcnRzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2dlbmVyaWNzSGlnaGxpZ2h0aW5nL1N0YXRpY0ltcG9ydHMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNDczOTFkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9nZW5lcmljc0hpZ2hsaWdodGluZy9TdGF0aWNJbXBvcnRzLmphdmEKQEAgLTAsMCArMSwxNiBAQAorCitpbXBvcnQgc3RhdGljIGphdmEudXRpbC5BcnJheXMuYXNMaXN0OworaW1wb3J0IHN0YXRpYyBqYXZhLnV0aWwuQXJyYXlzLnNvcnQ7Cis8d2FybmluZyBkZXNjcj0iVW51c2VkIGltcG9ydCBzdGF0ZW1lbnQiPmltcG9ydCBzdGF0aWMgamF2YS51dGlsLkFycmF5cy5iaW5hcnlTZWFyY2g7PC93YXJuaW5nPgorCitwdWJsaWMgY2xhc3MgU3RhdGljSW1wb3J0cyB7CisgICAgeworICAgICAgICBhc0xpc3QobmV3IE9iamVjdFtde30pOworICAgIH0KKworICAgIHZvaWQgbWV0aG9kKCkgeworICAgICAgICBzb3J0KG5ldyBsb25nWzBdKTsKKy8vICAgICAgICBzb3J0PCBlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgbWV0aG9kICdzb3J0KCknIj4oKTwgL2Vycm9yPjsKKyAgICB9CisKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvZ2VuZXJpY3NIaWdobGlnaHRpbmcvU3RhdGljT3ZlcnJpZGUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvZ2VuZXJpY3NIaWdobGlnaHRpbmcvU3RhdGljT3ZlcnJpZGUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNDA0MjNlYwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvZ2VuZXJpY3NIaWdobGlnaHRpbmcvU3RhdGljT3ZlcnJpZGUuamF2YQpAQCAtMCwwICsxLDggQEAKK2ltcG9ydCBqYXZhLnV0aWwuKjsKKworcHVibGljIGNsYXNzIE15Q2xhc3MgaW1wbGVtZW50cyBDb21wYXJhdG9yPFN0cmluZz4geworCisgICAgPGVycm9yIGRlc2NyPSJTdGF0aWMgbWV0aG9kICdjb21wYXJlKFN0cmluZywgU3RyaW5nKScgaW4gJ015Q2xhc3MnIGNhbm5vdCBvdmVycmlkZSBpbnN0YW5jZSBtZXRob2QgJ2NvbXBhcmUoVCwgVCknIGluICdqYXZhLnV0aWwuQ29tcGFyYXRvciciPnB1YmxpYyBzdGF0aWMgaW50IGNvbXBhcmUoU3RyaW5nIGEsIFN0cmluZyBiKTwvZXJyb3I+IHsKKyAgICAgIHJldHVybiA0MjsKKyAgICB9Cit9IApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvZ2VuZXJpY3NIaWdobGlnaHRpbmcvU3VwZXJNZXRob2RDYWxsV2l0aEVyYXN1cmUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvZ2VuZXJpY3NIaWdobGlnaHRpbmcvU3VwZXJNZXRob2RDYWxsV2l0aEVyYXN1cmUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YmQ1MWMwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9nZW5lcmljc0hpZ2hsaWdodGluZy9TdXBlck1ldGhvZENhbGxXaXRoRXJhc3VyZS5qYXZhCkBAIC0wLDAgKzEsMTggQEAKK2ltcG9ydCBqYXZhLnV0aWwuU2V0OworCitpbnRlcmZhY2UgSW50ZXJmYWNlIHsKKyAgICB2b2lkIG1ldGhvZChTZXQ8Pz4gcyk7Cit9CisKK2NsYXNzIFN1cGVyQ2xhc3MgaW1wbGVtZW50cyBJbnRlcmZhY2UgeworICAgIHB1YmxpYyB2b2lkIG1ldGhvZChTZXQgcykgeworICAgICAgICAvLyBkbyBub3RoaW5nCisgICAgfQorfQorCitjbGFzcyBTdWJDbGFzcyBleHRlbmRzIFN1cGVyQ2xhc3MgeworICAgIHB1YmxpYyB2b2lkIG1ldGhvZChTZXQgcykgeworICAgICAgICBzdXBlci5tZXRob2Qocyk7ICAvL0VSUk9SOiBBYnN0cmFjdCBtZXRob2QgJ21ldGhvZChTZXQ8Pz4pJyBjYW5ub3QgYmUgYWNjZXNzZWQgZGlyZWN0bHkKKyAgICB9Cit9CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvZ2VuZXJpY3NIaWdobGlnaHRpbmcvU3VwZXJXaWxkY2FyZElzTm90V2l0aGluSXRzQm91bmQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvZ2VuZXJpY3NIaWdobGlnaHRpbmcvU3VwZXJXaWxkY2FyZElzTm90V2l0aGluSXRzQm91bmQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MDM1ZTM3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9nZW5lcmljc0hpZ2hsaWdodGluZy9TdXBlcldpbGRjYXJkSXNOb3RXaXRoaW5JdHNCb3VuZC5qYXZhCkBAIC0wLDAgKzEsMjAgQEAKKworY2xhc3MgVG9wR2VuZTxUPiB7Cit9CisKK2NsYXNzIE1pZFJhdyBleHRlbmRzIFRvcEdlbmUgeworfQorCitjbGFzcyBCb3R0b21HZW5lPFQ+IGV4dGVuZHMgTWlkUmF3IHsKK30KKworY2xhc3MgR2VuZVR5cGU8VCBleHRlbmRzIFRvcEdlbmU8U3RyaW5nPj4geworfQorCitjbGFzcyBHZW5lVXNlciB7CisgIHB1YmxpYyB2b2lkIHN1Y2Nlc3MoR2VuZVR5cGU8PyBleHRlbmRzIEJvdHRvbUdlbmU8U3RyaW5nPj4gcCkgeworICB9CisKKyAgcHVibGljIHZvaWQgZmFpbChHZW5lVHlwZTw8ZXJyb3IgZGVzY3I9IlR5cGUgcGFyYW1ldGVyICc/IHN1cGVyIEJvdHRvbUdlbmU8U3RyaW5nPicgaXMgbm90IHdpdGhpbiBpdHMgYm91bmQ7IHNob3VsZCBleHRlbmQgJ1RvcEdlbmU8amF2YS5sYW5nLlN0cmluZz4nIj4/IHN1cGVyIEJvdHRvbUdlbmU8U3RyaW5nPjwvZXJyb3I+PiBwKSB7CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvZ2VuZXJpY3NIaWdobGlnaHRpbmcvVGhpc0FzQWNjZXNzT2JqZWN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2dlbmVyaWNzSGlnaGxpZ2h0aW5nL1RoaXNBc0FjY2Vzc09iamVjdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY1MGZiOGEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2dlbmVyaWNzSGlnaGxpZ2h0aW5nL1RoaXNBc0FjY2Vzc09iamVjdC5qYXZhCkBAIC0wLDAgKzEsOSBAQAorY2xhc3MgT3V0ZXIgeworICAgIHByaXZhdGUgdm9pZCBmb28oKSB7fQorICAgIGNsYXNzIElubmVyIGV4dGVuZHMgT3V0ZXIgeworICAgICAgICB7CisgICAgICAgICAgIHRoaXMuPGVycm9yIGRlc2NyPSInZm9vKCknIGhhcyBwcml2YXRlIGFjY2VzcyBpbiAnT3V0ZXInIj5mb288L2Vycm9yPigpOworICAgICAgICAgICBmb28oKTsKKyAgICAgICAgfQorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2dlbmVyaWNzSGlnaGxpZ2h0aW5nL1R5cGVBcmdzT25SYXcuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvZ2VuZXJpY3NIaWdobGlnaHRpbmcvVHlwZUFyZ3NPblJhdy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY4ZTQ4YjIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2dlbmVyaWNzSGlnaGxpZ2h0aW5nL1R5cGVBcmdzT25SYXcuamF2YQpAQCAtMCwwICsxLDIxIEBACitjbGFzcyBHZW5lcmljc1Rlc3QgeworCisgICAgc3RhdGljIGNsYXNzIFNvbWVDbGFzczxVPiB7CisgICAgICAgIHB1YmxpYyA8VD4gVCBnZXRYKCkgeworICAgICAgICAgICAgcmV0dXJuIG51bGw7CisgICAgICAgIH0KKyAgICAgICAgcHVibGljIFN0cmluZyBmKCkgeworICAgICAgICAgICAgcmV0dXJuIHRoaXMuPFN0cmluZz5nZXRYKCk7CisgICAgICAgIH0KKyAgICB9CisKKworCisgICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgeworCisgICAgICAgIFN0cmluZyB2MSA9IG5ldyBTb21lQ2xhc3MoKS48ZXJyb3IgZGVzY3I9IlR5cGUgYXJndW1lbnRzIGdpdmVuIG9uIGEgcmF3IG1ldGhvZCI+PFN0cmluZz48L2Vycm9yPmdldFgoKTsKKyAgICAgICAgU3RyaW5nIHYyID0gbmV3IFNvbWVDbGFzcygpLmYoKTsgIC8vCisKKyAgICB9CisKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvZ2VuZXJpY3NIaWdobGlnaHRpbmcvVHlwZUFyZ3VtZW50c0dpdmVuT25Bbm9ueW1vdXNDbGFzc0NyZWF0aW9uLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2dlbmVyaWNzSGlnaGxpZ2h0aW5nL1R5cGVBcmd1bWVudHNHaXZlbk9uQW5vbnltb3VzQ2xhc3NDcmVhdGlvbi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMzMjE0ZTIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2dlbmVyaWNzSGlnaGxpZ2h0aW5nL1R5cGVBcmd1bWVudHNHaXZlbk9uQW5vbnltb3VzQ2xhc3NDcmVhdGlvbi5qYXZhCkBAIC0wLDAgKzEsMTIgQEAKK2NsYXNzIEMKK3sKKyAgICBPYmplY3QgeCA9IG5ldyA8ZXJyb3IgZGVzY3I9IkFub255bW91cyBjbGFzcyBpbXBsZW1lbnRzIGludGVyZmFjZTsgY2Fubm90IGhhdmUgdHlwZSBhcmd1bWVudHMiPjxJbnRlZ2VyPjwvZXJyb3I+IEQoKSB7IH07CisgICAgT2JqZWN0IHgxID0gbmV3IDxJbnRlZ2VyPiBQKCkgeyB9OworICAgIE9iamVjdCB4MiA9IG5ldyA8SW50ZWdlcj4gVSgpIHsgfTsKKyAgICBPYmplY3QgeDMgPSBuZXcgPGVycm9yIGRlc2NyPSJBbm9ueW1vdXMgY2xhc3MgaW1wbGVtZW50cyBpbnRlcmZhY2U7IGNhbm5vdCBoYXZlIHR5cGUgYXJndW1lbnRzIj48SW50ZWdlcj48L2Vycm9yPiBJKCkgeyB9OworICAgIGludGVyZmFjZSBEe30KKyAgICBhYnN0cmFjdCBjbGFzcyBQIHt9Cit9CisKK2ludGVyZmFjZSBJIHt9CitjbGFzcyBVIHt9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9nZW5lcmljc0hpZ2hsaWdodGluZy9UeXBlQXJndW1lbnRzR2l2ZW5PblJhd1R5cGUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvZ2VuZXJpY3NIaWdobGlnaHRpbmcvVHlwZUFyZ3VtZW50c0dpdmVuT25SYXdUeXBlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTQ3ZmQ4NgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvZ2VuZXJpY3NIaWdobGlnaHRpbmcvVHlwZUFyZ3VtZW50c0dpdmVuT25SYXdUeXBlLmphdmEKQEAgLTAsMCArMSwzMSBAQAorY2xhc3MgQTxEPiB7CisgIGFic3RyYWN0IGNsYXNzIEM8Uz4geworICAgIDxUIGV4dGVuZHMgQT4gdm9pZCBmb28oVC5DPEludGVnZXI+IHgpIHsKKyAgICAgIEludGVnZXIgYmFyID0geC5iYXIoKTsKKyAgICB9CisKKyAgICA8VCBleHRlbmRzIEE+IHZvaWQgZm9vMShBLkM8ZXJyb3IgZGVzY3I9IlR5cGUgYXJndW1lbnRzIGdpdmVuIG9uIGEgcmF3IHR5cGUiPjxJbnRlZ2VyPjwvZXJyb3I+IHgpIHsKKyAgICAgIEludGVnZXIgYmFyID0geC5iYXIoKTsKKyAgICB9CisKKyAgICA8VCBleHRlbmRzIEE+IHZvaWQgZm9vMihBPFN0cmluZz4uQzxJbnRlZ2VyPiB4KSB7CisgICAgICBJbnRlZ2VyIGJhciA9IHguYmFyKCk7CisgICAgfQorCisgICAgYWJzdHJhY3QgUyBiYXIoKTsKKyAgfQorfQorCitjbGFzcyBBMSB7CisgIGFic3RyYWN0IGNsYXNzIEM8Uz4geworICAgIDxUIGV4dGVuZHMgQTE+IHZvaWQgZm9vKFQuQzxJbnRlZ2VyPiB4KSB7CisgICAgICBJbnRlZ2VyIGJhciA9IHguYmFyKCk7CisgICAgfQorCisgICAgPFQgZXh0ZW5kcyBBMT4gdm9pZCBmb28xKEExLkM8SW50ZWdlcj4geCkgeworICAgICAgSW50ZWdlciBiYXIgPSB4LmJhcigpOworICAgIH0KKworICAgIGFic3RyYWN0IFMgYmFyKCk7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2dlbmVyaWNzSGlnaGxpZ2h0aW5nL1R5cGVJbmZlcmVuY2UuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvZ2VuZXJpY3NIaWdobGlnaHRpbmcvVHlwZUluZmVyZW5jZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYwZDI3NDEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2dlbmVyaWNzSGlnaGxpZ2h0aW5nL1R5cGVJbmZlcmVuY2UuamF2YQpAQCAtMCwwICsxLDk1IEBACitpbXBvcnQgamF2YS5pby5GaWxlTm90Rm91bmRFeGNlcHRpb247CitpbXBvcnQgamF2YS51dGlsLio7CisKK2ludGVyZmFjZSBQcml2aWxlZ2VkRXhjZXB0aW9uQWN0aW9uIDxFIGV4dGVuZHMgRXhjZXB0aW9uPiB7CisgICAgdm9pZCBydW4oKSB0aHJvd3MgRTsKK30KKworY2xhc3MgQWNjZXNzQ29udHJvbGxlciB7CisgICAgcHVibGljIHN0YXRpYyA8RSBleHRlbmRzIEV4Y2VwdGlvbj4gT2JqZWN0IGRvUHJpdmlsZWdlZChQcml2aWxlZ2VkRXhjZXB0aW9uQWN0aW9uPEU+IGFjdGlvbikgdGhyb3dzIEUgeworICAgICAgICByZXR1cm4gbnVsbDsKKyAgICB9Cit9CitjbGFzcyBUZXN0IHsKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBBY2Nlc3NDb250cm9sbGVyLmRvUHJpdmlsZWdlZCgKKyAgICAgICAgICAgICAgICAgICAgbmV3IFByaXZpbGVnZWRFeGNlcHRpb25BY3Rpb248RmlsZU5vdEZvdW5kRXhjZXB0aW9uPigpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyB2b2lkIHJ1bigpIHRocm93cyBGaWxlTm90Rm91bmRFeGNlcHRpb24geworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgfSBjYXRjaCAoRmlsZU5vdEZvdW5kRXhjZXB0aW9uIGYpIHsKKyAgICAgICAgfQorICAgIH0KKworLy8gQCNAISBtb2NrIEpESyBDbGFzcyBkb2VzIG5vdCB0YWtlIHBhcmFtcworLy8gICAgc3RhdGljIDxUPiBUIGNyZWF0ZShDbGFzczxUPiB0KSB0aHJvd3MgSW5zdGFudGlhdGlvbkV4Y2VwdGlvbiwgSWxsZWdhbEFjY2Vzc0V4Y2VwdGlvbiB7CisvLyAgICAgICAgcmV0dXJuIHQubmV3SW5zdGFuY2UoKTsKKy8vICAgIH0KK30KKworLy9JREVBREVWLTYzOTAKK2NsYXNzIFByaW50ZXI8VD4geworICAgIHByaXZhdGUgZmluYWwgTGlzdDxUPiBfZWxlbWVudHM7CisKKyAgICBwcml2YXRlIFByaW50ZXIoZmluYWwgQ29sbGVjdGlvbjw/IGV4dGVuZHMgVD4gY29sKSB7CisgICAgICAgIF9lbGVtZW50cyA9IG5ldyBBcnJheUxpc3Q8VD4oY29sKTsKKyAgICB9CisKKyAgICBwdWJsaWMgc3RhdGljIDxUPiBQcmludGVyPFQ+IGJ1aWxkKGZpbmFsIENvbGxlY3Rpb248PyBleHRlbmRzIFQ+IGNvbCkgeworICAgICAgICByZXR1cm4gbmV3IFByaW50ZXI8VD4oY29sKTsKKyAgICB9CisKKyAgICBwdWJsaWMgc3RhdGljIDxULCBTIGV4dGVuZHMgVD4gUHJpbnRlcjxUPiBidWlsZChmaW5hbCBTLi4uIGVsZW1lbnRzKSB7CisgICAgICAgIHJldHVybiBuZXcgUHJpbnRlcjxUPihBcnJheXMuYXNMaXN0KGVsZW1lbnRzKSk7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgcHJpbnQoKSB7CisgICAgICAgIGZvciAoZmluYWwgVCBlbGVtZW50IDogX2VsZW1lbnRzKSB7CisgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oZWxlbWVudCk7CisgICAgICAgIH0KKworICAgIH0KKworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKGZpbmFsIFN0cmluZ1tdIGFyZ3MpIHsKKyAgICAgICAgZmluYWwgUHJpbnRlcjw/PiBvYmplY3RzID0gIGJ1aWxkKEludGVnZXIudmFsdWVPZig1KSwgQm9vbGVhbi5UUlVFLCAiQSBTdHJpbmchIik7IC8vdGhpcyBpcyBPSworICAgICAgICAgb2JqZWN0cy5wcmludCgpOworICAgIH0KKworfQorLy9lbmQgb2YgSURFQURFVi02MzkwCisKKy8vSURFQURFVi02NzM4CitpbnRlcmZhY2UgSTE8UDEgZXh0ZW5kcyBJMTxQMSxQMj4sIFAyIGV4dGVuZHMgSTI8UDEsUDI+Pnt9CitpbnRlcmZhY2UgSTI8UDEgZXh0ZW5kcyBJMTxQMSxQMj4sIFAyIGV4dGVuZHMgSTI8UDEsUDI+Pnt9CisKK2NsYXNzIEMxIGltcGxlbWVudHMgSTE8QzEsQzI+e30KK2NsYXNzIEMyIGltcGxlbWVudHMgSTI8QzEsQzI+e30KKworY2xhc3MgVSB7CisgICAgcHVibGljIHN0YXRpYyA8UDEgZXh0ZW5kcyBJMTxQMSxQMj4sIFAyIGV4dGVuZHMgSTI8UDEsUDI+PiBQMSB0ZXN0KFAxIHAxKSB7CisgICAgICAgIHJldHVybiBudWxsOworICAgIH0KKyAgICB7CisgICAgICAgIEMxIGMgPSBuZXcgQzEoKTsKKyAgICAgICAgVS50ZXN0KGMpOyAvL3RoaXMgc2hvdWxkIGJlIE9LCisgICAgfQorfQorLy9lbmQgb2YgSURFQURFVi02NzM4CisKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCitwdWJsaWMgY2xhc3MgRXJyIHsKKyAgICB2b2lkIGYoKSB7CisgICAgICAgIERlY2xbXSBleHRlbnNpb25zID0gZ2V0RXh0ZW5zaW9ucyhEZWNsLkVYVEVOU0lPTl9QT0lOVF9OQU1FKTsKKyAgICB9CisKKyAgICBzdGF0aWMgPFQ+IFRbXSBnZXRFeHRlbnNpb25zKExpc3Q8VD4gdEV4dGVuc2lvblBvaW50TmFtZSkgeworICAgICAgICByZXR1cm4gbnVsbDsKKyAgICB9CisKKyAgICBwdWJsaWMgc3RhdGljIGNsYXNzIERlY2w8SyxWPiB7CisgICAgICAgIHB1YmxpYyBzdGF0aWMgTGlzdDxEZWNsPiBFWFRFTlNJT05fUE9JTlRfTkFNRSA9IG51bGw7CisgICAgfQorCit9CisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9nZW5lcmljc0hpZ2hsaWdodGluZy9UeXBlUGFyYW1ldGVyQm91bmRWaXNpYmlsaXR5LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2dlbmVyaWNzSGlnaGxpZ2h0aW5nL1R5cGVQYXJhbWV0ZXJCb3VuZFZpc2liaWxpdHkuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMWNhMTAyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9nZW5lcmljc0hpZ2hsaWdodGluZy9UeXBlUGFyYW1ldGVyQm91bmRWaXNpYmlsaXR5LmphdmEKQEAgLTAsMCArMSw1MCBAQAorY2xhc3MgQSB7CisgICBwcml2YXRlIGludCB2YWx1ZSA9IDE7CisKKyAgIHN0YXRpYyBjbGFzcyBCPFQgZXh0ZW5kcyBBPiB7CisgICAgICB2b2lkIHByaW50KFQgdCkgeworICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKHQuPGVycm9yIGRlc2NyPSIndmFsdWUnIGhhcyBwcml2YXRlIGFjY2VzcyBpbiAnQSciPnZhbHVlPC9lcnJvcj4pOworICAgICAgfQorICAgfQorfQorCithYnN0cmFjdCBjbGFzcyBGb288VCBleHRlbmRzIEZvbzxUPj4geworICAgIHByaXZhdGUgaW50IGZpZWxkOworCisgICAgcHVibGljIGludCBiYXIoVCB0KXsKKyAgICAgICAgcmV0dXJuIHQuPGVycm9yIGRlc2NyPSInZmllbGQnIGhhcyBwcml2YXRlIGFjY2VzcyBpbiAnRm9vJyI+ZmllbGQ8L2Vycm9yPjsKKyAgICB9Cit9CisKK3B1YmxpYyBjbGFzcyBCdWcgeworICAvLyBJZGVhIGluY29ycmVjdGx5IGFuYWx5c2VzIHRoaXMgY29kZSB3aXRoIEpESyA3CisgIHB1YmxpYyA8VCBleHRlbmRzIEJ1Zz4gdm9pZCBkb2l0KFQgb3RoZXIpIHsKKyAgICAvLyBPb3BzLCB3YXMgbGVnYWwgd2l0aCBKREsgNiwgbm8gbG9uZ2VyIGxlZ2FsIHdpdGggSkRLIDcKKyAgICBvdGhlci48ZXJyb3IgZGVzY3I9IidtUHJpdmF0ZSgpJyBoYXMgcHJpdmF0ZSBhY2Nlc3MgaW4gJ0J1ZyciPm1Qcml2YXRlPC9lcnJvcj4oKTsKKyAgICAvLyBSZWR1bmRhbnQgd2l0aCBKREsgNiwgbm90IGEgcmVkdW5kYW50IGNhc3Qgd2l0aCBKREsgNworICAgICgoQnVnKW90aGVyKS5tUHJpdmF0ZSgpOworICB9CisKKyAgLy8gSWRlYSBjb3JyZWN0bHkgYW5hbHlzZXMgdGhpcyBjb2RlCisgIHB1YmxpYyB2b2lkIGRvaXQyKFN1YkNsYXNzIG90aGVyKSB7CisgICAgLy8gTm90IGxlZ2FsIHdpdGggSkRLIDYgb3IgNworICAgIG90aGVyLjxlcnJvciBkZXNjcj0iJ21Qcml2YXRlKCknIGhhcyBwcml2YXRlIGFjY2VzcyBpbiAnQnVnJyI+bVByaXZhdGU8L2Vycm9yPigpOworICAgIC8vIE5vdCByZWR1bmRhbnQgd2l0aCBKREsgNiBvciA3CisgICAgKChCdWcpb3RoZXIpLm1Qcml2YXRlKCk7CisgIH0KKworICBwcml2YXRlIHZvaWQgbVByaXZhdGUoKSB7CisgIH0KK30KKworY2xhc3MgU3ViQ2xhc3MgZXh0ZW5kcyBCdWcgeworfQorCitjbGFzcyBBNjc2NzgKK3sKKyAgICAgIHByaXZhdGUgdm9pZCBmb28oKXt9CisgICAgICA8VCBleHRlbmRzIEE2NzY3OCAmIENsb25lYWJsZT4gdm9pZCBiYXIoVCB4KQorICAgICAgeworICAgICAgICAgIHguPGVycm9yIGRlc2NyPSInZm9vKCknIGhhcyBwcml2YXRlIGFjY2VzcyBpbiAnQTY3Njc4JyI+Zm9vPC9lcnJvcj4oKTsKKyAgICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2dlbmVyaWNzSGlnaGxpZ2h0aW5nL1R5cGVQYXJhbWV0ZXJCb3VuZFZpc2liaWxpdHlKZGsxNC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9nZW5lcmljc0hpZ2hsaWdodGluZy9UeXBlUGFyYW1ldGVyQm91bmRWaXNpYmlsaXR5SmRrMTQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZjA0ZWU3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9nZW5lcmljc0hpZ2hsaWdodGluZy9UeXBlUGFyYW1ldGVyQm91bmRWaXNpYmlsaXR5SmRrMTQuamF2YQpAQCAtMCwwICsxLDMzIEBACitjbGFzcyBBIHsKKyAgIHByaXZhdGUgaW50IHZhbHVlID0gMTsKKworICAgc3RhdGljIGNsYXNzIEI8VCBleHRlbmRzIEE+IHsKKyAgICAgIHZvaWQgcHJpbnQoVCB0KSB7CisgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4odC52YWx1ZSk7CisgICAgICB9CisgICB9Cit9CisKK3B1YmxpYyBjbGFzcyBCdWcgeworICAvLyBJZGVhIGluY29ycmVjdGx5IGFuYWx5c2VzIHRoaXMgY29kZSB3aXRoIEpESyA3CisgIHB1YmxpYyA8VCBleHRlbmRzIEJ1Zz4gdm9pZCBkb2l0KFQgb3RoZXIpIHsKKyAgICAvLyBPb3BzLCB3YXMgbGVnYWwgd2l0aCBKREsgNiwgbm8gbG9uZ2VyIGxlZ2FsIHdpdGggSkRLIDcKKyAgICBvdGhlci5tUHJpdmF0ZSgpOworICAgIC8vIFJlZHVuZGFudCB3aXRoIEpESyA2LCBub3QgYSByZWR1bmRhbnQgY2FzdCB3aXRoIEpESyA3CisgICAgKChCdWcpb3RoZXIpLm1Qcml2YXRlKCk7CisgIH0KKworICAvLyBJZGVhIGNvcnJlY3RseSBhbmFseXNlcyB0aGlzIGNvZGUKKyAgcHVibGljIHZvaWQgZG9pdDIoU3ViQ2xhc3Mgb3RoZXIpIHsKKyAgICAvLyBOb3QgbGVnYWwgd2l0aCBKREsgNiBvciA3CisgICAgb3RoZXIuPGVycm9yIGRlc2NyPSInbVByaXZhdGUoKScgaGFzIHByaXZhdGUgYWNjZXNzIGluICdCdWcnIj5tUHJpdmF0ZTwvZXJyb3I+KCk7CisgICAgLy8gTm90IHJlZHVuZGFudCB3aXRoIEpESyA2IG9yIDcKKyAgICAoKEJ1ZylvdGhlcikubVByaXZhdGUoKTsKKyAgfQorCisgIHByaXZhdGUgdm9pZCBtUHJpdmF0ZSgpIHsKKyAgfQorfQorCitjbGFzcyBTdWJDbGFzcyBleHRlbmRzIEJ1ZyB7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9nZW5lcmljc0hpZ2hsaWdodGluZy9UeXBlUGFyYW1ldGVyQm91bmRzTGlzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9nZW5lcmljc0hpZ2hsaWdodGluZy9UeXBlUGFyYW1ldGVyQm91bmRzTGlzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUwNmFkZDAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2dlbmVyaWNzSGlnaGxpZ2h0aW5nL1R5cGVQYXJhbWV0ZXJCb3VuZHNMaXN0LmphdmEKQEAgLTAsMCArMSwzMyBAQAorY2xhc3MgQzxUIGV4dGVuZHMgUnVubmFibGUmPGVycm9yIGRlc2NyPSJJbnRlcmZhY2UgZXhwZWN0ZWQgaGVyZSI+RXhjZXB0aW9uPC9lcnJvcj4sVT4geworCit9CisKK2NsYXNzIFN0dWZmPFggZXh0ZW5kcyBTdHVmZiAmIFJ1bm5hYmxlPiB7CisgICAgPFQsIFYgZXh0ZW5kcyBUICYgPGVycm9yIGRlc2NyPSJUeXBlIHBhcmFtZXRlciBjYW5ub3QgYmUgZm9sbG93ZWQgYnkgb3RoZXIgYm91bmRzIj5SdW5uYWJsZTwvZXJyb3I+PiBUIG1ldGhvZChWIHYpIHsKKyAgICAgICAgcmV0dXJuIG51bGw7CisgICAgfQorCisgICAgPFQgZXh0ZW5kcyBYICYgPGVycm9yIGRlc2NyPSJUeXBlIHBhcmFtZXRlciBjYW5ub3QgYmUgZm9sbG93ZWQgYnkgb3RoZXIgYm91bmRzIj5SdW5uYWJsZTwvZXJyb3I+ICYgPGVycm9yIGRlc2NyPSJUeXBlIHBhcmFtZXRlciBjYW5ub3QgYmUgZm9sbG93ZWQgYnkgb3RoZXIgYm91bmRzIj5Db21wYXJhYmxlPC9lcnJvcj4+IHZvaWQgZihUIHQpIHsKKworICAgIH0KKworICAgIDxUIGV4dGVuZHMgU3R1ZmYgJiBSdW5uYWJsZSAmIENvbXBhcmFibGU+IHZvaWQgZjIoVCB0KSB7CisKKyAgICB9CisgICAgPFQgZXh0ZW5kcyBSdW5uYWJsZSAmIENvbXBhcmFibGU+IHZvaWQgZjMoVCB0KSB7CisKKyAgICB9Cit9CisKKy8vLy8vLy8vLy8vLy8vLy8KK3B1YmxpYyBjbGFzcyBUeXBlUGFyYW1ldGVycyB7CisgICAgY2xhc3MgWCB7fQorICAgIHN0YXRpYyA8VCBleHRlbmRzIFg+IHZvaWQgZihDbGFzczxUPiB0KXt9CisKKyAgICBzdGF0aWMgeworICAgICAgICBmKFguY2xhc3MpOworICAgIH0KK30KK2NsYXNzIFR5cHIgeworICA8VCBleHRlbmRzIFR5cGVQYXJhbWV0ZXJzLlg+IHZvaWQgZigpIHt9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2dlbmVyaWNzSGlnaGxpZ2h0aW5nL1R5cGVXaXRoaW5JdHNXaWxkY2FyZEJvdW5kLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2dlbmVyaWNzSGlnaGxpZ2h0aW5nL1R5cGVXaXRoaW5JdHNXaWxkY2FyZEJvdW5kLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDdlY2IzYgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvZ2VuZXJpY3NIaWdobGlnaHRpbmcvVHlwZVdpdGhpbkl0c1dpbGRjYXJkQm91bmQuamF2YQpAQCAtMCwwICsxLDMxNyBAQAorcHVibGljIGNsYXNzIFdpdGhpbmdCb3VuZHMgeworICAgIGludGVyZmFjZSBJIHsKKyAgICB9CisgICAgaW50ZXJmYWNlIEkxIHsKKyAgICB9CisKKyAgICB2b2lkIHRlc3RFMSgpIHsKKyAgICAgICAgY2xhc3MgQSB7CisgICAgICAgIH0KKyAgICAgICAgY2xhc3MgQiBleHRlbmRzIEEgeworICAgICAgICB9CisgICAgICAgIGNsYXNzIFRvQ2hlY2tFeHRlbmRzPFRUVCBleHRlbmRzIEE+IHsKKyAgICAgICAgfQorCisgICAgICAgIFRvQ2hlY2tFeHRlbmRzPD8gZXh0ZW5kcyBCPiBwcjsKKyAgICB9CisKKyAgICB2b2lkIHRlc3RFUmVjMSgpIHsKKyAgICAgICAgY2xhc3MgQSB7CisgICAgICAgIH0KKyAgICAgICAgY2xhc3MgQjxLPiBleHRlbmRzIEEgeworICAgICAgICB9CisgICAgICAgIGNsYXNzIEM8WT57fQorICAgICAgICBjbGFzcyBUb0NoZWNrRXh0ZW5kczxUVFQgZXh0ZW5kcyBBPiB7CisgICAgICAgIH0KKworICAgICAgICBUb0NoZWNrRXh0ZW5kczw8ZXJyb3IgZGVzY3I9IlR5cGUgcGFyYW1ldGVyICc/IGV4dGVuZHMgQzw/IGV4dGVuZHMgQz4nIGlzIG5vdCB3aXRoaW4gaXRzIGJvdW5kOyBzaG91bGQgZXh0ZW5kICdBJyI+PyAgZXh0ZW5kcyBDPD8gZXh0ZW5kcyBDPjwvZXJyb3I+PiBwcjsKKyAgICAgICAgVG9DaGVja0V4dGVuZHM8PyBleHRlbmRzIEI8PyBleHRlbmRzIEM+PiBwcjE7CisgICAgfQorCisKKyAgICB2b2lkIHRlc3RFMigpIHsKKyAgICAgICAgY2xhc3MgQSB7CisgICAgICAgIH0KKyAgICAgICAgY2xhc3MgQiB7CisgICAgICAgIH0KKyAgICAgICAgY2xhc3MgVG9DaGVja0V4dGVuZHM8VFRUIGV4dGVuZHMgQT4geworICAgICAgICB9CisKKyAgICAgICAgVG9DaGVja0V4dGVuZHM8PGVycm9yIGRlc2NyPSJUeXBlIHBhcmFtZXRlciAnPyBleHRlbmRzIEInIGlzIG5vdCB3aXRoaW4gaXRzIGJvdW5kOyBzaG91bGQgZXh0ZW5kICdBJyI+PyBleHRlbmRzIEI8L2Vycm9yPj4gcHI7CisgICAgfQorCisgICAgdm9pZCB0ZXN0RTIyKCkgeworICAgICAgICBjbGFzcyBCIHsKKyAgICAgICAgfQorICAgICAgICBjbGFzcyBBIGV4dGVuZHMgQiB7CisgICAgICAgIH0KKyAgICAgICAgY2xhc3MgVG9DaGVja0V4dGVuZHM8VFRUIGV4dGVuZHMgQT4geworICAgICAgICB9CisKKyAgICAgICAgVG9DaGVja0V4dGVuZHM8PyBleHRlbmRzIEI+IHByOworICAgIH0KKworCisgICAgdm9pZCB0ZXN0RTIzKCkgeworICAgICAgICBjbGFzcyBBIHsKKyAgICAgICAgfQorICAgICAgICBjbGFzcyBUb0NoZWNrRXh0ZW5kczxUVFQgZXh0ZW5kcyBBPiB7CisgICAgICAgIH0KKworICAgICAgICBUb0NoZWNrRXh0ZW5kczw/IGV4dGVuZHMgST4gcHI7CisgICAgfQorCisgICAgdm9pZCB0ZXN0RTI0KCkgeworICAgICAgICBmaW5hbCBjbGFzcyBBIHsKKyAgICAgICAgfQorICAgICAgICBjbGFzcyBUb0NoZWNrRXh0ZW5kczxUVFQgZXh0ZW5kcyBBPiB7CisgICAgICAgIH0KKworICAgICAgICBUb0NoZWNrRXh0ZW5kczw8ZXJyb3IgZGVzY3I9IlR5cGUgcGFyYW1ldGVyICc/IGV4dGVuZHMgSScgaXMgbm90IHdpdGhpbiBpdHMgYm91bmQ7IHNob3VsZCBleHRlbmQgJ0EnIj4/IGV4dGVuZHMgSTwvZXJyb3I+PiBwcjsKKyAgICB9CisKKworICAgIHZvaWQgdGVzdEUyNSgpIHsKKyAgICAgIGNsYXNzIEIgeworICAgICAgICB2b2lkIGZvbygpIHsKKyAgICAgICAgICB0aGlzLjxJdGVyYWJsZT5iYXIoKTsKKyAgICAgICAgfQorCisgICAgICAgIDxUIGV4dGVuZHMgSXRlcmFibGU8U3RyaW5nPj4gdm9pZCBiYXIoKSB7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9CisKKyAgICB2b2lkIHRlc3RFMjYoKSB7CisgICAgICBjbGFzcyBBPFQ+e30KKyAgICAgIGNsYXNzIEIgeworICAgICAgICB2b2lkIGZvbygpIHsKKyAgICAgICAgICB0aGlzLjxBPmJhcigpOworICAgICAgICB9CisKKyAgICAgICAgPFQgZXh0ZW5kcyBBPFN0cmluZz4+IHZvaWQgYmFyKCkgeworICAgICAgICB9CisgICAgICB9CisgICAgfQorCisgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICB2b2lkIHRlc3RFMygpIHsKKyAgICAgICAgY2xhc3MgQSB7CisgICAgICAgIH0KKyAgICAgICAgY2xhc3MgVG9DaGVja0V4dGVuZHM8VFRUIGV4dGVuZHMgST4geworICAgICAgICB9CisKKyAgICAgICAgVG9DaGVja0V4dGVuZHM8PyBleHRlbmRzIEE+IHByOworICAgIH0KKworICAgIHZvaWQgdGVzdEU0KCkgeworICAgICAgICBmaW5hbCBjbGFzcyBBIHsKKyAgICAgICAgfQorICAgICAgICBjbGFzcyBUb0NoZWNrRXh0ZW5kczxUVFQgZXh0ZW5kcyBJPiB7CisgICAgICAgIH0KKworICAgICAgICBUb0NoZWNrRXh0ZW5kczw8ZXJyb3IgZGVzY3I9IlR5cGUgcGFyYW1ldGVyICc/IGV4dGVuZHMgQScgaXMgbm90IHdpdGhpbiBpdHMgYm91bmQ7IHNob3VsZCBleHRlbmQgJ1dpdGhpbmdCb3VuZHMuSSciPj8gZXh0ZW5kcyBBPC9lcnJvcj4+IHByOworICAgIH0KKworICAgIHZvaWQgdGVzdEU1KCkgeworICAgICAgICBmaW5hbCBjbGFzcyBBIGltcGxlbWVudHMgSSB7CisgICAgICAgIH0KKyAgICAgICAgY2xhc3MgVG9DaGVja0V4dGVuZHM8VFRUIGV4dGVuZHMgST4geworICAgICAgICB9CisKKyAgICAgICAgVG9DaGVja0V4dGVuZHM8PyBleHRlbmRzIEE+IHByOworICAgIH0KKworCisgICAgaW50ZXJmYWNlIEFJbnRlcmZhY2UgeworICAgIH0KKyAgICB2b2lkIHRlc3RFNigpIHsKKworICAgICAgICBjbGFzcyBUb0NoZWNrRXh0ZW5kczxUVFQgZXh0ZW5kcyBJPiB7CisgICAgICAgIH0KKworICAgICAgICBUb0NoZWNrRXh0ZW5kczw/IGV4dGVuZHMgQUludGVyZmFjZT4gcHI7CisgICAgfQorCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgdm9pZCB0ZXN0UzEoKSB7CisgICAgICAgIGNsYXNzIEEgeworICAgICAgICB9CisgICAgICAgIGNsYXNzIEIgZXh0ZW5kcyBBIHsKKyAgICAgICAgfQorICAgICAgICBjbGFzcyBUb0NoZWNrRXh0ZW5kczxUVFQgZXh0ZW5kcyBBPiB7CisgICAgICAgIH0KKworICAgICAgICBUb0NoZWNrRXh0ZW5kczw/IHN1cGVyIEI+IHByOworICAgIH0KKworICAgIHZvaWQgdGVzdFMyKCkgeworICAgICAgICBjbGFzcyBBIHsKKyAgICAgICAgfQorICAgICAgICBjbGFzcyBCIHsKKyAgICAgICAgfQorICAgICAgICBjbGFzcyBUb0NoZWNrRXh0ZW5kczxUVFQgZXh0ZW5kcyBBPiB7CisgICAgICAgIH0KKworICAgICAgICBUb0NoZWNrRXh0ZW5kczw8ZXJyb3IgZGVzY3I9IlR5cGUgcGFyYW1ldGVyICc/IHN1cGVyIEInIGlzIG5vdCB3aXRoaW4gaXRzIGJvdW5kOyBzaG91bGQgZXh0ZW5kICdBJyI+PyBzdXBlciBCPC9lcnJvcj4+IHByOworICAgIH0KKworICAgIHZvaWQgdGVzdFMzKCkgeworICAgICAgICBjbGFzcyBBIHsKKyAgICAgICAgfQorICAgICAgICBjbGFzcyBCIGV4dGVuZHMgQSB7CisgICAgICAgIH0KKyAgICAgICAgY2xhc3MgVG9DaGVja0V4dGVuZHM8VFRUIGV4dGVuZHMgQj4geworICAgICAgICB9CisKKyAgICAgICAgVG9DaGVja0V4dGVuZHM8PGVycm9yIGRlc2NyPSJUeXBlIHBhcmFtZXRlciAnPyBzdXBlciBBJyBpcyBub3Qgd2l0aGluIGl0cyBib3VuZDsgc2hvdWxkIGV4dGVuZCAnQiciPj8gc3VwZXIgQTwvZXJyb3I+PiBwcjsKKyAgICB9CisKKyAgdm9pZCB0ZXN0TWlzYygpIHsKKyAgICAgY2xhc3MgQTxULCBTIGV4dGVuZHMgVD4ge30KKyAgICAgY2xhc3MgaSB7fQorICAgICBmaW5hbCBjbGFzcyBpaSBleHRlbmRzIGkge30KKworICAgICBBPFN0cmluZywgU3RyaW5nPiBwcjQ7CisgICAgIEE8SW50ZWdlciwgPGVycm9yIGRlc2NyPSJUeXBlIHBhcmFtZXRlciAnamF2YS5sYW5nLlN0cmluZycgaXMgbm90IHdpdGhpbiBpdHMgYm91bmQ7IHNob3VsZCBleHRlbmQgJ2phdmEubGFuZy5JbnRlZ2VyJyI+U3RyaW5nPC9lcnJvcj4+IHByNTsKKyAgICAgQTxTdHJpbmcsID8gZXh0ZW5kcyBTdHJpbmc+IHByNTE7CisgICAgIEE8SW50ZWdlciwgPGVycm9yIGRlc2NyPSJUeXBlIHBhcmFtZXRlciAnPyBleHRlbmRzIFN0cmluZycgaXMgbm90IHdpdGhpbiBpdHMgYm91bmQ7IHNob3VsZCBleHRlbmQgJ2phdmEubGFuZy5JbnRlZ2VyJyI+PyBleHRlbmRzIFN0cmluZzwvZXJyb3I+PiBwcjUyOworICAgICBBPFN0cmluZywgPyBzdXBlciBTdHJpbmc+IHByNTM7CisgICAgIEE8aWksIDxlcnJvciBkZXNjcj0iVHlwZSBwYXJhbWV0ZXIgJ2knIGlzIG5vdCB3aXRoaW4gaXRzIGJvdW5kOyBzaG91bGQgZXh0ZW5kICdpaSciPmk8L2Vycm9yPj4gcHI1NDsKKyAgICAgQTxpLCBpaT4gcHI1NTsKKyAgICAgQTxpLCA/IGV4dGVuZHMgaWk+IHByNTY7CisgICAgIEE8aWksID8gZXh0ZW5kcyBpPiBwcjU3OworICAgICBBPGksID8gc3VwZXIgaWk+IHByNTg7CisgICAgIEE8aWksIDxlcnJvciBkZXNjcj0iVHlwZSBwYXJhbWV0ZXIgJz8gc3VwZXIgaScgaXMgbm90IHdpdGhpbiBpdHMgYm91bmQ7IHNob3VsZCBleHRlbmQgJ2lpJyI+PyBzdXBlciBpPC9lcnJvcj4+IHByNTk7CisgICAgIEE8aSwgPGVycm9yIGRlc2NyPSJUeXBlIHBhcmFtZXRlciAnPyBleHRlbmRzIEE8aSwgaT4nIGlzIG5vdCB3aXRoaW4gaXRzIGJvdW5kOyBzaG91bGQgZXh0ZW5kICdpJyI+PyBleHRlbmRzIEE8aSwgaT48L2Vycm9yPj4gcHI1MTA7CisgICAgIEE8aSwgPGVycm9yIGRlc2NyPSJUeXBlIHBhcmFtZXRlciAnaWlbXScgaXMgbm90IHdpdGhpbiBpdHMgYm91bmQ7IHNob3VsZCBleHRlbmQgJ2knIj5paVtdPC9lcnJvcj4+IHByNTExOworICAgICBBPGksID8+IHByNTEyOworCisgICAgIEE8PywgPz4gcHIzMDsKKyAgICAgQTw/LCA8ZXJyb3IgZGVzY3I9IlR5cGUgcGFyYW1ldGVyICdpJyBpcyBub3Qgd2l0aGluIGl0cyBib3VuZDsgc2hvdWxkIGV4dGVuZCAnPyciPmk8L2Vycm9yPj4gcHIzOworICAgICBBPD8gZXh0ZW5kcyBPYmplY3QsIGk+IHByMzMwOworICAgICBBPD8sID8gZXh0ZW5kcyBpaT4gcHIyOworICAgICBBPD8sIDxlcnJvciBkZXNjcj0iVHlwZSBwYXJhbWV0ZXIgJz8gc3VwZXIgU3RyaW5nJyBpcyBub3Qgd2l0aGluIGl0cyBib3VuZDsgc2hvdWxkIGV4dGVuZCAnPyciPj8gc3VwZXIgU3RyaW5nPC9lcnJvcj4+IHByMTA7CisgICAgIEE8PywgPGVycm9yIGRlc2NyPSJUeXBlIHBhcmFtZXRlciAnQScgaXMgbm90IHdpdGhpbiBpdHMgYm91bmQ7IHNob3VsZCBleHRlbmQgJz8nIj5BPD8sID8+PC9lcnJvcj4+IHByMzE7CisgICAgIEE8PywgPGVycm9yIGRlc2NyPSJUeXBlIHBhcmFtZXRlciAnaWlbXScgaXMgbm90IHdpdGhpbiBpdHMgYm91bmQ7IHNob3VsZCBleHRlbmQgJz8nIj5paVtdPC9lcnJvcj4+IHByMzI7CisgICAgIEE8PywgPGVycm9yIGRlc2NyPSJUeXBlIHBhcmFtZXRlciAnQScgaXMgbm90IHdpdGhpbiBpdHMgYm91bmQ7IHNob3VsZCBleHRlbmQgJz8nIj5BPGksIGk+PC9lcnJvcj4+IHByMzM7CisKKyAgICAgQTw/IGV4dGVuZHMgaSwgaT4gcHI2OworICAgICBBPD8gZXh0ZW5kcyBpaSwgPGVycm9yIGRlc2NyPSJUeXBlIHBhcmFtZXRlciAnaScgaXMgbm90IHdpdGhpbiBpdHMgYm91bmQ7IHNob3VsZCBleHRlbmQgJz8gZXh0ZW5kcyBpaSciPmk8L2Vycm9yPj4gcHI2eDE7CisgICAgIEE8PyBleHRlbmRzIGksIGlpPiBwcjZ4MjsKKyAgICAgQTw/IGV4dGVuZHMgaWksIGlpPiBwcjZ4MzsKKyAgICAgQTw/IGV4dGVuZHMgaSwgPGVycm9yIGRlc2NyPSJUeXBlIHBhcmFtZXRlciAnamF2YS5sYW5nLkludGVnZXInIGlzIG5vdCB3aXRoaW4gaXRzIGJvdW5kOyBzaG91bGQgZXh0ZW5kICc/IGV4dGVuZHMgaSciPkludGVnZXI8L2Vycm9yPj4gcHI4OworCisgICAgIEE8PyBleHRlbmRzIGksIDxlcnJvciBkZXNjcj0iVHlwZSBwYXJhbWV0ZXIgJz8gZXh0ZW5kcyBTdHJpbmcnIGlzIG5vdCB3aXRoaW4gaXRzIGJvdW5kOyBzaG91bGQgZXh0ZW5kICc/IGV4dGVuZHMgaSciPj8gZXh0ZW5kcyBTdHJpbmc8L2Vycm9yPj4gcHIxMjsKKyAgICAgQTw/IGV4dGVuZHMgaSwgPyBleHRlbmRzIGk+IHByMTM7CisgICAgIEE8PyBleHRlbmRzIGksID8gZXh0ZW5kcyBpaT4gcHIxNDsKKyAgICAgQTw/IGV4dGVuZHMgaWksID8gZXh0ZW5kcyBpPiBwcjEzeDM7CisgICAgIEE8PyBleHRlbmRzIGlpLCA/IGV4dGVuZHMgaWk+IHByMTN4NDsKKworCisgICAgIEE8PyBleHRlbmRzIGksID8gc3VwZXIgaT4gcHIxOTsKKyAgICAgQTw/IGV4dGVuZHMgaSwgPyBzdXBlciBpaT4gcHIxMTA7CisgICAgIEE8PyBleHRlbmRzIGlpLCA/IHN1cGVyIGlpPiBwcjExeDA7CisgICAgIEE8PyBleHRlbmRzIGlpLCA8ZXJyb3IgZGVzY3I9IlR5cGUgcGFyYW1ldGVyICc/IHN1cGVyIGknIGlzIG5vdCB3aXRoaW4gaXRzIGJvdW5kOyBzaG91bGQgZXh0ZW5kICc/IGV4dGVuZHMgaWknIj4/IHN1cGVyIGk8L2Vycm9yPj4gcHIxMTE7CisKKyAgICAgQTw/IGV4dGVuZHMgaSwgPz4gcHIxNTsKKyAgICAgQTw/IGV4dGVuZHMgaSwgPGVycm9yIGRlc2NyPSJUeXBlIHBhcmFtZXRlciAnaWlbXScgaXMgbm90IHdpdGhpbiBpdHMgYm91bmQ7IHNob3VsZCBleHRlbmQgJz8gZXh0ZW5kcyBpJyI+aWlbXTwvZXJyb3I+PiBwcjE2OworICAgICBBPD8gZXh0ZW5kcyBpLCA8ZXJyb3IgZGVzY3I9IlR5cGUgcGFyYW1ldGVyICdBJyBpcyBub3Qgd2l0aGluIGl0cyBib3VuZDsgc2hvdWxkIGV4dGVuZCAnPyBleHRlbmRzIGknIj5BPD8sID8+PC9lcnJvcj4+IHByMTc7CisgICAgIEE8PyBleHRlbmRzIGksIDxlcnJvciBkZXNjcj0iVHlwZSBwYXJhbWV0ZXIgJ0EnIGlzIG5vdCB3aXRoaW4gaXRzIGJvdW5kOyBzaG91bGQgZXh0ZW5kICc/IGV4dGVuZHMgaSciPkE8aWksIGlpPjwvZXJyb3I+PiBwcjE4OworICAgICBBPD8gZXh0ZW5kcyBpaSwgPGVycm9yIGRlc2NyPSJUeXBlIHBhcmFtZXRlciAnPyBzdXBlciBTdHJpbmcnIGlzIG5vdCB3aXRoaW4gaXRzIGJvdW5kOyBzaG91bGQgZXh0ZW5kICc/IGV4dGVuZHMgaWknIj4/IHN1cGVyIFN0cmluZzwvZXJyb3I+PiBwcjExMjsKKyAgICAgQTw/IGV4dGVuZHMgaWksIDxlcnJvciBkZXNjcj0iVHlwZSBwYXJhbWV0ZXIgJz8gc3VwZXIgQTxpLCBpPicgaXMgbm90IHdpdGhpbiBpdHMgYm91bmQ7IHNob3VsZCBleHRlbmQgJz8gZXh0ZW5kcyBpaSciPj8gc3VwZXIgQTxpLCBpPjwvZXJyb3I+PiBwcjExMzsKKworICAgICBBPD8gc3VwZXIgaSwgaT4gcHI3MDE7CisgICAgIEE8PyBzdXBlciBpLCA8ZXJyb3IgZGVzY3I9IlR5cGUgcGFyYW1ldGVyICdqYXZhLmxhbmcuU3RyaW5nJyBpcyBub3Qgd2l0aGluIGl0cyBib3VuZDsgc2hvdWxkIGV4dGVuZCAnPyBzdXBlciBpJyI+U3RyaW5nPC9lcnJvcj4+IHByNzI7CisgICAgIEE8PyBzdXBlciBpLCA/PiBwcjczOworICAgICBBPD8gc3VwZXIgaSwgPGVycm9yIGRlc2NyPSJUeXBlIHBhcmFtZXRlciAnaWlbXScgaXMgbm90IHdpdGhpbiBpdHMgYm91bmQ7IHNob3VsZCBleHRlbmQgJz8gc3VwZXIgaSciPmlpW108L2Vycm9yPj4gcHI3NDsKKyAgICAgQTw/IHN1cGVyIGksIDxlcnJvciBkZXNjcj0iVHlwZSBwYXJhbWV0ZXIgJz8gZXh0ZW5kcyBTdHJpbmcnIGlzIG5vdCB3aXRoaW4gaXRzIGJvdW5kOyBzaG91bGQgZXh0ZW5kICc/IHN1cGVyIGknIj4/IGV4dGVuZHMgU3RyaW5nPC9lcnJvcj4+IHByNzU7CisgICAgIEE8PyBzdXBlciBpLCA/IGV4dGVuZHMgaT4gcHI3NjsKKyAgICAgQTw/IHN1cGVyIGlpLCA/IGV4dGVuZHMgaT4gcHI3NzsKKyAgICAgQTw/IHN1cGVyIGlpLCA/IGV4dGVuZHMgaWk+IHByNzg7CisgICAgIEE8PyBzdXBlciBpLCA/IHN1cGVyIGk+IHByNzk7CisgICAgIEE8PyBzdXBlciBpLCA/IHN1cGVyIGlpPiBwcjc5MTsKKyAgICAgQTw/IHN1cGVyIGlpLCA/IHN1cGVyIGlpPiBwcjcxMzsKKyAgICAgQTw/IHN1cGVyIGksIDxlcnJvciBkZXNjcj0iVHlwZSBwYXJhbWV0ZXIgJz8gc3VwZXIgU3RyaW5nJyBpcyBub3Qgd2l0aGluIGl0cyBib3VuZDsgc2hvdWxkIGV4dGVuZCAnPyBzdXBlciBpJyI+PyBzdXBlciBTdHJpbmc8L2Vycm9yPj4gcHI3MTI7CisgICAgIEE8PyBzdXBlciBpaSwgPGVycm9yIGRlc2NyPSJUeXBlIHBhcmFtZXRlciAnPyBzdXBlciBpJyBpcyBub3Qgd2l0aGluIGl0cyBib3VuZDsgc2hvdWxkIGV4dGVuZCAnPyBzdXBlciBpaSciPj8gc3VwZXIgaTwvZXJyb3I+PiBwcjcxMDsKKyAgICAgQTw/IHN1cGVyICBpaSwgPGVycm9yIGRlc2NyPSJUeXBlIHBhcmFtZXRlciAnaScgaXMgbm90IHdpdGhpbiBpdHMgYm91bmQ7IHNob3VsZCBleHRlbmQgJz8gc3VwZXIgaWknIj5pPC9lcnJvcj4+IHByNzA7CisgICAgIEE8PyBzdXBlciBpLCBpaT4gcHI3MTsKKyAgICAgQTw/IHN1cGVyIGksID8gZXh0ZW5kcyBpaT4gcHI3MTE7CisKKyAgICAgQTxpW10sIGlbXT4gYTE7CisgICAgIEE8aVtdLCA8ZXJyb3IgZGVzY3I9IlR5cGUgcGFyYW1ldGVyICdqYXZhLmxhbmcuT2JqZWN0JyBpcyBub3Qgd2l0aGluIGl0cyBib3VuZDsgc2hvdWxkIGV4dGVuZCAnaVtdJyI+T2JqZWN0PC9lcnJvcj4+IGEyOworICAgICBBPGlbXSwgaWlbXT4gYTM7CisgICAgIEE8aWlbXSwgPGVycm9yIGRlc2NyPSJUeXBlIHBhcmFtZXRlciAnaVtdJyBpcyBub3Qgd2l0aGluIGl0cyBib3VuZDsgc2hvdWxkIGV4dGVuZCAnaWlbXSciPmlbXTwvZXJyb3I+PiBhNDsKKworICAgICBBPGlbXSwgPGVycm9yIGRlc2NyPSJUeXBlIHBhcmFtZXRlciAnaW50W10nIGlzIG5vdCB3aXRoaW4gaXRzIGJvdW5kOyBzaG91bGQgZXh0ZW5kICdpW10nIj5pbnRbXTwvZXJyb3I+PiBhNTsKKyAgICAgQTxPYmplY3QsIGludFtdPiBhNjsKKyAgICAgQTxDbG9uZWFibGUsIGludFtdPiBhNzsKKyAgICAgQTxqYXZhLmlvLlNlcmlhbGl6YWJsZSwgaW50W10+IGE4OworICAgICBBPENsb25lYWJsZVtdLCA8ZXJyb3IgZGVzY3I9IlR5cGUgcGFyYW1ldGVyICdpbnRbXScgaXMgbm90IHdpdGhpbiBpdHMgYm91bmQ7IHNob3VsZCBleHRlbmQgJ2phdmEubGFuZy5DbG9uZWFibGVbXSciPmludFtdPC9lcnJvcj4+IGE5OworICAgICBBPENsb25lYWJsZVtdLCBpbnRbXVtdPiBhMTA7CisgICAgIEE8Q2xvbmVhYmxlW11bXSwgaW50W11bXVtdPiBhMTE7CisgICAgIEE8Q2xvbmVhYmxlW10sIDxlcnJvciBkZXNjcj0iVHlwZSBwYXJhbWV0ZXIgJ2lbXScgaXMgbm90IHdpdGhpbiBpdHMgYm91bmQ7IHNob3VsZCBleHRlbmQgJ2phdmEubGFuZy5DbG9uZWFibGVbXSciPmlbXTwvZXJyb3I+PiBhMTI7CisgICAgIEE8Q2xvbmVhYmxlW10sIGlbXVtdPiBhMTM7CisKKyAgICAgQTw/IHN1cGVyIGlbXSwgaWlbXT4gYTE0OworICAgICBBPD8gc3VwZXIgaVtdLCBpW10+IGExNDA7CisgICAgIEE8PyBzdXBlciBpaVtdLCA8ZXJyb3IgZGVzY3I9IlR5cGUgcGFyYW1ldGVyICdpW10nIGlzIG5vdCB3aXRoaW4gaXRzIGJvdW5kOyBzaG91bGQgZXh0ZW5kICc/IHN1cGVyIGlpW10nIj5pW108L2Vycm9yPj4gYTE0MTsKKyAgICAgQTw/IHN1cGVyIGlbXSwgPGVycm9yIGRlc2NyPSJUeXBlIHBhcmFtZXRlciAnaScgaXMgbm90IHdpdGhpbiBpdHMgYm91bmQ7IHNob3VsZCBleHRlbmQgJz8gc3VwZXIgaVtdJyI+aTwvZXJyb3I+PiBhMTQyOworICAgICBBPD8gc3VwZXIgaVtdLCA8ZXJyb3IgZGVzY3I9IlR5cGUgcGFyYW1ldGVyICdqYXZhLmxhbmcuU3RyaW5nJyBpcyBub3Qgd2l0aGluIGl0cyBib3VuZDsgc2hvdWxkIGV4dGVuZCAnPyBzdXBlciBpW10nIj5TdHJpbmc8L2Vycm9yPj4gYTE0MzsKKyAgICAgQTw/IHN1cGVyIGlbXSwgPGVycm9yIGRlc2NyPSJUeXBlIHBhcmFtZXRlciAnaVtdW10nIGlzIG5vdCB3aXRoaW4gaXRzIGJvdW5kOyBzaG91bGQgZXh0ZW5kICc/IHN1cGVyIGlbXSciPmlbXVtdPC9lcnJvcj4+IGExNDQ7CisgICAgIEE8PyBzdXBlciBpW10sID8gZXh0ZW5kcyBpW10+IGExNDU7CisgICAgIEE8PyBzdXBlciBpW10sID8gZXh0ZW5kcyBpaVtdPiBhMTQ2OworICAgICBBPD8gc3VwZXIgaWlbXSwgPyBleHRlbmRzIGlbXT4gYTE0NzsKKyAgICAgQTw/IHN1cGVyIGlbXSwgPGVycm9yIGRlc2NyPSJUeXBlIHBhcmFtZXRlciAnPyBleHRlbmRzIGknIGlzIG5vdCB3aXRoaW4gaXRzIGJvdW5kOyBzaG91bGQgZXh0ZW5kICc/IHN1cGVyIGlbXSciPj8gZXh0ZW5kcyBpPC9lcnJvcj4+IGExNDg7CisgICAgIEE8PyBzdXBlciBpW10sIDxlcnJvciBkZXNjcj0iVHlwZSBwYXJhbWV0ZXIgJz8gZXh0ZW5kcyBTdHJpbmcnIGlzIG5vdCB3aXRoaW4gaXRzIGJvdW5kOyBzaG91bGQgZXh0ZW5kICc/IHN1cGVyIGlbXSciPj8gZXh0ZW5kcyBTdHJpbmc8L2Vycm9yPj4gYTE0OTsKKyAgICAgQTw/IHN1cGVyIGlbXSwgPz4gYTE0MTA7CisgICAgIEE8PyBzdXBlciBpW10sIDxlcnJvciBkZXNjcj0iVHlwZSBwYXJhbWV0ZXIgJz8gZXh0ZW5kcyBpW11bXScgaXMgbm90IHdpdGhpbiBpdHMgYm91bmQ7IHNob3VsZCBleHRlbmQgJz8gc3VwZXIgaVtdJyI+PyBleHRlbmRzIGlbXVtdPC9lcnJvcj4+IGExNDExOworICAgICBBPD8gc3VwZXIgaVtdLCA/IHN1cGVyIGlbXT4gYTE0MTI7CisgICAgIEE8PyBzdXBlciBpW10sID8gc3VwZXIgaWlbXT4gYTE0MTM7CisgICAgIEE8PyBzdXBlciBpaVtdLCA8ZXJyb3IgZGVzY3I9IlR5cGUgcGFyYW1ldGVyICc/IHN1cGVyIGlbXScgaXMgbm90IHdpdGhpbiBpdHMgYm91bmQ7IHNob3VsZCBleHRlbmQgJz8gc3VwZXIgaWlbXSciPj8gc3VwZXIgaVtdPC9lcnJvcj4+IGExNDE0OworICAgICBBPD8gc3VwZXIgaVtdLCA8ZXJyb3IgZGVzY3I9IlR5cGUgcGFyYW1ldGVyICc/IHN1cGVyIGknIGlzIG5vdCB3aXRoaW4gaXRzIGJvdW5kOyBzaG91bGQgZXh0ZW5kICc/IHN1cGVyIGlbXSciPj8gc3VwZXIgaTwvZXJyb3I+PiBhMTQxNTsKKyAgICAgQTw/IHN1cGVyIGlbXSwgPGVycm9yIGRlc2NyPSJUeXBlIHBhcmFtZXRlciAnPyBzdXBlciBTdHJpbmcnIGlzIG5vdCB3aXRoaW4gaXRzIGJvdW5kOyBzaG91bGQgZXh0ZW5kICc/IHN1cGVyIGlbXSciPj8gc3VwZXIgU3RyaW5nPC9lcnJvcj4+IGExNDE2OworICAgICBBPD8gc3VwZXIgaVtdLCA8ZXJyb3IgZGVzY3I9IlR5cGUgcGFyYW1ldGVyICc/IHN1cGVyIGlbXVtdJyBpcyBub3Qgd2l0aGluIGl0cyBib3VuZDsgc2hvdWxkIGV4dGVuZCAnPyBzdXBlciBpW10nIj4/IHN1cGVyIGlbXVtdPC9lcnJvcj4+IGExNDE3OworCisgICAgICBBPD8gZXh0ZW5kcyBpW10sIGlpW10+IGExNTsKKyAgICAgIEE8PyBleHRlbmRzIGlbXSwgaVtdPiBhMTUwOworICAgICAgQTw/IGV4dGVuZHMgaWlbXSw8ZXJyb3IgZGVzY3I9IlR5cGUgcGFyYW1ldGVyICdpW10nIGlzIG5vdCB3aXRoaW4gaXRzIGJvdW5kOyBzaG91bGQgZXh0ZW5kICc/IGV4dGVuZHMgaWlbXSciPmlbXTwvZXJyb3I+PiBhMTUxOworICAgICAgQTw/IGV4dGVuZHMgaVtdLCA8ZXJyb3IgZGVzY3I9IlR5cGUgcGFyYW1ldGVyICdpJyBpcyBub3Qgd2l0aGluIGl0cyBib3VuZDsgc2hvdWxkIGV4dGVuZCAnPyBleHRlbmRzIGlbXSciPmk8L2Vycm9yPj4gYTE1MjsKKyAgICAgIEE8PyBleHRlbmRzIGlbXSwgPGVycm9yIGRlc2NyPSJUeXBlIHBhcmFtZXRlciAnamF2YS5sYW5nLlN0cmluZycgaXMgbm90IHdpdGhpbiBpdHMgYm91bmQ7IHNob3VsZCBleHRlbmQgJz8gZXh0ZW5kcyBpW10nIj5TdHJpbmc8L2Vycm9yPj4gYTE1MzsKKyAgICAgIEE8PyBleHRlbmRzIGlbXSwgPGVycm9yIGRlc2NyPSJUeXBlIHBhcmFtZXRlciAnaVtdW10nIGlzIG5vdCB3aXRoaW4gaXRzIGJvdW5kOyBzaG91bGQgZXh0ZW5kICc/IGV4dGVuZHMgaVtdJyI+aVtdW108L2Vycm9yPj4gYTE1NDsKKyAgICAgIEE8PyBleHRlbmRzIGlbXSwgPyBleHRlbmRzIGlbXT4gYTE1NTsKKyAgICAgIEE8PyBleHRlbmRzIGlbXSwgPyBleHRlbmRzIGlpW10+IGExNTY7CisgICAgICBBPD8gZXh0ZW5kcyBpaVtdLCA/IGV4dGVuZHMgaVtdPiBhMTU3OworICAgICAgQTw/IGV4dGVuZHMgaVtdLCA8ZXJyb3IgZGVzY3I9IlR5cGUgcGFyYW1ldGVyICc/IGV4dGVuZHMgaScgaXMgbm90IHdpdGhpbiBpdHMgYm91bmQ7IHNob3VsZCBleHRlbmQgJz8gZXh0ZW5kcyBpW10nIj4/IGV4dGVuZHMgaTwvZXJyb3I+PiBhMTU4OworICAgICAgQTw/IGV4dGVuZHMgaVtdLCA8ZXJyb3IgZGVzY3I9IlR5cGUgcGFyYW1ldGVyICc/IGV4dGVuZHMgU3RyaW5nJyBpcyBub3Qgd2l0aGluIGl0cyBib3VuZDsgc2hvdWxkIGV4dGVuZCAnPyBleHRlbmRzIGlbXSciPj8gZXh0ZW5kcyBTdHJpbmc8L2Vycm9yPj4gYTE1OTsKKyAgICAgIEE8PyBleHRlbmRzIGlbXSwgPz4gYTE1MTA7CisgICAgICBBPD8gZXh0ZW5kcyBpW10sIDxlcnJvciBkZXNjcj0iVHlwZSBwYXJhbWV0ZXIgJz8gZXh0ZW5kcyBpW11bXScgaXMgbm90IHdpdGhpbiBpdHMgYm91bmQ7IHNob3VsZCBleHRlbmQgJz8gZXh0ZW5kcyBpW10nIj4/IGV4dGVuZHMgaVtdW108L2Vycm9yPj4gYTE1MTE7CisgICAgICBBPD8gZXh0ZW5kcyBpW10sID8gc3VwZXIgaVtdPiBhMTUxMjsKKyAgICAgIEE8PyBleHRlbmRzIGlbXSwgPyBzdXBlciBpaVtdPiBhMTUxMzsKKyAgICAgIEE8PyBleHRlbmRzIGlpW10sIDxlcnJvciBkZXNjcj0iVHlwZSBwYXJhbWV0ZXIgJz8gc3VwZXIgaVtdJyBpcyBub3Qgd2l0aGluIGl0cyBib3VuZDsgc2hvdWxkIGV4dGVuZCAnPyBleHRlbmRzIGlpW10nIj4/IHN1cGVyIGlbXTwvZXJyb3I+PiBhMTUxNDsKKyAgICAgIEE8PyBleHRlbmRzIGlbXSwgPGVycm9yIGRlc2NyPSJUeXBlIHBhcmFtZXRlciAnPyBzdXBlciBpJyBpcyBub3Qgd2l0aGluIGl0cyBib3VuZDsgc2hvdWxkIGV4dGVuZCAnPyBleHRlbmRzIGlbXSciPj8gc3VwZXIgaTwvZXJyb3I+PiBhMTUxNTsKKyAgICAgIEE8PyBleHRlbmRzIGlbXSwgPGVycm9yIGRlc2NyPSJUeXBlIHBhcmFtZXRlciAnPyBzdXBlciBTdHJpbmcnIGlzIG5vdCB3aXRoaW4gaXRzIGJvdW5kOyBzaG91bGQgZXh0ZW5kICc/IGV4dGVuZHMgaVtdJyI+PyBzdXBlciBTdHJpbmc8L2Vycm9yPj4gYTE1MTY7CisgICAgICBBPD8gZXh0ZW5kcyBpW10sIDxlcnJvciBkZXNjcj0iVHlwZSBwYXJhbWV0ZXIgJz8gc3VwZXIgaVtdW10nIGlzIG5vdCB3aXRoaW4gaXRzIGJvdW5kOyBzaG91bGQgZXh0ZW5kICc/IGV4dGVuZHMgaVtdJyI+PyBzdXBlciBpW11bXTwvZXJyb3I+PiBhMTUxNzsKKworICAgIEE8PyBleHRlbmRzIENsb25lYWJsZSwgPyBleHRlbmRzIGlbXT4gYTE2OworICAgIEE8PyBleHRlbmRzIENsb25lYWJsZVtdLCA/IGV4dGVuZHMgaVtdW10+IGExNjA7CisgICAgQTxDbG9uZWFibGUsID8gZXh0ZW5kcyBpW10+IGExNjE7CisgICAgQTw/IHN1cGVyIENsb25lYWJsZSwgPyBleHRlbmRzIGlbXT4gYTE2MjsKKyAgICBBPCBJMVtdLCA/IGV4dGVuZHMgIElbXT4gY2w7CisKKyAgfQorCisgIHZvaWQgdGVzdFJhd1R5cGVzKCkgeworICAgIGNsYXNzIEE8VCBleHRlbmRzIEE8VD4+IHt9CisgICAgQSBhOworICAgIEE8PGVycm9yIGRlc2NyPSJUeXBlIHBhcmFtZXRlciAnamF2YS5sYW5nLlN0cmluZycgaXMgbm90IHdpdGhpbiBpdHMgYm91bmQ7IHNob3VsZCBleHRlbmQgJ0E8amF2YS5sYW5nLlN0cmluZz4nIj5TdHJpbmc8L2Vycm9yPj4gYTE7CisgICAgQTw8ZXJyb3IgZGVzY3I9IlR5cGUgcGFyYW1ldGVyICdBJyBpcyBub3Qgd2l0aGluIGl0cyBib3VuZDsgc2hvdWxkIGV4dGVuZCAnQTxBPiciPkE8L2Vycm9yPj4gYTI7CisgICAgQTxBPDxlcnJvciBkZXNjcj0iVHlwZSBwYXJhbWV0ZXIgJ0EnIGlzIG5vdCB3aXRoaW4gaXRzIGJvdW5kOyBzaG91bGQgZXh0ZW5kICdBPEE+JyI+QTwvZXJyb3I+Pj4gYTM7CisKKyAgICBBPD8gZXh0ZW5kcyBBPiBhNDsKKyAgICBBPDxlcnJvciBkZXNjcj0iVHlwZSBwYXJhbWV0ZXIgJz8gc3VwZXIgQScgaXMgbm90IHdpdGhpbiBpdHMgYm91bmQ7IHNob3VsZCBleHRlbmQgJ0E8PyBzdXBlciBBPiciPj8gc3VwZXIgQTwvZXJyb3I+PiBhNTsKKyAgICBBPDxlcnJvciBkZXNjcj0iVHlwZSBwYXJhbWV0ZXIgJ0FbXScgaXMgbm90IHdpdGhpbiBpdHMgYm91bmQ7IHNob3VsZCBleHRlbmQgJ0E8QVtdPiciPkFbXTwvZXJyb3I+PiBhNzsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9nZW5lcmljc0hpZ2hsaWdodGluZy9VbmNoZWNrZWRDYXN0cy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9nZW5lcmljc0hpZ2hsaWdodGluZy9VbmNoZWNrZWRDYXN0cy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA1MzJkMWYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2dlbmVyaWNzSGlnaGxpZ2h0aW5nL1VuY2hlY2tlZENhc3RzLmphdmEKQEAgLTAsMCArMSwxMDggQEAKK2ltcG9ydCBqYXZhLnV0aWwuKjsKKworY2xhc3MgWDw8d2FybmluZyBkZXNjcj0iVHlwZSBwYXJhbWV0ZXIgJ1QnIGlzIG5ldmVyIHVzZWQiPlQ8L3dhcm5pbmc+PiB7CisKK30KKworY2xhc3MgWFg8VD4gZXh0ZW5kcyBYPFQ+IHsKKyAgT2JqZWN0IGYoWDxTdHJpbmc+IHgpIHsKKyAgICBpZiAoeCAhPSBudWxsKSB7CisgICAgICBYWDxTdHJpbmc+IHh4ID0gPHdhcm5pbmcgZGVzY3I9IlVuY2hlY2tlZCBjYXN0OiAnWFgnIHRvICdYWDxqYXZhLmxhbmcuU3RyaW5nPiciPihYWDxTdHJpbmc+KW5ldyBYWCgpPC93YXJuaW5nPjsKKyAgICAgIHJldHVybiB4eDsKKyAgICB9CisgICAgaWYgKDEgPT0gMSkgeworICAgICAgWFg8U3RyaW5nPiB4eCA9IChYWDxTdHJpbmc+KXg7CisgICAgICByZXR1cm4geHg7CisgICAgfQorICAgIHJldHVybiBudWxsOworICB9Cit9CisKK2NsYXNzIGVlZTxDT01QIGV4dGVuZHMgZWVlPiB7CisgICAgQ09NUCBjb21wOworICAgIENPTVAgZm9vKCkgeworICAgICAgICByZXR1cm4gPHdhcm5pbmcgZGVzY3I9IlVuY2hlY2tlZCBjYXN0OiAnZWVlJyB0byAnQ09NUCciPihDT01QKSBuZXcgZWVlKCk8L3dhcm5pbmc+OworICAgIH0KK30KKworY2xhc3MgQWxsUHJlZGljYXRlPFQ+CisgICAgeworICAgIHByaXZhdGUgTGlzdDxTZXQ8PyBzdXBlciBUPj4gbGlzdHM7CisKKyAgICBwdWJsaWMgdm9pZCBlKEFsbFByZWRpY2F0ZSB0aGF0KQorICAgIHsKKyAgICAgICAgIGxpc3RzID0gPHdhcm5pbmcgZGVzY3I9IlVuY2hlY2tlZCBjYXN0OiAnamF2YS51dGlsLkxpc3QnIHRvICdqYXZhLnV0aWwuTGlzdDxqYXZhLnV0aWwuU2V0PD8gc3VwZXIgVD4+JyI+KExpc3Q8U2V0PD8gc3VwZXIgVD4+KXRoYXQubGlzdHM8L3dhcm5pbmc+OworICAgIH0KKworICAgIHB1YmxpYyBzdGF0aWMgTGlzdDxTdHJpbmc+IGZmZigpIHsKKyAgICAgICAgQ29sbGVjdGlvbjxTdHJpbmc+IGMgPSBuZXcgQXJyYXlMaXN0PFN0cmluZz4oKTsKKyAgICAgICAgcmV0dXJuIChMaXN0PFN0cmluZz4pIGM7IC8vbm90IHVuY2hlY2tlZAorICAgIH0KKworICAgIHB1YmxpYyBzdGF0aWMgQ29tcGFyYWJsZTxPYmplY3Q+IGdnZygpIHsKKyAgICAgICAgT2JqZWN0IHRpbWUgPSBuZXcgT2JqZWN0KCk7CisgICAgICAgIHJldHVybiA8d2FybmluZyBkZXNjcj0iVW5jaGVja2VkIGNhc3Q6ICdqYXZhLmxhbmcuT2JqZWN0JyB0byAnamF2YS5sYW5nLkNvbXBhcmFibGU8amF2YS5sYW5nLk9iamVjdD4nIj4oQ29tcGFyYWJsZTxPYmplY3Q+KSB0aW1lPC93YXJuaW5nPjsKKyAgICB9CisKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgZm9vKFNvcnRlZE1hcDw/LCA/PiBzb3VyY2VTb3J0ZWRNYXApIHsKKyAgICAgICAgbmV3IFRyZWVNYXA8T2JqZWN0LCBPYmplY3Q+KDx3YXJuaW5nIGRlc2NyPSJVbmNoZWNrZWQgY2FzdDogJ2phdmEudXRpbC5Db21wYXJhdG9yPGNhcHR1cmU8Pz4+JyB0byAnamF2YS51dGlsLkNvbXBhcmF0b3I8PyBzdXBlciBqYXZhLmxhbmcuT2JqZWN0PiciPihDb21wYXJhdG9yPD8gc3VwZXIgT2JqZWN0Pikgc291cmNlU29ydGVkTWFwLmNvbXBhcmF0b3IoKTwvd2FybmluZz4pOworICAgIH0KK30KKworY2xhc3MgSyB7IH0KK2NsYXNzIEwgZXh0ZW5kcyBLIHsgfQorY2xhc3MgTSB7CisgIHB1YmxpYyBzdGF0aWMgPFQgZXh0ZW5kcyBLPiBMIGYoVCB0KSB7CisgICAgIHJldHVybiAoTCkgdDsgLy90aGlzIHNob3VsZCBOT1QgZ2VuZXJhdGUgdW5jaGVja2VkIGNhc3QKKyAgfQorfQorCitjbGFzcyBVbmNoZWNrZWRDYXN0RmFsc2VQb3NpdGl2ZSB7CisKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWV0aG9kKE9iamVjdCBzb21ldGhpbmcpIHsKKyAgICAgICAgaWYgKHNvbWV0aGluZyBpbnN0YW5jZW9mIE51bWJlckxpc3QpIHsKKyAgICAgICAgICAgIE51bWJlckxpc3Q8PyBleHRlbmRzIE51bWJlcj4gPHdhcm5pbmcgZGVzY3I9IlZhcmlhYmxlICdudW1iZXJMaXN0JyBpcyBuZXZlciB1c2VkIj5udW1iZXJMaXN0PC93YXJuaW5nPiA9IChOdW1iZXJMaXN0PD8gIGV4dGVuZHMgTnVtYmVyPikgc29tZXRoaW5nOworICAgICAgICB9CisKKyAgICB9CisKKyAgICBwdWJsaWMgc3RhdGljIGNsYXNzIE51bWJlckxpc3Q8RSBleHRlbmRzIE51bWJlcj4gZXh0ZW5kcyBBcnJheUxpc3Q8RT4geworICAgIH0KKworfQorCitjbGFzcyBJREVBMjE1NDcgeworICBjbGFzcyBPIHt9CisgIGNsYXNzIEE8PHdhcm5pbmcgZGVzY3I9IlR5cGUgcGFyYW1ldGVyICdUJyBpcyBuZXZlciB1c2VkIj5UPC93YXJuaW5nPj4ge30KKyAgY2xhc3MgQjxLIGV4dGVuZHMgTz4gZXh0ZW5kcyBBPEs+e30KKworICBwdWJsaWMgdm9pZCBiYXIoQTw/IGV4dGVuZHMgTz4gYSwgQjxPPiBiKSB7CisgICAgYiA9IDx3YXJuaW5nIGRlc2NyPSJVbmNoZWNrZWQgY2FzdDogJ0lERUEyMTU0Ny5BPGNhcHR1cmU8PyBleHRlbmRzIElERUEyMTU0Ny5PPj4nIHRvICdJREVBMjE1NDcuQjxJREVBMjE1NDcuTz4nIj4oQjxPPilhPC93YXJuaW5nPjsKKyAgICBTeXN0ZW0ub3V0LnByaW50bG4oYik7CisgIH0KKworICBwdWJsaWMgdm9pZCBiYXIxKEE8Pz4gYSwgQjxPPiBiKSB7CisgICAgYiA9IDx3YXJuaW5nIGRlc2NyPSJVbmNoZWNrZWQgY2FzdDogJ0lERUEyMTU0Ny5BPGNhcHR1cmU8Pz4+JyB0byAnSURFQTIxNTQ3LkI8SURFQTIxNTQ3Lk8+JyI+KEI8Tz4pYTwvd2FybmluZz47CisgICAgU3lzdGVtLm91dC5wcmludGxuKGIpOworICB9CisKKyAgcHVibGljIHZvaWQgYmFyMihBPD8+IGEsIEI8Pz4gYikgeworICAgIGIgPSA8d2FybmluZyBkZXNjcj0iVW5jaGVja2VkIGNhc3Q6ICdJREVBMjE1NDcuQTxjYXB0dXJlPD8+PicgdG8gJ0lERUEyMTU0Ny5CPElERUEyMTU0Ny5PPiciPihCPE8+KWE8L3dhcm5pbmc+OworICAgIFN5c3RlbS5vdXQucHJpbnRsbihiKTsKKyAgfQorCisgIHB1YmxpYyB2b2lkIGJhcjQoQTw/IGV4dGVuZHMgTz4gYSwgQjw/PiBiKSB7CisgICAgYiA9IDx3YXJuaW5nIGRlc2NyPSJVbmNoZWNrZWQgY2FzdDogJ0lERUEyMTU0Ny5BPGNhcHR1cmU8PyBleHRlbmRzIElERUEyMTU0Ny5PPj4nIHRvICdJREVBMjE1NDcuQjxJREVBMjE1NDcuTz4nIj4oQjxPPilhPC93YXJuaW5nPjsKKyAgICBTeXN0ZW0ub3V0LnByaW50bG4oYik7CisgIH0KKworICBwdWJsaWMgdm9pZCBiYXI1KEE8PyBzdXBlciBPPiBhLCBCPD8+IGIpIHsKKyAgICBiID0gPHdhcm5pbmcgZGVzY3I9IlVuY2hlY2tlZCBjYXN0OiAnSURFQTIxNTQ3LkE8Y2FwdHVyZTw/IHN1cGVyIElERUEyMTU0Ny5PPj4nIHRvICdJREVBMjE1NDcuQjxJREVBMjE1NDcuTz4nIj4oQjxPPilhPC93YXJuaW5nPjsKKyAgICBTeXN0ZW0ub3V0LnByaW50bG4oYik7CisgIH0KKworICBwdWJsaWMgdm9pZCBiYXI2KEEgYSwgQjw/PiBiKSB7CisgICAgYiA9IDx3YXJuaW5nIGRlc2NyPSJVbmNoZWNrZWQgY2FzdDogJ0lERUEyMTU0Ny5BJyB0byAnSURFQTIxNTQ3LkI8SURFQTIxNTQ3Lk8+JyI+KEI8Tz4pYTwvd2FybmluZz47CisgICAgU3lzdGVtLm91dC5wcmludGxuKGIpOworICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2dlbmVyaWNzSGlnaGxpZ2h0aW5nL1VuY2hlY2tlZE92ZXJyaWRpbmcuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvZ2VuZXJpY3NIaWdobGlnaHRpbmcvVW5jaGVja2VkT3ZlcnJpZGluZy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ0ZWY5Y2UKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2dlbmVyaWNzSGlnaGxpZ2h0aW5nL1VuY2hlY2tlZE92ZXJyaWRpbmcuamF2YQpAQCAtMCwwICsxLDQ1IEBACitjbGFzcyBMaXN0PFQ+IHsgVCB0O30KKworY2xhc3MgQmFzZTxUPiB7CisgICAgTGlzdDxUPiBnZXRMaXN0KExpc3Q8VD4gbCkgeworICAgICAgICByZXR1cm4gbnVsbDsKKyAgICB9CisKKworfQorCitjbGFzcyBEZXJpdmVkIGV4dGVuZHMgQmFzZSA8U3RyaW5nPiB7CisgICAgPHdhcm5pbmcgZGVzY3I9IlVuY2hlY2tlZCBvdmVycmlkaW5nOiByZXR1cm4gdHlwZSByZXF1aXJlcyB1bmNoZWNrZWQgY29udmVyc2lvbi4gRm91bmQgJ0xpc3QnLCByZXF1aXJlZCAnTGlzdDxqYXZhLmxhbmcuU3RyaW5nPiciPkxpc3Q8L3dhcm5pbmc+IGdldExpc3QoTGlzdDxTdHJpbmc+IGwpIHsKKyAgICAgICAgcmV0dXJuIG51bGw7CisgICAgfQorfQorCitjbGFzcyBBMSB7CisgICAgPFQ+IFQgZm9vKFQgdCkgeworICAgICAgICByZXR1cm4gbnVsbDsKKyAgICB9Cit9CisKK2NsYXNzIEEyIGV4dGVuZHMgQTEgeworICAgIDx3YXJuaW5nIGRlc2NyPSJVbmNoZWNrZWQgb3ZlcnJpZGluZzogcmV0dXJuIHR5cGUgcmVxdWlyZXMgdW5jaGVja2VkIGNvbnZlcnNpb24uIEZvdW5kICdqYXZhLmxhbmcuT2JqZWN0JywgcmVxdWlyZWQgJ1QnIj5PYmplY3Q8L3dhcm5pbmc+IGZvbyhPYmplY3QgbykgeworICAgICAgICByZXR1cm4gbnVsbDsKKyAgICB9Cit9CisKKy8vSURFQURFVi0xNTkxOAorYWJzdHJhY3QgY2xhc3MgT3V0ZXI8VT4geworICAgIHB1YmxpYyBhYnN0cmFjdCBJbm5lciBtKFUgdSk7CisKKyAgICBwdWJsaWMgY2xhc3MgSW5uZXIgeworICAgIH0KK30KKworY2xhc3MgT3RoZXIgZXh0ZW5kcyBPdXRlcjxPdGhlcj4geworICAgIHB1YmxpYyBJdGhlciBtKE90aGVyIG90aGVyKSB7CisgICAgICAgIHJldHVybiBuZXcgSXRoZXIoKTsKKyAgICB9CisKKyAgICBwdWJsaWMgY2xhc3MgSXRoZXIgZXh0ZW5kcyBJbm5lciB7CisgICAgfQorfQorLy9lbmQgb2YgSURFQURFVi0xNTkxOApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvZ2VuZXJpY3NIaWdobGlnaHRpbmcvVW5jaGVja2VkV2FybmluZ3NMZXZlbDYuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvZ2VuZXJpY3NIaWdobGlnaHRpbmcvVW5jaGVja2VkV2FybmluZ3NMZXZlbDYuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMmI1ODFkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9nZW5lcmljc0hpZ2hsaWdodGluZy9VbmNoZWNrZWRXYXJuaW5nc0xldmVsNi5qYXZhCkBAIC0wLDAgKzEsMTI4IEBACitpbXBvcnQgamF2YS5sYW5nLk92ZXJyaWRlOworaW1wb3J0IGphdmEudXRpbC4qOworY2xhc3MgR2VuZXJpY3NUZXN0PFQ+IHsKKworICAgIHN0YXRpYyA8Uz4gUyBuZXh0KEdlbmVyaWNzVGVzdDxTPiB0ZXN0KQorICAgIHsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKHRlc3QpOworICAgICAgICByZXR1cm4gbnVsbDsKKyAgICB9CisKKyAgICBwdWJsaWMgSXRlcmF0b3I8VD4gaXRlcmF0b3IoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG5ldyBJdGVyYXRvcjxUPigpIHsKKyAgICAgICAgICAgIEBPdmVycmlkZQorICAgICAgICAgICAgcHVibGljIGJvb2xlYW4gaGFzTmV4dCgpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgICAgIHB1YmxpYyBUIG5leHQoKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiBHZW5lcmljc1Rlc3QubmV4dChHZW5lcmljc1Rlc3QudGhpcyk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIEBPdmVycmlkZQorICAgICAgICAgICAgcHVibGljIHZvaWQgcmVtb3ZlKCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKyAgICB9Cit9CisKK2NsYXNzIEdlbmVyaWNzVGVzdDE8VD4geworCisgICAgc3RhdGljIDxTPiBTIG5leHQxKEdlbmVyaWNzVGVzdDE8Uz4gdGVzdCkKKyAgICB7CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbih0ZXN0KTsKKyAgICAgICAgcmV0dXJuIG51bGw7CisgICAgfQorCisgICAgcHVibGljIEl0ZXJhdG9yPFQ+IGl0ZXJhdG9yKCkKKyAgICB7CisgICAgICAgIHJldHVybiBuZXcgSXRlcmF0b3I8VD4oKSB7CisgICAgICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgICAgIHB1YmxpYyBib29sZWFuIGhhc05leHQoKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgQE92ZXJyaWRlCisgICAgICAgICAgICBwdWJsaWMgVCBuZXh0KCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gR2VuZXJpY3NUZXN0MS5uZXh0MShHZW5lcmljc1Rlc3QxLnRoaXMpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgICAgIHB1YmxpYyB2b2lkIHJlbW92ZSgpCisgICAgICAgICAgICB7CisgICAgICAgICAgICB9CisgICAgICAgIH07CisgICAgfQorfQorCisKK2NsYXNzIEdlbmVyaWNzVGVzdDI8VD4geworCisgICAgc3RhdGljIDxTPiBTIG5leHQyKEdlbmVyaWNzVGVzdDI8Uz4gdGVzdCkKKyAgICB7CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbih0ZXN0KTsKKyAgICAgICAgcmV0dXJuIG51bGw7CisgICAgfQorCisgICAgcHVibGljIEl0ZXJhdG9yPFQ+IGl0ZXJhdG9yKCkKKyAgICB7CisgICAgICAgIHJldHVybiBuZXcgSXRlcmF0b3I8VD4oKSB7CisgICAgICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgICAgIHB1YmxpYyBib29sZWFuIGhhc05leHQoKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgQE92ZXJyaWRlCisgICAgICAgICAgICBwdWJsaWMgVCBuZXh0KCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gbmV4dDIoR2VuZXJpY3NUZXN0Mi50aGlzKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgQE92ZXJyaWRlCisgICAgICAgICAgICBwdWJsaWMgdm9pZCByZW1vdmUoKQorICAgICAgICAgICAgeworICAgICAgICAgICAgfQorICAgICAgICB9OworICAgIH0KK30KK2NsYXNzIEV4YW1wbGUgeworICAgIHByaXZhdGUgc3RhdGljIDxUPiB2b2lkIGFzc2VydFRoYXQoVCBhY3R1YWwsIE1hdGNoZXI8PyBzdXBlciBUPiBtYXRjaGVyKSB7CisgICAgICBhc3NlcnQgYWN0dWFsICE9IG51bGw7CisgICAgICBhc3NlcnQgbWF0Y2hlciAhPSBudWxsOworICAgIH0KKworICAgIHByaXZhdGUgc3RhdGljIDxFPiBNYXRjaGVyPD8gc3VwZXIgQ29sbGVjdGlvbjw/IGV4dGVuZHMgRT4+IGhhc1NpemUoaW50IHNpemUpIHsKKyAgICAgICAgYXNzZXJ0IHNpemUgPj0wOworICAgICAgICByZXR1cm4gbmV3IE1hdGNoZXI8Q29sbGVjdGlvbjw/IGV4dGVuZHMgRT4+KCkgeworICAgICAgICAgIEBPdmVycmlkZQorICAgICAgICAgIHB1YmxpYyB2b2lkIGZvbyhDb2xsZWN0aW9uPD8gZXh0ZW5kcyBFPiBlcykgeworICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKGVzKTsKKyAgICAgICAgICB9CisgICAgICAgIH07CisgICAgfQorCisgICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgeworICAgICAgTGlzdDxCb29sZWFuPiBsaXN0ID0gPHdhcm5pbmcgZGVzY3I9IlVuY2hlY2tlZCBhc3NpZ25tZW50OiAnamF2YS51dGlsLkFycmF5TGlzdCcgdG8gJ2phdmEudXRpbC5MaXN0PGphdmEubGFuZy5Cb29sZWFuPiciPm5ldyBBcnJheUxpc3QoKTwvd2FybmluZz47CisgICAgICBTeXN0ZW0ub3V0LnByaW50bG4obGlzdCk7CisgICAgICBhc3NlcnRUaGF0KG5ldyBBcnJheUxpc3Q8Qm9vbGVhbj4oKSwgaGFzU2l6ZSgwKSk7CisgICAgfQorCisgICAgcHJpdmF0ZSBpbnRlcmZhY2UgTWF0Y2hlcjxUPiB7CisgICAgICB2b2lkIGZvbyhUIHQpOworICAgIH0KK30KKworYWJzdHJhY3QgY2xhc3MgSURFQTU3MzM3PDx3YXJuaW5nIGRlc2NyPSJUeXBlIHBhcmFtZXRlciAnUycgaXMgbmV2ZXIgdXNlZCI+Uzwvd2FybmluZz4+IHsKKyAgICBhYnN0cmFjdCA8VD4gdm9pZCBmb28oSURFQTU3MzM3PD8gc3VwZXIgSURFQTU3MzM3PFQ+PiB4KTsKKyAgICB2b2lkIGJhcihJREVBNTczMzc8PyBzdXBlciBJREVBNTczMzc8Pz4+IHgpeworICAgICAgICBmb28oeCk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvZ2VuZXJpY3NIaWdobGlnaHRpbmcvVW51c2VkLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2dlbmVyaWNzSGlnaGxpZ2h0aW5nL1VudXNlZC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY2ZDQyOWUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2dlbmVyaWNzSGlnaGxpZ2h0aW5nL1VudXNlZC5qYXZhCkBAIC0wLDAgKzEsMTEgQEAKK2VudW0gZSB7CisgIEEoInh4eCIpOworCisgIHByaXZhdGUgU3RyaW5nIHM7CisgIGUoU3RyaW5nIHN0cikgeworICAgIHMgPSBzdHI7CisgIH0KKyAgcHVibGljIFN0cmluZyBnZXRTKCkgeworICAgIHJldHVybiBzOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9nZW5lcmljc0hpZ2hsaWdodGluZy9WYXJhcmdzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2dlbmVyaWNzSGlnaGxpZ2h0aW5nL1ZhcmFyZ3MuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jOTk1NmY2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9nZW5lcmljc0hpZ2hsaWdodGluZy9WYXJhcmdzLmphdmEKQEAgLTAsMCArMSwzMyBAQAorY2xhc3MgY2xhenoxIHsKKyAgICBjbGF6ejEoaW50Li4uIGFyZ3MpIHsgYXJncyA9IG51bGw7IH0KKyAgICBwdWJsaWMgc3RhdGljIGNsYXNzIE15Y2xhenoxIGV4dGVuZHMgY2xhenoxIHt9Cit9CisKK2NsYXNzIEFtYmlndW91c1JlZmVyZW5jZSB7CisgIHZvaWQgdGVzdCgpIHsKKyAgICBkb1NvbWV0aGluZzxlcnJvciBkZXNjcj0iQW1iaWd1b3VzIG1ldGhvZCBjYWxsOiBib3RoICdBbWJpZ3VvdXNSZWZlcmVuY2UuZG9Tb21ldGhpbmcoU3RyaW5nLCBOdW1iZXIuLi4pJyBhbmQgJ0FtYmlndW91c1JlZmVyZW5jZS5kb1NvbWV0aGluZyhOdW1iZXIuLi4pJyBtYXRjaCI+KG51bGwsIDEpPC9lcnJvcj47CisgIH0KKworICB2b2lkIGRvU29tZXRoaW5nKFN0cmluZyBzLCBOdW1iZXIuLi4gbikgeworICAgIHMrPW47CisgIH0KKworICB2b2lkIGRvU29tZXRoaW5nKE51bWJlci4uLiBuKSB7CisgICAgbi5oYXNoQ29kZSgpOworICB9Cit9CisKK2NsYXNzIE9LIHsKKyAgICBwcm90ZWN0ZWQgdm9pZCBmZmYoKSB7CisgICAgICAgIGZpbmQoIiIpOworICAgIH0KKyAgICBwdWJsaWMgdm9pZCBmaW5kKFN0cmluZyBxdWVyeVN0cmluZykgIHsKKyAgICAgICBxdWVyeVN0cmluZy5oYXNoQ29kZSgpOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIGZpbmQoZmluYWwgU3RyaW5nIHF1ZXJ5U3RyaW5nLCBmaW5hbCBPYmplY3QuLi4gdmFsdWVzKSAgeworICAgICAgIHF1ZXJ5U3RyaW5nLmhhc2hDb2RlKCk7CisgICAgICAgdmFsdWVzLmhhc2hDb2RlKCk7CisgICAgfQorCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9nZW5lcmljc0hpZ2hsaWdodGluZy9WYXJpYW5jZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9nZW5lcmljc0hpZ2hsaWdodGluZy9WYXJpYW5jZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE1MmY2NDgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2dlbmVyaWNzSGlnaGxpZ2h0aW5nL1ZhcmlhbmNlLmphdmEKQEAgLTAsMCArMSwyODUgQEAKK2ltcG9ydCBqYXZhLnV0aWwuKjsKK2ltcG9ydCBqYXZhLnV0aWwuQ29tcGFyYXRvcjsKKworCisvKioKKyAqIENyZWF0ZWQgYnkgSW50ZWxsaUogSURFQS4KKyAqIFVzZXI6IGRzbAorICogRGF0ZTogTWFyIDI1LCAyMDA0CisgKiBUaW1lOiA4OjA4OjQ0IFBNCisgKiBUbyBjaGFuZ2UgdGhpcyB0ZW1wbGF0ZSB1c2UgRmlsZSB8IFNldHRpbmdzIHwgRmlsZSBUZW1wbGF0ZXMuCisgKi8KK3B1YmxpYyBjbGFzcyBWYXJpYW5jZVRlc3RpbmcgeworICAgIHZvaWQgbWV0aG9kKExpc3Q8PyBleHRlbmRzIFZhcmlhbmNlVGVzdGluZz4gbCkgeworLy8gICAgICAgIGwuYWRkKG5ldyBWYXJpYW5jZVRlc3RpbmcoKSk7CisgICAgICAgIGwuYWRkKG51bGwpOworICAgIH0KKworICAgIHN0YXRpYyB2b2lkIHNodWZmbGUoQ29sbGVjdGlvbjw/PiBjKSB7fQorCisgICAgc3RhdGljIGNsYXNzIFg8VD4geworICAgICAgICBUIGZpZWxkOworICAgICAgICBUW10gYXJyYXlGaWVsZDsKKyAgICAgICAgVFtdIG1ldGhvZCgpIHtyZXR1cm4gIGFycmF5RmllbGQ7fTsKKyAgICAgICAgdm9pZCBwdXRBbGwoQ29sbGVjdGlvbjw/IHN1cGVyIFQ+IGMpIHt9CisgICAgfQorCisgICAgdm9pZCBtZXRob2QxKExpc3Q8PyBzdXBlciBWYXJpYW5jZVRlc3Rpbmc+IGwpIHsKKyAgICAgICAgTGlzdDw/IGV4dGVuZHMgVmFyaWFuY2VUZXN0aW5nPiBsMSA9IG5ldyBBcnJheUxpc3Q8VmFyaWFuY2VUZXN0aW5nPigpOworICAgICAgICBsMS5hZGQ8ZXJyb3IgZGVzY3I9IidhZGQoY2FwdHVyZTw/IGV4dGVuZHMgVmFyaWFuY2VUZXN0aW5nPiknIGluICdqYXZhLnV0aWwuTGlzdCcgY2Fubm90IGJlIGFwcGxpZWQgdG8gJyhWYXJpYW5jZVRlc3RpbmcpJyI+KG5ldyBWYXJpYW5jZVRlc3RpbmcoKSk8L2Vycm9yPjsKKyAgICAgICAgTGlzdDxMaXN0PD8gZXh0ZW5kcyBWYXJpYW5jZVRlc3Rpbmc+PiBsbGwgPSBudWxsOworICAgICAgICBsbGwuYWRkKGwxKTsKKyAgICAgICAgWDw/IGV4dGVuZHMgVmFyaWFuY2VUZXN0aW5nPiB4ID0gbmV3IFg8VmFyaWFuY2VUZXN0aW5nPigpOworICAgICAgICBWYXJpYW5jZVRlc3RpbmcgeiA9IHguZmllbGQ7CisgICAgICAgIFZhcmlhbmNlVGVzdGluZ1tdIHYgPSB4LmFycmF5RmllbGQ7CisgICAgICAgIFZhcmlhbmNlVGVzdGluZyB2MSA9IHguYXJyYXlGaWVsZFswXTsKKyAgICAgICAgeC5hcnJheUZpZWxkWzBdID0gbmV3IFZhcmlhbmNlVGVzdGluZygpOworICAgICAgICA8ZXJyb3IgZGVzY3I9IkluY29tcGF0aWJsZSB0eXBlcy4gRm91bmQ6ICdWYXJpYW5jZVRlc3RpbmcnLCByZXF1aXJlZDogJ2NhcHR1cmU8PyBleHRlbmRzIFZhcmlhbmNlVGVzdGluZz4nIj54LmZpZWxkID0gbmV3IFZhcmlhbmNlVGVzdGluZygpPC9lcnJvcj47CisgICAgICAgIFZhcmlhbmNlVGVzdGluZ1tdIGsgPSB4Lm1ldGhvZCgpOworICAgICAgICBrWzBdID0gbmV3IFZhcmlhbmNlVGVzdGluZygpOworICAgICAgICB4Lm1ldGhvZCgpWzBdID0gbmV3IFZhcmlhbmNlVGVzdGluZygpOworICAgICAgICA8ZXJyb3IgZGVzY3I9IkluY29tcGF0aWJsZSB0eXBlcy4gRm91bmQ6ICdWYXJpYW5jZVRlc3RpbmdbXScsIHJlcXVpcmVkOiAnY2FwdHVyZTw/IGV4dGVuZHMgVmFyaWFuY2VUZXN0aW5nPltdJyI+eC5hcnJheUZpZWxkID0gbmV3IFZhcmlhbmNlVGVzdGluZ1sxMF08L2Vycm9yPjsKKyAgICAgICAgbDEuYWRkQWxsPGVycm9yIGRlc2NyPSInYWRkQWxsKGphdmEudXRpbC5Db2xsZWN0aW9uPD8gZXh0ZW5kcyBjYXB0dXJlPD8gZXh0ZW5kcyBWYXJpYW5jZVRlc3Rpbmc+PiknIGluICdqYXZhLnV0aWwuTGlzdCcgY2Fubm90IGJlIGFwcGxpZWQgdG8gJyhqYXZhLnV0aWwuQXJyYXlMaXN0PFZhcmlhbmNlVGVzdGluZz4pJyI+KG5ldyBBcnJheUxpc3Q8VmFyaWFuY2VUZXN0aW5nPigpKTwvZXJyb3I+OworICAgICAgICA8ZXJyb3IgZGVzY3I9IkluY29tcGF0aWJsZSB0eXBlcy4gRm91bmQ6ICdqYXZhLnV0aWwuQXJyYXlMaXN0PGphdmEubGFuZy5TdHJpbmc+JywgcmVxdWlyZWQ6ICdqYXZhLnV0aWwuTGlzdDw/IGV4dGVuZHMgVmFyaWFuY2VUZXN0aW5nPiciPkxpc3Q8PyBleHRlbmRzIFZhcmlhbmNlVGVzdGluZz4gbDIgPSBuZXcgQXJyYXlMaXN0PFN0cmluZz4oKTs8L2Vycm9yPgorICAgICAgICBMaXN0PD8gZXh0ZW5kcyBWYXJpYW5jZVRlc3Rpbmc+IGwzID0gbDI7CisgICAgICAgIFZhcmlhbmNlVGVzdGluZyB0ID0gbDEuZ2V0KDApOworICAgICAgICBsLmFkZChuZXcgVmFyaWFuY2VUZXN0aW5nKCkpOworICAgICAgICBsLmFkZChudWxsKTsKKyAgICAgICAgPGVycm9yIGRlc2NyPSJJbmNvbXBhdGlibGUgdHlwZXMuIEZvdW5kOiAnamF2YS5sYW5nLk9iamVjdCcsIHJlcXVpcmVkOiAnVmFyaWFuY2VUZXN0aW5nJyI+VmFyaWFuY2VUZXN0aW5nIHQxID0gbC5nZXQoMCk7PC9lcnJvcj4KKyAgICAgICAgWDw/IGV4dGVuZHMgVmFyaWFuY2VUZXN0aW5nPiB4MSA9IG51bGw7CisgICAgICAgIHgxLnB1dEFsbChuZXcgQXJyYXlMaXN0PFZhcmlhbmNlVGVzdGluZz4oKSk7CisgICAgICAgIExpc3Q8Pz4gdW5rbm93bmxpc3QgPSBsOworICAgICAgICBMaXN0PD8+IHVua25vd25saXN0MSA9IG5ldyBBcnJheUxpc3Q8VmFyaWFuY2VUZXN0aW5nPigpOworICAgICAgICBMaXN0PD8+IHVua25vd25saXN0MiA9IG5ldyBBcnJheUxpc3Q8PGVycm9yIGRlc2NyPSJXaWxkY2FyZCB0eXBlICc/JyBjYW5ub3QgYmUgaW5zdGFudGlhdGVkIGRpcmVjdGx5Ij4/PC9lcnJvcj4+KCk7CisgICAgICAgIHNodWZmbGUobCk7CisgICAgICAgIHNodWZmbGUobmV3IEFycmF5TGlzdDxWYXJpYW5jZVRlc3Rpbmc+KCkpOworICAgICAgICBMaXN0PFZhcmlhbmNlVGVzdGluZz4gbGxsbGwgPSBuZXcgQXJyYXlMaXN0PFZhcmlhbmNlVGVzdGluZz4oKTsKKyAgICAgICAgbGxsbGwucmVtb3ZlQWxsKG5ldyBBcnJheUxpc3Q8U3RyaW5nPigpKTsKKyAgICB9CisKK30KKworY2xhc3MgU3VwZXJUZXN0ZXIgPFU+IHsKKyAgICAgdm9pZCBnbyhBY2NlcHRvcjw/IHN1cGVyIFU+IGFjY2VwdG9yLCBVIHUpIHsKKyAgICAgICAgICBhY2NlcHRvci5hY2NlcHQ8ZXJyb3IgZGVzY3I9IidhY2NlcHQoU3VwZXJUZXN0ZXI8Y2FwdHVyZTw/IHN1cGVyIFU+PiwgY2FwdHVyZTw/IHN1cGVyIFU+KScgaW4gJ1N1cGVyVGVzdGVyLkFjY2VwdG9yJyBjYW5ub3QgYmUgYXBwbGllZCB0byAnKFN1cGVyVGVzdGVyPFU+LCBVKSciPih0aGlzLCB1KTwvZXJyb3I+OworICAgICB9CisKKyAgICAgc3RhdGljIGNsYXNzIEFjY2VwdG9yIDxWPiB7CisgICAgICAgICAgdm9pZCBhY2NlcHQoU3VwZXJUZXN0ZXI8Vj4gdGVzdGVyLCBWIHYpIHsgfQorICAgICB9Cit9CisKK2NsYXNzIFNDUjQwMjAyIHsKKyAgICB2b2lkIGZvbyhNYXA8PywgU3RyaW5nPiBtYXApIHsKKyAgICAgICAgZm9yICg8ZXJyb3IgZGVzY3I9IkluY29tcGF0aWJsZSB0eXBlcy4gRm91bmQ6ICdqYXZhLnV0aWwuSXRlcmF0b3I8amF2YS51dGlsLk1hcC5FbnRyeTxjYXB0dXJlPD8+LGphdmEubGFuZy5TdHJpbmc+PicsIHJlcXVpcmVkOiAnamF2YS51dGlsLkl0ZXJhdG9yPGphdmEudXRpbC5NYXAuRW50cnk8PyxqYXZhLmxhbmcuU3RyaW5nPj4nIj5JdGVyYXRvcjxNYXAuRW50cnk8PywgU3RyaW5nPj4gaXQgPSBtYXAuZW50cnlTZXQoKS5pdGVyYXRvcigpOzwvZXJyb3I+IGl0Lmhhc05leHQoKTspIHsKKworICAgICAgICB9CisgICAgfQorfQorCitjbGFzcyBDYXB0dXJlVGVzdCB7CisgICBzdGF0aWMgY2xhc3MgRW11bTxUPiB7CisgICAgICBUIHQ7CisgICAgICBwdWJsaWMgc3RhdGljIDxUIGV4dGVuZHMgRW11bTxUPj4gVCB2YWx1ZU9mKENsYXNzPFQ+IGVudW1UeXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nIG5hbWUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsOworICAgICAgfQorICAgfQorCisgICB2b2lkIGZvbyAoQ2xhc3M8PyBleHRlbmRzIEVtdW08Q2FwdHVyZVRlc3Q+PiBjbGF6eikgeworICAgICA8ZXJyb3IgZGVzY3I9IkluZmVycmVkIHR5cGUgJz8gZXh0ZW5kcyBDYXB0dXJlVGVzdC5FbXVtPENhcHR1cmVUZXN0PicgZm9yIHR5cGUgcGFyYW1ldGVyICdUJyBpcyBub3Qgd2l0aGluIGl0cyBib3VuZDsgc2hvdWxkIGV4dGVuZCAnQ2FwdHVyZVRlc3QuRW11bTw/IGV4dGVuZHMgQ2FwdHVyZVRlc3QuRW11bTxDYXB0dXJlVGVzdD4+JyI+RW11bS52YWx1ZU9mKGNsYXp6LCAiQ0NDIik8L2Vycm9yPjsKKyAgIH0KK30KKworY2xhc3MgU3VwZXJUZXN0IHsKKyAgICBwdWJsaWMgTGlzdDxMaXN0PD8gZXh0ZW5kcyBTdXBlclRlc3Q+PiB3YWl0aW5nTGlzdDsKKworICAgIHB1YmxpYyBDb21wYXJhdG9yPExpc3Q8Pz4+IFNJWkVfQ09NUEFSQVRPUjsKKworICAgIHsKKyAgICAgICAvL1RoaXMgY2FsbCBoYXMgaXRzIHR5cGUgYXJndW1lbnRzIGluZmVycmVkIGFscmlnaHQ6IFQgLT4gTGlzdDxjYXB0dXJlPD8gZXh0ZW5kcyBTdXBlclRlc3Q+PgorICAgICAgIENvbGxlY3Rpb25zLnNvcnQod2FpdGluZ0xpc3QsIFNJWkVfQ09NUEFSQVRPUik7CisgICAgfQorfQorCitjbGFzcyBCdWc8QT4geworICAgIHN0YXRpYyBjbGFzcyBCPEM+IHsKKyAgICB9CisKKyAgICBzdGF0aWMgY2xhc3MgRDxFPiB7CisgICAgICAgIEI8RT4gZigpIHsKKyAgICAgICAgICAgIHJldHVybiBudWxsOworICAgICAgICB9CisgICAgfQorCisgICAgPEcgZXh0ZW5kcyBBPiB2b2lkIGgoQjxHPiBiKSB7CisgICAgfQorICAgIAorICAgIHZvaWQgZm9vKEQ8PyBleHRlbmRzIEE+IGQpIHsKKyAgICAgICAgaChkLmYoKSk7ICAgLy9UaGlzIGNhbGwgaXMgT0sgYXMgYSByZXN1bHQgb2YgcmVvcGVuaW5nIGNhcHR1cmVkIHdpbGRjYXJkIGZvciBjYWxsaW5nICJoIgorICAgIH0KK30KKworLy9JREVBLTQyMTUKK2NsYXNzIENhc2UyIHsKKyAgICAgICAgY2xhc3MgQSB7fQorCisgICAgICAgIGNsYXNzIEIgZXh0ZW5kcyBBIHt9CisKKyAgICAgICAgQ29tcGFyYXRvcjxBPiBhQ29tcGFyYXRvcjsKKyAgICAgICAgQ2FzZTIoKSB7CisKKyAgICAgICAgICAgIEFycmF5TGlzdDxCPiBibGlzdCA9IG5ldyBBcnJheUxpc3Q8Qj4oKTsKKworICAgICAgICAgICAgLy8gdGhpcyBjYWxsIGlzIE9LOiBUIC0+IEIKKyAgICAgICAgICAgIENvbGxlY3Rpb25zLnNvcnQoYmxpc3QsIGFDb21wYXJhdG9yKTsKKyAgICAgICAgfQorfQorCitjbGFzcyBTMSB7CisgICAgPFQ+IHZvaWQgZihMaXN0PFQ+IGwxLCBUIGwyKSB7CisKKyAgICB9CisKKyAgICB2b2lkIGJhcihMaXN0PD8gZXh0ZW5kcyBTMT4gaykgeworICAgICAgICBmPGVycm9yIGRlc2NyPSInZihqYXZhLnV0aWwuTGlzdDxTMT4sIFMxKScgaW4gJ1MxJyBjYW5ub3QgYmUgYXBwbGllZCB0byAnKGphdmEudXRpbC5MaXN0PGNhcHR1cmU8PyBleHRlbmRzIFMxPj4sIFMxKSciPihrLCAgay5nZXQoMCkpPC9lcnJvcj47CisgICAgfQorfQorCitjbGFzcyBTMiB7CisgICAgPFQ+IHZvaWQgZihMaXN0PFQ+IGwxLCBMaXN0PFQ+IGwyKSB7CisKKyAgICB9CisKKyAgICB2b2lkIGJhcihMaXN0PD8gZXh0ZW5kcyBTMj4gaykgeworICAgICAgICBmPGVycm9yIGRlc2NyPSInZihqYXZhLnV0aWwuTGlzdDxUPiwgamF2YS51dGlsLkxpc3Q8VD4pJyBpbiAnUzInIGNhbm5vdCBiZSBhcHBsaWVkIHRvICcoamF2YS51dGlsLkxpc3Q8Y2FwdHVyZTw/IGV4dGVuZHMgUzI+PiwgamF2YS51dGlsLkxpc3Q8Y2FwdHVyZTw/IGV4dGVuZHMgUzI+PiknIj4oaywgayk8L2Vycm9yPjsKKyAgICB9Cit9CisKK2NsYXNzIFMzIHsKKyAgICA8VD4gdm9pZCBmKE1hcDxULFQ+IGwyKSB7CisKKyAgICB9CisKKyAgICB2b2lkIGJhcihNYXA8PyBleHRlbmRzIFMzLCA/IGV4dGVuZHMgUzM+IGspIHsKKyAgICAgICAgZjxlcnJvciBkZXNjcj0iJ2YoamF2YS51dGlsLk1hcDxULFQ+KScgaW4gJ1MzJyBjYW5ub3QgYmUgYXBwbGllZCB0byAnKGphdmEudXRpbC5NYXA8Y2FwdHVyZTw/IGV4dGVuZHMgUzM+LGNhcHR1cmU8PyBleHRlbmRzIFMzPj4pJyI+KGspPC9lcnJvcj47CisgICAgfQorfQorCitjbGFzcyBUeXBlQnVnIHsKKyAgICBwcml2YXRlIHN0YXRpYyBjbGFzcyBWYWx1ZUhvbGRlcjxUPiB7CisgICAgICAgIHB1YmxpYyBUIHZhbHVlOworICAgIH0KKworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKGZpbmFsIFN0cmluZ1tdIGFyZ3MpIHsKKyAgICAgICAgTGlzdDxWYWx1ZUhvbGRlcjw/Pj4gbXVsdGlMaXN0ID0gbmV3IEFycmF5TGlzdDxWYWx1ZUhvbGRlcjw/Pj4oKTsKKworICAgICAgICBWYWx1ZUhvbGRlcjxJbnRlZ2VyPiBpbnRIb2xkZXIgPSBuZXcgVmFsdWVIb2xkZXI8SW50ZWdlcj4oKTsKKyAgICAgICAgaW50SG9sZGVyLnZhbHVlID0gMTsKKworICAgICAgICBWYWx1ZUhvbGRlcjxEb3VibGU+IGRvdWJsZUhvbGRlciA9IG5ldyBWYWx1ZUhvbGRlcjxEb3VibGU+KCk7CisgICAgICAgIGRvdWJsZUhvbGRlci52YWx1ZSA9IDEuNTsKKworICAgICAgICBtdWx0aUxpc3QuYWRkKGludEhvbGRlcik7CisgICAgICAgIG11bHRpTGlzdC5hZGQoZG91YmxlSG9sZGVyKTsKKyAgICAgICAgc3dhcEZpcnN0VHdvVmFsdWVzPGVycm9yIGRlc2NyPSInc3dhcEZpcnN0VHdvVmFsdWVzKGphdmEudXRpbC5MaXN0PFR5cGVCdWcuVmFsdWVIb2xkZXI8VD4+KScgaW4gJ1R5cGVCdWcnIGNhbm5vdCBiZSBhcHBsaWVkIHRvICcoamF2YS51dGlsLkxpc3Q8VHlwZUJ1Zy5WYWx1ZUhvbGRlcjw/Pj4pJyI+KG11bHRpTGlzdCk8L2Vycm9yPjsgLy9uZWVkIHRvIGJlIGhpZ2hsaWdodGVkCisKKyAgICAgICAgLy8gdGhpcyBsaW5lIGNhdXNlcyBhIENsYXNzQ2FzdEV4Y2VwdGlvbiB3aGVuIGNoZWNrZWQuCisgICAgICAgIEludGVnZXIgdmFsdWUgPSBpbnRIb2xkZXIudmFsdWU7CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbih2YWx1ZSk7CisgICAgfQorCisgICAgcHJpdmF0ZSBzdGF0aWMgPFQ+IHZvaWQgc3dhcEZpcnN0VHdvVmFsdWVzKExpc3Q8VmFsdWVIb2xkZXI8VD4+IG11bHRpTGlzdCkgeworICAgICAgICBWYWx1ZUhvbGRlcjxUPiBpbnRIb2xkZXIgPSBtdWx0aUxpc3QuZ2V0KDApOworICAgICAgICBWYWx1ZUhvbGRlcjxUPiBkb3VibGVIb2xkZXIgPSBtdWx0aUxpc3QuZ2V0KDEpOworCisgICAgICAgIGludEhvbGRlci52YWx1ZSA9IGRvdWJsZUhvbGRlci52YWx1ZTsKKyAgICB9Cit9CisKK2NsYXNzIE90aGVyQnVnIHsKK3B1YmxpYyBzdGF0aWMgdm9pZCBmb28oTGlzdDw/IGV4dGVuZHMgRm9vPiBmb29zKSB7CisgICAgZmluYWwgQ29tcGFyYXRvcjxGb28+IGNvbXBhcmF0b3IgPSBjcmVhdGVDb21wYXJhdG9yKCk7CisgICAgQ29sbGVjdGlvbnMuc29ydChmb29zLCBjb21wYXJhdG9yKTsgIC8vdGhpcyBjYWxsIGlzIE9LCisgIH0KKworICBwcml2YXRlIHN0YXRpYyBDb21wYXJhdG9yPEZvbz4gY3JlYXRlQ29tcGFyYXRvcigpIHsKKyAgICByZXR1cm4gbnVsbDsKKyAgfQorCisgIHB1YmxpYyBpbnRlcmZhY2UgRm9vIHsKKyAgfQorfQorCitjbGFzcyBPdGhlckJ1ZzEgeworICBwdWJsaWMgc3RhdGljIHZvaWQgZm9vKExpc3Q8PyBzdXBlciBGb28+IGZvb3MpIHsKKyAgICBmaW5hbCBDb21wYXJhdG9yPEZvbz4gY29tcGFyYXRvciA9IGNyZWF0ZUNvbXBhcmF0b3IoKTsKKyAgICBDb2xsZWN0aW9ucy5zb3J0PGVycm9yIGRlc2NyPSInc29ydChqYXZhLnV0aWwuTGlzdDxUPiwgamF2YS51dGlsLkNvbXBhcmF0b3I8PyBzdXBlciBUPiknIGluICdqYXZhLnV0aWwuQ29sbGVjdGlvbnMnIGNhbm5vdCBiZSBhcHBsaWVkIHRvICcoamF2YS51dGlsLkxpc3Q8Y2FwdHVyZTw/IHN1cGVyIE90aGVyQnVnMS5Gb28+PiwgamF2YS51dGlsLkNvbXBhcmF0b3I8T3RoZXJCdWcxLkZvbz4pJyI+KGZvb3MsIGNvbXBhcmF0b3IpPC9lcnJvcj47CisgIH0KKworICBwcml2YXRlIHN0YXRpYyBDb21wYXJhdG9yPEZvbz4gY3JlYXRlQ29tcGFyYXRvcigpIHsKKyAgICByZXR1cm4gbnVsbDsKKyAgfQorCisgIHB1YmxpYyBpbnRlcmZhY2UgRm9vIHsKKyAgfQorfQorCisvL0lERUFERVYtNzE4NworY2xhc3MgQUEgPEIgZXh0ZW5kcyBBQTxCLEM+LCBDIGV4dGVuZHMgQUE8QywgPz4+e30KKy8vZW5kIG9mIElERUFERVYtNzE4NworCisvL0lERUFERVYtODY5NworY2xhc3MgR2VuZXJpY1Rlc3Q5OTxFIGV4dGVuZHMgR2VuZXJpY1Rlc3Q5OTxFLCBGPixGPiB7Cit9CitjbGFzcyBHZW5lcmljVGVzdDk5RDxFIGV4dGVuZHMgR2VuZXJpY1Rlc3Q5OUQ8RT4+IGV4dGVuZHMgR2VuZXJpY1Rlc3Q5OTxFLERvdWJsZT4geworfQorY2xhc3MgVXNlOTk8VSBleHRlbmRzIEdlbmVyaWNUZXN0OTk8PyxGPixGPiB7Cit9CitjbGFzcyBVc2U5OW4gZXh0ZW5kcyBVc2U5OTxHZW5lcmljVGVzdDk5RDw/PixEb3VibGU+IHsKK30KKy8vZW5kIG9mIElERUFERVYtODY5NworCitjbGFzcyBJREVBNzkzNjAgeworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKE1hcDw/LCA/PiBtYXAsIE1hcDxPYmplY3QsIE9iamVjdD4gdGVzdCkgeworICAgICAgICBtYXAucHV0QWxsPGVycm9yIGRlc2NyPSIncHV0QWxsKGphdmEudXRpbC5NYXA8Y2FwdHVyZTw/PixjYXB0dXJlPD8+PiknIGluICdqYXZhLnV0aWwuTWFwJyBjYW5ub3QgYmUgYXBwbGllZCB0byAnKGphdmEudXRpbC5NYXA8amF2YS5sYW5nLk9iamVjdCxqYXZhLmxhbmcuT2JqZWN0PiknIj4odGVzdCk8L2Vycm9yPjsKKyAgICAgICAgbWFwLnB1dDxlcnJvciBkZXNjcj0iJ3B1dChjYXB0dXJlPD8+LCBjYXB0dXJlPD8+KScgaW4gJ2phdmEudXRpbC5NYXAnIGNhbm5vdCBiZSBhcHBsaWVkIHRvICcoamF2YS5sYW5nLlN0cmluZywgamF2YS5sYW5nLlN0cmluZyknIj4oIiIsICIiKTwvZXJyb3I+OworICAgICAgICBtYXAucHV0PGVycm9yIGRlc2NyPSIncHV0KGNhcHR1cmU8Pz4sIGNhcHR1cmU8Pz4pJyBpbiAnamF2YS51dGlsLk1hcCcgY2Fubm90IGJlIGFwcGxpZWQgdG8gJyhqYXZhLmxhbmcuT2JqZWN0LCBqYXZhLmxhbmcuT2JqZWN0KSciPihuZXcgT2JqZWN0KCksIG5ldyBPYmplY3QoKSk8L2Vycm9yPjsKKyAgICAgICAgbWFwID0gbmV3IEhhc2hNYXA8T2JqZWN0LCBPYmplY3Q+KHRlc3QpOworICAgIH0KK30KKworY2xhc3MgR2VuZXJpY0ZhaWx1cmVFeGFtcGxlIHsKKworIGludGVyZmFjZSBEZXNjcmlwdG9yPFQgZXh0ZW5kcyBDb21wYXJhYmxlPFQ+PiB7CisgICBDbGFzczxUPiBnZXRUeXBlKCk7CisgfQorCisgdm9pZCBpc01hcmtlZEZhdWx0eUJ1dENvbXBpbGVzQ2xlYW4oRGVzY3JpcHRvcjw/PiBuKSB7CisgICBiYXIobi5nZXRUeXBlKCkpOworIH0KKworIDxUIGV4dGVuZHMgQ29tcGFyYWJsZTxUPj4gdm9pZCBidXRUaGlzV29ya3MoRGVzY3JpcHRvcjxUPiBuKSB7CisgICBiYXIobi5nZXRUeXBlKCkpOworIH0KKworIDxUIGV4dGVuZHMgQ29tcGFyYWJsZTxUPj4gQ29tcGFyYXRvcjxUPiBiYXIoQ2xhc3M8VD4gdHlwZSkgeworICAgcmV0dXJuIG51bGw7CisgfQorfQorCisvL0lERUEtNjc2NzUKK2Fic3RyYWN0IGNsYXNzIEE2NzY3NTxUPgoreworICAgIGFic3RyYWN0IFQgZm9vKCk7Cit9CisKK2Fic3RyYWN0IGNsYXNzIEI2NzY3NTxUPiBleHRlbmRzIEE2NzY3NTxUW10+IHsgfQorCitjbGFzcyBDNjc2NzU8VCBleHRlbmRzIEI2NzY3NTw/Pj4KK3sKKyAgICB2b2lkIGZvbyhUIHgpCisgICAgeworICAgICAgICB4LmZvbygpWzBdID0gIiI7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvZ2VuZXJpY3NIaWdobGlnaHRpbmcvV2lkZW5pbmdDYXN0VG9UeXBlUGFyYW0uamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvZ2VuZXJpY3NIaWdobGlnaHRpbmcvV2lkZW5pbmdDYXN0VG9UeXBlUGFyYW0uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NjE1ZDcyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9nZW5lcmljc0hpZ2hsaWdodGluZy9XaWRlbmluZ0Nhc3RUb1R5cGVQYXJhbS5qYXZhCkBAIC0wLDAgKzEsNTEgQEAKK2ltcG9ydCBqYXZhLmxhbmcuRG91YmxlOworCitpbnRlcmZhY2UgSUNvbnZlcnRlcjxDPiB7Cit9CisKK2Fic3RyYWN0IGNsYXNzIEFic3RyYWN0TnVtYmVyQ29udmVydGVyPE4gZXh0ZW5kcyBOdW1iZXI+IGltcGxlbWVudHMgSUNvbnZlcnRlcjxOPiB7Cit9CisKK2NsYXNzIERvdWJsZUNvbnZlcnRlciBleHRlbmRzIEFic3RyYWN0TnVtYmVyQ29udmVydGVyPERvdWJsZT4geworfQorCitwdWJsaWMgY2xhc3MgVGVzdCB7CisgIHB1YmxpYyBzdGF0aWMgPEM+IElDb252ZXJ0ZXI8Qz4gZ2V0Q29udmVydGVyKENsYXNzPEM+IHR5cGUpIHsKKyAgICByZXR1cm4gKElDb252ZXJ0ZXI8Qz4pbmV3IERvdWJsZUNvbnZlcnRlcigpIHsKKyAgICB9OworICB9CisKKyAgcHVibGljIHN0YXRpYyA8QyBleHRlbmRzIFN0cmluZz4gSUNvbnZlcnRlcjxDPiBnZXRDb252ZXJ0ZXIxKENsYXNzPEM+IHR5cGUpIHsKKyAgICByZXR1cm4gPGVycm9yIGRlc2NyPSJJbmNvbnZlcnRpYmxlIHR5cGVzOyBjYW5ub3QgY2FzdCAnRG91YmxlQ29udmVydGVyJyB0byAnSUNvbnZlcnRlcjxDPiciPihJQ29udmVydGVyPEM+KW5ldyBEb3VibGVDb252ZXJ0ZXIoKSB7CisgICAgfTwvZXJyb3I+OworICB9CisKKyAgcHVibGljIHN0YXRpYyA8QyBleHRlbmRzIERvdWJsZT4gSUNvbnZlcnRlcjxDPiBnZXRDb252ZXJ0ZXIyKENsYXNzPEM+IHR5cGUpIHsKKyAgICByZXR1cm4gKElDb252ZXJ0ZXI8Qz4pbmV3IERvdWJsZUNvbnZlcnRlcigpIHsKKyAgICB9OworICB9CisKKyAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgeworICAgIElDb252ZXJ0ZXI8U3RyaW5nPiBjb252ZXJ0ZXIgPSBnZXRDb252ZXJ0ZXIoU3RyaW5nLmNsYXNzKTsKKyAgICBJQ29udmVydGVyPFN0cmluZz4gY29udmVydGVyMSA9IGdldENvbnZlcnRlcjEoU3RyaW5nLmNsYXNzKTsKKyAgICBJQ29udmVydGVyPFN0cmluZz4gY29udmVydGVyMiA9IDxlcnJvciBkZXNjcj0iSW5mZXJyZWQgdHlwZSAnamF2YS5sYW5nLlN0cmluZycgZm9yIHR5cGUgcGFyYW1ldGVyICdDJyBpcyBub3Qgd2l0aGluIGl0cyBib3VuZDsgc2hvdWxkIGV4dGVuZCAnamF2YS5sYW5nLkRvdWJsZSciPmdldENvbnZlcnRlcjIoU3RyaW5nLmNsYXNzKTwvZXJyb3I+OworICB9Cit9CisKKworY2xhc3MgWiB7CisKK30KKworY2xhc3MgVGVzdE5vbk5hcnJvd2luZ0NvbnZlcnNpb248VCBleHRlbmRzIFo+IHsKKyAgICBwdWJsaWMgVGVzdE5vbk5hcnJvd2luZ0NvbnZlcnNpb24oVCB1KSB7CisKKyAgICB9CisKKyAgICBwdWJsaWMgVCB6ID0gbnVsbDsKKworICAgIHB1YmxpYyBpbnQgYSgpIHsKKyAgICAgICAgPGVycm9yIGRlc2NyPSJJbmNvbXBhdGlibGUgdHlwZXMuIEZvdW5kOiAnVGVzdE5vbk5hcnJvd2luZ0NvbnZlcnNpb248Wj4nLCByZXF1aXJlZDogJ1Rlc3ROb25OYXJyb3dpbmdDb252ZXJzaW9uPFQ+JyI+VGVzdE5vbk5hcnJvd2luZ0NvbnZlcnNpb248VD4geCA9IG5ldyBUZXN0Tm9uTmFycm93aW5nQ29udmVyc2lvbjxaPihuZXcgWigpKTs8L2Vycm9yPgorICAgICAgICByZXR1cm4gMTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2dlbmVyaWNzSGlnaGxpZ2h0aW5nL1dpbGRjYXJkQ2FzdENvbnZlcnNpb24uamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvZ2VuZXJpY3NIaWdobGlnaHRpbmcvV2lsZGNhcmRDYXN0Q29udmVyc2lvbi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFjOGQ1M2IKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2dlbmVyaWNzSGlnaGxpZ2h0aW5nL1dpbGRjYXJkQ2FzdENvbnZlcnNpb24uamF2YQpAQCAtMCwwICsxLDUzMiBAQAorcHVibGljIGNsYXNzIFRlc3QgeworICBpbnRlcmZhY2UgQSB7fQorICBpbnRlcmZhY2UgQiB7fQorCisgLy8/IGV4dGVuZHMgQSwgPyBleHRlbmRzIEIgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICB2b2lkIHRlc3RFRTEoKSB7CisgICAgICAgIGNsYXNzIEEge30KKyAgICAgICAgY2xhc3MgQiB7fQorCisgICAgICAgIFc8PyBleHRlbmRzIEE+IHh4ID0gbnVsbDsKKyAgICAgICAgVzw/IGV4dGVuZHMgQj4geSA9IDxlcnJvciBkZXNjcj0iSW5jb252ZXJ0aWJsZSB0eXBlczsgY2Fubm90IGNhc3QgJ1c8Y2FwdHVyZTw/IGV4dGVuZHMgQT4+JyB0byAnVzw/IGV4dGVuZHMgQj4nIj4oVzw/IGV4dGVuZHMgQj4pIHh4PC9lcnJvcj47CisgICAgfQorCisgICAgdm9pZCB0ZXN0RUUyKCkgeworICAgICAgICBjbGFzcyBBIHt9CisgICAgICAgIGNsYXNzIEIgZXh0ZW5kcyBBIHt9CisKKyAgICAgICAgVzw/IGV4dGVuZHMgQT4geHggPSBudWxsOworICAgICAgICBXPD8gZXh0ZW5kcyBCPiB5ID0gKFc8PyBleHRlbmRzIEI+KSB4eDsKKyAgICB9CisKKyAgICB2b2lkIHRlc3RFRTIxKCkgeworICAgICAgICBjbGFzcyBBIHt9CisgICAgICAgIGNsYXNzIEIgZXh0ZW5kcyBBIHt9CisKKyAgICAgICAgVzw/IGV4dGVuZHMgQj4geHggPSBudWxsOworICAgICAgICBXPD8gZXh0ZW5kcyBBPiB5ID0gKFc8PyBleHRlbmRzIEE+KSB4eDsKKyAgICB9CisKKyAgICB2b2lkIHRlc3RFRTIxMSgpIHsKKyAgICAgICAgY2xhc3MgQSB7fQorICAgICAgICBmaW5hbCBjbGFzcyBCIGV4dGVuZHMgQSB7fQorCisgICAgICAgIFc8PyBleHRlbmRzIEE+IHh4ID0gbnVsbDsKKyAgICAgICAgVzw/IGV4dGVuZHMgQj4geSA9IChXPD8gZXh0ZW5kcyBCPikgeHg7CisgICAgfQorCisgICAgdm9pZCB0ZXN0M0VFKCkgeworICAgICAgICBXPD8gZXh0ZW5kcyBBPiB4eCA9IG51bGw7CisgICAgICAgIFc8PyBleHRlbmRzIEI+IHkgPSAoVzw/IGV4dGVuZHMgQj4pIHh4OworICAgIH0KKworICAgIHZvaWQgdGVzdDRFRSgpIHsKKyAgICAgICAgY2xhc3MgQSB7fQorICAgICAgICBXPD8gZXh0ZW5kcyBBPiB4eCA9IG51bGw7CisgICAgICAgIFc8PyBleHRlbmRzIEI+IHkgPSAoVzw/IGV4dGVuZHMgQj4pIHh4OworICAgIH0KKworICAgIHZvaWQgdGVzdDQxRUUoKSB7CisgICAgICAgIGNsYXNzIEEge30KKyAgICAgICAgVzw/IGV4dGVuZHMgQj4geHggPSBudWxsOworICAgICAgICBXPD8gZXh0ZW5kcyBBPiB5ID0gKFc8PyBleHRlbmRzIEE+KSB4eDsKKyAgICB9CisKKyAgICB2b2lkIHRlc3Q0MTFFRSgpIHsKKyAgICAgICAgZmluYWwgY2xhc3MgQSB7fQorICAgICAgICBXPD8gZXh0ZW5kcyBCPiB4eCA9IG51bGw7CisgICAgICAgIFc8PyBleHRlbmRzIEE+IHkgPSA8ZXJyb3IgZGVzY3I9IkluY29udmVydGlibGUgdHlwZXM7IGNhbm5vdCBjYXN0ICdXPGNhcHR1cmU8PyBleHRlbmRzIFRlc3QuQj4+JyB0byAnVzw/IGV4dGVuZHMgQT4nIj4oVzw/IGV4dGVuZHMgQT4pIHh4PC9lcnJvcj47CisgICAgfQorCisgICAgdm9pZCB0ZXN0NDEyRUUoKSB7CisgICAgICAgIGZpbmFsIGNsYXNzIEEgaW1wbGVtZW50cyBCIHt9CisgICAgICAgIFc8PyBleHRlbmRzIEI+IHh4ID0gbnVsbDsKKyAgICAgICAgVzw/IGV4dGVuZHMgQT4geSA9IChXPD8gZXh0ZW5kcyBBPikgeHg7CisgICAgfQorCisgICAgdm9pZCB0ZXN0MSgpIHsKKyAgICAgICAgY2xhc3MgQSB7fQorICAgICAgICBjbGFzcyBCIHt9CisKKyAgICAgICAgVzw/IHN1cGVyIEE+IHh4ID0gbnVsbDsKKyAgICAgICAgVzw/IHN1cGVyIEI+IHkgPSAoVzw/IHN1cGVyIEI+KSB4eDsKKyAgICB9CisKKyAgICB2b2lkIHRlc3QyKCkgeworICAgICAgICBmaW5hbCBjbGFzcyBBIHt9CisgICAgICAgIGZpbmFsIGNsYXNzIEIge30KKworICAgICAgICBXPD8gc3VwZXIgQT4geHggPSBudWxsOworICAgICAgICBXPD8gc3VwZXIgQj4geSA9IChXPD8gc3VwZXIgQj4pIHh4OworICAgIH0KKworICAgLy8/IHN1cGVyIEEsID8gc3VwZXIgQiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgdm9pZCB0ZXN0M1NTKCkgeworICAgICAgICBXPD8gc3VwZXIgQT4geHggPSBudWxsOworICAgICAgICBXPD8gc3VwZXIgQj4geSA9IChXPD8gc3VwZXIgQj4pIHh4OworICAgIH0KKworICAvLz8gZXh0ZW5kcyBBLCA/IHN1cGVyIEIgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIHZvaWQgdGVzdDFFUygpIHsKKyAgICAgICAgY2xhc3MgQSB7fQorICAgICAgICBjbGFzcyBCIHt9CisKKyAgICAgICAgVzw/IGV4dGVuZHMgQT4geCA9IG51bGw7CisgICAgICAgIFc8PyBzdXBlciBCPiB5ID0gPGVycm9yIGRlc2NyPSJJbmNvbnZlcnRpYmxlIHR5cGVzOyBjYW5ub3QgY2FzdCAnVzxjYXB0dXJlPD8gZXh0ZW5kcyBBPj4nIHRvICdXPD8gc3VwZXIgQj4nIj4oVzw/IHN1cGVyIEI+KSB4PC9lcnJvcj47CisgICAgfQorCisgICAgdm9pZCB0ZXN0MkVTKCkgeworICAgICAgICBjbGFzcyBBIHt9CisgICAgICAgIGNsYXNzIEIgZXh0ZW5kcyBBIHt9CisKKyAgICAgICAgVzw/IGV4dGVuZHMgQT4geCA9IG51bGw7CisgICAgICAgIFc8PyBzdXBlciBCPiB5ID0gKFc8PyBzdXBlciBCPikgeDsKKyAgICB9CisKKyAgICB2b2lkIHRlc3QzRVMoKSB7CisgICAgICAgIGNsYXNzIEEge30KKyAgICAgICAgY2xhc3MgQiBleHRlbmRzIEEge30KKworICAgICAgICBXPD8gZXh0ZW5kcyBCPiB4ID0gbnVsbDsKKyAgICAgICAgVzw/IHN1cGVyIEE+IHkgPSA8ZXJyb3IgZGVzY3I9IkluY29udmVydGlibGUgdHlwZXM7IGNhbm5vdCBjYXN0ICdXPGNhcHR1cmU8PyBleHRlbmRzIEI+PicgdG8gJ1c8PyBzdXBlciBBPiciPihXPD8gc3VwZXIgQT4pIHg8L2Vycm9yPjsKKyAgICB9CisKKworICAgIHZvaWQgdGVzdDRFUygpIHsKKyAgICAgICAgVzw/IGV4dGVuZHMgQj4geCA9IG51bGw7CisgICAgICAgIFc8PyBzdXBlciBBPiB5ID0gPGVycm9yIGRlc2NyPSJJbmNvbnZlcnRpYmxlIHR5cGVzOyBjYW5ub3QgY2FzdCAnVzxjYXB0dXJlPD8gZXh0ZW5kcyBUZXN0LkI+PicgdG8gJ1c8PyBzdXBlciBUZXN0LkE+JyI+KFc8PyBzdXBlciBBPikgeDwvZXJyb3I+OworICAgIH0KKworICAgIHZvaWQgdGVzdDVFUygpIHsKKyAgICAgICAgZmluYWwgY2xhc3MgQiBpbXBsZW1lbnRzIEEge30KKworICAgICAgICBXPD8gZXh0ZW5kcyBBPiB4ID0gbnVsbDsKKyAgICAgICAgVzw/IHN1cGVyIEI+IHkgPSAoVzw/IHN1cGVyIEI+KSB4OworICAgIH0KKworICAgIHZvaWQgdGVzdDZFUygpIHsKKyAgICAgICAgZmluYWwgY2xhc3MgQiBpbXBsZW1lbnRzIEEge30KKworICAgICAgICBXPD8gZXh0ZW5kcyBCPiB4ID0gbnVsbDsKKyAgICAgICAgVzw/IHN1cGVyIEE+IHkgPSA8ZXJyb3IgZGVzY3I9IkluY29udmVydGlibGUgdHlwZXM7IGNhbm5vdCBjYXN0ICdXPGNhcHR1cmU8PyBleHRlbmRzIEI+PicgdG8gJ1c8PyBzdXBlciBUZXN0LkE+JyI+KFc8PyBzdXBlciBBPikgeDwvZXJyb3I+OworICAgIH0KKworICAvLyA/IGV4dGVuZHMgQSwgQiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIHZvaWQgdGVzdDFFV0MoKSB7CisgICAgICAgIGNsYXNzIEEgeworICAgICAgICB9CisgICAgICAgIGNsYXNzIEIgeworICAgICAgICB9CisKKyAgICAgICAgVzw/IGV4dGVuZHMgQT4geHggPSBudWxsOworICAgICAgICBXPEI+IHkgPSA8ZXJyb3IgZGVzY3I9IkluY29udmVydGlibGUgdHlwZXM7IGNhbm5vdCBjYXN0ICdXPGNhcHR1cmU8PyBleHRlbmRzIEE+PicgdG8gJ1c8Qj4nIj4oVzxCPikgeHg8L2Vycm9yPjsKKyAgICB9CisKKyAgICB2b2lkIHRlc3QyRVdDKCkgeworICAgICAgICBjbGFzcyBBIHsKKyAgICAgICAgfQorCisgICAgICAgIFc8PyBleHRlbmRzIEE+IHh4ID0gbnVsbDsKKyAgICAgICAgVzw/PiB5ID0gKFc8Pz4pIHh4OworICAgIH0KKworICAgIHZvaWQgdGVzdDNFV0MoKSB7CisgICAgICAgIGNsYXNzIEEgeworICAgICAgICB9CisgICAgICAgIGNsYXNzIEIgZXh0ZW5kcyBBIHsKKyAgICAgICAgfQorCisgICAgICAgIFc8PyBleHRlbmRzIEE+IHh4ID0gbnVsbDsKKyAgICAgICAgVzxCPiB5ID0gKFc8Qj4pIHh4OworICAgIH0KKworICAvLyA/IHN1cGVyIEEsIEIgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICB2b2lkIHRlc3QxU1dDKCkgeworICAgICAgICBjbGFzcyBBIHsKKyAgICAgICAgfQorICAgICAgICBjbGFzcyBCIHsKKyAgICAgICAgfQorCisgICAgICAgIFc8PyBzdXBlciBBPiB4eCA9IG51bGw7CisgICAgICAgIFc8Qj4geSA9IDxlcnJvciBkZXNjcj0iSW5jb252ZXJ0aWJsZSB0eXBlczsgY2Fubm90IGNhc3QgJ1c8Y2FwdHVyZTw/IHN1cGVyIEE+PicgdG8gJ1c8Qj4nIj4oVzxCPikgeHg8L2Vycm9yPjsKKyAgICB9CisKKyAgICB2b2lkIHRlc3QyU1dDKCkgeworICAgICAgICBjbGFzcyBBIHsKKyAgICAgICAgfQorCisgICAgICAgIFc8PyBzdXBlciBBPiB4eCA9IG51bGw7CisgICAgICAgIFc8Pz4geSA9IChXPD8+KSB4eDsKKyAgICB9CisKKyAgICB2b2lkIHRlc3QzU1dDKCkgeworICAgICAgICBjbGFzcyBBIHsKKyAgICAgICAgfQorICAgICAgICBjbGFzcyBCIGV4dGVuZHMgQSB7CisgICAgICAgIH0KKworICAgICAgICBXPD8gc3VwZXIgQj4geHggPSBudWxsOworICAgICAgICBXPEE+IHkgPSAoVzxBPikgeHg7CisgICAgfQorCisgIC8vID8sID8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgIHZvaWQgdGVzdDFXV1coKSB7CisgICAgVzw/PiB4eCA9IG51bGw7CisgICAgVzw/PiB5ID0geHg7CisgIH0KKworICAvLz8gZXh0ZW5kcyBQPD8gZXh0ZW5kcyBBPiwgQiAtLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgdm9pZCB0ZXN0MUVFV0MoKSB7CisgICAgICAgIGNsYXNzIEEgeworICAgICAgICB9CisgICAgICAgIGNsYXNzIEIgeworICAgICAgICB9CisKKyAgICAgICAgVzw/IGV4dGVuZHMgUDw/IGV4dGVuZHMgQT4+IHh4ID0gbnVsbDsKKyAgICAgICAgVzw/IGV4dGVuZHMgQj4geSA9IDxlcnJvciBkZXNjcj0iSW5jb252ZXJ0aWJsZSB0eXBlczsgY2Fubm90IGNhc3QgJ1c8Y2FwdHVyZTw/IGV4dGVuZHMgUDw/IGV4dGVuZHMgQT4+PicgdG8gJ1c8PyBleHRlbmRzIEI+JyI+KFc8PyBleHRlbmRzIEI+KSB4eDwvZXJyb3I+OworICAgIH0KKworICAgIHZvaWQgdGVzdDJFRVdDKCkgeworICAgICAgICBjbGFzcyBBIHsKKyAgICAgICAgfQorICAgICAgICBjbGFzcyBCIGV4dGVuZHMgUCB7CisgICAgICAgIH0KKworICAgICAgICBXPD8gZXh0ZW5kcyBQPD8gZXh0ZW5kcyBBPj4geHggPSBudWxsOworICAgICAgICBXPD8gZXh0ZW5kcyBCPiB5ID0gKFc8PyBleHRlbmRzIEI+KSB4eDsKKyAgICB9CisKKyAgICAgdm9pZCB0ZXN0M0VFV0MoKSB7CisgICAgICAgIGNsYXNzIEEgeworICAgICAgICB9CisgICAgICAgIGNsYXNzIEI8VEI+IGV4dGVuZHMgUDxUQj4geworICAgICAgICB9CisKKyAgICAgICAgVzw/IGV4dGVuZHMgUDw/IGV4dGVuZHMgQT4+IHh4ID0gbnVsbDsKKyAgICAgICAgVzw/IGV4dGVuZHMgQjw/IHN1cGVyIEE+PiB5ID0gKFc8PyBleHRlbmRzIEI8PyBzdXBlciBBPj4pIHh4OworICAgIH0KKworCisgICAgIHZvaWQgdGVzdDRFRVdDKCkgeworICAgICAgICBjbGFzcyBBIHsKKyAgICAgICAgfQorICAgICAgICBjbGFzcyBCPFRCPiBleHRlbmRzIFA8VEI+IHsKKyAgICAgICAgfQorCisgICAgICAgIFc8PyBleHRlbmRzIFA8PyBleHRlbmRzIEE+PiB4eCA9IG51bGw7CisgICAgICAgIFc8PyBleHRlbmRzIEI8Pz4+IHkgPSAoVzw/IGV4dGVuZHMgQjw/Pj4pIHh4OworICAgIH0KKworICAgIHZvaWQgdGVzdDVFRVdDKCkgeworICAgICAgICBjbGFzcyBBIHsKKyAgICAgICAgfQorICAgICAgICBjbGFzcyBCPFRCPiBleHRlbmRzIFA8VEI+IHsKKyAgICAgICAgfQorICAgICAgICBjbGFzcyBDIHt9CisKKyAgICAgICAgVzw/IGV4dGVuZHMgUDw/IGV4dGVuZHMgQT4+IHh4ID0gbnVsbDsKKyAgICAgICAgVzw/IGV4dGVuZHMgQjw/IGV4dGVuZHMgQz4+IHkgPSAoVzw/IGV4dGVuZHMgQjw/IGV4dGVuZHMgQz4+KSB4eDsKKyAgICB9CisKKyAgLy9BcnJheSBUeXBlcyBpbnNpZGUgd2lsZGNhcmRzCisgIHZvaWQgdGVzdDFBRSgpIHsKKyAgICAgICAgY2xhc3MgQSB7fQorICAgICAgICBjbGFzcyBCIHt9CisKKyAgICAgICAgVzw/IGV4dGVuZHMgQVtdPiB4eCA9IG51bGw7CisgICAgICAgIFc8PyBleHRlbmRzIEJbXT4geSA9IDxlcnJvciBkZXNjcj0iSW5jb252ZXJ0aWJsZSB0eXBlczsgY2Fubm90IGNhc3QgJ1c8Y2FwdHVyZTw/IGV4dGVuZHMgQVtdPj4nIHRvICdXPD8gZXh0ZW5kcyBCW10+JyI+KFc8PyBleHRlbmRzIEJbXT4pIHh4PC9lcnJvcj47CisgICAgfQorCisgICAgdm9pZCB0ZXN0MTFBRSgpIHsKKyAgICAgICAgY2xhc3MgQSB7fQorICAgICAgICBjbGFzcyBCIHt9CisKKyAgICAgICAgVzw/IGV4dGVuZHMgQVtdPiB4eCA9IG51bGw7CisgICAgICAgIFc8PyBleHRlbmRzIEI+IHkgPSA8ZXJyb3IgZGVzY3I9IkluY29udmVydGlibGUgdHlwZXM7IGNhbm5vdCBjYXN0ICdXPGNhcHR1cmU8PyBleHRlbmRzIEFbXT4+JyB0byAnVzw/IGV4dGVuZHMgQj4nIj4oVzw/IGV4dGVuZHMgQj4pIHh4PC9lcnJvcj47CisgICAgfQorCisgICAgIHZvaWQgdGVzdDJBRSgpIHsKKyAgICAgICAgY2xhc3MgQSB7fQorICAgICAgICBjbGFzcyBCIGV4dGVuZHMgQSB7fQorCisgICAgICAgIFc8PyBleHRlbmRzIEFbXT4geHggPSBudWxsOworICAgICAgICBXPD8gZXh0ZW5kcyBCW10+IHkgPSAoVzw/IGV4dGVuZHMgQltdPikgeHg7CisgICAgfQorCisgICAgdm9pZCB0ZXN0MjFBRSgpIHsKKyAgICAgICAgY2xhc3MgQSB7fQorICAgICAgICBjbGFzcyBCIGV4dGVuZHMgQSB7fQorCisgICAgICAgIFc8PyBleHRlbmRzIEFbXT4geHggPSBudWxsOworICAgICAgICBXPD8gZXh0ZW5kcyBCPiB5ID0gPGVycm9yIGRlc2NyPSJJbmNvbnZlcnRpYmxlIHR5cGVzOyBjYW5ub3QgY2FzdCAnVzxjYXB0dXJlPD8gZXh0ZW5kcyBBW10+PicgdG8gJ1c8PyBleHRlbmRzIEI+JyI+KFc8PyBleHRlbmRzIEI+KSB4eDwvZXJyb3I+OworICAgIH0KKworCisKKyAgICB2b2lkIHRlc3RJbnRBRSgpIHsKKworICAgICAgICBXPD8gZXh0ZW5kcyBBW10+IHh4ID0gbnVsbDsKKyAgICAgICAgVzw/IGV4dGVuZHMgQltdPiB5ID0gKFc8PyBleHRlbmRzIEJbXT4pIHh4OworICAgIH0KKworICAgIHZvaWQgdGVzdEludDFBRSgpIHsKKworICAgICAgICBXPD8gZXh0ZW5kcyBBW10+IHh4ID0gbnVsbDsKKyAgICAgICAgVzw/IGV4dGVuZHMgQltdW10+IHkgPSA8ZXJyb3IgZGVzY3I9IkluY29udmVydGlibGUgdHlwZXM7IGNhbm5vdCBjYXN0ICdXPGNhcHR1cmU8PyBleHRlbmRzIFRlc3QuQVtdPj4nIHRvICdXPD8gZXh0ZW5kcyBUZXN0LkJbXVtdPiciPihXPD8gZXh0ZW5kcyBCW11bXT4pIHh4PC9lcnJvcj47CisgICAgfQorCisgICAgdm9pZCB0ZXN0QVNTKCkgeworICAgICAgICBjbGFzcyBBIHt9CisgICAgICAgIGNsYXNzIEIge30KKworICAgICAgICBXPD8gc3VwZXIgQVtdPiB4eCA9IG51bGw7CisgICAgICAgIFc8PyBzdXBlciBCW10+IHkgPSAoVzw/IHN1cGVyIEJbXT4pIHh4OworICAgIH0KKworICAgIHZvaWQgdGVzdDFBRVMoKSB7CisgICAgICAgIGNsYXNzIEEge30KKyAgICAgICAgY2xhc3MgQiB7fQorCisgICAgICAgIFc8PyBleHRlbmRzIEFbXT4geCA9IG51bGw7CisgICAgICAgIFc8PyBzdXBlciBCW10+IHkgPSA8ZXJyb3IgZGVzY3I9IkluY29udmVydGlibGUgdHlwZXM7IGNhbm5vdCBjYXN0ICdXPGNhcHR1cmU8PyBleHRlbmRzIEFbXT4+JyB0byAnVzw/IHN1cGVyIEJbXT4nIj4oVzw/IHN1cGVyIEJbXT4pIHg8L2Vycm9yPjsKKyAgICB9CisKKyAgICB2b2lkIHRlc3QyQUVTKCkgeworICAgICAgICBjbGFzcyBBIHt9CisgICAgICAgIGNsYXNzIEIgZXh0ZW5kcyBBIHt9CisKKyAgICAgICAgVzw/IGV4dGVuZHMgQVtdPiB4ID0gbnVsbDsKKyAgICAgICAgVzw/IHN1cGVyIEJbXT4geSA9IChXPD8gc3VwZXIgQltdPikgeDsKKyAgICB9CisKKyAgICB2b2lkIHRlc3QzQUVTKCkgeworICAgICAgICBjbGFzcyBBIHt9CisgICAgICAgIGNsYXNzIEIgZXh0ZW5kcyBBIHt9CisKKyAgICAgICAgVzw/IGV4dGVuZHMgQltdPiB4ID0gbnVsbDsKKyAgICAgICAgVzw/IHN1cGVyIEFbXT4geSA9IDxlcnJvciBkZXNjcj0iSW5jb252ZXJ0aWJsZSB0eXBlczsgY2Fubm90IGNhc3QgJ1c8Y2FwdHVyZTw/IGV4dGVuZHMgQltdPj4nIHRvICdXPD8gc3VwZXIgQVtdPiciPihXPD8gc3VwZXIgQVtdPikgeDwvZXJyb3I+OworICAgIH0KKworCisKKyAgICB2b2lkIHRlc3Q0QUVTKCkgeworICAgICAgICBXPD8gZXh0ZW5kcyBCW10+IHggPSBudWxsOworICAgICAgICBXPD8gc3VwZXIgQVtdPiB5ID0gPGVycm9yIGRlc2NyPSJJbmNvbnZlcnRpYmxlIHR5cGVzOyBjYW5ub3QgY2FzdCAnVzxjYXB0dXJlPD8gZXh0ZW5kcyBUZXN0LkJbXT4+JyB0byAnVzw/IHN1cGVyIFRlc3QuQVtdPiciPihXPD8gc3VwZXIgQVtdPikgeDwvZXJyb3I+OworICAgIH0KKworICAgIHZvaWQgdGVzdDVBRVMoKSB7CisgICAgICAgIGZpbmFsIGNsYXNzIEIgaW1wbGVtZW50cyBBIHt9CisKKyAgICAgICAgVzw/IGV4dGVuZHMgQVtdPiB4ID0gbnVsbDsKKyAgICAgICAgVzw/IHN1cGVyIEJbXT4geSA9IChXPD8gc3VwZXIgQltdPikgeDsKKyAgICB9CisKKyAgICB2b2lkIHRlc3Q2QUVTKCkgeworICAgICAgICBmaW5hbCBjbGFzcyBCIGltcGxlbWVudHMgQSB7fQorCisgICAgICAgIFc8PyBleHRlbmRzIEJbXT4geCA9IG51bGw7CisgICAgICAgIFc8PyBzdXBlciBBW10+IHkgPSA8ZXJyb3IgZGVzY3I9IkluY29udmVydGlibGUgdHlwZXM7IGNhbm5vdCBjYXN0ICdXPGNhcHR1cmU8PyBleHRlbmRzIEJbXT4+JyB0byAnVzw/IHN1cGVyIFRlc3QuQVtdPiciPihXPD8gc3VwZXIgQVtdPikgeDwvZXJyb3I+OworICAgIH0KKworICAvLyB0eXBlIHBhcmFtZXRlcnMgZXh0ZW5zaW9uczogRDxUIGV4dGVuZHMgQT4KKyAgdm9pZCB0ZXN0VDMoKSB7CisgICAgICAgIGNsYXNzIEEgeworICAgICAgICB9CisgICAgICAgIGNsYXNzIEQ8VCBleHRlbmRzIEEgPiB7CisgICAgICAgICAgICBjbGFzcyBCIGV4dGVuZHMgQSB7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZvaWQgZm9vKCkgeworICAgICAgICAgICAgICAgIEQ8PyBleHRlbmRzIFQ+IHggPSBudWxsOworICAgICAgICAgICAgICAgIEQ8PyBleHRlbmRzIEI+IHkgPSAoRDw/IGV4dGVuZHMgQj4pIHg7CisgICAgICAgICAgICB9CisKKyAgICAgICAgfQorCisgICAgfQorCisgICAgdm9pZCB0ZXN0VDQoKSB7CisgICAgICAgIGNsYXNzIEEgeworICAgICAgICB9CisgICAgICAgIGNsYXNzIEQ8VCBleHRlbmRzIEE+IHsKKyAgICAgICAgICAgIGNsYXNzIEIgeworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2b2lkIGZvbygpIHsKKyAgICAgICAgICAgICAgICBEPD8gZXh0ZW5kcyBUPiB4ID0gbnVsbDsKKyAgICAgICAgICAgICAgICBEPDxlcnJvciBkZXNjcj0iVHlwZSBwYXJhbWV0ZXIgJz8gZXh0ZW5kcyBCJyBpcyBub3Qgd2l0aGluIGl0cyBib3VuZDsgc2hvdWxkIGV4dGVuZCAnQSciPj8gZXh0ZW5kcyBCPC9lcnJvcj4+IHkgPSAoRDw8ZXJyb3IgZGVzY3I9IlR5cGUgcGFyYW1ldGVyICc/IGV4dGVuZHMgQicgaXMgbm90IHdpdGhpbiBpdHMgYm91bmQ7IHNob3VsZCBleHRlbmQgJ0EnIj4/IGV4dGVuZHMgQjwvZXJyb3I+PikgeDsKKyAgICAgICAgICAgIH0KKworICAgICAgICB9CisKKyAgICB9CisKKworICAgIHZvaWQgdGVzdFQ1KCkgeworICAgICAgICAgICBjbGFzcyBEPFQ+IHsKKyAgICAgICAgICAgICAgIGNsYXNzIEIgeworICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICB2b2lkIGZvbygpIHsKKyAgICAgICAgICAgICAgICAgICBEPD8gZXh0ZW5kcyBUPiB4ID0gbnVsbDsKKyAgICAgICAgICAgICAgICAgICBEPD8gZXh0ZW5kcyBCPiB5ID0gKEQ8PyBleHRlbmRzIEI+KSB4OworICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgIH0KKworICAgICAgIH0KKworICAgIHZvaWQgdGVzdFQ2KCkgeworICAgICAgICBjbGFzcyBBIHsKKyAgICAgICAgfQorICAgICAgICBjbGFzcyBEPFQgZXh0ZW5kcyBBPiB7CisgICAgICAgICAgICBjbGFzcyBCIGV4dGVuZHMgQSB7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZvaWQgZm9vKCkgeworICAgICAgICAgICAgICAgIEQ8PyBzdXBlciBUPiB4ID0gbnVsbDsKKyAgICAgICAgICAgICAgICBEPD8gc3VwZXIgQj4geSA9IChEPD8gIHN1cGVyIEI+KSB4OworICAgICAgICAgICAgfQorCisgICAgICAgIH0KKworICAgIH0KKworICAgICB2b2lkIHRlc3RUNygpIHsKKyAgICAgICAgY2xhc3MgQSB7CisgICAgICAgIH0KKyAgICAgICAgY2xhc3MgRDxUIGV4dGVuZHMgQT4geworICAgICAgICAgICAgY2xhc3MgQiBleHRlbmRzIEEgeworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2b2lkIGZvbygpIHsKKyAgICAgICAgICAgICAgICBEPD8gZXh0ZW5kcyBUPiB4ID0gbnVsbDsKKyAgICAgICAgICAgICAgICBEPD8gc3VwZXIgQj4geSA9IChEPD8gIHN1cGVyIEI+KSB4OworICAgICAgICAgICAgfQorCisgICAgICAgIH0KKworICAgIH0KKworICAgICB2b2lkIHRlc3RUOCgpIHsKKyAgICAgICAgY2xhc3MgQSB7CisgICAgICAgIH0KKyAgICAgICAgY2xhc3MgRDxUIGV4dGVuZHMgQT4geworICAgICAgICAgICAgY2xhc3MgQiBleHRlbmRzIEEgeworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2b2lkIGZvbygpIHsKKyAgICAgICAgICAgICAgICBEPD8gc3VwZXIgVD4geCA9IG51bGw7CisgICAgICAgICAgICAgICAgRDw/IGV4dGVuZHMgQj4geSA9IChEPD8gZXh0ZW5kcyBCPikgeDsKKyAgICAgICAgICAgIH0KKworICAgICAgICB9CisKKyAgICB9CisKKyAgICAgdm9pZCB0ZXN0VDkoKSB7CisgICAgICAgIGNsYXNzIEEgeworICAgICAgICB9CisgICAgICAgIGNsYXNzIEQ8VD4geworICAgICAgICAgICAgY2xhc3MgQiBleHRlbmRzIEEgeworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2b2lkIGZvbygpIHsKKyAgICAgICAgICAgICAgICBEPD8gc3VwZXIgVD4geCA9IG51bGw7CisgICAgICAgICAgICAgICAgRDw/IGV4dGVuZHMgQT4geSA9IChEPD8gZXh0ZW5kcyBCPikgeDsKKyAgICAgICAgICAgIH0KKworICAgICAgICB9CisKKyAgICB9CisKKyAgICB2b2lkIHRlc3RVbmJvdW5kZWQoKSB7CisgICAgICBXPD8+IHggPSBudWxsOworICAgICAgVzw/IGV4dGVuZHMgQT4geSA9ICggVzw/IGV4dGVuZHMgQT4pIHg7CisgICAgICBXPD8+IHkxID0gKFc8Pz4peDsKKyAgICB9CisKKyAgICB2b2lkIHRlc3RUeXBlUGFyYW1zKCkgeworICAgICAgY2xhc3MgTXlDbGFzczxLLCBWPiB7CisgICAgICAgIE15Q2xhc3M8SywgVj4gY29udmVydChNeUNsYXNzPD8gc3VwZXIgSywgPyBzdXBlciBWPiBhcmcpIHsKKyAgICAgICAgICBNeUNsYXNzPEssIFY+IHJlc3VsdCA9IChNeUNsYXNzPEssIFY+KWFyZzsKKyAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICB9CisgICAgICB9CisgICAgfQorCisgICAgLy9JREVBLTYzNDQ3CisgICAgdm9pZCB0ZXN0VW5ib3VuZFdpbGRjYXJkV2l0aEFycmF5VHlwZXMoKSB7CisgICAgICAgIGNsYXNzIElVV1dBVHsKKyAgICAgICAgICAgIHByaXZhdGUgPFQ+IHZvaWQgbWV0aG9kMShUW11bXSBtYXRyaXgpIHsKKyAgICAgICAgICAgICAgICBmaW5hbCBDbGFzczxUW10+IHR5cGUgPSAoQ2xhc3M8VFtdPikgbWF0cml4LmdldENsYXNzKCkuZ2V0Q29tcG9uZW50VHlwZSgpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBwcml2YXRlIDxUPiB2b2lkIG1ldGhvZDIoVFtdW10gbWF0cml4KSB7CisgICAgICAgICAgICAgICAgZmluYWwgQ2xhc3M8T2JqZWN0PiB0eXBlID0gKENsYXNzPE9iamVjdD4pIG1hdHJpeC5nZXRDbGFzcygpLmdldENvbXBvbmVudFR5cGUoKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcHJpdmF0ZSA8VD4gdm9pZCBtZXRob2QzKFRbXVtdIG1hdHJpeCkgeworICAgICAgICAgICAgICAgIGZpbmFsIENsYXNzPE9iamVjdFtdPiB0eXBlID0gKENsYXNzPE9iamVjdFtdPikgbWF0cml4LmdldENsYXNzKCkuZ2V0Q29tcG9uZW50VHlwZSgpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBwcml2YXRlIDxUPiB2b2lkIG1ldGhvZDQoVFtdW10gbWF0cml4KSB7CisgICAgICAgICAgICAgICAgZmluYWwgQ2xhc3M8T2JqZWN0W11bXT4gdHlwZSA9IChDbGFzczxPYmplY3RbXVtdPikgbWF0cml4LmdldENsYXNzKCkuZ2V0Q29tcG9uZW50VHlwZSgpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorfQorCitjbGFzcyBXPFQ+IHt9CitjbGFzcyBQPEw+IHt9CisKKy8vIElERUEtNjI1MjkKK2NsYXNzIFJlZng8VD4geworICAgIENsYXNzPD8gc3VwZXIgVD4gZ2V0KCkgeyByZXR1cm4gbnVsbDsgfQorICAgIGJvb2xlYW4gZigpIHsKKyAgICAgIGlmIChnZXQoKSA9PSBFbnVtLmNsYXNzKSByZXR1cm4gZmFsc2U7CisgICAgICByZXR1cm4gKENsYXNzPEVudW0+KWdldCgpID09IEVudW0uY2xhc3M7CisgICAgfQorfQorCisKKy8vaGllcmFyY2h5IG9mIHR5cGUgcGFyYW0gYm91bmQKK2Fic3RyYWN0IGNsYXNzIERvbUludm9jYXRpb25IYW5kbGVyPFQgZXh0ZW5kcyBBYnN0cmFjdERvbUNoaWxkRGVzY3JpcHRpb25JbXBsPiB7CisgICAgdm9pZCBmKCkgeworICAgICAgICBpZiAodGhpcyAgaW5zdGFuY2VvZiBJbmRleGVkRWxlbWVudEludm9jYXRpb25IYW5kbGVyKSB7CisgICAgICAgIH0KKyAgICB9Cit9CisKK2ludGVyZmFjZSBBYnN0cmFjdERvbUNoaWxkcmVuRGVzY3JpcHRpb24geworfQorCitjbGFzcyBBYnN0cmFjdERvbUNoaWxkRGVzY3JpcHRpb25JbXBsIGltcGxlbWVudHMgQWJzdHJhY3REb21DaGlsZHJlbkRlc2NyaXB0aW9uIHsKK30KKworY2xhc3MgSW5kZXhlZEVsZW1lbnRJbnZvY2F0aW9uSGFuZGxlciBleHRlbmRzIERvbUludm9jYXRpb25IYW5kbGVyPEZpeGVkQ2hpbGREZXNjcmlwdGlvbkltcGw+IHsKK30KKworY2xhc3MgRml4ZWRDaGlsZERlc2NyaXB0aW9uSW1wbCBleHRlbmRzIEFic3RyYWN0RG9tQ2hpbGREZXNjcmlwdGlvbkltcGwgeworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvZ2VuZXJpY3NIaWdobGlnaHRpbmcvV2lsZGNhcmRUeXBlcy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9nZW5lcmljc0hpZ2hsaWdodGluZy9XaWxkY2FyZFR5cGVzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjIzMDU5MQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvZ2VuZXJpY3NIaWdobGlnaHRpbmcvV2lsZGNhcmRUeXBlcy5qYXZhCkBAIC0wLDAgKzEsMjQ2IEBACitpbXBvcnQgamF2YS51dGlsLio7CisKK2NsYXNzIGEgeworICAgIHB1YmxpYyB2b2lkIHByaW50TGlzdChMaXN0PD8+IGxpc3QpIHsKKyAgICAgICAgZm9yIChJdGVyYXRvcjw/PiBpID0gbGlzdC5pdGVyYXRvcigpOyBpLmhhc05leHQoKTspIHsKKyAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihpLm5leHQoKS50b1N0cmluZygpKTsKKyAgICAgICAgfQorICAgIH0KK30KKworY2xhc3MgYjw8d2FybmluZyBkZXNjcj0iVHlwZSBwYXJhbWV0ZXIgJ1QnIGlzIG5ldmVyIHVzZWQiPlQ8L3dhcm5pbmc+PiB7CisgICAgcHVibGljIGludGVyZmFjZSBMc3QgPEUsIFNlbGYgZXh0ZW5kcyBMc3Q8RSwgU2VsZj4+IHsKKyAgICAgICAgU2VsZiBzdWJMaXN0KGludCBmcm9tSW5kZXgsIGludCB0b0luZGV4KTsKKyAgICB9CisKKyAgICBwdWJsaWMgc3RhdGljIExzdDw/LCA/PiBmb28oTHN0PD8sID8+IGxzdCkgeworICAgICAgIExzdDw/LCA/PiBteWwgPSBsc3Quc3ViTGlzdCgwLCAyKTsKKyAgICAgICByZXR1cm4gbXlsOworICAgIH0KK30KKworY2xhc3MgVGhpbmdVc2VyIDxWPiB7CisgICAgViB2OworICAgIHsKKyAgICAgICAgbmV3IFRoaW5nVXNlcjw8ZXJyb3IgZGVzY3I9IldpbGRjYXJkIHR5cGUgJz8nIGNhbm5vdCBiZSBpbnN0YW50aWF0ZWQgZGlyZWN0bHkiPj88L2Vycm9yPj4oKSB7CisgICAgICAgIH07CisgICAgfQorfQorCitjbGFzcyBTdXBlcldpbGRjYXJkVGVzdCB7CisgICAgc3RhdGljIHZvaWQgbWV0aG9kKExpc3Q8Pz4gbGlzdCkgeworICAgICAgICA8ZXJyb3IgZGVzY3I9IkluY29tcGF0aWJsZSB0eXBlcy4gRm91bmQ6ICdqYXZhLnV0aWwuTGlzdDxjYXB0dXJlPD8+PicsIHJlcXVpcmVkOiAnamF2YS51dGlsLkxpc3Q8PyBzdXBlciBqYXZhLmxhbmcuU3RyaW5nPiciPkxpc3Q8PyBzdXBlciBTdHJpbmc+ICBsID0gbGlzdDs8L2Vycm9yPgorICAgICAgICBsLnNpemUoKTsKKyAgICB9Cit9CisKK2NsYXNzIElkZWFEZXY0MTY2IHsKKyAgICBNYXA8U3RyaW5nLCBPYmplY3Q+IGYoIE1hcDxTdHJpbmcsID8+IGZpZWxkc1RlbXBsYXRlKSB7CisgICAgICAgIHJldHVybiBuZXcgSGFzaE1hcDxTdHJpbmcsIE9iamVjdD4oIGZpZWxkc1RlbXBsYXRlKTsKKyAgICB9Cit9CisKKy8vSURFQURFVi01ODE2CitjbGFzcyBUd29EIHsKKyAgaW50IHgsIHk7CisgIFR3b0QoaW50IGEsIGludCBiKSB7CisgICAgeCA9IGE7CisgICAgeSA9IGI7CisgIH0KK30KKy8vIFRocmVlLWRpbWVuc2lvbmFsIGNvb3JkaW5hdGVzLgorY2xhc3MgVGhyZWVEIGV4dGVuZHMgVHdvRCB7CisgIGludCB6OworICBUaHJlZUQoaW50IGEsIGludCBiLCBpbnQgYykgeworICAgIHN1cGVyKGEsIGIpOworICAgIHogPSBjOworICB9Cit9CisvLyBGb3VyLWRpbWVuc2lvbmFsIGNvb3JkaW5hdGVzLgorY2xhc3MgRm91ckQgZXh0ZW5kcyBUaHJlZUQgeworICBpbnQgdDsKKyAgRm91ckQoaW50IGEsIGludCBiLCBpbnQgYywgaW50IGQpIHsKKyAgICBzdXBlcihhLCBiLCBjKTsKKyAgICB0ID0gZDsKKyAgfQorfQorLy8gVGhpcyBjbGFzcyBob2xkcyBhbiBhcnJheSBvZiBjb29yZGluYXRlIG9iamVjdHMuCitjbGFzcyBDb29yZHM8VCBleHRlbmRzIFR3b0Q+IHsKKyAgVFtdIGNvb3JkczsKKyAgQ29vcmRzKFRbXSBvKSB7IGNvb3JkcyA9IG87IH0KK30KKworLy8gRGVtb25zdHJhdGUgYSBib3VuZGVkIHdpbGRjYXJkLgorY2xhc3MgQm91bmRlZFdpbGRjYXJkIHsKKworICBzdGF0aWMgdm9pZCBzaG93WFkoQ29vcmRzPD8gZXh0ZW5kcyBUd29EPiBjKSB7CisgICAgU3lzdGVtLm91dC5wcmludGxuKCJYIFkgQ29vcmRpbmF0ZXM6Iik7CisgICAgZm9yKGludCBpPTA7IGkgPCBjLmNvb3Jkcy5sZW5ndGg7IGkrKykgeworICAgICAgU3lzdGVtLm91dC5wcmludGxuKGMuY29vcmRzW2ldLnggKyAiICIgKyBjLmNvb3Jkc1tpXS55KTsKKyAgICB9CisgICAgU3lzdGVtLm91dC5wcmludGxuKCk7CisgIH0KKworICBzdGF0aWMgdm9pZCBzaG93WFlaKENvb3Jkczw/IGV4dGVuZHMgVGhyZWVEPiBjKSB7CisgICAgU3lzdGVtLm91dC5wcmludGxuKCJYIFkgWiBDb29yZGluYXRlczoiKTsKKyAgICBmb3IoaW50IGk9MDsgaSA8IGMuY29vcmRzLmxlbmd0aDsgaSsrKQorICAgICAgU3lzdGVtLm91dC5wcmludGxuKGMuY29vcmRzW2ldLnggKyAiICIgKworICAgICAgICAgICAgICAgICAgICAgICAgIGMuY29vcmRzW2ldLnkgKyAiICIgKworICAgICAgICAgICAgICAgICAgICAgICAgIGMuY29vcmRzW2ldLnopOworICAgIFN5c3RlbS5vdXQucHJpbnRsbigpOworICB9CisKKyAgc3RhdGljIHZvaWQgc2hvd0FsbChDb29yZHM8PyBleHRlbmRzIEZvdXJEPiBjKSB7CisgICAgU3lzdGVtLm91dC5wcmludGxuKCJYIFkgWiBUIENvb3JkaW5hdGVzOiIpOworICAgIGZvcihpbnQgaT0wOyBpIDwgYy5jb29yZHMubGVuZ3RoOyBpKyspCisgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oYy5jb29yZHNbaV0ueCArICIgIiArCisgICAgICAgICAgICAgICAgICAgICAgICAgYy5jb29yZHNbaV0ueSArICIgIiArCisgICAgICAgICAgICAgICAgICAgICAgICAgYy5jb29yZHNbaV0ueiArICIgIiArCisgICAgICAgICAgICAgICAgICAgICAgICAgYy5jb29yZHNbaV0udCk7CisgICAgU3lzdGVtLm91dC5wcmludGxuKCk7CisgIH0KKworICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmcgYXJnc1tdKSB7CisgICAgVHdvRCB0ZFtdID0geworICAgICAgbmV3IFR3b0QoMCwgMCksCisgICAgICBuZXcgVHdvRCg3LCA5KSwKKyAgICAgIG5ldyBUd29EKDE4LCA0KSwKKyAgICAgIG5ldyBUd29EKC0xLCAtMjMpCisgICAgfTsKKyAgICBDb29yZHM8VHdvRD4gdGRsb2NzID0gbmV3IENvb3JkczxUd29EPih0ZCk7CisgICAgU3lzdGVtLm91dC5wcmludGxuKCJDb250ZW50cyBvZiB0ZGxvY3MuIik7CisgICAgc2hvd1hZKHRkbG9jcyk7IC8vIE9LLCBpcyBhIFR3b0QKKyAgICBzaG93WFlaPGVycm9yIGRlc2NyPSInc2hvd1hZWihDb29yZHM8PyBleHRlbmRzIFRocmVlRD4pJyBpbiAnQm91bmRlZFdpbGRjYXJkJyBjYW5ub3QgYmUgYXBwbGllZCB0byAnKENvb3JkczxUd29EPiknIj4odGRsb2NzKTwvZXJyb3I+OworICAgIHNob3dBbGw8ZXJyb3IgZGVzY3I9IidzaG93QWxsKENvb3Jkczw/IGV4dGVuZHMgRm91ckQ+KScgaW4gJ0JvdW5kZWRXaWxkY2FyZCcgY2Fubm90IGJlIGFwcGxpZWQgdG8gJyhDb29yZHM8VHdvRD4pJyI+KHRkbG9jcyk8L2Vycm9yPjsKKyAgICAvLyBOb3csIGNyZWF0ZSBzb21lIEZvdXJEIG9iamVjdHMuCisgICAgRm91ckQgZmRbXSA9IHsKKyAgICAgIG5ldyBGb3VyRCgxLCAyLCAzLCA0KSwKKyAgICAgIG5ldyBGb3VyRCg2LCA4LCAxNCwgOCksCisgICAgICBuZXcgRm91ckQoMjIsIDksIDQsIDkpLAorICAgICAgbmV3IEZvdXJEKDMsIC0yLCAtMjMsIDE3KQorICAgIH07CisgICAgQ29vcmRzPEZvdXJEPiBmZGxvY3MgPSBuZXcgQ29vcmRzPEZvdXJEPihmZCk7CisgICAgU3lzdGVtLm91dC5wcmludGxuKCJDb250ZW50cyBvZiBmZGxvY3MuIik7CisgICAgLy8gVGhlc2UgYXJlIGFsbCBPSy4KKyAgICBzaG93WFkoZmRsb2NzKTsKKyAgICBzaG93WFlaKGZkbG9jcyk7CisgICAgc2hvd0FsbChmZGxvY3MpOworICB9Cit9CisvL2VuZCBvZiBJREVBREVWLTU4MTYKKworaW50ZXJmYWNlIEkzMyB7fQorcHVibGljIGNsYXNzIFE8VCBleHRlbmRzIEkzMz4geworICAgIFQgdDsKKyAgICA8ViBleHRlbmRzIEkzMz4gTGlzdDxWPiBmb28oUTxWPiB2KSB7CisgICAgICB2Lmhhc2hDb2RlKCk7CisgICAgICByZXR1cm4gbnVsbDsKKyAgICB9CisKKyAgICBMaXN0PD8gZXh0ZW5kcyBJMzM+ICBnIChRPD8+IHEpIHsKKyAgICAgIHJldHVybiBmb28ocSk7CisgICAgfQorfQorCisvL0lERUFERVYtMTY2MjggCitjbGFzcyBDb2xsZWN0aW9uSGVscGVyIHsKKyAgcHVibGljIHN0YXRpYyA8QT4gQ29sbGVjdGlvbjxBPiBjb252ZXJ0RG93bihDb2xsZWN0aW9uPD8gc3VwZXIgQT4gY29sbGVjdGlvbikgeworICAgIHJldHVybiBjb2xsZWN0aW9uID09IG51bGwgPyBudWxsIDogbnVsbDsKKyAgfQorICBwdWJsaWMgc3RhdGljIDxBPiBDb2xsZWN0aW9uPEE+IGNvbnZlcnRVcChDb2xsZWN0aW9uPD8gZXh0ZW5kcyBBPiBjb2xsZWN0aW9uKSB7CisgICAgcmV0dXJuIGNvbGxlY3Rpb24gPT0gbnVsbCA/IG51bGwgOiBudWxsOworICB9CisKKyAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgeworICAgIC8vIERvd25jYXN0IGV4YW1wbGVzCisgICAgZmluYWwgQ29sbGVjdGlvbjxOdW1iZXI+IG51bWJlcnMxID0gbmV3IEFycmF5TGlzdDxOdW1iZXI+KDEpOworICAgIENvbGxlY3Rpb248SW50ZWdlcj4gaW50ZWdlcnMxID0gIENvbGxlY3Rpb25IZWxwZXIuY29udmVydERvd24obnVtYmVyczEpOworICAgIGludGVnZXJzMS5oYXNoQ29kZSgpOworICAgIC8vIFVwY2FzdCBleGFtcGxlCisgICAgZmluYWwgQ29sbGVjdGlvbjxJbnRlZ2VyPiBpbnRlZ2VyczQgPSBuZXcgQXJyYXlMaXN0PEludGVnZXI+KDEpOworICAgIGZpbmFsIENvbGxlY3Rpb248TnVtYmVyPiBudW1iZXJzNCA9IENvbGxlY3Rpb25IZWxwZXIuPE51bWJlcj5jb252ZXJ0VXAoaW50ZWdlcnM0KTsKKyAgICBudW1iZXJzNC5oYXNoQ29kZSgpOworICB9Cit9CisKKy8vSURFQS02MjUyOQorY2xhc3MgTXk8VD4geworICAgIHByaXZhdGUgIENsYXNzPD8gc3VwZXIgVD4gZ2V0U3VwZXJjbGFzcygpeworICAgICAgICByZXR1cm4gbnVsbDsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCB0ZXN0KCkgeworICAgICAgICBpZiAoZ2V0U3VwZXJjbGFzcygpID09IExpc3QuY2xhc3MpOworICAgIH0KK30KKworY2xhc3MgSURFQTc1MTc4IHsKKyAgICB2b2lkIHRlc3QoU2V0PFN0cmluZz4gbGFiZWxzKSB7CisgICAgICAgIGZpbmFsIE1hdGNoZXI8PyBzdXBlciBPYmplY3Q+IGVtcHR5ID0gaXNFbXB0eSgpOworICAgICAgICBhc3NlcnRUaGF0KGxhYmVscywgZW1wdHkpOworICAgICAgICBhc3NlcnRBbHNvVGhhdChlbXB0eSwgbGFiZWxzKTsKKyAgICB9CisKKyAgICBwdWJsaWMgc3RhdGljIDxUPiB2b2lkIGFzc2VydFRoYXQoVCBhY3R1YWwsIE1hdGNoZXI8VD4gbWF0Y2hlcikgeyB0aHJvdyBuZXcgQXNzZXJ0aW9uRXJyb3IoYWN0dWFsLnRvU3RyaW5nKCkgKyBtYXRjaGVyLnRvU3RyaW5nKCkpO30KKyAgICBwdWJsaWMgc3RhdGljIDxUPiB2b2lkIGFzc2VydEFsc29UaGF0KE1hdGNoZXI8VD4gbWF0Y2hlciwgVCBhY3R1YWwpIHsgdGhyb3cgbmV3IEFzc2VydGlvbkVycm9yKGFjdHVhbC50b1N0cmluZygpICsgbWF0Y2hlci50b1N0cmluZygpKTt9CisKKyAgICBwdWJsaWMgc3RhdGljIDxUPiBNYXRjaGVyPD8gc3VwZXIgVD4gaXNFbXB0eSgpIHsKKyAgICAgICAgcmV0dXJuIG51bGw7CisgICAgfQorCisgICAgc3RhdGljIGNsYXNzIE1hdGNoZXI8PHdhcm5pbmcgZGVzY3I9IlR5cGUgcGFyYW1ldGVyICdUJyBpcyBuZXZlciB1c2VkIj5UPC93YXJuaW5nPj57fQorICAKKyAgY2xhc3MgRm9vIHt9CisgIHZvaWQgdGVzdENvbW1lbnQoKSB7CisgICAgICBTZXQ8Rm9vPiBmb29zID0gQ29sbGVjdGlvbnMuZW1wdHlTZXQoKTsKKyAgICAgIGFzc2VydFRoYXRDb21tZW50KGZvb3MsIGhhc1NpemUoMCkpOworICB9CisKKyAgPEU+IE1hdGNoZXI8PyBzdXBlciBDb2xsZWN0aW9uPD8gZXh0ZW5kcyBFPj4gaGFzU2l6ZShpbnQgc2l6ZSkge3JldHVybiBzaXplID09IDAgPyBudWxsIDogbnVsbDt9CisgIDxUPiB2b2lkIGFzc2VydFRoYXRDb21tZW50KFQgYWN0dWFsLCBNYXRjaGVyPD8gc3VwZXIgVD4gbWF0Y2hlcil7IHRocm93IG5ldyBBc3NlcnRpb25FcnJvcihhY3R1YWwudG9TdHJpbmcoKSArIG1hdGNoZXIudG9TdHJpbmcoKSk7fQorfQorCitjbGFzcyBJREVBNjY3NTAgeworICBwdWJsaWMgdm9pZCB0ZXN0KCkgeworICAgIExpc3Q8TGlzdDxTdHJpbmc+PiBkYXRhID0gbmV3IEFycmF5TGlzdDxMaXN0PFN0cmluZz4+KCk7CisgICAgTGlzdDxMaXN0PD8+PiB5ID0gPGVycm9yIGRlc2NyPSJJbmNvbnZlcnRpYmxlIHR5cGVzOyBjYW5ub3QgY2FzdCAnamF2YS51dGlsLkxpc3Q8amF2YS51dGlsLkxpc3Q8amF2YS5sYW5nLlN0cmluZz4+JyB0byAnamF2YS51dGlsLkxpc3Q8amF2YS51dGlsLkxpc3Q8Pz4+JyI+KExpc3Q8TGlzdDw/Pj4pZGF0YTwvZXJyb3I+OworICAgIFN5c3RlbS5vdXQucHJpbnRsbih5KTsKKworICAgIEFycmF5TGlzdDxOdW1iZXI+IGFsID0gPGVycm9yIGRlc2NyPSJJbmNvbnZlcnRpYmxlIHR5cGVzOyBjYW5ub3QgY2FzdCAnamF2YS51dGlsLkFycmF5TGlzdDxqYXZhLmxhbmcuSW50ZWdlcj4nIHRvICdqYXZhLnV0aWwuQXJyYXlMaXN0PGphdmEubGFuZy5OdW1iZXI+JyI+KEFycmF5TGlzdDxOdW1iZXI+KSBuZXcgQXJyYXlMaXN0PEludGVnZXI+KDEpPC9lcnJvcj47CisgICAgU3lzdGVtLm91dC5wcmludGxuKGFsKTsKKyAgfQorfQorCitjbGFzcyBJREVBNzMzNzcgeworICBwdWJsaWMgSXRlcmF0b3I8TWFwLkVudHJ5PE1hcC5FbnRyeTw/LCA/PiwgPz4+IGl0ZXJhdG9yKE1hcDw/LCA/PiBtYXApIHsKKyAgICAvL25vaW5zcGVjdGlvbiB1bmNoZWNrZWQKKyAgICByZXR1cm4gPGVycm9yIGRlc2NyPSJJbmNvbnZlcnRpYmxlIHR5cGVzOyBjYW5ub3QgY2FzdCAnamF2YS51dGlsLkl0ZXJhdG9yPGphdmEudXRpbC5NYXAuRW50cnk8Y2FwdHVyZTw/PixjYXB0dXJlPD8+Pj4nIHRvICdqYXZhLnV0aWwuSXRlcmF0b3I8amF2YS51dGlsLk1hcC5FbnRyeTxqYXZhLnV0aWwuTWFwLkVudHJ5PD8sPz4sPz4+JyI+KEl0ZXJhdG9yPE1hcC5FbnRyeTxNYXAuRW50cnk8PywgPz4sID8+PiltYXAuZW50cnlTZXQoKS5pdGVyYXRvcigpPC9lcnJvcj47CisgIH0KK30KKworY2xhc3MgSURFQTkxNDgxIHsKKyAgdm9pZCBiYXIoKXsKKyAgICBCZWFuQnVpbGRlcjw/IGV4dGVuZHMgRGlyZWN0QmVhbj4gYnVpbGRlciA9IDx3YXJuaW5nIGRlc2NyPSJVbmNoZWNrZWQgY2FzdDogJ0lERUE5MTQ4MS5CZWFuQnVpbGRlcjxjYXB0dXJlPD8gZXh0ZW5kcyBJREVBOTE0ODEuQmVhbj4+JyB0byAnSURFQTkxNDgxLkJlYW5CdWlsZGVyPD8gZXh0ZW5kcyBJREVBOTE0ODEuRGlyZWN0QmVhbj4nIj4oQmVhbkJ1aWxkZXI8PyAgZXh0ZW5kcyBEaXJlY3RCZWFuPikgYnVpbGRlcigpPC93YXJuaW5nPjsKKyAgICBTeXN0ZW0ub3V0LnByaW50bG4oYnVpbGRlcik7CisgIH0KKworICBCZWFuQnVpbGRlcjw/IGV4dGVuZHMgQmVhbj4gYnVpbGRlcigpIHsKKyAgICByZXR1cm4gbnVsbDsKKyAgfQorCisgIGNsYXNzIEJlYW5CdWlsZGVyPDx3YXJuaW5nIGRlc2NyPSJUeXBlIHBhcmFtZXRlciAnVCcgaXMgbmV2ZXIgdXNlZCI+VDwvd2FybmluZz4+IHt9CisgIGNsYXNzIEJlYW4ge30KKyAgY2xhc3MgRGlyZWN0QmVhbiBleHRlbmRzIEJlYW4ge30KK30KKworY2xhc3MgSURFQTg5NjQwIHsKKyAgaW50ZXJmYWNlIFgge30KKyAgY2xhc3MgWTw8d2FybmluZyBkZXNjcj0iVHlwZSBwYXJhbWV0ZXIgJ1QnIGlzIG5ldmVyIHVzZWQiPlQ8L3dhcm5pbmc+IGV4dGVuZHMgWD4ge30KKworICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CisgICAgWTw/IGV4dGVuZHMgWD4gYSA9IG51bGw7CisgICAgWTw/IGV4dGVuZHMgWD4gYiA9IG51bGw7CisgICAgYm9vbGVhbiBmbGFnID0gYSAgIT0gYjsgCisgICAgU3lzdGVtLm91dC5wcmludGxuKGZsYWcpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9nZW5lcmljc0hpZ2hsaWdodGluZy9XaWxkY2FyZHNCb3VuZHNJbnRlcnNlY3Rpb24uamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvZ2VuZXJpY3NIaWdobGlnaHRpbmcvV2lsZGNhcmRzQm91bmRzSW50ZXJzZWN0aW9uLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzg0YzU4OQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvZ2VuZXJpY3NIaWdobGlnaHRpbmcvV2lsZGNhcmRzQm91bmRzSW50ZXJzZWN0aW9uLmphdmEKQEAgLTAsMCArMSwxNSBAQAorY2xhc3MgTm9kZVByb3BlcnR5PEEsIEI+IHt9CisKK2NsYXNzIE5vZGVUeXBlIHt9CitjbGFzcyBOdW1iZXJFeHByZXNzaW9uIGV4dGVuZHMgTm9kZVR5cGUge30KK2NsYXNzIE5vZGU8Tm9kZVR5cGVUIGV4dGVuZHMgTm9kZVR5cGU+IHsKKyAgICBwdWJsaWMgPFZhbHVlVD4gVmFsdWVUIGdldChOb2RlUHJvcGVydHk8PyBzdXBlciBOb2RlVHlwZVQsIFZhbHVlVD4gcHJvcCkgeworICAgICAgICByZXR1cm4gbnVsbDsKKyAgICB9Cit9CisKK2NsYXNzIE1haW4geworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKE5vZGVQcm9wZXJ0eTxOdW1iZXJFeHByZXNzaW9uLCBJbnRlZ2VyPiBudmFsLCAgTm9kZTw/IGV4dGVuZHMgTm9kZVR5cGU+IGV4cHIpIHsKKyAgICAgICAgaW50IHZhbCA9IGV4cHIuZ2V0PGVycm9yIGRlc2NyPSInZ2V0KE5vZGVQcm9wZXJ0eTw/IHN1cGVyIGNhcHR1cmU8PyBleHRlbmRzIE5vZGVUeXBlPixqYXZhLmxhbmcuSW50ZWdlcj4pJyBpbiAnTm9kZScgY2Fubm90IGJlIGFwcGxpZWQgdG8gJyhOb2RlUHJvcGVydHk8TnVtYmVyRXhwcmVzc2lvbixqYXZhLmxhbmcuSW50ZWdlcj4pJyI+KG52YWwpPC9lcnJvcj47CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvaGlnaGxpZ2h0U2V2ZXJpdHkvRXJyb3JMaWtlVW51c2VkU3ltYm9sLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2hpZ2hsaWdodFNldmVyaXR5L0Vycm9yTGlrZVVudXNlZFN5bWJvbC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgwNjM5YjYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2hpZ2hsaWdodFNldmVyaXR5L0Vycm9yTGlrZVVudXNlZFN5bWJvbC5qYXZhCkBAIC0wLDAgKzEsNSBAQAorcHVibGljIGNsYXNzIFRlc3QgeworICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CisgICAgaW50IDxlcnJvciBkZXNjcj0iVmFyaWFibGUgJ2snIGlzIG5ldmVyIHVzZWQiPms8L2Vycm9yPiA9IDA7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2phdmFEb2MvQmFkQ2hhcmFjdGVycy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9qYXZhRG9jL0JhZENoYXJhY3RlcnMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYmZkODg5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9qYXZhRG9jL0JhZENoYXJhY3RlcnMuamF2YQpAQCAtMCwwICsxLDEwIEBACitpbXBvcnQgamF2YS51dGlsLio7CitjbGFzcyBUZXN0PFQ+IHsKKworICAgcHVibGljIHZvaWQgcmVhZChMaXN0PFQ+IGxpc3Qpe30KKworICAvKioKKyAgICogQHNlZSAjcmVhZChqYXZhLnV0aWwuTGlzdDx3YXJuaW5nPjw8L3dhcm5pbmc+VDx3YXJuaW5nPj48L3dhcm5pbmc+KSAKKyAgICovCisgICBwdWJsaWMgdm9pZCB3cml0ZSgpe30KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2phdmFEb2MvQmFkUmVmZXJlbmNlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2phdmFEb2MvQmFkUmVmZXJlbmNlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzZjMmM4NQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvamF2YURvYy9CYWRSZWZlcmVuY2UuamF2YQpAQCAtMCwwICsxLDggQEAKK2NsYXNzIFRlc3QgeworICAgIC8qKgorICAgKiBUaGlzIGVsZW1lbnQgd2FzIHdyaXR0ZW4gYnkge0BsaW5rIFRlc3Qjd3JpdGUoT2JqZWN0LCA8ZXJyb3I+WG1sV3JpdGVyPC9lcnJvcj4pfQorICAgKiBtZXRob2QuIFNvIDxjb2RlPnJlYWQ8L2NvZGU+IGFuZCA8Y29kZT53cml0ZTwvY29kZT4gbWV0aG9kcyBzaG91bGQgYmUgY29uc2lzdGVudC4KKyAgICovCisgICBwdWJsaWMgdm9pZCByZWFkKCl7fQorICAgcHVibGljIHZvaWQgd3JpdGUoT2JqZWN0IG8sIDxlcnJvcj5YbWxXcml0ZXI8L2Vycm9yPiB3cml0ZXIpe30KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2phdmFEb2MvRXhjZXB0aW9uMC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9qYXZhRG9jL0V4Y2VwdGlvbjAuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NjI4MWVhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9qYXZhRG9jL0V4Y2VwdGlvbjAuamF2YQpAQCAtMCwwICsxLDggQEAKK2NsYXNzIFRlc3QgeworICAgIC8qKgorICAgICAqICBAdGhyb3dzIDx3YXJuaW5nPlNvbWVDbGFzczwvd2FybmluZz4gYXNkZmFzZAorICAgICAqLworICAgICBwdWJsaWMgdm9pZCBmb28oKSB7fQorICAgICAKKyAgICAgY2xhc3MgU29tZUNsYXNzICAgICB7fQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvamF2YURvYy9FeGNlcHRpb24xLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2phdmFEb2MvRXhjZXB0aW9uMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg5ZWU5ZjYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2phdmFEb2MvRXhjZXB0aW9uMS5qYXZhCkBAIC0wLDAgKzEsOCBAQAorY2xhc3MgVGVzdCB7CisgICAgLyoqCisgICAgICogIEB0aHJvd3M8RU9MV2FybmluZy8+CisgICAgICovCisgICAgIHB1YmxpYyB2b2lkIGZvbygpIHt9CisgICAgIAorICAgICBjbGFzcyBTb21lQ2xhc3Mge30KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2phdmFEb2MvRXhjZXB0aW9uMi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9qYXZhRG9jL0V4Y2VwdGlvbjIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMjZiY2M2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9qYXZhRG9jL0V4Y2VwdGlvbjIuamF2YQpAQCAtMCwwICsxLDYgQEAKK2NsYXNzIFRlc3QgeworICAgIC8qKgorICAgICAqICBAdGhyb3dzIElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiBzb21ldGltZXMKKyAgICAgKi8KKyAgICAgcHVibGljIHZvaWQgZm9vKCkge30KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2phdmFEb2MvRXhjZXB0aW9uMy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9qYXZhRG9jL0V4Y2VwdGlvbjMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNmQyY2ExCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9qYXZhRG9jL0V4Y2VwdGlvbjMuamF2YQpAQCAtMCwwICsxLDYgQEAKK2NsYXNzIFRlc3QgeworICAgIC8qKgorICAgICAqICBAdGhyb3dzIGphdmEuaW8uRU9GRXhjZXB0aW9uIHNvbWV0aW1lcworICAgICAqLworICAgICBwdWJsaWMgdm9pZCBmb28oKSB0aHJvd3MgamF2YS5pby5JT0V4Y2VwdGlvbiB7fQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvamF2YURvYy9FeGNlcHRpb240LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2phdmFEb2MvRXhjZXB0aW9uNC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk4MmNkMmMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2phdmFEb2MvRXhjZXB0aW9uNC5qYXZhCkBAIC0wLDAgKzEsNiBAQAorY2xhc3MgVGVzdCB7CisgICAgLyoqCisgICAgICogIEB0aHJvd3MgPHdhcm5pbmc+SW50ZWdlcjwvd2FybmluZz4gc29tZXRpbWVzCisgICAgICovCisgICAgIHB1YmxpYyB2b2lkIDx3YXJuaW5nPmZvbzwvd2FybmluZz4oKSB0aHJvd3MgRXhjZXB0aW9uIHt9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9qYXZhRG9jL0luaGVyaXRKYXZhRG9jLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2phdmFEb2MvSW5oZXJpdEphdmFEb2MuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NWFiYmQ5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9qYXZhRG9jL0luaGVyaXRKYXZhRG9jLmphdmEKQEAgLTAsMCArMSw3IEBACitjbGFzcyBUZXN0IHsKKyAgLyoqCisgICogPHdhcm5pbmc+QGluaGVyaXREb2M8L3dhcm5pbmc+CisgICovCisgIHZvaWQgYSgpIHsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvamF2YURvYy9JbmxpbmVUYWdBc0Rlc2NyaXB0aW9uLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2phdmFEb2MvSW5saW5lVGFnQXNEZXNjcmlwdGlvbi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRlMWMzMzAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2phdmFEb2MvSW5saW5lVGFnQXNEZXNjcmlwdGlvbi5qYXZhCkBAIC0wLDAgKzEsMTggQEAKK2NsYXNzIEEgeworICAvKioKKyAgKiBAcmV0dXJuCisgICogIHtAaW5oZXJpdERvY30KKyAgKiovCisgIGludCBmb28oKXsKKyAgICByZXR1cm4gMDsKKyAgfQorfQorCitjbGFzcyBCIHsKKyAgLyoqCisgICogQHJldHVybiBiYXIKKyAgKiovCisgIGludCBmb28oKXsKKyAgIHJldHVybiAwOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9qYXZhRG9jL0lubmVyQ2xhc3NSZWZlcmVuY2VJblNpZ25hdHVyZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9qYXZhRG9jL0lubmVyQ2xhc3NSZWZlcmVuY2VJblNpZ25hdHVyZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkzMDMwNzEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2phdmFEb2MvSW5uZXJDbGFzc1JlZmVyZW5jZUluU2lnbmF0dXJlLmphdmEKQEAgLTAsMCArMSwxMyBAQAorY2xhc3MgQ1NTIHsKKyAgc3RhdGljIGNsYXNzIElPe30KK30KKworY2xhc3MgVEQgeworICB2b2lkIGNhbGN1bGF0ZVNtdGgoQ1NTLklPIGlvKXt9Cit9CisKKy8qKgorICogQHNlZSBURCNjYWxjdWxhdGVTbXRoKENTUy5JTykKKyAqLworY2xhc3MgVGVzdCB7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9qYXZhRG9jL0phdmFkb2NQZXJpb2QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvamF2YURvYy9KYXZhZG9jUGVyaW9kLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjdlZjFjMQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvamF2YURvYy9KYXZhZG9jUGVyaW9kLmphdmEKQEAgLTAsMCArMSw2IEBACis8d2FybmluZz4vKio8L3dhcm5pbmc+CisgKiBNaXNzaW5nIGRvdAorICovCitjbGFzcyBUZXN0IHsKKworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvamF2YURvYy9KYXZhZG9jUGVyaW9kMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9qYXZhRG9jL0phdmFkb2NQZXJpb2QxLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTZhODYzZWUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2phdmFEb2MvSmF2YWRvY1BlcmlvZDEuamF2YQpAQCAtMCwwICsxLDYgQEAKKy8qKgorKiBEbyBzbXRoIEBsaW5rcGxhaW4gI2xpbmt9LgorKi8KK3B1YmxpYyBjbGFzcyBUZXN0IHsKKyAgcHJpdmF0ZSB2b2lkIGxpbmsoKXt9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9qYXZhRG9jL0phdmFkb2NQZXJpb2QyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2phdmFEb2MvSmF2YWRvY1BlcmlvZDIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MzFlNTA4OAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvamF2YURvYy9KYXZhZG9jUGVyaW9kMi5qYXZhCkBAIC0wLDAgKzEsNyBAQAorPHdhcm5pbmc+LyoqPC93YXJuaW5nPgorKiBEbyBzbXRoCisqIEBhdXRob3IgbWUuCisqLworcHVibGljIGNsYXNzIFRlc3QgeworCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9qYXZhRG9jL0xpbmswLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2phdmFEb2MvTGluazAuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MzNjZWMyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9qYXZhRG9jL0xpbmswLmphdmEKQEAgLTAsMCArMSw4IEBACitjbGFzcyBUZXN0IHsKKyAgICAvKioKKyAgICAgKiAgQHBhcmFtIHBwcCBzZWUge0BsaW5rICM8ZXJyb3I+VGVzdDwvZXJyb3I+fQorICAgICAqLworICAgICBwdWJsaWMgdm9pZCBpKGludCBwcHApIHt9CisgICAgIAorICAgICBjbGFzcyBBeyBwdWJsaWMgdm9pZCBmb28oKSB7fX0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2phdmFEb2MvTGlua0Zyb21Jbm5lckNsYXNzVG9TZWxmTWV0aG9kLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2phdmFEb2MvTGlua0Zyb21Jbm5lckNsYXNzVG9TZWxmTWV0aG9kLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTA3MWMwMQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvamF2YURvYy9MaW5rRnJvbUlubmVyQ2xhc3NUb1NlbGZNZXRob2QuamF2YQpAQCAtMCwwICsxLDEzIEBACitjbGFzcyBUZXN0IHsKKworICAgICBwdWJsaWMgdm9pZCBpKGludCBwcHApIHt9CisgICAgIC8qKgorICAgICAgKiB7QGxpbmsgIzxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdmb28oaW50KSciPmZvbzwvZXJyb3I+KGludCl9CisgICAgICAqIHtAbGluayAjZm9vKCl9CisgICAgICAqIHtAbGluayAjaShpbnQpfQorICAgICAqLworICAgICBjbGFzcyBBeworICAgICAgIHB1YmxpYyB2b2lkIGZvbygpIHt9CisgICAgIH0KKworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvamF2YURvYy9NaXNzaW5nUmV0dXJuRGVzY3JpcHRpb24uamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvamF2YURvYy9NaXNzaW5nUmV0dXJuRGVzY3JpcHRpb24uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNTQyZTBkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9qYXZhRG9jL01pc3NpbmdSZXR1cm5EZXNjcmlwdGlvbi5qYXZhCkBAIC0wLDAgKzEsOSBAQAorY2xhc3MgTWlzc2luZ1JldHVuRGVzY3JpcHRpb24geworICAvKioKKyAgKiA8d2FybmluZz5AcmV0dXJuPC93YXJuaW5nPgorICAqIEB0aHJvd3MgRXhjZXB0aW9uIGluIHNvbWUgY2FzZQorICAqLworICBwdWJsaWMgYm9vbGVhbiBmb28oKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICByZXR1cm4gZmFsc2U7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2phdmFEb2MvTXVsdGlwbGVUaHJvd3MuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvamF2YURvYy9NdWx0aXBsZVRocm93cy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZmYzY5MTAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2phdmFEb2MvTXVsdGlwbGVUaHJvd3MuamF2YQpAQCAtMCwwICsxLDEwIEBACitpbXBvcnQgamF2YS5pby5JT0V4Y2VwdGlvbjsKK2NsYXNzIFRlc3QgeworICAvKioKKyAgKiBAdGhyb3dzIElPRXhjZXB0aW9uIGluIHNvbWUgY2FzZQorICAqIDx3YXJuaW5nPkB0aHJvd3M8L3dhcm5pbmc+IElPRXhjZXB0aW9uCisgICovCisgIHZvaWQgYSgpIHRocm93cyBJT0V4Y2VwdGlvbnsKKyAgICB0aHJvdyBuZXcgSU9FeGNlcHRpb24oKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvamF2YURvYy9QYXJhbTAuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvamF2YURvYy9QYXJhbTAuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ODVhZTQ1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9qYXZhRG9jL1BhcmFtMC5qYXZhCkBAIC0wLDAgKzEsNSBAQAorLyoqCisgKiAgQHBhcmFtIDxlcnJvcj5teVBhcmFtPC9lcnJvcj4gcGFyYW1EZXNjcmlwdGlvbgorICovCitjbGFzcyBUZXN0IHsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2phdmFEb2MvUGFyYW0xLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2phdmFEb2MvUGFyYW0xLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjYxNjU5NAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvamF2YURvYy9QYXJhbTEuamF2YQpAQCAtMCwwICsxLDcgQEAKK2NsYXNzIFRlc3QgeworICAgIC8qKgorICAgICAqICBAcGFyYW08RU9MV2FybmluZy8+CisgICAgICovCisgICAgcHVibGljIHZvaWQgZm9vKCkgeworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2phdmFEb2MvUGFyYW0yLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2phdmFEb2MvUGFyYW0yLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjgxNzgwZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvamF2YURvYy9QYXJhbTIuamF2YQpAQCAtMCwwICsxLDcgQEAKK2NsYXNzIFRlc3QgeworICAgIC8qKgorICAgICAqICBAcGFyYW0gPGVycm9yPnBhcmFtPC9lcnJvcj4gc29tZSBwYXJhbQorICAgICAqLworICAgIHB1YmxpYyB2b2lkIGZvbygpIHsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9qYXZhRG9jL1BhcmFtMy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9qYXZhRG9jL1BhcmFtMy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZjYTQwOTMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2phdmFEb2MvUGFyYW0zLmphdmEKQEAgLTAsMCArMSw3IEBACitjbGFzcyBUZXN0IHsKKyAgICAvKioKKyAgICAgKiAgQHBhcmFtIHBhcmFtIHNvbWUgcGFyYW0KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBmb28oaW50IHBhcmFtKSB7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvamF2YURvYy9QYXJhbTQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvamF2YURvYy9QYXJhbTQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZTIyOTRhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9qYXZhRG9jL1BhcmFtNC5qYXZhCkBAIC0wLDAgKzEsOCBAQAorY2xhc3MgVGVzdCB7CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0gPGVycm9yPmk8L2Vycm9yPiBoZXJlIGRlc2NyaXB0aW9uIGdvZXMKKyAgICAgKiA8d2FybmluZz5AcmV0dXJuPC93YXJuaW5nPgorICAgICAqLworICAgIGludCBkKCl7cmV0dXJuIDE7fQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9qYXZhRG9jL1JldHVybjAuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvamF2YURvYy9SZXR1cm4wLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDg2MTRlMQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvamF2YURvYy9SZXR1cm4wLmphdmEKQEAgLTAsMCArMSw2IEBACitjbGFzcyBUZXN0IHsKKyAgICAvKioKKyAgICAgKiAgPHdhcm5pbmc+QHJldHVybjwvd2FybmluZz4gcmV0dXJucworICAgICAqLworICAgICBwdWJsaWMgdm9pZCBmb28oKSB7fQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvamF2YURvYy9TZWUwLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2phdmFEb2MvU2VlMC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNiMTZhYzkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2phdmFEb2MvU2VlMC5qYXZhCkBAIC0wLDAgKzEsOCBAQAorY2xhc3MgVGVzdCB7CisgICAgLyoqCisgICAgICogIEBzZWUgQSM8ZXJyb3I+c29tZUZpZWxkPC9lcnJvcj4KKyAgICAgKi8KKyAgICAgcHVibGljIHZvaWQgaSgpIHt9CisKKyAgICAgY2xhc3MgQXsgcHVibGljIHZvaWQgZm9vKCkge319Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9qYXZhRG9jL1NlZTEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvamF2YURvYy9TZWUxLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzcwMzQ3MwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvamF2YURvYy9TZWUxLmphdmEKQEAgLTAsMCArMSw4IEBACitjbGFzcyBUZXN0IHsKKyAgICAvKioKKyAgICAgKiAgQHNlZSBBI2ZvbworICAgICAqLworICAgICBwdWJsaWMgdm9pZCBpKCkge30KKworICAgICBjbGFzcyBBeyBwdWJsaWMgdm9pZCBmb28oKSB7fX0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2phdmFEb2MvU2VlMi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9qYXZhRG9jL1NlZTIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43Yjg0MjQyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9qYXZhRG9jL1NlZTIuamF2YQpAQCAtMCwwICsxLDggQEAKK2NsYXNzIFRlc3QgeworICAgIC8qKgorICAgICAqICBAc2VlIEEjPEVPTFdhcm5pbmcvPgorICAgICAqLworICAgICBwdWJsaWMgdm9pZCBpKCkge30KKworICAgICBjbGFzcyBBeyBwdWJsaWMgdm9pZCBmb28oKSB7fX0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2phdmFEb2MvU2VlMy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9qYXZhRG9jL1NlZTMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMjFiNmJmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9qYXZhRG9jL1NlZTMuamF2YQpAQCAtMCwwICsxLDggQEAKK2NsYXNzIFRlc3QgeworICAgIC8qKgorICAgICAqICBAc2VlICM8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAncGVyZm9ybShpbnQpJyI+cGVyZm9ybTwvZXJyb3I+KGludCkKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBpKCkge30KKyAgICAgCisgICAgcHVibGljIHZvaWQgcGVyZm9ybSgpIHt9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9qYXZhRG9jL1NlZTQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvamF2YURvYy9TZWU0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGQyNjE0YgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvamF2YURvYy9TZWU0LmphdmEKQEAgLTAsMCArMSw4IEBACitjbGFzcyBUZXN0IHsKKyAgICAvKioKKyAgICAgKiAgQHNlZSAjcGVyZm9ybShpbnQpCisgICAgICovCisgICAgIHB1YmxpYyB2b2lkIGkoKSB7fQorICAgICAKKyAgICBwdWJsaWMgdm9pZCBwZXJmb3JtKGludCBhKSB7fQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvamF2YURvYy9TZWU1LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2phdmFEb2MvU2VlNS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBhNTMxNjAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2phdmFEb2MvU2VlNS5qYXZhCkBAIC0wLDAgKzEsOCBAQAorY2xhc3MgVGVzdCB7CisgICAgLyoqCisgICAgICogIEBzZWUgI3BlcmZvcm0oU3RyaW5nLCBpbnQpCisgICAgICovCisgICAgIHB1YmxpYyB2b2lkIGkoKSB7fQorICAgICAKKyAgICBwdWJsaWMgdm9pZCBwZXJmb3JtKFN0cmluZyBzLCBpbnQgYSkge30KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2phdmFEb2MvU2VlNi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9qYXZhRG9jL1NlZTYuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MWI4YzQ4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9qYXZhRG9jL1NlZTYuamF2YQpAQCAtMCwwICsxLDYgQEAKK2NsYXNzIEZvbyB7CisgIC8qKgorICAgKiB7PHdhcm5pbmc+QGxpbms8L3dhcm5pbmc+ICNmb28oKX0KKyAgICovCisgIHZvaWQgZm9vKCl7fQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvamF2YURvYy9TZWVDb25zdGFudHMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvamF2YURvYy9TZWVDb25zdGFudHMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNDM3ZjFjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9qYXZhRG9jL1NlZUNvbnN0YW50cy5qYXZhCkBAIC0wLDAgKzEsMTIgQEAKK3B1YmxpYyBjbGFzcyBTZWVDb25zdGFudHMgeworICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBJSUkgPSAiIjsKKyAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgVVVVPSIiOworCisgIC8qKgorICAgKiBAc2VlIFNlZUNvbnN0YW50cy48ZXJyb3I+SUlJPC9lcnJvcj4KKyAgICogQHNlZSBTZWVDb25zdGFudHMjVVVVCisgICAqIEBwYXJhbSBhcmdzIGJsYWgtYmxhaAorICAgKi8KKyAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKKyAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvamF2YURvYy9Vbmtub3duSW5saW5lVGFnLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2phdmFEb2MvVW5rbm93bklubGluZVRhZy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRkNjJjZDAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2phdmFEb2MvVW5rbm93bklubGluZVRhZy5qYXZhCkBAIC0wLDAgKzEsMTQgQEAKKy8qKgorICogezx3YXJuaW5nPkBsaW5rZWQ8L3dhcm5pbmc+fQorICovCitwdWJsaWMgY2xhc3MgRm9vIHsKKyAgLyoqCisgICAqIEBwYXJhbSBpIHNvbWUgcGFyYW0gezx3YXJuaW5nPkB2YWFhbHVlPC93YXJuaW5nPiAjZmllbGR9CisgICAqLworICB2b2lkIGZvbyhpbnQgaSkge30KKworICAvKioKKyAgKiB7PHdhcm5pbmc+QGxpbmtlPC93YXJuaW5nPn0KKyAgKi8KKyAgaW50IGZpZWxkOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvamF2YURvYy9Vbmtub3duVGFncy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9qYXZhRG9jL1Vua25vd25UYWdzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2MyZTQ3NAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvamF2YURvYy9Vbmtub3duVGFncy5qYXZhCkBAIC0wLDAgKzEsMTQgQEAKKy8qKgorICogPHdhcm5pbmc+QGZvbzwvd2FybmluZz4KKyAqLworcHVibGljIGNsYXNzIEZvbyB7CisgIC8qKgorICAgKiA8d2FybmluZz5AZm9vPC93YXJuaW5nPgorICAgKi8KKyAgdm9pZCBmb28oKSB7fQorCisgIC8qKgorICAqIDx3YXJuaW5nPkBmb288L3dhcm5pbmc+CisgICovCisgIGludCBmaWVsZDsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2phdmFEb2MvVmFsdWVCYWRSZWZlcmVuY2UuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvamF2YURvYy9WYWx1ZUJhZFJlZmVyZW5jZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFhNWIxODEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2phdmFEb2MvVmFsdWVCYWRSZWZlcmVuY2UuamF2YQpAQCAtMCwwICsxLDcgQEAKK2NsYXNzIFRlc3QgeworICAgIC8qKgorICAgICAqIFZhbHVlIGlzIHtAdmFsdWUgIzxlcnJvcj5iYWRSZWZlcmVuY2U8L2Vycm9yPn0KKyAgICAgKiBAcGFyYW0gcHBwIC4KKyAgICAgKi8KKyAgICAgcHVibGljIHZvaWQgaShpbnQgcHBwKSB7fQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvamF2YURvYy9WYWx1ZUVtcHR5LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2phdmFEb2MvVmFsdWVFbXB0eS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFhNGNhMWMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2phdmFEb2MvVmFsdWVFbXB0eS5qYXZhCkBAIC0wLDAgKzEsNiBAQAorY2xhc3MgVGVzdCB7CisgICAgLyoqCisgICAgICogVmFsdWUgaXMge0B2YWx1ZSB9CisgICAgICovCisgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEEgPSAxOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvamF2YURvYy9WYWx1ZUdvb2RSZWZlcmVuY2UuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvamF2YURvYy9WYWx1ZUdvb2RSZWZlcmVuY2UuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYTFlNDQ0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9qYXZhRG9jL1ZhbHVlR29vZFJlZmVyZW5jZS5qYXZhCkBAIC0wLDAgKzEsOSBAQAorY2xhc3MgVGVzdCB7CisgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEEgPSAxOworCisgICAgLyoqCisgICAgICogVmFsdWUgaXMge0B2YWx1ZSAjQX0KKyAgICAgKiBAcGFyYW0gcHBwIC4KKyAgICAgKi8KKyAgICAgcHVibGljIHZvaWQgaShpbnQgcHBwKSB7fQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvamF2YURvYy9WYWx1ZU5vdE9uRmllbGQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvamF2YURvYy9WYWx1ZU5vdE9uRmllbGQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42OWNjMzA1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9qYXZhRG9jL1ZhbHVlTm90T25GaWVsZC5qYXZhCkBAIC0wLDAgKzEsOCBAQAorY2xhc3MgVGVzdCB7CisgICAgLyoqCisgICAgICogVmFsdWUgaXMge0B2YWx1ZSA8ZXJyb3I+I2c8L2Vycm9yPn0KKyAgICAgKi8KKyAgICAgcHVibGljIHZvaWQgaSgpIHt9CisKKyAgICAgcHVibGljIHZvaWQgZygpIHt9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9qYXZhRG9jL1ZhbHVlTm90T25TdGF0aWNGaWVsZC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9qYXZhRG9jL1ZhbHVlTm90T25TdGF0aWNGaWVsZC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk0ODliODIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2phdmFEb2MvVmFsdWVOb3RPblN0YXRpY0ZpZWxkLmphdmEKQEAgLTAsMCArMSw4IEBACitjbGFzcyBUZXN0IHsKKyAgICAgcHVibGljIGludCBBID0gMTsKKworICAgIC8qKgorICAgICAqIFZhbHVlIGlzIHtAdmFsdWUgPGVycm9yPiNBPC9lcnJvcj59CisgICAgICovCisgICAgIHB1YmxpYyB2b2lkIGkoKSB7fQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvamF2YURvYy9WYWx1ZU9uTm90SW5pdGlhbGl6ZWRGaWVsZC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9qYXZhRG9jL1ZhbHVlT25Ob3RJbml0aWFsaXplZEZpZWxkLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTM4Njc4NAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvamF2YURvYy9WYWx1ZU9uTm90SW5pdGlhbGl6ZWRGaWVsZC5qYXZhCkBAIC0wLDAgKzEsOCBAQAorY2xhc3MgVGVzdCB7CisgICAgIHB1YmxpYyBzdGF0aWMgaW50IEE7CisKKyAgICAvKioKKyAgICAgKiBWYWx1ZSBpcyB7QHZhbHVlIDxlcnJvcj4jQTwvZXJyb3I+fQorICAgICAqLworICAgICBwdWJsaWMgdm9pZCBpKCkge30KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2phdmFEb2MvVmFsdWVSZWZlcmVuY2UxNC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9qYXZhRG9jL1ZhbHVlUmVmZXJlbmNlMTQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNTM0ODI2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9qYXZhRG9jL1ZhbHVlUmVmZXJlbmNlMTQuamF2YQpAQCAtMCwwICsxLDkgQEAKK2NsYXNzIFRlc3QgeworICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBBID0gMTsKKworICAgIC8qKgorICAgICAqIFZhbHVlIGlzIHtAdmFsdWUgPGVycm9yPiNBPC9lcnJvcj59CisgICAgICogQHBhcmFtIHBwcCAuCisgICAgICovCisgICAgIHB1YmxpYyB2b2lkIGkoaW50IHBwcCkge30KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2phdmFEb2MvVmFyYXJnLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2phdmFEb2MvVmFyYXJnLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTE5Mjc0NQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvamF2YURvYy9WYXJhcmcuamF2YQpAQCAtMCwwICsxLDkgQEAKK3B1YmxpYyBjbGFzcyBUZXN0IHsKKyAgIC8qKgorICAgICAqIEBzZWUgVGVzdCN0ZXN0KFN0cmluZywgaW50Li4uKQorICAgICAqIEBzZWUgVGVzdCM8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAndGVzdChTdHJpbmcsIGxvbmcuLi4pJyI+dGVzdDwvZXJyb3I+KFN0cmluZywgbG9uZy4uLikKKyAgICoqLworICAgIHZvaWQgZm9vKCkge30KKworICAgIHZvaWQgdGVzdCAoU3RyaW5nIHUsIGludCAuLi4gaSkge30KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvamF2YURvYy9yZXNvbHZlL3BrZy9TZWUwLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2phdmFEb2MvcmVzb2x2ZS9wa2cvU2VlMC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjViN2VkYzkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2phdmFEb2MvcmVzb2x2ZS9wa2cvU2VlMC5qYXZhCkBAIC0wLDAgKzEsMTUgQEAKK3BhY2thZ2UgcGtnOworCisvKioKKyAqIEBzZWUgI21ldGhvZChwa2cuQjAuQ1tdKQorICogQHNlZSAjbWV0aG9kKEIwLkNbXSkKKyAqIEBzZWUgI21ldGhvZChCMC5DLi4uKQorICovCitjbGFzcyBBMCB7CisgIHB1YmxpYyB2b2lkIG1ldGhvZChCMC5DW10gYykgeyB9Cit9CisKK2NsYXNzIEIwIHsKKyAgY2xhc3MgQyB7CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvamF2YURvYy9yZXNvbHZlL3BrZy9TZWUxLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2phdmFEb2MvcmVzb2x2ZS9wa2cvU2VlMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZjZDU4ZmMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2phdmFEb2MvcmVzb2x2ZS9wa2cvU2VlMS5qYXZhCkBAIC0wLDAgKzEsMTYgQEAKK3BhY2thZ2UgcGtnOworCisvKioKKyAqIEBzZWUgIzxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdtZXRob2QoQjEuQyknIj5tZXRob2Q8L2Vycm9yPihCMS5DKQorICogQHNlZSAjPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ21ldGhvZChCMS5DW11bXSknIj5tZXRob2Q8L2Vycm9yPihCMS5DW11bXSkKKyAqIEBzZWUgIzxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdtZXRob2QoQjEuQy4uKSciPm1ldGhvZDwvZXJyb3I+KDxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdCMS5DLiciPkIxLkMuPC9lcnJvcj4uKQorICogQHNlZSAjPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ21ldGhvZChCMS5DWyknIj5tZXRob2Q8L2Vycm9yPihCMS5DWykKKyAqLworY2xhc3MgQTEgeworICBwdWJsaWMgdm9pZCBtZXRob2QoQjEuQ1tdIGMpIHsgfQorfQorCitjbGFzcyBCMSB7CisgIGNsYXNzIEMgeworICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2phdmFEb2MvcmVzb2x2ZS9wa2cvU2VlMi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9qYXZhRG9jL3Jlc29sdmUvcGtnL1NlZTIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lM2Q2MDdlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9qYXZhRG9jL3Jlc29sdmUvcGtnL1NlZTIuamF2YQpAQCAtMCwwICsxLDEzIEBACitwYWNrYWdlIHBrZzsKKworaW1wb3J0IGphdmEudXRpbC5MaXN0OworCisvKioKKyAqIEBzZWUgI21ldGhvZChqYXZhLnV0aWwuTGlzdCkKKyAqIEBzZWUgI21ldGhvZChqYXZhLnV0aWwuTGlzdDxTdHJpbmc+KQorICogQHNlZSAjbWV0aG9kKGphdmEudXRpbC5MaXN0PFQ+KQorICogQHNlZSAjbWV0aG9kKGphdmEudXRpbC5MaXN0PE51bWJlcj4pCisgKi8KK2NsYXNzIEEyPFQ+IHsKKyAgcHVibGljIHZvaWQgbWV0aG9kKExpc3Q8U3RyaW5nPiBsaXN0KSB7IH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvamF2YURvYy9yZXNvbHZlL3BrZy9TZWUzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2phdmFEb2MvcmVzb2x2ZS9wa2cvU2VlMy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRkN2JmOTMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2phdmFEb2MvcmVzb2x2ZS9wa2cvU2VlMy5qYXZhCkBAIC0wLDAgKzEsMjggQEAKK3BhY2thZ2UgcGtnOworCisvKioKKyAqIEBzZWUgI2VxdWFscyhPYmplY3QpCisKKyAqIEBzZWUgQTMjZXF1YWxzKE9iamVjdCkKKyAqIEBzZWUgcGtnLkEzI2VxdWFscyhPYmplY3QpCisKKyAqIEBzZWUgT2JqZWN0I2VxdWFscyhPYmplY3QpCisgKiBAc2VlIGphdmEubGFuZy5PYmplY3QjZXF1YWxzKE9iamVjdCkKKyAqLworY2xhc3MgQTMgeworICBwdWJsaWMgYm9vbGVhbiBlcXVhbHMoT2JqZWN0IG9iaikgeworICAgIHJldHVybiBzdXBlci5lcXVhbHMob2JqKTsKKyAgfQorfQorCisvKioKKyAqIEBzZWUgI2VxdWFscyhPYmplY3QpCisKKyAqIEBzZWUgQjMjZXF1YWxzKE9iamVjdCkKKyAqIEBzZWUgcGtnLkIzI2VxdWFscyhPYmplY3QpCisKKyAqIEBzZWUgT2JqZWN0I2VxdWFscyhPYmplY3QpCisgKiBAc2VlIGphdmEubGFuZy5PYmplY3QjZXF1YWxzKE9iamVjdCkKKyAqLworY2xhc3MgQjMgeworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9sYW1iZGEvZGlhbW9uZC9JREVBOTcyOTQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvbGFtYmRhL2RpYW1vbmQvSURFQTk3Mjk0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDRmZDk2OQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvbGFtYmRhL2RpYW1vbmQvSURFQTk3Mjk0LmphdmEKQEAgLTAsMCArMSwyNCBAQAoraW1wb3J0IGphdmEudXRpbC5Db21wYXJhdG9yOworCitpbnRlcmZhY2UgQmFzZVN0cmVhbTxUPiB7fQoraW50ZXJmYWNlIFN0cmVhbTxUPiBleHRlbmRzIEJhc2VTdHJlYW08VD4ge30KK2ludGVyZmFjZSBJbnRlcm1lZGlhdGVPcDxFX0lOLCBFX09VVD4gZXh0ZW5kcyBTdHJlYW1PcDxFX0lOLCBOb2RlPEVfT1VUPj4ge30KK2ludGVyZmFjZSBTdHJlYW1PcDxFX0lOLCBSPiB7fQoraW50ZXJmYWNlIFN0YXRlZnVsT3A8RV9JTiwgRV9PVVQ+IGV4dGVuZHMgSW50ZXJtZWRpYXRlT3A8RV9JTiwgRV9PVVQ+IHt9CitpbnRlcmZhY2UgVGVybWluYWxPcDxFX0lOLCBSPiBleHRlbmRzIFN0cmVhbU9wPEVfSU4sIFI+IHt9CisKK2ludGVyZmFjZSBOb2RlPFQ+IGV4dGVuZHMgSXRlcmFibGU8VD4ge30KK2NsYXNzIFNvcnRlZE9wPFQ+IGltcGxlbWVudHMgU3RhdGVmdWxPcDxULCBUPiB7CisgICAgcHVibGljIFNvcnRlZE9wKENvbXBhcmF0b3I8PyBzdXBlciBUPiBjb21wYXJhdG9yKSB7CisgICAgfQorfQorCitjbGFzcyBVc2FnZTxUPiB7CisgICAgcHVibGljIDxFLCBTIGV4dGVuZHMgQmFzZVN0cmVhbTxFPj4gUyBwaXBlbGluZShJbnRlcm1lZGlhdGVPcDxULCBFPiBuZXdPcCkgeyByZXR1cm4gbnVsbDsgfQorICAgIHB1YmxpYyA8Uj4gUiBwaXBlbGluZShUZXJtaW5hbE9wPFQsIFI+IHRlcm1pbmFsKSB7IHJldHVybiBudWxsO30KKworCisgICAgcHVibGljIFN0cmVhbTxUPiBzb3J0ZWQoQ29tcGFyYXRvcjw/IHN1cGVyIFQ+IGNvbXBhcmF0b3IpIHsKKyAgICAgICAgcmV0dXJuIHBpcGVsaW5lKG5ldyBTb3J0ZWRPcDw+KGNvbXBhcmF0b3IpKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2xhbWJkYS9mdW5jdGlvbmFsSW50ZXJmYWNlL0Fic3RyYWN0Q2xhc3MuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvbGFtYmRhL2Z1bmN0aW9uYWxJbnRlcmZhY2UvQWJzdHJhY3RDbGFzcy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFiM2M4MDMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2xhbWJkYS9mdW5jdGlvbmFsSW50ZXJmYWNlL0Fic3RyYWN0Q2xhc3MuamF2YQpAQCAtMCwwICsxIEBACithYnN0cmFjdCBjbGFzcyBGb28geyBwdWJsaWMgYWJzdHJhY3Qgdm9pZCBydW4oKTsgfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvbGFtYmRhL2Z1bmN0aW9uYWxJbnRlcmZhY2UvQ2xvbmUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvbGFtYmRhL2Z1bmN0aW9uYWxJbnRlcmZhY2UvQ2xvbmUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MjBiZjBjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9sYW1iZGEvZnVuY3Rpb25hbEludGVyZmFjZS9DbG9uZS5qYXZhCkBAIC0wLDAgKzEsNCBAQAoraW50ZXJmYWNlIEZvbyB7CisgIGludCBtKCk7CisgIE9iamVjdCBjbG9uZSgpOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvbGFtYmRhL2Z1bmN0aW9uYWxJbnRlcmZhY2UvTWV0aG9kV2l0aFR5cGVQYXJhbS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9sYW1iZGEvZnVuY3Rpb25hbEludGVyZmFjZS9NZXRob2RXaXRoVHlwZVBhcmFtLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODJhMzMwMwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvbGFtYmRhL2Z1bmN0aW9uYWxJbnRlcmZhY2UvTWV0aG9kV2l0aFR5cGVQYXJhbS5qYXZhCkBAIC0wLDAgKzEsMyBAQAoraW50ZXJmYWNlIEZvbyB7IDxUPiBUIGV4ZWN1dGUoQWN0aW9uPFQ+IGEpOyB9CitpbnRlcmZhY2UgQWN0aW9uPEE+e30KKyAgLy8gRnVuY3Rpb25hbApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvbGFtYmRhL2Z1bmN0aW9uYWxJbnRlcmZhY2UvTXVsdGlwbGVNZXRob2RzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2xhbWJkYS9mdW5jdGlvbmFsSW50ZXJmYWNlL011bHRpcGxlTWV0aG9kcy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUyNzdjODQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2xhbWJkYS9mdW5jdGlvbmFsSW50ZXJmYWNlL011bHRpcGxlTWV0aG9kcy5qYXZhCkBAIC0wLDAgKzEsMyBAQAoraW50ZXJmYWNlIEJhciB7IGJvb2xlYW4gZXF1YWxzKE9iamVjdCBvYmopOyB9CisKK2ludGVyZmFjZSBGb28gZXh0ZW5kcyBCYXIgeyBpbnQgY29tcGFyZShTdHJpbmcgbzEsIFN0cmluZyBvMik7IH0KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvbGFtYmRhL2Z1bmN0aW9uYWxJbnRlcmZhY2UvTXVsdGlwbGVNZXRob2RzSW5PbmUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvbGFtYmRhL2Z1bmN0aW9uYWxJbnRlcmZhY2UvTXVsdGlwbGVNZXRob2RzSW5PbmUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNzkyZjRiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9sYW1iZGEvZnVuY3Rpb25hbEludGVyZmFjZS9NdWx0aXBsZU1ldGhvZHNJbk9uZS5qYXZhCkBAIC0wLDAgKzEsNCBAQAoraW50ZXJmYWNlIEZvbzxUPiB7CisgYm9vbGVhbiBlcXVhbHMoT2JqZWN0IG9iaik7CisgaW50IGNvbXBhcmUoVCBvMSwgVCBvMik7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9sYW1iZGEvZnVuY3Rpb25hbEludGVyZmFjZS9Ob01ldGhvZHMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvbGFtYmRhL2Z1bmN0aW9uYWxJbnRlcmZhY2UvTm9NZXRob2RzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDA5NDdkMgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvbGFtYmRhL2Z1bmN0aW9uYWxJbnRlcmZhY2UvTm9NZXRob2RzLmphdmEKQEAgLTAsMCArMSBAQAoraW50ZXJmYWNlIEZvbyB7IGJvb2xlYW4gZXF1YWxzKE9iamVjdCBvYmopOyB9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9sYW1iZGEvZnVuY3Rpb25hbEludGVyZmFjZS9TaW1wbGUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvbGFtYmRhL2Z1bmN0aW9uYWxJbnRlcmZhY2UvU2ltcGxlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTdkNDI5ZmQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2xhbWJkYS9mdW5jdGlvbmFsSW50ZXJmYWNlL1NpbXBsZS5qYXZhCkBAIC0wLDAgKzEgQEAKK2ludGVyZmFjZSBGb28geyB2b2lkIHJ1bigpOyB9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9sYW1iZGEvZnVuY3Rpb25hbEludGVyZmFjZS9Ud29NZXRob2RzTm9TdWJTaWduYXR1cmUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvbGFtYmRhL2Z1bmN0aW9uYWxJbnRlcmZhY2UvVHdvTWV0aG9kc05vU3ViU2lnbmF0dXJlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2I3OGEwMwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvbGFtYmRhL2Z1bmN0aW9uYWxJbnRlcmZhY2UvVHdvTWV0aG9kc05vU3ViU2lnbmF0dXJlLmphdmEKQEAgLTAsMCArMSw0IEBACitpbnRlcmZhY2UgWCB7IGludCBtKEl0ZXJhYmxlPFN0cmluZz4gYXJnKTsgfQoraW50ZXJmYWNlIFkgeyBpbnQgbShJdGVyYWJsZTxJbnRlZ2VyPiBhcmcpOyB9CitpbnRlcmZhY2UgRm9vIGV4dGVuZHMgWCwgWSB7fQorICAvLyBOb3QgZnVuY3Rpb25hbDogTm8gbWV0aG9kIGhhcyBhIHN1YnNpZ25hdHVyZSBvZiBhbGwgYWJzdHJhY3QgbWV0aG9kcwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvbGFtYmRhL2Z1bmN0aW9uYWxJbnRlcmZhY2UvVHdvTWV0aG9kc05vU3ViU2lnbmF0dXJlMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9sYW1iZGEvZnVuY3Rpb25hbEludGVyZmFjZS9Ud29NZXRob2RzTm9TdWJTaWduYXR1cmUxLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDY1NTlmZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvbGFtYmRhL2Z1bmN0aW9uYWxJbnRlcmZhY2UvVHdvTWV0aG9kc05vU3ViU2lnbmF0dXJlMS5qYXZhCkBAIC0wLDAgKzEsNCBAQAoraW50ZXJmYWNlIFggeyBpbnQgbShJdGVyYWJsZTxTdHJpbmc+IGFyZywgQ2xhc3MgYyk7IH0KK2ludGVyZmFjZSBZIHsgaW50IG0oSXRlcmFibGUgYXJnLCBDbGFzczw/PiBjKTsgfQoraW50ZXJmYWNlIEZvbyBleHRlbmRzIFgsIFkge30KKyAgLy8gTm90IGZ1bmN0aW9uYWw6IE5vIG1ldGhvZCBoYXMgYSBzdWJzaWduYXR1cmUgb2YgYWxsIGFic3RyYWN0IG1ldGhvZHMKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2xhbWJkYS9mdW5jdGlvbmFsSW50ZXJmYWNlL1R3b01ldGhvZHNTYW1lU2lnbmF0dXJlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2xhbWJkYS9mdW5jdGlvbmFsSW50ZXJmYWNlL1R3b01ldGhvZHNTYW1lU2lnbmF0dXJlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGU5NWRmZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvbGFtYmRhL2Z1bmN0aW9uYWxJbnRlcmZhY2UvVHdvTWV0aG9kc1NhbWVTaWduYXR1cmUuamF2YQpAQCAtMCwwICsxLDQgQEAKK2ltcG9ydCBqYXZhLnV0aWwuKjsKK2ludGVyZmFjZSBYIHsgaW50IG0oSXRlcmFibGU8U3RyaW5nPiBhcmcpOyB9CitpbnRlcmZhY2UgWSB7IGludCBtKEl0ZXJhYmxlPFN0cmluZz4gYXJnKTsgfQoraW50ZXJmYWNlIEZvbyBleHRlbmRzIFgsIFkge30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2xhbWJkYS9mdW5jdGlvbmFsSW50ZXJmYWNlL1R3b01ldGhvZHNTYW1lU2lnbmF0dXJlVHlwZVBhcmFtcy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9sYW1iZGEvZnVuY3Rpb25hbEludGVyZmFjZS9Ud29NZXRob2RzU2FtZVNpZ25hdHVyZVR5cGVQYXJhbXMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NmZkZGU4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9sYW1iZGEvZnVuY3Rpb25hbEludGVyZmFjZS9Ud29NZXRob2RzU2FtZVNpZ25hdHVyZVR5cGVQYXJhbXMuamF2YQpAQCAtMCwwICsxLDUgQEAKK2ludGVyZmFjZSBBY3Rpb248QT57fQoraW50ZXJmYWNlIFggeyA8VD4gVCBleGVjdXRlKEFjdGlvbjxUPiBhKTsgfQoraW50ZXJmYWNlIFkgeyA8Uz4gUyBleGVjdXRlKEFjdGlvbjxTPiBhKTsgfQoraW50ZXJmYWNlIEZvbyBleHRlbmRzIFgsIFkge30KKyAgLy8gRnVuY3Rpb25hbDogc2lnbmF0dXJlcyBhcmUgInRoZSBzYW1lIgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvbGFtYmRhL2Z1bmN0aW9uYWxJbnRlcmZhY2UvVHdvTWV0aG9kc1NhbWVTdWJzdFNpZ25hdHVyZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9sYW1iZGEvZnVuY3Rpb25hbEludGVyZmFjZS9Ud29NZXRob2RzU2FtZVN1YnN0U2lnbmF0dXJlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2Y0MzNmYgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvbGFtYmRhL2Z1bmN0aW9uYWxJbnRlcmZhY2UvVHdvTWV0aG9kc1NhbWVTdWJzdFNpZ25hdHVyZS5qYXZhCkBAIC0wLDAgKzEsNSBAQAoraW50ZXJmYWNlIEZvbzE8VCwgTiBleHRlbmRzIE51bWJlcj4geworICB2b2lkIG0oVCBhcmcpOworICB2b2lkIG0oTiBhcmcpOworfQoraW50ZXJmYWNlIEZvbyBleHRlbmRzIEZvbzE8SW50ZWdlciwgSW50ZWdlcj4ge30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2xhbWJkYS9mdW5jdGlvbmFsSW50ZXJmYWNlL1R3b01ldGhvZHNTdWJTaWduYXR1cmUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvbGFtYmRhL2Z1bmN0aW9uYWxJbnRlcmZhY2UvVHdvTWV0aG9kc1N1YlNpZ25hdHVyZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI5MDNkMDQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2xhbWJkYS9mdW5jdGlvbmFsSW50ZXJmYWNlL1R3b01ldGhvZHNTdWJTaWduYXR1cmUuamF2YQpAQCAtMCwwICsxLDQgQEAKK2ltcG9ydCBqYXZhLnV0aWwuKjsKK2ludGVyZmFjZSBYIHsgSXRlcmFibGUgbShJdGVyYWJsZTxTdHJpbmc+IGFyZyk7IH0KK2ludGVyZmFjZSBZIHsgSXRlcmFibGU8U3RyaW5nPiBtKEl0ZXJhYmxlIGFyZyk7IH0KK2ludGVyZmFjZSBGb28gZXh0ZW5kcyBYLCBZIHt9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9sYW1iZGEvaGlnaGxpZ2h0aW5nL0FscmVhZHlVc2VkUGFyYW1OYW1lLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2xhbWJkYS9oaWdobGlnaHRpbmcvQWxyZWFkeVVzZWRQYXJhbU5hbWUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMDliYWRjYgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvbGFtYmRhL2hpZ2hsaWdodGluZy9BbHJlYWR5VXNlZFBhcmFtTmFtZS5qYXZhCkBAIC0wLDAgKzEsNiBAQAorY2xhc3MgVGVzdCB7CisgIHsKKyAgICBPYmplY3QgbyA9IG51bGw7CisgICAgQ29tcGFyYWJsZTxTdHJpbmc+IGMgPSA8ZXJyb3IgZGVzY3I9IlZhcmlhYmxlICdvJyBpcyBhbHJlYWR5IGRlZmluZWQgaW4gdGhlIHNjb3BlIj5vPC9lcnJvcj4gLT4gNDI7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2xhbWJkYS9oaWdobGlnaHRpbmcvQW1iaWd1aXR5MS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9sYW1iZGEvaGlnaGxpZ2h0aW5nL0FtYmlndWl0eTEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNjY2MzAxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9sYW1iZGEvaGlnaGxpZ2h0aW5nL0FtYmlndWl0eTEuamF2YQpAQCAtMCwwICsxLDIyIEBACitpbnRlcmZhY2UgSTEgeworICB2b2lkIG0oKTsKK30KKworaW50ZXJmYWNlIEkyPFg+IHsKKyAgWCBtKCk7Cit9CisKK2NsYXNzIEFtYmlndWl0eTEgeworCisgIHN0YXRpYyB2b2lkIG0oSTEgaTEpIHt9CisgIHN0YXRpYyA8VD4gdm9pZCBtKEkyPFQ+IGkyKSB7fQorCisgIHsKKyAgICBtPGVycm9yIGRlc2NyPSJBbWJpZ3VvdXMgbWV0aG9kIGNhbGw6IGJvdGggJ0FtYmlndWl0eTEubShJMSknIGFuZCAnQW1iaWd1aXR5MS5tKEkyPE9iamVjdD4pJyBtYXRjaCI+KCgpLT57dGhyb3cgbmV3IEFzc2VydGlvbkVycm9yKCk7fSk8L2Vycm9yPjsKKyAgICBtKCgpIC0+IHt9KTsKKyAgICBtKCgpIC0+IHsKKyAgICAgICAgaWYgKGZhbHNlKSByZXR1cm47CisgICAgICAgIHRocm93IG5ldyBSdW50aW1lRXhjZXB0aW9uKCk7CisgICAgfSk7CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvbGFtYmRhL2hpZ2hsaWdodGluZy9BbWJpZ3VpdHkyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2xhbWJkYS9oaWdobGlnaHRpbmcvQW1iaWd1aXR5Mi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdlNDFjNWJhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9sYW1iZGEvaGlnaGxpZ2h0aW5nL0FtYmlndWl0eTIuamF2YQpAQCAtMCwwICsxLDIwNyBAQAorLyoKKyAqIENvcHlyaWdodCAyMDAwLTIwMTIgSmV0QnJhaW5zIHMuci5vLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworaW1wb3J0IGphdmEudXRpbC4qOworCitjbGFzcyBUZXN0IHsKKyAgICBpbnRlcmZhY2UgRm9vPFQ+IHsKKyAgICAgICAgdm9pZCBmb28oVCB0KTsKKyAgICB9CisKKyAgICBpbnRlcmZhY2UgSW50Rm9vIHsKKyAgICAgICAgdm9pZCBmb28oaW50IGkpOworICAgIH0KKyAgICAKKyAgICBpbnRlcmZhY2UgT2JqZWN0Rm9vPFQ+IHsKKyAgICAgICAgdm9pZCBmb28oaW50IGkpOworICAgIH0KKyAgICAKKyAgICBpbnRlcmZhY2UgRm9vTGlzdDxUPiB7CisgICAgICAgIHZvaWQgZm9vKExpc3Q8VD4gdExpc3QpOworICAgIH0KKworICAgIDxUPiB2b2lkIGYoRm9vPFQ+IGZvbykgeworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIkZvbzxUPiIpOworICAgIH0KKyAgICAKKyAgICA8VD4gdm9pZCBmKEZvb0xpc3Q8VD4gZm9vKSB7CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiRm9vTGlzdDxUPiIpOworICAgIH0KKyAgICAvKnZvaWQgZihJbnRGb28gZm9vKSB7CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiSW50Rm9vIik7CisgICAgfSovCisgICAgCisgICAgLyp2b2lkIGYoT2JqZWN0Rm9vIGZvbykgeworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIk9iamVjdEZvbyIpOworICAgIH0qLworCisgICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgeworICAgICAgICBuZXcgVGVzdCgpLmY8ZXJyb3IgZGVzY3I9IkFtYmlndW91cyBtZXRob2QgY2FsbDogYm90aCAnVGVzdC5mKEZvbzxPYmplY3Q+KScgYW5kICdUZXN0LmYoRm9vTGlzdDxPYmplY3Q+KScgbWF0Y2giPihudWxsKTwvZXJyb3I+OworICAgICAgICBuZXcgVGVzdCgpLjxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgbWV0aG9kICdmKDxsYW1iZGEgZXhwcmVzc2lvbj4pJyI+ZjwvZXJyb3I+KHggLT4ge30pOworICAgIH0KK30KKworY2xhc3MgVGVzdDEgeworICAgIGludGVyZmFjZSBGb288VD4geworICAgICAgICB2b2lkIGZvbyhUIHQpOworICAgIH0KKworICAgIGludGVyZmFjZSBJbnRGb28geworICAgICAgICB2b2lkIGZvbyhpbnQgaSk7CisgICAgfQorICAgIAorICAgIGludGVyZmFjZSBPYmplY3RGb288VD4geworICAgICAgICB2b2lkIGZvbyhpbnQgaSk7CisgICAgfQorICAgIAorICAgIGludGVyZmFjZSBGb29MaXN0PFQ+IHsKKyAgICAgICAgdm9pZCBmb28oTGlzdDxUPiB0TGlzdCk7CisgICAgfQorCisgICAgPFQ+IHZvaWQgZihGb288VD4gZm9vKSB7CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiRm9vPFQ+Iik7CisgICAgfQorICAgIAorICAgIDxUPiB2b2lkIGYoRm9vTGlzdDxUPiBmb28pIHsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJGb29MaXN0PFQ+Iik7CisgICAgfQorICAgIAorICAgIHZvaWQgZihJbnRGb28gZm9vKSB7CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiSW50Rm9vIik7CisgICAgfQorICAgIAorICAgIC8qdm9pZCBmKE9iamVjdEZvbyBmb28pIHsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJPYmplY3RGb28iKTsKKyAgICB9Ki8KKworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKKyAgICAgICAgbmV3IFRlc3QxKCkuZjxlcnJvciBkZXNjcj0iQW1iaWd1b3VzIG1ldGhvZCBjYWxsOiBib3RoICdUZXN0MS5mKEZvbzxPYmplY3Q+KScgYW5kICdUZXN0MS5mKEZvb0xpc3Q8T2JqZWN0PiknIG1hdGNoIj4obnVsbCk8L2Vycm9yPjsKKyAgICAgICAgbmV3IFRlc3QxKCkuZih4IC0+IHt9KTsKKyAgICB9Cit9CisKK2NsYXNzIFRlc3QyIHsKKyAgICBpbnRlcmZhY2UgRm9vPFQ+IHsKKyAgICAgICAgdm9pZCBmb28oVCB0KTsKKyAgICB9CisKKyAgICBpbnRlcmZhY2UgSW50Rm9vIHsKKyAgICAgICAgdm9pZCBmb28oaW50IGkpOworICAgIH0KKyAgICAKKyAgICBpbnRlcmZhY2UgT2JqZWN0Rm9vPFQ+IHsKKyAgICAgICAgdm9pZCBmb28oaW50IGkpOworICAgIH0KKyAgICAKKyAgICBpbnRlcmZhY2UgRm9vTGlzdDxUPiB7CisgICAgICAgIHZvaWQgZm9vKExpc3Q8VD4gdExpc3QpOworICAgIH0KKworICAgIDxUPiB2b2lkIGYoRm9vPFQ+IGZvbykgeworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIkZvbzxUPiIpOworICAgIH0KKyAgICAKKyAgICA8VD4gdm9pZCBmKEZvb0xpc3Q8VD4gZm9vKSB7CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiRm9vTGlzdDxUPiIpOworICAgIH0KKyAgICB2b2lkIGYoSW50Rm9vIGZvbykgeworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIkludEZvbyIpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGYoT2JqZWN0Rm9vIGZvbykgeworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIk9iamVjdEZvbyIpOworICAgIH0KKworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKKyAgICAgICAgbmV3IFRlc3QyKCkuZjxlcnJvciBkZXNjcj0iQW1iaWd1b3VzIG1ldGhvZCBjYWxsOiBib3RoICdUZXN0Mi5mKEZvbzxPYmplY3Q+KScgYW5kICdUZXN0Mi5mKEZvb0xpc3Q8T2JqZWN0PiknIG1hdGNoIj4obnVsbCk8L2Vycm9yPjsKKyAgICAgICAgbmV3IFRlc3QyKCkuZjxlcnJvciBkZXNjcj0iQW1iaWd1b3VzIG1ldGhvZCBjYWxsOiBib3RoICdUZXN0Mi5mKEludEZvbyknIGFuZCAnVGVzdDIuZihPYmplY3RGb28pJyBtYXRjaCI+KHggLT4ge30pPC9lcnJvcj47CisgICAgfQorfQorCisKK2NsYXNzIFRlc3QzIHsKKyAgICBpbnRlcmZhY2UgRm9vPFQ+IHsKKyAgICAgICAgdm9pZCBmb28oVCB0KTsKKyAgICB9CisKKyAgICBpbnRlcmZhY2UgSW50Rm9vIHsKKyAgICAgICAgdm9pZCBmb28oaW50IGkpOworICAgIH0KKyAgICAKKyAgICBpbnRlcmZhY2UgT2JqZWN0Rm9vPFQ+IHsKKyAgICAgICAgdm9pZCBmb28oaW50IGkpOworICAgIH0KKyAgICAKKyAgICBpbnRlcmZhY2UgRm9vTGlzdDxUPiB7CisgICAgICAgIHZvaWQgZm9vKExpc3Q8VD4gdExpc3QpOworICAgIH0KKworICAgIDxUPiB2b2lkIGYoRm9vPFQ+IGZvbykgeworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIkZvbzxUPiIpOworICAgIH0KKyAgICAKKyAgICA8VD4gdm9pZCBmKEZvb0xpc3Q8VD4gZm9vKSB7CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiRm9vTGlzdDxUPiIpOworICAgIH0KKyAgICAvKnZvaWQgZihJbnRGb28gZm9vKSB7CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiSW50Rm9vIik7CisgICAgfSovCisgICAgCisgICAgdm9pZCBmKE9iamVjdEZvbyBmb28pIHsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJPYmplY3RGb28iKTsKKyAgICB9CisKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CisgICAgICAgIG5ldyBUZXN0MygpLmY8ZXJyb3IgZGVzY3I9IkFtYmlndW91cyBtZXRob2QgY2FsbDogYm90aCAnVGVzdDMuZihGb288T2JqZWN0PiknIGFuZCAnVGVzdDMuZihGb29MaXN0PE9iamVjdD4pJyBtYXRjaCI+KG51bGwpPC9lcnJvcj47CisgICAgICAgIG5ldyBUZXN0MygpLmYoeCAtPiB7fSk7CisgICAgfQorfQorCisKK2NsYXNzIFRlc3QgeworICAgIGludGVyZmFjZSBGb288VD4geworICAgICAgICB2b2lkIGZvbyhUIHQsIFQgdDEpOworICAgIH0KKyAgICBpbnRlcmZhY2UgRm9vMTxUPiB7CisgICAgICAgIHZvaWQgZm9vKFQgdCwgU3RyaW5nIHQxKTsKKyAgICB9CisgICAgaW50ZXJmYWNlIEZvbzI8VD4geworICAgICAgICB2b2lkIGZvbyhTdHJpbmcgdCwgU3RyaW5nIHQxKTsKKyAgICB9CisKKyAgICA8VD4gdm9pZCBmKEZvbzxUPiBmb28pIHsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJGb288VD4iKTsKKyAgICB9CisgICAgCisgICAgPFQ+IHZvaWQgZihGb28xPFQ+IGZvbykgeworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIkZvb0xpc3Q8VD4iKTsKKyAgICB9CisgICAgPFQ+IHZvaWQgZihGb28yPFQ+IGZvbykgeworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIkZvb0xpc3Q8VD4iKTsKKyAgICB9CisgICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgeworICAgICAgICBuZXcgVGVzdCgpLmYoKFN0cmluZyB4LCBTdHJpbmcgeSkgLT4ge30pOworICAgIH0KK30KKworCisKKworCisKKworCisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvbGFtYmRhL2hpZ2hsaWdodGluZy9BbWJpZ3VpdHlSYXdHZW5lcmljcy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9sYW1iZGEvaGlnaGxpZ2h0aW5nL0FtYmlndWl0eVJhd0dlbmVyaWNzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTk1Nzg3NwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvbGFtYmRhL2hpZ2hsaWdodGluZy9BbWJpZ3VpdHlSYXdHZW5lcmljcy5qYXZhCkBAIC0wLDAgKzEsMjcgQEAKK2ludGVyZmFjZSBJIHsKKyAgICB2b2lkIG0oKTsKK30KKworaW50ZXJmYWNlIEkxIHsKKyAgICBpbnQgbSgpOworfQorCitpbnRlcmZhY2UgSTIgeworICAgIFN0cmluZyBtKCk7Cit9CisKK2ludGVyZmFjZSBJMzxBPiB7CisgICAgQSBtKCk7Cit9CisKK2NsYXNzIEFtYmlndWl0eVJhd0dlbmVyaWNzIHsKKworICAgIHZvaWQgZm9vKEkgcykgeyB9CisgICAgdm9pZCBmb28oSTEgcykgeyB9CisgICAgdm9pZCBmb28oSTIgcykgeyB9CisgICAgPFo+IHZvaWQgZm9vKEkzPFo+IHMpIHsgfQorCisgICAgdm9pZCBiYXIoKSB7CisgICAgICAgIGZvbzxlcnJvciBkZXNjcj0iQW1iaWd1b3VzIG1ldGhvZCBjYWxsOiBib3RoICdBbWJpZ3VpdHlSYXdHZW5lcmljcy5mb28oSSknIGFuZCAnQW1iaWd1aXR5UmF3R2VuZXJpY3MuZm9vKEkxKScgbWF0Y2giPigoKS0+IHsgdGhyb3cgbmV3IFJ1bnRpbWVFeGNlcHRpb24oKTsgfSk8L2Vycm9yPjsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9sYW1iZGEvaGlnaGxpZ2h0aW5nL0FtYmlndWl0eVZhcmFyZ3MuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvbGFtYmRhL2hpZ2hsaWdodGluZy9BbWJpZ3VpdHlWYXJhcmdzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDEyY2JlNQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvbGFtYmRhL2hpZ2hsaWdodGluZy9BbWJpZ3VpdHlWYXJhcmdzLmphdmEKQEAgLTAsMCArMSwyOCBAQAoraW50ZXJmYWNlIEkgeworICAgIHZvaWQgbSgpOworfQorCitpbnRlcmZhY2UgSTE8QT4geworICAgIHZvaWQgbShBIGEpOworfQorCitpbnRlcmZhY2UgSTI8QT4geworICAgIHZvaWQgbShBIGExLCBBIGEyKTsKK30KKworaW50ZXJmYWNlIElWPEE+IHsKKyAgICB2b2lkIG0oQS4uLiBhcyk7Cit9CisKK2NsYXNzIEFtYmlndWl0eVZhcmFyZ3MgeworICAgIHZvaWQgZm9vKEkgcykgeyB9CisgICAgdm9pZCBmb28oSTE8U3RyaW5nPiBzKSB7IH0KKyAgICB2b2lkIGZvbyhJMjxTdHJpbmc+IHMpIHsgfQorICAgIHZvaWQgZm9vKElWPFN0cmluZz4gcykgeyB9CisKKyAgICB2b2lkIHRlc3QoKSB7CisgICAgICAgIGZvbygoKS0+e30pOworICAgICAgICBmb288ZXJyb3IgZGVzY3I9IkFtYmlndW91cyBtZXRob2QgY2FsbDogYm90aCAnQW1iaWd1aXR5VmFyYXJncy5mb28oSTE8U3RyaW5nPiknIGFuZCAnQW1iaWd1aXR5VmFyYXJncy5mb28oSVY8U3RyaW5nPiknIG1hdGNoIj4oKGExKSAtPiB7fSk8L2Vycm9yPjsKKyAgICAgICAgZm9vKChhMSwgYTIpLT57fSk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvbGFtYmRhL2hpZ2hsaWdodGluZy9DYXN0SW5Db250ZXh0cy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9sYW1iZGEvaGlnaGxpZ2h0aW5nL0Nhc3RJbkNvbnRleHRzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWY1NzdmOAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvbGFtYmRhL2hpZ2hsaWdodGluZy9DYXN0SW5Db250ZXh0cy5qYXZhCkBAIC0wLDAgKzEsMjcgQEAKK2ludGVyZmFjZSBJIHsKKyAgICB2b2lkIG0oaW50IHgpOworfQorCitpbnRlcmZhY2UgSTEgeworICAgIGludCBtKCk7Cit9CitjbGFzcyBDYXN0SW5Db250ZXh0cyB7CisgICAgdm9pZCBtKEkgcykgeyB9CisKKyAgICB2b2lkIGFzc2lnbm1lbnQoKSB7CisgICAgICAgIEkgaTEgPSAoSSkoeC0+IHsgU3lzdGVtLm91dC5wcmludGxuKCk7IH0pOworICAgICAgICBJIGkyID0gKEkpKCh4LT4geyBTeXN0ZW0ub3V0LnByaW50bG4oKTsgfSkpOworICAgIH0KKyAgICAKKyAgICB2b2lkIG1ldGhvZCgpIHsKKyAgICAgICAgbSgoSSkoeC0+IHsgU3lzdGVtLm91dC5wcmludGxuKCk7IH0pKTsKKyAgICB9CisKKyAgICBJIHJldHVybkNvbnRleHQoKSB7CisgICAgICAgIHJldHVybiAoSSkoeCAtPiB7IFN5c3RlbS5vdXQucHJpbnRsbigpOyB9KTsKKyAgICB9CisKKyAgICB7CisgICAgICBpbnQgaSA9IDxlcnJvciBkZXNjcj0iSW5jb252ZXJ0aWJsZSB0eXBlczsgY2Fubm90IGNhc3QgJzxsYW1iZGEgZXhwcmVzc2lvbj4nIHRvICdpbnQnIj4oaW50KSAoKS0+IDE8L2Vycm9yPjsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9sYW1iZGEvaGlnaGxpZ2h0aW5nL0NvbmRpdGlvbmFsRXhwci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9sYW1iZGEvaGlnaGxpZ2h0aW5nL0NvbmRpdGlvbmFsRXhwci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU0NGYwZGUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2xhbWJkYS9oaWdobGlnaHRpbmcvQ29uZGl0aW9uYWxFeHByLmphdmEKQEAgLTAsMCArMSw1MSBAQAorLyoKKyAqIENvcHlyaWdodCAyMDAwLTIwMTIgSmV0QnJhaW5zIHMuci5vLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK2NsYXNzIFRlc3QgeworICBwdWJsaWMgaW50ZXJmYWNlIEkgeworICAgIGludCBtKCk7CisgIH0KKworICBwdWJsaWMgaW50ZXJmYWNlIEkxIHsKKyAgICBpbnQgbShpbnQgeSk7CisgIH0KKworICB7CisgICAgYm9vbGVhbiBmbGFnID0gdHJ1ZTsKKyAgICBJIGkgPSAgZmxhZyA/ICgoKSAtPiAxMjMpICAgOiAoKCkgLT4gMjIyKTsKKyAgICBJIGkxID0gIGZsYWcgPyAoKCkgLT4gezxlcnJvciBkZXNjcj0iTWlzc2luZyByZXR1cm4gc3RhdGVtZW50Ij59PC9lcnJvcj4pICAgOiAoKCkgLT4gMjIyKTsKKyAgICBPYmplY3QgaTIgPSAgZmxhZyA/ICg8ZXJyb3IgZGVzY3I9IlRhcmdldCB0eXBlIG9mIGEgbGFtYmRhIGNvbnZlcnNpb24gbXVzdCBiZSBhbiBpbnRlcmZhY2UiPigpIC0+IDQyPC9lcnJvcj4pICAgOiAoPGVycm9yIGRlc2NyPSJUYXJnZXQgdHlwZSBvZiBhIGxhbWJkYSBjb252ZXJzaW9uIG11c3QgYmUgYW4gaW50ZXJmYWNlIj4oKSAtPiAyMjI8L2Vycm9yPik7CisgICAgSSBpMyA9ICBmbGFnID8gKDxlcnJvciBkZXNjcj0iSW5jb21wYXRpYmxlIHBhcmFtZXRlciB0eXBlcyBpbiBsYW1iZGEgZXhwcmVzc2lvbiI+KHgpIC0+IDQyPC9lcnJvcj4pICAgOiAoKCkgLT4gMjIyKTsKKyAgICBJIGk0ID0gIGZsYWcgPyAoKCkgLT4gNDIpIDogbmV3IEkoKSB7CisgICAgICBAT3ZlcnJpZGUKKyAgICAgIHB1YmxpYyBpbnQgbSgpIHsKKyAgICAgICAgcmV0dXJuIDA7ICAvL1RvIGNoYW5nZSBib2R5IG9mIGltcGxlbWVudGVkIG1ldGhvZHMgdXNlIEZpbGUgfCBTZXR0aW5ncyB8IEZpbGUgVGVtcGxhdGVzLgorICAgICAgfQorICAgIH07CisgIH0KK30KKworY2xhc3MgVGVzdDEgeworICBpbnRlcmZhY2UgSTxULCBWPiB7CisgICAgViBfKFQgdCk7CisgIH0KKworICBzdGF0aWMgPFY+IHZvaWQgYmFyKEk8U3RyaW5nLCBWPiBpaSwgSTxWLCBTdHJpbmc+IGlrKXt9CisKKyAgeworICAgIGJhcihzIC0+IHMuZXF1YWxzKCIiKSA/IDAgOiAxLCBpIC0+ICIiKTsKKyAgfQorfQorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2xhbWJkYS9oaWdobGlnaHRpbmcvRGVmYXVsdE1ldGhvZC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9sYW1iZGEvaGlnaGxpZ2h0aW5nL0RlZmF1bHRNZXRob2QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZjg4NmZmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9sYW1iZGEvaGlnaGxpZ2h0aW5nL0RlZmF1bHRNZXRob2QuamF2YQpAQCAtMCwwICsxLDE3IEBACitjbGFzcyBUZXN0IHsKKyAgcHVibGljIHN0YXRpYyBmaW5hbCBCaW5hcnlPcGVyYXRvcjxJbnRlZ2VyPiByUGx1cyA9ICh4LCB5KSAtPiB4ICsgeTsKKyAgaW50ZXJmYWNlIEJpbmFyeU9wZXJhdG9yPFQ+IGV4dGVuZHMgQ29tYmluZXI8VCxULFQ+IHsKKyAgICBwdWJsaWMgVCBvcGVyYXRlKFQgbGVmdCwgVCByaWdodCk7CisKKyAgICBAT3ZlcnJpZGUKKyAgICBUIGNvbWJpbmUoVCB0MSwgVCB0MikgZGVmYXVsdCB7CisgICAgICByZXR1cm4gb3BlcmF0ZSh0MSwgdDIpOworICAgIH0KKyAgfQorCisgIGludGVyZmFjZSBDb21iaW5lcjxULCBVLCBWPiB7CisgICAgViBjb21iaW5lKFQgdCwgVSB1KTsKKyAgfQorfQorCisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvbGFtYmRhL2hpZ2hsaWdodGluZy9FZmZlY3RpdmVGaW5hbC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9sYW1iZGEvaGlnaGxpZ2h0aW5nL0VmZmVjdGl2ZUZpbmFsLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDdiNGQxNQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvbGFtYmRhL2hpZ2hsaWdodGluZy9FZmZlY3RpdmVGaW5hbC5qYXZhCkBAIC0wLDAgKzEsMTE3IEBACitpbnRlcmZhY2UgSSB7CisgIGludCBtKGludCBpKTsKK30KK2ludGVyZmFjZSBKIHsKKyAgaW50IG0oKTsKK30KKworcHVibGljIGNsYXNzIFhYWCB7CisKKyAgICBzdGF0aWMgdm9pZCBmb28oKSB7CisgICAgICAgIGludCBsID0gMDsKKyAgICAgICAgaW50IGogPSAwOworICAgICAgICBqID0gMjsKKyAgICAgICAgZmluYWwgaW50IEwgPSAwOworICAgICAgICBJIGkgPSAoaW50IGgpIC0+IHsgaW50IGsgPSAwOyByZXR1cm4gaCArIDxlcnJvciBkZXNjcj0iVmFyaWFibGUgdXNlZCBpbiBsYW1iZGEgZXhwcmVzc2lvbiBzaG91bGQgYmUgZWZmZWN0aXZlbHkgZmluYWwiPmo8L2Vycm9yPiArIGwgKyBMOyB9OworICAgIH0KKworICAgIHZvaWQgYmFyKCkgeworICAgICAgICBpbnQgbCA9IDA7CisgICAgICAgIGludCBqID0gMDsKKyAgICAgICAgaiA9IDI7CisgICAgICAgIGZpbmFsIGludCBMID0gMDsKKyAgICAgICAgSSBpID0gKGludCBoKSAtPiB7IGludCBrID0gMDsgcmV0dXJuIGggKyBrICsgPGVycm9yIGRlc2NyPSJWYXJpYWJsZSB1c2VkIGluIGxhbWJkYSBleHByZXNzaW9uIHNob3VsZCBiZSBlZmZlY3RpdmVseSBmaW5hbCI+ajwvZXJyb3I+ICsgbCArIEw7IH07CisgICAgfQorICAgIAorICAgICB2b2lkIGZvbyhKIGkpIHsgfQorIAorICAgICB2b2lkIG0xKGludCB4KSB7CisgICAgICAgICBpbnQgeSA9IDE7CisgICAgICAgICBmb28oKCkgLT4geCt5KTsKKyAgICAgfQorIAorICAgICB2b2lkIG0yKGludCB4KSB7CisgICAgICAgICBpbnQgeTsKKyAgICAgICAgIHkgPSAxOworICAgICAgICAgZm9vKCgpIC0+IHgreSk7CisgICAgIH0KKyAKKyAgICAgdm9pZCBtMyhpbnQgeCwgYm9vbGVhbiBjb25kKSB7CisgICAgICAgICBpbnQgeTsKKyAgICAgICAgIGlmIChjb25kKSB5ID0gMTsKKyAgICAgICAgIGZvbygoKSAtPiB4KzxlcnJvciBkZXNjcj0iVmFyaWFibGUgdXNlZCBpbiBsYW1iZGEgZXhwcmVzc2lvbiBzaG91bGQgYmUgZWZmZWN0aXZlbHkgZmluYWwiPnk8L2Vycm9yPik7CisgICAgIH0KKyAKKyAgICAgdm9pZCBtNChpbnQgeCwgYm9vbGVhbiBjb25kKSB7CisgICAgICAgICBpbnQgeTsKKyAgICAgICAgIGlmIChjb25kKSB5ID0gMTsKKyAgICAgICAgIGVsc2UgeSA9IDI7CisgICAgICAgICBmb28oKCkgLT4geCt5KTsKKyAgICAgfQorIAorICAgICB2b2lkIG01KGludCB4LCBib29sZWFuIGNvbmQpIHsKKyAgICAgICAgIGludCB5OworICAgICAgICAgaWYgKGNvbmQpIHkgPSAxOworICAgICAgICAgeSA9IDI7CisgICAgICAgICBmb28oKCkgLT4geCs8ZXJyb3IgZGVzY3I9IlZhcmlhYmxlIHVzZWQgaW4gbGFtYmRhIGV4cHJlc3Npb24gc2hvdWxkIGJlIGVmZmVjdGl2ZWx5IGZpbmFsIj55PC9lcnJvcj4pOworICAgICB9CisgCisgICAgIHZvaWQgbTYoaW50IHgpIHsKKyAgICAgICAgIGZvbygoKSAtPiA8ZXJyb3IgZGVzY3I9IlZhcmlhYmxlIHVzZWQgaW4gbGFtYmRhIGV4cHJlc3Npb24gc2hvdWxkIGJlIGVmZmVjdGl2ZWx5IGZpbmFsIj54PC9lcnJvcj4rMSk7CisgICAgICAgeCsrOworICAgICB9CisgCisgICAgIHZvaWQgbTcoaW50IHgpIHsKKyAgICAgICAgIGZvbygoKSAtPiA8ZXJyb3IgZGVzY3I9IlZhcmlhYmxlIHVzZWQgaW4gbGFtYmRhIGV4cHJlc3Npb24gc2hvdWxkIGJlIGVmZmVjdGl2ZWx5IGZpbmFsIj54PC9lcnJvcj49MSk7CisgICAgIH0KKyAKKyAgICAgdm9pZCBtOCgpIHsKKyAgICAgICAgIGludCB5OworICAgICAgICAgZm9vKCgpIC0+IDxlcnJvciBkZXNjcj0iVmFyaWFibGUgdXNlZCBpbiBsYW1iZGEgZXhwcmVzc2lvbiBzaG91bGQgYmUgZWZmZWN0aXZlbHkgZmluYWwiPnk8L2Vycm9yPj0xKTsKKyAgICAgfQorfQorCitjbGFzcyBTYW1wbGUgeworICAgICAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CisgICAgICAgICAgICAgICAgUnVubmFibGUgcnVubmFibGUgPSAoKSAtPiB7CisgICAgICAgICAgICAgICAgICAgICAgICBJbnRlZ2VyIGk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAodHJ1ZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gMTExOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oaSk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfTsKKworICAgICAgICAgICAgICAgIFJ1bm5hYmxlIHJ1bm5hYmxlMiA9ICgpIC0+IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIEludGVnZXIgaTIgPSAzMzM7CisgICAgICAgICAgICAgICAgICAgICAgICBpMiA9IDQ0NDsKKyAgICAgICAgICAgICAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihpMik7CisgICAgICAgICAgICAgICAgfTsKKworICAgICAgICAgICAgICAgIHJ1bm5hYmxlLnJ1bigpOyAgICAgICAgIC8vIHByaW50cyAxMTEKKyAgICAgICAgICAgICAgICBydW5uYWJsZTIucnVuKCk7ICAgICAgICAvLyBwcmludHMgNDQ0CisgICAgICAgIH0KK30KKworY2xhc3MgUGFyYW1ldGVySXNFZmZlY3RpdmVseUZpbmFsIHsKKyAgeworICAgIENvbXBhcmFibGU8U3RyaW5nPiBjID0gby0+eworICAgICAgbmV3IFJ1bm5hYmxlKCkgeworICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHVibGljIHZvaWQgcnVuKCkgeworICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihvKTsKKyAgICAgICAgfQorICAgICAgfS5ydW4oKTsKKyAgICAgIHJldHVybiAwOworICAgIH07CisgICAgQ29tcGFyYWJsZTxTdHJpbmc+IGMxID0gby0+eworICAgICAgbyA9ICIiOworICAgICAgbmV3IFJ1bm5hYmxlKCkgeworICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHVibGljIHZvaWQgcnVuKCkgeworICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbig8ZXJyb3IgZGVzY3I9IlZhcmlhYmxlICdvJyBpcyBhY2Nlc3NlZCBmcm9tIHdpdGhpbiBpbm5lciBjbGFzcy4gTmVlZHMgdG8gYmUgZGVjbGFyZWQgZmluYWwuIj5vPC9lcnJvcj4pOworICAgICAgICB9CisgICAgICB9LnJ1bigpOworICAgICAgcmV0dXJuIDA7CisgICAgfTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvbGFtYmRhL2hpZ2hsaWdodGluZy9FbnVtQ29uc3RhbnRzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2xhbWJkYS9oaWdobGlnaHRpbmcvRW51bUNvbnN0YW50cy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjViYzc1ZmYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2xhbWJkYS9oaWdobGlnaHRpbmcvRW51bUNvbnN0YW50cy5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKK2VudW0gQnVnIHsKKyAgICBJTlNUQU5DRTEoKEludGVnZXIgeCwgSW50ZWdlciB5KSAtPiB4LmJ5dGVWYWx1ZSgpKSwKKyAgICBJTlNUQU5DRTIoKHgsIHkpIC0+IHkuIGJ5dGVWYWx1ZSgpKTsKKyAgICBwcml2YXRlIEJ1ZyhGb28gZm9vKSB7CisgICAgfQorCisgICAgcHJpdmF0ZSBpbnRlcmZhY2UgRm9vIHsKKyAgICAgICAgYnl0ZSBiYXIoSW50ZWdlciB4LCBJbnRlZ2VyIHkpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvbGFtYmRhL2hpZ2hsaWdodGluZy9JbkNvbnRleHRzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2xhbWJkYS9oaWdobGlnaHRpbmcvSW5Db250ZXh0cy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ4YjM5NjAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2xhbWJkYS9oaWdobGlnaHRpbmcvSW5Db250ZXh0cy5qYXZhCkBAIC0wLDAgKzEsNDkgQEAKK2ludGVyZmFjZSBJIHsKKyAgICB2b2lkIG0oaW50IHgpOworfQorY2xhc3MgSW5Db250ZXh0cyB7CisgICAgdm9pZCBtKEkgcykgeyB9CisKKyAgICB2b2lkIGFzc2lnbm1lbnQoKSB7CisgICAgICAgIEkgczEgPSAoeC0+IHsgU3lzdGVtLm91dC5wcmludGxuKCk7IH0pOworICAgICAgICBJIHMyID0gKCh4LT4geyBTeXN0ZW0ub3V0LnByaW50bG4oKTsgfSkpOworICAgIH0KKyAgICAKKyAgICB2b2lkIG1ldGhvZCgpIHsKKyAgICAgICAgbSgoeC0+IHsgU3lzdGVtLm91dC5wcmludGxuKCk7IH0pKTsKKyAgICAgICAgbSgoKHgtPiB7IFN5c3RlbS5vdXQucHJpbnRsbigpOyB9KSkpOworICAgIH0KKworICAgIEkgcmV0dXJuQ29udGV4dCgpIHsKKyAgICAgICAgcmV0dXJuICh4IC0+IHtTeXN0ZW0ub3V0LnByaW50bG4oKTt9KTsKKyAgICB9Cit9CisKK2ludGVyZmFjZSBJMTxBLCBCPiB7CisgICBCIGZvbyhBIGEpOworfQorY2xhc3MgVmFsdWVMYW1iZGFJbkNvbnRleHQgeworCisgICAgPFo+IHZvaWQgbTEoSTE8U3RyaW5nLCBaPiBpKSB7ICB9CisgICAgPFo+IHZvaWQgbTIoSTE8U3RyaW5nLCBJMTxTdHJpbmcsIFo+PiBpKSB7ICB9CisKKyAgICB2b2lkIGV4cHJNZXRob2QoKSB7CisgICAgICAgIG0xKHMxIC0+IDEpOworICAgICAgICBtMihzMSAtPiBzMiAtPiAxKTsKKyAgICB9CisKKyAgICB2b2lkIGV4cHJBc3NpZ25tZW50KCkgeworICAgICAgICBJMTxTdHJpbmcsIEludGVnZXI+IGluMSA9IHMxIC0+IDE7CisgICAgICAgIEkxPFN0cmluZywgSTE8U3RyaW5nLCBJbnRlZ2VyPj4gaW4yID0gczEgLT4gczIgLT4gMTsKKyAgICB9CisKKyAgICB2b2lkIHN0YXRlbWVudE1ldGhvZCgpIHsKKyAgICAgICAgbTEoczEgLT4geyByZXR1cm4gMTsgfSk7CisgICAgICAgIG0yKHMxIC0+IHsgcmV0dXJuIHMyIC0+IHsgcmV0dXJuIDE7IH07IH0pOworICAgIH0KKworICAgIHZvaWQgc3RhdGVtZW50QXNzaWdubWVudCgpIHsKKyAgICAgICAgSTE8U3RyaW5nLCBJbnRlZ2VyPiBpbjEgPSBzMSAtPiB7IHJldHVybiAxOyB9OworICAgICAgICBJMTxTdHJpbmcsIEkxPFN0cmluZywgSW50ZWdlcj4+IGluMiA9IHMxIC0+IHsgcmV0dXJuIHMyIC0+IHsgcmV0dXJuIDE7IH07IH07CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9sYW1iZGEvaGlnaGxpZ2h0aW5nL0luY29tcGF0aWJsZUZvcm1hbFBhcmFtZXRlclR5cGVzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2xhbWJkYS9oaWdobGlnaHRpbmcvSW5jb21wYXRpYmxlRm9ybWFsUGFyYW1ldGVyVHlwZXMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZTExMmJiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9sYW1iZGEvaGlnaGxpZ2h0aW5nL0luY29tcGF0aWJsZUZvcm1hbFBhcmFtZXRlclR5cGVzLmphdmEKQEAgLTAsMCArMSwxOSBAQAorY2xhc3MgTGFtYmRhVGVzdCB7CisKKyAgcHVibGljIHZvaWQgaGlnaGxpZ2h0c1RoZUJ1ZyhTdHJlYW08U3RyaW5nPiBzdHJlYW0pIHsKKyAgICBzdHJlYW0uZmxhdE1hcCgoQmxvY2s8PyBzdXBlciBTdHJpbmc+IHNpbmssIFN0cmluZyBlbGVtZW50KSAtPiB7fSk7CisgIH0KKworICBwdWJsaWMgaW50ZXJmYWNlIEJsb2NrPEI+IHsKKyAgICB2b2lkIGFwcGx5KEIgdCk7CisgIH0KKworICBwdWJsaWMgaW50ZXJmYWNlIFN0cmVhbTxTPiB7CisgICAgPFI+IFN0cmVhbTxSPiBmbGF0TWFwKEZsYXRNYXBwZXI8PyBzdXBlciBTLCBSPiBtYXBwZXIpOworCisgIH0KKworICBwdWJsaWMgaW50ZXJmYWNlIEZsYXRNYXBwZXI8RiwgUj4geworICAgIHZvaWQgZmxhdE1hcEludG8oQmxvY2s8PyBzdXBlciBSPiBzaW5rLCBGIGVsZW1lbnQpOworICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2xhbWJkYS9oaWdobGlnaHRpbmcvSW5jb21wYXRpYmxlUmV0dXJuVHlwZXMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvbGFtYmRhL2hpZ2hsaWdodGluZy9JbmNvbXBhdGlibGVSZXR1cm5UeXBlcy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJmM2E5YTIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2xhbWJkYS9oaWdobGlnaHRpbmcvSW5jb21wYXRpYmxlUmV0dXJuVHlwZXMuamF2YQpAQCAtMCwwICsxLDU5IEBACitjbGFzcyBUZXN0MSB7CisKKyAgICBpbnRlcmZhY2UgVm9pZFJldHVyblR5cGUgeworICAgICAgICB2b2lkIGZvbygpOworICAgIH0KKyAgICB7CisgICAgICAgIFZvaWRSZXR1cm5UeXBlIGFJID0gKCkgLT4gU3lzdGVtLm91dC5wcmludGxuKCk7CisgICAgICAgIFZvaWRSZXR1cm5UeXBlIGFJMSA9ICgpIC0+IHtTeXN0ZW0ub3V0LnByaW50bG4oKTt9OworICAgICAgICBWb2lkUmV0dXJuVHlwZSBhSTIgPSA8ZXJyb3IgZGVzY3I9IlVuZXhwZWN0ZWQgcmV0dXJuIHZhbHVlIj4oKSAtPiB7cmV0dXJuIDE7fTwvZXJyb3I+OworICAgICAgICBWb2lkUmV0dXJuVHlwZSBhSTMgPSAoKSAtPiAxOworICAgICAgICBWb2lkUmV0dXJuVHlwZSBhSTQgPSAoKSAtPiB7cmV0dXJuO307CisgICAgfQorfQorCitjbGFzcyBUZXN0MiB7CisgICAgaW50ZXJmYWNlIEludFJldHVyblR5cGUgeworICAgICAgICBpbnQgZm9vKCk7CisgICAgfQorICAgIHsKKyAgICAgICAgSW50UmV0dXJuVHlwZSBhSSA9IDxlcnJvciBkZXNjcj0iSW5jb21wYXRpYmxlIHJldHVybiB0eXBlIHZvaWQgaW4gbGFtYmRhIGV4cHJlc3Npb24iPigpIC0+IFN5c3RlbS5vdXQucHJpbnRsbigpPC9lcnJvcj47CisgICAgICAgIEludFJldHVyblR5cGUgYUkxID0gKCkgLT4ge1N5c3RlbS5vdXQucHJpbnRsbigpOzxlcnJvciBkZXNjcj0iTWlzc2luZyByZXR1cm4gc3RhdGVtZW50Ij59PC9lcnJvcj47CisgICAgICAgIEludFJldHVyblR5cGUgYUkyID0gKCkgLT4ge3JldHVybiAxO307CisgICAgICAgIEludFJldHVyblR5cGUgYUkzID0gKCkgLT4gMTsKKyAgICB9Cit9CisKKworY2xhc3MgVGVzdDMgeworCisgICAgaW50ZXJmYWNlIFhSZXR1cm5UeXBlPFg+IHsKKyAgICAgICAgWCBmb28oKTsKKyAgICB9CisgICAgeworICAgICAgICBYUmV0dXJuVHlwZTxPYmplY3Q+IGFJID0gPGVycm9yIGRlc2NyPSJJbmNvbXBhdGlibGUgcmV0dXJuIHR5cGUgdm9pZCBpbiBsYW1iZGEgZXhwcmVzc2lvbiI+KCkgLT4gU3lzdGVtLm91dC5wcmludGxuKCk8L2Vycm9yPjsKKyAgICAgICAgWFJldHVyblR5cGU8T2JqZWN0PiBhSTEgPSAoKSAtPiB7U3lzdGVtLm91dC5wcmludGxuKCk7PGVycm9yIGRlc2NyPSJNaXNzaW5nIHJldHVybiBzdGF0ZW1lbnQiPn08L2Vycm9yPjsKKyAgICAgICAgWFJldHVyblR5cGU8T2JqZWN0PiBhSTIgPSAoKSAtPiB7cmV0dXJuIDE7fTsKKyAgICAgICAgWFJldHVyblR5cGU8T2JqZWN0PiBhSTMgPSAoKSAtPiAxOworICAgICAgICBYUmV0dXJuVHlwZTxPYmplY3Q+IGFJNCA9ICgpIC0+IHs8ZXJyb3IgZGVzY3I9Ik1pc3NpbmcgcmV0dXJuIHN0YXRlbWVudCI+fTwvZXJyb3I+OworICAgIH0KK30KKworY2xhc3MgVGVzdDQgeworICAgIGNsYXNzIFk8VD57fQorICAgIAorICAgIGludGVyZmFjZSBZWFJldHVyblR5cGU8WD4geworICAgICAgICBZPFg+IGZvbygpOworICAgIH0KKworICAgIHsKKyAgICAgICAgWVhSZXR1cm5UeXBlPE9iamVjdD4gYUkgPSA8ZXJyb3IgZGVzY3I9IkluY29tcGF0aWJsZSByZXR1cm4gdHlwZSB2b2lkIGluIGxhbWJkYSBleHByZXNzaW9uIj4oKSAtPiBTeXN0ZW0ub3V0LnByaW50bG4oKTwvZXJyb3I+OworICAgICAgICBZWFJldHVyblR5cGU8T2JqZWN0PiBhSTEgPSAoKSAtPiB7U3lzdGVtLm91dC5wcmludGxuKCk7PGVycm9yIGRlc2NyPSJNaXNzaW5nIHJldHVybiBzdGF0ZW1lbnQiPn08L2Vycm9yPjsKKyAgICAgICAgWVhSZXR1cm5UeXBlPE9iamVjdD4gYUkyID0gPGVycm9yIGRlc2NyPSJJbmNvbXBhdGlibGUgcmV0dXJuIHR5cGUgaW50IGluIGxhbWJkYSBleHByZXNzaW9uIj4oKSAtPiB7cmV0dXJuIDE7fTwvZXJyb3I+OworICAgICAgICBZWFJldHVyblR5cGU8T2JqZWN0PiBhSTMgPSA8ZXJyb3IgZGVzY3I9IkluY29tcGF0aWJsZSByZXR1cm4gdHlwZSBpbnQgaW4gbGFtYmRhIGV4cHJlc3Npb24iPigpIC0+IDE8L2Vycm9yPjsKKyAgICAgICAgWVhSZXR1cm5UeXBlPE9iamVjdD4gYUk0ID0gKCkgLT4gbmV3IFk8T2JqZWN0Pigpe307CisgICAgICAgIFlYUmV0dXJuVHlwZTxPYmplY3Q+IGFJRGlhbW9uZCA9ICgpIC0+IG5ldyBZPD4oKTsKKyAgICAgICAgCisgICAgfQorfQorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2xhbWJkYS9oaWdobGlnaHRpbmcvSW5jb21wbGV0ZVN1YnN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2xhbWJkYS9oaWdobGlnaHRpbmcvSW5jb21wbGV0ZVN1YnN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTA4NWM2OQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvbGFtYmRhL2hpZ2hsaWdodGluZy9JbmNvbXBsZXRlU3Vic3QuamF2YQpAQCAtMCwwICsxLDYzIEBACisvKgorICogQ29weXJpZ2h0IDIwMDAtMjAxMiBKZXRCcmFpbnMgcy5yLm8uCisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworaW1wb3J0IGphdmEudXRpbC4qOworCitjbGFzcyBMYW1iZGFUZXN0PFRUPiB7CisgIGludGVyZmFjZSBCaW5hcnlPcGVyYXRvcjxUPiB7CisKKyAgICBwdWJsaWMgVCBldmFsKFQgbGVmdCwgVCByaWdodCk7CisgIH0KKworICBpbnRlcmZhY2UgTWFwcGVyPFQsIFU+IHsKKyAgICBVIG1hcChUIHQpOworICB9CisKKyAgcHVibGljIHN0YXRpYyA8VCwgVT4gTGFtYmRhVGVzdDxVPiBtYXAoZmluYWwgSXRlcmFibGU8PyBleHRlbmRzIFQ+IGl0ZXJhYmxlLCBmaW5hbCBNYXBwZXI8PyBzdXBlciBULCA/IGV4dGVuZHMgVT4gbWFwcGVyKSB7CisgICAgcmV0dXJuIG51bGw7CisgIH0KKworICBUVCByZWR1Y2UoVFQgYmFzZSwgQmluYXJ5T3BlcmF0b3I8VFQ+IHJlZHVjZXIpIHsKKyAgICByZXR1cm4gbnVsbDsKKyAgfQorCisgIHB1YmxpYyB2b2lkIHRlc3QoKSB7CisgICAgZmluYWwgTGlzdDxTdHJpbmc+IGFTdHJpbmdzID0gQXJyYXlzLmFzTGlzdCgiMSIsICIyIiwgIjMiKTsKKyAgICBtYXAoYVN0cmluZ3MsIHMgLT4gcy5sZW5ndGgoKSkucmVkdWNlKDAsIChsLCAgcikgLT4gbCArIHIpOworICB9Cit9CisKK2NsYXNzIExhbWJkYVRlc3QyPFR5cGVQYXJhbT4geworICBpbnRlcmZhY2UgQmluYXJ5T3BlcmF0b3I8VD4geworICAgIHB1YmxpYyBUIGV2YWwoVCBsZWZ0LCBUIHJpZ2h0KTsKKyAgfQorCisgIGludGVyZmFjZSBNYXBwZXI8VCwgVT4geworICAgIFUgbWFwKFQgdCk7CisgIH0KKworICBwdWJsaWMgPFU+IExhbWJkYVRlc3Q8VT4gbWFwKGZpbmFsIE1hcHBlcjw/IHN1cGVyIFR5cGVQYXJhbSwgPyBleHRlbmRzIFU+IG1hcHBlcikgeworICAgIHJldHVybiBudWxsOworICB9CisKKyAgVHlwZVBhcmFtIHJlZHVjZShUeXBlUGFyYW0gYmFzZSwgQmluYXJ5T3BlcmF0b3I8VHlwZVBhcmFtPiByZWR1Y2VyKSB7CisgICAgcmV0dXJuIG51bGw7CisgIH0KKworICBwdWJsaWMgdm9pZCB0ZXN0KCkgeworICAgIGZpbmFsIExhbWJkYVRlc3QyPFN0cmluZz4gbHQgPSBuZXcgTGFtYmRhVGVzdDI8PigpOworICAgIGx0Lm1hcChzIC0+IHMubGVuZ3RoKCkpLnJlZHVjZSgwLCAobCwgIHIpIC0+IGwgKyByKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvbGFtYmRhL2hpZ2hsaWdodGluZy9JbmZlckZyb21UeXBlQXJncy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9sYW1iZGEvaGlnaGxpZ2h0aW5nL0luZmVyRnJvbVR5cGVBcmdzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDdmNzk3YQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvbGFtYmRhL2hpZ2hsaWdodGluZy9JbmZlckZyb21UeXBlQXJncy5qYXZhCkBAIC0wLDAgKzEsMTcgQEAKK2ltcG9ydCBqYXZhLnV0aWwuKjsKK3B1YmxpYyBjbGFzcyBCdWdSZXBvcnRMYW1iZGFTcXVpZ2dsZXM8VD4geworCisgIHByaXZhdGUgVCB0OworICBwdWJsaWMgPFY+IExpc3Q8Vj4gZmxhdE1hcChNYXBwZXI8VCwgTGlzdDxWPj4gbWFwcGVyKSB7CisgICAgcmV0dXJuIG1hcHBlci5tYXAodCk7CisgIH0KKworICBzdGF0aWMgdm9pZCBiYXIoIEJ1Z1JlcG9ydExhbWJkYVNxdWlnZ2xlczxJbnRlZ2VyPiB4KSB7CisgICAgeC5mbGF0TWFwKHQxIC0+IG5ldyBBcnJheUxpc3Q8U3RyaW5nPih0MSkpOworICAgIHguZmxhdE1hcCh0MSAtPiBuZXcgQXJyYXlMaXN0PD4odDEpKTsKKyAgfQorCisgIGludGVyZmFjZSBNYXBwZXI8VCwgVT4geworICAgIFUgbWFwKFQgdCk7CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvbGFtYmRhL2hpZ2hsaWdodGluZy9JbmZlcmVuY2VGcm9tQXJncy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9sYW1iZGEvaGlnaGxpZ2h0aW5nL0luZmVyZW5jZUZyb21BcmdzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTA0YzUwNAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvbGFtYmRhL2hpZ2hsaWdodGluZy9JbmZlcmVuY2VGcm9tQXJncy5qYXZhCkBAIC0wLDAgKzEsMzEgQEAKK2ludGVyZmFjZSBJPEssIFY+IHsKKyAgICBwdWJsaWMgViBwdXQoSyBrLCBWIHYpOworfQorCitpbnRlcmZhY2UgQTxUPnt9CitpbnRlcmZhY2UgQjxMPiBleHRlbmRzIEE8TD57fQorCitpbnRlcmZhY2UgU2FtZUFyZ3NJPFQ+IHsKKyAgICBUIHNhbWUoVCBhLCBUIGIpOworfQorCitjbGFzcyBJbmZlcmVuY2VGcm9tQXJncyB7CisKKyAgICBwcml2YXRlIHN0YXRpYyA8RT4gdm9pZCBiYXIoQTxFPiBhLCBJPEUsIEludGVnZXI+IGkpIHsgfQorICAgIHByaXZhdGUgc3RhdGljIDxFPiB2b2lkIGJhenooSTw/IHN1cGVyIEUsIEludGVnZXI+IGkpIHsgfQorCisgICAgdm9pZCBmb28oQjxJbnRlZ2VyPiBiKSB7CisgICAgICAgICBiYXIobnVsbCwgPGVycm9yIGRlc2NyPSJDeWNsaWMgaW5mZXJlbmNlIj4oaywgdikgLT4gdjwvZXJyb3I+KTsKKyAgICAgICAgIGJhcihudWxsLCBudWxsKTsKKyAgICAgICAgIGJhcihiLCAoaywgdikgLT4gIHtyZXR1cm4gdjt9KTsKKyAgICAgICAgIGJhcihiLCAoaywgdikgLT4gezxlcnJvciBkZXNjcj0iSW5jb21wYXRpYmxlIHR5cGVzLiBGb3VuZDogJ2phdmEubGFuZy5JbnRlZ2VyJywgcmVxdWlyZWQ6ICdqYXZhLmxhbmcuU3RyaW5nJyI+U3RyaW5nIGkgPSBrOzwvZXJyb3I+IHJldHVybiB2O30pOworICAgICAgICAgYmFyKGIsIChrLCB2KSAtPiB7SW50ZWdlciAgaSA9IGs7IHJldHVybiB2O30pOworCisgICAgICAgICBiYXp6KDxlcnJvciBkZXNjcj0iQ3ljbGljIGluZmVyZW5jZSI+KGssIHYpIC0+IHY8L2Vycm9yPik7CisgICAgICAgICBiYXp6KChrLCB2KSAtPiB7PGVycm9yIGRlc2NyPSJJbmNvbXBhdGlibGUgdHlwZXMuIEZvdW5kOiAnPGxhbWJkYSBwYXJhbWV0ZXI+JywgcmVxdWlyZWQ6ICdpbnQnIj5pbnQgaSA9IGs7PC9lcnJvcj4gcmV0dXJuIHY7fSk7CisgICAgfQorCisgICAgcHVibGljIHN0YXRpYyA8VD4gU2FtZUFyZ3NJPFQ+IG1heCgpIHsKKyAgICAgICAgcmV0dXJuIChhLCBiKSAtPiBiOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvbGFtYmRhL2hpZ2hsaWdodGluZy9JbmZlcmVuY2VPbk1ldGhvZENhbGxTaXRlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2xhbWJkYS9oaWdobGlnaHRpbmcvSW5mZXJlbmNlT25NZXRob2RDYWxsU2l0ZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmViOGY4ZDcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2xhbWJkYS9oaWdobGlnaHRpbmcvSW5mZXJlbmNlT25NZXRob2RDYWxsU2l0ZS5qYXZhCkBAIC0wLDAgKzEsMTcgQEAKK2ltcG9ydCBqYXZhLnV0aWwuKjsKK2ludGVyZmFjZSBJbjxYPiB7CisgICAgTGlzdDxYPiBmKCk7Cit9CisKK2NsYXNzIEluZmVyZW5jZU9uTWV0aG9kQ2FsbFNpdGUgeworICAgIDxaPiB2b2lkIG0oSW48Wj4gaSwgSW48Wj4gaWkpIHsgfQorICAgIDxaPiB2b2lkIG0oSW48Wj4gcykgeyB9CisKKyAgICB7CisgICAgICAgIG0oKCkgLT4gQ29sbGVjdGlvbnMuZW1wdHlMaXN0KCkpOworICAgICAgICBtKChJbjxTdHJpbmc+KSgpIC0+IENvbGxlY3Rpb25zLmVtcHR5TGlzdCgpLCAoKSAtPiAgbmV3IEFycmF5TGlzdDxTdHJpbmc+KCkpOworICAgICAgICBtKCgpIC0+Q29sbGVjdGlvbnMuPFN0cmluZz5lbXB0eUxpc3QoKSwgKCkgLT4gbmV3IEFycmF5TGlzdDxTdHJpbmc+KCkpOworICAgICAgICBtKCgpIC0+IENvbGxlY3Rpb25zLjxTdHJpbmc+ZW1wdHlMaXN0KCkpOworICAgIH0KKyAgICAKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvbGFtYmRhL2hpZ2hsaWdodGluZy9MYW1iZGFDb250ZXh0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2xhbWJkYS9oaWdobGlnaHRpbmcvTGFtYmRhQ29udGV4dC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRmZDM2OGMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2xhbWJkYS9oaWdobGlnaHRpbmcvTGFtYmRhQ29udGV4dC5qYXZhCkBAIC0wLDAgKzEsMjcgQEAKK2ludGVyZmFjZSBJIHsKKyAgICB2b2lkIG0oaW50IHgpOworfQorCitjbGFzcyBUZXN0IHsKKyAgICB2b2lkIGZvbyhPYmplY3QgeCkge30KKworICAgIHZvaWQgYmFyKCkgeworICAgICAgICBmb28oITxlcnJvciBkZXNjcj0iTGFtYmRhIGV4cHJlc3Npb24gbm90IGV4cGVjdGVkIGhlcmUiPihpbnQgeCktPiB7fTwvZXJyb3I+KTsKKyAgICAgICAgZm9vKDxlcnJvciBkZXNjcj0iTGFtYmRhIGV4cHJlc3Npb24gbm90IGV4cGVjdGVkIGhlcmUiPihpbnQgeCktPiB7IH08L2Vycm9yPiBpbnN0YW5jZW9mIE9iamVjdCApOworICAgIH0KKworICAgIEkgYmF6eigpIHsKKyAgICAgICAgZm9vKChJKShpbnQgeCktPiB7IH0pOworICAgICAgICBJIG8gPSAoSSkoaW50IHgpLT4geyB9OworICAgICAgICByZXR1cm4gKGludCB4KSAtPiB7fTsKKyAgICB9Cit9CisKK2ludGVyZmFjZSBJSSB7CisgIGJvb2xlYW4gXyhTdHJpbmcgcyk7Cit9CitjbGFzcyBUZXN0MSB7CisgIHZvaWQgYmFyKGJvb2xlYW4gYil7CisgICAgSUkgaWsgPSBiID8gKHMpLT4gdHJ1ZSA6IChzKS0+ZmFsc2U7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2xhbWJkYS9oaWdobGlnaHRpbmcvTGFtYmRhT25WYXJhcmdQbGFjZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9sYW1iZGEvaGlnaGxpZ2h0aW5nL0xhbWJkYU9uVmFyYXJnUGxhY2UuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MTQwNjVjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9sYW1iZGEvaGlnaGxpZ2h0aW5nL0xhbWJkYU9uVmFyYXJnUGxhY2UuamF2YQpAQCAtMCwwICsxLDIxIEBACitjbGFzcyBUZXN0RGF0YTxLPiB7fQoraW50ZXJmYWNlIFRlcm1pbmFsT3A8TCwgTT4gZXh0ZW5kcyBJbnRlcm1lZGlhdGVPcDxMLCBNPiB7fQoraW50ZXJmYWNlIEludGVybWVkaWF0ZU9wPEwxLCBNMT4geyBib29sZWFuIF8oTDEgbCwgTTEgbSk7fQorCitjbGFzcyBUZXN0PFQsIFU+IHsKKyAgcHJvdGVjdGVkIFUgZXhlcmNpc2VPcHMoVGVzdERhdGE8VD4gZGF0YSwgVGVybWluYWxPcDxULCBVPiB0ZXJtaW5hbCwgSW50ZXJtZWRpYXRlT3A8VCwgVT4uLi4gb3BzKSB7CisgICAgcmV0dXJuIGV4ZXJjaXNlT3BzKGRhdGEsIHRlcm1pbmFsLCAgKHUsIHYpIC0+ICB1LmVxdWFscyh2KSk7CisgIH0KK30KKworY2xhc3MgVGVzdDEgeworICBwcm90ZWN0ZWQgPFQsIFU+IFUgZXhlcmNpc2VPcHMoVGVzdERhdGE8VD4gZGF0YSwgVGVybWluYWxPcDxULCBVPiB0ZXJtaW5hbCwgSW50ZXJtZWRpYXRlT3AuLi4gb3BzKSB7CisgICAgcmV0dXJuIGV4ZXJjaXNlT3BzKGRhdGEsIHRlcm1pbmFsLCAgKHUsIHYpIC0+IHUuZXF1YWxzKHYpKTsKKyAgfQorfQorCitjbGFzcyBUZXN0MiB7CisgIHByb3RlY3RlZCA8VCwgVT4gVSBleGVyY2lzZU9wcyhUZXN0RGF0YTxUPiBkYXRhLCBUZXJtaW5hbE9wPFQsIFU+IHRlcm1pbmFsLCBJbnRlcm1lZGlhdGVPcDxULCBVPi4uLiBvcHMpIHsKKyAgICByZXR1cm4gZXhlcmNpc2VPcHMoZGF0YSwgdGVybWluYWwsICAodSwgdikgLT4gdS5lcXVhbHModikpOworICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2xhbWJkYS9oaWdobGlnaHRpbmcvTGFtYmRhUmF3T3JOb3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvbGFtYmRhL2hpZ2hsaWdodGluZy9MYW1iZGFSYXdPck5vdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRiOWIwODUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2xhbWJkYS9oaWdobGlnaHRpbmcvTGFtYmRhUmF3T3JOb3QuamF2YQpAQCAtMCwwICsxLDcyIEBACitpbXBvcnQgamF2YS51dGlsLio7CitjbGFzcyBUZXN0RGF0YTxLPiB7fQoraW50ZXJmYWNlIFRlcm1pbmFsT3A8TCwgTT4gZXh0ZW5kcyBJbnRlcm1lZGlhdGVPcDxMLCBNPiB7fQoraW50ZXJmYWNlIEludGVybWVkaWF0ZU9wPEwxLCBNMT4geyBib29sZWFuIF8oTDEgbCwgTTEgbSk7fQorCisKK2NsYXNzIFRlc3QxIHsKKyAgcHJvdGVjdGVkIDxULCBVPiBVIGV4ZXJjaXNlT3BzKFRlc3REYXRhPFQ+IGRhdGEsIFRlcm1pbmFsT3A8VCwgVT4gdGVybWluYWwsIEludGVybWVkaWF0ZU9wPFQsIFU+Li4uIG9wcykgeworICAgIHJldHVybiBleGVyY2lzZU9wcyhkYXRhLCAodSwgdikgLT4gdS5lcXVhbHModiksIHRlcm1pbmFsKTsKKyAgfQorfQorCitjbGFzcyBUZXN0MiB7CisgIHByb3RlY3RlZCA8VCwgVT4gVSBleGVyY2lzZU9wcyhUZXN0RGF0YTxUPiBkYXRhLCBUZXJtaW5hbE9wPFQsIFU+IHRlcm1pbmFsLCBJbnRlcm1lZGlhdGVPcC4uLiBvcHMpIHsKKyAgICByZXR1cm4gZXhlcmNpc2VPcHMoZGF0YSwgPGVycm9yIGRlc2NyPSJDeWNsaWMgaW5mZXJlbmNlIj4odSwgdikgLT4gdS5lcXVhbHModik8L2Vycm9yPiwgdGVybWluYWwpOworICB9Cit9CisKK2NsYXNzIFRlc3QzIHsKKyAgaW50ZXJmYWNlIEk8WT4geworICAgIHZvaWQgbShZIHkpOworICB9CisKKyAgc3RhdGljIDxUPiB2b2lkIGJhcihJPFQ+IGksIExpc3Q8VD4gbCl7CisgICAgYmFyKHggLT4ge30sIGwpOworICAgIGJhcig8ZXJyb3IgZGVzY3I9IkN5Y2xpYyBpbmZlcmVuY2UiPnggLT4ge308L2Vycm9yPiwgbnVsbCk7CisgICAgYmFyKChJPFQ+KXggLT4ge30sIG51bGwpOworICAgIGJhcigoVCB4KSAtPiB7fSwgbnVsbCk7CisgICAgYmFyKHggLT4ge30sIG5ldyBBcnJheUxpc3Q8VD4oKSk7CisgICAgYmFyKDxlcnJvciBkZXNjcj0iQ3ljbGljIGluZmVyZW5jZSI+eCAtPiB7fTwvZXJyb3I+LCBuZXcgQXJyYXlMaXN0KCkpOworICB9CisKKyAgc3RhdGljIHsKKyAgICBiYXIoPGVycm9yIGRlc2NyPSJDeWNsaWMgaW5mZXJlbmNlIj54LT57fTwvZXJyb3I+LCBuZXcgQXJyYXlMaXN0KCkpOworICB9Cit9CisKKworY2xhc3MgVGVzdDQgeworICBwcm90ZWN0ZWQgPFQsIFU+IFUgZXhlcmNpc2VPcHMoVGVzdERhdGE8VD4gZGF0YSwgVGVybWluYWxPcDE8VCwgVT4gdGVybWluYWwsIEludGVybWVkaWF0ZU9wMS4uLiBvcHMpIHsKKyAgICByZXR1cm4gZXhlcmNpc2VPcHMoZGF0YSwgKHUsIHYpIC0+IHUuZXF1YWxzKHYpLCB0ZXJtaW5hbCwgb3BzKTsKKyAgfQorCisgIHByb3RlY3RlZCBzdGF0aWMgPFQsIFU+IFUgZXhlcmNpc2VPcHMoVGVzdERhdGE8VD4gZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCaVByZWRpY2F0ZTE8VSwgVT4gZXF1YWxhdG9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRlcm1pbmFsT3AxPFQsIFU+IHRlcm1pbmFsT3AsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW50ZXJtZWRpYXRlT3AxW10gb3BzKSB7CisgICAgcmV0dXJuIG51bGw7CisgIH0KKworICBwdWJsaWMgaW50ZXJmYWNlIEludGVybWVkaWF0ZU9wMTxULFU+IHsKKworICB9CisgIHB1YmxpYyBpbnRlcmZhY2UgQmlQcmVkaWNhdGUxPFQsIFU+IGV4dGVuZHMgSW50ZXJtZWRpYXRlT3AxPFQsIFU+eworICAgIGJvb2xlYW4gXyhUIHQsIFUgdSk7CisgIH0KKworICBwdWJsaWMgaW50ZXJmYWNlIFRlcm1pbmFsT3AxPFQsIFU+IGV4dGVuZHMgSW50ZXJtZWRpYXRlT3AxPFQsIFU+IHt9CisKK30KKworY2xhc3MgVGVzdDUgeworICB7CisgICAgQmxvY2sgZW1wdHkgPSB4IC0+IHt9OworICAgIEJsb2NrPD8+IGVtcHR5MSA9IHggLT4ge307CisgICAgU3lzdGVtLm91dC5wcmludGxuKChCbG9jaykgeCAtPiB7fSk7CisgIH0KKworICBpbnRlcmZhY2UgQmxvY2s8VD4geworICAgIHZvaWQgYXBwbHkoVCB0KTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvbGFtYmRhL2hpZ2hsaWdodGluZy9OZXN0ZWRMYW1iZGFzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2xhbWJkYS9oaWdobGlnaHRpbmcvTmVzdGVkTGFtYmRhcy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZlNzE3NDgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2xhbWJkYS9oaWdobGlnaHRpbmcvTmVzdGVkTGFtYmRhcy5qYXZhCkBAIC0wLDAgKzEsMTQgQEAKK2ludGVyZmFjZSBJIHsKKyAgSW50ZWdlciBfKCk7Cit9CisKK2ludGVyZmFjZSBJMSB7CisgIFN0cmluZyBfKCk7Cit9CisKK2NsYXNzIFRlc3QgeworICBJIGkgPSAoKSAtPiB7CisgICAgSTEgaTEgPSAoKSAtPiB7cmV0dXJuICIiO307CisgICAgcmV0dXJuIDE7CisgIH07Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9sYW1iZGEvaGlnaGxpZ2h0aW5nL05vSW5mZXJlbmNlUmVzdWx0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2xhbWJkYS9oaWdobGlnaHRpbmcvTm9JbmZlcmVuY2VSZXN1bHQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMDY1NmY1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9sYW1iZGEvaGlnaGxpZ2h0aW5nL05vSW5mZXJlbmNlUmVzdWx0LmphdmEKQEAgLTAsMCArMSwzMCBAQAoraW1wb3J0IGphdmEubGFuZy5TdHJpbmc7CisKK2ludGVyZmFjZSBJPEEsIEI+ICB7CisgIEIgZm9vKEEgYSk7Cit9CitjbGFzcyBGb288VD4geworICBwdWJsaWMgPFY+IEZvbzxWPiBtYXAoSTxULCBWPiBtYXBwZXIpIHsKKyAgICByZXR1cm4gbmV3IEZvbzxWPigpOworICB9Cit9CisKK2NsYXNzIE5vSW5mZXJlbmNlUmVzdWx0IHsKKworICAgIDxBLCBCPiBJPEEsIEI+IG0oSTxBLCBCPiAgZikgeyByZXR1cm4gbnVsbDsgfQorICAgIDxUPiB2b2lkIG0xKFQgdCkgeyB9CisKKyAgICB2b2lkIHRlc3QoKSB7CisgICAgICAgIG0oKFN0cmluZyBzMSkgLT4gIDxlcnJvciBkZXNjcj0iVGFyZ2V0IHR5cGUgb2YgYSBsYW1iZGEgY29udmVyc2lvbiBtdXN0IGJlIGFuIGludGVyZmFjZSI+KFN0cmluZyBzMikgLT4gIHMxICsgczI8L2Vycm9yPik7CisgICAgICAgIG0oPGVycm9yIGRlc2NyPSJJbmNvbXBhdGlibGUgcmV0dXJuIHR5cGUgPGxhbWJkYSBleHByZXNzaW9uPiBpbiBsYW1iZGEgZXhwcmVzc2lvbiI+KFN0cmluZyBzMSkgLT4gIHtyZXR1cm4gKFN0cmluZyBzMikgLT4gIHMxICsgczI7fTwvZXJyb3I+KTsKKworICAgICAgICBtKChTdHJpbmcgczEpIC0+IHMxLmxlbmd0aCgpKTsKKyAgICAgICAgbSgoU3RyaW5nIHMxKSAtPiBzMSk7CisKKyAgICAgICAgbTEoPGVycm9yIGRlc2NyPSJDeWNsaWMgaW5mZXJlbmNlIj4oKSAtPiB7IH08L2Vycm9yPik7CisKKyAgICAgICAgRm9vPFN0cmluZz4gZm9vID0gbmV3IEZvbzxTdHJpbmc+KCk7CisgICAgICAgIGZvby5tYXAodiAtPiBudWxsKTsKKyAgICAgICAgRm9vPFN0cmluZz4gbWFwMSA9IGZvby5tYXAodmFsdWUgLT4gdmFsdWUgKyAiLCAiICsgdmFsdWUpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvbGFtYmRhL2hpZ2hsaWdodGluZy9SYXdXaGVuTm9QYXJhbXMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvbGFtYmRhL2hpZ2hsaWdodGluZy9SYXdXaGVuTm9QYXJhbXMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZTZkMDRkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9sYW1iZGEvaGlnaGxpZ2h0aW5nL1Jhd1doZW5Ob1BhcmFtcy5qYXZhCkBAIC0wLDAgKzEsMTcgQEAKK3B1YmxpYyBjbGFzcyBGb29CYXIgeworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGNsYXNzIEJhcjIgeworICAgICAgICBwcml2YXRlIEJhcjIoKSB7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwcml2YXRlIGludGVyZmFjZSBJPFQ+IHsKKyAgICAgICAgVCBjcmVhdGUoKTsKKyAgICB9CisKKyAgICBzdGF0aWMgdm9pZCBmb28oSSBpbnRmKSB7fQorCisKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgICAgZm9vKCgpIC0+IG5ldyBCYXIyKCkpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2xhbWJkYS9oaWdobGlnaHRpbmcvUmVhc3NpZ25Vc2VkVmFycy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9sYW1iZGEvaGlnaGxpZ2h0aW5nL1JlYXNzaWduVXNlZFZhcnMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMjE4NmU0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9sYW1iZGEvaGlnaGxpZ2h0aW5nL1JlYXNzaWduVXNlZFZhcnMuamF2YQpAQCAtMCwwICsxLDkgQEAKK2NsYXNzIFhYWCB7CisgIHZvaWQgZm9vKCkgeworICAgIGludCBrID0gMDsKKyAgICBpbnQgbiA9IDI7CisgICAgUnVubmFibGUgciA9ICgpLT57CisgICAgICA8ZXJyb3IgZGVzY3I9IlZhcmlhYmxlIHVzZWQgaW4gbGFtYmRhIGV4cHJlc3Npb24gc2hvdWxkIGJlIGVmZmVjdGl2ZWx5IGZpbmFsIj5rPC9lcnJvcj4gPSBuOworICAgIH07CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvbGFtYmRhL2hpZ2hsaWdodGluZy9SZWN1cnNpdmVBY2Nlc3MuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvbGFtYmRhL2hpZ2hsaWdodGluZy9SZWN1cnNpdmVBY2Nlc3MuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNDMwZWJkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9sYW1iZGEvaGlnaGxpZ2h0aW5nL1JlY3Vyc2l2ZUFjY2Vzcy5qYXZhCkBAIC0wLDAgKzEsMTEgQEAKK3B1YmxpYyBjbGFzcyBMYW1iZGFUZXN0IHsKKyAgICBPcCBsYW1iZGFfZmliID0gIChuKSAtPiAobiA8IDIpID8gMSA6IGxhbWJkYV9maWIub3AobiAtIDEpICsgbGFtYmRhX2ZpYi5vcChuIC0gMik7CisKKyAgICB7CisgICAgICAgIE9wIGxhbWJkYV9maWIgPSAgKG4pIC0+IChuIDwgMikgPyAxIDogPGVycm9yIGRlc2NyPSJWYXJpYWJsZSAnbGFtYmRhX2ZpYicgbWlnaHQgbm90IGhhdmUgYmVlbiBpbml0aWFsaXplZCI+bGFtYmRhX2ZpYjwvZXJyb3I+Lm9wKG4gLSAxKSArIGxhbWJkYV9maWIub3AobiAtIDIpOworICAgIH0KKworICAgIGludGVyZmFjZSBPcCB7CisgICAgICAgIGludCBvcChpbnQgbik7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvbGFtYmRhL2hpZ2hsaWdodGluZy9SZXR1cm5UeXBlQ29tcGF0aWJpbGl0eS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9sYW1iZGEvaGlnaGxpZ2h0aW5nL1JldHVyblR5cGVDb21wYXRpYmlsaXR5LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGNjOTE1NAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvbGFtYmRhL2hpZ2hsaWdodGluZy9SZXR1cm5UeXBlQ29tcGF0aWJpbGl0eS5qYXZhCkBAIC0wLDAgKzEsNzIgQEAKK2NsYXNzIFJldHVyblR5cGVJbmNvbXBhdGliaWxpdHkgeworCisgICAgaW50ZXJmYWNlIEkxPFQgZXh0ZW5kcyBOdW1iZXI+IHsKKyAgICAgICAgVCBtKEludGVnZXIgeCk7CisgICAgfQorCisgICAgaW50ZXJmYWNlIEkyPEwgZXh0ZW5kcyBTdHJpbmc+IHsKKyAgICAgICAgTCBtKEludGVnZXIgeCk7CisgICAgfQorCisgICAgaW50ZXJmYWNlIEkzPEs+IHsKKyAgICAgICAgdm9pZCBtKEludGVnZXIgeCk7CisgICAgfQorCisgICAgc3RhdGljIDxQIGV4dGVuZHMgTnVtYmVyPiB2b2lkIGNhbGwoSTE8UD4gaTEpIHsKKyAgICAgICAgaTEubSgxKTsKKyAgICB9CisKKyAgICBzdGF0aWMgPFAgZXh0ZW5kcyBTdHJpbmc+IHZvaWQgY2FsbChJMjxQPiBpMikgeworICAgICAgICBpMi5tKDIpOworICAgIH0KKworICAgIHN0YXRpYyA8UT4gdm9pZCBjYWxsKEkzPFE+IGkzKSB7CisgICAgICAgIGkzLm0oMyk7CisgICAgfQorCisgICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgeworICAgICAgICBjYWxsKGktPiB7cmV0dXJuIGk7fSk7CisgICAgfQorfQorCisKK2NsYXNzIFJldHVyblR5cGVDb21wYXRpYmlsaXR5IHsKKworICAgIGludGVyZmFjZSBJMTxUIGV4dGVuZHMgTnVtYmVyPiB7CisgICAgICAgIFQgbShUIHgpOworICAgIH0KKworICAgIGludGVyZmFjZSBJMjxMIGV4dGVuZHMgU3RyaW5nPiB7CisgICAgICAgIEwgbShMIHgpOworICAgIH0KKworICAgIGludGVyZmFjZSBJMzxLPiB7CisgICAgICAgIHZvaWQgbShLIHgpOworICAgIH0KKworICAgIHN0YXRpYyA8UCBleHRlbmRzIE51bWJlcj4gdm9pZCBjYWxsKEkxPFA+IGkxKSB7CisgICAgICAgIGkxLm0obnVsbCk7CisgICAgfQorCisgICAgc3RhdGljIDxQIGV4dGVuZHMgU3RyaW5nPiB2b2lkIGNhbGwoSTI8UD4gaTIpIHsKKyAgICAgICAgaTIubShudWxsKTsKKyAgICB9CisKKyAgICBzdGF0aWMgPFE+IHZvaWQgY2FsbChJMzxRPiBpMykgeworICAgICAgICBpMy5tKG51bGwpOworICAgIH0KKworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKKyAgICAgICAgPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBtZXRob2QgJ2NhbGwoPGxhbWJkYSBleHByZXNzaW9uPiknIj5jYWxsPC9lcnJvcj4oaS0+IHtyZXR1cm4gaTt9KTsKKyAgICB9Cit9CisKK2NsYXNzIFJldHVyblR5cGVDaGVja3MxIHsKKworICAgIGludGVyZmFjZSBJPEsgZXh0ZW5kcyBOdW1iZXIsIFYgZXh0ZW5kcyBOdW1iZXI+IHsKKyAgICAgICBWIG0oSyBrKTsKKyAgICB9CisKKyAgICBJPEludGVnZXIsIEludGVnZXI+IGFjY2VwdGVkID0gaSAtPiB7IHJldHVybiBpOyB9OworICAgIEk8RG91YmxlLCBJbnRlZ2VyPiByZWplY3RlZCA9IDxlcnJvciBkZXNjcj0iSW5jb21wYXRpYmxlIHJldHVybiB0eXBlIERvdWJsZSBpbiBsYW1iZGEgZXhwcmVzc2lvbiI+aSAtPiB7IHJldHVybiBpOyB9PC9lcnJvcj47Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2xhbWJkYS9oaWdobGlnaHRpbmcvUmV0dXJuVHlwZUNvbXBhdGliaWxpdHkxLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2xhbWJkYS9oaWdobGlnaHRpbmcvUmV0dXJuVHlwZUNvbXBhdGliaWxpdHkxLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDM0ZDYxZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvbGFtYmRhL2hpZ2hsaWdodGluZy9SZXR1cm5UeXBlQ29tcGF0aWJpbGl0eTEuamF2YQpAQCAtMCwwICsxLDMxIEBACitjbGFzcyBUZXN0IHsKKworICAgIGludGVyZmFjZSBJPEEsIEI+IHsKKyAgICAgICAgQiBmKEEgYSk7CisgICAgfQorCisgICAgaW50ZXJmYWNlIElJPEEsIEI+IGV4dGVuZHMgSTxBLEI+IHsgfQorCisgICAgc3RhdGljIGNsYXNzIEZvbzxBPiB7CisgICAgICAgIGJvb2xlYW4gZm9yQWxsKGZpbmFsIEk8QSwgQm9vbGVhbj4gZikgeworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisKKyAgICAgICAgU3RyaW5nIGZvckFsbChmaW5hbCBJSTxBLCBTdHJpbmc+IGYpIHsKKyAgICAgICAgICAgIHJldHVybiAiIjsKKyAgICAgICAgfQorCisgICAgICAgIFN0cmluZyBmb3JBbGwyKGZpbmFsIElJPEEsIFN0cmluZz4gZikgeworICAgICAgICAgICAgcmV0dXJuICIiOworICAgICAgICB9CisgICAgfQorCisgICAgdm9pZCBmb28oRm9vPFN0cmluZz4gYXMsIGZpbmFsIEZvbzxDaGFyYWN0ZXI+IGFjKSB7CisgICAgICAgIGJvb2xlYW4gYjEgPSBhcy5mb3JBbGwocyAtPiBhYy5mb3JBbGwoYyAtPiBmYWxzZSkpOworICAgICAgICBTdHJpbmcgczEgPSBhcy5mb3JBbGwocyAtPiBhYy5mb3JBbGwoYyAtPiAiIikpOworICAgICAgICA8ZXJyb3IgZGVzY3I9IkluY29tcGF0aWJsZSB0eXBlcy4gRm91bmQ6ICdqYXZhLmxhbmcuU3RyaW5nJywgcmVxdWlyZWQ6ICdib29sZWFuJyI+Ym9vbGVhbiBiMiA9IGFzLmZvckFsbChzIC0+IGFjLmZvckFsbChjIC0+ICIiKSk7PC9lcnJvcj4KKyAgICAgICAgU3RyaW5nIHMyID0gYXMuZm9yQWxsMihzIC0+IGFjLmZvckFsbDIoPGVycm9yIGRlc2NyPSJJbmNvbXBhdGlibGUgcmV0dXJuIHR5cGUgYm9vbGVhbiBpbiBsYW1iZGEgZXhwcmVzc2lvbiI+YyAtPiBmYWxzZTwvZXJyb3I+KSk7CisgICAgICAgIGJvb2xlYW4gYjMgPSBhcy5mb3JBbGwoKEk8U3RyaW5nLCBCb29sZWFuPilzIC0+IGFjLmZvckFsbCgoSTxDaGFyYWN0ZXIsIEJvb2xlYW4+KTxlcnJvciBkZXNjcj0iSW5jb21wYXRpYmxlIHJldHVybiB0eXBlIFN0cmluZyBpbiBsYW1iZGEgZXhwcmVzc2lvbiI+YyAtPiAiIjwvZXJyb3I+KSk7CisgICAgICAgIFN0cmluZyBzMyA9IGFzLmZvckFsbCgoSUk8U3RyaW5nLCBTdHJpbmc+KXMgLT4gYWMuZm9yQWxsKChJSTxDaGFyYWN0ZXIsIFN0cmluZz4pPGVycm9yIGRlc2NyPSJJbmNvbXBhdGlibGUgcmV0dXJuIHR5cGUgYm9vbGVhbiBpbiBsYW1iZGEgZXhwcmVzc2lvbiI+YyAtPiBmYWxzZTwvZXJyb3I+KSk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9sYW1iZGEvaGlnaGxpZ2h0aW5nL1JldHVyblR5cGVDb21wYXRpYmlsaXR5QmVmb3JlU3BlY2lmaWNzQ2hlY2suamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvbGFtYmRhL2hpZ2hsaWdodGluZy9SZXR1cm5UeXBlQ29tcGF0aWJpbGl0eUJlZm9yZVNwZWNpZmljc0NoZWNrLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzA1ODNlOQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvbGFtYmRhL2hpZ2hsaWdodGluZy9SZXR1cm5UeXBlQ29tcGF0aWJpbGl0eUJlZm9yZVNwZWNpZmljc0NoZWNrLmphdmEKQEAgLTAsMCArMSwyNSBAQAorY2xhc3MgWCB7CisgICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oZmluYWwgU3RyZWFtPFN0cmluZz4gc3RyZWFtKSB0aHJvd3MgVGhyb3dhYmxlIHsKKyAgICAgICAgc3RyZWFtLm1hcChzIC0+IHMuc3Vic3RyaW5nKCJodHRwOi8vIi5sZW5ndGgoKSkpLmZvckVhY2goU3lzdGVtLm91dDo6cHJpbnRsbik7CisgICAgfQorfQorCitpbnRlcmZhY2UgU3RyZWFtPFQ+IHsKKyAgICA8Uj4gU3RyZWFtPFI+IG1hcChGdW5jdGlvbjw/IHN1cGVyIFQsID8gZXh0ZW5kcyBSPiBtYXBwZXIpOworICAgIEludFN0cmVhbSBtYXAoSW50RnVuY3Rpb248PyBzdXBlciBUPiBtYXBwZXIpOworICAgIHZvaWQgZm9yRWFjaChCbG9jazw/IHN1cGVyIFQ+IGJsb2NrKTsKK30KKworaW50ZXJmYWNlIEludEZ1bmN0aW9uPFQ+IGV4dGVuZHMgRnVuY3Rpb248VCwgSW50ZWdlcj4geworICAgIHB1YmxpYyBpbnQgYXBwbHlBc0ludChUIHQpOworfQorCitpbnRlcmZhY2UgRnVuY3Rpb248VCwgUj4geworICAgIHB1YmxpYyBSIGFwcGx5KFQgdCk7Cit9CisKK2ludGVyZmFjZSBJbnRTdHJlYW0gZXh0ZW5kcyBCYXNlU3RyZWFtPEludGVnZXI+IHt9CitpbnRlcmZhY2UgQmFzZVN0cmVhbTxUPiB7fQoraW50ZXJmYWNlIEJsb2NrPFQ+IHsKKyAgICBwdWJsaWMgdm9pZCBhY2NlcHQoVCB0KTsKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvbGFtYmRhL2hpZ2hsaWdodGluZy9SZXR1cm5WYWx1ZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9sYW1iZGEvaGlnaGxpZ2h0aW5nL1JldHVyblZhbHVlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzliYTU3ZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvbGFtYmRhL2hpZ2hsaWdodGluZy9SZXR1cm5WYWx1ZS5qYXZhCkBAIC0wLDAgKzEsNjUgQEAKK2NsYXNzIFRlc3QxIHsKKyAgaW50ZXJmYWNlIEV4dHJhY3RvcjxULCBXPiB7CisgICAgT3B0aW9uPFc+IHVuYXBwbHkoVCB0KTsKKyAgfQorCisgIHB1YmxpYyBzdGF0aWMgYWJzdHJhY3QgY2xhc3MgT3B0aW9uPFQ+IHsKKyAgICBwcml2YXRlIHN0YXRpYyBjbGFzcyBOb25lPFQ+IGV4dGVuZHMgT3B0aW9uPFQ+IHt9CisKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBPcHRpb24gTk9ORSA9IG5ldyBOb25lKCk7CisKKyAgICBwdWJsaWMgc3RhdGljIDxUPiBPcHRpb248VD4gbm9uZSgpIHsKKyAgICAgIHJldHVybiBOT05FOworICAgIH0KKworICAgIHB1YmxpYyBzdGF0aWMgPFQ+IE9wdGlvbjxUPiBvcHRpb24oVCB2YWx1ZSkgeworICAgICAgaWYgKHZhbHVlID09IG51bGwpIHsKKyAgICAgICAgcmV0dXJuIE5PTkU7CisgICAgICB9IGVsc2UgeworICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgIH0KKyAgICB9CisgIH0KKworCisKKyAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgeworICAgIEV4dHJhY3RvcjxTdHJpbmcsIEludGVnZXI+IGUgPSBzIC0+IHsKKyAgICAgIGlmIChzLmVxdWFscygiMSIpKSB7CisgICAgICAgIHJldHVybiBPcHRpb24ub3B0aW9uKDEpOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcmV0dXJuIE9wdGlvbi5ub25lKCk7CisgICAgICB9CisgICAgfTsKKworICAgIEV4dHJhY3RvcjxTdHJpbmcsIEludGVnZXI+IGUxID0gPGVycm9yIGRlc2NyPSJJbmNvbXBhdGlibGUgcmV0dXJuIHR5cGUgT3B0aW9uPFN0cmluZz4gaW4gbGFtYmRhIGV4cHJlc3Npb24iPnMgLT4geworICAgICAgaWYgKHMuZXF1YWxzKCIxIikpIHsKKyAgICAgICAgcmV0dXJuIE9wdGlvbi5vcHRpb24oMSk7CisgICAgICB9IGVsc2UgeworICAgICAgICByZXR1cm4gT3B0aW9uLm9wdGlvbigiMiIpOworICAgICAgfQorICAgIH08L2Vycm9yPjsKKyAgfQorfQorCitjbGFzcyBUZXN0MiB7CisgIGludGVyZmFjZSBYPFQgZXh0ZW5kcyBOdW1iZXI+IHsKKyAgICBUIGZvbygpOworICB9CisKKyAgeworICAgIFg8Pz4geCA9IDxlcnJvciBkZXNjcj0iTm8gaW5zdGFuY2Ugb2YgdHlwZSBYPD8+IGV4aXN0cyBzbyB0aGF0IGxhbWJkYSBleHByZXNzaW9uIGNhbiBiZSB0eXBlLWNoZWNrZWQiPigpIC0+IDEyMzwvZXJyb3I+OworICAgIFg8PyBleHRlbmRzIE51bWJlcj4geDEgPSAoKSAtPiAxMjM7CisgICAgCisgIH0KK30KKworY2xhc3MgVGVzdDMgeworICBpbnRlcmZhY2UgWDxUPiB7CisgICAgVCBmb28oKTsKKyAgfQorCisgIHsKKyAgICBYPD8+IHggPSAoKSAtPiAxMjM7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2xhbWJkYS9oaWdobGlnaHRpbmcvU3RhdGljQWNjZXNzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2xhbWJkYS9oaWdobGlnaHRpbmcvU3RhdGljQWNjZXNzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTc4Y2RjNAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvbGFtYmRhL2hpZ2hsaWdodGluZy9TdGF0aWNBY2Nlc3MuamF2YQpAQCAtMCwwICsxLDE4IEBACitpbnRlcmZhY2UgSSB7CisgIGludCBtKCk7Cit9CisKK2NsYXNzIFhYWCB7CisKKyAgaW50IHZhcjsKKyAgc3RhdGljIGludCBvdXJWYXI7CisKKworICBzdGF0aWMgdm9pZCBmb28oKSB7CisgICAgSSBzID0gKCkgLT4gPGVycm9yIGRlc2NyPSJOb24tc3RhdGljIGZpZWxkICd2YXInIGNhbm5vdCBiZSByZWZlcmVuY2VkIGZyb20gYSBzdGF0aWMgY29udGV4dCI+dmFyPC9lcnJvcj4gKyBvdXJWYXI7CisgIH0KKworICB2b2lkIGJhcigpIHsKKyAgICBJIHMgPSAoKS0+dmFyICsgb3VyVmFyOworICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2xhbWJkYS9oaWdobGlnaHRpbmcvVHlwZUFyZ3NDb25zaXN0ZW5jeS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9sYW1iZGEvaGlnaGxpZ2h0aW5nL1R5cGVBcmdzQ29uc2lzdGVuY3kuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNzBlNGFhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9sYW1iZGEvaGlnaGxpZ2h0aW5nL1R5cGVBcmdzQ29uc2lzdGVuY3kuamF2YQpAQCAtMCwwICsxLDc3IEBACitjbGFzcyBUeXBlQXJnc0NvbnNpc3RlbmN5IHsKKworICAgIGludGVyZmFjZSBJPFQ+IHsKKyAgICAgICAgVCBtKGludCBpLCBpbnQgaik7CisgICAgfQorCisgICAgc3RhdGljIHZvaWQgZm9vKEk8SW50ZWdlcj4gcykgeyB9CisKKyAgICBzdGF0aWMgPFg+IEk8WD4gYmFyKEk8WD4gcykgeyByZXR1cm4gbnVsbDsgfQorCisgICAgeworICAgICAgSTxJbnRlZ2VyPiBpMSA9IChpLCBqKSAtPiBpICsgajsKKyAgICAgIGZvbygoaSwgaikgLT4gaSArIGopOworICAgICAgSTxJbnRlZ2VyPiBpMiA9IGJhcigoaSwgaikgLT4gaSArIGopOworICAgICAgPGVycm9yIGRlc2NyPSJJbmNvbXBhdGlibGUgdHlwZXMuIEZvdW5kOiAnVHlwZUFyZ3NDb25zaXN0ZW5jeS5JPGphdmEubGFuZy5TdHJpbmc+JywgcmVxdWlyZWQ6ICdUeXBlQXJnc0NvbnNpc3RlbmN5Lkk8amF2YS5sYW5nLkludGVnZXI+JyI+STxJbnRlZ2VyPiBpMyA9IGJhcigoaSwgaikgLT4gIiIgKyBpICsgaik7PC9lcnJvcj4KKyAgICB9Cit9CisKK2NsYXNzIFR5cGVBcmdzQ29uc2lzdGVuY3kxIHsKKworICAgIGludGVyZmFjZSBJPFQ+IHsKKyAgICAgICAgaW50IG0oaW50IGksIFQgaik7CisgICAgfQorCisgICAgc3RhdGljIHZvaWQgZm9vKEk8SW50ZWdlcj4gcykgeyB9CisKKyAgICBzdGF0aWMgPFg+IEk8WD4gYmFyKEk8WD4gcykgeyByZXR1cm4gbnVsbDsgfQorCisgICAgeworICAgICAgICBJPEludGVnZXI+IGkxID0gKGksIGopIC0+IGkgKyBqOworICAgICAgICBmb28oKGksIGopIC0+IGkgKyBqKTsKKyAgICAgICAgSTxJbnRlZ2VyPiBpMiA9YmFyKDxlcnJvciBkZXNjcj0iQ3ljbGljIGluZmVyZW5jZSI+KGksIGopIC0+IGk8L2Vycm9yPikgOworICAgICAgICBJPEludGVnZXI+IGkzID0gYmFyKDxlcnJvciBkZXNjcj0iQ3ljbGljIGluZmVyZW5jZSI+KGksIGopIC0+ICIiICsgaSArIGo8L2Vycm9yPik7CisgICAgfQorfQorCitjbGFzcyBUeXBlQXJnc0NvbnNpc3RlbmN5MiB7CisgICAgc3RhdGljIDxUPiBJPFQ+IGJhcihJPFQ+IGkpIHtyZXR1cm4gbnVsbDt9CisgICAgc3RhdGljIDxUPiBJMTxUPiBiYXIxKEkxPFQ+IGkpIHtyZXR1cm4gbnVsbDt9CisgICAgc3RhdGljIDxUPiBJMjxUPiBiYXIyKEkyPFQ+IGkpIHtyZXR1cm4gaTt9CisKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CisgICAgICAgIEk8SW50ZWdlcj4gaTEgPSBiYXIoPGVycm9yIGRlc2NyPSJDeWNsaWMgaW5mZXJlbmNlIj54IC0+IHg8L2Vycm9yPik7CisgICAgICAgIEkxPEludGVnZXI+IGkyID0gYmFyMSg8ZXJyb3IgZGVzY3I9IkN5Y2xpYyBpbmZlcmVuY2UiPnggLT4gMTwvZXJyb3I+KTsKKyAgICAgICAgSTI8U3RyaW5nPiBhSTIgPSBiYXIyKHggLT4gIiIpOworICAgICAgICA8ZXJyb3IgZGVzY3I9IkluY29tcGF0aWJsZSB0eXBlcy4gRm91bmQ6ICdUeXBlQXJnc0NvbnNpc3RlbmN5Mi5JMjxqYXZhLmxhbmcuU3RyaW5nPicsIHJlcXVpcmVkOiAnVHlwZUFyZ3NDb25zaXN0ZW5jeTIuSTI8amF2YS5sYW5nLkludGVnZXI+JyI+STI8SW50ZWdlcj4gYUkyOCA9IGJhcjIoIHgtPiAiIik7PC9lcnJvcj4KKyAgICAgICAgSTI8SW50ZWdlcj4gaTMgPSBiYXIyKHggLT4geCk7CisgICAgICAgIEkyPEludGVnZXI+IGk0ID0gYmFyMih4IC0+IGZvb29JKCkpOworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oaTQuZm9vKDIpKTsKKyAgICB9CisKKyAgICBzdGF0aWMgPEs+IEsgZm9vbygpe3JldHVybiBudWxsO30KKyAgICBzdGF0aWMgaW50IGZvb29JKCl7cmV0dXJuIDA7fQorICAgCisgICAgaW50ZXJmYWNlIEk8WD4geworICAgICAgICBYIGZvbyhYIHgpOworICAgIH0KKyAgICBpbnRlcmZhY2UgSTE8WD4geworCisgICAgICAgIGludCBmb28oWCB4KTsKKyAgICB9CisKKyAgICBpbnRlcmZhY2UgSTI8WD4geworICAgICAgICBYIGZvbyhpbnQgeCk7CisgICAgfQorfQorCitjbGFzcyBUeXBlQXJnc0NvbnNpc3RlbmN5MyB7CisgICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgeyAKKyAgICAgICAgZG9JdDEoMSwgeCAtPiBkb0l0MSh4LCB5IC0+IHggKiB5KSk7CisgICAgICAgIGRvSXQxKDEsIHggLT4geCk7CisgICAgICAgIGRvSXQxKDEsIHggLT4geCAqIHgpOworICAgIH0KKyAgICBpbnRlcmZhY2UgRjE8UmVzdWx0VHlwZSwgUDE+IHsgUmVzdWx0VHlwZSBfKFAxIHApOyB9CisgICAgc3RhdGljIDxUPiBUIGRvSXQxKFQgaSwgRjE8VCxUPiBmKSB7IHJldHVybiBmLl8oaSk7fQorfQorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2xhbWJkYS9oaWdobGlnaHRpbmcvVHlwZUFyZ3NDb25zaXN0ZW5jeU1pc2MxLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2xhbWJkYS9oaWdobGlnaHRpbmcvVHlwZUFyZ3NDb25zaXN0ZW5jeU1pc2MxLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjEzYmJlYgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvbGFtYmRhL2hpZ2hsaWdodGluZy9UeXBlQXJnc0NvbnNpc3RlbmN5TWlzYzEuamF2YQpAQCAtMCwwICsxLDk0IEBACisvKgorICogQ29weXJpZ2h0IDIwMDAtMjAxMiBKZXRCcmFpbnMgcy5yLm8uCisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworaW1wb3J0IGphdmEudXRpbC5MaXN0OworY2xhc3MgVGVzdDEgeworICAgIAorICAgIGludGVyZmFjZSBJPFg+IHsKKyAgICAgICAgWCBmb28oTGlzdDxTdHJpbmc+IGxpc3QpOworICAgIH0KKyAgICAKKyAgICBzdGF0aWMgPFQ+IEk8VD4gYmFyKEk8VD4gaSl7cmV0dXJuIGk7fQorICAgIHN0YXRpYyA8VD4gdm9pZCBiYXIxKEk8VD4gaSl7fQorICAgIHN0YXRpYyA8VD4gdm9pZCBiYXIyKFQgdCwgSTxUPiBpKXt9CisgICAgc3RhdGljIDxUPiB2b2lkIGJhcjMoSTxUPiBpLCBUIHQpe30KKyAgICAKKyAgICB7CisgICAgICAgIGJhcih4IC0+IHgpOworICAgICAgICBiYXIxKHggLT4geCk7CisKKyAgICAgICAgSTxPYmplY3Q+IGxPID0gIHgtPng7CisgICAgICAgIGJhcjIoIiIsIGxPKTsKKworICAgICAgICBJPFN0cmluZz4gbFMgPSAgPGVycm9yIGRlc2NyPSJJbmNvbXBhdGlibGUgcmV0dXJuIHR5cGUgTGlzdDxTdHJpbmc+IGluIGxhbWJkYSBleHByZXNzaW9uIj54LT54PC9lcnJvcj47CisgICAgICAgIGJhcjIoIiIsIGxTKTsKKworICAgICAgICBiYXIyKCIiLCB4IC0+IHgpOworCisgICAgICAgIGJhcjMoeCAtPiB4LCAiIik7CisKKyAgICAgICAgaW50IGl4YyA9IDQyOworICAgICAgICBiYXIoeCAtPiB7CisgICAgICAgICAgICAgIGlmIChpeGMgPT0gMikgcmV0dXJuICJhYWEiOworICAgICAgICAgICAgICByZXR1cm4geDsKKyAgICAgICAgICAgfSk7CisgICAgICAgIGJhcih4IC0+IHsKKyAgICAgICAgICAgICAgaWYgKGl4YyA9PSAyKSByZXR1cm4geDsKKyAgICAgICAgICAgICAgcmV0dXJuIHg7CisgICAgICAgICAgIH0pOworICAgIH0KK30KKworCitjbGFzcyBUZXN0MiB7CisKKyAgICBpbnRlcmZhY2UgSTxYPiB7CisgICAgICAgIFggZm9vKExpc3Q8WD4gbGlzdCk7CisgICAgfQorCisgICAgc3RhdGljIDxUPiBJPFQ+IGJhcihJPFQ+IGkpe3JldHVybiBpO30KKyAgICBzdGF0aWMgPFQ+IHZvaWQgYmFyMShJPFQ+IGkpe30KKyAgICBzdGF0aWMgPFQ+IHZvaWQgYmFyMihUIHQsIEk8VD4gaSl7fQorICAgIHN0YXRpYyA8VD4gdm9pZCBiYXIzKEk8VD4gaSwgVCB0KXt9CisKKyAgICB7CisgICAgICAgIGJhcig8ZXJyb3IgZGVzY3I9IkN5Y2xpYyBpbmZlcmVuY2UiPnggLT4geDwvZXJyb3I+KTsKKyAgICAgICAgYmFyMSg8ZXJyb3IgZGVzY3I9IkN5Y2xpYyBpbmZlcmVuY2UiPnggLT4geDwvZXJyb3I+KTsKKyAgICAgICAgYmFyMigxLCA8ZXJyb3IgZGVzY3I9IkluY29tcGF0aWJsZSByZXR1cm4gdHlwZSBMaXN0PEludGVnZXI+IGluIGxhbWJkYSBleHByZXNzaW9uIj54IC0+IHg8L2Vycm9yPik7CisgICAgICAgIGJhcjIoIiIsIDxlcnJvciBkZXNjcj0iSW5jb21wYXRpYmxlIHJldHVybiB0eXBlIExpc3Q8U3RyaW5nPiBpbiBsYW1iZGEgZXhwcmVzc2lvbiI+eCAtPiB4PC9lcnJvcj4pOworICAgICAgICBiYXIzKDxlcnJvciBkZXNjcj0iSW5jb21wYXRpYmxlIHJldHVybiB0eXBlIExpc3Q8U3RyaW5nPiBpbiBsYW1iZGEgZXhwcmVzc2lvbiI+eCAtPiB4PC9lcnJvcj4sICIiKTsKKyAgICB9Cit9CisKK2NsYXNzIFRlc3QzIHsKKworICAgIGludGVyZmFjZSBJPFg+IHsKKyAgICAgICAgTGlzdDxYPiBmb28oTGlzdDxYPiBsaXN0KTsKKyAgICB9CisKKyAgICBzdGF0aWMgPFQ+IEk8VD4gYmFyKEk8VD4gaSl7cmV0dXJuIGk7fQorICAgIHN0YXRpYyA8VD4gdm9pZCBiYXIxKEk8VD4gaSl7fQorICAgIHN0YXRpYyA8VD4gdm9pZCBiYXIyKFQgdCwgSTxUPiBpKXt9CisgICAgc3RhdGljIDxUPiB2b2lkIGJhcjMoSTxUPiBpLCBUIHQpe30KKworICAgIHsKKyAgICAgICAgYmFyKDxlcnJvciBkZXNjcj0iQ3ljbGljIGluZmVyZW5jZSI+eCAtPiB4PC9lcnJvcj4pOworICAgICAgICBiYXIxKDxlcnJvciBkZXNjcj0iQ3ljbGljIGluZmVyZW5jZSI+eCAtPiB4PC9lcnJvcj4pOworICAgICAgICBiYXIyKDEsIHggLT4geCk7CisgICAgICAgIGJhcjIoIiIsIHggLT4geCk7CisKKyAgICAgICAgYmFyMyh4IC0+IHgsICIiKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2xhbWJkYS9oaWdobGlnaHRpbmcvVHlwZUFyZ3NDb25zaXN0ZW5jeU1pc2MyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2xhbWJkYS9oaWdobGlnaHRpbmcvVHlwZUFyZ3NDb25zaXN0ZW5jeU1pc2MyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTU0NDM0OAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvbGFtYmRhL2hpZ2hsaWdodGluZy9UeXBlQXJnc0NvbnNpc3RlbmN5TWlzYzIuamF2YQpAQCAtMCwwICsxLDU4IEBACisvKgorICogQ29weXJpZ2h0IDIwMDAtMjAxMiBKZXRCcmFpbnMgcy5yLm8uCisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworaW1wb3J0IGphdmEudXRpbC4qOworY2xhc3MgVGVzdDEgeworICB7CisgICAgQ29tcGFyYWJsZTw/IGV4dGVuZHMgSW50ZWdlcj4gYyA9IChJbnRlZ2VyIG8pLT57CisgICAgICByZXR1cm4gMDsKKyAgICB9OworICAgIAorICAgIENvbXBhcmFibGU8PyBzdXBlciBJbnRlZ2VyPiBjMSA9IChJbnRlZ2VyIG8pLT57CisgICAgICByZXR1cm4gMDsKKyAgICB9OworICB9Cit9CisKKworY2xhc3MgVGVzdDI8VT4geworICBpbnRlcmZhY2UgSTxUPiB7CisgICAgdm9pZCBtKFQgdCk7CisgIH0KKyAgcHJpdmF0ZSB2b2lkIGZvbyhJPD8gc3VwZXIgVT4gaTEpIHt9CisKKyAgcHJpdmF0ZSB2b2lkIGJhcigpIHsKKyAgICBmb28oKFUgdSkgLT4ge30pOworICAgIGZvbyh1IC0+IHt9KTsKKyAgfQorCisgIGludGVyZmFjZSBJMTxUPiB7fQorICBwcml2YXRlIDxBIGV4dGVuZHMgSTE8PyBzdXBlciBVPj4gQSBiYXIoQSBhKSB7CisgICAgZm9vKChVIHUpLT57fSk7CisgICAgZm9vKHUtPnt9KTsKKyAgICByZXR1cm4gYTsKKyAgfQorfQorCitjbGFzcyBUZXN0TmV3RXhwcmVzc2lvbjxFPiB7CisgICAgcHVibGljIFRlc3ROZXdFeHByZXNzaW9uKENvbXBhcmF0b3I8PyBzdXBlciBFPiBjb21wYXJhdG9yKSB7CisgICAgICAgIC8vc29tZSBjb2RlCisgICAgfQorICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKKyAgICAgIFRlc3ROZXdFeHByZXNzaW9uPFN0cmluZz4gc3RycyA9IG5ldyBUZXN0TmV3RXhwcmVzc2lvbjxTdHJpbmc+KChvMSwgbzIpIC0+IHsKKyAgICAgICAgICAgIHJldHVybiBvMi5jb21wYXJlVG9JZ25vcmVDYXNlKG8xKTsKKyAgICAgICAgfSk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvbGFtYmRhL2hpZ2hsaWdodGluZy9UeXBlQXJnc0NvbnNpc3RlbmN5V2l0aG91dFBhcmFtcy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9sYW1iZGEvaGlnaGxpZ2h0aW5nL1R5cGVBcmdzQ29uc2lzdGVuY3lXaXRob3V0UGFyYW1zLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWFlMTBiZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvbGFtYmRhL2hpZ2hsaWdodGluZy9UeXBlQXJnc0NvbnNpc3RlbmN5V2l0aG91dFBhcmFtcy5qYXZhCkBAIC0wLDAgKzEsNDkgQEAKK2ltcG9ydCBqYXZhLmxhbmcuU3RyaW5nOworaW1wb3J0IGphdmEudXRpbC4qOworY2xhc3MgVGVzdDQgeworICAgaW50ZXJmYWNlIEk8Sz4geworICAgICAgIExpc3Q8Sz4gZm9vKCk7CisgICB9CisgICAgCisgICAgc3RhdGljIDxUPiB2b2lkIGJhcihJPFQ+IGkpe30KKyAgICAKKyAgICB7CisgICAgICAgIGJhcigoKSAtPiBudWxsKTsKKyAgICB9Cit9CisKK2NsYXNzIFRlc3Q1IHsKKyAgICBpbnRlcmZhY2UgSTxLPiB7CisgICAgICAgIHZvaWQgZm9vKEsgayk7CisgICAgfQorCisgICAgc3RhdGljIDxUPiB2b2lkIGJhcihJPFQ+IGkpe30KKworICAgIHsKKyAgICAgICAgYmFyKDxlcnJvciBkZXNjcj0iSW5jb21wYXRpYmxlIHBhcmFtZXRlciB0eXBlcyBpbiBsYW1iZGEgZXhwcmVzc2lvbiI+KCkgLT4gbnVsbDwvZXJyb3I+KTsKKyAgICB9Cit9CitjbGFzcyBUZXN0NiB7CisgICAgaW50ZXJmYWNlIEk8Sz4geworICAgICAgICB2b2lkIGZvbygpOworICAgIH0KKworICAgIHN0YXRpYyA8VD4gdm9pZCBiYXIoSTxUPiBpKXt9CisKKyAgICB7CisgICAgICAgIGJhcigoKSAtPiBudWxsKTsKKyAgICAgICAgYmFyKCgpIC0+IHt9KTsKKyAgICB9Cit9CisKK2NsYXNzIFRlc3Q3IHsKKyAgaW50ZXJmYWNlIEk8Sz4geworICAgIHZvaWQgZm9vKFN0cmluZyBzKTsKKyAgfQorICAKKyAgc3RhdGljIDxUPiB2b2lkIGJhcihJPFQ+IGkpe30KKworICB7CisgICAgIGJhcih4IC0+IHt9KTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvbGFtYmRhL2hpZ2hsaWdodGluZy9VbmhhbmRsZWRFeGNlcHRpb24uamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvbGFtYmRhL2hpZ2hsaWdodGluZy9VbmhhbmRsZWRFeGNlcHRpb24uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZmVkZjI2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9sYW1iZGEvaGlnaGxpZ2h0aW5nL1VuaGFuZGxlZEV4Y2VwdGlvbi5qYXZhCkBAIC0wLDAgKzEsMTIgQEAKK2ltcG9ydCBqYXZhLmlvLklPRXhjZXB0aW9uOworCitpbnRlcmZhY2UgQ2FsbGFibGU8Vj4geworICAgIFYgY2FsbCgpIHRocm93cyBFeGNlcHRpb247Cit9CisKK2NsYXNzIFRlc3QyIHsKKyAgICBzdGF0aWMgPFY+IHZvaWQgbShDYWxsYWJsZTxWPiBjKXt9CisgICAgeworICAgICAgICBtKCgpIC0+IHt0aHJvdyBuZXcgSU9FeGNlcHRpb24oKTt9KTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2xhbWJkYS9oaWdobGlnaHRpbmcvVW5yZWFjaGFibGVTdGF0ZW1lbnQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvbGFtYmRhL2hpZ2hsaWdodGluZy9VbnJlYWNoYWJsZVN0YXRlbWVudC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhjZTg2NDQwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9sYW1iZGEvaGlnaGxpZ2h0aW5nL1VucmVhY2hhYmxlU3RhdGVtZW50LmphdmEKQEAgLTAsMCArMSw5IEBACitjbGFzcyBUZXN0MSB7CisgICAgeworICAgICAgQ29tcGFyYWJsZTxTdHJpbmc+IGMgPSBvIC0+IHsKKyAgICAgICAgaWYgKG8gPT0gbnVsbCkgcmV0dXJuIDE7CisgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgPGVycm9yIGRlc2NyPSJVbnJlYWNoYWJsZSBzdGF0ZW1lbnQiPlN5c3RlbS5vdXQucHJpbnRsbigiSGVsbG8iKTs8L2Vycm9yPgorICAgICAgfTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9sYW1iZGEvaGlnaGxpZ2h0aW5nL1VzZUluY29tcGxldGVQYXJlbnRTdWJzdGl0dXRvci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9sYW1iZGEvaGlnaGxpZ2h0aW5nL1VzZUluY29tcGxldGVQYXJlbnRTdWJzdGl0dXRvci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc0YWM4YWYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2xhbWJkYS9oaWdobGlnaHRpbmcvVXNlSW5jb21wbGV0ZVBhcmVudFN1YnN0aXR1dG9yLmphdmEKQEAgLTAsMCArMSwyNSBAQAoraW1wb3J0IGphdmEudXRpbC5jb25jdXJyZW50LmF0b21pYy5BdG9taWNJbnRlZ2VyOworCitjbGFzcyBUZXN0IHsKKyAgc3RhdGljIGNsYXNzIExpc3Q8VD4geworICAgIHB1YmxpYyBTdHJlYW08VD4gc3RyZWFtKCkgeworICAgICAgcmV0dXJuIG51bGw7CisgICAgfQorICB9CisKKyAgaW50ZXJmYWNlIEludEZ1bmN0aW9uPFQ+IHsKKyAgICAgIHB1YmxpYyBpbnQgYXBwbHlBc0ludChUIHQpOworICB9CisKKyAgc3RhdGljIGNsYXNzIFN0cmVhbTxFPiB7CisgICAgcHVibGljIFN0cmVhbSBtYXAoSW50RnVuY3Rpb248PyBzdXBlciBFPiBtYXBwZXIpIHsKKyAgICAgIHJldHVybiBudWxsOworICAgIH0KKyAgfQorCisgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKExpc3Q8QXRvbWljSW50ZWdlcj4gbGlzdCkgeworICAgIGxpc3Quc3RyZWFtKCkubWFwKGF0b21pYyAtPiBhdG9taWMuZ2V0KCkpOworICB9Cit9CisKKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9sYW1iZGEvaGlnaGxpZ2h0aW5nL1ZhcmlhYmxlSW5pdGlhbGl6YXRpb24uamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvbGFtYmRhL2hpZ2hsaWdodGluZy9WYXJpYWJsZUluaXRpYWxpemF0aW9uLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjZhMWY2YgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvbGFtYmRhL2hpZ2hsaWdodGluZy9WYXJpYWJsZUluaXRpYWxpemF0aW9uLmphdmEKQEAgLTAsMCArMSw1IEBACitjbGFzcyBUZXN0MSB7CisgICAgeworICAgICAgICBSdW5uYWJsZSByID0gKCkgLT4geyA8ZXJyb3IgZGVzY3I9IlZhcmlhYmxlICdyJyBtaWdodCBub3QgaGF2ZSBiZWVuIGluaXRpYWxpemVkIj5yPC9lcnJvcj4ucnVuKCk7IH07CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvbGFtYmRhL2hpZ2hsaWdodGluZy9XaWxkY2FyZEJvdW5kcy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9sYW1iZGEvaGlnaGxpZ2h0aW5nL1dpbGRjYXJkQm91bmRzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjE4ZGJiMwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvbGFtYmRhL2hpZ2hsaWdodGluZy9XaWxkY2FyZEJvdW5kcy5qYXZhCkBAIC0wLDAgKzEsMjAgQEAKK2NsYXNzIFdpbGRjYXJkQm91bmRzIHsKKworICAgIGludGVyZmFjZSBJPFQ+IHsKKyAgICAgICAgVCBmb28oVCBhLCBUIGIpOworICAgIH0KKworICAgIHZvaWQgbTEoSTw/IGV4dGVuZHMgU3RyaW5nPiBmMSkge30KKyAgICB2b2lkIG0yKEk8PyBzdXBlciBTdHJpbmc+IGYyKSB7fQorICAgIHZvaWQgbTMoSTw/PiBmMykge30KKworICAgIEk8PyBleHRlbmRzIFN0cmluZz4gZjEgPSAoYSwgYikgLT4gYTsKKyAgICBJPD8gc3VwZXIgU3RyaW5nPiBmMiA9IChhLCBiKSAtPiBhOworICAgIEk8Pz4gZjMgPSAoYSwgYikgLT4gYTsKKworICAgIHsKKyAgICAgICAgbTEoKGEsIGIpIC0+IGEpOworICAgICAgICBtMigoYSwgYikgLT4gYSk7CisgICAgICAgIG0zKChhLCBiKSAtPiBhKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2xhbWJkYS9pbmZlcmVuY2UvRnVuY3Rpb25hbEludGVyZmFjZVNob3VsZEhhdmVFeGFjdGx5T25lTWV0aG9kLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2xhbWJkYS9pbmZlcmVuY2UvRnVuY3Rpb25hbEludGVyZmFjZVNob3VsZEhhdmVFeGFjdGx5T25lTWV0aG9kLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDQwNzAxNwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvbGFtYmRhL2luZmVyZW5jZS9GdW5jdGlvbmFsSW50ZXJmYWNlU2hvdWxkSGF2ZUV4YWN0bHlPbmVNZXRob2QuamF2YQpAQCAtMCwwICsxLDQ4IEBACitwdWJsaWMgY2xhc3MgTm90QUZJVCB7CisgIHN0YXRpYyBjbGFzcyBGaXJzdCB7CisgICAgc3RhdGljIGludGVyZmFjZSBBPFQ+IHsKKyAgICAgIHZvaWQgZm9vMSgpOworICAgICAgdm9pZCBmb28yKCk7CisgICAgfQorICAgIHN0YXRpYyA8VD4gdm9pZCBmb28oQTxUPiBhKSB7CisgICAgfQorCisgICAgdm9pZCBiYXIoKSB7CisgICAgICAgIGZvbyg8ZXJyb3IgZGVzY3I9Ik11bHRpcGxlIG5vbi1vdmVycmlkaW5nIGFic3RyYWN0IG1ldGhvZHMgZm91bmQiPigpIC0+e308L2Vycm9yPik7CisgICAgfQorICB9CisKKyAgc3RhdGljIGNsYXNzIFdpdGhJbmhlcml0YW5jZSB7CisgICAgc3RhdGljIGludGVyZmFjZSBBPFQ+IHsKKyAgICAgIHZvaWQgZm9vMSgpOworICAgIH0KKworICAgIHN0YXRpYyBpbnRlcmZhY2UgQjxNPiBleHRlbmRzIEE8TT4geworICAgICAgdm9pZCBmb28yKCk7CisgICAgfQorCisgICAgc3RhdGljIDxUPiB2b2lkIGZvbyhCPFQ+IGEpIHsKKyAgICB9CisKKyAgICB2b2lkIGJhcigpIHsKKyAgICAgIGZvbyg8ZXJyb3IgZGVzY3I9Ik11bHRpcGxlIG5vbi1vdmVycmlkaW5nIGFic3RyYWN0IG1ldGhvZHMgZm91bmQiPigpLT57fTwvZXJyb3I+KTsKKyAgICB9CisgIH0KKworICBzdGF0aWMgY2xhc3MgV2l0aEluaGVyaXRhbmNlT3ZlcnJpZGVTYW1lTWV0aG9kIHsKKyAgICBzdGF0aWMgaW50ZXJmYWNlIEE8VD4geworICAgICAgdm9pZCBmb28xKCk7CisgICAgfQorCisgICAgc3RhdGljIGludGVyZmFjZSBCPE0+IGV4dGVuZHMgQTxNPiB7CisgICAgICB2b2lkIGZvbzEoKTsKKyAgICB9CisKKyAgICBzdGF0aWMgPFQ+IHZvaWQgZm9vKEI8VD4gYSkgeworICAgIH0KKworICAgIHZvaWQgYmFyKCkgeworICAgICAgZm9vKCgpLT57fSk7CisgICAgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9sYW1iZGEvaW5mZXJlbmNlL1NpbXBsZUN5Y2xpY0luZmVyZW5jZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9sYW1iZGEvaW5mZXJlbmNlL1NpbXBsZUN5Y2xpY0luZmVyZW5jZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQzNDQ2NjUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2xhbWJkYS9pbmZlcmVuY2UvU2ltcGxlQ3ljbGljSW5mZXJlbmNlLmphdmEKQEAgLTAsMCArMSwyMCBAQAorY2xhc3MgTm9MYW1iZGEgeworICAgIGludGVyZmFjZSBJPFQ+IHsKKyAgICAgICAgdm9pZCBmKFQgdCk7CisgICAgfQorCisgICAgPFo+IHZvaWQgYmFyKEk8Wj4gaXopIHsKKyAgICB9CisKKyAgICB2b2lkIGJhenooKSB7CisgICAgICAgIGJhcihudWxsKTsKKyAgICAgICAgYmFyKDxlcnJvciBkZXNjcj0iQ3ljbGljIGluZmVyZW5jZSI+KHopLT4ge1N5c3RlbS5vdXQucHJpbnRsbigpO308L2Vycm9yPik7CisgICAgfQorICAKKyAgICBzdGF0aWMgPFQ+IFQgaWQoVCBpMikge3JldHVybiBpMjt9CisKKyAgICB7CisgICAgICAgaWQoPGVycm9yIGRlc2NyPSJDeWNsaWMgaW5mZXJlbmNlIj4oKSAtPiB7U3lzdGVtLm91dC5wcmludGxuKCJoaSIpO308L2Vycm9yPik7CisgICAgICAgTm9MYW1iZGEuPFJ1bm5hYmxlPmlkKCgpIC0+IHtTeXN0ZW0ub3V0LnByaW50bG4oImhpIik7fSk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvbGFtYmRhL21ldGhvZFJlZi9BY2Nlc3NNb2RpZmllcnMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvbGFtYmRhL21ldGhvZFJlZi9BY2Nlc3NNb2RpZmllcnMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MGI2OTQ4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9sYW1iZGEvbWV0aG9kUmVmL0FjY2Vzc01vZGlmaWVycy5qYXZhCkBAIC0wLDAgKzEsNzUgQEAKK2NsYXNzIE15VGVzdCB7CisgICAgCisgICAgcHJpdmF0ZSBzdGF0aWMgY2xhc3MgRm9vIHsKKyAgICAgICAgc3RhdGljIGludCBmb28oaW50IGkpIHsgcmV0dXJuIGk7IH0KKyAgICB9CisgICAgCisgICAgc3RhdGljIEZvbyBmb28gPSBuZXcgRm9vKCk7CisKKyAgICBzdGF0aWMgdm9pZCBmb28oU3RyaW5nIHMpIHt9CisgICAgCisgICAgc3RhdGljIHZvaWQgYmFyKEludGVnZXIgaSwgTnVtYmVyIG4pIHt9CisgICAgc3RhdGljIHZvaWQgYmFyKE51bWJlciBuLCBJbnRlZ2VyIGkpIHt9CisgICAgCisgICAgdm9pZCBiYXooaW50IGkpIHt9Cit9CisKK2NsYXNzIEFsaWVuVGVzdCB7CisgICAgCisgICAgaW50ZXJmYWNlIElJbnQgeworICAgICAgICBpbnQgXyhpbnQgaSk7CisgICAgfQorICAgIAorICAgIGludGVyZmFjZSBJSW50SW50IHsKKyAgICAgICAgaW50IF8oSW50ZWdlciBpMSwgSW50ZWdlciBpMik7CisgICAgfQorCisgICAgc3RhdGljIHsKKyAgICAgICAgPGVycm9yIGRlc2NyPSJJbmNvbXBhdGlibGUgdHlwZXMuIEZvdW5kOiAnPG1ldGhvZCByZWZlcmVuY2U+JywgcmVxdWlyZWQ6ICdBbGllblRlc3QuSUludCciPklJbnQgaTEgPSBNeVRlc3Q6OmFicmFjYWRhYnJhOzwvZXJyb3I+CisgICAgICAgIDxlcnJvciBkZXNjcj0iSW5jb21wYXRpYmxlIHR5cGVzLiBGb3VuZDogJzxtZXRob2QgcmVmZXJlbmNlPicsIHJlcXVpcmVkOiAnQWxpZW5UZXN0LklJbnQnIj5JSW50IGkyID0gTXlUZXN0Ojpmb287PC9lcnJvcj4KKyAgICAgICAgPGVycm9yIGRlc2NyPSJJbmNvbXBhdGlibGUgdHlwZXMuIEZvdW5kOiAnPG1ldGhvZCByZWZlcmVuY2U+JywgcmVxdWlyZWQ6ICdBbGllblRlc3QuSUludCciPklJbnQgaTMgPSBNeVRlc3Q6OmJhcjs8L2Vycm9yPgorICAgICAgICA8ZXJyb3IgZGVzY3I9IkluY29tcGF0aWJsZSB0eXBlcy4gRm91bmQ6ICc8bWV0aG9kIHJlZmVyZW5jZT4nLCByZXF1aXJlZDogJ0FsaWVuVGVzdC5JSW50SW50JyI+SUludEludCBpNCA9IE15VGVzdDo6YmFyOzwvZXJyb3I+CisgICAgICAgIDxlcnJvciBkZXNjcj0iSW5jb21wYXRpYmxlIHR5cGVzLiBGb3VuZDogJzxtZXRob2QgcmVmZXJlbmNlPicsIHJlcXVpcmVkOiAnQWxpZW5UZXN0LklJbnQnIj5JSW50IGk1ID0gTXlUZXN0OjpiYXo7PC9lcnJvcj4KKyAgICAgICAgSUludCBpNiA9IDxlcnJvciBkZXNjcj0iJ2ZvbyhpbnQpJyBpcyBub3QgcHVibGljIGluICdNeVRlc3QuRm9vJy4gQ2Fubm90IGJlIGFjY2Vzc2VkIGZyb20gb3V0c2lkZSBwYWNrYWdlIj5NeVRlc3QuZm9vOjpmb288L2Vycm9yPjsKKyAgICAgICAgSUludCBpNyA9IE15VGVzdC48ZXJyb3IgZGVzY3I9IidNeVRlc3QuRm9vJyBoYXMgcHJpdmF0ZSBhY2Nlc3MgaW4gJ015VGVzdCciPkZvbzwvZXJyb3I+Ojpmb287CisgICAgfQorfQorCisKK2NsYXNzIE15VGVzdDEgeworICAgIAorICAgIGludGVyZmFjZSBJMSB7CisgICAgICAgIGludFtdIF8oKTsKKyAgICB9CisgICAgCisgICAgaW50ZXJmYWNlIEkyIHsKKyAgICAgICAgT2JqZWN0IF8oKTsKKyAgICB9CisgICAgCisgICAgaW50ZXJmYWNlIEkzIHsKKyAgICAgICAgY2hhcltdIF8oKTsKKyAgICB9CisgICAgCisgICAgaW50ZXJmYWNlIEk0IHsKKworICAgICAgICBib29sZWFuICBfKCk7CisgICAgfQorCisgICAgaW50ZXJmYWNlIEk1IHsKKyAgICAgICAgQ2xhc3M8PyBleHRlbmRzIE15VGVzdDE+IF8oKTsKKyAgICB9CisKKyAgICBpbnRlcmZhY2UgSTYgeworICAgICAgICBDbGFzczxNeVRlc3QxPiBfKCk7CisgICAgfQorICAgIAorICAgIHZvaWQgZm9vKE9iamVjdFtdIGFycikgeworICAgICAgICA8ZXJyb3IgZGVzY3I9IkluY29tcGF0aWJsZSB0eXBlcy4gRm91bmQ6ICc8bWV0aG9kIHJlZmVyZW5jZT4nLCByZXF1aXJlZDogJ015VGVzdDEuSTEnIj5JMSBjMSA9IGFyciA6OiBjbG9uZTs8L2Vycm9yPgorICAgICAgICBJMiBjMiA9IGFyciA6OiBjbG9uZTsKKyAgICAgICAgPGVycm9yIGRlc2NyPSJJbmNvbXBhdGlibGUgdHlwZXMuIEZvdW5kOiAnPG1ldGhvZCByZWZlcmVuY2U+JywgcmVxdWlyZWQ6ICdNeVRlc3QxLkkzJyI+STMgYzMgPSBhcnI6OmNsb25lOzwvZXJyb3I+CisgICAgICAgIDxlcnJvciBkZXNjcj0iSW5jb21wYXRpYmxlIHR5cGVzLiBGb3VuZDogJzxtZXRob2QgcmVmZXJlbmNlPicsIHJlcXVpcmVkOiAnTXlUZXN0MS5JNCciPkk0IGM1ID0gYXJyOjpjbG9uZTs8L2Vycm9yPgorCisgICAgICAgIDxlcnJvciBkZXNjcj0iSW5jb21wYXRpYmxlIHR5cGVzLiBGb3VuZDogJzxtZXRob2QgcmVmZXJlbmNlPicsIHJlcXVpcmVkOiAnTXlUZXN0MS5JNSciPkk1IGM0ID0gdGhpczo6Z2V0Q2xhc3M7PC9lcnJvcj4KKyAgICAgICAgPGVycm9yIGRlc2NyPSJJbmNvbXBhdGlibGUgdHlwZXMuIEZvdW5kOiAnPG1ldGhvZCByZWZlcmVuY2U+JywgcmVxdWlyZWQ6ICdNeVRlc3QxLkk2JyI+STYgYzYgPSB0aGlzOjpnZXRDbGFzczs8L2Vycm9yPgorICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvbGFtYmRhL21ldGhvZFJlZi9BbWJpZ3VpdHkuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvbGFtYmRhL21ldGhvZFJlZi9BbWJpZ3VpdHkuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZmUxMzk1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9sYW1iZGEvbWV0aG9kUmVmL0FtYmlndWl0eS5qYXZhCkBAIC0wLDAgKzEsMTg1IEBACitwYWNrYWdlIHRvZGVsZXRlOworCisvKioKKyAqIENyZWF0ZWQgd2l0aCBJbnRlbGxpSiBJREVBLgorICogVXNlcjogQW5uYS5Lb3psb3ZhCisgKiBEYXRlOiA5LzI2LzEyCisgKiBUaW1lOiAxOjE4IFBNCisgKiBUbyBjaGFuZ2UgdGhpcyB0ZW1wbGF0ZSB1c2UgRmlsZSB8IFNldHRpbmdzIHwgRmlsZSBUZW1wbGF0ZXMuCisgKi8KK2NsYXNzIE15VGVzdCB7CisgICAgaW50ZXJmYWNlIEJhcjEgeworICAgICAgICBpbnQgXyhTdHJpbmcgcyk7CisgICAgfQorCisgICAgaW50ZXJmYWNlIEJhcjIgeworICAgICAgICBpbnQgXyhpbnQgcyk7CisgICAgfQorCisgICAgdm9pZCBiYXIoQmFyMSBiMSl7fQorICAgIHZvaWQgYmFyKEJhcjIgYjEpe30KKworICAgIHN0YXRpYyBpbnQgZm9vKGludCBpKSB7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIHN0YXRpYyBpbnQgZm9vKFN0cmluZyBpKSB7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIHsKKyAgICAgICAgQmFyMSBiMSA9IE15VGVzdCA6OiBmb287CisgICAgICAgIGJhcjxlcnJvciBkZXNjcj0iQW1iaWd1b3VzIG1ldGhvZCBjYWxsOiBib3RoICdNeVRlc3QuYmFyKEJhcjEpJyBhbmQgJ015VGVzdC5iYXIoQmFyMiknIG1hdGNoIj4oTXlUZXN0IDo6IGZvbyk8L2Vycm9yPjsKKyAgICB9Cit9CisKK2NsYXNzIE15VGVzdDEgeworICAgIGludGVyZmFjZSBCYXIxIHsKKyAgICAgICAgaW50IF8oU3RyaW5nIHMpOworICAgIH0KKworICAgIGludGVyZmFjZSBCYXIyIHsKKyAgICAgICAgaW50IF8oaW50IHMpOworICAgIH0KKworICAgIC8vdm9pZCBiYXIoQmFyMSBiMSl7fQorICAgIHZvaWQgYmFyKEJhcjIgYjEpe30KKworICAgIHN0YXRpYyBpbnQgZm9vKGludCBpKSB7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIHN0YXRpYyBpbnQgZm9vKFN0cmluZyBpKSB7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIHsKKyAgICAgICAgPGVycm9yIGRlc2NyPSJJbmNvbXBhdGlibGUgdHlwZXMuIEZvdW5kOiAnPG1ldGhvZCByZWZlcmVuY2U+JywgcmVxdWlyZWQ6ICd0b2RlbGV0ZS5NeVRlc3QxLkJhcjEnIj5CYXIxIGIxID0gTXlUZXN0MiA6OiBmb287PC9lcnJvcj4KKyAgICAgICAgYmFyKE15VGVzdDEgOjogZm9vKTsKKyAgICB9Cit9CisKK2NsYXNzIE15VGVzdDIgeworICAgIGludGVyZmFjZSBCYXIxIHsKKyAgICAgICAgaW50IF8oU3RyaW5nIHMpOworICAgIH0KKworICAgIGludGVyZmFjZSBCYXIyIHsKKyAgICAgICAgaW50IF8oaW50IHMpOworICAgIH0KKworICAgIHZvaWQgYmFyKEJhcjEgYjEpe30KKyAgICB2b2lkIGJhcihCYXIyIGIxKXt9CisKKyAgICBzdGF0aWMgaW50IGZvbyhpbnQgaSkgeworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICAvKnN0YXRpYyBpbnQgZm9vKFN0cmluZyBpKSB7CisgICAgICAgIHJldHVybiAwOworICAgIH0qLworCisgICAgeworICAgICAgICA8ZXJyb3IgZGVzY3I9IkluY29tcGF0aWJsZSB0eXBlcy4gRm91bmQ6ICc8bWV0aG9kIHJlZmVyZW5jZT4nLCByZXF1aXJlZDogJ3RvZGVsZXRlLk15VGVzdDIuQmFyMSciPkJhcjEgYjEgPSBNeVRlc3QyIDo6IGZvbzs8L2Vycm9yPgorICAgICAgICBiYXIoTXlUZXN0MiA6OiBmb28pOworICAgIH0KK30KKworY2xhc3MgTXlUZXN0MyB7CisgICAgaW50ZXJmYWNlIEJhcjEgeworICAgICAgICBpbnQgXyhTdHJpbmcgcyk7CisgICAgfQorCisgICAgaW50ZXJmYWNlIEJhcjIgeworICAgICAgICBpbnQgXyhpbnQgcyk7CisgICAgfQorCisgICAgLy92b2lkIGJhcihCYXIxIGIxKXt9CisgICAgdm9pZCBiYXIoQmFyMiBiMSl7fQorCisgICAgLypzdGF0aWMgaW50IGZvbyhpbnQgaSkgeworICAgICAgICByZXR1cm4gMDsKKyAgICB9Ki8KKworICAgIHN0YXRpYyBpbnQgZm9vKFN0cmluZyBpKSB7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIHsKKyAgICAgICAgPGVycm9yIGRlc2NyPSJJbmNvbXBhdGlibGUgdHlwZXMuIEZvdW5kOiAnPG1ldGhvZCByZWZlcmVuY2U+JywgcmVxdWlyZWQ6ICd0b2RlbGV0ZS5NeVRlc3QzLkJhcjEnIj5CYXIxIGIxID0gTXlUZXN0MiA6OiBmb287PC9lcnJvcj4KKyAgICAgICAgYmFyPGVycm9yIGRlc2NyPSInYmFyKHRvZGVsZXRlLk15VGVzdDMuQmFyMiknIGluICd0b2RlbGV0ZS5NeVRlc3QzJyBjYW5ub3QgYmUgYXBwbGllZCB0byAnKDxtZXRob2QgcmVmZXJlbmNlPiknIj4oTXlUZXN0MyA6OiBmb28pPC9lcnJvcj47CisgICAgfQorfQorCisKK2NsYXNzIE15VGVzdDQgeworICAgIGludGVyZmFjZSBCYXIxPFQ+IHsKKyAgICAgICAgaW50IF8oVCBzKTsKKyAgICB9CisKKworICAgIHZvaWQgYmFyKEJhcjEgYjEpe30KKworICAgIHN0YXRpYyBpbnQgZm9vKGludCBpKSB7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIHN0YXRpYyBpbnQgZm9vKFN0cmluZyBpKSB7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIHsKKyAgICAgICAgIGJhcjxlcnJvciBkZXNjcj0iJ2Jhcih0b2RlbGV0ZS5NeVRlc3Q0LkJhcjEpJyBpbiAndG9kZWxldGUuTXlUZXN0NCcgY2Fubm90IGJlIGFwcGxpZWQgdG8gJyg8bWV0aG9kIHJlZmVyZW5jZT4pJyI+KE15VGVzdDQ6OiBmb28pPC9lcnJvcj47CisgICAgfQorfQorCitjbGFzcyBNeVRlc3Q1IHsKKyAgICBpbnRlcmZhY2UgQmFyMTxUPiB7CisgICAgICAgIGludCBfKFQgcyk7CisgICAgfQorCisKKyAgICBzdGF0aWMgPFQxPiB2b2lkIGJhcihCYXIxPFQxPiBiMSl7fQorCisgICAgc3RhdGljIDxLPiBpbnQgZm9vKEsgaykgeworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBzdGF0aWMgaW50IGZvbyhTdHJpbmcgaSkgeworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICB7CisgICAgICAgICAvL3RvZG8gYW1iaWd1aXR5IHJ1bGVzIGNoZWNrZWQgTXlUZXN0NS48U3RyaW5nPmJhcihNeVRlc3Q1Ojpmb28pOworICAgIH0KK30KKworcHVibGljIGNsYXNzIE15VGVzdDYgeworICAgIGludGVyZmFjZSBJIHsKKyAgICAgICB2b2lkIF8oSW50ZWdlciBpKTsKKyAgICB9CisKKyAgICBzdGF0aWMgdm9pZCBmb28oTnVtYmVyIGkpIHt9CisgICAgc3RhdGljIHZvaWQgZm9vKEludGVnZXIgaSwgU3RyaW5nIHMpIHt9CisgICAgc3RhdGljIHZvaWQgZm9vKEludGVnZXIgZCkge30KKworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKKyAgICAgICAgSSBzID0gTXlUZXN0Njo6Zm9vOworICAgICAgICBzLl8oMSk7CisgICAgfQorfQorCitwdWJsaWMgY2xhc3MgTXlUZXN0NyB7CisgICAgaW50ZXJmYWNlIEkgeworICAgICAgIHZvaWQgXyhOdW1iZXIgaSk7CisgICAgfQorCisgICAgc3RhdGljIHZvaWQgZm9vKE51bWJlciBpKSB7fQorICAgIHN0YXRpYyB2b2lkIGZvbyhJbnRlZ2VyIGksIFN0cmluZyBzKSB7fQorICAgIHN0YXRpYyB2b2lkIGZvbyhJbnRlZ2VyIGQpIHt9CisKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CisgICAgICAgIEkgcyA9IE15VGVzdDc6OmZvbzsKKyAgICAgICAgcy5fKDEpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvbGFtYmRhL21ldGhvZFJlZi9Bc3NpZ25hYmlsaXR5LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2xhbWJkYS9tZXRob2RSZWYvQXNzaWduYWJpbGl0eS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZiOGQxZmIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2xhbWJkYS9tZXRob2RSZWYvQXNzaWduYWJpbGl0eS5qYXZhCkBAIC0wLDAgKzEsNDIgQEAKK2NsYXNzIFRlc3QgeworICB7CisgICAgICA8ZXJyb3IgZGVzY3I9IkluY29tcGF0aWJsZSB0eXBlcy4gRm91bmQ6ICc8bWV0aG9kIHJlZmVyZW5jZT4nLCByZXF1aXJlZDogJ2phdmEubGFuZy5SdW5uYWJsZSciPlJ1bm5hYmxlIGIgPSBUZXN0IDo6IGxlbmd0aDs8L2Vycm9yPgorICAgICAgQ29tcGFyYWJsZTxTdHJpbmc+IGMgPSBUZXN0IDo6IGxlbmd0aDsKKyAgICAgIDxlcnJvciBkZXNjcj0iSW5jb21wYXRpYmxlIHR5cGVzLiBGb3VuZDogJzxtZXRob2QgcmVmZXJlbmNlPicsIHJlcXVpcmVkOiAnamF2YS5sYW5nLkNvbXBhcmFibGU8amF2YS5sYW5nLkludGVnZXI+JyI+Q29tcGFyYWJsZTxJbnRlZ2VyPiBjMSA9ICBUZXN0IDo6IGxlbmd0aDs8L2Vycm9yPgorICB9CisKKyAgcHVibGljIHN0YXRpYyBJbnRlZ2VyIGxlbmd0aChTdHJpbmcgcykgeworICAgIHJldHVybiBzLmxlbmd0aCgpOworICB9CisKKyAgaW50ZXJmYWNlIEJhciB7CisgICAgSW50ZWdlciBfKFN0cmluZyBzKTsKKyAgfQorfQorCitjbGFzcyBUZXN0MSB7CisgICAgeworICAgICAgICA8ZXJyb3IgZGVzY3I9IkluY29tcGF0aWJsZSB0eXBlcy4gRm91bmQ6ICc8bWV0aG9kIHJlZmVyZW5jZT4nLCByZXF1aXJlZDogJ2phdmEubGFuZy5SdW5uYWJsZSciPlJ1bm5hYmxlIGIgPSBUZXN0MSA6OiBsZW5ndGg7PC9lcnJvcj4KKyAgICAgICAgQ29tcGFyYWJsZTxTdHJpbmc+IGMgPSBUZXN0MSA6OiBsZW5ndGg7CisgICAgICAgIENvbXBhcmFibGU8SW50ZWdlcj4gYzEgPSAgVGVzdDEgOjogbGVuZ3RoOworICAgIH0KKyAgCisgICAgcHVibGljIHN0YXRpYyBJbnRlZ2VyIGxlbmd0aChTdHJpbmcgcykgeworICAgICAgcmV0dXJuIHMubGVuZ3RoKCk7CisgICAgfQorCisgICAgcHVibGljIHN0YXRpYyBJbnRlZ2VyIGxlbmd0aChJbnRlZ2VyIHMpIHsKKyAgICAgIHJldHVybiBzOworICAgIH0KKyAgCisgICAgaW50ZXJmYWNlIEJhciB7CisgICAgICBJbnRlZ2VyIF8oU3RyaW5nIHMpOworICAgIH0KK30KKworY2xhc3MgVGVzdDIgeworCisgICAgdm9pZCBmb28oSW50ZWdlciBpKSB7fQorCisgICAgPGVycm9yIGRlc2NyPSJJbmNvbXBhdGlibGUgdHlwZXMuIEZvdW5kOiAnPG1ldGhvZCByZWZlcmVuY2U+JywgcmVxdWlyZWQ6ICdqYXZhLmxhbmcuT2JqZWN0JyI+T2JqZWN0IG8gPSBUZXN0Mjo6Zm9vOzwvZXJyb3I+Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9sYW1iZGEvbWV0aG9kUmVmL0Fzc2lnbmFiaWxpdHkxLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2xhbWJkYS9tZXRob2RSZWYvQXNzaWduYWJpbGl0eTEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NWE4MzA0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9sYW1iZGEvbWV0aG9kUmVmL0Fzc2lnbmFiaWxpdHkxLmphdmEKQEAgLTAsMCArMSwyMyBAQAorY2xhc3MgVGVzdCB7CisgIHZvaWQgZm9vKGJvb2xlYW4gZmxhZykgeworICAgIFJ1bm5hYmxlIHIgPSBudWxsOworICAgIFJ1bm5hYmxlIHgxID0gZmxhZyA/IFN5c3RlbS5vdXQ6OnByaW50bG4gOiBTeXN0ZW0ub3V0OjpwcmludGxuOworICAgIFJ1bm5hYmxlIHgyID0gZmxhZyA/IHIgOiBTeXN0ZW0ub3V0OjpwcmludGxuOworICAgIFJ1bm5hYmxlIHgzID0gZmxhZyA/IFN5c3RlbS5vdXQ6OnByaW50bG4gOiByOworICAgIFJ1bm5hYmxlIHg0ID0gZmxhZyA/IFN5c3RlbS5vdXQ6OnByaW50bG4gOiBuZXcgUnVubmFibGUoKSB7CisgICAgICBAT3ZlcnJpZGUKKyAgICAgIHB1YmxpYyB2b2lkIHJ1bigpIHsKKyAgICAgIH0KKyAgICB9OworICAgIFJ1bm5hYmxlIHg1ID0gZmxhZyA/IFN5c3RlbS5vdXQ6OnByaW50bG4gOiAoKSAtPiB7CisgICAgfTsKKyAgICBSdW5uYWJsZSB4NiA9IGZsYWcgPyAoKSAtPiB7fSA6IFN5c3RlbS5vdXQ6OnByaW50bG47CisgICAgUnVubmFibGUgeDcgPSBmbGFnID8gKCkgLT4ge30gOiAoKSAtPiB7fTsKKyAgICBSdW5uYWJsZSB4OCA9IGZsYWcgPyBuZXcgUnVubmFibGUoKSB7CisgICAgICBAT3ZlcnJpZGUKKyAgICAgIHB1YmxpYyB2b2lkIHJ1bigpIHsKKyAgICAgIH0KKyAgICB9IDogKCkgLT4ge307CisgICAgUnVubmFibGUgeDkgPSBmbGFnID8gKCkgLT4ge30gOiByOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9sYW1iZGEvbWV0aG9kUmVmL0NvbnN0cnVjdG9yQXNzaWduYWJpbGl0eS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9sYW1iZGEvbWV0aG9kUmVmL0NvbnN0cnVjdG9yQXNzaWduYWJpbGl0eS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJjZTA2NjEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2xhbWJkYS9tZXRob2RSZWYvQ29uc3RydWN0b3JBc3NpZ25hYmlsaXR5LmphdmEKQEAgLTAsMCArMSw0NCBAQAorY2xhc3MgRm9vPFI+IHsKKyAgICBwdWJsaWMgaW50ZXJmYWNlIEZhY3Rvcnk8VT4geworICAgICAgICBVIG1ha2UoKTsKKyAgICB9CisKKyAgICBpbnRlcmZhY2UgQVNpbms8UiwgSyBleHRlbmRzIEFTaW5rPFIsIEs+PiB7CisgICAgICAgIHB1YmxpYyB2b2lkIGNvbWJpbmUoSyBvdGhlcik7CisgICAgfQorCisgICAgc3RhdGljIDxSLCBTIGV4dGVuZHMgQVNpbms8UiwgUz4+IFIgcmVkdWNlKEZhY3Rvcnk8Uz4gZmFjdG9yeSkgeworICAgICAgICByZXR1cm4gbnVsbDsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBmb28oKSB7CisgICAgICAgIHJlZHVjZShNb286Om5ldyk7CisgICAgICAgIHJlZHVjZTxlcnJvciBkZXNjcj0iJ3JlZHVjZShGb28uRmFjdG9yeTxGb28uQVNpbms+KScgaW4gJ0ZvbycgY2Fubm90IGJlIGFwcGxpZWQgdG8gJyg8bWV0aG9kIHJlZmVyZW5jZT4pJyI+KEFNb286Om5ldyk8L2Vycm9yPjsKKyAgICAgICAgcmVkdWNlKEFBTW9vOjpuZXcpOworICAgICAgICByZWR1Y2UoQUFBTW9vOjpuZXcpOworICAgIH0KKworICAgIHByaXZhdGUgY2xhc3MgTW9vIGltcGxlbWVudHMgQVNpbms8UiwgTW9vPiB7CisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgdm9pZCBjb21iaW5lKE1vbyBvdGhlcikgeworICAgICAgICB9CisgICAgfQorCisgICAgcHJpdmF0ZSBjbGFzcyBBTW9vIHsKKyAgICB9CisKKyAgICBwcml2YXRlIGNsYXNzIEFBTW9vIGltcGxlbWVudHMgQVNpbms8QUFNb28sIEFBTW9vPiB7CisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgdm9pZCBjb21iaW5lKEFBTW9vIG90aGVyKSB7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwcml2YXRlIGNsYXNzIEFBQU1vbyBpbXBsZW1lbnRzIEFTaW5rPFIsIEFBQU1vbz4geworICAgICAgICBwcml2YXRlIEFBQU1vbygpIHsKKyAgICAgICAgfQorCisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgdm9pZCBjb21iaW5lKEFBQU1vbyBvdGhlcikgeworICAgICAgICB9CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvbGFtYmRhL21ldGhvZFJlZi9Db25zdHJ1Y3RvclJlZklubmVyRnJvbVN1cGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2xhbWJkYS9tZXRob2RSZWYvQ29uc3RydWN0b3JSZWZJbm5lckZyb21TdXBlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJmOWU4MTEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2xhbWJkYS9tZXRob2RSZWYvQ29uc3RydWN0b3JSZWZJbm5lckZyb21TdXBlci5qYXZhCkBAIC0wLDAgKzEsMTkgQEAKK2NsYXNzIE15VGVzdCB7CisKKyAgICBzdGF0aWMgY2xhc3MgU3VwZXIgeworICAgICAgICBjbGFzcyBJbm5lciB7CisgICAgICAgICAgICBJbm5lcihpbnQgaSl7fQorICAgICAgICB9CisgICAgfQorCisgICAgc3RhdGljIGNsYXNzIENoaWxkIGV4dGVuZHMgU3VwZXIgeworCisgICAgICAgIGludGVyZmFjZSBJIHsgCisgICAgICAgICAgSW5uZXIgbShDaGlsZCBjaGlsZCwgaW50IGkpOyAKKyAgICAgICAgfQorCisgICAgICAgIHZvaWQgdGVzdCgpIHsKKyAgICAgICAgICAgIEkgdmFyID0gQ2hpbGQuSW5uZXI6Om5ldzsKKyAgICAgICAgfQorICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvbGFtYmRhL21ldGhvZFJlZi9Db25zdHJ1Y3RvclJlZnMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvbGFtYmRhL21ldGhvZFJlZi9Db25zdHJ1Y3RvclJlZnMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jOWNiNTNhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9sYW1iZGEvbWV0aG9kUmVmL0NvbnN0cnVjdG9yUmVmcy5qYXZhCkBAIC0wLDAgKzEsMTA0IEBACitjbGFzcyBNeVRlc3QgeworICAgIE15VGVzdCgpIHsKKyAgICB9CisKKyAgICBpbnRlcmZhY2UgSSB7CisgICAgICAgIE15VGVzdCBtKCk7CisgICAgfQorCisgICAgc3RhdGljIHZvaWQgdGVzdChJIHMpIHsKKyAgICAgICAgcy5tKCk7CisgICAgfQorCisgICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgeworICAgICAgICBJIHMgPSBNeVRlc3Q6Om5ldzsKKyAgICAgICAgcy5tKCk7CisgICAgICAgIHRlc3QoTXlUZXN0OjpuZXcpOworICAgIH0KK30KKworY2xhc3MgTXlUZXN0MSB7CisKKyAgICBNeVRlc3QxKE9iamVjdCBvKSB7CisgICAgfQorCisgICAgTXlUZXN0MShOdW1iZXIgbikgeworICAgIH0KKworICAgIGludGVyZmFjZSBJIHsKKyAgICAgICAgTXlUZXN0MSBtKE9iamVjdCBvKTsKKyAgICB9CisKKyAgICBzdGF0aWMgdm9pZCB0ZXN0KEkgcywgT2JqZWN0IGFyZykgeworICAgICAgICBzLm0oYXJnKTsKKyAgICB9CisKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CisgICAgICAgIEkgcyA9IE15VGVzdDE6Om5ldzsKKyAgICAgICAgcy5tKCIiKTsKKyAgICAgICAgdGVzdChNeVRlc3QxOjpuZXcsICIiKTsKKyAgICB9Cit9CisKK2NsYXNzIE15VGVzdDI8WD4geworICAgIE15VGVzdDIoWCB4KSB7CisgICAgfQorCisgICAgaW50ZXJmYWNlIEk8Wj4geworICAgICAgICBNeVRlc3QyPFo+IG0oWiB6KTsKKyAgICB9CisKKyAgICBzdGF0aWMgPFk+IHZvaWQgdGVzdChJPFk+IHMsIFkgYXJnKSB7CisgICAgICAgIHMubShhcmcpOworICAgIH0KKworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKKyAgICAgICAgSTxTdHJpbmc+IHMgPSBNeVRlc3QyPFN0cmluZz46Om5ldzsKKyAgICAgICAgcy5tKCIiKTsKKyAgICAgICAgdGVzdChNeVRlc3QyPFN0cmluZz46Om5ldywgIiIpOworICAgIH0KK30KKworY2xhc3MgTXlUZXN0MzxYPiB7CisKKyAgICBNeVRlc3QzKFggeCkgeyB9CisKKyAgICBpbnRlcmZhY2UgSTxaPiB7CisgICAgICAgIE15VGVzdDM8Wj4gbShaIHopOworICAgIH0KKworICAgIHN0YXRpYyB2b2lkIHRlc3QoSTxJbnRlZ2VyPiBzKSB7ICAgfQorCisgICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgeworICAgICAgICA8ZXJyb3IgZGVzY3I9IkluY29tcGF0aWJsZSB0eXBlcy4gRm91bmQ6ICc8bWV0aG9kIHJlZmVyZW5jZT4nLCByZXF1aXJlZDogJ015VGVzdDMuSTxqYXZhLmxhbmcuSW50ZWdlcj4nIj5JPEludGVnZXI+IHMgPSBNeVRlc3QzPFN0cmluZz46Om5ldzs8L2Vycm9yPgorICAgICAgICB0ZXN0PGVycm9yIGRlc2NyPSIndGVzdChNeVRlc3QzLkk8amF2YS5sYW5nLkludGVnZXI+KScgaW4gJ015VGVzdDMnIGNhbm5vdCBiZSBhcHBsaWVkIHRvICcoPG1ldGhvZCByZWZlcmVuY2U+KSciPihNeVRlc3QzPFN0cmluZz46Om5ldyk8L2Vycm9yPjsKKyAgICB9Cit9CisKK2NsYXNzIE15VGVzdEludmFsaWRRIHsKKyAgY2xhc3MgU3VwZXIge30KKyAgCisgIGNsYXNzIENvbnN0cnVjdG9yUmVmcyBleHRlbmRzIFN1cGVyIHsKKyAgICAgIHZvaWQgdGVzdCgpIHsKKyAgICAgICAgICBDb25zdHJ1Y3RvclJlZnMgcmVmcyA9IG5ldyBDb25zdHJ1Y3RvclJlZnMoKTsKKyAgICAgICAgICBCbGFoQmxhaCBiMCA9IDxlcnJvciBkZXNjcj0iQ2Fubm90IGZpbmQgY2xhc3MgcmVmcyI+cmVmczwvZXJyb3I+OjpuZXc7CisgICAgICAgICAgQmxhaEJsYWggYmxhaEJsYWggPSA8ZXJyb3IgZGVzY3I9IkNhbm5vdCBmaW5kIGNsYXNzIHRoaXMiPnRoaXM8L2Vycm9yPjo6bmV3OworICAgICAgICAgIEJsYWhCbGFoMSBibGFoQmxhaDEgPSA8ZXJyb3IgZGVzY3I9IkNhbm5vdCBmaW5kIGNsYXNzIHN1cGVyIj5zdXBlcjwvZXJyb3I+OjpuZXc7CisgICAgICB9CisgIH0KKyAgCisgIGludGVyZmFjZSBCbGFoQmxhaCB7CisgICAgICBDb25zdHJ1Y3RvclJlZnMgZm9vKCk7CisgIH0KKworICBpbnRlcmZhY2UgQmxhaEJsYWgxIHsKKyAgICAgIFN1cGVyIGZvbygpOworICB9CisKKyAgYWJzdHJhY3Qgc3RhdGljIGNsYXNzIEEgeworICAgIGludGVyZmFjZSBJIHsKKyAgICAgIEEgZm9vKCk7CisgICAgfQorICAgIDxlcnJvciBkZXNjcj0iSW5jb21wYXRpYmxlIHR5cGVzLiBGb3VuZDogJzxtZXRob2QgcmVmZXJlbmNlPicsIHJlcXVpcmVkOiAnTXlUZXN0SW52YWxpZFEuQS5JJyI+SSBpID0gQSA6OiBuZXc7PC9lcnJvcj4KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvbGFtYmRhL21ldGhvZFJlZi9Db25zdHJ1Y3RvclJlZnNJbm5lckNsYXNzZXMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvbGFtYmRhL21ldGhvZFJlZi9Db25zdHJ1Y3RvclJlZnNJbm5lckNsYXNzZXMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZWQ0NjQyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9sYW1iZGEvbWV0aG9kUmVmL0NvbnN0cnVjdG9yUmVmc0lubmVyQ2xhc3Nlcy5qYXZhCkBAIC0wLDAgKzEsMTUxIEBACitjbGFzcyBOb25TdGF0aWNJbm5lciB7CisgIGNsYXNzIElubmVyIHsKKyAgICBJbm5lcihOb25TdGF0aWNJbm5lciBvdXRlcikge30KKyAgICBJbm5lcigpIHt9CisgIH0KKworICBpbnRlcmZhY2UgSTEgeworICAgIElubmVyIG0oTm9uU3RhdGljSW5uZXIgcmVjKTsKKyAgfQorCisgIGludGVyZmFjZSBJMiB7CisgICAgSW5uZXIgbSgpOworICB9CisKKyAgc3RhdGljIHZvaWQgY2FsbDExKEkxIHMpIHt9CisgIHN0YXRpYyB2b2lkIGNhbGwxMihJMiBzKSB7fQorCisgIHN0YXRpYyB7CisgICAgSTEgaTEgPSBOb25TdGF0aWNJbm5lci5Jbm5lciA6OiBuZXc7CisgICAgY2FsbDExKE5vblN0YXRpY0lubmVyLklubmVyIDo6IG5ldyk7CisKKyAgICA8ZXJyb3IgZGVzY3I9IkluY29tcGF0aWJsZSB0eXBlcy4gRm91bmQ6ICc8bWV0aG9kIHJlZmVyZW5jZT4nLCByZXF1aXJlZDogJ05vblN0YXRpY0lubmVyLkkyJyI+STIgaTIgPSBOb25TdGF0aWNJbm5lci5Jbm5lciA6OiBuZXc7PC9lcnJvcj4KKyAgICBjYWxsMTI8ZXJyb3IgZGVzY3I9IidjYWxsMTIoTm9uU3RhdGljSW5uZXIuSTIpJyBpbiAnTm9uU3RhdGljSW5uZXInIGNhbm5vdCBiZSBhcHBsaWVkIHRvICcoPG1ldGhvZCByZWZlcmVuY2U+KSciPihOb25TdGF0aWNJbm5lci5Jbm5lciA6OiBuZXcpPC9lcnJvcj47CisgIH0KK30KKworY2xhc3MgU3RhdGljSW5uZXIgeworCisgIHN0YXRpYyBjbGFzcyBJbm5lciB7CisgICAgSW5uZXIoU3RhdGljSW5uZXIgb3V0ZXIpIHt9CisgICAgSW5uZXIoKSB7fQorICB9CisKKworICBpbnRlcmZhY2UgSTEgeworICAgIElubmVyIG0oU3RhdGljSW5uZXIgcmVjKTsKKyAgfQorCisgIGludGVyZmFjZSBJMiB7CisgICAgSW5uZXIgbSgpOworICB9CisKKyAgc3RhdGljIHZvaWQgY2FsbDIxKEkxIHMpIHt9CisgIHN0YXRpYyB2b2lkIGNhbGwyMihJMiBzKSB7fQorCisKKyAgc3RhdGljIHsKKyAgICAgIEkxIGkxID0gU3RhdGljSW5uZXIuSW5uZXIgOjogbmV3OworICAgICAgY2FsbDIxKFN0YXRpY0lubmVyLklubmVyIDo6IG5ldyk7CisKKyAgICAgIEkyIGkyID0gU3RhdGljSW5uZXIuSW5uZXIgOjogbmV3OworICAgICAgY2FsbDIyKFN0YXRpY0lubmVyLklubmVyIDo6IG5ldyk7CisgIH0KK30KKworY2xhc3MgU3RhdGljSW5uZXIxIHsKKyAgICBzdGF0aWMgY2xhc3MgSW5uZXIgeworICAgICAgSW5uZXIoU3RhdGljSW5uZXIxIG91dGVyKSB7fQorICAgICAgSW5uZXIoKSB7fQorICAgIH0KKworICAgIGludGVyZmFjZSBJMSB7CisgICAgICBJbm5lciBfKFN0YXRpY0lubmVyMSByZWMpOworICAgIH0KKworICAgIGludGVyZmFjZSBJMiB7CisgICAgICBJbm5lciBfKCk7CisgICAgfQorCisgICAgc3RhdGljIHZvaWQgY2FsbDMoSTEgcykge30KKyAgICBzdGF0aWMgdm9pZCBjYWxsMyhJMiBzKSB7fQorCisgICAgc3RhdGljIHsKKyAgICAgIGNhbGwzPGVycm9yIGRlc2NyPSJBbWJpZ3VvdXMgbWV0aG9kIGNhbGw6IGJvdGggJ1N0YXRpY0lubmVyMS5jYWxsMyhJMSknIGFuZCAnU3RhdGljSW5uZXIxLmNhbGwzKEkyKScgbWF0Y2giPihTdGF0aWNJbm5lcjEuSW5uZXIgOjogbmV3KTwvZXJyb3I+OworICAgIH0KK30KKworY2xhc3MgU3RhdGljSW5uZXIyIHsKKworICBzdGF0aWMgY2xhc3MgSW5uZXIgeworICAgIElubmVyKCkge30KKyAgfQorCisKKyAgaW50ZXJmYWNlIEkxIHsKKyAgICBJbm5lciBtKFN0YXRpY0lubmVyMiByZWMpOworICB9CisKKworICBzdGF0aWMgeworICAgICA8ZXJyb3IgZGVzY3I9IkluY29tcGF0aWJsZSB0eXBlcy4gRm91bmQ6ICc8bWV0aG9kIHJlZmVyZW5jZT4nLCByZXF1aXJlZDogJ1N0YXRpY0lubmVyMi5JMSciPkkxIGkxID0gU3RhdGljSW5uZXIyLklubmVyIDo6IG5ldzs8L2Vycm9yPgorICB9CisKKyAgeworICAgICA8ZXJyb3IgZGVzY3I9IkluY29tcGF0aWJsZSB0eXBlcy4gRm91bmQ6ICc8bWV0aG9kIHJlZmVyZW5jZT4nLCByZXF1aXJlZDogJ1N0YXRpY0lubmVyMi5JMSciPkkxIGkxID0gU3RhdGljSW5uZXIyLklubmVyIDo6IG5ldzs8L2Vycm9yPgorICB9Cit9CisKK2NsYXNzIE5vblN0YXRpY0lubmVyMiB7CisKKyAgY2xhc3MgSW5uZXIgeworICAgIElubmVyKCkge30KKyAgfQorCisKKyAgaW50ZXJmYWNlIEkxIHsKKyAgICBJbm5lciBtKE5vblN0YXRpY0lubmVyMiByZWMpOworICB9CisKKworICBzdGF0aWMgeworICAgICBJMSBpMSA9IE5vblN0YXRpY0lubmVyMi5Jbm5lciA6OiBuZXc7CisgIH0KKworICB7CisgICAgIEkxIGkxID0gTm9uU3RhdGljSW5uZXIyLklubmVyIDo6IG5ldzsKKyAgfQorfQorCitjbGFzcyBOb25TdGF0aWNJbm5lcjMgeworICAgIGNsYXNzIEZvbyB7CisgICAgICAgIEZvbyhJbnRlZ2VyIGkpIHt9CisgICAgICAgIEZvbygpIHt9CisgICAgfQorCisgICAgaW50ZXJmYWNlIEkxPFg+IHsKKyAgICAgICAgWCBtKGludCBpKTsKKyAgICB9CisKKyAgICBpbnRlcmZhY2UgSTI8WD4geworICAgICAgICBYIG0oKTsKKyAgICB9CisgICAgCisgICAgaW50ZXJmYWNlIEkzPFg+IHsKKyAgICAgICAgWCBtKE5vblN0YXRpY0lubmVyMyByZWMsIGludCBpKTsKKyAgICB9CisKKyAgICBpbnRlcmZhY2UgSTQ8WD4geworICAgICAgICBYIG0oTm9uU3RhdGljSW5uZXIzIHJlYyk7CisgICAgfQorCisgICAgeworICAgICAgICBJMTxGb28+IGIxID0gRm9vOjpuZXc7CisgICAgICAgIEkyPEZvbz4gYjIgPSBGb286Om5ldzsKKyAgICB9CisKKyAgICB7CisgICAgICAgIEkzPEZvbz4gYjEgPSBGb286Om5ldzsKKyAgICAgICAgSTQ8Rm9vPiBiMiA9IEZvbzo6bmV3OworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvbGFtYmRhL21ldGhvZFJlZi9Db25zdHJ1Y3RvcldpdGhvdXRQYXJhbXMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvbGFtYmRhL21ldGhvZFJlZi9Db25zdHJ1Y3RvcldpdGhvdXRQYXJhbXMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMDQ0OGE4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9sYW1iZGEvbWV0aG9kUmVmL0NvbnN0cnVjdG9yV2l0aG91dFBhcmFtcy5qYXZhCkBAIC0wLDAgKzEsMzEgQEAKK2ltcG9ydCBqYXZhLnV0aWwuKjsKKworaW50ZXJmYWNlIEZhY3Rvcnk8VD4geworICAgIFQgY3JlYXRlKCk7Cit9CisKK2NsYXNzIExhbWJkYVRlc3QgeworCisgICAgcHVibGljIHZvaWQgdGVzdFIoKSB7CisgICAgICAgIE1hcDxTdHJpbmcsIE1hcDxTdHJpbmcsIENvdW50ZXI+PiBtYXAgPQorICAgICAgICAgICAgICAgIG5ldyBDb21wdXRlTWFwPFN0cmluZywgTWFwPFN0cmluZywgQ291bnRlcj4+KCgpIC0+CisgICAgICAgICAgICAgICAgICAgICAgICBuZXcgQ29tcHV0ZU1hcDw+KENvdW50ZXI6Om5ldykpOworCisgICAgfQorCisgICAgcHVibGljIHN0YXRpYyBjbGFzcyBDb21wdXRlTWFwPEssIFY+IGV4dGVuZHMgSGFzaE1hcDxLLCBWPiB7CisgICAgICAgIHB1YmxpYyBDb21wdXRlTWFwKEZhY3Rvcnk8Vj4gZmFjdG9yeSkgeworICAgICAgICB9CisgICAgfQorCisgICAgcHVibGljIHN0YXRpYyBjbGFzcyBDb3VudGVyIHsKKworICAgICAgICBwdWJsaWMgQ291bnRlcigpIHsKKyAgICAgICAgICAgIHRoaXMoMCk7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgQ291bnRlcihpbnQgY291bnQpIHsKKyAgICAgICAgfQorICAgIH0KKworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvbGFtYmRhL21ldGhvZFJlZi9DeWNsaWNJbmZlcmVuY2UuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvbGFtYmRhL21ldGhvZFJlZi9DeWNsaWNJbmZlcmVuY2UuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NmQwMmJlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9sYW1iZGEvbWV0aG9kUmVmL0N5Y2xpY0luZmVyZW5jZS5qYXZhCkBAIC0wLDAgKzEsMzMgQEAKK2NsYXNzIE15VGVzdDxFPiB7CisgICBNeVRlc3QoRSBlKSB7CisgICB9CisKKyAgIGludGVyZmFjZSBJPFQ+IHsKKyAgICAgICBNeVRlc3Q8VD4gXyhUIHQpOworICAgfQorCisgICBzdGF0aWMgPFk+IHZvaWQgYmFyKFkgYXJnLCBJPFk+IGkpIHsKKyAgICAgICBpLl8oYXJnKTsKKyAgIH0KKworICAgc3RhdGljIDxZPiB2b2lkIGJhcihJPFk+IGksIFkgYXJnKSB7CisgICAgICAgaS5fKGFyZyk7CisgICB9CisKKyAgIHN0YXRpYyA8WT4gdm9pZCBiYXIoSTxZPiBpKSB7CisgICAgICAgaS5fKG51bGwpOworICAgfQorCisgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CisgICAgICAgSTxTdHJpbmc+IGkgPSBNeVRlc3Q6Om5ldzsKKworICAgICAgIGJhcigiIiwgTXlUZXN0PFN0cmluZz46Om5ldyk7CisgICAgICAgYmFyKCIiLCBNeVRlc3Q6Om5ldyk7CisKKyAgICAgICBiYXIoTXlUZXN0PFN0cmluZz46Om5ldywgIiIpOworICAgICAgIGJhcihNeVRlc3Q6Om5ldywgIiIpOworCisgICAgICAgYmFyKDxlcnJvciBkZXNjcj0iQ3ljbGljIGluZmVyZW5jZSI+TXlUZXN0OjpuZXc8L2Vycm9yPik7CisgICAgICAgYmFyKDxlcnJvciBkZXNjcj0iQ3ljbGljIGluZmVyZW5jZSI+TXlUZXN0PFN0cmluZz46Om5ldzwvZXJyb3I+KTsKKyAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvbGFtYmRhL21ldGhvZFJlZi9EZWZhdWx0Q29uc3RydWN0b3IuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvbGFtYmRhL21ldGhvZFJlZi9EZWZhdWx0Q29uc3RydWN0b3IuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMDk4YTM1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9sYW1iZGEvbWV0aG9kUmVmL0RlZmF1bHRDb25zdHJ1Y3Rvci5qYXZhCkBAIC0wLDAgKzEsMTA1IEBACitjbGFzcyBEZWZhdWx0Q29uc3RydWN0b3IgeworICAgIAorICAgIGludGVyZmFjZSBJMTxSPiB7CisgICAgICAgIFIgaW52b2tlKCk7CisgICAgfQorCisgICAgaW50ZXJmYWNlIEkyPFIsIEE+IHsKKyAgICAgICAgUiBpbnZva2UoQSBhKTsKKyAgICB9CisgICAgCisgICAgc3RhdGljIGNsYXNzIE91dGVyIHsKKyAgICAgICAgY2xhc3MgSW5uZXIgeworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBzdGF0aWMgdm9pZCB0ZXN0MSgpIHsKKyAgICAgICAgICAgIEkyPElubmVyLCBPdXRlcj4gaTIgPSBJbm5lciA6OiBuZXc7CisgICAgICAgICAgICA8ZXJyb3IgZGVzY3I9IkluY29tcGF0aWJsZSB0eXBlcy4gRm91bmQ6ICc8bWV0aG9kIHJlZmVyZW5jZT4nLCByZXF1aXJlZDogJ0RlZmF1bHRDb25zdHJ1Y3Rvci5JMjxEZWZhdWx0Q29uc3RydWN0b3IuT3V0ZXIuSW5uZXIsamF2YS5sYW5nLlN0cmluZz4nIj5JMjxJbm5lciwgU3RyaW5nPiBpMnN0ciA9IElubmVyIDo6IG5ldzs8L2Vycm9yPgorICAgICAgICB9CisgICAgICAgIAorICAgICAgICB2b2lkIHRlc3QyKCkgeworICAgICAgICAgICAgSTE8SW5uZXI+IGkxID0gSW5uZXIgOjogbmV3OworICAgICAgICAgICAgPGVycm9yIGRlc2NyPSJJbmNvbXBhdGlibGUgdHlwZXMuIEZvdW5kOiAnPG1ldGhvZCByZWZlcmVuY2U+JywgcmVxdWlyZWQ6ICdEZWZhdWx0Q29uc3RydWN0b3IuSTE8amF2YS5sYW5nLkludGVnZXI+JyI+STE8SW50ZWdlcj4gaTFJbnQgPSBJbm5lciA6OiBuZXc7PC9lcnJvcj4KKyAgICAgICAgICAgIEkyPElubmVyLCBPdXRlcj4gaTIgPSAgSW5uZXIgOjogbmV3OworICAgICAgICB9CisgICAgfQorICAgIAorICAgIHN0YXRpYyB2b2lkIHRlc3QxKCkgeworICAgICAgICBJMjxPdXRlci5Jbm5lciwgT3V0ZXI+IGkyID0gT3V0ZXIuSW5uZXI6Om5ldzsKKyAgICAgICAgPGVycm9yIGRlc2NyPSJJbmNvbXBhdGlibGUgdHlwZXMuIEZvdW5kOiAnPG1ldGhvZCByZWZlcmVuY2U+JywgcmVxdWlyZWQ6ICdEZWZhdWx0Q29uc3RydWN0b3IuSTI8RGVmYXVsdENvbnN0cnVjdG9yLk91dGVyLklubmVyLGphdmEubGFuZy5TdHJpbmc+JyI+STI8T3V0ZXIuSW5uZXIsIFN0cmluZz4gaTJzdHIgPSBPdXRlci5Jbm5lcjo6bmV3OzwvZXJyb3I+CisgICAgfQorICAgIAorICAgIHZvaWQgdGVzdDIoKSB7CisgICAgICAgIEkyPE91dGVyLklubmVyLCBPdXRlcj4gaTIgPSBPdXRlci5Jbm5lcjo6bmV3OworICAgICAgICA8ZXJyb3IgZGVzY3I9IkluY29tcGF0aWJsZSB0eXBlcy4gRm91bmQ6ICc8bWV0aG9kIHJlZmVyZW5jZT4nLCByZXF1aXJlZDogJ0RlZmF1bHRDb25zdHJ1Y3Rvci5JMjxEZWZhdWx0Q29uc3RydWN0b3IuT3V0ZXIuSW5uZXIsamF2YS5sYW5nLlN0cmluZz4nIj5JMjxPdXRlci5Jbm5lciwgU3RyaW5nPiBpMnN0ciA9IE91dGVyLklubmVyOjpuZXc7PC9lcnJvcj4KKyAgICB9Cit9CisKK2NsYXNzIERlZmF1bHRDb25zdHJ1Y3RvcjEgeworCisgICAgcHVibGljIHZvaWQgYmFyKCkgeworICAgIH0KKworICAgIHsKKyAgICAgICAgUnVubmFibGUgYjEgPSBEZWZhdWx0Q29uc3RydWN0b3IxIDo6IG5ldzsKKyAgICB9Cit9CisKK2NsYXNzIERlZmF1bHRDb25zdHJ1Y3RvcjIgeworICAgIGludGVyZmFjZSBJIHsKKyAgICAgICAgdm9pZCBmb28oRGVmYXVsdENvbnN0cnVjdG9yMiBlKTsKKyAgICB9CisKKworICAgIHZvaWQgZigpIHsKKyAgICAgICAgPGVycm9yIGRlc2NyPSJJbmNvbXBhdGlibGUgdHlwZXMuIEZvdW5kOiAnPG1ldGhvZCByZWZlcmVuY2U+JywgcmVxdWlyZWQ6ICdEZWZhdWx0Q29uc3RydWN0b3IyLkknIj5JIGkxID0gRGVmYXVsdENvbnN0cnVjdG9yMiA6OiBuZXc7PC9lcnJvcj4KKyAgICAgICAgSSBpMiA9IDxlcnJvciBkZXNjcj0iQ2Fubm90IGZpbmQgY2xhc3MgdGhpcyI+dGhpczwvZXJyb3I+OjpuZXc7CisgICAgfQorfQorCitjbGFzcyBEZWZhdWx0Q29uc3RydWN0b3IzIHsKKyAgIHB1YmxpYyBjbGFzcyBJbm5lciB7fQorICAgcHVibGljIHN0YXRpYyBjbGFzcyBTdGF0aWNJbm5lciB7fQorICAgCisgICBzdGF0aWMgPGVycm9yIGRlc2NyPSJJbmNvbXBhdGlibGUgdHlwZXMuIEZvdW5kOiAnPG1ldGhvZCByZWZlcmVuY2U+JywgcmVxdWlyZWQ6ICdEZWZhdWx0Q29uc3RydWN0b3IzLkknIj5JIGkgPSBJbm5lcjo6bmV3OzwvZXJyb3I+CisgICBzdGF0aWMgSTEgaTEgPSBTdGF0aWNJbm5lcjo6bmV3OworICAgaW50ZXJmYWNlIEkgeworICAgICBJbm5lciBmb28oKTsKKyAgIH0KKworICAgaW50ZXJmYWNlIEkxIHsKKyAgICAgU3RhdGljSW5uZXIgZm9vKCk7CisgICB9Cit9CisKK2NsYXNzIERlZmF1bHRDb25zdHJ1Y3RvcjQgeworICAgcHVibGljIGNsYXNzIElubmVyIHt9CisgICBwdWJsaWMgc3RhdGljIGNsYXNzIFN0YXRpY0lubmVyIHt9CisgICAKKyAgIHN0YXRpYyBJIGkgPSBJbm5lcjo6bmV3OworICAgc3RhdGljIDxlcnJvciBkZXNjcj0iSW5jb21wYXRpYmxlIHR5cGVzLiBGb3VuZDogJzxtZXRob2QgcmVmZXJlbmNlPicsIHJlcXVpcmVkOiAnRGVmYXVsdENvbnN0cnVjdG9yNC5JMSciPkkxIGkxID0gU3RhdGljSW5uZXI6Om5ldzs8L2Vycm9yPgorICAgaW50ZXJmYWNlIEkgeworICAgICBJbm5lciBmb28oRGVmYXVsdENvbnN0cnVjdG9yNCByZWNlaXZlcik7CisgICB9CisKKyAgIGludGVyZmFjZSBJMSB7CisgICAgIFN0YXRpY0lubmVyIGZvbyhEZWZhdWx0Q29uc3RydWN0b3I0IHJlY2VpdmVyKTsKKyAgIH0KK30KKworY2xhc3MgRGVmYXVsdENvbnN0cnVjdG9yNSB7CisgICAgcHVibGljIGNsYXNzIElubmVyIHt9CisKKyAgICBzdGF0aWMgdm9pZCB0ZXN0KCkgeworICAgICAgICA8ZXJyb3IgZGVzY3I9IkluY29tcGF0aWJsZSB0eXBlcy4gRm91bmQ6ICc8bWV0aG9kIHJlZmVyZW5jZT4nLCByZXF1aXJlZDogJ0RlZmF1bHRDb25zdHJ1Y3RvcjUuSSciPkkgaSA9IElubmVyOjpuZXc7PC9lcnJvcj4KKyAgICB9CisKKyAgICB2b2lkIHRlc3QxKCkgeworICAgICAgICBJIGkgPSBJbm5lcjo6bmV3OworICAgIH0KKworICAgIGludGVyZmFjZSBJIHsKKyAgICAgICAgRGVmYXVsdENvbnN0cnVjdG9yNS5Jbm5lciBmb28oKTsKKyAgICB9CisKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvbGFtYmRhL21ldGhvZFJlZi9JbmZlcmVuY2VGcm9tTWV0aG9kUmVmZXJlbmNlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2xhbWJkYS9tZXRob2RSZWYvSW5mZXJlbmNlRnJvbU1ldGhvZFJlZmVyZW5jZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI0MmNkNzQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2xhbWJkYS9tZXRob2RSZWYvSW5mZXJlbmNlRnJvbU1ldGhvZFJlZmVyZW5jZS5qYXZhCkBAIC0wLDAgKzEsMjEgQEAKK2NsYXNzIFRlc3QgeworICAgIHN0YXRpYyA8VT4gSXRlcmFibGU8VT4gbWFwKE1hcHBlcjw/IHN1cGVyIFN0cmluZywgPyBleHRlbmRzIFU+IG1hcHBlcikgeworICAgICAgICByZXR1cm4gbnVsbDsKKyAgICB9CisKKyAgICBzdGF0aWMgdm9pZCB0ZXN0KCkgeworICAgICAgICBJbnRlZ2VyIG5leHQgPSBtYXAoU3RyaW5nOjpsZW5ndGgpLml0ZXJhdG9yKCkubmV4dCgpOworICAgICAgICBJbnRlZ2VyIG5leHQxID0gbWFwKFRlc3Q6Omxlbmd0aCkuaXRlcmF0b3IoKS5uZXh0KCk7CisgICAgfQorCisgICAgcHVibGljIHN0YXRpYyA8VD4gVCBsZW5ndGgoVCBzKSB7CisgICAgICByZXR1cm4gbnVsbDsKKyAgICB9CisKKyAgICBwdWJsaWMgc3RhdGljIDxUPiBpbnQgbGVuZ3RoKFN0cmluZyBzKSB7CisgICAgICByZXR1cm4gMDsKKyAgICB9Cit9CitpbnRlcmZhY2UgTWFwcGVyPFQsIFU+IHsKKyAgICBVIG1hcChUIHQpOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvbGFtYmRhL21ldGhvZFJlZi9JbmZlcmVuY2VGcm9tUmV0dXJuVHlwZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9sYW1iZGEvbWV0aG9kUmVmL0luZmVyZW5jZUZyb21SZXR1cm5UeXBlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDE1OGI3NAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvbGFtYmRhL21ldGhvZFJlZi9JbmZlcmVuY2VGcm9tUmV0dXJuVHlwZS5qYXZhCkBAIC0wLDAgKzEsODMgQEAKK2NsYXNzIE15VGVzdERlZmF1bHRDb25zdHJ1Y3RvciB7CisgICBzdGF0aWMgY2xhc3MgU3VwZXJGb288PHdhcm5pbmcgZGVzY3I9IlR5cGUgcGFyYW1ldGVyICdYJyBpcyBuZXZlciB1c2VkIj5YPC93YXJuaW5nPj4geyB9CisKKyAgIHN0YXRpYyBjbGFzcyBGb288WCBleHRlbmRzIE51bWJlcj4gZXh0ZW5kcyBTdXBlckZvbzxYPiB7CisgICB9CisgICAKKyAgIGludGVyZmFjZSBJMSB7CisgICAgICAgU3VwZXJGb288U3RyaW5nPiBfKCk7CisgICB9CisKKyAgIGludGVyZmFjZSBJMiB7CisgICAgICAgU3VwZXJGb288SW50ZWdlcj4gXygpOworICAgfQorICAgCisgICBpbnRlcmZhY2UgSTMgeworICAgICAgIFN1cGVyRm9vPE9iamVjdD4gXygpOworICAgfQorICAgCisgICBwcml2YXRlIHN0YXRpYyB2b2lkIDx3YXJuaW5nIGRlc2NyPSJQcml2YXRlIG1ldGhvZCAnZm9vKE15VGVzdERlZmF1bHRDb25zdHJ1Y3Rvci5JMSknIGlzIG5ldmVyIHVzZWQiPmZvbzwvd2FybmluZz4oSTEgaSkge1N5c3RlbS5vdXQucHJpbnRsbihpKTt9CisgICBwcml2YXRlIHN0YXRpYyB2b2lkIGZvbyhJMiBpKSB7U3lzdGVtLm91dC5wcmludGxuKGkpO30KKyAgIHByaXZhdGUgc3RhdGljIHZvaWQgPHdhcm5pbmcgZGVzY3I9IlByaXZhdGUgbWV0aG9kICdmb28oTXlUZXN0RGVmYXVsdENvbnN0cnVjdG9yLkkzKScgaXMgbmV2ZXIgdXNlZCI+Zm9vPC93YXJuaW5nPihJMyBpKSB7U3lzdGVtLm91dC5wcmludGxuKGkpO30KKworICAgc3RhdGljIHsKKyAgICAgICBmb28oRm9vOjpuZXcpOworICAgfQorfQorCitjbGFzcyBNeVRlc3RDb25zdHJ1Y3RvciB7CisgICBzdGF0aWMgY2xhc3MgU3VwZXJGb288PHdhcm5pbmcgZGVzY3I9IlR5cGUgcGFyYW1ldGVyICdYJyBpcyBuZXZlciB1c2VkIj5YPC93YXJuaW5nPj4geyB9CisKKyAgIHN0YXRpYyBjbGFzcyBGb288WCBleHRlbmRzIE51bWJlcj4gZXh0ZW5kcyBTdXBlckZvbzxYPiB7CisgICAgIEZvbygpe30KKyAgIH0KKyAgIAorICAgaW50ZXJmYWNlIEkxIHsKKyAgICAgICBTdXBlckZvbzxTdHJpbmc+IF8oKTsKKyAgIH0KKworICAgaW50ZXJmYWNlIEkyIHsKKyAgICAgICBTdXBlckZvbzxJbnRlZ2VyPiBfKCk7CisgICB9CisgICAKKyAgIGludGVyZmFjZSBJMyB7CisgICAgICAgU3VwZXJGb288T2JqZWN0PiBfKCk7CisgICB9CisgICAKKyAgIHByaXZhdGUgc3RhdGljIHZvaWQgPHdhcm5pbmcgZGVzY3I9IlByaXZhdGUgbWV0aG9kICdmb28oTXlUZXN0Q29uc3RydWN0b3IuSTEpJyBpcyBuZXZlciB1c2VkIj5mb288L3dhcm5pbmc+KEkxIGkpIHtTeXN0ZW0ub3V0LnByaW50bG4oaSk7fQorICAgcHJpdmF0ZSBzdGF0aWMgdm9pZCBmb28oSTIgaSkge1N5c3RlbS5vdXQucHJpbnRsbihpKTt9CisgICBwcml2YXRlIHN0YXRpYyB2b2lkIDx3YXJuaW5nIGRlc2NyPSJQcml2YXRlIG1ldGhvZCAnZm9vKE15VGVzdENvbnN0cnVjdG9yLkkzKScgaXMgbmV2ZXIgdXNlZCI+Zm9vPC93YXJuaW5nPihJMyBpKSB7U3lzdGVtLm91dC5wcmludGxuKGkpO30KKworICAgc3RhdGljIHsKKyAgICAgICBmb28oRm9vOjpuZXcpOworICAgfQorfQorCitjbGFzcyBNeVRlc3RNZXRob2QgeworICAgIHN0YXRpYyBjbGFzcyBTdXBlckZvbzw8d2FybmluZyBkZXNjcj0iVHlwZSBwYXJhbWV0ZXIgJ1gnIGlzIG5ldmVyIHVzZWQiPlg8L3dhcm5pbmc+PiB7IH0KKworICAgIHN0YXRpYyBjbGFzcyBGb288WCBleHRlbmRzIE51bWJlcj4gZXh0ZW5kcyBTdXBlckZvbzxYPiB7CisgICAgfQorICAgIAorICAgIGludGVyZmFjZSBJMSB7CisgICAgICAgIFN1cGVyRm9vPFN0cmluZz4gXygpOworICAgIH0KKworICAgIGludGVyZmFjZSBJMiB7CisgICAgICAgIFN1cGVyRm9vPEludGVnZXI+IF8oKTsKKyAgICB9CisgICAgCisgICAgaW50ZXJmYWNlIEkzIHsKKyAgICAgICAgU3VwZXJGb288T2JqZWN0PiBfKCk7CisgICAgfQorICAgIAorICAgIHN0YXRpYyA8WCBleHRlbmRzIE51bWJlcj4gRm9vPFg+IG0oKSB7IHJldHVybiBudWxsOyB9CisgICAgCisgICAgcHJpdmF0ZSBzdGF0aWMgdm9pZCA8d2FybmluZyBkZXNjcj0iUHJpdmF0ZSBtZXRob2QgJ2ZvbyhNeVRlc3RNZXRob2QuSTEpJyBpcyBuZXZlciB1c2VkIj5mb288L3dhcm5pbmc+KEkxIGkpIHtTeXN0ZW0ub3V0LnByaW50bG4oaSk7fQorICAgIHByaXZhdGUgc3RhdGljIHZvaWQgZm9vKEkyIGkpIHtTeXN0ZW0ub3V0LnByaW50bG4oaSk7fQorICAgIHByaXZhdGUgc3RhdGljIHZvaWQgPHdhcm5pbmcgZGVzY3I9IlByaXZhdGUgbWV0aG9kICdmb28oTXlUZXN0TWV0aG9kLkkzKScgaXMgbmV2ZXIgdXNlZCI+Zm9vPC93YXJuaW5nPihJMyBpKSB7U3lzdGVtLm91dC5wcmludGxuKGkpO30KKworICAgIHN0YXRpYyB7CisgICAgICAgZm9vKE15VGVzdE1ldGhvZDo6bSk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9sYW1iZGEvbWV0aG9kUmVmL01ldGhvZFJlZk1pc2MuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvbGFtYmRhL21ldGhvZFJlZi9NZXRob2RSZWZNaXNjLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzMxODhmMgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvbGFtYmRhL21ldGhvZFJlZi9NZXRob2RSZWZNaXNjLmphdmEKQEAgLTAsMCArMSw1NiBAQAorY2xhc3MgTXlUZXN0IHsKKworICAgIGludGVyZmFjZSBJIHsKKyAgICAgICAgdm9pZCBtMShpbnQgaSk7CisgICAgfQorCisgICAgc3RhdGljIGNsYXNzIEEgeworICAgICAgICB2b2lkIG0oaW50IGkpIHt9CisgICAgfQorCisgICAgc3RhdGljIGNsYXNzIEIgZXh0ZW5kcyBBIHsKKyAgICAgICAgdm9pZCBtKGludCBpKSB7CisgICAgICAgICAgICBJIG1oID0gc3VwZXI6Om07CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CisgICAgICAgIG5ldyBCKCkubSgxMCk7CisgICAgfQorfQorCitjbGFzcyBNeVRlc3RXaXRoQm94aW5nIHsKKyAgICBpbnRlcmZhY2UgSSB7CisgICAgICAgIHZvaWQgbTEoSW50ZWdlciBpKTsKKyAgICB9CisKKyAgICBzdGF0aWMgY2xhc3MgQSB7CisgICAgICAgIHZvaWQgbShpbnQgaSkge30KKyAgICB9CisKKyAgICBzdGF0aWMgY2xhc3MgQiBleHRlbmRzIEEgeworICAgICAgICB7CisgICAgICAgICAgICBJIHMgPSBzdXBlcjo6bTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgdm9pZCBtKGludCBpKSB7CisgICAgICAgICAgc3VwZXIubShpKTsKKyAgICAgICAgfQorICAgIH0KK30KKworY2xhc3MgTXlUZXN0MSB7CisKKyAgICBpbnRlcmZhY2UgSSB7CisgICAgICAgIHZvaWQgbSgpOworICAgIH0KKworICAgIHZvaWQgY2FsbChJIHMpIHt9CisKKyAgICBJIGkgPSA8ZXJyb3IgZGVzY3I9IkNhbm5vdCByZXNvbHZlIHN5bWJvbCAnTm9uRXhpc3RlbnRUeXBlJyI+Tm9uRXhpc3RlbnRUeXBlPC9lcnJvcj46Om07CisKKyAgICB7CisgICAgICAgIGNhbGwoPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ05vbkV4aXN0ZW50VHlwZSciPk5vbkV4aXN0ZW50VHlwZTwvZXJyb3I+OjptKTsKKyAgICB9Cit9CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvbGFtYmRhL21ldGhvZFJlZi9NZXRob2RSZWZNaXNjMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9sYW1iZGEvbWV0aG9kUmVmL01ldGhvZFJlZk1pc2MxLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWNlN2E2NQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvbGFtYmRhL21ldGhvZFJlZi9NZXRob2RSZWZNaXNjMS5qYXZhCkBAIC0wLDAgKzEsMTk3IEBACitpbXBvcnQgamF2YS51dGlsLio7CitjbGFzcyBNeVRlc3QgeworCisgICBzdGF0aWMgdm9pZCBtKGludCBpKSB7Ly9oZXJlIAorICAgfQorICAgc3RhdGljIHZvaWQgbShJbnRlZ2VyIGkpIHt9CisKKyAgIGludGVyZmFjZSBJIHsKKyAgICAgICB2b2lkIG0oaW50IHgpOworICAgfQorCisgICBzdGF0aWMgdm9pZCBjYWxsKEkgcykgeyBzLm0oNDIpOyB9CisKKyAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKKyAgICAgICBJIHMgPSBNeVRlc3Q6Om07CisgICAgICAgcy5tKDQyKTsKKyAgICAgICBjYWxsKE15VGVzdDo6bSk7CisgICB9Cit9CisKK2NsYXNzIE15VGVzdDEgeworCisgICAgc3RhdGljIHZvaWQgbShJbnRlZ2VyIGkpIHsgfQorCisgICAgaW50ZXJmYWNlIEkxIHsKKyAgICAgICAgdm9pZCBtKGludCB4KTsKKyAgICB9CisKKyAgICBpbnRlcmZhY2UgSTIgeworICAgICAgICB2b2lkIG0oSW50ZWdlciB4KTsKKyAgICB9CisKKyAgICBzdGF0aWMgdm9pZCBjYWxsKGludCBpLCBJMSBzKSB7CisgICAgICAKKyAgICB9CisgICAgc3RhdGljIHZvaWQgY2FsbChpbnQgaSwgSTIgcykgeworICAgICAgLy9oZXJlCisgICAgfQorCisgICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgeworICAgICAgICBjYWxsKDEsIE15VGVzdDE6Om0pOworICAgIH0KK30KKworY2xhc3MgTXlUZXN0MiB7CisKKyAgICBzdGF0aWMgdm9pZCBtKEludGVnZXIgaSkgeyB9CisKKyAgICBpbnRlcmZhY2UgSSB7CisgICAgICAgIHZvaWQgbShpbnQgeCk7CisgICAgfQorCisgICAgc3RhdGljIHZvaWQgY2FsbChpbnQgaSwgSSBzKSB7ICAgfQorICAgIHN0YXRpYyB2b2lkIGNhbGwoSW50ZWdlciBpLCBJIHMpIHsgICB9CisKKyAgICBzdGF0aWMgdm9pZCB0ZXN0KCkgeworICAgICAgICBjYWxsPGVycm9yIGRlc2NyPSJBbWJpZ3VvdXMgbWV0aG9kIGNhbGw6IGJvdGggJ015VGVzdDIuY2FsbChpbnQsIEkpJyBhbmQgJ015VGVzdDIuY2FsbChJbnRlZ2VyLCBJKScgbWF0Y2giPigxLCBNeVRlc3QyOjptKTwvZXJyb3I+OyAvL2FtYmlndW91cworICAgIH0KK30KKworY2xhc3MgTXlUZXN0MyB7CisgICAgaW50ZXJmYWNlIEkgeworICAgICAgIHZvaWQgbSgpOworICAgIH0KKworICAgIE15VGVzdDMoKSB7fQorCisgICBzdGF0aWMgdm9pZCBtKCkgeyB9CisKKyAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKKyAgICAgIEkgcyA9IG5ldyBNeVRlc3QzKCk6Om07CisgICB9Cit9CisKK2NsYXNzIE15VGVzdDQgeworCisgICAgaW50ZXJmYWNlIEkgeworICAgICAgICBNeVRlc3Q0IG0oTGlzdDxJbnRlZ2VyPiBsMSwgTGlzdDxJbnRlZ2VyPiBsMik7CisgICAgfQorCisgICAgTXlUZXN0NCBtZXRoKExpc3Q8SW50ZWdlcj4uLi4gbGxpKSB7IHJldHVybiBudWxsOyB9CisgICAgTXlUZXN0NChMaXN0PEludGVnZXI+Li4uIGxsaSkgeyB9CisKKyAgICBJIHMxID0gdGhpczo6bWV0aDsKKyAgICBJIHMyID0gTXlUZXN0NDo6bmV3OworfQorCitjbGFzcyBNeVRlc3Q1IHsKKyAgICBpbnRlcmZhY2UgSV92b2lkPFg+IHsKKyAgICAgICAgdm9pZCBtKCk7CisgICAgfQorICAgIAorICAgIGludGVyZmFjZSBJX1ZvaWQ8WD4geworICAgICAgICB2b2lkIG0oKTsKKyAgICB9CisgICAgCisgICAgc3RhdGljIHZvaWQgbV92b2lkKCkge30KKyAgICAKKyAgICBzdGF0aWMgVm9pZCBfVm9pZCgpIHtyZXR1cm4gbnVsbDsgfQorICAgIAorICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKKyAgICAgICAgSV92b2lkIHMxID0gTXlUZXN0NTo6bV92b2lkOworICAgICAgICBzMS5tKCk7CisgICAgICAgIElfVm9pZCBzMiA9IE15VGVzdDU6Om1fdm9pZDsKKyAgICAgICAgczIubSgpOworICAgICAgICBJX3ZvaWQgczMgPSBNeVRlc3Q1OjpfVm9pZDsKKyAgICAgICAgczMubSgpOworICAgICAgICBJX1ZvaWQgczQgPSBNeVRlc3Q1OjpfVm9pZDsKKyAgICAgICAgczQubSgpOworICAgIH0KK30KK2NsYXNzIE15VGVzdDYgeworICAgIGludGVyZmFjZSBJIHsKKyAgICAgICAgTXlUZXN0NiBpbnZva2UoKTsKKyAgICB9CisgICAgCisgICAgTXlUZXN0NigpIHsKKyAgICB9CisgICAgCisgICAgc3RhdGljIE15VGVzdDYgbSgpIHsKKyAgICAgICAgcmV0dXJuIG51bGw7CisgICAgfQorCisgICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgeworICAgICAgICBJIEkxID0gKChJKSgpIC0+IHtyZXR1cm4gbnVsbDsgfSk6Omludm9rZTsKKyAgICAgICAgSTEuaW52b2tlKCk7CisgICAgICAgIEkgSTIgPSAoKEkpTXlUZXN0Njo6bmV3KTo6aW52b2tlOworICAgICAgICBJMS5pbnZva2UoKTsKKyAgICAgICAgSSBJMyA9ICgoSSlNeVRlc3Q2OjptKTo6aW52b2tlOworICAgICAgICBJMS5pbnZva2UoKTsKKyAgICB9Cit9CisKK2NsYXNzIE15VGVzdDd7CisgICAgCisgICAgaW50ZXJmYWNlIEk8Uj4geworICAgICAgICBSIGludm9rZSgpOworICAgIH0KKyAgICAKKyAgICBAaW50ZXJmYWNlIEEgeyB9CisKKyAgICBzdGF0aWMgYWJzdHJhY3QgY2xhc3MgQUMgeyB9CisgICAgCisgICAgZW51bSBFIHsgfQorICAgIAorICAgIHZvaWQgdGVzdCgpIHsKKyAgICAgICAgPGVycm9yIGRlc2NyPSJJbmNvbXBhdGlibGUgdHlwZXMuIEZvdW5kOiAnPG1ldGhvZCByZWZlcmVuY2U+JywgcmVxdWlyZWQ6ICdNeVRlc3Q3LkknIj5JIHMxID0gQTo6bmV3OzwvZXJyb3I+CisgICAgICAgIDxlcnJvciBkZXNjcj0iSW5jb21wYXRpYmxlIHR5cGVzLiBGb3VuZDogJzxtZXRob2QgcmVmZXJlbmNlPicsIHJlcXVpcmVkOiAnTXlUZXN0Ny5JJyI+SSBzMiA9IEk6Om5ldzs8L2Vycm9yPgorICAgICAgICA8ZXJyb3IgZGVzY3I9IkluY29tcGF0aWJsZSB0eXBlcy4gRm91bmQ6ICc8bWV0aG9kIHJlZmVyZW5jZT4nLCByZXF1aXJlZDogJ015VGVzdDcuSSciPkkgczMgPSBBQzo6bmV3OzwvZXJyb3I+CisgICAgICAgIDxlcnJvciBkZXNjcj0iSW5jb21wYXRpYmxlIHR5cGVzLiBGb3VuZDogJzxtZXRob2QgcmVmZXJlbmNlPicsIHJlcXVpcmVkOiAnTXlUZXN0Ny5JJyI+SSBzNCA9IEU6Om5ldzs8L2Vycm9yPgorICAgIH0KK30KKworY2xhc3MgTXlUZXN0OHsKKworICAgIHN0YXRpYyBjbGFzcyBTdXAge30gCisKKworICAgIHN0YXRpYyBjbGFzcyBTdWIgZXh0ZW5kcyBTdXAgeworCisgICAgICAgIGludGVyZmFjZSBJIHsgU3VwIG0oU3VwIHgsIFN0cmluZyBzdHIpOyB9CisKKyAgICAgICAgY2xhc3MgSW5uZXIgZXh0ZW5kcyBTdXAgeworICAgICAgICAgICAgSW5uZXIoU3RyaW5nIHZhbCkgeyB9CisgICAgICAgIH0KKworICAgICAgICB2b2lkIHRlc3QoKSB7CisgICAgICAgICAgICA8ZXJyb3IgZGVzY3I9IkluY29tcGF0aWJsZSB0eXBlcy4gRm91bmQ6ICc8bWV0aG9kIHJlZmVyZW5jZT4nLCByZXF1aXJlZDogJ015VGVzdDguU3ViLkknIj5JIHZhciA9IFN1Yi5Jbm5lcjo6bmV3OzwvZXJyb3I+OworICAgICAgICB9CisgICAgfQorfQorCitjbGFzcyBNeVRlc3Q5IHsKKyAgICAKKyAgICBzdGF0aWMgY2xhc3MgU3VwZXJGb288WD4geyB9CisKKyAgICBzdGF0aWMgY2xhc3MgRm9vPFggZXh0ZW5kcyBOdW1iZXI+IGV4dGVuZHMgU3VwZXJGb288WD4geyB9CisgICAgCisgICAgaW50ZXJmYWNlIEkxIHsKKyAgICAgICAgdm9pZCBtKCk7CisgICAgfQorCisgICAgaW50ZXJmYWNlIEkyIHsKKyAgICAgICAgdm9pZCBtKCk7CisgICAgfQorICAgIAorICAgIHN0YXRpYyA8WCBleHRlbmRzIE51bWJlcj4gRm9vPFg+IG0oKSB7IHJldHVybiBudWxsOyB9CisgICAgCisgICAgc3RhdGljIHZvaWQgZzEoSTEgcykgeyB9CisgICAgc3RhdGljIHZvaWQgZzIoSTEgcykgeyB9CisgICAgc3RhdGljIHZvaWQgZzIoSTIgcykgeyB9CisKKyAgICB2b2lkIHRlc3QoKSB7CisgICAgICAgIGcxKE15VGVzdDk6Om0pOworICAgICAgICBnMjxlcnJvciBkZXNjcj0iQW1iaWd1b3VzIG1ldGhvZCBjYWxsOiBib3RoICdNeVRlc3Q5LmcyKEkxKScgYW5kICdNeVRlc3Q5LmcyKEkyKScgbWF0Y2giPihNeVRlc3Q5OjptKTwvZXJyb3I+OworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvbGFtYmRhL21ldGhvZFJlZi9NZXRob2RSZWZlcmVuY2VSZWNlaXZlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9sYW1iZGEvbWV0aG9kUmVmL01ldGhvZFJlZmVyZW5jZVJlY2VpdmVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWU4NTIyNAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvbGFtYmRhL21ldGhvZFJlZi9NZXRob2RSZWZlcmVuY2VSZWNlaXZlci5qYXZhCkBAIC0wLDAgKzEsMTMgQEAKK2NsYXNzIE15VGVzdCB7CisKKyAgICBpbnRlcmZhY2UgSSB7CisgICAgICAgdm9pZCBfKE15VGVzdCByZWNlaXZlciwgSW50ZWdlciBpKTsKKyAgICB9CisKKyAgICB2b2lkIG0oSW50ZWdlciBpKSB7fQorCisgICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgeworICAgICAgICBJIGkgPSBNeVRlc3QgOjogbTsKKyAgICAgICAgaS5fKG5ldyBNeVRlc3QoKSwgMSk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvbGFtYmRhL21ldGhvZFJlZi9NZXRob2RUeXBlUGFyYW1zSW5mZXJlbmNlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2xhbWJkYS9tZXRob2RSZWYvTWV0aG9kVHlwZVBhcmFtc0luZmVyZW5jZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjExYzI4NGYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2xhbWJkYS9tZXRob2RSZWYvTWV0aG9kVHlwZVBhcmFtc0luZmVyZW5jZS5qYXZhCkBAIC0wLDAgKzEsNTIgQEAKK2NsYXNzIE15VGVzdCB7CisgICAgaW50ZXJmYWNlIEkxIHsKKyAgICAgICB2b2lkIG0oU3RyaW5nIHMpOworICAgIH0KKworICAgIGludGVyZmFjZSBJMiB7CisgICAgICAgdm9pZCBtKEludGVnZXIgcyk7CisgICAgfQorCisgICAgaW50ZXJmYWNlIEkzIHsKKyAgICAgICB2b2lkIG0oT2JqZWN0IG8pOworICAgIH0KKworICAgIHN0YXRpYyA8VCBleHRlbmRzIE51bWJlcj4gdm9pZCBtKFQgcCkge30KKworICAgIHN0YXRpYyA8VDE+IHZvaWQgbTEoVDEgZngpIHsgfQorIAorICAgIHN0YXRpYyB2b2lkIGZvbyhJMSBpKSB7fQorICAgIHN0YXRpYyB2b2lkIGZvbyhJMiBpKSB7fSAvL20KKyAgICBzdGF0aWMgdm9pZCBmb28oSTMgaSkge30KKworICAgIHN0YXRpYyB7CisgICAgICAgICBmb28oTXlUZXN0OjptKTsKKyAgICAgICAgIGZvbzxlcnJvciBkZXNjcj0iQW1iaWd1b3VzIG1ldGhvZCBjYWxsOiBib3RoICdNeVRlc3QuZm9vKEkxKScgYW5kICdNeVRlc3QuZm9vKEkyKScgbWF0Y2giPihNeVRlc3Q6Om0xKTwvZXJyb3I+OworICAgIH0KK30KKworCitjbGFzcyBNeVRlc3QxIHsKKyAgICBpbnRlcmZhY2UgSTEgeworICAgICAgIHZvaWQgbShJbnRlZ2VyIHMpOworICAgIH0KKworICAgIGludGVyZmFjZSBJMiB7CisgICAgICAgdm9pZCBtKEludGVnZXIgcyk7CisgICAgfQorCisgICAgc3RhdGljIDxUIGV4dGVuZHMgTnVtYmVyPiB2b2lkIG0oVCBwKSB7IH0KKyAgICBzdGF0aWMgPFQ+IHZvaWQgbTEoVCBwKSB7IH0KKyAKKyAgICBzdGF0aWMgdm9pZCBmb28xKEkxIGkpIHsgfQorICAgIHN0YXRpYyB2b2lkIGZvbzIoSTEgaSkgeyB9CisgICAgc3RhdGljIHZvaWQgZm9vMihJMiBpKSB7IH0KKworICAgIHN0YXRpYyB7CisgICAgICAgIGZvbzEoTXlUZXN0MTo6bSk7CisgICAgICAgIGZvbzI8ZXJyb3IgZGVzY3I9IkFtYmlndW91cyBtZXRob2QgY2FsbDogYm90aCAnTXlUZXN0MS5mb28yKEkxKScgYW5kICdNeVRlc3QxLmZvbzIoSTIpJyBtYXRjaCI+KE15VGVzdDE6Om0pPC9lcnJvcj47CisKKyAgICAgICAgZm9vMShNeVRlc3QxOjptMSk7CisgICAgICAgIGZvbzI8ZXJyb3IgZGVzY3I9IkFtYmlndW91cyBtZXRob2QgY2FsbDogYm90aCAnTXlUZXN0MS5mb28yKEkxKScgYW5kICdNeVRlc3QxLmZvbzIoSTIpJyBtYXRjaCI+KE15VGVzdDE6Om0xKTwvZXJyb3I+OyAgCisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9sYW1iZGEvbWV0aG9kUmVmL1F1YWxpZmllclR5cGVBcmdzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2xhbWJkYS9tZXRob2RSZWYvUXVhbGlmaWVyVHlwZUFyZ3MuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43YzFlMDRmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9sYW1iZGEvbWV0aG9kUmVmL1F1YWxpZmllclR5cGVBcmdzLmphdmEKQEAgLTAsMCArMSwzOCBAQAoraW1wb3J0IGphdmEudXRpbC4qOworCitjbGFzcyBNeVRlc3QgeworICBpbnRlcmZhY2UgSSB7CisgICAgU3RyaW5nIG0oRm9vPFN0cmluZz4gZik7CisgIH0KKworICBjbGFzcyBGb288WD4geworICAgIFN0cmluZyBmb28oKSB7CisgICAgICByZXR1cm4gbnVsbDsKKyAgICB9CisKKyAgICB7CisgICAgICBJIGkgPSBGb288U3RyaW5nPiA6OiBmb287CisgICAgICA8ZXJyb3IgZGVzY3I9IkluY29tcGF0aWJsZSB0eXBlcy4gRm91bmQ6ICc8bWV0aG9kIHJlZmVyZW5jZT4nLCByZXF1aXJlZDogJ015VGVzdC5JJyI+SSBpMSA9IEZvbzxJbnRlZ2VyPiA6OiBmb287PC9lcnJvcj4KKyAgICB9CisgIH0KK30KKworY2xhc3MgTXlUZXN0MSB7CisgICAgaW50ZXJmYWNlIEkgeworICAgICAgIFN0cmluZyBtKEZvbyBmKTsKKyAgICB9CisKKyAgICBzdGF0aWMgY2xhc3MgRm9vPFg+IHsKKyAgICAgICBTdHJpbmcgZm9vKCkgeyByZXR1cm4gbnVsbDsgfQorCisgICAgICAgc3RhdGljIHZvaWQgdGVzdCgpIHsKKyAgICAgICAgICBJIGkgPSBGb286OmZvbzsKKyAgICAgICB9CisgICAgfQorfQorCitjbGFzcyBNeVRlc3QyIHsKKyAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgeworICAgIEFycmF5cy5zb3J0KG5ldyBTdHJpbmdbMF0sIFN0cmluZy5DQVNFX0lOU0VOU0lUSVZFX09SREVSOjpjb21wYXJlKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvbGFtYmRhL21ldGhvZFJlZi9SYXdRdWFsaWZpZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvbGFtYmRhL21ldGhvZFJlZi9SYXdRdWFsaWZpZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZTFhZDZjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9sYW1iZGEvbWV0aG9kUmVmL1Jhd1F1YWxpZmllci5qYXZhCkBAIC0wLDAgKzEsNDQgQEAKK2NsYXNzIE15VGVzdCB7CisgICAgCisgICAgc3RhdGljIGNsYXNzIEZvbzxUPiB7CisgICAgICAgIFQgbSgpIHsgCisgICAgICAgICAgcmV0dXJuIG51bGw7IAorICAgICAgICB9CisgICAgfQorICAgIAorICAgIGludGVyZmFjZSBJIHsKKyAgICAgICAgSW50ZWdlciBtKEZvbzxJbnRlZ2VyPiBmKTsKKyAgICB9CisKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CisgICAgICAgIEkgaSA9IEZvbzo6bTsKKyAgICB9Cit9CisKK2NsYXNzIE15VGVzdDEgeworICAgIAorICAgIGludGVyZmFjZSBJMSB7CisgICAgICAgdm9pZCBtKFN0cmluZyBzKTsKKyAgICB9CisKKyAgICBpbnRlcmZhY2UgSTIgeworICAgICAgIHZvaWQgbShJbnRlZ2VyIGkpOworICAgIH0KKyAgICAKKyAgICBpbnRlcmZhY2UgSTMgeworICAgICAgIHZvaWQgbShPYmplY3Qgbyk7CisgICAgfQorCisgICAgc3RhdGljIGNsYXNzIEZvbzxUIGV4dGVuZHMgTnVtYmVyPiB7CisgICAgICAgIEZvbyhUIHQpIHt9CisgICAgfQorCisgCisgICAgc3RhdGljIHZvaWQgZm9vKEkxIGkpIHt9CisgICAgc3RhdGljIHZvaWQgZm9vKEkyIGkpIHt9CisgICAgc3RhdGljIHZvaWQgZm9vKEkzIGkpIHt9CisKKyAgICBzdGF0aWMgeworICAgICAgICBmb28oRm9vOjpuZXcpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvbGFtYmRhL21ldGhvZFJlZi9SZWZlcmVuY2VQYXJhbWV0ZXJzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2xhbWJkYS9tZXRob2RSZWYvUmVmZXJlbmNlUGFyYW1ldGVycy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIzNzA1NTc5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9sYW1iZGEvbWV0aG9kUmVmL1JlZmVyZW5jZVBhcmFtZXRlcnMuamF2YQpAQCAtMCwwICsxLDkgQEAKK2NsYXNzIE15VGVzdCB7CisgICAgaW50ZXJmYWNlIEk8WD4geworICAgICAgWCBfKCk7CisgICAgfQorICAgIHN0YXRpYyA8VD4gVCBiYXIoKSB7cmV0dXJuIG51bGw7fQorICAgIHN0YXRpYyB7CisgICAgICBJIGkgPSBNeVRlc3Q6OjxTdHJpbmc+YmFyOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvbGFtYmRhL21ldGhvZFJlZi9SZXNvbHZlQ29uZmxpY3RzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2xhbWJkYS9tZXRob2RSZWYvUmVzb2x2ZUNvbmZsaWN0cy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY4MWUyMDcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2xhbWJkYS9tZXRob2RSZWYvUmVzb2x2ZUNvbmZsaWN0cy5qYXZhCkBAIC0wLDAgKzEsMTIgQEAKK2ludGVyZmFjZSBGdW5jPFRJbiwgVE91dD57CisgICAgVE91dCBydW4oVEluIGluKTsKK30KKworCitjbGFzcyBNYWluIHsKKworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKGZpbmFsIFN0cmluZ1tdIGFyZ3MpIHsKKyAgICAgICAgRnVuYzxJbnRlZ2VyLCBTdHJpbmc+IGZ1bmMgPSAgSW50ZWdlcjo6dG9TdHJpbmc7CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihmdW5jLnJ1big2KSk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvbGFtYmRhL21ldGhvZFJlZi9SZXR1cm5UeXBlU3BlY2lmaWMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvbGFtYmRhL21ldGhvZFJlZi9SZXR1cm5UeXBlU3BlY2lmaWMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNzE0ZmZkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9sYW1iZGEvbWV0aG9kUmVmL1JldHVyblR5cGVTcGVjaWZpYy5qYXZhCkBAIC0wLDAgKzEsMTA5IEBACitjbGFzcyBNeVRlc3QgeworICAgIAorICAgIHN0YXRpYyBjbGFzcyBGb288VD4geworICAgICAgICBUIG0oKSB7IHJldHVybiBudWxsOyB9OworICAgIH0KKyAgICAKKyAgICBpbnRlcmZhY2UgSTEgeworICAgICAgICBGb288T2JqZWN0PiBtKEZvbzxTdHJpbmc+IGYpOworICAgIH0KKworICAgIGludGVyZmFjZSBJMiB7CisgICAgICAgIEludGVnZXIgbShGb288SW50ZWdlcj4gZik7CisgICAgfQorICAgIAorICAgIGludGVyZmFjZSBJMyB7CisgICAgICAgIE9iamVjdCBtKEZvbzxJbnRlZ2VyPiBmKTsKKyAgICB9CisgICAgCisgICAgcHJpdmF0ZSBzdGF0aWMgdm9pZCA8d2FybmluZyBkZXNjcj0iUHJpdmF0ZSBtZXRob2QgJ2ZvbyhNeVRlc3QuSTEpJyBpcyBuZXZlciB1c2VkIj5mb288L3dhcm5pbmc+KEkxIGkpIHsKKyAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihpKTsKKyAgICB9CisKKyAgICBwcml2YXRlIHN0YXRpYyB2b2lkIGZvbyhJMiBpKSB7ICAKKyAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihpKTsKKyAgICB9CisKKyAgICBwcml2YXRlIHN0YXRpYyB2b2lkIDx3YXJuaW5nIGRlc2NyPSJQcml2YXRlIG1ldGhvZCAnZm9vKE15VGVzdC5JMyknIGlzIG5ldmVyIHVzZWQiPmZvbzwvd2FybmluZz4oSTMgaSkgeworICAgICAgU3lzdGVtLm91dC5wcmludGxuKGkpOworICAgIH0KKworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKKyAgICAgICAgZm9vKEZvbzo6bSk7CisgICAgfQorfQorCitjbGFzcyBNeVRlc3QxIHsKKyAgICAKKyAgICBpbnRlcmZhY2UgSTEgeworICAgICAgIEZvbzw/PiBtKFN0cmluZyBzKTsKKyAgICB9CisKKworICAgIGludGVyZmFjZSBJMiB7CisgICAgICAgIEZvbzw/PiBtKEludGVnZXIgaSk7CisgICAgfQorICAgIAorICAgIGludGVyZmFjZSBJMyB7CisgICAgICAgIEZvbzxOdW1iZXI+IG0oSW50ZWdlciBpKTsKKyAgICB9CisKKyAgICBzdGF0aWMgY2xhc3MgRm9vPFQgZXh0ZW5kcyBOdW1iZXI+IHsKKyAgICAgICAgRm9vKFQgdCkgeworICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbih0KTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHByaXZhdGUgc3RhdGljIHZvaWQgPHdhcm5pbmcgZGVzY3I9IlByaXZhdGUgbWV0aG9kICdtKE15VGVzdDEuSTEpJyBpcyBuZXZlciB1c2VkIj5tPC93YXJuaW5nPihJMSBpKSB7CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihpKTsKKyAgICB9CisKKyAgICBwcml2YXRlIHN0YXRpYyB2b2lkIG0oSTIgaSkgeworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oaSk7CisgICAgfQorCisgICAgcHJpdmF0ZSBzdGF0aWMgdm9pZCA8d2FybmluZyBkZXNjcj0iUHJpdmF0ZSBtZXRob2QgJ20oTXlUZXN0MS5JMyknIGlzIG5ldmVyIHVzZWQiPm08L3dhcm5pbmc+KEkzIGkpIHsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKGkpOworICAgIH0KKworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKKyAgICAgICAgbShGb286Om5ldyk7CisgICAgfQorfQorY2xhc3MgTXlUZXN0MiB7CisgICAgCisgICAgaW50ZXJmYWNlIEkxIHsKKyAgICAgICBGb288Pz4gbShTdHJpbmcgcyk7CisgICAgfQorCisKKyAgICBpbnRlcmZhY2UgSTIgeworICAgICAgICBGb288SW50ZWdlcj4gbShJbnRlZ2VyIGkpOworICAgIH0KKyAgICAKKyAgICBpbnRlcmZhY2UgSTMgeworICAgICAgICBGb288TnVtYmVyPiBtKEludGVnZXIgaSk7CisgICAgfQorCisgICAgc3RhdGljIGNsYXNzIEZvbzxUIGV4dGVuZHMgTnVtYmVyPiB7CisgICAgICAgIEZvbyhUIHQpIHsKKyAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4odCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwcml2YXRlIHN0YXRpYyB2b2lkIDx3YXJuaW5nIGRlc2NyPSJQcml2YXRlIG1ldGhvZCAnbShNeVRlc3QyLkkxKScgaXMgbmV2ZXIgdXNlZCI+bTwvd2FybmluZz4oSTEgaSkgeworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oaSk7CisgICAgfQorCisgICAgcHJpdmF0ZSBzdGF0aWMgdm9pZCBtKEkyIGkpIHsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKGkpOworICAgIH0KKworICAgIHByaXZhdGUgc3RhdGljIHZvaWQgPHdhcm5pbmcgZGVzY3I9IlByaXZhdGUgbWV0aG9kICdtKE15VGVzdDIuSTMpJyBpcyBuZXZlciB1c2VkIj5tPC93YXJuaW5nPihJMyBpKSB7CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihpKTsKKyAgICB9CisKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CisgICAgICAgIG0oRm9vOjpuZXcpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvbGFtYmRhL21ldGhvZFJlZi9TT0UuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvbGFtYmRhL21ldGhvZFJlZi9TT0UuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MWNiMzk0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9sYW1iZGEvbWV0aG9kUmVmL1NPRS5qYXZhCkBAIC0wLDAgKzEsOCBAQAoraW1wb3J0IGphdmEudXRpbC4qOworCitjbGFzcyBMYW1iZGFUZXN0IHsKKyAgICBwdWJsaWMgdm9pZCB0ZXN0UigpIHsKKyAgICAgICAgPGVycm9yIGRlc2NyPSJJbmNvbXBhdGlibGUgdHlwZXMuIEZvdW5kOiAnamF2YS5sYW5nLlN0cmluZycsIHJlcXVpcmVkOiAnPG1ldGhvZCByZWZlcmVuY2U+JyI+bmV3IEFycmF5TGlzdDxTdHJpbmc+KCkgOjogc2l6ZSA9ICIiPC9lcnJvcj47IAorCisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvbGFtYmRhL21ldGhvZFJlZi9TdGF0aWNQcm9ibGVtcy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9sYW1iZGEvbWV0aG9kUmVmL1N0YXRpY1Byb2JsZW1zLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWU3NzMzNgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvbGFtYmRhL21ldGhvZFJlZi9TdGF0aWNQcm9ibGVtcy5qYXZhCkBAIC0wLDAgKzEsMTI0IEBACitjbGFzcyBNeVRlc3QgeworICAgIGludGVyZmFjZSBJIHsKKyAgICAgICBTdHJpbmcgbShGb28gZik7CisgICAgfQorCisgICAgc3RhdGljIGNsYXNzIEZvbzxYPiB7CisgICAgICAgU3RyaW5nIGZvbygpIHsgcmV0dXJuIG51bGw7IH0KKworICAgICAgIEZvbzxYPiBnZXRGb28oKSB7IHJldHVybiB0aGlzOyB9CisKKyAgICAgICBzdGF0aWMgdm9pZCB0ZXN0KCkgeworICAgICAgICAgIEkgaTEgPSBGb28uPGVycm9yIGRlc2NyPSJOb24tc3RhdGljIG1ldGhvZCAnZ2V0Rm9vKCknIGNhbm5vdCBiZSByZWZlcmVuY2VkIGZyb20gYSBzdGF0aWMgY29udGV4dCI+Z2V0Rm9vPC9lcnJvcj4oKTo6Zm9vOworICAgICAgICAgIEkgaTIgPSA8ZXJyb3IgZGVzY3I9IidNeVRlc3QuRm9vLnRoaXMnIGNhbm5vdCBiZSByZWZlcmVuY2VkIGZyb20gYSBzdGF0aWMgY29udGV4dCI+dGhpczwvZXJyb3I+Ojpmb287CisgICAgICAgICAgSSBpMyA9IEZvbyA6OiBmb287CisgICAgICAgfQorICAgIH0KK30KK2NsYXNzIE15VGVzdDEgeworICAgIHZvaWQgbTEoTXlUZXN0MSByZWMsIFN0cmluZyB4KSB7IH0KKyAgICB2b2lkIG0xKFN0cmluZyB4KSB7IH0KKworICAgIHN0YXRpYyB2b2lkIG0yKFN0cmluZyB4KSB7IH0KKyAgICBzdGF0aWMgdm9pZCBtMihNeVRlc3QxIHJlYywgU3RyaW5nIHgpIHt9CisKKyAgICB2b2lkIG0zKE15VGVzdDEgcmVjLCBTdHJpbmcgeCkgeyB9CisgICAgc3RhdGljIHZvaWQgbTMoU3RyaW5nIHgpIHsgfQorCisgICAgdm9pZCBtNChTdHJpbmcgeCkgeyB9CisgICAgc3RhdGljIHZvaWQgbTQoTXlUZXN0MSByZWMsIFN0cmluZyB4KSB7IH0KKworICAgIGludGVyZmFjZSBJMSB7CisgICAgICAgIHZvaWQgbShTdHJpbmcgeCk7CisgICAgfQorCisgICAgaW50ZXJmYWNlIEkyIHsKKyAgICAgICAgdm9pZCBtKE15VGVzdDEgcmVjLCBTdHJpbmcgeCk7CisgICAgfQorCisgICAgc3RhdGljIHZvaWQgY2FsbDEoSTEgcykgeyAgIH0KKworICAgIHN0YXRpYyB2b2lkIGNhbGwyKEkyIHMpIHsgICB9CisKKyAgICBzdGF0aWMgdm9pZCB0ZXN0MSgpIHsKKyAgICAgICAgPGVycm9yIGRlc2NyPSJJbmNvbXBhdGlibGUgdHlwZXMuIEZvdW5kOiAnPG1ldGhvZCByZWZlcmVuY2U+JywgcmVxdWlyZWQ6ICdNeVRlc3QxLkkxJyI+STEgczEgPSBNeVRlc3QxIDo6bTE7PC9lcnJvcj4KKyAgICAgICAgY2FsbDE8ZXJyb3IgZGVzY3I9IidjYWxsMShNeVRlc3QxLkkxKScgaW4gJ015VGVzdDEnIGNhbm5vdCBiZSBhcHBsaWVkIHRvICcoPG1ldGhvZCByZWZlcmVuY2U+KSciPihNeVRlc3QxOjptMSk8L2Vycm9yPjsKKyAgICAgICAgSTEgczIgPSBNeVRlc3QxICA6OiBtMjsKKyAgICAgICAgY2FsbDEoTXlUZXN0MTo6bTIpOworICAgICAgICBJMSBzMyA9IE15VGVzdDE6Om0zOworICAgICAgICBjYWxsMShNeVRlc3QxOjptMyk7CisgICAgICAgIDxlcnJvciBkZXNjcj0iSW5jb21wYXRpYmxlIHR5cGVzLiBGb3VuZDogJzxtZXRob2QgcmVmZXJlbmNlPicsIHJlcXVpcmVkOiAnTXlUZXN0MS5JMSciPkkxIHM0ID0gTXlUZXN0MTo6bTQ7PC9lcnJvcj4KKyAgICAgICAgY2FsbDE8ZXJyb3IgZGVzY3I9IidjYWxsMShNeVRlc3QxLkkxKScgaW4gJ015VGVzdDEnIGNhbm5vdCBiZSBhcHBsaWVkIHRvICcoPG1ldGhvZCByZWZlcmVuY2U+KSciPihNeVRlc3QxOjptNCk8L2Vycm9yPjsKKyAgICB9CisKKyAgICBzdGF0aWMgdm9pZCB0ZXN0MigpIHsKKyAgICAgICAgSTIgczEgPSBNeVRlc3QxIDo6IG0xOworICAgICAgICBjYWxsMihNeVRlc3QxOjptMSk7CisgICAgICAgIEkyIHMyID0gTXlUZXN0MSA6OiBtMjsKKyAgICAgICAgY2FsbDIoTXlUZXN0MTo6bTIpOworCisgICAgICAgIDxlcnJvciBkZXNjcj0iSW5jb21wYXRpYmxlIHR5cGVzLiBGb3VuZDogJzxtZXRob2QgcmVmZXJlbmNlPicsIHJlcXVpcmVkOiAnTXlUZXN0MS5JMiciPkkyIHMzID0gTXlUZXN0MSA6OiBtMzs8L2Vycm9yPgorICAgICAgICBjYWxsMjxlcnJvciBkZXNjcj0iJ2NhbGwyKE15VGVzdDEuSTIpJyBpbiAnTXlUZXN0MScgY2Fubm90IGJlIGFwcGxpZWQgdG8gJyg8bWV0aG9kIHJlZmVyZW5jZT4pJyI+KE15VGVzdDE6Om0zKTwvZXJyb3I+OworICAgICAgICA8ZXJyb3IgZGVzY3I9IkluY29tcGF0aWJsZSB0eXBlcy4gRm91bmQ6ICc8bWV0aG9kIHJlZmVyZW5jZT4nLCByZXF1aXJlZDogJ015VGVzdDEuSTInIj5JMiBzNCA9IE15VGVzdDEgOjptNDs8L2Vycm9yPgorICAgICAgICBjYWxsMjxlcnJvciBkZXNjcj0iJ2NhbGwyKE15VGVzdDEuSTIpJyBpbiAnTXlUZXN0MScgY2Fubm90IGJlIGFwcGxpZWQgdG8gJyg8bWV0aG9kIHJlZmVyZW5jZT4pJyI+KE15VGVzdDE6Om00KTwvZXJyb3I+OworICAgIH0KK30KKworY2xhc3MgTXlUZXN0MiB7CisgICAgdm9pZCBtMShTdHJpbmcgeCkgeyB9CisgICAgdm9pZCBtMShNeVRlc3QyIHJlYywgU3RyaW5nIHgpIHsgfQorCisgICAgc3RhdGljIHZvaWQgbTIoTXlUZXN0MiByZWMsIFN0cmluZyB4KSB7fQorICAgIHN0YXRpYyB2b2lkIG0yKFN0cmluZyB4KSB7IH0KKworICAgIHN0YXRpYyB2b2lkIG0zKFN0cmluZyB4KSB7IH0KKyAgICB2b2lkIG0zKE15VGVzdDIgcmVjLCBTdHJpbmcgeCkgeyB9CisKKyAgICBzdGF0aWMgdm9pZCBtNChNeVRlc3QyIHJlYywgU3RyaW5nIHgpIHsgfQorICAgIHZvaWQgbTQoU3RyaW5nIHgpIHsgfQorCisgICAgaW50ZXJmYWNlIEkxIHsKKyAgICAgICAgdm9pZCBtKFN0cmluZyB4KTsKKyAgICB9CisKKyAgICBpbnRlcmZhY2UgSTIgeworICAgICAgICB2b2lkIG0oTXlUZXN0MiByZWMsIFN0cmluZyB4KTsKKyAgICB9CisKKyAgICBzdGF0aWMgdm9pZCBjYWxsMShJMSBzKSB7ICAgfQorCisgICAgc3RhdGljIHZvaWQgY2FsbDIoSTIgcykgeyAgIH0KKworICAgIHN0YXRpYyB2b2lkIHRlc3QxKCkgeworICAgICAgICA8ZXJyb3IgZGVzY3I9IkluY29tcGF0aWJsZSB0eXBlcy4gRm91bmQ6ICc8bWV0aG9kIHJlZmVyZW5jZT4nLCByZXF1aXJlZDogJ015VGVzdDIuSTEnIj5JMSBzMSA9IE15VGVzdDIgOjptMTs8L2Vycm9yPgorICAgICAgICBjYWxsMTxlcnJvciBkZXNjcj0iJ2NhbGwxKE15VGVzdDIuSTEpJyBpbiAnTXlUZXN0MicgY2Fubm90IGJlIGFwcGxpZWQgdG8gJyg8bWV0aG9kIHJlZmVyZW5jZT4pJyI+KE15VGVzdDI6Om0xKTwvZXJyb3I+OworICAgICAgICBJMSBzMiA9IE15VGVzdDIgIDo6IG0yOworICAgICAgICBjYWxsMShNeVRlc3QyOjptMik7CisgICAgICAgIEkxIHMzID0gTXlUZXN0Mjo6bTM7CisgICAgICAgIGNhbGwxKE15VGVzdDI6Om0zKTsKKyAgICAgICAgPGVycm9yIGRlc2NyPSJJbmNvbXBhdGlibGUgdHlwZXMuIEZvdW5kOiAnPG1ldGhvZCByZWZlcmVuY2U+JywgcmVxdWlyZWQ6ICdNeVRlc3QyLkkxJyI+STEgczQgPSBNeVRlc3QyOjptNDs8L2Vycm9yPgorICAgICAgICBjYWxsMTxlcnJvciBkZXNjcj0iJ2NhbGwxKE15VGVzdDIuSTEpJyBpbiAnTXlUZXN0MicgY2Fubm90IGJlIGFwcGxpZWQgdG8gJyg8bWV0aG9kIHJlZmVyZW5jZT4pJyI+KE15VGVzdDI6Om00KTwvZXJyb3I+OworICAgIH0KKworICAgIHN0YXRpYyB2b2lkIHRlc3QyKCkgeworICAgICAgICBJMiBzMSA9IE15VGVzdDIgOjogbTE7CisgICAgICAgIGNhbGwyKE15VGVzdDI6Om0xKTsKKyAgICAgICAgSTIgczIgPSBNeVRlc3QyIDo6IG0yOworICAgICAgICBjYWxsMihNeVRlc3QyOjptMik7CisKKyAgICAgICAgPGVycm9yIGRlc2NyPSJJbmNvbXBhdGlibGUgdHlwZXMuIEZvdW5kOiAnPG1ldGhvZCByZWZlcmVuY2U+JywgcmVxdWlyZWQ6ICdNeVRlc3QyLkkyJyI+STIgczMgPSBNeVRlc3QyIDo6IG0zOzwvZXJyb3I+CisgICAgICAgIGNhbGwyPGVycm9yIGRlc2NyPSInY2FsbDIoTXlUZXN0Mi5JMiknIGluICdNeVRlc3QyJyBjYW5ub3QgYmUgYXBwbGllZCB0byAnKDxtZXRob2QgcmVmZXJlbmNlPiknIj4oTXlUZXN0Mjo6bTMpPC9lcnJvcj47CisgICAgICAgIDxlcnJvciBkZXNjcj0iSW5jb21wYXRpYmxlIHR5cGVzLiBGb3VuZDogJzxtZXRob2QgcmVmZXJlbmNlPicsIHJlcXVpcmVkOiAnTXlUZXN0Mi5JMiciPkkyIHM0ID0gTXlUZXN0MiA6Om00OzwvZXJyb3I+CisgICAgICAgIGNhbGwyPGVycm9yIGRlc2NyPSInY2FsbDIoTXlUZXN0Mi5JMiknIGluICdNeVRlc3QyJyBjYW5ub3QgYmUgYXBwbGllZCB0byAnKDxtZXRob2QgcmVmZXJlbmNlPiknIj4oTXlUZXN0Mjo6bTQpPC9lcnJvcj47CisgICAgfQorCisgICAgc3RhdGljIHZvaWQgY2FsbDMoSTEgcykge30KKyAgICBzdGF0aWMgdm9pZCBjYWxsMyhJMiBzKSB7fQorICAgIHN0YXRpYyB7CisgICAgICAgICAgY2FsbDMoTXlUZXN0Mjo6bTEpOworICAgICAgICAgIGNhbGwzPGVycm9yIGRlc2NyPSJBbWJpZ3VvdXMgbWV0aG9kIGNhbGw6IGJvdGggJ015VGVzdDIuY2FsbDMoSTEpJyBhbmQgJ015VGVzdDIuY2FsbDMoSTIpJyBtYXRjaCI+KE15VGVzdDI6Om0yKTwvZXJyb3I+OworICAgICAgICAgIGNhbGwzKE15VGVzdDI6Om0zKTsKKyAgICAgICAgICBjYWxsMzxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgbWV0aG9kICdjYWxsMyg8bWV0aG9kIHJlZmVyZW5jZT4pJyI+KE15VGVzdDI6Om00KTwvZXJyb3I+OworICAgIH0KK30KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9sYW1iZGEvbWV0aG9kUmVmL1R5cGVBcmd1bWVudHNPbk1ldGhvZFJlZnMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvbGFtYmRhL21ldGhvZFJlZi9UeXBlQXJndW1lbnRzT25NZXRob2RSZWZzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWZlMDBkYQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvbGFtYmRhL21ldGhvZFJlZi9UeXBlQXJndW1lbnRzT25NZXRob2RSZWZzLmphdmEKQEAgLTAsMCArMSwxNyBAQAorY2xhc3MgVGVzdDxUPiB7CisgIHZvaWQgZm9vKFN0cmluZyBwKSB7fQorICA8VT4gdm9pZCBmb28xKFN0cmluZyBwKSB7fQorICBzdGF0aWMgdm9pZCBmb28yKFN0cmluZyBwKSB7fQorICBzdGF0aWMgPFU+IHZvaWQgZm9vMyhTdHJpbmcgcCkge30KKyAgdm9pZCB0ZXN0KCkgeworICAgIFRlc3QgdGVzdCA9IG5ldyBUZXN0PFN0cmluZz4oKTsKKyAgICBCbGFoQmxhaDxTdHJpbmc+IGJsYWhCbGFoID0gdGVzdDo6PFN0cmluZz5mb287CisgICAgQmxhaEJsYWg8U3RyaW5nPiBibGFoQmxhaDEgPSB0ZXN0Ojo8U3RyaW5nPmZvbzE7CisgICAgQmxhaEJsYWg8U3RyaW5nPiBibGFoQmxhaDIgPSB0ZXN0Ojo8U3RyaW5nPmZvbzI7CisgICAgQmxhaEJsYWg8U3RyaW5nPiBibGFoQmxhaDMgPSB0ZXN0Ojo8U3RyaW5nPmZvbzM7CisgIH0KK30KKworaW50ZXJmYWNlIEJsYWhCbGFoPFQ+IHsKKyAgdm9pZCBiYXIoVCBpKTsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2xhbWJkYS9tZXRob2RSZWYvVmFsaWRDb250ZXh0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2xhbWJkYS9tZXRob2RSZWYvVmFsaWRDb250ZXh0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTM2YWVmZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvbGFtYmRhL21ldGhvZFJlZi9WYWxpZENvbnRleHQuamF2YQpAQCAtMCwwICsxLDE3IEBACitwdWJsaWMgY2xhc3MgVGVzdCB7CisgIHsKKyAgICBpZiAoPGVycm9yIGRlc2NyPSJNZXRob2QgcmVmZXJlbmNlIGV4cHJlc3Npb24gaXMgbm90IGV4cGVjdGVkIGhlcmUiPlRlc3Q6Omxlbmd0aCBpbnN0YW5jZW9mIFN0cmluZzwvZXJyb3I+KSB7CisgICAgfQorICAgIGJhcihUZXN0OjpsZW5ndGgpOworICB9CisKKyAgcHVibGljIHN0YXRpYyBJbnRlZ2VyIGxlbmd0aChTdHJpbmcgcykgeworICAgIHJldHVybiBzLmxlbmd0aCgpOworICB9CisgIAorICBwdWJsaWMgc3RhdGljIHZvaWQgYmFyKEJhciBiYXIpIHt9CisgIAorICBpbnRlcmZhY2UgQmFyIHsKKyAgICBJbnRlZ2VyIF8oU3RyaW5nIHMpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9sYW1iZGEvbWV0aG9kUmVmL1ZhcmFyZ3MuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvbGFtYmRhL21ldGhvZFJlZi9WYXJhcmdzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjRhNTFhMgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvbGFtYmRhL21ldGhvZFJlZi9WYXJhcmdzLmphdmEKQEAgLTAsMCArMSw5MSBAQAorY2xhc3MgTXlUZXN0MSB7CisgICAgaW50ZXJmYWNlIEkgeworICAgICAgICB2b2lkIG0oaW50IGkxLCBpbnQgaTIpOworICAgIH0KKworICAgIHN0YXRpYyB2b2lkIG0xKGludCBpMSwgaW50IGkyKSB7IH0KKyAgICBzdGF0aWMgdm9pZCBtMShJbnRlZ2VyIGkxLCBpbnQgaTIpIHsgfQorICAgIHN0YXRpYyB2b2lkIG0xKGludCBpMSwgSW50ZWdlciBpMikgeyB9CisgICAgc3RhdGljIHZvaWQgbTEoSW50ZWdlciBpMSwgSW50ZWdlciBpMikge30KKyAgICBzdGF0aWMgdm9pZCBtMShJbnRlZ2VyLi4uIGlzKSB7IH0KKyAgICAKKyAgICBzdGF0aWMgdm9pZCBtMihpbnQuLi4gaXMpIHsgfQorICAgIHN0YXRpYyB2b2lkIG0yKGRvdWJsZS4uLiBkcykge30KKworICAgIHN0YXRpYyB2b2lkIG0zKGludC4uLiBpcykgeyB9CisgICAgc3RhdGljIHZvaWQgbTMoT2JqZWN0Li4uIGRzKSB7fQorCisgICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgeworICAgICAgICBJIGkxID0gTXlUZXN0MTo6bTE7CisgICAgICAgIGkxLm0oNDIsNDIpOworCisgICAgICAgIEkgaTIgPSBNeVRlc3QxIDo6IG0yOworICAgICAgICBpMi5tKDQyLDQyKTsKKworICAgICAgICA8ZXJyb3IgZGVzY3I9IkluY29tcGF0aWJsZSB0eXBlcy4gRm91bmQ6ICc8bWV0aG9kIHJlZmVyZW5jZT4nLCByZXF1aXJlZDogJ015VGVzdDEuSSciPkkgaTMgPSBNeVRlc3QxIDo6IG0zOzwvZXJyb3I+ICAKKyAgICB9Cit9CisKK2NsYXNzIE15VGVzdCB7CisKKyAgICBpbnRlcmZhY2UgSTEgeworICAgICAgICB2b2lkIG0oaW50IGkpOworICAgIH0KKworICAgIGludGVyZmFjZSBJMiB7CisgICAgICAgIHZvaWQgbShNeVRlc3QgdCwgaW50IGkpOworICAgIH0KKworICAgIHN0YXRpYyB2b2lkIHN0YXRpY18xKEludGVnZXIgaSkge30KKyAgICBzdGF0aWMgdm9pZCBzdGF0aWNfMihJbnRlZ2VyIGkxLCBJbnRlZ2VyIGkyKSB7fQorICAgIHN0YXRpYyB2b2lkIHN0YXRpY18zKFN0cmluZyBzKSB7fQorICAgIHN0YXRpYyB2b2lkIHN0YXRpY180KFN0cmluZy4uLiBzcykge30KKworICAgIHZvaWQgXzEoSW50ZWdlciBpKSB7fQorICAgIHZvaWQgXzIoSW50ZWdlciBpMSwgSW50ZWdlciBpMikge30KKyAgICB2b2lkIF8zKFN0cmluZyBzKSB7fQorICAgIHZvaWQgXzQoU3RyaW5nLi4uIHNzKSB7fQorCisgICAgc3RhdGljIHsKKyAgICAgICAgSTEgaTEgPSBNeVRlc3Q6OnN0YXRpY18xOworICAgICAgICA8ZXJyb3IgZGVzY3I9IkluY29tcGF0aWJsZSB0eXBlcy4gRm91bmQ6ICc8bWV0aG9kIHJlZmVyZW5jZT4nLCByZXF1aXJlZDogJ015VGVzdC5JMSciPkkxIGkyID0gTXlUZXN0OjpzdGF0aWNfMjs8L2Vycm9yPgorICAgICAgICA8ZXJyb3IgZGVzY3I9IkluY29tcGF0aWJsZSB0eXBlcy4gRm91bmQ6ICc8bWV0aG9kIHJlZmVyZW5jZT4nLCByZXF1aXJlZDogJ015VGVzdC5JMSciPkkxIGkzID0gTXlUZXN0OjpzdGF0aWNfMzs8L2Vycm9yPgorICAgICAgICA8ZXJyb3IgZGVzY3I9IkluY29tcGF0aWJsZSB0eXBlcy4gRm91bmQ6ICc8bWV0aG9kIHJlZmVyZW5jZT4nLCByZXF1aXJlZDogJ015VGVzdC5JMSciPkkxIGk0ID0gTXlUZXN0OjpzdGF0aWNfNDs8L2Vycm9yPgorICAgIH0KKworCisgICAgeworICAgICAgICA8ZXJyb3IgZGVzY3I9IkluY29tcGF0aWJsZSB0eXBlcy4gRm91bmQ6ICc8bWV0aG9kIHJlZmVyZW5jZT4nLCByZXF1aXJlZDogJ015VGVzdC5JMSciPkkxIGlfMSA9IE15VGVzdDo6XzE7PC9lcnJvcj4KKyAgICAgICAgPGVycm9yIGRlc2NyPSJJbmNvbXBhdGlibGUgdHlwZXMuIEZvdW5kOiAnPG1ldGhvZCByZWZlcmVuY2U+JywgcmVxdWlyZWQ6ICdNeVRlc3QuSTEnIj5JMSBpXzIgPSBNeVRlc3Q6Ol8yOzwvZXJyb3I+CisgICAgICAgIDxlcnJvciBkZXNjcj0iSW5jb21wYXRpYmxlIHR5cGVzLiBGb3VuZDogJzxtZXRob2QgcmVmZXJlbmNlPicsIHJlcXVpcmVkOiAnTXlUZXN0LkkxJyI+STEgaV8zID0gTXlUZXN0OjpfMzs8L2Vycm9yPgorICAgICAgICA8ZXJyb3IgZGVzY3I9IkluY29tcGF0aWJsZSB0eXBlcy4gRm91bmQ6ICc8bWV0aG9kIHJlZmVyZW5jZT4nLCByZXF1aXJlZDogJ015VGVzdC5JMSciPkkxIGlfNCA9IE15VGVzdDo6XzQ7PC9lcnJvcj4KKworICAgICAgICBJMSBpMSA9IHRoaXM6Ol8xOworICAgICAgICA8ZXJyb3IgZGVzY3I9IkluY29tcGF0aWJsZSB0eXBlcy4gRm91bmQ6ICc8bWV0aG9kIHJlZmVyZW5jZT4nLCByZXF1aXJlZDogJ015VGVzdC5JMSciPkkxIGkyID0gdGhpczo6XzI7PC9lcnJvcj4KKyAgICAgICAgPGVycm9yIGRlc2NyPSJJbmNvbXBhdGlibGUgdHlwZXMuIEZvdW5kOiAnPG1ldGhvZCByZWZlcmVuY2U+JywgcmVxdWlyZWQ6ICdNeVRlc3QuSTEnIj5JMSBpMyA9IHRoaXM6Ol8zOzwvZXJyb3I+CisgICAgICAgIDxlcnJvciBkZXNjcj0iSW5jb21wYXRpYmxlIHR5cGVzLiBGb3VuZDogJzxtZXRob2QgcmVmZXJlbmNlPicsIHJlcXVpcmVkOiAnTXlUZXN0LkkxJyI+STEgaTQgPSB0aGlzOjpfNDs8L2Vycm9yPgorCisgICAgICAgIDxlcnJvciBkZXNjcj0iSW5jb21wYXRpYmxlIHR5cGVzLiBGb3VuZDogJzxtZXRob2QgcmVmZXJlbmNlPicsIHJlcXVpcmVkOiAnTXlUZXN0LkkyJyI+STIgaTIxID0gTXlUZXN0OjptMTs8L2Vycm9yPgorICAgICAgICA8ZXJyb3IgZGVzY3I9IkluY29tcGF0aWJsZSB0eXBlcy4gRm91bmQ6ICc8bWV0aG9kIHJlZmVyZW5jZT4nLCByZXF1aXJlZDogJ015VGVzdC5JMiciPkkyIGkyMiA9IE15VGVzdDo6bTI7PC9lcnJvcj4KKyAgICAgICAgPGVycm9yIGRlc2NyPSJJbmNvbXBhdGlibGUgdHlwZXMuIEZvdW5kOiAnPG1ldGhvZCByZWZlcmVuY2U+JywgcmVxdWlyZWQ6ICdNeVRlc3QuSTInIj5JMiBpMjMgPSBNeVRlc3Q6Om0zOzwvZXJyb3I+CisgICAgICAgIDxlcnJvciBkZXNjcj0iSW5jb21wYXRpYmxlIHR5cGVzLiBGb3VuZDogJzxtZXRob2QgcmVmZXJlbmNlPicsIHJlcXVpcmVkOiAnTXlUZXN0LkkyJyI+STIgaTI0ID0gTXlUZXN0OjptNDs8L2Vycm9yPgorICAgIH0KK30KKworY2xhc3MgTXlUZXN0MiB7CisKKyAgICBpbnRlcmZhY2UgSUJvb2wgeyB2b2lkIG0oYm9vbGVhbltdIGEpOyB9CisgICAgaW50ZXJmYWNlIElJbnQgeyB2b2lkIG0oaW50W10gYSk7IH0KKyAgICBpbnRlcmZhY2UgSURibCB7IHZvaWQgbShkb3VibGVbXSBhKTsgfQorICAgIGludGVyZmFjZSBJT2JqIHsgdm9pZCBtKE9iamVjdFtdIGEpOyB9CisKKyAgICBzdGF0aWMgdm9pZCBmb28oT2JqZWN0Li4uIHZpKSB7fQorCisgICAgc3RhdGljIHsKKyAgICAgICAgSUJvb2wgaUJvb2wgPSBNeVRlc3QyOjpmb287CisgICAgICAgIElJbnQgaUludCA9IE15VGVzdDI6OmZvbzsKKyAgICAgICAgSURibCBpRGJsID0gTXlUZXN0Mjo6Zm9vOworICAgICAgICBJT2JqIGlPYmogPSBNeVRlc3QyOjpmb287CisgICAgfQorfQorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2xhbWJkYS9tZXRob2RSZWYvVmFyYXJnczEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvbGFtYmRhL21ldGhvZFJlZi9WYXJhcmdzMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ3Mjg5OWIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2xhbWJkYS9tZXRob2RSZWYvVmFyYXJnczEuamF2YQpAQCAtMCwwICsxLDIyIEBACitjbGFzcyBUZXN0IHsKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmcuLi4gYXJncykge30KKyAgICB2b2lkIHRlc3QoKSB7CisgICAgICAgIEZvbyBmb28gPSBUZXN0OjptYWluOworICAgIH0KK30KKworaW50ZXJmYWNlIEZvbyB7CisgICAgdm9pZCBiYXIoKTsKK30KKworY2xhc3MgVGVzdDEgeworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZy4uLiBhcmdzKSB7fQorCisgICAgdm9pZCB0ZXN0KCkgeworICAgICAgICBGb28xIGZvbyA9IFRlc3QxOjptYWluOworICAgIH0KK30KKworaW50ZXJmYWNlIEZvbzEgeworICAgIHZvaWQgYmFyKFN0cmluZy4uLiBzKTsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2xhbWJkYS9tZXRob2RSZWYvVmFyYXJnc0luUmVjZWl2ZXJQb3NpdGlvbi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9sYW1iZGEvbWV0aG9kUmVmL1ZhcmFyZ3NJblJlY2VpdmVyUG9zaXRpb24uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNmMxZTNmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9sYW1iZGEvbWV0aG9kUmVmL1ZhcmFyZ3NJblJlY2VpdmVyUG9zaXRpb24uamF2YQpAQCAtMCwwICsxLDI4IEBACitpbXBvcnQgamF2YS51dGlsLio7CisKK2NsYXNzIFRlc3QgeworICAgIHZvaWQgdGVzdCgpIHsKKyAgICAgICAgQ29tcGFyYXRvcjxUZXN0PiByMiA9IFRlc3Q6Onl5eTsKKyAgICAgICAgPGVycm9yIGRlc2NyPSJJbmNvbXBhdGlibGUgdHlwZXMuIEZvdW5kOiAnPG1ldGhvZCByZWZlcmVuY2U+JywgcmVxdWlyZWQ6ICdDb21wYXJhdG9yMTxUZXN0PiciPkNvbXBhcmF0b3IxPFRlc3Q+IGMxID0gVGVzdDo6eXl5OzwvZXJyb3I+CisgICAgICAgIDxlcnJvciBkZXNjcj0iSW5jb21wYXRpYmxlIHR5cGVzLiBGb3VuZDogJzxtZXRob2QgcmVmZXJlbmNlPicsIHJlcXVpcmVkOiAnQ29tcGFyYXRvcjE8VGVzdD4nIj5Db21wYXJhdG9yMTxUZXN0PiBjMiA9IFRlc3Q6Onh4eDs8L2Vycm9yPgorICAgIH0KKyAgICBpbnQgeXl5KFRlc3QuLi4gcCkgeyByZXR1cm4gMTsgfQorICAgIGludCB4eHgoVGVzdCB0KSB7cmV0dXJuIDQyO30KK30KKworaW50ZXJmYWNlIENvbXBhcmF0b3IxPFQ+IHsKKyAgICBpbnQgY29tcGFyZShULi4uIG8xKTsKK30KKworCitjbGFzcyBUZXN0MSB7CisgICAgdm9pZCB0ZXN0KCkgeworICAgICAgICBCYXIyIGJhcjIgPSBUZXN0MTo6eXl5OworICAgIH0KKworICAgIHZvaWQgeXl5KFRlc3QxLi4uIHApIHt9CisKKyAgICBpbnRlcmZhY2UgQmFyMiB7CisgICAgICBwdWJsaWMgdm9pZCB4eHgoVGVzdDEgcCwgVGVzdDEuLi4gcHMpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvbGFtYmRhL21ldGhvZFJlZi9XaWxkY2FyZHMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvbGFtYmRhL21ldGhvZFJlZi9XaWxkY2FyZHMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMGMwOTlmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9sYW1iZGEvbWV0aG9kUmVmL1dpbGRjYXJkcy5qYXZhCkBAIC0wLDAgKzEsMjAgQEAKK2ltcG9ydCBqYXZhLnV0aWwuKjsKKworY2xhc3MgTXlUZXN0MnsKKyAgICB7CisgICAgICAgIENvbXBhcmF0b3I8PyBzdXBlciBTdHJpbmc+IGNvbXBhcmF0b3IgPSBTdHJpbmc6OmNvbXBhcmVUb0lnbm9yZUNhc2U7CisgICAgfQorfQorCitjbGFzcyBUZXN0IHsKKyAgICB2b2lkIHRlc3QoKSB7CisgICAgICAgRm9vMjw/IGV4dGVuZHMgQmFyMj4gZm9vMiA9IEJhcjI6Onh4eDsKKyAgICB9Cit9CisKK2ludGVyZmFjZSBGb28yPFQ+IHsKKyAgICB2b2lkIGJhcihUIGksIFQgaik7Cit9CitpbnRlcmZhY2UgQmFyMiB7CisgICAgcHVibGljIHZvaWQgeHh4KEJhcjIgcCkgZGVmYXVsdCB7fQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9sYW1iZGEvbWV0aG9kUmVmL2ZpbmRVc2FnZXMvQ29uc3RydWN0b3JVc2FnZXMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvbGFtYmRhL21ldGhvZFJlZi9maW5kVXNhZ2VzL0NvbnN0cnVjdG9yVXNhZ2VzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDJlMGYxYwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvbGFtYmRhL21ldGhvZFJlZi9maW5kVXNhZ2VzL0NvbnN0cnVjdG9yVXNhZ2VzLmphdmEKQEAgLTAsMCArMSwxMSBAQAorY2xhc3MgQ29uc3RydWN0b3JVc2FnZXMgeworICBDb25zdHJ1Y3RvclVzYWdlcygpIHsKKyAgfQorCisgIHZvaWQgZm9vKCkgeworICAgIEJsYWhCbGFoPENvbnN0cnVjdG9yVXNhZ2VzPiBibGFoQmxhaCA9IENvbnN0cnVjdG9yVXNhZ2VzOjpuZXc7CisgIH0KK30KK2ludGVyZmFjZSBCbGFoQmxhaDxUPiB7CisgICAgICAgIFQgZm9vKCk7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9sYW1iZGEvcGFyYW1zL0Zvcm1hbFBhcmFtcy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9sYW1iZGEvcGFyYW1zL0Zvcm1hbFBhcmFtcy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI5NmY1NzUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2xhbWJkYS9wYXJhbXMvRm9ybWFsUGFyYW1zLmphdmEKQEAgLTAsMCArMSwzNyBAQAoraW50ZXJmYWNlIEkgeworICB2b2lkIG0oaW50IGkpOworfQorCitjbGFzcyBGb28geworICBJIGlpID0gKEA8ZXJyb3IgZGVzY3I9IidAT3ZlcnJpZGUnIG5vdCBhcHBsaWNhYmxlIHRvIHR5cGUgdXNlIj5PdmVycmlkZTwvZXJyb3I+IGZpbmFsIGludCBrKS0+eworICAgIGludCBqID0gazsKKyAgfTsKKyAgSSBpaTEgPSAoZmluYWwgaW50IGspLT57CisgICAgPGVycm9yIGRlc2NyPSJJbmNvbXBhdGlibGUgdHlwZXMuIEZvdW5kOiAnaW50JywgcmVxdWlyZWQ6ICdqYXZhLmxhbmcuU3RyaW5nJyI+U3RyaW5nIHMgPSBrOzwvZXJyb3I+CisgIH07CisKKyAgdm9pZCBiYXp6KCkgeworICAgIGJhcigoPGVycm9yIGRlc2NyPSJJbmNvbXBhdGlibGUgcGFyYW1ldGVyIHR5cGVzIGluIGxhbWJkYSBleHByZXNzaW9uIj5TdHJpbmcgczwvZXJyb3I+KSAtPiB7CisgICAgICBTeXN0ZW0ub3V0LnByaW50bG4ocyk7fSk7CisgICAgYmFyKChpbnQgaSkgLT4ge1N5c3RlbS5vdXQucHJpbnRsbihpKTt9KTsKKyAgfSAKKyAgdm9pZCBiYXIoSSBpKXt9Cit9CisKK2NsYXNzIFJldHVyblR5cGVDb21wYXRpYmlsaXR5IHsKKworICAgIGludGVyZmFjZSBJMTxMPiB7CisgICAgICAgIEwgbShMIHgpOworICAgIH0KKworICAgIHN0YXRpYyA8UD4gdm9pZCBjYWxsKEkxPFA+IGkyKSB7CisgICAgICAgIGkyLm0obnVsbCk7CisgICAgfQorCisgICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgeworICAgICAgICBjYWxsKChTdHJpbmcgaSktPnsgcmV0dXJuIGk7fSk7CisgICAgICAgIGNhbGwoPGVycm9yIGRlc2NyPSJDeWNsaWMgaW5mZXJlbmNlIj5pLT57IHJldHVybiBpO308L2Vycm9yPik7CisgICAgICAgIGNhbGwoPGVycm9yIGRlc2NyPSJDeWNsaWMgaW5mZXJlbmNlIj5pLT4iIjwvZXJyb3I+KTsKKyAgICAgICAgY2FsbDxlcnJvciBkZXNjcj0iJ2NhbGwoUmV0dXJuVHlwZUNvbXBhdGliaWxpdHkuSTE8amF2YS5sYW5nLkludGVnZXI+KScgaW4gJ1JldHVyblR5cGVDb21wYXRpYmlsaXR5JyBjYW5ub3QgYmUgYXBwbGllZCB0byAnKDxsYW1iZGEgZXhwcmVzc2lvbj4pJyI+KChpbnQgaSktPnsgcmV0dXJuIGk7fSk8L2Vycm9yPjsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9sYW1iZGEvcGFyYW1zL0luY29tcGF0aWJsZVR5cGVzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2xhbWJkYS9wYXJhbXMvSW5jb21wYXRpYmxlVHlwZXMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNTRmNjMyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9sYW1iZGEvcGFyYW1zL0luY29tcGF0aWJsZVR5cGVzLmphdmEKQEAgLTAsMCArMSw3IEBACitjbGFzcyBYWFggeworICBSdW5uYWJsZSBiYXIoKSB7CisgICAgcmV0dXJuIDxlcnJvciBkZXNjcj0iSW5jb21wYXRpYmxlIHBhcmFtZXRlciB0eXBlcyBpbiBsYW1iZGEgZXhwcmVzc2lvbiI+KG8pLT57CisgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oKTsKKyAgICB9PC9lcnJvcj47CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2xhbWJkYS9wYXJhbXMvSW5mZXJyZWRQYXJhbXMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvbGFtYmRhL3BhcmFtcy9JbmZlcnJlZFBhcmFtcy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNiMjJjZjkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2xhbWJkYS9wYXJhbXMvSW5mZXJyZWRQYXJhbXMuamF2YQpAQCAtMCwwICsxLDc0IEBACitpbXBvcnQgamF2YS5sYW5nLkludGVnZXI7CisKK2ludGVyZmFjZSBJIHsKKyAgdm9pZCBtKGludCBpKTsKK30KKworaW50ZXJmYWNlIEE8Qj4geworICB2b2lkIGZvbyhCIGIpOworfQorCitjbGFzcyBGb28geworICBJIGlpID0gKGZpbmFsIDxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdrJyI+azwvZXJyb3I+PGVycm9yIGRlc2NyPSJJZGVudGlmaWVyIGV4cGVjdGVkIj4pPC9lcnJvcj4tPnt9OworICBJIGlpMSA9IChrKS0+eworICAgIGludCBpID0gazsKKyAgICA8ZXJyb3IgZGVzY3I9IkluY29tcGF0aWJsZSB0eXBlcy4gRm91bmQ6ICdpbnQnLCByZXF1aXJlZDogJ2phdmEubGFuZy5TdHJpbmcnIj5TdHJpbmcgcyA9IGs7PC9lcnJvcj4KKyAgfTsKKyAgCisgIEE8U3RyaW5nPiBhID0gKGFiKSAtPiB7CisgICAgU3RyaW5nIHMgPSBhYjsKKyAgICA8ZXJyb3IgZGVzY3I9IkluY29tcGF0aWJsZSB0eXBlcy4gRm91bmQ6ICdqYXZhLmxhbmcuU3RyaW5nJywgcmVxdWlyZWQ6ICdpbnQnIj5pbnQgaSA9IGFiOzwvZXJyb3I+CisgIH07CisKKyAgeworICAgIEE8U3RyaW5nPiBhMTsKKyAgICBhMSA9IChhYiktPnsKKyAgICAgIFN0cmluZyBzID0gYWI7CisgICAgICA8ZXJyb3IgZGVzY3I9IkluY29tcGF0aWJsZSB0eXBlcy4gRm91bmQ6ICdqYXZhLmxhbmcuU3RyaW5nJywgcmVxdWlyZWQ6ICdpbnQnIj5pbnQgaSA9IGFiOzwvZXJyb3I+CisgICAgfTsKKyAgfQorICAKKyAgQTxJbnRlZ2VyPiBiYXp6KCkgeworICAgIGJhcigobykgLT4geworICAgICAgU3RyaW5nIHMgPSBvOworICAgICAgPGVycm9yIGRlc2NyPSJJbmNvbXBhdGlibGUgdHlwZXMuIEZvdW5kOiAnamF2YS5sYW5nLlN0cmluZycsIHJlcXVpcmVkOiAnaW50JyI+aW50IGkgPSBvOzwvZXJyb3I+CisgICAgfSk7CisgICAgcmV0dXJuIChpKSAtPiB7CisgICAgICBJbnRlZ2VyIGsgPSBpOworICAgICAgaW50IG4gPSBpOworICAgICAgPGVycm9yIGRlc2NyPSJJbmNvbXBhdGlibGUgdHlwZXMuIEZvdW5kOiAnamF2YS5sYW5nLkludGVnZXInLCByZXF1aXJlZDogJ2phdmEubGFuZy5TdHJpbmcnIj5TdHJpbmcgcyA9IGk7PC9lcnJvcj4KKyAgICB9OworICB9CisKKyAgdm9pZCBiYXIoQTxTdHJpbmc+IGEpe30KK30KKworY2xhc3MgQ2FzdEluZmVyZW5jZSB7CisgIHB1YmxpYyBpbnRlcmZhY2UgSTE8WD4geworICAgIFggbSgpOworICB9CisgIHB1YmxpYyBpbnRlcmZhY2UgSTI8WD4geworICAgIFggbSgpOworICB9CisgIHB1YmxpYyBzdGF0aWMgPFg+IHZvaWQgZm9vKEkxPFg+IHMpIHt9CisgIHB1YmxpYyBzdGF0aWMgPFg+IHZvaWQgZm9vKEkyPFg+IHMpIHt9CisKKyAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgeworICAgIGZvbygoSTE8SW50ZWdlcj4pKCkgLT4gNDIpOworICAgIEkxPEludGVnZXI+IGkxID0gKEkxPEludGVnZXI+KSgpIC0+IDQyOworICB9Cit9CisKK2NsYXNzIFdpbGRjYXJkQm91bmRzVXNhZ2UgeworICBpbnRlcmZhY2UgSTxYPiB7CisgICAgYm9vbGVhbiBmb28oWCB4KTsKKyAgfQorCisgIHB1YmxpYyBJPENoYXJhY3Rlcj4gYmFyKEk8PyBzdXBlciBDaGFyYWN0ZXI+IHByZWRpY2F0ZSkgeworICAgIHJldHVybiBudWxsOworICB9CisKKyAgeworICAgIEk8Q2hhcmFjdGVyPiBpID0gYmFyKGMgLT4gYy5jb21wYXJlVG8oJ3gnKSA8IDApOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9sYW1iZGEvcGFyYW1zL01ldGhvZEFwcGxpY2FiaWxpdHkuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvbGFtYmRhL3BhcmFtcy9NZXRob2RBcHBsaWNhYmlsaXR5LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2Q4MmM3MQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvbGFtYmRhL3BhcmFtcy9NZXRob2RBcHBsaWNhYmlsaXR5LmphdmEKQEAgLTAsMCArMSw2OCBAQAoraW50ZXJmYWNlIEkgeworICB2b2lkIG0oaW50IGkpOworfQoraW50ZXJmYWNlIEogeworICB2b2lkIG1tKGludCBpLCBpbnQgaik7Cit9CitpbnRlcmZhY2UgSyB7CisgIHZvaWQgayhTdHJpbmcgbSk7Cit9CisKK2NsYXNzIEZvbyB7CisgIHZvaWQgZm9vKEkgaSl7fQorICB2b2lkIGZvbyhKIGope30KKyAgdm9pZCBmb28oSyBrKXt9CisKKyAgdm9pZCBiYXIoKSB7CisgICAgZm9vPGVycm9yIGRlc2NyPSJBbWJpZ3VvdXMgbWV0aG9kIGNhbGw6IGJvdGggJ0Zvby5mb28oSSknIGFuZCAnRm9vLmZvbyhLKScgbWF0Y2giPigocCkgLT4geworICAgICAgU3lzdGVtLm91dC5wcmludGxuPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBtZXRob2QgJ3ByaW50bG4oPGxhbWJkYSBwYXJhbWV0ZXI+KSciPihwKTwvZXJyb3I+OworICAgIH0pPC9lcnJvcj47CisKKyAgICBmb28oKHAsIGspIC0+IHsKKyAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihwKTsKKyAgICB9KTsKKworICAgIGZvbygoU3RyaW5nIHMpIC0+eworICAgICAgU3lzdGVtLm91dC5wcmludGxuKHMpOworICAgIH0pOworCisgICAgPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBtZXRob2QgJ2Zvbyg8bGFtYmRhIGV4cHJlc3Npb24+KSciPmZvbzwvZXJyb3I+KChTdHJpbmcgcCwgU3RyaW5nIGspIC0+IHsKKyAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihwKTsKKyAgICB9KTsKKyAgfQorfQorCitjbGFzcyBXaXRoVHlwZVBhcmFtcyB7CisgIGludGVyZmFjZSBJPFQ+IHsKKyAgICB2b2lkIG0oVCB0KTsKKyAgfQorCisgIGludGVyZmFjZSBKPEssIFY+IHsKKyAgICB2b2lkIG4oSyBrLCBWIHYpOworICB9CisKKyAgY2xhc3MgRm9vIHsKKyAgICB2b2lkIGZvbyhJPFN0cmluZz4gaSl7fQorICAgIHZvaWQgZm9vKEo8U3RyaW5nLCBTdHJpbmc+IGope30KKyAgICAKKyAgICB2b2lkIGJhcigpIHsKKyAgICAgIGZvbygocCkgLT4geworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4ocCk7CisgICAgICB9KTsKKyAgCisgICAgICBmb28oKHAsIGspIC0+IHsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKHApOworICAgICAgfSk7CisgIAorICAgICAgZm9vKChTdHJpbmcgcykgLT57CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihzKTsKKyAgICAgIH0pOworICAKKyAgICAgIGZvbygoU3RyaW5nIHAsIFN0cmluZyBrKSAtPiB7CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihwKTsKKyAgICAgIH0pOworICAKKyAgICAgIDxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgbWV0aG9kICdmb28oPGxhbWJkYSBleHByZXNzaW9uPiknIj5mb288L2Vycm9yPigoaW50IGspIC0+IHtTeXN0ZW0ub3V0LnByaW50bG4oayk7fSk7CisgICAgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9sYW1iZGEvcGFyYW1zL1Jhdy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9sYW1iZGEvcGFyYW1zL1Jhdy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU5OTc0N2YKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2xhbWJkYS9wYXJhbXMvUmF3LmphdmEKQEAgLTAsMCArMSw3IEBACitjbGFzcyBUZXN0IHsKKyAgeworICAgIDxlcnJvciBkZXNjcj0iSW5jb21wYXRpYmxlIHR5cGVzLiBGb3VuZDogJzxsYW1iZGEgZXhwcmVzc2lvbj4nLCByZXF1aXJlZDogJ2phdmEubGFuZy5Db21wYXJhYmxlJyI+Q29tcGFyYWJsZSBjID0gKFN0cmluZyBvKS0+eworICAgICAgcmV0dXJuIDA7CisgICAgfTs8L2Vycm9yPgorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9sb3NzeUVuY29kaW5nL011bHRpcGxlUmFuZ2VzLnhtbCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvbG9zc3lFbmNvZGluZy9NdWx0aXBsZVJhbmdlcy54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTZhYzc4OAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvbG9zc3lFbmNvZGluZy9NdWx0aXBsZVJhbmdlcy54bWwKQEAgLTAsMCArMSw1IEBACis8P3htbCBlbmNvZGluZz0iPGNhcmV0PjxzZWxlY3Rpb24+dXRmLTg8L3NlbGVjdGlvbj4iID8+Cis8eG1sPgorICA8d2FybmluZyBkZXNjcj0iVW5zdXBwb3J0ZWQgY2hhcmFjdGVycyBmb3IgdGhlIGNoYXJzZXQgJ1VTLUFTQ0lJJyI+0LDQsdCy0LM8L3dhcm5pbmc+IDEzMjcyNjQzNTEyNworICA8d2FybmluZyBkZXNjcj0iVW5zdXBwb3J0ZWQgY2hhcmFjdGVycyBmb3IgdGhlIGNoYXJzZXQgJ1VTLUFTQ0lJJyI+0YTQuNCz0L3Rjzwvd2FybmluZz4KKzwveG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvbG9zc3lFbmNvZGluZy9OYXRpdmVFbmNvZGluZy5wcm9wZXJ0aWVzIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9sb3NzeUVuY29kaW5nL05hdGl2ZUVuY29kaW5nLnByb3BlcnRpZXMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODBlZTA4MAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvbG9zc3lFbmNvZGluZy9OYXRpdmVFbmNvZGluZy5wcm9wZXJ0aWVzCkBAIC0wLDAgKzEsMTQgQEAKKyMgd29ya3Mgd2l0aCBJREVBIDkuMAorZm9vPWJhciBcInswfVwiCitsb25nbGluZT1hYmMgZGVmIGdoaWFiYyBkZWYgZ2hpYWJjIGRlZiBnaGlhYmMgZGVmIGdoaWFiYyBkZWYgZ2hpYWJjIFwKKyAgZGVmIGdoaWFiYyBkZWYgZ2hpYWJjIGRlZiBnaGlcCisgIGFiYyBkZWYgZ2hpCisKKyMgV2FybmluZ3MgIlVuc3VwcG9ydGVkIGNoYXJhY3RlcnMgZm9yIGNoYXJzZXQgJ1VTLUFTQ0lJJyBpbiBJREVBIDkuMAorIyB3aXRoIGVzY2FwZWQgYW5kIHRyYW5zcGFyZW50bHkgY29udmVydGVkIG5vbi1BU0NJSSBjaGFyYWN0ZXJzOgorCisjIGtleSB3aXRoIG5vbi1BU0NJSSBjaGFyYWN0ZXJzICh5ZXMsIG5vdCBiZWF1dGlmdWwgOikKK1x1MDBlNFx1MDBmNlx1MDBmYz1hc2MKKworIyB2YWx1ZSB3aXRoIG5vbi1BU0NJSSBjaGFyYWN0ZXJzCitiYXI9XHUwMGU0XHUwMGY2XHUwMGZjCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2xvc3N5RW5jb2RpbmcvU2ltcGxlLnhtbCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvbG9zc3lFbmNvZGluZy9TaW1wbGUueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ0MTlmMDQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL2xvc3N5RW5jb2RpbmcvU2ltcGxlLnhtbApAQCAtMCwwICsxLDUgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IjxzZWxlY3Rpb24+VVRGLTg8L3NlbGVjdGlvbj48Y2FyZXQ+Ij8+Cis8eD4KKyAgINGF0LjRhdC4Cis8L3g+CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvbG9zc3lFbmNvZGluZy9UZXh0LnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvbG9zc3lFbmNvZGluZy9UZXh0LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZjdiN2MyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9sb3NzeUVuY29kaW5nL1RleHQudHh0CkBAIC0wLDAgKzEgQEAKK2FiY2Q8Y2FyZXQ+CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2FjY2Vzc1N0YXRpY1ZpYUluc3RhbmNlL2FmdGVyMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hY2Nlc3NTdGF0aWNWaWFJbnN0YW5jZS9hZnRlcjEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMWI5Zjk5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hY2Nlc3NTdGF0aWNWaWFJbnN0YW5jZS9hZnRlcjEuamF2YQpAQCAtMCwwICsxLDE2IEBACisvLyAiQWNjZXNzIHN0YXRpYyAnQUNsYXNzLmZmZicgdmlhIGNsYXNzICdBQ2xhc3MnIHJlZmVyZW5jZSIgInRydWUiCisKK2NsYXNzIEFDbGFzcworeworICAgIEFDbGFzcyBnZXRBKCkgeworICAgICAgICByZXR1cm4gbnVsbDsKKyAgICB9CisgICAgc3RhdGljIGludCBmZmY7Cit9CisKK2NsYXNzIGFjYyB7CisgaW50IGYoKSB7CisgICBBQ2xhc3MgYSA9IG51bGw7CisgICByZXR1cm4gPGNhcmV0PkFDbGFzcy5mZmY7CisgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYWNjZXNzU3RhdGljVmlhSW5zdGFuY2UvYWZ0ZXIyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2FjY2Vzc1N0YXRpY1ZpYUluc3RhbmNlL2FmdGVyMi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYwMzhiMjgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2FjY2Vzc1N0YXRpY1ZpYUluc3RhbmNlL2FmdGVyMi5qYXZhCkBAIC0wLDAgKzEsMTIgQEAKKy8vICJBY2Nlc3Mgc3RhdGljICdBQ2xhc3MuZmZmJyB2aWEgY2xhc3MgJ0FDbGFzcycgcmVmZXJlbmNlIiAidHJ1ZSIKKworY2xhc3MgQUNsYXNzCit7CisgICAgQUNsYXNzIGdldEEoKSB7CisgICAgICAgIGludCBpID0gPGNhcmV0PmZmZjsKKyAgICAgICAgcmV0dXJuIG51bGw7CisKKyAgICB9CisgICAgc3RhdGljIGludCBmZmY7Cit9CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYWNjZXNzU3RhdGljVmlhSW5zdGFuY2UvYWZ0ZXIzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2FjY2Vzc1N0YXRpY1ZpYUluc3RhbmNlL2FmdGVyMy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI2NTNkMmIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2FjY2Vzc1N0YXRpY1ZpYUluc3RhbmNlL2FmdGVyMy5qYXZhCkBAIC0wLDAgKzEsMTcgQEAKKy8vICJBY2Nlc3Mgc3RhdGljICdBQ2xhc3MuZ2V0QSgpJyB2aWEgY2xhc3MgJ0FDbGFzcycgcmVmZXJlbmNlIiAidHJ1ZSIKKworY2xhc3MgQUNsYXNzCit7CisgICAgc3RhdGljIEFDbGFzcyBnZXRBKCkgeworICAgICAgICByZXR1cm4gbnVsbDsKKyAgICB9CisgICAgc3RhdGljIGludCBmZmY7Cit9CisKK2NsYXNzIGFjYyB7CisgaW50IGYoKSB7CisgICBBQ2xhc3MgYSA9IG51bGw7CisgICA8Y2FyZXQ+QUNsYXNzLmdldEEoKTsKKyAgIHJldHVybiAwOworIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2FjY2Vzc1N0YXRpY1ZpYUluc3RhbmNlL2FmdGVyNS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hY2Nlc3NTdGF0aWNWaWFJbnN0YW5jZS9hZnRlcjUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMjEyNzUyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hY2Nlc3NTdGF0aWNWaWFJbnN0YW5jZS9hZnRlcjUuamF2YQpAQCAtMCwwICsxLDggQEAKKy8vICJBY2Nlc3Mgc3RhdGljICdBQ2xhc3Muc3RhdCcgdmlhIGNsYXNzICdBQ2xhc3MnIHJlZmVyZW5jZSIgInRydWUiCisKK2NsYXNzIEFDbGFzcyB7CisgICAgc3RhdGljIGJvb2xlYW4gc3RhdDsKKyAgICB2b2lkIGZvbyAoYm9vbGVhbiBzdGF0KSB7CisgICAgICAgIEFDbGFzcy5zdGF0PGNhcmV0PiA9IHN0YXQ7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYWNjZXNzU3RhdGljVmlhSW5zdGFuY2UvYWZ0ZXI2LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2FjY2Vzc1N0YXRpY1ZpYUluc3RhbmNlL2FmdGVyNi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZhYTkyYWMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2FjY2Vzc1N0YXRpY1ZpYUluc3RhbmNlL2FmdGVyNi5qYXZhCkBAIC0wLDAgKzEsMTcgQEAKKy8vICJBY2Nlc3Mgc3RhdGljICdBQ2xhc3MuUi5ycicgdmlhIGNsYXNzICdSJyByZWZlcmVuY2UiICJ0cnVlIgorCitjbGFzcyBBQ2xhc3MKK3sKKyAgICBwdWJsaWMgc3RhdGljIGNsYXNzIFIgeworICAgICAgICBzdGF0aWMgaW50IHJyID0gMDsKKyAgICB9CisgICAgcHVibGljIFIgZ2V0UigpIHsKKyAgICAgICAgcmV0dXJuIG51bGw7CisgICAgfQorfQorY2xhc3Mgc3MgeworICAgIHZvaWQgZihBQ2xhc3MgZCl7CisgICAgICAgIGludCBpID0gPGNhcmV0PkFDbGFzcy5SLnJyOworICAgIH0KKworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hY2Nlc3NTdGF0aWNWaWFJbnN0YW5jZS9iZWZvcmUxLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2FjY2Vzc1N0YXRpY1ZpYUluc3RhbmNlL2JlZm9yZTEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MjViZTI5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hY2Nlc3NTdGF0aWNWaWFJbnN0YW5jZS9iZWZvcmUxLmphdmEKQEAgLTAsMCArMSwxNiBAQAorLy8gIkFjY2VzcyBzdGF0aWMgJ0FDbGFzcy5mZmYnIHZpYSBjbGFzcyAnQUNsYXNzJyByZWZlcmVuY2UiICJ0cnVlIgorCitjbGFzcyBBQ2xhc3MKK3sKKyAgICBBQ2xhc3MgZ2V0QSgpIHsKKyAgICAgICAgcmV0dXJuIG51bGw7CisgICAgfQorICAgIHN0YXRpYyBpbnQgZmZmOworfQorCitjbGFzcyBhY2MgeworIGludCBmKCkgeworICAgQUNsYXNzIGEgPSBudWxsOworICAgcmV0dXJuIDxjYXJldD5hLmdldEEoKS5mZmY7CisgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYWNjZXNzU3RhdGljVmlhSW5zdGFuY2UvYmVmb3JlMi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hY2Nlc3NTdGF0aWNWaWFJbnN0YW5jZS9iZWZvcmUyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWM2NTc4NQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYWNjZXNzU3RhdGljVmlhSW5zdGFuY2UvYmVmb3JlMi5qYXZhCkBAIC0wLDAgKzEsMTIgQEAKKy8vICJBY2Nlc3Mgc3RhdGljICdBQ2xhc3MuZmZmJyB2aWEgY2xhc3MgJ0FDbGFzcycgcmVmZXJlbmNlIiAidHJ1ZSIKKworY2xhc3MgQUNsYXNzCit7CisgICAgQUNsYXNzIGdldEEoKSB7CisgICAgICAgIGludCBpID0gPGNhcmV0PnRoaXMuZmZmOworICAgICAgICByZXR1cm4gbnVsbDsKKworICAgIH0KKyAgICBzdGF0aWMgaW50IGZmZjsKK30KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hY2Nlc3NTdGF0aWNWaWFJbnN0YW5jZS9iZWZvcmUzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2FjY2Vzc1N0YXRpY1ZpYUluc3RhbmNlL2JlZm9yZTMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZTZjODk0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hY2Nlc3NTdGF0aWNWaWFJbnN0YW5jZS9iZWZvcmUzLmphdmEKQEAgLTAsMCArMSwxNyBAQAorLy8gIkFjY2VzcyBzdGF0aWMgJ0FDbGFzcy5nZXRBKCknIHZpYSBjbGFzcyAnQUNsYXNzJyByZWZlcmVuY2UiICJ0cnVlIgorCitjbGFzcyBBQ2xhc3MKK3sKKyAgICBzdGF0aWMgQUNsYXNzIGdldEEoKSB7CisgICAgICAgIHJldHVybiBudWxsOworICAgIH0KKyAgICBzdGF0aWMgaW50IGZmZjsKK30KKworY2xhc3MgYWNjIHsKKyBpbnQgZigpIHsKKyAgIEFDbGFzcyBhID0gbnVsbDsKKyAgIDxjYXJldD5hLmdldEEoKTsKKyAgIHJldHVybiAwOworIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2FjY2Vzc1N0YXRpY1ZpYUluc3RhbmNlL2JlZm9yZTQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYWNjZXNzU3RhdGljVmlhSW5zdGFuY2UvYmVmb3JlNC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM1ZThlOGRhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hY2Nlc3NTdGF0aWNWaWFJbnN0YW5jZS9iZWZvcmU0LmphdmEKQEAgLTAsMCArMSwxOCBAQAorLy8gIkFjY2VzcyBzdGF0aWMgJ0FDbGFzcy5SLnJyJyB2aWEgY2xhc3MgJ0FDbGFzcy5SJyByZWZlcmVuY2UiICJmYWxzZSIKKworY2xhc3MgQUNsYXNzCit7CisgICAgcHJpdmF0ZSBzdGF0aWMgY2xhc3MgUiB7CisgICAgICAgIHN0YXRpYyBpbnQgcnIgPSAwOworICAgIH0KKyAgICBwdWJsaWMgUiBnZXRSKCkgeworICAgICAgICByZXR1cm4gbnVsbDsKKyAgICB9Cit9CisvLyBBQ2xhc3MuUiBpcyBub3QgYWNjZXNzaWJsZSB0aGVyZQorY2xhc3Mgc3MgeworICAgIHZvaWQgZihBQ2xhc3MgZCl7CisgICAgICAgIGludCBpID0gPGNhcmV0PmQuZ2V0UigpLnJyOworICAgIH0KKworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hY2Nlc3NTdGF0aWNWaWFJbnN0YW5jZS9iZWZvcmU1LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2FjY2Vzc1N0YXRpY1ZpYUluc3RhbmNlL2JlZm9yZTUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YmE1M2RmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hY2Nlc3NTdGF0aWNWaWFJbnN0YW5jZS9iZWZvcmU1LmphdmEKQEAgLTAsMCArMSw4IEBACisvLyAiQWNjZXNzIHN0YXRpYyAnQUNsYXNzLnN0YXQnIHZpYSBjbGFzcyAnQUNsYXNzJyByZWZlcmVuY2UiICJ0cnVlIgorCitjbGFzcyBBQ2xhc3MgeworICAgIHN0YXRpYyBib29sZWFuIHN0YXQ7CisgICAgdm9pZCBmb28gKGJvb2xlYW4gc3RhdCkgeworICAgICAgICB0aGlzLnN0YXQ8Y2FyZXQ+ID0gc3RhdDsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hY2Nlc3NTdGF0aWNWaWFJbnN0YW5jZS9iZWZvcmU2LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2FjY2Vzc1N0YXRpY1ZpYUluc3RhbmNlL2JlZm9yZTYuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43OGYzYmM0NwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYWNjZXNzU3RhdGljVmlhSW5zdGFuY2UvYmVmb3JlNi5qYXZhCkBAIC0wLDAgKzEsMTcgQEAKKy8vICJBY2Nlc3Mgc3RhdGljICdBQ2xhc3MuUi5ycicgdmlhIGNsYXNzICdSJyByZWZlcmVuY2UiICJ0cnVlIgorCitjbGFzcyBBQ2xhc3MKK3sKKyAgICBwdWJsaWMgc3RhdGljIGNsYXNzIFIgeworICAgICAgICBzdGF0aWMgaW50IHJyID0gMDsKKyAgICB9CisgICAgcHVibGljIFIgZ2V0UigpIHsKKyAgICAgICAgcmV0dXJuIG51bGw7CisgICAgfQorfQorY2xhc3Mgc3MgeworICAgIHZvaWQgZihBQ2xhc3MgZCl7CisgICAgICAgIGludCBpID0gPGNhcmV0PmQuZ2V0UigpLnJyOworICAgIH0KKworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hZGRDYXRjaEJsb2NrL2FmdGVyMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hZGRDYXRjaEJsb2NrL2FmdGVyMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVmOGUwZDMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2FkZENhdGNoQmxvY2svYWZ0ZXIxLmphdmEKQEAgLTAsMCArMSwxMyBAQAorLy8gIkFkZCBDYXRjaCBDbGF1c2UocykiICJ0cnVlIgorY2xhc3MgYSB7CisgICAgdm9pZCBnKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgfQorICAgIHZvaWQgZigpIHsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGcoKTsKKyAgICAgICAgfSBjYXRjaCAoRXJyb3IgZSkgeworICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgPGNhcmV0PjxzZWxlY3Rpb24+ZS5wcmludFN0YWNrVHJhY2UoKTsgIC8vVG8gY2hhbmdlIGJvZHkgb2YgY2F0Y2ggc3RhdGVtZW50IHVzZSBGaWxlIHwgU2V0dGluZ3MgfCBGaWxlIFRlbXBsYXRlcy48L3NlbGVjdGlvbj4KKyAgICAgICAgfQorICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYWRkQ2F0Y2hCbG9jay9hZnRlcjMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYWRkQ2F0Y2hCbG9jay9hZnRlcjMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMDg0NTNiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hZGRDYXRjaEJsb2NrL2FmdGVyMy5qYXZhCkBAIC0wLDAgKzEsMTYgQEAKKy8vICJBZGQgQ2F0Y2ggQ2xhdXNlKHMpIiAidHJ1ZSIKK2NsYXNzIGEgeworICAgIHZvaWQgZygpIHRocm93cyBFeGNlcHRpb24geworICAgIH0KKworICAgIC8vIGluaXRpYWxpemVyCisgICAgeworICAgICAgICB0cnkgeworICAgICAgICAgICAgLy8gY29tbWVudCBiZWZvcmUKKyAgICAgICAgICAgIGcoKTsKKyAgICAgICAgICAgIC8vIGNvbW1lbnQgYWZ0ZXIKKyAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIDxjYXJldD48c2VsZWN0aW9uPmUucHJpbnRTdGFja1RyYWNlKCk7ICAvL1RvIGNoYW5nZSBib2R5IG9mIGNhdGNoIHN0YXRlbWVudCB1c2UgRmlsZSB8IFNldHRpbmdzIHwgRmlsZSBUZW1wbGF0ZXMuPC9zZWxlY3Rpb24+CisgICAgICAgIH0KKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2FkZENhdGNoQmxvY2svYWZ0ZXI0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2FkZENhdGNoQmxvY2svYWZ0ZXI0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjU4NjRjNAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYWRkQ2F0Y2hCbG9jay9hZnRlcjQuamF2YQpAQCAtMCwwICsxLDE2IEBACisvLyAiQWRkIENhdGNoIENsYXVzZShzKSIgInRydWUiCitjbGFzcyBNeUV4Y2VwdGlvbjEgZXh0ZW5kcyBFeGNlcHRpb24ge30KK2NsYXNzIE15RXhjZXB0aW9uMiBleHRlbmRzIEV4Y2VwdGlvbiB7fQorCitjbGFzcyBUZXN0IHsKKyAgdm9pZCBmb28gKCkgdGhyb3dzIE15RXhjZXB0aW9uMSwgTXlFeGNlcHRpb24yIHt9CisKKyAgdm9pZCBiYXIgKCkgeworICAgIHRyeSB7CisgICAgICBmb28oKTsKKyAgICB9IGNhdGNoIChNeUV4Y2VwdGlvbjEgZSkgeworICAgIH0gY2F0Y2ggKE15RXhjZXB0aW9uMiBteUV4Y2VwdGlvbjIpIHsKKyAgICAgICAgPGNhcmV0PjxzZWxlY3Rpb24+bXlFeGNlcHRpb24yLnByaW50U3RhY2tUcmFjZSgpOyAgLy9UbyBjaGFuZ2UgYm9keSBvZiBjYXRjaCBzdGF0ZW1lbnQgdXNlIEZpbGUgfCBTZXR0aW5ncyB8IEZpbGUgVGVtcGxhdGVzLjwvc2VsZWN0aW9uPgorICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYWRkQ2F0Y2hCbG9jay9hZnRlcjUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYWRkQ2F0Y2hCbG9jay9hZnRlcjUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNTlhYTFjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hZGRDYXRjaEJsb2NrL2FmdGVyNS5qYXZhCkBAIC0wLDAgKzEsMTUgQEAKKy8vICJBZGQgQ2F0Y2ggQ2xhdXNlKHMpIiAidHJ1ZSIKK2ltcG9ydCBqYXZhLmlvLklPRXhjZXB0aW9uOworCitjbGFzcyBUZXN0IHsKKyAgICBzdGF0aWMgY2xhc3MgTXlSZXNvdXJjZSBpbXBsZW1lbnRzIEF1dG9DbG9zZWFibGUgeworICAgICAgICBwdWJsaWMgdm9pZCBjbG9zZSgpIHRocm93cyBJT0V4Y2VwdGlvbiB7IH0KKyAgICB9CisKKyAgICB2b2lkIG0oKSB7CisgICAgICAgIHRyeSAoTXlSZXNvdXJjZSByID0gbmV3IE15UmVzb3VyY2UoKSkgeworICAgICAgICB9IGNhdGNoIChJT0V4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICA8c2VsZWN0aW9uPmUucHJpbnRTdGFja1RyYWNlKCk7ICAvL1RvIGNoYW5nZSBib2R5IG9mIGNhdGNoIHN0YXRlbWVudCB1c2UgRmlsZSB8IFNldHRpbmdzIHwgRmlsZSBUZW1wbGF0ZXMuPC9zZWxlY3Rpb24+CisgICAgICAgIH0KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hZGRDYXRjaEJsb2NrL2FmdGVyNi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hZGRDYXRjaEJsb2NrL2FmdGVyNi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdhNGE4YWQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2FkZENhdGNoQmxvY2svYWZ0ZXI2LmphdmEKQEAgLTAsMCArMSwxOSBAQAorLy8gIkFkZCBDYXRjaCBDbGF1c2UocykiICJ0cnVlIgorY2xhc3MgVGVzdCB7CisgICAgc3RhdGljIGNsYXNzIEUxIGV4dGVuZHMgRXhjZXB0aW9uIHsgfQorICAgIHN0YXRpYyBjbGFzcyBFMiBleHRlbmRzIEV4Y2VwdGlvbiB7IH0KKworICAgIHN0YXRpYyBjbGFzcyBNeVJlc291cmNlIGltcGxlbWVudHMgQXV0b0Nsb3NlYWJsZSB7CisgICAgICAgIHB1YmxpYyB2b2lkIGRvU29tZXRoaW5nKCkgdGhyb3dzIEUxIHsgfQorICAgICAgICBwdWJsaWMgdm9pZCBjbG9zZSgpIHRocm93cyBFMiB7IH0KKyAgICB9CisKKyAgICB2b2lkIG0oKSB7CisgICAgICAgIHRyeSAoTXlSZXNvdXJjZSByID0gbmV3IE15UmVzb3VyY2UoKSkgeworICAgICAgICAgICAgci5kb1NvbWV0aGluZygpOworICAgICAgICB9IGNhdGNoIChFMSBpZ25vcmUpIHsKKyAgICAgICAgfSBjYXRjaCAoRTIgZTIpIHsKKyAgICAgICAgICAgIDxzZWxlY3Rpb24+ZTIucHJpbnRTdGFja1RyYWNlKCk7ICAvL1RvIGNoYW5nZSBib2R5IG9mIGNhdGNoIHN0YXRlbWVudCB1c2UgRmlsZSB8IFNldHRpbmdzIHwgRmlsZSBUZW1wbGF0ZXMuPC9zZWxlY3Rpb24+CisgICAgICAgIH0KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hZGRDYXRjaEJsb2NrL2FmdGVyNy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hZGRDYXRjaEJsb2NrL2FmdGVyNy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMyOGJhYTYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2FkZENhdGNoQmxvY2svYWZ0ZXI3LmphdmEKQEAgLTAsMCArMSwxOSBAQAorLy8gIkFkZCBDYXRjaCBDbGF1c2UocykiICJ0cnVlIgorY2xhc3MgVGVzdCB7CisgICAgc3RhdGljIGNsYXNzIEUxIGV4dGVuZHMgRXhjZXB0aW9uIHsgfQorICAgIHN0YXRpYyBjbGFzcyBFMiBleHRlbmRzIEV4Y2VwdGlvbiB7IH0KKworICAgIHN0YXRpYyBjbGFzcyBNeVJlc291cmNlIGltcGxlbWVudHMgQXV0b0Nsb3NlYWJsZSB7CisgICAgICAgIHB1YmxpYyBNeVJlc291cmNlKCkgdGhyb3dzIEUxIHsgfQorICAgICAgICBwdWJsaWMgdm9pZCBjbG9zZSgpIHRocm93cyBFMiB7IH0KKyAgICB9CisKKyAgICB2b2lkIG0oKSB7CisgICAgICAgIHRyeSAoTXlSZXNvdXJjZSByID0gbmV3IE15UmVzb3VyY2UoKSkgeworICAgICAgICB9IGNhdGNoIChFMiBlMikgeworICAgICAgICAgICAgPHNlbGVjdGlvbj5lMi5wcmludFN0YWNrVHJhY2UoKTsgIC8vVG8gY2hhbmdlIGJvZHkgb2YgY2F0Y2ggc3RhdGVtZW50IHVzZSBGaWxlIHwgU2V0dGluZ3MgfCBGaWxlIFRlbXBsYXRlcy48L3NlbGVjdGlvbj4KKyAgICAgICAgfSBjYXRjaCAoRTEgZTEpIHsKKyAgICAgICAgICAgIGUxLnByaW50U3RhY2tUcmFjZSgpOyAgLy9UbyBjaGFuZ2UgYm9keSBvZiBjYXRjaCBzdGF0ZW1lbnQgdXNlIEZpbGUgfCBTZXR0aW5ncyB8IEZpbGUgVGVtcGxhdGVzLgorICAgICAgICB9CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYWRkQ2F0Y2hCbG9jay9hZnRlckhpZXJhcmNoeS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hZGRDYXRjaEJsb2NrL2FmdGVySGllcmFyY2h5LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmMwZDYzZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYWRkQ2F0Y2hCbG9jay9hZnRlckhpZXJhcmNoeS5qYXZhCkBAIC0wLDAgKzEsMjAgQEAKK2ltcG9ydCBqYXZhLmlvLkZpbGVOb3RGb3VuZEV4Y2VwdGlvbjsKK2ltcG9ydCBqYXZhLmlvLklPRXhjZXB0aW9uOworCisvLyAiQWRkIENhdGNoIENsYXVzZShzKSIgInRydWUiCitjbGFzcyBDYXRjaEV4Y2VwdGlvbnMgeworCisJdm9pZCBmb28oKSB0aHJvd3MgamF2YS5pby5JT0V4Y2VwdGlvbiwgamF2YS5pby5GaWxlTm90Rm91bmRFeGNlcHRpb24geworCisJfQorCisJdm9pZCBiYXIoKSB7CisJCXRyeSB7CisJCWZvbygpOworCQl9IGNhdGNoIChGaWxlTm90Rm91bmRFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgPHNlbGVjdGlvbj5lLnByaW50U3RhY2tUcmFjZSgpOyAgLy9UbyBjaGFuZ2UgYm9keSBvZiBjYXRjaCBzdGF0ZW1lbnQgdXNlIEZpbGUgfCBTZXR0aW5ncyB8IEZpbGUgVGVtcGxhdGVzLjwvc2VsZWN0aW9uPgorICAgICAgICB9IGNhdGNoIChJT0V4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICBlLnByaW50U3RhY2tUcmFjZSgpOyAgLy9UbyBjaGFuZ2UgYm9keSBvZiBjYXRjaCBzdGF0ZW1lbnQgdXNlIEZpbGUgfCBTZXR0aW5ncyB8IEZpbGUgVGVtcGxhdGVzLgorICAgICAgICB9CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYWRkQ2F0Y2hCbG9jay9iZWZvcmUxLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2FkZENhdGNoQmxvY2svYmVmb3JlMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRiNzZmM2YKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2FkZENhdGNoQmxvY2svYmVmb3JlMS5qYXZhCkBAIC0wLDAgKzEsMTEgQEAKKy8vICJBZGQgQ2F0Y2ggQ2xhdXNlKHMpIiAidHJ1ZSIKK2NsYXNzIGEgeworICAgIHZvaWQgZygpIHRocm93cyBFeGNlcHRpb24geworICAgIH0KKyAgICB2b2lkIGYoKSB7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICA8Y2FyZXQ+ZygpOworICAgICAgICB9IGNhdGNoIChFcnJvciBlKSB7CisgICAgICAgIH0KKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2FkZENhdGNoQmxvY2svYmVmb3JlMi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hZGRDYXRjaEJsb2NrL2JlZm9yZTIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYTNmMzMwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hZGRDYXRjaEJsb2NrL2JlZm9yZTIuamF2YQpAQCAtMCwwICsxLDIwIEBACisvLyAiQWRkIENhdGNoIENsYXVzZShzKSIgImZhbHNlIgorLy8gc2hvdWxkIG5vdCB0cnkgdG8gYWRkIGNhdGNoIGNsYXVzZXMgYWNyb3NzIG1ldGhvZCBib3VuZGFyaWVzCitjbGFzcyBzIHsKKyAgICBpbnQgZigpIHRocm93cyBFeGNlcHRpb24geworICAgICAgICBSdW5uYWJsZSBydW5uYWJsZSA9IG5ldyBSdW5uYWJsZSgpIHsKKyAgICAgICAgICAgIHB1YmxpYyB2b2lkIHJ1bigpIHsKKyAgICAgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgICAgICBSdW5uYWJsZSBydW5uYWJsZSA9IG5ldyBSdW5uYWJsZSgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyB2b2lkIHJ1bigpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2FyZXQ+aW50IGkgPSBmKCk7Ly8KKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorfQorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2FkZENhdGNoQmxvY2svYmVmb3JlMy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hZGRDYXRjaEJsb2NrL2JlZm9yZTMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNzhiYjdkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hZGRDYXRjaEJsb2NrL2JlZm9yZTMuamF2YQpAQCAtMCwwICsxLDE0IEBACisvLyAiQWRkIENhdGNoIENsYXVzZShzKSIgInRydWUiCitjbGFzcyBhIHsKKyAgICB2b2lkIGcoKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICB9CisKKyAgICAvLyBpbml0aWFsaXplcgorICAgIHsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIC8vIGNvbW1lbnQgYmVmb3JlCisgICAgICAgICAgICA8Y2FyZXQ+ZygpOworICAgICAgICAgICAgLy8gY29tbWVudCBhZnRlcgorICAgICAgICB9CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hZGRDYXRjaEJsb2NrL2JlZm9yZTQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYWRkQ2F0Y2hCbG9jay9iZWZvcmU0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2NiOWJhYjkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2FkZENhdGNoQmxvY2svYmVmb3JlNC5qYXZhCkBAIC0wLDAgKzEsMTQgQEAKKy8vICJBZGQgQ2F0Y2ggQ2xhdXNlKHMpIiAidHJ1ZSIKK2NsYXNzIE15RXhjZXB0aW9uMSBleHRlbmRzIEV4Y2VwdGlvbiB7fQorY2xhc3MgTXlFeGNlcHRpb24yIGV4dGVuZHMgRXhjZXB0aW9uIHt9CisKK2NsYXNzIFRlc3QgeworICB2b2lkIGZvbyAoKSB0aHJvd3MgTXlFeGNlcHRpb24xLCBNeUV4Y2VwdGlvbjIge30KKworICB2b2lkIGJhciAoKSB7CisgICAgdHJ5IHsKKyAgICAgIDxjYXJldD5mb28oKTsKKyAgICB9IGNhdGNoIChNeUV4Y2VwdGlvbjEgZSkgeworICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYWRkQ2F0Y2hCbG9jay9iZWZvcmU1LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2FkZENhdGNoQmxvY2svYmVmb3JlNS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgwOTU4YjYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2FkZENhdGNoQmxvY2svYmVmb3JlNS5qYXZhCkBAIC0wLDAgKzEsMTMgQEAKKy8vICJBZGQgQ2F0Y2ggQ2xhdXNlKHMpIiAidHJ1ZSIKK2ltcG9ydCBqYXZhLmlvLklPRXhjZXB0aW9uOworCitjbGFzcyBUZXN0IHsKKyAgICBzdGF0aWMgY2xhc3MgTXlSZXNvdXJjZSBpbXBsZW1lbnRzIEF1dG9DbG9zZWFibGUgeworICAgICAgICBwdWJsaWMgdm9pZCBjbG9zZSgpIHRocm93cyBJT0V4Y2VwdGlvbiB7IH0KKyAgICB9CisKKyAgICB2b2lkIG0oKSB7CisgICAgICAgIHRyeSAoPGNhcmV0Pk15UmVzb3VyY2UgciA9IG5ldyBNeVJlc291cmNlKCkpIHsKKyAgICAgICAgfQorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2FkZENhdGNoQmxvY2svYmVmb3JlNi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hZGRDYXRjaEJsb2NrL2JlZm9yZTYuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yOGIzMzljCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hZGRDYXRjaEJsb2NrL2JlZm9yZTYuamF2YQpAQCAtMCwwICsxLDE3IEBACisvLyAiQWRkIENhdGNoIENsYXVzZShzKSIgInRydWUiCitjbGFzcyBUZXN0IHsKKyAgICBzdGF0aWMgY2xhc3MgRTEgZXh0ZW5kcyBFeGNlcHRpb24geyB9CisgICAgc3RhdGljIGNsYXNzIEUyIGV4dGVuZHMgRXhjZXB0aW9uIHsgfQorCisgICAgc3RhdGljIGNsYXNzIE15UmVzb3VyY2UgaW1wbGVtZW50cyBBdXRvQ2xvc2VhYmxlIHsKKyAgICAgICAgcHVibGljIHZvaWQgZG9Tb21ldGhpbmcoKSB0aHJvd3MgRTEgeyB9CisgICAgICAgIHB1YmxpYyB2b2lkIGNsb3NlKCkgdGhyb3dzIEUyIHsgfQorICAgIH0KKworICAgIHZvaWQgbSgpIHsKKyAgICAgICAgdHJ5ICg8Y2FyZXQ+TXlSZXNvdXJjZSByID0gbmV3IE15UmVzb3VyY2UoKSkgeworICAgICAgICAgICAgci5kb1NvbWV0aGluZygpOworICAgICAgICB9IGNhdGNoIChFMSBpZ25vcmUpIHsKKyAgICAgICAgfQorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2FkZENhdGNoQmxvY2svYmVmb3JlNy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hZGRDYXRjaEJsb2NrL2JlZm9yZTcuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNDA0YzQ1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hZGRDYXRjaEJsb2NrL2JlZm9yZTcuamF2YQpAQCAtMCwwICsxLDE0IEBACisvLyAiQWRkIENhdGNoIENsYXVzZShzKSIgInRydWUiCitjbGFzcyBUZXN0IHsKKyAgICBzdGF0aWMgY2xhc3MgRTEgZXh0ZW5kcyBFeGNlcHRpb24geyB9CisgICAgc3RhdGljIGNsYXNzIEUyIGV4dGVuZHMgRXhjZXB0aW9uIHsgfQorCisgICAgc3RhdGljIGNsYXNzIE15UmVzb3VyY2UgaW1wbGVtZW50cyBBdXRvQ2xvc2VhYmxlIHsKKyAgICAgICAgcHVibGljIE15UmVzb3VyY2UoKSB0aHJvd3MgRTEgeyB9CisgICAgICAgIHB1YmxpYyB2b2lkIGNsb3NlKCkgdGhyb3dzIEUyIHsgfQorICAgIH0KKworICAgIHZvaWQgbSgpIHsKKyAgICAgICAgdHJ5IChNeVJlc291cmNlIHIgPSA8Y2FyZXQ+bmV3IE15UmVzb3VyY2UoKSkKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hZGRDYXRjaEJsb2NrL2JlZm9yZUhpZXJhcmNoeS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hZGRDYXRjaEJsb2NrL2JlZm9yZUhpZXJhcmNoeS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg1ZjA3NmMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2FkZENhdGNoQmxvY2svYmVmb3JlSGllcmFyY2h5LmphdmEKQEAgLTAsMCArMSwxMyBAQAorLy8gIkFkZCBDYXRjaCBDbGF1c2UocykiICJ0cnVlIgorY2xhc3MgQ2F0Y2hFeGNlcHRpb25zIHsKKworCXZvaWQgZm9vKCkgdGhyb3dzIGphdmEuaW8uSU9FeGNlcHRpb24sIGphdmEuaW8uRmlsZU5vdEZvdW5kRXhjZXB0aW9uIHsKKworCX0KKworCXZvaWQgYmFyKCkgeworCQl0cnkgeworCQlmb28oKTs8Y2FyZXQ+CisJCX0KKwl9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hZGRNZXRob2RCb2R5L2FmdGVyMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hZGRNZXRob2RCb2R5L2FmdGVyMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjViYmRiNDgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2FkZE1ldGhvZEJvZHkvYWZ0ZXIxLmphdmEKQEAgLTAsMCArMSw3IEBACisvLyAiQWRkIE1ldGhvZCBCb2R5IiAidHJ1ZSIKK2NsYXNzIGEgeworICAgIHZvaWQgZigpIHsKKyAgICAgICAgPGNhcmV0PjxzZWxlY3Rpb24+Ly9UbyBjaGFuZ2UgYm9keSBvZiBjcmVhdGVkIG1ldGhvZHMgdXNlIEZpbGUgfCBTZXR0aW5ncyB8IEZpbGUgVGVtcGxhdGVzLjwvc2VsZWN0aW9uPgorICAgIH0KK30KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hZGRNZXRob2RCb2R5L2FmdGVyMi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hZGRNZXRob2RCb2R5L2FmdGVyMi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg0NGJjM2IKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2FkZE1ldGhvZEJvZHkvYWZ0ZXIyLmphdmEKQEAgLTAsMCArMSw3IEBACisvLyAiQWRkIE1ldGhvZCBCb2R5IiAidHJ1ZSIKK2NsYXNzIGEgeworICAgIFN0cmluZyBmKCkgeworICAgICAgICA8Y2FyZXQ+PHNlbGVjdGlvbj5yZXR1cm4gbnVsbDsgIC8vVG8gY2hhbmdlIGJvZHkgb2YgY3JlYXRlZCBtZXRob2RzIHVzZSBGaWxlIHwgU2V0dGluZ3MgfCBGaWxlIFRlbXBsYXRlcy48L3NlbGVjdGlvbj4KKyAgICB9Cit9CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYWRkTWV0aG9kQm9keS9hZnRlcjMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYWRkTWV0aG9kQm9keS9hZnRlcjMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42Y2QyYmRjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hZGRNZXRob2RCb2R5L2FmdGVyMy5qYXZhCkBAIC0wLDAgKzEsNyBAQAorLy8gIkFkZCBNZXRob2QgQm9keSIgInRydWUiCitjbGFzcyBhIHsKKyAgICBhKCkgeworICAgICAgICA8Y2FyZXQ+PHNlbGVjdGlvbj4vL1RvIGNoYW5nZSBib2R5IG9mIGNyZWF0ZWQgbWV0aG9kcyB1c2UgRmlsZSB8IFNldHRpbmdzIHwgRmlsZSBUZW1wbGF0ZXMuPC9zZWxlY3Rpb24+CisgICAgfQorfQorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2FkZE1ldGhvZEJvZHkvYWZ0ZXI0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2FkZE1ldGhvZEJvZHkvYWZ0ZXI0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODQ0YmMzYgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYWRkTWV0aG9kQm9keS9hZnRlcjQuamF2YQpAQCAtMCwwICsxLDcgQEAKKy8vICJBZGQgTWV0aG9kIEJvZHkiICJ0cnVlIgorY2xhc3MgYSB7CisgICAgU3RyaW5nIGYoKSB7CisgICAgICAgIDxjYXJldD48c2VsZWN0aW9uPnJldHVybiBudWxsOyAgLy9UbyBjaGFuZ2UgYm9keSBvZiBjcmVhdGVkIG1ldGhvZHMgdXNlIEZpbGUgfCBTZXR0aW5ncyB8IEZpbGUgVGVtcGxhdGVzLjwvc2VsZWN0aW9uPgorICAgIH0KK30KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hZGRNZXRob2RCb2R5L2JlZm9yZTEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYWRkTWV0aG9kQm9keS9iZWZvcmUxLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzI3OGM5NQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYWRkTWV0aG9kQm9keS9iZWZvcmUxLmphdmEKQEAgLTAsMCArMSw1IEBACisvLyAiQWRkIE1ldGhvZCBCb2R5IiAidHJ1ZSIKK2NsYXNzIGEgeworIDxjYXJldD52b2lkIGYoKTsKK30KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hZGRNZXRob2RCb2R5L2JlZm9yZTIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYWRkTWV0aG9kQm9keS9iZWZvcmUyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDVlOTY5YQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYWRkTWV0aG9kQm9keS9iZWZvcmUyLmphdmEKQEAgLTAsMCArMSw1IEBACisvLyAiQWRkIE1ldGhvZCBCb2R5IiAidHJ1ZSIKK2NsYXNzIGEgeworIDxjYXJldD5TdHJpbmcgZigpOworfQorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2FkZE1ldGhvZEJvZHkvYmVmb3JlMy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hZGRNZXRob2RCb2R5L2JlZm9yZTMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMzYxNTYzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hZGRNZXRob2RCb2R5L2JlZm9yZTMuamF2YQpAQCAtMCwwICsxLDUgQEAKKy8vICJBZGQgTWV0aG9kIEJvZHkiICJ0cnVlIgorY2xhc3MgYSB7CisgPGNhcmV0PmEoKTsKK30KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hZGRNZXRob2RCb2R5L2JlZm9yZTQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYWRkTWV0aG9kQm9keS9iZWZvcmU0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGIyOGFjMAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYWRkTWV0aG9kQm9keS9iZWZvcmU0LmphdmEKQEAgLTAsMCArMSw1IEBACisvLyAiQWRkIE1ldGhvZCBCb2R5IiAidHJ1ZSIKK2NsYXNzIGEgeworIDxjYXJldD5hYnN0cmFjdCBTdHJpbmcgZigpOworfQorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2FkZE1ldGhvZEJvZHkvYmVmb3JlNS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hZGRNZXRob2RCb2R5L2JlZm9yZTUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZGJiYTkyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hZGRNZXRob2RCb2R5L2JlZm9yZTUuamF2YQpAQCAtMCwwICsxLDUgQEAKKy8vICJBZGQgTWV0aG9kIEJvZHkiICJmYWxzZSIKK2ludGVyZmFjZSBhIHsKKyA8Y2FyZXQ+U3RyaW5nIGYoKTsKK30KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hZGROZXdBcnJheUV4cHJlc3Npb24vYWZ0ZXIxLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2FkZE5ld0FycmF5RXhwcmVzc2lvbi9hZnRlcjEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZWZmMTJjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hZGROZXdBcnJheUV4cHJlc3Npb24vYWZ0ZXIxLmphdmEKQEAgLTAsMCArMSw3IEBACisvLyAiQWRkICduZXcgaW50W10nIiAidHJ1ZSIKK2NsYXNzIGMgeworIHZvaWQgZigpIHsKKyAgIGludFtdIGE7CisgICBhID0gPGNhcmV0Pm5ldyBpbnRbXXsxLCAyfTsKKyB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hZGROZXdBcnJheUV4cHJlc3Npb24vYmVmb3JlMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hZGROZXdBcnJheUV4cHJlc3Npb24vYmVmb3JlMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFiNGVhN2UKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2FkZE5ld0FycmF5RXhwcmVzc2lvbi9iZWZvcmUxLmphdmEKQEAgLTAsMCArMSw3IEBACisvLyAiQWRkICduZXcgaW50W10nIiAidHJ1ZSIKK2NsYXNzIGMgeworIHZvaWQgZigpIHsKKyAgIGludFtdIGE7CisgICBhID0gPGNhcmV0PnsxLCAyfTsKKyB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hZGRPbkRlbWFuZFN0YXRpY0ltcG9ydC9hZnRlckNvbGxhcHNlSW5uZXJDbGFzcy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hZGRPbkRlbWFuZFN0YXRpY0ltcG9ydC9hZnRlckNvbGxhcHNlSW5uZXJDbGFzcy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcxMDI2NzUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2FkZE9uRGVtYW5kU3RhdGljSW1wb3J0L2FmdGVyQ29sbGFwc2VJbm5lckNsYXNzLmphdmEKQEAgLTAsMCArMSwxMCBAQAorLy8gIkFkZCBvbiBkZW1hbmQgc3RhdGljIGltcG9ydCBmb3IgJ2phdmEubGFuZy5UaHJlYWQnIiAidHJ1ZSIKK3BhY2thZ2UgdGVzdDsKKworaW1wb3J0IHN0YXRpYyBqYXZhLmxhbmcuVGhyZWFkLio7CisKK3B1YmxpYyBjbGFzcyBGb28geworICAgIHsKKyAgICAgICAgPGNhcmV0PlN0YXRlIGVuID0gbmV3IFN0YXRlKCk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hZGRPbkRlbWFuZFN0YXRpY0ltcG9ydC9hZnRlckNvbmZsaWN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2FkZE9uRGVtYW5kU3RhdGljSW1wb3J0L2FmdGVyQ29uZmxpY3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZTFjYmI0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hZGRPbkRlbWFuZFN0YXRpY0ltcG9ydC9hZnRlckNvbmZsaWN0LmphdmEKQEAgLTAsMCArMSwxNSBAQAorLy8gIkFkZCBvbiBkZW1hbmQgc3RhdGljIGltcG9ydCBmb3IgJ3Rlc3QuQmFyJyIgInRydWUiCitwYWNrYWdlIHRlc3Q7CisKK2ltcG9ydCBzdGF0aWMgdGVzdC5CYXIuKjsKKworY2xhc3MgQmFyIHsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIHZvaWQgZigpIHt9Cit9CitwdWJsaWMgY2xhc3MgRm9vIHsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIHZvaWQgZihpbnQgaSkge30KKworICAgIHsKKyAgICAgICAgPGNhcmV0PkJhci5mKCk7ICAgLy8gaW52b2tlICdhZGQgb24gZGVtYW5kIHN0YXRpYyBpbXBvcnQnIGZvciBCYXIgY2xhc3MgaGVyZS4gVGhlIGNhbGwgaXMgbm93IGRvbmUgdG8gb3RoZXIgbWV0aG9kLgorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2FkZE9uRGVtYW5kU3RhdGljSW1wb3J0L2FmdGVyQ29uZmxpY3QyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2FkZE9uRGVtYW5kU3RhdGljSW1wb3J0L2FmdGVyQ29uZmxpY3QyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzVmMGJjNgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYWRkT25EZW1hbmRTdGF0aWNJbXBvcnQvYWZ0ZXJDb25mbGljdDIuamF2YQpAQCAtMCwwICsxLDM2IEBACisvLyAiQWRkIG9uIGRlbWFuZCBzdGF0aWMgaW1wb3J0IGZvciAndGVzdC5CYXInIiAidHJ1ZSIKK3BhY2thZ2UgdGVzdDsKKworaW1wb3J0IHN0YXRpYyB0ZXN0LkJhci4qOworCitjbGFzcyBCYXIgeworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgdm9pZCBmKCkgeworICAgIH0KK30KKworcHVibGljIGNsYXNzIEZvbyB7CisgICAgeworICAgICAgICBmKCk7ICAgLy8gaW52b2tlICdhZGQgb24gZGVtYW5kIHN0YXRpYyBpbXBvcnQnIGZvciBCYXIgY2xhc3MgaGVyZS4gVGhlIGNhbGwgaXMgbm93IGRvbmUgdG8gb3RoZXIgbWV0aG9kLgorICAgIH0KKworICAgIHN0YXRpYyBjbGFzcyBEIHsKKyAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCB2b2lkIGYoaW50IGkpIHsKKyAgICAgICAgfQorCisgICAgICAgIHsKKyAgICAgICAgICAgIEJhci5mKCk7ICAgLy8gaW52b2tlICdhZGQgb24gZGVtYW5kIHN0YXRpYyBpbXBvcnQnIGZvciBCYXIgY2xhc3MgaGVyZS4gVGhlIGNhbGwgaXMgbm93IGRvbmUgdG8gb3RoZXIgbWV0aG9kLgorICAgICAgICB9CisgICAgfQorCisgICAgeworICAgICAgICBmKCk7ICAgLy8gaW52b2tlICdhZGQgb24gZGVtYW5kIHN0YXRpYyBpbXBvcnQnIGZvciBCYXIgY2xhc3MgaGVyZS4gVGhlIGNhbGwgaXMgbm93IGRvbmUgdG8gb3RoZXIgbWV0aG9kLgorICAgIH0KKworICAgIHsKKyAgICAgICAgZigpOyAgIC8vIGludm9rZSAnYWRkIG9uIGRlbWFuZCBzdGF0aWMgaW1wb3J0JyBmb3IgQmFyIGNsYXNzIGhlcmUuIFRoZSBjYWxsIGlzIG5vdyBkb25lIHRvIG90aGVyIG1ldGhvZC4KKyAgICB9CisKKyAgICB7CisgICAgICAgIGYoKTsgICAvLyBpbnZva2UgJ2FkZCBvbiBkZW1hbmQgc3RhdGljIGltcG9ydCcgZm9yIEJhciBjbGFzcyBoZXJlLiBUaGUgY2FsbCBpcyBub3cgZG9uZSB0byBvdGhlciBtZXRob2QuCisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYWRkT25EZW1hbmRTdGF0aWNJbXBvcnQvYWZ0ZXJNZXRob2RSZWZlcmVuY2UuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYWRkT25EZW1hbmRTdGF0aWNJbXBvcnQvYWZ0ZXJNZXRob2RSZWZlcmVuY2UuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jOTdmMzA2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hZGRPbkRlbWFuZFN0YXRpY0ltcG9ydC9hZnRlck1ldGhvZFJlZmVyZW5jZS5qYXZhCkBAIC0wLDAgKzEsMTcgQEAKKy8vICJBZGQgb24gZGVtYW5kIHN0YXRpYyBpbXBvcnQgZm9yICdqYXZhLnV0aWwuQXJyYXlzJyIgInRydWUiCitwYWNrYWdlIHRlc3Q7CisKK2ltcG9ydCBqYXZhLnV0aWwuKjsKKworaW1wb3J0IHN0YXRpYyBqYXZhLnV0aWwuQXJyYXlzLio7CisKK3B1YmxpYyBjbGFzcyBGb28geworICB7CisgICAgQmxvY2s8SW50ZWdlcltdPiBiMiA9IEFycmF5czo6c29ydDsKKyAgICBzb3J0KChieXRlW10pIG51bGwpOworICB9CisKKyAgcHVibGljIGludGVyZmFjZSBCbG9jazxUPiB7CisgICAgdm9pZCBhcHBseShUIHQpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hZGRPbkRlbWFuZFN0YXRpY0ltcG9ydC9hZnRlck11bHRpcGxlTWV0aG9kcy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hZGRPbkRlbWFuZFN0YXRpY0ltcG9ydC9hZnRlck11bHRpcGxlTWV0aG9kcy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUyMzNjNzQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2FkZE9uRGVtYW5kU3RhdGljSW1wb3J0L2FmdGVyTXVsdGlwbGVNZXRob2RzLmphdmEKQEAgLTAsMCArMSwxNCBAQAorLy8gIkFkZCBvbiBkZW1hbmQgc3RhdGljIGltcG9ydCBmb3IgJ3Rlc3QuQmFyJyIgInRydWUiCitwYWNrYWdlIHRlc3Q7CisKK2ltcG9ydCBzdGF0aWMgdGVzdC5CYXIuKjsKKworY2xhc3MgQmFyIHsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIHZvaWQgZihTdHJpbmcgcykge30KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIHZvaWQgZihpbnQgaSkge30KK30KK3B1YmxpYyBjbGFzcyBGb28geworICAgIHsKKyAgICAgICAgPGNhcmV0PmYoKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hZGRPbkRlbWFuZFN0YXRpY0ltcG9ydC9hZnRlclF1YWxpZmllZEluaGVyaXRhbmNlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2FkZE9uRGVtYW5kU3RhdGljSW1wb3J0L2FmdGVyUXVhbGlmaWVkSW5oZXJpdGFuY2UuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYTA0M2IxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hZGRPbkRlbWFuZFN0YXRpY0ltcG9ydC9hZnRlclF1YWxpZmllZEluaGVyaXRhbmNlLmphdmEKQEAgLTAsMCArMSwxNyBAQAorLy8gIkFkZCBvbiBkZW1hbmQgc3RhdGljIGltcG9ydCBmb3IgJ3Rlc3QuR3JlZ29yaWFuQ2FsZW5kYXInIiAidHJ1ZSIKK3BhY2thZ2UgdGVzdDsKKworaW1wb3J0IHN0YXRpYyB0ZXN0LkdyZWdvcmlhbkNhbGVuZGFyLio7CisKK3B1YmxpYyBjbGFzcyBGb28geworICAgIHsKKyAgICAgIGdldEluc3RhbmNlKCk7CisgICAgfQorfQorCitjbGFzcyBDYWxlbmRhciB7CisgIHB1YmxpYyBzdGF0aWMgZmluYWwgdm9pZCBnZXRJbnN0YW5jZSgpIHt9Cit9CisKK2NsYXNzIEdyZWdvcmlhbkNhbGVuZGFyIGV4dGVuZHMgQ2FsZW5kYXIgeworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYWRkT25EZW1hbmRTdGF0aWNJbXBvcnQvYWZ0ZXJTaW5nbGVDb2RlUmVmZXJlbmNlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2FkZE9uRGVtYW5kU3RhdGljSW1wb3J0L2FmdGVyU2luZ2xlQ29kZVJlZmVyZW5jZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE0NTQyNTMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2FkZE9uRGVtYW5kU3RhdGljSW1wb3J0L2FmdGVyU2luZ2xlQ29kZVJlZmVyZW5jZS5qYXZhCkBAIC0wLDAgKzEsMTMgQEAKKy8vICJBZGQgc3RhdGljIGltcG9ydCBmb3IgJ3Rlc3QuQmFyLkZvbyciICJ0cnVlIgorcGFja2FnZSB0ZXN0OworCitpbXBvcnQgc3RhdGljIHRlc3QuQmFyLkZvbzsKKworY2xhc3MgQmFyIHsKKyAgICBwdWJsaWMgc3RhdGljIGNsYXNzIEZvbyB7fQorfQorcHVibGljIGNsYXNzIE9PT3sKKyAgICB7CisgICAgICAgIEZvbyBmb287CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYWRkT25EZW1hbmRTdGF0aWNJbXBvcnQvYWZ0ZXJTaW5nbGVDb2RlUmVmZXJlbmNlSW5Bbm5vdGF0aW9uLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2FkZE9uRGVtYW5kU3RhdGljSW1wb3J0L2FmdGVyU2luZ2xlQ29kZVJlZmVyZW5jZUluQW5ub3RhdGlvbi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU1MzI3OWUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2FkZE9uRGVtYW5kU3RhdGljSW1wb3J0L2FmdGVyU2luZ2xlQ29kZVJlZmVyZW5jZUluQW5ub3RhdGlvbi5qYXZhCkBAIC0wLDAgKzEsMTEgQEAKKy8vICJBZGQgc3RhdGljIGltcG9ydCBmb3IgJ3Rlc3QuQmFyLkZvbyciICJ0cnVlIgorcGFja2FnZSB0ZXN0OworCitpbXBvcnQgc3RhdGljIHRlc3QuQmFyLkZvbzsKKworY2xhc3MgQmFyIHsKKyAgICBwdWJsaWMgc3RhdGljIEBpbnRlcmZhY2UgRm9vIHt9Cit9CitARm9vCitwdWJsaWMgY2xhc3MgT09PIHsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2FkZE9uRGVtYW5kU3RhdGljSW1wb3J0L2FmdGVyU2luZ2xlTWV0aG9kLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2FkZE9uRGVtYW5kU3RhdGljSW1wb3J0L2FmdGVyU2luZ2xlTWV0aG9kLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2EyMTIxMAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYWRkT25EZW1hbmRTdGF0aWNJbXBvcnQvYWZ0ZXJTaW5nbGVNZXRob2QuamF2YQpAQCAtMCwwICsxLDE0IEBACisvLyAiQWRkIHN0YXRpYyBpbXBvcnQgZm9yICd0ZXN0LkJhci5mJyIgInRydWUiCitwYWNrYWdlIHRlc3Q7CisKK2ltcG9ydCBzdGF0aWMgdGVzdC5CYXIuZjsKKworY2xhc3MgQmFyIHsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIHZvaWQgZigpIHt9Cit9CitwdWJsaWMgY2xhc3MgRm9vIHsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIHZvaWQgZihpbnQgaSkge30KKyAgICB7CisgICAgICAgIEJhci48Y2FyZXQ+ZigpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2FkZE9uRGVtYW5kU3RhdGljSW1wb3J0L2FmdGVyU2luZ2xlUXVhbGlmaWVkSW5oZXJpdGFuY2UuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYWRkT25EZW1hbmRTdGF0aWNJbXBvcnQvYWZ0ZXJTaW5nbGVRdWFsaWZpZWRJbmhlcml0YW5jZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ1NjJlNTIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2FkZE9uRGVtYW5kU3RhdGljSW1wb3J0L2FmdGVyU2luZ2xlUXVhbGlmaWVkSW5oZXJpdGFuY2UuamF2YQpAQCAtMCwwICsxLDE3IEBACisvLyAiQWRkIHN0YXRpYyBpbXBvcnQgZm9yICd0ZXN0LkNhbGVuZGFyLmdldEluc3RhbmNlJyIgInRydWUiCitwYWNrYWdlIHRlc3Q7CisKK2ltcG9ydCBzdGF0aWMgdGVzdC5DYWxlbmRhci5nZXRJbnN0YW5jZTsKKworcHVibGljIGNsYXNzIEZvbyB7CisgICAgeworICAgICAgZ2V0SW5zdGFuY2UoKTsKKyAgICB9Cit9CisKK2NsYXNzIENhbGVuZGFyIHsKKyAgcHVibGljIHN0YXRpYyBmaW5hbCB2b2lkIGdldEluc3RhbmNlKCkge30KK30KKworY2xhc3MgR3JlZ29yaWFuQ2FsZW5kYXIgZXh0ZW5kcyBDYWxlbmRhciB7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hZGRPbkRlbWFuZFN0YXRpY0ltcG9ydC9hZnRlclNpbmdsZVN1cGVyTWV0aG9kLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2FkZE9uRGVtYW5kU3RhdGljSW1wb3J0L2FmdGVyU2luZ2xlU3VwZXJNZXRob2QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNDA4YTA1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hZGRPbkRlbWFuZFN0YXRpY0ltcG9ydC9hZnRlclNpbmdsZVN1cGVyTWV0aG9kLmphdmEKQEAgLTAsMCArMSwxNyBAQAorLy8gIkFkZCBzdGF0aWMgaW1wb3J0IGZvciAndGVzdC5CYXIuZiciICJ0cnVlIgorcGFja2FnZSB0ZXN0OworCitpbXBvcnQgc3RhdGljIHRlc3QuQmFyLmY7CisKK2NsYXNzIEJhciB7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCB2b2lkIGYoKSB7fQorfQorcHVibGljIGNsYXNzIEZvbyBleHRlbmRzIEZvb1N1cGVyeworICAgIHsKKyAgICAgICAgQmFyLjxjYXJldD5mKCk7CisgICAgfQorfQorCitjbGFzcyBGb29TdXBlciB7CisgIHB1YmxpYyBzdGF0aWMgZmluYWwgdm9pZCBmKGludCBpKSB7fQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYWRkT25EZW1hbmRTdGF0aWNJbXBvcnQvYmVmb3JlQWxyZWFkeS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hZGRPbkRlbWFuZFN0YXRpY0ltcG9ydC9iZWZvcmVBbHJlYWR5LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODJlYTE3ZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYWRkT25EZW1hbmRTdGF0aWNJbXBvcnQvYmVmb3JlQWxyZWFkeS5qYXZhCkBAIC0wLDAgKzEsMTQgQEAKKy8vICJBZGQgb24gZGVtYW5kIHN0YXRpYyBpbXBvcnQgZm9yICd0ZXN0LkJhciciICJmYWxzZSIKK3BhY2thZ2UgdGVzdDsKK2ltcG9ydCBzdGF0aWMgdGVzdC5CYXIuKjsKKworY2xhc3MgQmFyIHsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIHZvaWQgZigpIHt9Cit9CitwdWJsaWMgY2xhc3MgRm9vIHsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIHZvaWQgZihpbnQgaSkge30KKworICAgIHsKKyAgICAgICAgPGNhcmV0PkJhci5mKCk7ICAgLy8gaW52b2tlICdhZGQgb24gZGVtYW5kIHN0YXRpYyBpbXBvcnQnIGZvciBCYXIgY2xhc3MgaGVyZS4gVGhlIGNhbGwgaXMgbm93IGRvbmUgdG8gb3RoZXIgbWV0aG9kLgorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2FkZE9uRGVtYW5kU3RhdGljSW1wb3J0L2JlZm9yZUNvbGxhcHNlSW5uZXJDbGFzcy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hZGRPbkRlbWFuZFN0YXRpY0ltcG9ydC9iZWZvcmVDb2xsYXBzZUlubmVyQ2xhc3MuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNmNhYWQwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hZGRPbkRlbWFuZFN0YXRpY0ltcG9ydC9iZWZvcmVDb2xsYXBzZUlubmVyQ2xhc3MuamF2YQpAQCAtMCwwICsxLDggQEAKKy8vICJBZGQgb24gZGVtYW5kIHN0YXRpYyBpbXBvcnQgZm9yICdqYXZhLmxhbmcuVGhyZWFkJyIgInRydWUiCitwYWNrYWdlIHRlc3Q7CisKK3B1YmxpYyBjbGFzcyBGb28geworICAgIHsKKyAgICAgICAgVGhyZTxjYXJldD5hZC5TdGF0ZSBlbiA9IG5ldyBUaHJlYWQuU3RhdGUoKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2FkZE9uRGVtYW5kU3RhdGljSW1wb3J0L2JlZm9yZUNvbmZsaWN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2FkZE9uRGVtYW5kU3RhdGljSW1wb3J0L2JlZm9yZUNvbmZsaWN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDlhZjlkYwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYWRkT25EZW1hbmRTdGF0aWNJbXBvcnQvYmVmb3JlQ29uZmxpY3QuamF2YQpAQCAtMCwwICsxLDEzIEBACisvLyAiQWRkIG9uIGRlbWFuZCBzdGF0aWMgaW1wb3J0IGZvciAndGVzdC5CYXInIiAidHJ1ZSIKK3BhY2thZ2UgdGVzdDsKKworY2xhc3MgQmFyIHsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIHZvaWQgZigpIHt9Cit9CitwdWJsaWMgY2xhc3MgRm9vIHsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIHZvaWQgZihpbnQgaSkge30KKworICAgIHsKKyAgICAgICAgPGNhcmV0PkJhci5mKCk7ICAgLy8gaW52b2tlICdhZGQgb24gZGVtYW5kIHN0YXRpYyBpbXBvcnQnIGZvciBCYXIgY2xhc3MgaGVyZS4gVGhlIGNhbGwgaXMgbm93IGRvbmUgdG8gb3RoZXIgbWV0aG9kLgorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2FkZE9uRGVtYW5kU3RhdGljSW1wb3J0L2JlZm9yZUNvbmZsaWN0Mi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hZGRPbkRlbWFuZFN0YXRpY0ltcG9ydC9iZWZvcmVDb25mbGljdDIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYjlhZWE2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hZGRPbkRlbWFuZFN0YXRpY0ltcG9ydC9iZWZvcmVDb25mbGljdDIuamF2YQpAQCAtMCwwICsxLDM0IEBACisvLyAiQWRkIG9uIGRlbWFuZCBzdGF0aWMgaW1wb3J0IGZvciAndGVzdC5CYXInIiAidHJ1ZSIKK3BhY2thZ2UgdGVzdDsKKworY2xhc3MgQmFyIHsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIHZvaWQgZigpIHsKKyAgICB9Cit9CisKK3B1YmxpYyBjbGFzcyBGb28geworICAgIHsKKyAgICAgICAgQmFyLmYoKTsgICAvLyBpbnZva2UgJ2FkZCBvbiBkZW1hbmQgc3RhdGljIGltcG9ydCcgZm9yIEJhciBjbGFzcyBoZXJlLiBUaGUgY2FsbCBpcyBub3cgZG9uZSB0byBvdGhlciBtZXRob2QuCisgICAgfQorCisgICAgc3RhdGljIGNsYXNzIEQgeworICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIHZvaWQgZihpbnQgaSkgeworICAgICAgICB9CisKKyAgICAgICAgeworICAgICAgICAgICAgQmFyLmYoKTsgICAvLyBpbnZva2UgJ2FkZCBvbiBkZW1hbmQgc3RhdGljIGltcG9ydCcgZm9yIEJhciBjbGFzcyBoZXJlLiBUaGUgY2FsbCBpcyBub3cgZG9uZSB0byBvdGhlciBtZXRob2QuCisgICAgICAgIH0KKyAgICB9CisKKyAgICB7CisgICAgICAgIEJhci5mKCk7ICAgLy8gaW52b2tlICdhZGQgb24gZGVtYW5kIHN0YXRpYyBpbXBvcnQnIGZvciBCYXIgY2xhc3MgaGVyZS4gVGhlIGNhbGwgaXMgbm93IGRvbmUgdG8gb3RoZXIgbWV0aG9kLgorICAgIH0KKworICAgIHsKKyAgICAgICAgQmFyLmYoKTsgICAvLyBpbnZva2UgJ2FkZCBvbiBkZW1hbmQgc3RhdGljIGltcG9ydCcgZm9yIEJhciBjbGFzcyBoZXJlLiBUaGUgY2FsbCBpcyBub3cgZG9uZSB0byBvdGhlciBtZXRob2QuCisgICAgfQorCisgICAgeworICAgICAgICA8Y2FyZXQ+QmFyLmYoKTsgICAvLyBpbnZva2UgJ2FkZCBvbiBkZW1hbmQgc3RhdGljIGltcG9ydCcgZm9yIEJhciBjbGFzcyBoZXJlLiBUaGUgY2FsbCBpcyBub3cgZG9uZSB0byBvdGhlciBtZXRob2QuCisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYWRkT25EZW1hbmRTdGF0aWNJbXBvcnQvYmVmb3JlTWV0aG9kUmVmZXJlbmNlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2FkZE9uRGVtYW5kU3RhdGljSW1wb3J0L2JlZm9yZU1ldGhvZFJlZmVyZW5jZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNmNDVkMDYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2FkZE9uRGVtYW5kU3RhdGljSW1wb3J0L2JlZm9yZU1ldGhvZFJlZmVyZW5jZS5qYXZhCkBAIC0wLDAgKzEsMTUgQEAKKy8vICJBZGQgb24gZGVtYW5kIHN0YXRpYyBpbXBvcnQgZm9yICdqYXZhLnV0aWwuQXJyYXlzJyIgInRydWUiCitwYWNrYWdlIHRlc3Q7CisKK2ltcG9ydCBqYXZhLnV0aWwuKjsKKworcHVibGljIGNsYXNzIEZvbyB7CisgIHsKKyAgICBCbG9jazxJbnRlZ2VyW10+IGIyID0gQXJyYXlzOjpzb3J0OworICAgIEFycmE8Y2FyZXQ+eXMuc29ydCgoYnl0ZVtdKW51bGwpOworICB9CisKKyAgcHVibGljIGludGVyZmFjZSBCbG9jazxUPiB7CisgICAgdm9pZCBhcHBseShUIHQpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hZGRPbkRlbWFuZFN0YXRpY0ltcG9ydC9iZWZvcmVNdWx0aXBsZU1ldGhvZHMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYWRkT25EZW1hbmRTdGF0aWNJbXBvcnQvYmVmb3JlTXVsdGlwbGVNZXRob2RzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDFlODQ2ZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYWRkT25EZW1hbmRTdGF0aWNJbXBvcnQvYmVmb3JlTXVsdGlwbGVNZXRob2RzLmphdmEKQEAgLTAsMCArMSwxMiBAQAorLy8gIkFkZCBvbiBkZW1hbmQgc3RhdGljIGltcG9ydCBmb3IgJ3Rlc3QuQmFyJyIgInRydWUiCitwYWNrYWdlIHRlc3Q7CisKK2NsYXNzIEJhciB7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCB2b2lkIGYoU3RyaW5nIHMpIHt9CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCB2b2lkIGYoaW50IGkpIHt9Cit9CitwdWJsaWMgY2xhc3MgRm9vIHsKKyAgICB7CisgICAgICAgIDxjYXJldD5CYXIuZigpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2FkZE9uRGVtYW5kU3RhdGljSW1wb3J0L2JlZm9yZVByaXZhdGVFbnVtSW5zaWRlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2FkZE9uRGVtYW5kU3RhdGljSW1wb3J0L2JlZm9yZVByaXZhdGVFbnVtSW5zaWRlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDIzMGM2NgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYWRkT25EZW1hbmRTdGF0aWNJbXBvcnQvYmVmb3JlUHJpdmF0ZUVudW1JbnNpZGUuamF2YQpAQCAtMCwwICsxLDggQEAKKy8vICJBZGQgb24gZGVtYW5kIHN0YXRpYyBpbXBvcnQgZm9yICd0ZXN0Lk91dGVyLlN0YXRlJyIgImZhbHNlIgorcGFja2FnZSB0ZXN0OworCitwdWJsaWMgY2xhc3MgT3V0ZXIgeworICAgIHByaXZhdGUgZW51bSBTdGF0ZSB7IFJFRE9ORSwgVU5ET05FIH0KKworICAgIHByaXZhdGUgU3RhdGUgc3RhdGUgPSBTdGE8Y2FyZXQ+dGUuUkVET05FOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYWRkT25EZW1hbmRTdGF0aWNJbXBvcnQvYmVmb3JlUXVhbGlmaWVkSW5oZXJpdGFuY2UuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYWRkT25EZW1hbmRTdGF0aWNJbXBvcnQvYmVmb3JlUXVhbGlmaWVkSW5oZXJpdGFuY2UuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNjk1YzFjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hZGRPbkRlbWFuZFN0YXRpY0ltcG9ydC9iZWZvcmVRdWFsaWZpZWRJbmhlcml0YW5jZS5qYXZhCkBAIC0wLDAgKzEsMTUgQEAKKy8vICJBZGQgb24gZGVtYW5kIHN0YXRpYyBpbXBvcnQgZm9yICd0ZXN0LkdyZWdvcmlhbkNhbGVuZGFyJyIgInRydWUiCitwYWNrYWdlIHRlc3Q7CisKK3B1YmxpYyBjbGFzcyBGb28geworICAgIHsKKyAgICAgIDxjYXJldD5HcmVnb3JpYW5DYWxlbmRhci5nZXRJbnN0YW5jZSgpOworICAgIH0KK30KKworY2xhc3MgQ2FsZW5kYXIgeworICBwdWJsaWMgc3RhdGljIGZpbmFsIHZvaWQgZ2V0SW5zdGFuY2UoKSB7fQorfQorCitjbGFzcyBHcmVnb3JpYW5DYWxlbmRhciBleHRlbmRzIENhbGVuZGFyIHsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2FkZE9uRGVtYW5kU3RhdGljSW1wb3J0L2JlZm9yZVNpbmdsZUNvZGVSZWZlcmVuY2UuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYWRkT25EZW1hbmRTdGF0aWNJbXBvcnQvYmVmb3JlU2luZ2xlQ29kZVJlZmVyZW5jZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJhYzZhZjkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2FkZE9uRGVtYW5kU3RhdGljSW1wb3J0L2JlZm9yZVNpbmdsZUNvZGVSZWZlcmVuY2UuamF2YQpAQCAtMCwwICsxLDExIEBACisvLyAiQWRkIHN0YXRpYyBpbXBvcnQgZm9yICd0ZXN0LkJhci5Gb28nIiAidHJ1ZSIKK3BhY2thZ2UgdGVzdDsKKworY2xhc3MgQmFyIHsKKyAgICBwdWJsaWMgc3RhdGljIGNsYXNzIEZvbyB7fQorfQorcHVibGljIGNsYXNzIE9PT3sKKyAgICB7CisgICAgICAgIEJhci48Y2FyZXQ+Rm9vIGZvbzsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hZGRPbkRlbWFuZFN0YXRpY0ltcG9ydC9iZWZvcmVTaW5nbGVDb2RlUmVmZXJlbmNlSW5Bbm5vdGF0aW9uLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2FkZE9uRGVtYW5kU3RhdGljSW1wb3J0L2JlZm9yZVNpbmdsZUNvZGVSZWZlcmVuY2VJbkFubm90YXRpb24uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNjE5NTg4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hZGRPbkRlbWFuZFN0YXRpY0ltcG9ydC9iZWZvcmVTaW5nbGVDb2RlUmVmZXJlbmNlSW5Bbm5vdGF0aW9uLmphdmEKQEAgLTAsMCArMSw5IEBACisvLyAiQWRkIHN0YXRpYyBpbXBvcnQgZm9yICd0ZXN0LkJhci5Gb28nIiAidHJ1ZSIKK3BhY2thZ2UgdGVzdDsKKworY2xhc3MgQmFyIHsKKyAgICBwdWJsaWMgc3RhdGljIEBpbnRlcmZhY2UgRm9vIHt9Cit9CitAQmFyLjxjYXJldD5Gb28KK3B1YmxpYyBjbGFzcyBPT08geworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYWRkT25EZW1hbmRTdGF0aWNJbXBvcnQvYmVmb3JlU2luZ2xlSW1wb3J0RGlzYWJsZWRXaGVuT25EZW1hbmRFeGlzdHMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYWRkT25EZW1hbmRTdGF0aWNJbXBvcnQvYmVmb3JlU2luZ2xlSW1wb3J0RGlzYWJsZWRXaGVuT25EZW1hbmRFeGlzdHMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMDNhNGFjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hZGRPbkRlbWFuZFN0YXRpY0ltcG9ydC9iZWZvcmVTaW5nbGVJbXBvcnREaXNhYmxlZFdoZW5PbkRlbWFuZEV4aXN0cy5qYXZhCkBAIC0wLDAgKzEsMTcgQEAKKy8vICJBZGQgc3RhdGljIGltcG9ydCBmb3IgJ3Rlc3QuQmFyLmYnIiAiZmFsc2UiCitwYWNrYWdlIHRlc3Q7CisKK2ltcG9ydCBzdGF0aWMgdGVzdC5CYXIuKjsKKworY2xhc3MgQmFyIHsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIHZvaWQgZigpIHt9Cit9CitwdWJsaWMgY2xhc3MgRm9vIGV4dGVuZHMgRm9vU3VwZXJ7CisgICAgeworICAgICAgICBCYXIuPGNhcmV0PmYoKTsKKyAgICB9Cit9CisKK2NsYXNzIEZvb1N1cGVyIHsKKyAgcHVibGljIHN0YXRpYyBmaW5hbCB2b2lkIGYoaW50IGkpIHt9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hZGRPbkRlbWFuZFN0YXRpY0ltcG9ydC9iZWZvcmVTaW5nbGVNZXRob2QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYWRkT25EZW1hbmRTdGF0aWNJbXBvcnQvYmVmb3JlU2luZ2xlTWV0aG9kLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTE5OWI4MgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYWRkT25EZW1hbmRTdGF0aWNJbXBvcnQvYmVmb3JlU2luZ2xlTWV0aG9kLmphdmEKQEAgLTAsMCArMSwxMiBAQAorLy8gIkFkZCBzdGF0aWMgaW1wb3J0IGZvciAndGVzdC5CYXIuZiciICJ0cnVlIgorcGFja2FnZSB0ZXN0OworCitjbGFzcyBCYXIgeworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgdm9pZCBmKCkge30KK30KK3B1YmxpYyBjbGFzcyBGb28geworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgdm9pZCBmKGludCBpKSB7fQorICAgIHsKKyAgICAgICAgQmFyLjxjYXJldD5mKCk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYWRkT25EZW1hbmRTdGF0aWNJbXBvcnQvYmVmb3JlU2luZ2xlUXVhbGlmaWVkSW5oZXJpdGFuY2UuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYWRkT25EZW1hbmRTdGF0aWNJbXBvcnQvYmVmb3JlU2luZ2xlUXVhbGlmaWVkSW5oZXJpdGFuY2UuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZDRkMTBkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hZGRPbkRlbWFuZFN0YXRpY0ltcG9ydC9iZWZvcmVTaW5nbGVRdWFsaWZpZWRJbmhlcml0YW5jZS5qYXZhCkBAIC0wLDAgKzEsMTUgQEAKKy8vICJBZGQgc3RhdGljIGltcG9ydCBmb3IgJ3Rlc3QuQ2FsZW5kYXIuZ2V0SW5zdGFuY2UnIiAidHJ1ZSIKK3BhY2thZ2UgdGVzdDsKKworcHVibGljIGNsYXNzIEZvbyB7CisgICAgeworICAgICAgR3JlZ29yaWFuQ2FsZW5kYXIuZ2V0PGNhcmV0Pkluc3RhbmNlKCk7CisgICAgfQorfQorCitjbGFzcyBDYWxlbmRhciB7CisgIHB1YmxpYyBzdGF0aWMgZmluYWwgdm9pZCBnZXRJbnN0YW5jZSgpIHt9Cit9CisKK2NsYXNzIEdyZWdvcmlhbkNhbGVuZGFyIGV4dGVuZHMgQ2FsZW5kYXIgeworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYWRkT25EZW1hbmRTdGF0aWNJbXBvcnQvYmVmb3JlU2luZ2xlU3VwZXJNZXRob2QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYWRkT25EZW1hbmRTdGF0aWNJbXBvcnQvYmVmb3JlU2luZ2xlU3VwZXJNZXRob2QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNmNkYjE5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hZGRPbkRlbWFuZFN0YXRpY0ltcG9ydC9iZWZvcmVTaW5nbGVTdXBlck1ldGhvZC5qYXZhCkBAIC0wLDAgKzEsMTUgQEAKKy8vICJBZGQgc3RhdGljIGltcG9ydCBmb3IgJ3Rlc3QuQmFyLmYnIiAidHJ1ZSIKK3BhY2thZ2UgdGVzdDsKKworY2xhc3MgQmFyIHsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIHZvaWQgZigpIHt9Cit9CitwdWJsaWMgY2xhc3MgRm9vIGV4dGVuZHMgRm9vU3VwZXJ7CisgICAgeworICAgICAgICBCYXIuPGNhcmV0PmYoKTsKKyAgICB9Cit9CisKK2NsYXNzIEZvb1N1cGVyIHsKKyAgcHVibGljIHN0YXRpYyBmaW5hbCB2b2lkIGYoaW50IGkpIHt9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hZGRSZXR1cm4vYWZ0ZXIxLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2FkZFJldHVybi9hZnRlcjEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMjVlYTU5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hZGRSZXR1cm4vYWZ0ZXIxLmphdmEKQEAgLTAsMCArMSw3IEBACisvLyAiQWRkIFJldHVybiBTdGF0ZW1lbnQiICJ0cnVlIgorY2xhc3MgYSB7CisgaW50IGYoKSB7CisgICAgIHJldHVybiA8Y2FyZXQ+PHNlbGVjdGlvbj4wPC9zZWxlY3Rpb24+OworIH0KK30KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hZGRSZXR1cm4vYWZ0ZXIyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2FkZFJldHVybi9hZnRlcjIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYzA2NDk3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hZGRSZXR1cm4vYWZ0ZXIyLmphdmEKQEAgLTAsMCArMSw3IEBACisvLyAiQWRkIFJldHVybiBTdGF0ZW1lbnQiICJ0cnVlIgorY2xhc3MgYSB7CisgU3RyaW5nIGYoKSB7CisgICAgIHJldHVybiA8Y2FyZXQ+PHNlbGVjdGlvbj5udWxsPC9zZWxlY3Rpb24+OworIH0KK30KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hZGRSZXR1cm4vYWZ0ZXIzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2FkZFJldHVybi9hZnRlcjMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NWU0YmRmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hZGRSZXR1cm4vYWZ0ZXIzLmphdmEKQEAgLTAsMCArMSw4IEBACisvLyAiQWRkIFJldHVybiBTdGF0ZW1lbnQiICJ0cnVlIgorY2xhc3MgYSB7CisgaW50IGYoKSB7CisgICBpbnQgaSA9IDA7CisgICAgIHJldHVybiA8Y2FyZXQ+PHNlbGVjdGlvbj5pPC9zZWxlY3Rpb24+OworIH0KK30KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hZGRSZXR1cm4vYWZ0ZXI0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2FkZFJldHVybi9hZnRlcjQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMTI3ZTQ0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hZGRSZXR1cm4vYWZ0ZXI0LmphdmEKQEAgLTAsMCArMSw3IEBACisvLyAiQWRkIFJldHVybiBTdGF0ZW1lbnQiICJ0cnVlIgorY2xhc3MgYSB7CisgaW50IGYoaW50IHApIHsKKyAgICAgcmV0dXJuIDxjYXJldD48c2VsZWN0aW9uPnA8L3NlbGVjdGlvbj47CisgfQorfQorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2FkZFJldHVybi9hZnRlcjUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYWRkUmV0dXJuL2FmdGVyNS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc4Mzc1ZjMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2FkZFJldHVybi9hZnRlcjUuamF2YQpAQCAtMCwwICsxLDggQEAKKy8vICJBZGQgUmV0dXJuIFN0YXRlbWVudCIgInRydWUiCitjbGFzcyBhIHsKKyBpbnQgZigpIHsKKyAgIHNob3J0IGkgPSAwOworICAgICByZXR1cm4gPGNhcmV0PjxzZWxlY3Rpb24+MDwvc2VsZWN0aW9uPjsKKyB9Cit9CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYWRkUmV0dXJuL2JlZm9yZTEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYWRkUmV0dXJuL2JlZm9yZTEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYjVlMzNhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hZGRSZXR1cm4vYmVmb3JlMS5qYXZhCkBAIC0wLDAgKzEsNiBAQAorLy8gIkFkZCBSZXR1cm4gU3RhdGVtZW50IiAidHJ1ZSIKK2NsYXNzIGEgeworIGludCBmKCkgeworIDxjYXJldD59Cit9CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYWRkUmV0dXJuL2JlZm9yZTIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYWRkUmV0dXJuL2JlZm9yZTIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYzUyZDM0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hZGRSZXR1cm4vYmVmb3JlMi5qYXZhCkBAIC0wLDAgKzEsNiBAQAorLy8gIkFkZCBSZXR1cm4gU3RhdGVtZW50IiAidHJ1ZSIKK2NsYXNzIGEgeworIFN0cmluZyBmKCkgeworIDxjYXJldD59Cit9CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYWRkUmV0dXJuL2JlZm9yZTMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYWRkUmV0dXJuL2JlZm9yZTMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MDIxZjA2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hZGRSZXR1cm4vYmVmb3JlMy5qYXZhCkBAIC0wLDAgKzEsNyBAQAorLy8gIkFkZCBSZXR1cm4gU3RhdGVtZW50IiAidHJ1ZSIKK2NsYXNzIGEgeworIGludCBmKCkgeworICAgaW50IGkgPSAwOworIDxjYXJldD59Cit9CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYWRkUmV0dXJuL2JlZm9yZTQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYWRkUmV0dXJuL2JlZm9yZTQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44Yzg5YzUyYgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYWRkUmV0dXJuL2JlZm9yZTQuamF2YQpAQCAtMCwwICsxLDYgQEAKKy8vICJBZGQgUmV0dXJuIFN0YXRlbWVudCIgInRydWUiCitjbGFzcyBhIHsKKyBpbnQgZihpbnQgcCkgeworIDxjYXJldD59Cit9CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYWRkUmV0dXJuL2JlZm9yZTUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYWRkUmV0dXJuL2JlZm9yZTUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYWJkZWVhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hZGRSZXR1cm4vYmVmb3JlNS5qYXZhCkBAIC0wLDAgKzEsNyBAQAorLy8gIkFkZCBSZXR1cm4gU3RhdGVtZW50IiAidHJ1ZSIKK2NsYXNzIGEgeworIGludCBmKCkgeworICAgc2hvcnQgaSA9IDA7CisgPGNhcmV0Pn0KK30KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hZGRSZXR1cm4vYmVmb3JlNi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hZGRSZXR1cm4vYmVmb3JlNi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdlYjMyMGQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2FkZFJldHVybi9iZWZvcmU2LmphdmEKQEAgLTAsMCArMSw3IEBACisvLyAiQWRkIE1ldGhvZCBCb2R5IiAiZmFsc2UiCitjbGFzcyBhIHsKKyBTdHJpbmcgZigpIHsKKyAgIHJldHVybiBudWxsOworIDxjYXJldD59Cit9CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYWRkUnVudGltZUV4Y2VwdGlvblRvVGhyb3dzL2FmdGVyMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hZGRSdW50aW1lRXhjZXB0aW9uVG9UaHJvd3MvYWZ0ZXIxLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjMyMTc0ZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYWRkUnVudGltZUV4Y2VwdGlvblRvVGhyb3dzL2FmdGVyMS5qYXZhCkBAIC0wLDAgKzEsNyBAQAorLy8gIkFkZCBSdW50aW1lIEV4Y2VwdGlvbihzKSB0byBNZXRob2QgU2lnbmF0dXJlIiAidHJ1ZSIKK2NsYXNzIGEgeworICAgaW50IGYoKSB0aHJvd3MgUnVudGltZUV4Y2VwdGlvbiB7CisgICAgIHRocm93IG5ldyBSdW50aW1lRXhjZXB0aW9uKCk8Y2FyZXQ+OworICAgfQorfQorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2FkZFJ1bnRpbWVFeGNlcHRpb25Ub1Rocm93cy9iZWZvcmUxLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2FkZFJ1bnRpbWVFeGNlcHRpb25Ub1Rocm93cy9iZWZvcmUxLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzgzZGQ0NwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYWRkUnVudGltZUV4Y2VwdGlvblRvVGhyb3dzL2JlZm9yZTEuamF2YQpAQCAtMCwwICsxLDcgQEAKKy8vICJBZGQgUnVudGltZSBFeGNlcHRpb24ocykgdG8gTWV0aG9kIFNpZ25hdHVyZSIgInRydWUiCitjbGFzcyBhIHsKKyAgIGludCBmKCkgeworICAgICB0aHJvdyBuZXcgUnVudGltZUV4Y2VwdGlvbigpPGNhcmV0PjsKKyAgIH0KK30KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hZGRSdW50aW1lRXhjZXB0aW9uVG9UaHJvd3MvYmVmb3JlMi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hZGRSdW50aW1lRXhjZXB0aW9uVG9UaHJvd3MvYmVmb3JlMi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNhN2ViMTQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2FkZFJ1bnRpbWVFeGNlcHRpb25Ub1Rocm93cy9iZWZvcmUyLmphdmEKQEAgLTAsMCArMSw3IEBACisvLyAiQWRkIFJ1bnRpbWUgRXhjZXB0aW9uKHMpIHRvIE1ldGhvZCBTaWduYXR1cmUiICJmYWxzZSIKK2NsYXNzIGEgeworICAgaW50IGYoKSB0aHJvd3MgUnVudGltZUV4Y2VwdGlvbnsKKyAgICAgdGhyb3cgbmV3IFJ1bnRpbWVFeGNlcHRpb24oKTxjYXJldD47CisgICB9Cit9CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYWRkU2luZ2xlU3RhdGljSW1wb3J0L0luYWNjZXNzaWJsZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hZGRTaW5nbGVTdGF0aWNJbXBvcnQvSW5hY2Nlc3NpYmxlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTFjNGY1NQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYWRkU2luZ2xlU3RhdGljSW1wb3J0L0luYWNjZXNzaWJsZS5qYXZhCkBAIC0wLDAgKzEsOCBAQAorcGFja2FnZSBpbXBsOworaW1wb3J0IGZvby5Gb287CitwdWJsaWMgY2xhc3MgRm9vSW1wbCBleHRlbmRzIEZvbyB7fQorY2xhc3MgQmFyIHsKKyAgdm9pZCBkb1NtdGgoRm9vSW1wbCBpbSkgeworICAgIGltLmY8Y2FyZXQ+b28oKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYWRkU2luZ2xlU3RhdGljSW1wb3J0L0luYWNjZXNzaWJsZV9hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hZGRTaW5nbGVTdGF0aWNJbXBvcnQvSW5hY2Nlc3NpYmxlX2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2Y4OWYwZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYWRkU2luZ2xlU3RhdGljSW1wb3J0L0luYWNjZXNzaWJsZV9hZnRlci5qYXZhCkBAIC0wLDAgKzEsMTEgQEAKK3BhY2thZ2UgaW1wbDsKK2ltcG9ydCBmb28uRm9vOworCitpbXBvcnQgc3RhdGljIGltcGwuRm9vSW1wbC5mb287CisKK3B1YmxpYyBjbGFzcyBGb29JbXBsIGV4dGVuZHMgRm9vIHt9CitjbGFzcyBCYXIgeworICB2b2lkIGRvU210aChGb29JbXBsIGltKSB7CisgICAgZm9vKCk7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2FkZFRvVGhyb3dzL2FmdGVyMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hZGRUb1Rocm93cy9hZnRlcjEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NmM3MmQ2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hZGRUb1Rocm93cy9hZnRlcjEuamF2YQpAQCAtMCwwICsxLDEzIEBACisvLyAiQWRkIEV4Y2VwdGlvbiB0byBNZXRob2QgU2lnbmF0dXJlIiAidHJ1ZSIKK2NsYXNzIEMgeworICAgIHN0YXRpYyBjbGFzcyBFMSBleHRlbmRzIEV4Y2VwdGlvbiB7IH0KKworICAgIHN0YXRpYyBjbGFzcyBNeVJlc291cmNlIGltcGxlbWVudHMgQXV0b0Nsb3NlYWJsZSB7CisgICAgICAgIHB1YmxpYyB2b2lkIGNsb3NlKCkgdGhyb3dzIEUxIHsgfQorICAgIH0KKworICAgIHZvaWQgbSgpIHRocm93cyBFMSB7CisgICAgICAgIHRyeSAoTXlSZXNvdXJjZSByID0gbmV3IE15UmVzb3VyY2UoKSkgeworICAgICAgICB9CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYWRkVG9UaHJvd3MvYWZ0ZXIyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2FkZFRvVGhyb3dzL2FmdGVyMi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmExYTJlOTMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2FkZFRvVGhyb3dzL2FmdGVyMi5qYXZhCkBAIC0wLDAgKzEsMTUgQEAKKy8vICJBZGQgRXhjZXB0aW9uIHRvIE1ldGhvZCBTaWduYXR1cmUiICJ0cnVlIgorY2xhc3MgQyB7CisgICAgc3RhdGljIGNsYXNzIEUxIGV4dGVuZHMgRXhjZXB0aW9uIHsgfQorICAgIHN0YXRpYyBjbGFzcyBFMiBleHRlbmRzIEV4Y2VwdGlvbiB7IH0KKworICAgIHN0YXRpYyBjbGFzcyBNeVJlc291cmNlIGltcGxlbWVudHMgQXV0b0Nsb3NlYWJsZSB7CisgICAgICAgIHB1YmxpYyB2b2lkIGRvU29tZXRoaW5nKCkgdGhyb3dzIEUxIHsgfQorICAgICAgICBwdWJsaWMgdm9pZCBjbG9zZSgpIHRocm93cyBFMiB7IH0KKyAgICB9CisKKyAgICB2b2lkIG0oKSB0aHJvd3MgRTEsIEUyIHsKKyAgICAgICAgdHJ5IChNeVJlc291cmNlIHIgPSBuZXcgTXlSZXNvdXJjZSgpKSB7CisgICAgICAgIH0KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hZGRUb1Rocm93cy9hZnRlck11bHRpcGxlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2FkZFRvVGhyb3dzL2FmdGVyTXVsdGlwbGUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43OTAxNTlmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hZGRUb1Rocm93cy9hZnRlck11bHRpcGxlLmphdmEKQEAgLTAsMCArMSwxMSBAQAorLy8gIkFkZCBFeGNlcHRpb24gdG8gTWV0aG9kIFNpZ25hdHVyZSIgInRydWUiCitpbXBvcnQgamF2YS5pby4qOworCitjbGFzcyBDIHsKKyAgU3RyaW5nIGRldGVjdEVuY29kaW5nKEZpbGUgaW5wdXRGaWxlKSB0aHJvd3MgSU9FeGNlcHRpb24geworICAgIGZpbmFsIEJ1ZmZlcmVkUmVhZGVyIHJlYWRlciA9IG5ldyBCdWZmZXJlZFJlYWRlcihuZXcgSW5wdXRTdHJlYW1SZWFkZXIobmV3IEZpbGVJbnB1dFN0cmVhbShpbnB1dEZpbGUpLCAiVVRGLTgiKSk7CisgICAgZmluYWwgU3RyaW5nIGxpbmUgPSByZWFkZXIuPGNhcmV0PnJlYWRMaW5lKCk7CisKKyAgICByZXR1cm4gIklTTy04ODU5LTEiOworICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2FkZFRvVGhyb3dzL2JlZm9yZTEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYWRkVG9UaHJvd3MvYmVmb3JlMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg1NTVjMGUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2FkZFRvVGhyb3dzL2JlZm9yZTEuamF2YQpAQCAtMCwwICsxLDEzIEBACisvLyAiQWRkIEV4Y2VwdGlvbiB0byBNZXRob2QgU2lnbmF0dXJlIiAidHJ1ZSIKK2NsYXNzIEMgeworICAgIHN0YXRpYyBjbGFzcyBFMSBleHRlbmRzIEV4Y2VwdGlvbiB7IH0KKworICAgIHN0YXRpYyBjbGFzcyBNeVJlc291cmNlIGltcGxlbWVudHMgQXV0b0Nsb3NlYWJsZSB7CisgICAgICAgIHB1YmxpYyB2b2lkIGNsb3NlKCkgdGhyb3dzIEUxIHsgfQorICAgIH0KKworICAgIHZvaWQgbSgpIHsKKyAgICAgICAgdHJ5ICg8Y2FyZXQ+TXlSZXNvdXJjZSByID0gbmV3IE15UmVzb3VyY2UoKSkgeworICAgICAgICB9CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYWRkVG9UaHJvd3MvYmVmb3JlMi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hZGRUb1Rocm93cy9iZWZvcmUyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzNjMzBmZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYWRkVG9UaHJvd3MvYmVmb3JlMi5qYXZhCkBAIC0wLDAgKzEsMTUgQEAKKy8vICJBZGQgRXhjZXB0aW9uIHRvIE1ldGhvZCBTaWduYXR1cmUiICJ0cnVlIgorY2xhc3MgQyB7CisgICAgc3RhdGljIGNsYXNzIEUxIGV4dGVuZHMgRXhjZXB0aW9uIHsgfQorICAgIHN0YXRpYyBjbGFzcyBFMiBleHRlbmRzIEV4Y2VwdGlvbiB7IH0KKworICAgIHN0YXRpYyBjbGFzcyBNeVJlc291cmNlIGltcGxlbWVudHMgQXV0b0Nsb3NlYWJsZSB7CisgICAgICAgIHB1YmxpYyB2b2lkIGRvU29tZXRoaW5nKCkgdGhyb3dzIEUxIHsgfQorICAgICAgICBwdWJsaWMgdm9pZCBjbG9zZSgpIHRocm93cyBFMiB7IH0KKyAgICB9CisKKyAgICB2b2lkIG0oKSB0aHJvd3MgRTEgeworICAgICAgICB0cnkgKDxjYXJldD5NeVJlc291cmNlIHIgPSBuZXcgTXlSZXNvdXJjZSgpKSB7CisgICAgICAgIH0KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hZGRUb1Rocm93cy9iZWZvcmVNdWx0aXBsZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hZGRUb1Rocm93cy9iZWZvcmVNdWx0aXBsZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc1MDJlY2IKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2FkZFRvVGhyb3dzL2JlZm9yZU11bHRpcGxlLmphdmEKQEAgLTAsMCArMSwxMSBAQAorLy8gIkFkZCBFeGNlcHRpb24gdG8gTWV0aG9kIFNpZ25hdHVyZSIgInRydWUiCitpbXBvcnQgamF2YS5pby4qOworCitjbGFzcyBDIHsKKyAgU3RyaW5nIGRldGVjdEVuY29kaW5nKEZpbGUgaW5wdXRGaWxlKSB0aHJvd3MgRmlsZU5vdEZvdW5kRXhjZXB0aW9uLCBPYmplY3RTdHJlYW1FeGNlcHRpb24geworICAgIGZpbmFsIEJ1ZmZlcmVkUmVhZGVyIHJlYWRlciA9IG5ldyBCdWZmZXJlZFJlYWRlcihuZXcgSW5wdXRTdHJlYW1SZWFkZXIobmV3IEZpbGVJbnB1dFN0cmVhbShpbnB1dEZpbGUpLCAiVVRGLTgiKSk7CisgICAgZmluYWwgU3RyaW5nIGxpbmUgPSByZWFkZXIuPGNhcmV0PnJlYWRMaW5lKCk7CisKKyAgICByZXR1cm4gIklTTy04ODU5LTEiOworICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2FkZFR5cGVBcmd1bWVudHMvYWZ0ZXIxLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2FkZFR5cGVBcmd1bWVudHMvYWZ0ZXIxLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWYzMmFmMwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYWRkVHlwZUFyZ3VtZW50cy9hZnRlcjEuamF2YQpAQCAtMCwwICsxLDEzIEBACisvLyAiQWRkIGV4cGxpY2l0IHR5cGUgYXJndW1lbnRzIiAidHJ1ZSIKKworaW1wb3J0IGphdmEudXRpbC5MaXN0OworaW1wb3J0IGphdmEudXRpbC5Db2xsZWN0aW9uczsKKworY2xhc3MgRXhhbXBsZSB7CisgICAgdm9pZCBmKExpc3Q8U3RyaW5nPiBsaXN0KSB7fQorCisgICAgdm9pZCBnKCkgeworICAgICAgICAgICBmKDxjYXJldD5Db2xsZWN0aW9ucy48U3RyaW5nPmVtcHR5TGlzdCgpKTsKKyAgICB9Cit9CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYWRkVHlwZUFyZ3VtZW50cy9hZnRlcjIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYWRkVHlwZUFyZ3VtZW50cy9hZnRlcjIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMTQ4ZjMwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hZGRUeXBlQXJndW1lbnRzL2FmdGVyMi5qYXZhCkBAIC0wLDAgKzEsMTMgQEAKKy8vICJBZGQgZXhwbGljaXQgdHlwZSBhcmd1bWVudHMiICJ0cnVlIgorCitpbXBvcnQgamF2YS51dGlsLkNvbGxlY3Rpb247CitpbXBvcnQgamF2YS51dGlsLkNvbGxlY3Rpb25zOworCitjbGFzcyBFeGFtcGxlIHsKKyAgICB2b2lkIGYoQ29sbGVjdGlvbjxTdHJpbmc+IGxpc3QpIHt9CisKKyAgICB2b2lkIGcoKSB7CisgICAgICAgICAgIGYoPGNhcmV0PkNvbGxlY3Rpb25zLjxTdHJpbmc+ZW1wdHlMaXN0KCkpOworICAgIH0KK30KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hZGRUeXBlQXJndW1lbnRzL2FmdGVyMy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hZGRUeXBlQXJndW1lbnRzL2FmdGVyMy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdkNGNjMzAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2FkZFR5cGVBcmd1bWVudHMvYWZ0ZXIzLmphdmEKQEAgLTAsMCArMSwxMyBAQAorLy8gIkFkZCBleHBsaWNpdCB0eXBlIGFyZ3VtZW50cyIgInRydWUiCisKK2ltcG9ydCBqYXZhLnV0aWwuTGlzdDsKK2ltcG9ydCBqYXZhLnV0aWwuQ29sbGVjdGlvbnM7CisKK2NsYXNzIEV4YW1wbGUgeworICAgIEV4YW1wbGUoTGlzdDxTdHJpbmc+IGxpc3QpIHt9CisKKyAgICB2b2lkIGcoKSB7CisgICAgICAgICAgIG5ldyBFeGFtcGxlKDxjYXJldD5Db2xsZWN0aW9ucy48U3RyaW5nPmVtcHR5TGlzdCgpKTsKKyAgICB9Cit9CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYWRkVHlwZUFyZ3VtZW50cy9hZnRlclVucXVhbGlmaWVkLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2FkZFR5cGVBcmd1bWVudHMvYWZ0ZXJVbnF1YWxpZmllZC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJlN2NiZGMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2FkZFR5cGVBcmd1bWVudHMvYWZ0ZXJVbnF1YWxpZmllZC5qYXZhCkBAIC0wLDAgKzEsNyBAQAorLy8gIkFkZCBleHBsaWNpdCB0eXBlIGFyZ3VtZW50cyIgInRydWUiCitpbXBvcnQgamF2YS51dGlsLio7CitjbGFzcyBUZXN0IHsKKyAgICA8VD4gTGlzdDxUPiBmKCkgeyByZXR1cm4gbmV3IEFycmF5TGlzdDxUPigpOyB9CisgICAgdm9pZCBnKExpc3Q8SW50ZWdlcj4gYSkge30KKyAgICB2b2lkIHNvbWVNZXRob2QoKSB7IGcodGhpcy48SW50ZWdlcj5mKCkpOyB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hZGRUeXBlQXJndW1lbnRzL2FmdGVyVW5xdWFsaWZpZWRTdGF0aWMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYWRkVHlwZUFyZ3VtZW50cy9hZnRlclVucXVhbGlmaWVkU3RhdGljLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmNhMGEwYgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYWRkVHlwZUFyZ3VtZW50cy9hZnRlclVucXVhbGlmaWVkU3RhdGljLmphdmEKQEAgLTAsMCArMSw3IEBACisvLyAiQWRkIGV4cGxpY2l0IHR5cGUgYXJndW1lbnRzIiAidHJ1ZSIKK2ltcG9ydCBqYXZhLnV0aWwuKjsKK2NsYXNzIFRlc3QgeworICAgIHN0YXRpYyA8VD4gTGlzdDxUPiBmKCkgeyByZXR1cm4gbmV3IEFycmF5TGlzdDxUPigpOyB9CisgICAgdm9pZCBnKExpc3Q8SW50ZWdlcj4gYSkge30KKyAgICB2b2lkIHNvbWVNZXRob2QoKSB7IGcoVGVzdC48SW50ZWdlcj5mKCkpOyB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hZGRUeXBlQXJndW1lbnRzL2JlZm9yZTEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYWRkVHlwZUFyZ3VtZW50cy9iZWZvcmUxLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGI0MzNlNwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYWRkVHlwZUFyZ3VtZW50cy9iZWZvcmUxLmphdmEKQEAgLTAsMCArMSwxMyBAQAorLy8gIkFkZCBleHBsaWNpdCB0eXBlIGFyZ3VtZW50cyIgInRydWUiCisKK2ltcG9ydCBqYXZhLnV0aWwuTGlzdDsKK2ltcG9ydCBqYXZhLnV0aWwuQ29sbGVjdGlvbnM7CisKK2NsYXNzIEV4YW1wbGUgeworICAgIHZvaWQgZihMaXN0PFN0cmluZz4gbGlzdCkge30KKworICAgIHZvaWQgZygpIHsKKyAgICAgICAgICAgZig8Y2FyZXQ+Q29sbGVjdGlvbnMuZW1wdHlMaXN0KCkpOworICAgIH0KK30KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hZGRUeXBlQXJndW1lbnRzL2JlZm9yZTIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYWRkVHlwZUFyZ3VtZW50cy9iZWZvcmUyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmRhMWFjZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYWRkVHlwZUFyZ3VtZW50cy9iZWZvcmUyLmphdmEKQEAgLTAsMCArMSwxMyBAQAorLy8gIkFkZCBleHBsaWNpdCB0eXBlIGFyZ3VtZW50cyIgInRydWUiCisKK2ltcG9ydCBqYXZhLnV0aWwuQ29sbGVjdGlvbjsKK2ltcG9ydCBqYXZhLnV0aWwuQ29sbGVjdGlvbnM7CisKK2NsYXNzIEV4YW1wbGUgeworICAgIHZvaWQgZihDb2xsZWN0aW9uPFN0cmluZz4gbGlzdCkge30KKworICAgIHZvaWQgZygpIHsKKyAgICAgICAgICAgZig8Y2FyZXQ+Q29sbGVjdGlvbnMuZW1wdHlMaXN0KCkpOworICAgIH0KK30KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hZGRUeXBlQXJndW1lbnRzL2JlZm9yZTMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYWRkVHlwZUFyZ3VtZW50cy9iZWZvcmUzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDJhZmVlZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYWRkVHlwZUFyZ3VtZW50cy9iZWZvcmUzLmphdmEKQEAgLTAsMCArMSwxMyBAQAorLy8gIkFkZCBleHBsaWNpdCB0eXBlIGFyZ3VtZW50cyIgInRydWUiCisKK2ltcG9ydCBqYXZhLnV0aWwuTGlzdDsKK2ltcG9ydCBqYXZhLnV0aWwuQ29sbGVjdGlvbnM7CisKK2NsYXNzIEV4YW1wbGUgeworICAgIEV4YW1wbGUoTGlzdDxTdHJpbmc+IGxpc3QpIHt9CisKKyAgICB2b2lkIGcoKSB7CisgICAgICAgICAgIG5ldyBFeGFtcGxlKDxjYXJldD5Db2xsZWN0aW9ucy5lbXB0eUxpc3QoKSk7CisgICAgfQorfQorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2FkZFR5cGVBcmd1bWVudHMvYmVmb3JlVW5xdWFsaWZpZWQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYWRkVHlwZUFyZ3VtZW50cy9iZWZvcmVVbnF1YWxpZmllZC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhlZDg2MjQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2FkZFR5cGVBcmd1bWVudHMvYmVmb3JlVW5xdWFsaWZpZWQuamF2YQpAQCAtMCwwICsxLDcgQEAKKy8vICJBZGQgZXhwbGljaXQgdHlwZSBhcmd1bWVudHMiICJ0cnVlIgoraW1wb3J0IGphdmEudXRpbC4qOworY2xhc3MgVGVzdCB7CisgICAgPFQ+IExpc3Q8VD4gZigpIHsgcmV0dXJuIG5ldyBBcnJheUxpc3Q8VD4oKTsgfQorICAgIHZvaWQgZyhMaXN0PEludGVnZXI+IGEpIHt9CisgICAgdm9pZCBzb21lTWV0aG9kKCkgeyBnKGY8Y2FyZXQ+KCkpOyB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hZGRUeXBlQXJndW1lbnRzL2JlZm9yZVVucXVhbGlmaWVkU3RhdGljLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2FkZFR5cGVBcmd1bWVudHMvYmVmb3JlVW5xdWFsaWZpZWRTdGF0aWMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NmJjMDUxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hZGRUeXBlQXJndW1lbnRzL2JlZm9yZVVucXVhbGlmaWVkU3RhdGljLmphdmEKQEAgLTAsMCArMSw3IEBACisvLyAiQWRkIGV4cGxpY2l0IHR5cGUgYXJndW1lbnRzIiAidHJ1ZSIKK2ltcG9ydCBqYXZhLnV0aWwuKjsKK2NsYXNzIFRlc3QgeworICAgIHN0YXRpYyA8VD4gTGlzdDxUPiBmKCkgeyByZXR1cm4gbmV3IEFycmF5TGlzdDxUPigpOyB9CisgICAgdm9pZCBnKExpc3Q8SW50ZWdlcj4gYSkge30KKyAgICB2b2lkIHNvbWVNZXRob2QoKSB7IGcoPGNhcmV0PmYoKSk7IH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2FkZFR5cGVBcmd1bWVudHNDb25kaXRpb25hbC9hZnRlckJvdGhQYXJ0cy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hZGRUeXBlQXJndW1lbnRzQ29uZGl0aW9uYWwvYWZ0ZXJCb3RoUGFydHMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMjI1ZDU0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hZGRUeXBlQXJndW1lbnRzQ29uZGl0aW9uYWwvYWZ0ZXJCb3RoUGFydHMuamF2YQpAQCAtMCwwICsxLDkgQEAKKy8vICJBZGQgZXhwbGljaXQgdHlwZSBhcmd1bWVudHMiICJ0cnVlIgoraW1wb3J0IGphdmEudXRpbC4qOworCitjbGFzcyBUZXN0IHsKKyAgICBzdGF0aWMgPFQ+IExpc3Q8VD4gZigpIHsgcmV0dXJuIG5ldyBBcnJheUxpc3Q8VD4oKTsgfQorICAgIHZvaWQgc29tZU1ldGhvZChib29sZWFuIGIpIHsgCisgICAgICBMaXN0PFN0cmluZz4gcyA9IGIgPyBUZXN0LjxTdHJpbmc+ZigpIDogZigpOyAKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hZGRUeXBlQXJndW1lbnRzQ29uZGl0aW9uYWwvYWZ0ZXJJbnN0YW5jZU1ldGhvZC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hZGRUeXBlQXJndW1lbnRzQ29uZGl0aW9uYWwvYWZ0ZXJJbnN0YW5jZU1ldGhvZC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU3ODNjZWYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2FkZFR5cGVBcmd1bWVudHNDb25kaXRpb25hbC9hZnRlckluc3RhbmNlTWV0aG9kLmphdmEKQEAgLTAsMCArMSw5IEBACisvLyAiQWRkIGV4cGxpY2l0IHR5cGUgYXJndW1lbnRzIiAidHJ1ZSIKK2ltcG9ydCBqYXZhLnV0aWwuKjsKKworY2xhc3MgVGVzdCB7CisgICAgPFQ+IExpc3Q8VD4gZigpIHsgcmV0dXJuIG5ldyBBcnJheUxpc3Q8VD4oKTsgfQorICAgIHZvaWQgc29tZU1ldGhvZChib29sZWFuIGIpIHsgCisgICAgICBMaXN0PFN0cmluZz4gcyA9IGIgPyB0aGlzLjxTdHJpbmc+ZigpIDogbmV3IEFycmF5TGlzdDxTdHJpbmc+KCk7IAorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2FkZFR5cGVBcmd1bWVudHNDb25kaXRpb25hbC9hZnRlck91dGVyQ2xhc3MuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYWRkVHlwZUFyZ3VtZW50c0NvbmRpdGlvbmFsL2FmdGVyT3V0ZXJDbGFzcy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg2NWZkOWYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2FkZFR5cGVBcmd1bWVudHNDb25kaXRpb25hbC9hZnRlck91dGVyQ2xhc3MuamF2YQpAQCAtMCwwICsxLDEzIEBACisvLyAiQWRkIGV4cGxpY2l0IHR5cGUgYXJndW1lbnRzIiAidHJ1ZSIKK2ltcG9ydCBqYXZhLnV0aWwuKjsKKworY2xhc3MgVGVzdCB7CisgICAKKyAgICB2b2lkIHNvbWVNZXRob2QoYm9vbGVhbiBiKSB7IAorICAgICAgTGlzdDxTdHJpbmc+IHMgPSBiID8gRm9vLjxTdHJpbmc+ZigpIDogbmV3IEFycmF5TGlzdDxTdHJpbmc+KCk7IAorICAgIH0KK30KKworY2xhc3MgRm9veworICBzdGF0aWMgPFQ+IExpc3Q8VD4gZigpIHsgcmV0dXJuIG5ldyBBcnJheUxpc3Q8VD4oKTsgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYWRkVHlwZUFyZ3VtZW50c0NvbmRpdGlvbmFsL2FmdGVyUXVhbGlmaWVkSW5zdGFuY2UuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYWRkVHlwZUFyZ3VtZW50c0NvbmRpdGlvbmFsL2FmdGVyUXVhbGlmaWVkSW5zdGFuY2UuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZGY4NWM5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hZGRUeXBlQXJndW1lbnRzQ29uZGl0aW9uYWwvYWZ0ZXJRdWFsaWZpZWRJbnN0YW5jZS5qYXZhCkBAIC0wLDAgKzEsOSBAQAorLy8gIkFkZCBleHBsaWNpdCB0eXBlIGFyZ3VtZW50cyIgInRydWUiCitpbXBvcnQgamF2YS51dGlsLio7CisKK2NsYXNzIFRlc3QgeworICAgIDxUPiBMaXN0PFQ+IGYoKSB7IHJldHVybiBuZXcgQXJyYXlMaXN0PFQ+KCk7IH0KKyAgICB2b2lkIHNvbWVNZXRob2QoVGVzdCB0LCBib29sZWFuIGIpIHsgCisgICAgICBMaXN0PFN0cmluZz4gcyA9IGIgPyB0LjxTdHJpbmc+ZigpIDogbmV3IEFycmF5TGlzdDxTdHJpbmc+KCk7IAorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2FkZFR5cGVBcmd1bWVudHNDb25kaXRpb25hbC9hZnRlclF1YWxpZmllZFN0YXRpYy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hZGRUeXBlQXJndW1lbnRzQ29uZGl0aW9uYWwvYWZ0ZXJRdWFsaWZpZWRTdGF0aWMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZDA2ODJhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hZGRUeXBlQXJndW1lbnRzQ29uZGl0aW9uYWwvYWZ0ZXJRdWFsaWZpZWRTdGF0aWMuamF2YQpAQCAtMCwwICsxLDkgQEAKKy8vICJBZGQgZXhwbGljaXQgdHlwZSBhcmd1bWVudHMiICJ0cnVlIgoraW1wb3J0IGphdmEudXRpbC4qOworCitjbGFzcyBUZXN0IHsKKyAgICBzdGF0aWMgPFQ+IExpc3Q8VD4gZigpIHsgcmV0dXJuIG5ldyBBcnJheUxpc3Q8VD4oKTsgfQorICAgIHZvaWQgc29tZU1ldGhvZChUZXN0IHQsIGJvb2xlYW4gYikgeyAKKyAgICAgIExpc3Q8U3RyaW5nPiBzID0gYiA/IHQuPFN0cmluZz5mKCkgOiBuZXcgQXJyYXlMaXN0PFN0cmluZz4oKTsgCisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYWRkVHlwZUFyZ3VtZW50c0NvbmRpdGlvbmFsL2FmdGVyVW5xdWFsaWZpZWRTdGF0aWMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYWRkVHlwZUFyZ3VtZW50c0NvbmRpdGlvbmFsL2FmdGVyVW5xdWFsaWZpZWRTdGF0aWMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ODUyYzc2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hZGRUeXBlQXJndW1lbnRzQ29uZGl0aW9uYWwvYWZ0ZXJVbnF1YWxpZmllZFN0YXRpYy5qYXZhCkBAIC0wLDAgKzEsOSBAQAorLy8gIkFkZCBleHBsaWNpdCB0eXBlIGFyZ3VtZW50cyIgInRydWUiCitpbXBvcnQgamF2YS51dGlsLio7CisKK2NsYXNzIFRlc3QgeworICAgIHN0YXRpYyA8VD4gTGlzdDxUPiBmKCkgeyByZXR1cm4gbmV3IEFycmF5TGlzdDxUPigpOyB9CisgICAgdm9pZCBzb21lTWV0aG9kKGJvb2xlYW4gYikgeyAKKyAgICAgIExpc3Q8U3RyaW5nPiBzID0gYiA/IFRlc3QuPFN0cmluZz5mKCkgOiBuZXcgQXJyYXlMaXN0PFN0cmluZz4oKTsgCisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYWRkVHlwZUFyZ3VtZW50c0NvbmRpdGlvbmFsL2JlZm9yZUJvdGhQYXJ0cy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hZGRUeXBlQXJndW1lbnRzQ29uZGl0aW9uYWwvYmVmb3JlQm90aFBhcnRzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzgxNTg0MQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYWRkVHlwZUFyZ3VtZW50c0NvbmRpdGlvbmFsL2JlZm9yZUJvdGhQYXJ0cy5qYXZhCkBAIC0wLDAgKzEsOSBAQAorLy8gIkFkZCBleHBsaWNpdCB0eXBlIGFyZ3VtZW50cyIgInRydWUiCitpbXBvcnQgamF2YS51dGlsLio7CisKK2NsYXNzIFRlc3QgeworICAgIHN0YXRpYyA8VD4gTGlzdDxUPiBmKCkgeyByZXR1cm4gbmV3IEFycmF5TGlzdDxUPigpOyB9CisgICAgdm9pZCBzb21lTWV0aG9kKGJvb2xlYW4gYikgeyAKKyAgICAgIExpc3Q8U3RyaW5nPiBzID0gYiA/IGY8Y2FyZXQ+KCkgOiBmKCk7IAorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2FkZFR5cGVBcmd1bWVudHNDb25kaXRpb25hbC9iZWZvcmVJbnN0YW5jZU1ldGhvZC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hZGRUeXBlQXJndW1lbnRzQ29uZGl0aW9uYWwvYmVmb3JlSW5zdGFuY2VNZXRob2QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYWIzOGY3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hZGRUeXBlQXJndW1lbnRzQ29uZGl0aW9uYWwvYmVmb3JlSW5zdGFuY2VNZXRob2QuamF2YQpAQCAtMCwwICsxLDkgQEAKKy8vICJBZGQgZXhwbGljaXQgdHlwZSBhcmd1bWVudHMiICJ0cnVlIgoraW1wb3J0IGphdmEudXRpbC4qOworCitjbGFzcyBUZXN0IHsKKyAgICA8VD4gTGlzdDxUPiBmKCkgeyByZXR1cm4gbmV3IEFycmF5TGlzdDxUPigpOyB9CisgICAgdm9pZCBzb21lTWV0aG9kKGJvb2xlYW4gYikgeyAKKyAgICAgIExpc3Q8U3RyaW5nPiBzID0gYiA/IGY8Y2FyZXQ+KCkgOiBuZXcgQXJyYXlMaXN0PFN0cmluZz4oKTsgCisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYWRkVHlwZUFyZ3VtZW50c0NvbmRpdGlvbmFsL2JlZm9yZU91dGVyQ2xhc3MuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYWRkVHlwZUFyZ3VtZW50c0NvbmRpdGlvbmFsL2JlZm9yZU91dGVyQ2xhc3MuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mOTJjMmRlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hZGRUeXBlQXJndW1lbnRzQ29uZGl0aW9uYWwvYmVmb3JlT3V0ZXJDbGFzcy5qYXZhCkBAIC0wLDAgKzEsMTMgQEAKKy8vICJBZGQgZXhwbGljaXQgdHlwZSBhcmd1bWVudHMiICJ0cnVlIgoraW1wb3J0IGphdmEudXRpbC4qOworCitjbGFzcyBUZXN0IHsKKyAgIAorICAgIHZvaWQgc29tZU1ldGhvZChib29sZWFuIGIpIHsgCisgICAgICBMaXN0PFN0cmluZz4gcyA9IGIgPyBGb28uZjxjYXJldD4oKSA6IG5ldyBBcnJheUxpc3Q8U3RyaW5nPigpOyAKKyAgICB9Cit9CisKK2NsYXNzIEZvb3sKKyAgc3RhdGljIDxUPiBMaXN0PFQ+IGYoKSB7IHJldHVybiBuZXcgQXJyYXlMaXN0PFQ+KCk7IH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2FkZFR5cGVBcmd1bWVudHNDb25kaXRpb25hbC9iZWZvcmVRdWFsaWZpZWRJbnN0YW5jZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hZGRUeXBlQXJndW1lbnRzQ29uZGl0aW9uYWwvYmVmb3JlUXVhbGlmaWVkSW5zdGFuY2UuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZWQ3OTE5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hZGRUeXBlQXJndW1lbnRzQ29uZGl0aW9uYWwvYmVmb3JlUXVhbGlmaWVkSW5zdGFuY2UuamF2YQpAQCAtMCwwICsxLDkgQEAKKy8vICJBZGQgZXhwbGljaXQgdHlwZSBhcmd1bWVudHMiICJ0cnVlIgoraW1wb3J0IGphdmEudXRpbC4qOworCitjbGFzcyBUZXN0IHsKKyAgICA8VD4gTGlzdDxUPiBmKCkgeyByZXR1cm4gbmV3IEFycmF5TGlzdDxUPigpOyB9CisgICAgdm9pZCBzb21lTWV0aG9kKFRlc3QgdCwgYm9vbGVhbiBiKSB7IAorICAgICAgTGlzdDxTdHJpbmc+IHMgPSBiID8gdC5mPGNhcmV0PigpIDogbmV3IEFycmF5TGlzdDxTdHJpbmc+KCk7IAorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2FkZFR5cGVBcmd1bWVudHNDb25kaXRpb25hbC9iZWZvcmVRdWFsaWZpZWRTdGF0aWMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYWRkVHlwZUFyZ3VtZW50c0NvbmRpdGlvbmFsL2JlZm9yZVF1YWxpZmllZFN0YXRpYy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJlZmQyM2MKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2FkZFR5cGVBcmd1bWVudHNDb25kaXRpb25hbC9iZWZvcmVRdWFsaWZpZWRTdGF0aWMuamF2YQpAQCAtMCwwICsxLDkgQEAKKy8vICJBZGQgZXhwbGljaXQgdHlwZSBhcmd1bWVudHMiICJ0cnVlIgoraW1wb3J0IGphdmEudXRpbC4qOworCitjbGFzcyBUZXN0IHsKKyAgICBzdGF0aWMgPFQ+IExpc3Q8VD4gZigpIHsgcmV0dXJuIG5ldyBBcnJheUxpc3Q8VD4oKTsgfQorICAgIHZvaWQgc29tZU1ldGhvZChUZXN0IHQsIGJvb2xlYW4gYikgeyAKKyAgICAgIExpc3Q8U3RyaW5nPiBzID0gYiA/IHQuZjxjYXJldD4oKSA6IG5ldyBBcnJheUxpc3Q8U3RyaW5nPigpOyAKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hZGRUeXBlQXJndW1lbnRzQ29uZGl0aW9uYWwvYmVmb3JlVW5xdWFsaWZpZWRTdGF0aWMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYWRkVHlwZUFyZ3VtZW50c0NvbmRpdGlvbmFsL2JlZm9yZVVucXVhbGlmaWVkU3RhdGljLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGY2MmMzYQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYWRkVHlwZUFyZ3VtZW50c0NvbmRpdGlvbmFsL2JlZm9yZVVucXVhbGlmaWVkU3RhdGljLmphdmEKQEAgLTAsMCArMSw5IEBACisvLyAiQWRkIGV4cGxpY2l0IHR5cGUgYXJndW1lbnRzIiAidHJ1ZSIKK2ltcG9ydCBqYXZhLnV0aWwuKjsKKworY2xhc3MgVGVzdCB7CisgICAgc3RhdGljIDxUPiBMaXN0PFQ+IGYoKSB7IHJldHVybiBuZXcgQXJyYXlMaXN0PFQ+KCk7IH0KKyAgICB2b2lkIHNvbWVNZXRob2QoYm9vbGVhbiBiKSB7IAorICAgICAgTGlzdDxTdHJpbmc+IHMgPSBiID8gZjxjYXJldD4oKSA6IG5ldyBBcnJheUxpc3Q8U3RyaW5nPigpOyAKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hZGRUeXBlQ2FzdC9hZnRlcjEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYWRkVHlwZUNhc3QvYWZ0ZXIxLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzFlNjA1ZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYWRkVHlwZUNhc3QvYWZ0ZXIxLmphdmEKQEAgLTAsMCArMSw3IEBACisvLyAiQ2FzdCB0byAnY2hhciciICJ0cnVlIgorY2xhc3MgYSB7Cisgdm9pZCBmKGludCBpKSB7CisgICA8Y2FyZXQ+Y2hhciBjID0gKGNoYXIpIGk7CisgfQorfQorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2FkZFR5cGVDYXN0L2FmdGVyMTAuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYWRkVHlwZUNhc3QvYWZ0ZXIxMC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY3NzZhZTMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2FkZFR5cGVDYXN0L2FmdGVyMTAuamF2YQpAQCAtMCwwICsxLDE2IEBACisvLyAiQ2FzdCB0byAnQS5JdGVyYXRvcjxqYXZhLmxhbmcuU3RyaW5nPiciICJ0cnVlIgorY2xhc3MgQSB7CisgICAgaW50ZXJmYWNlIEl0ZXJhdG9yPFQ+IHsgICAgICAgIAorICAgIH0KKworICAgIGNsYXNzIExpc3Q8VD4geworICAgICAgICBJdGVyYXRvcjxUPiBpdGVyYXRvcigpIHsKKyAgICAgICAgICAgIHJldHVybiBudWxsOworICAgICAgICB9CisgICAgfQorCisgICAgdm9pZCBtZXRob2QoKSB7CisgICAgICAgIExpc3QgbCA9IG5ldyBMaXN0KCk7CisgICAgICAgIDxjYXJldD5JdGVyYXRvcjxTdHJpbmc+IGl0ID0gKEl0ZXJhdG9yPFN0cmluZz4pIGwuaXRlcmF0b3IoKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hZGRUeXBlQ2FzdC9hZnRlcjIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYWRkVHlwZUNhc3QvYWZ0ZXIyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2ZhYzRlNgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYWRkVHlwZUNhc3QvYWZ0ZXIyLmphdmEKQEAgLTAsMCArMSw3IEBACisvLyAiQ2FzdCB0byAnYiciICJ0cnVlIgorY2xhc3MgYSB7Cisgdm9pZCBmKGEgYSkgeworICAgPGNhcmV0PmIgYiA9IChiKSBhOworIH0KK30KK2NsYXNzIGIgZXh0ZW5kcyBhIHt9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2FkZFR5cGVDYXN0L2FmdGVyMy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hZGRUeXBlQ2FzdC9hZnRlcjMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMWFiYTFiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hZGRUeXBlQ2FzdC9hZnRlcjMuamF2YQpAQCAtMCwwICsxLDYgQEAKKy8vICJDYXN0IHRvICdpbnQnIiAidHJ1ZSIKK2NsYXNzIGEgeworIHZvaWQgZigpIHsKKyAgIGludFtdIGlpID0gezxjYXJldD4oaW50KSAxLjN9OworIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYWRkVHlwZUNhc3QvYWZ0ZXI0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2FkZFR5cGVDYXN0L2FmdGVyNC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEzNDYwMDAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2FkZFR5cGVDYXN0L2FmdGVyNC5qYXZhCkBAIC0wLDAgKzEsNyBAQAorLy8gIkNhc3QgdG8gJ2ludCciICJ0cnVlIgorY2xhc3MgYSB7Cisgdm9pZCBmKCkgeworICAgaW50IGk7CisgICA8Y2FyZXQ+aSA9IChpbnQpIDMuNGY7CisgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hZGRUeXBlQ2FzdC9hZnRlcjUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYWRkVHlwZUNhc3QvYWZ0ZXI1LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWFlYmIyNDIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2FkZFR5cGVDYXN0L2FmdGVyNS5qYXZhCkBAIC0wLDAgKzEsNyBAQAorLy8gIkNhc3QgdG8gJ2Zsb2F0JyIgInRydWUiCitjbGFzcyBhIHsKKyBmbG9hdCBmKCkgeworICAgZG91YmxlIGQgPSA0OworICAgcmV0dXJuIDxjYXJldD4oZmxvYXQpIGQ7CisgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hZGRUeXBlQ2FzdC9hZnRlcjYuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYWRkVHlwZUNhc3QvYWZ0ZXI2LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGNiY2Y3ZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYWRkVHlwZUNhc3QvYWZ0ZXI2LmphdmEKQEAgLTAsMCArMSw4IEBACisvLyAiQ2FzdCB0byAnaW50JyIgInRydWUiCitjbGFzcyBhIHsKKyB2b2lkIGYoKSB7CisgICBkb3VibGUgZCA9IDQ7CisgICBzd2l0Y2ggKDxjYXJldD4oaW50KSBkKSB7CisgICB9CisgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hZGRUeXBlQ2FzdC9hZnRlcjcuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYWRkVHlwZUNhc3QvYWZ0ZXI3LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTcwZWUxOQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYWRkVHlwZUNhc3QvYWZ0ZXI3LmphdmEKQEAgLTAsMCArMSw5IEBACisvLyAiQ2FzdCB0byAnY2hhciciICJ0cnVlIgorY2xhc3MgYSB7Cisgdm9pZCBmKCkgeworICAgZG91YmxlIGQgPSA0OworICAgc3dpdGNoICgnYycpIHsKKyAgICAgY2FzZSA8Y2FyZXQ+KGNoYXIpIDMuMzoKKyAgIH0KKyB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2FkZFR5cGVDYXN0L2FmdGVyOS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hZGRUeXBlQ2FzdC9hZnRlcjkuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42Njg2ZTAzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hZGRUeXBlQ2FzdC9hZnRlcjkuamF2YQpAQCAtMCwwICsxLDcgQEAKKy8vICJDYXN0IHRvICdqYXZhLmxhbmcuU3RyaW5nJyIgInRydWUiCitjbGFzcyBhIHsKKyB2b2lkIGYoKSB7CisgICBPYmplY3QgeSA9IG51bGw7CisgICBTdHJpbmcgcyA9IDxjYXJldD4oU3RyaW5nKSB5OworIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYWRkVHlwZUNhc3QvYWZ0ZXJUZXJuYXJ5LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2FkZFR5cGVDYXN0L2FmdGVyVGVybmFyeS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFlZDE5YjUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2FkZFR5cGVDYXN0L2FmdGVyVGVybmFyeS5qYXZhCkBAIC0wLDAgKzEsNyBAQAorLy8gIkNhc3QgdG8gJ0InIiAidHJ1ZSIKK2NsYXNzIEEgeworIHZvaWQgZihCIGIpIHsKKyAgIEIgcyA9IDxjYXJldD5iID09IG51bGwgPyAoQikgdGhpcyA6IGI7CisgfQorfQorY2xhc3MgQiBleHRlbmRzIEEge30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2FkZFR5cGVDYXN0L2FmdGVyVGVybmFyeTIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYWRkVHlwZUNhc3QvYWZ0ZXJUZXJuYXJ5Mi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkxYjM3OGMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2FkZFR5cGVDYXN0L2FmdGVyVGVybmFyeTIuamF2YQpAQCAtMCwwICsxLDcgQEAKKy8vICJDYXN0IHRvICdCJyIgInRydWUiCitjbGFzcyBBIHsKKyB2b2lkIGYoQiBiKSB7CisgICBCIHMgPSA8Y2FyZXQ+YiA9PSBudWxsID8gbnVsbCA6IChCKSB0aGlzOworIH0KK30KK2NsYXNzIEIgZXh0ZW5kcyBBIHt9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hZGRUeXBlQ2FzdC9hZnRlclRlcm5hcnlJbXBvc3NpYmxlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2FkZFR5cGVDYXN0L2FmdGVyVGVybmFyeUltcG9zc2libGUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NmE4NmQ2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hZGRUeXBlQ2FzdC9hZnRlclRlcm5hcnlJbXBvc3NpYmxlLmphdmEKQEAgLTAsMCArMSw3IEBACisvLyAiQ2FzdCB0byAnQiciICJ0cnVlIgorY2xhc3MgQSB7Cisgdm9pZCBmKEIgYikgeworICAgQiBzID0gPGNhcmV0PihCKSAoYiA9PSBudWxsID8gdGhpcyA6IHRoaXMpOworIH0KK30KK2NsYXNzIEIgZXh0ZW5kcyBBIHt9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hZGRUeXBlQ2FzdC9iZWZvcmUxLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2FkZFR5cGVDYXN0L2JlZm9yZTEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MjMyMDJlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hZGRUeXBlQ2FzdC9iZWZvcmUxLmphdmEKQEAgLTAsMCArMSw3IEBACisvLyAiQ2FzdCB0byAnY2hhciciICJ0cnVlIgorY2xhc3MgYSB7Cisgdm9pZCBmKGludCBpKSB7CisgICA8Y2FyZXQ+Y2hhciBjID0gaTsKKyB9Cit9CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYWRkVHlwZUNhc3QvYmVmb3JlMTAuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYWRkVHlwZUNhc3QvYmVmb3JlMTAuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMDAyMTExCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hZGRUeXBlQ2FzdC9iZWZvcmUxMC5qYXZhCkBAIC0wLDAgKzEsMTYgQEAKKy8vICJDYXN0IHRvICdBLkl0ZXJhdG9yPGphdmEubGFuZy5TdHJpbmc+JyIgInRydWUiCitjbGFzcyBBIHsKKyAgICBpbnRlcmZhY2UgSXRlcmF0b3I8VD4geyAgICAgICAgCisgICAgfQorCisgICAgY2xhc3MgTGlzdDxUPiB7CisgICAgICAgIEl0ZXJhdG9yPFQ+IGl0ZXJhdG9yKCkgeworICAgICAgICAgICAgcmV0dXJuIG51bGw7CisgICAgICAgIH0KKyAgICB9CisKKyAgICB2b2lkIG1ldGhvZCgpIHsKKyAgICAgICAgTGlzdCBsID0gbmV3IExpc3QoKTsKKyAgICAgICAgPGNhcmV0Pkl0ZXJhdG9yPFN0cmluZz4gaXQgPSAoSXRlcmF0b3I8T2JqZWN0PilsLml0ZXJhdG9yKCk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYWRkVHlwZUNhc3QvYmVmb3JlMi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hZGRUeXBlQ2FzdC9iZWZvcmUyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2JjY2NkZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYWRkVHlwZUNhc3QvYmVmb3JlMi5qYXZhCkBAIC0wLDAgKzEsNyBAQAorLy8gIkNhc3QgdG8gJ2InIiAidHJ1ZSIKK2NsYXNzIGEgeworIHZvaWQgZihhIGEpIHsKKyAgIDxjYXJldD5iIGIgPSBhOworIH0KK30KK2NsYXNzIGIgZXh0ZW5kcyBhIHt9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2FkZFR5cGVDYXN0L2JlZm9yZTMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYWRkVHlwZUNhc3QvYmVmb3JlMy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQzNGEzNWYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2FkZFR5cGVDYXN0L2JlZm9yZTMuamF2YQpAQCAtMCwwICsxLDYgQEAKKy8vICJDYXN0IHRvICdpbnQnIiAidHJ1ZSIKK2NsYXNzIGEgeworIHZvaWQgZigpIHsKKyAgIGludFtdIGlpID0geyA8Y2FyZXQ+MS4zIH07CisgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hZGRUeXBlQ2FzdC9iZWZvcmU0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2FkZFR5cGVDYXN0L2JlZm9yZTQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNzA4NDM5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hZGRUeXBlQ2FzdC9iZWZvcmU0LmphdmEKQEAgLTAsMCArMSw3IEBACisvLyAiQ2FzdCB0byAnaW50JyIgInRydWUiCitjbGFzcyBhIHsKKyB2b2lkIGYoKSB7CisgICBpbnQgaTsKKyAgIDxjYXJldD5pID0gMy40ZjsKKyB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2FkZFR5cGVDYXN0L2JlZm9yZTUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYWRkVHlwZUNhc3QvYmVmb3JlNS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg4YjM0YjIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2FkZFR5cGVDYXN0L2JlZm9yZTUuamF2YQpAQCAtMCwwICsxLDcgQEAKKy8vICJDYXN0IHRvICdmbG9hdCciICJ0cnVlIgorY2xhc3MgYSB7CisgZmxvYXQgZigpIHsKKyAgIGRvdWJsZSBkID0gNDsKKyAgIHJldHVybiA8Y2FyZXQ+ZDsKKyB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2FkZFR5cGVDYXN0L2JlZm9yZTYuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYWRkVHlwZUNhc3QvYmVmb3JlNi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZhNzQ2MWIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2FkZFR5cGVDYXN0L2JlZm9yZTYuamF2YQpAQCAtMCwwICsxLDggQEAKKy8vICJDYXN0IHRvICdpbnQnIiAidHJ1ZSIKK2NsYXNzIGEgeworIHZvaWQgZigpIHsKKyAgIGRvdWJsZSBkID0gNDsKKyAgIHN3aXRjaCAoPGNhcmV0PmQpIHsKKyAgIH0KKyB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2FkZFR5cGVDYXN0L2JlZm9yZTcuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYWRkVHlwZUNhc3QvYmVmb3JlNy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYyYTUwMzUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2FkZFR5cGVDYXN0L2JlZm9yZTcuamF2YQpAQCAtMCwwICsxLDkgQEAKKy8vICJDYXN0IHRvICdjaGFyJyIgInRydWUiCitjbGFzcyBhIHsKKyB2b2lkIGYoKSB7CisgICBkb3VibGUgZCA9IDQ7CisgICBzd2l0Y2ggKCdjJykgeworICAgICBjYXNlIDxjYXJldD4zLjM6CisgICB9CisgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hZGRUeXBlQ2FzdC9iZWZvcmU4LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2FkZFR5cGVDYXN0L2JlZm9yZTguamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZWJjOGQzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hZGRUeXBlQ2FzdC9iZWZvcmU4LmphdmEKQEAgLTAsMCArMSw2IEBACisvLyAiQ2FzdCB0byAnamF2YS5sYW5nLlN0cmluZyciICJmYWxzZSIKK2NsYXNzIGEgeworIHZvaWQgZigpIHsKKyAgIFN0cmluZyBzID0gPGNhcmV0PjE7CisgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hZGRUeXBlQ2FzdC9iZWZvcmU5LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2FkZFR5cGVDYXN0L2JlZm9yZTkuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMjZlZDc3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hZGRUeXBlQ2FzdC9iZWZvcmU5LmphdmEKQEAgLTAsMCArMSw3IEBACisvLyAiQ2FzdCB0byAnamF2YS5sYW5nLlN0cmluZyciICJ0cnVlIgorY2xhc3MgYSB7Cisgdm9pZCBmKCkgeworICAgT2JqZWN0IHkgPSBudWxsOworICAgU3RyaW5nIHMgPSA8Y2FyZXQ+KEludGVnZXIpIHk7CisgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hZGRUeXBlQ2FzdC9iZWZvcmVUZXJuYXJ5LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2FkZFR5cGVDYXN0L2JlZm9yZVRlcm5hcnkuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYzA3OTk1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hZGRUeXBlQ2FzdC9iZWZvcmVUZXJuYXJ5LmphdmEKQEAgLTAsMCArMSw3IEBACisvLyAiQ2FzdCB0byAnQiciICJ0cnVlIgorY2xhc3MgQSB7Cisgdm9pZCBmKEIgYikgeworICAgQiBzID0gPGNhcmV0PmIgPT0gbnVsbCA/IHRoaXMgOiBiOworIH0KK30KK2NsYXNzIEIgZXh0ZW5kcyBBIHt9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hZGRUeXBlQ2FzdC9iZWZvcmVUZXJuYXJ5Mi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hZGRUeXBlQ2FzdC9iZWZvcmVUZXJuYXJ5Mi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNmYjcwMzMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2FkZFR5cGVDYXN0L2JlZm9yZVRlcm5hcnkyLmphdmEKQEAgLTAsMCArMSw3IEBACisvLyAiQ2FzdCB0byAnQiciICJ0cnVlIgorY2xhc3MgQSB7Cisgdm9pZCBmKEIgYikgeworICAgQiBzID0gPGNhcmV0PmIgPT0gbnVsbCA/IG51bGwgOiB0aGlzOworIH0KK30KK2NsYXNzIEIgZXh0ZW5kcyBBIHt9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hZGRUeXBlQ2FzdC9iZWZvcmVUZXJuYXJ5SW1wb3NzaWJsZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hZGRUeXBlQ2FzdC9iZWZvcmVUZXJuYXJ5SW1wb3NzaWJsZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE2YmY5NTEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2FkZFR5cGVDYXN0L2JlZm9yZVRlcm5hcnlJbXBvc3NpYmxlLmphdmEKQEAgLTAsMCArMSw3IEBACisvLyAiQ2FzdCB0byAnQiciICJ0cnVlIgorY2xhc3MgQSB7Cisgdm9pZCBmKEIgYikgeworICAgQiBzID0gPGNhcmV0PmIgPT0gbnVsbCA/IHRoaXMgOiB0aGlzOworIH0KK30KK2NsYXNzIEIgZXh0ZW5kcyBBIHt9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hZGRWYXJpYWJsZUluaXRpYWxpemVyL2FmdGVyMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hZGRWYXJpYWJsZUluaXRpYWxpemVyL2FmdGVyMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdmMWUzMDIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2FkZFZhcmlhYmxlSW5pdGlhbGl6ZXIvYWZ0ZXIxLmphdmEKQEAgLTAsMCArMSwxMCBAQAorLy8gIkluaXRpYWxpemUgdmFyaWFibGUgJ2knIiAidHJ1ZSIKKworY2xhc3MgQUNsYXNzCit7CisgIGludCBmKCkgeworICAgIGludCBpID0gPGNhcmV0PjxzZWxlY3Rpb24+MDwvc2VsZWN0aW9uPjsKKyAgICByZXR1cm4gaTsKKyAgfQorfQorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2FkZFZhcmlhYmxlSW5pdGlhbGl6ZXIvYWZ0ZXIyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2FkZFZhcmlhYmxlSW5pdGlhbGl6ZXIvYWZ0ZXIyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjNhMDhkZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYWRkVmFyaWFibGVJbml0aWFsaXplci9hZnRlcjIuamF2YQpAQCAtMCwwICsxLDcgQEAKKy8vICJJbml0aWFsaXplIHZhcmlhYmxlICdmJyIgInRydWUiCisKK2NsYXNzIEFDbGFzcworeworICAgIGZpbmFsIEFDbGFzcyBmID0gPGNhcmV0PjxzZWxlY3Rpb24+bnVsbDwvc2VsZWN0aW9uPjsKK30KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hZGRWYXJpYWJsZUluaXRpYWxpemVyL2JlZm9yZTEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYWRkVmFyaWFibGVJbml0aWFsaXplci9iZWZvcmUxLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDFjMmNiNgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYWRkVmFyaWFibGVJbml0aWFsaXplci9iZWZvcmUxLmphdmEKQEAgLTAsMCArMSwxMCBAQAorLy8gIkluaXRpYWxpemUgdmFyaWFibGUgJ2knIiAidHJ1ZSIKKworY2xhc3MgQUNsYXNzCit7CisgIGludCBmKCkgeworICAgIGludCBpOworICAgIHJldHVybiA8Y2FyZXQ+aTsKKyAgfQorfQorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2FkZFZhcmlhYmxlSW5pdGlhbGl6ZXIvYmVmb3JlMi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hZGRWYXJpYWJsZUluaXRpYWxpemVyL2JlZm9yZTIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NjA5MTc3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hZGRWYXJpYWJsZUluaXRpYWxpemVyL2JlZm9yZTIuamF2YQpAQCAtMCwwICsxLDcgQEAKKy8vICJJbml0aWFsaXplIHZhcmlhYmxlICdmJyIgInRydWUiCisKK2NsYXNzIEFDbGFzcworeworICAgIGZpbmFsIEFDbGFzcyBmPGNhcmV0PjsKK30KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hZGRWYXJpYWJsZUluaXRpYWxpemVyL2JlZm9yZURpc2FibGVkRm9yRm9yZWFjaFBhcmFtLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2FkZFZhcmlhYmxlSW5pdGlhbGl6ZXIvYmVmb3JlRGlzYWJsZWRGb3JGb3JlYWNoUGFyYW0uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZDZhOGIxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hZGRWYXJpYWJsZUluaXRpYWxpemVyL2JlZm9yZURpc2FibGVkRm9yRm9yZWFjaFBhcmFtLmphdmEKQEAgLTAsMCArMSw5IEBACisvLyAiSW5pdGlhbGl6ZSB2YXJpYWJsZSAnZiciICJmYWxzZSIKKworY2xhc3MgQUNsYXNzCit7CisgIHsKKyAgICBmb3IoU3RyaW5nIGYgOiA8Y2FyZXQ+Zil7fQorICB9Cit9CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYW5ub3RhdGVNZXRob2QvYWZ0ZXJBYm9ydC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hbm5vdGF0ZU1ldGhvZC9hZnRlckFib3J0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTVkNjM3MwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYW5ub3RhdGVNZXRob2QvYWZ0ZXJBYm9ydC5qYXZhCkBAIC0wLDAgKzEsMTkgQEAKKy8vICJBbm5vdGF0ZSBtZXRob2QgYXMgJ0BOb3ROdWxsJyIgInRydWUiCitpbXBvcnQgb3JnLmpldGJyYWlucy5hbm5vdGF0aW9ucy5Ob3ROdWxsOworCitjbGFzcyBYIHsKKyAgICBATm90TnVsbAorICAgIFN0cmluZyBmb28oKSB7CisgICAgICAgIHJldHVybiAiWCI7CisgICAgfQorfQorY2xhc3MgWSBleHRlbmRzIFh7CisgICAgU3RyaW5nIGZvbygpIHsKKyAgICAgICAgcmV0dXJuICJZIjsKKyAgICB9Cit9CitjbGFzcyBaIGV4dGVuZHMgWSB7CisgICAgU3RyaW5nIGZvbzxjYXJldD4oKSB7IC8vIHRyaWdnZXIgcXVpY2sgZml4IGZvciBpbnNwZWN0aW9uIGhlcmUKKyAgICAgICAgcmV0dXJuICJaIjsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2Fubm90YXRlTWV0aG9kL2FmdGVyQW5ub0FsbC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hbm5vdGF0ZU1ldGhvZC9hZnRlckFubm9BbGwuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZmJjMzg5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hbm5vdGF0ZU1ldGhvZC9hZnRlckFubm9BbGwuamF2YQpAQCAtMCwwICsxLDIxIEBACisvLyAiQW5ub3RhdGUgbWV0aG9kIGFzICdATm90TnVsbCciICJ0cnVlIgoraW1wb3J0IG9yZy5qZXRicmFpbnMuYW5ub3RhdGlvbnMuTm90TnVsbDsKKworY2xhc3MgWCB7CisgICAgQE5vdE51bGwKKyAgICBTdHJpbmcgYW5ub3RhdGVCYXNlKCkgeworICAgICAgICByZXR1cm4gIlgiOworICAgIH0KK30KK2NsYXNzIFkgZXh0ZW5kcyBYeworICAgIEBOb3ROdWxsCisgICAgU3RyaW5nIGFubm90YXRlQmFzZSgpIHsKKyAgICAgICAgcmV0dXJuICJZIjsKKyAgICB9Cit9CitjbGFzcyBaIGV4dGVuZHMgWSB7CisgICAgQE5vdE51bGwKKyAgICBTdHJpbmcgYW5ub3RhdGVCYXNlPGNhcmV0PigpIHsgLy8gdHJpZ2dlciBxdWljayBmaXggZm9yIGluc3BlY3Rpb24gaGVyZQorICAgICAgICByZXR1cm4gIloiOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYW5ub3RhdGVNZXRob2QvYWZ0ZXJDb25mbGljdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hbm5vdGF0ZU1ldGhvZC9hZnRlckNvbmZsaWN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWVjNWI0MwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYW5ub3RhdGVNZXRob2QvYWZ0ZXJDb25mbGljdC5qYXZhCkBAIC0wLDAgKzEsOCBAQAorLy8gIlJlbW92ZSBhbm5vdGF0aW9uIiAidHJ1ZSIKKworaW1wb3J0IG9yZy5qZXRicmFpbnMuYW5ub3RhdGlvbnMuKjsKKworY2xhc3MgRm9vIHsKKyAgPGNhcmV0PkBOdWxsYWJsZQorICBTdHJpbmcgZm9vKCl7cmV0dXJuICIiO30KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2Fubm90YXRlTWV0aG9kL2FmdGVyRG9Ob3RBbm5vbC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hbm5vdGF0ZU1ldGhvZC9hZnRlckRvTm90QW5ub2wuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZTk5Y2UxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hbm5vdGF0ZU1ldGhvZC9hZnRlckRvTm90QW5ub2wuamF2YQpAQCAtMCwwICsxLDIwIEBACisvLyAiQW5ub3RhdGUgbWV0aG9kIGFzICdATm90TnVsbCciICJ0cnVlIgoraW1wb3J0IG9yZy5qZXRicmFpbnMuYW5ub3RhdGlvbnMuTm90TnVsbDsKKworY2xhc3MgWCB7CisgICAgQE5vdE51bGwKKyAgICBTdHJpbmcgZG9udEFubm90YXRlQmFzZSgpIHsKKyAgICAgICAgcmV0dXJuICJYIjsKKyAgICB9Cit9CitjbGFzcyBZIGV4dGVuZHMgWHsKKyAgICBTdHJpbmcgZG9udEFubm90YXRlQmFzZSgpIHsKKyAgICAgICAgcmV0dXJuICJZIjsKKyAgICB9Cit9CitjbGFzcyBaIGV4dGVuZHMgWSB7CisgICAgQE5vdE51bGwKKyAgICBTdHJpbmcgZG9udEFubm90YXRlQmFzZTxjYXJldD4oKSB7IC8vIHRyaWdnZXIgcXVpY2sgZml4IGZvciBpbnNwZWN0aW9uIGhlcmUKKyAgICAgICAgcmV0dXJuICJaIjsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2Fubm90YXRlTWV0aG9kL2FmdGVyT3ZlcnJpZGRlbk1ldGhvZHMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYW5ub3RhdGVNZXRob2QvYWZ0ZXJPdmVycmlkZGVuTWV0aG9kcy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ1NDRiYTYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2Fubm90YXRlTWV0aG9kL2FmdGVyT3ZlcnJpZGRlbk1ldGhvZHMuamF2YQpAQCAtMCwwICsxLDIzIEBACisvLyAiQW5ub3RhdGUgb3ZlcnJpZGRlbiBtZXRob2RzIGFzICdATm90TnVsbCciICJ0cnVlIgoraW1wb3J0IG9yZy5qZXRicmFpbnMuYW5ub3RhdGlvbnMuTm90TnVsbDsKKworYWJzdHJhY3QgY2xhc3MgUDIgeworICAgIEBOb3ROdWxsPGNhcmV0PgorICAgIFN0cmluZyBmb28oQE5vdE51bGwgUCBwKSB7CisgICAgICAgIHJldHVybiAiIjsKKyAgICB9Cit9CisKK2NsYXNzIFBQUCBleHRlbmRzIFAyIHsKKyAgICBATm90TnVsbAorICAgIFN0cmluZyBmb28oUCBwKSB7CisgICAgICAgIHJldHVybiBzdXBlci5mb28ocCk7CisgICAgfQorfQorY2xhc3MgUFBQMiBleHRlbmRzIFAyIHsKKworICAgIEBOb3ROdWxsCisgICAgU3RyaW5nIGZvbyhQIHApIHsKKyAgICAgICAgcmV0dXJuIHN1cGVyLmZvbyhwKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hbm5vdGF0ZU1ldGhvZC9hZnRlck92ZXJyaWRkZW5QYXJhbWV0ZXJzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2Fubm90YXRlTWV0aG9kL2FmdGVyT3ZlcnJpZGRlblBhcmFtZXRlcnMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNGVlMzIwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hbm5vdGF0ZU1ldGhvZC9hZnRlck92ZXJyaWRkZW5QYXJhbWV0ZXJzLmphdmEKQEAgLTAsMCArMSwyMSBAQAorLy8gIkFubm90YXRlIG92ZXJyaWRkZW4gbWV0aG9kIHBhcmFtZXRlcnMgYXMgJ0BOb3ROdWxsJyIgInRydWUiCitpbXBvcnQgb3JnLmpldGJyYWlucy5hbm5vdGF0aW9ucy5Ob3ROdWxsOworCithYnN0cmFjdCBjbGFzcyBQMiB7CisgICAgQE5vdE51bGwKKyAgICBTdHJpbmcgZm9vKEBOb3ROdWxsPGNhcmV0PiBQIHApIHsKKyAgICAgICAgcmV0dXJuICIiOworICAgIH0KK30KKworY2xhc3MgUFBQIGV4dGVuZHMgUDIgeworICAgIFN0cmluZyBmb28oQE5vdE51bGwgUCBwKSB7CisgICAgICAgIHJldHVybiBzdXBlci5mb28ocCk7CisgICAgfQorfQorY2xhc3MgUFBQMiBleHRlbmRzIFAyIHsKKworICAgIFN0cmluZyBmb28oQE5vdE51bGwgUCBwKSB7CisgICAgICAgIHJldHVybiBzdXBlci5mb28ocCk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYW5ub3RhdGVNZXRob2QvYWZ0ZXJQcmltaXRpdmUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYW5ub3RhdGVNZXRob2QvYWZ0ZXJQcmltaXRpdmUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYTg3NzAzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hbm5vdGF0ZU1ldGhvZC9hZnRlclByaW1pdGl2ZS5qYXZhCkBAIC0wLDAgKzEsNyBAQAorLy8gIlJlbW92ZSBhbm5vdGF0aW9uIiAidHJ1ZSIKKworaW1wb3J0IG9yZy5qZXRicmFpbnMuYW5ub3RhdGlvbnMuKjsKKworY2xhc3MgRm9vIHsKKyAgPGNhcmV0PmludCBmb28oKXtyZXR1cm4gMDt9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hbm5vdGF0ZU1ldGhvZC9hZnRlclJlbW92ZUFudGkuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYW5ub3RhdGVNZXRob2QvYWZ0ZXJSZW1vdmVBbnRpLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmEwNzU4OQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYW5ub3RhdGVNZXRob2QvYWZ0ZXJSZW1vdmVBbnRpLmphdmEKQEAgLTAsMCArMSwxNiBAQAorLy8gIkFubm90YXRlIG92ZXJyaWRkZW4gbWV0aG9kcyBhcyAnQE5vdE51bGwnIiAidHJ1ZSIKKworaW1wb3J0IG9yZy5qZXRicmFpbnMuYW5ub3RhdGlvbnMuKjsKKworIHB1YmxpYyBjbGFzcyBYRU0geworICAgICA8Y2FyZXQ+QE5vdE51bGwKKyAgICAgU3RyaW5nIGYoKXsKKyAgICAgICAgIHJldHVybiAiIjsKKyAgICAgfQorIH0KKyBjbGFzcyBYQyBleHRlbmRzIFhFTSB7CisgICAgIEBOb3ROdWxsCisgICAgIFN0cmluZyBmKCkgeworICAgICAgICAgcmV0dXJuICIiOworICAgICB9CisgfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hbm5vdGF0ZU1ldGhvZC9iZWZvcmVBYm9ydC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hbm5vdGF0ZU1ldGhvZC9iZWZvcmVBYm9ydC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU1ZDYzNzMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2Fubm90YXRlTWV0aG9kL2JlZm9yZUFib3J0LmphdmEKQEAgLTAsMCArMSwxOSBAQAorLy8gIkFubm90YXRlIG1ldGhvZCBhcyAnQE5vdE51bGwnIiAidHJ1ZSIKK2ltcG9ydCBvcmcuamV0YnJhaW5zLmFubm90YXRpb25zLk5vdE51bGw7CisKK2NsYXNzIFggeworICAgIEBOb3ROdWxsCisgICAgU3RyaW5nIGZvbygpIHsKKyAgICAgICAgcmV0dXJuICJYIjsKKyAgICB9Cit9CitjbGFzcyBZIGV4dGVuZHMgWHsKKyAgICBTdHJpbmcgZm9vKCkgeworICAgICAgICByZXR1cm4gIlkiOworICAgIH0KK30KK2NsYXNzIFogZXh0ZW5kcyBZIHsKKyAgICBTdHJpbmcgZm9vPGNhcmV0PigpIHsgLy8gdHJpZ2dlciBxdWljayBmaXggZm9yIGluc3BlY3Rpb24gaGVyZQorICAgICAgICByZXR1cm4gIloiOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYW5ub3RhdGVNZXRob2QvYmVmb3JlQW5ub0FsbC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hbm5vdGF0ZU1ldGhvZC9iZWZvcmVBbm5vQWxsLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWZlM2FhOAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYW5ub3RhdGVNZXRob2QvYmVmb3JlQW5ub0FsbC5qYXZhCkBAIC0wLDAgKzEsMTkgQEAKKy8vICJBbm5vdGF0ZSBtZXRob2QgYXMgJ0BOb3ROdWxsJyIgInRydWUiCitpbXBvcnQgb3JnLmpldGJyYWlucy5hbm5vdGF0aW9ucy5Ob3ROdWxsOworCitjbGFzcyBYIHsKKyAgICBATm90TnVsbAorICAgIFN0cmluZyBhbm5vdGF0ZUJhc2UoKSB7CisgICAgICAgIHJldHVybiAiWCI7CisgICAgfQorfQorY2xhc3MgWSBleHRlbmRzIFh7CisgICAgU3RyaW5nIGFubm90YXRlQmFzZSgpIHsKKyAgICAgICAgcmV0dXJuICJZIjsKKyAgICB9Cit9CitjbGFzcyBaIGV4dGVuZHMgWSB7CisgICAgU3RyaW5nIGFubm90YXRlQmFzZTxjYXJldD4oKSB7IC8vIHRyaWdnZXIgcXVpY2sgZml4IGZvciBpbnNwZWN0aW9uIGhlcmUKKyAgICAgICAgcmV0dXJuICJaIjsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2Fubm90YXRlTWV0aG9kL2JlZm9yZUNvbmZsaWN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2Fubm90YXRlTWV0aG9kL2JlZm9yZUNvbmZsaWN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjYzNGNmYQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYW5ub3RhdGVNZXRob2QvYmVmb3JlQ29uZmxpY3QuamF2YQpAQCAtMCwwICsxLDggQEAKKy8vICJSZW1vdmUgYW5ub3RhdGlvbiIgInRydWUiCisKK2ltcG9ydCBvcmcuamV0YnJhaW5zLmFubm90YXRpb25zLio7CisKK2NsYXNzIEZvbyB7CisgIDxjYXJldD5ATm90TnVsbCBATnVsbGFibGUKKyAgU3RyaW5nIGZvbygpe3JldHVybiAiIjt9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hbm5vdGF0ZU1ldGhvZC9iZWZvcmVEb05vdEFubm9sLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2Fubm90YXRlTWV0aG9kL2JlZm9yZURvTm90QW5ub2wuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMmY2ZTQ5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hbm5vdGF0ZU1ldGhvZC9iZWZvcmVEb05vdEFubm9sLmphdmEKQEAgLTAsMCArMSwxOSBAQAorLy8gIkFubm90YXRlIG1ldGhvZCBhcyAnQE5vdE51bGwnIiAidHJ1ZSIKK2ltcG9ydCBvcmcuamV0YnJhaW5zLmFubm90YXRpb25zLk5vdE51bGw7CisKK2NsYXNzIFggeworICAgIEBOb3ROdWxsCisgICAgU3RyaW5nIGRvbnRBbm5vdGF0ZUJhc2UoKSB7CisgICAgICAgIHJldHVybiAiWCI7CisgICAgfQorfQorY2xhc3MgWSBleHRlbmRzIFh7CisgICAgU3RyaW5nIGRvbnRBbm5vdGF0ZUJhc2UoKSB7CisgICAgICAgIHJldHVybiAiWSI7CisgICAgfQorfQorY2xhc3MgWiBleHRlbmRzIFkgeworICAgIFN0cmluZyBkb250QW5ub3RhdGVCYXNlPGNhcmV0PigpIHsgLy8gdHJpZ2dlciBxdWljayBmaXggZm9yIGluc3BlY3Rpb24gaGVyZQorICAgICAgICByZXR1cm4gIloiOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYW5ub3RhdGVNZXRob2QvYmVmb3JlT3ZlcnJpZGRlbk1ldGhvZHMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYW5ub3RhdGVNZXRob2QvYmVmb3JlT3ZlcnJpZGRlbk1ldGhvZHMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lODE3OTgwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hbm5vdGF0ZU1ldGhvZC9iZWZvcmVPdmVycmlkZGVuTWV0aG9kcy5qYXZhCkBAIC0wLDAgKzEsMjEgQEAKKy8vICJBbm5vdGF0ZSBvdmVycmlkZGVuIG1ldGhvZHMgYXMgJ0BOb3ROdWxsJyIgInRydWUiCitpbXBvcnQgb3JnLmpldGJyYWlucy5hbm5vdGF0aW9ucy5Ob3ROdWxsOworCithYnN0cmFjdCBjbGFzcyBQMiB7CisgICAgQE5vdE51bGw8Y2FyZXQ+CisgICAgU3RyaW5nIGZvbyhATm90TnVsbCBQIHApIHsKKyAgICAgICAgcmV0dXJuICIiOworICAgIH0KK30KKworY2xhc3MgUFBQIGV4dGVuZHMgUDIgeworICAgIFN0cmluZyBmb28oUCBwKSB7CisgICAgICAgIHJldHVybiBzdXBlci5mb28ocCk7CisgICAgfQorfQorY2xhc3MgUFBQMiBleHRlbmRzIFAyIHsKKworICAgIFN0cmluZyBmb28oUCBwKSB7CisgICAgICAgIHJldHVybiBzdXBlci5mb28ocCk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYW5ub3RhdGVNZXRob2QvYmVmb3JlT3ZlcnJpZGRlblBhcmFtZXRlcnMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYW5ub3RhdGVNZXRob2QvYmVmb3JlT3ZlcnJpZGRlblBhcmFtZXRlcnMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZjNhMTMxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hbm5vdGF0ZU1ldGhvZC9iZWZvcmVPdmVycmlkZGVuUGFyYW1ldGVycy5qYXZhCkBAIC0wLDAgKzEsMjEgQEAKKy8vICJBbm5vdGF0ZSBvdmVycmlkZGVuIG1ldGhvZCBwYXJhbWV0ZXJzIGFzICdATm90TnVsbCciICJ0cnVlIgoraW1wb3J0IG9yZy5qZXRicmFpbnMuYW5ub3RhdGlvbnMuTm90TnVsbDsKKworYWJzdHJhY3QgY2xhc3MgUDIgeworICAgIEBOb3ROdWxsCisgICAgU3RyaW5nIGZvbyhATm90TnVsbDxjYXJldD4gUCBwKSB7CisgICAgICAgIHJldHVybiAiIjsKKyAgICB9Cit9CisKK2NsYXNzIFBQUCBleHRlbmRzIFAyIHsKKyAgICBTdHJpbmcgZm9vKFAgcCkgeworICAgICAgICByZXR1cm4gc3VwZXIuZm9vKHApOworICAgIH0KK30KK2NsYXNzIFBQUDIgZXh0ZW5kcyBQMiB7CisKKyAgICBTdHJpbmcgZm9vKFAgcCkgeworICAgICAgICByZXR1cm4gc3VwZXIuZm9vKHApOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2Fubm90YXRlTWV0aG9kL2JlZm9yZVByaW1pdGl2ZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hbm5vdGF0ZU1ldGhvZC9iZWZvcmVQcmltaXRpdmUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZjIxODY2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hbm5vdGF0ZU1ldGhvZC9iZWZvcmVQcmltaXRpdmUuamF2YQpAQCAtMCwwICsxLDggQEAKKy8vICJSZW1vdmUgYW5ub3RhdGlvbiIgInRydWUiCisKK2ltcG9ydCBvcmcuamV0YnJhaW5zLmFubm90YXRpb25zLio7CisKK2NsYXNzIEZvbyB7CisgIDxjYXJldD5ATm90TnVsbAorICBpbnQgZm9vKCl7cmV0dXJuIDA7fQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYW5ub3RhdGVNZXRob2QvYmVmb3JlUmVtb3ZlQW50aS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hbm5vdGF0ZU1ldGhvZC9iZWZvcmVSZW1vdmVBbnRpLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzhjZjc0MwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYW5ub3RhdGVNZXRob2QvYmVmb3JlUmVtb3ZlQW50aS5qYXZhCkBAIC0wLDAgKzEsMTYgQEAKKy8vICJBbm5vdGF0ZSBvdmVycmlkZGVuIG1ldGhvZHMgYXMgJ0BOb3ROdWxsJyIgInRydWUiCisKK2ltcG9ydCBvcmcuamV0YnJhaW5zLmFubm90YXRpb25zLio7CisKKyBwdWJsaWMgY2xhc3MgWEVNIHsKKyAgICAgPGNhcmV0PkBOb3ROdWxsCisgICAgIFN0cmluZyBmKCl7CisgICAgICAgICByZXR1cm4gIiI7CisgICAgIH0KKyB9CisgY2xhc3MgWEMgZXh0ZW5kcyBYRU0geworICAgICBATnVsbGFibGUKKyAgICAgU3RyaW5nIGYoKSB7CisgICAgICAgICByZXR1cm4gIiI7CisgICAgIH0KKyB9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2Fub255bW91czJsYW1iZGEvYWZ0ZXJDbGFzc09iamVjdEFjY2Vzcy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hbm9ueW1vdXMybGFtYmRhL2FmdGVyQ2xhc3NPYmplY3RBY2Nlc3MuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YTg3YmI1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hbm9ueW1vdXMybGFtYmRhL2FmdGVyQ2xhc3NPYmplY3RBY2Nlc3MuamF2YQpAQCAtMCwwICsxLDggQEAKKy8vICJSZXBsYWNlIHdpdGggbGFtYmRhIiAidHJ1ZSIKK2NsYXNzIFRlc3QgeworICB7CisgICAgKChSdW5uYWJsZSkgKCkgLT4geworICAgICAgICAvL1RvIGNoYW5nZSBib2R5IG9mIGltcGxlbWVudGVkIG1ldGhvZHMgdXNlIEZpbGUgfCBTZXR0aW5ncyB8IEZpbGUgVGVtcGxhdGVzLgorICAgIH0pLmdldENsYXNzKCk7OworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hbm9ueW1vdXMybGFtYmRhL2FmdGVyQ29tcGFyYWJsZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hbm9ueW1vdXMybGFtYmRhL2FmdGVyQ29tcGFyYWJsZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY3ODdmNTAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2Fub255bW91czJsYW1iZGEvYWZ0ZXJDb21wYXJhYmxlLmphdmEKQEAgLTAsMCArMSw2IEBACisvLyAiUmVwbGFjZSB3aXRoIGxhbWJkYSIgInRydWUiCitjbGFzcyBUZXN0IHsKKyAgeworICAgIENvbXBhcmFibGU8U3RyaW5nPiBjID0gbyAtPiAwOyAKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYW5vbnltb3VzMmxhbWJkYS9hZnRlckNvbXBhcmFibGVOZWVkVG9CZUZpbmFsLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2Fub255bW91czJsYW1iZGEvYWZ0ZXJDb21wYXJhYmxlTmVlZFRvQmVGaW5hbC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZiNDUyYmMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2Fub255bW91czJsYW1iZGEvYWZ0ZXJDb21wYXJhYmxlTmVlZFRvQmVGaW5hbC5qYXZhCkBAIC0wLDAgKzEsMTQgQEAKKy8vICJSZXBsYWNlIHdpdGggbGFtYmRhIiAidHJ1ZSIKK2NsYXNzIFRlc3QgeworICB7CisgICAgQ29tcGFyYWJsZTxTdHJpbmc+IGMgPSBvIC0+IHsKKyAgICAgIFJ1bm5hYmxlIHIgPSBuZXcgUnVubmFibGUoKSB7CisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgdm9pZCBydW4oKSB7CisgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKG8pOworICAgICAgICB9CisgICAgICB9OyAKKyAgICAgIHJldHVybiAwOworICAgIH07IAorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hbm9ueW1vdXMybGFtYmRhL2FmdGVyRm9ybWFsVHlwZXMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYW5vbnltb3VzMmxhbWJkYS9hZnRlckZvcm1hbFR5cGVzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjM5ZmNhOQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYW5vbnltb3VzMmxhbWJkYS9hZnRlckZvcm1hbFR5cGVzLmphdmEKQEAgLTAsMCArMSwxNCBAQAorLy8gIlJlcGxhY2Ugd2l0aCBsYW1iZGEiICJ0cnVlIgoraW1wb3J0IGphdmEudXRpbC4qOworY2xhc3MgVGVzdDIgeworCisgICAgaW50ZXJmYWNlIEk8WD4geworICAgICAgICBYIGZvbyhMaXN0PFg+IGxpc3QpOworICAgIH0KKworICAgIHN0YXRpYyA8VD4gSTxUPiBiYXIoSTxUPiBpKXtyZXR1cm4gaTt9CisgCisgICAgeworICAgICAgICBiYXIoKExpc3Q8U3RyaW5nPiBsaXN0KSAtPiBudWxsKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2Fub255bW91czJsYW1iZGEvYWZ0ZXJNdWx0aWxpbmVDb21wYXJhYmxlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2Fub255bW91czJsYW1iZGEvYWZ0ZXJNdWx0aWxpbmVDb21wYXJhYmxlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGM2NTNlNgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYW5vbnltb3VzMmxhbWJkYS9hZnRlck11bHRpbGluZUNvbXBhcmFibGUuamF2YQpAQCAtMCwwICsxLDkgQEAKKy8vICJSZXBsYWNlIHdpdGggbGFtYmRhIiAidHJ1ZSIKK2NsYXNzIFRlc3QgeworICB7CisgICAgQ29tcGFyYWJsZTxTdHJpbmc+IGMgPSBvIC0+IHsKKyAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigpOworICAgICAgcmV0dXJuIDA7CisgICAgfTsgCisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2Fub255bW91czJsYW1iZGEvYWZ0ZXJOZWVkVG9RdWFsaWZ5QWNjZXNzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2Fub255bW91czJsYW1iZGEvYWZ0ZXJOZWVkVG9RdWFsaWZ5QWNjZXNzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDUwYzMxMAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYW5vbnltb3VzMmxhbWJkYS9hZnRlck5lZWRUb1F1YWxpZnlBY2Nlc3MuamF2YQpAQCAtMCwwICsxLDE2IEBACisvLyAiUmVwbGFjZSB3aXRoIGxhbWJkYSIgInRydWUiCitjbGFzcyBUZXN0IHsKKyAgaW50ZXJmYWNlIEkgeworCisgIH0KKyAgaW50ZXJmYWNlIEJhciBleHRlbmRzIEkgeworICAgIGludCBzbXRoID0gMDsKKyAgICBpbnQgY29tcGFyZShTdHJpbmcgbzEsIFN0cmluZyBvMik7CisgIH0KKyAgeworICAgIEkgYmFyMiA9IChCYXIpIChvMSwgbzIpIC0+IHsKKyAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihCYXIuc210aCk7CisgICAgICByZXR1cm4gMDsKKyAgICB9OworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hbm9ueW1vdXMybGFtYmRhL2FmdGVyUXVhbGlmaWVkVGhpcy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hbm9ueW1vdXMybGFtYmRhL2FmdGVyUXVhbGlmaWVkVGhpcy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJiNDBlZTAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2Fub255bW91czJsYW1iZGEvYWZ0ZXJRdWFsaWZpZWRUaGlzLmphdmEKQEAgLTAsMCArMSwxNCBAQAorLy8gIlJlcGxhY2Ugd2l0aCBsYW1iZGEiICJ0cnVlIgorY2xhc3MgVGVzdCB7CisgIGludGVyZmFjZSBFZmY8QSwgQj4geworICAgIEIgZihBIGEpOworICB9CisKKyAgaW50ZXJmYWNlIEluT3V0PEE+IHsKKyAgICBBIHJ1bigpIHRocm93cyBJT0V4Y2VwdGlvbjsKKworICAgIDxCPiBJbk91dDxCPiBiaW5kKGZpbmFsIEVmZjxBLCBJbk91dDxCPj4gZikgZGVmYXVsdCB7CisgICAgICByZXR1cm4gKCkgLT4gZi5mKEluT3V0LnRoaXMucnVuKCkpLnJ1bigpOworICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYW5vbnltb3VzMmxhbWJkYS9hZnRlclJ1bm5hYmxlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2Fub255bW91czJsYW1iZGEvYWZ0ZXJSdW5uYWJsZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg4NjBhN2MKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2Fub255bW91czJsYW1iZGEvYWZ0ZXJSdW5uYWJsZS5qYXZhCkBAIC0wLDAgKzEsOCBAQAorLy8gIlJlcGxhY2Ugd2l0aCBsYW1iZGEiICJ0cnVlIgorY2xhc3MgVGVzdCB7CisgIHsKKyAgICBSdW5uYWJsZSByID0gKCkgLT4geworICAgICAgU3lzdGVtLm91dC5wcmludGxuKCIiKTsKKyAgICB9OworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hbm9ueW1vdXMybGFtYmRhL2FmdGVyUnVubmFibGVJbkFycmF5SW5pdGlhbGl6ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYW5vbnltb3VzMmxhbWJkYS9hZnRlclJ1bm5hYmxlSW5BcnJheUluaXRpYWxpemVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDY4OGU4YgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYW5vbnltb3VzMmxhbWJkYS9hZnRlclJ1bm5hYmxlSW5BcnJheUluaXRpYWxpemVyLmphdmEKQEAgLTAsMCArMSw4IEBACisvLyAiUmVwbGFjZSB3aXRoIGxhbWJkYSIgInRydWUiCitjbGFzcyBUZXN0IHsKKyAgeworICAgIFJ1bm5hYmxlW10gciA9IG5ldyBSdW5uYWJsZVtdIHsoKSAtPiB7CisgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIiIpOworICAgIH19OworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hbm9ueW1vdXMybGFtYmRhL2FmdGVyVmFyV2l0aFN1cGVyVHlwZURlY2xhcmVkLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2Fub255bW91czJsYW1iZGEvYWZ0ZXJWYXJXaXRoU3VwZXJUeXBlRGVjbGFyZWQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZDliYTFjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hbm9ueW1vdXMybGFtYmRhL2FmdGVyVmFyV2l0aFN1cGVyVHlwZURlY2xhcmVkLmphdmEKQEAgLTAsMCArMSwxMiBAQAorLy8gIlJlcGxhY2Ugd2l0aCBsYW1iZGEiICJ0cnVlIgorY2xhc3MgVGVzdCB7CisgIGludGVyZmFjZSBJIHsKKworICB9CisgIGludGVyZmFjZSBCYXIgZXh0ZW5kcyBJIHsKKyAgICBpbnQgY29tcGFyZShTdHJpbmcgbzEsIFN0cmluZyBvMik7CisgIH0KKyAgeworICAgIEkgYmFyMiA9IChCYXIpIChvMSwgbzIpIC0+IDA7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2Fub255bW91czJsYW1iZGEvYmVmb3JlQ2xhc3NBc1N1cGVyVHlwZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hbm9ueW1vdXMybGFtYmRhL2JlZm9yZUNsYXNzQXNTdXBlclR5cGUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZTcwNGU0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hbm9ueW1vdXMybGFtYmRhL2JlZm9yZUNsYXNzQXNTdXBlclR5cGUuamF2YQpAQCAtMCwwICsxLDE2IEBACisvLyAiUmVwbGFjZSB3aXRoIGxhbWJkYSIgImZhbHNlIgorY2xhc3MgVGVzdCB7CisgIHsKKyAgICBBIGEgPSBuZXcgQTxjYXJldD4oInN0ciIpIHsKKyAgICAgICAgQE92ZXJyaWRlCisgICAgICAgIHB1YmxpYyB2b2lkIGZvbygpIHsKKyAgICAgICAgfQorICAgIH07CisgIH0KKyAgc3RhdGljIGNsYXNzIEEgeworICAgIEEoU3RyaW5nIHMpIHsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBmb28oKXt9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2Fub255bW91czJsYW1iZGEvYmVmb3JlQ2xhc3NPYmplY3RBY2Nlc3MuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYW5vbnltb3VzMmxhbWJkYS9iZWZvcmVDbGFzc09iamVjdEFjY2Vzcy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJkZjFlZGQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2Fub255bW91czJsYW1iZGEvYmVmb3JlQ2xhc3NPYmplY3RBY2Nlc3MuamF2YQpAQCAtMCwwICsxLDExIEBACisvLyAiUmVwbGFjZSB3aXRoIGxhbWJkYSIgInRydWUiCitjbGFzcyBUZXN0IHsKKyAgeworICAgIG5ldyBSdTxjYXJldD5ubmFibGUoKSB7CisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgdm9pZCBydW4oKSB7CisgICAgICAgICAgICAvL1RvIGNoYW5nZSBib2R5IG9mIGltcGxlbWVudGVkIG1ldGhvZHMgdXNlIEZpbGUgfCBTZXR0aW5ncyB8IEZpbGUgVGVtcGxhdGVzLgorICAgICAgICB9CisgICAgfS5nZXRDbGFzcygpOzsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYW5vbnltb3VzMmxhbWJkYS9iZWZvcmVDb21wYXJhYmxlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2Fub255bW91czJsYW1iZGEvYmVmb3JlQ29tcGFyYWJsZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNkYWFhMzgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2Fub255bW91czJsYW1iZGEvYmVmb3JlQ29tcGFyYWJsZS5qYXZhCkBAIC0wLDAgKzEsMTEgQEAKKy8vICJSZXBsYWNlIHdpdGggbGFtYmRhIiAidHJ1ZSIKK2NsYXNzIFRlc3QgeworICB7CisgICAgQ29tcGFyYWJsZTxTdHJpbmc+IGMgPSBuZXcgQ29tcGE8Y2FyZXQ+cmFibGU8U3RyaW5nPigpIHsKKyAgICAgIEBPdmVycmlkZQorICAgICAgcHVibGljIGludCBjb21wYXJlVG8oU3RyaW5nIG8pIHsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgICB9CisgICAgfTsgCisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2Fub255bW91czJsYW1iZGEvYmVmb3JlQ29tcGFyYWJsZU5lZWRUb0JlRmluYWwuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYW5vbnltb3VzMmxhbWJkYS9iZWZvcmVDb21wYXJhYmxlTmVlZFRvQmVGaW5hbC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU3ZjE4MmQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2Fub255bW91czJsYW1iZGEvYmVmb3JlQ29tcGFyYWJsZU5lZWRUb0JlRmluYWwuamF2YQpAQCAtMCwwICsxLDE3IEBACisvLyAiUmVwbGFjZSB3aXRoIGxhbWJkYSIgInRydWUiCitjbGFzcyBUZXN0IHsKKyAgeworICAgIENvbXBhcmFibGU8U3RyaW5nPiBjID0gbmV3IENvbXBhPGNhcmV0PnJhYmxlPFN0cmluZz4oKSB7CisgICAgICBAT3ZlcnJpZGUKKyAgICAgIHB1YmxpYyBpbnQgY29tcGFyZVRvKGZpbmFsIFN0cmluZyBvKSB7CisgICAgICAgIFJ1bm5hYmxlIHIgPSBuZXcgUnVubmFibGUoKSB7CisgICAgICAgICAgQE92ZXJyaWRlCisgICAgICAgICAgcHVibGljIHZvaWQgcnVuKCkgeworICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKG8pOworICAgICAgICAgIH0KKyAgICAgICAgfTsgCisgICAgICAgIHJldHVybiAwOworICAgICAgfQorICAgIH07IAorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hbm9ueW1vdXMybGFtYmRhL2JlZm9yZUZpZWxkSW5Bbm9ueW1vdXMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYW5vbnltb3VzMmxhbWJkYS9iZWZvcmVGaWVsZEluQW5vbnltb3VzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2RjNTE5MQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYW5vbnltb3VzMmxhbWJkYS9iZWZvcmVGaWVsZEluQW5vbnltb3VzLmphdmEKQEAgLTAsMCArMSwxOCBAQAorLy8gIlJlcGxhY2Ugd2l0aCBsYW1iZGEiICJmYWxzZSIKK2NsYXNzIFRlc3QgeworICBpbnRlcmZhY2UgSSB7CisKKyAgfQorICBpbnRlcmZhY2UgQmFyIGV4dGVuZHMgSSB7CisgICAgaW50IGNvbXBhcmUoU3RyaW5nIG8xLCBTdHJpbmcgbzIpOworICB9CisgIHsKKyAgICBJIGJhcjIgPSBuZXcgQmE8Y2FyZXQ+cigpIHsKKyAgICAgIGludCBrOworICAgICAgQE92ZXJyaWRlCisgICAgICBwdWJsaWMgaW50IGNvbXBhcmUoU3RyaW5nIG8xLCBTdHJpbmcgbzIpIHsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgICB9CisgICAgfTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYW5vbnltb3VzMmxhbWJkYS9iZWZvcmVGb3JtYWxUeXBlcy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hbm9ueW1vdXMybGFtYmRhL2JlZm9yZUZvcm1hbFR5cGVzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmIyOGFmYgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYW5vbnltb3VzMmxhbWJkYS9iZWZvcmVGb3JtYWxUeXBlcy5qYXZhCkBAIC0wLDAgKzEsMTkgQEAKKy8vICJSZXBsYWNlIHdpdGggbGFtYmRhIiAidHJ1ZSIKK2ltcG9ydCBqYXZhLnV0aWwuKjsKK2NsYXNzIFRlc3QyIHsKKworICAgIGludGVyZmFjZSBJPFg+IHsKKyAgICAgICAgWCBmb28oTGlzdDxYPiBsaXN0KTsKKyAgICB9CisKKyAgICBzdGF0aWMgPFQ+IEk8VD4gYmFyKEk8VD4gaSl7cmV0dXJuIGk7fQorIAorICAgIHsKKyAgICAgICAgYmFyKG5ldyBJPFN0cmk8Y2FyZXQ+bmc+KCkgeworICAgICAgICAgICAgQE92ZXJyaWRlCisgICAgICAgICAgICBwdWJsaWMgU3RyaW5nIGZvbyhMaXN0PFN0cmluZz4gbGlzdCkgeworICAgICAgICAgICAgICAgIHJldHVybiBudWxsOyAgLy9UbyBjaGFuZ2UgYm9keSBvZiBpbXBsZW1lbnRlZCBtZXRob2RzIHVzZSBGaWxlIHwgU2V0dGluZ3MgfCBGaWxlIFRlbXBsYXRlcy4KKyAgICAgICAgICAgIH0KKyAgICAgICAgfSk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hbm9ueW1vdXMybGFtYmRhL2JlZm9yZUxvY2FsVmFyaWFibGVDb25mbGljdHMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYW5vbnltb3VzMmxhbWJkYS9iZWZvcmVMb2NhbFZhcmlhYmxlQ29uZmxpY3RzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDNiN2NiNgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYW5vbnltb3VzMmxhbWJkYS9iZWZvcmVMb2NhbFZhcmlhYmxlQ29uZmxpY3RzLmphdmEKQEAgLTAsMCArMSwxMyBAQAorLy8gIlJlcGxhY2Ugd2l0aCBsYW1iZGEiICJmYWxzZSIKK2NsYXNzIEZvbzExIHsKKyAgUnVubmFibGUgcnVubmFibGUgPSBuZXcgUnVubmFibGUoKSB7CisgICAgcHVibGljIHZvaWQgcnVuKCkgeworICAgICAgaW50IHggPSA1OworICAgICAgbmV3IFJ1bm48Y2FyZXQ+YWJsZSgpIHsKKyAgICAgICAgcHVibGljIHZvaWQgcnVuICgpIHsKKyAgICAgICAgICBpbnQgeCA9IDEwOworICAgICAgICB9CisgICAgICB9IDsKKyAgICB9CisgIH07Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hbm9ueW1vdXMybGFtYmRhL2JlZm9yZU11bHRpbGluZUNvbXBhcmFibGUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYW5vbnltb3VzMmxhbWJkYS9iZWZvcmVNdWx0aWxpbmVDb21wYXJhYmxlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGEyZWQwMwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYW5vbnltb3VzMmxhbWJkYS9iZWZvcmVNdWx0aWxpbmVDb21wYXJhYmxlLmphdmEKQEAgLTAsMCArMSwxMiBAQAorLy8gIlJlcGxhY2Ugd2l0aCBsYW1iZGEiICJ0cnVlIgorY2xhc3MgVGVzdCB7CisgIHsKKyAgICBDb21wYXJhYmxlPFN0cmluZz4gYyA9IG5ldyBDb21wYTxjYXJldD5yYWJsZTxTdHJpbmc+KCkgeworICAgICAgQE92ZXJyaWRlCisgICAgICBwdWJsaWMgaW50IGNvbXBhcmVUbyhTdHJpbmcgbykgeworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgICB9CisgICAgfTsgCisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2Fub255bW91czJsYW1iZGEvYmVmb3JlTmVlZFRvUXVhbGlmeUFjY2Vzcy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hbm9ueW1vdXMybGFtYmRhL2JlZm9yZU5lZWRUb1F1YWxpZnlBY2Nlc3MuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNmRlOTE2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hbm9ueW1vdXMybGFtYmRhL2JlZm9yZU5lZWRUb1F1YWxpZnlBY2Nlc3MuamF2YQpAQCAtMCwwICsxLDE5IEBACisvLyAiUmVwbGFjZSB3aXRoIGxhbWJkYSIgInRydWUiCitjbGFzcyBUZXN0IHsKKyAgaW50ZXJmYWNlIEkgeworCisgIH0KKyAgaW50ZXJmYWNlIEJhciBleHRlbmRzIEkgeworICAgIGludCBzbXRoID0gMDsKKyAgICBpbnQgY29tcGFyZShTdHJpbmcgbzEsIFN0cmluZyBvMik7CisgIH0KKyAgeworICAgIEkgYmFyMiA9IG5ldyBCYTxjYXJldD5yKCkgeworICAgICAgQE92ZXJyaWRlCisgICAgICBwdWJsaWMgaW50IGNvbXBhcmUoU3RyaW5nIG8xLCBTdHJpbmcgbzIpIHsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKHNtdGgpOworICAgICAgICByZXR1cm4gMDsKKyAgICAgIH0KKyAgICB9OworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hbm9ueW1vdXMybGFtYmRhL2JlZm9yZU5vTWV0aG9kQm9keS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hbm9ueW1vdXMybGFtYmRhL2JlZm9yZU5vTWV0aG9kQm9keS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc4MDM3MzIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2Fub255bW91czJsYW1iZGEvYmVmb3JlTm9NZXRob2RCb2R5LmphdmEKQEAgLTAsMCArMSw5IEBACisvLyAiUmVwbGFjZSB3aXRoIGxhbWJkYSIgImZhbHNlIgorY2xhc3MgVGVzdCB7CisgIHsKKyAgICBSdW5uYWJsZSBhID0gbmV3IFJ1bjxjYXJldD5uYWJsZSgpIHsKKyAgICAgICAgQE92ZXJyaWRlCisgICAgICAgIHB1YmxpYyB2b2lkIHJ1bigpCisgICAgfTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYW5vbnltb3VzMmxhbWJkYS9iZWZvcmVOb25RR2V0Q2xhc3MuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYW5vbnltb3VzMmxhbWJkYS9iZWZvcmVOb25RR2V0Q2xhc3MuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YjgxOTVlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hbm9ueW1vdXMybGFtYmRhL2JlZm9yZU5vblFHZXRDbGFzcy5qYXZhCkBAIC0wLDAgKzEsMTEgQEAKKy8vICJSZXBsYWNlIHdpdGggbGFtYmRhIiAiZmFsc2UiCitjbGFzcyBUZXN0IHsKKyAgeworICAgIG5ldyBSdTxjYXJldD5ubmFibGUoKSB7CisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgdm9pZCBydW4oKSB7CisgICAgICAgICAgICBDbGFzcyBjID0gZ2V0Q2xhc3MoKTsKKyAgICAgICAgfQorICAgIH07CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2Fub255bW91czJsYW1iZGEvYmVmb3JlUXVhbGlmaWVkVGhpcy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hbm9ueW1vdXMybGFtYmRhL2JlZm9yZVF1YWxpZmllZFRoaXMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMjNiZDQwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hbm9ueW1vdXMybGFtYmRhL2JlZm9yZVF1YWxpZmllZFRoaXMuamF2YQpAQCAtMCwwICsxLDE5IEBACisvLyAiUmVwbGFjZSB3aXRoIGxhbWJkYSIgInRydWUiCitjbGFzcyBUZXN0IHsKKyAgaW50ZXJmYWNlIEVmZjxBLCBCPiB7CisgICAgQiBmKEEgYSk7CisgIH0KKworICBpbnRlcmZhY2UgSW5PdXQ8QT4geworICAgIEEgcnVuKCkgdGhyb3dzIElPRXhjZXB0aW9uOworCisgICAgPEI+IEluT3V0PEI+IGJpbmQoZmluYWwgRWZmPEEsIEluT3V0PEI+PiBmKSBkZWZhdWx0IHsKKyAgICAgIHJldHVybiBuZXcgSW48Y2FyZXQ+T3V0PEI+KCkgeworICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHVibGljIEIgcnVuKCkgdGhyb3dzIElPRXhjZXB0aW9uIHsKKyAgICAgICAgICByZXR1cm4gZi5mKEluT3V0LnRoaXMucnVuKCkpLnJ1bigpOworICAgICAgICB9CisgICAgICB9OworICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYW5vbnltb3VzMmxhbWJkYS9iZWZvcmVSZWN1cnNpdmUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYW5vbnltb3VzMmxhbWJkYS9iZWZvcmVSZWN1cnNpdmUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZWMxN2Y4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hbm9ueW1vdXMybGFtYmRhL2JlZm9yZVJlY3Vyc2l2ZS5qYXZhCkBAIC0wLDAgKzEsMTYgQEAKKy8vICJSZXBsYWNlIHdpdGggbGFtYmRhIiAiZmFsc2UiCitjbGFzcyBUZXN0IHsKKyAgcHVibGljIGludGVyZmFjZSBJIHsKKyAgICBpbnQgbSgpOworICB9CisgIHsKKyAgICBJIGkgPSBuZXcgPGNhcmV0PkkoKSB7CisgICAgICBAT3ZlcnJpZGUKKyAgICAgIHB1YmxpYyBpbnQgbSgpIHsKKyAgICAgICAgbSgpOworICAgICAgICByZXR1cm4gMDsKKyAgICAgIH0KKyAgICB9OworCisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYW5vbnltb3VzMmxhbWJkYS9iZWZvcmVSdW5uYWJsZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hbm9ueW1vdXMybGFtYmRhL2JlZm9yZVJ1bm5hYmxlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWEyMGYwZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYW5vbnltb3VzMmxhbWJkYS9iZWZvcmVSdW5uYWJsZS5qYXZhCkBAIC0wLDAgKzEsMTEgQEAKKy8vICJSZXBsYWNlIHdpdGggbGFtYmRhIiAidHJ1ZSIKK2NsYXNzIFRlc3QgeworICB7CisgICAgUnVubmFibGUgciA9IG5ldyBSdW48Y2FyZXQ+bmFibGUoKSB7CisgICAgICBAT3ZlcnJpZGUKKyAgICAgIHB1YmxpYyB2b2lkIHJ1bigpIHsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCIiKTsKKyAgICAgIH0KKyAgICB9OworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hbm9ueW1vdXMybGFtYmRhL2JlZm9yZVJ1bm5hYmxlSW5BcnJheUluaXRpYWxpemVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2Fub255bW91czJsYW1iZGEvYmVmb3JlUnVubmFibGVJbkFycmF5SW5pdGlhbGl6ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYjUyMzMzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hbm9ueW1vdXMybGFtYmRhL2JlZm9yZVJ1bm5hYmxlSW5BcnJheUluaXRpYWxpemVyLmphdmEKQEAgLTAsMCArMSwxMSBAQAorLy8gIlJlcGxhY2Ugd2l0aCBsYW1iZGEiICJ0cnVlIgorY2xhc3MgVGVzdCB7CisgIHsKKyAgICBSdW5uYWJsZVtdIHIgPSBuZXcgUnVubmFibGVbXSB7bmV3IFJ1bjxjYXJldD5uYWJsZSgpIHsKKyAgICAgIEBPdmVycmlkZQorICAgICAgcHVibGljIHZvaWQgcnVuKCkgeworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIiIpOworICAgICAgfQorICAgIH19OworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hbm9ueW1vdXMybGFtYmRhL2JlZm9yZVJ1bm5hYmxlV2l0aEhlbHBNZXRob2QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYW5vbnltb3VzMmxhbWJkYS9iZWZvcmVSdW5uYWJsZVdpdGhIZWxwTWV0aG9kLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTY3ZDkyNwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYW5vbnltb3VzMmxhbWJkYS9iZWZvcmVSdW5uYWJsZVdpdGhIZWxwTWV0aG9kLmphdmEKQEAgLTAsMCArMSwxMiBAQAorLy8gIlJlcGxhY2Ugd2l0aCBsYW1iZGEiICJmYWxzZSIKK2NsYXNzIFRlc3QgeworICB7CisgICAgUnVubmFibGUgciA9IG5ldyBSdTxjYXJldD5ubmFibGUoKSB7CisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgdm9pZCBydW4oKSB7CisgICAgICAgICAgIGhlbHBlcigpOworICAgICAgICB9CisgICAgICAgIHByaXZhdGUgdm9pZCBoZWxwZXIoKXt9CisgICAgfTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYW5vbnltb3VzMmxhbWJkYS9iZWZvcmVUaGlzUmVmSW5zaWRlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2Fub255bW91czJsYW1iZGEvYmVmb3JlVGhpc1JlZkluc2lkZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjliZmI4ODQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2Fub255bW91czJsYW1iZGEvYmVmb3JlVGhpc1JlZkluc2lkZS5qYXZhCkBAIC0wLDAgKzEsMTEgQEAKKy8vICJSZXBsYWNlIHdpdGggbGFtYmRhIiAiZmFsc2UiCitjbGFzcyBUZXN0IHsKKyAgeworICAgIFJ1bm5hYmxlIHggPSBuZXcgUnVubjxjYXJldD5hYmxlKCkgeworICAgICAgcHVibGljIHZvaWQgcnVuKCkgeworICAgICAgICB0aGlzLnRvU3RyaW5nKCk7CisgICAgICB9CisgICAgfTsKKworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hbm9ueW1vdXMybGFtYmRhL2JlZm9yZVZhcldpdGhTdXBlclR5cGVEZWNsYXJlZC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hbm9ueW1vdXMybGFtYmRhL2JlZm9yZVZhcldpdGhTdXBlclR5cGVEZWNsYXJlZC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU5OGVlNTYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2Fub255bW91czJsYW1iZGEvYmVmb3JlVmFyV2l0aFN1cGVyVHlwZURlY2xhcmVkLmphdmEKQEAgLTAsMCArMSwxNyBAQAorLy8gIlJlcGxhY2Ugd2l0aCBsYW1iZGEiICJ0cnVlIgorY2xhc3MgVGVzdCB7CisgIGludGVyZmFjZSBJIHsKKworICB9CisgIGludGVyZmFjZSBCYXIgZXh0ZW5kcyBJIHsKKyAgICBpbnQgY29tcGFyZShTdHJpbmcgbzEsIFN0cmluZyBvMik7CisgIH0KKyAgeworICAgIEkgYmFyMiA9IG5ldyBCYTxjYXJldD5yKCkgeworICAgICAgQE92ZXJyaWRlCisgICAgICBwdWJsaWMgaW50IGNvbXBhcmUoU3RyaW5nIG8xLCBTdHJpbmcgbzIpIHsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgICB9CisgICAgfTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYW5vbnltb3VzMm1ldGhvZFJlZmVyZW5jZS9hZnRlcjEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYW5vbnltb3VzMm1ldGhvZFJlZmVyZW5jZS9hZnRlcjEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNWQ2MzIwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hbm9ueW1vdXMybWV0aG9kUmVmZXJlbmNlL2FmdGVyMS5qYXZhCkBAIC0wLDAgKzEsMTMgQEAKKy8vICJSZXBsYWNlIHdpdGggbWV0aG9kIHJlZmVyZW5jZSIgInRydWUiCitjbGFzcyBUZXN0IHsKKyAgaW50ZXJmYWNlIEJhciB7CisgICAgaW50IGNvbXBhcmUoU3RyaW5nIG8xLCBTdHJpbmcgbzIpOworICB9CisgICAgc3RhdGljIGludCBjKFN0cmluZyBvMSwgU3RyaW5nIG8yKSB7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICB7CisgICAgQmFyIGJhcjIgPSBUZXN0OjpjOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hbm9ueW1vdXMybWV0aG9kUmVmZXJlbmNlL2FmdGVySW5zZXJ0Q2FzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hbm9ueW1vdXMybWV0aG9kUmVmZXJlbmNlL2FmdGVySW5zZXJ0Q2FzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYwZGZmZWYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2Fub255bW91czJtZXRob2RSZWZlcmVuY2UvYWZ0ZXJJbnNlcnRDYXN0LmphdmEKQEAgLTAsMCArMSwxNCBAQAorLy8gIlJlcGxhY2Ugd2l0aCBtZXRob2QgcmVmZXJlbmNlIiAidHJ1ZSIKK2NsYXNzIFRlc3QgeworICBpbnRlcmZhY2UgSSB7fQorICBpbnRlcmZhY2UgQmFyIGV4dGVuZHMgSSB7CisgICAgaW50IGNvbXBhcmUoU3RyaW5nIG8xLCBTdHJpbmcgbzIpOworICB9CisgICAgc3RhdGljIGludCBjKFN0cmluZyBvMSwgU3RyaW5nIG8yKSB7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICB7CisgICAgSSBiYXIyID0gKEJhcikgVGVzdDo6YzsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYW5vbnltb3VzMm1ldGhvZFJlZmVyZW5jZS9iZWZvcmUxLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2Fub255bW91czJtZXRob2RSZWZlcmVuY2UvYmVmb3JlMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdjYTI0ZjEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2Fub255bW91czJtZXRob2RSZWZlcmVuY2UvYmVmb3JlMS5qYXZhCkBAIC0wLDAgKzEsMTggQEAKKy8vICJSZXBsYWNlIHdpdGggbWV0aG9kIHJlZmVyZW5jZSIgInRydWUiCitjbGFzcyBUZXN0IHsKKyAgaW50ZXJmYWNlIEJhciB7CisgICAgaW50IGNvbXBhcmUoU3RyaW5nIG8xLCBTdHJpbmcgbzIpOworICB9CisgICAgc3RhdGljIGludCBjKFN0cmluZyBvMSwgU3RyaW5nIG8yKSB7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICB7CisgICAgQmFyIGJhcjIgPSBuZXcgQjxjYXJldD5hcigpIHsKKyAgICAgICAgQE92ZXJyaWRlCisgICAgICAgIHB1YmxpYyBpbnQgY29tcGFyZShmaW5hbCBTdHJpbmcgbzEsIGZpbmFsIFN0cmluZyBvMikgeworICAgICAgICAgICAgcmV0dXJuIGMobzEsIG8yKTsKKyAgICAgICAgfQorICAgIH07CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2Fub255bW91czJtZXRob2RSZWZlcmVuY2UvYmVmb3JlSW5zZXJ0Q2FzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hbm9ueW1vdXMybWV0aG9kUmVmZXJlbmNlL2JlZm9yZUluc2VydENhc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45YTBjYWEyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hbm9ueW1vdXMybWV0aG9kUmVmZXJlbmNlL2JlZm9yZUluc2VydENhc3QuamF2YQpAQCAtMCwwICsxLDE5IEBACisvLyAiUmVwbGFjZSB3aXRoIG1ldGhvZCByZWZlcmVuY2UiICJ0cnVlIgorY2xhc3MgVGVzdCB7CisgIGludGVyZmFjZSBJIHt9CisgIGludGVyZmFjZSBCYXIgZXh0ZW5kcyBJIHsKKyAgICBpbnQgY29tcGFyZShTdHJpbmcgbzEsIFN0cmluZyBvMik7CisgIH0KKyAgICBzdGF0aWMgaW50IGMoU3RyaW5nIG8xLCBTdHJpbmcgbzIpIHsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgIHsKKyAgICBJIGJhcjIgPSBuZXcgQjxjYXJldD5hcigpIHsKKyAgICAgICAgQE92ZXJyaWRlCisgICAgICAgIHB1YmxpYyBpbnQgY29tcGFyZShmaW5hbCBTdHJpbmcgbzEsIGZpbmFsIFN0cmluZyBvMikgeworICAgICAgICAgICAgcmV0dXJuIGMobzEsIG8yKTsKKyAgICAgICAgfQorICAgIH07CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2Fub255bW91czJtZXRob2RSZWZlcmVuY2UvYmVmb3JlUXVhbGlmaWVyRG9lc250VXNlUGFyYW1zLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2Fub255bW91czJtZXRob2RSZWZlcmVuY2UvYmVmb3JlUXVhbGlmaWVyRG9lc250VXNlUGFyYW1zLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzQ0OWEzYgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYW5vbnltb3VzMm1ldGhvZFJlZmVyZW5jZS9iZWZvcmVRdWFsaWZpZXJEb2VzbnRVc2VQYXJhbXMuamF2YQpAQCAtMCwwICsxLDE2IEBACisvLyAiUmVwbGFjZSB3aXRoIG1ldGhvZCByZWZlcmVuY2UiICJmYWxzZSIKK2ludGVyZmFjZSBGb288QSwgQj4geworICAgIEIgZihBIGEpOworfQorCitpbnRlcmZhY2UgRGVlQmVlPEE+IHsKKyAgICBBIHJ1bihWb2lkIGMpIHRocm93cyBTUUxFeGNlcHRpb247CisKKyAgICA8Qj4gRGVlQmVlPEI+IGJpbmQoZmluYWwgRm9vPEEsIERlZUJlZTxCPj4gZikgZGVmYXVsdCB7CisgICAgICAgIHJldHVybiBuZXcgRGVlPGNhcmV0PkJlZTxCPiAoKSB7CisgICAgICAgICAgICBwdWJsaWMgQiBydW4oZmluYWwgVm9pZCBjKSB0aHJvd3MgU1FMRXhjZXB0aW9uIHsKKyAgICAgICAgICAgICAgIHJldHVybiBmLmYobnVsbCkucnVuKGMpOworICAgICAgICAgICAgfQorICAgICAgICB9OworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2Fub255bW91czJtZXRob2RSZWZlcmVuY2UvYmVmb3JlUXVhbGlmaWVyVXNlc1BhcmFtcy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hbm9ueW1vdXMybWV0aG9kUmVmZXJlbmNlL2JlZm9yZVF1YWxpZmllclVzZXNQYXJhbXMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNTI2NzUzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hbm9ueW1vdXMybWV0aG9kUmVmZXJlbmNlL2JlZm9yZVF1YWxpZmllclVzZXNQYXJhbXMuamF2YQpAQCAtMCwwICsxLDE2IEBACisvLyAiUmVwbGFjZSB3aXRoIG1ldGhvZCByZWZlcmVuY2UiICJmYWxzZSIKK2ludGVyZmFjZSBGb288QSwgQj4geworICAgIEIgZihBIGEpOworfQorCitpbnRlcmZhY2UgRGVlQmVlPEE+IHsKKyAgICBBIHJ1bihWb2lkIGMpIHRocm93cyBTUUxFeGNlcHRpb247CisKKyAgICA8Qj4gRGVlQmVlPEI+IGJpbmQoZmluYWwgRm9vPEEsIERlZUJlZTxCPj4gZikgZGVmYXVsdCB7CisgICAgICAgIHJldHVybiBuZXcgRGVlPGNhcmV0PkJlZTxCPiAoKSB7CisgICAgICAgICAgICBwdWJsaWMgQiBydW4oZmluYWwgVm9pZCBjKSB0aHJvd3MgU1FMRXhjZXB0aW9uIHsKKyAgICAgICAgICAgICAgIHJldHVybiBmLmYoRGVlQmVlLnRoaXMucnVuKGMpKS5ydW4oYyk7CisgICAgICAgICAgICB9CisgICAgICAgIH07CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYW5vbnltb3VzMm1ldGhvZFJlZmVyZW5jZS9iZWZvcmVSZWN1cnNpdmUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYW5vbnltb3VzMm1ldGhvZFJlZmVyZW5jZS9iZWZvcmVSZWN1cnNpdmUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YjU4ZDY2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hbm9ueW1vdXMybWV0aG9kUmVmZXJlbmNlL2JlZm9yZVJlY3Vyc2l2ZS5qYXZhCkBAIC0wLDAgKzEsMTUgQEAKKy8vICJSZXBsYWNlIHdpdGggbWV0aG9kIHJlZmVyZW5jZSIgImZhbHNlIgorY2xhc3MgVGVzdCB7CisgIHB1YmxpYyBpbnRlcmZhY2UgSSB7CisgICAgaW50IG0oKTsKKyAgfQorICB7CisgICAgSSBpID0gbmV3IDxjYXJldD5JKCkgeworICAgICAgQE92ZXJyaWRlCisgICAgICBwdWJsaWMgaW50IG0oKSB7CisgICAgICAgIHJldHVybiBtKCk7CisgICAgICB9CisgICAgfTsKKworICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2Fzc2lnbkZpZWxkRnJvbVBhcmFtZXRlci9hZnRlcjEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYXNzaWduRmllbGRGcm9tUGFyYW1ldGVyL2FmdGVyMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmViNWJkYmQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2Fzc2lnbkZpZWxkRnJvbVBhcmFtZXRlci9hZnRlcjEuamF2YQpAQCAtMCwwICsxLDggQEAKKy8vICJBc3NpZ24gUGFyYW1ldGVyIHRvIEZpZWxkICdteUlkJyIgInRydWUiCisKK2NsYXNzIFBlcnNvbiB7CisgICAgaW50IG15SWQ7CisgICAgdm9pZCBmKGludCBpZCkgeworICAgICAgICBteUlkID0gaWQ7PGNhcmV0PgorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2Fzc2lnbkZpZWxkRnJvbVBhcmFtZXRlci9hZnRlckFzc2lnbm1lbnRPcmRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hc3NpZ25GaWVsZEZyb21QYXJhbWV0ZXIvYWZ0ZXJBc3NpZ25tZW50T3JkZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYWRmMTBiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hc3NpZ25GaWVsZEZyb21QYXJhbWV0ZXIvYWZ0ZXJBc3NpZ25tZW50T3JkZXIuamF2YQpAQCAtMCwwICsxLDEwIEBACisvLyAiQXNzaWduIFBhcmFtZXRlciB0byBGaWVsZCAnbXlOYW1lJyIgInRydWUiCisKK2NsYXNzIFBlcnNvbiB7CisgICAgaW50IG15SWQ7CisgICAgU3RyaW5nIG15TmFtZTsKKyAgICB2b2lkIGYoaW50IGlkLCBTdHJpbmcgbmFtZSkgeworICAgICAgICBteUlkID0gaWQ7CisgICAgICAgIG15TmFtZSA9IG5hbWU7PGNhcmV0PgorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2Fzc2lnbkZpZWxkRnJvbVBhcmFtZXRlci9iZWZvcmUxLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2Fzc2lnbkZpZWxkRnJvbVBhcmFtZXRlci9iZWZvcmUxLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGU4MGM4MgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYXNzaWduRmllbGRGcm9tUGFyYW1ldGVyL2JlZm9yZTEuamF2YQpAQCAtMCwwICsxLDcgQEAKKy8vICJBc3NpZ24gUGFyYW1ldGVyIHRvIEZpZWxkICdteUlkJyIgInRydWUiCisKK2NsYXNzIFBlcnNvbiB7CisgICAgaW50IG15SWQ7CisgICAgdm9pZCBmKGludCBpZDxjYXJldD4pIHsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hc3NpZ25GaWVsZEZyb21QYXJhbWV0ZXIvYmVmb3JlMi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hc3NpZ25GaWVsZEZyb21QYXJhbWV0ZXIvYmVmb3JlMi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJmNzJmNDgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2Fzc2lnbkZpZWxkRnJvbVBhcmFtZXRlci9iZWZvcmUyLmphdmEKQEAgLTAsMCArMSw4IEBACisvLyAiQXNzaWduIFBhcmFtZXRlciB0byBGaWVsZCAnbXlJZCciICJmYWxzZSIKKworY2xhc3MgUGVyc29uIHsKKyAgICBpbnQgbXlJZDsKKyAgICB2b2lkIGYoaW50IGlkPGNhcmV0PikgeworICAgICAgICBteUlkID0gaWQ7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYXNzaWduRmllbGRGcm9tUGFyYW1ldGVyL2JlZm9yZTMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYXNzaWduRmllbGRGcm9tUGFyYW1ldGVyL2JlZm9yZTMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZDA2ODU4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hc3NpZ25GaWVsZEZyb21QYXJhbWV0ZXIvYmVmb3JlMy5qYXZhCkBAIC0wLDAgKzEsNyBAQAorLy8gIkFzc2lnbiBQYXJhbWV0ZXIgdG8gRmllbGQgJ291cklkJyIgImZhbHNlIgorCitjbGFzcyBQZXJzb24geworICAgIGludCBvdXJJZDsKKyAgICBzdGF0aWMgdm9pZCBmKGludCBpZDxjYXJldD4pIHsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hc3NpZ25GaWVsZEZyb21QYXJhbWV0ZXIvYmVmb3JlQXNzaWdubWVudE9yZGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2Fzc2lnbkZpZWxkRnJvbVBhcmFtZXRlci9iZWZvcmVBc3NpZ25tZW50T3JkZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNDMwMDMyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9hc3NpZ25GaWVsZEZyb21QYXJhbWV0ZXIvYmVmb3JlQXNzaWdubWVudE9yZGVyLmphdmEKQEAgLTAsMCArMSw5IEBACisvLyAiQXNzaWduIFBhcmFtZXRlciB0byBGaWVsZCAnbXlOYW1lJyIgInRydWUiCisKK2NsYXNzIFBlcnNvbiB7CisgICAgaW50IG15SWQ7CisgICAgU3RyaW5nIG15TmFtZTsKKyAgICB2b2lkIGYoaW50IGlkLCBTdHJpbmcgbmFtZTxjYXJldD4pIHsKKyAgICAgICAgbXlJZCA9IGlkOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2JpbmRGaWVsZHNGcm9tUGFyYW1ldGVycy9hZnRlckFscmVhZHlFeGlzdGluZ0ZpZWxkcy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9iaW5kRmllbGRzRnJvbVBhcmFtZXRlcnMvYWZ0ZXJBbHJlYWR5RXhpc3RpbmdGaWVsZHMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hY2VlMGUwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9iaW5kRmllbGRzRnJvbVBhcmFtZXRlcnMvYWZ0ZXJBbHJlYWR5RXhpc3RpbmdGaWVsZHMuamF2YQpAQCAtMCwwICsxLDE0IEBACisvLyAiQmluZCBNZXRob2QgUGFyYW1ldGVycyB0byBGaWVsZHMiICJ0cnVlIgorCitjbGFzcyBBeworICAgICAgcHJpdmF0ZSBmaW5hbCBTdHJpbmcgbXlQOworICAgICAgcHJpdmF0ZSBmaW5hbCBTdHJpbmcgbXlMb25nUGFyYW1ldGVyTmFtZTsKKyAgICAgIHByaXZhdGUgZmluYWwgU3RyaW5nIG15TmFtZTsKKyAgCisgICAgICB2b2lkIGYoU3RyaW5nIHAsIFN0cmluZyBsb25nUGFyYW1ldGVyTmFtZSwgU3RyaW5nIHNob3J0UGFyYW1ldGVyTmFtZSl7CisgICAgICAgICAgbXlQID0gcDsKKyAgICAgICAgICBteUxvbmdQYXJhbWV0ZXJOYW1lID0gbG9uZ1BhcmFtZXRlck5hbWU7CisgICAgICAgICAgbXlOYW1lID0gc2hvcnRQYXJhbWV0ZXJOYW1lOworICAgICAgfQorfQorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2JpbmRGaWVsZHNGcm9tUGFyYW1ldGVycy9hZnRlckNhcmV0T25NZXRob2QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYmluZEZpZWxkc0Zyb21QYXJhbWV0ZXJzL2FmdGVyQ2FyZXRPbk1ldGhvZC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRmMDYzYjYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2JpbmRGaWVsZHNGcm9tUGFyYW1ldGVycy9hZnRlckNhcmV0T25NZXRob2QuamF2YQpAQCAtMCwwICsxLDEyIEBACisvLyAiQmluZCBNZXRob2QgUGFyYW1ldGVycyB0byBGaWVsZHMiICJ0cnVlIgorCitjbGFzcyBBeworICAgIHByaXZhdGUgaW50IG15UDE7CisgICAgcHJpdmF0ZSBpbnQgbXlQMjsKKworICAgIHZvaWQgbWV0aG9kKGludCBwMSwgaW50IHAyKXsKKyAgICAgICAgbXlQMSA9IHAxOworICAgICAgICBteVAyID0gcDI7CisgICAgfQorfQorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2JpbmRGaWVsZHNGcm9tUGFyYW1ldGVycy9hZnRlck5vdE51bGwuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYmluZEZpZWxkc0Zyb21QYXJhbWV0ZXJzL2FmdGVyTm90TnVsbC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFiYzgxMjIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2JpbmRGaWVsZHNGcm9tUGFyYW1ldGVycy9hZnRlck5vdE51bGwuamF2YQpAQCAtMCwwICsxLDE4IEBACisvLyAiQmluZCBDb25zdHJ1Y3RvciBQYXJhbWV0ZXJzIHRvIEZpZWxkcyIgInRydWUiCisKK2ltcG9ydCBvcmcuamV0YnJhaW5zLmFubm90YXRpb25zLk5vdE51bGw7CitpbXBvcnQgb3JnLmpldGJyYWlucy5hbm5vdGF0aW9ucy5OdWxsYWJsZTsKKworcHVibGljIGNsYXNzIFRlc3RCZWZvcmUgeworCisgICAgQE5vdE51bGwKKyAgICBwcml2YXRlIGZpbmFsIFN0cmluZyBteU5hbWU7CisgICAgQE5vdE51bGwKKyAgICBwcml2YXRlIGZpbmFsIFN0cmluZyBteU5hbWUyOworCisgICAgcHVibGljIFRlc3RCZWZvcmUoQE5vdE51bGwgU3RyaW5nIG5hbWUsIEBOb3ROdWxsIFN0cmluZyBuYW1lMikgeworICAgICAgICBzdXBlcigpOworICAgICAgICBteU5hbWUgPSBuYW1lOworICAgICAgICBteU5hbWUyID0gbmFtZTI7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9iaW5kRmllbGRzRnJvbVBhcmFtZXRlcnMvYWZ0ZXJOdWxsYWJsZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9iaW5kRmllbGRzRnJvbVBhcmFtZXRlcnMvYWZ0ZXJOdWxsYWJsZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdkNDU3ZjEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2JpbmRGaWVsZHNGcm9tUGFyYW1ldGVycy9hZnRlck51bGxhYmxlLmphdmEKQEAgLTAsMCArMSwxOCBAQAorLy8gIkJpbmQgQ29uc3RydWN0b3IgUGFyYW1ldGVycyB0byBGaWVsZHMiICJ0cnVlIgorCitpbXBvcnQgb3JnLmpldGJyYWlucy5hbm5vdGF0aW9ucy5Ob3ROdWxsOworaW1wb3J0IG9yZy5qZXRicmFpbnMuYW5ub3RhdGlvbnMuTnVsbGFibGU7CisKK3B1YmxpYyBjbGFzcyBUZXN0QmVmb3JlIHsKKworICAgIEBOdWxsYWJsZQorICAgIHByaXZhdGUgZmluYWwgU3RyaW5nIG15TmFtZTsKKyAgICBATnVsbGFibGUKKyAgICBwcml2YXRlIGZpbmFsIFN0cmluZyBteU5hbWUyOworCisgICAgcHVibGljIFRlc3RCZWZvcmUoQE51bGxhYmxlIFN0cmluZyBuYW1lLCBATnVsbGFibGUgU3RyaW5nIG5hbWUyKSB7CisgICAgICAgIHN1cGVyKCk7CisgICAgICAgIG15TmFtZSA9IG5hbWU7CisgICAgICAgIG15TmFtZTIgPSBuYW1lMjsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2JpbmRGaWVsZHNGcm9tUGFyYW1ldGVycy9hZnRlclNpbXBsZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9iaW5kRmllbGRzRnJvbVBhcmFtZXRlcnMvYWZ0ZXJTaW1wbGUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NzNjMTc3MwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYmluZEZpZWxkc0Zyb21QYXJhbWV0ZXJzL2FmdGVyU2ltcGxlLmphdmEKQEAgLTAsMCArMSwxNiBAQAorLy8gIkJpbmQgQ29uc3RydWN0b3IgUGFyYW1ldGVycyB0byBGaWVsZHMiICJ0cnVlIgorCitjbGFzcyBCYXIgeworCisgICAgcHJpdmF0ZSBmaW5hbCBpbnQgbXlJMTsKKyAgICBwcml2YXRlIGZpbmFsIGludCBteUkyOworICAgIHByaXZhdGUgZmluYWwgU3RyaW5nIG15STM7CisgICAgcHJpdmF0ZSBpbnQgbXlpMTsKKyAgICBwcml2YXRlIGludCBteWkyOworCisgICAgQmFyKGludCBpMSwgaW50IGkyLCBTdHJpbmcgaTMpIHsKKyAgICAgICAgbXlJMSA9IGkxOworICAgICAgICBteUkyID0gaTI7CisgICAgICAgIG15STMgPSBpMzsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9iaW5kRmllbGRzRnJvbVBhcmFtZXRlcnMvYWZ0ZXJTaW1wbGVUeXBlUGFyYW1ldGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2JpbmRGaWVsZHNGcm9tUGFyYW1ldGVycy9hZnRlclNpbXBsZVR5cGVQYXJhbWV0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZTVjY2YxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9iaW5kRmllbGRzRnJvbVBhcmFtZXRlcnMvYWZ0ZXJTaW1wbGVUeXBlUGFyYW1ldGVyLmphdmEKQEAgLTAsMCArMSwxMiBAQAorLy8gIkJpbmQgTWV0aG9kIFBhcmFtZXRlcnMgdG8gRmllbGRzIiAidHJ1ZSIKKworY2xhc3MgQXsKKyAgICBwcml2YXRlIE9iamVjdCBteVAxOworICAgIHByaXZhdGUgT2JqZWN0IG15UDI7CisKKyAgICA8VD4gdm9pZCBmKFQgcDEsIFQgcDIpeworICAgICAgICBteVAxID0gcDE7CisgICAgICAgIG15UDIgPSBwMjsKKyAgICB9Cit9CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYmluZEZpZWxkc0Zyb21QYXJhbWV0ZXJzL2FmdGVyVHlwZVBhcmFtZXRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9iaW5kRmllbGRzRnJvbVBhcmFtZXRlcnMvYWZ0ZXJUeXBlUGFyYW1ldGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzVmYjk1NAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYmluZEZpZWxkc0Zyb21QYXJhbWV0ZXJzL2FmdGVyVHlwZVBhcmFtZXRlci5qYXZhCkBAIC0wLDAgKzEsMTIgQEAKKy8vICJCaW5kIE1ldGhvZCBQYXJhbWV0ZXJzIHRvIEZpZWxkcyIgInRydWUiCisKK2NsYXNzIEF7CisgICAgcHJpdmF0ZSBTdHJpbmcgbXlQMTsKKyAgICBwcml2YXRlIFN0cmluZyBteVAyOworCisgICAgPFQgZXh0ZW5kcyBTdHJpbmc+IHZvaWQgZihUIHAxLCBUIHAyKXsKKyAgICAgICAgbXlQMSA9IHAxOworICAgICAgICBteVAyID0gcDI7CisgICAgfQorfQorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2JpbmRGaWVsZHNGcm9tUGFyYW1ldGVycy9iZWZvcmVBbHJlYWR5RXhpc3RpbmdGaWVsZHMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYmluZEZpZWxkc0Zyb21QYXJhbWV0ZXJzL2JlZm9yZUFscmVhZHlFeGlzdGluZ0ZpZWxkcy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVhZTJlMGIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2JpbmRGaWVsZHNGcm9tUGFyYW1ldGVycy9iZWZvcmVBbHJlYWR5RXhpc3RpbmdGaWVsZHMuamF2YQpAQCAtMCwwICsxLDExIEBACisvLyAiQmluZCBNZXRob2QgUGFyYW1ldGVycyB0byBGaWVsZHMiICJ0cnVlIgorCitjbGFzcyBBeworICAgICAgcHJpdmF0ZSBmaW5hbCBTdHJpbmcgbXlQOworICAgICAgcHJpdmF0ZSBmaW5hbCBTdHJpbmcgbXlMb25nUGFyYW1ldGVyTmFtZTsKKyAgICAgIHByaXZhdGUgZmluYWwgU3RyaW5nIG15TmFtZTsKKyAgCisgICAgICB2b2lkIDxjYXJldD5mKFN0cmluZyBwLCBTdHJpbmcgbG9uZ1BhcmFtZXRlck5hbWUsIFN0cmluZyBzaG9ydFBhcmFtZXRlck5hbWUpeworICAgICAgfQorfQorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2JpbmRGaWVsZHNGcm9tUGFyYW1ldGVycy9iZWZvcmVDYXJldE9uTWV0aG9kLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2JpbmRGaWVsZHNGcm9tUGFyYW1ldGVycy9iZWZvcmVDYXJldE9uTWV0aG9kLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzBjN2QxYwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYmluZEZpZWxkc0Zyb21QYXJhbWV0ZXJzL2JlZm9yZUNhcmV0T25NZXRob2QuamF2YQpAQCAtMCwwICsxLDcgQEAKKy8vICJCaW5kIE1ldGhvZCBQYXJhbWV0ZXJzIHRvIEZpZWxkcyIgInRydWUiCisKK2NsYXNzIEF7CisgICAgdm9pZCA8Y2FyZXQ+bWV0aG9kKGludCBwMSwgaW50IHAyKXsKKyAgICB9Cit9CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYmluZEZpZWxkc0Zyb21QYXJhbWV0ZXJzL2JlZm9yZUNhcmV0T25NZXRob2RXaXRoT25seUFzc2lnbmVkUGFyYW1zLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2JpbmRGaWVsZHNGcm9tUGFyYW1ldGVycy9iZWZvcmVDYXJldE9uTWV0aG9kV2l0aE9ubHlBc3NpZ25lZFBhcmFtcy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZjYjNiNWMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2JpbmRGaWVsZHNGcm9tUGFyYW1ldGVycy9iZWZvcmVDYXJldE9uTWV0aG9kV2l0aE9ubHlBc3NpZ25lZFBhcmFtcy5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKKy8vICJCaW5kIE1ldGhvZCBQYXJhbWV0ZXJzIHRvIEZpZWxkcyIgImZhbHNlIgorCitjbGFzcyBBeworICAgICAgcHJpdmF0ZSBmaW5hbCBTdHJpbmcgbXlQMTsKKyAgCisgICAgICB2b2lkIDxjYXJldD5mKFN0cmluZyBwMSl7CisgICAgICAgICAgbXlQMSA9IHAxOworICAgICAgfQorfQorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2JpbmRGaWVsZHNGcm9tUGFyYW1ldGVycy9iZWZvcmVDYXJldE9uTWV0aG9kV2l0aFR3b0Fzc2lnbmVkUGFyYW1zLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2JpbmRGaWVsZHNGcm9tUGFyYW1ldGVycy9iZWZvcmVDYXJldE9uTWV0aG9kV2l0aFR3b0Fzc2lnbmVkUGFyYW1zLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTMzYTdhYQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYmluZEZpZWxkc0Zyb21QYXJhbWV0ZXJzL2JlZm9yZUNhcmV0T25NZXRob2RXaXRoVHdvQXNzaWduZWRQYXJhbXMuamF2YQpAQCAtMCwwICsxLDEyIEBACisvLyAiQmluZCBNZXRob2QgUGFyYW1ldGVycyB0byBGaWVsZHMiICJmYWxzZSIKKworY2xhc3MgQXsKKyAgICAgIHByaXZhdGUgZmluYWwgU3RyaW5nIG15UDE7CisgICAgICBwcml2YXRlIGZpbmFsIFN0cmluZyBteVAyOworICAKKyAgICAgIHZvaWQgPGNhcmV0PmYoU3RyaW5nIHAxLCBTdHJpbmcgcDIpeworICAgICAgICAgIG15UDEgPSBwMTsKKyAgICAgICAgICBteVAyID0gcDI7CisgICAgICB9Cit9CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYmluZEZpZWxkc0Zyb21QYXJhbWV0ZXJzL2JlZm9yZUNhcmV0T25NZXRob2RXaXRob3V0UGFyYW1zLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2JpbmRGaWVsZHNGcm9tUGFyYW1ldGVycy9iZWZvcmVDYXJldE9uTWV0aG9kV2l0aG91dFBhcmFtcy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYwNGJhZWUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2JpbmRGaWVsZHNGcm9tUGFyYW1ldGVycy9iZWZvcmVDYXJldE9uTWV0aG9kV2l0aG91dFBhcmFtcy5qYXZhCkBAIC0wLDAgKzEsNyBAQAorLy8gIkJpbmQgTWV0aG9kIFBhcmFtZXRlcnMgdG8gRmllbGRzIiAiZmFsc2UiCisKK2NsYXNzIEF7CisgICAgdm9pZCA8Y2FyZXQ+ZigpeworICAgIH0KK30KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9iaW5kRmllbGRzRnJvbVBhcmFtZXRlcnMvYmVmb3JlTm90TnVsbC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9iaW5kRmllbGRzRnJvbVBhcmFtZXRlcnMvYmVmb3JlTm90TnVsbC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMwNGRhYjkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2JpbmRGaWVsZHNGcm9tUGFyYW1ldGVycy9iZWZvcmVOb3ROdWxsLmphdmEKQEAgLTAsMCArMSwxMSBAQAorLy8gIkJpbmQgQ29uc3RydWN0b3IgUGFyYW1ldGVycyB0byBGaWVsZHMiICJ0cnVlIgorCitpbXBvcnQgb3JnLmpldGJyYWlucy5hbm5vdGF0aW9ucy5Ob3ROdWxsOworaW1wb3J0IG9yZy5qZXRicmFpbnMuYW5ub3RhdGlvbnMuTnVsbGFibGU7CisKK3B1YmxpYyBjbGFzcyBUZXN0QmVmb3JlIHsKKworICAgIHB1YmxpYyBUZXN0QmVmb3JlKEBOb3ROdWxsIFN0cmluZyBuYW1lPGNhcmV0PiwgQE5vdE51bGwgU3RyaW5nIG5hbWUyKSB7CisgICAgICAgIHN1cGVyKCk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9iaW5kRmllbGRzRnJvbVBhcmFtZXRlcnMvYmVmb3JlTnVsbGFibGUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYmluZEZpZWxkc0Zyb21QYXJhbWV0ZXJzL2JlZm9yZU51bGxhYmxlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGZiODMwNAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYmluZEZpZWxkc0Zyb21QYXJhbWV0ZXJzL2JlZm9yZU51bGxhYmxlLmphdmEKQEAgLTAsMCArMSwxMSBAQAorLy8gIkJpbmQgQ29uc3RydWN0b3IgUGFyYW1ldGVycyB0byBGaWVsZHMiICJ0cnVlIgorCitpbXBvcnQgb3JnLmpldGJyYWlucy5hbm5vdGF0aW9ucy5Ob3ROdWxsOworaW1wb3J0IG9yZy5qZXRicmFpbnMuYW5ub3RhdGlvbnMuTnVsbGFibGU7CisKK3B1YmxpYyBjbGFzcyBUZXN0QmVmb3JlIHsKKworICAgIHB1YmxpYyBUZXN0QmVmb3JlKEBOdWxsYWJsZSBTdHJpbmcgbmFtZTxjYXJldD4sIEBOdWxsYWJsZSBTdHJpbmcgbmFtZTIpIHsKKyAgICAgICAgc3VwZXIoKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2JpbmRGaWVsZHNGcm9tUGFyYW1ldGVycy9iZWZvcmVTaW1wbGUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYmluZEZpZWxkc0Zyb21QYXJhbWV0ZXJzL2JlZm9yZVNpbXBsZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYwOGQ2MDYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2JpbmRGaWVsZHNGcm9tUGFyYW1ldGVycy9iZWZvcmVTaW1wbGUuamF2YQpAQCAtMCwwICsxLDEwIEBACisvLyAiQmluZCBDb25zdHJ1Y3RvciBQYXJhbWV0ZXJzIHRvIEZpZWxkcyIgInRydWUiCisKK2NsYXNzIEJhciB7CisKKyAgICBwcml2YXRlIGludCBteWkxOworICAgIHByaXZhdGUgaW50IG15aTI7CisKKyAgICBCYXIoaW50IDxjYXJldD5pMSwgaW50IGkyLCBTdHJpbmcgaTMpIHsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9iaW5kRmllbGRzRnJvbVBhcmFtZXRlcnMvYmVmb3JlU2ltcGxlVHlwZVBhcmFtZXRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9iaW5kRmllbGRzRnJvbVBhcmFtZXRlcnMvYmVmb3JlU2ltcGxlVHlwZVBhcmFtZXRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkzOTkwMTQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2JpbmRGaWVsZHNGcm9tUGFyYW1ldGVycy9iZWZvcmVTaW1wbGVUeXBlUGFyYW1ldGVyLmphdmEKQEAgLTAsMCArMSw3IEBACisvLyAiQmluZCBNZXRob2QgUGFyYW1ldGVycyB0byBGaWVsZHMiICJ0cnVlIgorCitjbGFzcyBBeworICAgIDxUPiB2b2lkIGYoVCBwPGNhcmV0PjEsIFQgcDIpeworICAgIH0KK30KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9iaW5kRmllbGRzRnJvbVBhcmFtZXRlcnMvYmVmb3JlVHlwZVBhcmFtZXRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9iaW5kRmllbGRzRnJvbVBhcmFtZXRlcnMvYmVmb3JlVHlwZVBhcmFtZXRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI4ZTdiMjUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2JpbmRGaWVsZHNGcm9tUGFyYW1ldGVycy9iZWZvcmVUeXBlUGFyYW1ldGVyLmphdmEKQEAgLTAsMCArMSw3IEBACisvLyAiQmluZCBNZXRob2QgUGFyYW1ldGVycyB0byBGaWVsZHMiICJ0cnVlIgorCitjbGFzcyBBeworICAgIDxUIGV4dGVuZHMgU3RyaW5nPiB2b2lkIGYoVCBwPGNhcmV0PjEsIFQgcDIpeworICAgIH0KK30KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9icmVha1N0cmluZ09uTGluZUJyZWFrcy9hZnRlckFsbC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9icmVha1N0cmluZ09uTGluZUJyZWFrcy9hZnRlckFsbC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM5MjE4NjcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2JyZWFrU3RyaW5nT25MaW5lQnJlYWtzL2FmdGVyQWxsLmphdmEKQEAgLTAsMCArMSw3IEBACisvLyAiQnJlYWsgc3RyaW5nIG9uICdcbiciICJ0cnVlIgorCitjbGFzcyBBIHsKKyAgICBTdHJpbmcgcyA9ICJIZWxsbyxcblxyIiArCisgICAgICAgICAgICAid29ybGRcbiIgKworICAgICAgICAgICAgIiFcbiI7Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2JyZWFrU3RyaW5nT25MaW5lQnJlYWtzL2JlZm9yZUFsbC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9icmVha1N0cmluZ09uTGluZUJyZWFrcy9iZWZvcmVBbGwuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hODc5NjFiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9icmVha1N0cmluZ09uTGluZUJyZWFrcy9iZWZvcmVBbGwuamF2YQpAQCAtMCwwICsxLDUgQEAKKy8vICJCcmVhayBzdHJpbmcgb24gJ1xuJyIgInRydWUiCisKK2NsYXNzIEEgeworICAgIFN0cmluZyBzID0gIkhlbGxvLFxuXHJ3b3I8Y2FyZXQ+bGRcbiFcbiI7Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2JyZWFrU3RyaW5nT25MaW5lQnJlYWtzL2JlZm9yZUxhc3RTbGFzaE4uamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYnJlYWtTdHJpbmdPbkxpbmVCcmVha3MvYmVmb3JlTGFzdFNsYXNoTi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBkZTJmODMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2JyZWFrU3RyaW5nT25MaW5lQnJlYWtzL2JlZm9yZUxhc3RTbGFzaE4uamF2YQpAQCAtMCwwICsxLDUgQEAKKy8vICJCcmVhayBzdHJpbmcgb24gJ1xuJyIgImZhbHNlIgorCitjbGFzcyBBIHsKKyAgU3RyaW5nIHMgPSAiSGVsbG8hXG4iOworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9icmVha1N0cmluZ09uTGluZUJyZWFrcy9iZWZvcmVMYXN0U2xhc2hOU2xhc2hSLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2JyZWFrU3RyaW5nT25MaW5lQnJlYWtzL2JlZm9yZUxhc3RTbGFzaE5TbGFzaFIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMThhNTYwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9icmVha1N0cmluZ09uTGluZUJyZWFrcy9iZWZvcmVMYXN0U2xhc2hOU2xhc2hSLmphdmEKQEAgLTAsMCArMSw1IEBACisvLyAiQnJlYWsgc3RyaW5nIG9uICdcbiciICJmYWxzZSIKKworY2xhc3MgQSB7CisgIFN0cmluZyBzID0gIkhlbGxvIVxuXHIiOworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9icmluZ1ZhcmlhYmxlSW50b1Njb3BlL2FmdGVyMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9icmluZ1ZhcmlhYmxlSW50b1Njb3BlL2FmdGVyMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJhZGFhMzQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2JyaW5nVmFyaWFibGVJbnRvU2NvcGUvYWZ0ZXIxLmphdmEKQEAgLTAsMCArMSwxMSBAQAorLy8gIkJyaW5nICdpbnQgaScgaW50byBTY29wZSIgInRydWUiCitjbGFzcyBhIHsKKyAgICB2b2lkIGZvbyAoKSB7CisgICAgICAgIGludCBpID0gMDsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGkgPSAwOworICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgaW50IGogPSBpOworICAgICAgICB9CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYnJpbmdWYXJpYWJsZUludG9TY29wZS9hZnRlcjIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYnJpbmdWYXJpYWJsZUludG9TY29wZS9hZnRlcjIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZTAyYWIxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9icmluZ1ZhcmlhYmxlSW50b1Njb3BlL2FmdGVyMi5qYXZhCkBAIC0wLDAgKzEsMTQgQEAKKy8vICJCcmluZyAnaW50IGknIGludG8gU2NvcGUiICJ0cnVlIgorY2xhc3MgYSB7CisgICAgdm9pZCBmb28gKGludCB5KSB7CisgICAgICAgIGludCBpOworICAgICAgICB3aGlsZSAoeSAhPSAwKSB7CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBpID0gMDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgPGNhcmV0PmkgPSAwOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2JyaW5nVmFyaWFibGVJbnRvU2NvcGUvYWZ0ZXIzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2JyaW5nVmFyaWFibGVJbnRvU2NvcGUvYWZ0ZXIzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjcyZDEwNQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYnJpbmdWYXJpYWJsZUludG9TY29wZS9hZnRlcjMuamF2YQpAQCAtMCwwICsxLDE0IEBACisvLyAiQnJpbmcgJ2ludCBpJyBpbnRvIFNjb3BlIiAidHJ1ZSIKK2NsYXNzIGEgeworICAgIHZvaWQgZm9vIChpbnQgeSkgeworICAgICAgICBpbnQgaSA9IDA7CisgICAgICAgIHdoaWxlICh5ICE9IDApIHsKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIGkgPSAwOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBpbnQgaiA9IGk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYnJpbmdWYXJpYWJsZUludG9TY29wZS9hZnRlcjQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYnJpbmdWYXJpYWJsZUludG9TY29wZS9hZnRlcjQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ODViMWZmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9icmluZ1ZhcmlhYmxlSW50b1Njb3BlL2FmdGVyNC5qYXZhCkBAIC0wLDAgKzEsMTEgQEAKKy8vICJCcmluZyAnaW50IGknIGludG8gU2NvcGUiICJ0cnVlIgorY2xhc3MgYSB7CisgICAgcHVibGljIHZvaWQgZm9vKCkgeworICAgICAgICBpbnQgaTsKKyAgICAgICAgaWYgKHRydWUpIHsKKyAgICAgICAgICAgIGkgPSAwOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgaW50IGogPSBpOworICAgICAgICB9CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYnJpbmdWYXJpYWJsZUludG9TY29wZS9hZnRlckZvci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9icmluZ1ZhcmlhYmxlSW50b1Njb3BlL2FmdGVyRm9yLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGU0NDVkNgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYnJpbmdWYXJpYWJsZUludG9TY29wZS9hZnRlckZvci5qYXZhCkBAIC0wLDAgKzEsOSBAQAorLy8gIkJyaW5nICdpbnQgaScgaW50byBTY29wZSIgInRydWUiCitjbGFzcyBhIHsKKyAgICBwdWJsaWMgdm9pZCBmb28oKSB7CisgICAgICAgIGludCBpOworICAgICAgICBmb3IgKGkgPSAwOyBpIDwgMTA7IGkrKykgeworICAgICAgICB9CisgICAgICAgIGkgPSAwOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2JyaW5nVmFyaWFibGVJbnRvU2NvcGUvYWZ0ZXJJbml0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2JyaW5nVmFyaWFibGVJbnRvU2NvcGUvYWZ0ZXJJbml0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmZmZTZhNQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYnJpbmdWYXJpYWJsZUludG9TY29wZS9hZnRlckluaXQuamF2YQpAQCAtMCwwICsxLDExIEBACisvLyAiQnJpbmcgJ1N0cmluZyBjb24nIGludG8gU2NvcGUiICJ0cnVlIgorY2xhc3MgYSB7CisgICAgcHJpdmF0ZSB2b2lkIGZmZmYoU3RyaW5nIGMpIHsKKyAgICAgICAgU3RyaW5nIGNvbiA9IG51bGw7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBjb24gPSBudWxsOworICAgICAgICB9IGZpbmFsbHkgeworICAgICAgICAgICAgZmZmZihjb24pOyAvLyBUaGlzIG1ldGhvZCBkb2Vzbid0IG1pbmQgY29uID09IG51bGwuCisgICAgICAgIH0KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9icmluZ1ZhcmlhYmxlSW50b1Njb3BlL2FmdGVyTXVsdGlwbGVEZWNsYXJhdGlvbnMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYnJpbmdWYXJpYWJsZUludG9TY29wZS9hZnRlck11bHRpcGxlRGVjbGFyYXRpb25zLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTBhYjFlZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYnJpbmdWYXJpYWJsZUludG9TY29wZS9hZnRlck11bHRpcGxlRGVjbGFyYXRpb25zLmphdmEKQEAgLTAsMCArMSwxMSBAQAorLy8gIkJyaW5nICdpbnQgaicgaW50byBTY29wZSIgInRydWUiCitjbGFzcyBhIHsKKyAgICB2b2lkIGZvbygpIHsKKyAgICAgICAgaW50IGo7CisgICAgICAgIHsKKyAgICAgICAgICAgIGludCBpOworICAgICAgICAgICAgaiA9IDEwOworICAgICAgICB9CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbig8Y2FyZXQ+aik7IC8vIGludm9rZSAiYnJpbmcgJ2ludCBqJyBpbnRvIHNjb3BlIiBxdWlja2ZpeCBoZXJlCisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYnJpbmdWYXJpYWJsZUludG9TY29wZS9iZWZvcmUxLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2JyaW5nVmFyaWFibGVJbnRvU2NvcGUvYmVmb3JlMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFlOTI5MDkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2JyaW5nVmFyaWFibGVJbnRvU2NvcGUvYmVmb3JlMS5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKKy8vICJCcmluZyAnaW50IGknIGludG8gU2NvcGUiICJ0cnVlIgorY2xhc3MgYSB7CisgICAgdm9pZCBmb28gKCkgeworICAgICAgICB0cnkgeworICAgICAgICAgICAgaW50IGkgPSAwOworICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgaW50IGogPSA8Y2FyZXQ+aTsKKyAgICAgICAgfQorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2JyaW5nVmFyaWFibGVJbnRvU2NvcGUvYmVmb3JlMi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9icmluZ1ZhcmlhYmxlSW50b1Njb3BlL2JlZm9yZTIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mY2Y3ZTMyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9icmluZ1ZhcmlhYmxlSW50b1Njb3BlL2JlZm9yZTIuamF2YQpAQCAtMCwwICsxLDEzIEBACisvLyAiQnJpbmcgJ2ludCBpJyBpbnRvIFNjb3BlIiAidHJ1ZSIKK2NsYXNzIGEgeworICAgIHZvaWQgZm9vIChpbnQgeSkgeworICAgICAgICB3aGlsZSAoeSAhPSAwKSB7CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBmaW5hbCBpbnQgaSA9IDA7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIDxjYXJldD5pID0gMDsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9icmluZ1ZhcmlhYmxlSW50b1Njb3BlL2JlZm9yZTMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYnJpbmdWYXJpYWJsZUludG9TY29wZS9iZWZvcmUzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzQzMDdlYwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYnJpbmdWYXJpYWJsZUludG9TY29wZS9iZWZvcmUzLmphdmEKQEAgLTAsMCArMSwxMyBAQAorLy8gIkJyaW5nICdpbnQgaScgaW50byBTY29wZSIgInRydWUiCitjbGFzcyBhIHsKKyAgICB2b2lkIGZvbyAoaW50IHkpIHsKKyAgICAgICAgd2hpbGUgKHkgIT0gMCkgeworICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgZmluYWwgaW50IGkgPSAwOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBpbnQgaiA9IDxjYXJldD5pOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2JyaW5nVmFyaWFibGVJbnRvU2NvcGUvYmVmb3JlNC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9icmluZ1ZhcmlhYmxlSW50b1Njb3BlL2JlZm9yZTQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZThhMzdkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9icmluZ1ZhcmlhYmxlSW50b1Njb3BlL2JlZm9yZTQuamF2YQpAQCAtMCwwICsxLDEwIEBACisvLyAiQnJpbmcgJ2ludCBpJyBpbnRvIFNjb3BlIiAidHJ1ZSIKK2NsYXNzIGEgeworICAgIHB1YmxpYyB2b2lkIGZvbygpIHsKKyAgICAgICAgaWYgKHRydWUpIHsKKyAgICAgICAgICAgIGludCBpID0gMDsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGludCBqID0gPGNhcmV0Pmk7CisgICAgICAgIH0KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9icmluZ1ZhcmlhYmxlSW50b1Njb3BlL2JlZm9yZUZvci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9icmluZ1ZhcmlhYmxlSW50b1Njb3BlL2JlZm9yZUZvci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjljYjkxNmUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2JyaW5nVmFyaWFibGVJbnRvU2NvcGUvYmVmb3JlRm9yLmphdmEKQEAgLTAsMCArMSw3IEBACisvLyAiQnJpbmcgJ2ludCBpJyBpbnRvIFNjb3BlIiAidHJ1ZSIKK2NsYXNzIGEgeworICAgIHB1YmxpYyB2b2lkIGZvbygpIHsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCAxMDsgaSsrKSB7ICB9CisgICAgICAgIDxjYXJldD5pID0gMDsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9icmluZ1ZhcmlhYmxlSW50b1Njb3BlL2JlZm9yZUluaXQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYnJpbmdWYXJpYWJsZUludG9TY29wZS9iZWZvcmVJbml0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzAxNmYzZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYnJpbmdWYXJpYWJsZUludG9TY29wZS9iZWZvcmVJbml0LmphdmEKQEAgLTAsMCArMSw5IEBACisvLyAiQnJpbmcgJ1N0cmluZyBjb24nIGludG8gU2NvcGUiICJ0cnVlIgorY2xhc3MgYSB7CisgICAgcHJpdmF0ZSB2b2lkIGZmZmYoU3RyaW5nIGMpeworICAgICAgICB0cnkgeyBTdHJpbmcgY29uID0gbnVsbDsgIH0KKyAgICAgICAgZmluYWxseSB7CisgICAgICAgICAgICBmZmZmKDxjYXJldD5jb24pOyAvLyBUaGlzIG1ldGhvZCBkb2Vzbid0IG1pbmQgY29uID09IG51bGwuCisgICAgICAgIH0KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9icmluZ1ZhcmlhYmxlSW50b1Njb3BlL2JlZm9yZU11bHRpcGxlRGVjbGFyYXRpb25zLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2JyaW5nVmFyaWFibGVJbnRvU2NvcGUvYmVmb3JlTXVsdGlwbGVEZWNsYXJhdGlvbnMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YWE5ZTcxZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvYnJpbmdWYXJpYWJsZUludG9TY29wZS9iZWZvcmVNdWx0aXBsZURlY2xhcmF0aW9ucy5qYXZhCkBAIC0wLDAgKzEsOSBAQAorLy8gIkJyaW5nICdpbnQgaicgaW50byBTY29wZSIgInRydWUiCitjbGFzcyBhIHsKKyAgICB2b2lkIGZvbygpIHsKKyAgICB7CisgICAgICBpbnQgaSwgaiA9IDEwOworICAgIH0KKyAgICBTeXN0ZW0ub3V0LnByaW50bG4oPGNhcmV0PmopOyAvLyBpbnZva2UgImJyaW5nICdpbnQgaicgaW50byBzY29wZSIgcXVpY2tmaXggaGVyZQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jYXN0Q29uc3RydWN0b3JQYXJhbWV0ZXJzL2FmdGVyMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jYXN0Q29uc3RydWN0b3JQYXJhbWV0ZXJzL2FmdGVyMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMyYzMyYTkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2Nhc3RDb25zdHJ1Y3RvclBhcmFtZXRlcnMvYWZ0ZXIxLmphdmEKQEAgLTAsMCArMSwxMSBAQAorLy8gIkNhc3QgcGFyYW1ldGVyIHRvICdhJyIgInRydWUiCitjbGFzcyB4IHt9CitjbGFzcyBhIGV4dGVuZHMgeCB7CisgICAgYShhIGEpIHt9CisgICAgYSh4IHgpIHt9CisKKyAgICB2b2lkIGYoUnVubmFibGUgcikgeworICAgICAgICBuZXcgYSg8Y2FyZXQ+KGEpIHIpOworICAgIH0KK30KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jYXN0Q29uc3RydWN0b3JQYXJhbWV0ZXJzL2FmdGVyMi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jYXN0Q29uc3RydWN0b3JQYXJhbWV0ZXJzL2FmdGVyMi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkyODRlYWIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2Nhc3RDb25zdHJ1Y3RvclBhcmFtZXRlcnMvYWZ0ZXIyLmphdmEKQEAgLTAsMCArMSwxMSBAQAorLy8gIkNhc3QgcGFyYW1ldGVyIHRvICd4JyIgInRydWUiCitjbGFzcyB4IHt9CitjbGFzcyBhIGV4dGVuZHMgeCB7CisgICAgYShhIGEpIHt9CisgICAgYSh4IHgpIHt9CisKKyAgICB2b2lkIGYoUnVubmFibGUgcikgeworICAgICAgICBuZXcgYSg8Y2FyZXQ+KHgpIHIpOworICAgIH0KK30KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jYXN0Q29uc3RydWN0b3JQYXJhbWV0ZXJzL2FmdGVyMy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jYXN0Q29uc3RydWN0b3JQYXJhbWV0ZXJzL2FmdGVyMy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIxNjAxOTcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2Nhc3RDb25zdHJ1Y3RvclBhcmFtZXRlcnMvYWZ0ZXIzLmphdmEKQEAgLTAsMCArMSwxMyBAQAorLy8gIkNhc3QgMXN0IHBhcmFtZXRlciB0byAnZG91YmxlJyIgInRydWUiCitjbGFzcyB4IHt9CitjbGFzcyBhIGV4dGVuZHMgeCB7CisgICAgYShhIGEpIHt9CisgICAgYSh4IHgpIHt9CisgICAgYShpbnQgaSwgZG91YmxlIGQpIHt9CisgICAgYShkb3VibGUgZCwgaW50IGkpIHt9CisKKyAgICB2b2lkIGYoUnVubmFibGUgcikgeworICAgICAgICBuZXcgYSg8Y2FyZXQ+KGRvdWJsZSkgMSwgMSk7CisgICAgfQorfQorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2Nhc3RDb25zdHJ1Y3RvclBhcmFtZXRlcnMvYWZ0ZXI0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2Nhc3RDb25zdHJ1Y3RvclBhcmFtZXRlcnMvYWZ0ZXI0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzAxMzM1NwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY2FzdENvbnN0cnVjdG9yUGFyYW1ldGVycy9hZnRlcjQuamF2YQpAQCAtMCwwICsxLDEzIEBACisvLyAiQ2FzdCAybmQgcGFyYW1ldGVyIHRvICdkb3VibGUnIiAidHJ1ZSIKK2NsYXNzIHgge30KK2NsYXNzIGEgZXh0ZW5kcyB4IHsKKyAgICBhKGEgYSkge30KKyAgICBhKHggeCkge30KKyAgICBhKGludCBpLCBkb3VibGUgZCkge30KKyAgICBhKGRvdWJsZSBkLCBpbnQgaSkge30KKworICAgIHZvaWQgZihSdW5uYWJsZSByKSB7CisgICAgICAgIG5ldyBhKDxjYXJldD4xLCAoZG91YmxlKSAxKTsKKyAgICB9Cit9CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY2FzdENvbnN0cnVjdG9yUGFyYW1ldGVycy9hZnRlcjUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY2FzdENvbnN0cnVjdG9yUGFyYW1ldGVycy9hZnRlcjUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMjVlZjNkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jYXN0Q29uc3RydWN0b3JQYXJhbWV0ZXJzL2FmdGVyNS5qYXZhCkBAIC0wLDAgKzEsMTkgQEAKKy8vICJDYXN0IHBhcmFtZXRlciB0byAnR2VuZXJhbFRlc3QuQiciICJ0cnVlIgoraW1wb3J0IGphdmEudXRpbC4qOworY2xhc3MgR2VuZXJhbFRlc3QgeworICAgIHN0YXRpYyBjbGFzcyBCIHsKKworICAgIH0KKyAgICBzdGF0aWMgY2xhc3MgQSB7CisgICAgICAgIEEoQiBiKSB7CisgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oYik7CisgICAgICAgIH0KKyAgICB9CisgICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgeworICAgICAgICBMaXN0IGEgPSBuZXcgQXJyYXlMaXN0KCk7CisgICAgICAgIG5ldyBBKChCKSBhLmdldCgwKSk8Y2FyZXQ+IHsgICAKKworICAgICAgICB9OworICAgIH0KK30KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jYXN0Q29uc3RydWN0b3JQYXJhbWV0ZXJzL2JlZm9yZTEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY2FzdENvbnN0cnVjdG9yUGFyYW1ldGVycy9iZWZvcmUxLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDFiYTUzMwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY2FzdENvbnN0cnVjdG9yUGFyYW1ldGVycy9iZWZvcmUxLmphdmEKQEAgLTAsMCArMSwxMSBAQAorLy8gIkNhc3QgcGFyYW1ldGVyIHRvICdhJyIgInRydWUiCitjbGFzcyB4IHt9CitjbGFzcyBhIGV4dGVuZHMgeCB7CisgICAgYShhIGEpIHt9CisgICAgYSh4IHgpIHt9CisKKyAgICB2b2lkIGYoUnVubmFibGUgcikgeworICAgICAgICBuZXcgYSg8Y2FyZXQ+cik7CisgICAgfQorfQorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2Nhc3RDb25zdHJ1Y3RvclBhcmFtZXRlcnMvYmVmb3JlMi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jYXN0Q29uc3RydWN0b3JQYXJhbWV0ZXJzL2JlZm9yZTIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZDhiMzlkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jYXN0Q29uc3RydWN0b3JQYXJhbWV0ZXJzL2JlZm9yZTIuamF2YQpAQCAtMCwwICsxLDExIEBACisvLyAiQ2FzdCBwYXJhbWV0ZXIgdG8gJ3gnIiAidHJ1ZSIKK2NsYXNzIHgge30KK2NsYXNzIGEgZXh0ZW5kcyB4IHsKKyAgICBhKGEgYSkge30KKyAgICBhKHggeCkge30KKworICAgIHZvaWQgZihSdW5uYWJsZSByKSB7CisgICAgICAgIG5ldyBhKDxjYXJldD5yKTsKKyAgICB9Cit9CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY2FzdENvbnN0cnVjdG9yUGFyYW1ldGVycy9iZWZvcmUzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2Nhc3RDb25zdHJ1Y3RvclBhcmFtZXRlcnMvYmVmb3JlMy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRhNWY5ODYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2Nhc3RDb25zdHJ1Y3RvclBhcmFtZXRlcnMvYmVmb3JlMy5qYXZhCkBAIC0wLDAgKzEsMTMgQEAKKy8vICJDYXN0IDFzdCBwYXJhbWV0ZXIgdG8gJ2RvdWJsZSciICJ0cnVlIgorY2xhc3MgeCB7fQorY2xhc3MgYSBleHRlbmRzIHggeworICAgIGEoYSBhKSB7fQorICAgIGEoeCB4KSB7fQorICAgIGEoaW50IGksIGRvdWJsZSBkKSB7fQorICAgIGEoZG91YmxlIGQsIGludCBpKSB7fQorCisgICAgdm9pZCBmKFJ1bm5hYmxlIHIpIHsKKyAgICAgICAgbmV3IGEoPGNhcmV0PjEsIDEpOworICAgIH0KK30KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jYXN0Q29uc3RydWN0b3JQYXJhbWV0ZXJzL2JlZm9yZTQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY2FzdENvbnN0cnVjdG9yUGFyYW1ldGVycy9iZWZvcmU0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTgwYmQ3ZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY2FzdENvbnN0cnVjdG9yUGFyYW1ldGVycy9iZWZvcmU0LmphdmEKQEAgLTAsMCArMSwxMyBAQAorLy8gIkNhc3QgMm5kIHBhcmFtZXRlciB0byAnZG91YmxlJyIgInRydWUiCitjbGFzcyB4IHt9CitjbGFzcyBhIGV4dGVuZHMgeCB7CisgICAgYShhIGEpIHt9CisgICAgYSh4IHgpIHt9CisgICAgYShpbnQgaSwgZG91YmxlIGQpIHt9CisgICAgYShkb3VibGUgZCwgaW50IGkpIHt9CisKKyAgICB2b2lkIGYoUnVubmFibGUgcikgeworICAgICAgICBuZXcgYSg8Y2FyZXQ+MSwgMSk7CisgICAgfQorfQorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2Nhc3RDb25zdHJ1Y3RvclBhcmFtZXRlcnMvYmVmb3JlNS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jYXN0Q29uc3RydWN0b3JQYXJhbWV0ZXJzL2JlZm9yZTUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NTZjZmRmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jYXN0Q29uc3RydWN0b3JQYXJhbWV0ZXJzL2JlZm9yZTUuamF2YQpAQCAtMCwwICsxLDE5IEBACisvLyAiQ2FzdCBwYXJhbWV0ZXIgdG8gJ0dlbmVyYWxUZXN0LkInIiAidHJ1ZSIKK2ltcG9ydCBqYXZhLnV0aWwuKjsKK2NsYXNzIEdlbmVyYWxUZXN0IHsKKyAgICBzdGF0aWMgY2xhc3MgQiB7CisKKyAgICB9CisgICAgc3RhdGljIGNsYXNzIEEgeworICAgICAgICBBKEIgYikgeworICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKGIpOworICAgICAgICB9CisgICAgfQorICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKKyAgICAgICAgTGlzdCBhID0gbmV3IEFycmF5TGlzdCgpOworICAgICAgICBuZXcgQShhLmdldCgwKSk8Y2FyZXQ+IHsgICAKKworICAgICAgICB9OworICAgIH0KK30KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jYXN0TWV0aG9kUGFyYW1ldGVycy9hZnRlcjEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY2FzdE1ldGhvZFBhcmFtZXRlcnMvYWZ0ZXIxLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDk2NDJmYwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY2FzdE1ldGhvZFBhcmFtZXRlcnMvYWZ0ZXIxLmphdmEKQEAgLTAsMCArMSwxMyBAQAorLy8gIkNhc3QgcGFyYW1ldGVyIHRvICdpbnQnIiAidHJ1ZSIKK2NsYXNzIGEgeworICAgIHByaXZhdGUgdm9pZCB0ZXN0KCkgIHt9CisgICAgcHJpdmF0ZSB2b2lkIHRlc3QoaW50IGkpICB7fQorICAgIHByaXZhdGUgdm9pZCB0ZXN0KFN0cmluZyBzKSAge30KKyAgICBwcml2YXRlIHZvaWQgdGVzdChPYmplY3QgbykgIHt9CisgICAgcHJpdmF0ZSB2b2lkIHRlc3QoY2hhciBjLGNoYXIgZikgIHt9CisKKyAgICB2b2lkIGYoKSB7CisgICAgICAgIHRlc3QoPGNhcmV0PihpbnQpIDIuMik7CisgICAgfQorfQorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2Nhc3RNZXRob2RQYXJhbWV0ZXJzL2FmdGVyMi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jYXN0TWV0aG9kUGFyYW1ldGVycy9hZnRlcjIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZTdmZjlkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jYXN0TWV0aG9kUGFyYW1ldGVycy9hZnRlcjIuamF2YQpAQCAtMCwwICsxLDEzIEBACisvLyAiQ2FzdCAxc3QgcGFyYW1ldGVyIHRvICdjaGFyJyIgInRydWUiCitjbGFzcyBhIHsKKyAgICBwcml2YXRlIHZvaWQgdGVzdCgpICB7fQorICAgIHByaXZhdGUgdm9pZCB0ZXN0KGludCBpKSAge30KKyAgICBwcml2YXRlIHZvaWQgdGVzdChTdHJpbmcgcykgIHt9CisgICAgcHJpdmF0ZSB2b2lkIHRlc3QoT2JqZWN0IG8pICB7fQorICAgIHByaXZhdGUgdm9pZCB0ZXN0KGNoYXIgYyxjaGFyIGYpICB7fQorCisgICAgdm9pZCBmKCkgeworICAgICAgICB0ZXN0KDxjYXJldD4oY2hhcikgMi4yLCAnZCcpOworICAgIH0KK30KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jYXN0TWV0aG9kUGFyYW1ldGVycy9hZnRlcjMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY2FzdE1ldGhvZFBhcmFtZXRlcnMvYWZ0ZXIzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTUxNjNjZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY2FzdE1ldGhvZFBhcmFtZXRlcnMvYWZ0ZXIzLmphdmEKQEAgLTAsMCArMSwxMyBAQAorLy8gIkNhc3QgMm5kIHBhcmFtZXRlciB0byAnY2hhciciICJ0cnVlIgorY2xhc3MgYSB7CisgICAgcHJpdmF0ZSB2b2lkIHRlc3QoKSAge30KKyAgICBwcml2YXRlIHZvaWQgdGVzdChpbnQgaSkgIHt9CisgICAgcHJpdmF0ZSB2b2lkIHRlc3QoU3RyaW5nIHMpICB7fQorICAgIHByaXZhdGUgdm9pZCB0ZXN0KE9iamVjdCBvKSAge30KKyAgICBwcml2YXRlIHZvaWQgdGVzdChjaGFyIGMsY2hhciBmKSAge30KKworICAgIHZvaWQgZigpIHsKKyAgICAgICAgdGVzdCg8Y2FyZXQ+J2QnLCAoY2hhcikgMCk7CisgICAgfQorfQorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2Nhc3RNZXRob2RQYXJhbWV0ZXJzL2FmdGVyNS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jYXN0TWV0aG9kUGFyYW1ldGVycy9hZnRlcjUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZWU3YzYxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jYXN0TWV0aG9kUGFyYW1ldGVycy9hZnRlcjUuamF2YQpAQCAtMCwwICsxLDE0IEBACisvLyAiQ2FzdCAxc3QgcGFyYW1ldGVyIHRvICdkb3VibGUnIiAidHJ1ZSIKK2NsYXNzIGEgeworICAgIHZvaWQgdGVzdCgpICB7fQorICAgIHZvaWQgdGVzdChpbnQgaSkgIHt9CisgICAgdm9pZCB0ZXN0KFN0cmluZyBzKSAge30KKyAgICB2b2lkIHRlc3QoT2JqZWN0IG8pICB7fQorICAgIHZvaWQgdGVzdChpbnQgaSxkb3VibGUgZCkgIHt9CisgICAgdm9pZCB0ZXN0KGRvdWJsZSBkLGludCBpKSAge30KKworICAgIHZvaWQgZigpIHsKKyAgICAgICAgdGVzdCg8Y2FyZXQ+KGRvdWJsZSkgMCwgMCk7CisgICAgfQorfQorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2Nhc3RNZXRob2RQYXJhbWV0ZXJzL2FmdGVyNi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jYXN0TWV0aG9kUGFyYW1ldGVycy9hZnRlcjYuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNzdlYTNkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jYXN0TWV0aG9kUGFyYW1ldGVycy9hZnRlcjYuamF2YQpAQCAtMCwwICsxLDE0IEBACisvLyAiQ2FzdCAybmQgcGFyYW1ldGVyIHRvICdkb3VibGUnIiAidHJ1ZSIKK2NsYXNzIGEgeworICAgIHZvaWQgdGVzdCgpICB7fQorICAgIHZvaWQgdGVzdChpbnQgaSkgIHt9CisgICAgdm9pZCB0ZXN0KFN0cmluZyBzKSAge30KKyAgICB2b2lkIHRlc3QoT2JqZWN0IG8pICB7fQorICAgIHZvaWQgdGVzdChpbnQgaSxkb3VibGUgZCkgIHt9CisgICAgdm9pZCB0ZXN0KGRvdWJsZSBkLGludCBpKSAge30KKworICAgIHZvaWQgZigpIHsKKyAgICAgICAgdGVzdCg8Y2FyZXQ+MCwgKGRvdWJsZSkgMCk7CisgICAgfQorfQorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2Nhc3RNZXRob2RQYXJhbWV0ZXJzL2FmdGVyNy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jYXN0TWV0aG9kUGFyYW1ldGVycy9hZnRlcjcuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNTU3YWI1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jYXN0TWV0aG9kUGFyYW1ldGVycy9hZnRlcjcuamF2YQpAQCAtMCwwICsxLDE0IEBACisvLyAiQ2FzdCBwYXJhbWV0ZXIgdG8gJ2EnIiAidHJ1ZSIKK2NsYXNzIGEgeworICAgIHZvaWQgdGVzdCgpICB7fQorICAgIHZvaWQgdGVzdChpbnQgaSkgIHt9CisgICAgdm9pZCB0ZXN0KFN0cmluZyBzKSAge30KKyAgICB2b2lkIHRlc3QoYSBvKSAge30KKyAgICB2b2lkIHRlc3QoaW50IGksZG91YmxlIGQpICB7fQorICAgIHZvaWQgdGVzdChkb3VibGUgZCxpbnQgaSkgIHt9CisKKyAgICB2b2lkIGYoUnVubmFibGUgcikgeworICAgICAgICB0ZXN0KDxjYXJldD4oYSkgcik7CisgICAgfQorfQorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2Nhc3RNZXRob2RQYXJhbWV0ZXJzL2FmdGVyOC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jYXN0TWV0aG9kUGFyYW1ldGVycy9hZnRlcjguamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZGJmODdmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jYXN0TWV0aG9kUGFyYW1ldGVycy9hZnRlcjguamF2YQpAQCAtMCwwICsxLDEwIEBACisvLyAiQ2FzdCAybmQgcGFyYW1ldGVyIHRvICdqYXZhLmxhbmcuVGhyb3dhYmxlJyIgInRydWUiCitjbGFzcyBhIHsKKyAgICB2b2lkIGYoVGhyb3dhYmxlIGEsIFRocm93YWJsZSBiKSB7fQorICAgIHZvaWQgZygpIHsKKyAgICAgICAgRXhjZXB0aW9uIGU9bnVsbDsKKyAgICAgICAgT2JqZWN0IG8gPSBudWxsOworICAgICAgICBmKDxjYXJldD5lLCAoVGhyb3dhYmxlKSBvKTsKKyAgICB9Cit9CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY2FzdE1ldGhvZFBhcmFtZXRlcnMvYmVmb3JlMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jYXN0TWV0aG9kUGFyYW1ldGVycy9iZWZvcmUxLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmEwNDkxNGIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2Nhc3RNZXRob2RQYXJhbWV0ZXJzL2JlZm9yZTEuamF2YQpAQCAtMCwwICsxLDEzIEBACisvLyAiQ2FzdCBwYXJhbWV0ZXIgdG8gJ2ludCciICJ0cnVlIgorY2xhc3MgYSB7CisgICAgcHJpdmF0ZSB2b2lkIHRlc3QoKSAge30KKyAgICBwcml2YXRlIHZvaWQgdGVzdChpbnQgaSkgIHt9CisgICAgcHJpdmF0ZSB2b2lkIHRlc3QoU3RyaW5nIHMpICB7fQorICAgIHByaXZhdGUgdm9pZCB0ZXN0KE9iamVjdCBvKSAge30KKyAgICBwcml2YXRlIHZvaWQgdGVzdChjaGFyIGMsY2hhciBmKSAge30KKworICAgIHZvaWQgZigpIHsKKyAgICAgICAgdGVzdCg8Y2FyZXQ+Mi4yKTsKKyAgICB9Cit9CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY2FzdE1ldGhvZFBhcmFtZXRlcnMvYmVmb3JlMi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jYXN0TWV0aG9kUGFyYW1ldGVycy9iZWZvcmUyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzVkZGM1ZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY2FzdE1ldGhvZFBhcmFtZXRlcnMvYmVmb3JlMi5qYXZhCkBAIC0wLDAgKzEsMTMgQEAKKy8vICJDYXN0IDFzdCBwYXJhbWV0ZXIgdG8gJ2NoYXInIiAidHJ1ZSIKK2NsYXNzIGEgeworICAgIHByaXZhdGUgdm9pZCB0ZXN0KCkgIHt9CisgICAgcHJpdmF0ZSB2b2lkIHRlc3QoaW50IGkpICB7fQorICAgIHByaXZhdGUgdm9pZCB0ZXN0KFN0cmluZyBzKSAge30KKyAgICBwcml2YXRlIHZvaWQgdGVzdChPYmplY3QgbykgIHt9CisgICAgcHJpdmF0ZSB2b2lkIHRlc3QoY2hhciBjLGNoYXIgZikgIHt9CisKKyAgICB2b2lkIGYoKSB7CisgICAgICAgIHRlc3QoPGNhcmV0PjIuMiwgJ2QnKTsKKyAgICB9Cit9CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY2FzdE1ldGhvZFBhcmFtZXRlcnMvYmVmb3JlMy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jYXN0TWV0aG9kUGFyYW1ldGVycy9iZWZvcmUzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGYxNDE5OQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY2FzdE1ldGhvZFBhcmFtZXRlcnMvYmVmb3JlMy5qYXZhCkBAIC0wLDAgKzEsMTMgQEAKKy8vICJDYXN0IDJuZCBwYXJhbWV0ZXIgdG8gJ2NoYXInIiAidHJ1ZSIKK2NsYXNzIGEgeworICAgIHByaXZhdGUgdm9pZCB0ZXN0KCkgIHt9CisgICAgcHJpdmF0ZSB2b2lkIHRlc3QoaW50IGkpICB7fQorICAgIHByaXZhdGUgdm9pZCB0ZXN0KFN0cmluZyBzKSAge30KKyAgICBwcml2YXRlIHZvaWQgdGVzdChPYmplY3QgbykgIHt9CisgICAgcHJpdmF0ZSB2b2lkIHRlc3QoY2hhciBjLGNoYXIgZikgIHt9CisKKyAgICB2b2lkIGYoKSB7CisgICAgICAgIHRlc3QoPGNhcmV0PidkJywgMCk7CisgICAgfQorfQorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2Nhc3RNZXRob2RQYXJhbWV0ZXJzL2JlZm9yZTQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY2FzdE1ldGhvZFBhcmFtZXRlcnMvYmVmb3JlNC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFmNjkxNDgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2Nhc3RNZXRob2RQYXJhbWV0ZXJzL2JlZm9yZTQuamF2YQpAQCAtMCwwICsxLDE0IEBACisvLyAiQ2FzdCAxc3QgcGFyYW1ldGVyIHRvICdjaGFyJyIgImZhbHNlIgorY2xhc3MgYSB7CisgICAgcHJpdmF0ZSB2b2lkIHRlc3QoKSAge30KKyAgICBwcml2YXRlIHZvaWQgdGVzdChpbnQgaSkgIHt9CisgICAgcHJpdmF0ZSB2b2lkIHRlc3QoU3RyaW5nIHMpICB7fQorICAgIHByaXZhdGUgdm9pZCB0ZXN0KE9iamVjdCBvKSAge30KKyAgICBwcml2YXRlIHZvaWQgdGVzdChjaGFyIGMsY2hhciBmKSAge30KKyAgICBwcml2YXRlIHZvaWQgdGVzdChpbnQgYywgY2hhciBmKSAge30KKworICAgIHZvaWQgZigpIHsKKyAgICAgICAgdGVzdCg8Y2FyZXQ+MCwgMCk7CisgICAgfQorfQorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2Nhc3RNZXRob2RQYXJhbWV0ZXJzL2JlZm9yZTUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY2FzdE1ldGhvZFBhcmFtZXRlcnMvYmVmb3JlNS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRlNjFkZWMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2Nhc3RNZXRob2RQYXJhbWV0ZXJzL2JlZm9yZTUuamF2YQpAQCAtMCwwICsxLDE0IEBACisvLyAiQ2FzdCAxc3QgcGFyYW1ldGVyIHRvICdkb3VibGUnIiAidHJ1ZSIKK2NsYXNzIGEgeworICAgIHZvaWQgdGVzdCgpICB7fQorICAgIHZvaWQgdGVzdChpbnQgaSkgIHt9CisgICAgdm9pZCB0ZXN0KFN0cmluZyBzKSAge30KKyAgICB2b2lkIHRlc3QoT2JqZWN0IG8pICB7fQorICAgIHZvaWQgdGVzdChpbnQgaSxkb3VibGUgZCkgIHt9CisgICAgdm9pZCB0ZXN0KGRvdWJsZSBkLGludCBpKSAge30KKworICAgIHZvaWQgZigpIHsKKyAgICAgICAgdGVzdCg8Y2FyZXQ+MCwgMCk7CisgICAgfQorfQorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2Nhc3RNZXRob2RQYXJhbWV0ZXJzL2JlZm9yZTYuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY2FzdE1ldGhvZFBhcmFtZXRlcnMvYmVmb3JlNi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRlYmYwMmQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2Nhc3RNZXRob2RQYXJhbWV0ZXJzL2JlZm9yZTYuamF2YQpAQCAtMCwwICsxLDE0IEBACisvLyAiQ2FzdCAybmQgcGFyYW1ldGVyIHRvICdkb3VibGUnIiAidHJ1ZSIKK2NsYXNzIGEgeworICAgIHZvaWQgdGVzdCgpICB7fQorICAgIHZvaWQgdGVzdChpbnQgaSkgIHt9CisgICAgdm9pZCB0ZXN0KFN0cmluZyBzKSAge30KKyAgICB2b2lkIHRlc3QoT2JqZWN0IG8pICB7fQorICAgIHZvaWQgdGVzdChpbnQgaSxkb3VibGUgZCkgIHt9CisgICAgdm9pZCB0ZXN0KGRvdWJsZSBkLGludCBpKSAge30KKworICAgIHZvaWQgZigpIHsKKyAgICAgICAgdGVzdCg8Y2FyZXQ+MCwgMCk7CisgICAgfQorfQorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2Nhc3RNZXRob2RQYXJhbWV0ZXJzL2JlZm9yZTcuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY2FzdE1ldGhvZFBhcmFtZXRlcnMvYmVmb3JlNy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcyMjFjYWMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2Nhc3RNZXRob2RQYXJhbWV0ZXJzL2JlZm9yZTcuamF2YQpAQCAtMCwwICsxLDE0IEBACisvLyAiQ2FzdCBwYXJhbWV0ZXIgdG8gJ2EnIiAidHJ1ZSIKK2NsYXNzIGEgeworICAgIHZvaWQgdGVzdCgpICB7fQorICAgIHZvaWQgdGVzdChpbnQgaSkgIHt9CisgICAgdm9pZCB0ZXN0KFN0cmluZyBzKSAge30KKyAgICB2b2lkIHRlc3QoYSBvKSAge30KKyAgICB2b2lkIHRlc3QoaW50IGksZG91YmxlIGQpICB7fQorICAgIHZvaWQgdGVzdChkb3VibGUgZCxpbnQgaSkgIHt9CisKKyAgICB2b2lkIGYoUnVubmFibGUgcikgeworICAgICAgICB0ZXN0KDxjYXJldD5yKTsKKyAgICB9Cit9CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY2FzdE1ldGhvZFBhcmFtZXRlcnMvYmVmb3JlOC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jYXN0TWV0aG9kUGFyYW1ldGVycy9iZWZvcmU4LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDVjZjM2ZDUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2Nhc3RNZXRob2RQYXJhbWV0ZXJzL2JlZm9yZTguamF2YQpAQCAtMCwwICsxLDEwIEBACisvLyAiQ2FzdCAybmQgcGFyYW1ldGVyIHRvICdqYXZhLmxhbmcuVGhyb3dhYmxlJyIgInRydWUiCitjbGFzcyBhIHsKKyAgICB2b2lkIGYoVGhyb3dhYmxlIGEsIFRocm93YWJsZSBiKSB7fQorICAgIHZvaWQgZygpIHsKKyAgICAgICAgRXhjZXB0aW9uIGU9bnVsbDsKKyAgICAgICAgT2JqZWN0IG8gPSBudWxsOworICAgICAgICBmKDxjYXJldD5lLG8pOworICAgIH0KK30KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jYXN0TWV0aG9kUGFyYW1ldGVycy9iZWZvcmU5LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2Nhc3RNZXRob2RQYXJhbWV0ZXJzL2JlZm9yZTkuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNDEyYjNiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jYXN0TWV0aG9kUGFyYW1ldGVycy9iZWZvcmU5LmphdmEKQEAgLTAsMCArMSwxMCBAQAorLy8gIkNhc3QgMXN0IHBhcmFtZXRlciB0byAnamF2YS5sYW5nLlRocm93YWJsZSciICJmYWxzZSIKK2NsYXNzIGEgeworICAgIHZvaWQgZihUaHJvd2FibGUgYSwgVGhyb3dhYmxlIGIpIHt9CisgICAgdm9pZCBnKCkgeworICAgICAgICBFeGNlcHRpb24gZT1udWxsOworICAgICAgICBPYmplY3QgbyA9IG51bGw7CisgICAgICAgIGYoPGNhcmV0PmUsbyk7CisgICAgfQorfQorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NoYW5nZUV4dGVuZHNUb0ltcGxlbWVudHMvYWZ0ZXIxLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NoYW5nZUV4dGVuZHNUb0ltcGxlbWVudHMvYWZ0ZXIxLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTQyYmUxMgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY2hhbmdlRXh0ZW5kc1RvSW1wbGVtZW50cy9hZnRlcjEuamF2YQpAQCAtMCwwICsxLDggQEAKKy8vICJDaGFuZ2UgJ2V4dGVuZHMgUnVubmFibGUnIHRvICdpbXBsZW1lbnRzIFJ1bm5hYmxlJyIgInRydWUiCitpbXBvcnQgamF2YS5pby4qOworCitjbGFzcyBhIDxjYXJldD5pbXBsZW1lbnRzIFJ1bm5hYmxlIHsKKyBwdWJsaWMgdm9pZCBydW4oKSB7CisgfQorfQorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NoYW5nZUV4dGVuZHNUb0ltcGxlbWVudHMvYWZ0ZXIyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NoYW5nZUV4dGVuZHNUb0ltcGxlbWVudHMvYWZ0ZXIyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTgzYWZlOQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY2hhbmdlRXh0ZW5kc1RvSW1wbGVtZW50cy9hZnRlcjIuamF2YQpAQCAtMCwwICsxLDggQEAKKy8vICJDaGFuZ2UgJ2ltcGxlbWVudHMgT2JqZWN0JyB0byAnZXh0ZW5kcyBPYmplY3QnIiAidHJ1ZSIKK2ltcG9ydCBqYXZhLmlvLio7CisKK2NsYXNzIGEgZXh0ZW5kcyBPYmplY3QgPGNhcmV0PnsKKyBwdWJsaWMgdm9pZCBydW4oKSB7CisgfQorfQorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NoYW5nZUV4dGVuZHNUb0ltcGxlbWVudHMvYWZ0ZXIzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NoYW5nZUV4dGVuZHNUb0ltcGxlbWVudHMvYWZ0ZXIzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjM2MTBmZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY2hhbmdlRXh0ZW5kc1RvSW1wbGVtZW50cy9hZnRlcjMuamF2YQpAQCAtMCwwICsxLDggQEAKKy8vICJDaGFuZ2UgJ2ltcGxlbWVudHMgT2JqZWN0JyB0byAnZXh0ZW5kcyBPYmplY3QnIiAidHJ1ZSIKK2ltcG9ydCBqYXZhLmlvLio7CisKK2NsYXNzIGEgZXh0ZW5kcyBPYmplY3QgaW1wbGVtZW50cyBSdW5uYWJsZSw8Y2FyZXQ+IFNlcmlhbGl6YWJsZSB7CisgcHVibGljIHZvaWQgcnVuKCkgeworIH0KK30KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jaGFuZ2VFeHRlbmRzVG9JbXBsZW1lbnRzL2FmdGVyNC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jaGFuZ2VFeHRlbmRzVG9JbXBsZW1lbnRzL2FmdGVyNC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUwNzFhZmYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NoYW5nZUV4dGVuZHNUb0ltcGxlbWVudHMvYWZ0ZXI0LmphdmEKQEAgLTAsMCArMSw4IEBACisvLyAiQ2hhbmdlICdleHRlbmRzIFJ1bm5hYmxlJyB0byAnaW1wbGVtZW50cyBSdW5uYWJsZSciICJ0cnVlIgoraW1wb3J0IGphdmEuaW8uKjsKKworY2xhc3MgYSBleHRlbmRzIE9iamVjdDxjYXJldD4gaW1wbGVtZW50cyBTZXJpYWxpemFibGUsIFJ1bm5hYmxlIHsKKyBwdWJsaWMgdm9pZCBydW4oKSB7CisgfQorfQorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NoYW5nZUV4dGVuZHNUb0ltcGxlbWVudHMvYWZ0ZXI2LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NoYW5nZUV4dGVuZHNUb0ltcGxlbWVudHMvYWZ0ZXI2LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODM4NTBhZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY2hhbmdlRXh0ZW5kc1RvSW1wbGVtZW50cy9hZnRlcjYuamF2YQpAQCAtMCwwICsxLDcgQEAKKy8vICJDaGFuZ2UgJ2ltcGxlbWVudHMgYicgdG8gJ2V4dGVuZHMgYiciICJ0cnVlIgoraW1wb3J0IGphdmEuaW8uKjsKKworY2xhc3MgYSBleHRlbmRzIGI8U3RyaW5nPiA8Y2FyZXQ+eworfQorCitjbGFzcyBiPFQ+IHt9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NoYW5nZUV4dGVuZHNUb0ltcGxlbWVudHMvYWZ0ZXI3LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NoYW5nZUV4dGVuZHNUb0ltcGxlbWVudHMvYWZ0ZXI3LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODJjMjg0MAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY2hhbmdlRXh0ZW5kc1RvSW1wbGVtZW50cy9hZnRlcjcuamF2YQpAQCAtMCwwICsxLDkgQEAKKy8vICJDaGFuZ2UgJ2ltcGxlbWVudHMgYicgdG8gJ2V4dGVuZHMgYiciICJ0cnVlIgorY2xhc3MgYSBleHRlbmRzIGI8Qy5EPiB7Cit9CisKK2NsYXNzIGI8VD4ge30KKworY2xhc3MgQyB7CisgIHN0YXRpYyBjbGFzcyBEIHt9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NoYW5nZUV4dGVuZHNUb0ltcGxlbWVudHMvYWZ0ZXJJbnRlcmZhY2UxLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NoYW5nZUV4dGVuZHNUb0ltcGxlbWVudHMvYWZ0ZXJJbnRlcmZhY2UxLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODYxYTg1YQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY2hhbmdlRXh0ZW5kc1RvSW1wbGVtZW50cy9hZnRlckludGVyZmFjZTEuamF2YQpAQCAtMCwwICsxLDQgQEAKKy8vICJDaGFuZ2UgJ2ltcGxlbWVudHMgUnVubmFibGUnIHRvICdleHRlbmRzIFJ1bm5hYmxlJyIgInRydWUiCitpbnRlcmZhY2UgYSBleHRlbmRzIFJ1bm5hYmxlIHsKK30KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jaGFuZ2VFeHRlbmRzVG9JbXBsZW1lbnRzL2JlZm9yZTEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY2hhbmdlRXh0ZW5kc1RvSW1wbGVtZW50cy9iZWZvcmUxLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2Y4ZjJmYgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY2hhbmdlRXh0ZW5kc1RvSW1wbGVtZW50cy9iZWZvcmUxLmphdmEKQEAgLTAsMCArMSw4IEBACisvLyAiQ2hhbmdlICdleHRlbmRzIFJ1bm5hYmxlJyB0byAnaW1wbGVtZW50cyBSdW5uYWJsZSciICJ0cnVlIgoraW1wb3J0IGphdmEuaW8uKjsKKworY2xhc3MgYSBleHRlbmRzIDxjYXJldD5SdW5uYWJsZSB7CisgcHVibGljIHZvaWQgcnVuKCkgeworIH0KK30KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jaGFuZ2VFeHRlbmRzVG9JbXBsZW1lbnRzL2JlZm9yZTIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY2hhbmdlRXh0ZW5kc1RvSW1wbGVtZW50cy9iZWZvcmUyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWZhYWMyMgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY2hhbmdlRXh0ZW5kc1RvSW1wbGVtZW50cy9iZWZvcmUyLmphdmEKQEAgLTAsMCArMSw4IEBACisvLyAiQ2hhbmdlICdpbXBsZW1lbnRzIE9iamVjdCcgdG8gJ2V4dGVuZHMgT2JqZWN0JyIgInRydWUiCitpbXBvcnQgamF2YS5pby4qOworCitjbGFzcyBhIGltcGxlbWVudHMgPGNhcmV0Pk9iamVjdCB7CisgcHVibGljIHZvaWQgcnVuKCkgeworIH0KK30KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jaGFuZ2VFeHRlbmRzVG9JbXBsZW1lbnRzL2JlZm9yZTMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY2hhbmdlRXh0ZW5kc1RvSW1wbGVtZW50cy9iZWZvcmUzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTA5MGUyOAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY2hhbmdlRXh0ZW5kc1RvSW1wbGVtZW50cy9iZWZvcmUzLmphdmEKQEAgLTAsMCArMSw4IEBACisvLyAiQ2hhbmdlICdpbXBsZW1lbnRzIE9iamVjdCcgdG8gJ2V4dGVuZHMgT2JqZWN0JyIgInRydWUiCitpbXBvcnQgamF2YS5pby4qOworCitjbGFzcyBhIGltcGxlbWVudHMgUnVubmFibGUsPGNhcmV0Pk9iamVjdCxTZXJpYWxpemFibGUgeworIHB1YmxpYyB2b2lkIHJ1bigpIHsKKyB9Cit9CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY2hhbmdlRXh0ZW5kc1RvSW1wbGVtZW50cy9iZWZvcmU0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NoYW5nZUV4dGVuZHNUb0ltcGxlbWVudHMvYmVmb3JlNC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU5ODZlYTIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NoYW5nZUV4dGVuZHNUb0ltcGxlbWVudHMvYmVmb3JlNC5qYXZhCkBAIC0wLDAgKzEsOCBAQAorLy8gIkNoYW5nZSAnZXh0ZW5kcyBSdW5uYWJsZScgdG8gJ2ltcGxlbWVudHMgUnVubmFibGUnIiAidHJ1ZSIKK2ltcG9ydCBqYXZhLmlvLio7CisKK2NsYXNzIGEgZXh0ZW5kcyBPYmplY3QsPGNhcmV0PlJ1bm5hYmxlIGltcGxlbWVudHMgU2VyaWFsaXphYmxlIHsKKyBwdWJsaWMgdm9pZCBydW4oKSB7CisgfQorfQorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NoYW5nZUV4dGVuZHNUb0ltcGxlbWVudHMvYmVmb3JlNS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jaGFuZ2VFeHRlbmRzVG9JbXBsZW1lbnRzL2JlZm9yZTUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZmQ0MDU3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jaGFuZ2VFeHRlbmRzVG9JbXBsZW1lbnRzL2JlZm9yZTUuamF2YQpAQCAtMCwwICsxLDkgQEAKKy8vICJDaGFuZ2UgJ2ltcGxlbWVudHMgT2JqZWN0JyB0byAnZXh0ZW5kcyBPYmplY3QnIiAiZmFsc2UiCitpbXBvcnQgamF2YS5pby4qOworCitjbGFzcyBhIGV4dGVuZHMgYiBpbXBsZW1lbnRzIFJ1bm5hYmxlLDxjYXJldD5PYmplY3QsU2VyaWFsaXphYmxlIHsKKyBwdWJsaWMgdm9pZCBydW4oKSB7CisgfQorfQorCitjbGFzcyBiIHt9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NoYW5nZUV4dGVuZHNUb0ltcGxlbWVudHMvYmVmb3JlNi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jaGFuZ2VFeHRlbmRzVG9JbXBsZW1lbnRzL2JlZm9yZTYuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNGNhNGQyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jaGFuZ2VFeHRlbmRzVG9JbXBsZW1lbnRzL2JlZm9yZTYuamF2YQpAQCAtMCwwICsxLDcgQEAKKy8vICJDaGFuZ2UgJ2ltcGxlbWVudHMgYicgdG8gJ2V4dGVuZHMgYiciICJ0cnVlIgoraW1wb3J0IGphdmEuaW8uKjsKKworY2xhc3MgYSBpbXBsZW1lbnRzIDxjYXJldD5iPFN0cmluZz4geworfQorCitjbGFzcyBiPFQ+IHt9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NoYW5nZUV4dGVuZHNUb0ltcGxlbWVudHMvYmVmb3JlNy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jaGFuZ2VFeHRlbmRzVG9JbXBsZW1lbnRzL2JlZm9yZTcuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43YzdhNzVmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jaGFuZ2VFeHRlbmRzVG9JbXBsZW1lbnRzL2JlZm9yZTcuamF2YQpAQCAtMCwwICsxLDkgQEAKKy8vICJDaGFuZ2UgJ2ltcGxlbWVudHMgYicgdG8gJ2V4dGVuZHMgYiciICJ0cnVlIgorY2xhc3MgYSBpbXBsZW1lbnRzIDxjYXJldD5iPEMuRD4geworfQorCitjbGFzcyBiPFQ+IHt9CisKK2NsYXNzIEMgeworICBzdGF0aWMgY2xhc3MgRCB7fQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jaGFuZ2VFeHRlbmRzVG9JbXBsZW1lbnRzL2JlZm9yZUludGVyZmFjZTEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY2hhbmdlRXh0ZW5kc1RvSW1wbGVtZW50cy9iZWZvcmVJbnRlcmZhY2UxLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWJmYWY0OAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY2hhbmdlRXh0ZW5kc1RvSW1wbGVtZW50cy9iZWZvcmVJbnRlcmZhY2UxLmphdmEKQEAgLTAsMCArMSw0IEBACisvLyAiQ2hhbmdlICdpbXBsZW1lbnRzIFJ1bm5hYmxlJyB0byAnZXh0ZW5kcyBSdW5uYWJsZSciICJ0cnVlIgoraW50ZXJmYWNlIGEgaW1wbGVtZW50cyA8Y2FyZXQ+UnVubmFibGUgeworfQorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NoYW5nZU1ldGhvZFNpZ25hdHVyZUZyb21Vc2FnZS9hZnRlcjEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY2hhbmdlTWV0aG9kU2lnbmF0dXJlRnJvbVVzYWdlL2FmdGVyMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjczNjBlMDAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NoYW5nZU1ldGhvZFNpZ25hdHVyZUZyb21Vc2FnZS9hZnRlcjEuamF2YQpAQCAtMCwwICsxLDcgQEAKKy8vICJSZW1vdmUgMXN0IHBhcmFtZXRlciBmcm9tIG1ldGhvZCAnZiciICJ0cnVlIgorY2xhc3MgQSB7CisgICAgdm9pZCBmKCkge30KKyAgICBwdWJsaWMgdm9pZCBmb28oKSB7CisgICAgICAgIDxjYXJldD5mKCk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY2hhbmdlTWV0aG9kU2lnbmF0dXJlRnJvbVVzYWdlL2FmdGVyMTAuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY2hhbmdlTWV0aG9kU2lnbmF0dXJlRnJvbVVzYWdlL2FmdGVyMTAuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMDhiZTI5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jaGFuZ2VNZXRob2RTaWduYXR1cmVGcm9tVXNhZ2UvYWZ0ZXIxMC5qYXZhCkBAIC0wLDAgKzEsMTUgQEAKKy8vICJBZGQgJ1N0cmluZycgYXMgMm5kIHBhcmFtZXRlciB0byBtZXRob2QgJ3NldCciICJ0cnVlIgoraW1wb3J0IGphdmEudXRpbC5MaXN0OworCitwdWJsaWMgY2xhc3MgWDxUPiB7CisgICAgcHJpdmF0ZSBMaXN0PFQ+IG15TGlzdDsKKworICAgIHB1YmxpYyB2b2lkIHNldChMaXN0PFQ+IGxpc3QsIFN0cmluZyBhYWEpIHsKKyAgICAgICAgbXlMaXN0ID0gbGlzdDsKKyAgICB9CisKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgYWEoKSB7CisgICAgICAgIFg8SW50ZWdlcj4geCA9IG5ldyBYPEludGVnZXI+KCk7CisgICAgICAgIHguc2V0PGNhcmV0PihudWxsLCAiYWFhIik7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY2hhbmdlTWV0aG9kU2lnbmF0dXJlRnJvbVVzYWdlL2FmdGVyMi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jaGFuZ2VNZXRob2RTaWduYXR1cmVGcm9tVXNhZ2UvYWZ0ZXIyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODFmNTllOQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY2hhbmdlTWV0aG9kU2lnbmF0dXJlRnJvbVVzYWdlL2FmdGVyMi5qYXZhCkBAIC0wLDAgKzEsNyBAQAorLy8gIjxodG1sPiBDaGFuZ2Ugc2lnbmF0dXJlIG9mIGYoPHM+aW50PC9zPiwgPHM+U3RyaW5nPC9zPik8L2h0bWw+IiAidHJ1ZSIKK2NsYXNzIEEgeworICAgIHZvaWQgZigpIHt9CisgICAgcHVibGljIHZvaWQgZm9vKCkgeworICAgICAgICA8Y2FyZXQ+ZigpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NoYW5nZU1ldGhvZFNpZ25hdHVyZUZyb21Vc2FnZS9hZnRlcjMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY2hhbmdlTWV0aG9kU2lnbmF0dXJlRnJvbVVzYWdlL2FmdGVyMy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJkNDJlNDYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NoYW5nZU1ldGhvZFNpZ25hdHVyZUZyb21Vc2FnZS9hZnRlcjMuamF2YQpAQCAtMCwwICsxLDcgQEAKKy8vICJBZGQgJ2NoYXInIGFzIDJuZCBwYXJhbWV0ZXIgdG8gbWV0aG9kICdmJyIgInRydWUiCitjbGFzcyBBIHsKKyAgICB2b2lkIGYoaW50IGksIGNoYXIgYywgU3RyaW5nIHMpIHt9CisgICAgcHVibGljIHZvaWQgZm9vKCkgeworICAgICAgICA8Y2FyZXQ+ZigxLCcyJywiIik7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY2hhbmdlTWV0aG9kU2lnbmF0dXJlRnJvbVVzYWdlL2FmdGVyNC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jaGFuZ2VNZXRob2RTaWduYXR1cmVGcm9tVXNhZ2UvYWZ0ZXI0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzM1MmVkMQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY2hhbmdlTWV0aG9kU2lnbmF0dXJlRnJvbVVzYWdlL2FmdGVyNC5qYXZhCkBAIC0wLDAgKzEsNyBAQAorLy8gIjxodG1sPiBDaGFuZ2Ugc2lnbmF0dXJlIG9mIGYoaW50LCA8Yj5jaGFyPC9iPiwgPGI+aW50PC9iPiwgU3RyaW5nLCA8Yj5pbnQ8L2I+LCA8Yj5PYmplY3Q8L2I+KTwvaHRtbD4iICJ0cnVlIgorY2xhc3MgQSB7CisgICAgdm9pZCBmKGludCBpLCBjaGFyIGMsIGludCBpMSwgU3RyaW5nIHMsIGludCBpMiwgT2JqZWN0IG8pIHt9CisgICAgcHVibGljIHZvaWQgZm9vKCkgeworICAgICAgICA8Y2FyZXQ+ZigxLCcyJyw0LCIiLDEsbnVsbCk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY2hhbmdlTWV0aG9kU2lnbmF0dXJlRnJvbVVzYWdlL2FmdGVyNS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jaGFuZ2VNZXRob2RTaWduYXR1cmVGcm9tVXNhZ2UvYWZ0ZXI1LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWFjZmFiNQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY2hhbmdlTWV0aG9kU2lnbmF0dXJlRnJvbVVzYWdlL2FmdGVyNS5qYXZhCkBAIC0wLDAgKzEsNyBAQAorLy8gIlJlbW92ZSAybmQgcGFyYW1ldGVyIGZyb20gbWV0aG9kICdmJyIgInRydWUiCitjbGFzcyBBIHsKKyAgICB2b2lkIGYoaW50IGksIGludCBpMikge30KKyAgICBwdWJsaWMgdm9pZCBmb28oKSB7CisgICAgICAgIDxjYXJldD5mKDEsMSk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY2hhbmdlTWV0aG9kU2lnbmF0dXJlRnJvbVVzYWdlL2FmdGVyNi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jaGFuZ2VNZXRob2RTaWduYXR1cmVGcm9tVXNhZ2UvYWZ0ZXI2LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmZiM2U4MQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY2hhbmdlTWV0aG9kU2lnbmF0dXJlRnJvbVVzYWdlL2FmdGVyNi5qYXZhCkBAIC0wLDAgKzEsNyBAQAorLy8gIkNoYW5nZSAybmQgcGFyYW1ldGVyIG9mIG1ldGhvZCAnZicgZnJvbSAnU3RyaW5nJyB0byAnaW50JyIgInRydWUiCitjbGFzcyBBIHsKKyAgICB2b2lkIGYoaW50IGksIGludCBzLCBpbnQgaTIpIHt9CisgICAgcHVibGljIHZvaWQgZm9vKCkgeworICAgICAgICA8Y2FyZXQ+ZigxLDEsJzQnKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jaGFuZ2VNZXRob2RTaWduYXR1cmVGcm9tVXNhZ2UvYWZ0ZXI3LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NoYW5nZU1ldGhvZFNpZ25hdHVyZUZyb21Vc2FnZS9hZnRlcjcuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNjk4NzU3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jaGFuZ2VNZXRob2RTaWduYXR1cmVGcm9tVXNhZ2UvYWZ0ZXI3LmphdmEKQEAgLTAsMCArMSw3IEBACisvLyAiPGh0bWw+IENoYW5nZSBzaWduYXR1cmUgb2YgZihpbnQsIDxzPlN0cmluZzwvcz4sIGludCwgPHM+aW50PC9zPiwgPHM+Y2hhcjwvcz4sIFN0cmluZyk8L2h0bWw+IiAidHJ1ZSIKK2NsYXNzIEEgeworICAgIHZvaWQgZihpbnQgaSwgaW50IGkyLCBTdHJpbmcgcykge30KKyAgICBwdWJsaWMgdm9pZCBmb28oKSB7CisgICAgICAgIDxjYXJldD5mKDEsMSwiNCIpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NoYW5nZU1ldGhvZFNpZ25hdHVyZUZyb21Vc2FnZS9hZnRlcjguamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY2hhbmdlTWV0aG9kU2lnbmF0dXJlRnJvbVVzYWdlL2FmdGVyOC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVjM2ZmZmYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NoYW5nZU1ldGhvZFNpZ25hdHVyZUZyb21Vc2FnZS9hZnRlcjguamF2YQpAQCAtMCwwICsxLDYgQEAKKy8vICI8aHRtbD4gQ2hhbmdlIHNpZ25hdHVyZSBvZiBBKDxiPmludDwvYj4sIDxiPmludDwvYj4sIDxiPlN0cmluZzwvYj4pPC9odG1sPiIgInRydWUiCitjbGFzcyBBIHsKKyAgICBBKGludCBpLCBpbnQgaTEsIFN0cmluZyBzKSB7CisgICAgICAgIG5ldyBBPGNhcmV0PigxLDEsIjQiKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jaGFuZ2VNZXRob2RTaWduYXR1cmVGcm9tVXNhZ2UvYWZ0ZXI5LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NoYW5nZU1ldGhvZFNpZ25hdHVyZUZyb21Vc2FnZS9hZnRlcjkuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42N2IwYzQ0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jaGFuZ2VNZXRob2RTaWduYXR1cmVGcm9tVXNhZ2UvYWZ0ZXI5LmphdmEKQEAgLTAsMCArMSw2IEBACisvLyAiQWRkICdpbnQnIGFzIDJuZCBwYXJhbWV0ZXIgdG8gbWV0aG9kICdmJyIgInRydWUiCisgcHVibGljIGNsYXNzIFMgeworICAgICB2b2lkIGYoaW50IGssIGludCBpLCBpbnQuLi4gYXJncykgeworICAgICBmKDEsMSxudWxsKTxjYXJldD47Ly8gLT4gZigxLDEsbnVsbCkKKyAgICAgfQorIH0KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY2hhbmdlTWV0aG9kU2lnbmF0dXJlRnJvbVVzYWdlL2FmdGVyQXNzaWduYWJsZVBhcmFtVHlwZXMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY2hhbmdlTWV0aG9kU2lnbmF0dXJlRnJvbVVzYWdlL2FmdGVyQXNzaWduYWJsZVBhcmFtVHlwZXMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNTIxZGUzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jaGFuZ2VNZXRob2RTaWduYXR1cmVGcm9tVXNhZ2UvYWZ0ZXJBc3NpZ25hYmxlUGFyYW1UeXBlcy5qYXZhCkBAIC0wLDAgKzEsMjIgQEAKKy8vICJBZGQgJ0InIGFzIDJuZCBwYXJhbWV0ZXIgdG8gbWV0aG9kICdmb28nIiAidHJ1ZSIKK3B1YmxpYyBjbGFzcyBTIHsKKworICB2b2lkIGZvbyhBIGEsIEIgYikgeworICB9CisKKyAgdm9pZCBiYXIoQiBiKSB7CisgICAgQSBhID0gZ2V0QSgpOworICAgIGZvbyhhLCBiKTsKKyAgfQorCisgIEEgZ2V0QSgpIHsKKyAgICByZXR1cm4gbmV3IEEoKTsKKyAgfQorfQorCitjbGFzcyBBIHsKK30KKworY2xhc3MgQiBleHRlbmRzIEEgeworfQorICAKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NoYW5nZU1ldGhvZFNpZ25hdHVyZUZyb21Vc2FnZS9hZnRlckFzc2lnbmFibGVQYXJhbVR5cGVzRmlyc3ROZXcuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY2hhbmdlTWV0aG9kU2lnbmF0dXJlRnJvbVVzYWdlL2FmdGVyQXNzaWduYWJsZVBhcmFtVHlwZXNGaXJzdE5ldy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQwYzAyMzMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NoYW5nZU1ldGhvZFNpZ25hdHVyZUZyb21Vc2FnZS9hZnRlckFzc2lnbmFibGVQYXJhbVR5cGVzRmlyc3ROZXcuamF2YQpAQCAtMCwwICsxLDIyIEBACisvLyAiQWRkICdCJyBhcyAxc3QgcGFyYW1ldGVyIHRvIG1ldGhvZCAnZm9vJyIgInRydWUiCitwdWJsaWMgY2xhc3MgUyB7CisKKyAgdm9pZCBmb28oQiBiLCBBIGEpIHsKKyAgfQorCisgIHZvaWQgYmFyKEIgYikgeworICAgIEEgYSA9IGdldEEoKTsKKyAgICBmb28oPGNhcmV0PmIsIGEpOworICB9CisKKyAgQSBnZXRBKCkgeworICAgIHJldHVybiBuZXcgQSgpOworICB9Cit9CisKK2NsYXNzIEEgeworfQorCitjbGFzcyBCIGV4dGVuZHMgQSB7Cit9CisgIApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY2hhbmdlTWV0aG9kU2lnbmF0dXJlRnJvbVVzYWdlL2FmdGVyQXNzaWduYWJsZVBhcmFtVHlwZXNGaXJzdE5ld1JldmVyc2UuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY2hhbmdlTWV0aG9kU2lnbmF0dXJlRnJvbVVzYWdlL2FmdGVyQXNzaWduYWJsZVBhcmFtVHlwZXNGaXJzdE5ld1JldmVyc2UuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMDA0YWEyYQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY2hhbmdlTWV0aG9kU2lnbmF0dXJlRnJvbVVzYWdlL2FmdGVyQXNzaWduYWJsZVBhcmFtVHlwZXNGaXJzdE5ld1JldmVyc2UuamF2YQpAQCAtMCwwICsxLDIyIEBACisvLyAiQWRkICdBJyBhcyAybmQgcGFyYW1ldGVyIHRvIG1ldGhvZCAnZm9vJyIgInRydWUiCitwdWJsaWMgY2xhc3MgUyB7CisKKyAgdm9pZCBmb28oQSBhLCBBIGExKSB7CisgIH0KKworICB2b2lkIGJhcihCIGIpIHsKKyAgICBBIGEgPSBnZXRBKCk7CisgICAgZm9vKGIsIGEpOworICB9CisKKyAgQSBnZXRBKCkgeworICAgIHJldHVybiBuZXcgQSgpOworICB9Cit9CisKK2NsYXNzIEEgeworfQorCitjbGFzcyBCIGV4dGVuZHMgQSB7Cit9CisgIApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY2hhbmdlTWV0aG9kU2lnbmF0dXJlRnJvbVVzYWdlL2FmdGVyQXNzaWduYWJsZVBhcmFtVHlwZXNSZXZlcnNlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NoYW5nZU1ldGhvZFNpZ25hdHVyZUZyb21Vc2FnZS9hZnRlckFzc2lnbmFibGVQYXJhbVR5cGVzUmV2ZXJzZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhmOWVmYmMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NoYW5nZU1ldGhvZFNpZ25hdHVyZUZyb21Vc2FnZS9hZnRlckFzc2lnbmFibGVQYXJhbVR5cGVzUmV2ZXJzZS5qYXZhCkBAIC0wLDAgKzEsMjIgQEAKKy8vICJBZGQgJ0EnIGFzIDFzdCBwYXJhbWV0ZXIgdG8gbWV0aG9kICdmb28nIiAidHJ1ZSIKK3B1YmxpYyBjbGFzcyBTIHsKKworICB2b2lkIGZvbyhBIGExLCBBIGEpIHsKKyAgfQorCisgIHZvaWQgYmFyKEIgYikgeworICAgIEEgYSA9IGdldEEoKTsKKyAgICBmb28oYSwgYik7CisgIH0KKworICBBIGdldEEoKSB7CisgICAgcmV0dXJuIG5ldyBBKCk7CisgIH0KK30KKworY2xhc3MgQSB7Cit9CisKK2NsYXNzIEIgZXh0ZW5kcyBBIHsKK30KKyAgClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jaGFuZ2VNZXRob2RTaWduYXR1cmVGcm9tVXNhZ2UvYWZ0ZXJDb21tb25DaGFuZ2VSZXZlcnNlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NoYW5nZU1ldGhvZFNpZ25hdHVyZUZyb21Vc2FnZS9hZnRlckNvbW1vbkNoYW5nZVJldmVyc2UuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xOWEwZmEyYgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY2hhbmdlTWV0aG9kU2lnbmF0dXJlRnJvbVVzYWdlL2FmdGVyQ29tbW9uQ2hhbmdlUmV2ZXJzZS5qYXZhCkBAIC0wLDAgKzEsMTEgQEAKKy8vICI8aHRtbD4gQ2hhbmdlIHNpZ25hdHVyZSBvZiBmb28oPGI+QXJyYXlMaXN0Jmx0O0ludGVnZXImZ3Q7PC9iPiwgPGI+QXJyYXlMaXN0Jmx0O0ludGVnZXImZ3Q7PC9iPiwgQXJyYXlMaXN0Jmx0O0ludGVnZXImZ3Q7LCBBcnJheUxpc3QmbHQ7SW50ZWdlciZndDspPC9odG1sPiIgInRydWUiCitpbXBvcnQgamF2YS51dGlsLio7CisKK2NsYXNzIFRlc3QgeworCisgICAgcHVibGljIHZvaWQgZm9vKEFycmF5TGlzdDxJbnRlZ2VyPiBpbnRlZ2VyQXJyYXlMaXN0LCBBcnJheUxpc3Q8SW50ZWdlcj4gaW50ZWdlcnMsIEFycmF5TGlzdDxJbnRlZ2VyPiBsLCBBcnJheUxpc3Q8SW50ZWdlcj4gbDEpIHt9CisKKyAgICB7CisgICAgICBmb28obmV3IEFycmF5TGlzdDxJbnRlZ2VyPigpLCBuZXcgQXJyYXlMaXN0PEludGVnZXI+KCksIG5ldyBBcnJheUxpc3Q8SW50ZWdlcj4oKSwgbmV3IEFycmF5TGlzdDxJbnRlZ2VyPigpKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jaGFuZ2VNZXRob2RTaWduYXR1cmVGcm9tVXNhZ2UvYWZ0ZXJFcmFzZVR5cGVJZlN1YnN0aXR1dGlvbk5vdEZvdW5kLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NoYW5nZU1ldGhvZFNpZ25hdHVyZUZyb21Vc2FnZS9hZnRlckVyYXNlVHlwZUlmU3Vic3RpdHV0aW9uTm90Rm91bmQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMGYwMmQxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jaGFuZ2VNZXRob2RTaWduYXR1cmVGcm9tVXNhZ2UvYWZ0ZXJFcmFzZVR5cGVJZlN1YnN0aXR1dGlvbk5vdEZvdW5kLmphdmEKQEAgLTAsMCArMSwxMiBAQAorLy8gIkFkZCAnRm9vPFR5cGVQYXJhbU5hbWU+JyBhcyAxc3QgcGFyYW1ldGVyIHRvIG1ldGhvZCAnQmFyJyIgInRydWUiCisgcHVibGljIGNsYXNzIEJhciB7CisgICAgIEJhcihGb288VHlwZVBhcmFtTmFtZT4gdHlwZVBhcmFtTmFtZUZvbywgU3RyaW5nIGFyZ3MpIHsKKworICAgICB9CisgfQorCitjbGFzcyBGb288VHlwZVBhcmFtTmFtZT4geworICAgIHZvaWQgYmFyKCkgeworICAgICAgQmFyIGJhciA9IG5ldyBCYXIodGhpcywgIiIpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NoYW5nZU1ldGhvZFNpZ25hdHVyZUZyb21Vc2FnZS9hZnRlckVyYXNlVHlwZUlmU3Vic3RpdHV0aW9uTm90Rm91bmROb3RBQ29uc3RydWN0b3IuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY2hhbmdlTWV0aG9kU2lnbmF0dXJlRnJvbVVzYWdlL2FmdGVyRXJhc2VUeXBlSWZTdWJzdGl0dXRpb25Ob3RGb3VuZE5vdEFDb25zdHJ1Y3Rvci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk4ZmQ3NWYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NoYW5nZU1ldGhvZFNpZ25hdHVyZUZyb21Vc2FnZS9hZnRlckVyYXNlVHlwZUlmU3Vic3RpdHV0aW9uTm90Rm91bmROb3RBQ29uc3RydWN0b3IuamF2YQpAQCAtMCwwICsxLDEyIEBACisvLyAiQWRkICdGb288VHlwZVBhcmFtTmFtZT4nIGFzIDFzdCBwYXJhbWV0ZXIgdG8gbWV0aG9kICdiYXInIiAidHJ1ZSIKKyBwdWJsaWMgY2xhc3MgQmFyIHsKKyAgICAgc3RhdGljIHZvaWQgYmFyKEZvbzxUeXBlUGFyYW1OYW1lPiB0eXBlUGFyYW1OYW1lRm9vLCBTdHJpbmcgYXJncykgeworCisgICAgIH0KKyB9CisKK2NsYXNzIEZvbzxUeXBlUGFyYW1OYW1lPiB7CisgICAgdm9pZCBiYXIoKSB7CisgICAgICBCYXIuYmFyKHRoaXMsICIiKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jaGFuZ2VNZXRob2RTaWduYXR1cmVGcm9tVXNhZ2UvYWZ0ZXJOZXdQYXJhbU5hbWUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY2hhbmdlTWV0aG9kU2lnbmF0dXJlRnJvbVVzYWdlL2FmdGVyTmV3UGFyYW1OYW1lLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzMzOTc0MQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY2hhbmdlTWV0aG9kU2lnbmF0dXJlRnJvbVVzYWdlL2FmdGVyTmV3UGFyYW1OYW1lLmphdmEKQEAgLTAsMCArMSwxMCBAQAorLy8gIkFkZCAnaW50JyBhcyAxc3QgcGFyYW1ldGVyIHRvIG1ldGhvZCAnZiciICJ0cnVlIgorIHB1YmxpYyBjbGFzcyBTIHsKKyAgICAgdm9pZCBmKGludCBpLCBTdHJpbmcgYXJncykgeworCisgICAgIH0KKworICAgICB2b2lkIGJhcigpIHsKKyAgICAgICBmKDExLCAiIik7CisgICAgIH0KKyB9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NoYW5nZU1ldGhvZFNpZ25hdHVyZUZyb21Vc2FnZS9hZnRlck5vbkFzc2lnbmFibGVQYXJhbVR5cGVzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NoYW5nZU1ldGhvZFNpZ25hdHVyZUZyb21Vc2FnZS9hZnRlck5vbkFzc2lnbmFibGVQYXJhbVR5cGVzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzc3NTM0YgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY2hhbmdlTWV0aG9kU2lnbmF0dXJlRnJvbVVzYWdlL2FmdGVyTm9uQXNzaWduYWJsZVBhcmFtVHlwZXMuamF2YQpAQCAtMCwwICsxLDIyIEBACisvLyAiQWRkICdTdHJpbmcnIGFzIDJuZCBwYXJhbWV0ZXIgdG8gbWV0aG9kICdmb28nIiAidHJ1ZSIKK3B1YmxpYyBjbGFzcyBTIHsKKworICB2b2lkIGZvbyhBIGEsIFN0cmluZyBzKSB7CisgIH0KKworICB2b2lkIGJhcihCIGIpIHsKKyAgICBBIGEgPSBnZXRBKCk7CisgICAgZm9vKGEsIDxjYXJldD4iIik7CisgIH0KKworICBBIGdldEEoKSB7CisgICAgcmV0dXJuIG5ldyBBKCk7CisgIH0KK30KKworY2xhc3MgQSB7Cit9CisKK2NsYXNzIEIgZXh0ZW5kcyBBIHsKK30KKyAgClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jaGFuZ2VNZXRob2RTaWduYXR1cmVGcm9tVXNhZ2UvYWZ0ZXJRdWFsaWZpZWRUeXBlcy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jaGFuZ2VNZXRob2RTaWduYXR1cmVGcm9tVXNhZ2UvYWZ0ZXJRdWFsaWZpZWRUeXBlcy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgwYTU0NDAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NoYW5nZU1ldGhvZFNpZ25hdHVyZUZyb21Vc2FnZS9hZnRlclF1YWxpZmllZFR5cGVzLmphdmEKQEAgLTAsMCArMSwxMiBAQAorLy8gIkFkZCAnSW5uZXIxJyBhcyAxc3QgcGFyYW1ldGVyIHRvIG1ldGhvZCAnSW5uZXIyJyIgInRydWUiCitjbGFzcyBDb29sVGVzdCB7CitjbGFzcyBJbm5lcjEge30KKwordm9pZCBtZXRob2QoKSB7CituZXcgSW5uZXIyKG5ldyBJbm5lcjEoKSk7Cit9CisKK2NsYXNzIElubmVyMiB7CitJbm5lcjIoSW5uZXIxIGlubmVyMSkgeyB9Cit9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jaGFuZ2VNZXRob2RTaWduYXR1cmVGcm9tVXNhZ2UvYWZ0ZXJWYXJhcmdzMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jaGFuZ2VNZXRob2RTaWduYXR1cmVGcm9tVXNhZ2UvYWZ0ZXJWYXJhcmdzMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRjZDNjZTYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NoYW5nZU1ldGhvZFNpZ25hdHVyZUZyb21Vc2FnZS9hZnRlclZhcmFyZ3MxLmphdmEKQEAgLTAsMCArMSw2IEBACisvLyAiQWRkICdTdHJpbmcnIGFzIDFzdCBwYXJhbWV0ZXIgdG8gbWV0aG9kICdmJyIgInRydWUiCisgcHVibGljIGNsYXNzIFMgeworICAgICB2b2lkIGYoU3RyaW5nIHMsIGludC4uLiBhcmdzKSB7CisgICAgIGYoIiIsMSwxKTsKKyAgICAgfQorIH0KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY2hhbmdlTWV0aG9kU2lnbmF0dXJlRnJvbVVzYWdlL2FmdGVyVmFyYXJnczIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY2hhbmdlTWV0aG9kU2lnbmF0dXJlRnJvbVVzYWdlL2FmdGVyVmFyYXJnczIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NWFiMDdlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jaGFuZ2VNZXRob2RTaWduYXR1cmVGcm9tVXNhZ2UvYWZ0ZXJWYXJhcmdzMi5qYXZhCkBAIC0wLDAgKzEsNiBAQAorLy8gIkFkZCAnU3RyaW5nJyBhcyAxc3QgcGFyYW1ldGVyIHRvIG1ldGhvZCAnZiciICJ0cnVlIgorIHB1YmxpYyBjbGFzcyBTIHsKKyAgICAgdm9pZCBmKFN0cmluZyBzLCBpbnQuLi4gYXJncykgeworICAgICBmKCIiLG51bGwpOworICAgICB9CisgfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jaGFuZ2VNZXRob2RTaWduYXR1cmVGcm9tVXNhZ2UvYmVmb3JlMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jaGFuZ2VNZXRob2RTaWduYXR1cmVGcm9tVXNhZ2UvYmVmb3JlMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNkZjJmNzYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NoYW5nZU1ldGhvZFNpZ25hdHVyZUZyb21Vc2FnZS9iZWZvcmUxLmphdmEKQEAgLTAsMCArMSw3IEBACisvLyAiUmVtb3ZlIDFzdCBwYXJhbWV0ZXIgZnJvbSBtZXRob2QgJ2YnIiAidHJ1ZSIKK2NsYXNzIEEgeworICAgIHZvaWQgZihpbnQgaSkge30KKyAgICBwdWJsaWMgdm9pZCBmb28oKSB7CisgICAgICAgIDxjYXJldD5mKCk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY2hhbmdlTWV0aG9kU2lnbmF0dXJlRnJvbVVzYWdlL2JlZm9yZTEwLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NoYW5nZU1ldGhvZFNpZ25hdHVyZUZyb21Vc2FnZS9iZWZvcmUxMC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVkOTY2ZDgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NoYW5nZU1ldGhvZFNpZ25hdHVyZUZyb21Vc2FnZS9iZWZvcmUxMC5qYXZhCkBAIC0wLDAgKzEsMTUgQEAKKy8vICJBZGQgJ1N0cmluZycgYXMgMm5kIHBhcmFtZXRlciB0byBtZXRob2QgJ3NldCciICJ0cnVlIgoraW1wb3J0IGphdmEudXRpbC5MaXN0OworCitwdWJsaWMgY2xhc3MgWDxUPiB7CisgICAgcHJpdmF0ZSBMaXN0PFQ+IG15TGlzdDsKKworICAgIHB1YmxpYyB2b2lkIHNldChMaXN0PFQ+IGxpc3QpIHsKKyAgICAgICAgbXlMaXN0ID0gbGlzdDsKKyAgICB9CisKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgYWEoKSB7CisgICAgICAgIFg8SW50ZWdlcj4geCA9IG5ldyBYPEludGVnZXI+KCk7CisgICAgICAgIHguc2V0PGNhcmV0PihudWxsLCAiYWFhIik7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY2hhbmdlTWV0aG9kU2lnbmF0dXJlRnJvbVVzYWdlL2JlZm9yZTIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY2hhbmdlTWV0aG9kU2lnbmF0dXJlRnJvbVVzYWdlL2JlZm9yZTIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MjBiNDcxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jaGFuZ2VNZXRob2RTaWduYXR1cmVGcm9tVXNhZ2UvYmVmb3JlMi5qYXZhCkBAIC0wLDAgKzEsNyBAQAorLy8gIjxodG1sPiBDaGFuZ2Ugc2lnbmF0dXJlIG9mIGYoPHM+aW50PC9zPiwgPHM+U3RyaW5nPC9zPik8L2h0bWw+IiAidHJ1ZSIKK2NsYXNzIEEgeworICAgIHZvaWQgZihpbnQgaSxTdHJpbmcgcykge30KKyAgICBwdWJsaWMgdm9pZCBmb28oKSB7CisgICAgICAgIDxjYXJldD5mKCk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY2hhbmdlTWV0aG9kU2lnbmF0dXJlRnJvbVVzYWdlL2JlZm9yZTMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY2hhbmdlTWV0aG9kU2lnbmF0dXJlRnJvbVVzYWdlL2JlZm9yZTMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZTEwNzQ0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jaGFuZ2VNZXRob2RTaWduYXR1cmVGcm9tVXNhZ2UvYmVmb3JlMy5qYXZhCkBAIC0wLDAgKzEsNyBAQAorLy8gIkFkZCAnY2hhcicgYXMgMm5kIHBhcmFtZXRlciB0byBtZXRob2QgJ2YnIiAidHJ1ZSIKK2NsYXNzIEEgeworICAgIHZvaWQgZihpbnQgaSxTdHJpbmcgcykge30KKyAgICBwdWJsaWMgdm9pZCBmb28oKSB7CisgICAgICAgIDxjYXJldD5mKDEsJzInLCIiKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jaGFuZ2VNZXRob2RTaWduYXR1cmVGcm9tVXNhZ2UvYmVmb3JlNC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jaGFuZ2VNZXRob2RTaWduYXR1cmVGcm9tVXNhZ2UvYmVmb3JlNC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM4YTA1NDYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NoYW5nZU1ldGhvZFNpZ25hdHVyZUZyb21Vc2FnZS9iZWZvcmU0LmphdmEKQEAgLTAsMCArMSw3IEBACisvLyAiPGh0bWw+IENoYW5nZSBzaWduYXR1cmUgb2YgZihpbnQsIDxiPmNoYXI8L2I+LCA8Yj5pbnQ8L2I+LCBTdHJpbmcsIDxiPmludDwvYj4sIDxiPk9iamVjdDwvYj4pPC9odG1sPiIgInRydWUiCitjbGFzcyBBIHsKKyAgICB2b2lkIGYoaW50IGksU3RyaW5nIHMpIHt9CisgICAgcHVibGljIHZvaWQgZm9vKCkgeworICAgICAgICA8Y2FyZXQ+ZigxLCcyJyw0LCIiLDEsbnVsbCk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY2hhbmdlTWV0aG9kU2lnbmF0dXJlRnJvbVVzYWdlL2JlZm9yZTUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY2hhbmdlTWV0aG9kU2lnbmF0dXJlRnJvbVVzYWdlL2JlZm9yZTUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xN2U2NjgyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jaGFuZ2VNZXRob2RTaWduYXR1cmVGcm9tVXNhZ2UvYmVmb3JlNS5qYXZhCkBAIC0wLDAgKzEsNyBAQAorLy8gIlJlbW92ZSAybmQgcGFyYW1ldGVyIGZyb20gbWV0aG9kICdmJyIgInRydWUiCitjbGFzcyBBIHsKKyAgICB2b2lkIGYoaW50IGksIFN0cmluZyBzLCBpbnQgaTIpIHt9CisgICAgcHVibGljIHZvaWQgZm9vKCkgeworICAgICAgICA8Y2FyZXQ+ZigxLDEpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NoYW5nZU1ldGhvZFNpZ25hdHVyZUZyb21Vc2FnZS9iZWZvcmU2LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NoYW5nZU1ldGhvZFNpZ25hdHVyZUZyb21Vc2FnZS9iZWZvcmU2LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjI4YTZlYwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY2hhbmdlTWV0aG9kU2lnbmF0dXJlRnJvbVVzYWdlL2JlZm9yZTYuamF2YQpAQCAtMCwwICsxLDcgQEAKKy8vICJDaGFuZ2UgMm5kIHBhcmFtZXRlciBvZiBtZXRob2QgJ2YnIGZyb20gJ1N0cmluZycgdG8gJ2ludCciICJ0cnVlIgorY2xhc3MgQSB7CisgICAgdm9pZCBmKGludCBpLCBTdHJpbmcgcywgaW50IGkyKSB7fQorICAgIHB1YmxpYyB2b2lkIGZvbygpIHsKKyAgICAgICAgPGNhcmV0PmYoMSwxLCc0Jyk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY2hhbmdlTWV0aG9kU2lnbmF0dXJlRnJvbVVzYWdlL2JlZm9yZTcuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY2hhbmdlTWV0aG9kU2lnbmF0dXJlRnJvbVVzYWdlL2JlZm9yZTcuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMWUyN2Q2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jaGFuZ2VNZXRob2RTaWduYXR1cmVGcm9tVXNhZ2UvYmVmb3JlNy5qYXZhCkBAIC0wLDAgKzEsNyBAQAorLy8gIjxodG1sPiBDaGFuZ2Ugc2lnbmF0dXJlIG9mIGYoaW50LCA8cz5TdHJpbmc8L3M+LCBpbnQsIDxzPmludDwvcz4sIDxzPmNoYXI8L3M+LCBTdHJpbmcpPC9odG1sPiIgInRydWUiCitjbGFzcyBBIHsKKyAgICB2b2lkIGYoaW50IGksIFN0cmluZyBzLCBpbnQgaTIsIGludCBpMywgY2hhciBjLCBTdHJpbmcgcykge30KKyAgICBwdWJsaWMgdm9pZCBmb28oKSB7CisgICAgICAgIDxjYXJldD5mKDEsMSwiNCIpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NoYW5nZU1ldGhvZFNpZ25hdHVyZUZyb21Vc2FnZS9iZWZvcmU4LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NoYW5nZU1ldGhvZFNpZ25hdHVyZUZyb21Vc2FnZS9iZWZvcmU4LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjg3OTcyMwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY2hhbmdlTWV0aG9kU2lnbmF0dXJlRnJvbVVzYWdlL2JlZm9yZTguamF2YQpAQCAtMCwwICsxLDYgQEAKKy8vICI8aHRtbD4gQ2hhbmdlIHNpZ25hdHVyZSBvZiBBKDxiPmludDwvYj4sIDxiPmludDwvYj4sIDxiPlN0cmluZzwvYj4pPC9odG1sPiIgInRydWUiCitjbGFzcyBBIHsKKyAgICBBKCkgeworICAgICAgICBuZXcgQTxjYXJldD4oMSwxLCI0Iik7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY2hhbmdlTWV0aG9kU2lnbmF0dXJlRnJvbVVzYWdlL2JlZm9yZTkuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY2hhbmdlTWV0aG9kU2lnbmF0dXJlRnJvbVVzYWdlL2JlZm9yZTkuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMjEyZWZiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jaGFuZ2VNZXRob2RTaWduYXR1cmVGcm9tVXNhZ2UvYmVmb3JlOS5qYXZhCkBAIC0wLDAgKzEsNiBAQAorLy8gIkFkZCAnaW50JyBhcyAybmQgcGFyYW1ldGVyIHRvIG1ldGhvZCAnZiciICJ0cnVlIgorIHB1YmxpYyBjbGFzcyBTIHsKKyAgICAgdm9pZCBmKGludCBrLCBpbnQuLi4gYXJncykgeworICAgICBmKDEsMSxudWxsKTxjYXJldD47Ly8gLT4gZigxLDEsbnVsbCkKKyAgICAgfQorIH0KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY2hhbmdlTWV0aG9kU2lnbmF0dXJlRnJvbVVzYWdlL2JlZm9yZUFzc2lnbmFibGVQYXJhbVR5cGVzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NoYW5nZU1ldGhvZFNpZ25hdHVyZUZyb21Vc2FnZS9iZWZvcmVBc3NpZ25hYmxlUGFyYW1UeXBlcy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA4YjMyNWIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NoYW5nZU1ldGhvZFNpZ25hdHVyZUZyb21Vc2FnZS9iZWZvcmVBc3NpZ25hYmxlUGFyYW1UeXBlcy5qYXZhCkBAIC0wLDAgKzEsMjIgQEAKKy8vICJBZGQgJ0InIGFzIDJuZCBwYXJhbWV0ZXIgdG8gbWV0aG9kICdmb28nIiAidHJ1ZSIKK3B1YmxpYyBjbGFzcyBTIHsKKworICB2b2lkIGZvbyhBIGEpIHsKKyAgfQorCisgIHZvaWQgYmFyKEIgYikgeworICAgIEEgYSA9IGdldEEoKTsKKyAgICBmb28oYSwgPGNhcmV0PmIpOworICB9CisKKyAgQSBnZXRBKCkgeworICAgIHJldHVybiBuZXcgQSgpOworICB9Cit9CisKK2NsYXNzIEEgeworfQorCitjbGFzcyBCIGV4dGVuZHMgQSB7Cit9CisgIApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY2hhbmdlTWV0aG9kU2lnbmF0dXJlRnJvbVVzYWdlL2JlZm9yZUFzc2lnbmFibGVQYXJhbVR5cGVzRmlyc3ROZXcuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY2hhbmdlTWV0aG9kU2lnbmF0dXJlRnJvbVVzYWdlL2JlZm9yZUFzc2lnbmFibGVQYXJhbVR5cGVzRmlyc3ROZXcuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NTMyNjdhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jaGFuZ2VNZXRob2RTaWduYXR1cmVGcm9tVXNhZ2UvYmVmb3JlQXNzaWduYWJsZVBhcmFtVHlwZXNGaXJzdE5ldy5qYXZhCkBAIC0wLDAgKzEsMjIgQEAKKy8vICJBZGQgJ0InIGFzIDFzdCBwYXJhbWV0ZXIgdG8gbWV0aG9kICdmb28nIiAidHJ1ZSIKK3B1YmxpYyBjbGFzcyBTIHsKKworICB2b2lkIGZvbyhBIGEpIHsKKyAgfQorCisgIHZvaWQgYmFyKEIgYikgeworICAgIEEgYSA9IGdldEEoKTsKKyAgICBmb28oPGNhcmV0PmIsIGEpOworICB9CisKKyAgQSBnZXRBKCkgeworICAgIHJldHVybiBuZXcgQSgpOworICB9Cit9CisKK2NsYXNzIEEgeworfQorCitjbGFzcyBCIGV4dGVuZHMgQSB7Cit9CisgIApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY2hhbmdlTWV0aG9kU2lnbmF0dXJlRnJvbVVzYWdlL2JlZm9yZUFzc2lnbmFibGVQYXJhbVR5cGVzRmlyc3ROZXdSZXZlcnNlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NoYW5nZU1ldGhvZFNpZ25hdHVyZUZyb21Vc2FnZS9iZWZvcmVBc3NpZ25hYmxlUGFyYW1UeXBlc0ZpcnN0TmV3UmV2ZXJzZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQyODliY2IKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NoYW5nZU1ldGhvZFNpZ25hdHVyZUZyb21Vc2FnZS9iZWZvcmVBc3NpZ25hYmxlUGFyYW1UeXBlc0ZpcnN0TmV3UmV2ZXJzZS5qYXZhCkBAIC0wLDAgKzEsMjIgQEAKKy8vICJBZGQgJ0EnIGFzIDJuZCBwYXJhbWV0ZXIgdG8gbWV0aG9kICdmb28nIiAidHJ1ZSIKK3B1YmxpYyBjbGFzcyBTIHsKKworICB2b2lkIGZvbyhBIGEpIHsKKyAgfQorCisgIHZvaWQgYmFyKEIgYikgeworICAgIEEgYSA9IGdldEEoKTsKKyAgICBmb28oPGNhcmV0PmIsIGEpOworICB9CisKKyAgQSBnZXRBKCkgeworICAgIHJldHVybiBuZXcgQSgpOworICB9Cit9CisKK2NsYXNzIEEgeworfQorCitjbGFzcyBCIGV4dGVuZHMgQSB7Cit9CisgIApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY2hhbmdlTWV0aG9kU2lnbmF0dXJlRnJvbVVzYWdlL2JlZm9yZUFzc2lnbmFibGVQYXJhbVR5cGVzUmV2ZXJzZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jaGFuZ2VNZXRob2RTaWduYXR1cmVGcm9tVXNhZ2UvYmVmb3JlQXNzaWduYWJsZVBhcmFtVHlwZXNSZXZlcnNlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzYzMTgyMAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY2hhbmdlTWV0aG9kU2lnbmF0dXJlRnJvbVVzYWdlL2JlZm9yZUFzc2lnbmFibGVQYXJhbVR5cGVzUmV2ZXJzZS5qYXZhCkBAIC0wLDAgKzEsMjIgQEAKKy8vICJBZGQgJ0EnIGFzIDFzdCBwYXJhbWV0ZXIgdG8gbWV0aG9kICdmb28nIiAidHJ1ZSIKK3B1YmxpYyBjbGFzcyBTIHsKKworICB2b2lkIGZvbyhBIGEpIHsKKyAgfQorCisgIHZvaWQgYmFyKEIgYikgeworICAgIEEgYSA9IGdldEEoKTsKKyAgICBmb28oYSwgPGNhcmV0PmIpOworICB9CisKKyAgQSBnZXRBKCkgeworICAgIHJldHVybiBuZXcgQSgpOworICB9Cit9CisKK2NsYXNzIEEgeworfQorCitjbGFzcyBCIGV4dGVuZHMgQSB7Cit9CisgIApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY2hhbmdlTWV0aG9kU2lnbmF0dXJlRnJvbVVzYWdlL2JlZm9yZUNvbW1vbkNoYW5nZVJldmVyc2UuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY2hhbmdlTWV0aG9kU2lnbmF0dXJlRnJvbVVzYWdlL2JlZm9yZUNvbW1vbkNoYW5nZVJldmVyc2UuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMmM1NzdjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jaGFuZ2VNZXRob2RTaWduYXR1cmVGcm9tVXNhZ2UvYmVmb3JlQ29tbW9uQ2hhbmdlUmV2ZXJzZS5qYXZhCkBAIC0wLDAgKzEsMTEgQEAKKy8vICI8aHRtbD4gQ2hhbmdlIHNpZ25hdHVyZSBvZiBmb28oPGI+QXJyYXlMaXN0Jmx0O0ludGVnZXImZ3Q7PC9iPiwgPGI+QXJyYXlMaXN0Jmx0O0ludGVnZXImZ3Q7PC9iPiwgQXJyYXlMaXN0Jmx0O0ludGVnZXImZ3Q7LCBBcnJheUxpc3QmbHQ7SW50ZWdlciZndDspPC9odG1sPiIgInRydWUiCitpbXBvcnQgamF2YS51dGlsLio7CisKK2NsYXNzIFRlc3QgeworCisgICAgcHVibGljIHZvaWQgZm9vKEFycmF5TGlzdDxJbnRlZ2VyPiBsLCBBcnJheUxpc3Q8SW50ZWdlcj4gbDEpIHt9CisKKyAgICB7CisgICAgICBmb28obmV3IDxjYXJldD5BcnJheUxpc3Q8SW50ZWdlcj4oKSwgbmV3IEFycmF5TGlzdDxJbnRlZ2VyPigpLCBuZXcgQXJyYXlMaXN0PEludGVnZXI+KCksIG5ldyBBcnJheUxpc3Q8SW50ZWdlcj4oKSk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY2hhbmdlTWV0aG9kU2lnbmF0dXJlRnJvbVVzYWdlL2JlZm9yZUVyYXNlVHlwZUlmU3Vic3RpdHV0aW9uTm90Rm91bmQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY2hhbmdlTWV0aG9kU2lnbmF0dXJlRnJvbVVzYWdlL2JlZm9yZUVyYXNlVHlwZUlmU3Vic3RpdHV0aW9uTm90Rm91bmQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MTk0ZDAwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jaGFuZ2VNZXRob2RTaWduYXR1cmVGcm9tVXNhZ2UvYmVmb3JlRXJhc2VUeXBlSWZTdWJzdGl0dXRpb25Ob3RGb3VuZC5qYXZhCkBAIC0wLDAgKzEsMTIgQEAKKy8vICJBZGQgJ0ZvbzxUeXBlUGFyYW1OYW1lPicgYXMgMXN0IHBhcmFtZXRlciB0byBtZXRob2QgJ0JhciciICJ0cnVlIgorIHB1YmxpYyBjbGFzcyBCYXIgeworICAgICBCYXIoU3RyaW5nIGFyZ3MpIHsKKworICAgICB9CisgfQorCitjbGFzcyBGb288VHlwZVBhcmFtTmFtZT4geworICAgIHZvaWQgYmFyKCkgeworICAgICAgQmFyIGJhciA9IG5ldyBCYXIodGg8Y2FyZXQ+aXMsICIiKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jaGFuZ2VNZXRob2RTaWduYXR1cmVGcm9tVXNhZ2UvYmVmb3JlRXJhc2VUeXBlSWZTdWJzdGl0dXRpb25Ob3RGb3VuZE5vdEFDb25zdHJ1Y3Rvci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jaGFuZ2VNZXRob2RTaWduYXR1cmVGcm9tVXNhZ2UvYmVmb3JlRXJhc2VUeXBlSWZTdWJzdGl0dXRpb25Ob3RGb3VuZE5vdEFDb25zdHJ1Y3Rvci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk5NjIzYzQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NoYW5nZU1ldGhvZFNpZ25hdHVyZUZyb21Vc2FnZS9iZWZvcmVFcmFzZVR5cGVJZlN1YnN0aXR1dGlvbk5vdEZvdW5kTm90QUNvbnN0cnVjdG9yLmphdmEKQEAgLTAsMCArMSwxMiBAQAorLy8gIkFkZCAnRm9vPFR5cGVQYXJhbU5hbWU+JyBhcyAxc3QgcGFyYW1ldGVyIHRvIG1ldGhvZCAnYmFyJyIgInRydWUiCisgcHVibGljIGNsYXNzIEJhciB7CisgICAgIHN0YXRpYyB2b2lkIGJhcihTdHJpbmcgYXJncykgeworCisgICAgIH0KKyB9CisKK2NsYXNzIEZvbzxUeXBlUGFyYW1OYW1lPiB7CisgICAgdm9pZCBiYXIoKSB7CisgICAgICBCYXIuYmFyKHRoPGNhcmV0PmlzLCAiIik7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY2hhbmdlTWV0aG9kU2lnbmF0dXJlRnJvbVVzYWdlL2JlZm9yZUV4aXN0U2lnbmF0dXJlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NoYW5nZU1ldGhvZFNpZ25hdHVyZUZyb21Vc2FnZS9iZWZvcmVFeGlzdFNpZ25hdHVyZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZlOWRjOTMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NoYW5nZU1ldGhvZFNpZ25hdHVyZUZyb21Vc2FnZS9iZWZvcmVFeGlzdFNpZ25hdHVyZS5qYXZhCkBAIC0wLDAgKzEsMTIgQEAKKy8vICJBZGQgJ2ludCcgYXMgMXN0IHBhcmFtZXRlciB0byBtZXRob2QgJ2YnIiAiZmFsc2UiCitwdWJsaWMgY2xhc3MgRm9vIHsKKyAgICB2b2lkIGZvbyhCYXIgZikgeworICAgICAgICBmLmY8Y2FyZXQ+KDIpOworICAgIH0KK30KK2NsYXNzIEJhciB7CisgICAgcHJpdmF0ZSB2b2lkIGYoaW50IGkpe30KKyAgICBwdWJsaWMgdm9pZCBmKFN0cmluZyBzKXt9CisKKworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jaGFuZ2VNZXRob2RTaWduYXR1cmVGcm9tVXNhZ2UvYmVmb3JlTmV3UGFyYW1OYW1lLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NoYW5nZU1ldGhvZFNpZ25hdHVyZUZyb21Vc2FnZS9iZWZvcmVOZXdQYXJhbU5hbWUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NDE5YmM4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jaGFuZ2VNZXRob2RTaWduYXR1cmVGcm9tVXNhZ2UvYmVmb3JlTmV3UGFyYW1OYW1lLmphdmEKQEAgLTAsMCArMSwxMCBAQAorLy8gIkFkZCAnaW50JyBhcyAxc3QgcGFyYW1ldGVyIHRvIG1ldGhvZCAnZiciICJ0cnVlIgorIHB1YmxpYyBjbGFzcyBTIHsKKyAgICAgdm9pZCBmKFN0cmluZyBhcmdzKSB7CisKKyAgICAgfQorCisgICAgIHZvaWQgYmFyKCkgeworICAgICAgIGYoMTxjYXJldD4xLCAiIik7CisgICAgIH0KKyB9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NoYW5nZU1ldGhvZFNpZ25hdHVyZUZyb21Vc2FnZS9iZWZvcmVOb25Bc3NpZ25hYmxlUGFyYW1UeXBlcy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jaGFuZ2VNZXRob2RTaWduYXR1cmVGcm9tVXNhZ2UvYmVmb3JlTm9uQXNzaWduYWJsZVBhcmFtVHlwZXMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MjFkNDdlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jaGFuZ2VNZXRob2RTaWduYXR1cmVGcm9tVXNhZ2UvYmVmb3JlTm9uQXNzaWduYWJsZVBhcmFtVHlwZXMuamF2YQpAQCAtMCwwICsxLDIyIEBACisvLyAiQWRkICdTdHJpbmcnIGFzIDJuZCBwYXJhbWV0ZXIgdG8gbWV0aG9kICdmb28nIiAidHJ1ZSIKK3B1YmxpYyBjbGFzcyBTIHsKKworICB2b2lkIGZvbyhBIGEpIHsKKyAgfQorCisgIHZvaWQgYmFyKEIgYikgeworICAgIEEgYSA9IGdldEEoKTsKKyAgICBmb28oYSwgPGNhcmV0PiIiKTsKKyAgfQorCisgIEEgZ2V0QSgpIHsKKyAgICByZXR1cm4gbmV3IEEoKTsKKyAgfQorfQorCitjbGFzcyBBIHsKK30KKworY2xhc3MgQiBleHRlbmRzIEEgeworfQorICAKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NoYW5nZU1ldGhvZFNpZ25hdHVyZUZyb21Vc2FnZS9iZWZvcmVOb3RBdmFpbGFibGUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY2hhbmdlTWV0aG9kU2lnbmF0dXJlRnJvbVVzYWdlL2JlZm9yZU5vdEF2YWlsYWJsZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIzMTg1NTcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NoYW5nZU1ldGhvZFNpZ25hdHVyZUZyb21Vc2FnZS9iZWZvcmVOb3RBdmFpbGFibGUuamF2YQpAQCAtMCwwICsxLDYgQEAKKy8vICJDaGFuZ2UgMXN0IHBhcmFtZXRlciBvZiBtZXRob2QgJ3BhcnNlSW50JyBmcm9tICdTdHJpbmcnIHRvICdpbnQnIiAiZmFsc2UiCitjbGFzcyBBIHsKKyAgICBwdWJsaWMgdm9pZCBmb28oKSB7CisgICAgICAgIDxjYXJldD5JbnRlZ2VyLnBhcnNlSW50KDEpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NoYW5nZU1ldGhvZFNpZ25hdHVyZUZyb21Vc2FnZS9iZWZvcmVRdWFsaWZpZWRUeXBlcy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jaGFuZ2VNZXRob2RTaWduYXR1cmVGcm9tVXNhZ2UvYmVmb3JlUXVhbGlmaWVkVHlwZXMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNjRjZDk3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jaGFuZ2VNZXRob2RTaWduYXR1cmVGcm9tVXNhZ2UvYmVmb3JlUXVhbGlmaWVkVHlwZXMuamF2YQpAQCAtMCwwICsxLDEyIEBACisvLyAiQWRkICdJbm5lcjEnIGFzIDFzdCBwYXJhbWV0ZXIgdG8gbWV0aG9kICdJbm5lcjInIiAidHJ1ZSIKK2NsYXNzIENvb2xUZXN0IHsKK2NsYXNzIElubmVyMSB7fQorCit2b2lkIG1ldGhvZCgpIHsKK25ldyBJbm5lcjIobmV3IEluPGNhcmV0Pm5lcjEoKSk7Cit9CisKK2NsYXNzIElubmVyMiB7CitJbm5lcjIoKSB7IH0KK30KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NoYW5nZU1ldGhvZFNpZ25hdHVyZUZyb21Vc2FnZS9iZWZvcmVWYXJhcmdzMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jaGFuZ2VNZXRob2RTaWduYXR1cmVGcm9tVXNhZ2UvYmVmb3JlVmFyYXJnczEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZWExNWFkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jaGFuZ2VNZXRob2RTaWduYXR1cmVGcm9tVXNhZ2UvYmVmb3JlVmFyYXJnczEuamF2YQpAQCAtMCwwICsxLDYgQEAKKy8vICJBZGQgJ1N0cmluZycgYXMgMXN0IHBhcmFtZXRlciB0byBtZXRob2QgJ2YnIiAidHJ1ZSIKKyBwdWJsaWMgY2xhc3MgUyB7CisgICAgIHZvaWQgZihpbnQuLi4gYXJncykgeworICAgICBmKCIiLDEsMSk8Y2FyZXQ+OworICAgICB9CisgfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jaGFuZ2VNZXRob2RTaWduYXR1cmVGcm9tVXNhZ2UvYmVmb3JlVmFyYXJnczIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY2hhbmdlTWV0aG9kU2lnbmF0dXJlRnJvbVVzYWdlL2JlZm9yZVZhcmFyZ3MyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjMzNjJkOQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY2hhbmdlTWV0aG9kU2lnbmF0dXJlRnJvbVVzYWdlL2JlZm9yZVZhcmFyZ3MyLmphdmEKQEAgLTAsMCArMSw2IEBACisvLyAiQWRkICdTdHJpbmcnIGFzIDFzdCBwYXJhbWV0ZXIgdG8gbWV0aG9kICdmJyIgInRydWUiCisgcHVibGljIGNsYXNzIFMgeworICAgICB2b2lkIGYoaW50Li4uIGFyZ3MpIHsKKyAgICAgZigiIixudWxsKTxjYXJldD47CisgICAgIH0KKyB9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NoYW5nZU1ldGhvZFNpZ25hdHVyZUZyb21Vc2FnZS9iZWZvcmVWYXJhcmdzMkFycmF5LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NoYW5nZU1ldGhvZFNpZ25hdHVyZUZyb21Vc2FnZS9iZWZvcmVWYXJhcmdzMkFycmF5LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWY0NjNlZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY2hhbmdlTWV0aG9kU2lnbmF0dXJlRnJvbVVzYWdlL2JlZm9yZVZhcmFyZ3MyQXJyYXkuamF2YQpAQCAtMCwwICsxLDYgQEAKKy8vICJBZGQgJ1N0cmluZycgYXMgMm5kIHBhcmFtZXRlciB0byBtZXRob2QgJ2YnIiAiZmFsc2UiCisgcHVibGljIGNsYXNzIFMgeworICAgICB2b2lkIGYoaW50Li4uIGFyZ3MpIHsKKyAgICAgZigxLDEsICIiKTxjYXJldD47CisgICAgIH0KKyB9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NoYW5nZU5ld09wZXJhdG9yVHlwZS9hZnRlcjEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY2hhbmdlTmV3T3BlcmF0b3JUeXBlL2FmdGVyMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ4YTkyZDgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NoYW5nZU5ld09wZXJhdG9yVHlwZS9hZnRlcjEuamF2YQpAQCAtMCwwICsxLDkgQEAKKy8vICJDaGFuZ2UgJ25ldyBPYmplY3QoKScgdG8gJ25ldyBTdHJpbmcoKSciICJ0cnVlIgorcHVibGljIGNsYXNzIFRUVCB7CisgICAgdm9pZCBmKCkgeworICAgICAgICBTdHJpbmcgcyA9IG5ldyBTdHJpbmcoPGNhcmV0Pik7CisgICAgICAgIGludFtdW10gaSA9IG5ldyBPYmplY3QoKTsKKyAgICAgICAgaW50W10gZiA9IG5ldyBpbnRbMF1bXTsKKworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY2hhbmdlTmV3T3BlcmF0b3JUeXBlL2FmdGVyMi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jaGFuZ2VOZXdPcGVyYXRvclR5cGUvYWZ0ZXIyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTE5N2IyZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY2hhbmdlTmV3T3BlcmF0b3JUeXBlL2FmdGVyMi5qYXZhCkBAIC0wLDAgKzEsOSBAQAorLy8gIkNoYW5nZSAnbmV3IE9iamVjdCgpJyB0byAnbmV3IGludFtdW10nIiAidHJ1ZSIKK3B1YmxpYyBjbGFzcyBUVFQgeworICAgIHZvaWQgZigpIHsKKyAgICAgICAgU3RyaW5nIHMgPSBuZXcgT2JqZWN0KCk7CisgICAgICAgIGludFtdW10gaSA9IG5ldyBpbnRbPGNhcmV0PjxzZWxlY3Rpb24+MDwvc2VsZWN0aW9uPl1bXTsKKyAgICAgICAgaW50W10gZiA9IG5ldyBpbnRbMF1bXTsKKworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY2hhbmdlTmV3T3BlcmF0b3JUeXBlL2FmdGVyMy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jaGFuZ2VOZXdPcGVyYXRvclR5cGUvYWZ0ZXIzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDNiZTgwNwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY2hhbmdlTmV3T3BlcmF0b3JUeXBlL2FmdGVyMy5qYXZhCkBAIC0wLDAgKzEsOSBAQAorLy8gIkNoYW5nZSAnbmV3IFRUVFswXVtdJyB0byAnbmV3IFRUVFtdJyIgInRydWUiCitwdWJsaWMgY2xhc3MgVFRUIHsKKyAgICB2b2lkIGYoKSB7CisgICAgICAgIFN0cmluZyBzID0gbmV3IE9iamVjdCgpOworICAgICAgICBpbnRbXVtdIGkgPSBuZXcgT2JqZWN0KCk7CisgICAgICAgIFRUVFtdIGYgPSBuZXcgVFRUWzBdPGNhcmV0PjsKKworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY2hhbmdlTmV3T3BlcmF0b3JUeXBlL2FmdGVyNC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jaGFuZ2VOZXdPcGVyYXRvclR5cGUvYWZ0ZXI0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjg4NTI2YQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY2hhbmdlTmV3T3BlcmF0b3JUeXBlL2FmdGVyNC5qYXZhCkBAIC0wLDAgKzEsOCBAQAorLy8gIkNoYW5nZSAnbmV3IEFycmF5TGlzdDxJbnRlZ2VyPigpJyB0byAnbmV3IEFycmF5TGlzdDxTdHJpbmc+KCknIiAidHJ1ZSIKK2ltcG9ydCBqYXZhLnV0aWwuKjsKKworY2xhc3MgUlJSIHsKKyAgdm9pZCBmKCkgeworICAgICBMaXN0PFN0cmluZz4gbCA9IG5ldyBBcnJheUxpc3Q8Pig8Y2FyZXQ+KTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY2hhbmdlTmV3T3BlcmF0b3JUeXBlL2FmdGVyQW5vbnltb3VzQ2xhc3MuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY2hhbmdlTmV3T3BlcmF0b3JUeXBlL2FmdGVyQW5vbnltb3VzQ2xhc3MuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43YTcxMjFkNAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY2hhbmdlTmV3T3BlcmF0b3JUeXBlL2FmdGVyQW5vbnltb3VzQ2xhc3MuamF2YQpAQCAtMCwwICsxLDkgQEAKKy8vICJDaGFuZ2UgJ25ldyBSdW5uYWJsZSgpIHsuLi59JyB0byAnbmV3IFN0cmluZ0J1ZmZlcigpJyIgInRydWUiCisKK2NsYXNzIFggeworIHB1YmxpYyBTdHJpbmdCdWZmZXIgYnVmID0gbmV3IFN0cmluZ0J1ZmZlcigpeworICAgIHB1YmxpYyB2b2lkIHJ1bigpeworICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJzbXRoIik7CisgICAgfQorICB9OworIH0KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY2hhbmdlTmV3T3BlcmF0b3JUeXBlL2FmdGVyQXJncy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jaGFuZ2VOZXdPcGVyYXRvclR5cGUvYWZ0ZXJBcmdzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDMzOWJiZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY2hhbmdlTmV3T3BlcmF0b3JUeXBlL2FmdGVyQXJncy5qYXZhCkBAIC0wLDAgKzEsOCBAQAorLy8gIkNoYW5nZSAnbmV3IEFycmF5TGlzdDxJbnRlZ2VyPiguLi4pJyB0byAnbmV3IEFycmF5TGlzdDxTdHJpbmc+KCknIiAidHJ1ZSIKK2ltcG9ydCBqYXZhLnV0aWwuKjsKKworY2xhc3MgUlJSIHsKKyAgdm9pZCBmKCkgeworICAgICBMaXN0PFN0cmluZz4gbCA9IG5ldyBBcnJheUxpc3Q8PigyPGNhcmV0Pik7CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY2hhbmdlTmV3T3BlcmF0b3JUeXBlL2FmdGVyQ2FuQ29sbGFwc2VEaWFtb25kcy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jaGFuZ2VOZXdPcGVyYXRvclR5cGUvYWZ0ZXJDYW5Db2xsYXBzZURpYW1vbmRzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzZhMWJmYgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY2hhbmdlTmV3T3BlcmF0b3JUeXBlL2FmdGVyQ2FuQ29sbGFwc2VEaWFtb25kcy5qYXZhCkBAIC0wLDAgKzEsMTIgQEAKKy8vICJDaGFuZ2UgJ25ldyBGb288SW50ZWdlcj4oKScgdG8gJ25ldyBGb288TnVtYmVyPigpJyIgInRydWUiCisKK2NsYXNzIEZvbzxUPiB7CisgICAgICAgIEZvbyhUIHQpIHt9CisgICAgICAgIEZvbygpIHt9Cit9CisKK2NsYXNzIENvbnN0cnVjdG9ycyB7CisgICAgICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKKyAgICAgICAgICAgICAgICBGb288TnVtYmVyPiBmb28yID0gbmV3IEZvbzw+KCk7CisgICAgICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY2hhbmdlTmV3T3BlcmF0b3JUeXBlL2FmdGVyQ2FudENvbGxhcHNlRGlhbW9uZHMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY2hhbmdlTmV3T3BlcmF0b3JUeXBlL2FmdGVyQ2FudENvbGxhcHNlRGlhbW9uZHMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYTdiZGVjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jaGFuZ2VOZXdPcGVyYXRvclR5cGUvYWZ0ZXJDYW50Q29sbGFwc2VEaWFtb25kcy5qYXZhCkBAIC0wLDAgKzEsMTIgQEAKKy8vICJDaGFuZ2UgJ25ldyBGb288SW50ZWdlcj4oLi4uKScgdG8gJ25ldyBGb288TnVtYmVyPigpJyIgInRydWUiCisKK2NsYXNzIEZvbzxUPiB7CisgICAgICAgIEZvbyhUIHQpIHt9CisgICAgICAgIEZvbygpIHt9Cit9CisKK2NsYXNzIENvbnN0cnVjdG9ycyB7CisgICAgICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKKyAgICAgICAgICAgICAgICBGb288TnVtYmVyPiBmb28yID0gbmV3IEZvbzxOdW1iZXI+KDEpOworICAgICAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NoYW5nZU5ld09wZXJhdG9yVHlwZS9hZnRlck5vblByaW1pdGl2ZUFycmF5RGltZW5zaW9ucy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jaGFuZ2VOZXdPcGVyYXRvclR5cGUvYWZ0ZXJOb25QcmltaXRpdmVBcnJheURpbWVuc2lvbnMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NThlZGYzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jaGFuZ2VOZXdPcGVyYXRvclR5cGUvYWZ0ZXJOb25QcmltaXRpdmVBcnJheURpbWVuc2lvbnMuamF2YQpAQCAtMCwwICsxLDUgQEAKKy8vICJDaGFuZ2UgJ25ldyBYWzQyXScgdG8gJ25ldyBsb25nW10nIiAidHJ1ZSIKKworIGNsYXNzIFggeworIHB1YmxpYyBsb25nW10gZm9vKCkgeyByZXR1cm4gbmV3IGxvbmdbNDJdOyB9CisgfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jaGFuZ2VOZXdPcGVyYXRvclR5cGUvYmVmb3JlMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jaGFuZ2VOZXdPcGVyYXRvclR5cGUvYmVmb3JlMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAxNGZjYTEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NoYW5nZU5ld09wZXJhdG9yVHlwZS9iZWZvcmUxLmphdmEKQEAgLTAsMCArMSw5IEBACisvLyAiQ2hhbmdlICduZXcgT2JqZWN0KCknIHRvICduZXcgU3RyaW5nKCknIiAidHJ1ZSIKK3B1YmxpYyBjbGFzcyBUVFQgeworICAgIHZvaWQgZigpIHsKKyAgICAgICAgPGNhcmV0PlN0cmluZyBzID0gbmV3IE9iamVjdCgpOworICAgICAgICBpbnRbXVtdIGkgPSBuZXcgT2JqZWN0KCk7CisgICAgICAgIGludFtdIGYgPSBuZXcgaW50WzBdW107CisKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NoYW5nZU5ld09wZXJhdG9yVHlwZS9iZWZvcmUyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NoYW5nZU5ld09wZXJhdG9yVHlwZS9iZWZvcmUyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmU4YjExYQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY2hhbmdlTmV3T3BlcmF0b3JUeXBlL2JlZm9yZTIuamF2YQpAQCAtMCwwICsxLDkgQEAKKy8vICJDaGFuZ2UgJ25ldyBPYmplY3QoKScgdG8gJ25ldyBpbnRbXVtdJyIgInRydWUiCitwdWJsaWMgY2xhc3MgVFRUIHsKKyAgICB2b2lkIGYoKSB7CisgICAgICAgIFN0cmluZyBzID0gbmV3IE9iamVjdCgpOworICAgICAgICBpbnRbXVtdIGkgPSBuZXcgT2JqZWN0KCk7PGNhcmV0PgorICAgICAgICBpbnRbXSBmID0gbmV3IGludFswXVtdOworCisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jaGFuZ2VOZXdPcGVyYXRvclR5cGUvYmVmb3JlMy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jaGFuZ2VOZXdPcGVyYXRvclR5cGUvYmVmb3JlMy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFkOTRlOTMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NoYW5nZU5ld09wZXJhdG9yVHlwZS9iZWZvcmUzLmphdmEKQEAgLTAsMCArMSw5IEBACisvLyAiQ2hhbmdlICduZXcgVFRUWzBdW10nIHRvICduZXcgVFRUW10nIiAidHJ1ZSIKK3B1YmxpYyBjbGFzcyBUVFQgeworICAgIHZvaWQgZigpIHsKKyAgICAgICAgU3RyaW5nIHMgPSBuZXcgT2JqZWN0KCk7CisgICAgICAgIGludFtdW10gaSA9IG5ldyBPYmplY3QoKTsKKyAgICAgICAgVFRUW10gZiA9IDxjYXJldD5uZXcgVFRUWzBdW107CisKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NoYW5nZU5ld09wZXJhdG9yVHlwZS9iZWZvcmU0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NoYW5nZU5ld09wZXJhdG9yVHlwZS9iZWZvcmU0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2IxOTAxNwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY2hhbmdlTmV3T3BlcmF0b3JUeXBlL2JlZm9yZTQuamF2YQpAQCAtMCwwICsxLDggQEAKKy8vICJDaGFuZ2UgJ25ldyBBcnJheUxpc3Q8SW50ZWdlcj4oKScgdG8gJ25ldyBBcnJheUxpc3Q8U3RyaW5nPigpJyIgInRydWUiCitpbXBvcnQgamF2YS51dGlsLio7CisKK2NsYXNzIFJSUiB7CisgIHZvaWQgZigpIHsKKyAgICAgTGlzdDxTdHJpbmc+IGwgPSBuZXcgPGNhcmV0PkFycmF5TGlzdDxJbnRlZ2VyPigpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jaGFuZ2VOZXdPcGVyYXRvclR5cGUvYmVmb3JlQW5vbnltb3VzQ2xhc3MuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY2hhbmdlTmV3T3BlcmF0b3JUeXBlL2JlZm9yZUFub255bW91c0NsYXNzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjc1MGM0ZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY2hhbmdlTmV3T3BlcmF0b3JUeXBlL2JlZm9yZUFub255bW91c0NsYXNzLmphdmEKQEAgLTAsMCArMSw5IEBACisvLyAiQ2hhbmdlICduZXcgUnVubmFibGUoKSB7Li4ufScgdG8gJ25ldyBTdHJpbmdCdWZmZXIoKSciICJ0cnVlIgorCitjbGFzcyBYIHsKKyBwdWJsaWMgU3RyaW5nQnVmZmVyIGJ1ZiA9IDxjYXJldD5uZXcgUnVubmFibGUoKXsKKyAgICBwdWJsaWMgdm9pZCBydW4oKXsKKyAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigic210aCIpOworICAgIH0KKyAgfTsKKyB9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NoYW5nZU5ld09wZXJhdG9yVHlwZS9iZWZvcmVBcmdzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NoYW5nZU5ld09wZXJhdG9yVHlwZS9iZWZvcmVBcmdzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmY2OTM5NQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY2hhbmdlTmV3T3BlcmF0b3JUeXBlL2JlZm9yZUFyZ3MuamF2YQpAQCAtMCwwICsxLDggQEAKKy8vICJDaGFuZ2UgJ25ldyBBcnJheUxpc3Q8SW50ZWdlcj4oLi4uKScgdG8gJ25ldyBBcnJheUxpc3Q8U3RyaW5nPigpJyIgInRydWUiCitpbXBvcnQgamF2YS51dGlsLio7CisKK2NsYXNzIFJSUiB7CisgIHZvaWQgZigpIHsKKyAgICAgTGlzdDxTdHJpbmc+IGwgPSBuZXcgPGNhcmV0PkFycmF5TGlzdDxJbnRlZ2VyPigyKTsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jaGFuZ2VOZXdPcGVyYXRvclR5cGUvYmVmb3JlQ2FuQ29sbGFwc2VEaWFtb25kcy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jaGFuZ2VOZXdPcGVyYXRvclR5cGUvYmVmb3JlQ2FuQ29sbGFwc2VEaWFtb25kcy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE5ZmFiNTMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NoYW5nZU5ld09wZXJhdG9yVHlwZS9iZWZvcmVDYW5Db2xsYXBzZURpYW1vbmRzLmphdmEKQEAgLTAsMCArMSwxMiBAQAorLy8gIkNoYW5nZSAnbmV3IEZvbzxJbnRlZ2VyPigpJyB0byAnbmV3IEZvbzxOdW1iZXI+KCknIiAidHJ1ZSIKKworY2xhc3MgRm9vPFQ+IHsKKyAgICAgICAgRm9vKFQgdCkge30KKyAgICAgICAgRm9vKCkge30KK30KKworY2xhc3MgQ29uc3RydWN0b3JzIHsKKyAgICAgICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgeworICAgICAgICAgICAgICAgIEZvbzxOdW1iZXI+IGZvbzIgPSBuZXcgRm9vPEludDxjYXJldD5lZ2VyPigpOworICAgICAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NoYW5nZU5ld09wZXJhdG9yVHlwZS9iZWZvcmVDYW50Q29sbGFwc2VEaWFtb25kcy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jaGFuZ2VOZXdPcGVyYXRvclR5cGUvYmVmb3JlQ2FudENvbGxhcHNlRGlhbW9uZHMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMWFlMzZjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jaGFuZ2VOZXdPcGVyYXRvclR5cGUvYmVmb3JlQ2FudENvbGxhcHNlRGlhbW9uZHMuamF2YQpAQCAtMCwwICsxLDEyIEBACisvLyAiQ2hhbmdlICduZXcgRm9vPEludGVnZXI+KC4uLiknIHRvICduZXcgRm9vPE51bWJlcj4oKSciICJ0cnVlIgorCitjbGFzcyBGb288VD4geworICAgICAgICBGb28oVCB0KSB7fQorICAgICAgICBGb28oKSB7fQorfQorCitjbGFzcyBDb25zdHJ1Y3RvcnMgeworICAgICAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CisgICAgICAgICAgICAgICAgRm9vPE51bWJlcj4gZm9vMiA9IG5ldyBGb288SW50PGNhcmV0PmVnZXI+KDEpOworICAgICAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NoYW5nZU5ld09wZXJhdG9yVHlwZS9iZWZvcmVOb25QcmltaXRpdmVBcnJheURpbWVuc2lvbnMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY2hhbmdlTmV3T3BlcmF0b3JUeXBlL2JlZm9yZU5vblByaW1pdGl2ZUFycmF5RGltZW5zaW9ucy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI2OThlZTkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NoYW5nZU5ld09wZXJhdG9yVHlwZS9iZWZvcmVOb25QcmltaXRpdmVBcnJheURpbWVuc2lvbnMuamF2YQpAQCAtMCwwICsxLDUgQEAKKy8vICJDaGFuZ2UgJ25ldyBYWzQyXScgdG8gJ25ldyBsb25nW10nIiAidHJ1ZSIKKworIGNsYXNzIFggeworIHB1YmxpYyBsb25nW10gZm9vKCkgeyByZXR1cm4gPGNhcmV0Pm5ldyBYWzQyXTsgfQorIH0KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY2hhbmdlTmV3T3BlcmF0b3JUeXBlL2JlZm9yZVByaW1pdGl2ZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jaGFuZ2VOZXdPcGVyYXRvclR5cGUvYmVmb3JlUHJpbWl0aXZlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjY1YjI5ZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY2hhbmdlTmV3T3BlcmF0b3JUeXBlL2JlZm9yZVByaW1pdGl2ZS5qYXZhCkBAIC0wLDAgKzEsNSBAQAorLy8gIkNoYW5nZSAnbmV3IFgoKScgdG8gJ25ldyBsb25nKCknIiAiZmFsc2UiCisKKyBjbGFzcyBYIHsKKyBwdWJsaWMgbG9uZyBmb28oKSB7IHJldHVybiA8Y2FyZXQ+bmV3IFgoKTsgfQorIH0KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY2hhbmdlUGFyYW1ldGVyQ2xhc3MvYWZ0ZXIxLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NoYW5nZVBhcmFtZXRlckNsYXNzL2FmdGVyMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZlNTcwM2EKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NoYW5nZVBhcmFtZXRlckNsYXNzL2FmdGVyMS5qYXZhCkBAIC0wLDAgKzEsMTEgQEAKKy8vICJNYWtlICdhJyBpbXBsZW1lbnQgJ2phdmEubGFuZy5SdW5uYWJsZSciICJ0cnVlIgorY2xhc3MgYSBpbXBsZW1lbnRzIFJ1bm5hYmxlIHsKKyAgICB2b2lkIGYoUnVubmFibGUgcikgeworICAgICAgICBmKHRoaXMpOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHJ1bigpIHsKKyAgICAgICAgPGNhcmV0PjxzZWxlY3Rpb24+Ly9UbyBjaGFuZ2UgYm9keSBvZiBpbXBsZW1lbnRlZCBtZXRob2RzIHVzZSBGaWxlIHwgU2V0dGluZ3MgfCBGaWxlIFRlbXBsYXRlcy48L3NlbGVjdGlvbj4KKyAgICB9Cit9CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY2hhbmdlUGFyYW1ldGVyQ2xhc3MvYWZ0ZXIyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NoYW5nZVBhcmFtZXRlckNsYXNzL2FmdGVyMi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU1YzIyNzMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NoYW5nZVBhcmFtZXRlckNsYXNzL2FmdGVyMi5qYXZhCkBAIC0wLDAgKzEsOSBAQAorPGNhcmV0Pi8vICJNYWtlICdhJyBleHRlbmQgJ2InIiAidHJ1ZSIKK2NsYXNzIGEgZXh0ZW5kcyBiIHsKKyAgICB2b2lkIGYoYiBiLCBSdW5uYWJsZSByKSB7CisgICAgICAgIGYodGhpcywgbnVsbCk7CisgICAgfQorfQorY2xhc3MgYiB7Cit9CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY2hhbmdlUGFyYW1ldGVyQ2xhc3MvYWZ0ZXI0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NoYW5nZVBhcmFtZXRlckNsYXNzL2FmdGVyNC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM3ODA4YTMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NoYW5nZVBhcmFtZXRlckNsYXNzL2FmdGVyNC5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKKy8vICJNYWtlICdiJyBleHRlbmQgJ2EnIiAidHJ1ZSIKK2NsYXNzIGEgeworICAgIHZvaWQgZihhIGEpIHsKKyAgICAgICAgYiBiID0gbnVsbDsKKyAgICAgICAgZihiKTsKKyAgICB9Cit9Cis8Y2FyZXQ+Y2xhc3MgYiBleHRlbmRzIGEgeworfQorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NoYW5nZVBhcmFtZXRlckNsYXNzL2FmdGVyNi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jaGFuZ2VQYXJhbWV0ZXJDbGFzcy9hZnRlcjYuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NmRhYTc0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jaGFuZ2VQYXJhbWV0ZXJDbGFzcy9hZnRlcjYuamF2YQpAQCAtMCwwICsxLDE0IEBACisvLyAiTWFrZSAnYScgaW1wbGVtZW50ICdiJyIgInRydWUiCitjbGFzcyBhIGltcGxlbWVudHMgYjxTdHJpbmc+IHsKKyAgICB2b2lkIGYoYjxTdHJpbmc+IHIpIHsKKyAgICAgICAgci5nKHRoaXMpOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIGcoYjxTdHJpbmc+IHQpIHsKKyAgICAgICAgPGNhcmV0PjxzZWxlY3Rpb24+Ly9UbyBjaGFuZ2UgYm9keSBvZiBpbXBsZW1lbnRlZCBtZXRob2RzIHVzZSBGaWxlIHwgU2V0dGluZ3MgfCBGaWxlIFRlbXBsYXRlcy48L3NlbGVjdGlvbj4KKyAgICB9Cit9CitpbnRlcmZhY2UgYjxUPiB7CisgIHZvaWQgZyhiPFQ+IHQpOworfQorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NoYW5nZVBhcmFtZXRlckNsYXNzL2FmdGVyQ29uc3RydWN0b3JQYXJhbS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jaGFuZ2VQYXJhbWV0ZXJDbGFzcy9hZnRlckNvbnN0cnVjdG9yUGFyYW0uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MTk0MjdkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jaGFuZ2VQYXJhbWV0ZXJDbGFzcy9hZnRlckNvbnN0cnVjdG9yUGFyYW0uamF2YQpAQCAtMCwwICsxLDkgQEAKKy8vICJNYWtlICdBJyBleHRlbmQgJ0InIiAidHJ1ZSIKK2NsYXNzIEIge30KKworY2xhc3MgQSBleHRlbmRzIEIgeworICAgIEEoQiBiKSB7CisgICAgfQorCisgICAgQSBhID0gbmV3IEEodGhpcyk7Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NoYW5nZVBhcmFtZXRlckNsYXNzL2FmdGVyUmV0dXJuLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NoYW5nZVBhcmFtZXRlckNsYXNzL2FmdGVyUmV0dXJuLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzllMDk3YQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY2hhbmdlUGFyYW1ldGVyQ2xhc3MvYWZ0ZXJSZXR1cm4uamF2YQpAQCAtMCwwICsxLDkgQEAKKy8vICJNYWtlICdGb28nIGltcGxlbWVudCAnRm9vLkJhciciICJ0cnVlIgorcHVibGljIGNsYXNzIEZvbyBpbXBsZW1lbnRzIEZvby5CYXIgeworCisgIHB1YmxpYyBCYXIgZ2V0QmFyKCkgeworICAgIHJldHVybiB0aGlzOworICB9CisKKyAgcHVibGljIGludGVyZmFjZSBCYXIge30KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NoYW5nZVBhcmFtZXRlckNsYXNzL2FmdGVyVmFyaWFibGVBc3NpZ25tZW50LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NoYW5nZVBhcmFtZXRlckNsYXNzL2FmdGVyVmFyaWFibGVBc3NpZ25tZW50LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDZhYzAyZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY2hhbmdlUGFyYW1ldGVyQ2xhc3MvYWZ0ZXJWYXJpYWJsZUFzc2lnbm1lbnQuamF2YQpAQCAtMCwwICsxLDkgQEAKKy8vICJNYWtlICdBJyBleHRlbmQgJ0InIiAidHJ1ZSIKK2NsYXNzIEIge30KKworY2xhc3MgQSBleHRlbmRzIEIgeworICAgIGludCBmb28oQiBiKSB7CisgICAgICAgIEIgYnogPSB0aGlzOworICAgICAgICByZXR1cm4gMTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NoYW5nZVBhcmFtZXRlckNsYXNzL2JlZm9yZTEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY2hhbmdlUGFyYW1ldGVyQ2xhc3MvYmVmb3JlMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNhMmMzNjgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NoYW5nZVBhcmFtZXRlckNsYXNzL2JlZm9yZTEuamF2YQpAQCAtMCwwICsxLDcgQEAKKy8vICJNYWtlICdhJyBpbXBsZW1lbnQgJ2phdmEubGFuZy5SdW5uYWJsZSciICJ0cnVlIgorY2xhc3MgYSB7CisgICAgdm9pZCBmKFJ1bm5hYmxlIHIpIHsKKyAgICAgICAgZig8Y2FyZXQ+dGhpcyk7CisgICAgfQorfQorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NoYW5nZVBhcmFtZXRlckNsYXNzL2JlZm9yZTIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY2hhbmdlUGFyYW1ldGVyQ2xhc3MvYmVmb3JlMi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRiODBjYTcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NoYW5nZVBhcmFtZXRlckNsYXNzL2JlZm9yZTIuamF2YQpAQCAtMCwwICsxLDkgQEAKKy8vICJNYWtlICdhJyBleHRlbmQgJ2InIiAidHJ1ZSIKK2NsYXNzIGEgeworICAgIHZvaWQgZihiIGIsIFJ1bm5hYmxlIHIpIHsKKyAgICAgICAgZig8Y2FyZXQ+dGhpcywgbnVsbCk7CisgICAgfQorfQorY2xhc3MgYiB7Cit9CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY2hhbmdlUGFyYW1ldGVyQ2xhc3MvYmVmb3JlMy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jaGFuZ2VQYXJhbWV0ZXJDbGFzcy9iZWZvcmUzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWVkZWFhYgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY2hhbmdlUGFyYW1ldGVyQ2xhc3MvYmVmb3JlMy5qYXZhCkBAIC0wLDAgKzEsOSBAQAorLy8gIk1ha2UgJ2EnIGV4dGVuZCAnYiciICJmYWxzZSIKK2NsYXNzIGEgZXh0ZW5kcyBPYmplY3QgeworICAgIHZvaWQgZihiIGIsIFJ1bm5hYmxlIHIpIHsKKyAgICAgICAgZig8Y2FyZXQ+dGhpcywgbnVsbCk7CisgICAgfQorfQorY2xhc3MgYiB7Cit9CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY2hhbmdlUGFyYW1ldGVyQ2xhc3MvYmVmb3JlNC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jaGFuZ2VQYXJhbWV0ZXJDbGFzcy9iZWZvcmU0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGIyNTZlOAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY2hhbmdlUGFyYW1ldGVyQ2xhc3MvYmVmb3JlNC5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKKy8vICJNYWtlICdiJyBleHRlbmQgJ2EnIiAidHJ1ZSIKK2NsYXNzIGEgeworICAgIHZvaWQgZihhIGEpIHsKKyAgICAgICAgYiBiID0gbnVsbDsKKyAgICAgICAgZig8Y2FyZXQ+Yik7CisgICAgfQorfQorY2xhc3MgYiB7Cit9CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY2hhbmdlUGFyYW1ldGVyQ2xhc3MvYmVmb3JlNS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jaGFuZ2VQYXJhbWV0ZXJDbGFzcy9iZWZvcmU1LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTg1M2NlYgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY2hhbmdlUGFyYW1ldGVyQ2xhc3MvYmVmb3JlNS5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKKy8vICJNYWtlICdiJyBleHRlbmQgJ2EnIiAiZmFsc2UiCitjbGFzcyBhIHsKKyAgICB2b2lkIGYoYSBhLCBiIGIpIHsKKyAgICAgICAgYiBiID0gbnVsbDsKKyAgICAgICAgZig8Y2FyZXQ+YiwgYik7CisgICAgfQorfQoraW50ZXJmYWNlIGIgeworfQorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NoYW5nZVBhcmFtZXRlckNsYXNzL2JlZm9yZTYuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY2hhbmdlUGFyYW1ldGVyQ2xhc3MvYmVmb3JlNi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNhYTc4NGQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NoYW5nZVBhcmFtZXRlckNsYXNzL2JlZm9yZTYuamF2YQpAQCAtMCwwICsxLDEwIEBACisvLyAiTWFrZSAnYScgaW1wbGVtZW50ICdiJyIgInRydWUiCitjbGFzcyBhIHsKKyAgICB2b2lkIGYoYjxTdHJpbmc+IHIpIHsKKyAgICAgICAgci5nKDxjYXJldD50aGlzKTsKKyAgICB9Cit9CitpbnRlcmZhY2UgYjxUPiB7CisgIHZvaWQgZyhiPFQ+IHQpOworfQorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NoYW5nZVBhcmFtZXRlckNsYXNzL2JlZm9yZUFub255bW91c0NsYXNzQXJndW1lbnQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY2hhbmdlUGFyYW1ldGVyQ2xhc3MvYmVmb3JlQW5vbnltb3VzQ2xhc3NBcmd1bWVudC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkyYTVjZjQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NoYW5nZVBhcmFtZXRlckNsYXNzL2JlZm9yZUFub255bW91c0NsYXNzQXJndW1lbnQuamF2YQpAQCAtMCwwICsxLDE0IEBACisvLyAiTWFrZSAnbnVsbCcgaW1wbGVtZW50ICdGb28uSUJhciciICJmYWxzZSIKKworcHVibGljIGFic3RyYWN0IGNsYXNzIEZvbyB7CisgIHN0YXRpYyBGb28gYW5vbnltb3VzID0gbmV3IEZvbygpIHsKKyAgICBAT3ZlcnJpZGUKKyAgICB2b2lkIGZvb01ldGhvZCgpIHsKKyAgICAgIGZvbzJNZXRob2QodGg8Y2FyZXQ+aXMpOworICAgIH0KKyAgfTsKKworICBwcm90ZWN0ZWQgRm9vKCkgeworICAgIElCYXIgYmFyID0gYW5vbnltb3U8Y2FyZXQ+czsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY2hhbmdlUGFyYW1ldGVyQ2xhc3MvYmVmb3JlQW5vbnltb3VzQ2xhc3NWYWx1ZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jaGFuZ2VQYXJhbWV0ZXJDbGFzcy9iZWZvcmVBbm9ueW1vdXNDbGFzc1ZhbHVlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDkzN2QxMQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY2hhbmdlUGFyYW1ldGVyQ2xhc3MvYmVmb3JlQW5vbnltb3VzQ2xhc3NWYWx1ZS5qYXZhCkBAIC0wLDAgKzEsMTkgQEAKKy8vICJNYWtlICdudWxsJyBpbXBsZW1lbnQgJ0Zvby5JQmFyJyIgImZhbHNlIgorCitwdWJsaWMgYWJzdHJhY3QgY2xhc3MgRm9vIHsKKyAgcHVibGljIHN0YXRpYyBpbnRlcmZhY2UgSUJhciB7CisgICAgdm9pZCBiYXJNZXRob2QoKTsKKyAgfQorCisgIGFic3RyYWN0IHZvaWQgZm9vTWV0aG9kKCk7CisKKyAgdm9pZCBmb28yTWV0aG9kKElCYXIgYikgeworICB9CisKKyAgc3RhdGljIEZvbyBhbm9ueW1vdXMgPSBuZXcgRm9vKCkgeworICAgIEBPdmVycmlkZQorICAgIHZvaWQgZm9vTWV0aG9kKCkgeworICAgICAgZm9vMk1ldGhvZCh0aDxjYXJldD5pcyk7CisgICAgfQorICB9OworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY2hhbmdlUGFyYW1ldGVyQ2xhc3MvYmVmb3JlQXNzaWdubWVudFRvSW5oZXJpdG9yLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NoYW5nZVBhcmFtZXRlckNsYXNzL2JlZm9yZUFzc2lnbm1lbnRUb0luaGVyaXRvci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcwY2M1N2UKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NoYW5nZVBhcmFtZXRlckNsYXNzL2JlZm9yZUFzc2lnbm1lbnRUb0luaGVyaXRvci5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKKy8vICJNYWtlICdGb28nIGltcGxlbWVudCAnRm9vLkJhciciICJmYWxzZSIKK3B1YmxpYyBjbGFzcyBGb28geworCisgIHB1YmxpYyB2b2lkIGdldEJhcigpIHsKKyAgICBCYXIgZiA9IG5ldyBGPGNhcmV0Pm9vKCk7CisgIH0KKworICBwdWJsaWMgY2xhc3MgQmFyIGV4dGVuZHMgRm9vIHsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY2hhbmdlUGFyYW1ldGVyQ2xhc3MvYmVmb3JlQ29uc3RydWN0b3JQYXJhbS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jaGFuZ2VQYXJhbWV0ZXJDbGFzcy9iZWZvcmVDb25zdHJ1Y3RvclBhcmFtLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODRmYzM5MAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY2hhbmdlUGFyYW1ldGVyQ2xhc3MvYmVmb3JlQ29uc3RydWN0b3JQYXJhbS5qYXZhCkBAIC0wLDAgKzEsOSBAQAorLy8gIk1ha2UgJ0EnIGV4dGVuZCAnQiciICJ0cnVlIgorY2xhc3MgQiB7fQorCitjbGFzcyBBIHsKKyAgICBBKEIgYikgeworICAgIH0KKworICAgIEEgYSA9IG5ldyBBKHRoPGNhcmV0PmlzKTsKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY2hhbmdlUGFyYW1ldGVyQ2xhc3MvYmVmb3JlRGlmZmVyZW50VHlwZUFyZ3MuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY2hhbmdlUGFyYW1ldGVyQ2xhc3MvYmVmb3JlRGlmZmVyZW50VHlwZUFyZ3MuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41OTlkMDg3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jaGFuZ2VQYXJhbWV0ZXJDbGFzcy9iZWZvcmVEaWZmZXJlbnRUeXBlQXJncy5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKKy8vICJNYWtlICdHZW5lcmljJyBleHRlbmQgJ0dlbmVyaWMnIiAiZmFsc2UiCitjbGFzcyBHZW5lcmljPEU+IHsKKyAgICBHZW5lcmljKEUgYXJnKSB7IH0KK30KKworY2xhc3MgVGVzdGVyIHsKKyAgICB2b2lkIG1ldGhvZCgpIHsKKyAgICAgICAgR2VuZXJpYzxJbnRlZ2VyPiBhSW50ZWdlckdlbmVyaWMgPSBuZXcgPGNhcmV0PkdlbmVyaWM8U3RyaW5nPigiIik7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jaGFuZ2VQYXJhbWV0ZXJDbGFzcy9iZWZvcmVSZXR1cm4uamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY2hhbmdlUGFyYW1ldGVyQ2xhc3MvYmVmb3JlUmV0dXJuLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmZmMWViMwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY2hhbmdlUGFyYW1ldGVyQ2xhc3MvYmVmb3JlUmV0dXJuLmphdmEKQEAgLTAsMCArMSw5IEBACisvLyAiTWFrZSAnRm9vJyBpbXBsZW1lbnQgJ0Zvby5CYXInIiAidHJ1ZSIKK3B1YmxpYyBjbGFzcyBGb28geworCisgIHB1YmxpYyBCYXIgZ2V0QmFyKCkgeworICAgIHJldHVybiB0PGNhcmV0PmhpczsKKyAgfQorCisgIHB1YmxpYyBpbnRlcmZhY2UgQmFyIHt9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jaGFuZ2VQYXJhbWV0ZXJDbGFzcy9iZWZvcmVWYXJpYWJsZUFzc2lnbm1lbnQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY2hhbmdlUGFyYW1ldGVyQ2xhc3MvYmVmb3JlVmFyaWFibGVBc3NpZ25tZW50LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjVhMzUyYgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY2hhbmdlUGFyYW1ldGVyQ2xhc3MvYmVmb3JlVmFyaWFibGVBc3NpZ25tZW50LmphdmEKQEAgLTAsMCArMSw5IEBACisvLyAiTWFrZSAnQScgZXh0ZW5kICdCJyIgInRydWUiCitjbGFzcyBCIHt9CisKK2NsYXNzIEEgeworICAgIGludCBmb28oQiBiKSB7CisgICAgICAgIEIgYnogPSB0PGNhcmV0PmhpczsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jaGFuZ2VUb0FwcGVuZC9hZnRlcjEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY2hhbmdlVG9BcHBlbmQvYWZ0ZXIxLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODZmNGQ0NWYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NoYW5nZVRvQXBwZW5kL2FmdGVyMS5qYXZhCkBAIC0wLDAgKzEsNiBAQAorLy8gIkNoYW5nZSB0byAnYXBwZW5kYWJsZS5hcHBlbmQoMSknIiAidHJ1ZSIKK2NsYXNzIFRlc3QgeworICB2b2lkIGFwcGVuZGFibGUoU3RyaW5nQnVpbGRlciBhcHBlbmRhYmxlKSB0aHJvd3MgSU9FeGNlcHRpb24geworICAgIGFwcGVuZGFibGUuYXBwZW5kKDEpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jaGFuZ2VUb0FwcGVuZC9hZnRlcjIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY2hhbmdlVG9BcHBlbmQvYWZ0ZXIyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDdlNWIyYgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY2hhbmdlVG9BcHBlbmQvYWZ0ZXIyLmphdmEKQEAgLTAsMCArMSw3IEBACisvLyAiQ2hhbmdlIHRvICdidWlsZGVyLmFwcGVuZCgxKzEpLmFwcGVuZChzKS5hcHBlbmQoIiAgIiknIiAidHJ1ZSIKK2NsYXNzIFRlc3QgeworICBTdHJpbmcgczsKKyAgdm9pZCBiYXIoU3RyaW5nQnVpbGRlciBidWlsZGVyKSB7CisgICAgYnVpbGRlci5hcHBlbmQoMSArIDEpLmFwcGVuZChzKS5hcHBlbmQoIiAgIik7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NoYW5nZVRvQXBwZW5kL2JlZm9yZTEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY2hhbmdlVG9BcHBlbmQvYmVmb3JlMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmExMGEyYmYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NoYW5nZVRvQXBwZW5kL2JlZm9yZTEuamF2YQpAQCAtMCwwICsxLDYgQEAKKy8vICJDaGFuZ2UgdG8gJ2FwcGVuZGFibGUuYXBwZW5kKDEpJyIgInRydWUiCitjbGFzcyBUZXN0IHsKKyAgdm9pZCBhcHBlbmRhYmxlKFN0cmluZ0J1aWxkZXIgYXBwZW5kYWJsZSkgdGhyb3dzIElPRXhjZXB0aW9uIHsKKyAgICBhcHBlbmRhYjxjYXJldD5sZSArPSAxOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jaGFuZ2VUb0FwcGVuZC9iZWZvcmUyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NoYW5nZVRvQXBwZW5kL2JlZm9yZTIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wOTMyYmU0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jaGFuZ2VUb0FwcGVuZC9iZWZvcmUyLmphdmEKQEAgLTAsMCArMSw3IEBACisvLyAiQ2hhbmdlIHRvICdidWlsZGVyLmFwcGVuZCgxKzEpLmFwcGVuZChzKS5hcHBlbmQoIiAgIiknIiAidHJ1ZSIKK2NsYXNzIFRlc3QgeworICBTdHJpbmcgczsKKyAgdm9pZCBiYXIoU3RyaW5nQnVpbGRlciBidWlsZGVyKSB7CisgICAgYnVpbDxjYXJldD5kZXIgKz0gMSArIDEgKyBzICsgIiAgIjsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY2hhbmdlVHlwZUFyZ3MvYWZ0ZXIxLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NoYW5nZVR5cGVBcmdzL2FmdGVyMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQzMGI2ODcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NoYW5nZVR5cGVBcmdzL2FmdGVyMS5qYXZhCkBAIC0wLDAgKzEsMTEgQEAKKy8vICJDaGFuZ2UgdHlwZSBhcmd1bWVudHMgdG8gPFN0cmluZz4iICJ0cnVlIgorY2xhc3MgR2VuZXJpYzxFPiB7CisgIEdlbmVyaWMoRSBhcmcpIHsKKyAgfQorfQorCitjbGFzcyBUZXN0ZXIgeworICB2b2lkIG1ldGhvZCgpIHsKKyAgICBuZXcgR2VuZXJpYzxTdHJpbmc+KCJoaSIpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jaGFuZ2VUeXBlQXJncy9hZnRlck11bHRpcGxlUGFyYW1zLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NoYW5nZVR5cGVBcmdzL2FmdGVyTXVsdGlwbGVQYXJhbXMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NWZmN2I2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jaGFuZ2VUeXBlQXJncy9hZnRlck11bHRpcGxlUGFyYW1zLmphdmEKQEAgLTAsMCArMSwxMSBAQAorLy8gIkNoYW5nZSB0eXBlIGFyZ3VtZW50cyB0byA8U3RyaW5nLCBJbnRlZ2VyPiIgInRydWUiCitjbGFzcyBHZW5lcmljPEUsIEs+IHsKKyAgR2VuZXJpYyhFIGFyZywgSyBhcmcxKSB7CisgIH0KK30KKworY2xhc3MgVGVzdGVyIHsKKyAgdm9pZCBtZXRob2QoKSB7CisgICAgbmV3IEdlbmVyaWM8U3RyaW5nLCBJbnRlZ2VyPigiaGkiLCAxKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY2hhbmdlVHlwZUFyZ3MvYWZ0ZXJTdXBlclR5cGUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY2hhbmdlVHlwZUFyZ3MvYWZ0ZXJTdXBlclR5cGUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMzc3MDhlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jaGFuZ2VUeXBlQXJncy9hZnRlclN1cGVyVHlwZS5qYXZhCkBAIC0wLDAgKzEsMTMgQEAKK2ltcG9ydCBqYXZhLmlvLlNlcmlhbGl6YWJsZTsKKworLy8gIkNoYW5nZSB0eXBlIGFyZ3VtZW50cyB0byA8U2VyaWFsaXphYmxlPiIgInRydWUiCitjbGFzcyBHZW5lcmljPEU+IHsKKyAgR2VuZXJpYyhFIGFyZywgRSBhcmcxKSB7CisgIH0KK30KKworY2xhc3MgVGVzdGVyIHsKKyAgdm9pZCBtZXRob2QoKSB7CisgICAgbmV3IEdlbmVyaWM8U2VyaWFsaXphYmxlPigiaGkiLCAxKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY2hhbmdlVHlwZUFyZ3MvYmVmb3JlMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jaGFuZ2VUeXBlQXJncy9iZWZvcmUxLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGQ2NjBiOAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY2hhbmdlVHlwZUFyZ3MvYmVmb3JlMS5qYXZhCkBAIC0wLDAgKzEsMTEgQEAKKy8vICJDaGFuZ2UgdHlwZSBhcmd1bWVudHMgdG8gPFN0cmluZz4iICJ0cnVlIgorY2xhc3MgR2VuZXJpYzxFPiB7CisgIEdlbmVyaWMoRSBhcmcpIHsKKyAgfQorfQorCitjbGFzcyBUZXN0ZXIgeworICB2b2lkIG1ldGhvZCgpIHsKKyAgICBuZXcgR2VuZXJpYzxJbnRlZ2VyPig8Y2FyZXQ+ImhpIik7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NoYW5nZVR5cGVBcmdzL2JlZm9yZUNvcnJlY3RUeXBlUGFyYW0uamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY2hhbmdlVHlwZUFyZ3MvYmVmb3JlQ29ycmVjdFR5cGVQYXJhbS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNkM2MyMjMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NoYW5nZVR5cGVBcmdzL2JlZm9yZUNvcnJlY3RUeXBlUGFyYW0uamF2YQpAQCAtMCwwICsxLDExIEBACisvLyAiQ2hhbmdlIHR5cGUgYXJndW1lbnRzIHRvIDxTdHJpbmc+IiAiZmFsc2UiCitjbGFzcyBHZW5lcmljPEU+IHsKKyAgR2VuZXJpYyhFIGFyZywgaW50IGkpIHsKKyAgfQorfQorCitjbGFzcyBUZXN0ZXIgeworICB2b2lkIG1ldGhvZCgpIHsKKyAgICBuZXcgR2VuZXJpYzxTdHJpbmc+KDxjYXJldD4iaGkiLCAiIik7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NoYW5nZVR5cGVBcmdzL2JlZm9yZURpc2FibGVkLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NoYW5nZVR5cGVBcmdzL2JlZm9yZURpc2FibGVkLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjg2OTQ4NgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY2hhbmdlVHlwZUFyZ3MvYmVmb3JlRGlzYWJsZWQuamF2YQpAQCAtMCwwICsxLDEzIEBACisvLyAiQ2hhbmdlIHR5cGUgYXJndW1lbnRzIHRvIDxTdHJpbmc+IiAiZmFsc2UiCitpbXBvcnQgamF2YS51dGlsLkxpc3Q7CisKK2NsYXNzIEdlbmVyaWM8RT4geworICBHZW5lcmljKEUgYXJnLCBMaXN0PEU+IGFyZzEpIHsKKyAgfQorfQorCitjbGFzcyBUZXN0ZXIgeworICB2b2lkIG1ldGhvZCgpIHsKKyAgICBuZXcgR2VuZXJpYzxJbnRlZ2VyPig8Y2FyZXQ+ImhpIiwgImhpIik7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NoYW5nZVR5cGVBcmdzL2JlZm9yZUluY29tcGxldGUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY2hhbmdlVHlwZUFyZ3MvYmVmb3JlSW5jb21wbGV0ZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI2YjViMDQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NoYW5nZVR5cGVBcmdzL2JlZm9yZUluY29tcGxldGUuamF2YQpAQCAtMCwwICsxLDExIEBACisvLyAiQ2hhbmdlIHR5cGUgYXJndW1lbnRzIHRvIDxTdHJpbmc+IiAiZmFsc2UiCitjbGFzcyBHZW5lcmljPEU+IHsKKyAgR2VuZXJpYyhFIGFyZykgeworICB9Cit9CisKK2NsYXNzIFRlc3RlciB7CisgIHZvaWQgbWV0aG9kKCkgeworICAgIG5ldyBHZW5lcmljPEludGVnZXI+KDxjYXJldD4iaGkiCisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NoYW5nZVR5cGVBcmdzL2JlZm9yZUluY29tcGxldGUyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NoYW5nZVR5cGVBcmdzL2JlZm9yZUluY29tcGxldGUyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWIxZGVmMwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY2hhbmdlVHlwZUFyZ3MvYmVmb3JlSW5jb21wbGV0ZTIuamF2YQpAQCAtMCwwICsxLDExIEBACisvLyAiQ2hhbmdlIHR5cGUgYXJndW1lbnRzIHRvIDxTdHJpbmc+IiAiZmFsc2UiCitjbGFzcyBHZW5lcmljPEU+IHsKKyAgR2VuZXJpYyhFIGFyZywgaW50IGkpIHsKKyAgfQorfQorCitjbGFzcyBUZXN0ZXIgeworICB2b2lkIG1ldGhvZCgpIHsKKyAgICBuZXcgR2VuZXJpYzxJbnRlZ2VyPig8Y2FyZXQ+ImhpIik7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NoYW5nZVR5cGVBcmdzL2JlZm9yZU11bHRpcGxlUGFyYW1zLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NoYW5nZVR5cGVBcmdzL2JlZm9yZU11bHRpcGxlUGFyYW1zLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODk2Njg2YgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY2hhbmdlVHlwZUFyZ3MvYmVmb3JlTXVsdGlwbGVQYXJhbXMuamF2YQpAQCAtMCwwICsxLDExIEBACisvLyAiQ2hhbmdlIHR5cGUgYXJndW1lbnRzIHRvIDxTdHJpbmcsIEludGVnZXI+IiAidHJ1ZSIKK2NsYXNzIEdlbmVyaWM8RSwgSz4geworICBHZW5lcmljKEUgYXJnLCBLIGFyZzEpIHsKKyAgfQorfQorCitjbGFzcyBUZXN0ZXIgeworICB2b2lkIG1ldGhvZCgpIHsKKyAgICBuZXcgR2VuZXJpYzxJbnRlZ2VyLCBJbnRlZ2VyPig8Y2FyZXQ+ImhpIiwgMSk7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NoYW5nZVR5cGVBcmdzL2JlZm9yZVN1cGVyVHlwZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jaGFuZ2VUeXBlQXJncy9iZWZvcmVTdXBlclR5cGUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYjY1ODA3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jaGFuZ2VUeXBlQXJncy9iZWZvcmVTdXBlclR5cGUuamF2YQpAQCAtMCwwICsxLDExIEBACisvLyAiQ2hhbmdlIHR5cGUgYXJndW1lbnRzIHRvIDxTZXJpYWxpemFibGU+IiAidHJ1ZSIKK2NsYXNzIEdlbmVyaWM8RT4geworICBHZW5lcmljKEUgYXJnLCBFIGFyZzEpIHsKKyAgfQorfQorCitjbGFzcyBUZXN0ZXIgeworICB2b2lkIG1ldGhvZCgpIHsKKyAgICBuZXcgR2VuZXJpYzxJbnRlZ2VyPig8Y2FyZXQ+ImhpIiwgMSk7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NvbnZlcnRDb2xvclJlcHJlc2VudGF0aW9uL2FmdGVyMkJ5dGVzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NvbnZlcnRDb2xvclJlcHJlc2VudGF0aW9uL2FmdGVyMkJ5dGVzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTI0MTJkMgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY29udmVydENvbG9yUmVwcmVzZW50YXRpb24vYWZ0ZXIyQnl0ZXMuamF2YQpAQCAtMCwwICsxLDIxIEBACisvLyAiQ29udmVydCB0byAnbmV3IENvbG9yKDB4MTAxMDEpJyIgInRydWUiCisKK3BhY2thZ2UgamF2YS5hd3Q7CisKK2NsYXNzIEEgeworICBwcml2YXRlIENvbG9yIGNvbG9yID0gbmV3IENvbG9yKDB4MTAxMDEpOworfQorCitjbGFzcyBDb2xvciB7CisgIENvbG9yKGludCByLCBpbnQgZywgaW50IGIpIHsKKyAgfQorCisgIENvbG9yKGludCByLCBpbnQgZywgaW50IGIsIGludCBhKSB7CisgIH0KKworICBDb2xvcihpbnQgcmdiKSB7CisgIH0KKworICBDb2xvcihpbnQgcmdiYSwgYm9vbGVhbiBoYXNBbHBoYSkgeworICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NvbnZlcnRDb2xvclJlcHJlc2VudGF0aW9uL2FmdGVySGV4MlJnYi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jb252ZXJ0Q29sb3JSZXByZXNlbnRhdGlvbi9hZnRlckhleDJSZ2IuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xOGY3NzE0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jb252ZXJ0Q29sb3JSZXByZXNlbnRhdGlvbi9hZnRlckhleDJSZ2IuamF2YQpAQCAtMCwwICsxLDIxIEBACisvLyAiQ29udmVydCB0byAnbmV3IENvbG9yKDM3LCAxMDAsIDEyMCknIiAidHJ1ZSIKKworcGFja2FnZSBqYXZhLmF3dDsKKworcHVibGljIGNsYXNzIEEgeworICBwcml2YXRlIENvbG9yIGNvbG9yID0gbmV3IENvbG9yKDM3LCAxMDAsIDEyMCk7Cit9CisKK2NsYXNzIENvbG9yIHsKKyAgQ29sb3IoaW50IHIsIGludCBnLCBpbnQgYikgeworICB9CisKKyAgQ29sb3IoaW50IHIsIGludCBnLCBpbnQgYiwgaW50IGEpIHsKKyAgfQorCisgIENvbG9yKGludCByZ2IpIHsKKyAgfQorCisgIENvbG9yKGludCByZ2JhLCBib29sZWFuIGhhc0FscGhhKSB7CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY29udmVydENvbG9yUmVwcmVzZW50YXRpb24vYWZ0ZXJIZXhBMlJnYmEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY29udmVydENvbG9yUmVwcmVzZW50YXRpb24vYWZ0ZXJIZXhBMlJnYmEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MDE3MWI4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jb252ZXJ0Q29sb3JSZXByZXNlbnRhdGlvbi9hZnRlckhleEEyUmdiYS5qYXZhCkBAIC0wLDAgKzEsMjEgQEAKKy8vICJDb252ZXJ0IHRvICduZXcgQ29sb3IoMzcsIDEwMCwgMTIwLCAxNDApJyIgInRydWUiCisKK3BhY2thZ2UgamF2YS5hd3Q7CisKK2NsYXNzIEEgeworICBwcml2YXRlIENvbG9yIGNvbG9yID0gbmV3IENvbG9yKDM3LCAxMDAsIDEyMCwgMTQwKTsKK30KKworY2xhc3MgQ29sb3IgeworICBDb2xvcihpbnQgciwgaW50IGcsIGludCBiKSB7CisgIH0KKworICBDb2xvcihpbnQgciwgaW50IGcsIGludCBiLCBpbnQgYSkgeworICB9CisKKyAgQ29sb3IoaW50IHJnYikgeworICB9CisKKyAgQ29sb3IoaW50IHJnYmEsIGJvb2xlYW4gaGFzQWxwaGEpIHsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jb252ZXJ0Q29sb3JSZXByZXNlbnRhdGlvbi9hZnRlclJnYjJIZXguamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY29udmVydENvbG9yUmVwcmVzZW50YXRpb24vYWZ0ZXJSZ2IySGV4LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzQ2OTgwYQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY29udmVydENvbG9yUmVwcmVzZW50YXRpb24vYWZ0ZXJSZ2IySGV4LmphdmEKQEAgLTAsMCArMSwyMSBAQAorLy8gIkNvbnZlcnQgdG8gJ25ldyBDb2xvcigweDI1NjQ3OCknIiAidHJ1ZSIKKworcGFja2FnZSBqYXZhLmF3dDsKKworY2xhc3MgQSB7CisgIHByaXZhdGUgQ29sb3IgY29sb3IgPSBuZXcgQ29sb3IoMHgyNTY0NzgpOworfQorCitjbGFzcyBDb2xvciB7CisgIENvbG9yKGludCByLCBpbnQgZywgaW50IGIpIHsKKyAgfQorCisgIENvbG9yKGludCByLCBpbnQgZywgaW50IGIsIGludCBhKSB7CisgIH0KKworICBDb2xvcihpbnQgcmdiKSB7CisgIH0KKworICBDb2xvcihpbnQgcmdiYSwgYm9vbGVhbiBoYXNBbHBoYSkgeworICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NvbnZlcnRDb2xvclJlcHJlc2VudGF0aW9uL2FmdGVyUmdiYTJIZXguamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY29udmVydENvbG9yUmVwcmVzZW50YXRpb24vYWZ0ZXJSZ2JhMkhleC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ4OGY5NDAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NvbnZlcnRDb2xvclJlcHJlc2VudGF0aW9uL2FmdGVyUmdiYTJIZXguamF2YQpAQCAtMCwwICsxLDIxIEBACisvLyAiQ29udmVydCB0byAnbmV3IENvbG9yKDB4MjU2NDc4OGMsdHJ1ZSknIiAidHJ1ZSIKKworcGFja2FnZSBqYXZhLmF3dDsKKworY2xhc3MgQSB7CisgIHByaXZhdGUgQ29sb3IgY29sb3IgPSBuZXcgQ29sb3IoMHgyNTY0Nzg4YywgdHJ1ZSk7Cit9CisKK2NsYXNzIENvbG9yIHsKKyAgQ29sb3IoaW50IHIsIGludCBnLCBpbnQgYikgeworICB9CisKKyAgQ29sb3IoaW50IHIsIGludCBnLCBpbnQgYiwgaW50IGEpIHsKKyAgfQorCisgIENvbG9yKGludCByZ2IpIHsKKyAgfQorCisgIENvbG9yKGludCByZ2JhLCBib29sZWFuIGhhc0FscGhhKSB7CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY29udmVydENvbG9yUmVwcmVzZW50YXRpb24vYmVmb3JlMkJ5dGVzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NvbnZlcnRDb2xvclJlcHJlc2VudGF0aW9uL2JlZm9yZTJCeXRlcy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgzOTZjYmEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NvbnZlcnRDb2xvclJlcHJlc2VudGF0aW9uL2JlZm9yZTJCeXRlcy5qYXZhCkBAIC0wLDAgKzEsMjEgQEAKKy8vICJDb252ZXJ0IHRvICduZXcgQ29sb3IoMHgxMDEwMSknIiAidHJ1ZSIKKworcGFja2FnZSBqYXZhLmF3dDsKKworY2xhc3MgQSB7CisgIHByaXZhdGUgQ29sb3IgY29sb3IgPSBuZXcgQ29sb3IoMjU3LCAyNTcsPGNhcmV0PiAyNTcpOworfQorCitjbGFzcyBDb2xvciB7CisgIENvbG9yKGludCByLCBpbnQgZywgaW50IGIpIHsKKyAgfQorCisgIENvbG9yKGludCByLCBpbnQgZywgaW50IGIsIGludCBhKSB7CisgIH0KKworICBDb2xvcihpbnQgcmdiKSB7CisgIH0KKworICBDb2xvcihpbnQgcmdiYSwgYm9vbGVhbiBoYXNBbHBoYSkgeworICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NvbnZlcnRDb2xvclJlcHJlc2VudGF0aW9uL2JlZm9yZUhleDJSZ2IuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY29udmVydENvbG9yUmVwcmVzZW50YXRpb24vYmVmb3JlSGV4MlJnYi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY2NjM5NGUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NvbnZlcnRDb2xvclJlcHJlc2VudGF0aW9uL2JlZm9yZUhleDJSZ2IuamF2YQpAQCAtMCwwICsxLDIxIEBACisvLyAiQ29udmVydCB0byAnbmV3IENvbG9yKDM3LCAxMDAsIDEyMCknIiAidHJ1ZSIKKworcGFja2FnZSBqYXZhLmF3dDsKKworcHVibGljIGNsYXNzIEEgeworICBwcml2YXRlIENvbG9yIGNvbG9yID0gbmV3IENvbG9yKDB4MjU8Y2FyZXQ+NjQ3OCk7Cit9CisKK2NsYXNzIENvbG9yIHsKKyAgQ29sb3IoaW50IHIsIGludCBnLCBpbnQgYikgeworICB9CisKKyAgQ29sb3IoaW50IHIsIGludCBnLCBpbnQgYiwgaW50IGEpIHsKKyAgfQorCisgIENvbG9yKGludCByZ2IpIHsKKyAgfQorCisgIENvbG9yKGludCByZ2JhLCBib29sZWFuIGhhc0FscGhhKSB7CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY29udmVydENvbG9yUmVwcmVzZW50YXRpb24vYmVmb3JlSGV4QTJSZ2JhLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NvbnZlcnRDb2xvclJlcHJlc2VudGF0aW9uL2JlZm9yZUhleEEyUmdiYS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM5NzYyY2QKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NvbnZlcnRDb2xvclJlcHJlc2VudGF0aW9uL2JlZm9yZUhleEEyUmdiYS5qYXZhCkBAIC0wLDAgKzEsMjEgQEAKKy8vICJDb252ZXJ0IHRvICduZXcgQ29sb3IoMzcsIDEwMCwgMTIwLCAxNDApJyIgInRydWUiCisKK3BhY2thZ2UgamF2YS5hd3Q7CisKK2NsYXNzIEEgeworICBwcml2YXRlIENvbG9yIGNvbG9yID0gbmV3IENvbG9yKDB4MjU2NDc8Y2FyZXQ+ODhjLCB0cnVlKTsKK30KKworY2xhc3MgQ29sb3IgeworICBDb2xvcihpbnQgciwgaW50IGcsIGludCBiKSB7CisgIH0KKworICBDb2xvcihpbnQgciwgaW50IGcsIGludCBiLCBpbnQgYSkgeworICB9CisKKyAgQ29sb3IoaW50IHJnYikgeworICB9CisKKyAgQ29sb3IoaW50IHJnYmEsIGJvb2xlYW4gaGFzQWxwaGEpIHsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jb252ZXJ0Q29sb3JSZXByZXNlbnRhdGlvbi9iZWZvcmVSZ2IySGV4LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NvbnZlcnRDb2xvclJlcHJlc2VudGF0aW9uL2JlZm9yZVJnYjJIZXguamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMGY2YmMxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jb252ZXJ0Q29sb3JSZXByZXNlbnRhdGlvbi9iZWZvcmVSZ2IySGV4LmphdmEKQEAgLTAsMCArMSwyMSBAQAorLy8gIkNvbnZlcnQgdG8gJ25ldyBDb2xvcigweDI1NjQ3OCknIiAidHJ1ZSIKKworcGFja2FnZSBqYXZhLmF3dDsKKworY2xhc3MgQSB7CisgIHByaXZhdGUgQ29sb3IgY29sb3IgPSBuZXcgQ29sb3IoMzcsIDEwMCw8Y2FyZXQ+IDEyMCk7Cit9CisKK2NsYXNzIENvbG9yIHsKKyAgQ29sb3IoaW50IHIsIGludCBnLCBpbnQgYikgeworICB9CisKKyAgQ29sb3IoaW50IHIsIGludCBnLCBpbnQgYiwgaW50IGEpIHsKKyAgfQorCisgIENvbG9yKGludCByZ2IpIHsKKyAgfQorCisgIENvbG9yKGludCByZ2JhLCBib29sZWFuIGhhc0FscGhhKSB7CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY29udmVydENvbG9yUmVwcmVzZW50YXRpb24vYmVmb3JlUmdiYTJIZXguamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY29udmVydENvbG9yUmVwcmVzZW50YXRpb24vYmVmb3JlUmdiYTJIZXguamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZmUxMjU1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jb252ZXJ0Q29sb3JSZXByZXNlbnRhdGlvbi9iZWZvcmVSZ2JhMkhleC5qYXZhCkBAIC0wLDAgKzEsMjEgQEAKKy8vICJDb252ZXJ0IHRvICduZXcgQ29sb3IoMHgyNTY0Nzg4Yyx0cnVlKSciICJ0cnVlIgorCitwYWNrYWdlIGphdmEuYXd0OworCitjbGFzcyBBIHsKKyAgcHJpdmF0ZSBDb2xvciBjb2xvciA9IG5ldyBDb2xvcigzNywgMTAwLDxjYXJldD4gMTIwLCAxNDApOworfQorCitjbGFzcyBDb2xvciB7CisgIENvbG9yKGludCByLCBpbnQgZywgaW50IGIpIHsKKyAgfQorCisgIENvbG9yKGludCByLCBpbnQgZywgaW50IGIsIGludCBhKSB7CisgIH0KKworICBDb2xvcihpbnQgcmdiKSB7CisgIH0KKworICBDb2xvcihpbnQgcmdiYSwgYm9vbGVhbiBoYXNBbHBoYSkgeworICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NvbnZlcnREb3VibGVUb0Zsb2F0L2FmdGVyMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jb252ZXJ0RG91YmxlVG9GbG9hdC9hZnRlcjEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNTBiZDEyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jb252ZXJ0RG91YmxlVG9GbG9hdC9hZnRlcjEuamF2YQpAQCAtMCwwICsxLDcgQEAKKy8vICJDb252ZXJ0ICcxZTEnIHRvIGZsb2F0IiAidHJ1ZSIKK2NsYXNzIFRlc3QgeworICB2b2lkIGJhcigpIHsKKyAgICBmb28oMWUxZik7CisgIH0KKyAgdm9pZCBmb28oZmxvYXQgZil7fQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jb252ZXJ0RG91YmxlVG9GbG9hdC9hZnRlcjIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY29udmVydERvdWJsZVRvRmxvYXQvYWZ0ZXIyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTljZGZkZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY29udmVydERvdWJsZVRvRmxvYXQvYWZ0ZXIyLmphdmEKQEAgLTAsMCArMSw3IEBACisvLyAiQ29udmVydCAnMi4nIHRvIGZsb2F0IiAidHJ1ZSIKK2NsYXNzIFRlc3QgeworICB2b2lkIGJhcigpIHsKKyAgICBmb28oMi5mKTsKKyAgfQorICB2b2lkIGZvbyhmbG9hdCBmKXt9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NvbnZlcnREb3VibGVUb0Zsb2F0L2FmdGVyMy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jb252ZXJ0RG91YmxlVG9GbG9hdC9hZnRlcjMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MjcyZjQxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jb252ZXJ0RG91YmxlVG9GbG9hdC9hZnRlcjMuamF2YQpAQCAtMCwwICsxLDcgQEAKKy8vICJDb252ZXJ0ICcuMycgdG8gZmxvYXQiICJ0cnVlIgorY2xhc3MgVGVzdCB7CisgIHZvaWQgYmFyKCkgeworICAgIGZvbyguM2YpOworICB9CisgIHZvaWQgZm9vKGZsb2F0IGYpe30KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY29udmVydERvdWJsZVRvRmxvYXQvYWZ0ZXI0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NvbnZlcnREb3VibGVUb0Zsb2F0L2FmdGVyNC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlkMzk5M2YKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NvbnZlcnREb3VibGVUb0Zsb2F0L2FmdGVyNC5qYXZhCkBAIC0wLDAgKzEsNyBAQAorLy8gIkNvbnZlcnQgJzAuMCcgdG8gZmxvYXQiICJ0cnVlIgorY2xhc3MgVGVzdCB7CisgIHZvaWQgYmFyKCkgeworICAgIGZvbygwLjBmKTsKKyAgfQorICB2b2lkIGZvbyhmbG9hdCBmKXt9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NvbnZlcnREb3VibGVUb0Zsb2F0L2FmdGVyNS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jb252ZXJ0RG91YmxlVG9GbG9hdC9hZnRlcjUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZTcwY2Y0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jb252ZXJ0RG91YmxlVG9GbG9hdC9hZnRlcjUuamF2YQpAQCAtMCwwICsxLDcgQEAKKy8vICJDb252ZXJ0ICczLjE0JyB0byBmbG9hdCIgInRydWUiCitjbGFzcyBUZXN0IHsKKyAgdm9pZCBiYXIoKSB7CisgICAgZm9vKDMuMTRmKTsKKyAgfQorICB2b2lkIGZvbyhmbG9hdCBmKXt9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NvbnZlcnREb3VibGVUb0Zsb2F0L2FmdGVyNi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jb252ZXJ0RG91YmxlVG9GbG9hdC9hZnRlcjYuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MjMxMGZhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jb252ZXJ0RG91YmxlVG9GbG9hdC9hZnRlcjYuamF2YQpAQCAtMCwwICsxLDcgQEAKKy8vICJDb252ZXJ0ICcxZS05ZCcgdG8gZmxvYXQiICJ0cnVlIgorY2xhc3MgVGVzdCB7CisgIHZvaWQgYmFyKCkgeworICAgIGZvbygxZS05Zik7CisgIH0KKyAgdm9pZCBmb28oZmxvYXQgZil7fQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jb252ZXJ0RG91YmxlVG9GbG9hdC9iZWZvcmUxLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NvbnZlcnREb3VibGVUb0Zsb2F0L2JlZm9yZTEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNDc2Yjc3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jb252ZXJ0RG91YmxlVG9GbG9hdC9iZWZvcmUxLmphdmEKQEAgLTAsMCArMSw3IEBACisvLyAiQ29udmVydCAnMWUxJyB0byBmbG9hdCIgInRydWUiCitjbGFzcyBUZXN0IHsKKyAgdm9pZCBiYXIoKSB7CisgICAgZm9vKDFlPGNhcmV0PjEpOworICB9CisgIHZvaWQgZm9vKGZsb2F0IGYpe30KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY29udmVydERvdWJsZVRvRmxvYXQvYmVmb3JlMi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jb252ZXJ0RG91YmxlVG9GbG9hdC9iZWZvcmUyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmE2N2FhOAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY29udmVydERvdWJsZVRvRmxvYXQvYmVmb3JlMi5qYXZhCkBAIC0wLDAgKzEsNyBAQAorLy8gIkNvbnZlcnQgJzIuJyB0byBmbG9hdCIgInRydWUiCitjbGFzcyBUZXN0IHsKKyAgdm9pZCBiYXIoKSB7CisgICAgZm9vKDI8Y2FyZXQ+Lik7CisgIH0KKyAgdm9pZCBmb28oZmxvYXQgZil7fQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jb252ZXJ0RG91YmxlVG9GbG9hdC9iZWZvcmUzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NvbnZlcnREb3VibGVUb0Zsb2F0L2JlZm9yZTMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZjZmYjA3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jb252ZXJ0RG91YmxlVG9GbG9hdC9iZWZvcmUzLmphdmEKQEAgLTAsMCArMSw3IEBACisvLyAiQ29udmVydCAnLjMnIHRvIGZsb2F0IiAidHJ1ZSIKK2NsYXNzIFRlc3QgeworICB2b2lkIGJhcigpIHsKKyAgICBmb28oLjxjYXJldD4zKTsKKyAgfQorICB2b2lkIGZvbyhmbG9hdCBmKXt9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NvbnZlcnREb3VibGVUb0Zsb2F0L2JlZm9yZTQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY29udmVydERvdWJsZVRvRmxvYXQvYmVmb3JlNC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkyY2I1OWQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NvbnZlcnREb3VibGVUb0Zsb2F0L2JlZm9yZTQuamF2YQpAQCAtMCwwICsxLDcgQEAKKy8vICJDb252ZXJ0ICcwLjAnIHRvIGZsb2F0IiAidHJ1ZSIKK2NsYXNzIFRlc3QgeworICB2b2lkIGJhcigpIHsKKyAgICBmb28oMDxjYXJldD4uMCk7CisgIH0KKyAgdm9pZCBmb28oZmxvYXQgZil7fQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jb252ZXJ0RG91YmxlVG9GbG9hdC9iZWZvcmU1LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NvbnZlcnREb3VibGVUb0Zsb2F0L2JlZm9yZTUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NTQxZWM1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jb252ZXJ0RG91YmxlVG9GbG9hdC9iZWZvcmU1LmphdmEKQEAgLTAsMCArMSw3IEBACisvLyAiQ29udmVydCAnMy4xNCcgdG8gZmxvYXQiICJ0cnVlIgorY2xhc3MgVGVzdCB7CisgIHZvaWQgYmFyKCkgeworICAgIGZvbygzPGNhcmV0Pi4xNCk7CisgIH0KKyAgdm9pZCBmb28oZmxvYXQgZil7fQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jb252ZXJ0RG91YmxlVG9GbG9hdC9iZWZvcmU2LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NvbnZlcnREb3VibGVUb0Zsb2F0L2JlZm9yZTYuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NGM2MDQ5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jb252ZXJ0RG91YmxlVG9GbG9hdC9iZWZvcmU2LmphdmEKQEAgLTAsMCArMSw3IEBACisvLyAiQ29udmVydCAnMWUtOWQnIHRvIGZsb2F0IiAidHJ1ZSIKK2NsYXNzIFRlc3QgeworICB2b2lkIGJhcigpIHsKKyAgICBmb28oMWUtOTxjYXJldD5kKTsKKyAgfQorICB2b2lkIGZvbyhmbG9hdCBmKXt9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NvbnZlcnREb3VibGVUb0Zsb2F0L2JlZm9yZTcuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY29udmVydERvdWJsZVRvRmxvYXQvYmVmb3JlNy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZlOTM4OTIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NvbnZlcnREb3VibGVUb0Zsb2F0L2JlZm9yZTcuamF2YQpAQCAtMCwwICsxLDcgQEAKKy8vICJDb252ZXJ0ICcxZTEzNycgdG8gZmxvYXQiICJmYWxzZSIKK2NsYXNzIFRlc3QgeworICB2b2lkIGJhcigpIHsKKyAgICBmb28oMWUxPGNhcmV0PjM3KTsKKyAgfQorICB2b2lkIGZvbyhmbG9hdCBmKXt9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NvbnZlcnRTd2l0Y2hUb0lmL2FmdGVyMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jb252ZXJ0U3dpdGNoVG9JZi9hZnRlcjEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMzI4MjIyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jb252ZXJ0U3dpdGNoVG9JZi9hZnRlcjEuamF2YQpAQCAtMCwwICsxLDggQEAKKy8vICJSZXBsYWNlICdzd2l0Y2gnIHdpdGggJ2lmJyIgInRydWUiCitjbGFzcyBUZXN0IHsKKyAgdm9pZCBmb28oZmxvYXQgZikgeworICAgICAgaWYgKGYgPT0gMCkgeworICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihmKTsKKyAgICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY29udmVydFN3aXRjaFRvSWYvYmVmb3JlMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jb252ZXJ0U3dpdGNoVG9JZi9iZWZvcmUxLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTZkMGJlMQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY29udmVydFN3aXRjaFRvSWYvYmVmb3JlMS5qYXZhCkBAIC0wLDAgKzEsOSBAQAorLy8gIlJlcGxhY2UgJ3N3aXRjaCcgd2l0aCAnaWYnIiAidHJ1ZSIKK2NsYXNzIFRlc3QgeworICB2b2lkIGZvbyhmbG9hdCBmKSB7CisgICAgc3dpdGNoIChmPGNhcmV0PikgeworICAgICAgY2FzZSAwOgorICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oZik7CisgICAgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jb252ZXJ0U3dpdGNoVG9JZi9iZWZvcmUyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NvbnZlcnRTd2l0Y2hUb0lmL2JlZm9yZTIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lOTRlM2ZkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jb252ZXJ0U3dpdGNoVG9JZi9iZWZvcmUyLmphdmEKQEAgLTAsMCArMSw3IEBACisvLyAiUmVwbGFjZSAnc3dpdGNoJyB3aXRoICdpZiciICJmYWxzZSIKK2NsYXNzIFRlc3QgeworICB2b2lkIGZvbyhmbG9hdCBmKSB7CisgICAgc3dpdGNoIChmPGNhcmV0PikgeworICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY29udmVydFN3aXRjaFRvSWYvYmVmb3JlMy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jb252ZXJ0U3dpdGNoVG9JZi9iZWZvcmUzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmI3MDE0MAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY29udmVydFN3aXRjaFRvSWYvYmVmb3JlMy5qYXZhCkBAIC0wLDAgKzEsOCBAQAorLy8gIlJlcGxhY2UgJ3N3aXRjaCcgd2l0aCAnaWYnIiAiZmFsc2UiCitjbGFzcyBUZXN0IHsKKyAgdm9pZCBmb28oZmxvYXQgZikgeworICAgIHN3aXRjaCAoZjxjYXJldD4pIHsKKyAgICAgIGNhc2UgCisgICAgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jb3B5QWJzdHJhY3RNZXRob2RJbXBsZW1lbnRhdGlvbi9hZnRlckVudW1Db25zdGFudC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jb3B5QWJzdHJhY3RNZXRob2RJbXBsZW1lbnRhdGlvbi9hZnRlckVudW1Db25zdGFudC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM5MjIzZjkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NvcHlBYnN0cmFjdE1ldGhvZEltcGxlbWVudGF0aW9uL2FmdGVyRW51bUNvbnN0YW50LmphdmEKQEAgLTAsMCArMSwxNCBAQAorLy8gIlVzZSBleGlzdGluZyBpbXBsZW1lbnRhdGlvbiBvZiAnbSciICJ0cnVlIgorZW51bSBJIHsKKyAgICBBIHsKKyAgICAgICAgdm9pZCBtKCkgeworICAgICAgICAgICAgPHNlbGVjdGlvbj5TeXN0ZW0ub3V0LnByaW50bG4oIiIpOzwvc2VsZWN0aW9uPgorICAgICAgICB9CisgICAgfSwKKyAgICBCIHsKKyAgICAgICAgcHVibGljIHZvaWQgbSgpIHsKKyAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiIik7CisgICAgICAgIH0KKyAgICB9OworICAgIGFic3RyYWN0IHZvaWQgbSgpOworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jb3B5QWJzdHJhY3RNZXRob2RJbXBsZW1lbnRhdGlvbi9hZnRlckVudW1Db25zdGFudFdpdGhBcmdzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NvcHlBYnN0cmFjdE1ldGhvZEltcGxlbWVudGF0aW9uL2FmdGVyRW51bUNvbnN0YW50V2l0aEFyZ3MuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYmFkYTVlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jb3B5QWJzdHJhY3RNZXRob2RJbXBsZW1lbnRhdGlvbi9hZnRlckVudW1Db25zdGFudFdpdGhBcmdzLmphdmEKQEAgLTAsMCArMSwxNSBAQAorLy8gIlVzZSBleGlzdGluZyBpbXBsZW1lbnRhdGlvbiBvZiAnbSciICJ0cnVlIgorZW51bSBJIHsKKyAgICBBKCJhIikgeworICAgICAgICB2b2lkIG0oKSB7CisgICAgICAgICAgICA8c2VsZWN0aW9uPjxjYXJldD5TeXN0ZW0ub3V0LnByaW50bG4oIiIpOzwvc2VsZWN0aW9uPgorICAgICAgICB9CisgICAgfSwKKyAgICBCKCJiIikgeworICAgICAgICBwdWJsaWMgdm9pZCBtKCkgeworICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCIiKTsKKyAgICAgICAgfQorICAgIH07CisgICAgYWJzdHJhY3Qgdm9pZCBtKCk7CisgICAgSShTdHJpbmcgcyl7fQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jb3B5QWJzdHJhY3RNZXRob2RJbXBsZW1lbnRhdGlvbi9hZnRlckdlbmVyaWMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY29weUFic3RyYWN0TWV0aG9kSW1wbGVtZW50YXRpb24vYWZ0ZXJHZW5lcmljLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGM3ZjE2MAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY29weUFic3RyYWN0TWV0aG9kSW1wbGVtZW50YXRpb24vYWZ0ZXJHZW5lcmljLmphdmEKQEAgLTAsMCArMSwxNiBAQAorLy8gIlVzZSBleGlzdGluZyBpbXBsZW1lbnRhdGlvbiBvZiAnbSciICJ0cnVlIgoraW50ZXJmYWNlIEk8VD4geworICAgIHZvaWQgbShUIHBhcmFtKTsKK30KKworY2xhc3MgQSBpbXBsZW1lbnRzIEk8T2JqZWN0PiB7CisgICAgcHVibGljIHZvaWQgbShPYmplY3QgcGFyYW0pIHsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKHBhcmFtLnRvU3RyaW5nKCkpOworICAgIH0KK30KKworY2xhc3MgQiBpbXBsZW1lbnRzIEk8U3RyaW5nPiB7CisgICAgcHVibGljIHZvaWQgbShTdHJpbmcgcGFyYW0pIHsKKyAgICAgICAgPHNlbGVjdGlvbj5TeXN0ZW0ub3V0LnByaW50bG4ocGFyYW0udG9TdHJpbmcoKSk7PC9zZWxlY3Rpb24+CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jb3B5QWJzdHJhY3RNZXRob2RJbXBsZW1lbnRhdGlvbi9hZnRlclNpbXBsZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jb3B5QWJzdHJhY3RNZXRob2RJbXBsZW1lbnRhdGlvbi9hZnRlclNpbXBsZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUyMmIwYjMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NvcHlBYnN0cmFjdE1ldGhvZEltcGxlbWVudGF0aW9uL2FmdGVyU2ltcGxlLmphdmEKQEAgLTAsMCArMSwxNiBAQAorLy8gIlVzZSBleGlzdGluZyBpbXBsZW1lbnRhdGlvbiBvZiAnbSciICJ0cnVlIgoraW50ZXJmYWNlIEkgeworICAgIHZvaWQgbSgpOworfQorCitjbGFzcyBBIGltcGxlbWVudHMgSSB7CisgICAgcHVibGljIHZvaWQgbSgpIHsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJjb2RlIik7CisgICAgfQorfQorCitjbGFzcyBCIGltcGxlbWVudHMgSSB7CisgICAgcHVibGljIHZvaWQgbSgpIHsKKyAgICAgICAgPHNlbGVjdGlvbj5TeXN0ZW0ub3V0LnByaW50bG4oImNvZGUiKTs8L3NlbGVjdGlvbj4KKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NvcHlBYnN0cmFjdE1ldGhvZEltcGxlbWVudGF0aW9uL2FmdGVyU2tpcENoaWxkQ2xhc3MuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY29weUFic3RyYWN0TWV0aG9kSW1wbGVtZW50YXRpb24vYWZ0ZXJTa2lwQ2hpbGRDbGFzcy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNhYWY1YjgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NvcHlBYnN0cmFjdE1ldGhvZEltcGxlbWVudGF0aW9uL2FmdGVyU2tpcENoaWxkQ2xhc3MuamF2YQpAQCAtMCwwICsxLDE5IEBACisvLyAiVXNlIGV4aXN0aW5nIGltcGxlbWVudGF0aW9uIG9mICdtJyIgInRydWUiCitpbnRlcmZhY2UgSTxUPiB7CisgICAgdm9pZCBtKFQgcGFyYW0pOworfQorCitjbGFzcyBBIGltcGxlbWVudHMgSTxPYmplY3Q+IHsKKyAgICBwdWJsaWMgdm9pZCBtKE9iamVjdCBwYXJhbSkgeworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4ocGFyYW0udG9TdHJpbmcoKSk7CisgICAgfQorfQorCitjbGFzcyBCIGltcGxlbWVudHMgSTxTdHJpbmc+IHsKKyAgICBwdWJsaWMgdm9pZCBtKFN0cmluZyBwYXJhbSkgeworICAgICAgICA8c2VsZWN0aW9uPlN5c3RlbS5vdXQucHJpbnRsbihwYXJhbS50b1N0cmluZygpKTs8L3NlbGVjdGlvbj4KKyAgICB9Cit9CisKK2NsYXNzIEMgZXh0ZW5kcyBCIHsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NvcHlBYnN0cmFjdE1ldGhvZEltcGxlbWVudGF0aW9uL2FmdGVyU3RhdGljUmVmLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NvcHlBYnN0cmFjdE1ldGhvZEltcGxlbWVudGF0aW9uL2FmdGVyU3RhdGljUmVmLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTFkZDNlZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY29weUFic3RyYWN0TWV0aG9kSW1wbGVtZW50YXRpb24vYWZ0ZXJTdGF0aWNSZWYuamF2YQpAQCAtMCwwICsxLDE4IEBACisvLyAiVXNlIGV4aXN0aW5nIGltcGxlbWVudGF0aW9uIG9mICdtJyIgInRydWUiCitpbnRlcmZhY2UgSSB7CisgICAgdm9pZCBtKCk7Cit9CisKK2NsYXNzIEEgaW1wbGVtZW50cyBJIHsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBURVhUID0gImNvZGUiOworCisgICAgcHVibGljIHZvaWQgbSgpIHsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKFRFWFQpOworICAgIH0KK30KKworY2xhc3MgQiBpbXBsZW1lbnRzIEkgeworICAgIHB1YmxpYyB2b2lkIG0oKSB7CisgICAgICAgIDxzZWxlY3Rpb24+U3lzdGVtLm91dC5wcmludGxuKEEuVEVYVCk7PC9zZWxlY3Rpb24+CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jb3B5QWJzdHJhY3RNZXRob2RJbXBsZW1lbnRhdGlvbi9iZWZvcmVFbnVtQ29uc3RhbnQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY29weUFic3RyYWN0TWV0aG9kSW1wbGVtZW50YXRpb24vYmVmb3JlRW51bUNvbnN0YW50LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWZlNjUyZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY29weUFic3RyYWN0TWV0aG9kSW1wbGVtZW50YXRpb24vYmVmb3JlRW51bUNvbnN0YW50LmphdmEKQEAgLTAsMCArMSwxMCBAQAorLy8gIlVzZSBleGlzdGluZyBpbXBsZW1lbnRhdGlvbiBvZiAnbSciICJ0cnVlIgorZW51bSBJIHsKKyAgICBBLAorICAgIEIgeworICAgICAgICBwdWJsaWMgdm9pZCBtKCkgeworICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCIiKTsKKyAgICAgICAgfQorICAgIH07CisgICAgYWJzdHJhY3Qgdm9pZCA8Y2FyZXQ+bSgpOworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jb3B5QWJzdHJhY3RNZXRob2RJbXBsZW1lbnRhdGlvbi9iZWZvcmVFbnVtQ29uc3RhbnRXaXRoQXJncy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jb3B5QWJzdHJhY3RNZXRob2RJbXBsZW1lbnRhdGlvbi9iZWZvcmVFbnVtQ29uc3RhbnRXaXRoQXJncy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkwMmYxZTEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NvcHlBYnN0cmFjdE1ldGhvZEltcGxlbWVudGF0aW9uL2JlZm9yZUVudW1Db25zdGFudFdpdGhBcmdzLmphdmEKQEAgLTAsMCArMSwxMSBAQAorLy8gIlVzZSBleGlzdGluZyBpbXBsZW1lbnRhdGlvbiBvZiAnbSciICJ0cnVlIgorZW51bSBJIHsKKyAgICBBKCJhIiksCisgICAgQigiYiIpIHsKKyAgICAgICAgcHVibGljIHZvaWQgbSgpIHsKKyAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiIik7CisgICAgICAgIH0KKyAgICB9OworICAgIGFic3RyYWN0IHZvaWQgPGNhcmV0Pm0oKTsKKyAgICBJKFN0cmluZyBzKXt9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NvcHlBYnN0cmFjdE1ldGhvZEltcGxlbWVudGF0aW9uL2JlZm9yZUdlbmVyaWMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY29weUFic3RyYWN0TWV0aG9kSW1wbGVtZW50YXRpb24vYmVmb3JlR2VuZXJpYy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU2ZGI0M2EKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NvcHlBYnN0cmFjdE1ldGhvZEltcGxlbWVudGF0aW9uL2JlZm9yZUdlbmVyaWMuamF2YQpAQCAtMCwwICsxLDEzIEBACisvLyAiVXNlIGV4aXN0aW5nIGltcGxlbWVudGF0aW9uIG9mICdtJyIgInRydWUiCitpbnRlcmZhY2UgSTxUPiB7CisgICAgdm9pZCA8Y2FyZXQ+bShUIHBhcmFtKTsKK30KKworY2xhc3MgQSBpbXBsZW1lbnRzIEk8T2JqZWN0PiB7CisgICAgcHVibGljIHZvaWQgbShPYmplY3QgcGFyYW0pIHsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKHBhcmFtLnRvU3RyaW5nKCkpOworICAgIH0KK30KKworY2xhc3MgQiBpbXBsZW1lbnRzIEk8U3RyaW5nPiB7Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NvcHlBYnN0cmFjdE1ldGhvZEltcGxlbWVudGF0aW9uL2JlZm9yZUludGVyZmFjZUV4dGVuZHMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY29weUFic3RyYWN0TWV0aG9kSW1wbGVtZW50YXRpb24vYmVmb3JlSW50ZXJmYWNlRXh0ZW5kcy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA3ZDM0N2YKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NvcHlBYnN0cmFjdE1ldGhvZEltcGxlbWVudGF0aW9uL2JlZm9yZUludGVyZmFjZUV4dGVuZHMuamF2YQpAQCAtMCwwICsxLDExIEBACisvLyAiVXNlIGV4aXN0aW5nIGltcGxlbWVudGF0aW9uIG9mICdmb28nIiAiZmFsc2UiCitpbnRlcmZhY2UgSSB7CisgICAgdm9pZCA8Y2FyZXQ+Zm9vKCk7Cit9CitjbGFzcyBJSW1wbCBpbXBsZW1lbnRzIEkgeworICBAT3ZlcnJpZGUKKyAgcHVibGljIHZvaWQgZm9vKCkge30KK30KKworaW50ZXJmYWNlIElJIGV4dGVuZHMgSSB7fQorY2xhc3MgSUltcGwyIGV4dGVuZHMgSUltcGwgaW1wbGVtZW50cyBJSSB7fQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY29weUFic3RyYWN0TWV0aG9kSW1wbGVtZW50YXRpb24vYmVmb3JlU2ltcGxlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NvcHlBYnN0cmFjdE1ldGhvZEltcGxlbWVudGF0aW9uL2JlZm9yZVNpbXBsZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg0YzZkYWIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NvcHlBYnN0cmFjdE1ldGhvZEltcGxlbWVudGF0aW9uL2JlZm9yZVNpbXBsZS5qYXZhCkBAIC0wLDAgKzEsMTMgQEAKKy8vICJVc2UgZXhpc3RpbmcgaW1wbGVtZW50YXRpb24gb2YgJ20nIiAidHJ1ZSIKK2ludGVyZmFjZSBJIHsKKyAgICB2b2lkIDxjYXJldD5tKCk7Cit9CisKK2NsYXNzIEEgaW1wbGVtZW50cyBJIHsKKyAgICBwdWJsaWMgdm9pZCBtKCkgeworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oImNvZGUiKTsKKyAgICB9Cit9CisKK2NsYXNzIEIgaW1wbGVtZW50cyBJIHsKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY29weUFic3RyYWN0TWV0aG9kSW1wbGVtZW50YXRpb24vYmVmb3JlU2tpcENoaWxkQ2xhc3MuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY29weUFic3RyYWN0TWV0aG9kSW1wbGVtZW50YXRpb24vYmVmb3JlU2tpcENoaWxkQ2xhc3MuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMWQwOGY4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jb3B5QWJzdHJhY3RNZXRob2RJbXBsZW1lbnRhdGlvbi9iZWZvcmVTa2lwQ2hpbGRDbGFzcy5qYXZhCkBAIC0wLDAgKzEsMTYgQEAKKy8vICJVc2UgZXhpc3RpbmcgaW1wbGVtZW50YXRpb24gb2YgJ20nIiAidHJ1ZSIKK2ludGVyZmFjZSBJPFQ+IHsKKyAgICB2b2lkIDxjYXJldD5tKFQgcGFyYW0pOworfQorCitjbGFzcyBBIGltcGxlbWVudHMgSTxPYmplY3Q+IHsKKyAgICBwdWJsaWMgdm9pZCBtKE9iamVjdCBwYXJhbSkgeworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4ocGFyYW0udG9TdHJpbmcoKSk7CisgICAgfQorfQorCitjbGFzcyBCIGltcGxlbWVudHMgSTxTdHJpbmc+IHsKK30KKworY2xhc3MgQyBleHRlbmRzIEIgeworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY29weUFic3RyYWN0TWV0aG9kSW1wbGVtZW50YXRpb24vYmVmb3JlU3RhdGljUmVmLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NvcHlBYnN0cmFjdE1ldGhvZEltcGxlbWVudGF0aW9uL2JlZm9yZVN0YXRpY1JlZi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYxNmJiMWIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NvcHlBYnN0cmFjdE1ldGhvZEltcGxlbWVudGF0aW9uL2JlZm9yZVN0YXRpY1JlZi5qYXZhCkBAIC0wLDAgKzEsMTUgQEAKKy8vICJVc2UgZXhpc3RpbmcgaW1wbGVtZW50YXRpb24gb2YgJ20nIiAidHJ1ZSIKK2ludGVyZmFjZSBJIHsKKyAgICB2b2lkIDxjYXJldD5tKCk7Cit9CisKK2NsYXNzIEEgaW1wbGVtZW50cyBJIHsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBURVhUID0gImNvZGUiOworCisgICAgcHVibGljIHZvaWQgbSgpIHsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKFRFWFQpOworICAgIH0KK30KKworY2xhc3MgQiBpbXBsZW1lbnRzIEkgeworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVBbm5vdGF0aW9uTWV0aG9kRnJvbVVzYWdlL2FmdGVyMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVBbm5vdGF0aW9uTWV0aG9kRnJvbVVzYWdlL2FmdGVyMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZhMjQ0MDYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUFubm90YXRpb25NZXRob2RGcm9tVXNhZ2UvYWZ0ZXIxLmphdmEKQEAgLTAsMCArMSwxMCBAQAorLy8gIkNyZWF0ZSBNZXRob2QgJ3Rlc3QnIiAidHJ1ZSIKK3B1YmxpYyBjbGFzcyBUZXN0IHsKKyAgICBAQXR0cih0ZXN0PSAiIikKKyAgICBwdWJsaWMgVGVzdCgpIHsKKyAgICB9Cit9CisKK0BpbnRlcmZhY2UgQXR0ciB7CisgICAgU3RyaW5nIHRlc3QoKTsKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlQW5ub3RhdGlvbk1ldGhvZEZyb21Vc2FnZS9hZnRlcjIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlQW5ub3RhdGlvbk1ldGhvZEZyb21Vc2FnZS9hZnRlcjIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNjZkM2U3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVBbm5vdGF0aW9uTWV0aG9kRnJvbVVzYWdlL2FmdGVyMi5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKKy8vICJDcmVhdGUgTWV0aG9kICd0ZXN0JyIgInRydWUiCitwdWJsaWMgY2xhc3MgVGVzdCB7CisgICAgQEF0dHIodGVzdD0geyIifSkKKyAgICBwdWJsaWMgVGVzdCgpIHsKKyAgICB9Cit9CisKK0BpbnRlcmZhY2UgQXR0ciB7CisgICAgU3RyaW5nW10gdGVzdCgpOworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVBbm5vdGF0aW9uTWV0aG9kRnJvbVVzYWdlL2JlZm9yZTEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlQW5ub3RhdGlvbk1ldGhvZEZyb21Vc2FnZS9iZWZvcmUxLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWFjZmUxMAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlQW5ub3RhdGlvbk1ldGhvZEZyb21Vc2FnZS9iZWZvcmUxLmphdmEKQEAgLTAsMCArMSw5IEBACisvLyAiQ3JlYXRlIE1ldGhvZCAndGVzdCciICJ0cnVlIgorcHVibGljIGNsYXNzIFRlc3QgeworICAgIEBBdHRyKHRlPGNhcmV0PnN0PSAiIikKKyAgICBwdWJsaWMgVGVzdCgpIHsKKyAgICB9Cit9CisKK0BpbnRlcmZhY2UgQXR0ciB7Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUFubm90YXRpb25NZXRob2RGcm9tVXNhZ2UvYmVmb3JlMi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVBbm5vdGF0aW9uTWV0aG9kRnJvbVVzYWdlL2JlZm9yZTIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMTZhZDUwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVBbm5vdGF0aW9uTWV0aG9kRnJvbVVzYWdlL2JlZm9yZTIuamF2YQpAQCAtMCwwICsxLDkgQEAKKy8vICJDcmVhdGUgTWV0aG9kICd0ZXN0JyIgInRydWUiCitwdWJsaWMgY2xhc3MgVGVzdCB7CisgICAgQEF0dHIodGU8Y2FyZXQ+c3Q9IHsiIn0pCisgICAgcHVibGljIFRlc3QoKSB7CisgICAgfQorfQorCitAaW50ZXJmYWNlIEF0dHIgeworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVBbm5vdGF0aW9uTWV0aG9kRnJvbVVzYWdlL2JlZm9yZTMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlQW5ub3RhdGlvbk1ldGhvZEZyb21Vc2FnZS9iZWZvcmUzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjllNWZmMgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlQW5ub3RhdGlvbk1ldGhvZEZyb21Vc2FnZS9iZWZvcmUzLmphdmEKQEAgLTAsMCArMSw5IEBACisvLyAiQ3JlYXRlIE1ldGhvZCAndGVzdCciICJmYWxzZSIKK3B1YmxpYyBjbGFzcyBUZXN0IHsKKyAgICBAQXR0cih0ZTxjYXJldD5zdD0geyIiLCAxfSkKKyAgICBwdWJsaWMgVGVzdCgpIHsKKyAgICB9Cit9CisKK0BpbnRlcmZhY2UgQXR0ciB7Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUFubm90YXRpb25NZXRob2RGcm9tVXNhZ2UvYmVmb3JlNC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVBbm5vdGF0aW9uTWV0aG9kRnJvbVVzYWdlL2JlZm9yZTQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYTY3ZWM4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVBbm5vdGF0aW9uTWV0aG9kRnJvbVVzYWdlL2JlZm9yZTQuamF2YQpAQCAtMCwwICsxLDkgQEAKKy8vICJDcmVhdGUgTWV0aG9kICd0ZXN0JyIgImZhbHNlIgorcHVibGljIGNsYXNzIFRlc3QgeworICAgIEBBdHRyKHRlPGNhcmV0PnN0PSB7bmV3IFN0cmluZ1tdeyIifX0pCisgICAgcHVibGljIFRlc3QoKSB7CisgICAgfQorfQorCitAaW50ZXJmYWNlIEF0dHIgeworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVBbm5vdGF0aW9uVHlwZUZyb21Vc2FnZS9hZnRlcjEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlQW5ub3RhdGlvblR5cGVGcm9tVXNhZ2UvYWZ0ZXIxLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2Q2ZWFkNQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlQW5ub3RhdGlvblR5cGVGcm9tVXNhZ2UvYWZ0ZXIxLmphdmEKQEAgLTAsMCArMSw3IEBACisvLyAiQ3JlYXRlIEFubm90YXRpb24gJ1NtdGgnIiAidHJ1ZSIKK2NsYXNzIFRlc3QgeworICB2b2lkIGZvbyhAU210aCBTdHJpbmcgcyl7fQorfQorCitwdWJsaWMgQGludGVyZmFjZSBTbXRoIHsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUFubm90YXRpb25UeXBlRnJvbVVzYWdlL2JlZm9yZTEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlQW5ub3RhdGlvblR5cGVGcm9tVXNhZ2UvYmVmb3JlMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRiNzliNzcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUFubm90YXRpb25UeXBlRnJvbVVzYWdlL2JlZm9yZTEuamF2YQpAQCAtMCwwICsxLDQgQEAKKy8vICJDcmVhdGUgQW5ub3RhdGlvbiAnU210aCciICJ0cnVlIgorY2xhc3MgVGVzdCB7CisgIHZvaWQgZm9vKEBTPGNhcmV0Pm10aCBTdHJpbmcgcyl7fQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlQW5ub3RhdGlvblR5cGVGcm9tVXNhZ2UvYmVmb3JlTm90QXZhaWxhYmxlSW5Ob25Bbm5vdGF0aW9uUGxhY2UuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlQW5ub3RhdGlvblR5cGVGcm9tVXNhZ2UvYmVmb3JlTm90QXZhaWxhYmxlSW5Ob25Bbm5vdGF0aW9uUGxhY2UuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NjBmMjI5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVBbm5vdGF0aW9uVHlwZUZyb21Vc2FnZS9iZWZvcmVOb3RBdmFpbGFibGVJbk5vbkFubm90YXRpb25QbGFjZS5qYXZhCkBAIC0wLDAgKzEsNCBAQAorLy8gIkNyZWF0ZSBBbm5vdGF0aW9uICdTbXRoJyIgImZhbHNlIgorY2xhc3MgVGVzdCB7CisgIHZvaWQgZm9vKFM8Y2FyZXQ+bXRoIHMpe30KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUNhc3RFeHByZXNzaW9uRnJvbUluc3RhbmNlb2YvYWZ0ZXIxLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUNhc3RFeHByZXNzaW9uRnJvbUluc3RhbmNlb2YvYWZ0ZXIxLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzUzZTQ3OAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlQ2FzdEV4cHJlc3Npb25Gcm9tSW5zdGFuY2VvZi9hZnRlcjEuamF2YQpAQCAtMCwwICsxLDkgQEAKKy8vICJDYXN0IHRvICdSdW5uYWJsZSciICJ0cnVlIgorY2xhc3MgQyB7CisgIHZvaWQgZigpIHsKKyAgICBpZiAodGhpcyBpbnN0YW5jZW9mIFJ1bm5hYmxlKSB7CisgICAgICAgICgoUnVubmFibGUpIHRoaXMpPGNhcmV0PgorICAgIH0KKyAgfQorfQorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUNhc3RFeHByZXNzaW9uRnJvbUluc3RhbmNlb2YvYWZ0ZXJPblJlZi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVDYXN0RXhwcmVzc2lvbkZyb21JbnN0YW5jZW9mL2FmdGVyT25SZWYuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43M2E2ZjY2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVDYXN0RXhwcmVzc2lvbkZyb21JbnN0YW5jZW9mL2FmdGVyT25SZWYuamF2YQpAQCAtMCwwICsxLDkgQEAKKy8vICJDYXN0IHRvICdSdW5uYWJsZSciICJ0cnVlIgorY2xhc3MgQyB7CisgIHZvaWQgZihPYmplY3QgbykgeworICAgIGlmIChvIGluc3RhbmNlb2YgUnVubmFibGUpIHsKKyAgICAgICAgKChSdW5uYWJsZSkgbyk8Y2FyZXQ+CisgICAgfQorICB9Cit9CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlQ2FzdEV4cHJlc3Npb25Gcm9tSW5zdGFuY2VvZi9hZnRlclNvbWVTdG10LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUNhc3RFeHByZXNzaW9uRnJvbUluc3RhbmNlb2YvYWZ0ZXJTb21lU3RtdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZlMTIzMDkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUNhc3RFeHByZXNzaW9uRnJvbUluc3RhbmNlb2YvYWZ0ZXJTb21lU3RtdC5qYXZhCkBAIC0wLDAgKzEsOSBAQAorLy8gIkNhc3QgdG8gJ0EnIiAidHJ1ZSIKK2NsYXNzIEEgeworICAgdm9pZCBmb28oT2JqZWN0IGZvbykgeworICAgICAgIGlmKGZvbyBpbnN0YW5jZW9mIEEpIHsKKyAgICAgICAgICAgKChBKSBmb28pCisgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiIik7CisgICAgICAgfQorICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlQ2FzdEV4cHJlc3Npb25Gcm9tSW5zdGFuY2VvZi9iZWZvcmUxLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUNhc3RFeHByZXNzaW9uRnJvbUluc3RhbmNlb2YvYmVmb3JlMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU5MjU4OTcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUNhc3RFeHByZXNzaW9uRnJvbUluc3RhbmNlb2YvYmVmb3JlMS5qYXZhCkBAIC0wLDAgKzEsNyBAQAorLy8gIkNhc3QgdG8gJ1J1bm5hYmxlJyIgInRydWUiCitjbGFzcyBDIHsKKyAgdm9pZCBmKCkgeworICAgIGlmICh0aGlzIDxjYXJldD5pbnN0YW5jZW9mIFJ1bm5hYmxlKQorICB9Cit9CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlQ2FzdEV4cHJlc3Npb25Gcm9tSW5zdGFuY2VvZi9iZWZvcmVOZWdhdGlvbk9uUmVmLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUNhc3RFeHByZXNzaW9uRnJvbUluc3RhbmNlb2YvYmVmb3JlTmVnYXRpb25PblJlZi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlkMDA2YjYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUNhc3RFeHByZXNzaW9uRnJvbUluc3RhbmNlb2YvYmVmb3JlTmVnYXRpb25PblJlZi5qYXZhCkBAIC0wLDAgKzEsOSBAQAorLy8gIkNhc3QgdG8gJ1J1bm5hYmxlJyIgImZhbHNlIgorY2xhc3MgQyB7CisgIHZvaWQgZihPYmplY3QgbykgeworICAgIGlmICghKG8gaW5zdGFuY2VvZiBSdW5uYWJsZSkpIHsKKyAgICAgIG88Y2FyZXQ+CisgICAgfQorICB9Cit9CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlQ2FzdEV4cHJlc3Npb25Gcm9tSW5zdGFuY2VvZi9iZWZvcmVPblJlZi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVDYXN0RXhwcmVzc2lvbkZyb21JbnN0YW5jZW9mL2JlZm9yZU9uUmVmLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmE0NGUwZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlQ2FzdEV4cHJlc3Npb25Gcm9tSW5zdGFuY2VvZi9iZWZvcmVPblJlZi5qYXZhCkBAIC0wLDAgKzEsOSBAQAorLy8gIkNhc3QgdG8gJ1J1bm5hYmxlJyIgInRydWUiCitjbGFzcyBDIHsKKyAgdm9pZCBmKE9iamVjdCBvKSB7CisgICAgaWYgKG8gaW5zdGFuY2VvZiBSdW5uYWJsZSkgeworICAgICAgbzxjYXJldD4KKyAgICB9CisgIH0KK30KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVDYXN0RXhwcmVzc2lvbkZyb21JbnN0YW5jZW9mL2JlZm9yZVNvbWVTdG10LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUNhc3RFeHByZXNzaW9uRnJvbUluc3RhbmNlb2YvYmVmb3JlU29tZVN0bXQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYWU5ZGZiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVDYXN0RXhwcmVzc2lvbkZyb21JbnN0YW5jZW9mL2JlZm9yZVNvbWVTdG10LmphdmEKQEAgLTAsMCArMSw4IEBACisvLyAiQ2FzdCB0byAnQSciICJ0cnVlIgorY2xhc3MgQSB7CisgICB2b2lkIGZvbyhPYmplY3QgZm9vKSB7CisgICAgICAgaWYoZm9vIGluc3RhPGNhcmV0Pm5jZW9mIEEpIHsKKyAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCIiKTsKKyAgICAgICB9CisgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVDbGFzc0Zyb21OZXcvYWZ0ZXIxLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUNsYXNzRnJvbU5ldy9hZnRlcjEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40OTY5OTU1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVDbGFzc0Zyb21OZXcvYWZ0ZXIxLmphdmEKQEAgLTAsMCArMSwxMyBAQAorLy8gIkNyZWF0ZSBDbGFzcyAnTXlDb2xsZWN0aW9uJyIgInRydWUiCitpbXBvcnQgamF2YS51dGlsLio7CisKK3B1YmxpYyBjbGFzcyBUZXN0IHsKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbigpIHsKKyAgICAgICAgQ29sbGVjdGlvbiBjID0gbmV3IE15Q29sbGVjdGlvbigxLCAidGVzdCIpOworICAgIH0KK30KKworcHVibGljIGNsYXNzIE15Q29sbGVjdGlvbiBpbXBsZW1lbnRzIENvbGxlY3Rpb24geworICAgIHB1YmxpYyBNeUNvbGxlY3Rpb24oaW50IGksIFN0cmluZyB0ZXN0KSB7PGNhcmV0PgorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUNsYXNzRnJvbU5ldy9hZnRlcjIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlQ2xhc3NGcm9tTmV3L2FmdGVyMi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdiMTVkNjAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUNsYXNzRnJvbU5ldy9hZnRlcjIuamF2YQpAQCAtMCwwICsxLDEzIEBACisvLyAiQ3JlYXRlIENsYXNzICdNeUFycmF5TGlzdCciICJ0cnVlIgoraW1wb3J0IGphdmEudXRpbC4qOworCitwdWJsaWMgY2xhc3MgVGVzdCB7CisgICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oKSB7CisgICAgICAgIEFycmF5TGlzdCBsaXN0ID0gbmV3IE15QXJyYXlMaXN0KDEsICJ0ZXN0Iik7CisgICAgfQorfQorCitwdWJsaWMgY2xhc3MgTXlBcnJheUxpc3QgZXh0ZW5kcyBBcnJheUxpc3QgeworICAgIHB1YmxpYyBNeUFycmF5TGlzdChpbnQgaSwgU3RyaW5nIHRlc3QpIHs8Y2FyZXQ+CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlQ2xhc3NGcm9tTmV3L2FmdGVyMy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVDbGFzc0Zyb21OZXcvYWZ0ZXIzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDhhYTI1NAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlQ2xhc3NGcm9tTmV3L2FmdGVyMy5qYXZhCkBAIC0wLDAgKzEsMTIgQEAKKy8vICJDcmVhdGUgQ2xhc3MgJ015SW50ZWdlciciICJ0cnVlIgorcHVibGljIGNsYXNzIFRlc3QgeworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKCkgeworICAgICAgICBpbnQgeHh4ID0gMzsKKyAgICAgICAgSW50ZWdlciBpID0gbmV3IE15SW50ZWdlcih4eHgpOworICAgIH0KK30KKworcHVibGljIGNsYXNzIE15SW50ZWdlciB7CisgICAgcHVibGljIE15SW50ZWdlcihpbnQgeHh4KSB7PGNhcmV0PgorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUNsYXNzRnJvbU5ldy9hZnRlcjYuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlQ2xhc3NGcm9tTmV3L2FmdGVyNi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJlZTIwMjQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUNsYXNzRnJvbU5ldy9hZnRlcjYuamF2YQpAQCAtMCwwICsxLDkgQEAKKy8vICJDcmVhdGUgQ2xhc3MgJ015Q29sbGVjdGlvbiciICJ0cnVlIgorcHVibGljIGNsYXNzIFRlc3QgeworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKCkgeworICAgICAgICBDb2xsZWN0aW9uW10gY2MgPSBuZXcgTXlDb2xsZWN0aW9uWzEwXTsKKyAgICB9Cit9CisKKzxjYXJldD5wdWJsaWMgY2xhc3MgTXlDb2xsZWN0aW9uIHsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUNsYXNzRnJvbU5ldy9hZnRlcjcuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlQ2xhc3NGcm9tTmV3L2FmdGVyNy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc3NGQ0ZGQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUNsYXNzRnJvbU5ldy9hZnRlcjcuamF2YQpAQCAtMCwwICsxLDEzIEBACisvLyAiQ3JlYXRlIENsYXNzICdNeUNvbGxlY3Rpb24nIiAidHJ1ZSIKK2ltcG9ydCBqYXZhLnV0aWwuKjsKKworcHVibGljIGNsYXNzIFRlc3QgeworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKCkgeworICAgICAgICBDb2xsZWN0aW9uIGMgPSBuZXcgVGVzdC5NeUNvbGxlY3Rpb24oMSk7CisgICAgfQorCisgICAgcHVibGljIGNsYXNzIE15Q29sbGVjdGlvbiBpbXBsZW1lbnRzIENvbGxlY3Rpb24geworICAgICAgICBwdWJsaWMgTXlDb2xsZWN0aW9uKGludCBpKSB7PGNhcmV0PgorICAgICAgICB9CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlQ2xhc3NGcm9tTmV3L2FmdGVyOC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVDbGFzc0Zyb21OZXcvYWZ0ZXI4LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTQ3NjFlZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlQ2xhc3NGcm9tTmV3L2FmdGVyOC5qYXZhCkBAIC0wLDAgKzEsMTIgQEAKKy8vICJDcmVhdGUgQ2xhc3MgJ015VGFibGVNb2RlbCciICJ0cnVlIgoraW1wb3J0IGphdmF4LnN3aW5nLio7CitpbXBvcnQgamF2YXguc3dpbmcudGFibGUuVGFibGVNb2RlbDsKKworcHVibGljIGNsYXNzIFRlc3QgeworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKCkgeworICAgICAgICBKVGFibGUgdGFibGUgPSBuZXcgSlRhYmxlKG5ldyBNeVRhYmxlTW9kZWwoKSk7CisgICAgfQorfQorCis8Y2FyZXQ+cHVibGljIGNsYXNzIE15VGFibGVNb2RlbCBpbXBsZW1lbnRzIFRhYmxlTW9kZWwgeworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlQ2xhc3NGcm9tTmV3L2FmdGVyR2VuZXJpY3MuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlQ2xhc3NGcm9tTmV3L2FmdGVyR2VuZXJpY3MuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zY2FlNGQ4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVDbGFzc0Zyb21OZXcvYWZ0ZXJHZW5lcmljcy5qYXZhCkBAIC0wLDAgKzEsOSBAQAorLy8gIkNyZWF0ZSBDbGFzcyAnR2VuZXJpYyciICJ0cnVlIgorY2xhc3MgVGVzdCB7CisgIHZvaWQgZm9vICgpIHsKKyAgICBuZXcgR2VuZXJpYzxTdHJpbmc+ICgpOworICB9Cit9CisKKzxjYXJldD5wdWJsaWMgY2xhc3MgR2VuZXJpYzxUPiB7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVDbGFzc0Zyb21OZXcvYmVmb3JlMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVDbGFzc0Zyb21OZXcvYmVmb3JlMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdlZjZkMzcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUNsYXNzRnJvbU5ldy9iZWZvcmUxLmphdmEKQEAgLTAsMCArMSw4IEBACisvLyAiQ3JlYXRlIENsYXNzICdNeUNvbGxlY3Rpb24nIiAidHJ1ZSIKK2ltcG9ydCBqYXZhLnV0aWwuKjsKKworcHVibGljIGNsYXNzIFRlc3QgeworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKCkgeworICAgICAgICBDb2xsZWN0aW9uIGMgPSBuZXcgPGNhcmV0Pk15Q29sbGVjdGlvbigxLCAidGVzdCIpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUNsYXNzRnJvbU5ldy9iZWZvcmUyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUNsYXNzRnJvbU5ldy9iZWZvcmUyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDk0YjIyMwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlQ2xhc3NGcm9tTmV3L2JlZm9yZTIuamF2YQpAQCAtMCwwICsxLDggQEAKKy8vICJDcmVhdGUgQ2xhc3MgJ015QXJyYXlMaXN0JyIgInRydWUiCitpbXBvcnQgamF2YS51dGlsLio7CisKK3B1YmxpYyBjbGFzcyBUZXN0IHsKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbigpIHsKKyAgICAgICAgQXJyYXlMaXN0IGxpc3QgPSBuZXcgPGNhcmV0Pk15QXJyYXlMaXN0KDEsICJ0ZXN0Iik7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlQ2xhc3NGcm9tTmV3L2JlZm9yZTMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlQ2xhc3NGcm9tTmV3L2JlZm9yZTMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMThmZDllCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVDbGFzc0Zyb21OZXcvYmVmb3JlMy5qYXZhCkBAIC0wLDAgKzEsNyBAQAorLy8gIkNyZWF0ZSBDbGFzcyAnTXlJbnRlZ2VyJyIgInRydWUiCitwdWJsaWMgY2xhc3MgVGVzdCB7CisgICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oKSB7CisgICAgICAgIGludCB4eHggPSAzOworICAgICAgICBJbnRlZ2VyIGkgPSBuZXcgPGNhcmV0Pk15SW50ZWdlcih4eHgpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUNsYXNzRnJvbU5ldy9iZWZvcmU0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUNsYXNzRnJvbU5ldy9iZWZvcmU0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGRjZDM3OQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlQ2xhc3NGcm9tTmV3L2JlZm9yZTQuamF2YQpAQCAtMCwwICsxLDggQEAKKy8vICJEbyBub3QgdHJ5IHRvIGNyZWF0ZSBjbGFzcyBJbm5lciIgImZhbHNlIgorcHVibGljIGNsYXNzIFRlc3QgeworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKCkgeworICAgICAgICBuZXcgVGU8Y2FyZXQ+c3QuSW5uZXIoKTsKKyAgICB9CisgICAgCisgICAgcHVibGljIHN0YXRpYyBjbGFzcyBJbm5lciB7fQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlQ2xhc3NGcm9tTmV3L2JlZm9yZTUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlQ2xhc3NGcm9tTmV3L2JlZm9yZTUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MmFiZTRkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVDbGFzc0Zyb21OZXcvYmVmb3JlNS5qYXZhCkBAIC0wLDAgKzEsOCBAQAorLy8gIkRvIG5vdCB0cnkgdG8gY3JlYXRlIGNsYXNzIElubmVyIiAiZmFsc2UiCitwdWJsaWMgY2xhc3MgVGVzdCB7CisgICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oKSB7CisgICAgICAgIG5ldyBJbm5lcjxjYXJldD4oKTsKKyAgICB9CisgICAgCisgICAgcHVibGljIHN0YXRpYyBjbGFzcyBJbm5lciB7fQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlQ2xhc3NGcm9tTmV3L2JlZm9yZTYuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlQ2xhc3NGcm9tTmV3L2JlZm9yZTYuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNGFkMDlmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVDbGFzc0Zyb21OZXcvYmVmb3JlNi5qYXZhCkBAIC0wLDAgKzEsNiBAQAorLy8gIkNyZWF0ZSBDbGFzcyAnTXlDb2xsZWN0aW9uJyIgInRydWUiCitwdWJsaWMgY2xhc3MgVGVzdCB7CisgICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oKSB7CisgICAgICAgIENvbGxlY3Rpb25bXSBjYyA9IG5ldyA8Y2FyZXQ+TXlDb2xsZWN0aW9uWzEwXTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVDbGFzc0Zyb21OZXcvYmVmb3JlNy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVDbGFzc0Zyb21OZXcvYmVmb3JlNy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlmYzNhNmYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUNsYXNzRnJvbU5ldy9iZWZvcmU3LmphdmEKQEAgLTAsMCArMSw4IEBACisvLyAiQ3JlYXRlIENsYXNzICdNeUNvbGxlY3Rpb24nIiAidHJ1ZSIKK2ltcG9ydCBqYXZhLnV0aWwuKjsKKworcHVibGljIGNsYXNzIFRlc3QgeworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKCkgeworICAgICAgICBDb2xsZWN0aW9uIGMgPSBuZXcgVGVzdC5NeTxjYXJldD5Db2xsZWN0aW9uKDEpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUNsYXNzRnJvbU5ldy9iZWZvcmU4LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUNsYXNzRnJvbU5ldy9iZWZvcmU4LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzM2NzQ2YwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlQ2xhc3NGcm9tTmV3L2JlZm9yZTguamF2YQpAQCAtMCwwICsxLDggQEAKKy8vICJDcmVhdGUgQ2xhc3MgJ015VGFibGVNb2RlbCciICJ0cnVlIgoraW1wb3J0IGphdmF4LnN3aW5nLio7CisKK3B1YmxpYyBjbGFzcyBUZXN0IHsKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbigpIHsKKyAgICAgICAgSlRhYmxlIHRhYmxlID0gbmV3IEpUYWJsZShuZXcgTXlUYWJsZTxjYXJldD5Nb2RlbCgpKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVDbGFzc0Zyb21OZXcvYmVmb3JlOS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVDbGFzc0Zyb21OZXcvYmVmb3JlOS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIzMGM1MDcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUNsYXNzRnJvbU5ldy9iZWZvcmU5LmphdmEKQEAgLTAsMCArMSw4IEBACisvLyAiRG8gbm90IGNyZWF0ZSBhbnl0aGluZyIgImZhbHNlIgoraW1wb3J0IGphdmF4LnN3aW5nLio7CisKK3B1YmxpYyBjbGFzcyBUZXN0IHsKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbigpIHsKKwkJYm9vbGVhbltdIGJlZXMgPSBuZXcgYm9vbGVhblthcmdzLmxlbmc8Y2FyZXQ+dGhdOyAKKwl9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVDbGFzc0Zyb21OZXcvYmVmb3JlR2VuZXJpY3MuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlQ2xhc3NGcm9tTmV3L2JlZm9yZUdlbmVyaWNzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDdlZDExNwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlQ2xhc3NGcm9tTmV3L2JlZm9yZUdlbmVyaWNzLmphdmEKQEAgLTAsMCArMSw2IEBACisvLyAiQ3JlYXRlIENsYXNzICdHZW5lcmljJyIgInRydWUiCitjbGFzcyBUZXN0IHsKKyAgdm9pZCBmb28gKCkgeworICAgIG5ldyA8Y2FyZXQ+R2VuZXJpYzxTdHJpbmc+ICgpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVDbGFzc0Zyb21Vc2FnZS9hZnRlcjEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlQ2xhc3NGcm9tVXNhZ2UvYWZ0ZXIxLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDZkOTFlYgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlQ2xhc3NGcm9tVXNhZ2UvYWZ0ZXIxLmphdmEKQEAgLTAsMCArMSw5IEBACisvLyAiQ3JlYXRlIENsYXNzICdBYmMnIiAidHJ1ZSIKK3B1YmxpYyBjbGFzcyBUZXN0IHsKKyAgcHVibGljIGZvbyhpbnQgcHBwKSB7CisgICAgQWJjLmZvbygpOworICB9Cit9CisKK3B1YmxpYyBjbGFzcyA8Y2FyZXQ+QWJjIHsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUNsYXNzRnJvbVVzYWdlL2FmdGVyQ2FzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVDbGFzc0Zyb21Vc2FnZS9hZnRlckNhc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MWI3ODBjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVDbGFzc0Zyb21Vc2FnZS9hZnRlckNhc3QuamF2YQpAQCAtMCwwICsxLDExIEBACisvLyAiQ3JlYXRlIENsYXNzICdDbGFzc0InIiAidHJ1ZSIKK3B1YmxpYyBjbGFzcyBDbGFzc0EKK3sKKyAgcHVibGljIHZvaWQgbUEoT2JqZWN0IGFyZykKKyAgeworICAgICgoQ2xhc3NCKSBhcmcpLmZvbygpOworICB9Cit9CisKK3B1YmxpYyBjbGFzcyA8Y2FyZXQ+Q2xhc3NCIHsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUNsYXNzRnJvbVVzYWdlL2FmdGVyQ2xhc3NVc2VkSW5XaWxkY2FyZC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVDbGFzc0Zyb21Vc2FnZS9hZnRlckNsYXNzVXNlZEluV2lsZGNhcmQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YzkwMDM4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVDbGFzc0Zyb21Vc2FnZS9hZnRlckNsYXNzVXNlZEluV2lsZGNhcmQuamF2YQpAQCAtMCwwICsxLDEwIEBACisvLyAiQ3JlYXRlIENsYXNzICdGb28nIiAidHJ1ZSIKK2ltcG9ydCBqYXZhLnV0aWwuQ29sbGVjdGlvbjsKK3B1YmxpYyBjbGFzcyBUZXN0IHsKKyAgcHVibGljIENvbGxlY3Rpb248PyBleHRlbmRzIEZvbz4gZ2V0U29tZXRoaW5nKCkgeworICAgIHJldHVybiBudWxsOworICB9Cit9CisKK3B1YmxpYyBjbGFzcyA8Y2FyZXQ+Rm9vIHsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUNsYXNzRnJvbVVzYWdlL2FmdGVyRW51bVVzZWRJbkNhbGwuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlQ2xhc3NGcm9tVXNhZ2UvYWZ0ZXJFbnVtVXNlZEluQ2FsbC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIzNjczNGMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUNsYXNzRnJvbVVzYWdlL2FmdGVyRW51bVVzZWRJbkNhbGwuamF2YQpAQCAtMCwwICsxLDExIEBACisvLyAiQ3JlYXRlIEVudW0gJ0ZvbyciICJ0cnVlIgorcHVibGljIGNsYXNzIFRlc3QgeworICB2b2lkIGYoSSBpKSB7fQorICB7CisgICAgZihGb28uQ09OU1QpOworICB9Cit9CisKK2ludGVyZmFjZSBJIHt9CisKK3B1YmxpYyBlbnVtIEZvbyBpbXBsZW1lbnRzIEkge30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUNsYXNzRnJvbVVzYWdlL2FmdGVyRXh0ZW5kcy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVDbGFzc0Zyb21Vc2FnZS9hZnRlckV4dGVuZHMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYWExMWE4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVDbGFzc0Zyb21Vc2FnZS9hZnRlckV4dGVuZHMuamF2YQpAQCAtMCwwICsxLDYgQEAKKy8vICJDcmVhdGUgQ2xhc3MgJ0FiYyciICJ0cnVlIgorcHVibGljIGNsYXNzIFRlc3QgZXh0ZW5kcyBBYmMgeworfQorCitwdWJsaWMgY2xhc3MgPGNhcmV0PkFiYyB7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVDbGFzc0Zyb21Vc2FnZS9hZnRlckZpZWxkVHlwZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVDbGFzc0Zyb21Vc2FnZS9hZnRlckZpZWxkVHlwZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUzOTE3OTQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUNsYXNzRnJvbVVzYWdlL2FmdGVyRmllbGRUeXBlLmphdmEKQEAgLTAsMCArMSw3IEBACisvLyAiQ3JlYXRlIENsYXNzICdBYmMnIiAidHJ1ZSIKK3B1YmxpYyBjbGFzcyBUZXN0IHsKKyAgcHJpdmF0ZSBBYmMgZmxkOworfQorCitwdWJsaWMgY2xhc3MgPGNhcmV0PkFiYyB7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVDbGFzc0Zyb21Vc2FnZS9hZnRlckluTmV3QXJncy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVDbGFzc0Zyb21Vc2FnZS9hZnRlckluTmV3QXJncy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY3NWY2MWYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUNsYXNzRnJvbVVzYWdlL2FmdGVySW5OZXdBcmdzLmphdmEKQEAgLTAsMCArMSw5IEBACisvLyAiQ3JlYXRlIENsYXNzICdGb28nIiAidHJ1ZSIKK3B1YmxpYyBjbGFzcyBUZXN0IHsKKyAgdm9pZCBmb28oKSB7CisgICAgbmV3IFRlc3QoRm9vLkZJRUxEKTsKKyAgfQorfQorCitwdWJsaWMgY2xhc3MgRm9vIHsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUNsYXNzRnJvbVVzYWdlL2FmdGVyTWV0aG9kVHlwZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVDbGFzc0Zyb21Vc2FnZS9hZnRlck1ldGhvZFR5cGUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NzgwOWE1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVDbGFzc0Zyb21Vc2FnZS9hZnRlck1ldGhvZFR5cGUuamF2YQpAQCAtMCwwICsxLDcgQEAKKy8vICJDcmVhdGUgQ2xhc3MgJ0FiYyciICJ0cnVlIgorcHVibGljIGNsYXNzIFRlc3QgeworICBwcml2YXRlIEFiYyBmb28oKSB7fQorfQorCitwdWJsaWMgY2xhc3MgPGNhcmV0PkFiYyB7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVDbGFzc0Zyb21Vc2FnZS9hZnRlclBhcmFtZXRlclR5cGUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlQ2xhc3NGcm9tVXNhZ2UvYWZ0ZXJQYXJhbWV0ZXJUeXBlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzUxYzdhMwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlQ2xhc3NGcm9tVXNhZ2UvYWZ0ZXJQYXJhbWV0ZXJUeXBlLmphdmEKQEAgLTAsMCArMSw3IEBACisvLyAiQ3JlYXRlIENsYXNzICdBYmMnIiAidHJ1ZSIKK3B1YmxpYyBjbGFzcyBUZXN0IHsKKyAgcHJpdmF0ZSB2b2lkIGZvbyhBYmMgcGFyYW0pIHt9Cit9CisKK3B1YmxpYyBjbGFzcyA8Y2FyZXQ+QWJjIHsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUNsYXNzRnJvbVVzYWdlL2FmdGVyVHlwZVBhcmFtZXRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVDbGFzc0Zyb21Vc2FnZS9hZnRlclR5cGVQYXJhbWV0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMGM5YjZlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVDbGFzc0Zyb21Vc2FnZS9hZnRlclR5cGVQYXJhbWV0ZXIuamF2YQpAQCAtMCwwICsxLDcgQEAKKy8vICJDcmVhdGUgQ2xhc3MgJ0ZvbyciICJ0cnVlIgorcHVibGljIGNsYXNzIFRlc3QgeworICBMaXN0IGwgPSBuZXcgQXJyYXlMaXN0PEZvbz4oKTsKK30KKworcHVibGljIGNsYXNzIDxjYXJldD5Gb28geworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlQ2xhc3NGcm9tVXNhZ2UvYWZ0ZXJUeXBlUGFyYW1ldGVyQ3JlYXRlZC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVDbGFzc0Zyb21Vc2FnZS9hZnRlclR5cGVQYXJhbWV0ZXJDcmVhdGVkLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjhkOWE4NQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlQ2xhc3NGcm9tVXNhZ2UvYWZ0ZXJUeXBlUGFyYW1ldGVyQ3JlYXRlZC5qYXZhCkBAIC0wLDAgKzEsNyBAQAorLy8gIkNyZWF0ZSBDbGFzcyAnRm9vJyIgInRydWUiCitwdWJsaWMgY2xhc3MgVGVzdCB7CisgIDxSPiB2b2lkIGZvbyhGb288UiwgU3RyaW5nPiBmKXt9Cit9CisKK3B1YmxpYyBjbGFzcyBGb288UiwgVD4geworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlQ2xhc3NGcm9tVXNhZ2UvYmVmb3JlMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVDbGFzc0Zyb21Vc2FnZS9iZWZvcmUxLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjhmOWU4MAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlQ2xhc3NGcm9tVXNhZ2UvYmVmb3JlMS5qYXZhCkBAIC0wLDAgKzEsNiBAQAorLy8gIkNyZWF0ZSBDbGFzcyAnQWJjJyIgInRydWUiCitwdWJsaWMgY2xhc3MgVGVzdCB7CisgIHB1YmxpYyBmb28oaW50IHBwcCkgeworICAgIDxjYXJldD5BYmMuZm9vKCk7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUNsYXNzRnJvbVVzYWdlL2JlZm9yZUNhc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlQ2xhc3NGcm9tVXNhZ2UvYmVmb3JlQ2FzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA1ZGRhZTMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUNsYXNzRnJvbVVzYWdlL2JlZm9yZUNhc3QuamF2YQpAQCAtMCwwICsxLDggQEAKKy8vICJDcmVhdGUgQ2xhc3MgJ0NsYXNzQiciICJ0cnVlIgorcHVibGljIGNsYXNzIENsYXNzQQoreworICBwdWJsaWMgdm9pZCBtQShPYmplY3QgYXJnKQorICB7CisgICAgKCg8Y2FyZXQ+Q2xhc3NCKSBhcmcpLmZvbygpOworICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUNsYXNzRnJvbVVzYWdlL2JlZm9yZUNsYXNzVXNlZEluV2lsZGNhcmQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlQ2xhc3NGcm9tVXNhZ2UvYmVmb3JlQ2xhc3NVc2VkSW5XaWxkY2FyZC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI0NmMwMGUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUNsYXNzRnJvbVVzYWdlL2JlZm9yZUNsYXNzVXNlZEluV2lsZGNhcmQuamF2YQpAQCAtMCwwICsxLDcgQEAKKy8vICJDcmVhdGUgQ2xhc3MgJ0ZvbyciICJ0cnVlIgoraW1wb3J0IGphdmEudXRpbC5Db2xsZWN0aW9uOworcHVibGljIGNsYXNzIFRlc3QgeworICBwdWJsaWMgQ29sbGVjdGlvbjw/IGV4dGVuZHMgRm88Y2FyZXQ+bz4gZ2V0U29tZXRoaW5nKCkgeworICAgIHJldHVybiBudWxsOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVDbGFzc0Zyb21Vc2FnZS9iZWZvcmVFbnVtVXNlZEluQ2FsbC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVDbGFzc0Zyb21Vc2FnZS9iZWZvcmVFbnVtVXNlZEluQ2FsbC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBiMTdhNDgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUNsYXNzRnJvbVVzYWdlL2JlZm9yZUVudW1Vc2VkSW5DYWxsLmphdmEKQEAgLTAsMCArMSw5IEBACisvLyAiQ3JlYXRlIEVudW0gJ0ZvbyciICJ0cnVlIgorcHVibGljIGNsYXNzIFRlc3QgeworICB2b2lkIGYoSSBpKSB7fQorICB7CisgICAgZihGbzxjYXJldD5vLkNPTlNUKTsKKyAgfQorfQorCitpbnRlcmZhY2UgSSB7fQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlQ2xhc3NGcm9tVXNhZ2UvYmVmb3JlRXh0ZW5kcy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVDbGFzc0Zyb21Vc2FnZS9iZWZvcmVFeHRlbmRzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmY4OGExMwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlQ2xhc3NGcm9tVXNhZ2UvYmVmb3JlRXh0ZW5kcy5qYXZhCkBAIC0wLDAgKzEsMyBAQAorLy8gIkNyZWF0ZSBDbGFzcyAnQWJjJyIgInRydWUiCitwdWJsaWMgY2xhc3MgVGVzdCBleHRlbmRzIDxjYXJldD5BYmMgeworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlQ2xhc3NGcm9tVXNhZ2UvYmVmb3JlRmllbGRUeXBlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUNsYXNzRnJvbVVzYWdlL2JlZm9yZUZpZWxkVHlwZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE2ZDk5MmIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUNsYXNzRnJvbVVzYWdlL2JlZm9yZUZpZWxkVHlwZS5qYXZhCkBAIC0wLDAgKzEsNCBAQAorLy8gIkNyZWF0ZSBDbGFzcyAnQWJjJyIgInRydWUiCitwdWJsaWMgY2xhc3MgVGVzdCB7CisgIHByaXZhdGUgPGNhcmV0PkFiYyBmbGQ7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVDbGFzc0Zyb21Vc2FnZS9iZWZvcmVJbk5ld0FyZ3MuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlQ2xhc3NGcm9tVXNhZ2UvYmVmb3JlSW5OZXdBcmdzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmQ1NmVhNAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlQ2xhc3NGcm9tVXNhZ2UvYmVmb3JlSW5OZXdBcmdzLmphdmEKQEAgLTAsMCArMSw2IEBACisvLyAiQ3JlYXRlIENsYXNzICdGb28nIiAidHJ1ZSIKK3B1YmxpYyBjbGFzcyBUZXN0IHsKKyAgdm9pZCBmb28oKSB7CisgICAgbmV3IFRlc3QoRjxjYXJldD5vby5GSUVMRCk7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUNsYXNzRnJvbVVzYWdlL2JlZm9yZU1ldGhvZFR5cGUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlQ2xhc3NGcm9tVXNhZ2UvYmVmb3JlTWV0aG9kVHlwZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc2OTdhNmQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUNsYXNzRnJvbVVzYWdlL2JlZm9yZU1ldGhvZFR5cGUuamF2YQpAQCAtMCwwICsxLDQgQEAKKy8vICJDcmVhdGUgQ2xhc3MgJ0FiYyciICJ0cnVlIgorcHVibGljIGNsYXNzIFRlc3QgeworICBwcml2YXRlIDxjYXJldD5BYmMgZm9vKCkge30KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUNsYXNzRnJvbVVzYWdlL2JlZm9yZU5hMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVDbGFzc0Zyb21Vc2FnZS9iZWZvcmVOYTEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYTJlN2IzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVDbGFzc0Zyb21Vc2FnZS9iZWZvcmVOYTEuamF2YQpAQCAtMCwwICsxLDYgQEAKKy8vICJDcmVhdGUgQ2xhc3MgJ2FiYyciICJmYWxzZSIKK3B1YmxpYyBjbGFzcyBUZXN0IHsKKyAgcHVibGljIHZvaWQgZm9vKGludCBwcHApIHsKKyAgICA8Y2FyZXQ+YWJjLmZvbygpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVDbGFzc0Zyb21Vc2FnZS9iZWZvcmVOYTIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlQ2xhc3NGcm9tVXNhZ2UvYmVmb3JlTmEyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDc4NmMzZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlQ2xhc3NGcm9tVXNhZ2UvYmVmb3JlTmEyLmphdmEKQEAgLTAsMCArMSw2IEBACisvLyAiQ3JlYXRlIENsYXNzICdBYmMnIiAiZmFsc2UiCitwdWJsaWMgY2xhc3MgVGVzdCB7CisgIHB1YmxpYyB2b2lkIGZvbyhpbnQgcHBwKSB7CisgICAgaW50IGxvY2FsID0gcHBwICsgPGNhcmV0PkFiYzsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlQ2xhc3NGcm9tVXNhZ2UvYmVmb3JlUGFyYW1ldGVyVHlwZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVDbGFzc0Zyb21Vc2FnZS9iZWZvcmVQYXJhbWV0ZXJUeXBlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTY5YWQyYgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlQ2xhc3NGcm9tVXNhZ2UvYmVmb3JlUGFyYW1ldGVyVHlwZS5qYXZhCkBAIC0wLDAgKzEsNCBAQAorLy8gIkNyZWF0ZSBDbGFzcyAnQWJjJyIgInRydWUiCitwdWJsaWMgY2xhc3MgVGVzdCB7CisgIHByaXZhdGUgdm9pZCBmb28oPGNhcmV0PkFiYyBwYXJhbSkge30KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUNsYXNzRnJvbVVzYWdlL2JlZm9yZVR5cGVQYXJhbWV0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlQ2xhc3NGcm9tVXNhZ2UvYmVmb3JlVHlwZVBhcmFtZXRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg4YjA0MDIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUNsYXNzRnJvbVVzYWdlL2JlZm9yZVR5cGVQYXJhbWV0ZXIuamF2YQpAQCAtMCwwICsxLDQgQEAKKy8vICJDcmVhdGUgQ2xhc3MgJ0ZvbyciICJ0cnVlIgorcHVibGljIGNsYXNzIFRlc3QgeworICBMaXN0IGwgPSBuZXcgQXJyYXlMaXN0PDxjYXJldD5Gb28+KCk7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVDbGFzc0Zyb21Vc2FnZS9iZWZvcmVUeXBlUGFyYW1ldGVyQ3JlYXRlZC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVDbGFzc0Zyb21Vc2FnZS9iZWZvcmVUeXBlUGFyYW1ldGVyQ3JlYXRlZC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJjMWEzNDcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUNsYXNzRnJvbVVzYWdlL2JlZm9yZVR5cGVQYXJhbWV0ZXJDcmVhdGVkLmphdmEKQEAgLTAsMCArMSw0IEBACisvLyAiQ3JlYXRlIENsYXNzICdGb28nIiAidHJ1ZSIKK3B1YmxpYyBjbGFzcyBUZXN0IHsKKyAgPFI+IHZvaWQgZm9vKEZvPGNhcmV0Pm88UiwgU3RyaW5nPiBmKXt9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVDb25zdHJ1Y3RvckZyb21DYWxsL2FmdGVyMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVDb25zdHJ1Y3RvckZyb21DYWxsL2FmdGVyMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMzZWViZDAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUNvbnN0cnVjdG9yRnJvbUNhbGwvYWZ0ZXIxLmphdmEKQEAgLTAsMCArMSwxNSBAQAorLy8gIkNyZWF0ZSBDb25zdHJ1Y3RvciIgInRydWUiCitwdWJsaWMgY2xhc3MgVGVzdCB7CisgICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oKSB7CisgICAgICAgIG5ldyBNeUNvbGxlY3Rpb24oMTApOworICAgIH0KK30KKworY2xhc3MgTXlDb2xsZWN0aW9uIHsKKyAgICBwdWJsaWMgTXlDb2xsZWN0aW9uKCkgeworICAgIH0KKworICAgIHB1YmxpYyBNeUNvbGxlY3Rpb24oaW50IGkpIHsKKyAgICAgICAgPHNlbGVjdGlvbj4vL1RvIGNoYW5nZSBib2R5IG9mIGNyZWF0ZWQgbWV0aG9kcyB1c2UgRmlsZSB8IFNldHRpbmdzIHwgRmlsZSBUZW1wbGF0ZXMuPC9zZWxlY3Rpb24+CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlQ29uc3RydWN0b3JGcm9tQ2FsbC9hZnRlcjIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlQ29uc3RydWN0b3JGcm9tQ2FsbC9hZnRlcjIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZWYyMTNiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVDb25zdHJ1Y3RvckZyb21DYWxsL2FmdGVyMi5qYXZhCkBAIC0wLDAgKzEsMTIgQEAKKy8vICJDcmVhdGUgQ29uc3RydWN0b3IiICJ0cnVlIgorcHVibGljIGNsYXNzIFRlc3QgeworICAgIHB1YmxpYyB2b2lkIG1haW4yKCkgeworICAgICAgICBuZXcgTXlDb2xsZWN0aW9uKHRoaXMpOworICAgIH0KK30KKworY2xhc3MgTXlDb2xsZWN0aW9uIHsKKyAgICBwdWJsaWMgTXlDb2xsZWN0aW9uKFRlc3QgdGVzdCkgeworICAgICAgICA8c2VsZWN0aW9uPi8vVG8gY2hhbmdlIGJvZHkgb2YgY3JlYXRlZCBtZXRob2RzIHVzZSBGaWxlIHwgU2V0dGluZ3MgfCBGaWxlIFRlbXBsYXRlcy48L3NlbGVjdGlvbj4KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVDb25zdHJ1Y3RvckZyb21DYWxsL2FmdGVyMy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVDb25zdHJ1Y3RvckZyb21DYWxsL2FmdGVyMy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUzNjIyZGIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUNvbnN0cnVjdG9yRnJvbUNhbGwvYWZ0ZXIzLmphdmEKQEAgLTAsMCArMSwxNSBAQAorLy8gIkNyZWF0ZSBDb25zdHJ1Y3RvciIgInRydWUiCitjbGFzcyBPdXRlciB7CisgICAgcHVibGljIE91dGVyKFN0cmluZyBzKSB7CisgICAgfQorCisgICAgdm9pZCBtZXRob2QoT3V0ZXIgb3RoZXIpIHsKKyAgICAgICAgb3RoZXIubmV3IENyZWF0ZUNvbnN0cnVjdG9yRnJvbVVzYWdlKCJwYXJhbWV0ZXIiKTsgLy8gaW52b2tlICJDcmVhdGUgQ29uc3RydWN0b3IiIHF1aWNrIGZpeCBoZXJlCisgICAgfQorCisgICAgY2xhc3MgQ3JlYXRlQ29uc3RydWN0b3JGcm9tVXNhZ2UgeworICAgICAgICBwdWJsaWMgQ3JlYXRlQ29uc3RydWN0b3JGcm9tVXNhZ2UoU3RyaW5nIHBhcmFtZXRlcikgeworICAgICAgICAgICAgPHNlbGVjdGlvbj4vL1RvIGNoYW5nZSBib2R5IG9mIGNyZWF0ZWQgbWV0aG9kcyB1c2UgRmlsZSB8IFNldHRpbmdzIHwgRmlsZSBUZW1wbGF0ZXMuPC9zZWxlY3Rpb24+CisgICAgICAgIH0KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVDb25zdHJ1Y3RvckZyb21DYWxsL2FmdGVyQW5vbi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVDb25zdHJ1Y3RvckZyb21DYWxsL2FmdGVyQW5vbi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcwOWMwNjQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUNvbnN0cnVjdG9yRnJvbUNhbGwvYWZ0ZXJBbm9uLmphdmEKQEAgLTAsMCArMSwxMyBAQAorLy8gIkNyZWF0ZSBDb25zdHJ1Y3RvciIgInRydWUiCitjbGFzcyBUZXN0IHsKKworICAgIHB1YmxpYyB2b2lkIHQoKSB7CisgICAgICAgIG5ldyBJbm5lcigiYSIpe307CisgICAgfQorCisgICAgY2xhc3MgSW5uZXIgeworICAgICAgICBwdWJsaWMgSW5uZXIoU3RyaW5nIGEpIHsKKyAgICAgICAgICAgIDxjYXJldD48c2VsZWN0aW9uPi8vVG8gY2hhbmdlIGJvZHkgb2YgY3JlYXRlZCBtZXRob2RzIHVzZSBGaWxlIHwgU2V0dGluZ3MgfCBGaWxlIFRlbXBsYXRlcy48L3NlbGVjdGlvbj4KKyAgICAgICAgfQorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUNvbnN0cnVjdG9yRnJvbUNhbGwvYWZ0ZXJEZWZhdWx0U3VwZXJDb25zdHJ1Y3Rvci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVDb25zdHJ1Y3RvckZyb21DYWxsL2FmdGVyRGVmYXVsdFN1cGVyQ29uc3RydWN0b3IuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iN2FkMGM5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVDb25zdHJ1Y3RvckZyb21DYWxsL2FmdGVyRGVmYXVsdFN1cGVyQ29uc3RydWN0b3IuamF2YQpAQCAtMCwwICsxLDE2IEBACisvLyAiQ3JlYXRlIENvbnN0cnVjdG9yIiAidHJ1ZSIKK2NsYXNzIFRlc3QgZXh0ZW5kcyBBeworCisgICAgcHVibGljIFRlc3QoU3RyaW5nIGEpIHsKKyAgICAgICAgPHNlbGVjdGlvbj4vL1RvIGNoYW5nZSBib2R5IG9mIGNyZWF0ZWQgbWV0aG9kcyB1c2UgRmlsZSB8IFNldHRpbmdzIHwgRmlsZSBUZW1wbGF0ZXMuPC9zZWxlY3Rpb24+CisgICAgfQorCisgICAgcHVibGljIHZvaWQgdCgpIHsKKyAgICAgICAgbmV3IFRlc3QoImEiKXt9OworICAgIH0KK30KKworY2xhc3MgQSB7CisgIEEoU3RyaW5nIHMpe30KKyAgQSgpe30KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUNvbnN0cnVjdG9yRnJvbUNhbGwvYWZ0ZXJEaXNqdW5jdGlvbi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVDb25zdHJ1Y3RvckZyb21DYWxsL2FmdGVyRGlzanVuY3Rpb24uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNmQ1YTA2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVDb25zdHJ1Y3RvckZyb21DYWxsL2FmdGVyRGlzanVuY3Rpb24uamF2YQpAQCAtMCwwICsxLDIyIEBACisvLyAiQ3JlYXRlIENvbnN0cnVjdG9yIiAidHJ1ZSIKK2NsYXNzIFRlc3QgeworICAgIHZvaWQgZm9vKCkgdGhyb3dzIEV4MSB7fQorICAgIHZvaWQgYmFyKCkgdGhyb3dzIEV4MiB7fQorICAgIHB1YmxpYyB2b2lkIHQoKSB7CisgICAgICB0cnkgeworICAgICAgICBmb28oKTsKKyAgICAgICAgYmFyKCk7CisgICAgICB9CisgICAgICBjYXRjaCAoRXgxIHwgRXgyIGUpIHsKKyAgICAgICAgbmV3IEEoZSk7CisgICAgICB9CisgICAgfQorfQorCitjbGFzcyBBIHsKKyAgICBwdWJsaWMgQShFeGNlcHRpb24gZSkgeworICAgICAgICA8c2VsZWN0aW9uPi8vVG8gY2hhbmdlIGJvZHkgb2YgY3JlYXRlZCBtZXRob2RzIHVzZSBGaWxlIHwgU2V0dGluZ3MgfCBGaWxlIFRlbXBsYXRlcy48L3NlbGVjdGlvbj4KKyAgICB9Cit9CitjbGFzcyBFeDEgZXh0ZW5kcyBFeGNlcHRpb24ge30KK2NsYXNzIEV4MiBleHRlbmRzIEV4Y2VwdGlvbiB7fQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlQ29uc3RydWN0b3JGcm9tQ2FsbC9hZnRlckltcGxpY2l0U3VwZXJDb25zdHJ1Y3Rvci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVDb25zdHJ1Y3RvckZyb21DYWxsL2FmdGVySW1wbGljaXRTdXBlckNvbnN0cnVjdG9yLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDI5M2VkNQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlQ29uc3RydWN0b3JGcm9tQ2FsbC9hZnRlckltcGxpY2l0U3VwZXJDb25zdHJ1Y3Rvci5qYXZhCkBAIC0wLDAgKzEsMTQgQEAKKy8vICJDcmVhdGUgQ29uc3RydWN0b3IiICJ0cnVlIgorY2xhc3MgVGVzdCBleHRlbmRzIEF7CisKKyAgICBwdWJsaWMgVGVzdChTdHJpbmcgYSkgeworICAgICAgICA8c2VsZWN0aW9uPi8vVG8gY2hhbmdlIGJvZHkgb2YgY3JlYXRlZCBtZXRob2RzIHVzZSBGaWxlIHwgU2V0dGluZ3MgfCBGaWxlIFRlbXBsYXRlcy48L3NlbGVjdGlvbj4KKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCB0KCkgeworICAgICAgICBuZXcgVGVzdCgiYSIpe307CisgICAgfQorfQorCitjbGFzcyBBIHsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUNvbnN0cnVjdG9yRnJvbUNhbGwvYWZ0ZXJJbmNvbXBsZXRlRW51bS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVDb25zdHJ1Y3RvckZyb21DYWxsL2FmdGVySW5jb21wbGV0ZUVudW0uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNTczNDA3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVDb25zdHJ1Y3RvckZyb21DYWxsL2FmdGVySW5jb21wbGV0ZUVudW0uamF2YQpAQCAtMCwwICsxLDggQEAKKy8vICJDcmVhdGUgQ29uc3RydWN0b3IiICJ0cnVlIgorcHVibGljIGVudW0gUmVwb3J0VHlwZSB7CisgICAgQUdJTkcoIkFnaW5nIik7CisKKyAgICBSZXBvcnRUeXBlKFN0cmluZyBhZ2luZykgeworICAgICAgICA8c2VsZWN0aW9uPi8vVG8gY2hhbmdlIGJvZHkgb2YgY3JlYXRlZCBtZXRob2RzIHVzZSBGaWxlIHwgU2V0dGluZ3MgfCBGaWxlIFRlbXBsYXRlcy48L3NlbGVjdGlvbj4KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVDb25zdHJ1Y3RvckZyb21DYWxsL2FmdGVySW5zZXJ0U3VwZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlQ29uc3RydWN0b3JGcm9tQ2FsbC9hZnRlckluc2VydFN1cGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTJkY2E0MQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlQ29uc3RydWN0b3JGcm9tQ2FsbC9hZnRlckluc2VydFN1cGVyLmphdmEKQEAgLTAsMCArMSwxNSBAQAorLy8gIkNyZWF0ZSBDb25zdHJ1Y3RvciIgInRydWUiCitjbGFzcyBUZXN0IGV4dGVuZHMgQXsKKworICAgIHB1YmxpYyBUZXN0KFN0cmluZyBhKSB7CisgICAgICAgIDxzZWxlY3Rpb24+c3VwZXIoYSk7ICAgIC8vVG8gY2hhbmdlIGJvZHkgb2Ygb3ZlcnJpZGRlbiBtZXRob2RzIHVzZSBGaWxlIHwgU2V0dGluZ3MgfCBGaWxlIFRlbXBsYXRlcy48L3NlbGVjdGlvbj4KKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCB0KCkgeworICAgICAgICBuZXcgVGVzdCgiYSIpe307CisgICAgfQorfQorCitjbGFzcyBBIHsKKyAgQShTdHJpbmcgcyl7fQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlQ29uc3RydWN0b3JGcm9tQ2FsbC9iZWZvcmUxLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUNvbnN0cnVjdG9yRnJvbUNhbGwvYmVmb3JlMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMwYmMyOGIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUNvbnN0cnVjdG9yRnJvbUNhbGwvYmVmb3JlMS5qYXZhCkBAIC0wLDAgKzEsMTEgQEAKKy8vICJDcmVhdGUgQ29uc3RydWN0b3IiICJ0cnVlIgorcHVibGljIGNsYXNzIFRlc3QgeworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKCkgeworICAgICAgICBuZXcgTXk8Y2FyZXQ+Q29sbGVjdGlvbigxMCk7CisgICAgfQorfQorCitjbGFzcyBNeUNvbGxlY3Rpb24geworICAgIHB1YmxpYyBNeUNvbGxlY3Rpb24oKSB7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlQ29uc3RydWN0b3JGcm9tQ2FsbC9iZWZvcmUyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUNvbnN0cnVjdG9yRnJvbUNhbGwvYmVmb3JlMi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRkNjY4YjYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUNvbnN0cnVjdG9yRnJvbUNhbGwvYmVmb3JlMi5qYXZhCkBAIC0wLDAgKzEsOSBAQAorLy8gIkNyZWF0ZSBDb25zdHJ1Y3RvciIgInRydWUiCitwdWJsaWMgY2xhc3MgVGVzdCB7CisgICAgcHVibGljIHZvaWQgbWFpbjIoKSB7CisgICAgICAgIG5ldyA8Y2FyZXQ+TXlDb2xsZWN0aW9uKHRoaXMpOworICAgIH0KK30KKworY2xhc3MgTXlDb2xsZWN0aW9uIHsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUNvbnN0cnVjdG9yRnJvbUNhbGwvYmVmb3JlMy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVDb25zdHJ1Y3RvckZyb21DYWxsL2JlZm9yZTMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYzZmOTcyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVDb25zdHJ1Y3RvckZyb21DYWxsL2JlZm9yZTMuamF2YQpAQCAtMCwwICsxLDEyIEBACisvLyAiQ3JlYXRlIENvbnN0cnVjdG9yIiAidHJ1ZSIKK2NsYXNzIE91dGVyIHsKKyAgICBwdWJsaWMgT3V0ZXIoU3RyaW5nIHMpIHsKKyAgICB9CisKKyAgICB2b2lkIG1ldGhvZChPdXRlciBvdGhlcikgeworICAgICAgICBvdGhlci5uZXcgPGNhcmV0PkNyZWF0ZUNvbnN0cnVjdG9yRnJvbVVzYWdlKCJwYXJhbWV0ZXIiKTsgLy8gaW52b2tlICJDcmVhdGUgQ29uc3RydWN0b3IiIHF1aWNrIGZpeCBoZXJlCisgICAgfQorCisgICAgY2xhc3MgQ3JlYXRlQ29uc3RydWN0b3JGcm9tVXNhZ2UgeworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUNvbnN0cnVjdG9yRnJvbUNhbGwvYmVmb3JlQW5vbi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVDb25zdHJ1Y3RvckZyb21DYWxsL2JlZm9yZUFub24uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kOWY2ZGFlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVDb25zdHJ1Y3RvckZyb21DYWxsL2JlZm9yZUFub24uamF2YQpAQCAtMCwwICsxLDEwIEBACisvLyAiQ3JlYXRlIENvbnN0cnVjdG9yIiAidHJ1ZSIKK2NsYXNzIFRlc3QgeworCisgICAgcHVibGljIHZvaWQgdCgpIHsKKyAgICAgICAgbmV3IElubmVyKDxjYXJldD4iYSIpe307CisgICAgfQorCisgICAgY2xhc3MgSW5uZXIgeworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUNvbnN0cnVjdG9yRnJvbUNhbGwvYmVmb3JlRGVmYXVsdFN1cGVyQ29uc3RydWN0b3IuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlQ29uc3RydWN0b3JGcm9tQ2FsbC9iZWZvcmVEZWZhdWx0U3VwZXJDb25zdHJ1Y3Rvci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYzNGQyZjEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUNvbnN0cnVjdG9yRnJvbUNhbGwvYmVmb3JlRGVmYXVsdFN1cGVyQ29uc3RydWN0b3IuamF2YQpAQCAtMCwwICsxLDEyIEBACisvLyAiQ3JlYXRlIENvbnN0cnVjdG9yIiAidHJ1ZSIKK2NsYXNzIFRlc3QgZXh0ZW5kcyBBeworCisgICAgcHVibGljIHZvaWQgdCgpIHsKKyAgICAgICAgbmV3IFRlc3QoPGNhcmV0PiJhIil7fTsKKyAgICB9Cit9CisKK2NsYXNzIEEgeworICBBKFN0cmluZyBzKXt9CisgIEEoKXt9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVDb25zdHJ1Y3RvckZyb21DYWxsL2JlZm9yZURpc2p1bmN0aW9uLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUNvbnN0cnVjdG9yRnJvbUNhbGwvYmVmb3JlRGlzanVuY3Rpb24uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZDJlNmM5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVDb25zdHJ1Y3RvckZyb21DYWxsL2JlZm9yZURpc2p1bmN0aW9uLmphdmEKQEAgLTAsMCArMSwxOSBAQAorLy8gIkNyZWF0ZSBDb25zdHJ1Y3RvciIgInRydWUiCitjbGFzcyBUZXN0IHsKKyAgICB2b2lkIGZvbygpIHRocm93cyBFeDEge30KKyAgICB2b2lkIGJhcigpIHRocm93cyBFeDIge30KKyAgICBwdWJsaWMgdm9pZCB0KCkgeworICAgICAgdHJ5IHsKKyAgICAgICAgZm9vKCk7CisgICAgICAgIGJhcigpOworICAgICAgfQorICAgICAgY2F0Y2ggKEV4MSB8IEV4MiBlKSB7CisgICAgICAgIG5ldyBBKDxjYXJldD5lKTsKKyAgICAgIH0KKyAgICB9Cit9CisKK2NsYXNzIEEgeworfQorY2xhc3MgRXgxIGV4dGVuZHMgRXhjZXB0aW9uIHt9CitjbGFzcyBFeDIgZXh0ZW5kcyBFeGNlcHRpb24ge30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUNvbnN0cnVjdG9yRnJvbUNhbGwvYmVmb3JlSW1wbGljaXRTdXBlckNvbnN0cnVjdG9yLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUNvbnN0cnVjdG9yRnJvbUNhbGwvYmVmb3JlSW1wbGljaXRTdXBlckNvbnN0cnVjdG9yLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjllMzE3MgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlQ29uc3RydWN0b3JGcm9tQ2FsbC9iZWZvcmVJbXBsaWNpdFN1cGVyQ29uc3RydWN0b3IuamF2YQpAQCAtMCwwICsxLDEwIEBACisvLyAiQ3JlYXRlIENvbnN0cnVjdG9yIiAidHJ1ZSIKK2NsYXNzIFRlc3QgZXh0ZW5kcyBBeworCisgICAgcHVibGljIHZvaWQgdCgpIHsKKyAgICAgICAgbmV3IFRlc3QoPGNhcmV0PiJhIil7fTsKKyAgICB9Cit9CisKK2NsYXNzIEEgeworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlQ29uc3RydWN0b3JGcm9tQ2FsbC9iZWZvcmVJbmNvbXBsZXRlRW51bS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVDb25zdHJ1Y3RvckZyb21DYWxsL2JlZm9yZUluY29tcGxldGVFbnVtLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjE5NGQyZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlQ29uc3RydWN0b3JGcm9tQ2FsbC9iZWZvcmVJbmNvbXBsZXRlRW51bS5qYXZhCkBAIC0wLDAgKzEsNCBAQAorLy8gIkNyZWF0ZSBDb25zdHJ1Y3RvciIgInRydWUiCitwdWJsaWMgZW51bSBSZXBvcnRUeXBlIHsKKyAgICBBR0lORygiQWdpbmciKTxjYXJldD4KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUNvbnN0cnVjdG9yRnJvbUNhbGwvYmVmb3JlSW5zZXJ0U3VwZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlQ29uc3RydWN0b3JGcm9tQ2FsbC9iZWZvcmVJbnNlcnRTdXBlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmExMzdkMzgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUNvbnN0cnVjdG9yRnJvbUNhbGwvYmVmb3JlSW5zZXJ0U3VwZXIuamF2YQpAQCAtMCwwICsxLDExIEBACisvLyAiQ3JlYXRlIENvbnN0cnVjdG9yIiAidHJ1ZSIKK2NsYXNzIFRlc3QgZXh0ZW5kcyBBeworCisgICAgcHVibGljIHZvaWQgdCgpIHsKKyAgICAgICAgbmV3IFRlc3QoPGNhcmV0PiJhIil7fTsKKyAgICB9Cit9CisKK2NsYXNzIEEgeworICBBKFN0cmluZyBzKXt9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVDb25zdHJ1Y3RvckZyb21TdXBlci9hZnRlcjEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlQ29uc3RydWN0b3JGcm9tU3VwZXIvYWZ0ZXIxLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGNmN2ZjNAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlQ29uc3RydWN0b3JGcm9tU3VwZXIvYWZ0ZXIxLmphdmEKQEAgLTAsMCArMSwxMiBAQAorLy8gIkNyZWF0ZSBDb25zdHJ1Y3RvciBJbiAnQmFzZSciICJ0cnVlIgorY2xhc3MgQmFzZSB7CisgICAgcHVibGljIEJhc2UoaW50IGksIE9iamVjdCBvKSB7CisgICAgICAgIDxzZWxlY3Rpb24+Ly9UbyBjaGFuZ2UgYm9keSBvZiBjcmVhdGVkIG1ldGhvZHMgdXNlIEZpbGUgfCBTZXR0aW5ncyB8IEZpbGUgVGVtcGxhdGVzLjwvc2VsZWN0aW9uPgorICAgIH0KK30KKworcHVibGljIGNsYXNzIERlcml2ZWQgZXh0ZW5kcyBCYXNlIHsKKyAgRGVyaXZlZCAoKSB7CisgICAgc3VwZXIgKDEsIG5ldyBPYmplY3QgKCkpOworICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUNvbnN0cnVjdG9yRnJvbVN1cGVyL2JlZm9yZTEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlQ29uc3RydWN0b3JGcm9tU3VwZXIvYmVmb3JlMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM5YzFhMDEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUNvbnN0cnVjdG9yRnJvbVN1cGVyL2JlZm9yZTEuamF2YQpAQCAtMCwwICsxLDkgQEAKKy8vICJDcmVhdGUgQ29uc3RydWN0b3IgSW4gJ0Jhc2UnIiAidHJ1ZSIKK2NsYXNzIEJhc2UgeworfQorCitwdWJsaWMgY2xhc3MgRGVyaXZlZCBleHRlbmRzIEJhc2UgeworICBEZXJpdmVkICgpIHsKKyAgICBzdTxjYXJldD5wZXIgKDEsIG5ldyBPYmplY3QgKCkpOworICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUNvbnN0cnVjdG9yTWF0Y2hpbmdTdXBlci9hZnRlckdlbmVyaWNzMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVDb25zdHJ1Y3Rvck1hdGNoaW5nU3VwZXIvYWZ0ZXJHZW5lcmljczEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YmI4ODZjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVDb25zdHJ1Y3Rvck1hdGNoaW5nU3VwZXIvYWZ0ZXJHZW5lcmljczEuamF2YQpAQCAtMCwwICsxLDEwIEBACisvLyAiQ3JlYXRlIGNvbnN0cnVjdG9yIG1hdGNoaW5nIHN1cGVyIiAidHJ1ZSIKK3B1YmxpYyBjbGFzcyBUZXN0PFQ+IHsKKyAgICBUZXN0IChUIHQpIHt9Cit9CisKK2NsYXNzIERlcml2ZWQgZXh0ZW5kcyBUZXN0PFN0cmluZz4geworICAgIDxjYXJldD5EZXJpdmVkKFN0cmluZyBzKSB7CisgICAgICAgIHN1cGVyKHMpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUNvbnN0cnVjdG9yTWF0Y2hpbmdTdXBlci9hZnRlcldpdGhvdXRCcmFjZXMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlQ29uc3RydWN0b3JNYXRjaGluZ1N1cGVyL2FmdGVyV2l0aG91dEJyYWNlcy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk5NmQ3OGYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUNvbnN0cnVjdG9yTWF0Y2hpbmdTdXBlci9hZnRlcldpdGhvdXRCcmFjZXMuamF2YQpAQCAtMCwwICsxLDEwIEBACisvLyAiQ3JlYXRlIGNvbnN0cnVjdG9yIG1hdGNoaW5nIHN1cGVyIiAidHJ1ZSIKK3B1YmxpYyBjbGFzcyBUZXN0PFQ+IHsKKyAgICBUZXN0IChUIHQpIHt9Cit9CisKK2NsYXNzIERlcml2ZWQgZXh0ZW5kcyBUZXN0PFN0cmluZz4geworICAgIERlcml2ZWQoU3RyaW5nIHMpIHsKKyAgICAgICAgc3VwZXIocyk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlQ29uc3RydWN0b3JNYXRjaGluZ1N1cGVyL2JlZm9yZUdlbmVyaWNzMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVDb25zdHJ1Y3Rvck1hdGNoaW5nU3VwZXIvYmVmb3JlR2VuZXJpY3MxLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDgyYzIxNgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlQ29uc3RydWN0b3JNYXRjaGluZ1N1cGVyL2JlZm9yZUdlbmVyaWNzMS5qYXZhCkBAIC0wLDAgKzEsNyBAQAorLy8gIkNyZWF0ZSBjb25zdHJ1Y3RvciBtYXRjaGluZyBzdXBlciIgInRydWUiCitwdWJsaWMgY2xhc3MgVGVzdDxUPiB7CisgICAgVGVzdCAoVCB0KSB7fQorfQorCitjbGFzcyA8Y2FyZXQ+RGVyaXZlZCBleHRlbmRzIFRlc3Q8U3RyaW5nPiB7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVDb25zdHJ1Y3Rvck1hdGNoaW5nU3VwZXIvYmVmb3JlV2l0aG91dEJyYWNlcy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVDb25zdHJ1Y3Rvck1hdGNoaW5nU3VwZXIvYmVmb3JlV2l0aG91dEJyYWNlcy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjliNDdjOTMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUNvbnN0cnVjdG9yTWF0Y2hpbmdTdXBlci9iZWZvcmVXaXRob3V0QnJhY2VzLmphdmEKQEAgLTAsMCArMSw2IEBACisvLyAiQ3JlYXRlIGNvbnN0cnVjdG9yIG1hdGNoaW5nIHN1cGVyIiAidHJ1ZSIKK3B1YmxpYyBjbGFzcyBUZXN0PFQ+IHsKKyAgICBUZXN0IChUIHQpIHt9Cit9CisKK2NsYXNzIDxjYXJldD5EZXJpdmVkIGV4dGVuZHMgVGVzdDxTdHJpbmc+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVDb25zdHJ1Y3RvclBhcmFtZXRlckZyb21GaWVsZC9hZnRlcjEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlQ29uc3RydWN0b3JQYXJhbWV0ZXJGcm9tRmllbGQvYWZ0ZXIxLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWZmYzU2OQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlQ29uc3RydWN0b3JQYXJhbWV0ZXJGcm9tRmllbGQvYWZ0ZXIxLmphdmEKQEAgLTAsMCArMSw4IEBACisvLyAiQWRkIGNvbnN0cnVjdG9yIHBhcmFtZXRlciIgInRydWUiCitwdWJsaWMgY2xhc3MgQSB7CisgIHByaXZhdGUgaW50IGZpZWxkOworCisgICAgcHVibGljIEEoaW50IGZpZWxkKSB7CisgICAgICAgIHRoaXMuZmllbGQgPSBmaWVsZDsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVDb25zdHJ1Y3RvclBhcmFtZXRlckZyb21GaWVsZC9hZnRlcjIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlQ29uc3RydWN0b3JQYXJhbWV0ZXJGcm9tRmllbGQvYWZ0ZXIyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTNjMjE5NQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlQ29uc3RydWN0b3JQYXJhbWV0ZXJGcm9tRmllbGQvYWZ0ZXIyLmphdmEKQEAgLTAsMCArMSw4IEBACisvLyAiQWRkIGNvbnN0cnVjdG9yIHBhcmFtZXRlciIgInRydWUiCitjbGFzcyBBIHsKKyAgICBwcml2YXRlIEEgZmllbGQ7CisgICAgcHVibGljIEEoaW50IHgsIEEgZmllbGQpIHsKKyAgICAgICAgLy90aGlzLmZpZWxkID0gZmllbGQ7CisgICAgICAgIHRoaXMuZmllbGQgPSBmaWVsZDsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVDb25zdHJ1Y3RvclBhcmFtZXRlckZyb21GaWVsZC9hZnRlcjMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlQ29uc3RydWN0b3JQYXJhbWV0ZXJGcm9tRmllbGQvYWZ0ZXIzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWJmZWE0MQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlQ29uc3RydWN0b3JQYXJhbWV0ZXJGcm9tRmllbGQvYWZ0ZXIzLmphdmEKQEAgLTAsMCArMSwxNSBAQAorLy8gIkFkZCBjb25zdHJ1Y3RvciBwYXJhbWV0ZXIiICJ0cnVlIgorY2xhc3MgQSB7CisgICAgcHJpdmF0ZSBBIGZpZWxkOworICAgIHB1YmxpYyBBKGludCB4LCBBIGZpZWxkKSB7CisgICAgICAgIHRoaXMuZmllbGQgPSBmaWVsZDsKKyAgICAgICAgaW50IGc9MDsKKyAgICB9CisgICAgQShBIGZpZWxkKSB7CisgICAgICB0aGlzKCIiLCBmaWVsZCk7CisgICAgfQorICAgIEEoU3RyaW5nIHMsIEEgZmllbGQpIHsKKyAgICAgIC8vaGVyZQorICAgICAgICB0aGlzLmZpZWxkID0gZmllbGQ7PGNhcmV0PgorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUNvbnN0cnVjdG9yUGFyYW1ldGVyRnJvbUZpZWxkL2FmdGVyNC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVDb25zdHJ1Y3RvclBhcmFtZXRlckZyb21GaWVsZC9hZnRlcjQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MDdmYjdjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVDb25zdHJ1Y3RvclBhcmFtZXRlckZyb21GaWVsZC9hZnRlcjQuamF2YQpAQCAtMCwwICsxLDggQEAKKy8vICJBZGQgY29uc3RydWN0b3IgcGFyYW1ldGVyIiAidHJ1ZSIKK2NsYXNzIEEgeworICAgIHByaXZhdGUgZmluYWwgQSBmaWVsZDsKKyAgICBwdWJsaWMgQShpbnQgeCwgQSBmaWVsZCkgeworICAgICAgICB0aGlzLmZpZWxkID0gZmllbGQ7PGNhcmV0PgorICAgICAgICBpbnQgZz0wOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUNvbnN0cnVjdG9yUGFyYW1ldGVyRnJvbUZpZWxkL2FmdGVyQWJzdHJhY3RDb25zdHJ1Y3Rvci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVDb25zdHJ1Y3RvclBhcmFtZXRlckZyb21GaWVsZC9hZnRlckFic3RyYWN0Q29uc3RydWN0b3IuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZDA1MDdmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVDb25zdHJ1Y3RvclBhcmFtZXRlckZyb21GaWVsZC9hZnRlckFic3RyYWN0Q29uc3RydWN0b3IuamF2YQpAQCAtMCwwICsxLDExIEBACisvLyAiQWRkIGNvbnN0cnVjdG9yIHBhcmFtZXRlciIgInRydWUiCitwdWJsaWMgZW51bSBMYSB7CisgICAgOworICAgIHByaXZhdGUgU3RyaW5nIHM7CisKKyAgICBwcml2YXRlIExhKFN0cmluZyBzKSB7CisgICAgICAgIHRoaXMucyA9IHM7CisgICAgfQorCisgICAgcHJpdmF0ZSBMYShpbnQgYSwgU3RyaW5nIHMpOworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVDb25zdHJ1Y3RvclBhcmFtZXRlckZyb21GaWVsZC9hZnRlckFmdGVyU2VtaS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVDb25zdHJ1Y3RvclBhcmFtZXRlckZyb21GaWVsZC9hZnRlckFmdGVyU2VtaS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZhNmYwMTAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUNvbnN0cnVjdG9yUGFyYW1ldGVyRnJvbUZpZWxkL2FmdGVyQWZ0ZXJTZW1pLmphdmEKQEAgLTAsMCArMSw4IEBACisvLyAiQWRkIGNvbnN0cnVjdG9yIHBhcmFtZXRlciIgInRydWUiCitwdWJsaWMgY2xhc3MgQSB7CisgICAgcHJpdmF0ZSBmaW5hbCBBIGZpZWxkOworCisgICAgcHVibGljIEEoQSBmaWVsZCkgeworICAgICAgICB0aGlzLmZpZWxkID0gZmllbGQ7PGNhcmV0PgorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUNvbnN0cnVjdG9yUGFyYW1ldGVyRnJvbUZpZWxkL2FmdGVyQWxyZWFkeUFzc2lnbmVkLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUNvbnN0cnVjdG9yUGFyYW1ldGVyRnJvbUZpZWxkL2FmdGVyQWxyZWFkeUFzc2lnbmVkLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTk5NDdlZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlQ29uc3RydWN0b3JQYXJhbWV0ZXJGcm9tRmllbGQvYWZ0ZXJBbHJlYWR5QXNzaWduZWQuamF2YQpAQCAtMCwwICsxLDEyIEBACisvLyAiQWRkIGNvbnN0cnVjdG9yIHBhcmFtZXRlciIgInRydWUiCitjbGFzcyBBIHsKKyAgcHJpdmF0ZSBmaW5hbCBTdHJpbmcgdGV4dDsKKworICBwdWJsaWMgRm9vKFN0cmluZyB0ZXh0KSB7CisgICAgdGhpcy50ZXh0ID0gdGV4dDsKKyAgfQorCisgIHB1YmxpYyBGb28oaW50IGksIFN0cmluZyB0ZXh0KSB7CisgICAgICB0aGlzLnRleHQgPSB0ZXh0OworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVDb25zdHJ1Y3RvclBhcmFtZXRlckZyb21GaWVsZC9hZnRlckNoYWluZWRDYWxscy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVDb25zdHJ1Y3RvclBhcmFtZXRlckZyb21GaWVsZC9hZnRlckNoYWluZWRDYWxscy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU4MmM0Y2UKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUNvbnN0cnVjdG9yUGFyYW1ldGVyRnJvbUZpZWxkL2FmdGVyQ2hhaW5lZENhbGxzLmphdmEKQEAgLTAsMCArMSwxNCBAQAorLy8gIkFkZCBjb25zdHJ1Y3RvciBwYXJhbWV0ZXIiICJ0cnVlIgorY2xhc3MgQSB7CisgIHByaXZhdGUgZmluYWwgaW50IGZpZWxkOworICBwcml2YXRlIGludCBqOworCisgIEEoaW50IGZpZWxkKSB7CisgICAgdGhpcyhmaWVsZCwgMCk7CisgIH0KKworICBBKGludCBmaWVsZCwgaW50IGopIHsKKyAgICAgIHRoaXMuZmllbGQgPSBmaWVsZDsKKyAgICAgIHRoaXMuaiA9IGo7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUNvbnN0cnVjdG9yUGFyYW1ldGVyRnJvbUZpZWxkL2FmdGVyQ2hvb3NlT25lQ29uc3RydWN0b3IuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlQ29uc3RydWN0b3JQYXJhbWV0ZXJGcm9tRmllbGQvYWZ0ZXJDaG9vc2VPbmVDb25zdHJ1Y3Rvci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE1ZDIyYmMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUNvbnN0cnVjdG9yUGFyYW1ldGVyRnJvbUZpZWxkL2FmdGVyQ2hvb3NlT25lQ29uc3RydWN0b3IuamF2YQpAQCAtMCwwICsxLDE1IEBACisvLyAiQWRkIGNvbnN0cnVjdG9yIHBhcmFtZXRlciIgInRydWUiCitjbGFzcyBUZXN0IHsKKyAgICBwcml2YXRlIGZpbmFsIFN0cmluZyBzOworICAgIHByaXZhdGUgZmluYWwgaW50IGk7CisKKyAgICBUZXN0KFN0cmluZyBzKSB7CisgICAgICAgIHRoaXMucyA9IHM7CisgICAgICAgIGkgPSAwOworICAgIH0KKworICAgIFRlc3QoaW50IGkpIHsKKyAgICAgICAgdGhpcy5pID0gaTs8Y2FyZXQ+CisgICAgICAgIHMgPSAicyI7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlQ29uc3RydWN0b3JQYXJhbWV0ZXJGcm9tRmllbGQvYWZ0ZXJHZW5lcmF0ZUVudW1Qcml2YXRlQ29uc3RydWN0b3IuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlQ29uc3RydWN0b3JQYXJhbWV0ZXJGcm9tRmllbGQvYWZ0ZXJHZW5lcmF0ZUVudW1Qcml2YXRlQ29uc3RydWN0b3IuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41M2VjMzdiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVDb25zdHJ1Y3RvclBhcmFtZXRlckZyb21GaWVsZC9hZnRlckdlbmVyYXRlRW51bVByaXZhdGVDb25zdHJ1Y3Rvci5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKKy8vICJBZGQgY29uc3RydWN0b3IgcGFyYW1ldGVyIiAidHJ1ZSIKK3B1YmxpYyBlbnVtIE15RW51bQoreworICBWQUxVRV9PTkUobXlGaWVsZCk7CisgIHByaXZhdGUgZmluYWwgaW50IG15RmllbGQ7CisKKyAgICBwcml2YXRlIE15RW51bShpbnQgbXlGaWVsZCkgeworICAgICAgICB0aGlzLm15RmllbGQgPSBteUZpZWxkOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUNvbnN0cnVjdG9yUGFyYW1ldGVyRnJvbUZpZWxkL2FmdGVyTXVsdGlwbGVGaWVsZHMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlQ29uc3RydWN0b3JQYXJhbWV0ZXJGcm9tRmllbGQvYWZ0ZXJNdWx0aXBsZUZpZWxkcy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc5YTZmOTEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUNvbnN0cnVjdG9yUGFyYW1ldGVyRnJvbUZpZWxkL2FmdGVyTXVsdGlwbGVGaWVsZHMuamF2YQpAQCAtMCwwICsxLDEyIEBACisvLyAiQWRkIGNvbnN0cnVjdG9yIHBhcmFtZXRlcnMiICJ0cnVlIgorY2xhc3MgQSB7CisgIHByaXZhdGUgZmluYWwgaW50IGZpZWxkOworICBwcml2YXRlIGZpbmFsIE9iamVjdCBvOworICBwcml2YXRlIGZpbmFsIFJ1bm5hYmxlIHJ1bm5hYmxlOworICBBKGludCBmaWVsZCwgT2JqZWN0IG8sIFJ1bm5hYmxlIHJ1bm5hYmxlLCBTdHJpbmcuLi4gc3RycykgeworICAgICAgdGhpcy5maWVsZCA9IGZpZWxkOworICAgICAgdGhpcy5vID0gbzsKKyAgICAgIHRoaXMucnVubmFibGUgPSBydW5uYWJsZTsKKyAgfQorCit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUNvbnN0cnVjdG9yUGFyYW1ldGVyRnJvbUZpZWxkL2FmdGVyTXVsdGlwbGVGaWVsZHNOb0NvbnN0cnVjdG9yTm9Vc2FnZXMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlQ29uc3RydWN0b3JQYXJhbWV0ZXJGcm9tRmllbGQvYWZ0ZXJNdWx0aXBsZUZpZWxkc05vQ29uc3RydWN0b3JOb1VzYWdlcy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk3YjJjMzEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUNvbnN0cnVjdG9yUGFyYW1ldGVyRnJvbUZpZWxkL2FmdGVyTXVsdGlwbGVGaWVsZHNOb0NvbnN0cnVjdG9yTm9Vc2FnZXMuamF2YQpAQCAtMCwwICsxLDEyIEBACisvLyAiQWRkIGNvbnN0cnVjdG9yIHBhcmFtZXRlcnMiICJ0cnVlIgorcHVibGljIGNsYXNzIEEgeworICBwcml2YXRlIGZpbmFsIGludCBmaWVsZDsKKyAgcHJpdmF0ZSBmaW5hbCBPYmplY3QgbzsKKyAgcHJpdmF0ZSBmaW5hbCBSdW5uYWJsZSBydW5uYWJsZTsKKworICAgIHB1YmxpYyBBKGludCBmaWVsZCwgT2JqZWN0IG8sIFJ1bm5hYmxlIHJ1bm5hYmxlKSB7CisgICAgICAgIHRoaXMuZmllbGQgPSBmaWVsZDsKKyAgICAgICAgdGhpcy5vID0gbzsKKyAgICAgICAgdGhpcy5ydW5uYWJsZSA9IHJ1bm5hYmxlOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlQ29uc3RydWN0b3JQYXJhbWV0ZXJGcm9tRmllbGQvYWZ0ZXJNdWx0aXBsZUZpZWxkc09uZUFkZGVkLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUNvbnN0cnVjdG9yUGFyYW1ldGVyRnJvbUZpZWxkL2FmdGVyTXVsdGlwbGVGaWVsZHNPbmVBZGRlZC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjViMzg0MGUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUNvbnN0cnVjdG9yUGFyYW1ldGVyRnJvbUZpZWxkL2FmdGVyTXVsdGlwbGVGaWVsZHNPbmVBZGRlZC5qYXZhCkBAIC0wLDAgKzEsMTMgQEAKKy8vICJBZGQgY29uc3RydWN0b3IgcGFyYW1ldGVyIiAidHJ1ZSIKK3B1YmxpYyBjbGFzcyBDb25zdHJ1Y3RvclBhcmFtcyB7CisgICAgcHJpdmF0ZSBmaW5hbCBTdHJpbmcgbXlUZXh0OworICAgIHByaXZhdGUgT2JqZWN0IG15TzsKKworICAgIHB1YmxpYyBDb25zdHJ1Y3RvclBhcmFtcyhTdHJpbmcgbXlUZXh0KSB7CisgICAgICAgIHRoaXMubXlUZXh0ID0gbXlUZXh0OzxjYXJldD4KKyAgICB9CisKKyAgICBwdWJsaWMgQ29uc3RydWN0b3JQYXJhbXMoU3RyaW5nIHRleHQsIGludCBmb28pIHsKKyAgICAgICAgbXlUZXh0ID0gdGV4dDsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUNvbnN0cnVjdG9yUGFyYW1ldGVyRnJvbUZpZWxkL2FmdGVyTXVsdGlwbGVGaWVsZHNPbmVTdGF0aWMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlQ29uc3RydWN0b3JQYXJhbWV0ZXJGcm9tRmllbGQvYWZ0ZXJNdWx0aXBsZUZpZWxkc09uZVN0YXRpYy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBmNzA3YzgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUNvbnN0cnVjdG9yUGFyYW1ldGVyRnJvbUZpZWxkL2FmdGVyTXVsdGlwbGVGaWVsZHNPbmVTdGF0aWMuamF2YQpAQCAtMCwwICsxLDkgQEAKKy8vICJBZGQgY29uc3RydWN0b3IgcGFyYW1ldGVyIiAidHJ1ZSIKK3B1YmxpYyBjbGFzcyBDb25zdHJ1Y3RvclBhcmFtcyB7CisgICAgcHJpdmF0ZSBmaW5hbCBTdHJpbmcgbXlUZXh0OworICAgIHByaXZhdGUgZmluYWwgc3RhdGljIE9iamVjdCBvdXJPOworCisgICAgcHVibGljIENvbnN0cnVjdG9yUGFyYW1zKFN0cmluZyBteVRleHQpIHsKKyAgICAgICAgdGhpcy5teVRleHQgPSBteVRleHQ7PGNhcmV0PgorICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlQ29uc3RydWN0b3JQYXJhbWV0ZXJGcm9tRmllbGQvYWZ0ZXJNdWx0aXBsZUZpZWxkc09uZVdpdGhvdXRJbml0aWFsaXplci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVDb25zdHJ1Y3RvclBhcmFtZXRlckZyb21GaWVsZC9hZnRlck11bHRpcGxlRmllbGRzT25lV2l0aG91dEluaXRpYWxpemVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjk4MjQxYmYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUNvbnN0cnVjdG9yUGFyYW1ldGVyRnJvbUZpZWxkL2FmdGVyTXVsdGlwbGVGaWVsZHNPbmVXaXRob3V0SW5pdGlhbGl6ZXIuamF2YQpAQCAtMCwwICsxLDkgQEAKKy8vICJBZGQgY29uc3RydWN0b3IgcGFyYW1ldGVyIiAidHJ1ZSIKK3B1YmxpYyBjbGFzcyBDb25zdHJ1Y3RvclBhcmFtcyB7CisgICAgcHJpdmF0ZSBmaW5hbCBTdHJpbmcgbXlUZXh0OworICAgIHByaXZhdGUgZmluYWwgT2JqZWN0IG91ck8gPSBudWxsOworCisgICAgcHVibGljIENvbnN0cnVjdG9yUGFyYW1zKFN0cmluZyBteVRleHQpIHsKKyAgICAgICAgdGhpcy5teVRleHQgPSBteVRleHQ7PGNhcmV0PgorICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlQ29uc3RydWN0b3JQYXJhbWV0ZXJGcm9tRmllbGQvYWZ0ZXJOb25udWxsQW5ub3RhdGVkLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUNvbnN0cnVjdG9yUGFyYW1ldGVyRnJvbUZpZWxkL2FmdGVyTm9ubnVsbEFubm90YXRlZC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQzNmQ0NWI5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVDb25zdHJ1Y3RvclBhcmFtZXRlckZyb21GaWVsZC9hZnRlck5vbm51bGxBbm5vdGF0ZWQuamF2YQpAQCAtMCwwICsxLDkgQEAKKy8vICJBZGQgY29uc3RydWN0b3IgcGFyYW1ldGVyIiAidHJ1ZSIKK2NsYXNzIEEgeworICBAamF2YXguYW5ub3RhdGlvbi5Ob25udWxsIHByaXZhdGUgZmluYWwgT2JqZWN0IGZpZWxkOworCisgIEEoQGphdmF4LmFubm90YXRpb24uTm9ubnVsbCBPYmplY3QgZmllbGQsIFN0cmluZy4uLiBzdHJzKSB7CisgICAgICB0aGlzLmZpZWxkID0gZmllbGQ7PGNhcmV0PgorICB9CisKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUNvbnN0cnVjdG9yUGFyYW1ldGVyRnJvbUZpZWxkL2FmdGVyTm90TnVsbEFubm90YXRlZC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVDb25zdHJ1Y3RvclBhcmFtZXRlckZyb21GaWVsZC9hZnRlck5vdE51bGxBbm5vdGF0ZWQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZjY5YmQ0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVDb25zdHJ1Y3RvclBhcmFtZXRlckZyb21GaWVsZC9hZnRlck5vdE51bGxBbm5vdGF0ZWQuamF2YQpAQCAtMCwwICsxLDEwIEBACisvLyAiQWRkIGNvbnN0cnVjdG9yIHBhcmFtZXRlciIgInRydWUiCitpbXBvcnQgb3JnLmpldGJyYWlucy5hbm5vdGF0aW9ucy4qOworY2xhc3MgQSB7CisgIEBOb3ROdWxsIHByaXZhdGUgZmluYWwgT2JqZWN0IGZpZWxkOworCisgIEEoQE5vdE51bGwgT2JqZWN0IGZpZWxkLCBTdHJpbmcuLi4gc3RycykgeworICAgICAgdGhpcy5maWVsZCA9IGZpZWxkOzxjYXJldD4KKyAgfQorCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVDb25zdHJ1Y3RvclBhcmFtZXRlckZyb21GaWVsZC9hZnRlclNhbWVQYXJhbWV0ZXJTaW1wbGVOYW1lcy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVDb25zdHJ1Y3RvclBhcmFtZXRlckZyb21GaWVsZC9hZnRlclNhbWVQYXJhbWV0ZXJTaW1wbGVOYW1lcy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNmNjRiZGMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUNvbnN0cnVjdG9yUGFyYW1ldGVyRnJvbUZpZWxkL2FmdGVyU2FtZVBhcmFtZXRlclNpbXBsZU5hbWVzLmphdmEKQEAgLTAsMCArMSwxMCBAQAorLy8gIkFkZCBjb25zdHJ1Y3RvciBwYXJhbWV0ZXJzIiAidHJ1ZSIKK2NsYXNzIEEgeworICBwcml2YXRlIGZpbmFsIGludCBfZmllbGQ7CisgIHByaXZhdGUgZmluYWwgaW50IGZpZWxkOworICBBKGludCBmaWVsZCwgaW50IGZpZWxkMSkgeworICAgICAgX2ZpZWxkID0gZmllbGQ7CisgICAgICB0aGlzLmZpZWxkID0gZmllbGQxOworICB9CisKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUNvbnN0cnVjdG9yUGFyYW1ldGVyRnJvbUZpZWxkL2FmdGVyVmFyYXJncy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVDb25zdHJ1Y3RvclBhcmFtZXRlckZyb21GaWVsZC9hZnRlclZhcmFyZ3MuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNDJjOGVkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVDb25zdHJ1Y3RvclBhcmFtZXRlckZyb21GaWVsZC9hZnRlclZhcmFyZ3MuamF2YQpAQCAtMCwwICsxLDggQEAKKy8vICJBZGQgY29uc3RydWN0b3IgcGFyYW1ldGVyIiAidHJ1ZSIKK2NsYXNzIEEgeworICBwcml2YXRlIGZpbmFsIGludCBmaWVsZDsKKyAgQShpbnQgZmllbGQsIFN0cmluZy4uLiBzdHJzKSB7CisgICAgICB0aGlzLmZpZWxkID0gZmllbGQ7PGNhcmV0PgorICB9CisKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUNvbnN0cnVjdG9yUGFyYW1ldGVyRnJvbUZpZWxkL2JlZm9yZTEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlQ29uc3RydWN0b3JQYXJhbWV0ZXJGcm9tRmllbGQvYmVmb3JlMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ1ZGUyMTYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUNvbnN0cnVjdG9yUGFyYW1ldGVyRnJvbUZpZWxkL2JlZm9yZTEuamF2YQpAQCAtMCwwICsxLDQgQEAKKy8vICJBZGQgY29uc3RydWN0b3IgcGFyYW1ldGVyIiAidHJ1ZSIKK3B1YmxpYyBjbGFzcyBBIHsKKyAgcHJpdmF0ZSBpbnQgPGNhcmV0PmZpZWxkOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlQ29uc3RydWN0b3JQYXJhbWV0ZXJGcm9tRmllbGQvYmVmb3JlMi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVDb25zdHJ1Y3RvclBhcmFtZXRlckZyb21GaWVsZC9iZWZvcmUyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjAwZWQ5MgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlQ29uc3RydWN0b3JQYXJhbWV0ZXJGcm9tRmllbGQvYmVmb3JlMi5qYXZhCkBAIC0wLDAgKzEsNyBAQAorLy8gIkFkZCBjb25zdHJ1Y3RvciBwYXJhbWV0ZXIiICJ0cnVlIgorY2xhc3MgQSB7CisgICAgcHJpdmF0ZSBBIDxjYXJldD5maWVsZDsKKyAgICBwdWJsaWMgQShpbnQgeCkgeworICAgICAgICAvL3RoaXMuZmllbGQgPSBmaWVsZDsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVDb25zdHJ1Y3RvclBhcmFtZXRlckZyb21GaWVsZC9iZWZvcmUzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUNvbnN0cnVjdG9yUGFyYW1ldGVyRnJvbUZpZWxkL2JlZm9yZTMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZmZmODkxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVDb25zdHJ1Y3RvclBhcmFtZXRlckZyb21GaWVsZC9iZWZvcmUzLmphdmEKQEAgLTAsMCArMSwxMyBAQAorLy8gIkFkZCBjb25zdHJ1Y3RvciBwYXJhbWV0ZXIiICJ0cnVlIgorY2xhc3MgQSB7CisgICAgcHJpdmF0ZSBBIDxjYXJldD5maWVsZDsKKyAgICBwdWJsaWMgQShpbnQgeCkgeworICAgICAgICBpbnQgZz0wOworICAgIH0KKyAgICBBKCkgeworICAgICAgdGhpcygiIik7CisgICAgfQorICAgIEEgKFN0cmluZyBzKSB7CisgICAgICAvL2hlcmUKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVDb25zdHJ1Y3RvclBhcmFtZXRlckZyb21GaWVsZC9iZWZvcmU0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUNvbnN0cnVjdG9yUGFyYW1ldGVyRnJvbUZpZWxkL2JlZm9yZTQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41OGIyZjhkMwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlQ29uc3RydWN0b3JQYXJhbWV0ZXJGcm9tRmllbGQvYmVmb3JlNC5qYXZhCkBAIC0wLDAgKzEsNyBAQAorLy8gIkFkZCBjb25zdHJ1Y3RvciBwYXJhbWV0ZXIiICJ0cnVlIgorY2xhc3MgQSB7CisgICAgcHJpdmF0ZSBmaW5hbCBBIDxjYXJldD5maWVsZDsKKyAgICBwdWJsaWMgQShpbnQgeCkgeworICAgICAgICBpbnQgZz0wOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUNvbnN0cnVjdG9yUGFyYW1ldGVyRnJvbUZpZWxkL2JlZm9yZUFic3RyYWN0Q29uc3RydWN0b3IuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlQ29uc3RydWN0b3JQYXJhbWV0ZXJGcm9tRmllbGQvYmVmb3JlQWJzdHJhY3RDb25zdHJ1Y3Rvci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYyNmY3YzYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUNvbnN0cnVjdG9yUGFyYW1ldGVyRnJvbUZpZWxkL2JlZm9yZUFic3RyYWN0Q29uc3RydWN0b3IuamF2YQpAQCAtMCwwICsxLDEwIEBACisvLyAiQWRkIGNvbnN0cnVjdG9yIHBhcmFtZXRlciIgInRydWUiCitwdWJsaWMgZW51bSBMYSB7CisgICAgOworICAgIHByaXZhdGUgU3RyaW5nIHM8Y2FyZXQ+OworCisgICAgcHJpdmF0ZSBMYSgpIHsKKyAgICB9CisKKyAgICBwcml2YXRlIExhKGludCBhKTsKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlQ29uc3RydWN0b3JQYXJhbWV0ZXJGcm9tRmllbGQvYmVmb3JlQWZ0ZXJTZW1pLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUNvbnN0cnVjdG9yUGFyYW1ldGVyRnJvbUZpZWxkL2JlZm9yZUFmdGVyU2VtaS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ5MGJhYmQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUNvbnN0cnVjdG9yUGFyYW1ldGVyRnJvbUZpZWxkL2JlZm9yZUFmdGVyU2VtaS5qYXZhCkBAIC0wLDAgKzEsNCBAQAorLy8gIkFkZCBjb25zdHJ1Y3RvciBwYXJhbWV0ZXIiICJ0cnVlIgorcHVibGljIGNsYXNzIEEgeworICAgIHByaXZhdGUgZmluYWwgQSBmaWVsZDs8Y2FyZXQ+Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVDb25zdHJ1Y3RvclBhcmFtZXRlckZyb21GaWVsZC9iZWZvcmVBbHJlYWR5QXNzaWduZWQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlQ29uc3RydWN0b3JQYXJhbWV0ZXJGcm9tRmllbGQvYmVmb3JlQWxyZWFkeUFzc2lnbmVkLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmQ2OThkYwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlQ29uc3RydWN0b3JQYXJhbWV0ZXJGcm9tRmllbGQvYmVmb3JlQWxyZWFkeUFzc2lnbmVkLmphdmEKQEAgLTAsMCArMSwxMSBAQAorLy8gIkFkZCBjb25zdHJ1Y3RvciBwYXJhbWV0ZXIiICJ0cnVlIgorY2xhc3MgQSB7CisgIHByaXZhdGUgZmluYWwgU3RyaW5nIHRlPGNhcmV0Pnh0OworCisgIHB1YmxpYyBGb28oU3RyaW5nIHRleHQpIHsKKyAgICB0aGlzLnRleHQgPSB0ZXh0OworICB9CisKKyAgcHVibGljIEZvbyhpbnQgaSkgeworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVDb25zdHJ1Y3RvclBhcmFtZXRlckZyb21GaWVsZC9iZWZvcmVDaGFpbmVkQ2FsbHMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlQ29uc3RydWN0b3JQYXJhbWV0ZXJGcm9tRmllbGQvYmVmb3JlQ2hhaW5lZENhbGxzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWIxZjkzMQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlQ29uc3RydWN0b3JQYXJhbWV0ZXJGcm9tRmllbGQvYmVmb3JlQ2hhaW5lZENhbGxzLmphdmEKQEAgLTAsMCArMSwxMyBAQAorLy8gIkFkZCBjb25zdHJ1Y3RvciBwYXJhbWV0ZXIiICJ0cnVlIgorY2xhc3MgQSB7CisgIHByaXZhdGUgZmluYWwgaW50IDxjYXJldD5maWVsZDsKKyAgcHJpdmF0ZSBpbnQgajsKKworICBBKCkgeworICAgIHRoaXMoMCk7CisgIH0KKworICBBKGludCBqKSB7CisgICAgdGhpcy5qID0gajsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlQ29uc3RydWN0b3JQYXJhbWV0ZXJGcm9tRmllbGQvYmVmb3JlQ2hvb3NlT25lQ29uc3RydWN0b3IuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlQ29uc3RydWN0b3JQYXJhbWV0ZXJGcm9tRmllbGQvYmVmb3JlQ2hvb3NlT25lQ29uc3RydWN0b3IuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNDUzOTYxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVDb25zdHJ1Y3RvclBhcmFtZXRlckZyb21GaWVsZC9iZWZvcmVDaG9vc2VPbmVDb25zdHJ1Y3Rvci5qYXZhCkBAIC0wLDAgKzEsMTQgQEAKKy8vICJBZGQgY29uc3RydWN0b3IgcGFyYW1ldGVyIiAidHJ1ZSIKK2NsYXNzIFRlc3QgeworICAgIHByaXZhdGUgZmluYWwgU3RyaW5nIHM7CisgICAgcHJpdmF0ZSBmaW5hbCBpbnQgaTxjYXJldD47CisKKyAgICBUZXN0KFN0cmluZyBzKSB7CisgICAgICAgIHRoaXMucyA9IHM7CisgICAgICAgIGkgPSAwOworICAgIH0KKworICAgIFRlc3QoKSB7CisgICAgICAgIHMgPSAicyI7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlQ29uc3RydWN0b3JQYXJhbWV0ZXJGcm9tRmllbGQvYmVmb3JlR2VuZXJhdGVFbnVtUHJpdmF0ZUNvbnN0cnVjdG9yLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUNvbnN0cnVjdG9yUGFyYW1ldGVyRnJvbUZpZWxkL2JlZm9yZUdlbmVyYXRlRW51bVByaXZhdGVDb25zdHJ1Y3Rvci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU3Y2EwNDMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUNvbnN0cnVjdG9yUGFyYW1ldGVyRnJvbUZpZWxkL2JlZm9yZUdlbmVyYXRlRW51bVByaXZhdGVDb25zdHJ1Y3Rvci5qYXZhCkBAIC0wLDAgKzEsNiBAQAorLy8gIkFkZCBjb25zdHJ1Y3RvciBwYXJhbWV0ZXIiICJ0cnVlIgorcHVibGljIGVudW0gTXlFbnVtCit7CisgIFZBTFVFX09ORTsKKyAgcHJpdmF0ZSBmaW5hbCBpbnQgbXlGaTxjYXJldD5lbGQ7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVDb25zdHJ1Y3RvclBhcmFtZXRlckZyb21GaWVsZC9iZWZvcmVNdWx0aXBsZUZpZWxkcy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVDb25zdHJ1Y3RvclBhcmFtZXRlckZyb21GaWVsZC9iZWZvcmVNdWx0aXBsZUZpZWxkcy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlhZThhNTAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUNvbnN0cnVjdG9yUGFyYW1ldGVyRnJvbUZpZWxkL2JlZm9yZU11bHRpcGxlRmllbGRzLmphdmEKQEAgLTAsMCArMSw5IEBACisvLyAiQWRkIGNvbnN0cnVjdG9yIHBhcmFtZXRlcnMiICJ0cnVlIgorY2xhc3MgQSB7CisgIHByaXZhdGUgZmluYWwgaW50IDxjYXJldD5maWVsZDsKKyAgcHJpdmF0ZSBmaW5hbCBPYmplY3QgbzsKKyAgcHJpdmF0ZSBmaW5hbCBSdW5uYWJsZSBydW5uYWJsZTsKKyAgQShTdHJpbmcuLi4gc3RycykgeworICB9CisKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlQ29uc3RydWN0b3JQYXJhbWV0ZXJGcm9tRmllbGQvYmVmb3JlTXVsdGlwbGVGaWVsZHNOb0NvbnN0cnVjdG9yTm9Vc2FnZXMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlQ29uc3RydWN0b3JQYXJhbWV0ZXJGcm9tRmllbGQvYmVmb3JlTXVsdGlwbGVGaWVsZHNOb0NvbnN0cnVjdG9yTm9Vc2FnZXMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZjk2YjU2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVDb25zdHJ1Y3RvclBhcmFtZXRlckZyb21GaWVsZC9iZWZvcmVNdWx0aXBsZUZpZWxkc05vQ29uc3RydWN0b3JOb1VzYWdlcy5qYXZhCkBAIC0wLDAgKzEsNiBAQAorLy8gIkFkZCBjb25zdHJ1Y3RvciBwYXJhbWV0ZXJzIiAidHJ1ZSIKK3B1YmxpYyBjbGFzcyBBIHsKKyAgcHJpdmF0ZSBmaW5hbCBpbnQgPGNhcmV0PmZpZWxkOworICBwcml2YXRlIGZpbmFsIE9iamVjdCBvOworICBwcml2YXRlIGZpbmFsIFJ1bm5hYmxlIHJ1bm5hYmxlOworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVDb25zdHJ1Y3RvclBhcmFtZXRlckZyb21GaWVsZC9iZWZvcmVNdWx0aXBsZUZpZWxkc09uZUFkZGVkLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUNvbnN0cnVjdG9yUGFyYW1ldGVyRnJvbUZpZWxkL2JlZm9yZU11bHRpcGxlRmllbGRzT25lQWRkZWQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMTQ1ODE5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVDb25zdHJ1Y3RvclBhcmFtZXRlckZyb21GaWVsZC9iZWZvcmVNdWx0aXBsZUZpZWxkc09uZUFkZGVkLmphdmEKQEAgLTAsMCArMSwxMiBAQAorLy8gIkFkZCBjb25zdHJ1Y3RvciBwYXJhbWV0ZXIiICJ0cnVlIgorcHVibGljIGNsYXNzIENvbnN0cnVjdG9yUGFyYW1zIHsKKyAgICBwcml2YXRlIGZpbmFsIFN0cmluZyBteTxjYXJldD5UZXh0OworICAgIHByaXZhdGUgT2JqZWN0IG15TzsKKworICAgIHB1YmxpYyBDb25zdHJ1Y3RvclBhcmFtcygpIHsKKyAgICB9CisKKyAgICBwdWJsaWMgQ29uc3RydWN0b3JQYXJhbXMoU3RyaW5nIHRleHQsIGludCBmb28pIHsKKyAgICAgICAgbXlUZXh0ID0gdGV4dDsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUNvbnN0cnVjdG9yUGFyYW1ldGVyRnJvbUZpZWxkL2JlZm9yZU11bHRpcGxlRmllbGRzT25lU3RhdGljLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUNvbnN0cnVjdG9yUGFyYW1ldGVyRnJvbUZpZWxkL2JlZm9yZU11bHRpcGxlRmllbGRzT25lU3RhdGljLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjYxNDNlOAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlQ29uc3RydWN0b3JQYXJhbWV0ZXJGcm9tRmllbGQvYmVmb3JlTXVsdGlwbGVGaWVsZHNPbmVTdGF0aWMuamF2YQpAQCAtMCwwICsxLDggQEAKKy8vICJBZGQgY29uc3RydWN0b3IgcGFyYW1ldGVyIiAidHJ1ZSIKK3B1YmxpYyBjbGFzcyBDb25zdHJ1Y3RvclBhcmFtcyB7CisgICAgcHJpdmF0ZSBmaW5hbCBTdHJpbmcgbXk8Y2FyZXQ+VGV4dDsKKyAgICBwcml2YXRlIGZpbmFsIHN0YXRpYyBPYmplY3Qgb3VyTzsKKworICAgIHB1YmxpYyBDb25zdHJ1Y3RvclBhcmFtcygpIHsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUNvbnN0cnVjdG9yUGFyYW1ldGVyRnJvbUZpZWxkL2JlZm9yZU11bHRpcGxlRmllbGRzT25lV2l0aG91dEluaXRpYWxpemVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUNvbnN0cnVjdG9yUGFyYW1ldGVyRnJvbUZpZWxkL2JlZm9yZU11bHRpcGxlRmllbGRzT25lV2l0aG91dEluaXRpYWxpemVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGUzZGU3MwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlQ29uc3RydWN0b3JQYXJhbWV0ZXJGcm9tRmllbGQvYmVmb3JlTXVsdGlwbGVGaWVsZHNPbmVXaXRob3V0SW5pdGlhbGl6ZXIuamF2YQpAQCAtMCwwICsxLDggQEAKKy8vICJBZGQgY29uc3RydWN0b3IgcGFyYW1ldGVyIiAidHJ1ZSIKK3B1YmxpYyBjbGFzcyBDb25zdHJ1Y3RvclBhcmFtcyB7CisgICAgcHJpdmF0ZSBmaW5hbCBTdHJpbmcgbXk8Y2FyZXQ+VGV4dDsKKyAgICBwcml2YXRlIGZpbmFsIE9iamVjdCBvdXJPID0gbnVsbDsKKworICAgIHB1YmxpYyBDb25zdHJ1Y3RvclBhcmFtcygpIHsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUNvbnN0cnVjdG9yUGFyYW1ldGVyRnJvbUZpZWxkL2JlZm9yZU5vbm51bGxBbm5vdGF0ZWQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlQ29uc3RydWN0b3JQYXJhbWV0ZXJGcm9tRmllbGQvYmVmb3JlTm9ubnVsbEFubm90YXRlZC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVhNmM0YTAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUNvbnN0cnVjdG9yUGFyYW1ldGVyRnJvbUZpZWxkL2JlZm9yZU5vbm51bGxBbm5vdGF0ZWQuamF2YQpAQCAtMCwwICsxLDggQEAKKy8vICJBZGQgY29uc3RydWN0b3IgcGFyYW1ldGVyIiAidHJ1ZSIKK2NsYXNzIEEgeworICBAamF2YXguYW5ub3RhdGlvbi5Ob25udWxsIHByaXZhdGUgZmluYWwgT2JqZWN0IDxjYXJldD5maWVsZDsKKworICBBKFN0cmluZy4uLiBzdHJzKSB7CisgIH0KKworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlQ29uc3RydWN0b3JQYXJhbWV0ZXJGcm9tRmllbGQvYmVmb3JlTm90TnVsbEFubm90YXRlZC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVDb25zdHJ1Y3RvclBhcmFtZXRlckZyb21GaWVsZC9iZWZvcmVOb3ROdWxsQW5ub3RhdGVkLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjJjNDFhOAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlQ29uc3RydWN0b3JQYXJhbWV0ZXJGcm9tRmllbGQvYmVmb3JlTm90TnVsbEFubm90YXRlZC5qYXZhCkBAIC0wLDAgKzEsOSBAQAorLy8gIkFkZCBjb25zdHJ1Y3RvciBwYXJhbWV0ZXIiICJ0cnVlIgoraW1wb3J0IG9yZy5qZXRicmFpbnMuYW5ub3RhdGlvbnMuKjsKK2NsYXNzIEEgeworICBATm90TnVsbCBwcml2YXRlIGZpbmFsIE9iamVjdCA8Y2FyZXQ+ZmllbGQ7CisKKyAgQShTdHJpbmcuLi4gc3RycykgeworICB9CisKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUNvbnN0cnVjdG9yUGFyYW1ldGVyRnJvbUZpZWxkL2JlZm9yZVNhbWVQYXJhbWV0ZXJTaW1wbGVOYW1lcy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVDb25zdHJ1Y3RvclBhcmFtZXRlckZyb21GaWVsZC9iZWZvcmVTYW1lUGFyYW1ldGVyU2ltcGxlTmFtZXMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lY2YyNGU3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVDb25zdHJ1Y3RvclBhcmFtZXRlckZyb21GaWVsZC9iZWZvcmVTYW1lUGFyYW1ldGVyU2ltcGxlTmFtZXMuamF2YQpAQCAtMCwwICsxLDggQEAKKy8vICJBZGQgY29uc3RydWN0b3IgcGFyYW1ldGVycyIgInRydWUiCitjbGFzcyBBIHsKKyAgcHJpdmF0ZSBmaW5hbCBpbnQgPGNhcmV0Pl9maWVsZDsKKyAgcHJpdmF0ZSBmaW5hbCBpbnQgZmllbGQ7CisgIEEoKSB7CisgIH0KKworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlQ29uc3RydWN0b3JQYXJhbWV0ZXJGcm9tRmllbGQvYmVmb3JlU3RhdGljLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUNvbnN0cnVjdG9yUGFyYW1ldGVyRnJvbUZpZWxkL2JlZm9yZVN0YXRpYy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNmNDlmZTIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUNvbnN0cnVjdG9yUGFyYW1ldGVyRnJvbUZpZWxkL2JlZm9yZVN0YXRpYy5qYXZhCkBAIC0wLDAgKzEsNyBAQAorLy8gIkFkZCBjb25zdHJ1Y3RvciBwYXJhbWV0ZXIiICJmYWxzZSIKK2NsYXNzIEEgeworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIEEgPGNhcmV0PmZpZWxkOworICAgIHB1YmxpYyBBKGludCB4KSB7CisgICAgICAgIGludCBnPTA7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlQ29uc3RydWN0b3JQYXJhbWV0ZXJGcm9tRmllbGQvYmVmb3JlVmFyYXJncy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVDb25zdHJ1Y3RvclBhcmFtZXRlckZyb21GaWVsZC9iZWZvcmVWYXJhcmdzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzRiNzZmOQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlQ29uc3RydWN0b3JQYXJhbWV0ZXJGcm9tRmllbGQvYmVmb3JlVmFyYXJncy5qYXZhCkBAIC0wLDAgKzEsNyBAQAorLy8gIkFkZCBjb25zdHJ1Y3RvciBwYXJhbWV0ZXIiICJ0cnVlIgorY2xhc3MgQSB7CisgIHByaXZhdGUgZmluYWwgaW50IDxjYXJldD5maWVsZDsKKyAgQShTdHJpbmcuLi4gc3RycykgeworICB9CisKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUVudW1Db25zdGFudEZyb21Vc2FnZS9hZnRlcjEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlRW51bUNvbnN0YW50RnJvbVVzYWdlL2FmdGVyMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgxYWQxMTYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUVudW1Db25zdGFudEZyb21Vc2FnZS9hZnRlcjEuamF2YQpAQCAtMCwwICsxLDggQEAKKy8vICJDcmVhdGUgRW51bSBDb25zdGFudCAnRUVFJyIgInRydWUiCisKK2VudW0gRSB7CisgICAgRUVFOworICAgIHZvaWQgdCgpIHsKKyAgICAgICAgRUVFCisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlRW51bUNvbnN0YW50RnJvbVVzYWdlL2FmdGVyMi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVFbnVtQ29uc3RhbnRGcm9tVXNhZ2UvYWZ0ZXIyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDZlYTkzOQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlRW51bUNvbnN0YW50RnJvbVVzYWdlL2FmdGVyMi5qYXZhCkBAIC0wLDAgKzEsOCBAQAorLy8gIkNyZWF0ZSBFbnVtIENvbnN0YW50ICdFRUUnIiAidHJ1ZSIKKworZW51bSBFIHsKKyAgICBBQUEsIEVFRTsKKyAgICB2b2lkIHQoKSB7CisgICAgICAgIEVFRQorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUVudW1Db25zdGFudEZyb21Vc2FnZS9hZnRlcjQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlRW51bUNvbnN0YW50RnJvbVVzYWdlL2FmdGVyNC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdiZDk3NDQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUVudW1Db25zdGFudEZyb21Vc2FnZS9hZnRlcjQuamF2YQpAQCAtMCwwICsxLDExIEBACisvLyAiQ3JlYXRlIEVudW0gQ29uc3RhbnQgJ0VFRSciICJ0cnVlIgorY2xhc3MgT3RoZXIgeworICBwdWJsaWMgT3RoZXIoKSB7CisgICAgTXlFbnVtIGVlZSA9ICBNeUVudW0uRUVFOworICB9Cit9CisKK2VudW0gTXlFbnVtIHsKKyAgICBFRUUKKworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVFbnVtQ29uc3RhbnRGcm9tVXNhZ2UvYWZ0ZXI1LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUVudW1Db25zdGFudEZyb21Vc2FnZS9hZnRlcjUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMzQ5MzQ2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVFbnVtQ29uc3RhbnRGcm9tVXNhZ2UvYWZ0ZXI1LmphdmEKQEAgLTAsMCArMSwxMyBAQAorLy8gIkNyZWF0ZSBFbnVtIENvbnN0YW50ICdCZWFuMyciICJ0cnVlIgorQGludGVyZmFjZSBCZWFuQXdhcmUgeworICAgIEJlYW5OYW1lW10gdmFsdWUoKTsKK30KKworZW51bSBCZWFuTmFtZSB7CisgICAgQmVhbjEsCisgICAgQmVhbjIsIEJlYW4zOworfQorCitAQmVhbkF3YXJlKHZhbHVlID0gQmVhbk5hbWUuQmVhbjMpCitpbnRlcmZhY2UgTXlCZWFuQXdhcmUgeworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlRW51bUNvbnN0YW50RnJvbVVzYWdlL2FmdGVyUGFzc0FyZ3MuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlRW51bUNvbnN0YW50RnJvbVVzYWdlL2FmdGVyUGFzc0FyZ3MuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNDJmNWU3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVFbnVtQ29uc3RhbnRGcm9tVXNhZ2UvYWZ0ZXJQYXNzQXJncy5qYXZhCkBAIC0wLDAgKzEsMTkgQEAKKy8vICJDcmVhdGUgRW51bSBDb25zdGFudCAnRDMnIiAidHJ1ZSIKK3B1YmxpYyBlbnVtIERlbW8geworCisgICAgRDEoImZvbyIpLAorICAgIEQyKCJiYXIiKSwgRDMoKTxjYXJldD47CisgICAgcHJpdmF0ZSBTdHJpbmcgbmFtZTsKKworICAgIERlbW8oU3RyaW5nIG5hbWUpIHsKKworICAgICAgICB0aGlzLm5hbWUgPSBuYW1lOworICAgIH0KK30KKworY2xhc3MgU2hvdyB7CisKKyAgICBwdWJsaWMgdm9pZCBkb1NvbWV0aGluZygpIHsKKyAgICAgICAgRGVtby5EMworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUVudW1Db25zdGFudEZyb21Vc2FnZS9hZnRlclN3aXRjaExhYmVsLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUVudW1Db25zdGFudEZyb21Vc2FnZS9hZnRlclN3aXRjaExhYmVsLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTZkYjUwYgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlRW51bUNvbnN0YW50RnJvbVVzYWdlL2FmdGVyU3dpdGNoTGFiZWwuamF2YQpAQCAtMCwwICsxLDE0IEBACisvLyAiQ3JlYXRlIEVudW0gQ29uc3RhbnQgJ0QzJyIgInRydWUiCitwdWJsaWMgZW51bSBEZW1vIHsKKyAgICBEMworfQorCitjbGFzcyBTaG93IHsKKworICAgIHB1YmxpYyB2b2lkIGRvU29tZXRoaW5nKERlbW8gZCkgeworICAgICAgICBzd2l0Y2ggKGQpIHsKKyAgICAgICAgICBjYXNlIEQzOgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVFbnVtQ29uc3RhbnRGcm9tVXNhZ2UvYWZ0ZXJTd2l0Y2hMYWJlbDEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlRW51bUNvbnN0YW50RnJvbVVzYWdlL2FmdGVyU3dpdGNoTGFiZWwxLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmIwM2MxMQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlRW51bUNvbnN0YW50RnJvbVVzYWdlL2FmdGVyU3dpdGNoTGFiZWwxLmphdmEKQEAgLTAsMCArMSwxNCBAQAorLy8gIkNyZWF0ZSBFbnVtIENvbnN0YW50ICdEMyciICJ0cnVlIgorcHVibGljIGVudW0gRGVtbyB7CisgICAgRDMKK30KKworY2xhc3MgU2hvdyB7CisKKyAgICBwdWJsaWMgdm9pZCBkb1NvbWV0aGluZyhEZW1vIGQpIHsKKyAgICAgICAgc3dpdGNoIChkKSB7CisgICAgICAgICAgY2FzZSBEZW1vLkQzOgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVFbnVtQ29uc3RhbnRGcm9tVXNhZ2UvYmVmb3JlMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVFbnVtQ29uc3RhbnRGcm9tVXNhZ2UvYmVmb3JlMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYwNDRiYzEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUVudW1Db25zdGFudEZyb21Vc2FnZS9iZWZvcmUxLmphdmEKQEAgLTAsMCArMSw4IEBACisvLyAiQ3JlYXRlIEVudW0gQ29uc3RhbnQgJ0VFRSciICJ0cnVlIgorCitlbnVtIEUgeworICAgIDsKKyAgICB2b2lkIHQoKSB7CisgICAgICAgIDxjYXJldD5FRUUKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVFbnVtQ29uc3RhbnRGcm9tVXNhZ2UvYmVmb3JlMi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVFbnVtQ29uc3RhbnRGcm9tVXNhZ2UvYmVmb3JlMi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgyZmUxMmYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUVudW1Db25zdGFudEZyb21Vc2FnZS9iZWZvcmUyLmphdmEKQEAgLTAsMCArMSw4IEBACisvLyAiQ3JlYXRlIEVudW0gQ29uc3RhbnQgJ0VFRSciICJ0cnVlIgorCitlbnVtIEUgeworICAgIEFBQTsKKyAgICB2b2lkIHQoKSB7CisgICAgICAgIDxjYXJldD5FRUUKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVFbnVtQ29uc3RhbnRGcm9tVXNhZ2UvYmVmb3JlMy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVFbnVtQ29uc3RhbnRGcm9tVXNhZ2UvYmVmb3JlMy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdiOWU2MDUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUVudW1Db25zdGFudEZyb21Vc2FnZS9iZWZvcmUzLmphdmEKQEAgLTAsMCArMSw4IEBACisvLyAiQ3JlYXRlIEVudW0gQ29uc3RhbnQgJ0VFRSciICJmYWxzZSIKKworZW51bSBFIHsKKyAgICBBQUE7CisgICAgdm9pZCB0KCkgeworICAgICAgICBpbnQgdCA9IDxjYXJldD5FRUU7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlRW51bUNvbnN0YW50RnJvbVVzYWdlL2JlZm9yZTQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlRW51bUNvbnN0YW50RnJvbVVzYWdlL2JlZm9yZTQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMjgzNmZmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVFbnVtQ29uc3RhbnRGcm9tVXNhZ2UvYmVmb3JlNC5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKKy8vICJDcmVhdGUgRW51bSBDb25zdGFudCAnRUVFJyIgInRydWUiCitjbGFzcyBPdGhlciB7CisgIHB1YmxpYyBPdGhlcigpIHsKKyAgICBNeUVudW0gZWVlID0gIE15RW51bS48Y2FyZXQ+RUVFOworICB9Cit9CisKK2VudW0gTXlFbnVtIHsKKworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVFbnVtQ29uc3RhbnRGcm9tVXNhZ2UvYmVmb3JlNS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVFbnVtQ29uc3RhbnRGcm9tVXNhZ2UvYmVmb3JlNS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRmMDYxZDkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUVudW1Db25zdGFudEZyb21Vc2FnZS9iZWZvcmU1LmphdmEKQEAgLTAsMCArMSwxMyBAQAorLy8gIkNyZWF0ZSBFbnVtIENvbnN0YW50ICdCZWFuMyciICJ0cnVlIgorQGludGVyZmFjZSBCZWFuQXdhcmUgeworICAgIEJlYW5OYW1lW10gdmFsdWUoKTsKK30KKworZW51bSBCZWFuTmFtZSB7CisgICAgQmVhbjEsCisgICAgQmVhbjI7Cit9CisKK0BCZWFuQXdhcmUodmFsdWUgPSBCZWFuTmFtZS5CZWFuMzxjYXJldD4pCitpbnRlcmZhY2UgTXlCZWFuQXdhcmUgeworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlRW51bUNvbnN0YW50RnJvbVVzYWdlL2JlZm9yZVBhc3NBcmdzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUVudW1Db25zdGFudEZyb21Vc2FnZS9iZWZvcmVQYXNzQXJncy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk2MWFjN2EKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUVudW1Db25zdGFudEZyb21Vc2FnZS9iZWZvcmVQYXNzQXJncy5qYXZhCkBAIC0wLDAgKzEsMTkgQEAKKy8vICJDcmVhdGUgRW51bSBDb25zdGFudCAnRDMnIiAidHJ1ZSIKK3B1YmxpYyBlbnVtIERlbW8geworCisgICAgRDEoImZvbyIpLAorICAgIEQyKCJiYXIiKTsKKyAgICBwcml2YXRlIFN0cmluZyBuYW1lOworCisgICAgRGVtbyhTdHJpbmcgbmFtZSkgeworCisgICAgICAgIHRoaXMubmFtZSA9IG5hbWU7CisgICAgfQorfQorCitjbGFzcyBTaG93IHsKKworICAgIHB1YmxpYyB2b2lkIGRvU29tZXRoaW5nKCkgeworICAgICAgICBEZW1vLkQ8Y2FyZXQ+MworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUVudW1Db25zdGFudEZyb21Vc2FnZS9iZWZvcmVTd2l0Y2hMYWJlbC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVFbnVtQ29uc3RhbnRGcm9tVXNhZ2UvYmVmb3JlU3dpdGNoTGFiZWwuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMTFkNzFiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVFbnVtQ29uc3RhbnRGcm9tVXNhZ2UvYmVmb3JlU3dpdGNoTGFiZWwuamF2YQpAQCAtMCwwICsxLDEzIEBACisvLyAiQ3JlYXRlIEVudW0gQ29uc3RhbnQgJ0QzJyIgInRydWUiCitwdWJsaWMgZW51bSBEZW1vIHsKK30KKworY2xhc3MgU2hvdyB7CisKKyAgICBwdWJsaWMgdm9pZCBkb1NvbWV0aGluZyhEZW1vIGQpIHsKKyAgICAgICAgc3dpdGNoIChkKSB7CisgICAgICAgICAgY2FzZSBEPGNhcmV0PjM6CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUVudW1Db25zdGFudEZyb21Vc2FnZS9iZWZvcmVTd2l0Y2hMYWJlbDEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlRW51bUNvbnN0YW50RnJvbVVzYWdlL2JlZm9yZVN3aXRjaExhYmVsMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFlMDk4MmIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUVudW1Db25zdGFudEZyb21Vc2FnZS9iZWZvcmVTd2l0Y2hMYWJlbDEuamF2YQpAQCAtMCwwICsxLDEzIEBACisvLyAiQ3JlYXRlIEVudW0gQ29uc3RhbnQgJ0QzJyIgInRydWUiCitwdWJsaWMgZW51bSBEZW1vIHsKK30KKworY2xhc3MgU2hvdyB7CisKKyAgICBwdWJsaWMgdm9pZCBkb1NvbWV0aGluZyhEZW1vIGQpIHsKKyAgICAgICAgc3dpdGNoIChkKSB7CisgICAgICAgICAgY2FzZSBEZW1vLkQ8Y2FyZXQ+MzoKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlRmllbGRGcm9tUGFyYW1ldGVyL2FmdGVyMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVGaWVsZEZyb21QYXJhbWV0ZXIvYWZ0ZXIxLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTcxM2NjYwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlRmllbGRGcm9tUGFyYW1ldGVyL2FmdGVyMS5qYXZhCkBAIC0wLDAgKzEsMjUgQEAKKy8vICJDcmVhdGUgRmllbGQgZm9yIFBhcmFtZXRlciAnaWQnIiAidHJ1ZSIKKworY2xhc3MgUGVyc29uIHsKKyAgICBwcml2YXRlIFN0cmluZyBfX2ZuYW1lOworICAgIHByaXZhdGUgZmluYWwgaW50IG15SWQ7CisgICAgcHJpdmF0ZSBTdHJpbmcgX19sbmFtZTsKKyAgICBwcml2YXRlIFN0cmluZyBfX3N0cmVldDsKKyAKKyAKKyAgICBwdWJsaWMgUGVyc29uICggU3RyaW5nIGlfbG5hbWUsIFN0cmluZyBpX2ZuYW1lLCBTdHJpbmcgaV9zdHJlZXQpCisgICAgeworICAgICAgICBfX2xuYW1lID0gaV9sbmFtZTsKKyAgICAgICAgX19mbmFtZSA9IGlfZm5hbWU7CisgICAgICAgIF9fc3RyZWV0ID0gaV9zdHJlZXQ7CisgICAgfQorIAorICAgIHB1YmxpYyBQZXJzb24gKCBpbnQgaWQ8Y2FyZXQ+LCBTdHJpbmcgaV9sbmFtZSwgU3RyaW5nIGlfZm5hbWUsIFN0cmluZyBpX3N0cmVldCkKKyAgICB7CisgICAgICAgIG15SWQgPSBpZDsKKyAgICAgICAgX19sbmFtZSA9IGlfbG5hbWU7CisgICAgICAgIF9fZm5hbWUgPSBpX2ZuYW1lOworICAgICAgICBfX3N0cmVldCA9IGlfc3RyZWV0OworICAgIH0KKworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlRmllbGRGcm9tUGFyYW1ldGVyL2FmdGVyMi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVGaWVsZEZyb21QYXJhbWV0ZXIvYWZ0ZXIyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGYwMTU2OAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlRmllbGRGcm9tUGFyYW1ldGVyL2FmdGVyMi5qYXZhCkBAIC0wLDAgKzEsMTggQEAKKy8vICJDcmVhdGUgRmllbGQgZm9yIFBhcmFtZXRlciAndGVzdCciICJ0cnVlIgorCitwYWNrYWdlIGNvZGVJbnNpZ2h0LmNyZWF0ZUZpZWxkRnJvbVBhcmFtZXRlckFjdGlvbi50ZXN0MTsKKworaW1wb3J0IGphdmEudXRpbC5IYXNoTWFwOworCitwdWJsaWMgY2xhc3MgVGVzdEJlZm9yZSB7CisgICAgcHJpdmF0ZSBTdHJpbmcgbXlOYW1lOworICAgIHByaXZhdGUgZmluYWwgSGFzaE1hcCBteVRlc3Q7CisgICAgcHJpdmF0ZSBTdHJpbmcgbXlQZXJzb247CisKKyAgICBwdWJsaWMgVGVzdEJlZm9yZShTdHJpbmcgbmFtZSwgaW50IGxlbmd0aCwgSGFzaE1hcCB0ZXN0PGNhcmV0PiwgU3RyaW5nIHBlcnNvbikgeworICAgICAgICBzdXBlcigpOworICAgICAgICBteU5hbWUgPSBuYW1lOworICAgICAgICBteVRlc3QgPSB0ZXN0OworICAgICAgICBteVBlcnNvbiA9IHBlcnNvbjsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUZpZWxkRnJvbVBhcmFtZXRlci9hZnRlcjMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlRmllbGRGcm9tUGFyYW1ldGVyL2FmdGVyMy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgzM2E0NjgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUZpZWxkRnJvbVBhcmFtZXRlci9hZnRlcjMuamF2YQpAQCAtMCwwICsxLDIwIEBACisvLyAiQ3JlYXRlIEZpZWxkIGZvciBQYXJhbWV0ZXIgJ2xlbmd0aCciICJ0cnVlIgorCitwYWNrYWdlIGNvZGVJbnNpZ2h0LmNyZWF0ZUZpZWxkRnJvbVBhcmFtZXRlckFjdGlvbi50ZXN0MTsKKworaW1wb3J0IGphdmEudXRpbC5IYXNoTWFwOworCitwdWJsaWMgY2xhc3MgVGVzdEJlZm9yZSB7CisgICAgcHJpdmF0ZSBTdHJpbmcgbXlOYW1lOworICAgIHByaXZhdGUgZmluYWwgaW50IG15TGVuZ3RoOworICAgIHByaXZhdGUgZmluYWwgSGFzaE1hcCBteVRlc3Q7CisgICAgcHJpdmF0ZSBTdHJpbmcgbXlQZXJzb247CisKKyAgICBwdWJsaWMgVGVzdEJlZm9yZShTdHJpbmcgbmFtZSwgaW50IGxlbmd0aCwgSGFzaE1hcCB0ZXN0LCBTdHJpbmcgcGVyc29uKSB7CisgICAgICAgIHN1cGVyKCk7CisgICAgICAgIG15TmFtZSA9IG5hbWU7CisgICAgICAgIG15TGVuZ3RoID0gbGVuZ3RoOworICAgICAgICBteVRlc3QgPSB0ZXN0OworICAgICAgICBteVBlcnNvbiA9IHBlcnNvbjsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUZpZWxkRnJvbVBhcmFtZXRlci9hZnRlcjQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlRmllbGRGcm9tUGFyYW1ldGVyL2FmdGVyNC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhjYjY2YTMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUZpZWxkRnJvbVBhcmFtZXRlci9hZnRlcjQuamF2YQpAQCAtMCwwICsxLDEyIEBACisvLyAiQ3JlYXRlIEZpZWxkIGZvciBQYXJhbWV0ZXIgJ3AxJyIgInRydWUiCisKK2NsYXNzIFRlc3R7CisgICAgcHJpdmF0ZSBmaW5hbCBpbnQgbXlQMTsKKyAgICBpbnQgbXlQMjsKKyAKKyAgICBUZXN0KGludCBwPGNhcmV0PjEsIGludCBwMil7CisgICAgICAgIG15UDEgPSBwMTsKKyAgICAgICAgbXlQMiA9IHAyOworICAgIH0KK30KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVGaWVsZEZyb21QYXJhbWV0ZXIvYWZ0ZXI1LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUZpZWxkRnJvbVBhcmFtZXRlci9hZnRlcjUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMzEwNmNlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVGaWVsZEZyb21QYXJhbWV0ZXIvYWZ0ZXI1LmphdmEKQEAgLTAsMCArMSwxMiBAQAorLy8gIkNyZWF0ZSBGaWVsZCBmb3IgUGFyYW1ldGVyICdwMSciICJ0cnVlIgorCitjbGFzcyBUZXN0eworICAgIGludCBteVAxOworICAgIGludCBteVAyOworIAorICAgIFRlc3QoaW50IHA8Y2FyZXQ+MSwgaW50IHAyKXsKKyAgICAgICAgbXlQMSA9IHAxOworICAgICAgICBteVAyID0gcDI7CisgICAgfQorfQorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUZpZWxkRnJvbVBhcmFtZXRlci9hZnRlcjYuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlRmllbGRGcm9tUGFyYW1ldGVyL2FmdGVyNi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE5YzQ5OTEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUZpZWxkRnJvbVBhcmFtZXRlci9hZnRlcjYuamF2YQpAQCAtMCwwICsxLDEzIEBACisvLyAiQ3JlYXRlIEZpZWxkIGZvciBQYXJhbWV0ZXIgJ3AxJyIgInRydWUiCisKK2NsYXNzIFRlc3R7CisgICAgaW50IG15UDE7CisgICAgaW50IG15UDI7CisgCisgICAgdm9pZCBmKGludCBwMSwgaW50IHAyKXsKKyAgICAgICAgbXlQMSA9IHAxOworICAgICAgICBpbnQgbXlQMiA9IHAxOworICAgICAgICBwMSA9IDA7CisgICAgfQorfQorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUZpZWxkRnJvbVBhcmFtZXRlci9hZnRlcjguamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlRmllbGRGcm9tUGFyYW1ldGVyL2FmdGVyOC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRjZGI0OTYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUZpZWxkRnJvbVBhcmFtZXRlci9hZnRlcjguamF2YQpAQCAtMCwwICsxLDEwIEBACisvLyAiQ3JlYXRlIEZpZWxkIGZvciBQYXJhbWV0ZXIgJ3AxJyIgInRydWUiCisKK2NsYXNzIFRlc3R7CisgICAgcHJpdmF0ZSBzdGF0aWMgaW50IHAxOworCisgICAgc3RhdGljIHZvaWQgZihpbnQgcDEpeworICAgICAgICBUZXN0LnAxID0gcDE7CisgICAgfQorfQorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUZpZWxkRnJvbVBhcmFtZXRlci9hZnRlckFycmF5VHlwZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVGaWVsZEZyb21QYXJhbWV0ZXIvYWZ0ZXJBcnJheVR5cGUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYWRmNjNiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVGaWVsZEZyb21QYXJhbWV0ZXIvYWZ0ZXJBcnJheVR5cGUuamF2YQpAQCAtMCwwICsxLDEwIEBACisvLyAiQ3JlYXRlIEZpZWxkIGZvciBQYXJhbWV0ZXIgJ3AxJyIgInRydWUiCisKK2NsYXNzIFRlc3R7CisgICAgcHJpdmF0ZSBTdHJpbmdbXSBteVAxOworCisgICAgdm9pZCBmKFN0cmluZ1tdIHAxKXsKKyAgICAgICAgbXlQMSA9IHAxOworICAgIH0KK30KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVGaWVsZEZyb21QYXJhbWV0ZXIvYWZ0ZXJCb3VuZExpc3RUeXBlUGFyYW1ldGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUZpZWxkRnJvbVBhcmFtZXRlci9hZnRlckJvdW5kTGlzdFR5cGVQYXJhbWV0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xOGJjMjAxNgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlRmllbGRGcm9tUGFyYW1ldGVyL2FmdGVyQm91bmRMaXN0VHlwZVBhcmFtZXRlci5qYXZhCkBAIC0wLDAgKzEsMTEgQEAKKy8vICJDcmVhdGUgRmllbGQgZm9yIFBhcmFtZXRlciAncDEnIiAidHJ1ZSIKKworaW1wb3J0IGphdmEudXRpbC4qOworY2xhc3MgVGVzdHsKKyAgICBwcml2YXRlIExpc3Q8U3RyaW5nPiBteVAxOworCisgICAgPFQgZXh0ZW5kcyBTdHJpbmc+IHZvaWQgZihMaXN0PFQ+IHAxKXsKKyAgICAgICAgbXlQMSA9IHAxOworICAgIH0KK30KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVGaWVsZEZyb21QYXJhbWV0ZXIvYWZ0ZXJDbGFzc1R5cGVQYXJhbWV0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlRmllbGRGcm9tUGFyYW1ldGVyL2FmdGVyQ2xhc3NUeXBlUGFyYW1ldGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmQwOGMwMAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlRmllbGRGcm9tUGFyYW1ldGVyL2FmdGVyQ2xhc3NUeXBlUGFyYW1ldGVyLmphdmEKQEAgLTAsMCArMSwxMCBAQAorLy8gIkNyZWF0ZSBGaWVsZCBmb3IgUGFyYW1ldGVyICdwMSciICJ0cnVlIgorCitjbGFzcyBUZXN0PFQ+eworICAgIHByaXZhdGUgVCBteVAxOworCisgICAgdm9pZCBmKFQgcDEpeworICAgICAgICBteVAxID0gcDE7CisgICAgfQorfQorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUZpZWxkRnJvbVBhcmFtZXRlci9hZnRlckxpc3RDbGFzc1R5cGVQYXJhbWV0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlRmllbGRGcm9tUGFyYW1ldGVyL2FmdGVyTGlzdENsYXNzVHlwZVBhcmFtZXRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEyNGFmMTgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUZpZWxkRnJvbVBhcmFtZXRlci9hZnRlckxpc3RDbGFzc1R5cGVQYXJhbWV0ZXIuamF2YQpAQCAtMCwwICsxLDExIEBACisvLyAiQ3JlYXRlIEZpZWxkIGZvciBQYXJhbWV0ZXIgJ3AxJyIgInRydWUiCisKK2ltcG9ydCBqYXZhLnV0aWwuKjsKK2NsYXNzIFRlc3Q8VD57CisgICAgcHJpdmF0ZSBMaXN0PFQ+IG15UDE7CisKKyAgICB2b2lkIGYoTGlzdDxUPiBwMSl7CisgICAgICAgIG15UDEgPSBwMTsKKyAgICB9Cit9CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlRmllbGRGcm9tUGFyYW1ldGVyL2FmdGVyTGlzdFR5cGVQYXJhbWV0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlRmllbGRGcm9tUGFyYW1ldGVyL2FmdGVyTGlzdFR5cGVQYXJhbWV0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NWZiZTk4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVGaWVsZEZyb21QYXJhbWV0ZXIvYWZ0ZXJMaXN0VHlwZVBhcmFtZXRlci5qYXZhCkBAIC0wLDAgKzEsMTEgQEAKKy8vICJDcmVhdGUgRmllbGQgZm9yIFBhcmFtZXRlciAncDEnIiAidHJ1ZSIKKworaW1wb3J0IGphdmEudXRpbC4qOworY2xhc3MgVGVzdHsKKyAgICBwcml2YXRlIExpc3Q8T2JqZWN0PiBteVAxOworCisgICAgPFQ+IHZvaWQgZihMaXN0PFQ+IHAxKXsKKyAgICAgICAgbXlQMSA9IHAxOworICAgIH0KK30KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVGaWVsZEZyb21QYXJhbWV0ZXIvYWZ0ZXJOb3ROdWxsLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUZpZWxkRnJvbVBhcmFtZXRlci9hZnRlck5vdE51bGwuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZWI3MTA5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVGaWVsZEZyb21QYXJhbWV0ZXIvYWZ0ZXJOb3ROdWxsLmphdmEKQEAgLTAsMCArMSwxNCBAQAorLy8gIkNyZWF0ZSBGaWVsZCBmb3IgUGFyYW1ldGVyICduYW1lJyIgInRydWUiCisKK2ltcG9ydCBvcmcuamV0YnJhaW5zLmFubm90YXRpb25zLk5vdE51bGw7CisKK3B1YmxpYyBjbGFzcyBUZXN0QmVmb3JlIHsKKworICAgIEBOb3ROdWxsCisgICAgcHJpdmF0ZSBmaW5hbCBTdHJpbmcgbXlOYW1lOworCisgICAgcHVibGljIFRlc3RCZWZvcmUoQE5vdE51bGwgU3RyaW5nIG5hbWUpIHsKKyAgICAgICAgc3VwZXIoKTsKKyAgICAgICAgbXlOYW1lID0gbmFtZTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUZpZWxkRnJvbVBhcmFtZXRlci9hZnRlck51bGxhYmxlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUZpZWxkRnJvbVBhcmFtZXRlci9hZnRlck51bGxhYmxlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTgyOWU1OQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlRmllbGRGcm9tUGFyYW1ldGVyL2FmdGVyTnVsbGFibGUuamF2YQpAQCAtMCwwICsxLDE3IEBACisvLyAiQ3JlYXRlIEZpZWxkIGZvciBQYXJhbWV0ZXIgJ25hbWUnIiAidHJ1ZSIKKworcGFja2FnZSBjb2RlSW5zaWdodC5jcmVhdGVGaWVsZEZyb21QYXJhbWV0ZXJBY3Rpb24udGVzdDE7CisKK2ltcG9ydCBqYXZhLnV0aWwuSGFzaE1hcDsKK2ltcG9ydCBvcmcuamV0YnJhaW5zLmFubm90YXRpb25zLk51bGxhYmxlOworCitwdWJsaWMgY2xhc3MgVGVzdEJlZm9yZSB7CisKKyAgICBATnVsbGFibGUKKyAgICBwcml2YXRlIGZpbmFsIFN0cmluZyBteU5hbWU7CisKKyAgICBwdWJsaWMgVGVzdEJlZm9yZShATnVsbGFibGUgU3RyaW5nIG5hbWUpIHsKKyAgICAgICAgc3VwZXIoKTsKKyAgICAgICAgbXlOYW1lID0gbmFtZTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUZpZWxkRnJvbVBhcmFtZXRlci9hZnRlclNpbXBsZVR5cGVQYXJhbWV0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlRmllbGRGcm9tUGFyYW1ldGVyL2FmdGVyU2ltcGxlVHlwZVBhcmFtZXRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU0N2QxNTgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUZpZWxkRnJvbVBhcmFtZXRlci9hZnRlclNpbXBsZVR5cGVQYXJhbWV0ZXIuamF2YQpAQCAtMCwwICsxLDEwIEBACisvLyAiQ3JlYXRlIEZpZWxkIGZvciBQYXJhbWV0ZXIgJ3AxJyIgInRydWUiCisKK2NsYXNzIFRlc3R7CisgICAgcHJpdmF0ZSBPYmplY3QgbXlQMTsKKworICAgIDxUPiB2b2lkIGYoVCBwMSl7CisgICAgICAgIG15UDEgPSBwMTsKKyAgICB9Cit9CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlRmllbGRGcm9tUGFyYW1ldGVyL2FmdGVyVHlwZVBhcmFtZXRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVGaWVsZEZyb21QYXJhbWV0ZXIvYWZ0ZXJUeXBlUGFyYW1ldGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTk4NGIwZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlRmllbGRGcm9tUGFyYW1ldGVyL2FmdGVyVHlwZVBhcmFtZXRlci5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKKy8vICJDcmVhdGUgRmllbGQgZm9yIFBhcmFtZXRlciAncDEnIiAidHJ1ZSIKKworY2xhc3MgVGVzdHsKKyAgICBwcml2YXRlIFN0cmluZyBteVAxOworCisgICAgPFQgZXh0ZW5kcyBTdHJpbmc+IHZvaWQgZihUIHAxKXsKKyAgICAgICAgbXlQMSA9IHAxOworICAgIH0KK30KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVGaWVsZEZyb21QYXJhbWV0ZXIvYmVmb3JlMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVGaWVsZEZyb21QYXJhbWV0ZXIvYmVmb3JlMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEzMzhjNmQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUZpZWxkRnJvbVBhcmFtZXRlci9iZWZvcmUxLmphdmEKQEAgLTAsMCArMSwyMSBAQAorLy8gIkNyZWF0ZSBGaWVsZCBmb3IgUGFyYW1ldGVyICdpZCciICJ0cnVlIgorCitjbGFzcyBQZXJzb24geworICAgIHByaXZhdGUgU3RyaW5nIF9fZm5hbWUsIF9fbG5hbWUsIF9fc3RyZWV0OworIAorIAorICAgIHB1YmxpYyBQZXJzb24gKCBTdHJpbmcgaV9sbmFtZSwgU3RyaW5nIGlfZm5hbWUsIFN0cmluZyBpX3N0cmVldCkKKyAgICB7CisgICAgICAgIF9fbG5hbWUgPSBpX2xuYW1lOworICAgICAgICBfX2ZuYW1lID0gaV9mbmFtZTsKKyAgICAgICAgX19zdHJlZXQgPSBpX3N0cmVldDsKKyAgICB9CisgCisgICAgcHVibGljIFBlcnNvbiAoIGludCBpZDxjYXJldD4sIFN0cmluZyBpX2xuYW1lLCBTdHJpbmcgaV9mbmFtZSwgU3RyaW5nIGlfc3RyZWV0KQorICAgIHsKKyAgICAgICAgX19sbmFtZSA9IGlfbG5hbWU7CisgICAgICAgIF9fZm5hbWUgPSBpX2ZuYW1lOworICAgICAgICBfX3N0cmVldCA9IGlfc3RyZWV0OworICAgIH0KKworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlRmllbGRGcm9tUGFyYW1ldGVyL2JlZm9yZTIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlRmllbGRGcm9tUGFyYW1ldGVyL2JlZm9yZTIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jOGYxMTY5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVGaWVsZEZyb21QYXJhbWV0ZXIvYmVmb3JlMi5qYXZhCkBAIC0wLDAgKzEsMTYgQEAKKy8vICJDcmVhdGUgRmllbGQgZm9yIFBhcmFtZXRlciAndGVzdCciICJ0cnVlIgorCitwYWNrYWdlIGNvZGVJbnNpZ2h0LmNyZWF0ZUZpZWxkRnJvbVBhcmFtZXRlckFjdGlvbi50ZXN0MTsKKworaW1wb3J0IGphdmEudXRpbC5IYXNoTWFwOworCitwdWJsaWMgY2xhc3MgVGVzdEJlZm9yZSB7CisgICAgcHJpdmF0ZSBTdHJpbmcgbXlOYW1lOworICAgIHByaXZhdGUgU3RyaW5nIG15UGVyc29uOworCisgICAgcHVibGljIFRlc3RCZWZvcmUoU3RyaW5nIG5hbWUsIGludCBsZW5ndGgsIEhhc2hNYXAgdGVzdDxjYXJldD4sIFN0cmluZyBwZXJzb24pIHsKKyAgICAgICAgc3VwZXIoKTsKKyAgICAgICAgbXlOYW1lID0gbmFtZTsKKyAgICAgICAgbXlQZXJzb24gPSBwZXJzb247CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVGaWVsZEZyb21QYXJhbWV0ZXIvYmVmb3JlMy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVGaWVsZEZyb21QYXJhbWV0ZXIvYmVmb3JlMy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI1MDc3NjkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUZpZWxkRnJvbVBhcmFtZXRlci9iZWZvcmUzLmphdmEKQEAgLTAsMCArMSwxOCBAQAorLy8gIkNyZWF0ZSBGaWVsZCBmb3IgUGFyYW1ldGVyICdsZW5ndGgnIiAidHJ1ZSIKKworcGFja2FnZSBjb2RlSW5zaWdodC5jcmVhdGVGaWVsZEZyb21QYXJhbWV0ZXJBY3Rpb24udGVzdDE7CisKK2ltcG9ydCBqYXZhLnV0aWwuSGFzaE1hcDsKKworcHVibGljIGNsYXNzIFRlc3RCZWZvcmUgeworICAgIHByaXZhdGUgU3RyaW5nIG15TmFtZTsKKyAgICBwcml2YXRlIGZpbmFsIEhhc2hNYXAgbXlUZXN0OworICAgIHByaXZhdGUgU3RyaW5nIG15UGVyc29uOworCisgICAgcHVibGljIFRlc3RCZWZvcmUoU3RyaW5nIG5hbWUsIGludCBsZW5ndGg8Y2FyZXQ+LCBIYXNoTWFwIHRlc3QsIFN0cmluZyBwZXJzb24pIHsKKyAgICAgICAgc3VwZXIoKTsKKyAgICAgICAgbXlOYW1lID0gbmFtZTsKKyAgICAgICAgbXlUZXN0ID0gdGVzdDsKKyAgICAgICAgbXlQZXJzb24gPSBwZXJzb247CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVGaWVsZEZyb21QYXJhbWV0ZXIvYmVmb3JlNC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVGaWVsZEZyb21QYXJhbWV0ZXIvYmVmb3JlNC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFiYTllODcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUZpZWxkRnJvbVBhcmFtZXRlci9iZWZvcmU0LmphdmEKQEAgLTAsMCArMSwxMCBAQAorLy8gIkNyZWF0ZSBGaWVsZCBmb3IgUGFyYW1ldGVyICdwMSciICJ0cnVlIgorCitjbGFzcyBUZXN0eworICAgIGludCBteVAyOworIAorICAgIFRlc3QoaW50IHA8Y2FyZXQ+MSwgaW50IHAyKXsKKyAgICAgICAgbXlQMiA9IHAyOworICAgIH0KK30KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVGaWVsZEZyb21QYXJhbWV0ZXIvYmVmb3JlNS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVGaWVsZEZyb21QYXJhbWV0ZXIvYmVmb3JlNS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNhMjQ3OGUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUZpZWxkRnJvbVBhcmFtZXRlci9iZWZvcmU1LmphdmEKQEAgLTAsMCArMSwxMSBAQAorLy8gIkNyZWF0ZSBGaWVsZCBmb3IgUGFyYW1ldGVyICdwMSciICJ0cnVlIgorCitjbGFzcyBUZXN0eworICAgIGludCBteVAxOworICAgIGludCBteVAyOworIAorICAgIFRlc3QoaW50IHA8Y2FyZXQ+MSwgaW50IHAyKXsKKyAgICAgICAgbXlQMiA9IHAyOworICAgIH0KK30KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVGaWVsZEZyb21QYXJhbWV0ZXIvYmVmb3JlNi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVGaWVsZEZyb21QYXJhbWV0ZXIvYmVmb3JlNi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg5MGM3ODAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUZpZWxkRnJvbVBhcmFtZXRlci9iZWZvcmU2LmphdmEKQEAgLTAsMCArMSwxMiBAQAorLy8gIkNyZWF0ZSBGaWVsZCBmb3IgUGFyYW1ldGVyICdwMSciICJ0cnVlIgorCitjbGFzcyBUZXN0eworICAgIGludCBteVAxOworICAgIGludCBteVAyOworIAorICAgIHZvaWQgZihpbnQgcDxjYXJldD4xLCBpbnQgcDIpeworICAgICAgICBpbnQgbXlQMiA9IHAxOworICAgICAgICBwMSA9IDA7CisgICAgfQorfQorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUZpZWxkRnJvbVBhcmFtZXRlci9iZWZvcmU3LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUZpZWxkRnJvbVBhcmFtZXRlci9iZWZvcmU3LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWNlMGJjNwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlRmllbGRGcm9tUGFyYW1ldGVyL2JlZm9yZTcuamF2YQpAQCAtMCwwICsxLDEyIEBACisvLyAiQ3JlYXRlIEZpZWxkIGZvciBQYXJhbWV0ZXIgJ3AxJyIgImZhbHNlIgorCitjbGFzcyBUZXN0eworICAgIGludCBteVAxOworICAgIGludCBteVAyOworIAorICAgIHZvaWQgZihpbnQgcDxjYXJldD4xLCBpbnQgcDIpeworICAgICAgICBteVAyID0gcDE7CisgICAgICAgIHAxID0gMDsKKyAgICB9Cit9CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlRmllbGRGcm9tUGFyYW1ldGVyL2JlZm9yZTguamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlRmllbGRGcm9tUGFyYW1ldGVyL2JlZm9yZTguamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMTEwOTU0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVGaWVsZEZyb21QYXJhbWV0ZXIvYmVmb3JlOC5qYXZhCkBAIC0wLDAgKzEsNyBAQAorLy8gIkNyZWF0ZSBGaWVsZCBmb3IgUGFyYW1ldGVyICdwMSciICJ0cnVlIgorCitjbGFzcyBUZXN0eworICAgIHN0YXRpYyB2b2lkIGYoaW50IHA8Y2FyZXQ+MSl7CisgICAgfQorfQorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUZpZWxkRnJvbVBhcmFtZXRlci9iZWZvcmVBcnJheVR5cGUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlRmllbGRGcm9tUGFyYW1ldGVyL2JlZm9yZUFycmF5VHlwZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFhMGMyMDkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUZpZWxkRnJvbVBhcmFtZXRlci9iZWZvcmVBcnJheVR5cGUuamF2YQpAQCAtMCwwICsxLDcgQEAKKy8vICJDcmVhdGUgRmllbGQgZm9yIFBhcmFtZXRlciAncDEnIiAidHJ1ZSIKKworY2xhc3MgVGVzdHsKKyAgICB2b2lkIGYoU3RyaW5nW10gcDxjYXJldD4xKXsKKyAgICB9Cit9CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlRmllbGRGcm9tUGFyYW1ldGVyL2JlZm9yZUJvdW5kTGlzdFR5cGVQYXJhbWV0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlRmllbGRGcm9tUGFyYW1ldGVyL2JlZm9yZUJvdW5kTGlzdFR5cGVQYXJhbWV0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNzRlNWU2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVGaWVsZEZyb21QYXJhbWV0ZXIvYmVmb3JlQm91bmRMaXN0VHlwZVBhcmFtZXRlci5qYXZhCkBAIC0wLDAgKzEsOCBAQAorLy8gIkNyZWF0ZSBGaWVsZCBmb3IgUGFyYW1ldGVyICdwMSciICJ0cnVlIgorCitpbXBvcnQgamF2YS51dGlsLio7CitjbGFzcyBUZXN0eworICAgIDxUIGV4dGVuZHMgU3RyaW5nPiB2b2lkIGYoTGlzdDxUPiBwPGNhcmV0PjEpeworICAgIH0KK30KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVGaWVsZEZyb21QYXJhbWV0ZXIvYmVmb3JlQ2FyZXRPbk1ldGhvZC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVGaWVsZEZyb21QYXJhbWV0ZXIvYmVmb3JlQ2FyZXRPbk1ldGhvZC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY3NmY0ZjQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUZpZWxkRnJvbVBhcmFtZXRlci9iZWZvcmVDYXJldE9uTWV0aG9kLmphdmEKQEAgLTAsMCArMSw3IEBACisvLyAiQ3JlYXRlIEZpZWxkIGZvciBQYXJhbWV0ZXIgJ3AxJyIgImZhbHNlIgorCitjbGFzcyBUZXN0eworICAgIDxUIGV4dGVuZHMgU3RyaW5nPiB2b2lkIDxjYXJldD5mKFQgcDEpeworICAgIH0KK30KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVGaWVsZEZyb21QYXJhbWV0ZXIvYmVmb3JlQ2FyZXRPbk1ldGhvZFdpdGhPbmx5QXNzaWduZWRQYXJhbXMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlRmllbGRGcm9tUGFyYW1ldGVyL2JlZm9yZUNhcmV0T25NZXRob2RXaXRoT25seUFzc2lnbmVkUGFyYW1zLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWMzMmYyNwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlRmllbGRGcm9tUGFyYW1ldGVyL2JlZm9yZUNhcmV0T25NZXRob2RXaXRoT25seUFzc2lnbmVkUGFyYW1zLmphdmEKQEAgLTAsMCArMSwxMCBAQAorLy8gIkNyZWF0ZSBGaWVsZCBmb3IgUGFyYW1ldGVyICdwMSciICJmYWxzZSIKKworY2xhc3MgVGVzdHsKKyAgICAgIHByaXZhdGUgZmluYWwgU3RyaW5nIG15UDE7CisgIAorICAgICAgPFQgZXh0ZW5kcyBTdHJpbmc+IHZvaWQgPGNhcmV0PmYoVCBwMSl7CisgICAgICAgICAgbXlQMSA9IHAxOworICAgICAgfQorfQorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUZpZWxkRnJvbVBhcmFtZXRlci9iZWZvcmVDYXJldE9uTWV0aG9kV2l0aG91dFBhcmFtcy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVGaWVsZEZyb21QYXJhbWV0ZXIvYmVmb3JlQ2FyZXRPbk1ldGhvZFdpdGhvdXRQYXJhbXMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMjhiY2U1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVGaWVsZEZyb21QYXJhbWV0ZXIvYmVmb3JlQ2FyZXRPbk1ldGhvZFdpdGhvdXRQYXJhbXMuamF2YQpAQCAtMCwwICsxLDcgQEAKKy8vICJDcmVhdGUgRmllbGQgZm9yIFBhcmFtZXRlciAncDEnIiAiZmFsc2UiCisKK2NsYXNzIFRlc3R7CisgICAgPFQgZXh0ZW5kcyBTdHJpbmc+IHZvaWQgPGNhcmV0PmYoKXsKKyAgICB9Cit9CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlRmllbGRGcm9tUGFyYW1ldGVyL2JlZm9yZUNsYXNzVHlwZVBhcmFtZXRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVGaWVsZEZyb21QYXJhbWV0ZXIvYmVmb3JlQ2xhc3NUeXBlUGFyYW1ldGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmM4NmU0YgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlRmllbGRGcm9tUGFyYW1ldGVyL2JlZm9yZUNsYXNzVHlwZVBhcmFtZXRlci5qYXZhCkBAIC0wLDAgKzEsNyBAQAorLy8gIkNyZWF0ZSBGaWVsZCBmb3IgUGFyYW1ldGVyICdwMSciICJ0cnVlIgorCitjbGFzcyBUZXN0PFQ+eworICAgIHZvaWQgZihUIHA8Y2FyZXQ+MSl7CisgICAgfQorfQorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUZpZWxkRnJvbVBhcmFtZXRlci9iZWZvcmVMaXN0Q2xhc3NUeXBlUGFyYW1ldGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUZpZWxkRnJvbVBhcmFtZXRlci9iZWZvcmVMaXN0Q2xhc3NUeXBlUGFyYW1ldGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjc4MTVhMgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlRmllbGRGcm9tUGFyYW1ldGVyL2JlZm9yZUxpc3RDbGFzc1R5cGVQYXJhbWV0ZXIuamF2YQpAQCAtMCwwICsxLDggQEAKKy8vICJDcmVhdGUgRmllbGQgZm9yIFBhcmFtZXRlciAncDEnIiAidHJ1ZSIKKworaW1wb3J0IGphdmEudXRpbC4qOworY2xhc3MgVGVzdDxUPnsKKyAgICB2b2lkIGYoTGlzdDxUPiBwPGNhcmV0PjEpeworICAgIH0KK30KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVGaWVsZEZyb21QYXJhbWV0ZXIvYmVmb3JlTGlzdFR5cGVQYXJhbWV0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlRmllbGRGcm9tUGFyYW1ldGVyL2JlZm9yZUxpc3RUeXBlUGFyYW1ldGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2Y0ZTVhZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlRmllbGRGcm9tUGFyYW1ldGVyL2JlZm9yZUxpc3RUeXBlUGFyYW1ldGVyLmphdmEKQEAgLTAsMCArMSw4IEBACisvLyAiQ3JlYXRlIEZpZWxkIGZvciBQYXJhbWV0ZXIgJ3AxJyIgInRydWUiCisKK2ltcG9ydCBqYXZhLnV0aWwuKjsKK2NsYXNzIFRlc3R7CisgICAgPFQ+IHZvaWQgZihMaXN0PFQ+IHA8Y2FyZXQ+MSl7CisgICAgfQorfQorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUZpZWxkRnJvbVBhcmFtZXRlci9iZWZvcmVOb3ROdWxsLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUZpZWxkRnJvbVBhcmFtZXRlci9iZWZvcmVOb3ROdWxsLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmI2NGVmOQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlRmllbGRGcm9tUGFyYW1ldGVyL2JlZm9yZU5vdE51bGwuamF2YQpAQCAtMCwwICsxLDEwIEBACisvLyAiQ3JlYXRlIEZpZWxkIGZvciBQYXJhbWV0ZXIgJ25hbWUnIiAidHJ1ZSIKKworaW1wb3J0IG9yZy5qZXRicmFpbnMuYW5ub3RhdGlvbnMuTm90TnVsbDsKKworcHVibGljIGNsYXNzIFRlc3RCZWZvcmUgeworCisgICAgcHVibGljIFRlc3RCZWZvcmUoQE5vdE51bGwgU3RyaW5nIG5hbWU8Y2FyZXQ+KSB7CisgICAgICAgIHN1cGVyKCk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVGaWVsZEZyb21QYXJhbWV0ZXIvYmVmb3JlTnVsbGFibGUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlRmllbGRGcm9tUGFyYW1ldGVyL2JlZm9yZU51bGxhYmxlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzc0OWZjYQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlRmllbGRGcm9tUGFyYW1ldGVyL2JlZm9yZU51bGxhYmxlLmphdmEKQEAgLTAsMCArMSwxMyBAQAorLy8gIkNyZWF0ZSBGaWVsZCBmb3IgUGFyYW1ldGVyICduYW1lJyIgInRydWUiCisKK3BhY2thZ2UgY29kZUluc2lnaHQuY3JlYXRlRmllbGRGcm9tUGFyYW1ldGVyQWN0aW9uLnRlc3QxOworCitpbXBvcnQgamF2YS51dGlsLkhhc2hNYXA7CitpbXBvcnQgb3JnLmpldGJyYWlucy5hbm5vdGF0aW9ucy5OdWxsYWJsZTsKKworcHVibGljIGNsYXNzIFRlc3RCZWZvcmUgeworCisgICAgcHVibGljIFRlc3RCZWZvcmUoQE51bGxhYmxlIFN0cmluZyBuYW1lPGNhcmV0PikgeworICAgICAgICBzdXBlcigpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlRmllbGRGcm9tUGFyYW1ldGVyL2JlZm9yZVNpbXBsZVR5cGVQYXJhbWV0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlRmllbGRGcm9tUGFyYW1ldGVyL2JlZm9yZVNpbXBsZVR5cGVQYXJhbWV0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZDJjYjc3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVGaWVsZEZyb21QYXJhbWV0ZXIvYmVmb3JlU2ltcGxlVHlwZVBhcmFtZXRlci5qYXZhCkBAIC0wLDAgKzEsNyBAQAorLy8gIkNyZWF0ZSBGaWVsZCBmb3IgUGFyYW1ldGVyICdwMSciICJ0cnVlIgorCitjbGFzcyBUZXN0eworICAgIDxUPiB2b2lkIGYoVCBwPGNhcmV0PjEpeworICAgIH0KK30KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVGaWVsZEZyb21QYXJhbWV0ZXIvYmVmb3JlVHlwZVBhcmFtZXRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVGaWVsZEZyb21QYXJhbWV0ZXIvYmVmb3JlVHlwZVBhcmFtZXRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRjOGZlY2IKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUZpZWxkRnJvbVBhcmFtZXRlci9iZWZvcmVUeXBlUGFyYW1ldGVyLmphdmEKQEAgLTAsMCArMSw3IEBACisvLyAiQ3JlYXRlIEZpZWxkIGZvciBQYXJhbWV0ZXIgJ3AxJyIgInRydWUiCisKK2NsYXNzIFRlc3R7CisgICAgPFQgZXh0ZW5kcyBTdHJpbmc+IHZvaWQgZihUIHA8Y2FyZXQ+MSl7CisgICAgfQorfQorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUZpZWxkRnJvbVVzYWdlL2FmdGVyQW5vbnltb3VzQ2xhc3MuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlRmllbGRGcm9tVXNhZ2UvYWZ0ZXJBbm9ueW1vdXNDbGFzcy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY4MzI1NTcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUZpZWxkRnJvbVVzYWdlL2FmdGVyQW5vbnltb3VzQ2xhc3MuamF2YQpAQCAtMCwwICsxLDEyIEBACisvLyAiQ3JlYXRlIEZpZWxkICdmaWVsZCciICJ0cnVlIgorY2xhc3MgTWFpbiB7CisgICAgc3RhdGljIHZvaWQgZm9vKCkgeworICAgICAgICBuZXcgT2JqZWN0KCkgeworICAgICAgICAgICAgcHVibGljIGludCBmaWVsZDxjYXJldD47CisKKyAgICAgICAgICAgIHZvaWQgYmFyKCkgeworICAgICAgICAgICAgICAgIHRoaXMuZmllbGQgPSAwOworICAgICAgICAgICAgfQorICAgICAgICB9OworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlRmllbGRGcm9tVXNhZ2UvYWZ0ZXJDcmVhdGVGcm9tRXF1YWxzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUZpZWxkRnJvbVVzYWdlL2FmdGVyQ3JlYXRlRnJvbUVxdWFscy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRlM2U0NTM2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVGaWVsZEZyb21Vc2FnZS9hZnRlckNyZWF0ZUZyb21FcXVhbHMuamF2YQpAQCAtMCwwICsxLDggQEAKKy8vICJDcmVhdGUgRmllbGQgJ1ZBUiciICJ0cnVlIgorY2xhc3MgQSB7CisgICAgcHJpdmF0ZSBmaW5hbCBTdHJpbmcgVkFSPGNhcmV0PjsKKworICAgIHB1YmxpYyBJREVBMTYwMjcoKSB7CisgICAgVkFSLmVxdWFscygiIik7CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlRmllbGRGcm9tVXNhZ2UvYWZ0ZXJDcmVhdGVGcm9tRXF1YWxzVG9QcmltaXRpdmVUeXBlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUZpZWxkRnJvbVVzYWdlL2FmdGVyQ3JlYXRlRnJvbUVxdWFsc1RvUHJpbWl0aXZlVHlwZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVjNWY2OGMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUZpZWxkRnJvbVVzYWdlL2FmdGVyQ3JlYXRlRnJvbUVxdWFsc1RvUHJpbWl0aXZlVHlwZS5qYXZhCkBAIC0wLDAgKzEsOCBAQAorLy8gIkNyZWF0ZSBGaWVsZCAnVkFSJyIgInRydWUiCitjbGFzcyBBIHsKKyAgICBwcml2YXRlIGZpbmFsIEludGVnZXIgVkFSPGNhcmV0PjsKKworICAgIHB1YmxpYyBJREVBMTYwMjcoKSB7CisgICAgVkFSLmVxdWFscyg1KTsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVGaWVsZEZyb21Vc2FnZS9hZnRlckV4cGVjdGVkVHlwZXMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlRmllbGRGcm9tVXNhZ2UvYWZ0ZXJFeHBlY3RlZFR5cGVzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjE5Yzk1NAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlRmllbGRGcm9tVXNhZ2UvYWZ0ZXJFeHBlY3RlZFR5cGVzLmphdmEKQEAgLTAsMCArMSwxNCBAQAorLy8gIkNyZWF0ZSBGaWVsZCAncGFuZWwnIiAidHJ1ZSIKK2ltcG9ydCBqYXZheC5zd2luZy4qOworCitjbGFzcyBUZXN0IHsKKyAgICBwcml2YXRlIEpQYW5lbCBwYW5lbDsKKworICAgIHZvaWQgZm9vKEpQYW5lbCBjb250YWluZXIpIHsKKyAgICBpZiAocGFuZWwgPT0gbnVsbCkgeworICAgICAgcGFuZWwgPSBuZXcgSlBhbmVsKCk7CisgICAgICBwYW5lbC5zZXRPcGFxdWUodHJ1ZSk7CisgICAgICBjb250YWluZXIuYWRkKHBhbmVsKTsKKyAgICB9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUZpZWxkRnJvbVVzYWdlL2FmdGVySW5zaWRlU3RhdGljSW5uZXJDbGFzcy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVGaWVsZEZyb21Vc2FnZS9hZnRlckluc2lkZVN0YXRpY0lubmVyQ2xhc3MuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MmUxMzI5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVGaWVsZEZyb21Vc2FnZS9hZnRlckluc2lkZVN0YXRpY0lubmVyQ2xhc3MuamF2YQpAQCAtMCwwICsxLDE0IEBACisvLyAiQ3JlYXRlIEZpZWxkICdmaWVsZCciICJ0cnVlIgorY2xhc3MgQSB7CisgIFN0cmluZyBmaWVsZDsKKworICBzdGF0aWMgY2xhc3MgRm9vIHsKKyAgICAgIHByaXZhdGUgZmluYWwgT2JqZWN0IGZpZWxkPGNhcmV0PjsKKworICAgICAgRm9vKCkgeworICAgICAgICAgIGZpZWxkOworICAgICAgfQorICB9CisKK30KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVGaWVsZEZyb21Vc2FnZS9hZnRlckludGVyZmFjZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVGaWVsZEZyb21Vc2FnZS9hZnRlckludGVyZmFjZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI0M2FiMzcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUZpZWxkRnJvbVVzYWdlL2FmdGVySW50ZXJmYWNlLmphdmEKQEAgLTAsMCArMSwxMCBAQAorLy8gIkNyZWF0ZSBGaWVsZCAnRklFTEQnIiAidHJ1ZSIKK2NsYXNzIEMgeworICAgIHB1YmxpYyB2b2lkIGZvbygpIHsKKyAgICAgICAgaW50IGkgPSBJVGVzdC5GSUVMRDsKKyAgICB9CisgICAgCisgICAgcHVibGljIHN0YXRpYyBpbnRlcmZhY2UgSVRlc3QgeworICAgICAgICBpbnQgRklFTEQ8Y2FyZXQ+OworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUZpZWxkRnJvbVVzYWdlL2FmdGVyTXVsdGlwbGVUeXBlcy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVGaWVsZEZyb21Vc2FnZS9hZnRlck11bHRpcGxlVHlwZXMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYjk3MjdlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVGaWVsZEZyb21Vc2FnZS9hZnRlck11bHRpcGxlVHlwZXMuamF2YQpAQCAtMCwwICsxLDkgQEAKKy8vICJDcmVhdGUgRmllbGQgJ2ZsZCciICJ0cnVlIgorY2xhc3MgQSB7CisgICAgcHJpdmF0ZSBTdHJpbmcgZmxkPGNhcmV0PjsKKworICAgIHB1YmxpYyB2b2lkIGZvbygpIHsKKyAgICAgIE9iamVjdCB4ID0gZmxkOworICAgICAgZmxkID0gIiI7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlRmllbGRGcm9tVXNhZ2UvYWZ0ZXJNdWx0aXBsZVR5cGVzMi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVGaWVsZEZyb21Vc2FnZS9hZnRlck11bHRpcGxlVHlwZXMyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWZjNDIyNQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlRmllbGRGcm9tVXNhZ2UvYWZ0ZXJNdWx0aXBsZVR5cGVzMi5qYXZhCkBAIC0wLDAgKzEsOSBAQAorLy8gIkNyZWF0ZSBGaWVsZCAnZmxkJyIgInRydWUiCitjbGFzcyBBIHsKKyAgICBwcml2YXRlIFN0cmluZyBmbGQ8Y2FyZXQ+OworCisgICAgcHVibGljIHZvaWQgZm9vKCkgeworICAgICAgT2JqZWN0IHggPSBmbGQ7CisgICAgICBTdHJpbmcgcyA9IGZsZDsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVGaWVsZEZyb21Vc2FnZS9hZnRlclBhcmFtZXRlcmljTWV0aG9kLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUZpZWxkRnJvbVVzYWdlL2FmdGVyUGFyYW1ldGVyaWNNZXRob2QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZDQwZDE0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVGaWVsZEZyb21Vc2FnZS9hZnRlclBhcmFtZXRlcmljTWV0aG9kLmphdmEKQEAgLTAsMCArMSwxNSBAQAorLy8gIkNyZWF0ZSBGaWVsZCAnYXJyYXknIiAidHJ1ZSIKK2NsYXNzIFNtdGg8VD4geworfQorCitjbGFzcyBDb252ZXJ0ZXIgeworICBzdGF0aWMgPFQ+IFNtdGg8VD4gYXNTbXRoIChUW10gdCkge30KK30KKworY2xhc3MgVGVzdCB7CisgICAgcHJpdmF0ZSBTdHJpbmdbXSBhcnJheTxjYXJldD47CisKKyAgICB2b2lkIGJhciAoKSB7CisgICAgICAgIFNtdGg8U3RyaW5nPiBsID0gQ29udmVydGVyLmFzU210aChhcnJheSk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlRmllbGRGcm9tVXNhZ2UvYWZ0ZXJRdWFsaWZ5SW5uZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlRmllbGRGcm9tVXNhZ2UvYWZ0ZXJRdWFsaWZ5SW5uZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NzlmN2IzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVGaWVsZEZyb21Vc2FnZS9hZnRlclF1YWxpZnlJbm5lci5qYXZhCkBAIC0wLDAgKzEsMTQgQEAKKy8vICJDcmVhdGUgRmllbGQgJ2ZpZWxkJyIgInRydWUiCitjbGFzcyBBeworICAgIHByaXZhdGUgZmluYWwgT3V0ZXIuSW5uZXIgZmllbGQ8Y2FyZXQ+OworCisgICAgeworICAgICAgICBPdXRlci5mKGZpZWxkKTsKKyAgICB9Cit9CisKK2NsYXNzIE91dGVyeworICAgIHN0YXRpYyBjbGFzcyBJbm5lcnt9CisKKyAgICBzdGF0aWMgdm9pZCBmKElubmVyIGlubmVyKXt9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVGaWVsZEZyb21Vc2FnZS9hZnRlclNvcnRCeVJlbGV2YW5jZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVGaWVsZEZyb21Vc2FnZS9hZnRlclNvcnRCeVJlbGV2YW5jZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY2MGEwYmQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUZpZWxkRnJvbVVzYWdlL2FmdGVyU29ydEJ5UmVsZXZhbmNlLmphdmEKQEAgLTAsMCArMSwxMiBAQAoraW1wb3J0IGZvby5Gb287CisKKy8vICJDcmVhdGUgRmllbGQgJ2ZpZWxkJyIgInRydWUiCitjbGFzcyBBIHsKKworICAgIHByaXZhdGUgRm9vIGZpZWxkOworCisgICAgdm9pZCBiYXIoKSB7CisgICAgICAgIGZpZWxkLnB1dCgiYSIsICJiIik7CisgICAgfQorCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVGaWVsZEZyb21Vc2FnZS9hZnRlclR5cGVBcmdzRm9ybWF0dGVkLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUZpZWxkRnJvbVVzYWdlL2FmdGVyVHlwZUFyZ3NGb3JtYXR0ZWQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MDQ3NGY3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVGaWVsZEZyb21Vc2FnZS9hZnRlclR5cGVBcmdzRm9ybWF0dGVkLmphdmEKQEAgLTAsMCArMSwxMyBAQAorLy8gIkNyZWF0ZSBGaWVsZCAnZmllbGQnIiAidHJ1ZSIKK2ltcG9ydCBqYXZhLnV0aWwuKjsKK2NsYXNzIEEgeworICAgIHByaXZhdGUgTWFwPFN0cmluZywgU3RyaW5nPiBmaWVsZDxjYXJldD47CisKKyAgICB2b2lkIGZvbyhNYXA8U3RyaW5nLCBTdHJpbmc+IHMpe30KKworICB2b2lkIGJhcigpIHsKKyAgICBmb28oZmllbGQpOworICB9CisKK30KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVGaWVsZEZyb21Vc2FnZS9hZnRlcldpdGhBbGlnbm1lbnQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlRmllbGRGcm9tVXNhZ2UvYWZ0ZXJXaXRoQWxpZ25tZW50LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjNmMDg3YgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlRmllbGRGcm9tVXNhZ2UvYWZ0ZXJXaXRoQWxpZ25tZW50LmphdmEKQEAgLTAsMCArMSwyMyBAQAorLy8gIkNyZWF0ZSBGaWVsZCAnZmllbGQnIiAidHJ1ZSIKK2NsYXNzIEEgeworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIE5PVElGSUNBVElPTl9FTkFCTEVEICAgICA9ICJOT1RJRklDQVRJT05fRU5BQkxFRCI7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgTk9USUZJQ0FUSU9OX0RFVklDRV9OQU1FID0gIk5PVElGSUNBVElPTl9ERVZJQ0VfTkFNRSI7CisgICAgcHVibGljIHN0YXRpYyBTdHJpbmcgZmllbGQ7CisKKyAgICBwdWJsaWMgc3RhdGljIFN0cmluZyBnZXRTdHJpbmcoU3RyaW5nIGtleSkKKyAgeworICAgICAgcmV0dXJuIGdldFN0cmluZyhrZXksICIiKTsKKyAgfQorCisgIHB1YmxpYyBzdGF0aWMgU3RyaW5nIGdldFN0cmluZyhTdHJpbmcga2V5LCBTdHJpbmcgZGVmYXVsdFZhbHVlKQorICB7CisgICAgICByZXR1cm4gbnVsbDsKKyAgfQorICAKK30KKworY2xhc3MgQiB7CisgIHsKKyAgICBTdHJpbmcgcyA9IEEuZmllbGQ7CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlRmllbGRGcm9tVXNhZ2UvYmVmb3JlQW5vbnltb3VzQ2xhc3MuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlRmllbGRGcm9tVXNhZ2UvYmVmb3JlQW5vbnltb3VzQ2xhc3MuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYzI3NWVhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVGaWVsZEZyb21Vc2FnZS9iZWZvcmVBbm9ueW1vdXNDbGFzcy5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKKy8vICJDcmVhdGUgRmllbGQgJ2ZpZWxkJyIgInRydWUiCitjbGFzcyBNYWluIHsKKyAgICBzdGF0aWMgdm9pZCBmb28oKSB7CisgICAgICAgIG5ldyBPYmplY3QoKSB7CisgICAgICAgICAgICB2b2lkIGJhcigpIHsKKyAgICAgICAgICAgICAgICB0aGlzLjxjYXJldD5maWVsZCA9IDA7CisgICAgICAgICAgICB9CisgICAgICAgIH07CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVGaWVsZEZyb21Vc2FnZS9iZWZvcmVDcmVhdGVGcm9tRXF1YWxzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUZpZWxkRnJvbVVzYWdlL2JlZm9yZUNyZWF0ZUZyb21FcXVhbHMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNjY0NWQ2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVGaWVsZEZyb21Vc2FnZS9iZWZvcmVDcmVhdGVGcm9tRXF1YWxzLmphdmEKQEAgLTAsMCArMSw2IEBACisvLyAiQ3JlYXRlIEZpZWxkICdWQVInIiAidHJ1ZSIKK2NsYXNzIEEgeworICBwdWJsaWMgSURFQTE2MDI3KCkgeworICAgIFY8Y2FyZXQ+QVIuZXF1YWxzKCIiKTsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVGaWVsZEZyb21Vc2FnZS9iZWZvcmVDcmVhdGVGcm9tRXF1YWxzVG9QcmltaXRpdmVUeXBlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUZpZWxkRnJvbVVzYWdlL2JlZm9yZUNyZWF0ZUZyb21FcXVhbHNUb1ByaW1pdGl2ZVR5cGUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZGJmM2M1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVGaWVsZEZyb21Vc2FnZS9iZWZvcmVDcmVhdGVGcm9tRXF1YWxzVG9QcmltaXRpdmVUeXBlLmphdmEKQEAgLTAsMCArMSw2IEBACisvLyAiQ3JlYXRlIEZpZWxkICdWQVInIiAidHJ1ZSIKK2NsYXNzIEEgeworICBwdWJsaWMgSURFQTE2MDI3KCkgeworICAgIFY8Y2FyZXQ+QVIuZXF1YWxzKDUpOworICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUZpZWxkRnJvbVVzYWdlL2JlZm9yZUV4cGVjdGVkVHlwZXMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlRmllbGRGcm9tVXNhZ2UvYmVmb3JlRXhwZWN0ZWRUeXBlcy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcxYjlmNTAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUZpZWxkRnJvbVVzYWdlL2JlZm9yZUV4cGVjdGVkVHlwZXMuamF2YQpAQCAtMCwwICsxLDEyIEBACisvLyAiQ3JlYXRlIEZpZWxkICdwYW5lbCciICJ0cnVlIgoraW1wb3J0IGphdmF4LnN3aW5nLio7CisKK2NsYXNzIFRlc3QgeworICB2b2lkIGZvbyhKUGFuZWwgY29udGFpbmVyKSB7CisgICAgaWYgKHA8Y2FyZXQ+YW5lbCA9PSBudWxsKSB7CisgICAgICBwYW5lbCA9IG5ldyBKUGFuZWwoKTsKKyAgICAgIHBhbmVsLnNldE9wYXF1ZSh0cnVlKTsKKyAgICAgIGNvbnRhaW5lci5hZGQocGFuZWwpOworICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlRmllbGRGcm9tVXNhZ2UvYmVmb3JlSW5zaWRlU3RhdGljSW5uZXJDbGFzcy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVGaWVsZEZyb21Vc2FnZS9iZWZvcmVJbnNpZGVTdGF0aWNJbm5lckNsYXNzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjA3YTJhMwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlRmllbGRGcm9tVXNhZ2UvYmVmb3JlSW5zaWRlU3RhdGljSW5uZXJDbGFzcy5qYXZhCkBAIC0wLDAgKzEsMTIgQEAKKy8vICJDcmVhdGUgRmllbGQgJ2ZpZWxkJyIgInRydWUiCitjbGFzcyBBIHsKKyAgU3RyaW5nIGZpZWxkOworCisgIHN0YXRpYyBjbGFzcyBGb28geworICAgICAgRm9vKCkgeworICAgICAgICAgIGZpZTxjYXJldD5sZDsKKyAgICAgIH0KKyAgfQorCit9CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlRmllbGRGcm9tVXNhZ2UvYmVmb3JlSW50ZXJmYWNlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUZpZWxkRnJvbVVzYWdlL2JlZm9yZUludGVyZmFjZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBiMTYzMzMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUZpZWxkRnJvbVVzYWdlL2JlZm9yZUludGVyZmFjZS5qYXZhCkBAIC0wLDAgKzEsOSBAQAorLy8gIkNyZWF0ZSBGaWVsZCAnRklFTEQnIiAidHJ1ZSIKK2NsYXNzIEMgeworICAgIHB1YmxpYyB2b2lkIGZvbygpIHsKKyAgICAgICAgaW50IGkgPSBJVGVzdC5GSUVMRDxjYXJldD47CisgICAgfQorICAgIAorICAgIHB1YmxpYyBzdGF0aWMgaW50ZXJmYWNlIElUZXN0IHsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVGaWVsZEZyb21Vc2FnZS9iZWZvcmVNdWx0aXBsZVR5cGVzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUZpZWxkRnJvbVVzYWdlL2JlZm9yZU11bHRpcGxlVHlwZXMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNDUwM2Y0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVGaWVsZEZyb21Vc2FnZS9iZWZvcmVNdWx0aXBsZVR5cGVzLmphdmEKQEAgLTAsMCArMSw3IEBACisvLyAiQ3JlYXRlIEZpZWxkICdmbGQnIiAidHJ1ZSIKK2NsYXNzIEEgeworICAgIHB1YmxpYyB2b2lkIGZvbygpIHsKKyAgICAgIE9iamVjdCB4ID0gPGNhcmV0PmZsZDsKKyAgICAgIGZsZCA9ICIiOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUZpZWxkRnJvbVVzYWdlL2JlZm9yZU11bHRpcGxlVHlwZXMyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUZpZWxkRnJvbVVzYWdlL2JlZm9yZU11bHRpcGxlVHlwZXMyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzg5ZTQ0MgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlRmllbGRGcm9tVXNhZ2UvYmVmb3JlTXVsdGlwbGVUeXBlczIuamF2YQpAQCAtMCwwICsxLDcgQEAKKy8vICJDcmVhdGUgRmllbGQgJ2ZsZCciICJ0cnVlIgorY2xhc3MgQSB7CisgICAgcHVibGljIHZvaWQgZm9vKCkgeworICAgICAgT2JqZWN0IHggPSA8Y2FyZXQ+ZmxkOworICAgICAgU3RyaW5nIHMgPSBmbGQ7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlRmllbGRGcm9tVXNhZ2UvYmVmb3JlTmEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlRmllbGRGcm9tVXNhZ2UvYmVmb3JlTmEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZWI3NmQwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVGaWVsZEZyb21Vc2FnZS9iZWZvcmVOYS5qYXZhCkBAIC0wLDAgKzEsNiBAQAorLy8gIkZpZWxkIG5vdCBjcmVhdGVkIiAiZmFsc2UiCitjbGFzcyBDIHsKKyAgICB2b2lkIGZvbygpIHsKKyAgICAgICAgdGU8Y2FyZXQ+c3QoKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVGaWVsZEZyb21Vc2FnZS9iZWZvcmVQYXJhbWV0ZXJpY01ldGhvZC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVGaWVsZEZyb21Vc2FnZS9iZWZvcmVQYXJhbWV0ZXJpY01ldGhvZC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcyNTk0MDYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUZpZWxkRnJvbVVzYWdlL2JlZm9yZVBhcmFtZXRlcmljTWV0aG9kLmphdmEKQEAgLTAsMCArMSwxMyBAQAorLy8gIkNyZWF0ZSBGaWVsZCAnYXJyYXknIiAidHJ1ZSIKK2NsYXNzIFNtdGg8VD4geworfQorCitjbGFzcyBDb252ZXJ0ZXIgeworICBzdGF0aWMgPFQ+IFNtdGg8VD4gYXNTbXRoIChUW10gdCkge30KK30KKworY2xhc3MgVGVzdCB7CisgICAgdm9pZCBiYXIgKCkgeworICAgICAgICBTbXRoPFN0cmluZz4gbCA9IENvbnZlcnRlci5hc1NtdGgoYTxjYXJldD5ycmF5KTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVGaWVsZEZyb21Vc2FnZS9iZWZvcmVRdWFsaWZ5SW5uZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlRmllbGRGcm9tVXNhZ2UvYmVmb3JlUXVhbGlmeUlubmVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmIxNWZkNgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlRmllbGRGcm9tVXNhZ2UvYmVmb3JlUXVhbGlmeUlubmVyLmphdmEKQEAgLTAsMCArMSwxMiBAQAorLy8gIkNyZWF0ZSBGaWVsZCAnZmllbGQnIiAidHJ1ZSIKK2NsYXNzIEF7CisgICAgeworICAgICAgICBPdXRlci5mKGZpZWxkPGNhcmV0Pik7CisgICAgfQorfQorCitjbGFzcyBPdXRlcnsKKyAgICBzdGF0aWMgY2xhc3MgSW5uZXJ7fQorCisgICAgc3RhdGljIHZvaWQgZihJbm5lciBpbm5lcil7fQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlRmllbGRGcm9tVXNhZ2UvYmVmb3JlU29ydEJ5UmVsZXZhbmNlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUZpZWxkRnJvbVVzYWdlL2JlZm9yZVNvcnRCeVJlbGV2YW5jZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgxMzU1NzMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUZpZWxkRnJvbVVzYWdlL2JlZm9yZVNvcnRCeVJlbGV2YW5jZS5qYXZhCkBAIC0wLDAgKzEsOCBAQAorLy8gIkNyZWF0ZSBGaWVsZCAnZmllbGQnIiAidHJ1ZSIKK2NsYXNzIEEgeworCisgICAgdm9pZCBiYXIoKSB7CisgICAgICAgIGY8Y2FyZXQ+aWVsZC5wdXQoImEiLCAiYiIpOworICAgIH0KKworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlRmllbGRGcm9tVXNhZ2UvYmVmb3JlVHlwZUFyZ3NGb3JtYXR0ZWQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlRmllbGRGcm9tVXNhZ2UvYmVmb3JlVHlwZUFyZ3NGb3JtYXR0ZWQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZWFkOWNjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVGaWVsZEZyb21Vc2FnZS9iZWZvcmVUeXBlQXJnc0Zvcm1hdHRlZC5qYXZhCkBAIC0wLDAgKzEsMTEgQEAKKy8vICJDcmVhdGUgRmllbGQgJ2ZpZWxkJyIgInRydWUiCitpbXBvcnQgamF2YS51dGlsLio7CitjbGFzcyBBIHsKKyAgdm9pZCBmb28oTWFwPFN0cmluZywgU3RyaW5nPiBzKXt9CisKKyAgdm9pZCBiYXIoKSB7CisgICAgZm9vKGZpZTxjYXJldD5sZCk7CisgIH0KKworfQorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUZpZWxkRnJvbVVzYWdlL2JlZm9yZVdpdGhBbGlnbm1lbnQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlRmllbGRGcm9tVXNhZ2UvYmVmb3JlV2l0aEFsaWdubWVudC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE2ZjcxODUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUZpZWxkRnJvbVVzYWdlL2JlZm9yZVdpdGhBbGlnbm1lbnQuamF2YQpAQCAtMCwwICsxLDIyIEBACisvLyAiQ3JlYXRlIEZpZWxkICdmaWVsZCciICJ0cnVlIgorY2xhc3MgQSB7CisgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIE5PVElGSUNBVElPTl9FTkFCTEVEICAgICA9ICJOT1RJRklDQVRJT05fRU5BQkxFRCI7CisgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIE5PVElGSUNBVElPTl9ERVZJQ0VfTkFNRSA9ICJOT1RJRklDQVRJT05fREVWSUNFX05BTUUiOworCisgIHB1YmxpYyBzdGF0aWMgU3RyaW5nIGdldFN0cmluZyhTdHJpbmcga2V5KQorICB7CisgICAgICByZXR1cm4gZ2V0U3RyaW5nKGtleSwgIiIpOworICB9CisKKyAgcHVibGljIHN0YXRpYyBTdHJpbmcgZ2V0U3RyaW5nKFN0cmluZyBrZXksIFN0cmluZyBkZWZhdWx0VmFsdWUpCisgIHsKKyAgICAgIHJldHVybiBudWxsOworICB9CisgIAorfQorCitjbGFzcyBCIHsKKyAgeworICAgIFN0cmluZyBzID0gQS5maTxjYXJldD5lbGQ7CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlR2V0dGVyT3JTZXR0ZXIvYWZ0ZXJDcmVhdGVHZXR0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlR2V0dGVyT3JTZXR0ZXIvYWZ0ZXJDcmVhdGVHZXR0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NjJiMzFjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVHZXR0ZXJPclNldHRlci9hZnRlckNyZWF0ZUdldHRlci5qYXZhCkBAIC0wLDAgKzEsOCBAQAorLy8gIkNyZWF0ZSBnZXR0ZXIgZm9yICdzJyIgInRydWUiCitjbGFzcyBBIHsKKyAgcHJpdmF0ZSBTdHJpbmcgczsKKworICAgIFN0cmluZyBnZXRTKCkgeworICAgICAgICByZXR1cm4gczsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVHZXR0ZXJPclNldHRlci9hZnRlckNyZWF0ZUdldHRlckFuZFNldHRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVHZXR0ZXJPclNldHRlci9hZnRlckNyZWF0ZUdldHRlckFuZFNldHRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE5YjA3MzkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUdldHRlck9yU2V0dGVyL2FmdGVyQ3JlYXRlR2V0dGVyQW5kU2V0dGVyLmphdmEKQEAgLTAsMCArMSwxMiBAQAorLy8gIkNyZWF0ZSBnZXR0ZXIgYW5kIHNldHRlciBmb3IgJ3MnIiAidHJ1ZSIKK2NsYXNzIEEgeworICBwcml2YXRlIFN0cmluZyBzOworCisgICAgU3RyaW5nIGdldFMoKSB7CisgICAgICAgIHJldHVybiBzOworICAgIH0KKworICAgIHZvaWQgc2V0UyhTdHJpbmcgcykgeworICAgICAgICB0aGlzLnMgPSBzOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUdldHRlck9yU2V0dGVyL2FmdGVyQ3JlYXRlU2V0dGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUdldHRlck9yU2V0dGVyL2FmdGVyQ3JlYXRlU2V0dGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGJlMmNjNgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlR2V0dGVyT3JTZXR0ZXIvYWZ0ZXJDcmVhdGVTZXR0ZXIuamF2YQpAQCAtMCwwICsxLDggQEAKKy8vICJDcmVhdGUgc2V0dGVyIGZvciAncyciICJ0cnVlIgorY2xhc3MgQSB7CisgIHByaXZhdGUgU3RyaW5nIHM7CisKKyAgICB2b2lkIHNldFMoU3RyaW5nIHMpIHsKKyAgICAgICAgdGhpcy5zID0gczsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVHZXR0ZXJPclNldHRlci9iZWZvcmVDcmVhdGVHZXR0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlR2V0dGVyT3JTZXR0ZXIvYmVmb3JlQ3JlYXRlR2V0dGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTEyZTQ0NQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlR2V0dGVyT3JTZXR0ZXIvYmVmb3JlQ3JlYXRlR2V0dGVyLmphdmEKQEAgLTAsMCArMSw0IEBACisvLyAiQ3JlYXRlIGdldHRlciBmb3IgJ3MnIiAidHJ1ZSIKK2NsYXNzIEEgeworICBwcml2YXRlIFN0cmluZyA8Y2FyZXQ+czsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUdldHRlck9yU2V0dGVyL2JlZm9yZUNyZWF0ZUdldHRlckFuZFNldHRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVHZXR0ZXJPclNldHRlci9iZWZvcmVDcmVhdGVHZXR0ZXJBbmRTZXR0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zM2FhZmFlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVHZXR0ZXJPclNldHRlci9iZWZvcmVDcmVhdGVHZXR0ZXJBbmRTZXR0ZXIuamF2YQpAQCAtMCwwICsxLDQgQEAKKy8vICJDcmVhdGUgZ2V0dGVyIGFuZCBzZXR0ZXIgZm9yICdzJyIgInRydWUiCitjbGFzcyBBIHsKKyAgcHJpdmF0ZSBTdHJpbmcgPGNhcmV0PnM7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVHZXR0ZXJPclNldHRlci9iZWZvcmVDcmVhdGVTZXR0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlR2V0dGVyT3JTZXR0ZXIvYmVmb3JlQ3JlYXRlU2V0dGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWU5NGU4ZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlR2V0dGVyT3JTZXR0ZXIvYmVmb3JlQ3JlYXRlU2V0dGVyLmphdmEKQEAgLTAsMCArMSw0IEBACisvLyAiQ3JlYXRlIHNldHRlciBmb3IgJ3MnIiAidHJ1ZSIKK2NsYXNzIEEgeworICBwcml2YXRlIFN0cmluZyA8Y2FyZXQ+czsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUdldHRlck9yU2V0dGVyL2JlZm9yZU5vR2V0dGVyQW5kU2V0dGVyRm9yRmluYWwuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlR2V0dGVyT3JTZXR0ZXIvYmVmb3JlTm9HZXR0ZXJBbmRTZXR0ZXJGb3JGaW5hbC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI0NThkM2M2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVHZXR0ZXJPclNldHRlci9iZWZvcmVOb0dldHRlckFuZFNldHRlckZvckZpbmFsLmphdmEKQEAgLTAsMCArMSw0IEBACisvLyAiQ3JlYXRlIGdldHRlciBhbmQgc2V0dGVyIGZvciAncyciICJmYWxzZSIKK2NsYXNzIEEgeworICBwcml2YXRlIGZpbmFsIFN0cmluZyA8Y2FyZXQ+czsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUdldHRlck9yU2V0dGVyL2JlZm9yZU5vR2V0dGVyQW5kU2V0dGVyRm9yU3RhdGljRmluYWwuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlR2V0dGVyT3JTZXR0ZXIvYmVmb3JlTm9HZXR0ZXJBbmRTZXR0ZXJGb3JTdGF0aWNGaW5hbC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUzNmQzNTUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUdldHRlck9yU2V0dGVyL2JlZm9yZU5vR2V0dGVyQW5kU2V0dGVyRm9yU3RhdGljRmluYWwuamF2YQpAQCAtMCwwICsxLDQgQEAKKy8vICJDcmVhdGUgZ2V0dGVyIGFuZCBzZXR0ZXIgZm9yICdzJyIgImZhbHNlIgorY2xhc3MgQSB7CisgIHByaXZhdGUgZmluYWwgc3RhdGljIFN0cmluZyA8Y2FyZXQ+czsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUdldHRlck9yU2V0dGVyL2JlZm9yZU5vR2V0dGVyRm9yU3RhdGljRmluYWwuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlR2V0dGVyT3JTZXR0ZXIvYmVmb3JlTm9HZXR0ZXJGb3JTdGF0aWNGaW5hbC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAyNzk5Y2UKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUdldHRlck9yU2V0dGVyL2JlZm9yZU5vR2V0dGVyRm9yU3RhdGljRmluYWwuamF2YQpAQCAtMCwwICsxLDQgQEAKKy8vICJDcmVhdGUgc2V0dGVyIGZvciAncyciICJmYWxzZSIKK2NsYXNzIEEgeworICBwcml2YXRlIGZpbmFsIHN0YXRpYyBTdHJpbmcgPGNhcmV0PnM7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVHZXR0ZXJPclNldHRlci9iZWZvcmVOb1NldHRlckZvckZpbmFsLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUdldHRlck9yU2V0dGVyL2JlZm9yZU5vU2V0dGVyRm9yRmluYWwuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMzk0NDlkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVHZXR0ZXJPclNldHRlci9iZWZvcmVOb1NldHRlckZvckZpbmFsLmphdmEKQEAgLTAsMCArMSw0IEBACisvLyAiQ3JlYXRlIHNldHRlciBmb3IgJ3MnIiAiZmFsc2UiCitjbGFzcyBBIHsKKyAgcHJpdmF0ZSBmaW5hbCBTdHJpbmcgPGNhcmV0PnM7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVHZXR0ZXJPclNldHRlci9iZWZvcmVOb1NldHRlckZvclN0YXRpY0ZpbmFsLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUdldHRlck9yU2V0dGVyL2JlZm9yZU5vU2V0dGVyRm9yU3RhdGljRmluYWwuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMjc5OWNlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVHZXR0ZXJPclNldHRlci9iZWZvcmVOb1NldHRlckZvclN0YXRpY0ZpbmFsLmphdmEKQEAgLTAsMCArMSw0IEBACisvLyAiQ3JlYXRlIHNldHRlciBmb3IgJ3MnIiAiZmFsc2UiCitjbGFzcyBBIHsKKyAgcHJpdmF0ZSBmaW5hbCBzdGF0aWMgU3RyaW5nIDxjYXJldD5zOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlSW5uZXJDbGFzc0Zyb21OZXcvYWZ0ZXIxLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUlubmVyQ2xhc3NGcm9tTmV3L2FmdGVyMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUwZjkzNzkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUlubmVyQ2xhc3NGcm9tTmV3L2FmdGVyMS5qYXZhCkBAIC0wLDAgKzEsMTMgQEAKKy8vICJDcmVhdGUgSW5uZXIgQ2xhc3MgJ015Q29sbGVjdGlvbiciICJ0cnVlIgoraW1wb3J0IGphdmEudXRpbC4qOworCitwdWJsaWMgY2xhc3MgVGVzdCB7CisgICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oKSB7CisgICAgICAgIENvbGxlY3Rpb24gYyA9IG5ldyBNeUNvbGxlY3Rpb24oMSwgInRlc3QiKTsKKyAgICB9CisKKyAgICBwcml2YXRlIHN0YXRpYyBjbGFzcyBNeUNvbGxlY3Rpb24gaW1wbGVtZW50cyBDb2xsZWN0aW9uIHsKKyAgICAgICAgcHVibGljIE15Q29sbGVjdGlvbihpbnQgaSwgU3RyaW5nIHRlc3QpIHs8Y2FyZXQ+CisgICAgICAgIH0KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVJbm5lckNsYXNzRnJvbU5ldy9hZnRlcjIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlSW5uZXJDbGFzc0Zyb21OZXcvYWZ0ZXIyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDE0NzE3MgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlSW5uZXJDbGFzc0Zyb21OZXcvYWZ0ZXIyLmphdmEKQEAgLTAsMCArMSwxMyBAQAorLy8gIkNyZWF0ZSBJbm5lciBDbGFzcyAnTXlBcnJheUxpc3QnIiAidHJ1ZSIKK2ltcG9ydCBqYXZhLnV0aWwuKjsKKworcHVibGljIGNsYXNzIFRlc3QgeworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKCkgeworICAgICAgICBBcnJheUxpc3QgbGlzdCA9IG5ldyBNeUFycmF5TGlzdCgxLCAidGVzdCIpOworICAgIH0KKworICAgIHByaXZhdGUgc3RhdGljIGNsYXNzIE15QXJyYXlMaXN0IGV4dGVuZHMgQXJyYXlMaXN0IHsKKyAgICAgICAgcHVibGljIE15QXJyYXlMaXN0KGludCBpLCBTdHJpbmcgdGVzdCkgezxjYXJldD4KKyAgICAgICAgfQorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUlubmVyQ2xhc3NGcm9tTmV3L2FmdGVyMy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVJbm5lckNsYXNzRnJvbU5ldy9hZnRlcjMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ODdkZjM4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVJbm5lckNsYXNzRnJvbU5ldy9hZnRlcjMuamF2YQpAQCAtMCwwICsxLDEyIEBACisvLyAiQ3JlYXRlIElubmVyIENsYXNzICdNeUludGVnZXInIiAidHJ1ZSIKK3B1YmxpYyBjbGFzcyBUZXN0IHsKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbigpIHsKKyAgICAgICAgaW50IHh4eCA9IDM7CisgICAgICAgIEludGVnZXIgaSA9IG5ldyBNeUludGVnZXIoeHh4KTsKKyAgICB9CisKKyAgICBwcml2YXRlIHN0YXRpYyBjbGFzcyBNeUludGVnZXIgeworICAgICAgICBwdWJsaWMgTXlJbnRlZ2VyKGludCB4eHgpIHs8Y2FyZXQ+CisgICAgICAgIH0KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVJbm5lckNsYXNzRnJvbU5ldy9hZnRlcjYuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlSW5uZXJDbGFzc0Zyb21OZXcvYWZ0ZXI2LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWQzMjU5NwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlSW5uZXJDbGFzc0Zyb21OZXcvYWZ0ZXI2LmphdmEKQEAgLTAsMCArMSw5IEBACisvLyAiQ3JlYXRlIElubmVyIENsYXNzICdNeUNvbGxlY3Rpb24nIiAidHJ1ZSIKK3B1YmxpYyBjbGFzcyBUZXN0IHsKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbigpIHsKKyAgICAgICAgQ29sbGVjdGlvbltdIGNjID0gbmV3IE15Q29sbGVjdGlvblsxMF07CisgICAgfQorCisgICAgcHJpdmF0ZSBzdGF0aWMgY2xhc3MgTXlDb2xsZWN0aW9uIHsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVJbm5lckNsYXNzRnJvbU5ldy9hZnRlcjguamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlSW5uZXJDbGFzc0Zyb21OZXcvYWZ0ZXI4LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWRjNWQyMgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlSW5uZXJDbGFzc0Zyb21OZXcvYWZ0ZXI4LmphdmEKQEAgLTAsMCArMSwxMiBAQAorLy8gIkNyZWF0ZSBJbm5lciBDbGFzcyAnTXlUYWJsZU1vZGVsJyIgInRydWUiCitpbXBvcnQgamF2YXguc3dpbmcuKjsKK2ltcG9ydCBqYXZheC5zd2luZy50YWJsZS5UYWJsZU1vZGVsOworCitwdWJsaWMgY2xhc3MgVGVzdCB7CisgICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oKSB7CisgICAgICAgIEpUYWJsZSB0YWJsZSA9IG5ldyBKVGFibGUobmV3IE15VGFibGVNb2RlbCgpKTsKKyAgICB9CisKKyAgICBwcml2YXRlIHN0YXRpYyBjbGFzcyBNeVRhYmxlTW9kZWwgaW1wbGVtZW50cyBUYWJsZU1vZGVsIHsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVJbm5lckNsYXNzRnJvbU5ldy9hZnRlckFub255bW91cy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVJbm5lckNsYXNzRnJvbU5ldy9hZnRlckFub255bW91cy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE4MGQyYjMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUlubmVyQ2xhc3NGcm9tTmV3L2FmdGVyQW5vbnltb3VzLmphdmEKQEAgLTAsMCArMSwxNCBAQAorLy8gIkNyZWF0ZSBJbm5lciBDbGFzcyAnTXlDb2xsZWN0aW9uJyIgInRydWUiCitpbXBvcnQgamF2YS51dGlsLio7CisKK3B1YmxpYyBjbGFzcyBUZXN0IHsKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbigpIHsKKyAgICAgICAgQ29sbGVjdGlvbiBjID0gbmV3IE15Q29sbGVjdGlvbigxLCAidGVzdCIpIHsKKyAgICAgICAgfTsKKyAgICB9CisKKyAgICBwcml2YXRlIHN0YXRpYyBjbGFzcyBNeUNvbGxlY3Rpb24gaW1wbGVtZW50cyBDb2xsZWN0aW9uIHsKKyAgICAgICAgcHVibGljIE15Q29sbGVjdGlvbihpbnQgaSwgU3RyaW5nIHRlc3QpIHs8Y2FyZXQ+CisgICAgICAgIH0KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVJbm5lckNsYXNzRnJvbU5ldy9hZnRlckdlbmVyaWNzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUlubmVyQ2xhc3NGcm9tTmV3L2FmdGVyR2VuZXJpY3MuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NDYxZjg5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVJbm5lckNsYXNzRnJvbU5ldy9hZnRlckdlbmVyaWNzLmphdmEKQEAgLTAsMCArMSw5IEBACisvLyAiQ3JlYXRlIElubmVyIENsYXNzICdHZW5lcmljJyIgInRydWUiCitjbGFzcyBUZXN0IHsKKyAgdm9pZCBmb28gKCkgeworICAgIG5ldyBHZW5lcmljPFN0cmluZz4gKCk7CisgIH0KKworICAgIHByaXZhdGUgY2xhc3MgR2VuZXJpYzxUPiB7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlSW5uZXJDbGFzc0Zyb21OZXcvYWZ0ZXJJblN1cGVyTm9uQ29uc3RydWN0b3IuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlSW5uZXJDbGFzc0Zyb21OZXcvYWZ0ZXJJblN1cGVyTm9uQ29uc3RydWN0b3IuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42OGNmMjMxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVJbm5lckNsYXNzRnJvbU5ldy9hZnRlckluU3VwZXJOb25Db25zdHJ1Y3Rvci5qYXZhCkBAIC0wLDAgKzEsMTIgQEAKKy8vICJDcmVhdGUgSW5uZXIgQ2xhc3MgJ0dlbmVyaWMnIiAidHJ1ZSIKK2NsYXNzIEJhc2UgeworICB2b2lkIGZvbygpe30KK30KK2NsYXNzIFRlc3QgZXh0ZW5kcyBCYXNlIHsKKyAgVGVzdCgpIHsKKyAgICBzdXBlci5mb28obmV3IEdlbmVyaWM8U3RyaW5nPiAoKSk7CisgIH0KKworICAgIHByaXZhdGUgY2xhc3MgR2VuZXJpYzxUPiB7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlSW5uZXJDbGFzc0Zyb21OZXcvYWZ0ZXJJblRoaXMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlSW5uZXJDbGFzc0Zyb21OZXcvYWZ0ZXJJblRoaXMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MDFlOWY2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVJbm5lckNsYXNzRnJvbU5ldy9hZnRlckluVGhpcy5qYXZhCkBAIC0wLDAgKzEsMTEgQEAKKy8vICJDcmVhdGUgSW5uZXIgQ2xhc3MgJ0dlbmVyaWMnIiAidHJ1ZSIKK2NsYXNzIFRlc3QgeworICBUZXN0KCkgeworICAgIHRoaXMgKG5ldyBHZW5lcmljPFN0cmluZz4gKCkpOworICB9CisKKyAgVGVzdChTdHJpbmcgcyl7fQorCisgICAgcHJpdmF0ZSBzdGF0aWMgY2xhc3MgR2VuZXJpYzxUPiB7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlSW5uZXJDbGFzc0Zyb21OZXcvYmVmb3JlMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVJbm5lckNsYXNzRnJvbU5ldy9iZWZvcmUxLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzY2NGNiOQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlSW5uZXJDbGFzc0Zyb21OZXcvYmVmb3JlMS5qYXZhCkBAIC0wLDAgKzEsOCBAQAorLy8gIkNyZWF0ZSBJbm5lciBDbGFzcyAnTXlDb2xsZWN0aW9uJyIgInRydWUiCitpbXBvcnQgamF2YS51dGlsLio7CisKK3B1YmxpYyBjbGFzcyBUZXN0IHsKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbigpIHsKKyAgICAgICAgQ29sbGVjdGlvbiBjID0gbmV3IDxjYXJldD5NeUNvbGxlY3Rpb24oMSwgInRlc3QiKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVJbm5lckNsYXNzRnJvbU5ldy9iZWZvcmUyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUlubmVyQ2xhc3NGcm9tTmV3L2JlZm9yZTIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNzVjYmZlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVJbm5lckNsYXNzRnJvbU5ldy9iZWZvcmUyLmphdmEKQEAgLTAsMCArMSw4IEBACisvLyAiQ3JlYXRlIElubmVyIENsYXNzICdNeUFycmF5TGlzdCciICJ0cnVlIgoraW1wb3J0IGphdmEudXRpbC4qOworCitwdWJsaWMgY2xhc3MgVGVzdCB7CisgICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oKSB7CisgICAgICAgIEFycmF5TGlzdCBsaXN0ID0gbmV3IDxjYXJldD5NeUFycmF5TGlzdCgxLCAidGVzdCIpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUlubmVyQ2xhc3NGcm9tTmV3L2JlZm9yZTMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlSW5uZXJDbGFzc0Zyb21OZXcvYmVmb3JlMy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZiYzY0YjgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUlubmVyQ2xhc3NGcm9tTmV3L2JlZm9yZTMuamF2YQpAQCAtMCwwICsxLDcgQEAKKy8vICJDcmVhdGUgSW5uZXIgQ2xhc3MgJ015SW50ZWdlciciICJ0cnVlIgorcHVibGljIGNsYXNzIFRlc3QgeworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKCkgeworICAgICAgICBpbnQgeHh4ID0gMzsKKyAgICAgICAgSW50ZWdlciBpID0gbmV3IDxjYXJldD5NeUludGVnZXIoeHh4KTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVJbm5lckNsYXNzRnJvbU5ldy9iZWZvcmU0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUlubmVyQ2xhc3NGcm9tTmV3L2JlZm9yZTQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MmM2MzJiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVJbm5lckNsYXNzRnJvbU5ldy9iZWZvcmU0LmphdmEKQEAgLTAsMCArMSw4IEBACisvLyAiQ3JlYXRlIElubmVyIENsYXNzICdJbm5lciciICJmYWxzZSIKK3B1YmxpYyBjbGFzcyBUZXN0IHsKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbigpIHsKKyAgICAgICAgbmV3IFRlPGNhcmV0PnN0LklubmVyKCk7CisgICAgfQorICAgIAorICAgIHB1YmxpYyBzdGF0aWMgY2xhc3MgSW5uZXIge30KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUlubmVyQ2xhc3NGcm9tTmV3L2JlZm9yZTUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlSW5uZXJDbGFzc0Zyb21OZXcvYmVmb3JlNS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhlMzEzZmIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUlubmVyQ2xhc3NGcm9tTmV3L2JlZm9yZTUuamF2YQpAQCAtMCwwICsxLDggQEAKKy8vICJDcmVhdGUgSW5uZXIgQ2xhc3MgJ0lubmVyJyIgImZhbHNlIgorcHVibGljIGNsYXNzIFRlc3QgeworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKCkgeworICAgICAgICBuZXcgSW5uZXI8Y2FyZXQ+KCk7CisgICAgfQorICAgIAorICAgIHB1YmxpYyBzdGF0aWMgY2xhc3MgSW5uZXIge30KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUlubmVyQ2xhc3NGcm9tTmV3L2JlZm9yZTYuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlSW5uZXJDbGFzc0Zyb21OZXcvYmVmb3JlNi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk1MDk5ZTgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUlubmVyQ2xhc3NGcm9tTmV3L2JlZm9yZTYuamF2YQpAQCAtMCwwICsxLDYgQEAKKy8vICJDcmVhdGUgSW5uZXIgQ2xhc3MgJ015Q29sbGVjdGlvbiciICJ0cnVlIgorcHVibGljIGNsYXNzIFRlc3QgeworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKCkgeworICAgICAgICBDb2xsZWN0aW9uW10gY2MgPSBuZXcgPGNhcmV0Pk15Q29sbGVjdGlvblsxMF07CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlSW5uZXJDbGFzc0Zyb21OZXcvYmVmb3JlNy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVJbm5lckNsYXNzRnJvbU5ldy9iZWZvcmU3LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTRlZDA3YgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlSW5uZXJDbGFzc0Zyb21OZXcvYmVmb3JlNy5qYXZhCkBAIC0wLDAgKzEsOCBAQAorLy8gIkNyZWF0ZSBJbm5lciBDbGFzcyAnSW5uZXInIiAiZmFsc2UiCitpbXBvcnQgamF2YS51dGlsLio7CisKK3B1YmxpYyBjbGFzcyBUZXN0IHsKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbigpIHsKKyAgICAgICAgQ29sbGVjdGlvbiBjID0gbmV3IFRlc3QuTXk8Y2FyZXQ+Q29sbGVjdGlvbigxKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVJbm5lckNsYXNzRnJvbU5ldy9iZWZvcmU4LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUlubmVyQ2xhc3NGcm9tTmV3L2JlZm9yZTguamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZjgwMTI4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVJbm5lckNsYXNzRnJvbU5ldy9iZWZvcmU4LmphdmEKQEAgLTAsMCArMSw4IEBACisvLyAiQ3JlYXRlIElubmVyIENsYXNzICdNeVRhYmxlTW9kZWwnIiAidHJ1ZSIKK2ltcG9ydCBqYXZheC5zd2luZy4qOworCitwdWJsaWMgY2xhc3MgVGVzdCB7CisgICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oKSB7CisgICAgICAgIEpUYWJsZSB0YWJsZSA9IG5ldyBKVGFibGUobmV3IE15VGFibGU8Y2FyZXQ+TW9kZWwoKSk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlSW5uZXJDbGFzc0Zyb21OZXcvYmVmb3JlQW5vbnltb3VzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUlubmVyQ2xhc3NGcm9tTmV3L2JlZm9yZUFub255bW91cy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhiN2M5OTcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUlubmVyQ2xhc3NGcm9tTmV3L2JlZm9yZUFub255bW91cy5qYXZhCkBAIC0wLDAgKzEsOSBAQAorLy8gIkNyZWF0ZSBJbm5lciBDbGFzcyAnTXlDb2xsZWN0aW9uJyIgInRydWUiCitpbXBvcnQgamF2YS51dGlsLio7CisKK3B1YmxpYyBjbGFzcyBUZXN0IHsKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbigpIHsKKyAgICAgICAgQ29sbGVjdGlvbiBjID0gbmV3IDxjYXJldD5NeUNvbGxlY3Rpb24oMSwgInRlc3QiKSB7CisgICAgICAgIH07CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlSW5uZXJDbGFzc0Zyb21OZXcvYmVmb3JlR2VuZXJpY3MuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlSW5uZXJDbGFzc0Zyb21OZXcvYmVmb3JlR2VuZXJpY3MuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZmE1ODczCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVJbm5lckNsYXNzRnJvbU5ldy9iZWZvcmVHZW5lcmljcy5qYXZhCkBAIC0wLDAgKzEsNiBAQAorLy8gIkNyZWF0ZSBJbm5lciBDbGFzcyAnR2VuZXJpYyciICJ0cnVlIgorY2xhc3MgVGVzdCB7CisgIHZvaWQgZm9vICgpIHsKKyAgICBuZXcgPGNhcmV0PkdlbmVyaWM8U3RyaW5nPiAoKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlSW5uZXJDbGFzc0Zyb21OZXcvYmVmb3JlSW5TdXBlck5vbkNvbnN0cnVjdG9yLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUlubmVyQ2xhc3NGcm9tTmV3L2JlZm9yZUluU3VwZXJOb25Db25zdHJ1Y3Rvci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM0YTlmZjMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUlubmVyQ2xhc3NGcm9tTmV3L2JlZm9yZUluU3VwZXJOb25Db25zdHJ1Y3Rvci5qYXZhCkBAIC0wLDAgKzEsOSBAQAorLy8gIkNyZWF0ZSBJbm5lciBDbGFzcyAnR2VuZXJpYyciICJ0cnVlIgorY2xhc3MgQmFzZSB7CisgIHZvaWQgZm9vKCl7fQorfQorY2xhc3MgVGVzdCBleHRlbmRzIEJhc2UgeworICBUZXN0KCkgeworICAgIHN1cGVyLmZvbyhuZXcgPGNhcmV0PkdlbmVyaWM8U3RyaW5nPiAoKSk7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUlubmVyQ2xhc3NGcm9tTmV3L2JlZm9yZUluVGhpcy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVJbm5lckNsYXNzRnJvbU5ldy9iZWZvcmVJblRoaXMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NTkxNTBjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVJbm5lckNsYXNzRnJvbU5ldy9iZWZvcmVJblRoaXMuamF2YQpAQCAtMCwwICsxLDggQEAKKy8vICJDcmVhdGUgSW5uZXIgQ2xhc3MgJ0dlbmVyaWMnIiAidHJ1ZSIKK2NsYXNzIFRlc3QgeworICBUZXN0KCkgeworICAgIHRoaXMgKG5ldyA8Y2FyZXQ+R2VuZXJpYzxTdHJpbmc+ICgpKTsKKyAgfQorCisgIFRlc3QoU3RyaW5nIHMpe30KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUlubmVyQ2xhc3NGcm9tVXNhZ2UvYWZ0ZXIxLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUlubmVyQ2xhc3NGcm9tVXNhZ2UvYWZ0ZXIxLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTk3MTUxYTIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUlubmVyQ2xhc3NGcm9tVXNhZ2UvYWZ0ZXIxLmphdmEKQEAgLTAsMCArMSw5IEBACisvLyAiQ3JlYXRlIElubmVyIENsYXNzICdBYmMnIiAidHJ1ZSIKK3B1YmxpYyBjbGFzcyBUZXN0IHsKKyAgICBwdWJsaWMgZm9vKGludCBwcHApIHsKKyAgICAgICAgPGNhcmV0PkFiYy5mb28oKTsKKyAgICB9CisKKyAgICBwcml2YXRlIGNsYXNzIEFiYyB7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlSW5uZXJDbGFzc0Zyb21Vc2FnZS9hZnRlckNhc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlSW5uZXJDbGFzc0Zyb21Vc2FnZS9hZnRlckNhc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YWIzODVmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVJbm5lckNsYXNzRnJvbVVzYWdlL2FmdGVyQ2FzdC5qYXZhCkBAIC0wLDAgKzEsMTEgQEAKKy8vICJDcmVhdGUgSW5uZXIgQ2xhc3MgJ0NsYXNzQiciICJ0cnVlIgorcHVibGljIGNsYXNzIENsYXNzQQoreworICAgIHB1YmxpYyB2b2lkIG1BKE9iamVjdCBhcmcpCisgICAgeworICAgICAgICAoKDxjYXJldD5DbGFzc0IpIGFyZykuZm9vKCk7CisgICAgfQorCisgICAgcHJpdmF0ZSBjbGFzcyBDbGFzc0IgeworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlSW5uZXJDbGFzc0Zyb21Vc2FnZS9hZnRlckNsYXNzT2JqZWN0QWNjZXNzMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVJbm5lckNsYXNzRnJvbVVzYWdlL2FmdGVyQ2xhc3NPYmplY3RBY2Nlc3MxLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWNhZDYwMQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlSW5uZXJDbGFzc0Zyb21Vc2FnZS9hZnRlckNsYXNzT2JqZWN0QWNjZXNzMS5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKKy8vICJDcmVhdGUgSW5uZXIgQ2xhc3MgJ0ZvbyciICJ0cnVlIgorcHVibGljIGNsYXNzIFRlc3QgeworICB2b2lkIGZvbyhDbGFzczxOdW1iZXI+IG4pe30KKyAgdm9pZCBiYXIoKSB7CisgICAgZm9vKEZvPGNhcmV0Pm8uY2xhc3MpOworICB9CisKKyAgICBwcml2YXRlIGNsYXNzIEZvbyBleHRlbmRzIE51bWJlciB7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlSW5uZXJDbGFzc0Zyb21Vc2FnZS9hZnRlckNsYXNzT2JqZWN0QWNjZXNzMi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVJbm5lckNsYXNzRnJvbVVzYWdlL2FmdGVyQ2xhc3NPYmplY3RBY2Nlc3MyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGMzMWIyNgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlSW5uZXJDbGFzc0Zyb21Vc2FnZS9hZnRlckNsYXNzT2JqZWN0QWNjZXNzMi5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKKy8vICJDcmVhdGUgSW5uZXIgQ2xhc3MgJ0ZvbyciICJ0cnVlIgorcHVibGljIGNsYXNzIFRlc3QgeworICB2b2lkIGZvbyhDbGFzczw/IGV4dGVuZHMgTnVtYmVyPiBuKXt9CisgIHZvaWQgYmFyKCkgeworICAgIGZvbyhGbzxjYXJldD5vLmNsYXNzKTsKKyAgfQorCisgICAgcHJpdmF0ZSBjbGFzcyBGb28gZXh0ZW5kcyBOdW1iZXIgeworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUlubmVyQ2xhc3NGcm9tVXNhZ2UvYWZ0ZXJDbGFzc09iamVjdEFjY2VzczMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlSW5uZXJDbGFzc0Zyb21Vc2FnZS9hZnRlckNsYXNzT2JqZWN0QWNjZXNzMy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM1Nzc3ZDAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUlubmVyQ2xhc3NGcm9tVXNhZ2UvYWZ0ZXJDbGFzc09iamVjdEFjY2VzczMuamF2YQpAQCAtMCwwICsxLDEwIEBACisvLyAiQ3JlYXRlIElubmVyIENsYXNzICdGb28nIiAidHJ1ZSIKK3B1YmxpYyBjbGFzcyBUZXN0IHsKKyAgdm9pZCBmb28oQ2xhc3M8PyBzdXBlciBOdW1iZXI+IG4pe30KKyAgdm9pZCBiYXIoKSB7CisgICAgZm9vKEZvPGNhcmV0Pm8uY2xhc3MpOworICB9CisKKyAgICBwcml2YXRlIGNsYXNzIEZvbyB7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlSW5uZXJDbGFzc0Zyb21Vc2FnZS9hZnRlckNsYXNzT2JqZWN0QWNjZXNzNC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVJbm5lckNsYXNzRnJvbVVzYWdlL2FmdGVyQ2xhc3NPYmplY3RBY2Nlc3M0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDYxYTFmYgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlSW5uZXJDbGFzc0Zyb21Vc2FnZS9hZnRlckNsYXNzT2JqZWN0QWNjZXNzNC5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKKy8vICJDcmVhdGUgSW5uZXIgQ2xhc3MgJ0ZvbyciICJ0cnVlIgorcHVibGljIGNsYXNzIFRlc3QgeworICB2b2lkIGZvbyhDbGFzczw/IGV4dGVuZHMgTnVtYmVyPiBuKXt9CisgIHZvaWQgYmFyKCkgeworICAgIGZvbyhGbzxjYXJldD5vKTsKKyAgfQorCisgICAgcHJpdmF0ZSBjbGFzcyBGb28geworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUlubmVyQ2xhc3NGcm9tVXNhZ2UvYWZ0ZXJGaWVsZFR5cGUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlSW5uZXJDbGFzc0Zyb21Vc2FnZS9hZnRlckZpZWxkVHlwZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkwOTkzN2YKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUlubmVyQ2xhc3NGcm9tVXNhZ2UvYWZ0ZXJGaWVsZFR5cGUuamF2YQpAQCAtMCwwICsxLDcgQEAKKy8vICJDcmVhdGUgSW5uZXIgQ2xhc3MgJ0FiYyciICJ0cnVlIgorcHVibGljIGNsYXNzIFRlc3QgeworICAgIHByaXZhdGUgPGNhcmV0PkFiYyBmbGQ7CisKKyAgICBwcml2YXRlIGNsYXNzIEFiYyB7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlSW5uZXJDbGFzc0Zyb21Vc2FnZS9hZnRlcklubmVySW5JbnRlcmZhY2UuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlSW5uZXJDbGFzc0Zyb21Vc2FnZS9hZnRlcklubmVySW5JbnRlcmZhY2UuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYmM3MDkwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVJbm5lckNsYXNzRnJvbVVzYWdlL2FmdGVySW5uZXJJbkludGVyZmFjZS5qYXZhCkBAIC0wLDAgKzEsNyBAQAorLy8gIkNyZWF0ZSBJbm5lciBDbGFzcyAnRm9vJyIgInRydWUiCitwdWJsaWMgaW50ZXJmYWNlIFRlc3QgeworICB2b2lkIGZvbyhGbzxjYXJldD5vIGYpe30KKworICAgIGNsYXNzIEZvbyB7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlSW5uZXJDbGFzc0Zyb21Vc2FnZS9hZnRlck1ldGhvZFR5cGUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlSW5uZXJDbGFzc0Zyb21Vc2FnZS9hZnRlck1ldGhvZFR5cGUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMGMxMDBlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVJbm5lckNsYXNzRnJvbVVzYWdlL2FmdGVyTWV0aG9kVHlwZS5qYXZhCkBAIC0wLDAgKzEsNyBAQAorLy8gIkNyZWF0ZSBJbm5lciBDbGFzcyAnQWJjJyIgInRydWUiCitwdWJsaWMgY2xhc3MgVGVzdCB7CisgICAgcHJpdmF0ZSA8Y2FyZXQ+QWJjIGZvbygpIHt9CisKKyAgICBwcml2YXRlIGNsYXNzIEFiYyB7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlSW5uZXJDbGFzc0Zyb21Vc2FnZS9hZnRlclBhcmFtZXRlclR5cGUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlSW5uZXJDbGFzc0Zyb21Vc2FnZS9hZnRlclBhcmFtZXRlclR5cGUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMGY2ZDNmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVJbm5lckNsYXNzRnJvbVVzYWdlL2FmdGVyUGFyYW1ldGVyVHlwZS5qYXZhCkBAIC0wLDAgKzEsNyBAQAorLy8gIkNyZWF0ZSBJbm5lciBDbGFzcyAnQWJjJyIgInRydWUiCitwdWJsaWMgY2xhc3MgVGVzdCB7CisgICAgcHJpdmF0ZSB2b2lkIGZvbyg8Y2FyZXQ+QWJjIHBhcmFtKSB7fQorCisgICAgcHJpdmF0ZSBjbGFzcyBBYmMgeworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUlubmVyQ2xhc3NGcm9tVXNhZ2UvYWZ0ZXJTdGF0aWNNb2RpZmllck5lZWRlZC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVJbm5lckNsYXNzRnJvbVVzYWdlL2FmdGVyU3RhdGljTW9kaWZpZXJOZWVkZWQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZWYyODc5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVJbm5lckNsYXNzRnJvbVVzYWdlL2FmdGVyU3RhdGljTW9kaWZpZXJOZWVkZWQuamF2YQpAQCAtMCwwICsxLDkgQEAKKy8vICJDcmVhdGUgSW5uZXIgQ2xhc3MgJ0ZvbyciICJ0cnVlIgorcHVibGljIGNsYXNzIFRlc3QgeworICBzdGF0aWMgY2xhc3MgQSBleHRlbmRzIEZvbyB7CisgICAgCisgIH0KKworICAgIHByaXZhdGUgc3RhdGljIGNsYXNzIEZvbyB7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlSW5uZXJDbGFzc0Zyb21Vc2FnZS9hZnRlclR5cGVQYXJhbWV0ZXJDcmVhdGVkLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUlubmVyQ2xhc3NGcm9tVXNhZ2UvYWZ0ZXJUeXBlUGFyYW1ldGVyQ3JlYXRlZC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdjNDliYjUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUlubmVyQ2xhc3NGcm9tVXNhZ2UvYWZ0ZXJUeXBlUGFyYW1ldGVyQ3JlYXRlZC5qYXZhCkBAIC0wLDAgKzEsNyBAQAorLy8gIkNyZWF0ZSBJbm5lciBDbGFzcyAnRm9vJyIgInRydWUiCitwdWJsaWMgY2xhc3MgVGVzdCB7CisgIDxSPiB2b2lkIGZvbyhGbzxjYXJldD5vPFIsIFN0cmluZz4gZil7fQorCisgICAgcHJpdmF0ZSBjbGFzcyBGb288UiwgVD4geworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUlubmVyQ2xhc3NGcm9tVXNhZ2UvYmVmb3JlMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVJbm5lckNsYXNzRnJvbVVzYWdlL2JlZm9yZTEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kOGViNzExCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVJbm5lckNsYXNzRnJvbVVzYWdlL2JlZm9yZTEuamF2YQpAQCAtMCwwICsxLDYgQEAKKy8vICJDcmVhdGUgSW5uZXIgQ2xhc3MgJ0FiYyciICJ0cnVlIgorcHVibGljIGNsYXNzIFRlc3QgeworICAgIHB1YmxpYyBmb28oaW50IHBwcCkgeworICAgICAgICA8Y2FyZXQ+QWJjLmZvbygpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUlubmVyQ2xhc3NGcm9tVXNhZ2UvYmVmb3JlQ2FzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVJbm5lckNsYXNzRnJvbVVzYWdlL2JlZm9yZUNhc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mM2MzMWYwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVJbm5lckNsYXNzRnJvbVVzYWdlL2JlZm9yZUNhc3QuamF2YQpAQCAtMCwwICsxLDggQEAKKy8vICJDcmVhdGUgSW5uZXIgQ2xhc3MgJ0NsYXNzQiciICJ0cnVlIgorcHVibGljIGNsYXNzIENsYXNzQQoreworICAgIHB1YmxpYyB2b2lkIG1BKE9iamVjdCBhcmcpCisgICAgeworICAgICAgICAoKDxjYXJldD5DbGFzc0IpIGFyZykuZm9vKCk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVJbm5lckNsYXNzRnJvbVVzYWdlL2JlZm9yZUNsYXNzT2JqZWN0QWNjZXNzMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVJbm5lckNsYXNzRnJvbVVzYWdlL2JlZm9yZUNsYXNzT2JqZWN0QWNjZXNzMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkwYzliY2UKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUlubmVyQ2xhc3NGcm9tVXNhZ2UvYmVmb3JlQ2xhc3NPYmplY3RBY2Nlc3MxLmphdmEKQEAgLTAsMCArMSw3IEBACisvLyAiQ3JlYXRlIElubmVyIENsYXNzICdGb28nIiAidHJ1ZSIKK3B1YmxpYyBjbGFzcyBUZXN0IHsKKyAgdm9pZCBmb28oQ2xhc3M8TnVtYmVyPiBuKXt9CisgIHZvaWQgYmFyKCkgeworICAgIGZvbyhGbzxjYXJldD5vLmNsYXNzKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlSW5uZXJDbGFzc0Zyb21Vc2FnZS9iZWZvcmVDbGFzc09iamVjdEFjY2VzczIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlSW5uZXJDbGFzc0Zyb21Vc2FnZS9iZWZvcmVDbGFzc09iamVjdEFjY2VzczIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yODUxNzAwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVJbm5lckNsYXNzRnJvbVVzYWdlL2JlZm9yZUNsYXNzT2JqZWN0QWNjZXNzMi5qYXZhCkBAIC0wLDAgKzEsNyBAQAorLy8gIkNyZWF0ZSBJbm5lciBDbGFzcyAnRm9vJyIgInRydWUiCitwdWJsaWMgY2xhc3MgVGVzdCB7CisgIHZvaWQgZm9vKENsYXNzPD8gZXh0ZW5kcyBOdW1iZXI+IG4pe30KKyAgdm9pZCBiYXIoKSB7CisgICAgZm9vKEZvPGNhcmV0Pm8uY2xhc3MpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVJbm5lckNsYXNzRnJvbVVzYWdlL2JlZm9yZUNsYXNzT2JqZWN0QWNjZXNzMy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVJbm5lckNsYXNzRnJvbVVzYWdlL2JlZm9yZUNsYXNzT2JqZWN0QWNjZXNzMy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUyZTkzZGEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUlubmVyQ2xhc3NGcm9tVXNhZ2UvYmVmb3JlQ2xhc3NPYmplY3RBY2Nlc3MzLmphdmEKQEAgLTAsMCArMSw3IEBACisvLyAiQ3JlYXRlIElubmVyIENsYXNzICdGb28nIiAidHJ1ZSIKK3B1YmxpYyBjbGFzcyBUZXN0IHsKKyAgdm9pZCBmb28oQ2xhc3M8PyBzdXBlciBOdW1iZXI+IG4pe30KKyAgdm9pZCBiYXIoKSB7CisgICAgZm9vKEZvPGNhcmV0Pm8uY2xhc3MpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVJbm5lckNsYXNzRnJvbVVzYWdlL2JlZm9yZUNsYXNzT2JqZWN0QWNjZXNzNC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVJbm5lckNsYXNzRnJvbVVzYWdlL2JlZm9yZUNsYXNzT2JqZWN0QWNjZXNzNC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE3ZTk3MWYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUlubmVyQ2xhc3NGcm9tVXNhZ2UvYmVmb3JlQ2xhc3NPYmplY3RBY2Nlc3M0LmphdmEKQEAgLTAsMCArMSw3IEBACisvLyAiQ3JlYXRlIElubmVyIENsYXNzICdGb28nIiAidHJ1ZSIKK3B1YmxpYyBjbGFzcyBUZXN0IHsKKyAgdm9pZCBmb28oQ2xhc3M8PyBleHRlbmRzIE51bWJlcj4gbil7fQorICB2b2lkIGJhcigpIHsKKyAgICBmb28oRm88Y2FyZXQ+byk7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUlubmVyQ2xhc3NGcm9tVXNhZ2UvYmVmb3JlRmllbGRUeXBlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUlubmVyQ2xhc3NGcm9tVXNhZ2UvYmVmb3JlRmllbGRUeXBlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjNkMzg0YgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlSW5uZXJDbGFzc0Zyb21Vc2FnZS9iZWZvcmVGaWVsZFR5cGUuamF2YQpAQCAtMCwwICsxLDQgQEAKKy8vICJDcmVhdGUgSW5uZXIgQ2xhc3MgJ0FiYyciICJ0cnVlIgorcHVibGljIGNsYXNzIFRlc3QgeworICAgIHByaXZhdGUgPGNhcmV0PkFiYyBmbGQ7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVJbm5lckNsYXNzRnJvbVVzYWdlL2JlZm9yZUlubmVySW5JbnRlcmZhY2UuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlSW5uZXJDbGFzc0Zyb21Vc2FnZS9iZWZvcmVJbm5lckluSW50ZXJmYWNlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjIwOTgyZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlSW5uZXJDbGFzc0Zyb21Vc2FnZS9iZWZvcmVJbm5lckluSW50ZXJmYWNlLmphdmEKQEAgLTAsMCArMSw0IEBACisvLyAiQ3JlYXRlIElubmVyIENsYXNzICdGb28nIiAidHJ1ZSIKK3B1YmxpYyBpbnRlcmZhY2UgVGVzdCB7CisgIHZvaWQgZm9vKEZvPGNhcmV0Pm8gZil7fQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlSW5uZXJDbGFzc0Zyb21Vc2FnZS9iZWZvcmVNZXRob2RUeXBlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUlubmVyQ2xhc3NGcm9tVXNhZ2UvYmVmb3JlTWV0aG9kVHlwZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZiOGZlYzAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUlubmVyQ2xhc3NGcm9tVXNhZ2UvYmVmb3JlTWV0aG9kVHlwZS5qYXZhCkBAIC0wLDAgKzEsNCBAQAorLy8gIkNyZWF0ZSBJbm5lciBDbGFzcyAnQWJjJyIgInRydWUiCitwdWJsaWMgY2xhc3MgVGVzdCB7CisgICAgcHJpdmF0ZSA8Y2FyZXQ+QWJjIGZvbygpIHt9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVJbm5lckNsYXNzRnJvbVVzYWdlL2JlZm9yZU5hMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVJbm5lckNsYXNzRnJvbVVzYWdlL2JlZm9yZU5hMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc2MmIzNjQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUlubmVyQ2xhc3NGcm9tVXNhZ2UvYmVmb3JlTmExLmphdmEKQEAgLTAsMCArMSw2IEBACisvLyAiQ3JlYXRlIElubmVyIENsYXNzICdhYmMnIiAiZmFsc2UiCitwdWJsaWMgY2xhc3MgVGVzdCB7CisgICAgcHVibGljIHZvaWQgZm9vKGludCBwcHApIHsKKyAgICAgICAgPGNhcmV0PmFiYy5mb28oKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVJbm5lckNsYXNzRnJvbVVzYWdlL2JlZm9yZU5hMi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVJbm5lckNsYXNzRnJvbVVzYWdlL2JlZm9yZU5hMi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVhNTU2ZjEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUlubmVyQ2xhc3NGcm9tVXNhZ2UvYmVmb3JlTmEyLmphdmEKQEAgLTAsMCArMSw2IEBACisvLyAiQ3JlYXRlIElubmVyIENsYXNzICdBYmMnIiAiZmFsc2UiCitwdWJsaWMgY2xhc3MgVGVzdCB7CisgICAgcHVibGljIHZvaWQgZm9vKGludCBwcHApIHsKKyAgICAgICAgaW50IGxvY2FsID0gcHBwICsgPGNhcmV0PkFiYzsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVJbm5lckNsYXNzRnJvbVVzYWdlL2JlZm9yZVBhcmFtZXRlclR5cGUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlSW5uZXJDbGFzc0Zyb21Vc2FnZS9iZWZvcmVQYXJhbWV0ZXJUeXBlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTYxNmU4NAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlSW5uZXJDbGFzc0Zyb21Vc2FnZS9iZWZvcmVQYXJhbWV0ZXJUeXBlLmphdmEKQEAgLTAsMCArMSw0IEBACisvLyAiQ3JlYXRlIElubmVyIENsYXNzICdBYmMnIiAidHJ1ZSIKK3B1YmxpYyBjbGFzcyBUZXN0IHsKKyAgICBwcml2YXRlIHZvaWQgZm9vKDxjYXJldD5BYmMgcGFyYW0pIHt9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVJbm5lckNsYXNzRnJvbVVzYWdlL2JlZm9yZVN0YXRpY01vZGlmaWVyTmVlZGVkLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUlubmVyQ2xhc3NGcm9tVXNhZ2UvYmVmb3JlU3RhdGljTW9kaWZpZXJOZWVkZWQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mY2I2OWY2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVJbm5lckNsYXNzRnJvbVVzYWdlL2JlZm9yZVN0YXRpY01vZGlmaWVyTmVlZGVkLmphdmEKQEAgLTAsMCArMSw2IEBACisvLyAiQ3JlYXRlIElubmVyIENsYXNzICdGb28nIiAidHJ1ZSIKK3B1YmxpYyBjbGFzcyBUZXN0IHsKKyAgc3RhdGljIGNsYXNzIEEgZXh0ZW5kcyBGPGNhcmV0Pm9vIHsKKyAgICAKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlSW5uZXJDbGFzc0Zyb21Vc2FnZS9iZWZvcmVUeXBlUGFyYW1ldGVyQ3JlYXRlZC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVJbm5lckNsYXNzRnJvbVVzYWdlL2JlZm9yZVR5cGVQYXJhbWV0ZXJDcmVhdGVkLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODAxZmJhZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlSW5uZXJDbGFzc0Zyb21Vc2FnZS9iZWZvcmVUeXBlUGFyYW1ldGVyQ3JlYXRlZC5qYXZhCkBAIC0wLDAgKzEsNCBAQAorLy8gIkNyZWF0ZSBJbm5lciBDbGFzcyAnRm9vJyIgInRydWUiCitwdWJsaWMgY2xhc3MgVGVzdCB7CisgIDxSPiB2b2lkIGZvbyhGbzxjYXJldD5vPFIsIFN0cmluZz4gZil7fQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlTG9jYWxGcm9tVXNhZ2UvYWZ0ZXIxLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUxvY2FsRnJvbVVzYWdlL2FmdGVyMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUwMzY4NGQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUxvY2FsRnJvbVVzYWdlL2FmdGVyMS5qYXZhCkBAIC0wLDAgKzEsMTEgQEAKKy8vICJDcmVhdGUgTG9jYWwgVmFyaWFibGUgJ3gnIiAidHJ1ZSIKK2NsYXNzIG90aGVyIHsKKyAgcHVibGljIGludCBtZXRob2QxKCkgeyByZXR1cm4gMTt9CisgIHB1YmxpYyBTdHJpbmcgZmllbGQxOworfQorY2xhc3MgQSB7CisgICAgcHVibGljIHZvaWQgZm9vKCkgeworICAgICAgICBvdGhlciB4PGNhcmV0PjsKKyAgICAgICAgeC5tZXRob2QxKCk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlTG9jYWxGcm9tVXNhZ2UvYWZ0ZXIyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUxvY2FsRnJvbVVzYWdlL2FmdGVyMi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdkNTA5YWEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUxvY2FsRnJvbVVzYWdlL2FmdGVyMi5qYXZhCkBAIC0wLDAgKzEsMTEgQEAKKy8vICJDcmVhdGUgTG9jYWwgVmFyaWFibGUgJ3gnIiAidHJ1ZSIKK2NsYXNzIG90aGVyIHsKKyAgcHVibGljIGludCBtZXRob2QxKCkgeyByZXR1cm4gMTt9CisgIHB1YmxpYyBTdHJpbmcgZmllbGQxOworfQorY2xhc3MgQSB7CisgICAgcHVibGljIHZvaWQgZm9vKCkgeworICAgICAgICBvdGhlciB4PGNhcmV0PjsKKyAgICAgICAgaW50IGkgPSB4LmZpZWxkMTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVMb2NhbEZyb21Vc2FnZS9hZnRlcjMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlTG9jYWxGcm9tVXNhZ2UvYWZ0ZXIzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjBiYmNlNQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlTG9jYWxGcm9tVXNhZ2UvYWZ0ZXIzLmphdmEKQEAgLTAsMCArMSw3IEBACisvLyAiQ3JlYXRlIExvY2FsIFZhcmlhYmxlICdhJyIgInRydWUiCitjbGFzcyBDIHsKKyAgdm9pZCBmb28oKSB7CisgICAgICBpbnQgYTxjYXJldD4gPSAxMDsKKyAgICAgIGErKzsKKyAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlTG9jYWxGcm9tVXNhZ2UvYWZ0ZXJJREVBREVWMjQ5NC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVMb2NhbEZyb21Vc2FnZS9hZnRlcklERUFERVYyNDk0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGYzODQ4ZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlTG9jYWxGcm9tVXNhZ2UvYWZ0ZXJJREVBREVWMjQ5NC5qYXZhCkBAIC0wLDAgKzEsOSBAQAorLy8gIkNyZWF0ZSBMb2NhbCBWYXJpYWJsZSAndCciICJ0cnVlIgorY2xhc3MgVGVzdCB7CisgICAgcHJpdmF0ZSB2b2lkIGYoKSB7CisgICAgICAgIGludCB0PGNhcmV0PjsKKyAgICAgICAgaW50IGkgPSB0OworICAgICAgICB0ID0gMDsKKyAgICB9CisKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUxvY2FsRnJvbVVzYWdlL2FmdGVyTWV0aG9kUmVmLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUxvY2FsRnJvbVVzYWdlL2FmdGVyTWV0aG9kUmVmLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjA2M2E5NAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlTG9jYWxGcm9tVXNhZ2UvYWZ0ZXJNZXRob2RSZWYuamF2YQpAQCAtMCwwICsxLDggQEAKKy8vICJDcmVhdGUgTG9jYWwgVmFyaWFibGUgJ3plaXQnIiAidHJ1ZSIKK3B1YmxpYyBjbGFzcyBBIHsKKyAgICB2b2lkIGZvbygpIHsKKyAgICAgICAgT2JqZWN0IHplaXQ8Y2FyZXQ+ID0gQTo6Zm9vOworICAgIH0KKworICAgIHN0YXRpYyB2b2lkIGZvbygpe30KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlTG9jYWxGcm9tVXNhZ2UvYWZ0ZXJQcmVzZXJ2ZUNvbW1lbnQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlTG9jYWxGcm9tVXNhZ2UvYWZ0ZXJQcmVzZXJ2ZUNvbW1lbnQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40Y2U0OTMyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVMb2NhbEZyb21Vc2FnZS9hZnRlclByZXNlcnZlQ29tbWVudC5qYXZhCkBAIC0wLDAgKzEsOCBAQAorLy8gIkNyZWF0ZSBMb2NhbCBWYXJpYWJsZSAnemVpdCciICJ0cnVlIgorcHVibGljIGNsYXNzIEEgeworICAgIHZvaWQgZm9vKCkgeworICAgICAgICBTdHJpbmdbXSBzcGxpdCA9IG51bGw7CisgICAgICAgIFN0cmluZyB6ZWl0ID0gc3BsaXRbMV07IC8vIDIwMTEtMDQtMTMKKyAgICB9CisKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlTG9jYWxGcm9tVXNhZ2UvYWZ0ZXJTY29wZXMxLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUxvY2FsRnJvbVVzYWdlL2FmdGVyU2NvcGVzMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM3YjJmN2Y0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVMb2NhbEZyb21Vc2FnZS9hZnRlclNjb3BlczEuamF2YQpAQCAtMCwwICsxLDEwIEBACisvLyAiQ3JlYXRlIExvY2FsIFZhcmlhYmxlICdsb2NhbCciICJ0cnVlIgorY2xhc3MgQSB7CisgICAgcHVibGljIHZvaWQgZm9vKCkgeworICAgICAgICBTdHJpbmcgbG9jYWw8Y2FyZXQ+OworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4obG9jYWwpOworICAgICAgICB7CisgICAgICAgICAgICBsb2NhbCA9ICIiOworICAgICAgICB9CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlTG9jYWxGcm9tVXNhZ2UvYWZ0ZXJUeXBlQXJnc0Zvcm1hdHRlZC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVMb2NhbEZyb21Vc2FnZS9hZnRlclR5cGVBcmdzRm9ybWF0dGVkLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzllYmQ4NQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlTG9jYWxGcm9tVXNhZ2UvYWZ0ZXJUeXBlQXJnc0Zvcm1hdHRlZC5qYXZhCkBAIC0wLDAgKzEsMTIgQEAKKy8vICJDcmVhdGUgTG9jYWwgVmFyaWFibGUgJ2ZpZWxkJyIgInRydWUiCitpbXBvcnQgamF2YS51dGlsLio7CitjbGFzcyBBIHsKKyAgdm9pZCBmb28oTWFwPFN0cmluZywgU3RyaW5nPiBzKXt9CisKKyAgdm9pZCBiYXIoKSB7CisgICAgICBNYXA8U3RyaW5nLCBTdHJpbmc+IGZpZWxkPGNhcmV0PjsKKyAgICAgIGZvbyhmaWVsZCk7CisgIH0KKworfQorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUxvY2FsRnJvbVVzYWdlL2FmdGVyV2l0aG91dFNlbWljb2xvbi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVMb2NhbEZyb21Vc2FnZS9hZnRlcldpdGhvdXRTZW1pY29sb24uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNmY4YjJhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVMb2NhbEZyb21Vc2FnZS9hZnRlcldpdGhvdXRTZW1pY29sb24uamF2YQpAQCAtMCwwICsxLDggQEAKKy8vICJDcmVhdGUgTG9jYWwgVmFyaWFibGUgJ3plaXQnIiAidHJ1ZSIKK3B1YmxpYyBjbGFzcyBBIHsKKyAgICB2b2lkIGZvbygpIHsKKyAgICAgICAgU3RyaW5nW10gc3BsaXQgPSBudWxsOworICAgICAgICBTdHJpbmcgemVpdDxjYXJldD4gPSBzcGxpdFsxXTsKKyAgICB9CisKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlTG9jYWxGcm9tVXNhZ2UvYmVmb3JlMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVMb2NhbEZyb21Vc2FnZS9iZWZvcmUxLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmI4ZjAzNAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlTG9jYWxGcm9tVXNhZ2UvYmVmb3JlMS5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKKy8vICJDcmVhdGUgTG9jYWwgVmFyaWFibGUgJ3gnIiAidHJ1ZSIKK2NsYXNzIG90aGVyIHsKKyAgcHVibGljIGludCBtZXRob2QxKCkgeyByZXR1cm4gMTt9CisgIHB1YmxpYyBTdHJpbmcgZmllbGQxOworfQorY2xhc3MgQSB7CisgICAgcHVibGljIHZvaWQgZm9vKCkgeworICAgICAgICA8Y2FyZXQ+eC5tZXRob2QxKCk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlTG9jYWxGcm9tVXNhZ2UvYmVmb3JlMi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVMb2NhbEZyb21Vc2FnZS9iZWZvcmUyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDU0MTM4OQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlTG9jYWxGcm9tVXNhZ2UvYmVmb3JlMi5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKKy8vICJDcmVhdGUgTG9jYWwgVmFyaWFibGUgJ3gnIiAidHJ1ZSIKK2NsYXNzIG90aGVyIHsKKyAgcHVibGljIGludCBtZXRob2QxKCkgeyByZXR1cm4gMTt9CisgIHB1YmxpYyBTdHJpbmcgZmllbGQxOworfQorY2xhc3MgQSB7CisgICAgcHVibGljIHZvaWQgZm9vKCkgeworICAgICAgICBpbnQgaSA9IDxjYXJldD54LmZpZWxkMTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVMb2NhbEZyb21Vc2FnZS9iZWZvcmUzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUxvY2FsRnJvbVVzYWdlL2JlZm9yZTMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kOWNjNmE2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVMb2NhbEZyb21Vc2FnZS9iZWZvcmUzLmphdmEKQEAgLTAsMCArMSw3IEBACisvLyAiQ3JlYXRlIExvY2FsIFZhcmlhYmxlICdhJyIgInRydWUiCitjbGFzcyBDIHsKKyAgdm9pZCBmb28oKSB7CisgICAgICA8Y2FyZXQ+YSA9IDEwOworICAgICAgYSsrOworICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVMb2NhbEZyb21Vc2FnZS9iZWZvcmVJREVBREVWMjQ5NC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVMb2NhbEZyb21Vc2FnZS9iZWZvcmVJREVBREVWMjQ5NC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYzMTgxZjMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUxvY2FsRnJvbVVzYWdlL2JlZm9yZUlERUFERVYyNDk0LmphdmEKQEAgLTAsMCArMSw4IEBACisvLyAiQ3JlYXRlIExvY2FsIFZhcmlhYmxlICd0JyIgInRydWUiCitjbGFzcyBUZXN0IHsKKyAgICBwcml2YXRlIHZvaWQgZigpIHsKKyAgICAgICAgaW50IGkgPSA8Y2FyZXQ+dDsKKyAgICAgICAgdCA9IDA7CisgICAgfQorCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVMb2NhbEZyb21Vc2FnZS9iZWZvcmVNZXRob2RSZWYuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlTG9jYWxGcm9tVXNhZ2UvYmVmb3JlTWV0aG9kUmVmLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmNhY2U4OAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlTG9jYWxGcm9tVXNhZ2UvYmVmb3JlTWV0aG9kUmVmLmphdmEKQEAgLTAsMCArMSw4IEBACisvLyAiQ3JlYXRlIExvY2FsIFZhcmlhYmxlICd6ZWl0JyIgInRydWUiCitwdWJsaWMgY2xhc3MgQSB7CisgICAgdm9pZCBmb28oKSB7CisgICAgICAgIHplPGNhcmV0Pml0ID0gQTo6Zm9vOworICAgIH0KKworICAgIHN0YXRpYyB2b2lkIGZvbygpe30KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlTG9jYWxGcm9tVXNhZ2UvYmVmb3JlUHJlc2VydmVDb21tZW50LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUxvY2FsRnJvbVVzYWdlL2JlZm9yZVByZXNlcnZlQ29tbWVudC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE0MjMzYTIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUxvY2FsRnJvbVVzYWdlL2JlZm9yZVByZXNlcnZlQ29tbWVudC5qYXZhCkBAIC0wLDAgKzEsOCBAQAorLy8gIkNyZWF0ZSBMb2NhbCBWYXJpYWJsZSAnemVpdCciICJ0cnVlIgorcHVibGljIGNsYXNzIEEgeworICAgIHZvaWQgZm9vKCkgeworICAgICAgICBTdHJpbmdbXSBzcGxpdCA9IG51bGw7CisgICAgICAgIHplPGNhcmV0Pml0ID0gc3BsaXRbMV07IC8vIDIwMTEtMDQtMTMKKyAgICB9CisKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlTG9jYWxGcm9tVXNhZ2UvYmVmb3JlU2NvcGVzMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVMb2NhbEZyb21Vc2FnZS9iZWZvcmVTY29wZXMxLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjc3NmMwOQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlTG9jYWxGcm9tVXNhZ2UvYmVmb3JlU2NvcGVzMS5qYXZhCkBAIC0wLDAgKzEsOSBAQAorLy8gIkNyZWF0ZSBMb2NhbCBWYXJpYWJsZSAnbG9jYWwnIiAidHJ1ZSIKK2NsYXNzIEEgeworICAgIHB1YmxpYyB2b2lkIGZvbygpIHsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKGxvY2FsKTsKKyAgICAgICAgeworICAgICAgICAgICAgPGNhcmV0PmxvY2FsID0gIiI7CisgICAgICAgIH0KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVMb2NhbEZyb21Vc2FnZS9iZWZvcmVUeXBlQXJnc0Zvcm1hdHRlZC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVMb2NhbEZyb21Vc2FnZS9iZWZvcmVUeXBlQXJnc0Zvcm1hdHRlZC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEwMzU1Y2QKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUxvY2FsRnJvbVVzYWdlL2JlZm9yZVR5cGVBcmdzRm9ybWF0dGVkLmphdmEKQEAgLTAsMCArMSwxMSBAQAorLy8gIkNyZWF0ZSBMb2NhbCBWYXJpYWJsZSAnZmllbGQnIiAidHJ1ZSIKK2ltcG9ydCBqYXZhLnV0aWwuKjsKK2NsYXNzIEEgeworICB2b2lkIGZvbyhNYXA8U3RyaW5nLCBTdHJpbmc+IHMpe30KKworICB2b2lkIGJhcigpIHsKKyAgICBmb28oZmllPGNhcmV0PmxkKTsKKyAgfQorCit9CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlTG9jYWxGcm9tVXNhZ2UvYmVmb3JlV2l0aG91dFNlbWljb2xvbi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVMb2NhbEZyb21Vc2FnZS9iZWZvcmVXaXRob3V0U2VtaWNvbG9uLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjBlMjdkMQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlTG9jYWxGcm9tVXNhZ2UvYmVmb3JlV2l0aG91dFNlbWljb2xvbi5qYXZhCkBAIC0wLDAgKzEsOCBAQAorLy8gIkNyZWF0ZSBMb2NhbCBWYXJpYWJsZSAnemVpdCciICJ0cnVlIgorcHVibGljIGNsYXNzIEEgeworICAgIHZvaWQgZm9vKCkgeworICAgICAgICBTdHJpbmdbXSBzcGxpdCA9IG51bGw7CisgICAgICAgIHplPGNhcmV0Pml0ID0gc3BsaXRbMV0KKyAgICB9CisKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlTG9jYWxWYXJGcm9tSW5zdGFuY2VvZi9hZnRlcjEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlTG9jYWxWYXJGcm9tSW5zdGFuY2VvZi9hZnRlcjEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMjcwZDE3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVMb2NhbFZhckZyb21JbnN0YW5jZW9mL2FmdGVyMS5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKKy8vICJJbnNlcnQgJyhSdW5uYWJsZSl0aGlzJyBkZWNsYXJhdGlvbiIgInRydWUiCitjbGFzcyBDIHsKKyAgdm9pZCBmKCkgeworICAgIGlmICh0aGlzIGluc3RhbmNlb2YgUnVubmFibGUpIHsKKyAgICAgICAgUnVubmFibGUgcnVubmFibGUgPSAoUnVubmFibGUpIHRoaXM7CisgICAgICAgIDxjYXJldD4KKyAgICB9CisgIH0KK30KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVMb2NhbFZhckZyb21JbnN0YW5jZW9mL2FmdGVyMi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVMb2NhbFZhckZyb21JbnN0YW5jZW9mL2FmdGVyMi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM3YTJjMzMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUxvY2FsVmFyRnJvbUluc3RhbmNlb2YvYWZ0ZXIyLmphdmEKQEAgLTAsMCArMSwxMSBAQAorLy8gIkluc2VydCAnKFJ1bm5hYmxlKXRoaXMnIGRlY2xhcmF0aW9uIiAidHJ1ZSIKK2NsYXNzIEMgeworICB2b2lkIGYoKSB7CisgICAgICBpZiAoISh0aGlzIGluc3RhbmNlb2YgUnVubmFibGUpKSB7CisgICAgICAgICAgcmV0dXJuOworICAgICAgfQorICAgICAgUnVubmFibGUgcnVubmFibGUgPSAoUnVubmFibGUpIHRoaXM7CisgICAgICA8Y2FyZXQ+CisgIH0KK30KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVMb2NhbFZhckZyb21JbnN0YW5jZW9mL2FmdGVyMy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVMb2NhbFZhckZyb21JbnN0YW5jZW9mL2FmdGVyMy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg2MzExYTUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUxvY2FsVmFyRnJvbUluc3RhbmNlb2YvYWZ0ZXIzLmphdmEKQEAgLTAsMCArMSwxMSBAQAorLy8gIkluc2VydCAnKFJ1bm5hYmxlKXRoaXMnIGRlY2xhcmF0aW9uIiAidHJ1ZSIKK2NsYXNzIEMgeworICB2b2lkIGYoKSB7CisgICAgICB3aGlsZSAoISh0aGlzIGluc3RhbmNlb2YgUnVubmFibGUpKSB7CisgICAgICAgICAgLy9yZXR1cm47CisgICAgICB9CisgICAgICBSdW5uYWJsZSBydW5uYWJsZSA9IChSdW5uYWJsZSkgdGhpczsKKyAgICAgIDxjYXJldD4KKyAgfQorfQorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUxvY2FsVmFyRnJvbUluc3RhbmNlb2YvYWZ0ZXI0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUxvY2FsVmFyRnJvbUluc3RhbmNlb2YvYWZ0ZXI0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGFjNGRhMQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlTG9jYWxWYXJGcm9tSW5zdGFuY2VvZi9hZnRlcjQuamF2YQpAQCAtMCwwICsxLDkgQEAKKy8vICJJbnNlcnQgJyhSdW5uYWJsZSl0aGlzJyBkZWNsYXJhdGlvbiIgInRydWUiCitjbGFzcyBDIHsKKyAgdm9pZCBmKCkgeworICAgICAgd2hpbGUgKHRoaXMgaW5zdGFuY2VvZiBSdW5uYWJsZSkgeworICAgICAgICAgIFJ1bm5hYmxlIHJ1bm5hYmxlID0gKFJ1bm5hYmxlKSB0aGlzOworICAgICAgICAgIDxjYXJldD4KKyAgICAgIH0KKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVMb2NhbFZhckZyb21JbnN0YW5jZW9mL2FmdGVyNS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVMb2NhbFZhckZyb21JbnN0YW5jZW9mL2FmdGVyNS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRhODA2OWQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUxvY2FsVmFyRnJvbUluc3RhbmNlb2YvYWZ0ZXI1LmphdmEKQEAgLTAsMCArMSw5IEBACisvLyAiSW5zZXJ0ICcoUnVubmFibGUpdGhpcycgZGVjbGFyYXRpb24iICJ0cnVlIgorY2xhc3MgQyB7CisgIHZvaWQgZigpIHsKKyAgICAgIGlmICh0aGlzIGluc3RhbmNlb2YgUnVubmFibGUpIHsKKyAgICAgICAgICBSdW5uYWJsZSBydW5uYWJsZSA9IChSdW5uYWJsZSkgdGhpczsKKyAgICAgICAgICA8Y2FyZXQ+CisgICAgICB9CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlTG9jYWxWYXJGcm9tSW5zdGFuY2VvZi9hZnRlcjcuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlTG9jYWxWYXJGcm9tSW5zdGFuY2VvZi9hZnRlcjcuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZmYzNzgzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVMb2NhbFZhckZyb21JbnN0YW5jZW9mL2FmdGVyNy5qYXZhCkBAIC0wLDAgKzEsMTEgQEAKKy8vICJJbnNlcnQgJyhTdHJpbmcpcycgZGVjbGFyYXRpb24iICJ0cnVlIgorY2xhc3MgQyB7CisgICAgdm9pZCBmKCkgeworICAgICAgICBTdHJpbmcgcyA9ICIiOworICAgICAgICBpZiAocyBpbnN0YW5jZW9mIFN0cmluZykgeworICAgICAgICAgICAgU3RyaW5nIHMxID0gKFN0cmluZykgczsKKyAgICAgICAgICAgIDxjYXJldD4KKworICAgICAgICB9CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVMb2NhbFZhckZyb21JbnN0YW5jZW9mL2FmdGVyOC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVMb2NhbFZhckZyb21JbnN0YW5jZW9mL2FmdGVyOC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNjYjM2ZTcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUxvY2FsVmFyRnJvbUluc3RhbmNlb2YvYWZ0ZXI4LmphdmEKQEAgLTAsMCArMSwxMCBAQAorLy8gIkluc2VydCAnKFN0cmluZylvJyBkZWNsYXJhdGlvbiIgInRydWUiCitjbGFzcyBDIHsKKyAgICB2b2lkIGYoT2JqZWN0IG8pIHsKKyAgICAgICAgaWYgKG8gaW5zdGFuY2VvZiBTdHJpbmcpIHsKKyAgICAgICAgICAgIFN0cmluZyBzID0gKFN0cmluZykgbzsKKyAgICAgICAgICAgIDxjYXJldD4KKyAgICAgICAgICAgIG8gPSAiIjsKKyAgICAgICAgfQorICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlTG9jYWxWYXJGcm9tSW5zdGFuY2VvZi9hZnRlckludGVyc2VjdGlvbi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVMb2NhbFZhckZyb21JbnN0YW5jZW9mL2FmdGVySW50ZXJzZWN0aW9uLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDc4OWIwOAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlTG9jYWxWYXJGcm9tSW5zdGFuY2VvZi9hZnRlckludGVyc2VjdGlvbi5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKKy8vICJJbnNlcnQgJyhTdHJpbmcpbycgZGVjbGFyYXRpb24iICJ0cnVlIgorY2xhc3MgQyB7CisgICAgdm9pZCBmKE9iamVjdCBvLCBPYmplY3QgZikgeworICAgICAgICBpZiAobyBpbnN0YW5jZW9mIFN0cmluZyAmJiBmID09IG51bGwpIHsKKyAgICAgICAgICAgIFN0cmluZyBzID0gKFN0cmluZykgbzsKKyAgICAgICAgICAgIDxjYXJldD4KKworICAgICAgICB9CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlTG9jYWxWYXJGcm9tSW5zdGFuY2VvZi9hZnRlck9uUmVmLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUxvY2FsVmFyRnJvbUluc3RhbmNlb2YvYWZ0ZXJPblJlZi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM4MDc2NGQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUxvY2FsVmFyRnJvbUluc3RhbmNlb2YvYWZ0ZXJPblJlZi5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKKy8vICJJbnNlcnQgJyhSdW5uYWJsZSlvJyBkZWNsYXJhdGlvbiIgInRydWUiCitjbGFzcyBDIHsKKyAgdm9pZCBmKE9iamVjdCBvKSB7CisgICAgaWYgKG8gaW5zdGFuY2VvZiBSdW5uYWJsZSkgeworICAgICAgICBSdW5uYWJsZSBydW5uYWJsZSA9IChSdW5uYWJsZSkgbzsKKyAgICAgICAgPGNhcmV0PgorICAgIH0KKyAgfQorfQorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUxvY2FsVmFyRnJvbUluc3RhbmNlb2YvYmVmb3JlMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVMb2NhbFZhckZyb21JbnN0YW5jZW9mL2JlZm9yZTEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYjg4OWIxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVMb2NhbFZhckZyb21JbnN0YW5jZW9mL2JlZm9yZTEuamF2YQpAQCAtMCwwICsxLDcgQEAKKy8vICJJbnNlcnQgJyhSdW5uYWJsZSl0aGlzJyBkZWNsYXJhdGlvbiIgInRydWUiCitjbGFzcyBDIHsKKyAgdm9pZCBmKCkgeworICAgIGlmICh0aGlzIDxjYXJldD5pbnN0YW5jZW9mIFJ1bm5hYmxlKQorICB9Cit9CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlTG9jYWxWYXJGcm9tSW5zdGFuY2VvZi9iZWZvcmUyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUxvY2FsVmFyRnJvbUluc3RhbmNlb2YvYmVmb3JlMi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY4ZWZiMmI4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVMb2NhbFZhckZyb21JbnN0YW5jZW9mL2JlZm9yZTIuamF2YQpAQCAtMCwwICsxLDkgQEAKKy8vICJJbnNlcnQgJyhSdW5uYWJsZSl0aGlzJyBkZWNsYXJhdGlvbiIgInRydWUiCitjbGFzcyBDIHsKKyAgdm9pZCBmKCkgeworICAgICAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIDxjYXJldD5SdW5uYWJsZSkpIHsKKyAgICAgICAgICByZXR1cm47CisgICAgICB9CisgIH0KK30KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVMb2NhbFZhckZyb21JbnN0YW5jZW9mL2JlZm9yZTMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlTG9jYWxWYXJGcm9tSW5zdGFuY2VvZi9iZWZvcmUzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDdkODViOQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlTG9jYWxWYXJGcm9tSW5zdGFuY2VvZi9iZWZvcmUzLmphdmEKQEAgLTAsMCArMSw5IEBACisvLyAiSW5zZXJ0ICcoUnVubmFibGUpdGhpcycgZGVjbGFyYXRpb24iICJ0cnVlIgorY2xhc3MgQyB7CisgIHZvaWQgZigpIHsKKyAgICAgIHdoaWxlICghKDxjYXJldD50aGlzIGluc3RhbmNlb2YgUnVubmFibGUpKSB7CisgICAgICAgICAgLy9yZXR1cm47CisgICAgICB9CisgIH0KK30KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVMb2NhbFZhckZyb21JbnN0YW5jZW9mL2JlZm9yZTQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlTG9jYWxWYXJGcm9tSW5zdGFuY2VvZi9iZWZvcmU0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmM2NzI5OQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlTG9jYWxWYXJGcm9tSW5zdGFuY2VvZi9iZWZvcmU0LmphdmEKQEAgLTAsMCArMSw2IEBACisvLyAiSW5zZXJ0ICcoUnVubmFibGUpdGhpcycgZGVjbGFyYXRpb24iICJ0cnVlIgorY2xhc3MgQyB7CisgIHZvaWQgZigpIHsKKyAgICAgIHdoaWxlICg8Y2FyZXQ+dGhpcyBpbnN0YW5jZW9mIFJ1bm5hYmxlCisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlTG9jYWxWYXJGcm9tSW5zdGFuY2VvZi9iZWZvcmU1LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUxvY2FsVmFyRnJvbUluc3RhbmNlb2YvYmVmb3JlNS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJmM2EwZmEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUxvY2FsVmFyRnJvbUluc3RhbmNlb2YvYmVmb3JlNS5qYXZhCkBAIC0wLDAgKzEsNyBAQAorLy8gIkluc2VydCAnKFJ1bm5hYmxlKXRoaXMnIGRlY2xhcmF0aW9uIiAidHJ1ZSIKK2NsYXNzIEMgeworICB2b2lkIGYoKSB7CisgICAgICBpZiAodGhpcyBpbnN0YW5jZW9mIFJ1bm5hYmxlKSB7ICAgPGNhcmV0PgorICAgICAgfQorICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUxvY2FsVmFyRnJvbUluc3RhbmNlb2YvYmVmb3JlNi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVMb2NhbFZhckZyb21JbnN0YW5jZW9mL2JlZm9yZTYuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZjYyY2U0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVMb2NhbFZhckZyb21JbnN0YW5jZW9mL2JlZm9yZTYuamF2YQpAQCAtMCwwICsxLDggQEAKKy8vICJJbnNlcnQgJyhSdW5uYWJsZSl0aGlzJyBkZWNsYXJhdGlvbiIgImZhbHNlIgorY2xhc3MgQyB7CisgIHZvaWQgZigpIHsKKyAgICAgIGlmICh0aGlzIGluc3RhbmNlb2YgUnVubmFibGU8Y2FyZXQ+KSB7CisgICAgICAgIE9iamVjdCBvID0gKFJ1bm5hYmxlKXRoaXM7CisgICAgICB9CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlTG9jYWxWYXJGcm9tSW5zdGFuY2VvZi9iZWZvcmU3LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUxvY2FsVmFyRnJvbUluc3RhbmNlb2YvYmVmb3JlNy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRkZDJkODAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUxvY2FsVmFyRnJvbUluc3RhbmNlb2YvYmVmb3JlNy5qYXZhCkBAIC0wLDAgKzEsOSBAQAorLy8gIkluc2VydCAnKFN0cmluZylzJyBkZWNsYXJhdGlvbiIgInRydWUiCitjbGFzcyBDIHsKKyAgICB2b2lkIGYoKSB7CisgICAgICAgIFN0cmluZyBzID0gIiI7CisgICAgICAgIGlmIChzIGluc3RhbmNlb2YgU3RyaW5nKSB7CisgICAgICAgICAgICA8Y2FyZXQ+CisgICAgICAgIH0KKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUxvY2FsVmFyRnJvbUluc3RhbmNlb2YvYmVmb3JlOC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVMb2NhbFZhckZyb21JbnN0YW5jZW9mL2JlZm9yZTguamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MDk0ODdiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVMb2NhbFZhckZyb21JbnN0YW5jZW9mL2JlZm9yZTguamF2YQpAQCAtMCwwICsxLDcgQEAKKy8vICJJbnNlcnQgJyhTdHJpbmcpbycgZGVjbGFyYXRpb24iICJ0cnVlIgorY2xhc3MgQyB7CisgICAgdm9pZCBmKE9iamVjdCBvKSB7CisgICAgICAgIGlmIChvIGluc3RhbmNlb2YgU3RyaW5nPGNhcmV0PikKKyAgICAgICAgbyA9ICIiOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlTG9jYWxWYXJGcm9tSW5zdGFuY2VvZi9iZWZvcmVDb21wbGV4RXhwcmVzc2lvbi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVMb2NhbFZhckZyb21JbnN0YW5jZW9mL2JlZm9yZUNvbXBsZXhFeHByZXNzaW9uLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODBlZDFhZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlTG9jYWxWYXJGcm9tSW5zdGFuY2VvZi9iZWZvcmVDb21wbGV4RXhwcmVzc2lvbi5qYXZhCkBAIC0wLDAgKzEsOCBAQAorLy8gIkluc2VydCAnKFN0cmluZykhbycgZGVjbGFyYXRpb24iICJmYWxzZSIKK2NsYXNzIEMgeworICAgIHZvaWQgZihPYmplY3QgbywgT2JqZWN0IGYpIHsKKyAgICAgICAgaWYgKCFvIGluc3RhbmNlb2YgU3RyaW5nKSB7CisgICAgICAgICAgPGNhcmV0PgorICAgICAgICB9CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlTG9jYWxWYXJGcm9tSW5zdGFuY2VvZi9iZWZvcmVJbnRlcnNlY3Rpb24uamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlTG9jYWxWYXJGcm9tSW5zdGFuY2VvZi9iZWZvcmVJbnRlcnNlY3Rpb24uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NWVjOGQ2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVMb2NhbFZhckZyb21JbnN0YW5jZW9mL2JlZm9yZUludGVyc2VjdGlvbi5qYXZhCkBAIC0wLDAgKzEsOCBAQAorLy8gIkluc2VydCAnKFN0cmluZylvJyBkZWNsYXJhdGlvbiIgInRydWUiCitjbGFzcyBDIHsKKyAgICB2b2lkIGYoT2JqZWN0IG8sIE9iamVjdCBmKSB7CisgICAgICAgIGlmIChvIGluc3RhbmNlb2YgU3RyaW5nICYmIGYgPT0gbnVsbCkgeworICAgICAgICAgIDxjYXJldD4KKyAgICAgICAgfQorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUxvY2FsVmFyRnJvbUluc3RhbmNlb2YvYmVmb3JlSW50ZXJzZWN0aW9uQW5kVW5pb24uamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlTG9jYWxWYXJGcm9tSW5zdGFuY2VvZi9iZWZvcmVJbnRlcnNlY3Rpb25BbmRVbmlvbi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZmYjdkMTAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUxvY2FsVmFyRnJvbUluc3RhbmNlb2YvYmVmb3JlSW50ZXJzZWN0aW9uQW5kVW5pb24uamF2YQpAQCAtMCwwICsxLDggQEAKKy8vICJJbnNlcnQgJyhTdHJpbmcpbycgZGVjbGFyYXRpb24iICJmYWxzZSIKK2NsYXNzIEMgeworICAgIHZvaWQgZihPYmplY3QgbywgT2JqZWN0IGYpIHsKKyAgICAgICAgaWYgKG8gaW5zdGFuY2VvZiBTdHJpbmcgfHwgZiA9PSBudWxsKSB7CisgICAgICAgICAgPGNhcmV0PgorICAgICAgICB9CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlTG9jYWxWYXJGcm9tSW5zdGFuY2VvZi9iZWZvcmVJbnRlcnNlY3Rpb25NdWx0aXBsZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVMb2NhbFZhckZyb21JbnN0YW5jZW9mL2JlZm9yZUludGVyc2VjdGlvbk11bHRpcGxlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2I2NTdiNgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlTG9jYWxWYXJGcm9tSW5zdGFuY2VvZi9iZWZvcmVJbnRlcnNlY3Rpb25NdWx0aXBsZS5qYXZhCkBAIC0wLDAgKzEsOCBAQAorLy8gIkluc2VydCAnKFN0cmluZylvJyBkZWNsYXJhdGlvbiIgImZhbHNlIgorY2xhc3MgQyB7CisgICAgdm9pZCBmKE9iamVjdCBvLCBPYmplY3QgZikgeworICAgICAgICBpZiAobyBpbnN0YW5jZW9mIFN0cmluZyAmJiBmIGluc3RhbmNlb2YgU3RyaW5nKSB7CisgICAgICAgICAgPGNhcmV0PgorICAgICAgICB9CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlTG9jYWxWYXJGcm9tSW5zdGFuY2VvZi9iZWZvcmVOZWdhdGlvbk9uUmVmLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUxvY2FsVmFyRnJvbUluc3RhbmNlb2YvYmVmb3JlTmVnYXRpb25PblJlZi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFkZDlkNTUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUxvY2FsVmFyRnJvbUluc3RhbmNlb2YvYmVmb3JlTmVnYXRpb25PblJlZi5qYXZhCkBAIC0wLDAgKzEsOSBAQAorLy8gIkluc2VydCAnKFJ1bm5hYmxlKW8nIGRlY2xhcmF0aW9uIiAiZmFsc2UiCitjbGFzcyBDIHsKKyAgdm9pZCBmKE9iamVjdCBvKSB7CisgICAgaWYgKCEobyBpbnN0YW5jZW9mIFJ1bm5hYmxlKSkgeworICAgICAgbzxjYXJldD4KKyAgICB9CisgIH0KK30KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVMb2NhbFZhckZyb21JbnN0YW5jZW9mL2JlZm9yZU9uUmVmLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZUxvY2FsVmFyRnJvbUluc3RhbmNlb2YvYmVmb3JlT25SZWYuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MDVjYzg2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVMb2NhbFZhckZyb21JbnN0YW5jZW9mL2JlZm9yZU9uUmVmLmphdmEKQEAgLTAsMCArMSw5IEBACisvLyAiSW5zZXJ0ICcoUnVubmFibGUpbycgZGVjbGFyYXRpb24iICJ0cnVlIgorY2xhc3MgQyB7CisgIHZvaWQgZihPYmplY3QgbykgeworICAgIGlmIChvIGluc3RhbmNlb2YgUnVubmFibGUpIHsKKyAgICAgIG88Y2FyZXQ+CisgICAgfQorICB9Cit9CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlTWV0aG9kRnJvbVVzYWdlL2FmdGVyMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVNZXRob2RGcm9tVXNhZ2UvYWZ0ZXIxLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGE5NGVkYQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlTWV0aG9kRnJvbVVzYWdlL2FmdGVyMS5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKKy8vICJDcmVhdGUgTWV0aG9kICd0ZXN0JyIgInRydWUiCitwdWJsaWMgY2xhc3MgVGVzdCB7CisgICAgcHVibGljIFRlc3QoKSB7CisgICAgICAgIHRlc3QoKTsKKyAgICB9CisKKyAgICBwcml2YXRlIHZvaWQgdGVzdCgpIHsKKyAgICAgICAgPGNhcmV0PjxzZWxlY3Rpb24+Ly9UbyBjaGFuZ2UgYm9keSBvZiBjcmVhdGVkIG1ldGhvZHMgdXNlIEZpbGUgfCBTZXR0aW5ncyB8IEZpbGUgVGVtcGxhdGVzLjwvc2VsZWN0aW9uPgorICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlTWV0aG9kRnJvbVVzYWdlL2FmdGVyMy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVNZXRob2RGcm9tVXNhZ2UvYWZ0ZXIzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGE5NGVkYQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlTWV0aG9kRnJvbVVzYWdlL2FmdGVyMy5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKKy8vICJDcmVhdGUgTWV0aG9kICd0ZXN0JyIgInRydWUiCitwdWJsaWMgY2xhc3MgVGVzdCB7CisgICAgcHVibGljIFRlc3QoKSB7CisgICAgICAgIHRlc3QoKTsKKyAgICB9CisKKyAgICBwcml2YXRlIHZvaWQgdGVzdCgpIHsKKyAgICAgICAgPGNhcmV0PjxzZWxlY3Rpb24+Ly9UbyBjaGFuZ2UgYm9keSBvZiBjcmVhdGVkIG1ldGhvZHMgdXNlIEZpbGUgfCBTZXR0aW5ncyB8IEZpbGUgVGVtcGxhdGVzLjwvc2VsZWN0aW9uPgorICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlTWV0aG9kRnJvbVVzYWdlL2FmdGVyNC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVNZXRob2RGcm9tVXNhZ2UvYWZ0ZXI0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGE5NGVkYQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlTWV0aG9kRnJvbVVzYWdlL2FmdGVyNC5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKKy8vICJDcmVhdGUgTWV0aG9kICd0ZXN0JyIgInRydWUiCitwdWJsaWMgY2xhc3MgVGVzdCB7CisgICAgcHVibGljIFRlc3QoKSB7CisgICAgICAgIHRlc3QoKTsKKyAgICB9CisKKyAgICBwcml2YXRlIHZvaWQgdGVzdCgpIHsKKyAgICAgICAgPGNhcmV0PjxzZWxlY3Rpb24+Ly9UbyBjaGFuZ2UgYm9keSBvZiBjcmVhdGVkIG1ldGhvZHMgdXNlIEZpbGUgfCBTZXR0aW5ncyB8IEZpbGUgVGVtcGxhdGVzLjwvc2VsZWN0aW9uPgorICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlTWV0aG9kRnJvbVVzYWdlL2FmdGVyNS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVNZXRob2RGcm9tVXNhZ2UvYWZ0ZXI1LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTY2MDcxNQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlTWV0aG9kRnJvbVVzYWdlL2FmdGVyNS5qYXZhCkBAIC0wLDAgKzEsMTEgQEAKKy8vICJDcmVhdGUgTWV0aG9kICd0ZXN0JyIgInRydWUiCitwdWJsaWMgY2xhc3MgVGVzdCB7CisgICAgc3RhdGljIHZvaWQgdGVzdChpbnQgaSkge30KKyAgICBwdWJsaWMgVGVzdCgpIHsKKyAgICAgICAgdGVzdCgpOworICAgIH0KKworICAgIHByaXZhdGUgdm9pZCB0ZXN0KCkgeworICAgICAgICA8Y2FyZXQ+PHNlbGVjdGlvbj4vL1RvIGNoYW5nZSBib2R5IG9mIGNyZWF0ZWQgbWV0aG9kcyB1c2UgRmlsZSB8IFNldHRpbmdzIHwgRmlsZSBUZW1wbGF0ZXMuPC9zZWxlY3Rpb24+CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVNZXRob2RGcm9tVXNhZ2UvYWZ0ZXJBcnJheVR5cGVQYXJhbS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVNZXRob2RGcm9tVXNhZ2UvYWZ0ZXJBcnJheVR5cGVQYXJhbS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZhNDhmMjMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZU1ldGhvZEZyb21Vc2FnZS9hZnRlckFycmF5VHlwZVBhcmFtLmphdmEKQEAgLTAsMCArMSwxMSBAQAorLy8gIkNyZWF0ZSBNZXRob2QgJ3Rlc3QnIiAidHJ1ZSIKK3B1YmxpYyBjbGFzcyBUZXN0IHsKKyAgICBwdWJsaWMgVGVzdCgpIHsKKyAgICAgICAgYnl0ZVtdIGJ5dGVzID0gbmV3IGJ5dGVbMF07CisgICAgICAgIHRlc3QoYnl0ZXMpOworICAgIH0KKworICAgIHByaXZhdGUgdm9pZCB0ZXN0KGJ5dGVbXSBieXRlcykgeworICAgICAgICA8c2VsZWN0aW9uPi8vVG8gY2hhbmdlIGJvZHkgb2YgY3JlYXRlZCBtZXRob2RzIHVzZSBGaWxlIHwgU2V0dGluZ3MgfCBGaWxlIFRlbXBsYXRlcy48L3NlbGVjdGlvbj4KKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZU1ldGhvZEZyb21Vc2FnZS9hZnRlckFzc2VydERlc2NyaXB0aW9uLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZU1ldGhvZEZyb21Vc2FnZS9hZnRlckFzc2VydERlc2NyaXB0aW9uLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzY2MzBkMwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlTWV0aG9kRnJvbVVzYWdlL2FmdGVyQXNzZXJ0RGVzY3JpcHRpb24uamF2YQpAQCAtMCwwICsxLDEwIEBACisvLyAiQ3JlYXRlIE1ldGhvZCAnZiciICJ0cnVlIgorY2xhc3MgQSB7CisgICAgeworICAgICAgICAgYXNzZXJ0IGZhbHNlOiBmKCk7CisgICAgfQorCisgICAgcHJpdmF0ZSBTdHJpbmcgZigpIHsKKyAgICAgICAgPHNlbGVjdGlvbj5yZXR1cm4gbnVsbDsgIC8vVG8gY2hhbmdlIGJvZHkgb2YgY3JlYXRlZCBtZXRob2RzIHVzZSBGaWxlIHwgU2V0dGluZ3MgfCBGaWxlIFRlbXBsYXRlcy48L3NlbGVjdGlvbj4KKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZU1ldGhvZEZyb21Vc2FnZS9hZnRlckNsYXNzVHlwZVBhcmFtTm90QXZhaWxhYmxlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZU1ldGhvZEZyb21Vc2FnZS9hZnRlckNsYXNzVHlwZVBhcmFtTm90QXZhaWxhYmxlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTQxMjllNAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlTWV0aG9kRnJvbVVzYWdlL2FmdGVyQ2xhc3NUeXBlUGFyYW1Ob3RBdmFpbGFibGUuamF2YQpAQCAtMCwwICsxLDI2IEBACisvLyAiQ3JlYXRlIE1ldGhvZCAnbWFrZU9wJyIgInRydWUiCitjbGFzcyBCYXNlPFQ+IHsKKyAgICBCYXNlKEZhY3Rvcnk8VD4gZmFjdG9yeSwgT3BlcmF0b3I8VD4gb3BlcmF0b3IpIHsKKyAgICB9Cit9CisKK2ludGVyZmFjZSBNZXRhT3BlcmF0b3I8VD4geworfQorCitpbnRlcmZhY2UgT3BlcmF0b3I8VD4geworfQorCitpbnRlcmZhY2UgRmFjdG9yeTxUPiB7Cit9CisKK2NsYXNzIFN1cDxUPiBleHRlbmRzIEJhc2U8VD4geworICAgIFN1cChNZXRhT3BlcmF0b3I8VD4gbW9wKSB7CisgICAgICAgIHN1cGVyKG51bGwsIG1ha2VPcChtb3ApKTsKKyAgICB9CisKKyAgICBwcml2YXRlIHN0YXRpYyA8VD4gT3BlcmF0b3I8VD4gbWFrZU9wKE1ldGFPcGVyYXRvcjxUPiBtb3ApIHsKKyAgICAgICAgPHNlbGVjdGlvbj5yZXR1cm4gbnVsbDsgIC8vVG8gY2hhbmdlIGJvZHkgb2YgY3JlYXRlZCBtZXRob2RzIHVzZSBGaWxlIHwgU2V0dGluZ3MgfCBGaWxlIFRlbXBsYXRlcy48L3NlbGVjdGlvbj4KKyAgICB9CisKKworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlTWV0aG9kRnJvbVVzYWdlL2FmdGVyRXhpc3RpbmdGaWVsZC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVNZXRob2RGcm9tVXNhZ2UvYWZ0ZXJFeGlzdGluZ0ZpZWxkLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjY3YTI4OAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlTWV0aG9kRnJvbVVzYWdlL2FmdGVyRXhpc3RpbmdGaWVsZC5qYXZhCkBAIC0wLDAgKzEsMTIgQEAKKy8vICJDcmVhdGUgR2V0dGVyIiAidHJ1ZSIKK3B1YmxpYyBjbGFzcyBUZXN0IHsKKyAgICBJbnRlZ2VyIGZpZWxkOworCisgICAgcHVibGljIGZvbygpIHsKKyAgICAgICAgZ2V0RmllbGQoKTsKKyAgICB9CisKKyAgICBwdWJsaWMgSW50ZWdlciBnZXRGaWVsZCgpIHsKKyAgICAgICAgcmV0dXJuIGZpZWxkOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlTWV0aG9kRnJvbVVzYWdlL2FmdGVyR2VuZXJpY3MxLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZU1ldGhvZEZyb21Vc2FnZS9hZnRlckdlbmVyaWNzMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVkM2Y1ZWQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZU1ldGhvZEZyb21Vc2FnZS9hZnRlckdlbmVyaWNzMS5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKKy8vICJDcmVhdGUgTWV0aG9kICdiYXInIiAidHJ1ZSIKK3B1YmxpYyBjbGFzcyBUZXN0IHsKKyAgICA8VCBleHRlbmRzIFN0cmluZz4gdm9pZCBmb28gKFQgdDEsIFQgdDIpIHsKKyAgICAgICAgYmFyICh0MSwgdDIpOworICAgIH0KKworICAgIHByaXZhdGUgPFQgZXh0ZW5kcyBTdHJpbmc+IHZvaWQgYmFyKFQgdDEsIFQgdDIpIHsKKyAgICAgICAgPGNhcmV0PjxzZWxlY3Rpb24+Ly9UbyBjaGFuZ2UgYm9keSBvZiBjcmVhdGVkIG1ldGhvZHMgdXNlIEZpbGUgfCBTZXR0aW5ncyB8IEZpbGUgVGVtcGxhdGVzLjwvc2VsZWN0aW9uPgorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZU1ldGhvZEZyb21Vc2FnZS9hZnRlcklERUEyMzI3LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZU1ldGhvZEZyb21Vc2FnZS9hZnRlcklERUEyMzI3LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDUwMDk0MQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlTWV0aG9kRnJvbVVzYWdlL2FmdGVySURFQTIzMjcuamF2YQpAQCAtMCwwICsxLDEwIEBACisvLyAiQ3JlYXRlIE1ldGhvZCAndGVzdCciICJ0cnVlIgorcHVibGljIGNsYXNzIFRlc3QgeworICAgIHB1YmxpYyBUZXN0KCkgeworICAgICAgICBhc3NlcnQgdGVzdCgpOworICAgIH0KKworICAgIHByaXZhdGUgYm9vbGVhbiB0ZXN0KCkgeworICAgICAgICA8Y2FyZXQ+PHNlbGVjdGlvbj5yZXR1cm4gZmFsc2U7ICAvL1RvIGNoYW5nZSBib2R5IG9mIGNyZWF0ZWQgbWV0aG9kcyB1c2UgRmlsZSB8IFNldHRpbmdzIHwgRmlsZSBUZW1wbGF0ZXMuPC9zZWxlY3Rpb24+CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVNZXRob2RGcm9tVXNhZ2UvYWZ0ZXJJREVBREVWNjA2OC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVNZXRob2RGcm9tVXNhZ2UvYWZ0ZXJJREVBREVWNjA2OC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQxMmY0ZjcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZU1ldGhvZEZyb21Vc2FnZS9hZnRlcklERUFERVY2MDY4LmphdmEKQEAgLTAsMCArMSwxMyBAQAorLy8gIkNyZWF0ZSBNZXRob2QgJ3RvTXVsdGknIiAidHJ1ZSIKK2ltcG9ydCBqYXZhLnV0aWwuTWFwOworCitjbGFzcyBCcm9rZW5DcmVhdGVNZXRob2QgeworCisgICAgcHVibGljIHZvaWQgZm9vKE1hcDxTdHJpbmcsIFN0cmluZz4gYmFyKSB7CisgICAgICAgIE1hcDxTdHJpbmcsIFN0cmluZ1tdPiBtdWx0aUJhciA9IHRvTXVsdGkoYmFyKTsKKyAgICB9CisKKyAgICBwcml2YXRlIE1hcDxTdHJpbmcsIFN0cmluZ1tdPiB0b011bHRpKE1hcDxTdHJpbmcsIFN0cmluZz4gYmFyKSB7CisgICAgICAgIDxzZWxlY3Rpb24+cmV0dXJuIG51bGw7ICAvL1RvIGNoYW5nZSBib2R5IG9mIGNyZWF0ZWQgbWV0aG9kcyB1c2UgRmlsZSB8IFNldHRpbmdzIHwgRmlsZSBUZW1wbGF0ZXMuPC9zZWxlY3Rpb24+CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVNZXRob2RGcm9tVXNhZ2UvYWZ0ZXJJbnRlcmZhY2UuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlTWV0aG9kRnJvbVVzYWdlL2FmdGVySW50ZXJmYWNlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjg1YjE4OQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlTWV0aG9kRnJvbVVzYWdlL2FmdGVySW50ZXJmYWNlLmphdmEKQEAgLTAsMCArMSwxMiBAQAorLy8gIkNyZWF0ZSBNZXRob2QgJ3Rlc3QnIiAidHJ1ZSIKK3B1YmxpYyBpbnRlcmZhY2UgVGVzdCB7CisKKyAgICB2b2lkIHRlc3QoKTsKK30KKworY2xhc3MgRm9vIHsKKyAgdm9pZCBiYXIoKSB7CisgICAgVGVzdCB0ZXN0ID0gbnVsbDsKKyAgICB0ZXN0LnRlc3QoKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlTWV0aG9kRnJvbVVzYWdlL2FmdGVyTGFtYmRhQXJndW1lbnQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlTWV0aG9kRnJvbVVzYWdlL2FmdGVyTGFtYmRhQXJndW1lbnQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45Njc0NGY0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVNZXRob2RGcm9tVXNhZ2UvYWZ0ZXJMYW1iZGFBcmd1bWVudC5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKKy8vICJDcmVhdGUgTWV0aG9kICdmJyIgInRydWUiCitjbGFzcyBBIHsKKyAgICB7CisgICAgICAgICBmKCgpIC0+IHt9KTsKKyAgICB9CisKKyAgICBwcml2YXRlIHZvaWQgZihPYmplY3QgcDApIHsKKyAgICAgICAgPGNhcmV0PjxzZWxlY3Rpb24+Ly9UbyBjaGFuZ2UgYm9keSBvZiBjcmVhdGVkIG1ldGhvZHMgdXNlIEZpbGUgfCBTZXR0aW5ncyB8IEZpbGUgVGVtcGxhdGVzLjwvc2VsZWN0aW9uPgorICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlTWV0aG9kRnJvbVVzYWdlL2FmdGVyTWV0aG9kUmVmZXJlbmNlQXJndW1lbnQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlTWV0aG9kRnJvbVVzYWdlL2FmdGVyTWV0aG9kUmVmZXJlbmNlQXJndW1lbnQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNTI1N2MwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVNZXRob2RGcm9tVXNhZ2UvYWZ0ZXJNZXRob2RSZWZlcmVuY2VBcmd1bWVudC5qYXZhCkBAIC0wLDAgKzEsMTQgQEAKKy8vICJDcmVhdGUgTWV0aG9kICdmJyIgInRydWUiCitjbGFzcyBBIHsKKyAgICB7CisgICAgICAgICBmKEE6OmZvbyk7CisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIGYoT2JqZWN0IGZvbykgeworICAgICAgICA8c2VsZWN0aW9uPi8vVG8gY2hhbmdlIGJvZHkgb2YgY3JlYXRlZCBtZXRob2RzIHVzZSBGaWxlIHwgU2V0dGluZ3MgfCBGaWxlIFRlbXBsYXRlcy48L3NlbGVjdGlvbj4KKyAgICB9CisKKyAgICBzdGF0aWMgaW50IGZvbygpIHsKKyAgICAgIHJldHVybiA0MjsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZU1ldGhvZEZyb21Vc2FnZS9hZnRlck1ldGhvZFR5cGVQYXJhbUJlY29tZUNsYXNzVHlwZVBhcmFtZXRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVNZXRob2RGcm9tVXNhZ2UvYWZ0ZXJNZXRob2RUeXBlUGFyYW1CZWNvbWVDbGFzc1R5cGVQYXJhbWV0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YmZiZTZmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVNZXRob2RGcm9tVXNhZ2UvYWZ0ZXJNZXRob2RUeXBlUGFyYW1CZWNvbWVDbGFzc1R5cGVQYXJhbWV0ZXIuamF2YQpAQCAtMCwwICsxLDE0IEBACisvLyAiQ3JlYXRlIE1ldGhvZCAnZm9vJyIgInRydWUiCitjbGFzcyBUZXN0IHsKKyAgICA8UiwgRD4gUiBmb28oVDxSLCBEPiB0LCBEIGRhdGEpIHsKKyAgICAgICAgcmV0dXJuIHQuZm9vKHRoaXMsIGRhdGEpOworICAgIH0KK30KKworY2xhc3MgVDxSLCBEPiB7CisKKworICAgIHB1YmxpYyBSIGZvbyhUZXN0IHRlc3QsIEQgZGF0YSkgeworICAgICAgICA8c2VsZWN0aW9uPnJldHVybiBudWxsOyAgLy9UbyBjaGFuZ2UgYm9keSBvZiBjcmVhdGVkIG1ldGhvZHMgdXNlIEZpbGUgfCBTZXR0aW5ncyB8IEZpbGUgVGVtcGxhdGVzLjwvc2VsZWN0aW9uPgorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZU1ldGhvZEZyb21Vc2FnZS9hZnRlck1ldGhvZFR5cGVQYXJhbVVzZWQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlTWV0aG9kRnJvbVVzYWdlL2FmdGVyTWV0aG9kVHlwZVBhcmFtVXNlZC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYyNDM3YWUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZU1ldGhvZEZyb21Vc2FnZS9hZnRlck1ldGhvZFR5cGVQYXJhbVVzZWQuamF2YQpAQCAtMCwwICsxLDEyIEBACisvLyAiQ3JlYXRlIE1ldGhvZCAnZiciICJ0cnVlIgorY2xhc3MgQSB7CisgICAgPFQ+IFQgZm9vKCl7CisgICAgICAgQjxUPiB4ID0gZigpOworICAgIH0KKworICAgIHByaXZhdGUgPFQ+IEI8VD4gZigpIHsKKyAgICAgICAgPHNlbGVjdGlvbj5yZXR1cm4gbnVsbDsgIC8vVG8gY2hhbmdlIGJvZHkgb2YgY3JlYXRlZCBtZXRob2RzIHVzZSBGaWxlIHwgU2V0dGluZ3MgfCBGaWxlIFRlbXBsYXRlcy48L3NlbGVjdGlvbj4KKyAgICB9Cit9CisKK2NsYXNzIEI8Sz57fQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVNZXRob2RGcm9tVXNhZ2UvYWZ0ZXJNZXRob2RUeXBlUGFyYW1Vc2VkMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVNZXRob2RGcm9tVXNhZ2UvYWZ0ZXJNZXRob2RUeXBlUGFyYW1Vc2VkMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE1NTYyMDUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZU1ldGhvZEZyb21Vc2FnZS9hZnRlck1ldGhvZFR5cGVQYXJhbVVzZWQxLmphdmEKQEAgLTAsMCArMSwxMSBAQAorLy8gIkNyZWF0ZSBNZXRob2QgJ2YnIiAidHJ1ZSIKK3B1YmxpYyBjbGFzcyBDcmVhdGVNZXRob2RUZXN0IHsKKyAgcHVibGljIDxUPiBUIGFNZXRob2QoVCB0KSB7CisgICAgVCByZXN1bHQgPSBmKHQpOworICAgIHJldHVybiByZXN1bHQ7CisgIH0KKworICAgIHByaXZhdGUgPFQ+IFQgZihUIHQpIHsKKyAgICAgICAgPHNlbGVjdGlvbj5yZXR1cm4gbnVsbDsgIC8vVG8gY2hhbmdlIGJvZHkgb2YgY3JlYXRlZCBtZXRob2RzIHVzZSBGaWxlIHwgU2V0dGluZ3MgfCBGaWxlIFRlbXBsYXRlcy48L3NlbGVjdGlvbj4KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVNZXRob2RGcm9tVXNhZ2UvYWZ0ZXJNdWx0aXBsZVR5cGVzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZU1ldGhvZEZyb21Vc2FnZS9hZnRlck11bHRpcGxlVHlwZXMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZGJhYzM3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVNZXRob2RGcm9tVXNhZ2UvYWZ0ZXJNdWx0aXBsZVR5cGVzLmphdmEKQEAgLTAsMCArMSwxMSBAQAorLy8gIkNyZWF0ZSBNZXRob2QgJ2JhciciICJ0cnVlIgorY2xhc3MgQSB7CisgICAgcHVibGljIHZvaWQgZm9vKCkgeworICAgICAgT2JqZWN0IHggPSBiYXIoKTsKKyAgICAgIFN0cmluZyBzID0gYmFyKCk7CisgICAgfQorCisgICAgcHJpdmF0ZSBTdHJpbmcgYmFyKCkgeworICAgICAgICA8Y2FyZXQ+PHNlbGVjdGlvbj5yZXR1cm4gbnVsbDsgIC8vVG8gY2hhbmdlIGJvZHkgb2YgY3JlYXRlZCBtZXRob2RzIHVzZSBGaWxlIHwgU2V0dGluZ3MgfCBGaWxlIFRlbXBsYXRlcy48L3NlbGVjdGlvbj4KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVNZXRob2RGcm9tVXNhZ2UvYWZ0ZXJOb1F1YWxpZmljYXRpb24uamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlTWV0aG9kRnJvbVVzYWdlL2FmdGVyTm9RdWFsaWZpY2F0aW9uLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGYzZTY5OAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlTWV0aG9kRnJvbVVzYWdlL2FmdGVyTm9RdWFsaWZpY2F0aW9uLmphdmEKQEAgLTAsMCArMSwyMCBAQAorLy8gIkNyZWF0ZSBNZXRob2QgJ3J1biciICJ0cnVlIgorY2xhc3MgQnVnIHsKKworICBpbnRlcmZhY2UgRm9vPFg+IHsKKyAgICB2b2lkIHJ1bihYIHgpOworICB9CisKKyAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgeworICAgIG5ldyBGb288QnVnPigpIHsKKyAgICAgIEBPdmVycmlkZQorICAgICAgcHVibGljIHZvaWQgcnVuKEJ1ZyBvKSB7CisgICAgICAgIG8ucnVuKCk7CisgICAgICB9CisgICAgfTsKKyAgfQorCisgICAgcHJpdmF0ZSB2b2lkIHJ1bigpIHsKKyAgICAgICAgPHNlbGVjdGlvbj4vL1RvIGNoYW5nZSBib2R5IG9mIGNyZWF0ZWQgbWV0aG9kcyB1c2UgRmlsZSB8IFNldHRpbmdzIHwgRmlsZSBUZW1wbGF0ZXMuPC9zZWxlY3Rpb24+CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlTWV0aG9kRnJvbVVzYWdlL2FmdGVyU0NSNjc1OC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVNZXRob2RGcm9tVXNhZ2UvYWZ0ZXJTQ1I2NzU4LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzg1ZmFjNQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlTWV0aG9kRnJvbVVzYWdlL2FmdGVyU0NSNjc1OC5qYXZhCkBAIC0wLDAgKzEsMTUgQEAKKy8vICJDcmVhdGUgTWV0aG9kICdzb21lTWV0aG9kJyIgInRydWUiCitwdWJsaWMgY2xhc3MgVGVzdCB7CisKKyAgICBwdWJsaWMgT2JqZWN0IGdldCgpIHsKKyAgICAgICAgcmV0dXJuIG5ldyBPYmplY3QoKSB7CisgICAgICAgICAgICBwdWJsaWMgYm9vbGVhbiBlcXVhbHMoT2JqZWN0IG9iaikgeworICAgICAgICAgICAgICAgIHJldHVybiBzb21lTWV0aG9kKHRoaXMpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBwcml2YXRlIGJvb2xlYW4gc29tZU1ldGhvZChPYmplY3QgbykgeworICAgICAgICAgICAgICAgIDxjYXJldD48c2VsZWN0aW9uPnJldHVybiBmYWxzZTsgIC8vVG8gY2hhbmdlIGJvZHkgb2YgY3JlYXRlZCBtZXRob2RzIHVzZSBGaWxlIHwgU2V0dGluZ3MgfCBGaWxlIFRlbXBsYXRlcy48L3NlbGVjdGlvbj4KKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZU1ldGhvZEZyb21Vc2FnZS9hZnRlclNDUjY4MjYuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlTWV0aG9kRnJvbVVzYWdlL2FmdGVyU0NSNjgyNi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYwMzAwNjkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZU1ldGhvZEZyb21Vc2FnZS9hZnRlclNDUjY4MjYuamF2YQpAQCAtMCwwICsxLDE1IEBACisvLyAiQ3JlYXRlIE1ldGhvZCAnZiciICJ0cnVlIgorY2xhc3MgQSB7CisgICAgeworICAgICAgICBuZXcgUnVubmFibGUoKSB7CisgICAgICAgICAgICBwdWJsaWMgdm9pZCBydW4oKSB7CisgICAgICAgICAgICAgICAgQi5mKHRoaXMpOworICAgICAgICAgICAgfQorICAgICAgICB9OworICAgIH0KK30KK2NsYXNzIEIgeworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBmKFJ1bm5hYmxlIHJ1bm5hYmxlKSB7CisgICAgICAgIDxjYXJldD48c2VsZWN0aW9uPi8vVG8gY2hhbmdlIGJvZHkgb2YgY3JlYXRlZCBtZXRob2RzIHVzZSBGaWxlIHwgU2V0dGluZ3MgfCBGaWxlIFRlbXBsYXRlcy48L3NlbGVjdGlvbj4KKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZU1ldGhvZEZyb21Vc2FnZS9hZnRlclN0YXRpY01ldGhvZE5vdEluSW50ZXJmYWNlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZU1ldGhvZEZyb21Vc2FnZS9hZnRlclN0YXRpY01ldGhvZE5vdEluSW50ZXJmYWNlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTZhNGUxMwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlTWV0aG9kRnJvbVVzYWdlL2FmdGVyU3RhdGljTWV0aG9kTm90SW5JbnRlcmZhY2UuamF2YQpAQCAtMCwwICsxLDExIEBACisvLyAiQ3JlYXRlIE1ldGhvZCAnZiciICJ0cnVlIgoraW50ZXJmYWNlIEkge30KK2NsYXNzIEEgaW1wbGVtZW50cyBJIHsKKyAgeworICAgIEEuZigpOworICB9CisKKyAgICBwcml2YXRlIHN0YXRpYyB2b2lkIGYoKSB7CisgICAgICAgIDxzZWxlY3Rpb24+Ly9UbyBjaGFuZ2UgYm9keSBvZiBjcmVhdGVkIG1ldGhvZHMgdXNlIEZpbGUgfCBTZXR0aW5ncyB8IEZpbGUgVGVtcGxhdGVzLjwvc2VsZWN0aW9uPgorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZU1ldGhvZEZyb21Vc2FnZS9hZnRlclRoaXNDYWxsLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZU1ldGhvZEZyb21Vc2FnZS9hZnRlclRoaXNDYWxsLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzUwMjI0OAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlTWV0aG9kRnJvbVVzYWdlL2FmdGVyVGhpc0NhbGwuamF2YQpAQCAtMCwwICsxLDEzIEBACisvLyAiQ3JlYXRlIE1ldGhvZCAnZiciICJ0cnVlIgorcHVibGljIGNsYXNzIEEgeworICAgIHB1YmxpYyBBKCkgeworICAgICAgICB0aGlzKGYoKSk7CisgICAgfQorCisgICAgcHJpdmF0ZSBzdGF0aWMgaW50IGYoKSB7CisgICAgICAgIDxjYXJldD48c2VsZWN0aW9uPnJldHVybiAwOyAgLy9UbyBjaGFuZ2UgYm9keSBvZiBjcmVhdGVkIG1ldGhvZHMgdXNlIEZpbGUgfCBTZXR0aW5ncyB8IEZpbGUgVGVtcGxhdGVzLjwvc2VsZWN0aW9uPgorICAgIH0KKworICAgIHB1YmxpYyBBKGludCBpKSB7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVNZXRob2RGcm9tVXNhZ2UvYmVmb3JlMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVNZXRob2RGcm9tVXNhZ2UvYmVmb3JlMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI0Mjk4YzYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZU1ldGhvZEZyb21Vc2FnZS9iZWZvcmUxLmphdmEKQEAgLTAsMCArMSw2IEBACisvLyAiQ3JlYXRlIE1ldGhvZCAndGVzdCciICJ0cnVlIgorcHVibGljIGNsYXNzIFRlc3QgeworICAgIHB1YmxpYyBUZXN0KCkgeworICAgICAgICB0ZTxjYXJldD5zdCgpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlTWV0aG9kRnJvbVVzYWdlL2JlZm9yZTIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlTWV0aG9kRnJvbVVzYWdlL2JlZm9yZTIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMjg5Mjg0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVNZXRob2RGcm9tVXNhZ2UvYmVmb3JlMi5qYXZhCkBAIC0wLDAgKzEsNiBAQAorLy8gIkRvIG5vdCBjcmVhdGUgbWV0aG9kIiAiZmFsc2UiCitwdWJsaWMgY2xhc3MgVGVzdCB7CisgICAgcHVibGljIFRlc3QoKSB7CisgICAgICAgIHRlc3QoPGNhcmV0Pik7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVNZXRob2RGcm9tVXNhZ2UvYmVmb3JlMy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVNZXRob2RGcm9tVXNhZ2UvYmVmb3JlMy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRiZWU2MjMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZU1ldGhvZEZyb21Vc2FnZS9iZWZvcmUzLmphdmEKQEAgLTAsMCArMSw2IEBACisvLyAiQ3JlYXRlIE1ldGhvZCAndGVzdCciICJ0cnVlIgorcHVibGljIGNsYXNzIFRlc3QgeworICAgIHB1YmxpYyBUZXN0KCkgeworICAgICAgICB0ZXN0KCk8Y2FyZXQ+OworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlTWV0aG9kRnJvbVVzYWdlL2JlZm9yZTQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlTWV0aG9kRnJvbVVzYWdlL2JlZm9yZTQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NmVjYjEzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVNZXRob2RGcm9tVXNhZ2UvYmVmb3JlNC5qYXZhCkBAIC0wLDAgKzEsNiBAQAorLy8gIkNyZWF0ZSBNZXRob2QgJ3Rlc3QnIiAidHJ1ZSIKK3B1YmxpYyBjbGFzcyBUZXN0IHsKKyAgICBwdWJsaWMgVGVzdCgpIHsKKyAgICAgICAgdGVzdCgpOzxjYXJldD4KKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZU1ldGhvZEZyb21Vc2FnZS9iZWZvcmU1LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZU1ldGhvZEZyb21Vc2FnZS9iZWZvcmU1LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzBmNzY5OQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlTWV0aG9kRnJvbVVzYWdlL2JlZm9yZTUuamF2YQpAQCAtMCwwICsxLDcgQEAKKy8vICJDcmVhdGUgTWV0aG9kICd0ZXN0JyIgInRydWUiCitwdWJsaWMgY2xhc3MgVGVzdCB7CisgICAgc3RhdGljIHZvaWQgdGVzdChpbnQgaSkge30KKyAgICBwdWJsaWMgVGVzdCgpIHsKKyAgICAgICAgdGU8Y2FyZXQ+c3QoKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZU1ldGhvZEZyb21Vc2FnZS9iZWZvcmVBbHJlYWR5RXhpc3RTaWduYXR1cmUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlTWV0aG9kRnJvbVVzYWdlL2JlZm9yZUFscmVhZHlFeGlzdFNpZ25hdHVyZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFlNWE4MTQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZU1ldGhvZEZyb21Vc2FnZS9iZWZvcmVBbHJlYWR5RXhpc3RTaWduYXR1cmUuamF2YQpAQCAtMCwwICsxLDEwIEBACisvLyAiQ3JlYXRlIE1ldGhvZCAnZiciICJmYWxzZSIKK3B1YmxpYyBjbGFzcyBGb28geworICAgIHZvaWQgZm9vKEJhciBmKSB7CisgICAgICAgIGYuPGNhcmV0PmYoMik7CisgICAgfQorfQorY2xhc3MgQmFyIHsKKyAgICBwcml2YXRlIHZvaWQgZihpbnQgaSl7fQorICAgIHB1YmxpYyB2b2lkIGYoU3RyaW5nIHMpe30KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlTWV0aG9kRnJvbVVzYWdlL2JlZm9yZUFycmF5VHlwZVBhcmFtLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZU1ldGhvZEZyb21Vc2FnZS9iZWZvcmVBcnJheVR5cGVQYXJhbS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBlNTIyMDAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZU1ldGhvZEZyb21Vc2FnZS9iZWZvcmVBcnJheVR5cGVQYXJhbS5qYXZhCkBAIC0wLDAgKzEsNyBAQAorLy8gIkNyZWF0ZSBNZXRob2QgJ3Rlc3QnIiAidHJ1ZSIKK3B1YmxpYyBjbGFzcyBUZXN0IHsKKyAgICBwdWJsaWMgVGVzdCgpIHsKKyAgICAgICAgYnl0ZVtdIGJ5dGVzID0gbmV3IGJ5dGVbMF07CisgICAgICAgIHRlPGNhcmV0PnN0KGJ5dGVzKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZU1ldGhvZEZyb21Vc2FnZS9iZWZvcmVBc3NlcnREZXNjcmlwdGlvbi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVNZXRob2RGcm9tVXNhZ2UvYmVmb3JlQXNzZXJ0RGVzY3JpcHRpb24uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hODdhY2MyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVNZXRob2RGcm9tVXNhZ2UvYmVmb3JlQXNzZXJ0RGVzY3JpcHRpb24uamF2YQpAQCAtMCwwICsxLDYgQEAKKy8vICJDcmVhdGUgTWV0aG9kICdmJyIgInRydWUiCitjbGFzcyBBIHsKKyAgICB7CisgICAgICAgICBhc3NlcnQgZmFsc2U6IGY8Y2FyZXQ+KCk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVNZXRob2RGcm9tVXNhZ2UvYmVmb3JlQ2xhc3NUeXBlUGFyYW1Ob3RBdmFpbGFibGUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlTWV0aG9kRnJvbVVzYWdlL2JlZm9yZUNsYXNzVHlwZVBhcmFtTm90QXZhaWxhYmxlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTEzMTE4MAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlTWV0aG9kRnJvbVVzYWdlL2JlZm9yZUNsYXNzVHlwZVBhcmFtTm90QXZhaWxhYmxlLmphdmEKQEAgLTAsMCArMSwyMyBAQAorLy8gIkNyZWF0ZSBNZXRob2QgJ21ha2VPcCciICJ0cnVlIgorY2xhc3MgQmFzZTxUPiB7CisgICAgQmFzZShGYWN0b3J5PFQ+IGZhY3RvcnksIE9wZXJhdG9yPFQ+IG9wZXJhdG9yKSB7CisgICAgfQorfQorCitpbnRlcmZhY2UgTWV0YU9wZXJhdG9yPFQ+IHsKK30KKworaW50ZXJmYWNlIE9wZXJhdG9yPFQ+IHsKK30KKworaW50ZXJmYWNlIEZhY3Rvcnk8VD4geworfQorCitjbGFzcyBTdXA8VD4gZXh0ZW5kcyBCYXNlPFQ+IHsKKyAgICBTdXAoTWV0YU9wZXJhdG9yPFQ+IG1vcCkgeworICAgICAgICBzdXBlcihudWxsLCBtYWs8Y2FyZXQ+ZU9wKG1vcCkpOworICAgIH0KKworICAgCisKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZU1ldGhvZEZyb21Vc2FnZS9iZWZvcmVFeGlzdGluZ0ZpZWxkLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZU1ldGhvZEZyb21Vc2FnZS9iZWZvcmVFeGlzdGluZ0ZpZWxkLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTFjYTc0ZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlTWV0aG9kRnJvbVVzYWdlL2JlZm9yZUV4aXN0aW5nRmllbGQuamF2YQpAQCAtMCwwICsxLDcgQEAKKy8vICJDcmVhdGUgR2V0dGVyIiAidHJ1ZSIKK3B1YmxpYyBjbGFzcyBUZXN0IHsKKyAgICBJbnRlZ2VyIGZpZWxkOworICAgIHB1YmxpYyBmb28oKSB7CisgICAgICAgIGdldDxjYXJldD5GaWVsZCgpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlTWV0aG9kRnJvbVVzYWdlL2JlZm9yZUdlbmVyaWNzMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVNZXRob2RGcm9tVXNhZ2UvYmVmb3JlR2VuZXJpY3MxLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjg5YTAzMQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlTWV0aG9kRnJvbVVzYWdlL2JlZm9yZUdlbmVyaWNzMS5qYXZhCkBAIC0wLDAgKzEsNiBAQAorLy8gIkNyZWF0ZSBNZXRob2QgJ2JhciciICJ0cnVlIgorcHVibGljIGNsYXNzIFRlc3QgeworICAgIDxUIGV4dGVuZHMgU3RyaW5nPiB2b2lkIGZvbyAoVCB0MSwgVCB0MikgeworICAgICAgICA8Y2FyZXQ+YmFyICh0MSwgdDIpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZU1ldGhvZEZyb21Vc2FnZS9iZWZvcmVJREVBMjMyNy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVNZXRob2RGcm9tVXNhZ2UvYmVmb3JlSURFQTIzMjcuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYmJlOTA1NwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlTWV0aG9kRnJvbVVzYWdlL2JlZm9yZUlERUEyMzI3LmphdmEKQEAgLTAsMCArMSw2IEBACisvLyAiQ3JlYXRlIE1ldGhvZCAndGVzdCciICJ0cnVlIgorcHVibGljIGNsYXNzIFRlc3QgeworICAgIHB1YmxpYyBUZXN0KCkgeworICAgICAgICBhc3NlcnQgPGNhcmV0PnRlc3QoKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZU1ldGhvZEZyb21Vc2FnZS9iZWZvcmVJREVBREVWNjA2OC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVNZXRob2RGcm9tVXNhZ2UvYmVmb3JlSURFQURFVjYwNjguamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ODFmZTY4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVNZXRob2RGcm9tVXNhZ2UvYmVmb3JlSURFQURFVjYwNjguamF2YQpAQCAtMCwwICsxLDkgQEAKKy8vICJDcmVhdGUgTWV0aG9kICd0b011bHRpJyIgInRydWUiCitpbXBvcnQgamF2YS51dGlsLk1hcDsKKworY2xhc3MgQnJva2VuQ3JlYXRlTWV0aG9kIHsKKworICAgIHB1YmxpYyB2b2lkIGZvbyhNYXA8U3RyaW5nLCBTdHJpbmc+IGJhcikgeworICAgICAgICBNYXA8U3RyaW5nLCBTdHJpbmdbXT4gbXVsdGlCYXIgPSA8Y2FyZXQ+dG9NdWx0aShiYXIpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlTWV0aG9kRnJvbVVzYWdlL2JlZm9yZUludGVyZmFjZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVNZXRob2RGcm9tVXNhZ2UvYmVmb3JlSW50ZXJmYWNlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2IxZjM5YgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlTWV0aG9kRnJvbVVzYWdlL2JlZm9yZUludGVyZmFjZS5qYXZhCkBAIC0wLDAgKzEsMTEgQEAKKy8vICJDcmVhdGUgTWV0aG9kICd0ZXN0JyIgInRydWUiCitwdWJsaWMgaW50ZXJmYWNlIFRlc3QgeworCit9CisKK2NsYXNzIEZvbyB7CisgIHZvaWQgYmFyKCkgeworICAgIFRlc3QgdGVzdCA9IG51bGw7CisgICAgdGVzdC50ZTxjYXJldD5zdCgpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVNZXRob2RGcm9tVXNhZ2UvYmVmb3JlTGFtYmRhQXJndW1lbnQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlTWV0aG9kRnJvbVVzYWdlL2JlZm9yZUxhbWJkYUFyZ3VtZW50LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjdhMzkwMwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlTWV0aG9kRnJvbVVzYWdlL2JlZm9yZUxhbWJkYUFyZ3VtZW50LmphdmEKQEAgLTAsMCArMSw2IEBACisvLyAiQ3JlYXRlIE1ldGhvZCAnZiciICJ0cnVlIgorY2xhc3MgQSB7CisgICAgeworICAgICAgICAgZjxjYXJldD4oKCkgLT4ge30pOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlTWV0aG9kRnJvbVVzYWdlL2JlZm9yZU1ldGhvZFJlZmVyZW5jZUFyZ3VtZW50LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZU1ldGhvZEZyb21Vc2FnZS9iZWZvcmVNZXRob2RSZWZlcmVuY2VBcmd1bWVudC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjllZjZiN2IKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZU1ldGhvZEZyb21Vc2FnZS9iZWZvcmVNZXRob2RSZWZlcmVuY2VBcmd1bWVudC5qYXZhCkBAIC0wLDAgKzEsOSBAQAorLy8gIkNyZWF0ZSBNZXRob2QgJ2YnIiAidHJ1ZSIKK2NsYXNzIEEgeworICAgIHsKKyAgICAgICAgIGY8Y2FyZXQ+KEE6OmZvbyk7CisgICAgfQorICAgIHN0YXRpYyBpbnQgZm9vKCkgeworICAgICAgcmV0dXJuIDQyOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlTWV0aG9kRnJvbVVzYWdlL2JlZm9yZU1ldGhvZFR5cGVQYXJhbUJlY29tZUNsYXNzVHlwZVBhcmFtZXRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVNZXRob2RGcm9tVXNhZ2UvYmVmb3JlTWV0aG9kVHlwZVBhcmFtQmVjb21lQ2xhc3NUeXBlUGFyYW1ldGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTkxZGI0MAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlTWV0aG9kRnJvbVVzYWdlL2JlZm9yZU1ldGhvZFR5cGVQYXJhbUJlY29tZUNsYXNzVHlwZVBhcmFtZXRlci5qYXZhCkBAIC0wLDAgKzEsMTEgQEAKKy8vICJDcmVhdGUgTWV0aG9kICdmb28nIiAidHJ1ZSIKK2NsYXNzIFRlc3QgeworICAgIDxSLCBEPiBSIGZvbyhUPFIsIEQ+IHQsIEQgZGF0YSkgeworICAgICAgICByZXR1cm4gdC5mPGNhcmV0Pm9vKHRoaXMsIGRhdGEpOworICAgIH0KK30KKworY2xhc3MgVDxSLCBEPiB7CisKKworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlTWV0aG9kRnJvbVVzYWdlL2JlZm9yZU1ldGhvZFR5cGVQYXJhbVVzZWQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlTWV0aG9kRnJvbVVzYWdlL2JlZm9yZU1ldGhvZFR5cGVQYXJhbVVzZWQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNjRmNGZhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVNZXRob2RGcm9tVXNhZ2UvYmVmb3JlTWV0aG9kVHlwZVBhcmFtVXNlZC5qYXZhCkBAIC0wLDAgKzEsOCBAQAorLy8gIkNyZWF0ZSBNZXRob2QgJ2YnIiAidHJ1ZSIKK2NsYXNzIEEgeworICAgIDxUPiBUIGZvbygpeworICAgICAgIEI8VD4geCA9IGY8Y2FyZXQ+KCk7CisgICAgfQorfQorCitjbGFzcyBCPEs+e30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlTWV0aG9kRnJvbVVzYWdlL2JlZm9yZU1ldGhvZFR5cGVQYXJhbVVzZWQxLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZU1ldGhvZEZyb21Vc2FnZS9iZWZvcmVNZXRob2RUeXBlUGFyYW1Vc2VkMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhhZmZjZmYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZU1ldGhvZEZyb21Vc2FnZS9iZWZvcmVNZXRob2RUeXBlUGFyYW1Vc2VkMS5qYXZhCkBAIC0wLDAgKzEsNyBAQAorLy8gIkNyZWF0ZSBNZXRob2QgJ2YnIiAidHJ1ZSIKK3B1YmxpYyBjbGFzcyBDcmVhdGVNZXRob2RUZXN0IHsKKyAgcHVibGljIDxUPiBUIGFNZXRob2QoVCB0KSB7CisgICAgVCByZXN1bHQgPSBmPGNhcmV0Pih0KTsKKyAgICByZXR1cm4gcmVzdWx0OworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVNZXRob2RGcm9tVXNhZ2UvYmVmb3JlTXVsdGlwbGVUeXBlcy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVNZXRob2RGcm9tVXNhZ2UvYmVmb3JlTXVsdGlwbGVUeXBlcy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg2YjE5YjEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZU1ldGhvZEZyb21Vc2FnZS9iZWZvcmVNdWx0aXBsZVR5cGVzLmphdmEKQEAgLTAsMCArMSw3IEBACisvLyAiQ3JlYXRlIE1ldGhvZCAnYmFyJyIgInRydWUiCitjbGFzcyBBIHsKKyAgICBwdWJsaWMgdm9pZCBmb28oKSB7CisgICAgICBPYmplY3QgeCA9IDxjYXJldD5iYXIoKTsKKyAgICAgIFN0cmluZyBzID0gYmFyKCk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlTWV0aG9kRnJvbVVzYWdlL2JlZm9yZU5vUXVhbGlmaWNhdGlvbi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVNZXRob2RGcm9tVXNhZ2UvYmVmb3JlTm9RdWFsaWZpY2F0aW9uLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTU0MDdlNTIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZU1ldGhvZEZyb21Vc2FnZS9iZWZvcmVOb1F1YWxpZmljYXRpb24uamF2YQpAQCAtMCwwICsxLDE2IEBACisvLyAiQ3JlYXRlIE1ldGhvZCAncnVuJyIgInRydWUiCitjbGFzcyBCdWcgeworCisgIGludGVyZmFjZSBGb288WD4geworICAgIHZvaWQgcnVuKFggeCk7CisgIH0KKworICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CisgICAgbmV3IEZvbzxCdWc+KCkgeworICAgICAgQE92ZXJyaWRlCisgICAgICBwdWJsaWMgdm9pZCBydW4oQnVnIG8pIHsKKyAgICAgICAgby5ydTxjYXJldD5uKCk7CisgICAgICB9CisgICAgfTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlTWV0aG9kRnJvbVVzYWdlL2JlZm9yZVNDUjY3NTguamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlTWV0aG9kRnJvbVVzYWdlL2JlZm9yZVNDUjY3NTguamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMzQzMjY0NgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlTWV0aG9kRnJvbVVzYWdlL2JlZm9yZVNDUjY3NTguamF2YQpAQCAtMCwwICsxLDExIEBACisvLyAiQ3JlYXRlIE1ldGhvZCAnc29tZU1ldGhvZCciICJ0cnVlIgorcHVibGljIGNsYXNzIFRlc3QgeworCisgICAgcHVibGljIE9iamVjdCBnZXQoKSB7CisgICAgICAgIHJldHVybiBuZXcgT2JqZWN0KCkgeworICAgICAgICAgICAgcHVibGljIGJvb2xlYW4gZXF1YWxzKE9iamVjdCBvYmopIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gPGNhcmV0PnNvbWVNZXRob2QodGhpcyk7CisgICAgICAgICAgICB9CisgICAgICAgIH07CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVNZXRob2RGcm9tVXNhZ2UvYmVmb3JlU0NSNjgyNi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVNZXRob2RGcm9tVXNhZ2UvYmVmb3JlU0NSNjgyNi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZmOTIxOWUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZU1ldGhvZEZyb21Vc2FnZS9iZWZvcmVTQ1I2ODI2LmphdmEKQEAgLTAsMCArMSwxMiBAQAorLy8gIkNyZWF0ZSBNZXRob2QgJ2YnIiAidHJ1ZSIKK2NsYXNzIEEgeworICAgIHsKKyAgICAgICAgbmV3IFJ1bm5hYmxlKCkgeworICAgICAgICAgICAgcHVibGljIHZvaWQgcnVuKCkgeworICAgICAgICAgICAgICAgIEIuPGNhcmV0PmYodGhpcyk7CisgICAgICAgICAgICB9CisgICAgICAgIH07CisgICAgfQorfQorY2xhc3MgQiB7Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZU1ldGhvZEZyb21Vc2FnZS9iZWZvcmVTdGF0aWNNZXRob2ROb3RJbkludGVyZmFjZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVNZXRob2RGcm9tVXNhZ2UvYmVmb3JlU3RhdGljTWV0aG9kTm90SW5JbnRlcmZhY2UuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZDBmNTgyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVNZXRob2RGcm9tVXNhZ2UvYmVmb3JlU3RhdGljTWV0aG9kTm90SW5JbnRlcmZhY2UuamF2YQpAQCAtMCwwICsxLDcgQEAKKy8vICJDcmVhdGUgTWV0aG9kICdmJyIgInRydWUiCitpbnRlcmZhY2UgSSB7fQorY2xhc3MgQSBpbXBsZW1lbnRzIEkgeworICB7CisgICAgQS48Y2FyZXQ+ZigpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVNZXRob2RGcm9tVXNhZ2UvYmVmb3JlVGhpc0NhbGwuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlTWV0aG9kRnJvbVVzYWdlL2JlZm9yZVRoaXNDYWxsLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTBjOGQxMwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlTWV0aG9kRnJvbVVzYWdlL2JlZm9yZVRoaXNDYWxsLmphdmEKQEAgLTAsMCArMSw5IEBACisvLyAiQ3JlYXRlIE1ldGhvZCAnZiciICJ0cnVlIgorcHVibGljIGNsYXNzIEEgeworICAgIHB1YmxpYyBBKCkgeworICAgICAgICB0aGlzKDxjYXJldD5mKCkpOworICAgIH0KKworICAgIHB1YmxpYyBBKGludCBpKSB7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVNZXRob2RGcm9tVXNhZ2UvYmVmb3JlVW5yZXNvbHZlZEFyZ0xpc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlTWV0aG9kRnJvbVVzYWdlL2JlZm9yZVVucmVzb2x2ZWRBcmdMaXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTE2MWU2OAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlTWV0aG9kRnJvbVVzYWdlL2JlZm9yZVVucmVzb2x2ZWRBcmdMaXN0LmphdmEKQEAgLTAsMCArMSw2IEBACisvLyAiQ3JlYXRlIE1ldGhvZCAnZiciICJmYWxzZSIKK2NsYXNzIEEgeworICAgIHsKKyAgICAgICAgIGY8Y2FyZXQ+KHh4eCk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVQYXJhbWV0ZXJGcm9tVXNhZ2UvYWZ0ZXJIaWVyYXJjaHkuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlUGFyYW1ldGVyRnJvbVVzYWdlL2FmdGVySGllcmFyY2h5LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGJkYzIzNgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlUGFyYW1ldGVyRnJvbVVzYWdlL2FmdGVySGllcmFyY2h5LmphdmEKQEAgLTAsMCArMSwxMSBAQAorLy8gIkNyZWF0ZSBQYXJhbWV0ZXIgJ3BvcG9wJyIgInRydWUiCitjbGFzcyBDYWxjdWxhdG9yIHsKKyAgICBwdWJsaWMgdm9pZCBwcmludEVycm9yKFN0cmluZyBkZXRhaWwsIGludCBsaW5lLCBTdHJpbmcgZmlsZSwgU3RyaW5nIHBvcG9wKSB7CisgICAgICAgIGludCBpID0gcG9wb3A7CisgICAgfQorfQorY2xhc3MgU1NTIGV4dGVuZHMgQ2FsY3VsYXRvciB7CisgICAgcHVibGljIHZvaWQgcHJpbnRFcnJvcihTdHJpbmcgZGV0YWlsLCBpbnQgbGluZSwgU3RyaW5nIGZpbGUsIFN0cmluZyBwb3BvcCkgeworICAgICAgICBTdHJpbmcgcyA9IDxjYXJldD5wb3BvcDsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZVBhcmFtZXRlckZyb21Vc2FnZS9hZnRlclNpbXBsZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVQYXJhbWV0ZXJGcm9tVXNhZ2UvYWZ0ZXJTaW1wbGUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44Y2QzOTNlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVQYXJhbWV0ZXJGcm9tVXNhZ2UvYWZ0ZXJTaW1wbGUuamF2YQpAQCAtMCwwICsxLDYgQEAKKy8vICJDcmVhdGUgUGFyYW1ldGVyICdwb3BvcCciICJ0cnVlIgorY2xhc3MgQ2FsY3VsYXRvciB7CisgICAgcHVibGljIHZvaWQgcHJpbnRFcnJvcihTdHJpbmcgZGV0YWlsLCBpbnQgbGluZSwgU3RyaW5nIGZpbGUsIGludCBwb3BvcCkgeworICAgICAgICBpbnQgaSA9IDxjYXJldD5wb3BvcDsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZVBhcmFtZXRlckZyb21Vc2FnZS9iZWZvcmVIaWVyYXJjaHkuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlUGFyYW1ldGVyRnJvbVVzYWdlL2JlZm9yZUhpZXJhcmNoeS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVkMWNkOTUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZVBhcmFtZXRlckZyb21Vc2FnZS9iZWZvcmVIaWVyYXJjaHkuamF2YQpAQCAtMCwwICsxLDExIEBACisvLyAiQ3JlYXRlIFBhcmFtZXRlciAncG9wb3AnIiAidHJ1ZSIKK2NsYXNzIENhbGN1bGF0b3IgeworICAgIHB1YmxpYyB2b2lkIHByaW50RXJyb3IoU3RyaW5nIGRldGFpbCwgaW50IGxpbmUsIFN0cmluZyBmaWxlKSB7CisgICAgICAgIGludCBpID0gcG9wb3A7CisgICAgfQorfQorY2xhc3MgU1NTIGV4dGVuZHMgQ2FsY3VsYXRvciB7CisgICAgcHVibGljIHZvaWQgcHJpbnRFcnJvcihTdHJpbmcgZGV0YWlsLCBpbnQgbGluZSwgU3RyaW5nIGZpbGUpIHsKKyAgICAgICAgU3RyaW5nIHMgPSA8Y2FyZXQ+cG9wb3A7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVQYXJhbWV0ZXJGcm9tVXNhZ2UvYmVmb3JlU2ltcGxlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZVBhcmFtZXRlckZyb21Vc2FnZS9iZWZvcmVTaW1wbGUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZDZhNjZhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVQYXJhbWV0ZXJGcm9tVXNhZ2UvYmVmb3JlU2ltcGxlLmphdmEKQEAgLTAsMCArMSw2IEBACisvLyAiQ3JlYXRlIFBhcmFtZXRlciAncG9wb3AnIiAidHJ1ZSIKK2NsYXNzIENhbGN1bGF0b3IgeworICAgIHB1YmxpYyB2b2lkIHByaW50RXJyb3IoU3RyaW5nIGRldGFpbCwgaW50IGxpbmUsIFN0cmluZyBmaWxlKSB7CisgICAgICAgIGludCBpID0gPGNhcmV0PnBvcG9wOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlUHJvcGVydHlGcm9tVXNhZ2UvYWZ0ZXJGaWVsZEV4aXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZVByb3BlcnR5RnJvbVVzYWdlL2FmdGVyRmllbGRFeGlzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU5YmFhYzMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZVByb3BlcnR5RnJvbVVzYWdlL2FmdGVyRmllbGRFeGlzdC5qYXZhCkBAIC0wLDAgKzEsMTYgQEAKKy8vICJDcmVhdGUgUHJvcGVydHkiICJ0cnVlIgorY2xhc3MgQ2FsY3VsYXRvciB7CisgICAgaW50IGk7CisKKyAgICBwdWJsaWMgdm9pZCBwcmludEVycm9yKCkgeworICAgICAgICBzZXRJKDApOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNldEkoaW50IGkpIHsKKyAgICAgICAgdGhpcy5pID0gaTsKKyAgICB9CisKKyAgICBwdWJsaWMgaW50IGdldEkoKSB7CisgICAgICAgIHJldHVybiBpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlUHJvcGVydHlGcm9tVXNhZ2UvYWZ0ZXJTaW1wbGUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlUHJvcGVydHlGcm9tVXNhZ2UvYWZ0ZXJTaW1wbGUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMjhkOTNkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVQcm9wZXJ0eUZyb21Vc2FnZS9hZnRlclNpbXBsZS5qYXZhCkBAIC0wLDAgKzEsMTYgQEAKKy8vICJDcmVhdGUgUHJvcGVydHkiICJ0cnVlIgorY2xhc3MgQ2FsY3VsYXRvciB7CisgICAgcHJpdmF0ZSBpbnQgaTsKKworICAgIHB1YmxpYyB2b2lkIHByaW50RXJyb3IoKSB7CisgICAgICAgIHNldEkoMCk7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgc2V0SShpbnQgaSkgeworICAgICAgICB0aGlzLmkgPSBpOworICAgIH0KKworICAgIHB1YmxpYyBpbnQgZ2V0SSgpIHsKKyAgICAgICAgcmV0dXJuIGk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVQcm9wZXJ0eUZyb21Vc2FnZS9iZWZvcmVGaWVsZEFuZEdldHRlckV4aXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZVByb3BlcnR5RnJvbVVzYWdlL2JlZm9yZUZpZWxkQW5kR2V0dGVyRXhpc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZWM3NjBmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVQcm9wZXJ0eUZyb21Vc2FnZS9iZWZvcmVGaWVsZEFuZEdldHRlckV4aXN0LmphdmEKQEAgLTAsMCArMSw4IEBACisvLyAiQ3JlYXRlIFByb3BlcnR5IiAiZmFsc2UiCitjbGFzcyBDYWxjdWxhdG9yIHsKKyAgICBpbnQgaTsKKyAgICBwdWJsaWMgdm9pZCBwcmludEVycm9yKCkgeworICAgICAgc2V0PGNhcmV0PkkoMCk7IAorICAgIH0KKyAgICBwdWJsaWMgaW50IGdldEkoKSB7cmV0dXJuIGk7fQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVQcm9wZXJ0eUZyb21Vc2FnZS9iZWZvcmVGaWVsZEV4aXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2NyZWF0ZVByb3BlcnR5RnJvbVVzYWdlL2JlZm9yZUZpZWxkRXhpc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNTY0NTdhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVQcm9wZXJ0eUZyb21Vc2FnZS9iZWZvcmVGaWVsZEV4aXN0LmphdmEKQEAgLTAsMCArMSw3IEBACisvLyAiQ3JlYXRlIFByb3BlcnR5IiAidHJ1ZSIKK2NsYXNzIENhbGN1bGF0b3IgeworICAgIGludCBpOworICAgIHB1YmxpYyB2b2lkIHByaW50RXJyb3IoKSB7CisgICAgICBzZXQ8Y2FyZXQ+SSgwKTsgCisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9jcmVhdGVQcm9wZXJ0eUZyb21Vc2FnZS9iZWZvcmVTaW1wbGUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlUHJvcGVydHlGcm9tVXNhZ2UvYmVmb3JlU2ltcGxlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGQyMTNlYwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvY3JlYXRlUHJvcGVydHlGcm9tVXNhZ2UvYmVmb3JlU2ltcGxlLmphdmEKQEAgLTAsMCArMSw2IEBACisvLyAiQ3JlYXRlIFByb3BlcnR5IiAidHJ1ZSIKK2NsYXNzIENhbGN1bGF0b3IgeworICAgIHB1YmxpYyB2b2lkIHByaW50RXJyb3IoKSB7CisgICAgICBzZXQ8Y2FyZXQ+SSgwKTsgCisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9kZWZlckZpbmFsQXNzaWdubWVudC9hZnRlcjEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvZGVmZXJGaW5hbEFzc2lnbm1lbnQvYWZ0ZXIxLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzIzNTE2NAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvZGVmZXJGaW5hbEFzc2lnbm1lbnQvYWZ0ZXIxLmphdmEKQEAgLTAsMCArMSwxNyBAQAorLy8gIkRlZmVyIGFzc2lnbm1lbnQgdG8gJ24nIHVzaW5nIHRlbXAgdmFyaWFibGUiICJ0cnVlIgoraW1wb3J0IGphdmEuaW8uKjsKKworY2xhc3MgYSB7CisgICAgdm9pZCBmKElucHV0U3RyZWFtIGluKSB7CisgICAgICAgIGZpbmFsIGludCBuOworICAgICAgICBpbnQgbjE7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBuMSA9IGluLnJlYWQoKTsKKyAgICAgICAgfSBjYXRjaCAoSU9FeGNlcHRpb24gZSkgeworICAgICAgICAgICAgPGNhcmV0Pm4xID0gLTE7CisgICAgICAgIH0KKyAgICAgICAgbiA9IG4xOworICAgICAgICBpbnQgeSA9IDQ7CisgICAgfQorfQorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2RlZmVyRmluYWxBc3NpZ25tZW50L2FmdGVyMi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9kZWZlckZpbmFsQXNzaWdubWVudC9hZnRlcjIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MDEwODAyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9kZWZlckZpbmFsQXNzaWdubWVudC9hZnRlcjIuamF2YQpAQCAtMCwwICsxLDE5IEBACisvLyAiRGVmZXIgYXNzaWdubWVudCB0byAnbicgdXNpbmcgdGVtcCB2YXJpYWJsZSIgInRydWUiCitpbXBvcnQgamF2YS5pby4qOworCitjbGFzcyBhIHsKKyAgICB2b2lkIGYoSW5wdXRTdHJlYW0gaW4pIHsKKyAgICAgICAgZmluYWwgaW50IG47CisgICAgICAgIGludCBuMTsKKyAgICAgICAgaWYgKGluPT1udWxsKSB7CisgICAgICAgICAgICBuMSA9IDI7CisgICAgICAgICAgICA8Y2FyZXQ+bjEgPSAyOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgbjEgPTQ7CisgICAgICAgIH0KKyAgICAgICAgbiA9IG4xOworICAgICAgICBpbnQgcCA9IDY7CisgICAgfQorfQorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2RlZmVyRmluYWxBc3NpZ25tZW50L2FmdGVyMy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9kZWZlckZpbmFsQXNzaWdubWVudC9hZnRlcjMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNjBlODAyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9kZWZlckZpbmFsQXNzaWdubWVudC9hZnRlcjMuamF2YQpAQCAtMCwwICsxLDIyIEBACisvLyAiRGVmZXIgYXNzaWdubWVudCB0byAnbicgdXNpbmcgdGVtcCB2YXJpYWJsZSIgInRydWUiCitpbXBvcnQgamF2YS5pby4qOworCitjbGFzcyBhIHsKKyAgICB2b2lkIGYoSW5wdXRTdHJlYW0gaW4pIHsKKyAgICAgICAgZmluYWwgaW50IG47CisgICAgICAgIGludCBuMTsKKyAgICAgICAgaWYgKGluPT1udWxsKSB7CisgICAgICAgICAgICBuMSA9IDI7CisgICAgICAgICAgICA8Y2FyZXQ+bjEgPSAyOworICAgICAgICAgICAgaW50IGggPSBuMTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIG4xID00OworICAgICAgICB9CisgICAgICAgIG4gPSBuMTsKKyAgICAgICAgZihuKTsKKyAgICAgICAgaW50IHAgPSBuOworICAgIH0KKyAgICB2b2lkIGYoaW50IGkpIHt9Cit9CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvZGVmZXJGaW5hbEFzc2lnbm1lbnQvYWZ0ZXI0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2RlZmVyRmluYWxBc3NpZ25tZW50L2FmdGVyNC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFhN2M3MmIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2RlZmVyRmluYWxBc3NpZ25tZW50L2FmdGVyNC5qYXZhCkBAIC0wLDAgKzEsMjIgQEAKKy8vICJEZWZlciBhc3NpZ25tZW50IHRvICduJyB1c2luZyB0ZW1wIHZhcmlhYmxlIiAidHJ1ZSIKK2ltcG9ydCBqYXZhLmlvLio7CisKK2NsYXNzIGEgeworICAgIGZpbmFsIGludCBuOworICAgIGEoSW5wdXRTdHJlYW0gaW4pIHsKKyAgICAgICAgaW50IG4xOworICAgICAgICBpZiAoaW49PW51bGwpIHsKKyAgICAgICAgICAgIG4xID0gMjsKKyAgICAgICAgICAgIDxjYXJldD5uMSA9IDI7CisgICAgICAgICAgICBpbnQgaCA9IG4xOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgbjEgPTQ7CisgICAgICAgIH0KKyAgICAgICAgbiA9IG4xOworICAgICAgICBmKG4pOworICAgICAgICBpbnQgcCA9IG47CisgICAgfQorICAgIHZvaWQgZihpbnQgaSkge30KK30KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9kZWZlckZpbmFsQXNzaWdubWVudC9hZnRlcjUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvZGVmZXJGaW5hbEFzc2lnbm1lbnQvYWZ0ZXI1LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTVmNDBhMAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvZGVmZXJGaW5hbEFzc2lnbm1lbnQvYWZ0ZXI1LmphdmEKQEAgLTAsMCArMSwxNCBAQAorLy8gIkRlZmVyIGFzc2lnbm1lbnQgdG8gJ2knIHVzaW5nIHRlbXAgdmFyaWFibGUiICJ0cnVlIgoraW1wb3J0IGphdmEuaW8uKjsKKworY2xhc3MgYSB7CisgICAgdm9pZCBmKGludCBrKSB7CisgICAgICAgIGZpbmFsIGludCBpOworICAgICAgICBpbnQgaTE7CisgICAgICAgIGkxID0gNDsKKyAgICAgICAgPGNhcmV0PmkxID0gNDsKKyAgICAgICAgaSA9IGkxOworICAgICAgICBmKGkpOworICAgIH0KK30KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9kZWZlckZpbmFsQXNzaWdubWVudC9hZnRlcjYuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvZGVmZXJGaW5hbEFzc2lnbm1lbnQvYWZ0ZXI2LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDE0ZWI1ZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvZGVmZXJGaW5hbEFzc2lnbm1lbnQvYWZ0ZXI2LmphdmEKQEAgLTAsMCArMSwxMiBAQAorLy8gIkRlZmVyIGFzc2lnbm1lbnQgdG8gJ24nIHVzaW5nIHRlbXAgdmFyaWFibGUiICJ0cnVlIgoraW1wb3J0IGphdmEuaW8uKjsKKworY2xhc3MgYSB7CisgICAgZmluYWwgaW50IG47CisgICAgeworICAgICAgICBpbnQgbjE7CisgICAgICAgIG4xID0zOworICAgICAgICA8Y2FyZXQ+bjEgPTM7CisgICAgICAgIG4gPSBuMTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2RlZmVyRmluYWxBc3NpZ25tZW50L2FmdGVyNy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9kZWZlckZpbmFsQXNzaWdubWVudC9hZnRlcjcuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xN2U4ZDhhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9kZWZlckZpbmFsQXNzaWdubWVudC9hZnRlcjcuamF2YQpAQCAtMCwwICsxLDEyIEBACisvLyAiRGVmZXIgYXNzaWdubWVudCB0byAnbicgdXNpbmcgdGVtcCB2YXJpYWJsZSIgInRydWUiCitpbXBvcnQgamF2YS5pby4qOworCitjbGFzcyBhIHsKKyAgICBmaW5hbCBpbnQgbjsKKyAgICBhKGludCBuKSB7CisgICAgICAgIGludCBuMTsKKyAgICAgICAgbjEgPW47CisgICAgICAgIDxjYXJldD5uMSA9bjsKKyAgICAgICAgdGhpcy5uID0gbjE7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9kZWZlckZpbmFsQXNzaWdubWVudC9hZnRlcjguamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvZGVmZXJGaW5hbEFzc2lnbm1lbnQvYWZ0ZXI4LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWRjY2QzYQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvZGVmZXJGaW5hbEFzc2lnbm1lbnQvYWZ0ZXI4LmphdmEKQEAgLTAsMCArMSwxOCBAQAorLy8gIkRlZmVyIGFzc2lnbm1lbnQgdG8gJ24nIHVzaW5nIHRlbXAgdmFyaWFibGUiICJ0cnVlIgoraW1wb3J0IGphdmEuaW8uKjsKKworY2xhc3MgYSB7CisgICAgdm9pZCBmKElucHV0U3RyZWFtIGluKSB7CisgICAgICAgIGZpbmFsIGludCBuOworICAgICAgICBpbnQgbjE7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBuMSA9IGluLnJlYWQoKTsKKyAgICAgICAgfSBjYXRjaCAoSU9FeGNlcHRpb24gZSkgeworICAgICAgICAgICAgPGNhcmV0Pm4xID0gLTE7CisgICAgICAgICAgICBmKGluKTsKKyAgICAgICAgfQorCisgICAgICAgIG4gPSBuMTsKKyAgICAgICAgaW50IHkgPSBuOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvZGVmZXJGaW5hbEFzc2lnbm1lbnQvYmVmb3JlMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9kZWZlckZpbmFsQXNzaWdubWVudC9iZWZvcmUxLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGFjMjQ4MgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvZGVmZXJGaW5hbEFzc2lnbm1lbnQvYmVmb3JlMS5qYXZhCkBAIC0wLDAgKzEsMTUgQEAKKy8vICJEZWZlciBhc3NpZ25tZW50IHRvICduJyB1c2luZyB0ZW1wIHZhcmlhYmxlIiAidHJ1ZSIKK2ltcG9ydCBqYXZhLmlvLio7CisKK2NsYXNzIGEgeworICAgIHZvaWQgZihJbnB1dFN0cmVhbSBpbikgeworICAgICAgICBmaW5hbCBpbnQgbjsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIG4gPSBpbi5yZWFkKCk7CisgICAgICAgIH0gY2F0Y2ggKElPRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIDxjYXJldD5uID0gLTE7CisgICAgICAgIH0KKyAgICAgICAgaW50IHkgPSA0OworICAgIH0KK30KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9kZWZlckZpbmFsQXNzaWdubWVudC9iZWZvcmUyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2RlZmVyRmluYWxBc3NpZ25tZW50L2JlZm9yZTIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZTNhYjdlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9kZWZlckZpbmFsQXNzaWdubWVudC9iZWZvcmUyLmphdmEKQEAgLTAsMCArMSwxNyBAQAorLy8gIkRlZmVyIGFzc2lnbm1lbnQgdG8gJ24nIHVzaW5nIHRlbXAgdmFyaWFibGUiICJ0cnVlIgoraW1wb3J0IGphdmEuaW8uKjsKKworY2xhc3MgYSB7CisgICAgdm9pZCBmKElucHV0U3RyZWFtIGluKSB7CisgICAgICAgIGZpbmFsIGludCBuOworICAgICAgICBpZiAoaW49PW51bGwpIHsKKyAgICAgICAgICAgIG49IDI7CisgICAgICAgICAgICA8Y2FyZXQ+bj0gMjsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIG49NDsKKyAgICAgICAgfQorICAgICAgICBpbnQgcCA9IDY7CisgICAgfQorfQorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2RlZmVyRmluYWxBc3NpZ25tZW50L2JlZm9yZTMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvZGVmZXJGaW5hbEFzc2lnbm1lbnQvYmVmb3JlMy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ4N2FmMzcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2RlZmVyRmluYWxBc3NpZ25tZW50L2JlZm9yZTMuamF2YQpAQCAtMCwwICsxLDIwIEBACisvLyAiRGVmZXIgYXNzaWdubWVudCB0byAnbicgdXNpbmcgdGVtcCB2YXJpYWJsZSIgInRydWUiCitpbXBvcnQgamF2YS5pby4qOworCitjbGFzcyBhIHsKKyAgICB2b2lkIGYoSW5wdXRTdHJlYW0gaW4pIHsKKyAgICAgICAgZmluYWwgaW50IG47CisgICAgICAgIGlmIChpbj09bnVsbCkgeworICAgICAgICAgICAgbj0gMjsKKyAgICAgICAgICAgIDxjYXJldD5uPSAyOworICAgICAgICAgICAgaW50IGggPSBuOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgbj00OworICAgICAgICB9CisgICAgICAgIGYobik7CisgICAgICAgIGludCBwID0gbjsKKyAgICB9CisgICAgdm9pZCBmKGludCBpKSB7fQorfQorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2RlZmVyRmluYWxBc3NpZ25tZW50L2JlZm9yZTQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvZGVmZXJGaW5hbEFzc2lnbm1lbnQvYmVmb3JlNC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUyOTdhZWMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2RlZmVyRmluYWxBc3NpZ25tZW50L2JlZm9yZTQuamF2YQpAQCAtMCwwICsxLDIwIEBACisvLyAiRGVmZXIgYXNzaWdubWVudCB0byAnbicgdXNpbmcgdGVtcCB2YXJpYWJsZSIgInRydWUiCitpbXBvcnQgamF2YS5pby4qOworCitjbGFzcyBhIHsKKyAgICBmaW5hbCBpbnQgbjsKKyAgICBhKElucHV0U3RyZWFtIGluKSB7CisgICAgICAgIGlmIChpbj09bnVsbCkgeworICAgICAgICAgICAgbj0gMjsKKyAgICAgICAgICAgIDxjYXJldD5uPSAyOworICAgICAgICAgICAgaW50IGggPSBuOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgbj00OworICAgICAgICB9CisgICAgICAgIGYobik7CisgICAgICAgIGludCBwID0gbjsKKyAgICB9CisgICAgdm9pZCBmKGludCBpKSB7fQorfQorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2RlZmVyRmluYWxBc3NpZ25tZW50L2JlZm9yZTUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvZGVmZXJGaW5hbEFzc2lnbm1lbnQvYmVmb3JlNS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk4ZDhlNDQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2RlZmVyRmluYWxBc3NpZ25tZW50L2JlZm9yZTUuamF2YQpAQCAtMCwwICsxLDEyIEBACisvLyAiRGVmZXIgYXNzaWdubWVudCB0byAnaScgdXNpbmcgdGVtcCB2YXJpYWJsZSIgInRydWUiCitpbXBvcnQgamF2YS5pby4qOworCitjbGFzcyBhIHsKKyAgICB2b2lkIGYoaW50IGspIHsKKyAgICAgICAgZmluYWwgaW50IGk7CisgICAgICAgIGkgPSA0OworICAgICAgICA8Y2FyZXQ+aSA9IDQ7CisgICAgICAgIGYoaSk7CisgICAgfQorfQorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2RlZmVyRmluYWxBc3NpZ25tZW50L2JlZm9yZTYuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvZGVmZXJGaW5hbEFzc2lnbm1lbnQvYmVmb3JlNi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE3M2QxYTQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2RlZmVyRmluYWxBc3NpZ25tZW50L2JlZm9yZTYuamF2YQpAQCAtMCwwICsxLDEwIEBACisvLyAiRGVmZXIgYXNzaWdubWVudCB0byAnbicgdXNpbmcgdGVtcCB2YXJpYWJsZSIgInRydWUiCitpbXBvcnQgamF2YS5pby4qOworCitjbGFzcyBhIHsKKyAgICBmaW5hbCBpbnQgbjsKKyAgICB7CisgICAgICAgIG49MzsKKyAgICAgICAgPGNhcmV0Pm49MzsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2RlZmVyRmluYWxBc3NpZ25tZW50L2JlZm9yZTcuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvZGVmZXJGaW5hbEFzc2lnbm1lbnQvYmVmb3JlNy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNhNTAyMDUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2RlZmVyRmluYWxBc3NpZ25tZW50L2JlZm9yZTcuamF2YQpAQCAtMCwwICsxLDEwIEBACisvLyAiRGVmZXIgYXNzaWdubWVudCB0byAnbicgdXNpbmcgdGVtcCB2YXJpYWJsZSIgInRydWUiCitpbXBvcnQgamF2YS5pby4qOworCitjbGFzcyBhIHsKKyAgICBmaW5hbCBpbnQgbjsKKyAgICBhKGludCBuKSB7CisgICAgICAgIHRoaXMubj1uOworICAgICAgICA8Y2FyZXQ+dGhpcy5uPW47CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9kZWZlckZpbmFsQXNzaWdubWVudC9iZWZvcmU4LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2RlZmVyRmluYWxBc3NpZ25tZW50L2JlZm9yZTguamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yOTU2NjM0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9kZWZlckZpbmFsQXNzaWdubWVudC9iZWZvcmU4LmphdmEKQEAgLTAsMCArMSwxNiBAQAorLy8gIkRlZmVyIGFzc2lnbm1lbnQgdG8gJ24nIHVzaW5nIHRlbXAgdmFyaWFibGUiICJ0cnVlIgoraW1wb3J0IGphdmEuaW8uKjsKKworY2xhc3MgYSB7CisgICAgdm9pZCBmKElucHV0U3RyZWFtIGluKSB7CisgICAgICAgIGZpbmFsIGludCBuOworICAgICAgICB0cnkgeworICAgICAgICAgICAgbiA9IGluLnJlYWQoKTsKKyAgICAgICAgfSBjYXRjaCAoSU9FeGNlcHRpb24gZSkgeworICAgICAgICAgICAgPGNhcmV0Pm4gPSAtMTsKKyAgICAgICAgICAgIGYoaW4pOworICAgICAgICB9CisKKyAgICAgICAgaW50IHkgPSBuOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvZGVsZWdhdGVXaXRoRGVmYXVsdFZhbHVlL2FmdGVyMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9kZWxlZ2F0ZVdpdGhEZWZhdWx0VmFsdWUvYWZ0ZXIxLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjM3YmFlMgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvZGVsZWdhdGVXaXRoRGVmYXVsdFZhbHVlL2FmdGVyMS5qYXZhCkBAIC0wLDAgKzEsOSBAQAorLy8gIkdlbmVyYXRlIGRlbGVnYXRlZCBtZXRob2Qgd2l0aCBkZWZhdWx0IHBhcmFtZXRlciB2YWx1ZSIgInRydWUiCitjbGFzcyBUZXN0IHsKKyAgICB2b2lkIGZvbygpIHsKKyAgICAgIGZvbyg8Y2FyZXQ+KTsKKyAgfQorCisgICAgdm9pZCBmb28oaW50IGlpKXsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvZGVsZWdhdGVXaXRoRGVmYXVsdFZhbHVlL2FmdGVyQWJzdHJhY3RNZXRob2QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvZGVsZWdhdGVXaXRoRGVmYXVsdFZhbHVlL2FmdGVyQWJzdHJhY3RNZXRob2QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZWU4ZjBiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9kZWxlZ2F0ZVdpdGhEZWZhdWx0VmFsdWUvYWZ0ZXJBYnN0cmFjdE1ldGhvZC5qYXZhCkBAIC0wLDAgKzEsOCBAQAorLy8gIkdlbmVyYXRlIGRlbGVnYXRlZCBtZXRob2Qgd2l0aCBkZWZhdWx0IHBhcmFtZXRlciB2YWx1ZSIgInRydWUiCithYnN0cmFjdCBjbGFzcyBUZXN0IHsKKyAgICBpbnQgZm9vKGJvb2xlYW4uLi4gYXJncykgeworICAgICAgcmV0dXJuIGZvbyg8Y2FyZXQ+LCBhcmdzKTsKKyAgfQorCisgICAgYWJzdHJhY3QgaW50IGZvbyhpbnQgaWksIGJvb2xlYW4uLi4gYXJncyk7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9kZWxlZ2F0ZVdpdGhEZWZhdWx0VmFsdWUvYWZ0ZXJDb21tZW50c0luQm9keS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9kZWxlZ2F0ZVdpdGhEZWZhdWx0VmFsdWUvYWZ0ZXJDb21tZW50c0luQm9keS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE5MDQ0NzYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2RlbGVnYXRlV2l0aERlZmF1bHRWYWx1ZS9hZnRlckNvbW1lbnRzSW5Cb2R5LmphdmEKQEAgLTAsMCArMSwxMyBAQAorLy8gIkdlbmVyYXRlIGRlbGVnYXRlZCBtZXRob2Qgd2l0aCBkZWZhdWx0IHBhcmFtZXRlciB2YWx1ZSIgInRydWUiCitjbGFzcyBUZXN0IHsKKyAgICBpbnQgZm9vKCkgeworICAgICAgcmV0dXJuIGZvbygpOworICB9CisKKyAgICBpbnQgZm9vKGludCBpaSl7CisgICAgLy9jb21tZW50MQorICAgIFN5c3RlbS5vdXQucHJpbnRsbigiIik7CisgICAgLy9jb21tZW50MgorICAgIHJldHVybiAxOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9kZWxlZ2F0ZVdpdGhEZWZhdWx0VmFsdWUvYWZ0ZXJDb25zdHJ1Y3Rvci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9kZWxlZ2F0ZVdpdGhEZWZhdWx0VmFsdWUvYWZ0ZXJDb25zdHJ1Y3Rvci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJiYTRkZTIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2RlbGVnYXRlV2l0aERlZmF1bHRWYWx1ZS9hZnRlckNvbnN0cnVjdG9yLmphdmEKQEAgLTAsMCArMSw4IEBACisvLyAiR2VuZXJhdGUgZGVsZWdhdGVkIG1ldGhvZCB3aXRoIGRlZmF1bHQgcGFyYW1ldGVyIHZhbHVlIiAidHJ1ZSIKK2NsYXNzIFRlc3QgeworICAgIFRlc3QoKSB7CisgICAgICB0aGlzKDxjYXJldD4pOworICB9CisKKyAgICBUZXN0KGludCBpaSl7fQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvZGVsZWdhdGVXaXRoRGVmYXVsdFZhbHVlL2FmdGVySmF2YWRvYy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9kZWxlZ2F0ZVdpdGhEZWZhdWx0VmFsdWUvYWZ0ZXJKYXZhZG9jLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODYzN2FhZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvZGVsZWdhdGVXaXRoRGVmYXVsdFZhbHVlL2FmdGVySmF2YWRvYy5qYXZhCkBAIC0wLDAgKzEsMTQgQEAKKy8vICJHZW5lcmF0ZSBkZWxlZ2F0ZWQgbWV0aG9kIHdpdGggZGVmYXVsdCBwYXJhbWV0ZXIgdmFsdWUiICJ0cnVlIgorY2xhc3MgVGVzdCB7CisgICAgLyoqICAKKyAgICovCisgIHZvaWQgZm9vKCkgeworICAgICAgZm9vKCk7CisgIH0KKworICAgIC8qKgorICAgKiBAcGFyYW0gaQorICAgKi8KKyAgdm9pZCBmb28oaW50IGlpKXsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvZGVsZWdhdGVXaXRoRGVmYXVsdFZhbHVlL2FmdGVyUmV0dXJuVmFsdWUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvZGVsZWdhdGVXaXRoRGVmYXVsdFZhbHVlL2FmdGVyUmV0dXJuVmFsdWUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zOWM4MTg2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9kZWxlZ2F0ZVdpdGhEZWZhdWx0VmFsdWUvYWZ0ZXJSZXR1cm5WYWx1ZS5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKKy8vICJHZW5lcmF0ZSBkZWxlZ2F0ZWQgbWV0aG9kIHdpdGggZGVmYXVsdCBwYXJhbWV0ZXIgdmFsdWUiICJ0cnVlIgorY2xhc3MgVGVzdCB7CisgICAgaW50IGZvbygpIHsKKyAgICAgIHJldHVybiBmb28oPGNhcmV0Pik7CisgIH0KKworICAgIGludCBmb28oaW50IGlpKXsKKyAgICByZXR1cm4gMTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvZGVsZWdhdGVXaXRoRGVmYXVsdFZhbHVlL2FmdGVyVHlwZVBhcmFtcy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9kZWxlZ2F0ZVdpdGhEZWZhdWx0VmFsdWUvYWZ0ZXJUeXBlUGFyYW1zLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzZkNmViZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvZGVsZWdhdGVXaXRoRGVmYXVsdFZhbHVlL2FmdGVyVHlwZVBhcmFtcy5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKKy8vICJHZW5lcmF0ZSBkZWxlZ2F0ZWQgbWV0aG9kIHdpdGggZGVmYXVsdCBwYXJhbWV0ZXIgdmFsdWUiICJ0cnVlIgorY2xhc3MgVGVzdCB7CisgICAgPFQ+IGludCBmb28oYm9vbGVhbi4uLiBhcmdzKSB7CisgICAgICByZXR1cm4gZm9vKDxjYXJldD4sIGFyZ3MpOworICB9CisKKyAgICA8VD4gaW50IGZvbyhUIGlpLCBib29sZWFuLi4uIGFyZ3MpeworICAgIHJldHVybiAxOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9kZWxlZ2F0ZVdpdGhEZWZhdWx0VmFsdWUvYWZ0ZXJWYXJhcmdzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2RlbGVnYXRlV2l0aERlZmF1bHRWYWx1ZS9hZnRlclZhcmFyZ3MuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMTY0NTc5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9kZWxlZ2F0ZVdpdGhEZWZhdWx0VmFsdWUvYWZ0ZXJWYXJhcmdzLmphdmEKQEAgLTAsMCArMSwxMCBAQAorLy8gIkdlbmVyYXRlIGRlbGVnYXRlZCBtZXRob2Qgd2l0aCBkZWZhdWx0IHBhcmFtZXRlciB2YWx1ZSIgInRydWUiCitjbGFzcyBUZXN0IHsKKyAgICBpbnQgZm9vKGJvb2xlYW4uLi4gYXJncykgeworICAgICAgcmV0dXJuIGZvbyg8Y2FyZXQ+LCBhcmdzKTsKKyAgfQorCisgICAgaW50IGZvbyhpbnQgaWksIGJvb2xlYW4uLi4gYXJncyl7CisgICAgcmV0dXJuIDE7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2RlbGVnYXRlV2l0aERlZmF1bHRWYWx1ZS9iZWZvcmUxLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2RlbGVnYXRlV2l0aERlZmF1bHRWYWx1ZS9iZWZvcmUxLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjJiNzc2MAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvZGVsZWdhdGVXaXRoRGVmYXVsdFZhbHVlL2JlZm9yZTEuamF2YQpAQCAtMCwwICsxLDUgQEAKKy8vICJHZW5lcmF0ZSBkZWxlZ2F0ZWQgbWV0aG9kIHdpdGggZGVmYXVsdCBwYXJhbWV0ZXIgdmFsdWUiICJ0cnVlIgorY2xhc3MgVGVzdCB7CisgIHZvaWQgZm9vKGludCBpPGNhcmV0PmkpeworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9kZWxlZ2F0ZVdpdGhEZWZhdWx0VmFsdWUvYmVmb3JlQWJzdHJhY3RNZXRob2QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvZGVsZWdhdGVXaXRoRGVmYXVsdFZhbHVlL2JlZm9yZUFic3RyYWN0TWV0aG9kLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTI5OGJjNwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvZGVsZWdhdGVXaXRoRGVmYXVsdFZhbHVlL2JlZm9yZUFic3RyYWN0TWV0aG9kLmphdmEKQEAgLTAsMCArMSw0IEBACisvLyAiR2VuZXJhdGUgZGVsZWdhdGVkIG1ldGhvZCB3aXRoIGRlZmF1bHQgcGFyYW1ldGVyIHZhbHVlIiAidHJ1ZSIKK2Fic3RyYWN0IGNsYXNzIFRlc3QgeworICBhYnN0cmFjdCBpbnQgZm9vKGludCBpPGNhcmV0PmksIGJvb2xlYW4uLi4gYXJncyk7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9kZWxlZ2F0ZVdpdGhEZWZhdWx0VmFsdWUvYmVmb3JlQ29tbWVudHNJbkJvZHkuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvZGVsZWdhdGVXaXRoRGVmYXVsdFZhbHVlL2JlZm9yZUNvbW1lbnRzSW5Cb2R5LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmRkNmZjOAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvZGVsZWdhdGVXaXRoRGVmYXVsdFZhbHVlL2JlZm9yZUNvbW1lbnRzSW5Cb2R5LmphdmEKQEAgLTAsMCArMSw5IEBACisvLyAiR2VuZXJhdGUgZGVsZWdhdGVkIG1ldGhvZCB3aXRoIGRlZmF1bHQgcGFyYW1ldGVyIHZhbHVlIiAidHJ1ZSIKK2NsYXNzIFRlc3QgeworICBpbnQgZm9vKGludCBpPGNhcmV0PmkpeworICAgIC8vY29tbWVudDEKKyAgICBTeXN0ZW0ub3V0LnByaW50bG4oIiIpOworICAgIC8vY29tbWVudDIKKyAgICByZXR1cm4gMTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvZGVsZWdhdGVXaXRoRGVmYXVsdFZhbHVlL2JlZm9yZUNvbnN0cnVjdG9yLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2RlbGVnYXRlV2l0aERlZmF1bHRWYWx1ZS9iZWZvcmVDb25zdHJ1Y3Rvci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBkNzVjMzkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2RlbGVnYXRlV2l0aERlZmF1bHRWYWx1ZS9iZWZvcmVDb25zdHJ1Y3Rvci5qYXZhCkBAIC0wLDAgKzEsNCBAQAorLy8gIkdlbmVyYXRlIGRlbGVnYXRlZCBtZXRob2Qgd2l0aCBkZWZhdWx0IHBhcmFtZXRlciB2YWx1ZSIgInRydWUiCitjbGFzcyBUZXN0IHsKKyAgVGVzdChpbnQgaTxjYXJldD5pKXt9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9kZWxlZ2F0ZVdpdGhEZWZhdWx0VmFsdWUvYmVmb3JlRXhpc3Rpbk1ldGhvZC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9kZWxlZ2F0ZVdpdGhEZWZhdWx0VmFsdWUvYmVmb3JlRXhpc3Rpbk1ldGhvZC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBkNWZmMWIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2RlbGVnYXRlV2l0aERlZmF1bHRWYWx1ZS9iZWZvcmVFeGlzdGluTWV0aG9kLmphdmEKQEAgLTAsMCArMSw2IEBACisvLyAiR2VuZXJhdGUgZGVsZWdhdGVkIG1ldGhvZCB3aXRoIGRlZmF1bHQgcGFyYW1ldGVyIHZhbHVlIiAiZmFsc2UiCitjbGFzcyBUZXN0IHsKKyAgdm9pZCBmb28oKXt9CisgIHZvaWQgZm9vKGludCBpPGNhcmV0PmkpeworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9kZWxlZ2F0ZVdpdGhEZWZhdWx0VmFsdWUvYmVmb3JlSW50ZXJmYWNlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2RlbGVnYXRlV2l0aERlZmF1bHRWYWx1ZS9iZWZvcmVJbnRlcmZhY2UuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMThmZGJhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9kZWxlZ2F0ZVdpdGhEZWZhdWx0VmFsdWUvYmVmb3JlSW50ZXJmYWNlLmphdmEKQEAgLTAsMCArMSw0IEBACisvLyAiR2VuZXJhdGUgZGVsZWdhdGVkIG1ldGhvZCB3aXRoIGRlZmF1bHQgcGFyYW1ldGVyIHZhbHVlIiAiZmFsc2UiCitpbnRlcmZhY2UgVGVzdCB7CisgIHZvaWQgZm9vKGludCBpPGNhcmV0PmkpOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvZGVsZWdhdGVXaXRoRGVmYXVsdFZhbHVlL2JlZm9yZUphdmFkb2MuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvZGVsZWdhdGVXaXRoRGVmYXVsdFZhbHVlL2JlZm9yZUphdmFkb2MuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NmFjYzAzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9kZWxlZ2F0ZVdpdGhEZWZhdWx0VmFsdWUvYmVmb3JlSmF2YWRvYy5qYXZhCkBAIC0wLDAgKzEsOCBAQAorLy8gIkdlbmVyYXRlIGRlbGVnYXRlZCBtZXRob2Qgd2l0aCBkZWZhdWx0IHBhcmFtZXRlciB2YWx1ZSIgInRydWUiCitjbGFzcyBUZXN0IHsKKyAgLyoqCisgICAqIEBwYXJhbSBpCisgICAqLworICB2b2lkIGZvbyhpbnQgaTxjYXJldD5pKXsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvZGVsZWdhdGVXaXRoRGVmYXVsdFZhbHVlL2JlZm9yZVJldHVyblZhbHVlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2RlbGVnYXRlV2l0aERlZmF1bHRWYWx1ZS9iZWZvcmVSZXR1cm5WYWx1ZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY3N2QxNzQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2RlbGVnYXRlV2l0aERlZmF1bHRWYWx1ZS9iZWZvcmVSZXR1cm5WYWx1ZS5qYXZhCkBAIC0wLDAgKzEsNiBAQAorLy8gIkdlbmVyYXRlIGRlbGVnYXRlZCBtZXRob2Qgd2l0aCBkZWZhdWx0IHBhcmFtZXRlciB2YWx1ZSIgInRydWUiCitjbGFzcyBUZXN0IHsKKyAgaW50IGZvbyhpbnQgaTxjYXJldD5pKXsKKyAgICByZXR1cm4gMTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvZGVsZWdhdGVXaXRoRGVmYXVsdFZhbHVlL2JlZm9yZVR5cGVQYXJhbXMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvZGVsZWdhdGVXaXRoRGVmYXVsdFZhbHVlL2JlZm9yZVR5cGVQYXJhbXMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xOWU3N2Q0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9kZWxlZ2F0ZVdpdGhEZWZhdWx0VmFsdWUvYmVmb3JlVHlwZVBhcmFtcy5qYXZhCkBAIC0wLDAgKzEsNiBAQAorLy8gIkdlbmVyYXRlIGRlbGVnYXRlZCBtZXRob2Qgd2l0aCBkZWZhdWx0IHBhcmFtZXRlciB2YWx1ZSIgInRydWUiCitjbGFzcyBUZXN0IHsKKyAgPFQ+IGludCBmb28oVCBpPGNhcmV0PmksIGJvb2xlYW4uLi4gYXJncyl7CisgICAgcmV0dXJuIDE7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2RlbGVnYXRlV2l0aERlZmF1bHRWYWx1ZS9iZWZvcmVWYXJhcmdzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2RlbGVnYXRlV2l0aERlZmF1bHRWYWx1ZS9iZWZvcmVWYXJhcmdzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODY1ZTg2ZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvZGVsZWdhdGVXaXRoRGVmYXVsdFZhbHVlL2JlZm9yZVZhcmFyZ3MuamF2YQpAQCAtMCwwICsxLDYgQEAKKy8vICJHZW5lcmF0ZSBkZWxlZ2F0ZWQgbWV0aG9kIHdpdGggZGVmYXVsdCBwYXJhbWV0ZXIgdmFsdWUiICJ0cnVlIgorY2xhc3MgVGVzdCB7CisgIGludCBmb28oaW50IGk8Y2FyZXQ+aSwgYm9vbGVhbi4uLiBhcmdzKXsKKyAgICByZXR1cm4gMTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvZGVsZXRlQ2F0Y2gvYWZ0ZXIxLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2RlbGV0ZUNhdGNoL2FmdGVyMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk1YzQwNmYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2RlbGV0ZUNhdGNoL2FmdGVyMS5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKKy8vICJEZWxldGUgY2F0Y2ggZm9yICdqYXZhLmlvLklPRXhjZXB0aW9uJyIgInRydWUiCitpbXBvcnQgamF2YS5pby4qOworCitjbGFzcyBhIHsKKyB2b2lkIGYoaW50IGkpIHsKKyAgICAgaW50IHAgPSAwOzxjYXJldD4KKworIH0KK30KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9kZWxldGVDYXRjaC9hZnRlcjIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvZGVsZXRlQ2F0Y2gvYWZ0ZXIyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDQwNDlhNgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvZGVsZXRlQ2F0Y2gvYWZ0ZXIyLmphdmEKQEAgLTAsMCArMSwxMyBAQAorLy8gIkRlbGV0ZSBjYXRjaCBmb3IgJ2phdmEuaW8uSU9FeGNlcHRpb24nIiAidHJ1ZSIKK2ltcG9ydCBqYXZhLmlvLio7CisKK2NsYXNzIGEgeworIHZvaWQgZihpbnQgaSkgeworICAgICB0cnkgeworICAgICAgICAgaW50IHAgPSAwOworICAgICB9PGNhcmV0PiBjYXRjaCAoRXhjZXB0aW9uIGUpICB7CisgICAgIH0KKworIH0KK30KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9kZWxldGVDYXRjaC9hZnRlcjQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvZGVsZXRlQ2F0Y2gvYWZ0ZXI0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmQzNzFhYwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvZGVsZXRlQ2F0Y2gvYWZ0ZXI0LmphdmEKQEAgLTAsMCArMSwxMyBAQAorLy8gIkRlbGV0ZSBjYXRjaCBmb3IgJ2phdmEuaW8uSU9FeGNlcHRpb24nIiAidHJ1ZSIKK2ltcG9ydCBqYXZhLmlvLio7CisKK2NsYXNzIGMgeworICB2b2lkIGYoKSB7CisgICAgICBpbnQgaWQgPSAwOworICAgICAgdHJ5IHsKKworICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKKworICAgICAgfTxjYXJldD4KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvZGVsZXRlQ2F0Y2gvYWZ0ZXI1LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2RlbGV0ZUNhdGNoL2FmdGVyNS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc3OTIyZjAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2RlbGV0ZUNhdGNoL2FmdGVyNS5qYXZhCkBAIC0wLDAgKzEsMTMgQEAKKy8vICJEZWxldGUgY2F0Y2ggZm9yICdqYXZhLmlvLklPRXhjZXB0aW9uJyIgInRydWUiCitpbXBvcnQgamF2YS5pby4qOworCitjbGFzcyBhIHsKKyB2b2lkIGYoaW50IGkpIHsKKyAgICAgLy8gY29tbTEKKyAgICAgaW50IHAgPSAwOworCisgICAgIC8vIGNvbW0yCisKKyB9Cit9CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvZGVsZXRlQ2F0Y2gvYWZ0ZXI2LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2RlbGV0ZUNhdGNoL2FmdGVyNi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZkNWYwY2EKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2RlbGV0ZUNhdGNoL2FmdGVyNi5qYXZhCkBAIC0wLDAgKzEsMTEgQEAKKy8vICJEZWxldGUgY2F0Y2ggZm9yICdqYXZhLmlvLklPRXhjZXB0aW9uJyIgInRydWUiCitpbXBvcnQgamF2YS5pby4qOworCitjbGFzcyBhIHsKKyAgICB2b2lkIGYoYm9vbGVhbiBmKSB7CisgICAgICAgIGlmIChmKSB7CisgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oKTsKKyAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigpOworICAgICAgICB9CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9kZWxldGVDYXRjaC9iZWZvcmUxLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2RlbGV0ZUNhdGNoL2JlZm9yZTEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZjRmMjFmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9kZWxldGVDYXRjaC9iZWZvcmUxLmphdmEKQEAgLTAsMCArMSwxNCBAQAorLy8gIkRlbGV0ZSBjYXRjaCBmb3IgJ2phdmEuaW8uSU9FeGNlcHRpb24nIiAidHJ1ZSIKK2ltcG9ydCBqYXZhLmlvLio7CisKK2NsYXNzIGEgeworIHZvaWQgZihpbnQgaSkgeworICAgICB0cnkgeworICAgICAgICAgaW50IHAgPSAwOworICAgICB9CisgICAgIGNhdGNoICg8Y2FyZXQ+SU9FeGNlcHRpb24gZSkgIHsKKyAgICAgfQorCisgfQorfQorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2RlbGV0ZUNhdGNoL2JlZm9yZTIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvZGVsZXRlQ2F0Y2gvYmVmb3JlMi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNlY2U4ZWUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2RlbGV0ZUNhdGNoL2JlZm9yZTIuamF2YQpAQCAtMCwwICsxLDE2IEBACisvLyAiRGVsZXRlIGNhdGNoIGZvciAnamF2YS5pby5JT0V4Y2VwdGlvbiciICJ0cnVlIgoraW1wb3J0IGphdmEuaW8uKjsKKworY2xhc3MgYSB7Cisgdm9pZCBmKGludCBpKSB7CisgICAgIHRyeSB7CisgICAgICAgICBpbnQgcCA9IDA7CisgICAgIH0KKyAgICAgY2F0Y2ggKDxjYXJldD5JT0V4Y2VwdGlvbiBlKSAgeworICAgICB9CisgICAgIGNhdGNoIChFeGNlcHRpb24gZSkgIHsKKyAgICAgfQorCisgfQorfQorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2RlbGV0ZUNhdGNoL2JlZm9yZTMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvZGVsZXRlQ2F0Y2gvYmVmb3JlMy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI2MTg2NDgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2RlbGV0ZUNhdGNoL2JlZm9yZTMuamF2YQpAQCAtMCwwICsxLDE3IEBACisvLyAiRGVsZXRlIGNhdGNoIGZvciAnamF2YS5pby5JT0V4Y2VwdGlvbiciICJmYWxzZSIKK2ltcG9ydCBqYXZhLmlvLio7CisKK2NsYXNzIGEgeworIHZvaWQgZihpbnQgaSkgeworICAgICB0cnkgeworICAgICAgICAgaW50IHAgPSAwOworICAgICAgICAgdGhyb3cgbmV3IElPRXhjZXB0aW9uKCk7CisgICAgIH0KKyAgICAgY2F0Y2ggKDxjYXJldD5JT0V4Y2VwdGlvbiBlKSAgeworICAgICB9CisgICAgIGNhdGNoIChFeGNlcHRpb24gZSkgIHsKKyAgICAgfQorCisgfQorfQorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2RlbGV0ZUNhdGNoL2JlZm9yZTQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvZGVsZXRlQ2F0Y2gvYmVmb3JlNC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk1ZGE5YWIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2RlbGV0ZUNhdGNoL2JlZm9yZTQuamF2YQpAQCAtMCwwICsxLDE4IEBACisvLyAiRGVsZXRlIGNhdGNoIGZvciAnamF2YS5pby5JT0V4Y2VwdGlvbiciICJ0cnVlIgoraW1wb3J0IGphdmEuaW8uKjsKKworY2xhc3MgYyB7CisgIHZvaWQgZigpIHsKKyAgICB0cnkgeworICAgICAgaW50IGlkID0gMDsKKyAgICAgIHRyeSB7CisKKyAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CisKKyAgICAgIH0KKyAgICB9CisgICAgY2F0Y2ggKDxjYXJldD5JT0V4Y2VwdGlvbiBlKSB7CisKKyAgICB9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2RlbGV0ZUNhdGNoL2JlZm9yZTUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvZGVsZXRlQ2F0Y2gvYmVmb3JlNS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg5NjY3ODcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2RlbGV0ZUNhdGNoL2JlZm9yZTUuamF2YQpAQCAtMCwwICsxLDE4IEBACisvLyAiRGVsZXRlIGNhdGNoIGZvciAnamF2YS5pby5JT0V4Y2VwdGlvbiciICJ0cnVlIgoraW1wb3J0IGphdmEuaW8uKjsKKworY2xhc3MgYSB7Cisgdm9pZCBmKGludCBpKSB7CisgICAgIHRyeSB7CisgICAgICAgICAvLyBjb21tMQorICAgICAgICAgaW50IHAgPSAwOworCisgICAgICAgICAvLyBjb21tMgorCisgICAgIH0KKyAgICAgY2F0Y2ggKDxjYXJldD5JT0V4Y2VwdGlvbiBlKSAgeworICAgICB9CisKKyB9Cit9CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvZGVsZXRlQ2F0Y2gvYmVmb3JlNi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9kZWxldGVDYXRjaC9iZWZvcmU2LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGI5NTRmOQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvZGVsZXRlQ2F0Y2gvYmVmb3JlNi5qYXZhCkBAIC0wLDAgKzEsMTMgQEAKKy8vICJEZWxldGUgY2F0Y2ggZm9yICdqYXZhLmlvLklPRXhjZXB0aW9uJyIgInRydWUiCitpbXBvcnQgamF2YS5pby4qOworCitjbGFzcyBhIHsKKyAgICB2b2lkIGYoYm9vbGVhbiBmKSB7CisgICAgICAgIGlmIChmKQorICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oKTsKKyAgICAgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oKTsKKyAgICAgICAgICAgIH0gY2F0Y2ggKDxjYXJldD5JT0V4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICB9CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9kZWxldGVNdWx0aUNhdGNoL2FmdGVyMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9kZWxldGVNdWx0aUNhdGNoL2FmdGVyMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM5MDIwNWIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2RlbGV0ZU11bHRpQ2F0Y2gvYWZ0ZXIxLmphdmEKQEAgLTAsMCArMSwxMiBAQAorLy8gIkRlbGV0ZSBjYXRjaCBmb3IgJ2phdmEuaW8uSU9FeGNlcHRpb24nIiAidHJ1ZSIKK2ltcG9ydCBqYXZhLmlvLio7CisKK2NsYXNzIEMgeworICB2b2lkIG0oKSB7CisgICAgdHJ5IHsKKyAgICAgIGludCBwID0gMDsKKyAgICB9CisgICAgY2F0Y2ggKC8qc29tZXRoaWhnKi8gUnVudGltZUV4Y2VwdGlvbiBlKSB7CisgICAgfQorICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2RlbGV0ZU11bHRpQ2F0Y2gvYWZ0ZXIyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2RlbGV0ZU11bHRpQ2F0Y2gvYWZ0ZXIyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmNkMjhkMwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvZGVsZXRlTXVsdGlDYXRjaC9hZnRlcjIuamF2YQpAQCAtMCwwICsxLDEyIEBACisvLyAiRGVsZXRlIGNhdGNoIGZvciAnamF2YS5pby5GaWxlTm90Rm91bmRFeGNlcHRpb24nIiAidHJ1ZSIKK2ltcG9ydCBqYXZhLmlvLio7CisKK2NsYXNzIEMgeworICB2b2lkIG0oKSB7CisgICAgdHJ5IHsKKyAgICAgIGludCBwID0gMDsKKyAgICB9CisgICAgY2F0Y2ggKEVPRkV4Y2VwdGlvbiAvKnNvbWV0aGloZyovIGUpIHsKKyAgICB9CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvZGVsZXRlTXVsdGlDYXRjaC9hZnRlcjMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvZGVsZXRlTXVsdGlDYXRjaC9hZnRlcjMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NzZjNDljCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9kZWxldGVNdWx0aUNhdGNoL2FmdGVyMy5qYXZhCkBAIC0wLDAgKzEsMTIgQEAKKy8vICJEZWxldGUgY2F0Y2ggZm9yICdqYXZhLmlvLkZpbGVOb3RGb3VuZEV4Y2VwdGlvbiciICJ0cnVlIgoraW1wb3J0IGphdmEuaW8uKjsKKworY2xhc3MgQyB7CisgIHZvaWQgbSgpIHsKKyAgICB0cnkgeworICAgICAgaW50IHAgPSAwOworICAgIH0KKyAgICBjYXRjaCAoRU9GRXhjZXB0aW9uIHwgUnVudGltZUV4Y2VwdGlvbiBlKSB7CisgICAgfQorICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2RlbGV0ZU11bHRpQ2F0Y2gvYmVmb3JlMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9kZWxldGVNdWx0aUNhdGNoL2JlZm9yZTEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYjE0YWU0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9kZWxldGVNdWx0aUNhdGNoL2JlZm9yZTEuamF2YQpAQCAtMCwwICsxLDEyIEBACisvLyAiRGVsZXRlIGNhdGNoIGZvciAnamF2YS5pby5JT0V4Y2VwdGlvbiciICJ0cnVlIgoraW1wb3J0IGphdmEuaW8uKjsKKworY2xhc3MgQyB7CisgIHZvaWQgbSgpIHsKKyAgICB0cnkgeworICAgICAgaW50IHAgPSAwOworICAgIH0KKyAgICBjYXRjaCAoPGNhcmV0PklPRXhjZXB0aW9uIHwgLypzb21ldGhpaGcqLyBSdW50aW1lRXhjZXB0aW9uIGUpIHsKKyAgICB9CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvZGVsZXRlTXVsdGlDYXRjaC9iZWZvcmUyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2RlbGV0ZU11bHRpQ2F0Y2gvYmVmb3JlMi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJjNmJmNTAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2RlbGV0ZU11bHRpQ2F0Y2gvYmVmb3JlMi5qYXZhCkBAIC0wLDAgKzEsMTIgQEAKKy8vICJEZWxldGUgY2F0Y2ggZm9yICdqYXZhLmlvLkZpbGVOb3RGb3VuZEV4Y2VwdGlvbiciICJ0cnVlIgoraW1wb3J0IGphdmEuaW8uKjsKKworY2xhc3MgQyB7CisgIHZvaWQgbSgpIHsKKyAgICB0cnkgeworICAgICAgaW50IHAgPSAwOworICAgIH0KKyAgICBjYXRjaCAoRU9GRXhjZXB0aW9uIHwgPGNhcmV0PkZpbGVOb3RGb3VuZEV4Y2VwdGlvbiAvKnNvbWV0aGloZyovIGUpIHsKKyAgICB9CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvZGVsZXRlTXVsdGlDYXRjaC9iZWZvcmUzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2RlbGV0ZU11bHRpQ2F0Y2gvYmVmb3JlMy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNiZmJlNGMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2RlbGV0ZU11bHRpQ2F0Y2gvYmVmb3JlMy5qYXZhCkBAIC0wLDAgKzEsMTIgQEAKKy8vICJEZWxldGUgY2F0Y2ggZm9yICdqYXZhLmlvLkZpbGVOb3RGb3VuZEV4Y2VwdGlvbiciICJ0cnVlIgoraW1wb3J0IGphdmEuaW8uKjsKKworY2xhc3MgQyB7CisgIHZvaWQgbSgpIHsKKyAgICB0cnkgeworICAgICAgaW50IHAgPSAwOworICAgIH0KKyAgICBjYXRjaCAoRU9GRXhjZXB0aW9uIHwgPGNhcmV0PkZpbGVOb3RGb3VuZEV4Y2VwdGlvbiB8IFJ1bnRpbWVFeGNlcHRpb24gZSkgeworICAgIH0KKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9lbXB0eUludGVudGlvbi9Mb3dQcmlvcml0eS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9lbXB0eUludGVudGlvbi9Mb3dQcmlvcml0eS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE2OTZlNmUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2VtcHR5SW50ZW50aW9uL0xvd1ByaW9yaXR5LmphdmEKQEAgLTAsMCArMSw2IEBACitjbGFzcyBUZXN0IHsKKyAgdm9pZCBtZXRob2QoKSB7CisgICAgZmluYWwgU3RyaW5nIGkgPSAiIjsKKyAgICBpPGNhcmV0PiA9ICIiOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9lbXB0eUludGVudGlvbi9YLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2VtcHR5SW50ZW50aW9uL1guamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZjZmNDc0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9lbXB0eUludGVudGlvbi9YLmphdmEKQEAgLTAsMCArMSwzIEBACitjbGFzcyBYIHsKKyAgU3RyaW5nIHMgPSAiYWI8Y2FyZXQ+IjsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2VuYWJsZU9wdGltaXplSW1wb3J0c09uVGhlRmx5L2JlZm9yZTEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvZW5hYmxlT3B0aW1pemVJbXBvcnRzT25UaGVGbHkvYmVmb3JlMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMxNWQ1MjUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2VuYWJsZU9wdGltaXplSW1wb3J0c09uVGhlRmx5L2JlZm9yZTEuamF2YQpAQCAtMCwwICsxLDQgQEAKKy8vICJFbmFibGUgJ1NldHRpbmdzfENvZGUgU3R5bGV8SW1wb3J0c3xPcHRpbWl6ZSBpbXBvcnRzIG9uIHRoZSBmbHknIiAidHJ1ZSIKK2ltcG9ydCBqYXZhLmxhbmcuU3RyaW5nPGNhcmV0PjsKKworY2xhc3MgYyB7fQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvZW5jYXBzdWxhdGVGaWVsZC9iZWZvcmVGaW5hbC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9lbmNhcHN1bGF0ZUZpZWxkL2JlZm9yZUZpbmFsLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTA4MmIwMQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvZW5jYXBzdWxhdGVGaWVsZC9iZWZvcmVGaW5hbC5qYXZhCkBAIC0wLDAgKzEsMTMgQEAKKy8vICJFbmNhcHN1bGF0ZSBmaWVsZCIgImZhbHNlIgorCitjbGFzcyBBIHsKKyAgcHVibGljIGZpbmFsIGJvb2xlYW4gbV9ib29sOworfQorCitwdWJsaWMgY2xhc3MgQiB7CisgIHZvaWQgbWV0aG9kKCkgeworICAgIEEgYSA9IG5ldyBBKCk7CisKKyAgICBhLm1fYm88Y2FyZXQ+b2wgPSB0cnVlOworICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2VuY2Fwc3VsYXRlRmllbGQvYmVmb3JlUHJpdmF0ZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9lbmNhcHN1bGF0ZUZpZWxkL2JlZm9yZVByaXZhdGUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNjFkMTUyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9lbmNhcHN1bGF0ZUZpZWxkL2JlZm9yZVByaXZhdGUuamF2YQpAQCAtMCwwICsxLDEzIEBACisvLyAiRW5jYXBzdWxhdGUgZmllbGQiICJmYWxzZSIKKworY2xhc3MgQSB7CisgIHByaXZhdGUgYm9vbGVhbiBtX2Jvb2w7Cit9CisKK3B1YmxpYyBjbGFzcyBCIHsKKyAgdm9pZCBtZXRob2QoKSB7CisgICAgQSBhID0gbmV3IEEoKTsKKworICAgIGEubV9ibzxjYXJldD5vbCA9IHRydWU7CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvZW5jYXBzdWxhdGVGaWVsZC9iZWZvcmVUaGlzQ2xhc3MuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvZW5jYXBzdWxhdGVGaWVsZC9iZWZvcmVUaGlzQ2xhc3MuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NzIxYjc1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9lbmNhcHN1bGF0ZUZpZWxkL2JlZm9yZVRoaXNDbGFzcy5qYXZhCkBAIC0wLDAgKzEsOSBAQAorLy8gIkVuY2Fwc3VsYXRlIGZpZWxkIiAiZmFsc2UiCisKK2NsYXNzIEEgeworICBwdWJsaWMgZmluYWwgYm9vbGVhbiBtX2Jvb2w7CisKKyAgdm9pZCBtZXRob2QoKSB7CisgICAgbV9ibzxjYXJldD5vbCA9IHRydWU7CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvZW5jYXBzdWxhdGVGaWVsZC9iZWZvcmVUaGlzQ2xhc3NRdWFsaWZpZWQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvZW5jYXBzdWxhdGVGaWVsZC9iZWZvcmVUaGlzQ2xhc3NRdWFsaWZpZWQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNGFhMTAyYwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvZW5jYXBzdWxhdGVGaWVsZC9iZWZvcmVUaGlzQ2xhc3NRdWFsaWZpZWQuamF2YQpAQCAtMCwwICsxLDkgQEAKKy8vICJFbmNhcHN1bGF0ZSBmaWVsZCIgImZhbHNlIgorCitjbGFzcyBBIHsKKyAgcHVibGljIGZpbmFsIGJvb2xlYW4gbV9ib29sOworCisgIHZvaWQgbWV0aG9kKCkgeworICAgIHRoaXMubV9ibzxjYXJldD5vbCA9IHRydWU7CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvZXhwYW5kU3RhdGljSW1wb3J0L2FmdGVyTXVsdGlwbGVWaWFPbkRlbWFuZC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9leHBhbmRTdGF0aWNJbXBvcnQvYWZ0ZXJNdWx0aXBsZVZpYU9uRGVtYW5kLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTJhNjJiNAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvZXhwYW5kU3RhdGljSW1wb3J0L2FmdGVyTXVsdGlwbGVWaWFPbkRlbWFuZC5qYXZhCkBAIC0wLDAgKzEsOSBAQAorLy8gIkV4cGFuZCBzdGF0aWMgaW1wb3J0IHRvIEFycmF5cy5zb3J0IiAidHJ1ZSIKK2ltcG9ydCBqYXZhLnV0aWwuQXJyYXlzOworCitjbGFzcyBUZXN0IHsKKyAgICBwdWJsaWMgdm9pZCBzZW5kTWVzc2FnZShTdHJpbmcuLi4gZGVzdGluYXRpb25BZGRyZXNzTmFtZXMpIHsKKyAgICAgICAgQXJyYXlzLnNvcnQoZGVzdGluYXRpb25BZGRyZXNzTmFtZXMpOworICAgICAgICBBcnJheXMuYXNMaXN0KGRlc3RpbmF0aW9uQWRkcmVzc05hbWVzKQorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2V4cGFuZFN0YXRpY0ltcG9ydC9hZnRlclNpbmdsZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9leHBhbmRTdGF0aWNJbXBvcnQvYWZ0ZXJTaW5nbGUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MjliMzQ2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9leHBhbmRTdGF0aWNJbXBvcnQvYWZ0ZXJTaW5nbGUuamF2YQpAQCAtMCwwICsxLDggQEAKKy8vICJFeHBhbmQgc3RhdGljIGltcG9ydCB0byBBcnJheXMuc29ydCIgInRydWUiCitpbXBvcnQgamF2YS51dGlsLkFycmF5czsKKworY2xhc3MgVGVzdCB7CisgICAgcHVibGljIHZvaWQgc2VuZE1lc3NhZ2UoU3RyaW5nLi4uIGRlc3RpbmF0aW9uQWRkcmVzc05hbWVzKSB7CisgICAgICAgIEFycmF5cy5zb3J0KGRlc3RpbmF0aW9uQWRkcmVzc05hbWVzKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9leHBhbmRTdGF0aWNJbXBvcnQvYWZ0ZXJTaW5nbGVWaWFPbkRlbWFuZC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9leHBhbmRTdGF0aWNJbXBvcnQvYWZ0ZXJTaW5nbGVWaWFPbkRlbWFuZC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcyOWIzNDYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2V4cGFuZFN0YXRpY0ltcG9ydC9hZnRlclNpbmdsZVZpYU9uRGVtYW5kLmphdmEKQEAgLTAsMCArMSw4IEBACisvLyAiRXhwYW5kIHN0YXRpYyBpbXBvcnQgdG8gQXJyYXlzLnNvcnQiICJ0cnVlIgoraW1wb3J0IGphdmEudXRpbC5BcnJheXM7CisKK2NsYXNzIFRlc3QgeworICAgIHB1YmxpYyB2b2lkIHNlbmRNZXNzYWdlKFN0cmluZy4uLiBkZXN0aW5hdGlvbkFkZHJlc3NOYW1lcykgeworICAgICAgICBBcnJheXMuc29ydChkZXN0aW5hdGlvbkFkZHJlc3NOYW1lcyk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvZXhwYW5kU3RhdGljSW1wb3J0L2JlZm9yZU11bHRpcGxlVmlhT25EZW1hbmQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvZXhwYW5kU3RhdGljSW1wb3J0L2JlZm9yZU11bHRpcGxlVmlhT25EZW1hbmQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZDE4NjY4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9leHBhbmRTdGF0aWNJbXBvcnQvYmVmb3JlTXVsdGlwbGVWaWFPbkRlbWFuZC5qYXZhCkBAIC0wLDAgKzEsOSBAQAorLy8gIkV4cGFuZCBzdGF0aWMgaW1wb3J0IHRvIEFycmF5cy5zb3J0IiAidHJ1ZSIKK2ltcG9ydCBzdGF0aWMgamF2YS51dGlsLkFycmF5cy4qOworCitjbGFzcyBUZXN0IHsKKyAgICBwdWJsaWMgdm9pZCBzZW5kTWVzc2FnZShTdHJpbmcuLi4gZGVzdGluYXRpb25BZGRyZXNzTmFtZXMpIHsKKyAgICAgICAgczxjYXJldD5vcnQoZGVzdGluYXRpb25BZGRyZXNzTmFtZXMpOworICAgICAgICBhc0xpc3QoZGVzdGluYXRpb25BZGRyZXNzTmFtZXMpCisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvZXhwYW5kU3RhdGljSW1wb3J0L2JlZm9yZVNpbmdsZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9leHBhbmRTdGF0aWNJbXBvcnQvYmVmb3JlU2luZ2xlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjJlMzQyMwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvZXhwYW5kU3RhdGljSW1wb3J0L2JlZm9yZVNpbmdsZS5qYXZhCkBAIC0wLDAgKzEsOCBAQAorLy8gIkV4cGFuZCBzdGF0aWMgaW1wb3J0IHRvIEFycmF5cy5zb3J0IiAidHJ1ZSIKK2ltcG9ydCBzdGF0aWMgamF2YS51dGlsLkFycmF5cy5zb3J0OworCitjbGFzcyBUZXN0IHsKKyAgICBwdWJsaWMgdm9pZCBzZW5kTWVzc2FnZShTdHJpbmcuLi4gZGVzdGluYXRpb25BZGRyZXNzTmFtZXMpIHsKKyAgICAgICAgczxjYXJldD5vcnQoZGVzdGluYXRpb25BZGRyZXNzTmFtZXMpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2V4cGFuZFN0YXRpY0ltcG9ydC9iZWZvcmVTaW5nbGVWaWFPbkRlbWFuZC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9leHBhbmRTdGF0aWNJbXBvcnQvYmVmb3JlU2luZ2xlVmlhT25EZW1hbmQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYzUyNDQyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9leHBhbmRTdGF0aWNJbXBvcnQvYmVmb3JlU2luZ2xlVmlhT25EZW1hbmQuamF2YQpAQCAtMCwwICsxLDggQEAKKy8vICJFeHBhbmQgc3RhdGljIGltcG9ydCB0byBBcnJheXMuc29ydCIgInRydWUiCitpbXBvcnQgc3RhdGljIGphdmEudXRpbC5BcnJheXMuKjsKKworY2xhc3MgVGVzdCB7CisgICAgcHVibGljIHZvaWQgc2VuZE1lc3NhZ2UoU3RyaW5nLi4uIGRlc3RpbmF0aW9uQWRkcmVzc05hbWVzKSB7CisgICAgICAgIHM8Y2FyZXQ+b3J0KGRlc3RpbmF0aW9uQWRkcmVzc05hbWVzKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9leHBsaWNpdDJkaWFtb25kL2FmdGVyMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9leHBsaWNpdDJkaWFtb25kL2FmdGVyMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEyNTc3YmIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2V4cGxpY2l0MmRpYW1vbmQvYWZ0ZXIxLmphdmEKQEAgLTAsMCArMSw2IEBACisvLyAiUmVwbGFjZSB3aXRoIDw+IiAidHJ1ZSIKK3B1YmxpYyBjbGFzcyBUZXN0IHsKKyAgRjxTdHJpbmc+IGYgPSBuZXcgRjw+KCk7Cit9CisKK2NsYXNzIEY8VD4ge30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2V4cGxpY2l0MmRpYW1vbmQvYWZ0ZXI1LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2V4cGxpY2l0MmRpYW1vbmQvYWZ0ZXI1LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGNjNzQ0YwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvZXhwbGljaXQyZGlhbW9uZC9hZnRlcjUuamF2YQpAQCAtMCwwICsxLDE2IEBACisvLyAiUmVwbGFjZSB3aXRoIDw+IiAidHJ1ZSIKK2NsYXNzIFRlc3QgeworCisgICAgdm9pZCB0ZXN0KCkgeworICAgICAgICBjbGFzcyBGb288WCBleHRlbmRzIE51bWJlcj4geworICAgICAgICAgICAgRm9vKCkge30KKyAgICAgICAgICAgIEZvbyhYIHgpIHt9CisgICAgICAgIH0KKyAgICAgICAgRm9vPE51bWJlcj4gZjEgPSBuZXcgRm9vPE51bWJlcj4oMSk7CisgICAgICAgIEZvbzw/PiBmMiA9IG5ldyBGb288PigpOworICAgICAgICBGb288Pz4gZjMgPSBuZXcgRm9vPEludGVnZXI+KCk7CisgICAgICAgIEZvbzxOdW1iZXI+IGY0ID0gbmV3IEZvbzxOdW1iZXI+KDEpIHt9OworICAgICAgICBGb288Pz4gZjUgPSBuZXcgRm9vPE51bWJlcj4oKSB7fTsKKyAgICAgICAgRm9vPD8+IGY2ID0gbmV3IEZvbzxJbnRlZ2VyPigpIHt9OworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvZXhwbGljaXQyZGlhbW9uZC9hZnRlcjYuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvZXhwbGljaXQyZGlhbW9uZC9hZnRlcjYuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZjliZjI0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9leHBsaWNpdDJkaWFtb25kL2FmdGVyNi5qYXZhCkBAIC0wLDAgKzEsMTYgQEAKKy8vICJSZXBsYWNlIHdpdGggPD4iICJ0cnVlIgorY2xhc3MgVGVzdCB7CisKKyAgICB2b2lkIHRlc3QoKSB7CisgICAgICAgIGNsYXNzIEZvbzxYIGV4dGVuZHMgTnVtYmVyPiB7CisgICAgICAgICAgICBGb28oKSB7fQorICAgICAgICAgICAgRm9vKFggeCkge30KKyAgICAgICAgfQorICAgICAgICBGb288TnVtYmVyPiBmMSA9IG5ldyBGb288TnVtYmVyPigxKTsKKyAgICAgICAgRm9vPD8+IGYyID0gbmV3IEZvbzxOdW1iZXI+KCk7CisgICAgICAgIEZvbzw/PiBmMyA9IG5ldyBGb288PigpOworICAgICAgICBGb288TnVtYmVyPiBmNCA9IG5ldyBGb288TnVtYmVyPigxKSB7fTsKKyAgICAgICAgRm9vPD8+IGY1ID0gbmV3IEZvbzxOdW1iZXI+KCkge307CisgICAgICAgIEZvbzw/PiBmNiA9IG5ldyBGb288SW50ZWdlcj4oKSB7fTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2V4cGxpY2l0MmRpYW1vbmQvYmVmb3JlMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9leHBsaWNpdDJkaWFtb25kL2JlZm9yZTEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kM2JkMmMyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9leHBsaWNpdDJkaWFtb25kL2JlZm9yZTEuamF2YQpAQCAtMCwwICsxLDYgQEAKKy8vICJSZXBsYWNlIHdpdGggPD4iICJ0cnVlIgorcHVibGljIGNsYXNzIFRlc3QgeworICBGPFN0cmluZz4gZiA9IG5ldyBGPFN0cjxjYXJldD5pbmc+KCk7Cit9CisKK2NsYXNzIEY8VD4ge30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2V4cGxpY2l0MmRpYW1vbmQvYmVmb3JlMi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9leHBsaWNpdDJkaWFtb25kL2JlZm9yZTIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYjRhMmNmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9leHBsaWNpdDJkaWFtb25kL2JlZm9yZTIuamF2YQpAQCAtMCwwICsxLDcgQEAKKy8vICJSZXBsYWNlIHdpdGggPD4iICJmYWxzZSIKK3B1YmxpYyBjbGFzcyBUZXN0IHsKKyAgRjxGPFN0cmluZz4+IGYgPSBuZXcgRkY8U3RyPGNhcmV0PmluZz4oKTsKK30KKworY2xhc3MgRkY8WD4gZXh0ZW5kcyBGPFg+e30KK2NsYXNzIEY8VD4ge30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2V4cGxpY2l0MmRpYW1vbmQvYmVmb3JlMy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9leHBsaWNpdDJkaWFtb25kL2JlZm9yZTMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YTA4NTM2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9leHBsaWNpdDJkaWFtb25kL2JlZm9yZTMuamF2YQpAQCAtMCwwICsxLDExIEBACisvLyAiUmVwbGFjZSB3aXRoIDw+IiAiZmFsc2UiCitwdWJsaWMgY2xhc3MgVGVzdCB7CisgIHZvaWQgYmFyKCkgeworICAgIGZvbyhuZXcgRkY8U3RyPGNhcmV0PmluZz4oKSk7CisgIH0KKworICB2b2lkIGZvbyhGPEY8U3RyaW5nPj4gcCkge30KK30KKworY2xhc3MgRkY8WD4gZXh0ZW5kcyBGPFg+e30KK2NsYXNzIEY8VD4ge30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2V4cGxpY2l0MmRpYW1vbmQvYmVmb3JlNC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9leHBsaWNpdDJkaWFtb25kL2JlZm9yZTQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNWNmMjczCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9leHBsaWNpdDJkaWFtb25kL2JlZm9yZTQuamF2YQpAQCAtMCwwICsxLDE2IEBACisvLyAiUmVwbGFjZSB3aXRoIDw+IiAiZmFsc2UiCitjbGFzcyBUZXN0IHsKKworICAgIHZvaWQgdGVzdCgpIHsKKyAgICAgICAgY2xhc3MgRm9vPFggZXh0ZW5kcyBOdW1iZXI+IHsKKyAgICAgICAgICAgIEZvbygpIHt9CisgICAgICAgICAgICBGb28oWCB4KSB7fQorICAgICAgICB9CisgICAgICAgIEZvbzxOdW1iZXI+IGYxID0gbmV3IEZvbzxOdTxjYXJldD5tYmVyPigxKTsKKyAgICAgICAgRm9vPD8+IGYyID0gbmV3IEZvbzxOdW1iZXI+KCk7CisgICAgICAgIEZvbzw/PiBmMyA9IG5ldyBGb288SW50ZWdlcj4oKTsKKyAgICAgICAgRm9vPE51bWJlcj4gZjQgPSBuZXcgRm9vPE51bWJlcj4oMSkge307CisgICAgICAgIEZvbzw/PiBmNSA9IG5ldyBGb288TnVtYmVyPigpIHt9OworICAgICAgICBGb288Pz4gZjYgPSBuZXcgRm9vPEludGVnZXI+KCkge307CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9leHBsaWNpdDJkaWFtb25kL2JlZm9yZTUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvZXhwbGljaXQyZGlhbW9uZC9iZWZvcmU1LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmY4YzUwNgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvZXhwbGljaXQyZGlhbW9uZC9iZWZvcmU1LmphdmEKQEAgLTAsMCArMSwxNiBAQAorLy8gIlJlcGxhY2Ugd2l0aCA8PiIgInRydWUiCitjbGFzcyBUZXN0IHsKKworICAgIHZvaWQgdGVzdCgpIHsKKyAgICAgICAgY2xhc3MgRm9vPFggZXh0ZW5kcyBOdW1iZXI+IHsKKyAgICAgICAgICAgIEZvbygpIHt9CisgICAgICAgICAgICBGb28oWCB4KSB7fQorICAgICAgICB9CisgICAgICAgIEZvbzxOdW1iZXI+IGYxID0gbmV3IEZvbzxOdW1iZXI+KDEpOworICAgICAgICBGb288Pz4gZjIgPSBuZXcgRm9vPE51bTxjYXJldD5iZXI+KCk7CisgICAgICAgIEZvbzw/PiBmMyA9IG5ldyBGb288SW50ZWdlcj4oKTsKKyAgICAgICAgRm9vPE51bWJlcj4gZjQgPSBuZXcgRm9vPE51bWJlcj4oMSkge307CisgICAgICAgIEZvbzw/PiBmNSA9IG5ldyBGb288TnVtYmVyPigpIHt9OworICAgICAgICBGb288Pz4gZjYgPSBuZXcgRm9vPEludGVnZXI+KCkge307CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9leHBsaWNpdDJkaWFtb25kL2JlZm9yZTYuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvZXhwbGljaXQyZGlhbW9uZC9iZWZvcmU2LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDg2NjZmNAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvZXhwbGljaXQyZGlhbW9uZC9iZWZvcmU2LmphdmEKQEAgLTAsMCArMSwxNiBAQAorLy8gIlJlcGxhY2Ugd2l0aCA8PiIgInRydWUiCitjbGFzcyBUZXN0IHsKKworICAgIHZvaWQgdGVzdCgpIHsKKyAgICAgICAgY2xhc3MgRm9vPFggZXh0ZW5kcyBOdW1iZXI+IHsKKyAgICAgICAgICAgIEZvbygpIHt9CisgICAgICAgICAgICBGb28oWCB4KSB7fQorICAgICAgICB9CisgICAgICAgIEZvbzxOdW1iZXI+IGYxID0gbmV3IEZvbzxOdW1iZXI+KDEpOworICAgICAgICBGb288Pz4gZjIgPSBuZXcgRm9vPE51bWJlcj4oKTsKKyAgICAgICAgRm9vPD8+IGYzID0gbmV3IEZvbzxJbnRlPGNhcmV0Pmdlcj4oKTsKKyAgICAgICAgRm9vPE51bWJlcj4gZjQgPSBuZXcgRm9vPE51bWJlcj4oMSkge307CisgICAgICAgIEZvbzw/PiBmNSA9IG5ldyBGb288TnVtYmVyPigpIHt9OworICAgICAgICBGb288Pz4gZjYgPSBuZXcgRm9vPEludGVnZXI+KCkge307CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9leHBsaWNpdDJkaWFtb25kL2JlZm9yZTcuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvZXhwbGljaXQyZGlhbW9uZC9iZWZvcmU3LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWEwYzBkNAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvZXhwbGljaXQyZGlhbW9uZC9iZWZvcmU3LmphdmEKQEAgLTAsMCArMSwxNiBAQAorLy8gIlJlcGxhY2Ugd2l0aCA8PiIgImZhbHNlIgorY2xhc3MgVGVzdCB7CisKKyAgICB2b2lkIHRlc3QoKSB7CisgICAgICAgIGNsYXNzIEZvbzxYIGV4dGVuZHMgTnVtYmVyPiB7CisgICAgICAgICAgICBGb28oKSB7fQorICAgICAgICAgICAgRm9vKFggeCkge30KKyAgICAgICAgfQorICAgICAgICBGb288TnVtYmVyPiBmMSA9IG5ldyBGb288TnVtYmVyPigxKTsKKyAgICAgICAgRm9vPD8+IGYyID0gbmV3IEZvbzxOdW1iZXI+KCk7CisgICAgICAgIEZvbzw/PiBmMyA9IG5ldyBGb288SW50ZWdlcj4oKTsKKyAgICAgICAgRm9vPE51bWJlcj4gZjQgPSBuZXcgRm9vPE51PGNhcmV0Pm1iZXI+KDEpIHt9OworICAgICAgICBGb288Pz4gZjUgPSBuZXcgRm9vPE51bWJlcj4oKSB7fTsKKyAgICAgICAgRm9vPD8+IGY2ID0gbmV3IEZvbzxJbnRlZ2VyPigpIHt9OworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvZXhwbGljaXQyZGlhbW9uZC9iZWZvcmU4LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2V4cGxpY2l0MmRpYW1vbmQvYmVmb3JlOC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVjNmI2MDEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2V4cGxpY2l0MmRpYW1vbmQvYmVmb3JlOC5qYXZhCkBAIC0wLDAgKzEsMTYgQEAKKy8vICJSZXBsYWNlIHdpdGggPD4iICJmYWxzZSIKK2NsYXNzIFRlc3QgeworCisgICAgdm9pZCB0ZXN0KCkgeworICAgICAgICBjbGFzcyBGb288WCBleHRlbmRzIE51bWJlcj4geworICAgICAgICAgICAgRm9vKCkge30KKyAgICAgICAgICAgIEZvbyhYIHgpIHt9CisgICAgICAgIH0KKyAgICAgICAgRm9vPE51bWJlcj4gZjEgPSBuZXcgRm9vPE51bWJlcj4oMSk7CisgICAgICAgIEZvbzw/PiBmMiA9IG5ldyBGb288TnVtYmVyPigpOworICAgICAgICBGb288Pz4gZjMgPSBuZXcgRm9vPEludGVnZXI+KCk7CisgICAgICAgIEZvbzxOdW1iZXI+IGY0ID0gbmV3IEZvbzxOdW1iZXI+KDEpIHt9OworICAgICAgICBGb288Pz4gZjUgPSBuZXcgRm9vPE51bWI8Y2FyZXQ+ZXI+KCkge307CisgICAgICAgIEZvbzw/PiBmNiA9IG5ldyBGb288SW50ZWdlcj4oKSB7fTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2V4cGxpY2l0MmRpYW1vbmQvYmVmb3JlOS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9leHBsaWNpdDJkaWFtb25kL2JlZm9yZTkuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40OGJmZjY0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9leHBsaWNpdDJkaWFtb25kL2JlZm9yZTkuamF2YQpAQCAtMCwwICsxLDE2IEBACisvLyAiUmVwbGFjZSB3aXRoIDw+IiAiZmFsc2UiCitjbGFzcyBUZXN0IHsKKworICAgIHZvaWQgdGVzdCgpIHsKKyAgICAgICAgY2xhc3MgRm9vPFggZXh0ZW5kcyBOdW1iZXI+IHsKKyAgICAgICAgICAgIEZvbygpIHt9CisgICAgICAgICAgICBGb28oWCB4KSB7fQorICAgICAgICB9CisgICAgICAgIEZvbzxOdW1iZXI+IGYxID0gbmV3IEZvbzxOdW1iZXI+KDEpOworICAgICAgICBGb288Pz4gZjIgPSBuZXcgRm9vPE51bWJlcj4oKTsKKyAgICAgICAgRm9vPD8+IGYzID0gbmV3IEZvbzxJbnRlZ2VyPigpOworICAgICAgICBGb288TnVtYmVyPiBmNCA9IG5ldyBGb288TnVtYmVyPigxKSB7fTsKKyAgICAgICAgRm9vPD8+IGY1ID0gbmV3IEZvbzxOdW1iZXI+KCkge307CisgICAgICAgIEZvbzw/PiBmNiA9IG5ldyBGb288SW48Y2FyZXQ+dGVnZXI+KCkge307CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9leHBsaWNpdDJkaWFtb25kL2JlZm9yZUluQW5vbnltb3VzSW5uZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvZXhwbGljaXQyZGlhbW9uZC9iZWZvcmVJbkFub255bW91c0lubmVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGY0MDI3OAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvZXhwbGljaXQyZGlhbW9uZC9iZWZvcmVJbkFub255bW91c0lubmVyLmphdmEKQEAgLTAsMCArMSw3IEBACisvLyAiUmVwbGFjZSB3aXRoIDw+IiAiZmFsc2UiCitjbGFzcyBUZXN0IHsKKyAgICBjbGFzcyBEaWFtb25kVGVzdDxUPiB7CisgICAgICAgIERpYW1vbmRUZXN0PFN0cmluZz4gcyA9IG5ldyBEaWFtb25kVGVzdDxTdDxjYXJldD5yaW5nPigpeworICAgICAgICB9OyAvLyBhbm9ueW1vdXMgaW5uZXIgY2xhc3MKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2V4cGxpY2l0MmRpYW1vbmQvYmVmb3JlSW5Bbm9ueW1vdXNJbm5lcjEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvZXhwbGljaXQyZGlhbW9uZC9iZWZvcmVJbkFub255bW91c0lubmVyMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAwYjg1MmQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2V4cGxpY2l0MmRpYW1vbmQvYmVmb3JlSW5Bbm9ueW1vdXNJbm5lcjEuamF2YQpAQCAtMCwwICsxLDYgQEAKKy8vICJSZXBsYWNlIHdpdGggPD4iICJmYWxzZSIKK2NsYXNzIFRlc3Q8VD4geworICAgIFRlc3Q8U3RyaW5nPiBzID0gbmV3IFRlc3Q8U3Q8Y2FyZXQ+cmluZz4oKXsKKyAgICB9OyAvLyBhbm9ueW1vdXMgaW5uZXIgY2xhc3MKKworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9maXhBbGwvYWZ0ZXIxLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2ZpeEFsbC9hZnRlcjEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mOTBiM2RiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9maXhBbGwvYWZ0ZXIxLmphdmEKQEAgLTAsMCArMSw3IEBACisvLyAiRml4IGFsbCAnQ29uc3RhbnQgY29uZGl0aW9ucyAmIGV4Y2VwdGlvbnMnIHByb2JsZW1zIiAidHJ1ZSIKK3B1YmxpYyBjbGFzcyBUZXN0IHsKKyAgdm9pZCBmb28oKSB7CisgICAgaW50IGsgPSAwOworICAgIGludCBpID0gMDsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvZml4QWxsL2FmdGVyMi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9maXhBbGwvYWZ0ZXIyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODc3ODEwZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvZml4QWxsL2FmdGVyMi5qYXZhCkBAIC0wLDAgKzEsMTIgQEAKKy8vICJGaXggYWxsICdDb25zdGFudCBjb25kaXRpb25zICYgZXhjZXB0aW9ucycgcHJvYmxlbXMiICJ0cnVlIgorcHVibGljIGNsYXNzIFRlc3QgeworICB2b2lkIGZvbzEoKSB7CisgICAgaW50IGsgPSAwOworICAgIGludCBpID0gMDsKKyAgfQorCisgIHZvaWQgZm9vMigpIHsKKyAgICBpbnQgayA9IDA7CisgICAgaW50IGkgPSAwOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9maXhBbGwvYWZ0ZXJBc3NlcnRGYWxzZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9maXhBbGwvYWZ0ZXJBc3NlcnRGYWxzZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVhYmEyZTEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2ZpeEFsbC9hZnRlckFzc2VydEZhbHNlLmphdmEKQEAgLTAsMCArMSw4IEBACisvLyAiRml4IGFsbCAnQ29uc3RhbnQgY29uZGl0aW9ucyAmIGV4Y2VwdGlvbnMnIHByb2JsZW1zIiAidHJ1ZSIKK3B1YmxpYyBjbGFzcyBUZXN0IHsKKyAgdm9pZCBmb28yKCkgeworICAgIGludCBrID0gMDsKKyAgICBpbnQgaSA9IDA7CisgICAgYXNzZXJ0IGZhbHNlOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9maXhBbGwvYWZ0ZXJBc3NlcnRUcnVlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2ZpeEFsbC9hZnRlckFzc2VydFRydWUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMjUxZjAzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9maXhBbGwvYWZ0ZXJBc3NlcnRUcnVlLmphdmEKQEAgLTAsMCArMSw4IEBACisvLyAiRml4IGFsbCAnQ29uc3RhbnQgY29uZGl0aW9ucyAmIGV4Y2VwdGlvbnMnIHByb2JsZW1zIiAidHJ1ZSIKK3B1YmxpYyBjbGFzcyBUZXN0IHsKKyAgdm9pZCBmb28yKCkgeworICAgIGludCBrID0gMDsKKyAgICBpbnQgaSA9IDA7CisgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvZml4QWxsL2JlZm9yZTEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvZml4QWxsL2JlZm9yZTEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNGZiMDE4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9maXhBbGwvYmVmb3JlMS5qYXZhCkBAIC0wLDAgKzEsMTMgQEAKKy8vICJGaXggYWxsICdDb25zdGFudCBjb25kaXRpb25zICYgZXhjZXB0aW9ucycgcHJvYmxlbXMiICJ0cnVlIgorcHVibGljIGNsYXNzIFRlc3QgeworICB2b2lkIGZvbygpIHsKKyAgICBpbnQgayA9IDA7CisgICAgaW50IGkgPSAwOworICAgIGlmICg8Y2FyZXQ+aSA9PSBrKSB7fQorICAgIGlmIChpID09IGspIHt9CisgICAgaWYgKGkgPT0gaykge30KKyAgICBpZiAoaSA9PSBrKSB7fQorICAgIGlmIChpID09IGspIHt9CisgICAgaWYgKGkgPT0gaykge30KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvZml4QWxsL2JlZm9yZTIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvZml4QWxsL2JlZm9yZTIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNDFjNmI4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9maXhBbGwvYmVmb3JlMi5qYXZhCkBAIC0wLDAgKzEsMjQgQEAKKy8vICJGaXggYWxsICdDb25zdGFudCBjb25kaXRpb25zICYgZXhjZXB0aW9ucycgcHJvYmxlbXMiICJ0cnVlIgorcHVibGljIGNsYXNzIFRlc3QgeworICB2b2lkIGZvbzEoKSB7CisgICAgaW50IGsgPSAwOworICAgIGludCBpID0gMDsKKyAgICBpZiAoaSA9PSBrKSB7fQorICAgIGlmIChpID09IGspIHt9CisgICAgaWYgKGkgPT0gaykge30KKyAgICBpZiAoaSA9PSBrKSB7fQorICAgIGlmIChpID09IGspIHt9CisgICAgaWYgKGkgPT0gaykge30KKyAgfQorCisgIHZvaWQgZm9vMigpIHsKKyAgICBpbnQgayA9IDA7CisgICAgaW50IGkgPSAwOworICAgIGlmICg8Y2FyZXQ+aSA9PSBrKSB7fQorICAgIGlmIChpID09IGspIHt9CisgICAgaWYgKGkgPT0gaykge30KKyAgICBpZiAoaSA9PSBrKSB7fQorICAgIGlmIChpID09IGspIHt9CisgICAgaWYgKGkgPT0gaykge30KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvZml4QWxsL2JlZm9yZUFzc2VydEZhbHNlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2ZpeEFsbC9iZWZvcmVBc3NlcnRGYWxzZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI2ZTI5ZDMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2ZpeEFsbC9iZWZvcmVBc3NlcnRGYWxzZS5qYXZhCkBAIC0wLDAgKzEsOCBAQAorLy8gIkZpeCBhbGwgJ0NvbnN0YW50IGNvbmRpdGlvbnMgJiBleGNlcHRpb25zJyBwcm9ibGVtcyIgInRydWUiCitwdWJsaWMgY2xhc3MgVGVzdCB7CisgIHZvaWQgZm9vMigpIHsKKyAgICBpbnQgayA9IDA7CisgICAgaW50IGkgPSAwOworICAgIGFzc2VydCA8Y2FyZXQ+aSAhPSBrOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9maXhBbGwvYmVmb3JlQXNzZXJ0VHJ1ZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9maXhBbGwvYmVmb3JlQXNzZXJ0VHJ1ZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIwNGIwODYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2ZpeEFsbC9iZWZvcmVBc3NlcnRUcnVlLmphdmEKQEAgLTAsMCArMSwxMiBAQAorLy8gIkZpeCBhbGwgJ0NvbnN0YW50IGNvbmRpdGlvbnMgJiBleGNlcHRpb25zJyBwcm9ibGVtcyIgInRydWUiCitwdWJsaWMgY2xhc3MgVGVzdCB7CisgIHZvaWQgZm9vMigpIHsKKyAgICBpbnQgayA9IDA7CisgICAgaW50IGkgPSAwOworICAgIGFzc2VydCA8Y2FyZXQ+aSA9PSBrOworICAgIGFzc2VydCBpID09IGs7CisgICAgaWYgKGkgPT0gaykgeworICAgICAgU3lzdGVtLm91dC5wcmludGxuKCk7CisgICAgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9maXhBbGxBbm5vdGF0b3IvYWZ0ZXIxLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2ZpeEFsbEFubm90YXRvci9hZnRlcjEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYTBhYmE1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9maXhBbGxBbm5vdGF0b3IvYWZ0ZXIxLmphdmEKQEAgLTAsMCArMSw3IEBACisvLyAiRml4IGFsbCAnQW5ub3RhdG9yJyBwcm9ibGVtcyIgInRydWUiCitwdWJsaWMgY2xhc3MgVGVzdCB7CisgIHZvaWQgZm9vRigpIHsKKyAgfQorICAKKyAgdm9pZCBiYXJGKCl7fQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvZml4QWxsQW5ub3RhdG9yL2JlZm9yZTEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvZml4QWxsQW5ub3RhdG9yL2JlZm9yZTEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MDA2NzMxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9maXhBbGxBbm5vdGF0b3IvYmVmb3JlMS5qYXZhCkBAIC0wLDAgKzEsNyBAQAorLy8gIkZpeCBhbGwgJ0Fubm90YXRvcicgcHJvYmxlbXMiICJ0cnVlIgorcHVibGljIGNsYXNzIFRlc3QgeworICB2b2lkIGY8Y2FyZXQ+b28oKSB7CisgIH0KKyAgCisgIHZvaWQgYmFyKCl7fQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvZ2VuZXJhbGl6ZUNhdGNoL2FmdGVyMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9nZW5lcmFsaXplQ2F0Y2gvYWZ0ZXIxLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmU2MTNlOAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvZ2VuZXJhbGl6ZUNhdGNoL2FmdGVyMS5qYXZhCkBAIC0wLDAgKzEsMTYgQEAKKy8vICJHZW5lcmFsaXplIGNhdGNoIGZvciAnamF2YS5pby5GaWxlTm90Rm91bmRFeGNlcHRpb24nIHRvICdqYXZhLmlvLklPRXhjZXB0aW9uJyIgInRydWUiCitpbXBvcnQgamF2YS5pby4qOworCisKK3B1YmxpYyBjbGFzcyBjMSB7CisgICAgdm9pZCBmKCkgeworICAgICAgICBGaWxlSW5wdXRTdHJlYW0gZmlzID0gbnVsbDsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGZpcyA9IG5ldyBGaWxlSW5wdXRTdHJlYW0oIiIpOworICAgICAgICAgICAgRGF0YUlucHV0U3RyZWFtIGRpcyA9IG5ldyBEYXRhSW5wdXRTdHJlYW0oZmlzKTsKKyAgICAgICAgICAgIDxjYXJldD5kaXMucmVhZEludCgpOworICAgICAgICB9IGNhdGNoIChJT0V4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICBlLnByaW50U3RhY2tUcmFjZSgpOyAgCisgICAgICAgIH0KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9nZW5lcmFsaXplQ2F0Y2gvYWZ0ZXIzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2dlbmVyYWxpemVDYXRjaC9hZnRlcjMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNTZjMjQ0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9nZW5lcmFsaXplQ2F0Y2gvYWZ0ZXIzLmphdmEKQEAgLTAsMCArMSwxNyBAQAorLy8gIkdlbmVyYWxpemUgY2F0Y2ggZm9yICdDLkUxJyB0byAnQy5FJyIgInRydWUiCitjbGFzcyBDIHsKKyAgICBzdGF0aWMgY2xhc3MgRSBleHRlbmRzIEV4Y2VwdGlvbiB7IH0KKyAgICBzdGF0aWMgY2xhc3MgRTEgZXh0ZW5kcyBFIHsgfQorCisgICAgc3RhdGljIGNsYXNzIE15UmVzb3VyY2UgaW1wbGVtZW50cyBBdXRvQ2xvc2VhYmxlIHsKKyAgICAgICAgcHVibGljIE15UmVzb3VyY2UoKSB0aHJvd3MgRTEgeyB9CisgICAgICAgIHB1YmxpYyB2b2lkIGNsb3NlKCkgdGhyb3dzIEUgeyB9CisgICAgfQorCisgICAgdm9pZCBmKCkgeworICAgICAgICB0cnkgKE15UmVzb3VyY2UgciA9IG5ldyBNeVJlc291cmNlKCkpIHsKKyAgICAgICAgfSBjYXRjaCAoRSBlKSB7CisgICAgICAgICAgICBlLnByaW50U3RhY2tUcmFjZSgpOyAgCisgICAgICAgIH0KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9nZW5lcmFsaXplQ2F0Y2gvYmVmb3JlMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9nZW5lcmFsaXplQ2F0Y2gvYmVmb3JlMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU1ZGE5ZDcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2dlbmVyYWxpemVDYXRjaC9iZWZvcmUxLmphdmEKQEAgLTAsMCArMSwxNiBAQAorLy8gIkdlbmVyYWxpemUgY2F0Y2ggZm9yICdqYXZhLmlvLkZpbGVOb3RGb3VuZEV4Y2VwdGlvbicgdG8gJ2phdmEuaW8uSU9FeGNlcHRpb24nIiAidHJ1ZSIKK2ltcG9ydCBqYXZhLmlvLio7CisKKworcHVibGljIGNsYXNzIGMxIHsKKyAgICB2b2lkIGYoKSB7CisgICAgICAgIEZpbGVJbnB1dFN0cmVhbSBmaXMgPSBudWxsOworICAgICAgICB0cnkgeworICAgICAgICAgICAgZmlzID0gbmV3IEZpbGVJbnB1dFN0cmVhbSgiIik7CisgICAgICAgICAgICBEYXRhSW5wdXRTdHJlYW0gZGlzID0gbmV3IERhdGFJbnB1dFN0cmVhbShmaXMpOworICAgICAgICAgICAgPGNhcmV0PmRpcy5yZWFkSW50KCk7CisgICAgICAgIH0gY2F0Y2ggKEZpbGVOb3RGb3VuZEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICBlLnByaW50U3RhY2tUcmFjZSgpOyAgCisgICAgICAgIH0KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9nZW5lcmFsaXplQ2F0Y2gvYmVmb3JlMi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9nZW5lcmFsaXplQ2F0Y2gvYmVmb3JlMi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjljMzYxMjkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2dlbmVyYWxpemVDYXRjaC9iZWZvcmUyLmphdmEKQEAgLTAsMCArMSwxNiBAQAorLy8gIkdlbmVyYWxpemUgY2F0Y2ggZm9yICdqYXZhLmlvLkZpbGVOb3RGb3VuZEV4Y2VwdGlvbicgdG8gJ2phdmEubGFuZy5JbGxlZ2FsQWNjZXNzRXhjZXB0aW9uJyIgImZhbHNlIgoraW1wb3J0IGphdmEuaW8uKjsKKworCitwdWJsaWMgY2xhc3MgYzEgeworICAgIHZvaWQgZigpIHsKKyAgICAgICAgRmlsZUlucHV0U3RyZWFtIGZpcyA9IG51bGw7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBmaXMgPSBuZXcgRmlsZUlucHV0U3RyZWFtKCIiKTsKKyAgICAgICAgICAgIERhdGFJbnB1dFN0cmVhbSBkaXMgPSBuZXcgRGF0YUlucHV0U3RyZWFtKGZpcyk7CisgICAgICAgICAgICA8Y2FyZXQ+dGhyb3cgbmV3IElsbGVnYWxBY2Nlc3NFeGNlcHRpb24oKTsKKyAgICAgICAgfSBjYXRjaCAoRmlsZU5vdEZvdW5kRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIGUucHJpbnRTdGFja1RyYWNlKCk7ICAKKyAgICAgICAgfQorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2dlbmVyYWxpemVDYXRjaC9iZWZvcmUzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2dlbmVyYWxpemVDYXRjaC9iZWZvcmUzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjFmMDM5NQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvZ2VuZXJhbGl6ZUNhdGNoL2JlZm9yZTMuamF2YQpAQCAtMCwwICsxLDE3IEBACisvLyAiR2VuZXJhbGl6ZSBjYXRjaCBmb3IgJ0MuRTEnIHRvICdDLkUnIiAidHJ1ZSIKK2NsYXNzIEMgeworICAgIHN0YXRpYyBjbGFzcyBFIGV4dGVuZHMgRXhjZXB0aW9uIHsgfQorICAgIHN0YXRpYyBjbGFzcyBFMSBleHRlbmRzIEUgeyB9CisKKyAgICBzdGF0aWMgY2xhc3MgTXlSZXNvdXJjZSBpbXBsZW1lbnRzIEF1dG9DbG9zZWFibGUgeworICAgICAgICBwdWJsaWMgTXlSZXNvdXJjZSgpIHRocm93cyBFMSB7IH0KKyAgICAgICAgcHVibGljIHZvaWQgY2xvc2UoKSB0aHJvd3MgRSB7IH0KKyAgICB9CisKKyAgICB2b2lkIGYoKSB7CisgICAgICAgIHRyeSAoPGNhcmV0Pk15UmVzb3VyY2UgciA9IG5ldyBNeVJlc291cmNlKCkpIHsKKyAgICAgICAgfSBjYXRjaCAoRTEgZSkgeworICAgICAgICAgICAgZS5wcmludFN0YWNrVHJhY2UoKTsgIAorICAgICAgICB9CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvZ2VuZXJpY0NyZWF0ZUZyb21Vc2FnZS9hZnRlcjEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvZ2VuZXJpY0NyZWF0ZUZyb21Vc2FnZS9hZnRlcjEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYjU0NDE5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9nZW5lcmljQ3JlYXRlRnJvbVVzYWdlL2FmdGVyMS5qYXZhCkBAIC0wLDAgKzEsMTMgQEAKKy8vICJDcmVhdGUgTWV0aG9kICdnZXQnIiAidHJ1ZSIKK2NsYXNzIFc8VD4geworICAgIHB1YmxpYyBUIGdldChUIHMpIHsKKyAgICAgICAgPHNlbGVjdGlvbj5yZXR1cm4gbnVsbDsgIC8vVG8gY2hhbmdlIGJvZHkgb2YgY3JlYXRlZCBtZXRob2RzIHVzZSBGaWxlIHwgU2V0dGluZ3MgfCBGaWxlIFRlbXBsYXRlcy48L3NlbGVjdGlvbj4KKyAgICB9Cit9CisKK2NsYXNzIEMgeworICAgIHZvaWQgZm9vICgpIHsKKyAgICAgICAgVzxTdHJpbmc+IHcgPSBuZXcgVzxTdHJpbmc+KCk7CisgICAgICAgIFN0cmluZyBzID0gdy5nZXQoIiIpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2dlbmVyaWNDcmVhdGVGcm9tVXNhZ2UvYWZ0ZXIyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2dlbmVyaWNDcmVhdGVGcm9tVXNhZ2UvYWZ0ZXIyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTYzMTYxMgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvZ2VuZXJpY0NyZWF0ZUZyb21Vc2FnZS9hZnRlcjIuamF2YQpAQCAtMCwwICsxLDEyIEBACisvLyAiQ3JlYXRlIE1ldGhvZCAnZ2V0JyIgInRydWUiCitjbGFzcyBHZW5lcmljPFQ+IHsKKyAgICBwdWJsaWMgVCBnZXQoKSB7CisgICAgICAgIDxjYXJldD48c2VsZWN0aW9uPnJldHVybiBudWxsOyAgLy9UbyBjaGFuZ2UgYm9keSBvZiBjcmVhdGVkIG1ldGhvZHMgdXNlIEZpbGUgfCBTZXR0aW5ncyB8IEZpbGUgVGVtcGxhdGVzLjwvc2VsZWN0aW9uPgorICAgIH0KK30KKworY2xhc3MgV1dXIHsKKyAgICA8RT4gdm9pZCBmb28gKEdlbmVyaWM8RT4gcCkgeworICAgICAgICBFIGUgPSBwLmdldCgpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2dlbmVyaWNDcmVhdGVGcm9tVXNhZ2UvYWZ0ZXIzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2dlbmVyaWNDcmVhdGVGcm9tVXNhZ2UvYWZ0ZXIzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTM4YjA2YQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvZ2VuZXJpY0NyZWF0ZUZyb21Vc2FnZS9hZnRlcjMuamF2YQpAQCAtMCwwICsxLDE2IEBACisvLyAiQ3JlYXRlIE1ldGhvZCAnZm9vJyIgInRydWUiCitpbnRlcmZhY2UgSW50PFQ+IHsKK30KKworY2xhc3MgQTE8VD4gaW1wbGVtZW50cyBJbnQ8VD4geworICAgIHB1YmxpYyB2b2lkIGZvbyhJbnQ8VD4gYykgeworICAgICAgICA8Y2FyZXQ+PHNlbGVjdGlvbj4vL1RvIGNoYW5nZSBib2R5IG9mIGNyZWF0ZWQgbWV0aG9kcyB1c2UgRmlsZSB8IFNldHRpbmdzIHwgRmlsZSBUZW1wbGF0ZXMuPC9zZWxlY3Rpb24+CisgICAgfQorfQorCitjbGFzcyBCMSB7CisgICAgQTE8U3RyaW5nPiBhOworICAgIHZvaWQgZm9vIChJbnQ8U3RyaW5nPiBjKSB7CisgICAgICAgIGEuZm9vKGMpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2dlbmVyaWNDcmVhdGVGcm9tVXNhZ2UvYWZ0ZXI0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2dlbmVyaWNDcmVhdGVGcm9tVXNhZ2UvYWZ0ZXI0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGQ0ODk5YQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvZ2VuZXJpY0NyZWF0ZUZyb21Vc2FnZS9hZnRlcjQuamF2YQpAQCAtMCwwICsxLDIwIEBACisvLyAiQ3JlYXRlIE1ldGhvZCAnZm9vJyIgInRydWUiCitpbnRlcmZhY2UgQ29tcGFyYWJsZTxUPiB7Cit9CisKK2NsYXNzIFIgaW1wbGVtZW50cyBDb21wYXJhYmxlPFI+IHsKKworfQorCitjbGFzcyBBMTxUPiB7CisgICAgcHVibGljIFQgZm9vKCkgeworICAgICAgICA8Y2FyZXQ+PHNlbGVjdGlvbj5yZXR1cm4gbnVsbDsgIC8vVG8gY2hhbmdlIGJvZHkgb2YgY3JlYXRlZCBtZXRob2RzIHVzZSBGaWxlIHwgU2V0dGluZ3MgfCBGaWxlIFRlbXBsYXRlcy48L3NlbGVjdGlvbj4KKyAgICB9Cit9CisKK2NsYXNzIEIxIHsKKyAgICBBMTxSPiBhOworICAgIHZvaWQgZm9vIChDb21wYXJhYmxlPFI+IGMpIHsKKyAgICAgICAgYyA9IGEuZm9vKCk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvZ2VuZXJpY0NyZWF0ZUZyb21Vc2FnZS9hZnRlcjUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvZ2VuZXJpY0NyZWF0ZUZyb21Vc2FnZS9hZnRlcjUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNWQ3MGM1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9nZW5lcmljQ3JlYXRlRnJvbVVzYWdlL2FmdGVyNS5qYXZhCkBAIC0wLDAgKzEsMTYgQEAKKy8vICJDcmVhdGUgQ29uc3RydWN0b3IiICJ0cnVlIgorcHVibGljIGNsYXNzIFNlcTxUPiB7CisgICAgcHVibGljIFNlcSgpIHt9CisKKyAgICBwdWJsaWMgU2VxKFQgeCwgU2VxPFQ+IHhzKSB7CisgICAgICAgIDxzZWxlY3Rpb24+Ly9UbyBjaGFuZ2UgYm9keSBvZiBjcmVhdGVkIG1ldGhvZHMgdXNlIEZpbGUgfCBTZXR0aW5ncyB8IEZpbGUgVGVtcGxhdGVzLjwvc2VsZWN0aW9uPgorICAgIH0KKworICAgIHN0YXRpYyA8VD4gU2VxPFQ+IG5pbCAoKSB7CisgICAgICAgIHJldHVybiBuZXcgU2VxPFQ+ICgpOworICAgIH0KKworICAgIHN0YXRpYyA8Vj4gU2VxPFY+IGNvbnMgKFYgeCwgU2VxPFY+IHhzKSB7CisgICAgICAgIHJldHVybiBuZXcgU2VxPFY+ICh4LCB4cyk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9nZW5lcmljQ3JlYXRlRnJvbVVzYWdlL2JlZm9yZTEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvZ2VuZXJpY0NyZWF0ZUZyb21Vc2FnZS9iZWZvcmUxLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTdjMmViMAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvZ2VuZXJpY0NyZWF0ZUZyb21Vc2FnZS9iZWZvcmUxLmphdmEKQEAgLTAsMCArMSwxMCBAQAorLy8gIkNyZWF0ZSBNZXRob2QgJ2dldCciICJ0cnVlIgorY2xhc3MgVzxUPiB7Cit9CisKK2NsYXNzIEMgeworICAgIHZvaWQgZm9vICgpIHsKKyAgICAgICAgVzxTdHJpbmc+IHcgPSBuZXcgVzxTdHJpbmc+KCk7CisgICAgICAgIFN0cmluZyBzID0gdy48Y2FyZXQ+Z2V0KCIiKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9nZW5lcmljQ3JlYXRlRnJvbVVzYWdlL2JlZm9yZTIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvZ2VuZXJpY0NyZWF0ZUZyb21Vc2FnZS9iZWZvcmUyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGRlNWY1MwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvZ2VuZXJpY0NyZWF0ZUZyb21Vc2FnZS9iZWZvcmUyLmphdmEKQEAgLTAsMCArMSw5IEBACisvLyAiQ3JlYXRlIE1ldGhvZCAnZ2V0JyIgInRydWUiCitjbGFzcyBHZW5lcmljPFQ+IHsKK30KKworY2xhc3MgV1dXIHsKKyAgICA8RT4gdm9pZCBmb28gKEdlbmVyaWM8RT4gcCkgeworICAgICAgICBFIGUgPSBwLmc8Y2FyZXQ+ZXQoKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9nZW5lcmljQ3JlYXRlRnJvbVVzYWdlL2JlZm9yZTMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvZ2VuZXJpY0NyZWF0ZUZyb21Vc2FnZS9iZWZvcmUzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmQ4OWQ4YgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvZ2VuZXJpY0NyZWF0ZUZyb21Vc2FnZS9iZWZvcmUzLmphdmEKQEAgLTAsMCArMSwxMyBAQAorLy8gIkNyZWF0ZSBNZXRob2QgJ2ZvbyciICJ0cnVlIgoraW50ZXJmYWNlIEludDxUPiB7Cit9CisKK2NsYXNzIEExPFQ+IGltcGxlbWVudHMgSW50PFQ+IHsKK30KKworY2xhc3MgQjEgeworICAgIEExPFN0cmluZz4gYTsKKyAgICB2b2lkIGZvbyAoSW50PFN0cmluZz4gYykgeworICAgICAgICBhLjxjYXJldD5mb28oYyk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvZ2VuZXJpY0NyZWF0ZUZyb21Vc2FnZS9iZWZvcmU0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2dlbmVyaWNDcmVhdGVGcm9tVXNhZ2UvYmVmb3JlNC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQxNWU2OGQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2dlbmVyaWNDcmVhdGVGcm9tVXNhZ2UvYmVmb3JlNC5qYXZhCkBAIC0wLDAgKzEsMTcgQEAKKy8vICJDcmVhdGUgTWV0aG9kICdmb28nIiAidHJ1ZSIKK2ludGVyZmFjZSBDb21wYXJhYmxlPFQ+IHsKK30KKworY2xhc3MgUiBpbXBsZW1lbnRzIENvbXBhcmFibGU8Uj4geworCit9CisKK2NsYXNzIEExPFQ+IHsKK30KKworY2xhc3MgQjEgeworICAgIEExPFI+IGE7CisgICAgdm9pZCBmb28gKENvbXBhcmFibGU8Uj4gYykgeworICAgICAgICBjID0gYS48Y2FyZXQ+Zm9vKCk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvZ2VuZXJpY0NyZWF0ZUZyb21Vc2FnZS9iZWZvcmU1LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2dlbmVyaWNDcmVhdGVGcm9tVXNhZ2UvYmVmb3JlNS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI4N2Y1YzcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2dlbmVyaWNDcmVhdGVGcm9tVXNhZ2UvYmVmb3JlNS5qYXZhCkBAIC0wLDAgKzEsMTIgQEAKKy8vICJDcmVhdGUgQ29uc3RydWN0b3IiICJ0cnVlIgorcHVibGljIGNsYXNzIFNlcTxUPiB7CisgICAgcHVibGljIFNlcSgpIHt9CisKKyAgICBzdGF0aWMgPFQ+IFNlcTxUPiBuaWwgKCkgeworICAgICAgICByZXR1cm4gbmV3IFNlcTxUPiAoKTsKKyAgICB9CisKKyAgICBzdGF0aWMgPFY+IFNlcTxWPiBjb25zIChWIHgsIFNlcTxWPiB4cykgeworICAgICAgICByZXR1cm4gbmV3IFNlcTxWPiAoeCwgeHMpPGNhcmV0PjsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2dlbmVyaWZ5RmlsZS9iZWZvcmUxLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2dlbmVyaWZ5RmlsZS9iZWZvcmUxLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGIxNGZlNAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvZ2VuZXJpZnlGaWxlL2JlZm9yZTEuamF2YQpAQCAtMCwwICsxLDEzIEBACisvLyAiVHJ5IHRvIGdlbmVyaWZ5ICdiZWZvcmUxLmphdmEnIiAidHJ1ZSIKKworY2xhc3MgYzxUPiB7CisgIHZvaWQgcHV0KFQgdCApIHsKKyAgfQorfQorCitjbGFzcyBVc2UgeworICB2b2lkIGYoKSB7CisgICAgYyBjID0gbmV3IGMoKTsKKyAgICA8Y2FyZXQ+Yy5wdXQoIiIpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9pMThuL2FmdGVyTm9uTmxzQ2FsbC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9pMThuL2FmdGVyTm9uTmxzQ2FsbC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI0YjdmNTQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2kxOG4vYWZ0ZXJOb25ObHNDYWxsLmphdmEKQEAgLTAsMCArMSw5IEBACitpbXBvcnQgb3JnLmpldGJyYWlucy5hbm5vdGF0aW9ucy5Ob25ObHM7CisKKy8vICJBbm5vdGF0ZSB2YXJpYWJsZSAnYScgYXMgQE5vbk5scyIgInRydWUiCitjbGFzcyBGb28geworICBwdWJsaWMgYm9vbGVhbiBkb1Rlc3QoKSB7CisgICAgQE5vbk5scyBTdHJpbmcgYTsKKyAgICByZXR1cm4gYS5zdGFydHNXaXRoKCJ0ZTxjYXJldD5zdCIpOworICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2kxOG4vYWZ0ZXJOb25ObHNDb25zdHJ1Y3Rvci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9pMThuL2FmdGVyTm9uTmxzQ29uc3RydWN0b3IuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jOWIwM2JlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9pMThuL2FmdGVyTm9uTmxzQ29uc3RydWN0b3IuamF2YQpAQCAtMCwwICsxLDggQEAKK2ltcG9ydCBvcmcuamV0YnJhaW5zLmFubm90YXRpb25zLk5vbk5sczsKKworLy8gIkFubm90YXRlIHZhcmlhYmxlICdhJyBhcyBATm9uTmxzIiAidHJ1ZSIKK2NsYXNzIEZvbyB7CisgIHB1YmxpYyB2b2lkIGRvVGVzdCgpIHsKKyAgICBATm9uTmxzIFN0cmluZyBhID0gbmV3IFN0cmluZygidGVzdCIpOworICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2kxOG4vYWZ0ZXJOb25ObHNDb25zdHJ1Y3RvckFzc2lnbm1lbnQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvaTE4bi9hZnRlck5vbk5sc0NvbnN0cnVjdG9yQXNzaWdubWVudC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJiZmEyMzgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2kxOG4vYWZ0ZXJOb25ObHNDb25zdHJ1Y3RvckFzc2lnbm1lbnQuamF2YQpAQCAtMCwwICsxLDkgQEAKK2ltcG9ydCBvcmcuamV0YnJhaW5zLmFubm90YXRpb25zLk5vbk5sczsKKworLy8gIkFubm90YXRlIHZhcmlhYmxlICdhJyBhcyBATm9uTmxzIiAidHJ1ZSIKK2NsYXNzIEZvbyB7CisgIHB1YmxpYyB2b2lkIGRvVGVzdCgpIHsKKyAgICBATm9uTmxzIFN0cmluZyBhOworICAgICBhID0gbmV3IFN0cmluZygidGVzdCIpOworICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2kxOG4vYWZ0ZXJOb25ObHNFcXVhbHMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvaTE4bi9hZnRlck5vbk5sc0VxdWFscy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZiMzUzNjcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2kxOG4vYWZ0ZXJOb25ObHNFcXVhbHMuamF2YQpAQCAtMCwwICsxLDkgQEAKK2ltcG9ydCBvcmcuamV0YnJhaW5zLmFubm90YXRpb25zLk5vbk5sczsKKworLy8gIkFubm90YXRlIHZhcmlhYmxlICdhJyBhcyBATm9uTmxzIiAidHJ1ZSIKK2NsYXNzIEZvbyB7CisgIHB1YmxpYyBib29sZWFuIGRvVGVzdCgpIHsKKyAgICBATm9uTmxzIFN0cmluZyBhOworICAgIHJldHVybiAidGVzdCIuZXF1YWxzKGEpCisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvaTE4bi9hZnRlck5vbk5sc0ZpZWxkLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2kxOG4vYWZ0ZXJOb25ObHNGaWVsZC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE1MjBkNTIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2kxOG4vYWZ0ZXJOb25ObHNGaWVsZC5qYXZhCkBAIC0wLDAgKzEsNyBAQAoraW1wb3J0IG9yZy5qZXRicmFpbnMuYW5ub3RhdGlvbnMuTm9uTmxzOworCisvLyAiQW5ub3RhdGUgZmllbGQgJ2ZpZWxkJyBhcyBATm9uTmxzIiAidHJ1ZSIKK2NsYXNzIEZvbyB7CisgIEBOb25ObHMKKyAgU3RyaW5nIGZpZWxkID0gInRleHQiOworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9pMThuL2FmdGVyTm9uTmxzUGFyYW0uamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvaTE4bi9hZnRlck5vbk5sc1BhcmFtLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDBiY2MwNgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvaTE4bi9hZnRlck5vbk5sc1BhcmFtLmphdmEKQEAgLTAsMCArMSwxMSBAQAoraW1wb3J0IG9yZy5qZXRicmFpbnMuYW5ub3RhdGlvbnMuTm9uTmxzOworCisvLyAiQW5ub3RhdGUgcGFyYW1ldGVyICdzJyBhcyBATm9uTmxzIiAidHJ1ZSIKK2NsYXNzIEZvbyB7CisgIHB1YmxpYyB2b2lkIGRvVGVzdCgpIHsKKyAgICBkb1N0cmluZ1Rlc3QoInRlc3QiKTsKKyAgfQorCisgIHByaXZhdGUgdm9pZCBkb1N0cmluZ1Rlc3QoQE5vbk5scyBTdHJpbmcgcykgeworICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2kxOG4vYWZ0ZXJOb25ObHNSZXR1cm4uamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvaTE4bi9hZnRlck5vbk5sc1JldHVybi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhiMjVhMjcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2kxOG4vYWZ0ZXJOb25ObHNSZXR1cm4uamF2YQpAQCAtMCwwICsxLDkgQEAKK2ltcG9ydCBvcmcuamV0YnJhaW5zLmFubm90YXRpb25zLk5vbk5sczsKKworLy8gIkFubm90YXRlIG1ldGhvZCAnZG9UZXN0JyBhcyBATm9uTmxzIiAidHJ1ZSIKK2NsYXNzIEZvbyB7CisgIEBOb25ObHMKKyAgcHVibGljIFN0cmluZyBkb1Rlc3QoKSB7CisgICAgcmV0dXJuICJ0ZXh0IjsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9pMThuL2FmdGVyTm9uTmxzVmFyaWFibGUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvaTE4bi9hZnRlck5vbk5sc1ZhcmlhYmxlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjQyNGMwMgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvaTE4bi9hZnRlck5vbk5sc1ZhcmlhYmxlLmphdmEKQEAgLTAsMCArMSw4IEBACitpbXBvcnQgb3JnLmpldGJyYWlucy5hbm5vdGF0aW9ucy5Ob25ObHM7CisKKy8vICJBbm5vdGF0ZSB2YXJpYWJsZSAnYScgYXMgQE5vbk5scyIgInRydWUiCitjbGFzcyBGb28geworICBwdWJsaWMgdm9pZCBkb1Rlc3QoKSB7CisgICAgQE5vbk5scyBTdHJpbmcgYSA9ICJ0ZXN0IjsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9pMThuL2FmdGVyU3lzdGVtQ2FsbC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9pMThuL2FmdGVyU3lzdGVtQ2FsbC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI2M2MzYzEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2kxOG4vYWZ0ZXJTeXN0ZW1DYWxsLmphdmEKQEAgLTAsMCArMSw2IEBACisvLyAiQW5ub3RhdGUgZmllbGQgJ291dCcgYXMgQE5vbk5scyIgInRydWUiCitjbGFzcyBGb28geworICBwdWJsaWMgdm9pZCBkb1Rlc3QoKSB7CisgICAgU3lzdGVtLm91dC5wcmludGxuKCJUZXN0Iik7CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvaTE4bi9iZWZvcmVOb25ObHNDYWxsLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2kxOG4vYmVmb3JlTm9uTmxzQ2FsbC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM3NDIzMjYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2kxOG4vYmVmb3JlTm9uTmxzQ2FsbC5qYXZhCkBAIC0wLDAgKzEsNyBAQAorLy8gIkFubm90YXRlIHZhcmlhYmxlICdhJyBhcyBATm9uTmxzIiAidHJ1ZSIKK2NsYXNzIEZvbyB7CisgIHB1YmxpYyBib29sZWFuIGRvVGVzdCgpIHsKKyAgICBTdHJpbmcgYTsKKyAgICByZXR1cm4gYS5zdGFydHNXaXRoKCJ0ZTxjYXJldD5zdCIpOworICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2kxOG4vYmVmb3JlTm9uTmxzQ29uc3RydWN0b3IuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvaTE4bi9iZWZvcmVOb25ObHNDb25zdHJ1Y3Rvci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjljODdhNTkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2kxOG4vYmVmb3JlTm9uTmxzQ29uc3RydWN0b3IuamF2YQpAQCAtMCwwICsxLDYgQEAKKy8vICJBbm5vdGF0ZSB2YXJpYWJsZSAnYScgYXMgQE5vbk5scyIgInRydWUiCitjbGFzcyBGb28geworICBwdWJsaWMgdm9pZCBkb1Rlc3QoKSB7CisgICAgU3RyaW5nIGEgPSBuZXcgU3RyaW5nKCJ0ZTxjYXJldD5zdCIpOworICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2kxOG4vYmVmb3JlTm9uTmxzQ29uc3RydWN0b3JBc3NpZ25tZW50LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2kxOG4vYmVmb3JlTm9uTmxzQ29uc3RydWN0b3JBc3NpZ25tZW50LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjdkZGJjYwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvaTE4bi9iZWZvcmVOb25ObHNDb25zdHJ1Y3RvckFzc2lnbm1lbnQuamF2YQpAQCAtMCwwICsxLDcgQEAKKy8vICJBbm5vdGF0ZSB2YXJpYWJsZSAnYScgYXMgQE5vbk5scyIgInRydWUiCitjbGFzcyBGb28geworICBwdWJsaWMgdm9pZCBkb1Rlc3QoKSB7CisgICAgU3RyaW5nIGE7CisgICAgIGEgPSBuZXcgU3RyaW5nKCJ0ZTxjYXJldD5zdCIpOworICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2kxOG4vYmVmb3JlTm9uTmxzRXF1YWxzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2kxOG4vYmVmb3JlTm9uTmxzRXF1YWxzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzY3MmI0YQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvaTE4bi9iZWZvcmVOb25ObHNFcXVhbHMuamF2YQpAQCAtMCwwICsxLDcgQEAKKy8vICJBbm5vdGF0ZSB2YXJpYWJsZSAnYScgYXMgQE5vbk5scyIgInRydWUiCitjbGFzcyBGb28geworICBwdWJsaWMgYm9vbGVhbiBkb1Rlc3QoKSB7CisgICAgU3RyaW5nIGE7CisgICAgcmV0dXJuICJ0ZTxjYXJldD5zdCIuZXF1YWxzKGEpCisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvaTE4bi9iZWZvcmVOb25ObHNGaWVsZC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9pMThuL2JlZm9yZU5vbk5sc0ZpZWxkLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDRhMDBkNgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvaTE4bi9iZWZvcmVOb25ObHNGaWVsZC5qYXZhCkBAIC0wLDAgKzEsNCBAQAorLy8gIkFubm90YXRlIGZpZWxkICdmaWVsZCcgYXMgQE5vbk5scyIgInRydWUiCitjbGFzcyBGb28geworICBTdHJpbmcgZmllbGQgPSAidDxjYXJldD5leHQiOworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9pMThuL2JlZm9yZU5vbk5sc1BhcmFtLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2kxOG4vYmVmb3JlTm9uTmxzUGFyYW0uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZWI2MGE1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9pMThuL2JlZm9yZU5vbk5sc1BhcmFtLmphdmEKQEAgLTAsMCArMSw5IEBACisvLyAiQW5ub3RhdGUgcGFyYW1ldGVyICdzJyBhcyBATm9uTmxzIiAidHJ1ZSIKK2NsYXNzIEZvbyB7CisgIHB1YmxpYyB2b2lkIGRvVGVzdCgpIHsKKyAgICBkb1N0cmluZ1Rlc3QoInRlPGNhcmV0PnN0Iik7CisgIH0KKworICBwcml2YXRlIHZvaWQgZG9TdHJpbmdUZXN0KFN0cmluZyBzKSB7CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvaTE4bi9iZWZvcmVOb25ObHNSZXR1cm4uamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvaTE4bi9iZWZvcmVOb25ObHNSZXR1cm4uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZTQxZjkzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9pMThuL2JlZm9yZU5vbk5sc1JldHVybi5qYXZhCkBAIC0wLDAgKzEsNiBAQAorLy8gIkFubm90YXRlIG1ldGhvZCAnZG9UZXN0JyBhcyBATm9uTmxzIiAidHJ1ZSIKK2NsYXNzIEZvbyB7CisgIHB1YmxpYyBTdHJpbmcgZG9UZXN0KCkgeworICAgIHJldHVybiAidDxjYXJldD5leHQiOworICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2kxOG4vYmVmb3JlTm9uTmxzVmFyaWFibGUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvaTE4bi9iZWZvcmVOb25ObHNWYXJpYWJsZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYzMGVkOTMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2kxOG4vYmVmb3JlTm9uTmxzVmFyaWFibGUuamF2YQpAQCAtMCwwICsxLDYgQEAKKy8vICJBbm5vdGF0ZSB2YXJpYWJsZSAnYScgYXMgQE5vbk5scyIgInRydWUiCitjbGFzcyBGb28geworICBwdWJsaWMgdm9pZCBkb1Rlc3QoKSB7CisgICAgU3RyaW5nIGEgPSAidDxjYXJldD5lc3QiOworICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2kxOG4vYmVmb3JlU3lzdGVtQ2FsbC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9pMThuL2JlZm9yZVN5c3RlbUNhbGwuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYTg3NjJhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9pMThuL2JlZm9yZVN5c3RlbUNhbGwuamF2YQpAQCAtMCwwICsxLDYgQEAKKy8vICJBbm5vdGF0ZSBmaWVsZCAnb3V0JyBhcyBATm9uTmxzIiAidHJ1ZSIKK2NsYXNzIEZvbyB7CisgIHB1YmxpYyB2b2lkIGRvVGVzdCgpIHsKKyAgICBTeXN0ZW0ub3V0LnByaW50bG4oIlRlPGNhcmV0PnN0Iik7CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvaTE4bml6ZS9hZnRlckNhcmV0QXRQbHVzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2kxOG5pemUvYWZ0ZXJDYXJldEF0UGx1cy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjllNTljYjEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2kxOG5pemUvYWZ0ZXJDYXJldEF0UGx1cy5qYXZhCkBAIC0wLDAgKzEsNSBAQAorY2xhc3MgYSB7CisgICAgdm9pZCBmKCkgeworICAgICAgU3RyaW5nIHMgPSBpMThuaXplZEV4cHI7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvaTE4bml6ZS9hZnRlckxpdGVyYWwuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvaTE4bml6ZS9hZnRlckxpdGVyYWwuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZTU5Y2IxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9pMThuaXplL2FmdGVyTGl0ZXJhbC5qYXZhCkBAIC0wLDAgKzEsNSBAQAorY2xhc3MgYSB7CisgICAgdm9pZCBmKCkgeworICAgICAgU3RyaW5nIHMgPSBpMThuaXplZEV4cHI7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvaTE4bml6ZS9hZnRlckxpdGVyYWxSaWdodFN1YlNlbGVjdGlvbi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9pMThuaXplL2FmdGVyTGl0ZXJhbFJpZ2h0U3ViU2VsZWN0aW9uLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWVjYmVmNAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvaTE4bml6ZS9hZnRlckxpdGVyYWxSaWdodFN1YlNlbGVjdGlvbi5qYXZhCkBAIC0wLDAgKzEsMyBAQAorY2xhc3MgcyB7CisgICAgICAgIFN0cmluZyBpID0gInRlIiArIGkxOG5pemVkRXhwcjsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2kxOG5pemUvYWZ0ZXJMb25nQ29uY2F0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2kxOG5pemUvYWZ0ZXJMb25nQ29uY2F0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWU1OWNiMQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvaTE4bml6ZS9hZnRlckxvbmdDb25jYXQuamF2YQpAQCAtMCwwICsxLDUgQEAKK2NsYXNzIGEgeworICAgIHZvaWQgZigpIHsKKyAgICAgIFN0cmluZyBzID0gaTE4bml6ZWRFeHByOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2kxOG5pemUvYmVmb3JlQ2FyZXRBdFBsdXMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvaTE4bml6ZS9iZWZvcmVDYXJldEF0UGx1cy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY1MDcyM2UKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2kxOG5pemUvYmVmb3JlQ2FyZXRBdFBsdXMuamF2YQpAQCAtMCwwICsxLDUgQEAKK2NsYXNzIGEgeworICAgIHZvaWQgZigpIHsKKyAgICAgIFN0cmluZyBzID0gInh4eHh4IiArIHRoaXMgPGNhcmV0PisgInl5eXkiOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2kxOG5pemUvYmVmb3JlQ2hhcmFjdGVyTGl0ZXJhbC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9pMThuaXplL2JlZm9yZUNoYXJhY3RlckxpdGVyYWwuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MzEwZDI0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9pMThuaXplL2JlZm9yZUNoYXJhY3RlckxpdGVyYWwuamF2YQpAQCAtMCwwICsxLDUgQEAKK2NsYXNzIGEgeworICAgIHZvaWQgZigpIHsKKyAgICAgIGNoYXIgYyA9ICc8Y2FyZXQ+eSc7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvaTE4bml6ZS9iZWZvcmVMaXRlcmFsLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2kxOG5pemUvYmVmb3JlTGl0ZXJhbC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUzZjViYTAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2kxOG5pemUvYmVmb3JlTGl0ZXJhbC5qYXZhCkBAIC0wLDAgKzEsNSBAQAorY2xhc3MgYSB7CisgICAgdm9pZCBmKCkgeworICAgICAgU3RyaW5nIHMgPSAiPGNhcmV0Pnh4eHh4IjsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9pMThuaXplL2JlZm9yZUxpdGVyYWxSaWdodFN1YlNlbGVjdGlvbi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9pMThuaXplL2JlZm9yZUxpdGVyYWxSaWdodFN1YlNlbGVjdGlvbi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA1ZGMwMDAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2kxOG5pemUvYmVmb3JlTGl0ZXJhbFJpZ2h0U3ViU2VsZWN0aW9uLmphdmEKQEAgLTAsMCArMSwzIEBACitjbGFzcyBzIHsKKyAgICAgICAgU3RyaW5nIGkgPSAidGU8Y2FyZXQ+PHNlbGVjdGlvbj5zdDwvc2VsZWN0aW9uPiI7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9pMThuaXplL2JlZm9yZUxvbmdDb25jYXQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvaTE4bml6ZS9iZWZvcmVMb25nQ29uY2F0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTI4OGMyYgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvaTE4bml6ZS9iZWZvcmVMb25nQ29uY2F0LmphdmEKQEAgLTAsMCArMSw1IEBACitjbGFzcyBhIHsKKyAgICB2b2lkIGYoKSB7CisgICAgICBTdHJpbmcgcyA9IDxjYXJldD4ieHh4eHgiICsgdGhpcyArICJ5eXl5IiArIHRoaXM7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvaTE4bml6ZS9iZWZvcmVPdXRzaWRlTGl0ZXJhbC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9pMThuaXplL2JlZm9yZU91dHNpZGVMaXRlcmFsLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2Q5ZTEwMwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvaTE4bml6ZS9iZWZvcmVPdXRzaWRlTGl0ZXJhbC5qYXZhCkBAIC0wLDAgKzEsNSBAQAorY2xhc3MgYSB7CisgICAgdm9pZCBmKCkgeworICAgICAgPGNhcmV0PlN0cmluZyBzID0gInh4eHh4IjsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9pbXBsZW1lbnRBYnN0cmFjdEZyb21OZXcvYmVmb3JlSW1wbGVtZW50SW50ZXJmYWNlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2ltcGxlbWVudEFic3RyYWN0RnJvbU5ldy9iZWZvcmVJbXBsZW1lbnRJbnRlcmZhY2UuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NDIzZDBlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9pbXBsZW1lbnRBYnN0cmFjdEZyb21OZXcvYmVmb3JlSW1wbGVtZW50SW50ZXJmYWNlLmphdmEKQEAgLTAsMCArMSw5IEBACisvLyAiSW1wbGVtZW50IE1ldGhvZHMiICJ0cnVlIgorY2xhc3MgYyB7Cisgdm9pZCBmb28oKSB7CisgICBuZXcgSTxTdHJpbmc+KCk8Y2FyZXQ+CisgfQorfQoraW50ZXJmYWNlIEk8VD4geworICBmb28oVCB0KTsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2ltcGxlbWVudEFic3RyYWN0RnJvbU5ldy9iZWZvcmVJbXBsZW1lbnRJbnRlcmZhY2VJbmNvbXBsZXRlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2ltcGxlbWVudEFic3RyYWN0RnJvbU5ldy9iZWZvcmVJbXBsZW1lbnRJbnRlcmZhY2VJbmNvbXBsZXRlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjI3OTIzNgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvaW1wbGVtZW50QWJzdHJhY3RGcm9tTmV3L2JlZm9yZUltcGxlbWVudEludGVyZmFjZUluY29tcGxldGUuamF2YQpAQCAtMCwwICsxLDkgQEAKKy8vICJJbXBsZW1lbnQgTWV0aG9kcyIgInRydWUiCitjbGFzcyBjIHsKKyB2b2lkIGZvbygpIHsKKyAgIG5ldyBJPFN0cmluZz4oPGNhcmV0PgorIH0KK30KK2ludGVyZmFjZSBJPFQ+IHsKKyAgZm9vKFQgdCk7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9pbXBsZW1lbnRBYnN0cmFjdEZyb21OZXcvYmVmb3JlSW1wbGVtZW50SW50ZXJmYWNlSW5jb21wbGV0ZUluYXZhaWxhYmxlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2ltcGxlbWVudEFic3RyYWN0RnJvbU5ldy9iZWZvcmVJbXBsZW1lbnRJbnRlcmZhY2VJbmNvbXBsZXRlSW5hdmFpbGFibGUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MmMwNWY0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9pbXBsZW1lbnRBYnN0cmFjdEZyb21OZXcvYmVmb3JlSW1wbGVtZW50SW50ZXJmYWNlSW5jb21wbGV0ZUluYXZhaWxhYmxlLmphdmEKQEAgLTAsMCArMSw5IEBACisvLyAiSW1wbGVtZW50IE1ldGhvZHMiICJmYWxzZSIKK2NsYXNzIGMgeworIHZvaWQgZm9vKCkgeworICAgbmV3IEk8U3RyaW5nPihuZXcgU3RyaW5nKDxjYXJldD4KKyB9Cit9CitpbnRlcmZhY2UgSTxUPiB7CisgIGZvbyhUIHQpOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvaW1wbGVtZW50QWJzdHJhY3RGcm9tTmV3L2JlZm9yZUltcGxlbWVudHNSdW5uYWJsZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9pbXBsZW1lbnRBYnN0cmFjdEZyb21OZXcvYmVmb3JlSW1wbGVtZW50c1J1bm5hYmxlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTU0MDljZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvaW1wbGVtZW50QWJzdHJhY3RGcm9tTmV3L2JlZm9yZUltcGxlbWVudHNSdW5uYWJsZS5qYXZhCkBAIC0wLDAgKzEsNiBAQAorLy8gIkltcGxlbWVudCBNZXRob2RzIiAidHJ1ZSIKK2NsYXNzIGMgeworIHZvaWQgZm9vKCkgeworICAgbmV3IFJ1bm5hYmxlKCk8Y2FyZXQ+CisgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvaW5pdGlhbGl6ZUZpbmFsRmllbGRJbkNvbnN0cnVjdG9yL2FmdGVyTXVsdGlwbGVJbnZva2UuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvaW5pdGlhbGl6ZUZpbmFsRmllbGRJbkNvbnN0cnVjdG9yL2FmdGVyTXVsdGlwbGVJbnZva2UuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44OTliNWU2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9pbml0aWFsaXplRmluYWxGaWVsZEluQ29uc3RydWN0b3IvYWZ0ZXJNdWx0aXBsZUludm9rZS5qYXZhCkBAIC0wLDAgKzEsMTIgQEAKKy8vICJJbml0aWFsaXplIGluIGNvbnN0cnVjdG9yIiAidHJ1ZSIKK2NsYXNzIEEgeworICBwcml2YXRlIGZpbmFsIGludCB2YXI7CisKKyAgcHJpdmF0ZSBNYWluKCkgeworICAgICAgdmFyID0gPGNhcmV0PjxzZWxlY3Rpb24+MDwvc2VsZWN0aW9uPjsKKyAgfQorCisgIHByaXZhdGUgTWFpbihpbnQgdmFyKSB7CisgICAgICB0aGlzLnZhciA9IDA7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2luaXRpYWxpemVGaW5hbEZpZWxkSW5Db25zdHJ1Y3Rvci9hZnRlclBhcmFtV2l0aFNhbWVOYW1lLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2luaXRpYWxpemVGaW5hbEZpZWxkSW5Db25zdHJ1Y3Rvci9hZnRlclBhcmFtV2l0aFNhbWVOYW1lLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjQ2NzJhZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvaW5pdGlhbGl6ZUZpbmFsRmllbGRJbkNvbnN0cnVjdG9yL2FmdGVyUGFyYW1XaXRoU2FtZU5hbWUuamF2YQpAQCAtMCwwICsxLDggQEAKKy8vICJJbml0aWFsaXplIGluIGNvbnN0cnVjdG9yIiAidHJ1ZSIKK2NsYXNzIEEgeworICBwcml2YXRlIGZpbmFsIGludCB2YXI7CisKKyAgcHJpdmF0ZSBNYWluKGludCB2YXIpIHsKKyAgICAgIHRoaXMudmFyID0gPGNhcmV0PjxzZWxlY3Rpb24+MDwvc2VsZWN0aW9uPjsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvaW5pdGlhbGl6ZUZpbmFsRmllbGRJbkNvbnN0cnVjdG9yL2FmdGVyU2ltcGxlSW52b2tlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2luaXRpYWxpemVGaW5hbEZpZWxkSW5Db25zdHJ1Y3Rvci9hZnRlclNpbXBsZUludm9rZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI1OTRjNDMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2luaXRpYWxpemVGaW5hbEZpZWxkSW5Db25zdHJ1Y3Rvci9hZnRlclNpbXBsZUludm9rZS5qYXZhCkBAIC0wLDAgKzEsOCBAQAorLy8gIkluaXRpYWxpemUgaW4gY29uc3RydWN0b3IiICJ0cnVlIgorY2xhc3MgQSB7CisgIHByaXZhdGUgZmluYWwgaW50IHZhcjsKKworICBwcml2YXRlIE1haW4oKSB7CisgICAgICB2YXIgPSA8Y2FyZXQ+PHNlbGVjdGlvbj4wPC9zZWxlY3Rpb24+OworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9pbml0aWFsaXplRmluYWxGaWVsZEluQ29uc3RydWN0b3IvYmVmb3JlTXVsdGlwbGVJbnZva2UuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvaW5pdGlhbGl6ZUZpbmFsRmllbGRJbkNvbnN0cnVjdG9yL2JlZm9yZU11bHRpcGxlSW52b2tlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTUzZWRiMgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvaW5pdGlhbGl6ZUZpbmFsRmllbGRJbkNvbnN0cnVjdG9yL2JlZm9yZU11bHRpcGxlSW52b2tlLmphdmEKQEAgLTAsMCArMSwxMCBAQAorLy8gIkluaXRpYWxpemUgaW4gY29uc3RydWN0b3IiICJ0cnVlIgorY2xhc3MgQSB7CisgIHByaXZhdGUgZmluYWwgaW50IHY8Y2FyZXQ+YXI7CisKKyAgcHJpdmF0ZSBNYWluKCkgeworICB9CisKKyAgcHJpdmF0ZSBNYWluKGludCB2YXIpIHsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvaW5pdGlhbGl6ZUZpbmFsRmllbGRJbkNvbnN0cnVjdG9yL2JlZm9yZVBhcmFtV2l0aFNhbWVOYW1lLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2luaXRpYWxpemVGaW5hbEZpZWxkSW5Db25zdHJ1Y3Rvci9iZWZvcmVQYXJhbVdpdGhTYW1lTmFtZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY5MGE4N2IKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2luaXRpYWxpemVGaW5hbEZpZWxkSW5Db25zdHJ1Y3Rvci9iZWZvcmVQYXJhbVdpdGhTYW1lTmFtZS5qYXZhCkBAIC0wLDAgKzEsNyBAQAorLy8gIkluaXRpYWxpemUgaW4gY29uc3RydWN0b3IiICJ0cnVlIgorY2xhc3MgQSB7CisgIHByaXZhdGUgZmluYWwgaW50IHY8Y2FyZXQ+YXI7CisKKyAgcHJpdmF0ZSBNYWluKGludCB2YXIpIHsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvaW5pdGlhbGl6ZUZpbmFsRmllbGRJbkNvbnN0cnVjdG9yL2JlZm9yZVNpbXBsZUludm9rZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9pbml0aWFsaXplRmluYWxGaWVsZEluQ29uc3RydWN0b3IvYmVmb3JlU2ltcGxlSW52b2tlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTE2NmY4YwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvaW5pdGlhbGl6ZUZpbmFsRmllbGRJbkNvbnN0cnVjdG9yL2JlZm9yZVNpbXBsZUludm9rZS5qYXZhCkBAIC0wLDAgKzEsNyBAQAorLy8gIkluaXRpYWxpemUgaW4gY29uc3RydWN0b3IiICJ0cnVlIgorY2xhc3MgQSB7CisgIHByaXZhdGUgZmluYWwgaW50IHY8Y2FyZXQ+YXI7CisKKyAgcHJpdmF0ZSBNYWluKCkgeworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9pbnNlcnROZXcvYWZ0ZXIxLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2luc2VydE5ldy9hZnRlcjEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40Y2JkMTVhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9pbnNlcnROZXcvYWZ0ZXIxLmphdmEKQEAgLTAsMCArMSw3IEBACisvLyAiSW5zZXJ0IG5ldyIgInRydWUiCitjbGFzcyBhIHsKKyB2b2lkIGYoKSB7CisgICAgIDxjYXJldD5uZXcgUnVudGltZUV4Y2VwdGlvbigpOworIH0KK30KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9pbnNlcnROZXcvYWZ0ZXIyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2luc2VydE5ldy9hZnRlcjIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZTFkNmY0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9pbnNlcnROZXcvYWZ0ZXIyLmphdmEKQEAgLTAsMCArMSw3IEBACisvLyAiSW5zZXJ0IG5ldyIgInRydWUiCitjbGFzcyBhIHsKKyB2b2lkIGYoKSB7CisgICAgIHRocm93IDxjYXJldD5uZXcgUnVudGltZUV4Y2VwdGlvbigpOworIH0KK30KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9pbnNlcnROZXcvYmVmb3JlMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9pbnNlcnROZXcvYmVmb3JlMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEzZTg5MTAyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9pbnNlcnROZXcvYmVmb3JlMS5qYXZhCkBAIC0wLDAgKzEsNyBAQAorLy8gIkluc2VydCBuZXciICJ0cnVlIgorY2xhc3MgYSB7Cisgdm9pZCBmKCkgeworICAgICA8Y2FyZXQ+UnVudGltZUV4Y2VwdGlvbigpOworIH0KK30KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9pbnNlcnROZXcvYmVmb3JlMi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9pbnNlcnROZXcvYmVmb3JlMi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA5OWE3MjIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2luc2VydE5ldy9iZWZvcmUyLmphdmEKQEAgLTAsMCArMSw3IEBACisvLyAiSW5zZXJ0IG5ldyIgInRydWUiCitjbGFzcyBhIHsKKyB2b2lkIGYoKSB7CisgICAgIHRocm93IDxjYXJldD5SdW50aW1lRXhjZXB0aW9uKCk7CisgfQorfQorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2luc2VydFN1cGVyL2FmdGVyMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9pbnNlcnRTdXBlci9hZnRlcjEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYjY0ZmEwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9pbnNlcnRTdXBlci9hZnRlcjEuamF2YQpAQCAtMCwwICsxLDE0IEBACisvLyAiSW5zZXJ0ICdzdXBlcigpOyciICJ0cnVlIgoraW1wb3J0IGphdmEuaW8uKjsKKworY2xhc3MgYyB7CisgcHVibGljIGMoaW50IGkpIHsKKyB9Cit9CitjbGFzcyBhIGV4dGVuZHMgYyB7CisgYSgpIHsKKyAgICAgc3VwZXIoPGNhcmV0Pik7CisgICAgIGludCBpID0gOTsKKyB9Cit9CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvaW5zZXJ0U3VwZXIvYmVmb3JlMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9pbnNlcnRTdXBlci9iZWZvcmUxLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDNmOTBhZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvaW5zZXJ0U3VwZXIvYmVmb3JlMS5qYXZhCkBAIC0wLDAgKzEsMTMgQEAKKy8vICJJbnNlcnQgJ3N1cGVyKCk7JyIgInRydWUiCitpbXBvcnQgamF2YS5pby4qOworCitjbGFzcyBjIHsKKyBwdWJsaWMgYyhpbnQgaSkgeworIH0KK30KK2NsYXNzIGEgZXh0ZW5kcyBjIHsKKyA8Y2FyZXQ+YSgpIHsKKyAgICAgaW50IGkgPSA5OworIH0KK30KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9pbnRyb2R1Y2VWYXJpYWJsZS9iZWZvcmVBc3NpZ25tZW50RXhwcmVzc2lvbi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9pbnRyb2R1Y2VWYXJpYWJsZS9iZWZvcmVBc3NpZ25tZW50RXhwcmVzc2lvbi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM1ZjdlMDkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2ludHJvZHVjZVZhcmlhYmxlL2JlZm9yZUFzc2lnbm1lbnRFeHByZXNzaW9uLmphdmEKQEAgLTAsMCArMSw5IEBACisvLyAiSW50cm9kdWNlIGxvY2FsIHZhcmlhYmxlIiAiZmFsc2UiCisKK2NsYXNzIGEgeworICB2b2lkIGEoKSB7CisgICAgaW50IGk7CisgICAgaSA9IEludGVnZXIucGFyPGNhcmV0PnNlSW50KCIxMCIpOworICB9Cit9CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvaW50cm9kdWNlVmFyaWFibGUvYmVmb3JlSW5pdGlhbGl6YXRpb24uamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvaW50cm9kdWNlVmFyaWFibGUvYmVmb3JlSW5pdGlhbGl6YXRpb24uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZjVmNTk0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9pbnRyb2R1Y2VWYXJpYWJsZS9iZWZvcmVJbml0aWFsaXphdGlvbi5qYXZhCkBAIC0wLDAgKzEsOCBAQAorLy8gIkludHJvZHVjZSBsb2NhbCB2YXJpYWJsZSIgImZhbHNlIgorCitjbGFzcyBhIHsKKyAgdm9pZCBhKCkgeworICAgIGludCBpID0gSW50ZWdlci5wYXI8Y2FyZXQ+c2VJbnQoIjEwIik7CisgIH0KK30KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9pbnRyb2R1Y2VWYXJpYWJsZS9iZWZvcmVWb2lkLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2ludHJvZHVjZVZhcmlhYmxlL2JlZm9yZVZvaWQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MzRmMTkyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9pbnRyb2R1Y2VWYXJpYWJsZS9iZWZvcmVWb2lkLmphdmEKQEAgLTAsMCArMSw5IEBACisvLyAiSW50cm9kdWNlIGxvY2FsIHZhcmlhYmxlIiAiZmFsc2UiCisKK2NsYXNzIGEgeworICB2b2lkIGEoKSB7CisgICAgYTxjYXJldD4oKTsKKyAgfQorCit9CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvaXRlcmF0ZU92ZXIvYWZ0ZXIxLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2l0ZXJhdGVPdmVyL2FmdGVyMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE1ODczMjIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2l0ZXJhdGVPdmVyL2FmdGVyMS5qYXZhCkBAIC0wLDAgKzEsMTEgQEAKK2ltcG9ydCBqYXZhLmxhbmcuYW5ub3RhdGlvbi5Bbm5vdGF0aW9uOworCisvLyAiSXRlcmF0ZSIgInRydWUiCitjbGFzcyBUZXN0IHsKKyAgdm9pZCBmb28oKSB7CisgICAgICBmb3IgKEFubm90YXRpb24gYW5ub3RhdGlvbiA6IGdldENsYXNzKCkuZ2V0QW5ub3RhdGlvbnMoKSkgeworICAgICAgICAgIAorICAgICAgfQorCisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2l0ZXJhdGVPdmVyL2FmdGVyMi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9pdGVyYXRlT3Zlci9hZnRlcjIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNTg3MzIyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9pdGVyYXRlT3Zlci9hZnRlcjIuamF2YQpAQCAtMCwwICsxLDExIEBACitpbXBvcnQgamF2YS5sYW5nLmFubm90YXRpb24uQW5ub3RhdGlvbjsKKworLy8gIkl0ZXJhdGUiICJ0cnVlIgorY2xhc3MgVGVzdCB7CisgIHZvaWQgZm9vKCkgeworICAgICAgZm9yIChBbm5vdGF0aW9uIGFubm90YXRpb24gOiBnZXRDbGFzcygpLmdldEFubm90YXRpb25zKCkpIHsKKyAgICAgICAgICAKKyAgICAgIH0KKworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9pdGVyYXRlT3Zlci9iZWZvcmUxLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2l0ZXJhdGVPdmVyL2JlZm9yZTEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMzA5NTQ5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9pdGVyYXRlT3Zlci9iZWZvcmUxLmphdmEKQEAgLTAsMCArMSw2IEBACisvLyAiSXRlcmF0ZSIgInRydWUiCitjbGFzcyBUZXN0IHsKKyAgdm9pZCBmb28oKSB7CisgICAgZ2V0Q2xhc3MoKS5nZXRBbm5vdGF0aW88Y2FyZXQ+bnMoKQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9pdGVyYXRlT3Zlci9iZWZvcmUyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2l0ZXJhdGVPdmVyL2JlZm9yZTIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMDc4NWZiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9pdGVyYXRlT3Zlci9iZWZvcmUyLmphdmEKQEAgLTAsMCArMSw2IEBACisvLyAiSXRlcmF0ZSIgInRydWUiCitjbGFzcyBUZXN0IHsKKyAgdm9pZCBmb28oKSB7CisgICAgZ2V0Q2xhc3MoKS5nZXRBbm5vdGF0aW9ucygpPGNhcmV0PgorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9pdGVyYXRlT3Zlci9iZWZvcmUzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2l0ZXJhdGVPdmVyL2JlZm9yZTMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iOWVhOTBhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9pdGVyYXRlT3Zlci9iZWZvcmUzLmphdmEKQEAgLTAsMCArMSw2IEBACisvLyAiSXRlcmF0ZSIgImZhbHNlIgorY2xhc3MgVGVzdCB7CisgIHZvaWQgZm9vKCkgeworICAgIGZpbmFsIEFubm90YXRpb25bXSBhbm5vdGF0aW9ucyA9IGdldENsYXNzKCkuZ2V0QW5ub3RhdDxjYXJldD5pb25zKCk7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2phdmFkb2NUYWdzL2FmdGVyMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9qYXZhZG9jVGFncy9hZnRlcjEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMTUxN2MwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9qYXZhZG9jVGFncy9hZnRlcjEuamF2YQpAQCAtMCwwICsxLDkgQEAKKy8vICJBZGQgdGFnIEB0aHJvd3MgamF2YS5sYW5nLkV4Y2VwdGlvbiIgInRydWUiCitjbGFzcyBhIHsKKy8qKgorICogQHRocm93cyBFeGNlcHRpb24KKyAqLworcHVibGljIHZvaWQgPGNhcmV0PnJ1bigpIHRocm93cyBFeGNlcHRpb24geworCit9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9qYXZhZG9jVGFncy9hZnRlcjMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvamF2YWRvY1RhZ3MvYWZ0ZXIzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWZkNjM3YgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvamF2YWRvY1RhZ3MvYWZ0ZXIzLmphdmEKQEAgLTAsMCArMSwxMSBAQAorLy8gIkFkZCB0YWcgQHBhcmFtIGZvciBwYXJhbWV0ZXIgJ2EnIiAidHJ1ZSIKK2NsYXNzIGEgeworCisvKioKKyAqIEBwYXJhbSBhCisgKiBAcGFyYW0gYgorKi8KK3B1YmxpYyB2b2lkIDxjYXJldD5mb28oaW50IGEsIGludCBiLCBpbiBjKXsKKworfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvamF2YWRvY1RhZ3MvYWZ0ZXI0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2phdmFkb2NUYWdzL2FmdGVyNC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVlZWZjZDMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2phdmFkb2NUYWdzL2FmdGVyNC5qYXZhCkBAIC0wLDAgKzEsNiBAQAorLy8gIkFkZCB0YWcgQHBhcmFtIDxUPiIgInRydWUiCisvKioKKyAqIEBwYXJhbSA8VD4KKyAqLworY2xhc3MgPGNhcmV0PmE8VD4geworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvamF2YWRvY1RhZ3MvYmVmb3JlMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9qYXZhZG9jVGFncy9iZWZvcmUxLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjg5Njg3NQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvamF2YWRvY1RhZ3MvYmVmb3JlMS5qYXZhCkBAIC0wLDAgKzEsOCBAQAorLy8gIkFkZCB0YWcgQHRocm93cyBqYXZhLmxhbmcuRXhjZXB0aW9uIiAidHJ1ZSIKK2NsYXNzIGEgeworLyoqCisqLworcHVibGljIHZvaWQgPGNhcmV0PnJ1bigpIHRocm93cyBFeGNlcHRpb24geworCit9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9qYXZhZG9jVGFncy9iZWZvcmUyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2phdmFkb2NUYWdzL2JlZm9yZTIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYzA2NTZmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9qYXZhZG9jVGFncy9iZWZvcmUyLmphdmEKQEAgLTAsMCArMSwxMCBAQAorLy8gIkFkZCB0YWcgQHRocm93cyBqYXZhLmxhbmdFeGNlcHRpb24iICJmYWxzZSIKK2NsYXNzIGEgeworCisvKioKKyogQHRocm93cyBqYXZhLmxhbmcuRXhjZXB0aW9uCisqLworcHVibGljIHZvaWQgPGNhcmV0PnJ1bigpIHRocm93cyBFeGNlcHRpb257CisKK30KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2phdmFkb2NUYWdzL2JlZm9yZTMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvamF2YWRvY1RhZ3MvYmVmb3JlMy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY3M2I3MjUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2phdmFkb2NUYWdzL2JlZm9yZTMuamF2YQpAQCAtMCwwICsxLDEwIEBACisvLyAiQWRkIHRhZyBAcGFyYW0gZm9yIHBhcmFtZXRlciAnYSciICJ0cnVlIgorY2xhc3MgYSB7CisKKy8qKgorICogQHBhcmFtIGIKKyovCitwdWJsaWMgdm9pZCA8Y2FyZXQ+Zm9vKGludCBhLCBpbnQgYiwgaW4gYyl7CisKK30KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2phdmFkb2NUYWdzL2JlZm9yZTQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvamF2YWRvY1RhZ3MvYmVmb3JlNC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVlNzMyMzQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2phdmFkb2NUYWdzL2JlZm9yZTQuamF2YQpAQCAtMCwwICsxLDUgQEAKKy8vICJBZGQgdGFnIEBwYXJhbSA8VD4iICJ0cnVlIgorLyoqCisgKi8KK2NsYXNzIDxjYXJldD5hPFQ+IHsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2xhbWJkYTJtZXRob2RSZWZlcmVuY2UvYWZ0ZXJDb25zdHJ1Y3RvclJlY2VpdmVyTm9uU3RhdGljSW5uZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbGFtYmRhMm1ldGhvZFJlZmVyZW5jZS9hZnRlckNvbnN0cnVjdG9yUmVjZWl2ZXJOb25TdGF0aWNJbm5lci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU2Y2M2MmIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2xhbWJkYTJtZXRob2RSZWZlcmVuY2UvYWZ0ZXJDb25zdHJ1Y3RvclJlY2VpdmVyTm9uU3RhdGljSW5uZXIuamF2YQpAQCAtMCwwICsxLDEzIEBACisvLyAiUmVwbGFjZSBsYW1iZGEgd2l0aCBtZXRob2QgcmVmZXJlbmNlIiAidHJ1ZSIKK2NsYXNzIE5vblN0YXRpY0lubmVyIHsKKyAgY2xhc3MgSW5uZXIgeworICAgIElubmVyKCkge30KKyAgfQorCisgIGludGVyZmFjZSBJMSB7CisgICAgSW5uZXIgbShOb25TdGF0aWNJbm5lciByZWMpOworICB9CisgIHN0YXRpYyB7CisgICAgSTEgaTEgPSBJbm5lcjo6bmV3OworICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2xhbWJkYTJtZXRob2RSZWZlcmVuY2UvYWZ0ZXJDb25zdHJ1Y3RvclJlY2VpdmVyU3RhdGljSW5uZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbGFtYmRhMm1ldGhvZFJlZmVyZW5jZS9hZnRlckNvbnN0cnVjdG9yUmVjZWl2ZXJTdGF0aWNJbm5lci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJlYjAxZjEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2xhbWJkYTJtZXRob2RSZWZlcmVuY2UvYWZ0ZXJDb25zdHJ1Y3RvclJlY2VpdmVyU3RhdGljSW5uZXIuamF2YQpAQCAtMCwwICsxLDE3IEBACisvLyAiUmVwbGFjZSBsYW1iZGEgd2l0aCBtZXRob2QgcmVmZXJlbmNlIiAidHJ1ZSIKK2NsYXNzIFN0YXRpY0lubmVyIHsKKworICBzdGF0aWMgY2xhc3MgSW5uZXIgeworICAgIElubmVyKFN0YXRpY0lubmVyIG91dGVyKSB7fQorICB9CisKKworICBpbnRlcmZhY2UgSTEgeworICAgIElubmVyIG0oU3RhdGljSW5uZXIgcmVjKTsKKyAgfQorCisKKyAgc3RhdGljIHsKKyAgICBJMSBpMSA9IElubmVyOjpuZXc7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2xhbWJkYTJtZXRob2RSZWZlcmVuY2UvYWZ0ZXJDb25zdHJ1Y3RvclJlZi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9sYW1iZGEybWV0aG9kUmVmZXJlbmNlL2FmdGVyQ29uc3RydWN0b3JSZWYuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMzNlMWM0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9sYW1iZGEybWV0aG9kUmVmZXJlbmNlL2FmdGVyQ29uc3RydWN0b3JSZWYuamF2YQpAQCAtMCwwICsxLDEzIEBACisvLyAiUmVwbGFjZSBsYW1iZGEgd2l0aCBtZXRob2QgcmVmZXJlbmNlIiAidHJ1ZSIKK2NsYXNzIE15VGVzdDI8WD4geworICAgIE15VGVzdDIoWCB4KSB7CisgICAgfQorCisgICAgaW50ZXJmYWNlIEk8Wj4geworICAgICAgICBNeVRlc3QyPFo+IG0oWiB6KTsKKyAgICB9CisKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CisgICAgICAgIEk8U3RyaW5nPiBzID0gTXlUZXN0Mjo6bmV3OworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbGFtYmRhMm1ldGhvZFJlZmVyZW5jZS9hZnRlckNvbnN0cnVjdG9yUmVmMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9sYW1iZGEybWV0aG9kUmVmZXJlbmNlL2FmdGVyQ29uc3RydWN0b3JSZWYxLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTYxMjkwMjIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2xhbWJkYTJtZXRob2RSZWZlcmVuY2UvYWZ0ZXJDb25zdHJ1Y3RvclJlZjEuamF2YQpAQCAtMCwwICsxLDMzIEBACisvLyAiUmVwbGFjZSBsYW1iZGEgd2l0aCBtZXRob2QgcmVmZXJlbmNlIiAidHJ1ZSIKK2NsYXNzIE5vblN0YXRpY0lubmVyMyB7CisgICAgY2xhc3MgRm9vIHsKKyAgICAgICAgRm9vKEludGVnZXIgaSkge30KKyAgICAgICAgRm9vKCkge30KKyAgICB9CisKKyAgICBpbnRlcmZhY2UgSTE8WD4geworICAgICAgICBYIG0oaW50IGkpOworICAgIH0KKworICAgIGludGVyZmFjZSBJMjxYPiB7CisgICAgICAgIFggbSgpOworICAgIH0KKworICAgIGludGVyZmFjZSBJMzxYPiB7CisgICAgICAgIFggbShOb25TdGF0aWNJbm5lcjMgcmVjLCBpbnQgaSk7CisgICAgfQorCisgICAgaW50ZXJmYWNlIEk0PFg+IHsKKyAgICAgICAgWCBtKE5vblN0YXRpY0lubmVyMyByZWMpOworICAgIH0KKworICAgIHsKKyAgICAgICAgSTE8Rm9vPiBiMSA9IEZvbzo6bmV3OworICAgICAgICBJMjxGb28+IGIyID0gKCkgLT4gbmV3IEZvbygpOworICAgIH0KKworICAgIHsKKyAgICAgICAgSTM8Rm9vPiBiMSA9IChyZWMsIGkpIC0+IHJlYy5uZXcgRm9vKGkpOworICAgICAgICBJNDxGb28+IGIyID0gKHJlYykgLT4gcmVjLm5ldyBGb28oKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9sYW1iZGEybWV0aG9kUmVmZXJlbmNlL2FmdGVyQ29uc3RydWN0b3JSZWYyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2xhbWJkYTJtZXRob2RSZWZlcmVuY2UvYWZ0ZXJDb25zdHJ1Y3RvclJlZjIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ODA2MWQwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9sYW1iZGEybWV0aG9kUmVmZXJlbmNlL2FmdGVyQ29uc3RydWN0b3JSZWYyLmphdmEKQEAgLTAsMCArMSwzMyBAQAorLy8gIlJlcGxhY2UgbGFtYmRhIHdpdGggbWV0aG9kIHJlZmVyZW5jZSIgInRydWUiCitjbGFzcyBOb25TdGF0aWNJbm5lcjMgeworICAgIGNsYXNzIEZvbyB7CisgICAgICAgIEZvbyhJbnRlZ2VyIGkpIHt9CisgICAgICAgIEZvbygpIHt9CisgICAgfQorCisgICAgaW50ZXJmYWNlIEkxPFg+IHsKKyAgICAgICAgWCBtKGludCBpKTsKKyAgICB9CisKKyAgICBpbnRlcmZhY2UgSTI8WD4geworICAgICAgICBYIG0oKTsKKyAgICB9CisKKyAgICBpbnRlcmZhY2UgSTM8WD4geworICAgICAgICBYIG0oTm9uU3RhdGljSW5uZXIzIHJlYywgaW50IGkpOworICAgIH0KKworICAgIGludGVyZmFjZSBJNDxYPiB7CisgICAgICAgIFggbShOb25TdGF0aWNJbm5lcjMgcmVjKTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIEkxPEZvbz4gYjEgPSAoaSkgLT4gbmV3IEZvbyhpKTsKKyAgICAgICAgSTI8Rm9vPiBiMiA9IEZvbzo6bmV3OworICAgIH0KKworICAgIHsKKyAgICAgICAgSTM8Rm9vPiBiMSA9IChyZWMsIGkpIC0+IHJlYy5uZXcgRm9vKGkpOworICAgICAgICBJNDxGb28+IGIyID0gKHJlYykgLT4gcmVjLm5ldyBGb28oKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9sYW1iZGEybWV0aG9kUmVmZXJlbmNlL2FmdGVyQ29uc3RydWN0b3JSZWYzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2xhbWJkYTJtZXRob2RSZWZlcmVuY2UvYWZ0ZXJDb25zdHJ1Y3RvclJlZjMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZTAyZmE0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9sYW1iZGEybWV0aG9kUmVmZXJlbmNlL2FmdGVyQ29uc3RydWN0b3JSZWYzLmphdmEKQEAgLTAsMCArMSwzMyBAQAorLy8gIlJlcGxhY2UgbGFtYmRhIHdpdGggbWV0aG9kIHJlZmVyZW5jZSIgInRydWUiCitjbGFzcyBOb25TdGF0aWNJbm5lcjMgeworICAgIGNsYXNzIEZvbyB7CisgICAgICAgIEZvbyhJbnRlZ2VyIGkpIHt9CisgICAgICAgIEZvbygpIHt9CisgICAgfQorCisgICAgaW50ZXJmYWNlIEkxPFg+IHsKKyAgICAgICAgWCBtKGludCBpKTsKKyAgICB9CisKKyAgICBpbnRlcmZhY2UgSTI8WD4geworICAgICAgICBYIG0oKTsKKyAgICB9CisKKyAgICBpbnRlcmZhY2UgSTM8WD4geworICAgICAgICBYIG0oTm9uU3RhdGljSW5uZXIzIHJlYywgaW50IGkpOworICAgIH0KKworICAgIGludGVyZmFjZSBJNDxYPiB7CisgICAgICAgIFggbShOb25TdGF0aWNJbm5lcjMgcmVjKTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIEkxPEZvbz4gYjEgPSAoaSkgLT4gbmV3IEZvbyhpKTsKKyAgICAgICAgSTI8Rm9vPiBiMiA9ICgpIC0+IG5ldyBGb28oKTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIEkzPEZvbz4gYjEgPSBGb286Om5ldzsKKyAgICAgICAgSTQ8Rm9vPiBiMiA9IChyZWMpIC0+IHJlYy5uZXcgRm9vKCk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbGFtYmRhMm1ldGhvZFJlZmVyZW5jZS9hZnRlckNvbnN0cnVjdG9yUmVmNC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9sYW1iZGEybWV0aG9kUmVmZXJlbmNlL2FmdGVyQ29uc3RydWN0b3JSZWY0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTU5Njg1ZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbGFtYmRhMm1ldGhvZFJlZmVyZW5jZS9hZnRlckNvbnN0cnVjdG9yUmVmNC5qYXZhCkBAIC0wLDAgKzEsMzMgQEAKKy8vICJSZXBsYWNlIGxhbWJkYSB3aXRoIG1ldGhvZCByZWZlcmVuY2UiICJ0cnVlIgorY2xhc3MgTm9uU3RhdGljSW5uZXIzIHsKKyAgICBjbGFzcyBGb28geworICAgICAgICBGb28oSW50ZWdlciBpKSB7fQorICAgICAgICBGb28oKSB7fQorICAgIH0KKworICAgIGludGVyZmFjZSBJMTxYPiB7CisgICAgICAgIFggbShpbnQgaSk7CisgICAgfQorCisgICAgaW50ZXJmYWNlIEkyPFg+IHsKKyAgICAgICAgWCBtKCk7CisgICAgfQorCisgICAgaW50ZXJmYWNlIEkzPFg+IHsKKyAgICAgICAgWCBtKE5vblN0YXRpY0lubmVyMyByZWMsIGludCBpKTsKKyAgICB9CisKKyAgICBpbnRlcmZhY2UgSTQ8WD4geworICAgICAgICBYIG0oTm9uU3RhdGljSW5uZXIzIHJlYyk7CisgICAgfQorCisgICAgeworICAgICAgICBJMTxGb28+IGIxID0gKGkpIC0+IG5ldyBGb28oaSk7CisgICAgICAgIEkyPEZvbz4gYjIgPSAoKSAtPiBuZXcgRm9vKCk7CisgICAgfQorCisgICAgeworICAgICAgICBJMzxGb28+IGIxID0gKHJlYywgaSkgLT4gcmVjLm5ldyBGb28oaSk7CisgICAgICAgIEk0PEZvbz4gYjIgPSBGb286Om5ldzsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9sYW1iZGEybWV0aG9kUmVmZXJlbmNlL2FmdGVyQ29uc3RydWN0b3JSZWY2LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2xhbWJkYTJtZXRob2RSZWZlcmVuY2UvYWZ0ZXJDb25zdHJ1Y3RvclJlZjYuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YjU1YzBmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9sYW1iZGEybWV0aG9kUmVmZXJlbmNlL2FmdGVyQ29uc3RydWN0b3JSZWY2LmphdmEKQEAgLTAsMCArMSwxMyBAQAorLy8gIlJlcGxhY2UgbGFtYmRhIHdpdGggbWV0aG9kIHJlZmVyZW5jZSIgInRydWUiCitjbGFzcyBOb25TdGF0aWNJbm5lcjMgeworICAgIGNsYXNzIEZvbyB7CisgICAgfQorCisgICAgaW50ZXJmYWNlIEkxPFg+IHsKKyAgICAgICAgWCBtKCk7CisgICAgfQorCisgICAgeworICAgICAgICBJMTxGb28+IGIyID0gRm9vOjpuZXc7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbGFtYmRhMm1ldGhvZFJlZmVyZW5jZS9hZnRlck5vUGFyYW1zLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2xhbWJkYTJtZXRob2RSZWZlcmVuY2UvYWZ0ZXJOb1BhcmFtcy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUzZDhlYTIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2xhbWJkYTJtZXRob2RSZWZlcmVuY2UvYWZ0ZXJOb1BhcmFtcy5qYXZhCkBAIC0wLDAgKzEsOSBAQAorLy8gIlJlcGxhY2UgbGFtYmRhIHdpdGggbWV0aG9kIHJlZmVyZW5jZSIgInRydWUiCitjbGFzcyBFeGFtcGxlIHsKKyAgcHVibGljIHZvaWQgbSgpIHsKKyAgfQorCisgIHsKKyAgICBSdW5uYWJsZSByID0gdGhpczo6bTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbGFtYmRhMm1ldGhvZFJlZmVyZW5jZS9hZnRlck5vUGFyYW1zU3RhdGljLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2xhbWJkYTJtZXRob2RSZWZlcmVuY2UvYWZ0ZXJOb1BhcmFtc1N0YXRpYy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI5YTI1ZGMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2xhbWJkYTJtZXRob2RSZWZlcmVuY2UvYWZ0ZXJOb1BhcmFtc1N0YXRpYy5qYXZhCkBAIC0wLDAgKzEsOSBAQAorLy8gIlJlcGxhY2UgbGFtYmRhIHdpdGggbWV0aG9kIHJlZmVyZW5jZSIgInRydWUiCitjbGFzcyBFeGFtcGxlIHsKKyAgcHVibGljIHN0YXRpYyB2b2lkIG0oKSB7CisgIH0KKworICB7CisgICAgUnVubmFibGUgciA9IEV4YW1wbGU6Om07CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2xhbWJkYTJtZXRob2RSZWZlcmVuY2UvYWZ0ZXJSZWNlaXZlclR5cGUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbGFtYmRhMm1ldGhvZFJlZmVyZW5jZS9hZnRlclJlY2VpdmVyVHlwZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmViMTI1ZjEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2xhbWJkYTJtZXRob2RSZWZlcmVuY2UvYWZ0ZXJSZWNlaXZlclR5cGUuamF2YQpAQCAtMCwwICsxLDEyIEBACisvLyAiUmVwbGFjZSBsYW1iZGEgd2l0aCBtZXRob2QgcmVmZXJlbmNlIiAidHJ1ZSIKK2NsYXNzIEV4YW1wbGUgeworICBpbnRlcmZhY2UgSSB7CisgICAgdm9pZCBmb28oRXhhbXBsZSBlKTsKKyAgfQorCisgIHZvaWQgbSgpIHt9CisKKyAgeworICAgIEkgaSA9IEV4YW1wbGU6Om07CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2xhbWJkYTJtZXRob2RSZWZlcmVuY2UvYWZ0ZXJTYW1lUGFyYW1zLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2xhbWJkYTJtZXRob2RSZWZlcmVuY2UvYWZ0ZXJTYW1lUGFyYW1zLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjk3MzllMQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbGFtYmRhMm1ldGhvZFJlZmVyZW5jZS9hZnRlclNhbWVQYXJhbXMuamF2YQpAQCAtMCwwICsxLDEyIEBACisvLyAiUmVwbGFjZSBsYW1iZGEgd2l0aCBtZXRob2QgcmVmZXJlbmNlIiAidHJ1ZSIKK2NsYXNzIEV4YW1wbGUgeworICBpbnRlcmZhY2UgSSB7CisgICAgICB2b2lkIGZvbyhpbnQgaSk7CisgICAgfQorICAKKyAgICB2b2lkIG0oaW50IGkpIHt9CisgIAorICAgIHsKKyAgICAgIEkgaSA9IHRoaXM6Om07CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbGFtYmRhMm1ldGhvZFJlZmVyZW5jZS9iZWZvcmVBbm9ueW1vdXMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbGFtYmRhMm1ldGhvZFJlZmVyZW5jZS9iZWZvcmVBbm9ueW1vdXMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNjhhZWM5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9sYW1iZGEybWV0aG9kUmVmZXJlbmNlL2JlZm9yZUFub255bW91cy5qYXZhCkBAIC0wLDAgKzEsMTMgQEAKKy8vICJSZXBsYWNlIGxhbWJkYSB3aXRoIG1ldGhvZCByZWZlcmVuY2UiICJmYWxzZSIKK2NsYXNzIE5vblN0YXRpY0lubmVyMyB7CisgICAgY2xhc3MgRm9vIHsKKyAgICB9CisKKyAgICBpbnRlcmZhY2UgSTE8WD4geworICAgICAgICBYIG0oKTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIEkxPEZvbz4gYjIgPSAoKSAtPiA8Y2FyZXQ+bmV3IEZvbygpe307CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbGFtYmRhMm1ldGhvZFJlZmVyZW5jZS9iZWZvcmVDb25zdHJ1Y3RvclJlY2VpdmVyTm9uU3RhdGljSW5uZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbGFtYmRhMm1ldGhvZFJlZmVyZW5jZS9iZWZvcmVDb25zdHJ1Y3RvclJlY2VpdmVyTm9uU3RhdGljSW5uZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MGMyMzAwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9sYW1iZGEybWV0aG9kUmVmZXJlbmNlL2JlZm9yZUNvbnN0cnVjdG9yUmVjZWl2ZXJOb25TdGF0aWNJbm5lci5qYXZhCkBAIC0wLDAgKzEsMTMgQEAKKy8vICJSZXBsYWNlIGxhbWJkYSB3aXRoIG1ldGhvZCByZWZlcmVuY2UiICJ0cnVlIgorY2xhc3MgTm9uU3RhdGljSW5uZXIgeworICBjbGFzcyBJbm5lciB7CisgICAgSW5uZXIoKSB7fQorICB9CisKKyAgaW50ZXJmYWNlIEkxIHsKKyAgICBJbm5lciBtKE5vblN0YXRpY0lubmVyIHJlYyk7CisgIH0KKyAgc3RhdGljIHsKKyAgICBJMSBpMSA9IChyZWMpIC0+IHI8Y2FyZXQ+ZWMubmV3IElubmVyKCk7CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbGFtYmRhMm1ldGhvZFJlZmVyZW5jZS9iZWZvcmVDb25zdHJ1Y3RvclJlY2VpdmVyU3RhdGljSW5uZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbGFtYmRhMm1ldGhvZFJlZmVyZW5jZS9iZWZvcmVDb25zdHJ1Y3RvclJlY2VpdmVyU3RhdGljSW5uZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNmQwNTVjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9sYW1iZGEybWV0aG9kUmVmZXJlbmNlL2JlZm9yZUNvbnN0cnVjdG9yUmVjZWl2ZXJTdGF0aWNJbm5lci5qYXZhCkBAIC0wLDAgKzEsMTcgQEAKKy8vICJSZXBsYWNlIGxhbWJkYSB3aXRoIG1ldGhvZCByZWZlcmVuY2UiICJ0cnVlIgorY2xhc3MgU3RhdGljSW5uZXIgeworCisgIHN0YXRpYyBjbGFzcyBJbm5lciB7CisgICAgSW5uZXIoU3RhdGljSW5uZXIgb3V0ZXIpIHt9CisgIH0KKworCisgIGludGVyZmFjZSBJMSB7CisgICAgSW5uZXIgbShTdGF0aWNJbm5lciByZWMpOworICB9CisKKworICBzdGF0aWMgeworICAgIEkxIGkxID0gKHJlYykgLT4gPGNhcmV0Pm5ldyBJbm5lcihyZWMpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9sYW1iZGEybWV0aG9kUmVmZXJlbmNlL2JlZm9yZUNvbnN0cnVjdG9yUmVmLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2xhbWJkYTJtZXRob2RSZWZlcmVuY2UvYmVmb3JlQ29uc3RydWN0b3JSZWYuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYmY0YTQ0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9sYW1iZGEybWV0aG9kUmVmZXJlbmNlL2JlZm9yZUNvbnN0cnVjdG9yUmVmLmphdmEKQEAgLTAsMCArMSwxMyBAQAorLy8gIlJlcGxhY2UgbGFtYmRhIHdpdGggbWV0aG9kIHJlZmVyZW5jZSIgInRydWUiCitjbGFzcyBNeVRlc3QyPFg+IHsKKyAgICBNeVRlc3QyKFggeCkgeworICAgIH0KKworICAgIGludGVyZmFjZSBJPFo+IHsKKyAgICAgICAgTXlUZXN0MjxaPiBtKFogeik7CisgICAgfQorCisgICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgeworICAgICAgICBJPFN0cmluZz4gcyA9ICh6KSAtPiBuZXcgTXlUZTxjYXJldD5zdDI8U3RyaW5nPih6KTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2xhbWJkYTJtZXRob2RSZWZlcmVuY2UvYmVmb3JlQ29uc3RydWN0b3JSZWYxLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2xhbWJkYTJtZXRob2RSZWZlcmVuY2UvYmVmb3JlQ29uc3RydWN0b3JSZWYxLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzg4Yjc2MgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbGFtYmRhMm1ldGhvZFJlZmVyZW5jZS9iZWZvcmVDb25zdHJ1Y3RvclJlZjEuamF2YQpAQCAtMCwwICsxLDMzIEBACisvLyAiUmVwbGFjZSBsYW1iZGEgd2l0aCBtZXRob2QgcmVmZXJlbmNlIiAidHJ1ZSIKK2NsYXNzIE5vblN0YXRpY0lubmVyMyB7CisgICAgY2xhc3MgRm9vIHsKKyAgICAgICAgRm9vKEludGVnZXIgaSkge30KKyAgICAgICAgRm9vKCkge30KKyAgICB9CisKKyAgICBpbnRlcmZhY2UgSTE8WD4geworICAgICAgICBYIG0oaW50IGkpOworICAgIH0KKworICAgIGludGVyZmFjZSBJMjxYPiB7CisgICAgICAgIFggbSgpOworICAgIH0KKworICAgIGludGVyZmFjZSBJMzxYPiB7CisgICAgICAgIFggbShOb25TdGF0aWNJbm5lcjMgcmVjLCBpbnQgaSk7CisgICAgfQorCisgICAgaW50ZXJmYWNlIEk0PFg+IHsKKyAgICAgICAgWCBtKE5vblN0YXRpY0lubmVyMyByZWMpOworICAgIH0KKworICAgIHsKKyAgICAgICAgSTE8Rm9vPiBiMSA9IChpKSAtPiA8Y2FyZXQ+bmV3IEZvbyhpKTsKKyAgICAgICAgSTI8Rm9vPiBiMiA9ICgpIC0+IG5ldyBGb28oKTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIEkzPEZvbz4gYjEgPSAocmVjLCBpKSAtPiByZWMubmV3IEZvbyhpKTsKKyAgICAgICAgSTQ8Rm9vPiBiMiA9IChyZWMpIC0+IHJlYy5uZXcgRm9vKCk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbGFtYmRhMm1ldGhvZFJlZmVyZW5jZS9iZWZvcmVDb25zdHJ1Y3RvclJlZjIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbGFtYmRhMm1ldGhvZFJlZmVyZW5jZS9iZWZvcmVDb25zdHJ1Y3RvclJlZjIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YTc3NjhlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9sYW1iZGEybWV0aG9kUmVmZXJlbmNlL2JlZm9yZUNvbnN0cnVjdG9yUmVmMi5qYXZhCkBAIC0wLDAgKzEsMzMgQEAKKy8vICJSZXBsYWNlIGxhbWJkYSB3aXRoIG1ldGhvZCByZWZlcmVuY2UiICJ0cnVlIgorY2xhc3MgTm9uU3RhdGljSW5uZXIzIHsKKyAgICBjbGFzcyBGb28geworICAgICAgICBGb28oSW50ZWdlciBpKSB7fQorICAgICAgICBGb28oKSB7fQorICAgIH0KKworICAgIGludGVyZmFjZSBJMTxYPiB7CisgICAgICAgIFggbShpbnQgaSk7CisgICAgfQorCisgICAgaW50ZXJmYWNlIEkyPFg+IHsKKyAgICAgICAgWCBtKCk7CisgICAgfQorCisgICAgaW50ZXJmYWNlIEkzPFg+IHsKKyAgICAgICAgWCBtKE5vblN0YXRpY0lubmVyMyByZWMsIGludCBpKTsKKyAgICB9CisKKyAgICBpbnRlcmZhY2UgSTQ8WD4geworICAgICAgICBYIG0oTm9uU3RhdGljSW5uZXIzIHJlYyk7CisgICAgfQorCisgICAgeworICAgICAgICBJMTxGb28+IGIxID0gKGkpIC0+IG5ldyBGb28oaSk7CisgICAgICAgIEkyPEZvbz4gYjIgPSAoKSAtPiA8Y2FyZXQ+bmV3IEZvbygpOworICAgIH0KKworICAgIHsKKyAgICAgICAgSTM8Rm9vPiBiMSA9IChyZWMsIGkpIC0+IHJlYy5uZXcgRm9vKGkpOworICAgICAgICBJNDxGb28+IGIyID0gKHJlYykgLT4gcmVjLm5ldyBGb28oKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9sYW1iZGEybWV0aG9kUmVmZXJlbmNlL2JlZm9yZUNvbnN0cnVjdG9yUmVmMy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9sYW1iZGEybWV0aG9kUmVmZXJlbmNlL2JlZm9yZUNvbnN0cnVjdG9yUmVmMy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUxYzE4MWEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2xhbWJkYTJtZXRob2RSZWZlcmVuY2UvYmVmb3JlQ29uc3RydWN0b3JSZWYzLmphdmEKQEAgLTAsMCArMSwzMyBAQAorLy8gIlJlcGxhY2UgbGFtYmRhIHdpdGggbWV0aG9kIHJlZmVyZW5jZSIgInRydWUiCitjbGFzcyBOb25TdGF0aWNJbm5lcjMgeworICAgIGNsYXNzIEZvbyB7CisgICAgICAgIEZvbyhJbnRlZ2VyIGkpIHt9CisgICAgICAgIEZvbygpIHt9CisgICAgfQorCisgICAgaW50ZXJmYWNlIEkxPFg+IHsKKyAgICAgICAgWCBtKGludCBpKTsKKyAgICB9CisKKyAgICBpbnRlcmZhY2UgSTI8WD4geworICAgICAgICBYIG0oKTsKKyAgICB9CisKKyAgICBpbnRlcmZhY2UgSTM8WD4geworICAgICAgICBYIG0oTm9uU3RhdGljSW5uZXIzIHJlYywgaW50IGkpOworICAgIH0KKworICAgIGludGVyZmFjZSBJNDxYPiB7CisgICAgICAgIFggbShOb25TdGF0aWNJbm5lcjMgcmVjKTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIEkxPEZvbz4gYjEgPSAoaSkgLT4gbmV3IEZvbyhpKTsKKyAgICAgICAgSTI8Rm9vPiBiMiA9ICgpIC0+IG5ldyBGb28oKTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIEkzPEZvbz4gYjEgPSAocmVjLCBpKSAtPiA8Y2FyZXQ+cmVjLm5ldyBGb28oaSk7CisgICAgICAgIEk0PEZvbz4gYjIgPSAocmVjKSAtPiByZWMubmV3IEZvbygpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2xhbWJkYTJtZXRob2RSZWZlcmVuY2UvYmVmb3JlQ29uc3RydWN0b3JSZWY0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2xhbWJkYTJtZXRob2RSZWZlcmVuY2UvYmVmb3JlQ29uc3RydWN0b3JSZWY0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmU2MTM0MgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbGFtYmRhMm1ldGhvZFJlZmVyZW5jZS9iZWZvcmVDb25zdHJ1Y3RvclJlZjQuamF2YQpAQCAtMCwwICsxLDMzIEBACisvLyAiUmVwbGFjZSBsYW1iZGEgd2l0aCBtZXRob2QgcmVmZXJlbmNlIiAidHJ1ZSIKK2NsYXNzIE5vblN0YXRpY0lubmVyMyB7CisgICAgY2xhc3MgRm9vIHsKKyAgICAgICAgRm9vKEludGVnZXIgaSkge30KKyAgICAgICAgRm9vKCkge30KKyAgICB9CisKKyAgICBpbnRlcmZhY2UgSTE8WD4geworICAgICAgICBYIG0oaW50IGkpOworICAgIH0KKworICAgIGludGVyZmFjZSBJMjxYPiB7CisgICAgICAgIFggbSgpOworICAgIH0KKworICAgIGludGVyZmFjZSBJMzxYPiB7CisgICAgICAgIFggbShOb25TdGF0aWNJbm5lcjMgcmVjLCBpbnQgaSk7CisgICAgfQorCisgICAgaW50ZXJmYWNlIEk0PFg+IHsKKyAgICAgICAgWCBtKE5vblN0YXRpY0lubmVyMyByZWMpOworICAgIH0KKworICAgIHsKKyAgICAgICAgSTE8Rm9vPiBiMSA9IChpKSAtPiBuZXcgRm9vKGkpOworICAgICAgICBJMjxGb28+IGIyID0gKCkgLT4gbmV3IEZvbygpOworICAgIH0KKworICAgIHsKKyAgICAgICAgSTM8Rm9vPiBiMSA9IChyZWMsIGkpIC0+IHJlYy5uZXcgRm9vKGkpOworICAgICAgICBJNDxGb28+IGIyID0gKHJlYykgLT4gPGNhcmV0PnJlYy5uZXcgRm9vKCk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbGFtYmRhMm1ldGhvZFJlZmVyZW5jZS9iZWZvcmVDb25zdHJ1Y3RvclJlZjUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbGFtYmRhMm1ldGhvZFJlZmVyZW5jZS9iZWZvcmVDb25zdHJ1Y3RvclJlZjUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMTQyYmEwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9sYW1iZGEybWV0aG9kUmVmZXJlbmNlL2JlZm9yZUNvbnN0cnVjdG9yUmVmNS5qYXZhCkBAIC0wLDAgKzEsMzMgQEAKKy8vICJSZXBsYWNlIGxhbWJkYSB3aXRoIG1ldGhvZCByZWZlcmVuY2UiICJmYWxzZSIKK2NsYXNzIE5vblN0YXRpY0lubmVyMyB7CisgICAgY2xhc3MgRm9vIHsKKyAgICAgICAgRm9vKEludGVnZXIgaSkge30KKyAgICAgICAgRm9vKCkge30KKyAgICB9CisKKyAgICBpbnRlcmZhY2UgSTE8WD4geworICAgICAgICBYIG0oaW50IGkpOworICAgIH0KKworICAgIGludGVyZmFjZSBJMjxYPiB7CisgICAgICAgIFggbSgpOworICAgIH0KKworICAgIGludGVyZmFjZSBJMzxYPiB7CisgICAgICAgIFggbShOb25TdGF0aWNJbm5lcjMgcmVjLCBpbnQgaSk7CisgICAgfQorCisgICAgaW50ZXJmYWNlIEk0PFg+IHsKKyAgICAgICAgWCBtKE5vblN0YXRpY0lubmVyMyByZWMpOworICAgIH0KKworICAgIHsKKyAgICAgICAgSTE8Rm9vPiBiMSA9IChpKSAtPiBuZXcgRm9vKGkpOworICAgICAgICBJMjxGb28+IGIyID0gKCkgLT4gbmV3IEZvbygpOworICAgIH0KKworICAgIHsKKyAgICAgICAgSTM8Rm9vPiBiMSA9IChyZWMsIGkpIC0+IHJlYy5uZXcgRm9vKGkpOworICAgICAgICBJNDxGb28+IGIyID0gKHJlYykgLT4gPGNhcmV0Pm5ldyBGb28oKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9sYW1iZGEybWV0aG9kUmVmZXJlbmNlL2JlZm9yZUNvbnN0cnVjdG9yUmVmNi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9sYW1iZGEybWV0aG9kUmVmZXJlbmNlL2JlZm9yZUNvbnN0cnVjdG9yUmVmNi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNiMWJjOGEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2xhbWJkYTJtZXRob2RSZWZlcmVuY2UvYmVmb3JlQ29uc3RydWN0b3JSZWY2LmphdmEKQEAgLTAsMCArMSwxMyBAQAorLy8gIlJlcGxhY2UgbGFtYmRhIHdpdGggbWV0aG9kIHJlZmVyZW5jZSIgInRydWUiCitjbGFzcyBOb25TdGF0aWNJbm5lcjMgeworICAgIGNsYXNzIEZvbyB7CisgICAgfQorCisgICAgaW50ZXJmYWNlIEkxPFg+IHsKKyAgICAgICAgWCBtKCk7CisgICAgfQorCisgICAgeworICAgICAgICBJMTxGb28+IGIyID0gKCkgLT4gPGNhcmV0Pm5ldyBGb28oKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9sYW1iZGEybWV0aG9kUmVmZXJlbmNlL2JlZm9yZU5vUGFyYW1zLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2xhbWJkYTJtZXRob2RSZWZlcmVuY2UvYmVmb3JlTm9QYXJhbXMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMDZiOWQ5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9sYW1iZGEybWV0aG9kUmVmZXJlbmNlL2JlZm9yZU5vUGFyYW1zLmphdmEKQEAgLTAsMCArMSw5IEBACisvLyAiUmVwbGFjZSBsYW1iZGEgd2l0aCBtZXRob2QgcmVmZXJlbmNlIiAidHJ1ZSIKK2NsYXNzIEV4YW1wbGUgeworICBwdWJsaWMgdm9pZCBtKCkgeworICB9CisKKyAgeworICAgIFJ1bm5hYmxlIHIgPSAoKSAtPiA8Y2FyZXQ+bSgpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9sYW1iZGEybWV0aG9kUmVmZXJlbmNlL2JlZm9yZU5vUGFyYW1zU3RhdGljLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2xhbWJkYTJtZXRob2RSZWZlcmVuY2UvYmVmb3JlTm9QYXJhbXNTdGF0aWMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MDE0NzQ5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9sYW1iZGEybWV0aG9kUmVmZXJlbmNlL2JlZm9yZU5vUGFyYW1zU3RhdGljLmphdmEKQEAgLTAsMCArMSw5IEBACisvLyAiUmVwbGFjZSBsYW1iZGEgd2l0aCBtZXRob2QgcmVmZXJlbmNlIiAidHJ1ZSIKK2NsYXNzIEV4YW1wbGUgeworICBwdWJsaWMgc3RhdGljIHZvaWQgbSgpIHsKKyAgfQorCisgIHsKKyAgICBSdW5uYWJsZSByID0gKCkgLT4gPGNhcmV0Pm0oKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbGFtYmRhMm1ldGhvZFJlZmVyZW5jZS9iZWZvcmVSZWNlaXZlclR5cGUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbGFtYmRhMm1ldGhvZFJlZmVyZW5jZS9iZWZvcmVSZWNlaXZlclR5cGUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNjQ2OGQyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9sYW1iZGEybWV0aG9kUmVmZXJlbmNlL2JlZm9yZVJlY2VpdmVyVHlwZS5qYXZhCkBAIC0wLDAgKzEsMTIgQEAKKy8vICJSZXBsYWNlIGxhbWJkYSB3aXRoIG1ldGhvZCByZWZlcmVuY2UiICJ0cnVlIgorY2xhc3MgRXhhbXBsZSB7CisgIGludGVyZmFjZSBJIHsKKyAgICB2b2lkIGZvbyhFeGFtcGxlIGUpOworICB9CisKKyAgdm9pZCBtKCkge30KKworICB7CisgICAgSSBpID0gKGUpIC0+IGU8Y2FyZXQ+Lm0oKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbGFtYmRhMm1ldGhvZFJlZmVyZW5jZS9iZWZvcmVSZWNlaXZlclR5cGVXcm9uZ1F1YWxpZmllci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9sYW1iZGEybWV0aG9kUmVmZXJlbmNlL2JlZm9yZVJlY2VpdmVyVHlwZVdyb25nUXVhbGlmaWVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmFjMjZjMQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbGFtYmRhMm1ldGhvZFJlZmVyZW5jZS9iZWZvcmVSZWNlaXZlclR5cGVXcm9uZ1F1YWxpZmllci5qYXZhCkBAIC0wLDAgKzEsMTIgQEAKKy8vICJSZXBsYWNlIGxhbWJkYSB3aXRoIG1ldGhvZCByZWZlcmVuY2UiICJmYWxzZSIKK2NsYXNzIEV4YW1wbGUgeworICBpbnRlcmZhY2UgSSB7CisgICAgdm9pZCBmb28oRXhhbXBsZSBlKTsKKyAgfQorCisgIHZvaWQgbSgpIHt9CisKKyAgeworICAgIEkgaSA9IChlKSAtPiA8Y2FyZXQ+Lm0oKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbGFtYmRhMm1ldGhvZFJlZmVyZW5jZS9iZWZvcmVTYW1lUGFyYW1zLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2xhbWJkYTJtZXRob2RSZWZlcmVuY2UvYmVmb3JlU2FtZVBhcmFtcy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM3NDRjZTAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2xhbWJkYTJtZXRob2RSZWZlcmVuY2UvYmVmb3JlU2FtZVBhcmFtcy5qYXZhCkBAIC0wLDAgKzEsMTIgQEAKKy8vICJSZXBsYWNlIGxhbWJkYSB3aXRoIG1ldGhvZCByZWZlcmVuY2UiICJ0cnVlIgorY2xhc3MgRXhhbXBsZSB7CisgIGludGVyZmFjZSBJIHsKKyAgICAgIHZvaWQgZm9vKGludCBpKTsKKyAgICB9CisgIAorICAgIHZvaWQgbShpbnQgaSkge30KKyAgCisgICAgeworICAgICAgSSBpID0gKGkxKSAtPiA8Y2FyZXQ+bShpMSk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbGFtYmRhMm1ldGhvZFJlZmVyZW5jZS9iZWZvcmVTYW1lUGFyYW1zTW9kaWZpZWQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbGFtYmRhMm1ldGhvZFJlZmVyZW5jZS9iZWZvcmVTYW1lUGFyYW1zTW9kaWZpZWQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNmZjOGE0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9sYW1iZGEybWV0aG9kUmVmZXJlbmNlL2JlZm9yZVNhbWVQYXJhbXNNb2RpZmllZC5qYXZhCkBAIC0wLDAgKzEsMTIgQEAKKy8vICJSZXBsYWNlIGxhbWJkYSB3aXRoIG1ldGhvZCByZWZlcmVuY2UiICJmYWxzZSIKK2NsYXNzIEV4YW1wbGUgeworICBpbnRlcmZhY2UgSSB7CisgICAgICB2b2lkIGZvbyhpbnQgaSk7CisgICAgfQorICAKKyAgICB2b2lkIG0oaW50IGkpIHt9CisgIAorICAgIHsKKyAgICAgIEkgaSA9IChpMSkgLT4gPGNhcmV0Pm0oaTEgKyAxKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9sYW1iZGFDb2RlQmxvY2syRXhwci9hZnRlckNvbXBhcmFibGUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbGFtYmRhQ29kZUJsb2NrMkV4cHIvYWZ0ZXJDb21wYXJhYmxlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWExNDYyNgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbGFtYmRhQ29kZUJsb2NrMkV4cHIvYWZ0ZXJDb21wYXJhYmxlLmphdmEKQEAgLTAsMCArMSw2IEBACisvLyAiUmVwbGFjZSB3aXRoIG9uZSBsaW5lIGV4cHJlc3Npb24iICJ0cnVlIgorY2xhc3MgVGVzdCB7CisgIHsKKyAgICBDb21wYXJhYmxlPFN0cmluZz4gYyA9IChvKSAtPiAwOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9sYW1iZGFDb2RlQmxvY2syRXhwci9hZnRlclZvaWQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbGFtYmRhQ29kZUJsb2NrMkV4cHIvYWZ0ZXJWb2lkLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTFjNGUxNQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbGFtYmRhQ29kZUJsb2NrMkV4cHIvYWZ0ZXJWb2lkLmphdmEKQEAgLTAsMCArMSw2IEBACisvLyAiUmVwbGFjZSB3aXRoIG9uZSBsaW5lIGV4cHJlc3Npb24iICJ0cnVlIgorY2xhc3MgVGVzdCB7CisgIHsKKyAgICBSdW5uYWJsZSBjID0gKCkgLT4gU3lzdGVtLm91dC5wcmludGxuKCk7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2xhbWJkYUNvZGVCbG9jazJFeHByL2FmdGVyVm9pZEluQ29kZWJsb2NrLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2xhbWJkYUNvZGVCbG9jazJFeHByL2FmdGVyVm9pZEluQ29kZWJsb2NrLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTFjNGUxNQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbGFtYmRhQ29kZUJsb2NrMkV4cHIvYWZ0ZXJWb2lkSW5Db2RlYmxvY2suamF2YQpAQCAtMCwwICsxLDYgQEAKKy8vICJSZXBsYWNlIHdpdGggb25lIGxpbmUgZXhwcmVzc2lvbiIgInRydWUiCitjbGFzcyBUZXN0IHsKKyAgeworICAgIFJ1bm5hYmxlIGMgPSAoKSAtPiBTeXN0ZW0ub3V0LnByaW50bG4oKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbGFtYmRhQ29kZUJsb2NrMkV4cHIvYmVmb3JlQ29tcGFyYWJsZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9sYW1iZGFDb2RlQmxvY2syRXhwci9iZWZvcmVDb21wYXJhYmxlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTU4NmNjZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbGFtYmRhQ29kZUJsb2NrMkV4cHIvYmVmb3JlQ29tcGFyYWJsZS5qYXZhCkBAIC0wLDAgKzEsNiBAQAorLy8gIlJlcGxhY2Ugd2l0aCBvbmUgbGluZSBleHByZXNzaW9uIiAidHJ1ZSIKK2NsYXNzIFRlc3QgeworICB7CisgICAgQ29tcGFyYWJsZTxTdHJpbmc+IGMgPSAobykgLT4ge3I8Y2FyZXQ+ZXR1cm4gMDt9OworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9sYW1iZGFDb2RlQmxvY2syRXhwci9iZWZvcmVSZXR1cm5UeXBlSW5FeHByZXNzaW9uU3RhdGVtZW50LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2xhbWJkYUNvZGVCbG9jazJFeHByL2JlZm9yZVJldHVyblR5cGVJbkV4cHJlc3Npb25TdGF0ZW1lbnQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZDg2YmEyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9sYW1iZGFDb2RlQmxvY2syRXhwci9iZWZvcmVSZXR1cm5UeXBlSW5FeHByZXNzaW9uU3RhdGVtZW50LmphdmEKQEAgLTAsMCArMSw4IEBACisvLyAiUmVwbGFjZSB3aXRoIG9uZSBsaW5lIGV4cHJlc3Npb24iICJmYWxzZSIKK2NsYXNzIFRlc3QgeworICB7CisgICAgUnVubmFibGUgYyA9ICgpIC0+IDxjYXJldD57Zm9vKCk7fTsKKyAgfQorICAKKyAgaW50IGZvbygpIHtyZXR1cm4gMTt9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9sYW1iZGFDb2RlQmxvY2syRXhwci9iZWZvcmVWb2lkLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L2xhbWJkYUNvZGVCbG9jazJFeHByL2JlZm9yZVZvaWQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YWRiNGRjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9sYW1iZGFDb2RlQmxvY2syRXhwci9iZWZvcmVWb2lkLmphdmEKQEAgLTAsMCArMSw2IEBACisvLyAiUmVwbGFjZSB3aXRoIG9uZSBsaW5lIGV4cHJlc3Npb24iICJ0cnVlIgorY2xhc3MgVGVzdCB7CisgIHsKKyAgICBSdW5uYWJsZSBjID0gKCkgLT4gPGNhcmV0PntTeXN0ZW0ub3V0LnByaW50bG4oKTt9OworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9sYW1iZGFDb2RlQmxvY2syRXhwci9iZWZvcmVWb2lkSW5Db2RlYmxvY2suamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbGFtYmRhQ29kZUJsb2NrMkV4cHIvYmVmb3JlVm9pZEluQ29kZWJsb2NrLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDBkYTE3MgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbGFtYmRhQ29kZUJsb2NrMkV4cHIvYmVmb3JlVm9pZEluQ29kZWJsb2NrLmphdmEKQEAgLTAsMCArMSw2IEBACisvLyAiUmVwbGFjZSB3aXRoIG9uZSBsaW5lIGV4cHJlc3Npb24iICJ0cnVlIgorY2xhc3MgVGVzdCB7CisgIHsKKyAgICBSdW5uYWJsZSBjID0gKCkgLT4gPGNhcmV0Pnt7U3lzdGVtLm91dC5wcmludGxuKCk7fX07CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L21ha2VUeXBlR2VuZXJpYy9hZnRlcjEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbWFrZVR5cGVHZW5lcmljL2FmdGVyMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYzZWRlN2EKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L21ha2VUeXBlR2VuZXJpYy9hZnRlcjEuamF2YQpAQCAtMCwwICsxLDEwIEBACisvLyAiQ2hhbmdlIHR5cGUgb2YgVFQgdG8gamF2YS51dGlsLkNvbXBhcmF0b3I8amF2YS5sYW5nLlN0cmluZz4iICJ0cnVlIgoraW1wb3J0IGphdmEudXRpbC4qOworY2xhc3MgQ0NDQyB7CisgIHByaXZhdGUgZmluYWwgc3RhdGljIENvbXBhcmF0b3I8U3RyaW5nPiA8Y2FyZXQ+VFQgPSBuZXcgQ29tcGFyYXRvcjxTdHJpbmc+KCkgeworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyBpbnQgY29tcGFyZShTdHJpbmcgbzEsIFN0cmluZyBvMikgeworICAgICAgcmV0dXJuIDA7ICAvL1RvIGNoYW5nZSBib2R5IG9mIGltcGxlbWVudGVkIG1ldGhvZHMgdXNlIEZpbGUgfCBTZXR0aW5ncyB8IEZpbGUgVGVtcGxhdGVzLgorICAgIH0KKyAgfTsKKyAgfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9tYWtlVHlwZUdlbmVyaWMvYmVmb3JlMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9tYWtlVHlwZUdlbmVyaWMvYmVmb3JlMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNjNjUxZmYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L21ha2VUeXBlR2VuZXJpYy9iZWZvcmUxLmphdmEKQEAgLTAsMCArMSwxMCBAQAorLy8gIkNoYW5nZSB0eXBlIG9mIFRUIHRvIGphdmEudXRpbC5Db21wYXJhdG9yPGphdmEubGFuZy5TdHJpbmc+IiAidHJ1ZSIKK2ltcG9ydCBqYXZhLnV0aWwuKjsKK2NsYXNzIENDQ0MgeworICBwcml2YXRlIGZpbmFsIHN0YXRpYyBDb21wYXJhdG9yIDxjYXJldD5UVCA9IG5ldyBDb21wYXJhdG9yPFN0cmluZz4oKSB7CisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIGludCBjb21wYXJlKFN0cmluZyBvMSwgU3RyaW5nIG8yKSB7CisgICAgICByZXR1cm4gMDsgIC8vVG8gY2hhbmdlIGJvZHkgb2YgaW1wbGVtZW50ZWQgbWV0aG9kcyB1c2UgRmlsZSB8IFNldHRpbmdzIHwgRmlsZSBUZW1wbGF0ZXMuCisgICAgfQorICB9OworICB9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L21ha2VUeXBlR2VuZXJpYy9iZWZvcmVJbXBsZW1lbnRlZFJhdy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9tYWtlVHlwZUdlbmVyaWMvYmVmb3JlSW1wbGVtZW50ZWRSYXcuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZWQzOTM3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9tYWtlVHlwZUdlbmVyaWMvYmVmb3JlSW1wbGVtZW50ZWRSYXcuamF2YQpAQCAtMCwwICsxLDkgQEAKKy8vICJDaGFuZ2UgdHlwZSBvZiBUVFQgdG8gamF2YS51dGlsLkNvbXBhcmF0b3IiICJmYWxzZSIKK2ltcG9ydCBqYXZhLnV0aWwuKjsKK2NsYXNzIENDQ0MgaW1wbGVtZW50cyBDb21wYXJhdG9yIHsKKyAgICBwcml2YXRlIGZpbmFsIHN0YXRpYyBDb21wYXJhdG9yIDxjYXJldD5UVFQgPSBuZXcgQ0NDQygpOworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyBpbnQgY29tcGFyZShPYmplY3QgbzEsIE9iamVjdCBvMikgeworICAgICAgcmV0dXJuIDA7CisgICAgfQorICB9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L21ldGhvZFJldHVybi9hZnRlcjEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbWV0aG9kUmV0dXJuL2FmdGVyMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU0Y2Q4NjgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L21ldGhvZFJldHVybi9hZnRlcjEuamF2YQpAQCAtMCwwICsxLDYgQEAKKy8vICJNYWtlICdmJyByZXR1cm4gJ2ludCciICJ0cnVlIgorY2xhc3MgYSB7CisgICAgaW50IGYoKSB7CisgICAgICAgIHJldHVybiA8Y2FyZXQ+MTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9tZXRob2RSZXR1cm4vYWZ0ZXIxMC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9tZXRob2RSZXR1cm4vYWZ0ZXIxMC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA4YTk1ZTcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L21ldGhvZFJldHVybi9hZnRlcjEwLmphdmEKQEAgLTAsMCArMSwxMCBAQAorLy8gIk1ha2UgJ2NhbGwnIHJldHVybiAnQ2FsbGFibGU8amF2YS5sYW5nLkludGVnZXI+JyIgInRydWUiCitwdWJsaWMgY2xhc3MgYSBleHRlbmRzIENhbGxhYmxlPEludGVnZXI+IHsKKyAgcHVibGljIENhbGxhYmxlPEludGVnZXI+IGNhbGwoKSB7CisgICAgcmV0dXJuIG5ldyBDYWxsYWJsZTxJbnRlZ2VyPigpOworICB9Cit9CisKK2NsYXNzIENhbGxhYmxlPFQ+IHsKKyAgQ2FsbGFibGU8VD4gY2FsbCgpe3JldHVybiBudWxsO30KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L21ldGhvZFJldHVybi9hZnRlcjExLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L21ldGhvZFJldHVybi9hZnRlcjExLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmY3ZDA0NAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbWV0aG9kUmV0dXJuL2FmdGVyMTEuamF2YQpAQCAtMCwwICsxLDEyIEBACisvLyAiTWFrZSAnY2FsbCcgcmV0dXJuICdDYWxsYWJsZTxqYXZhLmxhbmcuSW50ZWdlcj4nIiAidHJ1ZSIKK3B1YmxpYyBjbGFzcyBhIGV4dGVuZHMgQ2FsbGFibGVFeDxJbnRlZ2VyPiB7CisgIHB1YmxpYyBDYWxsYWJsZTxJbnRlZ2VyPiBjYWxsKCkgeworICAgIHJldHVybiBuZXcgQ2FsbGFibGU8SW50ZWdlcj4oKTsKKyAgfQorfQorCitjbGFzcyBDYWxsYWJsZTxUPiB7CisgIENhbGxhYmxlPFQ+IGNhbGwoKXtyZXR1cm4gbnVsbDt9Cit9CisKK2NsYXNzIENhbGxhYmxlRXg8VEU+IGV4dGVuZHMgQ2FsbGFibGU8VEU+e30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L21ldGhvZFJldHVybi9hZnRlcjIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbWV0aG9kUmV0dXJuL2FmdGVyMi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ5OWRlZGEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L21ldGhvZFJldHVybi9hZnRlcjIuamF2YQpAQCAtMCwwICsxLDYgQEAKKy8vICJNYWtlICdmJyByZXR1cm4gJ2xvbmcnIiAidHJ1ZSIKK2NsYXNzIGEgeworICAgIGxvbmcgZigpIHsKKyAgICAgICAgcmV0dXJuIDxjYXJldD4xTDsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9tZXRob2RSZXR1cm4vYWZ0ZXIzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L21ldGhvZFJldHVybi9hZnRlcjMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYzI5ZjRjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9tZXRob2RSZXR1cm4vYWZ0ZXIzLmphdmEKQEAgLTAsMCArMSw2IEBACisvLyAiTWFrZSAnZicgcmV0dXJuICdqYXZhLmxhbmcuU3RyaW5nJyIgInRydWUiCitjbGFzcyBhIHsKKyAgICBTdHJpbmcgZigpIHsKKyAgICAgICAgcmV0dXJuIDxjYXJldD4iIjsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9tZXRob2RSZXR1cm4vYWZ0ZXI0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L21ldGhvZFJldHVybi9hZnRlcjQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNGI5M2I4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9tZXRob2RSZXR1cm4vYWZ0ZXI0LmphdmEKQEAgLTAsMCArMSw2IEBACisvLyAiTWFrZSAnZicgcmV0dXJuICd2b2lkJyIgInRydWUiCitjbGFzcyBhIHsKKyAgICB2b2lkIGYoKSB7CisgICAgICAgIHJldHVybiA8Y2FyZXQ+OworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L21ldGhvZFJldHVybi9hZnRlcjYuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbWV0aG9kUmV0dXJuL2FmdGVyNi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ4MWNjODEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L21ldGhvZFJldHVybi9hZnRlcjYuamF2YQpAQCAtMCwwICsxLDE0IEBACisvLyAiTWFrZSAnY2FsbCcgcmV0dXJuICdqYXZhLmxhbmcuSW50ZWdlciciICJ0cnVlIgorcHVibGljIGNsYXNzIGEgeworIFN0cmluZyBmKCkgeworICAgcmV0dXJuIG5ldyBDYWxsYWJsZTxJbnRlZ2VyPigpIHsKKyAgICAgcHVibGljIEludGVnZXIgY2FsbCgpIHsKKyAgICAgICByZXR1cm4gbmV3IEludGVnZXIoMCk7CisgICAgIH0KKyAgIH0uY2FsbCgpOworIH0KK30KKworaW50ZXJmYWNlIENhbGxhYmxlPFQ+IHsKKyAgVCBjYWxsKCk7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9tZXRob2RSZXR1cm4vYWZ0ZXI3LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L21ldGhvZFJldHVybi9hZnRlcjcuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYjAxYjllCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9tZXRob2RSZXR1cm4vYWZ0ZXI3LmphdmEKQEAgLTAsMCArMSwxMCBAQAorLy8gIk1ha2UgJ2NhbGwnIHJldHVybiAnamF2YS5sYW5nLkludGVnZXInIiAidHJ1ZSIKK3B1YmxpYyBjbGFzcyBhIGltcGxlbWVudHMgQ2FsbGFibGU8SW50ZWdlcj4geworICBwdWJsaWMgSW50ZWdlciBjYWxsKCkgeworICAgIHJldHVybiBuZXcgSW50ZWdlcigwKTsKKyAgfQorfQorCitpbnRlcmZhY2UgQ2FsbGFibGU8VD4geworICBUIGNhbGwoKTsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L21ldGhvZFJldHVybi9hZnRlcjguamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbWV0aG9kUmV0dXJuL2FmdGVyOC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA5OGJhY2EKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L21ldGhvZFJldHVybi9hZnRlcjguamF2YQpAQCAtMCwwICsxLDEwIEBACisvLyAiTWFrZSAnY2FsbCcgcmV0dXJuICdpbnQnIiAidHJ1ZSIKK3B1YmxpYyBjbGFzcyBhIGltcGxlbWVudHMgQ2FsbGFibGU8SW50ZWdlcj4geworICBwdWJsaWMgSW50ZWdlciBjYWxsKCkgeworICAgIHJldHVybiA0MjsKKyAgfQorfQorCitpbnRlcmZhY2UgQ2FsbGFibGU8VD4geworICBUIGNhbGwoKTsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L21ldGhvZFJldHVybi9hZnRlcjkuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbWV0aG9kUmV0dXJuL2FmdGVyOS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRjNzI3Y2QKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L21ldGhvZFJldHVybi9hZnRlcjkuamF2YQpAQCAtMCwwICsxLDYgQEAKKy8vICJNYWtlICdnZXRUVCcgcmV0dXJuICdpbnQnIiAidHJ1ZSIKK3B1YmxpYyBjbGFzcyBhICB7CisgIDxUVD4gaW50IGdldFRUKCkgeworICAgIHJldHVybiA0MjsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9tZXRob2RSZXR1cm4vYWZ0ZXJCcm9rZW5Db250cm9sRmxvdy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9tZXRob2RSZXR1cm4vYWZ0ZXJCcm9rZW5Db250cm9sRmxvdy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRmN2RhYWQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L21ldGhvZFJldHVybi9hZnRlckJyb2tlbkNvbnRyb2xGbG93LmphdmEKQEAgLTAsMCArMSwxNiBAQAorLy8gIk1ha2UgJ2dldERyYXdlckFwcHNMaXN0JyByZXR1cm4gJ2phdmEudXRpbC5BcnJheUxpc3Q8UmVzb2x2ZUluZm8+JyIgInRydWUiCitpbXBvcnQgamF2YS51dGlsLio7CitjbGFzcyBUZXN0IHsKKyAgCisgICAgcHVibGljIHN0YXRpYyBBcnJheUxpc3Q8UmVzb2x2ZUluZm8+IGdldERyYXdlckFwcHNMaXN0KEFycmF5TGlzdDxSZXNvbHZlSW5mbz4gYXBwc0xpc3QpIHsKKyAgICAgICAgZm9yIChSZXNvbHZlSW5mbyBhcHBJbmZvIDogYXBwc0xpc3QpIHsKKyAgICAgICAgICAgIGlmICgpIHsKKworICAgICAgICAgICAgICAgIGFwcHNMaXN0LnJlbW92ZShhcHBJbmZvKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiAgYXBwc0xpc3Q7CisKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9tZXRob2RSZXR1cm4vYWZ0ZXJDaGFuZ2VDbGFzc1R5cGVQYXJhbXMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbWV0aG9kUmV0dXJuL2FmdGVyQ2hhbmdlQ2xhc3NUeXBlUGFyYW1zLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2RhZWMyYwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbWV0aG9kUmV0dXJuL2FmdGVyQ2hhbmdlQ2xhc3NUeXBlUGFyYW1zLmphdmEKQEAgLTAsMCArMSwxMCBAQAorLy8gIk1ha2UgJ2RvaW4nIHJldHVybiAnaW50JyIgInRydWUiCithYnN0cmFjdCBjbGFzcyBBc3luY1Rhc2s8QSwgQiwgQz4geworICAgIGFic3RyYWN0IEMgZG9pbihBLi4uIGEpOworfQorY2xhc3MgQUFzeW5jIGV4dGVuZHMgQXN5bmNUYXNrPFN0cmluZyxJbnRlZ2VyLEludGVnZXI+IHsKKyAgICBAT3ZlcnJpZGUKKyAgICBJbnRlZ2VyIGRvaW4oU3RyaW5nLi4uIGEpIHsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbWV0aG9kUmV0dXJuL2JlZm9yZTEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbWV0aG9kUmV0dXJuL2JlZm9yZTEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNTRiYjExCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9tZXRob2RSZXR1cm4vYmVmb3JlMS5qYXZhCkBAIC0wLDAgKzEsNiBAQAorLy8gIk1ha2UgJ2YnIHJldHVybiAnaW50JyIgInRydWUiCitjbGFzcyBhIHsKKyAgICB2b2lkIGYoKSB7CisgICAgICAgIHJldHVybiA8Y2FyZXQ+MTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9tZXRob2RSZXR1cm4vYmVmb3JlMTAuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbWV0aG9kUmV0dXJuL2JlZm9yZTEwLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzI5N2ViYQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbWV0aG9kUmV0dXJuL2JlZm9yZTEwLmphdmEKQEAgLTAsMCArMSwxMCBAQAorLy8gIk1ha2UgJ2NhbGwnIHJldHVybiAnQ2FsbGFibGU8amF2YS5sYW5nLkludGVnZXI+JyIgInRydWUiCitwdWJsaWMgY2xhc3MgYSBleHRlbmRzIENhbGxhYmxlPFN0cmluZz4geworICBwdWJsaWMgQ2FsbGFibGU8U3RyaW5nPiBjYWxsKCkgeworICAgIHJldHVybiBuZXcgQ2FsbGFibGU8SW50ZTxjYXJldD5nZXI+KCk7CisgIH0KK30KKworY2xhc3MgQ2FsbGFibGU8VD4geworICBDYWxsYWJsZTxUPiBjYWxsKCl7cmV0dXJuIG51bGw7fQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbWV0aG9kUmV0dXJuL2JlZm9yZTExLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L21ldGhvZFJldHVybi9iZWZvcmUxMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY0OWM2ZGIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L21ldGhvZFJldHVybi9iZWZvcmUxMS5qYXZhCkBAIC0wLDAgKzEsMTIgQEAKKy8vICJNYWtlICdjYWxsJyByZXR1cm4gJ0NhbGxhYmxlPGphdmEubGFuZy5JbnRlZ2VyPiciICJ0cnVlIgorcHVibGljIGNsYXNzIGEgZXh0ZW5kcyBDYWxsYWJsZUV4PFN0cmluZz4geworICBwdWJsaWMgQ2FsbGFibGU8U3RyaW5nPiBjYWxsKCkgeworICAgIHJldHVybiBuZXcgQ2FsbGFibGU8SW50ZTxjYXJldD5nZXI+KCk7CisgIH0KK30KKworY2xhc3MgQ2FsbGFibGU8VD4geworICBDYWxsYWJsZTxUPiBjYWxsKCl7cmV0dXJuIG51bGw7fQorfQorCitjbGFzcyBDYWxsYWJsZUV4PFRFPiBleHRlbmRzIENhbGxhYmxlPFRFPnt9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9tZXRob2RSZXR1cm4vYmVmb3JlMi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9tZXRob2RSZXR1cm4vYmVmb3JlMi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRlNzUzNmIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L21ldGhvZFJldHVybi9iZWZvcmUyLmphdmEKQEAgLTAsMCArMSw2IEBACisvLyAiTWFrZSAnZicgcmV0dXJuICdsb25nJyIgInRydWUiCitjbGFzcyBhIHsKKyAgICBpbnQgZigpIHsKKyAgICAgICAgcmV0dXJuIDxjYXJldD4xTDsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9tZXRob2RSZXR1cm4vYmVmb3JlMy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9tZXRob2RSZXR1cm4vYmVmb3JlMy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg0M2ZjM2IKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L21ldGhvZFJldHVybi9iZWZvcmUzLmphdmEKQEAgLTAsMCArMSw2IEBACisvLyAiTWFrZSAnZicgcmV0dXJuICdqYXZhLmxhbmcuU3RyaW5nJyIgInRydWUiCitjbGFzcyBhIHsKKyAgICBpbnQgZigpIHsKKyAgICAgICAgcmV0dXJuIDxjYXJldD4iIjsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9tZXRob2RSZXR1cm4vYmVmb3JlNC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9tZXRob2RSZXR1cm4vYmVmb3JlNC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU2NTQ4ZjcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L21ldGhvZFJldHVybi9iZWZvcmU0LmphdmEKQEAgLTAsMCArMSw2IEBACisvLyAiTWFrZSAnZicgcmV0dXJuICd2b2lkJyIgInRydWUiCitjbGFzcyBhIHsKKyAgICBpbnQgZigpIHsKKyAgICAgICAgcmV0dXJuIDxjYXJldD47CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbWV0aG9kUmV0dXJuL2JlZm9yZTUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbWV0aG9kUmV0dXJuL2JlZm9yZTUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMmFjMjBiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9tZXRob2RSZXR1cm4vYmVmb3JlNS5qYXZhCkBAIC0wLDAgKzEsNiBAQAorLy8gIk1ha2UgJ2YnIHJldHVybiAnbnVsbCciICJmYWxzZSIKK2NsYXNzIGEgeworIGludCBmKCkgeworICAgcmV0dXJuIDxjYXJldD5udWxsOworIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L21ldGhvZFJldHVybi9iZWZvcmU2LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L21ldGhvZFJldHVybi9iZWZvcmU2LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjc2ZWNmYQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbWV0aG9kUmV0dXJuL2JlZm9yZTYuamF2YQpAQCAtMCwwICsxLDE0IEBACisvLyAiTWFrZSAnY2FsbCcgcmV0dXJuICdqYXZhLmxhbmcuSW50ZWdlciciICJ0cnVlIgorcHVibGljIGNsYXNzIGEgeworIFN0cmluZyBmKCkgeworICAgcmV0dXJuIG5ldyBDYWxsYWJsZTxTdHJpbmc+KCkgeworICAgICBwdWJsaWMgU3RyaW5nIGNhbGwoKSB7CisgICAgICAgcmV0dXJuIG5ldyBJbnQ8Y2FyZXQ+ZWdlcigwKTsKKyAgICAgfQorICAgfS5jYWxsKCk7CisgfQorfQorCitpbnRlcmZhY2UgQ2FsbGFibGU8VD4geworICBUIGNhbGwoKTsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L21ldGhvZFJldHVybi9iZWZvcmU3LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L21ldGhvZFJldHVybi9iZWZvcmU3LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzU2YzFlNAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbWV0aG9kUmV0dXJuL2JlZm9yZTcuamF2YQpAQCAtMCwwICsxLDEwIEBACisvLyAiTWFrZSAnY2FsbCcgcmV0dXJuICdqYXZhLmxhbmcuSW50ZWdlciciICJ0cnVlIgorcHVibGljIGNsYXNzIGEgaW1wbGVtZW50cyBDYWxsYWJsZTxTdHJpbmc+IHsKKyAgcHVibGljIFN0cmluZyBjYWxsKCkgeworICAgIHJldHVybiBuZXcgSW50PGNhcmV0PmVnZXIoMCk7CisgIH0KK30KKworaW50ZXJmYWNlIENhbGxhYmxlPFQ+IHsKKyAgVCBjYWxsKCk7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9tZXRob2RSZXR1cm4vYmVmb3JlOC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9tZXRob2RSZXR1cm4vYmVmb3JlOC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJjOTdkZTMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L21ldGhvZFJldHVybi9iZWZvcmU4LmphdmEKQEAgLTAsMCArMSwxMCBAQAorLy8gIk1ha2UgJ2NhbGwnIHJldHVybiAnaW50JyIgInRydWUiCitwdWJsaWMgY2xhc3MgYSBpbXBsZW1lbnRzIENhbGxhYmxlPFN0cmluZz4geworICBwdWJsaWMgU3RyaW5nIGNhbGwoKSB7CisgICAgcmV0dXJuIDQ8Y2FyZXQ+MjsKKyAgfQorfQorCitpbnRlcmZhY2UgQ2FsbGFibGU8VD4geworICBUIGNhbGwoKTsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L21ldGhvZFJldHVybi9iZWZvcmU5LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L21ldGhvZFJldHVybi9iZWZvcmU5LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjg0MTlkNAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbWV0aG9kUmV0dXJuL2JlZm9yZTkuamF2YQpAQCAtMCwwICsxLDYgQEAKKy8vICJNYWtlICdnZXRUVCcgcmV0dXJuICdpbnQnIiAidHJ1ZSIKK3B1YmxpYyBjbGFzcyBhICB7CisgIDxUVD4gVFQgZ2V0VFQoKSB7CisgICAgcmV0dXJuIDQ8Y2FyZXQ+MjsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9tZXRob2RSZXR1cm4vYmVmb3JlQnJva2VuQ29udHJvbEZsb3cuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbWV0aG9kUmV0dXJuL2JlZm9yZUJyb2tlbkNvbnRyb2xGbG93LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDNlY2M2ZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbWV0aG9kUmV0dXJuL2JlZm9yZUJyb2tlbkNvbnRyb2xGbG93LmphdmEKQEAgLTAsMCArMSwxNiBAQAorLy8gIk1ha2UgJ2dldERyYXdlckFwcHNMaXN0JyByZXR1cm4gJ2phdmEudXRpbC5BcnJheUxpc3Q8UmVzb2x2ZUluZm8+JyIgInRydWUiCitpbXBvcnQgamF2YS51dGlsLio7CitjbGFzcyBUZXN0IHsKKyAgCisgICAgcHVibGljIHN0YXRpYyBMaXN0PEFwcEluZm8+IGdldERyYXdlckFwcHNMaXN0KEFycmF5TGlzdDxSZXNvbHZlSW5mbz4gYXBwc0xpc3QpIHsKKyAgICAgICAgZm9yIChSZXNvbHZlSW5mbyBhcHBJbmZvIDogYXBwc0xpc3QpIHsKKyAgICAgICAgICAgIGlmICgpIHsKKworICAgICAgICAgICAgICAgIGFwcHNMaXN0LnJlbW92ZShhcHBJbmZvKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiAgPGNhcmV0PmFwcHNMaXN0OworCisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbWV0aG9kUmV0dXJuL2JlZm9yZUNoYW5nZUNsYXNzVHlwZVBhcmFtcy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9tZXRob2RSZXR1cm4vYmVmb3JlQ2hhbmdlQ2xhc3NUeXBlUGFyYW1zLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzE3YTUxMwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbWV0aG9kUmV0dXJuL2JlZm9yZUNoYW5nZUNsYXNzVHlwZVBhcmFtcy5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKKy8vICJNYWtlICdkb2luJyByZXR1cm4gJ2ludCciICJ0cnVlIgorYWJzdHJhY3QgY2xhc3MgQXN5bmNUYXNrPEEsIEIsIEM+IHsKKyAgICBhYnN0cmFjdCBDIGRvaW4oQS4uLiBhKTsKK30KK2NsYXNzIEFBc3luYyBleHRlbmRzIEFzeW5jVGFzazxTdHJpbmcsIEludGVnZXIsIExvbmc+IHsKKyAgICBAT3ZlcnJpZGUKKyAgICBMb25nIGRvaW4oU3RyaW5nLi4uIGEpIHsKKyAgICAgICAgcmV0dXJuIDxjYXJldD4xOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L21ldGhvZFJldHVybkJvb2xlYW5GaXgvYWZ0ZXIxLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L21ldGhvZFJldHVybkJvb2xlYW5GaXgvYWZ0ZXIxLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWFiNjdmZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbWV0aG9kUmV0dXJuQm9vbGVhbkZpeC9hZnRlcjEuamF2YQpAQCAtMCwwICsxLDE2IEBACisvLyAiTWFrZSAndmljdGltJyByZXR1cm4gJ2Jvb2xlYW4nIiAidHJ1ZSIKK2NsYXNzIFRlc3QgeworICAgIHB1YmxpYyB2b2lkIHRyaWdnZXIoKSB7CisgICAgICAgIGlmICh2aWN0aW0oKSkgeworICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCIqKioiKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHB1YmxpYyBib29sZWFuIHZpY3RpbSgpIHsKKyAgICAgICAgZmluYWwgaW50IHNvbWV0aGluZyA9IDE7CisgICAgICAgIGZpbmFsIGJvb2xlYW4gdmFsdWUgPSBmYWxzZTsKKyAgICAgICAgaW50IGFub3RoZXIgPSAxMDsKKyAgICAgICAgZmluYWwgYm9vbGVhbiBzZWNvbmRCb29sZWFuID0gYW5vdGhlciA9PSBzb21ldGhpbmc7CisgICAgICAgIHJldHVybiA8Y2FyZXQ+PHNlbGVjdGlvbj52YWx1ZTwvc2VsZWN0aW9uPjsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9tZXRob2RSZXR1cm5Cb29sZWFuRml4L2FmdGVyMi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9tZXRob2RSZXR1cm5Cb29sZWFuRml4L2FmdGVyMi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU1NjljN2YKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L21ldGhvZFJldHVybkJvb2xlYW5GaXgvYWZ0ZXIyLmphdmEKQEAgLTAsMCArMSwxNCBAQAorLy8gIk1ha2UgJ3ZpY3RpbScgcmV0dXJuICdib29sZWFuJyIgInRydWUiCitjbGFzcyBUZXN0IHsKKyAgICBwdWJsaWMgdm9pZCB0cmlnZ2VyKCkgeworICAgICAgICBpZiAodmljdGltKCkpIHsKKyAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiKioqIik7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwdWJsaWMgYm9vbGVhbiB2aWN0aW0oKSB7CisgICAgICAgIGZpbmFsIGludCBzb21ldGhpbmcgPSAxOworICAgICAgICBpbnQgYW5vdGhlciA9IDEwOworICAgICAgICByZXR1cm4gPGNhcmV0PjxzZWxlY3Rpb24+ZmFsc2U8L3NlbGVjdGlvbj47CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbWV0aG9kUmV0dXJuQm9vbGVhbkZpeC9hZnRlcjMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbWV0aG9kUmV0dXJuQm9vbGVhbkZpeC9hZnRlcjMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NzcwZDFkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9tZXRob2RSZXR1cm5Cb29sZWFuRml4L2FmdGVyMy5qYXZhCkBAIC0wLDAgKzEsMTUgQEAKKy8vICJNYWtlICd2aWN0aW0nIHJldHVybiAnYm9vbGVhbiciICJ0cnVlIgorY2xhc3MgVGVzdCB7CisgICAgcHVibGljIHZvaWQgdHJpZ2dlcigpIHsKKyAgICAgICAgaWYgKHZpY3RpbShmYWxzZSwgMCwgZmFsc2UpKSB7CisgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIioqKiIpOworICAgICAgICB9CisgICAgfQorCisgICAgcHVibGljIGJvb2xlYW4gdmljdGltKGZpbmFsIGJvb2xlYW4gcGFyYW0xLCBmaW5hbCBpbnQgcGFyYW0yLCBmaW5hbCBib29sZWFuIHBhcmFtMykgeworICAgICAgICBmaW5hbCBpbnQgc29tZXRoaW5nID0gMTsKKyAgICAgICAgaW50IGFub3RoZXIgPSAxMDsKKyAgICAgICAgYm9vbGVhbiBzb21lVmFsdWUgPSB0cnVlOworICAgICAgICByZXR1cm4gPGNhcmV0PjxzZWxlY3Rpb24+c29tZVZhbHVlPC9zZWxlY3Rpb24+OworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L21ldGhvZFJldHVybkJvb2xlYW5GaXgvYWZ0ZXI0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L21ldGhvZFJldHVybkJvb2xlYW5GaXgvYWZ0ZXI0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDlmOGM1YQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbWV0aG9kUmV0dXJuQm9vbGVhbkZpeC9hZnRlcjQuamF2YQpAQCAtMCwwICsxLDE0IEBACisvLyAiTWFrZSAndmljdGltJyByZXR1cm4gJ2Jvb2xlYW4nIiAidHJ1ZSIKK2NsYXNzIFRlc3QgeworICAgIHB1YmxpYyB2b2lkIHRyaWdnZXIoKSB7CisgICAgICAgIGlmICh2aWN0aW0oZmFsc2UsIDAsIGZhbHNlKSkgeworICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCIqKioiKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHB1YmxpYyBib29sZWFuIHZpY3RpbShmaW5hbCBib29sZWFuIHBhcmFtMSwgZmluYWwgaW50IHBhcmFtMiwgZmluYWwgYm9vbGVhbiBwYXJhbTMpIHsKKyAgICAgICAgZmluYWwgaW50IHNvbWV0aGluZyA9IDE7CisgICAgICAgIGludCBhbm90aGVyID0gMTA7CisgICAgICAgIHJldHVybiA8Y2FyZXQ+PHNlbGVjdGlvbj5wYXJhbTE8L3NlbGVjdGlvbj47CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbWV0aG9kUmV0dXJuQm9vbGVhbkZpeC9hZnRlcjUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbWV0aG9kUmV0dXJuQm9vbGVhbkZpeC9hZnRlcjUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45M2JjMzEzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9tZXRob2RSZXR1cm5Cb29sZWFuRml4L2FmdGVyNS5qYXZhCkBAIC0wLDAgKzEsMzEgQEAKKy8vICJNYWtlICd2aWN0aW0nIHJldHVybiAnYm9vbGVhbiciICJ0cnVlIgorcHVibGljIGNsYXNzIEV4dGVybmFsIHsKKyAgICB2b2lkIG0xKCkgeworICAgICAgICBpZiAobmV3IE91dCgpLnZpY3RpbShudWxsKSkgeworICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJTb21ldGhpbmciKTsKKyAgICAgICAgfQorICAgIH0KK30KKworY2xhc3MgT3V0IHsKKyAgICBwdWJsaWMgYm9vbGVhbiB2aWN0aW0oZmluYWwgQ29sbGVjdGlvbiBjb2xsKSB7CisgICAgICAgIGlmIChTeXN0ZW0uY3VycmVudFRpbWVNaWxsaXMoKSA+IDIzMjEzMjFMKSB7CisgICAgICAgICAgICBmaW5hbCBib29sZWFuIHZhbHVlOworCisgICAgICAgICAgICByZXR1cm4gdmFsdWU7CisgICAgICAgIH0KKworICAgICAgICBmaW5hbCBib29sZWFuIGluVGhlTWlkZGxlID0gZmFsc2U7CisgICAgICAgIGZvciAoT2JqZWN0IG8gOiBjb2xsKSB7CisgICAgICAgICAgICByZXR1cm4gaW5UaGVNaWRkbGU7CisgICAgICAgIH0KKworICAgICAgICBmb3IgKEl0ZXJhdG9yIGl0ZXJhdG9yID0gY29sbC5pdGVyYXRvcigpOyBpdGVyYXRvci5oYXNOZXh0KCk7KSB7CisgICAgICAgICAgICBPYmplY3QgbyA9IChPYmplY3QpIGl0ZXJhdG9yLm5leHQoKTsKKyAgICAgICAgICAgIGJvb2xlYW4gaW5zaWRlRm9yID0gZmFsc2U7CisKKyAgICAgICAgICAgIHJldHVybiBpblRoZU1pZGRsZTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gPGNhcmV0PjxzZWxlY3Rpb24+aW5UaGVNaWRkbGU8L3NlbGVjdGlvbj47CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9tZXRob2RSZXR1cm5Cb29sZWFuRml4L2FmdGVyNi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9tZXRob2RSZXR1cm5Cb29sZWFuRml4L2FmdGVyNi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEzYzBjZDUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L21ldGhvZFJldHVybkJvb2xlYW5GaXgvYWZ0ZXI2LmphdmEKQEAgLTAsMCArMSwzMSBAQAorLy8gIk1ha2UgJ20xJyByZXR1cm4gJ2Jvb2xlYW4nIiAidHJ1ZSIKK2ludGVyZmFjZSBBIHsKKyAgICBib29sZWFuIG0xKCk7Cit9CisKK2NsYXNzIEIgeworICAgIHB1YmxpYyBib29sZWFuIG0xKCkgeworICAgICAgICBib29sZWFuIGNhbmRpZGF0ZTsKKyAgICAgICAgcmV0dXJuIGNhbmRpZGF0ZTsKKyAgICB9Cit9CisKK2NsYXNzIEMgZXh0ZW5kcyBCIGltcGxlbWVudHMgQSB7CisgICAgcHJpdmF0ZSBmaW5hbCBib29sZWFuIG15Qm9vbGVhbjsKKworICAgIHB1YmxpYyBib29sZWFuIG0xKCkgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorfQorCitwdWJsaWMgY2xhc3MgRCBleHRlbmRzIEMgeworICAgIHB1YmxpYyB2b2lkIHVzZXIoKSB7CisgICAgICAgIHdoaWxlIChtMSgpKSB7CisgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIm0xIik7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwdWJsaWMgYm9vbGVhbiBtMSgpIHsKKyAgICAgICAgcmV0dXJuIDxjYXJldD48c2VsZWN0aW9uPmZhbHNlPC9zZWxlY3Rpb24+OworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L21ldGhvZFJldHVybkJvb2xlYW5GaXgvYmVmb3JlMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9tZXRob2RSZXR1cm5Cb29sZWFuRml4L2JlZm9yZTEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZTE4MTZkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9tZXRob2RSZXR1cm5Cb29sZWFuRml4L2JlZm9yZTEuamF2YQpAQCAtMCwwICsxLDE1IEBACisvLyAiTWFrZSAndmljdGltJyByZXR1cm4gJ2Jvb2xlYW4nIiAidHJ1ZSIKK2NsYXNzIFRlc3QgeworICAgIHB1YmxpYyB2b2lkIHRyaWdnZXIoKSB7CisgICAgICAgIGlmICg8Y2FyZXQ+dmljdGltKCkpIHsKKyAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiKioqIik7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCB2aWN0aW0oKSB7CisgICAgICAgIGZpbmFsIGludCBzb21ldGhpbmcgPSAxOworICAgICAgICBmaW5hbCBib29sZWFuIHZhbHVlID0gZmFsc2U7CisgICAgICAgIGludCBhbm90aGVyID0gMTA7CisgICAgICAgIGZpbmFsIGJvb2xlYW4gc2Vjb25kQm9vbGVhbiA9IGFub3RoZXIgPT0gc29tZXRoaW5nOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L21ldGhvZFJldHVybkJvb2xlYW5GaXgvYmVmb3JlMi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9tZXRob2RSZXR1cm5Cb29sZWFuRml4L2JlZm9yZTIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45YjYwMzVmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9tZXRob2RSZXR1cm5Cb29sZWFuRml4L2JlZm9yZTIuamF2YQpAQCAtMCwwICsxLDEzIEBACisvLyAiTWFrZSAndmljdGltJyByZXR1cm4gJ2Jvb2xlYW4nIiAidHJ1ZSIKK2NsYXNzIFRlc3QgeworICAgIHB1YmxpYyB2b2lkIHRyaWdnZXIoKSB7CisgICAgICAgIGlmICg8Y2FyZXQ+dmljdGltKCkpIHsKKyAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiKioqIik7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCB2aWN0aW0oKSB7CisgICAgICAgIGZpbmFsIGludCBzb21ldGhpbmcgPSAxOworICAgICAgICBpbnQgYW5vdGhlciA9IDEwOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L21ldGhvZFJldHVybkJvb2xlYW5GaXgvYmVmb3JlMy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9tZXRob2RSZXR1cm5Cb29sZWFuRml4L2JlZm9yZTMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MmFhNjk5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9tZXRob2RSZXR1cm5Cb29sZWFuRml4L2JlZm9yZTMuamF2YQpAQCAtMCwwICsxLDE0IEBACisvLyAiTWFrZSAndmljdGltJyByZXR1cm4gJ2Jvb2xlYW4nIiAidHJ1ZSIKK2NsYXNzIFRlc3QgeworICAgIHB1YmxpYyB2b2lkIHRyaWdnZXIoKSB7CisgICAgICAgIGlmICg8Y2FyZXQ+dmljdGltKGZhbHNlLCAwLCBmYWxzZSkpIHsKKyAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiKioqIik7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCB2aWN0aW0oZmluYWwgYm9vbGVhbiBwYXJhbTEsIGZpbmFsIGludCBwYXJhbTIsIGZpbmFsIGJvb2xlYW4gcGFyYW0zKSB7CisgICAgICAgIGZpbmFsIGludCBzb21ldGhpbmcgPSAxOworICAgICAgICBpbnQgYW5vdGhlciA9IDEwOworICAgICAgICBib29sZWFuIHNvbWVWYWx1ZSA9IHRydWU7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbWV0aG9kUmV0dXJuQm9vbGVhbkZpeC9iZWZvcmU0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L21ldGhvZFJldHVybkJvb2xlYW5GaXgvYmVmb3JlNC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlhMTVlOTkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L21ldGhvZFJldHVybkJvb2xlYW5GaXgvYmVmb3JlNC5qYXZhCkBAIC0wLDAgKzEsMTMgQEAKKy8vICJNYWtlICd2aWN0aW0nIHJldHVybiAnYm9vbGVhbiciICJ0cnVlIgorY2xhc3MgVGVzdCB7CisgICAgcHVibGljIHZvaWQgdHJpZ2dlcigpIHsKKyAgICAgICAgaWYgKDxjYXJldD52aWN0aW0oZmFsc2UsIDAsIGZhbHNlKSkgeworICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCIqKioiKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHZpY3RpbShmaW5hbCBib29sZWFuIHBhcmFtMSwgZmluYWwgaW50IHBhcmFtMiwgZmluYWwgYm9vbGVhbiBwYXJhbTMpIHsKKyAgICAgICAgZmluYWwgaW50IHNvbWV0aGluZyA9IDE7CisgICAgICAgIGludCBhbm90aGVyID0gMTA7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbWV0aG9kUmV0dXJuQm9vbGVhbkZpeC9iZWZvcmU1LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L21ldGhvZFJldHVybkJvb2xlYW5GaXgvYmVmb3JlNS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNjN2JjMmYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L21ldGhvZFJldHVybkJvb2xlYW5GaXgvYmVmb3JlNS5qYXZhCkBAIC0wLDAgKzEsMzAgQEAKKy8vICJNYWtlICd2aWN0aW0nIHJldHVybiAnYm9vbGVhbiciICJ0cnVlIgorcHVibGljIGNsYXNzIEV4dGVybmFsIHsKKyAgICB2b2lkIG0xKCkgeworICAgICAgICBpZiAobmV3IE91dCgpLjxjYXJldD52aWN0aW0obnVsbCkpIHsKKyAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiU29tZXRoaW5nIik7CisgICAgICAgIH0KKyAgICB9Cit9CisKK2NsYXNzIE91dCB7CisgICAgcHVibGljIHZvaWQgdmljdGltKGZpbmFsIENvbGxlY3Rpb24gY29sbCkgeworICAgICAgICBpZiAoU3lzdGVtLmN1cnJlbnRUaW1lTWlsbGlzKCkgPiAyMzIxMzIxTCkgeworICAgICAgICAgICAgZmluYWwgYm9vbGVhbiB2YWx1ZTsKKworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgZmluYWwgYm9vbGVhbiBpblRoZU1pZGRsZSA9IGZhbHNlOworICAgICAgICBmb3IgKE9iamVjdCBvIDogY29sbCkgeworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgZm9yIChJdGVyYXRvciBpdGVyYXRvciA9IGNvbGwuaXRlcmF0b3IoKTsgaXRlcmF0b3IuaGFzTmV4dCgpOykgeworICAgICAgICAgICAgT2JqZWN0IG8gPSAoT2JqZWN0KSBpdGVyYXRvci5uZXh0KCk7CisgICAgICAgICAgICBib29sZWFuIGluc2lkZUZvciA9IGZhbHNlOworCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L21ldGhvZFJldHVybkJvb2xlYW5GaXgvYmVmb3JlNi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9tZXRob2RSZXR1cm5Cb29sZWFuRml4L2JlZm9yZTYuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNDY5ZWQ1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9tZXRob2RSZXR1cm5Cb29sZWFuRml4L2JlZm9yZTYuamF2YQpAQCAtMCwwICsxLDI4IEBACisvLyAiTWFrZSAnbTEnIHJldHVybiAnYm9vbGVhbiciICJ0cnVlIgoraW50ZXJmYWNlIEEgeworICAgIHZvaWQgbTEoKTsKK30KKworY2xhc3MgQiB7CisgICAgcHVibGljIHZvaWQgbTEoKSB7CisgICAgICAgIGJvb2xlYW4gY2FuZGlkYXRlOworICAgIH0KK30KKworY2xhc3MgQyBleHRlbmRzIEIgaW1wbGVtZW50cyBBIHsKKyAgICBwcml2YXRlIGZpbmFsIGJvb2xlYW4gbXlCb29sZWFuOworCisgICAgcHVibGljIHZvaWQgbTEoKSB7CisgICAgfQorfQorCitwdWJsaWMgY2xhc3MgRCBleHRlbmRzIEMgeworICAgIHB1YmxpYyB2b2lkIHVzZXIoKSB7CisgICAgICAgIHdoaWxlICg8Y2FyZXQ+bTEoKSkgeworICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJtMSIpOworICAgICAgICB9CisgICAgfQorCisgICAgcHVibGljIHZvaWQgbTEoKSB7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbWV0aG9kVGhyb3dzL2FmdGVyMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9tZXRob2RUaHJvd3MvYWZ0ZXIxLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2I3YzFjMwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbWV0aG9kVGhyb3dzL2FmdGVyMS5qYXZhCkBAIC0wLDAgKzEsMTMgQEAKKy8vICJSZW1vdmUgJ2phdmEuaW8uSU9FeGNlcHRpb24nIGZyb20gJ2YnIHRocm93cyBsaXN0IiAidHJ1ZSIKK2ltcG9ydCBqYXZhLmlvLio7CisKK2NsYXNzIGEgeworIHZvaWQgZigpIHsKKyB9Cit9CisKK2NsYXNzIGIgZXh0ZW5kcyBhIHsKKyB2b2lkIGYoKSA8Y2FyZXQ+eworIH0KK30KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9tZXRob2RUaHJvd3MvYWZ0ZXIyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L21ldGhvZFRocm93cy9hZnRlcjIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZTJkMmRjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9tZXRob2RUaHJvd3MvYWZ0ZXIyLmphdmEKQEAgLTAsMCArMSwxMyBAQAorLy8gIkFkZCAnamF2YS5pby5JT0V4Y2VwdGlvbicgdG8gJ2EuZicgdGhyb3dzIGxpc3QiICJ0cnVlIgoraW1wb3J0IGphdmEuaW8uKjsKKworY2xhc3MgYSB7Cisgdm9pZCBmKCkgdGhyb3dzIElPRXhjZXB0aW9uIHsKKyB9Cit9CisKK2NsYXNzIGIgZXh0ZW5kcyBhIHsKKyB2b2lkIGYoKSB0aHJvd3MgPGNhcmV0PklPRXhjZXB0aW9uIHsKKyB9Cit9CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbWV0aG9kVGhyb3dzL2FmdGVyMy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9tZXRob2RUaHJvd3MvYWZ0ZXIzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDQ4NDU3ZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbWV0aG9kVGhyb3dzL2FmdGVyMy5qYXZhCkBAIC0wLDAgKzEsOCBAQAorLy8gIlJlbW92ZSAnamF2YS5pby5JT0V4Y2VwdGlvbicgZnJvbSAnZicgdGhyb3dzIGxpc3QiICJ0cnVlIgoraW1wb3J0IGphdmEuaW8uKjsKKworY2xhc3MgYSB7CisgcHJpdmF0ZSB2b2lkIGYoKSA8Y2FyZXQ+eworIH0KK30KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9tZXRob2RUaHJvd3MvYmVmb3JlMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9tZXRob2RUaHJvd3MvYmVmb3JlMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdlMzMwYTkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L21ldGhvZFRocm93cy9iZWZvcmUxLmphdmEKQEAgLTAsMCArMSwxMyBAQAorLy8gIlJlbW92ZSAnamF2YS5pby5JT0V4Y2VwdGlvbicgZnJvbSAnZicgdGhyb3dzIGxpc3QiICJ0cnVlIgoraW1wb3J0IGphdmEuaW8uKjsKKworY2xhc3MgYSB7Cisgdm9pZCBmKCkgeworIH0KK30KKworY2xhc3MgYiBleHRlbmRzIGEgeworIHZvaWQgZigpIHRocm93cyA8Y2FyZXQ+SU9FeGNlcHRpb24geworIH0KK30KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9tZXRob2RUaHJvd3MvYmVmb3JlMi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9tZXRob2RUaHJvd3MvYmVmb3JlMi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBkZmUzODgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L21ldGhvZFRocm93cy9iZWZvcmUyLmphdmEKQEAgLTAsMCArMSwxMyBAQAorLy8gIkFkZCAnamF2YS5pby5JT0V4Y2VwdGlvbicgdG8gJ2EuZicgdGhyb3dzIGxpc3QiICJ0cnVlIgoraW1wb3J0IGphdmEuaW8uKjsKKworY2xhc3MgYSB7Cisgdm9pZCBmKCkgeworIH0KK30KKworY2xhc3MgYiBleHRlbmRzIGEgeworIHZvaWQgZigpIHRocm93cyA8Y2FyZXQ+SU9FeGNlcHRpb24geworIH0KK30KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9tZXRob2RUaHJvd3MvYmVmb3JlMy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9tZXRob2RUaHJvd3MvYmVmb3JlMy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ5OWFjZWQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L21ldGhvZFRocm93cy9iZWZvcmUzLmphdmEKQEAgLTAsMCArMSw4IEBACisvLyAiUmVtb3ZlICdqYXZhLmlvLklPRXhjZXB0aW9uJyBmcm9tICdmJyB0aHJvd3MgbGlzdCIgInRydWUiCitpbXBvcnQgamF2YS5pby4qOworCitjbGFzcyBhIHsKKyBwcml2YXRlIHZvaWQgZigpIHRocm93cyA8Y2FyZXQ+SU9FeGNlcHRpb24geworIH0KK30KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9tZXRob2RUaHJvd3MvYmVmb3JlNC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9tZXRob2RUaHJvd3MvYmVmb3JlNC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU0NGIyZGIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L21ldGhvZFRocm93cy9iZWZvcmU0LmphdmEKQEAgLTAsMCArMSw5IEBACisvLyAiUmVtb3ZlICdqYXZhLmlvLklPRXhjZXB0aW9uJyBmcm9tICdmJyB0aHJvd3MgbGlzdCIgImZhbHNlIgoraW1wb3J0IGphdmEuaW8uKjsKKworY2xhc3MgYSB7CisgcHJpdmF0ZSB2b2lkIGYoKSB0aHJvd3MgPGNhcmV0PklPRXhjZXB0aW9uIHsKKyAgIHRocm93IG5ldyBJT0V4Y2VwdGlvbigpOworIH0KK30KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9tZXRob2RUaHJvd3MvYmVmb3JlNS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9tZXRob2RUaHJvd3MvYmVmb3JlNS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMwZTU3ZWYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L21ldGhvZFRocm93cy9iZWZvcmU1LmphdmEKQEAgLTAsMCArMSwxMyBAQAorLy8gIlJlbW92ZSAnamF2YS5pby5JT0V4Y2VwdGlvbicgZnJvbSAnZicgdGhyb3dzIGxpc3QiICJmYWxzZSIKK2ltcG9ydCBqYXZhLmlvLio7CisKK2NsYXNzIGEgeworIHZvaWQgZigpIHRocm93cyBJT0V4Y2VwdGlvbiB7CisgfQorfQorCitjbGFzcyBiIGV4dGVuZHMgYSB7Cisgdm9pZCBmKCkgdGhyb3dzIDxjYXJldD5JT0V4Y2VwdGlvbiB7CisgfQorfQorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L21vZGlmaWVyL2FmdGVyMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9tb2RpZmllci9hZnRlcjEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43YWZjNGFmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9tb2RpZmllci9hZnRlcjEuamF2YQpAQCAtMCwwICsxLDkgQEAKKy8vICJNYWtlICdhJyBub3QgYWJzdHJhY3QiICJ0cnVlIgoraW1wb3J0IGphdmEuaW8uKjsKKworY2xhc3MgYSB7CisgIHZvaWQgZigpIHsKKyAgICBuZXcgPGNhcmV0PmEoKTsKKyAgfQorfQorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L21vZGlmaWVyL2FmdGVyMTAuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbW9kaWZpZXIvYWZ0ZXIxMC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA5YWU2YTI4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9tb2RpZmllci9hZnRlcjEwLmphdmEKQEAgLTAsMCArMSw5IEBACisvLyAiTWFrZSAnaW5uZXIgY2xhc3MgaW5pdGlhbGl6ZXInIG5vdCBzdGF0aWMiICJ0cnVlIgoraW1wb3J0IGphdmEuaW8uKjsKKworY2xhc3MgYSB7CisgIGNsYXNzIGlubmVyIHsKKyAgICA8Y2FyZXQ+eworICAgIH0KKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9tb2RpZmllci9hZnRlcjEwXzEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbW9kaWZpZXIvYWZ0ZXIxMF8xLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2RkNDYxMwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbW9kaWZpZXIvYWZ0ZXIxMF8xLmphdmEKQEAgLTAsMCArMSwxMSBAQAorLy8gIk1ha2UgJ0Fub255bW91cyBjbGFzcyBkZXJpdmVkIGZyb20gYSBjbGFzcyBpbml0aWFsaXplcicgbm90IHN0YXRpYyIgInRydWUiCitpbXBvcnQgamF2YS5pby4qOworCitjbGFzcyBhIHsKKyAgdm9pZCBmKCkgeworICAgIG5ldyBhKCkgeworICAgICAgPGNhcmV0PnsKKyAgICAgIH0KKyAgICB9OworICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L21vZGlmaWVyL2FmdGVyMTEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbW9kaWZpZXIvYWZ0ZXIxMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEwNjQ0NTkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L21vZGlmaWVyL2FmdGVyMTEuamF2YQpAQCAtMCwwICsxLDkgQEAKKy8vICJNYWtlICdpbm5lcicgc3RhdGljIiAidHJ1ZSIKK2ltcG9ydCBqYXZhLmlvLio7CisKK2NsYXNzIGEgeworICBzdGF0aWMgY2xhc3MgaW5uZXIgeworICAgIDxjYXJldD5zdGF0aWMgeworICAgIH0KKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9tb2RpZmllci9hZnRlcjEyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L21vZGlmaWVyL2FmdGVyMTIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMjQ3NDI0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9tb2RpZmllci9hZnRlcjEyLmphdmEKQEAgLTAsMCArMSw5IEBACisvLyAiTWFrZSAnaW5pbm5lcicgbm90IHN0YXRpYyIgInRydWUiCitpbXBvcnQgamF2YS5pby4qOworCitjbGFzcyBhIHsKKyAgY2xhc3MgaW5uZXIgeworICAgIDxjYXJldD5jbGFzcyBpbmlubmVyIHsKKyAgICB9CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbW9kaWZpZXIvYWZ0ZXIxMy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9tb2RpZmllci9hZnRlcjEzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmUzMjhmNQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbW9kaWZpZXIvYWZ0ZXIxMy5qYXZhCkBAIC0wLDAgKzEsOSBAQAorLy8gIk1ha2UgJ2lubmVyJyBzdGF0aWMiICJ0cnVlIgoraW1wb3J0IGphdmEuaW8uKjsKKworY2xhc3MgYSB7CisgIHN0YXRpYyBjbGFzcyBpbm5lciB7CisgICAgPGNhcmV0PnN0YXRpYyBjbGFzcyBpbmlubmVyIHsKKyAgICB9CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbW9kaWZpZXIvYWZ0ZXIxNC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9tb2RpZmllci9hZnRlcjE0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODdhZDBkOAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbW9kaWZpZXIvYWZ0ZXIxNC5qYXZhCkBAIC0wLDAgKzEsNyBAQAorLy8gIk1ha2UgJ2EnIG5vdCBmaW5hbCIgInRydWUiCitpbXBvcnQgamF2YS5pby4qOworCitjbGFzcyBhIHsKK30KK2NsYXNzIGIgZXh0ZW5kcyA8Y2FyZXQ+YSB7Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L21vZGlmaWVyL2FmdGVyMTUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbW9kaWZpZXIvYWZ0ZXIxNS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc5ZjRlYjcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L21vZGlmaWVyL2FmdGVyMTUuamF2YQpAQCAtMCwwICsxLDkgQEAKKy8vICJNYWtlICdpJyBub3QgZmluYWwiICJ0cnVlIgoraW1wb3J0IGphdmEuaW8uKjsKKworZmluYWwgY2xhc3MgYSB7CisgIHZvaWQgZigpIHsKKyAgICBpbnQgaSA9IDA7CisgICAgPGNhcmV0PmkgPSA4OworICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L21vZGlmaWVyL2FmdGVyMTcuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbW9kaWZpZXIvYWZ0ZXIxNy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVmNTBkOTUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L21vZGlmaWVyL2FmdGVyMTcuamF2YQpAQCAtMCwwICsxLDEwIEBACisvLyAiTWFrZSAnZicgcHVibGljIiAidHJ1ZSIKK2ltcG9ydCBqYXZhLmlvLio7CisKK2NsYXNzIGEgeworICBwdWJsaWMgdm9pZCBmKCkgeworICB9Cit9CitjbGFzcyBiIGV4dGVuZHMgYSB7CisgIHB1YmxpYyB2b2lkIDxjYXJldD5mKCkge30KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L21vZGlmaWVyL2FmdGVyMTguamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbW9kaWZpZXIvYWZ0ZXIxOC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJkNWRjZjkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L21vZGlmaWVyL2FmdGVyMTguamF2YQpAQCAtMCwwICsxLDEwIEBACisvLyAiTWFrZSAnYS5mJyBub3QgZmluYWwiICJ0cnVlIgoraW1wb3J0IGphdmEuaW8uKjsKKworY2xhc3MgYSB7CisgIHB1YmxpYyB2b2lkIGYoKSB7CisgIH0KK30KK2NsYXNzIGIgZXh0ZW5kcyBhIHsKKyAgPGNhcmV0PnB1YmxpYyB2b2lkIGYoKSB7fQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbW9kaWZpZXIvYWZ0ZXIxOS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9tb2RpZmllci9hZnRlcjE5LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTc4ZTVlMQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbW9kaWZpZXIvYWZ0ZXIxOS5qYXZhCkBAIC0wLDAgKzEsNiBAQAorLy8gIk1ha2UgJ2YnIGFic3RyYWN0IiAidHJ1ZSIKK2ltcG9ydCBqYXZhLmlvLio7CisKK2NsYXNzIGEgeworICA8Y2FyZXQ+cHVibGljIGFic3RyYWN0IHZvaWQgZigpOworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9tb2RpZmllci9hZnRlcjIxLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L21vZGlmaWVyL2FmdGVyMjEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YWYwM2ZmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9tb2RpZmllci9hZnRlcjIxLmphdmEKQEAgLTAsMCArMSw5IEBACisvLyAiTWFrZSAnZicgbm90IHN0YXRpYyIgInRydWUiCitpbXBvcnQgamF2YS5pby4qOworCitjbGFzcyBhIHsKKyAgcHVibGljIHZvaWQgZigpIHt9Cit9CitjbGFzcyBiIGV4dGVuZHMgYSB7CisgIDxjYXJldD5wdWJsaWMgdm9pZCBmKCkge30KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbW9kaWZpZXIvYWZ0ZXIyMi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9tb2RpZmllci9hZnRlcjIyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmRlYTY4NAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbW9kaWZpZXIvYWZ0ZXIyMi5qYXZhCkBAIC0wLDAgKzEsOSBAQAorLy8gIk1ha2UgJ2EuZicgc3RhdGljIiAidHJ1ZSIKK2ltcG9ydCBqYXZhLmlvLio7CisKK2NsYXNzIGEgeworICBwdWJsaWMgc3RhdGljIHZvaWQgZigpIHt9Cit9CitjbGFzcyBiIGV4dGVuZHMgYSB7CisgIDxjYXJldD5wdWJsaWMgc3RhdGljIHZvaWQgZigpIHt9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L21vZGlmaWVyL2FmdGVyMjMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbW9kaWZpZXIvYWZ0ZXIyMy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZlOTA5YzhkNQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbW9kaWZpZXIvYWZ0ZXIyMy5qYXZhCkBAIC0wLDAgKzEsMTEgQEAKKy8vICJNYWtlICdhLmknIHBhY2thZ2UgbG9jYWwiICJ0cnVlIgoraW1wb3J0IGphdmEuaW8uKjsKKworY2xhc3MgYSB7CisgIGludCBpOworfQorY2xhc3MgYiBleHRlbmRzIGEgeworICB2b2lkIGYoKSB7CisgICAgaW50IHAgPSA8Y2FyZXQ+aTsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9tb2RpZmllci9hZnRlcjI0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L21vZGlmaWVyL2FmdGVyMjQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MWFhMGFmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9tb2RpZmllci9hZnRlcjI0LmphdmEKQEAgLTAsMCArMSwxMSBAQAorLy8gIk1ha2UgJ2EuaScgcHVibGljIiAidHJ1ZSIKK2ltcG9ydCBqYXZhLmlvLio7CisKK2NsYXNzIGEgeworICBwdWJsaWMgaW50IGk7Cit9CitjbGFzcyBiIGV4dGVuZHMgYSB7CisgIHZvaWQgZigpIHsKKyAgICBpbnQgcCA9IDxjYXJldD5pOworICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L21vZGlmaWVyL2FmdGVyMjUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbW9kaWZpZXIvYWZ0ZXIyNS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJjMjUyZWEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L21vZGlmaWVyL2FmdGVyMjUuamF2YQpAQCAtMCwwICsxLDYgQEAKKy8vICJNYWtlICdmJyBub3QgYWJzdHJhY3QiICJ0cnVlIgoraW1wb3J0IGphdmEuaW8uKjsKKworY2xhc3MgYSB7CisgIDxjYXJldD5maW5hbCB2b2lkIGYoKSB7fQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9tb2RpZmllci9hZnRlcjI2LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L21vZGlmaWVyL2FmdGVyMjYuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZTMxOTY2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9tb2RpZmllci9hZnRlcjI2LmphdmEKQEAgLTAsMCArMSw2IEBACisvLyAiTWFrZSAnaScgbm90IGFic3RyYWN0IiAidHJ1ZSIKK2ltcG9ydCBqYXZhLmlvLio7CisKK2NsYXNzIGEgeworICA8Y2FyZXQ+aW50IGk7Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L21vZGlmaWVyL2FmdGVyMjcuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbW9kaWZpZXIvYWZ0ZXIyNy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ5NDFjOTMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L21vZGlmaWVyL2FmdGVyMjcuamF2YQpAQCAtMCwwICsxLDkgQEAKKy8vICJNYWtlICdpJyBzdGF0aWMiICJ0cnVlIgoraW1wb3J0IGphdmEuaW8uKjsKKworY2xhc3MgYSB7CisgIHN0YXRpYyBpbnQgaTsKKyAgc3RhdGljIHZvaWQgZigpIHsKKyAgICBpbnQgcCA9IDxjYXJldD5pOworICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L21vZGlmaWVyL2FmdGVyMjkuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbW9kaWZpZXIvYWZ0ZXIyOS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE4NDdjYmQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L21vZGlmaWVyL2FmdGVyMjkuamF2YQpAQCAtMCwwICsxLDEyIEBACisvLyAiTWFrZSAnYyBjbGFzcyBpbml0aWFsaXplcicgbm90IHN0YXRpYyIgInRydWUiCitpbXBvcnQgamF2YS5pby4qOworCitjbGFzcyBjIHsKKyAgICBjbGFzcyBpbm5lciB7CisgICAgICAgIGNsYXNzIGluaW5uZXIge30KKyAgICB9CisKKyAgICB7CisgICAgICAgIDxjYXJldD5uZXcgaW5uZXIoKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L21vZGlmaWVyL2FmdGVyMzAuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbW9kaWZpZXIvYWZ0ZXIzMC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJjZDM0ZWYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L21vZGlmaWVyL2FmdGVyMzAuamF2YQpAQCAtMCwwICsxLDEyIEBACisvLyAiTWFrZSAnaW5uZXInIHN0YXRpYyIgInRydWUiCitpbXBvcnQgamF2YS5pby4qOworCitjbGFzcyBjIHsKKyAgICBzdGF0aWMgY2xhc3MgaW5uZXIgeworICAgICAgICBjbGFzcyBpbmlubmVyIHt9CisgICAgfQorCisgICAgc3RhdGljIHsKKyAgICAgICAgPGNhcmV0Pm5ldyBpbm5lcigpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbW9kaWZpZXIvYWZ0ZXIzMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9tb2RpZmllci9hZnRlcjMxLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2Q1MWUzMQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbW9kaWZpZXIvYWZ0ZXIzMS5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKKy8vICJNYWtlICdjIGNsYXNzIGluaXRpYWxpemVyJyBub3Qgc3RhdGljIiAidHJ1ZSIKK2ltcG9ydCBqYXZhLmlvLio7CisKK2NsYXNzIGMgeworICAgIHZvaWQgZigpIHt9CisKKyAgICB7CisgICAgICAgIDxjYXJldD5mKCk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9tb2RpZmllci9hZnRlcjQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbW9kaWZpZXIvYWZ0ZXI0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmExMmQ5ZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbW9kaWZpZXIvYWZ0ZXI0LmphdmEKQEAgLTAsMCArMSw4IEBACisvLyAiTWFrZSAnYScgYWJzdHJhY3QiICJ0cnVlIgoraW1wb3J0IGphdmEuaW8uKjsKKworYWJzdHJhY3QgY2xhc3MgPGNhcmV0PmEgeworICB2b2lkIGYoKSB7CisgIH0KKyAgYWJzdHJhY3Qgdm9pZCBmMigpOworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9tb2RpZmllci9hZnRlcjUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbW9kaWZpZXIvYWZ0ZXI1LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmNjN2I5ZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbW9kaWZpZXIvYWZ0ZXI1LmphdmEKQEAgLTAsMCArMSw4IEBACisvLyAiTWFrZSAnYScgbm90IGZpbmFsIiAidHJ1ZSIKK2ltcG9ydCBqYXZhLmlvLio7CisKK2NsYXNzIGEgeworICB2b2lkIGYoKSB7CisgICAgbmV3IDxjYXJldD5hKCkge307CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbW9kaWZpZXIvYWZ0ZXI2LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L21vZGlmaWVyL2FmdGVyNi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFlMGUxNjkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L21vZGlmaWVyL2FmdGVyNi5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKKy8vICJNYWtlICdpJyBub3Qgc3RhdGljIiAidHJ1ZSIKK2ltcG9ydCBqYXZhLmlvLio7CisKK2NsYXNzIGEgeworICBjbGFzcyBpbm5lciB7CisgICAgPGNhcmV0PmludCBpOworICB9CisgIHZvaWQgZigpIHsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9tb2RpZmllci9hZnRlcjcuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbW9kaWZpZXIvYWZ0ZXI3LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTU4ZjE5OAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbW9kaWZpZXIvYWZ0ZXI3LmphdmEKQEAgLTAsMCArMSwxMCBAQAorLy8gIk1ha2UgJ2lubmVyJyBzdGF0aWMiICJ0cnVlIgoraW1wb3J0IGphdmEuaW8uKjsKKworY2xhc3MgYSB7CisgIHN0YXRpYyBjbGFzcyBpbm5lciB7CisgICAgPGNhcmV0PnN0YXRpYyBpbnQgaTsKKyAgfQorICB2b2lkIGYoKSB7CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbW9kaWZpZXIvYWZ0ZXI4LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L21vZGlmaWVyL2FmdGVyOC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM3MTJkMTQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L21vZGlmaWVyL2FmdGVyOC5qYXZhCkBAIC0wLDAgKzEsOCBAQAorLy8gIk1ha2UgJ2YnIG5vdCBzdGF0aWMiICJ0cnVlIgoraW1wb3J0IGphdmEuaW8uKjsKKworY2xhc3MgYSB7CisgIGNsYXNzIGlubmVyIHsKKyAgICA8Y2FyZXQ+dm9pZCBmKCkge30KKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9tb2RpZmllci9hZnRlcjkuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbW9kaWZpZXIvYWZ0ZXI5LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjY4ZmE3YgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbW9kaWZpZXIvYWZ0ZXI5LmphdmEKQEAgLTAsMCArMSw4IEBACisvLyAiTWFrZSAnaW5uZXInIHN0YXRpYyIgInRydWUiCitpbXBvcnQgamF2YS5pby4qOworCitjbGFzcyBhIHsKKyAgc3RhdGljIGNsYXNzIGlubmVyIHsKKyAgICA8Y2FyZXQ+c3RhdGljIHZvaWQgZigpIHt9CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbW9kaWZpZXIvYWZ0ZXJEZW5vcm1hbGl6ZWQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbW9kaWZpZXIvYWZ0ZXJEZW5vcm1hbGl6ZWQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNGRiZWQ1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9tb2RpZmllci9hZnRlckRlbm9ybWFsaXplZC5qYXZhCkBAIC0wLDAgKzEsOCBAQAorLy8gIk1ha2UgJ2YnIHN0YXRpYyIgInRydWUiCitwdWJsaWMgY2xhc3MgRm9vIHsKKyAgICBpbnQgZzsKKyAgICBzdGF0aWMgaW50IGY7CisgICAgc3RhdGljIHZvaWQgZm9vKCkgeworICAgICAgICA8Y2FyZXQ+ZiA9IDA7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9tb2RpZmllci9hZnRlckluQW5vbnltb3VzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L21vZGlmaWVyL2FmdGVySW5Bbm9ueW1vdXMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NmRjZDRjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9tb2RpZmllci9hZnRlckluQW5vbnltb3VzLmphdmEKQEAgLTAsMCArMSwxMyBAQAorLy8gIk1ha2UgJ0Jhci5mJyBwcm90ZWN0ZWQiICJ0cnVlIgorcHVibGljIGNsYXNzIEZvbyBleHRlbmRzIEJhcnsKKyAgICB2b2lkIGZvbygpIHsKKyAgICAgICAgbmV3IFJ1bm5hYmxlKCl7CisgICAgICAgICAgcHVibGljIHZvaWQgcnVuKCkgeworICAgICAgICAgICAgZigpOworICAgICAgICAgIH0KKyAgICAgICAgfTsKKyAgICB9Cit9CitjbGFzcyBCYXIgeworICAgIHByb3RlY3RlZCB2b2lkIGYoKXt9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L21vZGlmaWVyL2FmdGVyUmVmTmFtZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9tb2RpZmllci9hZnRlclJlZk5hbWUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZjY0NjdlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9tb2RpZmllci9hZnRlclJlZk5hbWUuamF2YQpAQCAtMCwwICsxLDEyIEBACisvLyAiTWFrZSAnQmFyLmYnIHB1YmxpYyIgInRydWUiCitwdWJsaWMgY2xhc3MgRm9vIHsKKyAgICB2b2lkIGZvbyhCYXIgZikgeworICAgICAgICBmLjxjYXJldD5mKDIpOworICAgIH0KK30KK2NsYXNzIEJhciB7CisgICAgcHVibGljIHZvaWQgZihpbnQgaSl7fQorICAgIHB1YmxpYyB2b2lkIGYoU3RyaW5nIHMpe30KKworCit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L21vZGlmaWVyL2JlZm9yZTEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbW9kaWZpZXIvYmVmb3JlMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRiMTlkMDEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L21vZGlmaWVyL2JlZm9yZTEuamF2YQpAQCAtMCwwICsxLDkgQEAKKy8vICJNYWtlICdhJyBub3QgYWJzdHJhY3QiICJ0cnVlIgoraW1wb3J0IGphdmEuaW8uKjsKKworYWJzdHJhY3QgY2xhc3MgYSB7CisgIHZvaWQgZigpIHsKKyAgICBuZXcgPGNhcmV0PmEoKTsKKyAgfQorfQorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L21vZGlmaWVyL2JlZm9yZTEwLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L21vZGlmaWVyL2JlZm9yZTEwLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2UwM2U3NQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbW9kaWZpZXIvYmVmb3JlMTAuamF2YQpAQCAtMCwwICsxLDkgQEAKKy8vICJNYWtlICdpbm5lciBjbGFzcyBpbml0aWFsaXplcicgbm90IHN0YXRpYyIgInRydWUiCitpbXBvcnQgamF2YS5pby4qOworCitjbGFzcyBhIHsKKyAgY2xhc3MgaW5uZXIgeworICAgIDxjYXJldD5zdGF0aWMgeworICAgIH0KKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9tb2RpZmllci9iZWZvcmUxMF8xLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L21vZGlmaWVyL2JlZm9yZTEwXzEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45Yzk1OTRkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9tb2RpZmllci9iZWZvcmUxMF8xLmphdmEKQEAgLTAsMCArMSwxMSBAQAorLy8gIk1ha2UgJ0Fub255bW91cyBjbGFzcyBkZXJpdmVkIGZyb20gYSBjbGFzcyBpbml0aWFsaXplcicgbm90IHN0YXRpYyIgInRydWUiCitpbXBvcnQgamF2YS5pby4qOworCitjbGFzcyBhIHsKKyAgdm9pZCBmKCkgeworICAgIG5ldyBhKCkgeworICAgICAgPGNhcmV0PnN0YXRpYyB7CisgICAgICB9CisgICAgfTsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9tb2RpZmllci9iZWZvcmUxMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9tb2RpZmllci9iZWZvcmUxMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhjMjA1YTUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L21vZGlmaWVyL2JlZm9yZTExLmphdmEKQEAgLTAsMCArMSw5IEBACisvLyAiTWFrZSAnaW5uZXInIHN0YXRpYyIgInRydWUiCitpbXBvcnQgamF2YS5pby4qOworCitjbGFzcyBhIHsKKyAgY2xhc3MgaW5uZXIgeworICAgIDxjYXJldD5zdGF0aWMgeworICAgIH0KKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9tb2RpZmllci9iZWZvcmUxMi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9tb2RpZmllci9iZWZvcmUxMi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJkN2JlYmYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L21vZGlmaWVyL2JlZm9yZTEyLmphdmEKQEAgLTAsMCArMSw5IEBACisvLyAiTWFrZSAnaW5pbm5lcicgbm90IHN0YXRpYyIgInRydWUiCitpbXBvcnQgamF2YS5pby4qOworCitjbGFzcyBhIHsKKyAgY2xhc3MgaW5uZXIgeworICAgIDxjYXJldD5zdGF0aWMgY2xhc3MgaW5pbm5lciB7CisgICAgfQorICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L21vZGlmaWVyL2JlZm9yZTEzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L21vZGlmaWVyL2JlZm9yZTEzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDMyZTg2NwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbW9kaWZpZXIvYmVmb3JlMTMuamF2YQpAQCAtMCwwICsxLDkgQEAKKy8vICJNYWtlICdpbm5lcicgc3RhdGljIiAidHJ1ZSIKK2ltcG9ydCBqYXZhLmlvLio7CisKK2NsYXNzIGEgeworICBjbGFzcyBpbm5lciB7CisgICAgPGNhcmV0PnN0YXRpYyBjbGFzcyBpbmlubmVyIHsKKyAgICB9CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbW9kaWZpZXIvYmVmb3JlMTQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbW9kaWZpZXIvYmVmb3JlMTQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YjdiYWE1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9tb2RpZmllci9iZWZvcmUxNC5qYXZhCkBAIC0wLDAgKzEsNyBAQAorLy8gIk1ha2UgJ2EnIG5vdCBmaW5hbCIgInRydWUiCitpbXBvcnQgamF2YS5pby4qOworCitmaW5hbCBjbGFzcyBhIHsKK30KK2NsYXNzIGIgZXh0ZW5kcyA8Y2FyZXQ+YSB7Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L21vZGlmaWVyL2JlZm9yZTE1LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L21vZGlmaWVyL2JlZm9yZTE1LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2Q1ZjQ4NAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbW9kaWZpZXIvYmVmb3JlMTUuamF2YQpAQCAtMCwwICsxLDkgQEAKKy8vICJNYWtlICdpJyBub3QgZmluYWwiICJ0cnVlIgoraW1wb3J0IGphdmEuaW8uKjsKKworZmluYWwgY2xhc3MgYSB7CisgIHZvaWQgZigpIHsKKyAgICBmaW5hbCBpbnQgaSA9IDA7CisgICAgPGNhcmV0PmkgPSA4OworICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L21vZGlmaWVyL2JlZm9yZTE2LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L21vZGlmaWVyL2JlZm9yZTE2LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzU2NGQ1NwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbW9kaWZpZXIvYmVmb3JlMTYuamF2YQpAQCAtMCwwICsxLDkgQEAKKy8vICJNYWtlICdpJyBub3QgZmluYWwiICJmYWxzZSIKK2ltcG9ydCBqYXZhLmlvLio7CisKK2ZpbmFsIGNsYXNzIGEgeworICB2b2lkIGYoKSB7CisgICAgZmluYWwgaW50IGk7CisgICAgPGNhcmV0PmkgPSA4OworICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L21vZGlmaWVyL2JlZm9yZTE3LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L21vZGlmaWVyL2JlZm9yZTE3LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTQyMjRhMwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbW9kaWZpZXIvYmVmb3JlMTcuamF2YQpAQCAtMCwwICsxLDEwIEBACisvLyAiTWFrZSAnZicgcHVibGljIiAidHJ1ZSIKK2ltcG9ydCBqYXZhLmlvLio7CisKK2NsYXNzIGEgeworICBwdWJsaWMgdm9pZCBmKCkgeworICB9Cit9CitjbGFzcyBiIGV4dGVuZHMgYSB7CisgIHZvaWQgPGNhcmV0PmYoKSB7fQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbW9kaWZpZXIvYmVmb3JlMTguamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbW9kaWZpZXIvYmVmb3JlMTguamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hY2M3Y2MxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9tb2RpZmllci9iZWZvcmUxOC5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKKy8vICJNYWtlICdhLmYnIG5vdCBmaW5hbCIgInRydWUiCitpbXBvcnQgamF2YS5pby4qOworCitjbGFzcyBhIHsKKyAgZmluYWwgcHVibGljIHZvaWQgZigpIHsKKyAgfQorfQorY2xhc3MgYiBleHRlbmRzIGEgeworICA8Y2FyZXQ+cHVibGljIHZvaWQgZigpIHt9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9tb2RpZmllci9iZWZvcmUxOS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9tb2RpZmllci9iZWZvcmUxOS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJlNTA5NDUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L21vZGlmaWVyL2JlZm9yZTE5LmphdmEKQEAgLTAsMCArMSw2IEBACisvLyAiTWFrZSAnZicgYWJzdHJhY3QiICJ0cnVlIgoraW1wb3J0IGphdmEuaW8uKjsKKworY2xhc3MgYSB7CisgIDxjYXJldD5wdWJsaWMgdm9pZCBmKCk7Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L21vZGlmaWVyL2JlZm9yZTIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbW9kaWZpZXIvYmVmb3JlMi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIxYWE5NDEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L21vZGlmaWVyL2JlZm9yZTIuamF2YQpAQCAtMCwwICsxLDEwIEBACisvLyAiTWFrZSAnYScgbm90IGFic3RyYWN0IiAiZmFsc2UiCitpbXBvcnQgamF2YS5pby4qOworCithYnN0cmFjdCBjbGFzcyBhIHsKKyAgdm9pZCBmKCkgeworICAgIG5ldyA8Y2FyZXQ+YSgpOworICB9CisgIGFic3RyYWN0IHZvaWQgZjIoKTsKK30KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9tb2RpZmllci9iZWZvcmUyMC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9tb2RpZmllci9iZWZvcmUyMC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU3YTA2NzcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L21vZGlmaWVyL2JlZm9yZTIwLmphdmEKQEAgLTAsMCArMSw2IEBACisvLyAiTWFrZSAnZicgYWJzdHJhY3QiICJmYWxzZSIKK2ltcG9ydCBqYXZhLmlvLio7CisKK2NsYXNzIGEgeworICA8Y2FyZXQ+cHVibGljIGZpbmFsIHZvaWQgZigpOworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9tb2RpZmllci9iZWZvcmUyMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9tb2RpZmllci9iZWZvcmUyMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlmYzA1ZTEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L21vZGlmaWVyL2JlZm9yZTIxLmphdmEKQEAgLTAsMCArMSw5IEBACisvLyAiTWFrZSAnZicgbm90IHN0YXRpYyIgInRydWUiCitpbXBvcnQgamF2YS5pby4qOworCitjbGFzcyBhIHsKKyAgcHVibGljIHZvaWQgZigpIHt9Cit9CitjbGFzcyBiIGV4dGVuZHMgYSB7CisgIDxjYXJldD5wdWJsaWMgc3RhdGljIHZvaWQgZigpIHt9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L21vZGlmaWVyL2JlZm9yZTIyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L21vZGlmaWVyL2JlZm9yZTIyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmZhZmEwMAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbW9kaWZpZXIvYmVmb3JlMjIuamF2YQpAQCAtMCwwICsxLDkgQEAKKy8vICJNYWtlICdhLmYnIHN0YXRpYyIgInRydWUiCitpbXBvcnQgamF2YS5pby4qOworCitjbGFzcyBhIHsKKyAgcHVibGljIHZvaWQgZigpIHt9Cit9CitjbGFzcyBiIGV4dGVuZHMgYSB7CisgIDxjYXJldD5wdWJsaWMgc3RhdGljIHZvaWQgZigpIHt9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L21vZGlmaWVyL2JlZm9yZTIzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L21vZGlmaWVyL2JlZm9yZTIzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmU3NTBjYwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbW9kaWZpZXIvYmVmb3JlMjMuamF2YQpAQCAtMCwwICsxLDExIEBACisvLyAiTWFrZSAnYS5pJyBwYWNrYWdlIGxvY2FsIiAidHJ1ZSIKK2ltcG9ydCBqYXZhLmlvLio7CisKK2NsYXNzIGEgeworICBwcml2YXRlIGludCBpOworfQorY2xhc3MgYiBleHRlbmRzIGEgeworICB2b2lkIGYoKSB7CisgICAgaW50IHAgPSA8Y2FyZXQ+aTsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9tb2RpZmllci9iZWZvcmUyNC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9tb2RpZmllci9iZWZvcmUyNC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY5YWQxYjMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L21vZGlmaWVyL2JlZm9yZTI0LmphdmEKQEAgLTAsMCArMSwxMSBAQAorLy8gIk1ha2UgJ2EuaScgcHVibGljIiAidHJ1ZSIKK2ltcG9ydCBqYXZhLmlvLio7CisKK2NsYXNzIGEgeworICBwcml2YXRlIGludCBpOworfQorY2xhc3MgYiBleHRlbmRzIGEgeworICB2b2lkIGYoKSB7CisgICAgaW50IHAgPSA8Y2FyZXQ+aTsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9tb2RpZmllci9iZWZvcmUyNS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9tb2RpZmllci9iZWZvcmUyNS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIwNmJlNDYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L21vZGlmaWVyL2JlZm9yZTI1LmphdmEKQEAgLTAsMCArMSw2IEBACisvLyAiTWFrZSAnZicgbm90IGFic3RyYWN0IiAidHJ1ZSIKK2ltcG9ydCBqYXZhLmlvLio7CisKK2NsYXNzIGEgeworICA8Y2FyZXQ+YWJzdHJhY3QgZmluYWwgdm9pZCBmKCkge30KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbW9kaWZpZXIvYmVmb3JlMjYuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbW9kaWZpZXIvYmVmb3JlMjYuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMzIyMjZiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9tb2RpZmllci9iZWZvcmUyNi5qYXZhCkBAIC0wLDAgKzEsNiBAQAorLy8gIk1ha2UgJ2knIG5vdCBhYnN0cmFjdCIgInRydWUiCitpbXBvcnQgamF2YS5pby4qOworCitjbGFzcyBhIHsKKyAgPGNhcmV0PmFic3RyYWN0IGludCBpOworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9tb2RpZmllci9iZWZvcmUyNy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9tb2RpZmllci9iZWZvcmUyNy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFjN2M3YjAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L21vZGlmaWVyL2JlZm9yZTI3LmphdmEKQEAgLTAsMCArMSw5IEBACisvLyAiTWFrZSAnaScgc3RhdGljIiAidHJ1ZSIKK2ltcG9ydCBqYXZhLmlvLio7CisKK2NsYXNzIGEgeworICBpbnQgaTsKKyAgc3RhdGljIHZvaWQgZigpIHsKKyAgICBpbnQgcCA9IDxjYXJldD5pOworICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L21vZGlmaWVyL2JlZm9yZTI4LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L21vZGlmaWVyL2JlZm9yZTI4LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDc4ZjlhNwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbW9kaWZpZXIvYmVmb3JlMjguamF2YQpAQCAtMCwwICsxLDExIEBACisvLyAiTWFrZSAnTXlJbnRlcmZhY2UubXlNZXRob2QnIHN0YXRpYyIgImZhbHNlIgoraW1wb3J0IGphdmEuaW8uKjsKKworaW50ZXJmYWNlIE15SW50ZXJmYWNlCit7CisgICAgcHVibGljIHZvaWQgbXlNZXRob2QoKTsKK30KK2NsYXNzIE15SW50ZXJmYWNlSW1wbCBpbXBsZW1lbnRzIE15SW50ZXJmYWNlIAoreworICAgIDxjYXJldD5wdWJsaWMgc3RhdGljIHZvaWQgbXlNZXRob2QoKSB7IC8qIGltcGxlbWVudGF0aW9uIGdvZXMgaGVyZSAqLyB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L21vZGlmaWVyL2JlZm9yZTI5LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L21vZGlmaWVyL2JlZm9yZTI5LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTYxNmVlMgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbW9kaWZpZXIvYmVmb3JlMjkuamF2YQpAQCAtMCwwICsxLDEyIEBACisvLyAiTWFrZSAnYyBjbGFzcyBpbml0aWFsaXplcicgbm90IHN0YXRpYyIgInRydWUiCitpbXBvcnQgamF2YS5pby4qOworCitjbGFzcyBjIHsKKyAgICBjbGFzcyBpbm5lciB7CisgICAgICAgIGNsYXNzIGluaW5uZXIge30KKyAgICB9CisKKyAgICBzdGF0aWMgeworICAgICAgICA8Y2FyZXQ+bmV3IGlubmVyKCk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9tb2RpZmllci9iZWZvcmUzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L21vZGlmaWVyL2JlZm9yZTMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNDRlMWVmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9tb2RpZmllci9iZWZvcmUzLmphdmEKQEAgLTAsMCArMSwxMCBAQAorLy8gIk1ha2UgJ2knIG5vdCBhYnN0cmFjdCIgImZhbHNlIgoraW1wb3J0IGphdmEuaW8uKjsKKworY2xhc3MgYSB7CisgIHZvaWQgZigpIHsKKyAgICBuZXcgPGNhcmV0PmkoKTsKKyAgfQorfQoraW50ZXJmYWNlIGkgeworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9tb2RpZmllci9iZWZvcmUzMC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9tb2RpZmllci9iZWZvcmUzMC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRjNmY2OWQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L21vZGlmaWVyL2JlZm9yZTMwLmphdmEKQEAgLTAsMCArMSwxMiBAQAorLy8gIk1ha2UgJ2lubmVyJyBzdGF0aWMiICJ0cnVlIgoraW1wb3J0IGphdmEuaW8uKjsKKworY2xhc3MgYyB7CisgICAgY2xhc3MgaW5uZXIgeworICAgICAgICBjbGFzcyBpbmlubmVyIHt9CisgICAgfQorCisgICAgc3RhdGljIHsKKyAgICAgICAgPGNhcmV0Pm5ldyBpbm5lcigpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbW9kaWZpZXIvYmVmb3JlMzEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbW9kaWZpZXIvYmVmb3JlMzEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZWU0MTEzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9tb2RpZmllci9iZWZvcmUzMS5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKKy8vICJNYWtlICdjIGNsYXNzIGluaXRpYWxpemVyJyBub3Qgc3RhdGljIiAidHJ1ZSIKK2ltcG9ydCBqYXZhLmlvLio7CisKK2NsYXNzIGMgeworICAgIHZvaWQgZigpIHt9CisKKyAgICBzdGF0aWMgeworICAgICAgICA8Y2FyZXQ+ZigpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbW9kaWZpZXIvYmVmb3JlMzIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbW9kaWZpZXIvYmVmb3JlMzIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYzA4M2RlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9tb2RpZmllci9iZWZvcmUzMi5qYXZhCkBAIC0wLDAgKzEsMTEgQEAKKy8vICJNYWtlICdzcy5zJyBwdWJsaWMiICJmYWxzZSIKKy8vIGRvIG5vdCBzdWdnZXN0IGludGVudGlvbiBiZWNhdXNlIG9mIHN0YXRpY3MgcHJvYmxlbQorCitjbGFzcyBzcyB7CisgIHByaXZhdGUgaW50IHM7Cit9CitjbGFzcyBkIGV4dGVuZHMgc3MgeworICBzdGF0aWMgdm9pZCBmKCkgeworICAgIGludCB0ID0gPGNhcmV0PnM7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L21vZGlmaWVyL2JlZm9yZTMzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L21vZGlmaWVyL2JlZm9yZTMzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTAzMmFlNgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbW9kaWZpZXIvYmVmb3JlMzMuamF2YQpAQCAtMCwwICsxLDEyIEBACisvLyAiTWFrZSAnZScgbm90IGZpbmFsIiAiZmFsc2UiCisKK2NsYXNzIEMgeworICBzdGF0aWMgeworICAgIHRyeSB7CisgICAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCk7CisgICAgfQorICAgIGNhdGNoIChSdW50aW1lRXhjZXB0aW9uIHwgSU9FeGNlcHRpb24gZSkgeworICAgICAgPGNhcmV0PmUgPSBudWxsOworICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbW9kaWZpZXIvYmVmb3JlMzQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbW9kaWZpZXIvYmVmb3JlMzQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YWNhMDY5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9tb2RpZmllci9iZWZvcmUzNC5qYXZhCkBAIC0wLDAgKzEsOSBAQAorLy8gIk1ha2UgJ3InIG5vdCBmaW5hbCIgImZhbHNlIgorCitjbGFzcyBDIHsKKyAgdm9pZCBtKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgdHJ5IChBdXRvQ2xvc2VhYmxlIHIgPSBudWxsKSB7CisgICAgICA8Y2FyZXQ+ciA9IG51bGw7CisgICAgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9tb2RpZmllci9iZWZvcmUzNS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9tb2RpZmllci9iZWZvcmUzNS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFiZWU2ZGEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L21vZGlmaWVyL2JlZm9yZTM1LmphdmEKQEAgLTAsMCArMSwxNiBAQAorLy8gIk1ha2UgJ2UnIGZpbmFsIiAiZmFsc2UiCisKK2NsYXNzIEMgeworICBzdGF0aWMgeworICAgIHRyeSB7CisgICAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCk7CisgICAgfQorICAgIGNhdGNoIChSdW50aW1lRXhjZXB0aW9uIHwgSU9FeGNlcHRpb24gZSkgeworICAgICAgbmV3IFJ1bm5hYmxlKCkgeworICAgICAgICBwdWJsaWMgdm9pZCBydW4oKSB7CisgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKDxjYXJldD5lKTsKKyAgICAgICAgfQorICAgICAgfS5ydW4oKTsKKyAgICB9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L21vZGlmaWVyL2JlZm9yZTM2LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L21vZGlmaWVyL2JlZm9yZTM2LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDRjNGNkZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbW9kaWZpZXIvYmVmb3JlMzYuamF2YQpAQCAtMCwwICsxLDEzIEBACisvLyAiTWFrZSAncicgZmluYWwiICJmYWxzZSIKKworY2xhc3MgQyB7CisgIHZvaWQgbSgpIHRocm93cyBFeGNlcHRpb24geworICAgIHRyeSAoQXV0b0Nsb3NlYWJsZSByID0gbnVsbCkgeworICAgICAgbmV3IFJ1bm5hYmxlKCkgeworICAgICAgICBwdWJsaWMgdm9pZCBydW4oKSB7CisgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKDxjYXJldD5yKTsKKyAgICAgICAgfQorICAgICAgfS5ydW4oKTsKKyAgICB9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L21vZGlmaWVyL2JlZm9yZTQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbW9kaWZpZXIvYmVmb3JlNC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE3ZGRkYjUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L21vZGlmaWVyL2JlZm9yZTQuamF2YQpAQCAtMCwwICsxLDggQEAKKy8vICJNYWtlICdhJyBhYnN0cmFjdCIgInRydWUiCitpbXBvcnQgamF2YS5pby4qOworCitjbGFzcyA8Y2FyZXQ+YSB7CisgIHZvaWQgZigpIHsKKyAgfQorICBhYnN0cmFjdCB2b2lkIGYyKCk7Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L21vZGlmaWVyL2JlZm9yZTUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbW9kaWZpZXIvYmVmb3JlNS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcxYzA4ZjEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L21vZGlmaWVyL2JlZm9yZTUuamF2YQpAQCAtMCwwICsxLDggQEAKKy8vICJNYWtlICdhJyBub3QgZmluYWwiICJ0cnVlIgoraW1wb3J0IGphdmEuaW8uKjsKKworZmluYWwgY2xhc3MgYSB7CisgIHZvaWQgZigpIHsKKyAgICBuZXcgPGNhcmV0PmEoKSB7fTsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9tb2RpZmllci9iZWZvcmU2LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L21vZGlmaWVyL2JlZm9yZTYuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wOGJkOTA0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9tb2RpZmllci9iZWZvcmU2LmphdmEKQEAgLTAsMCArMSwxMCBAQAorLy8gIk1ha2UgJ2knIG5vdCBzdGF0aWMiICJ0cnVlIgoraW1wb3J0IGphdmEuaW8uKjsKKworY2xhc3MgYSB7CisgIGNsYXNzIGlubmVyIHsKKyAgICA8Y2FyZXQ+c3RhdGljIGludCBpOworICB9CisgIHZvaWQgZigpIHsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9tb2RpZmllci9iZWZvcmU3LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L21vZGlmaWVyL2JlZm9yZTcuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41Y2NjMTNjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9tb2RpZmllci9iZWZvcmU3LmphdmEKQEAgLTAsMCArMSwxMCBAQAorLy8gIk1ha2UgJ2lubmVyJyBzdGF0aWMiICJ0cnVlIgoraW1wb3J0IGphdmEuaW8uKjsKKworY2xhc3MgYSB7CisgIGNsYXNzIGlubmVyIHsKKyAgICA8Y2FyZXQ+c3RhdGljIGludCBpOworICB9CisgIHZvaWQgZigpIHsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9tb2RpZmllci9iZWZvcmU4LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L21vZGlmaWVyL2JlZm9yZTguamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZmRkOTY1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9tb2RpZmllci9iZWZvcmU4LmphdmEKQEAgLTAsMCArMSw4IEBACisvLyAiTWFrZSAnZicgbm90IHN0YXRpYyIgInRydWUiCitpbXBvcnQgamF2YS5pby4qOworCitjbGFzcyBhIHsKKyAgY2xhc3MgaW5uZXIgeworICAgIDxjYXJldD5zdGF0aWMgdm9pZCBmKCkge30KKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9tb2RpZmllci9iZWZvcmU5LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L21vZGlmaWVyL2JlZm9yZTkuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZjFhNzIxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9tb2RpZmllci9iZWZvcmU5LmphdmEKQEAgLTAsMCArMSw4IEBACisvLyAiTWFrZSAnaW5uZXInIHN0YXRpYyIgInRydWUiCitpbXBvcnQgamF2YS5pby4qOworCitjbGFzcyBhIHsKKyAgY2xhc3MgaW5uZXIgeworICAgIDxjYXJldD5zdGF0aWMgdm9pZCBmKCkge30KKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9tb2RpZmllci9iZWZvcmVEZW5vcm1hbGl6ZWQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbW9kaWZpZXIvYmVmb3JlRGVub3JtYWxpemVkLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTUzMmZhZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbW9kaWZpZXIvYmVmb3JlRGVub3JtYWxpemVkLmphdmEKQEAgLTAsMCArMSw3IEBACisvLyAiTWFrZSAnZicgc3RhdGljIiAidHJ1ZSIKK3B1YmxpYyBjbGFzcyBGb28geworICAgIGludCBnLGY7CisgICAgc3RhdGljIHZvaWQgZm9vKCkgeworICAgICAgICA8Y2FyZXQ+ZiA9IDA7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9tb2RpZmllci9iZWZvcmVJbkFub255bW91cy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9tb2RpZmllci9iZWZvcmVJbkFub255bW91cy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMwYTMyMjQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L21vZGlmaWVyL2JlZm9yZUluQW5vbnltb3VzLmphdmEKQEAgLTAsMCArMSwxMyBAQAorLy8gIk1ha2UgJ0Jhci5mJyBwcm90ZWN0ZWQiICJ0cnVlIgorcHVibGljIGNsYXNzIEZvbyBleHRlbmRzIEJhcnsKKyAgICB2b2lkIGZvbygpIHsKKyAgICAgICAgbmV3IFJ1bm5hYmxlKCl7CisgICAgICAgICAgcHVibGljIHZvaWQgcnVuKCkgeworICAgICAgICAgICAgZjxjYXJldD4oKTsKKyAgICAgICAgICB9CisgICAgICAgIH07CisgICAgfQorfQorY2xhc3MgQmFyIHsKKyAgICBwcml2YXRlIHZvaWQgZigpe30KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbW9kaWZpZXIvYmVmb3JlUmVmTmFtZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9tb2RpZmllci9iZWZvcmVSZWZOYW1lLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWE3MGY3YgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbW9kaWZpZXIvYmVmb3JlUmVmTmFtZS5qYXZhCkBAIC0wLDAgKzEsMTIgQEAKKy8vICJNYWtlICdCYXIuZicgcHVibGljIiAidHJ1ZSIKK3B1YmxpYyBjbGFzcyBGb28geworICAgIHZvaWQgZm9vKEJhciBmKSB7CisgICAgICAgIGYuPGNhcmV0PmYoMik7CisgICAgfQorfQorY2xhc3MgQmFyIHsKKyAgICBwcml2YXRlIHZvaWQgZihpbnQgaSl7fQorICAgIHB1YmxpYyB2b2lkIGYoU3RyaW5nIHMpe30KKworCit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L21vZGlmaWVyL2JlZm9yZVNlbnNlbGVzc1N0YXRpY0ZpeC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9tb2RpZmllci9iZWZvcmVTZW5zZWxlc3NTdGF0aWNGaXguamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZGI1Y2RmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9tb2RpZmllci9iZWZvcmVTZW5zZWxlc3NTdGF0aWNGaXguamF2YQpAQCAtMCwwICsxLDEwIEBACisvLyAiTWFrZSAnbWFpbicgbm90IHN0YXRpYyIgImZhbHNlIgorY2xhc3MgRGF0ZUZvcm1hdCB7CisKKyAgcHVibGljIHZvaWQgcGFyc2UoU3RyaW5nIHMpe30KK30KK2NsYXNzIFRlc3RQYXJzZSB7CisgICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgeworICAgICAgRGF0ZUZvcm1hdC48Y2FyZXQ+cGFyc2UoIjIwMDcwNzI0VDE3NDgwMCIpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbW92ZUJvdW5kQ2xhc3NUb0Zyb250L2FmdGVyMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9tb3ZlQm91bmRDbGFzc1RvRnJvbnQvYWZ0ZXIxLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODg2ZTcyOAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbW92ZUJvdW5kQ2xhc3NUb0Zyb250L2FmdGVyMS5qYXZhCkBAIC0wLDAgKzEsNCBAQAorLy8gIk1vdmUgYm91bmQgJ2phdmEubGFuZy5OdW1iZXInIHRvIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGJvdW5kcyBsaXN0IG9mIHR5cGUgcGFyYW1ldGVyICdYJyIgInRydWUiCitjbGFzcyBDIDxYIGV4dGVuZHMgTnVtYmVyICYgUnVubmFibGU8Y2FyZXQ+PiB7CisgICAgWCB4OworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9tb3ZlQm91bmRDbGFzc1RvRnJvbnQvYmVmb3JlMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9tb3ZlQm91bmRDbGFzc1RvRnJvbnQvYmVmb3JlMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZkMmFiYWIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L21vdmVCb3VuZENsYXNzVG9Gcm9udC9iZWZvcmUxLmphdmEKQEAgLTAsMCArMSw0IEBACisvLyAiTW92ZSBib3VuZCAnamF2YS5sYW5nLk51bWJlcicgdG8gdGhlIGJlZ2lubmluZyBvZiB0aGUgYm91bmRzIGxpc3Qgb2YgdHlwZSBwYXJhbWV0ZXIgJ1gnIiAidHJ1ZSIKK2NsYXNzIEMgPFggZXh0ZW5kcyBSdW5uYWJsZSAmIDxjYXJldD5OdW1iZXI+IHsKKyAgICBYIHg7Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L21vdmVDYXRjaFVwL2FmdGVyMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9tb3ZlQ2F0Y2hVcC9hZnRlcjEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNGZjYzI4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9tb3ZlQ2F0Y2hVcC9hZnRlcjEuamF2YQpAQCAtMCwwICsxLDE2IEBACisvLyAiTW92ZSBjYXRjaCBmb3IgJ2phdmEuaW8uSU9FeGNlcHRpb24nIGJlZm9yZSAnamF2YS5sYW5nLkV4Y2VwdGlvbiciICJ0cnVlIgoraW1wb3J0IGphdmEuaW8uKjsKKworY2xhc3MgYSB7Cisgdm9pZCBmKGludCBpKSB7CisgICAgIHRyeSB7CisgICAgICAgICBpZiAoaT09MCkgdGhyb3cgbmV3IElPRXhjZXB0aW9uKCk7CisgICAgIH0gY2F0Y2ggKElPRXhjZXB0aW9uIGUpICB7CisgICAgICAgaW50IGlvZXhjZXAgPSAwOworICAgICB9IGNhdGNoIChFeGNlcHRpb24gZSkgeworICAgICAgIGludCBleGNlcCA9IDA7CisgICAgIH08Y2FyZXQ+CisKKyB9Cit9CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbW92ZUNhdGNoVXAvYmVmb3JlMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9tb3ZlQ2F0Y2hVcC9iZWZvcmUxLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzQ0NTNiOQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbW92ZUNhdGNoVXAvYmVmb3JlMS5qYXZhCkBAIC0wLDAgKzEsMTYgQEAKKy8vICJNb3ZlIGNhdGNoIGZvciAnamF2YS5pby5JT0V4Y2VwdGlvbicgYmVmb3JlICdqYXZhLmxhbmcuRXhjZXB0aW9uJyIgInRydWUiCitpbXBvcnQgamF2YS5pby4qOworCitjbGFzcyBhIHsKKyB2b2lkIGYoaW50IGkpIHsKKyAgICAgdHJ5IHsKKyAgICAgICAgIGlmIChpPT0wKSB0aHJvdyBuZXcgSU9FeGNlcHRpb24oKTsKKyAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKKyAgICAgICBpbnQgZXhjZXAgPSAwOworICAgICB9IGNhdGNoICg8Y2FyZXQ+SU9FeGNlcHRpb24gZSkgIHsKKyAgICAgICBpbnQgaW9leGNlcCA9IDA7CisgICAgIH0KKworIH0KK30KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9tb3ZlQ2F0Y2hVcC9iZWZvcmUyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L21vdmVDYXRjaFVwL2JlZm9yZTIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZWZiYzNmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9tb3ZlQ2F0Y2hVcC9iZWZvcmUyLmphdmEKQEAgLTAsMCArMSwxOCBAQAorLy8gIk1vdmUgY2F0Y2ggZm9yICdqYXZhLmlvLklPRXhjZXB0aW9uJyBiZWZvcmUgJ2phdmEuaW8uRmlsZU5vdEZvdW5kRXhjZXB0aW9uJyIgImZhbHNlIgoraW1wb3J0IGphdmEuaW8uKjsKKworY2xhc3MgYSB7Cisgdm9pZCBmKGludCBpKSB7CisgICAgIHRyeSB7CisgICAgICAgICBpbnQgcCA9IDA7CisgICAgIH0KKyAgICAgY2F0Y2ggKEZpbGVOb3RGb3VuZEV4Y2VwdGlvbiBlKSB7CisgICAgICAgaW50IGV4Y2VwID0gMDsKKyAgICAgfQorICAgICBjYXRjaCAoPGNhcmV0PklPRXhjZXB0aW9uIGUpICB7CisgICAgICAgaW50IGlvZXhjZXAgPSAwOworICAgICB9CisKKyB9Cit9CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbW92ZUZpZWxkQXNzaWdubWVudFRvSW5pdGlhbGl6ZXIvYWZ0ZXIxLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L21vdmVGaWVsZEFzc2lnbm1lbnRUb0luaXRpYWxpemVyL2FmdGVyMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY2ZWM0NWYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L21vdmVGaWVsZEFzc2lnbm1lbnRUb0luaXRpYWxpemVyL2FmdGVyMS5qYXZhCkBAIC0wLDAgKzEsNyBAQAorLy8gIk1vdmUgYXNzaWdubWVudCB0byBmaWVsZCBkZWNsYXJhdGlvbiIgInRydWUiCisKK2NsYXNzIFggeworICBpbnQgZiA9IDA7CisgIFgoKSB7CisgIDxjYXJldD59Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9tb3ZlRmllbGRBc3NpZ25tZW50VG9Jbml0aWFsaXplci9hZnRlcjIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbW92ZUZpZWxkQXNzaWdubWVudFRvSW5pdGlhbGl6ZXIvYWZ0ZXIyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTI4MTNmYgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbW92ZUZpZWxkQXNzaWdubWVudFRvSW5pdGlhbGl6ZXIvYWZ0ZXIyLmphdmEKQEAgLTAsMCArMSwxMiBAQAorLy8gIk1vdmUgYXNzaWdubWVudCB0byBmaWVsZCBkZWNsYXJhdGlvbiIgInRydWUiCisKK2NsYXNzIFggeworICBpbnQgZiA9IDA7CisgIFgoKSB7CisgIDxjYXJldD59CisgIFgoaW50IGkpIHsKKyAgIGlmICgxPT0xKSA7CisgICBlbHNlIHsKKyAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbW92ZUZpZWxkQXNzaWdubWVudFRvSW5pdGlhbGl6ZXIvYWZ0ZXIzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L21vdmVGaWVsZEFzc2lnbm1lbnRUb0luaXRpYWxpemVyL2FmdGVyMy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNjMDMzNTMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L21vdmVGaWVsZEFzc2lnbm1lbnRUb0luaXRpYWxpemVyL2FmdGVyMy5qYXZhCkBAIC0wLDAgKzEsMTUgQEAKKy8vICJNb3ZlIGFzc2lnbm1lbnQgdG8gZmllbGQgZGVjbGFyYXRpb24iICJ0cnVlIgorCitjbGFzcyBYIHsKKyAgc3RhdGljIGludCBmID0gMDsKKyAgc3RhdGljIHsKKyAgPGNhcmV0Pn0KKyAgWChpbnQgaSkgeworICB9CisgIHZvaWQgeCgpIHsKKyAgICBpbnQgaSA9IGY7CisgIH0KKyAgdm9pZCB4MigpIHsKKyAgICBmID0gOTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbW92ZUZpZWxkQXNzaWdubWVudFRvSW5pdGlhbGl6ZXIvYWZ0ZXI0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L21vdmVGaWVsZEFzc2lnbm1lbnRUb0luaXRpYWxpemVyL2FmdGVyNC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU2MmIzYzgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L21vdmVGaWVsZEFzc2lnbm1lbnRUb0luaXRpYWxpemVyL2FmdGVyNC5qYXZhCkBAIC0wLDAgKzEsMjQgQEAKKy8vICJNb3ZlIGFzc2lnbm1lbnQgdG8gZmllbGQgZGVjbGFyYXRpb24iICJ0cnVlIgorCitjbGFzcyBYIHsKKyAgT2JqZWN0IGYgPSBuZXcgUnVubmFibGUoKSB7CisgICAgdm9pZCB4KGludCBwKSB7CisgICAgICBpbnQgZiA9IHA7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgcnVuKCkgeworCisgICAgfQorICB9OworICBYKCkgeworICAgICAgPGNhcmV0Pi8vCisgIH0KKworICB2b2lkIHgoKSB7CisgICAgaW50IGkgPSBmOworICB9CisKKyAgdm9pZCB4MigpIHsKKyAgICBmID0gOTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbW92ZUZpZWxkQXNzaWdubWVudFRvSW5pdGlhbGl6ZXIvYWZ0ZXI1LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L21vdmVGaWVsZEFzc2lnbm1lbnRUb0luaXRpYWxpemVyL2FmdGVyNS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJhZjJmZDEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L21vdmVGaWVsZEFzc2lnbm1lbnRUb0luaXRpYWxpemVyL2FmdGVyNS5qYXZhCkBAIC0wLDAgKzEsMTIgQEAKKy8vICJNb3ZlIGFzc2lnbm1lbnQgdG8gZmllbGQgZGVjbGFyYXRpb24iICJ0cnVlIgorCitjbGFzcyBYIHsKKyAgaW50IGYgPSA5OworICBYKCkgeworICB9CisgIHZvaWQgeCgpIHsKKyAgICBpbnQgaSA9IGY7CisgIH0KKyAgdm9pZCB4MigpIHsKKyAgPGNhcmV0Pn0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L21vdmVGaWVsZEFzc2lnbm1lbnRUb0luaXRpYWxpemVyL2FmdGVyQ0JyYWNrZXRzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L21vdmVGaWVsZEFzc2lnbm1lbnRUb0luaXRpYWxpemVyL2FmdGVyQ0JyYWNrZXRzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjhkM2U0YgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbW92ZUZpZWxkQXNzaWdubWVudFRvSW5pdGlhbGl6ZXIvYWZ0ZXJDQnJhY2tldHMuamF2YQpAQCAtMCwwICsxLDggQEAKKy8vICJNb3ZlIGFzc2lnbm1lbnQgdG8gZmllbGQgZGVjbGFyYXRpb24iICJ0cnVlIgorcHVibGljIGNsYXNzIEZvbyB7CisKKyAgICBwcm90ZWN0ZWQgYm9vbGVhbiBpc1N0cmluZ1tdID0gbmV3IGJvb2xlYW5bMTIzXTsKKworICAgIHB1YmxpYyBGb28oKSB7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbW92ZUZpZWxkQXNzaWdubWVudFRvSW5pdGlhbGl6ZXIvYmVmb3JlMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9tb3ZlRmllbGRBc3NpZ25tZW50VG9Jbml0aWFsaXplci9iZWZvcmUxLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjRlODkwY2MKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L21vdmVGaWVsZEFzc2lnbm1lbnRUb0luaXRpYWxpemVyL2JlZm9yZTEuamF2YQpAQCAtMCwwICsxLDggQEAKKy8vICJNb3ZlIGFzc2lnbm1lbnQgdG8gZmllbGQgZGVjbGFyYXRpb24iICJ0cnVlIgorCitjbGFzcyBYIHsKKyAgaW50IGY7CisgIFgoKSB7CisgICAgZiA9IDxjYXJldD4wOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9tb3ZlRmllbGRBc3NpZ25tZW50VG9Jbml0aWFsaXplci9iZWZvcmUyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L21vdmVGaWVsZEFzc2lnbm1lbnRUb0luaXRpYWxpemVyL2JlZm9yZTIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZTIzYTgwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9tb3ZlRmllbGRBc3NpZ25tZW50VG9Jbml0aWFsaXplci9iZWZvcmUyLmphdmEKQEAgLTAsMCArMSwxMyBAQAorLy8gIk1vdmUgYXNzaWdubWVudCB0byBmaWVsZCBkZWNsYXJhdGlvbiIgInRydWUiCisKK2NsYXNzIFggeworICBpbnQgZjsKKyAgWCgpIHsKKyAgICBmID0gPGNhcmV0PjA7CisgIH0KKyAgWChpbnQgaSkgeworICAgaWYgKDE9PTEpIGY9MDsgZWxzZSB7CisgICAgICAgZiA9ICAgMDsvL3NkcworICAgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9tb3ZlRmllbGRBc3NpZ25tZW50VG9Jbml0aWFsaXplci9iZWZvcmUzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L21vdmVGaWVsZEFzc2lnbm1lbnRUb0luaXRpYWxpemVyL2JlZm9yZTMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45Y2YyMWU2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9tb3ZlRmllbGRBc3NpZ25tZW50VG9Jbml0aWFsaXplci9iZWZvcmUzLmphdmEKQEAgLTAsMCArMSwxNiBAQAorLy8gIk1vdmUgYXNzaWdubWVudCB0byBmaWVsZCBkZWNsYXJhdGlvbiIgInRydWUiCisKK2NsYXNzIFggeworICBzdGF0aWMgaW50IGY7CisgIHN0YXRpYyB7CisgICAgZiA9IDxjYXJldD4wOworICB9CisgIFgoaW50IGkpIHsKKyAgfQorICB2b2lkIHgoKSB7CisgICAgaW50IGkgPSBmOworICB9CisgIHZvaWQgeDIoKSB7CisgICAgZiA9IDk7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L21vdmVGaWVsZEFzc2lnbm1lbnRUb0luaXRpYWxpemVyL2JlZm9yZTQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbW92ZUZpZWxkQXNzaWdubWVudFRvSW5pdGlhbGl6ZXIvYmVmb3JlNC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYwZTA1ZTEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L21vdmVGaWVsZEFzc2lnbm1lbnRUb0luaXRpYWxpemVyL2JlZm9yZTQuamF2YQpAQCAtMCwwICsxLDI1IEBACisvLyAiTW92ZSBhc3NpZ25tZW50IHRvIGZpZWxkIGRlY2xhcmF0aW9uIiAidHJ1ZSIKKworY2xhc3MgWCB7CisgIE9iamVjdCBmOworICBYKCkgeworICAgIDxjYXJldD5mID0gbmV3IFJ1bm5hYmxlKCkgeworICAgICAgdm9pZCB4KGludCBwKSB7CisgICAgICAgIGludCBmID0gcDsKKyAgICAgIH0KKworICAgICAgcHVibGljIHZvaWQgcnVuKCkgeworCisgICAgICB9CisgICAgfTsKKyAgICAvLworICB9CisKKyAgdm9pZCB4KCkgeworICAgIGludCBpID0gZjsKKyAgfQorCisgIHZvaWQgeDIoKSB7CisgICAgZiA9IDk7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L21vdmVGaWVsZEFzc2lnbm1lbnRUb0luaXRpYWxpemVyL2JlZm9yZTUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbW92ZUZpZWxkQXNzaWdubWVudFRvSW5pdGlhbGl6ZXIvYmVmb3JlNS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUzNGYyZDcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L21vdmVGaWVsZEFzc2lnbm1lbnRUb0luaXRpYWxpemVyL2JlZm9yZTUuamF2YQpAQCAtMCwwICsxLDEzIEBACisvLyAiTW92ZSBhc3NpZ25tZW50IHRvIGZpZWxkIGRlY2xhcmF0aW9uIiAidHJ1ZSIKKworY2xhc3MgWCB7CisgIGludCBmOworICBYKCkgeworICB9CisgIHZvaWQgeCgpIHsKKyAgICBpbnQgaSA9IGY7CisgIH0KKyAgdm9pZCB4MigpIHsKKyAgICA8Y2FyZXQ+ZiA9IDk7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L21vdmVGaWVsZEFzc2lnbm1lbnRUb0luaXRpYWxpemVyL2JlZm9yZUFub255bW91cy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9tb3ZlRmllbGRBc3NpZ25tZW50VG9Jbml0aWFsaXplci9iZWZvcmVBbm9ueW1vdXMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZWI5Y2EyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9tb3ZlRmllbGRBc3NpZ25tZW50VG9Jbml0aWFsaXplci9iZWZvcmVBbm9ueW1vdXMuamF2YQpAQCAtMCwwICsxLDE2IEBACisvLyAiTW92ZSBhc3NpZ25tZW50IHRvIGZpZWxkIGRlY2xhcmF0aW9uIiAiZmFsc2UiCitjbGFzcyBVVSBleHRlbmRzIFUgeworICAgIFJ1bm5hYmxlIGY7CisgICAgaW50IGYyOworCisgICAgcHVibGljIFVVKCkgeworICAgICAgIGZpbmFsIGludCBvdXRlciA9IDA7CisgICAgICAgZiA8Y2FyZXQ+PSBuZXcgUnVubmFibGUoKSB7CisgICAgICAgICAgIGludCB0OworICAgICAgICAgICBwdWJsaWMgdm9pZCBydW4oKSB7CisgICAgICAgICAgICAgIHQ9MDsKKyAgICAgICAgICAgICAgdCA9IG91dGVyOworICAgICAgICAgICB9CisgICAgICAgfTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L21vdmVGaWVsZEFzc2lnbm1lbnRUb0luaXRpYWxpemVyL2JlZm9yZUNCcmFja2V0cy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9tb3ZlRmllbGRBc3NpZ25tZW50VG9Jbml0aWFsaXplci9iZWZvcmVDQnJhY2tldHMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZWIzMDY4MQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbW92ZUZpZWxkQXNzaWdubWVudFRvSW5pdGlhbGl6ZXIvYmVmb3JlQ0JyYWNrZXRzLmphdmEKQEAgLTAsMCArMSw5IEBACisvLyAiTW92ZSBhc3NpZ25tZW50IHRvIGZpZWxkIGRlY2xhcmF0aW9uIiAidHJ1ZSIKK3B1YmxpYyBjbGFzcyBGb28geworCisgICAgcHJvdGVjdGVkIGJvb2xlYW4gaXNTdHJpbmdbXSAgICA7CisKKyAgICBwdWJsaWMgRm9vKCkgeworICAgICAgICBpc1N0PGNhcmV0PnJpbmcgPSBuZXcgYm9vbGVhblsxMjNdOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L21vdmVGaWVsZEFzc2lnbm1lbnRUb0luaXRpYWxpemVyL2JlZm9yZUluaXRpYWxpemVkLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L21vdmVGaWVsZEFzc2lnbm1lbnRUb0luaXRpYWxpemVyL2JlZm9yZUluaXRpYWxpemVkLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmQ4OWE4NgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbW92ZUZpZWxkQXNzaWdubWVudFRvSW5pdGlhbGl6ZXIvYmVmb3JlSW5pdGlhbGl6ZWQuamF2YQpAQCAtMCwwICsxLDcgQEAKKy8vICJNb3ZlIGFzc2lnbm1lbnQgdG8gZmllbGQgZGVjbGFyYXRpb24iICJmYWxzZSIKK3B1YmxpYyBjbGFzcyBYIHsKKyAgICBpbnQgaT03OworICAgIHsKKyAgICAgIGk9PGNhcmV0PjA7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9tb3ZlRmllbGRBc3NpZ25tZW50VG9Jbml0aWFsaXplci9iZWZvcmVMb2NhbC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9tb3ZlRmllbGRBc3NpZ25tZW50VG9Jbml0aWFsaXplci9iZWZvcmVMb2NhbC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZjZWUzZTUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L21vdmVGaWVsZEFzc2lnbm1lbnRUb0luaXRpYWxpemVyL2JlZm9yZUxvY2FsLmphdmEKQEAgLTAsMCArMSw4IEBACisvLyAiTW92ZSBhc3NpZ25tZW50IHRvIGZpZWxkIGRlY2xhcmF0aW9uIiAiZmFsc2UiCitwdWJsaWMgY2xhc3MgWCB7CisgICAgaW50IGk7CisgICAgWChpbnQgZnJvbSkKKyAgICB7CisgICAgICA8Y2FyZXQ+aT1mcm9tOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbW92ZUZpZWxkQXNzaWdubWVudFRvSW5pdGlhbGl6ZXIvYmVmb3JlVHdpY2VBc3NpZ25lZC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9tb3ZlRmllbGRBc3NpZ25tZW50VG9Jbml0aWFsaXplci9iZWZvcmVUd2ljZUFzc2lnbmVkLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzFhNmU5ZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbW92ZUZpZWxkQXNzaWdubWVudFRvSW5pdGlhbGl6ZXIvYmVmb3JlVHdpY2VBc3NpZ25lZC5qYXZhCkBAIC0wLDAgKzEsOCBAQAorLy8gIk1vdmUgYXNzaWdubWVudCB0byBmaWVsZCBkZWNsYXJhdGlvbiIgImZhbHNlIgorcHVibGljIGNsYXNzIFggeworICAgIGludCBpOworICAgIHsKKyAgICAgIGkgPSAwOworICAgICAgaSA9IDxjYXJldD4yOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbW92ZUZpZWxkQXNzaWdubWVudFRvSW5pdGlhbGl6ZXIvYmVmb3JlV3JvbmdQbGFjZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9tb3ZlRmllbGRBc3NpZ25tZW50VG9Jbml0aWFsaXplci9iZWZvcmVXcm9uZ1BsYWNlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmYzNTQ2MQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbW92ZUZpZWxkQXNzaWdubWVudFRvSW5pdGlhbGl6ZXIvYmVmb3JlV3JvbmdQbGFjZS5qYXZhCkBAIC0wLDAgKzEsNyBAQAorLy8gIk1vdmUgYXNzaWdubWVudCB0byBmaWVsZCBkZWNsYXJhdGlvbiIgImZhbHNlIgorcHVibGljIGNsYXNzIFggeworICAgIGludCA8Y2FyZXQ+aT03OworICAgIHsKKyAgICAgIGk9MDsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L21vdmVGaWVsZEFzc2lnbm1lbnRUb0luaXRpYWxpemVyL2JlZm9yZVdyb25nUGxhY2UyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L21vdmVGaWVsZEFzc2lnbm1lbnRUb0luaXRpYWxpemVyL2JlZm9yZVdyb25nUGxhY2UyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjZlODQ1YgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbW92ZUZpZWxkQXNzaWdubWVudFRvSW5pdGlhbGl6ZXIvYmVmb3JlV3JvbmdQbGFjZTIuamF2YQpAQCAtMCwwICsxLDExIEBACisvLyAiTW92ZSBhc3NpZ25tZW50IHRvIGZpZWxkIGRlY2xhcmF0aW9uIiAiZmFsc2UiCitwdWJsaWMgY2xhc3MgWCB7CisgICAgaW50IGk7CisgICAgdm9pZCBmKCkKKyAgICB7CisgICAgICA8Y2FyZXQ+aT0wOworICAgIH0KKyAgICB7CisgICAgICBpPTE7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9tb3ZlSW5pdGlhbGl6ZXJUb0NvbnN0cnVjdG9yL2FmdGVyMC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9tb3ZlSW5pdGlhbGl6ZXJUb0NvbnN0cnVjdG9yL2FmdGVyMC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgwNTU2ZTEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L21vdmVJbml0aWFsaXplclRvQ29uc3RydWN0b3IvYWZ0ZXIwLmphdmEKQEAgLTAsMCArMSw4IEBACisvLyAiTW92ZSBpbml0aWFsaXplciB0byBjb25zdHJ1Y3RvciIgInRydWUiCitwdWJsaWMgY2xhc3MgWCB7CisgICAgPGNhcmV0PmludCBpOworCisgICAgcHVibGljIFgoKSB7CisgICAgICAgIGkgPSA3OworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbW92ZUluaXRpYWxpemVyVG9Db25zdHJ1Y3Rvci9hZnRlcjEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbW92ZUluaXRpYWxpemVyVG9Db25zdHJ1Y3Rvci9hZnRlcjEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNjAwMjhiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9tb3ZlSW5pdGlhbGl6ZXJUb0NvbnN0cnVjdG9yL2FmdGVyMS5qYXZhCkBAIC0wLDAgKzEsMTUgQEAKKy8vICJNb3ZlIGluaXRpYWxpemVyIHRvIGNvbnN0cnVjdG9yIiAidHJ1ZSIKK3B1YmxpYyBjbGFzcyBYIHsKKyAgICBmaW5hbCBpbnQgaTxjYXJldD47CisKKyAgICBwdWJsaWMgWChTdHJpbmcgcykgeworICAgICAgICBpID0gMDsKKyAgICB9CisgICAgcHVibGljIFgoKSB7CisgICAgICAgIHRoaXMoMCk7CisgICAgfQorICAgIHB1YmxpYyBYKGludCBpKSB7CisgICAgICAgIHRoaXMuaSA9IDA7CisgICAgfQorCit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L21vdmVJbml0aWFsaXplclRvQ29uc3RydWN0b3IvYWZ0ZXIyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L21vdmVJbml0aWFsaXplclRvQ29uc3RydWN0b3IvYWZ0ZXIyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzVjZGE1MwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbW92ZUluaXRpYWxpemVyVG9Db25zdHJ1Y3Rvci9hZnRlcjIuamF2YQpAQCAtMCwwICsxLDE3IEBACisvLyAiTW92ZSBpbml0aWFsaXplciB0byBjb25zdHJ1Y3RvciIgInRydWUiCitwdWJsaWMgY2xhc3MgWCB7CisgICAgZmluYWwgaW50IHM9MDsKKyAgICA8Y2FyZXQ+ZmluYWwgaW50IGk7CisKKyAgICBwdWJsaWMgWChTdHJpbmcgcykgeworICAgICAgICBzdXBlcigpOworICAgICAgICBpID0gdGhpcy5zOworICAgIH0KKyAgICBwdWJsaWMgWCgpIHsKKyAgICAgICAgdGhpcygwKTsKKyAgICB9CisgICAgcHVibGljIFgoaW50IGkpIHsKKyAgICAgICAgdGhpcy5pID0gczsKKyAgICB9CisKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbW92ZUluaXRpYWxpemVyVG9Db25zdHJ1Y3Rvci9hZnRlcjMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbW92ZUluaXRpYWxpemVyVG9Db25zdHJ1Y3Rvci9hZnRlcjMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NmI5M2NmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9tb3ZlSW5pdGlhbGl6ZXJUb0NvbnN0cnVjdG9yL2FmdGVyMy5qYXZhCkBAIC0wLDAgKzEsMjIgQEAKKy8vICJNb3ZlIGluaXRpYWxpemVyIHRvIGNvbnN0cnVjdG9yIiAidHJ1ZSIKK3B1YmxpYyBjbGFzcyBYIHsKKyAgICA8Y2FyZXQ+ZmluYWwgaW50IGZpOworCisgICAgcHVibGljIFgoU3RyaW5nIHMpIHsKKyAgICAgICAgc3VwZXIoKTsKKyAgICAgICAgZmkgPSAwOworICAgICAgICBpbnQgayA9IGZpOworICAgICAgICBrKys7CisgICAgfQorICAgIHB1YmxpYyBYKCkgeworICAgICAgICB0aGlzKDApOworICAgIH0KKyAgICBwdWJsaWMgWChpbnQgaSkgeworICAgICAgICAvLyBmCisgICAgICAgIGludCBnID0gMDsKKyAgICAgICAgZmkgPSAwOworICAgICAgICBpbnQgZiA9IGZpOworICAgICAgICBnICs9IGY7CisgICAgfQorCit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L21vdmVJbml0aWFsaXplclRvQ29uc3RydWN0b3IvYWZ0ZXJBcnJheS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9tb3ZlSW5pdGlhbGl6ZXJUb0NvbnN0cnVjdG9yL2FmdGVyQXJyYXkuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44OTliZjE4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9tb3ZlSW5pdGlhbGl6ZXJUb0NvbnN0cnVjdG9yL2FmdGVyQXJyYXkuamF2YQpAQCAtMCwwICsxLDggQEAKKy8vICJNb3ZlIGluaXRpYWxpemVyIHRvIGNvbnN0cnVjdG9yIiAidHJ1ZSIKK3B1YmxpYyBjbGFzcyBYIHsKKyAgICA8Y2FyZXQ+U3RyaW5nW10gaTsKKworICAgIHB1YmxpYyBYKCkgeworICAgICAgICBpID0gbmV3IFN0cmluZ1tdeyJzcyIsICJ4eCJ9OworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbW92ZUluaXRpYWxpemVyVG9Db25zdHJ1Y3Rvci9hZnRlck5vQm9keS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9tb3ZlSW5pdGlhbGl6ZXJUb0NvbnN0cnVjdG9yL2FmdGVyTm9Cb2R5LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTg1YTBiMgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbW92ZUluaXRpYWxpemVyVG9Db25zdHJ1Y3Rvci9hZnRlck5vQm9keS5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKKy8vICJNb3ZlIGluaXRpYWxpemVyIHRvIGNvbnN0cnVjdG9yIiAidHJ1ZSIKK3B1YmxpYyBjbGFzcyBYIHsKKyAgICA8Y2FyZXQ+ZmluYWwgaW50IGZpOworCisgICAgcHVibGljIFgoU3RyaW5nIHMpIHsKKyAgICAgICAgLy9UbyBjaGFuZ2UgYm9keSBvZiBjcmVhdGVkIG1ldGhvZHMgdXNlIEZpbGUgfCBTZXR0aW5ncyB8IEZpbGUgVGVtcGxhdGVzLgorICAgICAgICBmaSA9IDA7CisgICAgfQorCit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L21vdmVJbml0aWFsaXplclRvQ29uc3RydWN0b3IvYWZ0ZXJQYXJhbWV0ZXJzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L21vdmVJbml0aWFsaXplclRvQ29uc3RydWN0b3IvYWZ0ZXJQYXJhbWV0ZXJzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWQ5M2M3ZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbW92ZUluaXRpYWxpemVyVG9Db25zdHJ1Y3Rvci9hZnRlclBhcmFtZXRlcnMuamF2YQpAQCAtMCwwICsxLDE3IEBACisvLyAiTW92ZSBpbml0aWFsaXplciB0byBjb25zdHJ1Y3RvciIgInRydWUiCitpbXBvcnQgamF2YS5hd3QuZXZlbnQuQWN0aW9uRXZlbnQ7CitpbXBvcnQgamF2YS5hd3QuZXZlbnQuQWN0aW9uTGlzdGVuZXI7CitwdWJsaWMgY2xhc3MgWFhYIHsKKyAgICBwdWJsaWMgZmluYWwgQWN0aW9uTGlzdGVuZXIgbGlzdGVuZXI8Y2FyZXQ+OworCisgICAgcHVibGljIFhYWCgpIHsKKyAgICAgICAgbGlzdGVuZXIgPSBuZXcgQWN0aW9uTGlzdGVuZXIoKSB7CisgICAgICAgICAgICAgICAgcHVibGljIHZvaWQgYWN0aW9uUGVyZm9ybWVkKEFjdGlvbkV2ZW50IGUpIHsKKyAgICAgICAgICAgICAgICAgICAgWFhYLmRvaXQoZSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfTsKKyAgICB9CisKKyAgICBwcml2YXRlIHN0YXRpYyB2b2lkIGRvaXQoQWN0aW9uRXZlbnQgZSkgeworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbW92ZUluaXRpYWxpemVyVG9Db25zdHJ1Y3Rvci9iZWZvcmUwLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L21vdmVJbml0aWFsaXplclRvQ29uc3RydWN0b3IvYmVmb3JlMC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgyNTc0MTIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L21vdmVJbml0aWFsaXplclRvQ29uc3RydWN0b3IvYmVmb3JlMC5qYXZhCkBAIC0wLDAgKzEsNCBAQAorLy8gIk1vdmUgaW5pdGlhbGl6ZXIgdG8gY29uc3RydWN0b3IiICJ0cnVlIgorcHVibGljIGNsYXNzIFggeworICAgIDxjYXJldD5pbnQgaT03OworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9tb3ZlSW5pdGlhbGl6ZXJUb0NvbnN0cnVjdG9yL2JlZm9yZTEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbW92ZUluaXRpYWxpemVyVG9Db25zdHJ1Y3Rvci9iZWZvcmUxLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmI4MGM4MAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbW92ZUluaXRpYWxpemVyVG9Db25zdHJ1Y3Rvci9iZWZvcmUxLmphdmEKQEAgLTAsMCArMSwxMyBAQAorLy8gIk1vdmUgaW5pdGlhbGl6ZXIgdG8gY29uc3RydWN0b3IiICJ0cnVlIgorcHVibGljIGNsYXNzIFggeworICAgIGZpbmFsIGludCBpID0gMDxjYXJldD47CisKKyAgICBwdWJsaWMgWChTdHJpbmcgcykgeworICAgIH0KKyAgICBwdWJsaWMgWCgpIHsKKyAgICAgICAgdGhpcygwKTsKKyAgICB9CisgICAgcHVibGljIFgoaW50IGkpIHsKKyAgICB9CisKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbW92ZUluaXRpYWxpemVyVG9Db25zdHJ1Y3Rvci9iZWZvcmUyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L21vdmVJbml0aWFsaXplclRvQ29uc3RydWN0b3IvYmVmb3JlMi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA1Njg1OGYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L21vdmVJbml0aWFsaXplclRvQ29uc3RydWN0b3IvYmVmb3JlMi5qYXZhCkBAIC0wLDAgKzEsMTUgQEAKKy8vICJNb3ZlIGluaXRpYWxpemVyIHRvIGNvbnN0cnVjdG9yIiAidHJ1ZSIKK3B1YmxpYyBjbGFzcyBYIHsKKyAgICBmaW5hbCBpbnQgcz0wOworICAgIDxjYXJldD5maW5hbCBpbnQgaT1zOworCisgICAgcHVibGljIFgoU3RyaW5nIHMpIHsKKyAgICAgICAgc3VwZXIoKTsKKyAgICB9CisgICAgcHVibGljIFgoKSB7CisgICAgICAgIHRoaXMoMCk7CisgICAgfQorICAgIHB1YmxpYyBYKGludCBpKSB7CisgICAgfQorCit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L21vdmVJbml0aWFsaXplclRvQ29uc3RydWN0b3IvYmVmb3JlMy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9tb3ZlSW5pdGlhbGl6ZXJUb0NvbnN0cnVjdG9yL2JlZm9yZTMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40Mzk4NDYxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9tb3ZlSW5pdGlhbGl6ZXJUb0NvbnN0cnVjdG9yL2JlZm9yZTMuamF2YQpAQCAtMCwwICsxLDIwIEBACisvLyAiTW92ZSBpbml0aWFsaXplciB0byBjb25zdHJ1Y3RvciIgInRydWUiCitwdWJsaWMgY2xhc3MgWCB7CisgICAgPGNhcmV0PmZpbmFsIGludCBmaT0wOworCisgICAgcHVibGljIFgoU3RyaW5nIHMpIHsKKyAgICAgICAgc3VwZXIoKTsKKyAgICAgICAgaW50IGsgPSBmaTsKKyAgICAgICAgaysrOworICAgIH0KKyAgICBwdWJsaWMgWCgpIHsKKyAgICAgICAgdGhpcygwKTsKKyAgICB9CisgICAgcHVibGljIFgoaW50IGkpIHsKKyAgICAgICAgLy8gZgorICAgICAgICBpbnQgZyA9IDA7CisgICAgICAgIGludCBmID0gZmk7CisgICAgICAgIGcgKz0gZjsKKyAgICB9CisKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbW92ZUluaXRpYWxpemVyVG9Db25zdHJ1Y3Rvci9iZWZvcmVBbm9uLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L21vdmVJbml0aWFsaXplclRvQ29uc3RydWN0b3IvYmVmb3JlQW5vbi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg1OGQ4NjQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L21vdmVJbml0aWFsaXplclRvQ29uc3RydWN0b3IvYmVmb3JlQW5vbi5qYXZhCkBAIC0wLDAgKzEsMTEgQEAKKy8vICJNb3ZlIGluaXRpYWxpemVyIHRvIGNvbnN0cnVjdG9yIiAiZmFsc2UiCitwdWJsaWMgY2xhc3MgWCB7CisgIHsKKworbmV3IFJ1bm5hYmxlKCkgeworIGludCA8Y2FyZXQ+aT0wOworIHB1YmxpYyB2b2lkIHJ1bigpIHsKKyB9Cit9LnJ1bigpOworICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L21vdmVJbml0aWFsaXplclRvQ29uc3RydWN0b3IvYmVmb3JlQXJyYXkuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbW92ZUluaXRpYWxpemVyVG9Db25zdHJ1Y3Rvci9iZWZvcmVBcnJheS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdhMTY3ZDkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L21vdmVJbml0aWFsaXplclRvQ29uc3RydWN0b3IvYmVmb3JlQXJyYXkuamF2YQpAQCAtMCwwICsxLDQgQEAKKy8vICJNb3ZlIGluaXRpYWxpemVyIHRvIGNvbnN0cnVjdG9yIiAidHJ1ZSIKK3B1YmxpYyBjbGFzcyBYIHsKKyAgICA8Y2FyZXQ+U3RyaW5nW10gaT17InNzIiwgInh4In07Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L21vdmVJbml0aWFsaXplclRvQ29uc3RydWN0b3IvYmVmb3JlSW50ZXJmYWNlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L21vdmVJbml0aWFsaXplclRvQ29uc3RydWN0b3IvYmVmb3JlSW50ZXJmYWNlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjQyNmViNQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbW92ZUluaXRpYWxpemVyVG9Db25zdHJ1Y3Rvci9iZWZvcmVJbnRlcmZhY2UuamF2YQpAQCAtMCwwICsxLDQgQEAKKy8vICJNb3ZlIGluaXRpYWxpemVyIHRvIGNvbnN0cnVjdG9yIiAiZmFsc2UiCitwdWJsaWMgaW50ZXJmYWNlIFggeworICAgIGludCA8Y2FyZXQ+aT0wOworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9tb3ZlSW5pdGlhbGl6ZXJUb0NvbnN0cnVjdG9yL2JlZm9yZUphdmFkb2MuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbW92ZUluaXRpYWxpemVyVG9Db25zdHJ1Y3Rvci9iZWZvcmVKYXZhZG9jLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGIyMDFjYQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbW92ZUluaXRpYWxpemVyVG9Db25zdHJ1Y3Rvci9iZWZvcmVKYXZhZG9jLmphdmEKQEAgLTAsMCArMSw1IEBACisvLyAiTW92ZSBpbml0aWFsaXplciB0byBjb25zdHJ1Y3RvciIgImZhbHNlIgorcHVibGljIGNsYXNzIFggeworICAgIC8qKiA8Y2FyZXQ+ICovCisgICAgaW50IGk9NzsKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbW92ZUluaXRpYWxpemVyVG9Db25zdHJ1Y3Rvci9iZWZvcmVOb0JvZHkuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbW92ZUluaXRpYWxpemVyVG9Db25zdHJ1Y3Rvci9iZWZvcmVOb0JvZHkuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMmZjMmFkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9tb3ZlSW5pdGlhbGl6ZXJUb0NvbnN0cnVjdG9yL2JlZm9yZU5vQm9keS5qYXZhCkBAIC0wLDAgKzEsNyBAQAorLy8gIk1vdmUgaW5pdGlhbGl6ZXIgdG8gY29uc3RydWN0b3IiICJ0cnVlIgorcHVibGljIGNsYXNzIFggeworICAgIDxjYXJldD5maW5hbCBpbnQgZmk9MDsKKworICAgIHB1YmxpYyBYKFN0cmluZyBzKTsKKworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9tb3ZlSW5pdGlhbGl6ZXJUb0NvbnN0cnVjdG9yL2JlZm9yZVBhcmFtZXRlcnMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbW92ZUluaXRpYWxpemVyVG9Db25zdHJ1Y3Rvci9iZWZvcmVQYXJhbWV0ZXJzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzlhNTJkYQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbW92ZUluaXRpYWxpemVyVG9Db25zdHJ1Y3Rvci9iZWZvcmVQYXJhbWV0ZXJzLmphdmEKQEAgLTAsMCArMSwxNiBAQAorLy8gIk1vdmUgaW5pdGlhbGl6ZXIgdG8gY29uc3RydWN0b3IiICJ0cnVlIgoraW1wb3J0IGphdmEuYXd0LmV2ZW50LkFjdGlvbkV2ZW50OworaW1wb3J0IGphdmEuYXd0LmV2ZW50LkFjdGlvbkxpc3RlbmVyOworcHVibGljIGNsYXNzIFhYWCB7CisgICAgcHVibGljIGZpbmFsIEFjdGlvbkxpc3RlbmVyIGxpc3RlbmVyIDxjYXJldD49IG5ldyBBY3Rpb25MaXN0ZW5lcigpIHsKKyAgICAgICAgICAgIHB1YmxpYyB2b2lkIGFjdGlvblBlcmZvcm1lZChBY3Rpb25FdmVudCBlKSB7CisgICAgICAgICAgICAgICAgWFhYLmRvaXQoZSk7CisgICAgICAgICAgICB9CisgICAgICAgIH07CisKKyAgICBwdWJsaWMgWFhYKCkgeworICAgIH0KKworICAgIHByaXZhdGUgc3RhdGljIHZvaWQgZG9pdChBY3Rpb25FdmVudCBlKSB7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9tb3ZlSW5pdGlhbGl6ZXJUb0NvbnN0cnVjdG9yL2JlZm9yZVN0YXRpYy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9tb3ZlSW5pdGlhbGl6ZXJUb0NvbnN0cnVjdG9yL2JlZm9yZVN0YXRpYy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc0NGIzMWIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L21vdmVJbml0aWFsaXplclRvQ29uc3RydWN0b3IvYmVmb3JlU3RhdGljLmphdmEKQEAgLTAsMCArMSw3IEBACisvLyAiTW92ZSBpbml0aWFsaXplciB0byBjb25zdHJ1Y3RvciIgImZhbHNlIgorcHVibGljIGNsYXNzIFggeworICAgIGZpbmFsIHN0YXRpYyBpbnQgPGNhcmV0Pmk9NzsKKworICAgIFgoKSB7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9tb3ZlSW5pdGlhbGl6ZXJUb0NvbnN0cnVjdG9yL2JlZm9yZVdyb25nUGxhY2UuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbW92ZUluaXRpYWxpemVyVG9Db25zdHJ1Y3Rvci9iZWZvcmVXcm9uZ1BsYWNlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2YyNmM2OQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbW92ZUluaXRpYWxpemVyVG9Db25zdHJ1Y3Rvci9iZWZvcmVXcm9uZ1BsYWNlLmphdmEKQEAgLTAsMCArMSw0IEBACisvLyAiTW92ZSBpbml0aWFsaXplciB0byBjb25zdHJ1Y3RvciIgImZhbHNlIgorcHVibGljIGNsYXNzIDxjYXJldD5YIHsKKyAgICBpbnQgaT03OworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9tb3ZlSW5pdGlhbGl6ZXJUb1NldFVwL2FmdGVySlVuaXQzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L21vdmVJbml0aWFsaXplclRvU2V0VXAvYWZ0ZXJKVW5pdDMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNDU2OTE2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9tb3ZlSW5pdGlhbGl6ZXJUb1NldFVwL2FmdGVySlVuaXQzLmphdmEKQEAgLTAsMCArMSwxNSBAQAorLy8gIk1vdmUgaW5pdGlhbGl6ZXIgdG8gc2V0VXAgbWV0aG9kIiAidHJ1ZSIKK3BhY2thZ2UganVuaXQuZnJhbWV3b3JrOworCitwdWJsaWMgY2xhc3MgWCBleHRlbmRzIFRlc3RDYXNlIHsKKyAgaW50IGk7CisKKyAgICBwdWJsaWMgdm9pZCBzZXRVcCgpIHRocm93cyBFeGNlcHRpb24geworICAgICAgICBzdXBlci5zZXRVcCgpOworICAgICAgICBpID0gNzsKKyAgICB9Cit9CisKKy8vSEFDSzogbWFraW5nIHRlc3QgcG9zc2libGUgd2l0aG91dCBhdHRhY2hpbmcgalVuaXQKK3B1YmxpYyBhYnN0cmFjdCBjbGFzcyBUZXN0Q2FzZSB7Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L21vdmVJbml0aWFsaXplclRvU2V0VXAvYWZ0ZXJUZXN0TkcuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbW92ZUluaXRpYWxpemVyVG9TZXRVcC9hZnRlclRlc3RORy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdiZmJmNTU5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9tb3ZlSW5pdGlhbGl6ZXJUb1NldFVwL2FmdGVyVGVzdE5HLmphdmEKQEAgLTAsMCArMSwxMyBAQAorLy8gIk1vdmUgaW5pdGlhbGl6ZXIgdG8gc2V0VXAgbWV0aG9kIiAidHJ1ZSIKK3B1YmxpYyBjbGFzcyBYIHsKKyAgPGNhcmV0PmludCBpOworCisgICAgQG9yZy50ZXN0bmcuYW5ub3RhdGlvbnMuQmVmb3JlTWV0aG9kCisgICAgcHVibGljIHZvaWQgc2V0VXAoKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgICAgaSA9IDc7CisgICAgfQorCisgICAgQG9yZy50ZXN0bmcuYW5ub3RhdGlvbnMuVGVzdAorICBwdWJsaWMgdm9pZCB0ZXN0KCkgeworICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L21vdmVJbml0aWFsaXplclRvU2V0VXAvYWZ0ZXJqVW5pdDQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbW92ZUluaXRpYWxpemVyVG9TZXRVcC9hZnRlcmpVbml0NC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE1Mjg4ZmYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L21vdmVJbml0aWFsaXplclRvU2V0VXAvYWZ0ZXJqVW5pdDQuamF2YQpAQCAtMCwwICsxLDEzIEBACisvLyAiTW92ZSBpbml0aWFsaXplciB0byBzZXRVcCBtZXRob2QiICJ0cnVlIgorcHVibGljIGNsYXNzIFggeworICA8Y2FyZXQ+aW50IGk7CisKKyAgICBAb3JnLmp1bml0LkJlZm9yZQorICAgIHB1YmxpYyB2b2lkIHNldFVwKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgICAgIGkgPSA3OworICAgIH0KKworICAgIEBvcmcuanVuaXQuVGVzdAorICBwdWJsaWMgdm9pZCB0ZXN0KCkgeworICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L21vdmVJbml0aWFsaXplclRvU2V0VXAvYmVmb3JlSlVuaXQzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L21vdmVJbml0aWFsaXplclRvU2V0VXAvYmVmb3JlSlVuaXQzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTMxNTk4ZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbW92ZUluaXRpYWxpemVyVG9TZXRVcC9iZWZvcmVKVW5pdDMuamF2YQpAQCAtMCwwICsxLDEwIEBACisvLyAiTW92ZSBpbml0aWFsaXplciB0byBzZXRVcCBtZXRob2QiICJ0cnVlIgorcGFja2FnZSBqdW5pdC5mcmFtZXdvcms7CisKK3B1YmxpYyBjbGFzcyBYIGV4dGVuZHMgVGVzdENhc2UgeworICA8Y2FyZXQ+aW50IGkgPSA3OworfQorCisvL0hBQ0s6IG1ha2luZyB0ZXN0IHBvc3NpYmxlIHdpdGhvdXQgYXR0YWNoaW5nIGpVbml0CitwdWJsaWMgYWJzdHJhY3QgY2xhc3MgVGVzdENhc2UgeworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9tb3ZlSW5pdGlhbGl6ZXJUb1NldFVwL2JlZm9yZU5vdFRlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbW92ZUluaXRpYWxpemVyVG9TZXRVcC9iZWZvcmVOb3RUZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2E3NjA5OAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbW92ZUluaXRpYWxpemVyVG9TZXRVcC9iZWZvcmVOb3RUZXN0LmphdmEKQEAgLTAsMCArMSw0IEBACisvLyAiTW92ZSBpbml0aWFsaXplciB0byBzZXRVcCBtZXRob2QiICJmYWxzZSIKK3B1YmxpYyBjbGFzcyBYIHsKKyAgPGNhcmV0PmludCBpID0gNzsKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbW92ZUluaXRpYWxpemVyVG9TZXRVcC9iZWZvcmVUZXN0TkcuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbW92ZUluaXRpYWxpemVyVG9TZXRVcC9iZWZvcmVUZXN0TkcuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMTAyMjhiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9tb3ZlSW5pdGlhbGl6ZXJUb1NldFVwL2JlZm9yZVRlc3RORy5qYXZhCkBAIC0wLDAgKzEsOCBAQAorLy8gIk1vdmUgaW5pdGlhbGl6ZXIgdG8gc2V0VXAgbWV0aG9kIiAidHJ1ZSIKK3B1YmxpYyBjbGFzcyBYIHsKKyAgPGNhcmV0PmludCBpID0gNzsKKworICBAb3JnLnRlc3RuZy5hbm5vdGF0aW9ucy5UZXN0CisgIHB1YmxpYyB2b2lkIHRlc3QoKSB7CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbW92ZUluaXRpYWxpemVyVG9TZXRVcC9iZWZvcmVqVW5pdDQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbW92ZUluaXRpYWxpemVyVG9TZXRVcC9iZWZvcmVqVW5pdDQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NWNhNmE3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9tb3ZlSW5pdGlhbGl6ZXJUb1NldFVwL2JlZm9yZWpVbml0NC5qYXZhCkBAIC0wLDAgKzEsOCBAQAorLy8gIk1vdmUgaW5pdGlhbGl6ZXIgdG8gc2V0VXAgbWV0aG9kIiAidHJ1ZSIKK3B1YmxpYyBjbGFzcyBYIHsKKyAgPGNhcmV0PmludCBpID0gNzsKKworICBAb3JnLmp1bml0LlRlc3QKKyAgcHVibGljIHZvaWQgdGVzdCgpIHsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9tdXN0QmVGaW5hbC9hZnRlcjEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbXVzdEJlRmluYWwvYWZ0ZXIxLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDA3NzI2YwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbXVzdEJlRmluYWwvYWZ0ZXIxLmphdmEKQEAgLTAsMCArMSwxNCBAQAorLy8gIk1ha2UgJ2knIGZpbmFsIiAidHJ1ZSIKK2ltcG9ydCBqYXZhLmlvLio7CisKK2NsYXNzIGEgeworIHZvaWQgZigpIHsKKyAgICAgZmluYWwgaW50IGkgPSAwOworICAgICBuZXcgUnVubmFibGUoKSB7CisgICAgICAgcHVibGljIHZvaWQgcnVuKCkgeworICAgICAgICAgaW50IGlpID0gPGNhcmV0Pmk7CisgICAgICAgfQorICAgICB9OworIH0KK30KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9tdXN0QmVGaW5hbC9hZnRlcjEwLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L211c3RCZUZpbmFsL2FmdGVyMTAuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMmQ5M2Q1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9tdXN0QmVGaW5hbC9hZnRlcjEwLmphdmEKQEAgLTAsMCArMSwxOCBAQAorLy8gIkNvcHkgJ2EnIHRvIHRlbXAgZmluYWwgdmFyaWFibGUiICJ0cnVlIgorcHVibGljIGNsYXNzIERvdWJsZVRyb3VibGUgeworICAgIHB1YmxpYyB2b2lkIHRlc3QoKSB7CisgICAgICAgIGludCBhID0gMTsKKyAgICAgICAgYSA9IDI7CisgICAgICAgIGZpbmFsIGludCBmaW5hbEEgPSBhOworICAgICAgICBjbGFzcyBzIHsKKyAgICAgICAgICBwdWJsaWMgdm9pZCBydW4oKSB7CisgICAgICAgICAgICBuZXcgUnVubmFibGUoKSB7CisgICAgICAgICAgICAgIHB1YmxpYyB2b2lkIHJ1bigpIHsKKyAgICAgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oPGNhcmV0PmZpbmFsQSk7CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0ucnVuKCk7CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbXVzdEJlRmluYWwvYWZ0ZXIyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L211c3RCZUZpbmFsL2FmdGVyMi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkwYmFlZWMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L211c3RCZUZpbmFsL2FmdGVyMi5qYXZhCkBAIC0wLDAgKzEsMTYgQEAKKy8vICJDb3B5ICdpJyB0byB0ZW1wIGZpbmFsIHZhcmlhYmxlIiAidHJ1ZSIKK2ltcG9ydCBqYXZhLmlvLio7CisKK2NsYXNzIGEgeworIHZvaWQgZigpIHsKKyAgICAgaW50IGkgPSAwOworICAgICBmaW5hbCBpbnQgZmluYWxJID0gaTsKKyAgICAgbmV3IFJ1bm5hYmxlKCkgeworICAgICAgIHB1YmxpYyB2b2lkIHJ1bigpIHsKKyAgICAgICAgIGludCBpaSA9IDxjYXJldD5maW5hbEk7CisgICAgICAgfQorICAgICB9OworICAgICBpKys7CisgfQorfQorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L211c3RCZUZpbmFsL2FmdGVyMy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9tdXN0QmVGaW5hbC9hZnRlcjMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNzBmOWY0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9tdXN0QmVGaW5hbC9hZnRlcjMuamF2YQpAQCAtMCwwICsxLDE0IEBACisvLyAiVHJhbnNmb3JtICdpJyBpbnRvIGZpbmFsIG9uZSBlbGVtZW50IGFycmF5IiAidHJ1ZSIKK2ltcG9ydCBqYXZhLmlvLio7CisKK2NsYXNzIGEgeworIHZvaWQgZigpIHsKKyAgICAgZmluYWwgaW50W10gaSA9IHswfTsKKyAgICAgbmV3IFJ1bm5hYmxlKCkgeworICAgICAgIHB1YmxpYyB2b2lkIHJ1bigpIHsKKyAgICAgICAgICA8Y2FyZXQ+aVswXSA9IDA7CisgICAgICAgfQorICAgICB9OworIH0KK30KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9tdXN0QmVGaW5hbC9hZnRlcjUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbXVzdEJlRmluYWwvYWZ0ZXI1LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDk5NmViZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbXVzdEJlRmluYWwvYWZ0ZXI1LmphdmEKQEAgLTAsMCArMSwxOSBAQAorLy8gIlRyYW5zZm9ybSAnaScgaW50byBmaW5hbCBvbmUgZWxlbWVudCBhcnJheSIgInRydWUiCitpbXBvcnQgamF2YS5pby4qOworCitjbGFzcyBhYSB7Cisgdm9pZCBmKCkgeworICAgICBmaW5hbCBpbnRbXSBpID0gezl9OworICAgICBuZXcgUnVubmFibGUoKSB7CisgICAgICAgcHVibGljIHZvaWQgcnVuKCkgeworICAgICAgICAgaW50IHAgPSBpWzBdOworICAgICAgIH0KKyAgICAgfTsKKyAgICAgbmV3IFJ1bm5hYmxlKCkgeworICAgICAgIHB1YmxpYyB2b2lkIHJ1bigpIHsKKyAgICAgICAgIGlbMF0gPSAwOworICAgICAgIH0KKyAgICAgfTsKKyB9Cit9CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbXVzdEJlRmluYWwvYWZ0ZXI2LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L211c3RCZUZpbmFsL2FmdGVyNi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVmN2Q2OTQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L211c3RCZUZpbmFsL2FmdGVyNi5qYXZhCkBAIC0wLDAgKzEsMjQgQEAKKy8vICJUcmFuc2Zvcm0gJ2knIGludG8gZmluYWwgb25lIGVsZW1lbnQgYXJyYXkiICJ0cnVlIgoraW1wb3J0IGphdmEuaW8uKjsKKworY2xhc3MgYWEgeworIHZvaWQgZigpIHsKKyAgICAgZmluYWwgaW50W10gaSA9IHs0fTsKKyAgICAgUnVubmFibGUgcnVubmFibGUgPSBuZXcgUnVubmFibGUoKSB7CisgICAgICAgICBwdWJsaWMgdm9pZCBydW4oKSB7CisgICAgICAgICAgICAgbmV3IFJ1bm5hYmxlKCkgeworICAgICAgICAgICAgICAgICBwdWJsaWMgdm9pZCBydW4oKSB7CisgICAgICAgICAgICAgICAgICAgICBpbnQgbz0gaVswXTsKKyAgICAgICAgICAgICAgICAgICAgIGlbMF0gPW87CisgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICB9OworICAgICAgICAgICAgIG5ldyBSdW5uYWJsZSgpIHsKKyAgICAgICAgICAgICAgICAgcHVibGljIHZvaWQgcnVuKCkgeworICAgICAgICAgICAgICAgICAgICAgaW50IG89PGNhcmV0PiBpWzBdOworICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgfTsKKyAgICAgICAgIH0KKyAgICAgfTsKKyB9Cit9CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbXVzdEJlRmluYWwvYWZ0ZXI3LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L211c3RCZUZpbmFsL2FmdGVyNy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZmODliYjAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L211c3RCZUZpbmFsL2FmdGVyNy5qYXZhCkBAIC0wLDAgKzEsMTUgQEAKKy8vICJUcmFuc2Zvcm0gJ2knIGludG8gZmluYWwgb25lIGVsZW1lbnQgYXJyYXkiICJ0cnVlIgoraW1wb3J0IGphdmEuaW8uKjsKKworY2xhc3MgYWEgeworIHZvaWQgZigpIHsKKyAgICAgZmluYWwgaW50W10gaSA9IG5ldyBpbnRbMV07CisgICAgIFJ1bm5hYmxlIHJ1bm5hYmxlID0gbmV3IFJ1bm5hYmxlKCkgeworICAgICAgICAgcHVibGljIHZvaWQgcnVuKCkgeworICAgICAgICAgICAgIDxjYXJldD5pWzBdID0gNTsKKyAgICAgICAgIH0KKyAgICAgfTsKKyAgICBpbnQgZiA9IGlbMF07CisgfQorfQorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L211c3RCZUZpbmFsL2FmdGVyOC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9tdXN0QmVGaW5hbC9hZnRlcjguamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42Zjg5YmIwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9tdXN0QmVGaW5hbC9hZnRlcjguamF2YQpAQCAtMCwwICsxLDE1IEBACisvLyAiVHJhbnNmb3JtICdpJyBpbnRvIGZpbmFsIG9uZSBlbGVtZW50IGFycmF5IiAidHJ1ZSIKK2ltcG9ydCBqYXZhLmlvLio7CisKK2NsYXNzIGFhIHsKKyB2b2lkIGYoKSB7CisgICAgIGZpbmFsIGludFtdIGkgPSBuZXcgaW50WzFdOworICAgICBSdW5uYWJsZSBydW5uYWJsZSA9IG5ldyBSdW5uYWJsZSgpIHsKKyAgICAgICAgIHB1YmxpYyB2b2lkIHJ1bigpIHsKKyAgICAgICAgICAgICA8Y2FyZXQ+aVswXSA9IDU7CisgICAgICAgICB9CisgICAgIH07CisgICAgaW50IGYgPSBpWzBdOworIH0KK30KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9tdXN0QmVGaW5hbC9hZnRlckFsbFZhcnMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbXVzdEJlRmluYWwvYWZ0ZXJBbGxWYXJzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2QwNDY1OQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbXVzdEJlRmluYWwvYWZ0ZXJBbGxWYXJzLmphdmEKQEAgLTAsMCArMSwxNSBAQAorLy8gIk1ha2UgdmFyaWFibGVzIGZpbmFsIiAidHJ1ZSIKK2ltcG9ydCBqYXZhLmlvLio7CisKK2NsYXNzIGEgeworIHZvaWQgZigpIHsKKyAgICAgZmluYWwgaW50IGkgPSAwOworICAgICBmaW5hbCBpbnQgaiA9IDA7CisgICAgIG5ldyBSdW5uYWJsZSgpIHsKKyAgICAgICBwdWJsaWMgdm9pZCBydW4oKSB7CisgICAgICAgICBpbnQgaWkgPSA8Y2FyZXQ+aSArIGo7CisgICAgICAgfQorICAgICB9OworIH0KK30KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9tdXN0QmVGaW5hbC9hZnRlckNvcHlMYW1iZGFQYXJhbS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9tdXN0QmVGaW5hbC9hZnRlckNvcHlMYW1iZGFQYXJhbS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI4Zjg4OTUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L211c3RCZUZpbmFsL2FmdGVyQ29weUxhbWJkYVBhcmFtLmphdmEKQEAgLTAsMCArMSwxNyBAQAorLy8gIkNvcHkgJ28nIHRvIHRlbXAgZmluYWwgdmFyaWFibGUiICJ0cnVlIgorY2xhc3MgVGVzdDEgeworICAgIHZvaWQgZm9vKCl7fQorICAgIHsKKyAgICAgICAgQ29tcGFyYWJsZTxTdHJpbmc+IGEgPSBvLT57CisgICAgICAgICAgICBvID0gIiI7CisgICAgICAgICAgICBmaW5hbCBTdHJpbmcgZmluYWxPID0gbzsKKyAgICAgICAgICAgIG5ldyBSdW5uYWJsZSgpIHsKKyAgICAgICAgICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgICAgICAgICBwdWJsaWMgdm9pZCBydW4oKSB7CisgICAgICAgICAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihmaW5hbE8pOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0ucnVuKCk7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9tdXN0QmVGaW5hbC9hZnRlck9uZVZhci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9tdXN0QmVGaW5hbC9hZnRlck9uZVZhci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU0ZTk1OWMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L211c3RCZUZpbmFsL2FmdGVyT25lVmFyLmphdmEKQEAgLTAsMCArMSwxNSBAQAorLy8gIk1ha2UgJ2knIGZpbmFsIiAidHJ1ZSIKK2ltcG9ydCBqYXZhLmlvLio7CisKK2NsYXNzIGEgeworIHZvaWQgZigpIHsKKyAgICAgZmluYWwgaW50IGkgPSAwOworICAgICBpbnQgaiA9IDA7CisgICAgIG5ldyBSdW5uYWJsZSgpIHsKKyAgICAgICBwdWJsaWMgdm9pZCBydW4oKSB7CisgICAgICAgICBpbnQgaWkgPSA8Y2FyZXQ+aTsKKyAgICAgICB9CisgICAgIH07CisgfQorfQorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L211c3RCZUZpbmFsL2JlZm9yZTEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbXVzdEJlRmluYWwvYmVmb3JlMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRkMjMyMTAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L211c3RCZUZpbmFsL2JlZm9yZTEuamF2YQpAQCAtMCwwICsxLDE0IEBACisvLyAiTWFrZSAnaScgZmluYWwiICJ0cnVlIgoraW1wb3J0IGphdmEuaW8uKjsKKworY2xhc3MgYSB7Cisgdm9pZCBmKCkgeworICAgICBpbnQgaSA9IDA7CisgICAgIG5ldyBSdW5uYWJsZSgpIHsKKyAgICAgICBwdWJsaWMgdm9pZCBydW4oKSB7CisgICAgICAgICBpbnQgaWkgPSA8Y2FyZXQ+aTsKKyAgICAgICB9CisgICAgIH07CisgfQorfQorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L211c3RCZUZpbmFsL2JlZm9yZTEwLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L211c3RCZUZpbmFsL2JlZm9yZTEwLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjBjY2ZlMQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbXVzdEJlRmluYWwvYmVmb3JlMTAuamF2YQpAQCAtMCwwICsxLDE3IEBACisvLyAiQ29weSAnYScgdG8gdGVtcCBmaW5hbCB2YXJpYWJsZSIgInRydWUiCitwdWJsaWMgY2xhc3MgRG91YmxlVHJvdWJsZSB7CisgICAgcHVibGljIHZvaWQgdGVzdCgpIHsKKyAgICAgICAgaW50IGEgPSAxOworICAgICAgICBhID0gMjsKKyAgICAgICAgY2xhc3MgcyB7CisgICAgICAgICAgcHVibGljIHZvaWQgcnVuKCkgeworICAgICAgICAgICAgbmV3IFJ1bm5hYmxlKCkgeworICAgICAgICAgICAgICBwdWJsaWMgdm9pZCBydW4oKSB7CisgICAgICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKDxjYXJldD5hKTsKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfS5ydW4oKTsKKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0KKworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9tdXN0QmVGaW5hbC9iZWZvcmUyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L211c3RCZUZpbmFsL2JlZm9yZTIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hODZkZDgyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9tdXN0QmVGaW5hbC9iZWZvcmUyLmphdmEKQEAgLTAsMCArMSwxNSBAQAorLy8gIkNvcHkgJ2knIHRvIHRlbXAgZmluYWwgdmFyaWFibGUiICJ0cnVlIgoraW1wb3J0IGphdmEuaW8uKjsKKworY2xhc3MgYSB7Cisgdm9pZCBmKCkgeworICAgICBpbnQgaSA9IDA7CisgICAgIG5ldyBSdW5uYWJsZSgpIHsKKyAgICAgICBwdWJsaWMgdm9pZCBydW4oKSB7CisgICAgICAgICBpbnQgaWkgPSA8Y2FyZXQ+aTsKKyAgICAgICB9CisgICAgIH07CisgICAgIGkrKzsKKyB9Cit9CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbXVzdEJlRmluYWwvYmVmb3JlMy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9tdXN0QmVGaW5hbC9iZWZvcmUzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzI4ZTlkNAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbXVzdEJlRmluYWwvYmVmb3JlMy5qYXZhCkBAIC0wLDAgKzEsMTQgQEAKKy8vICJUcmFuc2Zvcm0gJ2knIGludG8gZmluYWwgb25lIGVsZW1lbnQgYXJyYXkiICJ0cnVlIgoraW1wb3J0IGphdmEuaW8uKjsKKworY2xhc3MgYSB7Cisgdm9pZCBmKCkgeworICAgICBpbnQgaSA9IDA7CisgICAgIG5ldyBSdW5uYWJsZSgpIHsKKyAgICAgICBwdWJsaWMgdm9pZCBydW4oKSB7CisgICAgICAgICAgPGNhcmV0PmkgPSAwOworICAgICAgIH0KKyAgICAgfTsKKyB9Cit9CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbXVzdEJlRmluYWwvYmVmb3JlNC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9tdXN0QmVGaW5hbC9iZWZvcmU0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDk2YjY0OAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbXVzdEJlRmluYWwvYmVmb3JlNC5qYXZhCkBAIC0wLDAgKzEsMTMgQEAKKy8vICJUcmFuc2Zvcm0gJ2knIGludG8gZmluYWwgb25lIGVsZW1lbnQgYXJyYXkiICJmYWxzZSIKK2ltcG9ydCBqYXZhLmlvLio7CisKK2NsYXNzIGFhIHsKKyB2b2lkIGYoaW50IGkpIHsKKyAgICAgbmV3IFJ1bm5hYmxlKCkgeworICAgICAgIHB1YmxpYyB2b2lkIHJ1bigpIHsKKyAgICAgICAgIDxjYXJldD5pID0gOTsKKyAgICAgICB9CisgICAgIH07CisgfQorfQorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L211c3RCZUZpbmFsL2JlZm9yZTUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbXVzdEJlRmluYWwvYmVmb3JlNS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ1ZTYzMDEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L211c3RCZUZpbmFsL2JlZm9yZTUuamF2YQpAQCAtMCwwICsxLDE5IEBACisvLyAiVHJhbnNmb3JtICdpJyBpbnRvIGZpbmFsIG9uZSBlbGVtZW50IGFycmF5IiAidHJ1ZSIKK2ltcG9ydCBqYXZhLmlvLio7CisKK2NsYXNzIGFhIHsKKyB2b2lkIGYoKSB7CisgICAgIGludCBpPTk7CisgICAgIG5ldyBSdW5uYWJsZSgpIHsKKyAgICAgICBwdWJsaWMgdm9pZCBydW4oKSB7CisgICAgICAgICBpbnQgcCA9IDxjYXJldD5pOworICAgICAgIH0KKyAgICAgfTsKKyAgICAgbmV3IFJ1bm5hYmxlKCkgeworICAgICAgIHB1YmxpYyB2b2lkIHJ1bigpIHsKKyAgICAgICAgIGkgPSAwOworICAgICAgIH0KKyAgICAgfTsKKyB9Cit9CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbXVzdEJlRmluYWwvYmVmb3JlNi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9tdXN0QmVGaW5hbC9iZWZvcmU2LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmM3YTg2NgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbXVzdEJlRmluYWwvYmVmb3JlNi5qYXZhCkBAIC0wLDAgKzEsMjQgQEAKKy8vICJUcmFuc2Zvcm0gJ2knIGludG8gZmluYWwgb25lIGVsZW1lbnQgYXJyYXkiICJ0cnVlIgoraW1wb3J0IGphdmEuaW8uKjsKKworY2xhc3MgYWEgeworIHZvaWQgZigpIHsKKyAgICAgaW50IGkgPSA0OworICAgICBSdW5uYWJsZSBydW5uYWJsZSA9IG5ldyBSdW5uYWJsZSgpIHsKKyAgICAgICAgIHB1YmxpYyB2b2lkIHJ1bigpIHsKKyAgICAgICAgICAgICBuZXcgUnVubmFibGUoKSB7CisgICAgICAgICAgICAgICAgIHB1YmxpYyB2b2lkIHJ1bigpIHsKKyAgICAgICAgICAgICAgICAgICAgIGludCBvPWk7CisgICAgICAgICAgICAgICAgICAgICBpPW87CisgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICB9OworICAgICAgICAgICAgIG5ldyBSdW5uYWJsZSgpIHsKKyAgICAgICAgICAgICAgICAgcHVibGljIHZvaWQgcnVuKCkgeworICAgICAgICAgICAgICAgICAgICAgaW50IG89PGNhcmV0Pmk7CisgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICB9OworICAgICAgICAgfQorICAgICB9OworIH0KK30KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9tdXN0QmVGaW5hbC9iZWZvcmU3LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L211c3RCZUZpbmFsL2JlZm9yZTcuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZTZhMTQ4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9tdXN0QmVGaW5hbC9iZWZvcmU3LmphdmEKQEAgLTAsMCArMSwxNSBAQAorLy8gIlRyYW5zZm9ybSAnaScgaW50byBmaW5hbCBvbmUgZWxlbWVudCBhcnJheSIgInRydWUiCitpbXBvcnQgamF2YS5pby4qOworCitjbGFzcyBhYSB7Cisgdm9pZCBmKCkgeworICAgICBpbnQgaTsKKyAgICAgUnVubmFibGUgcnVubmFibGUgPSBuZXcgUnVubmFibGUoKSB7CisgICAgICAgICBwdWJsaWMgdm9pZCBydW4oKSB7CisgICAgICAgICAgICAgPGNhcmV0PmkgPSA1OworICAgICAgICAgfQorICAgICB9OworICAgIGludCBmID0gaTsKKyB9Cit9CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbXVzdEJlRmluYWwvYmVmb3JlOC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9tdXN0QmVGaW5hbC9iZWZvcmU4LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjc2ZjI0MwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbXVzdEJlRmluYWwvYmVmb3JlOC5qYXZhCkBAIC0wLDAgKzEsMTUgQEAKKy8vICJUcmFuc2Zvcm0gJ2knIGludG8gZmluYWwgb25lIGVsZW1lbnQgYXJyYXkiICJ0cnVlIgoraW1wb3J0IGphdmEuaW8uKjsKKworY2xhc3MgYWEgeworIHZvaWQgZigpIHsKKyAgICAgZmluYWwgaW50IGk7CisgICAgIFJ1bm5hYmxlIHJ1bm5hYmxlID0gbmV3IFJ1bm5hYmxlKCkgeworICAgICAgICAgcHVibGljIHZvaWQgcnVuKCkgeworICAgICAgICAgICAgIDxjYXJldD5pID0gNTsKKyAgICAgICAgIH0KKyAgICAgfTsKKyAgICBpbnQgZiA9IGk7CisgfQorfQorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L211c3RCZUZpbmFsL2JlZm9yZTkuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbXVzdEJlRmluYWwvYmVmb3JlOS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI5MmNkZmMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L211c3RCZUZpbmFsL2JlZm9yZTkuamF2YQpAQCAtMCwwICsxLDE1IEBACisvLyAiQ29weSAnaScgdG8gdGVtcCBmaW5hbCB2YXJpYWJsZSIgImZhbHNlIgoraW50ZXJmYWNlIEkgeworICAgIGludCBmKCk7Cit9CisKK2NsYXNzIEMgeworICAgIHZvaWQgZm9vKCkgeworICAgICAgICBpbnQgaSA9IG5ldyBJKCkgeworICAgICAgICAgICAgcHVibGljIGludCBmKCkgeworICAgICAgICAgICAgICAgIHJldHVybiA8Y2FyZXQ+aTsKKyAgICAgICAgICAgIH0KKworICAgICAgICB9LmYoKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L211c3RCZUZpbmFsL2JlZm9yZUFsbFZhcnMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbXVzdEJlRmluYWwvYmVmb3JlQWxsVmFycy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcwMGFlYjQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L211c3RCZUZpbmFsL2JlZm9yZUFsbFZhcnMuamF2YQpAQCAtMCwwICsxLDE1IEBACisvLyAiTWFrZSB2YXJpYWJsZXMgZmluYWwiICJ0cnVlIgoraW1wb3J0IGphdmEuaW8uKjsKKworY2xhc3MgYSB7Cisgdm9pZCBmKCkgeworICAgICBpbnQgaSA9IDA7CisgICAgIGludCBqID0gMDsKKyAgICAgbmV3IFJ1bm5hYmxlKCkgeworICAgICAgIHB1YmxpYyB2b2lkIHJ1bigpIHsKKyAgICAgICAgIGludCBpaSA9IDxjYXJldD5pICsgajsKKyAgICAgICB9CisgICAgIH07CisgfQorfQorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L211c3RCZUZpbmFsL2JlZm9yZUNvcHlMYW1iZGFQYXJhbS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9tdXN0QmVGaW5hbC9iZWZvcmVDb3B5TGFtYmRhUGFyYW0uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NDFkNmY5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9tdXN0QmVGaW5hbC9iZWZvcmVDb3B5TGFtYmRhUGFyYW0uamF2YQpAQCAtMCwwICsxLDE2IEBACisvLyAiQ29weSAnbycgdG8gdGVtcCBmaW5hbCB2YXJpYWJsZSIgInRydWUiCitjbGFzcyBUZXN0MSB7CisgICAgdm9pZCBmb28oKXt9CisgICAgeworICAgICAgICBDb21wYXJhYmxlPFN0cmluZz4gYSA9IG8tPnsKKyAgICAgICAgICAgIG8gPSAiIjsKKyAgICAgICAgICAgIG5ldyBSdW5uYWJsZSgpIHsKKyAgICAgICAgICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgICAgICAgICBwdWJsaWMgdm9pZCBydW4oKSB7CisgICAgICAgICAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbig8Y2FyZXQ+byk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfS5ydW4oKTsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9OworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L211c3RCZUZpbmFsL2JlZm9yZU9uZVZhci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9tdXN0QmVGaW5hbC9iZWZvcmVPbmVWYXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NTNjZmZiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9tdXN0QmVGaW5hbC9iZWZvcmVPbmVWYXIuamF2YQpAQCAtMCwwICsxLDE1IEBACisvLyAiTWFrZSAnaScgZmluYWwiICJ0cnVlIgoraW1wb3J0IGphdmEuaW8uKjsKKworY2xhc3MgYSB7Cisgdm9pZCBmKCkgeworICAgICBpbnQgaSA9IDA7CisgICAgIGludCBqID0gMDsKKyAgICAgbmV3IFJ1bm5hYmxlKCkgeworICAgICAgIHB1YmxpYyB2b2lkIHJ1bigpIHsKKyAgICAgICAgIGludCBpaSA9IDxjYXJldD5pOworICAgICAgIH0KKyAgICAgfTsKKyB9Cit9CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbXVzdEJlRmluYWwxOC9iZWZvcmUxLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L211c3RCZUZpbmFsMTgvYmVmb3JlMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRiNGU3ODAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L211c3RCZUZpbmFsMTgvYmVmb3JlMS5qYXZhCkBAIC0wLDAgKzEsMTQgQEAKKy8vICJNYWtlICdpJyBmaW5hbCIgImZhbHNlIgoraW1wb3J0IGphdmEuaW8uKjsKKworY2xhc3MgYSB7Cisgdm9pZCBmKCkgeworICAgICBpbnQgaSA9IDA7CisgICAgIG5ldyBSdW5uYWJsZSgpIHsKKyAgICAgICBwdWJsaWMgdm9pZCBydW4oKSB7CisgICAgICAgICBpbnQgaWkgPSA8Y2FyZXQ+aTsKKyAgICAgICB9CisgICAgIH07CisgfQorfQorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L25lZ2F0aW9uQnJvYWRTY29wZS9hZnRlcjEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbmVnYXRpb25Ccm9hZFNjb3BlL2FmdGVyMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjViNjE4YTEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L25lZ2F0aW9uQnJvYWRTY29wZS9hZnRlcjEuamF2YQpAQCAtMCwwICsxLDYgQEAKKy8vICJDaGFuZ2UgdG8gJyEoMSA9PSAxKSciICJ0cnVlIgorcHVibGljIGNsYXNzIEZvbyB7CisgICAgdm9pZCB0YXNrKCkgeworICAgICAgICBpZiAoPGNhcmV0PiEoMSA9PSAgIDEpKSB7fQorICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbmVnYXRpb25Ccm9hZFNjb3BlL2FmdGVyMi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9uZWdhdGlvbkJyb2FkU2NvcGUvYWZ0ZXIyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTE4NTM2MAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvbmVnYXRpb25Ccm9hZFNjb3BlL2FmdGVyMi5qYXZhCkBAIC0wLDAgKzEsNiBAQAorLy8gIkNoYW5nZSB0byAnISh0aGlzIGluc3RhbmNlb2YgT2JqZWN0KSciICJ0cnVlIgorcHVibGljIGNsYXNzIEZvbyB7CisgICAgdm9pZCB0YXNrKCkgeworICAgICAgICBpZiAoPGNhcmV0PiEodGhpcyBpbnN0YW5jZW9mIE9iamVjdCkpIHt9CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9uZWdhdGlvbkJyb2FkU2NvcGUvYmVmb3JlMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9uZWdhdGlvbkJyb2FkU2NvcGUvYmVmb3JlMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNkMmQ3MDAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L25lZ2F0aW9uQnJvYWRTY29wZS9iZWZvcmUxLmphdmEKQEAgLTAsMCArMSw2IEBACisvLyAiQ2hhbmdlIHRvICchKDEgPT0gMSknIiAidHJ1ZSIKK3B1YmxpYyBjbGFzcyBGb28geworICAgIHZvaWQgdGFzaygpIHsKKyAgICAgICAgaWYgKCE8Y2FyZXQ+MSA9PSAgIDEpIHt9CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9uZWdhdGlvbkJyb2FkU2NvcGUvYmVmb3JlMi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9uZWdhdGlvbkJyb2FkU2NvcGUvYmVmb3JlMi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ5OWY2NzUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L25lZ2F0aW9uQnJvYWRTY29wZS9iZWZvcmUyLmphdmEKQEAgLTAsMCArMSw2IEBACisvLyAiQ2hhbmdlIHRvICchKHRoaXMgaW5zdGFuY2VvZiBPYmplY3QpJyIgInRydWUiCitwdWJsaWMgY2xhc3MgRm9vIHsKKyAgICB2b2lkIHRhc2soKSB7CisgICAgICAgIGlmICg8Y2FyZXQ+IXRoaXMgaW5zdGFuY2VvZiBPYmplY3QpIHt9CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9vcmRlckVudHJ5L0EvQS5pbWwgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L29yZGVyRW50cnkvQS9BLmltbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YmI0ZDBlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9vcmRlckVudHJ5L0EvQS5pbWwKQEAgLTAsMCArMSwxNSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxtb2R1bGUgdmVyc2lvbj0iNCIgcmVsYXRpdmVQYXRocz0idHJ1ZSIgdHlwZT0iSkFWQV9NT0RVTEUiPgorICA8Y29tcG9uZW50IG5hbWU9Ik1vZHVsZVJvb3RNYW5hZ2VyIiAvPgorICA8Y29tcG9uZW50IG5hbWU9Ik5ld01vZHVsZVJvb3RNYW5hZ2VyIiBpbmhlcml0LWNvbXBpbGVyLW91dHB1dD0idHJ1ZSI+CisgICAgPGV4Y2x1ZGUtb3V0cHV0IC8+CisgICAgPGNvbnRlbnQgdXJsPSJmaWxlOi8vJE1PRFVMRV9ESVIkIj4KKyAgICAgIDxzb3VyY2VGb2xkZXIgdXJsPSJmaWxlOi8vJE1PRFVMRV9ESVIkL3NyYyIgaXNUZXN0U291cmNlPSJmYWxzZSIgLz4KKyAgICA8L2NvbnRlbnQ+CisgICAgPG9yZGVyRW50cnkgdHlwZT0iaW5oZXJpdGVkSmRrIiAvPgorICAgIDxvcmRlckVudHJ5IHR5cGU9InNvdXJjZUZvbGRlciIgZm9yVGVzdHM9ImZhbHNlIiAvPgorICAgIDxvcmRlckVudHJ5IHR5cGU9ImxpYnJhcnkiIG5hbWU9IkxpYiIgbGV2ZWw9InByb2plY3QiIC8+CisgICAgPG9yZGVyRW50cnlQcm9wZXJ0aWVzIC8+CisgIDwvY29tcG9uZW50PgorPC9tb2R1bGU+CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvb3JkZXJFbnRyeS9BL3NyYy94L0RvVGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9vcmRlckVudHJ5L0Evc3JjL3gvRG9UZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjQyMWEzNQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvb3JkZXJFbnRyeS9BL3NyYy94L0RvVGVzdC5qYXZhCkBAIC0wLDAgKzEsNSBAQAorLy8gIkFkZCAnanVuaXQuamFyJyB0byBjbGFzc3BhdGgiICJ0cnVlIgorcGFja2FnZSB4OworcHVibGljIGNsYXNzIERvVGVzdCBleHRlbmRzIFRlc3RDYXNlPGNhcmV0PnsKKworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvb3JkZXJFbnRyeS9BL3NyYy94L0RvVGVzdDQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvb3JkZXJFbnRyeS9BL3NyYy94L0RvVGVzdDQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ODU2YjJkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9vcmRlckVudHJ5L0Evc3JjL3gvRG9UZXN0NC5qYXZhCkBAIC0wLDAgKzEsOSBAQAorLy8gIkFkZCAnanVuaXQuamFyJyB0byBjbGFzc3BhdGgiICJ0cnVlIgorcGFja2FnZSB4OworCitwdWJsaWMgY2xhc3MgRG9UZXN0NCB7CisgQFRlc3Q8Y2FyZXQ+Cisgdm9pZCBmKCkgeworCisgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvb3JkZXJFbnRyeS9BL3NyYy94L0RvVGVzdDRqdW5pdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9vcmRlckVudHJ5L0Evc3JjL3gvRG9UZXN0NGp1bml0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGE3NzZhNgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvb3JkZXJFbnRyeS9BL3NyYy94L0RvVGVzdDRqdW5pdC5qYXZhCkBAIC0wLDAgKzEsOSBAQAorLy8gIkFkZCAnanVuaXQuamFyJyB0byBjbGFzc3BhdGgiICJ0cnVlIgorcGFja2FnZSB4OworCitwdWJsaWMgY2xhc3MgRG9UZXN0NGp1bml0IHsKKyBAb3JnLmp1PGNhcmV0Pm5pdC5UZXN0Cisgdm9pZCBmKCkgeworCisgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvb3JkZXJFbnRyeS9BL3NyYy94L0luQS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9vcmRlckVudHJ5L0Evc3JjL3gvSW5BLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWY0NjUxZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvb3JkZXJFbnRyeS9BL3NyYy94L0luQS5qYXZhCkBAIC0wLDAgKzEsMTEgQEAKK3BhY2thZ2UgeDsKKworLyoqCisgKiBDcmVhdGVkIGJ5IEludGVsbGlKIElERUEuCisgKiBVc2VyOiBjZHIKKyAqIERhdGU6IEF1ZyAyMiwgMjAwNgorICogVGltZTogMTE6MDk6MDQgQU0KKyAqIFRvIGNoYW5nZSB0aGlzIHRlbXBsYXRlIHVzZSBGaWxlIHwgU2V0dGluZ3MgfCBGaWxlIFRlbXBsYXRlcy4KKyAqLworcHVibGljIGNsYXNzIEluQSB7Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L29yZGVyRW50cnkvQi9CLmltbCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvb3JkZXJFbnRyeS9CL0IuaW1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI0MTZhYTQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L29yZGVyRW50cnkvQi9CLmltbApAQCAtMCwwICsxLDE1IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPG1vZHVsZSB2ZXJzaW9uPSI0IiByZWxhdGl2ZVBhdGhzPSJ0cnVlIiB0eXBlPSJKQVZBX01PRFVMRSI+CisgIDxjb21wb25lbnQgbmFtZT0iTW9kdWxlUm9vdE1hbmFnZXIiIC8+CisgIDxjb21wb25lbnQgbmFtZT0iTmV3TW9kdWxlUm9vdE1hbmFnZXIiIGluaGVyaXQtY29tcGlsZXItb3V0cHV0PSJ0cnVlIj4KKyAgICA8ZXhjbHVkZS1vdXRwdXQgLz4KKyAgICA8Y29udGVudCB1cmw9ImZpbGU6Ly8kTU9EVUxFX0RJUiQiPgorICAgICAgPHNvdXJjZUZvbGRlciB1cmw9ImZpbGU6Ly8kTU9EVUxFX0RJUiQvc3JjIiBpc1Rlc3RTb3VyY2U9ImZhbHNlIiAvPgorICAgIDwvY29udGVudD4KKyAgICA8b3JkZXJFbnRyeSB0eXBlPSJpbmhlcml0ZWRKZGsiIC8+CisgICAgPG9yZGVyRW50cnkgdHlwZT0ic291cmNlRm9sZGVyIiBmb3JUZXN0cz0iZmFsc2UiIC8+CisgICAgPG9yZGVyRW50cnkgdHlwZT0ibGlicmFyeSIgbmFtZT0iTW9ja0p1bml0IiBsZXZlbD0icHJvamVjdCIgLz4KKyAgICA8b3JkZXJFbnRyeVByb3BlcnRpZXMgLz4KKyAgPC9jb21wb25lbnQ+Cis8L21vZHVsZT4KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9vcmRlckVudHJ5L0Ivc3JjL3kvQWRkRGVwZW5kZW5jeS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9vcmRlckVudHJ5L0Ivc3JjL3kvQWRkRGVwZW5kZW5jeS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFlMDhmYTkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L29yZGVyRW50cnkvQi9zcmMveS9BZGREZXBlbmRlbmN5LmphdmEKQEAgLTAsMCArMSwxMyBAQAorLy8gIkFkZCBkZXBlbmRlbmN5IG9uIG1vZHVsZSAnQSciICJ0cnVlIgorcGFja2FnZSB5OworCisvKioKKyAqIENyZWF0ZWQgYnkgSW50ZWxsaUogSURFQS4KKyAqIFVzZXI6IGNkcgorICogRGF0ZTogQXVnIDIyLCAyMDA2CisgKiBUaW1lOiAxMTowOToyNSBBTQorICogVG8gY2hhbmdlIHRoaXMgdGVtcGxhdGUgdXNlIEZpbGUgfCBTZXR0aW5ncyB8IEZpbGUgVGVtcGxhdGVzLgorICovCitwdWJsaWMgY2xhc3MgQWRkRGVwZW5kZW5jeSB7CisgICAgSW5BPGNhcmV0PiBhOworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9vcmRlckVudHJ5L0Ivc3JjL3kvQWRkRXhpc3RpbmdKdW5pdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9vcmRlckVudHJ5L0Ivc3JjL3kvQWRkRXhpc3RpbmdKdW5pdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY5OThkNmIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L29yZGVyRW50cnkvQi9zcmMveS9BZGRFeGlzdGluZ0p1bml0LmphdmEKQEAgLTAsMCArMSw1IEBACisvLyAiQWRkICdqdW5pdC5qYXInIHRvIGNsYXNzcGF0aCIgImZhbHNlIgorcGFja2FnZSB5OworCitwdWJsaWMgY2xhc3MgQWRkRXhpc3RpbmdKdW5pdCBleHRlbmRzIDxjYXJldD5UZXN0Q2FzZSB7Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L29yZGVyRW50cnkvQi9zcmMveS9BZGRMaWJyYXJ5LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L29yZGVyRW50cnkvQi9zcmMveS9BZGRMaWJyYXJ5LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzhlYWNkZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvb3JkZXJFbnRyeS9CL3NyYy95L0FkZExpYnJhcnkuamF2YQpAQCAtMCwwICsxLDEzIEBACisvLyAiQWRkIGxpYnJhcnkgJ0xpYicgdG8gY2xhc3NwYXRoIiAidHJ1ZSIKK3BhY2thZ2UgeTsKKworLyoqCisgKiBDcmVhdGVkIGJ5IEludGVsbGlKIElERUEuCisgKiBVc2VyOiBjZHIKKyAqIERhdGU6IEF1ZyAyMiwgMjAwNgorICogVGltZTogMTE6MTM6MDAgQU0KKyAqIFRvIGNoYW5nZSB0aGlzIHRlbXBsYXRlIHVzZSBGaWxlIHwgU2V0dGluZ3MgfCBGaWxlIFRlbXBsYXRlcy4KKyAqLworcHVibGljIGNsYXNzIEFkZExpYnJhcnkgeworICAgIEluTGliPGNhcmV0PiBsOworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9vcmRlckVudHJ5L2xpYi9saWIuaW1sIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9vcmRlckVudHJ5L2xpYi9saWIuaW1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjljM2EwYTYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L29yZGVyRW50cnkvbGliL2xpYi5pbWwKQEAgLTAsMCArMSwxNCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxtb2R1bGUgdmVyc2lvbj0iNCIgcmVsYXRpdmVQYXRocz0idHJ1ZSIgdHlwZT0iSkFWQV9NT0RVTEUiPgorICA8Y29tcG9uZW50IG5hbWU9Ik1vZHVsZVJvb3RNYW5hZ2VyIiAvPgorICA8Y29tcG9uZW50IG5hbWU9Ik5ld01vZHVsZVJvb3RNYW5hZ2VyIiBpbmhlcml0LWNvbXBpbGVyLW91dHB1dD0idHJ1ZSI+CisgICAgPGV4Y2x1ZGUtb3V0cHV0IC8+CisgICAgPGNvbnRlbnQgdXJsPSJmaWxlOi8vJE1PRFVMRV9ESVIkIj4KKyAgICAgIDxzb3VyY2VGb2xkZXIgdXJsPSJmaWxlOi8vJE1PRFVMRV9ESVIkL3NyYyIgaXNUZXN0U291cmNlPSJmYWxzZSIgLz4KKyAgICA8L2NvbnRlbnQ+CisgICAgPG9yZGVyRW50cnkgdHlwZT0iaW5oZXJpdGVkSmRrIiAvPgorICAgIDxvcmRlckVudHJ5IHR5cGU9InNvdXJjZUZvbGRlciIgZm9yVGVzdHM9ImZhbHNlIiAvPgorICAgIDxvcmRlckVudHJ5UHJvcGVydGllcyAvPgorICA8L2NvbXBvbmVudD4KKzwvbW9kdWxlPgorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L29yZGVyRW50cnkvbGliL2xpYi5qYXIgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L29yZGVyRW50cnkvbGliL2xpYi5qYXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWI3Y2E5OQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvb3JkZXJFbnRyeS9saWIvbGliLmphcgpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L29yZGVyRW50cnkvbGliL21vY2tqdW5pdC5qYXIgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L29yZGVyRW50cnkvbGliL21vY2tqdW5pdC5qYXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODhiOGNlYwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvb3JkZXJFbnRyeS9saWIvbW9ja2p1bml0LmphcgpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L29yZGVyRW50cnkvbGliL3NyYy9sL0luTGliLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L29yZGVyRW50cnkvbGliL3NyYy9sL0luTGliLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzNiZTRlMAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvb3JkZXJFbnRyeS9saWIvc3JjL2wvSW5MaWIuamF2YQpAQCAtMCwwICsxLDExIEBACitwYWNrYWdlIGw7CisKKy8qKgorICogQ3JlYXRlZCBieSBJbnRlbGxpSiBJREVBLgorICogVXNlcjogY2RyCisgKiBEYXRlOiBBdWcgMjIsIDIwMDYKKyAqIFRpbWU6IDExOjEwOjM1IEFNCisgKiBUbyBjaGFuZ2UgdGhpcyB0ZW1wbGF0ZSB1c2UgRmlsZSB8IFNldHRpbmdzIHwgRmlsZSBUZW1wbGF0ZXMuCisgKi8KK3B1YmxpYyBjbGFzcyBJbkxpYiB7Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L29yZGVyRW50cnkvb3JkZXJFbnRyeS5pcHIgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L29yZGVyRW50cnkvb3JkZXJFbnRyeS5pcHIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDBkOTQ0NgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvb3JkZXJFbnRyeS9vcmRlckVudHJ5LmlwcgpAQCAtMCwwICsxLDI3OCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxwcm9qZWN0IHZlcnNpb249IjQiIHJlbGF0aXZlUGF0aHM9ImZhbHNlIj4KKyAgPGNvbXBvbmVudCBuYW1lPSJBbnRDb25maWd1cmF0aW9uIj4KKyAgICA8ZGVmYXVsdEFudCBidW5kbGVkQW50PSJ0cnVlIiAvPgorICA8L2NvbXBvbmVudD4KKyAgPGNvbXBvbmVudCBuYW1lPSJCdWlsZEphclByb2plY3RTZXR0aW5ncyI+CisgICAgPG9wdGlvbiBuYW1lPSJCVUlMRF9KQVJTX09OX01BS0UiIHZhbHVlPSJmYWxzZSIgLz4KKyAgPC9jb21wb25lbnQ+CisgIDxjb21wb25lbnQgbmFtZT0iQ29kZVN0eWxlUHJvamVjdFByb2ZpbGVNYW5nZXIiPgorICAgIDxvcHRpb24gbmFtZT0iUFJPSkVDVF9QUk9GSUxFIiAvPgorICAgIDxvcHRpb24gbmFtZT0iVVNFX1BST0pFQ1RfTEVWRUxfU0VUVElOR1MiIHZhbHVlPSJmYWxzZSIgLz4KKyAgICA8c2NvcGVzIC8+CisgICAgPHByb2ZpbGVzIC8+CisgIDwvY29tcG9uZW50PgorICA8Y29tcG9uZW50IG5hbWU9IkNvZGVTdHlsZVNldHRpbmdzTWFuYWdlciI+CisgICAgPG9wdGlvbiBuYW1lPSJQRVJfUFJPSkVDVF9TRVRUSU5HUyIgLz4KKyAgICA8b3B0aW9uIG5hbWU9IlVTRV9QRVJfUFJPSkVDVF9TRVRUSU5HUyIgdmFsdWU9ImZhbHNlIiAvPgorICA8L2NvbXBvbmVudD4KKyAgPGNvbXBvbmVudCBuYW1lPSJDb21waWxlckNvbmZpZ3VyYXRpb24iPgorICAgIDxvcHRpb24gbmFtZT0iREVGQVVMVF9DT01QSUxFUiIgdmFsdWU9IkphdmFjIiAvPgorICAgIDxvcHRpb24gbmFtZT0iREVQTE9ZX0FGVEVSX01BS0UiIHZhbHVlPSIwIiAvPgorICAgIDxyZXNvdXJjZUV4dGVuc2lvbnM+CisgICAgICA8ZW50cnkgbmFtZT0iLitcLihwcm9wZXJ0aWVzfHhtbHxodG1sfGR0ZHx0bGQpIiAvPgorICAgICAgPGVudHJ5IG5hbWU9Ii4rXC4oZ2lmfHBuZ3xqcGVnfGpwZykiIC8+CisgICAgPC9yZXNvdXJjZUV4dGVuc2lvbnM+CisgICAgPHdpbGRjYXJkUmVzb3VyY2VQYXR0ZXJucz4KKyAgICAgIDxlbnRyeSBuYW1lPSI/Ki5wcm9wZXJ0aWVzIiAvPgorICAgICAgPGVudHJ5IG5hbWU9Ij8qLnhtbCIgLz4KKyAgICAgIDxlbnRyeSBuYW1lPSI/Ki5naWYiIC8+CisgICAgICA8ZW50cnkgbmFtZT0iPyoucG5nIiAvPgorICAgICAgPGVudHJ5IG5hbWU9Ij8qLmpwZWciIC8+CisgICAgICA8ZW50cnkgbmFtZT0iPyouanBnIiAvPgorICAgICAgPGVudHJ5IG5hbWU9Ij8qLmh0bWwiIC8+CisgICAgICA8ZW50cnkgbmFtZT0iPyouZHRkIiAvPgorICAgICAgPGVudHJ5IG5hbWU9Ij8qLnRsZCIgLz4KKyAgICA8L3dpbGRjYXJkUmVzb3VyY2VQYXR0ZXJucz4KKyAgPC9jb21wb25lbnQ+CisgIDxjb21wb25lbnQgbmFtZT0iRGF0YVNvdXJjZU1hbmFnZXJJbXBsIiAvPgorICA8Y29tcG9uZW50IG5hbWU9IkRlcGVuZGVuY2llc0FuYWx5emVNYW5hZ2VyIj4KKyAgICA8b3B0aW9uIG5hbWU9Im15Rm9yd2FyZERpcmVjdGlvbiIgdmFsdWU9ImZhbHNlIiAvPgorICA8L2NvbXBvbmVudD4KKyAgPGNvbXBvbmVudCBuYW1lPSJEZXBlbmRlbmN5VmFsaWRhdGlvbk1hbmFnZXIiIC8+CisgIDxjb21wb25lbnQgbmFtZT0iRWNsaXBzZUNvbXBpbGVyU2V0dGluZ3MiPgorICAgIDxvcHRpb24gbmFtZT0iREVCVUdHSU5HX0lORk8iIHZhbHVlPSJ0cnVlIiAvPgorICAgIDxvcHRpb24gbmFtZT0iR0VORVJBVEVfTk9fV0FSTklOR1MiIHZhbHVlPSJ0cnVlIiAvPgorICAgIDxvcHRpb24gbmFtZT0iREVQUkVDQVRJT04iIHZhbHVlPSJmYWxzZSIgLz4KKyAgICA8b3B0aW9uIG5hbWU9IkFERElUSU9OQUxfT1BUSU9OU19TVFJJTkciIHZhbHVlPSIiIC8+CisgICAgPG9wdGlvbiBuYW1lPSJNQVhJTVVNX0hFQVBfU0laRSIgdmFsdWU9IjEyOCIgLz4KKyAgPC9jb21wb25lbnQ+CisgIDxjb21wb25lbnQgbmFtZT0iRWNsaXBzZUVtYmVkZGVkQ29tcGlsZXJTZXR0aW5ncyI+CisgICAgPG9wdGlvbiBuYW1lPSJERUJVR0dJTkdfSU5GTyIgdmFsdWU9InRydWUiIC8+CisgICAgPG9wdGlvbiBuYW1lPSJHRU5FUkFURV9OT19XQVJOSU5HUyIgdmFsdWU9InRydWUiIC8+CisgICAgPG9wdGlvbiBuYW1lPSJERVBSRUNBVElPTiIgdmFsdWU9ImZhbHNlIiAvPgorICAgIDxvcHRpb24gbmFtZT0iQURESVRJT05BTF9PUFRJT05TX1NUUklORyIgdmFsdWU9IiIgLz4KKyAgICA8b3B0aW9uIG5hbWU9Ik1BWElNVU1fSEVBUF9TSVpFIiB2YWx1ZT0iMTI4IiAvPgorICA8L2NvbXBvbmVudD4KKyAgPGNvbXBvbmVudCBuYW1lPSJFbnRyeVBvaW50c01hbmFnZXIiPgorICAgIDxlbnRyeV9wb2ludHMgLz4KKyAgPC9jb21wb25lbnQ+CisgIDxjb21wb25lbnQgbmFtZT0iRXhwb3J0VG9IVE1MU2V0dGluZ3MiPgorICAgIDxvcHRpb24gbmFtZT0iUFJJTlRfTElORV9OVU1CRVJTIiB2YWx1ZT0iZmFsc2UiIC8+CisgICAgPG9wdGlvbiBuYW1lPSJPUEVOX0lOX0JST1dTRVIiIHZhbHVlPSJmYWxzZSIgLz4KKyAgICA8b3B0aW9uIG5hbWU9Ik9VVFBVVF9ESVJFQ1RPUlkiIC8+CisgIDwvY29tcG9uZW50PgorICA8Y29tcG9uZW50IG5hbWU9IkdVSSBEZXNpZ25lciBjb21wb25lbnQgbG9hZGVyIGZhY3RvcnkiIC8+CisgIDxjb21wb25lbnQgbmFtZT0iSW5zcGVjdGlvblByb2plY3RQcm9maWxlTWFuYWdlciI+CisgICAgPG9wdGlvbiBuYW1lPSJQUk9KRUNUX1BST0ZJTEUiIHZhbHVlPSJQcm9qZWN0IERlZmF1bHQiIC8+CisgICAgPG9wdGlvbiBuYW1lPSJVU0VfUFJPSkVDVF9MRVZFTF9TRVRUSU5HUyIgdmFsdWU9ImZhbHNlIiAvPgorICAgIDxzY29wZXMgLz4KKyAgICA8cHJvZmlsZXM+CisgICAgICA8cHJvZmlsZSB2ZXJzaW9uPSIxLjAiIGlzX2xvY2tlZD0iZmFsc2UiPgorICAgICAgICA8b3B0aW9uIG5hbWU9Im15TmFtZSIgdmFsdWU9IlByb2plY3QgRGVmYXVsdCIgLz4KKyAgICAgICAgPG9wdGlvbiBuYW1lPSJteUxvY2FsIiB2YWx1ZT0iZmFsc2UiIC8+CisgICAgICA8L3Byb2ZpbGU+CisgICAgPC9wcm9maWxlcz4KKyAgPC9jb21wb25lbnQ+CisgIDxjb21wb25lbnQgbmFtZT0iSmF2YWNTZXR0aW5ncyI+CisgICAgPG9wdGlvbiBuYW1lPSJERUJVR0dJTkdfSU5GTyIgdmFsdWU9InRydWUiIC8+CisgICAgPG9wdGlvbiBuYW1lPSJHRU5FUkFURV9OT19XQVJOSU5HUyIgdmFsdWU9ImZhbHNlIiAvPgorICAgIDxvcHRpb24gbmFtZT0iREVQUkVDQVRJT04iIHZhbHVlPSJ0cnVlIiAvPgorICAgIDxvcHRpb24gbmFtZT0iQURESVRJT05BTF9PUFRJT05TX1NUUklORyIgdmFsdWU9IiIgLz4KKyAgICA8b3B0aW9uIG5hbWU9Ik1BWElNVU1fSEVBUF9TSVpFIiB2YWx1ZT0iMTI4IiAvPgorICA8L2NvbXBvbmVudD4KKyAgPGNvbXBvbmVudCBuYW1lPSJKYXZhZG9jR2VuZXJhdGlvbk1hbmFnZXIiPgorICAgIDxvcHRpb24gbmFtZT0iT1VUUFVUX0RJUkVDVE9SWSIgLz4KKyAgICA8b3B0aW9uIG5hbWU9Ik9QVElPTl9TQ09QRSIgdmFsdWU9InByb3RlY3RlZCIgLz4KKyAgICA8b3B0aW9uIG5hbWU9Ik9QVElPTl9ISUVSQVJDSFkiIHZhbHVlPSJ0cnVlIiAvPgorICAgIDxvcHRpb24gbmFtZT0iT1BUSU9OX05BVklHQVRPUiIgdmFsdWU9InRydWUiIC8+CisgICAgPG9wdGlvbiBuYW1lPSJPUFRJT05fSU5ERVgiIHZhbHVlPSJ0cnVlIiAvPgorICAgIDxvcHRpb24gbmFtZT0iT1BUSU9OX1NFUEFSQVRFX0lOREVYIiB2YWx1ZT0idHJ1ZSIgLz4KKyAgICA8b3B0aW9uIG5hbWU9Ik9QVElPTl9ET0NVTUVOVF9UQUdfVVNFIiB2YWx1ZT0iZmFsc2UiIC8+CisgICAgPG9wdGlvbiBuYW1lPSJPUFRJT05fRE9DVU1FTlRfVEFHX0FVVEhPUiIgdmFsdWU9ImZhbHNlIiAvPgorICAgIDxvcHRpb24gbmFtZT0iT1BUSU9OX0RPQ1VNRU5UX1RBR19WRVJTSU9OIiB2YWx1ZT0iZmFsc2UiIC8+CisgICAgPG9wdGlvbiBuYW1lPSJPUFRJT05fRE9DVU1FTlRfVEFHX0RFUFJFQ0FURUQiIHZhbHVlPSJ0cnVlIiAvPgorICAgIDxvcHRpb24gbmFtZT0iT1BUSU9OX0RFUFJFQ0FURURfTElTVCIgdmFsdWU9InRydWUiIC8+CisgICAgPG9wdGlvbiBuYW1lPSJPVEhFUl9PUFRJT05TIiB2YWx1ZT0iIiAvPgorICAgIDxvcHRpb24gbmFtZT0iSEVBUF9TSVpFIiAvPgorICAgIDxvcHRpb24gbmFtZT0iTE9DQUxFIiAvPgorICAgIDxvcHRpb24gbmFtZT0iT1BFTl9JTl9CUk9XU0VSIiB2YWx1ZT0idHJ1ZSIgLz4KKyAgPC9jb21wb25lbnQ+CisgIDxjb21wb25lbnQgbmFtZT0iSmlrZXNTZXR0aW5ncyI+CisgICAgPG9wdGlvbiBuYW1lPSJKSUtFU19QQVRIIiB2YWx1ZT0iIiAvPgorICAgIDxvcHRpb24gbmFtZT0iREVCVUdHSU5HX0lORk8iIHZhbHVlPSJ0cnVlIiAvPgorICAgIDxvcHRpb24gbmFtZT0iREVQUkVDQVRJT04iIHZhbHVlPSJ0cnVlIiAvPgorICAgIDxvcHRpb24gbmFtZT0iR0VORVJBVEVfTk9fV0FSTklOR1MiIHZhbHVlPSJmYWxzZSIgLz4KKyAgICA8b3B0aW9uIG5hbWU9IklTX0VNQUNTX0VSUk9SU19NT0RFIiB2YWx1ZT0idHJ1ZSIgLz4KKyAgICA8b3B0aW9uIG5hbWU9IkFERElUSU9OQUxfT1BUSU9OU19TVFJJTkciIHZhbHVlPSIiIC8+CisgIDwvY29tcG9uZW50PgorICA8Y29tcG9uZW50IG5hbWU9IkxvZ0NvbnNvbGVQcmVmZXJlbmNlcyI+CisgICAgPG9wdGlvbiBuYW1lPSJGSUxURVJfRVJST1JTIiB2YWx1ZT0iZmFsc2UiIC8+CisgICAgPG9wdGlvbiBuYW1lPSJGSUxURVJfV0FSTklOR1MiIHZhbHVlPSJmYWxzZSIgLz4KKyAgICA8b3B0aW9uIG5hbWU9IkZJTFRFUl9JTkZPIiB2YWx1ZT0idHJ1ZSIgLz4KKyAgICA8b3B0aW9uIG5hbWU9IkNVU1RPTV9GSUxURVIiIC8+CisgIDwvY29tcG9uZW50PgorICA8Y29tcG9uZW50IG5hbWU9IlBhbGV0dGUyIj4KKyAgICA8Z3JvdXAgbmFtZT0iU3dpbmciPgorICAgICAgPGl0ZW0gY2xhc3M9ImNvbS5pbnRlbGxpai51aURlc2lnbmVyLkhTcGFjZXIiIHRvb2x0aXAtdGV4dD0iSG9yaXpvbnRhbCBTcGFjZXIiIGljb249Ii9jb20vaW50ZWxsaWovdWlEZXNpZ25lci9pY29ucy9oc3BhY2VyLnBuZyIgcmVtb3ZhYmxlPSJmYWxzZSIgYXV0by1jcmVhdGUtYmluZGluZz0iZmFsc2UiIGNhbi1hdHRhY2gtbGFiZWw9ImZhbHNlIj4KKyAgICAgICAgPGRlZmF1bHQtY29uc3RyYWludHMgdnNpemUtcG9saWN5PSIxIiBoc2l6ZS1wb2xpY3k9IjYiIGFuY2hvcj0iMCIgZmlsbD0iMSIgLz4KKyAgICAgIDwvaXRlbT4KKyAgICAgIDxpdGVtIGNsYXNzPSJjb20uaW50ZWxsaWoudWlEZXNpZ25lci5WU3BhY2VyIiB0b29sdGlwLXRleHQ9IlZlcnRpY2FsIFNwYWNlciIgaWNvbj0iL2NvbS9pbnRlbGxpai91aURlc2lnbmVyL2ljb25zL3ZzcGFjZXIucG5nIiByZW1vdmFibGU9ImZhbHNlIiBhdXRvLWNyZWF0ZS1iaW5kaW5nPSJmYWxzZSIgY2FuLWF0dGFjaC1sYWJlbD0iZmFsc2UiPgorICAgICAgICA8ZGVmYXVsdC1jb25zdHJhaW50cyB2c2l6ZS1wb2xpY3k9IjYiIGhzaXplLXBvbGljeT0iMSIgYW5jaG9yPSIwIiBmaWxsPSIyIiAvPgorICAgICAgPC9pdGVtPgorICAgICAgPGl0ZW0gY2xhc3M9ImphdmF4LnN3aW5nLkpQYW5lbCIgaWNvbj0iL2NvbS9pbnRlbGxpai91aURlc2lnbmVyL2ljb25zL3BhbmVsLnBuZyIgcmVtb3ZhYmxlPSJmYWxzZSIgYXV0by1jcmVhdGUtYmluZGluZz0iZmFsc2UiIGNhbi1hdHRhY2gtbGFiZWw9ImZhbHNlIj4KKyAgICAgICAgPGRlZmF1bHQtY29uc3RyYWludHMgdnNpemUtcG9saWN5PSIzIiBoc2l6ZS1wb2xpY3k9IjMiIGFuY2hvcj0iMCIgZmlsbD0iMyIgLz4KKyAgICAgIDwvaXRlbT4KKyAgICAgIDxpdGVtIGNsYXNzPSJqYXZheC5zd2luZy5KU2Nyb2xsUGFuZSIgaWNvbj0iL2NvbS9pbnRlbGxpai91aURlc2lnbmVyL2ljb25zL3Njcm9sbFBhbmUucG5nIiByZW1vdmFibGU9ImZhbHNlIiBhdXRvLWNyZWF0ZS1iaW5kaW5nPSJmYWxzZSIgY2FuLWF0dGFjaC1sYWJlbD0idHJ1ZSI+CisgICAgICAgIDxkZWZhdWx0LWNvbnN0cmFpbnRzIHZzaXplLXBvbGljeT0iNyIgaHNpemUtcG9saWN5PSI3IiBhbmNob3I9IjAiIGZpbGw9IjMiIC8+CisgICAgICA8L2l0ZW0+CisgICAgICA8aXRlbSBjbGFzcz0iamF2YXguc3dpbmcuSkJ1dHRvbiIgaWNvbj0iL2NvbS9pbnRlbGxpai91aURlc2lnbmVyL2ljb25zL2J1dHRvbi5wbmciIHJlbW92YWJsZT0iZmFsc2UiIGF1dG8tY3JlYXRlLWJpbmRpbmc9InRydWUiIGNhbi1hdHRhY2gtbGFiZWw9ImZhbHNlIj4KKyAgICAgICAgPGRlZmF1bHQtY29uc3RyYWludHMgdnNpemUtcG9saWN5PSIwIiBoc2l6ZS1wb2xpY3k9IjMiIGFuY2hvcj0iMCIgZmlsbD0iMSIgLz4KKyAgICAgICAgPGluaXRpYWwtdmFsdWVzPgorICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJ0ZXh0IiB2YWx1ZT0iQnV0dG9uIiAvPgorICAgICAgICA8L2luaXRpYWwtdmFsdWVzPgorICAgICAgPC9pdGVtPgorICAgICAgPGl0ZW0gY2xhc3M9ImphdmF4LnN3aW5nLkpSYWRpb0J1dHRvbiIgaWNvbj0iL2NvbS9pbnRlbGxpai91aURlc2lnbmVyL2ljb25zL3JhZGlvQnV0dG9uLnBuZyIgcmVtb3ZhYmxlPSJmYWxzZSIgYXV0by1jcmVhdGUtYmluZGluZz0idHJ1ZSIgY2FuLWF0dGFjaC1sYWJlbD0iZmFsc2UiPgorICAgICAgICA8ZGVmYXVsdC1jb25zdHJhaW50cyB2c2l6ZS1wb2xpY3k9IjAiIGhzaXplLXBvbGljeT0iMyIgYW5jaG9yPSI4IiBmaWxsPSIwIiAvPgorICAgICAgICA8aW5pdGlhbC12YWx1ZXM+CisgICAgICAgICAgPHByb3BlcnR5IG5hbWU9InRleHQiIHZhbHVlPSJSYWRpb0J1dHRvbiIgLz4KKyAgICAgICAgPC9pbml0aWFsLXZhbHVlcz4KKyAgICAgIDwvaXRlbT4KKyAgICAgIDxpdGVtIGNsYXNzPSJqYXZheC5zd2luZy5KQ2hlY2tCb3giIGljb249Ii9jb20vaW50ZWxsaWovdWlEZXNpZ25lci9pY29ucy9jaGVja0JveC5wbmciIHJlbW92YWJsZT0iZmFsc2UiIGF1dG8tY3JlYXRlLWJpbmRpbmc9InRydWUiIGNhbi1hdHRhY2gtbGFiZWw9ImZhbHNlIj4KKyAgICAgICAgPGRlZmF1bHQtY29uc3RyYWludHMgdnNpemUtcG9saWN5PSIwIiBoc2l6ZS1wb2xpY3k9IjMiIGFuY2hvcj0iOCIgZmlsbD0iMCIgLz4KKyAgICAgICAgPGluaXRpYWwtdmFsdWVzPgorICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJ0ZXh0IiB2YWx1ZT0iQ2hlY2tCb3giIC8+CisgICAgICAgIDwvaW5pdGlhbC12YWx1ZXM+CisgICAgICA8L2l0ZW0+CisgICAgICA8aXRlbSBjbGFzcz0iamF2YXguc3dpbmcuSkxhYmVsIiBpY29uPSIvY29tL2ludGVsbGlqL3VpRGVzaWduZXIvaWNvbnMvbGFiZWwucG5nIiByZW1vdmFibGU9ImZhbHNlIiBhdXRvLWNyZWF0ZS1iaW5kaW5nPSJmYWxzZSIgY2FuLWF0dGFjaC1sYWJlbD0iZmFsc2UiPgorICAgICAgICA8ZGVmYXVsdC1jb25zdHJhaW50cyB2c2l6ZS1wb2xpY3k9IjAiIGhzaXplLXBvbGljeT0iMCIgYW5jaG9yPSI4IiBmaWxsPSIwIiAvPgorICAgICAgICA8aW5pdGlhbC12YWx1ZXM+CisgICAgICAgICAgPHByb3BlcnR5IG5hbWU9InRleHQiIHZhbHVlPSJMYWJlbCIgLz4KKyAgICAgICAgPC9pbml0aWFsLXZhbHVlcz4KKyAgICAgIDwvaXRlbT4KKyAgICAgIDxpdGVtIGNsYXNzPSJqYXZheC5zd2luZy5KVGV4dEZpZWxkIiBpY29uPSIvY29tL2ludGVsbGlqL3VpRGVzaWduZXIvaWNvbnMvdGV4dEZpZWxkLnBuZyIgcmVtb3ZhYmxlPSJmYWxzZSIgYXV0by1jcmVhdGUtYmluZGluZz0idHJ1ZSIgY2FuLWF0dGFjaC1sYWJlbD0idHJ1ZSI+CisgICAgICAgIDxkZWZhdWx0LWNvbnN0cmFpbnRzIHZzaXplLXBvbGljeT0iMCIgaHNpemUtcG9saWN5PSI2IiBhbmNob3I9IjgiIGZpbGw9IjEiPgorICAgICAgICAgIDxwcmVmZXJyZWQtc2l6ZSB3aWR0aD0iMTUwIiBoZWlnaHQ9Ii0xIiAvPgorICAgICAgICA8L2RlZmF1bHQtY29uc3RyYWludHM+CisgICAgICA8L2l0ZW0+CisgICAgICA8aXRlbSBjbGFzcz0iamF2YXguc3dpbmcuSlBhc3N3b3JkRmllbGQiIGljb249Ii9jb20vaW50ZWxsaWovdWlEZXNpZ25lci9pY29ucy9wYXNzd29yZEZpZWxkLnBuZyIgcmVtb3ZhYmxlPSJmYWxzZSIgYXV0by1jcmVhdGUtYmluZGluZz0idHJ1ZSIgY2FuLWF0dGFjaC1sYWJlbD0idHJ1ZSI+CisgICAgICAgIDxkZWZhdWx0LWNvbnN0cmFpbnRzIHZzaXplLXBvbGljeT0iMCIgaHNpemUtcG9saWN5PSI2IiBhbmNob3I9IjgiIGZpbGw9IjEiPgorICAgICAgICAgIDxwcmVmZXJyZWQtc2l6ZSB3aWR0aD0iMTUwIiBoZWlnaHQ9Ii0xIiAvPgorICAgICAgICA8L2RlZmF1bHQtY29uc3RyYWludHM+CisgICAgICA8L2l0ZW0+CisgICAgICA8aXRlbSBjbGFzcz0iamF2YXguc3dpbmcuSkZvcm1hdHRlZFRleHRGaWVsZCIgaWNvbj0iL2NvbS9pbnRlbGxpai91aURlc2lnbmVyL2ljb25zL2Zvcm1hdHRlZFRleHRGaWVsZC5wbmciIHJlbW92YWJsZT0iZmFsc2UiIGF1dG8tY3JlYXRlLWJpbmRpbmc9InRydWUiIGNhbi1hdHRhY2gtbGFiZWw9InRydWUiPgorICAgICAgICA8ZGVmYXVsdC1jb25zdHJhaW50cyB2c2l6ZS1wb2xpY3k9IjAiIGhzaXplLXBvbGljeT0iNiIgYW5jaG9yPSI4IiBmaWxsPSIxIj4KKyAgICAgICAgICA8cHJlZmVycmVkLXNpemUgd2lkdGg9IjE1MCIgaGVpZ2h0PSItMSIgLz4KKyAgICAgICAgPC9kZWZhdWx0LWNvbnN0cmFpbnRzPgorICAgICAgPC9pdGVtPgorICAgICAgPGl0ZW0gY2xhc3M9ImphdmF4LnN3aW5nLkpUZXh0QXJlYSIgaWNvbj0iL2NvbS9pbnRlbGxpai91aURlc2lnbmVyL2ljb25zL3RleHRBcmVhLnBuZyIgcmVtb3ZhYmxlPSJmYWxzZSIgYXV0by1jcmVhdGUtYmluZGluZz0idHJ1ZSIgY2FuLWF0dGFjaC1sYWJlbD0idHJ1ZSI+CisgICAgICAgIDxkZWZhdWx0LWNvbnN0cmFpbnRzIHZzaXplLXBvbGljeT0iNiIgaHNpemUtcG9saWN5PSI2IiBhbmNob3I9IjAiIGZpbGw9IjMiPgorICAgICAgICAgIDxwcmVmZXJyZWQtc2l6ZSB3aWR0aD0iMTUwIiBoZWlnaHQ9IjUwIiAvPgorICAgICAgICA8L2RlZmF1bHQtY29uc3RyYWludHM+CisgICAgICA8L2l0ZW0+CisgICAgICA8aXRlbSBjbGFzcz0iamF2YXguc3dpbmcuSlRleHRQYW5lIiBpY29uPSIvY29tL2ludGVsbGlqL3VpRGVzaWduZXIvaWNvbnMvdGV4dFBhbmUucG5nIiByZW1vdmFibGU9ImZhbHNlIiBhdXRvLWNyZWF0ZS1iaW5kaW5nPSJ0cnVlIiBjYW4tYXR0YWNoLWxhYmVsPSJ0cnVlIj4KKyAgICAgICAgPGRlZmF1bHQtY29uc3RyYWludHMgdnNpemUtcG9saWN5PSI2IiBoc2l6ZS1wb2xpY3k9IjYiIGFuY2hvcj0iMCIgZmlsbD0iMyI+CisgICAgICAgICAgPHByZWZlcnJlZC1zaXplIHdpZHRoPSIxNTAiIGhlaWdodD0iNTAiIC8+CisgICAgICAgIDwvZGVmYXVsdC1jb25zdHJhaW50cz4KKyAgICAgIDwvaXRlbT4KKyAgICAgIDxpdGVtIGNsYXNzPSJqYXZheC5zd2luZy5KRWRpdG9yUGFuZSIgaWNvbj0iL2NvbS9pbnRlbGxpai91aURlc2lnbmVyL2ljb25zL2VkaXRvclBhbmUucG5nIiByZW1vdmFibGU9ImZhbHNlIiBhdXRvLWNyZWF0ZS1iaW5kaW5nPSJ0cnVlIiBjYW4tYXR0YWNoLWxhYmVsPSJ0cnVlIj4KKyAgICAgICAgPGRlZmF1bHQtY29uc3RyYWludHMgdnNpemUtcG9saWN5PSI2IiBoc2l6ZS1wb2xpY3k9IjYiIGFuY2hvcj0iMCIgZmlsbD0iMyI+CisgICAgICAgICAgPHByZWZlcnJlZC1zaXplIHdpZHRoPSIxNTAiIGhlaWdodD0iNTAiIC8+CisgICAgICAgIDwvZGVmYXVsdC1jb25zdHJhaW50cz4KKyAgICAgIDwvaXRlbT4KKyAgICAgIDxpdGVtIGNsYXNzPSJqYXZheC5zd2luZy5KQ29tYm9Cb3giIGljb249Ii9jb20vaW50ZWxsaWovdWlEZXNpZ25lci9pY29ucy9jb21ib0JveC5wbmciIHJlbW92YWJsZT0iZmFsc2UiIGF1dG8tY3JlYXRlLWJpbmRpbmc9InRydWUiIGNhbi1hdHRhY2gtbGFiZWw9InRydWUiPgorICAgICAgICA8ZGVmYXVsdC1jb25zdHJhaW50cyB2c2l6ZS1wb2xpY3k9IjAiIGhzaXplLXBvbGljeT0iMiIgYW5jaG9yPSI4IiBmaWxsPSIxIiAvPgorICAgICAgPC9pdGVtPgorICAgICAgPGl0ZW0gY2xhc3M9ImphdmF4LnN3aW5nLkpUYWJsZSIgaWNvbj0iL2NvbS9pbnRlbGxpai91aURlc2lnbmVyL2ljb25zL3RhYmxlLnBuZyIgcmVtb3ZhYmxlPSJmYWxzZSIgYXV0by1jcmVhdGUtYmluZGluZz0idHJ1ZSIgY2FuLWF0dGFjaC1sYWJlbD0iZmFsc2UiPgorICAgICAgICA8ZGVmYXVsdC1jb25zdHJhaW50cyB2c2l6ZS1wb2xpY3k9IjYiIGhzaXplLXBvbGljeT0iNiIgYW5jaG9yPSIwIiBmaWxsPSIzIj4KKyAgICAgICAgICA8cHJlZmVycmVkLXNpemUgd2lkdGg9IjE1MCIgaGVpZ2h0PSI1MCIgLz4KKyAgICAgICAgPC9kZWZhdWx0LWNvbnN0cmFpbnRzPgorICAgICAgPC9pdGVtPgorICAgICAgPGl0ZW0gY2xhc3M9ImphdmF4LnN3aW5nLkpMaXN0IiBpY29uPSIvY29tL2ludGVsbGlqL3VpRGVzaWduZXIvaWNvbnMvbGlzdC5wbmciIHJlbW92YWJsZT0iZmFsc2UiIGF1dG8tY3JlYXRlLWJpbmRpbmc9InRydWUiIGNhbi1hdHRhY2gtbGFiZWw9ImZhbHNlIj4KKyAgICAgICAgPGRlZmF1bHQtY29uc3RyYWludHMgdnNpemUtcG9saWN5PSI2IiBoc2l6ZS1wb2xpY3k9IjIiIGFuY2hvcj0iMCIgZmlsbD0iMyI+CisgICAgICAgICAgPHByZWZlcnJlZC1zaXplIHdpZHRoPSIxNTAiIGhlaWdodD0iNTAiIC8+CisgICAgICAgIDwvZGVmYXVsdC1jb25zdHJhaW50cz4KKyAgICAgIDwvaXRlbT4KKyAgICAgIDxpdGVtIGNsYXNzPSJqYXZheC5zd2luZy5KVHJlZSIgaWNvbj0iL2NvbS9pbnRlbGxpai91aURlc2lnbmVyL2ljb25zL3RyZWUucG5nIiByZW1vdmFibGU9ImZhbHNlIiBhdXRvLWNyZWF0ZS1iaW5kaW5nPSJ0cnVlIiBjYW4tYXR0YWNoLWxhYmVsPSJmYWxzZSI+CisgICAgICAgIDxkZWZhdWx0LWNvbnN0cmFpbnRzIHZzaXplLXBvbGljeT0iNiIgaHNpemUtcG9saWN5PSI2IiBhbmNob3I9IjAiIGZpbGw9IjMiPgorICAgICAgICAgIDxwcmVmZXJyZWQtc2l6ZSB3aWR0aD0iMTUwIiBoZWlnaHQ9IjUwIiAvPgorICAgICAgICA8L2RlZmF1bHQtY29uc3RyYWludHM+CisgICAgICA8L2l0ZW0+CisgICAgICA8aXRlbSBjbGFzcz0iamF2YXguc3dpbmcuSlRhYmJlZFBhbmUiIGljb249Ii9jb20vaW50ZWxsaWovdWlEZXNpZ25lci9pY29ucy90YWJiZWRQYW5lLnBuZyIgcmVtb3ZhYmxlPSJmYWxzZSIgYXV0by1jcmVhdGUtYmluZGluZz0idHJ1ZSIgY2FuLWF0dGFjaC1sYWJlbD0iZmFsc2UiPgorICAgICAgICA8ZGVmYXVsdC1jb25zdHJhaW50cyB2c2l6ZS1wb2xpY3k9IjMiIGhzaXplLXBvbGljeT0iMyIgYW5jaG9yPSIwIiBmaWxsPSIzIj4KKyAgICAgICAgICA8cHJlZmVycmVkLXNpemUgd2lkdGg9IjIwMCIgaGVpZ2h0PSIyMDAiIC8+CisgICAgICAgIDwvZGVmYXVsdC1jb25zdHJhaW50cz4KKyAgICAgIDwvaXRlbT4KKyAgICAgIDxpdGVtIGNsYXNzPSJqYXZheC5zd2luZy5KU3BsaXRQYW5lIiBpY29uPSIvY29tL2ludGVsbGlqL3VpRGVzaWduZXIvaWNvbnMvc3BsaXRQYW5lLnBuZyIgcmVtb3ZhYmxlPSJmYWxzZSIgYXV0by1jcmVhdGUtYmluZGluZz0iZmFsc2UiIGNhbi1hdHRhY2gtbGFiZWw9ImZhbHNlIj4KKyAgICAgICAgPGRlZmF1bHQtY29uc3RyYWludHMgdnNpemUtcG9saWN5PSIzIiBoc2l6ZS1wb2xpY3k9IjMiIGFuY2hvcj0iMCIgZmlsbD0iMyI+CisgICAgICAgICAgPHByZWZlcnJlZC1zaXplIHdpZHRoPSIyMDAiIGhlaWdodD0iMjAwIiAvPgorICAgICAgICA8L2RlZmF1bHQtY29uc3RyYWludHM+CisgICAgICA8L2l0ZW0+CisgICAgICA8aXRlbSBjbGFzcz0iamF2YXguc3dpbmcuSlNwaW5uZXIiIGljb249Ii9jb20vaW50ZWxsaWovdWlEZXNpZ25lci9pY29ucy9zcGlubmVyLnBuZyIgcmVtb3ZhYmxlPSJmYWxzZSIgYXV0by1jcmVhdGUtYmluZGluZz0idHJ1ZSIgY2FuLWF0dGFjaC1sYWJlbD0idHJ1ZSI+CisgICAgICAgIDxkZWZhdWx0LWNvbnN0cmFpbnRzIHZzaXplLXBvbGljeT0iMCIgaHNpemUtcG9saWN5PSI2IiBhbmNob3I9IjgiIGZpbGw9IjEiIC8+CisgICAgICA8L2l0ZW0+CisgICAgICA8aXRlbSBjbGFzcz0iamF2YXguc3dpbmcuSlNsaWRlciIgaWNvbj0iL2NvbS9pbnRlbGxpai91aURlc2lnbmVyL2ljb25zL3NsaWRlci5wbmciIHJlbW92YWJsZT0iZmFsc2UiIGF1dG8tY3JlYXRlLWJpbmRpbmc9InRydWUiIGNhbi1hdHRhY2gtbGFiZWw9ImZhbHNlIj4KKyAgICAgICAgPGRlZmF1bHQtY29uc3RyYWludHMgdnNpemUtcG9saWN5PSIwIiBoc2l6ZS1wb2xpY3k9IjYiIGFuY2hvcj0iOCIgZmlsbD0iMSIgLz4KKyAgICAgIDwvaXRlbT4KKyAgICAgIDxpdGVtIGNsYXNzPSJqYXZheC5zd2luZy5KU2VwYXJhdG9yIiBpY29uPSIvY29tL2ludGVsbGlqL3VpRGVzaWduZXIvaWNvbnMvc2VwYXJhdG9yLnBuZyIgcmVtb3ZhYmxlPSJmYWxzZSIgYXV0by1jcmVhdGUtYmluZGluZz0iZmFsc2UiIGNhbi1hdHRhY2gtbGFiZWw9ImZhbHNlIj4KKyAgICAgICAgPGRlZmF1bHQtY29uc3RyYWludHMgdnNpemUtcG9saWN5PSI2IiBoc2l6ZS1wb2xpY3k9IjYiIGFuY2hvcj0iMCIgZmlsbD0iMyIgLz4KKyAgICAgIDwvaXRlbT4KKyAgICAgIDxpdGVtIGNsYXNzPSJqYXZheC5zd2luZy5KUHJvZ3Jlc3NCYXIiIGljb249Ii9jb20vaW50ZWxsaWovdWlEZXNpZ25lci9pY29ucy9wcm9ncmVzc2Jhci5wbmciIHJlbW92YWJsZT0iZmFsc2UiIGF1dG8tY3JlYXRlLWJpbmRpbmc9InRydWUiIGNhbi1hdHRhY2gtbGFiZWw9ImZhbHNlIj4KKyAgICAgICAgPGRlZmF1bHQtY29uc3RyYWludHMgdnNpemUtcG9saWN5PSIwIiBoc2l6ZS1wb2xpY3k9IjYiIGFuY2hvcj0iMCIgZmlsbD0iMSIgLz4KKyAgICAgIDwvaXRlbT4KKyAgICAgIDxpdGVtIGNsYXNzPSJqYXZheC5zd2luZy5KVG9vbEJhciIgaWNvbj0iL2NvbS9pbnRlbGxpai91aURlc2lnbmVyL2ljb25zL3Rvb2xiYXIucG5nIiByZW1vdmFibGU9ImZhbHNlIiBhdXRvLWNyZWF0ZS1iaW5kaW5nPSJmYWxzZSIgY2FuLWF0dGFjaC1sYWJlbD0iZmFsc2UiPgorICAgICAgICA8ZGVmYXVsdC1jb25zdHJhaW50cyB2c2l6ZS1wb2xpY3k9IjAiIGhzaXplLXBvbGljeT0iNiIgYW5jaG9yPSIwIiBmaWxsPSIxIj4KKyAgICAgICAgICA8cHJlZmVycmVkLXNpemUgd2lkdGg9Ii0xIiBoZWlnaHQ9IjIwIiAvPgorICAgICAgICA8L2RlZmF1bHQtY29uc3RyYWludHM+CisgICAgICA8L2l0ZW0+CisgICAgICA8aXRlbSBjbGFzcz0iamF2YXguc3dpbmcuSlRvb2xCYXIkU2VwYXJhdG9yIiBpY29uPSIvY29tL2ludGVsbGlqL3VpRGVzaWduZXIvaWNvbnMvdG9vbGJhclNlcGFyYXRvci5wbmciIHJlbW92YWJsZT0iZmFsc2UiIGF1dG8tY3JlYXRlLWJpbmRpbmc9ImZhbHNlIiBjYW4tYXR0YWNoLWxhYmVsPSJmYWxzZSI+CisgICAgICAgIDxkZWZhdWx0LWNvbnN0cmFpbnRzIHZzaXplLXBvbGljeT0iMCIgaHNpemUtcG9saWN5PSIwIiBhbmNob3I9IjAiIGZpbGw9IjEiIC8+CisgICAgICA8L2l0ZW0+CisgICAgICA8aXRlbSBjbGFzcz0iamF2YXguc3dpbmcuSlNjcm9sbEJhciIgaWNvbj0iL2NvbS9pbnRlbGxpai91aURlc2lnbmVyL2ljb25zL3Njcm9sbGJhci5wbmciIHJlbW92YWJsZT0iZmFsc2UiIGF1dG8tY3JlYXRlLWJpbmRpbmc9InRydWUiIGNhbi1hdHRhY2gtbGFiZWw9ImZhbHNlIj4KKyAgICAgICAgPGRlZmF1bHQtY29uc3RyYWludHMgdnNpemUtcG9saWN5PSI2IiBoc2l6ZS1wb2xpY3k9IjAiIGFuY2hvcj0iMCIgZmlsbD0iMiIgLz4KKyAgICAgIDwvaXRlbT4KKyAgICA8L2dyb3VwPgorICA8L2NvbXBvbmVudD4KKyAgPGNvbXBvbmVudCBuYW1lPSJQcm9qZWN0TW9kdWxlTWFuYWdlciI+CisgICAgPG1vZHVsZXM+CisgICAgICA8bW9kdWxlIGZpbGV1cmw9ImZpbGU6Ly8kUFJPSkVDVF9ESVIkL0EvQS5pbWwiIGZpbGVwYXRoPSIkUFJPSkVDVF9ESVIkL0EvQS5pbWwiIC8+CisgICAgICA8bW9kdWxlIGZpbGV1cmw9ImZpbGU6Ly8kUFJPSkVDVF9ESVIkL0IvQi5pbWwiIGZpbGVwYXRoPSIkUFJPSkVDVF9ESVIkL0IvQi5pbWwiIC8+CisgICAgPC9tb2R1bGVzPgorICA8L2NvbXBvbmVudD4KKyAgPGNvbXBvbmVudCBuYW1lPSJQcm9qZWN0Um9vdE1hbmFnZXIiIHZlcnNpb249IjIiIGFzc2VydC1rZXl3b3JkPSJ0cnVlIiBqZGstMTU9InRydWUiIHByb2plY3QtamRrLW5hbWU9IjEuNSIgcHJvamVjdC1qZGstdHlwZT0iSmF2YVNESyI+CisgICAgPG91dHB1dCB1cmw9ImZpbGU6Ly8kUFJPSkVDVF9ESVIkL2NsYXNzZXMiIC8+CisgIDwvY29tcG9uZW50PgorICA8Y29tcG9uZW50IG5hbWU9IlByb2plY3RSdW5Db25maWd1cmF0aW9uTWFuYWdlciIgLz4KKyAgPGNvbXBvbmVudCBuYW1lPSJSbWljU2V0dGluZ3MiPgorICAgIDxvcHRpb24gbmFtZT0iSVNfRUFOQUJMRUQiIHZhbHVlPSJmYWxzZSIgLz4KKyAgICA8b3B0aW9uIG5hbWU9IkRFQlVHR0lOR19JTkZPIiB2YWx1ZT0idHJ1ZSIgLz4KKyAgICA8b3B0aW9uIG5hbWU9IkdFTkVSQVRFX05PX1dBUk5JTkdTIiB2YWx1ZT0iZmFsc2UiIC8+CisgICAgPG9wdGlvbiBuYW1lPSJHRU5FUkFURV9JSU9QX1NUVUJTIiB2YWx1ZT0iZmFsc2UiIC8+CisgICAgPG9wdGlvbiBuYW1lPSJBRERJVElPTkFMX09QVElPTlNfU1RSSU5HIiB2YWx1ZT0iIiAvPgorICA8L2NvbXBvbmVudD4KKyAgPGNvbXBvbmVudCBuYW1lPSJTdGFydGVhbVZjc0FkYXB0ZXIiIC8+CisgIDxjb21wb25lbnQgbmFtZT0iVnNzVmNzIiAvPgorICA8Y29tcG9uZW50IG5hbWU9ImxpYnJhcnlUYWJsZSI+CisgICAgPGxpYnJhcnkgbmFtZT0iTGliIj4KKyAgICAgIDxDTEFTU0VTPgorICAgICAgICA8cm9vdCB1cmw9ImphcjovLyRQUk9KRUNUX0RJUiQvbGliL2xpYi5qYXIhLyIgLz4KKyAgICAgIDwvQ0xBU1NFUz4KKyAgICAgIDxKQVZBRE9DIC8+CisgICAgICA8U09VUkNFUyAvPgorICAgIDwvbGlicmFyeT4KKyAgICA8bGlicmFyeSBuYW1lPSJNb2NrSnVuaXQiPgorICAgICAgPENMQVNTRVM+CisgICAgICAgIDxyb290IHVybD0iamFyOi8vJFBST0pFQ1RfRElSJC9saWIvbW9ja2p1bml0LmphciEvIiAvPgorICAgICAgPC9DTEFTU0VTPgorICAgICAgPEpBVkFET0MgLz4KKyAgICAgIDxTT1VSQ0VTIC8+CisgICAgPC9saWJyYXJ5PgorICA8L2NvbXBvbmVudD4KKyAgPGNvbXBvbmVudCBuYW1lPSJ1aWRlc2lnbmVyLWNvbmZpZ3VyYXRpb24iPgorICAgIDxvcHRpb24gbmFtZT0iSU5TVFJVTUVOVF9DTEFTU0VTIiB2YWx1ZT0idHJ1ZSIgLz4KKyAgICA8b3B0aW9uIG5hbWU9IkNPUFlfRk9STVNfUlVOVElNRV9UT19PVVRQVVQiIHZhbHVlPSJ0cnVlIiAvPgorICAgIDxvcHRpb24gbmFtZT0iREVGQVVMVF9MQVlPVVRfTUFOQUdFUiIgdmFsdWU9IkdyaWRMYXlvdXRNYW5hZ2VyIiAvPgorICA8L2NvbXBvbmVudD4KKyAgPFVzZWRQYXRoTWFjcm9zIC8+Cis8L3Byb2plY3Q+CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvb3ZlcnJpZGVNZXRob2QvYWZ0ZXJBYnN0cmFjdE1ldGhvZC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9vdmVycmlkZU1ldGhvZC9hZnRlckFic3RyYWN0TWV0aG9kLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzlkYzcyYwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvb3ZlcnJpZGVNZXRob2QvYWZ0ZXJBYnN0cmFjdE1ldGhvZC5qYXZhCkBAIC0wLDAgKzEsMTEgQEAKKy8vICJJbXBsZW1lbnQgbWV0aG9kICdmb28nIiAidHJ1ZSIKK2Fic3RyYWN0IGNsYXNzIFRlc3QgeworICBhYnN0cmFjdCB2b2lkIGZvbygpOworfQorCitjbGFzcyBUSW1wbGUgZXh0ZW5kcyBUZXN0IHsKKyAgICBAT3ZlcnJpZGUKKyAgICB2b2lkIGZvbygpIHsKKyAgICAgICAgPHNlbGVjdGlvbj4vL1RvIGNoYW5nZSBib2R5IG9mIGltcGxlbWVudGVkIG1ldGhvZHMgdXNlIEZpbGUgfCBTZXR0aW5ncyB8IEZpbGUgVGVtcGxhdGVzLjwvc2VsZWN0aW9uPgorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L292ZXJyaWRlTWV0aG9kL2FmdGVyUHJvdGVjdGVkTWV0aG9kLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L292ZXJyaWRlTWV0aG9kL2FmdGVyUHJvdGVjdGVkTWV0aG9kLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDVmMjBhMwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvb3ZlcnJpZGVNZXRob2QvYWZ0ZXJQcm90ZWN0ZWRNZXRob2QuamF2YQpAQCAtMCwwICsxLDExIEBACisvLyAiT3ZlcnJpZGUgbWV0aG9kICdmb28nIiAidHJ1ZSIKK2NsYXNzIFRlc3QgeworICBwcm90ZWN0ZWQgdm9pZCBmb28oKXt9Cit9CisKK2NsYXNzIFRJbXBsZSBleHRlbmRzIFRlc3QgeworICAgIEBPdmVycmlkZQorICAgIHByb3RlY3RlZCB2b2lkIGZvbygpIHsKKyAgICAgICAgPHNlbGVjdGlvbj5zdXBlci5mb28oKTsgICAgLy9UbyBjaGFuZ2UgYm9keSBvZiBvdmVycmlkZGVuIG1ldGhvZHMgdXNlIEZpbGUgfCBTZXR0aW5ncyB8IEZpbGUgVGVtcGxhdGVzLjwvc2VsZWN0aW9uPgorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L292ZXJyaWRlTWV0aG9kL2FmdGVyU2tpcFVucmVzb2x2ZWROdWxsYWJsZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9vdmVycmlkZU1ldGhvZC9hZnRlclNraXBVbnJlc29sdmVkTnVsbGFibGUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mOWVmNzI4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9vdmVycmlkZU1ldGhvZC9hZnRlclNraXBVbnJlc29sdmVkTnVsbGFibGUuamF2YQpAQCAtMCwwICsxLDEzIEBACitpbXBvcnQgb3JnLmpldGJyYWlucy5hbm5vdGF0aW9ucy5OdWxsYWJsZTsKKworLy8gIkltcGxlbWVudCBtZXRob2QgJ2ZvbyciICJ0cnVlIgorYWJzdHJhY3QgY2xhc3MgVGVzdCB7CisgIHB1YmxpYyBhYnN0cmFjdCB2b2lkIGZvbyhAb3JnLmpldGJyYWlucy5hbm5vdGF0aW9ucy5OdWxsYWJsZSBTdHJpbmcgYSk7Cit9CisKK2NsYXNzIFRJbXBsZSBleHRlbmRzIFRlc3QgeworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyB2b2lkIGZvbyhATnVsbGFibGUgU3RyaW5nIGEpIHsKKyAgICAgICAgPHNlbGVjdGlvbj4vL1RvIGNoYW5nZSBib2R5IG9mIGltcGxlbWVudGVkIG1ldGhvZHMgdXNlIEZpbGUgfCBTZXR0aW5ncyB8IEZpbGUgVGVtcGxhdGVzLjwvc2VsZWN0aW9uPgorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L292ZXJyaWRlTWV0aG9kL2JlZm9yZUFic3RyYWN0TWV0aG9kLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L292ZXJyaWRlTWV0aG9kL2JlZm9yZUFic3RyYWN0TWV0aG9kLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTA4MDk0ZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvb3ZlcnJpZGVNZXRob2QvYmVmb3JlQWJzdHJhY3RNZXRob2QuamF2YQpAQCAtMCwwICsxLDYgQEAKKy8vICJJbXBsZW1lbnQgbWV0aG9kICdmb28nIiAidHJ1ZSIKK2Fic3RyYWN0IGNsYXNzIFRlc3QgeworICBhYnN0cmFjdCB2b2lkIGY8Y2FyZXQ+b28oKTsKK30KKworY2xhc3MgVEltcGxlIGV4dGVuZHMgVGVzdCB7fQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvb3ZlcnJpZGVNZXRob2QvYmVmb3JlQWJzdHJhY3RNZXRob2QxLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L292ZXJyaWRlTWV0aG9kL2JlZm9yZUFic3RyYWN0TWV0aG9kMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgyMzBmYmMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L292ZXJyaWRlTWV0aG9kL2JlZm9yZUFic3RyYWN0TWV0aG9kMS5qYXZhCkBAIC0wLDAgKzEsOCBAQAorLy8gIkltcGxlbWVudCBtZXRob2QgJ2ZvbyciICJmYWxzZSIKK2Fic3RyYWN0IGNsYXNzIFRlc3QgeworICBhYnN0cmFjdCB2b2lkIGY8Y2FyZXQ+b28oKTsKK30KKworY2xhc3MgVEltcGxlIGV4dGVuZHMgVGVzdCB7CisgIHZvaWQgZm9vKCkge30KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L292ZXJyaWRlTWV0aG9kL2JlZm9yZUFic3RyYWN0TWV0aG9kMi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9vdmVycmlkZU1ldGhvZC9iZWZvcmVBYnN0cmFjdE1ldGhvZDIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYjNjYjY3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9vdmVycmlkZU1ldGhvZC9iZWZvcmVBYnN0cmFjdE1ldGhvZDIuamF2YQpAQCAtMCwwICsxLDQgQEAKKy8vICJJbXBsZW1lbnQgbWV0aG9kICdmb28nIiAiZmFsc2UiCithYnN0cmFjdCBjbGFzcyBUZXN0IHsKKyAgYWJzdHJhY3Qgdm9pZCBmPGNhcmV0Pm9vKCk7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9vdmVycmlkZU1ldGhvZC9iZWZvcmVFeGlzdEJ1dFByaXZhdGUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvb3ZlcnJpZGVNZXRob2QvYmVmb3JlRXhpc3RCdXRQcml2YXRlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDY2ODhhMAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvb3ZlcnJpZGVNZXRob2QvYmVmb3JlRXhpc3RCdXRQcml2YXRlLmphdmEKQEAgLTAsMCArMSw4IEBACisvLyAiSW1wbGVtZW50IG1ldGhvZCAnZm9vJyIgImZhbHNlIgorYWJzdHJhY3QgY2xhc3MgVGVzdCB7CisgIHB1YmxpYyBhYnN0cmFjdCB2b2lkIGY8Y2FyZXQ+b28oKTsKK30KKworY2xhc3MgVEltcGxlIGV4dGVuZHMgVGVzdCB7CisgIHByaXZhdGUgdm9pZCBmb28oKXt9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9vdmVycmlkZU1ldGhvZC9iZWZvcmVQcml2YXRlTWV0aG9kLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L292ZXJyaWRlTWV0aG9kL2JlZm9yZVByaXZhdGVNZXRob2QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMDZhZDMyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9vdmVycmlkZU1ldGhvZC9iZWZvcmVQcml2YXRlTWV0aG9kLmphdmEKQEAgLTAsMCArMSw2IEBACisvLyAiT3ZlcnJpZGUgbWV0aG9kICdmb28nIiAiZmFsc2UiCitjbGFzcyBUZXN0IHsKKyAgcHJpdmF0ZSB2b2lkIGY8Y2FyZXQ+b28oKXt9Cit9CisKK2NsYXNzIFRJbXBsZSBleHRlbmRzIFRlc3Qge30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L292ZXJyaWRlTWV0aG9kL2JlZm9yZVByb3RlY3RlZE1ldGhvZC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9vdmVycmlkZU1ldGhvZC9iZWZvcmVQcm90ZWN0ZWRNZXRob2QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMzlkODUwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9vdmVycmlkZU1ldGhvZC9iZWZvcmVQcm90ZWN0ZWRNZXRob2QuamF2YQpAQCAtMCwwICsxLDYgQEAKKy8vICJPdmVycmlkZSBtZXRob2QgJ2ZvbyciICJ0cnVlIgorY2xhc3MgVGVzdCB7CisgIHByb3RlY3RlZCB2b2lkIGY8Y2FyZXQ+b28oKXt9Cit9CisKK2NsYXNzIFRJbXBsZSBleHRlbmRzIFRlc3Qge30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L292ZXJyaWRlTWV0aG9kL2JlZm9yZVByb3RlY3RlZE1ldGhvZENhcmV0SW5zaWRlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L292ZXJyaWRlTWV0aG9kL2JlZm9yZVByb3RlY3RlZE1ldGhvZENhcmV0SW5zaWRlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjYyNjg4ZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvb3ZlcnJpZGVNZXRob2QvYmVmb3JlUHJvdGVjdGVkTWV0aG9kQ2FyZXRJbnNpZGUuamF2YQpAQCAtMCwwICsxLDYgQEAKKy8vICJPdmVycmlkZSBtZXRob2QgJ2ZvbyciICJmYWxzZSIKK2NsYXNzIFRlc3QgeworICBwcm90ZWN0ZWQgdm9pZCBmb28oKXs8Y2FyZXQ+fQorfQorCitjbGFzcyBUSW1wbGUgZXh0ZW5kcyBUZXN0IHt9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9vdmVycmlkZU1ldGhvZC9iZWZvcmVTa2lwVW5yZXNvbHZlZE51bGxhYmxlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L292ZXJyaWRlTWV0aG9kL2JlZm9yZVNraXBVbnJlc29sdmVkTnVsbGFibGUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MmQ1MTVlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9vdmVycmlkZU1ldGhvZC9iZWZvcmVTa2lwVW5yZXNvbHZlZE51bGxhYmxlLmphdmEKQEAgLTAsMCArMSw2IEBACisvLyAiSW1wbGVtZW50IG1ldGhvZCAnZm9vJyIgInRydWUiCithYnN0cmFjdCBjbGFzcyBUZXN0IHsKKyAgcHVibGljIGFic3RyYWN0IHZvaWQgZjxjYXJldD5vbyhAb3JnLmpldGJyYWlucy5hbm5vdGF0aW9ucy5OdWxsYWJsZSBTdHJpbmcgYSk7Cit9CisKK2NsYXNzIFRJbXBsZSBleHRlbmRzIFRlc3Qge30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L292ZXJyaWRlTWV0aG9kL2JlZm9yZVN0YXRpY01ldGhvZC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9vdmVycmlkZU1ldGhvZC9iZWZvcmVTdGF0aWNNZXRob2QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYjU1NTYwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9vdmVycmlkZU1ldGhvZC9iZWZvcmVTdGF0aWNNZXRob2QuamF2YQpAQCAtMCwwICsxLDYgQEAKKy8vICJPdmVycmlkZSBtZXRob2QgJ2ZvbyciICJmYWxzZSIKK2Fic3RyYWN0IGNsYXNzIFRlc3QgeworICBwcm90ZWN0ZWQgc3RhdGljIHZvaWQgZm88Y2FyZXQ+bygpe30KK30KKworY2xhc3MgVEltcGxlIGV4dGVuZHMgVGVzdCB7fQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvcGVybXV0ZUFyZ3VtZW50cy9hZnRlckN0ci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9wZXJtdXRlQXJndW1lbnRzL2FmdGVyQ3RyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjcyMWJmMwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvcGVybXV0ZUFyZ3VtZW50cy9hZnRlckN0ci5qYXZhCkBAIC0wLDAgKzEsNyBAQAorLy8gIlBlcm11dGUgYXJndW1lbnRzIiAidHJ1ZSIKK3B1YmxpYyBjbGFzcyBTIHsKKyAgICBwdWJsaWMgUyhpbnQgaSwgU3RyaW5nIHMpe30KKyAgICB2b2lkIGYoKSB7CisgICAgICAgIG5ldyBTKDEsICIiKTxjYXJldD47CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9wZXJtdXRlQXJndW1lbnRzL2FmdGVyU2hpZnRMZWZ0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3Blcm11dGVBcmd1bWVudHMvYWZ0ZXJTaGlmdExlZnQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MTcyNGQ4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9wZXJtdXRlQXJndW1lbnRzL2FmdGVyU2hpZnRMZWZ0LmphdmEKQEAgLTAsMCArMSw2IEBACisvLyAiUGVybXV0ZSBhcmd1bWVudHMiICJ0cnVlIgorcHVibGljIGNsYXNzIFMgeworICAgIHZvaWQgZihTIGssIGludCBpLCBTdHJpbmcgcywgT2JqZWN0IG8pIHsKKyAgICAgICAgZih0aGlzLCAxLCAiIiwgbmV3IE9iamVjdCgpKTs8Y2FyZXQ+CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9wZXJtdXRlQXJndW1lbnRzL2FmdGVyU2hpZnRSaWdodC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9wZXJtdXRlQXJndW1lbnRzL2FmdGVyU2hpZnRSaWdodC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY5ZmZhNzMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3Blcm11dGVBcmd1bWVudHMvYWZ0ZXJTaGlmdFJpZ2h0LmphdmEKQEAgLTAsMCArMSw3IEBACisvLyAiUGVybXV0ZSBhcmd1bWVudHMiICJ0cnVlIgorcHVibGljIGNsYXNzIFMgeworICAgIHZvaWQgZihTIGssIGludCBpLCBTdHJpbmcgcywgT2JqZWN0IG8pIHsKKyAgICAgICAgZih0aGlzLCIiLG5ldyBPYmplY3QoKSwxKTsKKyAgICAgICAgPGNhcmV0PmYodGhpcywgMSwgIiIsIG5ldyBPYmplY3QoKSk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9wZXJtdXRlQXJndW1lbnRzL2FmdGVyU3dhcC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9wZXJtdXRlQXJndW1lbnRzL2FmdGVyU3dhcC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJmNTIwZjQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3Blcm11dGVBcmd1bWVudHMvYWZ0ZXJTd2FwLmphdmEKQEAgLTAsMCArMSw2IEBACisvLyAiUGVybXV0ZSBhcmd1bWVudHMiICJ0cnVlIgorcHVibGljIGNsYXNzIFMgeworICAgIHZvaWQgZihTIGssIGludCBpLCBTdHJpbmcgcywgT2JqZWN0IG8pIHsKKyAgICAgICAgZih0aGlzLDEsICIiLG5ldyBPYmplY3QoKSk7PGNhcmV0PgorICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvcGVybXV0ZUFyZ3VtZW50cy9iZWZvcmVDdHIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvcGVybXV0ZUFyZ3VtZW50cy9iZWZvcmVDdHIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yOTYwZGVhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9wZXJtdXRlQXJndW1lbnRzL2JlZm9yZUN0ci5qYXZhCkBAIC0wLDAgKzEsNyBAQAorLy8gIlBlcm11dGUgYXJndW1lbnRzIiAidHJ1ZSIKK3B1YmxpYyBjbGFzcyBTIHsKKyAgICBwdWJsaWMgUyhpbnQgaSwgU3RyaW5nIHMpe30KKyAgICB2b2lkIGYoKSB7CisgICAgICAgIG5ldyBTKCIiLDEpPGNhcmV0PjsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3Blcm11dGVBcmd1bWVudHMvYmVmb3JlU2hpZnRMZWZ0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3Blcm11dGVBcmd1bWVudHMvYmVmb3JlU2hpZnRMZWZ0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmFkYWRjOQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvcGVybXV0ZUFyZ3VtZW50cy9iZWZvcmVTaGlmdExlZnQuamF2YQpAQCAtMCwwICsxLDYgQEAKKy8vICJQZXJtdXRlIGFyZ3VtZW50cyIgInRydWUiCitwdWJsaWMgY2xhc3MgUyB7CisgICAgdm9pZCBmKFMgaywgaW50IGksIFN0cmluZyBzLCBPYmplY3QgbykgeworICAgICAgICBmKHRoaXMsIiIsbmV3IE9iamVjdCgpLDEpOzxjYXJldD4KKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3Blcm11dGVBcmd1bWVudHMvYmVmb3JlU2hpZnRSaWdodC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9wZXJtdXRlQXJndW1lbnRzL2JlZm9yZVNoaWZ0UmlnaHQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45YmY3OWEyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9wZXJtdXRlQXJndW1lbnRzL2JlZm9yZVNoaWZ0UmlnaHQuamF2YQpAQCAtMCwwICsxLDcgQEAKKy8vICJQZXJtdXRlIGFyZ3VtZW50cyIgInRydWUiCitwdWJsaWMgY2xhc3MgUyB7CisgICAgdm9pZCBmKFMgaywgaW50IGksIFN0cmluZyBzLCBPYmplY3QgbykgeworICAgICAgICBmKHRoaXMsIiIsbmV3IE9iamVjdCgpLDEpOworICAgICAgICA8Y2FyZXQ+Zih0aGlzLG5ldyBPYmplY3QoKSwxLCIiKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3Blcm11dGVBcmd1bWVudHMvYmVmb3JlU3dhcC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9wZXJtdXRlQXJndW1lbnRzL2JlZm9yZVN3YXAuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zODUwMmU1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9wZXJtdXRlQXJndW1lbnRzL2JlZm9yZVN3YXAuamF2YQpAQCAtMCwwICsxLDYgQEAKKy8vICJQZXJtdXRlIGFyZ3VtZW50cyIgInRydWUiCitwdWJsaWMgY2xhc3MgUyB7CisgICAgdm9pZCBmKFMgaywgaW50IGksIFN0cmluZyBzLCBPYmplY3QgbykgeworICAgICAgICBmKCIiLDEsdGhpcyxuZXcgT2JqZWN0KCkpOzxjYXJldD4KKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3B1bGxVcC9hZnRlcjEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvcHVsbFVwL2FmdGVyMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhhM2E4MjQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3B1bGxVcC9hZnRlcjEuamF2YQpAQCAtMCwwICsxLDkgQEAKKy8vICJQdWxsIG1ldGhvZCAnZm9vJyB0byAnSW50JyIgInRydWUiCitwdWJsaWMgY2xhc3MgVGVzdCBpbXBsZW1lbnRzIEludCB7CisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIHZvaWQgZm9vKCl7fQorfQorCitpbnRlcmZhY2UgSW50IHsKKyAgICB2b2lkIGZvbygpOworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9wdWxsVXAvYWZ0ZXIzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3B1bGxVcC9hZnRlcjMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNmZjM2RhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9wdWxsVXAvYWZ0ZXIzLmphdmEKQEAgLTAsMCArMSwxNSBAQAorLy8gIlB1bGwgbWV0aG9kICdmb28nIHVwIGFuZCBtYWtlIGl0IGFic3RyYWN0IiAidHJ1ZSIKK3B1YmxpYyBjbGFzcyBUZXN0eworICAgIHZvaWQgbWFpbigpeworICAgICAgICBuZXcgSW50KCl7CisgICAgICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgICAgIHZvaWQgZm9vKCl7CisKKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKyAgICB9Cit9CisKK2Fic3RyYWN0IGNsYXNzIEludCB7CisgICAgYWJzdHJhY3Qgdm9pZCBmb28oKTsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3B1bGxVcC9hZnRlcjYuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvcHVsbFVwL2FmdGVyNi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY5MzRmYjcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3B1bGxVcC9hZnRlcjYuamF2YQpAQCAtMCwwICsxLDE0IEBACisvLyAiUHVsbCBtZXRob2QgJ2ZvbycgdG8gJ0ZvbycgYW5kIG1ha2UgaXQgYWJzdHJhY3QiICJ0cnVlIgorcHVibGljIGNsYXNzIFRlc3QgeworICB2b2lkIGJhcigpIHsKKyAgICBhYnN0cmFjdCBjbGFzcyBGb28geworICAgICAgICBhYnN0cmFjdCB2b2lkIGZvbygpOworICAgIH0KKyAgICBjbGFzcyBGb29JbXBsIGV4dGVuZHMgRm9vIHsKKyAgICAgIEBPdmVycmlkZQorICAgICAgdm9pZCBmb28oKXt9CisgICAgfQorICB9Cit9CisKKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9wdWxsVXAvYmVmb3JlMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9wdWxsVXAvYmVmb3JlMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc1Y2JiOTJkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9wdWxsVXAvYmVmb3JlMS5qYXZhCkBAIC0wLDAgKzEsNyBAQAorLy8gIlB1bGwgbWV0aG9kICdmb28nIHRvICdJbnQnIiAidHJ1ZSIKK3B1YmxpYyBjbGFzcyBUZXN0IGltcGxlbWVudHMgSW50IHsKKyAgICBAT3ZlcnI8Y2FyZXQ+aWRlCisgICAgdm9pZCBmb28oKXt9Cit9CisKK2ludGVyZmFjZSBJbnQge30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvcHVsbFVwL2JlZm9yZTIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvcHVsbFVwL2JlZm9yZTIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZTk1NzUwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9wdWxsVXAvYmVmb3JlMi5qYXZhCkBAIC0wLDAgKzEsNyBAQAorLy8gIlB1bGwgbWV0aG9kICdmb28nIHRvICdMaXN0JyIgImZhbHNlIgoraW1wb3J0IGphdmEudXRpbC5MaXN0OworCitwdWJsaWMgYWJzdHJhY3QgY2xhc3MgVGVzdCBpbXBsZW1lbnRzIExpc3R7CisgICAgQE92ZXJyPGNhcmV0PmlkZQorICAgIHZvaWQgZm9vKCl7fQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9wdWxsVXAvYmVmb3JlMy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9wdWxsVXAvYmVmb3JlMy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY3NDhhYjkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3B1bGxVcC9iZWZvcmUzLmphdmEKQEAgLTAsMCArMSwxMyBAQAorLy8gIlB1bGwgbWV0aG9kICdmb28nIHVwIGFuZCBtYWtlIGl0IGFic3RyYWN0IiAidHJ1ZSIKK3B1YmxpYyBjbGFzcyBUZXN0eworICAgIHZvaWQgbWFpbigpeworICAgICAgICBuZXcgSW50KCl7CisgICAgICAgICAgICBAT3ZlcnI8Y2FyZXQ+aWRlCisgICAgICAgICAgICB2b2lkIGZvbygpeworCisgICAgICAgICAgICB9CisgICAgICAgIH07CisgICAgfQorfQorCitjbGFzcyBJbnQge30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3B1bGxVcC9iZWZvcmU0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3B1bGxVcC9iZWZvcmU0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGRiZDY2YwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvcHVsbFVwL2JlZm9yZTQuamF2YQpAQCAtMCwwICsxLDEzIEBACisvLyAiRXh0cmFjdCBpbnRlcmZhY2UiICJmYWxzZSIKK3B1YmxpYyBjbGFzcyBUZXN0eworICAgIHZvaWQgbWFpbigpeworICAgICAgICBuZXcgSW50KCl7CisgICAgICAgICAgICBAT3ZlcnI8Y2FyZXQ+aWRlCisgICAgICAgICAgICB2b2lkIGZvbygpeworCisgICAgICAgICAgICB9CisgICAgICAgIH07CisgICAgfQorfQorCitjbGFzcyBJbnQge30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3B1bGxVcC9iZWZvcmU1LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3B1bGxVcC9iZWZvcmU1LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmRkMjE5ZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvcHVsbFVwL2JlZm9yZTUuamF2YQpAQCAtMCwwICsxLDcgQEAKK2ltcG9ydCBqYXZhLnV0aWwuQXJyYXlMaXN0OworcHVibGljIGFic3RyYWN0IGNsYXNzIFRlc3QgZXh0ZW5kcyBBcnJheUxpc3Q8U3RyaW5nPiBpbXBsZW1lbnRzIEludCB7CisgICAgQE92ZXJyPGNhcmV0PmlkZQorICAgIHZvaWQgZm9vKCl7fQorfQorCitpbnRlcmZhY2UgSW50IHt9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3B1bGxVcC9iZWZvcmU2LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3B1bGxVcC9iZWZvcmU2LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmNlZmE3YgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvcHVsbFVwL2JlZm9yZTYuamF2YQpAQCAtMCwwICsxLDEyIEBACisvLyAiUHVsbCBtZXRob2QgJ2ZvbycgdG8gJ0ZvbycgYW5kIG1ha2UgaXQgYWJzdHJhY3QiICJ0cnVlIgorcHVibGljIGNsYXNzIFRlc3QgeworICB2b2lkIGJhcigpIHsKKyAgICBjbGFzcyBGb28ge30KKyAgICBjbGFzcyBGb29JbXBsIGV4dGVuZHMgRm9vIHsKKyAgICAgIEBPdmVycjxjYXJldD5pZGUKKyAgICAgIHZvaWQgZm9vKCl7fQorICAgIH0KKyAgfQorfQorCisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvcHVzaENvbmRpdGlvbkluQ2FsbC9hZnRlcjEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvcHVzaENvbmRpdGlvbkluQ2FsbC9hZnRlcjEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNjBkZGEzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9wdXNoQ29uZGl0aW9uSW5DYWxsL2FmdGVyMS5qYXZhCkBAIC0wLDAgKzEsNyBAQAorLy8gIlB1c2ggY29uZGl0aW9uICdiJyBpbnNpZGUgbWV0aG9kIGNhbGwiICJ0cnVlIgorY2xhc3MgRm9vIHsKKyAgdm9pZCBiYXIoYm9vbGVhbiBiKXsKKyAgICBTdHJpbmcgcyA9IGZvbyhiID8gInRydWUiIDogImZhbHNlIik7CisgIH0KKyAgU3RyaW5nIGZvbyhTdHJpbmcgcCkge3JldHVybiBwO30KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3B1c2hDb25kaXRpb25JbkNhbGwvYmVmb3JlMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9wdXNoQ29uZGl0aW9uSW5DYWxsL2JlZm9yZTEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMjcwNWEyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9wdXNoQ29uZGl0aW9uSW5DYWxsL2JlZm9yZTEuamF2YQpAQCAtMCwwICsxLDcgQEAKKy8vICJQdXNoIGNvbmRpdGlvbiAnYicgaW5zaWRlIG1ldGhvZCBjYWxsIiAidHJ1ZSIKK2NsYXNzIEZvbyB7CisgIHZvaWQgYmFyKGJvb2xlYW4gYil7CisgICAgU3RyaW5nIHMgPSBiIDxjYXJldD4/IGZvbygidHJ1ZSIpIDogZm9vKCJmYWxzZSIpOworICB9CisgIFN0cmluZyBmb28oU3RyaW5nIHApIHtyZXR1cm4gcDt9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9wdXNoQ29uZGl0aW9uSW5DYWxsL2JlZm9yZURpZmZlcmVudE1ldGhvZHMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvcHVzaENvbmRpdGlvbkluQ2FsbC9iZWZvcmVEaWZmZXJlbnRNZXRob2RzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmNkMDZkNAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvcHVzaENvbmRpdGlvbkluQ2FsbC9iZWZvcmVEaWZmZXJlbnRNZXRob2RzLmphdmEKQEAgLTAsMCArMSw4IEBACisvLyAiUHVzaCBjb25kaXRpb24gJ2InIGluc2lkZSBtZXRob2QgY2FsbCIgImZhbHNlIgorY2xhc3MgRm9vIHsKKyAgdm9pZCBiYXIoYm9vbGVhbiBiKXsKKyAgICBTdHJpbmcgcyA9IGIgPGNhcmV0Pj8gZm9vKCJ0cnVlIikgOiBmb28oZmFsc2UpOworICB9CisgIFN0cmluZyBmb28oU3RyaW5nIHApIHtyZXR1cm4gcDt9CisgIFN0cmluZyBmb28oYm9vbGVhbiBiKSB7cmV0dXJuICJmYWxzZSI7fQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvcHVzaENvbmRpdGlvbkluQ2FsbC9iZWZvcmVNdWx0aXBsZUFyZ3MuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvcHVzaENvbmRpdGlvbkluQ2FsbC9iZWZvcmVNdWx0aXBsZUFyZ3MuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZTk5ZmI3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9wdXNoQ29uZGl0aW9uSW5DYWxsL2JlZm9yZU11bHRpcGxlQXJncy5qYXZhCkBAIC0wLDAgKzEsNyBAQAorLy8gIlB1c2ggY29uZGl0aW9uICdiJyBpbnNpZGUgbWV0aG9kIGNhbGwiICJmYWxzZSIKK2NsYXNzIEZvbyB7CisgIHZvaWQgYmFyKGJvb2xlYW4gYil7CisgICAgU3RyaW5nIHMgPSBiIDxjYXJldD4/IGZvbygidHJ1ZSIsIHRydWUpIDogZm9vKCJmYWxzZSIsIGZhbHNlKTsKKyAgfQorICBTdHJpbmcgZm9vKFN0cmluZyBwLCBib29sZWFuIGIpIHtyZXR1cm4gcDt9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9xdWFsaWZ5VGhpcy9hZnRlcjEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvcXVhbGlmeVRoaXMvYWZ0ZXIxLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGE2NWY4OQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvcXVhbGlmeVRoaXMvYWZ0ZXIxLmphdmEKQEAgLTAsMCArMSwxMCBAQAorLy8gIlF1YWxpZnkgdGhpcyBleHByZXNzaW9uIHdpdGggJ1Rlc3QnIiAidHJ1ZSIKK2NsYXNzIFRlc3QgeworICB2b2lkIGZvbyhUZXN0IHQpe30KKyAgY2xhc3MgRm9vIHsKKyAgICBGb28oKSB7CisgICAgICBmb28oVGVzdC50aGlzKTsKKyAgICB9CisgIH0KK30KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9xdWFsaWZ5VGhpcy9hZnRlcjUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvcXVhbGlmeVRoaXMvYWZ0ZXI1LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzI3MGE1ZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvcXVhbGlmeVRoaXMvYWZ0ZXI1LmphdmEKQEAgLTAsMCArMSwxOCBAQAorLy8gIlF1YWxpZnkgdGhpcyBleHByZXNzaW9uIHdpdGggJ1Rlc3QuRm9vJyIgInRydWUiCitjbGFzcyBUZXN0IHsKKyAgdm9pZCBmb28oRm9vIG0pIHsKKyAgfQorCisKKyAgY2xhc3MgRm9vIHsKKyAgICB2b2lkIGJhcigpIHsKKyAgICAgIG5ldyBSdW5uYWJsZSgpIHsKKyAgICAgICAgQE92ZXJyaWRlCisgICAgICAgIHB1YmxpYyB2b2lkIHJ1bigpIHsKKyAgICAgICAgICBmb28oRm9vLnRoaXMpOworICAgICAgICB9CisgICAgICB9LnJ1bigpOworICAgIH0KKyAgfQorfQorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3F1YWxpZnlUaGlzL2JlZm9yZTEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvcXVhbGlmeVRoaXMvYmVmb3JlMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY0YTk4MzMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3F1YWxpZnlUaGlzL2JlZm9yZTEuamF2YQpAQCAtMCwwICsxLDEwIEBACisvLyAiUXVhbGlmeSB0aGlzIGV4cHJlc3Npb24gd2l0aCAnVGVzdCciICJ0cnVlIgorY2xhc3MgVGVzdCB7CisgIHZvaWQgZm9vKFRlc3QgdCl7fQorICBjbGFzcyBGb28geworICAgIEZvbygpIHsKKyAgICAgIGZvbyh0aGk8Y2FyZXQ+cyk7CisgICAgfQorICB9Cit9CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvcXVhbGlmeVRoaXMvYmVmb3JlMi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9xdWFsaWZ5VGhpcy9iZWZvcmUyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTNmNmFhYwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvcXVhbGlmeVRoaXMvYmVmb3JlMi5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKKy8vICJRdWFsaWZ5IHRoaXMgZXhwcmVzc2lvbiB3aXRoICdUZXN0JyIgImZhbHNlIgorY2xhc3MgVGVzdCB7CisgIHZvaWQgZm9vKFRlc3QgdCl7fQorICBzdGF0aWMgY2xhc3MgRm9vIHsKKyAgICBGb28oKSB7CisgICAgICBmb28odGhpPGNhcmV0PnMpOworICAgIH0KKyAgfQorfQorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3F1YWxpZnlUaGlzL2JlZm9yZTMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvcXVhbGlmeVRoaXMvYmVmb3JlMy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY3OTRiOWQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3F1YWxpZnlUaGlzL2JlZm9yZTMuamF2YQpAQCAtMCwwICsxLDEwIEBACisvLyAiUXVhbGlmeSB0aGlzIGV4cHJlc3Npb24gd2l0aCAnVGVzdCciICJmYWxzZSIKK2NsYXNzIFRlc3QgeworICB2b2lkIGZvbyhTdHJpbmcgdCl7fQorICBzdGF0aWMgY2xhc3MgRm9vIHsKKyAgICBGb28oKSB7CisgICAgICBmb28odGhpPGNhcmV0PnMpOworICAgIH0KKyAgfQorfQorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3F1YWxpZnlUaGlzL2JlZm9yZTQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvcXVhbGlmeVRoaXMvYmVmb3JlNC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ5NzNhMzYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3F1YWxpZnlUaGlzL2JlZm9yZTQuamF2YQpAQCAtMCwwICsxLDI0IEBACisvLyAiUXVhbGlmeSB0aGlzIGV4cHJlc3Npb24gd2l0aCAnVGVzdC5Gb28nIiAiZmFsc2UiCitjbGFzcyBUZXN0IHsKKyAgcHVibGljIHZvaWQgbWFpbigpIHsKKyAgICBuZXcgRm9vKCkgeworICAgICAgdm9pZCBiYXIoKSB7CisgICAgICAgIG5ldyBSdW5uYWJsZSgpIHsKKyAgICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgICBwdWJsaWMgdm9pZCBydW4oKSB7CisgICAgICAgICAgICBmb28odGg8Y2FyZXQ+aXMpOworICAgICAgICAgIH0KKyAgICAgICAgfS5ydW4oKTsKKyAgICAgIH0KKyAgICB9LnRvU3RyaW5nKCk7CisgIH0KKworICB2b2lkIGZvbyhGb28gbSkgeworICB9CisKKworICBjbGFzcyBGb28geworCisgIH0KK30KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9xdWFsaWZ5VGhpcy9iZWZvcmU1LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3F1YWxpZnlUaGlzL2JlZm9yZTUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NTcxNzRkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9xdWFsaWZ5VGhpcy9iZWZvcmU1LmphdmEKQEAgLTAsMCArMSwxOCBAQAorLy8gIlF1YWxpZnkgdGhpcyBleHByZXNzaW9uIHdpdGggJ1Rlc3QuRm9vJyIgInRydWUiCitjbGFzcyBUZXN0IHsKKyAgdm9pZCBmb28oRm9vIG0pIHsKKyAgfQorCisKKyAgY2xhc3MgRm9vIHsKKyAgICB2b2lkIGJhcigpIHsKKyAgICAgIG5ldyBSdW5uYWJsZSgpIHsKKyAgICAgICAgQE92ZXJyaWRlCisgICAgICAgIHB1YmxpYyB2b2lkIHJ1bigpIHsKKyAgICAgICAgICBmb28odGg8Y2FyZXQ+aXMpOworICAgICAgICB9CisgICAgICB9LnJ1bigpOworICAgIH0KKyAgfQorfQorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3F1YWxpZnlXaXRoVGhpc0luU3VwZXJDYWxsL2FmdGVyUXVhbGlmeVdpdGhUaGlzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3F1YWxpZnlXaXRoVGhpc0luU3VwZXJDYWxsL2FmdGVyUXVhbGlmeVdpdGhUaGlzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2E1MTg2MgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvcXVhbGlmeVdpdGhUaGlzSW5TdXBlckNhbGwvYWZ0ZXJRdWFsaWZ5V2l0aFRoaXMuamF2YQpAQCAtMCwwICsxLDE1IEBACisvLyAiUXVhbGlmeSB3aXRoIFRlc3QudGhpcyIgInRydWUiCitjbGFzcyBUZXN0IHsKKyAgU3RyaW5nIG15U3RyOworICBjbGFzcyBGb28gZXh0ZW5kcyBTdXBlciB7CisgICAgRm9vKCkgeworICAgICAgc3VwZXIoVGVzdC50aGlzLm15U3RyKTsKKyAgICB9CisgIH0KK30KKworY2xhc3MgU3VwZXIgeworICBwcm90ZWN0ZWQgU3RyaW5nIG15U3RyOworICBTdXBlcihTdHJpbmcgcykgeworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9xdWFsaWZ5V2l0aFRoaXNJblN1cGVyQ2FsbC9iZWZvcmVBbHJlYWR5UXVhbGlmaWVkLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3F1YWxpZnlXaXRoVGhpc0luU3VwZXJDYWxsL2JlZm9yZUFscmVhZHlRdWFsaWZpZWQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MTZiNDI5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9xdWFsaWZ5V2l0aFRoaXNJblN1cGVyQ2FsbC9iZWZvcmVBbHJlYWR5UXVhbGlmaWVkLmphdmEKQEAgLTAsMCArMSwxNSBAQAorLy8gIlF1YWxpZnkgd2l0aCBUZXN0LnRoaXMiICJmYWxzZSIKK2NsYXNzIFRlc3QgeworICBTdHJpbmcgbXlTdHI7CisgIGNsYXNzIEZvbyBleHRlbmRzIFN1cGVyIHsKKyAgICBGb28oVGVzdCB0KSB7CisgICAgICBzdXBlcih0Lm15PGNhcmV0PlN0cik7CisgICAgfQorICB9Cit9CisKK2NsYXNzIFN1cGVyIHsKKyAgcHJvdGVjdGVkIFN0cmluZyBteVN0cjsKKyAgU3VwZXIoU3RyaW5nIHMpIHsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvcXVhbGlmeVdpdGhUaGlzSW5TdXBlckNhbGwvYmVmb3JlTm9DYW5kaWRhdGUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvcXVhbGlmeVdpdGhUaGlzSW5TdXBlckNhbGwvYmVmb3JlTm9DYW5kaWRhdGUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZWJkMDQzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9xdWFsaWZ5V2l0aFRoaXNJblN1cGVyQ2FsbC9iZWZvcmVOb0NhbmRpZGF0ZS5qYXZhCkBAIC0wLDAgKzEsMTQgQEAKKy8vICJRdWFsaWZ5IHdpdGggVGVzdC50aGlzIiAiZmFsc2UiCitjbGFzcyBUZXN0IHsKKyAgY2xhc3MgRm9vIGV4dGVuZHMgU3VwZXIgeworICAgIEZvbygpIHsKKyAgICAgIHN1cGVyKG15PGNhcmV0PlN0cik7CisgICAgfQorICB9Cit9CisKK2NsYXNzIFN1cGVyIHsKKyAgcHJvdGVjdGVkIFN0cmluZyBteVN0cjsKKyAgU3VwZXIoU3RyaW5nIHMpIHsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvcXVhbGlmeVdpdGhUaGlzSW5TdXBlckNhbGwvYmVmb3JlUXVhbGlmeVdpdGhUaGlzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3F1YWxpZnlXaXRoVGhpc0luU3VwZXJDYWxsL2JlZm9yZVF1YWxpZnlXaXRoVGhpcy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlkNTc5YWEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3F1YWxpZnlXaXRoVGhpc0luU3VwZXJDYWxsL2JlZm9yZVF1YWxpZnlXaXRoVGhpcy5qYXZhCkBAIC0wLDAgKzEsMTUgQEAKKy8vICJRdWFsaWZ5IHdpdGggVGVzdC50aGlzIiAidHJ1ZSIKK2NsYXNzIFRlc3QgeworICBTdHJpbmcgbXlTdHI7CisgIGNsYXNzIEZvbyBleHRlbmRzIFN1cGVyIHsKKyAgICBGb28oKSB7CisgICAgICBzdXBlcihteTxjYXJldD5TdHIpOworICAgIH0KKyAgfQorfQorCitjbGFzcyBTdXBlciB7CisgIHByb3RlY3RlZCBTdHJpbmcgbXlTdHI7CisgIFN1cGVyKFN0cmluZyBzKSB7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3F1YWxpZnlXaXRoVGhpc0luU3VwZXJDYWxsL2JlZm9yZVRoaXNJbmFjY2Vzc2libGUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvcXVhbGlmeVdpdGhUaGlzSW5TdXBlckNhbGwvYmVmb3JlVGhpc0luYWNjZXNzaWJsZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZhNWJhNTAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3F1YWxpZnlXaXRoVGhpc0luU3VwZXJDYWxsL2JlZm9yZVRoaXNJbmFjY2Vzc2libGUuamF2YQpAQCAtMCwwICsxLDE1IEBACisvLyAiUXVhbGlmeSB3aXRoIFRlc3QudGhpcyIgImZhbHNlIgorY2xhc3MgVGVzdCB7CisgIFN0cmluZyBteVN0cjsKKyAgc3RhdGljIGNsYXNzIEZvbyBleHRlbmRzIFN1cGVyIHsKKyAgICBGb28oKSB7CisgICAgICBzdXBlcihteTxjYXJldD5TdHIpOworICAgIH0KKyAgfQorfQorCitjbGFzcyBTdXBlciB7CisgIHByb3RlY3RlZCBTdHJpbmcgbXlTdHI7CisgIFN1cGVyKFN0cmluZyBzKSB7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3JlZHVuZGFudExhbWJkYVBhcmFtZXRlclR5cGUvYWZ0ZXJBc3NpZ25tZW50LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3JlZHVuZGFudExhbWJkYVBhcmFtZXRlclR5cGUvYWZ0ZXJBc3NpZ25tZW50LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGQ5MDU1ZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvcmVkdW5kYW50TGFtYmRhUGFyYW1ldGVyVHlwZS9hZnRlckFzc2lnbm1lbnQuamF2YQpAQCAtMCwwICsxLDYgQEAKKy8vICJSZW1vdmUgcmVkdW5kYW50IHR5cGVzIiAidHJ1ZSIKK2NsYXNzIFRlc3QgeworICB7CisgICAgQ29tcGFyYWJsZTxTdHJpbmc+IHIgPSBvIC0+IDE7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3JlZHVuZGFudExhbWJkYVBhcmFtZXRlclR5cGUvYWZ0ZXJDYWxsV2l0aFR5cGVBcmdzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3JlZHVuZGFudExhbWJkYVBhcmFtZXRlclR5cGUvYWZ0ZXJDYWxsV2l0aFR5cGVBcmdzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTFiNjE5NQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvcmVkdW5kYW50TGFtYmRhUGFyYW1ldGVyVHlwZS9hZnRlckNhbGxXaXRoVHlwZUFyZ3MuamF2YQpAQCAtMCwwICsxLDE2IEBACisvLyAiUmVtb3ZlIHJlZHVuZGFudCB0eXBlcyIgInRydWUiCitjbGFzcyBUZXN0MiB7CisgICAgY2xhc3MgWTxUPnsKKyAgICAgICAgVCB0OworICAgIH0KKworICAgIGludGVyZmFjZSBJPFg+IHsKKyAgICAgICAgWCBmb28oWTxYPiBsaXN0KTsKKyAgICB9CisKKyAgICBzdGF0aWMgPFQ+IEk8VD4gYmFyKEk8VD4gaSl7cmV0dXJuIGk7fQorCisgICAgeworICAgICAgICBUZXN0Mi48U3RyaW5nPmJhcih5IC0+IHkudCk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvcmVkdW5kYW50TGFtYmRhUGFyYW1ldGVyVHlwZS9hZnRlckluZmVycmVkRnJvbU90aGVyQXJncy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9yZWR1bmRhbnRMYW1iZGFQYXJhbWV0ZXJUeXBlL2FmdGVySW5mZXJyZWRGcm9tT3RoZXJBcmdzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGI0YzU2YQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvcmVkdW5kYW50TGFtYmRhUGFyYW1ldGVyVHlwZS9hZnRlckluZmVycmVkRnJvbU90aGVyQXJncy5qYXZhCkBAIC0wLDAgKzEsMTUgQEAKKy8vICJSZW1vdmUgcmVkdW5kYW50IHR5cGVzIiAidHJ1ZSIKK2NsYXNzIFJldHVyblR5cGVDb21wYXRpYmlsaXR5IHsKKworICAgIGludGVyZmFjZSBJMTxMPiB7CisgICAgICAgIEwgbShMIHgpOworICAgIH0KKworICAgIHN0YXRpYyA8UD4gdm9pZCBjYWxsKFAgcCwgSTE8UD4gaTIpIHsKKyAgICAgICAgaTIubShudWxsKTsKKyAgICB9CisKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CisgICAgICAgIGNhbGwoIiIsICBpIC0+ICIiKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9yZWR1bmRhbnRMYW1iZGFQYXJhbWV0ZXJUeXBlL2JlZm9yZUFzc2lnbm1lbnQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvcmVkdW5kYW50TGFtYmRhUGFyYW1ldGVyVHlwZS9iZWZvcmVBc3NpZ25tZW50LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzVmMTZjNwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvcmVkdW5kYW50TGFtYmRhUGFyYW1ldGVyVHlwZS9iZWZvcmVBc3NpZ25tZW50LmphdmEKQEAgLTAsMCArMSw2IEBACisvLyAiUmVtb3ZlIHJlZHVuZGFudCB0eXBlcyIgInRydWUiCitjbGFzcyBUZXN0IHsKKyAgeworICAgIENvbXBhcmFibGU8U3RyaW5nPiByID0gKFN0PGNhcmV0PnJpbmcgbykgLT4gMTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvcmVkdW5kYW50TGFtYmRhUGFyYW1ldGVyVHlwZS9iZWZvcmVBc3NpZ25tZW50Tm9QYXJhbXMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvcmVkdW5kYW50TGFtYmRhUGFyYW1ldGVyVHlwZS9iZWZvcmVBc3NpZ25tZW50Tm9QYXJhbXMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YWE4NWU0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9yZWR1bmRhbnRMYW1iZGFQYXJhbWV0ZXJUeXBlL2JlZm9yZUFzc2lnbm1lbnROb1BhcmFtcy5qYXZhCkBAIC0wLDAgKzEsNiBAQAorLy8gIlJlbW92ZSByZWR1bmRhbnQgdHlwZXMiICJmYWxzZSIKK2NsYXNzIFRlc3QgeworICB7CisgICAgUnVubmFibGUgciA9ICg8Y2FyZXQ+KSAtPiB7fTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvcmVkdW5kYW50TGFtYmRhUGFyYW1ldGVyVHlwZS9iZWZvcmVBc3NpZ25tZW50Tm9UeXBlcy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9yZWR1bmRhbnRMYW1iZGFQYXJhbWV0ZXJUeXBlL2JlZm9yZUFzc2lnbm1lbnROb1R5cGVzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWJlOWYyOQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvcmVkdW5kYW50TGFtYmRhUGFyYW1ldGVyVHlwZS9iZWZvcmVBc3NpZ25tZW50Tm9UeXBlcy5qYXZhCkBAIC0wLDAgKzEsNiBAQAorLy8gIlJlbW92ZSByZWR1bmRhbnQgdHlwZXMiICJmYWxzZSIKK2NsYXNzIFRlc3QgeworICB7CisgICAgQ29tcGFyYWJsZTxTdHJpbmc+IHIgPSA8Y2FyZXQ+byAtPiAxOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9yZWR1bmRhbnRMYW1iZGFQYXJhbWV0ZXJUeXBlL2JlZm9yZUNhbGxOb1R5cGVBcmdzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3JlZHVuZGFudExhbWJkYVBhcmFtZXRlclR5cGUvYmVmb3JlQ2FsbE5vVHlwZUFyZ3MuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wOTRkYmJlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9yZWR1bmRhbnRMYW1iZGFQYXJhbWV0ZXJUeXBlL2JlZm9yZUNhbGxOb1R5cGVBcmdzLmphdmEKQEAgLTAsMCArMSwxNiBAQAorLy8gIlJlbW92ZSByZWR1bmRhbnQgdHlwZXMiICJmYWxzZSIKK2NsYXNzIFRlc3QyIHsKKyAgICBjbGFzcyBZPFQ+eworICAgICAgICBUIHQ7CisgICAgfQorCisgICAgaW50ZXJmYWNlIEk8WD4geworICAgICAgICBYIGZvbyhZPFg+IGxpc3QpOworICAgIH0KKworICAgIHN0YXRpYyA8VD4gSTxUPiBiYXIoSTxUPiBpKXtyZXR1cm4gaTt9CisKKyAgICB7CisgICAgICAgIFRlc3QyLmJhcigoWTxTdDxjYXJldD5yaW5nPiB5KSAtPiB5LnQpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3JlZHVuZGFudExhbWJkYVBhcmFtZXRlclR5cGUvYmVmb3JlQ2FsbE5vVHlwZUFyZ3MxLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3JlZHVuZGFudExhbWJkYVBhcmFtZXRlclR5cGUvYmVmb3JlQ2FsbE5vVHlwZUFyZ3MxLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjRlYjZlMgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvcmVkdW5kYW50TGFtYmRhUGFyYW1ldGVyVHlwZS9iZWZvcmVDYWxsTm9UeXBlQXJnczEuamF2YQpAQCAtMCwwICsxLDEzIEBACisvLyAiUmVtb3ZlIHJlZHVuZGFudCB0eXBlcyIgImZhbHNlIgorY2xhc3MgTm9JbmZlcmVuY2VSZXN1bHQgeworICAgIGludGVyZmFjZSBJPEEsIEI+ICB7CisgICAgICBCIGZvbyhBIGEpOworICAgIH0KKworICAgIDxBLCBCPiBJPEEsIEI+IG0oSTxBLCBCPiAgZikgeyByZXR1cm4gbnVsbDsgfQorCisgICAgdm9pZCB0ZXN0KCkgeworICAgICAgICBtKChTdHJpPGNhcmV0Pm5nIHMxKSAtPiBzMS5sZW5ndGgoKSk7CisgICAgICAgIG0oKFN0cmluZyBzMSkgLT4gczEpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3JlZHVuZGFudExhbWJkYVBhcmFtZXRlclR5cGUvYmVmb3JlQ2FsbFdpdGhUeXBlQXJncy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9yZWR1bmRhbnRMYW1iZGFQYXJhbWV0ZXJUeXBlL2JlZm9yZUNhbGxXaXRoVHlwZUFyZ3MuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYTQ4ZDVkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9yZWR1bmRhbnRMYW1iZGFQYXJhbWV0ZXJUeXBlL2JlZm9yZUNhbGxXaXRoVHlwZUFyZ3MuamF2YQpAQCAtMCwwICsxLDE2IEBACisvLyAiUmVtb3ZlIHJlZHVuZGFudCB0eXBlcyIgInRydWUiCitjbGFzcyBUZXN0MiB7CisgICAgY2xhc3MgWTxUPnsKKyAgICAgICAgVCB0OworICAgIH0KKworICAgIGludGVyZmFjZSBJPFg+IHsKKyAgICAgICAgWCBmb28oWTxYPiBsaXN0KTsKKyAgICB9CisKKyAgICBzdGF0aWMgPFQ+IEk8VD4gYmFyKEk8VD4gaSl7cmV0dXJuIGk7fQorCisgICAgeworICAgICAgICBUZXN0Mi48U3RyaW5nPmJhcigoWTxTdDxjYXJldD5yaW5nPiB5KSAtPiB5LnQpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3JlZHVuZGFudExhbWJkYVBhcmFtZXRlclR5cGUvYmVmb3JlSW5mZXJyZWRGcm9tT3RoZXJBcmdzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3JlZHVuZGFudExhbWJkYVBhcmFtZXRlclR5cGUvYmVmb3JlSW5mZXJyZWRGcm9tT3RoZXJBcmdzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWJmNzIyOAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvcmVkdW5kYW50TGFtYmRhUGFyYW1ldGVyVHlwZS9iZWZvcmVJbmZlcnJlZEZyb21PdGhlckFyZ3MuamF2YQpAQCAtMCwwICsxLDE1IEBACisvLyAiUmVtb3ZlIHJlZHVuZGFudCB0eXBlcyIgInRydWUiCitjbGFzcyBSZXR1cm5UeXBlQ29tcGF0aWJpbGl0eSB7CisKKyAgICBpbnRlcmZhY2UgSTE8TD4geworICAgICAgICBMIG0oTCB4KTsKKyAgICB9CisKKyAgICBzdGF0aWMgPFA+IHZvaWQgY2FsbChQIHAsIEkxPFA+IGkyKSB7CisgICAgICAgIGkyLm0obnVsbCk7CisgICAgfQorCisgICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgeworICAgICAgICBjYWxsKCIiLCAgKFN0cjxjYXJldD5pbmcgIGkpIC0+ICIiKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9yZWR1bmRhbnRMYW1iZGFQYXJhbWV0ZXJUeXBlL2JlZm9yZVR5cGVQYXJhbS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9yZWR1bmRhbnRMYW1iZGFQYXJhbWV0ZXJUeXBlL2JlZm9yZVR5cGVQYXJhbS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFlNDgxYmIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3JlZHVuZGFudExhbWJkYVBhcmFtZXRlclR5cGUvYmVmb3JlVHlwZVBhcmFtLmphdmEKQEAgLTAsMCArMSwxMCBAQAorLy8gIlJlbW92ZSByZWR1bmRhbnQgdHlwZXMiICJmYWxzZSIKK2NsYXNzIFRlc3QzIHsKKyAgaW50ZXJmYWNlIEk8WT4geworICAgIHZvaWQgbShZIHkpOworICB9CisKKyAgc3RhdGljIDxUPiB2b2lkIGJhcihJPFQ+IGksIExpc3Q8VD4gbCl7CisgICAgYmFyKCg8Y2FyZXQ+VCB4KSAtPiB7fSwgbnVsbCk7CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvcmVkdW5kYW50VW5jaGVja2VkVmFyYXJncy9hZnRlcjEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvcmVkdW5kYW50VW5jaGVja2VkVmFyYXJncy9hZnRlcjEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MTZmZjc5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9yZWR1bmRhbnRVbmNoZWNrZWRWYXJhcmdzL2FmdGVyMS5qYXZhCkBAIC0wLDAgKzEsMTMgQEAKKy8vICJSZW1vdmUgJ3VuY2hlY2tlZCcgc3VwcHJlc3Npb24iICJ0cnVlIgoraW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7CisKK3B1YmxpYyBjbGFzcyBUZXN0IHsKKyAgQFNhZmVWYXJhcmdzCisgIHN0YXRpYyA8VD4gdm9pZCBmb28oVC4uLiB0KXsKKyAgfQorCisgIHZvaWQgZm9vKCkgeworICAgICAgZm9vKG5ldyBBcnJheUxpc3Q8U3RyaW5nPigpKTsKKyAgfQorfQorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3JlZHVuZGFudFVuY2hlY2tlZFZhcmFyZ3MvYWZ0ZXIyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3JlZHVuZGFudFVuY2hlY2tlZFZhcmFyZ3MvYWZ0ZXIyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzY5Y2EzNwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvcmVkdW5kYW50VW5jaGVja2VkVmFyYXJncy9hZnRlcjIuamF2YQpAQCAtMCwwICsxLDE0IEBACisvLyAiUmVtb3ZlICd1bmNoZWNrZWQnIHN1cHByZXNzaW9uIiAidHJ1ZSIKK2ltcG9ydCBqYXZhLnV0aWwuQXJyYXlMaXN0OworCitwdWJsaWMgY2xhc3MgVGVzdCB7CisgIEBTYWZlVmFyYXJncworICBzdGF0aWMgPFQ+IHZvaWQgZm9vKFQuLi4gdCl7CisgIH0KKworICB2b2lkIGZvbygpIHsKKyAgICAgIC8vIG5vaW5zcGVjdGlvbiBibGFoLWJsYWgtdG9vbGlkCisgICAgZm9vKG5ldyBBcnJheUxpc3Q8U3RyaW5nPigpKTsKKyAgfQorfQorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3JlZHVuZGFudFVuY2hlY2tlZFZhcmFyZ3MvYWZ0ZXI0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3JlZHVuZGFudFVuY2hlY2tlZFZhcmFyZ3MvYWZ0ZXI0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGMxYTY5NQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvcmVkdW5kYW50VW5jaGVja2VkVmFyYXJncy9hZnRlcjQuamF2YQpAQCAtMCwwICsxLDE0IEBACisvLyAiUmVtb3ZlICd1bmNoZWNrZWQnIHN1cHByZXNzaW9uIiAidHJ1ZSIKK2ltcG9ydCBqYXZhLnV0aWwuKjsKKworcHVibGljIGNsYXNzIFRlc3QgeworICBAU2FmZVZhcmFyZ3MKKyAgc3RhdGljIDxUPiBMaXN0PFQ+IGZvbyhULi4uIHQpeworICAgIHJldHVybiBudWxsOworICB9CisKKyAgdm9pZCBmb28oKSB7CisgICAgICBMaXN0PEFycmF5TGlzdDxTdHJpbmc+PiBsaXN0ID0gZm9vKG5ldyBBcnJheUxpc3Q8U3RyaW5nPigpKTsKKyAgfQorfQorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3JlZHVuZGFudFVuY2hlY2tlZFZhcmFyZ3MvYWZ0ZXI1LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3JlZHVuZGFudFVuY2hlY2tlZFZhcmFyZ3MvYWZ0ZXI1LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTU5ZWFjNAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvcmVkdW5kYW50VW5jaGVja2VkVmFyYXJncy9hZnRlcjUuamF2YQpAQCAtMCwwICsxLDE0IEBACisvLyAiUmVtb3ZlICd1bmNoZWNrZWQnIHN1cHByZXNzaW9uIiAidHJ1ZSIKK2ltcG9ydCBqYXZhLnV0aWwuKjsKKworcHVibGljIGNsYXNzIFRlc3QgeworICBAU2FmZVZhcmFyZ3MKKyAgc3RhdGljIDxUPiBMaXN0PFQ+IGZvbyhULi4uIHQpeworICAgIHJldHVybiBudWxsOworICB9CisKKyAgdm9pZCBmb28oKSB7CisgICAgTGlzdDxBcnJheUxpc3Q8U3RyaW5nPj4gbGlzdCA9IGZvbyhuZXcgQXJyYXlMaXN0PFN0cmluZz4oKSk7CisgIH0KK30KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9yZWR1bmRhbnRVbmNoZWNrZWRWYXJhcmdzL2FmdGVyNi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9yZWR1bmRhbnRVbmNoZWNrZWRWYXJhcmdzL2FmdGVyNi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU1OWVhYzQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3JlZHVuZGFudFVuY2hlY2tlZFZhcmFyZ3MvYWZ0ZXI2LmphdmEKQEAgLTAsMCArMSwxNCBAQAorLy8gIlJlbW92ZSAndW5jaGVja2VkJyBzdXBwcmVzc2lvbiIgInRydWUiCitpbXBvcnQgamF2YS51dGlsLio7CisKK3B1YmxpYyBjbGFzcyBUZXN0IHsKKyAgQFNhZmVWYXJhcmdzCisgIHN0YXRpYyA8VD4gTGlzdDxUPiBmb28oVC4uLiB0KXsKKyAgICByZXR1cm4gbnVsbDsKKyAgfQorCisgIHZvaWQgZm9vKCkgeworICAgIExpc3Q8QXJyYXlMaXN0PFN0cmluZz4+IGxpc3QgPSBmb28obmV3IEFycmF5TGlzdDxTdHJpbmc+KCkpOworICB9Cit9CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvcmVkdW5kYW50VW5jaGVja2VkVmFyYXJncy9hZnRlcjkuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvcmVkdW5kYW50VW5jaGVja2VkVmFyYXJncy9hZnRlcjkuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYTRiYjZkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9yZWR1bmRhbnRVbmNoZWNrZWRWYXJhcmdzL2FmdGVyOS5qYXZhCkBAIC0wLDAgKzEsMTUgQEAKKy8vICJSZW1vdmUgJ3VuY2hlY2tlZCcgc3VwcHJlc3Npb24iICJ0cnVlIgoraW1wb3J0IGphdmEudXRpbC4qOworCitAU3VwcHJlc3NXYXJuaW5ncyh7ImJsYS1ibGFoLXRvb2xpZCJ9KQorcHVibGljIGNsYXNzIFRlc3QgeworICBAU2FmZVZhcmFyZ3MKKyAgc3RhdGljIDxUPiBMaXN0PFQ+IGZvbyhULi4uIHQpeworICAgIHJldHVybiBudWxsOworICB9CisKKyAgdm9pZCBmb28oKSB7CisgICAgTGlzdDxBcnJheUxpc3Q8U3RyaW5nPj4gbGlzdCA9IGZvbyhuZXcgQXJyYXlMaXN0PFN0cmluZz4oKSk7CisgIH0KK30KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9yZWR1bmRhbnRVbmNoZWNrZWRWYXJhcmdzL2JlZm9yZTEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvcmVkdW5kYW50VW5jaGVja2VkVmFyYXJncy9iZWZvcmUxLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTg3OTQwZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvcmVkdW5kYW50VW5jaGVja2VkVmFyYXJncy9iZWZvcmUxLmphdmEKQEAgLTAsMCArMSwxNCBAQAorLy8gIlJlbW92ZSAndW5jaGVja2VkJyBzdXBwcmVzc2lvbiIgInRydWUiCitpbXBvcnQgamF2YS51dGlsLkFycmF5TGlzdDsKKworcHVibGljIGNsYXNzIFRlc3QgeworICBAU2FmZVZhcmFyZ3MKKyAgc3RhdGljIDxUPiB2b2lkIGZvbyhULi4uIHQpeworICB9CisKKyAgdm9pZCBmbzxjYXJldD5vKCkgeworICAgIC8vbm9pbnNwZWN0aW9uIHVuY2hlY2tlZAorICAgIGZvbyhuZXcgQXJyYXlMaXN0PFN0cmluZz4oKSk7CisgIH0KK30KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9yZWR1bmRhbnRVbmNoZWNrZWRWYXJhcmdzL2JlZm9yZTEwLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3JlZHVuZGFudFVuY2hlY2tlZFZhcmFyZ3MvYmVmb3JlMTAuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZGM4NDkzMAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvcmVkdW5kYW50VW5jaGVja2VkVmFyYXJncy9iZWZvcmUxMC5qYXZhCkBAIC0wLDAgKzEsMTEgQEAKKy8vICJSZW1vdmUgJ3VuY2hlY2tlZCcgc3VwcHJlc3Npb24iICJmYWxzZSIKKworQFN1cHByZXNzV2FybmluZ3MoeyJ1bmNoZWNrZWQiLCAiYmxhLWJsYWgtdG9vbGlkIn0pCitwdWJsaWMgZW51bSBQbGFuZXQgeworICBNRVJDVVJZKCksCisgIFZFTlVTKCk7CisKKyAgPFQ+IFBsYW48Y2FyZXQ+ZXQoVC4uLiB0cykgeworICB9CisKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvcmVkdW5kYW50VW5jaGVja2VkVmFyYXJncy9iZWZvcmUxMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9yZWR1bmRhbnRVbmNoZWNrZWRWYXJhcmdzL2JlZm9yZTExLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODQ3YWUyYgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvcmVkdW5kYW50VW5jaGVja2VkVmFyYXJncy9iZWZvcmUxMS5qYXZhCkBAIC0wLDAgKzEsMTkgQEAKKy8vICJSZW1vdmUgJ3VuY2hlY2tlZCcgc3VwcHJlc3Npb24iICJmYWxzZSIKK2ltcG9ydCBqYXZhLnV0aWwuKjsKKworcHVibGljIGNsYXNzIFNhbXBsZVNhZmVWYXJhcmdzIHsKKworICAgIEBTYWZlVmFyYXJncworICAgIHN0YXRpYyA8VD4gTGlzdDxUPiBhc0xpc3QoVC4uLiB0dCkgeworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4odHQpOworICAgICAgICByZXR1cm4gbnVsbDsKKyAgICB9CisKKyAgICBAU3VwcHJlc3NXYXJuaW5ncyh7InVuY2hlY2tlZCJ9KQorICAgIHZvaWQgZm9vKCkgeworICAgICAgICBhc0xpc3QobmV3IEFycmF5TGlzdDxTdHJpbmc+KCkpOworICAgICAgICBMaXN0PE9iamVjdD4gbCA7CisgICAgICAgIEFycmF5TGlzdCBzdHJpbmdzID0gbmV3IEFycmF5TGlzdDxTdHJpbmc+KCk7CisgICAgICAgIGwgPSBzdHJpbmdzOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvcmVkdW5kYW50VW5jaGVja2VkVmFyYXJncy9iZWZvcmUyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3JlZHVuZGFudFVuY2hlY2tlZFZhcmFyZ3MvYmVmb3JlMi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgzNzM1MWEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3JlZHVuZGFudFVuY2hlY2tlZFZhcmFyZ3MvYmVmb3JlMi5qYXZhCkBAIC0wLDAgKzEsMTQgQEAKKy8vICJSZW1vdmUgJ3VuY2hlY2tlZCcgc3VwcHJlc3Npb24iICJ0cnVlIgoraW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7CisKK3B1YmxpYyBjbGFzcyBUZXN0IHsKKyAgQFNhZmVWYXJhcmdzCisgIHN0YXRpYyA8VD4gdm9pZCBmb28oVC4uLiB0KXsKKyAgfQorCisgIHZvaWQgZjxjYXJldD5vbygpIHsKKyAgICAvL25vaW5zcGVjdGlvbiB1bmNoZWNrZWQsYmxhaC1ibGFoLXRvb2xpZAorICAgIGZvbyhuZXcgQXJyYXlMaXN0PFN0cmluZz4oKSk7CisgIH0KK30KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9yZWR1bmRhbnRVbmNoZWNrZWRWYXJhcmdzL2JlZm9yZTMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvcmVkdW5kYW50VW5jaGVja2VkVmFyYXJncy9iZWZvcmUzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjQxMDdjZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvcmVkdW5kYW50VW5jaGVja2VkVmFyYXJncy9iZWZvcmUzLmphdmEKQEAgLTAsMCArMSwxOSBAQAorLy8gIlJlbW92ZSAndW5jaGVja2VkJyBzdXBwcmVzc2lvbiIgImZhbHNlIgoraW1wb3J0IGphdmEudXRpbC4qOworCitwdWJsaWMgY2xhc3MgVGVzdCB7CisgIEBTYWZlVmFyYXJncworICBzdGF0aWMgPFQ+IExpc3Q8VD4gZm9vKFQuLi4gdCl7CisgICAgcmV0dXJuIG51bGw7CisgIH0KKworICBzdGF0aWMgPFQ+IExpc3Q8VD4gZm9vMShULi4uIHQpeworICAgIHJldHVybiBudWxsOworICB9CisKKyAgdm9pZCBmbzxjYXJldD5vKCkgeworICAgIC8vbm9pbnNwZWN0aW9uIHVuY2hlY2tlZAorICAgIGZvbyhuZXcgQXJyYXlMaXN0PFN0cmluZz4oKSkuYWRkQWxsKGZvbzEobmV3IEFycmF5TGlzdDxTdHJpbmc+KCkpKTsKKyAgfQorfQorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3JlZHVuZGFudFVuY2hlY2tlZFZhcmFyZ3MvYmVmb3JlNC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9yZWR1bmRhbnRVbmNoZWNrZWRWYXJhcmdzL2JlZm9yZTQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNmRjNTFkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9yZWR1bmRhbnRVbmNoZWNrZWRWYXJhcmdzL2JlZm9yZTQuamF2YQpAQCAtMCwwICsxLDE1IEBACisvLyAiUmVtb3ZlICd1bmNoZWNrZWQnIHN1cHByZXNzaW9uIiAidHJ1ZSIKK2ltcG9ydCBqYXZhLnV0aWwuKjsKKworcHVibGljIGNsYXNzIFRlc3QgeworICBAU2FmZVZhcmFyZ3MKKyAgc3RhdGljIDxUPiBMaXN0PFQ+IGZvbyhULi4uIHQpeworICAgIHJldHVybiBudWxsOworICB9CisKKyAgdm9pZCBmbzxjYXJldD5vKCkgeworICAgIC8vbm9pbnNwZWN0aW9uIHVuY2hlY2tlZAorICAgIExpc3Q8QXJyYXlMaXN0PFN0cmluZz4+IGxpc3QgPSBmb28obmV3IEFycmF5TGlzdDxTdHJpbmc+KCkpOworICB9Cit9CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvcmVkdW5kYW50VW5jaGVja2VkVmFyYXJncy9iZWZvcmU1LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3JlZHVuZGFudFVuY2hlY2tlZFZhcmFyZ3MvYmVmb3JlNS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIyOTRkMmQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3JlZHVuZGFudFVuY2hlY2tlZFZhcmFyZ3MvYmVmb3JlNS5qYXZhCkBAIC0wLDAgKzEsMTUgQEAKKy8vICJSZW1vdmUgJ3VuY2hlY2tlZCcgc3VwcHJlc3Npb24iICJ0cnVlIgoraW1wb3J0IGphdmEudXRpbC4qOworCitwdWJsaWMgY2xhc3MgVGVzdCB7CisgIEBTYWZlVmFyYXJncworICBzdGF0aWMgPFQ+IExpc3Q8VD4gZm9vKFQuLi4gdCl7CisgICAgcmV0dXJuIG51bGw7CisgIH0KKworICBAU3VwcHJlc3NXYXJuaW5ncygidW5jaGVja2VkIikKKyAgdm9pZCBmbzxjYXJldD5vKCkgeworICAgIExpc3Q8QXJyYXlMaXN0PFN0cmluZz4+IGxpc3QgPSBmb28obmV3IEFycmF5TGlzdDxTdHJpbmc+KCkpOworICB9Cit9CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvcmVkdW5kYW50VW5jaGVja2VkVmFyYXJncy9iZWZvcmU2LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3JlZHVuZGFudFVuY2hlY2tlZFZhcmFyZ3MvYmVmb3JlNi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYwZjQyNjgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3JlZHVuZGFudFVuY2hlY2tlZFZhcmFyZ3MvYmVmb3JlNi5qYXZhCkBAIC0wLDAgKzEsMTUgQEAKKy8vICJSZW1vdmUgJ3VuY2hlY2tlZCcgc3VwcHJlc3Npb24iICJ0cnVlIgoraW1wb3J0IGphdmEudXRpbC4qOworCitAU3VwcHJlc3NXYXJuaW5ncygidW5jaGVja2VkIikKK3B1YmxpYyBjbGFzcyBUZTxjYXJldD5zdCB7CisgIEBTYWZlVmFyYXJncworICBzdGF0aWMgPFQ+IExpc3Q8VD4gZm9vKFQuLi4gdCl7CisgICAgcmV0dXJuIG51bGw7CisgIH0KKworICB2b2lkIGZvbygpIHsKKyAgICBMaXN0PEFycmF5TGlzdDxTdHJpbmc+PiBsaXN0ID0gZm9vKG5ldyBBcnJheUxpc3Q8U3RyaW5nPigpKTsKKyAgfQorfQorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3JlZHVuZGFudFVuY2hlY2tlZFZhcmFyZ3MvYmVmb3JlNy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9yZWR1bmRhbnRVbmNoZWNrZWRWYXJhcmdzL2JlZm9yZTcuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYTk4ZTQ2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9yZWR1bmRhbnRVbmNoZWNrZWRWYXJhcmdzL2JlZm9yZTcuamF2YQpAQCAtMCwwICsxLDE5IEBACisvLyAiUmVtb3ZlICd1bmNoZWNrZWQnIHN1cHByZXNzaW9uIiAiZmFsc2UiCitpbXBvcnQgamF2YS51dGlsLio7CisKK3B1YmxpYyBjbGFzcyBUZXN0IHsKKyAgQFNhZmVWYXJhcmdzCisgIHN0YXRpYyA8VD4gTGlzdDxUPiBmb28oVC4uLiB0KXsKKyAgICByZXR1cm4gbnVsbDsKKyAgfQorCisgIHN0YXRpYyA8VD4gTGlzdDxUPiBmb28xKFQuLi4gdCl7CisgICAgcmV0dXJuIG51bGw7CisgIH0KKworICBAU3VwcHJlc3NXYXJuaW5ncygidW5jaGVja2VkIikKKyAgdm9pZCBmb28oKSB7CisgICAgZm9vKG5ldyBBcnJheUxpc3Q8U3RyaW5nPigpKS5hZGRBbGwoZm9vMShuZXcgQXJyYXlMaXN0PFN0cmluZz4pOworICB9Cit9CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvcmVkdW5kYW50VW5jaGVja2VkVmFyYXJncy9iZWZvcmU4LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3JlZHVuZGFudFVuY2hlY2tlZFZhcmFyZ3MvYmVmb3JlOC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM4MmIyMDEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3JlZHVuZGFudFVuY2hlY2tlZFZhcmFyZ3MvYmVmb3JlOC5qYXZhCkBAIC0wLDAgKzEsMTUgQEAKKy8vICJSZW1vdmUgJ3VuY2hlY2tlZCcgc3VwcHJlc3Npb24iICJmYWxzZSIKK2ltcG9ydCBqYXZhLnV0aWwuKjsKKworQFN1cHByZXNzV2FybmluZ3MoIkFMTCIpCitwdWJsaWMgY2xhc3MgVGU8Y2FyZXQ+c3QgeworICBAU2FmZVZhcmFyZ3MKKyAgc3RhdGljIDxUPiBMaXN0PFQ+IGZvbyhULi4uIHQpeworICAgIHJldHVybiBudWxsOworICB9CisKKyAgdm9pZCBmb28oKSB7CisgICAgTGlzdDxBcnJheUxpc3Q8U3RyaW5nPj4gbGlzdCA9IGZvbyhuZXcgQXJyYXlMaXN0PFN0cmluZz4oKSk7CisgIH0KK30KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9yZWR1bmRhbnRVbmNoZWNrZWRWYXJhcmdzL2JlZm9yZTkuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvcmVkdW5kYW50VW5jaGVja2VkVmFyYXJncy9iZWZvcmU5LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTM0ZWUwZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvcmVkdW5kYW50VW5jaGVja2VkVmFyYXJncy9iZWZvcmU5LmphdmEKQEAgLTAsMCArMSwxNSBAQAorLy8gIlJlbW92ZSAndW5jaGVja2VkJyBzdXBwcmVzc2lvbiIgInRydWUiCitpbXBvcnQgamF2YS51dGlsLio7CisKK0BTdXBwcmVzc1dhcm5pbmdzKHsidW5jaGVja2VkIiwgImJsYS1ibGFoLXRvb2xpZCJ9KQorcHVibGljIGNsYXNzIFRlczxjYXJldD50IHsKKyAgQFNhZmVWYXJhcmdzCisgIHN0YXRpYyA8VD4gTGlzdDxUPiBmb28oVC4uLiB0KXsKKyAgICByZXR1cm4gbnVsbDsKKyAgfQorCisgIHZvaWQgZm9vKCkgeworICAgIExpc3Q8QXJyYXlMaXN0PFN0cmluZz4+IGxpc3QgPSBmb28obmV3IEFycmF5TGlzdDxTdHJpbmc+KCkpOworICB9Cit9CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvcmVtb3ZlTmV3UXVhbGlmaWVyL2FmdGVyMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9yZW1vdmVOZXdRdWFsaWZpZXIvYWZ0ZXIxLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWQ2M2E1MwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvcmVtb3ZlTmV3UXVhbGlmaWVyL2FmdGVyMS5qYXZhCkBAIC0wLDAgKzEsMTQgQEAKKy8vICJSZW1vdmUgcXVhbGlmaWVyIiAidHJ1ZSIKKworY2xhc3MgaTIgeworICAgIGNsYXNzIEEgeworICAgICAgICBBKGIgYikgeworICAgICAgICAgIDxjYXJldD5uZXcgYi5jKCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBzdGF0aWMgY2xhc3MgYiB7CisgICAgICBzdGF0aWMgY2xhc3MgYyB7fQorICAgIH0KKworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9yZW1vdmVOZXdRdWFsaWZpZXIvYWZ0ZXIyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3JlbW92ZU5ld1F1YWxpZmllci9hZnRlcjIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NjNlZWZjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9yZW1vdmVOZXdRdWFsaWZpZXIvYWZ0ZXIyLmphdmEKQEAgLTAsMCArMSw5IEBACisvLyAiUmVtb3ZlIHF1YWxpZmllciIgInRydWUiCisKKyAgICBzdGF0aWMgY2xhc3MgQSB7CisgICAgICAgIHN0YXRpYyBjbGFzcyBCIHsKKyAgICAgICAgfQorICAgICAgICB7CisgICAgICAgICAgICA8Y2FyZXQ+bmV3IEIoKTsKKyAgICAgICAgfQorICAgIH0KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvcmVtb3ZlTmV3UXVhbGlmaWVyL2JlZm9yZTEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvcmVtb3ZlTmV3UXVhbGlmaWVyL2JlZm9yZTEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYmZiNGVkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9yZW1vdmVOZXdRdWFsaWZpZXIvYmVmb3JlMS5qYXZhCkBAIC0wLDAgKzEsMTQgQEAKKy8vICJSZW1vdmUgcXVhbGlmaWVyIiAidHJ1ZSIKKworY2xhc3MgaTIgeworICAgIGNsYXNzIEEgeworICAgICAgICBBKGIgYikgeworICAgICAgICAgIDxjYXJldD5iLm5ldyBjKCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBzdGF0aWMgY2xhc3MgYiB7CisgICAgICBzdGF0aWMgY2xhc3MgYyB7fQorICAgIH0KKworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9yZW1vdmVOZXdRdWFsaWZpZXIvYmVmb3JlMi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9yZW1vdmVOZXdRdWFsaWZpZXIvYmVmb3JlMi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBmYTViMWYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3JlbW92ZU5ld1F1YWxpZmllci9iZWZvcmUyLmphdmEKQEAgLTAsMCArMSwyMyBAQAorLy8gIlJlbW92ZSBxdWFsaWZpZXIiICJ0cnVlIgorCisgICAgc3RhdGljIGNsYXNzIEEgeworICAgICAgICBzdGF0aWMgY2xhc3MgQiB7CisgICAgICAgIH0KKyAgICAgICAgeworICAgICAgICAgICAgbmV3IEEoKSB7CisgICAgICAgICAgICAgICB2b2lkIGYoKSB7CisKKworCisKKworICAgICAgICAgICAgICAgICAgICAgPGNhcmV0PgorCisKKworCisgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgfQorICAgICAgICAgICAgLm5ldyBCKCk7CisgICAgICAgIH0KKyAgICB9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3JlbW92ZVF1YWxpZmllci9hZnRlcjEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvcmVtb3ZlUXVhbGlmaWVyL2FmdGVyMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc3ZTJlMzQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3JlbW92ZVF1YWxpZmllci9hZnRlcjEuamF2YQpAQCAtMCwwICsxLDE1IEBACisvLyAiUmVtb3ZlIFF1YWxpZmllciIgInRydWUiCitjbGFzcyBFIHsKKyAgICBjbGFzcyBPdXRlciB7CisgICAgY2xhc3MgUyB7CisgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFNTID0gMDsKKyAgICB9CisgICAgfQorCisgICAgT3V0ZXIgZigpIHsKKyAgICAgICAgaW50IHMgPSA8Y2FyZXQ+T3V0ZXIuUy5TUzsKKyAgICAgICAgLy8gaW50IHMxID0gPGVycm9yIGRlc2NyPSJFeHBlY3RlZCBjbGFzcyBvciBwYWNrYWdlIj50aGlzPC9lcnJvcj4uT3V0ZXIuUy5TUzsKKyAgICAgICAgaW50IHMyID0gT3V0ZXIuUy5TUzsKKyAgICAgICAgcmV0dXJuIG51bGw7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9yZW1vdmVRdWFsaWZpZXIvYWZ0ZXIyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3JlbW92ZVF1YWxpZmllci9hZnRlcjIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41M2UxZmVkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9yZW1vdmVRdWFsaWZpZXIvYWZ0ZXIyLmphdmEKQEAgLTAsMCArMSwxNCBAQAorLy8gIlJlbW92ZSBRdWFsaWZpZXIiICJ0cnVlIgorY2xhc3MgRSB7CisgICAgY2xhc3MgT3V0ZXIgeworICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBTUyA9IDA7CisgICAgY2xhc3MgUyB7CisgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFNTID0gMDsKKyAgICB9CisgICAgfQorCisgICAgT3V0ZXIgZigpIHsKKyAgICAgICAgaW50IHMgPSA8Y2FyZXQ+T3V0ZXIuU1M7CisgICAgICAgIHJldHVybiBudWxsOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvcmVtb3ZlUXVhbGlmaWVyL2JlZm9yZTEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvcmVtb3ZlUXVhbGlmaWVyL2JlZm9yZTEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNGVmMGEzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9yZW1vdmVRdWFsaWZpZXIvYmVmb3JlMS5qYXZhCkBAIC0wLDAgKzEsMTUgQEAKKy8vICJSZW1vdmUgUXVhbGlmaWVyIiAidHJ1ZSIKK2NsYXNzIEUgeworICAgIGNsYXNzIE91dGVyIHsKKyAgICBjbGFzcyBTIHsKKyAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgU1MgPSAwOworICAgIH0KKyAgICB9CisKKyAgICBPdXRlciBmKCkgeworICAgICAgICBpbnQgcyA9IDxjYXJldD5mKCkuUy5TUzsKKyAgICAgICAgLy8gaW50IHMxID0gPGVycm9yIGRlc2NyPSJFeHBlY3RlZCBjbGFzcyBvciBwYWNrYWdlIj50aGlzPC9lcnJvcj4uT3V0ZXIuUy5TUzsKKyAgICAgICAgaW50IHMyID0gT3V0ZXIuUy5TUzsKKyAgICAgICAgcmV0dXJuIG51bGw7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9yZW1vdmVRdWFsaWZpZXIvYmVmb3JlMi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9yZW1vdmVRdWFsaWZpZXIvYmVmb3JlMi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhmOWUwOTEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3JlbW92ZVF1YWxpZmllci9iZWZvcmUyLmphdmEKQEAgLTAsMCArMSwxNCBAQAorLy8gIlJlbW92ZSBRdWFsaWZpZXIiICJ0cnVlIgorY2xhc3MgRSB7CisgICAgY2xhc3MgT3V0ZXIgeworICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBTUyA9IDA7CisgICAgY2xhc3MgUyB7CisgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFNTID0gMDsKKyAgICB9CisgICAgfQorCisgICAgT3V0ZXIgZigpIHsKKyAgICAgICAgaW50IHMgPSB0aGlzPGNhcmV0Pi5PdXRlci5TUzsKKyAgICAgICAgcmV0dXJuIG51bGw7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9yZW1vdmVSZWR1bmRhbnRBcmd1bWVudC9hZnRlckJveGVkLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3JlbW92ZVJlZHVuZGFudEFyZ3VtZW50L2FmdGVyQm94ZWQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MWNkZDRkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9yZW1vdmVSZWR1bmRhbnRBcmd1bWVudC9hZnRlckJveGVkLmphdmEKQEAgLTAsMCArMSw5IEBACisvLyAiUmVtb3ZlIHJlZHVuZGFudCBhcmd1bWVudHMgdG8gY2FsbCAnbWV0aG9kKGludCwgSW50ZWdlciknIiAidHJ1ZSIKK2NsYXNzIEEgeworICBwdWJsaWMgQSgpIHsKKyAgICBtZXRob2QobmV3IEludGVnZXIoNSksIDUpOworICB9CisKKyAgcHJpdmF0ZSB2b2lkIG1ldGhvZChpbnQgaSwgSW50ZWdlciBpMikgeworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9yZW1vdmVSZWR1bmRhbnRBcmd1bWVudC9hZnRlckdlbmVyaWMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvcmVtb3ZlUmVkdW5kYW50QXJndW1lbnQvYWZ0ZXJHZW5lcmljLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWU0NjJlMAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvcmVtb3ZlUmVkdW5kYW50QXJndW1lbnQvYWZ0ZXJHZW5lcmljLmphdmEKQEAgLTAsMCArMSw5IEBACisvLyAiUmVtb3ZlIHJlZHVuZGFudCBhcmd1bWVudHMgdG8gY2FsbCAnbWV0aG9kKGludCwgVCknIiAidHJ1ZSIKK2NsYXNzIEEgeworICBwdWJsaWMgQSgpIHsKKyAgICBtZXRob2QoNSwgbmV3IEV4Y2VwdGlvbigpKTsKKyAgfQorCisgIHByaXZhdGUgPFQgZXh0ZW5kcyBFeGNlcHRpb24+IHZvaWQgbWV0aG9kKGludCBpLCBUIHQpIHsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvcmVtb3ZlUmVkdW5kYW50QXJndW1lbnQvYWZ0ZXJTaW1wbGUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvcmVtb3ZlUmVkdW5kYW50QXJndW1lbnQvYWZ0ZXJTaW1wbGUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZGE3OTI3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9yZW1vdmVSZWR1bmRhbnRBcmd1bWVudC9hZnRlclNpbXBsZS5qYXZhCkBAIC0wLDAgKzEsOSBAQAorLy8gIlJlbW92ZSByZWR1bmRhbnQgYXJndW1lbnRzIHRvIGNhbGwgJ21ldGhvZChpbnQsIFN0cmluZyknIiAidHJ1ZSIKK2NsYXNzIEEgeworICBwdWJsaWMgQSgpIHsKKyAgICBtZXRob2QoNSwgIiIpOworICB9CisKKyAgcHJpdmF0ZSB2b2lkIG1ldGhvZChpbnQgcywgU3RyaW5nIHMyKSB7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3JlbW92ZVJlZHVuZGFudEFyZ3VtZW50L2JlZm9yZUJveGVkLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3JlbW92ZVJlZHVuZGFudEFyZ3VtZW50L2JlZm9yZUJveGVkLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjUzNjg5YgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvcmVtb3ZlUmVkdW5kYW50QXJndW1lbnQvYmVmb3JlQm94ZWQuamF2YQpAQCAtMCwwICsxLDkgQEAKKy8vICJSZW1vdmUgcmVkdW5kYW50IGFyZ3VtZW50cyB0byBjYWxsICdtZXRob2QoaW50LCBJbnRlZ2VyKSciICJ0cnVlIgorY2xhc3MgQSB7CisgIHB1YmxpYyBBKCkgeworICAgIG1ldGhvZChuZXcgSW50ZWdlcig1KSwgNSw8Y2FyZXQ+ICIiLCBuZXcgU3RyaW5nKCkpOworICB9CisKKyAgcHJpdmF0ZSB2b2lkIG1ldGhvZChpbnQgaSwgSW50ZWdlciBpMikgeworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9yZW1vdmVSZWR1bmRhbnRBcmd1bWVudC9iZWZvcmVHZW5lcmljLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3JlbW92ZVJlZHVuZGFudEFyZ3VtZW50L2JlZm9yZUdlbmVyaWMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lM2RmNjQwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9yZW1vdmVSZWR1bmRhbnRBcmd1bWVudC9iZWZvcmVHZW5lcmljLmphdmEKQEAgLTAsMCArMSw5IEBACisvLyAiUmVtb3ZlIHJlZHVuZGFudCBhcmd1bWVudHMgdG8gY2FsbCAnbWV0aG9kKGludCwgVCknIiAidHJ1ZSIKK2NsYXNzIEEgeworICBwdWJsaWMgQSgpIHsKKyAgICBtZXRob2QoNSw8Y2FyZXQ+IG5ldyBFeGNlcHRpb24oKSwgbmV3IEV4Y2VwdGlvbigpLCAiIiwgMyk7CisgIH0KKworICBwcml2YXRlIDxUIGV4dGVuZHMgRXhjZXB0aW9uPiB2b2lkIG1ldGhvZChpbnQgaSwgVCB0KSB7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3JlbW92ZVJlZHVuZGFudEFyZ3VtZW50L2JlZm9yZVNpbXBsZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9yZW1vdmVSZWR1bmRhbnRBcmd1bWVudC9iZWZvcmVTaW1wbGUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45Y2MwOTQ2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9yZW1vdmVSZWR1bmRhbnRBcmd1bWVudC9iZWZvcmVTaW1wbGUuamF2YQpAQCAtMCwwICsxLDkgQEAKKy8vICJSZW1vdmUgcmVkdW5kYW50IGFyZ3VtZW50cyB0byBjYWxsICdtZXRob2QoaW50LCBTdHJpbmcpJyIgInRydWUiCitjbGFzcyBBIHsKKyAgcHVibGljIEEoKSB7CisgICAgbWV0aG9kKDUsICIiLDxjYXJldD4gMTApOworICB9CisKKyAgcHJpdmF0ZSB2b2lkIG1ldGhvZChpbnQgcywgU3RyaW5nIHMyKSB7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3JlbW92ZVJlZHVuZGFudEVsc2UvYWZ0ZXIxLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3JlbW92ZVJlZHVuZGFudEVsc2UvYWZ0ZXIxLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjEwZGM1ZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvcmVtb3ZlUmVkdW5kYW50RWxzZS9hZnRlcjEuamF2YQpAQCAtMCwwICsxLDEzIEBACisvLyAiUmVtb3ZlIFJlZHVuZGFudCAnZWxzZSciICJ0cnVlIgorY2xhc3MgYSB7CisgIHZvaWQgZm9vKCkgeworICAgIGludCBhID0gMDsKKyAgICBpbnQgYiA9IDA7CisgICAgaWYgKGEgIT0gYikgeworICAgICAgcmV0dXJuOworICAgIH0KKyAgICAgIGEgPSBiOworICAgICAgYSsrOworICB9Cit9CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvcmVtb3ZlUmVkdW5kYW50RWxzZS9iZWZvcmUxLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3JlbW92ZVJlZHVuZGFudEVsc2UvYmVmb3JlMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg3NGEwNTIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3JlbW92ZVJlZHVuZGFudEVsc2UvYmVmb3JlMS5qYXZhCkBAIC0wLDAgKzEsMTQgQEAKKy8vICJSZW1vdmUgUmVkdW5kYW50ICdlbHNlJyIgInRydWUiCitjbGFzcyBhIHsKKyAgdm9pZCBmb28oKSB7CisgICAgaW50IGEgPSAwOworICAgIGludCBiID0gMDsKKyAgICBpZiAoYSAhPSBiKSB7CisgICAgICByZXR1cm47CisgICAgfSBlPGNhcmV0PmxzZSB7CisgICAgICBhID0gYjsKKyAgICB9CisgICAgYSsrOworICB9Cit9CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvcmVtb3ZlUmVkdW5kYW50RWxzZS9iZWZvcmVJZkVsc2VDaGFpbi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9yZW1vdmVSZWR1bmRhbnRFbHNlL2JlZm9yZUlmRWxzZUNoYWluLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjUxMjdkMwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvcmVtb3ZlUmVkdW5kYW50RWxzZS9iZWZvcmVJZkVsc2VDaGFpbi5qYXZhCkBAIC0wLDAgKzEsMTcgQEAKKy8vICJSZW1vdmUgUmVkdW5kYW50ICdlbHNlJyIgImZhbHNlIgorY2xhc3MgYSB7CisgIHZvaWQgZm9vKCkgeworICAgIGludCBhID0gMDsKKyAgICBpbnQgYiA9IDA7CisgICAgaWYgKGEgIT0gYikgeworICAgICAgYSA9IDEwOworICAgIH0gZWxzZSBpZiAoYSArIDEgPT0gYikgeworICAgICAgcmV0dXJuOworICAgIH0KKyAgICBlPGNhcmV0PmxzZSB7CisgICAgICBhID0gYjsKKyAgICB9CisgICAgYSsrOworICB9Cit9CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvcmVtb3ZlVHlwZUFyZ3VtZW50cy9hZnRlclJlbW92ZUFsbC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9yZW1vdmVUeXBlQXJndW1lbnRzL2FmdGVyUmVtb3ZlQWxsLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjcxN2YwOAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvcmVtb3ZlVHlwZUFyZ3VtZW50cy9hZnRlclJlbW92ZUFsbC5qYXZhCkBAIC0wLDAgKzEsNyBAQAorLy8gIlJlbW92ZSB0eXBlIGFyZ3VtZW50cyIgInRydWUiCithYnN0cmFjdCBjbGFzcyBTb21lQ2xhc3M8SywgVD4gaW1wbGVtZW50cyBTb21lPEssIFQ+IHsKKyAgICBwdWJsaWMgYWJzdHJhY3Qgdm9pZCBkb1NvbWV0aGluZyhLIGtleSwgTm9kZTxjYXJldD4gcm9vdCk7Cit9CitjbGFzcyBOb2RlIHt9CitpbnRlcmZhY2UgU29tZTxJSSwgT08+e30KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9yZW1vdmVUeXBlQXJndW1lbnRzL2JlZm9yZVJlbW92ZUFsbC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9yZW1vdmVUeXBlQXJndW1lbnRzL2JlZm9yZVJlbW92ZUFsbC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI4MGUwOGMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3JlbW92ZVR5cGVBcmd1bWVudHMvYmVmb3JlUmVtb3ZlQWxsLmphdmEKQEAgLTAsMCArMSw3IEBACisvLyAiUmVtb3ZlIHR5cGUgYXJndW1lbnRzIiAidHJ1ZSIKK2Fic3RyYWN0IGNsYXNzIFNvbWVDbGFzczxLLCBUPiBpbXBsZW1lbnRzIFNvbWU8SywgVD4geworICAgIHB1YmxpYyBhYnN0cmFjdCB2b2lkIGRvU29tZXRoaW5nKEsga2V5LCBOb2RlPGNhcmV0PjxLLCBUPiByb290KTsKK30KK2NsYXNzIE5vZGUge30KK2ludGVyZmFjZSBTb21lPElJLCBPTz57fQorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3JlbW92ZVR5cGVBcmd1bWVudHMvYmVmb3JlUmVtb3ZlVW5hdmFpbGFibGUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvcmVtb3ZlVHlwZUFyZ3VtZW50cy9iZWZvcmVSZW1vdmVVbmF2YWlsYWJsZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIzMzYzYjJjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9yZW1vdmVUeXBlQXJndW1lbnRzL2JlZm9yZVJlbW92ZVVuYXZhaWxhYmxlLmphdmEKQEAgLTAsMCArMSw3IEBACisvLyAiUmVtb3ZlIHR5cGUgYXJndW1lbnRzIiAiZmFsc2UiCithYnN0cmFjdCBjbGFzcyBTb21lQ2xhc3M8SywgVD4gaW1wbGVtZW50cyBTb21lPEssIFQ+IHsKKyAgICBwdWJsaWMgYWJzdHJhY3Qgdm9pZCBkb1NvbWV0aGluZyhLIGtleSwgTm9kZTxjYXJldD48SywgVD4gcm9vdCk7Cit9CitjbGFzcyBOb2RlPEc+IHt9CitpbnRlcmZhY2UgU29tZTxJSSwgT08+e30KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9yZW1vdmVVbnVzZWRQYXJhbWV0ZXIvYWZ0ZXIxLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3JlbW92ZVVudXNlZFBhcmFtZXRlci9hZnRlcjEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NDZlMWVhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9yZW1vdmVVbnVzZWRQYXJhbWV0ZXIvYWZ0ZXIxLmphdmEKQEAgLTAsMCArMSw4IEBACisvLyAiUmVtb3ZlIFBhcmFtZXRlciAnaSciICJ0cnVlIgoraW1wb3J0IGphdmEuaW8uKjsKKworY2xhc3MgYSB7CisgcHJpdmF0ZSB2b2lkIHJ1big8Y2FyZXQ+KSB7CisgfQorfQorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3JlbW92ZVVudXNlZFBhcmFtZXRlci9hZnRlcjIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvcmVtb3ZlVW51c2VkUGFyYW1ldGVyL2FmdGVyMi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUwNzQ2YTUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3JlbW92ZVVudXNlZFBhcmFtZXRlci9hZnRlcjIuamF2YQpAQCAtMCwwICsxLDggQEAKKy8vICJSZW1vdmUgUGFyYW1ldGVyICdpJyIgInRydWUiCitpbXBvcnQgamF2YS5pby4qOworCitjbGFzcyBhIHsKKyBwcml2YXRlIHZvaWQgcnVuKGludCBpMSwgPGNhcmV0PmludCBlZSkgeworIH0KK30KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9yZW1vdmVVbnVzZWRQYXJhbWV0ZXIvYmVmb3JlMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9yZW1vdmVVbnVzZWRQYXJhbWV0ZXIvYmVmb3JlMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIwOGNlY2YKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3JlbW92ZVVudXNlZFBhcmFtZXRlci9iZWZvcmUxLmphdmEKQEAgLTAsMCArMSw4IEBACisvLyAiUmVtb3ZlIFBhcmFtZXRlciAnaSciICJ0cnVlIgoraW1wb3J0IGphdmEuaW8uKjsKKworY2xhc3MgYSB7CisgcHJpdmF0ZSB2b2lkIHJ1bihpbnQgPGNhcmV0PmkpIHsKKyB9Cit9CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvcmVtb3ZlVW51c2VkUGFyYW1ldGVyL2JlZm9yZTIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvcmVtb3ZlVW51c2VkUGFyYW1ldGVyL2JlZm9yZTIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNDRhNzc4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9yZW1vdmVVbnVzZWRQYXJhbWV0ZXIvYmVmb3JlMi5qYXZhCkBAIC0wLDAgKzEsOCBAQAorLy8gIlJlbW92ZSBQYXJhbWV0ZXIgJ2knIiAidHJ1ZSIKK2ltcG9ydCBqYXZhLmlvLio7CisKK2NsYXNzIGEgeworIHByaXZhdGUgdm9pZCBydW4oaW50IGkxLCBpbnQgPGNhcmV0PmksIGludCBlZSkgeworIH0KK30KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9yZW1vdmVVbnVzZWRWYXJpYWJsZS9hZnRlcjEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvcmVtb3ZlVW51c2VkVmFyaWFibGUvYWZ0ZXIxLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzYwMDA1MwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvcmVtb3ZlVW51c2VkVmFyaWFibGUvYWZ0ZXIxLmphdmEKQEAgLTAsMCArMSw4IEBACisvLyAiUmVtb3ZlIHZhcmlhYmxlICdpJyIgInRydWUiCitpbXBvcnQgamF2YS5pby4qOworCitjbGFzcyBhIHsKKyBwdWJsaWMgdm9pZCBydW4oKSB7CisgPGNhcmV0Pn0KK30KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9yZW1vdmVVbnVzZWRWYXJpYWJsZS9hZnRlcjEwLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3JlbW92ZVVudXNlZFZhcmlhYmxlL2FmdGVyMTAuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43YTk2ZDEwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9yZW1vdmVVbnVzZWRWYXJpYWJsZS9hZnRlcjEwLmphdmEKQEAgLTAsMCArMSwxMiBAQAorLy8gIlJlbW92ZSB2YXJpYWJsZSAnb28nIiAidHJ1ZSIKK2ltcG9ydCBqYXZhLmlvLio7CisKK2NsYXNzIGEgeworICAgIGludCBrOworICAgIHByaXZhdGUgaW50IHJ1bigpIHsKKyAgICAgIE9iamVjdCBvMSA9IC8qKmZmZmZmKi8gdGhpcyAvKmRkZGRkKi88Y2FyZXQ+LCBpID0gbnVsbDsKKworICAgICAgcmV0dXJuIDA7CisgICAgfQorfQorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3JlbW92ZVVudXNlZFZhcmlhYmxlL2FmdGVyMTEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvcmVtb3ZlVW51c2VkVmFyaWFibGUvYWZ0ZXIxMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlhYWZlZDMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3JlbW92ZVVudXNlZFZhcmlhYmxlL2FmdGVyMTEuamF2YQpAQCAtMCwwICsxLDEyIEBACisvLyAiUmVtb3ZlIHZhcmlhYmxlICdvbyciICJ0cnVlIgoraW1wb3J0IGphdmEuaW8uKjsKKworY2xhc3MgYSB7CisgICAgaW50IGs7CisgICAgcHJpdmF0ZSBpbnQgcnVuKCkgeworICAgICAgICBPYmplY3QgbzEgPSAvKipmZmZmZiovIHRoaXM7IC8qZGRkZGQqLzxjYXJldD4KKworICAgICAgICByZXR1cm4gMDsKKyAgICB9Cit9CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvcmVtb3ZlVW51c2VkVmFyaWFibGUvYWZ0ZXIxMi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9yZW1vdmVVbnVzZWRWYXJpYWJsZS9hZnRlcjEyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTQzZDA3ZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvcmVtb3ZlVW51c2VkVmFyaWFibGUvYWZ0ZXIxMi5qYXZhCkBAIC0wLDAgKzEsMTIgQEAKKy8vICJSZW1vdmUgdmFyaWFibGUgJ28xJyIgInRydWUiCitpbXBvcnQgamF2YS5pby4qOworCitjbGFzcyBhIHsKKyAgICBpbnQgazsKKyAgICBwcml2YXRlIGludCBydW4oKSB7CisgICAgICAvKmRkZGRkKi8gT2JqZWN0IG9vID0gKE9iamVjdCkgbmV3IEludGVnZXIoMCk7CisKKyAgICAgIHJldHVybiAwOworICAgIH0KK30KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9yZW1vdmVVbnVzZWRWYXJpYWJsZS9hZnRlcjEzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3JlbW92ZVVudXNlZFZhcmlhYmxlL2FmdGVyMTMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYTE1NDQ2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9yZW1vdmVVbnVzZWRWYXJpYWJsZS9hZnRlcjEzLmphdmEKQEAgLTAsMCArMSwxMiBAQAorLy8gIlJlbW92ZSB2YXJpYWJsZSAnbzEnIiAidHJ1ZSIKK2ltcG9ydCBqYXZhLmlvLio7CisKK2NsYXNzIGEgeworICAgIGludCBrOworICAgIHByaXZhdGUgaW50IHJ1bigpIHsKKyAgICAgIE9iamVjdCBvMDxjYXJldD4sIC8qZGRkZGQqLyBvbyA9IChPYmplY3QpIG5ldyBJbnRlZ2VyKDApOworCisgICAgICByZXR1cm4gMDsKKyAgICB9Cit9CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvcmVtb3ZlVW51c2VkVmFyaWFibGUvYWZ0ZXIxNC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9yZW1vdmVVbnVzZWRWYXJpYWJsZS9hZnRlcjE0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTRhNTEyOQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvcmVtb3ZlVW51c2VkVmFyaWFibGUvYWZ0ZXIxNC5qYXZhCkBAIC0wLDAgKzEsMTIgQEAKKy8vICJSZW1vdmUgdmFyaWFibGUgJ28xJyIgInRydWUiCitpbXBvcnQgamF2YS5pby4qOworCitjbGFzcyBhIHsKKyAgICBpbnQgazsKKyAgICBwcml2YXRlIGludCBydW4oKSB7CisgICAgICAgIE9iamVjdCBvMCwgb287PGNhcmV0PgorCisgICAgICAgIHJldHVybiAwOworICAgIH0KK30KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9yZW1vdmVVbnVzZWRWYXJpYWJsZS9hZnRlcjE1LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3JlbW92ZVVudXNlZFZhcmlhYmxlL2FmdGVyMTUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hOGQyN2EyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9yZW1vdmVVbnVzZWRWYXJpYWJsZS9hZnRlcjE1LmphdmEKQEAgLTAsMCArMSwxMCBAQAorLy8gIlJlbW92ZSB2YXJpYWJsZSAnbyciICJ0cnVlIgoraW1wb3J0IGphdmEuaW8uKjsKKworY2xhc3MgYSB7CisgICAgcHJpdmF0ZSBpbnQgcnVuKCkgezxjYXJldD4KKworICAgICAgICByZXR1cm4gMDsKKyAgICB9Cit9CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvcmVtb3ZlVW51c2VkVmFyaWFibGUvYWZ0ZXIxNi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9yZW1vdmVVbnVzZWRWYXJpYWJsZS9hZnRlcjE2LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDVlNDljMwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvcmVtb3ZlVW51c2VkVmFyaWFibGUvYWZ0ZXIxNi5qYXZhCkBAIC0wLDAgKzEsMTEgQEAKKy8vICJSZW1vdmUgdmFyaWFibGUgJ28nIiAidHJ1ZSIKK2ltcG9ydCBqYXZhLmlvLio7CisKK2NsYXNzIGEgeworICAgIGludCBrOworICAgIHByaXZhdGUgaW50IHJ1bigpIHs8Y2FyZXQ+CisKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorfQorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3JlbW92ZVVudXNlZFZhcmlhYmxlL2FmdGVyMTcuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvcmVtb3ZlVW51c2VkVmFyaWFibGUvYWZ0ZXIxNy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNlYTdjOTUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3JlbW92ZVVudXNlZFZhcmlhYmxlL2FmdGVyMTcuamF2YQpAQCAtMCwwICsxLDEyIEBACisvLyAiUmVtb3ZlIHZhcmlhYmxlICdvJyIgInRydWUiCitpbXBvcnQgamF2YS5pby4qOworCitjbGFzcyBhIHsKKyAgICBpbnQgazsKKyAgICBwcml2YXRlIGludCBydW4oKSB7CisgICAgICAgIGludCBhID0gMDs8Y2FyZXQ+CisKKyAgICAgICAgcmV0dXJuIGE7CisgICAgfQorfQorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3JlbW92ZVVudXNlZFZhcmlhYmxlL2FmdGVyMi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9yZW1vdmVVbnVzZWRWYXJpYWJsZS9hZnRlcjIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMzFlZjBjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9yZW1vdmVVbnVzZWRWYXJpYWJsZS9hZnRlcjIuamF2YQpAQCAtMCwwICsxLDkgQEAKKy8vICJSZW1vdmUgdmFyaWFibGUgJ2knIiAidHJ1ZSIKK2ltcG9ydCBqYXZhLmlvLio7CisKK2NsYXNzIGEgeworIHByaXZhdGUgdm9pZCBydW4oKSB7CisgICAgIGludCBqOworIDxjYXJldD59Cit9CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvcmVtb3ZlVW51c2VkVmFyaWFibGUvYWZ0ZXI0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3JlbW92ZVVudXNlZFZhcmlhYmxlL2FmdGVyNC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJmNmQxNDcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3JlbW92ZVVudXNlZFZhcmlhYmxlL2FmdGVyNC5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKKy8vICJSZW1vdmUgZmllbGQgJ2knIiAidHJ1ZSIKK2ltcG9ydCBqYXZhLmlvLio7CisKK2NsYXNzIGEgeworICAgIDxjYXJldD5wcml2YXRlIHZvaWQgcnVuKCkgeworICAgICAgICBpbnQgajsKKyAgICAgICAgaW50IGk7CisgICAgfQorfQorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3JlbW92ZVVudXNlZFZhcmlhYmxlL2FmdGVyNS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9yZW1vdmVVbnVzZWRWYXJpYWJsZS9hZnRlcjUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NTExYzhkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9yZW1vdmVVbnVzZWRWYXJpYWJsZS9hZnRlcjUuamF2YQpAQCAtMCwwICsxLDExIEBACisvLyAiUmVtb3ZlIGZpZWxkICdpJyIgInRydWUiCitpbXBvcnQgamF2YS5pby4qOworCitjbGFzcyBhIHsKKyAgICA8Y2FyZXQ+cHJpdmF0ZSB2b2lkIHJ1bigpIHsKKyAgICAgICAgaW50IGo7CisgICAgICAgIGludCBrID0gOTsKKyAgICAgICAgaWYgKDMgPT0wKSA7CisgICAgfQorfQorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3JlbW92ZVVudXNlZFZhcmlhYmxlL2FmdGVyNi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9yZW1vdmVVbnVzZWRWYXJpYWJsZS9hZnRlcjYuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZTRjMzA0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9yZW1vdmVVbnVzZWRWYXJpYWJsZS9hZnRlcjYuamF2YQpAQCAtMCwwICsxLDEzIEBACisvLyAiUmVtb3ZlIHZhcmlhYmxlICdpJyIgInRydWUiCitpbXBvcnQgamF2YS5pby4qOworCitjbGFzcyBhIHsKKyAgICBwcml2YXRlIGludCBydW4oKSB7CisgICAgICAgIDxjYXJldD5pbnQgajsKKyAgICAgICAgaW50IGsgPSA5OworICAgICAgICBpZiAoMyA9PTApIDsKKyAgICAgICAgZWxzZSByZXR1cm4gazsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorfQorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3JlbW92ZVVudXNlZFZhcmlhYmxlL2FmdGVyNy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9yZW1vdmVVbnVzZWRWYXJpYWJsZS9hZnRlcjcuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YWQ0MWNmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9yZW1vdmVVbnVzZWRWYXJpYWJsZS9hZnRlcjcuamF2YQpAQCAtMCwwICsxLDExIEBACisvLyAiUmVtb3ZlIHZhcmlhYmxlICdpJyIgInRydWUiCitpbXBvcnQgamF2YS5pby4qOworCitjbGFzcyBhIHsKKyAgICBpbnQgazsKKyAgICBwcml2YXRlIHZvaWQgcnVuKCkgeworICAgICAgICA8Y2FyZXQ+d2hpbGUgKDEgPiAwKSA7CisgICAgICAgIGZvciAoOzsgKSA7CisgICAgfQorfQorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3JlbW92ZVVudXNlZFZhcmlhYmxlL2FmdGVyOC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9yZW1vdmVVbnVzZWRWYXJpYWJsZS9hZnRlcjguamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZTY4YWIzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9yZW1vdmVVbnVzZWRWYXJpYWJsZS9hZnRlcjguamF2YQpAQCAtMCwwICsxLDEyIEBACisvLyAiUmVtb3ZlIHZhcmlhYmxlICdvbyciICJ0cnVlIgoraW1wb3J0IGphdmEuaW8uKjsKKworY2xhc3MgYSB7CisgICAgaW50IGs7CisgICAgcHJpdmF0ZSBpbnQgcnVuKCkgeworICAgICAgICBuZXcgYSgpOworCisgICAgICAgIHJldHVybiAwOworICAgIH0KK30KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9yZW1vdmVVbnVzZWRWYXJpYWJsZS9hZnRlcjkuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvcmVtb3ZlVW51c2VkVmFyaWFibGUvYWZ0ZXI5LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDJkYTk4OQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvcmVtb3ZlVW51c2VkVmFyaWFibGUvYWZ0ZXI5LmphdmEKQEAgLTAsMCArMSwxMiBAQAorLy8gIlJlbW92ZSB2YXJpYWJsZSAnb28nIiAidHJ1ZSIKK2ltcG9ydCBqYXZhLmlvLio7CisKK2NsYXNzIGEgeworICAgIGludCBrOworICAgIHByaXZhdGUgaW50IHJ1bigpIHsKKyAgICAgIDxjYXJldD5PYmplY3QgaSA9IG51bGw7CisKKyAgICAgIHJldHVybiAwOworICAgIH0KK30KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9yZW1vdmVVbnVzZWRWYXJpYWJsZS9hZnRlckZpZWxkLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3JlbW92ZVVudXNlZFZhcmlhYmxlL2FmdGVyRmllbGQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMDlkNTBmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9yZW1vdmVVbnVzZWRWYXJpYWJsZS9hZnRlckZpZWxkLmphdmEKQEAgLTAsMCArMSw3IEBACisvLyAiUmVtb3ZlIGZpZWxkICdrJyIgInRydWUiCitpbXBvcnQgamF2YS5pby4qOworCitjbGFzcyBhIHsKKyAgICBwcml2YXRlIGludCBsbGw7Cit9CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvcmVtb3ZlVW51c2VkVmFyaWFibGUvYWZ0ZXJGaWVsZDIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvcmVtb3ZlVW51c2VkVmFyaWFibGUvYWZ0ZXJGaWVsZDIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZjEyMDdmOAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvcmVtb3ZlVW51c2VkVmFyaWFibGUvYWZ0ZXJGaWVsZDIuamF2YQpAQCAtMCwwICsxLDcgQEAKKy8vICJSZW1vdmUgZmllbGQgJ2snIiAidHJ1ZSIKK2ltcG9ydCBqYXZhLmlvLio7CisKK2NsYXNzIGEgeworICAgIHByaXZhdGUgaW50IHh4eDsKK30KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9yZW1vdmVVbnVzZWRWYXJpYWJsZS9iZWZvcmUxLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3JlbW92ZVVudXNlZFZhcmlhYmxlL2JlZm9yZTEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZmRlZjhiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9yZW1vdmVVbnVzZWRWYXJpYWJsZS9iZWZvcmUxLmphdmEKQEAgLTAsMCArMSwxMSBAQAorLy8gIlJlbW92ZSB2YXJpYWJsZSAnaSciICJ0cnVlIgoraW1wb3J0IGphdmEuaW8uKjsKKworY2xhc3MgYSB7CisgcHVibGljIHZvaWQgcnVuKCkgeworICAgIGludCA8Y2FyZXQ+aSA9IDA7CisgICAgaSsrOworICAgIGkrKzsKKyB9Cit9CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvcmVtb3ZlVW51c2VkVmFyaWFibGUvYmVmb3JlMTAuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvcmVtb3ZlVW51c2VkVmFyaWFibGUvYmVmb3JlMTAuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYmI5MjkyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9yZW1vdmVVbnVzZWRWYXJpYWJsZS9iZWZvcmUxMC5qYXZhCkBAIC0wLDAgKzEsMTIgQEAKKy8vICJSZW1vdmUgdmFyaWFibGUgJ29vJyIgInRydWUiCitpbXBvcnQgamF2YS5pby4qOworCitjbGFzcyBhIHsKKyAgICBpbnQgazsKKyAgICBwcml2YXRlIGludCBydW4oKSB7CisgICAgICBPYmplY3QgbzEgPSAvKipmZmZmZiovIHRoaXMsIC8qZGRkZGQqLzxjYXJldD5vbyA9IChPYmplY3QpIG5ldyBJbnRlZ2VyKDApLCBpID0gbnVsbDsKKworICAgICAgcmV0dXJuIDA7CisgICAgfQorfQorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3JlbW92ZVVudXNlZFZhcmlhYmxlL2JlZm9yZTExLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3JlbW92ZVVudXNlZFZhcmlhYmxlL2JlZm9yZTExLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTJmZTM5OQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvcmVtb3ZlVW51c2VkVmFyaWFibGUvYmVmb3JlMTEuamF2YQpAQCAtMCwwICsxLDEyIEBACisvLyAiUmVtb3ZlIHZhcmlhYmxlICdvbyciICJ0cnVlIgoraW1wb3J0IGphdmEuaW8uKjsKKworY2xhc3MgYSB7CisgICAgaW50IGs7CisgICAgcHJpdmF0ZSBpbnQgcnVuKCkgeworICAgICAgICBPYmplY3QgbzEgPSAvKipmZmZmZiovIHRoaXMsIC8qZGRkZGQqLzxjYXJldD5vbyA9IChPYmplY3QpIG5ldyBJbnRlZ2VyKDApOworCisgICAgICAgIHJldHVybiAwOworICAgIH0KK30KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9yZW1vdmVVbnVzZWRWYXJpYWJsZS9iZWZvcmUxMi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9yZW1vdmVVbnVzZWRWYXJpYWJsZS9iZWZvcmUxMi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI3OWRkYjFmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9yZW1vdmVVbnVzZWRWYXJpYWJsZS9iZWZvcmUxMi5qYXZhCkBAIC0wLDAgKzEsMTIgQEAKKy8vICJSZW1vdmUgdmFyaWFibGUgJ28xJyIgInRydWUiCitpbXBvcnQgamF2YS5pby4qOworCitjbGFzcyBhIHsKKyAgICBpbnQgazsKKyAgICBwcml2YXRlIGludCBydW4oKSB7CisgICAgICBPYmplY3QgPGNhcmV0Pm8xLCAvKmRkZGRkKi8gb28gPSAoT2JqZWN0KSBuZXcgSW50ZWdlcigwKTsKKworICAgICAgcmV0dXJuIDA7CisgICAgfQorfQorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3JlbW92ZVVudXNlZFZhcmlhYmxlL2JlZm9yZTEzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3JlbW92ZVVudXNlZFZhcmlhYmxlL2JlZm9yZTEzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzhlZmU1OQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvcmVtb3ZlVW51c2VkVmFyaWFibGUvYmVmb3JlMTMuamF2YQpAQCAtMCwwICsxLDEyIEBACisvLyAiUmVtb3ZlIHZhcmlhYmxlICdvMSciICJ0cnVlIgoraW1wb3J0IGphdmEuaW8uKjsKKworY2xhc3MgYSB7CisgICAgaW50IGs7CisgICAgcHJpdmF0ZSBpbnQgcnVuKCkgeworICAgICAgT2JqZWN0IG8wLCA8Y2FyZXQ+bzEsIC8qZGRkZGQqLyBvbyA9IChPYmplY3QpIG5ldyBJbnRlZ2VyKDApOworCisgICAgICByZXR1cm4gMDsKKyAgICB9Cit9CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvcmVtb3ZlVW51c2VkVmFyaWFibGUvYmVmb3JlMTQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvcmVtb3ZlVW51c2VkVmFyaWFibGUvYmVmb3JlMTQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNzY3MmY3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9yZW1vdmVVbnVzZWRWYXJpYWJsZS9iZWZvcmUxNC5qYXZhCkBAIC0wLDAgKzEsMTIgQEAKKy8vICJSZW1vdmUgdmFyaWFibGUgJ28xJyIgInRydWUiCitpbXBvcnQgamF2YS5pby4qOworCitjbGFzcyBhIHsKKyAgICBpbnQgazsKKyAgICBwcml2YXRlIGludCBydW4oKSB7CisgICAgICAgIE9iamVjdCBvMCwgb28sIDxjYXJldD5vMTsKKworICAgICAgICByZXR1cm4gMDsKKyAgICB9Cit9CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvcmVtb3ZlVW51c2VkVmFyaWFibGUvYmVmb3JlMTUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvcmVtb3ZlVW51c2VkVmFyaWFibGUvYmVmb3JlMTUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNTFlZDA1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9yZW1vdmVVbnVzZWRWYXJpYWJsZS9iZWZvcmUxNS5qYXZhCkBAIC0wLDAgKzEsMTMgQEAKKy8vICJSZW1vdmUgdmFyaWFibGUgJ28nIiAidHJ1ZSIKK2ltcG9ydCBqYXZhLmlvLio7CisKK2NsYXNzIGEgeworICAgIHByaXZhdGUgaW50IHJ1bigpIHsKKyAgICAgICAgT2JqZWN0IDxjYXJldD5vID0gbmV3IGphdmEubGFuZy5SdW50aW1lRXhjZXB0aW9uKG5ldyBTdHJpbmcoCisgICAgICAgICAgICAgICAgIiIrbmV3IGphdmEubGFuZy5JbnRlZ2VyKCIiK25ldyBqYXZhLmxhbmcuTG9uZygiIituZXcgamF2YS5sYW5nLkJvb2xlYW4oKSkpKSwKKyAgICAgICAgICAgICAgICBuZXcgamF2YS5sYW5nLlRocm93YWJsZSgiIixuZXcgSU9FeGNlcHRpb24oIiIrbmV3IE9iamVjdCgpKSkpOworCisgICAgICAgIHJldHVybiAwOworICAgIH0KK30KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9yZW1vdmVVbnVzZWRWYXJpYWJsZS9iZWZvcmUxNi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9yZW1vdmVVbnVzZWRWYXJpYWJsZS9iZWZvcmUxNi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFjY2M0MmQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3JlbW92ZVVudXNlZFZhcmlhYmxlL2JlZm9yZTE2LmphdmEKQEAgLTAsMCArMSwxMiBAQAorLy8gIlJlbW92ZSB2YXJpYWJsZSAnbyciICJ0cnVlIgoraW1wb3J0IGphdmEuaW8uKjsKKworY2xhc3MgYSB7CisgICAgaW50IGs7CisgICAgcHJpdmF0ZSBpbnQgcnVuKCkgeworICAgICAgICBPYmplY3RbXSA8Y2FyZXQ+byA9IG5ldyBPYmplY3RbXSB7IG51bGwgfTsKKworICAgICAgICByZXR1cm4gMDsKKyAgICB9Cit9CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvcmVtb3ZlVW51c2VkVmFyaWFibGUvYmVmb3JlMTcuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvcmVtb3ZlVW51c2VkVmFyaWFibGUvYmVmb3JlMTcuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNWQ3OWU1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9yZW1vdmVVbnVzZWRWYXJpYWJsZS9iZWZvcmUxNy5qYXZhCkBAIC0wLDAgKzEsMTMgQEAKKy8vICJSZW1vdmUgdmFyaWFibGUgJ28nIiAidHJ1ZSIKK2ltcG9ydCBqYXZhLmlvLio7CisKK2NsYXNzIGEgeworICAgIGludCBrOworICAgIHByaXZhdGUgaW50IHJ1bigpIHsKKyAgICAgICAgaW50IGEgPSAwOworICAgICAgICBPYmplY3RbXSA8Y2FyZXQ+byA9IG5ldyBPYmplY3RbMV07CisKKyAgICAgICAgcmV0dXJuIGE7CisgICAgfQorfQorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3JlbW92ZVVudXNlZFZhcmlhYmxlL2JlZm9yZTIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvcmVtb3ZlVW51c2VkVmFyaWFibGUvYmVmb3JlMi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI5ZjQxYzkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3JlbW92ZVVudXNlZFZhcmlhYmxlL2JlZm9yZTIuamF2YQpAQCAtMCwwICsxLDEwIEBACisvLyAiUmVtb3ZlIHZhcmlhYmxlICdpJyIgInRydWUiCitpbXBvcnQgamF2YS5pby4qOworCitjbGFzcyBhIHsKKyBwcml2YXRlIHZvaWQgcnVuKCkgeworICAgICBpbnQgajsKKyAgICAgaW50IDxjYXJldD5pOworIH0KK30KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9yZW1vdmVVbnVzZWRWYXJpYWJsZS9iZWZvcmUzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3JlbW92ZVVudXNlZFZhcmlhYmxlL2JlZm9yZTMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYTU2YmMwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9yZW1vdmVVbnVzZWRWYXJpYWJsZS9iZWZvcmUzLmphdmEKQEAgLTAsMCArMSw4IEBACisvLyAiUmVtb3ZlIHZhcmlhYmxlICdpJyIgImZhbHNlIgoraW1wb3J0IGphdmEuaW8uKjsKKworY2xhc3MgYSB7CisgcHJpdmF0ZSB2b2lkIHJ1bihpbnQgPGNhcmV0PmkpIHsKKyB9Cit9CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvcmVtb3ZlVW51c2VkVmFyaWFibGUvYmVmb3JlNC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9yZW1vdmVVbnVzZWRWYXJpYWJsZS9iZWZvcmU0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDJkMzA0NQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvcmVtb3ZlVW51c2VkVmFyaWFibGUvYmVmb3JlNC5qYXZhCkBAIC0wLDAgKzEsMTEgQEAKKy8vICJSZW1vdmUgZmllbGQgJ2knIiAidHJ1ZSIKK2ltcG9ydCBqYXZhLmlvLio7CisKK2NsYXNzIGEgeworICAgIHByaXZhdGUgaW50IDxjYXJldD5pOworICAgIHByaXZhdGUgdm9pZCBydW4oKSB7CisgICAgICAgIGludCBqOworICAgICAgICBpbnQgaTsKKyAgICB9Cit9CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvcmVtb3ZlVW51c2VkVmFyaWFibGUvYmVmb3JlNS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9yZW1vdmVVbnVzZWRWYXJpYWJsZS9iZWZvcmU1LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzg3NjhjZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvcmVtb3ZlVW51c2VkVmFyaWFibGUvYmVmb3JlNS5qYXZhCkBAIC0wLDAgKzEsMTUgQEAKKy8vICJSZW1vdmUgZmllbGQgJ2knIiAidHJ1ZSIKK2ltcG9ydCBqYXZhLmlvLio7CisKK2NsYXNzIGEgeworICAgIHByaXZhdGUgaW50IDxjYXJldD5pID0gMDsKKyAgICBwcml2YXRlIHZvaWQgcnVuKCkgeworICAgICAgICBpbnQgajsKKyAgICAgICAgaSsrOworICAgICAgICBpbnQgayA9IDk7CisgICAgICAgIGk9KGk9KGs9OSk9PTAgPyBrPTggOiAwKTsKKyAgICAgICAgaSA9IDk7CisgICAgICAgIGlmICgoaT0zKT09MCkgaT0wOworICAgIH0KK30KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9yZW1vdmVVbnVzZWRWYXJpYWJsZS9iZWZvcmU2LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3JlbW92ZVVudXNlZFZhcmlhYmxlL2JlZm9yZTYuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYmNhZDFjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9yZW1vdmVVbnVzZWRWYXJpYWJsZS9iZWZvcmU2LmphdmEKQEAgLTAsMCArMSwxNyBAQAorLy8gIlJlbW92ZSB2YXJpYWJsZSAnaSciICJ0cnVlIgoraW1wb3J0IGphdmEuaW8uKjsKKworY2xhc3MgYSB7CisgICAgcHJpdmF0ZSBpbnQgcnVuKCkgeworICAgICAgICBpbnQgPGNhcmV0PmkgPSAwOworICAgICAgICBpbnQgajsKKyAgICAgICAgaSsrOworICAgICAgICBpbnQgayA9IDk7CisgICAgICAgIGk9KGk9KGs9OSk9PTAgPyBrPTggOiAwKTsKKyAgICAgICAgaSA9IDk7CisgICAgICAgIGlmICgoaT0zKT09MCkgaT0wOworICAgICAgICBlbHNlIHJldHVybiBpPShrKTsKKyAgICAgICAgcmV0dXJuIGk9aT0wOworICAgIH0KK30KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9yZW1vdmVVbnVzZWRWYXJpYWJsZS9iZWZvcmU3LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3JlbW92ZVVudXNlZFZhcmlhYmxlL2JlZm9yZTcuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZTVmODljCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9yZW1vdmVVbnVzZWRWYXJpYWJsZS9iZWZvcmU3LmphdmEKQEAgLTAsMCArMSwxNSBAQAorLy8gIlJlbW92ZSB2YXJpYWJsZSAnaSciICJ0cnVlIgoraW1wb3J0IGphdmEuaW8uKjsKKworY2xhc3MgYSB7CisgICAgaW50IGs7CisgICAgcHJpdmF0ZSB2b2lkIHJ1bigpIHsKKyAgICAgICAgaW50IDxjYXJldD5pID0gKChrPTkpKTsKKyAgICAgICAgaSs9azsKKyAgICAgICAgaT0oaT0oaz05KT09MCA/IGs9OCA6IDApOworICAgICAgICBpID0gOTsKKyAgICAgICAgd2hpbGUgKChpPTEpID4gMCkgaT0xOworICAgICAgICBmb3IgKDs7aSsrKSBpPTA7CisgICAgfQorfQorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3JlbW92ZVVudXNlZFZhcmlhYmxlL2JlZm9yZTguamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvcmVtb3ZlVW51c2VkVmFyaWFibGUvYmVmb3JlOC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFiMjkwYTY2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9yZW1vdmVVbnVzZWRWYXJpYWJsZS9iZWZvcmU4LmphdmEKQEAgLTAsMCArMSwxMiBAQAorLy8gIlJlbW92ZSB2YXJpYWJsZSAnb28nIiAidHJ1ZSIKK2ltcG9ydCBqYXZhLmlvLio7CisKK2NsYXNzIGEgeworICAgIGludCBrOworICAgIHByaXZhdGUgaW50IHJ1bigpIHsKKyAgICAgICAgT2JqZWN0IDxjYXJldD5vbyA9IChPYmplY3QpIG5ldyBhKCk7CisKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorfQorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3JlbW92ZVVudXNlZFZhcmlhYmxlL2JlZm9yZTkuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvcmVtb3ZlVW51c2VkVmFyaWFibGUvYmVmb3JlOS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFjMjE2MzkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3JlbW92ZVVudXNlZFZhcmlhYmxlL2JlZm9yZTkuamF2YQpAQCAtMCwwICsxLDEyIEBACisvLyAiUmVtb3ZlIHZhcmlhYmxlICdvbyciICJ0cnVlIgoraW1wb3J0IGphdmEuaW8uKjsKKworY2xhc3MgYSB7CisgICAgaW50IGs7CisgICAgcHJpdmF0ZSBpbnQgcnVuKCkgeworICAgICAgT2JqZWN0IDxjYXJldD5vbyA9IChPYmplY3QpIG5ldyBJbnRlZ2VyKDApLCBpID0gbnVsbDsKKworICAgICAgcmV0dXJuIDA7CisgICAgfQorfQorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3JlbW92ZVVudXNlZFZhcmlhYmxlL2JlZm9yZUZpZWxkLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3JlbW92ZVVudXNlZFZhcmlhYmxlL2JlZm9yZUZpZWxkLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWY5M2VlMAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvcmVtb3ZlVW51c2VkVmFyaWFibGUvYmVmb3JlRmllbGQuamF2YQpAQCAtMCwwICsxLDcgQEAKKy8vICJSZW1vdmUgZmllbGQgJ2snIiAidHJ1ZSIKK2ltcG9ydCBqYXZhLmlvLio7CisKK2NsYXNzIGEgeworICAgIHByaXZhdGUgaW50IDxjYXJldD5rLCBsbGw7Cit9CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvcmVtb3ZlVW51c2VkVmFyaWFibGUvYmVmb3JlRmllbGQyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3JlbW92ZVVudXNlZFZhcmlhYmxlL2JlZm9yZUZpZWxkMi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVkNDc3ZDYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3JlbW92ZVVudXNlZFZhcmlhYmxlL2JlZm9yZUZpZWxkMi5qYXZhCkBAIC0wLDAgKzEsNyBAQAorLy8gIlJlbW92ZSBmaWVsZCAnayciICJ0cnVlIgoraW1wb3J0IGphdmEuaW8uKjsKKworY2xhc3MgYSB7CisgICAgcHJpdmF0ZSBpbnQgeHh4LDxjYXJldD5rOworfQorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3JlbmFtZUNvbnN0cnVjdG9yTWF0Y2hpbmdDbGFzcy9hZnRlcjEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvcmVuYW1lQ29uc3RydWN0b3JNYXRjaGluZ0NsYXNzL2FmdGVyMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM0OTFlYTEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3JlbmFtZUNvbnN0cnVjdG9yTWF0Y2hpbmdDbGFzcy9hZnRlcjEuamF2YQpAQCAtMCwwICsxLDQgQEAKKy8vICJSZW5hbWUgJ0ZvbycgdG8gJ0JhciciICJ0cnVlIgorY2xhc3MgQmFyIHsKKyAgQmFyKCl7fQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvcmVuYW1lQ29uc3RydWN0b3JNYXRjaGluZ0NsYXNzL2JlZm9yZTEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvcmVuYW1lQ29uc3RydWN0b3JNYXRjaGluZ0NsYXNzL2JlZm9yZTEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xOGVmMDc1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9yZW5hbWVDb25zdHJ1Y3Rvck1hdGNoaW5nQ2xhc3MvYmVmb3JlMS5qYXZhCkBAIC0wLDAgKzEsNCBAQAorLy8gIlJlbmFtZSAnRm9vJyB0byAnQmFyJyIgInRydWUiCitjbGFzcyBCYXIgeworICBGbzxjYXJldD5vKCl7fQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvcmVuYW1lV3JvbmdSZWZlcmVuY2UvYmVmb3JlMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9yZW5hbWVXcm9uZ1JlZmVyZW5jZS9iZWZvcmUxLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDYxNzk2MAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvcmVuYW1lV3JvbmdSZWZlcmVuY2UvYmVmb3JlMS5qYXZhCkBAIC0wLDAgKzEsNiBAQAorLy8gIlJlbmFtZSBSZWZlcmVuY2UiICJ0cnVlIgorY2xhc3MgYyB7Cisgdm9pZCAoKSB7CisgICBpbnQgaSA9IDxjYXJldD54OworIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3JlbmFtZVdyb25nUmVmZXJlbmNlL2JlZm9yZTIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvcmVuYW1lV3JvbmdSZWZlcmVuY2UvYmVmb3JlMi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ3OGMwMjkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3JlbmFtZVdyb25nUmVmZXJlbmNlL2JlZm9yZTIuamF2YQpAQCAtMCwwICsxLDExIEBACisvLyAiUmVuYW1lIFJlZmVyZW5jZSIgInRydWUiCitjbGFzcyBjIHsKKyB2b2lkIGZvbyhib29sZWFuIGIpIHsKKyAgIGlmIChiKSB7CisgICAgIGludCBpID0gMDsKKyAgICAgaSsrOworICAgfSBlbHNlIHsKKyAgICAgaTxjYXJldD4rKzsKKyAgIH0KKyB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9yZW5hbWVXcm9uZ1JlZmVyZW5jZS9iZWZvcmVSZXNvbHZlZE1ldGhvZC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9yZW5hbWVXcm9uZ1JlZmVyZW5jZS9iZWZvcmVSZXNvbHZlZE1ldGhvZC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ2OTZmOGUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3JlbmFtZVdyb25nUmVmZXJlbmNlL2JlZm9yZVJlc29sdmVkTWV0aG9kLmphdmEKQEAgLTAsMCArMSw5IEBACisvLyAiUmVuYW1lIFJlZmVyZW5jZSIgImZhbHNlIgorY2xhc3MgRm9vIHsKKyAgICB2b2lkIGJhcihpbnQgeCkgeworICAgIH0KKworICAgIHZvaWQgYnV6eigpIHsKKyAgICAgICAgYjxjYXJldD5hcigpOyAvLyBUcnkgdG8gcmVuYW1lIGJhciB3aXRoIFNoaWZ0K0Y2CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvcmVuYW1lV3JvbmdSZWZlcmVuY2UvYmVmb3JlUmVzb2x2ZWRXaXRoSW52YWxpZEFjY2Vzc0ZpZWxkLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3JlbmFtZVdyb25nUmVmZXJlbmNlL2JlZm9yZVJlc29sdmVkV2l0aEludmFsaWRBY2Nlc3NGaWVsZC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZkZDczZGIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3JlbmFtZVdyb25nUmVmZXJlbmNlL2JlZm9yZVJlc29sdmVkV2l0aEludmFsaWRBY2Nlc3NGaWVsZC5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKKy8vICJSZW5hbWUgUmVmZXJlbmNlIiAidHJ1ZSIKK2NsYXNzIEZvb0ludGVyZmFjZSB7CisgIHByaXZhdGUgaW50IG15SW50OworfQorCitjbGFzcyBGb28geworICAgIHZvaWQgYnV6eigpIHsKKyAgICAgICAgbXlJPGNhcmV0Pm50ICsgbXlJbnQ7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvcmVwbGFjZUFkZEFsbEFycmF5VG9Db2xsZWN0aW9ucy9hZnRlcjEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvcmVwbGFjZUFkZEFsbEFycmF5VG9Db2xsZWN0aW9ucy9hZnRlcjEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NzgwZmFjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9yZXBsYWNlQWRkQWxsQXJyYXlUb0NvbGxlY3Rpb25zL2FmdGVyMS5qYXZhCkBAIC0wLDAgKzEsMTEgQEAKKy8vICJSZXBsYWNlIGwuYWRkQWxsKG9ianMpIHdpdGggamF2YS51dGlsLkNvbGxlY3Rpb25zLmFkZEFsbChsLCBvYmpzKSIgInRydWUiCitpbXBvcnQgamF2YS51dGlsLkNvbGxlY3Rpb25zOworaW1wb3J0IGphdmEudXRpbC5MaXN0OworCitjbGFzcyBBIHsKKyAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncyl7CisgICAgTGlzdCBsID0gbmV3IExpc3QoKTsKKyAgICBPYmplY3QgW10gb2JqcyA9IG5ldyBPYmplY3RbMF07CisgICAgQ29sbGVjdGlvbnMuYWRkQWxsKGwsIG9ianMpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9yZXBsYWNlQWRkQWxsQXJyYXlUb0NvbGxlY3Rpb25zL2FmdGVyMi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9yZXBsYWNlQWRkQWxsQXJyYXlUb0NvbGxlY3Rpb25zL2FmdGVyMi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRmOGZlYjA5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9yZXBsYWNlQWRkQWxsQXJyYXlUb0NvbGxlY3Rpb25zL2FmdGVyMi5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKKy8vICJSZXBsYWNlIGFkZEFsbChvYmpzKSB3aXRoIGphdmEudXRpbC5Db2xsZWN0aW9ucy5hZGRBbGwodGhpcywgb2JqcykiICJ0cnVlIgoraW1wb3J0IGphdmEudXRpbC5Db2xsZWN0aW9uczsKK2ltcG9ydCBqYXZhLnV0aWwuTGlzdDsKKworY2xhc3MgQSBpbXBsZW1lbnRzIExpc3QgeworICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKXsKKyAgICBPYmplY3RbXSBvYmpzID0gbmV3IE9iamVjdFswXTsKKyAgICBDb2xsZWN0aW9ucy5hZGRBbGwodGhpcywgb2Jqcyk7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3JlcGxhY2VBZGRBbGxBcnJheVRvQ29sbGVjdGlvbnMvYmVmb3JlMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9yZXBsYWNlQWRkQWxsQXJyYXlUb0NvbGxlY3Rpb25zL2JlZm9yZTEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNWE4ZWYzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9yZXBsYWNlQWRkQWxsQXJyYXlUb0NvbGxlY3Rpb25zL2JlZm9yZTEuamF2YQpAQCAtMCwwICsxLDEwIEBACisvLyAiUmVwbGFjZSBsLmFkZEFsbChvYmpzKSB3aXRoIGphdmEudXRpbC5Db2xsZWN0aW9ucy5hZGRBbGwobCwgb2JqcykiICJ0cnVlIgoraW1wb3J0IGphdmEudXRpbC5MaXN0OworCitjbGFzcyBBIHsKKyAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncyl7CisgICAgTGlzdCBsID0gbmV3IExpc3QoKTsKKyAgICBPYmplY3QgW10gb2JqcyA9IG5ldyBPYmplY3RbMF07CisgICAgbC5hZGRBbGwoPGNhcmV0Pm9ianMpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9yZXBsYWNlQWRkQWxsQXJyYXlUb0NvbGxlY3Rpb25zL2JlZm9yZTIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvcmVwbGFjZUFkZEFsbEFycmF5VG9Db2xsZWN0aW9ucy9iZWZvcmUyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjQ1NzA4YgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvcmVwbGFjZUFkZEFsbEFycmF5VG9Db2xsZWN0aW9ucy9iZWZvcmUyLmphdmEKQEAgLTAsMCArMSw5IEBACisvLyAiUmVwbGFjZSBhZGRBbGwob2Jqcykgd2l0aCBqYXZhLnV0aWwuQ29sbGVjdGlvbnMuYWRkQWxsKHRoaXMsIG9ianMpIiAidHJ1ZSIKK2ltcG9ydCBqYXZhLnV0aWwuTGlzdDsKKworY2xhc3MgQSBpbXBsZW1lbnRzIExpc3QgeworICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKXsKKyAgICBPYmplY3RbXSBvYmpzID0gbmV3IE9iamVjdFswXTsKKyAgICBhZGRBbGwoPGNhcmV0Pm9ianMpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9yZXBsYWNlQWRkQWxsQXJyYXlUb0NvbGxlY3Rpb25zL2JlZm9yZTMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvcmVwbGFjZUFkZEFsbEFycmF5VG9Db2xsZWN0aW9ucy9iZWZvcmUzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODczMDhlMgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvcmVwbGFjZUFkZEFsbEFycmF5VG9Db2xsZWN0aW9ucy9iZWZvcmUzLmphdmEKQEAgLTAsMCArMSw4IEBACisvLyAiUmVwbGFjZSBsLnJlbW92ZUFsbChvYmpzKSB3aXRoIGphdmEudXRpbC5Db2xsZWN0aW9ucy5hZGRBbGwobCwgb2JqcykiICJmYWxzZSIKK2NsYXNzIFQgeworICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKXsKKyAgICBMaXN0IGwgPSBuZXcgTGlzdCgpOworICAgIE9iamVjdFtdIG9ianMgPSBuZXcgT2JqZWN0WzBdOworICAgIGwucmVtb3ZlQWxsKDxjYXJldD5vYmpzKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvcmVwbGFjZUNhc3RXaXRoVmFyaWFibGUvYWZ0ZXJDaGFuZ2VkQWZ0ZXJDYXN0aW5nVmFyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3JlcGxhY2VDYXN0V2l0aFZhcmlhYmxlL2FmdGVyQ2hhbmdlZEFmdGVyQ2FzdGluZ1Zhci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNlNTVkMzcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3JlcGxhY2VDYXN0V2l0aFZhcmlhYmxlL2FmdGVyQ2hhbmdlZEFmdGVyQ2FzdGluZ1Zhci5qYXZhCkBAIC0wLDAgKzEsMTMgQEAKKy8vICJSZXBsYWNlICcoRm9vQmFyKWZvbycgd2l0aCAnZm9vYmFyJyIgInRydWUiCisKK2ltcG9ydCBqYXZhLmxhbmcuT2JqZWN0OworCitjbGFzcyBGb29CYXIgeworICBwdWJsaWMgaW50IGJhejsKKworICBpbnQgbWV0aG9kKE9iamVjdCBmb28pIHsKKyAgICBGb29CYXIgZm9vYmFyID0gKEZvb0Jhcilmb287CisgICAgT2JqZWN0IG8gPSBmb29iYXIuYmF6OworICAgIGZvbyA9IG51bGw7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3JlcGxhY2VDYXN0V2l0aFZhcmlhYmxlL2FmdGVyQ2hhbmdlZEFmdGVyVmFyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3JlcGxhY2VDYXN0V2l0aFZhcmlhYmxlL2FmdGVyQ2hhbmdlZEFmdGVyVmFyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjE2ZDI2YgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvcmVwbGFjZUNhc3RXaXRoVmFyaWFibGUvYWZ0ZXJDaGFuZ2VkQWZ0ZXJWYXIuamF2YQpAQCAtMCwwICsxLDEzIEBACisvLyAiUmVwbGFjZSAnKEZvb0Jhcilmb28nIHdpdGggJ2Zvb2JhciciICJ0cnVlIgorCitpbXBvcnQgamF2YS5sYW5nLk9iamVjdDsKKworY2xhc3MgRm9vQmFyIHsKKyAgcHVibGljIGludCBiYXo7CisKKyAgaW50IG1ldGhvZChPYmplY3QgZm9vKSB7CisgICAgRm9vQmFyIGZvb2JhciA9IChGb29CYXIpZm9vOworICAgIE9iamVjdCBvID0gZm9vYmFyLmJhejsKKyAgICBmb29iYXIgPSBudWxsOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9yZXBsYWNlQ2FzdFdpdGhWYXJpYWJsZS9hZnRlckNoYW5nZWRCZWZvcmVDYXN0aW5nVmFyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3JlcGxhY2VDYXN0V2l0aFZhcmlhYmxlL2FmdGVyQ2hhbmdlZEJlZm9yZUNhc3RpbmdWYXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NjZjZjkyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9yZXBsYWNlQ2FzdFdpdGhWYXJpYWJsZS9hZnRlckNoYW5nZWRCZWZvcmVDYXN0aW5nVmFyLmphdmEKQEAgLTAsMCArMSwxMSBAQAorLy8gIlJlcGxhY2UgJyhGb29CYXIpZm9vJyB3aXRoICdmb29iYXInIiAidHJ1ZSIKKworY2xhc3MgRm9vQmFyIHsKKyAgcHVibGljIGludCBiYXo7CisKKyAgaW50IG1ldGhvZChPYmplY3QgZm9vKSB7CisgICAgZm9vID0gbnVsbDsKKyAgICBGb29CYXIgZm9vYmFyID0gKEZvb0Jhcilmb287CisgICAgcmV0dXJuIGZvb2Jhci5iYXo7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3JlcGxhY2VDYXN0V2l0aFZhcmlhYmxlL2FmdGVyQ2hhbmdlZEJlZm9yZVZhci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9yZXBsYWNlQ2FzdFdpdGhWYXJpYWJsZS9hZnRlckNoYW5nZWRCZWZvcmVWYXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hY2ZmYTA4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9yZXBsYWNlQ2FzdFdpdGhWYXJpYWJsZS9hZnRlckNoYW5nZWRCZWZvcmVWYXIuamF2YQpAQCAtMCwwICsxLDExIEBACisvLyAiUmVwbGFjZSAnKEZvb0Jhcilmb28nIHdpdGggJ2Zvb2JhciciICJ0cnVlIgorCitjbGFzcyBGb29CYXIgeworICBwdWJsaWMgaW50IGJhejsKKworICBpbnQgbWV0aG9kKE9iamVjdCBmb28pIHsKKyAgICBmb29iYXIgPSBudWxsOworICAgIEZvb0JhciBmb29iYXIgPSAoRm9vQmFyKWZvbzsKKyAgICByZXR1cm4gZm9vYmFyLmJhejsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvcmVwbGFjZUNhc3RXaXRoVmFyaWFibGUvYWZ0ZXJDaGFuZ2VkVHdpY2UuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvcmVwbGFjZUNhc3RXaXRoVmFyaWFibGUvYWZ0ZXJDaGFuZ2VkVHdpY2UuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MmRhYjBmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9yZXBsYWNlQ2FzdFdpdGhWYXJpYWJsZS9hZnRlckNoYW5nZWRUd2ljZS5qYXZhCkBAIC0wLDAgKzEsMTMgQEAKKy8vICJSZXBsYWNlICcoRm9vQmFyKWZvbycgd2l0aCAnZm9vYmFyJyIgInRydWUiCisKK2NsYXNzIEZvb0JhciB7CisgIHB1YmxpYyBpbnQgYmF6OworCisgIGludCBtZXRob2QoT2JqZWN0IGZvbykgeworICAgIEZvb0JhciBmb29iYXIgPSAoRm9vQmFyKWZvbzsKKyAgICBmb29iYXIgPSBudWxsOworICAgIGZvbyA9IG51bGw7CisgICAgZm9vYmFyID0gKEZvb0Jhcilmb287CisgICAgcmV0dXJuIGZvb2Jhci5iYXo7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3JlcGxhY2VDYXN0V2l0aFZhcmlhYmxlL2FmdGVyU2ltcGxlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3JlcGxhY2VDYXN0V2l0aFZhcmlhYmxlL2FmdGVyU2ltcGxlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWY1Y2M0MQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvcmVwbGFjZUNhc3RXaXRoVmFyaWFibGUvYWZ0ZXJTaW1wbGUuamF2YQpAQCAtMCwwICsxLDEwIEBACisvLyAiUmVwbGFjZSAnKEZvb0Jhcilmb28nIHdpdGggJ2Zvb2JhciciICJ0cnVlIgorCitjbGFzcyBGb29CYXIgeworICBwdWJsaWMgaW50IGJhejsKKworICBpbnQgbWV0aG9kKE9iamVjdCBmb28pIHsKKyAgICBGb29CYXIgZm9vYmFyID0gKEZvb0Jhcilmb287CisgICAgcmV0dXJuIGZvb2Jhci5iYXo7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3JlcGxhY2VDYXN0V2l0aFZhcmlhYmxlL2FmdGVyVHdvVmFycy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9yZXBsYWNlQ2FzdFdpdGhWYXJpYWJsZS9hZnRlclR3b1ZhcnMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNDA2MjBkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9yZXBsYWNlQ2FzdFdpdGhWYXJpYWJsZS9hZnRlclR3b1ZhcnMuamF2YQpAQCAtMCwwICsxLDEyIEBACisvLyAiUmVwbGFjZSAnKEZvb0Jhcilmb28nIHdpdGggJ2Zvb2JhcjInIiAidHJ1ZSIKKworY2xhc3MgRm9vQmFyIHsKKyAgcHVibGljIGludCBiYXo7CisKKyAgaW50IG1ldGhvZChPYmplY3QgZm9vKSB7CisgICAgRm9vQmFyIGZvb2JhciA9IChGb29CYXIpZm9vOworICAgIGZvb2JhciA9IG51bGw7CisgICAgRm9vQmFyIGZvb2JhcjIgPSAoRm9vQmFyKWZvbzsKKyAgICByZXR1cm4gZm9vYmFyMi5iYXo7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3JlcGxhY2VDYXN0V2l0aFZhcmlhYmxlL2JlZm9yZUNoYW5nZWRBZnRlckNhc3RpbmdWYXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvcmVwbGFjZUNhc3RXaXRoVmFyaWFibGUvYmVmb3JlQ2hhbmdlZEFmdGVyQ2FzdGluZ1Zhci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE4ODJjOTEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3JlcGxhY2VDYXN0V2l0aFZhcmlhYmxlL2JlZm9yZUNoYW5nZWRBZnRlckNhc3RpbmdWYXIuamF2YQpAQCAtMCwwICsxLDEzIEBACisvLyAiUmVwbGFjZSAnKEZvb0Jhcilmb28nIHdpdGggJ2Zvb2JhciciICJ0cnVlIgorCitpbXBvcnQgamF2YS5sYW5nLk9iamVjdDsKKworY2xhc3MgRm9vQmFyIHsKKyAgcHVibGljIGludCBiYXo7CisKKyAgaW50IG1ldGhvZChPYmplY3QgZm9vKSB7CisgICAgRm9vQmFyIGZvb2JhciA9IChGb29CYXIpZm9vOworICAgIE9iamVjdCBvID0gKChGb29CYXI8Y2FyZXQ+KWZvbykuYmF6OworICAgIGZvbyA9IG51bGw7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3JlcGxhY2VDYXN0V2l0aFZhcmlhYmxlL2JlZm9yZUNoYW5nZWRBZnRlclZhci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9yZXBsYWNlQ2FzdFdpdGhWYXJpYWJsZS9iZWZvcmVDaGFuZ2VkQWZ0ZXJWYXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NDM3NTJmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9yZXBsYWNlQ2FzdFdpdGhWYXJpYWJsZS9iZWZvcmVDaGFuZ2VkQWZ0ZXJWYXIuamF2YQpAQCAtMCwwICsxLDEzIEBACisvLyAiUmVwbGFjZSAnKEZvb0Jhcilmb28nIHdpdGggJ2Zvb2JhciciICJ0cnVlIgorCitpbXBvcnQgamF2YS5sYW5nLk9iamVjdDsKKworY2xhc3MgRm9vQmFyIHsKKyAgcHVibGljIGludCBiYXo7CisKKyAgaW50IG1ldGhvZChPYmplY3QgZm9vKSB7CisgICAgRm9vQmFyIGZvb2JhciA9IChGb29CYXIpZm9vOworICAgIE9iamVjdCBvID0gKChGb29CYXI8Y2FyZXQ+KWZvbykuYmF6OworICAgIGZvb2JhciA9IG51bGw7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3JlcGxhY2VDYXN0V2l0aFZhcmlhYmxlL2JlZm9yZUNoYW5nZWRCZWZvcmVDYXN0aW5nVmFyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3JlcGxhY2VDYXN0V2l0aFZhcmlhYmxlL2JlZm9yZUNoYW5nZWRCZWZvcmVDYXN0aW5nVmFyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2VlY2YwMQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvcmVwbGFjZUNhc3RXaXRoVmFyaWFibGUvYmVmb3JlQ2hhbmdlZEJlZm9yZUNhc3RpbmdWYXIuamF2YQpAQCAtMCwwICsxLDExIEBACisvLyAiUmVwbGFjZSAnKEZvb0Jhcilmb28nIHdpdGggJ2Zvb2JhciciICJ0cnVlIgorCitjbGFzcyBGb29CYXIgeworICBwdWJsaWMgaW50IGJhejsKKworICBpbnQgbWV0aG9kKE9iamVjdCBmb28pIHsKKyAgICBmb28gPSBudWxsOworICAgIEZvb0JhciBmb29iYXIgPSAoRm9vQmFyKWZvbzsKKyAgICByZXR1cm4gKChGb29CYXI8Y2FyZXQ+KWZvbykuYmF6OworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9yZXBsYWNlQ2FzdFdpdGhWYXJpYWJsZS9iZWZvcmVDaGFuZ2VkQmVmb3JlVmFyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3JlcGxhY2VDYXN0V2l0aFZhcmlhYmxlL2JlZm9yZUNoYW5nZWRCZWZvcmVWYXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMDg0ZGIwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9yZXBsYWNlQ2FzdFdpdGhWYXJpYWJsZS9iZWZvcmVDaGFuZ2VkQmVmb3JlVmFyLmphdmEKQEAgLTAsMCArMSwxMSBAQAorLy8gIlJlcGxhY2UgJyhGb29CYXIpZm9vJyB3aXRoICdmb29iYXInIiAidHJ1ZSIKKworY2xhc3MgRm9vQmFyIHsKKyAgcHVibGljIGludCBiYXo7CisKKyAgaW50IG1ldGhvZChPYmplY3QgZm9vKSB7CisgICAgZm9vYmFyID0gbnVsbDsKKyAgICBGb29CYXIgZm9vYmFyID0gKEZvb0Jhcilmb287CisgICAgcmV0dXJuICgoRm9vQmFyPGNhcmV0Pilmb28pLmJhejsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvcmVwbGFjZUNhc3RXaXRoVmFyaWFibGUvYmVmb3JlQ2hhbmdlZENhc3RpbmdWYXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvcmVwbGFjZUNhc3RXaXRoVmFyaWFibGUvYmVmb3JlQ2hhbmdlZENhc3RpbmdWYXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZjRlNzFkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9yZXBsYWNlQ2FzdFdpdGhWYXJpYWJsZS9iZWZvcmVDaGFuZ2VkQ2FzdGluZ1Zhci5qYXZhCkBAIC0wLDAgKzEsMTEgQEAKKy8vICJSZXBsYWNlICcoRm9vQmFyKWZvbycgd2l0aCAnZm9vYmFyJyIgImZhbHNlIgorCitjbGFzcyBGb29CYXIgeworICBwdWJsaWMgaW50IGJhejsKKworICBpbnQgbWV0aG9kKE9iamVjdCBmb28pIHsKKyAgICBGb29CYXIgZm9vYmFyID0gKEZvb0Jhcilmb287CisgICAgZm9vID0gbnVsbDsKKyAgICByZXR1cm4gKChGb29CYXI8Y2FyZXQ+KWZvbykuYmF6OworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9yZXBsYWNlQ2FzdFdpdGhWYXJpYWJsZS9iZWZvcmVDaGFuZ2VkVHdpY2UuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvcmVwbGFjZUNhc3RXaXRoVmFyaWFibGUvYmVmb3JlQ2hhbmdlZFR3aWNlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTQyOWJkYwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvcmVwbGFjZUNhc3RXaXRoVmFyaWFibGUvYmVmb3JlQ2hhbmdlZFR3aWNlLmphdmEKQEAgLTAsMCArMSwxMyBAQAorLy8gIlJlcGxhY2UgJyhGb29CYXIpZm9vJyB3aXRoICdmb29iYXInIiAidHJ1ZSIKKworY2xhc3MgRm9vQmFyIHsKKyAgcHVibGljIGludCBiYXo7CisKKyAgaW50IG1ldGhvZChPYmplY3QgZm9vKSB7CisgICAgRm9vQmFyIGZvb2JhciA9IChGb29CYXIpZm9vOworICAgIGZvb2JhciA9IG51bGw7CisgICAgZm9vID0gbnVsbDsKKyAgICBmb29iYXIgPSAoRm9vQmFyKWZvbzsKKyAgICByZXR1cm4gKChGb29CYXI8Y2FyZXQ+KWZvbykuYmF6OworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9yZXBsYWNlQ2FzdFdpdGhWYXJpYWJsZS9iZWZvcmVDaGFuZ2VkVmFyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3JlcGxhY2VDYXN0V2l0aFZhcmlhYmxlL2JlZm9yZUNoYW5nZWRWYXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZGQ2Mjc5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9yZXBsYWNlQ2FzdFdpdGhWYXJpYWJsZS9iZWZvcmVDaGFuZ2VkVmFyLmphdmEKQEAgLTAsMCArMSwxMSBAQAorLy8gIlJlcGxhY2UgJyhGb29CYXIpZm9vJyB3aXRoICdmb29iYXInIiAiZmFsc2UiCisKK2NsYXNzIEZvb0JhciB7CisgIHB1YmxpYyBpbnQgYmF6OworCisgIGludCBtZXRob2QoT2JqZWN0IGZvbykgeworICAgIEZvb0JhciBmb29iYXIgPSAoRm9vQmFyKWZvbzsKKyAgICBmb29iYXIgPSBudWxsOworICAgIHJldHVybiAoKEZvb0JhcjxjYXJldD4pZm9vKS5iYXo7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3JlcGxhY2VDYXN0V2l0aFZhcmlhYmxlL2JlZm9yZVNpbXBsZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9yZXBsYWNlQ2FzdFdpdGhWYXJpYWJsZS9iZWZvcmVTaW1wbGUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNDkwNWU0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9yZXBsYWNlQ2FzdFdpdGhWYXJpYWJsZS9iZWZvcmVTaW1wbGUuamF2YQpAQCAtMCwwICsxLDEwIEBACisvLyAiUmVwbGFjZSAnKEZvb0Jhcilmb28nIHdpdGggJ2Zvb2JhciciICJ0cnVlIgorCitjbGFzcyBGb29CYXIgeworICBwdWJsaWMgaW50IGJhejsKKworICBpbnQgbWV0aG9kKE9iamVjdCBmb28pIHsKKyAgICBGb29CYXIgZm9vYmFyID0gKEZvb0Jhcilmb287CisgICAgcmV0dXJuICgoRm9vQmFyPGNhcmV0Pilmb28pLmJhejsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvcmVwbGFjZUNhc3RXaXRoVmFyaWFibGUvYmVmb3JlVHdvVmFycy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9yZXBsYWNlQ2FzdFdpdGhWYXJpYWJsZS9iZWZvcmVUd29WYXJzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjhjODhkMQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvcmVwbGFjZUNhc3RXaXRoVmFyaWFibGUvYmVmb3JlVHdvVmFycy5qYXZhCkBAIC0wLDAgKzEsMTIgQEAKKy8vICJSZXBsYWNlICcoRm9vQmFyKWZvbycgd2l0aCAnZm9vYmFyMiciICJ0cnVlIgorCitjbGFzcyBGb29CYXIgeworICBwdWJsaWMgaW50IGJhejsKKworICBpbnQgbWV0aG9kKE9iamVjdCBmb28pIHsKKyAgICBGb29CYXIgZm9vYmFyID0gKEZvb0Jhcilmb287CisgICAgZm9vYmFyID0gbnVsbDsKKyAgICBGb29CYXIgZm9vYmFyMiA9IChGb29CYXIpZm9vOworICAgIHJldHVybiAoKEZvb0JhcjxjYXJldD4pZm9vKS5iYXo7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3JlcGxhY2VGaWVsZFdpdGhHZXR0ZXJTZXR0ZXIvYWZ0ZXIzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3JlcGxhY2VGaWVsZFdpdGhHZXR0ZXJTZXR0ZXIvYWZ0ZXIzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTJiOWY4NAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvcmVwbGFjZUZpZWxkV2l0aEdldHRlclNldHRlci9hZnRlcjMuamF2YQpAQCAtMCwwICsxLDE0IEBACisvLyAiUmVwbGFjZSB3aXRoIGdldHRlciIgInRydWUiCitjbGFzcyBUZXN0IHsKKyAgcHJpdmF0ZSBpbnQgaTsKKworICBwdWJsaWMgaW50IGdldEkoKSB7CisgICAgcmV0dXJuIGk7CisgIH0KK30KKworY2xhc3MgRm9vIHsKKyAgdm9pZCBmb28oVGVzdCB0KSB7CisgICAgU3lzdGVtLm91dC5wcmludGxuKHQuZ2V0SSgpKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvcmVwbGFjZUZpZWxkV2l0aEdldHRlclNldHRlci9hZnRlcjUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvcmVwbGFjZUZpZWxkV2l0aEdldHRlclNldHRlci9hZnRlcjUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZTI3NzRjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9yZXBsYWNlRmllbGRXaXRoR2V0dGVyU2V0dGVyL2FmdGVyNS5qYXZhCkBAIC0wLDAgKzEsMTQgQEAKKy8vICJSZXBsYWNlIHdpdGggc2V0dGVyIiAidHJ1ZSIKK2NsYXNzIFRlc3QgeworICBwcml2YXRlIGludCBpOworCisgIHB1YmxpYyB2b2lkIHNldEkoaW50IGkpIHsKKyAgICB0aGlzLmkgPSBpOworICB9Cit9CisKK2NsYXNzIEZvbyB7CisgIHZvaWQgZm9vKFRlc3QgdCkgeworICAgIHQuc2V0SSgwKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvcmVwbGFjZUZpZWxkV2l0aEdldHRlclNldHRlci9hZnRlcjYuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvcmVwbGFjZUZpZWxkV2l0aEdldHRlclNldHRlci9hZnRlcjYuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZGQzMmZiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9yZXBsYWNlRmllbGRXaXRoR2V0dGVyU2V0dGVyL2FmdGVyNi5qYXZhCkBAIC0wLDAgKzEsOCBAQAorLy8gIlJlcGxhY2Ugd2l0aCBnZXR0ZXIiICJ0cnVlIgoraW1wb3J0IGphdmEuaW8uRmlsZTsKKworY2xhc3MgRm9vIHsKKyAgdm9pZCBmb28oRmlsZSBmKSB7CisgICAgU3RyaW5nIHNzID0gZi5nZXRQYXRoKCk7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3JlcGxhY2VGaWVsZFdpdGhHZXR0ZXJTZXR0ZXIvYmVmb3JlMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9yZXBsYWNlRmllbGRXaXRoR2V0dGVyU2V0dGVyL2JlZm9yZTEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMTA3MDViCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9yZXBsYWNlRmllbGRXaXRoR2V0dGVyU2V0dGVyL2JlZm9yZTEuamF2YQpAQCAtMCwwICsxLDEwIEBACisvLyAiUmVwbGFjZSB3aXRoIGdldHRlciIgImZhbHNlIgorY2xhc3MgVGVzdCB7CisgIHByaXZhdGUgaW50IGk7Cit9CisKK2NsYXNzIEZvbyB7CisgIHZvaWQgZm9vKFRlc3QgdCkgeworICAgIFN5c3RlbS5vdXQucHJpbnRsbih0LjxjYXJldD5pKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvcmVwbGFjZUZpZWxkV2l0aEdldHRlclNldHRlci9iZWZvcmUyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3JlcGxhY2VGaWVsZFdpdGhHZXR0ZXJTZXR0ZXIvYmVmb3JlMi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk1MGFjNjIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3JlcGxhY2VGaWVsZFdpdGhHZXR0ZXJTZXR0ZXIvYmVmb3JlMi5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKKy8vICJSZXBsYWNlIHdpdGggc2V0dGVyIiAiZmFsc2UiCitjbGFzcyBUZXN0IHsKKyAgcHJpdmF0ZSBpbnQgaTsKK30KKworY2xhc3MgRm9vIHsKKyAgdm9pZCBmb28oVGVzdCB0KSB7CisgICAgU3lzdGVtLm91dC5wcmludGxuKHQuPGNhcmV0PmkpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9yZXBsYWNlRmllbGRXaXRoR2V0dGVyU2V0dGVyL2JlZm9yZTMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvcmVwbGFjZUZpZWxkV2l0aEdldHRlclNldHRlci9iZWZvcmUzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjNmZWNiNwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvcmVwbGFjZUZpZWxkV2l0aEdldHRlclNldHRlci9iZWZvcmUzLmphdmEKQEAgLTAsMCArMSwxNCBAQAorLy8gIlJlcGxhY2Ugd2l0aCBnZXR0ZXIiICJ0cnVlIgorY2xhc3MgVGVzdCB7CisgIHByaXZhdGUgaW50IGk7CisKKyAgcHVibGljIGludCBnZXRJKCkgeworICAgIHJldHVybiBpOworICB9Cit9CisKK2NsYXNzIEZvbyB7CisgIHZvaWQgZm9vKFRlc3QgdCkgeworICAgIFN5c3RlbS5vdXQucHJpbnRsbih0LjxjYXJldD5pKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvcmVwbGFjZUZpZWxkV2l0aEdldHRlclNldHRlci9iZWZvcmU0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3JlcGxhY2VGaWVsZFdpdGhHZXR0ZXJTZXR0ZXIvYmVmb3JlNC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIzNmUyZjEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3JlcGxhY2VGaWVsZFdpdGhHZXR0ZXJTZXR0ZXIvYmVmb3JlNC5qYXZhCkBAIC0wLDAgKzEsMTQgQEAKKy8vICJSZXBsYWNlIHdpdGggZ2V0dGVyIiAiZmFsc2UiCitjbGFzcyBUZXN0IHsKKyAgcHJpdmF0ZSBpbnQgaTsKKworICBwdWJsaWMgaW50IGdldEkoKSB7CisgICAgcmV0dXJuIGk7CisgIH0KK30KKworY2xhc3MgRm9vIHsKKyAgdm9pZCBmb28oVGVzdCB0KSB7CisgICAgdC48Y2FyZXQ+aSA9IDA7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3JlcGxhY2VGaWVsZFdpdGhHZXR0ZXJTZXR0ZXIvYmVmb3JlNS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9yZXBsYWNlRmllbGRXaXRoR2V0dGVyU2V0dGVyL2JlZm9yZTUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MDYxMjdmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9yZXBsYWNlRmllbGRXaXRoR2V0dGVyU2V0dGVyL2JlZm9yZTUuamF2YQpAQCAtMCwwICsxLDE0IEBACisvLyAiUmVwbGFjZSB3aXRoIHNldHRlciIgInRydWUiCitjbGFzcyBUZXN0IHsKKyAgcHJpdmF0ZSBpbnQgaTsKKworICBwdWJsaWMgdm9pZCBzZXRJKGludCBpKSB7CisgICAgdGhpcy5pID0gaTsKKyAgfQorfQorCitjbGFzcyBGb28geworICB2b2lkIGZvbyhUZXN0IHQpIHsKKyAgICB0LjxjYXJldD5pID0gMDsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvcmVwbGFjZUZpZWxkV2l0aEdldHRlclNldHRlci9iZWZvcmU2LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3JlcGxhY2VGaWVsZFdpdGhHZXR0ZXJTZXR0ZXIvYmVmb3JlNi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU3MDU0MWEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3JlcGxhY2VGaWVsZFdpdGhHZXR0ZXJTZXR0ZXIvYmVmb3JlNi5qYXZhCkBAIC0wLDAgKzEsOCBAQAorLy8gIlJlcGxhY2Ugd2l0aCBnZXR0ZXIiICJ0cnVlIgoraW1wb3J0IGphdmEuaW8uRmlsZTsKKworY2xhc3MgRm9vIHsKKyAgdm9pZCBmb28oRmlsZSBmKSB7CisgICAgU3RyaW5nIHNzID0gZi48Y2FyZXQ+cGF0aDsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvcmVwbGFjZVByaW1pdGl2ZVdpdGhCb3hlZC9hZnRlclByaW1pdGl2ZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9yZXBsYWNlUHJpbWl0aXZlV2l0aEJveGVkL2FmdGVyUHJpbWl0aXZlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTk2NGFhNAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvcmVwbGFjZVByaW1pdGl2ZVdpdGhCb3hlZC9hZnRlclByaW1pdGl2ZS5qYXZhCkBAIC0wLDAgKzEsNiBAQAorLy8gIkNvbnZlcnQgJ2ludCcgdG8gJ2phdmEubGFuZy5JbnRlZ2VyJyIgInRydWUiCitpbXBvcnQgamF2YS51dGlsLio7CisKK2NsYXNzIFRlc3QgeworICBTZXQ8SW50ZWdlcj4gZjsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3JlcGxhY2VQcmltaXRpdmVXaXRoQm94ZWQvYWZ0ZXJXaWxkY2FyZC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9yZXBsYWNlUHJpbWl0aXZlV2l0aEJveGVkL2FmdGVyV2lsZGNhcmQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YjhkMjE4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9yZXBsYWNlUHJpbWl0aXZlV2l0aEJveGVkL2FmdGVyV2lsZGNhcmQuamF2YQpAQCAtMCwwICsxLDYgQEAKKy8vICJDb252ZXJ0ICdpbnQnIHRvICdqYXZhLmxhbmcuSW50ZWdlciciICJ0cnVlIgoraW1wb3J0IGphdmEudXRpbC4qOworCitjbGFzcyBUZXN0IHsKKyAgU2V0PD8gZXh0ZW5kcyBJbnRlZ2VyPiBmOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvcmVwbGFjZVByaW1pdGl2ZVdpdGhCb3hlZC9iZWZvcmVQcmltaXRpdmUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvcmVwbGFjZVByaW1pdGl2ZVdpdGhCb3hlZC9iZWZvcmVQcmltaXRpdmUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNGIzNDBkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9yZXBsYWNlUHJpbWl0aXZlV2l0aEJveGVkL2JlZm9yZVByaW1pdGl2ZS5qYXZhCkBAIC0wLDAgKzEsNiBAQAorLy8gIkNvbnZlcnQgJ2ludCcgdG8gJ2phdmEubGFuZy5JbnRlZ2VyJyIgInRydWUiCitpbXBvcnQgamF2YS51dGlsLio7CisKK2NsYXNzIFRlc3QgeworICBTZXQ8aW48Y2FyZXQ+dD4gZjsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3JlcGxhY2VQcmltaXRpdmVXaXRoQm94ZWQvYmVmb3JlV2lsZGNhcmQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvcmVwbGFjZVByaW1pdGl2ZVdpdGhCb3hlZC9iZWZvcmVXaWxkY2FyZC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVkYjE0YzAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3JlcGxhY2VQcmltaXRpdmVXaXRoQm94ZWQvYmVmb3JlV2lsZGNhcmQuamF2YQpAQCAtMCwwICsxLDYgQEAKKy8vICJDb252ZXJ0ICdpbnQnIHRvICdqYXZhLmxhbmcuSW50ZWdlciciICJ0cnVlIgoraW1wb3J0IGphdmEudXRpbC4qOworCitjbGFzcyBUZXN0IHsKKyAgU2V0PD8gZXh0ZW5kcyBpbjxjYXJldD50PiBmOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvcmVwbGFjZVdpdGhMaXN0QWNjZXNzL2FmdGVyRXhwcmVzc2lvbi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9yZXBsYWNlV2l0aExpc3RBY2Nlc3MvYWZ0ZXJFeHByZXNzaW9uLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTNjNTlkMgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvcmVwbGFjZVdpdGhMaXN0QWNjZXNzL2FmdGVyRXhwcmVzc2lvbi5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKKy8vICJSZXBsYWNlIHdpdGggbGlzdCBhY2Nlc3MiICJ0cnVlIgorCitpbXBvcnQgamF2YS5sYW5nLk1hdGg7CitpbXBvcnQgamF2YS51dGlsLkxpc3Q7CisKK2NsYXNzIEEgeworICB2b2lkIHRlc3QoTGlzdDxMaXN0PiBsaXN0cykgeworICAgIFN5c3RlbS5vdXQucHJpbnRsbihsaXN0cy5nZXQoTWF0aC5tYXgoTWF0aC5hYnMoLTIpLCAzKSkpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9yZXBsYWNlV2l0aExpc3RBY2Nlc3MvYWZ0ZXJJZGV4SXNCb3hlZEludGVnZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvcmVwbGFjZVdpdGhMaXN0QWNjZXNzL2FmdGVySWRleElzQm94ZWRJbnRlZ2VyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTUxZGFkMgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvcmVwbGFjZVdpdGhMaXN0QWNjZXNzL2FmdGVySWRleElzQm94ZWRJbnRlZ2VyLmphdmEKQEAgLTAsMCArMSwxMCBAQAorLy8gIlJlcGxhY2Ugd2l0aCBsaXN0IGFjY2VzcyIgInRydWUiCisKK2ltcG9ydCBqYXZhLmxhbmcuSW50ZWdlcjsKK2ltcG9ydCBqYXZhLnV0aWwuQXJyYXlMaXN0OworCitjbGFzcyBBIHsKKyAgdm9pZCB0ZXN0KEFycmF5TGlzdCBsaXN0KSB7CisgICAgU3lzdGVtLm91dC5wcmludGxuKGxpc3QuZ2V0KG5ldyBJbnRlZ2VyKDApKSk7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3JlcGxhY2VXaXRoTGlzdEFjY2Vzcy9hZnRlckxpc3RPZkxpc3RzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3JlcGxhY2VXaXRoTGlzdEFjY2Vzcy9hZnRlckxpc3RPZkxpc3RzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODhkZTE0YwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvcmVwbGFjZVdpdGhMaXN0QWNjZXNzL2FmdGVyTGlzdE9mTGlzdHMuamF2YQpAQCAtMCwwICsxLDkgQEAKKy8vICJSZXBsYWNlIHdpdGggbGlzdCBhY2Nlc3MiICJ0cnVlIgorCitpbXBvcnQgamF2YS51dGlsLkxpc3Q7CisKK2NsYXNzIEEgeworICB2b2lkIHRlc3QoTGlzdDxMaXN0PiBsaXN0cykgeworICAgIFN5c3RlbS5vdXQucHJpbnRsbihsaXN0cy5nZXQoMCkuZ2V0KDApKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvcmVwbGFjZVdpdGhMaXN0QWNjZXNzL2FmdGVyU2V0U3RhdGVtZW50LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3JlcGxhY2VXaXRoTGlzdEFjY2Vzcy9hZnRlclNldFN0YXRlbWVudC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ5OTZhYjQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3JlcGxhY2VXaXRoTGlzdEFjY2Vzcy9hZnRlclNldFN0YXRlbWVudC5qYXZhCkBAIC0wLDAgKzEsOSBAQAorLy8gIlJlcGxhY2Ugd2l0aCBsaXN0IGFjY2VzcyIgInRydWUiCisKK2ltcG9ydCBqYXZhLnV0aWwuQXJyYXlMaXN0OworCitjbGFzcyBBIHsKKyAgdm9pZCB0ZXN0KEFycmF5TGlzdDxJbnRlZ2VyPiBsaXN0KSB7CisgICAgbGlzdC5zZXQoMCwgNSk7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3JlcGxhY2VXaXRoTGlzdEFjY2Vzcy9hZnRlclNpbXBsZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9yZXBsYWNlV2l0aExpc3RBY2Nlc3MvYWZ0ZXJTaW1wbGUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNzI0NzQxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9yZXBsYWNlV2l0aExpc3RBY2Nlc3MvYWZ0ZXJTaW1wbGUuamF2YQpAQCAtMCwwICsxLDkgQEAKKy8vICJSZXBsYWNlIHdpdGggbGlzdCBhY2Nlc3MiICJ0cnVlIgorCitpbXBvcnQgamF2YS51dGlsLkFycmF5TGlzdDsKKworY2xhc3MgQSB7CisgIHZvaWQgdGVzdChBcnJheUxpc3QgbGlzdCkgeworICAgIFN5c3RlbS5vdXQucHJpbnRsbihsaXN0LmdldCgwKSk7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3JlcGxhY2VXaXRoTGlzdEFjY2Vzcy9iZWZvcmVBc3NpZ25tZW50SW5JZkNvbmRpdGlvbi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9yZXBsYWNlV2l0aExpc3RBY2Nlc3MvYmVmb3JlQXNzaWdubWVudEluSWZDb25kaXRpb24uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZGRmYmYzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9yZXBsYWNlV2l0aExpc3RBY2Nlc3MvYmVmb3JlQXNzaWdubWVudEluSWZDb25kaXRpb24uamF2YQpAQCAtMCwwICsxLDExIEBACisvLyAiUmVwbGFjZSB3aXRoIGxpc3QgYWNjZXNzIiAiZmFsc2UiCisKK2ltcG9ydCBqYXZhLnV0aWwuQXJyYXlMaXN0OworCitjbGFzcyBBIHsKKyAgdm9pZCB0ZXN0KEFycmF5TGlzdDxJbnRlZ2VyPiBsaXN0KSB7CisgICAgaWYgKGxpczxjYXJldD50WzBdID0gNSA9PSA1KXsKKworICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvcmVwbGFjZVdpdGhMaXN0QWNjZXNzL2JlZm9yZUV4cHJlc3Npb24uamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvcmVwbGFjZVdpdGhMaXN0QWNjZXNzL2JlZm9yZUV4cHJlc3Npb24uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMjQ3NzBmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9yZXBsYWNlV2l0aExpc3RBY2Nlc3MvYmVmb3JlRXhwcmVzc2lvbi5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKKy8vICJSZXBsYWNlIHdpdGggbGlzdCBhY2Nlc3MiICJ0cnVlIgorCitpbXBvcnQgamF2YS5sYW5nLk1hdGg7CitpbXBvcnQgamF2YS51dGlsLkxpc3Q7CisKK2NsYXNzIEEgeworICB2b2lkIHRlc3QoTGlzdDxMaXN0PiBsaXN0cykgeworICAgIFN5c3RlbS5vdXQucHJpbnRsbihsaXM8Y2FyZXQ+dHNbTWF0aC5tYXgoTWF0aC5hYnMoLTIpLDMpXSk7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3JlcGxhY2VXaXRoTGlzdEFjY2Vzcy9iZWZvcmVJZGV4SXNCb3hlZEludGVnZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvcmVwbGFjZVdpdGhMaXN0QWNjZXNzL2JlZm9yZUlkZXhJc0JveGVkSW50ZWdlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVhYTA5MTIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3JlcGxhY2VXaXRoTGlzdEFjY2Vzcy9iZWZvcmVJZGV4SXNCb3hlZEludGVnZXIuamF2YQpAQCAtMCwwICsxLDEwIEBACisvLyAiUmVwbGFjZSB3aXRoIGxpc3QgYWNjZXNzIiAidHJ1ZSIKKworaW1wb3J0IGphdmEubGFuZy5JbnRlZ2VyOworaW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7CisKK2NsYXNzIEEgeworICB2b2lkIHRlc3QoQXJyYXlMaXN0IGxpc3QpIHsKKyAgICBTeXN0ZW0ub3V0LnByaW50bG4obGlzPGNhcmV0PnRbbmV3IEludGVnZXIoMCldKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvcmVwbGFjZVdpdGhMaXN0QWNjZXNzL2JlZm9yZUluZGV4Tm90SW50ZWdlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9yZXBsYWNlV2l0aExpc3RBY2Nlc3MvYmVmb3JlSW5kZXhOb3RJbnRlZ2VyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2UzNTcxMwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvcmVwbGFjZVdpdGhMaXN0QWNjZXNzL2JlZm9yZUluZGV4Tm90SW50ZWdlci5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKKy8vICJSZXBsYWNlIHdpdGggbGlzdCBhY2Nlc3MiICJmYWxzZSIKKworaW1wb3J0IGphdmEubGFuZy5PYmplY3Q7CitpbXBvcnQgamF2YS51dGlsLkFycmF5TGlzdDsKKworY2xhc3MgQSB7CisgIHZvaWQgdGVzdChBcnJheUxpc3QgbGlzdCkgeworICAgIFN5c3RlbS5vdXQucHJpbnRsbihsaXM8Y2FyZXQ+dFtuZXcgT2JqZWN0KDMpXSk7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3JlcGxhY2VXaXRoTGlzdEFjY2Vzcy9iZWZvcmVMaXN0T2ZMaXN0cy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9yZXBsYWNlV2l0aExpc3RBY2Nlc3MvYmVmb3JlTGlzdE9mTGlzdHMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNjU3ZGI2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9yZXBsYWNlV2l0aExpc3RBY2Nlc3MvYmVmb3JlTGlzdE9mTGlzdHMuamF2YQpAQCAtMCwwICsxLDkgQEAKKy8vICJSZXBsYWNlIHdpdGggbGlzdCBhY2Nlc3MiICJ0cnVlIgorCitpbXBvcnQgamF2YS51dGlsLkxpc3Q7CisKK2NsYXNzIEEgeworICB2b2lkIHRlc3QoTGlzdDxMaXN0PiBsaXN0cykgeworICAgIFN5c3RlbS5vdXQucHJpbnRsbihsaTxjYXJldD5zdHNbMF0uZ2V0KDApKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvcmVwbGFjZVdpdGhMaXN0QWNjZXNzL2JlZm9yZU5vdExJc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvcmVwbGFjZVdpdGhMaXN0QWNjZXNzL2JlZm9yZU5vdExJc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45YjMwNDE3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9yZXBsYWNlV2l0aExpc3RBY2Nlc3MvYmVmb3JlTm90TElzdC5qYXZhCkBAIC0wLDAgKzEsNiBAQAorLy8gIlJlcGxhY2Ugd2l0aCBsaXN0IGFjY2VzcyIgImZhbHNlIgorY2xhc3MgQSB7CisgIHZvaWQgdGVzdChDb2xsZWN0aW9uIGxpc3QpIHsKKyAgICBTeXN0ZW0ub3V0LnByaW50bG4obGlzPGNhcmV0PnRbMF0pOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9yZXBsYWNlV2l0aExpc3RBY2Nlc3MvYmVmb3JlU2V0U3RhdGVtZW50LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3JlcGxhY2VXaXRoTGlzdEFjY2Vzcy9iZWZvcmVTZXRTdGF0ZW1lbnQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZDUwMjY2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9yZXBsYWNlV2l0aExpc3RBY2Nlc3MvYmVmb3JlU2V0U3RhdGVtZW50LmphdmEKQEAgLTAsMCArMSw5IEBACisvLyAiUmVwbGFjZSB3aXRoIGxpc3QgYWNjZXNzIiAidHJ1ZSIKKworaW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7CisKK2NsYXNzIEEgeworICB2b2lkIHRlc3QoQXJyYXlMaXN0PEludGVnZXI+IGxpc3QpIHsKKyAgICBsaXM8Y2FyZXQ+dFswXSA9IDU7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3JlcGxhY2VXaXRoTGlzdEFjY2Vzcy9iZWZvcmVTaW1wbGUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvcmVwbGFjZVdpdGhMaXN0QWNjZXNzL2JlZm9yZVNpbXBsZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRlOTY0MTcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3JlcGxhY2VXaXRoTGlzdEFjY2Vzcy9iZWZvcmVTaW1wbGUuamF2YQpAQCAtMCwwICsxLDkgQEAKKy8vICJSZXBsYWNlIHdpdGggbGlzdCBhY2Nlc3MiICJ0cnVlIgorCitpbXBvcnQgamF2YS51dGlsLkFycmF5TGlzdDsKKworY2xhc3MgQSB7CisgIHZvaWQgdGVzdChBcnJheUxpc3QgbGlzdCkgeworICAgIFN5c3RlbS5vdXQucHJpbnRsbihsaXM8Y2FyZXQ+dFswXSk7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3JlcGxhY2VXaXRoVGVybmFyeU9wZXJhdG9yL2FmdGVyTWV0aG9kQ2FsbC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9yZXBsYWNlV2l0aFRlcm5hcnlPcGVyYXRvci9hZnRlck1ldGhvZENhbGwuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NmZiZTk3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9yZXBsYWNlV2l0aFRlcm5hcnlPcGVyYXRvci9hZnRlck1ldGhvZENhbGwuamF2YQpAQCAtMCwwICsxLDEwIEBACisvLyAiUmVwbGFjZSB3aXRoICdsaXN0ICE9IG51bGwgPzonIiAidHJ1ZSIKKworaW1wb3J0IG9yZy5qZXRicmFpbnMuYW5ub3RhdGlvbnMuTm90TnVsbDsKKworY2xhc3MgQXsKKyAgdm9pZCB0ZXN0KEBOb3ROdWxsIExpc3QgbCkgeworICAgIGZpbmFsIExpc3QgbGlzdCA9IG51bGw7CisgICAgdGVzdChsaXN0ICE9IG51bGwgPyBsaXN0IDogPHNlbGVjdGlvbj5udWxsPC9zZWxlY3Rpb24+KTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvcmVwbGFjZVdpdGhUZXJuYXJ5T3BlcmF0b3IvYWZ0ZXJQcmltaXRpdmUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvcmVwbGFjZVdpdGhUZXJuYXJ5T3BlcmF0b3IvYWZ0ZXJQcmltaXRpdmUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NTQ3ZTQ1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9yZXBsYWNlV2l0aFRlcm5hcnlPcGVyYXRvci9hZnRlclByaW1pdGl2ZS5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKKy8vICJSZXBsYWNlIHdpdGggJ2ludGVnZXIgIT0gbnVsbCA/OiciICJ0cnVlIgorCitpbXBvcnQgamF2YS5sYW5nLkludGVnZXI7CisKK2NsYXNzIEF7CisgIHZvaWQgdGVzdCgpeworICAgIEludGVnZXIgaW50ZWdlciA9IG51bGw7CisgICAgaW50IGkgPSBpbnRlZ2VyICE9IG51bGwgPyBpbnRlZ2VyLmludFZhbHVlKCkgOiA8c2VsZWN0aW9uPjA8L3NlbGVjdGlvbj47CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3JlcGxhY2VXaXRoVGVybmFyeU9wZXJhdG9yL2FmdGVyU2ltcGxlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3JlcGxhY2VXaXRoVGVybmFyeU9wZXJhdG9yL2FmdGVyU2ltcGxlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWZmM2Y5NAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvcmVwbGFjZVdpdGhUZXJuYXJ5T3BlcmF0b3IvYWZ0ZXJTaW1wbGUuamF2YQpAQCAtMCwwICsxLDggQEAKKy8vICJSZXBsYWNlIHdpdGggJ2xpc3QgIT0gbnVsbCA/OiciICJ0cnVlIgorCitjbGFzcyBBeworICB2b2lkIHRlc3QoKXsKKyAgICBMaXN0IGxpc3QgPSBudWxsOworICAgIE9iamVjdCBvID0gbGlzdCAhPSBudWxsID8gbGlzdC5nZXQoMCkgOiA8c2VsZWN0aW9uPm51bGw8L3NlbGVjdGlvbj47CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3JlcGxhY2VXaXRoVGVybmFyeU9wZXJhdG9yL2JlZm9yZUV4cHJlc3Npb25TdGF0ZW1lbnQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvcmVwbGFjZVdpdGhUZXJuYXJ5T3BlcmF0b3IvYmVmb3JlRXhwcmVzc2lvblN0YXRlbWVudC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIwNzJjODQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3JlcGxhY2VXaXRoVGVybmFyeU9wZXJhdG9yL2JlZm9yZUV4cHJlc3Npb25TdGF0ZW1lbnQuamF2YQpAQCAtMCwwICsxLDcgQEAKKy8vICJSZXBsYWNlIHdpdGggJ2xpc3QgIT0gbnVsbCA/OiciICJmYWxzZSIKK2NsYXNzIEF7CisgIHZvaWQgdGVzdCgpeworICAgIExpc3QgbGlzdCA9IG51bGw7CisgICAgbGk8Y2FyZXQ+c3QuZ2V0KDApOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9yZXBsYWNlV2l0aFRlcm5hcnlPcGVyYXRvci9iZWZvcmVNZXRob2RDYWxsLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3JlcGxhY2VXaXRoVGVybmFyeU9wZXJhdG9yL2JlZm9yZU1ldGhvZENhbGwuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45YjVlYzM5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9yZXBsYWNlV2l0aFRlcm5hcnlPcGVyYXRvci9iZWZvcmVNZXRob2RDYWxsLmphdmEKQEAgLTAsMCArMSwxMCBAQAorLy8gIlJlcGxhY2Ugd2l0aCAnbGlzdCAhPSBudWxsID86JyIgInRydWUiCisKK2ltcG9ydCBvcmcuamV0YnJhaW5zLmFubm90YXRpb25zLk5vdE51bGw7CisKK2NsYXNzIEF7CisgIHZvaWQgdGVzdChATm90TnVsbCBMaXN0IGwpIHsKKyAgICBmaW5hbCBMaXN0IGxpc3QgPSBudWxsOworICAgIHRlc3QobGk8Y2FyZXQ+c3QpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9yZXBsYWNlV2l0aFRlcm5hcnlPcGVyYXRvci9iZWZvcmVQcmltaXRpdmUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvcmVwbGFjZVdpdGhUZXJuYXJ5T3BlcmF0b3IvYmVmb3JlUHJpbWl0aXZlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2FmNWJlMAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvcmVwbGFjZVdpdGhUZXJuYXJ5T3BlcmF0b3IvYmVmb3JlUHJpbWl0aXZlLmphdmEKQEAgLTAsMCArMSwxMCBAQAorLy8gIlJlcGxhY2Ugd2l0aCAnaW50ZWdlciAhPSBudWxsID86JyIgInRydWUiCisKK2ltcG9ydCBqYXZhLmxhbmcuSW50ZWdlcjsKKworY2xhc3MgQXsKKyAgdm9pZCB0ZXN0KCl7CisgICAgSW50ZWdlciBpbnRlZ2VyID0gbnVsbDsKKyAgICBpbnQgaSA9IGluPGNhcmV0PnRlZ2VyLmludFZhbHVlKCk7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3JlcGxhY2VXaXRoVGVybmFyeU9wZXJhdG9yL2JlZm9yZVNpbXBsZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9yZXBsYWNlV2l0aFRlcm5hcnlPcGVyYXRvci9iZWZvcmVTaW1wbGUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NzY1MjQ5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9yZXBsYWNlV2l0aFRlcm5hcnlPcGVyYXRvci9iZWZvcmVTaW1wbGUuamF2YQpAQCAtMCwwICsxLDggQEAKKy8vICJSZXBsYWNlIHdpdGggJ2xpc3QgIT0gbnVsbCA/OiciICJ0cnVlIgorCitjbGFzcyBBeworICB2b2lkIHRlc3QoKXsKKyAgICBMaXN0IGxpc3QgPSBudWxsOworICAgIE9iamVjdCBvID0gbGk8Y2FyZXQ+c3QuZ2V0KDApOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9yZXVzZVZhcmlhYmxlRGVjbGFyYXRpb24vYWZ0ZXIxLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3JldXNlVmFyaWFibGVEZWNsYXJhdGlvbi9hZnRlcjEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zM2M3OTVlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9yZXVzZVZhcmlhYmxlRGVjbGFyYXRpb24vYWZ0ZXIxLmphdmEKQEAgLTAsMCArMSw5IEBACisvLyAiUmV1c2UgcHJldmlvdXMgdmFyaWFibGUgJ2knIGRlY2xhcmF0aW9uIiAidHJ1ZSIKK2ltcG9ydCBqYXZhLmlvLio7CisKK2NsYXNzIGEgeworICAgIHZvaWQgZihpbnQgaSkgeworICAgICAgICBpID0gMjM0IC8gNSArIDc7CisgICAgfQorfQorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3JldXNlVmFyaWFibGVEZWNsYXJhdGlvbi9hZnRlcjIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvcmV1c2VWYXJpYWJsZURlY2xhcmF0aW9uL2FmdGVyMi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFhZGI4MzQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3JldXNlVmFyaWFibGVEZWNsYXJhdGlvbi9hZnRlcjIuamF2YQpAQCAtMCwwICsxLDExIEBACisvLyAiUmV1c2UgcHJldmlvdXMgdmFyaWFibGUgJ2snIGRlY2xhcmF0aW9uIiAidHJ1ZSIKK2ltcG9ydCBqYXZhLmlvLio7CisKK2NsYXNzIGEgeworICAgIHZvaWQgZihpbnQgaSkgeworICAgICAgICBpbnQgayA9IDIzNC81Kzc7CisgICAgICAgIGludCBoID0gNzsKKyAgICAgICAgayA9IDIzNCAvIDUgKyA3OworICAgIH0KK30KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9yZXVzZVZhcmlhYmxlRGVjbGFyYXRpb24vYWZ0ZXIzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3JldXNlVmFyaWFibGVEZWNsYXJhdGlvbi9hZnRlcjMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YzU3ZTM3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9yZXVzZVZhcmlhYmxlRGVjbGFyYXRpb24vYWZ0ZXIzLmphdmEKQEAgLTAsMCArMSw5IEBACisvLyAiUmV1c2UgcHJldmlvdXMgdmFyaWFibGUgJ2knIGRlY2xhcmF0aW9uIiAidHJ1ZSIKK2ltcG9ydCBqYXZhLmlvLio7CisKK2NsYXNzIGEgeworICAgIHZvaWQgZihpbnQgaSkgeworICAgICAgICBpbnQgaCA9IDc7CisgICAgfQorfQorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3JldXNlVmFyaWFibGVEZWNsYXJhdGlvbi9iZWZvcmUxLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3JldXNlVmFyaWFibGVEZWNsYXJhdGlvbi9iZWZvcmUxLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzUyMmZkNwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvcmV1c2VWYXJpYWJsZURlY2xhcmF0aW9uL2JlZm9yZTEuamF2YQpAQCAtMCwwICsxLDkgQEAKKy8vICJSZXVzZSBwcmV2aW91cyB2YXJpYWJsZSAnaScgZGVjbGFyYXRpb24iICJ0cnVlIgoraW1wb3J0IGphdmEuaW8uKjsKKworY2xhc3MgYSB7CisgICAgdm9pZCBmKGludCBpKSB7CisgICAgICAgIGludCA8Y2FyZXQ+aSA9IDIzNC81Kzc7CisgICAgfQorfQorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3JldXNlVmFyaWFibGVEZWNsYXJhdGlvbi9iZWZvcmUyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3JldXNlVmFyaWFibGVEZWNsYXJhdGlvbi9iZWZvcmUyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzcwYTYxYQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvcmV1c2VWYXJpYWJsZURlY2xhcmF0aW9uL2JlZm9yZTIuamF2YQpAQCAtMCwwICsxLDExIEBACisvLyAiUmV1c2UgcHJldmlvdXMgdmFyaWFibGUgJ2snIGRlY2xhcmF0aW9uIiAidHJ1ZSIKK2ltcG9ydCBqYXZhLmlvLio7CisKK2NsYXNzIGEgeworICAgIHZvaWQgZihpbnQgaSkgeworICAgICAgICBmaW5hbCBpbnQgayA9IDIzNC81Kzc7CisgICAgICAgIGludCBoID0gNzsKKyAgICAgICAgaW50IDxjYXJldD5rID0gMjM0LzUrNzsKKyAgICB9Cit9CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvcmV1c2VWYXJpYWJsZURlY2xhcmF0aW9uL2JlZm9yZTMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvcmV1c2VWYXJpYWJsZURlY2xhcmF0aW9uL2JlZm9yZTMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41Mzc3YjYzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9yZXVzZVZhcmlhYmxlRGVjbGFyYXRpb24vYmVmb3JlMy5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKKy8vICJSZXVzZSBwcmV2aW91cyB2YXJpYWJsZSAnaScgZGVjbGFyYXRpb24iICJ0cnVlIgoraW1wb3J0IGphdmEuaW8uKjsKKworY2xhc3MgYSB7CisgICAgdm9pZCBmKGludCBpKSB7CisgICAgICAgIGZpbmFsIGludCA8Y2FyZXQ+aTsKKyAgICAgICAgaW50IGggPSA3OworICAgIH0KK30KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9yZXVzZVZhcmlhYmxlRGVjbGFyYXRpb24vYmVmb3JlNC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9yZXVzZVZhcmlhYmxlRGVjbGFyYXRpb24vYmVmb3JlNC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdmMTA3MzgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3JldXNlVmFyaWFibGVEZWNsYXJhdGlvbi9iZWZvcmU0LmphdmEKQEAgLTAsMCArMSwxMCBAQAorLy8gIlJldXNlIHByZXZpb3VzIHZhcmlhYmxlICdpJyBkZWNsYXJhdGlvbiIgImZhbHNlIgoraW1wb3J0IGphdmEuaW8uKjsKKworY2xhc3MgYSB7CisgICAgdm9pZCBmKGludCBpKSB7CisgICAgICAgIGZpbmFsIHNob3J0IDxjYXJldD5pOworICAgICAgICBpbnQgaCA9IDc7CisgICAgfQorfQorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3JldXNlVmFyaWFibGVEZWNsYXJhdGlvbi9iZWZvcmU1LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3JldXNlVmFyaWFibGVEZWNsYXJhdGlvbi9iZWZvcmU1LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODcyYjZmMAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvcmV1c2VWYXJpYWJsZURlY2xhcmF0aW9uL2JlZm9yZTUuamF2YQpAQCAtMCwwICsxLDExIEBACisvLyAiUmV1c2UgcHJldmlvdXMgdmFyaWFibGUgJ2knIGRlY2xhcmF0aW9uIiAiZmFsc2UiCitpbXBvcnQgamF2YS5pby4qOworCitjbGFzcyBhIHsKKyAgICBpbnQgaTsKKyAgICB2b2lkIGYoKSB7CisgICAgICAgIGZpbmFsIGludCA8Y2FyZXQ+aTsKKyAgICAgICAgaW50IGggPSA3OworICAgIH0KK30KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9yZXVzZVZhcmlhYmxlRGVjbGFyYXRpb24vYmVmb3JlNi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9yZXVzZVZhcmlhYmxlRGVjbGFyYXRpb24vYmVmb3JlNi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ2ZjU5MjUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3JldXNlVmFyaWFibGVEZWNsYXJhdGlvbi9iZWZvcmU2LmphdmEKQEAgLTAsMCArMSwxMSBAQAorLy8gIlJldXNlIHByZXZpb3VzIHZhcmlhYmxlICdpJyBkZWNsYXJhdGlvbiIgImZhbHNlIgoraW1wb3J0IGphdmEuaW8uKjsKKworY2xhc3MgYSB7CisgICAgaW50IGk7CisgICAgZmluYWwgaW50IDxjYXJldD5pOworICAgIHZvaWQgZigpIHsKKyAgICAgICAgaW50IGggPSA3OworICAgIH0KK30KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9zYWZlVmFyYXJncy9hZnRlcjEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvc2FmZVZhcmFyZ3MvYWZ0ZXIxLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDE1MWNlZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvc2FmZVZhcmFyZ3MvYWZ0ZXIxLmphdmEKQEAgLTAsMCArMSw4IEBACisvLyAiQW5ub3RhdGUgYXMgQFNhZmVWYXJhcmdzIiAidHJ1ZSIKK3B1YmxpYyBjbGFzcyBUZXN0IHsKKyAgQFNhZmVWYXJhcmdzCisgIHB1YmxpYyBzdGF0aWMgPFQ+IHZvaWQgbWFpbihULi4uIGFyZ3MpIHsKKworICB9Cit9CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvc2FmZVZhcmFyZ3MvYWZ0ZXI3LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3NhZmVWYXJhcmdzL2FmdGVyNy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFkZjhiZjMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3NhZmVWYXJhcmdzL2FmdGVyNy5qYXZhCkBAIC0wLDAgKzEsOSBAQAorLy8gIkFubm90YXRlIGFzIEBTYWZlVmFyYXJncyIgInRydWUiCitpbXBvcnQgamF2YS51dGlsLkxpc3Q7CitwdWJsaWMgY2xhc3MgVGVzdCB7CisgIHB1YmxpYyA8VD4gQFNhZmVWYXJhcmdzCisgICAgICAgICAgICAgc3RhdGljIHZvaWQgbWFpbihMaXN0PFQ+Li4uIGFyZ3MpIHsKKworICB9Cit9CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvc2FmZVZhcmFyZ3MvYWZ0ZXI4LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3NhZmVWYXJhcmdzL2FmdGVyOC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJmYTViMTUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3NhZmVWYXJhcmdzL2FmdGVyOC5qYXZhCkBAIC0wLDAgKzEsOCBAQAorLy8gIkFubm90YXRlIGFzIEBTYWZlVmFyYXJncyIgInRydWUiCitwdWJsaWMgY2xhc3MgVGVzdCB7CisgIEBTYWZlVmFyYXJncworICBwdWJsaWMgZmluYWwgPFQ+IHZvaWQgbWFpbihULi4uIGFyZ3MpIHsKKworICB9Cit9CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvc2FmZVZhcmFyZ3MvYWZ0ZXI5LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3NhZmVWYXJhcmdzL2FmdGVyOS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEwYmIzZTcxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9zYWZlVmFyYXJncy9hZnRlcjkuamF2YQpAQCAtMCwwICsxLDggQEAKKy8vICJNYWtlIGZpbmFsIGFuZCBhbm5vdGF0ZSBhcyBAU2FmZVZhcmFyZ3MiICJ0cnVlIgorcHVibGljIGNsYXNzIFRlc3QgeworICBAU2FmZVZhcmFyZ3MKKyAgcHVibGljIGZpbmFsIDxUPiB2b2lkIG08Y2FyZXQ+YWluKFQuLi4gYXJncykgeworCisgIH0KK30KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9zYWZlVmFyYXJncy9iZWZvcmUxLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3NhZmVWYXJhcmdzL2JlZm9yZTEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMzk0OWEwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9zYWZlVmFyYXJncy9iZWZvcmUxLmphdmEKQEAgLTAsMCArMSw3IEBACisvLyAiQW5ub3RhdGUgYXMgQFNhZmVWYXJhcmdzIiAidHJ1ZSIKK3B1YmxpYyBjbGFzcyBUZXN0IHsKKyAgcHVibGljIHN0YXRpYyA8VD4gdm9pZCBtYWk8Y2FyZXQ+bihULi4uIGFyZ3MpIHsKKworICB9Cit9CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvc2FmZVZhcmFyZ3MvYmVmb3JlMTAuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvc2FmZVZhcmFyZ3MvYmVmb3JlMTAuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNTA1NjlkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9zYWZlVmFyYXJncy9iZWZvcmUxMC5qYXZhCkBAIC0wLDAgKzEsNSBAQAorLy8gIk1ha2UgZmluYWwgYW5kIGFubm90YXRlIGFzIEBTYWZlVmFyYXJncyIgImZhbHNlIgorcHVibGljIGludGVyZmFjZSBUZXN0IHsKKyAgPFQ+IHZvaWQgbTxjYXJldD5haW4oVC4uLiBhcmdzKTsKK30KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9zYWZlVmFyYXJncy9iZWZvcmUxMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9zYWZlVmFyYXJncy9iZWZvcmUxMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNkMTdlNjkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3NhZmVWYXJhcmdzL2JlZm9yZTExLmphdmEKQEAgLTAsMCArMSw1IEBACisvLyAiTWFrZSBmaW5hbCBhbmQgYW5ub3RhdGUgYXMgQFNhZmVWYXJhcmdzIiAiZmFsc2UiCitwdWJsaWMgYWJzdHJhY3QgY2xhc3MgVGVzdCB7CisgIGFic3RyYWN0IDxUPiB2b2lkIG08Y2FyZXQ+YWluKFQuLi4gYXJncyk7Cit9CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvc2FmZVZhcmFyZ3MvYmVmb3JlMi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9zYWZlVmFyYXJncy9iZWZvcmUyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjQzNWI5NAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvc2FmZVZhcmFyZ3MvYmVmb3JlMi5qYXZhCkBAIC0wLDAgKzEsOCBAQAorLy8gIkFubm90YXRlIGFzIEBTYWZlVmFyYXJncyIgImZhbHNlIgorcHVibGljIGNsYXNzIFRlc3QgeworICBAU2FmZVZhcmFyZ3MKKyAgcHVibGljIHN0YXRpYyA8VD4gdm9pZCBtPGNhcmV0PmFpbihULi4uIGFyZ3MpIHsKKworICB9Cit9CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvc2FmZVZhcmFyZ3MvYmVmb3JlMy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9zYWZlVmFyYXJncy9iZWZvcmUzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGFjMWY1NQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvc2FmZVZhcmFyZ3MvYmVmb3JlMy5qYXZhCkBAIC0wLDAgKzEsNyBAQAorLy8gIkFubm90YXRlIGFzIEBTYWZlVmFyYXJncyIgImZhbHNlIgorcHVibGljIGNsYXNzIFRlc3QgeworICBwdWJsaWMgc3RhdGljIHZvaWQgbTxjYXJldD5haW4oU3RyaW5nLi4uIGFyZ3MpIHsKKworICB9Cit9CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvc2FmZVZhcmFyZ3MvYmVmb3JlNS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9zYWZlVmFyYXJncy9iZWZvcmU1LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMThmMDk1OAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvc2FmZVZhcmFyZ3MvYmVmb3JlNS5qYXZhCkBAIC0wLDAgKzEsNyBAQAorLy8gIkFubm90YXRlIGFzIEBTYWZlVmFyYXJncyIgImZhbHNlIgorcHVibGljIGNsYXNzIFRlc3QgeworICBwdWJsaWMgPFQ+IHZvaWQgbTxjYXJldD5haW4oVCBhcmdzKSB7CisKKyAgfQorfQorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3NhZmVWYXJhcmdzL2JlZm9yZTYuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvc2FmZVZhcmFyZ3MvYmVmb3JlNi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNkYWI1MTAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3NhZmVWYXJhcmdzL2JlZm9yZTYuamF2YQpAQCAtMCwwICsxLDggQEAKKy8vICJBbm5vdGF0ZSBhcyBAU2FmZVZhcmFyZ3MiICJmYWxzZSIKK2ltcG9ydCBqYXZhLnV0aWwuTGlzdDsKK3B1YmxpYyBjbGFzcyBUZXN0IHsKKyAgcHVibGljIHN0YXRpYyB2b2lkIG08Y2FyZXQ+YWluKExpc3Q8Pz4uLi4gYXJncykgeworCisgIH0KK30KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9zYWZlVmFyYXJncy9iZWZvcmU3LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3NhZmVWYXJhcmdzL2JlZm9yZTcuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYTUxNDgxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9zYWZlVmFyYXJncy9iZWZvcmU3LmphdmEKQEAgLTAsMCArMSw4IEBACisvLyAiQW5ub3RhdGUgYXMgQFNhZmVWYXJhcmdzIiAidHJ1ZSIKK2ltcG9ydCBqYXZhLnV0aWwuTGlzdDsKK3B1YmxpYyBjbGFzcyBUZXN0IHsKKyAgcHVibGljIDxUPiBzdGF0aWMgdm9pZCBtPGNhcmV0PmFpbihMaXN0PFQ+Li4uIGFyZ3MpIHsKKworICB9Cit9CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvc2FmZVZhcmFyZ3MvYmVmb3JlOC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9zYWZlVmFyYXJncy9iZWZvcmU4LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmNkYTY0ZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvc2FmZVZhcmFyZ3MvYmVmb3JlOC5qYXZhCkBAIC0wLDAgKzEsNyBAQAorLy8gIkFubm90YXRlIGFzIEBTYWZlVmFyYXJncyIgInRydWUiCitwdWJsaWMgY2xhc3MgVGVzdCB7CisgIHB1YmxpYyBmaW5hbCA8VD4gdm9pZCBtPGNhcmV0PmFpbihULi4uIGFyZ3MpIHsKKworICB9Cit9CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvc2FmZVZhcmFyZ3MvYmVmb3JlOS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9zYWZlVmFyYXJncy9iZWZvcmU5LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDc4YTNjZDEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3NhZmVWYXJhcmdzL2JlZm9yZTkuamF2YQpAQCAtMCwwICsxLDcgQEAKKy8vICJNYWtlIGZpbmFsIGFuZCBhbm5vdGF0ZSBhcyBAU2FmZVZhcmFyZ3MiICJ0cnVlIgorcHVibGljIGNsYXNzIFRlc3QgeworICBwdWJsaWMgPFQ+IHZvaWQgbTxjYXJldD5haW4oVC4uLiBhcmdzKSB7CisKKyAgfQorfQorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3NpbXBsaWZ5Qm9vbGVhbkV4cHJlc3Npb24vYWZ0ZXIxLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3NpbXBsaWZ5Qm9vbGVhbkV4cHJlc3Npb24vYWZ0ZXIxLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWNhZWZhZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvc2ltcGxpZnlCb29sZWFuRXhwcmVzc2lvbi9hZnRlcjEuamF2YQpAQCAtMCwwICsxLDYgQEAKKy8vICJTaW1wbGlmeSBib29sZWFuIGV4cHJlc3Npb24iICJ0cnVlIgorY2xhc3MgWCB7CisgICAgdm9pZCBmKCkgeworICAgICAgICA8Y2FyZXQ+cmV0dXJuOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3NpbXBsaWZ5Qm9vbGVhbkV4cHJlc3Npb24vYWZ0ZXIyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3NpbXBsaWZ5Qm9vbGVhbkV4cHJlc3Npb24vYWZ0ZXIyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWNhZWZhZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvc2ltcGxpZnlCb29sZWFuRXhwcmVzc2lvbi9hZnRlcjIuamF2YQpAQCAtMCwwICsxLDYgQEAKKy8vICJTaW1wbGlmeSBib29sZWFuIGV4cHJlc3Npb24iICJ0cnVlIgorY2xhc3MgWCB7CisgICAgdm9pZCBmKCkgeworICAgICAgICA8Y2FyZXQ+cmV0dXJuOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3NpbXBsaWZ5Qm9vbGVhbkV4cHJlc3Npb24vYWZ0ZXIzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3NpbXBsaWZ5Qm9vbGVhbkV4cHJlc3Npb24vYWZ0ZXIzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDRkOTU2ZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvc2ltcGxpZnlCb29sZWFuRXhwcmVzc2lvbi9hZnRlcjMuamF2YQpAQCAtMCwwICsxLDYgQEAKKy8vICJTaW1wbGlmeSBib29sZWFuIGV4cHJlc3Npb24iICJ0cnVlIgorY2xhc3MgWCB7CisgIHZvaWQgZigpIHsKKyAgICBpbnQgaSA9IDA8Y2FyZXQ+OworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9zaW1wbGlmeUJvb2xlYW5FeHByZXNzaW9uL2FmdGVyNC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9zaW1wbGlmeUJvb2xlYW5FeHByZXNzaW9uL2FmdGVyNC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVmYjcwNTNkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9zaW1wbGlmeUJvb2xlYW5FeHByZXNzaW9uL2FmdGVyNC5qYXZhCkBAIC0wLDAgKzEsNiBAQAorLy8gIlNpbXBsaWZ5IGJvb2xlYW4gZXhwcmVzc2lvbiIgInRydWUiCitjbGFzcyBYIHsKKyAgdm9pZCBmKCkgeworICAgICAgICBpbnQgaSA9IDI7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3NpbXBsaWZ5Qm9vbGVhbkV4cHJlc3Npb24vYWZ0ZXI1LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3NpbXBsaWZ5Qm9vbGVhbkV4cHJlc3Npb24vYWZ0ZXI1LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2Y5OGU2OAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvc2ltcGxpZnlCb29sZWFuRXhwcmVzc2lvbi9hZnRlcjUuamF2YQpAQCAtMCwwICsxLDkgQEAKKy8vICJTaW1wbGlmeSBib29sZWFuIGV4cHJlc3Npb24iICJ0cnVlIgorY2xhc3MgWCB7CisgICAgdm9pZCBmKCkgeworICAgICAgICBpbnQgaSA9IDI7CisgICAgICAgIC8vIGJlZ2luCisgICAgICAgIGludCBvID0gMDsgLy9taWQKKyAgICAgICAgLy8gZW5kCisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvc2ltcGxpZnlCb29sZWFuRXhwcmVzc2lvbi9hZnRlcjYuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvc2ltcGxpZnlCb29sZWFuRXhwcmVzc2lvbi9hZnRlcjYuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZjQ5N2E5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9zaW1wbGlmeUJvb2xlYW5FeHByZXNzaW9uL2FmdGVyNi5qYXZhCkBAIC0wLDAgKzEsNiBAQAorLy8gIlNpbXBsaWZ5IGJvb2xlYW4gZXhwcmVzc2lvbiIgInRydWUiCitjbGFzcyBYIHsKKyAgICB2b2lkIGYoKSB7CisgICAgICAgIC8vc2RmCisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvc2ltcGxpZnlCb29sZWFuRXhwcmVzc2lvbi9hZnRlcjcuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvc2ltcGxpZnlCb29sZWFuRXhwcmVzc2lvbi9hZnRlcjcuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYzg3NTdmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9zaW1wbGlmeUJvb2xlYW5FeHByZXNzaW9uL2FmdGVyNy5qYXZhCkBAIC0wLDAgKzEsOCBAQAorLy8gIlNpbXBsaWZ5IGJvb2xlYW4gZXhwcmVzc2lvbiIgInRydWUiCitjbGFzcyBYIHsKKyAgICB2b2lkIGYoT2JqZWN0IHBWYWwsIE9iamVjdCBuKSB7CisgICAgICAgIGlmICghcFZhbC5lcXVhbHMobikpCisgICAgICAgICAgICAgICAgcFZhbCA9IG51bGw7CisgICAgICAgICAgICBlbHNlIDxjYXJldD5wVmFsID0gbjsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9zaW1wbGlmeUJvb2xlYW5FeHByZXNzaW9uL2FmdGVyRXEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvc2ltcGxpZnlCb29sZWFuRXhwcmVzc2lvbi9hZnRlckVxLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjEyNDQzOAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvc2ltcGxpZnlCb29sZWFuRXhwcmVzc2lvbi9hZnRlckVxLmphdmEKQEAgLTAsMCArMSw2IEBACisvLyAiU2ltcGxpZnkgYm9vbGVhbiBleHByZXNzaW9uIiAidHJ1ZSIKK2NsYXNzIFggeworICAgIHZvaWQgZihib29sZWFuIGIpIHsKKyAgICAgICAgaWYgKCFiKSByZXR1cm47CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvc2ltcGxpZnlCb29sZWFuRXhwcmVzc2lvbi9hZnRlck1pZGRsZVBvbHlhZGljLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3NpbXBsaWZ5Qm9vbGVhbkV4cHJlc3Npb24vYWZ0ZXJNaWRkbGVQb2x5YWRpYy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUwNTIxZjgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3NpbXBsaWZ5Qm9vbGVhbkV4cHJlc3Npb24vYWZ0ZXJNaWRkbGVQb2x5YWRpYy5qYXZhCkBAIC0wLDAgKzEsNiBAQAorLy8gIlNpbXBsaWZ5IGJvb2xlYW4gZXhwcmVzc2lvbiIgInRydWUiCitjbGFzcyBYIHsKKyAgICB2b2lkIGYoYm9vbGVhbiBiLCBib29sZWFuIGMpIHsKKyAgICAgICAgaWYgKGIgJiYgYykgcmV0dXJuOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvc2ltcGxpZnlCb29sZWFuRXhwcmVzc2lvbi9hZnRlclhvcjEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvc2ltcGxpZnlCb29sZWFuRXhwcmVzc2lvbi9hZnRlclhvcjEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYWYwMTM0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9zaW1wbGlmeUJvb2xlYW5FeHByZXNzaW9uL2FmdGVyWG9yMS5qYXZhCkBAIC0wLDAgKzEsOSBAQAorLy8gIlNpbXBsaWZ5IGJvb2xlYW4gZXhwcmVzc2lvbiIgInRydWUiCitjbGFzcyBBIHsKKyAgICBib29sZWFuIGEgPSB0cnVlOworICAgIGJvb2xlYW4gYiA9IHRydWU7CisgICAgYm9vbGVhbiB4ID0gYTsgLy8gaW50ZW50aW9uICJzaW1wbGlmeSBib29sZWFuIGV4cHJlc3Npb24iIGRvZXMgbm90aGluZyBoZXJlLCBleHBlY3RlZDogYm9vbGVhbiB4ID0gYTsKKyAgICBib29sZWFuIHgxID0gYSBeIHRydWU7IC8vIGV4cGVjdGVkOiBib29sZWFuIHgxID0gIWE7IGZhaWxzLCBkb2VzIG5vdGhpbmcKKyAgICBib29sZWFuIHkgPSBhIF4gdHJ1ZSBeIGI7ICAvLyBpbnRlbnRpb24gcmVwbGFjZXMgd2l0aCBhIF4gYiwgZXhwZWN0ZWQgIShhIF4gYikgZmFpbHMKKyAgICBib29sZWFuIHkxID0gYSBeIGZhbHNlIF4gYjsgLy8gZXhwZWN0ZWQgYm9vbGVhbiB5MSA9IGEgXiBiIHdvcmtzIGNvcnJlY3RseTsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3NpbXBsaWZ5Qm9vbGVhbkV4cHJlc3Npb24vYWZ0ZXJYb3IyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3NpbXBsaWZ5Qm9vbGVhbkV4cHJlc3Npb24vYWZ0ZXJYb3IyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzRiYWZhNQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvc2ltcGxpZnlCb29sZWFuRXhwcmVzc2lvbi9hZnRlclhvcjIuamF2YQpAQCAtMCwwICsxLDkgQEAKKy8vICJTaW1wbGlmeSBib29sZWFuIGV4cHJlc3Npb24iICJ0cnVlIgorY2xhc3MgQSB7CisgICAgYm9vbGVhbiBhID0gdHJ1ZTsKKyAgICBib29sZWFuIGIgPSB0cnVlOworICAgIGJvb2xlYW4geCA9IGEgXiBmYWxzZTsgLy8gaW50ZW50aW9uICJzaW1wbGlmeSBib29sZWFuIGV4cHJlc3Npb24iIGRvZXMgbm90aGluZyBoZXJlLCBleHBlY3RlZDogYm9vbGVhbiB4ID0gYTsKKyAgICBib29sZWFuIHgxID0gIWE7IC8vIGV4cGVjdGVkOiBib29sZWFuIHgxID0gIWE7IGZhaWxzLCBkb2VzIG5vdGhpbmcKKyAgICBib29sZWFuIHkgPSBhIF4gdHJ1ZSBeIGI7ICAvLyBpbnRlbnRpb24gcmVwbGFjZXMgd2l0aCBhIF4gYiwgZXhwZWN0ZWQgIShhIF4gYikgZmFpbHMKKyAgICBib29sZWFuIHkxID0gYSBeIGZhbHNlIF4gYjsgLy8gZXhwZWN0ZWQgYm9vbGVhbiB5MSA9IGEgXiBiIHdvcmtzIGNvcnJlY3RseTsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3NpbXBsaWZ5Qm9vbGVhbkV4cHJlc3Npb24vYWZ0ZXJYb3IzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3NpbXBsaWZ5Qm9vbGVhbkV4cHJlc3Npb24vYWZ0ZXJYb3IzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2EyNTJjYgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvc2ltcGxpZnlCb29sZWFuRXhwcmVzc2lvbi9hZnRlclhvcjMuamF2YQpAQCAtMCwwICsxLDkgQEAKKy8vICJTaW1wbGlmeSBib29sZWFuIGV4cHJlc3Npb24iICJ0cnVlIgorY2xhc3MgQSB7CisgICAgYm9vbGVhbiBhID0gdHJ1ZTsKKyAgICBib29sZWFuIGIgPSB0cnVlOworICAgIGJvb2xlYW4geCA9IGEgXiBmYWxzZTsgLy8gaW50ZW50aW9uICJzaW1wbGlmeSBib29sZWFuIGV4cHJlc3Npb24iIGRvZXMgbm90aGluZyBoZXJlLCBleHBlY3RlZDogYm9vbGVhbiB4ID0gYTsKKyAgICBib29sZWFuIHgxID0gYSBeIHRydWU7IC8vIGV4cGVjdGVkOiBib29sZWFuIHgxID0gIWE7IGZhaWxzLCBkb2VzIG5vdGhpbmcKKyAgICBib29sZWFuIHkgPSAhKGEgXiBiKTsgIC8vIGludGVudGlvbiByZXBsYWNlcyB3aXRoIGEgXiBiLCBleHBlY3RlZCAhKGEgXiBiKSBmYWlscworICAgIGJvb2xlYW4geTEgPSBhIF4gZmFsc2UgXiBiOyAvLyBleHBlY3RlZCBib29sZWFuIHkxID0gYSBeIGIgd29ya3MgY29ycmVjdGx5OworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvc2ltcGxpZnlCb29sZWFuRXhwcmVzc2lvbi9hZnRlclhvcjQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvc2ltcGxpZnlCb29sZWFuRXhwcmVzc2lvbi9hZnRlclhvcjQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYWIxMTQxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9zaW1wbGlmeUJvb2xlYW5FeHByZXNzaW9uL2FmdGVyWG9yNC5qYXZhCkBAIC0wLDAgKzEsOSBAQAorLy8gIlNpbXBsaWZ5IGJvb2xlYW4gZXhwcmVzc2lvbiIgInRydWUiCitjbGFzcyBBIHsKKyAgICBib29sZWFuIGEgPSB0cnVlOworICAgIGJvb2xlYW4gYiA9IHRydWU7CisgICAgYm9vbGVhbiB4ID0gYSBeIGZhbHNlOyAvLyBpbnRlbnRpb24gInNpbXBsaWZ5IGJvb2xlYW4gZXhwcmVzc2lvbiIgZG9lcyBub3RoaW5nIGhlcmUsIGV4cGVjdGVkOiBib29sZWFuIHggPSBhOworICAgIGJvb2xlYW4geDEgPSBhIF4gdHJ1ZTsgLy8gZXhwZWN0ZWQ6IGJvb2xlYW4geDEgPSAhYTsgZmFpbHMsIGRvZXMgbm90aGluZworICAgIGJvb2xlYW4geSA9IGEgXiB0cnVlIF4gYjsgIC8vIGludGVudGlvbiByZXBsYWNlcyB3aXRoIGEgXiBiLCBleHBlY3RlZCAhKGEgXiBiKSBmYWlscworICAgIGJvb2xlYW4geTEgPSBhIF4gYjsgLy8gZXhwZWN0ZWQgYm9vbGVhbiB5MSA9IGEgXiBiIHdvcmtzIGNvcnJlY3RseTsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3NpbXBsaWZ5Qm9vbGVhbkV4cHJlc3Npb24vYmVmb3JlMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9zaW1wbGlmeUJvb2xlYW5FeHByZXNzaW9uL2JlZm9yZTEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNDE3YTkwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9zaW1wbGlmeUJvb2xlYW5FeHByZXNzaW9uL2JlZm9yZTEuamF2YQpAQCAtMCwwICsxLDYgQEAKKy8vICJTaW1wbGlmeSBib29sZWFuIGV4cHJlc3Npb24iICJ0cnVlIgorY2xhc3MgWCB7CisgICAgdm9pZCBmKCkgeworICAgICAgICBpZiAoZmFsc2UgfHwgPGNhcmV0PnRydWUgfHwgdGhpcyA9PSBudWxsKSByZXR1cm47CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvc2ltcGxpZnlCb29sZWFuRXhwcmVzc2lvbi9iZWZvcmUyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3NpbXBsaWZ5Qm9vbGVhbkV4cHJlc3Npb24vYmVmb3JlMi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVkZWRhMTIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3NpbXBsaWZ5Qm9vbGVhbkV4cHJlc3Npb24vYmVmb3JlMi5qYXZhCkBAIC0wLDAgKzEsNiBAQAorLy8gIlNpbXBsaWZ5IGJvb2xlYW4gZXhwcmVzc2lvbiIgInRydWUiCitjbGFzcyBYIHsKKyAgICB2b2lkIGYoKSB7CisgICAgICAgIGlmIChmYWxzZSB8fCAoPGNhcmV0PnRydWUgJiYgIShmYWxzZSkpfHwgdGhpcyA9PSBudWxsKSByZXR1cm47CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvc2ltcGxpZnlCb29sZWFuRXhwcmVzc2lvbi9iZWZvcmUzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3NpbXBsaWZ5Qm9vbGVhbkV4cHJlc3Npb24vYmVmb3JlMy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgyYjZiOTAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3NpbXBsaWZ5Qm9vbGVhbkV4cHJlc3Npb24vYmVmb3JlMy5qYXZhCkBAIC0wLDAgKzEsNiBAQAorLy8gIlNpbXBsaWZ5IGJvb2xlYW4gZXhwcmVzc2lvbiIgInRydWUiCitjbGFzcyBYIHsKKyAgdm9pZCBmKCkgeworICAgIGludCBpID0gISghZmFsc2UgJiYgdHJ1ZSkgfHwgPGNhcmV0Pih0cnVlID8gdHJ1ZSAmIHRydWUgOiAhIWZhbHNlIHwgZmFsc2UpIHx8IHRoaXMgPT0gbnVsbCA/IDAgOiAxOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9zaW1wbGlmeUJvb2xlYW5FeHByZXNzaW9uL2JlZm9yZTQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvc2ltcGxpZnlCb29sZWFuRXhwcmVzc2lvbi9iZWZvcmU0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWUwZjBjYwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvc2ltcGxpZnlCb29sZWFuRXhwcmVzc2lvbi9iZWZvcmU0LmphdmEKQEAgLTAsMCArMSw5IEBACisvLyAiU2ltcGxpZnkgYm9vbGVhbiBleHByZXNzaW9uIiAidHJ1ZSIKK2NsYXNzIFggeworICB2b2lkIGYoKSB7CisgICAgICAgIGludCBpID0gMjsKKyAgICAgICAgaWYgKGZhbHNlPGNhcmV0PiAmJiBpPT0wKSB7ICAgCisgICAgICAgICAgICAvL3NkZgorICAgICAgICB9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3NpbXBsaWZ5Qm9vbGVhbkV4cHJlc3Npb24vYmVmb3JlNS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9zaW1wbGlmeUJvb2xlYW5FeHByZXNzaW9uL2JlZm9yZTUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NWQwZGY2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9zaW1wbGlmeUJvb2xlYW5FeHByZXNzaW9uL2JlZm9yZTUuamF2YQpAQCAtMCwwICsxLDE0IEBACisvLyAiU2ltcGxpZnkgYm9vbGVhbiBleHByZXNzaW9uIiAidHJ1ZSIKK2NsYXNzIFggeworICAgIHZvaWQgZigpIHsKKyAgICAgICAgaW50IGkgPSAyOworICAgICAgICBpZiAoZmFsc2U8Y2FyZXQ+ICE9ZmFsc2UpIHsKKyAgICAgICAgICAgIC8vc2RmCisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAvLyBiZWdpbgorICAgICAgICAgICAgaW50IG8gPSAwOyAvL21pZAorICAgICAgICAgICAgLy8gZW5kCisgICAgICAgIH0KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9zaW1wbGlmeUJvb2xlYW5FeHByZXNzaW9uL2JlZm9yZTYuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvc2ltcGxpZnlCb29sZWFuRXhwcmVzc2lvbi9iZWZvcmU2LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjRlOGFlMAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvc2ltcGxpZnlCb29sZWFuRXhwcmVzc2lvbi9iZWZvcmU2LmphdmEKQEAgLTAsMCArMSw4IEBACisvLyAiU2ltcGxpZnkgYm9vbGVhbiBleHByZXNzaW9uIiAidHJ1ZSIKK2NsYXNzIFggeworICAgIHZvaWQgZigpIHsKKyAgICAgICAgaWYgKCghKCEoKGJvb2xlYW4pdHJ1ZSkpPGNhcmV0PiA9PSh0cnVlKSkpIHsKKyAgICAgICAgICAgIC8vc2RmCisgICAgICAgIH0KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9zaW1wbGlmeUJvb2xlYW5FeHByZXNzaW9uL2JlZm9yZTcuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvc2ltcGxpZnlCb29sZWFuRXhwcmVzc2lvbi9iZWZvcmU3LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjM3YjE4NwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvc2ltcGxpZnlCb29sZWFuRXhwcmVzc2lvbi9iZWZvcmU3LmphdmEKQEAgLTAsMCArMSw5IEBACisvLyAiU2ltcGxpZnkgYm9vbGVhbiBleHByZXNzaW9uIiAidHJ1ZSIKK2NsYXNzIFggeworICAgIHZvaWQgZihPYmplY3QgcFZhbCwgT2JqZWN0IG4pIHsKKyAgICAgICAgaWYgKCFwVmFsLmVxdWFscyhuKSkKKyAgICAgICAgICAgICAgICBwVmFsID0gbnVsbDsKKyAgICAgICAgICAgIGVsc2UgaWYgKDxjYXJldD50cnVlPT10cnVlKQorICAgICAgICAgICAgICAgIHBWYWwgPSBuOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3NpbXBsaWZ5Qm9vbGVhbkV4cHJlc3Npb24vYmVmb3JlQnJva2VuSW5zaWRlUG9seWFkaWMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvc2ltcGxpZnlCb29sZWFuRXhwcmVzc2lvbi9iZWZvcmVCcm9rZW5JbnNpZGVQb2x5YWRpYy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAyNTRkZmIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3NpbXBsaWZ5Qm9vbGVhbkV4cHJlc3Npb24vYmVmb3JlQnJva2VuSW5zaWRlUG9seWFkaWMuamF2YQpAQCAtMCwwICsxLDYgQEAKKy8vICJTaW1wbGlmeSBib29sZWFuIGV4cHJlc3Npb24iICJmYWxzZSIKK2NsYXNzIFggeworICAgIHZvaWQgZihpbnQgYSwgaW50IGIsIGludCBjKSB7CisgICAgICAgIGlmICggYiAtIGEgPT0gYiAtIGMgLSA8Y2FyZXQ+PT0gYikgcmV0dXJuOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvc2ltcGxpZnlCb29sZWFuRXhwcmVzc2lvbi9iZWZvcmVFcS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9zaW1wbGlmeUJvb2xlYW5FeHByZXNzaW9uL2JlZm9yZUVxLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDQ0ODAxNQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvc2ltcGxpZnlCb29sZWFuRXhwcmVzc2lvbi9iZWZvcmVFcS5qYXZhCkBAIC0wLDAgKzEsNiBAQAorLy8gIlNpbXBsaWZ5IGJvb2xlYW4gZXhwcmVzc2lvbiIgInRydWUiCitjbGFzcyBYIHsKKyAgICB2b2lkIGYoYm9vbGVhbiBiKSB7CisgICAgICAgIGlmICg8Y2FyZXQ+YiA9PSBmYWxzZSkgcmV0dXJuOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3NpbXBsaWZ5Qm9vbGVhbkV4cHJlc3Npb24vYmVmb3JlTWlkZGxlUG9seWFkaWMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvc2ltcGxpZnlCb29sZWFuRXhwcmVzc2lvbi9iZWZvcmVNaWRkbGVQb2x5YWRpYy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc1OTM4MTgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3NpbXBsaWZ5Qm9vbGVhbkV4cHJlc3Npb24vYmVmb3JlTWlkZGxlUG9seWFkaWMuamF2YQpAQCAtMCwwICsxLDYgQEAKKy8vICJTaW1wbGlmeSBib29sZWFuIGV4cHJlc3Npb24iICJ0cnVlIgorY2xhc3MgWCB7CisgICAgdm9pZCBmKGJvb2xlYW4gYiwgYm9vbGVhbiBjKSB7CisgICAgICAgIGlmIChiICYmIHRyPGNhcmV0PnVlICYmIGMpIHJldHVybjsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3NpbXBsaWZ5Qm9vbGVhbkV4cHJlc3Npb24vYmVmb3JlWG9yMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9zaW1wbGlmeUJvb2xlYW5FeHByZXNzaW9uL2JlZm9yZVhvcjEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYzNjMjA1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9zaW1wbGlmeUJvb2xlYW5FeHByZXNzaW9uL2JlZm9yZVhvcjEuamF2YQpAQCAtMCwwICsxLDkgQEAKKy8vICJTaW1wbGlmeSBib29sZWFuIGV4cHJlc3Npb24iICJ0cnVlIgorY2xhc3MgQSB7CisgICAgYm9vbGVhbiBhID0gdHJ1ZTsKKyAgICBib29sZWFuIGIgPSB0cnVlOworICAgIGJvb2xlYW4geCA9IGEgPGNhcmV0Pl4gZmFsc2U7IC8vIGludGVudGlvbiAic2ltcGxpZnkgYm9vbGVhbiBleHByZXNzaW9uIiBkb2VzIG5vdGhpbmcgaGVyZSwgZXhwZWN0ZWQ6IGJvb2xlYW4geCA9IGE7CisgICAgYm9vbGVhbiB4MSA9IGEgXiB0cnVlOyAvLyBleHBlY3RlZDogYm9vbGVhbiB4MSA9ICFhOyBmYWlscywgZG9lcyBub3RoaW5nCisgICAgYm9vbGVhbiB5ID0gYSBeIHRydWUgXiBiOyAgLy8gaW50ZW50aW9uIHJlcGxhY2VzIHdpdGggYSBeIGIsIGV4cGVjdGVkICEoYSBeIGIpIGZhaWxzCisgICAgYm9vbGVhbiB5MSA9IGEgXiBmYWxzZSBeIGI7IC8vIGV4cGVjdGVkIGJvb2xlYW4geTEgPSBhIF4gYiB3b3JrcyBjb3JyZWN0bHk7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9zaW1wbGlmeUJvb2xlYW5FeHByZXNzaW9uL2JlZm9yZVhvcjIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvc2ltcGxpZnlCb29sZWFuRXhwcmVzc2lvbi9iZWZvcmVYb3IyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTMwMTU2MQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvc2ltcGxpZnlCb29sZWFuRXhwcmVzc2lvbi9iZWZvcmVYb3IyLmphdmEKQEAgLTAsMCArMSw5IEBACisvLyAiU2ltcGxpZnkgYm9vbGVhbiBleHByZXNzaW9uIiAidHJ1ZSIKK2NsYXNzIEEgeworICAgIGJvb2xlYW4gYSA9IHRydWU7CisgICAgYm9vbGVhbiBiID0gdHJ1ZTsKKyAgICBib29sZWFuIHggPSBhIF4gZmFsc2U7IC8vIGludGVudGlvbiAic2ltcGxpZnkgYm9vbGVhbiBleHByZXNzaW9uIiBkb2VzIG5vdGhpbmcgaGVyZSwgZXhwZWN0ZWQ6IGJvb2xlYW4geCA9IGE7CisgICAgYm9vbGVhbiB4MSA9IGEgPGNhcmV0Pl4gdHJ1ZTsgLy8gZXhwZWN0ZWQ6IGJvb2xlYW4geDEgPSAhYTsgZmFpbHMsIGRvZXMgbm90aGluZworICAgIGJvb2xlYW4geSA9IGEgXiB0cnVlIF4gYjsgIC8vIGludGVudGlvbiByZXBsYWNlcyB3aXRoIGEgXiBiLCBleHBlY3RlZCAhKGEgXiBiKSBmYWlscworICAgIGJvb2xlYW4geTEgPSBhIF4gZmFsc2UgXiBiOyAvLyBleHBlY3RlZCBib29sZWFuIHkxID0gYSBeIGIgd29ya3MgY29ycmVjdGx5OworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvc2ltcGxpZnlCb29sZWFuRXhwcmVzc2lvbi9iZWZvcmVYb3IzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3NpbXBsaWZ5Qm9vbGVhbkV4cHJlc3Npb24vYmVmb3JlWG9yMy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk1NmM4YmYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3NpbXBsaWZ5Qm9vbGVhbkV4cHJlc3Npb24vYmVmb3JlWG9yMy5qYXZhCkBAIC0wLDAgKzEsOSBAQAorLy8gIlNpbXBsaWZ5IGJvb2xlYW4gZXhwcmVzc2lvbiIgInRydWUiCitjbGFzcyBBIHsKKyAgICBib29sZWFuIGEgPSB0cnVlOworICAgIGJvb2xlYW4gYiA9IHRydWU7CisgICAgYm9vbGVhbiB4ID0gYSBeIGZhbHNlOyAvLyBpbnRlbnRpb24gInNpbXBsaWZ5IGJvb2xlYW4gZXhwcmVzc2lvbiIgZG9lcyBub3RoaW5nIGhlcmUsIGV4cGVjdGVkOiBib29sZWFuIHggPSBhOworICAgIGJvb2xlYW4geDEgPSBhIF4gdHJ1ZTsgLy8gZXhwZWN0ZWQ6IGJvb2xlYW4geDEgPSAhYTsgZmFpbHMsIGRvZXMgbm90aGluZworICAgIGJvb2xlYW4geSA9IGEgXiA8Y2FyZXQ+dHJ1ZSBeIGI7ICAvLyBpbnRlbnRpb24gcmVwbGFjZXMgd2l0aCBhIF4gYiwgZXhwZWN0ZWQgIShhIF4gYikgZmFpbHMKKyAgICBib29sZWFuIHkxID0gYSBeIGZhbHNlIF4gYjsgLy8gZXhwZWN0ZWQgYm9vbGVhbiB5MSA9IGEgXiBiIHdvcmtzIGNvcnJlY3RseTsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3NpbXBsaWZ5Qm9vbGVhbkV4cHJlc3Npb24vYmVmb3JlWG9yNC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9zaW1wbGlmeUJvb2xlYW5FeHByZXNzaW9uL2JlZm9yZVhvcjQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZDVkMGJjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9zaW1wbGlmeUJvb2xlYW5FeHByZXNzaW9uL2JlZm9yZVhvcjQuamF2YQpAQCAtMCwwICsxLDkgQEAKKy8vICJTaW1wbGlmeSBib29sZWFuIGV4cHJlc3Npb24iICJ0cnVlIgorY2xhc3MgQSB7CisgICAgYm9vbGVhbiBhID0gdHJ1ZTsKKyAgICBib29sZWFuIGIgPSB0cnVlOworICAgIGJvb2xlYW4geCA9IGEgXiBmYWxzZTsgLy8gaW50ZW50aW9uICJzaW1wbGlmeSBib29sZWFuIGV4cHJlc3Npb24iIGRvZXMgbm90aGluZyBoZXJlLCBleHBlY3RlZDogYm9vbGVhbiB4ID0gYTsKKyAgICBib29sZWFuIHgxID0gYSBeIHRydWU7IC8vIGV4cGVjdGVkOiBib29sZWFuIHgxID0gIWE7IGZhaWxzLCBkb2VzIG5vdGhpbmcKKyAgICBib29sZWFuIHkgPSBhIF4gdHJ1ZSBeIGI7ICAvLyBpbnRlbnRpb24gcmVwbGFjZXMgd2l0aCBhIF4gYiwgZXhwZWN0ZWQgIShhIF4gYikgZmFpbHMKKyAgICBib29sZWFuIHkxID0gYSBeIDxjYXJldD5mYWxzZSBeIGI7IC8vIGV4cGVjdGVkIGJvb2xlYW4geTEgPSBhIF4gYiB3b3JrcyBjb3JyZWN0bHk7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9zdGF0aWNJbXBvcnRNZXRob2QvYWZ0ZXIxLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3N0YXRpY0ltcG9ydE1ldGhvZC9hZnRlcjEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYzQ2ODhiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9zdGF0aWNJbXBvcnRNZXRob2QvYWZ0ZXIxLmphdmEKQEAgLTAsMCArMSw4IEBACitpbXBvcnQgc3RhdGljIGphdmEubGFuZy5JbnRlZ2VyLnBhcnNlSW50OworCisvLyAiU3RhdGljIEltcG9ydCBNZXRob2QgJ2phdmEubGFuZy5JbnRlZ2VyLnBhcnNlSW50JyIgInRydWUiCitwdWJsaWMgY2xhc3MgWCB7CisgICAgeworICAgICAgICA8Y2FyZXQ+cGFyc2VJbnQoIiIsMTApOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3N0YXRpY0ltcG9ydE1ldGhvZC9hZnRlcjIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvc3RhdGljSW1wb3J0TWV0aG9kL2FmdGVyMi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJjNzVkMzgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3N0YXRpY0ltcG9ydE1ldGhvZC9hZnRlcjIuamF2YQpAQCAtMCwwICsxLDMwIEBACisvLyAiU3RhdGljIEltcG9ydCBNZXRob2QuLi4iICJ0cnVlIgorcGFja2FnZSBwOworCitpbXBvcnQgc3RhdGljIHAuRkZGLm15RXF1YWxUbzsKKworcHVibGljIGNsYXNzIFggeworICBwdWJsaWMgdm9pZCB0ZXN0KCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgYXNzZXJ0TWUoIiIsIG15RXF1YWxUbygiIikpOworICB9CisKKyAgPFY+IHZvaWQgYXNzZXJ0TWUoViB2LCBNPFY+IG0pIHsKKyAgfQorfQorCisKK2NsYXNzIE08VD4geworfQorCitjbGFzcyBGRkYgeworICBwdWJsaWMgc3RhdGljIDxUPiBNPFQ+IG15RXF1YWxUbyhUIG9wZXJhbmQpIHsKKyAgICByZXR1cm4gbnVsbDsKKyAgfQorfQorCisKK2NsYXNzIExMTCB7CisgIHB1YmxpYyBzdGF0aWMgTTxTdHJpbmc+IG15RXF1YWxUbyhTdHJpbmcgc3RyaW5nKSB7CisgICAgcmV0dXJuIG51bGw7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3N0YXRpY0ltcG9ydE1ldGhvZC9hZnRlclJlcGxhY2VBbGxSZWZzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3N0YXRpY0ltcG9ydE1ldGhvZC9hZnRlclJlcGxhY2VBbGxSZWZzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWUyNzQ1NQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvc3RhdGljSW1wb3J0TWV0aG9kL2FmdGVyUmVwbGFjZUFsbFJlZnMuamF2YQpAQCAtMCwwICsxLDkgQEAKK2ltcG9ydCBzdGF0aWMgamF2YS5sYW5nLlN0cmluZy5mb3JtYXQ7CisKKy8vICJTdGF0aWMgSW1wb3J0IE1ldGhvZCAnamF2YS5sYW5nLlN0cmluZy5mb3JtYXQnIiAidHJ1ZSIKK3B1YmxpYyBjbGFzcyBYIHsKKyAgICB7CisgICAgICBmb3JtYXQoIiIpOworICAgICAgZm9ybWF0KCIiKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9zdGF0aWNJbXBvcnRNZXRob2QvYWZ0ZXJSZXR1cm5UeXBlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3N0YXRpY0ltcG9ydE1ldGhvZC9hZnRlclJldHVyblR5cGUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZGNlMGI1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9zdGF0aWNJbXBvcnRNZXRob2QvYWZ0ZXJSZXR1cm5UeXBlLmphdmEKQEAgLTAsMCArMSwyMSBAQAorLy8gIlN0YXRpYyBJbXBvcnQgTWV0aG9kICdmb28uQi5hYWFhYWFhJyIgInRydWUiCitwYWNrYWdlIGZvbzsKKworaW1wb3J0IHN0YXRpYyBmb28uQi5hYWFhYWFhOworCitwdWJsaWMgY2xhc3MgWCB7CisgICAgeworICAgICAgICBJbnRlZ2VyIGkgPSBhYWFhYWFhKCIiLCAxMCk7CisgICAgfQorfQorCitjbGFzcyBCIHsKKyAgcHVibGljIHN0YXRpYyAgSW50ZWdlciBhYWFhYWFhKFN0cmluZyBzLCBpbnQgaSkgeworICAgIHJldHVybiAxOworICB9Cit9CitjbGFzcyBCMSB7CisgIHB1YmxpYyBzdGF0aWMgU3RyaW5nIGFhYWFhYWEoU3RyaW5nIHMsIGludCBpKSB7CisgICAgcmV0dXJuICIiOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9zdGF0aWNJbXBvcnRNZXRob2QvYWZ0ZXJWYXJhcmdzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3N0YXRpY0ltcG9ydE1ldGhvZC9hZnRlclZhcmFyZ3MuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYTE4N2ZiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9zdGF0aWNJbXBvcnRNZXRob2QvYWZ0ZXJWYXJhcmdzLmphdmEKQEAgLTAsMCArMSwyMyBAQAorLy8gIlN0YXRpYyBJbXBvcnQgTWV0aG9kICdmb28uQi5hYWFhYWFhJyIgInRydWUiCitwYWNrYWdlIGZvbzsKKworaW1wb3J0IHN0YXRpYyBmb28uQi5hYWFhYWFhOworCitwdWJsaWMgY2xhc3MgWCB7CisgICAgeworICAgICAgICBmb28oMSwgMiwgYWFhYWFhYSgiIikpOworICAgIH0KKyAgCisgICAgdm9pZCBmb28oSW50ZWdlci4uLiBwKSB7fQorfQorCitjbGFzcyBCIHsKKyAgcHVibGljIHN0YXRpYyAgSW50ZWdlciBhYWFhYWFhKFN0cmluZyBzKSB7CisgICAgcmV0dXJuIDE7CisgIH0KK30KK2NsYXNzIEIxIHsKKyAgcHVibGljIHN0YXRpYyBTdHJpbmcgYWFhYWFhYShTdHJpbmcgcykgeworICAgIHJldHVybiAiIjsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvc3RhdGljSW1wb3J0TWV0aG9kL2JlZm9yZTEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvc3RhdGljSW1wb3J0TWV0aG9kL2JlZm9yZTEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZmFiM2RhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9zdGF0aWNJbXBvcnRNZXRob2QvYmVmb3JlMS5qYXZhCkBAIC0wLDAgKzEsNiBAQAorLy8gIlN0YXRpYyBJbXBvcnQgTWV0aG9kICdqYXZhLmxhbmcuSW50ZWdlci5wYXJzZUludCciICJ0cnVlIgorcHVibGljIGNsYXNzIFggeworICAgIHsKKyAgICAgICAgPGNhcmV0PnBhcnNlSW50KCIiLDEwKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9zdGF0aWNJbXBvcnRNZXRob2QvYmVmb3JlMi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9zdGF0aWNJbXBvcnRNZXRob2QvYmVmb3JlMi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJjMzc4ODEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3N0YXRpY0ltcG9ydE1ldGhvZC9iZWZvcmUyLmphdmEKQEAgLTAsMCArMSwyNyBAQAorLy8gIlN0YXRpYyBJbXBvcnQgTWV0aG9kLi4uIiAidHJ1ZSIKK3BhY2thZ2UgcDsKK3B1YmxpYyBjbGFzcyBYIHsKKyAgcHVibGljIHZvaWQgdGVzdCgpIHRocm93cyBFeGNlcHRpb24geworICAgIGFzc2VydE1lKCIiLCBteTxjYXJldD5FcXVhbFRvKCIiKSk7CisgIH0KKworICA8Vj4gdm9pZCBhc3NlcnRNZShWIHYsIE08Vj4gbSkgeworICB9Cit9CisKKworY2xhc3MgTTxUPiB7Cit9CisKK2NsYXNzIEZGRiB7CisgIHB1YmxpYyBzdGF0aWMgPFQ+IE08VD4gbXlFcXVhbFRvKFQgb3BlcmFuZCkgeworICAgIHJldHVybiBudWxsOworICB9Cit9CisKKworY2xhc3MgTExMIHsKKyAgcHVibGljIHN0YXRpYyBNPFN0cmluZz4gbXlFcXVhbFRvKFN0cmluZyBzdHJpbmcpIHsKKyAgICByZXR1cm4gbnVsbDsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvc3RhdGljSW1wb3J0TWV0aG9kL2JlZm9yZVF1YWxpZmllZC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9zdGF0aWNJbXBvcnRNZXRob2QvYmVmb3JlUXVhbGlmaWVkLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODhiNmZiMgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvc3RhdGljSW1wb3J0TWV0aG9kL2JlZm9yZVF1YWxpZmllZC5qYXZhCkBAIC0wLDAgKzEsNiBAQAorLy8gIlN0YXRpYyBJbXBvcnQgTWV0aG9kICdqYXZhLmxhbmcuSW50ZWdlci5wYXJzZUludCciICJmYWxzZSIKK3B1YmxpYyBjbGFzcyBYIHsKKyAgICB7CisgICAgICAgIHRoaXMuPGNhcmV0PnBhcnNlSW50KCIiLDEwKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9zdGF0aWNJbXBvcnRNZXRob2QvYmVmb3JlUmVwbGFjZUFsbFJlZnMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvc3RhdGljSW1wb3J0TWV0aG9kL2JlZm9yZVJlcGxhY2VBbGxSZWZzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2M3YWQyNwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvc3RhdGljSW1wb3J0TWV0aG9kL2JlZm9yZVJlcGxhY2VBbGxSZWZzLmphdmEKQEAgLTAsMCArMSw3IEBACisvLyAiU3RhdGljIEltcG9ydCBNZXRob2QgJ2phdmEubGFuZy5TdHJpbmcuZm9ybWF0JyIgInRydWUiCitwdWJsaWMgY2xhc3MgWCB7CisgICAgeworICAgICAgU3RyaW5nLmZvcm1hdCgiIik7CisgICAgICA8Y2FyZXQ+Zm9ybWF0KCIiKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9zdGF0aWNJbXBvcnRNZXRob2QvYmVmb3JlUmV0dXJuVHlwZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9zdGF0aWNJbXBvcnRNZXRob2QvYmVmb3JlUmV0dXJuVHlwZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQxOTM5MzIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3N0YXRpY0ltcG9ydE1ldGhvZC9iZWZvcmVSZXR1cm5UeXBlLmphdmEKQEAgLTAsMCArMSwxOCBAQAorLy8gIlN0YXRpYyBJbXBvcnQgTWV0aG9kICdmb28uQi5hYWFhYWFhJyIgInRydWUiCitwYWNrYWdlIGZvbzsKK3B1YmxpYyBjbGFzcyBYIHsKKyAgICB7CisgICAgICAgIEludGVnZXIgaSA9IDxjYXJldD5hYWFhYWFhKCIiLCAxMCk7CisgICAgfQorfQorCitjbGFzcyBCIHsKKyAgcHVibGljIHN0YXRpYyAgSW50ZWdlciBhYWFhYWFhKFN0cmluZyBzLCBpbnQgaSkgeworICAgIHJldHVybiAxOworICB9Cit9CitjbGFzcyBCMSB7CisgIHB1YmxpYyBzdGF0aWMgU3RyaW5nIGFhYWFhYWEoU3RyaW5nIHMsIGludCBpKSB7CisgICAgcmV0dXJuICIiOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9zdGF0aWNJbXBvcnRNZXRob2QvYmVmb3JlVmFyYXJncy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9zdGF0aWNJbXBvcnRNZXRob2QvYmVmb3JlVmFyYXJncy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg2YmJlYTEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3N0YXRpY0ltcG9ydE1ldGhvZC9iZWZvcmVWYXJhcmdzLmphdmEKQEAgLTAsMCArMSwyMSBAQAorLy8gIlN0YXRpYyBJbXBvcnQgTWV0aG9kICdmb28uQi5hYWFhYWFhJyIgInRydWUiCitwYWNrYWdlIGZvbzsKKworcHVibGljIGNsYXNzIFggeworICAgIHsKKyAgICAgICAgZm9vKDEsIDIsIDxjYXJldD5hYWFhYWFhKCIiKSk7CisgICAgfQorICAKKyAgICB2b2lkIGZvbyhJbnRlZ2VyLi4uIHApIHt9Cit9CisKK2NsYXNzIEIgeworICBwdWJsaWMgc3RhdGljICBJbnRlZ2VyIGFhYWFhYWEoU3RyaW5nIHMpIHsKKyAgICByZXR1cm4gMTsKKyAgfQorfQorY2xhc3MgQjEgeworICBwdWJsaWMgc3RhdGljIFN0cmluZyBhYWFhYWFhKFN0cmluZyBzKSB7CisgICAgcmV0dXJuICIiOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9zdHJpbmdUb0NoYXJhY3RlckxpdGVyYWwvYWZ0ZXIxLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3N0cmluZ1RvQ2hhcmFjdGVyTGl0ZXJhbC9hZnRlcjEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MTFkZWQzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9zdHJpbmdUb0NoYXJhY3RlckxpdGVyYWwvYWZ0ZXIxLmphdmEKQEAgLTAsMCArMSwxMCBAQAorLy8gIkNoYW5nZSAiMSIgdG8gJzEnICh0byBjaGFyIGxpdGVyYWwpIiAidHJ1ZSIKK2NsYXNzIFNpbXBsZSB7CisgICAgcHVibGljIHZvaWQgbShjaGFyIGNoKSB7CisKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCB0ZXN0KCkgeworICAgICAgICBtKDxjYXJldD4nMScpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvc3RyaW5nVG9DaGFyYWN0ZXJMaXRlcmFsL2FmdGVyMTAuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvc3RyaW5nVG9DaGFyYWN0ZXJMaXRlcmFsL2FmdGVyMTAuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZDlkMWFhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9zdHJpbmdUb0NoYXJhY3RlckxpdGVyYWwvYWZ0ZXIxMC5qYXZhCkBAIC0wLDAgKzEsOCBAQAorLy8gIkNoYW5nZSAiJyIgdG8gJ1wnJyAodG8gY2hhciBsaXRlcmFsKSIgInRydWUiCitjbGFzcyBRdW90ZXMgeworICAgIHZvaWQgbTEoY2hhciBjaCkge30KKworICAgIHZvaWQgdGVzdCgpIHsKKyAgICAgICAgbTEoPGNhcmV0PidcJycpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvc3RyaW5nVG9DaGFyYWN0ZXJMaXRlcmFsL2FmdGVyMTEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvc3RyaW5nVG9DaGFyYWN0ZXJMaXRlcmFsL2FmdGVyMTEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MjEzZGEyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9zdHJpbmdUb0NoYXJhY3RlckxpdGVyYWwvYWZ0ZXIxMS5qYXZhCkBAIC0wLDAgKzEsOCBAQAorLy8gIkNoYW5nZSAiXCciIHRvICdcJycgKHRvIGNoYXIgbGl0ZXJhbCkiICJ0cnVlIgorY2xhc3MgUXVvdGVzIHsKKyAgICB2b2lkIG0xKGNoYXIgY2gpIHt9CisKKyAgICB2b2lkIHRlc3QoKSB7CisgICAgICAgIG0xKDxjYXJldD4nXCcnKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3N0cmluZ1RvQ2hhcmFjdGVyTGl0ZXJhbC9hZnRlcjEyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3N0cmluZ1RvQ2hhcmFjdGVyTGl0ZXJhbC9hZnRlcjEyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTA2YTg0NwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvc3RyaW5nVG9DaGFyYWN0ZXJMaXRlcmFsL2FmdGVyMTIuamF2YQpAQCAtMCwwICsxLDggQEAKKy8vICJDaGFuZ2UgJyInIHRvICJcIiIgKHRvIFN0cmluZyBsaXRlcmFsKSIgInRydWUiCitjbGFzcyBRdW90ZXMgeworICAgIHZvaWQgbTEoU3RyaW5nIHMpIHt9CisKKyAgICB2b2lkIHRlc3QoKSB7CisgICAgICAgIG0xKDxjYXJldD4iXCIiKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3N0cmluZ1RvQ2hhcmFjdGVyTGl0ZXJhbC9hZnRlcjEzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3N0cmluZ1RvQ2hhcmFjdGVyTGl0ZXJhbC9hZnRlcjEzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTc4YzQ5NQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvc3RyaW5nVG9DaGFyYWN0ZXJMaXRlcmFsL2FmdGVyMTMuamF2YQpAQCAtMCwwICsxLDggQEAKKy8vICJDaGFuZ2UgIlxcIiB0byAnXFwnICh0byBjaGFyIGxpdGVyYWwpIiAidHJ1ZSIKK2NsYXNzIEEgeworICB2b2lkIG0oY2hhciB4KSB7fQorCisgIHsKKyAgICBtKDxjYXJldD4nXFwnKTsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9zdHJpbmdUb0NoYXJhY3RlckxpdGVyYWwvYWZ0ZXI0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3N0cmluZ1RvQ2hhcmFjdGVyTGl0ZXJhbC9hZnRlcjQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNjg3Zjg5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9zdHJpbmdUb0NoYXJhY3RlckxpdGVyYWwvYWZ0ZXI0LmphdmEKQEAgLTAsMCArMSwxNiBAQAorLy8gIkNoYW5nZSAiMSIgdG8gJzEnICh0byBjaGFyIGxpdGVyYWwpIiAidHJ1ZSIKK2NsYXNzIFNpbXBsZSBleHRlbmRzIEFuY2VzdG9yIHsKKyAgICBwdWJsaWMgdm9pZCBtKGludCBpKSB7CisKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCB0ZXN0KCkgeworICAgICAgICBtKDxjYXJldD4nMScpOworICAgIH0KK30KKworY2xhc3MgQW5jZXN0b3IgeworICAgIHB1YmxpYyB2b2lkIG0oY2hhciBjaCkgeworCisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9zdHJpbmdUb0NoYXJhY3RlckxpdGVyYWwvYWZ0ZXI1LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3N0cmluZ1RvQ2hhcmFjdGVyTGl0ZXJhbC9hZnRlcjUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NTJjMjU4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9zdHJpbmdUb0NoYXJhY3RlckxpdGVyYWwvYWZ0ZXI1LmphdmEKQEAgLTAsMCArMSwxMCBAQAorLy8gIkNoYW5nZSAiMSIgdG8gJzEnICh0byBjaGFyIGxpdGVyYWwpIiAidHJ1ZSIKK2NsYXNzIFNpbXBsZSB7CisgICAgU2ltcGxlKCkge30KKyAgICBTaW1wbGUoaW50IGkpIHt9CisgICAgU2ltcGxlKGNoYXIgY2gpIHt9CisKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgdGVzdCgpIHsKKyAgICAgICAgZmluYWwgU2ltcGxlIGluc3RhbmNlID0gbmV3IFNpbXBsZSg8Y2FyZXQ+JzEnKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3N0cmluZ1RvQ2hhcmFjdGVyTGl0ZXJhbC9hZnRlcjcuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvc3RyaW5nVG9DaGFyYWN0ZXJMaXRlcmFsL2FmdGVyNy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIxYTZjYTYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3N0cmluZ1RvQ2hhcmFjdGVyTGl0ZXJhbC9hZnRlcjcuamF2YQpAQCAtMCwwICsxLDUgQEAKKy8vICJDaGFuZ2UgJzEnIHRvICIxIiAodG8gU3RyaW5nIGxpdGVyYWwpIiAidHJ1ZSIKK2NsYXNzIFNpbXBsZSB7CisgICAgU2ltcGxlKCkge3RoaXMoPGNhcmV0PiIxIik7fQorICAgIFNpbXBsZShTdHJpbmcgcykge30KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvc3RyaW5nVG9DaGFyYWN0ZXJMaXRlcmFsL2FmdGVyOC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9zdHJpbmdUb0NoYXJhY3RlckxpdGVyYWwvYWZ0ZXI4LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjhkMmNmYgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvc3RyaW5nVG9DaGFyYWN0ZXJMaXRlcmFsL2FmdGVyOC5qYXZhCkBAIC0wLDAgKzEsOSBAQAorLy8gIkNoYW5nZSAiMSIgdG8gJzEnICh0byBjaGFyIGxpdGVyYWwpIiAidHJ1ZSIKK2NsYXNzIFNpbXBsZSB7CisgICAgU2ltcGxlKGludCBpKSB7fQorICAgIFNpbXBsZShjaGFyIGNoKSB7fQorfQorCitjbGFzcyBEZXNjZW5kYW50IGV4dGVuZHMgU2ltcGxlIHsKKyAgICBEZXNjZW5kYW50KCkge3N1cGVyKDxjYXJldD4nMScpO30KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvc3RyaW5nVG9DaGFyYWN0ZXJMaXRlcmFsL2FmdGVyOS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9zdHJpbmdUb0NoYXJhY3RlckxpdGVyYWwvYWZ0ZXI5LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGZiMTNiNQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvc3RyaW5nVG9DaGFyYWN0ZXJMaXRlcmFsL2FmdGVyOS5qYXZhCkBAIC0wLDAgKzEsOCBAQAorLy8gIkNoYW5nZSAiMSIgdG8gJzEnICh0byBjaGFyIGxpdGVyYWwpIiAidHJ1ZSIKK2NsYXNzIFNpbXBsZSB7CisgICAgcHVibGljIHZvaWQgbTEoZmluYWwgaW50IGksIGZpbmFsIGNoYXIgY2gpIHt9CisKKyAgICBwdWJsaWMgdm9pZCB0ZXN0KCkgeworICAgICAgICBtMSgiZG9lcyBub3QgbWF0dGVyIiwgPGNhcmV0PicxJyk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9zdHJpbmdUb0NoYXJhY3RlckxpdGVyYWwvYmVmb3JlMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9zdHJpbmdUb0NoYXJhY3RlckxpdGVyYWwvYmVmb3JlMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA4ZjJmMzIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3N0cmluZ1RvQ2hhcmFjdGVyTGl0ZXJhbC9iZWZvcmUxLmphdmEKQEAgLTAsMCArMSwxMCBAQAorLy8gIkNoYW5nZSAiMSIgdG8gJzEnICh0byBjaGFyIGxpdGVyYWwpIiAidHJ1ZSIKK2NsYXNzIFNpbXBsZSB7CisgICAgcHVibGljIHZvaWQgbShjaGFyIGNoKSB7CisKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCB0ZXN0KCkgeworICAgICAgICBtKDxjYXJldD4iMSIpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvc3RyaW5nVG9DaGFyYWN0ZXJMaXRlcmFsL2JlZm9yZTEwLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3N0cmluZ1RvQ2hhcmFjdGVyTGl0ZXJhbC9iZWZvcmUxMC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg5OGNlMjAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3N0cmluZ1RvQ2hhcmFjdGVyTGl0ZXJhbC9iZWZvcmUxMC5qYXZhCkBAIC0wLDAgKzEsOCBAQAorLy8gIkNoYW5nZSAiJyIgdG8gJ1wnJyAodG8gY2hhciBsaXRlcmFsKSIgInRydWUiCitjbGFzcyBRdW90ZXMgeworICAgIHZvaWQgbTEoY2hhciBjaCkge30KKworICAgIHZvaWQgdGVzdCgpIHsKKyAgICAgICAgbTEoPGNhcmV0PiInIik7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9zdHJpbmdUb0NoYXJhY3RlckxpdGVyYWwvYmVmb3JlMTEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvc3RyaW5nVG9DaGFyYWN0ZXJMaXRlcmFsL2JlZm9yZTExLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzNiOTIxZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvc3RyaW5nVG9DaGFyYWN0ZXJMaXRlcmFsL2JlZm9yZTExLmphdmEKQEAgLTAsMCArMSw4IEBACisvLyAiQ2hhbmdlICJcJyIgdG8gJ1wnJyAodG8gY2hhciBsaXRlcmFsKSIgInRydWUiCitjbGFzcyBRdW90ZXMgeworICAgIHZvaWQgbTEoY2hhciBjaCkge30KKworICAgIHZvaWQgdGVzdCgpIHsKKyAgICAgICAgbTEoPGNhcmV0PiJcJyIpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvc3RyaW5nVG9DaGFyYWN0ZXJMaXRlcmFsL2JlZm9yZTEyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3N0cmluZ1RvQ2hhcmFjdGVyTGl0ZXJhbC9iZWZvcmUxMi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUwMDhkZmIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3N0cmluZ1RvQ2hhcmFjdGVyTGl0ZXJhbC9iZWZvcmUxMi5qYXZhCkBAIC0wLDAgKzEsOCBAQAorLy8gIkNoYW5nZSAnIicgdG8gIlwiIiAodG8gU3RyaW5nIGxpdGVyYWwpIiAidHJ1ZSIKK2NsYXNzIFF1b3RlcyB7CisgICAgdm9pZCBtMShTdHJpbmcgcykge30KKworICAgIHZvaWQgdGVzdCgpIHsKKyAgICAgICAgbTEoPGNhcmV0PiciJyk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9zdHJpbmdUb0NoYXJhY3RlckxpdGVyYWwvYmVmb3JlMTMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvc3RyaW5nVG9DaGFyYWN0ZXJMaXRlcmFsL2JlZm9yZTEzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzU3MTZmYQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvc3RyaW5nVG9DaGFyYWN0ZXJMaXRlcmFsL2JlZm9yZTEzLmphdmEKQEAgLTAsMCArMSw4IEBACisvLyAiQ2hhbmdlICJcXCIgdG8gJ1xcJyAodG8gY2hhciBsaXRlcmFsKSIgInRydWUiCitjbGFzcyBBIHsKKyAgdm9pZCBtKGNoYXIgeCkge30KKworICB7CisgICAgbSg8Y2FyZXQ+IlxcIik7CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvc3RyaW5nVG9DaGFyYWN0ZXJMaXRlcmFsL2JlZm9yZTIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvc3RyaW5nVG9DaGFyYWN0ZXJMaXRlcmFsL2JlZm9yZTIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZDk5OWMyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9zdHJpbmdUb0NoYXJhY3RlckxpdGVyYWwvYmVmb3JlMi5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKKy8vICJDaGFuZ2UgIjEiIHRvICcxJyAodG8gY2hhciBsaXRlcmFsKSIgImZhbHNlIgorY2xhc3MgU2ltcGxlIHsKKyAgICBwdWJsaWMgdm9pZCBtKGludCBpLCBjaGFyIGNoKSB7CisKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCB0ZXN0KCkgeworICAgICAgICBtKDxjYXJldD4iMSIpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvc3RyaW5nVG9DaGFyYWN0ZXJMaXRlcmFsL2JlZm9yZTMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvc3RyaW5nVG9DaGFyYWN0ZXJMaXRlcmFsL2JlZm9yZTMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNGIxODM3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9zdHJpbmdUb0NoYXJhY3RlckxpdGVyYWwvYmVmb3JlMy5qYXZhCkBAIC0wLDAgKzEsMTQgQEAKKy8vICJDaGFuZ2UgIjEiIHRvICcxJyAodG8gY2hhciBsaXRlcmFsKSIgImZhbHNlIgorY2xhc3MgU2ltcGxlIHsKKyAgICBwdWJsaWMgdm9pZCBtKGNoYXIgY2gpIHsKKworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIG0oU3RyaW5nIHMpIHsKKworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHRlc3QoKSB7CisgICAgICAgIG0oPGNhcmV0PiIxIik7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9zdHJpbmdUb0NoYXJhY3RlckxpdGVyYWwvYmVmb3JlNC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9zdHJpbmdUb0NoYXJhY3RlckxpdGVyYWwvYmVmb3JlNC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZhMTMzODkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3N0cmluZ1RvQ2hhcmFjdGVyTGl0ZXJhbC9iZWZvcmU0LmphdmEKQEAgLTAsMCArMSwxNiBAQAorLy8gIkNoYW5nZSAiMSIgdG8gJzEnICh0byBjaGFyIGxpdGVyYWwpIiAidHJ1ZSIKK2NsYXNzIFNpbXBsZSBleHRlbmRzIEFuY2VzdG9yIHsKKyAgICBwdWJsaWMgdm9pZCBtKGludCBpKSB7CisKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCB0ZXN0KCkgeworICAgICAgICBtKDxjYXJldD4iMSIpOworICAgIH0KK30KKworY2xhc3MgQW5jZXN0b3IgeworICAgIHB1YmxpYyB2b2lkIG0oY2hhciBjaCkgeworCisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9zdHJpbmdUb0NoYXJhY3RlckxpdGVyYWwvYmVmb3JlNS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9zdHJpbmdUb0NoYXJhY3RlckxpdGVyYWwvYmVmb3JlNS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVmOWJkZjcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3N0cmluZ1RvQ2hhcmFjdGVyTGl0ZXJhbC9iZWZvcmU1LmphdmEKQEAgLTAsMCArMSwxMCBAQAorLy8gIkNoYW5nZSAiMSIgdG8gJzEnICh0byBjaGFyIGxpdGVyYWwpIiAidHJ1ZSIKK2NsYXNzIFNpbXBsZSB7CisgICAgU2ltcGxlKCkge30KKyAgICBTaW1wbGUoaW50IGkpIHt9CisgICAgU2ltcGxlKGNoYXIgY2gpIHt9CisKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgdGVzdCgpIHsKKyAgICAgICAgZmluYWwgU2ltcGxlIGluc3RhbmNlID0gbmV3IFNpbXBsZSg8Y2FyZXQ+IjEiKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3N0cmluZ1RvQ2hhcmFjdGVyTGl0ZXJhbC9iZWZvcmU2LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3N0cmluZ1RvQ2hhcmFjdGVyTGl0ZXJhbC9iZWZvcmU2LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzNiMTQ2MQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvc3RyaW5nVG9DaGFyYWN0ZXJMaXRlcmFsL2JlZm9yZTYuamF2YQpAQCAtMCwwICsxLDExIEBACisvLyAiQ2hhbmdlICIxIiB0byAnMScgKHRvIGNoYXIgbGl0ZXJhbCkiICJmYWxzZSIKK2NsYXNzIFNpbXBsZSB7CisgICAgU2ltcGxlKCkge30KKyAgICBTaW1wbGUoaW50IGkpIHt9CisgICAgU2ltcGxlKGNoYXIgY2gpIHt9CisgICAgU2ltcGxlKFN0cmluZyBzKSB7fQorCisgICAgcHVibGljIHN0YXRpYyB2b2lkIHRlc3QoKSB7CisgICAgICAgIGZpbmFsIFNpbXBsZSBpbnN0YW5jZSA9IG5ldyBTaW1wbGUoPGNhcmV0PiIxIiwgKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3N0cmluZ1RvQ2hhcmFjdGVyTGl0ZXJhbC9iZWZvcmU3LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3N0cmluZ1RvQ2hhcmFjdGVyTGl0ZXJhbC9iZWZvcmU3LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjU1MjJkNAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvc3RyaW5nVG9DaGFyYWN0ZXJMaXRlcmFsL2JlZm9yZTcuamF2YQpAQCAtMCwwICsxLDUgQEAKKy8vICJDaGFuZ2UgJzEnIHRvICIxIiAodG8gU3RyaW5nIGxpdGVyYWwpIiAidHJ1ZSIKK2NsYXNzIFNpbXBsZSB7CisgICAgU2ltcGxlKCkge3RoaXMoPGNhcmV0PicxJyk7fQorICAgIFNpbXBsZShTdHJpbmcgcykge30KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvc3RyaW5nVG9DaGFyYWN0ZXJMaXRlcmFsL2JlZm9yZTguamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvc3RyaW5nVG9DaGFyYWN0ZXJMaXRlcmFsL2JlZm9yZTguamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MDA0MTJhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9zdHJpbmdUb0NoYXJhY3RlckxpdGVyYWwvYmVmb3JlOC5qYXZhCkBAIC0wLDAgKzEsOSBAQAorLy8gIkNoYW5nZSAiMSIgdG8gJzEnICh0byBjaGFyIGxpdGVyYWwpIiAidHJ1ZSIKK2NsYXNzIFNpbXBsZSB7CisgICAgU2ltcGxlKGludCBpKSB7fQorICAgIFNpbXBsZShjaGFyIGNoKSB7fQorfQorCitjbGFzcyBEZXNjZW5kYW50IGV4dGVuZHMgU2ltcGxlIHsKKyAgICBEZXNjZW5kYW50KCkge3N1cGVyKDxjYXJldD4iMSIpO30KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvc3RyaW5nVG9DaGFyYWN0ZXJMaXRlcmFsL2JlZm9yZTkuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvc3RyaW5nVG9DaGFyYWN0ZXJMaXRlcmFsL2JlZm9yZTkuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNDJhM2RiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9zdHJpbmdUb0NoYXJhY3RlckxpdGVyYWwvYmVmb3JlOS5qYXZhCkBAIC0wLDAgKzEsOCBAQAorLy8gIkNoYW5nZSAiMSIgdG8gJzEnICh0byBjaGFyIGxpdGVyYWwpIiAidHJ1ZSIKK2NsYXNzIFNpbXBsZSB7CisgICAgcHVibGljIHZvaWQgbTEoZmluYWwgaW50IGksIGZpbmFsIGNoYXIgY2gpIHt9CisKKyAgICBwdWJsaWMgdm9pZCB0ZXN0KCkgeworICAgICAgICBtMSgiZG9lcyBub3QgbWF0dGVyIiwgPGNhcmV0PiIxIik7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9zdXBlck1ldGhvZFJldHVybi9hZnRlcjEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvc3VwZXJNZXRob2RSZXR1cm4vYWZ0ZXIxLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjM0YjI5ZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvc3VwZXJNZXRob2RSZXR1cm4vYWZ0ZXIxLmphdmEKQEAgLTAsMCArMSwxMiBAQAorLy8gIk1ha2UgJ2YnIHJldHVybiAndm9pZCciICJ0cnVlIgorY2xhc3MgYSB7Cisgdm9pZCBmKCkgeworICAgcmV0dXJuIDsKKyB9Cit9CisKK2NsYXNzIGIgZXh0ZW5kcyBhIHsKKyAgPGNhcmV0PnZvaWQgZigpIHsKKyAgICByZXR1cm4gMDsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvc3VwZXJNZXRob2RSZXR1cm4vYWZ0ZXIyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3N1cGVyTWV0aG9kUmV0dXJuL2FmdGVyMi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZiZjY0N2EKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3N1cGVyTWV0aG9kUmV0dXJuL2FmdGVyMi5qYXZhCkBAIC0wLDAgKzEsMTIgQEAKKy8vICJNYWtlICdhLmYnIHJldHVybiAnaW50JyIgInRydWUiCitjbGFzcyBhIHsKKyBpbnQgZigpIHsKKyAgIHJldHVybiA7CisgfQorfQorCitjbGFzcyBiIGV4dGVuZHMgYSB7CisgIDxjYXJldD5pbnQgZigpIHsKKyAgICByZXR1cm4gMDsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvc3VwZXJNZXRob2RSZXR1cm4vYmVmb3JlMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9zdXBlck1ldGhvZFJldHVybi9iZWZvcmUxLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTMxZWVkYgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvc3VwZXJNZXRob2RSZXR1cm4vYmVmb3JlMS5qYXZhCkBAIC0wLDAgKzEsMTIgQEAKKy8vICJNYWtlICdmJyByZXR1cm4gJ3ZvaWQnIiAidHJ1ZSIKK2NsYXNzIGEgeworIHZvaWQgZigpIHsKKyAgIHJldHVybiA7CisgfQorfQorCitjbGFzcyBiIGV4dGVuZHMgYSB7CisgIDxjYXJldD5pbnQgZigpIHsKKyAgICByZXR1cm4gMDsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvc3VwZXJNZXRob2RSZXR1cm4vYmVmb3JlMi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9zdXBlck1ldGhvZFJldHVybi9iZWZvcmUyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTJmNjUzZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvc3VwZXJNZXRob2RSZXR1cm4vYmVmb3JlMi5qYXZhCkBAIC0wLDAgKzEsMTIgQEAKKy8vICJNYWtlICdhLmYnIHJldHVybiAnaW50JyIgInRydWUiCitjbGFzcyBhIHsKKyB2b2lkIGYoKSB7CisgICByZXR1cm4gOworIH0KK30KKworY2xhc3MgYiBleHRlbmRzIGEgeworICA8Y2FyZXQ+aW50IGYoKSB7CisgICAgcmV0dXJuIDA7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3N1cGVyTWV0aG9kUmV0dXJuL2JlZm9yZTMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvc3VwZXJNZXRob2RSZXR1cm4vYmVmb3JlMy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZhZDQ2MWEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3N1cGVyTWV0aG9kUmV0dXJuL2JlZm9yZTMuamF2YQpAQCAtMCwwICsxLDEyIEBACisvLyAiTWFrZSAnYS5mJyByZXR1cm4gJ2ludCciICJmYWxzZSIKK2NsYXNzIGEgeworIHByaXZhdGUgdm9pZCBmKCkgeworICAgcmV0dXJuIDsKKyB9Cit9CisKK2NsYXNzIGIgZXh0ZW5kcyBhIHsKKyAgPGNhcmV0PmludCBmKCkgeworICAgIHJldHVybiAwOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9zdXBlck1ldGhvZFJldHVybi9iZWZvcmU0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3N1cGVyTWV0aG9kUmV0dXJuL2JlZm9yZTQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNWQ1ZjZkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9zdXBlck1ldGhvZFJldHVybi9iZWZvcmU0LmphdmEKQEAgLTAsMCArMSwxMiBAQAorLy8gIk1ha2UgJ2YnIHJldHVybiAndm9pZCciICJmYWxzZSIKK2NsYXNzIGEgeworIHByaXZhdGUgdm9pZCBmKCkgeworICAgcmV0dXJuIDsKKyB9Cit9CisKK2NsYXNzIGIgZXh0ZW5kcyBhIHsKKyAgPGNhcmV0PmludCBmKCkgeworICAgIHJldHVybiAwOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9zdXBlck1ldGhvZFJldHVybi9iZWZvcmU1LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3N1cGVyTWV0aG9kUmV0dXJuL2JlZm9yZTUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jM2U2MDY0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9zdXBlck1ldGhvZFJldHVybi9iZWZvcmU1LmphdmEKQEAgLTAsMCArMSwxMiBAQAorLy8gIk1ha2UgJ2YnIHJldHVybiAndm9pZCciICJmYWxzZSIKK2NsYXNzIGEgeworIHZvaWQgZihpbnQgaSkgeworICAgcmV0dXJuIDsKKyB9Cit9CisKK2NsYXNzIGIgZXh0ZW5kcyBhIHsKKyAgPGNhcmV0PmludCBmKCkgeworICAgIHJldHVybiAwOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9zdXBwcmVzczE1SW5zcGVjdGlvbnMvYWZ0ZXIxLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3N1cHByZXNzMTVJbnNwZWN0aW9ucy9hZnRlcjEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xOWMyMTA5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9zdXBwcmVzczE1SW5zcGVjdGlvbnMvYWZ0ZXIxLmphdmEKQEAgLTAsMCArMSw2IEBACisvLyAiU3VwcHJlc3MgYWxsIGluc3BlY3Rpb25zIGZvciBjbGFzcyIgInRydWUiCitAU3VwcHJlc3NXYXJuaW5ncygiQUxMIikKK3B1YmxpYyBjbGFzcyBUZXN0IHsKKyAgcHVibGljIHZvaWQgcnVuKGludCA8Y2FyZXQ+aSkgeworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9zdXBwcmVzczE1SW5zcGVjdGlvbnMvYWZ0ZXIyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3N1cHByZXNzMTVJbnNwZWN0aW9ucy9hZnRlcjIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMmExODUwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9zdXBwcmVzczE1SW5zcGVjdGlvbnMvYWZ0ZXIyLmphdmEKQEAgLTAsMCArMSw2IEBACisvLyAiU3VwcHJlc3MgZm9yIHN0YXRlbWVudCIgInRydWUiCitwdWJsaWMgY2xhc3MgVGVzdCB7CisgIHB1YmxpYyB2b2lkIHJ1bigpIHsKKyAgICBAU3VwcHJlc3NXYXJuaW5ncygiVW51c2VkRGVjbGFyYXRpb24iKSBpbnQgPGNhcmV0Pmk7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3N1cHByZXNzMTVJbnNwZWN0aW9ucy9hZnRlcjMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvc3VwcHJlc3MxNUluc3BlY3Rpb25zL2FmdGVyMy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEyN2Q1N2QKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3N1cHByZXNzMTVJbnNwZWN0aW9ucy9hZnRlcjMuamF2YQpAQCAtMCwwICsxLDcgQEAKKy8vICJTdXBwcmVzcyBmb3Igc3RhdGVtZW50IiAidHJ1ZSIKK3B1YmxpYyBjbGFzcyBUZXN0IHsKKyAgcHVibGljIHZvaWQgcnVuKCkgeworICAgICAgLy9ub2luc3BlY3Rpb24gaWQsVW51c2VkRGVjbGFyYXRpb24KKyAgICBpbnQgPGNhcmV0Pmk7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3N1cHByZXNzMTVJbnNwZWN0aW9ucy9hZnRlclN1cHByZXNzVW51c2VkUGFyYW1ldGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3N1cHByZXNzMTVJbnNwZWN0aW9ucy9hZnRlclN1cHByZXNzVW51c2VkUGFyYW1ldGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjdlYzQ5ZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvc3VwcHJlc3MxNUluc3BlY3Rpb25zL2FmdGVyU3VwcHJlc3NVbnVzZWRQYXJhbWV0ZXIuamF2YQpAQCAtMCwwICsxLDkgQEAKKy8vICJTdXBwcmVzcyBmb3IgcGFyYW1ldGVyIiAidHJ1ZSIKK3B1YmxpYyBjbGFzcyBUZXN0IHsKKyAgcHJpdmF0ZSB2b2lkIHJ1bihAU3VwcHJlc3NXYXJuaW5ncygiVW51c2VkUGFyYW1ldGVycyIpIFN0cmluZyBzPGNhcmV0PnNzKSB7CisgIH0KKworICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CisgICAgbmV3IFRlc3QoKS5ydW4obnVsbCk7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3N1cHByZXNzMTVJbnNwZWN0aW9ucy9iZWZvcmUxLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3N1cHByZXNzMTVJbnNwZWN0aW9ucy9iZWZvcmUxLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWE1YTI0NAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvc3VwcHJlc3MxNUluc3BlY3Rpb25zL2JlZm9yZTEuamF2YQpAQCAtMCwwICsxLDYgQEAKKy8vICJTdXBwcmVzcyBhbGwgaW5zcGVjdGlvbnMgZm9yIGNsYXNzIiAidHJ1ZSIKK0BqYXZhLmxhbmcuU3VwcHJlc3NXYXJuaW5ncyh7InR0In0pCitwdWJsaWMgY2xhc3MgVGVzdCB7CisgIHB1YmxpYyB2b2lkIHJ1bihpbnQgPGNhcmV0PmkpIHsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvc3VwcHJlc3MxNUluc3BlY3Rpb25zL2JlZm9yZTIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvc3VwcHJlc3MxNUluc3BlY3Rpb25zL2JlZm9yZTIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMDkzNzg1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9zdXBwcmVzczE1SW5zcGVjdGlvbnMvYmVmb3JlMi5qYXZhCkBAIC0wLDAgKzEsNiBAQAorLy8gIlN1cHByZXNzIGZvciBzdGF0ZW1lbnQiICJ0cnVlIgorcHVibGljIGNsYXNzIFRlc3QgeworICBwdWJsaWMgdm9pZCBydW4oKSB7CisgICAgaW50IDxjYXJldD5pOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9zdXBwcmVzczE1SW5zcGVjdGlvbnMvYmVmb3JlMy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9zdXBwcmVzczE1SW5zcGVjdGlvbnMvYmVmb3JlMy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk3NzIwMGQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3N1cHByZXNzMTVJbnNwZWN0aW9ucy9iZWZvcmUzLmphdmEKQEAgLTAsMCArMSw3IEBACisvLyAiU3VwcHJlc3MgZm9yIHN0YXRlbWVudCIgInRydWUiCitwdWJsaWMgY2xhc3MgVGVzdCB7CisgIHB1YmxpYyB2b2lkIHJ1bigpIHsKKyAgICAvL25vaW5zcGVjdGlvbiBpZAorICAgIGludCA8Y2FyZXQ+aTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvc3VwcHJlc3MxNUluc3BlY3Rpb25zL2JlZm9yZVN1cHByZXNzVW51c2VkUGFyYW1ldGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3N1cHByZXNzMTVJbnNwZWN0aW9ucy9iZWZvcmVTdXBwcmVzc1VudXNlZFBhcmFtZXRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMxNzM5ZmYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3N1cHByZXNzMTVJbnNwZWN0aW9ucy9iZWZvcmVTdXBwcmVzc1VudXNlZFBhcmFtZXRlci5qYXZhCkBAIC0wLDAgKzEsOSBAQAorLy8gIlN1cHByZXNzIGZvciBwYXJhbWV0ZXIiICJ0cnVlIgorcHVibGljIGNsYXNzIFRlc3QgeworICBwcml2YXRlIHZvaWQgcnVuKFN0cmluZyBzPGNhcmV0PnNzKSB7CisgIH0KKworICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CisgICAgbmV3IFRlc3QoKS5ydW4obnVsbCk7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3N1cHByZXNzTG9jYWxJbnNwZWN0aW9uL2FmdGVyMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9zdXBwcmVzc0xvY2FsSW5zcGVjdGlvbi9hZnRlcjEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ODVlNTkzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9zdXBwcmVzc0xvY2FsSW5zcGVjdGlvbi9hZnRlcjEuamF2YQpAQCAtMCwwICsxLDYgQEAKKy8vICJTdXBwcmVzcyBmb3IgbWV0aG9kIiAidHJ1ZSIKK2NsYXNzIGEgeworLyoqIEBub2luc3BlY3Rpb24gTG9jYWxDYW5CZUZpbmFsKi8KK3B1YmxpYyB2b2lkIHJ1bihpbnQgPGNhcmV0PmkpIHsKK30KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3N1cHByZXNzTG9jYWxJbnNwZWN0aW9uL2FmdGVyMTAuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvc3VwcHJlc3NMb2NhbEluc3BlY3Rpb24vYWZ0ZXIxMC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMwZGViOGMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3N1cHByZXNzTG9jYWxJbnNwZWN0aW9uL2FmdGVyMTAuamF2YQpAQCAtMCwwICsxLDE1IEBACisvLyAiU3VwcHJlc3MgZm9yIG1ldGhvZCIgInRydWUiCitpbXBvcnQgamF2YS5hd3QuZXZlbnQuQWN0aW9uTGlzdGVuZXI7CitpbXBvcnQgamF2YS5hd3QuZXZlbnQuQWN0aW9uRXZlbnQ7CisKK2NsYXNzIFRlc3QgeworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKKyAgICAgICAgQWN0aW9uTGlzdGVuZXIgbGlzdGVuZXIgPSBuZXcgQWN0aW9uTGlzdGVuZXIoKSB7CisgICAgICAgICAgICAvKiogQG5vaW5zcGVjdGlvbiBMb2NhbENhbkJlRmluYWwqLworICAgICAgICAgICAgcHVibGljIHZvaWQgYWN0aW9uUGVyZm9ybWVkKEFjdGlvbkV2ZW50IGUpIHsKKyAgICAgICAgICAgICAgICBpbnQgaSA9IDA7CisgICAgICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKGkpOworICAgICAgICAgICAgfQorICAgICAgICB9OworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3N1cHByZXNzTG9jYWxJbnNwZWN0aW9uL2FmdGVyMTEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvc3VwcHJlc3NMb2NhbEluc3BlY3Rpb24vYWZ0ZXIxMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdjZjkxNjUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3N1cHByZXNzTG9jYWxJbnNwZWN0aW9uL2FmdGVyMTEuamF2YQpAQCAtMCwwICsxLDE1IEBACisvLyAiU3VwcHJlc3MgZm9yIGNsYXNzIiAidHJ1ZSIKK2ltcG9ydCBqYXZhLmF3dC5ldmVudC5BY3Rpb25MaXN0ZW5lcjsKK2ltcG9ydCBqYXZhLmF3dC5ldmVudC5BY3Rpb25FdmVudDsKKworLyoqIEBub2luc3BlY3Rpb24gTG9jYWxDYW5CZUZpbmFsKi8KK2NsYXNzIFRlc3QgeworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKKyAgICAgICAgQWN0aW9uTGlzdGVuZXIgbGlzdGVuZXIgPSBuZXcgQWN0aW9uTGlzdGVuZXIoKSB7CisgICAgICAgICAgICBwdWJsaWMgdm9pZCBhY3Rpb25QZXJmb3JtZWQoQWN0aW9uRXZlbnQgZSkgeworICAgICAgICAgICAgICAgIGludCBpID0gMDsKKyAgICAgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oaSk7CisgICAgICAgICAgICB9CisgICAgICAgIH07CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvc3VwcHJlc3NMb2NhbEluc3BlY3Rpb24vYWZ0ZXIyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3N1cHByZXNzTG9jYWxJbnNwZWN0aW9uL2FmdGVyMi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVjYmVmOWUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3N1cHByZXNzTG9jYWxJbnNwZWN0aW9uL2FmdGVyMi5qYXZhCkBAIC0wLDAgKzEsOCBAQAorLy8gIlN1cHByZXNzIGZvciBzdGF0ZW1lbnQiICJ0cnVlIgorY2xhc3MgYSB7CitwdWJsaWMgdm9pZCBydW4oKSB7CisvL25vaW5zcGVjdGlvbiBMb2NhbENhbkJlRmluYWwKKyAgICBpbnQgPGNhcmV0PmkgPSAwOworU3lzdGVtLm91dC5wcmludGxuKGkpOworfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvc3VwcHJlc3NMb2NhbEluc3BlY3Rpb24vYWZ0ZXI4LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3N1cHByZXNzTG9jYWxJbnNwZWN0aW9uL2FmdGVyOC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRhNGE2YzEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3N1cHByZXNzTG9jYWxJbnNwZWN0aW9uL2FmdGVyOC5qYXZhCkBAIC0wLDAgKzEsMTUgQEAKKy8vICJTdXBwcmVzcyBmb3IgY2xhc3MiICJ0cnVlIgoraW1wb3J0IGphdmEuYXd0LmV2ZW50LkFjdGlvbkxpc3RlbmVyOworaW1wb3J0IGphdmEuYXd0LmV2ZW50LkFjdGlvbkV2ZW50OworCisvKiogQG5vaW5zcGVjdGlvbiBMb2NhbENhbkJlRmluYWwqLworY2xhc3MgVGVzdCB7CisgICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgeworICAgICAgICBBY3Rpb25MaXN0ZW5lciBsaXN0ZW5lciA9IG5ldyBBY3Rpb25MaXN0ZW5lcigpIHsKKyAgICAgICAgICAgIHB1YmxpYyB2b2lkIGFjdGlvblBlcmZvcm1lZChBY3Rpb25FdmVudCBlKSB7CisgICAgICAgICAgICAgICAgaW50IDxjYXJldD5pID0gMDsKKyAgICAgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oaSk7CisgICAgICAgICAgICB9CisgICAgICAgIH07CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvc3VwcHJlc3NMb2NhbEluc3BlY3Rpb24vYWZ0ZXI5LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3N1cHByZXNzTG9jYWxJbnNwZWN0aW9uL2FmdGVyOS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkxYjVkZWEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3N1cHByZXNzTG9jYWxJbnNwZWN0aW9uL2FmdGVyOS5qYXZhCkBAIC0wLDAgKzEsMTUgQEAKKy8vICJTdXBwcmVzcyBmb3IgY2xhc3MiICJ0cnVlIgoraW1wb3J0IGphdmEuYXd0LmV2ZW50LkFjdGlvbkxpc3RlbmVyOworaW1wb3J0IGphdmEuYXd0LmV2ZW50LkFjdGlvbkV2ZW50OworY2xhc3MgVGVzdCB7CisgICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgeworCisgICAgICAgIC8qKiBAbm9pbnNwZWN0aW9uIExvY2FsQ2FuQmVGaW5hbCovCisgICAgICAgIGNsYXNzIFQgeworICAgICAgICAgIHZvaWQgZm9vKCkgeworICAgICAgICAgICAgaW50IGkgPSAwOworICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKGkpOworICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3N1cHByZXNzTG9jYWxJbnNwZWN0aW9uL2JlZm9yZTEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvc3VwcHJlc3NMb2NhbEluc3BlY3Rpb24vYmVmb3JlMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlhNDhmNjgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3N1cHByZXNzTG9jYWxJbnNwZWN0aW9uL2JlZm9yZTEuamF2YQpAQCAtMCwwICsxLDUgQEAKKy8vICJTdXBwcmVzcyBmb3IgbWV0aG9kIiAidHJ1ZSIKK2NsYXNzIGEgeworcHVibGljIHZvaWQgcnVuKGludCA8Y2FyZXQ+aSkgeworfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvc3VwcHJlc3NMb2NhbEluc3BlY3Rpb24vYmVmb3JlMTAuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvc3VwcHJlc3NMb2NhbEluc3BlY3Rpb24vYmVmb3JlMTAuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNDkyN2U2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9zdXBwcmVzc0xvY2FsSW5zcGVjdGlvbi9iZWZvcmUxMC5qYXZhCkBAIC0wLDAgKzEsMTQgQEAKKy8vICJTdXBwcmVzcyBmb3IgbWV0aG9kIiAidHJ1ZSIKK2ltcG9ydCBqYXZhLmF3dC5ldmVudC5BY3Rpb25MaXN0ZW5lcjsKK2ltcG9ydCBqYXZhLmF3dC5ldmVudC5BY3Rpb25FdmVudDsKKworY2xhc3MgVGVzdCB7CisgICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgeworICAgICAgICBBY3Rpb25MaXN0ZW5lciBsaXN0ZW5lciA9IG5ldyBBY3Rpb25MaXN0ZW5lcigpIHsKKyAgICAgICAgICAgIHB1YmxpYyB2b2lkIGFjdGlvblBlcmZvcm1lZChBY3Rpb25FdmVudCBlKSB7CisgICAgICAgICAgICAgICAgaW50IDxjYXJldD5pID0gMDsKKyAgICAgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oaSk7CisgICAgICAgICAgICB9CisgICAgICAgIH07CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvc3VwcHJlc3NMb2NhbEluc3BlY3Rpb24vYmVmb3JlMTEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvc3VwcHJlc3NMb2NhbEluc3BlY3Rpb24vYmVmb3JlMTEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MjBjOWQ4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9zdXBwcmVzc0xvY2FsSW5zcGVjdGlvbi9iZWZvcmUxMS5qYXZhCkBAIC0wLDAgKzEsMTQgQEAKKy8vICJTdXBwcmVzcyBmb3IgY2xhc3MiICJ0cnVlIgoraW1wb3J0IGphdmEuYXd0LmV2ZW50LkFjdGlvbkxpc3RlbmVyOworaW1wb3J0IGphdmEuYXd0LmV2ZW50LkFjdGlvbkV2ZW50OworCitjbGFzcyBUZXN0IHsKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CisgICAgICAgIEFjdGlvbkxpc3RlbmVyIGxpc3RlbmVyID0gbmV3IEFjdGlvbkxpc3RlbmVyKCkgeworICAgICAgICAgICAgcHVibGljIHZvaWQgYWN0aW9uUGVyZm9ybWVkKEFjdGlvbkV2ZW50IGUpIHsKKyAgICAgICAgICAgICAgICBpbnQgPGNhcmV0PmkgPSAwOworICAgICAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9zdXBwcmVzc0xvY2FsSW5zcGVjdGlvbi9iZWZvcmUxMi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9zdXBwcmVzc0xvY2FsSW5zcGVjdGlvbi9iZWZvcmUxMi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjljYTM0NjIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3N1cHByZXNzTG9jYWxJbnNwZWN0aW9uL2JlZm9yZTEyLmphdmEKQEAgLTAsMCArMSwxNiBAQAorLy8gIlN1cHByZXNzIGZvciBjbGFzcyIgImZhbHNlIgorCitpbXBvcnQgamF2YS5hd3QuZXZlbnQuQWN0aW9uRXZlbnQ7CitpbXBvcnQgamF2YS5hd3QuZXZlbnQuQWN0aW9uTGlzdGVuZXI7CisKK2NsYXNzIFRlc3QgeworICAgIEBqYXZheC5hbm5vdGF0aW9uLkdlbmVyYXRlZCh2YWx1ZSA9ICJ1bmtub3duIikKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CisgICAgICAgIEFjdGlvbkxpc3RlbmVyIGxpc3RlbmVyID0gbmV3IEFjdGlvbkxpc3RlbmVyKCkgeworICAgICAgICAgICAgcHVibGljIHZvaWQgYWN0aW9uUGVyZm9ybWVkKEFjdGlvbkV2ZW50IGUpIHsKKyAgICAgICAgICAgICAgICBpbnQgPGNhcmV0PmkgPSAwOworICAgICAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9zdXBwcmVzc0xvY2FsSW5zcGVjdGlvbi9iZWZvcmUyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3N1cHByZXNzTG9jYWxJbnNwZWN0aW9uL2JlZm9yZTIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMjY2ZGJlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9zdXBwcmVzc0xvY2FsSW5zcGVjdGlvbi9iZWZvcmUyLmphdmEKQEAgLTAsMCArMSw3IEBACisvLyAiU3VwcHJlc3MgZm9yIHN0YXRlbWVudCIgInRydWUiCitjbGFzcyBhIHsKK3B1YmxpYyB2b2lkIHJ1bigpIHsKK2ludCA8Y2FyZXQ+aSA9IDA7CitTeXN0ZW0ub3V0LnByaW50bG4oaSk7Cit9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9zdXBwcmVzc0xvY2FsSW5zcGVjdGlvbi9iZWZvcmUzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3N1cHByZXNzTG9jYWxJbnNwZWN0aW9uL2JlZm9yZTMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZjc1YjkwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9zdXBwcmVzc0xvY2FsSW5zcGVjdGlvbi9iZWZvcmUzLmphdmEKQEAgLTAsMCArMSw4IEBACisvLyAiU3VwcHJlc3MgZm9yIHN0YXRlbWVudCIgImZhbHNlIgorY2xhc3MgYSB7CitwdWJsaWMgdm9pZCBydW4oKSB7CisgICAgICAgIC8vICAgIG5vaW5zcGVjdGlvbiAgICAgTG9jYWxDYW5CZUZpbmFsCisgICAgaW50IDxjYXJldD5pID0gMDsKKyAgICBTeXN0ZW0ub3V0LnByaW50bG4oaSk7Cit9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9zdXBwcmVzc0xvY2FsSW5zcGVjdGlvbi9iZWZvcmU0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3N1cHByZXNzTG9jYWxJbnNwZWN0aW9uL2JlZm9yZTQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYzg3ZWQ5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9zdXBwcmVzc0xvY2FsSW5zcGVjdGlvbi9iZWZvcmU0LmphdmEKQEAgLTAsMCArMSw4IEBACisvLyAiU3VwcHJlc3MgZm9yIG1ldGhvZCIgImZhbHNlIgorLyoqIEBub2luc3BlY3Rpb24gTG9jYWxDYW5CZUZpbmFsKi8KK2NsYXNzIGEgeworcHVibGljIHZvaWQgcnVuKCkgeworaW50IDxjYXJldD5pID0gMDsKK1N5c3RlbS5vdXQucHJpbnRsbihpKTsKK30KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3N1cHByZXNzTG9jYWxJbnNwZWN0aW9uL2JlZm9yZTYuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvc3VwcHJlc3NMb2NhbEluc3BlY3Rpb24vYmVmb3JlNi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM2ZmQ2MWEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3N1cHByZXNzTG9jYWxJbnNwZWN0aW9uL2JlZm9yZTYuamF2YQpAQCAtMCwwICsxLDUgQEAKKy8vICJTdXBwcmVzcyBmb3IgZmllbGQiICJmYWxzZSIKKy8qKiBAbm9pbnNwZWN0aW9uIEFMTCovCitjbGFzcyBhIHsKKyBzdGF0aWMgcHJpdmF0ZSAgU3RyaW5nIG1tID0gIjAwIjsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3N1cHByZXNzTG9jYWxJbnNwZWN0aW9uL2JlZm9yZTcuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvc3VwcHJlc3NMb2NhbEluc3BlY3Rpb24vYmVmb3JlNy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNmMDU0MzEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3N1cHByZXNzTG9jYWxJbnNwZWN0aW9uL2JlZm9yZTcuamF2YQpAQCAtMCwwICsxLDcgQEAKKy8vICJTdXBwcmVzcyBmb3IgbWV0aG9kIiAiZmFsc2UiCisvKiogQG5vaW5zcGVjdGlvbiBBTEwqLworY2xhc3MgYSB7CitwdWJsaWMgdm9pZCBydW4oKSB7CitpbnQgPGNhcmV0PmkgPSAwOworfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvc3VwcHJlc3NMb2NhbEluc3BlY3Rpb24vYmVmb3JlOC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9zdXBwcmVzc0xvY2FsSW5zcGVjdGlvbi9iZWZvcmU4LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTIwYzlkOAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvc3VwcHJlc3NMb2NhbEluc3BlY3Rpb24vYmVmb3JlOC5qYXZhCkBAIC0wLDAgKzEsMTQgQEAKKy8vICJTdXBwcmVzcyBmb3IgY2xhc3MiICJ0cnVlIgoraW1wb3J0IGphdmEuYXd0LmV2ZW50LkFjdGlvbkxpc3RlbmVyOworaW1wb3J0IGphdmEuYXd0LmV2ZW50LkFjdGlvbkV2ZW50OworCitjbGFzcyBUZXN0IHsKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CisgICAgICAgIEFjdGlvbkxpc3RlbmVyIGxpc3RlbmVyID0gbmV3IEFjdGlvbkxpc3RlbmVyKCkgeworICAgICAgICAgICAgcHVibGljIHZvaWQgYWN0aW9uUGVyZm9ybWVkKEFjdGlvbkV2ZW50IGUpIHsKKyAgICAgICAgICAgICAgICBpbnQgPGNhcmV0PmkgPSAwOworICAgICAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9zdXBwcmVzc0xvY2FsSW5zcGVjdGlvbi9iZWZvcmU5LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3N1cHByZXNzTG9jYWxJbnNwZWN0aW9uL2JlZm9yZTkuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZmRiYWIwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9zdXBwcmVzc0xvY2FsSW5zcGVjdGlvbi9iZWZvcmU5LmphdmEKQEAgLTAsMCArMSwxNCBAQAorLy8gIlN1cHByZXNzIGZvciBjbGFzcyIgInRydWUiCitpbXBvcnQgamF2YS5hd3QuZXZlbnQuQWN0aW9uTGlzdGVuZXI7CitpbXBvcnQgamF2YS5hd3QuZXZlbnQuQWN0aW9uRXZlbnQ7CitjbGFzcyBUZXN0IHsKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CisKKyAgICAgICAgY2xhc3MgVCB7CisgICAgICAgICAgdm9pZCBmb28oKSB7CisgICAgICAgICAgICBpbnQgPGNhcmV0PmkgPSAwOworICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKGkpOworICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3N1cHByZXNzTm9uSW5zcGVjdGlvbnMvYWZ0ZXIxLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3N1cHByZXNzTm9uSW5zcGVjdGlvbnMvYWZ0ZXIxLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2I4M2E4YwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvc3VwcHJlc3NOb25JbnNwZWN0aW9ucy9hZnRlcjEuamF2YQpAQCAtMCwwICsxLDcgQEAKKy8vICJTdXBwcmVzcyBmb3Igc3RhdGVtZW50IiAidHJ1ZSIKK2NsYXNzIGEgeworcHVibGljIHZvaWQgcnVuKCkgeworLy9ub2luc3BlY3Rpb24gVW51c2VkRGVjbGFyYXRpb24KKyAgICBpbnQgPGNhcmV0PmkgPSAwOworfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvc3VwcHJlc3NOb25JbnNwZWN0aW9ucy9hZnRlcjIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvc3VwcHJlc3NOb25JbnNwZWN0aW9ucy9hZnRlcjIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MGE0MWZhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9zdXBwcmVzc05vbkluc3BlY3Rpb25zL2FmdGVyMi5qYXZhCkBAIC0wLDAgKzEsNiBAQAorLy8gIlN1cHByZXNzIGZvciBtZXRob2QiICJ0cnVlIgorY2xhc3MgYSB7CisvKiogQG5vaW5zcGVjdGlvbiBVbnVzZWREZWNsYXJhdGlvbiovCitwcml2YXRlIHZvaWQgPGNhcmV0PnJ1bigpIHsKK30KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3N1cHByZXNzTm9uSW5zcGVjdGlvbnMvYWZ0ZXIzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3N1cHByZXNzTm9uSW5zcGVjdGlvbnMvYWZ0ZXIzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjkxYmE3YwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvc3VwcHJlc3NOb25JbnNwZWN0aW9ucy9hZnRlcjMuamF2YQpAQCAtMCwwICsxLDcgQEAKKy8vICJTdXBwcmVzcyBmb3IgbWV0aG9kIiAidHJ1ZSIKK2ltcG9ydCBqYXZhLmlvLklPRXhjZXB0aW9uOworY2xhc3MgYSB7CisvKiogQG5vaW5zcGVjdGlvbiBSZWR1bmRhbnRUaHJvd3NEZWNsYXJhdGlvbiovCitwcml2YXRlIHZvaWQgcnVuKCkgdGhyb3dzIDxjYXJldD5JT0V4Y2VwdGlvbnsKK30KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3N1cHByZXNzTm9uSW5zcGVjdGlvbnMvYWZ0ZXI0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3N1cHByZXNzTm9uSW5zcGVjdGlvbnMvYWZ0ZXI0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTFlMjc1NgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvc3VwcHJlc3NOb25JbnNwZWN0aW9ucy9hZnRlcjQuamF2YQpAQCAtMCwwICsxLDExIEBACisvLyAiU3VwcHJlc3MgZm9yIHN0YXRlbWVudCIgInRydWUiCitjbGFzcyBhIHsKKy8qKgorKiBAZGVwcmVjYXRlZAorKi8KK2ludCBiOworcHJpdmF0ZSB2b2lkIGFhKCl7CisgICAgLy9ub2luc3BlY3Rpb24gZGVwcmVjYXRpb24KKyAgICBiKys7Cit9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9zdXBwcmVzc05vbkluc3BlY3Rpb25zL2FmdGVyNS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9zdXBwcmVzc05vbkluc3BlY3Rpb25zL2FmdGVyNS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU0NTAxNzQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3N1cHByZXNzTm9uSW5zcGVjdGlvbnMvYWZ0ZXI1LmphdmEKQEAgLTAsMCArMSwxMyBAQAorLy8gIlN1cHByZXNzIGZvciBzdGF0ZW1lbnQiICJ0cnVlIgorY2xhc3MgYSB7CisvKioKKyAqIEBkZXByZWNhdGVkCisgKi8KK3B1YmxpYyB2b2lkIGFhKCl7Cit9CisKK3ByaXZhdGUgdm9pZCBhYWEoKXsKKyAgICAvL25vaW5zcGVjdGlvbiBkZXByZWNhdGlvbgorICAgIDxjYXJldD5hYSgpOworfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9zdXBwcmVzc05vbkluc3BlY3Rpb25zL2FmdGVyNi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9zdXBwcmVzc05vbkluc3BlY3Rpb25zL2FmdGVyNi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI2YWI3MWUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3N1cHByZXNzTm9uSW5zcGVjdGlvbnMvYWZ0ZXI2LmphdmEKQEAgLTAsMCArMSw4IEBACisvLyAiU3VwcHJlc3MgZm9yIHN0YXRlbWVudCIgInRydWUiCitjbGFzcyBhIHsKKyAgcHVibGljIHZvaWQgYWEoKXsKKyAgICAgaW50IGEgPSAwOworICAgICAgLy9ub2luc3BlY3Rpb24gU2lsbHlBc3NpZ25tZW50CisgICAgICA8Y2FyZXQ+YSA9IGE7CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvc3VwcHJlc3NOb25JbnNwZWN0aW9ucy9hZnRlcjcuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvc3VwcHJlc3NOb25JbnNwZWN0aW9ucy9hZnRlcjcuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jOWZhMTAzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9zdXBwcmVzc05vbkluc3BlY3Rpb25zL2FmdGVyNy5qYXZhCkBAIC0wLDAgKzEsOSBAQAorLy8gIlN1cHByZXNzIGZvciBzdGF0ZW1lbnQiICJ0cnVlIgorY2xhc3MgYSB7CitzdGF0aWMgdm9pZCBzZXRBKCl7Cit9Cit2b2lkIGIoKXsKKyAgICAvL25vaW5zcGVjdGlvbiBBY2Nlc3NTdGF0aWNWaWFJbnN0YW5jZQorICAgIDxjYXJldD5uZXcgYSgpLnNldEEoKTsKK30KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvc3VwcHJlc3NOb25JbnNwZWN0aW9ucy9hZnRlcjkuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvc3VwcHJlc3NOb25JbnNwZWN0aW9ucy9hZnRlcjkuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNzk1ZTYyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9zdXBwcmVzc05vbkluc3BlY3Rpb25zL2FmdGVyOS5qYXZhCkBAIC0wLDAgKzEsMTkgQEAKKy8vICJTdXBwcmVzcyBmb3IgY2xhc3MiICJ0cnVlIgorcHVibGljIGNsYXNzIFRlc3QgeworCisgIHB1YmxpYyB2b2lkIHRlc3QoKSB7CisgICAgSW5uZXIgaW5uZXIgPSBuZXcgSW5uZXIoKTsKKyAgfQorCisgIC8qKiBAbm9pbnNwZWN0aW9uIGRlcHJlY2F0aW9uKi8KKyAgcHJpdmF0ZSBzdGF0aWMgY2xhc3MgSW5uZXIgeworCisgICAgLyoqCisgICAgICogQGRlcHJlY2F0ZWQKKyAgICAgKi8KKyAgICBpbnQgaTsKKyAgICBwdWJsaWMgdm9pZCB1bnVzZWQoKSB7CisgICAgICBpKys7CisgICAgfQorICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3N1cHByZXNzTm9uSW5zcGVjdGlvbnMvYmVmb3JlMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9zdXBwcmVzc05vbkluc3BlY3Rpb25zL2JlZm9yZTEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZDc4NjhkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9zdXBwcmVzc05vbkluc3BlY3Rpb25zL2JlZm9yZTEuamF2YQpAQCAtMCwwICsxLDYgQEAKKy8vICJTdXBwcmVzcyBmb3Igc3RhdGVtZW50IiAidHJ1ZSIKK2NsYXNzIGEgeworcHVibGljIHZvaWQgcnVuKCkgeworaW50IDxjYXJldD5pID0gMDsKK30KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3N1cHByZXNzTm9uSW5zcGVjdGlvbnMvYmVmb3JlMi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9zdXBwcmVzc05vbkluc3BlY3Rpb25zL2JlZm9yZTIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZGNiOTBlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9zdXBwcmVzc05vbkluc3BlY3Rpb25zL2JlZm9yZTIuamF2YQpAQCAtMCwwICsxLDUgQEAKKy8vICJTdXBwcmVzcyBmb3IgbWV0aG9kIiAidHJ1ZSIKK2NsYXNzIGEgeworcHJpdmF0ZSB2b2lkIDxjYXJldD5ydW4oKSB7Cit9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9zdXBwcmVzc05vbkluc3BlY3Rpb25zL2JlZm9yZTMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvc3VwcHJlc3NOb25JbnNwZWN0aW9ucy9iZWZvcmUzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2RkZDUxMAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvc3VwcHJlc3NOb25JbnNwZWN0aW9ucy9iZWZvcmUzLmphdmEKQEAgLTAsMCArMSw2IEBACisvLyAiU3VwcHJlc3MgZm9yIG1ldGhvZCIgInRydWUiCitpbXBvcnQgamF2YS5pby5JT0V4Y2VwdGlvbjsKK2NsYXNzIGEgeworcHJpdmF0ZSB2b2lkIHJ1bigpIHRocm93cyA8Y2FyZXQ+SU9FeGNlcHRpb257Cit9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9zdXBwcmVzc05vbkluc3BlY3Rpb25zL2JlZm9yZTQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvc3VwcHJlc3NOb25JbnNwZWN0aW9ucy9iZWZvcmU0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjIzZjIxOAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvc3VwcHJlc3NOb25JbnNwZWN0aW9ucy9iZWZvcmU0LmphdmEKQEAgLTAsMCArMSwxMCBAQAorLy8gIlN1cHByZXNzIGZvciBzdGF0ZW1lbnQiICJ0cnVlIgorY2xhc3MgYSB7CisvKioKKyogQGRlcHJlY2F0ZWQKKyovCitpbnQgYjsKK3ByaXZhdGUgdm9pZCBhYSgpeworIDxjYXJldD5iKys7Cit9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9zdXBwcmVzc05vbkluc3BlY3Rpb25zL2JlZm9yZTUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvc3VwcHJlc3NOb25JbnNwZWN0aW9ucy9iZWZvcmU1LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODZkYTVlMwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvc3VwcHJlc3NOb25JbnNwZWN0aW9ucy9iZWZvcmU1LmphdmEKQEAgLTAsMCArMSwxMiBAQAorLy8gIlN1cHByZXNzIGZvciBzdGF0ZW1lbnQiICJ0cnVlIgorY2xhc3MgYSB7CisvKioKKyAqIEBkZXByZWNhdGVkCisgKi8KK3B1YmxpYyB2b2lkIGFhKCl7Cit9CisKK3ByaXZhdGUgdm9pZCBhYWEoKXsKKyAgICA8Y2FyZXQ+YWEoKTsKK30KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvc3VwcHJlc3NOb25JbnNwZWN0aW9ucy9iZWZvcmU2LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3N1cHByZXNzTm9uSW5zcGVjdGlvbnMvYmVmb3JlNi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUzMTQyZWM2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9zdXBwcmVzc05vbkluc3BlY3Rpb25zL2JlZm9yZTYuamF2YQpAQCAtMCwwICsxLDcgQEAKKy8vICJTdXBwcmVzcyBmb3Igc3RhdGVtZW50IiAidHJ1ZSIKK2NsYXNzIGEgeworICBwdWJsaWMgdm9pZCBhYSgpeworICAgICBpbnQgYSA9IDA7CisgICAgIDxjYXJldD5hID0gYTsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9zdXBwcmVzc05vbkluc3BlY3Rpb25zL2JlZm9yZTcuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvc3VwcHJlc3NOb25JbnNwZWN0aW9ucy9iZWZvcmU3LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTA5NWM4YwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvc3VwcHJlc3NOb25JbnNwZWN0aW9ucy9iZWZvcmU3LmphdmEKQEAgLTAsMCArMSw4IEBACisvLyAiU3VwcHJlc3MgZm9yIHN0YXRlbWVudCIgInRydWUiCitjbGFzcyBhIHsKK3N0YXRpYyB2b2lkIHNldEEoKXsKK30KK3ZvaWQgYigpeworICA8Y2FyZXQ+bmV3IGEoKS5zZXRBKCk7Cit9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3N1cHByZXNzTm9uSW5zcGVjdGlvbnMvYmVmb3JlOC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9zdXBwcmVzc05vbkluc3BlY3Rpb25zL2JlZm9yZTguamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wODk3NTkzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9zdXBwcmVzc05vbkluc3BlY3Rpb25zL2JlZm9yZTguamF2YQpAQCAtMCwwICsxLDYgQEAKKy8vICJTdXBwcmVzcyBmb3IgbWV0aG9kIiAiZmFsc2UiCisvKiogQG5vaW5zcGVjdGlvbiBVTlVTRURfU1lNQk9MKi8KK2NsYXNzIGEgeworcHJpdmF0ZSB2b2lkIHJ1bigpIHsKK30KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3N1cHByZXNzTm9uSW5zcGVjdGlvbnMvYmVmb3JlOS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9zdXBwcmVzc05vbkluc3BlY3Rpb25zL2JlZm9yZTkuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYTk0ZTdlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9zdXBwcmVzc05vbkluc3BlY3Rpb25zL2JlZm9yZTkuamF2YQpAQCAtMCwwICsxLDE4IEBACisvLyAiU3VwcHJlc3MgZm9yIGNsYXNzIiAidHJ1ZSIKK3B1YmxpYyBjbGFzcyBUZXN0IHsKKworICBwdWJsaWMgdm9pZCB0ZXN0KCkgeworICAgIElubmVyIGlubmVyID0gbmV3IElubmVyKCk7CisgIH0KKworICBwcml2YXRlIHN0YXRpYyBjbGFzcyBJbm5lciB7CisKKyAgICAvKioKKyAgICAgKiBAZGVwcmVjYXRlZAorICAgICAqLworICAgIGludCBpOworICAgIHB1YmxpYyB2b2lkIHVudXNlZCgpIHsKKyAgICAgIDxjYXJldD5pKys7CisgICAgfQorICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3N1cnJvdW5kV2l0aEFycmF5L2FmdGVyMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9zdXJyb3VuZFdpdGhBcnJheS9hZnRlcjEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZTNhMmM5MgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvc3Vycm91bmRXaXRoQXJyYXkvYWZ0ZXIxLmphdmEKQEAgLTAsMCArMSw5IEBACisvLyAiU3Vycm91bmQgd2l0aCBhcnJheSBpbml0aWFsaXphdGlvbiIgInRydWUiCitjbGFzcyBBIHsKKyAgdm9pZCBiYXIoU3RyaW5nW10gYXJncyl7CisgIH0KKworICB2b2lkIGZvbyhTdHJpbmcgcyl7CisgICAgYmFyKG5ldyBTdHJpbmdbXXtzfSk7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3N1cnJvdW5kV2l0aEFycmF5L2FmdGVyMTAuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvc3Vycm91bmRXaXRoQXJyYXkvYWZ0ZXIxMC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRmYzRjMDMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3N1cnJvdW5kV2l0aEFycmF5L2FmdGVyMTAuamF2YQpAQCAtMCwwICsxLDkgQEAKKy8vICJTdXJyb3VuZCB3aXRoIGFycmF5IGluaXRpYWxpemF0aW9uIiAidHJ1ZSIKK2NsYXNzIEEgeworCisgIHZvaWQgZm9vKCl7CisgICAgc29ydChuZXcgU3RyaW5nW117IlN0cmluZyJ9LCAiU3RyaW5nIik7CisgIH0KKworICA8VCBleHRlbmRzIFN0cmluZywgUT4gdm9pZCBzb3J0KFRbXSBhLCBRIHEpe30KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3N1cnJvdW5kV2l0aEFycmF5L2FmdGVyMy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9zdXJyb3VuZFdpdGhBcnJheS9hZnRlcjMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iOWFkMzQ3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9zdXJyb3VuZFdpdGhBcnJheS9hZnRlcjMuamF2YQpAQCAtMCwwICsxLDkgQEAKKy8vICJTdXJyb3VuZCB3aXRoIGFycmF5IGluaXRpYWxpemF0aW9uIiAidHJ1ZSIKK2NsYXNzIEEgeworICB2b2lkIGJhcihpbnQgaSwgU3RyaW5nW10gYXJncyl7CisgIH0KKworICB2b2lkIGZvbyhTdHJpbmcgcyl7CisgICAgYmFyKDEsIG5ldyBTdHJpbmdbXXtzfSk7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3N1cnJvdW5kV2l0aEFycmF5L2FmdGVyNS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9zdXJyb3VuZFdpdGhBcnJheS9hZnRlcjUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZjUyOGZjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9zdXJyb3VuZFdpdGhBcnJheS9hZnRlcjUuamF2YQpAQCAtMCwwICsxLDExIEBACisvLyAiU3Vycm91bmQgd2l0aCBhcnJheSBpbml0aWFsaXphdGlvbiIgInRydWUiCitjbGFzcyBBIHsKKyAgdm9pZCBiYXIoaW50IGksIFN0cmluZ1tdIGFyZ3MpeworICB9CisKKyAgdm9pZCBiYXIoaW50IGksIGludCBqKXt9CisKKyAgdm9pZCBmb28oU3RyaW5nIHMpeworICAgIGJhcigxLCBuZXcgU3RyaW5nW117c30pOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9zdXJyb3VuZFdpdGhBcnJheS9hZnRlcjYuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvc3Vycm91bmRXaXRoQXJyYXkvYWZ0ZXI2LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjE5ZWVhMgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvc3Vycm91bmRXaXRoQXJyYXkvYWZ0ZXI2LmphdmEKQEAgLTAsMCArMSw4IEBACisvLyAiU3Vycm91bmQgd2l0aCBhcnJheSBpbml0aWFsaXphdGlvbiIgInRydWUiCitjbGFzcyBBIHsKKyAgQShTdHJpbmdbXSBzKXt9CisKKyAgdm9pZCBmb28oU3RyaW5nIHMpeworICAgIG5ldyBBKG5ldyBTdHJpbmdbXXtzfSk7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3N1cnJvdW5kV2l0aEFycmF5L2FmdGVyNy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9zdXJyb3VuZFdpdGhBcnJheS9hZnRlcjcuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNGI2NzRiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9zdXJyb3VuZFdpdGhBcnJheS9hZnRlcjcuamF2YQpAQCAtMCwwICsxLDcgQEAKKy8vICJTdXJyb3VuZCB3aXRoIGFycmF5IGluaXRpYWxpemF0aW9uIiAidHJ1ZSIKK2NsYXNzIEEgeworCisgIFN0cmluZ1tdIGZvbygpeworICAgIHJldHVybiBuZXcgU3RyaW5nW117IiJ9OworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9zdXJyb3VuZFdpdGhBcnJheS9hZnRlcjguamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvc3Vycm91bmRXaXRoQXJyYXkvYWZ0ZXI4LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTU5NTczNAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvc3Vycm91bmRXaXRoQXJyYXkvYWZ0ZXI4LmphdmEKQEAgLTAsMCArMSwxMiBAQAorLy8gIlN1cnJvdW5kIHdpdGggYXJyYXkgaW5pdGlhbGl6YXRpb24iICJ0cnVlIgoraW1wb3J0IGphdmEudXRpbC4qOworY2xhc3MgQSB7CisKKyAgdm9pZCBmb28oKXsKKyAgICBBcnJheXMuc29ydChuZXcgU3RyaW5nW117IlN0ciJ9LCBuZXcgQ29tcGFyYXRvcjxTdHJpbmc+KCl7CisgICAgICAgICAgICBwdWJsaWMgaW50IGNvbXBhcmUoU3RyaW5nIG8xLCBTdHJpbmcgbzIpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSk7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3N1cnJvdW5kV2l0aEFycmF5L2JlZm9yZTEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvc3Vycm91bmRXaXRoQXJyYXkvYmVmb3JlMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVhZDA0NzAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3N1cnJvdW5kV2l0aEFycmF5L2JlZm9yZTEuamF2YQpAQCAtMCwwICsxLDkgQEAKKy8vICJTdXJyb3VuZCB3aXRoIGFycmF5IGluaXRpYWxpemF0aW9uIiAidHJ1ZSIKK2NsYXNzIEEgeworICB2b2lkIGJhcihTdHJpbmdbXSBhcmdzKXsKKyAgfQorCisgIHZvaWQgZm9vKFN0cmluZyBzKXsKKyAgICBiYXIoPGNhcmV0PnMpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9zdXJyb3VuZFdpdGhBcnJheS9iZWZvcmUxMC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9zdXJyb3VuZFdpdGhBcnJheS9iZWZvcmUxMC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM4NDA3MWYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3N1cnJvdW5kV2l0aEFycmF5L2JlZm9yZTEwLmphdmEKQEAgLTAsMCArMSw5IEBACisvLyAiU3Vycm91bmQgd2l0aCBhcnJheSBpbml0aWFsaXphdGlvbiIgInRydWUiCitjbGFzcyBBIHsKKworICB2b2lkIGZvbygpeworICAgIHNvcnQoPGNhcmV0PiJTdHJpbmciLCAiU3RyaW5nIik7CisgIH0KKworICA8VCBleHRlbmRzIFN0cmluZywgUT4gdm9pZCBzb3J0KFRbXSBhLCBRIHEpe30KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3N1cnJvdW5kV2l0aEFycmF5L2JlZm9yZTIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvc3Vycm91bmRXaXRoQXJyYXkvYmVmb3JlMi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIyN2U0YWQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3N1cnJvdW5kV2l0aEFycmF5L2JlZm9yZTIuamF2YQpAQCAtMCwwICsxLDkgQEAKKy8vICJTdXJyb3VuZCB3aXRoIGFycmF5IGluaXRpYWxpemF0aW9uIiAiZmFsc2UiCitjbGFzcyBBIHsKKyAgdm9pZCBiYXIoaW50IGFyZyl7CisgIH0KKworICB2b2lkIGZvbyhTdHJpbmcgcyl7CisgICAgYmFyKDxjYXJldD5zKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvc3Vycm91bmRXaXRoQXJyYXkvYmVmb3JlMy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9zdXJyb3VuZFdpdGhBcnJheS9iZWZvcmUzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2Y2ZTBmZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvc3Vycm91bmRXaXRoQXJyYXkvYmVmb3JlMy5qYXZhCkBAIC0wLDAgKzEsOSBAQAorLy8gIlN1cnJvdW5kIHdpdGggYXJyYXkgaW5pdGlhbGl6YXRpb24iICJ0cnVlIgorY2xhc3MgQSB7CisgIHZvaWQgYmFyKGludCBpLCBTdHJpbmdbXSBhcmdzKXsKKyAgfQorCisgIHZvaWQgZm9vKFN0cmluZyBzKXsKKyAgICBiYXIoMSwgPGNhcmV0PnMpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9zdXJyb3VuZFdpdGhBcnJheS9iZWZvcmU0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3N1cnJvdW5kV2l0aEFycmF5L2JlZm9yZTQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hY2FiODdkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9zdXJyb3VuZFdpdGhBcnJheS9iZWZvcmU0LmphdmEKQEAgLTAsMCArMSw5IEBACisvLyAiU3Vycm91bmQgd2l0aCBhcnJheSBpbml0aWFsaXphdGlvbiIgImZhbHNlIgorY2xhc3MgQSB7CisgIHZvaWQgYmFyKGludCBpLCBTdHJpbmdbXSBhcmdzKXsKKyAgfQorCisgIHZvaWQgZm9vKFN0cmluZyBzKXsKKyAgICBiYXIoPGNhcmV0PjEsIHMpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9zdXJyb3VuZFdpdGhBcnJheS9iZWZvcmU1LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3N1cnJvdW5kV2l0aEFycmF5L2JlZm9yZTUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42OWZmY2U2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9zdXJyb3VuZFdpdGhBcnJheS9iZWZvcmU1LmphdmEKQEAgLTAsMCArMSwxMSBAQAorLy8gIlN1cnJvdW5kIHdpdGggYXJyYXkgaW5pdGlhbGl6YXRpb24iICJ0cnVlIgorY2xhc3MgQSB7CisgIHZvaWQgYmFyKGludCBpLCBTdHJpbmdbXSBhcmdzKXsKKyAgfQorCisgIHZvaWQgYmFyKGludCBpLCBpbnQgail7fQorCisgIHZvaWQgZm9vKFN0cmluZyBzKXsKKyAgICBiYXIoMSwgPGNhcmV0PnMpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9zdXJyb3VuZFdpdGhBcnJheS9iZWZvcmU2LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3N1cnJvdW5kV2l0aEFycmF5L2JlZm9yZTYuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZDQ0ZGM0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9zdXJyb3VuZFdpdGhBcnJheS9iZWZvcmU2LmphdmEKQEAgLTAsMCArMSw4IEBACisvLyAiU3Vycm91bmQgd2l0aCBhcnJheSBpbml0aWFsaXphdGlvbiIgInRydWUiCitjbGFzcyBBIHsKKyAgQShTdHJpbmdbXSBzKXt9CisKKyAgdm9pZCBmb28oU3RyaW5nIHMpeworICAgIG5ldyBBKDxjYXJldD5zKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvc3Vycm91bmRXaXRoQXJyYXkvYmVmb3JlNy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9zdXJyb3VuZFdpdGhBcnJheS9iZWZvcmU3LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGRmMWU1MwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvc3Vycm91bmRXaXRoQXJyYXkvYmVmb3JlNy5qYXZhCkBAIC0wLDAgKzEsNyBAQAorLy8gIlN1cnJvdW5kIHdpdGggYXJyYXkgaW5pdGlhbGl6YXRpb24iICJ0cnVlIgorY2xhc3MgQSB7CisKKyAgU3RyaW5nW10gZm9vKCl7CisgICAgcmV0dXJuIDxjYXJldD4iIjsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvc3Vycm91bmRXaXRoQXJyYXkvYmVmb3JlOC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9zdXJyb3VuZFdpdGhBcnJheS9iZWZvcmU4LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmJkMjA0YwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvc3Vycm91bmRXaXRoQXJyYXkvYmVmb3JlOC5qYXZhCkBAIC0wLDAgKzEsMTIgQEAKKy8vICJTdXJyb3VuZCB3aXRoIGFycmF5IGluaXRpYWxpemF0aW9uIiAidHJ1ZSIKK2ltcG9ydCBqYXZhLnV0aWwuKjsKK2NsYXNzIEEgeworCisgIHZvaWQgZm9vKCl7CisgICAgQXJyYXlzLnNvcnQoPGNhcmV0PiJTdHIiLCBuZXcgQ29tcGFyYXRvcjxTdHJpbmc+KCl7CisgICAgICAgICAgICBwdWJsaWMgaW50IGNvbXBhcmUoU3RyaW5nIG8xLCBTdHJpbmcgbzIpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSk7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3N1cnJvdW5kV2l0aEFycmF5L2JlZm9yZTkuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvc3Vycm91bmRXaXRoQXJyYXkvYmVmb3JlOS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNkMDg1ZDkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3N1cnJvdW5kV2l0aEFycmF5L2JlZm9yZTkuamF2YQpAQCAtMCwwICsxLDkgQEAKKy8vICJTdXJyb3VuZCB3aXRoIGFycmF5IGluaXRpYWxpemF0aW9uIiAiZmFsc2UiCitjbGFzcyBBIHsKKworICB2b2lkIGZvbygpeworICAgIHNvcnQoPGNhcmV0PiJTdHJpbmciLCAiU3RyaW5nIik7CisgIH0KKworICA8VCBleHRlbmRzIEludGVnZXIsIFE+IHZvaWQgc29ydChUW10gYSwgUSBxKXt9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9zdXJyb3VuZFdpdGhJZi9hZnRlcjEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvc3Vycm91bmRXaXRoSWYvYWZ0ZXIxLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTM2NTU1ZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvc3Vycm91bmRXaXRoSWYvYWZ0ZXIxLmphdmEKQEAgLTAsMCArMSw5IEBACisvLyAiU3Vycm91bmQgd2l0aCAnaWYgKGkgIT0gbnVsbCknIiAidHJ1ZSIKK2NsYXNzIEEgeworICAgIHZvaWQgZm9vKCl7CisgICAgICAgIFN0cmluZyBpID0gbnVsbDsKKyAgICAgICAgaWYgKGkgIT0gbnVsbDxjYXJldD4pIHsKKyAgICAgICAgICAgIGkuaGFzaENvZGUoKTsKKyAgICAgICAgfQorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3N1cnJvdW5kV2l0aElmL2FmdGVyMi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9zdXJyb3VuZFdpdGhJZi9hZnRlcjIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZGVlMmMyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9zdXJyb3VuZFdpdGhJZi9hZnRlcjIuamF2YQpAQCAtMCwwICsxLDkgQEAKKy8vICJTdXJyb3VuZCB3aXRoICdpZiAocyAhPSBudWxsKSciICJ0cnVlIgorY2xhc3MgQSB7CisgICAgdm9pZCBmb28oKXsKKyAgICAgICAgU3RyaW5nIHMgPSBudWxsOworICAgICAgICBpZiAocyAhPSBudWxsPGNhcmV0PikgeworICAgICAgICAgICAgZm9yIChpbnQgaT0wOyBpIT1zLmhhc2hDb2RlKCk7aSsrKXt9CisgICAgICAgIH0KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9zdXJyb3VuZFdpdGhJZi9iZWZvcmUxLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3N1cnJvdW5kV2l0aElmL2JlZm9yZTEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZjNiMTc2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9zdXJyb3VuZFdpdGhJZi9iZWZvcmUxLmphdmEKQEAgLTAsMCArMSw3IEBACisvLyAiU3Vycm91bmQgd2l0aCAnaWYgKGkgIT0gbnVsbCknIiAidHJ1ZSIKK2NsYXNzIEEgeworICAgIHZvaWQgZm9vKCl7CisgICAgICAgIFN0cmluZyBpID0gbnVsbDsKKyAgICAgICAgPGNhcmV0PmkuaGFzaENvZGUoKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9zdXJyb3VuZFdpdGhJZi9iZWZvcmUyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3N1cnJvdW5kV2l0aElmL2JlZm9yZTIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYThlMWFjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9zdXJyb3VuZFdpdGhJZi9iZWZvcmUyLmphdmEKQEAgLTAsMCArMSw3IEBACisvLyAiU3Vycm91bmQgd2l0aCAnaWYgKHMgIT0gbnVsbCknIiAidHJ1ZSIKK2NsYXNzIEEgeworICAgIHZvaWQgZm9vKCl7CisgICAgICAgIFN0cmluZyBzID0gbnVsbDsKKyAgICAgICAgZm9yIChpbnQgaT0wOyBpIT08Y2FyZXQ+cy5oYXNoQ29kZSgpO2krKyl7fQorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3N1cnJvdW5kV2l0aElmL2JlZm9yZTMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvc3Vycm91bmRXaXRoSWYvYmVmb3JlMy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFmZjczMGIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3N1cnJvdW5kV2l0aElmL2JlZm9yZTMuamF2YQpAQCAtMCwwICsxLDcgQEAKKy8vICJTdXJyb3VuZCB3aXRoICdpZiAocyAhPSBudWxsKSciICJmYWxzZSIKK2NsYXNzIEEgeworICAgIHZvaWQgZm9vKCl7CisgICAgICAgIFN0cmluZyBzID0gbnVsbDsKKyAgICAgICAgZm9yIChpbnQgaT08Y2FyZXQ+cy50b1N0cmluZygpLmhhc2hDb2RlKCk7IGk9PTA7ICkge30KKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3N1cnJvdW5kV2l0aFRyeS9hZnRlcjEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvc3Vycm91bmRXaXRoVHJ5L2FmdGVyMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI0NDYzMDMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3N1cnJvdW5kV2l0aFRyeS9hZnRlcjEuamF2YQpAQCAtMCwwICsxLDE3IEBACisvLyAiU3Vycm91bmQgd2l0aCB0cnkvY2F0Y2giICJ0cnVlIgorY2xhc3MgQyB7CisgICAgc3RhdGljIGNsYXNzIEUxIGV4dGVuZHMgRXhjZXB0aW9uIHsgfQorCisgICAgc3RhdGljIGNsYXNzIE15UmVzb3VyY2UgaW1wbGVtZW50cyBBdXRvQ2xvc2VhYmxlIHsKKyAgICAgICAgcHVibGljIHZvaWQgY2xvc2UoKSB0aHJvd3MgRTEgeyB9CisgICAgfQorCisgICAgdm9pZCBtKCkgeworICAgICAgICB0cnkgeworICAgICAgICAgICAgdHJ5IChNeVJlc291cmNlIHIgPSBuZXcgTXlSZXNvdXJjZSgpKSB7CisgICAgICAgICAgICB9CisgICAgICAgIH0gY2F0Y2ggKEUxIGUxKSB7CisgICAgICAgICAgICA8c2VsZWN0aW9uPmUxLnByaW50U3RhY2tUcmFjZSgpOyAgLy9UbyBjaGFuZ2UgYm9keSBvZiBjYXRjaCBzdGF0ZW1lbnQgdXNlIEZpbGUgfCBTZXR0aW5ncyB8IEZpbGUgVGVtcGxhdGVzLjwvc2VsZWN0aW9uPgorICAgICAgICB9CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvc3Vycm91bmRXaXRoVHJ5L2JlZm9yZTEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvc3Vycm91bmRXaXRoVHJ5L2JlZm9yZTEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MGY2YjQzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC9zdXJyb3VuZFdpdGhUcnkvYmVmb3JlMS5qYXZhCkBAIC0wLDAgKzEsMTMgQEAKKy8vICJTdXJyb3VuZCB3aXRoIHRyeS9jYXRjaCIgInRydWUiCitjbGFzcyBDIHsKKyAgICBzdGF0aWMgY2xhc3MgRTEgZXh0ZW5kcyBFeGNlcHRpb24geyB9CisKKyAgICBzdGF0aWMgY2xhc3MgTXlSZXNvdXJjZSBpbXBsZW1lbnRzIEF1dG9DbG9zZWFibGUgeworICAgICAgICBwdWJsaWMgdm9pZCBjbG9zZSgpIHRocm93cyBFMSB7IH0KKyAgICB9CisKKyAgICB2b2lkIG0oKSB7CisgICAgICAgIHRyeSAoPGNhcmV0Pk15UmVzb3VyY2UgciA9IG5ldyBNeVJlc291cmNlKCkpIHsKKyAgICAgICAgfQorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3VuaW1wbGVtZW50L2FmdGVyMlN0cmluZy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC91bmltcGxlbWVudC9hZnRlcjJTdHJpbmcuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZjNjN2JmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC91bmltcGxlbWVudC9hZnRlcjJTdHJpbmcuamF2YQpAQCAtMCwwICsxLDggQEAKKy8vICJVbmltcGxlbWVudCBJbnRlcmZhY2UiICJ0cnVlIgorY2xhc3MgQSB7CisgIHB1YmxpYyBTdHJpbmcgdG9TdHJpbmcoKSB7CisgICAgcmV0dXJuIHN1cGVyLnRvU3RyaW5nKCk7CisgIH0KK30KKworaW50ZXJmYWNlIElJIHt9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC91bmltcGxlbWVudC9hZnRlckdlbmVyaWNzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3VuaW1wbGVtZW50L2FmdGVyR2VuZXJpY3MuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMDUwYTc0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC91bmltcGxlbWVudC9hZnRlckdlbmVyaWNzLmphdmEKQEAgLTAsMCArMSwxMSBAQAorLy8gIlVuaW1wbGVtZW50IEludGVyZmFjZSIgInRydWUiCitjbGFzcyBBIHsKKyAgcHVibGljIFN0cmluZyB0b1N0cmluZygpIHsKKyAgICByZXR1cm4gc3VwZXIudG9TdHJpbmcoKTsKKyAgfQorCit9CisKK2ludGVyZmFjZSBJSTxUPiB7CisgIHZvaWQgZm9vKFQgdHkpOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvdW5pbXBsZW1lbnQvYWZ0ZXJMYXN0UG9zaXRpb24uamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvdW5pbXBsZW1lbnQvYWZ0ZXJMYXN0UG9zaXRpb24uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZTc2YjBiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC91bmltcGxlbWVudC9hZnRlckxhc3RQb3NpdGlvbi5qYXZhCkBAIC0wLDAgKzEsMTEgQEAKKy8vICJVbmltcGxlbWVudCBJbnRlcmZhY2UiICJ0cnVlIgorY2xhc3MgQSB7CisgIHB1YmxpYyBTdHJpbmcgdG9TdHJpbmcoKSB7CisgICAgcmV0dXJuIHN1cGVyLnRvU3RyaW5nKCk7CisgIH0KKworICAgIHB1YmxpYyB2b2lkIGZvbyhTdHJpbmcgdHkpe30KK30KKworaW50ZXJmYWNlIElJIHsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3VuaW1wbGVtZW50L2JlZm9yZTJTdHJpbmcuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvdW5pbXBsZW1lbnQvYmVmb3JlMlN0cmluZy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYzN2Y4NmYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3VuaW1wbGVtZW50L2JlZm9yZTJTdHJpbmcuamF2YQpAQCAtMCwwICsxLDggQEAKKy8vICJVbmltcGxlbWVudCBJbnRlcmZhY2UiICJ0cnVlIgorY2xhc3MgQSBpbXBsZW1lbnRzIEk8Y2FyZXQ+SSB7CisgIHB1YmxpYyBTdHJpbmcgdG9TdHJpbmcoKSB7CisgICAgcmV0dXJuIHN1cGVyLnRvU3RyaW5nKCk7CisgIH0KK30KKworaW50ZXJmYWNlIElJIHt9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC91bmltcGxlbWVudC9iZWZvcmVHZW5lcmljcy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC91bmltcGxlbWVudC9iZWZvcmVHZW5lcmljcy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVmZWRkZjAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3VuaW1wbGVtZW50L2JlZm9yZUdlbmVyaWNzLmphdmEKQEAgLTAsMCArMSwxMiBAQAorLy8gIlVuaW1wbGVtZW50IEludGVyZmFjZSIgInRydWUiCitjbGFzcyBBIGltcGxlbWVudHMgSUk8UzxjYXJldD50cmluZz4geworICBwdWJsaWMgU3RyaW5nIHRvU3RyaW5nKCkgeworICAgIHJldHVybiBzdXBlci50b1N0cmluZygpOworICB9CisKKyAgICBwdWJsaWMgdm9pZCBmb28oU3RyaW5nIHR5KXt9Cit9CisKK2ludGVyZmFjZSBJSTxUPiB7CisgIHZvaWQgZm9vKFQgdHkpOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvdW5pbXBsZW1lbnQvYmVmb3JlTGFzdFBvc2l0aW9uLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3VuaW1wbGVtZW50L2JlZm9yZUxhc3RQb3NpdGlvbi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ4MTg4MmQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3VuaW1wbGVtZW50L2JlZm9yZUxhc3RQb3NpdGlvbi5qYXZhCkBAIC0wLDAgKzEsMTEgQEAKKy8vICJVbmltcGxlbWVudCBJbnRlcmZhY2UiICJ0cnVlIgorY2xhc3MgQSBpbXBsZW1lbnRzIElJPGNhcmV0PiB7CisgIHB1YmxpYyBTdHJpbmcgdG9TdHJpbmcoKSB7CisgICAgcmV0dXJuIHN1cGVyLnRvU3RyaW5nKCk7CisgIH0KKworICAgIHB1YmxpYyB2b2lkIGZvbyhTdHJpbmcgdHkpe30KK30KKworaW50ZXJmYWNlIElJIHsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3ZhclR5cGVGcm9tQ2FsbC9hZnRlcjEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvdmFyVHlwZUZyb21DYWxsL2FmdGVyMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE4OTAyN2QKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3ZhclR5cGVGcm9tQ2FsbC9hZnRlcjEuamF2YQpAQCAtMCwwICsxLDExIEBACisvLyAiQ2hhbmdlICdsaXN0JyB0eXBlIHRvICdMaXN0PGphdmEubGFuZy5JbnRlZ2VyPiciICJ0cnVlIgorcHVibGljIGNsYXNzIFRlc3QgeworICB2b2lkIGZvbygpICB7CisgICAgTGlzdDxJbnRlZ2VyPiBsaXN0ID0gbmV3IExpc3Q8PigpOworICAgIGxpc3QuYWRkKG5ldyBJbnRlZ2VyKDApKTsKKyAgfQorfQorCitjbGFzcyBMaXN0PFQ+IHsKKyAgdm9pZCBhZGQoVCB0KXt9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC92YXJUeXBlRnJvbUNhbGwvYWZ0ZXIyVHlwZVBhcmFtc0luT25lQ2FsbC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC92YXJUeXBlRnJvbUNhbGwvYWZ0ZXIyVHlwZVBhcmFtc0luT25lQ2FsbC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYyMmMzZTIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3ZhclR5cGVGcm9tQ2FsbC9hZnRlcjJUeXBlUGFyYW1zSW5PbmVDYWxsLmphdmEKQEAgLTAsMCArMSwxMSBAQAorLy8gIkNoYW5nZSAnbGlzdCcgdHlwZSB0byAnTG9zdDxqYXZhLmxhbmcuU3RyaW5nLGphdmEubGFuZy5JbnRlZ2VyPiciICJ0cnVlIgorcHVibGljIGNsYXNzIFRlc3QgeworICB2b2lkIGZvbygpICB7CisgICAgTG9zdDxTdHJpbmcsIEludGVnZXI+IGxpc3QgPSBuZXcgTG9zdDw+KCk7CisgICAgbGlzdC5hZGQoIiIsIG5ldyBJbnRlZ2VyKDQyKSk7CisgIH0KK30KKworY2xhc3MgTG9zdDxULCBLPiB7CisgIHZvaWQgYWRkKFQgbHQsIEsgdCl7fQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvdmFyVHlwZUZyb21DYWxsL2FmdGVyQW5vdGhlclBhcmFtVHlwZUNoYW5nZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC92YXJUeXBlRnJvbUNhbGwvYWZ0ZXJBbm90aGVyUGFyYW1UeXBlQ2hhbmdlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWI4NTkxNgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvdmFyVHlwZUZyb21DYWxsL2FmdGVyQW5vdGhlclBhcmFtVHlwZUNoYW5nZS5qYXZhCkBAIC0wLDAgKzEsMTEgQEAKKy8vICJDaGFuZ2UgJ2xpc3QnIHR5cGUgdG8gJ0xvc3Q8amF2YS5sYW5nLkludGVnZXI+JyIgInRydWUiCitwdWJsaWMgY2xhc3MgVGVzdCB7CisgIHZvaWQgZm9vKCkgIHsKKyAgICBMb3N0PEludGVnZXI+IGxpc3QgPSBuZXcgTG9zdDw+KCk7CisgICAgbGlzdC5hZGRkKG5ldyBMb3N0PEludGVnZXI+KCksIG5ldyBJbnRlZ2VyKDkpKTsKKyAgfQorfQorCitjbGFzcyBMb3N0PFQ+IHsKKyAgdm9pZCBhZGRkKExvc3Q8VD4gbHQsIFQgdCl7fQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvdmFyVHlwZUZyb21DYWxsL2FmdGVyQm94aW5nLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3ZhclR5cGVGcm9tQ2FsbC9hZnRlckJveGluZy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFiNDM4NTAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3ZhclR5cGVGcm9tQ2FsbC9hZnRlckJveGluZy5qYXZhCkBAIC0wLDAgKzEsMTEgQEAKKy8vICJDaGFuZ2UgJ2xpc3QnIHR5cGUgdG8gJ0xpc3Q8amF2YS5sYW5nLkludGVnZXI+JyIgInRydWUiCitwdWJsaWMgY2xhc3MgVGVzdCB7CisgIHZvaWQgZm9vKCkgIHsKKyAgICBMaXN0PEludGVnZXI+IGxpc3QgPSBuZXcgTGlzdDw+KCk7CisgICAgbGlzdC5hZGQoNDIpOworICB9Cit9CisKK2NsYXNzIExpc3Q8VD4geworICB2b2lkIGFkZChUIHQpe30KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3ZhclR5cGVGcm9tQ2FsbC9hZnRlckNvbXBvdW5kLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3ZhclR5cGVGcm9tQ2FsbC9hZnRlckNvbXBvdW5kLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTZlNmQ2MAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvdmFyVHlwZUZyb21DYWxsL2FmdGVyQ29tcG91bmQuamF2YQpAQCAtMCwwICsxLDExIEBACisvLyAiQ2hhbmdlICdsaXN0JyB0eXBlIHRvICdMb3N0PGphdmEubGFuZy5JbnRlZ2VyPiciICJ0cnVlIgorcHVibGljIGNsYXNzIFRlc3QgeworICB2b2lkIGZvbygpICB7CisgICAgTG9zdDxJbnRlZ2VyPiBsaXN0ID0gbmV3IExvc3Q8PigpOworICAgIGxpc3QuYWRkKG5ldyBMb3N0PEludGVnZXI+KCkpOworICB9Cit9CisKK2NsYXNzIExvc3Q8VD4geworICB2b2lkIGFkZChMb3N0PFQ+IHQpe30KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3ZhclR5cGVGcm9tQ2FsbC9hZnRlck1peGVkLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3ZhclR5cGVGcm9tQ2FsbC9hZnRlck1peGVkLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODAyYmFhZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvdmFyVHlwZUZyb21DYWxsL2FmdGVyTWl4ZWQuamF2YQpAQCAtMCwwICsxLDExIEBACisvLyAiQ2hhbmdlICdsaXN0JyB0eXBlIHRvICdMb3N0PGphdmEubGFuZy5JbnRlZ2VyPiciICJ0cnVlIgorcHVibGljIGNsYXNzIFRlc3QgeworICB2b2lkIGZvbygpICB7CisgICAgTG9zdDxJbnRlZ2VyPiBsaXN0ID0gbmV3IExvc3Q8PigpOworICAgIGxpc3QuYWRkKG5ldyBMb3N0PEludGVnZXI+KCksIG5ldyBJbnRlZ2VyKDQyKSk7CisgIH0KK30KKworY2xhc3MgTG9zdDxUPiB7CisgIHZvaWQgYWRkKExvc3Q8VD4gbHQsIFQgdCl7fQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvdmFyVHlwZUZyb21DYWxsL2JlZm9yZTEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvdmFyVHlwZUZyb21DYWxsL2JlZm9yZTEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMTRiODM0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC92YXJUeXBlRnJvbUNhbGwvYmVmb3JlMS5qYXZhCkBAIC0wLDAgKzEsMTEgQEAKKy8vICJDaGFuZ2UgJ2xpc3QnIHR5cGUgdG8gJ0xpc3Q8amF2YS5sYW5nLkludGVnZXI+JyIgInRydWUiCitwdWJsaWMgY2xhc3MgVGVzdCB7CisgIHZvaWQgZm9vKCkgIHsKKyAgICBMaXN0PFN0cmluZz4gbGlzdCA9IG5ldyBMaXN0PFN0cmluZz4oKTsKKyAgICBsaXN0LmFkZChuZXcgSW48Y2FyZXQ+dGVnZXIoMCkpOworICB9Cit9CisKK2NsYXNzIExpc3Q8VD4geworICB2b2lkIGFkZChUIHQpe30KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3ZhclR5cGVGcm9tQ2FsbC9iZWZvcmUyVHlwZVBhcmFtc0luT25lQ2FsbC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC92YXJUeXBlRnJvbUNhbGwvYmVmb3JlMlR5cGVQYXJhbXNJbk9uZUNhbGwuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZTI3ZWQzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC92YXJUeXBlRnJvbUNhbGwvYmVmb3JlMlR5cGVQYXJhbXNJbk9uZUNhbGwuamF2YQpAQCAtMCwwICsxLDExIEBACisvLyAiQ2hhbmdlICdsaXN0JyB0eXBlIHRvICdMb3N0PGphdmEubGFuZy5TdHJpbmcsamF2YS5sYW5nLkludGVnZXI+JyIgInRydWUiCitwdWJsaWMgY2xhc3MgVGVzdCB7CisgIHZvaWQgZm9vKCkgIHsKKyAgICBMb3N0PFN0cmluZywgU3RyaW5nPiBsaXN0ID0gbmV3IExvc3Q8U3RyaW5nLCBTdHJpbmc+KCk7CisgICAgbGlzdC5hZGQoIiIsIG5ldyBJbnQ8Y2FyZXQ+ZWdlcig0MikpOworICB9Cit9CisKK2NsYXNzIExvc3Q8VCwgSz4geworICB2b2lkIGFkZChUIGx0LCBLIHQpe30KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3ZhclR5cGVGcm9tQ2FsbC9iZWZvcmVBbm90aGVyUGFyYW1UeXBlQ2hhbmdlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3ZhclR5cGVGcm9tQ2FsbC9iZWZvcmVBbm90aGVyUGFyYW1UeXBlQ2hhbmdlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjFlODY4NAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvdmFyVHlwZUZyb21DYWxsL2JlZm9yZUFub3RoZXJQYXJhbVR5cGVDaGFuZ2UuamF2YQpAQCAtMCwwICsxLDExIEBACisvLyAiQ2hhbmdlICdsaXN0JyB0eXBlIHRvICdMb3N0PGphdmEubGFuZy5JbnRlZ2VyPiciICJ0cnVlIgorcHVibGljIGNsYXNzIFRlc3QgeworICB2b2lkIGZvbygpICB7CisgICAgTG9zdDxTdHJpbmc+IGxpc3QgPSBuZXcgTG9zdDxTdHJpbmc+KCk7CisgICAgbGlzdC5hZGRkKG5ldyBMb3N0PEludGVnZXI+KCksIG5ldyBJbnQ8Y2FyZXQ+ZWdlcig5KSk7CisgIH0KK30KKworY2xhc3MgTG9zdDxUPiB7CisgIHZvaWQgYWRkZChMb3N0PFQ+IGx0LCBUIHQpe30KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3ZhclR5cGVGcm9tQ2FsbC9iZWZvcmVCb3hpbmcuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvdmFyVHlwZUZyb21DYWxsL2JlZm9yZUJveGluZy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFkMDJiOTEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3ZhclR5cGVGcm9tQ2FsbC9iZWZvcmVCb3hpbmcuamF2YQpAQCAtMCwwICsxLDExIEBACisvLyAiQ2hhbmdlICdsaXN0JyB0eXBlIHRvICdMaXN0PGphdmEubGFuZy5JbnRlZ2VyPiciICJ0cnVlIgorcHVibGljIGNsYXNzIFRlc3QgeworICB2b2lkIGZvbygpICB7CisgICAgTGlzdDxTdHJpbmc+IGxpc3QgPSBuZXcgTGlzdDxTdHJpbmc+KCk7CisgICAgbGlzdC5hZGQoNDxjYXJldD4yKTsKKyAgfQorfQorCitjbGFzcyBMaXN0PFQ+IHsKKyAgdm9pZCBhZGQoVCB0KXt9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC92YXJUeXBlRnJvbUNhbGwvYmVmb3JlQ2hhbmdlU2lnbmF0dXJlQXZhaWxhYmxlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3ZhclR5cGVGcm9tQ2FsbC9iZWZvcmVDaGFuZ2VTaWduYXR1cmVBdmFpbGFibGUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZjVlYzNiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC92YXJUeXBlRnJvbUNhbGwvYmVmb3JlQ2hhbmdlU2lnbmF0dXJlQXZhaWxhYmxlLmphdmEKQEAgLTAsMCArMSwxMSBAQAorLy8gIkNoYW5nZSAndmFyJyB0eXBlIHRvICdGb28iICJmYWxzZSIKK3B1YmxpYyBjbGFzcyBUZXN0IHsKKyAgdm9pZCBmb28oKSAgeworICAgIGZpbmFsIEZvbyB2YXIgPSBuZXcgRm9vKCk7CisgICAgdmFyLmZvbygiIiwgNjxjYXJldD42KTsKKyAgfQorfQorCitjbGFzcyBGb28geworICB2b2lkIGZvbyhTdHJpbmcgc3RyLCBTdHJpbmcgc3RyMSl7fQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvdmFyVHlwZUZyb21DYWxsL2JlZm9yZUNvbXBvdW5kLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3ZhclR5cGVGcm9tQ2FsbC9iZWZvcmVDb21wb3VuZC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFhMmViMGMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3ZhclR5cGVGcm9tQ2FsbC9iZWZvcmVDb21wb3VuZC5qYXZhCkBAIC0wLDAgKzEsMTEgQEAKKy8vICJDaGFuZ2UgJ2xpc3QnIHR5cGUgdG8gJ0xvc3Q8amF2YS5sYW5nLkludGVnZXI+JyIgInRydWUiCitwdWJsaWMgY2xhc3MgVGVzdCB7CisgIHZvaWQgZm9vKCkgIHsKKyAgICBMb3N0PFN0cmluZz4gbGlzdCA9IG5ldyBMb3N0PFN0cmluZz4oKTsKKyAgICBsaXN0LmFkZChuZXcgTG9zdDxJbnRlZzxjYXJldD5lcj4oKSk7CisgIH0KK30KKworY2xhc3MgTG9zdDxUPiB7CisgIHZvaWQgYWRkKExvc3Q8VD4gdCl7fQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvdmFyVHlwZUZyb21DYWxsL2JlZm9yZU1peGVkLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3ZhclR5cGVGcm9tQ2FsbC9iZWZvcmVNaXhlZC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIwZDZjYWIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3ZhclR5cGVGcm9tQ2FsbC9iZWZvcmVNaXhlZC5qYXZhCkBAIC0wLDAgKzEsMTEgQEAKKy8vICJDaGFuZ2UgJ2xpc3QnIHR5cGUgdG8gJ0xvc3Q8amF2YS5sYW5nLkludGVnZXI+JyIgInRydWUiCitwdWJsaWMgY2xhc3MgVGVzdCB7CisgIHZvaWQgZm9vKCkgIHsKKyAgICBMb3N0PFN0cmluZz4gbGlzdCA9IG5ldyBMb3N0PFN0cmluZz4oKTsKKyAgICBsaXN0LmFkZChuZXcgTG9zdDxJbnRlZzxjYXJldD5lcj4oKSwgbmV3IEludGVnZXIoNDIpKTsKKyAgfQorfQorCitjbGFzcyBMb3N0PFQ+IHsKKyAgdm9pZCBhZGQoTG9zdDxUPiBsdCwgVCB0KXt9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC92YXJpYWJsZUFycmF5VHlwZS9hZnRlcjEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvdmFyaWFibGVBcnJheVR5cGUvYWZ0ZXIxLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjdmN2U2MwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvdmFyaWFibGVBcnJheVR5cGUvYWZ0ZXIxLmphdmEKQEAgLTAsMCArMSw2IEBACisvLyAiQ2hhbmdlICd0ZXN0JyB0eXBlIHRvICdpbnRbXVtdJyIgInRydWUiCitjbGFzcyBBIHsKKyAgICB2b2lkIG0oKSB7CisgICAgICAgIGZpbmFsIGludFtdW10gdGVzdCA9IHtuZXcgaW50PGNhcmV0PltdezF9fTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC92YXJpYWJsZUFycmF5VHlwZS9hZnRlcjEwLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3ZhcmlhYmxlQXJyYXlUeXBlL2FmdGVyMTAuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZTgxMzZmYgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvdmFyaWFibGVBcnJheVR5cGUvYWZ0ZXIxMC5qYXZhCkBAIC0wLDAgKzEsNiBAQAorLy8gIkNoYW5nZSAnbmV3IExvbmdbXScgdG8gJ25ldyBjaGFyW11bXSciICJ0cnVlIgorY2xhc3MgQSB7CisgICAgdm9pZCBtKCkgeworICAgICAgICBmaW5hbCBjaGFyW11bXSB0ZXN0ID0gbmV3IGNoYXJbXVtdezxjYXJldD57J2EnfSwgeycxJ319OworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3ZhcmlhYmxlQXJyYXlUeXBlL2FmdGVyMi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC92YXJpYWJsZUFycmF5VHlwZS9hZnRlcjIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xY2FkYjYxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC92YXJpYWJsZUFycmF5VHlwZS9hZnRlcjIuamF2YQpAQCAtMCwwICsxLDYgQEAKKy8vICJDaGFuZ2UgJ3Rlc3QnIHR5cGUgdG8gJ2ludFtdW10nIiAidHJ1ZSIKK2NsYXNzIEEgeworICAgIHZvaWQgbSgpIHsKKyAgICAgICAgaW50W11bXSB0ZXN0ID0gbmV3IGludFtdW117PGNhcmV0PnsxfSwgezJ9fTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC92YXJpYWJsZUFycmF5VHlwZS9hZnRlcjMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvdmFyaWFibGVBcnJheVR5cGUvYWZ0ZXIzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWNhZGI2MQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvdmFyaWFibGVBcnJheVR5cGUvYWZ0ZXIzLmphdmEKQEAgLTAsMCArMSw2IEBACisvLyAiQ2hhbmdlICd0ZXN0JyB0eXBlIHRvICdpbnRbXVtdJyIgInRydWUiCitjbGFzcyBBIHsKKyAgICB2b2lkIG0oKSB7CisgICAgICAgIGludFtdW10gdGVzdCA9IG5ldyBpbnRbXVtdezxjYXJldD57MX0sIHsyfX07CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvdmFyaWFibGVBcnJheVR5cGUvYWZ0ZXI0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3ZhcmlhYmxlQXJyYXlUeXBlL2FmdGVyNC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg5ZGRmOTQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3ZhcmlhYmxlQXJyYXlUeXBlL2FmdGVyNC5qYXZhCkBAIC0wLDAgKzEsNiBAQAorLy8gIkNoYW5nZSAndGVzdCcgdHlwZSB0byAnaW50W11bXSciICJ0cnVlIgorY2xhc3MgQSB7CisgICAgdm9pZCBtKCkgeworICAgICAgICBpbnRbXVtdIHRlc3QgPSBuZXcgaW50W11bXXt7PGNhcmV0PjF9LCB7Mn19OworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3ZhcmlhYmxlQXJyYXlUeXBlL2FmdGVyNS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC92YXJpYWJsZUFycmF5VHlwZS9hZnRlcjUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ODkzYTkxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC92YXJpYWJsZUFycmF5VHlwZS9hZnRlcjUuamF2YQpAQCAtMCwwICsxLDYgQEAKKy8vICJDaGFuZ2UgJ3Rlc3QnIHR5cGUgdG8gJ2NoYXJbXSciICJ0cnVlIgorY2xhc3MgQSB7CisgICAgdm9pZCBtKCkgeworICAgICAgICBmaW5hbCBjaGFyW10gdGVzdCA9IG5ldyBjaGFyW117PGNhcmV0PidhJ307CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvdmFyaWFibGVBcnJheVR5cGUvYWZ0ZXI2LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3ZhcmlhYmxlQXJyYXlUeXBlL2FmdGVyNi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBkZWJlYWQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3ZhcmlhYmxlQXJyYXlUeXBlL2FmdGVyNi5qYXZhCkBAIC0wLDAgKzEsNiBAQAorLy8gIkNoYW5nZSAndGVzdCcgdHlwZSB0byAnY2hhcltdJyIgInRydWUiCitjbGFzcyBBIHsKKyAgICB2b2lkIG0oKSB7CisgICAgICAgIGZpbmFsIGNoYXJbXSB0ZXN0ID0gezxjYXJldD4nYSd9OworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3ZhcmlhYmxlQXJyYXlUeXBlL2FmdGVyOS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC92YXJpYWJsZUFycmF5VHlwZS9hZnRlcjkuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNzRhNTE4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC92YXJpYWJsZUFycmF5VHlwZS9hZnRlcjkuamF2YQpAQCAtMCwwICsxLDEwIEBACisvLyAiQ2hhbmdlICdteUFycicgdHlwZSB0byAnY2hhcltdW10nIiAidHJ1ZSIKK2NsYXNzIEEgZXh0ZW5kcyBCIHsKKyAgICB2b2lkIG0oKSB7CisgICAgICAgIG15QXJyID0gbmV3IGNoYXJbXVtde3s8Y2FyZXQ+J2EnfX07CisgICAgfQorfQorCitjbGFzcyBCIHsKKyAgcHJvdGVjdGVkIGNoYXJbXVtdIG15QXJyOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvdmFyaWFibGVBcnJheVR5cGUvYmVmb3JlMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC92YXJpYWJsZUFycmF5VHlwZS9iZWZvcmUxLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzRjYzQ5MgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvdmFyaWFibGVBcnJheVR5cGUvYmVmb3JlMS5qYXZhCkBAIC0wLDAgKzEsNiBAQAorLy8gIkNoYW5nZSAndGVzdCcgdHlwZSB0byAnaW50W11bXSciICJ0cnVlIgorY2xhc3MgQSB7CisgICAgdm9pZCBtKCkgeworICAgICAgICBmaW5hbCBMb25nW11bXSB0ZXN0ID0ge25ldyBpbnQ8Y2FyZXQ+W117MX19OworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3ZhcmlhYmxlQXJyYXlUeXBlL2JlZm9yZTEwLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3ZhcmlhYmxlQXJyYXlUeXBlL2JlZm9yZTEwLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjM1NjFhNgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvdmFyaWFibGVBcnJheVR5cGUvYmVmb3JlMTAuamF2YQpAQCAtMCwwICsxLDYgQEAKKy8vICJDaGFuZ2UgJ25ldyBMb25nW10nIHRvICduZXcgY2hhcltdW10nIiAidHJ1ZSIKK2NsYXNzIEEgeworICAgIHZvaWQgbSgpIHsKKyAgICAgICAgZmluYWwgY2hhcltdW10gdGVzdCA9IG5ldyBMb25nW117PGNhcmV0PnsnYSd9LCB7JzEnfX07CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvdmFyaWFibGVBcnJheVR5cGUvYmVmb3JlMi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC92YXJpYWJsZUFycmF5VHlwZS9iZWZvcmUyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmU5ZTI4NwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvdmFyaWFibGVBcnJheVR5cGUvYmVmb3JlMi5qYXZhCkBAIC0wLDAgKzEsNiBAQAorLy8gIkNoYW5nZSAndGVzdCcgdHlwZSB0byAnaW50W11bXSciICJ0cnVlIgorY2xhc3MgQSB7CisgICAgdm9pZCBtKCkgeworICAgICAgICBMb25nW11bXVtdIHRlc3QgPSBuZXcgTG9uZ1tdezxjYXJldD57MX0sIHsyfX07CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvdmFyaWFibGVBcnJheVR5cGUvYmVmb3JlMy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC92YXJpYWJsZUFycmF5VHlwZS9iZWZvcmUzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzVlNDVjZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvdmFyaWFibGVBcnJheVR5cGUvYmVmb3JlMy5qYXZhCkBAIC0wLDAgKzEsNiBAQAorLy8gIkNoYW5nZSAndGVzdCcgdHlwZSB0byAnaW50W11bXSciICJ0cnVlIgorY2xhc3MgQSB7CisgICAgdm9pZCBtKCkgeworICAgICAgICBMb25nW10gdGVzdCA9IG5ldyBMb25nW117PGNhcmV0PnsxfSwgezJ9fTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC92YXJpYWJsZUFycmF5VHlwZS9iZWZvcmU0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3ZhcmlhYmxlQXJyYXlUeXBlL2JlZm9yZTQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMDc4MDBlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC92YXJpYWJsZUFycmF5VHlwZS9iZWZvcmU0LmphdmEKQEAgLTAsMCArMSw2IEBACisvLyAiQ2hhbmdlICd0ZXN0JyB0eXBlIHRvICdpbnRbXVtdJyIgInRydWUiCitjbGFzcyBBIHsKKyAgICB2b2lkIG0oKSB7CisgICAgICAgIExvbmcgdGVzdCA9IG5ldyBMb25nW11bXVtdW117ezxjYXJldD4xfSwgezJ9fTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC92YXJpYWJsZUFycmF5VHlwZS9iZWZvcmU1LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3ZhcmlhYmxlQXJyYXlUeXBlL2JlZm9yZTUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMDQ4YzIyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC92YXJpYWJsZUFycmF5VHlwZS9iZWZvcmU1LmphdmEKQEAgLTAsMCArMSw2IEBACisvLyAiQ2hhbmdlICd0ZXN0JyB0eXBlIHRvICdjaGFyW10nIiAidHJ1ZSIKK2NsYXNzIEEgeworICAgIHZvaWQgbSgpIHsKKyAgICAgICAgZmluYWwgTG9uZ1tdIHRlc3QgPSBuZXcgTG9uZ1tdezxjYXJldD4nYSd9OworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3ZhcmlhYmxlQXJyYXlUeXBlL2JlZm9yZTYuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvdmFyaWFibGVBcnJheVR5cGUvYmVmb3JlNi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJlNWI5N2YKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3ZhcmlhYmxlQXJyYXlUeXBlL2JlZm9yZTYuamF2YQpAQCAtMCwwICsxLDYgQEAKKy8vICJDaGFuZ2UgJ3Rlc3QnIHR5cGUgdG8gJ2NoYXJbXSciICJ0cnVlIgorY2xhc3MgQSB7CisgICAgdm9pZCBtKCkgeworICAgICAgICBmaW5hbCBMb25nW10gdGVzdCA9IHs8Y2FyZXQ+J2EnfTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC92YXJpYWJsZUFycmF5VHlwZS9iZWZvcmU3LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3ZhcmlhYmxlQXJyYXlUeXBlL2JlZm9yZTcuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NjlkODcwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC92YXJpYWJsZUFycmF5VHlwZS9iZWZvcmU3LmphdmEKQEAgLTAsMCArMSw2IEBACisvLyAiQ2hhbmdlICd0ZXN0JyB0eXBlIHRvICdjaGFyW10nIiAiZmFsc2UiCitjbGFzcyBBIHsKKyAgICB2b2lkIG0oKSB7CisgICAgICAgIGZpbmFsIExvbmdbXSB0ZXN0ID0gezxjYXJldD4nYScsIDF9OworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3ZhcmlhYmxlQXJyYXlUeXBlL2JlZm9yZTguamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvdmFyaWFibGVBcnJheVR5cGUvYmVmb3JlOC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBkNjRlZTUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3ZhcmlhYmxlQXJyYXlUeXBlL2JlZm9yZTguamF2YQpAQCAtMCwwICsxLDYgQEAKKy8vICJDaGFuZ2UgJ3Rlc3QnIHR5cGUgdG8gJ2NoYXJbXVtdJyIgImZhbHNlIgorY2xhc3MgQSB7CisgICAgdm9pZCBtKCkgeworICAgICAgICBmaW5hbCBMb25nW10gdGVzdCA9IHs8Y2FyZXQ+eydhJ30sIHsxfX07CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvdmFyaWFibGVBcnJheVR5cGUvYmVmb3JlOS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC92YXJpYWJsZUFycmF5VHlwZS9iZWZvcmU5LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGU2MzY2NgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvdmFyaWFibGVBcnJheVR5cGUvYmVmb3JlOS5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKKy8vICJDaGFuZ2UgJ215QXJyJyB0eXBlIHRvICdjaGFyW11bXSciICJ0cnVlIgorY2xhc3MgQSBleHRlbmRzIEIgeworICAgIHZvaWQgbSgpIHsKKyAgICAgICAgbXlBcnIgPSBuZXcgU3RyaW5nW11bXXt7PGNhcmV0PidhJ319OworICAgIH0KK30KKworY2xhc3MgQiB7CisgIHByb3RlY3RlZCBTdHJpbmdbXVtdIG15QXJyOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvdmFyaWFibGVQYXJhbWV0ZXJpemVkVHlwZS9hZnRlcjEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvdmFyaWFibGVQYXJhbWV0ZXJpemVkVHlwZS9hZnRlcjEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYTkxMGEzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC92YXJpYWJsZVBhcmFtZXRlcml6ZWRUeXBlL2FmdGVyMS5qYXZhCkBAIC0wLDAgKzEsMTkgQEAKKy8vICJDaGFuZ2UgJ2knIHR5cGUgdG8gJ2EuaS5paTxqYXZhLmxhbmcuU3RyaW5nPiciICJ0cnVlIgorY2xhc3MgYQoreworICBjbGFzcyBpIHsKKyAgICBjbGFzcyBpaTxFPiB7CisKKyAgICB9CisgIH0KKyAgY2xhc3MgaTIgeworICAgIGNsYXNzIGlpIHsKKworICAgIH0KKyAgfQorCisgICBwdWJsaWMgdm9pZCBmb28oKQorICAgeworICAgICAgaS5paTw8Y2FyZXQ+U3RyaW5nPiBpOworICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC92YXJpYWJsZVBhcmFtZXRlcml6ZWRUeXBlL2JlZm9yZTEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvdmFyaWFibGVQYXJhbWV0ZXJpemVkVHlwZS9iZWZvcmUxLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGVmYzY1NgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvdmFyaWFibGVQYXJhbWV0ZXJpemVkVHlwZS9iZWZvcmUxLmphdmEKQEAgLTAsMCArMSwxOSBAQAorLy8gIkNoYW5nZSAnaScgdHlwZSB0byAnYS5pLmlpPGphdmEubGFuZy5TdHJpbmc+JyIgInRydWUiCitjbGFzcyBhCit7CisgIGNsYXNzIGkgeworICAgIGNsYXNzIGlpPEU+IHsKKworICAgIH0KKyAgfQorICBjbGFzcyBpMiB7CisgICAgY2xhc3MgaWkgeworCisgICAgfQorICB9CisKKyAgIHB1YmxpYyB2b2lkIGZvbygpCisgICB7CisgICAgICBpMi5paTw8Y2FyZXQ+U3RyaW5nPiBpOworICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC92YXJpYWJsZVBhcmFtZXRlcml6ZWRUeXBlL2JlZm9yZTIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvdmFyaWFibGVQYXJhbWV0ZXJpemVkVHlwZS9iZWZvcmUyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODhjYWQyZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvdmFyaWFibGVQYXJhbWV0ZXJpemVkVHlwZS9iZWZvcmUyLmphdmEKQEAgLTAsMCArMSwxOCBAQAorLy8gIkNoYW5nZSAncycgdHlwZSB0byAnTy5mPGphdmEubGFuZy5TdHJpbmc+JyIgImZhbHNlIgorCitjbGFzcyBPIHsKKworICAgIGYgZigpIHsKKyAgICAgICAgcmV0dXJuIG51bGw7CisgICAgfQorCisgICAgY2xhc3MgZiA8VD4geworICAgIH0KKworICAgIHZvaWQgZygpIHsKKworICAgICAgICBmaW5hbCBmIHMgPSB0aGlzLjw8Y2FyZXQ+U3RyaW5nPmYoKTsKKworICAgIH0KKworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC92YXJpYWJsZVR5cGUvYWZ0ZXIxLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3ZhcmlhYmxlVHlwZS9hZnRlcjEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNTg4YmY3YwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvdmFyaWFibGVUeXBlL2FmdGVyMS5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKKy8vICJDaGFuZ2UgJ2knIHR5cGUgdG8gJ2RvdWJsZSciICJ0cnVlIgoraW1wb3J0IGphdmEuaW8uKjsKKworY2xhc3MgYSB7Cisgdm9pZCBmKCkgeworICAgZG91YmxlIGk7CisgICA8Y2FyZXQ+aSA9IDYuNjsKKyB9Cit9CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvdmFyaWFibGVUeXBlL2FmdGVyMi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC92YXJpYWJsZVR5cGUvYWZ0ZXIyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2VlMDMzZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvdmFyaWFibGVUeXBlL2FmdGVyMi5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKKy8vICJDaGFuZ2UgJ2knIHR5cGUgdG8gJ2phdmEubGFuZy5TdHJpbmcnIiAidHJ1ZSIKK2ltcG9ydCBqYXZhLmlvLio7CisKK2NsYXNzIGEgeworIHZvaWQgZigpIHsKKyAgIFN0cmluZyBpOworICAgPGNhcmV0PmkgPSAiZGQiOworIH0KK30KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC92YXJpYWJsZVR5cGUvYWZ0ZXIzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3ZhcmlhYmxlVHlwZS9hZnRlcjMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MWQ1MmMxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC92YXJpYWJsZVR5cGUvYWZ0ZXIzLmphdmEKQEAgLTAsMCArMSw5IEBACisvLyAiQ2hhbmdlICdpJyB0eXBlIHRvICdjaGFyJyIgInRydWUiCitpbXBvcnQgamF2YS5pby4qOworCitjbGFzcyBhIHsKKyB2b2lkIGYoKSB7CisgICA8Y2FyZXQ+Y2hhciBpID0gJ2QnOworIH0KK30KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC92YXJpYWJsZVR5cGUvYWZ0ZXI0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3ZhcmlhYmxlVHlwZS9hZnRlcjQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kN2I0MTYzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC92YXJpYWJsZVR5cGUvYWZ0ZXI0LmphdmEKQEAgLTAsMCArMSw4IEBACisvLyAiQ2hhbmdlICdzJyB0eXBlIHRvICdqYXZhLmxhbmcuUnVubmFibGUnIiAidHJ1ZSIKKworY2xhc3MgYSB7CisgICAgUnVubmFibGUgcyA9IG5ldyBSdW5uYWJsZSgpIHsKKyAgICAgICAgcHVibGljIHZvaWQgcnVuKCkgeyB9CisgICAgfTsKK30KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC92YXJpYWJsZVR5cGUvYWZ0ZXI1LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3ZhcmlhYmxlVHlwZS9hZnRlcjUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YTdmODQxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC92YXJpYWJsZVR5cGUvYWZ0ZXI1LmphdmEKQEAgLTAsMCArMSwxMiBAQAorLy8gIkNoYW5nZSAnaScgdHlwZSB0byAnamF2YS5sYW5nLlN0cmluZyciICJ0cnVlIgorCitjbGFzcyBCYXNlIHsKKyB2b2lkIGZvbyhTdHJpbmcgaSkge30KK30KKworY2xhc3MgRXggZXh0ZW5kcyBCYXNlIHsKKyBAT3ZlcnJpZGUKKyB2b2lkIGZvbyhTdHJpbmcgaSkgeworICAgaSA9ICJhYmMiOyAvLyB3aGVuIEkgaW52b2tlICJDaGFuZ2UgdHlwZSBvZiAnaScgdG8gJ1N0cmluZyciLCBiYXNlIG1ldGhvZCBpcyBpZ25vcmVkIHNvIG1ldGhvZCBvdmVycmlkaW5nIGlzIGxvc3QKKyB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC92YXJpYWJsZVR5cGUvYWZ0ZXJJbkNhbGwuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvdmFyaWFibGVUeXBlL2FmdGVySW5DYWxsLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzViMjkwNAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvdmFyaWFibGVUeXBlL2FmdGVySW5DYWxsLmphdmEKQEAgLTAsMCArMSw4IEBACisvLyAiQ2hhbmdlICdpJyB0eXBlIHRvICdqYXZhLmxhbmcuU3RyaW5nJyIgInRydWUiCisKK2NsYXNzIEV4eworIHZvaWQgZm9vKFN0cmluZyBpKSB7CisgICBiYXIoaSk7CisgfQorIHZvaWQgYmFyKFN0cmluZyBzKSB7fQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvdmFyaWFibGVUeXBlL2JlZm9yZTEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvdmFyaWFibGVUeXBlL2JlZm9yZTEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZTg3NDJiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC92YXJpYWJsZVR5cGUvYmVmb3JlMS5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKKy8vICJDaGFuZ2UgJ2knIHR5cGUgdG8gJ2RvdWJsZSciICJ0cnVlIgoraW1wb3J0IGphdmEuaW8uKjsKKworY2xhc3MgYSB7Cisgdm9pZCBmKCkgeworICAgaW50IGk7CisgICA8Y2FyZXQ+aSA9IDYuNjsKKyB9Cit9CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvdmFyaWFibGVUeXBlL2JlZm9yZTIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvdmFyaWFibGVUeXBlL2JlZm9yZTIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YjgwZGE2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC92YXJpYWJsZVR5cGUvYmVmb3JlMi5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKKy8vICJDaGFuZ2UgJ2knIHR5cGUgdG8gJ2phdmEubGFuZy5TdHJpbmcnIiAidHJ1ZSIKK2ltcG9ydCBqYXZhLmlvLio7CisKK2NsYXNzIGEgeworIHZvaWQgZigpIHsKKyAgIGludCBpOworICAgPGNhcmV0PmkgPSAiZGQiOworIH0KK30KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC92YXJpYWJsZVR5cGUvYmVmb3JlMy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC92YXJpYWJsZVR5cGUvYmVmb3JlMy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY5NGFkOWEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3ZhcmlhYmxlVHlwZS9iZWZvcmUzLmphdmEKQEAgLTAsMCArMSw5IEBACisvLyAiQ2hhbmdlICdpJyB0eXBlIHRvICdjaGFyJyIgInRydWUiCitpbXBvcnQgamF2YS5pby4qOworCitjbGFzcyBhIHsKKyB2b2lkIGYoKSB7CisgICA8Y2FyZXQ+U3RyaW5nIGkgPSAnZCc7CisgfQorfQorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3ZhcmlhYmxlVHlwZS9iZWZvcmU0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3ZhcmlhYmxlVHlwZS9iZWZvcmU0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjI2NWU1NgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvdmFyaWFibGVUeXBlL2JlZm9yZTQuamF2YQpAQCAtMCwwICsxLDggQEAKKy8vICJDaGFuZ2UgJ3MnIHR5cGUgdG8gJ2phdmEubGFuZy5SdW5uYWJsZSciICJ0cnVlIgorCitjbGFzcyBhIHsKKyAgICBTdHJpbmcgcyA9IDxjYXJldD5uZXcgUnVubmFibGUoKSB7CisgICAgICAgIHB1YmxpYyB2b2lkIHJ1bigpIHsgfQorICAgIH07Cit9CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvdmFyaWFibGVUeXBlL2JlZm9yZTUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvdmFyaWFibGVUeXBlL2JlZm9yZTUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZWFkNzM4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC92YXJpYWJsZVR5cGUvYmVmb3JlNS5qYXZhCkBAIC0wLDAgKzEsMTIgQEAKKy8vICJDaGFuZ2UgJ2knIHR5cGUgdG8gJ2phdmEubGFuZy5TdHJpbmcnIiAidHJ1ZSIKKworY2xhc3MgQmFzZSB7Cisgdm9pZCBmb28oaW50IGkpIHt9Cit9CisKK2NsYXNzIEV4IGV4dGVuZHMgQmFzZSB7CisgQE92ZXJyaWRlCisgdm9pZCBmb28oaW50IGkpIHsKKyAgIGkgPSA8Y2FyZXQ+ImFiYyI7IC8vIHdoZW4gSSBpbnZva2UgIkNoYW5nZSB0eXBlIG9mICdpJyB0byAnU3RyaW5nJyIsIGJhc2UgbWV0aG9kIGlzIGlnbm9yZWQgc28gbWV0aG9kIG92ZXJyaWRpbmcgaXMgbG9zdAorIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3ZhcmlhYmxlVHlwZS9iZWZvcmVJbkNhbGwuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvdmFyaWFibGVUeXBlL2JlZm9yZUluQ2FsbC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkyYTMyYzkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3ZhcmlhYmxlVHlwZS9iZWZvcmVJbkNhbGwuamF2YQpAQCAtMCwwICsxLDggQEAKKy8vICJDaGFuZ2UgJ2knIHR5cGUgdG8gJ2phdmEubGFuZy5TdHJpbmcnIiAidHJ1ZSIKKworY2xhc3MgRXh7Cisgdm9pZCBmb28oaW50IGkpIHsKKyAgIGJhcig8Y2FyZXQ+aSk7CisgfQorIHZvaWQgYmFyKFN0cmluZyBzKSB7fQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvdmFyaWFibGVUeXBlL2JlZm9yZUluTGliQ2FsbC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC92YXJpYWJsZVR5cGUvYmVmb3JlSW5MaWJDYWxsLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzM3YWY4YQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvdmFyaWFibGVUeXBlL2JlZm9yZUluTGliQ2FsbC5qYXZhCkBAIC0wLDAgKzEsOSBAQAorLy8gIkNoYW5nZSAnaScgdHlwZSB0byAnbG9uZyciICJmYWxzZSIKKworY2xhc3MgTSBleHRlbmRzIFRocmVhZCB7CisgIEBPdmVycmlkZQorICBwdWJsaWMgYm9vbGVhbiBlcXVhbHMoT2JqZWN0IG9iaikgeworICAgIFRocmVhZC5zbGVlcCg8Y2FyZXQ+b2JqKTsKKyAgICByZXR1cm4gc3VwZXIuZXF1YWxzKG9iaik7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3dyYXBFeHByZXNzaW9uL2FmdGVyUGFyc2VBc3NpZ25tZW50LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3dyYXBFeHByZXNzaW9uL2FmdGVyUGFyc2VBc3NpZ25tZW50LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWEyMGI4NwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvd3JhcEV4cHJlc3Npb24vYWZ0ZXJQYXJzZUFzc2lnbm1lbnQuamF2YQpAQCAtMCwwICsxLDQgQEAKKy8vICJXcmFwIHVzaW5nICdMb25nLnBhcnNlTG9uZyciICJ0cnVlIgorcHVibGljIGNsYXNzIFRlc3QgeworICBwcml2YXRlIGxvbmcgbG8gPSBMb25nLnBhcnNlTG9uZygiNDIiKTsKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvd3JhcEV4cHJlc3Npb24vYWZ0ZXJQYXJzZUluQ2FsbC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC93cmFwRXhwcmVzc2lvbi9hZnRlclBhcnNlSW5DYWxsLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWNlMzJiMwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvd3JhcEV4cHJlc3Npb24vYWZ0ZXJQYXJzZUluQ2FsbC5qYXZhCkBAIC0wLDAgKzEsOCBAQAorLy8gIldyYXAgdXNpbmcgJ0xvbmcucGFyc2VMb25nJyIgInRydWUiCitwdWJsaWMgY2xhc3MgVGVzdCB7CisgIHZvaWQgYmEoKSB7CisgICAgZmEoTG9uZy5wYXJzZUxvbmcoIjQyIikpOworICB9CisKKyAgdm9pZCBmYShsb25nIGwpe30KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvd3JhcEV4cHJlc3Npb24vYWZ0ZXJQYXJzZUluVmFyYXJnc0NhbGwuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvd3JhcEV4cHJlc3Npb24vYWZ0ZXJQYXJzZUluVmFyYXJnc0NhbGwuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMTcwNjEzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC93cmFwRXhwcmVzc2lvbi9hZnRlclBhcnNlSW5WYXJhcmdzQ2FsbC5qYXZhCkBAIC0wLDAgKzEsOCBAQAorLy8gIldyYXAgdXNpbmcgJ0xvbmcucGFyc2VMb25nJyIgInRydWUiCitwdWJsaWMgY2xhc3MgVGVzdCB7CisgIHZvaWQgYmEobG9uZyBsKSB7CisgICAgZmEobCwgTG9uZy5wYXJzZUxvbmcoIjQyIikpOworICB9CisKKyAgdm9pZCBmYShsb25nLi4uIGwpe30KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvd3JhcEV4cHJlc3Npb24vYWZ0ZXJWYWx1ZW9mQXNzaWdubWVudC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC93cmFwRXhwcmVzc2lvbi9hZnRlclZhbHVlb2ZBc3NpZ25tZW50LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWFjMDJhZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvd3JhcEV4cHJlc3Npb24vYWZ0ZXJWYWx1ZW9mQXNzaWdubWVudC5qYXZhCkBAIC0wLDAgKzEsNCBAQAorLy8gIldyYXAgdXNpbmcgJ0xvbmcudmFsdWVPZiciICJ0cnVlIgorcHVibGljIGNsYXNzIFRlc3QgeworICBwcml2YXRlIExvbmcgbG8gPSBMb25nLnZhbHVlT2YoIjQyIik7Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3dyYXBFeHByZXNzaW9uL2FmdGVyVmFsdWVvZkNhbGwuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvd3JhcEV4cHJlc3Npb24vYWZ0ZXJWYWx1ZW9mQ2FsbC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE5MzMzYWMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3dyYXBFeHByZXNzaW9uL2FmdGVyVmFsdWVvZkNhbGwuamF2YQpAQCAtMCwwICsxLDggQEAKKy8vICJXcmFwIHVzaW5nICdMb25nLnZhbHVlT2YnIiAidHJ1ZSIKK3B1YmxpYyBjbGFzcyBUZXN0IHsKKyAgdm9pZCBiYSgpIHsKKyAgICBmYShMb25nLnZhbHVlT2YoIjQyIikpOworICB9CisKKyAgdm9pZCBmYShMb25nIGwpe30KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvd3JhcEV4cHJlc3Npb24vYWZ0ZXJWYWx1ZW9mSW5WYXJhcmdzQ2FsbC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC93cmFwRXhwcmVzc2lvbi9hZnRlclZhbHVlb2ZJblZhcmFyZ3NDYWxsLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTFlNjFiMQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvd3JhcEV4cHJlc3Npb24vYWZ0ZXJWYWx1ZW9mSW5WYXJhcmdzQ2FsbC5qYXZhCkBAIC0wLDAgKzEsOCBAQAorLy8gIldyYXAgdXNpbmcgJ0xvbmcudmFsdWVPZiciICJ0cnVlIgorcHVibGljIGNsYXNzIFRlc3QgeworICB2b2lkIGJhKExvbmcgbCkgeworICAgIGZhKGwsIExvbmcudmFsdWVPZigiNDIiKSk7CisgIH0KKworICB2b2lkIGZhKExvbmcuLi4gbCl7fQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC93cmFwRXhwcmVzc2lvbi9hZnRlclZhbHVlb2ZWYXJhcmdzQ2FsbC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC93cmFwRXhwcmVzc2lvbi9hZnRlclZhbHVlb2ZWYXJhcmdzQ2FsbC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQyOTFlNDMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3dyYXBFeHByZXNzaW9uL2FmdGVyVmFsdWVvZlZhcmFyZ3NDYWxsLmphdmEKQEAgLTAsMCArMSw4IEBACisvLyAiV3JhcCB1c2luZyAnTG9uZy52YWx1ZU9mJyIgInRydWUiCitwdWJsaWMgY2xhc3MgVGVzdCB7CisgIHZvaWQgYmEoKSB7CisgICAgZmEoTG9uZy52YWx1ZU9mKCI0MiIpKTsKKyAgfQorCisgIHZvaWQgZmEoTG9uZyBsLCBpbnQuLi4gaWkpe30KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvd3JhcEV4cHJlc3Npb24vYmVmb3JlUGFyc2VBc3NpZ25tZW50LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3dyYXBFeHByZXNzaW9uL2JlZm9yZVBhcnNlQXNzaWdubWVudC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA3MDBkMDAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3dyYXBFeHByZXNzaW9uL2JlZm9yZVBhcnNlQXNzaWdubWVudC5qYXZhCkBAIC0wLDAgKzEsNCBAQAorLy8gIldyYXAgdXNpbmcgJ0xvbmcucGFyc2VMb25nJyIgInRydWUiCitwdWJsaWMgY2xhc3MgVGVzdCB7CisgIHByaXZhdGUgbG9uZyBsPGNhcmV0Pm8gPSAiNDIiOworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC93cmFwRXhwcmVzc2lvbi9iZWZvcmVQYXJzZUluQ2FsbC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC93cmFwRXhwcmVzc2lvbi9iZWZvcmVQYXJzZUluQ2FsbC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ0ZDAyODNlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC93cmFwRXhwcmVzc2lvbi9iZWZvcmVQYXJzZUluQ2FsbC5qYXZhCkBAIC0wLDAgKzEsOCBAQAorLy8gIldyYXAgdXNpbmcgJ0xvbmcucGFyc2VMb25nJyIgInRydWUiCitwdWJsaWMgY2xhc3MgVGVzdCB7CisgIHZvaWQgYmEoKSB7CisgICAgZmEoIjQ8Y2FyZXQ+MiIpOworICB9CisKKyAgdm9pZCBmYShsb25nIGwpe30KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvd3JhcEV4cHJlc3Npb24vYmVmb3JlUGFyc2VJblZhcmFyZ3NDYWxsLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3dyYXBFeHByZXNzaW9uL2JlZm9yZVBhcnNlSW5WYXJhcmdzQ2FsbC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYyY2E2MTMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3dyYXBFeHByZXNzaW9uL2JlZm9yZVBhcnNlSW5WYXJhcmdzQ2FsbC5qYXZhCkBAIC0wLDAgKzEsOCBAQAorLy8gIldyYXAgdXNpbmcgJ0xvbmcucGFyc2VMb25nJyIgInRydWUiCitwdWJsaWMgY2xhc3MgVGVzdCB7CisgIHZvaWQgYmEobG9uZyBsKSB7CisgICAgZmEobCwgIjQ8Y2FyZXQ+MiIpOworICB9CisKKyAgdm9pZCBmYShsb25nLi4uIGwpe30KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvd3JhcEV4cHJlc3Npb24vYmVmb3JlVmFsdWVvZkFzc2lnbm1lbnQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvd3JhcEV4cHJlc3Npb24vYmVmb3JlVmFsdWVvZkFzc2lnbm1lbnQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YjgxMjExCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC93cmFwRXhwcmVzc2lvbi9iZWZvcmVWYWx1ZW9mQXNzaWdubWVudC5qYXZhCkBAIC0wLDAgKzEsNCBAQAorLy8gIldyYXAgdXNpbmcgJ0xvbmcudmFsdWVPZiciICJ0cnVlIgorcHVibGljIGNsYXNzIFRlc3QgeworICBwcml2YXRlIExvbmcgbDxjYXJldD5vID0gIjQyIjsKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvd3JhcEV4cHJlc3Npb24vYmVmb3JlVmFsdWVvZkNhbGwuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvd3JhcEV4cHJlc3Npb24vYmVmb3JlVmFsdWVvZkNhbGwuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNzYwNGIyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC93cmFwRXhwcmVzc2lvbi9iZWZvcmVWYWx1ZW9mQ2FsbC5qYXZhCkBAIC0wLDAgKzEsOCBAQAorLy8gIldyYXAgdXNpbmcgJ0xvbmcudmFsdWVPZiciICJ0cnVlIgorcHVibGljIGNsYXNzIFRlc3QgeworICB2b2lkIGJhKCkgeworICAgIGZhKCI0PGNhcmV0PjIiKTsKKyAgfQorCisgIHZvaWQgZmEoTG9uZyBsKXt9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3dyYXBFeHByZXNzaW9uL2JlZm9yZVZhbHVlb2ZJblZhcmFyZ3NDYWxsLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3F1aWNrRml4L3dyYXBFeHByZXNzaW9uL2JlZm9yZVZhbHVlb2ZJblZhcmFyZ3NDYWxsLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTQ5YTMyOQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvd3JhcEV4cHJlc3Npb24vYmVmb3JlVmFsdWVvZkluVmFyYXJnc0NhbGwuamF2YQpAQCAtMCwwICsxLDggQEAKKy8vICJXcmFwIHVzaW5nICdMb25nLnZhbHVlT2YnIiAidHJ1ZSIKK3B1YmxpYyBjbGFzcyBUZXN0IHsKKyAgdm9pZCBiYShMb25nIGwpIHsKKyAgICBmYShsLCAiNDxjYXJldD4yIik7CisgIH0KKworICB2b2lkIGZhKExvbmcuLi4gbCl7fQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9xdWlja0ZpeC93cmFwRXhwcmVzc2lvbi9iZWZvcmVWYWx1ZW9mVmFyYXJnc0NhbGwuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvd3JhcEV4cHJlc3Npb24vYmVmb3JlVmFsdWVvZlZhcmFyZ3NDYWxsLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2RkNmY5MQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcXVpY2tGaXgvd3JhcEV4cHJlc3Npb24vYmVmb3JlVmFsdWVvZlZhcmFyZ3NDYWxsLmphdmEKQEAgLTAsMCArMSw4IEBACisvLyAiV3JhcCB1c2luZyAnTG9uZy52YWx1ZU9mJyIgInRydWUiCitwdWJsaWMgY2xhc3MgVGVzdCB7CisgIHZvaWQgYmEoKSB7CisgICAgZmEoIjQ8Y2FyZXQ+MiIpOworICB9CisKKyAgdm9pZCBmYShMb25nIGwsIGludC4uLiBpaSl7fQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9yZXBsYWNlSW1wbGVtZW50c1dpdGhTdGF0aWNJbXBvcnQvYWZ0ZXIxLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3JlcGxhY2VJbXBsZW1lbnRzV2l0aFN0YXRpY0ltcG9ydC9hZnRlcjEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYTIwM2Q0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9yZXBsYWNlSW1wbGVtZW50c1dpdGhTdGF0aWNJbXBvcnQvYWZ0ZXIxLmphdmEKQEAgLTAsMCArMSwxMiBAQAoraW1wb3J0IHN0YXRpYyBJLkZPTzsKKworLy8gIlJlcGxhY2UgSW1wbGVtZW50cyB3aXRoIFN0YXRpYyBJbXBvcnQiICJ0cnVlIgorcHVibGljIGNsYXNzIFggeworICB2b2lkIGZvbygpIHsKKyAgICBTeXN0ZW0ub3V0LnByaW50bG4oRk9PKTsKKyAgfQorfQorCitpbnRlcmZhY2UgSSB7CisgIFN0cmluZyBGT08gPSAiZm9vIjsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3JlcGxhY2VJbXBsZW1lbnRzV2l0aFN0YXRpY0ltcG9ydC9hZnRlcjEwLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3JlcGxhY2VJbXBsZW1lbnRzV2l0aFN0YXRpY0ltcG9ydC9hZnRlcjEwLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTk2MWFjZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcmVwbGFjZUltcGxlbWVudHNXaXRoU3RhdGljSW1wb3J0L2FmdGVyMTAuamF2YQpAQCAtMCwwICsxLDI1IEBACitpbXBvcnQgc3RhdGljIEluLkZPTzsKKworLy8gIlJlcGxhY2UgSW1wbGVtZW50cyB3aXRoIFN0YXRpYyBJbXBvcnQiICJ0cnVlIgoraW50ZXJmYWNlIEluIHsKKyAgICBpbnQgRk9PID0gMDsKK30KKworY2xhc3MgSUkgeworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKEZPTyk7CisgICAgfQorfQorCitjbGFzcyBJSTEgeworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKEZPTyk7CisgICAgfQorfQorCitjbGFzcyBVYyB7CisgICAgc3RhdGljIGZpbmFsIFN0cmluZyBGT08gPSAiIjsKKyAgICB2b2lkIGcoKSB7CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiIiArIEluLkZPTyk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9yZXBsYWNlSW1wbGVtZW50c1dpdGhTdGF0aWNJbXBvcnQvYWZ0ZXIxMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9yZXBsYWNlSW1wbGVtZW50c1dpdGhTdGF0aWNJbXBvcnQvYWZ0ZXIxMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJjZjNhMGUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3JlcGxhY2VJbXBsZW1lbnRzV2l0aFN0YXRpY0ltcG9ydC9hZnRlcjExLmphdmEKQEAgLTAsMCArMSwyOCBAQAoraW1wb3J0IHN0YXRpYyBJbi5GT087CisKKy8vICJSZXBsYWNlIEltcGxlbWVudHMgd2l0aCBTdGF0aWMgSW1wb3J0IiAidHJ1ZSIKK2ludGVyZmFjZSBJbiB7CisgICAgaW50IEZPTyA9IDA7Cit9CisKK2NsYXNzIElJIHsKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihGT08pOworICAgIH0KK30KKworLyoqCisgKiB7QGxpbmsgSW4uRk9PfQorICovCitjbGFzcyBJSTEgeworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKEZPTyk7CisgICAgfQorfQorCitjbGFzcyBVYyB7CisgICAgc3RhdGljIGZpbmFsIFN0cmluZyBGT08gPSAiIjsKKyAgICB2b2lkIGcoKSB7CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiIiArIEluLkZPTyk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9yZXBsYWNlSW1wbGVtZW50c1dpdGhTdGF0aWNJbXBvcnQvYWZ0ZXIxMi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9yZXBsYWNlSW1wbGVtZW50c1dpdGhTdGF0aWNJbXBvcnQvYWZ0ZXIxMi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkzNTZlM2QKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3JlcGxhY2VJbXBsZW1lbnRzV2l0aFN0YXRpY0ltcG9ydC9hZnRlcjEyLmphdmEKQEAgLTAsMCArMSwyOCBAQAoraW1wb3J0IHN0YXRpYyBJbi5GT087CisKKy8vICJSZXBsYWNlIEltcGxlbWVudHMgd2l0aCBTdGF0aWMgSW1wb3J0IiAidHJ1ZSIKK2ludGVyZmFjZSBJbiB7CisgICAgaW50IEZPTyA9IDA7Cit9CisKK2NsYXNzIElJIHsKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihGT08pOworICAgIH0KK30KKworLyoqCisgKiB7QGxpbmsgSSNGT099CisgKi8KK2NsYXNzIElJMSB7CisgICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgeworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oRk9PKTsKKyAgICB9Cit9CisKK2NsYXNzIFVjIHsKKyAgICBzdGF0aWMgZmluYWwgU3RyaW5nIEZPTyA9ICIiOworICAgIHZvaWQgZygpIHsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCIiICsgSW4uRk9PKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3JlcGxhY2VJbXBsZW1lbnRzV2l0aFN0YXRpY0ltcG9ydC9hZnRlcjIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcmVwbGFjZUltcGxlbWVudHNXaXRoU3RhdGljSW1wb3J0L2FmdGVyMi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMzOGM1MWYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3JlcGxhY2VJbXBsZW1lbnRzV2l0aFN0YXRpY0ltcG9ydC9hZnRlcjIuamF2YQpAQCAtMCwwICsxLDIyIEBACitpbXBvcnQgc3RhdGljIEkuKjsKKworLy8gIlJlcGxhY2UgSW1wbGVtZW50cyB3aXRoIFN0YXRpYyBJbXBvcnQiICJ0cnVlIgorcHVibGljIGNsYXNzIFggeworICB2b2lkIGZvbygpIHsKKyAgICBTeXN0ZW0ub3V0LnByaW50bG4oRk9PKTsKKyAgICBTeXN0ZW0ub3V0LnByaW50bG4oRk9PMSk7CisgICAgU3lzdGVtLm91dC5wcmludGxuKEZPTzIpOworICAgIFN5c3RlbS5vdXQucHJpbnRsbihGT08zKTsKKyAgICBTeXN0ZW0ub3V0LnByaW50bG4oRk9PNCk7CisgICAgU3lzdGVtLm91dC5wcmludGxuKEZPTzUpOworICB9Cit9CisKK2ludGVyZmFjZSBJIHsKKyAgU3RyaW5nIEZPTyA9ICJmb28iOworICBTdHJpbmcgRk9PMSA9ICJmb28iOworICBTdHJpbmcgRk9PMiA9ICJmb28iOworICBTdHJpbmcgRk9PMyA9ICJmb28iOworICBTdHJpbmcgRk9PNCA9ICJmb28iOworICBTdHJpbmcgRk9PNSA9ICJmb28iOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcmVwbGFjZUltcGxlbWVudHNXaXRoU3RhdGljSW1wb3J0L2FmdGVyNi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9yZXBsYWNlSW1wbGVtZW50c1dpdGhTdGF0aWNJbXBvcnQvYWZ0ZXI2LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODU4ZTc2YzEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3JlcGxhY2VJbXBsZW1lbnRzV2l0aFN0YXRpY0ltcG9ydC9hZnRlcjYuamF2YQpAQCAtMCwwICsxLDE4IEBACitpbXBvcnQgc3RhdGljIEkuRk9POworaW1wb3J0IHN0YXRpYyBJMS5CQVpaOworCisvLyAiUmVwbGFjZSBJbXBsZW1lbnRzIHdpdGggU3RhdGljIEltcG9ydCIgInRydWUiCitwdWJsaWMgY2xhc3MgWCB7CisgIHZvaWQgYmFyKCkgeworICAgIFN5c3RlbS5vdXQucHJpbnRsbihGT08pOworICAgIFN5c3RlbS5vdXQucHJpbnRsbihCQVpaKTsKKyAgfQorfQorCitpbnRlcmZhY2UgSSBleHRlbmRzIEkxeworICBTdHJpbmcgRk9PID0gImZvbyI7Cit9CisKK2ludGVyZmFjZSBJMSB7CisgIFN0cmluZyBCQVpaID0gImJhenoiOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcmVwbGFjZUltcGxlbWVudHNXaXRoU3RhdGljSW1wb3J0L2FmdGVyNy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9yZXBsYWNlSW1wbGVtZW50c1dpdGhTdGF0aWNJbXBvcnQvYWZ0ZXI3LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGJhYzgyMWYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3JlcGxhY2VJbXBsZW1lbnRzV2l0aFN0YXRpY0ltcG9ydC9hZnRlcjcuamF2YQpAQCAtMCwwICsxLDE3IEBACitpbXBvcnQgc3RhdGljIEkxLkJBWlo7CisKKy8vICJSZXBsYWNlIEltcGxlbWVudHMgd2l0aCBTdGF0aWMgSW1wb3J0IiAidHJ1ZSIKK3B1YmxpYyBjbGFzcyBYIGltcGxlbWVudHMgSSB7CisgIHZvaWQgYmFyKCkgeworICAgIFN5c3RlbS5vdXQucHJpbnRsbihGT08pOworICAgIFN5c3RlbS5vdXQucHJpbnRsbihCQVpaKTsKKyAgfQorfQorCitpbnRlcmZhY2UgSSB7CisgIFN0cmluZyBGT08gPSAiZm9vIjsKK30KKworaW50ZXJmYWNlIEkxIHsKKyAgU3RyaW5nIEJBWlogPSAiYmF6eiI7Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3JlcGxhY2VJbXBsZW1lbnRzV2l0aFN0YXRpY0ltcG9ydC9hZnRlcjguamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcmVwbGFjZUltcGxlbWVudHNXaXRoU3RhdGljSW1wb3J0L2FmdGVyOC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk4NThlNTIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3JlcGxhY2VJbXBsZW1lbnRzV2l0aFN0YXRpY0ltcG9ydC9hZnRlcjguamF2YQpAQCAtMCwwICsxLDE4IEBACitpbXBvcnQgc3RhdGljIEkxLkJBWlo7CitpbXBvcnQgc3RhdGljIElJLkZPTzsKKworLy8gIlJlcGxhY2UgSW1wbGVtZW50cyB3aXRoIFN0YXRpYyBJbXBvcnQiICJ0cnVlIgorcHVibGljIGNsYXNzIFggeworICB2b2lkIGJhcigpIHsKKyAgICBTeXN0ZW0ub3V0LnByaW50bG4oRk9PKTsKKyAgICBTeXN0ZW0ub3V0LnByaW50bG4oQkFaWik7CisgIH0KK30KKworaW50ZXJmYWNlIElJIGV4dGVuZHMgSTF7CisgIFN0cmluZyBGT08gPSAiZm9vIjsKK30KKworaW50ZXJmYWNlIEkxIHsKKyAgU3RyaW5nIEJBWlogPSAiYmF6eiI7Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3JlcGxhY2VJbXBsZW1lbnRzV2l0aFN0YXRpY0ltcG9ydC9hZnRlcjkuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcmVwbGFjZUltcGxlbWVudHNXaXRoU3RhdGljSW1wb3J0L2FmdGVyOS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdjMGRhNDIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3JlcGxhY2VJbXBsZW1lbnRzV2l0aFN0YXRpY0ltcG9ydC9hZnRlcjkuamF2YQpAQCAtMCwwICsxLDE5IEBACitpbXBvcnQgc3RhdGljIEluLkZPTzsKKworLy8gIlJlcGxhY2UgSW1wbGVtZW50cyB3aXRoIFN0YXRpYyBJbXBvcnQiICJ0cnVlIgoraW50ZXJmYWNlIEluIHsKKyAgICBpbnQgRk9PID0gMDsKK30KKworY2xhc3MgSUkgeworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKEZPTyk7CisgICAgfQorfQorCitjbGFzcyBJSTEgeworICAgIGludCBGT08gPSA5OworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKEluLkZPTyk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9yZXBsYWNlSW1wbGVtZW50c1dpdGhTdGF0aWNJbXBvcnQvYmVmb3JlMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9yZXBsYWNlSW1wbGVtZW50c1dpdGhTdGF0aWNJbXBvcnQvYmVmb3JlMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRlYjQ1ZTViCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9yZXBsYWNlSW1wbGVtZW50c1dpdGhTdGF0aWNJbXBvcnQvYmVmb3JlMS5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKKy8vICJSZXBsYWNlIEltcGxlbWVudHMgd2l0aCBTdGF0aWMgSW1wb3J0IiAidHJ1ZSIKK3B1YmxpYyBjbGFzcyBYIGltcGxlbWVudHMgPGNhcmV0PkkgeworICB2b2lkIGZvbygpIHsKKyAgICBTeXN0ZW0ub3V0LnByaW50bG4oRk9PKTsKKyAgfQorfQorCitpbnRlcmZhY2UgSSB7CisgIFN0cmluZyBGT08gPSAiZm9vIjsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3JlcGxhY2VJbXBsZW1lbnRzV2l0aFN0YXRpY0ltcG9ydC9iZWZvcmUxMC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9yZXBsYWNlSW1wbGVtZW50c1dpdGhTdGF0aWNJbXBvcnQvYmVmb3JlMTAuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hODcwZDM0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9yZXBsYWNlSW1wbGVtZW50c1dpdGhTdGF0aWNJbXBvcnQvYmVmb3JlMTAuamF2YQpAQCAtMCwwICsxLDIzIEBACisvLyAiUmVwbGFjZSBJbXBsZW1lbnRzIHdpdGggU3RhdGljIEltcG9ydCIgInRydWUiCitpbnRlcmZhY2UgSTxjYXJldD5uIHsKKyAgICBpbnQgRk9PID0gMDsKK30KKworY2xhc3MgSUkgaW1wbGVtZW50cyBJbiB7CisgICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgeworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oRk9PKTsKKyAgICB9Cit9CisKK2NsYXNzIElJMSBpbXBsZW1lbnRzIEluIHsKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihJSTEuRk9PKTsKKyAgICB9Cit9CisKK2NsYXNzIFVjIHsKKyAgICBzdGF0aWMgZmluYWwgU3RyaW5nIEZPTyA9ICIiOworICAgIHZvaWQgZygpIHsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCIiICsgSUkuRk9PKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3JlcGxhY2VJbXBsZW1lbnRzV2l0aFN0YXRpY0ltcG9ydC9iZWZvcmUxMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9yZXBsYWNlSW1wbGVtZW50c1dpdGhTdGF0aWNJbXBvcnQvYmVmb3JlMTEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZDE1OWNlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9yZXBsYWNlSW1wbGVtZW50c1dpdGhTdGF0aWNJbXBvcnQvYmVmb3JlMTEuamF2YQpAQCAtMCwwICsxLDI2IEBACisvLyAiUmVwbGFjZSBJbXBsZW1lbnRzIHdpdGggU3RhdGljIEltcG9ydCIgInRydWUiCitpbnRlcmZhY2UgSTxjYXJldD5uIHsKKyAgICBpbnQgRk9PID0gMDsKK30KKworY2xhc3MgSUkgaW1wbGVtZW50cyBJbiB7CisgICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgeworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oRk9PKTsKKyAgICB9Cit9CisKKy8qKgorICoge0BsaW5rIEluLkZPT30KKyAqLworY2xhc3MgSUkxIGltcGxlbWVudHMgSW4geworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKElJMS5GT08pOworICAgIH0KK30KKworY2xhc3MgVWMgeworICAgIHN0YXRpYyBmaW5hbCBTdHJpbmcgRk9PID0gIiI7CisgICAgdm9pZCBnKCkgeworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIiIgKyBJSS5GT08pOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcmVwbGFjZUltcGxlbWVudHNXaXRoU3RhdGljSW1wb3J0L2JlZm9yZTEyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3JlcGxhY2VJbXBsZW1lbnRzV2l0aFN0YXRpY0ltcG9ydC9iZWZvcmUxMi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFkYjc1ZmYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3JlcGxhY2VJbXBsZW1lbnRzV2l0aFN0YXRpY0ltcG9ydC9iZWZvcmUxMi5qYXZhCkBAIC0wLDAgKzEsMjYgQEAKKy8vICJSZXBsYWNlIEltcGxlbWVudHMgd2l0aCBTdGF0aWMgSW1wb3J0IiAidHJ1ZSIKK2ludGVyZmFjZSBJPGNhcmV0Pm4geworICAgIGludCBGT08gPSAwOworfQorCitjbGFzcyBJSSBpbXBsZW1lbnRzIEluIHsKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihGT08pOworICAgIH0KK30KKworLyoqCisgKiB7QGxpbmsgSSNGT099CisgKi8KK2NsYXNzIElJMSBpbXBsZW1lbnRzIEluIHsKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihJSTEuRk9PKTsKKyAgICB9Cit9CisKK2NsYXNzIFVjIHsKKyAgICBzdGF0aWMgZmluYWwgU3RyaW5nIEZPTyA9ICIiOworICAgIHZvaWQgZygpIHsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCIiICsgSUkuRk9PKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3JlcGxhY2VJbXBsZW1lbnRzV2l0aFN0YXRpY0ltcG9ydC9iZWZvcmUyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3JlcGxhY2VJbXBsZW1lbnRzV2l0aFN0YXRpY0ltcG9ydC9iZWZvcmUyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDQyYjdlMQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcmVwbGFjZUltcGxlbWVudHNXaXRoU3RhdGljSW1wb3J0L2JlZm9yZTIuamF2YQpAQCAtMCwwICsxLDIwIEBACisvLyAiUmVwbGFjZSBJbXBsZW1lbnRzIHdpdGggU3RhdGljIEltcG9ydCIgInRydWUiCitwdWJsaWMgY2xhc3MgWCBpbXBsZW1lbnRzIDxjYXJldD5JIHsKKyAgdm9pZCBmb28oKSB7CisgICAgU3lzdGVtLm91dC5wcmludGxuKEZPTyk7CisgICAgU3lzdGVtLm91dC5wcmludGxuKEZPTzEpOworICAgIFN5c3RlbS5vdXQucHJpbnRsbihGT08yKTsKKyAgICBTeXN0ZW0ub3V0LnByaW50bG4oRk9PMyk7CisgICAgU3lzdGVtLm91dC5wcmludGxuKEZPTzQpOworICAgIFN5c3RlbS5vdXQucHJpbnRsbihGT081KTsKKyAgfQorfQorCitpbnRlcmZhY2UgSSB7CisgIFN0cmluZyBGT08gPSAiZm9vIjsKKyAgU3RyaW5nIEZPTzEgPSAiZm9vIjsKKyAgU3RyaW5nIEZPTzIgPSAiZm9vIjsKKyAgU3RyaW5nIEZPTzMgPSAiZm9vIjsKKyAgU3RyaW5nIEZPTzQgPSAiZm9vIjsKKyAgU3RyaW5nIEZPTzUgPSAiZm9vIjsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3JlcGxhY2VJbXBsZW1lbnRzV2l0aFN0YXRpY0ltcG9ydC9iZWZvcmUzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3JlcGxhY2VJbXBsZW1lbnRzV2l0aFN0YXRpY0ltcG9ydC9iZWZvcmUzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWViNWM3ZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcmVwbGFjZUltcGxlbWVudHNXaXRoU3RhdGljSW1wb3J0L2JlZm9yZTMuamF2YQpAQCAtMCwwICsxLDIyIEBACisvLyAiUmVwbGFjZSBJbXBsZW1lbnRzIHdpdGggU3RhdGljIEltcG9ydCIgImZhbHNlIgorcHVibGljIGNsYXNzIFggaW1wbGVtZW50cyA8Y2FyZXQ+SSB7CisgIHZvaWQgZm9vKCkgeworICAgIFN5c3RlbS5vdXQucHJpbnRsbihGT08pOworICAgIFN5c3RlbS5vdXQucHJpbnRsbihGT08xKTsKKyAgICBTeXN0ZW0ub3V0LnByaW50bG4oRk9PMik7CisgICAgU3lzdGVtLm91dC5wcmludGxuKEZPTzMpOworICAgIFN5c3RlbS5vdXQucHJpbnRsbihGT080KTsKKyAgICBTeXN0ZW0ub3V0LnByaW50bG4oRk9PNSk7CisgIH0KK30KKworaW50ZXJmYWNlIEkgeworICBTdHJpbmcgRk9PID0gImZvbyI7CisgIFN0cmluZyBGT08xID0gImZvbyI7CisgIFN0cmluZyBGT08yID0gImZvbyI7CisgIFN0cmluZyBGT08zID0gImZvbyI7CisgIFN0cmluZyBGT080ID0gImZvbyI7CisgIFN0cmluZyBGT081ID0gImZvbyI7CisKKyAgdm9pZCBmb28oKTsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3JlcGxhY2VJbXBsZW1lbnRzV2l0aFN0YXRpY0ltcG9ydC9iZWZvcmU0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3JlcGxhY2VJbXBsZW1lbnRzV2l0aFN0YXRpY0ltcG9ydC9iZWZvcmU0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDAwMmQ1ZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcmVwbGFjZUltcGxlbWVudHNXaXRoU3RhdGljSW1wb3J0L2JlZm9yZTQuamF2YQpAQCAtMCwwICsxLDcgQEAKKy8vICJSZXBsYWNlIEltcGxlbWVudHMgd2l0aCBTdGF0aWMgSW1wb3J0IiAiZmFsc2UiCitwdWJsaWMgY2xhc3MgWCBpbXBsZW1lbnRzIDxjYXJldD5JIHsKKyAgdm9pZCBiYXIoKSB7fQorfQorCitpbnRlcmZhY2UgSSB7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9yZXBsYWNlSW1wbGVtZW50c1dpdGhTdGF0aWNJbXBvcnQvYmVmb3JlNS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9yZXBsYWNlSW1wbGVtZW50c1dpdGhTdGF0aWNJbXBvcnQvYmVmb3JlNS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUwMjE2ZGIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3JlcGxhY2VJbXBsZW1lbnRzV2l0aFN0YXRpY0ltcG9ydC9iZWZvcmU1LmphdmEKQEAgLTAsMCArMSwxNCBAQAorLy8gIlJlcGxhY2UgSW1wbGVtZW50cyB3aXRoIFN0YXRpYyBJbXBvcnQiICJmYWxzZSIKK3B1YmxpYyBjbGFzcyBYIGltcGxlbWVudHMgPGNhcmV0PkkgeworICB2b2lkIGJhcigpIHsKKyAgICBTeXN0ZW0ub3V0LnByaW50bG4oRk9PKTsKKyAgfQorfQorCitpbnRlcmZhY2UgSSBleHRlbmRzIEkxeworICBTdHJpbmcgRk9PID0gImZvbyI7Cit9CisKK2ludGVyZmFjZSBJMSB7CisgIHZvaWQgZm9vKCl7fQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcmVwbGFjZUltcGxlbWVudHNXaXRoU3RhdGljSW1wb3J0L2JlZm9yZTYuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcmVwbGFjZUltcGxlbWVudHNXaXRoU3RhdGljSW1wb3J0L2JlZm9yZTYuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MzllZjcxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9yZXBsYWNlSW1wbGVtZW50c1dpdGhTdGF0aWNJbXBvcnQvYmVmb3JlNi5qYXZhCkBAIC0wLDAgKzEsMTUgQEAKKy8vICJSZXBsYWNlIEltcGxlbWVudHMgd2l0aCBTdGF0aWMgSW1wb3J0IiAidHJ1ZSIKK3B1YmxpYyBjbGFzcyBYIGltcGxlbWVudHMgPGNhcmV0PkkgeworICB2b2lkIGJhcigpIHsKKyAgICBTeXN0ZW0ub3V0LnByaW50bG4oRk9PKTsKKyAgICBTeXN0ZW0ub3V0LnByaW50bG4oQkFaWik7CisgIH0KK30KKworaW50ZXJmYWNlIEkgZXh0ZW5kcyBJMXsKKyAgU3RyaW5nIEZPTyA9ICJmb28iOworfQorCitpbnRlcmZhY2UgSTEgeworICBTdHJpbmcgQkFaWiA9ICJiYXp6IjsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3JlcGxhY2VJbXBsZW1lbnRzV2l0aFN0YXRpY0ltcG9ydC9iZWZvcmU3LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3JlcGxhY2VJbXBsZW1lbnRzV2l0aFN0YXRpY0ltcG9ydC9iZWZvcmU3LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmFkYTZjYwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcmVwbGFjZUltcGxlbWVudHNXaXRoU3RhdGljSW1wb3J0L2JlZm9yZTcuamF2YQpAQCAtMCwwICsxLDE1IEBACisvLyAiUmVwbGFjZSBJbXBsZW1lbnRzIHdpdGggU3RhdGljIEltcG9ydCIgInRydWUiCitwdWJsaWMgY2xhc3MgWCBpbXBsZW1lbnRzIEkgeworICB2b2lkIGJhcigpIHsKKyAgICBTeXN0ZW0ub3V0LnByaW50bG4oRk9PKTsKKyAgICBTeXN0ZW0ub3V0LnByaW50bG4oQkFaWik7CisgIH0KK30KKworaW50ZXJmYWNlIEkgZXh0ZW5kcyBJMXsKKyAgU3RyaW5nIEZPTyA9ICJmb28iOworfQorCitpbnRlcmZhY2UgSTxjYXJldD4xIHsKKyAgU3RyaW5nIEJBWlogPSAiYmF6eiI7Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3JlcGxhY2VJbXBsZW1lbnRzV2l0aFN0YXRpY0ltcG9ydC9iZWZvcmU4LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3JlcGxhY2VJbXBsZW1lbnRzV2l0aFN0YXRpY0ltcG9ydC9iZWZvcmU4LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTc1ZDVlYgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcmVwbGFjZUltcGxlbWVudHNXaXRoU3RhdGljSW1wb3J0L2JlZm9yZTguamF2YQpAQCAtMCwwICsxLDE1IEBACisvLyAiUmVwbGFjZSBJbXBsZW1lbnRzIHdpdGggU3RhdGljIEltcG9ydCIgInRydWUiCitwdWJsaWMgY2xhc3MgWCBpbXBsZW1lbnRzIElJIHsKKyAgdm9pZCBiYXIoKSB7CisgICAgU3lzdGVtLm91dC5wcmludGxuKEZPTyk7CisgICAgU3lzdGVtLm91dC5wcmludGxuKEJBWlopOworICB9Cit9CisKK2ludGVyZmFjZSBJPGNhcmV0PkkgZXh0ZW5kcyBJMXsKKyAgU3RyaW5nIEZPTyA9ICJmb28iOworfQorCitpbnRlcmZhY2UgSTEgeworICBTdHJpbmcgQkFaWiA9ICJiYXp6IjsKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcmVwbGFjZUltcGxlbWVudHNXaXRoU3RhdGljSW1wb3J0L2JlZm9yZTkuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvcmVwbGFjZUltcGxlbWVudHNXaXRoU3RhdGljSW1wb3J0L2JlZm9yZTkuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YmIxODJmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci9yZXBsYWNlSW1wbGVtZW50c1dpdGhTdGF0aWNJbXBvcnQvYmVmb3JlOS5qYXZhCkBAIC0wLDAgKzEsMTcgQEAKKy8vICJSZXBsYWNlIEltcGxlbWVudHMgd2l0aCBTdGF0aWMgSW1wb3J0IiAidHJ1ZSIKK2ludGVyZmFjZSBJPGNhcmV0Pm4geworICAgIGludCBGT08gPSAwOworfQorCitjbGFzcyBJSSBpbXBsZW1lbnRzIEluIHsKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihGT08pOworICAgIH0KK30KKworY2xhc3MgSUkxIGltcGxlbWVudHMgSW4geworICAgIGludCBGT08gPSA5OworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKEluLkZPTyk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci90eXBlTWF0Y2hpbmcvQW5kQW5kMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci90eXBlTWF0Y2hpbmcvQW5kQW5kMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg5OTNkZmMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3R5cGVNYXRjaGluZy9BbmRBbmQxLmphdmEKQEAgLTAsMCArMSw1IEBACitjbGFzcyBUZXN0eworICB7CisgICAgaWYgKDxlcnJvcj4iYWFhIjwvZXJyb3I+IHx8IHRydWUpe30KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvdHlwZU1hdGNoaW5nL0FuZEFuZDIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvdHlwZU1hdGNoaW5nL0FuZEFuZDIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MDVmNjgyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci90eXBlTWF0Y2hpbmcvQW5kQW5kMi5qYXZhCkBAIC0wLDAgKzEsNSBAQAorY2xhc3MgVGVzdHsKKyAgeworICAgIGlmICg8ZXJyb3I+ImFhYSI8L2Vycm9yPiB8fDxFT0xFcnJvci8+CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3R5cGVNYXRjaGluZy9Gb3IxLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3R5cGVNYXRjaGluZy9Gb3IxLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTg0YzFiMwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvdHlwZU1hdGNoaW5nL0ZvcjEuamF2YQpAQCAtMCwwICsxLDUgQEAKK2NsYXNzIFRlc3R7CisgIHsKKyAgICBmb3IoaW50IGkgPSAwOyA8ZXJyb3I+aSA9IDEwPC9lcnJvcj47IGkrKykge30KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvdHlwZU1hdGNoaW5nL0ZvcjIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvdHlwZU1hdGNoaW5nL0ZvcjIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MjAyZjYwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci90eXBlTWF0Y2hpbmcvRm9yMi5qYXZhCkBAIC0wLDAgKzEsNSBAQAorY2xhc3MgVGVzdHsKKyAgeworICAgIGZvcihpbnQgaSA9IDA7IDxlcnJvcj5pPC9lcnJvcj47IGkrKykge30KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvdHlwZU1hdGNoaW5nL0lmLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3R5cGVNYXRjaGluZy9JZi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIxMmFhMTgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3R5cGVNYXRjaGluZy9JZi5qYXZhCkBAIC0wLDAgKzEsNSBAQAorY2xhc3MgVGVzdHsKKyAgdm9pZCBmb28oKXsKKyAgICBpZiAoPGVycm9yPjEwPC9lcnJvcj4pIHJldHVybjsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvdHlwZU1hdGNoaW5nL1Nob3J0Q29uc3RXaXRoQ2FzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci90eXBlTWF0Y2hpbmcvU2hvcnRDb25zdFdpdGhDYXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGI0MTViYQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvdHlwZU1hdGNoaW5nL1Nob3J0Q29uc3RXaXRoQ2FzdC5qYXZhCkBAIC0wLDAgKzEsNCBAQAoraW50ZXJmYWNlIEZvb3sKKyAgc2hvcnQgQUFBQSA9IChzaG9ydCkoMiArIDIpOworICBzaG9ydCBCQkJCID0gQUFBQSArIDE7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci90eXBlTWF0Y2hpbmcvV2hpbGUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvdHlwZU1hdGNoaW5nL1doaWxlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWRkOGUyYgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvdHlwZU1hdGNoaW5nL1doaWxlLmphdmEKQEAgLTAsMCArMSw1IEBACitjbGFzcyBUZXN0eworICB7CisgICAgd2hpbGUoPGVycm9yPjEwPC9lcnJvcj4pIDsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvdW5jb21wbGV0ZUNvbnN0cnVjdHMvRm9yMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci91bmNvbXBsZXRlQ29uc3RydWN0cy9Gb3IxLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTNlNjY0OQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvdW5jb21wbGV0ZUNvbnN0cnVjdHMvRm9yMS5qYXZhCkBAIC0wLDAgKzEsNSBAQAorY2xhc3MgVGVzdHsKKyAgeworICAgIGZvcjxFT0xFcnJvci8+CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3VuY29tcGxldGVDb25zdHJ1Y3RzL0ZvcjEwLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3VuY29tcGxldGVDb25zdHJ1Y3RzL0ZvcjEwLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTMzYWRmOQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvdW5jb21wbGV0ZUNvbnN0cnVjdHMvRm9yMTAuamF2YQpAQCAtMCwwICsxLDUgQEAKK2NsYXNzIEZvb3sKKyAgdm9pZCBmb28oKXsKKyAgICBmb3IoaW50IGkgPSAwOyBpIDwgMDxlcnJvcj4pPC9lcnJvcj4gZm9vKCk7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3VuY29tcGxldGVDb25zdHJ1Y3RzL0ZvcjIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvdW5jb21wbGV0ZUNvbnN0cnVjdHMvRm9yMi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFjOGFmNWUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3VuY29tcGxldGVDb25zdHJ1Y3RzL0ZvcjIuamF2YQpAQCAtMCwwICsxLDUgQEAKK2NsYXNzIFRlc3R7CisgIHsKKyAgICBmb3IoPEVPTEVycm9yLz4KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvdW5jb21wbGV0ZUNvbnN0cnVjdHMvRm9yMy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci91bmNvbXBsZXRlQ29uc3RydWN0cy9Gb3IzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGRhYjM1YwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvdW5jb21wbGV0ZUNvbnN0cnVjdHMvRm9yMy5qYXZhCkBAIC0wLDAgKzEsNSBAQAorY2xhc3MgVGVzdHsKKyAgeworICAgIGZvcihpbnQgaSA9IDA7OzxFT0xFcnJvci8+CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3VuY29tcGxldGVDb25zdHJ1Y3RzL0ZvcjQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvdW5jb21wbGV0ZUNvbnN0cnVjdHMvRm9yNC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjljYzVmM2IKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3VuY29tcGxldGVDb25zdHJ1Y3RzL0ZvcjQuamF2YQpAQCAtMCwwICsxLDUgQEAKK2NsYXNzIFRlc3R7CisgIHsKKyAgICBmb3IoaW50IGkgPSAwOyBpIDwgMTA8RU9MRXJyb3IvPgorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci91bmNvbXBsZXRlQ29uc3RydWN0cy9Gb3I1LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3VuY29tcGxldGVDb25zdHJ1Y3RzL0ZvcjUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MTE2NWQ3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci91bmNvbXBsZXRlQ29uc3RydWN0cy9Gb3I1LmphdmEKQEAgLTAsMCArMSw1IEBACitjbGFzcyBUZXN0eworICB7CisgICAgZm9yKGludCBpID0gMDsgaSA8IDEwOzxFT0xFcnJvci8+CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3VuY29tcGxldGVDb25zdHJ1Y3RzL0ZvcjYuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvdW5jb21wbGV0ZUNvbnN0cnVjdHMvRm9yNi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU5YmM0MmUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3VuY29tcGxldGVDb25zdHJ1Y3RzL0ZvcjYuamF2YQpAQCAtMCwwICsxLDUgQEAKK2NsYXNzIFRlc3R7CisgIHsKKyAgICBmb3IoaW50IGkgPSAwOyBpIDwgMTA7IGkrKzxFT0xFcnJvci8+CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3VuY29tcGxldGVDb25zdHJ1Y3RzL0ZvcjcuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvdW5jb21wbGV0ZUNvbnN0cnVjdHMvRm9yNy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjljODk4NDIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3VuY29tcGxldGVDb25zdHJ1Y3RzL0ZvcjcuamF2YQpAQCAtMCwwICsxLDUgQEAKK2NsYXNzIFRlc3R7CisgIHsKKyAgICBmb3IoaW50IGkgPSAwOyBpIDwgMTA7IGkrKyk8RU9MRXJyb3IvPgorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci91bmNvbXBsZXRlQ29uc3RydWN0cy9Gb3I4LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3VuY29tcGxldGVDb25zdHJ1Y3RzL0ZvcjguamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NGQ5YjU5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci91bmNvbXBsZXRlQ29uc3RydWN0cy9Gb3I4LmphdmEKQEAgLTAsMCArMSw1IEBACitjbGFzcyBGb297CisgIHZvaWQgZm9vKCl7CisgICAgZm9yKDxlcnJvcj4pPC9lcnJvcj4gZm9vKCk7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3VuY29tcGxldGVDb25zdHJ1Y3RzL0ZvcjkuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvdW5jb21wbGV0ZUNvbnN0cnVjdHMvRm9yOS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBlN2I3ZDIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3VuY29tcGxldGVDb25zdHJ1Y3RzL0ZvcjkuamF2YQpAQCAtMCwwICsxLDUgQEAKK2NsYXNzIEZvb3sKKyAgdm9pZCBmb28oKXsKKyAgICBmb3IoaW50IGkgPSAwOzxlcnJvcj4pPC9lcnJvcj4gZm9vKCk7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3VuY29tcGxldGVDb25zdHJ1Y3RzL0lmMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci91bmNvbXBsZXRlQ29uc3RydWN0cy9JZjEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ODEwZmZhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci91bmNvbXBsZXRlQ29uc3RydWN0cy9JZjEuamF2YQpAQCAtMCwwICsxLDUgQEAKK2NsYXNzIFRlc3R7CisgIHsKKyAgICBpZjxFT0xFcnJvci8+CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3VuY29tcGxldGVDb25zdHJ1Y3RzL0lmMi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci91bmNvbXBsZXRlQ29uc3RydWN0cy9JZjIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42OWZmOWRjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci91bmNvbXBsZXRlQ29uc3RydWN0cy9JZjIuamF2YQpAQCAtMCwwICsxLDUgQEAKK2NsYXNzIFRlc3R7CisgIHsKKyAgICBpZiAoPEVPTEVycm9yLz4KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvdW5jb21wbGV0ZUNvbnN0cnVjdHMvSWYzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3VuY29tcGxldGVDb25zdHJ1Y3RzL0lmMy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZlZTE4YzkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3VuY29tcGxldGVDb25zdHJ1Y3RzL0lmMy5qYXZhCkBAIC0wLDAgKzEsNSBAQAorY2xhc3MgVGVzdHsKKyAgeworICAgIGlmICh0cnVlPEVPTEVycm9yLz4KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvdW5jb21wbGV0ZUNvbnN0cnVjdHMvSWY0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3VuY29tcGxldGVDb25zdHJ1Y3RzL0lmNC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNkMDNkNzAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3VuY29tcGxldGVDb25zdHJ1Y3RzL0lmNC5qYXZhCkBAIC0wLDAgKzEsNSBAQAorY2xhc3MgVGVzdHsKKyAgeworICAgIGlmICh0cnVlKTxFT0xFcnJvci8+CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3VuY29tcGxldGVDb25zdHJ1Y3RzL0lmNS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci91bmNvbXBsZXRlQ29uc3RydWN0cy9JZjUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45OGZhZjk5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci91bmNvbXBsZXRlQ29uc3RydWN0cy9JZjUuamF2YQpAQCAtMCwwICsxLDUgQEAKK2NsYXNzIFRlc3R7CisgIHsKKyAgICBpZiAoPGVycm9yPik8L2Vycm9yPnt9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3VuY29tcGxldGVDb25zdHJ1Y3RzL0lmNi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci91bmNvbXBsZXRlQ29uc3RydWN0cy9JZjYuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNzgwMmU4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci91bmNvbXBsZXRlQ29uc3RydWN0cy9JZjYuamF2YQpAQCAtMCwwICsxLDcgQEAKK2NsYXNzIFRlc3R7CisgIHsKKyAgICBpZiAodHJ1ZSl7CisgICAgfQorICAgIGVsc2U8RU9MRXJyb3IvPgorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci91bmNvbXBsZXRlQ29uc3RydWN0cy9SZXR1cm4xLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3VuY29tcGxldGVDb25zdHJ1Y3RzL1JldHVybjEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYjg5MTg3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci91bmNvbXBsZXRlQ29uc3RydWN0cy9SZXR1cm4xLmphdmEKQEAgLTAsMCArMSw1IEBACitjbGFzcyBUZXN0eworICB2b2lkIGZvbygpeworICAgIHJldHVybjxFT0xFcnJvci8+CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3VuY29tcGxldGVDb25zdHJ1Y3RzL1JldHVybjIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvdW5jb21wbGV0ZUNvbnN0cnVjdHMvUmV0dXJuMi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZhZWY3MWEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3VuY29tcGxldGVDb25zdHJ1Y3RzL1JldHVybjIuamF2YQpAQCAtMCwwICsxLDUgQEAKK2NsYXNzIFRlc3R7CisgIGludCBmb28oKXsKKyAgICByZXR1cm4gMTxFT0xFcnJvci8+CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3VuY29tcGxldGVDb25zdHJ1Y3RzL1doaWxlMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci91bmNvbXBsZXRlQ29uc3RydWN0cy9XaGlsZTEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZDIzNzM5ZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvdW5jb21wbGV0ZUNvbnN0cnVjdHMvV2hpbGUxLmphdmEKQEAgLTAsMCArMSw1IEBACitjbGFzcyBUZXN0eworICB7CisgICAgd2hpbGU8RU9MRXJyb3IvPgorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci91bmNvbXBsZXRlQ29uc3RydWN0cy9XaGlsZTIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvdW5jb21wbGV0ZUNvbnN0cnVjdHMvV2hpbGUyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTRmNjVjNAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvdW5jb21wbGV0ZUNvbnN0cnVjdHMvV2hpbGUyLmphdmEKQEAgLTAsMCArMSw1IEBACitjbGFzcyBUZXN0eworICB7CisgICAgd2hpbGUoPEVPTEVycm9yLz4KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvdW5jb21wbGV0ZUNvbnN0cnVjdHMvV2hpbGUzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3VuY29tcGxldGVDb25zdHJ1Y3RzL1doaWxlMy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ3ODkyNGMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3VuY29tcGxldGVDb25zdHJ1Y3RzL1doaWxlMy5qYXZhCkBAIC0wLDAgKzEsNSBAQAorY2xhc3MgVGVzdHsKKyAgeworICAgIHdoaWxlKHRydWU8RU9MRXJyb3IvPgorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci91bmNvbXBsZXRlQ29uc3RydWN0cy9XaGlsZTQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvdW5jb21wbGV0ZUNvbnN0cnVjdHMvV2hpbGU0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWExNDEyZWUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3VuY29tcGxldGVDb25zdHJ1Y3RzL1doaWxlNC5qYXZhCkBAIC0wLDAgKzEsNSBAQAorY2xhc3MgVGVzdHsKKyAgeworICAgIHdoaWxlKHRydWUpPEVPTEVycm9yLz4KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvdW5jb21wbGV0ZUNvbnN0cnVjdHMvV2hpbGU1LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3VuY29tcGxldGVDb25zdHJ1Y3RzL1doaWxlNS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFjMjZkMmUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3VuY29tcGxldGVDb25zdHJ1Y3RzL1doaWxlNS5qYXZhCkBAIC0wLDAgKzEsNSBAQAorY2xhc3MgVGVzdHsKKyAgeworICAgIHdoaWxlKDxlcnJvcj4pPC9lcnJvcj57fQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci91bnVzZWREZWNscy9DaGFuZ2VJbnNpZGVDb2RlQmxvY2suamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvdW51c2VkRGVjbHMvQ2hhbmdlSW5zaWRlQ29kZUJsb2NrLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGEzNWM3MAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvdW51c2VkRGVjbHMvQ2hhbmdlSW5zaWRlQ29kZUJsb2NrLmphdmEKQEAgLTAsMCArMSw2IEBACitjbGFzcyBUZXN0eworICBwdWJsaWMgdm9pZCB0ZXN0KCl7CisgICA8Y2FyZXQ+ZigpOworICB9CisgIHByaXZhdGUgdm9pZCBmKCl7fQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvdW51c2VkRGVjbHMvSW5qZWN0ZWRBbm5vLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3VudXNlZERlY2xzL0luamVjdGVkQW5uby5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFiZGZlMzMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3VudXNlZERlY2xzL0luamVjdGVkQW5uby5qYXZhCkBAIC0wLDAgKzEsMjkgQEAKK3BhY2thZ2UgamF2YXguYW5ub3RhdGlvbjsKKworLyoKKyogQ29weXJpZ2h0IDIwMDAtMjAxMSBKZXRCcmFpbnMgcy5yLm8uCisqCisqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorKgorKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyoKKyogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyovCitAaW50ZXJmYWNlIFJlc291cmNlIHt9CitjbGFzcyBUZXN0eworICBAUmVzb3VyY2UKKyAgcHJpdmF0ZSBpbnQgPHdhcm5pbmcgZGVzY3I9IlByaXZhdGUgZmllbGQgJ2ZpZWxkJyBpcyBhc3NpZ25lZCBidXQgbmV2ZXIgYWNjZXNzZWQiPmZpZWxkPC93YXJuaW5nPjsKKworICBAUmVzb3VyY2UKKyAgcHJpdmF0ZSBpbnQgZmllbGQyOworCisgIGludCBmKCkgeworICAgIHJldHVybiBmaWVsZDI7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3VudXNlZERlY2xzL0lubmVyQ2xhc3MuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvdW51c2VkRGVjbHMvSW5uZXJDbGFzcy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYzZjJhNjEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3VudXNlZERlY2xzL0lubmVyQ2xhc3MuamF2YQpAQCAtMCwwICsxLDMgQEAKK2NsYXNzIFRlc3R7CisgIHByaXZhdGUgY2xhc3MgPHdhcm5pbmc+SW5uZXI8L3dhcm5pbmc+e30KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3VudXNlZERlY2xzL0lubmVyVXNlc1NlbGYuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvdW51c2VkRGVjbHMvSW5uZXJVc2VzU2VsZi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ2NTA2MjUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3VudXNlZERlY2xzL0lubmVyVXNlc1NlbGYuamF2YQpAQCAtMCwwICsxLDUgQEAKK2NsYXNzIFRlc3R7CisgIHByaXZhdGUgY2xhc3MgPHdhcm5pbmc+SW5uZXI8L3dhcm5pbmc+eworICAgIElubmVyIG5leHQ7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3VudXNlZERlY2xzL0xvY2FsQ2xhc3MuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvdW51c2VkRGVjbHMvTG9jYWxDbGFzcy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVhZWE2YmYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3VudXNlZERlY2xzL0xvY2FsQ2xhc3MuamF2YQpAQCAtMCwwICsxLDcgQEAKK3B1YmxpYyBjbGFzcyBUZXN0IHsgCisgICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oKSB7CisJY2xhc3MgSW5uZXIxe307CisJY2xhc3MgPHdhcm5pbmc+SW5uZXIyPC93YXJuaW5nPiB7fTsKKwluZXcgSW5uZXIxKCk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci91bnVzZWRJbXBvcnRzLzEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvdW51c2VkSW1wb3J0cy8xLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjEyZTNkMgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvdW51c2VkSW1wb3J0cy8xLmphdmEKQEAgLTAsMCArMSw2IEBACis8d2FybmluZz5pbXBvcnQgamF2YXguc3dpbmcuSlBhbmVsOzwvd2FybmluZz4KK2ltcG9ydCBqYXZheC5zd2luZy5KQ29tcG9uZW50OworCitjbGFzcyBUZXN0eworICBKQ29tcG9uZW50IGNvbXBvbmVudDsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3VudXNlZEltcG9ydHMvMi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci91bnVzZWRJbXBvcnRzLzIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NTkzODMwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci91bnVzZWRJbXBvcnRzLzIuamF2YQpAQCAtMCwwICsxLDYgQEAKKzx3YXJuaW5nPmltcG9ydCBqYXZhLmF3dC4qOzwvd2FybmluZz4KK2ltcG9ydCBqYXZheC5zd2luZy4qOworCitjbGFzcyBUZXN0eworICBKQ29tcG9uZW50IGNvbXBvbmVudDsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3VudXNlZEltcG9ydHMvSW5uZXJzT25EZW1hbmQxLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3VudXNlZEltcG9ydHMvSW5uZXJzT25EZW1hbmQxLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDA4NDNhZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvdW51c2VkSW1wb3J0cy9Jbm5lcnNPbkRlbWFuZDEuamF2YQpAQCAtMCwwICsxLDExIEBACitpbXBvcnQgPGVycm9yIGRlc2NyPSJDYW5ub3QgcmVzb2x2ZSBzeW1ib2wgJ091dGVyQ2xhc3MnIj5PdXRlckNsYXNzPC9lcnJvcj4uKjsKKworY2xhc3MgT3V0ZXJDbGFzc3sKKyAgY2xhc3MgSW5uZXJ7fQorfQorCitjbGFzcyBYeworICBJbm5lciBpbm5lcjsKK30KKworCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3VudXNlZEltcG9ydHMvSW5uZXJzT25EZW1hbmQyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3VudXNlZEltcG9ydHMvSW5uZXJzT25EZW1hbmQyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTc2YjUzMQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvdW51c2VkSW1wb3J0cy9Jbm5lcnNPbkRlbWFuZDIuamF2YQpAQCAtMCwwICsxLDcgQEAKKzx3YXJuaW5nIGRlc2NyPSJVbnVzZWQgaW1wb3J0IHN0YXRlbWVudCI+aW1wb3J0IDxlcnJvciBkZXNjcj0iQ2Fubm90IHJlc29sdmUgc3ltYm9sICdPdXRlckNsYXNzJyI+T3V0ZXJDbGFzczwvZXJyb3I+Lio7PC93YXJuaW5nPgorCitjbGFzcyBPdXRlckNsYXNzeworICBjbGFzcyBJbm5lcnt9Cit9CisKKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci91bnVzZWRJbXBvcnRzL1F1YWxpZmllZC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci91bnVzZWRJbXBvcnRzL1F1YWxpZmllZC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI5OGI1OTIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3VudXNlZEltcG9ydHMvUXVhbGlmaWVkLmphdmEKQEAgLTAsMCArMSw1IEBACis8d2FybmluZz5pbXBvcnQgamF2YXguc3dpbmcuKjs8L3dhcm5pbmc+CisKK2NsYXNzIFRlc3R7CisgIGphdmF4LnN3aW5nLkpDb21wb25lbnQgY29tcG9uZW50OworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvdW51c2VkSW1wb3J0cy9TdGF0aWNJbXBvcnRpbmdJbm5lci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci91bnVzZWRJbXBvcnRzL1N0YXRpY0ltcG9ydGluZ0lubmVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjZkMzg0YgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvdW51c2VkSW1wb3J0cy9TdGF0aWNJbXBvcnRpbmdJbm5lci5qYXZhCkBAIC0wLDAgKzEsNiBAQAoraW1wb3J0IHN0YXRpYyBwYWNrYWdlMS5jLio7Cis8d2FybmluZz5pbXBvcnQgc3RhdGljIHBhY2thZ2UxLmMuKjs8L3dhcm5pbmc+CisKK3B1YmxpYyBjbGFzcyBhIHsKKyAgICAgaW50IHggPSBNeUlubmVyLmE7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci91bnVzZWRJbXBvcnRzL1VuY2xvc2VkLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3VudXNlZEltcG9ydHMvVW5jbG9zZWQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45YWNjMjg0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci91bnVzZWRJbXBvcnRzL1VuY2xvc2VkLmphdmEKQEAgLTAsMCArMSw0IEBACitpbXBvcnQgamF2YXguc3dpbmcuSlBhbmVsPEVPTEVycm9yLz4KKworY2xhc3MgVGVzdHsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3VudXNlZEltcG9ydHMvV2l0aEhpZ2hsaWdodGluZ09mZi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci91bnVzZWRJbXBvcnRzL1dpdGhIaWdobGlnaHRpbmdPZmYuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYTAwZTZkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci91bnVzZWRJbXBvcnRzL1dpdGhIaWdobGlnaHRpbmdPZmYuamF2YQpAQCAtMCwwICsxLDUgQEAKK2ltcG9ydCBqYXZheC5zd2luZy5KQ29tcG9uZW50OworCitjbGFzcyBUZXN0eworICBKQ29tcG9uZW50IGNvbXBvbmVudDsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3VudXNlZEltcG9ydHMvcGFja2FnZTEvYS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci91bnVzZWRJbXBvcnRzL3BhY2thZ2UxL2EuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZDQ5ODlhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci91bnVzZWRJbXBvcnRzL3BhY2thZ2UxL2EuamF2YQpAQCAtMCwwICsxLDcgQEAKK3BhY2thZ2UgcGFja2FnZTE7CisKKzx3YXJuaW5nIGRlc2NyPSJVbnVzZWQgaW1wb3J0IHN0YXRlbWVudCI+aW1wb3J0IHBhY2thZ2UxLmI7PC93YXJuaW5nPgorCitjbGFzcyBhIHsKKyBiIGIgPSBudWxsOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvdW51c2VkSW1wb3J0cy9wYWNrYWdlMS9iLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3VudXNlZEltcG9ydHMvcGFja2FnZTEvYi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg1MWJiMjQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGFlbW9uQ29kZUFuYWx5emVyL3VudXNlZEltcG9ydHMvcGFja2FnZTEvYi5qYXZhCkBAIC0wLDAgKzEsNyBAQAorcGFja2FnZSBwYWNrYWdlMTsKKworPHdhcm5pbmcgZGVzY3I9IlVudXNlZCBpbXBvcnQgc3RhdGVtZW50Ij5pbXBvcnQgcGFja2FnZTEuKjs8L3dhcm5pbmc+CisKK2NsYXNzIGIgeworIGEgYSA9IG51bGw7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RhZW1vbkNvZGVBbmFseXplci91bnVzZWRJbXBvcnRzL3BhY2thZ2UxL2MuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvdW51c2VkSW1wb3J0cy9wYWNrYWdlMS9jLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGZlYjEzZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kYWVtb25Db2RlQW5hbHl6ZXIvdW51c2VkSW1wb3J0cy9wYWNrYWdlMS9jLmphdmEKQEAgLTAsMCArMSwxMCBAQAorcGFja2FnZSBwYWNrYWdlMTsKKworcHVibGljIGludGVyZmFjZSBjCit7CisgICAgcHVibGljIGludGVyZmFjZSBNeUlubmVyCisgICAgeworICAgICAgICBpbnQgYSA9IDE7CisgICAgICAgIGludCBiID0gMjsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RlZmF1bHRBY3Rpb24vY3VzdG9tRmlsZVR5cGUvSW5zZXJ0QnJhY2VPbkVudGVyLmNzIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RlZmF1bHRBY3Rpb24vY3VzdG9tRmlsZVR5cGUvSW5zZXJ0QnJhY2VPbkVudGVyLmNzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUyOWQxNmIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGVmYXVsdEFjdGlvbi9jdXN0b21GaWxlVHlwZS9JbnNlcnRCcmFjZU9uRW50ZXIuY3MKQEAgLTAsMCArMSBAQAorZnVuY3Rpb24gYWFhKCkgezxjYXJldD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGVmYXVsdEFjdGlvbi9jdXN0b21GaWxlVHlwZS9JbnNlcnRCcmFjZU9uRW50ZXJKYXZhRnguZnggYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGVmYXVsdEFjdGlvbi9jdXN0b21GaWxlVHlwZS9JbnNlcnRCcmFjZU9uRW50ZXJKYXZhRnguZngKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDZhYzY1NgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kZWZhdWx0QWN0aW9uL2N1c3RvbUZpbGVUeXBlL0luc2VydEJyYWNlT25FbnRlckphdmFGeC5meApAQCAtMCwwICsxIEBACit2YXIgc3h5ID0gVGltZWxpbmUgezxjYXJldD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGVmYXVsdEFjdGlvbi9jdXN0b21GaWxlVHlwZS9JbnNlcnRCcmFjZU9uRW50ZXJKYXZhRnhfYWZ0ZXIuZnggYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGVmYXVsdEFjdGlvbi9jdXN0b21GaWxlVHlwZS9JbnNlcnRCcmFjZU9uRW50ZXJKYXZhRnhfYWZ0ZXIuZngKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWI3M2RlOQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kZWZhdWx0QWN0aW9uL2N1c3RvbUZpbGVUeXBlL0luc2VydEJyYWNlT25FbnRlckphdmFGeF9hZnRlci5meApAQCAtMCwwICsxLDMgQEAKK3ZhciBzeHkgPSBUaW1lbGluZSB7Cis8Y2FyZXQ+Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RlZmF1bHRBY3Rpb24vY3VzdG9tRmlsZVR5cGUvSW5zZXJ0QnJhY2VPbkVudGVyX2FmdGVyLmNzIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RlZmF1bHRBY3Rpb24vY3VzdG9tRmlsZVR5cGUvSW5zZXJ0QnJhY2VPbkVudGVyX2FmdGVyLmNzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ0MmVkNjkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGVmYXVsdEFjdGlvbi9jdXN0b21GaWxlVHlwZS9JbnNlcnRCcmFjZU9uRW50ZXJfYWZ0ZXIuY3MKQEAgLTAsMCArMSwzIEBACitmdW5jdGlvbiBhYWEoKSB7CisKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGVmYXVsdEFjdGlvbi9jdXN0b21GaWxlVHlwZS9JbnNlcnREZWxldGVCcmFja2V0LmNzIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RlZmF1bHRBY3Rpb24vY3VzdG9tRmlsZVR5cGUvSW5zZXJ0RGVsZXRlQnJhY2tldC5jcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hODZjZmM4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RlZmF1bHRBY3Rpb24vY3VzdG9tRmlsZVR5cGUvSW5zZXJ0RGVsZXRlQnJhY2tldC5jcwpAQCAtMCwwICsxIEBACitkb2N1bWVudDxjYXJldD4KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kZWZhdWx0QWN0aW9uL2N1c3RvbUZpbGVUeXBlL0luc2VydERlbGV0ZUJyYWNrZXRfYWZ0ZXIuY3MgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGVmYXVsdEFjdGlvbi9jdXN0b21GaWxlVHlwZS9JbnNlcnREZWxldGVCcmFja2V0X2FmdGVyLmNzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEyNDczZjkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGVmYXVsdEFjdGlvbi9jdXN0b21GaWxlVHlwZS9JbnNlcnREZWxldGVCcmFja2V0X2FmdGVyLmNzCkBAIC0wLDAgKzEgQEAKK2RvY3VtZW50WzxjYXJldD5dCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGVmYXVsdEFjdGlvbi9jdXN0b21GaWxlVHlwZS9JbnNlcnREZWxldGVCcmFja2V0X2FmdGVyMi5jcyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kZWZhdWx0QWN0aW9uL2N1c3RvbUZpbGVUeXBlL0luc2VydERlbGV0ZUJyYWNrZXRfYWZ0ZXIyLmNzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI1NGY4NjIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGVmYXVsdEFjdGlvbi9jdXN0b21GaWxlVHlwZS9JbnNlcnREZWxldGVCcmFja2V0X2FmdGVyMi5jcwpAQCAtMCwwICsxIEBACitkb2N1bWVudFtdPGNhcmV0PgpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RlZmF1bHRBY3Rpb24vY3VzdG9tRmlsZVR5cGUvSW5zZXJ0RGVsZXRlUGFyZW50aC5jcyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kZWZhdWx0QWN0aW9uL2N1c3RvbUZpbGVUeXBlL0luc2VydERlbGV0ZVBhcmVudGguY3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTg2Y2ZjOAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kZWZhdWx0QWN0aW9uL2N1c3RvbUZpbGVUeXBlL0luc2VydERlbGV0ZVBhcmVudGguY3MKQEAgLTAsMCArMSBAQAorZG9jdW1lbnQ8Y2FyZXQ+CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGVmYXVsdEFjdGlvbi9jdXN0b21GaWxlVHlwZS9JbnNlcnREZWxldGVQYXJlbnRoMi5jcyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kZWZhdWx0QWN0aW9uL2N1c3RvbUZpbGVUeXBlL0luc2VydERlbGV0ZVBhcmVudGgyLmNzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU2OWRlMjkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGVmYXVsdEFjdGlvbi9jdXN0b21GaWxlVHlwZS9JbnNlcnREZWxldGVQYXJlbnRoMi5jcwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RlZmF1bHRBY3Rpb24vY3VzdG9tRmlsZVR5cGUvSW5zZXJ0RGVsZXRlUGFyZW50aDJfMi5jcyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kZWZhdWx0QWN0aW9uL2N1c3RvbUZpbGVUeXBlL0luc2VydERlbGV0ZVBhcmVudGgyXzIuY3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTIzOTQwZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kZWZhdWx0QWN0aW9uL2N1c3RvbUZpbGVUeXBlL0luc2VydERlbGV0ZVBhcmVudGgyXzIuY3MKQEAgLTAsMCArMSBAQAorZG9jdW1lbnQ8Y2FyZXQ+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RlZmF1bHRBY3Rpb24vY3VzdG9tRmlsZVR5cGUvSW5zZXJ0RGVsZXRlUGFyZW50aDJfMl9hZnRlci5jcyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kZWZhdWx0QWN0aW9uL2N1c3RvbUZpbGVUeXBlL0luc2VydERlbGV0ZVBhcmVudGgyXzJfYWZ0ZXIuY3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2M3YzRkZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kZWZhdWx0QWN0aW9uL2N1c3RvbUZpbGVUeXBlL0luc2VydERlbGV0ZVBhcmVudGgyXzJfYWZ0ZXIuY3MKQEAgLTAsMCArMSBAQAorZG9jdW1lbnQoPGNhcmV0PikKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGVmYXVsdEFjdGlvbi9jdXN0b21GaWxlVHlwZS9JbnNlcnREZWxldGVQYXJlbnRoMl9hZnRlci5jcyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kZWZhdWx0QWN0aW9uL2N1c3RvbUZpbGVUeXBlL0luc2VydERlbGV0ZVBhcmVudGgyX2FmdGVyLmNzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJkMjdiYjUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGVmYXVsdEFjdGlvbi9jdXN0b21GaWxlVHlwZS9JbnNlcnREZWxldGVQYXJlbnRoMl9hZnRlci5jcwpAQCAtMCwwICsxIEBACisoPGNhcmV0PikKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGVmYXVsdEFjdGlvbi9jdXN0b21GaWxlVHlwZS9JbnNlcnREZWxldGVQYXJlbnRoX2FmdGVyLmNzIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RlZmF1bHRBY3Rpb24vY3VzdG9tRmlsZVR5cGUvSW5zZXJ0RGVsZXRlUGFyZW50aF9hZnRlci5jcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42Zjk0MjlkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RlZmF1bHRBY3Rpb24vY3VzdG9tRmlsZVR5cGUvSW5zZXJ0RGVsZXRlUGFyZW50aF9hZnRlci5jcwpAQCAtMCwwICsxIEBACitkb2N1bWVudCg8Y2FyZXQ+KQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RlZmF1bHRBY3Rpb24vY3VzdG9tRmlsZVR5cGUvSW5zZXJ0RGVsZXRlUGFyZW50aF9hZnRlcjIuY3MgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGVmYXVsdEFjdGlvbi9jdXN0b21GaWxlVHlwZS9JbnNlcnREZWxldGVQYXJlbnRoX2FmdGVyMi5jcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MTIyNTgyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RlZmF1bHRBY3Rpb24vY3VzdG9tRmlsZVR5cGUvSW5zZXJ0RGVsZXRlUGFyZW50aF9hZnRlcjIuY3MKQEAgLTAsMCArMSBAQAorZG9jdW1lbnQoKTxjYXJldD4KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kZWZhdWx0QWN0aW9uL2N1c3RvbUZpbGVUeXBlL0luc2VydERlbGV0ZVF1b3RlLmFqIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RlZmF1bHRBY3Rpb24vY3VzdG9tRmlsZVR5cGUvSW5zZXJ0RGVsZXRlUXVvdGUuYWoKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDU1ZTNhOAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kZWZhdWx0QWN0aW9uL2N1c3RvbUZpbGVUeXBlL0luc2VydERlbGV0ZVF1b3RlLmFqCkBAIC0wLDAgKzEsNiBAQAorYXNwZWN0IEdldEluZm8geworICAgT2JqZWN0IEMuYWJvdXQoKSB7CisgICAgICBwcmludGxuKDxjYXJldD4pCisgICAgICByZXR1cm4gcmVzdWx0OworICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RlZmF1bHRBY3Rpb24vY3VzdG9tRmlsZVR5cGUvSW5zZXJ0RGVsZXRlUXVvdGUuY3MgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGVmYXVsdEFjdGlvbi9jdXN0b21GaWxlVHlwZS9JbnNlcnREZWxldGVRdW90ZS5jcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMWQyMjBlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RlZmF1bHRBY3Rpb24vY3VzdG9tRmlsZVR5cGUvSW5zZXJ0RGVsZXRlUXVvdGUuY3MKQEAgLTAsMCArMSBAQAorZG9jdW1lbnQud3JpdGUoPGNhcmV0Pik7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RlZmF1bHRBY3Rpb24vY3VzdG9tRmlsZVR5cGUvSW5zZXJ0RGVsZXRlUXVvdGUucGwgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGVmYXVsdEFjdGlvbi9jdXN0b21GaWxlVHlwZS9JbnNlcnREZWxldGVRdW90ZS5wbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZjQxZmZhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RlZmF1bHRBY3Rpb24vY3VzdG9tRmlsZVR5cGUvSW5zZXJ0RGVsZXRlUXVvdGUucGwKQEAgLTAsMCArMSBAQAorJGEgPSA8Y2FyZXQ+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RlZmF1bHRBY3Rpb24vY3VzdG9tRmlsZVR5cGUvSW5zZXJ0RGVsZXRlUXVvdGVfYWZ0ZXIuYWogYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGVmYXVsdEFjdGlvbi9jdXN0b21GaWxlVHlwZS9JbnNlcnREZWxldGVRdW90ZV9hZnRlci5hagpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZjI0YTJiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RlZmF1bHRBY3Rpb24vY3VzdG9tRmlsZVR5cGUvSW5zZXJ0RGVsZXRlUXVvdGVfYWZ0ZXIuYWoKQEAgLTAsMCArMSw2IEBACithc3BlY3QgR2V0SW5mbyB7CisgICBPYmplY3QgQy5hYm91dCgpIHsKKyAgICAgIHByaW50bG4oIjxjYXJldD4iKQorICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kZWZhdWx0QWN0aW9uL2N1c3RvbUZpbGVUeXBlL0luc2VydERlbGV0ZVF1b3RlX2FmdGVyLmNzIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RlZmF1bHRBY3Rpb24vY3VzdG9tRmlsZVR5cGUvSW5zZXJ0RGVsZXRlUXVvdGVfYWZ0ZXIuY3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDI0OTk3ZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kZWZhdWx0QWN0aW9uL2N1c3RvbUZpbGVUeXBlL0luc2VydERlbGV0ZVF1b3RlX2FmdGVyLmNzCkBAIC0wLDAgKzEgQEAKK2RvY3VtZW50LndyaXRlKCI8Y2FyZXQ+Iik7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RlZmF1bHRBY3Rpb24vY3VzdG9tRmlsZVR5cGUvSW5zZXJ0RGVsZXRlUXVvdGVfYWZ0ZXIucGwgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGVmYXVsdEFjdGlvbi9jdXN0b21GaWxlVHlwZS9JbnNlcnREZWxldGVRdW90ZV9hZnRlci5wbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MjcyNDIzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RlZmF1bHRBY3Rpb24vY3VzdG9tRmlsZVR5cGUvSW5zZXJ0RGVsZXRlUXVvdGVfYWZ0ZXIucGwKQEAgLTAsMCArMSBAQAorJGEgPSAiPGNhcmV0PiIKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGVmYXVsdEFjdGlvbi9jdXN0b21GaWxlVHlwZS9ibG9ja05hdmlnYXRpb24uY3MgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZGVmYXVsdEFjdGlvbi9jdXN0b21GaWxlVHlwZS9ibG9ja05hdmlnYXRpb24uY3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTU5MWUwNwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kZWZhdWx0QWN0aW9uL2N1c3RvbUZpbGVUeXBlL2Jsb2NrTmF2aWdhdGlvbi5jcwpAQCAtMCwwICsxLDMgQEAKK2Z1bmN0aW9uIGEgKCkgPGNhcmV0PnsKKworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kZWZhdWx0QWN0aW9uL2N1c3RvbUZpbGVUeXBlL2Jsb2NrTmF2aWdhdGlvbl9hZnRlci5jcyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9kZWZhdWx0QWN0aW9uL2N1c3RvbUZpbGVUeXBlL2Jsb2NrTmF2aWdhdGlvbl9hZnRlci5jcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MmNjMGViCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2RlZmF1bHRBY3Rpb24vY3VzdG9tRmlsZVR5cGUvYmxvY2tOYXZpZ2F0aW9uX2FmdGVyLmNzCkBAIC0wLDAgKzEsMyBAQAorZnVuY3Rpb24gYSAoKSB7CisKK308Y2FyZXQ+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2V4dGVybmFsQW5ub3RhdGlvbnMvY29udGVudC9hbm5vL3AvYW5ub3RhdGlvbnMueG1sIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2V4dGVybmFsQW5ub3RhdGlvbnMvY29udGVudC9hbm5vL3AvYW5ub3RhdGlvbnMueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRkOTA1YTQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZXh0ZXJuYWxBbm5vdGF0aW9ucy9jb250ZW50L2Fubm8vcC9hbm5vdGF0aW9ucy54bWwKQEAgLTAsMCArMSw4IEBACis8cm9vdD4KKyAgPGl0ZW0gbmFtZT0ncC5UZXN0RGVhbm5vdGF0aW9uIGphdmEubGFuZy5TdHJpbmcgZ2V0KCknPgorICAgIDxhbm5vdGF0aW9uIG5hbWU9J29yZy5qZXRicmFpbnMuYW5ub3RhdGlvbnMuTm90TnVsbCcvPgorICA8L2l0ZW0+CisgIDxpdGVtIG5hbWU9J3AuVGVzdERlYW5ub3RhdGlvbjEgamF2YS5sYW5nLlN0cmluZyBnZXQoamF2YS5sYW5nLlN0cmluZykgMCc+CisgICAgPGFubm90YXRpb24gbmFtZT0nb3JnLmpldGJyYWlucy5hbm5vdGF0aW9ucy5Ob3ROdWxsJy8+CisgIDwvaXRlbT4KKzwvcm9vdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZXh0ZXJuYWxBbm5vdGF0aW9ucy9jb250ZW50L2Fubm8vcC9hbm5vdGF0aW9uc0Fubm90YXRlTGlicmFyeV9hZnRlci54bWwgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZXh0ZXJuYWxBbm5vdGF0aW9ucy9jb250ZW50L2Fubm8vcC9hbm5vdGF0aW9uc0Fubm90YXRlTGlicmFyeV9hZnRlci54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTdkMGRkNQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9leHRlcm5hbEFubm90YXRpb25zL2NvbnRlbnQvYW5uby9wL2Fubm90YXRpb25zQW5ub3RhdGVMaWJyYXJ5X2FmdGVyLnhtbApAQCAtMCwwICsxLDExIEBACis8cm9vdD4KKyAgPGl0ZW0gbmFtZT0ncC5UZXN0RGVhbm5vdGF0aW9uIGphdmEubGFuZy5TdHJpbmcgZ2V0KCknPgorICAgIDxhbm5vdGF0aW9uIG5hbWU9J29yZy5qZXRicmFpbnMuYW5ub3RhdGlvbnMuTm90TnVsbCcvPgorICA8L2l0ZW0+CisgIDxpdGVtIG5hbWU9J3AuVGVzdERlYW5ub3RhdGlvbjEgamF2YS5sYW5nLlN0cmluZyBnZXQoamF2YS5sYW5nLlN0cmluZykgMCc+CisgICAgPGFubm90YXRpb24gbmFtZT0nb3JnLmpldGJyYWlucy5hbm5vdGF0aW9ucy5Ob3ROdWxsJy8+CisgIDwvaXRlbT4KKyAgICA8aXRlbSBuYW1lPSdwLlRlc3QgamF2YS5sYW5nLlN0cmluZyBnZXQoKSc+CisgICAgICAgIDxhbm5vdGF0aW9uIG5hbWU9J29yZy5qZXRicmFpbnMuYW5ub3RhdGlvbnMuTm90TnVsbCcvPgorICAgIDwvaXRlbT4KKzwvcm9vdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZXh0ZXJuYWxBbm5vdGF0aW9ucy9jb250ZW50L2Fubm8vcC9hbm5vdGF0aW9uc0RlYW5ub3RhdGlvbjFfYWZ0ZXIueG1sIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2V4dGVybmFsQW5ub3RhdGlvbnMvY29udGVudC9hbm5vL3AvYW5ub3RhdGlvbnNEZWFubm90YXRpb24xX2FmdGVyLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MmZhOThiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2V4dGVybmFsQW5ub3RhdGlvbnMvY29udGVudC9hbm5vL3AvYW5ub3RhdGlvbnNEZWFubm90YXRpb24xX2FmdGVyLnhtbApAQCAtMCwwICsxLDUgQEAKKzxyb290PgorICA8aXRlbSBuYW1lPSdwLlRlc3REZWFubm90YXRpb24gamF2YS5sYW5nLlN0cmluZyBnZXQoKSc+CisgICAgPGFubm90YXRpb24gbmFtZT0nb3JnLmpldGJyYWlucy5hbm5vdGF0aW9ucy5Ob3ROdWxsJy8+CisgIDwvaXRlbT4KKzwvcm9vdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZXh0ZXJuYWxBbm5vdGF0aW9ucy9jb250ZW50L2Fubm8vcC9hbm5vdGF0aW9uc0RlYW5ub3RhdGlvbl9hZnRlci54bWwgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZXh0ZXJuYWxBbm5vdGF0aW9ucy9jb250ZW50L2Fubm8vcC9hbm5vdGF0aW9uc0RlYW5ub3RhdGlvbl9hZnRlci54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2I1YzdmNwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9leHRlcm5hbEFubm90YXRpb25zL2NvbnRlbnQvYW5uby9wL2Fubm90YXRpb25zRGVhbm5vdGF0aW9uX2FmdGVyLnhtbApAQCAtMCwwICsxLDUgQEAKKzxyb290PgorICAgIDxpdGVtIG5hbWU9J3AuVGVzdERlYW5ub3RhdGlvbjEgamF2YS5sYW5nLlN0cmluZyBnZXQoamF2YS5sYW5nLlN0cmluZykgMCc+CisgICAgPGFubm90YXRpb24gbmFtZT0nb3JnLmpldGJyYWlucy5hbm5vdGF0aW9ucy5Ob3ROdWxsJy8+CisgIDwvaXRlbT4KKzwvcm9vdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZXh0ZXJuYWxBbm5vdGF0aW9ucy9jb250ZW50L2Fubm8vcGVyc2lzdGVuY2UvYW5ub3RhdGlvbnMueG1sIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2V4dGVybmFsQW5ub3RhdGlvbnMvY29udGVudC9hbm5vL3BlcnNpc3RlbmNlL2Fubm90YXRpb25zLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZTlhZDBmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2V4dGVybmFsQW5ub3RhdGlvbnMvY29udGVudC9hbm5vL3BlcnNpc3RlbmNlL2Fubm90YXRpb25zLnhtbApAQCAtMCwwICsxLDE0IEBACis8cm9vdD4KKyAgPGl0ZW0gbmFtZT0ncGVyc2lzdGVuY2UuVGVzdCBqYXZhLmxhbmcuU3RyaW5nPFQ+IGdldFN0cmluZyhqYXZhLnV0aWwuTWFwLkVudHJ5PFQsVD4pIDAnPgorICAgIDxhbm5vdGF0aW9uIG5hbWU9J29yZy5qZXRicmFpbnMuYW5ub3RhdGlvbnMuTm90TnVsbCcvPgorICA8L2l0ZW0+CisgIDxpdGVtIG5hbWU9J3BlcnNpc3RlbmNlLlRlc3QgamF2YS5sYW5nLlN0cmluZzxUPiBnZXRTdHJpbmcoamF2YS51dGlsLk1hcC5FbnRyeTxULCBUPikgMCc+CisgICAgPGFubm90YXRpb24gbmFtZT0nb3JnLmpldGJyYWlucy5hbm5vdGF0aW9ucy5Ob25ObHMnLz4KKyAgPC9pdGVtPgorICA8aXRlbSBuYW1lPSdwZXJzaXN0ZW5jZS5UZXN0IGphdmEubGFuZy5TdHJpbmcmbHQ7VCZndDsgZ2V0U3RyaW5nKGphdmEudXRpbC5NYXAuRW50cnkmbHQ7VCxUJmd0OyknPgorICAgIDxhbm5vdGF0aW9uIG5hbWU9J29yZy5qZXRicmFpbnMuYW5ub3RhdGlvbnMuTnVsbGFibGUnLz4KKyAgPC9pdGVtPgorICA8aXRlbSBuYW1lPSdwZXJzaXN0ZW5jZS5UZXN0IGphdmEubGFuZy5TdHJpbmcmbHQ7VCZndDsgZ2V0U3RyaW5nKGphdmEudXRpbC5NYXAuRW50cnkmbHQ7VCwgVCZndDspJz4KKyAgICA8YW5ub3RhdGlvbiBuYW1lPSdvcmcuamV0YnJhaW5zLmFubm90YXRpb25zLk5scycvPgorICA8L2l0ZW0+Cis8L3Jvb3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2V4dGVybmFsQW5ub3RhdGlvbnMvY29udGVudC9hbm5vL3N1cHByZXNzZWQvYW5ub3RhdGlvbnMueG1sIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2V4dGVybmFsQW5ub3RhdGlvbnMvY29udGVudC9hbm5vL3N1cHByZXNzZWQvYW5ub3RhdGlvbnMueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAxNDQzNjMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZXh0ZXJuYWxBbm5vdGF0aW9ucy9jb250ZW50L2Fubm8vc3VwcHJlc3NlZC9hbm5vdGF0aW9ucy54bWwKQEAgLTAsMCArMSwxMCBAQAorPHJvb3Q+CisgIDxpdGVtIG5hbWU9J3N1cHByZXNzZWQuRXhpc3RpbmdFeHRlcm5hbE5hbWUgamF2YS5sYW5nLlN0cmluZyBmb28oKSc+CisgICAgPGFubm90YXRpb24gbmFtZT0nb3JnLmpldGJyYWlucy5hbm5vdGF0aW9ucy5Ob3ROdWxsJy8+CisgIDwvaXRlbT4KKyAgPGl0ZW0gbmFtZT0nc3VwcHJlc3NlZC5TZWNvbmRTdXBwcmVzc2lvbiB2b2lkIHNlY29uZCgpJz4KKyAgICA8YW5ub3RhdGlvbiBuYW1lPSdqYXZhLmxhbmcuU3VwcHJlc3NXYXJuaW5ncyc+CisgICAgICA8dmFsIHZhbD0ie0RvZXNudE1hdHRlcldoYXR9Ii8+CisgICAgPC9hbm5vdGF0aW9uPgorICA8L2l0ZW0+Cis8L3Jvb3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2V4dGVybmFsQW5ub3RhdGlvbnMvY29udGVudC9hbm5vL3N1cHByZXNzZWQvYW5ub3RhdGlvbnNFeGlzdGluZ0V4dGVybmFsTmFtZV9hZnRlci54bWwgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZXh0ZXJuYWxBbm5vdGF0aW9ucy9jb250ZW50L2Fubm8vc3VwcHJlc3NlZC9hbm5vdGF0aW9uc0V4aXN0aW5nRXh0ZXJuYWxOYW1lX2FmdGVyLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZWE3OTM2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2V4dGVybmFsQW5ub3RhdGlvbnMvY29udGVudC9hbm5vL3N1cHByZXNzZWQvYW5ub3RhdGlvbnNFeGlzdGluZ0V4dGVybmFsTmFtZV9hZnRlci54bWwKQEAgLTAsMCArMSwxMyBAQAorPHJvb3Q+CisgIDxpdGVtIG5hbWU9J3N1cHByZXNzZWQuRXhpc3RpbmdFeHRlcm5hbE5hbWUgamF2YS5sYW5nLlN0cmluZyBmb28oKSc+CisgICAgPGFubm90YXRpb24gbmFtZT0nb3JnLmpldGJyYWlucy5hbm5vdGF0aW9ucy5Ob3ROdWxsJy8+CisgICAgICA8YW5ub3RhdGlvbiBuYW1lPSdqYXZhLmxhbmcuU3VwcHJlc3NXYXJuaW5ncyc+CisgICAgICAgICAgPHZhbCB2YWw9IiZxdW90O1NpbGx5QXNzaWdubWVudCZxdW90OyIvPgorICAgICAgPC9hbm5vdGF0aW9uPgorICA8L2l0ZW0+CisgIDxpdGVtIG5hbWU9J3N1cHByZXNzZWQuU2Vjb25kU3VwcHJlc3Npb24gdm9pZCBzZWNvbmQoKSc+CisgICAgPGFubm90YXRpb24gbmFtZT0namF2YS5sYW5nLlN1cHByZXNzV2FybmluZ3MnPgorICAgICAgPHZhbCB2YWw9IntEb2VzbnRNYXR0ZXJXaGF0fSIvPgorICAgIDwvYW5ub3RhdGlvbj4KKyAgPC9pdGVtPgorPC9yb290PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9leHRlcm5hbEFubm90YXRpb25zL2NvbnRlbnQvYW5uby9zdXBwcmVzc2VkL2Fubm90YXRpb25zTmV3U3VwcHJlc3NfYWZ0ZXIueG1sIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2V4dGVybmFsQW5ub3RhdGlvbnMvY29udGVudC9hbm5vL3N1cHByZXNzZWQvYW5ub3RhdGlvbnNOZXdTdXBwcmVzc19hZnRlci54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDNmOGM0MAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9leHRlcm5hbEFubm90YXRpb25zL2NvbnRlbnQvYW5uby9zdXBwcmVzc2VkL2Fubm90YXRpb25zTmV3U3VwcHJlc3NfYWZ0ZXIueG1sCkBAIC0wLDAgKzEsMTUgQEAKKzxyb290PgorICA8aXRlbSBuYW1lPSdzdXBwcmVzc2VkLkV4aXN0aW5nRXh0ZXJuYWxOYW1lIGphdmEubGFuZy5TdHJpbmcgZm9vKCknPgorICAgIDxhbm5vdGF0aW9uIG5hbWU9J29yZy5qZXRicmFpbnMuYW5ub3RhdGlvbnMuTm90TnVsbCcvPgorICA8L2l0ZW0+CisgIDxpdGVtIG5hbWU9J3N1cHByZXNzZWQuU2Vjb25kU3VwcHJlc3Npb24gdm9pZCBzZWNvbmQoKSc+CisgICAgPGFubm90YXRpb24gbmFtZT0namF2YS5sYW5nLlN1cHByZXNzV2FybmluZ3MnPgorICAgICAgPHZhbCB2YWw9IntEb2VzbnRNYXR0ZXJXaGF0fSIvPgorICAgIDwvYW5ub3RhdGlvbj4KKyAgPC9pdGVtPgorICAgIDxpdGVtIG5hbWU9J3N1cHByZXNzZWQuTmV3U3VwcHJlc3Mgdm9pZCBiYXJyKCknPgorICAgICAgICA8YW5ub3RhdGlvbiBuYW1lPSdqYXZhLmxhbmcuU3VwcHJlc3NXYXJuaW5ncyc+CisgICAgICAgICAgICA8dmFsIHZhbD0iJnF1b3Q7U2lsbHlBc3NpZ25tZW50JnF1b3Q7Ii8+CisgICAgICAgIDwvYW5ub3RhdGlvbj4KKyAgICA8L2l0ZW0+Cis8L3Jvb3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2V4dGVybmFsQW5ub3RhdGlvbnMvY29udGVudC9hbm5vL3N1cHByZXNzZWQvYW5ub3RhdGlvbnNTZWNvbmRTdXBwcmVzc2lvbl9hZnRlci54bWwgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZXh0ZXJuYWxBbm5vdGF0aW9ucy9jb250ZW50L2Fubm8vc3VwcHJlc3NlZC9hbm5vdGF0aW9uc1NlY29uZFN1cHByZXNzaW9uX2FmdGVyLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZmRmMTUzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2V4dGVybmFsQW5ub3RhdGlvbnMvY29udGVudC9hbm5vL3N1cHByZXNzZWQvYW5ub3RhdGlvbnNTZWNvbmRTdXBwcmVzc2lvbl9hZnRlci54bWwKQEAgLTAsMCArMSwxMCBAQAorPHJvb3Q+CisgIDxpdGVtIG5hbWU9J3N1cHByZXNzZWQuRXhpc3RpbmdFeHRlcm5hbE5hbWUgamF2YS5sYW5nLlN0cmluZyBmb28oKSc+CisgICAgPGFubm90YXRpb24gbmFtZT0nb3JnLmpldGJyYWlucy5hbm5vdGF0aW9ucy5Ob3ROdWxsJy8+CisgIDwvaXRlbT4KKyAgPGl0ZW0gbmFtZT0nc3VwcHJlc3NlZC5TZWNvbmRTdXBwcmVzc2lvbiB2b2lkIHNlY29uZCgpJz4KKyAgICAgIDxhbm5vdGF0aW9uIG5hbWU9J2phdmEubGFuZy5TdXBwcmVzc1dhcm5pbmdzJz4KKyAgICAgICAgICA8dmFsIHZhbD0ie0RvZXNudE1hdHRlcldoYXQsICZxdW90O1NpbGx5QXNzaWdubWVudCZxdW90O30iLz4KKyAgICAgIDwvYW5ub3RhdGlvbj4KKyAgPC9pdGVtPgorPC9yb290PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9leHRlcm5hbEFubm90YXRpb25zL2NvbnRlbnQvYW5ub011bHRpUm9vdC9yb290MS9tdWx0aVJvb3QvYW5ub3RhdGlvbnMueG1sIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2V4dGVybmFsQW5ub3RhdGlvbnMvY29udGVudC9hbm5vTXVsdGlSb290L3Jvb3QxL211bHRpUm9vdC9hbm5vdGF0aW9ucy54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzZhYThkOAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9leHRlcm5hbEFubm90YXRpb25zL2NvbnRlbnQvYW5ub011bHRpUm9vdC9yb290MS9tdWx0aVJvb3QvYW5ub3RhdGlvbnMueG1sCkBAIC0wLDAgKzEsNyBAQAorPHJvb3Q+CisgIDxpdGVtIG5hbWU9J211bHRpUm9vdC5UZXN0IGphdmEubGFuZy5TdHJpbmcgZ2V0KGphdmEubGFuZy5TdHJpbmcpIDAnPgorICAgIDxhbm5vdGF0aW9uIG5hbWU9J29yZy5qZXRicmFpbnMuYW5ub3RhdGlvbnMuTm90TnVsbCc+CisgICAgICA8dmFsIG5hbWU9InZhbHVlIiB2YWw9IiZxdW90O2ZvbyZxdW90OyIvPgorICAgIDwvYW5ub3RhdGlvbj4KKyAgPC9pdGVtPgorPC9yb290PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9leHRlcm5hbEFubm90YXRpb25zL2NvbnRlbnQvYW5ub011bHRpUm9vdC9yb290MS9tdWx0aVJvb3QvYW5ub3RhdGlvbnNfYWZ0ZXIueG1sIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2V4dGVybmFsQW5ub3RhdGlvbnMvY29udGVudC9hbm5vTXVsdGlSb290L3Jvb3QxL211bHRpUm9vdC9hbm5vdGF0aW9uc19hZnRlci54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjYzNWEzMwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9leHRlcm5hbEFubm90YXRpb25zL2NvbnRlbnQvYW5ub011bHRpUm9vdC9yb290MS9tdWx0aVJvb3QvYW5ub3RhdGlvbnNfYWZ0ZXIueG1sCkBAIC0wLDAgKzEsNyBAQAorPHJvb3Q+CisgIDxpdGVtIG5hbWU9J211bHRpUm9vdC5UZXN0IGphdmEubGFuZy5TdHJpbmcgZ2V0KGphdmEubGFuZy5TdHJpbmcpIDAnPgorICAgICAgPGFubm90YXRpb24gbmFtZT0nb3JnLmpldGJyYWlucy5hbm5vdGF0aW9ucy5Ob3ROdWxsJz4KKyAgICAgICAgICA8dmFsIG5hbWU9InZhbHVlIiB2YWw9IiZxdW90O2JhciZxdW90OyIvPgorICAgICAgPC9hbm5vdGF0aW9uPgorICA8L2l0ZW0+Cis8L3Jvb3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2V4dGVybmFsQW5ub3RhdGlvbnMvY29udGVudC9hbm5vTXVsdGlSb290L3Jvb3QyL211bHRpUm9vdC9hbm5vdGF0aW9ucy54bWwgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZXh0ZXJuYWxBbm5vdGF0aW9ucy9jb250ZW50L2Fubm9NdWx0aVJvb3Qvcm9vdDIvbXVsdGlSb290L2Fubm90YXRpb25zLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNDk3YTZlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2V4dGVybmFsQW5ub3RhdGlvbnMvY29udGVudC9hbm5vTXVsdGlSb290L3Jvb3QyL211bHRpUm9vdC9hbm5vdGF0aW9ucy54bWwKQEAgLTAsMCArMSw3IEBACis8cm9vdD4KKyAgPGl0ZW0gbmFtZT0nbXVsdGlSb290LlRlc3QgamF2YS5sYW5nLlN0cmluZyBnZXQoamF2YS5sYW5nLlN0cmluZyknPgorICAgIDxhbm5vdGF0aW9uIG5hbWU9J29yZy5qZXRicmFpbnMuYW5ub3RhdGlvbnMuTnVsbGFibGUnPgorICAgICAgPHZhbCBuYW1lPSJ2YWx1ZSIgdmFsPSImcXVvdDtmb28mcXVvdDsiLz4KKyAgICA8L2Fubm90YXRpb24+CisgIDwvaXRlbT4KKzwvcm9vdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZXh0ZXJuYWxBbm5vdGF0aW9ucy9jb250ZW50L2Fubm9NdWx0aVJvb3Qvcm9vdDIvbXVsdGlSb290L2Fubm90YXRpb25zX2FmdGVyLnhtbCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9leHRlcm5hbEFubm90YXRpb25zL2NvbnRlbnQvYW5ub011bHRpUm9vdC9yb290Mi9tdWx0aVJvb3QvYW5ub3RhdGlvbnNfYWZ0ZXIueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYwZTA0MWMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZXh0ZXJuYWxBbm5vdGF0aW9ucy9jb250ZW50L2Fubm9NdWx0aVJvb3Qvcm9vdDIvbXVsdGlSb290L2Fubm90YXRpb25zX2FmdGVyLnhtbApAQCAtMCwwICsxLDcgQEAKKzxyb290PgorICA8aXRlbSBuYW1lPSdtdWx0aVJvb3QuVGVzdCBqYXZhLmxhbmcuU3RyaW5nIGdldChqYXZhLmxhbmcuU3RyaW5nKSc+CisgICAgICA8YW5ub3RhdGlvbiBuYW1lPSdvcmcuamV0YnJhaW5zLmFubm90YXRpb25zLk51bGxhYmxlJz4KKyAgICAgICAgICA8dmFsIG5hbWU9InZhbHVlIiB2YWw9IiZxdW90O2JhciZxdW90OyIvPgorICAgICAgPC9hbm5vdGF0aW9uPgorICA8L2l0ZW0+Cis8L3Jvb3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2V4dGVybmFsQW5ub3RhdGlvbnMvbGliL211bHRpUm9vdC9UZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZXh0ZXJuYWxBbm5vdGF0aW9ucy9saWIvbXVsdGlSb290L1Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNDc4ZmFjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2V4dGVybmFsQW5ub3RhdGlvbnMvbGliL211bHRpUm9vdC9UZXN0LmphdmEKQEAgLTAsMCArMSw3IEBACitwYWNrYWdlIG11bHRpUm9vdDsKKworY2xhc3MgVGVzdCB7CisgIFN0cmluZyBnZXQoU3RyaW5nIHBhcmFtKSB7CisgICAgcmV0dXJuIG51bGw7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZXh0ZXJuYWxBbm5vdGF0aW9ucy9saWIvcC9UZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZXh0ZXJuYWxBbm5vdGF0aW9ucy9saWIvcC9UZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmNiNGQ4YwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9leHRlcm5hbEFubm90YXRpb25zL2xpYi9wL1Rlc3QuamF2YQpAQCAtMCwwICsxLDYgQEAKK3BhY2thZ2UgcDsKK2NsYXNzIFRlc3QgeworICBTdHJpbmcgZzxjYXJldD5ldCgpIHsKKyAgICByZXR1cm4gbnVsbDsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9leHRlcm5hbEFubm90YXRpb25zL2xpYi9wL1Rlc3RBbm5vdGF0ZWQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9leHRlcm5hbEFubm90YXRpb25zL2xpYi9wL1Rlc3RBbm5vdGF0ZWQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMDZhYzBhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2V4dGVybmFsQW5ub3RhdGlvbnMvbGliL3AvVGVzdEFubm90YXRlZC5qYXZhCkBAIC0wLDAgKzEsMTEgQEAKK3BhY2thZ2UgcDsKKworaW1wb3J0IG9yZy5qZXRicmFpbnMuYW5ub3RhdGlvbnMuTm90TnVsbDsKKworY2xhc3MgVGVzdCB7CisKKyAgQE5vdE51bGwKKyAgU3RyaW5nIGc8Y2FyZXQ+ZXQoKSB7CisgICAgcmV0dXJuIG51bGw7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZXh0ZXJuYWxBbm5vdGF0aW9ucy9saWIvcC9UZXN0RGVhbm5vdGF0aW9uLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZXh0ZXJuYWxBbm5vdGF0aW9ucy9saWIvcC9UZXN0RGVhbm5vdGF0aW9uLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjE3NWI5ZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9leHRlcm5hbEFubm90YXRpb25zL2xpYi9wL1Rlc3REZWFubm90YXRpb24uamF2YQpAQCAtMCwwICsxLDggQEAKK3BhY2thZ2UgcDsKKworcHVibGljIGNsYXNzIFRlc3REZWFubm90YXRpb24geworCisgIFN0cmluZyBnPGNhcmV0PmV0KCkgeworICAgIHJldHVybiBudWxsOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2V4dGVybmFsQW5ub3RhdGlvbnMvbGliL3AvVGVzdERlYW5ub3RhdGlvbjEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9leHRlcm5hbEFubm90YXRpb25zL2xpYi9wL1Rlc3REZWFubm90YXRpb24xLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjQwYjk0MAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9leHRlcm5hbEFubm90YXRpb25zL2xpYi9wL1Rlc3REZWFubm90YXRpb24xLmphdmEKQEAgLTAsMCArMSw4IEBACitwYWNrYWdlIHA7CisKK3B1YmxpYyBjbGFzcyBUZXN0RGVhbm5vdGF0aW9uMSB7CisKKyAgU3RyaW5nIGdldChTdHJpbmcgczxjYXJldD5zKSB7CisgICAgcmV0dXJuIG51bGw7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZXh0ZXJuYWxBbm5vdGF0aW9ucy9saWIvcC9UZXN0UHJpbWl0aXZlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZXh0ZXJuYWxBbm5vdGF0aW9ucy9saWIvcC9UZXN0UHJpbWl0aXZlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGJlNDlhOQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9leHRlcm5hbEFubm90YXRpb25zL2xpYi9wL1Rlc3RQcmltaXRpdmUuamF2YQpAQCAtMCwwICsxLDYgQEAKK3BhY2thZ2UgcDsKK2NsYXNzIFRlc3QgeworICBib29sZWFuIGc8Y2FyZXQ+ZXQoKSB7CisgICAgcmV0dXJuIGZhbHNlOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2V4dGVybmFsQW5ub3RhdGlvbnMvbGliL3BlcnNpc3RlbmNlL1Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9leHRlcm5hbEFubm90YXRpb25zL2xpYi9wZXJzaXN0ZW5jZS9UZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDYxZTM3NAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9leHRlcm5hbEFubm90YXRpb25zL2xpYi9wZXJzaXN0ZW5jZS9UZXN0LmphdmEKQEAgLTAsMCArMSw5IEBACitwYWNrYWdlIHBlcnNpc3RlbmNlOworCitpbXBvcnQgamF2YS51dGlsLio7CisKK2NsYXNzIFRlc3QgeworICBTdHJpbmcgPFQ+IGdldFN0cmluZyhNYXAuRW50cnk8VCwgVD4gZW50cnkpIHsKKyAgICByZXR1cm4gbnVsbDsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9leHRlcm5hbEFubm90YXRpb25zL3NyYy9zdXBwcmVzc2VkL0V4aXN0aW5nRXh0ZXJuYWxOYW1lLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZXh0ZXJuYWxBbm5vdGF0aW9ucy9zcmMvc3VwcHJlc3NlZC9FeGlzdGluZ0V4dGVybmFsTmFtZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZhODc1ZjgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZXh0ZXJuYWxBbm5vdGF0aW9ucy9zcmMvc3VwcHJlc3NlZC9FeGlzdGluZ0V4dGVybmFsTmFtZS5qYXZhCkBAIC0wLDAgKzEsOCBAQAorcGFja2FnZSBzdXBwcmVzc2VkOworY2xhc3MgRXhpc3RpbmdFeHRlcm5hbE5hbWUgeworICBTdHJpbmcgZm9vKCl7CisgICAgU3RyaW5nIHN0ciA9ICIiOworICAgIHM8Y2FyZXQ+dHIgPSBzdHI7CisgICAgcmV0dXJuIHN0cjsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9leHRlcm5hbEFubm90YXRpb25zL3NyYy9zdXBwcmVzc2VkL05ld1N1cHByZXNzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZXh0ZXJuYWxBbm5vdGF0aW9ucy9zcmMvc3VwcHJlc3NlZC9OZXdTdXBwcmVzcy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNmNjFjYjEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZXh0ZXJuYWxBbm5vdGF0aW9ucy9zcmMvc3VwcHJlc3NlZC9OZXdTdXBwcmVzcy5qYXZhCkBAIC0wLDAgKzEsNyBAQAorcGFja2FnZSBzdXBwcmVzc2VkOworY2xhc3MgTmV3U3VwcHJlc3MgeworICB2b2lkIGJhcnIoKSB7CisgICAgU3RyaW5nIHN0ciA9ICIiOworICAgIHN0PGNhcmV0PnIgPSBzdHI7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZXh0ZXJuYWxBbm5vdGF0aW9ucy9zcmMvc3VwcHJlc3NlZC9TZWNvbmRTdXBwcmVzc2lvbi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2V4dGVybmFsQW5ub3RhdGlvbnMvc3JjL3N1cHByZXNzZWQvU2Vjb25kU3VwcHJlc3Npb24uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MGY0YjE4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2V4dGVybmFsQW5ub3RhdGlvbnMvc3JjL3N1cHByZXNzZWQvU2Vjb25kU3VwcHJlc3Npb24uamF2YQpAQCAtMCwwICsxLDcgQEAKK3BhY2thZ2Ugc3VwcHJlc3NlZDsKK2NsYXNzIFNlY29uZFN1cHByZXNzaW9uIHsKKyAgdm9pZCBzZWNvbmQoKSB7CisgICAgU3RyaW5nIHN0ciA9ICIiOworICAgIHN0PGNhcmV0PnIgPSBzdHI7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZXh0ZXJuYWxKYXZhZG9jL1N0cmluZy82L2V4cGVjdGVkLmh0bWwgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZXh0ZXJuYWxKYXZhZG9jL1N0cmluZy82L2V4cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDVmOTZiZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9leHRlcm5hbEphdmFkb2MvU3RyaW5nLzYvZXhwZWN0ZWQuaHRtbApAQCAtMCwwICsxLDk5IEBACis8SFRNTD48c3R5bGUgdHlwZT0idGV4dC9jc3MiPiAgdWwuaW5oZXJpdGFuY2UgeworICAgICAgbWFyZ2luOjA7CisgICAgICBwYWRkaW5nOjA7CisgIH0KKyAgdWwuaW5oZXJpdGFuY2UgbGkgeworICAgICAgIGRpc3BsYXk6aW5saW5lOworICAgICAgIGxpc3Qtc3R5bGU6bm9uZTsKKyAgfQorICB1bC5pbmhlcml0YW5jZSBsaSB1bC5pbmhlcml0YW5jZSB7CisgICAgbWFyZ2luLWxlZnQ6MTVweDsKKyAgICBwYWRkaW5nLWxlZnQ6MTVweDsKKyAgICBwYWRkaW5nLXRvcDoxcHg7CisgIH0KKzwvc3R5bGU+PCEtLSA9PT09PT09PSBTVEFSVCBPRiBDTEFTUyBEQVRBID09PT09PT09IC0tPgorPEgyPgorICAgIDxGT05UIFNJWkU9Ii0xIj4KKyAgICAgICAgamF2YS5sYW5nPC9GT05UPgorICAgIDxCUj4KKyAgICBDbGFzcyBTdHJpbmc8L0gyPgorPFBSRT4KKzxBIEhSRUY9Ii4uLy4uL2phdmEvbGFuZy9PYmplY3QuaHRtbCIgdGl0bGU9ImNsYXNzIGluIGphdmEubGFuZyI+amF2YS5sYW5nLk9iamVjdDwvQT4KKyAgPElNRyBTUkM9Ii4uLy4uL3Jlc291cmNlcy9pbmhlcml0LmdpZiIgQUxUPSJleHRlbmRlZCBieSAiPjxCPmphdmEubGFuZy5TdHJpbmc8L0I+Cis8L1BSRT4KKzxETD48REw+CisgICAgPERUPjxCUj48UFJFPnB1YmxpYyBmaW5hbCBjbGFzcyA8Qj5TdHJpbmc8L0I+PERUPjxCUj5leHRlbmRzIDxBIEhSRUY9Ii4uLy4uL2phdmEvbGFuZy9PYmplY3QuaHRtbCIgdGl0bGU9ImNsYXNzIGluIGphdmEubGFuZyI+T2JqZWN0PC9BPjxEVD48QlI+aW1wbGVtZW50cyA8QSBIUkVGPSIuLi8uLi9qYXZhL2lvL1NlcmlhbGl6YWJsZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIGphdmEuaW8iPlNlcmlhbGl6YWJsZTwvQT4sIDxBIEhSRUY9Ii4uLy4uL2phdmEvbGFuZy9Db21wYXJhYmxlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gamF2YS5sYW5nIj5Db21wYXJhYmxlPC9BPiZsdDs8QSBIUkVGPSIuLi8uLi9qYXZhL2xhbmcvU3RyaW5nLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBqYXZhLmxhbmciPlN0cmluZzwvQT4mZ3Q7LCA8QSBIUkVGPSIuLi8uLi9qYXZhL2xhbmcvQ2hhclNlcXVlbmNlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gamF2YS5sYW5nIj5DaGFyU2VxdWVuY2U8L0E+PC9ETD4KKzwvUFJFPgorCisgICAgPERUPjxCPkFsbCBJbXBsZW1lbnRlZCBJbnRlcmZhY2VzOjwvQj4gPEREPjxBIEhSRUY9Ii4uLy4uL2phdmEvaW8vU2VyaWFsaXphYmxlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gamF2YS5pbyI+U2VyaWFsaXphYmxlPC9BPiwgPEEgSFJFRj0iLi4vLi4vamF2YS9sYW5nL0NoYXJTZXF1ZW5jZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIGphdmEubGFuZyI+Q2hhclNlcXVlbmNlPC9BPiwgPEEgSFJFRj0iLi4vLi4vamF2YS9sYW5nL0NvbXBhcmFibGUuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBqYXZhLmxhbmciPkNvbXBhcmFibGU8L0E+Jmx0OzxBIEhSRUY9Ii4uLy4uL2phdmEvbGFuZy9TdHJpbmcuaHRtbCIgdGl0bGU9ImNsYXNzIGluIGphdmEubGFuZyI+U3RyaW5nPC9BPiZndDs8L0REPgorPC9ETD4KKzxQPiAgICBUaGUgPGNvZGU+U3RyaW5nPC9jb2RlPiBjbGFzcyByZXByZXNlbnRzIGNoYXJhY3RlciBzdHJpbmdzLiBBbGwKKyAgICBzdHJpbmcgbGl0ZXJhbHMgaW4gSmF2YSBwcm9ncmFtcywgc3VjaCBhcyA8Y29kZT4iYWJjIjwvY29kZT4sIGFyZQorICAgIGltcGxlbWVudGVkIGFzIGluc3RhbmNlcyBvZiB0aGlzIGNsYXNzLgorPHA+CisgICAgU3RyaW5ncyBhcmUgY29uc3RhbnQ7IHRoZWlyIHZhbHVlcyBjYW5ub3QgYmUgY2hhbmdlZCBhZnRlciB0aGV5CisgICAgYXJlIGNyZWF0ZWQuIFN0cmluZyBidWZmZXJzIHN1cHBvcnQgbXV0YWJsZSBzdHJpbmdzLgorICAgIEJlY2F1c2UgU3RyaW5nIG9iamVjdHMgYXJlIGltbXV0YWJsZSB0aGV5IGNhbiBiZSBzaGFyZWQuIEZvciBleGFtcGxlOgorPHA+PGJsb2NrcXVvdGU+PHByZT4KKyAgICAgU3RyaW5nIHN0ciA9ICJhYmMiOworIDwvcHJlPjwvYmxvY2txdW90ZT48cD4KKyAgICBpcyBlcXVpdmFsZW50IHRvOgorPHA+PGJsb2NrcXVvdGU+PHByZT4KKyAgICAgY2hhciBkYXRhW10gPSB7J2EnLCAnYicsICdjJ307CisgICAgIFN0cmluZyBzdHIgPSBuZXcgU3RyaW5nKGRhdGEpOworIDwvcHJlPjwvYmxvY2txdW90ZT48cD4KKyAgICBIZXJlIGFyZSBzb21lIG1vcmUgZXhhbXBsZXMgb2YgaG93IHN0cmluZ3MgY2FuIGJlIHVzZWQ6Cis8cD48YmxvY2txdW90ZT48cHJlPgorICAgICBTeXN0ZW0ub3V0LnByaW50bG4oImFiYyIpOworICAgICBTdHJpbmcgY2RlID0gImNkZSI7CisgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiYWJjIiArIGNkZSk7CisgICAgIFN0cmluZyBjID0gImFiYyIuc3Vic3RyaW5nKDIsMyk7CisgICAgIFN0cmluZyBkID0gY2RlLnN1YnN0cmluZygxLCAyKTsKKyA8L3ByZT48L2Jsb2NrcXVvdGU+Cis8cD4KKyAgICBUaGUgY2xhc3MgPGNvZGU+U3RyaW5nPC9jb2RlPiBpbmNsdWRlcyBtZXRob2RzIGZvciBleGFtaW5pbmcKKyAgICBpbmRpdmlkdWFsIGNoYXJhY3RlcnMgb2YgdGhlIHNlcXVlbmNlLCBmb3IgY29tcGFyaW5nIHN0cmluZ3MsIGZvcgorICAgIHNlYXJjaGluZyBzdHJpbmdzLCBmb3IgZXh0cmFjdGluZyBzdWJzdHJpbmdzLCBhbmQgZm9yIGNyZWF0aW5nIGEKKyAgICBjb3B5IG9mIGEgc3RyaW5nIHdpdGggYWxsIGNoYXJhY3RlcnMgdHJhbnNsYXRlZCB0byB1cHBlcmNhc2Ugb3IgdG8KKyAgICBsb3dlcmNhc2UuIENhc2UgbWFwcGluZyBpcyBiYXNlZCBvbiB0aGUgVW5pY29kZSBTdGFuZGFyZCB2ZXJzaW9uCisgICAgc3BlY2lmaWVkIGJ5IHRoZSA8QSBIUkVGPSIuLi8uLi9qYXZhL2xhbmcvQ2hhcmFjdGVyLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBqYXZhLmxhbmciPjxDT0RFPkNoYXJhY3RlcjwvQ09ERT48L0E+IGNsYXNzLgorPHA+CisgICAgVGhlIEphdmEgbGFuZ3VhZ2UgcHJvdmlkZXMgc3BlY2lhbCBzdXBwb3J0IGZvciB0aGUgc3RyaW5nCisgICAgY29uY2F0ZW5hdGlvbiBvcGVyYXRvciAoJm5ic3A7KyZuYnNwOyksIGFuZCBmb3IgY29udmVyc2lvbiBvZgorICAgIG90aGVyIG9iamVjdHMgdG8gc3RyaW5ncy4gU3RyaW5nIGNvbmNhdGVuYXRpb24gaXMgaW1wbGVtZW50ZWQKKyAgICB0aHJvdWdoIHRoZSA8Y29kZT5TdHJpbmdCdWlsZGVyPC9jb2RlPihvciA8Y29kZT5TdHJpbmdCdWZmZXI8L2NvZGU+KQorICAgIGNsYXNzIGFuZCBpdHMgPGNvZGU+YXBwZW5kPC9jb2RlPiBtZXRob2QuCisgICAgU3RyaW5nIGNvbnZlcnNpb25zIGFyZSBpbXBsZW1lbnRlZCB0aHJvdWdoIHRoZSBtZXRob2QKKyAgICA8Y29kZT50b1N0cmluZzwvY29kZT4sIGRlZmluZWQgYnkgPGNvZGU+T2JqZWN0PC9jb2RlPiBhbmQKKyAgICBpbmhlcml0ZWQgYnkgYWxsIGNsYXNzZXMgaW4gSmF2YS4gRm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gb24KKyAgICBzdHJpbmcgY29uY2F0ZW5hdGlvbiBhbmQgY29udmVyc2lvbiwgc2VlIEdvc2xpbmcsIEpveSwgYW5kIFN0ZWVsZSwKKyAgICA8aT5UaGUgSmF2YSBMYW5ndWFnZSBTcGVjaWZpY2F0aW9uPC9pPi4KKworPHA+IFVubGVzcyBvdGhlcndpc2Ugbm90ZWQsIHBhc3NpbmcgYSA8dHQ+bnVsbDwvdHQ+IGFyZ3VtZW50IHRvIGEgY29uc3RydWN0b3IKKyAgICBvciBtZXRob2QgaW4gdGhpcyBjbGFzcyB3aWxsIGNhdXNlIGEgPEEgSFJFRj0iLi4vLi4vamF2YS9sYW5nL051bGxQb2ludGVyRXhjZXB0aW9uLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBqYXZhLmxhbmciPjxDT0RFPk51bGxQb2ludGVyRXhjZXB0aW9uPC9DT0RFPjwvQT4gdG8gYmUKKyAgICB0aHJvd24uCisKKzxwPkEgPGNvZGU+U3RyaW5nPC9jb2RlPiByZXByZXNlbnRzIGEgc3RyaW5nIGluIHRoZSBVVEYtMTYgZm9ybWF0CisgICAgaW4gd2hpY2ggPGVtPnN1cHBsZW1lbnRhcnkgY2hhcmFjdGVyczwvZW0+IGFyZSByZXByZXNlbnRlZCBieSA8ZW0+c3Vycm9nYXRlCisgICAgICAgIHBhaXJzPC9lbT4gKHNlZSB0aGUgc2VjdGlvbiA8YSBocmVmPSJDaGFyYWN0ZXIuaHRtbCN1bmljb2RlIj5Vbmljb2RlCisgICAgICAgIENoYXJhY3RlciBSZXByZXNlbnRhdGlvbnM8L2E+IGluIHRoZSA8Y29kZT5DaGFyYWN0ZXI8L2NvZGU+IGNsYXNzIGZvcgorICAgIG1vcmUgaW5mb3JtYXRpb24pLgorICAgIEluZGV4IHZhbHVlcyByZWZlciB0byA8Y29kZT5jaGFyPC9jb2RlPiBjb2RlIHVuaXRzLCBzbyBhIHN1cHBsZW1lbnRhcnkKKyAgICBjaGFyYWN0ZXIgdXNlcyB0d28gcG9zaXRpb25zIGluIGEgPGNvZGU+U3RyaW5nPC9jb2RlPi4KKzxwPlRoZSA8Y29kZT5TdHJpbmc8L2NvZGU+IGNsYXNzIHByb3ZpZGVzIG1ldGhvZHMgZm9yIGRlYWxpbmcgd2l0aAorICAgIFVuaWNvZGUgY29kZSBwb2ludHMgKGkuZS4sIGNoYXJhY3RlcnMpLCBpbiBhZGRpdGlvbiB0byB0aG9zZSBmb3IKKyAgICBkZWFsaW5nIHdpdGggVW5pY29kZSBjb2RlIHVuaXRzIChpLmUuLCA8Y29kZT5jaGFyPC9jb2RlPiB2YWx1ZXMpLgorPFA+CisKKzxQPgorPERMPgorICAgIDxEVD48Qj5TaW5jZTo8L0I+PC9EVD4KKyAgICA8REQ+SkRLMS4wPC9ERD4KKyAgICA8RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi9qYXZhL2xhbmcvT2JqZWN0Lmh0bWwjdG9TdHJpbmcoKSI+PENPREU+T2JqZWN0LnRvU3RyaW5nKCk8L0NPREU+PC9BPiwKKyAgICA8QSBIUkVGPSIuLi8uLi9qYXZhL2xhbmcvU3RyaW5nQnVmZmVyLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBqYXZhLmxhbmciPjxDT0RFPlN0cmluZ0J1ZmZlcjwvQ09ERT48L0E+LAorICAgIDxBIEhSRUY9Ii4uLy4uL2phdmEvbGFuZy9TdHJpbmdCdWlsZGVyLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBqYXZhLmxhbmciPjxDT0RFPlN0cmluZ0J1aWxkZXI8L0NPREU+PC9BPiwKKyAgICA8QSBIUkVGPSIuLi8uLi9qYXZhL25pby9jaGFyc2V0L0NoYXJzZXQuaHRtbCIgdGl0bGU9ImNsYXNzIGluIGphdmEubmlvLmNoYXJzZXQiPjxDT0RFPkNoYXJzZXQ8L0NPREU+PC9BPiwKKyAgICA8QSBIUkVGPSIuLi8uLi9zZXJpYWxpemVkLWZvcm0uaHRtbCNqYXZhLmxhbmcuU3RyaW5nIj5TZXJpYWxpemVkIEZvcm08L0E+PC9ETD4KKworPFA+Cis8L0hUTUw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2V4dGVybmFsSmF2YWRvYy9TdHJpbmcvNi9leHBlY3RlZFRvTG93ZXJDYXNlLmh0bWwgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZXh0ZXJuYWxKYXZhZG9jL1N0cmluZy82L2V4cGVjdGVkVG9Mb3dlckNhc2UuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMWRiNzU2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2V4dGVybmFsSmF2YWRvYy9TdHJpbmcvNi9leHBlY3RlZFRvTG93ZXJDYXNlLmh0bWwKQEAgLTAsMCArMSw0NCBAQAorPEhUTUw+PHN0eWxlIHR5cGU9InRleHQvY3NzIj4gIHVsLmluaGVyaXRhbmNlIHsKKyAgICAgIG1hcmdpbjowOworICAgICAgcGFkZGluZzowOworICB9CisgIHVsLmluaGVyaXRhbmNlIGxpIHsKKyAgICAgICBkaXNwbGF5OmlubGluZTsKKyAgICAgICBsaXN0LXN0eWxlOm5vbmU7CisgIH0KKyAgdWwuaW5oZXJpdGFuY2UgbGkgdWwuaW5oZXJpdGFuY2UgeworICAgIG1hcmdpbi1sZWZ0OjE1cHg7CisgICAgcGFkZGluZy1sZWZ0OjE1cHg7CisgICAgcGFkZGluZy10b3A6MXB4OworICB9Cis8L3N0eWxlPjxBIE5BTUU9InRvTG93ZXJDYXNlKCkiPjwhLS0gLS0+PC9BPjxIMz4KKyAgICB0b0xvd2VyQ2FzZTwvSDM+Cis8UFJFPgorcHVibGljIDxBIEhSRUY9Ii4uLy4uL2phdmEvbGFuZy9TdHJpbmcuaHRtbCIgdGl0bGU9ImNsYXNzIGluIGphdmEubGFuZyI+U3RyaW5nPC9BPiA8Qj50b0xvd2VyQ2FzZTwvQj4oKTwvUFJFPgorPERMPgorICAgIDxERD5Db252ZXJ0cyBhbGwgb2YgdGhlIGNoYXJhY3RlcnMgaW4gdGhpcyA8Y29kZT5TdHJpbmc8L2NvZGU+IHRvIGxvd2VyCisgICAgICAgIGNhc2UgdXNpbmcgdGhlIHJ1bGVzIG9mIHRoZSBkZWZhdWx0IGxvY2FsZS4gVGhpcyBpcyBlcXVpdmFsZW50IHRvIGNhbGxpbmcKKyAgICAgICAgPGNvZGU+dG9Mb3dlckNhc2UoTG9jYWxlLmdldERlZmF1bHQoKSk8L2NvZGU+LgorICAgICAgICA8cD4KKyAgICAgICAgICAgIDxiPk5vdGU6PC9iPiBUaGlzIG1ldGhvZCBpcyBsb2NhbGUgc2Vuc2l0aXZlLCBhbmQgbWF5IHByb2R1Y2UgdW5leHBlY3RlZAorICAgICAgICAgICAgcmVzdWx0cyBpZiB1c2VkIGZvciBzdHJpbmdzIHRoYXQgYXJlIGludGVuZGVkIHRvIGJlIGludGVycHJldGVkIGxvY2FsZQorICAgICAgICAgICAgaW5kZXBlbmRlbnRseS4KKyAgICAgICAgICAgIEV4YW1wbGVzIGFyZSBwcm9ncmFtbWluZyBsYW5ndWFnZSBpZGVudGlmaWVycywgcHJvdG9jb2wga2V5cywgYW5kIEhUTUwKKyAgICAgICAgICAgIHRhZ3MuCisgICAgICAgICAgICBGb3IgaW5zdGFuY2UsIDxjb2RlPiJUSVRMRSIudG9Mb3dlckNhc2UoKTwvY29kZT4gaW4gYSBUdXJraXNoIGxvY2FsZQorICAgICAgICAgICAgcmV0dXJucyA8Y29kZT4idD90bGUiPC9jb2RlPiwgd2hlcmUgJz8nIGlzIHRoZSBMQVRJTiBTTUFMTAorICAgICAgICAgICAgTEVUVEVSIERPVExFU1MgSSBjaGFyYWN0ZXIuCisgICAgICAgICAgICBUbyBvYnRhaW4gY29ycmVjdCByZXN1bHRzIGZvciBsb2NhbGUgaW5zZW5zaXRpdmUgc3RyaW5ncywgdXNlCisgICAgICAgICAgICA8Y29kZT50b0xvd2VyQ2FzZShMb2NhbGUuRU5HTElTSCk8L2NvZGU+LgorICAgICAgICA8cD4KKyAgICAgICAgPFA+CisgICAgPEREPjxETD4KKyAgICA8L0RMPgorICAgIDwvREQ+CisgICAgPEREPjxETD4KKworICAgICAgICA8RFQ+PEI+UmV0dXJuczo8L0I+PEREPnRoZSA8Y29kZT5TdHJpbmc8L2NvZGU+LCBjb252ZXJ0ZWQgdG8gbG93ZXJjYXNlLjxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uL2phdmEvbGFuZy9TdHJpbmcuaHRtbCN0b0xvd2VyQ2FzZShqYXZhLnV0aWwuTG9jYWxlKSI+PENPREU+dG9Mb3dlckNhc2UoTG9jYWxlKTwvQ09ERT48L0E+PC9ETD4KKyAgICA8L0REPgorPC9ETD4KKworPC9IVE1MPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9leHRlcm5hbEphdmFkb2MvU3RyaW5nLzYvcGFnZS5odG1sIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2V4dGVybmFsSmF2YWRvYy9TdHJpbmcvNi9wYWdlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzM5Y2U2NwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9leHRlcm5hbEphdmFkb2MvU3RyaW5nLzYvcGFnZS5odG1sCkBAIC0wLDAgKzEsMzU0NCBAQAorCis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQvbG9vc2UuZHRkIj4KKzwhLS1OZXdQYWdlLS0+Cis8SFRNTD4KKzxIRUFEPgorICAgIDwhLS0gR2VuZXJhdGVkIGJ5IGphdmFkb2MgKGJ1aWxkIDEuNi4wXzI3KSBvbiBXZWQgQXVnIDEwIDE1OjU4OjAxIFBEVCAyMDExIC0tPgorICAgIDxUSVRMRT4KKyAgICAgICAgU3RyaW5nIChKYXZhIFBsYXRmb3JtIFNFIDYpCisgICAgPC9USVRMRT4KKworICAgIDxNRVRBIE5BTUU9ImRhdGUiIENPTlRFTlQ9IjIwMTEtMDgtMTAiPgorICAgIDxNRVRBIE5BTUU9ImtleXdvcmRzIiBDT05URU5UPSJqYXZhLmxhbmcuU3RyaW5nIGNsYXNzIj4KKyAgICA8TUVUQSBOQU1FPSJrZXl3b3JkcyIgQ09OVEVOVD0iQ0FTRV9JTlNFTlNJVElWRV9PUkRFUiI+CisgICAgPE1FVEEgTkFNRT0ia2V5d29yZHMiIENPTlRFTlQ9Imxlbmd0aCgpIj4KKyAgICA8TUVUQSBOQU1FPSJrZXl3b3JkcyIgQ09OVEVOVD0iaXNFbXB0eSgpIj4KKyAgICA8TUVUQSBOQU1FPSJrZXl3b3JkcyIgQ09OVEVOVD0iY2hhckF0KCkiPgorICAgIDxNRVRBIE5BTUU9ImtleXdvcmRzIiBDT05URU5UPSJjb2RlUG9pbnRBdCgpIj4KKyAgICA8TUVUQSBOQU1FPSJrZXl3b3JkcyIgQ09OVEVOVD0iY29kZVBvaW50QmVmb3JlKCkiPgorICAgIDxNRVRBIE5BTUU9ImtleXdvcmRzIiBDT05URU5UPSJjb2RlUG9pbnRDb3VudCgpIj4KKyAgICA8TUVUQSBOQU1FPSJrZXl3b3JkcyIgQ09OVEVOVD0ib2Zmc2V0QnlDb2RlUG9pbnRzKCkiPgorICAgIDxNRVRBIE5BTUU9ImtleXdvcmRzIiBDT05URU5UPSJnZXRDaGFycygpIj4KKyAgICA8TUVUQSBOQU1FPSJrZXl3b3JkcyIgQ09OVEVOVD0iZ2V0Qnl0ZXMoKSI+CisgICAgPE1FVEEgTkFNRT0ia2V5d29yZHMiIENPTlRFTlQ9ImVxdWFscygpIj4KKyAgICA8TUVUQSBOQU1FPSJrZXl3b3JkcyIgQ09OVEVOVD0iY29udGVudEVxdWFscygpIj4KKyAgICA8TUVUQSBOQU1FPSJrZXl3b3JkcyIgQ09OVEVOVD0iZXF1YWxzSWdub3JlQ2FzZSgpIj4KKyAgICA8TUVUQSBOQU1FPSJrZXl3b3JkcyIgQ09OVEVOVD0iY29tcGFyZVRvKCkiPgorICAgIDxNRVRBIE5BTUU9ImtleXdvcmRzIiBDT05URU5UPSJjb21wYXJlVG9JZ25vcmVDYXNlKCkiPgorICAgIDxNRVRBIE5BTUU9ImtleXdvcmRzIiBDT05URU5UPSJyZWdpb25NYXRjaGVzKCkiPgorICAgIDxNRVRBIE5BTUU9ImtleXdvcmRzIiBDT05URU5UPSJzdGFydHNXaXRoKCkiPgorICAgIDxNRVRBIE5BTUU9ImtleXdvcmRzIiBDT05URU5UPSJlbmRzV2l0aCgpIj4KKyAgICA8TUVUQSBOQU1FPSJrZXl3b3JkcyIgQ09OVEVOVD0iaGFzaENvZGUoKSI+CisgICAgPE1FVEEgTkFNRT0ia2V5d29yZHMiIENPTlRFTlQ9ImluZGV4T2YoKSI+CisgICAgPE1FVEEgTkFNRT0ia2V5d29yZHMiIENPTlRFTlQ9Imxhc3RJbmRleE9mKCkiPgorICAgIDxNRVRBIE5BTUU9ImtleXdvcmRzIiBDT05URU5UPSJzdWJzdHJpbmcoKSI+CisgICAgPE1FVEEgTkFNRT0ia2V5d29yZHMiIENPTlRFTlQ9InN1YlNlcXVlbmNlKCkiPgorICAgIDxNRVRBIE5BTUU9ImtleXdvcmRzIiBDT05URU5UPSJjb25jYXQoKSI+CisgICAgPE1FVEEgTkFNRT0ia2V5d29yZHMiIENPTlRFTlQ9InJlcGxhY2UoKSI+CisgICAgPE1FVEEgTkFNRT0ia2V5d29yZHMiIENPTlRFTlQ9Im1hdGNoZXMoKSI+CisgICAgPE1FVEEgTkFNRT0ia2V5d29yZHMiIENPTlRFTlQ9ImNvbnRhaW5zKCkiPgorICAgIDxNRVRBIE5BTUU9ImtleXdvcmRzIiBDT05URU5UPSJyZXBsYWNlRmlyc3QoKSI+CisgICAgPE1FVEEgTkFNRT0ia2V5d29yZHMiIENPTlRFTlQ9InJlcGxhY2VBbGwoKSI+CisgICAgPE1FVEEgTkFNRT0ia2V5d29yZHMiIENPTlRFTlQ9InNwbGl0KCkiPgorICAgIDxNRVRBIE5BTUU9ImtleXdvcmRzIiBDT05URU5UPSJ0b0xvd2VyQ2FzZSgpIj4KKyAgICA8TUVUQSBOQU1FPSJrZXl3b3JkcyIgQ09OVEVOVD0idG9VcHBlckNhc2UoKSI+CisgICAgPE1FVEEgTkFNRT0ia2V5d29yZHMiIENPTlRFTlQ9InRyaW0oKSI+CisgICAgPE1FVEEgTkFNRT0ia2V5d29yZHMiIENPTlRFTlQ9InRvU3RyaW5nKCkiPgorICAgIDxNRVRBIE5BTUU9ImtleXdvcmRzIiBDT05URU5UPSJ0b0NoYXJBcnJheSgpIj4KKyAgICA8TUVUQSBOQU1FPSJrZXl3b3JkcyIgQ09OVEVOVD0iZm9ybWF0KCkiPgorICAgIDxNRVRBIE5BTUU9ImtleXdvcmRzIiBDT05URU5UPSJ2YWx1ZU9mKCkiPgorICAgIDxNRVRBIE5BTUU9ImtleXdvcmRzIiBDT05URU5UPSJjb3B5VmFsdWVPZigpIj4KKyAgICA8TUVUQSBOQU1FPSJrZXl3b3JkcyIgQ09OVEVOVD0iaW50ZXJuKCkiPgorCisgICAgPExJTksgUkVMID0ic3R5bGVzaGVldCIgVFlQRT0idGV4dC9jc3MiIEhSRUY9Ii4uLy4uL3N0eWxlc2hlZXQuY3NzIiBUSVRMRT0iU3R5bGUiPgorCisgICAgPFNDUklQVCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorICAgICAgICBmdW5jdGlvbiB3aW5kb3dUaXRsZSgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChsb2NhdGlvbi5ocmVmLmluZGV4T2YoJ2lzLWV4dGVybmFsPXRydWUnKSA9PSAtMSkgeworICAgICAgICAgICAgICAgIHBhcmVudC5kb2N1bWVudC50aXRsZT0iU3RyaW5nIChKYXZhIFBsYXRmb3JtIFNFIDYpIjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIDwvU0NSSVBUPgorICAgIDxOT1NDUklQVD4KKyAgICA8L05PU0NSSVBUPgorCis8L0hFQUQ+CisKKzxCT0RZIEJHQ09MT1I9IndoaXRlIiBvbmxvYWQ9IndpbmRvd1RpdGxlKCk7Ij4KKzxIUj4KKworCis8IS0tID09PT09PT09PSBTVEFSVCBPRiBUT1AgTkFWQkFSID09PT09PT0gLS0+Cis8QSBOQU1FPSJuYXZiYXJfdG9wIj48IS0tIC0tPjwvQT4KKzxBIEhSRUY9IiNza2lwLW5hdmJhcl90b3AiIHRpdGxlPSJTa2lwIG5hdmlnYXRpb24gbGlua3MiPjwvQT4KKzxUQUJMRSBCT1JERVI9IjAiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMSIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+CisgICAgPFRSPgorICAgICAgICA8VEQgQ09MU1BBTj0yIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+CisgICAgICAgICAgICA8QSBOQU1FPSJuYXZiYXJfdG9wX2ZpcnN0cm93Ij48IS0tIC0tPjwvQT4KKyAgICAgICAgICAgIDxUQUJMRSBCT1JERVI9IjAiIENFTExQQURESU5HPSIwIiBDRUxMU1BBQ0lORz0iMyIgU1VNTUFSWT0iIj4KKyAgICAgICAgICAgICAgICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgorICAgICAgICAgICAgICAgICAgICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KKyAgICAgICAgICAgICAgICAgICAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9InBhY2thZ2Utc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlBhY2thZ2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgorICAgICAgICAgICAgICAgICAgICA8VEQgQkdDT0xPUj0iI0ZGRkZGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxUmV2Ij4gJm5ic3A7PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5DbGFzczwvQj48L0ZPTlQ+Jm5ic3A7PC9URD4KKyAgICAgICAgICAgICAgICAgICAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9ImNsYXNzLXVzZS9TdHJpbmcuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5Vc2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgorICAgICAgICAgICAgICAgICAgICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0icGFja2FnZS10cmVlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VHJlZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+CisgICAgICAgICAgICAgICAgICAgIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi9kZXByZWNhdGVkLWxpc3QuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5EZXByZWNhdGVkPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KKyAgICAgICAgICAgICAgICAgICAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uL2luZGV4LWZpbGVzL2luZGV4LTEuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+CisgICAgICAgICAgICAgICAgICAgIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi9oZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgorICAgICAgICAgICAgICAgIDwvVFI+CisgICAgICAgICAgICA8L1RBQkxFPgorICAgICAgICA8L1REPgorICAgICAgICA8VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4KKyAgICAgICAgICAgIDxiPkphdmEmI3gyMTIyOyZuYnNwO1BsYXRmb3JtPGJyPlN0YW5kYXJkJm5ic3A7RWQuJm5ic3A7NjwvYj48L0VNPgorICAgICAgICA8L1REPgorICAgIDwvVFI+CisKKyAgICA8VFI+CisgICAgICAgIDxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+CisgICAgICAgICAgICAmbmJzcDs8QSBIUkVGPSIuLi8uLi9qYXZhL2xhbmcvU3RyaWN0TWF0aC5odG1sIiB0aXRsZT0iY2xhc3MgaW4gamF2YS5sYW5nIj48Qj5QUkVWIENMQVNTPC9CPjwvQT4mbmJzcDsKKyAgICAgICAgICAgICZuYnNwOzxBIEhSRUY9Ii4uLy4uL2phdmEvbGFuZy9TdHJpbmdCdWZmZXIuaHRtbCIgdGl0bGU9ImNsYXNzIGluIGphdmEubGFuZyI+PEI+TkVYVCBDTEFTUzwvQj48L0E+PC9GT05UPjwvVEQ+CisgICAgICAgIDxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+CisgICAgICAgICAgICA8QSBIUkVGPSIuLi8uLi9pbmRleC5odG1sP2phdmEvbGFuZy9TdHJpbmcuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5GUkFNRVM8L0I+PC9BPiAgJm5ic3A7CisgICAgICAgICAgICAmbmJzcDs8QSBIUkVGPSJTdHJpbmcuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5OTyBGUkFNRVM8L0I+PC9BPiAgJm5ic3A7CisgICAgICAgICAgICAmbmJzcDs8U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+CisgICAgICAgICAgICA8IS0tCisgICAgICAgICAgICBpZih3aW5kb3c9PXRvcCkgeworICAgICAgICAgICAgICAgIGRvY3VtZW50LndyaXRlbG4oJzxBIEhSRUY9Ii4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Jyk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAvLy0tPgorICAgICAgICA8L1NDUklQVD4KKyAgICAgICAgICAgIDxOT1NDUklQVD4KKyAgICAgICAgICAgICAgICA8QSBIUkVGPSIuLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPgorICAgICAgICAgICAgPC9OT1NDUklQVD4KKworCisgICAgICAgIDwvRk9OVD48L1REPgorICAgIDwvVFI+CisgICAgPFRSPgorICAgICAgICA8VEQgVkFMSUdOPSJ0b3AiIENMQVNTPSJOYXZCYXJDZWxsMyI+PEZPTlQgU0laRT0iLTIiPgorICAgICAgICAgICAgU1VNTUFSWTombmJzcDtORVNURUQmbmJzcDt8Jm5ic3A7PEEgSFJFRj0iI2ZpZWxkX3N1bW1hcnkiPkZJRUxEPC9BPiZuYnNwO3wmbmJzcDs8QSBIUkVGPSIjY29uc3RydWN0b3Jfc3VtbWFyeSI+Q09OU1RSPC9BPiZuYnNwO3wmbmJzcDs8QSBIUkVGPSIjbWV0aG9kX3N1bW1hcnkiPk1FVEhPRDwvQT48L0ZPTlQ+PC9URD4KKyAgICAgICAgPFREIFZBTElHTj0idG9wIiBDTEFTUz0iTmF2QmFyQ2VsbDMiPjxGT05UIFNJWkU9Ii0yIj4KKyAgICAgICAgICAgIERFVEFJTDombmJzcDs8QSBIUkVGPSIjZmllbGRfZGV0YWlsIj5GSUVMRDwvQT4mbmJzcDt8Jm5ic3A7PEEgSFJFRj0iI2NvbnN0cnVjdG9yX2RldGFpbCI+Q09OU1RSPC9BPiZuYnNwO3wmbmJzcDs8QSBIUkVGPSIjbWV0aG9kX2RldGFpbCI+TUVUSE9EPC9BPjwvRk9OVD48L1REPgorICAgIDwvVFI+Cis8L1RBQkxFPgorPEEgTkFNRT0ic2tpcC1uYXZiYXJfdG9wIj48L0E+Cis8IS0tID09PT09PT09PSBFTkQgT0YgVE9QIE5BVkJBUiA9PT09PT09PT0gLS0+CisKKzxIUj4KKzwhLS0gPT09PT09PT0gU1RBUlQgT0YgQ0xBU1MgREFUQSA9PT09PT09PSAtLT4KKzxIMj4KKyAgICA8Rk9OVCBTSVpFPSItMSI+CisgICAgICAgIGphdmEubGFuZzwvRk9OVD4KKyAgICA8QlI+CisgICAgQ2xhc3MgU3RyaW5nPC9IMj4KKzxQUkU+Cis8QSBIUkVGPSIuLi8uLi9qYXZhL2xhbmcvT2JqZWN0Lmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBqYXZhLmxhbmciPmphdmEubGFuZy5PYmplY3Q8L0E+CisgIDxJTUcgU1JDPSIuLi8uLi9yZXNvdXJjZXMvaW5oZXJpdC5naWYiIEFMVD0iZXh0ZW5kZWQgYnkgIj48Qj5qYXZhLmxhbmcuU3RyaW5nPC9CPgorPC9QUkU+Cis8REw+CisgICAgPERUPjxCPkFsbCBJbXBsZW1lbnRlZCBJbnRlcmZhY2VzOjwvQj4gPEREPjxBIEhSRUY9Ii4uLy4uL2phdmEvaW8vU2VyaWFsaXphYmxlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gamF2YS5pbyI+U2VyaWFsaXphYmxlPC9BPiwgPEEgSFJFRj0iLi4vLi4vamF2YS9sYW5nL0NoYXJTZXF1ZW5jZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIGphdmEubGFuZyI+Q2hhclNlcXVlbmNlPC9BPiwgPEEgSFJFRj0iLi4vLi4vamF2YS9sYW5nL0NvbXBhcmFibGUuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBqYXZhLmxhbmciPkNvbXBhcmFibGU8L0E+Jmx0OzxBIEhSRUY9Ii4uLy4uL2phdmEvbGFuZy9TdHJpbmcuaHRtbCIgdGl0bGU9ImNsYXNzIGluIGphdmEubGFuZyI+U3RyaW5nPC9BPiZndDs8L0REPgorPC9ETD4KKzxIUj4KKzxETD4KKyAgICA8RFQ+PFBSRT5wdWJsaWMgZmluYWwgY2xhc3MgPEI+U3RyaW5nPC9CPjxEVD5leHRlbmRzIDxBIEhSRUY9Ii4uLy4uL2phdmEvbGFuZy9PYmplY3QuaHRtbCIgdGl0bGU9ImNsYXNzIGluIGphdmEubGFuZyI+T2JqZWN0PC9BPjxEVD5pbXBsZW1lbnRzIDxBIEhSRUY9Ii4uLy4uL2phdmEvaW8vU2VyaWFsaXphYmxlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gamF2YS5pbyI+U2VyaWFsaXphYmxlPC9BPiwgPEEgSFJFRj0iLi4vLi4vamF2YS9sYW5nL0NvbXBhcmFibGUuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBqYXZhLmxhbmciPkNvbXBhcmFibGU8L0E+Jmx0OzxBIEhSRUY9Ii4uLy4uL2phdmEvbGFuZy9TdHJpbmcuaHRtbCIgdGl0bGU9ImNsYXNzIGluIGphdmEubGFuZyI+U3RyaW5nPC9BPiZndDssIDxBIEhSRUY9Ii4uLy4uL2phdmEvbGFuZy9DaGFyU2VxdWVuY2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBqYXZhLmxhbmciPkNoYXJTZXF1ZW5jZTwvQT48L0RMPgorPC9QUkU+CisKKzxQPgorICAgIFRoZSA8Y29kZT5TdHJpbmc8L2NvZGU+IGNsYXNzIHJlcHJlc2VudHMgY2hhcmFjdGVyIHN0cmluZ3MuIEFsbAorICAgIHN0cmluZyBsaXRlcmFscyBpbiBKYXZhIHByb2dyYW1zLCBzdWNoIGFzIDxjb2RlPiJhYmMiPC9jb2RlPiwgYXJlCisgICAgaW1wbGVtZW50ZWQgYXMgaW5zdGFuY2VzIG9mIHRoaXMgY2xhc3MuCis8cD4KKyAgICBTdHJpbmdzIGFyZSBjb25zdGFudDsgdGhlaXIgdmFsdWVzIGNhbm5vdCBiZSBjaGFuZ2VkIGFmdGVyIHRoZXkKKyAgICBhcmUgY3JlYXRlZC4gU3RyaW5nIGJ1ZmZlcnMgc3VwcG9ydCBtdXRhYmxlIHN0cmluZ3MuCisgICAgQmVjYXVzZSBTdHJpbmcgb2JqZWN0cyBhcmUgaW1tdXRhYmxlIHRoZXkgY2FuIGJlIHNoYXJlZC4gRm9yIGV4YW1wbGU6Cis8cD48YmxvY2txdW90ZT48cHJlPgorICAgICBTdHJpbmcgc3RyID0gImFiYyI7CisgPC9wcmU+PC9ibG9ja3F1b3RlPjxwPgorICAgIGlzIGVxdWl2YWxlbnQgdG86Cis8cD48YmxvY2txdW90ZT48cHJlPgorICAgICBjaGFyIGRhdGFbXSA9IHsnYScsICdiJywgJ2MnfTsKKyAgICAgU3RyaW5nIHN0ciA9IG5ldyBTdHJpbmcoZGF0YSk7CisgPC9wcmU+PC9ibG9ja3F1b3RlPjxwPgorICAgIEhlcmUgYXJlIHNvbWUgbW9yZSBleGFtcGxlcyBvZiBob3cgc3RyaW5ncyBjYW4gYmUgdXNlZDoKKzxwPjxibG9ja3F1b3RlPjxwcmU+CisgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiYWJjIik7CisgICAgIFN0cmluZyBjZGUgPSAiY2RlIjsKKyAgICAgU3lzdGVtLm91dC5wcmludGxuKCJhYmMiICsgY2RlKTsKKyAgICAgU3RyaW5nIGMgPSAiYWJjIi5zdWJzdHJpbmcoMiwzKTsKKyAgICAgU3RyaW5nIGQgPSBjZGUuc3Vic3RyaW5nKDEsIDIpOworIDwvcHJlPjwvYmxvY2txdW90ZT4KKzxwPgorICAgIFRoZSBjbGFzcyA8Y29kZT5TdHJpbmc8L2NvZGU+IGluY2x1ZGVzIG1ldGhvZHMgZm9yIGV4YW1pbmluZworICAgIGluZGl2aWR1YWwgY2hhcmFjdGVycyBvZiB0aGUgc2VxdWVuY2UsIGZvciBjb21wYXJpbmcgc3RyaW5ncywgZm9yCisgICAgc2VhcmNoaW5nIHN0cmluZ3MsIGZvciBleHRyYWN0aW5nIHN1YnN0cmluZ3MsIGFuZCBmb3IgY3JlYXRpbmcgYQorICAgIGNvcHkgb2YgYSBzdHJpbmcgd2l0aCBhbGwgY2hhcmFjdGVycyB0cmFuc2xhdGVkIHRvIHVwcGVyY2FzZSBvciB0bworICAgIGxvd2VyY2FzZS4gQ2FzZSBtYXBwaW5nIGlzIGJhc2VkIG9uIHRoZSBVbmljb2RlIFN0YW5kYXJkIHZlcnNpb24KKyAgICBzcGVjaWZpZWQgYnkgdGhlIDxBIEhSRUY9Ii4uLy4uL2phdmEvbGFuZy9DaGFyYWN0ZXIuaHRtbCIgdGl0bGU9ImNsYXNzIGluIGphdmEubGFuZyI+PENPREU+Q2hhcmFjdGVyPC9DT0RFPjwvQT4gY2xhc3MuCis8cD4KKyAgICBUaGUgSmF2YSBsYW5ndWFnZSBwcm92aWRlcyBzcGVjaWFsIHN1cHBvcnQgZm9yIHRoZSBzdHJpbmcKKyAgICBjb25jYXRlbmF0aW9uIG9wZXJhdG9yICgmbmJzcDsrJm5ic3A7KSwgYW5kIGZvciBjb252ZXJzaW9uIG9mCisgICAgb3RoZXIgb2JqZWN0cyB0byBzdHJpbmdzLiBTdHJpbmcgY29uY2F0ZW5hdGlvbiBpcyBpbXBsZW1lbnRlZAorICAgIHRocm91Z2ggdGhlIDxjb2RlPlN0cmluZ0J1aWxkZXI8L2NvZGU+KG9yIDxjb2RlPlN0cmluZ0J1ZmZlcjwvY29kZT4pCisgICAgY2xhc3MgYW5kIGl0cyA8Y29kZT5hcHBlbmQ8L2NvZGU+IG1ldGhvZC4KKyAgICBTdHJpbmcgY29udmVyc2lvbnMgYXJlIGltcGxlbWVudGVkIHRocm91Z2ggdGhlIG1ldGhvZAorICAgIDxjb2RlPnRvU3RyaW5nPC9jb2RlPiwgZGVmaW5lZCBieSA8Y29kZT5PYmplY3Q8L2NvZGU+IGFuZAorICAgIGluaGVyaXRlZCBieSBhbGwgY2xhc3NlcyBpbiBKYXZhLiBGb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBvbgorICAgIHN0cmluZyBjb25jYXRlbmF0aW9uIGFuZCBjb252ZXJzaW9uLCBzZWUgR29zbGluZywgSm95LCBhbmQgU3RlZWxlLAorICAgIDxpPlRoZSBKYXZhIExhbmd1YWdlIFNwZWNpZmljYXRpb248L2k+LgorCis8cD4gVW5sZXNzIG90aGVyd2lzZSBub3RlZCwgcGFzc2luZyBhIDx0dD5udWxsPC90dD4gYXJndW1lbnQgdG8gYSBjb25zdHJ1Y3RvcgorICAgIG9yIG1ldGhvZCBpbiB0aGlzIGNsYXNzIHdpbGwgY2F1c2UgYSA8QSBIUkVGPSIuLi8uLi9qYXZhL2xhbmcvTnVsbFBvaW50ZXJFeGNlcHRpb24uaHRtbCIgdGl0bGU9ImNsYXNzIGluIGphdmEubGFuZyI+PENPREU+TnVsbFBvaW50ZXJFeGNlcHRpb248L0NPREU+PC9BPiB0byBiZQorICAgIHRocm93bi4KKworPHA+QSA8Y29kZT5TdHJpbmc8L2NvZGU+IHJlcHJlc2VudHMgYSBzdHJpbmcgaW4gdGhlIFVURi0xNiBmb3JtYXQKKyAgICBpbiB3aGljaCA8ZW0+c3VwcGxlbWVudGFyeSBjaGFyYWN0ZXJzPC9lbT4gYXJlIHJlcHJlc2VudGVkIGJ5IDxlbT5zdXJyb2dhdGUKKyAgICAgICAgcGFpcnM8L2VtPiAoc2VlIHRoZSBzZWN0aW9uIDxhIGhyZWY9IkNoYXJhY3Rlci5odG1sI3VuaWNvZGUiPlVuaWNvZGUKKyAgICAgICAgQ2hhcmFjdGVyIFJlcHJlc2VudGF0aW9uczwvYT4gaW4gdGhlIDxjb2RlPkNoYXJhY3RlcjwvY29kZT4gY2xhc3MgZm9yCisgICAgbW9yZSBpbmZvcm1hdGlvbikuCisgICAgSW5kZXggdmFsdWVzIHJlZmVyIHRvIDxjb2RlPmNoYXI8L2NvZGU+IGNvZGUgdW5pdHMsIHNvIGEgc3VwcGxlbWVudGFyeQorICAgIGNoYXJhY3RlciB1c2VzIHR3byBwb3NpdGlvbnMgaW4gYSA8Y29kZT5TdHJpbmc8L2NvZGU+LgorPHA+VGhlIDxjb2RlPlN0cmluZzwvY29kZT4gY2xhc3MgcHJvdmlkZXMgbWV0aG9kcyBmb3IgZGVhbGluZyB3aXRoCisgICAgVW5pY29kZSBjb2RlIHBvaW50cyAoaS5lLiwgY2hhcmFjdGVycyksIGluIGFkZGl0aW9uIHRvIHRob3NlIGZvcgorICAgIGRlYWxpbmcgd2l0aCBVbmljb2RlIGNvZGUgdW5pdHMgKGkuZS4sIDxjb2RlPmNoYXI8L2NvZGU+IHZhbHVlcykuCis8UD4KKworPFA+Cis8REw+CisgICAgPERUPjxCPlNpbmNlOjwvQj48L0RUPgorICAgIDxERD5KREsxLjA8L0REPgorICAgIDxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uL2phdmEvbGFuZy9PYmplY3QuaHRtbCN0b1N0cmluZygpIj48Q09ERT5PYmplY3QudG9TdHJpbmcoKTwvQ09ERT48L0E+LAorICAgIDxBIEhSRUY9Ii4uLy4uL2phdmEvbGFuZy9TdHJpbmdCdWZmZXIuaHRtbCIgdGl0bGU9ImNsYXNzIGluIGphdmEubGFuZyI+PENPREU+U3RyaW5nQnVmZmVyPC9DT0RFPjwvQT4sCisgICAgPEEgSFJFRj0iLi4vLi4vamF2YS9sYW5nL1N0cmluZ0J1aWxkZXIuaHRtbCIgdGl0bGU9ImNsYXNzIGluIGphdmEubGFuZyI+PENPREU+U3RyaW5nQnVpbGRlcjwvQ09ERT48L0E+LAorICAgIDxBIEhSRUY9Ii4uLy4uL2phdmEvbmlvL2NoYXJzZXQvQ2hhcnNldC5odG1sIiB0aXRsZT0iY2xhc3MgaW4gamF2YS5uaW8uY2hhcnNldCI+PENPREU+Q2hhcnNldDwvQ09ERT48L0E+LAorICAgIDxBIEhSRUY9Ii4uLy4uL3NlcmlhbGl6ZWQtZm9ybS5odG1sI2phdmEubGFuZy5TdHJpbmciPlNlcmlhbGl6ZWQgRm9ybTwvQT48L0RMPgorPEhSPgorCis8UD4KKyAgICA8IS0tID09PT09PT09PT09IEZJRUxEIFNVTU1BUlkgPT09PT09PT09PT0gLS0+CisKKyAgICA8QSBOQU1FPSJmaWVsZF9zdW1tYXJ5Ij48IS0tIC0tPjwvQT4KKzxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+CisgICAgPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZUhlYWRpbmdDb2xvciI+CisgICAgICAgIDxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMiI+PEZPTlQgU0laRT0iKzIiPgorICAgICAgICAgICAgPEI+RmllbGQgU3VtbWFyeTwvQj48L0ZPTlQ+PC9USD4KKyAgICA8L1RSPgorICAgIDxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgorICAgICAgICA8VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+CisgICAgICAgICAgICA8Q09ERT5zdGF0aWMmbmJzcDs8QSBIUkVGPSIuLi8uLi9qYXZhL3V0aWwvQ29tcGFyYXRvci5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIGphdmEudXRpbCI+Q29tcGFyYXRvcjwvQT4mbHQ7PEEgSFJFRj0iLi4vLi4vamF2YS9sYW5nL1N0cmluZy5odG1sIiB0aXRsZT0iY2xhc3MgaW4gamF2YS5sYW5nIj5TdHJpbmc8L0E+Jmd0OzwvQ09ERT48L0ZPTlQ+PC9URD4KKyAgICAgICAgPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uL2phdmEvbGFuZy9TdHJpbmcuaHRtbCNDQVNFX0lOU0VOU0lUSVZFX09SREVSIj5DQVNFX0lOU0VOU0lUSVZFX09SREVSPC9BPjwvQj48L0NPREU+CisKKyAgICAgICAgICAgIDxCUj4KKyAgICAgICAgICAgICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO0EgQ29tcGFyYXRvciB0aGF0IG9yZGVycyA8Y29kZT5TdHJpbmc8L2NvZGU+IG9iamVjdHMgYXMgYnkKKyAgICAgICAgICAgIDxjb2RlPmNvbXBhcmVUb0lnbm9yZUNhc2U8L2NvZGU+LjwvVEQ+CisgICAgPC9UUj4KKzwvVEFCTEU+CismbmJzcDsKKzwhLS0gPT09PT09PT0gQ09OU1RSVUNUT1IgU1VNTUFSWSA9PT09PT09PSAtLT4KKworPEEgTkFNRT0iY29uc3RydWN0b3Jfc3VtbWFyeSI+PCEtLSAtLT48L0E+Cis8VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgorICAgIDxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVIZWFkaW5nQ29sb3IiPgorICAgICAgICA8VEggQUxJR049ImxlZnQiIENPTFNQQU49IjIiPjxGT05UIFNJWkU9IisyIj4KKyAgICAgICAgICAgIDxCPkNvbnN0cnVjdG9yIFN1bW1hcnk8L0I+PC9GT05UPjwvVEg+CisgICAgPC9UUj4KKyAgICA8VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KKyAgICAgICAgPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uL2phdmEvbGFuZy9TdHJpbmcuaHRtbCNTdHJpbmcoKSI+U3RyaW5nPC9BPjwvQj4oKTwvQ09ERT4KKworICAgICAgICAgICAgPEJSPgorICAgICAgICAgICAgJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7SW5pdGlhbGl6ZXMgYSBuZXdseSBjcmVhdGVkIDxjb2RlPlN0cmluZzwvY29kZT4gb2JqZWN0IHNvIHRoYXQgaXQgcmVwcmVzZW50cworICAgICAgICAgICAgYW4gZW1wdHkgY2hhcmFjdGVyIHNlcXVlbmNlLjwvVEQ+CisgICAgPC9UUj4KKyAgICA8VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KKyAgICAgICAgPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uL2phdmEvbGFuZy9TdHJpbmcuaHRtbCNTdHJpbmcoYnl0ZVtdKSI+U3RyaW5nPC9BPjwvQj4oYnl0ZVtdJm5ic3A7Ynl0ZXMpPC9DT0RFPgorCisgICAgICAgICAgICA8QlI+CisgICAgICAgICAgICAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtDb25zdHJ1Y3RzIGEgbmV3IDxjb2RlPlN0cmluZzwvY29kZT4gYnkgZGVjb2RpbmcgdGhlIHNwZWNpZmllZCBhcnJheSBvZiBieXRlcworICAgICAgICAgICAgdXNpbmcgdGhlIHBsYXRmb3JtJ3MgZGVmYXVsdCBjaGFyc2V0LjwvVEQ+CisgICAgPC9UUj4KKyAgICA8VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KKyAgICAgICAgPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uL2phdmEvbGFuZy9TdHJpbmcuaHRtbCNTdHJpbmcoYnl0ZVtdLCBqYXZhLm5pby5jaGFyc2V0LkNoYXJzZXQpIj5TdHJpbmc8L0E+PC9CPihieXRlW10mbmJzcDtieXRlcywKKyAgICAgICAgICAgIDxBIEhSRUY9Ii4uLy4uL2phdmEvbmlvL2NoYXJzZXQvQ2hhcnNldC5odG1sIiB0aXRsZT0iY2xhc3MgaW4gamF2YS5uaW8uY2hhcnNldCI+Q2hhcnNldDwvQT4mbmJzcDtjaGFyc2V0KTwvQ09ERT4KKworICAgICAgICAgICAgPEJSPgorICAgICAgICAgICAgJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Q29uc3RydWN0cyBhIG5ldyA8Y29kZT5TdHJpbmc8L2NvZGU+IGJ5IGRlY29kaW5nIHRoZSBzcGVjaWZpZWQgYXJyYXkgb2YKKyAgICAgICAgICAgIGJ5dGVzIHVzaW5nIHRoZSBzcGVjaWZpZWQgPEEgSFJFRj0iLi4vLi4vamF2YS9uaW8vY2hhcnNldC9DaGFyc2V0Lmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBqYXZhLm5pby5jaGFyc2V0Ij5jaGFyc2V0PC9BPi48L1REPgorICAgIDwvVFI+CisgICAgPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+CisgICAgICAgIDxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi9qYXZhL2xhbmcvU3RyaW5nLmh0bWwjU3RyaW5nKGJ5dGVbXSwgaW50KSI+U3RyaW5nPC9BPjwvQj4oYnl0ZVtdJm5ic3A7YXNjaWksCisgICAgICAgICAgICBpbnQmbmJzcDtoaWJ5dGUpPC9DT0RFPgorCisgICAgICAgICAgICA8QlI+CisgICAgICAgICAgICAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDs8Qj5EZXByZWNhdGVkLjwvQj4mbmJzcDs8ST5UaGlzIG1ldGhvZCBkb2VzIG5vdCBwcm9wZXJseSBjb252ZXJ0IGJ5dGVzIGludG8KKyAgICAgICAgICAgICAgICBjaGFyYWN0ZXJzLiAgQXMgb2YgSkRLJm5ic3A7MS4xLCB0aGUgcHJlZmVycmVkIHdheSB0byBkbyB0aGlzIGlzIHZpYSB0aGUKKyAgICAgICAgICAgICAgICA8Y29kZT5TdHJpbmc8L2NvZGU+IGNvbnN0cnVjdG9ycyB0aGF0IHRha2UgYSA8QSBIUkVGPSIuLi8uLi9qYXZhL25pby9jaGFyc2V0L0NoYXJzZXQuaHRtbCIgdGl0bGU9ImNsYXNzIGluIGphdmEubmlvLmNoYXJzZXQiPjxDT0RFPkNoYXJzZXQ8L0NPREU+PC9BPiwgY2hhcnNldCBuYW1lLCBvciB0aGF0IHVzZSB0aGUgcGxhdGZvcm0ncworICAgICAgICAgICAgICAgIGRlZmF1bHQgY2hhcnNldC48L0k+PC9URD4KKyAgICA8L1RSPgorICAgIDxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgorICAgICAgICA8VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vamF2YS9sYW5nL1N0cmluZy5odG1sI1N0cmluZyhieXRlW10sIGludCwgaW50KSI+U3RyaW5nPC9BPjwvQj4oYnl0ZVtdJm5ic3A7Ynl0ZXMsCisgICAgICAgICAgICBpbnQmbmJzcDtvZmZzZXQsCisgICAgICAgICAgICBpbnQmbmJzcDtsZW5ndGgpPC9DT0RFPgorCisgICAgICAgICAgICA8QlI+CisgICAgICAgICAgICAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtDb25zdHJ1Y3RzIGEgbmV3IDxjb2RlPlN0cmluZzwvY29kZT4gYnkgZGVjb2RpbmcgdGhlIHNwZWNpZmllZCBzdWJhcnJheSBvZgorICAgICAgICAgICAgYnl0ZXMgdXNpbmcgdGhlIHBsYXRmb3JtJ3MgZGVmYXVsdCBjaGFyc2V0LjwvVEQ+CisgICAgPC9UUj4KKyAgICA8VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KKyAgICAgICAgPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uL2phdmEvbGFuZy9TdHJpbmcuaHRtbCNTdHJpbmcoYnl0ZVtdLCBpbnQsIGludCwgamF2YS5uaW8uY2hhcnNldC5DaGFyc2V0KSI+U3RyaW5nPC9BPjwvQj4oYnl0ZVtdJm5ic3A7Ynl0ZXMsCisgICAgICAgICAgICBpbnQmbmJzcDtvZmZzZXQsCisgICAgICAgICAgICBpbnQmbmJzcDtsZW5ndGgsCisgICAgICAgICAgICA8QSBIUkVGPSIuLi8uLi9qYXZhL25pby9jaGFyc2V0L0NoYXJzZXQuaHRtbCIgdGl0bGU9ImNsYXNzIGluIGphdmEubmlvLmNoYXJzZXQiPkNoYXJzZXQ8L0E+Jm5ic3A7Y2hhcnNldCk8L0NPREU+CisKKyAgICAgICAgICAgIDxCUj4KKyAgICAgICAgICAgICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO0NvbnN0cnVjdHMgYSBuZXcgPGNvZGU+U3RyaW5nPC9jb2RlPiBieSBkZWNvZGluZyB0aGUgc3BlY2lmaWVkIHN1YmFycmF5IG9mCisgICAgICAgICAgICBieXRlcyB1c2luZyB0aGUgc3BlY2lmaWVkIDxBIEhSRUY9Ii4uLy4uL2phdmEvbmlvL2NoYXJzZXQvQ2hhcnNldC5odG1sIiB0aXRsZT0iY2xhc3MgaW4gamF2YS5uaW8uY2hhcnNldCI+Y2hhcnNldDwvQT4uPC9URD4KKyAgICA8L1RSPgorICAgIDxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgorICAgICAgICA8VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vamF2YS9sYW5nL1N0cmluZy5odG1sI1N0cmluZyhieXRlW10sIGludCwgaW50LCBpbnQpIj5TdHJpbmc8L0E+PC9CPihieXRlW10mbmJzcDthc2NpaSwKKyAgICAgICAgICAgIGludCZuYnNwO2hpYnl0ZSwKKyAgICAgICAgICAgIGludCZuYnNwO29mZnNldCwKKyAgICAgICAgICAgIGludCZuYnNwO2NvdW50KTwvQ09ERT4KKworICAgICAgICAgICAgPEJSPgorICAgICAgICAgICAgJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7PEI+RGVwcmVjYXRlZC48L0I+Jm5ic3A7PEk+VGhpcyBtZXRob2QgZG9lcyBub3QgcHJvcGVybHkgY29udmVydCBieXRlcyBpbnRvIGNoYXJhY3RlcnMuCisgICAgICAgICAgICAgICAgQXMgb2YgSkRLJm5ic3A7MS4xLCB0aGUgcHJlZmVycmVkIHdheSB0byBkbyB0aGlzIGlzIHZpYSB0aGUKKyAgICAgICAgICAgICAgICA8Y29kZT5TdHJpbmc8L2NvZGU+IGNvbnN0cnVjdG9ycyB0aGF0IHRha2UgYSA8QSBIUkVGPSIuLi8uLi9qYXZhL25pby9jaGFyc2V0L0NoYXJzZXQuaHRtbCIgdGl0bGU9ImNsYXNzIGluIGphdmEubmlvLmNoYXJzZXQiPjxDT0RFPkNoYXJzZXQ8L0NPREU+PC9BPiwgY2hhcnNldCBuYW1lLCBvciB0aGF0IHVzZSB0aGUgcGxhdGZvcm0ncworICAgICAgICAgICAgICAgIGRlZmF1bHQgY2hhcnNldC48L0k+PC9URD4KKyAgICA8L1RSPgorICAgIDxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgorICAgICAgICA8VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vamF2YS9sYW5nL1N0cmluZy5odG1sI1N0cmluZyhieXRlW10sIGludCwgaW50LCBqYXZhLmxhbmcuU3RyaW5nKSI+U3RyaW5nPC9BPjwvQj4oYnl0ZVtdJm5ic3A7Ynl0ZXMsCisgICAgICAgICAgICBpbnQmbmJzcDtvZmZzZXQsCisgICAgICAgICAgICBpbnQmbmJzcDtsZW5ndGgsCisgICAgICAgICAgICA8QSBIUkVGPSIuLi8uLi9qYXZhL2xhbmcvU3RyaW5nLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBqYXZhLmxhbmciPlN0cmluZzwvQT4mbmJzcDtjaGFyc2V0TmFtZSk8L0NPREU+CisKKyAgICAgICAgICAgIDxCUj4KKyAgICAgICAgICAgICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO0NvbnN0cnVjdHMgYSBuZXcgPGNvZGU+U3RyaW5nPC9jb2RlPiBieSBkZWNvZGluZyB0aGUgc3BlY2lmaWVkIHN1YmFycmF5IG9mCisgICAgICAgICAgICBieXRlcyB1c2luZyB0aGUgc3BlY2lmaWVkIGNoYXJzZXQuPC9URD4KKyAgICA8L1RSPgorICAgIDxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgorICAgICAgICA8VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vamF2YS9sYW5nL1N0cmluZy5odG1sI1N0cmluZyhieXRlW10sIGphdmEubGFuZy5TdHJpbmcpIj5TdHJpbmc8L0E+PC9CPihieXRlW10mbmJzcDtieXRlcywKKyAgICAgICAgICAgIDxBIEhSRUY9Ii4uLy4uL2phdmEvbGFuZy9TdHJpbmcuaHRtbCIgdGl0bGU9ImNsYXNzIGluIGphdmEubGFuZyI+U3RyaW5nPC9BPiZuYnNwO2NoYXJzZXROYW1lKTwvQ09ERT4KKworICAgICAgICAgICAgPEJSPgorICAgICAgICAgICAgJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Q29uc3RydWN0cyBhIG5ldyA8Y29kZT5TdHJpbmc8L2NvZGU+IGJ5IGRlY29kaW5nIHRoZSBzcGVjaWZpZWQgYXJyYXkgb2YgYnl0ZXMKKyAgICAgICAgICAgIHVzaW5nIHRoZSBzcGVjaWZpZWQgPEEgSFJFRj0iLi4vLi4vamF2YS9uaW8vY2hhcnNldC9DaGFyc2V0Lmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBqYXZhLm5pby5jaGFyc2V0Ij5jaGFyc2V0PC9BPi48L1REPgorICAgIDwvVFI+CisgICAgPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+CisgICAgICAgIDxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi9qYXZhL2xhbmcvU3RyaW5nLmh0bWwjU3RyaW5nKGNoYXJbXSkiPlN0cmluZzwvQT48L0I+KGNoYXJbXSZuYnNwO3ZhbHVlKTwvQ09ERT4KKworICAgICAgICAgICAgPEJSPgorICAgICAgICAgICAgJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7QWxsb2NhdGVzIGEgbmV3IDxjb2RlPlN0cmluZzwvY29kZT4gc28gdGhhdCBpdCByZXByZXNlbnRzIHRoZSBzZXF1ZW5jZSBvZgorICAgICAgICAgICAgY2hhcmFjdGVycyBjdXJyZW50bHkgY29udGFpbmVkIGluIHRoZSBjaGFyYWN0ZXIgYXJyYXkgYXJndW1lbnQuPC9URD4KKyAgICA8L1RSPgorICAgIDxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgorICAgICAgICA8VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vamF2YS9sYW5nL1N0cmluZy5odG1sI1N0cmluZyhjaGFyW10sIGludCwgaW50KSI+U3RyaW5nPC9BPjwvQj4oY2hhcltdJm5ic3A7dmFsdWUsCisgICAgICAgICAgICBpbnQmbmJzcDtvZmZzZXQsCisgICAgICAgICAgICBpbnQmbmJzcDtjb3VudCk8L0NPREU+CisKKyAgICAgICAgICAgIDxCUj4KKyAgICAgICAgICAgICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO0FsbG9jYXRlcyBhIG5ldyA8Y29kZT5TdHJpbmc8L2NvZGU+IHRoYXQgY29udGFpbnMgY2hhcmFjdGVycyBmcm9tIGEgc3ViYXJyYXkKKyAgICAgICAgICAgIG9mIHRoZSBjaGFyYWN0ZXIgYXJyYXkgYXJndW1lbnQuPC9URD4KKyAgICA8L1RSPgorICAgIDxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgorICAgICAgICA8VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vamF2YS9sYW5nL1N0cmluZy5odG1sI1N0cmluZyhpbnRbXSwgaW50LCBpbnQpIj5TdHJpbmc8L0E+PC9CPihpbnRbXSZuYnNwO2NvZGVQb2ludHMsCisgICAgICAgICAgICBpbnQmbmJzcDtvZmZzZXQsCisgICAgICAgICAgICBpbnQmbmJzcDtjb3VudCk8L0NPREU+CisKKyAgICAgICAgICAgIDxCUj4KKyAgICAgICAgICAgICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO0FsbG9jYXRlcyBhIG5ldyA8Y29kZT5TdHJpbmc8L2NvZGU+IHRoYXQgY29udGFpbnMgY2hhcmFjdGVycyBmcm9tIGEgc3ViYXJyYXkKKyAgICAgICAgICAgIG9mIHRoZSBVbmljb2RlIGNvZGUgcG9pbnQgYXJyYXkgYXJndW1lbnQuPC9URD4KKyAgICA8L1RSPgorICAgIDxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgorICAgICAgICA8VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vamF2YS9sYW5nL1N0cmluZy5odG1sI1N0cmluZyhqYXZhLmxhbmcuU3RyaW5nKSI+U3RyaW5nPC9BPjwvQj4oPEEgSFJFRj0iLi4vLi4vamF2YS9sYW5nL1N0cmluZy5odG1sIiB0aXRsZT0iY2xhc3MgaW4gamF2YS5sYW5nIj5TdHJpbmc8L0E+Jm5ic3A7b3JpZ2luYWwpPC9DT0RFPgorCisgICAgICAgICAgICA8QlI+CisgICAgICAgICAgICAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtJbml0aWFsaXplcyBhIG5ld2x5IGNyZWF0ZWQgPGNvZGU+U3RyaW5nPC9jb2RlPiBvYmplY3Qgc28gdGhhdCBpdCByZXByZXNlbnRzCisgICAgICAgICAgICB0aGUgc2FtZSBzZXF1ZW5jZSBvZiBjaGFyYWN0ZXJzIGFzIHRoZSBhcmd1bWVudDsgaW4gb3RoZXIgd29yZHMsIHRoZQorICAgICAgICAgICAgbmV3bHkgY3JlYXRlZCBzdHJpbmcgaXMgYSBjb3B5IG9mIHRoZSBhcmd1bWVudCBzdHJpbmcuPC9URD4KKyAgICA8L1RSPgorICAgIDxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgorICAgICAgICA8VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vamF2YS9sYW5nL1N0cmluZy5odG1sI1N0cmluZyhqYXZhLmxhbmcuU3RyaW5nQnVmZmVyKSI+U3RyaW5nPC9BPjwvQj4oPEEgSFJFRj0iLi4vLi4vamF2YS9sYW5nL1N0cmluZ0J1ZmZlci5odG1sIiB0aXRsZT0iY2xhc3MgaW4gamF2YS5sYW5nIj5TdHJpbmdCdWZmZXI8L0E+Jm5ic3A7YnVmZmVyKTwvQ09ERT4KKworICAgICAgICAgICAgPEJSPgorICAgICAgICAgICAgJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7QWxsb2NhdGVzIGEgbmV3IHN0cmluZyB0aGF0IGNvbnRhaW5zIHRoZSBzZXF1ZW5jZSBvZiBjaGFyYWN0ZXJzCisgICAgICAgICAgICBjdXJyZW50bHkgY29udGFpbmVkIGluIHRoZSBzdHJpbmcgYnVmZmVyIGFyZ3VtZW50LjwvVEQ+CisgICAgPC9UUj4KKyAgICA8VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KKyAgICAgICAgPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uL2phdmEvbGFuZy9TdHJpbmcuaHRtbCNTdHJpbmcoamF2YS5sYW5nLlN0cmluZ0J1aWxkZXIpIj5TdHJpbmc8L0E+PC9CPig8QSBIUkVGPSIuLi8uLi9qYXZhL2xhbmcvU3RyaW5nQnVpbGRlci5odG1sIiB0aXRsZT0iY2xhc3MgaW4gamF2YS5sYW5nIj5TdHJpbmdCdWlsZGVyPC9BPiZuYnNwO2J1aWxkZXIpPC9DT0RFPgorCisgICAgICAgICAgICA8QlI+CisgICAgICAgICAgICAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtBbGxvY2F0ZXMgYSBuZXcgc3RyaW5nIHRoYXQgY29udGFpbnMgdGhlIHNlcXVlbmNlIG9mIGNoYXJhY3RlcnMKKyAgICAgICAgICAgIGN1cnJlbnRseSBjb250YWluZWQgaW4gdGhlIHN0cmluZyBidWlsZGVyIGFyZ3VtZW50LjwvVEQ+CisgICAgPC9UUj4KKzwvVEFCTEU+CismbmJzcDsKKzwhLS0gPT09PT09PT09PSBNRVRIT0QgU1VNTUFSWSA9PT09PT09PT09PSAtLT4KKworPEEgTkFNRT0ibWV0aG9kX3N1bW1hcnkiPjwhLS0gLS0+PC9BPgorPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KKzxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVIZWFkaW5nQ29sb3IiPgorICAgIDxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMiI+PEZPTlQgU0laRT0iKzIiPgorICAgICAgICA8Qj5NZXRob2QgU3VtbWFyeTwvQj48L0ZPTlQ+PC9USD4KKzwvVFI+Cis8VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KKyAgICA8VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+CisgICAgICAgIDxDT0RFPiZuYnNwO2NoYXI8L0NPREU+PC9GT05UPjwvVEQ+CisgICAgPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uL2phdmEvbGFuZy9TdHJpbmcuaHRtbCNjaGFyQXQoaW50KSI+Y2hhckF0PC9BPjwvQj4oaW50Jm5ic3A7aW5kZXgpPC9DT0RFPgorCisgICAgICAgIDxCUj4KKyAgICAgICAgJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJucyB0aGUgPGNvZGU+Y2hhcjwvY29kZT4gdmFsdWUgYXQgdGhlCisgICAgICAgIHNwZWNpZmllZCBpbmRleC48L1REPgorPC9UUj4KKzxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgorICAgIDxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KKyAgICAgICAgPENPREU+Jm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgorICAgIDxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi9qYXZhL2xhbmcvU3RyaW5nLmh0bWwjY29kZVBvaW50QXQoaW50KSI+Y29kZVBvaW50QXQ8L0E+PC9CPihpbnQmbmJzcDtpbmRleCk8L0NPREU+CisKKyAgICAgICAgPEJSPgorICAgICAgICAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm5zIHRoZSBjaGFyYWN0ZXIgKFVuaWNvZGUgY29kZSBwb2ludCkgYXQgdGhlIHNwZWNpZmllZAorICAgICAgICBpbmRleC48L1REPgorPC9UUj4KKzxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgorICAgIDxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KKyAgICAgICAgPENPREU+Jm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgorICAgIDxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi9qYXZhL2xhbmcvU3RyaW5nLmh0bWwjY29kZVBvaW50QmVmb3JlKGludCkiPmNvZGVQb2ludEJlZm9yZTwvQT48L0I+KGludCZuYnNwO2luZGV4KTwvQ09ERT4KKworICAgICAgICA8QlI+CisgICAgICAgICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybnMgdGhlIGNoYXJhY3RlciAoVW5pY29kZSBjb2RlIHBvaW50KSBiZWZvcmUgdGhlIHNwZWNpZmllZAorICAgICAgICBpbmRleC48L1REPgorPC9UUj4KKzxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgorICAgIDxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KKyAgICAgICAgPENPREU+Jm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgorICAgIDxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi9qYXZhL2xhbmcvU3RyaW5nLmh0bWwjY29kZVBvaW50Q291bnQoaW50LCBpbnQpIj5jb2RlUG9pbnRDb3VudDwvQT48L0I+KGludCZuYnNwO2JlZ2luSW5kZXgsCisgICAgICAgIGludCZuYnNwO2VuZEluZGV4KTwvQ09ERT4KKworICAgICAgICA8QlI+CisgICAgICAgICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybnMgdGhlIG51bWJlciBvZiBVbmljb2RlIGNvZGUgcG9pbnRzIGluIHRoZSBzcGVjaWZpZWQgdGV4dAorICAgICAgICByYW5nZSBvZiB0aGlzIDxjb2RlPlN0cmluZzwvY29kZT4uPC9URD4KKzwvVFI+Cis8VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KKyAgICA8VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+CisgICAgICAgIDxDT0RFPiZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KKyAgICA8VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vamF2YS9sYW5nL1N0cmluZy5odG1sI2NvbXBhcmVUbyhqYXZhLmxhbmcuU3RyaW5nKSI+Y29tcGFyZVRvPC9BPjwvQj4oPEEgSFJFRj0iLi4vLi4vamF2YS9sYW5nL1N0cmluZy5odG1sIiB0aXRsZT0iY2xhc3MgaW4gamF2YS5sYW5nIj5TdHJpbmc8L0E+Jm5ic3A7YW5vdGhlclN0cmluZyk8L0NPREU+CisKKyAgICAgICAgPEJSPgorICAgICAgICAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtDb21wYXJlcyB0d28gc3RyaW5ncyBsZXhpY29ncmFwaGljYWxseS48L1REPgorPC9UUj4KKzxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgorICAgIDxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KKyAgICAgICAgPENPREU+Jm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgorICAgIDxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi9qYXZhL2xhbmcvU3RyaW5nLmh0bWwjY29tcGFyZVRvSWdub3JlQ2FzZShqYXZhLmxhbmcuU3RyaW5nKSI+Y29tcGFyZVRvSWdub3JlQ2FzZTwvQT48L0I+KDxBIEhSRUY9Ii4uLy4uL2phdmEvbGFuZy9TdHJpbmcuaHRtbCIgdGl0bGU9ImNsYXNzIGluIGphdmEubGFuZyI+U3RyaW5nPC9BPiZuYnNwO3N0cik8L0NPREU+CisKKyAgICAgICAgPEJSPgorICAgICAgICAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtDb21wYXJlcyB0d28gc3RyaW5ncyBsZXhpY29ncmFwaGljYWxseSwgaWdub3JpbmcgY2FzZQorICAgICAgICBkaWZmZXJlbmNlcy48L1REPgorPC9UUj4KKzxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgorICAgIDxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KKyAgICAgICAgPENPREU+Jm5ic3A7PEEgSFJFRj0iLi4vLi4vamF2YS9sYW5nL1N0cmluZy5odG1sIiB0aXRsZT0iY2xhc3MgaW4gamF2YS5sYW5nIj5TdHJpbmc8L0E+PC9DT0RFPjwvRk9OVD48L1REPgorICAgIDxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi9qYXZhL2xhbmcvU3RyaW5nLmh0bWwjY29uY2F0KGphdmEubGFuZy5TdHJpbmcpIj5jb25jYXQ8L0E+PC9CPig8QSBIUkVGPSIuLi8uLi9qYXZhL2xhbmcvU3RyaW5nLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBqYXZhLmxhbmciPlN0cmluZzwvQT4mbmJzcDtzdHIpPC9DT0RFPgorCisgICAgICAgIDxCUj4KKyAgICAgICAgJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Q29uY2F0ZW5hdGVzIHRoZSBzcGVjaWZpZWQgc3RyaW5nIHRvIHRoZSBlbmQgb2YgdGhpcyBzdHJpbmcuPC9URD4KKzwvVFI+Cis8VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KKyAgICA8VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+CisgICAgICAgIDxDT0RFPiZuYnNwO2Jvb2xlYW48L0NPREU+PC9GT05UPjwvVEQ+CisgICAgPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uL2phdmEvbGFuZy9TdHJpbmcuaHRtbCNjb250YWlucyhqYXZhLmxhbmcuQ2hhclNlcXVlbmNlKSI+Y29udGFpbnM8L0E+PC9CPig8QSBIUkVGPSIuLi8uLi9qYXZhL2xhbmcvQ2hhclNlcXVlbmNlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gamF2YS5sYW5nIj5DaGFyU2VxdWVuY2U8L0E+Jm5ic3A7cyk8L0NPREU+CisKKyAgICAgICAgPEJSPgorICAgICAgICAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm5zIHRydWUgaWYgYW5kIG9ubHkgaWYgdGhpcyBzdHJpbmcgY29udGFpbnMgdGhlIHNwZWNpZmllZAorICAgICAgICBzZXF1ZW5jZSBvZiBjaGFyIHZhbHVlcy48L1REPgorPC9UUj4KKzxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgorICAgIDxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KKyAgICAgICAgPENPREU+Jm5ic3A7Ym9vbGVhbjwvQ09ERT48L0ZPTlQ+PC9URD4KKyAgICA8VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vamF2YS9sYW5nL1N0cmluZy5odG1sI2NvbnRlbnRFcXVhbHMoamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSkiPmNvbnRlbnRFcXVhbHM8L0E+PC9CPig8QSBIUkVGPSIuLi8uLi9qYXZhL2xhbmcvQ2hhclNlcXVlbmNlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gamF2YS5sYW5nIj5DaGFyU2VxdWVuY2U8L0E+Jm5ic3A7Y3MpPC9DT0RFPgorCisgICAgICAgIDxCUj4KKyAgICAgICAgJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Q29tcGFyZXMgdGhpcyBzdHJpbmcgdG8gdGhlIHNwZWNpZmllZCA8Y29kZT5DaGFyU2VxdWVuY2U8L2NvZGU+LjwvVEQ+Cis8L1RSPgorPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+CisgICAgPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgorICAgICAgICA8Q09ERT4mbmJzcDtib29sZWFuPC9DT0RFPjwvRk9OVD48L1REPgorICAgIDxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi9qYXZhL2xhbmcvU3RyaW5nLmh0bWwjY29udGVudEVxdWFscyhqYXZhLmxhbmcuU3RyaW5nQnVmZmVyKSI+Y29udGVudEVxdWFsczwvQT48L0I+KDxBIEhSRUY9Ii4uLy4uL2phdmEvbGFuZy9TdHJpbmdCdWZmZXIuaHRtbCIgdGl0bGU9ImNsYXNzIGluIGphdmEubGFuZyI+U3RyaW5nQnVmZmVyPC9BPiZuYnNwO3NiKTwvQ09ERT4KKworICAgICAgICA8QlI+CisgICAgICAgICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO0NvbXBhcmVzIHRoaXMgc3RyaW5nIHRvIHRoZSBzcGVjaWZpZWQgPGNvZGU+U3RyaW5nQnVmZmVyPC9jb2RlPi48L1REPgorPC9UUj4KKzxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgorICAgIDxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KKyAgICAgICAgPENPREU+c3RhdGljJm5ic3A7PEEgSFJFRj0iLi4vLi4vamF2YS9sYW5nL1N0cmluZy5odG1sIiB0aXRsZT0iY2xhc3MgaW4gamF2YS5sYW5nIj5TdHJpbmc8L0E+PC9DT0RFPjwvRk9OVD48L1REPgorICAgIDxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi9qYXZhL2xhbmcvU3RyaW5nLmh0bWwjY29weVZhbHVlT2YoY2hhcltdKSI+Y29weVZhbHVlT2Y8L0E+PC9CPihjaGFyW10mbmJzcDtkYXRhKTwvQ09ERT4KKworICAgICAgICA8QlI+CisgICAgICAgICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybnMgYSBTdHJpbmcgdGhhdCByZXByZXNlbnRzIHRoZSBjaGFyYWN0ZXIgc2VxdWVuY2UgaW4gdGhlCisgICAgICAgIGFycmF5IHNwZWNpZmllZC48L1REPgorPC9UUj4KKzxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgorICAgIDxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KKyAgICAgICAgPENPREU+c3RhdGljJm5ic3A7PEEgSFJFRj0iLi4vLi4vamF2YS9sYW5nL1N0cmluZy5odG1sIiB0aXRsZT0iY2xhc3MgaW4gamF2YS5sYW5nIj5TdHJpbmc8L0E+PC9DT0RFPjwvRk9OVD48L1REPgorICAgIDxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi9qYXZhL2xhbmcvU3RyaW5nLmh0bWwjY29weVZhbHVlT2YoY2hhcltdLCBpbnQsIGludCkiPmNvcHlWYWx1ZU9mPC9BPjwvQj4oY2hhcltdJm5ic3A7ZGF0YSwKKyAgICAgICAgaW50Jm5ic3A7b2Zmc2V0LAorICAgICAgICBpbnQmbmJzcDtjb3VudCk8L0NPREU+CisKKyAgICAgICAgPEJSPgorICAgICAgICAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm5zIGEgU3RyaW5nIHRoYXQgcmVwcmVzZW50cyB0aGUgY2hhcmFjdGVyIHNlcXVlbmNlIGluIHRoZQorICAgICAgICBhcnJheSBzcGVjaWZpZWQuPC9URD4KKzwvVFI+Cis8VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KKyAgICA8VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+CisgICAgICAgIDxDT0RFPiZuYnNwO2Jvb2xlYW48L0NPREU+PC9GT05UPjwvVEQ+CisgICAgPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uL2phdmEvbGFuZy9TdHJpbmcuaHRtbCNlbmRzV2l0aChqYXZhLmxhbmcuU3RyaW5nKSI+ZW5kc1dpdGg8L0E+PC9CPig8QSBIUkVGPSIuLi8uLi9qYXZhL2xhbmcvU3RyaW5nLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBqYXZhLmxhbmciPlN0cmluZzwvQT4mbmJzcDtzdWZmaXgpPC9DT0RFPgorCisgICAgICAgIDxCUj4KKyAgICAgICAgJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGVzdHMgaWYgdGhpcyBzdHJpbmcgZW5kcyB3aXRoIHRoZSBzcGVjaWZpZWQgc3VmZml4LjwvVEQ+Cis8L1RSPgorPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+CisgICAgPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgorICAgICAgICA8Q09ERT4mbmJzcDtib29sZWFuPC9DT0RFPjwvRk9OVD48L1REPgorICAgIDxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi9qYXZhL2xhbmcvU3RyaW5nLmh0bWwjZXF1YWxzKGphdmEubGFuZy5PYmplY3QpIj5lcXVhbHM8L0E+PC9CPig8QSBIUkVGPSIuLi8uLi9qYXZhL2xhbmcvT2JqZWN0Lmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBqYXZhLmxhbmciPk9iamVjdDwvQT4mbmJzcDthbk9iamVjdCk8L0NPREU+CisKKyAgICAgICAgPEJSPgorICAgICAgICAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtDb21wYXJlcyB0aGlzIHN0cmluZyB0byB0aGUgc3BlY2lmaWVkIG9iamVjdC48L1REPgorPC9UUj4KKzxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgorICAgIDxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KKyAgICAgICAgPENPREU+Jm5ic3A7Ym9vbGVhbjwvQ09ERT48L0ZPTlQ+PC9URD4KKyAgICA8VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vamF2YS9sYW5nL1N0cmluZy5odG1sI2VxdWFsc0lnbm9yZUNhc2UoamF2YS5sYW5nLlN0cmluZykiPmVxdWFsc0lnbm9yZUNhc2U8L0E+PC9CPig8QSBIUkVGPSIuLi8uLi9qYXZhL2xhbmcvU3RyaW5nLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBqYXZhLmxhbmciPlN0cmluZzwvQT4mbmJzcDthbm90aGVyU3RyaW5nKTwvQ09ERT4KKworICAgICAgICA8QlI+CisgICAgICAgICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO0NvbXBhcmVzIHRoaXMgPGNvZGU+U3RyaW5nPC9jb2RlPiB0byBhbm90aGVyIDxjb2RlPlN0cmluZzwvY29kZT4sIGlnbm9yaW5nIGNhc2UKKyAgICAgICAgY29uc2lkZXJhdGlvbnMuPC9URD4KKzwvVFI+Cis8VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KKyAgICA8VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+CisgICAgICAgIDxDT0RFPnN0YXRpYyZuYnNwOzxBIEhSRUY9Ii4uLy4uL2phdmEvbGFuZy9TdHJpbmcuaHRtbCIgdGl0bGU9ImNsYXNzIGluIGphdmEubGFuZyI+U3RyaW5nPC9BPjwvQ09ERT48L0ZPTlQ+PC9URD4KKyAgICA8VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vamF2YS9sYW5nL1N0cmluZy5odG1sI2Zvcm1hdChqYXZhLnV0aWwuTG9jYWxlLCBqYXZhLmxhbmcuU3RyaW5nLCBqYXZhLmxhbmcuT2JqZWN0Li4uKSI+Zm9ybWF0PC9BPjwvQj4oPEEgSFJFRj0iLi4vLi4vamF2YS91dGlsL0xvY2FsZS5odG1sIiB0aXRsZT0iY2xhc3MgaW4gamF2YS51dGlsIj5Mb2NhbGU8L0E+Jm5ic3A7bCwKKyAgICAgICAgPEEgSFJFRj0iLi4vLi4vamF2YS9sYW5nL1N0cmluZy5odG1sIiB0aXRsZT0iY2xhc3MgaW4gamF2YS5sYW5nIj5TdHJpbmc8L0E+Jm5ic3A7Zm9ybWF0LAorICAgICAgICA8QSBIUkVGPSIuLi8uLi9qYXZhL2xhbmcvT2JqZWN0Lmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBqYXZhLmxhbmciPk9iamVjdDwvQT4uLi4mbmJzcDthcmdzKTwvQ09ERT4KKworICAgICAgICA8QlI+CisgICAgICAgICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybnMgYSBmb3JtYXR0ZWQgc3RyaW5nIHVzaW5nIHRoZSBzcGVjaWZpZWQgbG9jYWxlLCBmb3JtYXQgc3RyaW5nLAorICAgICAgICBhbmQgYXJndW1lbnRzLjwvVEQ+Cis8L1RSPgorPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+CisgICAgPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgorICAgICAgICA8Q09ERT5zdGF0aWMmbmJzcDs8QSBIUkVGPSIuLi8uLi9qYXZhL2xhbmcvU3RyaW5nLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBqYXZhLmxhbmciPlN0cmluZzwvQT48L0NPREU+PC9GT05UPjwvVEQ+CisgICAgPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uL2phdmEvbGFuZy9TdHJpbmcuaHRtbCNmb3JtYXQoamF2YS5sYW5nLlN0cmluZywgamF2YS5sYW5nLk9iamVjdC4uLikiPmZvcm1hdDwvQT48L0I+KDxBIEhSRUY9Ii4uLy4uL2phdmEvbGFuZy9TdHJpbmcuaHRtbCIgdGl0bGU9ImNsYXNzIGluIGphdmEubGFuZyI+U3RyaW5nPC9BPiZuYnNwO2Zvcm1hdCwKKyAgICAgICAgPEEgSFJFRj0iLi4vLi4vamF2YS9sYW5nL09iamVjdC5odG1sIiB0aXRsZT0iY2xhc3MgaW4gamF2YS5sYW5nIj5PYmplY3Q8L0E+Li4uJm5ic3A7YXJncyk8L0NPREU+CisKKyAgICAgICAgPEJSPgorICAgICAgICAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm5zIGEgZm9ybWF0dGVkIHN0cmluZyB1c2luZyB0aGUgc3BlY2lmaWVkIGZvcm1hdCBzdHJpbmcgYW5kCisgICAgICAgIGFyZ3VtZW50cy48L1REPgorPC9UUj4KKzxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgorICAgIDxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KKyAgICAgICAgPENPREU+Jm5ic3A7Ynl0ZVtdPC9DT0RFPjwvRk9OVD48L1REPgorICAgIDxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi9qYXZhL2xhbmcvU3RyaW5nLmh0bWwjZ2V0Qnl0ZXMoKSI+Z2V0Qnl0ZXM8L0E+PC9CPigpPC9DT0RFPgorCisgICAgICAgIDxCUj4KKyAgICAgICAgJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7RW5jb2RlcyB0aGlzIDxjb2RlPlN0cmluZzwvY29kZT4gaW50byBhIHNlcXVlbmNlIG9mIGJ5dGVzIHVzaW5nIHRoZQorICAgICAgICBwbGF0Zm9ybSdzIGRlZmF1bHQgY2hhcnNldCwgc3RvcmluZyB0aGUgcmVzdWx0IGludG8gYSBuZXcgYnl0ZSBhcnJheS48L1REPgorPC9UUj4KKzxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgorICAgIDxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KKyAgICAgICAgPENPREU+Jm5ic3A7Ynl0ZVtdPC9DT0RFPjwvRk9OVD48L1REPgorICAgIDxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi9qYXZhL2xhbmcvU3RyaW5nLmh0bWwjZ2V0Qnl0ZXMoamF2YS5uaW8uY2hhcnNldC5DaGFyc2V0KSI+Z2V0Qnl0ZXM8L0E+PC9CPig8QSBIUkVGPSIuLi8uLi9qYXZhL25pby9jaGFyc2V0L0NoYXJzZXQuaHRtbCIgdGl0bGU9ImNsYXNzIGluIGphdmEubmlvLmNoYXJzZXQiPkNoYXJzZXQ8L0E+Jm5ic3A7Y2hhcnNldCk8L0NPREU+CisKKyAgICAgICAgPEJSPgorICAgICAgICAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtFbmNvZGVzIHRoaXMgPGNvZGU+U3RyaW5nPC9jb2RlPiBpbnRvIGEgc2VxdWVuY2Ugb2YgYnl0ZXMgdXNpbmcgdGhlIGdpdmVuCisgICAgICAgIDxBIEhSRUY9Ii4uLy4uL2phdmEvbmlvL2NoYXJzZXQvQ2hhcnNldC5odG1sIiB0aXRsZT0iY2xhc3MgaW4gamF2YS5uaW8uY2hhcnNldCI+Y2hhcnNldDwvQT4sIHN0b3JpbmcgdGhlIHJlc3VsdCBpbnRvIGEKKyAgICAgICAgbmV3IGJ5dGUgYXJyYXkuPC9URD4KKzwvVFI+Cis8VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KKyAgICA8VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+CisgICAgICAgIDxDT0RFPiZuYnNwO3ZvaWQ8L0NPREU+PC9GT05UPjwvVEQ+CisgICAgPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uL2phdmEvbGFuZy9TdHJpbmcuaHRtbCNnZXRCeXRlcyhpbnQsIGludCwgYnl0ZVtdLCBpbnQpIj5nZXRCeXRlczwvQT48L0I+KGludCZuYnNwO3NyY0JlZ2luLAorICAgICAgICBpbnQmbmJzcDtzcmNFbmQsCisgICAgICAgIGJ5dGVbXSZuYnNwO2RzdCwKKyAgICAgICAgaW50Jm5ic3A7ZHN0QmVnaW4pPC9DT0RFPgorCisgICAgICAgIDxCUj4KKyAgICAgICAgJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7PEI+RGVwcmVjYXRlZC48L0I+Jm5ic3A7PEk+VGhpcyBtZXRob2QgZG9lcyBub3QgcHJvcGVybHkgY29udmVydCBjaGFyYWN0ZXJzIGludG8KKyAgICAgICAgICAgIGJ5dGVzLiAgQXMgb2YgSkRLJm5ic3A7MS4xLCB0aGUgcHJlZmVycmVkIHdheSB0byBkbyB0aGlzIGlzIHZpYSB0aGUKKyAgICAgICAgICAgIDxBIEhSRUY9Ii4uLy4uL2phdmEvbGFuZy9TdHJpbmcuaHRtbCNnZXRCeXRlcygpIj48Q09ERT5nZXRCeXRlcygpPC9DT0RFPjwvQT4gbWV0aG9kLCB3aGljaCB1c2VzIHRoZSBwbGF0Zm9ybSdzIGRlZmF1bHQgY2hhcnNldC48L0k+PC9URD4KKzwvVFI+Cis8VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KKyAgICA8VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+CisgICAgICAgIDxDT0RFPiZuYnNwO2J5dGVbXTwvQ09ERT48L0ZPTlQ+PC9URD4KKyAgICA8VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vamF2YS9sYW5nL1N0cmluZy5odG1sI2dldEJ5dGVzKGphdmEubGFuZy5TdHJpbmcpIj5nZXRCeXRlczwvQT48L0I+KDxBIEhSRUY9Ii4uLy4uL2phdmEvbGFuZy9TdHJpbmcuaHRtbCIgdGl0bGU9ImNsYXNzIGluIGphdmEubGFuZyI+U3RyaW5nPC9BPiZuYnNwO2NoYXJzZXROYW1lKTwvQ09ERT4KKworICAgICAgICA8QlI+CisgICAgICAgICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO0VuY29kZXMgdGhpcyA8Y29kZT5TdHJpbmc8L2NvZGU+IGludG8gYSBzZXF1ZW5jZSBvZiBieXRlcyB1c2luZyB0aGUgbmFtZWQKKyAgICAgICAgY2hhcnNldCwgc3RvcmluZyB0aGUgcmVzdWx0IGludG8gYSBuZXcgYnl0ZSBhcnJheS48L1REPgorPC9UUj4KKzxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgorICAgIDxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KKyAgICAgICAgPENPREU+Jm5ic3A7dm9pZDwvQ09ERT48L0ZPTlQ+PC9URD4KKyAgICA8VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vamF2YS9sYW5nL1N0cmluZy5odG1sI2dldENoYXJzKGludCwgaW50LCBjaGFyW10sIGludCkiPmdldENoYXJzPC9BPjwvQj4oaW50Jm5ic3A7c3JjQmVnaW4sCisgICAgICAgIGludCZuYnNwO3NyY0VuZCwKKyAgICAgICAgY2hhcltdJm5ic3A7ZHN0LAorICAgICAgICBpbnQmbmJzcDtkc3RCZWdpbik8L0NPREU+CisKKyAgICAgICAgPEJSPgorICAgICAgICAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtDb3BpZXMgY2hhcmFjdGVycyBmcm9tIHRoaXMgc3RyaW5nIGludG8gdGhlIGRlc3RpbmF0aW9uIGNoYXJhY3RlcgorICAgICAgICBhcnJheS48L1REPgorPC9UUj4KKzxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgorICAgIDxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KKyAgICAgICAgPENPREU+Jm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgorICAgIDxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi9qYXZhL2xhbmcvU3RyaW5nLmh0bWwjaGFzaENvZGUoKSI+aGFzaENvZGU8L0E+PC9CPigpPC9DT0RFPgorCisgICAgICAgIDxCUj4KKyAgICAgICAgJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJucyBhIGhhc2ggY29kZSBmb3IgdGhpcyBzdHJpbmcuPC9URD4KKzwvVFI+Cis8VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KKyAgICA8VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+CisgICAgICAgIDxDT0RFPiZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KKyAgICA8VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vamF2YS9sYW5nL1N0cmluZy5odG1sI2luZGV4T2YoaW50KSI+aW5kZXhPZjwvQT48L0I+KGludCZuYnNwO2NoKTwvQ09ERT4KKworICAgICAgICA8QlI+CisgICAgICAgICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybnMgdGhlIGluZGV4IHdpdGhpbiB0aGlzIHN0cmluZyBvZiB0aGUgZmlyc3Qgb2NjdXJyZW5jZSBvZgorICAgICAgICB0aGUgc3BlY2lmaWVkIGNoYXJhY3Rlci48L1REPgorPC9UUj4KKzxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgorICAgIDxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KKyAgICAgICAgPENPREU+Jm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgorICAgIDxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi9qYXZhL2xhbmcvU3RyaW5nLmh0bWwjaW5kZXhPZihpbnQsIGludCkiPmluZGV4T2Y8L0E+PC9CPihpbnQmbmJzcDtjaCwKKyAgICAgICAgaW50Jm5ic3A7ZnJvbUluZGV4KTwvQ09ERT4KKworICAgICAgICA8QlI+CisgICAgICAgICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybnMgdGhlIGluZGV4IHdpdGhpbiB0aGlzIHN0cmluZyBvZiB0aGUgZmlyc3Qgb2NjdXJyZW5jZSBvZiB0aGUKKyAgICAgICAgc3BlY2lmaWVkIGNoYXJhY3Rlciwgc3RhcnRpbmcgdGhlIHNlYXJjaCBhdCB0aGUgc3BlY2lmaWVkIGluZGV4LjwvVEQ+Cis8L1RSPgorPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+CisgICAgPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgorICAgICAgICA8Q09ERT4mbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+CisgICAgPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uL2phdmEvbGFuZy9TdHJpbmcuaHRtbCNpbmRleE9mKGphdmEubGFuZy5TdHJpbmcpIj5pbmRleE9mPC9BPjwvQj4oPEEgSFJFRj0iLi4vLi4vamF2YS9sYW5nL1N0cmluZy5odG1sIiB0aXRsZT0iY2xhc3MgaW4gamF2YS5sYW5nIj5TdHJpbmc8L0E+Jm5ic3A7c3RyKTwvQ09ERT4KKworICAgICAgICA8QlI+CisgICAgICAgICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybnMgdGhlIGluZGV4IHdpdGhpbiB0aGlzIHN0cmluZyBvZiB0aGUgZmlyc3Qgb2NjdXJyZW5jZSBvZiB0aGUKKyAgICAgICAgc3BlY2lmaWVkIHN1YnN0cmluZy48L1REPgorPC9UUj4KKzxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgorICAgIDxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KKyAgICAgICAgPENPREU+Jm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgorICAgIDxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi9qYXZhL2xhbmcvU3RyaW5nLmh0bWwjaW5kZXhPZihqYXZhLmxhbmcuU3RyaW5nLCBpbnQpIj5pbmRleE9mPC9BPjwvQj4oPEEgSFJFRj0iLi4vLi4vamF2YS9sYW5nL1N0cmluZy5odG1sIiB0aXRsZT0iY2xhc3MgaW4gamF2YS5sYW5nIj5TdHJpbmc8L0E+Jm5ic3A7c3RyLAorICAgICAgICBpbnQmbmJzcDtmcm9tSW5kZXgpPC9DT0RFPgorCisgICAgICAgIDxCUj4KKyAgICAgICAgJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJucyB0aGUgaW5kZXggd2l0aGluIHRoaXMgc3RyaW5nIG9mIHRoZSBmaXJzdCBvY2N1cnJlbmNlIG9mIHRoZQorICAgICAgICBzcGVjaWZpZWQgc3Vic3RyaW5nLCBzdGFydGluZyBhdCB0aGUgc3BlY2lmaWVkIGluZGV4LjwvVEQ+Cis8L1RSPgorPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+CisgICAgPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgorICAgICAgICA8Q09ERT4mbmJzcDs8QSBIUkVGPSIuLi8uLi9qYXZhL2xhbmcvU3RyaW5nLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBqYXZhLmxhbmciPlN0cmluZzwvQT48L0NPREU+PC9GT05UPjwvVEQ+CisgICAgPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uL2phdmEvbGFuZy9TdHJpbmcuaHRtbCNpbnRlcm4oKSI+aW50ZXJuPC9BPjwvQj4oKTwvQ09ERT4KKworICAgICAgICA8QlI+CisgICAgICAgICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybnMgYSBjYW5vbmljYWwgcmVwcmVzZW50YXRpb24gZm9yIHRoZSBzdHJpbmcgb2JqZWN0LjwvVEQ+Cis8L1RSPgorPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+CisgICAgPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgorICAgICAgICA8Q09ERT4mbmJzcDtib29sZWFuPC9DT0RFPjwvRk9OVD48L1REPgorICAgIDxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi9qYXZhL2xhbmcvU3RyaW5nLmh0bWwjaXNFbXB0eSgpIj5pc0VtcHR5PC9BPjwvQj4oKTwvQ09ERT4KKworICAgICAgICA8QlI+CisgICAgICAgICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybnMgPHR0PnRydWU8L3R0PiBpZiwgYW5kIG9ubHkgaWYsIDxBIEhSRUY9Ii4uLy4uL2phdmEvbGFuZy9TdHJpbmcuaHRtbCNsZW5ndGgoKSI+PENPREU+bGVuZ3RoKCk8L0NPREU+PC9BPiBpcyA8dHQ+MDwvdHQ+LjwvVEQ+Cis8L1RSPgorPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+CisgICAgPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgorICAgICAgICA8Q09ERT4mbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+CisgICAgPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uL2phdmEvbGFuZy9TdHJpbmcuaHRtbCNsYXN0SW5kZXhPZihpbnQpIj5sYXN0SW5kZXhPZjwvQT48L0I+KGludCZuYnNwO2NoKTwvQ09ERT4KKworICAgICAgICA8QlI+CisgICAgICAgICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybnMgdGhlIGluZGV4IHdpdGhpbiB0aGlzIHN0cmluZyBvZiB0aGUgbGFzdCBvY2N1cnJlbmNlIG9mCisgICAgICAgIHRoZSBzcGVjaWZpZWQgY2hhcmFjdGVyLjwvVEQ+Cis8L1RSPgorPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+CisgICAgPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgorICAgICAgICA8Q09ERT4mbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+CisgICAgPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uL2phdmEvbGFuZy9TdHJpbmcuaHRtbCNsYXN0SW5kZXhPZihpbnQsIGludCkiPmxhc3RJbmRleE9mPC9BPjwvQj4oaW50Jm5ic3A7Y2gsCisgICAgICAgIGludCZuYnNwO2Zyb21JbmRleCk8L0NPREU+CisKKyAgICAgICAgPEJSPgorICAgICAgICAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm5zIHRoZSBpbmRleCB3aXRoaW4gdGhpcyBzdHJpbmcgb2YgdGhlIGxhc3Qgb2NjdXJyZW5jZSBvZgorICAgICAgICB0aGUgc3BlY2lmaWVkIGNoYXJhY3Rlciwgc2VhcmNoaW5nIGJhY2t3YXJkIHN0YXJ0aW5nIGF0IHRoZQorICAgICAgICBzcGVjaWZpZWQgaW5kZXguPC9URD4KKzwvVFI+Cis8VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KKyAgICA8VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+CisgICAgICAgIDxDT0RFPiZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KKyAgICA8VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vamF2YS9sYW5nL1N0cmluZy5odG1sI2xhc3RJbmRleE9mKGphdmEubGFuZy5TdHJpbmcpIj5sYXN0SW5kZXhPZjwvQT48L0I+KDxBIEhSRUY9Ii4uLy4uL2phdmEvbGFuZy9TdHJpbmcuaHRtbCIgdGl0bGU9ImNsYXNzIGluIGphdmEubGFuZyI+U3RyaW5nPC9BPiZuYnNwO3N0cik8L0NPREU+CisKKyAgICAgICAgPEJSPgorICAgICAgICAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm5zIHRoZSBpbmRleCB3aXRoaW4gdGhpcyBzdHJpbmcgb2YgdGhlIHJpZ2h0bW9zdCBvY2N1cnJlbmNlCisgICAgICAgIG9mIHRoZSBzcGVjaWZpZWQgc3Vic3RyaW5nLjwvVEQ+Cis8L1RSPgorPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+CisgICAgPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgorICAgICAgICA8Q09ERT4mbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+CisgICAgPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uL2phdmEvbGFuZy9TdHJpbmcuaHRtbCNsYXN0SW5kZXhPZihqYXZhLmxhbmcuU3RyaW5nLCBpbnQpIj5sYXN0SW5kZXhPZjwvQT48L0I+KDxBIEhSRUY9Ii4uLy4uL2phdmEvbGFuZy9TdHJpbmcuaHRtbCIgdGl0bGU9ImNsYXNzIGluIGphdmEubGFuZyI+U3RyaW5nPC9BPiZuYnNwO3N0ciwKKyAgICAgICAgaW50Jm5ic3A7ZnJvbUluZGV4KTwvQ09ERT4KKworICAgICAgICA8QlI+CisgICAgICAgICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybnMgdGhlIGluZGV4IHdpdGhpbiB0aGlzIHN0cmluZyBvZiB0aGUgbGFzdCBvY2N1cnJlbmNlIG9mIHRoZQorICAgICAgICBzcGVjaWZpZWQgc3Vic3RyaW5nLCBzZWFyY2hpbmcgYmFja3dhcmQgc3RhcnRpbmcgYXQgdGhlIHNwZWNpZmllZCBpbmRleC48L1REPgorPC9UUj4KKzxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgorICAgIDxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KKyAgICAgICAgPENPREU+Jm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPgorICAgIDxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi9qYXZhL2xhbmcvU3RyaW5nLmh0bWwjbGVuZ3RoKCkiPmxlbmd0aDwvQT48L0I+KCk8L0NPREU+CisKKyAgICAgICAgPEJSPgorICAgICAgICAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm5zIHRoZSBsZW5ndGggb2YgdGhpcyBzdHJpbmcuPC9URD4KKzwvVFI+Cis8VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KKyAgICA8VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+CisgICAgICAgIDxDT0RFPiZuYnNwO2Jvb2xlYW48L0NPREU+PC9GT05UPjwvVEQ+CisgICAgPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uL2phdmEvbGFuZy9TdHJpbmcuaHRtbCNtYXRjaGVzKGphdmEubGFuZy5TdHJpbmcpIj5tYXRjaGVzPC9BPjwvQj4oPEEgSFJFRj0iLi4vLi4vamF2YS9sYW5nL1N0cmluZy5odG1sIiB0aXRsZT0iY2xhc3MgaW4gamF2YS5sYW5nIj5TdHJpbmc8L0E+Jm5ic3A7cmVnZXgpPC9DT0RFPgorCisgICAgICAgIDxCUj4KKyAgICAgICAgJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGVsbHMgd2hldGhlciBvciBub3QgdGhpcyBzdHJpbmcgbWF0Y2hlcyB0aGUgZ2l2ZW4gPGEKKyAgICAgICAgICAgICAgICBocmVmPSIuLi91dGlsL3JlZ2V4L1BhdHRlcm4uaHRtbCNzdW0iPnJlZ3VsYXIgZXhwcmVzc2lvbjwvYT4uPC9URD4KKzwvVFI+Cis8VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KKyAgICA8VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+CisgICAgICAgIDxDT0RFPiZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4KKyAgICA8VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vamF2YS9sYW5nL1N0cmluZy5odG1sI29mZnNldEJ5Q29kZVBvaW50cyhpbnQsIGludCkiPm9mZnNldEJ5Q29kZVBvaW50czwvQT48L0I+KGludCZuYnNwO2luZGV4LAorICAgICAgICBpbnQmbmJzcDtjb2RlUG9pbnRPZmZzZXQpPC9DT0RFPgorCisgICAgICAgIDxCUj4KKyAgICAgICAgJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJucyB0aGUgaW5kZXggd2l0aGluIHRoaXMgPGNvZGU+U3RyaW5nPC9jb2RlPiB0aGF0IGlzCisgICAgICAgIG9mZnNldCBmcm9tIHRoZSBnaXZlbiA8Y29kZT5pbmRleDwvY29kZT4gYnkKKyAgICAgICAgPGNvZGU+Y29kZVBvaW50T2Zmc2V0PC9jb2RlPiBjb2RlIHBvaW50cy48L1REPgorPC9UUj4KKzxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgorICAgIDxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KKyAgICAgICAgPENPREU+Jm5ic3A7Ym9vbGVhbjwvQ09ERT48L0ZPTlQ+PC9URD4KKyAgICA8VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vamF2YS9sYW5nL1N0cmluZy5odG1sI3JlZ2lvbk1hdGNoZXMoYm9vbGVhbiwgaW50LCBqYXZhLmxhbmcuU3RyaW5nLCBpbnQsIGludCkiPnJlZ2lvbk1hdGNoZXM8L0E+PC9CPihib29sZWFuJm5ic3A7aWdub3JlQ2FzZSwKKyAgICAgICAgaW50Jm5ic3A7dG9mZnNldCwKKyAgICAgICAgPEEgSFJFRj0iLi4vLi4vamF2YS9sYW5nL1N0cmluZy5odG1sIiB0aXRsZT0iY2xhc3MgaW4gamF2YS5sYW5nIj5TdHJpbmc8L0E+Jm5ic3A7b3RoZXIsCisgICAgICAgIGludCZuYnNwO29vZmZzZXQsCisgICAgICAgIGludCZuYnNwO2xlbik8L0NPREU+CisKKyAgICAgICAgPEJSPgorICAgICAgICAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUZXN0cyBpZiB0d28gc3RyaW5nIHJlZ2lvbnMgYXJlIGVxdWFsLjwvVEQ+Cis8L1RSPgorPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+CisgICAgPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgorICAgICAgICA8Q09ERT4mbmJzcDtib29sZWFuPC9DT0RFPjwvRk9OVD48L1REPgorICAgIDxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi9qYXZhL2xhbmcvU3RyaW5nLmh0bWwjcmVnaW9uTWF0Y2hlcyhpbnQsIGphdmEubGFuZy5TdHJpbmcsIGludCwgaW50KSI+cmVnaW9uTWF0Y2hlczwvQT48L0I+KGludCZuYnNwO3RvZmZzZXQsCisgICAgICAgIDxBIEhSRUY9Ii4uLy4uL2phdmEvbGFuZy9TdHJpbmcuaHRtbCIgdGl0bGU9ImNsYXNzIGluIGphdmEubGFuZyI+U3RyaW5nPC9BPiZuYnNwO290aGVyLAorICAgICAgICBpbnQmbmJzcDtvb2Zmc2V0LAorICAgICAgICBpbnQmbmJzcDtsZW4pPC9DT0RFPgorCisgICAgICAgIDxCUj4KKyAgICAgICAgJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGVzdHMgaWYgdHdvIHN0cmluZyByZWdpb25zIGFyZSBlcXVhbC48L1REPgorPC9UUj4KKzxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgorICAgIDxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KKyAgICAgICAgPENPREU+Jm5ic3A7PEEgSFJFRj0iLi4vLi4vamF2YS9sYW5nL1N0cmluZy5odG1sIiB0aXRsZT0iY2xhc3MgaW4gamF2YS5sYW5nIj5TdHJpbmc8L0E+PC9DT0RFPjwvRk9OVD48L1REPgorICAgIDxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi9qYXZhL2xhbmcvU3RyaW5nLmh0bWwjcmVwbGFjZShjaGFyLCBjaGFyKSI+cmVwbGFjZTwvQT48L0I+KGNoYXImbmJzcDtvbGRDaGFyLAorICAgICAgICBjaGFyJm5ic3A7bmV3Q2hhcik8L0NPREU+CisKKyAgICAgICAgPEJSPgorICAgICAgICAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm5zIGEgbmV3IHN0cmluZyByZXN1bHRpbmcgZnJvbSByZXBsYWNpbmcgYWxsIG9jY3VycmVuY2VzIG9mCisgICAgICAgIDxjb2RlPm9sZENoYXI8L2NvZGU+IGluIHRoaXMgc3RyaW5nIHdpdGggPGNvZGU+bmV3Q2hhcjwvY29kZT4uPC9URD4KKzwvVFI+Cis8VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KKyAgICA8VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+CisgICAgICAgIDxDT0RFPiZuYnNwOzxBIEhSRUY9Ii4uLy4uL2phdmEvbGFuZy9TdHJpbmcuaHRtbCIgdGl0bGU9ImNsYXNzIGluIGphdmEubGFuZyI+U3RyaW5nPC9BPjwvQ09ERT48L0ZPTlQ+PC9URD4KKyAgICA8VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vamF2YS9sYW5nL1N0cmluZy5odG1sI3JlcGxhY2UoamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSwgamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSkiPnJlcGxhY2U8L0E+PC9CPig8QSBIUkVGPSIuLi8uLi9qYXZhL2xhbmcvQ2hhclNlcXVlbmNlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gamF2YS5sYW5nIj5DaGFyU2VxdWVuY2U8L0E+Jm5ic3A7dGFyZ2V0LAorICAgICAgICA8QSBIUkVGPSIuLi8uLi9qYXZhL2xhbmcvQ2hhclNlcXVlbmNlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gamF2YS5sYW5nIj5DaGFyU2VxdWVuY2U8L0E+Jm5ic3A7cmVwbGFjZW1lbnQpPC9DT0RFPgorCisgICAgICAgIDxCUj4KKyAgICAgICAgJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmVwbGFjZXMgZWFjaCBzdWJzdHJpbmcgb2YgdGhpcyBzdHJpbmcgdGhhdCBtYXRjaGVzIHRoZSBsaXRlcmFsIHRhcmdldAorICAgICAgICBzZXF1ZW5jZSB3aXRoIHRoZSBzcGVjaWZpZWQgbGl0ZXJhbCByZXBsYWNlbWVudCBzZXF1ZW5jZS48L1REPgorPC9UUj4KKzxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgorICAgIDxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KKyAgICAgICAgPENPREU+Jm5ic3A7PEEgSFJFRj0iLi4vLi4vamF2YS9sYW5nL1N0cmluZy5odG1sIiB0aXRsZT0iY2xhc3MgaW4gamF2YS5sYW5nIj5TdHJpbmc8L0E+PC9DT0RFPjwvRk9OVD48L1REPgorICAgIDxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi9qYXZhL2xhbmcvU3RyaW5nLmh0bWwjcmVwbGFjZUFsbChqYXZhLmxhbmcuU3RyaW5nLCBqYXZhLmxhbmcuU3RyaW5nKSI+cmVwbGFjZUFsbDwvQT48L0I+KDxBIEhSRUY9Ii4uLy4uL2phdmEvbGFuZy9TdHJpbmcuaHRtbCIgdGl0bGU9ImNsYXNzIGluIGphdmEubGFuZyI+U3RyaW5nPC9BPiZuYnNwO3JlZ2V4LAorICAgICAgICA8QSBIUkVGPSIuLi8uLi9qYXZhL2xhbmcvU3RyaW5nLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBqYXZhLmxhbmciPlN0cmluZzwvQT4mbmJzcDtyZXBsYWNlbWVudCk8L0NPREU+CisKKyAgICAgICAgPEJSPgorICAgICAgICAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXBsYWNlcyBlYWNoIHN1YnN0cmluZyBvZiB0aGlzIHN0cmluZyB0aGF0IG1hdGNoZXMgdGhlIGdpdmVuIDxhCisgICAgICAgICAgICAgICAgaHJlZj0iLi4vdXRpbC9yZWdleC9QYXR0ZXJuLmh0bWwjc3VtIj5yZWd1bGFyIGV4cHJlc3Npb248L2E+IHdpdGggdGhlCisgICAgICAgIGdpdmVuIHJlcGxhY2VtZW50LjwvVEQ+Cis8L1RSPgorPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+CisgICAgPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgorICAgICAgICA8Q09ERT4mbmJzcDs8QSBIUkVGPSIuLi8uLi9qYXZhL2xhbmcvU3RyaW5nLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBqYXZhLmxhbmciPlN0cmluZzwvQT48L0NPREU+PC9GT05UPjwvVEQ+CisgICAgPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uL2phdmEvbGFuZy9TdHJpbmcuaHRtbCNyZXBsYWNlRmlyc3QoamF2YS5sYW5nLlN0cmluZywgamF2YS5sYW5nLlN0cmluZykiPnJlcGxhY2VGaXJzdDwvQT48L0I+KDxBIEhSRUY9Ii4uLy4uL2phdmEvbGFuZy9TdHJpbmcuaHRtbCIgdGl0bGU9ImNsYXNzIGluIGphdmEubGFuZyI+U3RyaW5nPC9BPiZuYnNwO3JlZ2V4LAorICAgICAgICA8QSBIUkVGPSIuLi8uLi9qYXZhL2xhbmcvU3RyaW5nLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBqYXZhLmxhbmciPlN0cmluZzwvQT4mbmJzcDtyZXBsYWNlbWVudCk8L0NPREU+CisKKyAgICAgICAgPEJSPgorICAgICAgICAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXBsYWNlcyB0aGUgZmlyc3Qgc3Vic3RyaW5nIG9mIHRoaXMgc3RyaW5nIHRoYXQgbWF0Y2hlcyB0aGUgZ2l2ZW4gPGEKKyAgICAgICAgICAgICAgICBocmVmPSIuLi91dGlsL3JlZ2V4L1BhdHRlcm4uaHRtbCNzdW0iPnJlZ3VsYXIgZXhwcmVzc2lvbjwvYT4gd2l0aCB0aGUKKyAgICAgICAgZ2l2ZW4gcmVwbGFjZW1lbnQuPC9URD4KKzwvVFI+Cis8VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KKyAgICA8VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+CisgICAgICAgIDxDT0RFPiZuYnNwOzxBIEhSRUY9Ii4uLy4uL2phdmEvbGFuZy9TdHJpbmcuaHRtbCIgdGl0bGU9ImNsYXNzIGluIGphdmEubGFuZyI+U3RyaW5nPC9BPltdPC9DT0RFPjwvRk9OVD48L1REPgorICAgIDxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi9qYXZhL2xhbmcvU3RyaW5nLmh0bWwjc3BsaXQoamF2YS5sYW5nLlN0cmluZykiPnNwbGl0PC9BPjwvQj4oPEEgSFJFRj0iLi4vLi4vamF2YS9sYW5nL1N0cmluZy5odG1sIiB0aXRsZT0iY2xhc3MgaW4gamF2YS5sYW5nIj5TdHJpbmc8L0E+Jm5ic3A7cmVnZXgpPC9DT0RFPgorCisgICAgICAgIDxCUj4KKyAgICAgICAgJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7U3BsaXRzIHRoaXMgc3RyaW5nIGFyb3VuZCBtYXRjaGVzIG9mIHRoZSBnaXZlbiA8YQorICAgICAgICAgICAgICAgIGhyZWY9Ii4uL3V0aWwvcmVnZXgvUGF0dGVybi5odG1sI3N1bSI+cmVndWxhciBleHByZXNzaW9uPC9hPi48L1REPgorPC9UUj4KKzxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgorICAgIDxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KKyAgICAgICAgPENPREU+Jm5ic3A7PEEgSFJFRj0iLi4vLi4vamF2YS9sYW5nL1N0cmluZy5odG1sIiB0aXRsZT0iY2xhc3MgaW4gamF2YS5sYW5nIj5TdHJpbmc8L0E+W108L0NPREU+PC9GT05UPjwvVEQ+CisgICAgPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uL2phdmEvbGFuZy9TdHJpbmcuaHRtbCNzcGxpdChqYXZhLmxhbmcuU3RyaW5nLCBpbnQpIj5zcGxpdDwvQT48L0I+KDxBIEhSRUY9Ii4uLy4uL2phdmEvbGFuZy9TdHJpbmcuaHRtbCIgdGl0bGU9ImNsYXNzIGluIGphdmEubGFuZyI+U3RyaW5nPC9BPiZuYnNwO3JlZ2V4LAorICAgICAgICBpbnQmbmJzcDtsaW1pdCk8L0NPREU+CisKKyAgICAgICAgPEJSPgorICAgICAgICAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtTcGxpdHMgdGhpcyBzdHJpbmcgYXJvdW5kIG1hdGNoZXMgb2YgdGhlIGdpdmVuCisgICAgICAgIDxhIGhyZWY9Ii4uL3V0aWwvcmVnZXgvUGF0dGVybi5odG1sI3N1bSI+cmVndWxhciBleHByZXNzaW9uPC9hPi48L1REPgorPC9UUj4KKzxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgorICAgIDxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KKyAgICAgICAgPENPREU+Jm5ic3A7Ym9vbGVhbjwvQ09ERT48L0ZPTlQ+PC9URD4KKyAgICA8VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vamF2YS9sYW5nL1N0cmluZy5odG1sI3N0YXJ0c1dpdGgoamF2YS5sYW5nLlN0cmluZykiPnN0YXJ0c1dpdGg8L0E+PC9CPig8QSBIUkVGPSIuLi8uLi9qYXZhL2xhbmcvU3RyaW5nLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBqYXZhLmxhbmciPlN0cmluZzwvQT4mbmJzcDtwcmVmaXgpPC9DT0RFPgorCisgICAgICAgIDxCUj4KKyAgICAgICAgJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGVzdHMgaWYgdGhpcyBzdHJpbmcgc3RhcnRzIHdpdGggdGhlIHNwZWNpZmllZCBwcmVmaXguPC9URD4KKzwvVFI+Cis8VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KKyAgICA8VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+CisgICAgICAgIDxDT0RFPiZuYnNwO2Jvb2xlYW48L0NPREU+PC9GT05UPjwvVEQ+CisgICAgPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uL2phdmEvbGFuZy9TdHJpbmcuaHRtbCNzdGFydHNXaXRoKGphdmEubGFuZy5TdHJpbmcsIGludCkiPnN0YXJ0c1dpdGg8L0E+PC9CPig8QSBIUkVGPSIuLi8uLi9qYXZhL2xhbmcvU3RyaW5nLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBqYXZhLmxhbmciPlN0cmluZzwvQT4mbmJzcDtwcmVmaXgsCisgICAgICAgIGludCZuYnNwO3RvZmZzZXQpPC9DT0RFPgorCisgICAgICAgIDxCUj4KKyAgICAgICAgJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGVzdHMgaWYgdGhlIHN1YnN0cmluZyBvZiB0aGlzIHN0cmluZyBiZWdpbm5pbmcgYXQgdGhlCisgICAgICAgIHNwZWNpZmllZCBpbmRleCBzdGFydHMgd2l0aCB0aGUgc3BlY2lmaWVkIHByZWZpeC48L1REPgorPC9UUj4KKzxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgorICAgIDxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KKyAgICAgICAgPENPREU+Jm5ic3A7PEEgSFJFRj0iLi4vLi4vamF2YS9sYW5nL0NoYXJTZXF1ZW5jZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIGphdmEubGFuZyI+Q2hhclNlcXVlbmNlPC9BPjwvQ09ERT48L0ZPTlQ+PC9URD4KKyAgICA8VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vamF2YS9sYW5nL1N0cmluZy5odG1sI3N1YlNlcXVlbmNlKGludCwgaW50KSI+c3ViU2VxdWVuY2U8L0E+PC9CPihpbnQmbmJzcDtiZWdpbkluZGV4LAorICAgICAgICBpbnQmbmJzcDtlbmRJbmRleCk8L0NPREU+CisKKyAgICAgICAgPEJSPgorICAgICAgICAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm5zIGEgbmV3IGNoYXJhY3RlciBzZXF1ZW5jZSB0aGF0IGlzIGEgc3Vic2VxdWVuY2Ugb2YgdGhpcyBzZXF1ZW5jZS48L1REPgorPC9UUj4KKzxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgorICAgIDxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KKyAgICAgICAgPENPREU+Jm5ic3A7PEEgSFJFRj0iLi4vLi4vamF2YS9sYW5nL1N0cmluZy5odG1sIiB0aXRsZT0iY2xhc3MgaW4gamF2YS5sYW5nIj5TdHJpbmc8L0E+PC9DT0RFPjwvRk9OVD48L1REPgorICAgIDxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi9qYXZhL2xhbmcvU3RyaW5nLmh0bWwjc3Vic3RyaW5nKGludCkiPnN1YnN0cmluZzwvQT48L0I+KGludCZuYnNwO2JlZ2luSW5kZXgpPC9DT0RFPgorCisgICAgICAgIDxCUj4KKyAgICAgICAgJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJucyBhIG5ldyBzdHJpbmcgdGhhdCBpcyBhIHN1YnN0cmluZyBvZiB0aGlzIHN0cmluZy48L1REPgorPC9UUj4KKzxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgorICAgIDxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KKyAgICAgICAgPENPREU+Jm5ic3A7PEEgSFJFRj0iLi4vLi4vamF2YS9sYW5nL1N0cmluZy5odG1sIiB0aXRsZT0iY2xhc3MgaW4gamF2YS5sYW5nIj5TdHJpbmc8L0E+PC9DT0RFPjwvRk9OVD48L1REPgorICAgIDxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi9qYXZhL2xhbmcvU3RyaW5nLmh0bWwjc3Vic3RyaW5nKGludCwgaW50KSI+c3Vic3RyaW5nPC9BPjwvQj4oaW50Jm5ic3A7YmVnaW5JbmRleCwKKyAgICAgICAgaW50Jm5ic3A7ZW5kSW5kZXgpPC9DT0RFPgorCisgICAgICAgIDxCUj4KKyAgICAgICAgJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJucyBhIG5ldyBzdHJpbmcgdGhhdCBpcyBhIHN1YnN0cmluZyBvZiB0aGlzIHN0cmluZy48L1REPgorPC9UUj4KKzxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgorICAgIDxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KKyAgICAgICAgPENPREU+Jm5ic3A7Y2hhcltdPC9DT0RFPjwvRk9OVD48L1REPgorICAgIDxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi9qYXZhL2xhbmcvU3RyaW5nLmh0bWwjdG9DaGFyQXJyYXkoKSI+dG9DaGFyQXJyYXk8L0E+PC9CPigpPC9DT0RFPgorCisgICAgICAgIDxCUj4KKyAgICAgICAgJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Q29udmVydHMgdGhpcyBzdHJpbmcgdG8gYSBuZXcgY2hhcmFjdGVyIGFycmF5LjwvVEQ+Cis8L1RSPgorPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+CisgICAgPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgorICAgICAgICA8Q09ERT4mbmJzcDs8QSBIUkVGPSIuLi8uLi9qYXZhL2xhbmcvU3RyaW5nLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBqYXZhLmxhbmciPlN0cmluZzwvQT48L0NPREU+PC9GT05UPjwvVEQ+CisgICAgPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uL2phdmEvbGFuZy9TdHJpbmcuaHRtbCN0b0xvd2VyQ2FzZSgpIj50b0xvd2VyQ2FzZTwvQT48L0I+KCk8L0NPREU+CisKKyAgICAgICAgPEJSPgorICAgICAgICAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtDb252ZXJ0cyBhbGwgb2YgdGhlIGNoYXJhY3RlcnMgaW4gdGhpcyA8Y29kZT5TdHJpbmc8L2NvZGU+IHRvIGxvd2VyCisgICAgICAgIGNhc2UgdXNpbmcgdGhlIHJ1bGVzIG9mIHRoZSBkZWZhdWx0IGxvY2FsZS48L1REPgorPC9UUj4KKzxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgorICAgIDxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KKyAgICAgICAgPENPREU+Jm5ic3A7PEEgSFJFRj0iLi4vLi4vamF2YS9sYW5nL1N0cmluZy5odG1sIiB0aXRsZT0iY2xhc3MgaW4gamF2YS5sYW5nIj5TdHJpbmc8L0E+PC9DT0RFPjwvRk9OVD48L1REPgorICAgIDxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi9qYXZhL2xhbmcvU3RyaW5nLmh0bWwjdG9Mb3dlckNhc2UoamF2YS51dGlsLkxvY2FsZSkiPnRvTG93ZXJDYXNlPC9BPjwvQj4oPEEgSFJFRj0iLi4vLi4vamF2YS91dGlsL0xvY2FsZS5odG1sIiB0aXRsZT0iY2xhc3MgaW4gamF2YS51dGlsIj5Mb2NhbGU8L0E+Jm5ic3A7bG9jYWxlKTwvQ09ERT4KKworICAgICAgICA8QlI+CisgICAgICAgICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO0NvbnZlcnRzIGFsbCBvZiB0aGUgY2hhcmFjdGVycyBpbiB0aGlzIDxjb2RlPlN0cmluZzwvY29kZT4gdG8gbG93ZXIKKyAgICAgICAgY2FzZSB1c2luZyB0aGUgcnVsZXMgb2YgdGhlIGdpdmVuIDxjb2RlPkxvY2FsZTwvY29kZT4uPC9URD4KKzwvVFI+Cis8VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KKyAgICA8VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+CisgICAgICAgIDxDT0RFPiZuYnNwOzxBIEhSRUY9Ii4uLy4uL2phdmEvbGFuZy9TdHJpbmcuaHRtbCIgdGl0bGU9ImNsYXNzIGluIGphdmEubGFuZyI+U3RyaW5nPC9BPjwvQ09ERT48L0ZPTlQ+PC9URD4KKyAgICA8VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vamF2YS9sYW5nL1N0cmluZy5odG1sI3RvU3RyaW5nKCkiPnRvU3RyaW5nPC9BPjwvQj4oKTwvQ09ERT4KKworICAgICAgICA8QlI+CisgICAgICAgICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoaXMgb2JqZWN0ICh3aGljaCBpcyBhbHJlYWR5IGEgc3RyaW5nISkgaXMgaXRzZWxmIHJldHVybmVkLjwvVEQ+Cis8L1RSPgorPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+CisgICAgPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgorICAgICAgICA8Q09ERT4mbmJzcDs8QSBIUkVGPSIuLi8uLi9qYXZhL2xhbmcvU3RyaW5nLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBqYXZhLmxhbmciPlN0cmluZzwvQT48L0NPREU+PC9GT05UPjwvVEQ+CisgICAgPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uL2phdmEvbGFuZy9TdHJpbmcuaHRtbCN0b1VwcGVyQ2FzZSgpIj50b1VwcGVyQ2FzZTwvQT48L0I+KCk8L0NPREU+CisKKyAgICAgICAgPEJSPgorICAgICAgICAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtDb252ZXJ0cyBhbGwgb2YgdGhlIGNoYXJhY3RlcnMgaW4gdGhpcyA8Y29kZT5TdHJpbmc8L2NvZGU+IHRvIHVwcGVyCisgICAgICAgIGNhc2UgdXNpbmcgdGhlIHJ1bGVzIG9mIHRoZSBkZWZhdWx0IGxvY2FsZS48L1REPgorPC9UUj4KKzxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgorICAgIDxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KKyAgICAgICAgPENPREU+Jm5ic3A7PEEgSFJFRj0iLi4vLi4vamF2YS9sYW5nL1N0cmluZy5odG1sIiB0aXRsZT0iY2xhc3MgaW4gamF2YS5sYW5nIj5TdHJpbmc8L0E+PC9DT0RFPjwvRk9OVD48L1REPgorICAgIDxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi9qYXZhL2xhbmcvU3RyaW5nLmh0bWwjdG9VcHBlckNhc2UoamF2YS51dGlsLkxvY2FsZSkiPnRvVXBwZXJDYXNlPC9BPjwvQj4oPEEgSFJFRj0iLi4vLi4vamF2YS91dGlsL0xvY2FsZS5odG1sIiB0aXRsZT0iY2xhc3MgaW4gamF2YS51dGlsIj5Mb2NhbGU8L0E+Jm5ic3A7bG9jYWxlKTwvQ09ERT4KKworICAgICAgICA8QlI+CisgICAgICAgICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO0NvbnZlcnRzIGFsbCBvZiB0aGUgY2hhcmFjdGVycyBpbiB0aGlzIDxjb2RlPlN0cmluZzwvY29kZT4gdG8gdXBwZXIKKyAgICAgICAgY2FzZSB1c2luZyB0aGUgcnVsZXMgb2YgdGhlIGdpdmVuIDxjb2RlPkxvY2FsZTwvY29kZT4uPC9URD4KKzwvVFI+Cis8VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KKyAgICA8VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+CisgICAgICAgIDxDT0RFPiZuYnNwOzxBIEhSRUY9Ii4uLy4uL2phdmEvbGFuZy9TdHJpbmcuaHRtbCIgdGl0bGU9ImNsYXNzIGluIGphdmEubGFuZyI+U3RyaW5nPC9BPjwvQ09ERT48L0ZPTlQ+PC9URD4KKyAgICA8VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vamF2YS9sYW5nL1N0cmluZy5odG1sI3RyaW0oKSI+dHJpbTwvQT48L0I+KCk8L0NPREU+CisKKyAgICAgICAgPEJSPgorICAgICAgICAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm5zIGEgY29weSBvZiB0aGUgc3RyaW5nLCB3aXRoIGxlYWRpbmcgYW5kIHRyYWlsaW5nIHdoaXRlc3BhY2UKKyAgICAgICAgb21pdHRlZC48L1REPgorPC9UUj4KKzxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgorICAgIDxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KKyAgICAgICAgPENPREU+c3RhdGljJm5ic3A7PEEgSFJFRj0iLi4vLi4vamF2YS9sYW5nL1N0cmluZy5odG1sIiB0aXRsZT0iY2xhc3MgaW4gamF2YS5sYW5nIj5TdHJpbmc8L0E+PC9DT0RFPjwvRk9OVD48L1REPgorICAgIDxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi9qYXZhL2xhbmcvU3RyaW5nLmh0bWwjdmFsdWVPZihib29sZWFuKSI+dmFsdWVPZjwvQT48L0I+KGJvb2xlYW4mbmJzcDtiKTwvQ09ERT4KKworICAgICAgICA8QlI+CisgICAgICAgICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybnMgdGhlIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGUgPGNvZGU+Ym9vbGVhbjwvY29kZT4gYXJndW1lbnQuPC9URD4KKzwvVFI+Cis8VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KKyAgICA8VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+CisgICAgICAgIDxDT0RFPnN0YXRpYyZuYnNwOzxBIEhSRUY9Ii4uLy4uL2phdmEvbGFuZy9TdHJpbmcuaHRtbCIgdGl0bGU9ImNsYXNzIGluIGphdmEubGFuZyI+U3RyaW5nPC9BPjwvQ09ERT48L0ZPTlQ+PC9URD4KKyAgICA8VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vamF2YS9sYW5nL1N0cmluZy5odG1sI3ZhbHVlT2YoY2hhcikiPnZhbHVlT2Y8L0E+PC9CPihjaGFyJm5ic3A7Yyk8L0NPREU+CisKKyAgICAgICAgPEJSPgorICAgICAgICAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm5zIHRoZSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhlIDxjb2RlPmNoYXI8L2NvZGU+CisgICAgICAgIGFyZ3VtZW50LjwvVEQ+Cis8L1RSPgorPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+CisgICAgPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgorICAgICAgICA8Q09ERT5zdGF0aWMmbmJzcDs8QSBIUkVGPSIuLi8uLi9qYXZhL2xhbmcvU3RyaW5nLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBqYXZhLmxhbmciPlN0cmluZzwvQT48L0NPREU+PC9GT05UPjwvVEQ+CisgICAgPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uL2phdmEvbGFuZy9TdHJpbmcuaHRtbCN2YWx1ZU9mKGNoYXJbXSkiPnZhbHVlT2Y8L0E+PC9CPihjaGFyW10mbmJzcDtkYXRhKTwvQ09ERT4KKworICAgICAgICA8QlI+CisgICAgICAgICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybnMgdGhlIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGUgPGNvZGU+Y2hhcjwvY29kZT4gYXJyYXkKKyAgICAgICAgYXJndW1lbnQuPC9URD4KKzwvVFI+Cis8VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KKyAgICA8VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+CisgICAgICAgIDxDT0RFPnN0YXRpYyZuYnNwOzxBIEhSRUY9Ii4uLy4uL2phdmEvbGFuZy9TdHJpbmcuaHRtbCIgdGl0bGU9ImNsYXNzIGluIGphdmEubGFuZyI+U3RyaW5nPC9BPjwvQ09ERT48L0ZPTlQ+PC9URD4KKyAgICA8VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vamF2YS9sYW5nL1N0cmluZy5odG1sI3ZhbHVlT2YoY2hhcltdLCBpbnQsIGludCkiPnZhbHVlT2Y8L0E+PC9CPihjaGFyW10mbmJzcDtkYXRhLAorICAgICAgICBpbnQmbmJzcDtvZmZzZXQsCisgICAgICAgIGludCZuYnNwO2NvdW50KTwvQ09ERT4KKworICAgICAgICA8QlI+CisgICAgICAgICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybnMgdGhlIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBhIHNwZWNpZmljIHN1YmFycmF5IG9mIHRoZQorICAgICAgICA8Y29kZT5jaGFyPC9jb2RlPiBhcnJheSBhcmd1bWVudC48L1REPgorPC9UUj4KKzxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgorICAgIDxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KKyAgICAgICAgPENPREU+c3RhdGljJm5ic3A7PEEgSFJFRj0iLi4vLi4vamF2YS9sYW5nL1N0cmluZy5odG1sIiB0aXRsZT0iY2xhc3MgaW4gamF2YS5sYW5nIj5TdHJpbmc8L0E+PC9DT0RFPjwvRk9OVD48L1REPgorICAgIDxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi9qYXZhL2xhbmcvU3RyaW5nLmh0bWwjdmFsdWVPZihkb3VibGUpIj52YWx1ZU9mPC9BPjwvQj4oZG91YmxlJm5ic3A7ZCk8L0NPREU+CisKKyAgICAgICAgPEJSPgorICAgICAgICAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm5zIHRoZSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhlIDxjb2RlPmRvdWJsZTwvY29kZT4gYXJndW1lbnQuPC9URD4KKzwvVFI+Cis8VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KKyAgICA8VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+CisgICAgICAgIDxDT0RFPnN0YXRpYyZuYnNwOzxBIEhSRUY9Ii4uLy4uL2phdmEvbGFuZy9TdHJpbmcuaHRtbCIgdGl0bGU9ImNsYXNzIGluIGphdmEubGFuZyI+U3RyaW5nPC9BPjwvQ09ERT48L0ZPTlQ+PC9URD4KKyAgICA8VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vamF2YS9sYW5nL1N0cmluZy5odG1sI3ZhbHVlT2YoZmxvYXQpIj52YWx1ZU9mPC9BPjwvQj4oZmxvYXQmbmJzcDtmKTwvQ09ERT4KKworICAgICAgICA8QlI+CisgICAgICAgICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybnMgdGhlIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGUgPGNvZGU+ZmxvYXQ8L2NvZGU+IGFyZ3VtZW50LjwvVEQ+Cis8L1RSPgorPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+CisgICAgPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgorICAgICAgICA8Q09ERT5zdGF0aWMmbmJzcDs8QSBIUkVGPSIuLi8uLi9qYXZhL2xhbmcvU3RyaW5nLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBqYXZhLmxhbmciPlN0cmluZzwvQT48L0NPREU+PC9GT05UPjwvVEQ+CisgICAgPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uL2phdmEvbGFuZy9TdHJpbmcuaHRtbCN2YWx1ZU9mKGludCkiPnZhbHVlT2Y8L0E+PC9CPihpbnQmbmJzcDtpKTwvQ09ERT4KKworICAgICAgICA8QlI+CisgICAgICAgICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybnMgdGhlIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGUgPGNvZGU+aW50PC9jb2RlPiBhcmd1bWVudC48L1REPgorPC9UUj4KKzxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgorICAgIDxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KKyAgICAgICAgPENPREU+c3RhdGljJm5ic3A7PEEgSFJFRj0iLi4vLi4vamF2YS9sYW5nL1N0cmluZy5odG1sIiB0aXRsZT0iY2xhc3MgaW4gamF2YS5sYW5nIj5TdHJpbmc8L0E+PC9DT0RFPjwvRk9OVD48L1REPgorICAgIDxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi9qYXZhL2xhbmcvU3RyaW5nLmh0bWwjdmFsdWVPZihsb25nKSI+dmFsdWVPZjwvQT48L0I+KGxvbmcmbmJzcDtsKTwvQ09ERT4KKworICAgICAgICA8QlI+CisgICAgICAgICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybnMgdGhlIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGUgPGNvZGU+bG9uZzwvY29kZT4gYXJndW1lbnQuPC9URD4KKzwvVFI+Cis8VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KKyAgICA8VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+CisgICAgICAgIDxDT0RFPnN0YXRpYyZuYnNwOzxBIEhSRUY9Ii4uLy4uL2phdmEvbGFuZy9TdHJpbmcuaHRtbCIgdGl0bGU9ImNsYXNzIGluIGphdmEubGFuZyI+U3RyaW5nPC9BPjwvQ09ERT48L0ZPTlQ+PC9URD4KKyAgICA8VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vamF2YS9sYW5nL1N0cmluZy5odG1sI3ZhbHVlT2YoamF2YS5sYW5nLk9iamVjdCkiPnZhbHVlT2Y8L0E+PC9CPig8QSBIUkVGPSIuLi8uLi9qYXZhL2xhbmcvT2JqZWN0Lmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBqYXZhLmxhbmciPk9iamVjdDwvQT4mbmJzcDtvYmopPC9DT0RFPgorCisgICAgICAgIDxCUj4KKyAgICAgICAgJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJucyB0aGUgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSA8Y29kZT5PYmplY3Q8L2NvZGU+IGFyZ3VtZW50LjwvVEQ+Cis8L1RSPgorPC9UQUJMRT4KKyZuYnNwOzxBIE5BTUU9Im1ldGhvZHNfaW5oZXJpdGVkX2Zyb21fY2xhc3NfamF2YS5sYW5nLk9iamVjdCI+PCEtLSAtLT48L0E+Cis8VEFCTEUgQk9SREVSPSIxIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBTVU1NQVJZPSIiPgorICAgIDxUUiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iVGFibGVTdWJIZWFkaW5nQ29sb3IiPgorICAgICAgICA8VEggQUxJR049ImxlZnQiPjxCPk1ldGhvZHMgaW5oZXJpdGVkIGZyb20gY2xhc3MgamF2YS5sYW5nLjxBIEhSRUY9Ii4uLy4uL2phdmEvbGFuZy9PYmplY3QuaHRtbCIgdGl0bGU9ImNsYXNzIGluIGphdmEubGFuZyI+T2JqZWN0PC9BPjwvQj48L1RIPgorICAgIDwvVFI+CisgICAgPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+CisgICAgICAgIDxURD48Q09ERT48QSBIUkVGPSIuLi8uLi9qYXZhL2xhbmcvT2JqZWN0Lmh0bWwjY2xvbmUoKSI+Y2xvbmU8L0E+LCA8QSBIUkVGPSIuLi8uLi9qYXZhL2xhbmcvT2JqZWN0Lmh0bWwjZmluYWxpemUoKSI+ZmluYWxpemU8L0E+LCA8QSBIUkVGPSIuLi8uLi9qYXZhL2xhbmcvT2JqZWN0Lmh0bWwjZ2V0Q2xhc3MoKSI+Z2V0Q2xhc3M8L0E+LCA8QSBIUkVGPSIuLi8uLi9qYXZhL2xhbmcvT2JqZWN0Lmh0bWwjbm90aWZ5KCkiPm5vdGlmeTwvQT4sIDxBIEhSRUY9Ii4uLy4uL2phdmEvbGFuZy9PYmplY3QuaHRtbCNub3RpZnlBbGwoKSI+bm90aWZ5QWxsPC9BPiwgPEEgSFJFRj0iLi4vLi4vamF2YS9sYW5nL09iamVjdC5odG1sI3dhaXQoKSI+d2FpdDwvQT4sIDxBIEhSRUY9Ii4uLy4uL2phdmEvbGFuZy9PYmplY3QuaHRtbCN3YWl0KGxvbmcpIj53YWl0PC9BPiwgPEEgSFJFRj0iLi4vLi4vamF2YS9sYW5nL09iamVjdC5odG1sI3dhaXQobG9uZywgaW50KSI+d2FpdDwvQT48L0NPREU+PC9URD4KKyAgICA8L1RSPgorPC9UQUJMRT4KKyZuYnNwOworPFA+CisKKyAgICA8IS0tID09PT09PT09PT09PSBGSUVMRCBERVRBSUwgPT09PT09PT09PT0gLS0+CisKKyAgICA8QSBOQU1FPSJmaWVsZF9kZXRhaWwiPjwhLS0gLS0+PC9BPgorPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KKyAgICA8VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlSGVhZGluZ0NvbG9yIj4KKyAgICAgICAgPFRIIEFMSUdOPSJsZWZ0IiBDT0xTUEFOPSIxIj48Rk9OVCBTSVpFPSIrMiI+CisgICAgICAgICAgICA8Qj5GaWVsZCBEZXRhaWw8L0I+PC9GT05UPjwvVEg+CisgICAgPC9UUj4KKzwvVEFCTEU+CisKKzxBIE5BTUU9IkNBU0VfSU5TRU5TSVRJVkVfT1JERVIiPjwhLS0gLS0+PC9BPjxIMz4KKyAgICBDQVNFX0lOU0VOU0lUSVZFX09SREVSPC9IMz4KKzxQUkU+CitwdWJsaWMgc3RhdGljIGZpbmFsIDxBIEhSRUY9Ii4uLy4uL2phdmEvdXRpbC9Db21wYXJhdG9yLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gamF2YS51dGlsIj5Db21wYXJhdG9yPC9BPiZsdDs8QSBIUkVGPSIuLi8uLi9qYXZhL2xhbmcvU3RyaW5nLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBqYXZhLmxhbmciPlN0cmluZzwvQT4mZ3Q7IDxCPkNBU0VfSU5TRU5TSVRJVkVfT1JERVI8L0I+PC9QUkU+Cis8REw+CisgICAgPEREPkEgQ29tcGFyYXRvciB0aGF0IG9yZGVycyA8Y29kZT5TdHJpbmc8L2NvZGU+IG9iamVjdHMgYXMgYnkKKyAgICAgICAgPGNvZGU+Y29tcGFyZVRvSWdub3JlQ2FzZTwvY29kZT4uIFRoaXMgY29tcGFyYXRvciBpcyBzZXJpYWxpemFibGUuCisgICAgICAgIDxwPgorICAgICAgICAgICAgTm90ZSB0aGF0IHRoaXMgQ29tcGFyYXRvciBkb2VzIDxlbT5ub3Q8L2VtPiB0YWtlIGxvY2FsZSBpbnRvIGFjY291bnQsCisgICAgICAgICAgICBhbmQgd2lsbCByZXN1bHQgaW4gYW4gdW5zYXRpc2ZhY3Rvcnkgb3JkZXJpbmcgZm9yIGNlcnRhaW4gbG9jYWxlcy4KKyAgICAgICAgICAgIFRoZSBqYXZhLnRleHQgcGFja2FnZSBwcm92aWRlcyA8ZW0+Q29sbGF0b3JzPC9lbT4gdG8gYWxsb3cKKyAgICAgICAgICAgIGxvY2FsZS1zZW5zaXRpdmUgb3JkZXJpbmcuCisgICAgICAgIDxQPgorICAgICAgICA8REw+CisgICAgICAgICAgICA8RFQ+PEI+U2luY2U6PC9CPjwvRFQ+CisgICAgICAgICAgICA8REQ+MS4yPC9ERD4KKyAgICAgICAgICAgIDxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uL2phdmEvdGV4dC9Db2xsYXRvci5odG1sI2NvbXBhcmUoamF2YS5sYW5nLlN0cmluZywgamF2YS5sYW5nLlN0cmluZykiPjxDT0RFPkNvbGxhdG9yLmNvbXBhcmUoU3RyaW5nLCBTdHJpbmcpPC9DT0RFPjwvQT48L0RMPgorPC9ETD4KKworPCEtLSA9PT09PT09PT0gQ09OU1RSVUNUT1IgREVUQUlMID09PT09PT09IC0tPgorCis8QSBOQU1FPSJjb25zdHJ1Y3Rvcl9kZXRhaWwiPjwhLS0gLS0+PC9BPgorPFRBQkxFIEJPUkRFUj0iMSIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgU1VNTUFSWT0iIj4KKyAgICA8VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlSGVhZGluZ0NvbG9yIj4KKyAgICAgICAgPFRIIEFMSUdOPSJsZWZ0IiBDT0xTUEFOPSIxIj48Rk9OVCBTSVpFPSIrMiI+CisgICAgICAgICAgICA8Qj5Db25zdHJ1Y3RvciBEZXRhaWw8L0I+PC9GT05UPjwvVEg+CisgICAgPC9UUj4KKzwvVEFCTEU+CisKKzxBIE5BTUU9IlN0cmluZygpIj48IS0tIC0tPjwvQT48SDM+CisgICAgU3RyaW5nPC9IMz4KKzxQUkU+CitwdWJsaWMgPEI+U3RyaW5nPC9CPigpPC9QUkU+Cis8REw+CisgICAgPEREPkluaXRpYWxpemVzIGEgbmV3bHkgY3JlYXRlZCA8Y29kZT5TdHJpbmc8L2NvZGU+IG9iamVjdCBzbyB0aGF0IGl0IHJlcHJlc2VudHMKKyAgICAgICAgYW4gZW1wdHkgY2hhcmFjdGVyIHNlcXVlbmNlLiAgTm90ZSB0aGF0IHVzZSBvZiB0aGlzIGNvbnN0cnVjdG9yIGlzCisgICAgICAgIHVubmVjZXNzYXJ5IHNpbmNlIFN0cmluZ3MgYXJlIGltbXV0YWJsZS4KKyAgICAgICAgPFA+Cis8L0RMPgorPEhSPgorCis8QSBOQU1FPSJTdHJpbmcoamF2YS5sYW5nLlN0cmluZykiPjwhLS0gLS0+PC9BPjxIMz4KKyAgICBTdHJpbmc8L0gzPgorPFBSRT4KK3B1YmxpYyA8Qj5TdHJpbmc8L0I+KDxBIEhSRUY9Ii4uLy4uL2phdmEvbGFuZy9TdHJpbmcuaHRtbCIgdGl0bGU9ImNsYXNzIGluIGphdmEubGFuZyI+U3RyaW5nPC9BPiZuYnNwO29yaWdpbmFsKTwvUFJFPgorPERMPgorICAgIDxERD5Jbml0aWFsaXplcyBhIG5ld2x5IGNyZWF0ZWQgPGNvZGU+U3RyaW5nPC9jb2RlPiBvYmplY3Qgc28gdGhhdCBpdCByZXByZXNlbnRzCisgICAgICAgIHRoZSBzYW1lIHNlcXVlbmNlIG9mIGNoYXJhY3RlcnMgYXMgdGhlIGFyZ3VtZW50OyBpbiBvdGhlciB3b3JkcywgdGhlCisgICAgICAgIG5ld2x5IGNyZWF0ZWQgc3RyaW5nIGlzIGEgY29weSBvZiB0aGUgYXJndW1lbnQgc3RyaW5nLiBVbmxlc3MgYW4KKyAgICAgICAgZXhwbGljaXQgY29weSBvZiA8Y29kZT5vcmlnaW5hbDwvY29kZT4gaXMgbmVlZGVkLCB1c2Ugb2YgdGhpcyBjb25zdHJ1Y3RvciBpcworICAgICAgICB1bm5lY2Vzc2FyeSBzaW5jZSBTdHJpbmdzIGFyZSBpbW11dGFibGUuCisgICAgICAgIDxQPgorICAgICAgICA8REw+CisgICAgICAgICAgICA8RFQ+PEI+UGFyYW1ldGVyczo8L0I+PEREPjxDT0RFPm9yaWdpbmFsPC9DT0RFPiAtIEEgPGNvZGU+U3RyaW5nPC9jb2RlPjwvREw+Cis8L0RMPgorPEhSPgorCis8QSBOQU1FPSJTdHJpbmcoY2hhcltdKSI+PCEtLSAtLT48L0E+PEgzPgorICAgIFN0cmluZzwvSDM+Cis8UFJFPgorcHVibGljIDxCPlN0cmluZzwvQj4oY2hhcltdJm5ic3A7dmFsdWUpPC9QUkU+Cis8REw+CisgICAgPEREPkFsbG9jYXRlcyBhIG5ldyA8Y29kZT5TdHJpbmc8L2NvZGU+IHNvIHRoYXQgaXQgcmVwcmVzZW50cyB0aGUgc2VxdWVuY2Ugb2YKKyAgICAgICAgY2hhcmFjdGVycyBjdXJyZW50bHkgY29udGFpbmVkIGluIHRoZSBjaGFyYWN0ZXIgYXJyYXkgYXJndW1lbnQuIFRoZQorICAgICAgICBjb250ZW50cyBvZiB0aGUgY2hhcmFjdGVyIGFycmF5IGFyZSBjb3BpZWQ7IHN1YnNlcXVlbnQgbW9kaWZpY2F0aW9uIG9mCisgICAgICAgIHRoZSBjaGFyYWN0ZXIgYXJyYXkgZG9lcyBub3QgYWZmZWN0IHRoZSBuZXdseSBjcmVhdGVkIHN0cmluZy4KKyAgICAgICAgPFA+CisgICAgICAgIDxETD4KKyAgICAgICAgICAgIDxEVD48Qj5QYXJhbWV0ZXJzOjwvQj48REQ+PENPREU+dmFsdWU8L0NPREU+IC0gVGhlIGluaXRpYWwgdmFsdWUgb2YgdGhlIHN0cmluZzwvREw+Cis8L0RMPgorPEhSPgorCis8QSBOQU1FPSJTdHJpbmcoY2hhcltdLCBpbnQsIGludCkiPjwhLS0gLS0+PC9BPjxIMz4KKyAgICBTdHJpbmc8L0gzPgorPFBSRT4KK3B1YmxpYyA8Qj5TdHJpbmc8L0I+KGNoYXJbXSZuYnNwO3ZhbHVlLAorICAgICAgICAgICAgICBpbnQmbmJzcDtvZmZzZXQsCisgICAgICAgICAgICAgIGludCZuYnNwO2NvdW50KTwvUFJFPgorPERMPgorICAgIDxERD5BbGxvY2F0ZXMgYSBuZXcgPGNvZGU+U3RyaW5nPC9jb2RlPiB0aGF0IGNvbnRhaW5zIGNoYXJhY3RlcnMgZnJvbSBhIHN1YmFycmF5CisgICAgICAgIG9mIHRoZSBjaGFyYWN0ZXIgYXJyYXkgYXJndW1lbnQuIFRoZSA8Y29kZT5vZmZzZXQ8L2NvZGU+IGFyZ3VtZW50IGlzIHRoZQorICAgICAgICBpbmRleCBvZiB0aGUgZmlyc3QgY2hhcmFjdGVyIG9mIHRoZSBzdWJhcnJheSBhbmQgdGhlIDxjb2RlPmNvdW50PC9jb2RlPgorICAgICAgICBhcmd1bWVudCBzcGVjaWZpZXMgdGhlIGxlbmd0aCBvZiB0aGUgc3ViYXJyYXkuIFRoZSBjb250ZW50cyBvZiB0aGUKKyAgICAgICAgc3ViYXJyYXkgYXJlIGNvcGllZDsgc3Vic2VxdWVudCBtb2RpZmljYXRpb24gb2YgdGhlIGNoYXJhY3RlciBhcnJheSBkb2VzCisgICAgICAgIG5vdCBhZmZlY3QgdGhlIG5ld2x5IGNyZWF0ZWQgc3RyaW5nLgorICAgICAgICA8UD4KKyAgICAgICAgPERMPgorICAgICAgICAgICAgPERUPjxCPlBhcmFtZXRlcnM6PC9CPjxERD48Q09ERT52YWx1ZTwvQ09ERT4gLSBBcnJheSB0aGF0IGlzIHRoZSBzb3VyY2Ugb2YgY2hhcmFjdGVyczxERD48Q09ERT5vZmZzZXQ8L0NPREU+IC0gVGhlIGluaXRpYWwgb2Zmc2V0PEREPjxDT0RFPmNvdW50PC9DT0RFPiAtIFRoZSBsZW5ndGgKKyAgICAgICAgICAgIDxEVD48Qj5UaHJvd3M6PC9CPgorICAgICAgICAgICAgPEREPjxDT0RFPjxBIEhSRUY9Ii4uLy4uL2phdmEvbGFuZy9JbmRleE91dE9mQm91bmRzRXhjZXB0aW9uLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBqYXZhLmxhbmciPkluZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb248L0E+PC9DT0RFPiAtIElmIHRoZSA8Y29kZT5vZmZzZXQ8L2NvZGU+IGFuZCA8Y29kZT5jb3VudDwvY29kZT4gYXJndW1lbnRzIGluZGV4CisgICAgICAgICAgICAgICAgY2hhcmFjdGVycyBvdXRzaWRlIHRoZSBib3VuZHMgb2YgdGhlIDxjb2RlPnZhbHVlPC9jb2RlPiBhcnJheTwvREw+Cis8L0RMPgorPEhSPgorCis8QSBOQU1FPSJTdHJpbmcoaW50W10sIGludCwgaW50KSI+PCEtLSAtLT48L0E+PEgzPgorICAgIFN0cmluZzwvSDM+Cis8UFJFPgorcHVibGljIDxCPlN0cmluZzwvQj4oaW50W10mbmJzcDtjb2RlUG9pbnRzLAorICAgICAgICAgICAgICBpbnQmbmJzcDtvZmZzZXQsCisgICAgICAgICAgICAgIGludCZuYnNwO2NvdW50KTwvUFJFPgorPERMPgorICAgIDxERD5BbGxvY2F0ZXMgYSBuZXcgPGNvZGU+U3RyaW5nPC9jb2RlPiB0aGF0IGNvbnRhaW5zIGNoYXJhY3RlcnMgZnJvbSBhIHN1YmFycmF5CisgICAgICAgIG9mIHRoZSBVbmljb2RlIGNvZGUgcG9pbnQgYXJyYXkgYXJndW1lbnQuIFRoZSA8Y29kZT5vZmZzZXQ8L2NvZGU+IGFyZ3VtZW50CisgICAgICAgIGlzIHRoZSBpbmRleCBvZiB0aGUgZmlyc3QgY29kZSBwb2ludCBvZiB0aGUgc3ViYXJyYXkgYW5kIHRoZQorICAgICAgICA8Y29kZT5jb3VudDwvY29kZT4gYXJndW1lbnQgc3BlY2lmaWVzIHRoZSBsZW5ndGggb2YgdGhlIHN1YmFycmF5LiBUaGUKKyAgICAgICAgY29udGVudHMgb2YgdGhlIHN1YmFycmF5IGFyZSBjb252ZXJ0ZWQgdG8gPGNvZGU+Y2hhcjwvY29kZT5zOyBzdWJzZXF1ZW50CisgICAgICAgIG1vZGlmaWNhdGlvbiBvZiB0aGUgPGNvZGU+aW50PC9jb2RlPiBhcnJheSBkb2VzIG5vdCBhZmZlY3QgdGhlIG5ld2x5IGNyZWF0ZWQKKyAgICAgICAgc3RyaW5nLgorICAgICAgICA8UD4KKyAgICAgICAgPERMPgorICAgICAgICAgICAgPERUPjxCPlBhcmFtZXRlcnM6PC9CPjxERD48Q09ERT5jb2RlUG9pbnRzPC9DT0RFPiAtIEFycmF5IHRoYXQgaXMgdGhlIHNvdXJjZSBvZiBVbmljb2RlIGNvZGUgcG9pbnRzPEREPjxDT0RFPm9mZnNldDwvQ09ERT4gLSBUaGUgaW5pdGlhbCBvZmZzZXQ8REQ+PENPREU+Y291bnQ8L0NPREU+IC0gVGhlIGxlbmd0aAorICAgICAgICAgICAgPERUPjxCPlRocm93czo8L0I+CisgICAgICAgICAgICA8REQ+PENPREU+PEEgSFJFRj0iLi4vLi4vamF2YS9sYW5nL0lsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbi5odG1sIiB0aXRsZT0iY2xhc3MgaW4gamF2YS5sYW5nIj5JbGxlZ2FsQXJndW1lbnRFeGNlcHRpb248L0E+PC9DT0RFPiAtIElmIGFueSBpbnZhbGlkIFVuaWNvZGUgY29kZSBwb2ludCBpcyBmb3VuZCBpbiA8Y29kZT5jb2RlUG9pbnRzPC9jb2RlPgorICAgICAgICAgICAgPEREPjxDT0RFPjxBIEhSRUY9Ii4uLy4uL2phdmEvbGFuZy9JbmRleE91dE9mQm91bmRzRXhjZXB0aW9uLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBqYXZhLmxhbmciPkluZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb248L0E+PC9DT0RFPiAtIElmIHRoZSA8Y29kZT5vZmZzZXQ8L2NvZGU+IGFuZCA8Y29kZT5jb3VudDwvY29kZT4gYXJndW1lbnRzIGluZGV4CisgICAgICAgICAgICAgICAgY2hhcmFjdGVycyBvdXRzaWRlIHRoZSBib3VuZHMgb2YgdGhlIDxjb2RlPmNvZGVQb2ludHM8L2NvZGU+IGFycmF5PERUPjxCPlNpbmNlOjwvQj48L0RUPgorICAgICAgICAgICAgPEREPjEuNTwvREQ+CisgICAgICAgIDwvREw+Cis8L0RMPgorPEhSPgorCis8QSBOQU1FPSJTdHJpbmcoYnl0ZVtdLCBpbnQsIGludCwgaW50KSI+PCEtLSAtLT48L0E+PEgzPgorICAgIFN0cmluZzwvSDM+Cis8UFJFPgorPEZPTlQgU0laRT0iLTEiPjxBIEhSRUY9Ii4uLy4uL2phdmEvbGFuZy9EZXByZWNhdGVkLmh0bWwiIHRpdGxlPSJhbm5vdGF0aW9uIGluIGphdmEubGFuZyI+QERlcHJlY2F0ZWQ8L0E+Cis8L0ZPTlQ+cHVibGljIDxCPlN0cmluZzwvQj4oYnl0ZVtdJm5ic3A7YXNjaWksCisgICAgICAgICAgICAgICAgICAgICAgICAgaW50Jm5ic3A7aGlieXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgIGludCZuYnNwO29mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBpbnQmbmJzcDtjb3VudCk8L1BSRT4KKzxETD4KKyAgICA8REQ+PEI+RGVwcmVjYXRlZC48L0I+Jm5ic3A7PEk+VGhpcyBtZXRob2QgZG9lcyBub3QgcHJvcGVybHkgY29udmVydCBieXRlcyBpbnRvIGNoYXJhY3RlcnMuCisgICAgICAgIEFzIG9mIEpESyZuYnNwOzEuMSwgdGhlIHByZWZlcnJlZCB3YXkgdG8gZG8gdGhpcyBpcyB2aWEgdGhlCisgICAgICAgIDxjb2RlPlN0cmluZzwvY29kZT4gY29uc3RydWN0b3JzIHRoYXQgdGFrZSBhIDxBIEhSRUY9Ii4uLy4uL2phdmEvbmlvL2NoYXJzZXQvQ2hhcnNldC5odG1sIiB0aXRsZT0iY2xhc3MgaW4gamF2YS5uaW8uY2hhcnNldCI+PENPREU+Q2hhcnNldDwvQ09ERT48L0E+LCBjaGFyc2V0IG5hbWUsIG9yIHRoYXQgdXNlIHRoZSBwbGF0Zm9ybSdzCisgICAgICAgIGRlZmF1bHQgY2hhcnNldC48L0k+CisgICAgICAgIDxQPgorICAgICAgICAgICAgPEREPkFsbG9jYXRlcyBhIG5ldyA8Y29kZT5TdHJpbmc8L2NvZGU+IGNvbnN0cnVjdGVkIGZyb20gYSBzdWJhcnJheSBvZiBhbiBhcnJheQorICAgICAgICAgICAgICAgIG9mIDgtYml0IGludGVnZXIgdmFsdWVzLgorCisgICAgICAgIDxwPiBUaGUgPGNvZGU+b2Zmc2V0PC9jb2RlPiBhcmd1bWVudCBpcyB0aGUgaW5kZXggb2YgdGhlIGZpcnN0IGJ5dGUgb2YgdGhlCisgICAgICAgICAgICBzdWJhcnJheSwgYW5kIHRoZSA8Y29kZT5jb3VudDwvY29kZT4gYXJndW1lbnQgc3BlY2lmaWVzIHRoZSBsZW5ndGggb2YgdGhlCisgICAgICAgICAgICBzdWJhcnJheS4KKworICAgICAgICA8cD4gRWFjaCA8Y29kZT5ieXRlPC9jb2RlPiBpbiB0aGUgc3ViYXJyYXkgaXMgY29udmVydGVkIHRvIGEgPGNvZGU+Y2hhcjwvY29kZT4gYXMKKyAgICAgICAgICAgIHNwZWNpZmllZCBpbiB0aGUgbWV0aG9kIGFib3ZlLgorICAgICAgICA8UD4KKyAgICAgICAgPERMPgorICAgICAgICAgICAgPERUPjxCPlBhcmFtZXRlcnM6PC9CPjxERD48Q09ERT5hc2NpaTwvQ09ERT4gLSBUaGUgYnl0ZXMgdG8gYmUgY29udmVydGVkIHRvIGNoYXJhY3RlcnM8REQ+PENPREU+aGlieXRlPC9DT0RFPiAtIFRoZSB0b3AgOCBiaXRzIG9mIGVhY2ggMTYtYml0IFVuaWNvZGUgY29kZSB1bml0PEREPjxDT0RFPm9mZnNldDwvQ09ERT4gLSBUaGUgaW5pdGlhbCBvZmZzZXQ8REQ+PENPREU+Y291bnQ8L0NPREU+IC0gVGhlIGxlbmd0aAorICAgICAgICAgICAgPERUPjxCPlRocm93czo8L0I+CisgICAgICAgICAgICA8REQ+PENPREU+PEEgSFJFRj0iLi4vLi4vamF2YS9sYW5nL0luZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb24uaHRtbCIgdGl0bGU9ImNsYXNzIGluIGphdmEubGFuZyI+SW5kZXhPdXRPZkJvdW5kc0V4Y2VwdGlvbjwvQT48L0NPREU+IC0gSWYgdGhlIDxjb2RlPm9mZnNldDwvY29kZT4gb3IgPGNvZGU+Y291bnQ8L2NvZGU+IGFyZ3VtZW50IGlzIGludmFsaWQ8RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi9qYXZhL2xhbmcvU3RyaW5nLmh0bWwjU3RyaW5nKGJ5dGVbXSwgaW50KSI+PENPREU+U3RyaW5nKGJ5dGVbXSwgaW50KTwvQ09ERT48L0E+LAorICAgICAgICAgICAgPEEgSFJFRj0iLi4vLi4vamF2YS9sYW5nL1N0cmluZy5odG1sI1N0cmluZyhieXRlW10sIGludCwgaW50LCBqYXZhLmxhbmcuU3RyaW5nKSI+PENPREU+U3RyaW5nKGJ5dGVbXSwgaW50LCBpbnQsIGphdmEubGFuZy5TdHJpbmcpPC9DT0RFPjwvQT4sCisgICAgICAgICAgICA8QSBIUkVGPSIuLi8uLi9qYXZhL2xhbmcvU3RyaW5nLmh0bWwjU3RyaW5nKGJ5dGVbXSwgaW50LCBpbnQsIGphdmEubmlvLmNoYXJzZXQuQ2hhcnNldCkiPjxDT0RFPlN0cmluZyhieXRlW10sIGludCwgaW50LCBqYXZhLm5pby5jaGFyc2V0LkNoYXJzZXQpPC9DT0RFPjwvQT4sCisgICAgICAgICAgICA8QSBIUkVGPSIuLi8uLi9qYXZhL2xhbmcvU3RyaW5nLmh0bWwjU3RyaW5nKGJ5dGVbXSwgaW50LCBpbnQpIj48Q09ERT5TdHJpbmcoYnl0ZVtdLCBpbnQsIGludCk8L0NPREU+PC9BPiwKKyAgICAgICAgICAgIDxBIEhSRUY9Ii4uLy4uL2phdmEvbGFuZy9TdHJpbmcuaHRtbCNTdHJpbmcoYnl0ZVtdLCBqYXZhLmxhbmcuU3RyaW5nKSI+PENPREU+U3RyaW5nKGJ5dGVbXSwgamF2YS5sYW5nLlN0cmluZyk8L0NPREU+PC9BPiwKKyAgICAgICAgICAgIDxBIEhSRUY9Ii4uLy4uL2phdmEvbGFuZy9TdHJpbmcuaHRtbCNTdHJpbmcoYnl0ZVtdLCBqYXZhLm5pby5jaGFyc2V0LkNoYXJzZXQpIj48Q09ERT5TdHJpbmcoYnl0ZVtdLCBqYXZhLm5pby5jaGFyc2V0LkNoYXJzZXQpPC9DT0RFPjwvQT4sCisgICAgICAgICAgICA8QSBIUkVGPSIuLi8uLi9qYXZhL2xhbmcvU3RyaW5nLmh0bWwjU3RyaW5nKGJ5dGVbXSkiPjxDT0RFPlN0cmluZyhieXRlW10pPC9DT0RFPjwvQT48L0RMPgorPC9ETD4KKzxIUj4KKworPEEgTkFNRT0iU3RyaW5nKGJ5dGVbXSwgaW50KSI+PCEtLSAtLT48L0E+PEgzPgorICAgIFN0cmluZzwvSDM+Cis8UFJFPgorPEZPTlQgU0laRT0iLTEiPjxBIEhSRUY9Ii4uLy4uL2phdmEvbGFuZy9EZXByZWNhdGVkLmh0bWwiIHRpdGxlPSJhbm5vdGF0aW9uIGluIGphdmEubGFuZyI+QERlcHJlY2F0ZWQ8L0E+Cis8L0ZPTlQ+cHVibGljIDxCPlN0cmluZzwvQj4oYnl0ZVtdJm5ic3A7YXNjaWksCisgICAgICAgICAgICAgICAgICAgICAgICAgaW50Jm5ic3A7aGlieXRlKTwvUFJFPgorPERMPgorICAgIDxERD48Qj5EZXByZWNhdGVkLjwvQj4mbmJzcDs8ST5UaGlzIG1ldGhvZCBkb2VzIG5vdCBwcm9wZXJseSBjb252ZXJ0IGJ5dGVzIGludG8KKyAgICAgICAgY2hhcmFjdGVycy4gIEFzIG9mIEpESyZuYnNwOzEuMSwgdGhlIHByZWZlcnJlZCB3YXkgdG8gZG8gdGhpcyBpcyB2aWEgdGhlCisgICAgICAgIDxjb2RlPlN0cmluZzwvY29kZT4gY29uc3RydWN0b3JzIHRoYXQgdGFrZSBhIDxBIEhSRUY9Ii4uLy4uL2phdmEvbmlvL2NoYXJzZXQvQ2hhcnNldC5odG1sIiB0aXRsZT0iY2xhc3MgaW4gamF2YS5uaW8uY2hhcnNldCI+PENPREU+Q2hhcnNldDwvQ09ERT48L0E+LCBjaGFyc2V0IG5hbWUsIG9yIHRoYXQgdXNlIHRoZSBwbGF0Zm9ybSdzCisgICAgICAgIGRlZmF1bHQgY2hhcnNldC48L0k+CisgICAgICAgIDxQPgorICAgICAgICAgICAgPEREPkFsbG9jYXRlcyBhIG5ldyA8Y29kZT5TdHJpbmc8L2NvZGU+IGNvbnRhaW5pbmcgY2hhcmFjdGVycyBjb25zdHJ1Y3RlZCBmcm9tCisgICAgICAgICAgICAgICAgYW4gYXJyYXkgb2YgOC1iaXQgaW50ZWdlciB2YWx1ZXMuIEVhY2ggY2hhcmFjdGVyIDxpPmM8L2k+aW4gdGhlCisgICAgICAgICAgICAgICAgcmVzdWx0aW5nIHN0cmluZyBpcyBjb25zdHJ1Y3RlZCBmcm9tIHRoZSBjb3JyZXNwb25kaW5nIGNvbXBvbmVudAorICAgICAgICAgICAgICAgIDxpPmI8L2k+IGluIHRoZSBieXRlIGFycmF5IHN1Y2ggdGhhdDoKKworICAgICAgICAgICAgICAgIDxibG9ja3F1b3RlPjxwcmU+CisgICAgIDxiPjxpPmM8L2k+PC9iPiA9PSAoY2hhcikoKChoaWJ5dGUgJmFtcDsgMHhmZikgJmx0OyZsdDsgOCkKKyAgICAgICAgICAgICAgICAgICAgICAgICB8ICg8Yj48aT5iPC9pPjwvYj4gJmFtcDsgMHhmZikpCisgPC9wcmU+PC9ibG9ja3F1b3RlPgorICAgICAgICA8UD4KKyAgICAgICAgPERMPgorICAgICAgICAgICAgPERUPjxCPlBhcmFtZXRlcnM6PC9CPjxERD48Q09ERT5hc2NpaTwvQ09ERT4gLSBUaGUgYnl0ZXMgdG8gYmUgY29udmVydGVkIHRvIGNoYXJhY3RlcnM8REQ+PENPREU+aGlieXRlPC9DT0RFPiAtIFRoZSB0b3AgOCBiaXRzIG9mIGVhY2ggMTYtYml0IFVuaWNvZGUgY29kZSB1bml0PERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vamF2YS9sYW5nL1N0cmluZy5odG1sI1N0cmluZyhieXRlW10sIGludCwgaW50LCBqYXZhLmxhbmcuU3RyaW5nKSI+PENPREU+U3RyaW5nKGJ5dGVbXSwgaW50LCBpbnQsIGphdmEubGFuZy5TdHJpbmcpPC9DT0RFPjwvQT4sCisgICAgICAgICAgICA8QSBIUkVGPSIuLi8uLi9qYXZhL2xhbmcvU3RyaW5nLmh0bWwjU3RyaW5nKGJ5dGVbXSwgaW50LCBpbnQsIGphdmEubmlvLmNoYXJzZXQuQ2hhcnNldCkiPjxDT0RFPlN0cmluZyhieXRlW10sIGludCwgaW50LCBqYXZhLm5pby5jaGFyc2V0LkNoYXJzZXQpPC9DT0RFPjwvQT4sCisgICAgICAgICAgICA8QSBIUkVGPSIuLi8uLi9qYXZhL2xhbmcvU3RyaW5nLmh0bWwjU3RyaW5nKGJ5dGVbXSwgaW50LCBpbnQpIj48Q09ERT5TdHJpbmcoYnl0ZVtdLCBpbnQsIGludCk8L0NPREU+PC9BPiwKKyAgICAgICAgICAgIDxBIEhSRUY9Ii4uLy4uL2phdmEvbGFuZy9TdHJpbmcuaHRtbCNTdHJpbmcoYnl0ZVtdLCBqYXZhLmxhbmcuU3RyaW5nKSI+PENPREU+U3RyaW5nKGJ5dGVbXSwgamF2YS5sYW5nLlN0cmluZyk8L0NPREU+PC9BPiwKKyAgICAgICAgICAgIDxBIEhSRUY9Ii4uLy4uL2phdmEvbGFuZy9TdHJpbmcuaHRtbCNTdHJpbmcoYnl0ZVtdLCBqYXZhLm5pby5jaGFyc2V0LkNoYXJzZXQpIj48Q09ERT5TdHJpbmcoYnl0ZVtdLCBqYXZhLm5pby5jaGFyc2V0LkNoYXJzZXQpPC9DT0RFPjwvQT4sCisgICAgICAgICAgICA8QSBIUkVGPSIuLi8uLi9qYXZhL2xhbmcvU3RyaW5nLmh0bWwjU3RyaW5nKGJ5dGVbXSkiPjxDT0RFPlN0cmluZyhieXRlW10pPC9DT0RFPjwvQT48L0RMPgorPC9ETD4KKzxIUj4KKworPEEgTkFNRT0iU3RyaW5nKGJ5dGVbXSwgaW50LCBpbnQsIGphdmEubGFuZy5TdHJpbmcpIj48IS0tIC0tPjwvQT48SDM+CisgICAgU3RyaW5nPC9IMz4KKzxQUkU+CitwdWJsaWMgPEI+U3RyaW5nPC9CPihieXRlW10mbmJzcDtieXRlcywKKyAgICAgICAgICAgICAgaW50Jm5ic3A7b2Zmc2V0LAorICAgICAgICAgICAgICBpbnQmbmJzcDtsZW5ndGgsCisgICAgICAgICAgICAgIDxBIEhSRUY9Ii4uLy4uL2phdmEvbGFuZy9TdHJpbmcuaHRtbCIgdGl0bGU9ImNsYXNzIGluIGphdmEubGFuZyI+U3RyaW5nPC9BPiZuYnNwO2NoYXJzZXROYW1lKQorICAgICAgIHRocm93cyA8QSBIUkVGPSIuLi8uLi9qYXZhL2lvL1Vuc3VwcG9ydGVkRW5jb2RpbmdFeGNlcHRpb24uaHRtbCIgdGl0bGU9ImNsYXNzIGluIGphdmEuaW8iPlVuc3VwcG9ydGVkRW5jb2RpbmdFeGNlcHRpb248L0E+PC9QUkU+Cis8REw+CisgICAgPEREPkNvbnN0cnVjdHMgYSBuZXcgPGNvZGU+U3RyaW5nPC9jb2RlPiBieSBkZWNvZGluZyB0aGUgc3BlY2lmaWVkIHN1YmFycmF5IG9mCisgICAgICAgIGJ5dGVzIHVzaW5nIHRoZSBzcGVjaWZpZWQgY2hhcnNldC4gIFRoZSBsZW5ndGggb2YgdGhlIG5ldyA8Y29kZT5TdHJpbmc8L2NvZGU+CisgICAgICAgIGlzIGEgZnVuY3Rpb24gb2YgdGhlIGNoYXJzZXQsIGFuZCBoZW5jZSBtYXkgbm90IGJlIGVxdWFsIHRvIHRoZSBsZW5ndGgKKyAgICAgICAgb2YgdGhlIHN1YmFycmF5LgorCisgICAgICAgIDxwPiBUaGUgYmVoYXZpb3Igb2YgdGhpcyBjb25zdHJ1Y3RvciB3aGVuIHRoZSBnaXZlbiBieXRlcyBhcmUgbm90IHZhbGlkCisgICAgICAgICAgICBpbiB0aGUgZ2l2ZW4gY2hhcnNldCBpcyB1bnNwZWNpZmllZC4gIFRoZSA8QSBIUkVGPSIuLi8uLi9qYXZhL25pby9jaGFyc2V0L0NoYXJzZXREZWNvZGVyLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBqYXZhLm5pby5jaGFyc2V0Ij48Q09ERT5DaGFyc2V0RGVjb2RlcjwvQ09ERT48L0E+IGNsYXNzIHNob3VsZCBiZSB1c2VkIHdoZW4gbW9yZSBjb250cm9sCisgICAgICAgICAgICBvdmVyIHRoZSBkZWNvZGluZyBwcm9jZXNzIGlzIHJlcXVpcmVkLgorICAgICAgICA8UD4KKyAgICAgICAgPERMPgorICAgICAgICAgICAgPERUPjxCPlBhcmFtZXRlcnM6PC9CPjxERD48Q09ERT5ieXRlczwvQ09ERT4gLSBUaGUgYnl0ZXMgdG8gYmUgZGVjb2RlZCBpbnRvIGNoYXJhY3RlcnM8REQ+PENPREU+b2Zmc2V0PC9DT0RFPiAtIFRoZSBpbmRleCBvZiB0aGUgZmlyc3QgYnl0ZSB0byBkZWNvZGU8REQ+PENPREU+bGVuZ3RoPC9DT0RFPiAtIFRoZSBudW1iZXIgb2YgYnl0ZXMgdG8gZGVjb2RlPEREPjxDT0RFPmNoYXJzZXROYW1lPC9DT0RFPiAtIFRoZSBuYW1lIG9mIGEgc3VwcG9ydGVkIDxBIEhSRUY9Ii4uLy4uL2phdmEvbmlvL2NoYXJzZXQvQ2hhcnNldC5odG1sIiB0aXRsZT0iY2xhc3MgaW4gamF2YS5uaW8uY2hhcnNldCI+Y2hhcnNldDwvQT4KKyAgICAgICAgICAgIDxEVD48Qj5UaHJvd3M6PC9CPgorICAgICAgICAgICAgPEREPjxDT0RFPjxBIEhSRUY9Ii4uLy4uL2phdmEvaW8vVW5zdXBwb3J0ZWRFbmNvZGluZ0V4Y2VwdGlvbi5odG1sIiB0aXRsZT0iY2xhc3MgaW4gamF2YS5pbyI+VW5zdXBwb3J0ZWRFbmNvZGluZ0V4Y2VwdGlvbjwvQT48L0NPREU+IC0gSWYgdGhlIG5hbWVkIGNoYXJzZXQgaXMgbm90IHN1cHBvcnRlZAorICAgICAgICAgICAgPEREPjxDT0RFPjxBIEhSRUY9Ii4uLy4uL2phdmEvbGFuZy9JbmRleE91dE9mQm91bmRzRXhjZXB0aW9uLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBqYXZhLmxhbmciPkluZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb248L0E+PC9DT0RFPiAtIElmIHRoZSA8Y29kZT5vZmZzZXQ8L2NvZGU+IGFuZCA8Y29kZT5sZW5ndGg8L2NvZGU+IGFyZ3VtZW50cyBpbmRleAorICAgICAgICAgICAgICAgIGNoYXJhY3RlcnMgb3V0c2lkZSB0aGUgYm91bmRzIG9mIHRoZSA8Y29kZT5ieXRlczwvY29kZT4gYXJyYXk8RFQ+PEI+U2luY2U6PC9CPjwvRFQ+CisgICAgICAgICAgICA8REQ+SkRLMS4xPC9ERD4KKyAgICAgICAgPC9ETD4KKzwvREw+Cis8SFI+CisKKzxBIE5BTUU9IlN0cmluZyhieXRlW10sIGludCwgaW50LCBqYXZhLm5pby5jaGFyc2V0LkNoYXJzZXQpIj48IS0tIC0tPjwvQT48SDM+CisgICAgU3RyaW5nPC9IMz4KKzxQUkU+CitwdWJsaWMgPEI+U3RyaW5nPC9CPihieXRlW10mbmJzcDtieXRlcywKKyAgICAgICAgICAgICAgaW50Jm5ic3A7b2Zmc2V0LAorICAgICAgICAgICAgICBpbnQmbmJzcDtsZW5ndGgsCisgICAgICAgICAgICAgIDxBIEhSRUY9Ii4uLy4uL2phdmEvbmlvL2NoYXJzZXQvQ2hhcnNldC5odG1sIiB0aXRsZT0iY2xhc3MgaW4gamF2YS5uaW8uY2hhcnNldCI+Q2hhcnNldDwvQT4mbmJzcDtjaGFyc2V0KTwvUFJFPgorPERMPgorICAgIDxERD5Db25zdHJ1Y3RzIGEgbmV3IDxjb2RlPlN0cmluZzwvY29kZT4gYnkgZGVjb2RpbmcgdGhlIHNwZWNpZmllZCBzdWJhcnJheSBvZgorICAgICAgICBieXRlcyB1c2luZyB0aGUgc3BlY2lmaWVkIDxBIEhSRUY9Ii4uLy4uL2phdmEvbmlvL2NoYXJzZXQvQ2hhcnNldC5odG1sIiB0aXRsZT0iY2xhc3MgaW4gamF2YS5uaW8uY2hhcnNldCI+Y2hhcnNldDwvQT4uCisgICAgICAgIFRoZSBsZW5ndGggb2YgdGhlIG5ldyA8Y29kZT5TdHJpbmc8L2NvZGU+IGlzIGEgZnVuY3Rpb24gb2YgdGhlIGNoYXJzZXQsIGFuZAorICAgICAgICBoZW5jZSBtYXkgbm90IGJlIGVxdWFsIHRvIHRoZSBsZW5ndGggb2YgdGhlIHN1YmFycmF5LgorCisgICAgICAgIDxwPiBUaGlzIG1ldGhvZCBhbHdheXMgcmVwbGFjZXMgbWFsZm9ybWVkLWlucHV0IGFuZCB1bm1hcHBhYmxlLWNoYXJhY3RlcgorICAgICAgICAgICAgc2VxdWVuY2VzIHdpdGggdGhpcyBjaGFyc2V0J3MgZGVmYXVsdCByZXBsYWNlbWVudCBzdHJpbmcuICBUaGUgPEEgSFJFRj0iLi4vLi4vamF2YS9uaW8vY2hhcnNldC9DaGFyc2V0RGVjb2Rlci5odG1sIiB0aXRsZT0iY2xhc3MgaW4gamF2YS5uaW8uY2hhcnNldCI+PENPREU+Q2hhcnNldERlY29kZXI8L0NPREU+PC9BPiBjbGFzcyBzaG91bGQgYmUgdXNlZCB3aGVuIG1vcmUgY29udHJvbAorICAgICAgICAgICAgb3ZlciB0aGUgZGVjb2RpbmcgcHJvY2VzcyBpcyByZXF1aXJlZC4KKyAgICAgICAgPFA+CisgICAgICAgIDxETD4KKyAgICAgICAgICAgIDxEVD48Qj5QYXJhbWV0ZXJzOjwvQj48REQ+PENPREU+Ynl0ZXM8L0NPREU+IC0gVGhlIGJ5dGVzIHRvIGJlIGRlY29kZWQgaW50byBjaGFyYWN0ZXJzPEREPjxDT0RFPm9mZnNldDwvQ09ERT4gLSBUaGUgaW5kZXggb2YgdGhlIGZpcnN0IGJ5dGUgdG8gZGVjb2RlPEREPjxDT0RFPmxlbmd0aDwvQ09ERT4gLSBUaGUgbnVtYmVyIG9mIGJ5dGVzIHRvIGRlY29kZTxERD48Q09ERT5jaGFyc2V0PC9DT0RFPiAtIFRoZSA8QSBIUkVGPSIuLi8uLi9qYXZhL25pby9jaGFyc2V0L0NoYXJzZXQuaHRtbCIgdGl0bGU9ImNsYXNzIGluIGphdmEubmlvLmNoYXJzZXQiPmNoYXJzZXQ8L0E+IHRvIGJlIHVzZWQgdG8KKyAgICAgICAgICAgIGRlY29kZSB0aGUgPGNvZGU+Ynl0ZXM8L2NvZGU+CisgICAgICAgICAgICA8RFQ+PEI+VGhyb3dzOjwvQj4KKyAgICAgICAgICAgIDxERD48Q09ERT48QSBIUkVGPSIuLi8uLi9qYXZhL2xhbmcvSW5kZXhPdXRPZkJvdW5kc0V4Y2VwdGlvbi5odG1sIiB0aXRsZT0iY2xhc3MgaW4gamF2YS5sYW5nIj5JbmRleE91dE9mQm91bmRzRXhjZXB0aW9uPC9BPjwvQ09ERT4gLSBJZiB0aGUgPGNvZGU+b2Zmc2V0PC9jb2RlPiBhbmQgPGNvZGU+bGVuZ3RoPC9jb2RlPiBhcmd1bWVudHMgaW5kZXgKKyAgICAgICAgICAgICAgICBjaGFyYWN0ZXJzIG91dHNpZGUgdGhlIGJvdW5kcyBvZiB0aGUgPGNvZGU+Ynl0ZXM8L2NvZGU+IGFycmF5PERUPjxCPlNpbmNlOjwvQj48L0RUPgorICAgICAgICAgICAgPEREPjEuNjwvREQ+CisgICAgICAgIDwvREw+Cis8L0RMPgorPEhSPgorCis8QSBOQU1FPSJTdHJpbmcoYnl0ZVtdLCBqYXZhLmxhbmcuU3RyaW5nKSI+PCEtLSAtLT48L0E+PEgzPgorICAgIFN0cmluZzwvSDM+Cis8UFJFPgorcHVibGljIDxCPlN0cmluZzwvQj4oYnl0ZVtdJm5ic3A7Ynl0ZXMsCisgICAgICAgICAgICAgIDxBIEhSRUY9Ii4uLy4uL2phdmEvbGFuZy9TdHJpbmcuaHRtbCIgdGl0bGU9ImNsYXNzIGluIGphdmEubGFuZyI+U3RyaW5nPC9BPiZuYnNwO2NoYXJzZXROYW1lKQorICAgICAgIHRocm93cyA8QSBIUkVGPSIuLi8uLi9qYXZhL2lvL1Vuc3VwcG9ydGVkRW5jb2RpbmdFeGNlcHRpb24uaHRtbCIgdGl0bGU9ImNsYXNzIGluIGphdmEuaW8iPlVuc3VwcG9ydGVkRW5jb2RpbmdFeGNlcHRpb248L0E+PC9QUkU+Cis8REw+CisgICAgPEREPkNvbnN0cnVjdHMgYSBuZXcgPGNvZGU+U3RyaW5nPC9jb2RlPiBieSBkZWNvZGluZyB0aGUgc3BlY2lmaWVkIGFycmF5IG9mIGJ5dGVzCisgICAgICAgIHVzaW5nIHRoZSBzcGVjaWZpZWQgPEEgSFJFRj0iLi4vLi4vamF2YS9uaW8vY2hhcnNldC9DaGFyc2V0Lmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBqYXZhLm5pby5jaGFyc2V0Ij5jaGFyc2V0PC9BPi4gIFRoZQorICAgICAgICBsZW5ndGggb2YgdGhlIG5ldyA8Y29kZT5TdHJpbmc8L2NvZGU+IGlzIGEgZnVuY3Rpb24gb2YgdGhlIGNoYXJzZXQsIGFuZCBoZW5jZQorICAgICAgICBtYXkgbm90IGJlIGVxdWFsIHRvIHRoZSBsZW5ndGggb2YgdGhlIGJ5dGUgYXJyYXkuCisKKyAgICAgICAgPHA+IFRoZSBiZWhhdmlvciBvZiB0aGlzIGNvbnN0cnVjdG9yIHdoZW4gdGhlIGdpdmVuIGJ5dGVzIGFyZSBub3QgdmFsaWQKKyAgICAgICAgICAgIGluIHRoZSBnaXZlbiBjaGFyc2V0IGlzIHVuc3BlY2lmaWVkLiAgVGhlIDxBIEhSRUY9Ii4uLy4uL2phdmEvbmlvL2NoYXJzZXQvQ2hhcnNldERlY29kZXIuaHRtbCIgdGl0bGU9ImNsYXNzIGluIGphdmEubmlvLmNoYXJzZXQiPjxDT0RFPkNoYXJzZXREZWNvZGVyPC9DT0RFPjwvQT4gY2xhc3Mgc2hvdWxkIGJlIHVzZWQgd2hlbiBtb3JlIGNvbnRyb2wKKyAgICAgICAgICAgIG92ZXIgdGhlIGRlY29kaW5nIHByb2Nlc3MgaXMgcmVxdWlyZWQuCisgICAgICAgIDxQPgorICAgICAgICA8REw+CisgICAgICAgICAgICA8RFQ+PEI+UGFyYW1ldGVyczo8L0I+PEREPjxDT0RFPmJ5dGVzPC9DT0RFPiAtIFRoZSBieXRlcyB0byBiZSBkZWNvZGVkIGludG8gY2hhcmFjdGVyczxERD48Q09ERT5jaGFyc2V0TmFtZTwvQ09ERT4gLSBUaGUgbmFtZSBvZiBhIHN1cHBvcnRlZCA8QSBIUkVGPSIuLi8uLi9qYXZhL25pby9jaGFyc2V0L0NoYXJzZXQuaHRtbCIgdGl0bGU9ImNsYXNzIGluIGphdmEubmlvLmNoYXJzZXQiPmNoYXJzZXQ8L0E+CisgICAgICAgICAgICA8RFQ+PEI+VGhyb3dzOjwvQj4KKyAgICAgICAgICAgIDxERD48Q09ERT48QSBIUkVGPSIuLi8uLi9qYXZhL2lvL1Vuc3VwcG9ydGVkRW5jb2RpbmdFeGNlcHRpb24uaHRtbCIgdGl0bGU9ImNsYXNzIGluIGphdmEuaW8iPlVuc3VwcG9ydGVkRW5jb2RpbmdFeGNlcHRpb248L0E+PC9DT0RFPiAtIElmIHRoZSBuYW1lZCBjaGFyc2V0IGlzIG5vdCBzdXBwb3J0ZWQ8RFQ+PEI+U2luY2U6PC9CPjwvRFQ+CisgICAgICAgICAgICA8REQ+SkRLMS4xPC9ERD4KKyAgICAgICAgPC9ETD4KKzwvREw+Cis8SFI+CisKKzxBIE5BTUU9IlN0cmluZyhieXRlW10sIGphdmEubmlvLmNoYXJzZXQuQ2hhcnNldCkiPjwhLS0gLS0+PC9BPjxIMz4KKyAgICBTdHJpbmc8L0gzPgorPFBSRT4KK3B1YmxpYyA8Qj5TdHJpbmc8L0I+KGJ5dGVbXSZuYnNwO2J5dGVzLAorICAgICAgICAgICAgICA8QSBIUkVGPSIuLi8uLi9qYXZhL25pby9jaGFyc2V0L0NoYXJzZXQuaHRtbCIgdGl0bGU9ImNsYXNzIGluIGphdmEubmlvLmNoYXJzZXQiPkNoYXJzZXQ8L0E+Jm5ic3A7Y2hhcnNldCk8L1BSRT4KKzxETD4KKyAgICA8REQ+Q29uc3RydWN0cyBhIG5ldyA8Y29kZT5TdHJpbmc8L2NvZGU+IGJ5IGRlY29kaW5nIHRoZSBzcGVjaWZpZWQgYXJyYXkgb2YKKyAgICAgICAgYnl0ZXMgdXNpbmcgdGhlIHNwZWNpZmllZCA8QSBIUkVGPSIuLi8uLi9qYXZhL25pby9jaGFyc2V0L0NoYXJzZXQuaHRtbCIgdGl0bGU9ImNsYXNzIGluIGphdmEubmlvLmNoYXJzZXQiPmNoYXJzZXQ8L0E+LgorICAgICAgICBUaGUgbGVuZ3RoIG9mIHRoZSBuZXcgPGNvZGU+U3RyaW5nPC9jb2RlPiBpcyBhIGZ1bmN0aW9uIG9mIHRoZSBjaGFyc2V0LCBhbmQKKyAgICAgICAgaGVuY2UgbWF5IG5vdCBiZSBlcXVhbCB0byB0aGUgbGVuZ3RoIG9mIHRoZSBieXRlIGFycmF5LgorCisgICAgICAgIDxwPiBUaGlzIG1ldGhvZCBhbHdheXMgcmVwbGFjZXMgbWFsZm9ybWVkLWlucHV0IGFuZCB1bm1hcHBhYmxlLWNoYXJhY3RlcgorICAgICAgICAgICAgc2VxdWVuY2VzIHdpdGggdGhpcyBjaGFyc2V0J3MgZGVmYXVsdCByZXBsYWNlbWVudCBzdHJpbmcuICBUaGUgPEEgSFJFRj0iLi4vLi4vamF2YS9uaW8vY2hhcnNldC9DaGFyc2V0RGVjb2Rlci5odG1sIiB0aXRsZT0iY2xhc3MgaW4gamF2YS5uaW8uY2hhcnNldCI+PENPREU+Q2hhcnNldERlY29kZXI8L0NPREU+PC9BPiBjbGFzcyBzaG91bGQgYmUgdXNlZCB3aGVuIG1vcmUgY29udHJvbAorICAgICAgICAgICAgb3ZlciB0aGUgZGVjb2RpbmcgcHJvY2VzcyBpcyByZXF1aXJlZC4KKyAgICAgICAgPFA+CisgICAgICAgIDxETD4KKyAgICAgICAgICAgIDxEVD48Qj5QYXJhbWV0ZXJzOjwvQj48REQ+PENPREU+Ynl0ZXM8L0NPREU+IC0gVGhlIGJ5dGVzIHRvIGJlIGRlY29kZWQgaW50byBjaGFyYWN0ZXJzPEREPjxDT0RFPmNoYXJzZXQ8L0NPREU+IC0gVGhlIDxBIEhSRUY9Ii4uLy4uL2phdmEvbmlvL2NoYXJzZXQvQ2hhcnNldC5odG1sIiB0aXRsZT0iY2xhc3MgaW4gamF2YS5uaW8uY2hhcnNldCI+Y2hhcnNldDwvQT4gdG8gYmUgdXNlZCB0bworICAgICAgICAgICAgZGVjb2RlIHRoZSA8Y29kZT5ieXRlczwvY29kZT48RFQ+PEI+U2luY2U6PC9CPjwvRFQ+CisgICAgICAgICAgICA8REQ+MS42PC9ERD4KKyAgICAgICAgPC9ETD4KKzwvREw+Cis8SFI+CisKKzxBIE5BTUU9IlN0cmluZyhieXRlW10sIGludCwgaW50KSI+PCEtLSAtLT48L0E+PEgzPgorICAgIFN0cmluZzwvSDM+Cis8UFJFPgorcHVibGljIDxCPlN0cmluZzwvQj4oYnl0ZVtdJm5ic3A7Ynl0ZXMsCisgICAgICAgICAgICAgIGludCZuYnNwO29mZnNldCwKKyAgICAgICAgICAgICAgaW50Jm5ic3A7bGVuZ3RoKTwvUFJFPgorPERMPgorICAgIDxERD5Db25zdHJ1Y3RzIGEgbmV3IDxjb2RlPlN0cmluZzwvY29kZT4gYnkgZGVjb2RpbmcgdGhlIHNwZWNpZmllZCBzdWJhcnJheSBvZgorICAgICAgICBieXRlcyB1c2luZyB0aGUgcGxhdGZvcm0ncyBkZWZhdWx0IGNoYXJzZXQuICBUaGUgbGVuZ3RoIG9mIHRoZSBuZXcKKyAgICAgICAgPGNvZGU+U3RyaW5nPC9jb2RlPiBpcyBhIGZ1bmN0aW9uIG9mIHRoZSBjaGFyc2V0LCBhbmQgaGVuY2UgbWF5IG5vdCBiZSBlcXVhbAorICAgICAgICB0byB0aGUgbGVuZ3RoIG9mIHRoZSBzdWJhcnJheS4KKworICAgICAgICA8cD4gVGhlIGJlaGF2aW9yIG9mIHRoaXMgY29uc3RydWN0b3Igd2hlbiB0aGUgZ2l2ZW4gYnl0ZXMgYXJlIG5vdCB2YWxpZAorICAgICAgICAgICAgaW4gdGhlIGRlZmF1bHQgY2hhcnNldCBpcyB1bnNwZWNpZmllZC4gIFRoZSA8QSBIUkVGPSIuLi8uLi9qYXZhL25pby9jaGFyc2V0L0NoYXJzZXREZWNvZGVyLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBqYXZhLm5pby5jaGFyc2V0Ij48Q09ERT5DaGFyc2V0RGVjb2RlcjwvQ09ERT48L0E+IGNsYXNzIHNob3VsZCBiZSB1c2VkIHdoZW4gbW9yZSBjb250cm9sCisgICAgICAgICAgICBvdmVyIHRoZSBkZWNvZGluZyBwcm9jZXNzIGlzIHJlcXVpcmVkLgorICAgICAgICA8UD4KKyAgICAgICAgPERMPgorICAgICAgICAgICAgPERUPjxCPlBhcmFtZXRlcnM6PC9CPjxERD48Q09ERT5ieXRlczwvQ09ERT4gLSBUaGUgYnl0ZXMgdG8gYmUgZGVjb2RlZCBpbnRvIGNoYXJhY3RlcnM8REQ+PENPREU+b2Zmc2V0PC9DT0RFPiAtIFRoZSBpbmRleCBvZiB0aGUgZmlyc3QgYnl0ZSB0byBkZWNvZGU8REQ+PENPREU+bGVuZ3RoPC9DT0RFPiAtIFRoZSBudW1iZXIgb2YgYnl0ZXMgdG8gZGVjb2RlCisgICAgICAgICAgICA8RFQ+PEI+VGhyb3dzOjwvQj4KKyAgICAgICAgICAgIDxERD48Q09ERT48QSBIUkVGPSIuLi8uLi9qYXZhL2xhbmcvSW5kZXhPdXRPZkJvdW5kc0V4Y2VwdGlvbi5odG1sIiB0aXRsZT0iY2xhc3MgaW4gamF2YS5sYW5nIj5JbmRleE91dE9mQm91bmRzRXhjZXB0aW9uPC9BPjwvQ09ERT4gLSBJZiB0aGUgPGNvZGU+b2Zmc2V0PC9jb2RlPiBhbmQgdGhlIDxjb2RlPmxlbmd0aDwvY29kZT4gYXJndW1lbnRzIGluZGV4CisgICAgICAgICAgICAgICAgY2hhcmFjdGVycyBvdXRzaWRlIHRoZSBib3VuZHMgb2YgdGhlIDxjb2RlPmJ5dGVzPC9jb2RlPiBhcnJheTxEVD48Qj5TaW5jZTo8L0I+PC9EVD4KKyAgICAgICAgICAgIDxERD5KREsxLjE8L0REPgorICAgICAgICA8L0RMPgorPC9ETD4KKzxIUj4KKworPEEgTkFNRT0iU3RyaW5nKGJ5dGVbXSkiPjwhLS0gLS0+PC9BPjxIMz4KKyAgICBTdHJpbmc8L0gzPgorPFBSRT4KK3B1YmxpYyA8Qj5TdHJpbmc8L0I+KGJ5dGVbXSZuYnNwO2J5dGVzKTwvUFJFPgorPERMPgorICAgIDxERD5Db25zdHJ1Y3RzIGEgbmV3IDxjb2RlPlN0cmluZzwvY29kZT4gYnkgZGVjb2RpbmcgdGhlIHNwZWNpZmllZCBhcnJheSBvZiBieXRlcworICAgICAgICB1c2luZyB0aGUgcGxhdGZvcm0ncyBkZWZhdWx0IGNoYXJzZXQuICBUaGUgbGVuZ3RoIG9mIHRoZSBuZXcgPGNvZGU+U3RyaW5nPC9jb2RlPiBpcyBhIGZ1bmN0aW9uIG9mIHRoZSBjaGFyc2V0LCBhbmQgaGVuY2UgbWF5IG5vdCBiZSBlcXVhbCB0byB0aGUKKyAgICAgICAgbGVuZ3RoIG9mIHRoZSBieXRlIGFycmF5LgorCisgICAgICAgIDxwPiBUaGUgYmVoYXZpb3Igb2YgdGhpcyBjb25zdHJ1Y3RvciB3aGVuIHRoZSBnaXZlbiBieXRlcyBhcmUgbm90IHZhbGlkCisgICAgICAgICAgICBpbiB0aGUgZGVmYXVsdCBjaGFyc2V0IGlzIHVuc3BlY2lmaWVkLiAgVGhlIDxBIEhSRUY9Ii4uLy4uL2phdmEvbmlvL2NoYXJzZXQvQ2hhcnNldERlY29kZXIuaHRtbCIgdGl0bGU9ImNsYXNzIGluIGphdmEubmlvLmNoYXJzZXQiPjxDT0RFPkNoYXJzZXREZWNvZGVyPC9DT0RFPjwvQT4gY2xhc3Mgc2hvdWxkIGJlIHVzZWQgd2hlbiBtb3JlIGNvbnRyb2wKKyAgICAgICAgICAgIG92ZXIgdGhlIGRlY29kaW5nIHByb2Nlc3MgaXMgcmVxdWlyZWQuCisgICAgICAgIDxQPgorICAgICAgICA8REw+CisgICAgICAgICAgICA8RFQ+PEI+UGFyYW1ldGVyczo8L0I+PEREPjxDT0RFPmJ5dGVzPC9DT0RFPiAtIFRoZSBieXRlcyB0byBiZSBkZWNvZGVkIGludG8gY2hhcmFjdGVyczxEVD48Qj5TaW5jZTo8L0I+PC9EVD4KKyAgICAgICAgICAgIDxERD5KREsxLjE8L0REPgorICAgICAgICA8L0RMPgorPC9ETD4KKzxIUj4KKworPEEgTkFNRT0iU3RyaW5nKGphdmEubGFuZy5TdHJpbmdCdWZmZXIpIj48IS0tIC0tPjwvQT48SDM+CisgICAgU3RyaW5nPC9IMz4KKzxQUkU+CitwdWJsaWMgPEI+U3RyaW5nPC9CPig8QSBIUkVGPSIuLi8uLi9qYXZhL2xhbmcvU3RyaW5nQnVmZmVyLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBqYXZhLmxhbmciPlN0cmluZ0J1ZmZlcjwvQT4mbmJzcDtidWZmZXIpPC9QUkU+Cis8REw+CisgICAgPEREPkFsbG9jYXRlcyBhIG5ldyBzdHJpbmcgdGhhdCBjb250YWlucyB0aGUgc2VxdWVuY2Ugb2YgY2hhcmFjdGVycworICAgICAgICBjdXJyZW50bHkgY29udGFpbmVkIGluIHRoZSBzdHJpbmcgYnVmZmVyIGFyZ3VtZW50LiBUaGUgY29udGVudHMgb2YgdGhlCisgICAgICAgIHN0cmluZyBidWZmZXIgYXJlIGNvcGllZDsgc3Vic2VxdWVudCBtb2RpZmljYXRpb24gb2YgdGhlIHN0cmluZyBidWZmZXIKKyAgICAgICAgZG9lcyBub3QgYWZmZWN0IHRoZSBuZXdseSBjcmVhdGVkIHN0cmluZy4KKyAgICAgICAgPFA+CisgICAgICAgIDxETD4KKyAgICAgICAgICAgIDxEVD48Qj5QYXJhbWV0ZXJzOjwvQj48REQ+PENPREU+YnVmZmVyPC9DT0RFPiAtIEEgPGNvZGU+U3RyaW5nQnVmZmVyPC9jb2RlPjwvREw+Cis8L0RMPgorPEhSPgorCis8QSBOQU1FPSJTdHJpbmcoamF2YS5sYW5nLlN0cmluZ0J1aWxkZXIpIj48IS0tIC0tPjwvQT48SDM+CisgICAgU3RyaW5nPC9IMz4KKzxQUkU+CitwdWJsaWMgPEI+U3RyaW5nPC9CPig8QSBIUkVGPSIuLi8uLi9qYXZhL2xhbmcvU3RyaW5nQnVpbGRlci5odG1sIiB0aXRsZT0iY2xhc3MgaW4gamF2YS5sYW5nIj5TdHJpbmdCdWlsZGVyPC9BPiZuYnNwO2J1aWxkZXIpPC9QUkU+Cis8REw+CisgICAgPEREPkFsbG9jYXRlcyBhIG5ldyBzdHJpbmcgdGhhdCBjb250YWlucyB0aGUgc2VxdWVuY2Ugb2YgY2hhcmFjdGVycworICAgICAgICBjdXJyZW50bHkgY29udGFpbmVkIGluIHRoZSBzdHJpbmcgYnVpbGRlciBhcmd1bWVudC4gVGhlIGNvbnRlbnRzIG9mIHRoZQorICAgICAgICBzdHJpbmcgYnVpbGRlciBhcmUgY29waWVkOyBzdWJzZXF1ZW50IG1vZGlmaWNhdGlvbiBvZiB0aGUgc3RyaW5nIGJ1aWxkZXIKKyAgICAgICAgZG9lcyBub3QgYWZmZWN0IHRoZSBuZXdseSBjcmVhdGVkIHN0cmluZy4KKworICAgICAgICA8cD4gVGhpcyBjb25zdHJ1Y3RvciBpcyBwcm92aWRlZCB0byBlYXNlIG1pZ3JhdGlvbiB0byA8Y29kZT5TdHJpbmdCdWlsZGVyPC9jb2RlPi4gT2J0YWluaW5nIGEgc3RyaW5nIGZyb20gYSBzdHJpbmcgYnVpbGRlciB2aWEgdGhlIDxjb2RlPnRvU3RyaW5nPC9jb2RlPiBtZXRob2QgaXMgbGlrZWx5IHRvIHJ1biBmYXN0ZXIgYW5kIGlzIGdlbmVyYWxseSBwcmVmZXJyZWQuCisgICAgICAgIDxQPgorICAgICAgICA8REw+CisgICAgICAgICAgICA8RFQ+PEI+UGFyYW1ldGVyczo8L0I+PEREPjxDT0RFPmJ1aWxkZXI8L0NPREU+IC0gQSA8Y29kZT5TdHJpbmdCdWlsZGVyPC9jb2RlPjxEVD48Qj5TaW5jZTo8L0I+PC9EVD4KKyAgICAgICAgICAgIDxERD4xLjU8L0REPgorICAgICAgICA8L0RMPgorPC9ETD4KKworPCEtLSA9PT09PT09PT09PT0gTUVUSE9EIERFVEFJTCA9PT09PT09PT09IC0tPgorCis8QSBOQU1FPSJtZXRob2RfZGV0YWlsIj48IS0tIC0tPjwvQT4KKzxUQUJMRSBCT1JERVI9IjEiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+CisgICAgPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZUhlYWRpbmdDb2xvciI+CisgICAgICAgIDxUSCBBTElHTj0ibGVmdCIgQ09MU1BBTj0iMSI+PEZPTlQgU0laRT0iKzIiPgorICAgICAgICAgICAgPEI+TWV0aG9kIERldGFpbDwvQj48L0ZPTlQ+PC9USD4KKyAgICA8L1RSPgorPC9UQUJMRT4KKworPEEgTkFNRT0ibGVuZ3RoKCkiPjwhLS0gLS0+PC9BPjxIMz4KKyAgICBsZW5ndGg8L0gzPgorPFBSRT4KK3B1YmxpYyBpbnQgPEI+bGVuZ3RoPC9CPigpPC9QUkU+Cis8REw+CisgICAgPEREPlJldHVybnMgdGhlIGxlbmd0aCBvZiB0aGlzIHN0cmluZy4KKyAgICAgICAgVGhlIGxlbmd0aCBpcyBlcXVhbCB0byB0aGUgbnVtYmVyIG9mIDxhIGhyZWY9IkNoYXJhY3Rlci5odG1sI3VuaWNvZGUiPlVuaWNvZGUKKyAgICAgICAgICAgIGNvZGUgdW5pdHM8L2E+IGluIHRoZSBzdHJpbmcuCisgICAgICAgIDxQPgorICAgIDxERD48REw+CisgICAgICAgIDxEVD48Qj5TcGVjaWZpZWQgYnk6PC9CPjxERD48Q09ERT48QSBIUkVGPSIuLi8uLi9qYXZhL2xhbmcvQ2hhclNlcXVlbmNlLmh0bWwjbGVuZ3RoKCkiPmxlbmd0aDwvQT48L0NPREU+IGluIGludGVyZmFjZSA8Q09ERT48QSBIUkVGPSIuLi8uLi9qYXZhL2xhbmcvQ2hhclNlcXVlbmNlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gamF2YS5sYW5nIj5DaGFyU2VxdWVuY2U8L0E+PC9DT0RFPjwvREw+CisgICAgPC9ERD4KKyAgICA8REQ+PERMPgorCisgICAgICAgIDxEVD48Qj5SZXR1cm5zOjwvQj48REQ+dGhlIGxlbmd0aCBvZiB0aGUgc2VxdWVuY2Ugb2YgY2hhcmFjdGVycyByZXByZXNlbnRlZCBieSB0aGlzCisgICAgICAgIG9iamVjdC48L0RMPgorICAgIDwvREQ+Cis8L0RMPgorPEhSPgorCis8QSBOQU1FPSJpc0VtcHR5KCkiPjwhLS0gLS0+PC9BPjxIMz4KKyAgICBpc0VtcHR5PC9IMz4KKzxQUkU+CitwdWJsaWMgYm9vbGVhbiA8Qj5pc0VtcHR5PC9CPigpPC9QUkU+Cis8REw+CisgICAgPEREPlJldHVybnMgPHR0PnRydWU8L3R0PiBpZiwgYW5kIG9ubHkgaWYsIDxBIEhSRUY9Ii4uLy4uL2phdmEvbGFuZy9TdHJpbmcuaHRtbCNsZW5ndGgoKSI+PENPREU+bGVuZ3RoKCk8L0NPREU+PC9BPiBpcyA8dHQ+MDwvdHQ+LgorICAgICAgICA8UD4KKyAgICA8REQ+PERMPgorICAgIDwvREw+CisgICAgPC9ERD4KKyAgICA8REQ+PERMPgorCisgICAgICAgIDxEVD48Qj5SZXR1cm5zOjwvQj48REQ+PHR0PnRydWU8L3R0PiBpZiA8QSBIUkVGPSIuLi8uLi9qYXZhL2xhbmcvU3RyaW5nLmh0bWwjbGVuZ3RoKCkiPjxDT0RFPmxlbmd0aCgpPC9DT0RFPjwvQT4gaXMgPHR0PjA8L3R0Piwgb3RoZXJ3aXNlCisgICAgICAgIDx0dD5mYWxzZTwvdHQ+PERUPjxCPlNpbmNlOjwvQj48L0RUPgorICAgICAgICA8REQ+MS42PC9ERD4KKyAgICA8L0RMPgorICAgIDwvREQ+Cis8L0RMPgorPEhSPgorCis8QSBOQU1FPSJjaGFyQXQoaW50KSI+PCEtLSAtLT48L0E+PEgzPgorICAgIGNoYXJBdDwvSDM+Cis8UFJFPgorcHVibGljIGNoYXIgPEI+Y2hhckF0PC9CPihpbnQmbmJzcDtpbmRleCk8L1BSRT4KKzxETD4KKyAgICA8REQ+UmV0dXJucyB0aGUgPGNvZGU+Y2hhcjwvY29kZT4gdmFsdWUgYXQgdGhlCisgICAgICAgIHNwZWNpZmllZCBpbmRleC4gQW4gaW5kZXggcmFuZ2VzIGZyb20gPGNvZGU+MDwvY29kZT4gdG8KKyAgICAgICAgPGNvZGU+bGVuZ3RoKCkgLSAxPC9jb2RlPi4gVGhlIGZpcnN0IDxjb2RlPmNoYXI8L2NvZGU+IHZhbHVlIG9mIHRoZSBzZXF1ZW5jZQorICAgICAgICBpcyBhdCBpbmRleCA8Y29kZT4wPC9jb2RlPiwgdGhlIG5leHQgYXQgaW5kZXggPGNvZGU+MTwvY29kZT4sCisgICAgICAgIGFuZCBzbyBvbiwgYXMgZm9yIGFycmF5IGluZGV4aW5nLgorCisgICAgICAgIDxwPklmIHRoZSA8Y29kZT5jaGFyPC9jb2RlPiB2YWx1ZSBzcGVjaWZpZWQgYnkgdGhlIGluZGV4IGlzIGEKKyAgICAgICAgICAgIDxhIGhyZWY9IkNoYXJhY3Rlci5odG1sI3VuaWNvZGUiPnN1cnJvZ2F0ZTwvYT4sIHRoZSBzdXJyb2dhdGUKKyAgICAgICAgICAgIHZhbHVlIGlzIHJldHVybmVkLgorICAgICAgICA8UD4KKyAgICA8REQ+PERMPgorICAgICAgICA8RFQ+PEI+U3BlY2lmaWVkIGJ5OjwvQj48REQ+PENPREU+PEEgSFJFRj0iLi4vLi4vamF2YS9sYW5nL0NoYXJTZXF1ZW5jZS5odG1sI2NoYXJBdChpbnQpIj5jaGFyQXQ8L0E+PC9DT0RFPiBpbiBpbnRlcmZhY2UgPENPREU+PEEgSFJFRj0iLi4vLi4vamF2YS9sYW5nL0NoYXJTZXF1ZW5jZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIGphdmEubGFuZyI+Q2hhclNlcXVlbmNlPC9BPjwvQ09ERT48L0RMPgorICAgIDwvREQ+CisgICAgPEREPjxETD4KKyAgICAgICAgPERUPjxCPlBhcmFtZXRlcnM6PC9CPjxERD48Q09ERT5pbmRleDwvQ09ERT4gLSB0aGUgaW5kZXggb2YgdGhlIDxjb2RlPmNoYXI8L2NvZGU+IHZhbHVlLgorICAgICAgICA8RFQ+PEI+UmV0dXJuczo8L0I+PEREPnRoZSA8Y29kZT5jaGFyPC9jb2RlPiB2YWx1ZSBhdCB0aGUgc3BlY2lmaWVkIGluZGV4IG9mIHRoaXMgc3RyaW5nLgorICAgICAgICBUaGUgZmlyc3QgPGNvZGU+Y2hhcjwvY29kZT4gdmFsdWUgaXMgYXQgaW5kZXggPGNvZGU+MDwvY29kZT4uCisgICAgICAgIDxEVD48Qj5UaHJvd3M6PC9CPgorICAgICAgICA8REQ+PENPREU+PEEgSFJFRj0iLi4vLi4vamF2YS9sYW5nL0luZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb24uaHRtbCIgdGl0bGU9ImNsYXNzIGluIGphdmEubGFuZyI+SW5kZXhPdXRPZkJvdW5kc0V4Y2VwdGlvbjwvQT48L0NPREU+IC0gaWYgdGhlIDxjb2RlPmluZGV4PC9jb2RlPgorICAgICAgICAgICAgYXJndW1lbnQgaXMgbmVnYXRpdmUgb3Igbm90IGxlc3MgdGhhbiB0aGUgbGVuZ3RoIG9mIHRoaXMKKyAgICAgICAgICAgIHN0cmluZy48L0RMPgorICAgIDwvREQ+Cis8L0RMPgorPEhSPgorCis8QSBOQU1FPSJjb2RlUG9pbnRBdChpbnQpIj48IS0tIC0tPjwvQT48SDM+CisgICAgY29kZVBvaW50QXQ8L0gzPgorPFBSRT4KK3B1YmxpYyBpbnQgPEI+Y29kZVBvaW50QXQ8L0I+KGludCZuYnNwO2luZGV4KTwvUFJFPgorPERMPgorICAgIDxERD5SZXR1cm5zIHRoZSBjaGFyYWN0ZXIgKFVuaWNvZGUgY29kZSBwb2ludCkgYXQgdGhlIHNwZWNpZmllZAorICAgICAgICBpbmRleC4gVGhlIGluZGV4IHJlZmVycyB0byA8Y29kZT5jaGFyPC9jb2RlPiB2YWx1ZXMKKyAgICAgICAgKFVuaWNvZGUgY29kZSB1bml0cykgYW5kIHJhbmdlcyBmcm9tIDxjb2RlPjA8L2NvZGU+IHRvCisgICAgICAgIDxBIEhSRUY9Ii4uLy4uL2phdmEvbGFuZy9TdHJpbmcuaHRtbCNsZW5ndGgoKSI+PENPREU+bGVuZ3RoKCk8L0NPREU+PC9BPjxjb2RlPiAtIDE8L2NvZGU+LgorCisgICAgICAgIDxwPiBJZiB0aGUgPGNvZGU+Y2hhcjwvY29kZT4gdmFsdWUgc3BlY2lmaWVkIGF0IHRoZSBnaXZlbiBpbmRleAorICAgICAgICAgICAgaXMgaW4gdGhlIGhpZ2gtc3Vycm9nYXRlIHJhbmdlLCB0aGUgZm9sbG93aW5nIGluZGV4IGlzIGxlc3MKKyAgICAgICAgICAgIHRoYW4gdGhlIGxlbmd0aCBvZiB0aGlzIDxjb2RlPlN0cmluZzwvY29kZT4sIGFuZCB0aGUKKyAgICAgICAgICAgIDxjb2RlPmNoYXI8L2NvZGU+IHZhbHVlIGF0IHRoZSBmb2xsb3dpbmcgaW5kZXggaXMgaW4gdGhlCisgICAgICAgICAgICBsb3ctc3Vycm9nYXRlIHJhbmdlLCB0aGVuIHRoZSBzdXBwbGVtZW50YXJ5IGNvZGUgcG9pbnQKKyAgICAgICAgICAgIGNvcnJlc3BvbmRpbmcgdG8gdGhpcyBzdXJyb2dhdGUgcGFpciBpcyByZXR1cm5lZC4gT3RoZXJ3aXNlLAorICAgICAgICAgICAgdGhlIDxjb2RlPmNoYXI8L2NvZGU+IHZhbHVlIGF0IHRoZSBnaXZlbiBpbmRleCBpcyByZXR1cm5lZC4KKyAgICAgICAgPFA+CisgICAgPEREPjxETD4KKyAgICA8L0RMPgorICAgIDwvREQ+CisgICAgPEREPjxETD4KKyAgICAgICAgPERUPjxCPlBhcmFtZXRlcnM6PC9CPjxERD48Q09ERT5pbmRleDwvQ09ERT4gLSB0aGUgaW5kZXggdG8gdGhlIDxjb2RlPmNoYXI8L2NvZGU+IHZhbHVlcworICAgICAgICA8RFQ+PEI+UmV0dXJuczo8L0I+PEREPnRoZSBjb2RlIHBvaW50IHZhbHVlIG9mIHRoZSBjaGFyYWN0ZXIgYXQgdGhlCisgICAgICAgIDxjb2RlPmluZGV4PC9jb2RlPgorICAgICAgICA8RFQ+PEI+VGhyb3dzOjwvQj4KKyAgICAgICAgPEREPjxDT0RFPjxBIEhSRUY9Ii4uLy4uL2phdmEvbGFuZy9JbmRleE91dE9mQm91bmRzRXhjZXB0aW9uLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBqYXZhLmxhbmciPkluZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb248L0E+PC9DT0RFPiAtIGlmIHRoZSA8Y29kZT5pbmRleDwvY29kZT4KKyAgICAgICAgICAgIGFyZ3VtZW50IGlzIG5lZ2F0aXZlIG9yIG5vdCBsZXNzIHRoYW4gdGhlIGxlbmd0aCBvZiB0aGlzCisgICAgICAgICAgICBzdHJpbmcuPERUPjxCPlNpbmNlOjwvQj48L0RUPgorICAgICAgICA8REQ+MS41PC9ERD4KKyAgICA8L0RMPgorICAgIDwvREQ+Cis8L0RMPgorPEhSPgorCis8QSBOQU1FPSJjb2RlUG9pbnRCZWZvcmUoaW50KSI+PCEtLSAtLT48L0E+PEgzPgorICAgIGNvZGVQb2ludEJlZm9yZTwvSDM+Cis8UFJFPgorcHVibGljIGludCA8Qj5jb2RlUG9pbnRCZWZvcmU8L0I+KGludCZuYnNwO2luZGV4KTwvUFJFPgorPERMPgorICAgIDxERD5SZXR1cm5zIHRoZSBjaGFyYWN0ZXIgKFVuaWNvZGUgY29kZSBwb2ludCkgYmVmb3JlIHRoZSBzcGVjaWZpZWQKKyAgICAgICAgaW5kZXguIFRoZSBpbmRleCByZWZlcnMgdG8gPGNvZGU+Y2hhcjwvY29kZT4gdmFsdWVzCisgICAgICAgIChVbmljb2RlIGNvZGUgdW5pdHMpIGFuZCByYW5nZXMgZnJvbSA8Y29kZT4xPC9jb2RlPiB0byA8QSBIUkVGPSIuLi8uLi9qYXZhL2xhbmcvQ2hhclNlcXVlbmNlLmh0bWwjbGVuZ3RoKCkiPjxDT0RFPmxlbmd0aDwvQ09ERT48L0E+LgorCisgICAgICAgIDxwPiBJZiB0aGUgPGNvZGU+Y2hhcjwvY29kZT4gdmFsdWUgYXQgPGNvZGU+KGluZGV4IC0gMSk8L2NvZGU+CisgICAgICAgICAgICBpcyBpbiB0aGUgbG93LXN1cnJvZ2F0ZSByYW5nZSwgPGNvZGU+KGluZGV4IC0gMik8L2NvZGU+IGlzIG5vdAorICAgICAgICAgICAgbmVnYXRpdmUsIGFuZCB0aGUgPGNvZGU+Y2hhcjwvY29kZT4gdmFsdWUgYXQgPGNvZGU+KGluZGV4IC0KKyAgICAgICAgICAgICAgICAyKTwvY29kZT4gaXMgaW4gdGhlIGhpZ2gtc3Vycm9nYXRlIHJhbmdlLCB0aGVuIHRoZQorICAgICAgICAgICAgc3VwcGxlbWVudGFyeSBjb2RlIHBvaW50IHZhbHVlIG9mIHRoZSBzdXJyb2dhdGUgcGFpciBpcworICAgICAgICAgICAgcmV0dXJuZWQuIElmIHRoZSA8Y29kZT5jaGFyPC9jb2RlPiB2YWx1ZSBhdCA8Y29kZT5pbmRleCAtCisgICAgICAgICAgICAgICAgMTwvY29kZT4gaXMgYW4gdW5wYWlyZWQgbG93LXN1cnJvZ2F0ZSBvciBhIGhpZ2gtc3Vycm9nYXRlLCB0aGUKKyAgICAgICAgICAgIHN1cnJvZ2F0ZSB2YWx1ZSBpcyByZXR1cm5lZC4KKyAgICAgICAgPFA+CisgICAgPEREPjxETD4KKyAgICA8L0RMPgorICAgIDwvREQ+CisgICAgPEREPjxETD4KKyAgICAgICAgPERUPjxCPlBhcmFtZXRlcnM6PC9CPjxERD48Q09ERT5pbmRleDwvQ09ERT4gLSB0aGUgaW5kZXggZm9sbG93aW5nIHRoZSBjb2RlIHBvaW50IHRoYXQgc2hvdWxkIGJlIHJldHVybmVkCisgICAgICAgIDxEVD48Qj5SZXR1cm5zOjwvQj48REQ+dGhlIFVuaWNvZGUgY29kZSBwb2ludCB2YWx1ZSBiZWZvcmUgdGhlIGdpdmVuIGluZGV4LgorICAgICAgICA8RFQ+PEI+VGhyb3dzOjwvQj4KKyAgICAgICAgPEREPjxDT0RFPjxBIEhSRUY9Ii4uLy4uL2phdmEvbGFuZy9JbmRleE91dE9mQm91bmRzRXhjZXB0aW9uLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBqYXZhLmxhbmciPkluZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb248L0E+PC9DT0RFPiAtIGlmIHRoZSA8Y29kZT5pbmRleDwvY29kZT4KKyAgICAgICAgICAgIGFyZ3VtZW50IGlzIGxlc3MgdGhhbiAxIG9yIGdyZWF0ZXIgdGhhbiB0aGUgbGVuZ3RoCisgICAgICAgICAgICBvZiB0aGlzIHN0cmluZy48RFQ+PEI+U2luY2U6PC9CPjwvRFQ+CisgICAgICAgIDxERD4xLjU8L0REPgorICAgIDwvREw+CisgICAgPC9ERD4KKzwvREw+Cis8SFI+CisKKzxBIE5BTUU9ImNvZGVQb2ludENvdW50KGludCwgaW50KSI+PCEtLSAtLT48L0E+PEgzPgorICAgIGNvZGVQb2ludENvdW50PC9IMz4KKzxQUkU+CitwdWJsaWMgaW50IDxCPmNvZGVQb2ludENvdW50PC9CPihpbnQmbmJzcDtiZWdpbkluZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQmbmJzcDtlbmRJbmRleCk8L1BSRT4KKzxETD4KKyAgICA8REQ+UmV0dXJucyB0aGUgbnVtYmVyIG9mIFVuaWNvZGUgY29kZSBwb2ludHMgaW4gdGhlIHNwZWNpZmllZCB0ZXh0CisgICAgICAgIHJhbmdlIG9mIHRoaXMgPGNvZGU+U3RyaW5nPC9jb2RlPi4gVGhlIHRleHQgcmFuZ2UgYmVnaW5zIGF0IHRoZQorICAgICAgICBzcGVjaWZpZWQgPGNvZGU+YmVnaW5JbmRleDwvY29kZT4gYW5kIGV4dGVuZHMgdG8gdGhlCisgICAgICAgIDxjb2RlPmNoYXI8L2NvZGU+IGF0IGluZGV4IDxjb2RlPmVuZEluZGV4IC0gMTwvY29kZT4uIFRodXMgdGhlCisgICAgICAgIGxlbmd0aCAoaW4gPGNvZGU+Y2hhcjwvY29kZT5zKSBvZiB0aGUgdGV4dCByYW5nZSBpcworICAgICAgICA8Y29kZT5lbmRJbmRleC1iZWdpbkluZGV4PC9jb2RlPi4gVW5wYWlyZWQgc3Vycm9nYXRlcyB3aXRoaW4KKyAgICAgICAgdGhlIHRleHQgcmFuZ2UgY291bnQgYXMgb25lIGNvZGUgcG9pbnQgZWFjaC4KKyAgICAgICAgPFA+CisgICAgPEREPjxETD4KKyAgICA8L0RMPgorICAgIDwvREQ+CisgICAgPEREPjxETD4KKyAgICAgICAgPERUPjxCPlBhcmFtZXRlcnM6PC9CPjxERD48Q09ERT5iZWdpbkluZGV4PC9DT0RFPiAtIHRoZSBpbmRleCB0byB0aGUgZmlyc3QgPGNvZGU+Y2hhcjwvY29kZT4gb2YKKyAgICAgICAgdGhlIHRleHQgcmFuZ2UuPEREPjxDT0RFPmVuZEluZGV4PC9DT0RFPiAtIHRoZSBpbmRleCBhZnRlciB0aGUgbGFzdCA8Y29kZT5jaGFyPC9jb2RlPiBvZgorICAgICAgICB0aGUgdGV4dCByYW5nZS4KKyAgICAgICAgPERUPjxCPlJldHVybnM6PC9CPjxERD50aGUgbnVtYmVyIG9mIFVuaWNvZGUgY29kZSBwb2ludHMgaW4gdGhlIHNwZWNpZmllZCB0ZXh0CisgICAgICAgIHJhbmdlCisgICAgICAgIDxEVD48Qj5UaHJvd3M6PC9CPgorICAgICAgICA8REQ+PENPREU+PEEgSFJFRj0iLi4vLi4vamF2YS9sYW5nL0luZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb24uaHRtbCIgdGl0bGU9ImNsYXNzIGluIGphdmEubGFuZyI+SW5kZXhPdXRPZkJvdW5kc0V4Y2VwdGlvbjwvQT48L0NPREU+IC0gaWYgdGhlCisgICAgICAgICAgICA8Y29kZT5iZWdpbkluZGV4PC9jb2RlPiBpcyBuZWdhdGl2ZSwgb3IgPGNvZGU+ZW5kSW5kZXg8L2NvZGU+CisgICAgICAgICAgICBpcyBsYXJnZXIgdGhhbiB0aGUgbGVuZ3RoIG9mIHRoaXMgPGNvZGU+U3RyaW5nPC9jb2RlPiwgb3IKKyAgICAgICAgICAgIDxjb2RlPmJlZ2luSW5kZXg8L2NvZGU+IGlzIGxhcmdlciB0aGFuIDxjb2RlPmVuZEluZGV4PC9jb2RlPi48RFQ+PEI+U2luY2U6PC9CPjwvRFQ+CisgICAgICAgIDxERD4xLjU8L0REPgorICAgIDwvREw+CisgICAgPC9ERD4KKzwvREw+Cis8SFI+CisKKzxBIE5BTUU9Im9mZnNldEJ5Q29kZVBvaW50cyhpbnQsIGludCkiPjwhLS0gLS0+PC9BPjxIMz4KKyAgICBvZmZzZXRCeUNvZGVQb2ludHM8L0gzPgorPFBSRT4KK3B1YmxpYyBpbnQgPEI+b2Zmc2V0QnlDb2RlUG9pbnRzPC9CPihpbnQmbmJzcDtpbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCZuYnNwO2NvZGVQb2ludE9mZnNldCk8L1BSRT4KKzxETD4KKyAgICA8REQ+UmV0dXJucyB0aGUgaW5kZXggd2l0aGluIHRoaXMgPGNvZGU+U3RyaW5nPC9jb2RlPiB0aGF0IGlzCisgICAgICAgIG9mZnNldCBmcm9tIHRoZSBnaXZlbiA8Y29kZT5pbmRleDwvY29kZT4gYnkKKyAgICAgICAgPGNvZGU+Y29kZVBvaW50T2Zmc2V0PC9jb2RlPiBjb2RlIHBvaW50cy4gVW5wYWlyZWQgc3Vycm9nYXRlcworICAgICAgICB3aXRoaW4gdGhlIHRleHQgcmFuZ2UgZ2l2ZW4gYnkgPGNvZGU+aW5kZXg8L2NvZGU+IGFuZAorICAgICAgICA8Y29kZT5jb2RlUG9pbnRPZmZzZXQ8L2NvZGU+IGNvdW50IGFzIG9uZSBjb2RlIHBvaW50IGVhY2guCisgICAgICAgIDxQPgorICAgIDxERD48REw+CisgICAgPC9ETD4KKyAgICA8L0REPgorICAgIDxERD48REw+CisgICAgICAgIDxEVD48Qj5QYXJhbWV0ZXJzOjwvQj48REQ+PENPREU+aW5kZXg8L0NPREU+IC0gdGhlIGluZGV4IHRvIGJlIG9mZnNldDxERD48Q09ERT5jb2RlUG9pbnRPZmZzZXQ8L0NPREU+IC0gdGhlIG9mZnNldCBpbiBjb2RlIHBvaW50cworICAgICAgICA8RFQ+PEI+UmV0dXJuczo8L0I+PEREPnRoZSBpbmRleCB3aXRoaW4gdGhpcyA8Y29kZT5TdHJpbmc8L2NvZGU+CisgICAgICAgIDxEVD48Qj5UaHJvd3M6PC9CPgorICAgICAgICA8REQ+PENPREU+PEEgSFJFRj0iLi4vLi4vamF2YS9sYW5nL0luZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb24uaHRtbCIgdGl0bGU9ImNsYXNzIGluIGphdmEubGFuZyI+SW5kZXhPdXRPZkJvdW5kc0V4Y2VwdGlvbjwvQT48L0NPREU+IC0gaWYgPGNvZGU+aW5kZXg8L2NvZGU+CisgICAgICAgICAgICBpcyBuZWdhdGl2ZSBvciBsYXJnZXIgdGhlbiB0aGUgbGVuZ3RoIG9mIHRoaXMKKyAgICAgICAgICAgIDxjb2RlPlN0cmluZzwvY29kZT4sIG9yIGlmIDxjb2RlPmNvZGVQb2ludE9mZnNldDwvY29kZT4gaXMgcG9zaXRpdmUKKyAgICAgICAgICAgIGFuZCB0aGUgc3Vic3RyaW5nIHN0YXJ0aW5nIHdpdGggPGNvZGU+aW5kZXg8L2NvZGU+IGhhcyBmZXdlcgorICAgICAgICAgICAgdGhhbiA8Y29kZT5jb2RlUG9pbnRPZmZzZXQ8L2NvZGU+IGNvZGUgcG9pbnRzLAorICAgICAgICAgICAgb3IgaWYgPGNvZGU+Y29kZVBvaW50T2Zmc2V0PC9jb2RlPiBpcyBuZWdhdGl2ZSBhbmQgdGhlIHN1YnN0cmluZworICAgICAgICAgICAgYmVmb3JlIDxjb2RlPmluZGV4PC9jb2RlPiBoYXMgZmV3ZXIgdGhhbiB0aGUgYWJzb2x1dGUgdmFsdWUKKyAgICAgICAgICAgIG9mIDxjb2RlPmNvZGVQb2ludE9mZnNldDwvY29kZT4gY29kZSBwb2ludHMuPERUPjxCPlNpbmNlOjwvQj48L0RUPgorICAgICAgICA8REQ+MS41PC9ERD4KKyAgICA8L0RMPgorICAgIDwvREQ+Cis8L0RMPgorPEhSPgorCis8QSBOQU1FPSJnZXRDaGFycyhpbnQsIGludCwgY2hhcltdLCBpbnQpIj48IS0tIC0tPjwvQT48SDM+CisgICAgZ2V0Q2hhcnM8L0gzPgorPFBSRT4KK3B1YmxpYyB2b2lkIDxCPmdldENoYXJzPC9CPihpbnQmbmJzcDtzcmNCZWdpbiwKKyAgICAgICAgICAgICAgICAgICAgIGludCZuYnNwO3NyY0VuZCwKKyAgICAgICAgICAgICAgICAgICAgIGNoYXJbXSZuYnNwO2RzdCwKKyAgICAgICAgICAgICAgICAgICAgIGludCZuYnNwO2RzdEJlZ2luKTwvUFJFPgorPERMPgorICAgIDxERD5Db3BpZXMgY2hhcmFjdGVycyBmcm9tIHRoaXMgc3RyaW5nIGludG8gdGhlIGRlc3RpbmF0aW9uIGNoYXJhY3RlcgorICAgICAgICBhcnJheS4KKyAgICAgICAgPHA+CisgICAgICAgICAgICBUaGUgZmlyc3QgY2hhcmFjdGVyIHRvIGJlIGNvcGllZCBpcyBhdCBpbmRleCA8Y29kZT5zcmNCZWdpbjwvY29kZT47CisgICAgICAgICAgICB0aGUgbGFzdCBjaGFyYWN0ZXIgdG8gYmUgY29waWVkIGlzIGF0IGluZGV4IDxjb2RlPnNyY0VuZC0xPC9jb2RlPgorICAgICAgICAgICAgKHRodXMgdGhlIHRvdGFsIG51bWJlciBvZiBjaGFyYWN0ZXJzIHRvIGJlIGNvcGllZCBpcworICAgICAgICAgICAgPGNvZGU+c3JjRW5kLXNyY0JlZ2luPC9jb2RlPikuIFRoZSBjaGFyYWN0ZXJzIGFyZSBjb3BpZWQgaW50byB0aGUKKyAgICAgICAgICAgIHN1YmFycmF5IG9mIDxjb2RlPmRzdDwvY29kZT4gc3RhcnRpbmcgYXQgaW5kZXggPGNvZGU+ZHN0QmVnaW48L2NvZGU+CisgICAgICAgICAgICBhbmQgZW5kaW5nIGF0IGluZGV4OgorICAgICAgICA8cD48YmxvY2txdW90ZT48cHJlPgorICAgICBkc3RiZWdpbiArIChzcmNFbmQtc3JjQmVnaW4pIC0gMQorIDwvcHJlPjwvYmxvY2txdW90ZT4KKyAgICAgICAgPFA+CisgICAgPEREPjxETD4KKyAgICA8L0RMPgorICAgIDwvREQ+CisgICAgPEREPjxETD4KKyAgICAgICAgPERUPjxCPlBhcmFtZXRlcnM6PC9CPjxERD48Q09ERT5zcmNCZWdpbjwvQ09ERT4gLSBpbmRleCBvZiB0aGUgZmlyc3QgY2hhcmFjdGVyIGluIHRoZSBzdHJpbmcKKyAgICAgICAgdG8gY29weS48REQ+PENPREU+c3JjRW5kPC9DT0RFPiAtIGluZGV4IGFmdGVyIHRoZSBsYXN0IGNoYXJhY3RlciBpbiB0aGUgc3RyaW5nCisgICAgICAgIHRvIGNvcHkuPEREPjxDT0RFPmRzdDwvQ09ERT4gLSB0aGUgZGVzdGluYXRpb24gYXJyYXkuPEREPjxDT0RFPmRzdEJlZ2luPC9DT0RFPiAtIHRoZSBzdGFydCBvZmZzZXQgaW4gdGhlIGRlc3RpbmF0aW9uIGFycmF5LgorICAgICAgICA8RFQ+PEI+VGhyb3dzOjwvQj4KKyAgICAgICAgPEREPjxDT0RFPjxBIEhSRUY9Ii4uLy4uL2phdmEvbGFuZy9JbmRleE91dE9mQm91bmRzRXhjZXB0aW9uLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBqYXZhLmxhbmciPkluZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb248L0E+PC9DT0RFPiAtIElmIGFueSBvZiB0aGUgZm9sbG93aW5nCisgICAgICAgICAgICBpcyB0cnVlOgorICAgICAgICAgICAgPHVsPjxsaT48Y29kZT5zcmNCZWdpbjwvY29kZT4gaXMgbmVnYXRpdmUuCisgICAgICAgICAgICAgICAgPGxpPjxjb2RlPnNyY0JlZ2luPC9jb2RlPiBpcyBncmVhdGVyIHRoYW4gPGNvZGU+c3JjRW5kPC9jb2RlPgorICAgICAgICAgICAgICAgIDxsaT48Y29kZT5zcmNFbmQ8L2NvZGU+IGlzIGdyZWF0ZXIgdGhhbiB0aGUgbGVuZ3RoIG9mIHRoaXMKKyAgICAgICAgICAgICAgICAgICAgc3RyaW5nCisgICAgICAgICAgICAgICAgPGxpPjxjb2RlPmRzdEJlZ2luPC9jb2RlPiBpcyBuZWdhdGl2ZQorICAgICAgICAgICAgICAgIDxsaT48Y29kZT5kc3RCZWdpbisoc3JjRW5kLXNyY0JlZ2luKTwvY29kZT4gaXMgbGFyZ2VyIHRoYW4KKyAgICAgICAgICAgICAgICAgICAgPGNvZGU+ZHN0Lmxlbmd0aDwvY29kZT48L3VsPjwvREw+CisgICAgPC9ERD4KKzwvREw+Cis8SFI+CisKKzxBIE5BTUU9ImdldEJ5dGVzKGludCwgaW50LCBieXRlW10sIGludCkiPjwhLS0gLS0+PC9BPjxIMz4KKyAgICBnZXRCeXRlczwvSDM+Cis8UFJFPgorPEZPTlQgU0laRT0iLTEiPjxBIEhSRUY9Ii4uLy4uL2phdmEvbGFuZy9EZXByZWNhdGVkLmh0bWwiIHRpdGxlPSJhbm5vdGF0aW9uIGluIGphdmEubGFuZyI+QERlcHJlY2F0ZWQ8L0E+Cis8L0ZPTlQ+cHVibGljIHZvaWQgPEI+Z2V0Qnl0ZXM8L0I+KGludCZuYnNwO3NyY0JlZ2luLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQmbmJzcDtzcmNFbmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ5dGVbXSZuYnNwO2RzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50Jm5ic3A7ZHN0QmVnaW4pPC9QUkU+Cis8REw+CisgICAgPEREPjxCPkRlcHJlY2F0ZWQuPC9CPiZuYnNwOzxJPlRoaXMgbWV0aG9kIGRvZXMgbm90IHByb3Blcmx5IGNvbnZlcnQgY2hhcmFjdGVycyBpbnRvCisgICAgICAgIGJ5dGVzLiAgQXMgb2YgSkRLJm5ic3A7MS4xLCB0aGUgcHJlZmVycmVkIHdheSB0byBkbyB0aGlzIGlzIHZpYSB0aGUKKyAgICAgICAgPEEgSFJFRj0iLi4vLi4vamF2YS9sYW5nL1N0cmluZy5odG1sI2dldEJ5dGVzKCkiPjxDT0RFPmdldEJ5dGVzKCk8L0NPREU+PC9BPiBtZXRob2QsIHdoaWNoIHVzZXMgdGhlIHBsYXRmb3JtJ3MgZGVmYXVsdCBjaGFyc2V0LjwvST4KKyAgICAgICAgPFA+CisgICAgICAgICAgICA8REQ+Q29waWVzIGNoYXJhY3RlcnMgZnJvbSB0aGlzIHN0cmluZyBpbnRvIHRoZSBkZXN0aW5hdGlvbiBieXRlIGFycmF5LiBFYWNoCisgICAgICAgICAgICAgICAgYnl0ZSByZWNlaXZlcyB0aGUgOCBsb3ctb3JkZXIgYml0cyBvZiB0aGUgY29ycmVzcG9uZGluZyBjaGFyYWN0ZXIuIFRoZQorICAgICAgICAgICAgICAgIGVpZ2h0IGhpZ2gtb3JkZXIgYml0cyBvZiBlYWNoIGNoYXJhY3RlciBhcmUgbm90IGNvcGllZCBhbmQgZG8gbm90CisgICAgICAgICAgICAgICAgcGFydGljaXBhdGUgaW4gdGhlIHRyYW5zZmVyIGluIGFueSB3YXkuCisKKyAgICAgICAgPHA+IFRoZSBmaXJzdCBjaGFyYWN0ZXIgdG8gYmUgY29waWVkIGlzIGF0IGluZGV4IDxjb2RlPnNyY0JlZ2luPC9jb2RlPjsgdGhlCisgICAgICAgICAgICBsYXN0IGNoYXJhY3RlciB0byBiZSBjb3BpZWQgaXMgYXQgaW5kZXggPGNvZGU+c3JjRW5kLTE8L2NvZGU+LiAgVGhlIHRvdGFsCisgICAgICAgICAgICBudW1iZXIgb2YgY2hhcmFjdGVycyB0byBiZSBjb3BpZWQgaXMgPGNvZGU+c3JjRW5kLXNyY0JlZ2luPC9jb2RlPi4gVGhlCisgICAgICAgICAgICBjaGFyYWN0ZXJzLCBjb252ZXJ0ZWQgdG8gYnl0ZXMsIGFyZSBjb3BpZWQgaW50byB0aGUgc3ViYXJyYXkgb2YgPGNvZGU+ZHN0PC9jb2RlPiBzdGFydGluZyBhdCBpbmRleCA8Y29kZT5kc3RCZWdpbjwvY29kZT4gYW5kIGVuZGluZyBhdCBpbmRleDoKKworICAgICAgICA8YmxvY2txdW90ZT48cHJlPgorICAgICBkc3RiZWdpbiArIChzcmNFbmQtc3JjQmVnaW4pIC0gMQorIDwvcHJlPjwvYmxvY2txdW90ZT4KKyAgICAgICAgPFA+CisgICAgPEREPjxETD4KKyAgICA8L0RMPgorICAgIDwvREQ+CisgICAgPEREPjxETD4KKyAgICAgICAgPERUPjxCPlBhcmFtZXRlcnM6PC9CPjxERD48Q09ERT5zcmNCZWdpbjwvQ09ERT4gLSBJbmRleCBvZiB0aGUgZmlyc3QgY2hhcmFjdGVyIGluIHRoZSBzdHJpbmcgdG8gY29weTxERD48Q09ERT5zcmNFbmQ8L0NPREU+IC0gSW5kZXggYWZ0ZXIgdGhlIGxhc3QgY2hhcmFjdGVyIGluIHRoZSBzdHJpbmcgdG8gY29weTxERD48Q09ERT5kc3Q8L0NPREU+IC0gVGhlIGRlc3RpbmF0aW9uIGFycmF5PEREPjxDT0RFPmRzdEJlZ2luPC9DT0RFPiAtIFRoZSBzdGFydCBvZmZzZXQgaW4gdGhlIGRlc3RpbmF0aW9uIGFycmF5CisgICAgICAgIDxEVD48Qj5UaHJvd3M6PC9CPgorICAgICAgICA8REQ+PENPREU+PEEgSFJFRj0iLi4vLi4vamF2YS9sYW5nL0luZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb24uaHRtbCIgdGl0bGU9ImNsYXNzIGluIGphdmEubGFuZyI+SW5kZXhPdXRPZkJvdW5kc0V4Y2VwdGlvbjwvQT48L0NPREU+IC0gSWYgYW55IG9mIHRoZSBmb2xsb3dpbmcgaXMgdHJ1ZToKKyAgICAgICAgICAgIDx1bD4KKyAgICAgICAgICAgICAgICA8bGk+IDxjb2RlPnNyY0JlZ2luPC9jb2RlPiBpcyBuZWdhdGl2ZQorICAgICAgICAgICAgICAgIDxsaT4gPGNvZGU+c3JjQmVnaW48L2NvZGU+IGlzIGdyZWF0ZXIgdGhhbiA8Y29kZT5zcmNFbmQ8L2NvZGU+CisgICAgICAgICAgICAgICAgPGxpPiA8Y29kZT5zcmNFbmQ8L2NvZGU+IGlzIGdyZWF0ZXIgdGhhbiB0aGUgbGVuZ3RoIG9mIHRoaXMgU3RyaW5nCisgICAgICAgICAgICAgICAgPGxpPiA8Y29kZT5kc3RCZWdpbjwvY29kZT4gaXMgbmVnYXRpdmUKKyAgICAgICAgICAgICAgICA8bGk+IDxjb2RlPmRzdEJlZ2luKyhzcmNFbmQtc3JjQmVnaW4pPC9jb2RlPiBpcyBsYXJnZXIgdGhhbiA8Y29kZT5kc3QubGVuZ3RoPC9jb2RlPgorICAgICAgICAgICAgPC91bD48L0RMPgorICAgIDwvREQ+Cis8L0RMPgorPEhSPgorCis8QSBOQU1FPSJnZXRCeXRlcyhqYXZhLmxhbmcuU3RyaW5nKSI+PCEtLSAtLT48L0E+PEgzPgorICAgIGdldEJ5dGVzPC9IMz4KKzxQUkU+CitwdWJsaWMgYnl0ZVtdIDxCPmdldEJ5dGVzPC9CPig8QSBIUkVGPSIuLi8uLi9qYXZhL2xhbmcvU3RyaW5nLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBqYXZhLmxhbmciPlN0cmluZzwvQT4mbmJzcDtjaGFyc2V0TmFtZSkKKyAgICAgICAgICAgICAgICB0aHJvd3MgPEEgSFJFRj0iLi4vLi4vamF2YS9pby9VbnN1cHBvcnRlZEVuY29kaW5nRXhjZXB0aW9uLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBqYXZhLmlvIj5VbnN1cHBvcnRlZEVuY29kaW5nRXhjZXB0aW9uPC9BPjwvUFJFPgorPERMPgorICAgIDxERD5FbmNvZGVzIHRoaXMgPGNvZGU+U3RyaW5nPC9jb2RlPiBpbnRvIGEgc2VxdWVuY2Ugb2YgYnl0ZXMgdXNpbmcgdGhlIG5hbWVkCisgICAgICAgIGNoYXJzZXQsIHN0b3JpbmcgdGhlIHJlc3VsdCBpbnRvIGEgbmV3IGJ5dGUgYXJyYXkuCisKKyAgICAgICAgPHA+IFRoZSBiZWhhdmlvciBvZiB0aGlzIG1ldGhvZCB3aGVuIHRoaXMgc3RyaW5nIGNhbm5vdCBiZSBlbmNvZGVkIGluCisgICAgICAgICAgICB0aGUgZ2l2ZW4gY2hhcnNldCBpcyB1bnNwZWNpZmllZC4gIFRoZSA8QSBIUkVGPSIuLi8uLi9qYXZhL25pby9jaGFyc2V0L0NoYXJzZXRFbmNvZGVyLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBqYXZhLm5pby5jaGFyc2V0Ij48Q09ERT5DaGFyc2V0RW5jb2RlcjwvQ09ERT48L0E+IGNsYXNzIHNob3VsZCBiZSB1c2VkIHdoZW4gbW9yZSBjb250cm9sCisgICAgICAgICAgICBvdmVyIHRoZSBlbmNvZGluZyBwcm9jZXNzIGlzIHJlcXVpcmVkLgorICAgICAgICA8UD4KKyAgICA8REQ+PERMPgorICAgIDwvREw+CisgICAgPC9ERD4KKyAgICA8REQ+PERMPgorICAgICAgICA8RFQ+PEI+UGFyYW1ldGVyczo8L0I+PEREPjxDT0RFPmNoYXJzZXROYW1lPC9DT0RFPiAtIFRoZSBuYW1lIG9mIGEgc3VwcG9ydGVkIDxBIEhSRUY9Ii4uLy4uL2phdmEvbmlvL2NoYXJzZXQvQ2hhcnNldC5odG1sIiB0aXRsZT0iY2xhc3MgaW4gamF2YS5uaW8uY2hhcnNldCI+Y2hhcnNldDwvQT4KKyAgICAgICAgPERUPjxCPlJldHVybnM6PC9CPjxERD5UaGUgcmVzdWx0YW50IGJ5dGUgYXJyYXkKKyAgICAgICAgPERUPjxCPlRocm93czo8L0I+CisgICAgICAgIDxERD48Q09ERT48QSBIUkVGPSIuLi8uLi9qYXZhL2lvL1Vuc3VwcG9ydGVkRW5jb2RpbmdFeGNlcHRpb24uaHRtbCIgdGl0bGU9ImNsYXNzIGluIGphdmEuaW8iPlVuc3VwcG9ydGVkRW5jb2RpbmdFeGNlcHRpb248L0E+PC9DT0RFPiAtIElmIHRoZSBuYW1lZCBjaGFyc2V0IGlzIG5vdCBzdXBwb3J0ZWQ8RFQ+PEI+U2luY2U6PC9CPjwvRFQ+CisgICAgICAgIDxERD5KREsxLjE8L0REPgorICAgIDwvREw+CisgICAgPC9ERD4KKzwvREw+Cis8SFI+CisKKzxBIE5BTUU9ImdldEJ5dGVzKGphdmEubmlvLmNoYXJzZXQuQ2hhcnNldCkiPjwhLS0gLS0+PC9BPjxIMz4KKyAgICBnZXRCeXRlczwvSDM+Cis8UFJFPgorcHVibGljIGJ5dGVbXSA8Qj5nZXRCeXRlczwvQj4oPEEgSFJFRj0iLi4vLi4vamF2YS9uaW8vY2hhcnNldC9DaGFyc2V0Lmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBqYXZhLm5pby5jaGFyc2V0Ij5DaGFyc2V0PC9BPiZuYnNwO2NoYXJzZXQpPC9QUkU+Cis8REw+CisgICAgPEREPkVuY29kZXMgdGhpcyA8Y29kZT5TdHJpbmc8L2NvZGU+IGludG8gYSBzZXF1ZW5jZSBvZiBieXRlcyB1c2luZyB0aGUgZ2l2ZW4KKyAgICAgICAgPEEgSFJFRj0iLi4vLi4vamF2YS9uaW8vY2hhcnNldC9DaGFyc2V0Lmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBqYXZhLm5pby5jaGFyc2V0Ij5jaGFyc2V0PC9BPiwgc3RvcmluZyB0aGUgcmVzdWx0IGludG8gYQorICAgICAgICBuZXcgYnl0ZSBhcnJheS4KKworICAgICAgICA8cD4gVGhpcyBtZXRob2QgYWx3YXlzIHJlcGxhY2VzIG1hbGZvcm1lZC1pbnB1dCBhbmQgdW5tYXBwYWJsZS1jaGFyYWN0ZXIKKyAgICAgICAgICAgIHNlcXVlbmNlcyB3aXRoIHRoaXMgY2hhcnNldCdzIGRlZmF1bHQgcmVwbGFjZW1lbnQgYnl0ZSBhcnJheS4gIFRoZQorICAgICAgICAgICAgPEEgSFJFRj0iLi4vLi4vamF2YS9uaW8vY2hhcnNldC9DaGFyc2V0RW5jb2Rlci5odG1sIiB0aXRsZT0iY2xhc3MgaW4gamF2YS5uaW8uY2hhcnNldCI+PENPREU+Q2hhcnNldEVuY29kZXI8L0NPREU+PC9BPiBjbGFzcyBzaG91bGQgYmUgdXNlZCB3aGVuIG1vcmUKKyAgICAgICAgICAgIGNvbnRyb2wgb3ZlciB0aGUgZW5jb2RpbmcgcHJvY2VzcyBpcyByZXF1aXJlZC4KKyAgICAgICAgPFA+CisgICAgPEREPjxETD4KKyAgICA8L0RMPgorICAgIDwvREQ+CisgICAgPEREPjxETD4KKyAgICAgICAgPERUPjxCPlBhcmFtZXRlcnM6PC9CPjxERD48Q09ERT5jaGFyc2V0PC9DT0RFPiAtIFRoZSA8QSBIUkVGPSIuLi8uLi9qYXZhL25pby9jaGFyc2V0L0NoYXJzZXQuaHRtbCIgdGl0bGU9ImNsYXNzIGluIGphdmEubmlvLmNoYXJzZXQiPkNoYXJzZXQ8L0E+IHRvIGJlIHVzZWQgdG8gZW5jb2RlCisgICAgICAgIHRoZSA8Y29kZT5TdHJpbmc8L2NvZGU+CisgICAgICAgIDxEVD48Qj5SZXR1cm5zOjwvQj48REQ+VGhlIHJlc3VsdGFudCBieXRlIGFycmF5PERUPjxCPlNpbmNlOjwvQj48L0RUPgorICAgICAgICA8REQ+MS42PC9ERD4KKyAgICA8L0RMPgorICAgIDwvREQ+Cis8L0RMPgorPEhSPgorCis8QSBOQU1FPSJnZXRCeXRlcygpIj48IS0tIC0tPjwvQT48SDM+CisgICAgZ2V0Qnl0ZXM8L0gzPgorPFBSRT4KK3B1YmxpYyBieXRlW10gPEI+Z2V0Qnl0ZXM8L0I+KCk8L1BSRT4KKzxETD4KKyAgICA8REQ+RW5jb2RlcyB0aGlzIDxjb2RlPlN0cmluZzwvY29kZT4gaW50byBhIHNlcXVlbmNlIG9mIGJ5dGVzIHVzaW5nIHRoZQorICAgICAgICBwbGF0Zm9ybSdzIGRlZmF1bHQgY2hhcnNldCwgc3RvcmluZyB0aGUgcmVzdWx0IGludG8gYSBuZXcgYnl0ZSBhcnJheS4KKworICAgICAgICA8cD4gVGhlIGJlaGF2aW9yIG9mIHRoaXMgbWV0aG9kIHdoZW4gdGhpcyBzdHJpbmcgY2Fubm90IGJlIGVuY29kZWQgaW4KKyAgICAgICAgICAgIHRoZSBkZWZhdWx0IGNoYXJzZXQgaXMgdW5zcGVjaWZpZWQuICBUaGUgPEEgSFJFRj0iLi4vLi4vamF2YS9uaW8vY2hhcnNldC9DaGFyc2V0RW5jb2Rlci5odG1sIiB0aXRsZT0iY2xhc3MgaW4gamF2YS5uaW8uY2hhcnNldCI+PENPREU+Q2hhcnNldEVuY29kZXI8L0NPREU+PC9BPiBjbGFzcyBzaG91bGQgYmUgdXNlZCB3aGVuIG1vcmUgY29udHJvbAorICAgICAgICAgICAgb3ZlciB0aGUgZW5jb2RpbmcgcHJvY2VzcyBpcyByZXF1aXJlZC4KKyAgICAgICAgPFA+CisgICAgPEREPjxETD4KKyAgICA8L0RMPgorICAgIDwvREQ+CisgICAgPEREPjxETD4KKworICAgICAgICA8RFQ+PEI+UmV0dXJuczo8L0I+PEREPlRoZSByZXN1bHRhbnQgYnl0ZSBhcnJheTxEVD48Qj5TaW5jZTo8L0I+PC9EVD4KKyAgICAgICAgPEREPkpESzEuMTwvREQ+CisgICAgPC9ETD4KKyAgICA8L0REPgorPC9ETD4KKzxIUj4KKworPEEgTkFNRT0iZXF1YWxzKGphdmEubGFuZy5PYmplY3QpIj48IS0tIC0tPjwvQT48SDM+CisgICAgZXF1YWxzPC9IMz4KKzxQUkU+CitwdWJsaWMgYm9vbGVhbiA8Qj5lcXVhbHM8L0I+KDxBIEhSRUY9Ii4uLy4uL2phdmEvbGFuZy9PYmplY3QuaHRtbCIgdGl0bGU9ImNsYXNzIGluIGphdmEubGFuZyI+T2JqZWN0PC9BPiZuYnNwO2FuT2JqZWN0KTwvUFJFPgorPERMPgorICAgIDxERD5Db21wYXJlcyB0aGlzIHN0cmluZyB0byB0aGUgc3BlY2lmaWVkIG9iamVjdC4gIFRoZSByZXN1bHQgaXMgPGNvZGU+dHJ1ZTwvY29kZT4gaWYgYW5kIG9ubHkgaWYgdGhlIGFyZ3VtZW50IGlzIG5vdCA8Y29kZT5udWxsPC9jb2RlPiBhbmQgaXMgYSA8Y29kZT5TdHJpbmc8L2NvZGU+IG9iamVjdCB0aGF0IHJlcHJlc2VudHMgdGhlIHNhbWUgc2VxdWVuY2Ugb2YgY2hhcmFjdGVycyBhcyB0aGlzCisgICAgICAgIG9iamVjdC4KKyAgICAgICAgPFA+CisgICAgPEREPjxETD4KKyAgICAgICAgPERUPjxCPk92ZXJyaWRlczo8L0I+PEREPjxDT0RFPjxBIEhSRUY9Ii4uLy4uL2phdmEvbGFuZy9PYmplY3QuaHRtbCNlcXVhbHMoamF2YS5sYW5nLk9iamVjdCkiPmVxdWFsczwvQT48L0NPREU+IGluIGNsYXNzIDxDT0RFPjxBIEhSRUY9Ii4uLy4uL2phdmEvbGFuZy9PYmplY3QuaHRtbCIgdGl0bGU9ImNsYXNzIGluIGphdmEubGFuZyI+T2JqZWN0PC9BPjwvQ09ERT48L0RMPgorICAgIDwvREQ+CisgICAgPEREPjxETD4KKyAgICAgICAgPERUPjxCPlBhcmFtZXRlcnM6PC9CPjxERD48Q09ERT5hbk9iamVjdDwvQ09ERT4gLSBUaGUgb2JqZWN0IHRvIGNvbXBhcmUgdGhpcyA8Y29kZT5TdHJpbmc8L2NvZGU+IGFnYWluc3QKKyAgICAgICAgPERUPjxCPlJldHVybnM6PC9CPjxERD48Y29kZT50cnVlPC9jb2RlPiBpZiB0aGUgZ2l2ZW4gb2JqZWN0IHJlcHJlc2VudHMgYSA8Y29kZT5TdHJpbmc8L2NvZGU+CisgICAgICAgIGVxdWl2YWxlbnQgdG8gdGhpcyBzdHJpbmcsIDxjb2RlPmZhbHNlPC9jb2RlPiBvdGhlcndpc2U8RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi9qYXZhL2xhbmcvU3RyaW5nLmh0bWwjY29tcGFyZVRvKGphdmEubGFuZy5TdHJpbmcpIj48Q09ERT5jb21wYXJlVG8oU3RyaW5nKTwvQ09ERT48L0E+LAorICAgICAgICA8QSBIUkVGPSIuLi8uLi9qYXZhL2xhbmcvU3RyaW5nLmh0bWwjZXF1YWxzSWdub3JlQ2FzZShqYXZhLmxhbmcuU3RyaW5nKSI+PENPREU+ZXF1YWxzSWdub3JlQ2FzZShTdHJpbmcpPC9DT0RFPjwvQT48L0RMPgorICAgIDwvREQ+Cis8L0RMPgorPEhSPgorCis8QSBOQU1FPSJjb250ZW50RXF1YWxzKGphdmEubGFuZy5TdHJpbmdCdWZmZXIpIj48IS0tIC0tPjwvQT48SDM+CisgICAgY29udGVudEVxdWFsczwvSDM+Cis8UFJFPgorcHVibGljIGJvb2xlYW4gPEI+Y29udGVudEVxdWFsczwvQj4oPEEgSFJFRj0iLi4vLi4vamF2YS9sYW5nL1N0cmluZ0J1ZmZlci5odG1sIiB0aXRsZT0iY2xhc3MgaW4gamF2YS5sYW5nIj5TdHJpbmdCdWZmZXI8L0E+Jm5ic3A7c2IpPC9QUkU+Cis8REw+CisgICAgPEREPkNvbXBhcmVzIHRoaXMgc3RyaW5nIHRvIHRoZSBzcGVjaWZpZWQgPGNvZGU+U3RyaW5nQnVmZmVyPC9jb2RlPi4gIFRoZSByZXN1bHQKKyAgICAgICAgaXMgPGNvZGU+dHJ1ZTwvY29kZT4gaWYgYW5kIG9ubHkgaWYgdGhpcyA8Y29kZT5TdHJpbmc8L2NvZGU+IHJlcHJlc2VudHMgdGhlIHNhbWUKKyAgICAgICAgc2VxdWVuY2Ugb2YgY2hhcmFjdGVycyBhcyB0aGUgc3BlY2lmaWVkIDxjb2RlPlN0cmluZ0J1ZmZlcjwvY29kZT4uCisgICAgICAgIDxQPgorICAgIDxERD48REw+CisgICAgPC9ETD4KKyAgICA8L0REPgorICAgIDxERD48REw+CisgICAgICAgIDxEVD48Qj5QYXJhbWV0ZXJzOjwvQj48REQ+PENPREU+c2I8L0NPREU+IC0gVGhlIDxjb2RlPlN0cmluZ0J1ZmZlcjwvY29kZT4gdG8gY29tcGFyZSB0aGlzIDxjb2RlPlN0cmluZzwvY29kZT4gYWdhaW5zdAorICAgICAgICA8RFQ+PEI+UmV0dXJuczo8L0I+PEREPjxjb2RlPnRydWU8L2NvZGU+IGlmIHRoaXMgPGNvZGU+U3RyaW5nPC9jb2RlPiByZXByZXNlbnRzIHRoZSBzYW1lCisgICAgICAgIHNlcXVlbmNlIG9mIGNoYXJhY3RlcnMgYXMgdGhlIHNwZWNpZmllZCA8Y29kZT5TdHJpbmdCdWZmZXI8L2NvZGU+LAorICAgICAgICA8Y29kZT5mYWxzZTwvY29kZT4gb3RoZXJ3aXNlPERUPjxCPlNpbmNlOjwvQj48L0RUPgorICAgICAgICA8REQ+MS40PC9ERD4KKyAgICA8L0RMPgorICAgIDwvREQ+Cis8L0RMPgorPEhSPgorCis8QSBOQU1FPSJjb250ZW50RXF1YWxzKGphdmEubGFuZy5DaGFyU2VxdWVuY2UpIj48IS0tIC0tPjwvQT48SDM+CisgICAgY29udGVudEVxdWFsczwvSDM+Cis8UFJFPgorcHVibGljIGJvb2xlYW4gPEI+Y29udGVudEVxdWFsczwvQj4oPEEgSFJFRj0iLi4vLi4vamF2YS9sYW5nL0NoYXJTZXF1ZW5jZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIGphdmEubGFuZyI+Q2hhclNlcXVlbmNlPC9BPiZuYnNwO2NzKTwvUFJFPgorPERMPgorICAgIDxERD5Db21wYXJlcyB0aGlzIHN0cmluZyB0byB0aGUgc3BlY2lmaWVkIDxjb2RlPkNoYXJTZXF1ZW5jZTwvY29kZT4uICBUaGUgcmVzdWx0CisgICAgICAgIGlzIDxjb2RlPnRydWU8L2NvZGU+IGlmIGFuZCBvbmx5IGlmIHRoaXMgPGNvZGU+U3RyaW5nPC9jb2RlPiByZXByZXNlbnRzIHRoZSBzYW1lCisgICAgICAgIHNlcXVlbmNlIG9mIGNoYXIgdmFsdWVzIGFzIHRoZSBzcGVjaWZpZWQgc2VxdWVuY2UuCisgICAgICAgIDxQPgorICAgIDxERD48REw+CisgICAgPC9ETD4KKyAgICA8L0REPgorICAgIDxERD48REw+CisgICAgICAgIDxEVD48Qj5QYXJhbWV0ZXJzOjwvQj48REQ+PENPREU+Y3M8L0NPREU+IC0gVGhlIHNlcXVlbmNlIHRvIGNvbXBhcmUgdGhpcyA8Y29kZT5TdHJpbmc8L2NvZGU+IGFnYWluc3QKKyAgICAgICAgPERUPjxCPlJldHVybnM6PC9CPjxERD48Y29kZT50cnVlPC9jb2RlPiBpZiB0aGlzIDxjb2RlPlN0cmluZzwvY29kZT4gcmVwcmVzZW50cyB0aGUgc2FtZQorICAgICAgICBzZXF1ZW5jZSBvZiBjaGFyIHZhbHVlcyBhcyB0aGUgc3BlY2lmaWVkIHNlcXVlbmNlLCA8Y29kZT5mYWxzZTwvY29kZT4gb3RoZXJ3aXNlPERUPjxCPlNpbmNlOjwvQj48L0RUPgorICAgICAgICA8REQ+MS41PC9ERD4KKyAgICA8L0RMPgorICAgIDwvREQ+Cis8L0RMPgorPEhSPgorCis8QSBOQU1FPSJlcXVhbHNJZ25vcmVDYXNlKGphdmEubGFuZy5TdHJpbmcpIj48IS0tIC0tPjwvQT48SDM+CisgICAgZXF1YWxzSWdub3JlQ2FzZTwvSDM+Cis8UFJFPgorcHVibGljIGJvb2xlYW4gPEI+ZXF1YWxzSWdub3JlQ2FzZTwvQj4oPEEgSFJFRj0iLi4vLi4vamF2YS9sYW5nL1N0cmluZy5odG1sIiB0aXRsZT0iY2xhc3MgaW4gamF2YS5sYW5nIj5TdHJpbmc8L0E+Jm5ic3A7YW5vdGhlclN0cmluZyk8L1BSRT4KKzxETD4KKyAgICA8REQ+Q29tcGFyZXMgdGhpcyA8Y29kZT5TdHJpbmc8L2NvZGU+IHRvIGFub3RoZXIgPGNvZGU+U3RyaW5nPC9jb2RlPiwgaWdub3JpbmcgY2FzZQorICAgICAgICBjb25zaWRlcmF0aW9ucy4gIFR3byBzdHJpbmdzIGFyZSBjb25zaWRlcmVkIGVxdWFsIGlnbm9yaW5nIGNhc2UgaWYgdGhleQorICAgICAgICBhcmUgb2YgdGhlIHNhbWUgbGVuZ3RoIGFuZCBjb3JyZXNwb25kaW5nIGNoYXJhY3RlcnMgaW4gdGhlIHR3byBzdHJpbmdzCisgICAgICAgIGFyZSBlcXVhbCBpZ25vcmluZyBjYXNlLgorCisgICAgICAgIDxwPiBUd28gY2hhcmFjdGVycyA8Y29kZT5jMTwvY29kZT4gYW5kIDxjb2RlPmMyPC9jb2RlPiBhcmUgY29uc2lkZXJlZCB0aGUgc2FtZQorICAgICAgICAgICAgaWdub3JpbmcgY2FzZSBpZiBhdCBsZWFzdCBvbmUgb2YgdGhlIGZvbGxvd2luZyBpcyB0cnVlOgorICAgICAgICA8dWw+CisgICAgICAgICAgICA8bGk+IFRoZSB0d28gY2hhcmFjdGVycyBhcmUgdGhlIHNhbWUgKGFzIGNvbXBhcmVkIGJ5IHRoZQorICAgICAgICAgICAgICAgIDxjb2RlPj09PC9jb2RlPiBvcGVyYXRvcikKKyAgICAgICAgICAgIDxsaT4gQXBwbHlpbmcgdGhlIG1ldGhvZCA8QSBIUkVGPSIuLi8uLi9qYXZhL2xhbmcvQ2hhcmFjdGVyLmh0bWwjdG9VcHBlckNhc2UoY2hhcikiPjxDT0RFPkNoYXJhY3Rlci50b1VwcGVyQ2FzZShjaGFyKTwvQ09ERT48L0E+IHRvIGVhY2ggY2hhcmFjdGVyCisgICAgICAgICAgICAgICAgcHJvZHVjZXMgdGhlIHNhbWUgcmVzdWx0CisgICAgICAgICAgICA8bGk+IEFwcGx5aW5nIHRoZSBtZXRob2QgPEEgSFJFRj0iLi4vLi4vamF2YS9sYW5nL0NoYXJhY3Rlci5odG1sI3RvTG93ZXJDYXNlKGNoYXIpIj48Q09ERT5DaGFyYWN0ZXIudG9Mb3dlckNhc2UoY2hhcik8L0NPREU+PC9BPiB0byBlYWNoIGNoYXJhY3RlcgorICAgICAgICAgICAgICAgIHByb2R1Y2VzIHRoZSBzYW1lIHJlc3VsdAorICAgICAgICA8L3VsPgorICAgICAgICA8UD4KKyAgICA8REQ+PERMPgorICAgIDwvREw+CisgICAgPC9ERD4KKyAgICA8REQ+PERMPgorICAgICAgICA8RFQ+PEI+UGFyYW1ldGVyczo8L0I+PEREPjxDT0RFPmFub3RoZXJTdHJpbmc8L0NPREU+IC0gVGhlIDxjb2RlPlN0cmluZzwvY29kZT4gdG8gY29tcGFyZSB0aGlzIDxjb2RlPlN0cmluZzwvY29kZT4gYWdhaW5zdAorICAgICAgICA8RFQ+PEI+UmV0dXJuczo8L0I+PEREPjxjb2RlPnRydWU8L2NvZGU+IGlmIHRoZSBhcmd1bWVudCBpcyBub3QgPGNvZGU+bnVsbDwvY29kZT4gYW5kIGl0CisgICAgICAgIHJlcHJlc2VudHMgYW4gZXF1aXZhbGVudCA8Y29kZT5TdHJpbmc8L2NvZGU+IGlnbm9yaW5nIGNhc2U7IDxjb2RlPmZhbHNlPC9jb2RlPiBvdGhlcndpc2U8RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi9qYXZhL2xhbmcvU3RyaW5nLmh0bWwjZXF1YWxzKGphdmEubGFuZy5PYmplY3QpIj48Q09ERT5lcXVhbHMoT2JqZWN0KTwvQ09ERT48L0E+PC9ETD4KKyAgICA8L0REPgorPC9ETD4KKzxIUj4KKworPEEgTkFNRT0iY29tcGFyZVRvKGphdmEubGFuZy5TdHJpbmcpIj48IS0tIC0tPjwvQT48SDM+CisgICAgY29tcGFyZVRvPC9IMz4KKzxQUkU+CitwdWJsaWMgaW50IDxCPmNvbXBhcmVUbzwvQj4oPEEgSFJFRj0iLi4vLi4vamF2YS9sYW5nL1N0cmluZy5odG1sIiB0aXRsZT0iY2xhc3MgaW4gamF2YS5sYW5nIj5TdHJpbmc8L0E+Jm5ic3A7YW5vdGhlclN0cmluZyk8L1BSRT4KKzxETD4KKyAgICA8REQ+Q29tcGFyZXMgdHdvIHN0cmluZ3MgbGV4aWNvZ3JhcGhpY2FsbHkuCisgICAgICAgIFRoZSBjb21wYXJpc29uIGlzIGJhc2VkIG9uIHRoZSBVbmljb2RlIHZhbHVlIG9mIGVhY2ggY2hhcmFjdGVyIGluCisgICAgICAgIHRoZSBzdHJpbmdzLiBUaGUgY2hhcmFjdGVyIHNlcXVlbmNlIHJlcHJlc2VudGVkIGJ5IHRoaXMKKyAgICAgICAgPGNvZGU+U3RyaW5nPC9jb2RlPiBvYmplY3QgaXMgY29tcGFyZWQgbGV4aWNvZ3JhcGhpY2FsbHkgdG8gdGhlCisgICAgICAgIGNoYXJhY3RlciBzZXF1ZW5jZSByZXByZXNlbnRlZCBieSB0aGUgYXJndW1lbnQgc3RyaW5nLiBUaGUgcmVzdWx0IGlzCisgICAgICAgIGEgbmVnYXRpdmUgaW50ZWdlciBpZiB0aGlzIDxjb2RlPlN0cmluZzwvY29kZT4gb2JqZWN0CisgICAgICAgIGxleGljb2dyYXBoaWNhbGx5IHByZWNlZGVzIHRoZSBhcmd1bWVudCBzdHJpbmcuIFRoZSByZXN1bHQgaXMgYQorICAgICAgICBwb3NpdGl2ZSBpbnRlZ2VyIGlmIHRoaXMgPGNvZGU+U3RyaW5nPC9jb2RlPiBvYmplY3QgbGV4aWNvZ3JhcGhpY2FsbHkKKyAgICAgICAgZm9sbG93cyB0aGUgYXJndW1lbnQgc3RyaW5nLiBUaGUgcmVzdWx0IGlzIHplcm8gaWYgdGhlIHN0cmluZ3MKKyAgICAgICAgYXJlIGVxdWFsOyA8Y29kZT5jb21wYXJlVG88L2NvZGU+IHJldHVybnMgPGNvZGU+MDwvY29kZT4gZXhhY3RseSB3aGVuCisgICAgICAgIHRoZSA8QSBIUkVGPSIuLi8uLi9qYXZhL2xhbmcvU3RyaW5nLmh0bWwjZXF1YWxzKGphdmEubGFuZy5PYmplY3QpIj48Q09ERT5lcXVhbHMoT2JqZWN0KTwvQ09ERT48L0E+IG1ldGhvZCB3b3VsZCByZXR1cm4gPGNvZGU+dHJ1ZTwvY29kZT4uCisgICAgICAgIDxwPgorICAgICAgICAgICAgVGhpcyBpcyB0aGUgZGVmaW5pdGlvbiBvZiBsZXhpY29ncmFwaGljIG9yZGVyaW5nLiBJZiB0d28gc3RyaW5ncyBhcmUKKyAgICAgICAgICAgIGRpZmZlcmVudCwgdGhlbiBlaXRoZXIgdGhleSBoYXZlIGRpZmZlcmVudCBjaGFyYWN0ZXJzIGF0IHNvbWUgaW5kZXgKKyAgICAgICAgICAgIHRoYXQgaXMgYSB2YWxpZCBpbmRleCBmb3IgYm90aCBzdHJpbmdzLCBvciB0aGVpciBsZW5ndGhzIGFyZSBkaWZmZXJlbnQsCisgICAgICAgICAgICBvciBib3RoLiBJZiB0aGV5IGhhdmUgZGlmZmVyZW50IGNoYXJhY3RlcnMgYXQgb25lIG9yIG1vcmUgaW5kZXgKKyAgICAgICAgICAgIHBvc2l0aW9ucywgbGV0IDxpPms8L2k+IGJlIHRoZSBzbWFsbGVzdCBzdWNoIGluZGV4OyB0aGVuIHRoZSBzdHJpbmcKKyAgICAgICAgICAgIHdob3NlIGNoYXJhY3RlciBhdCBwb3NpdGlvbiA8aT5rPC9pPiBoYXMgdGhlIHNtYWxsZXIgdmFsdWUsIGFzCisgICAgICAgICAgICBkZXRlcm1pbmVkIGJ5IHVzaW5nIHRoZSAmbHQ7IG9wZXJhdG9yLCBsZXhpY29ncmFwaGljYWxseSBwcmVjZWRlcyB0aGUKKyAgICAgICAgICAgIG90aGVyIHN0cmluZy4gSW4gdGhpcyBjYXNlLCA8Y29kZT5jb21wYXJlVG88L2NvZGU+IHJldHVybnMgdGhlCisgICAgICAgICAgICBkaWZmZXJlbmNlIG9mIHRoZSB0d28gY2hhcmFjdGVyIHZhbHVlcyBhdCBwb3NpdGlvbiA8Y29kZT5rPC9jb2RlPiBpbgorICAgICAgICAgICAgdGhlIHR3byBzdHJpbmcgLS0gdGhhdCBpcywgdGhlIHZhbHVlOgorICAgICAgICA8YmxvY2txdW90ZT48cHJlPgorIHRoaXMuY2hhckF0KGspLWFub3RoZXJTdHJpbmcuY2hhckF0KGspCisgPC9wcmU+PC9ibG9ja3F1b3RlPgorICAgICAgICBJZiB0aGVyZSBpcyBubyBpbmRleCBwb3NpdGlvbiBhdCB3aGljaCB0aGV5IGRpZmZlciwgdGhlbiB0aGUgc2hvcnRlcgorICAgICAgICBzdHJpbmcgbGV4aWNvZ3JhcGhpY2FsbHkgcHJlY2VkZXMgdGhlIGxvbmdlciBzdHJpbmcuIEluIHRoaXMgY2FzZSwKKyAgICAgICAgPGNvZGU+Y29tcGFyZVRvPC9jb2RlPiByZXR1cm5zIHRoZSBkaWZmZXJlbmNlIG9mIHRoZSBsZW5ndGhzIG9mIHRoZQorICAgICAgICBzdHJpbmdzIC0tIHRoYXQgaXMsIHRoZSB2YWx1ZToKKyAgICAgICAgPGJsb2NrcXVvdGU+PHByZT4KKyB0aGlzLmxlbmd0aCgpLWFub3RoZXJTdHJpbmcubGVuZ3RoKCkKKyA8L3ByZT48L2Jsb2NrcXVvdGU+CisgICAgICAgIDxQPgorICAgIDxERD48REw+CisgICAgICAgIDxEVD48Qj5TcGVjaWZpZWQgYnk6PC9CPjxERD48Q09ERT48QSBIUkVGPSIuLi8uLi9qYXZhL2xhbmcvQ29tcGFyYWJsZS5odG1sI2NvbXBhcmVUbyhUKSI+Y29tcGFyZVRvPC9BPjwvQ09ERT4gaW4gaW50ZXJmYWNlIDxDT0RFPjxBIEhSRUY9Ii4uLy4uL2phdmEvbGFuZy9Db21wYXJhYmxlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gamF2YS5sYW5nIj5Db21wYXJhYmxlPC9BPiZsdDs8QSBIUkVGPSIuLi8uLi9qYXZhL2xhbmcvU3RyaW5nLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBqYXZhLmxhbmciPlN0cmluZzwvQT4mZ3Q7PC9DT0RFPjwvREw+CisgICAgPC9ERD4KKyAgICA8REQ+PERMPgorICAgICAgICA8RFQ+PEI+UGFyYW1ldGVyczo8L0I+PEREPjxDT0RFPmFub3RoZXJTdHJpbmc8L0NPREU+IC0gdGhlIDxjb2RlPlN0cmluZzwvY29kZT4gdG8gYmUgY29tcGFyZWQuCisgICAgICAgIDxEVD48Qj5SZXR1cm5zOjwvQj48REQ+dGhlIHZhbHVlIDxjb2RlPjA8L2NvZGU+IGlmIHRoZSBhcmd1bWVudCBzdHJpbmcgaXMgZXF1YWwgdG8KKyAgICAgICAgdGhpcyBzdHJpbmc7IGEgdmFsdWUgbGVzcyB0aGFuIDxjb2RlPjA8L2NvZGU+IGlmIHRoaXMgc3RyaW5nCisgICAgICAgIGlzIGxleGljb2dyYXBoaWNhbGx5IGxlc3MgdGhhbiB0aGUgc3RyaW5nIGFyZ3VtZW50OyBhbmQgYQorICAgICAgICB2YWx1ZSBncmVhdGVyIHRoYW4gPGNvZGU+MDwvY29kZT4gaWYgdGhpcyBzdHJpbmcgaXMKKyAgICAgICAgbGV4aWNvZ3JhcGhpY2FsbHkgZ3JlYXRlciB0aGFuIHRoZSBzdHJpbmcgYXJndW1lbnQuPC9ETD4KKyAgICA8L0REPgorPC9ETD4KKzxIUj4KKworPEEgTkFNRT0iY29tcGFyZVRvSWdub3JlQ2FzZShqYXZhLmxhbmcuU3RyaW5nKSI+PCEtLSAtLT48L0E+PEgzPgorICAgIGNvbXBhcmVUb0lnbm9yZUNhc2U8L0gzPgorPFBSRT4KK3B1YmxpYyBpbnQgPEI+Y29tcGFyZVRvSWdub3JlQ2FzZTwvQj4oPEEgSFJFRj0iLi4vLi4vamF2YS9sYW5nL1N0cmluZy5odG1sIiB0aXRsZT0iY2xhc3MgaW4gamF2YS5sYW5nIj5TdHJpbmc8L0E+Jm5ic3A7c3RyKTwvUFJFPgorPERMPgorICAgIDxERD5Db21wYXJlcyB0d28gc3RyaW5ncyBsZXhpY29ncmFwaGljYWxseSwgaWdub3JpbmcgY2FzZQorICAgICAgICBkaWZmZXJlbmNlcy4gVGhpcyBtZXRob2QgcmV0dXJucyBhbiBpbnRlZ2VyIHdob3NlIHNpZ24gaXMgdGhhdCBvZgorICAgICAgICBjYWxsaW5nIDxjb2RlPmNvbXBhcmVUbzwvY29kZT4gd2l0aCBub3JtYWxpemVkIHZlcnNpb25zIG9mIHRoZSBzdHJpbmdzCisgICAgICAgIHdoZXJlIGNhc2UgZGlmZmVyZW5jZXMgaGF2ZSBiZWVuIGVsaW1pbmF0ZWQgYnkgY2FsbGluZworICAgICAgICA8Y29kZT5DaGFyYWN0ZXIudG9Mb3dlckNhc2UoQ2hhcmFjdGVyLnRvVXBwZXJDYXNlKGNoYXJhY3RlcikpPC9jb2RlPiBvbgorICAgICAgICBlYWNoIGNoYXJhY3Rlci4KKyAgICAgICAgPHA+CisgICAgICAgICAgICBOb3RlIHRoYXQgdGhpcyBtZXRob2QgZG9lcyA8ZW0+bm90PC9lbT4gdGFrZSBsb2NhbGUgaW50byBhY2NvdW50LAorICAgICAgICAgICAgYW5kIHdpbGwgcmVzdWx0IGluIGFuIHVuc2F0aXNmYWN0b3J5IG9yZGVyaW5nIGZvciBjZXJ0YWluIGxvY2FsZXMuCisgICAgICAgICAgICBUaGUgamF2YS50ZXh0IHBhY2thZ2UgcHJvdmlkZXMgPGVtPmNvbGxhdG9yczwvZW0+IHRvIGFsbG93CisgICAgICAgICAgICBsb2NhbGUtc2Vuc2l0aXZlIG9yZGVyaW5nLgorICAgICAgICA8UD4KKyAgICA8REQ+PERMPgorICAgIDwvREw+CisgICAgPC9ERD4KKyAgICA8REQ+PERMPgorICAgICAgICA8RFQ+PEI+UGFyYW1ldGVyczo8L0I+PEREPjxDT0RFPnN0cjwvQ09ERT4gLSB0aGUgPGNvZGU+U3RyaW5nPC9jb2RlPiB0byBiZSBjb21wYXJlZC4KKyAgICAgICAgPERUPjxCPlJldHVybnM6PC9CPjxERD5hIG5lZ2F0aXZlIGludGVnZXIsIHplcm8sIG9yIGEgcG9zaXRpdmUgaW50ZWdlciBhcyB0aGUKKyAgICAgICAgc3BlY2lmaWVkIFN0cmluZyBpcyBncmVhdGVyIHRoYW4sIGVxdWFsIHRvLCBvciBsZXNzCisgICAgICAgIHRoYW4gdGhpcyBTdHJpbmcsIGlnbm9yaW5nIGNhc2UgY29uc2lkZXJhdGlvbnMuPERUPjxCPlNpbmNlOjwvQj48L0RUPgorICAgICAgICA8REQ+MS4yPC9ERD4KKyAgICAgICAgPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vamF2YS90ZXh0L0NvbGxhdG9yLmh0bWwjY29tcGFyZShqYXZhLmxhbmcuU3RyaW5nLCBqYXZhLmxhbmcuU3RyaW5nKSI+PENPREU+Q29sbGF0b3IuY29tcGFyZShTdHJpbmcsIFN0cmluZyk8L0NPREU+PC9BPjwvREw+CisgICAgPC9ERD4KKzwvREw+Cis8SFI+CisKKzxBIE5BTUU9InJlZ2lvbk1hdGNoZXMoaW50LCBqYXZhLmxhbmcuU3RyaW5nLCBpbnQsIGludCkiPjwhLS0gLS0+PC9BPjxIMz4KKyAgICByZWdpb25NYXRjaGVzPC9IMz4KKzxQUkU+CitwdWJsaWMgYm9vbGVhbiA8Qj5yZWdpb25NYXRjaGVzPC9CPihpbnQmbmJzcDt0b2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QSBIUkVGPSIuLi8uLi9qYXZhL2xhbmcvU3RyaW5nLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBqYXZhLmxhbmciPlN0cmluZzwvQT4mbmJzcDtvdGhlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50Jm5ic3A7b29mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50Jm5ic3A7bGVuKTwvUFJFPgorPERMPgorICAgIDxERD5UZXN0cyBpZiB0d28gc3RyaW5nIHJlZ2lvbnMgYXJlIGVxdWFsLgorICAgICAgICA8cD4KKyAgICAgICAgICAgIEEgc3Vic3RyaW5nIG9mIHRoaXMgPHR0PlN0cmluZzwvdHQ+IG9iamVjdCBpcyBjb21wYXJlZCB0byBhIHN1YnN0cmluZworICAgICAgICAgICAgb2YgdGhlIGFyZ3VtZW50IG90aGVyLiBUaGUgcmVzdWx0IGlzIHRydWUgaWYgdGhlc2Ugc3Vic3RyaW5ncworICAgICAgICAgICAgcmVwcmVzZW50IGlkZW50aWNhbCBjaGFyYWN0ZXIgc2VxdWVuY2VzLiBUaGUgc3Vic3RyaW5nIG9mIHRoaXMKKyAgICAgICAgICAgIDx0dD5TdHJpbmc8L3R0PiBvYmplY3QgdG8gYmUgY29tcGFyZWQgYmVnaW5zIGF0IGluZGV4IDx0dD50b2Zmc2V0PC90dD4KKyAgICAgICAgICAgIGFuZCBoYXMgbGVuZ3RoIDx0dD5sZW48L3R0Pi4gVGhlIHN1YnN0cmluZyBvZiBvdGhlciB0byBiZSBjb21wYXJlZAorICAgICAgICAgICAgYmVnaW5zIGF0IGluZGV4IDx0dD5vb2Zmc2V0PC90dD4gYW5kIGhhcyBsZW5ndGggPHR0PmxlbjwvdHQ+LiBUaGUKKyAgICAgICAgICAgIHJlc3VsdCBpcyA8dHQ+ZmFsc2U8L3R0PiBpZiBhbmQgb25seSBpZiBhdCBsZWFzdCBvbmUgb2YgdGhlIGZvbGxvd2luZworICAgICAgICAgICAgaXMgdHJ1ZToKKyAgICAgICAgPHVsPjxsaT48dHQ+dG9mZnNldDwvdHQ+IGlzIG5lZ2F0aXZlLgorICAgICAgICAgICAgPGxpPjx0dD5vb2Zmc2V0PC90dD4gaXMgbmVnYXRpdmUuCisgICAgICAgICAgICA8bGk+PHR0PnRvZmZzZXQrbGVuPC90dD4gaXMgZ3JlYXRlciB0aGFuIHRoZSBsZW5ndGggb2YgdGhpcworICAgICAgICAgICAgICAgIDx0dD5TdHJpbmc8L3R0PiBvYmplY3QuCisgICAgICAgICAgICA8bGk+PHR0Pm9vZmZzZXQrbGVuPC90dD4gaXMgZ3JlYXRlciB0aGFuIHRoZSBsZW5ndGggb2YgdGhlIG90aGVyCisgICAgICAgICAgICAgICAgYXJndW1lbnQuCisgICAgICAgICAgICA8bGk+VGhlcmUgaXMgc29tZSBub25uZWdhdGl2ZSBpbnRlZ2VyIDxpPms8L2k+IGxlc3MgdGhhbiA8dHQ+bGVuPC90dD4KKyAgICAgICAgICAgICAgICBzdWNoIHRoYXQ6CisgICAgICAgICAgICAgICAgPHR0PnRoaXMuY2hhckF0KHRvZmZzZXQrPGk+azwvaT4pJm5ic3A7IT0mbmJzcDtvdGhlci5jaGFyQXQob29mZnNldCs8aT5rPC9pPik8L3R0PgorICAgICAgICA8L3VsPgorICAgICAgICA8UD4KKyAgICA8REQ+PERMPgorICAgIDwvREw+CisgICAgPC9ERD4KKyAgICA8REQ+PERMPgorICAgICAgICA8RFQ+PEI+UGFyYW1ldGVyczo8L0I+PEREPjxDT0RFPnRvZmZzZXQ8L0NPREU+IC0gdGhlIHN0YXJ0aW5nIG9mZnNldCBvZiB0aGUgc3VicmVnaW9uIGluIHRoaXMgc3RyaW5nLjxERD48Q09ERT5vdGhlcjwvQ09ERT4gLSB0aGUgc3RyaW5nIGFyZ3VtZW50LjxERD48Q09ERT5vb2Zmc2V0PC9DT0RFPiAtIHRoZSBzdGFydGluZyBvZmZzZXQgb2YgdGhlIHN1YnJlZ2lvbiBpbiB0aGUgc3RyaW5nCisgICAgICAgIGFyZ3VtZW50LjxERD48Q09ERT5sZW48L0NPREU+IC0gdGhlIG51bWJlciBvZiBjaGFyYWN0ZXJzIHRvIGNvbXBhcmUuCisgICAgICAgIDxEVD48Qj5SZXR1cm5zOjwvQj48REQ+PGNvZGU+dHJ1ZTwvY29kZT4gaWYgdGhlIHNwZWNpZmllZCBzdWJyZWdpb24gb2YgdGhpcyBzdHJpbmcKKyAgICAgICAgZXhhY3RseSBtYXRjaGVzIHRoZSBzcGVjaWZpZWQgc3VicmVnaW9uIG9mIHRoZSBzdHJpbmcgYXJndW1lbnQ7CisgICAgICAgIDxjb2RlPmZhbHNlPC9jb2RlPiBvdGhlcndpc2UuPC9ETD4KKyAgICA8L0REPgorPC9ETD4KKzxIUj4KKworPEEgTkFNRT0icmVnaW9uTWF0Y2hlcyhib29sZWFuLCBpbnQsIGphdmEubGFuZy5TdHJpbmcsIGludCwgaW50KSI+PCEtLSAtLT48L0E+PEgzPgorICAgIHJlZ2lvbk1hdGNoZXM8L0gzPgorPFBSRT4KK3B1YmxpYyBib29sZWFuIDxCPnJlZ2lvbk1hdGNoZXM8L0I+KGJvb2xlYW4mbmJzcDtpZ25vcmVDYXNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQmbmJzcDt0b2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QSBIUkVGPSIuLi8uLi9qYXZhL2xhbmcvU3RyaW5nLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBqYXZhLmxhbmciPlN0cmluZzwvQT4mbmJzcDtvdGhlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50Jm5ic3A7b29mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50Jm5ic3A7bGVuKTwvUFJFPgorPERMPgorICAgIDxERD5UZXN0cyBpZiB0d28gc3RyaW5nIHJlZ2lvbnMgYXJlIGVxdWFsLgorICAgICAgICA8cD4KKyAgICAgICAgICAgIEEgc3Vic3RyaW5nIG9mIHRoaXMgPHR0PlN0cmluZzwvdHQ+IG9iamVjdCBpcyBjb21wYXJlZCB0byBhIHN1YnN0cmluZworICAgICAgICAgICAgb2YgdGhlIGFyZ3VtZW50IDx0dD5vdGhlcjwvdHQ+LiBUaGUgcmVzdWx0IGlzIDx0dD50cnVlPC90dD4gaWYgdGhlc2UKKyAgICAgICAgICAgIHN1YnN0cmluZ3MgcmVwcmVzZW50IGNoYXJhY3RlciBzZXF1ZW5jZXMgdGhhdCBhcmUgdGhlIHNhbWUsIGlnbm9yaW5nCisgICAgICAgICAgICBjYXNlIGlmIGFuZCBvbmx5IGlmIDx0dD5pZ25vcmVDYXNlPC90dD4gaXMgdHJ1ZS4gVGhlIHN1YnN0cmluZyBvZgorICAgICAgICAgICAgdGhpcyA8dHQ+U3RyaW5nPC90dD4gb2JqZWN0IHRvIGJlIGNvbXBhcmVkIGJlZ2lucyBhdCBpbmRleAorICAgICAgICAgICAgPHR0PnRvZmZzZXQ8L3R0PiBhbmQgaGFzIGxlbmd0aCA8dHQ+bGVuPC90dD4uIFRoZSBzdWJzdHJpbmcgb2YKKyAgICAgICAgICAgIDx0dD5vdGhlcjwvdHQ+IHRvIGJlIGNvbXBhcmVkIGJlZ2lucyBhdCBpbmRleCA8dHQ+b29mZnNldDwvdHQ+IGFuZAorICAgICAgICAgICAgaGFzIGxlbmd0aCA8dHQ+bGVuPC90dD4uIFRoZSByZXN1bHQgaXMgPHR0PmZhbHNlPC90dD4gaWYgYW5kIG9ubHkgaWYKKyAgICAgICAgICAgIGF0IGxlYXN0IG9uZSBvZiB0aGUgZm9sbG93aW5nIGlzIHRydWU6CisgICAgICAgIDx1bD48bGk+PHR0PnRvZmZzZXQ8L3R0PiBpcyBuZWdhdGl2ZS4KKyAgICAgICAgICAgIDxsaT48dHQ+b29mZnNldDwvdHQ+IGlzIG5lZ2F0aXZlLgorICAgICAgICAgICAgPGxpPjx0dD50b2Zmc2V0K2xlbjwvdHQ+IGlzIGdyZWF0ZXIgdGhhbiB0aGUgbGVuZ3RoIG9mIHRoaXMKKyAgICAgICAgICAgICAgICA8dHQ+U3RyaW5nPC90dD4gb2JqZWN0LgorICAgICAgICAgICAgPGxpPjx0dD5vb2Zmc2V0K2xlbjwvdHQ+IGlzIGdyZWF0ZXIgdGhhbiB0aGUgbGVuZ3RoIG9mIHRoZSBvdGhlcgorICAgICAgICAgICAgICAgIGFyZ3VtZW50LgorICAgICAgICAgICAgPGxpPjx0dD5pZ25vcmVDYXNlPC90dD4gaXMgPHR0PmZhbHNlPC90dD4gYW5kIHRoZXJlIGlzIHNvbWUgbm9ubmVnYXRpdmUKKyAgICAgICAgICAgICAgICBpbnRlZ2VyIDxpPms8L2k+IGxlc3MgdGhhbiA8dHQ+bGVuPC90dD4gc3VjaCB0aGF0OgorICAgICAgICAgICAgICAgIDxibG9ja3F1b3RlPjxwcmU+CisgdGhpcy5jaGFyQXQodG9mZnNldCtrKSAhPSBvdGhlci5jaGFyQXQob29mZnNldCtrKQorIDwvcHJlPjwvYmxvY2txdW90ZT4KKyAgICAgICAgICAgIDxsaT48dHQ+aWdub3JlQ2FzZTwvdHQ+IGlzIDx0dD50cnVlPC90dD4gYW5kIHRoZXJlIGlzIHNvbWUgbm9ubmVnYXRpdmUKKyAgICAgICAgICAgICAgICBpbnRlZ2VyIDxpPms8L2k+IGxlc3MgdGhhbiA8dHQ+bGVuPC90dD4gc3VjaCB0aGF0OgorICAgICAgICAgICAgICAgIDxibG9ja3F1b3RlPjxwcmU+CisgQ2hhcmFjdGVyLnRvTG93ZXJDYXNlKHRoaXMuY2hhckF0KHRvZmZzZXQraykpICE9CisgICAgICAgICAgICAgICBDaGFyYWN0ZXIudG9Mb3dlckNhc2Uob3RoZXIuY2hhckF0KG9vZmZzZXQraykpCisgPC9wcmU+PC9ibG9ja3F1b3RlPgorICAgICAgICAgICAgICAgIGFuZDoKKyAgICAgICAgICAgICAgICA8YmxvY2txdW90ZT48cHJlPgorIENoYXJhY3Rlci50b1VwcGVyQ2FzZSh0aGlzLmNoYXJBdCh0b2Zmc2V0K2spKSAhPQorICAgICAgICAgQ2hhcmFjdGVyLnRvVXBwZXJDYXNlKG90aGVyLmNoYXJBdChvb2Zmc2V0K2spKQorIDwvcHJlPjwvYmxvY2txdW90ZT4KKyAgICAgICAgPC91bD4KKyAgICAgICAgPFA+CisgICAgPEREPjxETD4KKyAgICA8L0RMPgorICAgIDwvREQ+CisgICAgPEREPjxETD4KKyAgICAgICAgPERUPjxCPlBhcmFtZXRlcnM6PC9CPjxERD48Q09ERT5pZ25vcmVDYXNlPC9DT0RFPiAtIGlmIDxjb2RlPnRydWU8L2NvZGU+LCBpZ25vcmUgY2FzZSB3aGVuIGNvbXBhcmluZworICAgICAgICBjaGFyYWN0ZXJzLjxERD48Q09ERT50b2Zmc2V0PC9DT0RFPiAtIHRoZSBzdGFydGluZyBvZmZzZXQgb2YgdGhlIHN1YnJlZ2lvbiBpbiB0aGlzCisgICAgICAgIHN0cmluZy48REQ+PENPREU+b3RoZXI8L0NPREU+IC0gdGhlIHN0cmluZyBhcmd1bWVudC48REQ+PENPREU+b29mZnNldDwvQ09ERT4gLSB0aGUgc3RhcnRpbmcgb2Zmc2V0IG9mIHRoZSBzdWJyZWdpb24gaW4gdGhlIHN0cmluZworICAgICAgICBhcmd1bWVudC48REQ+PENPREU+bGVuPC9DT0RFPiAtIHRoZSBudW1iZXIgb2YgY2hhcmFjdGVycyB0byBjb21wYXJlLgorICAgICAgICA8RFQ+PEI+UmV0dXJuczo8L0I+PEREPjxjb2RlPnRydWU8L2NvZGU+IGlmIHRoZSBzcGVjaWZpZWQgc3VicmVnaW9uIG9mIHRoaXMgc3RyaW5nCisgICAgICAgIG1hdGNoZXMgdGhlIHNwZWNpZmllZCBzdWJyZWdpb24gb2YgdGhlIHN0cmluZyBhcmd1bWVudDsKKyAgICAgICAgPGNvZGU+ZmFsc2U8L2NvZGU+IG90aGVyd2lzZS4gV2hldGhlciB0aGUgbWF0Y2hpbmcgaXMgZXhhY3QKKyAgICAgICAgb3IgY2FzZSBpbnNlbnNpdGl2ZSBkZXBlbmRzIG9uIHRoZSA8Y29kZT5pZ25vcmVDYXNlPC9jb2RlPgorICAgICAgICBhcmd1bWVudC48L0RMPgorICAgIDwvREQ+Cis8L0RMPgorPEhSPgorCis8QSBOQU1FPSJzdGFydHNXaXRoKGphdmEubGFuZy5TdHJpbmcsIGludCkiPjwhLS0gLS0+PC9BPjxIMz4KKyAgICBzdGFydHNXaXRoPC9IMz4KKzxQUkU+CitwdWJsaWMgYm9vbGVhbiA8Qj5zdGFydHNXaXRoPC9CPig8QSBIUkVGPSIuLi8uLi9qYXZhL2xhbmcvU3RyaW5nLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBqYXZhLmxhbmciPlN0cmluZzwvQT4mbmJzcDtwcmVmaXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGludCZuYnNwO3RvZmZzZXQpPC9QUkU+Cis8REw+CisgICAgPEREPlRlc3RzIGlmIHRoZSBzdWJzdHJpbmcgb2YgdGhpcyBzdHJpbmcgYmVnaW5uaW5nIGF0IHRoZQorICAgICAgICBzcGVjaWZpZWQgaW5kZXggc3RhcnRzIHdpdGggdGhlIHNwZWNpZmllZCBwcmVmaXguCisgICAgICAgIDxQPgorICAgIDxERD48REw+CisgICAgPC9ETD4KKyAgICA8L0REPgorICAgIDxERD48REw+CisgICAgICAgIDxEVD48Qj5QYXJhbWV0ZXJzOjwvQj48REQ+PENPREU+cHJlZml4PC9DT0RFPiAtIHRoZSBwcmVmaXguPEREPjxDT0RFPnRvZmZzZXQ8L0NPREU+IC0gd2hlcmUgdG8gYmVnaW4gbG9va2luZyBpbiB0aGlzIHN0cmluZy4KKyAgICAgICAgPERUPjxCPlJldHVybnM6PC9CPjxERD48Y29kZT50cnVlPC9jb2RlPiBpZiB0aGUgY2hhcmFjdGVyIHNlcXVlbmNlIHJlcHJlc2VudGVkIGJ5IHRoZQorICAgICAgICBhcmd1bWVudCBpcyBhIHByZWZpeCBvZiB0aGUgc3Vic3RyaW5nIG9mIHRoaXMgb2JqZWN0IHN0YXJ0aW5nCisgICAgICAgIGF0IGluZGV4IDxjb2RlPnRvZmZzZXQ8L2NvZGU+OyA8Y29kZT5mYWxzZTwvY29kZT4gb3RoZXJ3aXNlLgorICAgICAgICBUaGUgcmVzdWx0IGlzIDxjb2RlPmZhbHNlPC9jb2RlPiBpZiA8Y29kZT50b2Zmc2V0PC9jb2RlPiBpcworICAgICAgICBuZWdhdGl2ZSBvciBncmVhdGVyIHRoYW4gdGhlIGxlbmd0aCBvZiB0aGlzCisgICAgICAgIDxjb2RlPlN0cmluZzwvY29kZT4gb2JqZWN0OyBvdGhlcndpc2UgdGhlIHJlc3VsdCBpcyB0aGUgc2FtZQorICAgICAgICBhcyB0aGUgcmVzdWx0IG9mIHRoZSBleHByZXNzaW9uCisgICAgICAgICAgPHByZT4KKyAgICAgICAgICB0aGlzLnN1YnN0cmluZyh0b2Zmc2V0KS5zdGFydHNXaXRoKHByZWZpeCkKKyAgICAgICAgICA8L3ByZT48L0RMPgorICAgIDwvREQ+Cis8L0RMPgorPEhSPgorCis8QSBOQU1FPSJzdGFydHNXaXRoKGphdmEubGFuZy5TdHJpbmcpIj48IS0tIC0tPjwvQT48SDM+CisgICAgc3RhcnRzV2l0aDwvSDM+Cis8UFJFPgorcHVibGljIGJvb2xlYW4gPEI+c3RhcnRzV2l0aDwvQj4oPEEgSFJFRj0iLi4vLi4vamF2YS9sYW5nL1N0cmluZy5odG1sIiB0aXRsZT0iY2xhc3MgaW4gamF2YS5sYW5nIj5TdHJpbmc8L0E+Jm5ic3A7cHJlZml4KTwvUFJFPgorPERMPgorICAgIDxERD5UZXN0cyBpZiB0aGlzIHN0cmluZyBzdGFydHMgd2l0aCB0aGUgc3BlY2lmaWVkIHByZWZpeC4KKyAgICAgICAgPFA+CisgICAgPEREPjxETD4KKyAgICA8L0RMPgorICAgIDwvREQ+CisgICAgPEREPjxETD4KKyAgICAgICAgPERUPjxCPlBhcmFtZXRlcnM6PC9CPjxERD48Q09ERT5wcmVmaXg8L0NPREU+IC0gdGhlIHByZWZpeC4KKyAgICAgICAgPERUPjxCPlJldHVybnM6PC9CPjxERD48Y29kZT50cnVlPC9jb2RlPiBpZiB0aGUgY2hhcmFjdGVyIHNlcXVlbmNlIHJlcHJlc2VudGVkIGJ5IHRoZQorICAgICAgICBhcmd1bWVudCBpcyBhIHByZWZpeCBvZiB0aGUgY2hhcmFjdGVyIHNlcXVlbmNlIHJlcHJlc2VudGVkIGJ5CisgICAgICAgIHRoaXMgc3RyaW5nOyA8Y29kZT5mYWxzZTwvY29kZT4gb3RoZXJ3aXNlLgorICAgICAgICBOb3RlIGFsc28gdGhhdCA8Y29kZT50cnVlPC9jb2RlPiB3aWxsIGJlIHJldHVybmVkIGlmIHRoZQorICAgICAgICBhcmd1bWVudCBpcyBhbiBlbXB0eSBzdHJpbmcgb3IgaXMgZXF1YWwgdG8gdGhpcworICAgICAgICA8Y29kZT5TdHJpbmc8L2NvZGU+IG9iamVjdCBhcyBkZXRlcm1pbmVkIGJ5IHRoZQorICAgICAgICA8QSBIUkVGPSIuLi8uLi9qYXZhL2xhbmcvU3RyaW5nLmh0bWwjZXF1YWxzKGphdmEubGFuZy5PYmplY3QpIj48Q09ERT5lcXVhbHMoT2JqZWN0KTwvQ09ERT48L0E+IG1ldGhvZC48RFQ+PEI+U2luY2U6PC9CPjwvRFQ+CisgICAgICAgIDxERD4xLiAwPC9ERD4KKyAgICA8L0RMPgorICAgIDwvREQ+Cis8L0RMPgorPEhSPgorCis8QSBOQU1FPSJlbmRzV2l0aChqYXZhLmxhbmcuU3RyaW5nKSI+PCEtLSAtLT48L0E+PEgzPgorICAgIGVuZHNXaXRoPC9IMz4KKzxQUkU+CitwdWJsaWMgYm9vbGVhbiA8Qj5lbmRzV2l0aDwvQj4oPEEgSFJFRj0iLi4vLi4vamF2YS9sYW5nL1N0cmluZy5odG1sIiB0aXRsZT0iY2xhc3MgaW4gamF2YS5sYW5nIj5TdHJpbmc8L0E+Jm5ic3A7c3VmZml4KTwvUFJFPgorPERMPgorICAgIDxERD5UZXN0cyBpZiB0aGlzIHN0cmluZyBlbmRzIHdpdGggdGhlIHNwZWNpZmllZCBzdWZmaXguCisgICAgICAgIDxQPgorICAgIDxERD48REw+CisgICAgPC9ETD4KKyAgICA8L0REPgorICAgIDxERD48REw+CisgICAgICAgIDxEVD48Qj5QYXJhbWV0ZXJzOjwvQj48REQ+PENPREU+c3VmZml4PC9DT0RFPiAtIHRoZSBzdWZmaXguCisgICAgICAgIDxEVD48Qj5SZXR1cm5zOjwvQj48REQ+PGNvZGU+dHJ1ZTwvY29kZT4gaWYgdGhlIGNoYXJhY3RlciBzZXF1ZW5jZSByZXByZXNlbnRlZCBieSB0aGUKKyAgICAgICAgYXJndW1lbnQgaXMgYSBzdWZmaXggb2YgdGhlIGNoYXJhY3RlciBzZXF1ZW5jZSByZXByZXNlbnRlZCBieQorICAgICAgICB0aGlzIG9iamVjdDsgPGNvZGU+ZmFsc2U8L2NvZGU+IG90aGVyd2lzZS4gTm90ZSB0aGF0IHRoZQorICAgICAgICByZXN1bHQgd2lsbCBiZSA8Y29kZT50cnVlPC9jb2RlPiBpZiB0aGUgYXJndW1lbnQgaXMgdGhlCisgICAgICAgIGVtcHR5IHN0cmluZyBvciBpcyBlcXVhbCB0byB0aGlzIDxjb2RlPlN0cmluZzwvY29kZT4gb2JqZWN0CisgICAgICAgIGFzIGRldGVybWluZWQgYnkgdGhlIDxBIEhSRUY9Ii4uLy4uL2phdmEvbGFuZy9TdHJpbmcuaHRtbCNlcXVhbHMoamF2YS5sYW5nLk9iamVjdCkiPjxDT0RFPmVxdWFscyhPYmplY3QpPC9DT0RFPjwvQT4gbWV0aG9kLjwvREw+CisgICAgPC9ERD4KKzwvREw+Cis8SFI+CisKKzxBIE5BTUU9Imhhc2hDb2RlKCkiPjwhLS0gLS0+PC9BPjxIMz4KKyAgICBoYXNoQ29kZTwvSDM+Cis8UFJFPgorcHVibGljIGludCA8Qj5oYXNoQ29kZTwvQj4oKTwvUFJFPgorPERMPgorICAgIDxERD5SZXR1cm5zIGEgaGFzaCBjb2RlIGZvciB0aGlzIHN0cmluZy4gVGhlIGhhc2ggY29kZSBmb3IgYQorICAgICAgICA8Y29kZT5TdHJpbmc8L2NvZGU+IG9iamVjdCBpcyBjb21wdXRlZCBhcworICAgICAgICA8YmxvY2txdW90ZT48cHJlPgorIHNbMF0qMzFeKG4tMSkgKyBzWzFdKjMxXihuLTIpICsgLi4uICsgc1tuLTFdCisgPC9wcmU+PC9ibG9ja3F1b3RlPgorICAgICAgICB1c2luZyA8Y29kZT5pbnQ8L2NvZGU+IGFyaXRobWV0aWMsIHdoZXJlIDxjb2RlPnNbaV08L2NvZGU+IGlzIHRoZQorICAgICAgICA8aT5pPC9pPnRoIGNoYXJhY3RlciBvZiB0aGUgc3RyaW5nLCA8Y29kZT5uPC9jb2RlPiBpcyB0aGUgbGVuZ3RoIG9mCisgICAgICAgIHRoZSBzdHJpbmcsIGFuZCA8Y29kZT5ePC9jb2RlPiBpbmRpY2F0ZXMgZXhwb25lbnRpYXRpb24uCisgICAgICAgIChUaGUgaGFzaCB2YWx1ZSBvZiB0aGUgZW1wdHkgc3RyaW5nIGlzIHplcm8uKQorICAgICAgICA8UD4KKyAgICA8REQ+PERMPgorICAgICAgICA8RFQ+PEI+T3ZlcnJpZGVzOjwvQj48REQ+PENPREU+PEEgSFJFRj0iLi4vLi4vamF2YS9sYW5nL09iamVjdC5odG1sI2hhc2hDb2RlKCkiPmhhc2hDb2RlPC9BPjwvQ09ERT4gaW4gY2xhc3MgPENPREU+PEEgSFJFRj0iLi4vLi4vamF2YS9sYW5nL09iamVjdC5odG1sIiB0aXRsZT0iY2xhc3MgaW4gamF2YS5sYW5nIj5PYmplY3Q8L0E+PC9DT0RFPjwvREw+CisgICAgPC9ERD4KKyAgICA8REQ+PERMPgorCisgICAgICAgIDxEVD48Qj5SZXR1cm5zOjwvQj48REQ+YSBoYXNoIGNvZGUgdmFsdWUgZm9yIHRoaXMgb2JqZWN0LjxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uL2phdmEvbGFuZy9PYmplY3QuaHRtbCNlcXVhbHMoamF2YS5sYW5nLk9iamVjdCkiPjxDT0RFPk9iamVjdC5lcXVhbHMoamF2YS5sYW5nLk9iamVjdCk8L0NPREU+PC9BPiwKKyAgICAgICAgPEEgSFJFRj0iLi4vLi4vamF2YS91dGlsL0hhc2h0YWJsZS5odG1sIiB0aXRsZT0iY2xhc3MgaW4gamF2YS51dGlsIj48Q09ERT5IYXNodGFibGU8L0NPREU+PC9BPjwvREw+CisgICAgPC9ERD4KKzwvREw+Cis8SFI+CisKKzxBIE5BTUU9ImluZGV4T2YoaW50KSI+PCEtLSAtLT48L0E+PEgzPgorICAgIGluZGV4T2Y8L0gzPgorPFBSRT4KK3B1YmxpYyBpbnQgPEI+aW5kZXhPZjwvQj4oaW50Jm5ic3A7Y2gpPC9QUkU+Cis8REw+CisgICAgPEREPlJldHVybnMgdGhlIGluZGV4IHdpdGhpbiB0aGlzIHN0cmluZyBvZiB0aGUgZmlyc3Qgb2NjdXJyZW5jZSBvZgorICAgICAgICB0aGUgc3BlY2lmaWVkIGNoYXJhY3Rlci4gSWYgYSBjaGFyYWN0ZXIgd2l0aCB2YWx1ZQorICAgICAgICA8Y29kZT5jaDwvY29kZT4gb2NjdXJzIGluIHRoZSBjaGFyYWN0ZXIgc2VxdWVuY2UgcmVwcmVzZW50ZWQgYnkKKyAgICAgICAgdGhpcyA8Y29kZT5TdHJpbmc8L2NvZGU+IG9iamVjdCwgdGhlbiB0aGUgaW5kZXggKGluIFVuaWNvZGUKKyAgICAgICAgY29kZSB1bml0cykgb2YgdGhlIGZpcnN0IHN1Y2ggb2NjdXJyZW5jZSBpcyByZXR1cm5lZC4gRm9yCisgICAgICAgIHZhbHVlcyBvZiA8Y29kZT5jaDwvY29kZT4gaW4gdGhlIHJhbmdlIGZyb20gMCB0byAweEZGRkYKKyAgICAgICAgKGluY2x1c2l2ZSksIHRoaXMgaXMgdGhlIHNtYWxsZXN0IHZhbHVlIDxpPms8L2k+IHN1Y2ggdGhhdDoKKyAgICAgICAgPGJsb2NrcXVvdGU+PHByZT4KKyB0aGlzLmNoYXJBdCg8aT5rPC9pPikgPT0gY2gKKyA8L3ByZT48L2Jsb2NrcXVvdGU+CisgICAgICAgIGlzIHRydWUuIEZvciBvdGhlciB2YWx1ZXMgb2YgPGNvZGU+Y2g8L2NvZGU+LCBpdCBpcyB0aGUKKyAgICAgICAgc21hbGxlc3QgdmFsdWUgPGk+azwvaT4gc3VjaCB0aGF0OgorICAgICAgICA8YmxvY2txdW90ZT48cHJlPgorIHRoaXMuY29kZVBvaW50QXQoPGk+azwvaT4pID09IGNoCisgPC9wcmU+PC9ibG9ja3F1b3RlPgorICAgICAgICBpcyB0cnVlLiBJbiBlaXRoZXIgY2FzZSwgaWYgbm8gc3VjaCBjaGFyYWN0ZXIgb2NjdXJzIGluIHRoaXMKKyAgICAgICAgc3RyaW5nLCB0aGVuIDxjb2RlPi0xPC9jb2RlPiBpcyByZXR1cm5lZC4KKyAgICAgICAgPFA+CisgICAgPEREPjxETD4KKyAgICA8L0RMPgorICAgIDwvREQ+CisgICAgPEREPjxETD4KKyAgICAgICAgPERUPjxCPlBhcmFtZXRlcnM6PC9CPjxERD48Q09ERT5jaDwvQ09ERT4gLSBhIGNoYXJhY3RlciAoVW5pY29kZSBjb2RlIHBvaW50KS4KKyAgICAgICAgPERUPjxCPlJldHVybnM6PC9CPjxERD50aGUgaW5kZXggb2YgdGhlIGZpcnN0IG9jY3VycmVuY2Ugb2YgdGhlIGNoYXJhY3RlciBpbiB0aGUKKyAgICAgICAgY2hhcmFjdGVyIHNlcXVlbmNlIHJlcHJlc2VudGVkIGJ5IHRoaXMgb2JqZWN0LCBvcgorICAgICAgICA8Y29kZT4tMTwvY29kZT4gaWYgdGhlIGNoYXJhY3RlciBkb2VzIG5vdCBvY2N1ci48L0RMPgorICAgIDwvREQ+Cis8L0RMPgorPEhSPgorCis8QSBOQU1FPSJpbmRleE9mKGludCwgaW50KSI+PCEtLSAtLT48L0E+PEgzPgorICAgIGluZGV4T2Y8L0gzPgorPFBSRT4KK3B1YmxpYyBpbnQgPEI+aW5kZXhPZjwvQj4oaW50Jm5ic3A7Y2gsCisgICAgICAgICAgICAgICAgICAgaW50Jm5ic3A7ZnJvbUluZGV4KTwvUFJFPgorPERMPgorICAgIDxERD5SZXR1cm5zIHRoZSBpbmRleCB3aXRoaW4gdGhpcyBzdHJpbmcgb2YgdGhlIGZpcnN0IG9jY3VycmVuY2Ugb2YgdGhlCisgICAgICAgIHNwZWNpZmllZCBjaGFyYWN0ZXIsIHN0YXJ0aW5nIHRoZSBzZWFyY2ggYXQgdGhlIHNwZWNpZmllZCBpbmRleC4KKyAgICAgICAgPHA+CisgICAgICAgICAgICBJZiBhIGNoYXJhY3RlciB3aXRoIHZhbHVlIDxjb2RlPmNoPC9jb2RlPiBvY2N1cnMgaW4gdGhlCisgICAgICAgICAgICBjaGFyYWN0ZXIgc2VxdWVuY2UgcmVwcmVzZW50ZWQgYnkgdGhpcyA8Y29kZT5TdHJpbmc8L2NvZGU+CisgICAgICAgICAgICBvYmplY3QgYXQgYW4gaW5kZXggbm8gc21hbGxlciB0aGFuIDxjb2RlPmZyb21JbmRleDwvY29kZT4sIHRoZW4KKyAgICAgICAgICAgIHRoZSBpbmRleCBvZiB0aGUgZmlyc3Qgc3VjaCBvY2N1cnJlbmNlIGlzIHJldHVybmVkLiBGb3IgdmFsdWVzCisgICAgICAgICAgICBvZiA8Y29kZT5jaDwvY29kZT4gaW4gdGhlIHJhbmdlIGZyb20gMCB0byAweEZGRkYgKGluY2x1c2l2ZSksCisgICAgICAgICAgICB0aGlzIGlzIHRoZSBzbWFsbGVzdCB2YWx1ZSA8aT5rPC9pPiBzdWNoIHRoYXQ6CisgICAgICAgIDxibG9ja3F1b3RlPjxwcmU+CisgKHRoaXMuY2hhckF0KDxpPms8L2k+KSA9PSBjaCkgJiYgKDxpPms8L2k+ICZndDs9IGZyb21JbmRleCkKKyA8L3ByZT48L2Jsb2NrcXVvdGU+CisgICAgICAgIGlzIHRydWUuIEZvciBvdGhlciB2YWx1ZXMgb2YgPGNvZGU+Y2g8L2NvZGU+LCBpdCBpcyB0aGUKKyAgICAgICAgc21hbGxlc3QgdmFsdWUgPGk+azwvaT4gc3VjaCB0aGF0OgorICAgICAgICA8YmxvY2txdW90ZT48cHJlPgorICh0aGlzLmNvZGVQb2ludEF0KDxpPms8L2k+KSA9PSBjaCkgJiYgKDxpPms8L2k+ICZndDs9IGZyb21JbmRleCkKKyA8L3ByZT48L2Jsb2NrcXVvdGU+CisgICAgICAgIGlzIHRydWUuIEluIGVpdGhlciBjYXNlLCBpZiBubyBzdWNoIGNoYXJhY3RlciBvY2N1cnMgaW4gdGhpcworICAgICAgICBzdHJpbmcgYXQgb3IgYWZ0ZXIgcG9zaXRpb24gPGNvZGU+ZnJvbUluZGV4PC9jb2RlPiwgdGhlbgorICAgICAgICA8Y29kZT4tMTwvY29kZT4gaXMgcmV0dXJuZWQuCisKKyAgICAgICAgPHA+CisgICAgICAgICAgICBUaGVyZSBpcyBubyByZXN0cmljdGlvbiBvbiB0aGUgdmFsdWUgb2YgPGNvZGU+ZnJvbUluZGV4PC9jb2RlPi4gSWYgaXQKKyAgICAgICAgICAgIGlzIG5lZ2F0aXZlLCBpdCBoYXMgdGhlIHNhbWUgZWZmZWN0IGFzIGlmIGl0IHdlcmUgemVybzogdGhpcyBlbnRpcmUKKyAgICAgICAgICAgIHN0cmluZyBtYXkgYmUgc2VhcmNoZWQuIElmIGl0IGlzIGdyZWF0ZXIgdGhhbiB0aGUgbGVuZ3RoIG9mIHRoaXMKKyAgICAgICAgICAgIHN0cmluZywgaXQgaGFzIHRoZSBzYW1lIGVmZmVjdCBhcyBpZiBpdCB3ZXJlIGVxdWFsIHRvIHRoZSBsZW5ndGggb2YKKyAgICAgICAgICAgIHRoaXMgc3RyaW5nOiA8Y29kZT4tMTwvY29kZT4gaXMgcmV0dXJuZWQuCisKKyAgICAgICAgPHA+QWxsIGluZGljZXMgYXJlIHNwZWNpZmllZCBpbiA8Y29kZT5jaGFyPC9jb2RlPiB2YWx1ZXMKKyAgICAgICAgICAgIChVbmljb2RlIGNvZGUgdW5pdHMpLgorICAgICAgICA8UD4KKyAgICA8REQ+PERMPgorICAgIDwvREw+CisgICAgPC9ERD4KKyAgICA8REQ+PERMPgorICAgICAgICA8RFQ+PEI+UGFyYW1ldGVyczo8L0I+PEREPjxDT0RFPmNoPC9DT0RFPiAtIGEgY2hhcmFjdGVyIChVbmljb2RlIGNvZGUgcG9pbnQpLjxERD48Q09ERT5mcm9tSW5kZXg8L0NPREU+IC0gdGhlIGluZGV4IHRvIHN0YXJ0IHRoZSBzZWFyY2ggZnJvbS4KKyAgICAgICAgPERUPjxCPlJldHVybnM6PC9CPjxERD50aGUgaW5kZXggb2YgdGhlIGZpcnN0IG9jY3VycmVuY2Ugb2YgdGhlIGNoYXJhY3RlciBpbiB0aGUKKyAgICAgICAgY2hhcmFjdGVyIHNlcXVlbmNlIHJlcHJlc2VudGVkIGJ5IHRoaXMgb2JqZWN0IHRoYXQgaXMgZ3JlYXRlcgorICAgICAgICB0aGFuIG9yIGVxdWFsIHRvIDxjb2RlPmZyb21JbmRleDwvY29kZT4sIG9yIDxjb2RlPi0xPC9jb2RlPgorICAgICAgICBpZiB0aGUgY2hhcmFjdGVyIGRvZXMgbm90IG9jY3VyLjwvREw+CisgICAgPC9ERD4KKzwvREw+Cis8SFI+CisKKzxBIE5BTUU9Imxhc3RJbmRleE9mKGludCkiPjwhLS0gLS0+PC9BPjxIMz4KKyAgICBsYXN0SW5kZXhPZjwvSDM+Cis8UFJFPgorcHVibGljIGludCA8Qj5sYXN0SW5kZXhPZjwvQj4oaW50Jm5ic3A7Y2gpPC9QUkU+Cis8REw+CisgICAgPEREPlJldHVybnMgdGhlIGluZGV4IHdpdGhpbiB0aGlzIHN0cmluZyBvZiB0aGUgbGFzdCBvY2N1cnJlbmNlIG9mCisgICAgICAgIHRoZSBzcGVjaWZpZWQgY2hhcmFjdGVyLiBGb3IgdmFsdWVzIG9mIDxjb2RlPmNoPC9jb2RlPiBpbiB0aGUKKyAgICAgICAgcmFuZ2UgZnJvbSAwIHRvIDB4RkZGRiAoaW5jbHVzaXZlKSwgdGhlIGluZGV4IChpbiBVbmljb2RlIGNvZGUKKyAgICAgICAgdW5pdHMpIHJldHVybmVkIGlzIHRoZSBsYXJnZXN0IHZhbHVlIDxpPms8L2k+IHN1Y2ggdGhhdDoKKyAgICAgICAgPGJsb2NrcXVvdGU+PHByZT4KKyB0aGlzLmNoYXJBdCg8aT5rPC9pPikgPT0gY2gKKyA8L3ByZT48L2Jsb2NrcXVvdGU+CisgICAgICAgIGlzIHRydWUuIEZvciBvdGhlciB2YWx1ZXMgb2YgPGNvZGU+Y2g8L2NvZGU+LCBpdCBpcyB0aGUKKyAgICAgICAgbGFyZ2VzdCB2YWx1ZSA8aT5rPC9pPiBzdWNoIHRoYXQ6CisgICAgICAgIDxibG9ja3F1b3RlPjxwcmU+CisgdGhpcy5jb2RlUG9pbnRBdCg8aT5rPC9pPikgPT0gY2gKKyA8L3ByZT48L2Jsb2NrcXVvdGU+CisgICAgICAgIGlzIHRydWUuICBJbiBlaXRoZXIgY2FzZSwgaWYgbm8gc3VjaCBjaGFyYWN0ZXIgb2NjdXJzIGluIHRoaXMKKyAgICAgICAgc3RyaW5nLCB0aGVuIDxjb2RlPi0xPC9jb2RlPiBpcyByZXR1cm5lZC4gIFRoZQorICAgICAgICA8Y29kZT5TdHJpbmc8L2NvZGU+IGlzIHNlYXJjaGVkIGJhY2t3YXJkcyBzdGFydGluZyBhdCB0aGUgbGFzdAorICAgICAgICBjaGFyYWN0ZXIuCisgICAgICAgIDxQPgorICAgIDxERD48REw+CisgICAgPC9ETD4KKyAgICA8L0REPgorICAgIDxERD48REw+CisgICAgICAgIDxEVD48Qj5QYXJhbWV0ZXJzOjwvQj48REQ+PENPREU+Y2g8L0NPREU+IC0gYSBjaGFyYWN0ZXIgKFVuaWNvZGUgY29kZSBwb2ludCkuCisgICAgICAgIDxEVD48Qj5SZXR1cm5zOjwvQj48REQ+dGhlIGluZGV4IG9mIHRoZSBsYXN0IG9jY3VycmVuY2Ugb2YgdGhlIGNoYXJhY3RlciBpbiB0aGUKKyAgICAgICAgY2hhcmFjdGVyIHNlcXVlbmNlIHJlcHJlc2VudGVkIGJ5IHRoaXMgb2JqZWN0LCBvcgorICAgICAgICA8Y29kZT4tMTwvY29kZT4gaWYgdGhlIGNoYXJhY3RlciBkb2VzIG5vdCBvY2N1ci48L0RMPgorICAgIDwvREQ+Cis8L0RMPgorPEhSPgorCis8QSBOQU1FPSJsYXN0SW5kZXhPZihpbnQsIGludCkiPjwhLS0gLS0+PC9BPjxIMz4KKyAgICBsYXN0SW5kZXhPZjwvSDM+Cis8UFJFPgorcHVibGljIGludCA8Qj5sYXN0SW5kZXhPZjwvQj4oaW50Jm5ic3A7Y2gsCisgICAgICAgICAgICAgICAgICAgICAgIGludCZuYnNwO2Zyb21JbmRleCk8L1BSRT4KKzxETD4KKyAgICA8REQ+UmV0dXJucyB0aGUgaW5kZXggd2l0aGluIHRoaXMgc3RyaW5nIG9mIHRoZSBsYXN0IG9jY3VycmVuY2Ugb2YKKyAgICAgICAgdGhlIHNwZWNpZmllZCBjaGFyYWN0ZXIsIHNlYXJjaGluZyBiYWNrd2FyZCBzdGFydGluZyBhdCB0aGUKKyAgICAgICAgc3BlY2lmaWVkIGluZGV4LiBGb3IgdmFsdWVzIG9mIDxjb2RlPmNoPC9jb2RlPiBpbiB0aGUgcmFuZ2UKKyAgICAgICAgZnJvbSAwIHRvIDB4RkZGRiAoaW5jbHVzaXZlKSwgdGhlIGluZGV4IHJldHVybmVkIGlzIHRoZSBsYXJnZXN0CisgICAgICAgIHZhbHVlIDxpPms8L2k+IHN1Y2ggdGhhdDoKKyAgICAgICAgPGJsb2NrcXVvdGU+PHByZT4KKyAodGhpcy5jaGFyQXQoPGk+azwvaT4pID09IGNoKSAmJiAoPGk+azwvaT4gJmx0Oz0gZnJvbUluZGV4KQorIDwvcHJlPjwvYmxvY2txdW90ZT4KKyAgICAgICAgaXMgdHJ1ZS4gRm9yIG90aGVyIHZhbHVlcyBvZiA8Y29kZT5jaDwvY29kZT4sIGl0IGlzIHRoZQorICAgICAgICBsYXJnZXN0IHZhbHVlIDxpPms8L2k+IHN1Y2ggdGhhdDoKKyAgICAgICAgPGJsb2NrcXVvdGU+PHByZT4KKyAodGhpcy5jb2RlUG9pbnRBdCg8aT5rPC9pPikgPT0gY2gpICYmICg8aT5rPC9pPiAmbHQ7PSBmcm9tSW5kZXgpCisgPC9wcmU+PC9ibG9ja3F1b3RlPgorICAgICAgICBpcyB0cnVlLiBJbiBlaXRoZXIgY2FzZSwgaWYgbm8gc3VjaCBjaGFyYWN0ZXIgb2NjdXJzIGluIHRoaXMKKyAgICAgICAgc3RyaW5nIGF0IG9yIGJlZm9yZSBwb3NpdGlvbiA8Y29kZT5mcm9tSW5kZXg8L2NvZGU+LCB0aGVuCisgICAgICAgIDxjb2RlPi0xPC9jb2RlPiBpcyByZXR1cm5lZC4KKworICAgICAgICA8cD5BbGwgaW5kaWNlcyBhcmUgc3BlY2lmaWVkIGluIDxjb2RlPmNoYXI8L2NvZGU+IHZhbHVlcworICAgICAgICAgICAgKFVuaWNvZGUgY29kZSB1bml0cykuCisgICAgICAgIDxQPgorICAgIDxERD48REw+CisgICAgPC9ETD4KKyAgICA8L0REPgorICAgIDxERD48REw+CisgICAgICAgIDxEVD48Qj5QYXJhbWV0ZXJzOjwvQj48REQ+PENPREU+Y2g8L0NPREU+IC0gYSBjaGFyYWN0ZXIgKFVuaWNvZGUgY29kZSBwb2ludCkuPEREPjxDT0RFPmZyb21JbmRleDwvQ09ERT4gLSB0aGUgaW5kZXggdG8gc3RhcnQgdGhlIHNlYXJjaCBmcm9tLiBUaGVyZSBpcyBubworICAgICAgICByZXN0cmljdGlvbiBvbiB0aGUgdmFsdWUgb2YgPGNvZGU+ZnJvbUluZGV4PC9jb2RlPi4gSWYgaXQgaXMKKyAgICAgICAgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHRoZSBsZW5ndGggb2YgdGhpcyBzdHJpbmcsIGl0IGhhcworICAgICAgICB0aGUgc2FtZSBlZmZlY3QgYXMgaWYgaXQgd2VyZSBlcXVhbCB0byBvbmUgbGVzcyB0aGFuIHRoZQorICAgICAgICBsZW5ndGggb2YgdGhpcyBzdHJpbmc6IHRoaXMgZW50aXJlIHN0cmluZyBtYXkgYmUgc2VhcmNoZWQuCisgICAgICAgIElmIGl0IGlzIG5lZ2F0aXZlLCBpdCBoYXMgdGhlIHNhbWUgZWZmZWN0IGFzIGlmIGl0IHdlcmUgLTE6CisgICAgICAgIC0xIGlzIHJldHVybmVkLgorICAgICAgICA8RFQ+PEI+UmV0dXJuczo8L0I+PEREPnRoZSBpbmRleCBvZiB0aGUgbGFzdCBvY2N1cnJlbmNlIG9mIHRoZSBjaGFyYWN0ZXIgaW4gdGhlCisgICAgICAgIGNoYXJhY3RlciBzZXF1ZW5jZSByZXByZXNlbnRlZCBieSB0aGlzIG9iamVjdCB0aGF0IGlzIGxlc3MKKyAgICAgICAgdGhhbiBvciBlcXVhbCB0byA8Y29kZT5mcm9tSW5kZXg8L2NvZGU+LCBvciA8Y29kZT4tMTwvY29kZT4KKyAgICAgICAgaWYgdGhlIGNoYXJhY3RlciBkb2VzIG5vdCBvY2N1ciBiZWZvcmUgdGhhdCBwb2ludC48L0RMPgorICAgIDwvREQ+Cis8L0RMPgorPEhSPgorCis8QSBOQU1FPSJpbmRleE9mKGphdmEubGFuZy5TdHJpbmcpIj48IS0tIC0tPjwvQT48SDM+CisgICAgaW5kZXhPZjwvSDM+Cis8UFJFPgorcHVibGljIGludCA8Qj5pbmRleE9mPC9CPig8QSBIUkVGPSIuLi8uLi9qYXZhL2xhbmcvU3RyaW5nLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBqYXZhLmxhbmciPlN0cmluZzwvQT4mbmJzcDtzdHIpPC9QUkU+Cis8REw+CisgICAgPEREPlJldHVybnMgdGhlIGluZGV4IHdpdGhpbiB0aGlzIHN0cmluZyBvZiB0aGUgZmlyc3Qgb2NjdXJyZW5jZSBvZiB0aGUKKyAgICAgICAgc3BlY2lmaWVkIHN1YnN0cmluZy4gVGhlIGludGVnZXIgcmV0dXJuZWQgaXMgdGhlIHNtYWxsZXN0IHZhbHVlCisgICAgICAgIDxpPms8L2k+IHN1Y2ggdGhhdDoKKyAgICAgICAgPGJsb2NrcXVvdGU+PHByZT4KKyB0aGlzLnN0YXJ0c1dpdGgoc3RyLCA8aT5rPC9pPikKKyA8L3ByZT48L2Jsb2NrcXVvdGU+CisgICAgICAgIGlzIDxjb2RlPnRydWU8L2NvZGU+LgorICAgICAgICA8UD4KKyAgICA8REQ+PERMPgorICAgIDwvREw+CisgICAgPC9ERD4KKyAgICA8REQ+PERMPgorICAgICAgICA8RFQ+PEI+UGFyYW1ldGVyczo8L0I+PEREPjxDT0RFPnN0cjwvQ09ERT4gLSBhbnkgc3RyaW5nLgorICAgICAgICA8RFQ+PEI+UmV0dXJuczo8L0I+PEREPmlmIHRoZSBzdHJpbmcgYXJndW1lbnQgb2NjdXJzIGFzIGEgc3Vic3RyaW5nIHdpdGhpbiB0aGlzCisgICAgICAgIG9iamVjdCwgdGhlbiB0aGUgaW5kZXggb2YgdGhlIGZpcnN0IGNoYXJhY3RlciBvZiB0aGUgZmlyc3QKKyAgICAgICAgc3VjaCBzdWJzdHJpbmcgaXMgcmV0dXJuZWQ7IGlmIGl0IGRvZXMgbm90IG9jY3VyIGFzIGEKKyAgICAgICAgc3Vic3RyaW5nLCA8Y29kZT4tMTwvY29kZT4gaXMgcmV0dXJuZWQuPC9ETD4KKyAgICA8L0REPgorPC9ETD4KKzxIUj4KKworPEEgTkFNRT0iaW5kZXhPZihqYXZhLmxhbmcuU3RyaW5nLCBpbnQpIj48IS0tIC0tPjwvQT48SDM+CisgICAgaW5kZXhPZjwvSDM+Cis8UFJFPgorcHVibGljIGludCA8Qj5pbmRleE9mPC9CPig8QSBIUkVGPSIuLi8uLi9qYXZhL2xhbmcvU3RyaW5nLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBqYXZhLmxhbmciPlN0cmluZzwvQT4mbmJzcDtzdHIsCisgICAgICAgICAgICAgICAgICAgaW50Jm5ic3A7ZnJvbUluZGV4KTwvUFJFPgorPERMPgorICAgIDxERD5SZXR1cm5zIHRoZSBpbmRleCB3aXRoaW4gdGhpcyBzdHJpbmcgb2YgdGhlIGZpcnN0IG9jY3VycmVuY2Ugb2YgdGhlCisgICAgICAgIHNwZWNpZmllZCBzdWJzdHJpbmcsIHN0YXJ0aW5nIGF0IHRoZSBzcGVjaWZpZWQgaW5kZXguICBUaGUgaW50ZWdlcgorICAgICAgICByZXR1cm5lZCBpcyB0aGUgc21hbGxlc3QgdmFsdWUgPHR0Pms8L3R0PiBmb3Igd2hpY2g6CisgICAgICAgIDxibG9ja3F1b3RlPjxwcmU+CisgICAgIGsgJmd0Oz0gTWF0aC5taW4oZnJvbUluZGV4LCB0aGlzLmxlbmd0aCgpKSAmJiB0aGlzLnN0YXJ0c1dpdGgoc3RyLCBrKQorIDwvcHJlPjwvYmxvY2txdW90ZT4KKyAgICAgICAgSWYgbm8gc3VjaCB2YWx1ZSBvZiA8aT5rPC9pPiBleGlzdHMsIHRoZW4gLTEgaXMgcmV0dXJuZWQuCisgICAgICAgIDxQPgorICAgIDxERD48REw+CisgICAgPC9ETD4KKyAgICA8L0REPgorICAgIDxERD48REw+CisgICAgICAgIDxEVD48Qj5QYXJhbWV0ZXJzOjwvQj48REQ+PENPREU+c3RyPC9DT0RFPiAtIHRoZSBzdWJzdHJpbmcgZm9yIHdoaWNoIHRvIHNlYXJjaC48REQ+PENPREU+ZnJvbUluZGV4PC9DT0RFPiAtIHRoZSBpbmRleCBmcm9tIHdoaWNoIHRvIHN0YXJ0IHRoZSBzZWFyY2guCisgICAgICAgIDxEVD48Qj5SZXR1cm5zOjwvQj48REQ+dGhlIGluZGV4IHdpdGhpbiB0aGlzIHN0cmluZyBvZiB0aGUgZmlyc3Qgb2NjdXJyZW5jZSBvZiB0aGUKKyAgICAgICAgc3BlY2lmaWVkIHN1YnN0cmluZywgc3RhcnRpbmcgYXQgdGhlIHNwZWNpZmllZCBpbmRleC48L0RMPgorICAgIDwvREQ+Cis8L0RMPgorPEhSPgorCis8QSBOQU1FPSJsYXN0SW5kZXhPZihqYXZhLmxhbmcuU3RyaW5nKSI+PCEtLSAtLT48L0E+PEgzPgorICAgIGxhc3RJbmRleE9mPC9IMz4KKzxQUkU+CitwdWJsaWMgaW50IDxCPmxhc3RJbmRleE9mPC9CPig8QSBIUkVGPSIuLi8uLi9qYXZhL2xhbmcvU3RyaW5nLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBqYXZhLmxhbmciPlN0cmluZzwvQT4mbmJzcDtzdHIpPC9QUkU+Cis8REw+CisgICAgPEREPlJldHVybnMgdGhlIGluZGV4IHdpdGhpbiB0aGlzIHN0cmluZyBvZiB0aGUgcmlnaHRtb3N0IG9jY3VycmVuY2UKKyAgICAgICAgb2YgdGhlIHNwZWNpZmllZCBzdWJzdHJpbmcuICBUaGUgcmlnaHRtb3N0IGVtcHR5IHN0cmluZyAiIiBpcworICAgICAgICBjb25zaWRlcmVkIHRvIG9jY3VyIGF0IHRoZSBpbmRleCB2YWx1ZSA8Y29kZT50aGlzLmxlbmd0aCgpPC9jb2RlPi4KKyAgICAgICAgVGhlIHJldHVybmVkIGluZGV4IGlzIHRoZSBsYXJnZXN0IHZhbHVlIDxpPms8L2k+IHN1Y2ggdGhhdAorICAgICAgICA8YmxvY2txdW90ZT48cHJlPgorIHRoaXMuc3RhcnRzV2l0aChzdHIsIGspCisgPC9wcmU+PC9ibG9ja3F1b3RlPgorICAgICAgICBpcyB0cnVlLgorICAgICAgICA8UD4KKyAgICA8REQ+PERMPgorICAgIDwvREw+CisgICAgPC9ERD4KKyAgICA8REQ+PERMPgorICAgICAgICA8RFQ+PEI+UGFyYW1ldGVyczo8L0I+PEREPjxDT0RFPnN0cjwvQ09ERT4gLSB0aGUgc3Vic3RyaW5nIHRvIHNlYXJjaCBmb3IuCisgICAgICAgIDxEVD48Qj5SZXR1cm5zOjwvQj48REQ+aWYgdGhlIHN0cmluZyBhcmd1bWVudCBvY2N1cnMgb25lIG9yIG1vcmUgdGltZXMgYXMgYSBzdWJzdHJpbmcKKyAgICAgICAgd2l0aGluIHRoaXMgb2JqZWN0LCB0aGVuIHRoZSBpbmRleCBvZiB0aGUgZmlyc3QgY2hhcmFjdGVyIG9mCisgICAgICAgIHRoZSBsYXN0IHN1Y2ggc3Vic3RyaW5nIGlzIHJldHVybmVkLiBJZiBpdCBkb2VzIG5vdCBvY2N1ciBhcworICAgICAgICBhIHN1YnN0cmluZywgPGNvZGU+LTE8L2NvZGU+IGlzIHJldHVybmVkLjwvREw+CisgICAgPC9ERD4KKzwvREw+Cis8SFI+CisKKzxBIE5BTUU9Imxhc3RJbmRleE9mKGphdmEubGFuZy5TdHJpbmcsIGludCkiPjwhLS0gLS0+PC9BPjxIMz4KKyAgICBsYXN0SW5kZXhPZjwvSDM+Cis8UFJFPgorcHVibGljIGludCA8Qj5sYXN0SW5kZXhPZjwvQj4oPEEgSFJFRj0iLi4vLi4vamF2YS9sYW5nL1N0cmluZy5odG1sIiB0aXRsZT0iY2xhc3MgaW4gamF2YS5sYW5nIj5TdHJpbmc8L0E+Jm5ic3A7c3RyLAorICAgICAgICAgICAgICAgICAgICAgICBpbnQmbmJzcDtmcm9tSW5kZXgpPC9QUkU+Cis8REw+CisgICAgPEREPlJldHVybnMgdGhlIGluZGV4IHdpdGhpbiB0aGlzIHN0cmluZyBvZiB0aGUgbGFzdCBvY2N1cnJlbmNlIG9mIHRoZQorICAgICAgICBzcGVjaWZpZWQgc3Vic3RyaW5nLCBzZWFyY2hpbmcgYmFja3dhcmQgc3RhcnRpbmcgYXQgdGhlIHNwZWNpZmllZCBpbmRleC4KKyAgICAgICAgVGhlIGludGVnZXIgcmV0dXJuZWQgaXMgdGhlIGxhcmdlc3QgdmFsdWUgPGk+azwvaT4gc3VjaCB0aGF0OgorICAgICAgICA8YmxvY2txdW90ZT48cHJlPgorICAgICBrICZsdDs9IE1hdGgubWluKGZyb21JbmRleCwgdGhpcy5sZW5ndGgoKSkgJiYgdGhpcy5zdGFydHNXaXRoKHN0ciwgaykKKyA8L3ByZT48L2Jsb2NrcXVvdGU+CisgICAgICAgIElmIG5vIHN1Y2ggdmFsdWUgb2YgPGk+azwvaT4gZXhpc3RzLCB0aGVuIC0xIGlzIHJldHVybmVkLgorICAgICAgICA8UD4KKyAgICA8REQ+PERMPgorICAgIDwvREw+CisgICAgPC9ERD4KKyAgICA8REQ+PERMPgorICAgICAgICA8RFQ+PEI+UGFyYW1ldGVyczo8L0I+PEREPjxDT0RFPnN0cjwvQ09ERT4gLSB0aGUgc3Vic3RyaW5nIHRvIHNlYXJjaCBmb3IuPEREPjxDT0RFPmZyb21JbmRleDwvQ09ERT4gLSB0aGUgaW5kZXggdG8gc3RhcnQgdGhlIHNlYXJjaCBmcm9tLgorICAgICAgICA8RFQ+PEI+UmV0dXJuczo8L0I+PEREPnRoZSBpbmRleCB3aXRoaW4gdGhpcyBzdHJpbmcgb2YgdGhlIGxhc3Qgb2NjdXJyZW5jZSBvZiB0aGUKKyAgICAgICAgc3BlY2lmaWVkIHN1YnN0cmluZy48L0RMPgorICAgIDwvREQ+Cis8L0RMPgorPEhSPgorCis8QSBOQU1FPSJzdWJzdHJpbmcoaW50KSI+PCEtLSAtLT48L0E+PEgzPgorICAgIHN1YnN0cmluZzwvSDM+Cis8UFJFPgorcHVibGljIDxBIEhSRUY9Ii4uLy4uL2phdmEvbGFuZy9TdHJpbmcuaHRtbCIgdGl0bGU9ImNsYXNzIGluIGphdmEubGFuZyI+U3RyaW5nPC9BPiA8Qj5zdWJzdHJpbmc8L0I+KGludCZuYnNwO2JlZ2luSW5kZXgpPC9QUkU+Cis8REw+CisgICAgPEREPlJldHVybnMgYSBuZXcgc3RyaW5nIHRoYXQgaXMgYSBzdWJzdHJpbmcgb2YgdGhpcyBzdHJpbmcuIFRoZQorICAgICAgICBzdWJzdHJpbmcgYmVnaW5zIHdpdGggdGhlIGNoYXJhY3RlciBhdCB0aGUgc3BlY2lmaWVkIGluZGV4IGFuZAorICAgICAgICBleHRlbmRzIHRvIHRoZSBlbmQgb2YgdGhpcyBzdHJpbmcuIDxwPgorICAgICAgICAgICAgRXhhbXBsZXM6CisgICAgICAgIDxibG9ja3F1b3RlPjxwcmU+CisgInVuaGFwcHkiLnN1YnN0cmluZygyKSByZXR1cm5zICJoYXBweSIKKyAiSGFyYmlzb24iLnN1YnN0cmluZygzKSByZXR1cm5zICJiaXNvbiIKKyAiZW1wdGluZXNzIi5zdWJzdHJpbmcoOSkgcmV0dXJucyAiIiAoYW4gZW1wdHkgc3RyaW5nKQorIDwvcHJlPjwvYmxvY2txdW90ZT4KKyAgICAgICAgPFA+CisgICAgPEREPjxETD4KKyAgICA8L0RMPgorICAgIDwvREQ+CisgICAgPEREPjxETD4KKyAgICAgICAgPERUPjxCPlBhcmFtZXRlcnM6PC9CPjxERD48Q09ERT5iZWdpbkluZGV4PC9DT0RFPiAtIHRoZSBiZWdpbm5pbmcgaW5kZXgsIGluY2x1c2l2ZS4KKyAgICAgICAgPERUPjxCPlJldHVybnM6PC9CPjxERD50aGUgc3BlY2lmaWVkIHN1YnN0cmluZy4KKyAgICAgICAgPERUPjxCPlRocm93czo8L0I+CisgICAgICAgIDxERD48Q09ERT48QSBIUkVGPSIuLi8uLi9qYXZhL2xhbmcvSW5kZXhPdXRPZkJvdW5kc0V4Y2VwdGlvbi5odG1sIiB0aXRsZT0iY2xhc3MgaW4gamF2YS5sYW5nIj5JbmRleE91dE9mQm91bmRzRXhjZXB0aW9uPC9BPjwvQ09ERT4gLSBpZgorICAgICAgICAgICAgPGNvZGU+YmVnaW5JbmRleDwvY29kZT4gaXMgbmVnYXRpdmUgb3IgbGFyZ2VyIHRoYW4gdGhlCisgICAgICAgICAgICBsZW5ndGggb2YgdGhpcyA8Y29kZT5TdHJpbmc8L2NvZGU+IG9iamVjdC48L0RMPgorICAgIDwvREQ+Cis8L0RMPgorPEhSPgorCis8QSBOQU1FPSJzdWJzdHJpbmcoaW50LCBpbnQpIj48IS0tIC0tPjwvQT48SDM+CisgICAgc3Vic3RyaW5nPC9IMz4KKzxQUkU+CitwdWJsaWMgPEEgSFJFRj0iLi4vLi4vamF2YS9sYW5nL1N0cmluZy5odG1sIiB0aXRsZT0iY2xhc3MgaW4gamF2YS5sYW5nIj5TdHJpbmc8L0E+IDxCPnN1YnN0cmluZzwvQj4oaW50Jm5ic3A7YmVnaW5JbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgIGludCZuYnNwO2VuZEluZGV4KTwvUFJFPgorPERMPgorICAgIDxERD5SZXR1cm5zIGEgbmV3IHN0cmluZyB0aGF0IGlzIGEgc3Vic3RyaW5nIG9mIHRoaXMgc3RyaW5nLiBUaGUKKyAgICAgICAgc3Vic3RyaW5nIGJlZ2lucyBhdCB0aGUgc3BlY2lmaWVkIDxjb2RlPmJlZ2luSW5kZXg8L2NvZGU+IGFuZAorICAgICAgICBleHRlbmRzIHRvIHRoZSBjaGFyYWN0ZXIgYXQgaW5kZXggPGNvZGU+ZW5kSW5kZXggLSAxPC9jb2RlPi4KKyAgICAgICAgVGh1cyB0aGUgbGVuZ3RoIG9mIHRoZSBzdWJzdHJpbmcgaXMgPGNvZGU+ZW5kSW5kZXgtYmVnaW5JbmRleDwvY29kZT4uCisgICAgICAgIDxwPgorICAgICAgICAgICAgRXhhbXBsZXM6CisgICAgICAgIDxibG9ja3F1b3RlPjxwcmU+CisgImhhbWJ1cmdlciIuc3Vic3RyaW5nKDQsIDgpIHJldHVybnMgInVyZ2UiCisgInNtaWxlcyIuc3Vic3RyaW5nKDEsIDUpIHJldHVybnMgIm1pbGUiCisgPC9wcmU+PC9ibG9ja3F1b3RlPgorICAgICAgICA8UD4KKyAgICA8REQ+PERMPgorICAgIDwvREw+CisgICAgPC9ERD4KKyAgICA8REQ+PERMPgorICAgICAgICA8RFQ+PEI+UGFyYW1ldGVyczo8L0I+PEREPjxDT0RFPmJlZ2luSW5kZXg8L0NPREU+IC0gdGhlIGJlZ2lubmluZyBpbmRleCwgaW5jbHVzaXZlLjxERD48Q09ERT5lbmRJbmRleDwvQ09ERT4gLSB0aGUgZW5kaW5nIGluZGV4LCBleGNsdXNpdmUuCisgICAgICAgIDxEVD48Qj5SZXR1cm5zOjwvQj48REQ+dGhlIHNwZWNpZmllZCBzdWJzdHJpbmcuCisgICAgICAgIDxEVD48Qj5UaHJvd3M6PC9CPgorICAgICAgICA8REQ+PENPREU+PEEgSFJFRj0iLi4vLi4vamF2YS9sYW5nL0luZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb24uaHRtbCIgdGl0bGU9ImNsYXNzIGluIGphdmEubGFuZyI+SW5kZXhPdXRPZkJvdW5kc0V4Y2VwdGlvbjwvQT48L0NPREU+IC0gaWYgdGhlCisgICAgICAgICAgICA8Y29kZT5iZWdpbkluZGV4PC9jb2RlPiBpcyBuZWdhdGl2ZSwgb3IKKyAgICAgICAgICAgIDxjb2RlPmVuZEluZGV4PC9jb2RlPiBpcyBsYXJnZXIgdGhhbiB0aGUgbGVuZ3RoIG9mCisgICAgICAgICAgICB0aGlzIDxjb2RlPlN0cmluZzwvY29kZT4gb2JqZWN0LCBvcgorICAgICAgICAgICAgPGNvZGU+YmVnaW5JbmRleDwvY29kZT4gaXMgbGFyZ2VyIHRoYW4KKyAgICAgICAgICAgIDxjb2RlPmVuZEluZGV4PC9jb2RlPi48L0RMPgorICAgIDwvREQ+Cis8L0RMPgorPEhSPgorCis8QSBOQU1FPSJzdWJTZXF1ZW5jZShpbnQsIGludCkiPjwhLS0gLS0+PC9BPjxIMz4KKyAgICBzdWJTZXF1ZW5jZTwvSDM+Cis8UFJFPgorcHVibGljIDxBIEhSRUY9Ii4uLy4uL2phdmEvbGFuZy9DaGFyU2VxdWVuY2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBqYXZhLmxhbmciPkNoYXJTZXF1ZW5jZTwvQT4gPEI+c3ViU2VxdWVuY2U8L0I+KGludCZuYnNwO2JlZ2luSW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCZuYnNwO2VuZEluZGV4KTwvUFJFPgorPERMPgorICAgIDxERD5SZXR1cm5zIGEgbmV3IGNoYXJhY3RlciBzZXF1ZW5jZSB0aGF0IGlzIGEgc3Vic2VxdWVuY2Ugb2YgdGhpcyBzZXF1ZW5jZS4KKworICAgICAgICA8cD4gQW4gaW52b2NhdGlvbiBvZiB0aGlzIG1ldGhvZCBvZiB0aGUgZm9ybQorCisgICAgICAgIDxibG9ja3F1b3RlPjxwcmU+Cisgc3RyLnN1YlNlcXVlbmNlKGJlZ2luLCZuYnNwO2VuZCk8L3ByZT48L2Jsb2NrcXVvdGU+CisKKyAgICAgICAgYmVoYXZlcyBpbiBleGFjdGx5IHRoZSBzYW1lIHdheSBhcyB0aGUgaW52b2NhdGlvbgorCisgICAgICAgIDxibG9ja3F1b3RlPjxwcmU+Cisgc3RyLnN1YnN0cmluZyhiZWdpbiwmbmJzcDtlbmQpPC9wcmU+PC9ibG9ja3F1b3RlPgorCisgICAgICAgIFRoaXMgbWV0aG9kIGlzIGRlZmluZWQgc28gdGhhdCB0aGUgPHR0PlN0cmluZzwvdHQ+IGNsYXNzIGNhbiBpbXBsZW1lbnQKKyAgICAgICAgdGhlIDxBIEhSRUY9Ii4uLy4uL2phdmEvbGFuZy9DaGFyU2VxdWVuY2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBqYXZhLmxhbmciPjxDT0RFPkNoYXJTZXF1ZW5jZTwvQ09ERT48L0E+IGludGVyZmFjZS4gPC9wPgorICAgICAgICA8UD4KKyAgICA8REQ+PERMPgorICAgICAgICA8RFQ+PEI+U3BlY2lmaWVkIGJ5OjwvQj48REQ+PENPREU+PEEgSFJFRj0iLi4vLi4vamF2YS9sYW5nL0NoYXJTZXF1ZW5jZS5odG1sI3N1YlNlcXVlbmNlKGludCwgaW50KSI+c3ViU2VxdWVuY2U8L0E+PC9DT0RFPiBpbiBpbnRlcmZhY2UgPENPREU+PEEgSFJFRj0iLi4vLi4vamF2YS9sYW5nL0NoYXJTZXF1ZW5jZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIGphdmEubGFuZyI+Q2hhclNlcXVlbmNlPC9BPjwvQ09ERT48L0RMPgorICAgIDwvREQ+CisgICAgPEREPjxETD4KKyAgICAgICAgPERUPjxCPlBhcmFtZXRlcnM6PC9CPjxERD48Q09ERT5iZWdpbkluZGV4PC9DT0RFPiAtIHRoZSBiZWdpbiBpbmRleCwgaW5jbHVzaXZlLjxERD48Q09ERT5lbmRJbmRleDwvQ09ERT4gLSB0aGUgZW5kIGluZGV4LCBleGNsdXNpdmUuCisgICAgICAgIDxEVD48Qj5SZXR1cm5zOjwvQj48REQ+dGhlIHNwZWNpZmllZCBzdWJzZXF1ZW5jZS4KKyAgICAgICAgPERUPjxCPlRocm93czo8L0I+CisgICAgICAgIDxERD48Q09ERT48QSBIUkVGPSIuLi8uLi9qYXZhL2xhbmcvSW5kZXhPdXRPZkJvdW5kc0V4Y2VwdGlvbi5odG1sIiB0aXRsZT0iY2xhc3MgaW4gamF2YS5sYW5nIj5JbmRleE91dE9mQm91bmRzRXhjZXB0aW9uPC9BPjwvQ09ERT4gLSBpZiA8dHQ+YmVnaW5JbmRleDwvdHQ+IG9yIDx0dD5lbmRJbmRleDwvdHQ+IGFyZSBuZWdhdGl2ZSwKKyAgICAgICAgICAgIGlmIDx0dD5lbmRJbmRleDwvdHQ+IGlzIGdyZWF0ZXIgdGhhbiA8dHQ+bGVuZ3RoKCk8L3R0PiwKKyAgICAgICAgICAgIG9yIGlmIDx0dD5iZWdpbkluZGV4PC90dD4gaXMgZ3JlYXRlciB0aGFuIDx0dD5zdGFydEluZGV4PC90dD48RFQ+PEI+U2luY2U6PC9CPjwvRFQ+CisgICAgICAgIDxERD4xLjQ8L0REPgorICAgIDwvREw+CisgICAgPC9ERD4KKzwvREw+Cis8SFI+CisKKzxBIE5BTUU9ImNvbmNhdChqYXZhLmxhbmcuU3RyaW5nKSI+PCEtLSAtLT48L0E+PEgzPgorICAgIGNvbmNhdDwvSDM+Cis8UFJFPgorcHVibGljIDxBIEhSRUY9Ii4uLy4uL2phdmEvbGFuZy9TdHJpbmcuaHRtbCIgdGl0bGU9ImNsYXNzIGluIGphdmEubGFuZyI+U3RyaW5nPC9BPiA8Qj5jb25jYXQ8L0I+KDxBIEhSRUY9Ii4uLy4uL2phdmEvbGFuZy9TdHJpbmcuaHRtbCIgdGl0bGU9ImNsYXNzIGluIGphdmEubGFuZyI+U3RyaW5nPC9BPiZuYnNwO3N0cik8L1BSRT4KKzxETD4KKyAgICA8REQ+Q29uY2F0ZW5hdGVzIHRoZSBzcGVjaWZpZWQgc3RyaW5nIHRvIHRoZSBlbmQgb2YgdGhpcyBzdHJpbmcuCisgICAgICAgIDxwPgorICAgICAgICAgICAgSWYgdGhlIGxlbmd0aCBvZiB0aGUgYXJndW1lbnQgc3RyaW5nIGlzIDxjb2RlPjA8L2NvZGU+LCB0aGVuIHRoaXMKKyAgICAgICAgICAgIDxjb2RlPlN0cmluZzwvY29kZT4gb2JqZWN0IGlzIHJldHVybmVkLiBPdGhlcndpc2UsIGEgbmV3CisgICAgICAgICAgICA8Y29kZT5TdHJpbmc8L2NvZGU+IG9iamVjdCBpcyBjcmVhdGVkLCByZXByZXNlbnRpbmcgYSBjaGFyYWN0ZXIKKyAgICAgICAgICAgIHNlcXVlbmNlIHRoYXQgaXMgdGhlIGNvbmNhdGVuYXRpb24gb2YgdGhlIGNoYXJhY3RlciBzZXF1ZW5jZQorICAgICAgICAgICAgcmVwcmVzZW50ZWQgYnkgdGhpcyA8Y29kZT5TdHJpbmc8L2NvZGU+IG9iamVjdCBhbmQgdGhlIGNoYXJhY3RlcgorICAgICAgICAgICAgc2VxdWVuY2UgcmVwcmVzZW50ZWQgYnkgdGhlIGFyZ3VtZW50IHN0cmluZy48cD4KKyAgICAgICAgICAgIEV4YW1wbGVzOgorICAgICAgICA8YmxvY2txdW90ZT48cHJlPgorICJjYXJlcyIuY29uY2F0KCJzIikgcmV0dXJucyAiY2FyZXNzIgorICJ0byIuY29uY2F0KCJnZXQiKS5jb25jYXQoImhlciIpIHJldHVybnMgInRvZ2V0aGVyIgorIDwvcHJlPjwvYmxvY2txdW90ZT4KKyAgICAgICAgPFA+CisgICAgPEREPjxETD4KKyAgICA8L0RMPgorICAgIDwvREQ+CisgICAgPEREPjxETD4KKyAgICAgICAgPERUPjxCPlBhcmFtZXRlcnM6PC9CPjxERD48Q09ERT5zdHI8L0NPREU+IC0gdGhlIDxjb2RlPlN0cmluZzwvY29kZT4gdGhhdCBpcyBjb25jYXRlbmF0ZWQgdG8gdGhlIGVuZAorICAgICAgICBvZiB0aGlzIDxjb2RlPlN0cmluZzwvY29kZT4uCisgICAgICAgIDxEVD48Qj5SZXR1cm5zOjwvQj48REQ+YSBzdHJpbmcgdGhhdCByZXByZXNlbnRzIHRoZSBjb25jYXRlbmF0aW9uIG9mIHRoaXMgb2JqZWN0J3MKKyAgICAgICAgY2hhcmFjdGVycyBmb2xsb3dlZCBieSB0aGUgc3RyaW5nIGFyZ3VtZW50J3MgY2hhcmFjdGVycy48L0RMPgorICAgIDwvREQ+Cis8L0RMPgorPEhSPgorCis8QSBOQU1FPSJyZXBsYWNlKGNoYXIsIGNoYXIpIj48IS0tIC0tPjwvQT48SDM+CisgICAgcmVwbGFjZTwvSDM+Cis8UFJFPgorcHVibGljIDxBIEhSRUY9Ii4uLy4uL2phdmEvbGFuZy9TdHJpbmcuaHRtbCIgdGl0bGU9ImNsYXNzIGluIGphdmEubGFuZyI+U3RyaW5nPC9BPiA8Qj5yZXBsYWNlPC9CPihjaGFyJm5ic3A7b2xkQ2hhciwKKyAgICAgICAgICAgICAgICAgICAgICBjaGFyJm5ic3A7bmV3Q2hhcik8L1BSRT4KKzxETD4KKyAgICA8REQ+UmV0dXJucyBhIG5ldyBzdHJpbmcgcmVzdWx0aW5nIGZyb20gcmVwbGFjaW5nIGFsbCBvY2N1cnJlbmNlcyBvZgorICAgICAgICA8Y29kZT5vbGRDaGFyPC9jb2RlPiBpbiB0aGlzIHN0cmluZyB3aXRoIDxjb2RlPm5ld0NoYXI8L2NvZGU+LgorICAgICAgICA8cD4KKyAgICAgICAgICAgIElmIHRoZSBjaGFyYWN0ZXIgPGNvZGU+b2xkQ2hhcjwvY29kZT4gZG9lcyBub3Qgb2NjdXIgaW4gdGhlCisgICAgICAgICAgICBjaGFyYWN0ZXIgc2VxdWVuY2UgcmVwcmVzZW50ZWQgYnkgdGhpcyA8Y29kZT5TdHJpbmc8L2NvZGU+IG9iamVjdCwKKyAgICAgICAgICAgIHRoZW4gYSByZWZlcmVuY2UgdG8gdGhpcyA8Y29kZT5TdHJpbmc8L2NvZGU+IG9iamVjdCBpcyByZXR1cm5lZC4KKyAgICAgICAgICAgIE90aGVyd2lzZSwgYSBuZXcgPGNvZGU+U3RyaW5nPC9jb2RlPiBvYmplY3QgaXMgY3JlYXRlZCB0aGF0CisgICAgICAgICAgICByZXByZXNlbnRzIGEgY2hhcmFjdGVyIHNlcXVlbmNlIGlkZW50aWNhbCB0byB0aGUgY2hhcmFjdGVyIHNlcXVlbmNlCisgICAgICAgICAgICByZXByZXNlbnRlZCBieSB0aGlzIDxjb2RlPlN0cmluZzwvY29kZT4gb2JqZWN0LCBleGNlcHQgdGhhdCBldmVyeQorICAgICAgICAgICAgb2NjdXJyZW5jZSBvZiA8Y29kZT5vbGRDaGFyPC9jb2RlPiBpcyByZXBsYWNlZCBieSBhbiBvY2N1cnJlbmNlCisgICAgICAgICAgICBvZiA8Y29kZT5uZXdDaGFyPC9jb2RlPi4KKyAgICAgICAgPHA+CisgICAgICAgICAgICBFeGFtcGxlczoKKyAgICAgICAgPGJsb2NrcXVvdGU+PHByZT4KKyAibWVzcXVpdGUgaW4geW91ciBjZWxsYXIiLnJlcGxhY2UoJ2UnLCAnbycpCisgICAgICAgICByZXR1cm5zICJtb3NxdWl0byBpbiB5b3VyIGNvbGxhciIKKyAidGhlIHdhciBvZiBiYXJvbmV0cyIucmVwbGFjZSgncicsICd5JykKKyAgICAgICAgIHJldHVybnMgInRoZSB3YXkgb2YgYmF5b25ldHMiCisgInNwYXJyaW5nIHdpdGggYSBwdXJwbGUgcG9ycG9pc2UiLnJlcGxhY2UoJ3AnLCAndCcpCisgICAgICAgICByZXR1cm5zICJzdGFycmluZyB3aXRoIGEgdHVydGxlIHRvcnRvaXNlIgorICJKb25MIi5yZXBsYWNlKCdxJywgJ3gnKSByZXR1cm5zICJKb25MIiAobm8gY2hhbmdlKQorIDwvcHJlPjwvYmxvY2txdW90ZT4KKyAgICAgICAgPFA+CisgICAgPEREPjxETD4KKyAgICA8L0RMPgorICAgIDwvREQ+CisgICAgPEREPjxETD4KKyAgICAgICAgPERUPjxCPlBhcmFtZXRlcnM6PC9CPjxERD48Q09ERT5vbGRDaGFyPC9DT0RFPiAtIHRoZSBvbGQgY2hhcmFjdGVyLjxERD48Q09ERT5uZXdDaGFyPC9DT0RFPiAtIHRoZSBuZXcgY2hhcmFjdGVyLgorICAgICAgICA8RFQ+PEI+UmV0dXJuczo8L0I+PEREPmEgc3RyaW5nIGRlcml2ZWQgZnJvbSB0aGlzIHN0cmluZyBieSByZXBsYWNpbmcgZXZlcnkKKyAgICAgICAgb2NjdXJyZW5jZSBvZiA8Y29kZT5vbGRDaGFyPC9jb2RlPiB3aXRoIDxjb2RlPm5ld0NoYXI8L2NvZGU+LjwvREw+CisgICAgPC9ERD4KKzwvREw+Cis8SFI+CisKKzxBIE5BTUU9Im1hdGNoZXMoamF2YS5sYW5nLlN0cmluZykiPjwhLS0gLS0+PC9BPjxIMz4KKyAgICBtYXRjaGVzPC9IMz4KKzxQUkU+CitwdWJsaWMgYm9vbGVhbiA8Qj5tYXRjaGVzPC9CPig8QSBIUkVGPSIuLi8uLi9qYXZhL2xhbmcvU3RyaW5nLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBqYXZhLmxhbmciPlN0cmluZzwvQT4mbmJzcDtyZWdleCk8L1BSRT4KKzxETD4KKyAgICA8REQ+VGVsbHMgd2hldGhlciBvciBub3QgdGhpcyBzdHJpbmcgbWF0Y2hlcyB0aGUgZ2l2ZW4gPGEKKyAgICAgICAgICAgIGhyZWY9Ii4uL3V0aWwvcmVnZXgvUGF0dGVybi5odG1sI3N1bSI+cmVndWxhciBleHByZXNzaW9uPC9hPi4KKworICAgICAgICA8cD4gQW4gaW52b2NhdGlvbiBvZiB0aGlzIG1ldGhvZCBvZiB0aGUgZm9ybQorICAgICAgICAgICAgPGk+c3RyPC9pPjx0dD4ubWF0Y2hlcyg8L3R0PjxpPnJlZ2V4PC9pPjx0dD4pPC90dD4geWllbGRzIGV4YWN0bHkgdGhlCisgICAgICAgICAgICBzYW1lIHJlc3VsdCBhcyB0aGUgZXhwcmVzc2lvbgorCisgICAgICAgIDxibG9ja3F1b3RlPjx0dD4gPEEgSFJFRj0iLi4vLi4vamF2YS91dGlsL3JlZ2V4L1BhdHRlcm4uaHRtbCIgdGl0bGU9ImNsYXNzIGluIGphdmEudXRpbC5yZWdleCI+PENPREU+UGF0dGVybjwvQ09ERT48L0E+LjxBIEhSRUY9Ii4uLy4uL2phdmEvdXRpbC9yZWdleC9QYXR0ZXJuLmh0bWwjbWF0Y2hlcyhqYXZhLmxhbmcuU3RyaW5nLCBqYXZhLmxhbmcuQ2hhclNlcXVlbmNlKSI+PENPREU+bWF0Y2hlczwvQ09ERT48L0E+KDwvdHQ+PGk+cmVnZXg8L2k+PHR0Piw8L3R0PiA8aT5zdHI8L2k+PHR0Pik8L3R0PjwvYmxvY2txdW90ZT4KKyAgICAgICAgPFA+CisgICAgPEREPjxETD4KKyAgICA8L0RMPgorICAgIDwvREQ+CisgICAgPEREPjxETD4KKyAgICAgICAgPERUPjxCPlBhcmFtZXRlcnM6PC9CPjxERD48Q09ERT5yZWdleDwvQ09ERT4gLSB0aGUgcmVndWxhciBleHByZXNzaW9uIHRvIHdoaWNoIHRoaXMgc3RyaW5nIGlzIHRvIGJlIG1hdGNoZWQKKyAgICAgICAgPERUPjxCPlJldHVybnM6PC9CPjxERD48dHQ+dHJ1ZTwvdHQ+IGlmLCBhbmQgb25seSBpZiwgdGhpcyBzdHJpbmcgbWF0Y2hlcyB0aGUKKyAgICAgICAgZ2l2ZW4gcmVndWxhciBleHByZXNzaW9uCisgICAgICAgIDxEVD48Qj5UaHJvd3M6PC9CPgorICAgICAgICA8REQ+PENPREU+PEEgSFJFRj0iLi4vLi4vamF2YS91dGlsL3JlZ2V4L1BhdHRlcm5TeW50YXhFeGNlcHRpb24uaHRtbCIgdGl0bGU9ImNsYXNzIGluIGphdmEudXRpbC5yZWdleCI+UGF0dGVyblN5bnRheEV4Y2VwdGlvbjwvQT48L0NPREU+IC0gaWYgdGhlIHJlZ3VsYXIgZXhwcmVzc2lvbidzIHN5bnRheCBpcyBpbnZhbGlkPERUPjxCPlNpbmNlOjwvQj48L0RUPgorICAgICAgICA8REQ+MS40PC9ERD4KKyAgICAgICAgPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vamF2YS91dGlsL3JlZ2V4L1BhdHRlcm4uaHRtbCIgdGl0bGU9ImNsYXNzIGluIGphdmEudXRpbC5yZWdleCI+PENPREU+UGF0dGVybjwvQ09ERT48L0E+PC9ETD4KKyAgICA8L0REPgorPC9ETD4KKzxIUj4KKworPEEgTkFNRT0iY29udGFpbnMoamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSkiPjwhLS0gLS0+PC9BPjxIMz4KKyAgICBjb250YWluczwvSDM+Cis8UFJFPgorcHVibGljIGJvb2xlYW4gPEI+Y29udGFpbnM8L0I+KDxBIEhSRUY9Ii4uLy4uL2phdmEvbGFuZy9DaGFyU2VxdWVuY2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBqYXZhLmxhbmciPkNoYXJTZXF1ZW5jZTwvQT4mbmJzcDtzKTwvUFJFPgorPERMPgorICAgIDxERD5SZXR1cm5zIHRydWUgaWYgYW5kIG9ubHkgaWYgdGhpcyBzdHJpbmcgY29udGFpbnMgdGhlIHNwZWNpZmllZAorICAgICAgICBzZXF1ZW5jZSBvZiBjaGFyIHZhbHVlcy4KKyAgICAgICAgPFA+CisgICAgPEREPjxETD4KKyAgICA8L0RMPgorICAgIDwvREQ+CisgICAgPEREPjxETD4KKyAgICAgICAgPERUPjxCPlBhcmFtZXRlcnM6PC9CPjxERD48Q09ERT5zPC9DT0RFPiAtIHRoZSBzZXF1ZW5jZSB0byBzZWFyY2ggZm9yCisgICAgICAgIDxEVD48Qj5SZXR1cm5zOjwvQj48REQ+dHJ1ZSBpZiB0aGlzIHN0cmluZyBjb250YWlucyA8Y29kZT5zPC9jb2RlPiwgZmFsc2Ugb3RoZXJ3aXNlCisgICAgICAgIDxEVD48Qj5UaHJvd3M6PC9CPgorICAgICAgICA8REQ+PENPREU+PEEgSFJFRj0iLi4vLi4vamF2YS9sYW5nL051bGxQb2ludGVyRXhjZXB0aW9uLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBqYXZhLmxhbmciPk51bGxQb2ludGVyRXhjZXB0aW9uPC9BPjwvQ09ERT4gLSBpZiA8Y29kZT5zPC9jb2RlPiBpcyA8Y29kZT5udWxsPC9jb2RlPjxEVD48Qj5TaW5jZTo8L0I+PC9EVD4KKyAgICAgICAgPEREPjEuNTwvREQ+CisgICAgPC9ETD4KKyAgICA8L0REPgorPC9ETD4KKzxIUj4KKworPEEgTkFNRT0icmVwbGFjZUZpcnN0KGphdmEubGFuZy5TdHJpbmcsIGphdmEubGFuZy5TdHJpbmcpIj48IS0tIC0tPjwvQT48SDM+CisgICAgcmVwbGFjZUZpcnN0PC9IMz4KKzxQUkU+CitwdWJsaWMgPEEgSFJFRj0iLi4vLi4vamF2YS9sYW5nL1N0cmluZy5odG1sIiB0aXRsZT0iY2xhc3MgaW4gamF2YS5sYW5nIj5TdHJpbmc8L0E+IDxCPnJlcGxhY2VGaXJzdDwvQj4oPEEgSFJFRj0iLi4vLi4vamF2YS9sYW5nL1N0cmluZy5odG1sIiB0aXRsZT0iY2xhc3MgaW4gamF2YS5sYW5nIj5TdHJpbmc8L0E+Jm5ic3A7cmVnZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICA8QSBIUkVGPSIuLi8uLi9qYXZhL2xhbmcvU3RyaW5nLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBqYXZhLmxhbmciPlN0cmluZzwvQT4mbmJzcDtyZXBsYWNlbWVudCk8L1BSRT4KKzxETD4KKyAgICA8REQ+UmVwbGFjZXMgdGhlIGZpcnN0IHN1YnN0cmluZyBvZiB0aGlzIHN0cmluZyB0aGF0IG1hdGNoZXMgdGhlIGdpdmVuIDxhCisgICAgICAgICAgICBocmVmPSIuLi91dGlsL3JlZ2V4L1BhdHRlcm4uaHRtbCNzdW0iPnJlZ3VsYXIgZXhwcmVzc2lvbjwvYT4gd2l0aCB0aGUKKyAgICAgICAgZ2l2ZW4gcmVwbGFjZW1lbnQuCisKKyAgICAgICAgPHA+IEFuIGludm9jYXRpb24gb2YgdGhpcyBtZXRob2Qgb2YgdGhlIGZvcm0KKyAgICAgICAgICAgIDxpPnN0cjwvaT48dHQ+LnJlcGxhY2VGaXJzdCg8L3R0PjxpPnJlZ2V4PC9pPjx0dD4sPC90dD4gPGk+cmVwbDwvaT48dHQ+KTwvdHQ+CisgICAgICAgICAgICB5aWVsZHMgZXhhY3RseSB0aGUgc2FtZSByZXN1bHQgYXMgdGhlIGV4cHJlc3Npb24KKworICAgICAgICA8YmxvY2txdW90ZT48dHQ+CisgICAgICAgICAgICA8QSBIUkVGPSIuLi8uLi9qYXZhL3V0aWwvcmVnZXgvUGF0dGVybi5odG1sIiB0aXRsZT0iY2xhc3MgaW4gamF2YS51dGlsLnJlZ2V4Ij48Q09ERT5QYXR0ZXJuPC9DT0RFPjwvQT4uPEEgSFJFRj0iLi4vLi4vamF2YS91dGlsL3JlZ2V4L1BhdHRlcm4uaHRtbCNjb21waWxlKGphdmEubGFuZy5TdHJpbmcpIj48Q09ERT5jb21waWxlPC9DT0RFPjwvQT4oPC90dD48aT5yZWdleDwvaT48dHQ+KS48QSBIUkVGPSIuLi8uLi9qYXZhL3V0aWwvcmVnZXgvUGF0dGVybi5odG1sI21hdGNoZXIoamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSkiPjxDT0RFPm1hdGNoZXI8L0NPREU+PC9BPig8L3R0PjxpPnN0cjwvaT48dHQ+KS48QSBIUkVGPSIuLi8uLi9qYXZhL3V0aWwvcmVnZXgvTWF0Y2hlci5odG1sI3JlcGxhY2VGaXJzdChqYXZhLmxhbmcuU3RyaW5nKSI+PENPREU+cmVwbGFjZUZpcnN0PC9DT0RFPjwvQT4oPC90dD48aT5yZXBsPC9pPjx0dD4pPC90dD48L2Jsb2NrcXVvdGU+CisKKyAgICAgICAgPHA+CisgICAgICAgICAgICBOb3RlIHRoYXQgYmFja3NsYXNoZXMgKDx0dD5cPC90dD4pIGFuZCBkb2xsYXIgc2lnbnMgKDx0dD4kPC90dD4pIGluIHRoZQorICAgICAgICAgICAgcmVwbGFjZW1lbnQgc3RyaW5nIG1heSBjYXVzZSB0aGUgcmVzdWx0cyB0byBiZSBkaWZmZXJlbnQgdGhhbiBpZiBpdCB3ZXJlCisgICAgICAgICAgICBiZWluZyB0cmVhdGVkIGFzIGEgbGl0ZXJhbCByZXBsYWNlbWVudCBzdHJpbmc7IHNlZQorICAgICAgICAgICAgPEEgSFJFRj0iLi4vLi4vamF2YS91dGlsL3JlZ2V4L01hdGNoZXIuaHRtbCNyZXBsYWNlRmlyc3QoamF2YS5sYW5nLlN0cmluZykiPjxDT0RFPk1hdGNoZXIucmVwbGFjZUZpcnN0KGphdmEubGFuZy5TdHJpbmcpPC9DT0RFPjwvQT4uCisgICAgICAgICAgICBVc2UgPEEgSFJFRj0iLi4vLi4vamF2YS91dGlsL3JlZ2V4L01hdGNoZXIuaHRtbCNxdW90ZVJlcGxhY2VtZW50KGphdmEubGFuZy5TdHJpbmcpIj48Q09ERT5NYXRjaGVyLnF1b3RlUmVwbGFjZW1lbnQoamF2YS5sYW5nLlN0cmluZyk8L0NPREU+PC9BPiB0byBzdXBwcmVzcyB0aGUgc3BlY2lhbAorICAgICAgICAgICAgbWVhbmluZyBvZiB0aGVzZSBjaGFyYWN0ZXJzLCBpZiBkZXNpcmVkLgorICAgICAgICA8UD4KKyAgICA8REQ+PERMPgorICAgIDwvREw+CisgICAgPC9ERD4KKyAgICA8REQ+PERMPgorICAgICAgICA8RFQ+PEI+UGFyYW1ldGVyczo8L0I+PEREPjxDT0RFPnJlZ2V4PC9DT0RFPiAtIHRoZSByZWd1bGFyIGV4cHJlc3Npb24gdG8gd2hpY2ggdGhpcyBzdHJpbmcgaXMgdG8gYmUgbWF0Y2hlZDxERD48Q09ERT5yZXBsYWNlbWVudDwvQ09ERT4gLSB0aGUgc3RyaW5nIHRvIGJlIHN1YnN0aXR1dGVkIGZvciB0aGUgZmlyc3QgbWF0Y2gKKyAgICAgICAgPERUPjxCPlJldHVybnM6PC9CPjxERD5UaGUgcmVzdWx0aW5nIDx0dD5TdHJpbmc8L3R0PgorICAgICAgICA8RFQ+PEI+VGhyb3dzOjwvQj4KKyAgICAgICAgPEREPjxDT0RFPjxBIEhSRUY9Ii4uLy4uL2phdmEvdXRpbC9yZWdleC9QYXR0ZXJuU3ludGF4RXhjZXB0aW9uLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBqYXZhLnV0aWwucmVnZXgiPlBhdHRlcm5TeW50YXhFeGNlcHRpb248L0E+PC9DT0RFPiAtIGlmIHRoZSByZWd1bGFyIGV4cHJlc3Npb24ncyBzeW50YXggaXMgaW52YWxpZDxEVD48Qj5TaW5jZTo8L0I+PC9EVD4KKyAgICAgICAgPEREPjEuNDwvREQ+CisgICAgICAgIDxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uL2phdmEvdXRpbC9yZWdleC9QYXR0ZXJuLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBqYXZhLnV0aWwucmVnZXgiPjxDT0RFPlBhdHRlcm48L0NPREU+PC9BPjwvREw+CisgICAgPC9ERD4KKzwvREw+Cis8SFI+CisKKzxBIE5BTUU9InJlcGxhY2VBbGwoamF2YS5sYW5nLlN0cmluZywgamF2YS5sYW5nLlN0cmluZykiPjwhLS0gLS0+PC9BPjxIMz4KKyAgICByZXBsYWNlQWxsPC9IMz4KKzxQUkU+CitwdWJsaWMgPEEgSFJFRj0iLi4vLi4vamF2YS9sYW5nL1N0cmluZy5odG1sIiB0aXRsZT0iY2xhc3MgaW4gamF2YS5sYW5nIj5TdHJpbmc8L0E+IDxCPnJlcGxhY2VBbGw8L0I+KDxBIEhSRUY9Ii4uLy4uL2phdmEvbGFuZy9TdHJpbmcuaHRtbCIgdGl0bGU9ImNsYXNzIGluIGphdmEubGFuZyI+U3RyaW5nPC9BPiZuYnNwO3JlZ2V4LAorICAgICAgICAgICAgICAgICAgICAgICAgIDxBIEhSRUY9Ii4uLy4uL2phdmEvbGFuZy9TdHJpbmcuaHRtbCIgdGl0bGU9ImNsYXNzIGluIGphdmEubGFuZyI+U3RyaW5nPC9BPiZuYnNwO3JlcGxhY2VtZW50KTwvUFJFPgorPERMPgorICAgIDxERD5SZXBsYWNlcyBlYWNoIHN1YnN0cmluZyBvZiB0aGlzIHN0cmluZyB0aGF0IG1hdGNoZXMgdGhlIGdpdmVuIDxhCisgICAgICAgICAgICBocmVmPSIuLi91dGlsL3JlZ2V4L1BhdHRlcm4uaHRtbCNzdW0iPnJlZ3VsYXIgZXhwcmVzc2lvbjwvYT4gd2l0aCB0aGUKKyAgICAgICAgZ2l2ZW4gcmVwbGFjZW1lbnQuCisKKyAgICAgICAgPHA+IEFuIGludm9jYXRpb24gb2YgdGhpcyBtZXRob2Qgb2YgdGhlIGZvcm0KKyAgICAgICAgICAgIDxpPnN0cjwvaT48dHQ+LnJlcGxhY2VBbGwoPC90dD48aT5yZWdleDwvaT48dHQ+LDwvdHQ+IDxpPnJlcGw8L2k+PHR0Pik8L3R0PgorICAgICAgICAgICAgeWllbGRzIGV4YWN0bHkgdGhlIHNhbWUgcmVzdWx0IGFzIHRoZSBleHByZXNzaW9uCisKKyAgICAgICAgPGJsb2NrcXVvdGU+PHR0PgorICAgICAgICAgICAgPEEgSFJFRj0iLi4vLi4vamF2YS91dGlsL3JlZ2V4L1BhdHRlcm4uaHRtbCIgdGl0bGU9ImNsYXNzIGluIGphdmEudXRpbC5yZWdleCI+PENPREU+UGF0dGVybjwvQ09ERT48L0E+LjxBIEhSRUY9Ii4uLy4uL2phdmEvdXRpbC9yZWdleC9QYXR0ZXJuLmh0bWwjY29tcGlsZShqYXZhLmxhbmcuU3RyaW5nKSI+PENPREU+Y29tcGlsZTwvQ09ERT48L0E+KDwvdHQ+PGk+cmVnZXg8L2k+PHR0PikuPEEgSFJFRj0iLi4vLi4vamF2YS91dGlsL3JlZ2V4L1BhdHRlcm4uaHRtbCNtYXRjaGVyKGphdmEubGFuZy5DaGFyU2VxdWVuY2UpIj48Q09ERT5tYXRjaGVyPC9DT0RFPjwvQT4oPC90dD48aT5zdHI8L2k+PHR0PikuPEEgSFJFRj0iLi4vLi4vamF2YS91dGlsL3JlZ2V4L01hdGNoZXIuaHRtbCNyZXBsYWNlQWxsKGphdmEubGFuZy5TdHJpbmcpIj48Q09ERT5yZXBsYWNlQWxsPC9DT0RFPjwvQT4oPC90dD48aT5yZXBsPC9pPjx0dD4pPC90dD48L2Jsb2NrcXVvdGU+CisKKyAgICAgICAgPHA+CisgICAgICAgICAgICBOb3RlIHRoYXQgYmFja3NsYXNoZXMgKDx0dD5cPC90dD4pIGFuZCBkb2xsYXIgc2lnbnMgKDx0dD4kPC90dD4pIGluIHRoZQorICAgICAgICAgICAgcmVwbGFjZW1lbnQgc3RyaW5nIG1heSBjYXVzZSB0aGUgcmVzdWx0cyB0byBiZSBkaWZmZXJlbnQgdGhhbiBpZiBpdCB3ZXJlCisgICAgICAgICAgICBiZWluZyB0cmVhdGVkIGFzIGEgbGl0ZXJhbCByZXBsYWNlbWVudCBzdHJpbmc7IHNlZQorICAgICAgICAgICAgPEEgSFJFRj0iLi4vLi4vamF2YS91dGlsL3JlZ2V4L01hdGNoZXIuaHRtbCNyZXBsYWNlQWxsKGphdmEubGFuZy5TdHJpbmcpIj48Q09ERT5NYXRjaGVyLnJlcGxhY2VBbGw8L0NPREU+PC9BPi4KKyAgICAgICAgICAgIFVzZSA8QSBIUkVGPSIuLi8uLi9qYXZhL3V0aWwvcmVnZXgvTWF0Y2hlci5odG1sI3F1b3RlUmVwbGFjZW1lbnQoamF2YS5sYW5nLlN0cmluZykiPjxDT0RFPk1hdGNoZXIucXVvdGVSZXBsYWNlbWVudChqYXZhLmxhbmcuU3RyaW5nKTwvQ09ERT48L0E+IHRvIHN1cHByZXNzIHRoZSBzcGVjaWFsCisgICAgICAgICAgICBtZWFuaW5nIG9mIHRoZXNlIGNoYXJhY3RlcnMsIGlmIGRlc2lyZWQuCisgICAgICAgIDxQPgorICAgIDxERD48REw+CisgICAgPC9ETD4KKyAgICA8L0REPgorICAgIDxERD48REw+CisgICAgICAgIDxEVD48Qj5QYXJhbWV0ZXJzOjwvQj48REQ+PENPREU+cmVnZXg8L0NPREU+IC0gdGhlIHJlZ3VsYXIgZXhwcmVzc2lvbiB0byB3aGljaCB0aGlzIHN0cmluZyBpcyB0byBiZSBtYXRjaGVkPEREPjxDT0RFPnJlcGxhY2VtZW50PC9DT0RFPiAtIHRoZSBzdHJpbmcgdG8gYmUgc3Vic3RpdHV0ZWQgZm9yIGVhY2ggbWF0Y2gKKyAgICAgICAgPERUPjxCPlJldHVybnM6PC9CPjxERD5UaGUgcmVzdWx0aW5nIDx0dD5TdHJpbmc8L3R0PgorICAgICAgICA8RFQ+PEI+VGhyb3dzOjwvQj4KKyAgICAgICAgPEREPjxDT0RFPjxBIEhSRUY9Ii4uLy4uL2phdmEvdXRpbC9yZWdleC9QYXR0ZXJuU3ludGF4RXhjZXB0aW9uLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBqYXZhLnV0aWwucmVnZXgiPlBhdHRlcm5TeW50YXhFeGNlcHRpb248L0E+PC9DT0RFPiAtIGlmIHRoZSByZWd1bGFyIGV4cHJlc3Npb24ncyBzeW50YXggaXMgaW52YWxpZDxEVD48Qj5TaW5jZTo8L0I+PC9EVD4KKyAgICAgICAgPEREPjEuNDwvREQ+CisgICAgICAgIDxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uL2phdmEvdXRpbC9yZWdleC9QYXR0ZXJuLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBqYXZhLnV0aWwucmVnZXgiPjxDT0RFPlBhdHRlcm48L0NPREU+PC9BPjwvREw+CisgICAgPC9ERD4KKzwvREw+Cis8SFI+CisKKzxBIE5BTUU9InJlcGxhY2UoamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSwgamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSkiPjwhLS0gLS0+PC9BPjxIMz4KKyAgICByZXBsYWNlPC9IMz4KKzxQUkU+CitwdWJsaWMgPEEgSFJFRj0iLi4vLi4vamF2YS9sYW5nL1N0cmluZy5odG1sIiB0aXRsZT0iY2xhc3MgaW4gamF2YS5sYW5nIj5TdHJpbmc8L0E+IDxCPnJlcGxhY2U8L0I+KDxBIEhSRUY9Ii4uLy4uL2phdmEvbGFuZy9DaGFyU2VxdWVuY2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBqYXZhLmxhbmciPkNoYXJTZXF1ZW5jZTwvQT4mbmJzcDt0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgPEEgSFJFRj0iLi4vLi4vamF2YS9sYW5nL0NoYXJTZXF1ZW5jZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIGphdmEubGFuZyI+Q2hhclNlcXVlbmNlPC9BPiZuYnNwO3JlcGxhY2VtZW50KTwvUFJFPgorPERMPgorICAgIDxERD5SZXBsYWNlcyBlYWNoIHN1YnN0cmluZyBvZiB0aGlzIHN0cmluZyB0aGF0IG1hdGNoZXMgdGhlIGxpdGVyYWwgdGFyZ2V0CisgICAgICAgIHNlcXVlbmNlIHdpdGggdGhlIHNwZWNpZmllZCBsaXRlcmFsIHJlcGxhY2VtZW50IHNlcXVlbmNlLiBUaGUKKyAgICAgICAgcmVwbGFjZW1lbnQgcHJvY2VlZHMgZnJvbSB0aGUgYmVnaW5uaW5nIG9mIHRoZSBzdHJpbmcgdG8gdGhlIGVuZCwgZm9yCisgICAgICAgIGV4YW1wbGUsIHJlcGxhY2luZyAiYWEiIHdpdGggImIiIGluIHRoZSBzdHJpbmcgImFhYSIgd2lsbCByZXN1bHQgaW4KKyAgICAgICAgImJhIiByYXRoZXIgdGhhbiAiYWIiLgorICAgICAgICA8UD4KKyAgICA8REQ+PERMPgorICAgIDwvREw+CisgICAgPC9ERD4KKyAgICA8REQ+PERMPgorICAgICAgICA8RFQ+PEI+UGFyYW1ldGVyczo8L0I+PEREPjxDT0RFPnRhcmdldDwvQ09ERT4gLSBUaGUgc2VxdWVuY2Ugb2YgY2hhciB2YWx1ZXMgdG8gYmUgcmVwbGFjZWQ8REQ+PENPREU+cmVwbGFjZW1lbnQ8L0NPREU+IC0gVGhlIHJlcGxhY2VtZW50IHNlcXVlbmNlIG9mIGNoYXIgdmFsdWVzCisgICAgICAgIDxEVD48Qj5SZXR1cm5zOjwvQj48REQ+VGhlIHJlc3VsdGluZyBzdHJpbmcKKyAgICAgICAgPERUPjxCPlRocm93czo8L0I+CisgICAgICAgIDxERD48Q09ERT48QSBIUkVGPSIuLi8uLi9qYXZhL2xhbmcvTnVsbFBvaW50ZXJFeGNlcHRpb24uaHRtbCIgdGl0bGU9ImNsYXNzIGluIGphdmEubGFuZyI+TnVsbFBvaW50ZXJFeGNlcHRpb248L0E+PC9DT0RFPiAtIGlmIDxjb2RlPnRhcmdldDwvY29kZT4gb3IKKyAgICAgICAgICAgIDxjb2RlPnJlcGxhY2VtZW50PC9jb2RlPiBpcyA8Y29kZT5udWxsPC9jb2RlPi48RFQ+PEI+U2luY2U6PC9CPjwvRFQ+CisgICAgICAgIDxERD4xLjU8L0REPgorICAgIDwvREw+CisgICAgPC9ERD4KKzwvREw+Cis8SFI+CisKKzxBIE5BTUU9InNwbGl0KGphdmEubGFuZy5TdHJpbmcsIGludCkiPjwhLS0gLS0+PC9BPjxIMz4KKyAgICBzcGxpdDwvSDM+Cis8UFJFPgorcHVibGljIDxBIEhSRUY9Ii4uLy4uL2phdmEvbGFuZy9TdHJpbmcuaHRtbCIgdGl0bGU9ImNsYXNzIGluIGphdmEubGFuZyI+U3RyaW5nPC9BPltdIDxCPnNwbGl0PC9CPig8QSBIUkVGPSIuLi8uLi9qYXZhL2xhbmcvU3RyaW5nLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBqYXZhLmxhbmciPlN0cmluZzwvQT4mbmJzcDtyZWdleCwKKyAgICAgICAgICAgICAgICAgICAgICBpbnQmbmJzcDtsaW1pdCk8L1BSRT4KKzxETD4KKyAgICA8REQ+U3BsaXRzIHRoaXMgc3RyaW5nIGFyb3VuZCBtYXRjaGVzIG9mIHRoZSBnaXZlbgorICAgICAgICA8YSBocmVmPSIuLi91dGlsL3JlZ2V4L1BhdHRlcm4uaHRtbCNzdW0iPnJlZ3VsYXIgZXhwcmVzc2lvbjwvYT4uCisKKyAgICAgICAgPHA+IFRoZSBhcnJheSByZXR1cm5lZCBieSB0aGlzIG1ldGhvZCBjb250YWlucyBlYWNoIHN1YnN0cmluZyBvZiB0aGlzCisgICAgICAgICAgICBzdHJpbmcgdGhhdCBpcyB0ZXJtaW5hdGVkIGJ5IGFub3RoZXIgc3Vic3RyaW5nIHRoYXQgbWF0Y2hlcyB0aGUgZ2l2ZW4KKyAgICAgICAgICAgIGV4cHJlc3Npb24gb3IgaXMgdGVybWluYXRlZCBieSB0aGUgZW5kIG9mIHRoZSBzdHJpbmcuICBUaGUgc3Vic3RyaW5ncyBpbgorICAgICAgICAgICAgdGhlIGFycmF5IGFyZSBpbiB0aGUgb3JkZXIgaW4gd2hpY2ggdGhleSBvY2N1ciBpbiB0aGlzIHN0cmluZy4gIElmIHRoZQorICAgICAgICAgICAgZXhwcmVzc2lvbiBkb2VzIG5vdCBtYXRjaCBhbnkgcGFydCBvZiB0aGUgaW5wdXQgdGhlbiB0aGUgcmVzdWx0aW5nIGFycmF5CisgICAgICAgICAgICBoYXMganVzdCBvbmUgZWxlbWVudCwgbmFtZWx5IHRoaXMgc3RyaW5nLgorCisgICAgICAgIDxwPiBUaGUgPHR0PmxpbWl0PC90dD4gcGFyYW1ldGVyIGNvbnRyb2xzIHRoZSBudW1iZXIgb2YgdGltZXMgdGhlCisgICAgICAgICAgICBwYXR0ZXJuIGlzIGFwcGxpZWQgYW5kIHRoZXJlZm9yZSBhZmZlY3RzIHRoZSBsZW5ndGggb2YgdGhlIHJlc3VsdGluZworICAgICAgICAgICAgYXJyYXkuICBJZiB0aGUgbGltaXQgPGk+bjwvaT4gaXMgZ3JlYXRlciB0aGFuIHplcm8gdGhlbiB0aGUgcGF0dGVybgorICAgICAgICAgICAgd2lsbCBiZSBhcHBsaWVkIGF0IG1vc3QgPGk+bjwvaT4mbmJzcDstJm5ic3A7MSB0aW1lcywgdGhlIGFycmF5J3MKKyAgICAgICAgICAgIGxlbmd0aCB3aWxsIGJlIG5vIGdyZWF0ZXIgdGhhbiA8aT5uPC9pPiwgYW5kIHRoZSBhcnJheSdzIGxhc3QgZW50cnkKKyAgICAgICAgICAgIHdpbGwgY29udGFpbiBhbGwgaW5wdXQgYmV5b25kIHRoZSBsYXN0IG1hdGNoZWQgZGVsaW1pdGVyLiAgSWYgPGk+bjwvaT4KKyAgICAgICAgICAgIGlzIG5vbi1wb3NpdGl2ZSB0aGVuIHRoZSBwYXR0ZXJuIHdpbGwgYmUgYXBwbGllZCBhcyBtYW55IHRpbWVzIGFzCisgICAgICAgICAgICBwb3NzaWJsZSBhbmQgdGhlIGFycmF5IGNhbiBoYXZlIGFueSBsZW5ndGguICBJZiA8aT5uPC9pPiBpcyB6ZXJvIHRoZW4KKyAgICAgICAgICAgIHRoZSBwYXR0ZXJuIHdpbGwgYmUgYXBwbGllZCBhcyBtYW55IHRpbWVzIGFzIHBvc3NpYmxlLCB0aGUgYXJyYXkgY2FuCisgICAgICAgICAgICBoYXZlIGFueSBsZW5ndGgsIGFuZCB0cmFpbGluZyBlbXB0eSBzdHJpbmdzIHdpbGwgYmUgZGlzY2FyZGVkLgorCisgICAgICAgIDxwPiBUaGUgc3RyaW5nIDx0dD4iYm9vOmFuZDpmb28iPC90dD4sIGZvciBleGFtcGxlLCB5aWVsZHMgdGhlCisgICAgICAgICAgICBmb2xsb3dpbmcgcmVzdWx0cyB3aXRoIHRoZXNlIHBhcmFtZXRlcnM6CisKKyAgICAgICAgPGJsb2NrcXVvdGU+PHRhYmxlIGNlbGxwYWRkaW5nPTEgY2VsbHNwYWNpbmc9MCBzdW1tYXJ5PSJTcGxpdCBleGFtcGxlIHNob3dpbmcgcmVnZXgsIGxpbWl0LCBhbmQgcmVzdWx0Ij4KKyAgICAgICAgICAgIDx0cj4KKyAgICAgICAgICAgICAgICA8dGg+UmVnZXg8L3RoPgorICAgICAgICAgICAgICAgIDx0aD5MaW1pdDwvdGg+CisgICAgICAgICAgICAgICAgPHRoPlJlc3VsdDwvdGg+CisgICAgICAgICAgICA8L3RyPgorICAgICAgICAgICAgPHRyPjx0ZCBhbGlnbj1jZW50ZXI+OjwvdGQ+CisgICAgICAgICAgICAgICAgPHRkIGFsaWduPWNlbnRlcj4yPC90ZD4KKyAgICAgICAgICAgICAgICA8dGQ+PHR0PnsgImJvbyIsICJhbmQ6Zm9vIiB9PC90dD48L3RkPjwvdHI+CisgICAgICAgICAgICA8dHI+PHRkIGFsaWduPWNlbnRlcj46PC90ZD4KKyAgICAgICAgICAgICAgICA8dGQgYWxpZ249Y2VudGVyPjU8L3RkPgorICAgICAgICAgICAgICAgIDx0ZD48dHQ+eyAiYm9vIiwgImFuZCIsICJmb28iIH08L3R0PjwvdGQ+PC90cj4KKyAgICAgICAgICAgIDx0cj48dGQgYWxpZ249Y2VudGVyPjo8L3RkPgorICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj1jZW50ZXI+LTI8L3RkPgorICAgICAgICAgICAgICAgIDx0ZD48dHQ+eyAiYm9vIiwgImFuZCIsICJmb28iIH08L3R0PjwvdGQ+PC90cj4KKyAgICAgICAgICAgIDx0cj48dGQgYWxpZ249Y2VudGVyPm88L3RkPgorICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj1jZW50ZXI+NTwvdGQ+CisgICAgICAgICAgICAgICAgPHRkPjx0dD57ICJiIiwgIiIsICI6YW5kOmYiLCAiIiwgIiIgfTwvdHQ+PC90ZD48L3RyPgorICAgICAgICAgICAgPHRyPjx0ZCBhbGlnbj1jZW50ZXI+bzwvdGQ+CisgICAgICAgICAgICAgICAgPHRkIGFsaWduPWNlbnRlcj4tMjwvdGQ+CisgICAgICAgICAgICAgICAgPHRkPjx0dD57ICJiIiwgIiIsICI6YW5kOmYiLCAiIiwgIiIgfTwvdHQ+PC90ZD48L3RyPgorICAgICAgICAgICAgPHRyPjx0ZCBhbGlnbj1jZW50ZXI+bzwvdGQ+CisgICAgICAgICAgICAgICAgPHRkIGFsaWduPWNlbnRlcj4wPC90ZD4KKyAgICAgICAgICAgICAgICA8dGQ+PHR0PnsgImIiLCAiIiwgIjphbmQ6ZiIgfTwvdHQ+PC90ZD48L3RyPgorICAgICAgICA8L3RhYmxlPjwvYmxvY2txdW90ZT4KKworICAgICAgICA8cD4gQW4gaW52b2NhdGlvbiBvZiB0aGlzIG1ldGhvZCBvZiB0aGUgZm9ybQorICAgICAgICAgICAgPGk+c3RyLjwvaT48dHQ+c3BsaXQoPC90dD48aT5yZWdleDwvaT48dHQ+LDwvdHQ+Jm5ic3A7PGk+bjwvaT48dHQ+KTwvdHQ+CisgICAgICAgICAgICB5aWVsZHMgdGhlIHNhbWUgcmVzdWx0IGFzIHRoZSBleHByZXNzaW9uCisKKyAgICAgICAgPGJsb2NrcXVvdGU+CisgICAgICAgICAgICA8QSBIUkVGPSIuLi8uLi9qYXZhL3V0aWwvcmVnZXgvUGF0dGVybi5odG1sIiB0aXRsZT0iY2xhc3MgaW4gamF2YS51dGlsLnJlZ2V4Ij48Q09ERT5QYXR0ZXJuPC9DT0RFPjwvQT4uPEEgSFJFRj0iLi4vLi4vamF2YS91dGlsL3JlZ2V4L1BhdHRlcm4uaHRtbCNjb21waWxlKGphdmEubGFuZy5TdHJpbmcpIj48Q09ERT5jb21waWxlPC9DT0RFPjwvQT48dHQ+KDwvdHQ+PGk+cmVnZXg8L2k+PHR0Pik8L3R0Pi48QSBIUkVGPSIuLi8uLi9qYXZhL3V0aWwvcmVnZXgvUGF0dGVybi5odG1sI3NwbGl0KGphdmEubGFuZy5DaGFyU2VxdWVuY2UsIGludCkiPjxDT0RFPnNwbGl0PC9DT0RFPjwvQT48dHQ+KDwvdHQ+PGk+c3RyPC9pPjx0dD4sPC90dD4mbmJzcDs8aT5uPC9pPjx0dD4pPC90dD4KKyAgICAgICAgPC9ibG9ja3F1b3RlPgorICAgICAgICA8UD4KKyAgICA8REQ+PERMPgorICAgIDwvREw+CisgICAgPC9ERD4KKyAgICA8REQ+PERMPgorICAgICAgICA8RFQ+PEI+UGFyYW1ldGVyczo8L0I+PEREPjxDT0RFPnJlZ2V4PC9DT0RFPiAtIHRoZSBkZWxpbWl0aW5nIHJlZ3VsYXIgZXhwcmVzc2lvbjxERD48Q09ERT5saW1pdDwvQ09ERT4gLSB0aGUgcmVzdWx0IHRocmVzaG9sZCwgYXMgZGVzY3JpYmVkIGFib3ZlCisgICAgICAgIDxEVD48Qj5SZXR1cm5zOjwvQj48REQ+dGhlIGFycmF5IG9mIHN0cmluZ3MgY29tcHV0ZWQgYnkgc3BsaXR0aW5nIHRoaXMgc3RyaW5nCisgICAgICAgIGFyb3VuZCBtYXRjaGVzIG9mIHRoZSBnaXZlbiByZWd1bGFyIGV4cHJlc3Npb24KKyAgICAgICAgPERUPjxCPlRocm93czo8L0I+CisgICAgICAgIDxERD48Q09ERT48QSBIUkVGPSIuLi8uLi9qYXZhL3V0aWwvcmVnZXgvUGF0dGVyblN5bnRheEV4Y2VwdGlvbi5odG1sIiB0aXRsZT0iY2xhc3MgaW4gamF2YS51dGlsLnJlZ2V4Ij5QYXR0ZXJuU3ludGF4RXhjZXB0aW9uPC9BPjwvQ09ERT4gLSBpZiB0aGUgcmVndWxhciBleHByZXNzaW9uJ3Mgc3ludGF4IGlzIGludmFsaWQ8RFQ+PEI+U2luY2U6PC9CPjwvRFQ+CisgICAgICAgIDxERD4xLjQ8L0REPgorICAgICAgICA8RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi9qYXZhL3V0aWwvcmVnZXgvUGF0dGVybi5odG1sIiB0aXRsZT0iY2xhc3MgaW4gamF2YS51dGlsLnJlZ2V4Ij48Q09ERT5QYXR0ZXJuPC9DT0RFPjwvQT48L0RMPgorICAgIDwvREQ+Cis8L0RMPgorPEhSPgorCis8QSBOQU1FPSJzcGxpdChqYXZhLmxhbmcuU3RyaW5nKSI+PCEtLSAtLT48L0E+PEgzPgorICAgIHNwbGl0PC9IMz4KKzxQUkU+CitwdWJsaWMgPEEgSFJFRj0iLi4vLi4vamF2YS9sYW5nL1N0cmluZy5odG1sIiB0aXRsZT0iY2xhc3MgaW4gamF2YS5sYW5nIj5TdHJpbmc8L0E+W10gPEI+c3BsaXQ8L0I+KDxBIEhSRUY9Ii4uLy4uL2phdmEvbGFuZy9TdHJpbmcuaHRtbCIgdGl0bGU9ImNsYXNzIGluIGphdmEubGFuZyI+U3RyaW5nPC9BPiZuYnNwO3JlZ2V4KTwvUFJFPgorPERMPgorICAgIDxERD5TcGxpdHMgdGhpcyBzdHJpbmcgYXJvdW5kIG1hdGNoZXMgb2YgdGhlIGdpdmVuIDxhCisgICAgICAgICAgICBocmVmPSIuLi91dGlsL3JlZ2V4L1BhdHRlcm4uaHRtbCNzdW0iPnJlZ3VsYXIgZXhwcmVzc2lvbjwvYT4uCisKKyAgICAgICAgPHA+IFRoaXMgbWV0aG9kIHdvcmtzIGFzIGlmIGJ5IGludm9raW5nIHRoZSB0d28tYXJndW1lbnQgPEEgSFJFRj0iLi4vLi4vamF2YS9sYW5nL1N0cmluZy5odG1sI3NwbGl0KGphdmEubGFuZy5TdHJpbmcsIGludCkiPjxDT0RFPnNwbGl0PC9DT0RFPjwvQT4gbWV0aG9kIHdpdGggdGhlIGdpdmVuIGV4cHJlc3Npb24gYW5kIGEgbGltaXQKKyAgICAgICAgICAgIGFyZ3VtZW50IG9mIHplcm8uICBUcmFpbGluZyBlbXB0eSBzdHJpbmdzIGFyZSB0aGVyZWZvcmUgbm90IGluY2x1ZGVkIGluCisgICAgICAgICAgICB0aGUgcmVzdWx0aW5nIGFycmF5LgorCisgICAgICAgIDxwPiBUaGUgc3RyaW5nIDx0dD4iYm9vOmFuZDpmb28iPC90dD4sIGZvciBleGFtcGxlLCB5aWVsZHMgdGhlIGZvbGxvd2luZworICAgICAgICAgICAgcmVzdWx0cyB3aXRoIHRoZXNlIGV4cHJlc3Npb25zOgorCisgICAgICAgIDxibG9ja3F1b3RlPjx0YWJsZSBjZWxscGFkZGluZz0xIGNlbGxzcGFjaW5nPTAgc3VtbWFyeT0iU3BsaXQgZXhhbXBsZXMgc2hvd2luZyByZWdleCBhbmQgcmVzdWx0Ij4KKyAgICAgICAgICAgIDx0cj4KKyAgICAgICAgICAgICAgICA8dGg+UmVnZXg8L3RoPgorICAgICAgICAgICAgICAgIDx0aD5SZXN1bHQ8L3RoPgorICAgICAgICAgICAgPC90cj4KKyAgICAgICAgICAgIDx0cj48dGQgYWxpZ249Y2VudGVyPjo8L3RkPgorICAgICAgICAgICAgICAgIDx0ZD48dHQ+eyAiYm9vIiwgImFuZCIsICJmb28iIH08L3R0PjwvdGQ+PC90cj4KKyAgICAgICAgICAgIDx0cj48dGQgYWxpZ249Y2VudGVyPm88L3RkPgorICAgICAgICAgICAgICAgIDx0ZD48dHQ+eyAiYiIsICIiLCAiOmFuZDpmIiB9PC90dD48L3RkPjwvdHI+CisgICAgICAgIDwvdGFibGU+PC9ibG9ja3F1b3RlPgorICAgICAgICA8UD4KKyAgICA8REQ+PERMPgorICAgIDwvREw+CisgICAgPC9ERD4KKyAgICA8REQ+PERMPgorICAgICAgICA8RFQ+PEI+UGFyYW1ldGVyczo8L0I+PEREPjxDT0RFPnJlZ2V4PC9DT0RFPiAtIHRoZSBkZWxpbWl0aW5nIHJlZ3VsYXIgZXhwcmVzc2lvbgorICAgICAgICA8RFQ+PEI+UmV0dXJuczo8L0I+PEREPnRoZSBhcnJheSBvZiBzdHJpbmdzIGNvbXB1dGVkIGJ5IHNwbGl0dGluZyB0aGlzIHN0cmluZworICAgICAgICBhcm91bmQgbWF0Y2hlcyBvZiB0aGUgZ2l2ZW4gcmVndWxhciBleHByZXNzaW9uCisgICAgICAgIDxEVD48Qj5UaHJvd3M6PC9CPgorICAgICAgICA8REQ+PENPREU+PEEgSFJFRj0iLi4vLi4vamF2YS91dGlsL3JlZ2V4L1BhdHRlcm5TeW50YXhFeGNlcHRpb24uaHRtbCIgdGl0bGU9ImNsYXNzIGluIGphdmEudXRpbC5yZWdleCI+UGF0dGVyblN5bnRheEV4Y2VwdGlvbjwvQT48L0NPREU+IC0gaWYgdGhlIHJlZ3VsYXIgZXhwcmVzc2lvbidzIHN5bnRheCBpcyBpbnZhbGlkPERUPjxCPlNpbmNlOjwvQj48L0RUPgorICAgICAgICA8REQ+MS40PC9ERD4KKyAgICAgICAgPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vamF2YS91dGlsL3JlZ2V4L1BhdHRlcm4uaHRtbCIgdGl0bGU9ImNsYXNzIGluIGphdmEudXRpbC5yZWdleCI+PENPREU+UGF0dGVybjwvQ09ERT48L0E+PC9ETD4KKyAgICA8L0REPgorPC9ETD4KKzxIUj4KKworPEEgTkFNRT0idG9Mb3dlckNhc2UoamF2YS51dGlsLkxvY2FsZSkiPjwhLS0gLS0+PC9BPjxIMz4KKyAgICB0b0xvd2VyQ2FzZTwvSDM+Cis8UFJFPgorcHVibGljIDxBIEhSRUY9Ii4uLy4uL2phdmEvbGFuZy9TdHJpbmcuaHRtbCIgdGl0bGU9ImNsYXNzIGluIGphdmEubGFuZyI+U3RyaW5nPC9BPiA8Qj50b0xvd2VyQ2FzZTwvQj4oPEEgSFJFRj0iLi4vLi4vamF2YS91dGlsL0xvY2FsZS5odG1sIiB0aXRsZT0iY2xhc3MgaW4gamF2YS51dGlsIj5Mb2NhbGU8L0E+Jm5ic3A7bG9jYWxlKTwvUFJFPgorPERMPgorICAgIDxERD5Db252ZXJ0cyBhbGwgb2YgdGhlIGNoYXJhY3RlcnMgaW4gdGhpcyA8Y29kZT5TdHJpbmc8L2NvZGU+IHRvIGxvd2VyCisgICAgICAgIGNhc2UgdXNpbmcgdGhlIHJ1bGVzIG9mIHRoZSBnaXZlbiA8Y29kZT5Mb2NhbGU8L2NvZGU+LiAgQ2FzZSBtYXBwaW5nIGlzIGJhc2VkCisgICAgICAgIG9uIHRoZSBVbmljb2RlIFN0YW5kYXJkIHZlcnNpb24gc3BlY2lmaWVkIGJ5IHRoZSA8QSBIUkVGPSIuLi8uLi9qYXZhL2xhbmcvQ2hhcmFjdGVyLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBqYXZhLmxhbmciPjxDT0RFPkNoYXJhY3RlcjwvQ09ERT48L0E+CisgICAgICAgIGNsYXNzLiBTaW5jZSBjYXNlIG1hcHBpbmdzIGFyZSBub3QgYWx3YXlzIDE6MSBjaGFyIG1hcHBpbmdzLCB0aGUgcmVzdWx0aW5nCisgICAgICAgIDxjb2RlPlN0cmluZzwvY29kZT4gbWF5IGJlIGEgZGlmZmVyZW50IGxlbmd0aCB0aGFuIHRoZSBvcmlnaW5hbCA8Y29kZT5TdHJpbmc8L2NvZGU+LgorICAgICAgICA8cD4KKyAgICAgICAgICAgIEV4YW1wbGVzIG9mIGxvd2VyY2FzZSAgbWFwcGluZ3MgYXJlIGluIHRoZSBmb2xsb3dpbmcgdGFibGU6CisgICAgICAgIDx0YWJsZSBib3JkZXI9IjEiIHN1bW1hcnk9Ikxvd2VyY2FzZSBtYXBwaW5nIGV4YW1wbGVzIHNob3dpbmcgbGFuZ3VhZ2UgY29kZSBvZiBsb2NhbGUsIHVwcGVyIGNhc2UsIGxvd2VyIGNhc2UsIGFuZCBkZXNjcmlwdGlvbiI+CisgICAgICAgICAgICA8dHI+CisgICAgICAgICAgICAgICAgPHRoPkxhbmd1YWdlIENvZGUgb2YgTG9jYWxlPC90aD4KKyAgICAgICAgICAgICAgICA8dGg+VXBwZXIgQ2FzZTwvdGg+CisgICAgICAgICAgICAgICAgPHRoPkxvd2VyIENhc2U8L3RoPgorICAgICAgICAgICAgICAgIDx0aD5EZXNjcmlwdGlvbjwvdGg+CisgICAgICAgICAgICA8L3RyPgorICAgICAgICAgICAgPHRyPgorICAgICAgICAgICAgICAgIDx0ZD50ciAoVHVya2lzaCk8L3RkPgorICAgICAgICAgICAgICAgIDx0ZD4mIzkyO3UwMTMwPC90ZD4KKyAgICAgICAgICAgICAgICA8dGQ+JiM5Mjt1MDA2OTwvdGQ+CisgICAgICAgICAgICAgICAgPHRkPmNhcGl0YWwgbGV0dGVyIEkgd2l0aCBkb3QgYWJvdmUgLSZndDsgc21hbGwgbGV0dGVyIGk8L3RkPgorICAgICAgICAgICAgPC90cj4KKyAgICAgICAgICAgIDx0cj4KKyAgICAgICAgICAgICAgICA8dGQ+dHIgKFR1cmtpc2gpPC90ZD4KKyAgICAgICAgICAgICAgICA8dGQ+JiM5Mjt1MDA0OTwvdGQ+CisgICAgICAgICAgICAgICAgPHRkPiYjOTI7dTAxMzE8L3RkPgorICAgICAgICAgICAgICAgIDx0ZD5jYXBpdGFsIGxldHRlciBJIC0mZ3Q7IHNtYWxsIGxldHRlciBkb3RsZXNzIGkgPC90ZD4KKyAgICAgICAgICAgIDwvdHI+CisgICAgICAgICAgICA8dHI+CisgICAgICAgICAgICAgICAgPHRkPihhbGwpPC90ZD4KKyAgICAgICAgICAgICAgICA8dGQ+RnJlbmNoIEZyaWVzPC90ZD4KKyAgICAgICAgICAgICAgICA8dGQ+ZnJlbmNoIGZyaWVzPC90ZD4KKyAgICAgICAgICAgICAgICA8dGQ+bG93ZXJjYXNlZCBhbGwgY2hhcnMgaW4gU3RyaW5nPC90ZD4KKyAgICAgICAgICAgIDwvdHI+CisgICAgICAgICAgICA8dHI+CisgICAgICAgICAgICAgICAgPHRkPihhbGwpPC90ZD4KKyAgICAgICAgICAgICAgICA8dGQ+PGltZyBzcmM9ImRvYy1maWxlcy9jYXBpb3RhLmdpZiIgYWx0PSJjYXBpb3RhIj48aW1nIHNyYz0iZG9jLWZpbGVzL2NhcGNoaS5naWYiIGFsdD0iY2FwY2hpIj4KKyAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9ImRvYy1maWxlcy9jYXB0aGV0YS5naWYiIGFsdD0iY2FwdGhldGEiPjxpbWcgc3JjPSJkb2MtZmlsZXMvY2FwdXBzaWwuZ2lmIiBhbHQ9ImNhcHVwc2lsIj4KKyAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9ImRvYy1maWxlcy9jYXBzaWdtYS5naWYiIGFsdD0iY2Fwc2lnbWEiPjwvdGQ+CisgICAgICAgICAgICAgICAgPHRkPjxpbWcgc3JjPSJkb2MtZmlsZXMvaW90YS5naWYiIGFsdD0iaW90YSI+PGltZyBzcmM9ImRvYy1maWxlcy9jaGkuZ2lmIiBhbHQ9ImNoaSI+CisgICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJkb2MtZmlsZXMvdGhldGEuZ2lmIiBhbHQ9InRoZXRhIj48aW1nIHNyYz0iZG9jLWZpbGVzL3Vwc2lsb24uZ2lmIiBhbHQ9InVwc2lsb24iPgorICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iZG9jLWZpbGVzL3NpZ21hMS5naWYiIGFsdD0ic2lnbWEiPjwvdGQ+CisgICAgICAgICAgICAgICAgPHRkPmxvd2VyY2FzZWQgYWxsIGNoYXJzIGluIFN0cmluZzwvdGQ+CisgICAgICAgICAgICA8L3RyPgorICAgICAgICA8L3RhYmxlPgorICAgICAgICA8UD4KKyAgICA8REQ+PERMPgorICAgIDwvREw+CisgICAgPC9ERD4KKyAgICA8REQ+PERMPgorICAgICAgICA8RFQ+PEI+UGFyYW1ldGVyczo8L0I+PEREPjxDT0RFPmxvY2FsZTwvQ09ERT4gLSB1c2UgdGhlIGNhc2UgdHJhbnNmb3JtYXRpb24gcnVsZXMgZm9yIHRoaXMgbG9jYWxlCisgICAgICAgIDxEVD48Qj5SZXR1cm5zOjwvQj48REQ+dGhlIDxjb2RlPlN0cmluZzwvY29kZT4sIGNvbnZlcnRlZCB0byBsb3dlcmNhc2UuPERUPjxCPlNpbmNlOjwvQj48L0RUPgorICAgICAgICA8REQ+MS4xPC9ERD4KKyAgICAgICAgPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vamF2YS9sYW5nL1N0cmluZy5odG1sI3RvTG93ZXJDYXNlKCkiPjxDT0RFPnRvTG93ZXJDYXNlKCk8L0NPREU+PC9BPiwKKyAgICAgICAgPEEgSFJFRj0iLi4vLi4vamF2YS9sYW5nL1N0cmluZy5odG1sI3RvVXBwZXJDYXNlKCkiPjxDT0RFPnRvVXBwZXJDYXNlKCk8L0NPREU+PC9BPiwKKyAgICAgICAgPEEgSFJFRj0iLi4vLi4vamF2YS9sYW5nL1N0cmluZy5odG1sI3RvVXBwZXJDYXNlKGphdmEudXRpbC5Mb2NhbGUpIj48Q09ERT50b1VwcGVyQ2FzZShMb2NhbGUpPC9DT0RFPjwvQT48L0RMPgorICAgIDwvREQ+Cis8L0RMPgorPEhSPgorCis8QSBOQU1FPSJ0b0xvd2VyQ2FzZSgpIj48IS0tIC0tPjwvQT48SDM+CisgICAgdG9Mb3dlckNhc2U8L0gzPgorPFBSRT4KK3B1YmxpYyA8QSBIUkVGPSIuLi8uLi9qYXZhL2xhbmcvU3RyaW5nLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBqYXZhLmxhbmciPlN0cmluZzwvQT4gPEI+dG9Mb3dlckNhc2U8L0I+KCk8L1BSRT4KKzxETD4KKyAgICA8REQ+Q29udmVydHMgYWxsIG9mIHRoZSBjaGFyYWN0ZXJzIGluIHRoaXMgPGNvZGU+U3RyaW5nPC9jb2RlPiB0byBsb3dlcgorICAgICAgICBjYXNlIHVzaW5nIHRoZSBydWxlcyBvZiB0aGUgZGVmYXVsdCBsb2NhbGUuIFRoaXMgaXMgZXF1aXZhbGVudCB0byBjYWxsaW5nCisgICAgICAgIDxjb2RlPnRvTG93ZXJDYXNlKExvY2FsZS5nZXREZWZhdWx0KCkpPC9jb2RlPi4KKyAgICAgICAgPHA+CisgICAgICAgICAgICA8Yj5Ob3RlOjwvYj4gVGhpcyBtZXRob2QgaXMgbG9jYWxlIHNlbnNpdGl2ZSwgYW5kIG1heSBwcm9kdWNlIHVuZXhwZWN0ZWQKKyAgICAgICAgICAgIHJlc3VsdHMgaWYgdXNlZCBmb3Igc3RyaW5ncyB0aGF0IGFyZSBpbnRlbmRlZCB0byBiZSBpbnRlcnByZXRlZCBsb2NhbGUKKyAgICAgICAgICAgIGluZGVwZW5kZW50bHkuCisgICAgICAgICAgICBFeGFtcGxlcyBhcmUgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2UgaWRlbnRpZmllcnMsIHByb3RvY29sIGtleXMsIGFuZCBIVE1MCisgICAgICAgICAgICB0YWdzLgorICAgICAgICAgICAgRm9yIGluc3RhbmNlLCA8Y29kZT4iVElUTEUiLnRvTG93ZXJDYXNlKCk8L2NvZGU+IGluIGEgVHVya2lzaCBsb2NhbGUKKyAgICAgICAgICAgIHJldHVybnMgPGNvZGU+InQ/dGxlIjwvY29kZT4sIHdoZXJlICc/JyBpcyB0aGUgTEFUSU4gU01BTEwKKyAgICAgICAgICAgIExFVFRFUiBET1RMRVNTIEkgY2hhcmFjdGVyLgorICAgICAgICAgICAgVG8gb2J0YWluIGNvcnJlY3QgcmVzdWx0cyBmb3IgbG9jYWxlIGluc2Vuc2l0aXZlIHN0cmluZ3MsIHVzZQorICAgICAgICAgICAgPGNvZGU+dG9Mb3dlckNhc2UoTG9jYWxlLkVOR0xJU0gpPC9jb2RlPi4KKyAgICAgICAgPHA+CisgICAgICAgIDxQPgorICAgIDxERD48REw+CisgICAgPC9ETD4KKyAgICA8L0REPgorICAgIDxERD48REw+CisKKyAgICAgICAgPERUPjxCPlJldHVybnM6PC9CPjxERD50aGUgPGNvZGU+U3RyaW5nPC9jb2RlPiwgY29udmVydGVkIHRvIGxvd2VyY2FzZS48RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi9qYXZhL2xhbmcvU3RyaW5nLmh0bWwjdG9Mb3dlckNhc2UoamF2YS51dGlsLkxvY2FsZSkiPjxDT0RFPnRvTG93ZXJDYXNlKExvY2FsZSk8L0NPREU+PC9BPjwvREw+CisgICAgPC9ERD4KKzwvREw+Cis8SFI+CisKKzxBIE5BTUU9InRvVXBwZXJDYXNlKGphdmEudXRpbC5Mb2NhbGUpIj48IS0tIC0tPjwvQT48SDM+CisgICAgdG9VcHBlckNhc2U8L0gzPgorPFBSRT4KK3B1YmxpYyA8QSBIUkVGPSIuLi8uLi9qYXZhL2xhbmcvU3RyaW5nLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBqYXZhLmxhbmciPlN0cmluZzwvQT4gPEI+dG9VcHBlckNhc2U8L0I+KDxBIEhSRUY9Ii4uLy4uL2phdmEvdXRpbC9Mb2NhbGUuaHRtbCIgdGl0bGU9ImNsYXNzIGluIGphdmEudXRpbCI+TG9jYWxlPC9BPiZuYnNwO2xvY2FsZSk8L1BSRT4KKzxETD4KKyAgICA8REQ+Q29udmVydHMgYWxsIG9mIHRoZSBjaGFyYWN0ZXJzIGluIHRoaXMgPGNvZGU+U3RyaW5nPC9jb2RlPiB0byB1cHBlcgorICAgICAgICBjYXNlIHVzaW5nIHRoZSBydWxlcyBvZiB0aGUgZ2l2ZW4gPGNvZGU+TG9jYWxlPC9jb2RlPi4gQ2FzZSBtYXBwaW5nIGlzIGJhc2VkCisgICAgICAgIG9uIHRoZSBVbmljb2RlIFN0YW5kYXJkIHZlcnNpb24gc3BlY2lmaWVkIGJ5IHRoZSA8QSBIUkVGPSIuLi8uLi9qYXZhL2xhbmcvQ2hhcmFjdGVyLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBqYXZhLmxhbmciPjxDT0RFPkNoYXJhY3RlcjwvQ09ERT48L0E+CisgICAgICAgIGNsYXNzLiBTaW5jZSBjYXNlIG1hcHBpbmdzIGFyZSBub3QgYWx3YXlzIDE6MSBjaGFyIG1hcHBpbmdzLCB0aGUgcmVzdWx0aW5nCisgICAgICAgIDxjb2RlPlN0cmluZzwvY29kZT4gbWF5IGJlIGEgZGlmZmVyZW50IGxlbmd0aCB0aGFuIHRoZSBvcmlnaW5hbCA8Y29kZT5TdHJpbmc8L2NvZGU+LgorICAgICAgICA8cD4KKyAgICAgICAgICAgIEV4YW1wbGVzIG9mIGxvY2FsZS1zZW5zaXRpdmUgYW5kIDE6TSBjYXNlIG1hcHBpbmdzIGFyZSBpbiB0aGUgZm9sbG93aW5nIHRhYmxlLgorICAgICAgICA8cD4KKyAgICAgICAgPHRhYmxlIGJvcmRlcj0iMSIgc3VtbWFyeT0iRXhhbXBsZXMgb2YgbG9jYWxlLXNlbnNpdGl2ZSBhbmQgMTpNIGNhc2UgbWFwcGluZ3MuIFNob3dzIExhbmd1YWdlIGNvZGUgb2YgbG9jYWxlLCBsb3dlciBjYXNlLCB1cHBlciBjYXNlLCBhbmQgZGVzY3JpcHRpb24uIj4KKyAgICAgICAgICAgIDx0cj4KKyAgICAgICAgICAgICAgICA8dGg+TGFuZ3VhZ2UgQ29kZSBvZiBMb2NhbGU8L3RoPgorICAgICAgICAgICAgICAgIDx0aD5Mb3dlciBDYXNlPC90aD4KKyAgICAgICAgICAgICAgICA8dGg+VXBwZXIgQ2FzZTwvdGg+CisgICAgICAgICAgICAgICAgPHRoPkRlc2NyaXB0aW9uPC90aD4KKyAgICAgICAgICAgIDwvdHI+CisgICAgICAgICAgICA8dHI+CisgICAgICAgICAgICAgICAgPHRkPnRyIChUdXJraXNoKTwvdGQ+CisgICAgICAgICAgICAgICAgPHRkPiYjOTI7dTAwNjk8L3RkPgorICAgICAgICAgICAgICAgIDx0ZD4mIzkyO3UwMTMwPC90ZD4KKyAgICAgICAgICAgICAgICA8dGQ+c21hbGwgbGV0dGVyIGkgLSZndDsgY2FwaXRhbCBsZXR0ZXIgSSB3aXRoIGRvdCBhYm92ZTwvdGQ+CisgICAgICAgICAgICA8L3RyPgorICAgICAgICAgICAgPHRyPgorICAgICAgICAgICAgICAgIDx0ZD50ciAoVHVya2lzaCk8L3RkPgorICAgICAgICAgICAgICAgIDx0ZD4mIzkyO3UwMTMxPC90ZD4KKyAgICAgICAgICAgICAgICA8dGQ+JiM5Mjt1MDA0OTwvdGQ+CisgICAgICAgICAgICAgICAgPHRkPnNtYWxsIGxldHRlciBkb3RsZXNzIGkgLSZndDsgY2FwaXRhbCBsZXR0ZXIgSTwvdGQ+CisgICAgICAgICAgICA8L3RyPgorICAgICAgICAgICAgPHRyPgorICAgICAgICAgICAgICAgIDx0ZD4oYWxsKTwvdGQ+CisgICAgICAgICAgICAgICAgPHRkPiYjOTI7dTAwZGY8L3RkPgorICAgICAgICAgICAgICAgIDx0ZD4mIzkyO3UwMDUzICYjOTI7dTAwNTM8L3RkPgorICAgICAgICAgICAgICAgIDx0ZD5zbWFsbCBsZXR0ZXIgc2hhcnAgcyAtJmd0OyB0d28gbGV0dGVyczogU1M8L3RkPgorICAgICAgICAgICAgPC90cj4KKyAgICAgICAgICAgIDx0cj4KKyAgICAgICAgICAgICAgICA8dGQ+KGFsbCk8L3RkPgorICAgICAgICAgICAgICAgIDx0ZD5GYWhydmVyZ24mdXVtbDtnZW48L3RkPgorICAgICAgICAgICAgICAgIDx0ZD5GQUhSVkVSR04mVXVtbDtHRU48L3RkPgorICAgICAgICAgICAgICAgIDx0ZD48L3RkPgorICAgICAgICAgICAgPC90cj4KKyAgICAgICAgPC90YWJsZT4KKyAgICAgICAgPFA+CisgICAgPEREPjxETD4KKyAgICA8L0RMPgorICAgIDwvREQ+CisgICAgPEREPjxETD4KKyAgICAgICAgPERUPjxCPlBhcmFtZXRlcnM6PC9CPjxERD48Q09ERT5sb2NhbGU8L0NPREU+IC0gdXNlIHRoZSBjYXNlIHRyYW5zZm9ybWF0aW9uIHJ1bGVzIGZvciB0aGlzIGxvY2FsZQorICAgICAgICA8RFQ+PEI+UmV0dXJuczo8L0I+PEREPnRoZSA8Y29kZT5TdHJpbmc8L2NvZGU+LCBjb252ZXJ0ZWQgdG8gdXBwZXJjYXNlLjxEVD48Qj5TaW5jZTo8L0I+PC9EVD4KKyAgICAgICAgPEREPjEuMTwvREQ+CisgICAgICAgIDxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uL2phdmEvbGFuZy9TdHJpbmcuaHRtbCN0b1VwcGVyQ2FzZSgpIj48Q09ERT50b1VwcGVyQ2FzZSgpPC9DT0RFPjwvQT4sCisgICAgICAgIDxBIEhSRUY9Ii4uLy4uL2phdmEvbGFuZy9TdHJpbmcuaHRtbCN0b0xvd2VyQ2FzZSgpIj48Q09ERT50b0xvd2VyQ2FzZSgpPC9DT0RFPjwvQT4sCisgICAgICAgIDxBIEhSRUY9Ii4uLy4uL2phdmEvbGFuZy9TdHJpbmcuaHRtbCN0b0xvd2VyQ2FzZShqYXZhLnV0aWwuTG9jYWxlKSI+PENPREU+dG9Mb3dlckNhc2UoTG9jYWxlKTwvQ09ERT48L0E+PC9ETD4KKyAgICA8L0REPgorPC9ETD4KKzxIUj4KKworPEEgTkFNRT0idG9VcHBlckNhc2UoKSI+PCEtLSAtLT48L0E+PEgzPgorICAgIHRvVXBwZXJDYXNlPC9IMz4KKzxQUkU+CitwdWJsaWMgPEEgSFJFRj0iLi4vLi4vamF2YS9sYW5nL1N0cmluZy5odG1sIiB0aXRsZT0iY2xhc3MgaW4gamF2YS5sYW5nIj5TdHJpbmc8L0E+IDxCPnRvVXBwZXJDYXNlPC9CPigpPC9QUkU+Cis8REw+CisgICAgPEREPkNvbnZlcnRzIGFsbCBvZiB0aGUgY2hhcmFjdGVycyBpbiB0aGlzIDxjb2RlPlN0cmluZzwvY29kZT4gdG8gdXBwZXIKKyAgICAgICAgY2FzZSB1c2luZyB0aGUgcnVsZXMgb2YgdGhlIGRlZmF1bHQgbG9jYWxlLiBUaGlzIG1ldGhvZCBpcyBlcXVpdmFsZW50IHRvCisgICAgICAgIDxjb2RlPnRvVXBwZXJDYXNlKExvY2FsZS5nZXREZWZhdWx0KCkpPC9jb2RlPi4KKyAgICAgICAgPHA+CisgICAgICAgICAgICA8Yj5Ob3RlOjwvYj4gVGhpcyBtZXRob2QgaXMgbG9jYWxlIHNlbnNpdGl2ZSwgYW5kIG1heSBwcm9kdWNlIHVuZXhwZWN0ZWQKKyAgICAgICAgICAgIHJlc3VsdHMgaWYgdXNlZCBmb3Igc3RyaW5ncyB0aGF0IGFyZSBpbnRlbmRlZCB0byBiZSBpbnRlcnByZXRlZCBsb2NhbGUKKyAgICAgICAgICAgIGluZGVwZW5kZW50bHkuCisgICAgICAgICAgICBFeGFtcGxlcyBhcmUgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2UgaWRlbnRpZmllcnMsIHByb3RvY29sIGtleXMsIGFuZCBIVE1MCisgICAgICAgICAgICB0YWdzLgorICAgICAgICAgICAgRm9yIGluc3RhbmNlLCA8Y29kZT4idGl0bGUiLnRvVXBwZXJDYXNlKCk8L2NvZGU+IGluIGEgVHVya2lzaCBsb2NhbGUKKyAgICAgICAgICAgIHJldHVybnMgPGNvZGU+IlQ/VExFIjwvY29kZT4sIHdoZXJlICc/JyBpcyB0aGUgTEFUSU4gQ0FQSVRBTAorICAgICAgICAgICAgTEVUVEVSIEkgV0lUSCBET1QgQUJPVkUgY2hhcmFjdGVyLgorICAgICAgICAgICAgVG8gb2J0YWluIGNvcnJlY3QgcmVzdWx0cyBmb3IgbG9jYWxlIGluc2Vuc2l0aXZlIHN0cmluZ3MsIHVzZQorICAgICAgICAgICAgPGNvZGU+dG9VcHBlckNhc2UoTG9jYWxlLkVOR0xJU0gpPC9jb2RlPi4KKyAgICAgICAgPHA+CisgICAgICAgIDxQPgorICAgIDxERD48REw+CisgICAgPC9ETD4KKyAgICA8L0REPgorICAgIDxERD48REw+CisKKyAgICAgICAgPERUPjxCPlJldHVybnM6PC9CPjxERD50aGUgPGNvZGU+U3RyaW5nPC9jb2RlPiwgY29udmVydGVkIHRvIHVwcGVyY2FzZS48RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi9qYXZhL2xhbmcvU3RyaW5nLmh0bWwjdG9VcHBlckNhc2UoamF2YS51dGlsLkxvY2FsZSkiPjxDT0RFPnRvVXBwZXJDYXNlKExvY2FsZSk8L0NPREU+PC9BPjwvREw+CisgICAgPC9ERD4KKzwvREw+Cis8SFI+CisKKzxBIE5BTUU9InRyaW0oKSI+PCEtLSAtLT48L0E+PEgzPgorICAgIHRyaW08L0gzPgorPFBSRT4KK3B1YmxpYyA8QSBIUkVGPSIuLi8uLi9qYXZhL2xhbmcvU3RyaW5nLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBqYXZhLmxhbmciPlN0cmluZzwvQT4gPEI+dHJpbTwvQj4oKTwvUFJFPgorPERMPgorICAgIDxERD5SZXR1cm5zIGEgY29weSBvZiB0aGUgc3RyaW5nLCB3aXRoIGxlYWRpbmcgYW5kIHRyYWlsaW5nIHdoaXRlc3BhY2UKKyAgICAgICAgb21pdHRlZC4KKyAgICAgICAgPHA+CisgICAgICAgICAgICBJZiB0aGlzIDxjb2RlPlN0cmluZzwvY29kZT4gb2JqZWN0IHJlcHJlc2VudHMgYW4gZW1wdHkgY2hhcmFjdGVyCisgICAgICAgICAgICBzZXF1ZW5jZSwgb3IgdGhlIGZpcnN0IGFuZCBsYXN0IGNoYXJhY3RlcnMgb2YgY2hhcmFjdGVyIHNlcXVlbmNlCisgICAgICAgICAgICByZXByZXNlbnRlZCBieSB0aGlzIDxjb2RlPlN0cmluZzwvY29kZT4gb2JqZWN0IGJvdGggaGF2ZSBjb2RlcworICAgICAgICAgICAgZ3JlYXRlciB0aGFuIDxjb2RlPicmIzkyO3UwMDIwJzwvY29kZT4gKHRoZSBzcGFjZSBjaGFyYWN0ZXIpLCB0aGVuIGEKKyAgICAgICAgICAgIHJlZmVyZW5jZSB0byB0aGlzIDxjb2RlPlN0cmluZzwvY29kZT4gb2JqZWN0IGlzIHJldHVybmVkLgorICAgICAgICA8cD4KKyAgICAgICAgICAgIE90aGVyd2lzZSwgaWYgdGhlcmUgaXMgbm8gY2hhcmFjdGVyIHdpdGggYSBjb2RlIGdyZWF0ZXIgdGhhbgorICAgICAgICAgICAgPGNvZGU+JyYjOTI7dTAwMjAnPC9jb2RlPiBpbiB0aGUgc3RyaW5nLCB0aGVuIGEgbmV3CisgICAgICAgICAgICA8Y29kZT5TdHJpbmc8L2NvZGU+IG9iamVjdCByZXByZXNlbnRpbmcgYW4gZW1wdHkgc3RyaW5nIGlzIGNyZWF0ZWQKKyAgICAgICAgICAgIGFuZCByZXR1cm5lZC4KKyAgICAgICAgPHA+CisgICAgICAgICAgICBPdGhlcndpc2UsIGxldCA8aT5rPC9pPiBiZSB0aGUgaW5kZXggb2YgdGhlIGZpcnN0IGNoYXJhY3RlciBpbiB0aGUKKyAgICAgICAgICAgIHN0cmluZyB3aG9zZSBjb2RlIGlzIGdyZWF0ZXIgdGhhbiA8Y29kZT4nJiM5Mjt1MDAyMCc8L2NvZGU+LCBhbmQgbGV0CisgICAgICAgICAgICA8aT5tPC9pPiBiZSB0aGUgaW5kZXggb2YgdGhlIGxhc3QgY2hhcmFjdGVyIGluIHRoZSBzdHJpbmcgd2hvc2UgY29kZQorICAgICAgICAgICAgaXMgZ3JlYXRlciB0aGFuIDxjb2RlPicmIzkyO3UwMDIwJzwvY29kZT4uIEEgbmV3IDxjb2RlPlN0cmluZzwvY29kZT4KKyAgICAgICAgICAgIG9iamVjdCBpcyBjcmVhdGVkLCByZXByZXNlbnRpbmcgdGhlIHN1YnN0cmluZyBvZiB0aGlzIHN0cmluZyB0aGF0CisgICAgICAgICAgICBiZWdpbnMgd2l0aCB0aGUgY2hhcmFjdGVyIGF0IGluZGV4IDxpPms8L2k+IGFuZCBlbmRzIHdpdGggdGhlCisgICAgICAgICAgICBjaGFyYWN0ZXIgYXQgaW5kZXggPGk+bTwvaT4tdGhhdCBpcywgdGhlIHJlc3VsdCBvZgorICAgICAgICAgICAgPGNvZGU+dGhpcy5zdWJzdHJpbmcoPGk+azwvaT4sJm5ic3A7PGk+bTwvaT4rMSk8L2NvZGU+LgorICAgICAgICA8cD4KKyAgICAgICAgICAgIFRoaXMgbWV0aG9kIG1heSBiZSB1c2VkIHRvIHRyaW0gd2hpdGVzcGFjZSAoYXMgZGVmaW5lZCBhYm92ZSkgZnJvbQorICAgICAgICAgICAgdGhlIGJlZ2lubmluZyBhbmQgZW5kIG9mIGEgc3RyaW5nLgorICAgICAgICA8UD4KKyAgICA8REQ+PERMPgorICAgIDwvREw+CisgICAgPC9ERD4KKyAgICA8REQ+PERMPgorCisgICAgICAgIDxEVD48Qj5SZXR1cm5zOjwvQj48REQ+QSBjb3B5IG9mIHRoaXMgc3RyaW5nIHdpdGggbGVhZGluZyBhbmQgdHJhaWxpbmcgd2hpdGUKKyAgICAgICAgc3BhY2UgcmVtb3ZlZCwgb3IgdGhpcyBzdHJpbmcgaWYgaXQgaGFzIG5vIGxlYWRpbmcgb3IKKyAgICAgICAgdHJhaWxpbmcgd2hpdGUgc3BhY2UuPC9ETD4KKyAgICA8L0REPgorPC9ETD4KKzxIUj4KKworPEEgTkFNRT0idG9TdHJpbmcoKSI+PCEtLSAtLT48L0E+PEgzPgorICAgIHRvU3RyaW5nPC9IMz4KKzxQUkU+CitwdWJsaWMgPEEgSFJFRj0iLi4vLi4vamF2YS9sYW5nL1N0cmluZy5odG1sIiB0aXRsZT0iY2xhc3MgaW4gamF2YS5sYW5nIj5TdHJpbmc8L0E+IDxCPnRvU3RyaW5nPC9CPigpPC9QUkU+Cis8REw+CisgICAgPEREPlRoaXMgb2JqZWN0ICh3aGljaCBpcyBhbHJlYWR5IGEgc3RyaW5nISkgaXMgaXRzZWxmIHJldHVybmVkLgorICAgICAgICA8UD4KKyAgICA8REQ+PERMPgorICAgICAgICA8RFQ+PEI+U3BlY2lmaWVkIGJ5OjwvQj48REQ+PENPREU+PEEgSFJFRj0iLi4vLi4vamF2YS9sYW5nL0NoYXJTZXF1ZW5jZS5odG1sI3RvU3RyaW5nKCkiPnRvU3RyaW5nPC9BPjwvQ09ERT4gaW4gaW50ZXJmYWNlIDxDT0RFPjxBIEhSRUY9Ii4uLy4uL2phdmEvbGFuZy9DaGFyU2VxdWVuY2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBqYXZhLmxhbmciPkNoYXJTZXF1ZW5jZTwvQT48L0NPREU+PERUPjxCPk92ZXJyaWRlczo8L0I+PEREPjxDT0RFPjxBIEhSRUY9Ii4uLy4uL2phdmEvbGFuZy9PYmplY3QuaHRtbCN0b1N0cmluZygpIj50b1N0cmluZzwvQT48L0NPREU+IGluIGNsYXNzIDxDT0RFPjxBIEhSRUY9Ii4uLy4uL2phdmEvbGFuZy9PYmplY3QuaHRtbCIgdGl0bGU9ImNsYXNzIGluIGphdmEubGFuZyI+T2JqZWN0PC9BPjwvQ09ERT48L0RMPgorICAgIDwvREQ+CisgICAgPEREPjxETD4KKworICAgICAgICA8RFQ+PEI+UmV0dXJuczo8L0I+PEREPnRoZSBzdHJpbmcgaXRzZWxmLjwvREw+CisgICAgPC9ERD4KKzwvREw+Cis8SFI+CisKKzxBIE5BTUU9InRvQ2hhckFycmF5KCkiPjwhLS0gLS0+PC9BPjxIMz4KKyAgICB0b0NoYXJBcnJheTwvSDM+Cis8UFJFPgorcHVibGljIGNoYXJbXSA8Qj50b0NoYXJBcnJheTwvQj4oKTwvUFJFPgorPERMPgorICAgIDxERD5Db252ZXJ0cyB0aGlzIHN0cmluZyB0byBhIG5ldyBjaGFyYWN0ZXIgYXJyYXkuCisgICAgICAgIDxQPgorICAgIDxERD48REw+CisgICAgPC9ETD4KKyAgICA8L0REPgorICAgIDxERD48REw+CisKKyAgICAgICAgPERUPjxCPlJldHVybnM6PC9CPjxERD5hIG5ld2x5IGFsbG9jYXRlZCBjaGFyYWN0ZXIgYXJyYXkgd2hvc2UgbGVuZ3RoIGlzIHRoZSBsZW5ndGgKKyAgICAgICAgb2YgdGhpcyBzdHJpbmcgYW5kIHdob3NlIGNvbnRlbnRzIGFyZSBpbml0aWFsaXplZCB0byBjb250YWluCisgICAgICAgIHRoZSBjaGFyYWN0ZXIgc2VxdWVuY2UgcmVwcmVzZW50ZWQgYnkgdGhpcyBzdHJpbmcuPC9ETD4KKyAgICA8L0REPgorPC9ETD4KKzxIUj4KKworPEEgTkFNRT0iZm9ybWF0KGphdmEubGFuZy5TdHJpbmcsIGphdmEubGFuZy5PYmplY3QuLi4pIj48IS0tIC0tPjwvQT48SDM+CisgICAgZm9ybWF0PC9IMz4KKzxQUkU+CitwdWJsaWMgc3RhdGljIDxBIEhSRUY9Ii4uLy4uL2phdmEvbGFuZy9TdHJpbmcuaHRtbCIgdGl0bGU9ImNsYXNzIGluIGphdmEubGFuZyI+U3RyaW5nPC9BPiA8Qj5mb3JtYXQ8L0I+KDxBIEhSRUY9Ii4uLy4uL2phdmEvbGFuZy9TdHJpbmcuaHRtbCIgdGl0bGU9ImNsYXNzIGluIGphdmEubGFuZyI+U3RyaW5nPC9BPiZuYnNwO2Zvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QSBIUkVGPSIuLi8uLi9qYXZhL2xhbmcvT2JqZWN0Lmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBqYXZhLmxhbmciPk9iamVjdDwvQT4uLi4mbmJzcDthcmdzKTwvUFJFPgorPERMPgorICAgIDxERD5SZXR1cm5zIGEgZm9ybWF0dGVkIHN0cmluZyB1c2luZyB0aGUgc3BlY2lmaWVkIGZvcm1hdCBzdHJpbmcgYW5kCisgICAgICAgIGFyZ3VtZW50cy4KKworICAgICAgICA8cD4gVGhlIGxvY2FsZSBhbHdheXMgdXNlZCBpcyB0aGUgb25lIHJldHVybmVkIGJ5IDxBIEhSRUY9Ii4uLy4uL2phdmEvdXRpbC9Mb2NhbGUuaHRtbCNnZXREZWZhdWx0KCkiPjxDT0RFPkxvY2FsZS5nZXREZWZhdWx0KCk8L0NPREU+PC9BPi4KKyAgICAgICAgPFA+CisgICAgPEREPjxETD4KKyAgICA8L0RMPgorICAgIDwvREQ+CisgICAgPEREPjxETD4KKyAgICAgICAgPERUPjxCPlBhcmFtZXRlcnM6PC9CPjxERD48Q09ERT5mb3JtYXQ8L0NPREU+IC0gQSA8YSBocmVmPSIuLi91dGlsL0Zvcm1hdHRlci5odG1sI3N5bnRheCI+Zm9ybWF0IHN0cmluZzwvYT48REQ+PENPREU+YXJnczwvQ09ERT4gLSBBcmd1bWVudHMgcmVmZXJlbmNlZCBieSB0aGUgZm9ybWF0IHNwZWNpZmllcnMgaW4gdGhlIGZvcm1hdAorICAgICAgICBzdHJpbmcuICBJZiB0aGVyZSBhcmUgbW9yZSBhcmd1bWVudHMgdGhhbiBmb3JtYXQgc3BlY2lmaWVycywgdGhlCisgICAgICAgIGV4dHJhIGFyZ3VtZW50cyBhcmUgaWdub3JlZC4gIFRoZSBudW1iZXIgb2YgYXJndW1lbnRzIGlzCisgICAgICAgIHZhcmlhYmxlIGFuZCBtYXkgYmUgemVyby4gIFRoZSBtYXhpbXVtIG51bWJlciBvZiBhcmd1bWVudHMgaXMKKyAgICAgICAgbGltaXRlZCBieSB0aGUgbWF4aW11bSBkaW1lbnNpb24gb2YgYSBKYXZhIGFycmF5IGFzIGRlZmluZWQgYnkKKyAgICAgICAgdGhlIDxhIGhyZWY9Imh0dHA6Ly9qYXZhLnN1bi5jb20vZG9jcy9ib29rcy92bXNwZWMvIj5KYXZhCisgICAgICAgICAgICBWaXJ0dWFsIE1hY2hpbmUgU3BlY2lmaWNhdGlvbjwvYT4uICBUaGUgYmVoYXZpb3VyIG9uIGEKKyAgICAgICAgPHR0Pm51bGw8L3R0PiBhcmd1bWVudCBkZXBlbmRzIG9uIHRoZSA8YQorICAgICAgICAgICAgICAgIGhyZWY9Ii4uL3V0aWwvRm9ybWF0dGVyLmh0bWwjc3ludGF4Ij5jb252ZXJzaW9uPC9hPi4KKyAgICAgICAgPERUPjxCPlJldHVybnM6PC9CPjxERD5BIGZvcm1hdHRlZCBzdHJpbmcKKyAgICAgICAgPERUPjxCPlRocm93czo8L0I+CisgICAgICAgIDxERD48Q09ERT5JbGxlZ2FsRm9ybWF0RXhjZXB0aW9uPC9DT0RFPiAtIElmIGEgZm9ybWF0IHN0cmluZyBjb250YWlucyBhbiBpbGxlZ2FsIHN5bnRheCwgYSBmb3JtYXQKKyAgICAgICAgICAgIHNwZWNpZmllciB0aGF0IGlzIGluY29tcGF0aWJsZSB3aXRoIHRoZSBnaXZlbiBhcmd1bWVudHMsCisgICAgICAgICAgICBpbnN1ZmZpY2llbnQgYXJndW1lbnRzIGdpdmVuIHRoZSBmb3JtYXQgc3RyaW5nLCBvciBvdGhlcgorICAgICAgICAgICAgaWxsZWdhbCBjb25kaXRpb25zLiAgRm9yIHNwZWNpZmljYXRpb24gb2YgYWxsIHBvc3NpYmxlCisgICAgICAgICAgICBmb3JtYXR0aW5nIGVycm9ycywgc2VlIHRoZSA8YQorICAgICAgICAgICAgICAgICAgICBocmVmPSIuLi91dGlsL0Zvcm1hdHRlci5odG1sI2RldGFpbCI+RGV0YWlsczwvYT4gc2VjdGlvbiBvZiB0aGUKKyAgICAgICAgICAgIGZvcm1hdHRlciBjbGFzcyBzcGVjaWZpY2F0aW9uLgorICAgICAgICA8REQ+PENPREU+PEEgSFJFRj0iLi4vLi4vamF2YS9sYW5nL051bGxQb2ludGVyRXhjZXB0aW9uLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBqYXZhLmxhbmciPk51bGxQb2ludGVyRXhjZXB0aW9uPC9BPjwvQ09ERT4gLSBJZiB0aGUgPHR0PmZvcm1hdDwvdHQ+IGlzIDx0dD5udWxsPC90dD48RFQ+PEI+U2luY2U6PC9CPjwvRFQ+CisgICAgICAgIDxERD4xLjU8L0REPgorICAgICAgICA8RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi9qYXZhL3V0aWwvRm9ybWF0dGVyLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBqYXZhLnV0aWwiPjxDT0RFPkZvcm1hdHRlcjwvQ09ERT48L0E+PC9ETD4KKyAgICA8L0REPgorPC9ETD4KKzxIUj4KKworPEEgTkFNRT0iZm9ybWF0KGphdmEudXRpbC5Mb2NhbGUsIGphdmEubGFuZy5TdHJpbmcsIGphdmEubGFuZy5PYmplY3QuLi4pIj48IS0tIC0tPjwvQT48SDM+CisgICAgZm9ybWF0PC9IMz4KKzxQUkU+CitwdWJsaWMgc3RhdGljIDxBIEhSRUY9Ii4uLy4uL2phdmEvbGFuZy9TdHJpbmcuaHRtbCIgdGl0bGU9ImNsYXNzIGluIGphdmEubGFuZyI+U3RyaW5nPC9BPiA8Qj5mb3JtYXQ8L0I+KDxBIEhSRUY9Ii4uLy4uL2phdmEvdXRpbC9Mb2NhbGUuaHRtbCIgdGl0bGU9ImNsYXNzIGluIGphdmEudXRpbCI+TG9jYWxlPC9BPiZuYnNwO2wsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEEgSFJFRj0iLi4vLi4vamF2YS9sYW5nL1N0cmluZy5odG1sIiB0aXRsZT0iY2xhc3MgaW4gamF2YS5sYW5nIj5TdHJpbmc8L0E+Jm5ic3A7Zm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBIEhSRUY9Ii4uLy4uL2phdmEvbGFuZy9PYmplY3QuaHRtbCIgdGl0bGU9ImNsYXNzIGluIGphdmEubGFuZyI+T2JqZWN0PC9BPi4uLiZuYnNwO2FyZ3MpPC9QUkU+Cis8REw+CisgICAgPEREPlJldHVybnMgYSBmb3JtYXR0ZWQgc3RyaW5nIHVzaW5nIHRoZSBzcGVjaWZpZWQgbG9jYWxlLCBmb3JtYXQgc3RyaW5nLAorICAgICAgICBhbmQgYXJndW1lbnRzLgorICAgICAgICA8UD4KKyAgICA8REQ+PERMPgorICAgIDwvREw+CisgICAgPC9ERD4KKyAgICA8REQ+PERMPgorICAgICAgICA8RFQ+PEI+UGFyYW1ldGVyczo8L0I+PEREPjxDT0RFPmw8L0NPREU+IC0gVGhlIDxBIEhSRUY9Ii4uLy4uL2phdmEvdXRpbC9Mb2NhbGUuaHRtbCIgdGl0bGU9ImNsYXNzIGluIGphdmEudXRpbCI+bG9jYWxlPC9BPiB0byBhcHBseSBkdXJpbmcKKyAgICAgICAgZm9ybWF0dGluZy4gIElmIDx0dD5sPC90dD4gaXMgPHR0Pm51bGw8L3R0PiB0aGVuIG5vIGxvY2FsaXphdGlvbgorICAgICAgICBpcyBhcHBsaWVkLjxERD48Q09ERT5mb3JtYXQ8L0NPREU+IC0gQSA8YSBocmVmPSIuLi91dGlsL0Zvcm1hdHRlci5odG1sI3N5bnRheCI+Zm9ybWF0IHN0cmluZzwvYT48REQ+PENPREU+YXJnczwvQ09ERT4gLSBBcmd1bWVudHMgcmVmZXJlbmNlZCBieSB0aGUgZm9ybWF0IHNwZWNpZmllcnMgaW4gdGhlIGZvcm1hdAorICAgICAgICBzdHJpbmcuICBJZiB0aGVyZSBhcmUgbW9yZSBhcmd1bWVudHMgdGhhbiBmb3JtYXQgc3BlY2lmaWVycywgdGhlCisgICAgICAgIGV4dHJhIGFyZ3VtZW50cyBhcmUgaWdub3JlZC4gIFRoZSBudW1iZXIgb2YgYXJndW1lbnRzIGlzCisgICAgICAgIHZhcmlhYmxlIGFuZCBtYXkgYmUgemVyby4gIFRoZSBtYXhpbXVtIG51bWJlciBvZiBhcmd1bWVudHMgaXMKKyAgICAgICAgbGltaXRlZCBieSB0aGUgbWF4aW11bSBkaW1lbnNpb24gb2YgYSBKYXZhIGFycmF5IGFzIGRlZmluZWQgYnkKKyAgICAgICAgdGhlIDxhIGhyZWY9Imh0dHA6Ly9qYXZhLnN1bi5jb20vZG9jcy9ib29rcy92bXNwZWMvIj5KYXZhCisgICAgICAgICAgICBWaXJ0dWFsIE1hY2hpbmUgU3BlY2lmaWNhdGlvbjwvYT4uICBUaGUgYmVoYXZpb3VyIG9uIGEKKyAgICAgICAgPHR0Pm51bGw8L3R0PiBhcmd1bWVudCBkZXBlbmRzIG9uIHRoZSA8YQorICAgICAgICAgICAgICAgIGhyZWY9Ii4uL3V0aWwvRm9ybWF0dGVyLmh0bWwjc3ludGF4Ij5jb252ZXJzaW9uPC9hPi4KKyAgICAgICAgPERUPjxCPlJldHVybnM6PC9CPjxERD5BIGZvcm1hdHRlZCBzdHJpbmcKKyAgICAgICAgPERUPjxCPlRocm93czo8L0I+CisgICAgICAgIDxERD48Q09ERT5JbGxlZ2FsRm9ybWF0RXhjZXB0aW9uPC9DT0RFPiAtIElmIGEgZm9ybWF0IHN0cmluZyBjb250YWlucyBhbiBpbGxlZ2FsIHN5bnRheCwgYSBmb3JtYXQKKyAgICAgICAgICAgIHNwZWNpZmllciB0aGF0IGlzIGluY29tcGF0aWJsZSB3aXRoIHRoZSBnaXZlbiBhcmd1bWVudHMsCisgICAgICAgICAgICBpbnN1ZmZpY2llbnQgYXJndW1lbnRzIGdpdmVuIHRoZSBmb3JtYXQgc3RyaW5nLCBvciBvdGhlcgorICAgICAgICAgICAgaWxsZWdhbCBjb25kaXRpb25zLiAgRm9yIHNwZWNpZmljYXRpb24gb2YgYWxsIHBvc3NpYmxlCisgICAgICAgICAgICBmb3JtYXR0aW5nIGVycm9ycywgc2VlIHRoZSA8YQorICAgICAgICAgICAgICAgICAgICBocmVmPSIuLi91dGlsL0Zvcm1hdHRlci5odG1sI2RldGFpbCI+RGV0YWlsczwvYT4gc2VjdGlvbiBvZiB0aGUKKyAgICAgICAgICAgIGZvcm1hdHRlciBjbGFzcyBzcGVjaWZpY2F0aW9uCisgICAgICAgIDxERD48Q09ERT48QSBIUkVGPSIuLi8uLi9qYXZhL2xhbmcvTnVsbFBvaW50ZXJFeGNlcHRpb24uaHRtbCIgdGl0bGU9ImNsYXNzIGluIGphdmEubGFuZyI+TnVsbFBvaW50ZXJFeGNlcHRpb248L0E+PC9DT0RFPiAtIElmIHRoZSA8dHQ+Zm9ybWF0PC90dD4gaXMgPHR0Pm51bGw8L3R0PjxEVD48Qj5TaW5jZTo8L0I+PC9EVD4KKyAgICAgICAgPEREPjEuNTwvREQ+CisgICAgICAgIDxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uL2phdmEvdXRpbC9Gb3JtYXR0ZXIuaHRtbCIgdGl0bGU9ImNsYXNzIGluIGphdmEudXRpbCI+PENPREU+Rm9ybWF0dGVyPC9DT0RFPjwvQT48L0RMPgorICAgIDwvREQ+Cis8L0RMPgorPEhSPgorCis8QSBOQU1FPSJ2YWx1ZU9mKGphdmEubGFuZy5PYmplY3QpIj48IS0tIC0tPjwvQT48SDM+CisgICAgdmFsdWVPZjwvSDM+Cis8UFJFPgorcHVibGljIHN0YXRpYyA8QSBIUkVGPSIuLi8uLi9qYXZhL2xhbmcvU3RyaW5nLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBqYXZhLmxhbmciPlN0cmluZzwvQT4gPEI+dmFsdWVPZjwvQj4oPEEgSFJFRj0iLi4vLi4vamF2YS9sYW5nL09iamVjdC5odG1sIiB0aXRsZT0iY2xhc3MgaW4gamF2YS5sYW5nIj5PYmplY3Q8L0E+Jm5ic3A7b2JqKTwvUFJFPgorPERMPgorICAgIDxERD5SZXR1cm5zIHRoZSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhlIDxjb2RlPk9iamVjdDwvY29kZT4gYXJndW1lbnQuCisgICAgICAgIDxQPgorICAgIDxERD48REw+CisgICAgPC9ETD4KKyAgICA8L0REPgorICAgIDxERD48REw+CisgICAgICAgIDxEVD48Qj5QYXJhbWV0ZXJzOjwvQj48REQ+PENPREU+b2JqPC9DT0RFPiAtIGFuIDxjb2RlPk9iamVjdDwvY29kZT4uCisgICAgICAgIDxEVD48Qj5SZXR1cm5zOjwvQj48REQ+aWYgdGhlIGFyZ3VtZW50IGlzIDxjb2RlPm51bGw8L2NvZGU+LCB0aGVuIGEgc3RyaW5nIGVxdWFsIHRvCisgICAgICAgIDxjb2RlPiJudWxsIjwvY29kZT47IG90aGVyd2lzZSwgdGhlIHZhbHVlIG9mCisgICAgICAgIDxjb2RlPm9iai50b1N0cmluZygpPC9jb2RlPiBpcyByZXR1cm5lZC48RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi9qYXZhL2xhbmcvT2JqZWN0Lmh0bWwjdG9TdHJpbmcoKSI+PENPREU+T2JqZWN0LnRvU3RyaW5nKCk8L0NPREU+PC9BPjwvREw+CisgICAgPC9ERD4KKzwvREw+Cis8SFI+CisKKzxBIE5BTUU9InZhbHVlT2YoY2hhcltdKSI+PCEtLSAtLT48L0E+PEgzPgorICAgIHZhbHVlT2Y8L0gzPgorPFBSRT4KK3B1YmxpYyBzdGF0aWMgPEEgSFJFRj0iLi4vLi4vamF2YS9sYW5nL1N0cmluZy5odG1sIiB0aXRsZT0iY2xhc3MgaW4gamF2YS5sYW5nIj5TdHJpbmc8L0E+IDxCPnZhbHVlT2Y8L0I+KGNoYXJbXSZuYnNwO2RhdGEpPC9QUkU+Cis8REw+CisgICAgPEREPlJldHVybnMgdGhlIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGUgPGNvZGU+Y2hhcjwvY29kZT4gYXJyYXkKKyAgICAgICAgYXJndW1lbnQuIFRoZSBjb250ZW50cyBvZiB0aGUgY2hhcmFjdGVyIGFycmF5IGFyZSBjb3BpZWQ7IHN1YnNlcXVlbnQKKyAgICAgICAgbW9kaWZpY2F0aW9uIG9mIHRoZSBjaGFyYWN0ZXIgYXJyYXkgZG9lcyBub3QgYWZmZWN0IHRoZSBuZXdseQorICAgICAgICBjcmVhdGVkIHN0cmluZy4KKyAgICAgICAgPFA+CisgICAgPEREPjxETD4KKyAgICA8L0RMPgorICAgIDwvREQ+CisgICAgPEREPjxETD4KKyAgICAgICAgPERUPjxCPlBhcmFtZXRlcnM6PC9CPjxERD48Q09ERT5kYXRhPC9DT0RFPiAtIGEgPGNvZGU+Y2hhcjwvY29kZT4gYXJyYXkuCisgICAgICAgIDxEVD48Qj5SZXR1cm5zOjwvQj48REQ+YSBuZXdseSBhbGxvY2F0ZWQgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgc2FtZSBzZXF1ZW5jZSBvZgorICAgICAgICBjaGFyYWN0ZXJzIGNvbnRhaW5lZCBpbiB0aGUgY2hhcmFjdGVyIGFycmF5IGFyZ3VtZW50LjwvREw+CisgICAgPC9ERD4KKzwvREw+Cis8SFI+CisKKzxBIE5BTUU9InZhbHVlT2YoY2hhcltdLCBpbnQsIGludCkiPjwhLS0gLS0+PC9BPjxIMz4KKyAgICB2YWx1ZU9mPC9IMz4KKzxQUkU+CitwdWJsaWMgc3RhdGljIDxBIEhSRUY9Ii4uLy4uL2phdmEvbGFuZy9TdHJpbmcuaHRtbCIgdGl0bGU9ImNsYXNzIGluIGphdmEubGFuZyI+U3RyaW5nPC9BPiA8Qj52YWx1ZU9mPC9CPihjaGFyW10mbmJzcDtkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQmbmJzcDtvZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCZuYnNwO2NvdW50KTwvUFJFPgorPERMPgorICAgIDxERD5SZXR1cm5zIHRoZSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYSBzcGVjaWZpYyBzdWJhcnJheSBvZiB0aGUKKyAgICAgICAgPGNvZGU+Y2hhcjwvY29kZT4gYXJyYXkgYXJndW1lbnQuCisgICAgICAgIDxwPgorICAgICAgICAgICAgVGhlIDxjb2RlPm9mZnNldDwvY29kZT4gYXJndW1lbnQgaXMgdGhlIGluZGV4IG9mIHRoZSBmaXJzdAorICAgICAgICAgICAgY2hhcmFjdGVyIG9mIHRoZSBzdWJhcnJheS4gVGhlIDxjb2RlPmNvdW50PC9jb2RlPiBhcmd1bWVudAorICAgICAgICAgICAgc3BlY2lmaWVzIHRoZSBsZW5ndGggb2YgdGhlIHN1YmFycmF5LiBUaGUgY29udGVudHMgb2YgdGhlIHN1YmFycmF5CisgICAgICAgICAgICBhcmUgY29waWVkOyBzdWJzZXF1ZW50IG1vZGlmaWNhdGlvbiBvZiB0aGUgY2hhcmFjdGVyIGFycmF5IGRvZXMgbm90CisgICAgICAgICAgICBhZmZlY3QgdGhlIG5ld2x5IGNyZWF0ZWQgc3RyaW5nLgorICAgICAgICA8UD4KKyAgICA8REQ+PERMPgorICAgIDwvREw+CisgICAgPC9ERD4KKyAgICA8REQ+PERMPgorICAgICAgICA8RFQ+PEI+UGFyYW1ldGVyczo8L0I+PEREPjxDT0RFPmRhdGE8L0NPREU+IC0gdGhlIGNoYXJhY3RlciBhcnJheS48REQ+PENPREU+b2Zmc2V0PC9DT0RFPiAtIHRoZSBpbml0aWFsIG9mZnNldCBpbnRvIHRoZSB2YWx1ZSBvZiB0aGUKKyAgICAgICAgPGNvZGU+U3RyaW5nPC9jb2RlPi48REQ+PENPREU+Y291bnQ8L0NPREU+IC0gdGhlIGxlbmd0aCBvZiB0aGUgdmFsdWUgb2YgdGhlIDxjb2RlPlN0cmluZzwvY29kZT4uCisgICAgICAgIDxEVD48Qj5SZXR1cm5zOjwvQj48REQ+YSBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSBzZXF1ZW5jZSBvZiBjaGFyYWN0ZXJzIGNvbnRhaW5lZAorICAgICAgICBpbiB0aGUgc3ViYXJyYXkgb2YgdGhlIGNoYXJhY3RlciBhcnJheSBhcmd1bWVudC4KKyAgICAgICAgPERUPjxCPlRocm93czo8L0I+CisgICAgICAgIDxERD48Q09ERT48QSBIUkVGPSIuLi8uLi9qYXZhL2xhbmcvSW5kZXhPdXRPZkJvdW5kc0V4Y2VwdGlvbi5odG1sIiB0aXRsZT0iY2xhc3MgaW4gamF2YS5sYW5nIj5JbmRleE91dE9mQm91bmRzRXhjZXB0aW9uPC9BPjwvQ09ERT4gLSBpZiA8Y29kZT5vZmZzZXQ8L2NvZGU+IGlzCisgICAgICAgICAgICBuZWdhdGl2ZSwgb3IgPGNvZGU+Y291bnQ8L2NvZGU+IGlzIG5lZ2F0aXZlLCBvcgorICAgICAgICAgICAgPGNvZGU+b2Zmc2V0K2NvdW50PC9jb2RlPiBpcyBsYXJnZXIgdGhhbgorICAgICAgICAgICAgPGNvZGU+ZGF0YS5sZW5ndGg8L2NvZGU+LjwvREw+CisgICAgPC9ERD4KKzwvREw+Cis8SFI+CisKKzxBIE5BTUU9ImNvcHlWYWx1ZU9mKGNoYXJbXSwgaW50LCBpbnQpIj48IS0tIC0tPjwvQT48SDM+CisgICAgY29weVZhbHVlT2Y8L0gzPgorPFBSRT4KK3B1YmxpYyBzdGF0aWMgPEEgSFJFRj0iLi4vLi4vamF2YS9sYW5nL1N0cmluZy5odG1sIiB0aXRsZT0iY2xhc3MgaW4gamF2YS5sYW5nIj5TdHJpbmc8L0E+IDxCPmNvcHlWYWx1ZU9mPC9CPihjaGFyW10mbmJzcDtkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50Jm5ic3A7b2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50Jm5ic3A7Y291bnQpPC9QUkU+Cis8REw+CisgICAgPEREPlJldHVybnMgYSBTdHJpbmcgdGhhdCByZXByZXNlbnRzIHRoZSBjaGFyYWN0ZXIgc2VxdWVuY2UgaW4gdGhlCisgICAgICAgIGFycmF5IHNwZWNpZmllZC4KKyAgICAgICAgPFA+CisgICAgPEREPjxETD4KKyAgICA8L0RMPgorICAgIDwvREQ+CisgICAgPEREPjxETD4KKyAgICAgICAgPERUPjxCPlBhcmFtZXRlcnM6PC9CPjxERD48Q09ERT5kYXRhPC9DT0RFPiAtIHRoZSBjaGFyYWN0ZXIgYXJyYXkuPEREPjxDT0RFPm9mZnNldDwvQ09ERT4gLSBpbml0aWFsIG9mZnNldCBvZiB0aGUgc3ViYXJyYXkuPEREPjxDT0RFPmNvdW50PC9DT0RFPiAtIGxlbmd0aCBvZiB0aGUgc3ViYXJyYXkuCisgICAgICAgIDxEVD48Qj5SZXR1cm5zOjwvQj48REQ+YSA8Y29kZT5TdHJpbmc8L2NvZGU+IHRoYXQgY29udGFpbnMgdGhlIGNoYXJhY3RlcnMgb2YgdGhlCisgICAgICAgIHNwZWNpZmllZCBzdWJhcnJheSBvZiB0aGUgY2hhcmFjdGVyIGFycmF5LjwvREw+CisgICAgPC9ERD4KKzwvREw+Cis8SFI+CisKKzxBIE5BTUU9ImNvcHlWYWx1ZU9mKGNoYXJbXSkiPjwhLS0gLS0+PC9BPjxIMz4KKyAgICBjb3B5VmFsdWVPZjwvSDM+Cis8UFJFPgorcHVibGljIHN0YXRpYyA8QSBIUkVGPSIuLi8uLi9qYXZhL2xhbmcvU3RyaW5nLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBqYXZhLmxhbmciPlN0cmluZzwvQT4gPEI+Y29weVZhbHVlT2Y8L0I+KGNoYXJbXSZuYnNwO2RhdGEpPC9QUkU+Cis8REw+CisgICAgPEREPlJldHVybnMgYSBTdHJpbmcgdGhhdCByZXByZXNlbnRzIHRoZSBjaGFyYWN0ZXIgc2VxdWVuY2UgaW4gdGhlCisgICAgICAgIGFycmF5IHNwZWNpZmllZC4KKyAgICAgICAgPFA+CisgICAgPEREPjxETD4KKyAgICA8L0RMPgorICAgIDwvREQ+CisgICAgPEREPjxETD4KKyAgICAgICAgPERUPjxCPlBhcmFtZXRlcnM6PC9CPjxERD48Q09ERT5kYXRhPC9DT0RFPiAtIHRoZSBjaGFyYWN0ZXIgYXJyYXkuCisgICAgICAgIDxEVD48Qj5SZXR1cm5zOjwvQj48REQ+YSA8Y29kZT5TdHJpbmc8L2NvZGU+IHRoYXQgY29udGFpbnMgdGhlIGNoYXJhY3RlcnMgb2YgdGhlCisgICAgICAgIGNoYXJhY3RlciBhcnJheS48L0RMPgorICAgIDwvREQ+Cis8L0RMPgorPEhSPgorCis8QSBOQU1FPSJ2YWx1ZU9mKGJvb2xlYW4pIj48IS0tIC0tPjwvQT48SDM+CisgICAgdmFsdWVPZjwvSDM+Cis8UFJFPgorcHVibGljIHN0YXRpYyA8QSBIUkVGPSIuLi8uLi9qYXZhL2xhbmcvU3RyaW5nLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBqYXZhLmxhbmciPlN0cmluZzwvQT4gPEI+dmFsdWVPZjwvQj4oYm9vbGVhbiZuYnNwO2IpPC9QUkU+Cis8REw+CisgICAgPEREPlJldHVybnMgdGhlIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGUgPGNvZGU+Ym9vbGVhbjwvY29kZT4gYXJndW1lbnQuCisgICAgICAgIDxQPgorICAgIDxERD48REw+CisgICAgPC9ETD4KKyAgICA8L0REPgorICAgIDxERD48REw+CisgICAgICAgIDxEVD48Qj5QYXJhbWV0ZXJzOjwvQj48REQ+PENPREU+YjwvQ09ERT4gLSBhIDxjb2RlPmJvb2xlYW48L2NvZGU+LgorICAgICAgICA8RFQ+PEI+UmV0dXJuczo8L0I+PEREPmlmIHRoZSBhcmd1bWVudCBpcyA8Y29kZT50cnVlPC9jb2RlPiwgYSBzdHJpbmcgZXF1YWwgdG8KKyAgICAgICAgPGNvZGU+InRydWUiPC9jb2RlPiBpcyByZXR1cm5lZDsgb3RoZXJ3aXNlLCBhIHN0cmluZyBlcXVhbCB0bworICAgICAgICA8Y29kZT4iZmFsc2UiPC9jb2RlPiBpcyByZXR1cm5lZC48L0RMPgorICAgIDwvREQ+Cis8L0RMPgorPEhSPgorCis8QSBOQU1FPSJ2YWx1ZU9mKGNoYXIpIj48IS0tIC0tPjwvQT48SDM+CisgICAgdmFsdWVPZjwvSDM+Cis8UFJFPgorcHVibGljIHN0YXRpYyA8QSBIUkVGPSIuLi8uLi9qYXZhL2xhbmcvU3RyaW5nLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBqYXZhLmxhbmciPlN0cmluZzwvQT4gPEI+dmFsdWVPZjwvQj4oY2hhciZuYnNwO2MpPC9QUkU+Cis8REw+CisgICAgPEREPlJldHVybnMgdGhlIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGUgPGNvZGU+Y2hhcjwvY29kZT4KKyAgICAgICAgYXJndW1lbnQuCisgICAgICAgIDxQPgorICAgIDxERD48REw+CisgICAgPC9ETD4KKyAgICA8L0REPgorICAgIDxERD48REw+CisgICAgICAgIDxEVD48Qj5QYXJhbWV0ZXJzOjwvQj48REQ+PENPREU+YzwvQ09ERT4gLSBhIDxjb2RlPmNoYXI8L2NvZGU+LgorICAgICAgICA8RFQ+PEI+UmV0dXJuczo8L0I+PEREPmEgc3RyaW5nIG9mIGxlbmd0aCA8Y29kZT4xPC9jb2RlPiBjb250YWluaW5nCisgICAgICAgIGFzIGl0cyBzaW5nbGUgY2hhcmFjdGVyIHRoZSBhcmd1bWVudCA8Y29kZT5jPC9jb2RlPi48L0RMPgorICAgIDwvREQ+Cis8L0RMPgorPEhSPgorCis8QSBOQU1FPSJ2YWx1ZU9mKGludCkiPjwhLS0gLS0+PC9BPjxIMz4KKyAgICB2YWx1ZU9mPC9IMz4KKzxQUkU+CitwdWJsaWMgc3RhdGljIDxBIEhSRUY9Ii4uLy4uL2phdmEvbGFuZy9TdHJpbmcuaHRtbCIgdGl0bGU9ImNsYXNzIGluIGphdmEubGFuZyI+U3RyaW5nPC9BPiA8Qj52YWx1ZU9mPC9CPihpbnQmbmJzcDtpKTwvUFJFPgorPERMPgorICAgIDxERD5SZXR1cm5zIHRoZSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhlIDxjb2RlPmludDwvY29kZT4gYXJndW1lbnQuCisgICAgICAgIDxwPgorICAgICAgICAgICAgVGhlIHJlcHJlc2VudGF0aW9uIGlzIGV4YWN0bHkgdGhlIG9uZSByZXR1cm5lZCBieSB0aGUKKyAgICAgICAgICAgIDxjb2RlPkludGVnZXIudG9TdHJpbmc8L2NvZGU+IG1ldGhvZCBvZiBvbmUgYXJndW1lbnQuCisgICAgICAgIDxQPgorICAgIDxERD48REw+CisgICAgPC9ETD4KKyAgICA8L0REPgorICAgIDxERD48REw+CisgICAgICAgIDxEVD48Qj5QYXJhbWV0ZXJzOjwvQj48REQ+PENPREU+aTwvQ09ERT4gLSBhbiA8Y29kZT5pbnQ8L2NvZGU+LgorICAgICAgICA8RFQ+PEI+UmV0dXJuczo8L0I+PEREPmEgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSA8Y29kZT5pbnQ8L2NvZGU+IGFyZ3VtZW50LjxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uL2phdmEvbGFuZy9JbnRlZ2VyLmh0bWwjdG9TdHJpbmcoaW50LCBpbnQpIj48Q09ERT5JbnRlZ2VyLnRvU3RyaW5nKGludCwgaW50KTwvQ09ERT48L0E+PC9ETD4KKyAgICA8L0REPgorPC9ETD4KKzxIUj4KKworPEEgTkFNRT0idmFsdWVPZihsb25nKSI+PCEtLSAtLT48L0E+PEgzPgorICAgIHZhbHVlT2Y8L0gzPgorPFBSRT4KK3B1YmxpYyBzdGF0aWMgPEEgSFJFRj0iLi4vLi4vamF2YS9sYW5nL1N0cmluZy5odG1sIiB0aXRsZT0iY2xhc3MgaW4gamF2YS5sYW5nIj5TdHJpbmc8L0E+IDxCPnZhbHVlT2Y8L0I+KGxvbmcmbmJzcDtsKTwvUFJFPgorPERMPgorICAgIDxERD5SZXR1cm5zIHRoZSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhlIDxjb2RlPmxvbmc8L2NvZGU+IGFyZ3VtZW50LgorICAgICAgICA8cD4KKyAgICAgICAgICAgIFRoZSByZXByZXNlbnRhdGlvbiBpcyBleGFjdGx5IHRoZSBvbmUgcmV0dXJuZWQgYnkgdGhlCisgICAgICAgICAgICA8Y29kZT5Mb25nLnRvU3RyaW5nPC9jb2RlPiBtZXRob2Qgb2Ygb25lIGFyZ3VtZW50LgorICAgICAgICA8UD4KKyAgICA8REQ+PERMPgorICAgIDwvREw+CisgICAgPC9ERD4KKyAgICA8REQ+PERMPgorICAgICAgICA8RFQ+PEI+UGFyYW1ldGVyczo8L0I+PEREPjxDT0RFPmw8L0NPREU+IC0gYSA8Y29kZT5sb25nPC9jb2RlPi4KKyAgICAgICAgPERUPjxCPlJldHVybnM6PC9CPjxERD5hIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGUgPGNvZGU+bG9uZzwvY29kZT4gYXJndW1lbnQuPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vamF2YS9sYW5nL0xvbmcuaHRtbCN0b1N0cmluZyhsb25nKSI+PENPREU+TG9uZy50b1N0cmluZyhsb25nKTwvQ09ERT48L0E+PC9ETD4KKyAgICA8L0REPgorPC9ETD4KKzxIUj4KKworPEEgTkFNRT0idmFsdWVPZihmbG9hdCkiPjwhLS0gLS0+PC9BPjxIMz4KKyAgICB2YWx1ZU9mPC9IMz4KKzxQUkU+CitwdWJsaWMgc3RhdGljIDxBIEhSRUY9Ii4uLy4uL2phdmEvbGFuZy9TdHJpbmcuaHRtbCIgdGl0bGU9ImNsYXNzIGluIGphdmEubGFuZyI+U3RyaW5nPC9BPiA8Qj52YWx1ZU9mPC9CPihmbG9hdCZuYnNwO2YpPC9QUkU+Cis8REw+CisgICAgPEREPlJldHVybnMgdGhlIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGUgPGNvZGU+ZmxvYXQ8L2NvZGU+IGFyZ3VtZW50LgorICAgICAgICA8cD4KKyAgICAgICAgICAgIFRoZSByZXByZXNlbnRhdGlvbiBpcyBleGFjdGx5IHRoZSBvbmUgcmV0dXJuZWQgYnkgdGhlCisgICAgICAgICAgICA8Y29kZT5GbG9hdC50b1N0cmluZzwvY29kZT4gbWV0aG9kIG9mIG9uZSBhcmd1bWVudC4KKyAgICAgICAgPFA+CisgICAgPEREPjxETD4KKyAgICA8L0RMPgorICAgIDwvREQ+CisgICAgPEREPjxETD4KKyAgICAgICAgPERUPjxCPlBhcmFtZXRlcnM6PC9CPjxERD48Q09ERT5mPC9DT0RFPiAtIGEgPGNvZGU+ZmxvYXQ8L2NvZGU+LgorICAgICAgICA8RFQ+PEI+UmV0dXJuczo8L0I+PEREPmEgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSA8Y29kZT5mbG9hdDwvY29kZT4gYXJndW1lbnQuPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vamF2YS9sYW5nL0Zsb2F0Lmh0bWwjdG9TdHJpbmcoZmxvYXQpIj48Q09ERT5GbG9hdC50b1N0cmluZyhmbG9hdCk8L0NPREU+PC9BPjwvREw+CisgICAgPC9ERD4KKzwvREw+Cis8SFI+CisKKzxBIE5BTUU9InZhbHVlT2YoZG91YmxlKSI+PCEtLSAtLT48L0E+PEgzPgorICAgIHZhbHVlT2Y8L0gzPgorPFBSRT4KK3B1YmxpYyBzdGF0aWMgPEEgSFJFRj0iLi4vLi4vamF2YS9sYW5nL1N0cmluZy5odG1sIiB0aXRsZT0iY2xhc3MgaW4gamF2YS5sYW5nIj5TdHJpbmc8L0E+IDxCPnZhbHVlT2Y8L0I+KGRvdWJsZSZuYnNwO2QpPC9QUkU+Cis8REw+CisgICAgPEREPlJldHVybnMgdGhlIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGUgPGNvZGU+ZG91YmxlPC9jb2RlPiBhcmd1bWVudC4KKyAgICAgICAgPHA+CisgICAgICAgICAgICBUaGUgcmVwcmVzZW50YXRpb24gaXMgZXhhY3RseSB0aGUgb25lIHJldHVybmVkIGJ5IHRoZQorICAgICAgICAgICAgPGNvZGU+RG91YmxlLnRvU3RyaW5nPC9jb2RlPiBtZXRob2Qgb2Ygb25lIGFyZ3VtZW50LgorICAgICAgICA8UD4KKyAgICA8REQ+PERMPgorICAgIDwvREw+CisgICAgPC9ERD4KKyAgICA8REQ+PERMPgorICAgICAgICA8RFQ+PEI+UGFyYW1ldGVyczo8L0I+PEREPjxDT0RFPmQ8L0NPREU+IC0gYSA8Y29kZT5kb3VibGU8L2NvZGU+LgorICAgICAgICA8RFQ+PEI+UmV0dXJuczo8L0I+PEREPmEgIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGUgPGNvZGU+ZG91YmxlPC9jb2RlPiBhcmd1bWVudC48RFQ+PEI+U2VlIEFsc286PC9CPjxERD48QSBIUkVGPSIuLi8uLi9qYXZhL2xhbmcvRG91YmxlLmh0bWwjdG9TdHJpbmcoZG91YmxlKSI+PENPREU+RG91YmxlLnRvU3RyaW5nKGRvdWJsZSk8L0NPREU+PC9BPjwvREw+CisgICAgPC9ERD4KKzwvREw+Cis8SFI+CisKKzxBIE5BTUU9ImludGVybigpIj48IS0tIC0tPjwvQT48SDM+CisgICAgaW50ZXJuPC9IMz4KKzxQUkU+CitwdWJsaWMgPEEgSFJFRj0iLi4vLi4vamF2YS9sYW5nL1N0cmluZy5odG1sIiB0aXRsZT0iY2xhc3MgaW4gamF2YS5sYW5nIj5TdHJpbmc8L0E+IDxCPmludGVybjwvQj4oKTwvUFJFPgorPERMPgorICAgIDxERD5SZXR1cm5zIGEgY2Fub25pY2FsIHJlcHJlc2VudGF0aW9uIGZvciB0aGUgc3RyaW5nIG9iamVjdC4KKyAgICAgICAgPHA+CisgICAgICAgICAgICBBIHBvb2wgb2Ygc3RyaW5ncywgaW5pdGlhbGx5IGVtcHR5LCBpcyBtYWludGFpbmVkIHByaXZhdGVseSBieSB0aGUKKyAgICAgICAgICAgIGNsYXNzIDxjb2RlPlN0cmluZzwvY29kZT4uCisgICAgICAgIDxwPgorICAgICAgICAgICAgV2hlbiB0aGUgaW50ZXJuIG1ldGhvZCBpcyBpbnZva2VkLCBpZiB0aGUgcG9vbCBhbHJlYWR5IGNvbnRhaW5zIGEKKyAgICAgICAgICAgIHN0cmluZyBlcXVhbCB0byB0aGlzIDxjb2RlPlN0cmluZzwvY29kZT4gb2JqZWN0IGFzIGRldGVybWluZWQgYnkKKyAgICAgICAgICAgIHRoZSA8QSBIUkVGPSIuLi8uLi9qYXZhL2xhbmcvU3RyaW5nLmh0bWwjZXF1YWxzKGphdmEubGFuZy5PYmplY3QpIj48Q09ERT5lcXVhbHMoT2JqZWN0KTwvQ09ERT48L0E+IG1ldGhvZCwgdGhlbiB0aGUgc3RyaW5nIGZyb20gdGhlIHBvb2wgaXMKKyAgICAgICAgICAgIHJldHVybmVkLiBPdGhlcndpc2UsIHRoaXMgPGNvZGU+U3RyaW5nPC9jb2RlPiBvYmplY3QgaXMgYWRkZWQgdG8gdGhlCisgICAgICAgICAgICBwb29sIGFuZCBhIHJlZmVyZW5jZSB0byB0aGlzIDxjb2RlPlN0cmluZzwvY29kZT4gb2JqZWN0IGlzIHJldHVybmVkLgorICAgICAgICA8cD4KKyAgICAgICAgICAgIEl0IGZvbGxvd3MgdGhhdCBmb3IgYW55IHR3byBzdHJpbmdzIDxjb2RlPnM8L2NvZGU+IGFuZCA8Y29kZT50PC9jb2RlPiwKKyAgICAgICAgICAgIDxjb2RlPnMuaW50ZXJuKCkmbmJzcDs9PSZuYnNwO3QuaW50ZXJuKCk8L2NvZGU+IGlzIDxjb2RlPnRydWU8L2NvZGU+CisgICAgICAgICAgICBpZiBhbmQgb25seSBpZiA8Y29kZT5zLmVxdWFscyh0KTwvY29kZT4gaXMgPGNvZGU+dHJ1ZTwvY29kZT4uCisgICAgICAgIDxwPgorICAgICAgICAgICAgQWxsIGxpdGVyYWwgc3RyaW5ncyBhbmQgc3RyaW5nLXZhbHVlZCBjb25zdGFudCBleHByZXNzaW9ucyBhcmUKKyAgICAgICAgICAgIGludGVybmVkLiBTdHJpbmcgbGl0ZXJhbHMgYXJlIGRlZmluZWQgaW4gJnNlY3Q7My4xMC41IG9mIHRoZQorICAgICAgICAgICAgPGEgaHJlZj0iaHR0cDovL2phdmEuc3VuLmNvbS9kb2NzL2Jvb2tzL2pscy9odG1sLyI+SmF2YSBMYW5ndWFnZQorICAgICAgICAgICAgICAgIFNwZWNpZmljYXRpb248L2E+CisgICAgICAgIDxQPgorICAgIDxERD48REw+CisgICAgPC9ETD4KKyAgICA8L0REPgorICAgIDxERD48REw+CisKKyAgICAgICAgPERUPjxCPlJldHVybnM6PC9CPjxERD5hIHN0cmluZyB0aGF0IGhhcyB0aGUgc2FtZSBjb250ZW50cyBhcyB0aGlzIHN0cmluZywgYnV0IGlzCisgICAgICAgIGd1YXJhbnRlZWQgdG8gYmUgZnJvbSBhIHBvb2wgb2YgdW5pcXVlIHN0cmluZ3MuPC9ETD4KKyAgICA8L0REPgorPC9ETD4KKzwhLS0gPT09PT09PT09IEVORCBPRiBDTEFTUyBEQVRBID09PT09PT09PSAtLT4KKzxIUj4KKworCis8IS0tID09PT09PT0gU1RBUlQgT0YgQk9UVE9NIE5BVkJBUiA9PT09PT0gLS0+Cis8QSBOQU1FPSJuYXZiYXJfYm90dG9tIj48IS0tIC0tPjwvQT4KKzxBIEhSRUY9IiNza2lwLW5hdmJhcl9ib3R0b20iIHRpdGxlPSJTa2lwIG5hdmlnYXRpb24gbGlua3MiPjwvQT4KKzxUQUJMRSBCT1JERVI9IjAiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMSIgQ0VMTFNQQUNJTkc9IjAiIFNVTU1BUlk9IiI+CisgICAgPFRSPgorICAgICAgICA8VEQgQ09MU1BBTj0yIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+CisgICAgICAgICAgICA8QSBOQU1FPSJuYXZiYXJfYm90dG9tX2ZpcnN0cm93Ij48IS0tIC0tPjwvQT4KKyAgICAgICAgICAgIDxUQUJMRSBCT1JERVI9IjAiIENFTExQQURESU5HPSIwIiBDRUxMU1BBQ0lORz0iMyIgU1VNTUFSWT0iIj4KKyAgICAgICAgICAgICAgICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgorICAgICAgICAgICAgICAgICAgICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPk92ZXJ2aWV3PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KKyAgICAgICAgICAgICAgICAgICAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9InBhY2thZ2Utc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlBhY2thZ2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgorICAgICAgICAgICAgICAgICAgICA8VEQgQkdDT0xPUj0iI0ZGRkZGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxUmV2Ij4gJm5ic3A7PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5DbGFzczwvQj48L0ZPTlQ+Jm5ic3A7PC9URD4KKyAgICAgICAgICAgICAgICAgICAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9ImNsYXNzLXVzZS9TdHJpbmcuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5Vc2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgorICAgICAgICAgICAgICAgICAgICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0icGFja2FnZS10cmVlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VHJlZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+CisgICAgICAgICAgICAgICAgICAgIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi9kZXByZWNhdGVkLWxpc3QuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5EZXByZWNhdGVkPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KKyAgICAgICAgICAgICAgICAgICAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uL2luZGV4LWZpbGVzL2luZGV4LTEuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+CisgICAgICAgICAgICAgICAgICAgIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi9oZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgorICAgICAgICAgICAgICAgIDwvVFI+CisgICAgICAgICAgICA8L1RBQkxFPgorICAgICAgICA8L1REPgorICAgICAgICA8VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4KKyAgICAgICAgICAgIDxiPkphdmEmI3gyMTIyOyZuYnNwO1BsYXRmb3JtPGJyPlN0YW5kYXJkJm5ic3A7RWQuJm5ic3A7NjwvYj48L0VNPgorICAgICAgICA8L1REPgorICAgIDwvVFI+CisKKyAgICA8VFI+CisgICAgICAgIDxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+CisgICAgICAgICAgICAmbmJzcDs8QSBIUkVGPSIuLi8uLi9qYXZhL2xhbmcvU3RyaWN0TWF0aC5odG1sIiB0aXRsZT0iY2xhc3MgaW4gamF2YS5sYW5nIj48Qj5QUkVWIENMQVNTPC9CPjwvQT4mbmJzcDsKKyAgICAgICAgICAgICZuYnNwOzxBIEhSRUY9Ii4uLy4uL2phdmEvbGFuZy9TdHJpbmdCdWZmZXIuaHRtbCIgdGl0bGU9ImNsYXNzIGluIGphdmEubGFuZyI+PEI+TkVYVCBDTEFTUzwvQj48L0E+PC9GT05UPjwvVEQ+CisgICAgICAgIDxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+CisgICAgICAgICAgICA8QSBIUkVGPSIuLi8uLi9pbmRleC5odG1sP2phdmEvbGFuZy9TdHJpbmcuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5GUkFNRVM8L0I+PC9BPiAgJm5ic3A7CisgICAgICAgICAgICAmbmJzcDs8QSBIUkVGPSJTdHJpbmcuaHRtbCIgdGFyZ2V0PSJfdG9wIj48Qj5OTyBGUkFNRVM8L0I+PC9BPiAgJm5ic3A7CisgICAgICAgICAgICAmbmJzcDs8U0NSSVBUIHR5cGU9InRleHQvamF2YXNjcmlwdCI+CisgICAgICAgICAgICA8IS0tCisgICAgICAgICAgICBpZih3aW5kb3c9PXRvcCkgeworICAgICAgICAgICAgICAgIGRvY3VtZW50LndyaXRlbG4oJzxBIEhSRUY9Ii4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+Jyk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAvLy0tPgorICAgICAgICA8L1NDUklQVD4KKyAgICAgICAgICAgIDxOT1NDUklQVD4KKyAgICAgICAgICAgICAgICA8QSBIUkVGPSIuLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPgorICAgICAgICAgICAgPC9OT1NDUklQVD4KKworCisgICAgICAgIDwvRk9OVD48L1REPgorICAgIDwvVFI+CisgICAgPFRSPgorICAgICAgICA8VEQgVkFMSUdOPSJ0b3AiIENMQVNTPSJOYXZCYXJDZWxsMyI+PEZPTlQgU0laRT0iLTIiPgorICAgICAgICAgICAgU1VNTUFSWTombmJzcDtORVNURUQmbmJzcDt8Jm5ic3A7PEEgSFJFRj0iI2ZpZWxkX3N1bW1hcnkiPkZJRUxEPC9BPiZuYnNwO3wmbmJzcDs8QSBIUkVGPSIjY29uc3RydWN0b3Jfc3VtbWFyeSI+Q09OU1RSPC9BPiZuYnNwO3wmbmJzcDs8QSBIUkVGPSIjbWV0aG9kX3N1bW1hcnkiPk1FVEhPRDwvQT48L0ZPTlQ+PC9URD4KKyAgICAgICAgPFREIFZBTElHTj0idG9wIiBDTEFTUz0iTmF2QmFyQ2VsbDMiPjxGT05UIFNJWkU9Ii0yIj4KKyAgICAgICAgICAgIERFVEFJTDombmJzcDs8QSBIUkVGPSIjZmllbGRfZGV0YWlsIj5GSUVMRDwvQT4mbmJzcDt8Jm5ic3A7PEEgSFJFRj0iI2NvbnN0cnVjdG9yX2RldGFpbCI+Q09OU1RSPC9BPiZuYnNwO3wmbmJzcDs8QSBIUkVGPSIjbWV0aG9kX2RldGFpbCI+TUVUSE9EPC9BPjwvRk9OVD48L1REPgorICAgIDwvVFI+Cis8L1RBQkxFPgorPEEgTkFNRT0ic2tpcC1uYXZiYXJfYm90dG9tIj48L0E+Cis8IS0tID09PT09PT09IEVORCBPRiBCT1RUT00gTkFWQkFSID09PT09PT0gLS0+CisKKzxIUj4KKzxmb250IHNpemU9Ii0xIj4gPGEgaHJlZj0iaHR0cDovL2J1Z3Muc3VuLmNvbS9zZXJ2aWNlcy9idWdyZXBvcnQvaW5kZXguanNwIj5TdWJtaXQgYSBidWcgb3IgZmVhdHVyZTwvYT48YnI+Rm9yIGZ1cnRoZXIgQVBJIHJlZmVyZW5jZSBhbmQgZGV2ZWxvcGVyIGRvY3VtZW50YXRpb24sIHNlZSA8YSBocmVmPSJodHRwOi8vamF2YS5zdW4uY29tL2phdmFzZS82L3dlYm5vdGVzL2RldmRvY3MtdnMtc3BlY3MuaHRtbCI+SmF2YSBTRSBEZXZlbG9wZXIgRG9jdW1lbnRhdGlvbjwvYT4uIFRoYXQgZG9jdW1lbnRhdGlvbiBjb250YWlucyBtb3JlIGRldGFpbGVkLCBkZXZlbG9wZXItdGFyZ2V0ZWQgZGVzY3JpcHRpb25zLCB3aXRoIGNvbmNlcHR1YWwgb3ZlcnZpZXdzLCBkZWZpbml0aW9ucyBvZiB0ZXJtcywgd29ya2Fyb3VuZHMsIGFuZCB3b3JraW5nIGNvZGUgZXhhbXBsZXMuPHA+IDxhIGhyZWY9Ii4uLy4uLy4uL2xlZ2FsL2NweXIuaHRtbCI+Q29weXJpZ2h0PC9hPiAmI3gwMGE5OyAxOTkzLCAyMDExLCBPcmFjbGUgYW5kL29yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gPC9mb250PgorPCEtLSBTdGFydCBTaXRlQ2F0YWx5c3QgY29kZSAgIC0tPgorPHNjcmlwdCBsYW5ndWFnZT0iSmF2YVNjcmlwdCIgc3JjPSJodHRwOi8vd3d3Lm9yYWNsZS5jb20vb2NvbS9ncm91cHMvc3lzdGVtb2JqZWN0L0Bta3RnX2FkbWluL2RvY3VtZW50cy9zeXN0ZW1vYmplY3Qvc19jb2RlX2Rvd25sb2FkLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgbGFuZ3VhZ2U9IkphdmFTY3JpcHQiIHNyYz0iaHR0cDovL3d3dy5vcmFjbGUuY29tL29jb20vZ3JvdXBzL3N5c3RlbW9iamVjdC9AbWt0Z19hZG1pbi9kb2N1bWVudHMvc3lzdGVtb2JqZWN0L3NfY29kZS5qcyI+PC9zY3JpcHQ+CisKKzwhLS0gKioqKioqKioqKiBETyBOT1QgQUxURVIgQU5ZVEhJTkcgQkVMT1cgVEhJUyBMSU5FICEgKioqKioqKioqKiogLS0+Cis8IS0tICBCZWxvdyBjb2RlIHdpbGwgc2VuZCB0aGUgaW5mbyB0byBPbW5pdHVyZSBzZXJ2ZXIgLS0+Cis8c2NyaXB0IGxhbmd1YWdlPSJqYXZhc2NyaXB0Ij52YXIgc19jb2RlPXMudCgpO2lmKHNfY29kZSlkb2N1bWVudC53cml0ZShzX2NvZGUpPC9zY3JpcHQ+CisKKzwhLS0gRW5kIFNpdGVDYXRhbHlzdCBjb2RlIC0tPgorPG5vc2NyaXB0PgorICAgIDxwPlNjcmlwdGluZyBvbiB0aGlzIHBhZ2UgdHJhY2tzIHdlYiBwYWdlIHRyYWZmaWMsIGJ1dCBkb2VzIG5vdCBjaGFuZ2UgdGhlIGNvbnRlbnQgaW4gYW55IHdheS48L3A+Cis8L25vc2NyaXB0PgorPC9CT0RZPgorPC9IVE1MPgpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2V4dGVybmFsSmF2YWRvYy9TdHJpbmcvNy9leHBlY3RlZC5odG1sIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2V4dGVybmFsSmF2YWRvYy9TdHJpbmcvNy9leHBlY3RlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNkMmNlZWYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZXh0ZXJuYWxKYXZhZG9jL1N0cmluZy83L2V4cGVjdGVkLmh0bWwKQEAgLTAsMCArMSwxMDUgQEAKKzxIVE1MPjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+ICB1bC5pbmhlcml0YW5jZSB7CisgICAgICBtYXJnaW46MDsKKyAgICAgIHBhZGRpbmc6MDsKKyAgfQorICB1bC5pbmhlcml0YW5jZSBsaSB7CisgICAgICAgZGlzcGxheTppbmxpbmU7CisgICAgICAgbGlzdC1zdHlsZTpub25lOworICB9CisgIHVsLmluaGVyaXRhbmNlIGxpIHVsLmluaGVyaXRhbmNlIHsKKyAgICBtYXJnaW4tbGVmdDoxNXB4OworICAgIHBhZGRpbmctbGVmdDoxNXB4OworICAgIHBhZGRpbmctdG9wOjFweDsKKyAgfQorPC9zdHlsZT48IS0tID09PT09PT09IFNUQVJUIE9GIENMQVNTIERBVEEgPT09PT09PT0gLS0+Cis8ZGl2IGNsYXNzPSJoZWFkZXIiPgorICAgIDxkaXYgY2xhc3M9InN1YlRpdGxlIj5qYXZhLmxhbmc8L2Rpdj4KKyAgICA8aDIgdGl0bGU9IkNsYXNzIFN0cmluZyIgY2xhc3M9InRpdGxlIj5DbGFzcyBTdHJpbmc8L2gyPgorPC9kaXY+Cis8ZGl2IGNsYXNzPSJjb250ZW50Q29udGFpbmVyIj4KKzx1bCBjbGFzcz0iaW5oZXJpdGFuY2UiPgorICAgIDxsaT48YSBocmVmPSIuLi8uLi9qYXZhL2xhbmcvT2JqZWN0Lmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBqYXZhLmxhbmciPmphdmEubGFuZy5PYmplY3Q8L2E+PC9saT4KKyAgICA8bGk+CisgICAgICAgIDx1bCBjbGFzcz0iaW5oZXJpdGFuY2UiPgorICAgICAgICAgICAgPGxpPmphdmEubGFuZy5TdHJpbmc8L2xpPgorICAgICAgICA8L3VsPgorICAgIDwvbGk+Cis8L3VsPgorPERMPiAgICA8dWwgY2xhc3M9ImJsb2NrTGlzdCI+CisgICAgICAgIDxsaSBjbGFzcz0iYmxvY2tMaXN0Ij4KKyAgICAgICAgICAgIDxkbD4KKyAgICAgICAgICAgICAgICA8ZHQ+QWxsIEltcGxlbWVudGVkIEludGVyZmFjZXM6PC9kdD4KKyAgICAgICAgICAgICAgICA8ZGQ+PGEgaHJlZj0iLi4vLi4vamF2YS9pby9TZXJpYWxpemFibGUuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBqYXZhLmlvIj5TZXJpYWxpemFibGU8L2E+LCA8YSBocmVmPSIuLi8uLi9qYXZhL2xhbmcvQ2hhclNlcXVlbmNlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gamF2YS5sYW5nIj5DaGFyU2VxdWVuY2U8L2E+LCA8YSBocmVmPSIuLi8uLi9qYXZhL2xhbmcvQ29tcGFyYWJsZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIGphdmEubGFuZyI+Q29tcGFyYWJsZTwvYT4mbHQ7PGEgaHJlZj0iLi4vLi4vamF2YS9sYW5nL1N0cmluZy5odG1sIiB0aXRsZT0iY2xhc3MgaW4gamF2YS5sYW5nIj5TdHJpbmc8L2E+Jmd0OzwvZGQ+CisgICAgICAgICAgICA8L2RsPgorICAgICAgICAgICAgPGhyPgorICAgICAgICAgICAgPGJyPgorPHByZT5wdWJsaWMgZmluYWwgY2xhc3MgPHNwYW4gY2xhc3M9InN0cm9uZyI+U3RyaW5nPC9zcGFuPgorZXh0ZW5kcyA8YSBocmVmPSIuLi8uLi9qYXZhL2xhbmcvT2JqZWN0Lmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBqYXZhLmxhbmciPk9iamVjdDwvYT4KK2ltcGxlbWVudHMgPGEgaHJlZj0iLi4vLi4vamF2YS9pby9TZXJpYWxpemFibGUuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBqYXZhLmlvIj5TZXJpYWxpemFibGU8L2E+LCA8YSBocmVmPSIuLi8uLi9qYXZhL2xhbmcvQ29tcGFyYWJsZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIGphdmEubGFuZyI+Q29tcGFyYWJsZTwvYT4mbHQ7PGEgaHJlZj0iLi4vLi4vamF2YS9sYW5nL1N0cmluZy5odG1sIiB0aXRsZT0iY2xhc3MgaW4gamF2YS5sYW5nIj5TdHJpbmc8L2E+Jmd0OywgPGEgaHJlZj0iLi4vLi4vamF2YS9sYW5nL0NoYXJTZXF1ZW5jZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIGphdmEubGFuZyI+Q2hhclNlcXVlbmNlPC9hPjwvcHJlPgorICAgICAgICAgICAgPGRpdiBjbGFzcz0iYmxvY2siPlRoZSA8Y29kZT5TdHJpbmc8L2NvZGU+IGNsYXNzIHJlcHJlc2VudHMgY2hhcmFjdGVyIHN0cmluZ3MuIEFsbAorICAgICAgICAgICAgICAgIHN0cmluZyBsaXRlcmFscyBpbiBKYXZhIHByb2dyYW1zLCBzdWNoIGFzIDxjb2RlPiJhYmMiPC9jb2RlPiwgYXJlCisgICAgICAgICAgICAgICAgaW1wbGVtZW50ZWQgYXMgaW5zdGFuY2VzIG9mIHRoaXMgY2xhc3MuCisgICAgICAgICAgICAgICAgPHA+CisgICAgICAgICAgICAgICAgICAgIFN0cmluZ3MgYXJlIGNvbnN0YW50OyB0aGVpciB2YWx1ZXMgY2Fubm90IGJlIGNoYW5nZWQgYWZ0ZXIgdGhleQorICAgICAgICAgICAgICAgICAgICBhcmUgY3JlYXRlZC4gU3RyaW5nIGJ1ZmZlcnMgc3VwcG9ydCBtdXRhYmxlIHN0cmluZ3MuCisgICAgICAgICAgICAgICAgICAgIEJlY2F1c2UgU3RyaW5nIG9iamVjdHMgYXJlIGltbXV0YWJsZSB0aGV5IGNhbiBiZSBzaGFyZWQuIEZvciBleGFtcGxlOgorICAgICAgICAgICAgICAgIDxwPjxibG9ja3F1b3RlPjxwcmU+CisgICAgIFN0cmluZyBzdHIgPSAiYWJjIjsKKyA8L3ByZT48L2Jsb2NrcXVvdGU+PHA+CisgICAgICAgICAgICAgICAgICAgIGlzIGVxdWl2YWxlbnQgdG86CisgICAgICAgICAgICAgICAgPHA+PGJsb2NrcXVvdGU+PHByZT4KKyAgICAgY2hhciBkYXRhW10gPSB7J2EnLCAnYicsICdjJ307CisgICAgIFN0cmluZyBzdHIgPSBuZXcgU3RyaW5nKGRhdGEpOworIDwvcHJlPjwvYmxvY2txdW90ZT48cD4KKyAgICAgICAgICAgICAgICAgICAgSGVyZSBhcmUgc29tZSBtb3JlIGV4YW1wbGVzIG9mIGhvdyBzdHJpbmdzIGNhbiBiZSB1c2VkOgorICAgICAgICAgICAgICAgIDxwPjxibG9ja3F1b3RlPjxwcmU+CisgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiYWJjIik7CisgICAgIFN0cmluZyBjZGUgPSAiY2RlIjsKKyAgICAgU3lzdGVtLm91dC5wcmludGxuKCJhYmMiICsgY2RlKTsKKyAgICAgU3RyaW5nIGMgPSAiYWJjIi5zdWJzdHJpbmcoMiwzKTsKKyAgICAgU3RyaW5nIGQgPSBjZGUuc3Vic3RyaW5nKDEsIDIpOworIDwvcHJlPjwvYmxvY2txdW90ZT4KKyAgICAgICAgICAgICAgICA8cD4KKyAgICAgICAgICAgICAgICAgICAgVGhlIGNsYXNzIDxjb2RlPlN0cmluZzwvY29kZT4gaW5jbHVkZXMgbWV0aG9kcyBmb3IgZXhhbWluaW5nCisgICAgICAgICAgICAgICAgICAgIGluZGl2aWR1YWwgY2hhcmFjdGVycyBvZiB0aGUgc2VxdWVuY2UsIGZvciBjb21wYXJpbmcgc3RyaW5ncywgZm9yCisgICAgICAgICAgICAgICAgICAgIHNlYXJjaGluZyBzdHJpbmdzLCBmb3IgZXh0cmFjdGluZyBzdWJzdHJpbmdzLCBhbmQgZm9yIGNyZWF0aW5nIGEKKyAgICAgICAgICAgICAgICAgICAgY29weSBvZiBhIHN0cmluZyB3aXRoIGFsbCBjaGFyYWN0ZXJzIHRyYW5zbGF0ZWQgdG8gdXBwZXJjYXNlIG9yIHRvCisgICAgICAgICAgICAgICAgICAgIGxvd2VyY2FzZS4gQ2FzZSBtYXBwaW5nIGlzIGJhc2VkIG9uIHRoZSBVbmljb2RlIFN0YW5kYXJkIHZlcnNpb24KKyAgICAgICAgICAgICAgICAgICAgc3BlY2lmaWVkIGJ5IHRoZSA8YSBocmVmPSIuLi8uLi9qYXZhL2xhbmcvQ2hhcmFjdGVyLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBqYXZhLmxhbmciPjxjb2RlPkNoYXJhY3RlcjwvY29kZT48L2E+IGNsYXNzLgorICAgICAgICAgICAgICAgIDxwPgorICAgICAgICAgICAgICAgICAgICBUaGUgSmF2YSBsYW5ndWFnZSBwcm92aWRlcyBzcGVjaWFsIHN1cHBvcnQgZm9yIHRoZSBzdHJpbmcKKyAgICAgICAgICAgICAgICAgICAgY29uY2F0ZW5hdGlvbiBvcGVyYXRvciAoJm5ic3A7KyZuYnNwOyksIGFuZCBmb3IgY29udmVyc2lvbiBvZgorICAgICAgICAgICAgICAgICAgICBvdGhlciBvYmplY3RzIHRvIHN0cmluZ3MuIFN0cmluZyBjb25jYXRlbmF0aW9uIGlzIGltcGxlbWVudGVkCisgICAgICAgICAgICAgICAgICAgIHRocm91Z2ggdGhlIDxjb2RlPlN0cmluZ0J1aWxkZXI8L2NvZGU+KG9yIDxjb2RlPlN0cmluZ0J1ZmZlcjwvY29kZT4pCisgICAgICAgICAgICAgICAgICAgIGNsYXNzIGFuZCBpdHMgPGNvZGU+YXBwZW5kPC9jb2RlPiBtZXRob2QuCisgICAgICAgICAgICAgICAgICAgIFN0cmluZyBjb252ZXJzaW9ucyBhcmUgaW1wbGVtZW50ZWQgdGhyb3VnaCB0aGUgbWV0aG9kCisgICAgICAgICAgICAgICAgICAgIDxjb2RlPnRvU3RyaW5nPC9jb2RlPiwgZGVmaW5lZCBieSA8Y29kZT5PYmplY3Q8L2NvZGU+IGFuZAorICAgICAgICAgICAgICAgICAgICBpbmhlcml0ZWQgYnkgYWxsIGNsYXNzZXMgaW4gSmF2YS4gRm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gb24KKyAgICAgICAgICAgICAgICAgICAgc3RyaW5nIGNvbmNhdGVuYXRpb24gYW5kIGNvbnZlcnNpb24sIHNlZSBHb3NsaW5nLCBKb3ksIGFuZCBTdGVlbGUsCisgICAgICAgICAgICAgICAgICAgIDxpPlRoZSBKYXZhIExhbmd1YWdlIFNwZWNpZmljYXRpb248L2k+LgorCisgICAgICAgICAgICAgICAgPHA+IFVubGVzcyBvdGhlcndpc2Ugbm90ZWQsIHBhc3NpbmcgYSA8dHQ+bnVsbDwvdHQ+IGFyZ3VtZW50IHRvIGEgY29uc3RydWN0b3IKKyAgICAgICAgICAgICAgICAgICAgb3IgbWV0aG9kIGluIHRoaXMgY2xhc3Mgd2lsbCBjYXVzZSBhIDxhIGhyZWY9Ii4uLy4uL2phdmEvbGFuZy9OdWxsUG9pbnRlckV4Y2VwdGlvbi5odG1sIiB0aXRsZT0iY2xhc3MgaW4gamF2YS5sYW5nIj48Y29kZT5OdWxsUG9pbnRlckV4Y2VwdGlvbjwvY29kZT48L2E+IHRvIGJlCisgICAgICAgICAgICAgICAgICAgIHRocm93bi4KKworICAgICAgICAgICAgICAgIDxwPkEgPGNvZGU+U3RyaW5nPC9jb2RlPiByZXByZXNlbnRzIGEgc3RyaW5nIGluIHRoZSBVVEYtMTYgZm9ybWF0CisgICAgICAgICAgICAgICAgICAgIGluIHdoaWNoIDxlbT5zdXBwbGVtZW50YXJ5IGNoYXJhY3RlcnM8L2VtPiBhcmUgcmVwcmVzZW50ZWQgYnkgPGVtPnN1cnJvZ2F0ZQorICAgICAgICAgICAgICAgICAgICAgICAgcGFpcnM8L2VtPiAoc2VlIHRoZSBzZWN0aW9uIDxhIGhyZWY9IkNoYXJhY3Rlci5odG1sI3VuaWNvZGUiPlVuaWNvZGUKKyAgICAgICAgICAgICAgICAgICAgICAgIENoYXJhY3RlciBSZXByZXNlbnRhdGlvbnM8L2E+IGluIHRoZSA8Y29kZT5DaGFyYWN0ZXI8L2NvZGU+IGNsYXNzIGZvcgorICAgICAgICAgICAgICAgICAgICBtb3JlIGluZm9ybWF0aW9uKS4KKyAgICAgICAgICAgICAgICAgICAgSW5kZXggdmFsdWVzIHJlZmVyIHRvIDxjb2RlPmNoYXI8L2NvZGU+IGNvZGUgdW5pdHMsIHNvIGEgc3VwcGxlbWVudGFyeQorICAgICAgICAgICAgICAgICAgICBjaGFyYWN0ZXIgdXNlcyB0d28gcG9zaXRpb25zIGluIGEgPGNvZGU+U3RyaW5nPC9jb2RlPi4KKyAgICAgICAgICAgICAgICA8cD5UaGUgPGNvZGU+U3RyaW5nPC9jb2RlPiBjbGFzcyBwcm92aWRlcyBtZXRob2RzIGZvciBkZWFsaW5nIHdpdGgKKyAgICAgICAgICAgICAgICAgICAgVW5pY29kZSBjb2RlIHBvaW50cyAoaS5lLiwgY2hhcmFjdGVycyksIGluIGFkZGl0aW9uIHRvIHRob3NlIGZvcgorICAgICAgICAgICAgICAgICAgICBkZWFsaW5nIHdpdGggVW5pY29kZSBjb2RlIHVuaXRzIChpLmUuLCA8Y29kZT5jaGFyPC9jb2RlPiB2YWx1ZXMpLjwvZGl2PgorICAgICAgICAgICAgPGRsPjxkdD48c3BhbiBjbGFzcz0ic3Ryb25nIj5TaW5jZTo8L3NwYW4+PC9kdD4KKyAgICAgICAgICAgICAgICA8ZGQ+SkRLMS4wPC9kZD4KKyAgICAgICAgICAgICAgICA8ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+U2VlIEFsc286PC9zcGFuPjwvZHQ+PGRkPjxhIGhyZWY9Ii4uLy4uL2phdmEvbGFuZy9PYmplY3QuaHRtbCN0b1N0cmluZygpIj48Y29kZT5PYmplY3QudG9TdHJpbmcoKTwvY29kZT48L2E+LAorICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi8uLi9qYXZhL2xhbmcvU3RyaW5nQnVmZmVyLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBqYXZhLmxhbmciPjxjb2RlPlN0cmluZ0J1ZmZlcjwvY29kZT48L2E+LAorICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi8uLi9qYXZhL2xhbmcvU3RyaW5nQnVpbGRlci5odG1sIiB0aXRsZT0iY2xhc3MgaW4gamF2YS5sYW5nIj48Y29kZT5TdHJpbmdCdWlsZGVyPC9jb2RlPjwvYT4sCisgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uLy4uL2phdmEvbmlvL2NoYXJzZXQvQ2hhcnNldC5odG1sIiB0aXRsZT0iY2xhc3MgaW4gamF2YS5uaW8uY2hhcnNldCI+PGNvZGU+Q2hhcnNldDwvY29kZT48L2E+LAorICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi8uLi9zZXJpYWxpemVkLWZvcm0uaHRtbCNqYXZhLmxhbmcuU3RyaW5nIj5TZXJpYWxpemVkIEZvcm08L2E+PC9kZD48L2RsPgorICAgICAgICA8L2xpPgorICAgIDwvdWw+Cis8L2Rpdj4KKzwvSFRNTD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZXh0ZXJuYWxKYXZhZG9jL1N0cmluZy83L2V4cGVjdGVkVG9Mb3dlckNhc2UuaHRtbCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9leHRlcm5hbEphdmFkb2MvU3RyaW5nLzcvZXhwZWN0ZWRUb0xvd2VyQ2FzZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNmZjhlNDIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZXh0ZXJuYWxKYXZhZG9jL1N0cmluZy83L2V4cGVjdGVkVG9Mb3dlckNhc2UuaHRtbApAQCAtMCwwICsxLDM3IEBACis8SFRNTD48c3R5bGUgdHlwZT0idGV4dC9jc3MiPiAgdWwuaW5oZXJpdGFuY2UgeworICAgICAgbWFyZ2luOjA7CisgICAgICBwYWRkaW5nOjA7CisgIH0KKyAgdWwuaW5oZXJpdGFuY2UgbGkgeworICAgICAgIGRpc3BsYXk6aW5saW5lOworICAgICAgIGxpc3Qtc3R5bGU6bm9uZTsKKyAgfQorICB1bC5pbmhlcml0YW5jZSBsaSB1bC5pbmhlcml0YW5jZSB7CisgICAgbWFyZ2luLWxlZnQ6MTVweDsKKyAgICBwYWRkaW5nLWxlZnQ6MTVweDsKKyAgICBwYWRkaW5nLXRvcDoxcHg7CisgIH0KKzwvc3R5bGU+PGEgbmFtZT0idG9Mb3dlckNhc2UoKSI+CisgICAgPCEtLSAgIC0tPgorPC9hPgorICAgICAgICA8aDQ+dG9Mb3dlckNhc2U8L2g0PgorICAgICAgICA8cHJlPnB1YmxpYyZuYnNwOzxhIGhyZWY9Ii4uLy4uL2phdmEvbGFuZy9TdHJpbmcuaHRtbCIgdGl0bGU9ImNsYXNzIGluIGphdmEubGFuZyI+U3RyaW5nPC9hPiZuYnNwO3RvTG93ZXJDYXNlKCk8L3ByZT4KKyAgICAgICAgPGRpdiBjbGFzcz0iYmxvY2siPkNvbnZlcnRzIGFsbCBvZiB0aGUgY2hhcmFjdGVycyBpbiB0aGlzIDxjb2RlPlN0cmluZzwvY29kZT4gdG8gbG93ZXIKKyAgICAgICAgICAgIGNhc2UgdXNpbmcgdGhlIHJ1bGVzIG9mIHRoZSBkZWZhdWx0IGxvY2FsZS4gVGhpcyBpcyBlcXVpdmFsZW50IHRvIGNhbGxpbmcKKyAgICAgICAgICAgIDxjb2RlPnRvTG93ZXJDYXNlKExvY2FsZS5nZXREZWZhdWx0KCkpPC9jb2RlPi4KKyAgICAgICAgICAgIDxwPgorICAgICAgICAgICAgICAgIDxiPk5vdGU6PC9iPiBUaGlzIG1ldGhvZCBpcyBsb2NhbGUgc2Vuc2l0aXZlLCBhbmQgbWF5IHByb2R1Y2UgdW5leHBlY3RlZAorICAgICAgICAgICAgICAgIHJlc3VsdHMgaWYgdXNlZCBmb3Igc3RyaW5ncyB0aGF0IGFyZSBpbnRlbmRlZCB0byBiZSBpbnRlcnByZXRlZCBsb2NhbGUKKyAgICAgICAgICAgICAgICBpbmRlcGVuZGVudGx5LgorICAgICAgICAgICAgICAgIEV4YW1wbGVzIGFyZSBwcm9ncmFtbWluZyBsYW5ndWFnZSBpZGVudGlmaWVycywgcHJvdG9jb2wga2V5cywgYW5kIEhUTUwKKyAgICAgICAgICAgICAgICB0YWdzLgorICAgICAgICAgICAgICAgIEZvciBpbnN0YW5jZSwgPGNvZGU+IlRJVExFIi50b0xvd2VyQ2FzZSgpPC9jb2RlPiBpbiBhIFR1cmtpc2ggbG9jYWxlCisgICAgICAgICAgICAgICAgcmV0dXJucyA8Y29kZT4idFx1MDEzMXRsZSI8L2NvZGU+LCB3aGVyZSAnXHUwMTMxJyBpcyB0aGUKKyAgICAgICAgICAgICAgICBMQVRJTiBTTUFMTCBMRVRURVIgRE9UTEVTUyBJIGNoYXJhY3Rlci4KKyAgICAgICAgICAgICAgICBUbyBvYnRhaW4gY29ycmVjdCByZXN1bHRzIGZvciBsb2NhbGUgaW5zZW5zaXRpdmUgc3RyaW5ncywgdXNlCisgICAgICAgICAgICAgICAgPGNvZGU+dG9Mb3dlckNhc2UoTG9jYWxlLkVOR0xJU0gpPC9jb2RlPi4KKyAgICAgICAgICAgIDxwPjwvZGl2PgorICAgICAgICA8ZGw+PGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPlJldHVybnM6PC9zcGFuPjwvZHQ+PGRkPnRoZSA8Y29kZT5TdHJpbmc8L2NvZGU+LCBjb252ZXJ0ZWQgdG8gbG93ZXJjYXNlLjwvZGQ+PGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPlNlZSBBbHNvOjwvc3Bhbj48L2R0PjxkZD48YSBocmVmPSIuLi8uLi9qYXZhL2xhbmcvU3RyaW5nLmh0bWwjdG9Mb3dlckNhc2UoamF2YS51dGlsLkxvY2FsZSkiPjxjb2RlPnRvTG93ZXJDYXNlKExvY2FsZSk8L2NvZGU+PC9hPjwvZGQ+PC9kbD4KKyAgICA8L2xpPgorPC91bD4KKzwvSFRNTD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZXh0ZXJuYWxKYXZhZG9jL1N0cmluZy83L3BhZ2UuaHRtbCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9leHRlcm5hbEphdmFkb2MvU3RyaW5nLzcvcGFnZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNiOWViMWYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZXh0ZXJuYWxKYXZhZG9jL1N0cmluZy83L3BhZ2UuaHRtbApAQCAtMCwwICsxLDMwNzEgQEAKKworPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L2xvb3NlLmR0ZCI+Cis8IS0tIE5ld1BhZ2UgLS0+Cis8aHRtbCBsYW5nPSJlbiI+Cis8aGVhZD4KKyAgICA8IS0tIEdlbmVyYXRlZCBieSBqYXZhZG9jICh2ZXJzaW9uIDEuNi4wXzE0KSBvbiBXZWQgSnVsIDEzIDA1OjE5OjMyIFBEVCAyMDExIC0tPgorICAgIDx0aXRsZT5TdHJpbmcgKEphdmEgUGxhdGZvcm0gU0UgNyApPC90aXRsZT4KKyAgICA8bWV0YSBuYW1lPSJkYXRlIiBjb250ZW50PSIyMDExLTA3LTEzIj4KKyAgICA8bWV0YSBuYW1lPSJrZXl3b3JkcyIgY29udGVudD0iamF2YS5sYW5nLlN0cmluZyBjbGFzcyI+CisgICAgPG1ldGEgbmFtZT0ia2V5d29yZHMiIGNvbnRlbnQ9IkNBU0VfSU5TRU5TSVRJVkVfT1JERVIiPgorICAgIDxtZXRhIG5hbWU9ImtleXdvcmRzIiBjb250ZW50PSJsZW5ndGgoKSI+CisgICAgPG1ldGEgbmFtZT0ia2V5d29yZHMiIGNvbnRlbnQ9ImlzRW1wdHkoKSI+CisgICAgPG1ldGEgbmFtZT0ia2V5d29yZHMiIGNvbnRlbnQ9ImNoYXJBdCgpIj4KKyAgICA8bWV0YSBuYW1lPSJrZXl3b3JkcyIgY29udGVudD0iY29kZVBvaW50QXQoKSI+CisgICAgPG1ldGEgbmFtZT0ia2V5d29yZHMiIGNvbnRlbnQ9ImNvZGVQb2ludEJlZm9yZSgpIj4KKyAgICA8bWV0YSBuYW1lPSJrZXl3b3JkcyIgY29udGVudD0iY29kZVBvaW50Q291bnQoKSI+CisgICAgPG1ldGEgbmFtZT0ia2V5d29yZHMiIGNvbnRlbnQ9Im9mZnNldEJ5Q29kZVBvaW50cygpIj4KKyAgICA8bWV0YSBuYW1lPSJrZXl3b3JkcyIgY29udGVudD0iZ2V0Q2hhcnMoKSI+CisgICAgPG1ldGEgbmFtZT0ia2V5d29yZHMiIGNvbnRlbnQ9ImdldEJ5dGVzKCkiPgorICAgIDxtZXRhIG5hbWU9ImtleXdvcmRzIiBjb250ZW50PSJlcXVhbHMoKSI+CisgICAgPG1ldGEgbmFtZT0ia2V5d29yZHMiIGNvbnRlbnQ9ImNvbnRlbnRFcXVhbHMoKSI+CisgICAgPG1ldGEgbmFtZT0ia2V5d29yZHMiIGNvbnRlbnQ9ImVxdWFsc0lnbm9yZUNhc2UoKSI+CisgICAgPG1ldGEgbmFtZT0ia2V5d29yZHMiIGNvbnRlbnQ9ImNvbXBhcmVUbygpIj4KKyAgICA8bWV0YSBuYW1lPSJrZXl3b3JkcyIgY29udGVudD0iY29tcGFyZVRvSWdub3JlQ2FzZSgpIj4KKyAgICA8bWV0YSBuYW1lPSJrZXl3b3JkcyIgY29udGVudD0icmVnaW9uTWF0Y2hlcygpIj4KKyAgICA8bWV0YSBuYW1lPSJrZXl3b3JkcyIgY29udGVudD0ic3RhcnRzV2l0aCgpIj4KKyAgICA8bWV0YSBuYW1lPSJrZXl3b3JkcyIgY29udGVudD0iZW5kc1dpdGgoKSI+CisgICAgPG1ldGEgbmFtZT0ia2V5d29yZHMiIGNvbnRlbnQ9Imhhc2hDb2RlKCkiPgorICAgIDxtZXRhIG5hbWU9ImtleXdvcmRzIiBjb250ZW50PSJpbmRleE9mKCkiPgorICAgIDxtZXRhIG5hbWU9ImtleXdvcmRzIiBjb250ZW50PSJsYXN0SW5kZXhPZigpIj4KKyAgICA8bWV0YSBuYW1lPSJrZXl3b3JkcyIgY29udGVudD0ic3Vic3RyaW5nKCkiPgorICAgIDxtZXRhIG5hbWU9ImtleXdvcmRzIiBjb250ZW50PSJzdWJTZXF1ZW5jZSgpIj4KKyAgICA8bWV0YSBuYW1lPSJrZXl3b3JkcyIgY29udGVudD0iY29uY2F0KCkiPgorICAgIDxtZXRhIG5hbWU9ImtleXdvcmRzIiBjb250ZW50PSJyZXBsYWNlKCkiPgorICAgIDxtZXRhIG5hbWU9ImtleXdvcmRzIiBjb250ZW50PSJtYXRjaGVzKCkiPgorICAgIDxtZXRhIG5hbWU9ImtleXdvcmRzIiBjb250ZW50PSJjb250YWlucygpIj4KKyAgICA8bWV0YSBuYW1lPSJrZXl3b3JkcyIgY29udGVudD0icmVwbGFjZUZpcnN0KCkiPgorICAgIDxtZXRhIG5hbWU9ImtleXdvcmRzIiBjb250ZW50PSJyZXBsYWNlQWxsKCkiPgorICAgIDxtZXRhIG5hbWU9ImtleXdvcmRzIiBjb250ZW50PSJzcGxpdCgpIj4KKyAgICA8bWV0YSBuYW1lPSJrZXl3b3JkcyIgY29udGVudD0idG9Mb3dlckNhc2UoKSI+CisgICAgPG1ldGEgbmFtZT0ia2V5d29yZHMiIGNvbnRlbnQ9InRvVXBwZXJDYXNlKCkiPgorICAgIDxtZXRhIG5hbWU9ImtleXdvcmRzIiBjb250ZW50PSJ0cmltKCkiPgorICAgIDxtZXRhIG5hbWU9ImtleXdvcmRzIiBjb250ZW50PSJ0b1N0cmluZygpIj4KKyAgICA8bWV0YSBuYW1lPSJrZXl3b3JkcyIgY29udGVudD0idG9DaGFyQXJyYXkoKSI+CisgICAgPG1ldGEgbmFtZT0ia2V5d29yZHMiIGNvbnRlbnQ9ImZvcm1hdCgpIj4KKyAgICA8bWV0YSBuYW1lPSJrZXl3b3JkcyIgY29udGVudD0idmFsdWVPZigpIj4KKyAgICA8bWV0YSBuYW1lPSJrZXl3b3JkcyIgY29udGVudD0iY29weVZhbHVlT2YoKSI+CisgICAgPG1ldGEgbmFtZT0ia2V5d29yZHMiIGNvbnRlbnQ9ImludGVybigpIj4KKyAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSIuLi8uLi9zdHlsZXNoZWV0LmNzcyIgdGl0bGU9IlN0eWxlIj4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwhLS0KK2lmIChsb2NhdGlvbi5ocmVmLmluZGV4T2YoJ2lzLWV4dGVybmFsPXRydWUnKSA9PSAtMSkgeworICAgIHBhcmVudC5kb2N1bWVudC50aXRsZT0iU3RyaW5nIChKYXZhIFBsYXRmb3JtIFNFIDcgKSI7Cit9CisvLy0tPgorPC9zY3JpcHQ+Cis8bm9zY3JpcHQ+CisgICAgPGRpdj5KYXZhU2NyaXB0IGlzIGRpc2FibGVkIG9uIHlvdXIgYnJvd3Nlci48L2Rpdj4KKzwvbm9zY3JpcHQ+Cis8IS0tID09PT09PT09PSBTVEFSVCBPRiBUT1AgTkFWQkFSID09PT09PT0gLS0+Cis8ZGl2IGNsYXNzPSJ0b3BOYXYiPjxhIG5hbWU9Im5hdmJhcl90b3AiPgorICAgIDwhLS0gICAtLT4KKzwvYT48YSBocmVmPSIjc2tpcC1uYXZiYXJfdG9wIiB0aXRsZT0iU2tpcCBuYXZpZ2F0aW9uIGxpbmtzIj48L2E+PGEgbmFtZT0ibmF2YmFyX3RvcF9maXJzdHJvdyI+CisgICAgPCEtLSAgIC0tPgorPC9hPgorICAgIDx1bCBjbGFzcz0ibmF2TGlzdCIgdGl0bGU9Ik5hdmlnYXRpb24iPgorICAgICAgICA8bGk+PGEgaHJlZj0iLi4vLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj5PdmVydmlldzwvYT48L2xpPgorICAgICAgICA8bGk+PGEgaHJlZj0icGFja2FnZS1zdW1tYXJ5Lmh0bWwiPlBhY2thZ2U8L2E+PC9saT4KKyAgICAgICAgPGxpIGNsYXNzPSJuYXZCYXJDZWxsMVJldiI+Q2xhc3M8L2xpPgorICAgICAgICA8bGk+PGEgaHJlZj0iY2xhc3MtdXNlL1N0cmluZy5odG1sIj5Vc2U8L2E+PC9saT4KKyAgICAgICAgPGxpPjxhIGhyZWY9InBhY2thZ2UtdHJlZS5odG1sIj5UcmVlPC9hPjwvbGk+CisgICAgICAgIDxsaT48YSBocmVmPSIuLi8uLi9kZXByZWNhdGVkLWxpc3QuaHRtbCI+RGVwcmVjYXRlZDwvYT48L2xpPgorICAgICAgICA8bGk+PGEgaHJlZj0iLi4vLi4vaW5kZXgtZmlsZXMvaW5kZXgtMS5odG1sIj5JbmRleDwvYT48L2xpPgorICAgICAgICA8bGk+PGEgaHJlZj0iLi4vLi4vaGVscC1kb2MuaHRtbCI+SGVscDwvYT48L2xpPgorICAgIDwvdWw+CisgICAgPGRpdiBjbGFzcz0iYWJvdXRMYW5ndWFnZSI+PGVtPjxzdHJvbmc+SmF2YSZ0cmFkZTsmbmJzcDtQbGF0Zm9ybTxicj5TdGFuZGFyZCZuYnNwO0VkLiZuYnNwOzc8L3N0cm9uZz48L2VtPjwvZGl2PgorPC9kaXY+Cis8ZGl2IGNsYXNzPSJzdWJOYXYiPgorICAgIDx1bCBjbGFzcz0ibmF2TGlzdCI+CisgICAgICAgIDxsaT48YSBocmVmPSIuLi8uLi9qYXZhL2xhbmcvU3RyaWN0TWF0aC5odG1sIiB0aXRsZT0iY2xhc3MgaW4gamF2YS5sYW5nIj48c3BhbiBjbGFzcz0ic3Ryb25nIj5QcmV2IENsYXNzPC9zcGFuPjwvYT48L2xpPgorICAgICAgICA8bGk+PGEgaHJlZj0iLi4vLi4vamF2YS9sYW5nL1N0cmluZ0J1ZmZlci5odG1sIiB0aXRsZT0iY2xhc3MgaW4gamF2YS5sYW5nIj48c3BhbiBjbGFzcz0ic3Ryb25nIj5OZXh0IENsYXNzPC9zcGFuPjwvYT48L2xpPgorICAgIDwvdWw+CisgICAgPHVsIGNsYXNzPSJuYXZMaXN0Ij4KKyAgICAgICAgPGxpPjxhIGhyZWY9Ii4uLy4uL2luZGV4Lmh0bWw/amF2YS9sYW5nL1N0cmluZy5odG1sIiB0YXJnZXQ9Il90b3AiPkZyYW1lczwvYT48L2xpPgorICAgICAgICA8bGk+PGEgaHJlZj0iU3RyaW5nLmh0bWwiIHRhcmdldD0iX3RvcCI+Tm8gRnJhbWVzPC9hPjwvbGk+CisgICAgPC91bD4KKyAgICA8dWwgY2xhc3M9Im5hdkxpc3QiIGlkPSJhbGxjbGFzc2VzX25hdmJhcl90b3AiPgorICAgICAgICA8bGk+PGEgaHJlZj0iLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPkFsbCBDbGFzc2VzPC9hPjwvbGk+CisgICAgPC91bD4KKyAgICA8ZGl2PgorICAgICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+PCEtLQorICAgICAgICBhbGxDbGFzc2VzTGluayA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJhbGxjbGFzc2VzX25hdmJhcl90b3AiKTsKKyAgICAgICAgaWYod2luZG93PT10b3ApIHsKKyAgICAgICAgICAgIGFsbENsYXNzZXNMaW5rLnN0eWxlLmRpc3BsYXkgPSAiYmxvY2siOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgYWxsQ2xhc3Nlc0xpbmsuc3R5bGUuZGlzcGxheSA9ICJub25lIjsKKyAgICAgICAgfQorICAgICAgICAvLy0tPgorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2Rpdj4KKyAgICA8ZGl2PgorICAgICAgICA8dWwgY2xhc3M9InN1Yk5hdkxpc3QiPgorICAgICAgICAgICAgPGxpPlN1bW1hcnk6Jm5ic3A7PC9saT4KKyAgICAgICAgICAgIDxsaT5OZXN0ZWQmbmJzcDt8Jm5ic3A7PC9saT4KKyAgICAgICAgICAgIDxsaT48YSBocmVmPSIjZmllbGRfc3VtbWFyeSI+RmllbGQ8L2E+Jm5ic3A7fCZuYnNwOzwvbGk+CisgICAgICAgICAgICA8bGk+PGEgaHJlZj0iI2NvbnN0cnVjdG9yX3N1bW1hcnkiPkNvbnN0cjwvYT4mbmJzcDt8Jm5ic3A7PC9saT4KKyAgICAgICAgICAgIDxsaT48YSBocmVmPSIjbWV0aG9kX3N1bW1hcnkiPk1ldGhvZDwvYT48L2xpPgorICAgICAgICA8L3VsPgorICAgICAgICA8dWwgY2xhc3M9InN1Yk5hdkxpc3QiPgorICAgICAgICAgICAgPGxpPkRldGFpbDombmJzcDs8L2xpPgorICAgICAgICAgICAgPGxpPjxhIGhyZWY9IiNmaWVsZF9kZXRhaWwiPkZpZWxkPC9hPiZuYnNwO3wmbmJzcDs8L2xpPgorICAgICAgICAgICAgPGxpPjxhIGhyZWY9IiNjb25zdHJ1Y3Rvcl9kZXRhaWwiPkNvbnN0cjwvYT4mbmJzcDt8Jm5ic3A7PC9saT4KKyAgICAgICAgICAgIDxsaT48YSBocmVmPSIjbWV0aG9kX2RldGFpbCI+TWV0aG9kPC9hPjwvbGk+CisgICAgICAgIDwvdWw+CisgICAgPC9kaXY+CisgICAgPGEgbmFtZT0ic2tpcC1uYXZiYXJfdG9wIj4KKyAgICAgICAgPCEtLSAgIC0tPgorICAgIDwvYT48L2Rpdj4KKzwhLS0gPT09PT09PT09IEVORCBPRiBUT1AgTkFWQkFSID09PT09PT09PSAtLT4KKzwhLS0gPT09PT09PT0gU1RBUlQgT0YgQ0xBU1MgREFUQSA9PT09PT09PSAtLT4KKzxkaXYgY2xhc3M9ImhlYWRlciI+CisgICAgPGRpdiBjbGFzcz0ic3ViVGl0bGUiPmphdmEubGFuZzwvZGl2PgorICAgIDxoMiB0aXRsZT0iQ2xhc3MgU3RyaW5nIiBjbGFzcz0idGl0bGUiPkNsYXNzIFN0cmluZzwvaDI+Cis8L2Rpdj4KKzxkaXYgY2xhc3M9ImNvbnRlbnRDb250YWluZXIiPgorPHVsIGNsYXNzPSJpbmhlcml0YW5jZSI+CisgICAgPGxpPjxhIGhyZWY9Ii4uLy4uL2phdmEvbGFuZy9PYmplY3QuaHRtbCIgdGl0bGU9ImNsYXNzIGluIGphdmEubGFuZyI+amF2YS5sYW5nLk9iamVjdDwvYT48L2xpPgorICAgIDxsaT4KKyAgICAgICAgPHVsIGNsYXNzPSJpbmhlcml0YW5jZSI+CisgICAgICAgICAgICA8bGk+amF2YS5sYW5nLlN0cmluZzwvbGk+CisgICAgICAgIDwvdWw+CisgICAgPC9saT4KKzwvdWw+Cis8ZGl2IGNsYXNzPSJkZXNjcmlwdGlvbiI+CisgICAgPHVsIGNsYXNzPSJibG9ja0xpc3QiPgorICAgICAgICA8bGkgY2xhc3M9ImJsb2NrTGlzdCI+CisgICAgICAgICAgICA8ZGw+CisgICAgICAgICAgICAgICAgPGR0PkFsbCBJbXBsZW1lbnRlZCBJbnRlcmZhY2VzOjwvZHQ+CisgICAgICAgICAgICAgICAgPGRkPjxhIGhyZWY9Ii4uLy4uL2phdmEvaW8vU2VyaWFsaXphYmxlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gamF2YS5pbyI+U2VyaWFsaXphYmxlPC9hPiwgPGEgaHJlZj0iLi4vLi4vamF2YS9sYW5nL0NoYXJTZXF1ZW5jZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIGphdmEubGFuZyI+Q2hhclNlcXVlbmNlPC9hPiwgPGEgaHJlZj0iLi4vLi4vamF2YS9sYW5nL0NvbXBhcmFibGUuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBqYXZhLmxhbmciPkNvbXBhcmFibGU8L2E+Jmx0OzxhIGhyZWY9Ii4uLy4uL2phdmEvbGFuZy9TdHJpbmcuaHRtbCIgdGl0bGU9ImNsYXNzIGluIGphdmEubGFuZyI+U3RyaW5nPC9hPiZndDs8L2RkPgorICAgICAgICAgICAgPC9kbD4KKyAgICAgICAgICAgIDxocj4KKyAgICAgICAgICAgIDxicj4KKzxwcmU+cHVibGljIGZpbmFsIGNsYXNzIDxzcGFuIGNsYXNzPSJzdHJvbmciPlN0cmluZzwvc3Bhbj4KK2V4dGVuZHMgPGEgaHJlZj0iLi4vLi4vamF2YS9sYW5nL09iamVjdC5odG1sIiB0aXRsZT0iY2xhc3MgaW4gamF2YS5sYW5nIj5PYmplY3Q8L2E+CitpbXBsZW1lbnRzIDxhIGhyZWY9Ii4uLy4uL2phdmEvaW8vU2VyaWFsaXphYmxlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gamF2YS5pbyI+U2VyaWFsaXphYmxlPC9hPiwgPGEgaHJlZj0iLi4vLi4vamF2YS9sYW5nL0NvbXBhcmFibGUuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBqYXZhLmxhbmciPkNvbXBhcmFibGU8L2E+Jmx0OzxhIGhyZWY9Ii4uLy4uL2phdmEvbGFuZy9TdHJpbmcuaHRtbCIgdGl0bGU9ImNsYXNzIGluIGphdmEubGFuZyI+U3RyaW5nPC9hPiZndDssIDxhIGhyZWY9Ii4uLy4uL2phdmEvbGFuZy9DaGFyU2VxdWVuY2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBqYXZhLmxhbmciPkNoYXJTZXF1ZW5jZTwvYT48L3ByZT4KKyAgICAgICAgICAgIDxkaXYgY2xhc3M9ImJsb2NrIj5UaGUgPGNvZGU+U3RyaW5nPC9jb2RlPiBjbGFzcyByZXByZXNlbnRzIGNoYXJhY3RlciBzdHJpbmdzLiBBbGwKKyAgICAgICAgICAgICAgICBzdHJpbmcgbGl0ZXJhbHMgaW4gSmF2YSBwcm9ncmFtcywgc3VjaCBhcyA8Y29kZT4iYWJjIjwvY29kZT4sIGFyZQorICAgICAgICAgICAgICAgIGltcGxlbWVudGVkIGFzIGluc3RhbmNlcyBvZiB0aGlzIGNsYXNzLgorICAgICAgICAgICAgICAgIDxwPgorICAgICAgICAgICAgICAgICAgICBTdHJpbmdzIGFyZSBjb25zdGFudDsgdGhlaXIgdmFsdWVzIGNhbm5vdCBiZSBjaGFuZ2VkIGFmdGVyIHRoZXkKKyAgICAgICAgICAgICAgICAgICAgYXJlIGNyZWF0ZWQuIFN0cmluZyBidWZmZXJzIHN1cHBvcnQgbXV0YWJsZSBzdHJpbmdzLgorICAgICAgICAgICAgICAgICAgICBCZWNhdXNlIFN0cmluZyBvYmplY3RzIGFyZSBpbW11dGFibGUgdGhleSBjYW4gYmUgc2hhcmVkLiBGb3IgZXhhbXBsZToKKyAgICAgICAgICAgICAgICA8cD48YmxvY2txdW90ZT48cHJlPgorICAgICBTdHJpbmcgc3RyID0gImFiYyI7CisgPC9wcmU+PC9ibG9ja3F1b3RlPjxwPgorICAgICAgICAgICAgICAgICAgICBpcyBlcXVpdmFsZW50IHRvOgorICAgICAgICAgICAgICAgIDxwPjxibG9ja3F1b3RlPjxwcmU+CisgICAgIGNoYXIgZGF0YVtdID0geydhJywgJ2InLCAnYyd9OworICAgICBTdHJpbmcgc3RyID0gbmV3IFN0cmluZyhkYXRhKTsKKyA8L3ByZT48L2Jsb2NrcXVvdGU+PHA+CisgICAgICAgICAgICAgICAgICAgIEhlcmUgYXJlIHNvbWUgbW9yZSBleGFtcGxlcyBvZiBob3cgc3RyaW5ncyBjYW4gYmUgdXNlZDoKKyAgICAgICAgICAgICAgICA8cD48YmxvY2txdW90ZT48cHJlPgorICAgICBTeXN0ZW0ub3V0LnByaW50bG4oImFiYyIpOworICAgICBTdHJpbmcgY2RlID0gImNkZSI7CisgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiYWJjIiArIGNkZSk7CisgICAgIFN0cmluZyBjID0gImFiYyIuc3Vic3RyaW5nKDIsMyk7CisgICAgIFN0cmluZyBkID0gY2RlLnN1YnN0cmluZygxLCAyKTsKKyA8L3ByZT48L2Jsb2NrcXVvdGU+CisgICAgICAgICAgICAgICAgPHA+CisgICAgICAgICAgICAgICAgICAgIFRoZSBjbGFzcyA8Y29kZT5TdHJpbmc8L2NvZGU+IGluY2x1ZGVzIG1ldGhvZHMgZm9yIGV4YW1pbmluZworICAgICAgICAgICAgICAgICAgICBpbmRpdmlkdWFsIGNoYXJhY3RlcnMgb2YgdGhlIHNlcXVlbmNlLCBmb3IgY29tcGFyaW5nIHN0cmluZ3MsIGZvcgorICAgICAgICAgICAgICAgICAgICBzZWFyY2hpbmcgc3RyaW5ncywgZm9yIGV4dHJhY3Rpbmcgc3Vic3RyaW5ncywgYW5kIGZvciBjcmVhdGluZyBhCisgICAgICAgICAgICAgICAgICAgIGNvcHkgb2YgYSBzdHJpbmcgd2l0aCBhbGwgY2hhcmFjdGVycyB0cmFuc2xhdGVkIHRvIHVwcGVyY2FzZSBvciB0bworICAgICAgICAgICAgICAgICAgICBsb3dlcmNhc2UuIENhc2UgbWFwcGluZyBpcyBiYXNlZCBvbiB0aGUgVW5pY29kZSBTdGFuZGFyZCB2ZXJzaW9uCisgICAgICAgICAgICAgICAgICAgIHNwZWNpZmllZCBieSB0aGUgPGEgaHJlZj0iLi4vLi4vamF2YS9sYW5nL0NoYXJhY3Rlci5odG1sIiB0aXRsZT0iY2xhc3MgaW4gamF2YS5sYW5nIj48Y29kZT5DaGFyYWN0ZXI8L2NvZGU+PC9hPiBjbGFzcy4KKyAgICAgICAgICAgICAgICA8cD4KKyAgICAgICAgICAgICAgICAgICAgVGhlIEphdmEgbGFuZ3VhZ2UgcHJvdmlkZXMgc3BlY2lhbCBzdXBwb3J0IGZvciB0aGUgc3RyaW5nCisgICAgICAgICAgICAgICAgICAgIGNvbmNhdGVuYXRpb24gb3BlcmF0b3IgKCZuYnNwOysmbmJzcDspLCBhbmQgZm9yIGNvbnZlcnNpb24gb2YKKyAgICAgICAgICAgICAgICAgICAgb3RoZXIgb2JqZWN0cyB0byBzdHJpbmdzLiBTdHJpbmcgY29uY2F0ZW5hdGlvbiBpcyBpbXBsZW1lbnRlZAorICAgICAgICAgICAgICAgICAgICB0aHJvdWdoIHRoZSA8Y29kZT5TdHJpbmdCdWlsZGVyPC9jb2RlPihvciA8Y29kZT5TdHJpbmdCdWZmZXI8L2NvZGU+KQorICAgICAgICAgICAgICAgICAgICBjbGFzcyBhbmQgaXRzIDxjb2RlPmFwcGVuZDwvY29kZT4gbWV0aG9kLgorICAgICAgICAgICAgICAgICAgICBTdHJpbmcgY29udmVyc2lvbnMgYXJlIGltcGxlbWVudGVkIHRocm91Z2ggdGhlIG1ldGhvZAorICAgICAgICAgICAgICAgICAgICA8Y29kZT50b1N0cmluZzwvY29kZT4sIGRlZmluZWQgYnkgPGNvZGU+T2JqZWN0PC9jb2RlPiBhbmQKKyAgICAgICAgICAgICAgICAgICAgaW5oZXJpdGVkIGJ5IGFsbCBjbGFzc2VzIGluIEphdmEuIEZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIG9uCisgICAgICAgICAgICAgICAgICAgIHN0cmluZyBjb25jYXRlbmF0aW9uIGFuZCBjb252ZXJzaW9uLCBzZWUgR29zbGluZywgSm95LCBhbmQgU3RlZWxlLAorICAgICAgICAgICAgICAgICAgICA8aT5UaGUgSmF2YSBMYW5ndWFnZSBTcGVjaWZpY2F0aW9uPC9pPi4KKworICAgICAgICAgICAgICAgIDxwPiBVbmxlc3Mgb3RoZXJ3aXNlIG5vdGVkLCBwYXNzaW5nIGEgPHR0Pm51bGw8L3R0PiBhcmd1bWVudCB0byBhIGNvbnN0cnVjdG9yCisgICAgICAgICAgICAgICAgICAgIG9yIG1ldGhvZCBpbiB0aGlzIGNsYXNzIHdpbGwgY2F1c2UgYSA8YSBocmVmPSIuLi8uLi9qYXZhL2xhbmcvTnVsbFBvaW50ZXJFeGNlcHRpb24uaHRtbCIgdGl0bGU9ImNsYXNzIGluIGphdmEubGFuZyI+PGNvZGU+TnVsbFBvaW50ZXJFeGNlcHRpb248L2NvZGU+PC9hPiB0byBiZQorICAgICAgICAgICAgICAgICAgICB0aHJvd24uCisKKyAgICAgICAgICAgICAgICA8cD5BIDxjb2RlPlN0cmluZzwvY29kZT4gcmVwcmVzZW50cyBhIHN0cmluZyBpbiB0aGUgVVRGLTE2IGZvcm1hdAorICAgICAgICAgICAgICAgICAgICBpbiB3aGljaCA8ZW0+c3VwcGxlbWVudGFyeSBjaGFyYWN0ZXJzPC9lbT4gYXJlIHJlcHJlc2VudGVkIGJ5IDxlbT5zdXJyb2dhdGUKKyAgICAgICAgICAgICAgICAgICAgICAgIHBhaXJzPC9lbT4gKHNlZSB0aGUgc2VjdGlvbiA8YSBocmVmPSJDaGFyYWN0ZXIuaHRtbCN1bmljb2RlIj5Vbmljb2RlCisgICAgICAgICAgICAgICAgICAgICAgICBDaGFyYWN0ZXIgUmVwcmVzZW50YXRpb25zPC9hPiBpbiB0aGUgPGNvZGU+Q2hhcmFjdGVyPC9jb2RlPiBjbGFzcyBmb3IKKyAgICAgICAgICAgICAgICAgICAgbW9yZSBpbmZvcm1hdGlvbikuCisgICAgICAgICAgICAgICAgICAgIEluZGV4IHZhbHVlcyByZWZlciB0byA8Y29kZT5jaGFyPC9jb2RlPiBjb2RlIHVuaXRzLCBzbyBhIHN1cHBsZW1lbnRhcnkKKyAgICAgICAgICAgICAgICAgICAgY2hhcmFjdGVyIHVzZXMgdHdvIHBvc2l0aW9ucyBpbiBhIDxjb2RlPlN0cmluZzwvY29kZT4uCisgICAgICAgICAgICAgICAgPHA+VGhlIDxjb2RlPlN0cmluZzwvY29kZT4gY2xhc3MgcHJvdmlkZXMgbWV0aG9kcyBmb3IgZGVhbGluZyB3aXRoCisgICAgICAgICAgICAgICAgICAgIFVuaWNvZGUgY29kZSBwb2ludHMgKGkuZS4sIGNoYXJhY3RlcnMpLCBpbiBhZGRpdGlvbiB0byB0aG9zZSBmb3IKKyAgICAgICAgICAgICAgICAgICAgZGVhbGluZyB3aXRoIFVuaWNvZGUgY29kZSB1bml0cyAoaS5lLiwgPGNvZGU+Y2hhcjwvY29kZT4gdmFsdWVzKS48L2Rpdj4KKyAgICAgICAgICAgIDxkbD48ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+U2luY2U6PC9zcGFuPjwvZHQ+CisgICAgICAgICAgICAgICAgPGRkPkpESzEuMDwvZGQ+CisgICAgICAgICAgICAgICAgPGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPlNlZSBBbHNvOjwvc3Bhbj48L2R0PjxkZD48YSBocmVmPSIuLi8uLi9qYXZhL2xhbmcvT2JqZWN0Lmh0bWwjdG9TdHJpbmcoKSI+PGNvZGU+T2JqZWN0LnRvU3RyaW5nKCk8L2NvZGU+PC9hPiwKKyAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vLi4vamF2YS9sYW5nL1N0cmluZ0J1ZmZlci5odG1sIiB0aXRsZT0iY2xhc3MgaW4gamF2YS5sYW5nIj48Y29kZT5TdHJpbmdCdWZmZXI8L2NvZGU+PC9hPiwKKyAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vLi4vamF2YS9sYW5nL1N0cmluZ0J1aWxkZXIuaHRtbCIgdGl0bGU9ImNsYXNzIGluIGphdmEubGFuZyI+PGNvZGU+U3RyaW5nQnVpbGRlcjwvY29kZT48L2E+LAorICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi8uLi9qYXZhL25pby9jaGFyc2V0L0NoYXJzZXQuaHRtbCIgdGl0bGU9ImNsYXNzIGluIGphdmEubmlvLmNoYXJzZXQiPjxjb2RlPkNoYXJzZXQ8L2NvZGU+PC9hPiwKKyAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vLi4vc2VyaWFsaXplZC1mb3JtLmh0bWwjamF2YS5sYW5nLlN0cmluZyI+U2VyaWFsaXplZCBGb3JtPC9hPjwvZGQ+PC9kbD4KKyAgICAgICAgPC9saT4KKyAgICA8L3VsPgorPC9kaXY+Cis8ZGl2IGNsYXNzPSJzdW1tYXJ5Ij4KKzx1bCBjbGFzcz0iYmxvY2tMaXN0Ij4KKzxsaSBjbGFzcz0iYmxvY2tMaXN0Ij4KKzwhLS0gPT09PT09PT09PT0gRklFTEQgU1VNTUFSWSA9PT09PT09PT09PSAtLT4KKzx1bCBjbGFzcz0iYmxvY2tMaXN0Ij4KKyAgICA8bGkgY2xhc3M9ImJsb2NrTGlzdCI+PGEgbmFtZT0iZmllbGRfc3VtbWFyeSI+CisgICAgICAgIDwhLS0gICAtLT4KKyAgICA8L2E+CisgICAgICAgIDxoMz5GaWVsZCBTdW1tYXJ5PC9oMz4KKyAgICAgICAgPHRhYmxlIGNsYXNzPSJvdmVydmlld1N1bW1hcnkiIGJvcmRlcj0iMCIgY2VsbHBhZGRpbmc9IjMiIGNlbGxzcGFjaW5nPSIwIiBzdW1tYXJ5PSJGaWVsZCBTdW1tYXJ5IHRhYmxlLCBsaXN0aW5nIGZpZWxkcywgYW5kIGFuIGV4cGxhbmF0aW9uIj4KKyAgICAgICAgICAgIDxjYXB0aW9uPjxzcGFuPkZpZWxkczwvc3Bhbj48c3BhbiBjbGFzcz0idGFiRW5kIj4mbmJzcDs8L3NwYW4+PC9jYXB0aW9uPgorICAgICAgICAgICAgPHRyPgorICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0iY29sRmlyc3QiIHNjb3BlPSJjb2wiPk1vZGlmaWVyIGFuZCBUeXBlPC90aD4KKyAgICAgICAgICAgICAgICA8dGggY2xhc3M9ImNvbExhc3QiIHNjb3BlPSJjb2wiPkZpZWxkIGFuZCBEZXNjcmlwdGlvbjwvdGg+CisgICAgICAgICAgICA8L3RyPgorICAgICAgICAgICAgPHRyIGNsYXNzPSJhbHRDb2xvciI+CisgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjb2xGaXJzdCI+PGNvZGU+c3RhdGljIDxhIGhyZWY9Ii4uLy4uL2phdmEvdXRpbC9Db21wYXJhdG9yLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gamF2YS51dGlsIj5Db21wYXJhdG9yPC9hPiZsdDs8YSBocmVmPSIuLi8uLi9qYXZhL2xhbmcvU3RyaW5nLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBqYXZhLmxhbmciPlN0cmluZzwvYT4mZ3Q7PC9jb2RlPjwvdGQ+CisgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjb2xMYXN0Ij48Y29kZT48c3Ryb25nPjxhIGhyZWY9Ii4uLy4uL2phdmEvbGFuZy9TdHJpbmcuaHRtbCNDQVNFX0lOU0VOU0lUSVZFX09SREVSIj5DQVNFX0lOU0VOU0lUSVZFX09SREVSPC9hPjwvc3Ryb25nPjwvY29kZT4KKyAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYmxvY2siPkEgQ29tcGFyYXRvciB0aGF0IG9yZGVycyA8Y29kZT5TdHJpbmc8L2NvZGU+IG9iamVjdHMgYXMgYnkKKyAgICAgICAgICAgICAgICAgICAgICAgIDxjb2RlPmNvbXBhcmVUb0lnbm9yZUNhc2U8L2NvZGU+LjwvZGl2PgorICAgICAgICAgICAgICAgIDwvdGQ+CisgICAgICAgICAgICA8L3RyPgorICAgICAgICA8L3RhYmxlPgorICAgIDwvbGk+Cis8L3VsPgorPCEtLSA9PT09PT09PSBDT05TVFJVQ1RPUiBTVU1NQVJZID09PT09PT09IC0tPgorPHVsIGNsYXNzPSJibG9ja0xpc3QiPgorICAgIDxsaSBjbGFzcz0iYmxvY2tMaXN0Ij48YSBuYW1lPSJjb25zdHJ1Y3Rvcl9zdW1tYXJ5Ij4KKyAgICAgICAgPCEtLSAgIC0tPgorICAgIDwvYT4KKyAgICAgICAgPGgzPkNvbnN0cnVjdG9yIFN1bW1hcnk8L2gzPgorICAgICAgICA8dGFibGUgY2xhc3M9Im92ZXJ2aWV3U3VtbWFyeSIgYm9yZGVyPSIwIiBjZWxscGFkZGluZz0iMyIgY2VsbHNwYWNpbmc9IjAiIHN1bW1hcnk9IkNvbnN0cnVjdG9yIFN1bW1hcnkgdGFibGUsIGxpc3RpbmcgY29uc3RydWN0b3JzLCBhbmQgYW4gZXhwbGFuYXRpb24iPgorICAgICAgICAgICAgPGNhcHRpb24+PHNwYW4+Q29uc3RydWN0b3JzPC9zcGFuPjxzcGFuIGNsYXNzPSJ0YWJFbmQiPiZuYnNwOzwvc3Bhbj48L2NhcHRpb24+CisgICAgICAgICAgICA8dHI+CisgICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJjb2xPbmUiIHNjb3BlPSJjb2wiPkNvbnN0cnVjdG9yIGFuZCBEZXNjcmlwdGlvbjwvdGg+CisgICAgICAgICAgICA8L3RyPgorICAgICAgICAgICAgPHRyIGNsYXNzPSJhbHRDb2xvciI+CisgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjb2xPbmUiPjxjb2RlPjxzdHJvbmc+PGEgaHJlZj0iLi4vLi4vamF2YS9sYW5nL1N0cmluZy5odG1sI1N0cmluZygpIj5TdHJpbmc8L2E+PC9zdHJvbmc+KCk8L2NvZGU+CisgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImJsb2NrIj5Jbml0aWFsaXplcyBhIG5ld2x5IGNyZWF0ZWQgPGNvZGU+U3RyaW5nPC9jb2RlPiBvYmplY3Qgc28gdGhhdCBpdCByZXByZXNlbnRzCisgICAgICAgICAgICAgICAgICAgICAgICBhbiBlbXB0eSBjaGFyYWN0ZXIgc2VxdWVuY2UuPC9kaXY+CisgICAgICAgICAgICAgICAgPC90ZD4KKyAgICAgICAgICAgIDwvdHI+CisgICAgICAgICAgICA8dHIgY2xhc3M9InJvd0NvbG9yIj4KKyAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImNvbE9uZSI+PGNvZGU+PHN0cm9uZz48YSBocmVmPSIuLi8uLi9qYXZhL2xhbmcvU3RyaW5nLmh0bWwjU3RyaW5nKGJ5dGVbXSkiPlN0cmluZzwvYT48L3N0cm9uZz4oYnl0ZVtdJm5ic3A7Ynl0ZXMpPC9jb2RlPgorICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJibG9jayI+Q29uc3RydWN0cyBhIG5ldyA8Y29kZT5TdHJpbmc8L2NvZGU+IGJ5IGRlY29kaW5nIHRoZSBzcGVjaWZpZWQgYXJyYXkgb2YgYnl0ZXMKKyAgICAgICAgICAgICAgICAgICAgICAgIHVzaW5nIHRoZSBwbGF0Zm9ybSdzIGRlZmF1bHQgY2hhcnNldC48L2Rpdj4KKyAgICAgICAgICAgICAgICA8L3RkPgorICAgICAgICAgICAgPC90cj4KKyAgICAgICAgICAgIDx0ciBjbGFzcz0iYWx0Q29sb3IiPgorICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iY29sT25lIj48Y29kZT48c3Ryb25nPjxhIGhyZWY9Ii4uLy4uL2phdmEvbGFuZy9TdHJpbmcuaHRtbCNTdHJpbmcoYnl0ZVtdLCBqYXZhLm5pby5jaGFyc2V0LkNoYXJzZXQpIj5TdHJpbmc8L2E+PC9zdHJvbmc+KGJ5dGVbXSZuYnNwO2J5dGVzLAorICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi8uLi9qYXZhL25pby9jaGFyc2V0L0NoYXJzZXQuaHRtbCIgdGl0bGU9ImNsYXNzIGluIGphdmEubmlvLmNoYXJzZXQiPkNoYXJzZXQ8L2E+Jm5ic3A7Y2hhcnNldCk8L2NvZGU+CisgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImJsb2NrIj5Db25zdHJ1Y3RzIGEgbmV3IDxjb2RlPlN0cmluZzwvY29kZT4gYnkgZGVjb2RpbmcgdGhlIHNwZWNpZmllZCBhcnJheSBvZgorICAgICAgICAgICAgICAgICAgICAgICAgYnl0ZXMgdXNpbmcgdGhlIHNwZWNpZmllZCA8YSBocmVmPSIuLi8uLi9qYXZhL25pby9jaGFyc2V0L0NoYXJzZXQuaHRtbCIgdGl0bGU9ImNsYXNzIGluIGphdmEubmlvLmNoYXJzZXQiPmNoYXJzZXQ8L2E+LjwvZGl2PgorICAgICAgICAgICAgICAgIDwvdGQ+CisgICAgICAgICAgICA8L3RyPgorICAgICAgICAgICAgPHRyIGNsYXNzPSJyb3dDb2xvciI+CisgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjb2xPbmUiPjxjb2RlPjxzdHJvbmc+PGEgaHJlZj0iLi4vLi4vamF2YS9sYW5nL1N0cmluZy5odG1sI1N0cmluZyhieXRlW10sIGludCkiPlN0cmluZzwvYT48L3N0cm9uZz4oYnl0ZVtdJm5ic3A7YXNjaWksCisgICAgICAgICAgICAgICAgICAgIGludCZuYnNwO2hpYnl0ZSk8L2NvZGU+CisgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImJsb2NrIj48c3Ryb25nPkRlcHJlY2F0ZWQuPC9zdHJvbmc+Jm5ic3A7CisgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJibG9jayI+PGk+VGhpcyBtZXRob2QgZG9lcyBub3QgcHJvcGVybHkgY29udmVydCBieXRlcyBpbnRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhcmFjdGVycy4gIEFzIG9mIEpESyZuYnNwOzEuMSwgdGhlIHByZWZlcnJlZCB3YXkgdG8gZG8gdGhpcyBpcyB2aWEgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNvZGU+U3RyaW5nPC9jb2RlPiBjb25zdHJ1Y3RvcnMgdGhhdCB0YWtlIGEgPGEgaHJlZj0iLi4vLi4vamF2YS9uaW8vY2hhcnNldC9DaGFyc2V0Lmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBqYXZhLm5pby5jaGFyc2V0Ij48Y29kZT5DaGFyc2V0PC9jb2RlPjwvYT4sIGNoYXJzZXQgbmFtZSwgb3IgdGhhdCB1c2UgdGhlIHBsYXRmb3JtJ3MKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0IGNoYXJzZXQuPC9pPjwvZGl2PgorICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICAgICAgICA8L3RkPgorICAgICAgICAgICAgPC90cj4KKyAgICAgICAgICAgIDx0ciBjbGFzcz0iYWx0Q29sb3IiPgorICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iY29sT25lIj48Y29kZT48c3Ryb25nPjxhIGhyZWY9Ii4uLy4uL2phdmEvbGFuZy9TdHJpbmcuaHRtbCNTdHJpbmcoYnl0ZVtdLCBpbnQsIGludCkiPlN0cmluZzwvYT48L3N0cm9uZz4oYnl0ZVtdJm5ic3A7Ynl0ZXMsCisgICAgICAgICAgICAgICAgICAgIGludCZuYnNwO29mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgaW50Jm5ic3A7bGVuZ3RoKTwvY29kZT4KKyAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYmxvY2siPkNvbnN0cnVjdHMgYSBuZXcgPGNvZGU+U3RyaW5nPC9jb2RlPiBieSBkZWNvZGluZyB0aGUgc3BlY2lmaWVkIHN1YmFycmF5IG9mCisgICAgICAgICAgICAgICAgICAgICAgICBieXRlcyB1c2luZyB0aGUgcGxhdGZvcm0ncyBkZWZhdWx0IGNoYXJzZXQuPC9kaXY+CisgICAgICAgICAgICAgICAgPC90ZD4KKyAgICAgICAgICAgIDwvdHI+CisgICAgICAgICAgICA8dHIgY2xhc3M9InJvd0NvbG9yIj4KKyAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImNvbE9uZSI+PGNvZGU+PHN0cm9uZz48YSBocmVmPSIuLi8uLi9qYXZhL2xhbmcvU3RyaW5nLmh0bWwjU3RyaW5nKGJ5dGVbXSwgaW50LCBpbnQsIGphdmEubmlvLmNoYXJzZXQuQ2hhcnNldCkiPlN0cmluZzwvYT48L3N0cm9uZz4oYnl0ZVtdJm5ic3A7Ynl0ZXMsCisgICAgICAgICAgICAgICAgICAgIGludCZuYnNwO29mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgaW50Jm5ic3A7bGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi8uLi9qYXZhL25pby9jaGFyc2V0L0NoYXJzZXQuaHRtbCIgdGl0bGU9ImNsYXNzIGluIGphdmEubmlvLmNoYXJzZXQiPkNoYXJzZXQ8L2E+Jm5ic3A7Y2hhcnNldCk8L2NvZGU+CisgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImJsb2NrIj5Db25zdHJ1Y3RzIGEgbmV3IDxjb2RlPlN0cmluZzwvY29kZT4gYnkgZGVjb2RpbmcgdGhlIHNwZWNpZmllZCBzdWJhcnJheSBvZgorICAgICAgICAgICAgICAgICAgICAgICAgYnl0ZXMgdXNpbmcgdGhlIHNwZWNpZmllZCA8YSBocmVmPSIuLi8uLi9qYXZhL25pby9jaGFyc2V0L0NoYXJzZXQuaHRtbCIgdGl0bGU9ImNsYXNzIGluIGphdmEubmlvLmNoYXJzZXQiPmNoYXJzZXQ8L2E+LjwvZGl2PgorICAgICAgICAgICAgICAgIDwvdGQ+CisgICAgICAgICAgICA8L3RyPgorICAgICAgICAgICAgPHRyIGNsYXNzPSJhbHRDb2xvciI+CisgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjb2xPbmUiPjxjb2RlPjxzdHJvbmc+PGEgaHJlZj0iLi4vLi4vamF2YS9sYW5nL1N0cmluZy5odG1sI1N0cmluZyhieXRlW10sIGludCwgaW50LCBpbnQpIj5TdHJpbmc8L2E+PC9zdHJvbmc+KGJ5dGVbXSZuYnNwO2FzY2lpLAorICAgICAgICAgICAgICAgICAgICBpbnQmbmJzcDtoaWJ5dGUsCisgICAgICAgICAgICAgICAgICAgIGludCZuYnNwO29mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgaW50Jm5ic3A7Y291bnQpPC9jb2RlPgorICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJibG9jayI+PHN0cm9uZz5EZXByZWNhdGVkLjwvc3Ryb25nPiZuYnNwOworICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYmxvY2siPjxpPlRoaXMgbWV0aG9kIGRvZXMgbm90IHByb3Blcmx5IGNvbnZlcnQgYnl0ZXMgaW50byBjaGFyYWN0ZXJzLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFzIG9mIEpESyZuYnNwOzEuMSwgdGhlIHByZWZlcnJlZCB3YXkgdG8gZG8gdGhpcyBpcyB2aWEgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNvZGU+U3RyaW5nPC9jb2RlPiBjb25zdHJ1Y3RvcnMgdGhhdCB0YWtlIGEgPGEgaHJlZj0iLi4vLi4vamF2YS9uaW8vY2hhcnNldC9DaGFyc2V0Lmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBqYXZhLm5pby5jaGFyc2V0Ij48Y29kZT5DaGFyc2V0PC9jb2RlPjwvYT4sIGNoYXJzZXQgbmFtZSwgb3IgdGhhdCB1c2UgdGhlIHBsYXRmb3JtJ3MKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0IGNoYXJzZXQuPC9pPjwvZGl2PgorICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICAgICAgICA8L3RkPgorICAgICAgICAgICAgPC90cj4KKyAgICAgICAgICAgIDx0ciBjbGFzcz0icm93Q29sb3IiPgorICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iY29sT25lIj48Y29kZT48c3Ryb25nPjxhIGhyZWY9Ii4uLy4uL2phdmEvbGFuZy9TdHJpbmcuaHRtbCNTdHJpbmcoYnl0ZVtdLCBpbnQsIGludCwgamF2YS5sYW5nLlN0cmluZykiPlN0cmluZzwvYT48L3N0cm9uZz4oYnl0ZVtdJm5ic3A7Ynl0ZXMsCisgICAgICAgICAgICAgICAgICAgIGludCZuYnNwO29mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgaW50Jm5ic3A7bGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi8uLi9qYXZhL2xhbmcvU3RyaW5nLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBqYXZhLmxhbmciPlN0cmluZzwvYT4mbmJzcDtjaGFyc2V0TmFtZSk8L2NvZGU+CisgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImJsb2NrIj5Db25zdHJ1Y3RzIGEgbmV3IDxjb2RlPlN0cmluZzwvY29kZT4gYnkgZGVjb2RpbmcgdGhlIHNwZWNpZmllZCBzdWJhcnJheSBvZgorICAgICAgICAgICAgICAgICAgICAgICAgYnl0ZXMgdXNpbmcgdGhlIHNwZWNpZmllZCBjaGFyc2V0LjwvZGl2PgorICAgICAgICAgICAgICAgIDwvdGQ+CisgICAgICAgICAgICA8L3RyPgorICAgICAgICAgICAgPHRyIGNsYXNzPSJhbHRDb2xvciI+CisgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjb2xPbmUiPjxjb2RlPjxzdHJvbmc+PGEgaHJlZj0iLi4vLi4vamF2YS9sYW5nL1N0cmluZy5odG1sI1N0cmluZyhieXRlW10sIGphdmEubGFuZy5TdHJpbmcpIj5TdHJpbmc8L2E+PC9zdHJvbmc+KGJ5dGVbXSZuYnNwO2J5dGVzLAorICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi8uLi9qYXZhL2xhbmcvU3RyaW5nLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBqYXZhLmxhbmciPlN0cmluZzwvYT4mbmJzcDtjaGFyc2V0TmFtZSk8L2NvZGU+CisgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImJsb2NrIj5Db25zdHJ1Y3RzIGEgbmV3IDxjb2RlPlN0cmluZzwvY29kZT4gYnkgZGVjb2RpbmcgdGhlIHNwZWNpZmllZCBhcnJheSBvZiBieXRlcworICAgICAgICAgICAgICAgICAgICAgICAgdXNpbmcgdGhlIHNwZWNpZmllZCA8YSBocmVmPSIuLi8uLi9qYXZhL25pby9jaGFyc2V0L0NoYXJzZXQuaHRtbCIgdGl0bGU9ImNsYXNzIGluIGphdmEubmlvLmNoYXJzZXQiPmNoYXJzZXQ8L2E+LjwvZGl2PgorICAgICAgICAgICAgICAgIDwvdGQ+CisgICAgICAgICAgICA8L3RyPgorICAgICAgICAgICAgPHRyIGNsYXNzPSJyb3dDb2xvciI+CisgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjb2xPbmUiPjxjb2RlPjxzdHJvbmc+PGEgaHJlZj0iLi4vLi4vamF2YS9sYW5nL1N0cmluZy5odG1sI1N0cmluZyhjaGFyW10pIj5TdHJpbmc8L2E+PC9zdHJvbmc+KGNoYXJbXSZuYnNwO3ZhbHVlKTwvY29kZT4KKyAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYmxvY2siPkFsbG9jYXRlcyBhIG5ldyA8Y29kZT5TdHJpbmc8L2NvZGU+IHNvIHRoYXQgaXQgcmVwcmVzZW50cyB0aGUgc2VxdWVuY2Ugb2YKKyAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJhY3RlcnMgY3VycmVudGx5IGNvbnRhaW5lZCBpbiB0aGUgY2hhcmFjdGVyIGFycmF5IGFyZ3VtZW50LjwvZGl2PgorICAgICAgICAgICAgICAgIDwvdGQ+CisgICAgICAgICAgICA8L3RyPgorICAgICAgICAgICAgPHRyIGNsYXNzPSJhbHRDb2xvciI+CisgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjb2xPbmUiPjxjb2RlPjxzdHJvbmc+PGEgaHJlZj0iLi4vLi4vamF2YS9sYW5nL1N0cmluZy5odG1sI1N0cmluZyhjaGFyW10sIGludCwgaW50KSI+U3RyaW5nPC9hPjwvc3Ryb25nPihjaGFyW10mbmJzcDt2YWx1ZSwKKyAgICAgICAgICAgICAgICAgICAgaW50Jm5ic3A7b2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICBpbnQmbmJzcDtjb3VudCk8L2NvZGU+CisgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImJsb2NrIj5BbGxvY2F0ZXMgYSBuZXcgPGNvZGU+U3RyaW5nPC9jb2RlPiB0aGF0IGNvbnRhaW5zIGNoYXJhY3RlcnMgZnJvbSBhIHN1YmFycmF5CisgICAgICAgICAgICAgICAgICAgICAgICBvZiB0aGUgY2hhcmFjdGVyIGFycmF5IGFyZ3VtZW50LjwvZGl2PgorICAgICAgICAgICAgICAgIDwvdGQ+CisgICAgICAgICAgICA8L3RyPgorICAgICAgICAgICAgPHRyIGNsYXNzPSJyb3dDb2xvciI+CisgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjb2xPbmUiPjxjb2RlPjxzdHJvbmc+PGEgaHJlZj0iLi4vLi4vamF2YS9sYW5nL1N0cmluZy5odG1sI1N0cmluZyhpbnRbXSwgaW50LCBpbnQpIj5TdHJpbmc8L2E+PC9zdHJvbmc+KGludFtdJm5ic3A7Y29kZVBvaW50cywKKyAgICAgICAgICAgICAgICAgICAgaW50Jm5ic3A7b2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICBpbnQmbmJzcDtjb3VudCk8L2NvZGU+CisgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImJsb2NrIj5BbGxvY2F0ZXMgYSBuZXcgPGNvZGU+U3RyaW5nPC9jb2RlPiB0aGF0IGNvbnRhaW5zIGNoYXJhY3RlcnMgZnJvbSBhIHN1YmFycmF5CisgICAgICAgICAgICAgICAgICAgICAgICBvZiB0aGUgPGEgaHJlZj0iQ2hhcmFjdGVyLmh0bWwjdW5pY29kZSI+VW5pY29kZSBjb2RlIHBvaW50PC9hPiBhcnJheQorICAgICAgICAgICAgICAgICAgICAgICAgYXJndW1lbnQuPC9kaXY+CisgICAgICAgICAgICAgICAgPC90ZD4KKyAgICAgICAgICAgIDwvdHI+CisgICAgICAgICAgICA8dHIgY2xhc3M9ImFsdENvbG9yIj4KKyAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImNvbE9uZSI+PGNvZGU+PHN0cm9uZz48YSBocmVmPSIuLi8uLi9qYXZhL2xhbmcvU3RyaW5nLmh0bWwjU3RyaW5nKGphdmEubGFuZy5TdHJpbmcpIj5TdHJpbmc8L2E+PC9zdHJvbmc+KDxhIGhyZWY9Ii4uLy4uL2phdmEvbGFuZy9TdHJpbmcuaHRtbCIgdGl0bGU9ImNsYXNzIGluIGphdmEubGFuZyI+U3RyaW5nPC9hPiZuYnNwO29yaWdpbmFsKTwvY29kZT4KKyAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYmxvY2siPkluaXRpYWxpemVzIGEgbmV3bHkgY3JlYXRlZCA8Y29kZT5TdHJpbmc8L2NvZGU+IG9iamVjdCBzbyB0aGF0IGl0IHJlcHJlc2VudHMKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBzYW1lIHNlcXVlbmNlIG9mIGNoYXJhY3RlcnMgYXMgdGhlIGFyZ3VtZW50OyBpbiBvdGhlciB3b3JkcywgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICBuZXdseSBjcmVhdGVkIHN0cmluZyBpcyBhIGNvcHkgb2YgdGhlIGFyZ3VtZW50IHN0cmluZy48L2Rpdj4KKyAgICAgICAgICAgICAgICA8L3RkPgorICAgICAgICAgICAgPC90cj4KKyAgICAgICAgICAgIDx0ciBjbGFzcz0icm93Q29sb3IiPgorICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iY29sT25lIj48Y29kZT48c3Ryb25nPjxhIGhyZWY9Ii4uLy4uL2phdmEvbGFuZy9TdHJpbmcuaHRtbCNTdHJpbmcoamF2YS5sYW5nLlN0cmluZ0J1ZmZlcikiPlN0cmluZzwvYT48L3N0cm9uZz4oPGEgaHJlZj0iLi4vLi4vamF2YS9sYW5nL1N0cmluZ0J1ZmZlci5odG1sIiB0aXRsZT0iY2xhc3MgaW4gamF2YS5sYW5nIj5TdHJpbmdCdWZmZXI8L2E+Jm5ic3A7YnVmZmVyKTwvY29kZT4KKyAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYmxvY2siPkFsbG9jYXRlcyBhIG5ldyBzdHJpbmcgdGhhdCBjb250YWlucyB0aGUgc2VxdWVuY2Ugb2YgY2hhcmFjdGVycworICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudGx5IGNvbnRhaW5lZCBpbiB0aGUgc3RyaW5nIGJ1ZmZlciBhcmd1bWVudC48L2Rpdj4KKyAgICAgICAgICAgICAgICA8L3RkPgorICAgICAgICAgICAgPC90cj4KKyAgICAgICAgICAgIDx0ciBjbGFzcz0iYWx0Q29sb3IiPgorICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iY29sT25lIj48Y29kZT48c3Ryb25nPjxhIGhyZWY9Ii4uLy4uL2phdmEvbGFuZy9TdHJpbmcuaHRtbCNTdHJpbmcoamF2YS5sYW5nLlN0cmluZ0J1aWxkZXIpIj5TdHJpbmc8L2E+PC9zdHJvbmc+KDxhIGhyZWY9Ii4uLy4uL2phdmEvbGFuZy9TdHJpbmdCdWlsZGVyLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBqYXZhLmxhbmciPlN0cmluZ0J1aWxkZXI8L2E+Jm5ic3A7YnVpbGRlcik8L2NvZGU+CisgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImJsb2NrIj5BbGxvY2F0ZXMgYSBuZXcgc3RyaW5nIHRoYXQgY29udGFpbnMgdGhlIHNlcXVlbmNlIG9mIGNoYXJhY3RlcnMKKyAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRseSBjb250YWluZWQgaW4gdGhlIHN0cmluZyBidWlsZGVyIGFyZ3VtZW50LjwvZGl2PgorICAgICAgICAgICAgICAgIDwvdGQ+CisgICAgICAgICAgICA8L3RyPgorICAgICAgICA8L3RhYmxlPgorICAgIDwvbGk+Cis8L3VsPgorPCEtLSA9PT09PT09PT09IE1FVEhPRCBTVU1NQVJZID09PT09PT09PT09IC0tPgorPHVsIGNsYXNzPSJibG9ja0xpc3QiPgorPGxpIGNsYXNzPSJibG9ja0xpc3QiPjxhIG5hbWU9Im1ldGhvZF9zdW1tYXJ5Ij4KKyAgICA8IS0tICAgLS0+Cis8L2E+Cis8aDM+TWV0aG9kIFN1bW1hcnk8L2gzPgorPHRhYmxlIGNsYXNzPSJvdmVydmlld1N1bW1hcnkiIGJvcmRlcj0iMCIgY2VsbHBhZGRpbmc9IjMiIGNlbGxzcGFjaW5nPSIwIiBzdW1tYXJ5PSJNZXRob2QgU3VtbWFyeSB0YWJsZSwgbGlzdGluZyBtZXRob2RzLCBhbmQgYW4gZXhwbGFuYXRpb24iPgorPGNhcHRpb24+PHNwYW4+TWV0aG9kczwvc3Bhbj48c3BhbiBjbGFzcz0idGFiRW5kIj4mbmJzcDs8L3NwYW4+PC9jYXB0aW9uPgorPHRyPgorICAgIDx0aCBjbGFzcz0iY29sRmlyc3QiIHNjb3BlPSJjb2wiPk1vZGlmaWVyIGFuZCBUeXBlPC90aD4KKyAgICA8dGggY2xhc3M9ImNvbExhc3QiIHNjb3BlPSJjb2wiPk1ldGhvZCBhbmQgRGVzY3JpcHRpb248L3RoPgorPC90cj4KKzx0ciBjbGFzcz0iYWx0Q29sb3IiPgorICAgIDx0ZCBjbGFzcz0iY29sRmlyc3QiPjxjb2RlPmNoYXI8L2NvZGU+PC90ZD4KKyAgICA8dGQgY2xhc3M9ImNvbExhc3QiPjxjb2RlPjxzdHJvbmc+PGEgaHJlZj0iLi4vLi4vamF2YS9sYW5nL1N0cmluZy5odG1sI2NoYXJBdChpbnQpIj5jaGFyQXQ8L2E+PC9zdHJvbmc+KGludCZuYnNwO2luZGV4KTwvY29kZT4KKyAgICAgICAgPGRpdiBjbGFzcz0iYmxvY2siPlJldHVybnMgdGhlIDxjb2RlPmNoYXI8L2NvZGU+IHZhbHVlIGF0IHRoZQorICAgICAgICAgICAgc3BlY2lmaWVkIGluZGV4LjwvZGl2PgorICAgIDwvdGQ+Cis8L3RyPgorPHRyIGNsYXNzPSJyb3dDb2xvciI+CisgICAgPHRkIGNsYXNzPSJjb2xGaXJzdCI+PGNvZGU+aW50PC9jb2RlPjwvdGQ+CisgICAgPHRkIGNsYXNzPSJjb2xMYXN0Ij48Y29kZT48c3Ryb25nPjxhIGhyZWY9Ii4uLy4uL2phdmEvbGFuZy9TdHJpbmcuaHRtbCNjb2RlUG9pbnRBdChpbnQpIj5jb2RlUG9pbnRBdDwvYT48L3N0cm9uZz4oaW50Jm5ic3A7aW5kZXgpPC9jb2RlPgorICAgICAgICA8ZGl2IGNsYXNzPSJibG9jayI+UmV0dXJucyB0aGUgY2hhcmFjdGVyIChVbmljb2RlIGNvZGUgcG9pbnQpIGF0IHRoZSBzcGVjaWZpZWQKKyAgICAgICAgICAgIGluZGV4LjwvZGl2PgorICAgIDwvdGQ+Cis8L3RyPgorPHRyIGNsYXNzPSJhbHRDb2xvciI+CisgICAgPHRkIGNsYXNzPSJjb2xGaXJzdCI+PGNvZGU+aW50PC9jb2RlPjwvdGQ+CisgICAgPHRkIGNsYXNzPSJjb2xMYXN0Ij48Y29kZT48c3Ryb25nPjxhIGhyZWY9Ii4uLy4uL2phdmEvbGFuZy9TdHJpbmcuaHRtbCNjb2RlUG9pbnRCZWZvcmUoaW50KSI+Y29kZVBvaW50QmVmb3JlPC9hPjwvc3Ryb25nPihpbnQmbmJzcDtpbmRleCk8L2NvZGU+CisgICAgICAgIDxkaXYgY2xhc3M9ImJsb2NrIj5SZXR1cm5zIHRoZSBjaGFyYWN0ZXIgKFVuaWNvZGUgY29kZSBwb2ludCkgYmVmb3JlIHRoZSBzcGVjaWZpZWQKKyAgICAgICAgICAgIGluZGV4LjwvZGl2PgorICAgIDwvdGQ+Cis8L3RyPgorPHRyIGNsYXNzPSJyb3dDb2xvciI+CisgICAgPHRkIGNsYXNzPSJjb2xGaXJzdCI+PGNvZGU+aW50PC9jb2RlPjwvdGQ+CisgICAgPHRkIGNsYXNzPSJjb2xMYXN0Ij48Y29kZT48c3Ryb25nPjxhIGhyZWY9Ii4uLy4uL2phdmEvbGFuZy9TdHJpbmcuaHRtbCNjb2RlUG9pbnRDb3VudChpbnQsIGludCkiPmNvZGVQb2ludENvdW50PC9hPjwvc3Ryb25nPihpbnQmbmJzcDtiZWdpbkluZGV4LAorICAgICAgICBpbnQmbmJzcDtlbmRJbmRleCk8L2NvZGU+CisgICAgICAgIDxkaXYgY2xhc3M9ImJsb2NrIj5SZXR1cm5zIHRoZSBudW1iZXIgb2YgVW5pY29kZSBjb2RlIHBvaW50cyBpbiB0aGUgc3BlY2lmaWVkIHRleHQKKyAgICAgICAgICAgIHJhbmdlIG9mIHRoaXMgPGNvZGU+U3RyaW5nPC9jb2RlPi48L2Rpdj4KKyAgICA8L3RkPgorPC90cj4KKzx0ciBjbGFzcz0iYWx0Q29sb3IiPgorICAgIDx0ZCBjbGFzcz0iY29sRmlyc3QiPjxjb2RlPmludDwvY29kZT48L3RkPgorICAgIDx0ZCBjbGFzcz0iY29sTGFzdCI+PGNvZGU+PHN0cm9uZz48YSBocmVmPSIuLi8uLi9qYXZhL2xhbmcvU3RyaW5nLmh0bWwjY29tcGFyZVRvKGphdmEubGFuZy5TdHJpbmcpIj5jb21wYXJlVG88L2E+PC9zdHJvbmc+KDxhIGhyZWY9Ii4uLy4uL2phdmEvbGFuZy9TdHJpbmcuaHRtbCIgdGl0bGU9ImNsYXNzIGluIGphdmEubGFuZyI+U3RyaW5nPC9hPiZuYnNwO2Fub3RoZXJTdHJpbmcpPC9jb2RlPgorICAgICAgICA8ZGl2IGNsYXNzPSJibG9jayI+Q29tcGFyZXMgdHdvIHN0cmluZ3MgbGV4aWNvZ3JhcGhpY2FsbHkuPC9kaXY+CisgICAgPC90ZD4KKzwvdHI+Cis8dHIgY2xhc3M9InJvd0NvbG9yIj4KKyAgICA8dGQgY2xhc3M9ImNvbEZpcnN0Ij48Y29kZT5pbnQ8L2NvZGU+PC90ZD4KKyAgICA8dGQgY2xhc3M9ImNvbExhc3QiPjxjb2RlPjxzdHJvbmc+PGEgaHJlZj0iLi4vLi4vamF2YS9sYW5nL1N0cmluZy5odG1sI2NvbXBhcmVUb0lnbm9yZUNhc2UoamF2YS5sYW5nLlN0cmluZykiPmNvbXBhcmVUb0lnbm9yZUNhc2U8L2E+PC9zdHJvbmc+KDxhIGhyZWY9Ii4uLy4uL2phdmEvbGFuZy9TdHJpbmcuaHRtbCIgdGl0bGU9ImNsYXNzIGluIGphdmEubGFuZyI+U3RyaW5nPC9hPiZuYnNwO3N0cik8L2NvZGU+CisgICAgICAgIDxkaXYgY2xhc3M9ImJsb2NrIj5Db21wYXJlcyB0d28gc3RyaW5ncyBsZXhpY29ncmFwaGljYWxseSwgaWdub3JpbmcgY2FzZQorICAgICAgICAgICAgZGlmZmVyZW5jZXMuPC9kaXY+CisgICAgPC90ZD4KKzwvdHI+Cis8dHIgY2xhc3M9ImFsdENvbG9yIj4KKyAgICA8dGQgY2xhc3M9ImNvbEZpcnN0Ij48Y29kZT48YSBocmVmPSIuLi8uLi9qYXZhL2xhbmcvU3RyaW5nLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBqYXZhLmxhbmciPlN0cmluZzwvYT48L2NvZGU+PC90ZD4KKyAgICA8dGQgY2xhc3M9ImNvbExhc3QiPjxjb2RlPjxzdHJvbmc+PGEgaHJlZj0iLi4vLi4vamF2YS9sYW5nL1N0cmluZy5odG1sI2NvbmNhdChqYXZhLmxhbmcuU3RyaW5nKSI+Y29uY2F0PC9hPjwvc3Ryb25nPig8YSBocmVmPSIuLi8uLi9qYXZhL2xhbmcvU3RyaW5nLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBqYXZhLmxhbmciPlN0cmluZzwvYT4mbmJzcDtzdHIpPC9jb2RlPgorICAgICAgICA8ZGl2IGNsYXNzPSJibG9jayI+Q29uY2F0ZW5hdGVzIHRoZSBzcGVjaWZpZWQgc3RyaW5nIHRvIHRoZSBlbmQgb2YgdGhpcyBzdHJpbmcuPC9kaXY+CisgICAgPC90ZD4KKzwvdHI+Cis8dHIgY2xhc3M9InJvd0NvbG9yIj4KKyAgICA8dGQgY2xhc3M9ImNvbEZpcnN0Ij48Y29kZT5ib29sZWFuPC9jb2RlPjwvdGQ+CisgICAgPHRkIGNsYXNzPSJjb2xMYXN0Ij48Y29kZT48c3Ryb25nPjxhIGhyZWY9Ii4uLy4uL2phdmEvbGFuZy9TdHJpbmcuaHRtbCNjb250YWlucyhqYXZhLmxhbmcuQ2hhclNlcXVlbmNlKSI+Y29udGFpbnM8L2E+PC9zdHJvbmc+KDxhIGhyZWY9Ii4uLy4uL2phdmEvbGFuZy9DaGFyU2VxdWVuY2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBqYXZhLmxhbmciPkNoYXJTZXF1ZW5jZTwvYT4mbmJzcDtzKTwvY29kZT4KKyAgICAgICAgPGRpdiBjbGFzcz0iYmxvY2siPlJldHVybnMgdHJ1ZSBpZiBhbmQgb25seSBpZiB0aGlzIHN0cmluZyBjb250YWlucyB0aGUgc3BlY2lmaWVkCisgICAgICAgICAgICBzZXF1ZW5jZSBvZiBjaGFyIHZhbHVlcy48L2Rpdj4KKyAgICA8L3RkPgorPC90cj4KKzx0ciBjbGFzcz0iYWx0Q29sb3IiPgorICAgIDx0ZCBjbGFzcz0iY29sRmlyc3QiPjxjb2RlPmJvb2xlYW48L2NvZGU+PC90ZD4KKyAgICA8dGQgY2xhc3M9ImNvbExhc3QiPjxjb2RlPjxzdHJvbmc+PGEgaHJlZj0iLi4vLi4vamF2YS9sYW5nL1N0cmluZy5odG1sI2NvbnRlbnRFcXVhbHMoamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSkiPmNvbnRlbnRFcXVhbHM8L2E+PC9zdHJvbmc+KDxhIGhyZWY9Ii4uLy4uL2phdmEvbGFuZy9DaGFyU2VxdWVuY2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBqYXZhLmxhbmciPkNoYXJTZXF1ZW5jZTwvYT4mbmJzcDtjcyk8L2NvZGU+CisgICAgICAgIDxkaXYgY2xhc3M9ImJsb2NrIj5Db21wYXJlcyB0aGlzIHN0cmluZyB0byB0aGUgc3BlY2lmaWVkIDxjb2RlPkNoYXJTZXF1ZW5jZTwvY29kZT4uPC9kaXY+CisgICAgPC90ZD4KKzwvdHI+Cis8dHIgY2xhc3M9InJvd0NvbG9yIj4KKyAgICA8dGQgY2xhc3M9ImNvbEZpcnN0Ij48Y29kZT5ib29sZWFuPC9jb2RlPjwvdGQ+CisgICAgPHRkIGNsYXNzPSJjb2xMYXN0Ij48Y29kZT48c3Ryb25nPjxhIGhyZWY9Ii4uLy4uL2phdmEvbGFuZy9TdHJpbmcuaHRtbCNjb250ZW50RXF1YWxzKGphdmEubGFuZy5TdHJpbmdCdWZmZXIpIj5jb250ZW50RXF1YWxzPC9hPjwvc3Ryb25nPig8YSBocmVmPSIuLi8uLi9qYXZhL2xhbmcvU3RyaW5nQnVmZmVyLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBqYXZhLmxhbmciPlN0cmluZ0J1ZmZlcjwvYT4mbmJzcDtzYik8L2NvZGU+CisgICAgICAgIDxkaXYgY2xhc3M9ImJsb2NrIj5Db21wYXJlcyB0aGlzIHN0cmluZyB0byB0aGUgc3BlY2lmaWVkIDxjb2RlPlN0cmluZ0J1ZmZlcjwvY29kZT4uPC9kaXY+CisgICAgPC90ZD4KKzwvdHI+Cis8dHIgY2xhc3M9ImFsdENvbG9yIj4KKyAgICA8dGQgY2xhc3M9ImNvbEZpcnN0Ij48Y29kZT5zdGF0aWMgPGEgaHJlZj0iLi4vLi4vamF2YS9sYW5nL1N0cmluZy5odG1sIiB0aXRsZT0iY2xhc3MgaW4gamF2YS5sYW5nIj5TdHJpbmc8L2E+PC9jb2RlPjwvdGQ+CisgICAgPHRkIGNsYXNzPSJjb2xMYXN0Ij48Y29kZT48c3Ryb25nPjxhIGhyZWY9Ii4uLy4uL2phdmEvbGFuZy9TdHJpbmcuaHRtbCNjb3B5VmFsdWVPZihjaGFyW10pIj5jb3B5VmFsdWVPZjwvYT48L3N0cm9uZz4oY2hhcltdJm5ic3A7ZGF0YSk8L2NvZGU+CisgICAgICAgIDxkaXYgY2xhc3M9ImJsb2NrIj5SZXR1cm5zIGEgU3RyaW5nIHRoYXQgcmVwcmVzZW50cyB0aGUgY2hhcmFjdGVyIHNlcXVlbmNlIGluIHRoZQorICAgICAgICAgICAgYXJyYXkgc3BlY2lmaWVkLjwvZGl2PgorICAgIDwvdGQ+Cis8L3RyPgorPHRyIGNsYXNzPSJyb3dDb2xvciI+CisgICAgPHRkIGNsYXNzPSJjb2xGaXJzdCI+PGNvZGU+c3RhdGljIDxhIGhyZWY9Ii4uLy4uL2phdmEvbGFuZy9TdHJpbmcuaHRtbCIgdGl0bGU9ImNsYXNzIGluIGphdmEubGFuZyI+U3RyaW5nPC9hPjwvY29kZT48L3RkPgorICAgIDx0ZCBjbGFzcz0iY29sTGFzdCI+PGNvZGU+PHN0cm9uZz48YSBocmVmPSIuLi8uLi9qYXZhL2xhbmcvU3RyaW5nLmh0bWwjY29weVZhbHVlT2YoY2hhcltdLCBpbnQsIGludCkiPmNvcHlWYWx1ZU9mPC9hPjwvc3Ryb25nPihjaGFyW10mbmJzcDtkYXRhLAorICAgICAgICBpbnQmbmJzcDtvZmZzZXQsCisgICAgICAgIGludCZuYnNwO2NvdW50KTwvY29kZT4KKyAgICAgICAgPGRpdiBjbGFzcz0iYmxvY2siPlJldHVybnMgYSBTdHJpbmcgdGhhdCByZXByZXNlbnRzIHRoZSBjaGFyYWN0ZXIgc2VxdWVuY2UgaW4gdGhlCisgICAgICAgICAgICBhcnJheSBzcGVjaWZpZWQuPC9kaXY+CisgICAgPC90ZD4KKzwvdHI+Cis8dHIgY2xhc3M9ImFsdENvbG9yIj4KKyAgICA8dGQgY2xhc3M9ImNvbEZpcnN0Ij48Y29kZT5ib29sZWFuPC9jb2RlPjwvdGQ+CisgICAgPHRkIGNsYXNzPSJjb2xMYXN0Ij48Y29kZT48c3Ryb25nPjxhIGhyZWY9Ii4uLy4uL2phdmEvbGFuZy9TdHJpbmcuaHRtbCNlbmRzV2l0aChqYXZhLmxhbmcuU3RyaW5nKSI+ZW5kc1dpdGg8L2E+PC9zdHJvbmc+KDxhIGhyZWY9Ii4uLy4uL2phdmEvbGFuZy9TdHJpbmcuaHRtbCIgdGl0bGU9ImNsYXNzIGluIGphdmEubGFuZyI+U3RyaW5nPC9hPiZuYnNwO3N1ZmZpeCk8L2NvZGU+CisgICAgICAgIDxkaXYgY2xhc3M9ImJsb2NrIj5UZXN0cyBpZiB0aGlzIHN0cmluZyBlbmRzIHdpdGggdGhlIHNwZWNpZmllZCBzdWZmaXguPC9kaXY+CisgICAgPC90ZD4KKzwvdHI+Cis8dHIgY2xhc3M9InJvd0NvbG9yIj4KKyAgICA8dGQgY2xhc3M9ImNvbEZpcnN0Ij48Y29kZT5ib29sZWFuPC9jb2RlPjwvdGQ+CisgICAgPHRkIGNsYXNzPSJjb2xMYXN0Ij48Y29kZT48c3Ryb25nPjxhIGhyZWY9Ii4uLy4uL2phdmEvbGFuZy9TdHJpbmcuaHRtbCNlcXVhbHMoamF2YS5sYW5nLk9iamVjdCkiPmVxdWFsczwvYT48L3N0cm9uZz4oPGEgaHJlZj0iLi4vLi4vamF2YS9sYW5nL09iamVjdC5odG1sIiB0aXRsZT0iY2xhc3MgaW4gamF2YS5sYW5nIj5PYmplY3Q8L2E+Jm5ic3A7YW5PYmplY3QpPC9jb2RlPgorICAgICAgICA8ZGl2IGNsYXNzPSJibG9jayI+Q29tcGFyZXMgdGhpcyBzdHJpbmcgdG8gdGhlIHNwZWNpZmllZCBvYmplY3QuPC9kaXY+CisgICAgPC90ZD4KKzwvdHI+Cis8dHIgY2xhc3M9ImFsdENvbG9yIj4KKyAgICA8dGQgY2xhc3M9ImNvbEZpcnN0Ij48Y29kZT5ib29sZWFuPC9jb2RlPjwvdGQ+CisgICAgPHRkIGNsYXNzPSJjb2xMYXN0Ij48Y29kZT48c3Ryb25nPjxhIGhyZWY9Ii4uLy4uL2phdmEvbGFuZy9TdHJpbmcuaHRtbCNlcXVhbHNJZ25vcmVDYXNlKGphdmEubGFuZy5TdHJpbmcpIj5lcXVhbHNJZ25vcmVDYXNlPC9hPjwvc3Ryb25nPig8YSBocmVmPSIuLi8uLi9qYXZhL2xhbmcvU3RyaW5nLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBqYXZhLmxhbmciPlN0cmluZzwvYT4mbmJzcDthbm90aGVyU3RyaW5nKTwvY29kZT4KKyAgICAgICAgPGRpdiBjbGFzcz0iYmxvY2siPkNvbXBhcmVzIHRoaXMgPGNvZGU+U3RyaW5nPC9jb2RlPiB0byBhbm90aGVyIDxjb2RlPlN0cmluZzwvY29kZT4sIGlnbm9yaW5nIGNhc2UKKyAgICAgICAgICAgIGNvbnNpZGVyYXRpb25zLjwvZGl2PgorICAgIDwvdGQ+Cis8L3RyPgorPHRyIGNsYXNzPSJyb3dDb2xvciI+CisgICAgPHRkIGNsYXNzPSJjb2xGaXJzdCI+PGNvZGU+c3RhdGljIDxhIGhyZWY9Ii4uLy4uL2phdmEvbGFuZy9TdHJpbmcuaHRtbCIgdGl0bGU9ImNsYXNzIGluIGphdmEubGFuZyI+U3RyaW5nPC9hPjwvY29kZT48L3RkPgorICAgIDx0ZCBjbGFzcz0iY29sTGFzdCI+PGNvZGU+PHN0cm9uZz48YSBocmVmPSIuLi8uLi9qYXZhL2xhbmcvU3RyaW5nLmh0bWwjZm9ybWF0KGphdmEudXRpbC5Mb2NhbGUsIGphdmEubGFuZy5TdHJpbmcsIGphdmEubGFuZy5PYmplY3QuLi4pIj5mb3JtYXQ8L2E+PC9zdHJvbmc+KDxhIGhyZWY9Ii4uLy4uL2phdmEvdXRpbC9Mb2NhbGUuaHRtbCIgdGl0bGU9ImNsYXNzIGluIGphdmEudXRpbCI+TG9jYWxlPC9hPiZuYnNwO2wsCisgICAgICAgIDxhIGhyZWY9Ii4uLy4uL2phdmEvbGFuZy9TdHJpbmcuaHRtbCIgdGl0bGU9ImNsYXNzIGluIGphdmEubGFuZyI+U3RyaW5nPC9hPiZuYnNwO2Zvcm1hdCwKKyAgICAgICAgPGEgaHJlZj0iLi4vLi4vamF2YS9sYW5nL09iamVjdC5odG1sIiB0aXRsZT0iY2xhc3MgaW4gamF2YS5sYW5nIj5PYmplY3Q8L2E+Li4uJm5ic3A7YXJncyk8L2NvZGU+CisgICAgICAgIDxkaXYgY2xhc3M9ImJsb2NrIj5SZXR1cm5zIGEgZm9ybWF0dGVkIHN0cmluZyB1c2luZyB0aGUgc3BlY2lmaWVkIGxvY2FsZSwgZm9ybWF0IHN0cmluZywKKyAgICAgICAgICAgIGFuZCBhcmd1bWVudHMuPC9kaXY+CisgICAgPC90ZD4KKzwvdHI+Cis8dHIgY2xhc3M9ImFsdENvbG9yIj4KKyAgICA8dGQgY2xhc3M9ImNvbEZpcnN0Ij48Y29kZT5zdGF0aWMgPGEgaHJlZj0iLi4vLi4vamF2YS9sYW5nL1N0cmluZy5odG1sIiB0aXRsZT0iY2xhc3MgaW4gamF2YS5sYW5nIj5TdHJpbmc8L2E+PC9jb2RlPjwvdGQ+CisgICAgPHRkIGNsYXNzPSJjb2xMYXN0Ij48Y29kZT48c3Ryb25nPjxhIGhyZWY9Ii4uLy4uL2phdmEvbGFuZy9TdHJpbmcuaHRtbCNmb3JtYXQoamF2YS5sYW5nLlN0cmluZywgamF2YS5sYW5nLk9iamVjdC4uLikiPmZvcm1hdDwvYT48L3N0cm9uZz4oPGEgaHJlZj0iLi4vLi4vamF2YS9sYW5nL1N0cmluZy5odG1sIiB0aXRsZT0iY2xhc3MgaW4gamF2YS5sYW5nIj5TdHJpbmc8L2E+Jm5ic3A7Zm9ybWF0LAorICAgICAgICA8YSBocmVmPSIuLi8uLi9qYXZhL2xhbmcvT2JqZWN0Lmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBqYXZhLmxhbmciPk9iamVjdDwvYT4uLi4mbmJzcDthcmdzKTwvY29kZT4KKyAgICAgICAgPGRpdiBjbGFzcz0iYmxvY2siPlJldHVybnMgYSBmb3JtYXR0ZWQgc3RyaW5nIHVzaW5nIHRoZSBzcGVjaWZpZWQgZm9ybWF0IHN0cmluZyBhbmQKKyAgICAgICAgICAgIGFyZ3VtZW50cy48L2Rpdj4KKyAgICA8L3RkPgorPC90cj4KKzx0ciBjbGFzcz0icm93Q29sb3IiPgorICAgIDx0ZCBjbGFzcz0iY29sRmlyc3QiPjxjb2RlPmJ5dGVbXTwvY29kZT48L3RkPgorICAgIDx0ZCBjbGFzcz0iY29sTGFzdCI+PGNvZGU+PHN0cm9uZz48YSBocmVmPSIuLi8uLi9qYXZhL2xhbmcvU3RyaW5nLmh0bWwjZ2V0Qnl0ZXMoKSI+Z2V0Qnl0ZXM8L2E+PC9zdHJvbmc+KCk8L2NvZGU+CisgICAgICAgIDxkaXYgY2xhc3M9ImJsb2NrIj5FbmNvZGVzIHRoaXMgPGNvZGU+U3RyaW5nPC9jb2RlPiBpbnRvIGEgc2VxdWVuY2Ugb2YgYnl0ZXMgdXNpbmcgdGhlCisgICAgICAgICAgICBwbGF0Zm9ybSdzIGRlZmF1bHQgY2hhcnNldCwgc3RvcmluZyB0aGUgcmVzdWx0IGludG8gYSBuZXcgYnl0ZSBhcnJheS48L2Rpdj4KKyAgICA8L3RkPgorPC90cj4KKzx0ciBjbGFzcz0iYWx0Q29sb3IiPgorICAgIDx0ZCBjbGFzcz0iY29sRmlyc3QiPjxjb2RlPmJ5dGVbXTwvY29kZT48L3RkPgorICAgIDx0ZCBjbGFzcz0iY29sTGFzdCI+PGNvZGU+PHN0cm9uZz48YSBocmVmPSIuLi8uLi9qYXZhL2xhbmcvU3RyaW5nLmh0bWwjZ2V0Qnl0ZXMoamF2YS5uaW8uY2hhcnNldC5DaGFyc2V0KSI+Z2V0Qnl0ZXM8L2E+PC9zdHJvbmc+KDxhIGhyZWY9Ii4uLy4uL2phdmEvbmlvL2NoYXJzZXQvQ2hhcnNldC5odG1sIiB0aXRsZT0iY2xhc3MgaW4gamF2YS5uaW8uY2hhcnNldCI+Q2hhcnNldDwvYT4mbmJzcDtjaGFyc2V0KTwvY29kZT4KKyAgICAgICAgPGRpdiBjbGFzcz0iYmxvY2siPkVuY29kZXMgdGhpcyA8Y29kZT5TdHJpbmc8L2NvZGU+IGludG8gYSBzZXF1ZW5jZSBvZiBieXRlcyB1c2luZyB0aGUgZ2l2ZW4KKyAgICAgICAgICAgIDxhIGhyZWY9Ii4uLy4uL2phdmEvbmlvL2NoYXJzZXQvQ2hhcnNldC5odG1sIiB0aXRsZT0iY2xhc3MgaW4gamF2YS5uaW8uY2hhcnNldCI+Y2hhcnNldDwvYT4sIHN0b3JpbmcgdGhlIHJlc3VsdCBpbnRvIGEKKyAgICAgICAgICAgIG5ldyBieXRlIGFycmF5LjwvZGl2PgorICAgIDwvdGQ+Cis8L3RyPgorPHRyIGNsYXNzPSJyb3dDb2xvciI+CisgICAgPHRkIGNsYXNzPSJjb2xGaXJzdCI+PGNvZGU+dm9pZDwvY29kZT48L3RkPgorICAgIDx0ZCBjbGFzcz0iY29sTGFzdCI+PGNvZGU+PHN0cm9uZz48YSBocmVmPSIuLi8uLi9qYXZhL2xhbmcvU3RyaW5nLmh0bWwjZ2V0Qnl0ZXMoaW50LCBpbnQsIGJ5dGVbXSwgaW50KSI+Z2V0Qnl0ZXM8L2E+PC9zdHJvbmc+KGludCZuYnNwO3NyY0JlZ2luLAorICAgICAgICBpbnQmbmJzcDtzcmNFbmQsCisgICAgICAgIGJ5dGVbXSZuYnNwO2RzdCwKKyAgICAgICAgaW50Jm5ic3A7ZHN0QmVnaW4pPC9jb2RlPgorICAgICAgICA8ZGl2IGNsYXNzPSJibG9jayI+PHN0cm9uZz5EZXByZWNhdGVkLjwvc3Ryb25nPiZuYnNwOworICAgICAgICAgICAgPGRpdiBjbGFzcz0iYmxvY2siPjxpPlRoaXMgbWV0aG9kIGRvZXMgbm90IHByb3Blcmx5IGNvbnZlcnQgY2hhcmFjdGVycyBpbnRvCisgICAgICAgICAgICAgICAgYnl0ZXMuICBBcyBvZiBKREsmbmJzcDsxLjEsIHRoZSBwcmVmZXJyZWQgd2F5IHRvIGRvIHRoaXMgaXMgdmlhIHRoZQorICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uLy4uL2phdmEvbGFuZy9TdHJpbmcuaHRtbCNnZXRCeXRlcygpIj48Y29kZT5nZXRCeXRlcygpPC9jb2RlPjwvYT4gbWV0aG9kLCB3aGljaCB1c2VzIHRoZSBwbGF0Zm9ybSdzIGRlZmF1bHQgY2hhcnNldC48L2k+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvdGQ+Cis8L3RyPgorPHRyIGNsYXNzPSJhbHRDb2xvciI+CisgICAgPHRkIGNsYXNzPSJjb2xGaXJzdCI+PGNvZGU+Ynl0ZVtdPC9jb2RlPjwvdGQ+CisgICAgPHRkIGNsYXNzPSJjb2xMYXN0Ij48Y29kZT48c3Ryb25nPjxhIGhyZWY9Ii4uLy4uL2phdmEvbGFuZy9TdHJpbmcuaHRtbCNnZXRCeXRlcyhqYXZhLmxhbmcuU3RyaW5nKSI+Z2V0Qnl0ZXM8L2E+PC9zdHJvbmc+KDxhIGhyZWY9Ii4uLy4uL2phdmEvbGFuZy9TdHJpbmcuaHRtbCIgdGl0bGU9ImNsYXNzIGluIGphdmEubGFuZyI+U3RyaW5nPC9hPiZuYnNwO2NoYXJzZXROYW1lKTwvY29kZT4KKyAgICAgICAgPGRpdiBjbGFzcz0iYmxvY2siPkVuY29kZXMgdGhpcyA8Y29kZT5TdHJpbmc8L2NvZGU+IGludG8gYSBzZXF1ZW5jZSBvZiBieXRlcyB1c2luZyB0aGUgbmFtZWQKKyAgICAgICAgICAgIGNoYXJzZXQsIHN0b3JpbmcgdGhlIHJlc3VsdCBpbnRvIGEgbmV3IGJ5dGUgYXJyYXkuPC9kaXY+CisgICAgPC90ZD4KKzwvdHI+Cis8dHIgY2xhc3M9InJvd0NvbG9yIj4KKyAgICA8dGQgY2xhc3M9ImNvbEZpcnN0Ij48Y29kZT52b2lkPC9jb2RlPjwvdGQ+CisgICAgPHRkIGNsYXNzPSJjb2xMYXN0Ij48Y29kZT48c3Ryb25nPjxhIGhyZWY9Ii4uLy4uL2phdmEvbGFuZy9TdHJpbmcuaHRtbCNnZXRDaGFycyhpbnQsIGludCwgY2hhcltdLCBpbnQpIj5nZXRDaGFyczwvYT48L3N0cm9uZz4oaW50Jm5ic3A7c3JjQmVnaW4sCisgICAgICAgIGludCZuYnNwO3NyY0VuZCwKKyAgICAgICAgY2hhcltdJm5ic3A7ZHN0LAorICAgICAgICBpbnQmbmJzcDtkc3RCZWdpbik8L2NvZGU+CisgICAgICAgIDxkaXYgY2xhc3M9ImJsb2NrIj5Db3BpZXMgY2hhcmFjdGVycyBmcm9tIHRoaXMgc3RyaW5nIGludG8gdGhlIGRlc3RpbmF0aW9uIGNoYXJhY3RlcgorICAgICAgICAgICAgYXJyYXkuPC9kaXY+CisgICAgPC90ZD4KKzwvdHI+Cis8dHIgY2xhc3M9ImFsdENvbG9yIj4KKyAgICA8dGQgY2xhc3M9ImNvbEZpcnN0Ij48Y29kZT5pbnQ8L2NvZGU+PC90ZD4KKyAgICA8dGQgY2xhc3M9ImNvbExhc3QiPjxjb2RlPjxzdHJvbmc+PGEgaHJlZj0iLi4vLi4vamF2YS9sYW5nL1N0cmluZy5odG1sI2hhc2hDb2RlKCkiPmhhc2hDb2RlPC9hPjwvc3Ryb25nPigpPC9jb2RlPgorICAgICAgICA8ZGl2IGNsYXNzPSJibG9jayI+UmV0dXJucyBhIGhhc2ggY29kZSBmb3IgdGhpcyBzdHJpbmcuPC9kaXY+CisgICAgPC90ZD4KKzwvdHI+Cis8dHIgY2xhc3M9InJvd0NvbG9yIj4KKyAgICA8dGQgY2xhc3M9ImNvbEZpcnN0Ij48Y29kZT5pbnQ8L2NvZGU+PC90ZD4KKyAgICA8dGQgY2xhc3M9ImNvbExhc3QiPjxjb2RlPjxzdHJvbmc+PGEgaHJlZj0iLi4vLi4vamF2YS9sYW5nL1N0cmluZy5odG1sI2luZGV4T2YoaW50KSI+aW5kZXhPZjwvYT48L3N0cm9uZz4oaW50Jm5ic3A7Y2gpPC9jb2RlPgorICAgICAgICA8ZGl2IGNsYXNzPSJibG9jayI+UmV0dXJucyB0aGUgaW5kZXggd2l0aGluIHRoaXMgc3RyaW5nIG9mIHRoZSBmaXJzdCBvY2N1cnJlbmNlIG9mCisgICAgICAgICAgICB0aGUgc3BlY2lmaWVkIGNoYXJhY3Rlci48L2Rpdj4KKyAgICA8L3RkPgorPC90cj4KKzx0ciBjbGFzcz0iYWx0Q29sb3IiPgorICAgIDx0ZCBjbGFzcz0iY29sRmlyc3QiPjxjb2RlPmludDwvY29kZT48L3RkPgorICAgIDx0ZCBjbGFzcz0iY29sTGFzdCI+PGNvZGU+PHN0cm9uZz48YSBocmVmPSIuLi8uLi9qYXZhL2xhbmcvU3RyaW5nLmh0bWwjaW5kZXhPZihpbnQsIGludCkiPmluZGV4T2Y8L2E+PC9zdHJvbmc+KGludCZuYnNwO2NoLAorICAgICAgICBpbnQmbmJzcDtmcm9tSW5kZXgpPC9jb2RlPgorICAgICAgICA8ZGl2IGNsYXNzPSJibG9jayI+UmV0dXJucyB0aGUgaW5kZXggd2l0aGluIHRoaXMgc3RyaW5nIG9mIHRoZSBmaXJzdCBvY2N1cnJlbmNlIG9mIHRoZQorICAgICAgICAgICAgc3BlY2lmaWVkIGNoYXJhY3Rlciwgc3RhcnRpbmcgdGhlIHNlYXJjaCBhdCB0aGUgc3BlY2lmaWVkIGluZGV4LjwvZGl2PgorICAgIDwvdGQ+Cis8L3RyPgorPHRyIGNsYXNzPSJyb3dDb2xvciI+CisgICAgPHRkIGNsYXNzPSJjb2xGaXJzdCI+PGNvZGU+aW50PC9jb2RlPjwvdGQ+CisgICAgPHRkIGNsYXNzPSJjb2xMYXN0Ij48Y29kZT48c3Ryb25nPjxhIGhyZWY9Ii4uLy4uL2phdmEvbGFuZy9TdHJpbmcuaHRtbCNpbmRleE9mKGphdmEubGFuZy5TdHJpbmcpIj5pbmRleE9mPC9hPjwvc3Ryb25nPig8YSBocmVmPSIuLi8uLi9qYXZhL2xhbmcvU3RyaW5nLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBqYXZhLmxhbmciPlN0cmluZzwvYT4mbmJzcDtzdHIpPC9jb2RlPgorICAgICAgICA8ZGl2IGNsYXNzPSJibG9jayI+UmV0dXJucyB0aGUgaW5kZXggd2l0aGluIHRoaXMgc3RyaW5nIG9mIHRoZSBmaXJzdCBvY2N1cnJlbmNlIG9mIHRoZQorICAgICAgICAgICAgc3BlY2lmaWVkIHN1YnN0cmluZy48L2Rpdj4KKyAgICA8L3RkPgorPC90cj4KKzx0ciBjbGFzcz0iYWx0Q29sb3IiPgorICAgIDx0ZCBjbGFzcz0iY29sRmlyc3QiPjxjb2RlPmludDwvY29kZT48L3RkPgorICAgIDx0ZCBjbGFzcz0iY29sTGFzdCI+PGNvZGU+PHN0cm9uZz48YSBocmVmPSIuLi8uLi9qYXZhL2xhbmcvU3RyaW5nLmh0bWwjaW5kZXhPZihqYXZhLmxhbmcuU3RyaW5nLCBpbnQpIj5pbmRleE9mPC9hPjwvc3Ryb25nPig8YSBocmVmPSIuLi8uLi9qYXZhL2xhbmcvU3RyaW5nLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBqYXZhLmxhbmciPlN0cmluZzwvYT4mbmJzcDtzdHIsCisgICAgICAgIGludCZuYnNwO2Zyb21JbmRleCk8L2NvZGU+CisgICAgICAgIDxkaXYgY2xhc3M9ImJsb2NrIj5SZXR1cm5zIHRoZSBpbmRleCB3aXRoaW4gdGhpcyBzdHJpbmcgb2YgdGhlIGZpcnN0IG9jY3VycmVuY2Ugb2YgdGhlCisgICAgICAgICAgICBzcGVjaWZpZWQgc3Vic3RyaW5nLCBzdGFydGluZyBhdCB0aGUgc3BlY2lmaWVkIGluZGV4LjwvZGl2PgorICAgIDwvdGQ+Cis8L3RyPgorPHRyIGNsYXNzPSJyb3dDb2xvciI+CisgICAgPHRkIGNsYXNzPSJjb2xGaXJzdCI+PGNvZGU+PGEgaHJlZj0iLi4vLi4vamF2YS9sYW5nL1N0cmluZy5odG1sIiB0aXRsZT0iY2xhc3MgaW4gamF2YS5sYW5nIj5TdHJpbmc8L2E+PC9jb2RlPjwvdGQ+CisgICAgPHRkIGNsYXNzPSJjb2xMYXN0Ij48Y29kZT48c3Ryb25nPjxhIGhyZWY9Ii4uLy4uL2phdmEvbGFuZy9TdHJpbmcuaHRtbCNpbnRlcm4oKSI+aW50ZXJuPC9hPjwvc3Ryb25nPigpPC9jb2RlPgorICAgICAgICA8ZGl2IGNsYXNzPSJibG9jayI+UmV0dXJucyBhIGNhbm9uaWNhbCByZXByZXNlbnRhdGlvbiBmb3IgdGhlIHN0cmluZyBvYmplY3QuPC9kaXY+CisgICAgPC90ZD4KKzwvdHI+Cis8dHIgY2xhc3M9ImFsdENvbG9yIj4KKyAgICA8dGQgY2xhc3M9ImNvbEZpcnN0Ij48Y29kZT5ib29sZWFuPC9jb2RlPjwvdGQ+CisgICAgPHRkIGNsYXNzPSJjb2xMYXN0Ij48Y29kZT48c3Ryb25nPjxhIGhyZWY9Ii4uLy4uL2phdmEvbGFuZy9TdHJpbmcuaHRtbCNpc0VtcHR5KCkiPmlzRW1wdHk8L2E+PC9zdHJvbmc+KCk8L2NvZGU+CisgICAgICAgIDxkaXYgY2xhc3M9ImJsb2NrIj5SZXR1cm5zIDx0dD50cnVlPC90dD4gaWYsIGFuZCBvbmx5IGlmLCA8YSBocmVmPSIuLi8uLi9qYXZhL2xhbmcvU3RyaW5nLmh0bWwjbGVuZ3RoKCkiPjxjb2RlPmxlbmd0aCgpPC9jb2RlPjwvYT4gaXMgPHR0PjA8L3R0Pi48L2Rpdj4KKyAgICA8L3RkPgorPC90cj4KKzx0ciBjbGFzcz0icm93Q29sb3IiPgorICAgIDx0ZCBjbGFzcz0iY29sRmlyc3QiPjxjb2RlPmludDwvY29kZT48L3RkPgorICAgIDx0ZCBjbGFzcz0iY29sTGFzdCI+PGNvZGU+PHN0cm9uZz48YSBocmVmPSIuLi8uLi9qYXZhL2xhbmcvU3RyaW5nLmh0bWwjbGFzdEluZGV4T2YoaW50KSI+bGFzdEluZGV4T2Y8L2E+PC9zdHJvbmc+KGludCZuYnNwO2NoKTwvY29kZT4KKyAgICAgICAgPGRpdiBjbGFzcz0iYmxvY2siPlJldHVybnMgdGhlIGluZGV4IHdpdGhpbiB0aGlzIHN0cmluZyBvZiB0aGUgbGFzdCBvY2N1cnJlbmNlIG9mCisgICAgICAgICAgICB0aGUgc3BlY2lmaWVkIGNoYXJhY3Rlci48L2Rpdj4KKyAgICA8L3RkPgorPC90cj4KKzx0ciBjbGFzcz0iYWx0Q29sb3IiPgorICAgIDx0ZCBjbGFzcz0iY29sRmlyc3QiPjxjb2RlPmludDwvY29kZT48L3RkPgorICAgIDx0ZCBjbGFzcz0iY29sTGFzdCI+PGNvZGU+PHN0cm9uZz48YSBocmVmPSIuLi8uLi9qYXZhL2xhbmcvU3RyaW5nLmh0bWwjbGFzdEluZGV4T2YoaW50LCBpbnQpIj5sYXN0SW5kZXhPZjwvYT48L3N0cm9uZz4oaW50Jm5ic3A7Y2gsCisgICAgICAgIGludCZuYnNwO2Zyb21JbmRleCk8L2NvZGU+CisgICAgICAgIDxkaXYgY2xhc3M9ImJsb2NrIj5SZXR1cm5zIHRoZSBpbmRleCB3aXRoaW4gdGhpcyBzdHJpbmcgb2YgdGhlIGxhc3Qgb2NjdXJyZW5jZSBvZgorICAgICAgICAgICAgdGhlIHNwZWNpZmllZCBjaGFyYWN0ZXIsIHNlYXJjaGluZyBiYWNrd2FyZCBzdGFydGluZyBhdCB0aGUKKyAgICAgICAgICAgIHNwZWNpZmllZCBpbmRleC48L2Rpdj4KKyAgICA8L3RkPgorPC90cj4KKzx0ciBjbGFzcz0icm93Q29sb3IiPgorICAgIDx0ZCBjbGFzcz0iY29sRmlyc3QiPjxjb2RlPmludDwvY29kZT48L3RkPgorICAgIDx0ZCBjbGFzcz0iY29sTGFzdCI+PGNvZGU+PHN0cm9uZz48YSBocmVmPSIuLi8uLi9qYXZhL2xhbmcvU3RyaW5nLmh0bWwjbGFzdEluZGV4T2YoamF2YS5sYW5nLlN0cmluZykiPmxhc3RJbmRleE9mPC9hPjwvc3Ryb25nPig8YSBocmVmPSIuLi8uLi9qYXZhL2xhbmcvU3RyaW5nLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBqYXZhLmxhbmciPlN0cmluZzwvYT4mbmJzcDtzdHIpPC9jb2RlPgorICAgICAgICA8ZGl2IGNsYXNzPSJibG9jayI+UmV0dXJucyB0aGUgaW5kZXggd2l0aGluIHRoaXMgc3RyaW5nIG9mIHRoZSBsYXN0IG9jY3VycmVuY2Ugb2YgdGhlCisgICAgICAgICAgICBzcGVjaWZpZWQgc3Vic3RyaW5nLjwvZGl2PgorICAgIDwvdGQ+Cis8L3RyPgorPHRyIGNsYXNzPSJhbHRDb2xvciI+CisgICAgPHRkIGNsYXNzPSJjb2xGaXJzdCI+PGNvZGU+aW50PC9jb2RlPjwvdGQ+CisgICAgPHRkIGNsYXNzPSJjb2xMYXN0Ij48Y29kZT48c3Ryb25nPjxhIGhyZWY9Ii4uLy4uL2phdmEvbGFuZy9TdHJpbmcuaHRtbCNsYXN0SW5kZXhPZihqYXZhLmxhbmcuU3RyaW5nLCBpbnQpIj5sYXN0SW5kZXhPZjwvYT48L3N0cm9uZz4oPGEgaHJlZj0iLi4vLi4vamF2YS9sYW5nL1N0cmluZy5odG1sIiB0aXRsZT0iY2xhc3MgaW4gamF2YS5sYW5nIj5TdHJpbmc8L2E+Jm5ic3A7c3RyLAorICAgICAgICBpbnQmbmJzcDtmcm9tSW5kZXgpPC9jb2RlPgorICAgICAgICA8ZGl2IGNsYXNzPSJibG9jayI+UmV0dXJucyB0aGUgaW5kZXggd2l0aGluIHRoaXMgc3RyaW5nIG9mIHRoZSBsYXN0IG9jY3VycmVuY2Ugb2YgdGhlCisgICAgICAgICAgICBzcGVjaWZpZWQgc3Vic3RyaW5nLCBzZWFyY2hpbmcgYmFja3dhcmQgc3RhcnRpbmcgYXQgdGhlIHNwZWNpZmllZCBpbmRleC48L2Rpdj4KKyAgICA8L3RkPgorPC90cj4KKzx0ciBjbGFzcz0icm93Q29sb3IiPgorICAgIDx0ZCBjbGFzcz0iY29sRmlyc3QiPjxjb2RlPmludDwvY29kZT48L3RkPgorICAgIDx0ZCBjbGFzcz0iY29sTGFzdCI+PGNvZGU+PHN0cm9uZz48YSBocmVmPSIuLi8uLi9qYXZhL2xhbmcvU3RyaW5nLmh0bWwjbGVuZ3RoKCkiPmxlbmd0aDwvYT48L3N0cm9uZz4oKTwvY29kZT4KKyAgICAgICAgPGRpdiBjbGFzcz0iYmxvY2siPlJldHVybnMgdGhlIGxlbmd0aCBvZiB0aGlzIHN0cmluZy48L2Rpdj4KKyAgICA8L3RkPgorPC90cj4KKzx0ciBjbGFzcz0iYWx0Q29sb3IiPgorICAgIDx0ZCBjbGFzcz0iY29sRmlyc3QiPjxjb2RlPmJvb2xlYW48L2NvZGU+PC90ZD4KKyAgICA8dGQgY2xhc3M9ImNvbExhc3QiPjxjb2RlPjxzdHJvbmc+PGEgaHJlZj0iLi4vLi4vamF2YS9sYW5nL1N0cmluZy5odG1sI21hdGNoZXMoamF2YS5sYW5nLlN0cmluZykiPm1hdGNoZXM8L2E+PC9zdHJvbmc+KDxhIGhyZWY9Ii4uLy4uL2phdmEvbGFuZy9TdHJpbmcuaHRtbCIgdGl0bGU9ImNsYXNzIGluIGphdmEubGFuZyI+U3RyaW5nPC9hPiZuYnNwO3JlZ2V4KTwvY29kZT4KKyAgICAgICAgPGRpdiBjbGFzcz0iYmxvY2siPlRlbGxzIHdoZXRoZXIgb3Igbm90IHRoaXMgc3RyaW5nIG1hdGNoZXMgdGhlIGdpdmVuIDxhCisgICAgICAgICAgICAgICAgaHJlZj0iLi4vdXRpbC9yZWdleC9QYXR0ZXJuLmh0bWwjc3VtIj5yZWd1bGFyIGV4cHJlc3Npb248L2E+LjwvZGl2PgorICAgIDwvdGQ+Cis8L3RyPgorPHRyIGNsYXNzPSJyb3dDb2xvciI+CisgICAgPHRkIGNsYXNzPSJjb2xGaXJzdCI+PGNvZGU+aW50PC9jb2RlPjwvdGQ+CisgICAgPHRkIGNsYXNzPSJjb2xMYXN0Ij48Y29kZT48c3Ryb25nPjxhIGhyZWY9Ii4uLy4uL2phdmEvbGFuZy9TdHJpbmcuaHRtbCNvZmZzZXRCeUNvZGVQb2ludHMoaW50LCBpbnQpIj5vZmZzZXRCeUNvZGVQb2ludHM8L2E+PC9zdHJvbmc+KGludCZuYnNwO2luZGV4LAorICAgICAgICBpbnQmbmJzcDtjb2RlUG9pbnRPZmZzZXQpPC9jb2RlPgorICAgICAgICA8ZGl2IGNsYXNzPSJibG9jayI+UmV0dXJucyB0aGUgaW5kZXggd2l0aGluIHRoaXMgPGNvZGU+U3RyaW5nPC9jb2RlPiB0aGF0IGlzCisgICAgICAgICAgICBvZmZzZXQgZnJvbSB0aGUgZ2l2ZW4gPGNvZGU+aW5kZXg8L2NvZGU+IGJ5CisgICAgICAgICAgICA8Y29kZT5jb2RlUG9pbnRPZmZzZXQ8L2NvZGU+IGNvZGUgcG9pbnRzLjwvZGl2PgorICAgIDwvdGQ+Cis8L3RyPgorPHRyIGNsYXNzPSJhbHRDb2xvciI+CisgICAgPHRkIGNsYXNzPSJjb2xGaXJzdCI+PGNvZGU+Ym9vbGVhbjwvY29kZT48L3RkPgorICAgIDx0ZCBjbGFzcz0iY29sTGFzdCI+PGNvZGU+PHN0cm9uZz48YSBocmVmPSIuLi8uLi9qYXZhL2xhbmcvU3RyaW5nLmh0bWwjcmVnaW9uTWF0Y2hlcyhib29sZWFuLCBpbnQsIGphdmEubGFuZy5TdHJpbmcsIGludCwgaW50KSI+cmVnaW9uTWF0Y2hlczwvYT48L3N0cm9uZz4oYm9vbGVhbiZuYnNwO2lnbm9yZUNhc2UsCisgICAgICAgIGludCZuYnNwO3RvZmZzZXQsCisgICAgICAgIDxhIGhyZWY9Ii4uLy4uL2phdmEvbGFuZy9TdHJpbmcuaHRtbCIgdGl0bGU9ImNsYXNzIGluIGphdmEubGFuZyI+U3RyaW5nPC9hPiZuYnNwO290aGVyLAorICAgICAgICBpbnQmbmJzcDtvb2Zmc2V0LAorICAgICAgICBpbnQmbmJzcDtsZW4pPC9jb2RlPgorICAgICAgICA8ZGl2IGNsYXNzPSJibG9jayI+VGVzdHMgaWYgdHdvIHN0cmluZyByZWdpb25zIGFyZSBlcXVhbC48L2Rpdj4KKyAgICA8L3RkPgorPC90cj4KKzx0ciBjbGFzcz0icm93Q29sb3IiPgorICAgIDx0ZCBjbGFzcz0iY29sRmlyc3QiPjxjb2RlPmJvb2xlYW48L2NvZGU+PC90ZD4KKyAgICA8dGQgY2xhc3M9ImNvbExhc3QiPjxjb2RlPjxzdHJvbmc+PGEgaHJlZj0iLi4vLi4vamF2YS9sYW5nL1N0cmluZy5odG1sI3JlZ2lvbk1hdGNoZXMoaW50LCBqYXZhLmxhbmcuU3RyaW5nLCBpbnQsIGludCkiPnJlZ2lvbk1hdGNoZXM8L2E+PC9zdHJvbmc+KGludCZuYnNwO3RvZmZzZXQsCisgICAgICAgIDxhIGhyZWY9Ii4uLy4uL2phdmEvbGFuZy9TdHJpbmcuaHRtbCIgdGl0bGU9ImNsYXNzIGluIGphdmEubGFuZyI+U3RyaW5nPC9hPiZuYnNwO290aGVyLAorICAgICAgICBpbnQmbmJzcDtvb2Zmc2V0LAorICAgICAgICBpbnQmbmJzcDtsZW4pPC9jb2RlPgorICAgICAgICA8ZGl2IGNsYXNzPSJibG9jayI+VGVzdHMgaWYgdHdvIHN0cmluZyByZWdpb25zIGFyZSBlcXVhbC48L2Rpdj4KKyAgICA8L3RkPgorPC90cj4KKzx0ciBjbGFzcz0iYWx0Q29sb3IiPgorICAgIDx0ZCBjbGFzcz0iY29sRmlyc3QiPjxjb2RlPjxhIGhyZWY9Ii4uLy4uL2phdmEvbGFuZy9TdHJpbmcuaHRtbCIgdGl0bGU9ImNsYXNzIGluIGphdmEubGFuZyI+U3RyaW5nPC9hPjwvY29kZT48L3RkPgorICAgIDx0ZCBjbGFzcz0iY29sTGFzdCI+PGNvZGU+PHN0cm9uZz48YSBocmVmPSIuLi8uLi9qYXZhL2xhbmcvU3RyaW5nLmh0bWwjcmVwbGFjZShjaGFyLCBjaGFyKSI+cmVwbGFjZTwvYT48L3N0cm9uZz4oY2hhciZuYnNwO29sZENoYXIsCisgICAgICAgIGNoYXImbmJzcDtuZXdDaGFyKTwvY29kZT4KKyAgICAgICAgPGRpdiBjbGFzcz0iYmxvY2siPlJldHVybnMgYSBuZXcgc3RyaW5nIHJlc3VsdGluZyBmcm9tIHJlcGxhY2luZyBhbGwgb2NjdXJyZW5jZXMgb2YKKyAgICAgICAgICAgIDxjb2RlPm9sZENoYXI8L2NvZGU+IGluIHRoaXMgc3RyaW5nIHdpdGggPGNvZGU+bmV3Q2hhcjwvY29kZT4uPC9kaXY+CisgICAgPC90ZD4KKzwvdHI+Cis8dHIgY2xhc3M9InJvd0NvbG9yIj4KKyAgICA8dGQgY2xhc3M9ImNvbEZpcnN0Ij48Y29kZT48YSBocmVmPSIuLi8uLi9qYXZhL2xhbmcvU3RyaW5nLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBqYXZhLmxhbmciPlN0cmluZzwvYT48L2NvZGU+PC90ZD4KKyAgICA8dGQgY2xhc3M9ImNvbExhc3QiPjxjb2RlPjxzdHJvbmc+PGEgaHJlZj0iLi4vLi4vamF2YS9sYW5nL1N0cmluZy5odG1sI3JlcGxhY2UoamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSwgamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSkiPnJlcGxhY2U8L2E+PC9zdHJvbmc+KDxhIGhyZWY9Ii4uLy4uL2phdmEvbGFuZy9DaGFyU2VxdWVuY2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBqYXZhLmxhbmciPkNoYXJTZXF1ZW5jZTwvYT4mbmJzcDt0YXJnZXQsCisgICAgICAgIDxhIGhyZWY9Ii4uLy4uL2phdmEvbGFuZy9DaGFyU2VxdWVuY2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBqYXZhLmxhbmciPkNoYXJTZXF1ZW5jZTwvYT4mbmJzcDtyZXBsYWNlbWVudCk8L2NvZGU+CisgICAgICAgIDxkaXYgY2xhc3M9ImJsb2NrIj5SZXBsYWNlcyBlYWNoIHN1YnN0cmluZyBvZiB0aGlzIHN0cmluZyB0aGF0IG1hdGNoZXMgdGhlIGxpdGVyYWwgdGFyZ2V0CisgICAgICAgICAgICBzZXF1ZW5jZSB3aXRoIHRoZSBzcGVjaWZpZWQgbGl0ZXJhbCByZXBsYWNlbWVudCBzZXF1ZW5jZS48L2Rpdj4KKyAgICA8L3RkPgorPC90cj4KKzx0ciBjbGFzcz0iYWx0Q29sb3IiPgorICAgIDx0ZCBjbGFzcz0iY29sRmlyc3QiPjxjb2RlPjxhIGhyZWY9Ii4uLy4uL2phdmEvbGFuZy9TdHJpbmcuaHRtbCIgdGl0bGU9ImNsYXNzIGluIGphdmEubGFuZyI+U3RyaW5nPC9hPjwvY29kZT48L3RkPgorICAgIDx0ZCBjbGFzcz0iY29sTGFzdCI+PGNvZGU+PHN0cm9uZz48YSBocmVmPSIuLi8uLi9qYXZhL2xhbmcvU3RyaW5nLmh0bWwjcmVwbGFjZUFsbChqYXZhLmxhbmcuU3RyaW5nLCBqYXZhLmxhbmcuU3RyaW5nKSI+cmVwbGFjZUFsbDwvYT48L3N0cm9uZz4oPGEgaHJlZj0iLi4vLi4vamF2YS9sYW5nL1N0cmluZy5odG1sIiB0aXRsZT0iY2xhc3MgaW4gamF2YS5sYW5nIj5TdHJpbmc8L2E+Jm5ic3A7cmVnZXgsCisgICAgICAgIDxhIGhyZWY9Ii4uLy4uL2phdmEvbGFuZy9TdHJpbmcuaHRtbCIgdGl0bGU9ImNsYXNzIGluIGphdmEubGFuZyI+U3RyaW5nPC9hPiZuYnNwO3JlcGxhY2VtZW50KTwvY29kZT4KKyAgICAgICAgPGRpdiBjbGFzcz0iYmxvY2siPlJlcGxhY2VzIGVhY2ggc3Vic3RyaW5nIG9mIHRoaXMgc3RyaW5nIHRoYXQgbWF0Y2hlcyB0aGUgZ2l2ZW4gPGEKKyAgICAgICAgICAgICAgICBocmVmPSIuLi91dGlsL3JlZ2V4L1BhdHRlcm4uaHRtbCNzdW0iPnJlZ3VsYXIgZXhwcmVzc2lvbjwvYT4gd2l0aCB0aGUKKyAgICAgICAgICAgIGdpdmVuIHJlcGxhY2VtZW50LjwvZGl2PgorICAgIDwvdGQ+Cis8L3RyPgorPHRyIGNsYXNzPSJyb3dDb2xvciI+CisgICAgPHRkIGNsYXNzPSJjb2xGaXJzdCI+PGNvZGU+PGEgaHJlZj0iLi4vLi4vamF2YS9sYW5nL1N0cmluZy5odG1sIiB0aXRsZT0iY2xhc3MgaW4gamF2YS5sYW5nIj5TdHJpbmc8L2E+PC9jb2RlPjwvdGQ+CisgICAgPHRkIGNsYXNzPSJjb2xMYXN0Ij48Y29kZT48c3Ryb25nPjxhIGhyZWY9Ii4uLy4uL2phdmEvbGFuZy9TdHJpbmcuaHRtbCNyZXBsYWNlRmlyc3QoamF2YS5sYW5nLlN0cmluZywgamF2YS5sYW5nLlN0cmluZykiPnJlcGxhY2VGaXJzdDwvYT48L3N0cm9uZz4oPGEgaHJlZj0iLi4vLi4vamF2YS9sYW5nL1N0cmluZy5odG1sIiB0aXRsZT0iY2xhc3MgaW4gamF2YS5sYW5nIj5TdHJpbmc8L2E+Jm5ic3A7cmVnZXgsCisgICAgICAgIDxhIGhyZWY9Ii4uLy4uL2phdmEvbGFuZy9TdHJpbmcuaHRtbCIgdGl0bGU9ImNsYXNzIGluIGphdmEubGFuZyI+U3RyaW5nPC9hPiZuYnNwO3JlcGxhY2VtZW50KTwvY29kZT4KKyAgICAgICAgPGRpdiBjbGFzcz0iYmxvY2siPlJlcGxhY2VzIHRoZSBmaXJzdCBzdWJzdHJpbmcgb2YgdGhpcyBzdHJpbmcgdGhhdCBtYXRjaGVzIHRoZSBnaXZlbiA8YQorICAgICAgICAgICAgICAgIGhyZWY9Ii4uL3V0aWwvcmVnZXgvUGF0dGVybi5odG1sI3N1bSI+cmVndWxhciBleHByZXNzaW9uPC9hPiB3aXRoIHRoZQorICAgICAgICAgICAgZ2l2ZW4gcmVwbGFjZW1lbnQuPC9kaXY+CisgICAgPC90ZD4KKzwvdHI+Cis8dHIgY2xhc3M9ImFsdENvbG9yIj4KKyAgICA8dGQgY2xhc3M9ImNvbEZpcnN0Ij48Y29kZT48YSBocmVmPSIuLi8uLi9qYXZhL2xhbmcvU3RyaW5nLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBqYXZhLmxhbmciPlN0cmluZzwvYT5bXTwvY29kZT48L3RkPgorICAgIDx0ZCBjbGFzcz0iY29sTGFzdCI+PGNvZGU+PHN0cm9uZz48YSBocmVmPSIuLi8uLi9qYXZhL2xhbmcvU3RyaW5nLmh0bWwjc3BsaXQoamF2YS5sYW5nLlN0cmluZykiPnNwbGl0PC9hPjwvc3Ryb25nPig8YSBocmVmPSIuLi8uLi9qYXZhL2xhbmcvU3RyaW5nLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBqYXZhLmxhbmciPlN0cmluZzwvYT4mbmJzcDtyZWdleCk8L2NvZGU+CisgICAgICAgIDxkaXYgY2xhc3M9ImJsb2NrIj5TcGxpdHMgdGhpcyBzdHJpbmcgYXJvdW5kIG1hdGNoZXMgb2YgdGhlIGdpdmVuIDxhCisgICAgICAgICAgICAgICAgaHJlZj0iLi4vdXRpbC9yZWdleC9QYXR0ZXJuLmh0bWwjc3VtIj5yZWd1bGFyIGV4cHJlc3Npb248L2E+LjwvZGl2PgorICAgIDwvdGQ+Cis8L3RyPgorPHRyIGNsYXNzPSJyb3dDb2xvciI+CisgICAgPHRkIGNsYXNzPSJjb2xGaXJzdCI+PGNvZGU+PGEgaHJlZj0iLi4vLi4vamF2YS9sYW5nL1N0cmluZy5odG1sIiB0aXRsZT0iY2xhc3MgaW4gamF2YS5sYW5nIj5TdHJpbmc8L2E+W108L2NvZGU+PC90ZD4KKyAgICA8dGQgY2xhc3M9ImNvbExhc3QiPjxjb2RlPjxzdHJvbmc+PGEgaHJlZj0iLi4vLi4vamF2YS9sYW5nL1N0cmluZy5odG1sI3NwbGl0KGphdmEubGFuZy5TdHJpbmcsIGludCkiPnNwbGl0PC9hPjwvc3Ryb25nPig8YSBocmVmPSIuLi8uLi9qYXZhL2xhbmcvU3RyaW5nLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBqYXZhLmxhbmciPlN0cmluZzwvYT4mbmJzcDtyZWdleCwKKyAgICAgICAgaW50Jm5ic3A7bGltaXQpPC9jb2RlPgorICAgICAgICA8ZGl2IGNsYXNzPSJibG9jayI+U3BsaXRzIHRoaXMgc3RyaW5nIGFyb3VuZCBtYXRjaGVzIG9mIHRoZSBnaXZlbgorICAgICAgICAgICAgPGEgaHJlZj0iLi4vdXRpbC9yZWdleC9QYXR0ZXJuLmh0bWwjc3VtIj5yZWd1bGFyIGV4cHJlc3Npb248L2E+LjwvZGl2PgorICAgIDwvdGQ+Cis8L3RyPgorPHRyIGNsYXNzPSJhbHRDb2xvciI+CisgICAgPHRkIGNsYXNzPSJjb2xGaXJzdCI+PGNvZGU+Ym9vbGVhbjwvY29kZT48L3RkPgorICAgIDx0ZCBjbGFzcz0iY29sTGFzdCI+PGNvZGU+PHN0cm9uZz48YSBocmVmPSIuLi8uLi9qYXZhL2xhbmcvU3RyaW5nLmh0bWwjc3RhcnRzV2l0aChqYXZhLmxhbmcuU3RyaW5nKSI+c3RhcnRzV2l0aDwvYT48L3N0cm9uZz4oPGEgaHJlZj0iLi4vLi4vamF2YS9sYW5nL1N0cmluZy5odG1sIiB0aXRsZT0iY2xhc3MgaW4gamF2YS5sYW5nIj5TdHJpbmc8L2E+Jm5ic3A7cHJlZml4KTwvY29kZT4KKyAgICAgICAgPGRpdiBjbGFzcz0iYmxvY2siPlRlc3RzIGlmIHRoaXMgc3RyaW5nIHN0YXJ0cyB3aXRoIHRoZSBzcGVjaWZpZWQgcHJlZml4LjwvZGl2PgorICAgIDwvdGQ+Cis8L3RyPgorPHRyIGNsYXNzPSJyb3dDb2xvciI+CisgICAgPHRkIGNsYXNzPSJjb2xGaXJzdCI+PGNvZGU+Ym9vbGVhbjwvY29kZT48L3RkPgorICAgIDx0ZCBjbGFzcz0iY29sTGFzdCI+PGNvZGU+PHN0cm9uZz48YSBocmVmPSIuLi8uLi9qYXZhL2xhbmcvU3RyaW5nLmh0bWwjc3RhcnRzV2l0aChqYXZhLmxhbmcuU3RyaW5nLCBpbnQpIj5zdGFydHNXaXRoPC9hPjwvc3Ryb25nPig8YSBocmVmPSIuLi8uLi9qYXZhL2xhbmcvU3RyaW5nLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBqYXZhLmxhbmciPlN0cmluZzwvYT4mbmJzcDtwcmVmaXgsCisgICAgICAgIGludCZuYnNwO3RvZmZzZXQpPC9jb2RlPgorICAgICAgICA8ZGl2IGNsYXNzPSJibG9jayI+VGVzdHMgaWYgdGhlIHN1YnN0cmluZyBvZiB0aGlzIHN0cmluZyBiZWdpbm5pbmcgYXQgdGhlCisgICAgICAgICAgICBzcGVjaWZpZWQgaW5kZXggc3RhcnRzIHdpdGggdGhlIHNwZWNpZmllZCBwcmVmaXguPC9kaXY+CisgICAgPC90ZD4KKzwvdHI+Cis8dHIgY2xhc3M9ImFsdENvbG9yIj4KKyAgICA8dGQgY2xhc3M9ImNvbEZpcnN0Ij48Y29kZT48YSBocmVmPSIuLi8uLi9qYXZhL2xhbmcvQ2hhclNlcXVlbmNlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gamF2YS5sYW5nIj5DaGFyU2VxdWVuY2U8L2E+PC9jb2RlPjwvdGQ+CisgICAgPHRkIGNsYXNzPSJjb2xMYXN0Ij48Y29kZT48c3Ryb25nPjxhIGhyZWY9Ii4uLy4uL2phdmEvbGFuZy9TdHJpbmcuaHRtbCNzdWJTZXF1ZW5jZShpbnQsIGludCkiPnN1YlNlcXVlbmNlPC9hPjwvc3Ryb25nPihpbnQmbmJzcDtiZWdpbkluZGV4LAorICAgICAgICBpbnQmbmJzcDtlbmRJbmRleCk8L2NvZGU+CisgICAgICAgIDxkaXYgY2xhc3M9ImJsb2NrIj5SZXR1cm5zIGEgbmV3IGNoYXJhY3RlciBzZXF1ZW5jZSB0aGF0IGlzIGEgc3Vic2VxdWVuY2Ugb2YgdGhpcyBzZXF1ZW5jZS48L2Rpdj4KKyAgICA8L3RkPgorPC90cj4KKzx0ciBjbGFzcz0icm93Q29sb3IiPgorICAgIDx0ZCBjbGFzcz0iY29sRmlyc3QiPjxjb2RlPjxhIGhyZWY9Ii4uLy4uL2phdmEvbGFuZy9TdHJpbmcuaHRtbCIgdGl0bGU9ImNsYXNzIGluIGphdmEubGFuZyI+U3RyaW5nPC9hPjwvY29kZT48L3RkPgorICAgIDx0ZCBjbGFzcz0iY29sTGFzdCI+PGNvZGU+PHN0cm9uZz48YSBocmVmPSIuLi8uLi9qYXZhL2xhbmcvU3RyaW5nLmh0bWwjc3Vic3RyaW5nKGludCkiPnN1YnN0cmluZzwvYT48L3N0cm9uZz4oaW50Jm5ic3A7YmVnaW5JbmRleCk8L2NvZGU+CisgICAgICAgIDxkaXYgY2xhc3M9ImJsb2NrIj5SZXR1cm5zIGEgbmV3IHN0cmluZyB0aGF0IGlzIGEgc3Vic3RyaW5nIG9mIHRoaXMgc3RyaW5nLjwvZGl2PgorICAgIDwvdGQ+Cis8L3RyPgorPHRyIGNsYXNzPSJhbHRDb2xvciI+CisgICAgPHRkIGNsYXNzPSJjb2xGaXJzdCI+PGNvZGU+PGEgaHJlZj0iLi4vLi4vamF2YS9sYW5nL1N0cmluZy5odG1sIiB0aXRsZT0iY2xhc3MgaW4gamF2YS5sYW5nIj5TdHJpbmc8L2E+PC9jb2RlPjwvdGQ+CisgICAgPHRkIGNsYXNzPSJjb2xMYXN0Ij48Y29kZT48c3Ryb25nPjxhIGhyZWY9Ii4uLy4uL2phdmEvbGFuZy9TdHJpbmcuaHRtbCNzdWJzdHJpbmcoaW50LCBpbnQpIj5zdWJzdHJpbmc8L2E+PC9zdHJvbmc+KGludCZuYnNwO2JlZ2luSW5kZXgsCisgICAgICAgIGludCZuYnNwO2VuZEluZGV4KTwvY29kZT4KKyAgICAgICAgPGRpdiBjbGFzcz0iYmxvY2siPlJldHVybnMgYSBuZXcgc3RyaW5nIHRoYXQgaXMgYSBzdWJzdHJpbmcgb2YgdGhpcyBzdHJpbmcuPC9kaXY+CisgICAgPC90ZD4KKzwvdHI+Cis8dHIgY2xhc3M9InJvd0NvbG9yIj4KKyAgICA8dGQgY2xhc3M9ImNvbEZpcnN0Ij48Y29kZT5jaGFyW108L2NvZGU+PC90ZD4KKyAgICA8dGQgY2xhc3M9ImNvbExhc3QiPjxjb2RlPjxzdHJvbmc+PGEgaHJlZj0iLi4vLi4vamF2YS9sYW5nL1N0cmluZy5odG1sI3RvQ2hhckFycmF5KCkiPnRvQ2hhckFycmF5PC9hPjwvc3Ryb25nPigpPC9jb2RlPgorICAgICAgICA8ZGl2IGNsYXNzPSJibG9jayI+Q29udmVydHMgdGhpcyBzdHJpbmcgdG8gYSBuZXcgY2hhcmFjdGVyIGFycmF5LjwvZGl2PgorICAgIDwvdGQ+Cis8L3RyPgorPHRyIGNsYXNzPSJhbHRDb2xvciI+CisgICAgPHRkIGNsYXNzPSJjb2xGaXJzdCI+PGNvZGU+PGEgaHJlZj0iLi4vLi4vamF2YS9sYW5nL1N0cmluZy5odG1sIiB0aXRsZT0iY2xhc3MgaW4gamF2YS5sYW5nIj5TdHJpbmc8L2E+PC9jb2RlPjwvdGQ+CisgICAgPHRkIGNsYXNzPSJjb2xMYXN0Ij48Y29kZT48c3Ryb25nPjxhIGhyZWY9Ii4uLy4uL2phdmEvbGFuZy9TdHJpbmcuaHRtbCN0b0xvd2VyQ2FzZSgpIj50b0xvd2VyQ2FzZTwvYT48L3N0cm9uZz4oKTwvY29kZT4KKyAgICAgICAgPGRpdiBjbGFzcz0iYmxvY2siPkNvbnZlcnRzIGFsbCBvZiB0aGUgY2hhcmFjdGVycyBpbiB0aGlzIDxjb2RlPlN0cmluZzwvY29kZT4gdG8gbG93ZXIKKyAgICAgICAgICAgIGNhc2UgdXNpbmcgdGhlIHJ1bGVzIG9mIHRoZSBkZWZhdWx0IGxvY2FsZS48L2Rpdj4KKyAgICA8L3RkPgorPC90cj4KKzx0ciBjbGFzcz0icm93Q29sb3IiPgorICAgIDx0ZCBjbGFzcz0iY29sRmlyc3QiPjxjb2RlPjxhIGhyZWY9Ii4uLy4uL2phdmEvbGFuZy9TdHJpbmcuaHRtbCIgdGl0bGU9ImNsYXNzIGluIGphdmEubGFuZyI+U3RyaW5nPC9hPjwvY29kZT48L3RkPgorICAgIDx0ZCBjbGFzcz0iY29sTGFzdCI+PGNvZGU+PHN0cm9uZz48YSBocmVmPSIuLi8uLi9qYXZhL2xhbmcvU3RyaW5nLmh0bWwjdG9Mb3dlckNhc2UoamF2YS51dGlsLkxvY2FsZSkiPnRvTG93ZXJDYXNlPC9hPjwvc3Ryb25nPig8YSBocmVmPSIuLi8uLi9qYXZhL3V0aWwvTG9jYWxlLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBqYXZhLnV0aWwiPkxvY2FsZTwvYT4mbmJzcDtsb2NhbGUpPC9jb2RlPgorICAgICAgICA8ZGl2IGNsYXNzPSJibG9jayI+Q29udmVydHMgYWxsIG9mIHRoZSBjaGFyYWN0ZXJzIGluIHRoaXMgPGNvZGU+U3RyaW5nPC9jb2RlPiB0byBsb3dlcgorICAgICAgICAgICAgY2FzZSB1c2luZyB0aGUgcnVsZXMgb2YgdGhlIGdpdmVuIDxjb2RlPkxvY2FsZTwvY29kZT4uPC9kaXY+CisgICAgPC90ZD4KKzwvdHI+Cis8dHIgY2xhc3M9ImFsdENvbG9yIj4KKyAgICA8dGQgY2xhc3M9ImNvbEZpcnN0Ij48Y29kZT48YSBocmVmPSIuLi8uLi9qYXZhL2xhbmcvU3RyaW5nLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBqYXZhLmxhbmciPlN0cmluZzwvYT48L2NvZGU+PC90ZD4KKyAgICA8dGQgY2xhc3M9ImNvbExhc3QiPjxjb2RlPjxzdHJvbmc+PGEgaHJlZj0iLi4vLi4vamF2YS9sYW5nL1N0cmluZy5odG1sI3RvU3RyaW5nKCkiPnRvU3RyaW5nPC9hPjwvc3Ryb25nPigpPC9jb2RlPgorICAgICAgICA8ZGl2IGNsYXNzPSJibG9jayI+VGhpcyBvYmplY3QgKHdoaWNoIGlzIGFscmVhZHkgYSBzdHJpbmchKSBpcyBpdHNlbGYgcmV0dXJuZWQuPC9kaXY+CisgICAgPC90ZD4KKzwvdHI+Cis8dHIgY2xhc3M9InJvd0NvbG9yIj4KKyAgICA8dGQgY2xhc3M9ImNvbEZpcnN0Ij48Y29kZT48YSBocmVmPSIuLi8uLi9qYXZhL2xhbmcvU3RyaW5nLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBqYXZhLmxhbmciPlN0cmluZzwvYT48L2NvZGU+PC90ZD4KKyAgICA8dGQgY2xhc3M9ImNvbExhc3QiPjxjb2RlPjxzdHJvbmc+PGEgaHJlZj0iLi4vLi4vamF2YS9sYW5nL1N0cmluZy5odG1sI3RvVXBwZXJDYXNlKCkiPnRvVXBwZXJDYXNlPC9hPjwvc3Ryb25nPigpPC9jb2RlPgorICAgICAgICA8ZGl2IGNsYXNzPSJibG9jayI+Q29udmVydHMgYWxsIG9mIHRoZSBjaGFyYWN0ZXJzIGluIHRoaXMgPGNvZGU+U3RyaW5nPC9jb2RlPiB0byB1cHBlcgorICAgICAgICAgICAgY2FzZSB1c2luZyB0aGUgcnVsZXMgb2YgdGhlIGRlZmF1bHQgbG9jYWxlLjwvZGl2PgorICAgIDwvdGQ+Cis8L3RyPgorPHRyIGNsYXNzPSJhbHRDb2xvciI+CisgICAgPHRkIGNsYXNzPSJjb2xGaXJzdCI+PGNvZGU+PGEgaHJlZj0iLi4vLi4vamF2YS9sYW5nL1N0cmluZy5odG1sIiB0aXRsZT0iY2xhc3MgaW4gamF2YS5sYW5nIj5TdHJpbmc8L2E+PC9jb2RlPjwvdGQ+CisgICAgPHRkIGNsYXNzPSJjb2xMYXN0Ij48Y29kZT48c3Ryb25nPjxhIGhyZWY9Ii4uLy4uL2phdmEvbGFuZy9TdHJpbmcuaHRtbCN0b1VwcGVyQ2FzZShqYXZhLnV0aWwuTG9jYWxlKSI+dG9VcHBlckNhc2U8L2E+PC9zdHJvbmc+KDxhIGhyZWY9Ii4uLy4uL2phdmEvdXRpbC9Mb2NhbGUuaHRtbCIgdGl0bGU9ImNsYXNzIGluIGphdmEudXRpbCI+TG9jYWxlPC9hPiZuYnNwO2xvY2FsZSk8L2NvZGU+CisgICAgICAgIDxkaXYgY2xhc3M9ImJsb2NrIj5Db252ZXJ0cyBhbGwgb2YgdGhlIGNoYXJhY3RlcnMgaW4gdGhpcyA8Y29kZT5TdHJpbmc8L2NvZGU+IHRvIHVwcGVyCisgICAgICAgICAgICBjYXNlIHVzaW5nIHRoZSBydWxlcyBvZiB0aGUgZ2l2ZW4gPGNvZGU+TG9jYWxlPC9jb2RlPi48L2Rpdj4KKyAgICA8L3RkPgorPC90cj4KKzx0ciBjbGFzcz0icm93Q29sb3IiPgorICAgIDx0ZCBjbGFzcz0iY29sRmlyc3QiPjxjb2RlPjxhIGhyZWY9Ii4uLy4uL2phdmEvbGFuZy9TdHJpbmcuaHRtbCIgdGl0bGU9ImNsYXNzIGluIGphdmEubGFuZyI+U3RyaW5nPC9hPjwvY29kZT48L3RkPgorICAgIDx0ZCBjbGFzcz0iY29sTGFzdCI+PGNvZGU+PHN0cm9uZz48YSBocmVmPSIuLi8uLi9qYXZhL2xhbmcvU3RyaW5nLmh0bWwjdHJpbSgpIj50cmltPC9hPjwvc3Ryb25nPigpPC9jb2RlPgorICAgICAgICA8ZGl2IGNsYXNzPSJibG9jayI+UmV0dXJucyBhIGNvcHkgb2YgdGhlIHN0cmluZywgd2l0aCBsZWFkaW5nIGFuZCB0cmFpbGluZyB3aGl0ZXNwYWNlCisgICAgICAgICAgICBvbWl0dGVkLjwvZGl2PgorICAgIDwvdGQ+Cis8L3RyPgorPHRyIGNsYXNzPSJhbHRDb2xvciI+CisgICAgPHRkIGNsYXNzPSJjb2xGaXJzdCI+PGNvZGU+c3RhdGljIDxhIGhyZWY9Ii4uLy4uL2phdmEvbGFuZy9TdHJpbmcuaHRtbCIgdGl0bGU9ImNsYXNzIGluIGphdmEubGFuZyI+U3RyaW5nPC9hPjwvY29kZT48L3RkPgorICAgIDx0ZCBjbGFzcz0iY29sTGFzdCI+PGNvZGU+PHN0cm9uZz48YSBocmVmPSIuLi8uLi9qYXZhL2xhbmcvU3RyaW5nLmh0bWwjdmFsdWVPZihib29sZWFuKSI+dmFsdWVPZjwvYT48L3N0cm9uZz4oYm9vbGVhbiZuYnNwO2IpPC9jb2RlPgorICAgICAgICA8ZGl2IGNsYXNzPSJibG9jayI+UmV0dXJucyB0aGUgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSA8Y29kZT5ib29sZWFuPC9jb2RlPiBhcmd1bWVudC48L2Rpdj4KKyAgICA8L3RkPgorPC90cj4KKzx0ciBjbGFzcz0icm93Q29sb3IiPgorICAgIDx0ZCBjbGFzcz0iY29sRmlyc3QiPjxjb2RlPnN0YXRpYyA8YSBocmVmPSIuLi8uLi9qYXZhL2xhbmcvU3RyaW5nLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBqYXZhLmxhbmciPlN0cmluZzwvYT48L2NvZGU+PC90ZD4KKyAgICA8dGQgY2xhc3M9ImNvbExhc3QiPjxjb2RlPjxzdHJvbmc+PGEgaHJlZj0iLi4vLi4vamF2YS9sYW5nL1N0cmluZy5odG1sI3ZhbHVlT2YoY2hhcikiPnZhbHVlT2Y8L2E+PC9zdHJvbmc+KGNoYXImbmJzcDtjKTwvY29kZT4KKyAgICAgICAgPGRpdiBjbGFzcz0iYmxvY2siPlJldHVybnMgdGhlIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGUgPGNvZGU+Y2hhcjwvY29kZT4KKyAgICAgICAgICAgIGFyZ3VtZW50LjwvZGl2PgorICAgIDwvdGQ+Cis8L3RyPgorPHRyIGNsYXNzPSJhbHRDb2xvciI+CisgICAgPHRkIGNsYXNzPSJjb2xGaXJzdCI+PGNvZGU+c3RhdGljIDxhIGhyZWY9Ii4uLy4uL2phdmEvbGFuZy9TdHJpbmcuaHRtbCIgdGl0bGU9ImNsYXNzIGluIGphdmEubGFuZyI+U3RyaW5nPC9hPjwvY29kZT48L3RkPgorICAgIDx0ZCBjbGFzcz0iY29sTGFzdCI+PGNvZGU+PHN0cm9uZz48YSBocmVmPSIuLi8uLi9qYXZhL2xhbmcvU3RyaW5nLmh0bWwjdmFsdWVPZihjaGFyW10pIj52YWx1ZU9mPC9hPjwvc3Ryb25nPihjaGFyW10mbmJzcDtkYXRhKTwvY29kZT4KKyAgICAgICAgPGRpdiBjbGFzcz0iYmxvY2siPlJldHVybnMgdGhlIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGUgPGNvZGU+Y2hhcjwvY29kZT4gYXJyYXkKKyAgICAgICAgICAgIGFyZ3VtZW50LjwvZGl2PgorICAgIDwvdGQ+Cis8L3RyPgorPHRyIGNsYXNzPSJyb3dDb2xvciI+CisgICAgPHRkIGNsYXNzPSJjb2xGaXJzdCI+PGNvZGU+c3RhdGljIDxhIGhyZWY9Ii4uLy4uL2phdmEvbGFuZy9TdHJpbmcuaHRtbCIgdGl0bGU9ImNsYXNzIGluIGphdmEubGFuZyI+U3RyaW5nPC9hPjwvY29kZT48L3RkPgorICAgIDx0ZCBjbGFzcz0iY29sTGFzdCI+PGNvZGU+PHN0cm9uZz48YSBocmVmPSIuLi8uLi9qYXZhL2xhbmcvU3RyaW5nLmh0bWwjdmFsdWVPZihjaGFyW10sIGludCwgaW50KSI+dmFsdWVPZjwvYT48L3N0cm9uZz4oY2hhcltdJm5ic3A7ZGF0YSwKKyAgICAgICAgaW50Jm5ic3A7b2Zmc2V0LAorICAgICAgICBpbnQmbmJzcDtjb3VudCk8L2NvZGU+CisgICAgICAgIDxkaXYgY2xhc3M9ImJsb2NrIj5SZXR1cm5zIHRoZSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYSBzcGVjaWZpYyBzdWJhcnJheSBvZiB0aGUKKyAgICAgICAgICAgIDxjb2RlPmNoYXI8L2NvZGU+IGFycmF5IGFyZ3VtZW50LjwvZGl2PgorICAgIDwvdGQ+Cis8L3RyPgorPHRyIGNsYXNzPSJhbHRDb2xvciI+CisgICAgPHRkIGNsYXNzPSJjb2xGaXJzdCI+PGNvZGU+c3RhdGljIDxhIGhyZWY9Ii4uLy4uL2phdmEvbGFuZy9TdHJpbmcuaHRtbCIgdGl0bGU9ImNsYXNzIGluIGphdmEubGFuZyI+U3RyaW5nPC9hPjwvY29kZT48L3RkPgorICAgIDx0ZCBjbGFzcz0iY29sTGFzdCI+PGNvZGU+PHN0cm9uZz48YSBocmVmPSIuLi8uLi9qYXZhL2xhbmcvU3RyaW5nLmh0bWwjdmFsdWVPZihkb3VibGUpIj52YWx1ZU9mPC9hPjwvc3Ryb25nPihkb3VibGUmbmJzcDtkKTwvY29kZT4KKyAgICAgICAgPGRpdiBjbGFzcz0iYmxvY2siPlJldHVybnMgdGhlIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGUgPGNvZGU+ZG91YmxlPC9jb2RlPiBhcmd1bWVudC48L2Rpdj4KKyAgICA8L3RkPgorPC90cj4KKzx0ciBjbGFzcz0icm93Q29sb3IiPgorICAgIDx0ZCBjbGFzcz0iY29sRmlyc3QiPjxjb2RlPnN0YXRpYyA8YSBocmVmPSIuLi8uLi9qYXZhL2xhbmcvU3RyaW5nLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBqYXZhLmxhbmciPlN0cmluZzwvYT48L2NvZGU+PC90ZD4KKyAgICA8dGQgY2xhc3M9ImNvbExhc3QiPjxjb2RlPjxzdHJvbmc+PGEgaHJlZj0iLi4vLi4vamF2YS9sYW5nL1N0cmluZy5odG1sI3ZhbHVlT2YoZmxvYXQpIj52YWx1ZU9mPC9hPjwvc3Ryb25nPihmbG9hdCZuYnNwO2YpPC9jb2RlPgorICAgICAgICA8ZGl2IGNsYXNzPSJibG9jayI+UmV0dXJucyB0aGUgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSA8Y29kZT5mbG9hdDwvY29kZT4gYXJndW1lbnQuPC9kaXY+CisgICAgPC90ZD4KKzwvdHI+Cis8dHIgY2xhc3M9ImFsdENvbG9yIj4KKyAgICA8dGQgY2xhc3M9ImNvbEZpcnN0Ij48Y29kZT5zdGF0aWMgPGEgaHJlZj0iLi4vLi4vamF2YS9sYW5nL1N0cmluZy5odG1sIiB0aXRsZT0iY2xhc3MgaW4gamF2YS5sYW5nIj5TdHJpbmc8L2E+PC9jb2RlPjwvdGQ+CisgICAgPHRkIGNsYXNzPSJjb2xMYXN0Ij48Y29kZT48c3Ryb25nPjxhIGhyZWY9Ii4uLy4uL2phdmEvbGFuZy9TdHJpbmcuaHRtbCN2YWx1ZU9mKGludCkiPnZhbHVlT2Y8L2E+PC9zdHJvbmc+KGludCZuYnNwO2kpPC9jb2RlPgorICAgICAgICA8ZGl2IGNsYXNzPSJibG9jayI+UmV0dXJucyB0aGUgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSA8Y29kZT5pbnQ8L2NvZGU+IGFyZ3VtZW50LjwvZGl2PgorICAgIDwvdGQ+Cis8L3RyPgorPHRyIGNsYXNzPSJyb3dDb2xvciI+CisgICAgPHRkIGNsYXNzPSJjb2xGaXJzdCI+PGNvZGU+c3RhdGljIDxhIGhyZWY9Ii4uLy4uL2phdmEvbGFuZy9TdHJpbmcuaHRtbCIgdGl0bGU9ImNsYXNzIGluIGphdmEubGFuZyI+U3RyaW5nPC9hPjwvY29kZT48L3RkPgorICAgIDx0ZCBjbGFzcz0iY29sTGFzdCI+PGNvZGU+PHN0cm9uZz48YSBocmVmPSIuLi8uLi9qYXZhL2xhbmcvU3RyaW5nLmh0bWwjdmFsdWVPZihsb25nKSI+dmFsdWVPZjwvYT48L3N0cm9uZz4obG9uZyZuYnNwO2wpPC9jb2RlPgorICAgICAgICA8ZGl2IGNsYXNzPSJibG9jayI+UmV0dXJucyB0aGUgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSA8Y29kZT5sb25nPC9jb2RlPiBhcmd1bWVudC48L2Rpdj4KKyAgICA8L3RkPgorPC90cj4KKzx0ciBjbGFzcz0iYWx0Q29sb3IiPgorICAgIDx0ZCBjbGFzcz0iY29sRmlyc3QiPjxjb2RlPnN0YXRpYyA8YSBocmVmPSIuLi8uLi9qYXZhL2xhbmcvU3RyaW5nLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBqYXZhLmxhbmciPlN0cmluZzwvYT48L2NvZGU+PC90ZD4KKyAgICA8dGQgY2xhc3M9ImNvbExhc3QiPjxjb2RlPjxzdHJvbmc+PGEgaHJlZj0iLi4vLi4vamF2YS9sYW5nL1N0cmluZy5odG1sI3ZhbHVlT2YoamF2YS5sYW5nLk9iamVjdCkiPnZhbHVlT2Y8L2E+PC9zdHJvbmc+KDxhIGhyZWY9Ii4uLy4uL2phdmEvbGFuZy9PYmplY3QuaHRtbCIgdGl0bGU9ImNsYXNzIGluIGphdmEubGFuZyI+T2JqZWN0PC9hPiZuYnNwO29iaik8L2NvZGU+CisgICAgICAgIDxkaXYgY2xhc3M9ImJsb2NrIj5SZXR1cm5zIHRoZSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhlIDxjb2RlPk9iamVjdDwvY29kZT4gYXJndW1lbnQuPC9kaXY+CisgICAgPC90ZD4KKzwvdHI+Cis8L3RhYmxlPgorPHVsIGNsYXNzPSJibG9ja0xpc3QiPgorICAgIDxsaSBjbGFzcz0iYmxvY2tMaXN0Ij48YSBuYW1lPSJtZXRob2RzX2luaGVyaXRlZF9mcm9tX2NsYXNzX2phdmEubGFuZy5PYmplY3QiPgorICAgICAgICA8IS0tICAgLS0+CisgICAgPC9hPgorICAgICAgICA8aDM+TWV0aG9kcyBpbmhlcml0ZWQgZnJvbSBjbGFzcyZuYnNwO2phdmEubGFuZy48YSBocmVmPSIuLi8uLi9qYXZhL2xhbmcvT2JqZWN0Lmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBqYXZhLmxhbmciPk9iamVjdDwvYT48L2gzPgorICAgICAgICA8Y29kZT48YSBocmVmPSIuLi8uLi9qYXZhL2xhbmcvT2JqZWN0Lmh0bWwjY2xvbmUoKSI+Y2xvbmU8L2E+LCA8YSBocmVmPSIuLi8uLi9qYXZhL2xhbmcvT2JqZWN0Lmh0bWwjZmluYWxpemUoKSI+ZmluYWxpemU8L2E+LCA8YSBocmVmPSIuLi8uLi9qYXZhL2xhbmcvT2JqZWN0Lmh0bWwjZ2V0Q2xhc3MoKSI+Z2V0Q2xhc3M8L2E+LCA8YSBocmVmPSIuLi8uLi9qYXZhL2xhbmcvT2JqZWN0Lmh0bWwjbm90aWZ5KCkiPm5vdGlmeTwvYT4sIDxhIGhyZWY9Ii4uLy4uL2phdmEvbGFuZy9PYmplY3QuaHRtbCNub3RpZnlBbGwoKSI+bm90aWZ5QWxsPC9hPiwgPGEgaHJlZj0iLi4vLi4vamF2YS9sYW5nL09iamVjdC5odG1sI3dhaXQoKSI+d2FpdDwvYT4sIDxhIGhyZWY9Ii4uLy4uL2phdmEvbGFuZy9PYmplY3QuaHRtbCN3YWl0KGxvbmcpIj53YWl0PC9hPiwgPGEgaHJlZj0iLi4vLi4vamF2YS9sYW5nL09iamVjdC5odG1sI3dhaXQobG9uZywgaW50KSI+d2FpdDwvYT48L2NvZGU+PC9saT4KKzwvdWw+Cis8L2xpPgorPC91bD4KKzwvbGk+Cis8L3VsPgorPC9kaXY+Cis8ZGl2IGNsYXNzPSJkZXRhaWxzIj4KKzx1bCBjbGFzcz0iYmxvY2tMaXN0Ij4KKzxsaSBjbGFzcz0iYmxvY2tMaXN0Ij4KKzwhLS0gPT09PT09PT09PT09IEZJRUxEIERFVEFJTCA9PT09PT09PT09PSAtLT4KKzx1bCBjbGFzcz0iYmxvY2tMaXN0Ij4KKyAgICA8bGkgY2xhc3M9ImJsb2NrTGlzdCI+PGEgbmFtZT0iZmllbGRfZGV0YWlsIj4KKyAgICAgICAgPCEtLSAgIC0tPgorICAgIDwvYT4KKyAgICAgICAgPGgzPkZpZWxkIERldGFpbDwvaDM+CisgICAgICAgIDxhIG5hbWU9IkNBU0VfSU5TRU5TSVRJVkVfT1JERVIiPgorICAgICAgICAgICAgPCEtLSAgIC0tPgorICAgICAgICA8L2E+CisgICAgICAgIDx1bCBjbGFzcz0iYmxvY2tMaXN0TGFzdCI+CisgICAgICAgICAgICA8bGkgY2xhc3M9ImJsb2NrTGlzdCI+CisgICAgICAgICAgICAgICAgPGg0PkNBU0VfSU5TRU5TSVRJVkVfT1JERVI8L2g0PgorICAgICAgICAgICAgICAgIDxwcmU+cHVibGljIHN0YXRpYyBmaW5hbCZuYnNwOzxhIGhyZWY9Ii4uLy4uL2phdmEvdXRpbC9Db21wYXJhdG9yLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gamF2YS51dGlsIj5Db21wYXJhdG9yPC9hPiZsdDs8YSBocmVmPSIuLi8uLi9qYXZhL2xhbmcvU3RyaW5nLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBqYXZhLmxhbmciPlN0cmluZzwvYT4mZ3Q7IENBU0VfSU5TRU5TSVRJVkVfT1JERVI8L3ByZT4KKyAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJibG9jayI+QSBDb21wYXJhdG9yIHRoYXQgb3JkZXJzIDxjb2RlPlN0cmluZzwvY29kZT4gb2JqZWN0cyBhcyBieQorICAgICAgICAgICAgICAgICAgICA8Y29kZT5jb21wYXJlVG9JZ25vcmVDYXNlPC9jb2RlPi4gVGhpcyBjb21wYXJhdG9yIGlzIHNlcmlhbGl6YWJsZS4KKyAgICAgICAgICAgICAgICAgICAgPHA+CisgICAgICAgICAgICAgICAgICAgICAgICBOb3RlIHRoYXQgdGhpcyBDb21wYXJhdG9yIGRvZXMgPGVtPm5vdDwvZW0+IHRha2UgbG9jYWxlIGludG8gYWNjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgIGFuZCB3aWxsIHJlc3VsdCBpbiBhbiB1bnNhdGlzZmFjdG9yeSBvcmRlcmluZyBmb3IgY2VydGFpbiBsb2NhbGVzLgorICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGphdmEudGV4dCBwYWNrYWdlIHByb3ZpZGVzIDxlbT5Db2xsYXRvcnM8L2VtPiB0byBhbGxvdworICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWxlLXNlbnNpdGl2ZSBvcmRlcmluZy48L2Rpdj4KKyAgICAgICAgICAgICAgICA8ZGw+PGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPlNpbmNlOjwvc3Bhbj48L2R0PgorICAgICAgICAgICAgICAgICAgICA8ZGQ+MS4yPC9kZD4KKyAgICAgICAgICAgICAgICAgICAgPGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPlNlZSBBbHNvOjwvc3Bhbj48L2R0PjxkZD48YSBocmVmPSIuLi8uLi9qYXZhL3RleHQvQ29sbGF0b3IuaHRtbCNjb21wYXJlKGphdmEubGFuZy5TdHJpbmcsIGphdmEubGFuZy5TdHJpbmcpIj48Y29kZT5Db2xsYXRvci5jb21wYXJlKFN0cmluZywgU3RyaW5nKTwvY29kZT48L2E+PC9kZD48L2RsPgorICAgICAgICAgICAgPC9saT4KKyAgICAgICAgPC91bD4KKyAgICA8L2xpPgorPC91bD4KKzwhLS0gPT09PT09PT09IENPTlNUUlVDVE9SIERFVEFJTCA9PT09PT09PSAtLT4KKzx1bCBjbGFzcz0iYmxvY2tMaXN0Ij4KKzxsaSBjbGFzcz0iYmxvY2tMaXN0Ij48YSBuYW1lPSJjb25zdHJ1Y3Rvcl9kZXRhaWwiPgorICAgIDwhLS0gICAtLT4KKzwvYT4KKzxoMz5Db25zdHJ1Y3RvciBEZXRhaWw8L2gzPgorPGEgbmFtZT0iU3RyaW5nKCkiPgorICAgIDwhLS0gICAtLT4KKzwvYT4KKzx1bCBjbGFzcz0iYmxvY2tMaXN0Ij4KKyAgICA8bGkgY2xhc3M9ImJsb2NrTGlzdCI+CisgICAgICAgIDxoND5TdHJpbmc8L2g0PgorICAgICAgICA8cHJlPnB1YmxpYyZuYnNwO1N0cmluZygpPC9wcmU+CisgICAgICAgIDxkaXYgY2xhc3M9ImJsb2NrIj5Jbml0aWFsaXplcyBhIG5ld2x5IGNyZWF0ZWQgPGNvZGU+U3RyaW5nPC9jb2RlPiBvYmplY3Qgc28gdGhhdCBpdCByZXByZXNlbnRzCisgICAgICAgICAgICBhbiBlbXB0eSBjaGFyYWN0ZXIgc2VxdWVuY2UuICBOb3RlIHRoYXQgdXNlIG9mIHRoaXMgY29uc3RydWN0b3IgaXMKKyAgICAgICAgICAgIHVubmVjZXNzYXJ5IHNpbmNlIFN0cmluZ3MgYXJlIGltbXV0YWJsZS48L2Rpdj4KKyAgICA8L2xpPgorPC91bD4KKzxhIG5hbWU9IlN0cmluZyhqYXZhLmxhbmcuU3RyaW5nKSI+CisgICAgPCEtLSAgIC0tPgorPC9hPgorPHVsIGNsYXNzPSJibG9ja0xpc3QiPgorICAgIDxsaSBjbGFzcz0iYmxvY2tMaXN0Ij4KKyAgICAgICAgPGg0PlN0cmluZzwvaDQ+CisgICAgICAgIDxwcmU+cHVibGljJm5ic3A7U3RyaW5nKDxhIGhyZWY9Ii4uLy4uL2phdmEvbGFuZy9TdHJpbmcuaHRtbCIgdGl0bGU9ImNsYXNzIGluIGphdmEubGFuZyI+U3RyaW5nPC9hPiZuYnNwO29yaWdpbmFsKTwvcHJlPgorICAgICAgICA8ZGl2IGNsYXNzPSJibG9jayI+SW5pdGlhbGl6ZXMgYSBuZXdseSBjcmVhdGVkIDxjb2RlPlN0cmluZzwvY29kZT4gb2JqZWN0IHNvIHRoYXQgaXQgcmVwcmVzZW50cworICAgICAgICAgICAgdGhlIHNhbWUgc2VxdWVuY2Ugb2YgY2hhcmFjdGVycyBhcyB0aGUgYXJndW1lbnQ7IGluIG90aGVyIHdvcmRzLCB0aGUKKyAgICAgICAgICAgIG5ld2x5IGNyZWF0ZWQgc3RyaW5nIGlzIGEgY29weSBvZiB0aGUgYXJndW1lbnQgc3RyaW5nLiBVbmxlc3MgYW4KKyAgICAgICAgICAgIGV4cGxpY2l0IGNvcHkgb2YgPGNvZGU+b3JpZ2luYWw8L2NvZGU+IGlzIG5lZWRlZCwgdXNlIG9mIHRoaXMgY29uc3RydWN0b3IgaXMKKyAgICAgICAgICAgIHVubmVjZXNzYXJ5IHNpbmNlIFN0cmluZ3MgYXJlIGltbXV0YWJsZS48L2Rpdj4KKyAgICAgICAgPGRsPjxkdD48c3BhbiBjbGFzcz0ic3Ryb25nIj5QYXJhbWV0ZXJzOjwvc3Bhbj48L2R0PjxkZD48Y29kZT5vcmlnaW5hbDwvY29kZT4gLSBBIDxjb2RlPlN0cmluZzwvY29kZT48L2RkPjwvZGw+CisgICAgPC9saT4KKzwvdWw+Cis8YSBuYW1lPSJTdHJpbmcoY2hhcltdKSI+CisgICAgPCEtLSAgIC0tPgorPC9hPgorPHVsIGNsYXNzPSJibG9ja0xpc3QiPgorICAgIDxsaSBjbGFzcz0iYmxvY2tMaXN0Ij4KKyAgICAgICAgPGg0PlN0cmluZzwvaDQ+CisgICAgICAgIDxwcmU+cHVibGljJm5ic3A7U3RyaW5nKGNoYXJbXSZuYnNwO3ZhbHVlKTwvcHJlPgorICAgICAgICA8ZGl2IGNsYXNzPSJibG9jayI+QWxsb2NhdGVzIGEgbmV3IDxjb2RlPlN0cmluZzwvY29kZT4gc28gdGhhdCBpdCByZXByZXNlbnRzIHRoZSBzZXF1ZW5jZSBvZgorICAgICAgICAgICAgY2hhcmFjdGVycyBjdXJyZW50bHkgY29udGFpbmVkIGluIHRoZSBjaGFyYWN0ZXIgYXJyYXkgYXJndW1lbnQuIFRoZQorICAgICAgICAgICAgY29udGVudHMgb2YgdGhlIGNoYXJhY3RlciBhcnJheSBhcmUgY29waWVkOyBzdWJzZXF1ZW50IG1vZGlmaWNhdGlvbiBvZgorICAgICAgICAgICAgdGhlIGNoYXJhY3RlciBhcnJheSBkb2VzIG5vdCBhZmZlY3QgdGhlIG5ld2x5IGNyZWF0ZWQgc3RyaW5nLjwvZGl2PgorICAgICAgICA8ZGw+PGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPlBhcmFtZXRlcnM6PC9zcGFuPjwvZHQ+PGRkPjxjb2RlPnZhbHVlPC9jb2RlPiAtIFRoZSBpbml0aWFsIHZhbHVlIG9mIHRoZSBzdHJpbmc8L2RkPjwvZGw+CisgICAgPC9saT4KKzwvdWw+Cis8YSBuYW1lPSJTdHJpbmcoY2hhcltdLCBpbnQsIGludCkiPgorICAgIDwhLS0gICAtLT4KKzwvYT4KKzx1bCBjbGFzcz0iYmxvY2tMaXN0Ij4KKyAgICA8bGkgY2xhc3M9ImJsb2NrTGlzdCI+CisgICAgICAgIDxoND5TdHJpbmc8L2g0PgorPHByZT5wdWJsaWMmbmJzcDtTdHJpbmcoY2hhcltdJm5ic3A7dmFsdWUsCisgICAgICBpbnQmbmJzcDtvZmZzZXQsCisgICAgICBpbnQmbmJzcDtjb3VudCk8L3ByZT4KKyAgICAgICAgPGRpdiBjbGFzcz0iYmxvY2siPkFsbG9jYXRlcyBhIG5ldyA8Y29kZT5TdHJpbmc8L2NvZGU+IHRoYXQgY29udGFpbnMgY2hhcmFjdGVycyBmcm9tIGEgc3ViYXJyYXkKKyAgICAgICAgICAgIG9mIHRoZSBjaGFyYWN0ZXIgYXJyYXkgYXJndW1lbnQuIFRoZSA8Y29kZT5vZmZzZXQ8L2NvZGU+IGFyZ3VtZW50IGlzIHRoZQorICAgICAgICAgICAgaW5kZXggb2YgdGhlIGZpcnN0IGNoYXJhY3RlciBvZiB0aGUgc3ViYXJyYXkgYW5kIHRoZSA8Y29kZT5jb3VudDwvY29kZT4KKyAgICAgICAgICAgIGFyZ3VtZW50IHNwZWNpZmllcyB0aGUgbGVuZ3RoIG9mIHRoZSBzdWJhcnJheS4gVGhlIGNvbnRlbnRzIG9mIHRoZQorICAgICAgICAgICAgc3ViYXJyYXkgYXJlIGNvcGllZDsgc3Vic2VxdWVudCBtb2RpZmljYXRpb24gb2YgdGhlIGNoYXJhY3RlciBhcnJheSBkb2VzCisgICAgICAgICAgICBub3QgYWZmZWN0IHRoZSBuZXdseSBjcmVhdGVkIHN0cmluZy48L2Rpdj4KKyAgICAgICAgPGRsPjxkdD48c3BhbiBjbGFzcz0ic3Ryb25nIj5QYXJhbWV0ZXJzOjwvc3Bhbj48L2R0PjxkZD48Y29kZT52YWx1ZTwvY29kZT4gLSBBcnJheSB0aGF0IGlzIHRoZSBzb3VyY2Ugb2YgY2hhcmFjdGVyczwvZGQ+PGRkPjxjb2RlPm9mZnNldDwvY29kZT4gLSBUaGUgaW5pdGlhbCBvZmZzZXQ8L2RkPjxkZD48Y29kZT5jb3VudDwvY29kZT4gLSBUaGUgbGVuZ3RoPC9kZD4KKyAgICAgICAgICAgIDxkdD48c3BhbiBjbGFzcz0ic3Ryb25nIj5UaHJvd3M6PC9zcGFuPjwvZHQ+CisgICAgICAgICAgICA8ZGQ+PGNvZGU+PGEgaHJlZj0iLi4vLi4vamF2YS9sYW5nL0luZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb24uaHRtbCIgdGl0bGU9ImNsYXNzIGluIGphdmEubGFuZyI+SW5kZXhPdXRPZkJvdW5kc0V4Y2VwdGlvbjwvYT48L2NvZGU+IC0gSWYgdGhlIDxjb2RlPm9mZnNldDwvY29kZT4gYW5kIDxjb2RlPmNvdW50PC9jb2RlPiBhcmd1bWVudHMgaW5kZXgKKyAgICAgICAgICAgICAgICBjaGFyYWN0ZXJzIG91dHNpZGUgdGhlIGJvdW5kcyBvZiB0aGUgPGNvZGU+dmFsdWU8L2NvZGU+IGFycmF5PC9kZD48L2RsPgorICAgIDwvbGk+Cis8L3VsPgorPGEgbmFtZT0iU3RyaW5nKGludFtdLCBpbnQsIGludCkiPgorICAgIDwhLS0gICAtLT4KKzwvYT4KKzx1bCBjbGFzcz0iYmxvY2tMaXN0Ij4KKyAgICA8bGkgY2xhc3M9ImJsb2NrTGlzdCI+CisgICAgICAgIDxoND5TdHJpbmc8L2g0PgorPHByZT5wdWJsaWMmbmJzcDtTdHJpbmcoaW50W10mbmJzcDtjb2RlUG9pbnRzLAorICAgICAgaW50Jm5ic3A7b2Zmc2V0LAorICAgICAgaW50Jm5ic3A7Y291bnQpPC9wcmU+CisgICAgICAgIDxkaXYgY2xhc3M9ImJsb2NrIj5BbGxvY2F0ZXMgYSBuZXcgPGNvZGU+U3RyaW5nPC9jb2RlPiB0aGF0IGNvbnRhaW5zIGNoYXJhY3RlcnMgZnJvbSBhIHN1YmFycmF5CisgICAgICAgICAgICBvZiB0aGUgPGEgaHJlZj0iQ2hhcmFjdGVyLmh0bWwjdW5pY29kZSI+VW5pY29kZSBjb2RlIHBvaW50PC9hPiBhcnJheQorICAgICAgICAgICAgYXJndW1lbnQuICBUaGUgPGNvZGU+b2Zmc2V0PC9jb2RlPiBhcmd1bWVudCBpcyB0aGUgaW5kZXggb2YgdGhlIGZpcnN0IGNvZGUKKyAgICAgICAgICAgIHBvaW50IG9mIHRoZSBzdWJhcnJheSBhbmQgdGhlIDxjb2RlPmNvdW50PC9jb2RlPiBhcmd1bWVudCBzcGVjaWZpZXMgdGhlCisgICAgICAgICAgICBsZW5ndGggb2YgdGhlIHN1YmFycmF5LiAgVGhlIGNvbnRlbnRzIG9mIHRoZSBzdWJhcnJheSBhcmUgY29udmVydGVkIHRvCisgICAgICAgICAgICA8Y29kZT5jaGFyPC9jb2RlPnM7IHN1YnNlcXVlbnQgbW9kaWZpY2F0aW9uIG9mIHRoZSA8Y29kZT5pbnQ8L2NvZGU+IGFycmF5IGRvZXMgbm90CisgICAgICAgICAgICBhZmZlY3QgdGhlIG5ld2x5IGNyZWF0ZWQgc3RyaW5nLjwvZGl2PgorICAgICAgICA8ZGw+PGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPlBhcmFtZXRlcnM6PC9zcGFuPjwvZHQ+PGRkPjxjb2RlPmNvZGVQb2ludHM8L2NvZGU+IC0gQXJyYXkgdGhhdCBpcyB0aGUgc291cmNlIG9mIFVuaWNvZGUgY29kZSBwb2ludHM8L2RkPjxkZD48Y29kZT5vZmZzZXQ8L2NvZGU+IC0gVGhlIGluaXRpYWwgb2Zmc2V0PC9kZD48ZGQ+PGNvZGU+Y291bnQ8L2NvZGU+IC0gVGhlIGxlbmd0aDwvZGQ+CisgICAgICAgICAgICA8ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+VGhyb3dzOjwvc3Bhbj48L2R0PgorICAgICAgICAgICAgPGRkPjxjb2RlPjxhIGhyZWY9Ii4uLy4uL2phdmEvbGFuZy9JbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24uaHRtbCIgdGl0bGU9ImNsYXNzIGluIGphdmEubGFuZyI+SWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uPC9hPjwvY29kZT4gLSBJZiBhbnkgaW52YWxpZCBVbmljb2RlIGNvZGUgcG9pbnQgaXMgZm91bmQgaW4gPGNvZGU+Y29kZVBvaW50czwvY29kZT48L2RkPgorICAgICAgICAgICAgPGRkPjxjb2RlPjxhIGhyZWY9Ii4uLy4uL2phdmEvbGFuZy9JbmRleE91dE9mQm91bmRzRXhjZXB0aW9uLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBqYXZhLmxhbmciPkluZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb248L2E+PC9jb2RlPiAtIElmIHRoZSA8Y29kZT5vZmZzZXQ8L2NvZGU+IGFuZCA8Y29kZT5jb3VudDwvY29kZT4gYXJndW1lbnRzIGluZGV4CisgICAgICAgICAgICAgICAgY2hhcmFjdGVycyBvdXRzaWRlIHRoZSBib3VuZHMgb2YgdGhlIDxjb2RlPmNvZGVQb2ludHM8L2NvZGU+IGFycmF5PC9kZD48ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+U2luY2U6PC9zcGFuPjwvZHQ+CisgICAgICAgICAgICA8ZGQ+MS41PC9kZD48L2RsPgorICAgIDwvbGk+Cis8L3VsPgorPGEgbmFtZT0iU3RyaW5nKGJ5dGVbXSwgaW50LCBpbnQsIGludCkiPgorICAgIDwhLS0gICAtLT4KKzwvYT4KKzx1bCBjbGFzcz0iYmxvY2tMaXN0Ij4KKyAgICA8bGkgY2xhc3M9ImJsb2NrTGlzdCI+CisgICAgICAgIDxoND5TdHJpbmc8L2g0PgorPHByZT48YSBocmVmPSIuLi8uLi9qYXZhL2xhbmcvRGVwcmVjYXRlZC5odG1sIiB0aXRsZT0iYW5ub3RhdGlvbiBpbiBqYXZhLmxhbmciPkBEZXByZWNhdGVkPC9hPgorcHVibGljJm5ic3A7U3RyaW5nKGJ5dGVbXSZuYnNwO2FzY2lpLAorICAgICAgICAgICAgICAgICBpbnQmbmJzcDtoaWJ5dGUsCisgICAgICAgICAgICAgICAgIGludCZuYnNwO29mZnNldCwKKyAgICAgICAgICAgICAgICAgaW50Jm5ic3A7Y291bnQpPC9wcmU+CisgICAgICAgIDxkaXYgY2xhc3M9ImJsb2NrIj48c3BhbiBjbGFzcz0ic3Ryb25nIj5EZXByZWNhdGVkLjwvc3Bhbj4mbmJzcDs8aT5UaGlzIG1ldGhvZCBkb2VzIG5vdCBwcm9wZXJseSBjb252ZXJ0IGJ5dGVzIGludG8gY2hhcmFjdGVycy4KKyAgICAgICAgICAgIEFzIG9mIEpESyZuYnNwOzEuMSwgdGhlIHByZWZlcnJlZCB3YXkgdG8gZG8gdGhpcyBpcyB2aWEgdGhlCisgICAgICAgICAgICA8Y29kZT5TdHJpbmc8L2NvZGU+IGNvbnN0cnVjdG9ycyB0aGF0IHRha2UgYSA8YSBocmVmPSIuLi8uLi9qYXZhL25pby9jaGFyc2V0L0NoYXJzZXQuaHRtbCIgdGl0bGU9ImNsYXNzIGluIGphdmEubmlvLmNoYXJzZXQiPjxjb2RlPkNoYXJzZXQ8L2NvZGU+PC9hPiwgY2hhcnNldCBuYW1lLCBvciB0aGF0IHVzZSB0aGUgcGxhdGZvcm0ncworICAgICAgICAgICAgZGVmYXVsdCBjaGFyc2V0LjwvaT48L2Rpdj4KKyAgICAgICAgPGRpdiBjbGFzcz0iYmxvY2siPkFsbG9jYXRlcyBhIG5ldyA8Y29kZT5TdHJpbmc8L2NvZGU+IGNvbnN0cnVjdGVkIGZyb20gYSBzdWJhcnJheSBvZiBhbiBhcnJheQorICAgICAgICAgICAgb2YgOC1iaXQgaW50ZWdlciB2YWx1ZXMuCisKKyAgICAgICAgICAgIDxwPiBUaGUgPGNvZGU+b2Zmc2V0PC9jb2RlPiBhcmd1bWVudCBpcyB0aGUgaW5kZXggb2YgdGhlIGZpcnN0IGJ5dGUgb2YgdGhlCisgICAgICAgICAgICAgICAgc3ViYXJyYXksIGFuZCB0aGUgPGNvZGU+Y291bnQ8L2NvZGU+IGFyZ3VtZW50IHNwZWNpZmllcyB0aGUgbGVuZ3RoIG9mIHRoZQorICAgICAgICAgICAgICAgIHN1YmFycmF5LgorCisgICAgICAgICAgICA8cD4gRWFjaCA8Y29kZT5ieXRlPC9jb2RlPiBpbiB0aGUgc3ViYXJyYXkgaXMgY29udmVydGVkIHRvIGEgPGNvZGU+Y2hhcjwvY29kZT4gYXMKKyAgICAgICAgICAgICAgICBzcGVjaWZpZWQgaW4gdGhlIG1ldGhvZCBhYm92ZS48L2Rpdj4KKyAgICAgICAgPGRsPjxkdD48c3BhbiBjbGFzcz0ic3Ryb25nIj5QYXJhbWV0ZXJzOjwvc3Bhbj48L2R0PjxkZD48Y29kZT5hc2NpaTwvY29kZT4gLSBUaGUgYnl0ZXMgdG8gYmUgY29udmVydGVkIHRvIGNoYXJhY3RlcnM8L2RkPjxkZD48Y29kZT5oaWJ5dGU8L2NvZGU+IC0gVGhlIHRvcCA4IGJpdHMgb2YgZWFjaCAxNi1iaXQgVW5pY29kZSBjb2RlIHVuaXQ8L2RkPjxkZD48Y29kZT5vZmZzZXQ8L2NvZGU+IC0gVGhlIGluaXRpYWwgb2Zmc2V0PC9kZD48ZGQ+PGNvZGU+Y291bnQ8L2NvZGU+IC0gVGhlIGxlbmd0aDwvZGQ+CisgICAgICAgICAgICA8ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+VGhyb3dzOjwvc3Bhbj48L2R0PgorICAgICAgICAgICAgPGRkPjxjb2RlPjxhIGhyZWY9Ii4uLy4uL2phdmEvbGFuZy9JbmRleE91dE9mQm91bmRzRXhjZXB0aW9uLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBqYXZhLmxhbmciPkluZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb248L2E+PC9jb2RlPiAtIElmIHRoZSA8Y29kZT5vZmZzZXQ8L2NvZGU+IG9yIDxjb2RlPmNvdW50PC9jb2RlPiBhcmd1bWVudCBpcyBpbnZhbGlkPC9kZD48ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+U2VlIEFsc286PC9zcGFuPjwvZHQ+PGRkPjxhIGhyZWY9Ii4uLy4uL2phdmEvbGFuZy9TdHJpbmcuaHRtbCNTdHJpbmcoYnl0ZVtdLCBpbnQpIj48Y29kZT5TdHJpbmcoYnl0ZVtdLCBpbnQpPC9jb2RlPjwvYT4sCisgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vLi4vamF2YS9sYW5nL1N0cmluZy5odG1sI1N0cmluZyhieXRlW10sIGludCwgaW50LCBqYXZhLmxhbmcuU3RyaW5nKSI+PGNvZGU+U3RyaW5nKGJ5dGVbXSwgaW50LCBpbnQsIGphdmEubGFuZy5TdHJpbmcpPC9jb2RlPjwvYT4sCisgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vLi4vamF2YS9sYW5nL1N0cmluZy5odG1sI1N0cmluZyhieXRlW10sIGludCwgaW50LCBqYXZhLm5pby5jaGFyc2V0LkNoYXJzZXQpIj48Y29kZT5TdHJpbmcoYnl0ZVtdLCBpbnQsIGludCwgamF2YS5uaW8uY2hhcnNldC5DaGFyc2V0KTwvY29kZT48L2E+LAorICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uLy4uL2phdmEvbGFuZy9TdHJpbmcuaHRtbCNTdHJpbmcoYnl0ZVtdLCBpbnQsIGludCkiPjxjb2RlPlN0cmluZyhieXRlW10sIGludCwgaW50KTwvY29kZT48L2E+LAorICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uLy4uL2phdmEvbGFuZy9TdHJpbmcuaHRtbCNTdHJpbmcoYnl0ZVtdLCBqYXZhLmxhbmcuU3RyaW5nKSI+PGNvZGU+U3RyaW5nKGJ5dGVbXSwgamF2YS5sYW5nLlN0cmluZyk8L2NvZGU+PC9hPiwKKyAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi8uLi9qYXZhL2xhbmcvU3RyaW5nLmh0bWwjU3RyaW5nKGJ5dGVbXSwgamF2YS5uaW8uY2hhcnNldC5DaGFyc2V0KSI+PGNvZGU+U3RyaW5nKGJ5dGVbXSwgamF2YS5uaW8uY2hhcnNldC5DaGFyc2V0KTwvY29kZT48L2E+LAorICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uLy4uL2phdmEvbGFuZy9TdHJpbmcuaHRtbCNTdHJpbmcoYnl0ZVtdKSI+PGNvZGU+U3RyaW5nKGJ5dGVbXSk8L2NvZGU+PC9hPjwvZGQ+PC9kbD4KKyAgICA8L2xpPgorPC91bD4KKzxhIG5hbWU9IlN0cmluZyhieXRlW10sIGludCkiPgorICAgIDwhLS0gICAtLT4KKzwvYT4KKzx1bCBjbGFzcz0iYmxvY2tMaXN0Ij4KKyAgICA8bGkgY2xhc3M9ImJsb2NrTGlzdCI+CisgICAgICAgIDxoND5TdHJpbmc8L2g0PgorPHByZT48YSBocmVmPSIuLi8uLi9qYXZhL2xhbmcvRGVwcmVjYXRlZC5odG1sIiB0aXRsZT0iYW5ub3RhdGlvbiBpbiBqYXZhLmxhbmciPkBEZXByZWNhdGVkPC9hPgorcHVibGljJm5ic3A7U3RyaW5nKGJ5dGVbXSZuYnNwO2FzY2lpLAorICAgICAgICAgICAgICAgICBpbnQmbmJzcDtoaWJ5dGUpPC9wcmU+CisgICAgICAgIDxkaXYgY2xhc3M9ImJsb2NrIj48c3BhbiBjbGFzcz0ic3Ryb25nIj5EZXByZWNhdGVkLjwvc3Bhbj4mbmJzcDs8aT5UaGlzIG1ldGhvZCBkb2VzIG5vdCBwcm9wZXJseSBjb252ZXJ0IGJ5dGVzIGludG8KKyAgICAgICAgICAgIGNoYXJhY3RlcnMuICBBcyBvZiBKREsmbmJzcDsxLjEsIHRoZSBwcmVmZXJyZWQgd2F5IHRvIGRvIHRoaXMgaXMgdmlhIHRoZQorICAgICAgICAgICAgPGNvZGU+U3RyaW5nPC9jb2RlPiBjb25zdHJ1Y3RvcnMgdGhhdCB0YWtlIGEgPGEgaHJlZj0iLi4vLi4vamF2YS9uaW8vY2hhcnNldC9DaGFyc2V0Lmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBqYXZhLm5pby5jaGFyc2V0Ij48Y29kZT5DaGFyc2V0PC9jb2RlPjwvYT4sIGNoYXJzZXQgbmFtZSwgb3IgdGhhdCB1c2UgdGhlIHBsYXRmb3JtJ3MKKyAgICAgICAgICAgIGRlZmF1bHQgY2hhcnNldC48L2k+PC9kaXY+CisgICAgICAgIDxkaXYgY2xhc3M9ImJsb2NrIj5BbGxvY2F0ZXMgYSBuZXcgPGNvZGU+U3RyaW5nPC9jb2RlPiBjb250YWluaW5nIGNoYXJhY3RlcnMgY29uc3RydWN0ZWQgZnJvbQorICAgICAgICAgICAgYW4gYXJyYXkgb2YgOC1iaXQgaW50ZWdlciB2YWx1ZXMuIEVhY2ggY2hhcmFjdGVyIDxpPmM8L2k+aW4gdGhlCisgICAgICAgICAgICByZXN1bHRpbmcgc3RyaW5nIGlzIGNvbnN0cnVjdGVkIGZyb20gdGhlIGNvcnJlc3BvbmRpbmcgY29tcG9uZW50CisgICAgICAgICAgICA8aT5iPC9pPiBpbiB0aGUgYnl0ZSBhcnJheSBzdWNoIHRoYXQ6CisKKyAgICAgICAgICAgIDxibG9ja3F1b3RlPjxwcmU+CisgICAgIDxiPjxpPmM8L2k+PC9iPiA9PSAoY2hhcikoKChoaWJ5dGUgJmFtcDsgMHhmZikgJmx0OyZsdDsgOCkKKyAgICAgICAgICAgICAgICAgICAgICAgICB8ICg8Yj48aT5iPC9pPjwvYj4gJmFtcDsgMHhmZikpCisgPC9wcmU+PC9ibG9ja3F1b3RlPjwvZGl2PgorICAgICAgICA8ZGw+PGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPlBhcmFtZXRlcnM6PC9zcGFuPjwvZHQ+PGRkPjxjb2RlPmFzY2lpPC9jb2RlPiAtIFRoZSBieXRlcyB0byBiZSBjb252ZXJ0ZWQgdG8gY2hhcmFjdGVyczwvZGQ+PGRkPjxjb2RlPmhpYnl0ZTwvY29kZT4gLSBUaGUgdG9wIDggYml0cyBvZiBlYWNoIDE2LWJpdCBVbmljb2RlIGNvZGUgdW5pdDwvZGQ+PGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPlNlZSBBbHNvOjwvc3Bhbj48L2R0PjxkZD48YSBocmVmPSIuLi8uLi9qYXZhL2xhbmcvU3RyaW5nLmh0bWwjU3RyaW5nKGJ5dGVbXSwgaW50LCBpbnQsIGphdmEubGFuZy5TdHJpbmcpIj48Y29kZT5TdHJpbmcoYnl0ZVtdLCBpbnQsIGludCwgamF2YS5sYW5nLlN0cmluZyk8L2NvZGU+PC9hPiwKKyAgICAgICAgICAgIDxhIGhyZWY9Ii4uLy4uL2phdmEvbGFuZy9TdHJpbmcuaHRtbCNTdHJpbmcoYnl0ZVtdLCBpbnQsIGludCwgamF2YS5uaW8uY2hhcnNldC5DaGFyc2V0KSI+PGNvZGU+U3RyaW5nKGJ5dGVbXSwgaW50LCBpbnQsIGphdmEubmlvLmNoYXJzZXQuQ2hhcnNldCk8L2NvZGU+PC9hPiwKKyAgICAgICAgICAgIDxhIGhyZWY9Ii4uLy4uL2phdmEvbGFuZy9TdHJpbmcuaHRtbCNTdHJpbmcoYnl0ZVtdLCBpbnQsIGludCkiPjxjb2RlPlN0cmluZyhieXRlW10sIGludCwgaW50KTwvY29kZT48L2E+LAorICAgICAgICAgICAgPGEgaHJlZj0iLi4vLi4vamF2YS9sYW5nL1N0cmluZy5odG1sI1N0cmluZyhieXRlW10sIGphdmEubGFuZy5TdHJpbmcpIj48Y29kZT5TdHJpbmcoYnl0ZVtdLCBqYXZhLmxhbmcuU3RyaW5nKTwvY29kZT48L2E+LAorICAgICAgICAgICAgPGEgaHJlZj0iLi4vLi4vamF2YS9sYW5nL1N0cmluZy5odG1sI1N0cmluZyhieXRlW10sIGphdmEubmlvLmNoYXJzZXQuQ2hhcnNldCkiPjxjb2RlPlN0cmluZyhieXRlW10sIGphdmEubmlvLmNoYXJzZXQuQ2hhcnNldCk8L2NvZGU+PC9hPiwKKyAgICAgICAgICAgIDxhIGhyZWY9Ii4uLy4uL2phdmEvbGFuZy9TdHJpbmcuaHRtbCNTdHJpbmcoYnl0ZVtdKSI+PGNvZGU+U3RyaW5nKGJ5dGVbXSk8L2NvZGU+PC9hPjwvZGQ+PC9kbD4KKyAgICA8L2xpPgorPC91bD4KKzxhIG5hbWU9IlN0cmluZyhieXRlW10sIGludCwgaW50LCBqYXZhLmxhbmcuU3RyaW5nKSI+CisgICAgPCEtLSAgIC0tPgorPC9hPgorPHVsIGNsYXNzPSJibG9ja0xpc3QiPgorICAgIDxsaSBjbGFzcz0iYmxvY2tMaXN0Ij4KKyAgICAgICAgPGg0PlN0cmluZzwvaDQ+Cis8cHJlPnB1YmxpYyZuYnNwO1N0cmluZyhieXRlW10mbmJzcDtieXRlcywKKyAgICAgIGludCZuYnNwO29mZnNldCwKKyAgICAgIGludCZuYnNwO2xlbmd0aCwKKyAgICAgIDxhIGhyZWY9Ii4uLy4uL2phdmEvbGFuZy9TdHJpbmcuaHRtbCIgdGl0bGU9ImNsYXNzIGluIGphdmEubGFuZyI+U3RyaW5nPC9hPiZuYnNwO2NoYXJzZXROYW1lKQorICAgICAgIHRocm93cyA8YSBocmVmPSIuLi8uLi9qYXZhL2lvL1Vuc3VwcG9ydGVkRW5jb2RpbmdFeGNlcHRpb24uaHRtbCIgdGl0bGU9ImNsYXNzIGluIGphdmEuaW8iPlVuc3VwcG9ydGVkRW5jb2RpbmdFeGNlcHRpb248L2E+PC9wcmU+CisgICAgICAgIDxkaXYgY2xhc3M9ImJsb2NrIj5Db25zdHJ1Y3RzIGEgbmV3IDxjb2RlPlN0cmluZzwvY29kZT4gYnkgZGVjb2RpbmcgdGhlIHNwZWNpZmllZCBzdWJhcnJheSBvZgorICAgICAgICAgICAgYnl0ZXMgdXNpbmcgdGhlIHNwZWNpZmllZCBjaGFyc2V0LiAgVGhlIGxlbmd0aCBvZiB0aGUgbmV3IDxjb2RlPlN0cmluZzwvY29kZT4KKyAgICAgICAgICAgIGlzIGEgZnVuY3Rpb24gb2YgdGhlIGNoYXJzZXQsIGFuZCBoZW5jZSBtYXkgbm90IGJlIGVxdWFsIHRvIHRoZSBsZW5ndGgKKyAgICAgICAgICAgIG9mIHRoZSBzdWJhcnJheS4KKworICAgICAgICAgICAgPHA+IFRoZSBiZWhhdmlvciBvZiB0aGlzIGNvbnN0cnVjdG9yIHdoZW4gdGhlIGdpdmVuIGJ5dGVzIGFyZSBub3QgdmFsaWQKKyAgICAgICAgICAgICAgICBpbiB0aGUgZ2l2ZW4gY2hhcnNldCBpcyB1bnNwZWNpZmllZC4gIFRoZSA8YSBocmVmPSIuLi8uLi9qYXZhL25pby9jaGFyc2V0L0NoYXJzZXREZWNvZGVyLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBqYXZhLm5pby5jaGFyc2V0Ij48Y29kZT5DaGFyc2V0RGVjb2RlcjwvY29kZT48L2E+IGNsYXNzIHNob3VsZCBiZSB1c2VkIHdoZW4gbW9yZSBjb250cm9sCisgICAgICAgICAgICAgICAgb3ZlciB0aGUgZGVjb2RpbmcgcHJvY2VzcyBpcyByZXF1aXJlZC48L2Rpdj4KKyAgICAgICAgPGRsPjxkdD48c3BhbiBjbGFzcz0ic3Ryb25nIj5QYXJhbWV0ZXJzOjwvc3Bhbj48L2R0PjxkZD48Y29kZT5ieXRlczwvY29kZT4gLSBUaGUgYnl0ZXMgdG8gYmUgZGVjb2RlZCBpbnRvIGNoYXJhY3RlcnM8L2RkPjxkZD48Y29kZT5vZmZzZXQ8L2NvZGU+IC0gVGhlIGluZGV4IG9mIHRoZSBmaXJzdCBieXRlIHRvIGRlY29kZTwvZGQ+PGRkPjxjb2RlPmxlbmd0aDwvY29kZT4gLSBUaGUgbnVtYmVyIG9mIGJ5dGVzIHRvIGRlY29kZTwvZGQ+PGRkPjxjb2RlPmNoYXJzZXROYW1lPC9jb2RlPiAtIFRoZSBuYW1lIG9mIGEgc3VwcG9ydGVkIDxhIGhyZWY9Ii4uLy4uL2phdmEvbmlvL2NoYXJzZXQvQ2hhcnNldC5odG1sIiB0aXRsZT0iY2xhc3MgaW4gamF2YS5uaW8uY2hhcnNldCI+Y2hhcnNldDwvYT48L2RkPgorICAgICAgICAgICAgPGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPlRocm93czo8L3NwYW4+PC9kdD4KKyAgICAgICAgICAgIDxkZD48Y29kZT48YSBocmVmPSIuLi8uLi9qYXZhL2lvL1Vuc3VwcG9ydGVkRW5jb2RpbmdFeGNlcHRpb24uaHRtbCIgdGl0bGU9ImNsYXNzIGluIGphdmEuaW8iPlVuc3VwcG9ydGVkRW5jb2RpbmdFeGNlcHRpb248L2E+PC9jb2RlPiAtIElmIHRoZSBuYW1lZCBjaGFyc2V0IGlzIG5vdCBzdXBwb3J0ZWQ8L2RkPgorICAgICAgICAgICAgPGRkPjxjb2RlPjxhIGhyZWY9Ii4uLy4uL2phdmEvbGFuZy9JbmRleE91dE9mQm91bmRzRXhjZXB0aW9uLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBqYXZhLmxhbmciPkluZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb248L2E+PC9jb2RlPiAtIElmIHRoZSA8Y29kZT5vZmZzZXQ8L2NvZGU+IGFuZCA8Y29kZT5sZW5ndGg8L2NvZGU+IGFyZ3VtZW50cyBpbmRleAorICAgICAgICAgICAgICAgIGNoYXJhY3RlcnMgb3V0c2lkZSB0aGUgYm91bmRzIG9mIHRoZSA8Y29kZT5ieXRlczwvY29kZT4gYXJyYXk8L2RkPjxkdD48c3BhbiBjbGFzcz0ic3Ryb25nIj5TaW5jZTo8L3NwYW4+PC9kdD4KKyAgICAgICAgICAgIDxkZD5KREsxLjE8L2RkPjwvZGw+CisgICAgPC9saT4KKzwvdWw+Cis8YSBuYW1lPSJTdHJpbmcoYnl0ZVtdLCBpbnQsIGludCwgamF2YS5uaW8uY2hhcnNldC5DaGFyc2V0KSI+CisgICAgPCEtLSAgIC0tPgorPC9hPgorPHVsIGNsYXNzPSJibG9ja0xpc3QiPgorICAgIDxsaSBjbGFzcz0iYmxvY2tMaXN0Ij4KKyAgICAgICAgPGg0PlN0cmluZzwvaDQ+Cis8cHJlPnB1YmxpYyZuYnNwO1N0cmluZyhieXRlW10mbmJzcDtieXRlcywKKyAgICAgIGludCZuYnNwO29mZnNldCwKKyAgICAgIGludCZuYnNwO2xlbmd0aCwKKyAgICAgIDxhIGhyZWY9Ii4uLy4uL2phdmEvbmlvL2NoYXJzZXQvQ2hhcnNldC5odG1sIiB0aXRsZT0iY2xhc3MgaW4gamF2YS5uaW8uY2hhcnNldCI+Q2hhcnNldDwvYT4mbmJzcDtjaGFyc2V0KTwvcHJlPgorICAgICAgICA8ZGl2IGNsYXNzPSJibG9jayI+Q29uc3RydWN0cyBhIG5ldyA8Y29kZT5TdHJpbmc8L2NvZGU+IGJ5IGRlY29kaW5nIHRoZSBzcGVjaWZpZWQgc3ViYXJyYXkgb2YKKyAgICAgICAgICAgIGJ5dGVzIHVzaW5nIHRoZSBzcGVjaWZpZWQgPGEgaHJlZj0iLi4vLi4vamF2YS9uaW8vY2hhcnNldC9DaGFyc2V0Lmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBqYXZhLm5pby5jaGFyc2V0Ij5jaGFyc2V0PC9hPi4KKyAgICAgICAgICAgIFRoZSBsZW5ndGggb2YgdGhlIG5ldyA8Y29kZT5TdHJpbmc8L2NvZGU+IGlzIGEgZnVuY3Rpb24gb2YgdGhlIGNoYXJzZXQsIGFuZAorICAgICAgICAgICAgaGVuY2UgbWF5IG5vdCBiZSBlcXVhbCB0byB0aGUgbGVuZ3RoIG9mIHRoZSBzdWJhcnJheS4KKworICAgICAgICAgICAgPHA+IFRoaXMgbWV0aG9kIGFsd2F5cyByZXBsYWNlcyBtYWxmb3JtZWQtaW5wdXQgYW5kIHVubWFwcGFibGUtY2hhcmFjdGVyCisgICAgICAgICAgICAgICAgc2VxdWVuY2VzIHdpdGggdGhpcyBjaGFyc2V0J3MgZGVmYXVsdCByZXBsYWNlbWVudCBzdHJpbmcuICBUaGUgPGEgaHJlZj0iLi4vLi4vamF2YS9uaW8vY2hhcnNldC9DaGFyc2V0RGVjb2Rlci5odG1sIiB0aXRsZT0iY2xhc3MgaW4gamF2YS5uaW8uY2hhcnNldCI+PGNvZGU+Q2hhcnNldERlY29kZXI8L2NvZGU+PC9hPiBjbGFzcyBzaG91bGQgYmUgdXNlZCB3aGVuIG1vcmUgY29udHJvbAorICAgICAgICAgICAgICAgIG92ZXIgdGhlIGRlY29kaW5nIHByb2Nlc3MgaXMgcmVxdWlyZWQuPC9kaXY+CisgICAgICAgIDxkbD48ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+UGFyYW1ldGVyczo8L3NwYW4+PC9kdD48ZGQ+PGNvZGU+Ynl0ZXM8L2NvZGU+IC0gVGhlIGJ5dGVzIHRvIGJlIGRlY29kZWQgaW50byBjaGFyYWN0ZXJzPC9kZD48ZGQ+PGNvZGU+b2Zmc2V0PC9jb2RlPiAtIFRoZSBpbmRleCBvZiB0aGUgZmlyc3QgYnl0ZSB0byBkZWNvZGU8L2RkPjxkZD48Y29kZT5sZW5ndGg8L2NvZGU+IC0gVGhlIG51bWJlciBvZiBieXRlcyB0byBkZWNvZGU8L2RkPjxkZD48Y29kZT5jaGFyc2V0PC9jb2RlPiAtIFRoZSA8YSBocmVmPSIuLi8uLi9qYXZhL25pby9jaGFyc2V0L0NoYXJzZXQuaHRtbCIgdGl0bGU9ImNsYXNzIGluIGphdmEubmlvLmNoYXJzZXQiPmNoYXJzZXQ8L2E+IHRvIGJlIHVzZWQgdG8KKyAgICAgICAgICAgIGRlY29kZSB0aGUgPGNvZGU+Ynl0ZXM8L2NvZGU+PC9kZD4KKyAgICAgICAgICAgIDxkdD48c3BhbiBjbGFzcz0ic3Ryb25nIj5UaHJvd3M6PC9zcGFuPjwvZHQ+CisgICAgICAgICAgICA8ZGQ+PGNvZGU+PGEgaHJlZj0iLi4vLi4vamF2YS9sYW5nL0luZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb24uaHRtbCIgdGl0bGU9ImNsYXNzIGluIGphdmEubGFuZyI+SW5kZXhPdXRPZkJvdW5kc0V4Y2VwdGlvbjwvYT48L2NvZGU+IC0gSWYgdGhlIDxjb2RlPm9mZnNldDwvY29kZT4gYW5kIDxjb2RlPmxlbmd0aDwvY29kZT4gYXJndW1lbnRzIGluZGV4CisgICAgICAgICAgICAgICAgY2hhcmFjdGVycyBvdXRzaWRlIHRoZSBib3VuZHMgb2YgdGhlIDxjb2RlPmJ5dGVzPC9jb2RlPiBhcnJheTwvZGQ+PGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPlNpbmNlOjwvc3Bhbj48L2R0PgorICAgICAgICAgICAgPGRkPjEuNjwvZGQ+PC9kbD4KKyAgICA8L2xpPgorPC91bD4KKzxhIG5hbWU9IlN0cmluZyhieXRlW10sIGphdmEubGFuZy5TdHJpbmcpIj4KKyAgICA8IS0tICAgLS0+Cis8L2E+Cis8dWwgY2xhc3M9ImJsb2NrTGlzdCI+CisgICAgPGxpIGNsYXNzPSJibG9ja0xpc3QiPgorICAgICAgICA8aDQ+U3RyaW5nPC9oND4KKzxwcmU+cHVibGljJm5ic3A7U3RyaW5nKGJ5dGVbXSZuYnNwO2J5dGVzLAorICAgICAgPGEgaHJlZj0iLi4vLi4vamF2YS9sYW5nL1N0cmluZy5odG1sIiB0aXRsZT0iY2xhc3MgaW4gamF2YS5sYW5nIj5TdHJpbmc8L2E+Jm5ic3A7Y2hhcnNldE5hbWUpCisgICAgICAgdGhyb3dzIDxhIGhyZWY9Ii4uLy4uL2phdmEvaW8vVW5zdXBwb3J0ZWRFbmNvZGluZ0V4Y2VwdGlvbi5odG1sIiB0aXRsZT0iY2xhc3MgaW4gamF2YS5pbyI+VW5zdXBwb3J0ZWRFbmNvZGluZ0V4Y2VwdGlvbjwvYT48L3ByZT4KKyAgICAgICAgPGRpdiBjbGFzcz0iYmxvY2siPkNvbnN0cnVjdHMgYSBuZXcgPGNvZGU+U3RyaW5nPC9jb2RlPiBieSBkZWNvZGluZyB0aGUgc3BlY2lmaWVkIGFycmF5IG9mIGJ5dGVzCisgICAgICAgICAgICB1c2luZyB0aGUgc3BlY2lmaWVkIDxhIGhyZWY9Ii4uLy4uL2phdmEvbmlvL2NoYXJzZXQvQ2hhcnNldC5odG1sIiB0aXRsZT0iY2xhc3MgaW4gamF2YS5uaW8uY2hhcnNldCI+Y2hhcnNldDwvYT4uICBUaGUKKyAgICAgICAgICAgIGxlbmd0aCBvZiB0aGUgbmV3IDxjb2RlPlN0cmluZzwvY29kZT4gaXMgYSBmdW5jdGlvbiBvZiB0aGUgY2hhcnNldCwgYW5kIGhlbmNlCisgICAgICAgICAgICBtYXkgbm90IGJlIGVxdWFsIHRvIHRoZSBsZW5ndGggb2YgdGhlIGJ5dGUgYXJyYXkuCisKKyAgICAgICAgICAgIDxwPiBUaGUgYmVoYXZpb3Igb2YgdGhpcyBjb25zdHJ1Y3RvciB3aGVuIHRoZSBnaXZlbiBieXRlcyBhcmUgbm90IHZhbGlkCisgICAgICAgICAgICAgICAgaW4gdGhlIGdpdmVuIGNoYXJzZXQgaXMgdW5zcGVjaWZpZWQuICBUaGUgPGEgaHJlZj0iLi4vLi4vamF2YS9uaW8vY2hhcnNldC9DaGFyc2V0RGVjb2Rlci5odG1sIiB0aXRsZT0iY2xhc3MgaW4gamF2YS5uaW8uY2hhcnNldCI+PGNvZGU+Q2hhcnNldERlY29kZXI8L2NvZGU+PC9hPiBjbGFzcyBzaG91bGQgYmUgdXNlZCB3aGVuIG1vcmUgY29udHJvbAorICAgICAgICAgICAgICAgIG92ZXIgdGhlIGRlY29kaW5nIHByb2Nlc3MgaXMgcmVxdWlyZWQuPC9kaXY+CisgICAgICAgIDxkbD48ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+UGFyYW1ldGVyczo8L3NwYW4+PC9kdD48ZGQ+PGNvZGU+Ynl0ZXM8L2NvZGU+IC0gVGhlIGJ5dGVzIHRvIGJlIGRlY29kZWQgaW50byBjaGFyYWN0ZXJzPC9kZD48ZGQ+PGNvZGU+Y2hhcnNldE5hbWU8L2NvZGU+IC0gVGhlIG5hbWUgb2YgYSBzdXBwb3J0ZWQgPGEgaHJlZj0iLi4vLi4vamF2YS9uaW8vY2hhcnNldC9DaGFyc2V0Lmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBqYXZhLm5pby5jaGFyc2V0Ij5jaGFyc2V0PC9hPjwvZGQ+CisgICAgICAgICAgICA8ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+VGhyb3dzOjwvc3Bhbj48L2R0PgorICAgICAgICAgICAgPGRkPjxjb2RlPjxhIGhyZWY9Ii4uLy4uL2phdmEvaW8vVW5zdXBwb3J0ZWRFbmNvZGluZ0V4Y2VwdGlvbi5odG1sIiB0aXRsZT0iY2xhc3MgaW4gamF2YS5pbyI+VW5zdXBwb3J0ZWRFbmNvZGluZ0V4Y2VwdGlvbjwvYT48L2NvZGU+IC0gSWYgdGhlIG5hbWVkIGNoYXJzZXQgaXMgbm90IHN1cHBvcnRlZDwvZGQ+PGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPlNpbmNlOjwvc3Bhbj48L2R0PgorICAgICAgICAgICAgPGRkPkpESzEuMTwvZGQ+PC9kbD4KKyAgICA8L2xpPgorPC91bD4KKzxhIG5hbWU9IlN0cmluZyhieXRlW10sIGphdmEubmlvLmNoYXJzZXQuQ2hhcnNldCkiPgorICAgIDwhLS0gICAtLT4KKzwvYT4KKzx1bCBjbGFzcz0iYmxvY2tMaXN0Ij4KKyAgICA8bGkgY2xhc3M9ImJsb2NrTGlzdCI+CisgICAgICAgIDxoND5TdHJpbmc8L2g0PgorPHByZT5wdWJsaWMmbmJzcDtTdHJpbmcoYnl0ZVtdJm5ic3A7Ynl0ZXMsCisgICAgICA8YSBocmVmPSIuLi8uLi9qYXZhL25pby9jaGFyc2V0L0NoYXJzZXQuaHRtbCIgdGl0bGU9ImNsYXNzIGluIGphdmEubmlvLmNoYXJzZXQiPkNoYXJzZXQ8L2E+Jm5ic3A7Y2hhcnNldCk8L3ByZT4KKyAgICAgICAgPGRpdiBjbGFzcz0iYmxvY2siPkNvbnN0cnVjdHMgYSBuZXcgPGNvZGU+U3RyaW5nPC9jb2RlPiBieSBkZWNvZGluZyB0aGUgc3BlY2lmaWVkIGFycmF5IG9mCisgICAgICAgICAgICBieXRlcyB1c2luZyB0aGUgc3BlY2lmaWVkIDxhIGhyZWY9Ii4uLy4uL2phdmEvbmlvL2NoYXJzZXQvQ2hhcnNldC5odG1sIiB0aXRsZT0iY2xhc3MgaW4gamF2YS5uaW8uY2hhcnNldCI+Y2hhcnNldDwvYT4uCisgICAgICAgICAgICBUaGUgbGVuZ3RoIG9mIHRoZSBuZXcgPGNvZGU+U3RyaW5nPC9jb2RlPiBpcyBhIGZ1bmN0aW9uIG9mIHRoZSBjaGFyc2V0LCBhbmQKKyAgICAgICAgICAgIGhlbmNlIG1heSBub3QgYmUgZXF1YWwgdG8gdGhlIGxlbmd0aCBvZiB0aGUgYnl0ZSBhcnJheS4KKworICAgICAgICAgICAgPHA+IFRoaXMgbWV0aG9kIGFsd2F5cyByZXBsYWNlcyBtYWxmb3JtZWQtaW5wdXQgYW5kIHVubWFwcGFibGUtY2hhcmFjdGVyCisgICAgICAgICAgICAgICAgc2VxdWVuY2VzIHdpdGggdGhpcyBjaGFyc2V0J3MgZGVmYXVsdCByZXBsYWNlbWVudCBzdHJpbmcuICBUaGUgPGEgaHJlZj0iLi4vLi4vamF2YS9uaW8vY2hhcnNldC9DaGFyc2V0RGVjb2Rlci5odG1sIiB0aXRsZT0iY2xhc3MgaW4gamF2YS5uaW8uY2hhcnNldCI+PGNvZGU+Q2hhcnNldERlY29kZXI8L2NvZGU+PC9hPiBjbGFzcyBzaG91bGQgYmUgdXNlZCB3aGVuIG1vcmUgY29udHJvbAorICAgICAgICAgICAgICAgIG92ZXIgdGhlIGRlY29kaW5nIHByb2Nlc3MgaXMgcmVxdWlyZWQuPC9kaXY+CisgICAgICAgIDxkbD48ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+UGFyYW1ldGVyczo8L3NwYW4+PC9kdD48ZGQ+PGNvZGU+Ynl0ZXM8L2NvZGU+IC0gVGhlIGJ5dGVzIHRvIGJlIGRlY29kZWQgaW50byBjaGFyYWN0ZXJzPC9kZD48ZGQ+PGNvZGU+Y2hhcnNldDwvY29kZT4gLSBUaGUgPGEgaHJlZj0iLi4vLi4vamF2YS9uaW8vY2hhcnNldC9DaGFyc2V0Lmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBqYXZhLm5pby5jaGFyc2V0Ij5jaGFyc2V0PC9hPiB0byBiZSB1c2VkIHRvCisgICAgICAgICAgICBkZWNvZGUgdGhlIDxjb2RlPmJ5dGVzPC9jb2RlPjwvZGQ+PGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPlNpbmNlOjwvc3Bhbj48L2R0PgorICAgICAgICAgICAgPGRkPjEuNjwvZGQ+PC9kbD4KKyAgICA8L2xpPgorPC91bD4KKzxhIG5hbWU9IlN0cmluZyhieXRlW10sIGludCwgaW50KSI+CisgICAgPCEtLSAgIC0tPgorPC9hPgorPHVsIGNsYXNzPSJibG9ja0xpc3QiPgorICAgIDxsaSBjbGFzcz0iYmxvY2tMaXN0Ij4KKyAgICAgICAgPGg0PlN0cmluZzwvaDQ+Cis8cHJlPnB1YmxpYyZuYnNwO1N0cmluZyhieXRlW10mbmJzcDtieXRlcywKKyAgICAgIGludCZuYnNwO29mZnNldCwKKyAgICAgIGludCZuYnNwO2xlbmd0aCk8L3ByZT4KKyAgICAgICAgPGRpdiBjbGFzcz0iYmxvY2siPkNvbnN0cnVjdHMgYSBuZXcgPGNvZGU+U3RyaW5nPC9jb2RlPiBieSBkZWNvZGluZyB0aGUgc3BlY2lmaWVkIHN1YmFycmF5IG9mCisgICAgICAgICAgICBieXRlcyB1c2luZyB0aGUgcGxhdGZvcm0ncyBkZWZhdWx0IGNoYXJzZXQuICBUaGUgbGVuZ3RoIG9mIHRoZSBuZXcKKyAgICAgICAgICAgIDxjb2RlPlN0cmluZzwvY29kZT4gaXMgYSBmdW5jdGlvbiBvZiB0aGUgY2hhcnNldCwgYW5kIGhlbmNlIG1heSBub3QgYmUgZXF1YWwKKyAgICAgICAgICAgIHRvIHRoZSBsZW5ndGggb2YgdGhlIHN1YmFycmF5LgorCisgICAgICAgICAgICA8cD4gVGhlIGJlaGF2aW9yIG9mIHRoaXMgY29uc3RydWN0b3Igd2hlbiB0aGUgZ2l2ZW4gYnl0ZXMgYXJlIG5vdCB2YWxpZAorICAgICAgICAgICAgICAgIGluIHRoZSBkZWZhdWx0IGNoYXJzZXQgaXMgdW5zcGVjaWZpZWQuICBUaGUgPGEgaHJlZj0iLi4vLi4vamF2YS9uaW8vY2hhcnNldC9DaGFyc2V0RGVjb2Rlci5odG1sIiB0aXRsZT0iY2xhc3MgaW4gamF2YS5uaW8uY2hhcnNldCI+PGNvZGU+Q2hhcnNldERlY29kZXI8L2NvZGU+PC9hPiBjbGFzcyBzaG91bGQgYmUgdXNlZCB3aGVuIG1vcmUgY29udHJvbAorICAgICAgICAgICAgICAgIG92ZXIgdGhlIGRlY29kaW5nIHByb2Nlc3MgaXMgcmVxdWlyZWQuPC9kaXY+CisgICAgICAgIDxkbD48ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+UGFyYW1ldGVyczo8L3NwYW4+PC9kdD48ZGQ+PGNvZGU+Ynl0ZXM8L2NvZGU+IC0gVGhlIGJ5dGVzIHRvIGJlIGRlY29kZWQgaW50byBjaGFyYWN0ZXJzPC9kZD48ZGQ+PGNvZGU+b2Zmc2V0PC9jb2RlPiAtIFRoZSBpbmRleCBvZiB0aGUgZmlyc3QgYnl0ZSB0byBkZWNvZGU8L2RkPjxkZD48Y29kZT5sZW5ndGg8L2NvZGU+IC0gVGhlIG51bWJlciBvZiBieXRlcyB0byBkZWNvZGU8L2RkPgorICAgICAgICAgICAgPGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPlRocm93czo8L3NwYW4+PC9kdD4KKyAgICAgICAgICAgIDxkZD48Y29kZT48YSBocmVmPSIuLi8uLi9qYXZhL2xhbmcvSW5kZXhPdXRPZkJvdW5kc0V4Y2VwdGlvbi5odG1sIiB0aXRsZT0iY2xhc3MgaW4gamF2YS5sYW5nIj5JbmRleE91dE9mQm91bmRzRXhjZXB0aW9uPC9hPjwvY29kZT4gLSBJZiB0aGUgPGNvZGU+b2Zmc2V0PC9jb2RlPiBhbmQgdGhlIDxjb2RlPmxlbmd0aDwvY29kZT4gYXJndW1lbnRzIGluZGV4CisgICAgICAgICAgICAgICAgY2hhcmFjdGVycyBvdXRzaWRlIHRoZSBib3VuZHMgb2YgdGhlIDxjb2RlPmJ5dGVzPC9jb2RlPiBhcnJheTwvZGQ+PGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPlNpbmNlOjwvc3Bhbj48L2R0PgorICAgICAgICAgICAgPGRkPkpESzEuMTwvZGQ+PC9kbD4KKyAgICA8L2xpPgorPC91bD4KKzxhIG5hbWU9IlN0cmluZyhieXRlW10pIj4KKyAgICA8IS0tICAgLS0+Cis8L2E+Cis8dWwgY2xhc3M9ImJsb2NrTGlzdCI+CisgICAgPGxpIGNsYXNzPSJibG9ja0xpc3QiPgorICAgICAgICA8aDQ+U3RyaW5nPC9oND4KKyAgICAgICAgPHByZT5wdWJsaWMmbmJzcDtTdHJpbmcoYnl0ZVtdJm5ic3A7Ynl0ZXMpPC9wcmU+CisgICAgICAgIDxkaXYgY2xhc3M9ImJsb2NrIj5Db25zdHJ1Y3RzIGEgbmV3IDxjb2RlPlN0cmluZzwvY29kZT4gYnkgZGVjb2RpbmcgdGhlIHNwZWNpZmllZCBhcnJheSBvZiBieXRlcworICAgICAgICAgICAgdXNpbmcgdGhlIHBsYXRmb3JtJ3MgZGVmYXVsdCBjaGFyc2V0LiAgVGhlIGxlbmd0aCBvZiB0aGUgbmV3IDxjb2RlPlN0cmluZzwvY29kZT4gaXMgYSBmdW5jdGlvbiBvZiB0aGUgY2hhcnNldCwgYW5kIGhlbmNlIG1heSBub3QgYmUgZXF1YWwgdG8gdGhlCisgICAgICAgICAgICBsZW5ndGggb2YgdGhlIGJ5dGUgYXJyYXkuCisKKyAgICAgICAgICAgIDxwPiBUaGUgYmVoYXZpb3Igb2YgdGhpcyBjb25zdHJ1Y3RvciB3aGVuIHRoZSBnaXZlbiBieXRlcyBhcmUgbm90IHZhbGlkCisgICAgICAgICAgICAgICAgaW4gdGhlIGRlZmF1bHQgY2hhcnNldCBpcyB1bnNwZWNpZmllZC4gIFRoZSA8YSBocmVmPSIuLi8uLi9qYXZhL25pby9jaGFyc2V0L0NoYXJzZXREZWNvZGVyLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBqYXZhLm5pby5jaGFyc2V0Ij48Y29kZT5DaGFyc2V0RGVjb2RlcjwvY29kZT48L2E+IGNsYXNzIHNob3VsZCBiZSB1c2VkIHdoZW4gbW9yZSBjb250cm9sCisgICAgICAgICAgICAgICAgb3ZlciB0aGUgZGVjb2RpbmcgcHJvY2VzcyBpcyByZXF1aXJlZC48L2Rpdj4KKyAgICAgICAgPGRsPjxkdD48c3BhbiBjbGFzcz0ic3Ryb25nIj5QYXJhbWV0ZXJzOjwvc3Bhbj48L2R0PjxkZD48Y29kZT5ieXRlczwvY29kZT4gLSBUaGUgYnl0ZXMgdG8gYmUgZGVjb2RlZCBpbnRvIGNoYXJhY3RlcnM8L2RkPjxkdD48c3BhbiBjbGFzcz0ic3Ryb25nIj5TaW5jZTo8L3NwYW4+PC9kdD4KKyAgICAgICAgICAgIDxkZD5KREsxLjE8L2RkPjwvZGw+CisgICAgPC9saT4KKzwvdWw+Cis8YSBuYW1lPSJTdHJpbmcoamF2YS5sYW5nLlN0cmluZ0J1ZmZlcikiPgorICAgIDwhLS0gICAtLT4KKzwvYT4KKzx1bCBjbGFzcz0iYmxvY2tMaXN0Ij4KKyAgICA8bGkgY2xhc3M9ImJsb2NrTGlzdCI+CisgICAgICAgIDxoND5TdHJpbmc8L2g0PgorICAgICAgICA8cHJlPnB1YmxpYyZuYnNwO1N0cmluZyg8YSBocmVmPSIuLi8uLi9qYXZhL2xhbmcvU3RyaW5nQnVmZmVyLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBqYXZhLmxhbmciPlN0cmluZ0J1ZmZlcjwvYT4mbmJzcDtidWZmZXIpPC9wcmU+CisgICAgICAgIDxkaXYgY2xhc3M9ImJsb2NrIj5BbGxvY2F0ZXMgYSBuZXcgc3RyaW5nIHRoYXQgY29udGFpbnMgdGhlIHNlcXVlbmNlIG9mIGNoYXJhY3RlcnMKKyAgICAgICAgICAgIGN1cnJlbnRseSBjb250YWluZWQgaW4gdGhlIHN0cmluZyBidWZmZXIgYXJndW1lbnQuIFRoZSBjb250ZW50cyBvZiB0aGUKKyAgICAgICAgICAgIHN0cmluZyBidWZmZXIgYXJlIGNvcGllZDsgc3Vic2VxdWVudCBtb2RpZmljYXRpb24gb2YgdGhlIHN0cmluZyBidWZmZXIKKyAgICAgICAgICAgIGRvZXMgbm90IGFmZmVjdCB0aGUgbmV3bHkgY3JlYXRlZCBzdHJpbmcuPC9kaXY+CisgICAgICAgIDxkbD48ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+UGFyYW1ldGVyczo8L3NwYW4+PC9kdD48ZGQ+PGNvZGU+YnVmZmVyPC9jb2RlPiAtIEEgPGNvZGU+U3RyaW5nQnVmZmVyPC9jb2RlPjwvZGQ+PC9kbD4KKyAgICA8L2xpPgorPC91bD4KKzxhIG5hbWU9IlN0cmluZyhqYXZhLmxhbmcuU3RyaW5nQnVpbGRlcikiPgorICAgIDwhLS0gICAtLT4KKzwvYT4KKzx1bCBjbGFzcz0iYmxvY2tMaXN0TGFzdCI+CisgICAgPGxpIGNsYXNzPSJibG9ja0xpc3QiPgorICAgICAgICA8aDQ+U3RyaW5nPC9oND4KKyAgICAgICAgPHByZT5wdWJsaWMmbmJzcDtTdHJpbmcoPGEgaHJlZj0iLi4vLi4vamF2YS9sYW5nL1N0cmluZ0J1aWxkZXIuaHRtbCIgdGl0bGU9ImNsYXNzIGluIGphdmEubGFuZyI+U3RyaW5nQnVpbGRlcjwvYT4mbmJzcDtidWlsZGVyKTwvcHJlPgorICAgICAgICA8ZGl2IGNsYXNzPSJibG9jayI+QWxsb2NhdGVzIGEgbmV3IHN0cmluZyB0aGF0IGNvbnRhaW5zIHRoZSBzZXF1ZW5jZSBvZiBjaGFyYWN0ZXJzCisgICAgICAgICAgICBjdXJyZW50bHkgY29udGFpbmVkIGluIHRoZSBzdHJpbmcgYnVpbGRlciBhcmd1bWVudC4gVGhlIGNvbnRlbnRzIG9mIHRoZQorICAgICAgICAgICAgc3RyaW5nIGJ1aWxkZXIgYXJlIGNvcGllZDsgc3Vic2VxdWVudCBtb2RpZmljYXRpb24gb2YgdGhlIHN0cmluZyBidWlsZGVyCisgICAgICAgICAgICBkb2VzIG5vdCBhZmZlY3QgdGhlIG5ld2x5IGNyZWF0ZWQgc3RyaW5nLgorCisgICAgICAgICAgICA8cD4gVGhpcyBjb25zdHJ1Y3RvciBpcyBwcm92aWRlZCB0byBlYXNlIG1pZ3JhdGlvbiB0byA8Y29kZT5TdHJpbmdCdWlsZGVyPC9jb2RlPi4gT2J0YWluaW5nIGEgc3RyaW5nIGZyb20gYSBzdHJpbmcgYnVpbGRlciB2aWEgdGhlIDxjb2RlPnRvU3RyaW5nPC9jb2RlPiBtZXRob2QgaXMgbGlrZWx5IHRvIHJ1biBmYXN0ZXIgYW5kIGlzIGdlbmVyYWxseSBwcmVmZXJyZWQuPC9kaXY+CisgICAgICAgIDxkbD48ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+UGFyYW1ldGVyczo8L3NwYW4+PC9kdD48ZGQ+PGNvZGU+YnVpbGRlcjwvY29kZT4gLSBBIDxjb2RlPlN0cmluZ0J1aWxkZXI8L2NvZGU+PC9kZD48ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+U2luY2U6PC9zcGFuPjwvZHQ+CisgICAgICAgICAgICA8ZGQ+MS41PC9kZD48L2RsPgorICAgIDwvbGk+Cis8L3VsPgorPC9saT4KKzwvdWw+Cis8IS0tID09PT09PT09PT09PSBNRVRIT0QgREVUQUlMID09PT09PT09PT0gLS0+Cis8dWwgY2xhc3M9ImJsb2NrTGlzdCI+Cis8bGkgY2xhc3M9ImJsb2NrTGlzdCI+PGEgbmFtZT0ibWV0aG9kX2RldGFpbCI+CisgICAgPCEtLSAgIC0tPgorPC9hPgorPGgzPk1ldGhvZCBEZXRhaWw8L2gzPgorPGEgbmFtZT0ibGVuZ3RoKCkiPgorICAgIDwhLS0gICAtLT4KKzwvYT4KKzx1bCBjbGFzcz0iYmxvY2tMaXN0Ij4KKyAgICA8bGkgY2xhc3M9ImJsb2NrTGlzdCI+CisgICAgICAgIDxoND5sZW5ndGg8L2g0PgorICAgICAgICA8cHJlPnB1YmxpYyZuYnNwO2ludCZuYnNwO2xlbmd0aCgpPC9wcmU+CisgICAgICAgIDxkaXYgY2xhc3M9ImJsb2NrIj5SZXR1cm5zIHRoZSBsZW5ndGggb2YgdGhpcyBzdHJpbmcuCisgICAgICAgICAgICBUaGUgbGVuZ3RoIGlzIGVxdWFsIHRvIHRoZSBudW1iZXIgb2YgPGEgaHJlZj0iQ2hhcmFjdGVyLmh0bWwjdW5pY29kZSI+VW5pY29kZQorICAgICAgICAgICAgICAgIGNvZGUgdW5pdHM8L2E+IGluIHRoZSBzdHJpbmcuPC9kaXY+CisgICAgICAgIDxkbD4KKyAgICAgICAgICAgIDxkdD48c3Ryb25nPlNwZWNpZmllZCBieTo8L3N0cm9uZz48L2R0PgorICAgICAgICAgICAgPGRkPjxjb2RlPjxhIGhyZWY9Ii4uLy4uL2phdmEvbGFuZy9DaGFyU2VxdWVuY2UuaHRtbCNsZW5ndGgoKSI+bGVuZ3RoPC9hPjwvY29kZT4mbmJzcDtpbiBpbnRlcmZhY2UmbmJzcDs8Y29kZT48YSBocmVmPSIuLi8uLi9qYXZhL2xhbmcvQ2hhclNlcXVlbmNlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gamF2YS5sYW5nIj5DaGFyU2VxdWVuY2U8L2E+PC9jb2RlPjwvZGQ+CisgICAgICAgICAgICA8ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+UmV0dXJuczo8L3NwYW4+PC9kdD48ZGQ+dGhlIGxlbmd0aCBvZiB0aGUgc2VxdWVuY2Ugb2YgY2hhcmFjdGVycyByZXByZXNlbnRlZCBieSB0aGlzCisgICAgICAgICAgICBvYmplY3QuPC9kZD48L2RsPgorICAgIDwvbGk+Cis8L3VsPgorPGEgbmFtZT0iaXNFbXB0eSgpIj4KKyAgICA8IS0tICAgLS0+Cis8L2E+Cis8dWwgY2xhc3M9ImJsb2NrTGlzdCI+CisgICAgPGxpIGNsYXNzPSJibG9ja0xpc3QiPgorICAgICAgICA8aDQ+aXNFbXB0eTwvaDQ+CisgICAgICAgIDxwcmU+cHVibGljJm5ic3A7Ym9vbGVhbiZuYnNwO2lzRW1wdHkoKTwvcHJlPgorICAgICAgICA8ZGl2IGNsYXNzPSJibG9jayI+UmV0dXJucyA8dHQ+dHJ1ZTwvdHQ+IGlmLCBhbmQgb25seSBpZiwgPGEgaHJlZj0iLi4vLi4vamF2YS9sYW5nL1N0cmluZy5odG1sI2xlbmd0aCgpIj48Y29kZT5sZW5ndGgoKTwvY29kZT48L2E+IGlzIDx0dD4wPC90dD4uPC9kaXY+CisgICAgICAgIDxkbD48ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+UmV0dXJuczo8L3NwYW4+PC9kdD48ZGQ+PHR0PnRydWU8L3R0PiBpZiA8YSBocmVmPSIuLi8uLi9qYXZhL2xhbmcvU3RyaW5nLmh0bWwjbGVuZ3RoKCkiPjxjb2RlPmxlbmd0aCgpPC9jb2RlPjwvYT4gaXMgPHR0PjA8L3R0Piwgb3RoZXJ3aXNlCisgICAgICAgICAgICA8dHQ+ZmFsc2U8L3R0PjwvZGQ+PGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPlNpbmNlOjwvc3Bhbj48L2R0PgorICAgICAgICAgICAgPGRkPjEuNjwvZGQ+PC9kbD4KKyAgICA8L2xpPgorPC91bD4KKzxhIG5hbWU9ImNoYXJBdChpbnQpIj4KKyAgICA8IS0tICAgLS0+Cis8L2E+Cis8dWwgY2xhc3M9ImJsb2NrTGlzdCI+CisgICAgPGxpIGNsYXNzPSJibG9ja0xpc3QiPgorICAgICAgICA8aDQ+Y2hhckF0PC9oND4KKyAgICAgICAgPHByZT5wdWJsaWMmbmJzcDtjaGFyJm5ic3A7Y2hhckF0KGludCZuYnNwO2luZGV4KTwvcHJlPgorICAgICAgICA8ZGl2IGNsYXNzPSJibG9jayI+UmV0dXJucyB0aGUgPGNvZGU+Y2hhcjwvY29kZT4gdmFsdWUgYXQgdGhlCisgICAgICAgICAgICBzcGVjaWZpZWQgaW5kZXguIEFuIGluZGV4IHJhbmdlcyBmcm9tIDxjb2RlPjA8L2NvZGU+IHRvCisgICAgICAgICAgICA8Y29kZT5sZW5ndGgoKSAtIDE8L2NvZGU+LiBUaGUgZmlyc3QgPGNvZGU+Y2hhcjwvY29kZT4gdmFsdWUgb2YgdGhlIHNlcXVlbmNlCisgICAgICAgICAgICBpcyBhdCBpbmRleCA8Y29kZT4wPC9jb2RlPiwgdGhlIG5leHQgYXQgaW5kZXggPGNvZGU+MTwvY29kZT4sCisgICAgICAgICAgICBhbmQgc28gb24sIGFzIGZvciBhcnJheSBpbmRleGluZy4KKworICAgICAgICAgICAgPHA+SWYgdGhlIDxjb2RlPmNoYXI8L2NvZGU+IHZhbHVlIHNwZWNpZmllZCBieSB0aGUgaW5kZXggaXMgYQorICAgICAgICAgICAgICAgIDxhIGhyZWY9IkNoYXJhY3Rlci5odG1sI3VuaWNvZGUiPnN1cnJvZ2F0ZTwvYT4sIHRoZSBzdXJyb2dhdGUKKyAgICAgICAgICAgICAgICB2YWx1ZSBpcyByZXR1cm5lZC48L2Rpdj4KKyAgICAgICAgPGRsPgorICAgICAgICAgICAgPGR0PjxzdHJvbmc+U3BlY2lmaWVkIGJ5Ojwvc3Ryb25nPjwvZHQ+CisgICAgICAgICAgICA8ZGQ+PGNvZGU+PGEgaHJlZj0iLi4vLi4vamF2YS9sYW5nL0NoYXJTZXF1ZW5jZS5odG1sI2NoYXJBdChpbnQpIj5jaGFyQXQ8L2E+PC9jb2RlPiZuYnNwO2luIGludGVyZmFjZSZuYnNwOzxjb2RlPjxhIGhyZWY9Ii4uLy4uL2phdmEvbGFuZy9DaGFyU2VxdWVuY2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBqYXZhLmxhbmciPkNoYXJTZXF1ZW5jZTwvYT48L2NvZGU+PC9kZD4KKyAgICAgICAgICAgIDxkdD48c3BhbiBjbGFzcz0ic3Ryb25nIj5QYXJhbWV0ZXJzOjwvc3Bhbj48L2R0PjxkZD48Y29kZT5pbmRleDwvY29kZT4gLSB0aGUgaW5kZXggb2YgdGhlIDxjb2RlPmNoYXI8L2NvZGU+IHZhbHVlLjwvZGQ+CisgICAgICAgICAgICA8ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+UmV0dXJuczo8L3NwYW4+PC9kdD48ZGQ+dGhlIDxjb2RlPmNoYXI8L2NvZGU+IHZhbHVlIGF0IHRoZSBzcGVjaWZpZWQgaW5kZXggb2YgdGhpcyBzdHJpbmcuCisgICAgICAgICAgICBUaGUgZmlyc3QgPGNvZGU+Y2hhcjwvY29kZT4gdmFsdWUgaXMgYXQgaW5kZXggPGNvZGU+MDwvY29kZT4uPC9kZD4KKyAgICAgICAgICAgIDxkdD48c3BhbiBjbGFzcz0ic3Ryb25nIj5UaHJvd3M6PC9zcGFuPjwvZHQ+CisgICAgICAgICAgICA8ZGQ+PGNvZGU+PGEgaHJlZj0iLi4vLi4vamF2YS9sYW5nL0luZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb24uaHRtbCIgdGl0bGU9ImNsYXNzIGluIGphdmEubGFuZyI+SW5kZXhPdXRPZkJvdW5kc0V4Y2VwdGlvbjwvYT48L2NvZGU+IC0gaWYgdGhlIDxjb2RlPmluZGV4PC9jb2RlPgorICAgICAgICAgICAgICAgIGFyZ3VtZW50IGlzIG5lZ2F0aXZlIG9yIG5vdCBsZXNzIHRoYW4gdGhlIGxlbmd0aCBvZiB0aGlzCisgICAgICAgICAgICAgICAgc3RyaW5nLjwvZGQ+PC9kbD4KKyAgICA8L2xpPgorPC91bD4KKzxhIG5hbWU9ImNvZGVQb2ludEF0KGludCkiPgorICAgIDwhLS0gICAtLT4KKzwvYT4KKzx1bCBjbGFzcz0iYmxvY2tMaXN0Ij4KKyAgICA8bGkgY2xhc3M9ImJsb2NrTGlzdCI+CisgICAgICAgIDxoND5jb2RlUG9pbnRBdDwvaDQ+CisgICAgICAgIDxwcmU+cHVibGljJm5ic3A7aW50Jm5ic3A7Y29kZVBvaW50QXQoaW50Jm5ic3A7aW5kZXgpPC9wcmU+CisgICAgICAgIDxkaXYgY2xhc3M9ImJsb2NrIj5SZXR1cm5zIHRoZSBjaGFyYWN0ZXIgKFVuaWNvZGUgY29kZSBwb2ludCkgYXQgdGhlIHNwZWNpZmllZAorICAgICAgICAgICAgaW5kZXguIFRoZSBpbmRleCByZWZlcnMgdG8gPGNvZGU+Y2hhcjwvY29kZT4gdmFsdWVzCisgICAgICAgICAgICAoVW5pY29kZSBjb2RlIHVuaXRzKSBhbmQgcmFuZ2VzIGZyb20gPGNvZGU+MDwvY29kZT4gdG8KKyAgICAgICAgICAgIDxhIGhyZWY9Ii4uLy4uL2phdmEvbGFuZy9TdHJpbmcuaHRtbCNsZW5ndGgoKSI+PGNvZGU+bGVuZ3RoKCk8L2NvZGU+PC9hPjxjb2RlPiAtIDE8L2NvZGU+LgorCisgICAgICAgICAgICA8cD4gSWYgdGhlIDxjb2RlPmNoYXI8L2NvZGU+IHZhbHVlIHNwZWNpZmllZCBhdCB0aGUgZ2l2ZW4gaW5kZXgKKyAgICAgICAgICAgICAgICBpcyBpbiB0aGUgaGlnaC1zdXJyb2dhdGUgcmFuZ2UsIHRoZSBmb2xsb3dpbmcgaW5kZXggaXMgbGVzcworICAgICAgICAgICAgICAgIHRoYW4gdGhlIGxlbmd0aCBvZiB0aGlzIDxjb2RlPlN0cmluZzwvY29kZT4sIGFuZCB0aGUKKyAgICAgICAgICAgICAgICA8Y29kZT5jaGFyPC9jb2RlPiB2YWx1ZSBhdCB0aGUgZm9sbG93aW5nIGluZGV4IGlzIGluIHRoZQorICAgICAgICAgICAgICAgIGxvdy1zdXJyb2dhdGUgcmFuZ2UsIHRoZW4gdGhlIHN1cHBsZW1lbnRhcnkgY29kZSBwb2ludAorICAgICAgICAgICAgICAgIGNvcnJlc3BvbmRpbmcgdG8gdGhpcyBzdXJyb2dhdGUgcGFpciBpcyByZXR1cm5lZC4gT3RoZXJ3aXNlLAorICAgICAgICAgICAgICAgIHRoZSA8Y29kZT5jaGFyPC9jb2RlPiB2YWx1ZSBhdCB0aGUgZ2l2ZW4gaW5kZXggaXMgcmV0dXJuZWQuPC9kaXY+CisgICAgICAgIDxkbD48ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+UGFyYW1ldGVyczo8L3NwYW4+PC9kdD48ZGQ+PGNvZGU+aW5kZXg8L2NvZGU+IC0gdGhlIGluZGV4IHRvIHRoZSA8Y29kZT5jaGFyPC9jb2RlPiB2YWx1ZXM8L2RkPgorICAgICAgICAgICAgPGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPlJldHVybnM6PC9zcGFuPjwvZHQ+PGRkPnRoZSBjb2RlIHBvaW50IHZhbHVlIG9mIHRoZSBjaGFyYWN0ZXIgYXQgdGhlCisgICAgICAgICAgICAgICAgPGNvZGU+aW5kZXg8L2NvZGU+PC9kZD4KKyAgICAgICAgICAgIDxkdD48c3BhbiBjbGFzcz0ic3Ryb25nIj5UaHJvd3M6PC9zcGFuPjwvZHQ+CisgICAgICAgICAgICA8ZGQ+PGNvZGU+PGEgaHJlZj0iLi4vLi4vamF2YS9sYW5nL0luZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb24uaHRtbCIgdGl0bGU9ImNsYXNzIGluIGphdmEubGFuZyI+SW5kZXhPdXRPZkJvdW5kc0V4Y2VwdGlvbjwvYT48L2NvZGU+IC0gaWYgdGhlIDxjb2RlPmluZGV4PC9jb2RlPgorICAgICAgICAgICAgICAgIGFyZ3VtZW50IGlzIG5lZ2F0aXZlIG9yIG5vdCBsZXNzIHRoYW4gdGhlIGxlbmd0aCBvZiB0aGlzCisgICAgICAgICAgICAgICAgc3RyaW5nLjwvZGQ+PGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPlNpbmNlOjwvc3Bhbj48L2R0PgorICAgICAgICAgICAgPGRkPjEuNTwvZGQ+PC9kbD4KKyAgICA8L2xpPgorPC91bD4KKzxhIG5hbWU9ImNvZGVQb2ludEJlZm9yZShpbnQpIj4KKyAgICA8IS0tICAgLS0+Cis8L2E+Cis8dWwgY2xhc3M9ImJsb2NrTGlzdCI+CisgICAgPGxpIGNsYXNzPSJibG9ja0xpc3QiPgorICAgICAgICA8aDQ+Y29kZVBvaW50QmVmb3JlPC9oND4KKyAgICAgICAgPHByZT5wdWJsaWMmbmJzcDtpbnQmbmJzcDtjb2RlUG9pbnRCZWZvcmUoaW50Jm5ic3A7aW5kZXgpPC9wcmU+CisgICAgICAgIDxkaXYgY2xhc3M9ImJsb2NrIj5SZXR1cm5zIHRoZSBjaGFyYWN0ZXIgKFVuaWNvZGUgY29kZSBwb2ludCkgYmVmb3JlIHRoZSBzcGVjaWZpZWQKKyAgICAgICAgICAgIGluZGV4LiBUaGUgaW5kZXggcmVmZXJzIHRvIDxjb2RlPmNoYXI8L2NvZGU+IHZhbHVlcworICAgICAgICAgICAgKFVuaWNvZGUgY29kZSB1bml0cykgYW5kIHJhbmdlcyBmcm9tIDxjb2RlPjE8L2NvZGU+IHRvIDxhIGhyZWY9Ii4uLy4uL2phdmEvbGFuZy9DaGFyU2VxdWVuY2UuaHRtbCNsZW5ndGgoKSI+PGNvZGU+bGVuZ3RoPC9jb2RlPjwvYT4uCisKKyAgICAgICAgICAgIDxwPiBJZiB0aGUgPGNvZGU+Y2hhcjwvY29kZT4gdmFsdWUgYXQgPGNvZGU+KGluZGV4IC0gMSk8L2NvZGU+CisgICAgICAgICAgICAgICAgaXMgaW4gdGhlIGxvdy1zdXJyb2dhdGUgcmFuZ2UsIDxjb2RlPihpbmRleCAtIDIpPC9jb2RlPiBpcyBub3QKKyAgICAgICAgICAgICAgICBuZWdhdGl2ZSwgYW5kIHRoZSA8Y29kZT5jaGFyPC9jb2RlPiB2YWx1ZSBhdCA8Y29kZT4oaW5kZXggLQorICAgICAgICAgICAgICAgICAgICAyKTwvY29kZT4gaXMgaW4gdGhlIGhpZ2gtc3Vycm9nYXRlIHJhbmdlLCB0aGVuIHRoZQorICAgICAgICAgICAgICAgIHN1cHBsZW1lbnRhcnkgY29kZSBwb2ludCB2YWx1ZSBvZiB0aGUgc3Vycm9nYXRlIHBhaXIgaXMKKyAgICAgICAgICAgICAgICByZXR1cm5lZC4gSWYgdGhlIDxjb2RlPmNoYXI8L2NvZGU+IHZhbHVlIGF0IDxjb2RlPmluZGV4IC0KKyAgICAgICAgICAgICAgICAgICAgMTwvY29kZT4gaXMgYW4gdW5wYWlyZWQgbG93LXN1cnJvZ2F0ZSBvciBhIGhpZ2gtc3Vycm9nYXRlLCB0aGUKKyAgICAgICAgICAgICAgICBzdXJyb2dhdGUgdmFsdWUgaXMgcmV0dXJuZWQuPC9kaXY+CisgICAgICAgIDxkbD48ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+UGFyYW1ldGVyczo8L3NwYW4+PC9kdD48ZGQ+PGNvZGU+aW5kZXg8L2NvZGU+IC0gdGhlIGluZGV4IGZvbGxvd2luZyB0aGUgY29kZSBwb2ludCB0aGF0IHNob3VsZCBiZSByZXR1cm5lZDwvZGQ+CisgICAgICAgICAgICA8ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+UmV0dXJuczo8L3NwYW4+PC9kdD48ZGQ+dGhlIFVuaWNvZGUgY29kZSBwb2ludCB2YWx1ZSBiZWZvcmUgdGhlIGdpdmVuIGluZGV4LjwvZGQ+CisgICAgICAgICAgICA8ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+VGhyb3dzOjwvc3Bhbj48L2R0PgorICAgICAgICAgICAgPGRkPjxjb2RlPjxhIGhyZWY9Ii4uLy4uL2phdmEvbGFuZy9JbmRleE91dE9mQm91bmRzRXhjZXB0aW9uLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBqYXZhLmxhbmciPkluZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb248L2E+PC9jb2RlPiAtIGlmIHRoZSA8Y29kZT5pbmRleDwvY29kZT4KKyAgICAgICAgICAgICAgICBhcmd1bWVudCBpcyBsZXNzIHRoYW4gMSBvciBncmVhdGVyIHRoYW4gdGhlIGxlbmd0aAorICAgICAgICAgICAgICAgIG9mIHRoaXMgc3RyaW5nLjwvZGQ+PGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPlNpbmNlOjwvc3Bhbj48L2R0PgorICAgICAgICAgICAgPGRkPjEuNTwvZGQ+PC9kbD4KKyAgICA8L2xpPgorPC91bD4KKzxhIG5hbWU9ImNvZGVQb2ludENvdW50KGludCwgaW50KSI+CisgICAgPCEtLSAgIC0tPgorPC9hPgorPHVsIGNsYXNzPSJibG9ja0xpc3QiPgorICAgIDxsaSBjbGFzcz0iYmxvY2tMaXN0Ij4KKyAgICAgICAgPGg0PmNvZGVQb2ludENvdW50PC9oND4KKzxwcmU+cHVibGljJm5ic3A7aW50Jm5ic3A7Y29kZVBvaW50Q291bnQoaW50Jm5ic3A7YmVnaW5JbmRleCwKKyAgICAgICAgICAgICAgICAgaW50Jm5ic3A7ZW5kSW5kZXgpPC9wcmU+CisgICAgICAgIDxkaXYgY2xhc3M9ImJsb2NrIj5SZXR1cm5zIHRoZSBudW1iZXIgb2YgVW5pY29kZSBjb2RlIHBvaW50cyBpbiB0aGUgc3BlY2lmaWVkIHRleHQKKyAgICAgICAgICAgIHJhbmdlIG9mIHRoaXMgPGNvZGU+U3RyaW5nPC9jb2RlPi4gVGhlIHRleHQgcmFuZ2UgYmVnaW5zIGF0IHRoZQorICAgICAgICAgICAgc3BlY2lmaWVkIDxjb2RlPmJlZ2luSW5kZXg8L2NvZGU+IGFuZCBleHRlbmRzIHRvIHRoZQorICAgICAgICAgICAgPGNvZGU+Y2hhcjwvY29kZT4gYXQgaW5kZXggPGNvZGU+ZW5kSW5kZXggLSAxPC9jb2RlPi4gVGh1cyB0aGUKKyAgICAgICAgICAgIGxlbmd0aCAoaW4gPGNvZGU+Y2hhcjwvY29kZT5zKSBvZiB0aGUgdGV4dCByYW5nZSBpcworICAgICAgICAgICAgPGNvZGU+ZW5kSW5kZXgtYmVnaW5JbmRleDwvY29kZT4uIFVucGFpcmVkIHN1cnJvZ2F0ZXMgd2l0aGluCisgICAgICAgICAgICB0aGUgdGV4dCByYW5nZSBjb3VudCBhcyBvbmUgY29kZSBwb2ludCBlYWNoLjwvZGl2PgorICAgICAgICA8ZGw+PGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPlBhcmFtZXRlcnM6PC9zcGFuPjwvZHQ+PGRkPjxjb2RlPmJlZ2luSW5kZXg8L2NvZGU+IC0gdGhlIGluZGV4IHRvIHRoZSBmaXJzdCA8Y29kZT5jaGFyPC9jb2RlPiBvZgorICAgICAgICAgICAgdGhlIHRleHQgcmFuZ2UuPC9kZD48ZGQ+PGNvZGU+ZW5kSW5kZXg8L2NvZGU+IC0gdGhlIGluZGV4IGFmdGVyIHRoZSBsYXN0IDxjb2RlPmNoYXI8L2NvZGU+IG9mCisgICAgICAgICAgICB0aGUgdGV4dCByYW5nZS48L2RkPgorICAgICAgICAgICAgPGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPlJldHVybnM6PC9zcGFuPjwvZHQ+PGRkPnRoZSBudW1iZXIgb2YgVW5pY29kZSBjb2RlIHBvaW50cyBpbiB0aGUgc3BlY2lmaWVkIHRleHQKKyAgICAgICAgICAgICAgICByYW5nZTwvZGQ+CisgICAgICAgICAgICA8ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+VGhyb3dzOjwvc3Bhbj48L2R0PgorICAgICAgICAgICAgPGRkPjxjb2RlPjxhIGhyZWY9Ii4uLy4uL2phdmEvbGFuZy9JbmRleE91dE9mQm91bmRzRXhjZXB0aW9uLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBqYXZhLmxhbmciPkluZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb248L2E+PC9jb2RlPiAtIGlmIHRoZQorICAgICAgICAgICAgICAgIDxjb2RlPmJlZ2luSW5kZXg8L2NvZGU+IGlzIG5lZ2F0aXZlLCBvciA8Y29kZT5lbmRJbmRleDwvY29kZT4KKyAgICAgICAgICAgICAgICBpcyBsYXJnZXIgdGhhbiB0aGUgbGVuZ3RoIG9mIHRoaXMgPGNvZGU+U3RyaW5nPC9jb2RlPiwgb3IKKyAgICAgICAgICAgICAgICA8Y29kZT5iZWdpbkluZGV4PC9jb2RlPiBpcyBsYXJnZXIgdGhhbiA8Y29kZT5lbmRJbmRleDwvY29kZT4uPC9kZD48ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+U2luY2U6PC9zcGFuPjwvZHQ+CisgICAgICAgICAgICA8ZGQ+MS41PC9kZD48L2RsPgorICAgIDwvbGk+Cis8L3VsPgorPGEgbmFtZT0ib2Zmc2V0QnlDb2RlUG9pbnRzKGludCwgaW50KSI+CisgICAgPCEtLSAgIC0tPgorPC9hPgorPHVsIGNsYXNzPSJibG9ja0xpc3QiPgorICAgIDxsaSBjbGFzcz0iYmxvY2tMaXN0Ij4KKyAgICAgICAgPGg0Pm9mZnNldEJ5Q29kZVBvaW50czwvaDQ+Cis8cHJlPnB1YmxpYyZuYnNwO2ludCZuYnNwO29mZnNldEJ5Q29kZVBvaW50cyhpbnQmbmJzcDtpbmRleCwKKyAgICAgICAgICAgICAgICAgICAgIGludCZuYnNwO2NvZGVQb2ludE9mZnNldCk8L3ByZT4KKyAgICAgICAgPGRpdiBjbGFzcz0iYmxvY2siPlJldHVybnMgdGhlIGluZGV4IHdpdGhpbiB0aGlzIDxjb2RlPlN0cmluZzwvY29kZT4gdGhhdCBpcworICAgICAgICAgICAgb2Zmc2V0IGZyb20gdGhlIGdpdmVuIDxjb2RlPmluZGV4PC9jb2RlPiBieQorICAgICAgICAgICAgPGNvZGU+Y29kZVBvaW50T2Zmc2V0PC9jb2RlPiBjb2RlIHBvaW50cy4gVW5wYWlyZWQgc3Vycm9nYXRlcworICAgICAgICAgICAgd2l0aGluIHRoZSB0ZXh0IHJhbmdlIGdpdmVuIGJ5IDxjb2RlPmluZGV4PC9jb2RlPiBhbmQKKyAgICAgICAgICAgIDxjb2RlPmNvZGVQb2ludE9mZnNldDwvY29kZT4gY291bnQgYXMgb25lIGNvZGUgcG9pbnQgZWFjaC48L2Rpdj4KKyAgICAgICAgPGRsPjxkdD48c3BhbiBjbGFzcz0ic3Ryb25nIj5QYXJhbWV0ZXJzOjwvc3Bhbj48L2R0PjxkZD48Y29kZT5pbmRleDwvY29kZT4gLSB0aGUgaW5kZXggdG8gYmUgb2Zmc2V0PC9kZD48ZGQ+PGNvZGU+Y29kZVBvaW50T2Zmc2V0PC9jb2RlPiAtIHRoZSBvZmZzZXQgaW4gY29kZSBwb2ludHM8L2RkPgorICAgICAgICAgICAgPGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPlJldHVybnM6PC9zcGFuPjwvZHQ+PGRkPnRoZSBpbmRleCB3aXRoaW4gdGhpcyA8Y29kZT5TdHJpbmc8L2NvZGU+PC9kZD4KKyAgICAgICAgICAgIDxkdD48c3BhbiBjbGFzcz0ic3Ryb25nIj5UaHJvd3M6PC9zcGFuPjwvZHQ+CisgICAgICAgICAgICA8ZGQ+PGNvZGU+PGEgaHJlZj0iLi4vLi4vamF2YS9sYW5nL0luZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb24uaHRtbCIgdGl0bGU9ImNsYXNzIGluIGphdmEubGFuZyI+SW5kZXhPdXRPZkJvdW5kc0V4Y2VwdGlvbjwvYT48L2NvZGU+IC0gaWYgPGNvZGU+aW5kZXg8L2NvZGU+CisgICAgICAgICAgICAgICAgaXMgbmVnYXRpdmUgb3IgbGFyZ2VyIHRoZW4gdGhlIGxlbmd0aCBvZiB0aGlzCisgICAgICAgICAgICAgICAgPGNvZGU+U3RyaW5nPC9jb2RlPiwgb3IgaWYgPGNvZGU+Y29kZVBvaW50T2Zmc2V0PC9jb2RlPiBpcyBwb3NpdGl2ZQorICAgICAgICAgICAgICAgIGFuZCB0aGUgc3Vic3RyaW5nIHN0YXJ0aW5nIHdpdGggPGNvZGU+aW5kZXg8L2NvZGU+IGhhcyBmZXdlcgorICAgICAgICAgICAgICAgIHRoYW4gPGNvZGU+Y29kZVBvaW50T2Zmc2V0PC9jb2RlPiBjb2RlIHBvaW50cywKKyAgICAgICAgICAgICAgICBvciBpZiA8Y29kZT5jb2RlUG9pbnRPZmZzZXQ8L2NvZGU+IGlzIG5lZ2F0aXZlIGFuZCB0aGUgc3Vic3RyaW5nCisgICAgICAgICAgICAgICAgYmVmb3JlIDxjb2RlPmluZGV4PC9jb2RlPiBoYXMgZmV3ZXIgdGhhbiB0aGUgYWJzb2x1dGUgdmFsdWUKKyAgICAgICAgICAgICAgICBvZiA8Y29kZT5jb2RlUG9pbnRPZmZzZXQ8L2NvZGU+IGNvZGUgcG9pbnRzLjwvZGQ+PGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPlNpbmNlOjwvc3Bhbj48L2R0PgorICAgICAgICAgICAgPGRkPjEuNTwvZGQ+PC9kbD4KKyAgICA8L2xpPgorPC91bD4KKzxhIG5hbWU9ImdldENoYXJzKGludCwgaW50LCBjaGFyW10sIGludCkiPgorICAgIDwhLS0gICAtLT4KKzwvYT4KKzx1bCBjbGFzcz0iYmxvY2tMaXN0Ij4KKyAgICA8bGkgY2xhc3M9ImJsb2NrTGlzdCI+CisgICAgICAgIDxoND5nZXRDaGFyczwvaDQ+Cis8cHJlPnB1YmxpYyZuYnNwO3ZvaWQmbmJzcDtnZXRDaGFycyhpbnQmbmJzcDtzcmNCZWdpbiwKKyAgICAgICAgICAgIGludCZuYnNwO3NyY0VuZCwKKyAgICAgICAgICAgIGNoYXJbXSZuYnNwO2RzdCwKKyAgICAgICAgICAgIGludCZuYnNwO2RzdEJlZ2luKTwvcHJlPgorICAgICAgICA8ZGl2IGNsYXNzPSJibG9jayI+Q29waWVzIGNoYXJhY3RlcnMgZnJvbSB0aGlzIHN0cmluZyBpbnRvIHRoZSBkZXN0aW5hdGlvbiBjaGFyYWN0ZXIKKyAgICAgICAgICAgIGFycmF5LgorICAgICAgICAgICAgPHA+CisgICAgICAgICAgICAgICAgVGhlIGZpcnN0IGNoYXJhY3RlciB0byBiZSBjb3BpZWQgaXMgYXQgaW5kZXggPGNvZGU+c3JjQmVnaW48L2NvZGU+OworICAgICAgICAgICAgICAgIHRoZSBsYXN0IGNoYXJhY3RlciB0byBiZSBjb3BpZWQgaXMgYXQgaW5kZXggPGNvZGU+c3JjRW5kLTE8L2NvZGU+CisgICAgICAgICAgICAgICAgKHRodXMgdGhlIHRvdGFsIG51bWJlciBvZiBjaGFyYWN0ZXJzIHRvIGJlIGNvcGllZCBpcworICAgICAgICAgICAgICAgIDxjb2RlPnNyY0VuZC1zcmNCZWdpbjwvY29kZT4pLiBUaGUgY2hhcmFjdGVycyBhcmUgY29waWVkIGludG8gdGhlCisgICAgICAgICAgICAgICAgc3ViYXJyYXkgb2YgPGNvZGU+ZHN0PC9jb2RlPiBzdGFydGluZyBhdCBpbmRleCA8Y29kZT5kc3RCZWdpbjwvY29kZT4KKyAgICAgICAgICAgICAgICBhbmQgZW5kaW5nIGF0IGluZGV4OgorICAgICAgICAgICAgPHA+PGJsb2NrcXVvdGU+PHByZT4KKyAgICAgZHN0YmVnaW4gKyAoc3JjRW5kLXNyY0JlZ2luKSAtIDEKKyA8L3ByZT48L2Jsb2NrcXVvdGU+PC9kaXY+CisgICAgICAgIDxkbD48ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+UGFyYW1ldGVyczo8L3NwYW4+PC9kdD48ZGQ+PGNvZGU+c3JjQmVnaW48L2NvZGU+IC0gaW5kZXggb2YgdGhlIGZpcnN0IGNoYXJhY3RlciBpbiB0aGUgc3RyaW5nCisgICAgICAgICAgICB0byBjb3B5LjwvZGQ+PGRkPjxjb2RlPnNyY0VuZDwvY29kZT4gLSBpbmRleCBhZnRlciB0aGUgbGFzdCBjaGFyYWN0ZXIgaW4gdGhlIHN0cmluZworICAgICAgICAgICAgdG8gY29weS48L2RkPjxkZD48Y29kZT5kc3Q8L2NvZGU+IC0gdGhlIGRlc3RpbmF0aW9uIGFycmF5LjwvZGQ+PGRkPjxjb2RlPmRzdEJlZ2luPC9jb2RlPiAtIHRoZSBzdGFydCBvZmZzZXQgaW4gdGhlIGRlc3RpbmF0aW9uIGFycmF5LjwvZGQ+CisgICAgICAgICAgICA8ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+VGhyb3dzOjwvc3Bhbj48L2R0PgorICAgICAgICAgICAgPGRkPjxjb2RlPjxhIGhyZWY9Ii4uLy4uL2phdmEvbGFuZy9JbmRleE91dE9mQm91bmRzRXhjZXB0aW9uLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBqYXZhLmxhbmciPkluZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb248L2E+PC9jb2RlPiAtIElmIGFueSBvZiB0aGUgZm9sbG93aW5nCisgICAgICAgICAgICAgICAgaXMgdHJ1ZToKKyAgICAgICAgICAgICAgICA8dWw+PGxpPjxjb2RlPnNyY0JlZ2luPC9jb2RlPiBpcyBuZWdhdGl2ZS4KKyAgICAgICAgICAgICAgICAgICAgPGxpPjxjb2RlPnNyY0JlZ2luPC9jb2RlPiBpcyBncmVhdGVyIHRoYW4gPGNvZGU+c3JjRW5kPC9jb2RlPgorICAgICAgICAgICAgICAgICAgICA8bGk+PGNvZGU+c3JjRW5kPC9jb2RlPiBpcyBncmVhdGVyIHRoYW4gdGhlIGxlbmd0aCBvZiB0aGlzCisgICAgICAgICAgICAgICAgICAgICAgICBzdHJpbmcKKyAgICAgICAgICAgICAgICAgICAgPGxpPjxjb2RlPmRzdEJlZ2luPC9jb2RlPiBpcyBuZWdhdGl2ZQorICAgICAgICAgICAgICAgICAgICA8bGk+PGNvZGU+ZHN0QmVnaW4rKHNyY0VuZC1zcmNCZWdpbik8L2NvZGU+IGlzIGxhcmdlciB0aGFuCisgICAgICAgICAgICAgICAgICAgICAgICA8Y29kZT5kc3QubGVuZ3RoPC9jb2RlPjwvdWw+PC9kZD48L2RsPgorICAgIDwvbGk+Cis8L3VsPgorPGEgbmFtZT0iZ2V0Qnl0ZXMoaW50LCBpbnQsIGJ5dGVbXSwgaW50KSI+CisgICAgPCEtLSAgIC0tPgorPC9hPgorPHVsIGNsYXNzPSJibG9ja0xpc3QiPgorICAgIDxsaSBjbGFzcz0iYmxvY2tMaXN0Ij4KKyAgICAgICAgPGg0PmdldEJ5dGVzPC9oND4KKzxwcmU+PGEgaHJlZj0iLi4vLi4vamF2YS9sYW5nL0RlcHJlY2F0ZWQuaHRtbCIgdGl0bGU9ImFubm90YXRpb24gaW4gamF2YS5sYW5nIj5ARGVwcmVjYXRlZDwvYT4KK3B1YmxpYyZuYnNwO3ZvaWQmbmJzcDtnZXRCeXRlcyhpbnQmbmJzcDtzcmNCZWdpbiwKKyAgICAgICAgICAgICAgICAgICAgICAgaW50Jm5ic3A7c3JjRW5kLAorICAgICAgICAgICAgICAgICAgICAgICBieXRlW10mbmJzcDtkc3QsCisgICAgICAgICAgICAgICAgICAgICAgIGludCZuYnNwO2RzdEJlZ2luKTwvcHJlPgorICAgICAgICA8ZGl2IGNsYXNzPSJibG9jayI+PHNwYW4gY2xhc3M9InN0cm9uZyI+RGVwcmVjYXRlZC48L3NwYW4+Jm5ic3A7PGk+VGhpcyBtZXRob2QgZG9lcyBub3QgcHJvcGVybHkgY29udmVydCBjaGFyYWN0ZXJzIGludG8KKyAgICAgICAgICAgIGJ5dGVzLiAgQXMgb2YgSkRLJm5ic3A7MS4xLCB0aGUgcHJlZmVycmVkIHdheSB0byBkbyB0aGlzIGlzIHZpYSB0aGUKKyAgICAgICAgICAgIDxhIGhyZWY9Ii4uLy4uL2phdmEvbGFuZy9TdHJpbmcuaHRtbCNnZXRCeXRlcygpIj48Y29kZT5nZXRCeXRlcygpPC9jb2RlPjwvYT4gbWV0aG9kLCB3aGljaCB1c2VzIHRoZSBwbGF0Zm9ybSdzIGRlZmF1bHQgY2hhcnNldC48L2k+PC9kaXY+CisgICAgICAgIDxkaXYgY2xhc3M9ImJsb2NrIj5Db3BpZXMgY2hhcmFjdGVycyBmcm9tIHRoaXMgc3RyaW5nIGludG8gdGhlIGRlc3RpbmF0aW9uIGJ5dGUgYXJyYXkuIEVhY2gKKyAgICAgICAgICAgIGJ5dGUgcmVjZWl2ZXMgdGhlIDggbG93LW9yZGVyIGJpdHMgb2YgdGhlIGNvcnJlc3BvbmRpbmcgY2hhcmFjdGVyLiBUaGUKKyAgICAgICAgICAgIGVpZ2h0IGhpZ2gtb3JkZXIgYml0cyBvZiBlYWNoIGNoYXJhY3RlciBhcmUgbm90IGNvcGllZCBhbmQgZG8gbm90CisgICAgICAgICAgICBwYXJ0aWNpcGF0ZSBpbiB0aGUgdHJhbnNmZXIgaW4gYW55IHdheS4KKworICAgICAgICAgICAgPHA+IFRoZSBmaXJzdCBjaGFyYWN0ZXIgdG8gYmUgY29waWVkIGlzIGF0IGluZGV4IDxjb2RlPnNyY0JlZ2luPC9jb2RlPjsgdGhlCisgICAgICAgICAgICAgICAgbGFzdCBjaGFyYWN0ZXIgdG8gYmUgY29waWVkIGlzIGF0IGluZGV4IDxjb2RlPnNyY0VuZC0xPC9jb2RlPi4gIFRoZSB0b3RhbAorICAgICAgICAgICAgICAgIG51bWJlciBvZiBjaGFyYWN0ZXJzIHRvIGJlIGNvcGllZCBpcyA8Y29kZT5zcmNFbmQtc3JjQmVnaW48L2NvZGU+LiBUaGUKKyAgICAgICAgICAgICAgICBjaGFyYWN0ZXJzLCBjb252ZXJ0ZWQgdG8gYnl0ZXMsIGFyZSBjb3BpZWQgaW50byB0aGUgc3ViYXJyYXkgb2YgPGNvZGU+ZHN0PC9jb2RlPiBzdGFydGluZyBhdCBpbmRleCA8Y29kZT5kc3RCZWdpbjwvY29kZT4gYW5kIGVuZGluZyBhdCBpbmRleDoKKworICAgICAgICAgICAgPGJsb2NrcXVvdGU+PHByZT4KKyAgICAgZHN0YmVnaW4gKyAoc3JjRW5kLXNyY0JlZ2luKSAtIDEKKyA8L3ByZT48L2Jsb2NrcXVvdGU+PC9kaXY+CisgICAgICAgIDxkbD48ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+UGFyYW1ldGVyczo8L3NwYW4+PC9kdD48ZGQ+PGNvZGU+c3JjQmVnaW48L2NvZGU+IC0gSW5kZXggb2YgdGhlIGZpcnN0IGNoYXJhY3RlciBpbiB0aGUgc3RyaW5nIHRvIGNvcHk8L2RkPjxkZD48Y29kZT5zcmNFbmQ8L2NvZGU+IC0gSW5kZXggYWZ0ZXIgdGhlIGxhc3QgY2hhcmFjdGVyIGluIHRoZSBzdHJpbmcgdG8gY29weTwvZGQ+PGRkPjxjb2RlPmRzdDwvY29kZT4gLSBUaGUgZGVzdGluYXRpb24gYXJyYXk8L2RkPjxkZD48Y29kZT5kc3RCZWdpbjwvY29kZT4gLSBUaGUgc3RhcnQgb2Zmc2V0IGluIHRoZSBkZXN0aW5hdGlvbiBhcnJheTwvZGQ+CisgICAgICAgICAgICA8ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+VGhyb3dzOjwvc3Bhbj48L2R0PgorICAgICAgICAgICAgPGRkPjxjb2RlPjxhIGhyZWY9Ii4uLy4uL2phdmEvbGFuZy9JbmRleE91dE9mQm91bmRzRXhjZXB0aW9uLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBqYXZhLmxhbmciPkluZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb248L2E+PC9jb2RlPiAtIElmIGFueSBvZiB0aGUgZm9sbG93aW5nIGlzIHRydWU6CisgICAgICAgICAgICAgICAgPHVsPgorICAgICAgICAgICAgICAgICAgICA8bGk+IDxjb2RlPnNyY0JlZ2luPC9jb2RlPiBpcyBuZWdhdGl2ZQorICAgICAgICAgICAgICAgICAgICA8bGk+IDxjb2RlPnNyY0JlZ2luPC9jb2RlPiBpcyBncmVhdGVyIHRoYW4gPGNvZGU+c3JjRW5kPC9jb2RlPgorICAgICAgICAgICAgICAgICAgICA8bGk+IDxjb2RlPnNyY0VuZDwvY29kZT4gaXMgZ3JlYXRlciB0aGFuIHRoZSBsZW5ndGggb2YgdGhpcyBTdHJpbmcKKyAgICAgICAgICAgICAgICAgICAgPGxpPiA8Y29kZT5kc3RCZWdpbjwvY29kZT4gaXMgbmVnYXRpdmUKKyAgICAgICAgICAgICAgICAgICAgPGxpPiA8Y29kZT5kc3RCZWdpbisoc3JjRW5kLXNyY0JlZ2luKTwvY29kZT4gaXMgbGFyZ2VyIHRoYW4gPGNvZGU+ZHN0Lmxlbmd0aDwvY29kZT4KKyAgICAgICAgICAgICAgICA8L3VsPjwvZGQ+PC9kbD4KKyAgICA8L2xpPgorPC91bD4KKzxhIG5hbWU9ImdldEJ5dGVzKGphdmEubGFuZy5TdHJpbmcpIj4KKyAgICA8IS0tICAgLS0+Cis8L2E+Cis8dWwgY2xhc3M9ImJsb2NrTGlzdCI+CisgICAgPGxpIGNsYXNzPSJibG9ja0xpc3QiPgorICAgICAgICA8aDQ+Z2V0Qnl0ZXM8L2g0PgorPHByZT5wdWJsaWMmbmJzcDtieXRlW10mbmJzcDtnZXRCeXRlcyg8YSBocmVmPSIuLi8uLi9qYXZhL2xhbmcvU3RyaW5nLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBqYXZhLmxhbmciPlN0cmluZzwvYT4mbmJzcDtjaGFyc2V0TmFtZSkKKyAgICAgICAgICAgICAgICB0aHJvd3MgPGEgaHJlZj0iLi4vLi4vamF2YS9pby9VbnN1cHBvcnRlZEVuY29kaW5nRXhjZXB0aW9uLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBqYXZhLmlvIj5VbnN1cHBvcnRlZEVuY29kaW5nRXhjZXB0aW9uPC9hPjwvcHJlPgorICAgICAgICA8ZGl2IGNsYXNzPSJibG9jayI+RW5jb2RlcyB0aGlzIDxjb2RlPlN0cmluZzwvY29kZT4gaW50byBhIHNlcXVlbmNlIG9mIGJ5dGVzIHVzaW5nIHRoZSBuYW1lZAorICAgICAgICAgICAgY2hhcnNldCwgc3RvcmluZyB0aGUgcmVzdWx0IGludG8gYSBuZXcgYnl0ZSBhcnJheS4KKworICAgICAgICAgICAgPHA+IFRoZSBiZWhhdmlvciBvZiB0aGlzIG1ldGhvZCB3aGVuIHRoaXMgc3RyaW5nIGNhbm5vdCBiZSBlbmNvZGVkIGluCisgICAgICAgICAgICAgICAgdGhlIGdpdmVuIGNoYXJzZXQgaXMgdW5zcGVjaWZpZWQuICBUaGUgPGEgaHJlZj0iLi4vLi4vamF2YS9uaW8vY2hhcnNldC9DaGFyc2V0RW5jb2Rlci5odG1sIiB0aXRsZT0iY2xhc3MgaW4gamF2YS5uaW8uY2hhcnNldCI+PGNvZGU+Q2hhcnNldEVuY29kZXI8L2NvZGU+PC9hPiBjbGFzcyBzaG91bGQgYmUgdXNlZCB3aGVuIG1vcmUgY29udHJvbAorICAgICAgICAgICAgICAgIG92ZXIgdGhlIGVuY29kaW5nIHByb2Nlc3MgaXMgcmVxdWlyZWQuPC9kaXY+CisgICAgICAgIDxkbD48ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+UGFyYW1ldGVyczo8L3NwYW4+PC9kdD48ZGQ+PGNvZGU+Y2hhcnNldE5hbWU8L2NvZGU+IC0gVGhlIG5hbWUgb2YgYSBzdXBwb3J0ZWQgPGEgaHJlZj0iLi4vLi4vamF2YS9uaW8vY2hhcnNldC9DaGFyc2V0Lmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBqYXZhLm5pby5jaGFyc2V0Ij5jaGFyc2V0PC9hPjwvZGQ+CisgICAgICAgICAgICA8ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+UmV0dXJuczo8L3NwYW4+PC9kdD48ZGQ+VGhlIHJlc3VsdGFudCBieXRlIGFycmF5PC9kZD4KKyAgICAgICAgICAgIDxkdD48c3BhbiBjbGFzcz0ic3Ryb25nIj5UaHJvd3M6PC9zcGFuPjwvZHQ+CisgICAgICAgICAgICA8ZGQ+PGNvZGU+PGEgaHJlZj0iLi4vLi4vamF2YS9pby9VbnN1cHBvcnRlZEVuY29kaW5nRXhjZXB0aW9uLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBqYXZhLmlvIj5VbnN1cHBvcnRlZEVuY29kaW5nRXhjZXB0aW9uPC9hPjwvY29kZT4gLSBJZiB0aGUgbmFtZWQgY2hhcnNldCBpcyBub3Qgc3VwcG9ydGVkPC9kZD48ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+U2luY2U6PC9zcGFuPjwvZHQ+CisgICAgICAgICAgICA8ZGQ+SkRLMS4xPC9kZD48L2RsPgorICAgIDwvbGk+Cis8L3VsPgorPGEgbmFtZT0iZ2V0Qnl0ZXMoamF2YS5uaW8uY2hhcnNldC5DaGFyc2V0KSI+CisgICAgPCEtLSAgIC0tPgorPC9hPgorPHVsIGNsYXNzPSJibG9ja0xpc3QiPgorICAgIDxsaSBjbGFzcz0iYmxvY2tMaXN0Ij4KKyAgICAgICAgPGg0PmdldEJ5dGVzPC9oND4KKyAgICAgICAgPHByZT5wdWJsaWMmbmJzcDtieXRlW10mbmJzcDtnZXRCeXRlcyg8YSBocmVmPSIuLi8uLi9qYXZhL25pby9jaGFyc2V0L0NoYXJzZXQuaHRtbCIgdGl0bGU9ImNsYXNzIGluIGphdmEubmlvLmNoYXJzZXQiPkNoYXJzZXQ8L2E+Jm5ic3A7Y2hhcnNldCk8L3ByZT4KKyAgICAgICAgPGRpdiBjbGFzcz0iYmxvY2siPkVuY29kZXMgdGhpcyA8Y29kZT5TdHJpbmc8L2NvZGU+IGludG8gYSBzZXF1ZW5jZSBvZiBieXRlcyB1c2luZyB0aGUgZ2l2ZW4KKyAgICAgICAgICAgIDxhIGhyZWY9Ii4uLy4uL2phdmEvbmlvL2NoYXJzZXQvQ2hhcnNldC5odG1sIiB0aXRsZT0iY2xhc3MgaW4gamF2YS5uaW8uY2hhcnNldCI+Y2hhcnNldDwvYT4sIHN0b3JpbmcgdGhlIHJlc3VsdCBpbnRvIGEKKyAgICAgICAgICAgIG5ldyBieXRlIGFycmF5LgorCisgICAgICAgICAgICA8cD4gVGhpcyBtZXRob2QgYWx3YXlzIHJlcGxhY2VzIG1hbGZvcm1lZC1pbnB1dCBhbmQgdW5tYXBwYWJsZS1jaGFyYWN0ZXIKKyAgICAgICAgICAgICAgICBzZXF1ZW5jZXMgd2l0aCB0aGlzIGNoYXJzZXQncyBkZWZhdWx0IHJlcGxhY2VtZW50IGJ5dGUgYXJyYXkuICBUaGUKKyAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi8uLi9qYXZhL25pby9jaGFyc2V0L0NoYXJzZXRFbmNvZGVyLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBqYXZhLm5pby5jaGFyc2V0Ij48Y29kZT5DaGFyc2V0RW5jb2RlcjwvY29kZT48L2E+IGNsYXNzIHNob3VsZCBiZSB1c2VkIHdoZW4gbW9yZQorICAgICAgICAgICAgICAgIGNvbnRyb2wgb3ZlciB0aGUgZW5jb2RpbmcgcHJvY2VzcyBpcyByZXF1aXJlZC48L2Rpdj4KKyAgICAgICAgPGRsPjxkdD48c3BhbiBjbGFzcz0ic3Ryb25nIj5QYXJhbWV0ZXJzOjwvc3Bhbj48L2R0PjxkZD48Y29kZT5jaGFyc2V0PC9jb2RlPiAtIFRoZSA8YSBocmVmPSIuLi8uLi9qYXZhL25pby9jaGFyc2V0L0NoYXJzZXQuaHRtbCIgdGl0bGU9ImNsYXNzIGluIGphdmEubmlvLmNoYXJzZXQiPkNoYXJzZXQ8L2E+IHRvIGJlIHVzZWQgdG8gZW5jb2RlCisgICAgICAgICAgICB0aGUgPGNvZGU+U3RyaW5nPC9jb2RlPjwvZGQ+CisgICAgICAgICAgICA8ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+UmV0dXJuczo8L3NwYW4+PC9kdD48ZGQ+VGhlIHJlc3VsdGFudCBieXRlIGFycmF5PC9kZD48ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+U2luY2U6PC9zcGFuPjwvZHQ+CisgICAgICAgICAgICA8ZGQ+MS42PC9kZD48L2RsPgorICAgIDwvbGk+Cis8L3VsPgorPGEgbmFtZT0iZ2V0Qnl0ZXMoKSI+CisgICAgPCEtLSAgIC0tPgorPC9hPgorPHVsIGNsYXNzPSJibG9ja0xpc3QiPgorICAgIDxsaSBjbGFzcz0iYmxvY2tMaXN0Ij4KKyAgICAgICAgPGg0PmdldEJ5dGVzPC9oND4KKyAgICAgICAgPHByZT5wdWJsaWMmbmJzcDtieXRlW10mbmJzcDtnZXRCeXRlcygpPC9wcmU+CisgICAgICAgIDxkaXYgY2xhc3M9ImJsb2NrIj5FbmNvZGVzIHRoaXMgPGNvZGU+U3RyaW5nPC9jb2RlPiBpbnRvIGEgc2VxdWVuY2Ugb2YgYnl0ZXMgdXNpbmcgdGhlCisgICAgICAgICAgICBwbGF0Zm9ybSdzIGRlZmF1bHQgY2hhcnNldCwgc3RvcmluZyB0aGUgcmVzdWx0IGludG8gYSBuZXcgYnl0ZSBhcnJheS4KKworICAgICAgICAgICAgPHA+IFRoZSBiZWhhdmlvciBvZiB0aGlzIG1ldGhvZCB3aGVuIHRoaXMgc3RyaW5nIGNhbm5vdCBiZSBlbmNvZGVkIGluCisgICAgICAgICAgICAgICAgdGhlIGRlZmF1bHQgY2hhcnNldCBpcyB1bnNwZWNpZmllZC4gIFRoZSA8YSBocmVmPSIuLi8uLi9qYXZhL25pby9jaGFyc2V0L0NoYXJzZXRFbmNvZGVyLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBqYXZhLm5pby5jaGFyc2V0Ij48Y29kZT5DaGFyc2V0RW5jb2RlcjwvY29kZT48L2E+IGNsYXNzIHNob3VsZCBiZSB1c2VkIHdoZW4gbW9yZSBjb250cm9sCisgICAgICAgICAgICAgICAgb3ZlciB0aGUgZW5jb2RpbmcgcHJvY2VzcyBpcyByZXF1aXJlZC48L2Rpdj4KKyAgICAgICAgPGRsPjxkdD48c3BhbiBjbGFzcz0ic3Ryb25nIj5SZXR1cm5zOjwvc3Bhbj48L2R0PjxkZD5UaGUgcmVzdWx0YW50IGJ5dGUgYXJyYXk8L2RkPjxkdD48c3BhbiBjbGFzcz0ic3Ryb25nIj5TaW5jZTo8L3NwYW4+PC9kdD4KKyAgICAgICAgICAgIDxkZD5KREsxLjE8L2RkPjwvZGw+CisgICAgPC9saT4KKzwvdWw+Cis8YSBuYW1lPSJlcXVhbHMoamF2YS5sYW5nLk9iamVjdCkiPgorICAgIDwhLS0gICAtLT4KKzwvYT4KKzx1bCBjbGFzcz0iYmxvY2tMaXN0Ij4KKyAgICA8bGkgY2xhc3M9ImJsb2NrTGlzdCI+CisgICAgICAgIDxoND5lcXVhbHM8L2g0PgorICAgICAgICA8cHJlPnB1YmxpYyZuYnNwO2Jvb2xlYW4mbmJzcDtlcXVhbHMoPGEgaHJlZj0iLi4vLi4vamF2YS9sYW5nL09iamVjdC5odG1sIiB0aXRsZT0iY2xhc3MgaW4gamF2YS5sYW5nIj5PYmplY3Q8L2E+Jm5ic3A7YW5PYmplY3QpPC9wcmU+CisgICAgICAgIDxkaXYgY2xhc3M9ImJsb2NrIj5Db21wYXJlcyB0aGlzIHN0cmluZyB0byB0aGUgc3BlY2lmaWVkIG9iamVjdC4gIFRoZSByZXN1bHQgaXMgPGNvZGU+dHJ1ZTwvY29kZT4gaWYgYW5kIG9ubHkgaWYgdGhlIGFyZ3VtZW50IGlzIG5vdCA8Y29kZT5udWxsPC9jb2RlPiBhbmQgaXMgYSA8Y29kZT5TdHJpbmc8L2NvZGU+IG9iamVjdCB0aGF0IHJlcHJlc2VudHMgdGhlIHNhbWUgc2VxdWVuY2Ugb2YgY2hhcmFjdGVycyBhcyB0aGlzCisgICAgICAgICAgICBvYmplY3QuPC9kaXY+CisgICAgICAgIDxkbD4KKyAgICAgICAgICAgIDxkdD48c3Ryb25nPk92ZXJyaWRlczo8L3N0cm9uZz48L2R0PgorICAgICAgICAgICAgPGRkPjxjb2RlPjxhIGhyZWY9Ii4uLy4uL2phdmEvbGFuZy9PYmplY3QuaHRtbCNlcXVhbHMoamF2YS5sYW5nLk9iamVjdCkiPmVxdWFsczwvYT48L2NvZGU+Jm5ic3A7aW4gY2xhc3MmbmJzcDs8Y29kZT48YSBocmVmPSIuLi8uLi9qYXZhL2xhbmcvT2JqZWN0Lmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBqYXZhLmxhbmciPk9iamVjdDwvYT48L2NvZGU+PC9kZD4KKyAgICAgICAgICAgIDxkdD48c3BhbiBjbGFzcz0ic3Ryb25nIj5QYXJhbWV0ZXJzOjwvc3Bhbj48L2R0PjxkZD48Y29kZT5hbk9iamVjdDwvY29kZT4gLSBUaGUgb2JqZWN0IHRvIGNvbXBhcmUgdGhpcyA8Y29kZT5TdHJpbmc8L2NvZGU+IGFnYWluc3Q8L2RkPgorICAgICAgICAgICAgPGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPlJldHVybnM6PC9zcGFuPjwvZHQ+PGRkPjxjb2RlPnRydWU8L2NvZGU+IGlmIHRoZSBnaXZlbiBvYmplY3QgcmVwcmVzZW50cyBhIDxjb2RlPlN0cmluZzwvY29kZT4KKyAgICAgICAgICAgIGVxdWl2YWxlbnQgdG8gdGhpcyBzdHJpbmcsIDxjb2RlPmZhbHNlPC9jb2RlPiBvdGhlcndpc2U8L2RkPjxkdD48c3BhbiBjbGFzcz0ic3Ryb25nIj5TZWUgQWxzbzo8L3NwYW4+PC9kdD48ZGQ+PGEgaHJlZj0iLi4vLi4vamF2YS9sYW5nL1N0cmluZy5odG1sI2NvbXBhcmVUbyhqYXZhLmxhbmcuU3RyaW5nKSI+PGNvZGU+Y29tcGFyZVRvKFN0cmluZyk8L2NvZGU+PC9hPiwKKyAgICAgICAgICAgIDxhIGhyZWY9Ii4uLy4uL2phdmEvbGFuZy9TdHJpbmcuaHRtbCNlcXVhbHNJZ25vcmVDYXNlKGphdmEubGFuZy5TdHJpbmcpIj48Y29kZT5lcXVhbHNJZ25vcmVDYXNlKFN0cmluZyk8L2NvZGU+PC9hPjwvZGQ+PC9kbD4KKyAgICA8L2xpPgorPC91bD4KKzxhIG5hbWU9ImNvbnRlbnRFcXVhbHMoamF2YS5sYW5nLlN0cmluZ0J1ZmZlcikiPgorICAgIDwhLS0gICAtLT4KKzwvYT4KKzx1bCBjbGFzcz0iYmxvY2tMaXN0Ij4KKyAgICA8bGkgY2xhc3M9ImJsb2NrTGlzdCI+CisgICAgICAgIDxoND5jb250ZW50RXF1YWxzPC9oND4KKyAgICAgICAgPHByZT5wdWJsaWMmbmJzcDtib29sZWFuJm5ic3A7Y29udGVudEVxdWFscyg8YSBocmVmPSIuLi8uLi9qYXZhL2xhbmcvU3RyaW5nQnVmZmVyLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBqYXZhLmxhbmciPlN0cmluZ0J1ZmZlcjwvYT4mbmJzcDtzYik8L3ByZT4KKyAgICAgICAgPGRpdiBjbGFzcz0iYmxvY2siPkNvbXBhcmVzIHRoaXMgc3RyaW5nIHRvIHRoZSBzcGVjaWZpZWQgPGNvZGU+U3RyaW5nQnVmZmVyPC9jb2RlPi4gIFRoZSByZXN1bHQKKyAgICAgICAgICAgIGlzIDxjb2RlPnRydWU8L2NvZGU+IGlmIGFuZCBvbmx5IGlmIHRoaXMgPGNvZGU+U3RyaW5nPC9jb2RlPiByZXByZXNlbnRzIHRoZSBzYW1lCisgICAgICAgICAgICBzZXF1ZW5jZSBvZiBjaGFyYWN0ZXJzIGFzIHRoZSBzcGVjaWZpZWQgPGNvZGU+U3RyaW5nQnVmZmVyPC9jb2RlPi48L2Rpdj4KKyAgICAgICAgPGRsPjxkdD48c3BhbiBjbGFzcz0ic3Ryb25nIj5QYXJhbWV0ZXJzOjwvc3Bhbj48L2R0PjxkZD48Y29kZT5zYjwvY29kZT4gLSBUaGUgPGNvZGU+U3RyaW5nQnVmZmVyPC9jb2RlPiB0byBjb21wYXJlIHRoaXMgPGNvZGU+U3RyaW5nPC9jb2RlPiBhZ2FpbnN0PC9kZD4KKyAgICAgICAgICAgIDxkdD48c3BhbiBjbGFzcz0ic3Ryb25nIj5SZXR1cm5zOjwvc3Bhbj48L2R0PjxkZD48Y29kZT50cnVlPC9jb2RlPiBpZiB0aGlzIDxjb2RlPlN0cmluZzwvY29kZT4gcmVwcmVzZW50cyB0aGUgc2FtZQorICAgICAgICAgICAgICAgIHNlcXVlbmNlIG9mIGNoYXJhY3RlcnMgYXMgdGhlIHNwZWNpZmllZCA8Y29kZT5TdHJpbmdCdWZmZXI8L2NvZGU+LAorICAgICAgICAgICAgICAgIDxjb2RlPmZhbHNlPC9jb2RlPiBvdGhlcndpc2U8L2RkPjxkdD48c3BhbiBjbGFzcz0ic3Ryb25nIj5TaW5jZTo8L3NwYW4+PC9kdD4KKyAgICAgICAgICAgIDxkZD4xLjQ8L2RkPjwvZGw+CisgICAgPC9saT4KKzwvdWw+Cis8YSBuYW1lPSJjb250ZW50RXF1YWxzKGphdmEubGFuZy5DaGFyU2VxdWVuY2UpIj4KKyAgICA8IS0tICAgLS0+Cis8L2E+Cis8dWwgY2xhc3M9ImJsb2NrTGlzdCI+CisgICAgPGxpIGNsYXNzPSJibG9ja0xpc3QiPgorICAgICAgICA8aDQ+Y29udGVudEVxdWFsczwvaDQ+CisgICAgICAgIDxwcmU+cHVibGljJm5ic3A7Ym9vbGVhbiZuYnNwO2NvbnRlbnRFcXVhbHMoPGEgaHJlZj0iLi4vLi4vamF2YS9sYW5nL0NoYXJTZXF1ZW5jZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIGphdmEubGFuZyI+Q2hhclNlcXVlbmNlPC9hPiZuYnNwO2NzKTwvcHJlPgorICAgICAgICA8ZGl2IGNsYXNzPSJibG9jayI+Q29tcGFyZXMgdGhpcyBzdHJpbmcgdG8gdGhlIHNwZWNpZmllZCA8Y29kZT5DaGFyU2VxdWVuY2U8L2NvZGU+LiAgVGhlIHJlc3VsdAorICAgICAgICAgICAgaXMgPGNvZGU+dHJ1ZTwvY29kZT4gaWYgYW5kIG9ubHkgaWYgdGhpcyA8Y29kZT5TdHJpbmc8L2NvZGU+IHJlcHJlc2VudHMgdGhlIHNhbWUKKyAgICAgICAgICAgIHNlcXVlbmNlIG9mIGNoYXIgdmFsdWVzIGFzIHRoZSBzcGVjaWZpZWQgc2VxdWVuY2UuPC9kaXY+CisgICAgICAgIDxkbD48ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+UGFyYW1ldGVyczo8L3NwYW4+PC9kdD48ZGQ+PGNvZGU+Y3M8L2NvZGU+IC0gVGhlIHNlcXVlbmNlIHRvIGNvbXBhcmUgdGhpcyA8Y29kZT5TdHJpbmc8L2NvZGU+IGFnYWluc3Q8L2RkPgorICAgICAgICAgICAgPGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPlJldHVybnM6PC9zcGFuPjwvZHQ+PGRkPjxjb2RlPnRydWU8L2NvZGU+IGlmIHRoaXMgPGNvZGU+U3RyaW5nPC9jb2RlPiByZXByZXNlbnRzIHRoZSBzYW1lCisgICAgICAgICAgICAgICAgc2VxdWVuY2Ugb2YgY2hhciB2YWx1ZXMgYXMgdGhlIHNwZWNpZmllZCBzZXF1ZW5jZSwgPGNvZGU+ZmFsc2U8L2NvZGU+IG90aGVyd2lzZTwvZGQ+PGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPlNpbmNlOjwvc3Bhbj48L2R0PgorICAgICAgICAgICAgPGRkPjEuNTwvZGQ+PC9kbD4KKyAgICA8L2xpPgorPC91bD4KKzxhIG5hbWU9ImVxdWFsc0lnbm9yZUNhc2UoamF2YS5sYW5nLlN0cmluZykiPgorICAgIDwhLS0gICAtLT4KKzwvYT4KKzx1bCBjbGFzcz0iYmxvY2tMaXN0Ij4KKyAgICA8bGkgY2xhc3M9ImJsb2NrTGlzdCI+CisgICAgICAgIDxoND5lcXVhbHNJZ25vcmVDYXNlPC9oND4KKyAgICAgICAgPHByZT5wdWJsaWMmbmJzcDtib29sZWFuJm5ic3A7ZXF1YWxzSWdub3JlQ2FzZSg8YSBocmVmPSIuLi8uLi9qYXZhL2xhbmcvU3RyaW5nLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBqYXZhLmxhbmciPlN0cmluZzwvYT4mbmJzcDthbm90aGVyU3RyaW5nKTwvcHJlPgorICAgICAgICA8ZGl2IGNsYXNzPSJibG9jayI+Q29tcGFyZXMgdGhpcyA8Y29kZT5TdHJpbmc8L2NvZGU+IHRvIGFub3RoZXIgPGNvZGU+U3RyaW5nPC9jb2RlPiwgaWdub3JpbmcgY2FzZQorICAgICAgICAgICAgY29uc2lkZXJhdGlvbnMuICBUd28gc3RyaW5ncyBhcmUgY29uc2lkZXJlZCBlcXVhbCBpZ25vcmluZyBjYXNlIGlmIHRoZXkKKyAgICAgICAgICAgIGFyZSBvZiB0aGUgc2FtZSBsZW5ndGggYW5kIGNvcnJlc3BvbmRpbmcgY2hhcmFjdGVycyBpbiB0aGUgdHdvIHN0cmluZ3MKKyAgICAgICAgICAgIGFyZSBlcXVhbCBpZ25vcmluZyBjYXNlLgorCisgICAgICAgICAgICA8cD4gVHdvIGNoYXJhY3RlcnMgPGNvZGU+YzE8L2NvZGU+IGFuZCA8Y29kZT5jMjwvY29kZT4gYXJlIGNvbnNpZGVyZWQgdGhlIHNhbWUKKyAgICAgICAgICAgICAgICBpZ25vcmluZyBjYXNlIGlmIGF0IGxlYXN0IG9uZSBvZiB0aGUgZm9sbG93aW5nIGlzIHRydWU6CisgICAgICAgICAgICA8dWw+CisgICAgICAgICAgICAgICAgPGxpPiBUaGUgdHdvIGNoYXJhY3RlcnMgYXJlIHRoZSBzYW1lIChhcyBjb21wYXJlZCBieSB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGNvZGU+PT08L2NvZGU+IG9wZXJhdG9yKQorICAgICAgICAgICAgICAgIDxsaT4gQXBwbHlpbmcgdGhlIG1ldGhvZCA8YSBocmVmPSIuLi8uLi9qYXZhL2xhbmcvQ2hhcmFjdGVyLmh0bWwjdG9VcHBlckNhc2UoY2hhcikiPjxjb2RlPkNoYXJhY3Rlci50b1VwcGVyQ2FzZShjaGFyKTwvY29kZT48L2E+IHRvIGVhY2ggY2hhcmFjdGVyCisgICAgICAgICAgICAgICAgICAgIHByb2R1Y2VzIHRoZSBzYW1lIHJlc3VsdAorICAgICAgICAgICAgICAgIDxsaT4gQXBwbHlpbmcgdGhlIG1ldGhvZCA8YSBocmVmPSIuLi8uLi9qYXZhL2xhbmcvQ2hhcmFjdGVyLmh0bWwjdG9Mb3dlckNhc2UoY2hhcikiPjxjb2RlPkNoYXJhY3Rlci50b0xvd2VyQ2FzZShjaGFyKTwvY29kZT48L2E+IHRvIGVhY2ggY2hhcmFjdGVyCisgICAgICAgICAgICAgICAgICAgIHByb2R1Y2VzIHRoZSBzYW1lIHJlc3VsdAorICAgICAgICAgICAgPC91bD48L2Rpdj4KKyAgICAgICAgPGRsPjxkdD48c3BhbiBjbGFzcz0ic3Ryb25nIj5QYXJhbWV0ZXJzOjwvc3Bhbj48L2R0PjxkZD48Y29kZT5hbm90aGVyU3RyaW5nPC9jb2RlPiAtIFRoZSA8Y29kZT5TdHJpbmc8L2NvZGU+IHRvIGNvbXBhcmUgdGhpcyA8Y29kZT5TdHJpbmc8L2NvZGU+IGFnYWluc3Q8L2RkPgorICAgICAgICAgICAgPGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPlJldHVybnM6PC9zcGFuPjwvZHQ+PGRkPjxjb2RlPnRydWU8L2NvZGU+IGlmIHRoZSBhcmd1bWVudCBpcyBub3QgPGNvZGU+bnVsbDwvY29kZT4gYW5kIGl0CisgICAgICAgICAgICAgICAgcmVwcmVzZW50cyBhbiBlcXVpdmFsZW50IDxjb2RlPlN0cmluZzwvY29kZT4gaWdub3JpbmcgY2FzZTsgPGNvZGU+ZmFsc2U8L2NvZGU+IG90aGVyd2lzZTwvZGQ+PGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPlNlZSBBbHNvOjwvc3Bhbj48L2R0PjxkZD48YSBocmVmPSIuLi8uLi9qYXZhL2xhbmcvU3RyaW5nLmh0bWwjZXF1YWxzKGphdmEubGFuZy5PYmplY3QpIj48Y29kZT5lcXVhbHMoT2JqZWN0KTwvY29kZT48L2E+PC9kZD48L2RsPgorICAgIDwvbGk+Cis8L3VsPgorPGEgbmFtZT0iY29tcGFyZVRvKGphdmEubGFuZy5TdHJpbmcpIj4KKyAgICA8IS0tICAgLS0+Cis8L2E+Cis8dWwgY2xhc3M9ImJsb2NrTGlzdCI+CisgICAgPGxpIGNsYXNzPSJibG9ja0xpc3QiPgorICAgICAgICA8aDQ+Y29tcGFyZVRvPC9oND4KKyAgICAgICAgPHByZT5wdWJsaWMmbmJzcDtpbnQmbmJzcDtjb21wYXJlVG8oPGEgaHJlZj0iLi4vLi4vamF2YS9sYW5nL1N0cmluZy5odG1sIiB0aXRsZT0iY2xhc3MgaW4gamF2YS5sYW5nIj5TdHJpbmc8L2E+Jm5ic3A7YW5vdGhlclN0cmluZyk8L3ByZT4KKyAgICAgICAgPGRpdiBjbGFzcz0iYmxvY2siPkNvbXBhcmVzIHR3byBzdHJpbmdzIGxleGljb2dyYXBoaWNhbGx5LgorICAgICAgICAgICAgVGhlIGNvbXBhcmlzb24gaXMgYmFzZWQgb24gdGhlIFVuaWNvZGUgdmFsdWUgb2YgZWFjaCBjaGFyYWN0ZXIgaW4KKyAgICAgICAgICAgIHRoZSBzdHJpbmdzLiBUaGUgY2hhcmFjdGVyIHNlcXVlbmNlIHJlcHJlc2VudGVkIGJ5IHRoaXMKKyAgICAgICAgICAgIDxjb2RlPlN0cmluZzwvY29kZT4gb2JqZWN0IGlzIGNvbXBhcmVkIGxleGljb2dyYXBoaWNhbGx5IHRvIHRoZQorICAgICAgICAgICAgY2hhcmFjdGVyIHNlcXVlbmNlIHJlcHJlc2VudGVkIGJ5IHRoZSBhcmd1bWVudCBzdHJpbmcuIFRoZSByZXN1bHQgaXMKKyAgICAgICAgICAgIGEgbmVnYXRpdmUgaW50ZWdlciBpZiB0aGlzIDxjb2RlPlN0cmluZzwvY29kZT4gb2JqZWN0CisgICAgICAgICAgICBsZXhpY29ncmFwaGljYWxseSBwcmVjZWRlcyB0aGUgYXJndW1lbnQgc3RyaW5nLiBUaGUgcmVzdWx0IGlzIGEKKyAgICAgICAgICAgIHBvc2l0aXZlIGludGVnZXIgaWYgdGhpcyA8Y29kZT5TdHJpbmc8L2NvZGU+IG9iamVjdCBsZXhpY29ncmFwaGljYWxseQorICAgICAgICAgICAgZm9sbG93cyB0aGUgYXJndW1lbnQgc3RyaW5nLiBUaGUgcmVzdWx0IGlzIHplcm8gaWYgdGhlIHN0cmluZ3MKKyAgICAgICAgICAgIGFyZSBlcXVhbDsgPGNvZGU+Y29tcGFyZVRvPC9jb2RlPiByZXR1cm5zIDxjb2RlPjA8L2NvZGU+IGV4YWN0bHkgd2hlbgorICAgICAgICAgICAgdGhlIDxhIGhyZWY9Ii4uLy4uL2phdmEvbGFuZy9TdHJpbmcuaHRtbCNlcXVhbHMoamF2YS5sYW5nLk9iamVjdCkiPjxjb2RlPmVxdWFscyhPYmplY3QpPC9jb2RlPjwvYT4gbWV0aG9kIHdvdWxkIHJldHVybiA8Y29kZT50cnVlPC9jb2RlPi4KKyAgICAgICAgICAgIDxwPgorICAgICAgICAgICAgICAgIFRoaXMgaXMgdGhlIGRlZmluaXRpb24gb2YgbGV4aWNvZ3JhcGhpYyBvcmRlcmluZy4gSWYgdHdvIHN0cmluZ3MgYXJlCisgICAgICAgICAgICAgICAgZGlmZmVyZW50LCB0aGVuIGVpdGhlciB0aGV5IGhhdmUgZGlmZmVyZW50IGNoYXJhY3RlcnMgYXQgc29tZSBpbmRleAorICAgICAgICAgICAgICAgIHRoYXQgaXMgYSB2YWxpZCBpbmRleCBmb3IgYm90aCBzdHJpbmdzLCBvciB0aGVpciBsZW5ndGhzIGFyZSBkaWZmZXJlbnQsCisgICAgICAgICAgICAgICAgb3IgYm90aC4gSWYgdGhleSBoYXZlIGRpZmZlcmVudCBjaGFyYWN0ZXJzIGF0IG9uZSBvciBtb3JlIGluZGV4CisgICAgICAgICAgICAgICAgcG9zaXRpb25zLCBsZXQgPGk+azwvaT4gYmUgdGhlIHNtYWxsZXN0IHN1Y2ggaW5kZXg7IHRoZW4gdGhlIHN0cmluZworICAgICAgICAgICAgICAgIHdob3NlIGNoYXJhY3RlciBhdCBwb3NpdGlvbiA8aT5rPC9pPiBoYXMgdGhlIHNtYWxsZXIgdmFsdWUsIGFzCisgICAgICAgICAgICAgICAgZGV0ZXJtaW5lZCBieSB1c2luZyB0aGUgJmx0OyBvcGVyYXRvciwgbGV4aWNvZ3JhcGhpY2FsbHkgcHJlY2VkZXMgdGhlCisgICAgICAgICAgICAgICAgb3RoZXIgc3RyaW5nLiBJbiB0aGlzIGNhc2UsIDxjb2RlPmNvbXBhcmVUbzwvY29kZT4gcmV0dXJucyB0aGUKKyAgICAgICAgICAgICAgICBkaWZmZXJlbmNlIG9mIHRoZSB0d28gY2hhcmFjdGVyIHZhbHVlcyBhdCBwb3NpdGlvbiA8Y29kZT5rPC9jb2RlPiBpbgorICAgICAgICAgICAgICAgIHRoZSB0d28gc3RyaW5nIC0tIHRoYXQgaXMsIHRoZSB2YWx1ZToKKyAgICAgICAgICAgIDxibG9ja3F1b3RlPjxwcmU+CisgdGhpcy5jaGFyQXQoayktYW5vdGhlclN0cmluZy5jaGFyQXQoaykKKyA8L3ByZT48L2Jsb2NrcXVvdGU+CisgICAgICAgICAgICBJZiB0aGVyZSBpcyBubyBpbmRleCBwb3NpdGlvbiBhdCB3aGljaCB0aGV5IGRpZmZlciwgdGhlbiB0aGUgc2hvcnRlcgorICAgICAgICAgICAgc3RyaW5nIGxleGljb2dyYXBoaWNhbGx5IHByZWNlZGVzIHRoZSBsb25nZXIgc3RyaW5nLiBJbiB0aGlzIGNhc2UsCisgICAgICAgICAgICA8Y29kZT5jb21wYXJlVG88L2NvZGU+IHJldHVybnMgdGhlIGRpZmZlcmVuY2Ugb2YgdGhlIGxlbmd0aHMgb2YgdGhlCisgICAgICAgICAgICBzdHJpbmdzIC0tIHRoYXQgaXMsIHRoZSB2YWx1ZToKKyAgICAgICAgICAgIDxibG9ja3F1b3RlPjxwcmU+CisgdGhpcy5sZW5ndGgoKS1hbm90aGVyU3RyaW5nLmxlbmd0aCgpCisgPC9wcmU+PC9ibG9ja3F1b3RlPjwvZGl2PgorICAgICAgICA8ZGw+CisgICAgICAgICAgICA8ZHQ+PHN0cm9uZz5TcGVjaWZpZWQgYnk6PC9zdHJvbmc+PC9kdD4KKyAgICAgICAgICAgIDxkZD48Y29kZT48YSBocmVmPSIuLi8uLi9qYXZhL2xhbmcvQ29tcGFyYWJsZS5odG1sI2NvbXBhcmVUbyhUKSI+Y29tcGFyZVRvPC9hPjwvY29kZT4mbmJzcDtpbiBpbnRlcmZhY2UmbmJzcDs8Y29kZT48YSBocmVmPSIuLi8uLi9qYXZhL2xhbmcvQ29tcGFyYWJsZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIGphdmEubGFuZyI+Q29tcGFyYWJsZTwvYT4mbHQ7PGEgaHJlZj0iLi4vLi4vamF2YS9sYW5nL1N0cmluZy5odG1sIiB0aXRsZT0iY2xhc3MgaW4gamF2YS5sYW5nIj5TdHJpbmc8L2E+Jmd0OzwvY29kZT48L2RkPgorICAgICAgICAgICAgPGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPlBhcmFtZXRlcnM6PC9zcGFuPjwvZHQ+PGRkPjxjb2RlPmFub3RoZXJTdHJpbmc8L2NvZGU+IC0gdGhlIDxjb2RlPlN0cmluZzwvY29kZT4gdG8gYmUgY29tcGFyZWQuPC9kZD4KKyAgICAgICAgICAgIDxkdD48c3BhbiBjbGFzcz0ic3Ryb25nIj5SZXR1cm5zOjwvc3Bhbj48L2R0PjxkZD50aGUgdmFsdWUgPGNvZGU+MDwvY29kZT4gaWYgdGhlIGFyZ3VtZW50IHN0cmluZyBpcyBlcXVhbCB0bworICAgICAgICAgICAgdGhpcyBzdHJpbmc7IGEgdmFsdWUgbGVzcyB0aGFuIDxjb2RlPjA8L2NvZGU+IGlmIHRoaXMgc3RyaW5nCisgICAgICAgICAgICBpcyBsZXhpY29ncmFwaGljYWxseSBsZXNzIHRoYW4gdGhlIHN0cmluZyBhcmd1bWVudDsgYW5kIGEKKyAgICAgICAgICAgIHZhbHVlIGdyZWF0ZXIgdGhhbiA8Y29kZT4wPC9jb2RlPiBpZiB0aGlzIHN0cmluZyBpcworICAgICAgICAgICAgbGV4aWNvZ3JhcGhpY2FsbHkgZ3JlYXRlciB0aGFuIHRoZSBzdHJpbmcgYXJndW1lbnQuPC9kZD48L2RsPgorICAgIDwvbGk+Cis8L3VsPgorPGEgbmFtZT0iY29tcGFyZVRvSWdub3JlQ2FzZShqYXZhLmxhbmcuU3RyaW5nKSI+CisgICAgPCEtLSAgIC0tPgorPC9hPgorPHVsIGNsYXNzPSJibG9ja0xpc3QiPgorICAgIDxsaSBjbGFzcz0iYmxvY2tMaXN0Ij4KKyAgICAgICAgPGg0PmNvbXBhcmVUb0lnbm9yZUNhc2U8L2g0PgorICAgICAgICA8cHJlPnB1YmxpYyZuYnNwO2ludCZuYnNwO2NvbXBhcmVUb0lnbm9yZUNhc2UoPGEgaHJlZj0iLi4vLi4vamF2YS9sYW5nL1N0cmluZy5odG1sIiB0aXRsZT0iY2xhc3MgaW4gamF2YS5sYW5nIj5TdHJpbmc8L2E+Jm5ic3A7c3RyKTwvcHJlPgorICAgICAgICA8ZGl2IGNsYXNzPSJibG9jayI+Q29tcGFyZXMgdHdvIHN0cmluZ3MgbGV4aWNvZ3JhcGhpY2FsbHksIGlnbm9yaW5nIGNhc2UKKyAgICAgICAgICAgIGRpZmZlcmVuY2VzLiBUaGlzIG1ldGhvZCByZXR1cm5zIGFuIGludGVnZXIgd2hvc2Ugc2lnbiBpcyB0aGF0IG9mCisgICAgICAgICAgICBjYWxsaW5nIDxjb2RlPmNvbXBhcmVUbzwvY29kZT4gd2l0aCBub3JtYWxpemVkIHZlcnNpb25zIG9mIHRoZSBzdHJpbmdzCisgICAgICAgICAgICB3aGVyZSBjYXNlIGRpZmZlcmVuY2VzIGhhdmUgYmVlbiBlbGltaW5hdGVkIGJ5IGNhbGxpbmcKKyAgICAgICAgICAgIDxjb2RlPkNoYXJhY3Rlci50b0xvd2VyQ2FzZShDaGFyYWN0ZXIudG9VcHBlckNhc2UoY2hhcmFjdGVyKSk8L2NvZGU+IG9uCisgICAgICAgICAgICBlYWNoIGNoYXJhY3Rlci4KKyAgICAgICAgICAgIDxwPgorICAgICAgICAgICAgICAgIE5vdGUgdGhhdCB0aGlzIG1ldGhvZCBkb2VzIDxlbT5ub3Q8L2VtPiB0YWtlIGxvY2FsZSBpbnRvIGFjY291bnQsCisgICAgICAgICAgICAgICAgYW5kIHdpbGwgcmVzdWx0IGluIGFuIHVuc2F0aXNmYWN0b3J5IG9yZGVyaW5nIGZvciBjZXJ0YWluIGxvY2FsZXMuCisgICAgICAgICAgICAgICAgVGhlIGphdmEudGV4dCBwYWNrYWdlIHByb3ZpZGVzIDxlbT5jb2xsYXRvcnM8L2VtPiB0byBhbGxvdworICAgICAgICAgICAgICAgIGxvY2FsZS1zZW5zaXRpdmUgb3JkZXJpbmcuPC9kaXY+CisgICAgICAgIDxkbD48ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+UGFyYW1ldGVyczo8L3NwYW4+PC9kdD48ZGQ+PGNvZGU+c3RyPC9jb2RlPiAtIHRoZSA8Y29kZT5TdHJpbmc8L2NvZGU+IHRvIGJlIGNvbXBhcmVkLjwvZGQ+CisgICAgICAgICAgICA8ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+UmV0dXJuczo8L3NwYW4+PC9kdD48ZGQ+YSBuZWdhdGl2ZSBpbnRlZ2VyLCB6ZXJvLCBvciBhIHBvc2l0aXZlIGludGVnZXIgYXMgdGhlCisgICAgICAgICAgICAgICAgc3BlY2lmaWVkIFN0cmluZyBpcyBncmVhdGVyIHRoYW4sIGVxdWFsIHRvLCBvciBsZXNzCisgICAgICAgICAgICAgICAgdGhhbiB0aGlzIFN0cmluZywgaWdub3JpbmcgY2FzZSBjb25zaWRlcmF0aW9ucy48L2RkPjxkdD48c3BhbiBjbGFzcz0ic3Ryb25nIj5TaW5jZTo8L3NwYW4+PC9kdD4KKyAgICAgICAgICAgIDxkZD4xLjI8L2RkPgorICAgICAgICAgICAgPGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPlNlZSBBbHNvOjwvc3Bhbj48L2R0PjxkZD48YSBocmVmPSIuLi8uLi9qYXZhL3RleHQvQ29sbGF0b3IuaHRtbCNjb21wYXJlKGphdmEubGFuZy5TdHJpbmcsIGphdmEubGFuZy5TdHJpbmcpIj48Y29kZT5Db2xsYXRvci5jb21wYXJlKFN0cmluZywgU3RyaW5nKTwvY29kZT48L2E+PC9kZD48L2RsPgorICAgIDwvbGk+Cis8L3VsPgorPGEgbmFtZT0icmVnaW9uTWF0Y2hlcyhpbnQsIGphdmEubGFuZy5TdHJpbmcsIGludCwgaW50KSI+CisgICAgPCEtLSAgIC0tPgorPC9hPgorPHVsIGNsYXNzPSJibG9ja0xpc3QiPgorICAgIDxsaSBjbGFzcz0iYmxvY2tMaXN0Ij4KKyAgICAgICAgPGg0PnJlZ2lvbk1hdGNoZXM8L2g0PgorPHByZT5wdWJsaWMmbmJzcDtib29sZWFuJm5ic3A7cmVnaW9uTWF0Y2hlcyhpbnQmbmJzcDt0b2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi8uLi9qYXZhL2xhbmcvU3RyaW5nLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBqYXZhLmxhbmciPlN0cmluZzwvYT4mbmJzcDtvdGhlciwKKyAgICAgICAgICAgICAgICAgICAgaW50Jm5ic3A7b29mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgaW50Jm5ic3A7bGVuKTwvcHJlPgorICAgICAgICA8ZGl2IGNsYXNzPSJibG9jayI+VGVzdHMgaWYgdHdvIHN0cmluZyByZWdpb25zIGFyZSBlcXVhbC4KKyAgICAgICAgICAgIDxwPgorICAgICAgICAgICAgICAgIEEgc3Vic3RyaW5nIG9mIHRoaXMgPHR0PlN0cmluZzwvdHQ+IG9iamVjdCBpcyBjb21wYXJlZCB0byBhIHN1YnN0cmluZworICAgICAgICAgICAgICAgIG9mIHRoZSBhcmd1bWVudCBvdGhlci4gVGhlIHJlc3VsdCBpcyB0cnVlIGlmIHRoZXNlIHN1YnN0cmluZ3MKKyAgICAgICAgICAgICAgICByZXByZXNlbnQgaWRlbnRpY2FsIGNoYXJhY3RlciBzZXF1ZW5jZXMuIFRoZSBzdWJzdHJpbmcgb2YgdGhpcworICAgICAgICAgICAgICAgIDx0dD5TdHJpbmc8L3R0PiBvYmplY3QgdG8gYmUgY29tcGFyZWQgYmVnaW5zIGF0IGluZGV4IDx0dD50b2Zmc2V0PC90dD4KKyAgICAgICAgICAgICAgICBhbmQgaGFzIGxlbmd0aCA8dHQ+bGVuPC90dD4uIFRoZSBzdWJzdHJpbmcgb2Ygb3RoZXIgdG8gYmUgY29tcGFyZWQKKyAgICAgICAgICAgICAgICBiZWdpbnMgYXQgaW5kZXggPHR0Pm9vZmZzZXQ8L3R0PiBhbmQgaGFzIGxlbmd0aCA8dHQ+bGVuPC90dD4uIFRoZQorICAgICAgICAgICAgICAgIHJlc3VsdCBpcyA8dHQ+ZmFsc2U8L3R0PiBpZiBhbmQgb25seSBpZiBhdCBsZWFzdCBvbmUgb2YgdGhlIGZvbGxvd2luZworICAgICAgICAgICAgICAgIGlzIHRydWU6CisgICAgICAgICAgICA8dWw+PGxpPjx0dD50b2Zmc2V0PC90dD4gaXMgbmVnYXRpdmUuCisgICAgICAgICAgICAgICAgPGxpPjx0dD5vb2Zmc2V0PC90dD4gaXMgbmVnYXRpdmUuCisgICAgICAgICAgICAgICAgPGxpPjx0dD50b2Zmc2V0K2xlbjwvdHQ+IGlzIGdyZWF0ZXIgdGhhbiB0aGUgbGVuZ3RoIG9mIHRoaXMKKyAgICAgICAgICAgICAgICAgICAgPHR0PlN0cmluZzwvdHQ+IG9iamVjdC4KKyAgICAgICAgICAgICAgICA8bGk+PHR0Pm9vZmZzZXQrbGVuPC90dD4gaXMgZ3JlYXRlciB0aGFuIHRoZSBsZW5ndGggb2YgdGhlIG90aGVyCisgICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50LgorICAgICAgICAgICAgICAgIDxsaT5UaGVyZSBpcyBzb21lIG5vbm5lZ2F0aXZlIGludGVnZXIgPGk+azwvaT4gbGVzcyB0aGFuIDx0dD5sZW48L3R0PgorICAgICAgICAgICAgICAgICAgICBzdWNoIHRoYXQ6CisgICAgICAgICAgICAgICAgICAgIDx0dD50aGlzLmNoYXJBdCh0b2Zmc2V0KzxpPms8L2k+KSZuYnNwOyE9Jm5ic3A7b3RoZXIuY2hhckF0KG9vZmZzZXQrPGk+azwvaT4pPC90dD4KKyAgICAgICAgICAgIDwvdWw+PC9kaXY+CisgICAgICAgIDxkbD48ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+UGFyYW1ldGVyczo8L3NwYW4+PC9kdD48ZGQ+PGNvZGU+dG9mZnNldDwvY29kZT4gLSB0aGUgc3RhcnRpbmcgb2Zmc2V0IG9mIHRoZSBzdWJyZWdpb24gaW4gdGhpcyBzdHJpbmcuPC9kZD48ZGQ+PGNvZGU+b3RoZXI8L2NvZGU+IC0gdGhlIHN0cmluZyBhcmd1bWVudC48L2RkPjxkZD48Y29kZT5vb2Zmc2V0PC9jb2RlPiAtIHRoZSBzdGFydGluZyBvZmZzZXQgb2YgdGhlIHN1YnJlZ2lvbiBpbiB0aGUgc3RyaW5nCisgICAgICAgICAgICBhcmd1bWVudC48L2RkPjxkZD48Y29kZT5sZW48L2NvZGU+IC0gdGhlIG51bWJlciBvZiBjaGFyYWN0ZXJzIHRvIGNvbXBhcmUuPC9kZD4KKyAgICAgICAgICAgIDxkdD48c3BhbiBjbGFzcz0ic3Ryb25nIj5SZXR1cm5zOjwvc3Bhbj48L2R0PjxkZD48Y29kZT50cnVlPC9jb2RlPiBpZiB0aGUgc3BlY2lmaWVkIHN1YnJlZ2lvbiBvZiB0aGlzIHN0cmluZworICAgICAgICAgICAgICAgIGV4YWN0bHkgbWF0Y2hlcyB0aGUgc3BlY2lmaWVkIHN1YnJlZ2lvbiBvZiB0aGUgc3RyaW5nIGFyZ3VtZW50OworICAgICAgICAgICAgICAgIDxjb2RlPmZhbHNlPC9jb2RlPiBvdGhlcndpc2UuPC9kZD48L2RsPgorICAgIDwvbGk+Cis8L3VsPgorPGEgbmFtZT0icmVnaW9uTWF0Y2hlcyhib29sZWFuLCBpbnQsIGphdmEubGFuZy5TdHJpbmcsIGludCwgaW50KSI+CisgICAgPCEtLSAgIC0tPgorPC9hPgorPHVsIGNsYXNzPSJibG9ja0xpc3QiPgorICAgIDxsaSBjbGFzcz0iYmxvY2tMaXN0Ij4KKyAgICAgICAgPGg0PnJlZ2lvbk1hdGNoZXM8L2g0PgorPHByZT5wdWJsaWMmbmJzcDtib29sZWFuJm5ic3A7cmVnaW9uTWF0Y2hlcyhib29sZWFuJm5ic3A7aWdub3JlQ2FzZSwKKyAgICAgICAgICAgICAgICAgICAgaW50Jm5ic3A7dG9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vLi4vamF2YS9sYW5nL1N0cmluZy5odG1sIiB0aXRsZT0iY2xhc3MgaW4gamF2YS5sYW5nIj5TdHJpbmc8L2E+Jm5ic3A7b3RoZXIsCisgICAgICAgICAgICAgICAgICAgIGludCZuYnNwO29vZmZzZXQsCisgICAgICAgICAgICAgICAgICAgIGludCZuYnNwO2xlbik8L3ByZT4KKyAgICAgICAgPGRpdiBjbGFzcz0iYmxvY2siPlRlc3RzIGlmIHR3byBzdHJpbmcgcmVnaW9ucyBhcmUgZXF1YWwuCisgICAgICAgICAgICA8cD4KKyAgICAgICAgICAgICAgICBBIHN1YnN0cmluZyBvZiB0aGlzIDx0dD5TdHJpbmc8L3R0PiBvYmplY3QgaXMgY29tcGFyZWQgdG8gYSBzdWJzdHJpbmcKKyAgICAgICAgICAgICAgICBvZiB0aGUgYXJndW1lbnQgPHR0Pm90aGVyPC90dD4uIFRoZSByZXN1bHQgaXMgPHR0PnRydWU8L3R0PiBpZiB0aGVzZQorICAgICAgICAgICAgICAgIHN1YnN0cmluZ3MgcmVwcmVzZW50IGNoYXJhY3RlciBzZXF1ZW5jZXMgdGhhdCBhcmUgdGhlIHNhbWUsIGlnbm9yaW5nCisgICAgICAgICAgICAgICAgY2FzZSBpZiBhbmQgb25seSBpZiA8dHQ+aWdub3JlQ2FzZTwvdHQ+IGlzIHRydWUuIFRoZSBzdWJzdHJpbmcgb2YKKyAgICAgICAgICAgICAgICB0aGlzIDx0dD5TdHJpbmc8L3R0PiBvYmplY3QgdG8gYmUgY29tcGFyZWQgYmVnaW5zIGF0IGluZGV4CisgICAgICAgICAgICAgICAgPHR0PnRvZmZzZXQ8L3R0PiBhbmQgaGFzIGxlbmd0aCA8dHQ+bGVuPC90dD4uIFRoZSBzdWJzdHJpbmcgb2YKKyAgICAgICAgICAgICAgICA8dHQ+b3RoZXI8L3R0PiB0byBiZSBjb21wYXJlZCBiZWdpbnMgYXQgaW5kZXggPHR0Pm9vZmZzZXQ8L3R0PiBhbmQKKyAgICAgICAgICAgICAgICBoYXMgbGVuZ3RoIDx0dD5sZW48L3R0Pi4gVGhlIHJlc3VsdCBpcyA8dHQ+ZmFsc2U8L3R0PiBpZiBhbmQgb25seSBpZgorICAgICAgICAgICAgICAgIGF0IGxlYXN0IG9uZSBvZiB0aGUgZm9sbG93aW5nIGlzIHRydWU6CisgICAgICAgICAgICA8dWw+PGxpPjx0dD50b2Zmc2V0PC90dD4gaXMgbmVnYXRpdmUuCisgICAgICAgICAgICAgICAgPGxpPjx0dD5vb2Zmc2V0PC90dD4gaXMgbmVnYXRpdmUuCisgICAgICAgICAgICAgICAgPGxpPjx0dD50b2Zmc2V0K2xlbjwvdHQ+IGlzIGdyZWF0ZXIgdGhhbiB0aGUgbGVuZ3RoIG9mIHRoaXMKKyAgICAgICAgICAgICAgICAgICAgPHR0PlN0cmluZzwvdHQ+IG9iamVjdC4KKyAgICAgICAgICAgICAgICA8bGk+PHR0Pm9vZmZzZXQrbGVuPC90dD4gaXMgZ3JlYXRlciB0aGFuIHRoZSBsZW5ndGggb2YgdGhlIG90aGVyCisgICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50LgorICAgICAgICAgICAgICAgIDxsaT48dHQ+aWdub3JlQ2FzZTwvdHQ+IGlzIDx0dD5mYWxzZTwvdHQ+IGFuZCB0aGVyZSBpcyBzb21lIG5vbm5lZ2F0aXZlCisgICAgICAgICAgICAgICAgICAgIGludGVnZXIgPGk+azwvaT4gbGVzcyB0aGFuIDx0dD5sZW48L3R0PiBzdWNoIHRoYXQ6CisgICAgICAgICAgICAgICAgICAgIDxibG9ja3F1b3RlPjxwcmU+CisgdGhpcy5jaGFyQXQodG9mZnNldCtrKSAhPSBvdGhlci5jaGFyQXQob29mZnNldCtrKQorIDwvcHJlPjwvYmxvY2txdW90ZT4KKyAgICAgICAgICAgICAgICA8bGk+PHR0Pmlnbm9yZUNhc2U8L3R0PiBpcyA8dHQ+dHJ1ZTwvdHQ+IGFuZCB0aGVyZSBpcyBzb21lIG5vbm5lZ2F0aXZlCisgICAgICAgICAgICAgICAgICAgIGludGVnZXIgPGk+azwvaT4gbGVzcyB0aGFuIDx0dD5sZW48L3R0PiBzdWNoIHRoYXQ6CisgICAgICAgICAgICAgICAgICAgIDxibG9ja3F1b3RlPjxwcmU+CisgQ2hhcmFjdGVyLnRvTG93ZXJDYXNlKHRoaXMuY2hhckF0KHRvZmZzZXQraykpICE9CisgICAgICAgICAgICAgICBDaGFyYWN0ZXIudG9Mb3dlckNhc2Uob3RoZXIuY2hhckF0KG9vZmZzZXQraykpCisgPC9wcmU+PC9ibG9ja3F1b3RlPgorICAgICAgICAgICAgICAgICAgICBhbmQ6CisgICAgICAgICAgICAgICAgICAgIDxibG9ja3F1b3RlPjxwcmU+CisgQ2hhcmFjdGVyLnRvVXBwZXJDYXNlKHRoaXMuY2hhckF0KHRvZmZzZXQraykpICE9CisgICAgICAgICBDaGFyYWN0ZXIudG9VcHBlckNhc2Uob3RoZXIuY2hhckF0KG9vZmZzZXQraykpCisgPC9wcmU+PC9ibG9ja3F1b3RlPgorICAgICAgICAgICAgPC91bD48L2Rpdj4KKyAgICAgICAgPGRsPjxkdD48c3BhbiBjbGFzcz0ic3Ryb25nIj5QYXJhbWV0ZXJzOjwvc3Bhbj48L2R0PjxkZD48Y29kZT5pZ25vcmVDYXNlPC9jb2RlPiAtIGlmIDxjb2RlPnRydWU8L2NvZGU+LCBpZ25vcmUgY2FzZSB3aGVuIGNvbXBhcmluZworICAgICAgICAgICAgY2hhcmFjdGVycy48L2RkPjxkZD48Y29kZT50b2Zmc2V0PC9jb2RlPiAtIHRoZSBzdGFydGluZyBvZmZzZXQgb2YgdGhlIHN1YnJlZ2lvbiBpbiB0aGlzCisgICAgICAgICAgICBzdHJpbmcuPC9kZD48ZGQ+PGNvZGU+b3RoZXI8L2NvZGU+IC0gdGhlIHN0cmluZyBhcmd1bWVudC48L2RkPjxkZD48Y29kZT5vb2Zmc2V0PC9jb2RlPiAtIHRoZSBzdGFydGluZyBvZmZzZXQgb2YgdGhlIHN1YnJlZ2lvbiBpbiB0aGUgc3RyaW5nCisgICAgICAgICAgICBhcmd1bWVudC48L2RkPjxkZD48Y29kZT5sZW48L2NvZGU+IC0gdGhlIG51bWJlciBvZiBjaGFyYWN0ZXJzIHRvIGNvbXBhcmUuPC9kZD4KKyAgICAgICAgICAgIDxkdD48c3BhbiBjbGFzcz0ic3Ryb25nIj5SZXR1cm5zOjwvc3Bhbj48L2R0PjxkZD48Y29kZT50cnVlPC9jb2RlPiBpZiB0aGUgc3BlY2lmaWVkIHN1YnJlZ2lvbiBvZiB0aGlzIHN0cmluZworICAgICAgICAgICAgICAgIG1hdGNoZXMgdGhlIHNwZWNpZmllZCBzdWJyZWdpb24gb2YgdGhlIHN0cmluZyBhcmd1bWVudDsKKyAgICAgICAgICAgICAgICA8Y29kZT5mYWxzZTwvY29kZT4gb3RoZXJ3aXNlLiBXaGV0aGVyIHRoZSBtYXRjaGluZyBpcyBleGFjdAorICAgICAgICAgICAgICAgIG9yIGNhc2UgaW5zZW5zaXRpdmUgZGVwZW5kcyBvbiB0aGUgPGNvZGU+aWdub3JlQ2FzZTwvY29kZT4KKyAgICAgICAgICAgICAgICBhcmd1bWVudC48L2RkPjwvZGw+CisgICAgPC9saT4KKzwvdWw+Cis8YSBuYW1lPSJzdGFydHNXaXRoKGphdmEubGFuZy5TdHJpbmcsIGludCkiPgorICAgIDwhLS0gICAtLT4KKzwvYT4KKzx1bCBjbGFzcz0iYmxvY2tMaXN0Ij4KKyAgICA8bGkgY2xhc3M9ImJsb2NrTGlzdCI+CisgICAgICAgIDxoND5zdGFydHNXaXRoPC9oND4KKzxwcmU+cHVibGljJm5ic3A7Ym9vbGVhbiZuYnNwO3N0YXJ0c1dpdGgoPGEgaHJlZj0iLi4vLi4vamF2YS9sYW5nL1N0cmluZy5odG1sIiB0aXRsZT0iY2xhc3MgaW4gamF2YS5sYW5nIj5TdHJpbmc8L2E+Jm5ic3A7cHJlZml4LAorICAgICAgICAgICAgICAgICBpbnQmbmJzcDt0b2Zmc2V0KTwvcHJlPgorICAgICAgICA8ZGl2IGNsYXNzPSJibG9jayI+VGVzdHMgaWYgdGhlIHN1YnN0cmluZyBvZiB0aGlzIHN0cmluZyBiZWdpbm5pbmcgYXQgdGhlCisgICAgICAgICAgICBzcGVjaWZpZWQgaW5kZXggc3RhcnRzIHdpdGggdGhlIHNwZWNpZmllZCBwcmVmaXguPC9kaXY+CisgICAgICAgIDxkbD48ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+UGFyYW1ldGVyczo8L3NwYW4+PC9kdD48ZGQ+PGNvZGU+cHJlZml4PC9jb2RlPiAtIHRoZSBwcmVmaXguPC9kZD48ZGQ+PGNvZGU+dG9mZnNldDwvY29kZT4gLSB3aGVyZSB0byBiZWdpbiBsb29raW5nIGluIHRoaXMgc3RyaW5nLjwvZGQ+CisgICAgICAgICAgICA8ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+UmV0dXJuczo8L3NwYW4+PC9kdD48ZGQ+PGNvZGU+dHJ1ZTwvY29kZT4gaWYgdGhlIGNoYXJhY3RlciBzZXF1ZW5jZSByZXByZXNlbnRlZCBieSB0aGUKKyAgICAgICAgICAgICAgICBhcmd1bWVudCBpcyBhIHByZWZpeCBvZiB0aGUgc3Vic3RyaW5nIG9mIHRoaXMgb2JqZWN0IHN0YXJ0aW5nCisgICAgICAgICAgICAgICAgYXQgaW5kZXggPGNvZGU+dG9mZnNldDwvY29kZT47IDxjb2RlPmZhbHNlPC9jb2RlPiBvdGhlcndpc2UuCisgICAgICAgICAgICAgICAgVGhlIHJlc3VsdCBpcyA8Y29kZT5mYWxzZTwvY29kZT4gaWYgPGNvZGU+dG9mZnNldDwvY29kZT4gaXMKKyAgICAgICAgICAgICAgICBuZWdhdGl2ZSBvciBncmVhdGVyIHRoYW4gdGhlIGxlbmd0aCBvZiB0aGlzCisgICAgICAgICAgICAgICAgPGNvZGU+U3RyaW5nPC9jb2RlPiBvYmplY3Q7IG90aGVyd2lzZSB0aGUgcmVzdWx0IGlzIHRoZSBzYW1lCisgICAgICAgICAgICAgICAgYXMgdGhlIHJlc3VsdCBvZiB0aGUgZXhwcmVzc2lvbgorICAgICAgICAgIDxwcmU+CisgICAgICAgICAgdGhpcy5zdWJzdHJpbmcodG9mZnNldCkuc3RhcnRzV2l0aChwcmVmaXgpCisgICAgICAgICAgPC9wcmU+PC9kZD48L2RsPgorICAgIDwvbGk+Cis8L3VsPgorPGEgbmFtZT0ic3RhcnRzV2l0aChqYXZhLmxhbmcuU3RyaW5nKSI+CisgICAgPCEtLSAgIC0tPgorPC9hPgorPHVsIGNsYXNzPSJibG9ja0xpc3QiPgorICAgIDxsaSBjbGFzcz0iYmxvY2tMaXN0Ij4KKyAgICAgICAgPGg0PnN0YXJ0c1dpdGg8L2g0PgorICAgICAgICA8cHJlPnB1YmxpYyZuYnNwO2Jvb2xlYW4mbmJzcDtzdGFydHNXaXRoKDxhIGhyZWY9Ii4uLy4uL2phdmEvbGFuZy9TdHJpbmcuaHRtbCIgdGl0bGU9ImNsYXNzIGluIGphdmEubGFuZyI+U3RyaW5nPC9hPiZuYnNwO3ByZWZpeCk8L3ByZT4KKyAgICAgICAgPGRpdiBjbGFzcz0iYmxvY2siPlRlc3RzIGlmIHRoaXMgc3RyaW5nIHN0YXJ0cyB3aXRoIHRoZSBzcGVjaWZpZWQgcHJlZml4LjwvZGl2PgorICAgICAgICA8ZGw+PGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPlBhcmFtZXRlcnM6PC9zcGFuPjwvZHQ+PGRkPjxjb2RlPnByZWZpeDwvY29kZT4gLSB0aGUgcHJlZml4LjwvZGQ+CisgICAgICAgICAgICA8ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+UmV0dXJuczo8L3NwYW4+PC9kdD48ZGQ+PGNvZGU+dHJ1ZTwvY29kZT4gaWYgdGhlIGNoYXJhY3RlciBzZXF1ZW5jZSByZXByZXNlbnRlZCBieSB0aGUKKyAgICAgICAgICAgICAgICBhcmd1bWVudCBpcyBhIHByZWZpeCBvZiB0aGUgY2hhcmFjdGVyIHNlcXVlbmNlIHJlcHJlc2VudGVkIGJ5CisgICAgICAgICAgICAgICAgdGhpcyBzdHJpbmc7IDxjb2RlPmZhbHNlPC9jb2RlPiBvdGhlcndpc2UuCisgICAgICAgICAgICAgICAgTm90ZSBhbHNvIHRoYXQgPGNvZGU+dHJ1ZTwvY29kZT4gd2lsbCBiZSByZXR1cm5lZCBpZiB0aGUKKyAgICAgICAgICAgICAgICBhcmd1bWVudCBpcyBhbiBlbXB0eSBzdHJpbmcgb3IgaXMgZXF1YWwgdG8gdGhpcworICAgICAgICAgICAgICAgIDxjb2RlPlN0cmluZzwvY29kZT4gb2JqZWN0IGFzIGRldGVybWluZWQgYnkgdGhlCisgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vLi4vamF2YS9sYW5nL1N0cmluZy5odG1sI2VxdWFscyhqYXZhLmxhbmcuT2JqZWN0KSI+PGNvZGU+ZXF1YWxzKE9iamVjdCk8L2NvZGU+PC9hPiBtZXRob2QuPC9kZD48ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+U2luY2U6PC9zcGFuPjwvZHQ+CisgICAgICAgICAgICA8ZGQ+MS4gMDwvZGQ+PC9kbD4KKyAgICA8L2xpPgorPC91bD4KKzxhIG5hbWU9ImVuZHNXaXRoKGphdmEubGFuZy5TdHJpbmcpIj4KKyAgICA8IS0tICAgLS0+Cis8L2E+Cis8dWwgY2xhc3M9ImJsb2NrTGlzdCI+CisgICAgPGxpIGNsYXNzPSJibG9ja0xpc3QiPgorICAgICAgICA8aDQ+ZW5kc1dpdGg8L2g0PgorICAgICAgICA8cHJlPnB1YmxpYyZuYnNwO2Jvb2xlYW4mbmJzcDtlbmRzV2l0aCg8YSBocmVmPSIuLi8uLi9qYXZhL2xhbmcvU3RyaW5nLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBqYXZhLmxhbmciPlN0cmluZzwvYT4mbmJzcDtzdWZmaXgpPC9wcmU+CisgICAgICAgIDxkaXYgY2xhc3M9ImJsb2NrIj5UZXN0cyBpZiB0aGlzIHN0cmluZyBlbmRzIHdpdGggdGhlIHNwZWNpZmllZCBzdWZmaXguPC9kaXY+CisgICAgICAgIDxkbD48ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+UGFyYW1ldGVyczo8L3NwYW4+PC9kdD48ZGQ+PGNvZGU+c3VmZml4PC9jb2RlPiAtIHRoZSBzdWZmaXguPC9kZD4KKyAgICAgICAgICAgIDxkdD48c3BhbiBjbGFzcz0ic3Ryb25nIj5SZXR1cm5zOjwvc3Bhbj48L2R0PjxkZD48Y29kZT50cnVlPC9jb2RlPiBpZiB0aGUgY2hhcmFjdGVyIHNlcXVlbmNlIHJlcHJlc2VudGVkIGJ5IHRoZQorICAgICAgICAgICAgICAgIGFyZ3VtZW50IGlzIGEgc3VmZml4IG9mIHRoZSBjaGFyYWN0ZXIgc2VxdWVuY2UgcmVwcmVzZW50ZWQgYnkKKyAgICAgICAgICAgICAgICB0aGlzIG9iamVjdDsgPGNvZGU+ZmFsc2U8L2NvZGU+IG90aGVyd2lzZS4gTm90ZSB0aGF0IHRoZQorICAgICAgICAgICAgICAgIHJlc3VsdCB3aWxsIGJlIDxjb2RlPnRydWU8L2NvZGU+IGlmIHRoZSBhcmd1bWVudCBpcyB0aGUKKyAgICAgICAgICAgICAgICBlbXB0eSBzdHJpbmcgb3IgaXMgZXF1YWwgdG8gdGhpcyA8Y29kZT5TdHJpbmc8L2NvZGU+IG9iamVjdAorICAgICAgICAgICAgICAgIGFzIGRldGVybWluZWQgYnkgdGhlIDxhIGhyZWY9Ii4uLy4uL2phdmEvbGFuZy9TdHJpbmcuaHRtbCNlcXVhbHMoamF2YS5sYW5nLk9iamVjdCkiPjxjb2RlPmVxdWFscyhPYmplY3QpPC9jb2RlPjwvYT4gbWV0aG9kLjwvZGQ+PC9kbD4KKyAgICA8L2xpPgorPC91bD4KKzxhIG5hbWU9Imhhc2hDb2RlKCkiPgorICAgIDwhLS0gICAtLT4KKzwvYT4KKzx1bCBjbGFzcz0iYmxvY2tMaXN0Ij4KKyAgICA8bGkgY2xhc3M9ImJsb2NrTGlzdCI+CisgICAgICAgIDxoND5oYXNoQ29kZTwvaDQ+CisgICAgICAgIDxwcmU+cHVibGljJm5ic3A7aW50Jm5ic3A7aGFzaENvZGUoKTwvcHJlPgorICAgICAgICA8ZGl2IGNsYXNzPSJibG9jayI+UmV0dXJucyBhIGhhc2ggY29kZSBmb3IgdGhpcyBzdHJpbmcuIFRoZSBoYXNoIGNvZGUgZm9yIGEKKyAgICAgICAgICAgIDxjb2RlPlN0cmluZzwvY29kZT4gb2JqZWN0IGlzIGNvbXB1dGVkIGFzCisgICAgICAgICAgICA8YmxvY2txdW90ZT48cHJlPgorIHNbMF0qMzFeKG4tMSkgKyBzWzFdKjMxXihuLTIpICsgLi4uICsgc1tuLTFdCisgPC9wcmU+PC9ibG9ja3F1b3RlPgorICAgICAgICAgICAgdXNpbmcgPGNvZGU+aW50PC9jb2RlPiBhcml0aG1ldGljLCB3aGVyZSA8Y29kZT5zW2ldPC9jb2RlPiBpcyB0aGUKKyAgICAgICAgICAgIDxpPmk8L2k+dGggY2hhcmFjdGVyIG9mIHRoZSBzdHJpbmcsIDxjb2RlPm48L2NvZGU+IGlzIHRoZSBsZW5ndGggb2YKKyAgICAgICAgICAgIHRoZSBzdHJpbmcsIGFuZCA8Y29kZT5ePC9jb2RlPiBpbmRpY2F0ZXMgZXhwb25lbnRpYXRpb24uCisgICAgICAgICAgICAoVGhlIGhhc2ggdmFsdWUgb2YgdGhlIGVtcHR5IHN0cmluZyBpcyB6ZXJvLik8L2Rpdj4KKyAgICAgICAgPGRsPgorICAgICAgICAgICAgPGR0PjxzdHJvbmc+T3ZlcnJpZGVzOjwvc3Ryb25nPjwvZHQ+CisgICAgICAgICAgICA8ZGQ+PGNvZGU+PGEgaHJlZj0iLi4vLi4vamF2YS9sYW5nL09iamVjdC5odG1sI2hhc2hDb2RlKCkiPmhhc2hDb2RlPC9hPjwvY29kZT4mbmJzcDtpbiBjbGFzcyZuYnNwOzxjb2RlPjxhIGhyZWY9Ii4uLy4uL2phdmEvbGFuZy9PYmplY3QuaHRtbCIgdGl0bGU9ImNsYXNzIGluIGphdmEubGFuZyI+T2JqZWN0PC9hPjwvY29kZT48L2RkPgorICAgICAgICAgICAgPGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPlJldHVybnM6PC9zcGFuPjwvZHQ+PGRkPmEgaGFzaCBjb2RlIHZhbHVlIGZvciB0aGlzIG9iamVjdC48L2RkPjxkdD48c3BhbiBjbGFzcz0ic3Ryb25nIj5TZWUgQWxzbzo8L3NwYW4+PC9kdD48ZGQ+PGEgaHJlZj0iLi4vLi4vamF2YS9sYW5nL09iamVjdC5odG1sI2VxdWFscyhqYXZhLmxhbmcuT2JqZWN0KSI+PGNvZGU+T2JqZWN0LmVxdWFscyhqYXZhLmxhbmcuT2JqZWN0KTwvY29kZT48L2E+LAorICAgICAgICAgICAgPGEgaHJlZj0iLi4vLi4vamF2YS9sYW5nL1N5c3RlbS5odG1sI2lkZW50aXR5SGFzaENvZGUoamF2YS5sYW5nLk9iamVjdCkiPjxjb2RlPlN5c3RlbS5pZGVudGl0eUhhc2hDb2RlKGphdmEubGFuZy5PYmplY3QpPC9jb2RlPjwvYT48L2RkPjwvZGw+CisgICAgPC9saT4KKzwvdWw+Cis8YSBuYW1lPSJpbmRleE9mKGludCkiPgorICAgIDwhLS0gICAtLT4KKzwvYT4KKzx1bCBjbGFzcz0iYmxvY2tMaXN0Ij4KKyAgICA8bGkgY2xhc3M9ImJsb2NrTGlzdCI+CisgICAgICAgIDxoND5pbmRleE9mPC9oND4KKyAgICAgICAgPHByZT5wdWJsaWMmbmJzcDtpbnQmbmJzcDtpbmRleE9mKGludCZuYnNwO2NoKTwvcHJlPgorICAgICAgICA8ZGl2IGNsYXNzPSJibG9jayI+UmV0dXJucyB0aGUgaW5kZXggd2l0aGluIHRoaXMgc3RyaW5nIG9mIHRoZSBmaXJzdCBvY2N1cnJlbmNlIG9mCisgICAgICAgICAgICB0aGUgc3BlY2lmaWVkIGNoYXJhY3Rlci4gSWYgYSBjaGFyYWN0ZXIgd2l0aCB2YWx1ZQorICAgICAgICAgICAgPGNvZGU+Y2g8L2NvZGU+IG9jY3VycyBpbiB0aGUgY2hhcmFjdGVyIHNlcXVlbmNlIHJlcHJlc2VudGVkIGJ5CisgICAgICAgICAgICB0aGlzIDxjb2RlPlN0cmluZzwvY29kZT4gb2JqZWN0LCB0aGVuIHRoZSBpbmRleCAoaW4gVW5pY29kZQorICAgICAgICAgICAgY29kZSB1bml0cykgb2YgdGhlIGZpcnN0IHN1Y2ggb2NjdXJyZW5jZSBpcyByZXR1cm5lZC4gRm9yCisgICAgICAgICAgICB2YWx1ZXMgb2YgPGNvZGU+Y2g8L2NvZGU+IGluIHRoZSByYW5nZSBmcm9tIDAgdG8gMHhGRkZGCisgICAgICAgICAgICAoaW5jbHVzaXZlKSwgdGhpcyBpcyB0aGUgc21hbGxlc3QgdmFsdWUgPGk+azwvaT4gc3VjaCB0aGF0OgorICAgICAgICAgICAgPGJsb2NrcXVvdGU+PHByZT4KKyB0aGlzLmNoYXJBdCg8aT5rPC9pPikgPT0gY2gKKyA8L3ByZT48L2Jsb2NrcXVvdGU+CisgICAgICAgICAgICBpcyB0cnVlLiBGb3Igb3RoZXIgdmFsdWVzIG9mIDxjb2RlPmNoPC9jb2RlPiwgaXQgaXMgdGhlCisgICAgICAgICAgICBzbWFsbGVzdCB2YWx1ZSA8aT5rPC9pPiBzdWNoIHRoYXQ6CisgICAgICAgICAgICA8YmxvY2txdW90ZT48cHJlPgorIHRoaXMuY29kZVBvaW50QXQoPGk+azwvaT4pID09IGNoCisgPC9wcmU+PC9ibG9ja3F1b3RlPgorICAgICAgICAgICAgaXMgdHJ1ZS4gSW4gZWl0aGVyIGNhc2UsIGlmIG5vIHN1Y2ggY2hhcmFjdGVyIG9jY3VycyBpbiB0aGlzCisgICAgICAgICAgICBzdHJpbmcsIHRoZW4gPGNvZGU+LTE8L2NvZGU+IGlzIHJldHVybmVkLjwvZGl2PgorICAgICAgICA8ZGw+PGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPlBhcmFtZXRlcnM6PC9zcGFuPjwvZHQ+PGRkPjxjb2RlPmNoPC9jb2RlPiAtIGEgY2hhcmFjdGVyIChVbmljb2RlIGNvZGUgcG9pbnQpLjwvZGQ+CisgICAgICAgICAgICA8ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+UmV0dXJuczo8L3NwYW4+PC9kdD48ZGQ+dGhlIGluZGV4IG9mIHRoZSBmaXJzdCBvY2N1cnJlbmNlIG9mIHRoZSBjaGFyYWN0ZXIgaW4gdGhlCisgICAgICAgICAgICAgICAgY2hhcmFjdGVyIHNlcXVlbmNlIHJlcHJlc2VudGVkIGJ5IHRoaXMgb2JqZWN0LCBvcgorICAgICAgICAgICAgICAgIDxjb2RlPi0xPC9jb2RlPiBpZiB0aGUgY2hhcmFjdGVyIGRvZXMgbm90IG9jY3VyLjwvZGQ+PC9kbD4KKyAgICA8L2xpPgorPC91bD4KKzxhIG5hbWU9ImluZGV4T2YoaW50LCBpbnQpIj4KKyAgICA8IS0tICAgLS0+Cis8L2E+Cis8dWwgY2xhc3M9ImJsb2NrTGlzdCI+CisgICAgPGxpIGNsYXNzPSJibG9ja0xpc3QiPgorICAgICAgICA8aDQ+aW5kZXhPZjwvaDQ+Cis8cHJlPnB1YmxpYyZuYnNwO2ludCZuYnNwO2luZGV4T2YoaW50Jm5ic3A7Y2gsCisgICAgICAgICAgaW50Jm5ic3A7ZnJvbUluZGV4KTwvcHJlPgorICAgICAgICA8ZGl2IGNsYXNzPSJibG9jayI+UmV0dXJucyB0aGUgaW5kZXggd2l0aGluIHRoaXMgc3RyaW5nIG9mIHRoZSBmaXJzdCBvY2N1cnJlbmNlIG9mIHRoZQorICAgICAgICAgICAgc3BlY2lmaWVkIGNoYXJhY3Rlciwgc3RhcnRpbmcgdGhlIHNlYXJjaCBhdCB0aGUgc3BlY2lmaWVkIGluZGV4LgorICAgICAgICAgICAgPHA+CisgICAgICAgICAgICAgICAgSWYgYSBjaGFyYWN0ZXIgd2l0aCB2YWx1ZSA8Y29kZT5jaDwvY29kZT4gb2NjdXJzIGluIHRoZQorICAgICAgICAgICAgICAgIGNoYXJhY3RlciBzZXF1ZW5jZSByZXByZXNlbnRlZCBieSB0aGlzIDxjb2RlPlN0cmluZzwvY29kZT4KKyAgICAgICAgICAgICAgICBvYmplY3QgYXQgYW4gaW5kZXggbm8gc21hbGxlciB0aGFuIDxjb2RlPmZyb21JbmRleDwvY29kZT4sIHRoZW4KKyAgICAgICAgICAgICAgICB0aGUgaW5kZXggb2YgdGhlIGZpcnN0IHN1Y2ggb2NjdXJyZW5jZSBpcyByZXR1cm5lZC4gRm9yIHZhbHVlcworICAgICAgICAgICAgICAgIG9mIDxjb2RlPmNoPC9jb2RlPiBpbiB0aGUgcmFuZ2UgZnJvbSAwIHRvIDB4RkZGRiAoaW5jbHVzaXZlKSwKKyAgICAgICAgICAgICAgICB0aGlzIGlzIHRoZSBzbWFsbGVzdCB2YWx1ZSA8aT5rPC9pPiBzdWNoIHRoYXQ6CisgICAgICAgICAgICA8YmxvY2txdW90ZT48cHJlPgorICh0aGlzLmNoYXJBdCg8aT5rPC9pPikgPT0gY2gpICYmICg8aT5rPC9pPiAmZ3Q7PSBmcm9tSW5kZXgpCisgPC9wcmU+PC9ibG9ja3F1b3RlPgorICAgICAgICAgICAgaXMgdHJ1ZS4gRm9yIG90aGVyIHZhbHVlcyBvZiA8Y29kZT5jaDwvY29kZT4sIGl0IGlzIHRoZQorICAgICAgICAgICAgc21hbGxlc3QgdmFsdWUgPGk+azwvaT4gc3VjaCB0aGF0OgorICAgICAgICAgICAgPGJsb2NrcXVvdGU+PHByZT4KKyAodGhpcy5jb2RlUG9pbnRBdCg8aT5rPC9pPikgPT0gY2gpICYmICg8aT5rPC9pPiAmZ3Q7PSBmcm9tSW5kZXgpCisgPC9wcmU+PC9ibG9ja3F1b3RlPgorICAgICAgICAgICAgaXMgdHJ1ZS4gSW4gZWl0aGVyIGNhc2UsIGlmIG5vIHN1Y2ggY2hhcmFjdGVyIG9jY3VycyBpbiB0aGlzCisgICAgICAgICAgICBzdHJpbmcgYXQgb3IgYWZ0ZXIgcG9zaXRpb24gPGNvZGU+ZnJvbUluZGV4PC9jb2RlPiwgdGhlbgorICAgICAgICAgICAgPGNvZGU+LTE8L2NvZGU+IGlzIHJldHVybmVkLgorCisgICAgICAgICAgICA8cD4KKyAgICAgICAgICAgICAgICBUaGVyZSBpcyBubyByZXN0cmljdGlvbiBvbiB0aGUgdmFsdWUgb2YgPGNvZGU+ZnJvbUluZGV4PC9jb2RlPi4gSWYgaXQKKyAgICAgICAgICAgICAgICBpcyBuZWdhdGl2ZSwgaXQgaGFzIHRoZSBzYW1lIGVmZmVjdCBhcyBpZiBpdCB3ZXJlIHplcm86IHRoaXMgZW50aXJlCisgICAgICAgICAgICAgICAgc3RyaW5nIG1heSBiZSBzZWFyY2hlZC4gSWYgaXQgaXMgZ3JlYXRlciB0aGFuIHRoZSBsZW5ndGggb2YgdGhpcworICAgICAgICAgICAgICAgIHN0cmluZywgaXQgaGFzIHRoZSBzYW1lIGVmZmVjdCBhcyBpZiBpdCB3ZXJlIGVxdWFsIHRvIHRoZSBsZW5ndGggb2YKKyAgICAgICAgICAgICAgICB0aGlzIHN0cmluZzogPGNvZGU+LTE8L2NvZGU+IGlzIHJldHVybmVkLgorCisgICAgICAgICAgICA8cD5BbGwgaW5kaWNlcyBhcmUgc3BlY2lmaWVkIGluIDxjb2RlPmNoYXI8L2NvZGU+IHZhbHVlcworICAgICAgICAgICAgICAgIChVbmljb2RlIGNvZGUgdW5pdHMpLjwvZGl2PgorICAgICAgICA8ZGw+PGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPlBhcmFtZXRlcnM6PC9zcGFuPjwvZHQ+PGRkPjxjb2RlPmNoPC9jb2RlPiAtIGEgY2hhcmFjdGVyIChVbmljb2RlIGNvZGUgcG9pbnQpLjwvZGQ+PGRkPjxjb2RlPmZyb21JbmRleDwvY29kZT4gLSB0aGUgaW5kZXggdG8gc3RhcnQgdGhlIHNlYXJjaCBmcm9tLjwvZGQ+CisgICAgICAgICAgICA8ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+UmV0dXJuczo8L3NwYW4+PC9kdD48ZGQ+dGhlIGluZGV4IG9mIHRoZSBmaXJzdCBvY2N1cnJlbmNlIG9mIHRoZSBjaGFyYWN0ZXIgaW4gdGhlCisgICAgICAgICAgICAgICAgY2hhcmFjdGVyIHNlcXVlbmNlIHJlcHJlc2VudGVkIGJ5IHRoaXMgb2JqZWN0IHRoYXQgaXMgZ3JlYXRlcgorICAgICAgICAgICAgICAgIHRoYW4gb3IgZXF1YWwgdG8gPGNvZGU+ZnJvbUluZGV4PC9jb2RlPiwgb3IgPGNvZGU+LTE8L2NvZGU+CisgICAgICAgICAgICAgICAgaWYgdGhlIGNoYXJhY3RlciBkb2VzIG5vdCBvY2N1ci48L2RkPjwvZGw+CisgICAgPC9saT4KKzwvdWw+Cis8YSBuYW1lPSJsYXN0SW5kZXhPZihpbnQpIj4KKyAgICA8IS0tICAgLS0+Cis8L2E+Cis8dWwgY2xhc3M9ImJsb2NrTGlzdCI+CisgICAgPGxpIGNsYXNzPSJibG9ja0xpc3QiPgorICAgICAgICA8aDQ+bGFzdEluZGV4T2Y8L2g0PgorICAgICAgICA8cHJlPnB1YmxpYyZuYnNwO2ludCZuYnNwO2xhc3RJbmRleE9mKGludCZuYnNwO2NoKTwvcHJlPgorICAgICAgICA8ZGl2IGNsYXNzPSJibG9jayI+UmV0dXJucyB0aGUgaW5kZXggd2l0aGluIHRoaXMgc3RyaW5nIG9mIHRoZSBsYXN0IG9jY3VycmVuY2Ugb2YKKyAgICAgICAgICAgIHRoZSBzcGVjaWZpZWQgY2hhcmFjdGVyLiBGb3IgdmFsdWVzIG9mIDxjb2RlPmNoPC9jb2RlPiBpbiB0aGUKKyAgICAgICAgICAgIHJhbmdlIGZyb20gMCB0byAweEZGRkYgKGluY2x1c2l2ZSksIHRoZSBpbmRleCAoaW4gVW5pY29kZSBjb2RlCisgICAgICAgICAgICB1bml0cykgcmV0dXJuZWQgaXMgdGhlIGxhcmdlc3QgdmFsdWUgPGk+azwvaT4gc3VjaCB0aGF0OgorICAgICAgICAgICAgPGJsb2NrcXVvdGU+PHByZT4KKyB0aGlzLmNoYXJBdCg8aT5rPC9pPikgPT0gY2gKKyA8L3ByZT48L2Jsb2NrcXVvdGU+CisgICAgICAgICAgICBpcyB0cnVlLiBGb3Igb3RoZXIgdmFsdWVzIG9mIDxjb2RlPmNoPC9jb2RlPiwgaXQgaXMgdGhlCisgICAgICAgICAgICBsYXJnZXN0IHZhbHVlIDxpPms8L2k+IHN1Y2ggdGhhdDoKKyAgICAgICAgICAgIDxibG9ja3F1b3RlPjxwcmU+CisgdGhpcy5jb2RlUG9pbnRBdCg8aT5rPC9pPikgPT0gY2gKKyA8L3ByZT48L2Jsb2NrcXVvdGU+CisgICAgICAgICAgICBpcyB0cnVlLiAgSW4gZWl0aGVyIGNhc2UsIGlmIG5vIHN1Y2ggY2hhcmFjdGVyIG9jY3VycyBpbiB0aGlzCisgICAgICAgICAgICBzdHJpbmcsIHRoZW4gPGNvZGU+LTE8L2NvZGU+IGlzIHJldHVybmVkLiAgVGhlCisgICAgICAgICAgICA8Y29kZT5TdHJpbmc8L2NvZGU+IGlzIHNlYXJjaGVkIGJhY2t3YXJkcyBzdGFydGluZyBhdCB0aGUgbGFzdAorICAgICAgICAgICAgY2hhcmFjdGVyLjwvZGl2PgorICAgICAgICA8ZGw+PGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPlBhcmFtZXRlcnM6PC9zcGFuPjwvZHQ+PGRkPjxjb2RlPmNoPC9jb2RlPiAtIGEgY2hhcmFjdGVyIChVbmljb2RlIGNvZGUgcG9pbnQpLjwvZGQ+CisgICAgICAgICAgICA8ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+UmV0dXJuczo8L3NwYW4+PC9kdD48ZGQ+dGhlIGluZGV4IG9mIHRoZSBsYXN0IG9jY3VycmVuY2Ugb2YgdGhlIGNoYXJhY3RlciBpbiB0aGUKKyAgICAgICAgICAgICAgICBjaGFyYWN0ZXIgc2VxdWVuY2UgcmVwcmVzZW50ZWQgYnkgdGhpcyBvYmplY3QsIG9yCisgICAgICAgICAgICAgICAgPGNvZGU+LTE8L2NvZGU+IGlmIHRoZSBjaGFyYWN0ZXIgZG9lcyBub3Qgb2NjdXIuPC9kZD48L2RsPgorICAgIDwvbGk+Cis8L3VsPgorPGEgbmFtZT0ibGFzdEluZGV4T2YoaW50LCBpbnQpIj4KKyAgICA8IS0tICAgLS0+Cis8L2E+Cis8dWwgY2xhc3M9ImJsb2NrTGlzdCI+CisgICAgPGxpIGNsYXNzPSJibG9ja0xpc3QiPgorICAgICAgICA8aDQ+bGFzdEluZGV4T2Y8L2g0PgorPHByZT5wdWJsaWMmbmJzcDtpbnQmbmJzcDtsYXN0SW5kZXhPZihpbnQmbmJzcDtjaCwKKyAgICAgICAgICAgICAgaW50Jm5ic3A7ZnJvbUluZGV4KTwvcHJlPgorICAgICAgICA8ZGl2IGNsYXNzPSJibG9jayI+UmV0dXJucyB0aGUgaW5kZXggd2l0aGluIHRoaXMgc3RyaW5nIG9mIHRoZSBsYXN0IG9jY3VycmVuY2Ugb2YKKyAgICAgICAgICAgIHRoZSBzcGVjaWZpZWQgY2hhcmFjdGVyLCBzZWFyY2hpbmcgYmFja3dhcmQgc3RhcnRpbmcgYXQgdGhlCisgICAgICAgICAgICBzcGVjaWZpZWQgaW5kZXguIEZvciB2YWx1ZXMgb2YgPGNvZGU+Y2g8L2NvZGU+IGluIHRoZSByYW5nZQorICAgICAgICAgICAgZnJvbSAwIHRvIDB4RkZGRiAoaW5jbHVzaXZlKSwgdGhlIGluZGV4IHJldHVybmVkIGlzIHRoZSBsYXJnZXN0CisgICAgICAgICAgICB2YWx1ZSA8aT5rPC9pPiBzdWNoIHRoYXQ6CisgICAgICAgICAgICA8YmxvY2txdW90ZT48cHJlPgorICh0aGlzLmNoYXJBdCg8aT5rPC9pPikgPT0gY2gpICYmICg8aT5rPC9pPiAmbHQ7PSBmcm9tSW5kZXgpCisgPC9wcmU+PC9ibG9ja3F1b3RlPgorICAgICAgICAgICAgaXMgdHJ1ZS4gRm9yIG90aGVyIHZhbHVlcyBvZiA8Y29kZT5jaDwvY29kZT4sIGl0IGlzIHRoZQorICAgICAgICAgICAgbGFyZ2VzdCB2YWx1ZSA8aT5rPC9pPiBzdWNoIHRoYXQ6CisgICAgICAgICAgICA8YmxvY2txdW90ZT48cHJlPgorICh0aGlzLmNvZGVQb2ludEF0KDxpPms8L2k+KSA9PSBjaCkgJiYgKDxpPms8L2k+ICZsdDs9IGZyb21JbmRleCkKKyA8L3ByZT48L2Jsb2NrcXVvdGU+CisgICAgICAgICAgICBpcyB0cnVlLiBJbiBlaXRoZXIgY2FzZSwgaWYgbm8gc3VjaCBjaGFyYWN0ZXIgb2NjdXJzIGluIHRoaXMKKyAgICAgICAgICAgIHN0cmluZyBhdCBvciBiZWZvcmUgcG9zaXRpb24gPGNvZGU+ZnJvbUluZGV4PC9jb2RlPiwgdGhlbgorICAgICAgICAgICAgPGNvZGU+LTE8L2NvZGU+IGlzIHJldHVybmVkLgorCisgICAgICAgICAgICA8cD5BbGwgaW5kaWNlcyBhcmUgc3BlY2lmaWVkIGluIDxjb2RlPmNoYXI8L2NvZGU+IHZhbHVlcworICAgICAgICAgICAgICAgIChVbmljb2RlIGNvZGUgdW5pdHMpLjwvZGl2PgorICAgICAgICA8ZGw+PGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPlBhcmFtZXRlcnM6PC9zcGFuPjwvZHQ+PGRkPjxjb2RlPmNoPC9jb2RlPiAtIGEgY2hhcmFjdGVyIChVbmljb2RlIGNvZGUgcG9pbnQpLjwvZGQ+PGRkPjxjb2RlPmZyb21JbmRleDwvY29kZT4gLSB0aGUgaW5kZXggdG8gc3RhcnQgdGhlIHNlYXJjaCBmcm9tLiBUaGVyZSBpcyBubworICAgICAgICAgICAgcmVzdHJpY3Rpb24gb24gdGhlIHZhbHVlIG9mIDxjb2RlPmZyb21JbmRleDwvY29kZT4uIElmIGl0IGlzCisgICAgICAgICAgICBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gdGhlIGxlbmd0aCBvZiB0aGlzIHN0cmluZywgaXQgaGFzCisgICAgICAgICAgICB0aGUgc2FtZSBlZmZlY3QgYXMgaWYgaXQgd2VyZSBlcXVhbCB0byBvbmUgbGVzcyB0aGFuIHRoZQorICAgICAgICAgICAgbGVuZ3RoIG9mIHRoaXMgc3RyaW5nOiB0aGlzIGVudGlyZSBzdHJpbmcgbWF5IGJlIHNlYXJjaGVkLgorICAgICAgICAgICAgSWYgaXQgaXMgbmVnYXRpdmUsIGl0IGhhcyB0aGUgc2FtZSBlZmZlY3QgYXMgaWYgaXQgd2VyZSAtMToKKyAgICAgICAgICAgIC0xIGlzIHJldHVybmVkLjwvZGQ+CisgICAgICAgICAgICA8ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+UmV0dXJuczo8L3NwYW4+PC9kdD48ZGQ+dGhlIGluZGV4IG9mIHRoZSBsYXN0IG9jY3VycmVuY2Ugb2YgdGhlIGNoYXJhY3RlciBpbiB0aGUKKyAgICAgICAgICAgICAgICBjaGFyYWN0ZXIgc2VxdWVuY2UgcmVwcmVzZW50ZWQgYnkgdGhpcyBvYmplY3QgdGhhdCBpcyBsZXNzCisgICAgICAgICAgICAgICAgdGhhbiBvciBlcXVhbCB0byA8Y29kZT5mcm9tSW5kZXg8L2NvZGU+LCBvciA8Y29kZT4tMTwvY29kZT4KKyAgICAgICAgICAgICAgICBpZiB0aGUgY2hhcmFjdGVyIGRvZXMgbm90IG9jY3VyIGJlZm9yZSB0aGF0IHBvaW50LjwvZGQ+PC9kbD4KKyAgICA8L2xpPgorPC91bD4KKzxhIG5hbWU9ImluZGV4T2YoamF2YS5sYW5nLlN0cmluZykiPgorICAgIDwhLS0gICAtLT4KKzwvYT4KKzx1bCBjbGFzcz0iYmxvY2tMaXN0Ij4KKyAgICA8bGkgY2xhc3M9ImJsb2NrTGlzdCI+CisgICAgICAgIDxoND5pbmRleE9mPC9oND4KKyAgICAgICAgPHByZT5wdWJsaWMmbmJzcDtpbnQmbmJzcDtpbmRleE9mKDxhIGhyZWY9Ii4uLy4uL2phdmEvbGFuZy9TdHJpbmcuaHRtbCIgdGl0bGU9ImNsYXNzIGluIGphdmEubGFuZyI+U3RyaW5nPC9hPiZuYnNwO3N0cik8L3ByZT4KKyAgICAgICAgPGRpdiBjbGFzcz0iYmxvY2siPlJldHVybnMgdGhlIGluZGV4IHdpdGhpbiB0aGlzIHN0cmluZyBvZiB0aGUgZmlyc3Qgb2NjdXJyZW5jZSBvZiB0aGUKKyAgICAgICAgICAgIHNwZWNpZmllZCBzdWJzdHJpbmcuCisKKyAgICAgICAgICAgIDxwPlRoZSByZXR1cm5lZCBpbmRleCBpcyB0aGUgc21hbGxlc3QgdmFsdWUgPGk+azwvaT4gZm9yIHdoaWNoOgorICAgICAgICAgICAgPGJsb2NrcXVvdGU+PHByZT4KKyB0aGlzLnN0YXJ0c1dpdGgoc3RyLCA8aT5rPC9pPikKKyA8L3ByZT48L2Jsb2NrcXVvdGU+CisgICAgICAgICAgICBJZiBubyBzdWNoIHZhbHVlIG9mIDxpPms8L2k+IGV4aXN0cywgdGhlbiA8Y29kZT4tMTwvY29kZT4gaXMgcmV0dXJuZWQuPC9kaXY+CisgICAgICAgIDxkbD48ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+UGFyYW1ldGVyczo8L3NwYW4+PC9kdD48ZGQ+PGNvZGU+c3RyPC9jb2RlPiAtIHRoZSBzdWJzdHJpbmcgdG8gc2VhcmNoIGZvci48L2RkPgorICAgICAgICAgICAgPGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPlJldHVybnM6PC9zcGFuPjwvZHQ+PGRkPnRoZSBpbmRleCBvZiB0aGUgZmlyc3Qgb2NjdXJyZW5jZSBvZiB0aGUgc3BlY2lmaWVkIHN1YnN0cmluZywKKyAgICAgICAgICAgICAgICBvciA8Y29kZT4tMTwvY29kZT4gaWYgdGhlcmUgaXMgbm8gc3VjaCBvY2N1cnJlbmNlLjwvZGQ+PC9kbD4KKyAgICA8L2xpPgorPC91bD4KKzxhIG5hbWU9ImluZGV4T2YoamF2YS5sYW5nLlN0cmluZywgaW50KSI+CisgICAgPCEtLSAgIC0tPgorPC9hPgorPHVsIGNsYXNzPSJibG9ja0xpc3QiPgorICAgIDxsaSBjbGFzcz0iYmxvY2tMaXN0Ij4KKyAgICAgICAgPGg0PmluZGV4T2Y8L2g0PgorPHByZT5wdWJsaWMmbmJzcDtpbnQmbmJzcDtpbmRleE9mKDxhIGhyZWY9Ii4uLy4uL2phdmEvbGFuZy9TdHJpbmcuaHRtbCIgdGl0bGU9ImNsYXNzIGluIGphdmEubGFuZyI+U3RyaW5nPC9hPiZuYnNwO3N0ciwKKyAgICAgICAgICBpbnQmbmJzcDtmcm9tSW5kZXgpPC9wcmU+CisgICAgICAgIDxkaXYgY2xhc3M9ImJsb2NrIj5SZXR1cm5zIHRoZSBpbmRleCB3aXRoaW4gdGhpcyBzdHJpbmcgb2YgdGhlIGZpcnN0IG9jY3VycmVuY2Ugb2YgdGhlCisgICAgICAgICAgICBzcGVjaWZpZWQgc3Vic3RyaW5nLCBzdGFydGluZyBhdCB0aGUgc3BlY2lmaWVkIGluZGV4LgorCisgICAgICAgICAgICA8cD5UaGUgcmV0dXJuZWQgaW5kZXggaXMgdGhlIHNtYWxsZXN0IHZhbHVlIDxpPms8L2k+IGZvciB3aGljaDoKKyAgICAgICAgICAgIDxibG9ja3F1b3RlPjxwcmU+CisgPGk+azwvaT4gJmd0Oz0gZnJvbUluZGV4ICYmIHRoaXMuc3RhcnRzV2l0aChzdHIsIDxpPms8L2k+KQorIDwvcHJlPjwvYmxvY2txdW90ZT4KKyAgICAgICAgICAgIElmIG5vIHN1Y2ggdmFsdWUgb2YgPGk+azwvaT4gZXhpc3RzLCB0aGVuIDxjb2RlPi0xPC9jb2RlPiBpcyByZXR1cm5lZC48L2Rpdj4KKyAgICAgICAgPGRsPjxkdD48c3BhbiBjbGFzcz0ic3Ryb25nIj5QYXJhbWV0ZXJzOjwvc3Bhbj48L2R0PjxkZD48Y29kZT5zdHI8L2NvZGU+IC0gdGhlIHN1YnN0cmluZyB0byBzZWFyY2ggZm9yLjwvZGQ+PGRkPjxjb2RlPmZyb21JbmRleDwvY29kZT4gLSB0aGUgaW5kZXggZnJvbSB3aGljaCB0byBzdGFydCB0aGUgc2VhcmNoLjwvZGQ+CisgICAgICAgICAgICA8ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+UmV0dXJuczo8L3NwYW4+PC9kdD48ZGQ+dGhlIGluZGV4IG9mIHRoZSBmaXJzdCBvY2N1cnJlbmNlIG9mIHRoZSBzcGVjaWZpZWQgc3Vic3RyaW5nLAorICAgICAgICAgICAgICAgIHN0YXJ0aW5nIGF0IHRoZSBzcGVjaWZpZWQgaW5kZXgsCisgICAgICAgICAgICAgICAgb3IgPGNvZGU+LTE8L2NvZGU+IGlmIHRoZXJlIGlzIG5vIHN1Y2ggb2NjdXJyZW5jZS48L2RkPjwvZGw+CisgICAgPC9saT4KKzwvdWw+Cis8YSBuYW1lPSJsYXN0SW5kZXhPZihqYXZhLmxhbmcuU3RyaW5nKSI+CisgICAgPCEtLSAgIC0tPgorPC9hPgorPHVsIGNsYXNzPSJibG9ja0xpc3QiPgorICAgIDxsaSBjbGFzcz0iYmxvY2tMaXN0Ij4KKyAgICAgICAgPGg0Pmxhc3RJbmRleE9mPC9oND4KKyAgICAgICAgPHByZT5wdWJsaWMmbmJzcDtpbnQmbmJzcDtsYXN0SW5kZXhPZig8YSBocmVmPSIuLi8uLi9qYXZhL2xhbmcvU3RyaW5nLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBqYXZhLmxhbmciPlN0cmluZzwvYT4mbmJzcDtzdHIpPC9wcmU+CisgICAgICAgIDxkaXYgY2xhc3M9ImJsb2NrIj5SZXR1cm5zIHRoZSBpbmRleCB3aXRoaW4gdGhpcyBzdHJpbmcgb2YgdGhlIGxhc3Qgb2NjdXJyZW5jZSBvZiB0aGUKKyAgICAgICAgICAgIHNwZWNpZmllZCBzdWJzdHJpbmcuICBUaGUgbGFzdCBvY2N1cnJlbmNlIG9mIHRoZSBlbXB0eSBzdHJpbmcgIiIKKyAgICAgICAgICAgIGlzIGNvbnNpZGVyZWQgdG8gb2NjdXIgYXQgdGhlIGluZGV4IHZhbHVlIDxjb2RlPnRoaXMubGVuZ3RoKCk8L2NvZGU+LgorCisgICAgICAgICAgICA8cD5UaGUgcmV0dXJuZWQgaW5kZXggaXMgdGhlIGxhcmdlc3QgdmFsdWUgPGk+azwvaT4gZm9yIHdoaWNoOgorICAgICAgICAgICAgPGJsb2NrcXVvdGU+PHByZT4KKyB0aGlzLnN0YXJ0c1dpdGgoc3RyLCA8aT5rPC9pPikKKyA8L3ByZT48L2Jsb2NrcXVvdGU+CisgICAgICAgICAgICBJZiBubyBzdWNoIHZhbHVlIG9mIDxpPms8L2k+IGV4aXN0cywgdGhlbiA8Y29kZT4tMTwvY29kZT4gaXMgcmV0dXJuZWQuPC9kaXY+CisgICAgICAgIDxkbD48ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+UGFyYW1ldGVyczo8L3NwYW4+PC9kdD48ZGQ+PGNvZGU+c3RyPC9jb2RlPiAtIHRoZSBzdWJzdHJpbmcgdG8gc2VhcmNoIGZvci48L2RkPgorICAgICAgICAgICAgPGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPlJldHVybnM6PC9zcGFuPjwvZHQ+PGRkPnRoZSBpbmRleCBvZiB0aGUgbGFzdCBvY2N1cnJlbmNlIG9mIHRoZSBzcGVjaWZpZWQgc3Vic3RyaW5nLAorICAgICAgICAgICAgICAgIG9yIDxjb2RlPi0xPC9jb2RlPiBpZiB0aGVyZSBpcyBubyBzdWNoIG9jY3VycmVuY2UuPC9kZD48L2RsPgorICAgIDwvbGk+Cis8L3VsPgorPGEgbmFtZT0ibGFzdEluZGV4T2YoamF2YS5sYW5nLlN0cmluZywgaW50KSI+CisgICAgPCEtLSAgIC0tPgorPC9hPgorPHVsIGNsYXNzPSJibG9ja0xpc3QiPgorICAgIDxsaSBjbGFzcz0iYmxvY2tMaXN0Ij4KKyAgICAgICAgPGg0Pmxhc3RJbmRleE9mPC9oND4KKzxwcmU+cHVibGljJm5ic3A7aW50Jm5ic3A7bGFzdEluZGV4T2YoPGEgaHJlZj0iLi4vLi4vamF2YS9sYW5nL1N0cmluZy5odG1sIiB0aXRsZT0iY2xhc3MgaW4gamF2YS5sYW5nIj5TdHJpbmc8L2E+Jm5ic3A7c3RyLAorICAgICAgICAgICAgICBpbnQmbmJzcDtmcm9tSW5kZXgpPC9wcmU+CisgICAgICAgIDxkaXYgY2xhc3M9ImJsb2NrIj5SZXR1cm5zIHRoZSBpbmRleCB3aXRoaW4gdGhpcyBzdHJpbmcgb2YgdGhlIGxhc3Qgb2NjdXJyZW5jZSBvZiB0aGUKKyAgICAgICAgICAgIHNwZWNpZmllZCBzdWJzdHJpbmcsIHNlYXJjaGluZyBiYWNrd2FyZCBzdGFydGluZyBhdCB0aGUgc3BlY2lmaWVkIGluZGV4LgorCisgICAgICAgICAgICA8cD5UaGUgcmV0dXJuZWQgaW5kZXggaXMgdGhlIGxhcmdlc3QgdmFsdWUgPGk+azwvaT4gZm9yIHdoaWNoOgorICAgICAgICAgICAgPGJsb2NrcXVvdGU+PHByZT4KKyA8aT5rPC9pPiAmbHQ7PSBmcm9tSW5kZXggJiYgdGhpcy5zdGFydHNXaXRoKHN0ciwgPGk+azwvaT4pCisgPC9wcmU+PC9ibG9ja3F1b3RlPgorICAgICAgICAgICAgSWYgbm8gc3VjaCB2YWx1ZSBvZiA8aT5rPC9pPiBleGlzdHMsIHRoZW4gPGNvZGU+LTE8L2NvZGU+IGlzIHJldHVybmVkLjwvZGl2PgorICAgICAgICA8ZGw+PGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPlBhcmFtZXRlcnM6PC9zcGFuPjwvZHQ+PGRkPjxjb2RlPnN0cjwvY29kZT4gLSB0aGUgc3Vic3RyaW5nIHRvIHNlYXJjaCBmb3IuPC9kZD48ZGQ+PGNvZGU+ZnJvbUluZGV4PC9jb2RlPiAtIHRoZSBpbmRleCB0byBzdGFydCB0aGUgc2VhcmNoIGZyb20uPC9kZD4KKyAgICAgICAgICAgIDxkdD48c3BhbiBjbGFzcz0ic3Ryb25nIj5SZXR1cm5zOjwvc3Bhbj48L2R0PjxkZD50aGUgaW5kZXggb2YgdGhlIGxhc3Qgb2NjdXJyZW5jZSBvZiB0aGUgc3BlY2lmaWVkIHN1YnN0cmluZywKKyAgICAgICAgICAgICAgICBzZWFyY2hpbmcgYmFja3dhcmQgZnJvbSB0aGUgc3BlY2lmaWVkIGluZGV4LAorICAgICAgICAgICAgICAgIG9yIDxjb2RlPi0xPC9jb2RlPiBpZiB0aGVyZSBpcyBubyBzdWNoIG9jY3VycmVuY2UuPC9kZD48L2RsPgorICAgIDwvbGk+Cis8L3VsPgorPGEgbmFtZT0ic3Vic3RyaW5nKGludCkiPgorICAgIDwhLS0gICAtLT4KKzwvYT4KKzx1bCBjbGFzcz0iYmxvY2tMaXN0Ij4KKyAgICA8bGkgY2xhc3M9ImJsb2NrTGlzdCI+CisgICAgICAgIDxoND5zdWJzdHJpbmc8L2g0PgorICAgICAgICA8cHJlPnB1YmxpYyZuYnNwOzxhIGhyZWY9Ii4uLy4uL2phdmEvbGFuZy9TdHJpbmcuaHRtbCIgdGl0bGU9ImNsYXNzIGluIGphdmEubGFuZyI+U3RyaW5nPC9hPiZuYnNwO3N1YnN0cmluZyhpbnQmbmJzcDtiZWdpbkluZGV4KTwvcHJlPgorICAgICAgICA8ZGl2IGNsYXNzPSJibG9jayI+UmV0dXJucyBhIG5ldyBzdHJpbmcgdGhhdCBpcyBhIHN1YnN0cmluZyBvZiB0aGlzIHN0cmluZy4gVGhlCisgICAgICAgICAgICBzdWJzdHJpbmcgYmVnaW5zIHdpdGggdGhlIGNoYXJhY3RlciBhdCB0aGUgc3BlY2lmaWVkIGluZGV4IGFuZAorICAgICAgICAgICAgZXh0ZW5kcyB0byB0aGUgZW5kIG9mIHRoaXMgc3RyaW5nLiA8cD4KKyAgICAgICAgICAgICAgICBFeGFtcGxlczoKKyAgICAgICAgICAgIDxibG9ja3F1b3RlPjxwcmU+CisgInVuaGFwcHkiLnN1YnN0cmluZygyKSByZXR1cm5zICJoYXBweSIKKyAiSGFyYmlzb24iLnN1YnN0cmluZygzKSByZXR1cm5zICJiaXNvbiIKKyAiZW1wdGluZXNzIi5zdWJzdHJpbmcoOSkgcmV0dXJucyAiIiAoYW4gZW1wdHkgc3RyaW5nKQorIDwvcHJlPjwvYmxvY2txdW90ZT48L2Rpdj4KKyAgICAgICAgPGRsPjxkdD48c3BhbiBjbGFzcz0ic3Ryb25nIj5QYXJhbWV0ZXJzOjwvc3Bhbj48L2R0PjxkZD48Y29kZT5iZWdpbkluZGV4PC9jb2RlPiAtIHRoZSBiZWdpbm5pbmcgaW5kZXgsIGluY2x1c2l2ZS48L2RkPgorICAgICAgICAgICAgPGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPlJldHVybnM6PC9zcGFuPjwvZHQ+PGRkPnRoZSBzcGVjaWZpZWQgc3Vic3RyaW5nLjwvZGQ+CisgICAgICAgICAgICA8ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+VGhyb3dzOjwvc3Bhbj48L2R0PgorICAgICAgICAgICAgPGRkPjxjb2RlPjxhIGhyZWY9Ii4uLy4uL2phdmEvbGFuZy9JbmRleE91dE9mQm91bmRzRXhjZXB0aW9uLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBqYXZhLmxhbmciPkluZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb248L2E+PC9jb2RlPiAtIGlmCisgICAgICAgICAgICAgICAgPGNvZGU+YmVnaW5JbmRleDwvY29kZT4gaXMgbmVnYXRpdmUgb3IgbGFyZ2VyIHRoYW4gdGhlCisgICAgICAgICAgICAgICAgbGVuZ3RoIG9mIHRoaXMgPGNvZGU+U3RyaW5nPC9jb2RlPiBvYmplY3QuPC9kZD48L2RsPgorICAgIDwvbGk+Cis8L3VsPgorPGEgbmFtZT0ic3Vic3RyaW5nKGludCwgaW50KSI+CisgICAgPCEtLSAgIC0tPgorPC9hPgorPHVsIGNsYXNzPSJibG9ja0xpc3QiPgorICAgIDxsaSBjbGFzcz0iYmxvY2tMaXN0Ij4KKyAgICAgICAgPGg0PnN1YnN0cmluZzwvaDQ+Cis8cHJlPnB1YmxpYyZuYnNwOzxhIGhyZWY9Ii4uLy4uL2phdmEvbGFuZy9TdHJpbmcuaHRtbCIgdGl0bGU9ImNsYXNzIGluIGphdmEubGFuZyI+U3RyaW5nPC9hPiZuYnNwO3N1YnN0cmluZyhpbnQmbmJzcDtiZWdpbkluZGV4LAorICAgICAgICAgICAgICAgaW50Jm5ic3A7ZW5kSW5kZXgpPC9wcmU+CisgICAgICAgIDxkaXYgY2xhc3M9ImJsb2NrIj5SZXR1cm5zIGEgbmV3IHN0cmluZyB0aGF0IGlzIGEgc3Vic3RyaW5nIG9mIHRoaXMgc3RyaW5nLiBUaGUKKyAgICAgICAgICAgIHN1YnN0cmluZyBiZWdpbnMgYXQgdGhlIHNwZWNpZmllZCA8Y29kZT5iZWdpbkluZGV4PC9jb2RlPiBhbmQKKyAgICAgICAgICAgIGV4dGVuZHMgdG8gdGhlIGNoYXJhY3RlciBhdCBpbmRleCA8Y29kZT5lbmRJbmRleCAtIDE8L2NvZGU+LgorICAgICAgICAgICAgVGh1cyB0aGUgbGVuZ3RoIG9mIHRoZSBzdWJzdHJpbmcgaXMgPGNvZGU+ZW5kSW5kZXgtYmVnaW5JbmRleDwvY29kZT4uCisgICAgICAgICAgICA8cD4KKyAgICAgICAgICAgICAgICBFeGFtcGxlczoKKyAgICAgICAgICAgIDxibG9ja3F1b3RlPjxwcmU+CisgImhhbWJ1cmdlciIuc3Vic3RyaW5nKDQsIDgpIHJldHVybnMgInVyZ2UiCisgInNtaWxlcyIuc3Vic3RyaW5nKDEsIDUpIHJldHVybnMgIm1pbGUiCisgPC9wcmU+PC9ibG9ja3F1b3RlPjwvZGl2PgorICAgICAgICA8ZGw+PGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPlBhcmFtZXRlcnM6PC9zcGFuPjwvZHQ+PGRkPjxjb2RlPmJlZ2luSW5kZXg8L2NvZGU+IC0gdGhlIGJlZ2lubmluZyBpbmRleCwgaW5jbHVzaXZlLjwvZGQ+PGRkPjxjb2RlPmVuZEluZGV4PC9jb2RlPiAtIHRoZSBlbmRpbmcgaW5kZXgsIGV4Y2x1c2l2ZS48L2RkPgorICAgICAgICAgICAgPGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPlJldHVybnM6PC9zcGFuPjwvZHQ+PGRkPnRoZSBzcGVjaWZpZWQgc3Vic3RyaW5nLjwvZGQ+CisgICAgICAgICAgICA8ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+VGhyb3dzOjwvc3Bhbj48L2R0PgorICAgICAgICAgICAgPGRkPjxjb2RlPjxhIGhyZWY9Ii4uLy4uL2phdmEvbGFuZy9JbmRleE91dE9mQm91bmRzRXhjZXB0aW9uLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBqYXZhLmxhbmciPkluZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb248L2E+PC9jb2RlPiAtIGlmIHRoZQorICAgICAgICAgICAgICAgIDxjb2RlPmJlZ2luSW5kZXg8L2NvZGU+IGlzIG5lZ2F0aXZlLCBvcgorICAgICAgICAgICAgICAgIDxjb2RlPmVuZEluZGV4PC9jb2RlPiBpcyBsYXJnZXIgdGhhbiB0aGUgbGVuZ3RoIG9mCisgICAgICAgICAgICAgICAgdGhpcyA8Y29kZT5TdHJpbmc8L2NvZGU+IG9iamVjdCwgb3IKKyAgICAgICAgICAgICAgICA8Y29kZT5iZWdpbkluZGV4PC9jb2RlPiBpcyBsYXJnZXIgdGhhbgorICAgICAgICAgICAgICAgIDxjb2RlPmVuZEluZGV4PC9jb2RlPi48L2RkPjwvZGw+CisgICAgPC9saT4KKzwvdWw+Cis8YSBuYW1lPSJzdWJTZXF1ZW5jZShpbnQsIGludCkiPgorICAgIDwhLS0gICAtLT4KKzwvYT4KKzx1bCBjbGFzcz0iYmxvY2tMaXN0Ij4KKyAgICA8bGkgY2xhc3M9ImJsb2NrTGlzdCI+CisgICAgICAgIDxoND5zdWJTZXF1ZW5jZTwvaDQ+Cis8cHJlPnB1YmxpYyZuYnNwOzxhIGhyZWY9Ii4uLy4uL2phdmEvbGFuZy9DaGFyU2VxdWVuY2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBqYXZhLmxhbmciPkNoYXJTZXF1ZW5jZTwvYT4mbmJzcDtzdWJTZXF1ZW5jZShpbnQmbmJzcDtiZWdpbkluZGV4LAorICAgICAgICAgICAgICAgICAgICAgICBpbnQmbmJzcDtlbmRJbmRleCk8L3ByZT4KKyAgICAgICAgPGRpdiBjbGFzcz0iYmxvY2siPlJldHVybnMgYSBuZXcgY2hhcmFjdGVyIHNlcXVlbmNlIHRoYXQgaXMgYSBzdWJzZXF1ZW5jZSBvZiB0aGlzIHNlcXVlbmNlLgorCisgICAgICAgICAgICA8cD4gQW4gaW52b2NhdGlvbiBvZiB0aGlzIG1ldGhvZCBvZiB0aGUgZm9ybQorCisgICAgICAgICAgICA8YmxvY2txdW90ZT48cHJlPgorIHN0ci5zdWJTZXF1ZW5jZShiZWdpbiwmbmJzcDtlbmQpPC9wcmU+PC9ibG9ja3F1b3RlPgorCisgICAgICAgICAgICBiZWhhdmVzIGluIGV4YWN0bHkgdGhlIHNhbWUgd2F5IGFzIHRoZSBpbnZvY2F0aW9uCisKKyAgICAgICAgICAgIDxibG9ja3F1b3RlPjxwcmU+Cisgc3RyLnN1YnN0cmluZyhiZWdpbiwmbmJzcDtlbmQpPC9wcmU+PC9ibG9ja3F1b3RlPgorCisgICAgICAgICAgICBUaGlzIG1ldGhvZCBpcyBkZWZpbmVkIHNvIHRoYXQgdGhlIDx0dD5TdHJpbmc8L3R0PiBjbGFzcyBjYW4gaW1wbGVtZW50CisgICAgICAgICAgICB0aGUgPGEgaHJlZj0iLi4vLi4vamF2YS9sYW5nL0NoYXJTZXF1ZW5jZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIGphdmEubGFuZyI+PGNvZGU+Q2hhclNlcXVlbmNlPC9jb2RlPjwvYT4gaW50ZXJmYWNlLiA8L3A+PC9kaXY+CisgICAgICAgIDxkbD4KKyAgICAgICAgICAgIDxkdD48c3Ryb25nPlNwZWNpZmllZCBieTo8L3N0cm9uZz48L2R0PgorICAgICAgICAgICAgPGRkPjxjb2RlPjxhIGhyZWY9Ii4uLy4uL2phdmEvbGFuZy9DaGFyU2VxdWVuY2UuaHRtbCNzdWJTZXF1ZW5jZShpbnQsIGludCkiPnN1YlNlcXVlbmNlPC9hPjwvY29kZT4mbmJzcDtpbiBpbnRlcmZhY2UmbmJzcDs8Y29kZT48YSBocmVmPSIuLi8uLi9qYXZhL2xhbmcvQ2hhclNlcXVlbmNlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gamF2YS5sYW5nIj5DaGFyU2VxdWVuY2U8L2E+PC9jb2RlPjwvZGQ+CisgICAgICAgICAgICA8ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+UGFyYW1ldGVyczo8L3NwYW4+PC9kdD48ZGQ+PGNvZGU+YmVnaW5JbmRleDwvY29kZT4gLSB0aGUgYmVnaW4gaW5kZXgsIGluY2x1c2l2ZS48L2RkPjxkZD48Y29kZT5lbmRJbmRleDwvY29kZT4gLSB0aGUgZW5kIGluZGV4LCBleGNsdXNpdmUuPC9kZD4KKyAgICAgICAgICAgIDxkdD48c3BhbiBjbGFzcz0ic3Ryb25nIj5SZXR1cm5zOjwvc3Bhbj48L2R0PjxkZD50aGUgc3BlY2lmaWVkIHN1YnNlcXVlbmNlLjwvZGQ+CisgICAgICAgICAgICA8ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+VGhyb3dzOjwvc3Bhbj48L2R0PgorICAgICAgICAgICAgPGRkPjxjb2RlPjxhIGhyZWY9Ii4uLy4uL2phdmEvbGFuZy9JbmRleE91dE9mQm91bmRzRXhjZXB0aW9uLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBqYXZhLmxhbmciPkluZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb248L2E+PC9jb2RlPiAtIGlmIDx0dD5iZWdpbkluZGV4PC90dD4gb3IgPHR0PmVuZEluZGV4PC90dD4gYXJlIG5lZ2F0aXZlLAorICAgICAgICAgICAgICAgIGlmIDx0dD5lbmRJbmRleDwvdHQ+IGlzIGdyZWF0ZXIgdGhhbiA8dHQ+bGVuZ3RoKCk8L3R0PiwKKyAgICAgICAgICAgICAgICBvciBpZiA8dHQ+YmVnaW5JbmRleDwvdHQ+IGlzIGdyZWF0ZXIgdGhhbiA8dHQ+c3RhcnRJbmRleDwvdHQ+PC9kZD48ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+U2luY2U6PC9zcGFuPjwvZHQ+CisgICAgICAgICAgICA8ZGQ+MS40PC9kZD48L2RsPgorICAgIDwvbGk+Cis8L3VsPgorPGEgbmFtZT0iY29uY2F0KGphdmEubGFuZy5TdHJpbmcpIj4KKyAgICA8IS0tICAgLS0+Cis8L2E+Cis8dWwgY2xhc3M9ImJsb2NrTGlzdCI+CisgICAgPGxpIGNsYXNzPSJibG9ja0xpc3QiPgorICAgICAgICA8aDQ+Y29uY2F0PC9oND4KKyAgICAgICAgPHByZT5wdWJsaWMmbmJzcDs8YSBocmVmPSIuLi8uLi9qYXZhL2xhbmcvU3RyaW5nLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBqYXZhLmxhbmciPlN0cmluZzwvYT4mbmJzcDtjb25jYXQoPGEgaHJlZj0iLi4vLi4vamF2YS9sYW5nL1N0cmluZy5odG1sIiB0aXRsZT0iY2xhc3MgaW4gamF2YS5sYW5nIj5TdHJpbmc8L2E+Jm5ic3A7c3RyKTwvcHJlPgorICAgICAgICA8ZGl2IGNsYXNzPSJibG9jayI+Q29uY2F0ZW5hdGVzIHRoZSBzcGVjaWZpZWQgc3RyaW5nIHRvIHRoZSBlbmQgb2YgdGhpcyBzdHJpbmcuCisgICAgICAgICAgICA8cD4KKyAgICAgICAgICAgICAgICBJZiB0aGUgbGVuZ3RoIG9mIHRoZSBhcmd1bWVudCBzdHJpbmcgaXMgPGNvZGU+MDwvY29kZT4sIHRoZW4gdGhpcworICAgICAgICAgICAgICAgIDxjb2RlPlN0cmluZzwvY29kZT4gb2JqZWN0IGlzIHJldHVybmVkLiBPdGhlcndpc2UsIGEgbmV3CisgICAgICAgICAgICAgICAgPGNvZGU+U3RyaW5nPC9jb2RlPiBvYmplY3QgaXMgY3JlYXRlZCwgcmVwcmVzZW50aW5nIGEgY2hhcmFjdGVyCisgICAgICAgICAgICAgICAgc2VxdWVuY2UgdGhhdCBpcyB0aGUgY29uY2F0ZW5hdGlvbiBvZiB0aGUgY2hhcmFjdGVyIHNlcXVlbmNlCisgICAgICAgICAgICAgICAgcmVwcmVzZW50ZWQgYnkgdGhpcyA8Y29kZT5TdHJpbmc8L2NvZGU+IG9iamVjdCBhbmQgdGhlIGNoYXJhY3RlcgorICAgICAgICAgICAgICAgIHNlcXVlbmNlIHJlcHJlc2VudGVkIGJ5IHRoZSBhcmd1bWVudCBzdHJpbmcuPHA+CisgICAgICAgICAgICAgICAgRXhhbXBsZXM6CisgICAgICAgICAgICA8YmxvY2txdW90ZT48cHJlPgorICJjYXJlcyIuY29uY2F0KCJzIikgcmV0dXJucyAiY2FyZXNzIgorICJ0byIuY29uY2F0KCJnZXQiKS5jb25jYXQoImhlciIpIHJldHVybnMgInRvZ2V0aGVyIgorIDwvcHJlPjwvYmxvY2txdW90ZT48L2Rpdj4KKyAgICAgICAgPGRsPjxkdD48c3BhbiBjbGFzcz0ic3Ryb25nIj5QYXJhbWV0ZXJzOjwvc3Bhbj48L2R0PjxkZD48Y29kZT5zdHI8L2NvZGU+IC0gdGhlIDxjb2RlPlN0cmluZzwvY29kZT4gdGhhdCBpcyBjb25jYXRlbmF0ZWQgdG8gdGhlIGVuZAorICAgICAgICAgICAgb2YgdGhpcyA8Y29kZT5TdHJpbmc8L2NvZGU+LjwvZGQ+CisgICAgICAgICAgICA8ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+UmV0dXJuczo8L3NwYW4+PC9kdD48ZGQ+YSBzdHJpbmcgdGhhdCByZXByZXNlbnRzIHRoZSBjb25jYXRlbmF0aW9uIG9mIHRoaXMgb2JqZWN0J3MKKyAgICAgICAgICAgICAgICBjaGFyYWN0ZXJzIGZvbGxvd2VkIGJ5IHRoZSBzdHJpbmcgYXJndW1lbnQncyBjaGFyYWN0ZXJzLjwvZGQ+PC9kbD4KKyAgICA8L2xpPgorPC91bD4KKzxhIG5hbWU9InJlcGxhY2UoY2hhciwgY2hhcikiPgorICAgIDwhLS0gICAtLT4KKzwvYT4KKzx1bCBjbGFzcz0iYmxvY2tMaXN0Ij4KKyAgICA8bGkgY2xhc3M9ImJsb2NrTGlzdCI+CisgICAgICAgIDxoND5yZXBsYWNlPC9oND4KKzxwcmU+cHVibGljJm5ic3A7PGEgaHJlZj0iLi4vLi4vamF2YS9sYW5nL1N0cmluZy5odG1sIiB0aXRsZT0iY2xhc3MgaW4gamF2YS5sYW5nIj5TdHJpbmc8L2E+Jm5ic3A7cmVwbGFjZShjaGFyJm5ic3A7b2xkQ2hhciwKKyAgICAgICAgICAgICBjaGFyJm5ic3A7bmV3Q2hhcik8L3ByZT4KKyAgICAgICAgPGRpdiBjbGFzcz0iYmxvY2siPlJldHVybnMgYSBuZXcgc3RyaW5nIHJlc3VsdGluZyBmcm9tIHJlcGxhY2luZyBhbGwgb2NjdXJyZW5jZXMgb2YKKyAgICAgICAgICAgIDxjb2RlPm9sZENoYXI8L2NvZGU+IGluIHRoaXMgc3RyaW5nIHdpdGggPGNvZGU+bmV3Q2hhcjwvY29kZT4uCisgICAgICAgICAgICA8cD4KKyAgICAgICAgICAgICAgICBJZiB0aGUgY2hhcmFjdGVyIDxjb2RlPm9sZENoYXI8L2NvZGU+IGRvZXMgbm90IG9jY3VyIGluIHRoZQorICAgICAgICAgICAgICAgIGNoYXJhY3RlciBzZXF1ZW5jZSByZXByZXNlbnRlZCBieSB0aGlzIDxjb2RlPlN0cmluZzwvY29kZT4gb2JqZWN0LAorICAgICAgICAgICAgICAgIHRoZW4gYSByZWZlcmVuY2UgdG8gdGhpcyA8Y29kZT5TdHJpbmc8L2NvZGU+IG9iamVjdCBpcyByZXR1cm5lZC4KKyAgICAgICAgICAgICAgICBPdGhlcndpc2UsIGEgbmV3IDxjb2RlPlN0cmluZzwvY29kZT4gb2JqZWN0IGlzIGNyZWF0ZWQgdGhhdAorICAgICAgICAgICAgICAgIHJlcHJlc2VudHMgYSBjaGFyYWN0ZXIgc2VxdWVuY2UgaWRlbnRpY2FsIHRvIHRoZSBjaGFyYWN0ZXIgc2VxdWVuY2UKKyAgICAgICAgICAgICAgICByZXByZXNlbnRlZCBieSB0aGlzIDxjb2RlPlN0cmluZzwvY29kZT4gb2JqZWN0LCBleGNlcHQgdGhhdCBldmVyeQorICAgICAgICAgICAgICAgIG9jY3VycmVuY2Ugb2YgPGNvZGU+b2xkQ2hhcjwvY29kZT4gaXMgcmVwbGFjZWQgYnkgYW4gb2NjdXJyZW5jZQorICAgICAgICAgICAgICAgIG9mIDxjb2RlPm5ld0NoYXI8L2NvZGU+LgorICAgICAgICAgICAgPHA+CisgICAgICAgICAgICAgICAgRXhhbXBsZXM6CisgICAgICAgICAgICA8YmxvY2txdW90ZT48cHJlPgorICJtZXNxdWl0ZSBpbiB5b3VyIGNlbGxhciIucmVwbGFjZSgnZScsICdvJykKKyAgICAgICAgIHJldHVybnMgIm1vc3F1aXRvIGluIHlvdXIgY29sbGFyIgorICJ0aGUgd2FyIG9mIGJhcm9uZXRzIi5yZXBsYWNlKCdyJywgJ3knKQorICAgICAgICAgcmV0dXJucyAidGhlIHdheSBvZiBiYXlvbmV0cyIKKyAic3BhcnJpbmcgd2l0aCBhIHB1cnBsZSBwb3Jwb2lzZSIucmVwbGFjZSgncCcsICd0JykKKyAgICAgICAgIHJldHVybnMgInN0YXJyaW5nIHdpdGggYSB0dXJ0bGUgdG9ydG9pc2UiCisgIkpvbkwiLnJlcGxhY2UoJ3EnLCAneCcpIHJldHVybnMgIkpvbkwiIChubyBjaGFuZ2UpCisgPC9wcmU+PC9ibG9ja3F1b3RlPjwvZGl2PgorICAgICAgICA8ZGw+PGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPlBhcmFtZXRlcnM6PC9zcGFuPjwvZHQ+PGRkPjxjb2RlPm9sZENoYXI8L2NvZGU+IC0gdGhlIG9sZCBjaGFyYWN0ZXIuPC9kZD48ZGQ+PGNvZGU+bmV3Q2hhcjwvY29kZT4gLSB0aGUgbmV3IGNoYXJhY3Rlci48L2RkPgorICAgICAgICAgICAgPGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPlJldHVybnM6PC9zcGFuPjwvZHQ+PGRkPmEgc3RyaW5nIGRlcml2ZWQgZnJvbSB0aGlzIHN0cmluZyBieSByZXBsYWNpbmcgZXZlcnkKKyAgICAgICAgICAgICAgICBvY2N1cnJlbmNlIG9mIDxjb2RlPm9sZENoYXI8L2NvZGU+IHdpdGggPGNvZGU+bmV3Q2hhcjwvY29kZT4uPC9kZD48L2RsPgorICAgIDwvbGk+Cis8L3VsPgorPGEgbmFtZT0ibWF0Y2hlcyhqYXZhLmxhbmcuU3RyaW5nKSI+CisgICAgPCEtLSAgIC0tPgorPC9hPgorPHVsIGNsYXNzPSJibG9ja0xpc3QiPgorICAgIDxsaSBjbGFzcz0iYmxvY2tMaXN0Ij4KKyAgICAgICAgPGg0Pm1hdGNoZXM8L2g0PgorICAgICAgICA8cHJlPnB1YmxpYyZuYnNwO2Jvb2xlYW4mbmJzcDttYXRjaGVzKDxhIGhyZWY9Ii4uLy4uL2phdmEvbGFuZy9TdHJpbmcuaHRtbCIgdGl0bGU9ImNsYXNzIGluIGphdmEubGFuZyI+U3RyaW5nPC9hPiZuYnNwO3JlZ2V4KTwvcHJlPgorICAgICAgICA8ZGl2IGNsYXNzPSJibG9jayI+VGVsbHMgd2hldGhlciBvciBub3QgdGhpcyBzdHJpbmcgbWF0Y2hlcyB0aGUgZ2l2ZW4gPGEKKyAgICAgICAgICAgICAgICBocmVmPSIuLi91dGlsL3JlZ2V4L1BhdHRlcm4uaHRtbCNzdW0iPnJlZ3VsYXIgZXhwcmVzc2lvbjwvYT4uCisKKyAgICAgICAgICAgIDxwPiBBbiBpbnZvY2F0aW9uIG9mIHRoaXMgbWV0aG9kIG9mIHRoZSBmb3JtCisgICAgICAgICAgICAgICAgPGk+c3RyPC9pPjx0dD4ubWF0Y2hlcyg8L3R0PjxpPnJlZ2V4PC9pPjx0dD4pPC90dD4geWllbGRzIGV4YWN0bHkgdGhlCisgICAgICAgICAgICAgICAgc2FtZSByZXN1bHQgYXMgdGhlIGV4cHJlc3Npb24KKworICAgICAgICAgICAgPGJsb2NrcXVvdGU+PHR0PiA8YSBocmVmPSIuLi8uLi9qYXZhL3V0aWwvcmVnZXgvUGF0dGVybi5odG1sIiB0aXRsZT0iY2xhc3MgaW4gamF2YS51dGlsLnJlZ2V4Ij48Y29kZT5QYXR0ZXJuPC9jb2RlPjwvYT4uPGEgaHJlZj0iLi4vLi4vamF2YS91dGlsL3JlZ2V4L1BhdHRlcm4uaHRtbCNtYXRjaGVzKGphdmEubGFuZy5TdHJpbmcsIGphdmEubGFuZy5DaGFyU2VxdWVuY2UpIj48Y29kZT5tYXRjaGVzPC9jb2RlPjwvYT4oPC90dD48aT5yZWdleDwvaT48dHQ+LDwvdHQ+IDxpPnN0cjwvaT48dHQ+KTwvdHQ+PC9ibG9ja3F1b3RlPjwvZGl2PgorICAgICAgICA8ZGw+PGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPlBhcmFtZXRlcnM6PC9zcGFuPjwvZHQ+PGRkPjxjb2RlPnJlZ2V4PC9jb2RlPiAtIHRoZSByZWd1bGFyIGV4cHJlc3Npb24gdG8gd2hpY2ggdGhpcyBzdHJpbmcgaXMgdG8gYmUgbWF0Y2hlZDwvZGQ+CisgICAgICAgICAgICA8ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+UmV0dXJuczo8L3NwYW4+PC9kdD48ZGQ+PHR0PnRydWU8L3R0PiBpZiwgYW5kIG9ubHkgaWYsIHRoaXMgc3RyaW5nIG1hdGNoZXMgdGhlCisgICAgICAgICAgICAgICAgZ2l2ZW4gcmVndWxhciBleHByZXNzaW9uPC9kZD4KKyAgICAgICAgICAgIDxkdD48c3BhbiBjbGFzcz0ic3Ryb25nIj5UaHJvd3M6PC9zcGFuPjwvZHQ+CisgICAgICAgICAgICA8ZGQ+PGNvZGU+PGEgaHJlZj0iLi4vLi4vamF2YS91dGlsL3JlZ2V4L1BhdHRlcm5TeW50YXhFeGNlcHRpb24uaHRtbCIgdGl0bGU9ImNsYXNzIGluIGphdmEudXRpbC5yZWdleCI+UGF0dGVyblN5bnRheEV4Y2VwdGlvbjwvYT48L2NvZGU+IC0gaWYgdGhlIHJlZ3VsYXIgZXhwcmVzc2lvbidzIHN5bnRheCBpcyBpbnZhbGlkPC9kZD48ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+U2luY2U6PC9zcGFuPjwvZHQ+CisgICAgICAgICAgICA8ZGQ+MS40PC9kZD4KKyAgICAgICAgICAgIDxkdD48c3BhbiBjbGFzcz0ic3Ryb25nIj5TZWUgQWxzbzo8L3NwYW4+PC9kdD48ZGQ+PGEgaHJlZj0iLi4vLi4vamF2YS91dGlsL3JlZ2V4L1BhdHRlcm4uaHRtbCIgdGl0bGU9ImNsYXNzIGluIGphdmEudXRpbC5yZWdleCI+PGNvZGU+UGF0dGVybjwvY29kZT48L2E+PC9kZD48L2RsPgorICAgIDwvbGk+Cis8L3VsPgorPGEgbmFtZT0iY29udGFpbnMoamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSkiPgorICAgIDwhLS0gICAtLT4KKzwvYT4KKzx1bCBjbGFzcz0iYmxvY2tMaXN0Ij4KKyAgICA8bGkgY2xhc3M9ImJsb2NrTGlzdCI+CisgICAgICAgIDxoND5jb250YWluczwvaDQ+CisgICAgICAgIDxwcmU+cHVibGljJm5ic3A7Ym9vbGVhbiZuYnNwO2NvbnRhaW5zKDxhIGhyZWY9Ii4uLy4uL2phdmEvbGFuZy9DaGFyU2VxdWVuY2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBqYXZhLmxhbmciPkNoYXJTZXF1ZW5jZTwvYT4mbmJzcDtzKTwvcHJlPgorICAgICAgICA8ZGl2IGNsYXNzPSJibG9jayI+UmV0dXJucyB0cnVlIGlmIGFuZCBvbmx5IGlmIHRoaXMgc3RyaW5nIGNvbnRhaW5zIHRoZSBzcGVjaWZpZWQKKyAgICAgICAgICAgIHNlcXVlbmNlIG9mIGNoYXIgdmFsdWVzLjwvZGl2PgorICAgICAgICA8ZGw+PGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPlBhcmFtZXRlcnM6PC9zcGFuPjwvZHQ+PGRkPjxjb2RlPnM8L2NvZGU+IC0gdGhlIHNlcXVlbmNlIHRvIHNlYXJjaCBmb3I8L2RkPgorICAgICAgICAgICAgPGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPlJldHVybnM6PC9zcGFuPjwvZHQ+PGRkPnRydWUgaWYgdGhpcyBzdHJpbmcgY29udGFpbnMgPGNvZGU+czwvY29kZT4sIGZhbHNlIG90aGVyd2lzZTwvZGQ+CisgICAgICAgICAgICA8ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+VGhyb3dzOjwvc3Bhbj48L2R0PgorICAgICAgICAgICAgPGRkPjxjb2RlPjxhIGhyZWY9Ii4uLy4uL2phdmEvbGFuZy9OdWxsUG9pbnRlckV4Y2VwdGlvbi5odG1sIiB0aXRsZT0iY2xhc3MgaW4gamF2YS5sYW5nIj5OdWxsUG9pbnRlckV4Y2VwdGlvbjwvYT48L2NvZGU+IC0gaWYgPGNvZGU+czwvY29kZT4gaXMgPGNvZGU+bnVsbDwvY29kZT48L2RkPjxkdD48c3BhbiBjbGFzcz0ic3Ryb25nIj5TaW5jZTo8L3NwYW4+PC9kdD4KKyAgICAgICAgICAgIDxkZD4xLjU8L2RkPjwvZGw+CisgICAgPC9saT4KKzwvdWw+Cis8YSBuYW1lPSJyZXBsYWNlRmlyc3QoamF2YS5sYW5nLlN0cmluZywgamF2YS5sYW5nLlN0cmluZykiPgorICAgIDwhLS0gICAtLT4KKzwvYT4KKzx1bCBjbGFzcz0iYmxvY2tMaXN0Ij4KKyAgICA8bGkgY2xhc3M9ImJsb2NrTGlzdCI+CisgICAgICAgIDxoND5yZXBsYWNlRmlyc3Q8L2g0PgorPHByZT5wdWJsaWMmbmJzcDs8YSBocmVmPSIuLi8uLi9qYXZhL2xhbmcvU3RyaW5nLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBqYXZhLmxhbmciPlN0cmluZzwvYT4mbmJzcDtyZXBsYWNlRmlyc3QoPGEgaHJlZj0iLi4vLi4vamF2YS9sYW5nL1N0cmluZy5odG1sIiB0aXRsZT0iY2xhc3MgaW4gamF2YS5sYW5nIj5TdHJpbmc8L2E+Jm5ic3A7cmVnZXgsCisgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi8uLi9qYXZhL2xhbmcvU3RyaW5nLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBqYXZhLmxhbmciPlN0cmluZzwvYT4mbmJzcDtyZXBsYWNlbWVudCk8L3ByZT4KKyAgICAgICAgPGRpdiBjbGFzcz0iYmxvY2siPlJlcGxhY2VzIHRoZSBmaXJzdCBzdWJzdHJpbmcgb2YgdGhpcyBzdHJpbmcgdGhhdCBtYXRjaGVzIHRoZSBnaXZlbiA8YQorICAgICAgICAgICAgICAgIGhyZWY9Ii4uL3V0aWwvcmVnZXgvUGF0dGVybi5odG1sI3N1bSI+cmVndWxhciBleHByZXNzaW9uPC9hPiB3aXRoIHRoZQorICAgICAgICAgICAgZ2l2ZW4gcmVwbGFjZW1lbnQuCisKKyAgICAgICAgICAgIDxwPiBBbiBpbnZvY2F0aW9uIG9mIHRoaXMgbWV0aG9kIG9mIHRoZSBmb3JtCisgICAgICAgICAgICAgICAgPGk+c3RyPC9pPjx0dD4ucmVwbGFjZUZpcnN0KDwvdHQ+PGk+cmVnZXg8L2k+PHR0Piw8L3R0PiA8aT5yZXBsPC9pPjx0dD4pPC90dD4KKyAgICAgICAgICAgICAgICB5aWVsZHMgZXhhY3RseSB0aGUgc2FtZSByZXN1bHQgYXMgdGhlIGV4cHJlc3Npb24KKworICAgICAgICAgICAgPGJsb2NrcXVvdGU+PHR0PgorICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uLy4uL2phdmEvdXRpbC9yZWdleC9QYXR0ZXJuLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBqYXZhLnV0aWwucmVnZXgiPjxjb2RlPlBhdHRlcm48L2NvZGU+PC9hPi48YSBocmVmPSIuLi8uLi9qYXZhL3V0aWwvcmVnZXgvUGF0dGVybi5odG1sI2NvbXBpbGUoamF2YS5sYW5nLlN0cmluZykiPjxjb2RlPmNvbXBpbGU8L2NvZGU+PC9hPig8L3R0PjxpPnJlZ2V4PC9pPjx0dD4pLjxhIGhyZWY9Ii4uLy4uL2phdmEvdXRpbC9yZWdleC9QYXR0ZXJuLmh0bWwjbWF0Y2hlcihqYXZhLmxhbmcuQ2hhclNlcXVlbmNlKSI+PGNvZGU+bWF0Y2hlcjwvY29kZT48L2E+KDwvdHQ+PGk+c3RyPC9pPjx0dD4pLjxhIGhyZWY9Ii4uLy4uL2phdmEvdXRpbC9yZWdleC9NYXRjaGVyLmh0bWwjcmVwbGFjZUZpcnN0KGphdmEubGFuZy5TdHJpbmcpIj48Y29kZT5yZXBsYWNlRmlyc3Q8L2NvZGU+PC9hPig8L3R0PjxpPnJlcGw8L2k+PHR0Pik8L3R0PjwvYmxvY2txdW90ZT4KKworICAgICAgICAgICAgPHA+CisgICAgICAgICAgICAgICAgTm90ZSB0aGF0IGJhY2tzbGFzaGVzICg8dHQ+XDwvdHQ+KSBhbmQgZG9sbGFyIHNpZ25zICg8dHQ+JDwvdHQ+KSBpbiB0aGUKKyAgICAgICAgICAgICAgICByZXBsYWNlbWVudCBzdHJpbmcgbWF5IGNhdXNlIHRoZSByZXN1bHRzIHRvIGJlIGRpZmZlcmVudCB0aGFuIGlmIGl0IHdlcmUKKyAgICAgICAgICAgICAgICBiZWluZyB0cmVhdGVkIGFzIGEgbGl0ZXJhbCByZXBsYWNlbWVudCBzdHJpbmc7IHNlZQorICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uLy4uL2phdmEvdXRpbC9yZWdleC9NYXRjaGVyLmh0bWwjcmVwbGFjZUZpcnN0KGphdmEubGFuZy5TdHJpbmcpIj48Y29kZT5NYXRjaGVyLnJlcGxhY2VGaXJzdChqYXZhLmxhbmcuU3RyaW5nKTwvY29kZT48L2E+LgorICAgICAgICAgICAgICAgIFVzZSA8YSBocmVmPSIuLi8uLi9qYXZhL3V0aWwvcmVnZXgvTWF0Y2hlci5odG1sI3F1b3RlUmVwbGFjZW1lbnQoamF2YS5sYW5nLlN0cmluZykiPjxjb2RlPk1hdGNoZXIucXVvdGVSZXBsYWNlbWVudChqYXZhLmxhbmcuU3RyaW5nKTwvY29kZT48L2E+IHRvIHN1cHByZXNzIHRoZSBzcGVjaWFsCisgICAgICAgICAgICAgICAgbWVhbmluZyBvZiB0aGVzZSBjaGFyYWN0ZXJzLCBpZiBkZXNpcmVkLjwvZGl2PgorICAgICAgICA8ZGw+PGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPlBhcmFtZXRlcnM6PC9zcGFuPjwvZHQ+PGRkPjxjb2RlPnJlZ2V4PC9jb2RlPiAtIHRoZSByZWd1bGFyIGV4cHJlc3Npb24gdG8gd2hpY2ggdGhpcyBzdHJpbmcgaXMgdG8gYmUgbWF0Y2hlZDwvZGQ+PGRkPjxjb2RlPnJlcGxhY2VtZW50PC9jb2RlPiAtIHRoZSBzdHJpbmcgdG8gYmUgc3Vic3RpdHV0ZWQgZm9yIHRoZSBmaXJzdCBtYXRjaDwvZGQ+CisgICAgICAgICAgICA8ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+UmV0dXJuczo8L3NwYW4+PC9kdD48ZGQ+VGhlIHJlc3VsdGluZyA8dHQ+U3RyaW5nPC90dD48L2RkPgorICAgICAgICAgICAgPGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPlRocm93czo8L3NwYW4+PC9kdD4KKyAgICAgICAgICAgIDxkZD48Y29kZT48YSBocmVmPSIuLi8uLi9qYXZhL3V0aWwvcmVnZXgvUGF0dGVyblN5bnRheEV4Y2VwdGlvbi5odG1sIiB0aXRsZT0iY2xhc3MgaW4gamF2YS51dGlsLnJlZ2V4Ij5QYXR0ZXJuU3ludGF4RXhjZXB0aW9uPC9hPjwvY29kZT4gLSBpZiB0aGUgcmVndWxhciBleHByZXNzaW9uJ3Mgc3ludGF4IGlzIGludmFsaWQ8L2RkPjxkdD48c3BhbiBjbGFzcz0ic3Ryb25nIj5TaW5jZTo8L3NwYW4+PC9kdD4KKyAgICAgICAgICAgIDxkZD4xLjQ8L2RkPgorICAgICAgICAgICAgPGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPlNlZSBBbHNvOjwvc3Bhbj48L2R0PjxkZD48YSBocmVmPSIuLi8uLi9qYXZhL3V0aWwvcmVnZXgvUGF0dGVybi5odG1sIiB0aXRsZT0iY2xhc3MgaW4gamF2YS51dGlsLnJlZ2V4Ij48Y29kZT5QYXR0ZXJuPC9jb2RlPjwvYT48L2RkPjwvZGw+CisgICAgPC9saT4KKzwvdWw+Cis8YSBuYW1lPSJyZXBsYWNlQWxsKGphdmEubGFuZy5TdHJpbmcsIGphdmEubGFuZy5TdHJpbmcpIj4KKyAgICA8IS0tICAgLS0+Cis8L2E+Cis8dWwgY2xhc3M9ImJsb2NrTGlzdCI+CisgICAgPGxpIGNsYXNzPSJibG9ja0xpc3QiPgorICAgICAgICA8aDQ+cmVwbGFjZUFsbDwvaDQ+Cis8cHJlPnB1YmxpYyZuYnNwOzxhIGhyZWY9Ii4uLy4uL2phdmEvbGFuZy9TdHJpbmcuaHRtbCIgdGl0bGU9ImNsYXNzIGluIGphdmEubGFuZyI+U3RyaW5nPC9hPiZuYnNwO3JlcGxhY2VBbGwoPGEgaHJlZj0iLi4vLi4vamF2YS9sYW5nL1N0cmluZy5odG1sIiB0aXRsZT0iY2xhc3MgaW4gamF2YS5sYW5nIj5TdHJpbmc8L2E+Jm5ic3A7cmVnZXgsCisgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vLi4vamF2YS9sYW5nL1N0cmluZy5odG1sIiB0aXRsZT0iY2xhc3MgaW4gamF2YS5sYW5nIj5TdHJpbmc8L2E+Jm5ic3A7cmVwbGFjZW1lbnQpPC9wcmU+CisgICAgICAgIDxkaXYgY2xhc3M9ImJsb2NrIj5SZXBsYWNlcyBlYWNoIHN1YnN0cmluZyBvZiB0aGlzIHN0cmluZyB0aGF0IG1hdGNoZXMgdGhlIGdpdmVuIDxhCisgICAgICAgICAgICAgICAgaHJlZj0iLi4vdXRpbC9yZWdleC9QYXR0ZXJuLmh0bWwjc3VtIj5yZWd1bGFyIGV4cHJlc3Npb248L2E+IHdpdGggdGhlCisgICAgICAgICAgICBnaXZlbiByZXBsYWNlbWVudC4KKworICAgICAgICAgICAgPHA+IEFuIGludm9jYXRpb24gb2YgdGhpcyBtZXRob2Qgb2YgdGhlIGZvcm0KKyAgICAgICAgICAgICAgICA8aT5zdHI8L2k+PHR0Pi5yZXBsYWNlQWxsKDwvdHQ+PGk+cmVnZXg8L2k+PHR0Piw8L3R0PiA8aT5yZXBsPC9pPjx0dD4pPC90dD4KKyAgICAgICAgICAgICAgICB5aWVsZHMgZXhhY3RseSB0aGUgc2FtZSByZXN1bHQgYXMgdGhlIGV4cHJlc3Npb24KKworICAgICAgICAgICAgPGJsb2NrcXVvdGU+PHR0PgorICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uLy4uL2phdmEvdXRpbC9yZWdleC9QYXR0ZXJuLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBqYXZhLnV0aWwucmVnZXgiPjxjb2RlPlBhdHRlcm48L2NvZGU+PC9hPi48YSBocmVmPSIuLi8uLi9qYXZhL3V0aWwvcmVnZXgvUGF0dGVybi5odG1sI2NvbXBpbGUoamF2YS5sYW5nLlN0cmluZykiPjxjb2RlPmNvbXBpbGU8L2NvZGU+PC9hPig8L3R0PjxpPnJlZ2V4PC9pPjx0dD4pLjxhIGhyZWY9Ii4uLy4uL2phdmEvdXRpbC9yZWdleC9QYXR0ZXJuLmh0bWwjbWF0Y2hlcihqYXZhLmxhbmcuQ2hhclNlcXVlbmNlKSI+PGNvZGU+bWF0Y2hlcjwvY29kZT48L2E+KDwvdHQ+PGk+c3RyPC9pPjx0dD4pLjxhIGhyZWY9Ii4uLy4uL2phdmEvdXRpbC9yZWdleC9NYXRjaGVyLmh0bWwjcmVwbGFjZUFsbChqYXZhLmxhbmcuU3RyaW5nKSI+PGNvZGU+cmVwbGFjZUFsbDwvY29kZT48L2E+KDwvdHQ+PGk+cmVwbDwvaT48dHQ+KTwvdHQ+PC9ibG9ja3F1b3RlPgorCisgICAgICAgICAgICA8cD4KKyAgICAgICAgICAgICAgICBOb3RlIHRoYXQgYmFja3NsYXNoZXMgKDx0dD5cPC90dD4pIGFuZCBkb2xsYXIgc2lnbnMgKDx0dD4kPC90dD4pIGluIHRoZQorICAgICAgICAgICAgICAgIHJlcGxhY2VtZW50IHN0cmluZyBtYXkgY2F1c2UgdGhlIHJlc3VsdHMgdG8gYmUgZGlmZmVyZW50IHRoYW4gaWYgaXQgd2VyZQorICAgICAgICAgICAgICAgIGJlaW5nIHRyZWF0ZWQgYXMgYSBsaXRlcmFsIHJlcGxhY2VtZW50IHN0cmluZzsgc2VlCisgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vLi4vamF2YS91dGlsL3JlZ2V4L01hdGNoZXIuaHRtbCNyZXBsYWNlQWxsKGphdmEubGFuZy5TdHJpbmcpIj48Y29kZT5NYXRjaGVyLnJlcGxhY2VBbGw8L2NvZGU+PC9hPi4KKyAgICAgICAgICAgICAgICBVc2UgPGEgaHJlZj0iLi4vLi4vamF2YS91dGlsL3JlZ2V4L01hdGNoZXIuaHRtbCNxdW90ZVJlcGxhY2VtZW50KGphdmEubGFuZy5TdHJpbmcpIj48Y29kZT5NYXRjaGVyLnF1b3RlUmVwbGFjZW1lbnQoamF2YS5sYW5nLlN0cmluZyk8L2NvZGU+PC9hPiB0byBzdXBwcmVzcyB0aGUgc3BlY2lhbAorICAgICAgICAgICAgICAgIG1lYW5pbmcgb2YgdGhlc2UgY2hhcmFjdGVycywgaWYgZGVzaXJlZC48L2Rpdj4KKyAgICAgICAgPGRsPjxkdD48c3BhbiBjbGFzcz0ic3Ryb25nIj5QYXJhbWV0ZXJzOjwvc3Bhbj48L2R0PjxkZD48Y29kZT5yZWdleDwvY29kZT4gLSB0aGUgcmVndWxhciBleHByZXNzaW9uIHRvIHdoaWNoIHRoaXMgc3RyaW5nIGlzIHRvIGJlIG1hdGNoZWQ8L2RkPjxkZD48Y29kZT5yZXBsYWNlbWVudDwvY29kZT4gLSB0aGUgc3RyaW5nIHRvIGJlIHN1YnN0aXR1dGVkIGZvciBlYWNoIG1hdGNoPC9kZD4KKyAgICAgICAgICAgIDxkdD48c3BhbiBjbGFzcz0ic3Ryb25nIj5SZXR1cm5zOjwvc3Bhbj48L2R0PjxkZD5UaGUgcmVzdWx0aW5nIDx0dD5TdHJpbmc8L3R0PjwvZGQ+CisgICAgICAgICAgICA8ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+VGhyb3dzOjwvc3Bhbj48L2R0PgorICAgICAgICAgICAgPGRkPjxjb2RlPjxhIGhyZWY9Ii4uLy4uL2phdmEvdXRpbC9yZWdleC9QYXR0ZXJuU3ludGF4RXhjZXB0aW9uLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBqYXZhLnV0aWwucmVnZXgiPlBhdHRlcm5TeW50YXhFeGNlcHRpb248L2E+PC9jb2RlPiAtIGlmIHRoZSByZWd1bGFyIGV4cHJlc3Npb24ncyBzeW50YXggaXMgaW52YWxpZDwvZGQ+PGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPlNpbmNlOjwvc3Bhbj48L2R0PgorICAgICAgICAgICAgPGRkPjEuNDwvZGQ+CisgICAgICAgICAgICA8ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+U2VlIEFsc286PC9zcGFuPjwvZHQ+PGRkPjxhIGhyZWY9Ii4uLy4uL2phdmEvdXRpbC9yZWdleC9QYXR0ZXJuLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBqYXZhLnV0aWwucmVnZXgiPjxjb2RlPlBhdHRlcm48L2NvZGU+PC9hPjwvZGQ+PC9kbD4KKyAgICA8L2xpPgorPC91bD4KKzxhIG5hbWU9InJlcGxhY2UoamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSwgamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSkiPgorICAgIDwhLS0gICAtLT4KKzwvYT4KKzx1bCBjbGFzcz0iYmxvY2tMaXN0Ij4KKyAgICA8bGkgY2xhc3M9ImJsb2NrTGlzdCI+CisgICAgICAgIDxoND5yZXBsYWNlPC9oND4KKzxwcmU+cHVibGljJm5ic3A7PGEgaHJlZj0iLi4vLi4vamF2YS9sYW5nL1N0cmluZy5odG1sIiB0aXRsZT0iY2xhc3MgaW4gamF2YS5sYW5nIj5TdHJpbmc8L2E+Jm5ic3A7cmVwbGFjZSg8YSBocmVmPSIuLi8uLi9qYXZhL2xhbmcvQ2hhclNlcXVlbmNlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gamF2YS5sYW5nIj5DaGFyU2VxdWVuY2U8L2E+Jm5ic3A7dGFyZ2V0LAorICAgICAgICAgICAgIDxhIGhyZWY9Ii4uLy4uL2phdmEvbGFuZy9DaGFyU2VxdWVuY2UuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBqYXZhLmxhbmciPkNoYXJTZXF1ZW5jZTwvYT4mbmJzcDtyZXBsYWNlbWVudCk8L3ByZT4KKyAgICAgICAgPGRpdiBjbGFzcz0iYmxvY2siPlJlcGxhY2VzIGVhY2ggc3Vic3RyaW5nIG9mIHRoaXMgc3RyaW5nIHRoYXQgbWF0Y2hlcyB0aGUgbGl0ZXJhbCB0YXJnZXQKKyAgICAgICAgICAgIHNlcXVlbmNlIHdpdGggdGhlIHNwZWNpZmllZCBsaXRlcmFsIHJlcGxhY2VtZW50IHNlcXVlbmNlLiBUaGUKKyAgICAgICAgICAgIHJlcGxhY2VtZW50IHByb2NlZWRzIGZyb20gdGhlIGJlZ2lubmluZyBvZiB0aGUgc3RyaW5nIHRvIHRoZSBlbmQsIGZvcgorICAgICAgICAgICAgZXhhbXBsZSwgcmVwbGFjaW5nICJhYSIgd2l0aCAiYiIgaW4gdGhlIHN0cmluZyAiYWFhIiB3aWxsIHJlc3VsdCBpbgorICAgICAgICAgICAgImJhIiByYXRoZXIgdGhhbiAiYWIiLjwvZGl2PgorICAgICAgICA8ZGw+PGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPlBhcmFtZXRlcnM6PC9zcGFuPjwvZHQ+PGRkPjxjb2RlPnRhcmdldDwvY29kZT4gLSBUaGUgc2VxdWVuY2Ugb2YgY2hhciB2YWx1ZXMgdG8gYmUgcmVwbGFjZWQ8L2RkPjxkZD48Y29kZT5yZXBsYWNlbWVudDwvY29kZT4gLSBUaGUgcmVwbGFjZW1lbnQgc2VxdWVuY2Ugb2YgY2hhciB2YWx1ZXM8L2RkPgorICAgICAgICAgICAgPGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPlJldHVybnM6PC9zcGFuPjwvZHQ+PGRkPlRoZSByZXN1bHRpbmcgc3RyaW5nPC9kZD4KKyAgICAgICAgICAgIDxkdD48c3BhbiBjbGFzcz0ic3Ryb25nIj5UaHJvd3M6PC9zcGFuPjwvZHQ+CisgICAgICAgICAgICA8ZGQ+PGNvZGU+PGEgaHJlZj0iLi4vLi4vamF2YS9sYW5nL051bGxQb2ludGVyRXhjZXB0aW9uLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBqYXZhLmxhbmciPk51bGxQb2ludGVyRXhjZXB0aW9uPC9hPjwvY29kZT4gLSBpZiA8Y29kZT50YXJnZXQ8L2NvZGU+IG9yCisgICAgICAgICAgICAgICAgPGNvZGU+cmVwbGFjZW1lbnQ8L2NvZGU+IGlzIDxjb2RlPm51bGw8L2NvZGU+LjwvZGQ+PGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPlNpbmNlOjwvc3Bhbj48L2R0PgorICAgICAgICAgICAgPGRkPjEuNTwvZGQ+PC9kbD4KKyAgICA8L2xpPgorPC91bD4KKzxhIG5hbWU9InNwbGl0KGphdmEubGFuZy5TdHJpbmcsIGludCkiPgorICAgIDwhLS0gICAtLT4KKzwvYT4KKzx1bCBjbGFzcz0iYmxvY2tMaXN0Ij4KKyAgICA8bGkgY2xhc3M9ImJsb2NrTGlzdCI+CisgICAgICAgIDxoND5zcGxpdDwvaDQ+Cis8cHJlPnB1YmxpYyZuYnNwOzxhIGhyZWY9Ii4uLy4uL2phdmEvbGFuZy9TdHJpbmcuaHRtbCIgdGl0bGU9ImNsYXNzIGluIGphdmEubGFuZyI+U3RyaW5nPC9hPltdJm5ic3A7c3BsaXQoPGEgaHJlZj0iLi4vLi4vamF2YS9sYW5nL1N0cmluZy5odG1sIiB0aXRsZT0iY2xhc3MgaW4gamF2YS5sYW5nIj5TdHJpbmc8L2E+Jm5ic3A7cmVnZXgsCisgICAgICAgICAgICAgaW50Jm5ic3A7bGltaXQpPC9wcmU+CisgICAgICAgIDxkaXYgY2xhc3M9ImJsb2NrIj5TcGxpdHMgdGhpcyBzdHJpbmcgYXJvdW5kIG1hdGNoZXMgb2YgdGhlIGdpdmVuCisgICAgICAgICAgICA8YSBocmVmPSIuLi91dGlsL3JlZ2V4L1BhdHRlcm4uaHRtbCNzdW0iPnJlZ3VsYXIgZXhwcmVzc2lvbjwvYT4uCisKKyAgICAgICAgICAgIDxwPiBUaGUgYXJyYXkgcmV0dXJuZWQgYnkgdGhpcyBtZXRob2QgY29udGFpbnMgZWFjaCBzdWJzdHJpbmcgb2YgdGhpcworICAgICAgICAgICAgICAgIHN0cmluZyB0aGF0IGlzIHRlcm1pbmF0ZWQgYnkgYW5vdGhlciBzdWJzdHJpbmcgdGhhdCBtYXRjaGVzIHRoZSBnaXZlbgorICAgICAgICAgICAgICAgIGV4cHJlc3Npb24gb3IgaXMgdGVybWluYXRlZCBieSB0aGUgZW5kIG9mIHRoZSBzdHJpbmcuICBUaGUgc3Vic3RyaW5ncyBpbgorICAgICAgICAgICAgICAgIHRoZSBhcnJheSBhcmUgaW4gdGhlIG9yZGVyIGluIHdoaWNoIHRoZXkgb2NjdXIgaW4gdGhpcyBzdHJpbmcuICBJZiB0aGUKKyAgICAgICAgICAgICAgICBleHByZXNzaW9uIGRvZXMgbm90IG1hdGNoIGFueSBwYXJ0IG9mIHRoZSBpbnB1dCB0aGVuIHRoZSByZXN1bHRpbmcgYXJyYXkKKyAgICAgICAgICAgICAgICBoYXMganVzdCBvbmUgZWxlbWVudCwgbmFtZWx5IHRoaXMgc3RyaW5nLgorCisgICAgICAgICAgICA8cD4gVGhlIDx0dD5saW1pdDwvdHQ+IHBhcmFtZXRlciBjb250cm9scyB0aGUgbnVtYmVyIG9mIHRpbWVzIHRoZQorICAgICAgICAgICAgICAgIHBhdHRlcm4gaXMgYXBwbGllZCBhbmQgdGhlcmVmb3JlIGFmZmVjdHMgdGhlIGxlbmd0aCBvZiB0aGUgcmVzdWx0aW5nCisgICAgICAgICAgICAgICAgYXJyYXkuICBJZiB0aGUgbGltaXQgPGk+bjwvaT4gaXMgZ3JlYXRlciB0aGFuIHplcm8gdGhlbiB0aGUgcGF0dGVybgorICAgICAgICAgICAgICAgIHdpbGwgYmUgYXBwbGllZCBhdCBtb3N0IDxpPm48L2k+Jm5ic3A7LSZuYnNwOzEgdGltZXMsIHRoZSBhcnJheSdzCisgICAgICAgICAgICAgICAgbGVuZ3RoIHdpbGwgYmUgbm8gZ3JlYXRlciB0aGFuIDxpPm48L2k+LCBhbmQgdGhlIGFycmF5J3MgbGFzdCBlbnRyeQorICAgICAgICAgICAgICAgIHdpbGwgY29udGFpbiBhbGwgaW5wdXQgYmV5b25kIHRoZSBsYXN0IG1hdGNoZWQgZGVsaW1pdGVyLiAgSWYgPGk+bjwvaT4KKyAgICAgICAgICAgICAgICBpcyBub24tcG9zaXRpdmUgdGhlbiB0aGUgcGF0dGVybiB3aWxsIGJlIGFwcGxpZWQgYXMgbWFueSB0aW1lcyBhcworICAgICAgICAgICAgICAgIHBvc3NpYmxlIGFuZCB0aGUgYXJyYXkgY2FuIGhhdmUgYW55IGxlbmd0aC4gIElmIDxpPm48L2k+IGlzIHplcm8gdGhlbgorICAgICAgICAgICAgICAgIHRoZSBwYXR0ZXJuIHdpbGwgYmUgYXBwbGllZCBhcyBtYW55IHRpbWVzIGFzIHBvc3NpYmxlLCB0aGUgYXJyYXkgY2FuCisgICAgICAgICAgICAgICAgaGF2ZSBhbnkgbGVuZ3RoLCBhbmQgdHJhaWxpbmcgZW1wdHkgc3RyaW5ncyB3aWxsIGJlIGRpc2NhcmRlZC4KKworICAgICAgICAgICAgPHA+IFRoZSBzdHJpbmcgPHR0PiJib286YW5kOmZvbyI8L3R0PiwgZm9yIGV4YW1wbGUsIHlpZWxkcyB0aGUKKyAgICAgICAgICAgICAgICBmb2xsb3dpbmcgcmVzdWx0cyB3aXRoIHRoZXNlIHBhcmFtZXRlcnM6CisKKyAgICAgICAgICAgIDxibG9ja3F1b3RlPjx0YWJsZSBjZWxscGFkZGluZz0xIGNlbGxzcGFjaW5nPTAgc3VtbWFyeT0iU3BsaXQgZXhhbXBsZSBzaG93aW5nIHJlZ2V4LCBsaW1pdCwgYW5kIHJlc3VsdCI+CisgICAgICAgICAgICAgICAgPHRyPgorICAgICAgICAgICAgICAgICAgICA8dGg+UmVnZXg8L3RoPgorICAgICAgICAgICAgICAgICAgICA8dGg+TGltaXQ8L3RoPgorICAgICAgICAgICAgICAgICAgICA8dGg+UmVzdWx0PC90aD4KKyAgICAgICAgICAgICAgICA8L3RyPgorICAgICAgICAgICAgICAgIDx0cj48dGQgYWxpZ249Y2VudGVyPjo8L3RkPgorICAgICAgICAgICAgICAgICAgICA8dGQgYWxpZ249Y2VudGVyPjI8L3RkPgorICAgICAgICAgICAgICAgICAgICA8dGQ+PHR0PnsgImJvbyIsICJhbmQ6Zm9vIiB9PC90dD48L3RkPjwvdHI+CisgICAgICAgICAgICAgICAgPHRyPjx0ZCBhbGlnbj1jZW50ZXI+OjwvdGQ+CisgICAgICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj1jZW50ZXI+NTwvdGQ+CisgICAgICAgICAgICAgICAgICAgIDx0ZD48dHQ+eyAiYm9vIiwgImFuZCIsICJmb28iIH08L3R0PjwvdGQ+PC90cj4KKyAgICAgICAgICAgICAgICA8dHI+PHRkIGFsaWduPWNlbnRlcj46PC90ZD4KKyAgICAgICAgICAgICAgICAgICAgPHRkIGFsaWduPWNlbnRlcj4tMjwvdGQ+CisgICAgICAgICAgICAgICAgICAgIDx0ZD48dHQ+eyAiYm9vIiwgImFuZCIsICJmb28iIH08L3R0PjwvdGQ+PC90cj4KKyAgICAgICAgICAgICAgICA8dHI+PHRkIGFsaWduPWNlbnRlcj5vPC90ZD4KKyAgICAgICAgICAgICAgICAgICAgPHRkIGFsaWduPWNlbnRlcj41PC90ZD4KKyAgICAgICAgICAgICAgICAgICAgPHRkPjx0dD57ICJiIiwgIiIsICI6YW5kOmYiLCAiIiwgIiIgfTwvdHQ+PC90ZD48L3RyPgorICAgICAgICAgICAgICAgIDx0cj48dGQgYWxpZ249Y2VudGVyPm88L3RkPgorICAgICAgICAgICAgICAgICAgICA8dGQgYWxpZ249Y2VudGVyPi0yPC90ZD4KKyAgICAgICAgICAgICAgICAgICAgPHRkPjx0dD57ICJiIiwgIiIsICI6YW5kOmYiLCAiIiwgIiIgfTwvdHQ+PC90ZD48L3RyPgorICAgICAgICAgICAgICAgIDx0cj48dGQgYWxpZ249Y2VudGVyPm88L3RkPgorICAgICAgICAgICAgICAgICAgICA8dGQgYWxpZ249Y2VudGVyPjA8L3RkPgorICAgICAgICAgICAgICAgICAgICA8dGQ+PHR0PnsgImIiLCAiIiwgIjphbmQ6ZiIgfTwvdHQ+PC90ZD48L3RyPgorICAgICAgICAgICAgPC90YWJsZT48L2Jsb2NrcXVvdGU+CisKKyAgICAgICAgICAgIDxwPiBBbiBpbnZvY2F0aW9uIG9mIHRoaXMgbWV0aG9kIG9mIHRoZSBmb3JtCisgICAgICAgICAgICAgICAgPGk+c3RyLjwvaT48dHQ+c3BsaXQoPC90dD48aT5yZWdleDwvaT48dHQ+LDwvdHQ+Jm5ic3A7PGk+bjwvaT48dHQ+KTwvdHQ+CisgICAgICAgICAgICAgICAgeWllbGRzIHRoZSBzYW1lIHJlc3VsdCBhcyB0aGUgZXhwcmVzc2lvbgorCisgICAgICAgICAgICA8YmxvY2txdW90ZT4KKyAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi8uLi9qYXZhL3V0aWwvcmVnZXgvUGF0dGVybi5odG1sIiB0aXRsZT0iY2xhc3MgaW4gamF2YS51dGlsLnJlZ2V4Ij48Y29kZT5QYXR0ZXJuPC9jb2RlPjwvYT4uPGEgaHJlZj0iLi4vLi4vamF2YS91dGlsL3JlZ2V4L1BhdHRlcm4uaHRtbCNjb21waWxlKGphdmEubGFuZy5TdHJpbmcpIj48Y29kZT5jb21waWxlPC9jb2RlPjwvYT48dHQ+KDwvdHQ+PGk+cmVnZXg8L2k+PHR0Pik8L3R0Pi48YSBocmVmPSIuLi8uLi9qYXZhL3V0aWwvcmVnZXgvUGF0dGVybi5odG1sI3NwbGl0KGphdmEubGFuZy5DaGFyU2VxdWVuY2UsIGludCkiPjxjb2RlPnNwbGl0PC9jb2RlPjwvYT48dHQ+KDwvdHQ+PGk+c3RyPC9pPjx0dD4sPC90dD4mbmJzcDs8aT5uPC9pPjx0dD4pPC90dD4KKyAgICAgICAgICAgIDwvYmxvY2txdW90ZT48L2Rpdj4KKyAgICAgICAgPGRsPjxkdD48c3BhbiBjbGFzcz0ic3Ryb25nIj5QYXJhbWV0ZXJzOjwvc3Bhbj48L2R0PjxkZD48Y29kZT5yZWdleDwvY29kZT4gLSB0aGUgZGVsaW1pdGluZyByZWd1bGFyIGV4cHJlc3Npb248L2RkPjxkZD48Y29kZT5saW1pdDwvY29kZT4gLSB0aGUgcmVzdWx0IHRocmVzaG9sZCwgYXMgZGVzY3JpYmVkIGFib3ZlPC9kZD4KKyAgICAgICAgICAgIDxkdD48c3BhbiBjbGFzcz0ic3Ryb25nIj5SZXR1cm5zOjwvc3Bhbj48L2R0PjxkZD50aGUgYXJyYXkgb2Ygc3RyaW5ncyBjb21wdXRlZCBieSBzcGxpdHRpbmcgdGhpcyBzdHJpbmcKKyAgICAgICAgICAgICAgICBhcm91bmQgbWF0Y2hlcyBvZiB0aGUgZ2l2ZW4gcmVndWxhciBleHByZXNzaW9uPC9kZD4KKyAgICAgICAgICAgIDxkdD48c3BhbiBjbGFzcz0ic3Ryb25nIj5UaHJvd3M6PC9zcGFuPjwvZHQ+CisgICAgICAgICAgICA8ZGQ+PGNvZGU+PGEgaHJlZj0iLi4vLi4vamF2YS91dGlsL3JlZ2V4L1BhdHRlcm5TeW50YXhFeGNlcHRpb24uaHRtbCIgdGl0bGU9ImNsYXNzIGluIGphdmEudXRpbC5yZWdleCI+UGF0dGVyblN5bnRheEV4Y2VwdGlvbjwvYT48L2NvZGU+IC0gaWYgdGhlIHJlZ3VsYXIgZXhwcmVzc2lvbidzIHN5bnRheCBpcyBpbnZhbGlkPC9kZD48ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+U2luY2U6PC9zcGFuPjwvZHQ+CisgICAgICAgICAgICA8ZGQ+MS40PC9kZD4KKyAgICAgICAgICAgIDxkdD48c3BhbiBjbGFzcz0ic3Ryb25nIj5TZWUgQWxzbzo8L3NwYW4+PC9kdD48ZGQ+PGEgaHJlZj0iLi4vLi4vamF2YS91dGlsL3JlZ2V4L1BhdHRlcm4uaHRtbCIgdGl0bGU9ImNsYXNzIGluIGphdmEudXRpbC5yZWdleCI+PGNvZGU+UGF0dGVybjwvY29kZT48L2E+PC9kZD48L2RsPgorICAgIDwvbGk+Cis8L3VsPgorPGEgbmFtZT0ic3BsaXQoamF2YS5sYW5nLlN0cmluZykiPgorICAgIDwhLS0gICAtLT4KKzwvYT4KKzx1bCBjbGFzcz0iYmxvY2tMaXN0Ij4KKyAgICA8bGkgY2xhc3M9ImJsb2NrTGlzdCI+CisgICAgICAgIDxoND5zcGxpdDwvaDQ+CisgICAgICAgIDxwcmU+cHVibGljJm5ic3A7PGEgaHJlZj0iLi4vLi4vamF2YS9sYW5nL1N0cmluZy5odG1sIiB0aXRsZT0iY2xhc3MgaW4gamF2YS5sYW5nIj5TdHJpbmc8L2E+W10mbmJzcDtzcGxpdCg8YSBocmVmPSIuLi8uLi9qYXZhL2xhbmcvU3RyaW5nLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBqYXZhLmxhbmciPlN0cmluZzwvYT4mbmJzcDtyZWdleCk8L3ByZT4KKyAgICAgICAgPGRpdiBjbGFzcz0iYmxvY2siPlNwbGl0cyB0aGlzIHN0cmluZyBhcm91bmQgbWF0Y2hlcyBvZiB0aGUgZ2l2ZW4gPGEKKyAgICAgICAgICAgICAgICBocmVmPSIuLi91dGlsL3JlZ2V4L1BhdHRlcm4uaHRtbCNzdW0iPnJlZ3VsYXIgZXhwcmVzc2lvbjwvYT4uCisKKyAgICAgICAgICAgIDxwPiBUaGlzIG1ldGhvZCB3b3JrcyBhcyBpZiBieSBpbnZva2luZyB0aGUgdHdvLWFyZ3VtZW50IDxhIGhyZWY9Ii4uLy4uL2phdmEvbGFuZy9TdHJpbmcuaHRtbCNzcGxpdChqYXZhLmxhbmcuU3RyaW5nLCBpbnQpIj48Y29kZT5zcGxpdDwvY29kZT48L2E+IG1ldGhvZCB3aXRoIHRoZSBnaXZlbiBleHByZXNzaW9uIGFuZCBhIGxpbWl0CisgICAgICAgICAgICAgICAgYXJndW1lbnQgb2YgemVyby4gIFRyYWlsaW5nIGVtcHR5IHN0cmluZ3MgYXJlIHRoZXJlZm9yZSBub3QgaW5jbHVkZWQgaW4KKyAgICAgICAgICAgICAgICB0aGUgcmVzdWx0aW5nIGFycmF5LgorCisgICAgICAgICAgICA8cD4gVGhlIHN0cmluZyA8dHQ+ImJvbzphbmQ6Zm9vIjwvdHQ+LCBmb3IgZXhhbXBsZSwgeWllbGRzIHRoZSBmb2xsb3dpbmcKKyAgICAgICAgICAgICAgICByZXN1bHRzIHdpdGggdGhlc2UgZXhwcmVzc2lvbnM6CisKKyAgICAgICAgICAgIDxibG9ja3F1b3RlPjx0YWJsZSBjZWxscGFkZGluZz0xIGNlbGxzcGFjaW5nPTAgc3VtbWFyeT0iU3BsaXQgZXhhbXBsZXMgc2hvd2luZyByZWdleCBhbmQgcmVzdWx0Ij4KKyAgICAgICAgICAgICAgICA8dHI+CisgICAgICAgICAgICAgICAgICAgIDx0aD5SZWdleDwvdGg+CisgICAgICAgICAgICAgICAgICAgIDx0aD5SZXN1bHQ8L3RoPgorICAgICAgICAgICAgICAgIDwvdHI+CisgICAgICAgICAgICAgICAgPHRyPjx0ZCBhbGlnbj1jZW50ZXI+OjwvdGQ+CisgICAgICAgICAgICAgICAgICAgIDx0ZD48dHQ+eyAiYm9vIiwgImFuZCIsICJmb28iIH08L3R0PjwvdGQ+PC90cj4KKyAgICAgICAgICAgICAgICA8dHI+PHRkIGFsaWduPWNlbnRlcj5vPC90ZD4KKyAgICAgICAgICAgICAgICAgICAgPHRkPjx0dD57ICJiIiwgIiIsICI6YW5kOmYiIH08L3R0PjwvdGQ+PC90cj4KKyAgICAgICAgICAgIDwvdGFibGU+PC9ibG9ja3F1b3RlPjwvZGl2PgorICAgICAgICA8ZGw+PGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPlBhcmFtZXRlcnM6PC9zcGFuPjwvZHQ+PGRkPjxjb2RlPnJlZ2V4PC9jb2RlPiAtIHRoZSBkZWxpbWl0aW5nIHJlZ3VsYXIgZXhwcmVzc2lvbjwvZGQ+CisgICAgICAgICAgICA8ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+UmV0dXJuczo8L3NwYW4+PC9kdD48ZGQ+dGhlIGFycmF5IG9mIHN0cmluZ3MgY29tcHV0ZWQgYnkgc3BsaXR0aW5nIHRoaXMgc3RyaW5nCisgICAgICAgICAgICAgICAgYXJvdW5kIG1hdGNoZXMgb2YgdGhlIGdpdmVuIHJlZ3VsYXIgZXhwcmVzc2lvbjwvZGQ+CisgICAgICAgICAgICA8ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+VGhyb3dzOjwvc3Bhbj48L2R0PgorICAgICAgICAgICAgPGRkPjxjb2RlPjxhIGhyZWY9Ii4uLy4uL2phdmEvdXRpbC9yZWdleC9QYXR0ZXJuU3ludGF4RXhjZXB0aW9uLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBqYXZhLnV0aWwucmVnZXgiPlBhdHRlcm5TeW50YXhFeGNlcHRpb248L2E+PC9jb2RlPiAtIGlmIHRoZSByZWd1bGFyIGV4cHJlc3Npb24ncyBzeW50YXggaXMgaW52YWxpZDwvZGQ+PGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPlNpbmNlOjwvc3Bhbj48L2R0PgorICAgICAgICAgICAgPGRkPjEuNDwvZGQ+CisgICAgICAgICAgICA8ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+U2VlIEFsc286PC9zcGFuPjwvZHQ+PGRkPjxhIGhyZWY9Ii4uLy4uL2phdmEvdXRpbC9yZWdleC9QYXR0ZXJuLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBqYXZhLnV0aWwucmVnZXgiPjxjb2RlPlBhdHRlcm48L2NvZGU+PC9hPjwvZGQ+PC9kbD4KKyAgICA8L2xpPgorPC91bD4KKzxhIG5hbWU9InRvTG93ZXJDYXNlKGphdmEudXRpbC5Mb2NhbGUpIj4KKyAgICA8IS0tICAgLS0+Cis8L2E+Cis8dWwgY2xhc3M9ImJsb2NrTGlzdCI+CisgICAgPGxpIGNsYXNzPSJibG9ja0xpc3QiPgorICAgICAgICA8aDQ+dG9Mb3dlckNhc2U8L2g0PgorICAgICAgICA8cHJlPnB1YmxpYyZuYnNwOzxhIGhyZWY9Ii4uLy4uL2phdmEvbGFuZy9TdHJpbmcuaHRtbCIgdGl0bGU9ImNsYXNzIGluIGphdmEubGFuZyI+U3RyaW5nPC9hPiZuYnNwO3RvTG93ZXJDYXNlKDxhIGhyZWY9Ii4uLy4uL2phdmEvdXRpbC9Mb2NhbGUuaHRtbCIgdGl0bGU9ImNsYXNzIGluIGphdmEudXRpbCI+TG9jYWxlPC9hPiZuYnNwO2xvY2FsZSk8L3ByZT4KKyAgICAgICAgPGRpdiBjbGFzcz0iYmxvY2siPkNvbnZlcnRzIGFsbCBvZiB0aGUgY2hhcmFjdGVycyBpbiB0aGlzIDxjb2RlPlN0cmluZzwvY29kZT4gdG8gbG93ZXIKKyAgICAgICAgICAgIGNhc2UgdXNpbmcgdGhlIHJ1bGVzIG9mIHRoZSBnaXZlbiA8Y29kZT5Mb2NhbGU8L2NvZGU+LiAgQ2FzZSBtYXBwaW5nIGlzIGJhc2VkCisgICAgICAgICAgICBvbiB0aGUgVW5pY29kZSBTdGFuZGFyZCB2ZXJzaW9uIHNwZWNpZmllZCBieSB0aGUgPGEgaHJlZj0iLi4vLi4vamF2YS9sYW5nL0NoYXJhY3Rlci5odG1sIiB0aXRsZT0iY2xhc3MgaW4gamF2YS5sYW5nIj48Y29kZT5DaGFyYWN0ZXI8L2NvZGU+PC9hPgorICAgICAgICAgICAgY2xhc3MuIFNpbmNlIGNhc2UgbWFwcGluZ3MgYXJlIG5vdCBhbHdheXMgMToxIGNoYXIgbWFwcGluZ3MsIHRoZSByZXN1bHRpbmcKKyAgICAgICAgICAgIDxjb2RlPlN0cmluZzwvY29kZT4gbWF5IGJlIGEgZGlmZmVyZW50IGxlbmd0aCB0aGFuIHRoZSBvcmlnaW5hbCA8Y29kZT5TdHJpbmc8L2NvZGU+LgorICAgICAgICAgICAgPHA+CisgICAgICAgICAgICAgICAgRXhhbXBsZXMgb2YgbG93ZXJjYXNlICBtYXBwaW5ncyBhcmUgaW4gdGhlIGZvbGxvd2luZyB0YWJsZToKKyAgICAgICAgICAgIDx0YWJsZSBib3JkZXI9IjEiIHN1bW1hcnk9Ikxvd2VyY2FzZSBtYXBwaW5nIGV4YW1wbGVzIHNob3dpbmcgbGFuZ3VhZ2UgY29kZSBvZiBsb2NhbGUsIHVwcGVyIGNhc2UsIGxvd2VyIGNhc2UsIGFuZCBkZXNjcmlwdGlvbiI+CisgICAgICAgICAgICAgICAgPHRyPgorICAgICAgICAgICAgICAgICAgICA8dGg+TGFuZ3VhZ2UgQ29kZSBvZiBMb2NhbGU8L3RoPgorICAgICAgICAgICAgICAgICAgICA8dGg+VXBwZXIgQ2FzZTwvdGg+CisgICAgICAgICAgICAgICAgICAgIDx0aD5Mb3dlciBDYXNlPC90aD4KKyAgICAgICAgICAgICAgICAgICAgPHRoPkRlc2NyaXB0aW9uPC90aD4KKyAgICAgICAgICAgICAgICA8L3RyPgorICAgICAgICAgICAgICAgIDx0cj4KKyAgICAgICAgICAgICAgICAgICAgPHRkPnRyIChUdXJraXNoKTwvdGQ+CisgICAgICAgICAgICAgICAgICAgIDx0ZD4mIzkyO3UwMTMwPC90ZD4KKyAgICAgICAgICAgICAgICAgICAgPHRkPiYjOTI7dTAwNjk8L3RkPgorICAgICAgICAgICAgICAgICAgICA8dGQ+Y2FwaXRhbCBsZXR0ZXIgSSB3aXRoIGRvdCBhYm92ZSAtJmd0OyBzbWFsbCBsZXR0ZXIgaTwvdGQ+CisgICAgICAgICAgICAgICAgPC90cj4KKyAgICAgICAgICAgICAgICA8dHI+CisgICAgICAgICAgICAgICAgICAgIDx0ZD50ciAoVHVya2lzaCk8L3RkPgorICAgICAgICAgICAgICAgICAgICA8dGQ+JiM5Mjt1MDA0OTwvdGQ+CisgICAgICAgICAgICAgICAgICAgIDx0ZD4mIzkyO3UwMTMxPC90ZD4KKyAgICAgICAgICAgICAgICAgICAgPHRkPmNhcGl0YWwgbGV0dGVyIEkgLSZndDsgc21hbGwgbGV0dGVyIGRvdGxlc3MgaSA8L3RkPgorICAgICAgICAgICAgICAgIDwvdHI+CisgICAgICAgICAgICAgICAgPHRyPgorICAgICAgICAgICAgICAgICAgICA8dGQ+KGFsbCk8L3RkPgorICAgICAgICAgICAgICAgICAgICA8dGQ+RnJlbmNoIEZyaWVzPC90ZD4KKyAgICAgICAgICAgICAgICAgICAgPHRkPmZyZW5jaCBmcmllczwvdGQ+CisgICAgICAgICAgICAgICAgICAgIDx0ZD5sb3dlcmNhc2VkIGFsbCBjaGFycyBpbiBTdHJpbmc8L3RkPgorICAgICAgICAgICAgICAgIDwvdHI+CisgICAgICAgICAgICAgICAgPHRyPgorICAgICAgICAgICAgICAgICAgICA8dGQ+KGFsbCk8L3RkPgorICAgICAgICAgICAgICAgICAgICA8dGQ+PGltZyBzcmM9ImRvYy1maWxlcy9jYXBpb3RhLmdpZiIgYWx0PSJjYXBpb3RhIj48aW1nIHNyYz0iZG9jLWZpbGVzL2NhcGNoaS5naWYiIGFsdD0iY2FwY2hpIj4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJkb2MtZmlsZXMvY2FwdGhldGEuZ2lmIiBhbHQ9ImNhcHRoZXRhIj48aW1nIHNyYz0iZG9jLWZpbGVzL2NhcHVwc2lsLmdpZiIgYWx0PSJjYXB1cHNpbCI+CisgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iZG9jLWZpbGVzL2NhcHNpZ21hLmdpZiIgYWx0PSJjYXBzaWdtYSI+PC90ZD4KKyAgICAgICAgICAgICAgICAgICAgPHRkPjxpbWcgc3JjPSJkb2MtZmlsZXMvaW90YS5naWYiIGFsdD0iaW90YSI+PGltZyBzcmM9ImRvYy1maWxlcy9jaGkuZ2lmIiBhbHQ9ImNoaSI+CisgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iZG9jLWZpbGVzL3RoZXRhLmdpZiIgYWx0PSJ0aGV0YSI+PGltZyBzcmM9ImRvYy1maWxlcy91cHNpbG9uLmdpZiIgYWx0PSJ1cHNpbG9uIj4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJkb2MtZmlsZXMvc2lnbWExLmdpZiIgYWx0PSJzaWdtYSI+PC90ZD4KKyAgICAgICAgICAgICAgICAgICAgPHRkPmxvd2VyY2FzZWQgYWxsIGNoYXJzIGluIFN0cmluZzwvdGQ+CisgICAgICAgICAgICAgICAgPC90cj4KKyAgICAgICAgICAgIDwvdGFibGU+PC9kaXY+CisgICAgICAgIDxkbD48ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+UGFyYW1ldGVyczo8L3NwYW4+PC9kdD48ZGQ+PGNvZGU+bG9jYWxlPC9jb2RlPiAtIHVzZSB0aGUgY2FzZSB0cmFuc2Zvcm1hdGlvbiBydWxlcyBmb3IgdGhpcyBsb2NhbGU8L2RkPgorICAgICAgICAgICAgPGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPlJldHVybnM6PC9zcGFuPjwvZHQ+PGRkPnRoZSA8Y29kZT5TdHJpbmc8L2NvZGU+LCBjb252ZXJ0ZWQgdG8gbG93ZXJjYXNlLjwvZGQ+PGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPlNpbmNlOjwvc3Bhbj48L2R0PgorICAgICAgICAgICAgPGRkPjEuMTwvZGQ+CisgICAgICAgICAgICA8ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+U2VlIEFsc286PC9zcGFuPjwvZHQ+PGRkPjxhIGhyZWY9Ii4uLy4uL2phdmEvbGFuZy9TdHJpbmcuaHRtbCN0b0xvd2VyQ2FzZSgpIj48Y29kZT50b0xvd2VyQ2FzZSgpPC9jb2RlPjwvYT4sCisgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vLi4vamF2YS9sYW5nL1N0cmluZy5odG1sI3RvVXBwZXJDYXNlKCkiPjxjb2RlPnRvVXBwZXJDYXNlKCk8L2NvZGU+PC9hPiwKKyAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi8uLi9qYXZhL2xhbmcvU3RyaW5nLmh0bWwjdG9VcHBlckNhc2UoamF2YS51dGlsLkxvY2FsZSkiPjxjb2RlPnRvVXBwZXJDYXNlKExvY2FsZSk8L2NvZGU+PC9hPjwvZGQ+PC9kbD4KKyAgICA8L2xpPgorPC91bD4KKzxhIG5hbWU9InRvTG93ZXJDYXNlKCkiPgorICAgIDwhLS0gICAtLT4KKzwvYT4KKzx1bCBjbGFzcz0iYmxvY2tMaXN0Ij4KKyAgICA8bGkgY2xhc3M9ImJsb2NrTGlzdCI+CisgICAgICAgIDxoND50b0xvd2VyQ2FzZTwvaDQ+CisgICAgICAgIDxwcmU+cHVibGljJm5ic3A7PGEgaHJlZj0iLi4vLi4vamF2YS9sYW5nL1N0cmluZy5odG1sIiB0aXRsZT0iY2xhc3MgaW4gamF2YS5sYW5nIj5TdHJpbmc8L2E+Jm5ic3A7dG9Mb3dlckNhc2UoKTwvcHJlPgorICAgICAgICA8ZGl2IGNsYXNzPSJibG9jayI+Q29udmVydHMgYWxsIG9mIHRoZSBjaGFyYWN0ZXJzIGluIHRoaXMgPGNvZGU+U3RyaW5nPC9jb2RlPiB0byBsb3dlcgorICAgICAgICAgICAgY2FzZSB1c2luZyB0aGUgcnVsZXMgb2YgdGhlIGRlZmF1bHQgbG9jYWxlLiBUaGlzIGlzIGVxdWl2YWxlbnQgdG8gY2FsbGluZworICAgICAgICAgICAgPGNvZGU+dG9Mb3dlckNhc2UoTG9jYWxlLmdldERlZmF1bHQoKSk8L2NvZGU+LgorICAgICAgICAgICAgPHA+CisgICAgICAgICAgICAgICAgPGI+Tm90ZTo8L2I+IFRoaXMgbWV0aG9kIGlzIGxvY2FsZSBzZW5zaXRpdmUsIGFuZCBtYXkgcHJvZHVjZSB1bmV4cGVjdGVkCisgICAgICAgICAgICAgICAgcmVzdWx0cyBpZiB1c2VkIGZvciBzdHJpbmdzIHRoYXQgYXJlIGludGVuZGVkIHRvIGJlIGludGVycHJldGVkIGxvY2FsZQorICAgICAgICAgICAgICAgIGluZGVwZW5kZW50bHkuCisgICAgICAgICAgICAgICAgRXhhbXBsZXMgYXJlIHByb2dyYW1taW5nIGxhbmd1YWdlIGlkZW50aWZpZXJzLCBwcm90b2NvbCBrZXlzLCBhbmQgSFRNTAorICAgICAgICAgICAgICAgIHRhZ3MuCisgICAgICAgICAgICAgICAgRm9yIGluc3RhbmNlLCA8Y29kZT4iVElUTEUiLnRvTG93ZXJDYXNlKCk8L2NvZGU+IGluIGEgVHVya2lzaCBsb2NhbGUKKyAgICAgICAgICAgICAgICByZXR1cm5zIDxjb2RlPiJ0XHUwMTMxdGxlIjwvY29kZT4sIHdoZXJlICdcdTAxMzEnIGlzIHRoZQorICAgICAgICAgICAgICAgIExBVElOIFNNQUxMIExFVFRFUiBET1RMRVNTIEkgY2hhcmFjdGVyLgorICAgICAgICAgICAgICAgIFRvIG9idGFpbiBjb3JyZWN0IHJlc3VsdHMgZm9yIGxvY2FsZSBpbnNlbnNpdGl2ZSBzdHJpbmdzLCB1c2UKKyAgICAgICAgICAgICAgICA8Y29kZT50b0xvd2VyQ2FzZShMb2NhbGUuRU5HTElTSCk8L2NvZGU+LgorICAgICAgICAgICAgPHA+PC9kaXY+CisgICAgICAgIDxkbD48ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+UmV0dXJuczo8L3NwYW4+PC9kdD48ZGQ+dGhlIDxjb2RlPlN0cmluZzwvY29kZT4sIGNvbnZlcnRlZCB0byBsb3dlcmNhc2UuPC9kZD48ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+U2VlIEFsc286PC9zcGFuPjwvZHQ+PGRkPjxhIGhyZWY9Ii4uLy4uL2phdmEvbGFuZy9TdHJpbmcuaHRtbCN0b0xvd2VyQ2FzZShqYXZhLnV0aWwuTG9jYWxlKSI+PGNvZGU+dG9Mb3dlckNhc2UoTG9jYWxlKTwvY29kZT48L2E+PC9kZD48L2RsPgorICAgIDwvbGk+Cis8L3VsPgorPGEgbmFtZT0idG9VcHBlckNhc2UoamF2YS51dGlsLkxvY2FsZSkiPgorICAgIDwhLS0gICAtLT4KKzwvYT4KKzx1bCBjbGFzcz0iYmxvY2tMaXN0Ij4KKyAgICA8bGkgY2xhc3M9ImJsb2NrTGlzdCI+CisgICAgICAgIDxoND50b1VwcGVyQ2FzZTwvaDQ+CisgICAgICAgIDxwcmU+cHVibGljJm5ic3A7PGEgaHJlZj0iLi4vLi4vamF2YS9sYW5nL1N0cmluZy5odG1sIiB0aXRsZT0iY2xhc3MgaW4gamF2YS5sYW5nIj5TdHJpbmc8L2E+Jm5ic3A7dG9VcHBlckNhc2UoPGEgaHJlZj0iLi4vLi4vamF2YS91dGlsL0xvY2FsZS5odG1sIiB0aXRsZT0iY2xhc3MgaW4gamF2YS51dGlsIj5Mb2NhbGU8L2E+Jm5ic3A7bG9jYWxlKTwvcHJlPgorICAgICAgICA8ZGl2IGNsYXNzPSJibG9jayI+Q29udmVydHMgYWxsIG9mIHRoZSBjaGFyYWN0ZXJzIGluIHRoaXMgPGNvZGU+U3RyaW5nPC9jb2RlPiB0byB1cHBlcgorICAgICAgICAgICAgY2FzZSB1c2luZyB0aGUgcnVsZXMgb2YgdGhlIGdpdmVuIDxjb2RlPkxvY2FsZTwvY29kZT4uIENhc2UgbWFwcGluZyBpcyBiYXNlZAorICAgICAgICAgICAgb24gdGhlIFVuaWNvZGUgU3RhbmRhcmQgdmVyc2lvbiBzcGVjaWZpZWQgYnkgdGhlIDxhIGhyZWY9Ii4uLy4uL2phdmEvbGFuZy9DaGFyYWN0ZXIuaHRtbCIgdGl0bGU9ImNsYXNzIGluIGphdmEubGFuZyI+PGNvZGU+Q2hhcmFjdGVyPC9jb2RlPjwvYT4KKyAgICAgICAgICAgIGNsYXNzLiBTaW5jZSBjYXNlIG1hcHBpbmdzIGFyZSBub3QgYWx3YXlzIDE6MSBjaGFyIG1hcHBpbmdzLCB0aGUgcmVzdWx0aW5nCisgICAgICAgICAgICA8Y29kZT5TdHJpbmc8L2NvZGU+IG1heSBiZSBhIGRpZmZlcmVudCBsZW5ndGggdGhhbiB0aGUgb3JpZ2luYWwgPGNvZGU+U3RyaW5nPC9jb2RlPi4KKyAgICAgICAgICAgIDxwPgorICAgICAgICAgICAgICAgIEV4YW1wbGVzIG9mIGxvY2FsZS1zZW5zaXRpdmUgYW5kIDE6TSBjYXNlIG1hcHBpbmdzIGFyZSBpbiB0aGUgZm9sbG93aW5nIHRhYmxlLgorICAgICAgICAgICAgPHA+CisgICAgICAgICAgICA8dGFibGUgYm9yZGVyPSIxIiBzdW1tYXJ5PSJFeGFtcGxlcyBvZiBsb2NhbGUtc2Vuc2l0aXZlIGFuZCAxOk0gY2FzZSBtYXBwaW5ncy4gU2hvd3MgTGFuZ3VhZ2UgY29kZSBvZiBsb2NhbGUsIGxvd2VyIGNhc2UsIHVwcGVyIGNhc2UsIGFuZCBkZXNjcmlwdGlvbi4iPgorICAgICAgICAgICAgICAgIDx0cj4KKyAgICAgICAgICAgICAgICAgICAgPHRoPkxhbmd1YWdlIENvZGUgb2YgTG9jYWxlPC90aD4KKyAgICAgICAgICAgICAgICAgICAgPHRoPkxvd2VyIENhc2U8L3RoPgorICAgICAgICAgICAgICAgICAgICA8dGg+VXBwZXIgQ2FzZTwvdGg+CisgICAgICAgICAgICAgICAgICAgIDx0aD5EZXNjcmlwdGlvbjwvdGg+CisgICAgICAgICAgICAgICAgPC90cj4KKyAgICAgICAgICAgICAgICA8dHI+CisgICAgICAgICAgICAgICAgICAgIDx0ZD50ciAoVHVya2lzaCk8L3RkPgorICAgICAgICAgICAgICAgICAgICA8dGQ+JiM5Mjt1MDA2OTwvdGQ+CisgICAgICAgICAgICAgICAgICAgIDx0ZD4mIzkyO3UwMTMwPC90ZD4KKyAgICAgICAgICAgICAgICAgICAgPHRkPnNtYWxsIGxldHRlciBpIC0mZ3Q7IGNhcGl0YWwgbGV0dGVyIEkgd2l0aCBkb3QgYWJvdmU8L3RkPgorICAgICAgICAgICAgICAgIDwvdHI+CisgICAgICAgICAgICAgICAgPHRyPgorICAgICAgICAgICAgICAgICAgICA8dGQ+dHIgKFR1cmtpc2gpPC90ZD4KKyAgICAgICAgICAgICAgICAgICAgPHRkPiYjOTI7dTAxMzE8L3RkPgorICAgICAgICAgICAgICAgICAgICA8dGQ+JiM5Mjt1MDA0OTwvdGQ+CisgICAgICAgICAgICAgICAgICAgIDx0ZD5zbWFsbCBsZXR0ZXIgZG90bGVzcyBpIC0mZ3Q7IGNhcGl0YWwgbGV0dGVyIEk8L3RkPgorICAgICAgICAgICAgICAgIDwvdHI+CisgICAgICAgICAgICAgICAgPHRyPgorICAgICAgICAgICAgICAgICAgICA8dGQ+KGFsbCk8L3RkPgorICAgICAgICAgICAgICAgICAgICA8dGQ+JiM5Mjt1MDBkZjwvdGQ+CisgICAgICAgICAgICAgICAgICAgIDx0ZD4mIzkyO3UwMDUzICYjOTI7dTAwNTM8L3RkPgorICAgICAgICAgICAgICAgICAgICA8dGQ+c21hbGwgbGV0dGVyIHNoYXJwIHMgLSZndDsgdHdvIGxldHRlcnM6IFNTPC90ZD4KKyAgICAgICAgICAgICAgICA8L3RyPgorICAgICAgICAgICAgICAgIDx0cj4KKyAgICAgICAgICAgICAgICAgICAgPHRkPihhbGwpPC90ZD4KKyAgICAgICAgICAgICAgICAgICAgPHRkPkZhaHJ2ZXJnbiZ1dW1sO2dlbjwvdGQ+CisgICAgICAgICAgICAgICAgICAgIDx0ZD5GQUhSVkVSR04mVXVtbDtHRU48L3RkPgorICAgICAgICAgICAgICAgICAgICA8dGQ+PC90ZD4KKyAgICAgICAgICAgICAgICA8L3RyPgorICAgICAgICAgICAgPC90YWJsZT48L2Rpdj4KKyAgICAgICAgPGRsPjxkdD48c3BhbiBjbGFzcz0ic3Ryb25nIj5QYXJhbWV0ZXJzOjwvc3Bhbj48L2R0PjxkZD48Y29kZT5sb2NhbGU8L2NvZGU+IC0gdXNlIHRoZSBjYXNlIHRyYW5zZm9ybWF0aW9uIHJ1bGVzIGZvciB0aGlzIGxvY2FsZTwvZGQ+CisgICAgICAgICAgICA8ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+UmV0dXJuczo8L3NwYW4+PC9kdD48ZGQ+dGhlIDxjb2RlPlN0cmluZzwvY29kZT4sIGNvbnZlcnRlZCB0byB1cHBlcmNhc2UuPC9kZD48ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+U2luY2U6PC9zcGFuPjwvZHQ+CisgICAgICAgICAgICA8ZGQ+MS4xPC9kZD4KKyAgICAgICAgICAgIDxkdD48c3BhbiBjbGFzcz0ic3Ryb25nIj5TZWUgQWxzbzo8L3NwYW4+PC9kdD48ZGQ+PGEgaHJlZj0iLi4vLi4vamF2YS9sYW5nL1N0cmluZy5odG1sI3RvVXBwZXJDYXNlKCkiPjxjb2RlPnRvVXBwZXJDYXNlKCk8L2NvZGU+PC9hPiwKKyAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi8uLi9qYXZhL2xhbmcvU3RyaW5nLmh0bWwjdG9Mb3dlckNhc2UoKSI+PGNvZGU+dG9Mb3dlckNhc2UoKTwvY29kZT48L2E+LAorICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uLy4uL2phdmEvbGFuZy9TdHJpbmcuaHRtbCN0b0xvd2VyQ2FzZShqYXZhLnV0aWwuTG9jYWxlKSI+PGNvZGU+dG9Mb3dlckNhc2UoTG9jYWxlKTwvY29kZT48L2E+PC9kZD48L2RsPgorICAgIDwvbGk+Cis8L3VsPgorPGEgbmFtZT0idG9VcHBlckNhc2UoKSI+CisgICAgPCEtLSAgIC0tPgorPC9hPgorPHVsIGNsYXNzPSJibG9ja0xpc3QiPgorICAgIDxsaSBjbGFzcz0iYmxvY2tMaXN0Ij4KKyAgICAgICAgPGg0PnRvVXBwZXJDYXNlPC9oND4KKyAgICAgICAgPHByZT5wdWJsaWMmbmJzcDs8YSBocmVmPSIuLi8uLi9qYXZhL2xhbmcvU3RyaW5nLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBqYXZhLmxhbmciPlN0cmluZzwvYT4mbmJzcDt0b1VwcGVyQ2FzZSgpPC9wcmU+CisgICAgICAgIDxkaXYgY2xhc3M9ImJsb2NrIj5Db252ZXJ0cyBhbGwgb2YgdGhlIGNoYXJhY3RlcnMgaW4gdGhpcyA8Y29kZT5TdHJpbmc8L2NvZGU+IHRvIHVwcGVyCisgICAgICAgICAgICBjYXNlIHVzaW5nIHRoZSBydWxlcyBvZiB0aGUgZGVmYXVsdCBsb2NhbGUuIFRoaXMgbWV0aG9kIGlzIGVxdWl2YWxlbnQgdG8KKyAgICAgICAgICAgIDxjb2RlPnRvVXBwZXJDYXNlKExvY2FsZS5nZXREZWZhdWx0KCkpPC9jb2RlPi4KKyAgICAgICAgICAgIDxwPgorICAgICAgICAgICAgICAgIDxiPk5vdGU6PC9iPiBUaGlzIG1ldGhvZCBpcyBsb2NhbGUgc2Vuc2l0aXZlLCBhbmQgbWF5IHByb2R1Y2UgdW5leHBlY3RlZAorICAgICAgICAgICAgICAgIHJlc3VsdHMgaWYgdXNlZCBmb3Igc3RyaW5ncyB0aGF0IGFyZSBpbnRlbmRlZCB0byBiZSBpbnRlcnByZXRlZCBsb2NhbGUKKyAgICAgICAgICAgICAgICBpbmRlcGVuZGVudGx5LgorICAgICAgICAgICAgICAgIEV4YW1wbGVzIGFyZSBwcm9ncmFtbWluZyBsYW5ndWFnZSBpZGVudGlmaWVycywgcHJvdG9jb2wga2V5cywgYW5kIEhUTUwKKyAgICAgICAgICAgICAgICB0YWdzLgorICAgICAgICAgICAgICAgIEZvciBpbnN0YW5jZSwgPGNvZGU+InRpdGxlIi50b1VwcGVyQ2FzZSgpPC9jb2RlPiBpbiBhIFR1cmtpc2ggbG9jYWxlCisgICAgICAgICAgICAgICAgcmV0dXJucyA8Y29kZT4iVFx1MDEzMFRMRSI8L2NvZGU+LCB3aGVyZSAnXHUwMTMwJyBpcyB0aGUKKyAgICAgICAgICAgICAgICBMQVRJTiBDQVBJVEFMIExFVFRFUiBJIFdJVEggRE9UIEFCT1ZFIGNoYXJhY3Rlci4KKyAgICAgICAgICAgICAgICBUbyBvYnRhaW4gY29ycmVjdCByZXN1bHRzIGZvciBsb2NhbGUgaW5zZW5zaXRpdmUgc3RyaW5ncywgdXNlCisgICAgICAgICAgICAgICAgPGNvZGU+dG9VcHBlckNhc2UoTG9jYWxlLkVOR0xJU0gpPC9jb2RlPi4KKyAgICAgICAgICAgIDxwPjwvZGl2PgorICAgICAgICA8ZGw+PGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPlJldHVybnM6PC9zcGFuPjwvZHQ+PGRkPnRoZSA8Y29kZT5TdHJpbmc8L2NvZGU+LCBjb252ZXJ0ZWQgdG8gdXBwZXJjYXNlLjwvZGQ+PGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPlNlZSBBbHNvOjwvc3Bhbj48L2R0PjxkZD48YSBocmVmPSIuLi8uLi9qYXZhL2xhbmcvU3RyaW5nLmh0bWwjdG9VcHBlckNhc2UoamF2YS51dGlsLkxvY2FsZSkiPjxjb2RlPnRvVXBwZXJDYXNlKExvY2FsZSk8L2NvZGU+PC9hPjwvZGQ+PC9kbD4KKyAgICA8L2xpPgorPC91bD4KKzxhIG5hbWU9InRyaW0oKSI+CisgICAgPCEtLSAgIC0tPgorPC9hPgorPHVsIGNsYXNzPSJibG9ja0xpc3QiPgorICAgIDxsaSBjbGFzcz0iYmxvY2tMaXN0Ij4KKyAgICAgICAgPGg0PnRyaW08L2g0PgorICAgICAgICA8cHJlPnB1YmxpYyZuYnNwOzxhIGhyZWY9Ii4uLy4uL2phdmEvbGFuZy9TdHJpbmcuaHRtbCIgdGl0bGU9ImNsYXNzIGluIGphdmEubGFuZyI+U3RyaW5nPC9hPiZuYnNwO3RyaW0oKTwvcHJlPgorICAgICAgICA8ZGl2IGNsYXNzPSJibG9jayI+UmV0dXJucyBhIGNvcHkgb2YgdGhlIHN0cmluZywgd2l0aCBsZWFkaW5nIGFuZCB0cmFpbGluZyB3aGl0ZXNwYWNlCisgICAgICAgICAgICBvbWl0dGVkLgorICAgICAgICAgICAgPHA+CisgICAgICAgICAgICAgICAgSWYgdGhpcyA8Y29kZT5TdHJpbmc8L2NvZGU+IG9iamVjdCByZXByZXNlbnRzIGFuIGVtcHR5IGNoYXJhY3RlcgorICAgICAgICAgICAgICAgIHNlcXVlbmNlLCBvciB0aGUgZmlyc3QgYW5kIGxhc3QgY2hhcmFjdGVycyBvZiBjaGFyYWN0ZXIgc2VxdWVuY2UKKyAgICAgICAgICAgICAgICByZXByZXNlbnRlZCBieSB0aGlzIDxjb2RlPlN0cmluZzwvY29kZT4gb2JqZWN0IGJvdGggaGF2ZSBjb2RlcworICAgICAgICAgICAgICAgIGdyZWF0ZXIgdGhhbiA8Y29kZT4nJiM5Mjt1MDAyMCc8L2NvZGU+ICh0aGUgc3BhY2UgY2hhcmFjdGVyKSwgdGhlbiBhCisgICAgICAgICAgICAgICAgcmVmZXJlbmNlIHRvIHRoaXMgPGNvZGU+U3RyaW5nPC9jb2RlPiBvYmplY3QgaXMgcmV0dXJuZWQuCisgICAgICAgICAgICA8cD4KKyAgICAgICAgICAgICAgICBPdGhlcndpc2UsIGlmIHRoZXJlIGlzIG5vIGNoYXJhY3RlciB3aXRoIGEgY29kZSBncmVhdGVyIHRoYW4KKyAgICAgICAgICAgICAgICA8Y29kZT4nJiM5Mjt1MDAyMCc8L2NvZGU+IGluIHRoZSBzdHJpbmcsIHRoZW4gYSBuZXcKKyAgICAgICAgICAgICAgICA8Y29kZT5TdHJpbmc8L2NvZGU+IG9iamVjdCByZXByZXNlbnRpbmcgYW4gZW1wdHkgc3RyaW5nIGlzIGNyZWF0ZWQKKyAgICAgICAgICAgICAgICBhbmQgcmV0dXJuZWQuCisgICAgICAgICAgICA8cD4KKyAgICAgICAgICAgICAgICBPdGhlcndpc2UsIGxldCA8aT5rPC9pPiBiZSB0aGUgaW5kZXggb2YgdGhlIGZpcnN0IGNoYXJhY3RlciBpbiB0aGUKKyAgICAgICAgICAgICAgICBzdHJpbmcgd2hvc2UgY29kZSBpcyBncmVhdGVyIHRoYW4gPGNvZGU+JyYjOTI7dTAwMjAnPC9jb2RlPiwgYW5kIGxldAorICAgICAgICAgICAgICAgIDxpPm08L2k+IGJlIHRoZSBpbmRleCBvZiB0aGUgbGFzdCBjaGFyYWN0ZXIgaW4gdGhlIHN0cmluZyB3aG9zZSBjb2RlCisgICAgICAgICAgICAgICAgaXMgZ3JlYXRlciB0aGFuIDxjb2RlPicmIzkyO3UwMDIwJzwvY29kZT4uIEEgbmV3IDxjb2RlPlN0cmluZzwvY29kZT4KKyAgICAgICAgICAgICAgICBvYmplY3QgaXMgY3JlYXRlZCwgcmVwcmVzZW50aW5nIHRoZSBzdWJzdHJpbmcgb2YgdGhpcyBzdHJpbmcgdGhhdAorICAgICAgICAgICAgICAgIGJlZ2lucyB3aXRoIHRoZSBjaGFyYWN0ZXIgYXQgaW5kZXggPGk+azwvaT4gYW5kIGVuZHMgd2l0aCB0aGUKKyAgICAgICAgICAgICAgICBjaGFyYWN0ZXIgYXQgaW5kZXggPGk+bTwvaT4tdGhhdCBpcywgdGhlIHJlc3VsdCBvZgorICAgICAgICAgICAgICAgIDxjb2RlPnRoaXMuc3Vic3RyaW5nKDxpPms8L2k+LCZuYnNwOzxpPm08L2k+KzEpPC9jb2RlPi4KKyAgICAgICAgICAgIDxwPgorICAgICAgICAgICAgICAgIFRoaXMgbWV0aG9kIG1heSBiZSB1c2VkIHRvIHRyaW0gd2hpdGVzcGFjZSAoYXMgZGVmaW5lZCBhYm92ZSkgZnJvbQorICAgICAgICAgICAgICAgIHRoZSBiZWdpbm5pbmcgYW5kIGVuZCBvZiBhIHN0cmluZy48L2Rpdj4KKyAgICAgICAgPGRsPjxkdD48c3BhbiBjbGFzcz0ic3Ryb25nIj5SZXR1cm5zOjwvc3Bhbj48L2R0PjxkZD5BIGNvcHkgb2YgdGhpcyBzdHJpbmcgd2l0aCBsZWFkaW5nIGFuZCB0cmFpbGluZyB3aGl0ZQorICAgICAgICAgICAgc3BhY2UgcmVtb3ZlZCwgb3IgdGhpcyBzdHJpbmcgaWYgaXQgaGFzIG5vIGxlYWRpbmcgb3IKKyAgICAgICAgICAgIHRyYWlsaW5nIHdoaXRlIHNwYWNlLjwvZGQ+PC9kbD4KKyAgICA8L2xpPgorPC91bD4KKzxhIG5hbWU9InRvU3RyaW5nKCkiPgorICAgIDwhLS0gICAtLT4KKzwvYT4KKzx1bCBjbGFzcz0iYmxvY2tMaXN0Ij4KKyAgICA8bGkgY2xhc3M9ImJsb2NrTGlzdCI+CisgICAgICAgIDxoND50b1N0cmluZzwvaDQ+CisgICAgICAgIDxwcmU+cHVibGljJm5ic3A7PGEgaHJlZj0iLi4vLi4vamF2YS9sYW5nL1N0cmluZy5odG1sIiB0aXRsZT0iY2xhc3MgaW4gamF2YS5sYW5nIj5TdHJpbmc8L2E+Jm5ic3A7dG9TdHJpbmcoKTwvcHJlPgorICAgICAgICA8ZGl2IGNsYXNzPSJibG9jayI+VGhpcyBvYmplY3QgKHdoaWNoIGlzIGFscmVhZHkgYSBzdHJpbmchKSBpcyBpdHNlbGYgcmV0dXJuZWQuPC9kaXY+CisgICAgICAgIDxkbD4KKyAgICAgICAgICAgIDxkdD48c3Ryb25nPlNwZWNpZmllZCBieTo8L3N0cm9uZz48L2R0PgorICAgICAgICAgICAgPGRkPjxjb2RlPjxhIGhyZWY9Ii4uLy4uL2phdmEvbGFuZy9DaGFyU2VxdWVuY2UuaHRtbCN0b1N0cmluZygpIj50b1N0cmluZzwvYT48L2NvZGU+Jm5ic3A7aW4gaW50ZXJmYWNlJm5ic3A7PGNvZGU+PGEgaHJlZj0iLi4vLi4vamF2YS9sYW5nL0NoYXJTZXF1ZW5jZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIGphdmEubGFuZyI+Q2hhclNlcXVlbmNlPC9hPjwvY29kZT48L2RkPgorICAgICAgICAgICAgPGR0PjxzdHJvbmc+T3ZlcnJpZGVzOjwvc3Ryb25nPjwvZHQ+CisgICAgICAgICAgICA8ZGQ+PGNvZGU+PGEgaHJlZj0iLi4vLi4vamF2YS9sYW5nL09iamVjdC5odG1sI3RvU3RyaW5nKCkiPnRvU3RyaW5nPC9hPjwvY29kZT4mbmJzcDtpbiBjbGFzcyZuYnNwOzxjb2RlPjxhIGhyZWY9Ii4uLy4uL2phdmEvbGFuZy9PYmplY3QuaHRtbCIgdGl0bGU9ImNsYXNzIGluIGphdmEubGFuZyI+T2JqZWN0PC9hPjwvY29kZT48L2RkPgorICAgICAgICAgICAgPGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPlJldHVybnM6PC9zcGFuPjwvZHQ+PGRkPnRoZSBzdHJpbmcgaXRzZWxmLjwvZGQ+PC9kbD4KKyAgICA8L2xpPgorPC91bD4KKzxhIG5hbWU9InRvQ2hhckFycmF5KCkiPgorICAgIDwhLS0gICAtLT4KKzwvYT4KKzx1bCBjbGFzcz0iYmxvY2tMaXN0Ij4KKyAgICA8bGkgY2xhc3M9ImJsb2NrTGlzdCI+CisgICAgICAgIDxoND50b0NoYXJBcnJheTwvaDQ+CisgICAgICAgIDxwcmU+cHVibGljJm5ic3A7Y2hhcltdJm5ic3A7dG9DaGFyQXJyYXkoKTwvcHJlPgorICAgICAgICA8ZGl2IGNsYXNzPSJibG9jayI+Q29udmVydHMgdGhpcyBzdHJpbmcgdG8gYSBuZXcgY2hhcmFjdGVyIGFycmF5LjwvZGl2PgorICAgICAgICA8ZGw+PGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPlJldHVybnM6PC9zcGFuPjwvZHQ+PGRkPmEgbmV3bHkgYWxsb2NhdGVkIGNoYXJhY3RlciBhcnJheSB3aG9zZSBsZW5ndGggaXMgdGhlIGxlbmd0aAorICAgICAgICAgICAgb2YgdGhpcyBzdHJpbmcgYW5kIHdob3NlIGNvbnRlbnRzIGFyZSBpbml0aWFsaXplZCB0byBjb250YWluCisgICAgICAgICAgICB0aGUgY2hhcmFjdGVyIHNlcXVlbmNlIHJlcHJlc2VudGVkIGJ5IHRoaXMgc3RyaW5nLjwvZGQ+PC9kbD4KKyAgICA8L2xpPgorPC91bD4KKzxhIG5hbWU9ImZvcm1hdChqYXZhLmxhbmcuU3RyaW5nLCBqYXZhLmxhbmcuT2JqZWN0Li4uKSI+CisgICAgPCEtLSAgIC0tPgorPC9hPgorPHVsIGNsYXNzPSJibG9ja0xpc3QiPgorICAgIDxsaSBjbGFzcz0iYmxvY2tMaXN0Ij4KKyAgICAgICAgPGg0PmZvcm1hdDwvaDQ+Cis8cHJlPnB1YmxpYyBzdGF0aWMmbmJzcDs8YSBocmVmPSIuLi8uLi9qYXZhL2xhbmcvU3RyaW5nLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBqYXZhLmxhbmciPlN0cmluZzwvYT4mbmJzcDtmb3JtYXQoPGEgaHJlZj0iLi4vLi4vamF2YS9sYW5nL1N0cmluZy5odG1sIiB0aXRsZT0iY2xhc3MgaW4gamF2YS5sYW5nIj5TdHJpbmc8L2E+Jm5ic3A7Zm9ybWF0LAorICAgICAgICAgICAgPGEgaHJlZj0iLi4vLi4vamF2YS9sYW5nL09iamVjdC5odG1sIiB0aXRsZT0iY2xhc3MgaW4gamF2YS5sYW5nIj5PYmplY3Q8L2E+Li4uJm5ic3A7YXJncyk8L3ByZT4KKyAgICAgICAgPGRpdiBjbGFzcz0iYmxvY2siPlJldHVybnMgYSBmb3JtYXR0ZWQgc3RyaW5nIHVzaW5nIHRoZSBzcGVjaWZpZWQgZm9ybWF0IHN0cmluZyBhbmQKKyAgICAgICAgICAgIGFyZ3VtZW50cy4KKworICAgICAgICAgICAgPHA+IFRoZSBsb2NhbGUgYWx3YXlzIHVzZWQgaXMgdGhlIG9uZSByZXR1cm5lZCBieSA8YSBocmVmPSIuLi8uLi9qYXZhL3V0aWwvTG9jYWxlLmh0bWwjZ2V0RGVmYXVsdCgpIj48Y29kZT5Mb2NhbGUuZ2V0RGVmYXVsdCgpPC9jb2RlPjwvYT4uPC9kaXY+CisgICAgICAgIDxkbD48ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+UGFyYW1ldGVyczo8L3NwYW4+PC9kdD48ZGQ+PGNvZGU+Zm9ybWF0PC9jb2RlPiAtIEEgPGEgaHJlZj0iLi4vdXRpbC9Gb3JtYXR0ZXIuaHRtbCNzeW50YXgiPmZvcm1hdCBzdHJpbmc8L2E+PC9kZD48ZGQ+PGNvZGU+YXJnczwvY29kZT4gLSBBcmd1bWVudHMgcmVmZXJlbmNlZCBieSB0aGUgZm9ybWF0IHNwZWNpZmllcnMgaW4gdGhlIGZvcm1hdAorICAgICAgICAgICAgc3RyaW5nLiAgSWYgdGhlcmUgYXJlIG1vcmUgYXJndW1lbnRzIHRoYW4gZm9ybWF0IHNwZWNpZmllcnMsIHRoZQorICAgICAgICAgICAgZXh0cmEgYXJndW1lbnRzIGFyZSBpZ25vcmVkLiAgVGhlIG51bWJlciBvZiBhcmd1bWVudHMgaXMKKyAgICAgICAgICAgIHZhcmlhYmxlIGFuZCBtYXkgYmUgemVyby4gIFRoZSBtYXhpbXVtIG51bWJlciBvZiBhcmd1bWVudHMgaXMKKyAgICAgICAgICAgIGxpbWl0ZWQgYnkgdGhlIG1heGltdW0gZGltZW5zaW9uIG9mIGEgSmF2YSBhcnJheSBhcyBkZWZpbmVkIGJ5CisgICAgICAgICAgICA8Y2l0ZT5UaGUgSmF2YSZ0cmFkZTsgVmlydHVhbCBNYWNoaW5lIFNwZWNpZmljYXRpb248L2NpdGU+LgorICAgICAgICAgICAgVGhlIGJlaGF2aW91ciBvbiBhCisgICAgICAgICAgICA8dHQ+bnVsbDwvdHQ+IGFyZ3VtZW50IGRlcGVuZHMgb24gdGhlIDxhCisgICAgICAgICAgICAgICAgICAgIGhyZWY9Ii4uL3V0aWwvRm9ybWF0dGVyLmh0bWwjc3ludGF4Ij5jb252ZXJzaW9uPC9hPi48L2RkPgorICAgICAgICAgICAgPGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPlJldHVybnM6PC9zcGFuPjwvZHQ+PGRkPkEgZm9ybWF0dGVkIHN0cmluZzwvZGQ+CisgICAgICAgICAgICA8ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+VGhyb3dzOjwvc3Bhbj48L2R0PgorICAgICAgICAgICAgPGRkPjxjb2RlPklsbGVnYWxGb3JtYXRFeGNlcHRpb248L2NvZGU+IC0gSWYgYSBmb3JtYXQgc3RyaW5nIGNvbnRhaW5zIGFuIGlsbGVnYWwgc3ludGF4LCBhIGZvcm1hdAorICAgICAgICAgICAgICAgIHNwZWNpZmllciB0aGF0IGlzIGluY29tcGF0aWJsZSB3aXRoIHRoZSBnaXZlbiBhcmd1bWVudHMsCisgICAgICAgICAgICAgICAgaW5zdWZmaWNpZW50IGFyZ3VtZW50cyBnaXZlbiB0aGUgZm9ybWF0IHN0cmluZywgb3Igb3RoZXIKKyAgICAgICAgICAgICAgICBpbGxlZ2FsIGNvbmRpdGlvbnMuICBGb3Igc3BlY2lmaWNhdGlvbiBvZiBhbGwgcG9zc2libGUKKyAgICAgICAgICAgICAgICBmb3JtYXR0aW5nIGVycm9ycywgc2VlIHRoZSA8YQorICAgICAgICAgICAgICAgICAgICAgICAgaHJlZj0iLi4vdXRpbC9Gb3JtYXR0ZXIuaHRtbCNkZXRhaWwiPkRldGFpbHM8L2E+IHNlY3Rpb24gb2YgdGhlCisgICAgICAgICAgICAgICAgZm9ybWF0dGVyIGNsYXNzIHNwZWNpZmljYXRpb24uPC9kZD4KKyAgICAgICAgICAgIDxkZD48Y29kZT48YSBocmVmPSIuLi8uLi9qYXZhL2xhbmcvTnVsbFBvaW50ZXJFeGNlcHRpb24uaHRtbCIgdGl0bGU9ImNsYXNzIGluIGphdmEubGFuZyI+TnVsbFBvaW50ZXJFeGNlcHRpb248L2E+PC9jb2RlPiAtIElmIHRoZSA8dHQ+Zm9ybWF0PC90dD4gaXMgPHR0Pm51bGw8L3R0PjwvZGQ+PGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPlNpbmNlOjwvc3Bhbj48L2R0PgorICAgICAgICAgICAgPGRkPjEuNTwvZGQ+CisgICAgICAgICAgICA8ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+U2VlIEFsc286PC9zcGFuPjwvZHQ+PGRkPjxhIGhyZWY9Ii4uLy4uL2phdmEvdXRpbC9Gb3JtYXR0ZXIuaHRtbCIgdGl0bGU9ImNsYXNzIGluIGphdmEudXRpbCI+PGNvZGU+Rm9ybWF0dGVyPC9jb2RlPjwvYT48L2RkPjwvZGw+CisgICAgPC9saT4KKzwvdWw+Cis8YSBuYW1lPSJmb3JtYXQoamF2YS51dGlsLkxvY2FsZSwgamF2YS5sYW5nLlN0cmluZywgamF2YS5sYW5nLk9iamVjdC4uLikiPgorICAgIDwhLS0gICAtLT4KKzwvYT4KKzx1bCBjbGFzcz0iYmxvY2tMaXN0Ij4KKyAgICA8bGkgY2xhc3M9ImJsb2NrTGlzdCI+CisgICAgICAgIDxoND5mb3JtYXQ8L2g0PgorPHByZT5wdWJsaWMgc3RhdGljJm5ic3A7PGEgaHJlZj0iLi4vLi4vamF2YS9sYW5nL1N0cmluZy5odG1sIiB0aXRsZT0iY2xhc3MgaW4gamF2YS5sYW5nIj5TdHJpbmc8L2E+Jm5ic3A7Zm9ybWF0KDxhIGhyZWY9Ii4uLy4uL2phdmEvdXRpbC9Mb2NhbGUuaHRtbCIgdGl0bGU9ImNsYXNzIGluIGphdmEudXRpbCI+TG9jYWxlPC9hPiZuYnNwO2wsCisgICAgICAgICAgICA8YSBocmVmPSIuLi8uLi9qYXZhL2xhbmcvU3RyaW5nLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBqYXZhLmxhbmciPlN0cmluZzwvYT4mbmJzcDtmb3JtYXQsCisgICAgICAgICAgICA8YSBocmVmPSIuLi8uLi9qYXZhL2xhbmcvT2JqZWN0Lmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBqYXZhLmxhbmciPk9iamVjdDwvYT4uLi4mbmJzcDthcmdzKTwvcHJlPgorICAgICAgICA8ZGl2IGNsYXNzPSJibG9jayI+UmV0dXJucyBhIGZvcm1hdHRlZCBzdHJpbmcgdXNpbmcgdGhlIHNwZWNpZmllZCBsb2NhbGUsIGZvcm1hdCBzdHJpbmcsCisgICAgICAgICAgICBhbmQgYXJndW1lbnRzLjwvZGl2PgorICAgICAgICA8ZGw+PGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPlBhcmFtZXRlcnM6PC9zcGFuPjwvZHQ+PGRkPjxjb2RlPmw8L2NvZGU+IC0gVGhlIDxhIGhyZWY9Ii4uLy4uL2phdmEvdXRpbC9Mb2NhbGUuaHRtbCIgdGl0bGU9ImNsYXNzIGluIGphdmEudXRpbCI+bG9jYWxlPC9hPiB0byBhcHBseSBkdXJpbmcKKyAgICAgICAgICAgIGZvcm1hdHRpbmcuICBJZiA8dHQ+bDwvdHQ+IGlzIDx0dD5udWxsPC90dD4gdGhlbiBubyBsb2NhbGl6YXRpb24KKyAgICAgICAgICAgIGlzIGFwcGxpZWQuPC9kZD48ZGQ+PGNvZGU+Zm9ybWF0PC9jb2RlPiAtIEEgPGEgaHJlZj0iLi4vdXRpbC9Gb3JtYXR0ZXIuaHRtbCNzeW50YXgiPmZvcm1hdCBzdHJpbmc8L2E+PC9kZD48ZGQ+PGNvZGU+YXJnczwvY29kZT4gLSBBcmd1bWVudHMgcmVmZXJlbmNlZCBieSB0aGUgZm9ybWF0IHNwZWNpZmllcnMgaW4gdGhlIGZvcm1hdAorICAgICAgICAgICAgc3RyaW5nLiAgSWYgdGhlcmUgYXJlIG1vcmUgYXJndW1lbnRzIHRoYW4gZm9ybWF0IHNwZWNpZmllcnMsIHRoZQorICAgICAgICAgICAgZXh0cmEgYXJndW1lbnRzIGFyZSBpZ25vcmVkLiAgVGhlIG51bWJlciBvZiBhcmd1bWVudHMgaXMKKyAgICAgICAgICAgIHZhcmlhYmxlIGFuZCBtYXkgYmUgemVyby4gIFRoZSBtYXhpbXVtIG51bWJlciBvZiBhcmd1bWVudHMgaXMKKyAgICAgICAgICAgIGxpbWl0ZWQgYnkgdGhlIG1heGltdW0gZGltZW5zaW9uIG9mIGEgSmF2YSBhcnJheSBhcyBkZWZpbmVkIGJ5CisgICAgICAgICAgICA8Y2l0ZT5UaGUgSmF2YSZ0cmFkZTsgVmlydHVhbCBNYWNoaW5lIFNwZWNpZmljYXRpb248L2NpdGU+LgorICAgICAgICAgICAgVGhlIGJlaGF2aW91ciBvbiBhCisgICAgICAgICAgICA8dHQ+bnVsbDwvdHQ+IGFyZ3VtZW50IGRlcGVuZHMgb24gdGhlIDxhCisgICAgICAgICAgICAgICAgICAgIGhyZWY9Ii4uL3V0aWwvRm9ybWF0dGVyLmh0bWwjc3ludGF4Ij5jb252ZXJzaW9uPC9hPi48L2RkPgorICAgICAgICAgICAgPGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPlJldHVybnM6PC9zcGFuPjwvZHQ+PGRkPkEgZm9ybWF0dGVkIHN0cmluZzwvZGQ+CisgICAgICAgICAgICA8ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+VGhyb3dzOjwvc3Bhbj48L2R0PgorICAgICAgICAgICAgPGRkPjxjb2RlPklsbGVnYWxGb3JtYXRFeGNlcHRpb248L2NvZGU+IC0gSWYgYSBmb3JtYXQgc3RyaW5nIGNvbnRhaW5zIGFuIGlsbGVnYWwgc3ludGF4LCBhIGZvcm1hdAorICAgICAgICAgICAgICAgIHNwZWNpZmllciB0aGF0IGlzIGluY29tcGF0aWJsZSB3aXRoIHRoZSBnaXZlbiBhcmd1bWVudHMsCisgICAgICAgICAgICAgICAgaW5zdWZmaWNpZW50IGFyZ3VtZW50cyBnaXZlbiB0aGUgZm9ybWF0IHN0cmluZywgb3Igb3RoZXIKKyAgICAgICAgICAgICAgICBpbGxlZ2FsIGNvbmRpdGlvbnMuICBGb3Igc3BlY2lmaWNhdGlvbiBvZiBhbGwgcG9zc2libGUKKyAgICAgICAgICAgICAgICBmb3JtYXR0aW5nIGVycm9ycywgc2VlIHRoZSA8YQorICAgICAgICAgICAgICAgICAgICAgICAgaHJlZj0iLi4vdXRpbC9Gb3JtYXR0ZXIuaHRtbCNkZXRhaWwiPkRldGFpbHM8L2E+IHNlY3Rpb24gb2YgdGhlCisgICAgICAgICAgICAgICAgZm9ybWF0dGVyIGNsYXNzIHNwZWNpZmljYXRpb248L2RkPgorICAgICAgICAgICAgPGRkPjxjb2RlPjxhIGhyZWY9Ii4uLy4uL2phdmEvbGFuZy9OdWxsUG9pbnRlckV4Y2VwdGlvbi5odG1sIiB0aXRsZT0iY2xhc3MgaW4gamF2YS5sYW5nIj5OdWxsUG9pbnRlckV4Y2VwdGlvbjwvYT48L2NvZGU+IC0gSWYgdGhlIDx0dD5mb3JtYXQ8L3R0PiBpcyA8dHQ+bnVsbDwvdHQ+PC9kZD48ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+U2luY2U6PC9zcGFuPjwvZHQ+CisgICAgICAgICAgICA8ZGQ+MS41PC9kZD4KKyAgICAgICAgICAgIDxkdD48c3BhbiBjbGFzcz0ic3Ryb25nIj5TZWUgQWxzbzo8L3NwYW4+PC9kdD48ZGQ+PGEgaHJlZj0iLi4vLi4vamF2YS91dGlsL0Zvcm1hdHRlci5odG1sIiB0aXRsZT0iY2xhc3MgaW4gamF2YS51dGlsIj48Y29kZT5Gb3JtYXR0ZXI8L2NvZGU+PC9hPjwvZGQ+PC9kbD4KKyAgICA8L2xpPgorPC91bD4KKzxhIG5hbWU9InZhbHVlT2YoamF2YS5sYW5nLk9iamVjdCkiPgorICAgIDwhLS0gICAtLT4KKzwvYT4KKzx1bCBjbGFzcz0iYmxvY2tMaXN0Ij4KKyAgICA8bGkgY2xhc3M9ImJsb2NrTGlzdCI+CisgICAgICAgIDxoND52YWx1ZU9mPC9oND4KKyAgICAgICAgPHByZT5wdWJsaWMgc3RhdGljJm5ic3A7PGEgaHJlZj0iLi4vLi4vamF2YS9sYW5nL1N0cmluZy5odG1sIiB0aXRsZT0iY2xhc3MgaW4gamF2YS5sYW5nIj5TdHJpbmc8L2E+Jm5ic3A7dmFsdWVPZig8YSBocmVmPSIuLi8uLi9qYXZhL2xhbmcvT2JqZWN0Lmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBqYXZhLmxhbmciPk9iamVjdDwvYT4mbmJzcDtvYmopPC9wcmU+CisgICAgICAgIDxkaXYgY2xhc3M9ImJsb2NrIj5SZXR1cm5zIHRoZSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhlIDxjb2RlPk9iamVjdDwvY29kZT4gYXJndW1lbnQuPC9kaXY+CisgICAgICAgIDxkbD48ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+UGFyYW1ldGVyczo8L3NwYW4+PC9kdD48ZGQ+PGNvZGU+b2JqPC9jb2RlPiAtIGFuIDxjb2RlPk9iamVjdDwvY29kZT4uPC9kZD4KKyAgICAgICAgICAgIDxkdD48c3BhbiBjbGFzcz0ic3Ryb25nIj5SZXR1cm5zOjwvc3Bhbj48L2R0PjxkZD5pZiB0aGUgYXJndW1lbnQgaXMgPGNvZGU+bnVsbDwvY29kZT4sIHRoZW4gYSBzdHJpbmcgZXF1YWwgdG8KKyAgICAgICAgICAgICAgICA8Y29kZT4ibnVsbCI8L2NvZGU+OyBvdGhlcndpc2UsIHRoZSB2YWx1ZSBvZgorICAgICAgICAgICAgICAgIDxjb2RlPm9iai50b1N0cmluZygpPC9jb2RlPiBpcyByZXR1cm5lZC48L2RkPjxkdD48c3BhbiBjbGFzcz0ic3Ryb25nIj5TZWUgQWxzbzo8L3NwYW4+PC9kdD48ZGQ+PGEgaHJlZj0iLi4vLi4vamF2YS9sYW5nL09iamVjdC5odG1sI3RvU3RyaW5nKCkiPjxjb2RlPk9iamVjdC50b1N0cmluZygpPC9jb2RlPjwvYT48L2RkPjwvZGw+CisgICAgPC9saT4KKzwvdWw+Cis8YSBuYW1lPSJ2YWx1ZU9mKGNoYXJbXSkiPgorICAgIDwhLS0gICAtLT4KKzwvYT4KKzx1bCBjbGFzcz0iYmxvY2tMaXN0Ij4KKyAgICA8bGkgY2xhc3M9ImJsb2NrTGlzdCI+CisgICAgICAgIDxoND52YWx1ZU9mPC9oND4KKyAgICAgICAgPHByZT5wdWJsaWMgc3RhdGljJm5ic3A7PGEgaHJlZj0iLi4vLi4vamF2YS9sYW5nL1N0cmluZy5odG1sIiB0aXRsZT0iY2xhc3MgaW4gamF2YS5sYW5nIj5TdHJpbmc8L2E+Jm5ic3A7dmFsdWVPZihjaGFyW10mbmJzcDtkYXRhKTwvcHJlPgorICAgICAgICA8ZGl2IGNsYXNzPSJibG9jayI+UmV0dXJucyB0aGUgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSA8Y29kZT5jaGFyPC9jb2RlPiBhcnJheQorICAgICAgICAgICAgYXJndW1lbnQuIFRoZSBjb250ZW50cyBvZiB0aGUgY2hhcmFjdGVyIGFycmF5IGFyZSBjb3BpZWQ7IHN1YnNlcXVlbnQKKyAgICAgICAgICAgIG1vZGlmaWNhdGlvbiBvZiB0aGUgY2hhcmFjdGVyIGFycmF5IGRvZXMgbm90IGFmZmVjdCB0aGUgbmV3bHkKKyAgICAgICAgICAgIGNyZWF0ZWQgc3RyaW5nLjwvZGl2PgorICAgICAgICA8ZGw+PGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPlBhcmFtZXRlcnM6PC9zcGFuPjwvZHQ+PGRkPjxjb2RlPmRhdGE8L2NvZGU+IC0gYSA8Y29kZT5jaGFyPC9jb2RlPiBhcnJheS48L2RkPgorICAgICAgICAgICAgPGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPlJldHVybnM6PC9zcGFuPjwvZHQ+PGRkPmEgbmV3bHkgYWxsb2NhdGVkIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIHNhbWUgc2VxdWVuY2Ugb2YKKyAgICAgICAgICAgICAgICBjaGFyYWN0ZXJzIGNvbnRhaW5lZCBpbiB0aGUgY2hhcmFjdGVyIGFycmF5IGFyZ3VtZW50LjwvZGQ+PC9kbD4KKyAgICA8L2xpPgorPC91bD4KKzxhIG5hbWU9InZhbHVlT2YoY2hhcltdLCBpbnQsIGludCkiPgorICAgIDwhLS0gICAtLT4KKzwvYT4KKzx1bCBjbGFzcz0iYmxvY2tMaXN0Ij4KKyAgICA8bGkgY2xhc3M9ImJsb2NrTGlzdCI+CisgICAgICAgIDxoND52YWx1ZU9mPC9oND4KKzxwcmU+cHVibGljIHN0YXRpYyZuYnNwOzxhIGhyZWY9Ii4uLy4uL2phdmEvbGFuZy9TdHJpbmcuaHRtbCIgdGl0bGU9ImNsYXNzIGluIGphdmEubGFuZyI+U3RyaW5nPC9hPiZuYnNwO3ZhbHVlT2YoY2hhcltdJm5ic3A7ZGF0YSwKKyAgICAgICAgICAgICBpbnQmbmJzcDtvZmZzZXQsCisgICAgICAgICAgICAgaW50Jm5ic3A7Y291bnQpPC9wcmU+CisgICAgICAgIDxkaXYgY2xhc3M9ImJsb2NrIj5SZXR1cm5zIHRoZSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYSBzcGVjaWZpYyBzdWJhcnJheSBvZiB0aGUKKyAgICAgICAgICAgIDxjb2RlPmNoYXI8L2NvZGU+IGFycmF5IGFyZ3VtZW50LgorICAgICAgICAgICAgPHA+CisgICAgICAgICAgICAgICAgVGhlIDxjb2RlPm9mZnNldDwvY29kZT4gYXJndW1lbnQgaXMgdGhlIGluZGV4IG9mIHRoZSBmaXJzdAorICAgICAgICAgICAgICAgIGNoYXJhY3RlciBvZiB0aGUgc3ViYXJyYXkuIFRoZSA8Y29kZT5jb3VudDwvY29kZT4gYXJndW1lbnQKKyAgICAgICAgICAgICAgICBzcGVjaWZpZXMgdGhlIGxlbmd0aCBvZiB0aGUgc3ViYXJyYXkuIFRoZSBjb250ZW50cyBvZiB0aGUgc3ViYXJyYXkKKyAgICAgICAgICAgICAgICBhcmUgY29waWVkOyBzdWJzZXF1ZW50IG1vZGlmaWNhdGlvbiBvZiB0aGUgY2hhcmFjdGVyIGFycmF5IGRvZXMgbm90CisgICAgICAgICAgICAgICAgYWZmZWN0IHRoZSBuZXdseSBjcmVhdGVkIHN0cmluZy48L2Rpdj4KKyAgICAgICAgPGRsPjxkdD48c3BhbiBjbGFzcz0ic3Ryb25nIj5QYXJhbWV0ZXJzOjwvc3Bhbj48L2R0PjxkZD48Y29kZT5kYXRhPC9jb2RlPiAtIHRoZSBjaGFyYWN0ZXIgYXJyYXkuPC9kZD48ZGQ+PGNvZGU+b2Zmc2V0PC9jb2RlPiAtIHRoZSBpbml0aWFsIG9mZnNldCBpbnRvIHRoZSB2YWx1ZSBvZiB0aGUKKyAgICAgICAgICAgIDxjb2RlPlN0cmluZzwvY29kZT4uPC9kZD48ZGQ+PGNvZGU+Y291bnQ8L2NvZGU+IC0gdGhlIGxlbmd0aCBvZiB0aGUgdmFsdWUgb2YgdGhlIDxjb2RlPlN0cmluZzwvY29kZT4uPC9kZD4KKyAgICAgICAgICAgIDxkdD48c3BhbiBjbGFzcz0ic3Ryb25nIj5SZXR1cm5zOjwvc3Bhbj48L2R0PjxkZD5hIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIHNlcXVlbmNlIG9mIGNoYXJhY3RlcnMgY29udGFpbmVkCisgICAgICAgICAgICAgICAgaW4gdGhlIHN1YmFycmF5IG9mIHRoZSBjaGFyYWN0ZXIgYXJyYXkgYXJndW1lbnQuPC9kZD4KKyAgICAgICAgICAgIDxkdD48c3BhbiBjbGFzcz0ic3Ryb25nIj5UaHJvd3M6PC9zcGFuPjwvZHQ+CisgICAgICAgICAgICA8ZGQ+PGNvZGU+PGEgaHJlZj0iLi4vLi4vamF2YS9sYW5nL0luZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb24uaHRtbCIgdGl0bGU9ImNsYXNzIGluIGphdmEubGFuZyI+SW5kZXhPdXRPZkJvdW5kc0V4Y2VwdGlvbjwvYT48L2NvZGU+IC0gaWYgPGNvZGU+b2Zmc2V0PC9jb2RlPiBpcworICAgICAgICAgICAgICAgIG5lZ2F0aXZlLCBvciA8Y29kZT5jb3VudDwvY29kZT4gaXMgbmVnYXRpdmUsIG9yCisgICAgICAgICAgICAgICAgPGNvZGU+b2Zmc2V0K2NvdW50PC9jb2RlPiBpcyBsYXJnZXIgdGhhbgorICAgICAgICAgICAgICAgIDxjb2RlPmRhdGEubGVuZ3RoPC9jb2RlPi48L2RkPjwvZGw+CisgICAgPC9saT4KKzwvdWw+Cis8YSBuYW1lPSJjb3B5VmFsdWVPZihjaGFyW10sIGludCwgaW50KSI+CisgICAgPCEtLSAgIC0tPgorPC9hPgorPHVsIGNsYXNzPSJibG9ja0xpc3QiPgorICAgIDxsaSBjbGFzcz0iYmxvY2tMaXN0Ij4KKyAgICAgICAgPGg0PmNvcHlWYWx1ZU9mPC9oND4KKzxwcmU+cHVibGljIHN0YXRpYyZuYnNwOzxhIGhyZWY9Ii4uLy4uL2phdmEvbGFuZy9TdHJpbmcuaHRtbCIgdGl0bGU9ImNsYXNzIGluIGphdmEubGFuZyI+U3RyaW5nPC9hPiZuYnNwO2NvcHlWYWx1ZU9mKGNoYXJbXSZuYnNwO2RhdGEsCisgICAgICAgICAgICAgICAgIGludCZuYnNwO29mZnNldCwKKyAgICAgICAgICAgICAgICAgaW50Jm5ic3A7Y291bnQpPC9wcmU+CisgICAgICAgIDxkaXYgY2xhc3M9ImJsb2NrIj5SZXR1cm5zIGEgU3RyaW5nIHRoYXQgcmVwcmVzZW50cyB0aGUgY2hhcmFjdGVyIHNlcXVlbmNlIGluIHRoZQorICAgICAgICAgICAgYXJyYXkgc3BlY2lmaWVkLjwvZGl2PgorICAgICAgICA8ZGw+PGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPlBhcmFtZXRlcnM6PC9zcGFuPjwvZHQ+PGRkPjxjb2RlPmRhdGE8L2NvZGU+IC0gdGhlIGNoYXJhY3RlciBhcnJheS48L2RkPjxkZD48Y29kZT5vZmZzZXQ8L2NvZGU+IC0gaW5pdGlhbCBvZmZzZXQgb2YgdGhlIHN1YmFycmF5LjwvZGQ+PGRkPjxjb2RlPmNvdW50PC9jb2RlPiAtIGxlbmd0aCBvZiB0aGUgc3ViYXJyYXkuPC9kZD4KKyAgICAgICAgICAgIDxkdD48c3BhbiBjbGFzcz0ic3Ryb25nIj5SZXR1cm5zOjwvc3Bhbj48L2R0PjxkZD5hIDxjb2RlPlN0cmluZzwvY29kZT4gdGhhdCBjb250YWlucyB0aGUgY2hhcmFjdGVycyBvZiB0aGUKKyAgICAgICAgICAgICAgICBzcGVjaWZpZWQgc3ViYXJyYXkgb2YgdGhlIGNoYXJhY3RlciBhcnJheS48L2RkPjwvZGw+CisgICAgPC9saT4KKzwvdWw+Cis8YSBuYW1lPSJjb3B5VmFsdWVPZihjaGFyW10pIj4KKyAgICA8IS0tICAgLS0+Cis8L2E+Cis8dWwgY2xhc3M9ImJsb2NrTGlzdCI+CisgICAgPGxpIGNsYXNzPSJibG9ja0xpc3QiPgorICAgICAgICA8aDQ+Y29weVZhbHVlT2Y8L2g0PgorICAgICAgICA8cHJlPnB1YmxpYyBzdGF0aWMmbmJzcDs8YSBocmVmPSIuLi8uLi9qYXZhL2xhbmcvU3RyaW5nLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBqYXZhLmxhbmciPlN0cmluZzwvYT4mbmJzcDtjb3B5VmFsdWVPZihjaGFyW10mbmJzcDtkYXRhKTwvcHJlPgorICAgICAgICA8ZGl2IGNsYXNzPSJibG9jayI+UmV0dXJucyBhIFN0cmluZyB0aGF0IHJlcHJlc2VudHMgdGhlIGNoYXJhY3RlciBzZXF1ZW5jZSBpbiB0aGUKKyAgICAgICAgICAgIGFycmF5IHNwZWNpZmllZC48L2Rpdj4KKyAgICAgICAgPGRsPjxkdD48c3BhbiBjbGFzcz0ic3Ryb25nIj5QYXJhbWV0ZXJzOjwvc3Bhbj48L2R0PjxkZD48Y29kZT5kYXRhPC9jb2RlPiAtIHRoZSBjaGFyYWN0ZXIgYXJyYXkuPC9kZD4KKyAgICAgICAgICAgIDxkdD48c3BhbiBjbGFzcz0ic3Ryb25nIj5SZXR1cm5zOjwvc3Bhbj48L2R0PjxkZD5hIDxjb2RlPlN0cmluZzwvY29kZT4gdGhhdCBjb250YWlucyB0aGUgY2hhcmFjdGVycyBvZiB0aGUKKyAgICAgICAgICAgICAgICBjaGFyYWN0ZXIgYXJyYXkuPC9kZD48L2RsPgorICAgIDwvbGk+Cis8L3VsPgorPGEgbmFtZT0idmFsdWVPZihib29sZWFuKSI+CisgICAgPCEtLSAgIC0tPgorPC9hPgorPHVsIGNsYXNzPSJibG9ja0xpc3QiPgorICAgIDxsaSBjbGFzcz0iYmxvY2tMaXN0Ij4KKyAgICAgICAgPGg0PnZhbHVlT2Y8L2g0PgorICAgICAgICA8cHJlPnB1YmxpYyBzdGF0aWMmbmJzcDs8YSBocmVmPSIuLi8uLi9qYXZhL2xhbmcvU3RyaW5nLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBqYXZhLmxhbmciPlN0cmluZzwvYT4mbmJzcDt2YWx1ZU9mKGJvb2xlYW4mbmJzcDtiKTwvcHJlPgorICAgICAgICA8ZGl2IGNsYXNzPSJibG9jayI+UmV0dXJucyB0aGUgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSA8Y29kZT5ib29sZWFuPC9jb2RlPiBhcmd1bWVudC48L2Rpdj4KKyAgICAgICAgPGRsPjxkdD48c3BhbiBjbGFzcz0ic3Ryb25nIj5QYXJhbWV0ZXJzOjwvc3Bhbj48L2R0PjxkZD48Y29kZT5iPC9jb2RlPiAtIGEgPGNvZGU+Ym9vbGVhbjwvY29kZT4uPC9kZD4KKyAgICAgICAgICAgIDxkdD48c3BhbiBjbGFzcz0ic3Ryb25nIj5SZXR1cm5zOjwvc3Bhbj48L2R0PjxkZD5pZiB0aGUgYXJndW1lbnQgaXMgPGNvZGU+dHJ1ZTwvY29kZT4sIGEgc3RyaW5nIGVxdWFsIHRvCisgICAgICAgICAgICAgICAgPGNvZGU+InRydWUiPC9jb2RlPiBpcyByZXR1cm5lZDsgb3RoZXJ3aXNlLCBhIHN0cmluZyBlcXVhbCB0bworICAgICAgICAgICAgICAgIDxjb2RlPiJmYWxzZSI8L2NvZGU+IGlzIHJldHVybmVkLjwvZGQ+PC9kbD4KKyAgICA8L2xpPgorPC91bD4KKzxhIG5hbWU9InZhbHVlT2YoY2hhcikiPgorICAgIDwhLS0gICAtLT4KKzwvYT4KKzx1bCBjbGFzcz0iYmxvY2tMaXN0Ij4KKyAgICA8bGkgY2xhc3M9ImJsb2NrTGlzdCI+CisgICAgICAgIDxoND52YWx1ZU9mPC9oND4KKyAgICAgICAgPHByZT5wdWJsaWMgc3RhdGljJm5ic3A7PGEgaHJlZj0iLi4vLi4vamF2YS9sYW5nL1N0cmluZy5odG1sIiB0aXRsZT0iY2xhc3MgaW4gamF2YS5sYW5nIj5TdHJpbmc8L2E+Jm5ic3A7dmFsdWVPZihjaGFyJm5ic3A7Yyk8L3ByZT4KKyAgICAgICAgPGRpdiBjbGFzcz0iYmxvY2siPlJldHVybnMgdGhlIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGUgPGNvZGU+Y2hhcjwvY29kZT4KKyAgICAgICAgICAgIGFyZ3VtZW50LjwvZGl2PgorICAgICAgICA8ZGw+PGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPlBhcmFtZXRlcnM6PC9zcGFuPjwvZHQ+PGRkPjxjb2RlPmM8L2NvZGU+IC0gYSA8Y29kZT5jaGFyPC9jb2RlPi48L2RkPgorICAgICAgICAgICAgPGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPlJldHVybnM6PC9zcGFuPjwvZHQ+PGRkPmEgc3RyaW5nIG9mIGxlbmd0aCA8Y29kZT4xPC9jb2RlPiBjb250YWluaW5nCisgICAgICAgICAgICAgICAgYXMgaXRzIHNpbmdsZSBjaGFyYWN0ZXIgdGhlIGFyZ3VtZW50IDxjb2RlPmM8L2NvZGU+LjwvZGQ+PC9kbD4KKyAgICA8L2xpPgorPC91bD4KKzxhIG5hbWU9InZhbHVlT2YoaW50KSI+CisgICAgPCEtLSAgIC0tPgorPC9hPgorPHVsIGNsYXNzPSJibG9ja0xpc3QiPgorICAgIDxsaSBjbGFzcz0iYmxvY2tMaXN0Ij4KKyAgICAgICAgPGg0PnZhbHVlT2Y8L2g0PgorICAgICAgICA8cHJlPnB1YmxpYyBzdGF0aWMmbmJzcDs8YSBocmVmPSIuLi8uLi9qYXZhL2xhbmcvU3RyaW5nLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBqYXZhLmxhbmciPlN0cmluZzwvYT4mbmJzcDt2YWx1ZU9mKGludCZuYnNwO2kpPC9wcmU+CisgICAgICAgIDxkaXYgY2xhc3M9ImJsb2NrIj5SZXR1cm5zIHRoZSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhlIDxjb2RlPmludDwvY29kZT4gYXJndW1lbnQuCisgICAgICAgICAgICA8cD4KKyAgICAgICAgICAgICAgICBUaGUgcmVwcmVzZW50YXRpb24gaXMgZXhhY3RseSB0aGUgb25lIHJldHVybmVkIGJ5IHRoZQorICAgICAgICAgICAgICAgIDxjb2RlPkludGVnZXIudG9TdHJpbmc8L2NvZGU+IG1ldGhvZCBvZiBvbmUgYXJndW1lbnQuPC9kaXY+CisgICAgICAgIDxkbD48ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+UGFyYW1ldGVyczo8L3NwYW4+PC9kdD48ZGQ+PGNvZGU+aTwvY29kZT4gLSBhbiA8Y29kZT5pbnQ8L2NvZGU+LjwvZGQ+CisgICAgICAgICAgICA8ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+UmV0dXJuczo8L3NwYW4+PC9kdD48ZGQ+YSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhlIDxjb2RlPmludDwvY29kZT4gYXJndW1lbnQuPC9kZD48ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+U2VlIEFsc286PC9zcGFuPjwvZHQ+PGRkPjxhIGhyZWY9Ii4uLy4uL2phdmEvbGFuZy9JbnRlZ2VyLmh0bWwjdG9TdHJpbmcoaW50LCBpbnQpIj48Y29kZT5JbnRlZ2VyLnRvU3RyaW5nKGludCwgaW50KTwvY29kZT48L2E+PC9kZD48L2RsPgorICAgIDwvbGk+Cis8L3VsPgorPGEgbmFtZT0idmFsdWVPZihsb25nKSI+CisgICAgPCEtLSAgIC0tPgorPC9hPgorPHVsIGNsYXNzPSJibG9ja0xpc3QiPgorICAgIDxsaSBjbGFzcz0iYmxvY2tMaXN0Ij4KKyAgICAgICAgPGg0PnZhbHVlT2Y8L2g0PgorICAgICAgICA8cHJlPnB1YmxpYyBzdGF0aWMmbmJzcDs8YSBocmVmPSIuLi8uLi9qYXZhL2xhbmcvU3RyaW5nLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBqYXZhLmxhbmciPlN0cmluZzwvYT4mbmJzcDt2YWx1ZU9mKGxvbmcmbmJzcDtsKTwvcHJlPgorICAgICAgICA8ZGl2IGNsYXNzPSJibG9jayI+UmV0dXJucyB0aGUgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSA8Y29kZT5sb25nPC9jb2RlPiBhcmd1bWVudC4KKyAgICAgICAgICAgIDxwPgorICAgICAgICAgICAgICAgIFRoZSByZXByZXNlbnRhdGlvbiBpcyBleGFjdGx5IHRoZSBvbmUgcmV0dXJuZWQgYnkgdGhlCisgICAgICAgICAgICAgICAgPGNvZGU+TG9uZy50b1N0cmluZzwvY29kZT4gbWV0aG9kIG9mIG9uZSBhcmd1bWVudC48L2Rpdj4KKyAgICAgICAgPGRsPjxkdD48c3BhbiBjbGFzcz0ic3Ryb25nIj5QYXJhbWV0ZXJzOjwvc3Bhbj48L2R0PjxkZD48Y29kZT5sPC9jb2RlPiAtIGEgPGNvZGU+bG9uZzwvY29kZT4uPC9kZD4KKyAgICAgICAgICAgIDxkdD48c3BhbiBjbGFzcz0ic3Ryb25nIj5SZXR1cm5zOjwvc3Bhbj48L2R0PjxkZD5hIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGUgPGNvZGU+bG9uZzwvY29kZT4gYXJndW1lbnQuPC9kZD48ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+U2VlIEFsc286PC9zcGFuPjwvZHQ+PGRkPjxhIGhyZWY9Ii4uLy4uL2phdmEvbGFuZy9Mb25nLmh0bWwjdG9TdHJpbmcobG9uZykiPjxjb2RlPkxvbmcudG9TdHJpbmcobG9uZyk8L2NvZGU+PC9hPjwvZGQ+PC9kbD4KKyAgICA8L2xpPgorPC91bD4KKzxhIG5hbWU9InZhbHVlT2YoZmxvYXQpIj4KKyAgICA8IS0tICAgLS0+Cis8L2E+Cis8dWwgY2xhc3M9ImJsb2NrTGlzdCI+CisgICAgPGxpIGNsYXNzPSJibG9ja0xpc3QiPgorICAgICAgICA8aDQ+dmFsdWVPZjwvaDQ+CisgICAgICAgIDxwcmU+cHVibGljIHN0YXRpYyZuYnNwOzxhIGhyZWY9Ii4uLy4uL2phdmEvbGFuZy9TdHJpbmcuaHRtbCIgdGl0bGU9ImNsYXNzIGluIGphdmEubGFuZyI+U3RyaW5nPC9hPiZuYnNwO3ZhbHVlT2YoZmxvYXQmbmJzcDtmKTwvcHJlPgorICAgICAgICA8ZGl2IGNsYXNzPSJibG9jayI+UmV0dXJucyB0aGUgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSA8Y29kZT5mbG9hdDwvY29kZT4gYXJndW1lbnQuCisgICAgICAgICAgICA8cD4KKyAgICAgICAgICAgICAgICBUaGUgcmVwcmVzZW50YXRpb24gaXMgZXhhY3RseSB0aGUgb25lIHJldHVybmVkIGJ5IHRoZQorICAgICAgICAgICAgICAgIDxjb2RlPkZsb2F0LnRvU3RyaW5nPC9jb2RlPiBtZXRob2Qgb2Ygb25lIGFyZ3VtZW50LjwvZGl2PgorICAgICAgICA8ZGw+PGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPlBhcmFtZXRlcnM6PC9zcGFuPjwvZHQ+PGRkPjxjb2RlPmY8L2NvZGU+IC0gYSA8Y29kZT5mbG9hdDwvY29kZT4uPC9kZD4KKyAgICAgICAgICAgIDxkdD48c3BhbiBjbGFzcz0ic3Ryb25nIj5SZXR1cm5zOjwvc3Bhbj48L2R0PjxkZD5hIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGUgPGNvZGU+ZmxvYXQ8L2NvZGU+IGFyZ3VtZW50LjwvZGQ+PGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPlNlZSBBbHNvOjwvc3Bhbj48L2R0PjxkZD48YSBocmVmPSIuLi8uLi9qYXZhL2xhbmcvRmxvYXQuaHRtbCN0b1N0cmluZyhmbG9hdCkiPjxjb2RlPkZsb2F0LnRvU3RyaW5nKGZsb2F0KTwvY29kZT48L2E+PC9kZD48L2RsPgorICAgIDwvbGk+Cis8L3VsPgorPGEgbmFtZT0idmFsdWVPZihkb3VibGUpIj4KKyAgICA8IS0tICAgLS0+Cis8L2E+Cis8dWwgY2xhc3M9ImJsb2NrTGlzdCI+CisgICAgPGxpIGNsYXNzPSJibG9ja0xpc3QiPgorICAgICAgICA8aDQ+dmFsdWVPZjwvaDQ+CisgICAgICAgIDxwcmU+cHVibGljIHN0YXRpYyZuYnNwOzxhIGhyZWY9Ii4uLy4uL2phdmEvbGFuZy9TdHJpbmcuaHRtbCIgdGl0bGU9ImNsYXNzIGluIGphdmEubGFuZyI+U3RyaW5nPC9hPiZuYnNwO3ZhbHVlT2YoZG91YmxlJm5ic3A7ZCk8L3ByZT4KKyAgICAgICAgPGRpdiBjbGFzcz0iYmxvY2siPlJldHVybnMgdGhlIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGUgPGNvZGU+ZG91YmxlPC9jb2RlPiBhcmd1bWVudC4KKyAgICAgICAgICAgIDxwPgorICAgICAgICAgICAgICAgIFRoZSByZXByZXNlbnRhdGlvbiBpcyBleGFjdGx5IHRoZSBvbmUgcmV0dXJuZWQgYnkgdGhlCisgICAgICAgICAgICAgICAgPGNvZGU+RG91YmxlLnRvU3RyaW5nPC9jb2RlPiBtZXRob2Qgb2Ygb25lIGFyZ3VtZW50LjwvZGl2PgorICAgICAgICA8ZGw+PGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPlBhcmFtZXRlcnM6PC9zcGFuPjwvZHQ+PGRkPjxjb2RlPmQ8L2NvZGU+IC0gYSA8Y29kZT5kb3VibGU8L2NvZGU+LjwvZGQ+CisgICAgICAgICAgICA8ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+UmV0dXJuczo8L3NwYW4+PC9kdD48ZGQ+YSAgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSA8Y29kZT5kb3VibGU8L2NvZGU+IGFyZ3VtZW50LjwvZGQ+PGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPlNlZSBBbHNvOjwvc3Bhbj48L2R0PjxkZD48YSBocmVmPSIuLi8uLi9qYXZhL2xhbmcvRG91YmxlLmh0bWwjdG9TdHJpbmcoZG91YmxlKSI+PGNvZGU+RG91YmxlLnRvU3RyaW5nKGRvdWJsZSk8L2NvZGU+PC9hPjwvZGQ+PC9kbD4KKyAgICA8L2xpPgorPC91bD4KKzxhIG5hbWU9ImludGVybigpIj4KKyAgICA8IS0tICAgLS0+Cis8L2E+Cis8dWwgY2xhc3M9ImJsb2NrTGlzdExhc3QiPgorICAgIDxsaSBjbGFzcz0iYmxvY2tMaXN0Ij4KKyAgICAgICAgPGg0PmludGVybjwvaDQ+CisgICAgICAgIDxwcmU+cHVibGljJm5ic3A7PGEgaHJlZj0iLi4vLi4vamF2YS9sYW5nL1N0cmluZy5odG1sIiB0aXRsZT0iY2xhc3MgaW4gamF2YS5sYW5nIj5TdHJpbmc8L2E+Jm5ic3A7aW50ZXJuKCk8L3ByZT4KKyAgICAgICAgPGRpdiBjbGFzcz0iYmxvY2siPlJldHVybnMgYSBjYW5vbmljYWwgcmVwcmVzZW50YXRpb24gZm9yIHRoZSBzdHJpbmcgb2JqZWN0LgorICAgICAgICAgICAgPHA+CisgICAgICAgICAgICAgICAgQSBwb29sIG9mIHN0cmluZ3MsIGluaXRpYWxseSBlbXB0eSwgaXMgbWFpbnRhaW5lZCBwcml2YXRlbHkgYnkgdGhlCisgICAgICAgICAgICAgICAgY2xhc3MgPGNvZGU+U3RyaW5nPC9jb2RlPi4KKyAgICAgICAgICAgIDxwPgorICAgICAgICAgICAgICAgIFdoZW4gdGhlIGludGVybiBtZXRob2QgaXMgaW52b2tlZCwgaWYgdGhlIHBvb2wgYWxyZWFkeSBjb250YWlucyBhCisgICAgICAgICAgICAgICAgc3RyaW5nIGVxdWFsIHRvIHRoaXMgPGNvZGU+U3RyaW5nPC9jb2RlPiBvYmplY3QgYXMgZGV0ZXJtaW5lZCBieQorICAgICAgICAgICAgICAgIHRoZSA8YSBocmVmPSIuLi8uLi9qYXZhL2xhbmcvU3RyaW5nLmh0bWwjZXF1YWxzKGphdmEubGFuZy5PYmplY3QpIj48Y29kZT5lcXVhbHMoT2JqZWN0KTwvY29kZT48L2E+IG1ldGhvZCwgdGhlbiB0aGUgc3RyaW5nIGZyb20gdGhlIHBvb2wgaXMKKyAgICAgICAgICAgICAgICByZXR1cm5lZC4gT3RoZXJ3aXNlLCB0aGlzIDxjb2RlPlN0cmluZzwvY29kZT4gb2JqZWN0IGlzIGFkZGVkIHRvIHRoZQorICAgICAgICAgICAgICAgIHBvb2wgYW5kIGEgcmVmZXJlbmNlIHRvIHRoaXMgPGNvZGU+U3RyaW5nPC9jb2RlPiBvYmplY3QgaXMgcmV0dXJuZWQuCisgICAgICAgICAgICA8cD4KKyAgICAgICAgICAgICAgICBJdCBmb2xsb3dzIHRoYXQgZm9yIGFueSB0d28gc3RyaW5ncyA8Y29kZT5zPC9jb2RlPiBhbmQgPGNvZGU+dDwvY29kZT4sCisgICAgICAgICAgICAgICAgPGNvZGU+cy5pbnRlcm4oKSZuYnNwOz09Jm5ic3A7dC5pbnRlcm4oKTwvY29kZT4gaXMgPGNvZGU+dHJ1ZTwvY29kZT4KKyAgICAgICAgICAgICAgICBpZiBhbmQgb25seSBpZiA8Y29kZT5zLmVxdWFscyh0KTwvY29kZT4gaXMgPGNvZGU+dHJ1ZTwvY29kZT4uCisgICAgICAgICAgICA8cD4KKyAgICAgICAgICAgICAgICBBbGwgbGl0ZXJhbCBzdHJpbmdzIGFuZCBzdHJpbmctdmFsdWVkIGNvbnN0YW50IGV4cHJlc3Npb25zIGFyZQorICAgICAgICAgICAgICAgIGludGVybmVkLiBTdHJpbmcgbGl0ZXJhbHMgYXJlIGRlZmluZWQgaW4gc2VjdGlvbiAzLjEwLjUgb2YgdGhlCisgICAgICAgICAgICAgICAgPGNpdGU+VGhlIEphdmEmdHJhZGU7IExhbmd1YWdlIFNwZWNpZmljYXRpb248L2NpdGU+LjwvZGl2PgorICAgICAgICA8ZGw+PGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPlJldHVybnM6PC9zcGFuPjwvZHQ+PGRkPmEgc3RyaW5nIHRoYXQgaGFzIHRoZSBzYW1lIGNvbnRlbnRzIGFzIHRoaXMgc3RyaW5nLCBidXQgaXMKKyAgICAgICAgICAgIGd1YXJhbnRlZWQgdG8gYmUgZnJvbSBhIHBvb2wgb2YgdW5pcXVlIHN0cmluZ3MuPC9kZD48L2RsPgorICAgIDwvbGk+Cis8L3VsPgorPC9saT4KKzwvdWw+Cis8L2xpPgorPC91bD4KKzwvZGl2PgorPC9kaXY+Cis8IS0tID09PT09PT09PSBFTkQgT0YgQ0xBU1MgREFUQSA9PT09PT09PT0gLS0+Cis8IS0tID09PT09PT0gU1RBUlQgT0YgQk9UVE9NIE5BVkJBUiA9PT09PT0gLS0+Cis8ZGl2IGNsYXNzPSJib3R0b21OYXYiPjxhIG5hbWU9Im5hdmJhcl9ib3R0b20iPgorICAgIDwhLS0gICAtLT4KKzwvYT48YSBocmVmPSIjc2tpcC1uYXZiYXJfYm90dG9tIiB0aXRsZT0iU2tpcCBuYXZpZ2F0aW9uIGxpbmtzIj48L2E+PGEgbmFtZT0ibmF2YmFyX2JvdHRvbV9maXJzdHJvdyI+CisgICAgPCEtLSAgIC0tPgorPC9hPgorICAgIDx1bCBjbGFzcz0ibmF2TGlzdCIgdGl0bGU9Ik5hdmlnYXRpb24iPgorICAgICAgICA8bGk+PGEgaHJlZj0iLi4vLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sIj5PdmVydmlldzwvYT48L2xpPgorICAgICAgICA8bGk+PGEgaHJlZj0icGFja2FnZS1zdW1tYXJ5Lmh0bWwiPlBhY2thZ2U8L2E+PC9saT4KKyAgICAgICAgPGxpIGNsYXNzPSJuYXZCYXJDZWxsMVJldiI+Q2xhc3M8L2xpPgorICAgICAgICA8bGk+PGEgaHJlZj0iY2xhc3MtdXNlL1N0cmluZy5odG1sIj5Vc2U8L2E+PC9saT4KKyAgICAgICAgPGxpPjxhIGhyZWY9InBhY2thZ2UtdHJlZS5odG1sIj5UcmVlPC9hPjwvbGk+CisgICAgICAgIDxsaT48YSBocmVmPSIuLi8uLi9kZXByZWNhdGVkLWxpc3QuaHRtbCI+RGVwcmVjYXRlZDwvYT48L2xpPgorICAgICAgICA8bGk+PGEgaHJlZj0iLi4vLi4vaW5kZXgtZmlsZXMvaW5kZXgtMS5odG1sIj5JbmRleDwvYT48L2xpPgorICAgICAgICA8bGk+PGEgaHJlZj0iLi4vLi4vaGVscC1kb2MuaHRtbCI+SGVscDwvYT48L2xpPgorICAgIDwvdWw+CisgICAgPGRpdiBjbGFzcz0iYWJvdXRMYW5ndWFnZSI+PGVtPjxzdHJvbmc+SmF2YSZ0cmFkZTsmbmJzcDtQbGF0Zm9ybTxicj5TdGFuZGFyZCZuYnNwO0VkLiZuYnNwOzc8L3N0cm9uZz48L2VtPjwvZGl2PgorPC9kaXY+Cis8ZGl2IGNsYXNzPSJzdWJOYXYiPgorICAgIDx1bCBjbGFzcz0ibmF2TGlzdCI+CisgICAgICAgIDxsaT48YSBocmVmPSIuLi8uLi9qYXZhL2xhbmcvU3RyaWN0TWF0aC5odG1sIiB0aXRsZT0iY2xhc3MgaW4gamF2YS5sYW5nIj48c3BhbiBjbGFzcz0ic3Ryb25nIj5QcmV2IENsYXNzPC9zcGFuPjwvYT48L2xpPgorICAgICAgICA8bGk+PGEgaHJlZj0iLi4vLi4vamF2YS9sYW5nL1N0cmluZ0J1ZmZlci5odG1sIiB0aXRsZT0iY2xhc3MgaW4gamF2YS5sYW5nIj48c3BhbiBjbGFzcz0ic3Ryb25nIj5OZXh0IENsYXNzPC9zcGFuPjwvYT48L2xpPgorICAgIDwvdWw+CisgICAgPHVsIGNsYXNzPSJuYXZMaXN0Ij4KKyAgICAgICAgPGxpPjxhIGhyZWY9Ii4uLy4uL2luZGV4Lmh0bWw/amF2YS9sYW5nL1N0cmluZy5odG1sIiB0YXJnZXQ9Il90b3AiPkZyYW1lczwvYT48L2xpPgorICAgICAgICA8bGk+PGEgaHJlZj0iU3RyaW5nLmh0bWwiIHRhcmdldD0iX3RvcCI+Tm8gRnJhbWVzPC9hPjwvbGk+CisgICAgPC91bD4KKyAgICA8dWwgY2xhc3M9Im5hdkxpc3QiIGlkPSJhbGxjbGFzc2VzX25hdmJhcl9ib3R0b20iPgorICAgICAgICA8bGk+PGEgaHJlZj0iLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPkFsbCBDbGFzc2VzPC9hPjwvbGk+CisgICAgPC91bD4KKyAgICA8ZGl2PgorICAgICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+PCEtLQorICAgICAgICBhbGxDbGFzc2VzTGluayA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJhbGxjbGFzc2VzX25hdmJhcl9ib3R0b20iKTsKKyAgICAgICAgaWYod2luZG93PT10b3ApIHsKKyAgICAgICAgICAgIGFsbENsYXNzZXNMaW5rLnN0eWxlLmRpc3BsYXkgPSAiYmxvY2siOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgYWxsQ2xhc3Nlc0xpbmsuc3R5bGUuZGlzcGxheSA9ICJub25lIjsKKyAgICAgICAgfQorICAgICAgICAvLy0tPgorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2Rpdj4KKyAgICA8ZGl2PgorICAgICAgICA8dWwgY2xhc3M9InN1Yk5hdkxpc3QiPgorICAgICAgICAgICAgPGxpPlN1bW1hcnk6Jm5ic3A7PC9saT4KKyAgICAgICAgICAgIDxsaT5OZXN0ZWQmbmJzcDt8Jm5ic3A7PC9saT4KKyAgICAgICAgICAgIDxsaT48YSBocmVmPSIjZmllbGRfc3VtbWFyeSI+RmllbGQ8L2E+Jm5ic3A7fCZuYnNwOzwvbGk+CisgICAgICAgICAgICA8bGk+PGEgaHJlZj0iI2NvbnN0cnVjdG9yX3N1bW1hcnkiPkNvbnN0cjwvYT4mbmJzcDt8Jm5ic3A7PC9saT4KKyAgICAgICAgICAgIDxsaT48YSBocmVmPSIjbWV0aG9kX3N1bW1hcnkiPk1ldGhvZDwvYT48L2xpPgorICAgICAgICA8L3VsPgorICAgICAgICA8dWwgY2xhc3M9InN1Yk5hdkxpc3QiPgorICAgICAgICAgICAgPGxpPkRldGFpbDombmJzcDs8L2xpPgorICAgICAgICAgICAgPGxpPjxhIGhyZWY9IiNmaWVsZF9kZXRhaWwiPkZpZWxkPC9hPiZuYnNwO3wmbmJzcDs8L2xpPgorICAgICAgICAgICAgPGxpPjxhIGhyZWY9IiNjb25zdHJ1Y3Rvcl9kZXRhaWwiPkNvbnN0cjwvYT4mbmJzcDt8Jm5ic3A7PC9saT4KKyAgICAgICAgICAgIDxsaT48YSBocmVmPSIjbWV0aG9kX2RldGFpbCI+TWV0aG9kPC9hPjwvbGk+CisgICAgICAgIDwvdWw+CisgICAgPC9kaXY+CisgICAgPGEgbmFtZT0ic2tpcC1uYXZiYXJfYm90dG9tIj4KKyAgICAgICAgPCEtLSAgIC0tPgorICAgIDwvYT48L2Rpdj4KKzwhLS0gPT09PT09PT0gRU5EIE9GIEJPVFRPTSBOQVZCQVIgPT09PT09PSAtLT4KKzxwIGNsYXNzPSJsZWdhbENvcHkiPjxzbWFsbD48Zm9udCBzaXplPSItMSI+IDxhIGhyZWY9Imh0dHA6Ly9idWdyZXBvcnQuc3VuLmNvbS9idWdyZXBvcnQvIj5TdWJtaXQgYSBidWcgb3IgZmVhdHVyZTwvYT4gPGJyPkZvciBmdXJ0aGVyIEFQSSByZWZlcmVuY2UgYW5kIGRldmVsb3BlciBkb2N1bWVudGF0aW9uLCBzZWUgPGEgaHJlZj0iaHR0cDovL2Rvd25sb2FkLm9yYWNsZS5jb20vamF2YXNlLzcvZG9jcy9pbmRleC5odG1sIiB0YXJnZXQ9Il9ibGFuayI+SmF2YSBTRSBEb2N1bWVudGF0aW9uPC9hPi4gVGhhdCBkb2N1bWVudGF0aW9uIGNvbnRhaW5zIG1vcmUgZGV0YWlsZWQsIGRldmVsb3Blci10YXJnZXRlZCBkZXNjcmlwdGlvbnMsIHdpdGggY29uY2VwdHVhbCBvdmVydmlld3MsIGRlZmluaXRpb25zIG9mIHRlcm1zLCB3b3JrYXJvdW5kcywgYW5kIHdvcmtpbmcgY29kZSBleGFtcGxlcy48YnI+IDxhIGhyZWY9Ii4uLy4uLy4uL2xlZ2FsL2NweXIuaHRtbCI+Q29weXJpZ2h0PC9hPiAmI3gwMGE5OyAxOTkzLCAyMDExLCBPcmFjbGUgYW5kL29yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gPC9mb250Pjwvc21hbGw+PC9wPgorPCEtLSBTdGFydCBTaXRlQ2F0YWx5c3QgY29kZSAgIC0tPgorPHNjcmlwdCBsYW5ndWFnZT0iSmF2YVNjcmlwdCIgc3JjPSJodHRwOi8vd3d3Lm9yYWNsZS5jb20vb2NvbS9ncm91cHMvc3lzdGVtb2JqZWN0L0Bta3RnX2FkbWluL2RvY3VtZW50cy9zeXN0ZW1vYmplY3Qvc19jb2RlX2Rvd25sb2FkLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgbGFuZ3VhZ2U9IkphdmFTY3JpcHQiIHNyYz0iaHR0cDovL3d3dy5vcmFjbGUuY29tL29jb20vZ3JvdXBzL3N5c3RlbW9iamVjdC9AbWt0Z19hZG1pbi9kb2N1bWVudHMvc3lzdGVtb2JqZWN0L3NfY29kZS5qcyI+PC9zY3JpcHQ+CisKKzwhLS0gKioqKioqKioqKiBETyBOT1QgQUxURVIgQU5ZVEhJTkcgQkVMT1cgVEhJUyBMSU5FICEgKioqKioqKioqKiogLS0+Cis8IS0tICBCZWxvdyBjb2RlIHdpbGwgc2VuZCB0aGUgaW5mbyB0byBPbW5pdHVyZSBzZXJ2ZXIgLS0+Cis8c2NyaXB0IGxhbmd1YWdlPSJqYXZhc2NyaXB0Ij52YXIgc19jb2RlPXMudCgpO2lmKHNfY29kZSlkb2N1bWVudC53cml0ZShzX2NvZGUpPC9zY3JpcHQ+CisKKzwhLS0gRW5kIFNpdGVDYXRhbHlzdCBjb2RlIC0tPgorPG5vc2NyaXB0PgorICAgIDxwPlNjcmlwdGluZyBvbiB0aGlzIHBhZ2UgdHJhY2tzIHdlYiBwYWdlIHRyYWZmaWMsIGJ1dCBkb2VzIG5vdCBjaGFuZ2UgdGhlIGNvbnRlbnQgaW4gYW55IHdheS48L3A+Cis8L25vc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2V4dGVybmFsSmF2YWRvYy9wYWNrYWdlU3VtbWFyeS91dGlsL2V4cGVjdGVkLmh0bWwgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZXh0ZXJuYWxKYXZhZG9jL3BhY2thZ2VTdW1tYXJ5L3V0aWwvZXhwZWN0ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMmMyZGQ3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2V4dGVybmFsSmF2YWRvYy9wYWNrYWdlU3VtbWFyeS91dGlsL2V4cGVjdGVkLmh0bWwKQEAgLTAsMCArMSwzOCBAQAorPEhUTUw+PHN0eWxlIHR5cGU9InRleHQvY3NzIj4gIHVsLmluaGVyaXRhbmNlIHsKKyAgICAgIG1hcmdpbjowOworICAgICAgcGFkZGluZzowOworICB9CisgIHVsLmluaGVyaXRhbmNlIGxpIHsKKyAgICAgICBkaXNwbGF5OmlubGluZTsKKyAgICAgICBsaXN0LXN0eWxlOm5vbmU7CisgIH0KKyAgdWwuaW5oZXJpdGFuY2UgbGkgdWwuaW5oZXJpdGFuY2UgeworICAgIG1hcmdpbi1sZWZ0OjE1cHg7CisgICAgcGFkZGluZy1sZWZ0OjE1cHg7CisgICAgcGFkZGluZy10b3A6MXB4OworICB9Cis8L3N0eWxlPjxoMiB0aXRsZT0iUGFja2FnZSBqYXZhLnV0aWwgRGVzY3JpcHRpb24iPlBhY2thZ2UgamF2YS51dGlsIERlc2NyaXB0aW9uPC9oMj4KKzxkaXYgY2xhc3M9ImJsb2NrIj5Db250YWlucyB0aGUgY29sbGVjdGlvbnMgZnJhbWV3b3JrLCBsZWdhY3kgY29sbGVjdGlvbiBjbGFzc2VzLCBldmVudCBtb2RlbCwKKyAgZGF0ZSBhbmQgdGltZSBmYWNpbGl0aWVzLCBpbnRlcm5hdGlvbmFsaXphdGlvbiwgYW5kIG1pc2NlbGxhbmVvdXMgdXRpbGl0eQorICBjbGFzc2VzIChhIHN0cmluZyB0b2tlbml6ZXIsIGEgcmFuZG9tLW51bWJlciBnZW5lcmF0b3IsIGFuZCBhIGJpdCBhcnJheSkuCisKKyAgPGgyPlBhY2thZ2UgU3BlY2lmaWNhdGlvbjwvaDI+CisgIDx1bD4KKyAgICA8bGk+PGEgaHJlZj0iLi4vLi4vLi4vdGVjaG5vdGVzL2d1aWRlcy9jb2xsZWN0aW9ucy9vdmVydmlldy5odG1sIj48Yj5Db2xsZWN0aW9ucyBGcmFtZXdvcmsgT3ZlcnZpZXc8L2I+PC9hPgorICAgIDxsaT48YSBocmVmPSIuLi8uLi8uLi90ZWNobm90ZXMvZ3VpZGVzL2NvbGxlY3Rpb25zL3JlZmVyZW5jZS5odG1sIj48Yj4KKyAgICAgIENvbGxlY3Rpb25zIEZyYW1ld29yayBBbm5vdGF0ZWQgT3V0bGluZTwvYj48L2E+CisgIDwvdWw+CisKKyAgPGgyPlJlbGF0ZWQgRG9jdW1lbnRhdGlvbjwvaDI+CisgIEZvciBvdmVydmlld3MsIHR1dG9yaWFscywgZXhhbXBsZXMsIGd1aWRlcywgYW5kIHRvb2wgZG9jdW1lbnRhdGlvbiwgcGxlYXNlIHNlZToKKyAgPHVsPgorICAgIDxsaT48YSBocmVmPSJodHRwOi8vd3d3LmphdmEuc3VuLmNvbS9kb2NzL2Jvb2tzL3R1dG9yaWFsL2NvbGxlY3Rpb25zLyI+CisgICAgICA8Yj5Db2xsZWN0aW9ucyBGcmFtZXdvcmsgVHV0b3JpYWw8L2I+PC9hPgorICAgIDxsaT48YQorICAgICAgICBocmVmPSIuLi8uLi8uLi90ZWNobm90ZXMvZ3VpZGVzL2NvbGxlY3Rpb25zL2Rlc2lnbmZhcS5odG1sIj48Yj5Db2xsZWN0aW9ucworICAgICAgRnJhbWV3b3JrIERlc2lnbiBGQVE8L2I+PC9hPgorICA8L3VsPjwvZGl2PgorPGRsPjxkdD48c3BhbiBjbGFzcz0ic3Ryb25nIj5TaW5jZTo8L3NwYW4+PC9kdD4KKyAgPGRkPkpESzEuMDwvZGQ+PC9kbD4KKzwvZGl2PgorPC9IVE1MPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9leHRlcm5hbEphdmFkb2MvcGFja2FnZVN1bW1hcnkvdXRpbC9wYWdlLmh0bWwgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZXh0ZXJuYWxKYXZhZG9jL3BhY2thZ2VTdW1tYXJ5L3V0aWwvcGFnZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg3YzA4NTgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZXh0ZXJuYWxKYXZhZG9jL3BhY2thZ2VTdW1tYXJ5L3V0aWwvcGFnZS5odG1sCkBAIC0wLDAgKzEsODk2IEBACisKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNC9sb29zZS5kdGQiPgorPCEtLSBOZXdQYWdlIC0tPgorPGh0bWwgbGFuZz0iZW4iPgorPGhlYWQ+CisgIDwhLS0gR2VuZXJhdGVkIGJ5IGphdmFkb2MgKHZlcnNpb24gMS42LjBfMTQpIG9uIFRodSBBcHIgMTIgMDU6NDU6MDMgUERUIDIwMTIgLS0+CisgIDx0aXRsZT5qYXZhLnV0aWwgKEphdmEgUGxhdGZvcm0gU0UgNyApPC90aXRsZT4KKyAgPG1ldGEgbmFtZT0iZGF0ZSIgY29udGVudD0iMjAxMi0wNC0xMiI+CisgIDxtZXRhIG5hbWU9ImtleXdvcmRzIiBjb250ZW50PSJqYXZhLnV0aWwgcGFja2FnZSI+CisgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9Ii4uLy4uL3N0eWxlc2hlZXQuY3NzIiB0aXRsZT0iU3R5bGUiPgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+PCEtLQorICAgIGlmIChsb2NhdGlvbi5ocmVmLmluZGV4T2YoJ2lzLWV4dGVybmFsPXRydWUnKSA9PSAtMSkgeworICAgICAgICBwYXJlbnQuZG9jdW1lbnQudGl0bGU9ImphdmEudXRpbCAoSmF2YSBQbGF0Zm9ybSBTRSA3ICkiOworICAgIH0KKy8vLS0+Cis8L3NjcmlwdD4KKzxub3NjcmlwdD4KKyAgPGRpdj5KYXZhU2NyaXB0IGlzIGRpc2FibGVkIG9uIHlvdXIgYnJvd3Nlci48L2Rpdj4KKzwvbm9zY3JpcHQ+Cis8IS0tID09PT09PT09PSBTVEFSVCBPRiBUT1AgTkFWQkFSID09PT09PT0gLS0+Cis8ZGl2IGNsYXNzPSJ0b3BOYXYiPjxhIG5hbWU9Im5hdmJhcl90b3AiPgorICA8IS0tICAgLS0+Cis8L2E+PGEgaHJlZj0iI3NraXAtbmF2YmFyX3RvcCIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9hPjxhIG5hbWU9Im5hdmJhcl90b3BfZmlyc3Ryb3ciPgorICA8IS0tICAgLS0+Cis8L2E+CisgIDx1bCBjbGFzcz0ibmF2TGlzdCIgdGl0bGU9Ik5hdmlnYXRpb24iPgorICAgIDxsaT48YSBocmVmPSIuLi8uLi9vdmVydmlldy1zdW1tYXJ5Lmh0bWwiPk92ZXJ2aWV3PC9hPjwvbGk+CisgICAgPGxpIGNsYXNzPSJuYXZCYXJDZWxsMVJldiI+UGFja2FnZTwvbGk+CisgICAgPGxpPkNsYXNzPC9saT4KKyAgICA8bGk+PGEgaHJlZj0icGFja2FnZS11c2UuaHRtbCI+VXNlPC9hPjwvbGk+CisgICAgPGxpPjxhIGhyZWY9InBhY2thZ2UtdHJlZS5odG1sIj5UcmVlPC9hPjwvbGk+CisgICAgPGxpPjxhIGhyZWY9Ii4uLy4uL2RlcHJlY2F0ZWQtbGlzdC5odG1sIj5EZXByZWNhdGVkPC9hPjwvbGk+CisgICAgPGxpPjxhIGhyZWY9Ii4uLy4uL2luZGV4LWZpbGVzL2luZGV4LTEuaHRtbCI+SW5kZXg8L2E+PC9saT4KKyAgICA8bGk+PGEgaHJlZj0iLi4vLi4vaGVscC1kb2MuaHRtbCI+SGVscDwvYT48L2xpPgorICA8L3VsPgorICA8ZGl2IGNsYXNzPSJhYm91dExhbmd1YWdlIj48ZW0+PHN0cm9uZz5KYXZhJnRyYWRlOyZuYnNwO1BsYXRmb3JtPGJyPlN0YW5kYXJkJm5ic3A7RWQuJm5ic3A7Nzwvc3Ryb25nPjwvZW0+PC9kaXY+Cis8L2Rpdj4KKzxkaXYgY2xhc3M9InN1Yk5hdiI+CisgIDx1bCBjbGFzcz0ibmF2TGlzdCI+CisgICAgPGxpPjxhIGhyZWY9Ii4uLy4uL2phdmEvdGV4dC9zcGkvcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPlByZXYgUGFja2FnZTwvYT48L2xpPgorICAgIDxsaT48YSBocmVmPSIuLi8uLi9qYXZhL3V0aWwvY29uY3VycmVudC9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+TmV4dCBQYWNrYWdlPC9hPjwvbGk+CisgIDwvdWw+CisgIDx1bCBjbGFzcz0ibmF2TGlzdCI+CisgICAgPGxpPjxhIGhyZWY9Ii4uLy4uL2luZGV4Lmh0bWw/amF2YS91dGlsL3BhY2thZ2Utc3VtbWFyeS5odG1sIiB0YXJnZXQ9Il90b3AiPkZyYW1lczwvYT48L2xpPgorICAgIDxsaT48YSBocmVmPSJwYWNrYWdlLXN1bW1hcnkuaHRtbCIgdGFyZ2V0PSJfdG9wIj5ObyBGcmFtZXM8L2E+PC9saT4KKyAgPC91bD4KKyAgPHVsIGNsYXNzPSJuYXZMaXN0IiBpZD0iYWxsY2xhc3Nlc19uYXZiYXJfdG9wIj4KKyAgICA8bGk+PGEgaHJlZj0iLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPkFsbCBDbGFzc2VzPC9hPjwvbGk+CisgIDwvdWw+CisgIDxkaXY+CisgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwhLS0KKyAgYWxsQ2xhc3Nlc0xpbmsgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYWxsY2xhc3Nlc19uYXZiYXJfdG9wIik7CisgIGlmKHdpbmRvdz09dG9wKSB7CisgICAgYWxsQ2xhc3Nlc0xpbmsuc3R5bGUuZGlzcGxheSA9ICJibG9jayI7CisgIH0KKyAgZWxzZSB7CisgICAgYWxsQ2xhc3Nlc0xpbmsuc3R5bGUuZGlzcGxheSA9ICJub25lIjsKKyAgfQorICAvLy0tPgorICAgIDwvc2NyaXB0PgorICA8L2Rpdj4KKyAgPGEgbmFtZT0ic2tpcC1uYXZiYXJfdG9wIj4KKyAgICA8IS0tICAgLS0+CisgIDwvYT48L2Rpdj4KKzwhLS0gPT09PT09PT09IEVORCBPRiBUT1AgTkFWQkFSID09PT09PT09PSAtLT4KKzxkaXYgY2xhc3M9ImhlYWRlciI+CisgIDxoMSB0aXRsZT0iUGFja2FnZSIgY2xhc3M9InRpdGxlIj5QYWNrYWdlJm5ic3A7amF2YS51dGlsPC9oMT4KKyAgPGRpdiBjbGFzcz0iZG9jU3VtbWFyeSI+CisgICAgPGRpdiBjbGFzcz0iYmxvY2siPkNvbnRhaW5zIHRoZSBjb2xsZWN0aW9ucyBmcmFtZXdvcmssIGxlZ2FjeSBjb2xsZWN0aW9uIGNsYXNzZXMsIGV2ZW50IG1vZGVsLAorICAgICAgZGF0ZSBhbmQgdGltZSBmYWNpbGl0aWVzLCBpbnRlcm5hdGlvbmFsaXphdGlvbiwgYW5kIG1pc2NlbGxhbmVvdXMgdXRpbGl0eQorICAgICAgY2xhc3NlcyAoYSBzdHJpbmcgdG9rZW5pemVyLCBhIHJhbmRvbS1udW1iZXIgZ2VuZXJhdG9yLCBhbmQgYSBiaXQgYXJyYXkpLjwvZGl2PgorICA8L2Rpdj4KKyAgPHA+U2VlOiZuYnNwOzxhIGhyZWY9IiNwYWNrYWdlX2Rlc2NyaXB0aW9uIj5EZXNjcmlwdGlvbjwvYT48L3A+Cis8L2Rpdj4KKzxkaXYgY2xhc3M9ImNvbnRlbnRDb250YWluZXIiPgorPHVsIGNsYXNzPSJibG9ja0xpc3QiPgorPGxpIGNsYXNzPSJibG9ja0xpc3QiPgorICA8dGFibGUgY2xhc3M9InBhY2thZ2VTdW1tYXJ5IiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIzIiBjZWxsc3BhY2luZz0iMCIgc3VtbWFyeT0iSW50ZXJmYWNlIFN1bW1hcnkgdGFibGUsIGxpc3RpbmcgaW50ZXJmYWNlcywgYW5kIGFuIGV4cGxhbmF0aW9uIj4KKyAgICA8Y2FwdGlvbj48c3Bhbj5JbnRlcmZhY2UgU3VtbWFyeTwvc3Bhbj48c3BhbiBjbGFzcz0idGFiRW5kIj4mbmJzcDs8L3NwYW4+PC9jYXB0aW9uPgorICAgIDx0cj4KKyAgICAgIDx0aCBjbGFzcz0iY29sRmlyc3QiIHNjb3BlPSJjb2wiPkludGVyZmFjZTwvdGg+CisgICAgICA8dGggY2xhc3M9ImNvbExhc3QiIHNjb3BlPSJjb2wiPkRlc2NyaXB0aW9uPC90aD4KKyAgICA8L3RyPgorICAgIDx0Ym9keT4KKyAgICA8dHIgY2xhc3M9ImFsdENvbG9yIj4KKyAgICAgIDx0ZCBjbGFzcz0iY29sRmlyc3QiPjxhIGhyZWY9Ii4uLy4uL2phdmEvdXRpbC9Db2xsZWN0aW9uLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gamF2YS51dGlsIj5Db2xsZWN0aW9uPC9hPiZsdDtFJmd0OzwvdGQ+CisgICAgICA8dGQgY2xhc3M9ImNvbExhc3QiPgorICAgICAgICA8ZGl2IGNsYXNzPSJibG9jayI+VGhlIHJvb3QgaW50ZXJmYWNlIGluIHRoZSA8aT5jb2xsZWN0aW9uIGhpZXJhcmNoeTwvaT4uPC9kaXY+CisgICAgICA8L3RkPgorICAgIDwvdHI+CisgICAgPHRyIGNsYXNzPSJyb3dDb2xvciI+CisgICAgICA8dGQgY2xhc3M9ImNvbEZpcnN0Ij48YSBocmVmPSIuLi8uLi9qYXZhL3V0aWwvQ29tcGFyYXRvci5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIGphdmEudXRpbCI+Q29tcGFyYXRvcjwvYT4mbHQ7VCZndDs8L3RkPgorICAgICAgPHRkIGNsYXNzPSJjb2xMYXN0Ij4KKyAgICAgICAgPGRpdiBjbGFzcz0iYmxvY2siPkEgY29tcGFyaXNvbiBmdW5jdGlvbiwgd2hpY2ggaW1wb3NlcyBhIDxpPnRvdGFsIG9yZGVyaW5nPC9pPiBvbiBzb21lCisgICAgICAgICAgY29sbGVjdGlvbiBvZiBvYmplY3RzLjwvZGl2PgorICAgICAgPC90ZD4KKyAgICA8L3RyPgorICAgIDx0ciBjbGFzcz0iYWx0Q29sb3IiPgorICAgICAgPHRkIGNsYXNzPSJjb2xGaXJzdCI+PGEgaHJlZj0iLi4vLi4vamF2YS91dGlsL0RlcXVlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gamF2YS51dGlsIj5EZXF1ZTwvYT4mbHQ7RSZndDs8L3RkPgorICAgICAgPHRkIGNsYXNzPSJjb2xMYXN0Ij4KKyAgICAgICAgPGRpdiBjbGFzcz0iYmxvY2siPkEgbGluZWFyIGNvbGxlY3Rpb24gdGhhdCBzdXBwb3J0cyBlbGVtZW50IGluc2VydGlvbiBhbmQgcmVtb3ZhbCBhdAorICAgICAgICAgIGJvdGggZW5kcy48L2Rpdj4KKyAgICAgIDwvdGQ+CisgICAgPC90cj4KKyAgICA8dHIgY2xhc3M9InJvd0NvbG9yIj4KKyAgICAgIDx0ZCBjbGFzcz0iY29sRmlyc3QiPjxhIGhyZWY9Ii4uLy4uL2phdmEvdXRpbC9FbnVtZXJhdGlvbi5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIGphdmEudXRpbCI+RW51bWVyYXRpb248L2E+Jmx0O0UmZ3Q7PC90ZD4KKyAgICAgIDx0ZCBjbGFzcz0iY29sTGFzdCI+CisgICAgICAgIDxkaXYgY2xhc3M9ImJsb2NrIj5BbiBvYmplY3QgdGhhdCBpbXBsZW1lbnRzIHRoZSBFbnVtZXJhdGlvbiBpbnRlcmZhY2UgZ2VuZXJhdGVzIGEKKyAgICAgICAgICBzZXJpZXMgb2YgZWxlbWVudHMsIG9uZSBhdCBhIHRpbWUuPC9kaXY+CisgICAgICA8L3RkPgorICAgIDwvdHI+CisgICAgPHRyIGNsYXNzPSJhbHRDb2xvciI+CisgICAgICA8dGQgY2xhc3M9ImNvbEZpcnN0Ij48YSBocmVmPSIuLi8uLi9qYXZhL3V0aWwvRXZlbnRMaXN0ZW5lci5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIGphdmEudXRpbCI+RXZlbnRMaXN0ZW5lcjwvYT48L3RkPgorICAgICAgPHRkIGNsYXNzPSJjb2xMYXN0Ij4KKyAgICAgICAgPGRpdiBjbGFzcz0iYmxvY2siPkEgdGFnZ2luZyBpbnRlcmZhY2UgdGhhdCBhbGwgZXZlbnQgbGlzdGVuZXIgaW50ZXJmYWNlcyBtdXN0IGV4dGVuZC48L2Rpdj4KKyAgICAgIDwvdGQ+CisgICAgPC90cj4KKyAgICA8dHIgY2xhc3M9InJvd0NvbG9yIj4KKyAgICAgIDx0ZCBjbGFzcz0iY29sRmlyc3QiPjxhIGhyZWY9Ii4uLy4uL2phdmEvdXRpbC9Gb3JtYXR0YWJsZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIGphdmEudXRpbCI+Rm9ybWF0dGFibGU8L2E+PC90ZD4KKyAgICAgIDx0ZCBjbGFzcz0iY29sTGFzdCI+CisgICAgICAgIDxkaXYgY2xhc3M9ImJsb2NrIj5UaGUgPHR0PkZvcm1hdHRhYmxlPC90dD4gaW50ZXJmYWNlIG11c3QgYmUgaW1wbGVtZW50ZWQgYnkgYW55IGNsYXNzIHRoYXQKKyAgICAgICAgICBuZWVkcyB0byBwZXJmb3JtIGN1c3RvbSBmb3JtYXR0aW5nIHVzaW5nIHRoZSA8dHQ+J3MnPC90dD4gY29udmVyc2lvbgorICAgICAgICAgIHNwZWNpZmllciBvZiA8YSBocmVmPSIuLi8uLi9qYXZhL3V0aWwvRm9ybWF0dGVyLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBqYXZhLnV0aWwiPjxjb2RlPkZvcm1hdHRlcjwvY29kZT48L2E+LjwvZGl2PgorICAgICAgPC90ZD4KKyAgICA8L3RyPgorICAgIDx0ciBjbGFzcz0iYWx0Q29sb3IiPgorICAgICAgPHRkIGNsYXNzPSJjb2xGaXJzdCI+PGEgaHJlZj0iLi4vLi4vamF2YS91dGlsL0l0ZXJhdG9yLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gamF2YS51dGlsIj5JdGVyYXRvcjwvYT4mbHQ7RSZndDs8L3RkPgorICAgICAgPHRkIGNsYXNzPSJjb2xMYXN0Ij4KKyAgICAgICAgPGRpdiBjbGFzcz0iYmxvY2siPkFuIGl0ZXJhdG9yIG92ZXIgYSBjb2xsZWN0aW9uLjwvZGl2PgorICAgICAgPC90ZD4KKyAgICA8L3RyPgorICAgIDx0ciBjbGFzcz0icm93Q29sb3IiPgorICAgICAgPHRkIGNsYXNzPSJjb2xGaXJzdCI+PGEgaHJlZj0iLi4vLi4vamF2YS91dGlsL0xpc3QuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBqYXZhLnV0aWwiPkxpc3Q8L2E+Jmx0O0UmZ3Q7PC90ZD4KKyAgICAgIDx0ZCBjbGFzcz0iY29sTGFzdCI+CisgICAgICAgIDxkaXYgY2xhc3M9ImJsb2NrIj5BbiBvcmRlcmVkIGNvbGxlY3Rpb24gKGFsc28ga25vd24gYXMgYSA8aT5zZXF1ZW5jZTwvaT4pLjwvZGl2PgorICAgICAgPC90ZD4KKyAgICA8L3RyPgorICAgIDx0ciBjbGFzcz0iYWx0Q29sb3IiPgorICAgICAgPHRkIGNsYXNzPSJjb2xGaXJzdCI+PGEgaHJlZj0iLi4vLi4vamF2YS91dGlsL0xpc3RJdGVyYXRvci5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIGphdmEudXRpbCI+TGlzdEl0ZXJhdG9yPC9hPiZsdDtFJmd0OzwvdGQ+CisgICAgICA8dGQgY2xhc3M9ImNvbExhc3QiPgorICAgICAgICA8ZGl2IGNsYXNzPSJibG9jayI+QW4gaXRlcmF0b3IgZm9yIGxpc3RzIHRoYXQgYWxsb3dzIHRoZSBwcm9ncmFtbWVyCisgICAgICAgICAgdG8gdHJhdmVyc2UgdGhlIGxpc3QgaW4gZWl0aGVyIGRpcmVjdGlvbiwgbW9kaWZ5CisgICAgICAgICAgdGhlIGxpc3QgZHVyaW5nIGl0ZXJhdGlvbiwgYW5kIG9idGFpbiB0aGUgaXRlcmF0b3IncworICAgICAgICAgIGN1cnJlbnQgcG9zaXRpb24gaW4gdGhlIGxpc3QuPC9kaXY+CisgICAgICA8L3RkPgorICAgIDwvdHI+CisgICAgPHRyIGNsYXNzPSJyb3dDb2xvciI+CisgICAgICA8dGQgY2xhc3M9ImNvbEZpcnN0Ij48YSBocmVmPSIuLi8uLi9qYXZhL3V0aWwvTWFwLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gamF2YS51dGlsIj5NYXA8L2E+Jmx0O0ssViZndDs8L3RkPgorICAgICAgPHRkIGNsYXNzPSJjb2xMYXN0Ij4KKyAgICAgICAgPGRpdiBjbGFzcz0iYmxvY2siPkFuIG9iamVjdCB0aGF0IG1hcHMga2V5cyB0byB2YWx1ZXMuPC9kaXY+CisgICAgICA8L3RkPgorICAgIDwvdHI+CisgICAgPHRyIGNsYXNzPSJhbHRDb2xvciI+CisgICAgICA8dGQgY2xhc3M9ImNvbEZpcnN0Ij48YSBocmVmPSIuLi8uLi9qYXZhL3V0aWwvTWFwLkVudHJ5Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gamF2YS51dGlsIj5NYXAuRW50cnk8L2E+Jmx0O0ssViZndDs8L3RkPgorICAgICAgPHRkIGNsYXNzPSJjb2xMYXN0Ij4KKyAgICAgICAgPGRpdiBjbGFzcz0iYmxvY2siPkEgbWFwIGVudHJ5IChrZXktdmFsdWUgcGFpcikuPC9kaXY+CisgICAgICA8L3RkPgorICAgIDwvdHI+CisgICAgPHRyIGNsYXNzPSJyb3dDb2xvciI+CisgICAgICA8dGQgY2xhc3M9ImNvbEZpcnN0Ij48YSBocmVmPSIuLi8uLi9qYXZhL3V0aWwvTmF2aWdhYmxlTWFwLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gamF2YS51dGlsIj5OYXZpZ2FibGVNYXA8L2E+Jmx0O0ssViZndDs8L3RkPgorICAgICAgPHRkIGNsYXNzPSJjb2xMYXN0Ij4KKyAgICAgICAgPGRpdiBjbGFzcz0iYmxvY2siPkEgPGEgaHJlZj0iLi4vLi4vamF2YS91dGlsL1NvcnRlZE1hcC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIGphdmEudXRpbCI+PGNvZGU+U29ydGVkTWFwPC9jb2RlPjwvYT4gZXh0ZW5kZWQgd2l0aCBuYXZpZ2F0aW9uIG1ldGhvZHMgcmV0dXJuaW5nIHRoZQorICAgICAgICAgIGNsb3Nlc3QgbWF0Y2hlcyBmb3IgZ2l2ZW4gc2VhcmNoIHRhcmdldHMuPC9kaXY+CisgICAgICA8L3RkPgorICAgIDwvdHI+CisgICAgPHRyIGNsYXNzPSJhbHRDb2xvciI+CisgICAgICA8dGQgY2xhc3M9ImNvbEZpcnN0Ij48YSBocmVmPSIuLi8uLi9qYXZhL3V0aWwvTmF2aWdhYmxlU2V0Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gamF2YS51dGlsIj5OYXZpZ2FibGVTZXQ8L2E+Jmx0O0UmZ3Q7PC90ZD4KKyAgICAgIDx0ZCBjbGFzcz0iY29sTGFzdCI+CisgICAgICAgIDxkaXYgY2xhc3M9ImJsb2NrIj5BIDxhIGhyZWY9Ii4uLy4uL2phdmEvdXRpbC9Tb3J0ZWRTZXQuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBqYXZhLnV0aWwiPjxjb2RlPlNvcnRlZFNldDwvY29kZT48L2E+IGV4dGVuZGVkIHdpdGggbmF2aWdhdGlvbiBtZXRob2RzIHJlcG9ydGluZworICAgICAgICAgIGNsb3Nlc3QgbWF0Y2hlcyBmb3IgZ2l2ZW4gc2VhcmNoIHRhcmdldHMuPC9kaXY+CisgICAgICA8L3RkPgorICAgIDwvdHI+CisgICAgPHRyIGNsYXNzPSJyb3dDb2xvciI+CisgICAgICA8dGQgY2xhc3M9ImNvbEZpcnN0Ij48YSBocmVmPSIuLi8uLi9qYXZhL3V0aWwvT2JzZXJ2ZXIuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBqYXZhLnV0aWwiPk9ic2VydmVyPC9hPjwvdGQ+CisgICAgICA8dGQgY2xhc3M9ImNvbExhc3QiPgorICAgICAgICA8ZGl2IGNsYXNzPSJibG9jayI+QSBjbGFzcyBjYW4gaW1wbGVtZW50IHRoZSA8Y29kZT5PYnNlcnZlcjwvY29kZT4gaW50ZXJmYWNlIHdoZW4gaXQKKyAgICAgICAgICB3YW50cyB0byBiZSBpbmZvcm1lZCBvZiBjaGFuZ2VzIGluIG9ic2VydmFibGUgb2JqZWN0cy48L2Rpdj4KKyAgICAgIDwvdGQ+CisgICAgPC90cj4KKyAgICA8dHIgY2xhc3M9ImFsdENvbG9yIj4KKyAgICAgIDx0ZCBjbGFzcz0iY29sRmlyc3QiPjxhIGhyZWY9Ii4uLy4uL2phdmEvdXRpbC9RdWV1ZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIGphdmEudXRpbCI+UXVldWU8L2E+Jmx0O0UmZ3Q7PC90ZD4KKyAgICAgIDx0ZCBjbGFzcz0iY29sTGFzdCI+CisgICAgICAgIDxkaXYgY2xhc3M9ImJsb2NrIj5BIGNvbGxlY3Rpb24gZGVzaWduZWQgZm9yIGhvbGRpbmcgZWxlbWVudHMgcHJpb3IgdG8gcHJvY2Vzc2luZy48L2Rpdj4KKyAgICAgIDwvdGQ+CisgICAgPC90cj4KKyAgICA8dHIgY2xhc3M9InJvd0NvbG9yIj4KKyAgICAgIDx0ZCBjbGFzcz0iY29sRmlyc3QiPjxhIGhyZWY9Ii4uLy4uL2phdmEvdXRpbC9SYW5kb21BY2Nlc3MuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBqYXZhLnV0aWwiPlJhbmRvbUFjY2VzczwvYT48L3RkPgorICAgICAgPHRkIGNsYXNzPSJjb2xMYXN0Ij4KKyAgICAgICAgPGRpdiBjbGFzcz0iYmxvY2siPk1hcmtlciBpbnRlcmZhY2UgdXNlZCBieSA8dHQ+TGlzdDwvdHQ+IGltcGxlbWVudGF0aW9ucyB0byBpbmRpY2F0ZSB0aGF0CisgICAgICAgICAgdGhleSBzdXBwb3J0IGZhc3QgKGdlbmVyYWxseSBjb25zdGFudCB0aW1lKSByYW5kb20gYWNjZXNzLjwvZGl2PgorICAgICAgPC90ZD4KKyAgICA8L3RyPgorICAgIDx0ciBjbGFzcz0iYWx0Q29sb3IiPgorICAgICAgPHRkIGNsYXNzPSJjb2xGaXJzdCI+PGEgaHJlZj0iLi4vLi4vamF2YS91dGlsL1NldC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIGphdmEudXRpbCI+U2V0PC9hPiZsdDtFJmd0OzwvdGQ+CisgICAgICA8dGQgY2xhc3M9ImNvbExhc3QiPgorICAgICAgICA8ZGl2IGNsYXNzPSJibG9jayI+QSBjb2xsZWN0aW9uIHRoYXQgY29udGFpbnMgbm8gZHVwbGljYXRlIGVsZW1lbnRzLjwvZGl2PgorICAgICAgPC90ZD4KKyAgICA8L3RyPgorICAgIDx0ciBjbGFzcz0icm93Q29sb3IiPgorICAgICAgPHRkIGNsYXNzPSJjb2xGaXJzdCI+PGEgaHJlZj0iLi4vLi4vamF2YS91dGlsL1NvcnRlZE1hcC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIGphdmEudXRpbCI+U29ydGVkTWFwPC9hPiZsdDtLLFYmZ3Q7PC90ZD4KKyAgICAgIDx0ZCBjbGFzcz0iY29sTGFzdCI+CisgICAgICAgIDxkaXYgY2xhc3M9ImJsb2NrIj5BIDxhIGhyZWY9Ii4uLy4uL2phdmEvdXRpbC9NYXAuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBqYXZhLnV0aWwiPjxjb2RlPk1hcDwvY29kZT48L2E+IHRoYXQgZnVydGhlciBwcm92aWRlcyBhIDxlbT50b3RhbCBvcmRlcmluZzwvZW0+IG9uIGl0cyBrZXlzLjwvZGl2PgorICAgICAgPC90ZD4KKyAgICA8L3RyPgorICAgIDx0ciBjbGFzcz0iYWx0Q29sb3IiPgorICAgICAgPHRkIGNsYXNzPSJjb2xGaXJzdCI+PGEgaHJlZj0iLi4vLi4vamF2YS91dGlsL1NvcnRlZFNldC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIGphdmEudXRpbCI+U29ydGVkU2V0PC9hPiZsdDtFJmd0OzwvdGQ+CisgICAgICA8dGQgY2xhc3M9ImNvbExhc3QiPgorICAgICAgICA8ZGl2IGNsYXNzPSJibG9jayI+QSA8YSBocmVmPSIuLi8uLi9qYXZhL3V0aWwvU2V0Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gamF2YS51dGlsIj48Y29kZT5TZXQ8L2NvZGU+PC9hPiB0aGF0IGZ1cnRoZXIgcHJvdmlkZXMgYSA8aT50b3RhbCBvcmRlcmluZzwvaT4gb24gaXRzIGVsZW1lbnRzLjwvZGl2PgorICAgICAgPC90ZD4KKyAgICA8L3RyPgorICAgIDwvdGJvZHk+CisgIDwvdGFibGU+Cis8L2xpPgorPGxpIGNsYXNzPSJibG9ja0xpc3QiPgorPHRhYmxlIGNsYXNzPSJwYWNrYWdlU3VtbWFyeSIgYm9yZGVyPSIwIiBjZWxscGFkZGluZz0iMyIgY2VsbHNwYWNpbmc9IjAiIHN1bW1hcnk9IkNsYXNzIFN1bW1hcnkgdGFibGUsIGxpc3RpbmcgY2xhc3NlcywgYW5kIGFuIGV4cGxhbmF0aW9uIj4KKzxjYXB0aW9uPjxzcGFuPkNsYXNzIFN1bW1hcnk8L3NwYW4+PHNwYW4gY2xhc3M9InRhYkVuZCI+Jm5ic3A7PC9zcGFuPjwvY2FwdGlvbj4KKzx0cj4KKyAgPHRoIGNsYXNzPSJjb2xGaXJzdCIgc2NvcGU9ImNvbCI+Q2xhc3M8L3RoPgorICA8dGggY2xhc3M9ImNvbExhc3QiIHNjb3BlPSJjb2wiPkRlc2NyaXB0aW9uPC90aD4KKzwvdHI+Cis8dGJvZHk+Cis8dHIgY2xhc3M9ImFsdENvbG9yIj4KKyAgPHRkIGNsYXNzPSJjb2xGaXJzdCI+PGEgaHJlZj0iLi4vLi4vamF2YS91dGlsL0Fic3RyYWN0Q29sbGVjdGlvbi5odG1sIiB0aXRsZT0iY2xhc3MgaW4gamF2YS51dGlsIj5BYnN0cmFjdENvbGxlY3Rpb248L2E+Jmx0O0UmZ3Q7PC90ZD4KKyAgPHRkIGNsYXNzPSJjb2xMYXN0Ij4KKyAgICA8ZGl2IGNsYXNzPSJibG9jayI+VGhpcyBjbGFzcyBwcm92aWRlcyBhIHNrZWxldGFsIGltcGxlbWVudGF0aW9uIG9mIHRoZSA8dHQ+Q29sbGVjdGlvbjwvdHQ+CisgICAgICBpbnRlcmZhY2UsIHRvIG1pbmltaXplIHRoZSBlZmZvcnQgcmVxdWlyZWQgdG8gaW1wbGVtZW50IHRoaXMgaW50ZXJmYWNlLjwvZGl2PgorICA8L3RkPgorPC90cj4KKzx0ciBjbGFzcz0icm93Q29sb3IiPgorICA8dGQgY2xhc3M9ImNvbEZpcnN0Ij48YSBocmVmPSIuLi8uLi9qYXZhL3V0aWwvQWJzdHJhY3RMaXN0Lmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBqYXZhLnV0aWwiPkFic3RyYWN0TGlzdDwvYT4mbHQ7RSZndDs8L3RkPgorICA8dGQgY2xhc3M9ImNvbExhc3QiPgorICAgIDxkaXYgY2xhc3M9ImJsb2NrIj5UaGlzIGNsYXNzIHByb3ZpZGVzIGEgc2tlbGV0YWwgaW1wbGVtZW50YXRpb24gb2YgdGhlIDxhIGhyZWY9Ii4uLy4uL2phdmEvdXRpbC9MaXN0Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gamF2YS51dGlsIj48Y29kZT5MaXN0PC9jb2RlPjwvYT4KKyAgICAgIGludGVyZmFjZSB0byBtaW5pbWl6ZSB0aGUgZWZmb3J0IHJlcXVpcmVkIHRvIGltcGxlbWVudCB0aGlzIGludGVyZmFjZQorICAgICAgYmFja2VkIGJ5IGEgInJhbmRvbSBhY2Nlc3MiIGRhdGEgc3RvcmUgKHN1Y2ggYXMgYW4gYXJyYXkpLjwvZGl2PgorICA8L3RkPgorPC90cj4KKzx0ciBjbGFzcz0iYWx0Q29sb3IiPgorICA8dGQgY2xhc3M9ImNvbEZpcnN0Ij48YSBocmVmPSIuLi8uLi9qYXZhL3V0aWwvQWJzdHJhY3RNYXAuaHRtbCIgdGl0bGU9ImNsYXNzIGluIGphdmEudXRpbCI+QWJzdHJhY3RNYXA8L2E+Jmx0O0ssViZndDs8L3RkPgorICA8dGQgY2xhc3M9ImNvbExhc3QiPgorICAgIDxkaXYgY2xhc3M9ImJsb2NrIj5UaGlzIGNsYXNzIHByb3ZpZGVzIGEgc2tlbGV0YWwgaW1wbGVtZW50YXRpb24gb2YgdGhlIDx0dD5NYXA8L3R0PgorICAgICAgaW50ZXJmYWNlLCB0byBtaW5pbWl6ZSB0aGUgZWZmb3J0IHJlcXVpcmVkIHRvIGltcGxlbWVudCB0aGlzIGludGVyZmFjZS48L2Rpdj4KKyAgPC90ZD4KKzwvdHI+Cis8dHIgY2xhc3M9InJvd0NvbG9yIj4KKyAgPHRkIGNsYXNzPSJjb2xGaXJzdCI+PGEgaHJlZj0iLi4vLi4vamF2YS91dGlsL0Fic3RyYWN0TWFwLlNpbXBsZUVudHJ5Lmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBqYXZhLnV0aWwiPkFic3RyYWN0TWFwLlNpbXBsZUVudHJ5PC9hPiZsdDtLLFYmZ3Q7PC90ZD4KKyAgPHRkIGNsYXNzPSJjb2xMYXN0Ij4KKyAgICA8ZGl2IGNsYXNzPSJibG9jayI+QW4gRW50cnkgbWFpbnRhaW5pbmcgYSBrZXkgYW5kIGEgdmFsdWUuPC9kaXY+CisgIDwvdGQ+Cis8L3RyPgorPHRyIGNsYXNzPSJhbHRDb2xvciI+CisgIDx0ZCBjbGFzcz0iY29sRmlyc3QiPjxhIGhyZWY9Ii4uLy4uL2phdmEvdXRpbC9BYnN0cmFjdE1hcC5TaW1wbGVJbW11dGFibGVFbnRyeS5odG1sIiB0aXRsZT0iY2xhc3MgaW4gamF2YS51dGlsIj5BYnN0cmFjdE1hcC5TaW1wbGVJbW11dGFibGVFbnRyeTwvYT4mbHQ7SyxWJmd0OzwvdGQ+CisgIDx0ZCBjbGFzcz0iY29sTGFzdCI+CisgICAgPGRpdiBjbGFzcz0iYmxvY2siPkFuIEVudHJ5IG1haW50YWluaW5nIGFuIGltbXV0YWJsZSBrZXkgYW5kIHZhbHVlLjwvZGl2PgorICA8L3RkPgorPC90cj4KKzx0ciBjbGFzcz0icm93Q29sb3IiPgorICA8dGQgY2xhc3M9ImNvbEZpcnN0Ij48YSBocmVmPSIuLi8uLi9qYXZhL3V0aWwvQWJzdHJhY3RRdWV1ZS5odG1sIiB0aXRsZT0iY2xhc3MgaW4gamF2YS51dGlsIj5BYnN0cmFjdFF1ZXVlPC9hPiZsdDtFJmd0OzwvdGQ+CisgIDx0ZCBjbGFzcz0iY29sTGFzdCI+CisgICAgPGRpdiBjbGFzcz0iYmxvY2siPlRoaXMgY2xhc3MgcHJvdmlkZXMgc2tlbGV0YWwgaW1wbGVtZW50YXRpb25zIG9mIHNvbWUgPGEgaHJlZj0iLi4vLi4vamF2YS91dGlsL1F1ZXVlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gamF2YS51dGlsIj48Y29kZT5RdWV1ZTwvY29kZT48L2E+CisgICAgICBvcGVyYXRpb25zLjwvZGl2PgorICA8L3RkPgorPC90cj4KKzx0ciBjbGFzcz0iYWx0Q29sb3IiPgorICA8dGQgY2xhc3M9ImNvbEZpcnN0Ij48YSBocmVmPSIuLi8uLi9qYXZhL3V0aWwvQWJzdHJhY3RTZXF1ZW50aWFsTGlzdC5odG1sIiB0aXRsZT0iY2xhc3MgaW4gamF2YS51dGlsIj5BYnN0cmFjdFNlcXVlbnRpYWxMaXN0PC9hPiZsdDtFJmd0OzwvdGQ+CisgIDx0ZCBjbGFzcz0iY29sTGFzdCI+CisgICAgPGRpdiBjbGFzcz0iYmxvY2siPlRoaXMgY2xhc3MgcHJvdmlkZXMgYSBza2VsZXRhbCBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgPHR0Pkxpc3Q8L3R0PgorICAgICAgaW50ZXJmYWNlIHRvIG1pbmltaXplIHRoZSBlZmZvcnQgcmVxdWlyZWQgdG8gaW1wbGVtZW50IHRoaXMgaW50ZXJmYWNlCisgICAgICBiYWNrZWQgYnkgYSAic2VxdWVudGlhbCBhY2Nlc3MiIGRhdGEgc3RvcmUgKHN1Y2ggYXMgYSBsaW5rZWQgbGlzdCkuPC9kaXY+CisgIDwvdGQ+Cis8L3RyPgorPHRyIGNsYXNzPSJyb3dDb2xvciI+CisgIDx0ZCBjbGFzcz0iY29sRmlyc3QiPjxhIGhyZWY9Ii4uLy4uL2phdmEvdXRpbC9BYnN0cmFjdFNldC5odG1sIiB0aXRsZT0iY2xhc3MgaW4gamF2YS51dGlsIj5BYnN0cmFjdFNldDwvYT4mbHQ7RSZndDs8L3RkPgorICA8dGQgY2xhc3M9ImNvbExhc3QiPgorICAgIDxkaXYgY2xhc3M9ImJsb2NrIj5UaGlzIGNsYXNzIHByb3ZpZGVzIGEgc2tlbGV0YWwgaW1wbGVtZW50YXRpb24gb2YgdGhlIDx0dD5TZXQ8L3R0PgorICAgICAgaW50ZXJmYWNlIHRvIG1pbmltaXplIHRoZSBlZmZvcnQgcmVxdWlyZWQgdG8gaW1wbGVtZW50IHRoaXMKKyAgICAgIGludGVyZmFjZS48L2Rpdj4KKyAgPC90ZD4KKzwvdHI+Cis8dHIgY2xhc3M9ImFsdENvbG9yIj4KKyAgPHRkIGNsYXNzPSJjb2xGaXJzdCI+PGEgaHJlZj0iLi4vLi4vamF2YS91dGlsL0FycmF5RGVxdWUuaHRtbCIgdGl0bGU9ImNsYXNzIGluIGphdmEudXRpbCI+QXJyYXlEZXF1ZTwvYT4mbHQ7RSZndDs8L3RkPgorICA8dGQgY2xhc3M9ImNvbExhc3QiPgorICAgIDxkaXYgY2xhc3M9ImJsb2NrIj5SZXNpemFibGUtYXJyYXkgaW1wbGVtZW50YXRpb24gb2YgdGhlIDxhIGhyZWY9Ii4uLy4uL2phdmEvdXRpbC9EZXF1ZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIGphdmEudXRpbCI+PGNvZGU+RGVxdWU8L2NvZGU+PC9hPiBpbnRlcmZhY2UuPC9kaXY+CisgIDwvdGQ+Cis8L3RyPgorPHRyIGNsYXNzPSJyb3dDb2xvciI+CisgIDx0ZCBjbGFzcz0iY29sRmlyc3QiPjxhIGhyZWY9Ii4uLy4uL2phdmEvdXRpbC9BcnJheUxpc3QuaHRtbCIgdGl0bGU9ImNsYXNzIGluIGphdmEudXRpbCI+QXJyYXlMaXN0PC9hPiZsdDtFJmd0OzwvdGQ+CisgIDx0ZCBjbGFzcz0iY29sTGFzdCI+CisgICAgPGRpdiBjbGFzcz0iYmxvY2siPlJlc2l6YWJsZS1hcnJheSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgPHR0Pkxpc3Q8L3R0PiBpbnRlcmZhY2UuPC9kaXY+CisgIDwvdGQ+Cis8L3RyPgorPHRyIGNsYXNzPSJhbHRDb2xvciI+CisgIDx0ZCBjbGFzcz0iY29sRmlyc3QiPjxhIGhyZWY9Ii4uLy4uL2phdmEvdXRpbC9BcnJheXMuaHRtbCIgdGl0bGU9ImNsYXNzIGluIGphdmEudXRpbCI+QXJyYXlzPC9hPjwvdGQ+CisgIDx0ZCBjbGFzcz0iY29sTGFzdCI+CisgICAgPGRpdiBjbGFzcz0iYmxvY2siPlRoaXMgY2xhc3MgY29udGFpbnMgdmFyaW91cyBtZXRob2RzIGZvciBtYW5pcHVsYXRpbmcgYXJyYXlzIChzdWNoIGFzCisgICAgICBzb3J0aW5nIGFuZCBzZWFyY2hpbmcpLjwvZGl2PgorICA8L3RkPgorPC90cj4KKzx0ciBjbGFzcz0icm93Q29sb3IiPgorICA8dGQgY2xhc3M9ImNvbEZpcnN0Ij48YSBocmVmPSIuLi8uLi9qYXZhL3V0aWwvQml0U2V0Lmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBqYXZhLnV0aWwiPkJpdFNldDwvYT48L3RkPgorICA8dGQgY2xhc3M9ImNvbExhc3QiPgorICAgIDxkaXYgY2xhc3M9ImJsb2NrIj5UaGlzIGNsYXNzIGltcGxlbWVudHMgYSB2ZWN0b3Igb2YgYml0cyB0aGF0IGdyb3dzIGFzIG5lZWRlZC48L2Rpdj4KKyAgPC90ZD4KKzwvdHI+Cis8dHIgY2xhc3M9ImFsdENvbG9yIj4KKyAgPHRkIGNsYXNzPSJjb2xGaXJzdCI+PGEgaHJlZj0iLi4vLi4vamF2YS91dGlsL0NhbGVuZGFyLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBqYXZhLnV0aWwiPkNhbGVuZGFyPC9hPjwvdGQ+CisgIDx0ZCBjbGFzcz0iY29sTGFzdCI+CisgICAgPGRpdiBjbGFzcz0iYmxvY2siPlRoZSA8Y29kZT5DYWxlbmRhcjwvY29kZT4gY2xhc3MgaXMgYW4gYWJzdHJhY3QgY2xhc3MgdGhhdCBwcm92aWRlcyBtZXRob2RzCisgICAgICBmb3IgY29udmVydGluZyBiZXR3ZWVuIGEgc3BlY2lmaWMgaW5zdGFudCBpbiB0aW1lIGFuZCBhIHNldCBvZiA8YSBocmVmPSIuLi8uLi9qYXZhL3V0aWwvQ2FsZW5kYXIuaHRtbCNmaWVsZHMiPjxjb2RlPmNhbGVuZGFyIGZpZWxkczwvY29kZT48L2E+IHN1Y2ggYXMgPGNvZGU+WUVBUjwvY29kZT4sIDxjb2RlPk1PTlRIPC9jb2RlPiwKKyAgICAgIDxjb2RlPkRBWV9PRl9NT05USDwvY29kZT4sIDxjb2RlPkhPVVI8L2NvZGU+LCBhbmQgc28gb24sIGFuZCBmb3IKKyAgICAgIG1hbmlwdWxhdGluZyB0aGUgY2FsZW5kYXIgZmllbGRzLCBzdWNoIGFzIGdldHRpbmcgdGhlIGRhdGUgb2YgdGhlIG5leHQKKyAgICAgIHdlZWsuPC9kaXY+CisgIDwvdGQ+Cis8L3RyPgorPHRyIGNsYXNzPSJyb3dDb2xvciI+CisgIDx0ZCBjbGFzcz0iY29sRmlyc3QiPjxhIGhyZWY9Ii4uLy4uL2phdmEvdXRpbC9Db2xsZWN0aW9ucy5odG1sIiB0aXRsZT0iY2xhc3MgaW4gamF2YS51dGlsIj5Db2xsZWN0aW9uczwvYT48L3RkPgorICA8dGQgY2xhc3M9ImNvbExhc3QiPgorICAgIDxkaXYgY2xhc3M9ImJsb2NrIj5UaGlzIGNsYXNzIGNvbnNpc3RzIGV4Y2x1c2l2ZWx5IG9mIHN0YXRpYyBtZXRob2RzIHRoYXQgb3BlcmF0ZSBvbiBvciByZXR1cm4KKyAgICAgIGNvbGxlY3Rpb25zLjwvZGl2PgorICA8L3RkPgorPC90cj4KKzx0ciBjbGFzcz0iYWx0Q29sb3IiPgorICA8dGQgY2xhc3M9ImNvbEZpcnN0Ij48YSBocmVmPSIuLi8uLi9qYXZhL3V0aWwvQ3VycmVuY3kuaHRtbCIgdGl0bGU9ImNsYXNzIGluIGphdmEudXRpbCI+Q3VycmVuY3k8L2E+PC90ZD4KKyAgPHRkIGNsYXNzPSJjb2xMYXN0Ij4KKyAgICA8ZGl2IGNsYXNzPSJibG9jayI+UmVwcmVzZW50cyBhIGN1cnJlbmN5LjwvZGl2PgorICA8L3RkPgorPC90cj4KKzx0ciBjbGFzcz0icm93Q29sb3IiPgorICA8dGQgY2xhc3M9ImNvbEZpcnN0Ij48YSBocmVmPSIuLi8uLi9qYXZhL3V0aWwvRGF0ZS5odG1sIiB0aXRsZT0iY2xhc3MgaW4gamF2YS51dGlsIj5EYXRlPC9hPjwvdGQ+CisgIDx0ZCBjbGFzcz0iY29sTGFzdCI+CisgICAgPGRpdiBjbGFzcz0iYmxvY2siPlRoZSBjbGFzcyA8Y29kZT5EYXRlPC9jb2RlPiByZXByZXNlbnRzIGEgc3BlY2lmaWMgaW5zdGFudAorICAgICAgaW4gdGltZSwgd2l0aCBtaWxsaXNlY29uZCBwcmVjaXNpb24uPC9kaXY+CisgIDwvdGQ+Cis8L3RyPgorPHRyIGNsYXNzPSJhbHRDb2xvciI+CisgIDx0ZCBjbGFzcz0iY29sRmlyc3QiPjxhIGhyZWY9Ii4uLy4uL2phdmEvdXRpbC9EaWN0aW9uYXJ5Lmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBqYXZhLnV0aWwiPkRpY3Rpb25hcnk8L2E+Jmx0O0ssViZndDs8L3RkPgorICA8dGQgY2xhc3M9ImNvbExhc3QiPgorICAgIDxkaXYgY2xhc3M9ImJsb2NrIj5UaGUgPGNvZGU+RGljdGlvbmFyeTwvY29kZT4gY2xhc3MgaXMgdGhlIGFic3RyYWN0IHBhcmVudCBvZiBhbnkKKyAgICAgIGNsYXNzLCBzdWNoIGFzIDxjb2RlPkhhc2h0YWJsZTwvY29kZT4sIHdoaWNoIG1hcHMga2V5cyB0byB2YWx1ZXMuPC9kaXY+CisgIDwvdGQ+Cis8L3RyPgorPHRyIGNsYXNzPSJyb3dDb2xvciI+CisgIDx0ZCBjbGFzcz0iY29sRmlyc3QiPjxhIGhyZWY9Ii4uLy4uL2phdmEvdXRpbC9FbnVtTWFwLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBqYXZhLnV0aWwiPkVudW1NYXA8L2E+Jmx0O0sgZXh0ZW5kcyA8YSBocmVmPSIuLi8uLi9qYXZhL2xhbmcvRW51bS5odG1sIiB0aXRsZT0iY2xhc3MgaW4gamF2YS5sYW5nIj5FbnVtPC9hPiZsdDtLJmd0OyxWJmd0OzwvdGQ+CisgIDx0ZCBjbGFzcz0iY29sTGFzdCI+CisgICAgPGRpdiBjbGFzcz0iYmxvY2siPkEgc3BlY2lhbGl6ZWQgPGEgaHJlZj0iLi4vLi4vamF2YS91dGlsL01hcC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIGphdmEudXRpbCI+PGNvZGU+TWFwPC9jb2RlPjwvYT4gaW1wbGVtZW50YXRpb24gZm9yIHVzZSB3aXRoIGVudW0gdHlwZSBrZXlzLjwvZGl2PgorICA8L3RkPgorPC90cj4KKzx0ciBjbGFzcz0iYWx0Q29sb3IiPgorICA8dGQgY2xhc3M9ImNvbEZpcnN0Ij48YSBocmVmPSIuLi8uLi9qYXZhL3V0aWwvRW51bVNldC5odG1sIiB0aXRsZT0iY2xhc3MgaW4gamF2YS51dGlsIj5FbnVtU2V0PC9hPiZsdDtFIGV4dGVuZHMgPGEgaHJlZj0iLi4vLi4vamF2YS9sYW5nL0VudW0uaHRtbCIgdGl0bGU9ImNsYXNzIGluIGphdmEubGFuZyI+RW51bTwvYT4mbHQ7RSZndDsmZ3Q7PC90ZD4KKyAgPHRkIGNsYXNzPSJjb2xMYXN0Ij4KKyAgICA8ZGl2IGNsYXNzPSJibG9jayI+QSBzcGVjaWFsaXplZCA8YSBocmVmPSIuLi8uLi9qYXZhL3V0aWwvU2V0Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gamF2YS51dGlsIj48Y29kZT5TZXQ8L2NvZGU+PC9hPiBpbXBsZW1lbnRhdGlvbiBmb3IgdXNlIHdpdGggZW51bSB0eXBlcy48L2Rpdj4KKyAgPC90ZD4KKzwvdHI+Cis8dHIgY2xhc3M9InJvd0NvbG9yIj4KKyAgPHRkIGNsYXNzPSJjb2xGaXJzdCI+PGEgaHJlZj0iLi4vLi4vamF2YS91dGlsL0V2ZW50TGlzdGVuZXJQcm94eS5odG1sIiB0aXRsZT0iY2xhc3MgaW4gamF2YS51dGlsIj5FdmVudExpc3RlbmVyUHJveHk8L2E+Jmx0O1QgZXh0ZW5kcyA8YSBocmVmPSIuLi8uLi9qYXZhL3V0aWwvRXZlbnRMaXN0ZW5lci5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIGphdmEudXRpbCI+RXZlbnRMaXN0ZW5lcjwvYT4mZ3Q7PC90ZD4KKyAgPHRkIGNsYXNzPSJjb2xMYXN0Ij4KKyAgICA8ZGl2IGNsYXNzPSJibG9jayI+QW4gYWJzdHJhY3Qgd3JhcHBlciBjbGFzcyBmb3IgYW4gPGNvZGU+RXZlbnRMaXN0ZW5lcjwvY29kZT4gY2xhc3MKKyAgICAgIHdoaWNoIGFzc29jaWF0ZXMgYSBzZXQgb2YgYWRkaXRpb25hbCBwYXJhbWV0ZXJzIHdpdGggdGhlIGxpc3RlbmVyLjwvZGl2PgorICA8L3RkPgorPC90cj4KKzx0ciBjbGFzcz0iYWx0Q29sb3IiPgorICA8dGQgY2xhc3M9ImNvbEZpcnN0Ij48YSBocmVmPSIuLi8uLi9qYXZhL3V0aWwvRXZlbnRPYmplY3QuaHRtbCIgdGl0bGU9ImNsYXNzIGluIGphdmEudXRpbCI+RXZlbnRPYmplY3Q8L2E+PC90ZD4KKyAgPHRkIGNsYXNzPSJjb2xMYXN0Ij4KKyAgICA8ZGl2IGNsYXNzPSJibG9jayI+CisgICAgICBUaGUgcm9vdCBjbGFzcyBmcm9tIHdoaWNoIGFsbCBldmVudCBzdGF0ZSBvYmplY3RzIHNoYWxsIGJlIGRlcml2ZWQuPC9kaXY+CisgIDwvdGQ+Cis8L3RyPgorPHRyIGNsYXNzPSJyb3dDb2xvciI+CisgIDx0ZCBjbGFzcz0iY29sRmlyc3QiPjxhIGhyZWY9Ii4uLy4uL2phdmEvdXRpbC9Gb3JtYXR0YWJsZUZsYWdzLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBqYXZhLnV0aWwiPkZvcm1hdHRhYmxlRmxhZ3M8L2E+PC90ZD4KKyAgPHRkIGNsYXNzPSJjb2xMYXN0Ij4KKyAgICA8ZGl2IGNsYXNzPSJibG9jayI+Rm9tYXR0YWJsZUZsYWdzIGFyZSBwYXNzZWQgdG8gdGhlIDxhIGhyZWY9Ii4uLy4uL2phdmEvdXRpbC9Gb3JtYXR0YWJsZS5odG1sI2Zvcm1hdFRvKGphdmEudXRpbC5Gb3JtYXR0ZXIsIGludCwgaW50LCBpbnQpIj48Y29kZT5Gb3JtYXR0YWJsZS5mb3JtYXRUbygpPC9jb2RlPjwvYT4gbWV0aG9kIGFuZCBtb2RpZnkgdGhlIG91dHB1dCBmb3JtYXQgZm9yIDxhIGhyZWY9Ii4uLy4uL2phdmEvdXRpbC9Gb3JtYXR0YWJsZS5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIGphdmEudXRpbCI+Rm9ybWF0dGFibGVzPC9hPi48L2Rpdj4KKyAgPC90ZD4KKzwvdHI+Cis8dHIgY2xhc3M9ImFsdENvbG9yIj4KKyAgPHRkIGNsYXNzPSJjb2xGaXJzdCI+PGEgaHJlZj0iLi4vLi4vamF2YS91dGlsL0Zvcm1hdHRlci5odG1sIiB0aXRsZT0iY2xhc3MgaW4gamF2YS51dGlsIj5Gb3JtYXR0ZXI8L2E+PC90ZD4KKyAgPHRkIGNsYXNzPSJjb2xMYXN0Ij4KKyAgICA8ZGl2IGNsYXNzPSJibG9jayI+QW4gaW50ZXJwcmV0ZXIgZm9yIHByaW50Zi1zdHlsZSBmb3JtYXQgc3RyaW5ncy48L2Rpdj4KKyAgPC90ZD4KKzwvdHI+Cis8dHIgY2xhc3M9InJvd0NvbG9yIj4KKyAgPHRkIGNsYXNzPSJjb2xGaXJzdCI+PGEgaHJlZj0iLi4vLi4vamF2YS91dGlsL0dyZWdvcmlhbkNhbGVuZGFyLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBqYXZhLnV0aWwiPkdyZWdvcmlhbkNhbGVuZGFyPC9hPjwvdGQ+CisgIDx0ZCBjbGFzcz0iY29sTGFzdCI+CisgICAgPGRpdiBjbGFzcz0iYmxvY2siPjxjb2RlPkdyZWdvcmlhbkNhbGVuZGFyPC9jb2RlPiBpcyBhIGNvbmNyZXRlIHN1YmNsYXNzIG9mCisgICAgICA8Y29kZT5DYWxlbmRhcjwvY29kZT4gYW5kIHByb3ZpZGVzIHRoZSBzdGFuZGFyZCBjYWxlbmRhciBzeXN0ZW0KKyAgICAgIHVzZWQgYnkgbW9zdCBvZiB0aGUgd29ybGQuPC9kaXY+CisgIDwvdGQ+Cis8L3RyPgorPHRyIGNsYXNzPSJhbHRDb2xvciI+CisgIDx0ZCBjbGFzcz0iY29sRmlyc3QiPjxhIGhyZWY9Ii4uLy4uL2phdmEvdXRpbC9IYXNoTWFwLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBqYXZhLnV0aWwiPkhhc2hNYXA8L2E+Jmx0O0ssViZndDs8L3RkPgorICA8dGQgY2xhc3M9ImNvbExhc3QiPgorICAgIDxkaXYgY2xhc3M9ImJsb2NrIj5IYXNoIHRhYmxlIGJhc2VkIGltcGxlbWVudGF0aW9uIG9mIHRoZSA8dHQ+TWFwPC90dD4gaW50ZXJmYWNlLjwvZGl2PgorICA8L3RkPgorPC90cj4KKzx0ciBjbGFzcz0icm93Q29sb3IiPgorICA8dGQgY2xhc3M9ImNvbEZpcnN0Ij48YSBocmVmPSIuLi8uLi9qYXZhL3V0aWwvSGFzaFNldC5odG1sIiB0aXRsZT0iY2xhc3MgaW4gamF2YS51dGlsIj5IYXNoU2V0PC9hPiZsdDtFJmd0OzwvdGQ+CisgIDx0ZCBjbGFzcz0iY29sTGFzdCI+CisgICAgPGRpdiBjbGFzcz0iYmxvY2siPlRoaXMgY2xhc3MgaW1wbGVtZW50cyB0aGUgPHR0PlNldDwvdHQ+IGludGVyZmFjZSwgYmFja2VkIGJ5IGEgaGFzaCB0YWJsZQorICAgICAgKGFjdHVhbGx5IGEgPHR0Pkhhc2hNYXA8L3R0PiBpbnN0YW5jZSkuPC9kaXY+CisgIDwvdGQ+Cis8L3RyPgorPHRyIGNsYXNzPSJhbHRDb2xvciI+CisgIDx0ZCBjbGFzcz0iY29sRmlyc3QiPjxhIGhyZWY9Ii4uLy4uL2phdmEvdXRpbC9IYXNodGFibGUuaHRtbCIgdGl0bGU9ImNsYXNzIGluIGphdmEudXRpbCI+SGFzaHRhYmxlPC9hPiZsdDtLLFYmZ3Q7PC90ZD4KKyAgPHRkIGNsYXNzPSJjb2xMYXN0Ij4KKyAgICA8ZGl2IGNsYXNzPSJibG9jayI+VGhpcyBjbGFzcyBpbXBsZW1lbnRzIGEgaGFzaCB0YWJsZSwgd2hpY2ggbWFwcyBrZXlzIHRvIHZhbHVlcy48L2Rpdj4KKyAgPC90ZD4KKzwvdHI+Cis8dHIgY2xhc3M9InJvd0NvbG9yIj4KKyAgPHRkIGNsYXNzPSJjb2xGaXJzdCI+PGEgaHJlZj0iLi4vLi4vamF2YS91dGlsL0lkZW50aXR5SGFzaE1hcC5odG1sIiB0aXRsZT0iY2xhc3MgaW4gamF2YS51dGlsIj5JZGVudGl0eUhhc2hNYXA8L2E+Jmx0O0ssViZndDs8L3RkPgorICA8dGQgY2xhc3M9ImNvbExhc3QiPgorICAgIDxkaXYgY2xhc3M9ImJsb2NrIj5UaGlzIGNsYXNzIGltcGxlbWVudHMgdGhlIDx0dD5NYXA8L3R0PiBpbnRlcmZhY2Ugd2l0aCBhIGhhc2ggdGFibGUsIHVzaW5nCisgICAgICByZWZlcmVuY2UtZXF1YWxpdHkgaW4gcGxhY2Ugb2Ygb2JqZWN0LWVxdWFsaXR5IHdoZW4gY29tcGFyaW5nIGtleXMgKGFuZAorICAgICAgdmFsdWVzKS48L2Rpdj4KKyAgPC90ZD4KKzwvdHI+Cis8dHIgY2xhc3M9ImFsdENvbG9yIj4KKyAgPHRkIGNsYXNzPSJjb2xGaXJzdCI+PGEgaHJlZj0iLi4vLi4vamF2YS91dGlsL0xpbmtlZEhhc2hNYXAuaHRtbCIgdGl0bGU9ImNsYXNzIGluIGphdmEudXRpbCI+TGlua2VkSGFzaE1hcDwvYT4mbHQ7SyxWJmd0OzwvdGQ+CisgIDx0ZCBjbGFzcz0iY29sTGFzdCI+CisgICAgPGRpdiBjbGFzcz0iYmxvY2siPkhhc2ggdGFibGUgYW5kIGxpbmtlZCBsaXN0IGltcGxlbWVudGF0aW9uIG9mIHRoZSA8dHQ+TWFwPC90dD4gaW50ZXJmYWNlLAorICAgICAgd2l0aCBwcmVkaWN0YWJsZSBpdGVyYXRpb24gb3JkZXIuPC9kaXY+CisgIDwvdGQ+Cis8L3RyPgorPHRyIGNsYXNzPSJyb3dDb2xvciI+CisgIDx0ZCBjbGFzcz0iY29sRmlyc3QiPjxhIGhyZWY9Ii4uLy4uL2phdmEvdXRpbC9MaW5rZWRIYXNoU2V0Lmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBqYXZhLnV0aWwiPkxpbmtlZEhhc2hTZXQ8L2E+Jmx0O0UmZ3Q7PC90ZD4KKyAgPHRkIGNsYXNzPSJjb2xMYXN0Ij4KKyAgICA8ZGl2IGNsYXNzPSJibG9jayI+SGFzaCB0YWJsZSBhbmQgbGlua2VkIGxpc3QgaW1wbGVtZW50YXRpb24gb2YgdGhlIDx0dD5TZXQ8L3R0PiBpbnRlcmZhY2UsCisgICAgICB3aXRoIHByZWRpY3RhYmxlIGl0ZXJhdGlvbiBvcmRlci48L2Rpdj4KKyAgPC90ZD4KKzwvdHI+Cis8dHIgY2xhc3M9ImFsdENvbG9yIj4KKyAgPHRkIGNsYXNzPSJjb2xGaXJzdCI+PGEgaHJlZj0iLi4vLi4vamF2YS91dGlsL0xpbmtlZExpc3QuaHRtbCIgdGl0bGU9ImNsYXNzIGluIGphdmEudXRpbCI+TGlua2VkTGlzdDwvYT4mbHQ7RSZndDs8L3RkPgorICA8dGQgY2xhc3M9ImNvbExhc3QiPgorICAgIDxkaXYgY2xhc3M9ImJsb2NrIj5Eb3VibHktbGlua2VkIGxpc3QgaW1wbGVtZW50YXRpb24gb2YgdGhlIDxjb2RlPkxpc3Q8L2NvZGU+IGFuZCA8Y29kZT5EZXF1ZTwvY29kZT4KKyAgICAgIGludGVyZmFjZXMuPC9kaXY+CisgIDwvdGQ+Cis8L3RyPgorPHRyIGNsYXNzPSJyb3dDb2xvciI+CisgIDx0ZCBjbGFzcz0iY29sRmlyc3QiPjxhIGhyZWY9Ii4uLy4uL2phdmEvdXRpbC9MaXN0UmVzb3VyY2VCdW5kbGUuaHRtbCIgdGl0bGU9ImNsYXNzIGluIGphdmEudXRpbCI+TGlzdFJlc291cmNlQnVuZGxlPC9hPjwvdGQ+CisgIDx0ZCBjbGFzcz0iY29sTGFzdCI+CisgICAgPGRpdiBjbGFzcz0iYmxvY2siPjxjb2RlPkxpc3RSZXNvdXJjZUJ1bmRsZTwvY29kZT4gaXMgYW4gYWJzdHJhY3Qgc3ViY2xhc3Mgb2YKKyAgICAgIDxjb2RlPlJlc291cmNlQnVuZGxlPC9jb2RlPiB0aGF0IG1hbmFnZXMgcmVzb3VyY2VzIGZvciBhIGxvY2FsZQorICAgICAgaW4gYSBjb252ZW5pZW50IGFuZCBlYXN5IHRvIHVzZSBsaXN0LjwvZGl2PgorICA8L3RkPgorPC90cj4KKzx0ciBjbGFzcz0iYWx0Q29sb3IiPgorICA8dGQgY2xhc3M9ImNvbEZpcnN0Ij48YSBocmVmPSIuLi8uLi9qYXZhL3V0aWwvTG9jYWxlLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBqYXZhLnV0aWwiPkxvY2FsZTwvYT48L3RkPgorICA8dGQgY2xhc3M9ImNvbExhc3QiPgorICAgIDxkaXYgY2xhc3M9ImJsb2NrIj5BIDxjb2RlPkxvY2FsZTwvY29kZT4gb2JqZWN0IHJlcHJlc2VudHMgYSBzcGVjaWZpYyBnZW9ncmFwaGljYWwsIHBvbGl0aWNhbCwKKyAgICAgIG9yIGN1bHR1cmFsIHJlZ2lvbi48L2Rpdj4KKyAgPC90ZD4KKzwvdHI+Cis8dHIgY2xhc3M9InJvd0NvbG9yIj4KKyAgPHRkIGNsYXNzPSJjb2xGaXJzdCI+PGEgaHJlZj0iLi4vLi4vamF2YS91dGlsL0xvY2FsZS5CdWlsZGVyLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBqYXZhLnV0aWwiPkxvY2FsZS5CdWlsZGVyPC9hPjwvdGQ+CisgIDx0ZCBjbGFzcz0iY29sTGFzdCI+CisgICAgPGRpdiBjbGFzcz0iYmxvY2siPjxjb2RlPkJ1aWxkZXI8L2NvZGU+IGlzIHVzZWQgdG8gYnVpbGQgaW5zdGFuY2VzIG9mIDxjb2RlPkxvY2FsZTwvY29kZT4KKyAgICAgIGZyb20gdmFsdWVzIGNvbmZpZ3VyZWQgYnkgdGhlIHNldHRlcnMuPC9kaXY+CisgIDwvdGQ+Cis8L3RyPgorPHRyIGNsYXNzPSJhbHRDb2xvciI+CisgIDx0ZCBjbGFzcz0iY29sRmlyc3QiPjxhIGhyZWY9Ii4uLy4uL2phdmEvdXRpbC9PYmplY3RzLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBqYXZhLnV0aWwiPk9iamVjdHM8L2E+PC90ZD4KKyAgPHRkIGNsYXNzPSJjb2xMYXN0Ij4KKyAgICA8ZGl2IGNsYXNzPSJibG9jayI+VGhpcyBjbGFzcyBjb25zaXN0cyBvZiA8Y29kZT5zdGF0aWM8L2NvZGU+IHV0aWxpdHkgbWV0aG9kcyBmb3Igb3BlcmF0aW5nCisgICAgICBvbiBvYmplY3RzLjwvZGl2PgorICA8L3RkPgorPC90cj4KKzx0ciBjbGFzcz0icm93Q29sb3IiPgorICA8dGQgY2xhc3M9ImNvbEZpcnN0Ij48YSBocmVmPSIuLi8uLi9qYXZhL3V0aWwvT2JzZXJ2YWJsZS5odG1sIiB0aXRsZT0iY2xhc3MgaW4gamF2YS51dGlsIj5PYnNlcnZhYmxlPC9hPjwvdGQ+CisgIDx0ZCBjbGFzcz0iY29sTGFzdCI+CisgICAgPGRpdiBjbGFzcz0iYmxvY2siPlRoaXMgY2xhc3MgcmVwcmVzZW50cyBhbiBvYnNlcnZhYmxlIG9iamVjdCwgb3IgImRhdGEiCisgICAgICBpbiB0aGUgbW9kZWwtdmlldyBwYXJhZGlnbS48L2Rpdj4KKyAgPC90ZD4KKzwvdHI+Cis8dHIgY2xhc3M9ImFsdENvbG9yIj4KKyAgPHRkIGNsYXNzPSJjb2xGaXJzdCI+PGEgaHJlZj0iLi4vLi4vamF2YS91dGlsL1ByaW9yaXR5UXVldWUuaHRtbCIgdGl0bGU9ImNsYXNzIGluIGphdmEudXRpbCI+UHJpb3JpdHlRdWV1ZTwvYT4mbHQ7RSZndDs8L3RkPgorICA8dGQgY2xhc3M9ImNvbExhc3QiPgorICAgIDxkaXYgY2xhc3M9ImJsb2NrIj5BbiB1bmJvdW5kZWQgcHJpb3JpdHkgPGEgaHJlZj0iLi4vLi4vamF2YS91dGlsL1F1ZXVlLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gamF2YS51dGlsIj5xdWV1ZTwvYT4gYmFzZWQgb24gYSBwcmlvcml0eSBoZWFwLjwvZGl2PgorICA8L3RkPgorPC90cj4KKzx0ciBjbGFzcz0icm93Q29sb3IiPgorICA8dGQgY2xhc3M9ImNvbEZpcnN0Ij48YSBocmVmPSIuLi8uLi9qYXZhL3V0aWwvUHJvcGVydGllcy5odG1sIiB0aXRsZT0iY2xhc3MgaW4gamF2YS51dGlsIj5Qcm9wZXJ0aWVzPC9hPjwvdGQ+CisgIDx0ZCBjbGFzcz0iY29sTGFzdCI+CisgICAgPGRpdiBjbGFzcz0iYmxvY2siPlRoZSA8Y29kZT5Qcm9wZXJ0aWVzPC9jb2RlPiBjbGFzcyByZXByZXNlbnRzIGEgcGVyc2lzdGVudCBzZXQgb2YKKyAgICAgIHByb3BlcnRpZXMuPC9kaXY+CisgIDwvdGQ+Cis8L3RyPgorPHRyIGNsYXNzPSJhbHRDb2xvciI+CisgIDx0ZCBjbGFzcz0iY29sRmlyc3QiPjxhIGhyZWY9Ii4uLy4uL2phdmEvdXRpbC9Qcm9wZXJ0eVBlcm1pc3Npb24uaHRtbCIgdGl0bGU9ImNsYXNzIGluIGphdmEudXRpbCI+UHJvcGVydHlQZXJtaXNzaW9uPC9hPjwvdGQ+CisgIDx0ZCBjbGFzcz0iY29sTGFzdCI+CisgICAgPGRpdiBjbGFzcz0iYmxvY2siPlRoaXMgY2xhc3MgaXMgZm9yIHByb3BlcnR5IHBlcm1pc3Npb25zLjwvZGl2PgorICA8L3RkPgorPC90cj4KKzx0ciBjbGFzcz0icm93Q29sb3IiPgorICA8dGQgY2xhc3M9ImNvbEZpcnN0Ij48YSBocmVmPSIuLi8uLi9qYXZhL3V0aWwvUHJvcGVydHlSZXNvdXJjZUJ1bmRsZS5odG1sIiB0aXRsZT0iY2xhc3MgaW4gamF2YS51dGlsIj5Qcm9wZXJ0eVJlc291cmNlQnVuZGxlPC9hPjwvdGQ+CisgIDx0ZCBjbGFzcz0iY29sTGFzdCI+CisgICAgPGRpdiBjbGFzcz0iYmxvY2siPjxjb2RlPlByb3BlcnR5UmVzb3VyY2VCdW5kbGU8L2NvZGU+IGlzIGEgY29uY3JldGUgc3ViY2xhc3Mgb2YKKyAgICAgIDxjb2RlPlJlc291cmNlQnVuZGxlPC9jb2RlPiB0aGF0IG1hbmFnZXMgcmVzb3VyY2VzIGZvciBhIGxvY2FsZQorICAgICAgdXNpbmcgYSBzZXQgb2Ygc3RhdGljIHN0cmluZ3MgZnJvbSBhIHByb3BlcnR5IGZpbGUuPC9kaXY+CisgIDwvdGQ+Cis8L3RyPgorPHRyIGNsYXNzPSJhbHRDb2xvciI+CisgIDx0ZCBjbGFzcz0iY29sRmlyc3QiPjxhIGhyZWY9Ii4uLy4uL2phdmEvdXRpbC9SYW5kb20uaHRtbCIgdGl0bGU9ImNsYXNzIGluIGphdmEudXRpbCI+UmFuZG9tPC9hPjwvdGQ+CisgIDx0ZCBjbGFzcz0iY29sTGFzdCI+CisgICAgPGRpdiBjbGFzcz0iYmxvY2siPkFuIGluc3RhbmNlIG9mIHRoaXMgY2xhc3MgaXMgdXNlZCB0byBnZW5lcmF0ZSBhIHN0cmVhbSBvZgorICAgICAgcHNldWRvcmFuZG9tIG51bWJlcnMuPC9kaXY+CisgIDwvdGQ+Cis8L3RyPgorPHRyIGNsYXNzPSJyb3dDb2xvciI+CisgIDx0ZCBjbGFzcz0iY29sRmlyc3QiPjxhIGhyZWY9Ii4uLy4uL2phdmEvdXRpbC9SZXNvdXJjZUJ1bmRsZS5odG1sIiB0aXRsZT0iY2xhc3MgaW4gamF2YS51dGlsIj5SZXNvdXJjZUJ1bmRsZTwvYT48L3RkPgorICA8dGQgY2xhc3M9ImNvbExhc3QiPgorICAgIDxkaXYgY2xhc3M9ImJsb2NrIj5SZXNvdXJjZSBidW5kbGVzIGNvbnRhaW4gbG9jYWxlLXNwZWNpZmljIG9iamVjdHMuPC9kaXY+CisgIDwvdGQ+Cis8L3RyPgorPHRyIGNsYXNzPSJhbHRDb2xvciI+CisgIDx0ZCBjbGFzcz0iY29sRmlyc3QiPjxhIGhyZWY9Ii4uLy4uL2phdmEvdXRpbC9SZXNvdXJjZUJ1bmRsZS5Db250cm9sLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBqYXZhLnV0aWwiPlJlc291cmNlQnVuZGxlLkNvbnRyb2w8L2E+PC90ZD4KKyAgPHRkIGNsYXNzPSJjb2xMYXN0Ij4KKyAgICA8ZGl2IGNsYXNzPSJibG9jayI+PGNvZGU+UmVzb3VyY2VCdW5kbGUuQ29udHJvbDwvY29kZT4gZGVmaW5lcyBhIHNldCBvZiBjYWxsYmFjayBtZXRob2RzCisgICAgICB0aGF0IGFyZSBpbnZva2VkIGJ5IHRoZSA8YSBocmVmPSIuLi8uLi9qYXZhL3V0aWwvUmVzb3VyY2VCdW5kbGUuaHRtbCNnZXRCdW5kbGUoamF2YS5sYW5nLlN0cmluZywgamF2YS51dGlsLkxvY2FsZSwgamF2YS5sYW5nLkNsYXNzTG9hZGVyLCBqYXZhLnV0aWwuUmVzb3VyY2VCdW5kbGUuQ29udHJvbCkiPjxjb2RlPlJlc291cmNlQnVuZGxlLmdldEJ1bmRsZTwvY29kZT48L2E+IGZhY3RvcnkKKyAgICAgIG1ldGhvZHMgZHVyaW5nIHRoZSBidW5kbGUgbG9hZGluZyBwcm9jZXNzLjwvZGl2PgorICA8L3RkPgorPC90cj4KKzx0ciBjbGFzcz0icm93Q29sb3IiPgorICA8dGQgY2xhc3M9ImNvbEZpcnN0Ij48YSBocmVmPSIuLi8uLi9qYXZhL3V0aWwvU2Nhbm5lci5odG1sIiB0aXRsZT0iY2xhc3MgaW4gamF2YS51dGlsIj5TY2FubmVyPC9hPjwvdGQ+CisgIDx0ZCBjbGFzcz0iY29sTGFzdCI+CisgICAgPGRpdiBjbGFzcz0iYmxvY2siPkEgc2ltcGxlIHRleHQgc2Nhbm5lciB3aGljaCBjYW4gcGFyc2UgcHJpbWl0aXZlIHR5cGVzIGFuZCBzdHJpbmdzIHVzaW5nCisgICAgICByZWd1bGFyIGV4cHJlc3Npb25zLjwvZGl2PgorICA8L3RkPgorPC90cj4KKzx0ciBjbGFzcz0iYWx0Q29sb3IiPgorICA8dGQgY2xhc3M9ImNvbEZpcnN0Ij48YSBocmVmPSIuLi8uLi9qYXZhL3V0aWwvU2VydmljZUxvYWRlci5odG1sIiB0aXRsZT0iY2xhc3MgaW4gamF2YS51dGlsIj5TZXJ2aWNlTG9hZGVyPC9hPiZsdDtTJmd0OzwvdGQ+CisgIDx0ZCBjbGFzcz0iY29sTGFzdCI+CisgICAgPGRpdiBjbGFzcz0iYmxvY2siPkEgc2ltcGxlIHNlcnZpY2UtcHJvdmlkZXIgbG9hZGluZyBmYWNpbGl0eS48L2Rpdj4KKyAgPC90ZD4KKzwvdHI+Cis8dHIgY2xhc3M9InJvd0NvbG9yIj4KKyAgPHRkIGNsYXNzPSJjb2xGaXJzdCI+PGEgaHJlZj0iLi4vLi4vamF2YS91dGlsL1NpbXBsZVRpbWVab25lLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBqYXZhLnV0aWwiPlNpbXBsZVRpbWVab25lPC9hPjwvdGQ+CisgIDx0ZCBjbGFzcz0iY29sTGFzdCI+CisgICAgPGRpdiBjbGFzcz0iYmxvY2siPjxjb2RlPlNpbXBsZVRpbWVab25lPC9jb2RlPiBpcyBhIGNvbmNyZXRlIHN1YmNsYXNzIG9mIDxjb2RlPlRpbWVab25lPC9jb2RlPgorICAgICAgdGhhdCByZXByZXNlbnRzIGEgdGltZSB6b25lIGZvciB1c2Ugd2l0aCBhIEdyZWdvcmlhbiBjYWxlbmRhci48L2Rpdj4KKyAgPC90ZD4KKzwvdHI+Cis8dHIgY2xhc3M9ImFsdENvbG9yIj4KKyAgPHRkIGNsYXNzPSJjb2xGaXJzdCI+PGEgaHJlZj0iLi4vLi4vamF2YS91dGlsL1N0YWNrLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBqYXZhLnV0aWwiPlN0YWNrPC9hPiZsdDtFJmd0OzwvdGQ+CisgIDx0ZCBjbGFzcz0iY29sTGFzdCI+CisgICAgPGRpdiBjbGFzcz0iYmxvY2siPlRoZSA8Y29kZT5TdGFjazwvY29kZT4gY2xhc3MgcmVwcmVzZW50cyBhIGxhc3QtaW4tZmlyc3Qtb3V0CisgICAgICAoTElGTykgc3RhY2sgb2Ygb2JqZWN0cy48L2Rpdj4KKyAgPC90ZD4KKzwvdHI+Cis8dHIgY2xhc3M9InJvd0NvbG9yIj4KKyAgPHRkIGNsYXNzPSJjb2xGaXJzdCI+PGEgaHJlZj0iLi4vLi4vamF2YS91dGlsL1N0cmluZ1Rva2VuaXplci5odG1sIiB0aXRsZT0iY2xhc3MgaW4gamF2YS51dGlsIj5TdHJpbmdUb2tlbml6ZXI8L2E+PC90ZD4KKyAgPHRkIGNsYXNzPSJjb2xMYXN0Ij4KKyAgICA8ZGl2IGNsYXNzPSJibG9jayI+VGhlIHN0cmluZyB0b2tlbml6ZXIgY2xhc3MgYWxsb3dzIGFuIGFwcGxpY2F0aW9uIHRvIGJyZWFrIGEKKyAgICAgIHN0cmluZyBpbnRvIHRva2Vucy48L2Rpdj4KKyAgPC90ZD4KKzwvdHI+Cis8dHIgY2xhc3M9ImFsdENvbG9yIj4KKyAgPHRkIGNsYXNzPSJjb2xGaXJzdCI+PGEgaHJlZj0iLi4vLi4vamF2YS91dGlsL1RpbWVyLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBqYXZhLnV0aWwiPlRpbWVyPC9hPjwvdGQ+CisgIDx0ZCBjbGFzcz0iY29sTGFzdCI+CisgICAgPGRpdiBjbGFzcz0iYmxvY2siPkEgZmFjaWxpdHkgZm9yIHRocmVhZHMgdG8gc2NoZWR1bGUgdGFza3MgZm9yIGZ1dHVyZSBleGVjdXRpb24gaW4gYQorICAgICAgYmFja2dyb3VuZCB0aHJlYWQuPC9kaXY+CisgIDwvdGQ+Cis8L3RyPgorPHRyIGNsYXNzPSJyb3dDb2xvciI+CisgIDx0ZCBjbGFzcz0iY29sRmlyc3QiPjxhIGhyZWY9Ii4uLy4uL2phdmEvdXRpbC9UaW1lclRhc2suaHRtbCIgdGl0bGU9ImNsYXNzIGluIGphdmEudXRpbCI+VGltZXJUYXNrPC9hPjwvdGQ+CisgIDx0ZCBjbGFzcz0iY29sTGFzdCI+CisgICAgPGRpdiBjbGFzcz0iYmxvY2siPkEgdGFzayB0aGF0IGNhbiBiZSBzY2hlZHVsZWQgZm9yIG9uZS10aW1lIG9yIHJlcGVhdGVkIGV4ZWN1dGlvbiBieSBhIFRpbWVyLjwvZGl2PgorICA8L3RkPgorPC90cj4KKzx0ciBjbGFzcz0iYWx0Q29sb3IiPgorICA8dGQgY2xhc3M9ImNvbEZpcnN0Ij48YSBocmVmPSIuLi8uLi9qYXZhL3V0aWwvVGltZVpvbmUuaHRtbCIgdGl0bGU9ImNsYXNzIGluIGphdmEudXRpbCI+VGltZVpvbmU8L2E+PC90ZD4KKyAgPHRkIGNsYXNzPSJjb2xMYXN0Ij4KKyAgICA8ZGl2IGNsYXNzPSJibG9jayI+PGNvZGU+VGltZVpvbmU8L2NvZGU+IHJlcHJlc2VudHMgYSB0aW1lIHpvbmUgb2Zmc2V0LCBhbmQgYWxzbyBmaWd1cmVzIG91dCBkYXlsaWdodAorICAgICAgc2F2aW5ncy48L2Rpdj4KKyAgPC90ZD4KKzwvdHI+Cis8dHIgY2xhc3M9InJvd0NvbG9yIj4KKyAgPHRkIGNsYXNzPSJjb2xGaXJzdCI+PGEgaHJlZj0iLi4vLi4vamF2YS91dGlsL1RyZWVNYXAuaHRtbCIgdGl0bGU9ImNsYXNzIGluIGphdmEudXRpbCI+VHJlZU1hcDwvYT4mbHQ7SyxWJmd0OzwvdGQ+CisgIDx0ZCBjbGFzcz0iY29sTGFzdCI+CisgICAgPGRpdiBjbGFzcz0iYmxvY2siPkEgUmVkLUJsYWNrIHRyZWUgYmFzZWQgPGEgaHJlZj0iLi4vLi4vamF2YS91dGlsL05hdmlnYWJsZU1hcC5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIGphdmEudXRpbCI+PGNvZGU+TmF2aWdhYmxlTWFwPC9jb2RlPjwvYT4gaW1wbGVtZW50YXRpb24uPC9kaXY+CisgIDwvdGQ+Cis8L3RyPgorPHRyIGNsYXNzPSJhbHRDb2xvciI+CisgIDx0ZCBjbGFzcz0iY29sRmlyc3QiPjxhIGhyZWY9Ii4uLy4uL2phdmEvdXRpbC9UcmVlU2V0Lmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBqYXZhLnV0aWwiPlRyZWVTZXQ8L2E+Jmx0O0UmZ3Q7PC90ZD4KKyAgPHRkIGNsYXNzPSJjb2xMYXN0Ij4KKyAgICA8ZGl2IGNsYXNzPSJibG9jayI+QSA8YSBocmVmPSIuLi8uLi9qYXZhL3V0aWwvTmF2aWdhYmxlU2V0Lmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gamF2YS51dGlsIj48Y29kZT5OYXZpZ2FibGVTZXQ8L2NvZGU+PC9hPiBpbXBsZW1lbnRhdGlvbiBiYXNlZCBvbiBhIDxhIGhyZWY9Ii4uLy4uL2phdmEvdXRpbC9UcmVlTWFwLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBqYXZhLnV0aWwiPjxjb2RlPlRyZWVNYXA8L2NvZGU+PC9hPi48L2Rpdj4KKyAgPC90ZD4KKzwvdHI+Cis8dHIgY2xhc3M9InJvd0NvbG9yIj4KKyAgPHRkIGNsYXNzPSJjb2xGaXJzdCI+PGEgaHJlZj0iLi4vLi4vamF2YS91dGlsL1VVSUQuaHRtbCIgdGl0bGU9ImNsYXNzIGluIGphdmEudXRpbCI+VVVJRDwvYT48L3RkPgorICA8dGQgY2xhc3M9ImNvbExhc3QiPgorICAgIDxkaXYgY2xhc3M9ImJsb2NrIj5BIGNsYXNzIHRoYXQgcmVwcmVzZW50cyBhbiBpbW11dGFibGUgdW5pdmVyc2FsbHkgdW5pcXVlIGlkZW50aWZpZXIgKFVVSUQpLjwvZGl2PgorICA8L3RkPgorPC90cj4KKzx0ciBjbGFzcz0iYWx0Q29sb3IiPgorICA8dGQgY2xhc3M9ImNvbEZpcnN0Ij48YSBocmVmPSIuLi8uLi9qYXZhL3V0aWwvVmVjdG9yLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBqYXZhLnV0aWwiPlZlY3RvcjwvYT4mbHQ7RSZndDs8L3RkPgorICA8dGQgY2xhc3M9ImNvbExhc3QiPgorICAgIDxkaXYgY2xhc3M9ImJsb2NrIj5UaGUgPGNvZGU+VmVjdG9yPC9jb2RlPiBjbGFzcyBpbXBsZW1lbnRzIGEgZ3Jvd2FibGUgYXJyYXkgb2YKKyAgICAgIG9iamVjdHMuPC9kaXY+CisgIDwvdGQ+Cis8L3RyPgorPHRyIGNsYXNzPSJyb3dDb2xvciI+CisgIDx0ZCBjbGFzcz0iY29sRmlyc3QiPjxhIGhyZWY9Ii4uLy4uL2phdmEvdXRpbC9XZWFrSGFzaE1hcC5odG1sIiB0aXRsZT0iY2xhc3MgaW4gamF2YS51dGlsIj5XZWFrSGFzaE1hcDwvYT4mbHQ7SyxWJmd0OzwvdGQ+CisgIDx0ZCBjbGFzcz0iY29sTGFzdCI+CisgICAgPGRpdiBjbGFzcz0iYmxvY2siPkhhc2ggdGFibGUgYmFzZWQgaW1wbGVtZW50YXRpb24gb2YgdGhlIDx0dD5NYXA8L3R0PiBpbnRlcmZhY2UsIHdpdGgKKyAgICAgIDxlbT53ZWFrIGtleXM8L2VtPi48L2Rpdj4KKyAgPC90ZD4KKzwvdHI+Cis8L3Rib2R5PgorPC90YWJsZT4KKzwvbGk+Cis8bGkgY2xhc3M9ImJsb2NrTGlzdCI+CisgIDx0YWJsZSBjbGFzcz0icGFja2FnZVN1bW1hcnkiIGJvcmRlcj0iMCIgY2VsbHBhZGRpbmc9IjMiIGNlbGxzcGFjaW5nPSIwIiBzdW1tYXJ5PSJFbnVtIFN1bW1hcnkgdGFibGUsIGxpc3RpbmcgZW51bXMsIGFuZCBhbiBleHBsYW5hdGlvbiI+CisgICAgPGNhcHRpb24+PHNwYW4+RW51bSBTdW1tYXJ5PC9zcGFuPjxzcGFuIGNsYXNzPSJ0YWJFbmQiPiZuYnNwOzwvc3Bhbj48L2NhcHRpb24+CisgICAgPHRyPgorICAgICAgPHRoIGNsYXNzPSJjb2xGaXJzdCIgc2NvcGU9ImNvbCI+RW51bTwvdGg+CisgICAgICA8dGggY2xhc3M9ImNvbExhc3QiIHNjb3BlPSJjb2wiPkRlc2NyaXB0aW9uPC90aD4KKyAgICA8L3RyPgorICAgIDx0Ym9keT4KKyAgICA8dHIgY2xhc3M9ImFsdENvbG9yIj4KKyAgICAgIDx0ZCBjbGFzcz0iY29sRmlyc3QiPjxhIGhyZWY9Ii4uLy4uL2phdmEvdXRpbC9Gb3JtYXR0ZXIuQmlnRGVjaW1hbExheW91dEZvcm0uaHRtbCIgdGl0bGU9ImVudW0gaW4gamF2YS51dGlsIj5Gb3JtYXR0ZXIuQmlnRGVjaW1hbExheW91dEZvcm08L2E+PC90ZD4KKyAgICAgIDx0ZCBjbGFzcz0iY29sTGFzdCI+Jm5ic3A7PC90ZD4KKyAgICA8L3RyPgorICAgIDx0ciBjbGFzcz0icm93Q29sb3IiPgorICAgICAgPHRkIGNsYXNzPSJjb2xGaXJzdCI+PGEgaHJlZj0iLi4vLi4vamF2YS91dGlsL0xvY2FsZS5DYXRlZ29yeS5odG1sIiB0aXRsZT0iZW51bSBpbiBqYXZhLnV0aWwiPkxvY2FsZS5DYXRlZ29yeTwvYT48L3RkPgorICAgICAgPHRkIGNsYXNzPSJjb2xMYXN0Ij4KKyAgICAgICAgPGRpdiBjbGFzcz0iYmxvY2siPkVudW0gZm9yIGxvY2FsZSBjYXRlZ29yaWVzLjwvZGl2PgorICAgICAgPC90ZD4KKyAgICA8L3RyPgorICAgIDwvdGJvZHk+CisgIDwvdGFibGU+Cis8L2xpPgorPGxpIGNsYXNzPSJibG9ja0xpc3QiPgorICA8dGFibGUgY2xhc3M9InBhY2thZ2VTdW1tYXJ5IiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIzIiBjZWxsc3BhY2luZz0iMCIgc3VtbWFyeT0iRXhjZXB0aW9uIFN1bW1hcnkgdGFibGUsIGxpc3RpbmcgZXhjZXB0aW9ucywgYW5kIGFuIGV4cGxhbmF0aW9uIj4KKyAgICA8Y2FwdGlvbj48c3Bhbj5FeGNlcHRpb24gU3VtbWFyeTwvc3Bhbj48c3BhbiBjbGFzcz0idGFiRW5kIj4mbmJzcDs8L3NwYW4+PC9jYXB0aW9uPgorICAgIDx0cj4KKyAgICAgIDx0aCBjbGFzcz0iY29sRmlyc3QiIHNjb3BlPSJjb2wiPkV4Y2VwdGlvbjwvdGg+CisgICAgICA8dGggY2xhc3M9ImNvbExhc3QiIHNjb3BlPSJjb2wiPkRlc2NyaXB0aW9uPC90aD4KKyAgICA8L3RyPgorICAgIDx0Ym9keT4KKyAgICA8dHIgY2xhc3M9ImFsdENvbG9yIj4KKyAgICAgIDx0ZCBjbGFzcz0iY29sRmlyc3QiPjxhIGhyZWY9Ii4uLy4uL2phdmEvdXRpbC9Db25jdXJyZW50TW9kaWZpY2F0aW9uRXhjZXB0aW9uLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBqYXZhLnV0aWwiPkNvbmN1cnJlbnRNb2RpZmljYXRpb25FeGNlcHRpb248L2E+PC90ZD4KKyAgICAgIDx0ZCBjbGFzcz0iY29sTGFzdCI+CisgICAgICAgIDxkaXYgY2xhc3M9ImJsb2NrIj5UaGlzIGV4Y2VwdGlvbiBtYXkgYmUgdGhyb3duIGJ5IG1ldGhvZHMgdGhhdCBoYXZlIGRldGVjdGVkIGNvbmN1cnJlbnQKKyAgICAgICAgICBtb2RpZmljYXRpb24gb2YgYW4gb2JqZWN0IHdoZW4gc3VjaCBtb2RpZmljYXRpb24gaXMgbm90IHBlcm1pc3NpYmxlLjwvZGl2PgorICAgICAgPC90ZD4KKyAgICA8L3RyPgorICAgIDx0ciBjbGFzcz0icm93Q29sb3IiPgorICAgICAgPHRkIGNsYXNzPSJjb2xGaXJzdCI+PGEgaHJlZj0iLi4vLi4vamF2YS91dGlsL0R1cGxpY2F0ZUZvcm1hdEZsYWdzRXhjZXB0aW9uLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBqYXZhLnV0aWwiPkR1cGxpY2F0ZUZvcm1hdEZsYWdzRXhjZXB0aW9uPC9hPjwvdGQ+CisgICAgICA8dGQgY2xhc3M9ImNvbExhc3QiPgorICAgICAgICA8ZGl2IGNsYXNzPSJibG9jayI+VW5jaGVja2VkIGV4Y2VwdGlvbiB0aHJvd24gd2hlbiBkdXBsaWNhdGUgZmxhZ3MgYXJlIHByb3ZpZGVkIGluIHRoZSBmb3JtYXQKKyAgICAgICAgICBzcGVjaWZpZXIuPC9kaXY+CisgICAgICA8L3RkPgorICAgIDwvdHI+CisgICAgPHRyIGNsYXNzPSJhbHRDb2xvciI+CisgICAgICA8dGQgY2xhc3M9ImNvbEZpcnN0Ij48YSBocmVmPSIuLi8uLi9qYXZhL3V0aWwvRW1wdHlTdGFja0V4Y2VwdGlvbi5odG1sIiB0aXRsZT0iY2xhc3MgaW4gamF2YS51dGlsIj5FbXB0eVN0YWNrRXhjZXB0aW9uPC9hPjwvdGQ+CisgICAgICA8dGQgY2xhc3M9ImNvbExhc3QiPgorICAgICAgICA8ZGl2IGNsYXNzPSJibG9jayI+VGhyb3duIGJ5IG1ldGhvZHMgaW4gdGhlIDxjb2RlPlN0YWNrPC9jb2RlPiBjbGFzcyB0byBpbmRpY2F0ZQorICAgICAgICAgIHRoYXQgdGhlIHN0YWNrIGlzIGVtcHR5LjwvZGl2PgorICAgICAgPC90ZD4KKyAgICA8L3RyPgorICAgIDx0ciBjbGFzcz0icm93Q29sb3IiPgorICAgICAgPHRkIGNsYXNzPSJjb2xGaXJzdCI+PGEgaHJlZj0iLi4vLi4vamF2YS91dGlsL0Zvcm1hdEZsYWdzQ29udmVyc2lvbk1pc21hdGNoRXhjZXB0aW9uLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBqYXZhLnV0aWwiPkZvcm1hdEZsYWdzQ29udmVyc2lvbk1pc21hdGNoRXhjZXB0aW9uPC9hPjwvdGQ+CisgICAgICA8dGQgY2xhc3M9ImNvbExhc3QiPgorICAgICAgICA8ZGl2IGNsYXNzPSJibG9jayI+VW5jaGVja2VkIGV4Y2VwdGlvbiB0aHJvd24gd2hlbiBhIGNvbnZlcnNpb24gYW5kIGZsYWcgYXJlIGluY29tcGF0aWJsZS48L2Rpdj4KKyAgICAgIDwvdGQ+CisgICAgPC90cj4KKyAgICA8dHIgY2xhc3M9ImFsdENvbG9yIj4KKyAgICAgIDx0ZCBjbGFzcz0iY29sRmlyc3QiPjxhIGhyZWY9Ii4uLy4uL2phdmEvdXRpbC9Gb3JtYXR0ZXJDbG9zZWRFeGNlcHRpb24uaHRtbCIgdGl0bGU9ImNsYXNzIGluIGphdmEudXRpbCI+Rm9ybWF0dGVyQ2xvc2VkRXhjZXB0aW9uPC9hPjwvdGQ+CisgICAgICA8dGQgY2xhc3M9ImNvbExhc3QiPgorICAgICAgICA8ZGl2IGNsYXNzPSJibG9jayI+VW5jaGVja2VkIGV4Y2VwdGlvbiB0aHJvd24gd2hlbiB0aGUgZm9ybWF0dGVyIGhhcyBiZWVuIGNsb3NlZC48L2Rpdj4KKyAgICAgIDwvdGQ+CisgICAgPC90cj4KKyAgICA8dHIgY2xhc3M9InJvd0NvbG9yIj4KKyAgICAgIDx0ZCBjbGFzcz0iY29sRmlyc3QiPjxhIGhyZWY9Ii4uLy4uL2phdmEvdXRpbC9JbGxlZ2FsRm9ybWF0Q29kZVBvaW50RXhjZXB0aW9uLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBqYXZhLnV0aWwiPklsbGVnYWxGb3JtYXRDb2RlUG9pbnRFeGNlcHRpb248L2E+PC90ZD4KKyAgICAgIDx0ZCBjbGFzcz0iY29sTGFzdCI+CisgICAgICAgIDxkaXYgY2xhc3M9ImJsb2NrIj5VbmNoZWNrZWQgZXhjZXB0aW9uIHRocm93biB3aGVuIGEgY2hhcmFjdGVyIHdpdGggYW4gaW52YWxpZCBVbmljb2RlIGNvZGUKKyAgICAgICAgICBwb2ludCBhcyBkZWZpbmVkIGJ5IDxhIGhyZWY9Ii4uLy4uL2phdmEvbGFuZy9DaGFyYWN0ZXIuaHRtbCNpc1ZhbGlkQ29kZVBvaW50KGludCkiPjxjb2RlPkNoYXJhY3Rlci5pc1ZhbGlkQ29kZVBvaW50KGludCk8L2NvZGU+PC9hPiBpcyBwYXNzZWQgdG8gdGhlCisgICAgICAgICAgPGEgaHJlZj0iLi4vLi4vamF2YS91dGlsL0Zvcm1hdHRlci5odG1sIiB0aXRsZT0iY2xhc3MgaW4gamF2YS51dGlsIj48Y29kZT5Gb3JtYXR0ZXI8L2NvZGU+PC9hPi48L2Rpdj4KKyAgICAgIDwvdGQ+CisgICAgPC90cj4KKyAgICA8dHIgY2xhc3M9ImFsdENvbG9yIj4KKyAgICAgIDx0ZCBjbGFzcz0iY29sRmlyc3QiPjxhIGhyZWY9Ii4uLy4uL2phdmEvdXRpbC9JbGxlZ2FsRm9ybWF0Q29udmVyc2lvbkV4Y2VwdGlvbi5odG1sIiB0aXRsZT0iY2xhc3MgaW4gamF2YS51dGlsIj5JbGxlZ2FsRm9ybWF0Q29udmVyc2lvbkV4Y2VwdGlvbjwvYT48L3RkPgorICAgICAgPHRkIGNsYXNzPSJjb2xMYXN0Ij4KKyAgICAgICAgPGRpdiBjbGFzcz0iYmxvY2siPlVuY2hlY2tlZCBleGNlcHRpb24gdGhyb3duIHdoZW4gdGhlIGFyZ3VtZW50IGNvcnJlc3BvbmRpbmcgdG8gdGhlIGZvcm1hdAorICAgICAgICAgIHNwZWNpZmllciBpcyBvZiBhbiBpbmNvbXBhdGlibGUgdHlwZS48L2Rpdj4KKyAgICAgIDwvdGQ+CisgICAgPC90cj4KKyAgICA8dHIgY2xhc3M9InJvd0NvbG9yIj4KKyAgICAgIDx0ZCBjbGFzcz0iY29sRmlyc3QiPjxhIGhyZWY9Ii4uLy4uL2phdmEvdXRpbC9JbGxlZ2FsRm9ybWF0RXhjZXB0aW9uLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBqYXZhLnV0aWwiPklsbGVnYWxGb3JtYXRFeGNlcHRpb248L2E+PC90ZD4KKyAgICAgIDx0ZCBjbGFzcz0iY29sTGFzdCI+CisgICAgICAgIDxkaXYgY2xhc3M9ImJsb2NrIj5VbmNoZWNrZWQgZXhjZXB0aW9uIHRocm93biB3aGVuIGEgZm9ybWF0IHN0cmluZyBjb250YWlucyBhbiBpbGxlZ2FsIHN5bnRheAorICAgICAgICAgIG9yIGEgZm9ybWF0IHNwZWNpZmllciB0aGF0IGlzIGluY29tcGF0aWJsZSB3aXRoIHRoZSBnaXZlbiBhcmd1bWVudHMuPC9kaXY+CisgICAgICA8L3RkPgorICAgIDwvdHI+CisgICAgPHRyIGNsYXNzPSJhbHRDb2xvciI+CisgICAgICA8dGQgY2xhc3M9ImNvbEZpcnN0Ij48YSBocmVmPSIuLi8uLi9qYXZhL3V0aWwvSWxsZWdhbEZvcm1hdEZsYWdzRXhjZXB0aW9uLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBqYXZhLnV0aWwiPklsbGVnYWxGb3JtYXRGbGFnc0V4Y2VwdGlvbjwvYT48L3RkPgorICAgICAgPHRkIGNsYXNzPSJjb2xMYXN0Ij4KKyAgICAgICAgPGRpdiBjbGFzcz0iYmxvY2siPlVuY2hlY2tlZCBleGNlcHRpb24gdGhyb3duIHdoZW4gYW4gaWxsZWdhbCBjb21iaW5hdGlvbiBmbGFncyBpcyBnaXZlbi48L2Rpdj4KKyAgICAgIDwvdGQ+CisgICAgPC90cj4KKyAgICA8dHIgY2xhc3M9InJvd0NvbG9yIj4KKyAgICAgIDx0ZCBjbGFzcz0iY29sRmlyc3QiPjxhIGhyZWY9Ii4uLy4uL2phdmEvdXRpbC9JbGxlZ2FsRm9ybWF0UHJlY2lzaW9uRXhjZXB0aW9uLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBqYXZhLnV0aWwiPklsbGVnYWxGb3JtYXRQcmVjaXNpb25FeGNlcHRpb248L2E+PC90ZD4KKyAgICAgIDx0ZCBjbGFzcz0iY29sTGFzdCI+CisgICAgICAgIDxkaXYgY2xhc3M9ImJsb2NrIj5VbmNoZWNrZWQgZXhjZXB0aW9uIHRocm93biB3aGVuIHRoZSBwcmVjaXNpb24gaXMgYSBuZWdhdGl2ZSB2YWx1ZSBvdGhlciB0aGFuCisgICAgICAgICAgPHR0Pi0xPC90dD4sIHRoZSBjb252ZXJzaW9uIGRvZXMgbm90IHN1cHBvcnQgYSBwcmVjaXNpb24sIG9yIHRoZSB2YWx1ZSBpcworICAgICAgICAgIG90aGVyd2lzZSB1bnN1cHBvcnRlZC48L2Rpdj4KKyAgICAgIDwvdGQ+CisgICAgPC90cj4KKyAgICA8dHIgY2xhc3M9ImFsdENvbG9yIj4KKyAgICAgIDx0ZCBjbGFzcz0iY29sRmlyc3QiPjxhIGhyZWY9Ii4uLy4uL2phdmEvdXRpbC9JbGxlZ2FsRm9ybWF0V2lkdGhFeGNlcHRpb24uaHRtbCIgdGl0bGU9ImNsYXNzIGluIGphdmEudXRpbCI+SWxsZWdhbEZvcm1hdFdpZHRoRXhjZXB0aW9uPC9hPjwvdGQ+CisgICAgICA8dGQgY2xhc3M9ImNvbExhc3QiPgorICAgICAgICA8ZGl2IGNsYXNzPSJibG9jayI+VW5jaGVja2VkIGV4Y2VwdGlvbiB0aHJvd24gd2hlbiB0aGUgZm9ybWF0IHdpZHRoIGlzIGEgbmVnYXRpdmUgdmFsdWUgb3RoZXIKKyAgICAgICAgICB0aGFuIDx0dD4tMTwvdHQ+IG9yIGlzIG90aGVyd2lzZSB1bnN1cHBvcnRlZC48L2Rpdj4KKyAgICAgIDwvdGQ+CisgICAgPC90cj4KKyAgICA8dHIgY2xhc3M9InJvd0NvbG9yIj4KKyAgICAgIDx0ZCBjbGFzcz0iY29sRmlyc3QiPjxhIGhyZWY9Ii4uLy4uL2phdmEvdXRpbC9JbGxmb3JtZWRMb2NhbGVFeGNlcHRpb24uaHRtbCIgdGl0bGU9ImNsYXNzIGluIGphdmEudXRpbCI+SWxsZm9ybWVkTG9jYWxlRXhjZXB0aW9uPC9hPjwvdGQ+CisgICAgICA8dGQgY2xhc3M9ImNvbExhc3QiPgorICAgICAgICA8ZGl2IGNsYXNzPSJibG9jayI+VGhyb3duIGJ5IG1ldGhvZHMgaW4gPGEgaHJlZj0iLi4vLi4vamF2YS91dGlsL0xvY2FsZS5odG1sIiB0aXRsZT0iY2xhc3MgaW4gamF2YS51dGlsIj48Y29kZT5Mb2NhbGU8L2NvZGU+PC9hPiBhbmQgPGEgaHJlZj0iLi4vLi4vamF2YS91dGlsL0xvY2FsZS5CdWlsZGVyLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBqYXZhLnV0aWwiPjxjb2RlPkxvY2FsZS5CdWlsZGVyPC9jb2RlPjwvYT4gdG8KKyAgICAgICAgICBpbmRpY2F0ZSB0aGF0IGFuIGFyZ3VtZW50IGlzIG5vdCBhIHdlbGwtZm9ybWVkIEJDUCA0NyB0YWcuPC9kaXY+CisgICAgICA8L3RkPgorICAgIDwvdHI+CisgICAgPHRyIGNsYXNzPSJhbHRDb2xvciI+CisgICAgICA8dGQgY2xhc3M9ImNvbEZpcnN0Ij48YSBocmVmPSIuLi8uLi9qYXZhL3V0aWwvSW5wdXRNaXNtYXRjaEV4Y2VwdGlvbi5odG1sIiB0aXRsZT0iY2xhc3MgaW4gamF2YS51dGlsIj5JbnB1dE1pc21hdGNoRXhjZXB0aW9uPC9hPjwvdGQ+CisgICAgICA8dGQgY2xhc3M9ImNvbExhc3QiPgorICAgICAgICA8ZGl2IGNsYXNzPSJibG9jayI+VGhyb3duIGJ5IGEgPGNvZGU+U2Nhbm5lcjwvY29kZT4gdG8gaW5kaWNhdGUgdGhhdCB0aGUgdG9rZW4KKyAgICAgICAgICByZXRyaWV2ZWQgZG9lcyBub3QgbWF0Y2ggdGhlIHBhdHRlcm4gZm9yIHRoZSBleHBlY3RlZCB0eXBlLCBvcgorICAgICAgICAgIHRoYXQgdGhlIHRva2VuIGlzIG91dCBvZiByYW5nZSBmb3IgdGhlIGV4cGVjdGVkIHR5cGUuPC9kaXY+CisgICAgICA8L3RkPgorICAgIDwvdHI+CisgICAgPHRyIGNsYXNzPSJyb3dDb2xvciI+CisgICAgICA8dGQgY2xhc3M9ImNvbEZpcnN0Ij48YSBocmVmPSIuLi8uLi9qYXZhL3V0aWwvSW52YWxpZFByb3BlcnRpZXNGb3JtYXRFeGNlcHRpb24uaHRtbCIgdGl0bGU9ImNsYXNzIGluIGphdmEudXRpbCI+SW52YWxpZFByb3BlcnRpZXNGb3JtYXRFeGNlcHRpb248L2E+PC90ZD4KKyAgICAgIDx0ZCBjbGFzcz0iY29sTGFzdCI+CisgICAgICAgIDxkaXYgY2xhc3M9ImJsb2NrIj5UaHJvd24gdG8gaW5kaWNhdGUgdGhhdCBhbiBvcGVyYXRpb24gY291bGQgbm90IGNvbXBsZXRlIGJlY2F1c2UKKyAgICAgICAgICB0aGUgaW5wdXQgZGlkIG5vdCBjb25mb3JtIHRvIHRoZSBhcHByb3ByaWF0ZSBYTUwgZG9jdW1lbnQgdHlwZQorICAgICAgICAgIGZvciBhIGNvbGxlY3Rpb24gb2YgcHJvcGVydGllcywgYXMgcGVyIHRoZSA8YSBocmVmPSIuLi8uLi9qYXZhL3V0aWwvUHJvcGVydGllcy5odG1sIiB0aXRsZT0iY2xhc3MgaW4gamF2YS51dGlsIj48Y29kZT5Qcm9wZXJ0aWVzPC9jb2RlPjwvYT4KKyAgICAgICAgICBzcGVjaWZpY2F0aW9uLjwvZGl2PgorICAgICAgPC90ZD4KKyAgICA8L3RyPgorICAgIDx0ciBjbGFzcz0iYWx0Q29sb3IiPgorICAgICAgPHRkIGNsYXNzPSJjb2xGaXJzdCI+PGEgaHJlZj0iLi4vLi4vamF2YS91dGlsL01pc3NpbmdGb3JtYXRBcmd1bWVudEV4Y2VwdGlvbi5odG1sIiB0aXRsZT0iY2xhc3MgaW4gamF2YS51dGlsIj5NaXNzaW5nRm9ybWF0QXJndW1lbnRFeGNlcHRpb248L2E+PC90ZD4KKyAgICAgIDx0ZCBjbGFzcz0iY29sTGFzdCI+CisgICAgICAgIDxkaXYgY2xhc3M9ImJsb2NrIj5VbmNoZWNrZWQgZXhjZXB0aW9uIHRocm93biB3aGVuIHRoZXJlIGlzIGEgZm9ybWF0IHNwZWNpZmllciB3aGljaCBkb2VzIG5vdAorICAgICAgICAgIGhhdmUgYSBjb3JyZXNwb25kaW5nIGFyZ3VtZW50IG9yIGlmIGFuIGFyZ3VtZW50IGluZGV4IHJlZmVycyB0byBhbiBhcmd1bWVudAorICAgICAgICAgIHRoYXQgZG9lcyBub3QgZXhpc3QuPC9kaXY+CisgICAgICA8L3RkPgorICAgIDwvdHI+CisgICAgPHRyIGNsYXNzPSJyb3dDb2xvciI+CisgICAgICA8dGQgY2xhc3M9ImNvbEZpcnN0Ij48YSBocmVmPSIuLi8uLi9qYXZhL3V0aWwvTWlzc2luZ0Zvcm1hdFdpZHRoRXhjZXB0aW9uLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBqYXZhLnV0aWwiPk1pc3NpbmdGb3JtYXRXaWR0aEV4Y2VwdGlvbjwvYT48L3RkPgorICAgICAgPHRkIGNsYXNzPSJjb2xMYXN0Ij4KKyAgICAgICAgPGRpdiBjbGFzcz0iYmxvY2siPlVuY2hlY2tlZCBleGNlcHRpb24gdGhyb3duIHdoZW4gdGhlIGZvcm1hdCB3aWR0aCBpcyByZXF1aXJlZC48L2Rpdj4KKyAgICAgIDwvdGQ+CisgICAgPC90cj4KKyAgICA8dHIgY2xhc3M9ImFsdENvbG9yIj4KKyAgICAgIDx0ZCBjbGFzcz0iY29sRmlyc3QiPjxhIGhyZWY9Ii4uLy4uL2phdmEvdXRpbC9NaXNzaW5nUmVzb3VyY2VFeGNlcHRpb24uaHRtbCIgdGl0bGU9ImNsYXNzIGluIGphdmEudXRpbCI+TWlzc2luZ1Jlc291cmNlRXhjZXB0aW9uPC9hPjwvdGQ+CisgICAgICA8dGQgY2xhc3M9ImNvbExhc3QiPgorICAgICAgICA8ZGl2IGNsYXNzPSJibG9jayI+U2lnbmFscyB0aGF0IGEgcmVzb3VyY2UgaXMgbWlzc2luZy48L2Rpdj4KKyAgICAgIDwvdGQ+CisgICAgPC90cj4KKyAgICA8dHIgY2xhc3M9InJvd0NvbG9yIj4KKyAgICAgIDx0ZCBjbGFzcz0iY29sRmlyc3QiPjxhIGhyZWY9Ii4uLy4uL2phdmEvdXRpbC9Ob1N1Y2hFbGVtZW50RXhjZXB0aW9uLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBqYXZhLnV0aWwiPk5vU3VjaEVsZW1lbnRFeGNlcHRpb248L2E+PC90ZD4KKyAgICAgIDx0ZCBjbGFzcz0iY29sTGFzdCI+CisgICAgICAgIDxkaXYgY2xhc3M9ImJsb2NrIj5UaHJvd24gYnkgdGhlIDxjb2RlPm5leHRFbGVtZW50PC9jb2RlPiBtZXRob2Qgb2YgYW4KKyAgICAgICAgICA8Y29kZT5FbnVtZXJhdGlvbjwvY29kZT4gdG8gaW5kaWNhdGUgdGhhdCB0aGVyZSBhcmUgbm8gbW9yZQorICAgICAgICAgIGVsZW1lbnRzIGluIHRoZSBlbnVtZXJhdGlvbi48L2Rpdj4KKyAgICAgIDwvdGQ+CisgICAgPC90cj4KKyAgICA8dHIgY2xhc3M9ImFsdENvbG9yIj4KKyAgICAgIDx0ZCBjbGFzcz0iY29sRmlyc3QiPjxhIGhyZWY9Ii4uLy4uL2phdmEvdXRpbC9Ub29NYW55TGlzdGVuZXJzRXhjZXB0aW9uLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBqYXZhLnV0aWwiPlRvb01hbnlMaXN0ZW5lcnNFeGNlcHRpb248L2E+PC90ZD4KKyAgICAgIDx0ZCBjbGFzcz0iY29sTGFzdCI+CisgICAgICAgIDxkaXYgY2xhc3M9ImJsb2NrIj4KKyAgICAgICAgICBUaGUgPGNvZGU+IFRvb01hbnlMaXN0ZW5lcnNFeGNlcHRpb24gPC9jb2RlPiBFeGNlcHRpb24gaXMgdXNlZCBhcyBwYXJ0IG9mCisgICAgICAgICAgdGhlIEphdmEgRXZlbnQgbW9kZWwgdG8gYW5ub3RhdGUgYW5kIGltcGxlbWVudCBhIHVuaWNhc3Qgc3BlY2lhbCBjYXNlIG9mCisgICAgICAgICAgYSBtdWx0aWNhc3QgRXZlbnQgU291cmNlLjwvZGl2PgorICAgICAgPC90ZD4KKyAgICA8L3RyPgorICAgIDx0ciBjbGFzcz0icm93Q29sb3IiPgorICAgICAgPHRkIGNsYXNzPSJjb2xGaXJzdCI+PGEgaHJlZj0iLi4vLi4vamF2YS91dGlsL1Vua25vd25Gb3JtYXRDb252ZXJzaW9uRXhjZXB0aW9uLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBqYXZhLnV0aWwiPlVua25vd25Gb3JtYXRDb252ZXJzaW9uRXhjZXB0aW9uPC9hPjwvdGQ+CisgICAgICA8dGQgY2xhc3M9ImNvbExhc3QiPgorICAgICAgICA8ZGl2IGNsYXNzPSJibG9jayI+VW5jaGVja2VkIGV4Y2VwdGlvbiB0aHJvd24gd2hlbiBhbiB1bmtub3duIGNvbnZlcnNpb24gaXMgZ2l2ZW4uPC9kaXY+CisgICAgICA8L3RkPgorICAgIDwvdHI+CisgICAgPHRyIGNsYXNzPSJhbHRDb2xvciI+CisgICAgICA8dGQgY2xhc3M9ImNvbEZpcnN0Ij48YSBocmVmPSIuLi8uLi9qYXZhL3V0aWwvVW5rbm93bkZvcm1hdEZsYWdzRXhjZXB0aW9uLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBqYXZhLnV0aWwiPlVua25vd25Gb3JtYXRGbGFnc0V4Y2VwdGlvbjwvYT48L3RkPgorICAgICAgPHRkIGNsYXNzPSJjb2xMYXN0Ij4KKyAgICAgICAgPGRpdiBjbGFzcz0iYmxvY2siPlVuY2hlY2tlZCBleGNlcHRpb24gdGhyb3duIHdoZW4gYW4gdW5rbm93biBmbGFnIGlzIGdpdmVuLjwvZGl2PgorICAgICAgPC90ZD4KKyAgICA8L3RyPgorICAgIDwvdGJvZHk+CisgIDwvdGFibGU+Cis8L2xpPgorPGxpIGNsYXNzPSJibG9ja0xpc3QiPgorICA8dGFibGUgY2xhc3M9InBhY2thZ2VTdW1tYXJ5IiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIzIiBjZWxsc3BhY2luZz0iMCIgc3VtbWFyeT0iRXJyb3IgU3VtbWFyeSB0YWJsZSwgbGlzdGluZyBlcnJvcnMsIGFuZCBhbiBleHBsYW5hdGlvbiI+CisgICAgPGNhcHRpb24+PHNwYW4+RXJyb3IgU3VtbWFyeTwvc3Bhbj48c3BhbiBjbGFzcz0idGFiRW5kIj4mbmJzcDs8L3NwYW4+PC9jYXB0aW9uPgorICAgIDx0cj4KKyAgICAgIDx0aCBjbGFzcz0iY29sRmlyc3QiIHNjb3BlPSJjb2wiPkVycm9yPC90aD4KKyAgICAgIDx0aCBjbGFzcz0iY29sTGFzdCIgc2NvcGU9ImNvbCI+RGVzY3JpcHRpb248L3RoPgorICAgIDwvdHI+CisgICAgPHRib2R5PgorICAgIDx0ciBjbGFzcz0iYWx0Q29sb3IiPgorICAgICAgPHRkIGNsYXNzPSJjb2xGaXJzdCI+PGEgaHJlZj0iLi4vLi4vamF2YS91dGlsL1NlcnZpY2VDb25maWd1cmF0aW9uRXJyb3IuaHRtbCIgdGl0bGU9ImNsYXNzIGluIGphdmEudXRpbCI+U2VydmljZUNvbmZpZ3VyYXRpb25FcnJvcjwvYT48L3RkPgorICAgICAgPHRkIGNsYXNzPSJjb2xMYXN0Ij4KKyAgICAgICAgPGRpdiBjbGFzcz0iYmxvY2siPkVycm9yIHRocm93biB3aGVuIHNvbWV0aGluZyBnb2VzIHdyb25nIHdoaWxlIGxvYWRpbmcgYSBzZXJ2aWNlIHByb3ZpZGVyLjwvZGl2PgorICAgICAgPC90ZD4KKyAgICA8L3RyPgorICAgIDwvdGJvZHk+CisgIDwvdGFibGU+Cis8L2xpPgorPC91bD4KKzxhIG5hbWU9InBhY2thZ2VfZGVzY3JpcHRpb24iPgorICA8IS0tICAgLS0+Cis8L2E+Cis8aDIgdGl0bGU9IlBhY2thZ2UgamF2YS51dGlsIERlc2NyaXB0aW9uIj5QYWNrYWdlIGphdmEudXRpbCBEZXNjcmlwdGlvbjwvaDI+Cis8ZGl2IGNsYXNzPSJibG9jayI+Q29udGFpbnMgdGhlIGNvbGxlY3Rpb25zIGZyYW1ld29yaywgbGVnYWN5IGNvbGxlY3Rpb24gY2xhc3NlcywgZXZlbnQgbW9kZWwsCisgIGRhdGUgYW5kIHRpbWUgZmFjaWxpdGllcywgaW50ZXJuYXRpb25hbGl6YXRpb24sIGFuZCBtaXNjZWxsYW5lb3VzIHV0aWxpdHkKKyAgY2xhc3NlcyAoYSBzdHJpbmcgdG9rZW5pemVyLCBhIHJhbmRvbS1udW1iZXIgZ2VuZXJhdG9yLCBhbmQgYSBiaXQgYXJyYXkpLgorCisgIDxoMj5QYWNrYWdlIFNwZWNpZmljYXRpb248L2gyPgorICA8dWw+CisgICAgPGxpPjxhIGhyZWY9Ii4uLy4uLy4uL3RlY2hub3Rlcy9ndWlkZXMvY29sbGVjdGlvbnMvb3ZlcnZpZXcuaHRtbCI+PGI+Q29sbGVjdGlvbnMgRnJhbWV3b3JrIE92ZXJ2aWV3PC9iPjwvYT4KKyAgICA8bGk+PGEgaHJlZj0iLi4vLi4vLi4vdGVjaG5vdGVzL2d1aWRlcy9jb2xsZWN0aW9ucy9yZWZlcmVuY2UuaHRtbCI+PGI+CisgICAgICBDb2xsZWN0aW9ucyBGcmFtZXdvcmsgQW5ub3RhdGVkIE91dGxpbmU8L2I+PC9hPgorICA8L3VsPgorCisgIDxoMj5SZWxhdGVkIERvY3VtZW50YXRpb248L2gyPgorICBGb3Igb3ZlcnZpZXdzLCB0dXRvcmlhbHMsIGV4YW1wbGVzLCBndWlkZXMsIGFuZCB0b29sIGRvY3VtZW50YXRpb24sIHBsZWFzZSBzZWU6CisgIDx1bD4KKyAgICA8bGk+PGEgaHJlZj0iaHR0cDovL3d3dy5qYXZhLnN1bi5jb20vZG9jcy9ib29rcy90dXRvcmlhbC9jb2xsZWN0aW9ucy8iPgorICAgICAgPGI+Q29sbGVjdGlvbnMgRnJhbWV3b3JrIFR1dG9yaWFsPC9iPjwvYT4KKyAgICA8bGk+PGEKKyAgICAgICAgaHJlZj0iLi4vLi4vLi4vdGVjaG5vdGVzL2d1aWRlcy9jb2xsZWN0aW9ucy9kZXNpZ25mYXEuaHRtbCI+PGI+Q29sbGVjdGlvbnMKKyAgICAgIEZyYW1ld29yayBEZXNpZ24gRkFRPC9iPjwvYT4KKyAgPC91bD48L2Rpdj4KKzxkbD48ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+U2luY2U6PC9zcGFuPjwvZHQ+CisgIDxkZD5KREsxLjA8L2RkPjwvZGw+Cis8L2Rpdj4KKzwhLS0gPT09PT09PSBTVEFSVCBPRiBCT1RUT00gTkFWQkFSID09PT09PSAtLT4KKzxkaXYgY2xhc3M9ImJvdHRvbU5hdiI+PGEgbmFtZT0ibmF2YmFyX2JvdHRvbSI+CisgIDwhLS0gICAtLT4KKzwvYT48YSBocmVmPSIjc2tpcC1uYXZiYXJfYm90dG9tIiB0aXRsZT0iU2tpcCBuYXZpZ2F0aW9uIGxpbmtzIj48L2E+PGEgbmFtZT0ibmF2YmFyX2JvdHRvbV9maXJzdHJvdyI+CisgIDwhLS0gICAtLT4KKzwvYT4KKyAgPHVsIGNsYXNzPSJuYXZMaXN0IiB0aXRsZT0iTmF2aWdhdGlvbiI+CisgICAgPGxpPjxhIGhyZWY9Ii4uLy4uL292ZXJ2aWV3LXN1bW1hcnkuaHRtbCI+T3ZlcnZpZXc8L2E+PC9saT4KKyAgICA8bGkgY2xhc3M9Im5hdkJhckNlbGwxUmV2Ij5QYWNrYWdlPC9saT4KKyAgICA8bGk+Q2xhc3M8L2xpPgorICAgIDxsaT48YSBocmVmPSJwYWNrYWdlLXVzZS5odG1sIj5Vc2U8L2E+PC9saT4KKyAgICA8bGk+PGEgaHJlZj0icGFja2FnZS10cmVlLmh0bWwiPlRyZWU8L2E+PC9saT4KKyAgICA8bGk+PGEgaHJlZj0iLi4vLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPkRlcHJlY2F0ZWQ8L2E+PC9saT4KKyAgICA8bGk+PGEgaHJlZj0iLi4vLi4vaW5kZXgtZmlsZXMvaW5kZXgtMS5odG1sIj5JbmRleDwvYT48L2xpPgorICAgIDxsaT48YSBocmVmPSIuLi8uLi9oZWxwLWRvYy5odG1sIj5IZWxwPC9hPjwvbGk+CisgIDwvdWw+CisgIDxkaXYgY2xhc3M9ImFib3V0TGFuZ3VhZ2UiPjxlbT48c3Ryb25nPkphdmEmdHJhZGU7Jm5ic3A7UGxhdGZvcm08YnI+U3RhbmRhcmQmbmJzcDtFZC4mbmJzcDs3PC9zdHJvbmc+PC9lbT48L2Rpdj4KKzwvZGl2PgorPGRpdiBjbGFzcz0ic3ViTmF2Ij4KKyAgPHVsIGNsYXNzPSJuYXZMaXN0Ij4KKyAgICA8bGk+PGEgaHJlZj0iLi4vLi4vamF2YS90ZXh0L3NwaS9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+UHJldiBQYWNrYWdlPC9hPjwvbGk+CisgICAgPGxpPjxhIGhyZWY9Ii4uLy4uL2phdmEvdXRpbC9jb25jdXJyZW50L3BhY2thZ2Utc3VtbWFyeS5odG1sIj5OZXh0IFBhY2thZ2U8L2E+PC9saT4KKyAgPC91bD4KKyAgPHVsIGNsYXNzPSJuYXZMaXN0Ij4KKyAgICA8bGk+PGEgaHJlZj0iLi4vLi4vaW5kZXguaHRtbD9qYXZhL3V0aWwvcGFja2FnZS1zdW1tYXJ5Lmh0bWwiIHRhcmdldD0iX3RvcCI+RnJhbWVzPC9hPjwvbGk+CisgICAgPGxpPjxhIGhyZWY9InBhY2thZ2Utc3VtbWFyeS5odG1sIiB0YXJnZXQ9Il90b3AiPk5vIEZyYW1lczwvYT48L2xpPgorICA8L3VsPgorICA8dWwgY2xhc3M9Im5hdkxpc3QiIGlkPSJhbGxjbGFzc2VzX25hdmJhcl9ib3R0b20iPgorICAgIDxsaT48YSBocmVmPSIuLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+QWxsIENsYXNzZXM8L2E+PC9saT4KKyAgPC91bD4KKyAgPGRpdj4KKyAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+PCEtLQorICBhbGxDbGFzc2VzTGluayA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJhbGxjbGFzc2VzX25hdmJhcl9ib3R0b20iKTsKKyAgaWYod2luZG93PT10b3ApIHsKKyAgICBhbGxDbGFzc2VzTGluay5zdHlsZS5kaXNwbGF5ID0gImJsb2NrIjsKKyAgfQorICBlbHNlIHsKKyAgICBhbGxDbGFzc2VzTGluay5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOworICB9CisgIC8vLS0+CisgICAgPC9zY3JpcHQ+CisgIDwvZGl2PgorICA8YSBuYW1lPSJza2lwLW5hdmJhcl9ib3R0b20iPgorICAgIDwhLS0gICAtLT4KKyAgPC9hPjwvZGl2PgorPCEtLSA9PT09PT09PSBFTkQgT0YgQk9UVE9NIE5BVkJBUiA9PT09PT09IC0tPgorPHAgY2xhc3M9ImxlZ2FsQ29weSI+PHNtYWxsPjxmb250IHNpemU9Ii0xIj4gPGEgaHJlZj0iaHR0cDovL2J1Z3JlcG9ydC5zdW4uY29tL2J1Z3JlcG9ydC8iPlN1Ym1pdCBhIGJ1ZyBvciBmZWF0dXJlPC9hPiA8YnI+Rm9yIGZ1cnRoZXIgQVBJIHJlZmVyZW5jZSBhbmQgZGV2ZWxvcGVyIGRvY3VtZW50YXRpb24sIHNlZSA8YSBocmVmPSJodHRwOi8vZG93bmxvYWQub3JhY2xlLmNvbS9qYXZhc2UvNy9kb2NzL2luZGV4Lmh0bWwiIHRhcmdldD0iX2JsYW5rIj5KYXZhIFNFIERvY3VtZW50YXRpb248L2E+LiBUaGF0IGRvY3VtZW50YXRpb24gY29udGFpbnMgbW9yZSBkZXRhaWxlZCwgZGV2ZWxvcGVyLXRhcmdldGVkIGRlc2NyaXB0aW9ucywgd2l0aCBjb25jZXB0dWFsIG92ZXJ2aWV3cywgZGVmaW5pdGlvbnMgb2YgdGVybXMsIHdvcmthcm91bmRzLCBhbmQgd29ya2luZyBjb2RlIGV4YW1wbGVzLjxicj4gPGEgaHJlZj0iLi4vLi4vLi4vbGVnYWwvY3B5ci5odG1sIj5Db3B5cmlnaHQ8L2E+ICYjeDAwYTk7IDE5OTMsIDIwMTIsIE9yYWNsZSBhbmQvb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgcmlnaHRzIHJlc2VydmVkLiA8L2ZvbnQ+PC9zbWFsbD48L3A+Cis8IS0tIFN0YXJ0IFNpdGVDYXRhbHlzdCBjb2RlICAgLS0+Cis8c2NyaXB0IHR5cGU9InRleHQvSmF2YVNjcmlwdCIgc3JjPSJodHRwOi8vd3d3Lm9yYWNsZS5jb20vb2NvbS9ncm91cHMvc3lzdGVtb2JqZWN0L0Bta3RnX2FkbWluL2RvY3VtZW50cy9zeXN0ZW1vYmplY3Qvc19jb2RlX2Rvd25sb2FkLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgdHlwZT0idGV4dC9KYXZhU2NyaXB0IiBzcmM9Imh0dHA6Ly93d3cub3JhY2xlLmNvbS9vY29tL2dyb3Vwcy9zeXN0ZW1vYmplY3QvQG1rdGdfYWRtaW4vZG9jdW1lbnRzL3N5c3RlbW9iamVjdC9zX2NvZGUuanMiPjwvc2NyaXB0PgorCis8IS0tICoqKioqKioqKiogRE8gTk9UIEFMVEVSIEFOWVRISU5HIEJFTE9XIFRISVMgTElORSAhICoqKioqKioqKioqIC0tPgorPCEtLSAgQmVsb3cgY29kZSB3aWxsIHNlbmQgdGhlIGluZm8gdG8gT21uaXR1cmUgc2VydmVyIC0tPgorPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPnZhciBzX2NvZGU9cy50KCk7aWYoc19jb2RlKWRvY3VtZW50LndyaXRlKHNfY29kZSk8L3NjcmlwdD4KKworPCEtLSBFbmQgU2l0ZUNhdGFseXN0IGNvZGUgLS0+Cis8bm9zY3JpcHQ+CisgIDxwPlNjcmlwdGluZyBvbiB0aGlzIHBhZ2UgdHJhY2tzIHdlYiBwYWdlIHRyYWZmaWMsIGJ1dCBkb2VzIG5vdCBjaGFuZ2UgdGhlIGNvbnRlbnQgaW4gYW55IHdheS48L3A+Cis8L25vc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2ZvbGRpbmcvQ3VzdG9tRm9sZGluZy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2ZvbGRpbmcvQ3VzdG9tRm9sZGluZy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ2OGY1MzUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZm9sZGluZy9DdXN0b21Gb2xkaW5nLmphdmEKQEAgLTAsMCArMSwxNyBAQAorcHVibGljIGNsYXNzIFRlc3QgeworICA8Zm9sZCB0ZXh0PSdNeSBwcml2YXRlIGZpZWxkcyc+Ly8gPGVkaXRvci1mb2xkIGRlc2M9Ik15IHByaXZhdGUgZmllbGRzIj4KKyAgcHJpdmF0ZSBpbnQgeDsKKyAgcHJpdmF0ZSBpbnQgeTsKKyAgLy8gPC9lZGl0b3ItZm9sZD48L2ZvbGQ+CisKKyAgPGZvbGQgdGV4dD0nTXkgbWV0aG9kcyc+Ly8gPGVkaXRvci1mb2xkIGRlc2M9Ik15IG1ldGhvZHMiPgorICBwcml2YXRlIHZvaWQgZG9Tb21ldGhpbmcoKSA8Zm9sZCB0ZXh0PSd7Li4ufSc+eworICAgIFN0cmluZ0J1aWxkZXIgcyA9IG5ldyBTdHJpbmdCdWlsZGVyKCk7CisgICAgPGZvbGQgdGV4dD0nTXkgY29kZSc+Ly8gPGVkaXRvci1mb2xkIGRlc2M9Ik15IGNvZGUiPgorICAgIHMuYXBwZW5kKCJhIik7CisgICAgcy5hcHBlbmQoImIiKTsKKyAgICAvLyA8L2VkaXRvci1mb2xkPjwvZm9sZD4KKyAgICBTeXN0ZW0ub3V0LnByaW50bG4ocy50b1N0cmluZygpKTsKKyAgfTwvZm9sZD4KKyAgLy8gPC9lZGl0b3ItZm9sZD48L2ZvbGQ+Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2ZvbGRpbmcvRW5kT2ZMaW5lQ29tbWVudHMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9mb2xkaW5nL0VuZE9mTGluZUNvbW1lbnRzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDUzNmZjMwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9mb2xkaW5nL0VuZE9mTGluZUNvbW1lbnRzLmphdmEKQEAgLTAsMCArMSwxNCBAQAorY2xhc3MgVGVzdCB7CisgIAorICA8Zm9sZCB0ZXh0PScvLy4uLic+Ly8gY2xhc3MtbGV2ZWwgZm9sZGluZzEKKyAgLy8gY2xhc3MtbGV2ZWwgZm9sZGluZzI8L2ZvbGQ+CisgIAorICBwdWJsaWMgdm9pZCBmb28oKSA8Zm9sZCB0ZXh0PSd7Li4ufSc+eworICAgIDxmb2xkIHRleHQ9Jy8vLi4uJz4vLyBtZXRob2QtbGV2ZWwgZm9sZGluZzEKKyAgICAvLyBtZXRob2QtbGV2ZWwgZm9sZGluZzI8L2ZvbGQ+CisgICAgaW50IGkgPSAxOworICAgIC8vIG1ldGhvZC1sZXZlbCBmb2xkaW5nMgorICB9PC9mb2xkPgorCisgIC8vIGNsYXNzLWxldmVsIGZvbGRpbmczCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2dlbmVyYXRlQ29uc3RydWN0b3IvYWZ0ZXJBYnN0cmFjdENsYXNzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZ2VuZXJhdGVDb25zdHJ1Y3Rvci9hZnRlckFic3RyYWN0Q2xhc3MuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZTg1MGIxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2dlbmVyYXRlQ29uc3RydWN0b3IvYWZ0ZXJBYnN0cmFjdENsYXNzLmphdmEKQEAgLTAsMCArMSw0IEBACitwdWJsaWMgYWJzdHJhY3QgY2xhc3MgVGVzdCB7CisgICAgcHJvdGVjdGVkIFRlc3QoKSB7PGNhcmV0PgorICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9nZW5lcmF0ZUNvbnN0cnVjdG9yL2FmdGVyQm91bmRDb21tZW50cy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2dlbmVyYXRlQ29uc3RydWN0b3IvYWZ0ZXJCb3VuZENvbW1lbnRzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDljNjdjNwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9nZW5lcmF0ZUNvbnN0cnVjdG9yL2FmdGVyQm91bmRDb21tZW50cy5qYXZhCkBAIC0wLDAgKzEsOSBAQAorcHVibGljIGNsYXNzIEZvbyB7CisgICAgcHVibGljIEZvbygpIHs8Y2FyZXQ+CisgICAgfQorICAgIC8vIE1ldGhvZCBjb21tZW50CisKKyAgICBwdWJsaWMgU3RyaW5nIGdldFNvbWVHZXR0ZXIoKSB7CisgICAgICAgIHJldHVybiBudWxsOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9nZW5lcmF0ZUNvbnN0cnVjdG9yL2FmdGVyQm91bmRDb21tZW50c0tlZXBzQmxhbmtMaW5lLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZ2VuZXJhdGVDb25zdHJ1Y3Rvci9hZnRlckJvdW5kQ29tbWVudHNLZWVwc0JsYW5rTGluZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQzYjMzNWEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZ2VuZXJhdGVDb25zdHJ1Y3Rvci9hZnRlckJvdW5kQ29tbWVudHNLZWVwc0JsYW5rTGluZS5qYXZhCkBAIC0wLDAgKzEsMTEgQEAKK3B1YmxpYyBjbGFzcyBGb28geworCisgICAgcHVibGljIEZvbygpIHs8Y2FyZXQ+CisgICAgfQorCisgICAgLy8gTWV0aG9kIGNvbW1lbnQKKworICAgIHB1YmxpYyBTdHJpbmcgZ2V0U29tZUdldHRlcigpIHsKKyAgICAgICAgcmV0dXJuIG51bGw7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2dlbmVyYXRlQ29uc3RydWN0b3IvYWZ0ZXJFbnVtV2l0aEFic3RyYWN0TWV0aG9kLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZ2VuZXJhdGVDb25zdHJ1Y3Rvci9hZnRlckVudW1XaXRoQWJzdHJhY3RNZXRob2QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMTJiYzk0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2dlbmVyYXRlQ29uc3RydWN0b3IvYWZ0ZXJFbnVtV2l0aEFic3RyYWN0TWV0aG9kLmphdmEKQEAgLTAsMCArMSwxMiBAQAorcHVibGljIGVudW0gT3BlcmF0aW9uIHsKKyAgICBQTFVTIHsKKyAgICAgICAgaW50IGV2YWwoaW50IHgsIGludCB5KSB7CisgICAgICAgICAgICByZXR1cm4geCArIHk7CisgICAgICAgIH0KKyAgICB9OworCisgICAgYWJzdHJhY3QgaW50IGV2YWwoaW50IHgsIGludCB5KTsKKworICAgIHByaXZhdGUgT3BlcmF0aW9uKCkgeworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZ2VuZXJhdGVDb25zdHJ1Y3Rvci9hZnRlckZpbmFsRmllbGRQcmVzZWxlY3Rpb24uamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9nZW5lcmF0ZUNvbnN0cnVjdG9yL2FmdGVyRmluYWxGaWVsZFByZXNlbGVjdGlvbi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJkNDAyYTkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZ2VuZXJhdGVDb25zdHJ1Y3Rvci9hZnRlckZpbmFsRmllbGRQcmVzZWxlY3Rpb24uamF2YQpAQCAtMCwwICsxLDExIEBACitjbGFzcyBUZXN0IHsKKyAgICBwcml2YXRlIGludCBhOworICAgIHByaXZhdGUgZmluYWwgaW50IGI7CisgICAgcHJpdmF0ZSBpbnQgYzsKKyAgICBwcml2YXRlIGZpbmFsIGludCBkOworCisgICAgVGVzdChpbnQgYiwgaW50IGQpIHsKKyAgICAgICAgdGhpcy5iID0gYjsKKyAgICAgICAgdGhpcy5kID0gZDsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2dlbmVyYXRlQ29uc3RydWN0b3IvYWZ0ZXJJbW1lZGlhdGVseUFmdGVyUkJyYWNlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZ2VuZXJhdGVDb25zdHJ1Y3Rvci9hZnRlckltbWVkaWF0ZWx5QWZ0ZXJSQnJhY2UuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNWI5ODU4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2dlbmVyYXRlQ29uc3RydWN0b3IvYWZ0ZXJJbW1lZGlhdGVseUFmdGVyUkJyYWNlLmphdmEKQEAgLTAsMCArMSw1IEBACitjbGFzcyBBCit7CisgICAgQSgpIHsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZ2VuZXJhdGVDb25zdHJ1Y3Rvci9hZnRlck5vTW9yZUNvbnN0cnVjdG9yc0NhbkJlR2VuZXJhdGVkLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZ2VuZXJhdGVDb25zdHJ1Y3Rvci9hZnRlck5vTW9yZUNvbnN0cnVjdG9yc0NhbkJlR2VuZXJhdGVkLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWUxOGY5OQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9nZW5lcmF0ZUNvbnN0cnVjdG9yL2FmdGVyTm9Nb3JlQ29uc3RydWN0b3JzQ2FuQmVHZW5lcmF0ZWQuamF2YQpAQCAtMCwwICsxLDYgQEAKK3B1YmxpYyBjbGFzcyBUZXN0IHsKKyAgPGNhcmV0PgorCisgIHB1YmxpYyBUZXN0KCkgeworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2dlbmVyYXRlQ29uc3RydWN0b3IvYWZ0ZXJQYWNrYWdlTG9jYWxDbGFzcy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2dlbmVyYXRlQ29uc3RydWN0b3IvYWZ0ZXJQYWNrYWdlTG9jYWxDbGFzcy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBkOWIwYWQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZ2VuZXJhdGVDb25zdHJ1Y3Rvci9hZnRlclBhY2thZ2VMb2NhbENsYXNzLmphdmEKQEAgLTAsMCArMSw0IEBACitjbGFzcyBUZXN0IHsKKyAgICBUZXN0KCkgezxjYXJldD4KKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZ2VuZXJhdGVDb25zdHJ1Y3Rvci9hZnRlclByaXZhdGVDbGFzcy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2dlbmVyYXRlQ29uc3RydWN0b3IvYWZ0ZXJQcml2YXRlQ2xhc3MuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xOTkwNjE2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2dlbmVyYXRlQ29uc3RydWN0b3IvYWZ0ZXJQcml2YXRlQ2xhc3MuamF2YQpAQCAtMCwwICsxLDYgQEAKK2NsYXNzIFRlc3QgeworICBwcml2YXRlIGNsYXNzIEZvbyB7CisgICAgICBwcml2YXRlIEZvbygpIHs8Y2FyZXQ+CisgICAgICB9CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9nZW5lcmF0ZUNvbnN0cnVjdG9yL2FmdGVyU2FtZU5hbWVkRmllbGRzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZ2VuZXJhdGVDb25zdHJ1Y3Rvci9hZnRlclNhbWVOYW1lZEZpZWxkcy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIzODhiYzMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZ2VuZXJhdGVDb25zdHJ1Y3Rvci9hZnRlclNhbWVOYW1lZEZpZWxkcy5qYXZhCkBAIC0wLDAgKzEsMTYgQEAKK3B1YmxpYyBjbGFzcyBDbGFzIGV4dGVuZHMgQ2xhczJ7CisgICAgaW50IGZvbzsKKworICAgIHB1YmxpYyBDbGFzKGludCBmb28sIGludCBmb28xKSB7PGNhcmV0PgorICAgICAgICBzdXBlcihmb28pOworICAgICAgICBmb28gPSBmb28xOworICAgIH0KK30KKworY2xhc3MgQ2xhczIgeworICAgIGludCBmb287CisKKyAgICBDbGFzMihpbnQgZm9vKSB7CisgICAgICAgIHRoaXMuZm9vID0gZm9vOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9nZW5lcmF0ZUNvbnN0cnVjdG9yL2FmdGVyU3Vic3RpdHV0aW9uLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZ2VuZXJhdGVDb25zdHJ1Y3Rvci9hZnRlclN1YnN0aXR1dGlvbi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY0NTc5NTZhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2dlbmVyYXRlQ29uc3RydWN0b3IvYWZ0ZXJTdWJzdGl0dXRpb24uamF2YQpAQCAtMCwwICsxLDEzIEBACitjbGFzcyBQYXJlbnQ8VD4geworICBUIGZpZWxkOworCisgIHB1YmxpYyBQYXJlbnQoVCBmaWVsZCkgeworICAgIHRoaXMuZmllbGQgPSBmaWVsZDsKKyAgfQorfQorCitjbGFzcyBDaGlsZDxJbnRlZ2VyPiBleHRlbmRzIFBhcmVudDxJbnRlZ2VyPiB7CisgICAgQ2hpbGQoSW50ZWdlciBmaWVsZCkgeworICAgICAgICBzdXBlcihmaWVsZCk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2dlbmVyYXRlQ29uc3RydWN0b3IvYmVmb3JlQWJzdHJhY3RDbGFzcy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2dlbmVyYXRlQ29uc3RydWN0b3IvYmVmb3JlQWJzdHJhY3RDbGFzcy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRjZjlhMGMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZ2VuZXJhdGVDb25zdHJ1Y3Rvci9iZWZvcmVBYnN0cmFjdENsYXNzLmphdmEKQEAgLTAsMCArMSwzIEBACitwdWJsaWMgYWJzdHJhY3QgY2xhc3MgVGVzdCB7CisgIDxjYXJldD4KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9nZW5lcmF0ZUNvbnN0cnVjdG9yL2JlZm9yZUJvdW5kQ29tbWVudHMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9nZW5lcmF0ZUNvbnN0cnVjdG9yL2JlZm9yZUJvdW5kQ29tbWVudHMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYTVmODUxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2dlbmVyYXRlQ29uc3RydWN0b3IvYmVmb3JlQm91bmRDb21tZW50cy5qYXZhCkBAIC0wLDAgKzEsOSBAQAorcHVibGljIGNsYXNzIEZvbyB7CisgICAgPGNhcmV0PgorCisgICAgLy8gTWV0aG9kIGNvbW1lbnQKKworICAgIHB1YmxpYyBTdHJpbmcgZ2V0U29tZUdldHRlcigpIHsKKyAgICAgICAgcmV0dXJuIG51bGw7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2dlbmVyYXRlQ29uc3RydWN0b3IvYmVmb3JlQm91bmRDb21tZW50c0tlZXBzQmxhbmtMaW5lLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZ2VuZXJhdGVDb25zdHJ1Y3Rvci9iZWZvcmVCb3VuZENvbW1lbnRzS2VlcHNCbGFua0xpbmUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZTA2MDFiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2dlbmVyYXRlQ29uc3RydWN0b3IvYmVmb3JlQm91bmRDb21tZW50c0tlZXBzQmxhbmtMaW5lLmphdmEKQEAgLTAsMCArMSwxMCBAQAorcHVibGljIGNsYXNzIEZvbyB7CisKKyAgICA8Y2FyZXQ+CisKKyAgICAvLyBNZXRob2QgY29tbWVudAorCisgICAgcHVibGljIFN0cmluZyBnZXRTb21lR2V0dGVyKCkgeworICAgICAgICByZXR1cm4gbnVsbDsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZ2VuZXJhdGVDb25zdHJ1Y3Rvci9iZWZvcmVFbnVtV2l0aEFic3RyYWN0TWV0aG9kLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZ2VuZXJhdGVDb25zdHJ1Y3Rvci9iZWZvcmVFbnVtV2l0aEFic3RyYWN0TWV0aG9kLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGRmNDA4ZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9nZW5lcmF0ZUNvbnN0cnVjdG9yL2JlZm9yZUVudW1XaXRoQWJzdHJhY3RNZXRob2QuamF2YQpAQCAtMCwwICsxLDEwIEBACitwdWJsaWMgZW51bSBPcGVyYXRpb24geworICAgIFBMVVMgeworICAgICAgICBpbnQgZXZhbChpbnQgeCwgaW50IHkpIHsKKyAgICAgICAgICAgIHJldHVybiB4ICsgeTsKKyAgICAgICAgfQorICAgIH07CisKKyAgICBhYnN0cmFjdCBpbnQgZXZhbChpbnQgeCwgaW50IHkpOworICAgIDxjYXJldD4KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZ2VuZXJhdGVDb25zdHJ1Y3Rvci9iZWZvcmVGaW5hbEZpZWxkUHJlc2VsZWN0aW9uLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZ2VuZXJhdGVDb25zdHJ1Y3Rvci9iZWZvcmVGaW5hbEZpZWxkUHJlc2VsZWN0aW9uLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTc0NTlhNQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9nZW5lcmF0ZUNvbnN0cnVjdG9yL2JlZm9yZUZpbmFsRmllbGRQcmVzZWxlY3Rpb24uamF2YQpAQCAtMCwwICsxLDYgQEAKK2NsYXNzIFRlc3QgeworICAgIHByaXZhdGUgaW50IGE7CisgICAgcHJpdmF0ZSBmaW5hbCBpbnQgYjsKKyAgICBwcml2YXRlIGludCBjOworICAgIHByaXZhdGUgZmluYWwgaW50IGQ7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2dlbmVyYXRlQ29uc3RydWN0b3IvYmVmb3JlSW1tZWRpYXRlbHlBZnRlclJCcmFjZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2dlbmVyYXRlQ29uc3RydWN0b3IvYmVmb3JlSW1tZWRpYXRlbHlBZnRlclJCcmFjZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmExNTRlZTEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZ2VuZXJhdGVDb25zdHJ1Y3Rvci9iZWZvcmVJbW1lZGlhdGVseUFmdGVyUkJyYWNlLmphdmEKQEAgLTAsMCArMSwzIEBACitjbGFzcyBBCit7PGNhcmV0PgorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2dlbmVyYXRlQ29uc3RydWN0b3IvYmVmb3JlTm9Nb3JlQ29uc3RydWN0b3JzQ2FuQmVHZW5lcmF0ZWQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9nZW5lcmF0ZUNvbnN0cnVjdG9yL2JlZm9yZU5vTW9yZUNvbnN0cnVjdG9yc0NhbkJlR2VuZXJhdGVkLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWUxOGY5OQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9nZW5lcmF0ZUNvbnN0cnVjdG9yL2JlZm9yZU5vTW9yZUNvbnN0cnVjdG9yc0NhbkJlR2VuZXJhdGVkLmphdmEKQEAgLTAsMCArMSw2IEBACitwdWJsaWMgY2xhc3MgVGVzdCB7CisgIDxjYXJldD4KKworICBwdWJsaWMgVGVzdCgpIHsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9nZW5lcmF0ZUNvbnN0cnVjdG9yL2JlZm9yZVBhY2thZ2VMb2NhbENsYXNzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZ2VuZXJhdGVDb25zdHJ1Y3Rvci9iZWZvcmVQYWNrYWdlTG9jYWxDbGFzcy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkxMjU0MDMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZ2VuZXJhdGVDb25zdHJ1Y3Rvci9iZWZvcmVQYWNrYWdlTG9jYWxDbGFzcy5qYXZhCkBAIC0wLDAgKzEsMyBAQAorY2xhc3MgVGVzdCB7CisgIDxjYXJldD4KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9nZW5lcmF0ZUNvbnN0cnVjdG9yL2JlZm9yZVByaXZhdGVDbGFzcy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2dlbmVyYXRlQ29uc3RydWN0b3IvYmVmb3JlUHJpdmF0ZUNsYXNzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWVjNjlmMQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9nZW5lcmF0ZUNvbnN0cnVjdG9yL2JlZm9yZVByaXZhdGVDbGFzcy5qYXZhCkBAIC0wLDAgKzEsNSBAQAorY2xhc3MgVGVzdCB7CisgIHByaXZhdGUgY2xhc3MgRm9vIHsKKyAgPGNhcmV0PgorICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZ2VuZXJhdGVDb25zdHJ1Y3Rvci9iZWZvcmVTYW1lTmFtZWRGaWVsZHMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9nZW5lcmF0ZUNvbnN0cnVjdG9yL2JlZm9yZVNhbWVOYW1lZEZpZWxkcy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU4N2E4ZjIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZ2VuZXJhdGVDb25zdHJ1Y3Rvci9iZWZvcmVTYW1lTmFtZWRGaWVsZHMuamF2YQpAQCAtMCwwICsxLDEyIEBACitwdWJsaWMgY2xhc3MgQ2xhcyBleHRlbmRzIENsYXMyeworICAgIGludCBmb287CisgICAgPGNhcmV0PgorfQorCitjbGFzcyBDbGFzMiB7CisgICAgaW50IGZvbzsKKworICAgIENsYXMyKGludCBmb28pIHsKKyAgICAgICAgdGhpcy5mb28gPSBmb287CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2dlbmVyYXRlQ29uc3RydWN0b3IvYmVmb3JlU3Vic3RpdHV0aW9uLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZ2VuZXJhdGVDb25zdHJ1Y3Rvci9iZWZvcmVTdWJzdGl0dXRpb24uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNzYwYjllCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2dlbmVyYXRlQ29uc3RydWN0b3IvYmVmb3JlU3Vic3RpdHV0aW9uLmphdmEKQEAgLTAsMCArMSwxMiBAQAorY2xhc3MgUGFyZW50PFQ+IHsKKyAgVCBmaWVsZDsKKworICBwdWJsaWMgUGFyZW50KFQgZmllbGQpIHsKKyAgICB0aGlzLmZpZWxkID0gZmllbGQ7CisgIH0KK30KKworY2xhc3MgQ2hpbGQ8SW50ZWdlcj4gZXh0ZW5kcyBQYXJlbnQ8SW50ZWdlcj4geworICAgPGNhcmV0PgorCit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZ2VuZXJhdGVKYXZhZG9jL2FmdGVyMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2dlbmVyYXRlSmF2YWRvYy9hZnRlcjEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZDdjYzU3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2dlbmVyYXRlSmF2YWRvYy9hZnRlcjEuamF2YQpAQCAtMCwwICsxLDcgQEAKK2NsYXNzIFRlc3QgeworICAgIC8qKgorICAgICAqIDxjYXJldD4KKyAgICAgKiBAcmV0dXJuCisgICAgICovCisgICAgcHVibGljIFN0cmluZyBmb28oKSB7fQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9nZW5lcmF0ZUphdmFkb2MvYWZ0ZXIyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZ2VuZXJhdGVKYXZhZG9jL2FmdGVyMi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA1ZWE5MTYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZ2VuZXJhdGVKYXZhZG9jL2FmdGVyMi5qYXZhCkBAIC0wLDAgKzEsOSBAQAorY2xhc3MgVGVzdCB7CisgICAgLyoqCisgICAgICogPGNhcmV0PgorICAgICAqIEBwYXJhbSBhCisgICAgICogQHBhcmFtIHBhcmFtCisgICAgICogQHBhcmFtIGRkZAorICAgICAqLworICAgIHB1YmxpYyB2b2lkIGZvbyhpbnQgYSwgU3RyaW5nIHBhcmFtLCBkb3VibGUgZGRkKSB7fQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9nZW5lcmF0ZUphdmFkb2MvYWZ0ZXIzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZ2VuZXJhdGVKYXZhZG9jL2FmdGVyMy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg2NzVlZWEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZ2VuZXJhdGVKYXZhZG9jL2FmdGVyMy5qYXZhCkBAIC0wLDAgKzEsNyBAQAorY2xhc3MgVGVzdCB7CisgICAgLyoqCisgICAgICogPGNhcmV0PgorICAgICAqIEB0aHJvd3MgSU9FeGNlcHRpb24KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBmb28oKSB0aHJvd3MgSU9FeGNlcHRpb24ge30KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZ2VuZXJhdGVKYXZhZG9jL2FmdGVySWRlYWRldjIzMjguamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9nZW5lcmF0ZUphdmFkb2MvYWZ0ZXJJZGVhZGV2MjMyOC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU1ZTI3MmEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZ2VuZXJhdGVKYXZhZG9jL2FmdGVySWRlYWRldjIzMjguamF2YQpAQCAtMCwwICsxLDggQEAKK2NsYXNzIFRlc3QgeworICAgIC8qKgorICAgICAqIDxjYXJldD4KKyAgICAgKi8KKyAgdm9pZCB0ZXN0KCkgeworICAgIFN0cmluZyBzb21ldGhpbmcgPSAiLyoqIHNvbWV0aGluZyAqLyI7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZ2VuZXJhdGVKYXZhZG9jL2FmdGVySWRlYWRldjIzMjhfMi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2dlbmVyYXRlSmF2YWRvYy9hZnRlcklkZWFkZXYyMzI4XzIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YjYxNzdkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2dlbmVyYXRlSmF2YWRvYy9hZnRlcklkZWFkZXYyMzI4XzIuamF2YQpAQCAtMCwwICsxLDkgQEAKK2NsYXNzIFRlc3QgeworICAgIC8qKgorICAgICAqIDxjYXJldD4KKyAgICAgKgorICAgICAqICJzdHJpbmciICovCisgIHZvaWQgdGVzdCgpIHsKKyAgICBTdHJpbmcgc29tZXRoaW5nID0gIiI7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZ2VuZXJhdGVKYXZhZG9jL2JlZm9yZTEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9nZW5lcmF0ZUphdmFkb2MvYmVmb3JlMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI3ZTI4NzgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZ2VuZXJhdGVKYXZhZG9jL2JlZm9yZTEuamF2YQpAQCAtMCwwICsxLDQgQEAKK2NsYXNzIFRlc3QgeworICAgIC8qKjxjYXJldD4KKyAgICBwdWJsaWMgU3RyaW5nIGZvbygpIHt9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2dlbmVyYXRlSmF2YWRvYy9iZWZvcmUyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZ2VuZXJhdGVKYXZhZG9jL2JlZm9yZTIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYjc4ZDQ0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2dlbmVyYXRlSmF2YWRvYy9iZWZvcmUyLmphdmEKQEAgLTAsMCArMSw0IEBACitjbGFzcyBUZXN0IHsKKyAgICAvKio8Y2FyZXQ+CisgICAgcHVibGljIHZvaWQgZm9vKGludCBhLCBTdHJpbmcgcGFyYW0sIGRvdWJsZSBkZGQpIHt9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2dlbmVyYXRlSmF2YWRvYy9iZWZvcmUzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZ2VuZXJhdGVKYXZhZG9jL2JlZm9yZTMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMzAwMTU3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2dlbmVyYXRlSmF2YWRvYy9iZWZvcmUzLmphdmEKQEAgLTAsMCArMSw0IEBACitjbGFzcyBUZXN0IHsKKyAgICAvKio8Y2FyZXQ+CisgICAgcHVibGljIHZvaWQgZm9vKCkgdGhyb3dzIElPRXhjZXB0aW9uIHt9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2dlbmVyYXRlSmF2YWRvYy9iZWZvcmVJZGVhZGV2MjMyOC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2dlbmVyYXRlSmF2YWRvYy9iZWZvcmVJZGVhZGV2MjMyOC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjViOTViYWMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZ2VuZXJhdGVKYXZhZG9jL2JlZm9yZUlkZWFkZXYyMzI4LmphdmEKQEAgLTAsMCArMSw2IEBACitjbGFzcyBUZXN0IHsKKyAgLyoqPGNhcmV0PgorICB2b2lkIHRlc3QoKSB7CisgICAgU3RyaW5nIHNvbWV0aGluZyA9ICIvKiogc29tZXRoaW5nICovIjsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9nZW5lcmF0ZUphdmFkb2MvYmVmb3JlSWRlYWRldjIzMjhfMi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2dlbmVyYXRlSmF2YWRvYy9iZWZvcmVJZGVhZGV2MjMyOF8yLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2NlM2MxNAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9nZW5lcmF0ZUphdmFkb2MvYmVmb3JlSWRlYWRldjIzMjhfMi5qYXZhCkBAIC0wLDAgKzEsOCBAQAorY2xhc3MgVGVzdCB7CisgICAgLyoqPGNhcmV0PgorICAgICAqCisgICAgICogInN0cmluZyIgKi8KKyAgdm9pZCB0ZXN0KCkgeworICAgIFN0cmluZyBzb21ldGhpbmcgPSAiIjsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9nZW5lcmF0aW9uL3N1cnJvdW5kV2l0aC9qYXZhL0NvbW1lbnRBc0ZpcnN0Q29kZUJsb2NrU3Vycm91bmRTdGF0ZW1lbnQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9nZW5lcmF0aW9uL3N1cnJvdW5kV2l0aC9qYXZhL0NvbW1lbnRBc0ZpcnN0Q29kZUJsb2NrU3Vycm91bmRTdGF0ZW1lbnQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZGRkMDE0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2dlbmVyYXRpb24vc3Vycm91bmRXaXRoL2phdmEvQ29tbWVudEFzRmlyc3RDb2RlQmxvY2tTdXJyb3VuZFN0YXRlbWVudC5qYXZhCkBAIC0wLDAgKzEsNiBAQAorY2xhc3MgVGVzdCB7CisgICAgdm9pZCBmb28oKSB7CisgICAgICAgIDxzZWxlY3Rpb24+Ly8gVGhpcyBpcyBjb21tZW50IgorICAgICAgICAgICAgaW50IGkgPSAxOzwvc2VsZWN0aW9uPgorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZ2VuZXJhdGlvbi9zdXJyb3VuZFdpdGgvamF2YS9Db21tZW50QXNGaXJzdENvZGVCbG9ja1N1cnJvdW5kU3RhdGVtZW50X2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZ2VuZXJhdGlvbi9zdXJyb3VuZFdpdGgvamF2YS9Db21tZW50QXNGaXJzdENvZGVCbG9ja1N1cnJvdW5kU3RhdGVtZW50X2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDFiMjkzYgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9nZW5lcmF0aW9uL3N1cnJvdW5kV2l0aC9qYXZhL0NvbW1lbnRBc0ZpcnN0Q29kZUJsb2NrU3Vycm91bmRTdGF0ZW1lbnRfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDkgQEAKK2NsYXNzIFRlc3QgeworICAgIHZvaWQgZm9vKCkgeworICAgICAgICB7CisgICAgICAgICAgICAvLyBUaGlzIGlzIGNvbW1lbnQiCisgICAgICAgICAgICBpbnQgaSA9IDE7CisgICAgICAgIH08Y2FyZXQ+CisKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2dlbmVyYXRpb24vc3Vycm91bmRXaXRoL2phdmEvQ29tbWVudEFzRmlyc3REb1doaWxlU3Vycm91bmRTdGF0ZW1lbnQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9nZW5lcmF0aW9uL3N1cnJvdW5kV2l0aC9qYXZhL0NvbW1lbnRBc0ZpcnN0RG9XaGlsZVN1cnJvdW5kU3RhdGVtZW50LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2RkZDAxNAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9nZW5lcmF0aW9uL3N1cnJvdW5kV2l0aC9qYXZhL0NvbW1lbnRBc0ZpcnN0RG9XaGlsZVN1cnJvdW5kU3RhdGVtZW50LmphdmEKQEAgLTAsMCArMSw2IEBACitjbGFzcyBUZXN0IHsKKyAgICB2b2lkIGZvbygpIHsKKyAgICAgICAgPHNlbGVjdGlvbj4vLyBUaGlzIGlzIGNvbW1lbnQiCisgICAgICAgICAgICBpbnQgaSA9IDE7PC9zZWxlY3Rpb24+CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9nZW5lcmF0aW9uL3N1cnJvdW5kV2l0aC9qYXZhL0NvbW1lbnRBc0ZpcnN0RG9XaGlsZVN1cnJvdW5kU3RhdGVtZW50X2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZ2VuZXJhdGlvbi9zdXJyb3VuZFdpdGgvamF2YS9Db21tZW50QXNGaXJzdERvV2hpbGVTdXJyb3VuZFN0YXRlbWVudF9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk2NTM4YjAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZ2VuZXJhdGlvbi9zdXJyb3VuZFdpdGgvamF2YS9Db21tZW50QXNGaXJzdERvV2hpbGVTdXJyb3VuZFN0YXRlbWVudF9hZnRlci5qYXZhCkBAIC0wLDAgKzEsOCBAQAorY2xhc3MgVGVzdCB7CisgICAgdm9pZCBmb28oKSB7CisgICAgICAgIGRvIHsKKyAgICAgICAgICAgIC8vIFRoaXMgaXMgY29tbWVudCIKKyAgICAgICAgICAgIGludCBpID0gMTsKKyAgICAgICAgfSB3aGlsZSAoPGNhcmV0PjxzZWxlY3Rpb24+dHJ1ZTwvc2VsZWN0aW9uPik7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9nZW5lcmF0aW9uL3N1cnJvdW5kV2l0aC9qYXZhL0NvbW1lbnRBc0ZpcnN0Rm9yU3Vycm91bmRTdGF0ZW1lbnQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9nZW5lcmF0aW9uL3N1cnJvdW5kV2l0aC9qYXZhL0NvbW1lbnRBc0ZpcnN0Rm9yU3Vycm91bmRTdGF0ZW1lbnQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZGRkMDE0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2dlbmVyYXRpb24vc3Vycm91bmRXaXRoL2phdmEvQ29tbWVudEFzRmlyc3RGb3JTdXJyb3VuZFN0YXRlbWVudC5qYXZhCkBAIC0wLDAgKzEsNiBAQAorY2xhc3MgVGVzdCB7CisgICAgdm9pZCBmb28oKSB7CisgICAgICAgIDxzZWxlY3Rpb24+Ly8gVGhpcyBpcyBjb21tZW50IgorICAgICAgICAgICAgaW50IGkgPSAxOzwvc2VsZWN0aW9uPgorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZ2VuZXJhdGlvbi9zdXJyb3VuZFdpdGgvamF2YS9Db21tZW50QXNGaXJzdEZvclN1cnJvdW5kU3RhdGVtZW50X2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZ2VuZXJhdGlvbi9zdXJyb3VuZFdpdGgvamF2YS9Db21tZW50QXNGaXJzdEZvclN1cnJvdW5kU3RhdGVtZW50X2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2MwNDJiZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9nZW5lcmF0aW9uL3N1cnJvdW5kV2l0aC9qYXZhL0NvbW1lbnRBc0ZpcnN0Rm9yU3Vycm91bmRTdGF0ZW1lbnRfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDggQEAKK2NsYXNzIFRlc3QgeworICAgIHZvaWQgZm9vKCkgeworICAgICAgICBmb3IgKDxjYXJldD4pIHsKKyAgICAgICAgICAgIC8vIFRoaXMgaXMgY29tbWVudCIKKyAgICAgICAgICAgIGludCBpID0gMTsKKyAgICAgICAgfQorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZ2VuZXJhdGlvbi9zdXJyb3VuZFdpdGgvamF2YS9Db21tZW50QXNGaXJzdElmRWxzZVN1cnJvdW5kU3RhdGVtZW50LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZ2VuZXJhdGlvbi9zdXJyb3VuZFdpdGgvamF2YS9Db21tZW50QXNGaXJzdElmRWxzZVN1cnJvdW5kU3RhdGVtZW50LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTE1NDk0YQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9nZW5lcmF0aW9uL3N1cnJvdW5kV2l0aC9qYXZhL0NvbW1lbnRBc0ZpcnN0SWZFbHNlU3Vycm91bmRTdGF0ZW1lbnQuamF2YQpAQCAtMCwwICsxLDYgQEAKK2NsYXNzIFRlc3QgeworICAgIHZvaWQgZm9vKCkgeworICAgICAgICA8c2VsZWN0aW9uPi8vIFRoaXMgaXMgY29tbWVudCIKKyAgICAgICAgaW50IGkgPSAxOzwvc2VsZWN0aW9uPgorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZ2VuZXJhdGlvbi9zdXJyb3VuZFdpdGgvamF2YS9Db21tZW50QXNGaXJzdElmRWxzZVN1cnJvdW5kU3RhdGVtZW50X2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZ2VuZXJhdGlvbi9zdXJyb3VuZFdpdGgvamF2YS9Db21tZW50QXNGaXJzdElmRWxzZVN1cnJvdW5kU3RhdGVtZW50X2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmFiMzNhNQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9nZW5lcmF0aW9uL3N1cnJvdW5kV2l0aC9qYXZhL0NvbW1lbnRBc0ZpcnN0SWZFbHNlU3Vycm91bmRTdGF0ZW1lbnRfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDkgQEAKK2NsYXNzIFRlc3QgeworICAgIHZvaWQgZm9vKCkgeworICAgICAgICBpZiAoPGNhcmV0PikgeworICAgICAgICAgICAgLy8gVGhpcyBpcyBjb21tZW50IgorICAgICAgICAgICAgaW50IGkgPSAxOworICAgICAgICB9IGVsc2UgeworICAgICAgICB9CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9nZW5lcmF0aW9uL3N1cnJvdW5kV2l0aC9qYXZhL0NvbW1lbnRBc0ZpcnN0SWZTdXJyb3VuZFN0YXRlbWVudC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2dlbmVyYXRpb24vc3Vycm91bmRXaXRoL2phdmEvQ29tbWVudEFzRmlyc3RJZlN1cnJvdW5kU3RhdGVtZW50LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2RkZDAxNAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9nZW5lcmF0aW9uL3N1cnJvdW5kV2l0aC9qYXZhL0NvbW1lbnRBc0ZpcnN0SWZTdXJyb3VuZFN0YXRlbWVudC5qYXZhCkBAIC0wLDAgKzEsNiBAQAorY2xhc3MgVGVzdCB7CisgICAgdm9pZCBmb28oKSB7CisgICAgICAgIDxzZWxlY3Rpb24+Ly8gVGhpcyBpcyBjb21tZW50IgorICAgICAgICAgICAgaW50IGkgPSAxOzwvc2VsZWN0aW9uPgorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZ2VuZXJhdGlvbi9zdXJyb3VuZFdpdGgvamF2YS9Db21tZW50QXNGaXJzdElmU3Vycm91bmRTdGF0ZW1lbnRfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9nZW5lcmF0aW9uL3N1cnJvdW5kV2l0aC9qYXZhL0NvbW1lbnRBc0ZpcnN0SWZTdXJyb3VuZFN0YXRlbWVudF9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRhODkyN2EKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZ2VuZXJhdGlvbi9zdXJyb3VuZFdpdGgvamF2YS9Db21tZW50QXNGaXJzdElmU3Vycm91bmRTdGF0ZW1lbnRfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDggQEAKK2NsYXNzIFRlc3QgeworICAgIHZvaWQgZm9vKCkgeworICAgICAgICBpZiAoPGNhcmV0PikgeworICAgICAgICAgICAgLy8gVGhpcyBpcyBjb21tZW50IgorICAgICAgICAgICAgaW50IGkgPSAxOworICAgICAgICB9CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9nZW5lcmF0aW9uL3N1cnJvdW5kV2l0aC9qYXZhL0NvbW1lbnRBc0ZpcnN0UnVubmFibGVTdXJyb3VuZFN0YXRlbWVudC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2dlbmVyYXRpb24vc3Vycm91bmRXaXRoL2phdmEvQ29tbWVudEFzRmlyc3RSdW5uYWJsZVN1cnJvdW5kU3RhdGVtZW50LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzAzNWJlMwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9nZW5lcmF0aW9uL3N1cnJvdW5kV2l0aC9qYXZhL0NvbW1lbnRBc0ZpcnN0UnVubmFibGVTdXJyb3VuZFN0YXRlbWVudC5qYXZhCkBAIC0wLDAgKzEsNiBAQAorY2xhc3MgVGVzdCB7CisgICAgdm9pZCBmb28oKSB7CisgICAgICAgIDxzZWxlY3Rpb24+PGNhcmV0Pi8vIFRoaXMgaXMgY29tbWVudCIKKyAgICAgICAgICAgIGludCBpID0gMTsKKzwvc2VsZWN0aW9uPiAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2dlbmVyYXRpb24vc3Vycm91bmRXaXRoL2phdmEvQ29tbWVudEFzRmlyc3RSdW5uYWJsZVN1cnJvdW5kU3RhdGVtZW50X2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZ2VuZXJhdGlvbi9zdXJyb3VuZFdpdGgvamF2YS9Db21tZW50QXNGaXJzdFJ1bm5hYmxlU3Vycm91bmRTdGF0ZW1lbnRfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMGFlOThhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2dlbmVyYXRpb24vc3Vycm91bmRXaXRoL2phdmEvQ29tbWVudEFzRmlyc3RSdW5uYWJsZVN1cnJvdW5kU3RhdGVtZW50X2FmdGVyLmphdmEKQEAgLTAsMCArMSwxMCBAQAorY2xhc3MgVGVzdCB7CisgICAgdm9pZCBmb28oKSB7CisgICAgICAgIDxjYXJldD5SdW5uYWJsZSBydW5uYWJsZSA9IG5ldyBSdW5uYWJsZSgpIHsKKyAgICAgICAgICAgIHB1YmxpYyB2b2lkIHJ1bigpIHsKKyAgICAgICAgICAgICAgICAvLyBUaGlzIGlzIGNvbW1lbnQiCisgICAgICAgICAgICAgICAgaW50IGkgPSAxOworICAgICAgICAgICAgfQorICAgICAgICB9OworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZ2VuZXJhdGlvbi9zdXJyb3VuZFdpdGgvamF2YS9Db21tZW50QXNGaXJzdFN5bmNocm9uaXplZFN1cnJvdW5kU3RhdGVtZW50LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZ2VuZXJhdGlvbi9zdXJyb3VuZFdpdGgvamF2YS9Db21tZW50QXNGaXJzdFN5bmNocm9uaXplZFN1cnJvdW5kU3RhdGVtZW50LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2RkZDAxNAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9nZW5lcmF0aW9uL3N1cnJvdW5kV2l0aC9qYXZhL0NvbW1lbnRBc0ZpcnN0U3luY2hyb25pemVkU3Vycm91bmRTdGF0ZW1lbnQuamF2YQpAQCAtMCwwICsxLDYgQEAKK2NsYXNzIFRlc3QgeworICAgIHZvaWQgZm9vKCkgeworICAgICAgICA8c2VsZWN0aW9uPi8vIFRoaXMgaXMgY29tbWVudCIKKyAgICAgICAgICAgIGludCBpID0gMTs8L3NlbGVjdGlvbj4KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2dlbmVyYXRpb24vc3Vycm91bmRXaXRoL2phdmEvQ29tbWVudEFzRmlyc3RTeW5jaHJvbml6ZWRTdXJyb3VuZFN0YXRlbWVudF9hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2dlbmVyYXRpb24vc3Vycm91bmRXaXRoL2phdmEvQ29tbWVudEFzRmlyc3RTeW5jaHJvbml6ZWRTdXJyb3VuZFN0YXRlbWVudF9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAxNTFiNjQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZ2VuZXJhdGlvbi9zdXJyb3VuZFdpdGgvamF2YS9Db21tZW50QXNGaXJzdFN5bmNocm9uaXplZFN1cnJvdW5kU3RhdGVtZW50X2FmdGVyLmphdmEKQEAgLTAsMCArMSw4IEBACitjbGFzcyBUZXN0IHsKKyAgICB2b2lkIGZvbygpIHsKKyAgICAgICAgc3luY2hyb25pemVkICg8Y2FyZXQ+KSB7CisgICAgICAgICAgICAvLyBUaGlzIGlzIGNvbW1lbnQiCisgICAgICAgICAgICBpbnQgaSA9IDE7CisgICAgICAgIH0KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2dlbmVyYXRpb24vc3Vycm91bmRXaXRoL2phdmEvQ29tbWVudEFzRmlyc3RUcnlDYXRjaEZpbmFsbHlTdXJyb3VuZFN0YXRlbWVudC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2dlbmVyYXRpb24vc3Vycm91bmRXaXRoL2phdmEvQ29tbWVudEFzRmlyc3RUcnlDYXRjaEZpbmFsbHlTdXJyb3VuZFN0YXRlbWVudC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNkZGQwMTQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZ2VuZXJhdGlvbi9zdXJyb3VuZFdpdGgvamF2YS9Db21tZW50QXNGaXJzdFRyeUNhdGNoRmluYWxseVN1cnJvdW5kU3RhdGVtZW50LmphdmEKQEAgLTAsMCArMSw2IEBACitjbGFzcyBUZXN0IHsKKyAgICB2b2lkIGZvbygpIHsKKyAgICAgICAgPHNlbGVjdGlvbj4vLyBUaGlzIGlzIGNvbW1lbnQiCisgICAgICAgICAgICBpbnQgaSA9IDE7PC9zZWxlY3Rpb24+CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9nZW5lcmF0aW9uL3N1cnJvdW5kV2l0aC9qYXZhL0NvbW1lbnRBc0ZpcnN0VHJ5Q2F0Y2hGaW5hbGx5U3Vycm91bmRTdGF0ZW1lbnRfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9nZW5lcmF0aW9uL3N1cnJvdW5kV2l0aC9qYXZhL0NvbW1lbnRBc0ZpcnN0VHJ5Q2F0Y2hGaW5hbGx5U3Vycm91bmRTdGF0ZW1lbnRfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wOThkMDg2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2dlbmVyYXRpb24vc3Vycm91bmRXaXRoL2phdmEvQ29tbWVudEFzRmlyc3RUcnlDYXRjaEZpbmFsbHlTdXJyb3VuZFN0YXRlbWVudF9hZnRlci5qYXZhCkBAIC0wLDAgKzEsMTEgQEAKK2NsYXNzIFRlc3QgeworICAgIHZvaWQgZm9vKCkgeworICAgICAgICB0cnkgeworICAgICAgICAgICAgLy8gVGhpcyBpcyBjb21tZW50IgorICAgICAgICAgICAgaW50IGkgPSAxOworICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgPGNhcmV0PjxzZWxlY3Rpb24+ZS5wcmludFN0YWNrVHJhY2UoKTsgIC8vVG8gY2hhbmdlIGJvZHkgb2YgY2F0Y2ggc3RhdGVtZW50IHVzZSBGaWxlIHwgU2V0dGluZ3MgfCBGaWxlIFRlbXBsYXRlcy48L3NlbGVjdGlvbj4KKyAgICAgICAgfSBmaW5hbGx5IHsKKyAgICAgICAgfQorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZ2VuZXJhdGlvbi9zdXJyb3VuZFdpdGgvamF2YS9Db21tZW50QXNGaXJzdFRyeUNhdGNoU3Vycm91bmRTdGF0ZW1lbnQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9nZW5lcmF0aW9uL3N1cnJvdW5kV2l0aC9qYXZhL0NvbW1lbnRBc0ZpcnN0VHJ5Q2F0Y2hTdXJyb3VuZFN0YXRlbWVudC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNkZGQwMTQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZ2VuZXJhdGlvbi9zdXJyb3VuZFdpdGgvamF2YS9Db21tZW50QXNGaXJzdFRyeUNhdGNoU3Vycm91bmRTdGF0ZW1lbnQuamF2YQpAQCAtMCwwICsxLDYgQEAKK2NsYXNzIFRlc3QgeworICAgIHZvaWQgZm9vKCkgeworICAgICAgICA8c2VsZWN0aW9uPi8vIFRoaXMgaXMgY29tbWVudCIKKyAgICAgICAgICAgIGludCBpID0gMTs8L3NlbGVjdGlvbj4KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2dlbmVyYXRpb24vc3Vycm91bmRXaXRoL2phdmEvQ29tbWVudEFzRmlyc3RUcnlDYXRjaFN1cnJvdW5kU3RhdGVtZW50X2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZ2VuZXJhdGlvbi9zdXJyb3VuZFdpdGgvamF2YS9Db21tZW50QXNGaXJzdFRyeUNhdGNoU3Vycm91bmRTdGF0ZW1lbnRfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NTA2Y2U4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2dlbmVyYXRpb24vc3Vycm91bmRXaXRoL2phdmEvQ29tbWVudEFzRmlyc3RUcnlDYXRjaFN1cnJvdW5kU3RhdGVtZW50X2FmdGVyLmphdmEKQEAgLTAsMCArMSwxMCBAQAorY2xhc3MgVGVzdCB7CisgICAgdm9pZCBmb28oKSB7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICAvLyBUaGlzIGlzIGNvbW1lbnQiCisgICAgICAgICAgICBpbnQgaSA9IDE7CisgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICA8Y2FyZXQ+PHNlbGVjdGlvbj5lLnByaW50U3RhY2tUcmFjZSgpOyAgLy9UbyBjaGFuZ2UgYm9keSBvZiBjYXRjaCBzdGF0ZW1lbnQgdXNlIEZpbGUgfCBTZXR0aW5ncyB8IEZpbGUgVGVtcGxhdGVzLjwvc2VsZWN0aW9uPgorICAgICAgICB9CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9nZW5lcmF0aW9uL3N1cnJvdW5kV2l0aC9qYXZhL0NvbW1lbnRBc0ZpcnN0VHJ5RmluYWxseVN1cnJvdW5kU3RhdGVtZW50LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZ2VuZXJhdGlvbi9zdXJyb3VuZFdpdGgvamF2YS9Db21tZW50QXNGaXJzdFRyeUZpbmFsbHlTdXJyb3VuZFN0YXRlbWVudC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNkZGQwMTQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZ2VuZXJhdGlvbi9zdXJyb3VuZFdpdGgvamF2YS9Db21tZW50QXNGaXJzdFRyeUZpbmFsbHlTdXJyb3VuZFN0YXRlbWVudC5qYXZhCkBAIC0wLDAgKzEsNiBAQAorY2xhc3MgVGVzdCB7CisgICAgdm9pZCBmb28oKSB7CisgICAgICAgIDxzZWxlY3Rpb24+Ly8gVGhpcyBpcyBjb21tZW50IgorICAgICAgICAgICAgaW50IGkgPSAxOzwvc2VsZWN0aW9uPgorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZ2VuZXJhdGlvbi9zdXJyb3VuZFdpdGgvamF2YS9Db21tZW50QXNGaXJzdFRyeUZpbmFsbHlTdXJyb3VuZFN0YXRlbWVudF9hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2dlbmVyYXRpb24vc3Vycm91bmRXaXRoL2phdmEvQ29tbWVudEFzRmlyc3RUcnlGaW5hbGx5U3Vycm91bmRTdGF0ZW1lbnRfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41Njc3YTZjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2dlbmVyYXRpb24vc3Vycm91bmRXaXRoL2phdmEvQ29tbWVudEFzRmlyc3RUcnlGaW5hbGx5U3Vycm91bmRTdGF0ZW1lbnRfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDEwIEBACitjbGFzcyBUZXN0IHsKKyAgICB2b2lkIGZvbygpIHsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIC8vIFRoaXMgaXMgY29tbWVudCIKKyAgICAgICAgICAgIGludCBpID0gMTsKKyAgICAgICAgfSBmaW5hbGx5IHsKKyAgICAgICAgICAgIDxjYXJldD4KKyAgICAgICAgfQorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZ2VuZXJhdGlvbi9zdXJyb3VuZFdpdGgvamF2YS9Db21tZW50QXNGaXJzdFdoaWxlU3Vycm91bmRTdGF0ZW1lbnQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9nZW5lcmF0aW9uL3N1cnJvdW5kV2l0aC9qYXZhL0NvbW1lbnRBc0ZpcnN0V2hpbGVTdXJyb3VuZFN0YXRlbWVudC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNkZGQwMTQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZ2VuZXJhdGlvbi9zdXJyb3VuZFdpdGgvamF2YS9Db21tZW50QXNGaXJzdFdoaWxlU3Vycm91bmRTdGF0ZW1lbnQuamF2YQpAQCAtMCwwICsxLDYgQEAKK2NsYXNzIFRlc3QgeworICAgIHZvaWQgZm9vKCkgeworICAgICAgICA8c2VsZWN0aW9uPi8vIFRoaXMgaXMgY29tbWVudCIKKyAgICAgICAgICAgIGludCBpID0gMTs8L3NlbGVjdGlvbj4KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2dlbmVyYXRpb24vc3Vycm91bmRXaXRoL2phdmEvQ29tbWVudEFzRmlyc3RXaGlsZVN1cnJvdW5kU3RhdGVtZW50X2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZ2VuZXJhdGlvbi9zdXJyb3VuZFdpdGgvamF2YS9Db21tZW50QXNGaXJzdFdoaWxlU3Vycm91bmRTdGF0ZW1lbnRfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43M2UyYzc4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2dlbmVyYXRpb24vc3Vycm91bmRXaXRoL2phdmEvQ29tbWVudEFzRmlyc3RXaGlsZVN1cnJvdW5kU3RhdGVtZW50X2FmdGVyLmphdmEKQEAgLTAsMCArMSw4IEBACitjbGFzcyBUZXN0IHsKKyAgICB2b2lkIGZvbygpIHsKKyAgICAgICAgd2hpbGUgKDxjYXJldD48c2VsZWN0aW9uPnRydWU8L3NlbGVjdGlvbj4pIHsKKyAgICAgICAgICAgIC8vIFRoaXMgaXMgY29tbWVudCIKKyAgICAgICAgICAgIGludCBpID0gMTsKKyAgICAgICAgfQorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZ2VuZXJhdGlvbi9zdXJyb3VuZFdpdGgvamF2YS9TdXJyb3VuZEFzc2lnbm1lbnRXaXRoQ2FzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2dlbmVyYXRpb24vc3Vycm91bmRXaXRoL2phdmEvU3Vycm91bmRBc3NpZ25tZW50V2l0aENhc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MDIyNzY4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2dlbmVyYXRpb24vc3Vycm91bmRXaXRoL2phdmEvU3Vycm91bmRBc3NpZ25tZW50V2l0aENhc3QuamF2YQpAQCAtMCwwICsxLDcgQEAKK2NsYXNzIFRlc3QgeworICB2b2lkIGZvbyhpbnQgYSwgZG91YmxlIGIpIHsKKyAgICBpZiAoPHNlbGVjdGlvbj48Y2FyZXQ+YSA9IGI8L3NlbGVjdGlvbj4pIHsKKworICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9nZW5lcmF0aW9uL3N1cnJvdW5kV2l0aC9qYXZhL1N1cnJvdW5kQXNzaWdubWVudFdpdGhDYXN0X2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZ2VuZXJhdGlvbi9zdXJyb3VuZFdpdGgvamF2YS9TdXJyb3VuZEFzc2lnbm1lbnRXaXRoQ2FzdF9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUyMzNjZGIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZ2VuZXJhdGlvbi9zdXJyb3VuZFdpdGgvamF2YS9TdXJyb3VuZEFzc2lnbm1lbnRXaXRoQ2FzdF9hZnRlci5qYXZhCkBAIC0wLDAgKzEsNyBAQAorY2xhc3MgVGVzdCB7CisgIHZvaWQgZm9vKGludCBhLCBkb3VibGUgYikgeworICAgIGlmICgoKDxjYXJldD4pIChhID0gYikpKSB7CisKKyAgICB9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZ2VuZXJhdGlvbi9zdXJyb3VuZFdpdGgvamF2YS9TdXJyb3VuZEJpbmFyeVdpdGhDYXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZ2VuZXJhdGlvbi9zdXJyb3VuZFdpdGgvamF2YS9TdXJyb3VuZEJpbmFyeVdpdGhDYXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmNjYzA0NgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9nZW5lcmF0aW9uL3N1cnJvdW5kV2l0aC9qYXZhL1N1cnJvdW5kQmluYXJ5V2l0aENhc3QuamF2YQpAQCAtMCwwICsxLDcgQEAKK2NsYXNzIFRlc3QgeworICB2b2lkIGZvbyhpbnQgYSwgZG91YmxlIGIpIHsKKyAgICBpZiAoPHNlbGVjdGlvbj48Y2FyZXQ+YSArIGIgKyAxPC9zZWxlY3Rpb24+KSB7CisKKyAgICB9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZ2VuZXJhdGlvbi9zdXJyb3VuZFdpdGgvamF2YS9TdXJyb3VuZEJpbmFyeVdpdGhDYXN0X2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZ2VuZXJhdGlvbi9zdXJyb3VuZFdpdGgvamF2YS9TdXJyb3VuZEJpbmFyeVdpdGhDYXN0X2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWQ5MDhhNgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9nZW5lcmF0aW9uL3N1cnJvdW5kV2l0aC9qYXZhL1N1cnJvdW5kQmluYXJ5V2l0aENhc3RfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDcgQEAKK2NsYXNzIFRlc3QgeworICB2b2lkIGZvbyhpbnQgYSwgZG91YmxlIGIpIHsKKyAgICBpZiAoKCg8Y2FyZXQ+KSAoYSArIGIgKyAxKSkpIHsKKworICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9nZW5lcmF0aW9uL3N1cnJvdW5kV2l0aC9qYXZhL1N1cnJvdW5kQ29uZGl0aW9uYWxXaXRoQ2FzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2dlbmVyYXRpb24vc3Vycm91bmRXaXRoL2phdmEvU3Vycm91bmRDb25kaXRpb25hbFdpdGhDYXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2IxOTQ1OQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9nZW5lcmF0aW9uL3N1cnJvdW5kV2l0aC9qYXZhL1N1cnJvdW5kQ29uZGl0aW9uYWxXaXRoQ2FzdC5qYXZhCkBAIC0wLDAgKzEsNyBAQAorY2xhc3MgVGVzdCB7CisgIHZvaWQgZm9vKGludCBhLCBkb3VibGUgYikgeworICAgIGlmICg8c2VsZWN0aW9uPjxjYXJldD50cnVlID8gYSA6IGI8L3NlbGVjdGlvbj4pIHsKKworICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9nZW5lcmF0aW9uL3N1cnJvdW5kV2l0aC9qYXZhL1N1cnJvdW5kQ29uZGl0aW9uYWxXaXRoQ2FzdF9hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2dlbmVyYXRpb24vc3Vycm91bmRXaXRoL2phdmEvU3Vycm91bmRDb25kaXRpb25hbFdpdGhDYXN0X2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTZkOWQwMAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9nZW5lcmF0aW9uL3N1cnJvdW5kV2l0aC9qYXZhL1N1cnJvdW5kQ29uZGl0aW9uYWxXaXRoQ2FzdF9hZnRlci5qYXZhCkBAIC0wLDAgKzEsNyBAQAorY2xhc3MgVGVzdCB7CisgIHZvaWQgZm9vKGludCBhLCBkb3VibGUgYikgeworICAgIGlmICgoKDxjYXJldD4pICh0cnVlID8gYSA6IGIpKSkgeworCisgICAgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2dlbmVyYXRpb24vc3Vycm91bmRXaXRoL2phdmEvU3Vycm91bmRFeHByZXNzaW9uV2l0aENhc3RFbXB0eUxpbmVBZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2dlbmVyYXRpb24vc3Vycm91bmRXaXRoL2phdmEvU3Vycm91bmRFeHByZXNzaW9uV2l0aENhc3RFbXB0eUxpbmVBZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQwNTc4NDgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZ2VuZXJhdGlvbi9zdXJyb3VuZFdpdGgvamF2YS9TdXJyb3VuZEV4cHJlc3Npb25XaXRoQ2FzdEVtcHR5TGluZUFmdGVyLmphdmEKQEAgLTAsMCArMSw2IEBACitjbGFzcyBUZXN0IHsKKyAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgeworICAgICAgPHNlbGVjdGlvbj5hcmdzPC9zZWxlY3Rpb24+CisKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9nZW5lcmF0aW9uL3N1cnJvdW5kV2l0aC9qYXZhL1N1cnJvdW5kRXhwcmVzc2lvbldpdGhDYXN0RW1wdHlMaW5lQWZ0ZXJfMi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2dlbmVyYXRpb24vc3Vycm91bmRXaXRoL2phdmEvU3Vycm91bmRFeHByZXNzaW9uV2l0aENhc3RFbXB0eUxpbmVBZnRlcl8yLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDA1Nzg0OAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9nZW5lcmF0aW9uL3N1cnJvdW5kV2l0aC9qYXZhL1N1cnJvdW5kRXhwcmVzc2lvbldpdGhDYXN0RW1wdHlMaW5lQWZ0ZXJfMi5qYXZhCkBAIC0wLDAgKzEsNiBAQAorY2xhc3MgVGVzdCB7CisgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKKyAgICAgIDxzZWxlY3Rpb24+YXJnczwvc2VsZWN0aW9uPgorCisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZ2VuZXJhdGlvbi9zdXJyb3VuZFdpdGgvamF2YS9TdXJyb3VuZEV4cHJlc3Npb25XaXRoQ2FzdEVtcHR5TGluZUFmdGVyXzJfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9nZW5lcmF0aW9uL3N1cnJvdW5kV2l0aC9qYXZhL1N1cnJvdW5kRXhwcmVzc2lvbldpdGhDYXN0RW1wdHlMaW5lQWZ0ZXJfMl9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM5YjI0NWYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZ2VuZXJhdGlvbi9zdXJyb3VuZFdpdGgvamF2YS9TdXJyb3VuZEV4cHJlc3Npb25XaXRoQ2FzdEVtcHR5TGluZUFmdGVyXzJfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDYgQEAKK2NsYXNzIFRlc3QgeworICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CisgICAgICAoKCkgYXJncyk8Y2FyZXQ+CisKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9nZW5lcmF0aW9uL3N1cnJvdW5kV2l0aC9qYXZhL1N1cnJvdW5kRXhwcmVzc2lvbldpdGhDYXN0RW1wdHlMaW5lQWZ0ZXJfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9nZW5lcmF0aW9uL3N1cnJvdW5kV2l0aC9qYXZhL1N1cnJvdW5kRXhwcmVzc2lvbldpdGhDYXN0RW1wdHlMaW5lQWZ0ZXJfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZTQ5YzI1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2dlbmVyYXRpb24vc3Vycm91bmRXaXRoL2phdmEvU3Vycm91bmRFeHByZXNzaW9uV2l0aENhc3RFbXB0eUxpbmVBZnRlcl9hZnRlci5qYXZhCkBAIC0wLDAgKzEsNiBAQAorY2xhc3MgVGVzdCB7CisgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKKyAgICAgICgodmFyKSBhcmdzKTxjYXJldD4KKworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2dlbmVyYXRpb24vc3Vycm91bmRXaXRoL2phdmEvU3Vycm91bmROb25FeHByZXNzaW9uV2l0aENhc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9nZW5lcmF0aW9uL3N1cnJvdW5kV2l0aC9qYXZhL1N1cnJvdW5kTm9uRXhwcmVzc2lvbldpdGhDYXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzJhMThhZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9nZW5lcmF0aW9uL3N1cnJvdW5kV2l0aC9qYXZhL1N1cnJvdW5kTm9uRXhwcmVzc2lvbldpdGhDYXN0LmphdmEKQEAgLTAsMCArMSw4IEBACitjbGFzcyBUZXN0IHsKKyAgdm9pZCBmb28oKSB7CisgICAgU3RyaW5nIGEgPSAiIiwgYiA9ICIiLCBjID0gIiI7CisgICAgaWYgKGEgKyA8c2VsZWN0aW9uPmIgKyBjPC9zZWxlY3Rpb24+KSB7CisKKyAgICB9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZ2VuZXJhdGlvbi9zdXJyb3VuZFdpdGgvamF2YS9TdXJyb3VuZE5vbkV4cHJlc3Npb25XaXRoQ2FzdF9hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2dlbmVyYXRpb24vc3Vycm91bmRXaXRoL2phdmEvU3Vycm91bmROb25FeHByZXNzaW9uV2l0aENhc3RfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NTllNDQyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2dlbmVyYXRpb24vc3Vycm91bmRXaXRoL2phdmEvU3Vycm91bmROb25FeHByZXNzaW9uV2l0aENhc3RfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDggQEAKK2NsYXNzIFRlc3QgeworICB2b2lkIGZvbygpIHsKKyAgICBTdHJpbmcgYSA9ICIiLCBiID0gIiIsIGMgPSAiIjsKKyAgICBpZiAoYSArICgoKSAoYiArIGMpKSkgeworCisgICAgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2dlbmVyYXRpb24vc3Vycm91bmRXaXRoL2phdmEvU3Vycm91bmROb25FeHByZXNzaW9uV2l0aE5vdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2dlbmVyYXRpb24vc3Vycm91bmRXaXRoL2phdmEvU3Vycm91bmROb25FeHByZXNzaW9uV2l0aE5vdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhmM2Y4NGIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZ2VuZXJhdGlvbi9zdXJyb3VuZFdpdGgvamF2YS9TdXJyb3VuZE5vbkV4cHJlc3Npb25XaXRoTm90LmphdmEKQEAgLTAsMCArMSw4IEBACitjbGFzcyBUZXN0IHsKKyAgdm9pZCBmb28oKSB7CisgICAgYm9vbGVhbiBhID0gZmFsc2UsIGIgPSBmYWxzZSwgYyA9IGZhbHNlOworICAgIGlmIChhICYmIDxzZWxlY3Rpb24+YiAmJiBjPC9zZWxlY3Rpb24+KSB7CisKKyAgICB9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZ2VuZXJhdGlvbi9zdXJyb3VuZFdpdGgvamF2YS9TdXJyb3VuZE5vbkV4cHJlc3Npb25XaXRoTm90X2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZ2VuZXJhdGlvbi9zdXJyb3VuZFdpdGgvamF2YS9TdXJyb3VuZE5vbkV4cHJlc3Npb25XaXRoTm90X2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWU2OGMzYWYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZ2VuZXJhdGlvbi9zdXJyb3VuZFdpdGgvamF2YS9TdXJyb3VuZE5vbkV4cHJlc3Npb25XaXRoTm90X2FmdGVyLmphdmEKQEAgLTAsMCArMSw4IEBACitjbGFzcyBUZXN0IHsKKyAgdm9pZCBmb28oKSB7CisgICAgYm9vbGVhbiBhID0gZmFsc2UsIGIgPSBmYWxzZSwgYyA9IGZhbHNlOworICAgIGlmIChhICYmICEoYiAmJiBjKSkgeworCisgICAgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2dlbmVyYXRpb24vc3Vycm91bmRXaXRoL2phdmEvU3Vycm91bmROb25FeHByZXNzaW9uV2l0aFBhcmVudGhlc2lzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZ2VuZXJhdGlvbi9zdXJyb3VuZFdpdGgvamF2YS9TdXJyb3VuZE5vbkV4cHJlc3Npb25XaXRoUGFyZW50aGVzaXMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNDg0MTk2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2dlbmVyYXRpb24vc3Vycm91bmRXaXRoL2phdmEvU3Vycm91bmROb25FeHByZXNzaW9uV2l0aFBhcmVudGhlc2lzLmphdmEKQEAgLTAsMCArMSw4IEBACitjbGFzcyBUZXN0IHsKKyAgdm9pZCBmb28oKSB7CisgICAgaW50IGEgPSAwLCBiID0gMCwgYyA9IDA7CisgICAgaWYgKGEgKyA8c2VsZWN0aW9uPmIgKyBjPC9zZWxlY3Rpb24+KSB7CisKKyAgICB9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZ2VuZXJhdGlvbi9zdXJyb3VuZFdpdGgvamF2YS9TdXJyb3VuZE5vbkV4cHJlc3Npb25XaXRoUGFyZW50aGVzaXNfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9nZW5lcmF0aW9uL3N1cnJvdW5kV2l0aC9qYXZhL1N1cnJvdW5kTm9uRXhwcmVzc2lvbldpdGhQYXJlbnRoZXNpc19hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUwNjA1NWQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZ2VuZXJhdGlvbi9zdXJyb3VuZFdpdGgvamF2YS9TdXJyb3VuZE5vbkV4cHJlc3Npb25XaXRoUGFyZW50aGVzaXNfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDggQEAKK2NsYXNzIFRlc3QgeworICB2b2lkIGZvbygpIHsKKyAgICBpbnQgYSA9IDAsIGIgPSAwLCBjID0gMDsKKyAgICBpZiAoYSArIChiICsgYykpIHsKKworICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9nZW5lcmF0aW9uL3N1cnJvdW5kV2l0aC9qYXZhL1N1cnJvdW5kV2l0aE5vdE51bGxDaGVjay5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2dlbmVyYXRpb24vc3Vycm91bmRXaXRoL2phdmEvU3Vycm91bmRXaXRoTm90TnVsbENoZWNrLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTMwMTAyMQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9nZW5lcmF0aW9uL3N1cnJvdW5kV2l0aC9qYXZhL1N1cnJvdW5kV2l0aE5vdE51bGxDaGVjay5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKKworY2xhc3MgVGVzdCB7CisgIFN0cmluZyBmb28oKSB7CisgICAgcmV0dXJuIG51bGw7CisgIH0KKyAgCisgIHZvaWQgYmFyKCkgeworICAgIDxzZWxlY3Rpb24+Zm9vKCk8L3NlbGVjdGlvbj4udG9Mb3dlckNhc2UoKQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2dlbmVyYXRpb24vc3Vycm91bmRXaXRoL2phdmEvU3Vycm91bmRXaXRoTm90TnVsbENoZWNrX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvZ2VuZXJhdGlvbi9zdXJyb3VuZFdpdGgvamF2YS9TdXJyb3VuZFdpdGhOb3ROdWxsQ2hlY2tfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNzBhOTEwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2dlbmVyYXRpb24vc3Vycm91bmRXaXRoL2phdmEvU3Vycm91bmRXaXRoTm90TnVsbENoZWNrX2FmdGVyLmphdmEKQEAgLTAsMCArMSwxMiBAQAorCitjbGFzcyBUZXN0IHsKKyAgU3RyaW5nIGZvbygpIHsKKyAgICByZXR1cm4gbnVsbDsKKyAgfQorICAKKyAgdm9pZCBiYXIoKSB7CisgICAgICBpZiAoZm9vKCkgIT0gbnVsbCkgeworICAgICAgICAgIGZvbygpLnRvTG93ZXJDYXNlKCk8Y2FyZXQ+CisgICAgICB9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvaGlnaGxpZ2h0VXNhZ2VzSGFuZGxlci9IaWdobGlnaHRPdmVycmlkZGVuLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvaGlnaGxpZ2h0VXNhZ2VzSGFuZGxlci9IaWdobGlnaHRPdmVycmlkZGVuLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjRiYzliYwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9oaWdobGlnaHRVc2FnZXNIYW5kbGVyL0hpZ2hsaWdodE92ZXJyaWRkZW4uamF2YQpAQCAtMCwwICsxLDcgQEAKK2NsYXNzIFVzYWdlIGV4dGVuZHM8Y2FyZXQ+IEJhc2V7CisgIHZvaWQgZm9vKCkgeworICB9Cit9CitjbGFzcyBCYXNlIHsKK3ZvaWQgZm9vKCl7fQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9oaWdobGlnaHRVc2FnZXNIYW5kbGVyL0hpZ2hsaWdodE92ZXJyaWRkZW5JbXBsZW1lbnRzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvaGlnaGxpZ2h0VXNhZ2VzSGFuZGxlci9IaWdobGlnaHRPdmVycmlkZGVuSW1wbGVtZW50cy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU5NDFmZmIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvaGlnaGxpZ2h0VXNhZ2VzSGFuZGxlci9IaWdobGlnaHRPdmVycmlkZGVuSW1wbGVtZW50cy5qYXZhCkBAIC0wLDAgKzEsNyBAQAorY2xhc3MgVXNhZ2UgPGNhcmV0PmltcGxlbWVudHMgQmFzZXsKKyAgdm9pZCBmb28oKSB7CisgIH0KK30KK2ludGVyZmFjZSBCYXNlIHsKK3ZvaWQgZm9vKCk7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2hpZ2hsaWdodFVzYWdlc0hhbmRsZXIvSGlnaGxpZ2h0T3ZlcnJpZGRlbk11bHRpcGxlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvaGlnaGxpZ2h0VXNhZ2VzSGFuZGxlci9IaWdobGlnaHRPdmVycmlkZGVuTXVsdGlwbGUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYzFlMTgxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2hpZ2hsaWdodFVzYWdlc0hhbmRsZXIvSGlnaGxpZ2h0T3ZlcnJpZGRlbk11bHRpcGxlLmphdmEKQEAgLTAsMCArMSwxMSBAQAorY2xhc3MgVXNhZ2UgPGNhcmV0PmltcGxlbWVudHMgQmFzZSwgT3RoZXJ7CisgIHB1YmxpYyB2b2lkIGZvbygpIHsKKyAgfQorICBwdWJsaWMgdm9pZCBvdGhlcigpIHt9Cit9CitpbnRlcmZhY2UgQmFzZSB7Cit2b2lkIGZvbygpOworfQoraW50ZXJmYWNlIE90aGVyIHsKK3ZvaWQgb3RoZXIoKTsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvaGlnaGxpZ2h0VXNhZ2VzSGFuZGxlci9IaWdobGlnaHRPdmVycmlkZGVuTm90aGluZy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2hpZ2hsaWdodFVzYWdlc0hhbmRsZXIvSGlnaGxpZ2h0T3ZlcnJpZGRlbk5vdGhpbmcuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZGFhMzkzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2hpZ2hsaWdodFVzYWdlc0hhbmRsZXIvSGlnaGxpZ2h0T3ZlcnJpZGRlbk5vdGhpbmcuamF2YQpAQCAtMCwwICsxLDcgQEAKK2NsYXNzIFVzYWdlIDxjYXJldD5leHRlbmRzIEJhc2V7CisgIHZvaWQgZm9vMygpIHsKKyAgfQorfQorY2xhc3MgQmFzZSB7Cit2b2lkIGZvbygpIHt9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2hpZ2hsaWdodFVzYWdlc0hhbmRsZXIvU2ltcGxlVGhyb3dzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvaGlnaGxpZ2h0VXNhZ2VzSGFuZGxlci9TaW1wbGVUaHJvd3MuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNjg1MjQxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2hpZ2hsaWdodFVzYWdlc0hhbmRsZXIvU2ltcGxlVGhyb3dzLmphdmEKQEAgLTAsMCArMSw1IEBACitjbGFzcyBDYWxjdWxhdG9yIHsKKyAgICBwdWJsaWMgdm9pZCBwcmludEVycm9yKFN0cmluZyBkZXRhaWwsIGludCBsaW5lLCBTdHJpbmcgZmlsZSkgPGNhcmV0PnRocm93cyBFeGNlcHRpb24geworICAgICAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2hpZ2hsaWdodFVzYWdlc0hhbmRsZXIvVGhyb3dzRXhwcmVzc2lvbi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2hpZ2hsaWdodFVzYWdlc0hhbmRsZXIvVGhyb3dzRXhwcmVzc2lvbi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE5M2ZhNjEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvaGlnaGxpZ2h0VXNhZ2VzSGFuZGxlci9UaHJvd3NFeHByZXNzaW9uLmphdmEKQEAgLTAsMCArMSw1IEBACitjbGFzcyBDYWxjdWxhdG9yIHsKKyAgICBwdWJsaWMgdm9pZCBwcmludEVycm9yKE9iamVjdCBkZXRhaWwsIGludCBsaW5lLCBTdHJpbmcgZmlsZSkgPGNhcmV0PnRocm93cyBFeGNlcHRpb24geworICAgICAgICB0aHJvdyAoRXhjZXB0aW9uKWRldGFpbDsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvaGlnaGxpZ2h0VXNhZ2VzSGFuZGxlci9UaHJvd3NSZWZlcmVuY2UuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9oaWdobGlnaHRVc2FnZXNIYW5kbGVyL1Rocm93c1JlZmVyZW5jZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk1MmI4NTUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvaGlnaGxpZ2h0VXNhZ2VzSGFuZGxlci9UaHJvd3NSZWZlcmVuY2UuamF2YQpAQCAtMCwwICsxLDUgQEAKK2NsYXNzIENhbGN1bGF0b3IgeworICAgIHB1YmxpYyB2b2lkIHByaW50RXJyb3IoRXhjZXB0aW9uIGRldGFpbCwgaW50IGxpbmUsIFN0cmluZyBmaWxlKSA8Y2FyZXQ+dGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgICAgIHRocm93IGRldGFpbDsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvaGlnaGxpZ2h0VXNhZ2VzSGFuZGxlci9VbnNlbGVjdFVzYWdlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvaGlnaGxpZ2h0VXNhZ2VzSGFuZGxlci9VbnNlbGVjdFVzYWdlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWIyNDY1OQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9oaWdobGlnaHRVc2FnZXNIYW5kbGVyL1Vuc2VsZWN0VXNhZ2UuamF2YQpAQCAtMCwwICsxLDYgQEAKK2NsYXNzIFVzYWdlIHsKKyAgdm9pZCBmb28oKSB7CisgICAgIGZvbygpOworICAgICA8Y2FyZXQ+Zm9vKCk7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvaW52ZXJ0SWZDb25kaXRpb24vYWZ0ZXJDb25kaXRpb24xLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvaW52ZXJ0SWZDb25kaXRpb24vYWZ0ZXJDb25kaXRpb24xLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGVkY2RhNAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9pbnZlcnRJZkNvbmRpdGlvbi9hZnRlckNvbmRpdGlvbjEuamF2YQpAQCAtMCwwICsxLDExIEBACisvLyAiSW52ZXJ0IElmIENvbmRpdGlvbiIgInRydWUiCitjbGFzcyBBIHsKKyAgICBwdWJsaWMgdm9pZCBmb28oKSB7CisgICAgICAgIDxjYXJldD5pZiAoIWMpIHsKKyAgICAgICAgICAgIGIoKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGEoKTsKKyAgICAgICAgfQorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvaW52ZXJ0SWZDb25kaXRpb24vYWZ0ZXJDb25kaXRpb24yLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvaW52ZXJ0SWZDb25kaXRpb24vYWZ0ZXJDb25kaXRpb24yLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTQ0NDU2MgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9pbnZlcnRJZkNvbmRpdGlvbi9hZnRlckNvbmRpdGlvbjIuamF2YQpAQCAtMCwwICsxLDExIEBACisvLyAiSW52ZXJ0IElmIENvbmRpdGlvbiIgInRydWUiCitjbGFzcyBBIHsKKyAgICBwdWJsaWMgdm9pZCBmb28oKSB7CisgICAgICAgIDxjYXJldD5pZiAoKCFjKSkgeworICAgICAgICAgICAgYigpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgYSgpOworICAgICAgICB9CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9pbnZlcnRJZkNvbmRpdGlvbi9hZnRlckNvbmRpdGlvbkVxLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvaW52ZXJ0SWZDb25kaXRpb24vYWZ0ZXJDb25kaXRpb25FcS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEyNDk1OTAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvaW52ZXJ0SWZDb25kaXRpb24vYWZ0ZXJDb25kaXRpb25FcS5qYXZhCkBAIC0wLDAgKzEsMTEgQEAKKy8vICJJbnZlcnQgSWYgQ29uZGl0aW9uIiAidHJ1ZSIKK2NsYXNzIEEgeworICAgIHB1YmxpYyB2b2lkIGZvbygpIHsKKyAgICAgICAgPGNhcmV0PmlmIChjICE9IGQpIHsKKyAgICAgICAgICAgIGIoKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGEoKTsKKyAgICAgICAgfQorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvaW52ZXJ0SWZDb25kaXRpb24vYWZ0ZXJDb25kaXRpb25OZXEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9pbnZlcnRJZkNvbmRpdGlvbi9hZnRlckNvbmRpdGlvbk5lcS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMxNDc3ODMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvaW52ZXJ0SWZDb25kaXRpb24vYWZ0ZXJDb25kaXRpb25OZXEuamF2YQpAQCAtMCwwICsxLDExIEBACisvLyAiSW52ZXJ0IElmIENvbmRpdGlvbiIgInRydWUiCitjbGFzcyBBIHsKKyAgICBwdWJsaWMgdm9pZCBmb28oKSB7CisgICAgICAgIDxjYXJldD5pZiAoYyA9PSBkKSB7CisgICAgICAgICAgICBiKCk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBhKCk7CisgICAgICAgIH0KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2ludmVydElmQ29uZGl0aW9uL2FmdGVyQ29uZGl0aW9uTm90LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvaW52ZXJ0SWZDb25kaXRpb24vYWZ0ZXJDb25kaXRpb25Ob3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMTQ0ZDgxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2ludmVydElmQ29uZGl0aW9uL2FmdGVyQ29uZGl0aW9uTm90LmphdmEKQEAgLTAsMCArMSwxMSBAQAorLy8gIkludmVydCBJZiBDb25kaXRpb24iICJ0cnVlIgorY2xhc3MgQSB7CisgICAgcHVibGljIHZvaWQgZm9vKCkgeworICAgICAgICA8Y2FyZXQ+aWYgKGMpIHsKKyAgICAgICAgICAgIGIoKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGEoKTsKKyAgICAgICAgfQorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvaW52ZXJ0SWZDb25kaXRpb24vYWZ0ZXJDb250aW51ZTEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9pbnZlcnRJZkNvbmRpdGlvbi9hZnRlckNvbnRpbnVlMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY2MzkxNzEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvaW52ZXJ0SWZDb25kaXRpb24vYWZ0ZXJDb250aW51ZTEuamF2YQpAQCAtMCwwICsxLDExIEBACisvLyAiSW52ZXJ0IElmIENvbmRpdGlvbiIgInRydWUiCitjbGFzcyBBIHsKKyAgICB2b2lkIGZvbyAoKSB7CisgICAgICBpbnQgYSA9IDAsIGIgPSAwOworICAgICAgZm9yICg7OykgeworICAgICAgICAgIDxjYXJldD5pZiAoYSAhPSBiKSB7CisgICAgICAgICAgICAgIGEgPSBiOworICAgICAgICAgIH0KKyAgICAgIH0KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2ludmVydElmQ29uZGl0aW9uL2FmdGVyQ29udGludWUyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvaW52ZXJ0SWZDb25kaXRpb24vYWZ0ZXJDb250aW51ZTIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yODA3MTJhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2ludmVydElmQ29uZGl0aW9uL2FmdGVyQ29udGludWUyLmphdmEKQEAgLTAsMCArMSwxMSBAQAorLy8gIkludmVydCBJZiBDb25kaXRpb24iICJ0cnVlIgorY2xhc3MgQSB7CisgICAgdm9pZCBmb28oKSB7CisgICAgICAgIFN0cmluZ1tdIGVudHJpZXMgPSBudWxsOworICAgICAgICBmb3IgKFN0cmluZyBlbnRyeSA6IGVudHJpZXMpIHsKKyAgICAgICAgICAgIDxjYXJldD5pZiAoZW50cnkgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigibm90IG51bGwiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvaW52ZXJ0SWZDb25kaXRpb24vYWZ0ZXJEb05vdFJlbW92ZVJldHVybi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2ludmVydElmQ29uZGl0aW9uL2FmdGVyRG9Ob3RSZW1vdmVSZXR1cm4uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZTk0NDU0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2ludmVydElmQ29uZGl0aW9uL2FmdGVyRG9Ob3RSZW1vdmVSZXR1cm4uamF2YQpAQCAtMCwwICsxLDEwIEBACisvLyAiSW52ZXJ0IElmIENvbmRpdGlvbiIgInRydWUiCitjbGFzcyBUZXN0IHsKKyAgICBwdWJsaWMgc3RhdGljIGludCBjcmVhdGUoKSB7CisgICAgICAgIGlmICh0cnVlKSB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuICJzIjsKKworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvaW52ZXJ0SWZDb25kaXRpb24vYWZ0ZXJFbHNlMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2ludmVydElmQ29uZGl0aW9uL2FmdGVyRWxzZTEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NDQ4Yzc5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2ludmVydElmQ29uZGl0aW9uL2FmdGVyRWxzZTEuamF2YQpAQCAtMCwwICsxLDExIEBACisvLyAiSW52ZXJ0IElmIENvbmRpdGlvbiIgInRydWUiCitjbGFzcyBBIHsKKyAgICBwdWJsaWMgdm9pZCBmb28oKSB7CisgICAgICAgIGlmICg8Y2FyZXQ+IWMpIHsKKyAgICAgICAgICAgIGIoKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGEoKTsKKyAgICAgICAgfQorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvaW52ZXJ0SWZDb25kaXRpb24vYWZ0ZXJFbHNlMi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2ludmVydElmQ29uZGl0aW9uL2FmdGVyRWxzZTIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMmU3MzcxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2ludmVydElmQ29uZGl0aW9uL2FmdGVyRWxzZTIuamF2YQpAQCAtMCwwICsxLDggQEAKKy8vICJJbnZlcnQgSWYgQ29uZGl0aW9uIiAidHJ1ZSIKK2NsYXNzIEEgeworICAgIHB1YmxpYyB2b2lkIGZvbygpIHsKKyAgICAgICAgPGNhcmV0PmlmICghYykgeworICAgICAgICAgICAgYigpOworICAgICAgICB9CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9pbnZlcnRJZkNvbmRpdGlvbi9hZnRlckZsb3cxLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvaW52ZXJ0SWZDb25kaXRpb24vYWZ0ZXJGbG93MS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA4MDcxNjkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvaW52ZXJ0SWZDb25kaXRpb24vYWZ0ZXJGbG93MS5qYXZhCkBAIC0wLDAgKzEsOSBAQAorLy8gIkludmVydCBJZiBDb25kaXRpb24iICJ0cnVlIgorY2xhc3MgQSB7CisgICAgcHVibGljIHZvaWQgZm9vKCkgeworICAgICAgICA8Y2FyZXQ+aWYgKCFjKSB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgYSgpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvaW52ZXJ0SWZDb25kaXRpb24vYWZ0ZXJGbG93Mi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2ludmVydElmQ29uZGl0aW9uL2FmdGVyRmxvdzIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNTU5ODhlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2ludmVydElmQ29uZGl0aW9uL2FmdGVyRmxvdzIuamF2YQpAQCAtMCwwICsxLDEwIEBACisvLyAiSW52ZXJ0IElmIENvbmRpdGlvbiIgInRydWUiCitjbGFzcyBBIHsKKyAgICBwdWJsaWMgdm9pZCBmb28oKSB7CisgICAgICAgIDxjYXJldD5pZiAoIWMpIHsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBhKCk7CisgICAgICAgIGIoKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2ludmVydElmQ29uZGl0aW9uL2FmdGVyRmxvdzMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9pbnZlcnRJZkNvbmRpdGlvbi9hZnRlckZsb3czLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTNkZTJmYgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9pbnZlcnRJZkNvbmRpdGlvbi9hZnRlckZsb3czLmphdmEKQEAgLTAsMCArMSwxMSBAQAorLy8gIkludmVydCBJZiBDb25kaXRpb24iICJ0cnVlIgorY2xhc3MgQSB7CisgICAgcHVibGljIHZvaWQgZm9vKGJvb2xlYW4gYykgeworICAgICAgICA8Y2FyZXQ+aWYgKGMpIHsKKyAgICAgICAgICAgIGZvbygpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9pbnZlcnRJZkNvbmRpdGlvbi9hZnRlckZsb3c0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvaW52ZXJ0SWZDb25kaXRpb24vYWZ0ZXJGbG93NC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU3NzNkZGUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvaW52ZXJ0SWZDb25kaXRpb24vYWZ0ZXJGbG93NC5qYXZhCkBAIC0wLDAgKzEsMTUgQEAKKy8vICJJbnZlcnQgSWYgQ29uZGl0aW9uIiAidHJ1ZSIKK3B1YmxpYyBjbGFzcyBDIHsKKyAgICBwdWJsaWMgc3RhdGljIGludCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKKyAgICAgICAgaWYgKCFhKSB7CisgICAgICAgICAgICBmb28oKTsKKyAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgcmV0dXJuIDI7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwcml2YXRlIHN0YXRpYyB2b2lkIGZvbygpIHsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvaW52ZXJ0SWZDb25kaXRpb24vYWZ0ZXJGb3IxLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvaW52ZXJ0SWZDb25kaXRpb24vYWZ0ZXJGb3IxLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWJhOTg3MAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9pbnZlcnRJZkNvbmRpdGlvbi9hZnRlckZvcjEuamF2YQpAQCAtMCwwICsxLDExIEBACisvLyAiSW52ZXJ0IElmIENvbmRpdGlvbiIgInRydWUiCitjbGFzcyBBIHsKKyAgICBwdWJsaWMgdm9pZCBmb28oKSB7CisgICAgICAgIGZvciAoaW50IGkgPSAwOztpKyspIHsKKyAgICAgICAgICAgIDxjYXJldD5pZiAoIWMpIHsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGEoKTsKKyAgICAgICAgfQorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvaW52ZXJ0SWZDb25kaXRpb24vYWZ0ZXJJREVBMTg4NjRfMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2ludmVydElmQ29uZGl0aW9uL2FmdGVySURFQTE4ODY0XzEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNjkyZjIyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2ludmVydElmQ29uZGl0aW9uL2FmdGVySURFQTE4ODY0XzEuamF2YQpAQCAtMCwwICsxLDEwIEBACisvLyAiSW52ZXJ0IElmIENvbmRpdGlvbiIgInRydWUiCitjbGFzcyBBIHsKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgZm9vKCkgeworICAgICAgICBpZiAoMSA9PSAyKSB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgLy8gdmVyeSBpbXBvcnRhbnQgY29tbWVudCBoZXJlCisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigic29tZXRoaW5nIik7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2ludmVydElmQ29uZGl0aW9uL2FmdGVySURFQTE4ODY0XzIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9pbnZlcnRJZkNvbmRpdGlvbi9hZnRlcklERUExODg2NF8yLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTk0ZmRkZGEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvaW52ZXJ0SWZDb25kaXRpb24vYWZ0ZXJJREVBMTg4NjRfMi5qYXZhCkBAIC0wLDAgKzEsMTEgQEAKKy8vICJJbnZlcnQgSWYgQ29uZGl0aW9uIiAidHJ1ZSIKK2NsYXNzIEEgeworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBmb28oKSB7CisgICAgICAgIDxjYXJldD5pZiAoMSArIDIgIT0gMykgeworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJzYXkiKTsKKyAgICAgICAgfQorICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oInNvbWV0aGluZyIpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9pbnZlcnRJZkNvbmRpdGlvbi9hZnRlcklERUFERVYyMjU5LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvaW52ZXJ0SWZDb25kaXRpb24vYWZ0ZXJJREVBREVWMjI1OS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdmMzUwMDkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvaW52ZXJ0SWZDb25kaXRpb24vYWZ0ZXJJREVBREVWMjI1OS5qYXZhCkBAIC0wLDAgKzEsMjEgQEAKKy8vICJJbnZlcnQgSWYgQ29uZGl0aW9uIiAidHJ1ZSIKK2NsYXNzIEsgeworICAgIHByaXZhdGUgdm9pZCBiYXIoaW50IGkpIHsKKyAgICAgICAgc3dpdGNoKGkpIHsKKyAgICAgICAgICAgIGNhc2UgMDoKKyAgICAgICAgICAgICAgICBpZiAoIWYoaSkpIHsKKyAgICAgICAgICAgICAgICAgICAgaSA9IDE7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNhc2UgMToKKyAgICAgICAgICAgICAgICBpID0gMjsKKyAgICAgICAgfQorICAgIH0KKworICAgIHByaXZhdGUgc3RhdGljIGJvb2xlYW4gZihpbnQgaSkgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2ludmVydElmQ29uZGl0aW9uL2FmdGVySW5zaWRlRm9yZWFjaC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2ludmVydElmQ29uZGl0aW9uL2FmdGVySW5zaWRlRm9yZWFjaC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNmMWY5NTYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvaW52ZXJ0SWZDb25kaXRpb24vYWZ0ZXJJbnNpZGVGb3JlYWNoLmphdmEKQEAgLTAsMCArMSwxMSBAQAorLy8gIkludmVydCBJZiBDb25kaXRpb24iICJ0cnVlIgorY2xhc3MgRm9vIHsKKyAgICB2b2lkIGZvbyhTdHJpbmdbXSBhcmdzKSB7CisgICAgICAgIGZvciAoU3RyaW5nIHMgOiBhcmdzKSB7CisgICAgICAgICAgICA8Y2FyZXQ+aWYgKCEiNiIuZXF1YWxzKHMpKSB7CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4ocyk7CisgICAgICAgIH0KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2ludmVydElmQ29uZGl0aW9uL2FmdGVyUmV0dXJuMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2ludmVydElmQ29uZGl0aW9uL2FmdGVyUmV0dXJuMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA4NGJmNzkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvaW52ZXJ0SWZDb25kaXRpb24vYWZ0ZXJSZXR1cm4xLmphdmEKQEAgLTAsMCArMSwxMCBAQAorLy8gIkludmVydCBJZiBDb25kaXRpb24iICJ0cnVlIgorY2xhc3MgQSB7CisgICAgcHVibGljIHZvaWQgZm9vKCkgeworICAgICAgICA8Y2FyZXQ+aWYgKCFjKSB7CisgICAgICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAgfQorICAgICAgICBhKCk7CisgICAgICAgIHJldHVybiBudWxsOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvaW52ZXJ0SWZDb25kaXRpb24vYWZ0ZXJSZXR1cm4yLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvaW52ZXJ0SWZDb25kaXRpb24vYWZ0ZXJSZXR1cm4yLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjVkOGVlNQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9pbnZlcnRJZkNvbmRpdGlvbi9hZnRlclJldHVybjIuamF2YQpAQCAtMCwwICsxLDEwIEBACisvLyAiSW52ZXJ0IElmIENvbmRpdGlvbiIgInRydWUiCitjbGFzcyBBIHsKKyAgICBwdWJsaWMgdm9pZCBmb28oKSB7CisgICAgICAgIDxjYXJldD5pZiAoIWMpIHsKKyAgICAgICAgICAgIHJldHVybiBudWxsOworICAgICAgICB9CisgICAgICAgIGEoKTsKKyAgICAgICAgcmV0dXJuICIiOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvaW52ZXJ0SWZDb25kaXRpb24vYWZ0ZXJTQ1IyNTQyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvaW52ZXJ0SWZDb25kaXRpb24vYWZ0ZXJTQ1IyNTQyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTdiZWM2YgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9pbnZlcnRJZkNvbmRpdGlvbi9hZnRlclNDUjI1NDIuamF2YQpAQCAtMCwwICsxLDEyIEBACisvLyAiSW52ZXJ0IElmIENvbmRpdGlvbiIgInRydWUiCisvLyBlbHNlIG9uIHRoZSBzYW1lIGxpbmUKK2NsYXNzIFRlc3RJbnZlcnRJZiB7CisgICAgdm9pZCBpbnZlcnRJZihPYmplY3Qgb2JqZWN0KSB7CisgICAgICAgIGlmIChvYmplY3QgIT0gImFkZiIpIHsKKyAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiMSIpOworICAgICAgICB9IC8vIGNvbW1lbnQKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIjIiKTsKKyAgICAgICAgfQorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvaW52ZXJ0SWZDb25kaXRpb24vYWZ0ZXJXaGlsZTEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9pbnZlcnRJZkNvbmRpdGlvbi9hZnRlcldoaWxlMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI5ZTg3MmYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvaW52ZXJ0SWZDb25kaXRpb24vYWZ0ZXJXaGlsZTEuamF2YQpAQCAtMCwwICsxLDExIEBACisvLyAiSW52ZXJ0IElmIENvbmRpdGlvbiIgInRydWUiCitjbGFzcyBBIHsKKyAgICBwdWJsaWMgdm9pZCBmb28oKSB7CisgICAgICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgICAgICA8Y2FyZXQ+aWYgKCFjKSB7CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBhKCk7CisgICAgICAgIH0KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2ludmVydElmQ29uZGl0aW9uL2FmdGVyV2hpbGUyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvaW52ZXJ0SWZDb25kaXRpb24vYWZ0ZXJXaGlsZTIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NTk0ZTZiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2ludmVydElmQ29uZGl0aW9uL2FmdGVyV2hpbGUyLmphdmEKQEAgLTAsMCArMSwxNiBAQAorLy8gIkludmVydCBJZiBDb25kaXRpb24iICJ0cnVlIgorY2xhc3MgQSB7CisgICAgcHVibGljIHZvaWQgZm9vKCkgeworICAgICAgICB3aGlsZSAodHJ1ZSkgeworICAgICAgICAgICAgaWYgKGMpIHsKKyAgICAgICAgICAgICAgICA8Y2FyZXQ+aWYgKCFkKSB7CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBhKCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIGlmIChlKSB7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2ludmVydElmQ29uZGl0aW9uL2JlZm9yZUNvbmRpdGlvbjEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9pbnZlcnRJZkNvbmRpdGlvbi9iZWZvcmVDb25kaXRpb24xLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjA3YmZjNAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9pbnZlcnRJZkNvbmRpdGlvbi9iZWZvcmVDb25kaXRpb24xLmphdmEKQEAgLTAsMCArMSw2IEBACisvLyAiSW52ZXJ0IElmIENvbmRpdGlvbiIgInRydWUiCitjbGFzcyBBIHsKKyAgICBwdWJsaWMgdm9pZCBmb28oKSB7CisgICAgICAgIDxjYXJldD5pZiAoYykgYSgpOyBlbHNlIGIoKTsgCisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9pbnZlcnRJZkNvbmRpdGlvbi9iZWZvcmVDb25kaXRpb24yLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvaW52ZXJ0SWZDb25kaXRpb24vYmVmb3JlQ29uZGl0aW9uMi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU2MjEwODEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvaW52ZXJ0SWZDb25kaXRpb24vYmVmb3JlQ29uZGl0aW9uMi5qYXZhCkBAIC0wLDAgKzEsNiBAQAorLy8gIkludmVydCBJZiBDb25kaXRpb24iICJ0cnVlIgorY2xhc3MgQSB7CisgICAgcHVibGljIHZvaWQgZm9vKCkgeworICAgICAgICA8Y2FyZXQ+aWYgKChjKSkgYSgpOyBlbHNlIGIoKTsgCisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9pbnZlcnRJZkNvbmRpdGlvbi9iZWZvcmVDb25kaXRpb25FcS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2ludmVydElmQ29uZGl0aW9uL2JlZm9yZUNvbmRpdGlvbkVxLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjNmY2U4YgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9pbnZlcnRJZkNvbmRpdGlvbi9iZWZvcmVDb25kaXRpb25FcS5qYXZhCkBAIC0wLDAgKzEsNiBAQAorLy8gIkludmVydCBJZiBDb25kaXRpb24iICJ0cnVlIgorY2xhc3MgQSB7CisgICAgcHVibGljIHZvaWQgZm9vKCkgeworICAgICAgICA8Y2FyZXQ+aWYgKGMgPT0gZCkgYSgpOyBlbHNlIGIoKTsgCisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9pbnZlcnRJZkNvbmRpdGlvbi9iZWZvcmVDb25kaXRpb25OZXEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9pbnZlcnRJZkNvbmRpdGlvbi9iZWZvcmVDb25kaXRpb25OZXEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNTBkZjc3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2ludmVydElmQ29uZGl0aW9uL2JlZm9yZUNvbmRpdGlvbk5lcS5qYXZhCkBAIC0wLDAgKzEsNiBAQAorLy8gIkludmVydCBJZiBDb25kaXRpb24iICJ0cnVlIgorY2xhc3MgQSB7CisgICAgcHVibGljIHZvaWQgZm9vKCkgeworICAgICAgICA8Y2FyZXQ+aWYgKGMgIT0gZCkgYSgpOyBlbHNlIGIoKTsgCisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9pbnZlcnRJZkNvbmRpdGlvbi9iZWZvcmVDb25kaXRpb25Ob3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9pbnZlcnRJZkNvbmRpdGlvbi9iZWZvcmVDb25kaXRpb25Ob3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYTA4ZDI2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2ludmVydElmQ29uZGl0aW9uL2JlZm9yZUNvbmRpdGlvbk5vdC5qYXZhCkBAIC0wLDAgKzEsNiBAQAorLy8gIkludmVydCBJZiBDb25kaXRpb24iICJ0cnVlIgorY2xhc3MgQSB7CisgICAgcHVibGljIHZvaWQgZm9vKCkgeworICAgICAgICA8Y2FyZXQ+aWYgKCFjKSBhKCk7IGVsc2UgYigpOyAKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2ludmVydElmQ29uZGl0aW9uL2JlZm9yZUNvbnRpbnVlMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2ludmVydElmQ29uZGl0aW9uL2JlZm9yZUNvbnRpbnVlMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkxNWY3M2IKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvaW52ZXJ0SWZDb25kaXRpb24vYmVmb3JlQ29udGludWUxLmphdmEKQEAgLTAsMCArMSwxMCBAQAorLy8gIkludmVydCBJZiBDb25kaXRpb24iICJ0cnVlIgorY2xhc3MgQSB7CisgICAgdm9pZCBmb28gKCkgeworICAgICAgaW50IGEgPSAwLCBiID0gMDsKKyAgICAgIGZvciAoOzspIHsKKyAgICAgICAgICA8Y2FyZXQ+aWYgKGEgPT0gYikgY29udGludWU7CisgICAgICAgICAgYSA9IGI7CisgICAgICB9CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9pbnZlcnRJZkNvbmRpdGlvbi9iZWZvcmVDb250aW51ZTIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9pbnZlcnRJZkNvbmRpdGlvbi9iZWZvcmVDb250aW51ZTIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYmI2M2YyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2ludmVydElmQ29uZGl0aW9uL2JlZm9yZUNvbnRpbnVlMi5qYXZhCkBAIC0wLDAgKzEsMTEgQEAKKy8vICJJbnZlcnQgSWYgQ29uZGl0aW9uIiAidHJ1ZSIKK2NsYXNzIEEgeworICAgIHZvaWQgZm9vKCkgeworICAgICAgICBTdHJpbmdbXSBlbnRyaWVzID0gbnVsbDsKKyAgICAgICAgZm9yIChTdHJpbmcgZW50cnkgOiBlbnRyaWVzKSB7CisgICAgICAgICAgICA8Y2FyZXQ+aWYgKGVudHJ5ID09IG51bGwpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIm5vdCBudWxsIik7CisgICAgICAgIH0KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2ludmVydElmQ29uZGl0aW9uL2JlZm9yZURvTm90UmVtb3ZlUmV0dXJuLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvaW52ZXJ0SWZDb25kaXRpb24vYmVmb3JlRG9Ob3RSZW1vdmVSZXR1cm4uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iODQ3ZDQ4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2ludmVydElmQ29uZGl0aW9uL2JlZm9yZURvTm90UmVtb3ZlUmV0dXJuLmphdmEKQEAgLTAsMCArMSw5IEBACisvLyAiSW52ZXJ0IElmIENvbmRpdGlvbiIgInRydWUiCitjbGFzcyBUZXN0IHsKKyAgICBwdWJsaWMgc3RhdGljIGludCBjcmVhdGUoKSB7CisgICAgICAgIGlmICghdHI8Y2FyZXQ+dWUpIHsKKyAgICAgICAgICAgIHJldHVybiAicyI7CisgICAgICAgIH0KKworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvaW52ZXJ0SWZDb25kaXRpb24vYmVmb3JlRWxzZTEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9pbnZlcnRJZkNvbmRpdGlvbi9iZWZvcmVFbHNlMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY1OWM0ZjYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvaW52ZXJ0SWZDb25kaXRpb24vYmVmb3JlRWxzZTEuamF2YQpAQCAtMCwwICsxLDcgQEAKKy8vICJJbnZlcnQgSWYgQ29uZGl0aW9uIiAidHJ1ZSIKK2NsYXNzIEEgeworICAgIHB1YmxpYyB2b2lkIGZvbygpIHsKKyAgICAgICAgaWYgKDxjYXJldD5jKSBhKCk7CisgICAgICAgIGVsc2UgYigpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvaW52ZXJ0SWZDb25kaXRpb24vYmVmb3JlRWxzZTIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9pbnZlcnRJZkNvbmRpdGlvbi9iZWZvcmVFbHNlMi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM5N2RiOGQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvaW52ZXJ0SWZDb25kaXRpb24vYmVmb3JlRWxzZTIuamF2YQpAQCAtMCwwICsxLDcgQEAKKy8vICJJbnZlcnQgSWYgQ29uZGl0aW9uIiAidHJ1ZSIKK2NsYXNzIEEgeworICAgIHB1YmxpYyB2b2lkIGZvbygpIHsKKyAgICAgICAgPGNhcmV0PmlmIChjKSB7fQorICAgICAgICBlbHNlIGIoKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2ludmVydElmQ29uZGl0aW9uL2JlZm9yZUZsb3cxLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvaW52ZXJ0SWZDb25kaXRpb24vYmVmb3JlRmxvdzEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iOGIyZmFlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2ludmVydElmQ29uZGl0aW9uL2JlZm9yZUZsb3cxLmphdmEKQEAgLTAsMCArMSw2IEBACisvLyAiSW52ZXJ0IElmIENvbmRpdGlvbiIgInRydWUiCitjbGFzcyBBIHsKKyAgICBwdWJsaWMgdm9pZCBmb28oKSB7CisgICAgICAgIDxjYXJldD5pZiAoYykgYSgpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvaW52ZXJ0SWZDb25kaXRpb24vYmVmb3JlRmxvdzIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9pbnZlcnRJZkNvbmRpdGlvbi9iZWZvcmVGbG93Mi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFhNzVjNjMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvaW52ZXJ0SWZDb25kaXRpb24vYmVmb3JlRmxvdzIuamF2YQpAQCAtMCwwICsxLDkgQEAKKy8vICJJbnZlcnQgSWYgQ29uZGl0aW9uIiAidHJ1ZSIKK2NsYXNzIEEgeworICAgIHB1YmxpYyB2b2lkIGZvbygpIHsKKyAgICAgICAgPGNhcmV0PmlmIChjKSB7CisgICAgICAgICAgICBhKCk7CisgICAgICAgICAgICBiKCk7CisgICAgICAgIH0KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2ludmVydElmQ29uZGl0aW9uL2JlZm9yZUZsb3czLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvaW52ZXJ0SWZDb25kaXRpb24vYmVmb3JlRmxvdzMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hOTdhOWFiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2ludmVydElmQ29uZGl0aW9uL2JlZm9yZUZsb3czLmphdmEKQEAgLTAsMCArMSw3IEBACisvLyAiSW52ZXJ0IElmIENvbmRpdGlvbiIgInRydWUiCitjbGFzcyBBIHsKKyAgICBwdWJsaWMgdm9pZCBmb28oYm9vbGVhbiBjKSB7CisgICAgICAgIDxjYXJldD5pZiAoIWMpIHJldHVybjsKKyAgICAgICAgZm9vKCk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9pbnZlcnRJZkNvbmRpdGlvbi9iZWZvcmVGbG93NC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2ludmVydElmQ29uZGl0aW9uL2JlZm9yZUZsb3c0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGYwNjMyMwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9pbnZlcnRJZkNvbmRpdGlvbi9iZWZvcmVGbG93NC5qYXZhCkBAIC0wLDAgKzEsMTEgQEAKKy8vICJJbnZlcnQgSWYgQ29uZGl0aW9uIiAidHJ1ZSIKK3B1YmxpYyBjbGFzcyBDIHsKKyAgICBwdWJsaWMgc3RhdGljIGludCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKKyAgICAgICAgPGNhcmV0PmlmIChhKSByZXR1cm4gMjsKKyAgICAgICAgZm9vKCk7CisgICAgICAgIHJldHVybiAxOworICAgIH0KKworICAgIHByaXZhdGUgc3RhdGljIHZvaWQgZm9vKCkgeworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9pbnZlcnRJZkNvbmRpdGlvbi9iZWZvcmVGb3IxLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvaW52ZXJ0SWZDb25kaXRpb24vYmVmb3JlRm9yMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAwMTVhMzMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvaW52ZXJ0SWZDb25kaXRpb24vYmVmb3JlRm9yMS5qYXZhCkBAIC0wLDAgKzEsOCBAQAorLy8gIkludmVydCBJZiBDb25kaXRpb24iICJ0cnVlIgorY2xhc3MgQSB7CisgICAgcHVibGljIHZvaWQgZm9vKCkgeworICAgICAgICBmb3IgKGludCBpID0gMDs7aSsrKSB7CisgICAgICAgICAgICA8Y2FyZXQ+aWYgKGMpIGEoKTsKKyAgICAgICAgfQorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvaW52ZXJ0SWZDb25kaXRpb24vYmVmb3JlSURFQTE4ODY0XzEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9pbnZlcnRJZkNvbmRpdGlvbi9iZWZvcmVJREVBMTg4NjRfMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc0NTQzNTUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvaW52ZXJ0SWZDb25kaXRpb24vYmVmb3JlSURFQTE4ODY0XzEuamF2YQpAQCAtMCwwICsxLDkgQEAKKy8vICJJbnZlcnQgSWYgQ29uZGl0aW9uIiAidHJ1ZSIKK2NsYXNzIEEgeworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBmb28oKSB7CisgICAgICAgIDxjYXJldD5pZiAoMSAhPSAyKSB7CisgICAgICAgICAgICAvLyB2ZXJ5IGltcG9ydGFudCBjb21tZW50IGhlcmUKKyAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigic29tZXRoaW5nIik7CisgICAgICAgIH0KKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvaW52ZXJ0SWZDb25kaXRpb24vYmVmb3JlSURFQTE4ODY0XzIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9pbnZlcnRJZkNvbmRpdGlvbi9iZWZvcmVJREVBMTg4NjRfMi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ2ODQ1M2EKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvaW52ZXJ0SWZDb25kaXRpb24vYmVmb3JlSURFQTE4ODY0XzIuamF2YQpAQCAtMCwwICsxLDkgQEAKKy8vICJJbnZlcnQgSWYgQ29uZGl0aW9uIiAidHJ1ZSIKK2NsYXNzIEEgeworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBmb28oKSB7CisgICAgICAgIDxjYXJldD5pZiAoMSArIDIgPT0gMykgeworICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJzYXkiKTsKKyAgICAgICAgfQorICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oInNvbWV0aGluZyIpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9pbnZlcnRJZkNvbmRpdGlvbi9iZWZvcmVJREVBREVWMjI1OS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2ludmVydElmQ29uZGl0aW9uL2JlZm9yZUlERUFERVYyMjU5LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTQ2MzdjMmMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvaW52ZXJ0SWZDb25kaXRpb24vYmVmb3JlSURFQURFVjIyNTkuamF2YQpAQCAtMCwwICsxLDE5IEBACisvLyAiSW52ZXJ0IElmIENvbmRpdGlvbiIgInRydWUiCitjbGFzcyBLIHsKKyAgICBwcml2YXRlIHZvaWQgYmFyKGludCBpKSB7CisgICAgICAgIHN3aXRjaChpKSB7CisgICAgICAgICAgICBjYXNlIDA6CisgICAgICAgICAgICAgICAgPGNhcmV0PmlmIChmKGkpKSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaSA9IDE7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDE6CisgICAgICAgICAgICAgICAgaSA9IDI7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwcml2YXRlIHN0YXRpYyBib29sZWFuIGYoaW50IGkpIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9pbnZlcnRJZkNvbmRpdGlvbi9iZWZvcmVJbnNpZGVGb3JlYWNoLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvaW52ZXJ0SWZDb25kaXRpb24vYmVmb3JlSW5zaWRlRm9yZWFjaC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM3Y2I3NDkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvaW52ZXJ0SWZDb25kaXRpb24vYmVmb3JlSW5zaWRlRm9yZWFjaC5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKKy8vICJJbnZlcnQgSWYgQ29uZGl0aW9uIiAidHJ1ZSIKK2NsYXNzIEZvbyB7CisgICAgdm9pZCBmb28oU3RyaW5nW10gYXJncykgeworICAgICAgICBmb3IgKFN0cmluZyBzIDogYXJncykgeworICAgICAgICAgICAgPGNhcmV0PmlmICgiNiIuZXF1YWxzKHMpKSB7CisgICAgICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKHMpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9pbnZlcnRJZkNvbmRpdGlvbi9iZWZvcmVSZXR1cm4xLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvaW52ZXJ0SWZDb25kaXRpb24vYmVmb3JlUmV0dXJuMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIzODUxYmQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvaW52ZXJ0SWZDb25kaXRpb24vYmVmb3JlUmV0dXJuMS5qYXZhCkBAIC0wLDAgKzEsNyBAQAorLy8gIkludmVydCBJZiBDb25kaXRpb24iICJ0cnVlIgorY2xhc3MgQSB7CisgICAgcHVibGljIHZvaWQgZm9vKCkgeworICAgICAgICA8Y2FyZXQ+aWYgKGMpIGEoKTsKKyAgICAgICAgcmV0dXJuIG51bGw7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9pbnZlcnRJZkNvbmRpdGlvbi9iZWZvcmVSZXR1cm4yLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvaW52ZXJ0SWZDb25kaXRpb24vYmVmb3JlUmV0dXJuMi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRkZjMzNmYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvaW52ZXJ0SWZDb25kaXRpb24vYmVmb3JlUmV0dXJuMi5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKKy8vICJJbnZlcnQgSWYgQ29uZGl0aW9uIiAidHJ1ZSIKK2NsYXNzIEEgeworICAgIHB1YmxpYyB2b2lkIGZvbygpIHsKKyAgICAgICAgPGNhcmV0PmlmIChjKSB7CisgICAgICAgICAgICBhKCk7CisgICAgICAgICAgICByZXR1cm4gIiI7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIG51bGw7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9pbnZlcnRJZkNvbmRpdGlvbi9iZWZvcmVTQ1IyNTQyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvaW52ZXJ0SWZDb25kaXRpb24vYmVmb3JlU0NSMjU0Mi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRhYjU2ZDQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvaW52ZXJ0SWZDb25kaXRpb24vYmVmb3JlU0NSMjU0Mi5qYXZhCkBAIC0wLDAgKzEsMTEgQEAKKy8vICJJbnZlcnQgSWYgQ29uZGl0aW9uIiAidHJ1ZSIKKy8vIGVsc2Ugb24gdGhlIHNhbWUgbGluZQorY2xhc3MgVGVzdEludmVydElmIHsKKyAgICB2b2lkIGludmVydElmKE9iamVjdCBvYmplY3QpIHsKKyAgICAgICAgPGNhcmV0PmlmIChvYmplY3QgPT0gImFkZiIpIHsKKyAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiMiIpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCIxIik7CisgICAgICAgIH0gLy8gY29tbWVudAorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvaW52ZXJ0SWZDb25kaXRpb24vYmVmb3JlV2hpbGUxLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvaW52ZXJ0SWZDb25kaXRpb24vYmVmb3JlV2hpbGUxLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjQzNWMyMzIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvaW52ZXJ0SWZDb25kaXRpb24vYmVmb3JlV2hpbGUxLmphdmEKQEAgLTAsMCArMSw4IEBACisvLyAiSW52ZXJ0IElmIENvbmRpdGlvbiIgInRydWUiCitjbGFzcyBBIHsKKyAgICBwdWJsaWMgdm9pZCBmb28oKSB7CisgICAgICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgICAgICA8Y2FyZXQ+aWYgKGMpIGEoKTsKKyAgICAgICAgfQorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvaW52ZXJ0SWZDb25kaXRpb24vYmVmb3JlV2hpbGUyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvaW52ZXJ0SWZDb25kaXRpb24vYmVmb3JlV2hpbGUyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDYxMTAwNgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9pbnZlcnRJZkNvbmRpdGlvbi9iZWZvcmVXaGlsZTIuamF2YQpAQCAtMCwwICsxLDE1IEBACisvLyAiSW52ZXJ0IElmIENvbmRpdGlvbiIgInRydWUiCitjbGFzcyBBIHsKKyAgICBwdWJsaWMgdm9pZCBmb28oKSB7CisgICAgICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgICAgICBpZiAoYykgeworICAgICAgICAgICAgICAgIDxjYXJldD5pZiAoZCkgeworICAgICAgICAgICAgICAgICAgICBhKCk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgaWYgKGUpIHsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvamF2YWRvY0lHL2NsYXNzVHlwZVBhcmFtZXRlci5odG1sIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2phdmFkb2NJRy9jbGFzc1R5cGVQYXJhbWV0ZXIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MjI1NGE4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2phdmFkb2NJRy9jbGFzc1R5cGVQYXJhbWV0ZXIuaHRtbApAQCAtMCwwICsxLDMgQEAKKzxodG1sPjxoZWFkPiAgICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPiAgICAgICAgI2Vycm9yIHsgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWVlZWVlOyAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDEwcHg7ICAgICAgICB9ICAgICAgICBwIHsgICAgICAgICAgICBtYXJnaW46IDVweCAwOyAgICAgICAgfSAgICA8L3N0eWxlPjwvaGVhZD48Ym9keT48UFJFPmNsYXNzIDxiPk1ldGhvZFR5cGVQYXJhbTwvYj4mbHQ7VCZndDsKK2V4dGVuZHMgPGEgaHJlZj0icHNpX2VsZW1lbnQ6Ly9qYXZhLmxhbmcuT2JqZWN0Ij48Y29kZT5PYmplY3Q8L2NvZGU+PC9hPjwvUFJFPgorICAgIDxERD48REw+PERUPjxiPlR5cGUgcGFyYW1ldGVyczo8L2I+PEREPjxjb2RlPiZsdDtUJmd0OzwvY29kZT4gLSAgdHlwZSBwYXJhbTwvREQ+PC9ETD48L0REPjwvYm9keT48L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2phdmFkb2NJRy9jbGFzc1R5cGVQYXJhbWV0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9qYXZhZG9jSUcvY2xhc3NUeXBlUGFyYW1ldGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWNlYjljYQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9qYXZhZG9jSUcvY2xhc3NUeXBlUGFyYW1ldGVyLmphdmEKQEAgLTAsMCArMSw2IEBACisvKioKKyAgKiBAcGFyYW0gPFQ+IHR5cGUgcGFyYW0KKyAgKi8KK2NsYXNzIE1ldGhvZFR5cGVQYXJhbTxUPiB7CisKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvamF2YWRvY0lHL2VudW1WYWx1ZU9mLmh0bWwgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvamF2YWRvY0lHL2VudW1WYWx1ZU9mLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTIxNjFjYgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9qYXZhZG9jSUcvZW51bVZhbHVlT2YuaHRtbApAQCAtMCwwICsxLDMgQEAKKzxodG1sPjxoZWFkPiAgICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPiAgICAgICAgI2Vycm9yIHsgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWVlZWVlOyAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDEwcHg7ICAgICAgICB9ICAgICAgICBwIHsgICAgICAgICAgICBtYXJnaW46IDVweCAwOyAgICAgICAgfSAgICA8L3N0eWxlPjwvaGVhZD48Ym9keT48c21hbGw+PGI+PGEgaHJlZj0icHNpX2VsZW1lbnQ6Ly9FbiI+PGNvZGU+RW48L2NvZGU+PC9hPjwvYj48L3NtYWxsPjxQUkU+c3RhdGljJm5ic3A7aW50Jm5ic3A7PGI+dmFsdWVPZjwvYj4oaW50Jm5ic3A7aSk8L1BSRT4KKyAgICAgbXlqYXZhZG9jCisgICAgIDxERD48REw+PERUPjxiPlBhcmFtZXRlcnM6PC9iPjxERD48Y29kZT5pPC9jb2RlPiAtICA8L0REPjwvREw+PC9ERD48REQ+PERMPjxEVD48Yj5SZXR1cm5zOjwvYj48REQ+PC9ERD48L0RMPjwvREQ+PC9ib2R5PjwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvamF2YWRvY0lHL2VudW1WYWx1ZU9mLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvamF2YWRvY0lHL2VudW1WYWx1ZU9mLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGQ1NGU3YgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9qYXZhZG9jSUcvZW51bVZhbHVlT2YuamF2YQpAQCAtMCwwICsxLDEyIEBACitlbnVtIEVuIHsKKyAgOworCisgIC8qKgorICAgKiBteWphdmFkb2MKKyAgICogQHBhcmFtIGkKKyAgICogQHJldHVybgorICAgKi8KKyAgc3RhdGljIGludCB2YWx1ZU9mKGludCBpKSB7CisgICAgcmV0dXJuIGk7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvamF2YWRvY0lHL2VzY2FwZVZhbHVlcy5odG1sIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2phdmFkb2NJRy9lc2NhcGVWYWx1ZXMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMzViZDI3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2phdmFkb2NJRy9lc2NhcGVWYWx1ZXMuaHRtbApAQCAtMCwwICsxLDMgQEAKKzxodG1sPjxoZWFkPiAgICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPiAgICAgICAgI2Vycm9yIHsgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWVlZWVlOyAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDEwcHg7ICAgICAgICB9ICAgICAgICBwIHsgICAgICAgICAgICBtYXJnaW46IDVweCAwOyAgICAgICAgfSAgICA8L3N0eWxlPjwvaGVhZD48Ym9keT48UFJFPmNsYXNzIDxiPlBhdHRlcm48L2I+CitleHRlbmRzIDxhIGhyZWY9InBzaV9lbGVtZW50Oi8vamF2YS5sYW5nLk9iamVjdCI+PGNvZGU+T2JqZWN0PC9jb2RlPjwvYT48L1BSRT4KKyAgIFxXICBcdTAzQTk8L2JvZHk+PC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9qYXZhZG9jSUcvZXNjYXBlVmFsdWVzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvamF2YWRvY0lHL2VzY2FwZVZhbHVlcy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgzYzAxNDkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvamF2YWRvY0lHL2VzY2FwZVZhbHVlcy5qYXZhCkBAIC0wLDAgKzEsNSBAQAorLyoqCisgKiBcVyAgXHUwM0E5CisgKi8KK2NsYXNzIFBhdHRlcm4geworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2phdmFkb2NJRy9maWVsZFZhbHVlLmh0bWwgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvamF2YWRvY0lHL2ZpZWxkVmFsdWUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMTU0ODhkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2phdmFkb2NJRy9maWVsZFZhbHVlLmh0bWwKQEAgLTAsMCArMSBAQAorPGh0bWw+PGhlYWQ+ICAgIDxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+ICAgICAgICAjZXJyb3IgeyAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNlZWVlZWU7ICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMTBweDsgICAgICAgIH0gICAgICAgIHAgeyAgICAgICAgICAgIG1hcmdpbjogNXB4IDA7ICAgICAgICB9ICAgIDwvc3R5bGU+PC9oZWFkPjxib2R5PjxzbWFsbD48Yj48YSBocmVmPSJwc2lfZWxlbWVudDovL0EiPjxjb2RlPkE8L2NvZGU+PC9hPjwvYj48L3NtYWxsPjxQUkU+cHVibGljIHN0YXRpYyBpbnQgPGI+SkFWQURPQ19NRSA9IDIzPC9iPjwvUFJFPiBUaGUgdmFsdWUgb2YgdGhlIGZpZWxkIGlzIDIzLjwvYm9keT48L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2phdmFkb2NJRy9maWVsZFZhbHVlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvamF2YWRvY0lHL2ZpZWxkVmFsdWUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMWMwZmY2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2phdmFkb2NJRy9maWVsZFZhbHVlLmphdmEKQEAgLTAsMCArMSw0IEBACitjbGFzcyBBIHsKKyAgLyoqIFRoZSB2YWx1ZSBvZiB0aGUgZmllbGQgaXMge0B2YWx1ZX0uICovCisgIHB1YmxpYyBzdGF0aWMgaW50IEpBVkFET0NfTUUgPSAyMzsKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9qYXZhZG9jSUcvaWRlYWRldjIzMjYuaHRtbCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9qYXZhZG9jSUcvaWRlYWRldjIzMjYuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNWY2YzlmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2phdmFkb2NJRy9pZGVhZGV2MjMyNi5odG1sCkBAIC0wLDAgKzEsMiBAQAorPGh0bWw+PGhlYWQ+ICAgIDxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+ICAgICAgICAjZXJyb3IgeyAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNlZWVlZWU7ICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMTBweDsgICAgICAgIH0gICAgICAgIHAgeyAgICAgICAgICAgIG1hcmdpbjogNXB4IDA7ICAgICAgICB9ICAgIDwvc3R5bGU+PC9oZWFkPjxib2R5PjxzbWFsbD48Yj48YSBocmVmPSJwc2lfZWxlbWVudDovL0lkZWE0NzgwIj48Y29kZT5JZGVhNDc4MDwvY29kZT48L2E+PC9iPjwvc21hbGw+PFBSRT5wdWJsaWMmbmJzcDs8YSBocmVmPSJwc2lfZWxlbWVudDovL2phdmEubGFuZy5PYmplY3QiPjxjb2RlPk9iamVjdDwvY29kZT48L2E+Jm5ic3A7PGI+cmVhZDwvYj4oKQorICAgICAgICAgICB0aHJvd3MmbmJzcDs8YSBocmVmPSJwc2lfZWxlbWVudDovL2phdmEuaW8uSU9FeGNlcHRpb24iPjxjb2RlPklPRXhjZXB0aW9uPC9jb2RlPjwvYT48L1BSRT48REQ+PERMPjxEVD48Yj5UaHJvd3M6PC9iPjxERD48YSBocmVmPSJwc2lfZWxlbWVudDovL2phdmEuaW8uSU9FeGNlcHRpb24iPjxjb2RlPklPRXhjZXB0aW9uPC9jb2RlPjwvYT4gLSBpZiBhbiBJL08gZXJyb3Igb2NjdXJzIHdoaWxlIHJlYWRpbmcuICA8REQ+PGEgaHJlZj0icHNpX2VsZW1lbnQ6Ly9qYXZhLmlvLkVPRkV4Y2VwdGlvbiI+PGNvZGU+RU9GRXhjZXB0aW9uPC9jb2RlPjwvYT4gLSBpZiB0aGlzIHNvdXJjZSBpcyBhbHJlYWR5IGNsb3NlZCB3aGVuIHRoZSA8Y29kZT5yZWFkKCk8L2NvZGU+IGlzIGNhbGxlZCwgIG9yIGlzIGNsb3NlZCBkdXJpbmcgdGhlIDxjb2RlPnJlYWQoKTwvY29kZT4uICA8REQ+PGZvbnQgY29sb3I9cmVkPkludGVycnVwdGVkSU9FeGNlcHRpb248L2ZvbnQ+IC0gaWYgdGhlIHJlYWRpbmcgdGhyZWFkIGlzIGludGVycnVwdGVkLjwvREQ+PC9ETD48L0REPjwvYm9keT48L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2phdmFkb2NJRy9pZGVhZGV2MjMyNi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2phdmFkb2NJRy9pZGVhZGV2MjMyNi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZjMmY2MDkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvamF2YWRvY0lHL2lkZWFkZXYyMzI2LmphdmEKQEAgLTAsMCArMSwxNCBAQAoraW1wb3J0IGphdmEuaW8uRU9GRXhjZXB0aW9uOworaW1wb3J0IGphdmEuaW8uSU9FeGNlcHRpb247CitpbXBvcnQgamF2YS5pby5JbnRlcnJ1cHRlZElPRXhjZXB0aW9uOworCitwdWJsaWMgaW50ZXJmYWNlIElkZWE0NzgwIHsKKyAgICAvKioKKyAgICAgKiBAdGhyb3dzIElPRXhjZXB0aW9uIGlmIGFuIEkvTyBlcnJvciBvY2N1cnMgd2hpbGUgcmVhZGluZy4KKyAgICAgKiBAdGhyb3dzIEVPRkV4Y2VwdGlvbiBpZiB0aGlzIHNvdXJjZSBpcyBhbHJlYWR5IGNsb3NlZCB3aGVuIHRoZSA8Y29kZT5yZWFkKCk8L2NvZGU+IGlzIGNhbGxlZCwKKyAgICAgKiBvciBpcyBjbG9zZWQgZHVyaW5nIHRoZSA8Y29kZT5yZWFkKCk8L2NvZGU+LgorICAgICAqIEB0aHJvd3MgSW50ZXJydXB0ZWRJT0V4Y2VwdGlvbiBpZiB0aGUgcmVhZGluZyB0aHJlYWQgaXMgaW50ZXJydXB0ZWQuCisgICAgICovCisgICAgcHVibGljIE9iamVjdCByZWFkKCkKKyAgICAgICAgdGhyb3dzIElPRXhjZXB0aW9uOworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2phdmFkb2NJRy9pbmhlcml0ZWREb2NJblRocm93cy5odG1sIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2phdmFkb2NJRy9pbmhlcml0ZWREb2NJblRocm93cy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdhMzJiNTAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvamF2YWRvY0lHL2luaGVyaXRlZERvY0luVGhyb3dzLmh0bWwKQEAgLTAsMCArMSwyIEBACis8aHRtbD48aGVhZD4gICAgPHN0eWxlIHR5cGU9InRleHQvY3NzIj4gICAgICAgICNlcnJvciB7ICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2VlZWVlZTsgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAxMHB4OyAgICAgICAgfSAgICAgICAgcCB7ICAgICAgICAgICAgbWFyZ2luOiA1cHggMDsgICAgICAgIH0gICAgPC9zdHlsZT48L2hlYWQ+PGJvZHk+PHNtYWxsPjxiPjxhIGhyZWY9InBzaV9lbGVtZW50Oi8vSW5oZXJpdGVkRG9jSW5UaHJvd3MiPjxjb2RlPkluaGVyaXRlZERvY0luVGhyb3dzPC9jb2RlPjwvYT48L2I+PC9zbWFsbD48UFJFPnZvaWQmbmJzcDs8Yj5mb288L2I+KCkKKyB0aHJvd3MmbmJzcDs8YSBocmVmPSJwc2lfZWxlbWVudDovL2phdmEuaW8uSU9FeGNlcHRpb24iPjxjb2RlPklPRXhjZXB0aW9uPC9jb2RlPjwvYT48L1BSRT48REQ+PERMPjxEVD48Yj5PdmVycmlkZXM6PC9iPjxERD48YSBocmVmPSJwc2lfZWxlbWVudDovL0EjZm9vKCkiPjxjb2RlPmZvbzwvY29kZT48L2E+IGluIGNsYXNzIDxhIGhyZWY9InBzaV9lbGVtZW50Oi8vQSI+PGNvZGU+QTwvY29kZT48L2E+PC9ERD48L0RMPjwvREQ+PEREPjxETD48RFQ+PGI+VGhyb3dzOjwvYj48REQ+PGEgaHJlZj0icHNpX2VsZW1lbnQ6Ly9qYXZhLmlvLklPRXhjZXB0aW9uIj48Y29kZT5JT0V4Y2VwdGlvbjwvY29kZT48L2E+IC0gbGEtbGEtbGE8L0REPjwvREw+PC9ERD48L2JvZHk+PC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9qYXZhZG9jSUcvaW5oZXJpdGVkRG9jSW5UaHJvd3MuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9qYXZhZG9jSUcvaW5oZXJpdGVkRG9jSW5UaHJvd3MuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jN2RjODYzZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9qYXZhZG9jSUcvaW5oZXJpdGVkRG9jSW5UaHJvd3MuamF2YQpAQCAtMCwwICsxLDE4IEBACitpbXBvcnQgamF2YS5pby5JT0V4Y2VwdGlvbjsKKworY2xhc3MgSW5oZXJpdGVkRG9jSW5UaHJvd3MgZXh0ZW5kcyBBeworICAvKioKKyAgICogQHRocm93cyBJT0V4Y2VwdGlvbiB7QGluaGVyaXREb2N9CisgICAqLworICB2b2lkIGZvbygpIHRocm93cyBJT0V4Y2VwdGlvbiB7CisgICAgc3VwZXIuZm9vKCk7CisgIH0KK30KKworY2xhc3MgQSB7CisgIC8qKgorICAgKiBAdGhyb3dzIElPRXhjZXB0aW9uIGxhLWxhLWxhCisgICAqLworICB2b2lkIGZvbygpIHRocm93cyBJT0V4Y2VwdGlvbiB7CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9qYXZhZG9jSUcvaW5oZXJpdGVkRG9jSW5UaHJvd3MxLmh0bWwgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvamF2YWRvY0lHL2luaGVyaXRlZERvY0luVGhyb3dzMS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU5Nzk2ZTcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvamF2YWRvY0lHL2luaGVyaXRlZERvY0luVGhyb3dzMS5odG1sCkBAIC0wLDAgKzEsMiBAQAorPGh0bWw+PGhlYWQ+ICAgIDxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+ICAgICAgICAjZXJyb3IgeyAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNlZWVlZWU7ICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMTBweDsgICAgICAgIH0gICAgICAgIHAgeyAgICAgICAgICAgIG1hcmdpbjogNXB4IDA7ICAgICAgICB9ICAgIDwvc3R5bGU+PC9oZWFkPjxib2R5PjxzbWFsbD48Yj48YSBocmVmPSJwc2lfZWxlbWVudDovL0luaGVyaXRlZERvY0luVGhyb3dzMSI+PGNvZGU+SW5oZXJpdGVkRG9jSW5UaHJvd3MxPC9jb2RlPjwvYT48L2I+PC9zbWFsbD48UFJFPnZvaWQmbmJzcDs8Yj5mb288L2I+KCkKKyB0aHJvd3MmbmJzcDs8YSBocmVmPSJwc2lfZWxlbWVudDovL2phdmEuaW8uSU9FeGNlcHRpb24iPjxjb2RlPklPRXhjZXB0aW9uPC9jb2RlPjwvYT48L1BSRT48REQ+PERMPjxEVD48Yj5PdmVycmlkZXM6PC9iPjxERD48YSBocmVmPSJwc2lfZWxlbWVudDovL0EjZm9vKCkiPjxjb2RlPmZvbzwvY29kZT48L2E+IGluIGNsYXNzIDxhIGhyZWY9InBzaV9lbGVtZW50Oi8vQSI+PGNvZGU+QTwvY29kZT48L2E+PC9ERD48L0RMPjwvREQ+PEREPjxETD48RFQ+PGI+VGhyb3dzOjwvYj48REQ+PGEgaHJlZj0icHNpX2VsZW1lbnQ6Ly9qYXZhLmlvLklPRXhjZXB0aW9uIj48Y29kZT5JT0V4Y2VwdGlvbjwvY29kZT48L2E+IC0gY29tbWVudDwvREQ+PC9ETD48L0REPjwvYm9keT48L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2phdmFkb2NJRy9pbmhlcml0ZWREb2NJblRocm93czEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9qYXZhZG9jSUcvaW5oZXJpdGVkRG9jSW5UaHJvd3MxLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTMwZTVmMAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9qYXZhZG9jSUcvaW5oZXJpdGVkRG9jSW5UaHJvd3MxLmphdmEKQEAgLTAsMCArMSwxOCBAQAoraW1wb3J0IGphdmEuaW8uSU9FeGNlcHRpb247CisKK2NsYXNzIEluaGVyaXRlZERvY0luVGhyb3dzMSBleHRlbmRzIEF7CisgIC8qKgorICAgKiBAdGhyb3dzIGphdmEuaW8uSU9FeGNlcHRpb24gY29tbWVudAorICAgKi8KKyAgdm9pZCBmb28oKSB0aHJvd3MgSU9FeGNlcHRpb24geworICAgIHN1cGVyLmZvbygpOworICB9Cit9CisKK2NsYXNzIEEgeworICAvKioKKyAgICogQHRocm93cyBqYXZhLmlvLklPRXhjZXB0aW9uIGxhLWxhLWxhCisgICAqLworICB2b2lkIGZvbygpIHRocm93cyBJT0V4Y2VwdGlvbiB7CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9qYXZhZG9jSUcvaW5pdGlhbGl6ZXJXaXRoTmV3Lmh0bWwgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvamF2YWRvY0lHL2luaXRpYWxpemVyV2l0aE5ldy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQxMWUyMzgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvamF2YWRvY0lHL2luaXRpYWxpemVyV2l0aE5ldy5odG1sCkBAIC0wLDAgKzEgQEAKKzxodG1sPjxoZWFkPiAgICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPiAgICAgICAgI2Vycm9yIHsgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWVlZWVlOyAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDEwcHg7ICAgICAgICB9ICAgICAgICBwIHsgICAgICAgICAgICBtYXJnaW46IDVweCAwOyAgICAgICAgfSAgICA8L3N0eWxlPjwvaGVhZD48Ym9keT48c21hbGw+PGI+PGEgaHJlZj0icHNpX2VsZW1lbnQ6Ly9BIj48Y29kZT5BPC9jb2RlPjwvYT48L2I+PC9zbWFsbD48UFJFPnB1YmxpYyA8YSBocmVmPSJwc2lfZWxlbWVudDovL2phdmEudXRpbC5MaXN0Ij48Y29kZT5MaXN0PC9jb2RlPjwvYT4mbHQ7PGEgaHJlZj0icHNpX2VsZW1lbnQ6Ly9qYXZhLmxhbmcuU3RyaW5nIj48Y29kZT5TdHJpbmc8L2NvZGU+PC9hPiZndDsgPGI+c3RyaW5ncyA9IG5ldyA8YSBocmVmPSJwc2lfZWxlbWVudDovL2phdmEudXRpbC5BcnJheUxpc3QiPjxjb2RlPkFycmF5TGlzdDwvY29kZT48L2E+Jmx0OzxhIGhyZWY9InBzaV9lbGVtZW50Oi8vamF2YS5sYW5nLlN0cmluZyI+PGNvZGU+U3RyaW5nPC9jb2RlPjwvYT4mZ3Q7KG5ldyA8YSBocmVmPSJwc2lfZWxlbWVudDovL2phdmEudXRpbC5BcnJheUxpc3QiPjxjb2RlPkFycmF5TGlzdDwvY29kZT48L2E+Jmx0OzxhIGhyZWY9InBzaV9lbGVtZW50Oi8vamF2YS5sYW5nLkludGVnZXIiPjxjb2RlPkludGVnZXI8L2NvZGU+PC9hPiZndDsoKSwgQ29sbGVjdGlvbnMuc2luZ2xldG9uKG5ldyA8YSBocmVmPSJwc2lfZWxlbWVudDovL2phdmEudXRpbC5BcnJheUxpc3QiPjxjb2RlPkFycmF5TGlzdDwvY29kZT48L2E+Jmx0OzxhIGhyZWY9InBzaV9lbGVtZW50Oi8vamF2YS5sYW5nLkRvdWJsZSI+PGNvZGU+RG91YmxlPC9jb2RlPjwvYT4mZ3Q7KCkpKTwvYj48L1BSRT48L2JvZHk+PC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9qYXZhZG9jSUcvaW5pdGlhbGl6ZXJXaXRoTmV3LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvamF2YWRvY0lHL2luaXRpYWxpemVyV2l0aE5ldy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRlNGY0MWIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvamF2YWRvY0lHL2luaXRpYWxpemVyV2l0aE5ldy5qYXZhCkBAIC0wLDAgKzEsNiBAQAoraW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7CitpbXBvcnQgamF2YS51dGlsLkxpc3Q7CisKK2NsYXNzIEEgeworICBwdWJsaWMgTGlzdDxTdHJpbmc+IHN0cmluZ3MgPSBuZXcgQXJyYXlMaXN0PFN0cmluZz4obmV3IEFycmF5TGlzdDxJbnRlZ2VyPigpLCBDb2xsZWN0aW9ucy5zaW5nbGV0b24obmV3IEFycmF5TGlzdDxEb3VibGU+KCkpKTsKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9qYXZhZG9jSUcvbWV0aG9kVHlwZVBhcmFtZXRlci5odG1sIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2phdmFkb2NJRy9tZXRob2RUeXBlUGFyYW1ldGVyLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODZlZDY2MgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9qYXZhZG9jSUcvbWV0aG9kVHlwZVBhcmFtZXRlci5odG1sCkBAIC0wLDAgKzEgQEAKKzxodG1sPjxoZWFkPiAgICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPiAgICAgICAgI2Vycm9yIHsgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWVlZWVlOyAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDEwcHg7ICAgICAgICB9ICAgICAgICBwIHsgICAgICAgICAgICBtYXJnaW46IDVweCAwOyAgICAgICAgfSAgICA8L3N0eWxlPjwvaGVhZD48Ym9keT48c21hbGw+PGI+PGEgaHJlZj0icHNpX2VsZW1lbnQ6Ly9NZXRob2RUeXBlUGFyYW0iPjxjb2RlPk1ldGhvZFR5cGVQYXJhbTwvY29kZT48L2E+PC9iPjwvc21hbGw+PFBSRT4mbHQ7VCZndDsmbmJzcDt2b2lkJm5ic3A7PGI+Zm9vPC9iPihUJm5ic3A7dCk8L1BSRT48REQ+PERMPjxEVD48Yj5UeXBlIHBhcmFtZXRlcnM6PC9iPjxERD48Y29kZT4mbHQ7VCZndDs8L2NvZGU+IC0gIHR5cGUgcGFyYW08L0REPjwvREw+PC9ERD48L2JvZHk+PC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9qYXZhZG9jSUcvbWV0aG9kVHlwZVBhcmFtZXRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2phdmFkb2NJRy9tZXRob2RUeXBlUGFyYW1ldGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWFkNWQ4NQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9qYXZhZG9jSUcvbWV0aG9kVHlwZVBhcmFtZXRlci5qYXZhCkBAIC0wLDAgKzEsNyBAQAorY2xhc3MgTWV0aG9kVHlwZVBhcmFtIHsKKyAgLyoqCisgICogQHBhcmFtIDxUPiB0eXBlIHBhcmFtCisgICovCisgIDxUPiB2b2lkIGZvbyhUIHQpIHsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9qYXZhZG9jSUcvcGFja2FnZUluZm8vcGFja2FnZS1pbmZvLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvamF2YWRvY0lHL3BhY2thZ2VJbmZvL3BhY2thZ2UtaW5mby5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVkYzNmMWIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvamF2YWRvY0lHL3BhY2thZ2VJbmZvL3BhY2thZ2UtaW5mby5qYXZhCkBAIC0wLDAgKzEsNCBAQAorLyoqCisgKiBUaGlzIHBhY2thZ2UgY29udGFpbnMgbm90aGluZyBidXQgcGFja2FnZS1pbmZvLmphdmEKKyAqLworcGFja2FnZSBwYWNrYWdlSW5mbzsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvamF2YWRvY0lHL3BhY2thZ2VJbmZvL3BhY2thZ2VJbmZvLmh0bWwgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvamF2YWRvY0lHL3BhY2thZ2VJbmZvL3BhY2thZ2VJbmZvLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2M3ZmY4OQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9qYXZhZG9jSUcvcGFja2FnZUluZm8vcGFja2FnZUluZm8uaHRtbApAQCAtMCwwICsxLDIgQEAKKzxodG1sPjxoZWFkPiAgICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPiAgICAgICAgI2Vycm9yIHsgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWVlZWVlOyAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDEwcHg7ICAgICAgICB9ICAgICAgICBwIHsgICAgICAgICAgICBtYXJnaW46IDVweCAwOyAgICAgICAgfSAgICA8L3N0eWxlPjwvaGVhZD48Ym9keT4KKyAgIFRoaXMgcGFja2FnZSBjb250YWlucyBub3RoaW5nIGJ1dCBwYWNrYWdlLWluZm8uamF2YTwvYm9keT48L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2phdmFkb2NJRy9zaW1wbGVGaWVsZC5odG1sIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2phdmFkb2NJRy9zaW1wbGVGaWVsZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY0M2NlYWMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvamF2YWRvY0lHL3NpbXBsZUZpZWxkLmh0bWwKQEAgLTAsMCArMSBAQAorPGh0bWw+PGhlYWQ+ICAgIDxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+ICAgICAgICAjZXJyb3IgeyAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNlZWVlZWU7ICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMTBweDsgICAgICAgIH0gICAgICAgIHAgeyAgICAgICAgICAgIG1hcmdpbjogNXB4IDA7ICAgICAgICB9ICAgIDwvc3R5bGU+PC9oZWFkPjxib2R5PjxzbWFsbD48Yj48YSBocmVmPSJwc2lfZWxlbWVudDovL0EiPjxjb2RlPkE8L2NvZGU+PC9hPjwvYj48L3NtYWxsPjxQUkU+cHVibGljIHN0YXRpYyBpbnQgPGI+SkFWQURPQ19NRTwvYj48L1BSRT4gVGVzdDwvYm9keT48L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2phdmFkb2NJRy9zaW1wbGVGaWVsZC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2phdmFkb2NJRy9zaW1wbGVGaWVsZC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjExNzJlNjkxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L2phdmFkb2NJRy9zaW1wbGVGaWVsZC5qYXZhCkBAIC0wLDAgKzEsNCBAQAorY2xhc3MgQSB7CisgIC8qKiBUZXN0ICovCisgIHB1YmxpYyBzdGF0aWMgaW50IEpBVkFET0NfTUU7Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvamF2YWRvY0lHL3ZhbHVlSW5NZXRob2QuaHRtbCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9qYXZhZG9jSUcvdmFsdWVJbk1ldGhvZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjliMmZlNzIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvamF2YWRvY0lHL3ZhbHVlSW5NZXRob2QuaHRtbApAQCAtMCwwICsxIEBACis8aHRtbD48aGVhZD4gICAgPHN0eWxlIHR5cGU9InRleHQvY3NzIj4gICAgICAgICNlcnJvciB7ICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2VlZWVlZTsgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAxMHB4OyAgICAgICAgfSAgICAgICAgcCB7ICAgICAgICAgICAgbWFyZ2luOiA1cHggMDsgICAgICAgIH0gICAgPC9zdHlsZT48L2hlYWQ+PGJvZHk+PHNtYWxsPjxiPjxhIGhyZWY9InBzaV9lbGVtZW50Oi8vQSI+PGNvZGU+QTwvY29kZT48L2E+PC9iPjwvc21hbGw+PFBSRT5wdWJsaWMgc3RhdGljJm5ic3A7dm9pZCZuYnNwOzxiPkpBVkFET0NfTUU8L2I+KCk8L1BSRT4gVGhlIHZhbHVlIG9mIEEgaXMgMjMuPC9ib2R5PjwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvamF2YWRvY0lHL3ZhbHVlSW5NZXRob2QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9qYXZhZG9jSUcvdmFsdWVJbk1ldGhvZC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRjN2UyMDUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvamF2YWRvY0lHL3ZhbHVlSW5NZXRob2QuamF2YQpAQCAtMCwwICsxLDYgQEAKK2NsYXNzIEEgeworICBwdWJsaWMgc3RhdGljIGludCBBID0gMjM7CisKKyAgLyoqIFRoZSB2YWx1ZSBvZiBBIGlzIHtAdmFsdWUgI0F9LiAqLworICBwdWJsaWMgc3RhdGljIHZvaWQgSkFWQURPQ19NRSgpIHsgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L25hdmlnYXRpb24vYWxleFByb2plY3QvdGVzdC5pcHIgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvbmF2aWdhdGlvbi9hbGV4UHJvamVjdC90ZXN0LmlwcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZGVkNmY0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L25hdmlnYXRpb24vYWxleFByb2plY3QvdGVzdC5pcHIKQEAgLTAsMCArMSwyNjQgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8cHJvamVjdCB2ZXJzaW9uPSI0IiByZWxhdGl2ZVBhdGhzPSJ0cnVlIj4KKyAgPGNvbXBvbmVudCBuYW1lPSJBbnRDb25maWd1cmF0aW9uIj4KKyAgICA8ZGVmYXVsdEFudCBidW5kbGVkQW50PSJ0cnVlIiAvPgorICA8L2NvbXBvbmVudD4KKyAgPGNvbXBvbmVudCBuYW1lPSJCdWlsZEphclByb2plY3RTZXR0aW5ncyI+CisgICAgPG9wdGlvbiBuYW1lPSJCVUlMRF9KQVJTX09OX01BS0UiIHZhbHVlPSJmYWxzZSIgLz4KKyAgPC9jb21wb25lbnQ+CisgIDxjb21wb25lbnQgbmFtZT0iQ29kZVN0eWxlUHJvamVjdFByb2ZpbGVNYW5nZXIiPgorICAgIDxvcHRpb24gbmFtZT0iUFJPSkVDVF9QUk9GSUxFIiAvPgorICAgIDxvcHRpb24gbmFtZT0iVVNFX1BST0pFQ1RfTEVWRUxfU0VUVElOR1MiIHZhbHVlPSJmYWxzZSIgLz4KKyAgICA8c2NvcGVzIC8+CisgICAgPHByb2ZpbGVzIC8+CisgIDwvY29tcG9uZW50PgorICA8Y29tcG9uZW50IG5hbWU9IkNvZGVTdHlsZVNldHRpbmdzTWFuYWdlciI+CisgICAgPG9wdGlvbiBuYW1lPSJQRVJfUFJPSkVDVF9TRVRUSU5HUyIgLz4KKyAgICA8b3B0aW9uIG5hbWU9IlVTRV9QRVJfUFJPSkVDVF9TRVRUSU5HUyIgdmFsdWU9ImZhbHNlIiAvPgorICA8L2NvbXBvbmVudD4KKyAgPGNvbXBvbmVudCBuYW1lPSJDb21waWxlckNvbmZpZ3VyYXRpb24iPgorICAgIDxvcHRpb24gbmFtZT0iREVGQVVMVF9DT01QSUxFUiIgdmFsdWU9IkphdmFjIiAvPgorICAgIDxvcHRpb24gbmFtZT0iREVQTE9ZX0FGVEVSX01BS0UiIHZhbHVlPSIwIiAvPgorICAgIDxyZXNvdXJjZUV4dGVuc2lvbnM+CisgICAgICA8ZW50cnkgbmFtZT0iLitcLihwcm9wZXJ0aWVzfHhtbHxodG1sfGR0ZHx0bGQpIiAvPgorICAgICAgPGVudHJ5IG5hbWU9Ii4rXC4oZ2lmfHBuZ3xqcGVnfGpwZykiIC8+CisgICAgPC9yZXNvdXJjZUV4dGVuc2lvbnM+CisgICAgPHdpbGRjYXJkUmVzb3VyY2VQYXR0ZXJucz4KKyAgICAgIDxlbnRyeSBuYW1lPSI/Ki5wcm9wZXJ0aWVzIiAvPgorICAgICAgPGVudHJ5IG5hbWU9Ij8qLnhtbCIgLz4KKyAgICAgIDxlbnRyeSBuYW1lPSI/Ki5naWYiIC8+CisgICAgICA8ZW50cnkgbmFtZT0iPyoucG5nIiAvPgorICAgICAgPGVudHJ5IG5hbWU9Ij8qLmpwZWciIC8+CisgICAgICA8ZW50cnkgbmFtZT0iPyouanBnIiAvPgorICAgICAgPGVudHJ5IG5hbWU9Ij8qLmh0bWwiIC8+CisgICAgICA8ZW50cnkgbmFtZT0iPyouZHRkIiAvPgorICAgICAgPGVudHJ5IG5hbWU9Ij8qLnRsZCIgLz4KKyAgICA8L3dpbGRjYXJkUmVzb3VyY2VQYXR0ZXJucz4KKyAgPC9jb21wb25lbnQ+CisgIDxjb21wb25lbnQgbmFtZT0iRGF0YVNvdXJjZU1hbmFnZXJJbXBsIiAvPgorICA8Y29tcG9uZW50IG5hbWU9IkRlcGVuZGVuY2llc0FuYWx5emVNYW5hZ2VyIj4KKyAgICA8b3B0aW9uIG5hbWU9Im15Rm9yd2FyZERpcmVjdGlvbiIgdmFsdWU9ImZhbHNlIiAvPgorICA8L2NvbXBvbmVudD4KKyAgPGNvbXBvbmVudCBuYW1lPSJEZXBlbmRlbmN5VmFsaWRhdGlvbk1hbmFnZXIiIC8+CisgIDxjb21wb25lbnQgbmFtZT0iRWNsaXBzZUNvbXBpbGVyU2V0dGluZ3MiPgorICAgIDxvcHRpb24gbmFtZT0iREVCVUdHSU5HX0lORk8iIHZhbHVlPSJ0cnVlIiAvPgorICAgIDxvcHRpb24gbmFtZT0iR0VORVJBVEVfTk9fV0FSTklOR1MiIHZhbHVlPSJ0cnVlIiAvPgorICAgIDxvcHRpb24gbmFtZT0iREVQUkVDQVRJT04iIHZhbHVlPSJmYWxzZSIgLz4KKyAgICA8b3B0aW9uIG5hbWU9IkFERElUSU9OQUxfT1BUSU9OU19TVFJJTkciIHZhbHVlPSIiIC8+CisgICAgPG9wdGlvbiBuYW1lPSJNQVhJTVVNX0hFQVBfU0laRSIgdmFsdWU9IjEyOCIgLz4KKyAgPC9jb21wb25lbnQ+CisgIDxjb21wb25lbnQgbmFtZT0iRWNsaXBzZUVtYmVkZGVkQ29tcGlsZXJTZXR0aW5ncyI+CisgICAgPG9wdGlvbiBuYW1lPSJERUJVR0dJTkdfSU5GTyIgdmFsdWU9InRydWUiIC8+CisgICAgPG9wdGlvbiBuYW1lPSJHRU5FUkFURV9OT19XQVJOSU5HUyIgdmFsdWU9InRydWUiIC8+CisgICAgPG9wdGlvbiBuYW1lPSJERVBSRUNBVElPTiIgdmFsdWU9ImZhbHNlIiAvPgorICAgIDxvcHRpb24gbmFtZT0iQURESVRJT05BTF9PUFRJT05TX1NUUklORyIgdmFsdWU9IiIgLz4KKyAgICA8b3B0aW9uIG5hbWU9Ik1BWElNVU1fSEVBUF9TSVpFIiB2YWx1ZT0iMTI4IiAvPgorICA8L2NvbXBvbmVudD4KKyAgPGNvbXBvbmVudCBuYW1lPSJFbnRyeVBvaW50c01hbmFnZXIiPgorICAgIDxlbnRyeV9wb2ludHMgLz4KKyAgPC9jb21wb25lbnQ+CisgIDxjb21wb25lbnQgbmFtZT0iRXhwb3J0VG9IVE1MU2V0dGluZ3MiPgorICAgIDxvcHRpb24gbmFtZT0iUFJJTlRfTElORV9OVU1CRVJTIiB2YWx1ZT0iZmFsc2UiIC8+CisgICAgPG9wdGlvbiBuYW1lPSJPUEVOX0lOX0JST1dTRVIiIHZhbHVlPSJmYWxzZSIgLz4KKyAgICA8b3B0aW9uIG5hbWU9Ik9VVFBVVF9ESVJFQ1RPUlkiIC8+CisgIDwvY29tcG9uZW50PgorICA8Y29tcG9uZW50IG5hbWU9IkdVSSBEZXNpZ25lciBjb21wb25lbnQgbG9hZGVyIGZhY3RvcnkiIC8+CisgIDxjb21wb25lbnQgbmFtZT0iSW5zcGVjdGlvblByb2plY3RQcm9maWxlTWFuYWdlciI+CisgICAgPG9wdGlvbiBuYW1lPSJQUk9KRUNUX1BST0ZJTEUiIHZhbHVlPSJQcm9qZWN0IERlZmF1bHQiIC8+CisgICAgPG9wdGlvbiBuYW1lPSJVU0VfUFJPSkVDVF9MRVZFTF9TRVRUSU5HUyIgdmFsdWU9ImZhbHNlIiAvPgorICAgIDxzY29wZXMgLz4KKyAgICA8cHJvZmlsZXM+CisgICAgICA8cHJvZmlsZSB2ZXJzaW9uPSIxLjAiIGlzX2xvY2tlZD0iZmFsc2UiPgorICAgICAgICA8b3B0aW9uIG5hbWU9Im15TmFtZSIgdmFsdWU9IlByb2plY3QgRGVmYXVsdCIgLz4KKyAgICAgICAgPG9wdGlvbiBuYW1lPSJteUxvY2FsIiB2YWx1ZT0iZmFsc2UiIC8+CisgICAgICA8L3Byb2ZpbGU+CisgICAgPC9wcm9maWxlcz4KKyAgPC9jb21wb25lbnQ+CisgIDxjb21wb25lbnQgbmFtZT0iSmF2YWNTZXR0aW5ncyI+CisgICAgPG9wdGlvbiBuYW1lPSJERUJVR0dJTkdfSU5GTyIgdmFsdWU9InRydWUiIC8+CisgICAgPG9wdGlvbiBuYW1lPSJHRU5FUkFURV9OT19XQVJOSU5HUyIgdmFsdWU9ImZhbHNlIiAvPgorICAgIDxvcHRpb24gbmFtZT0iREVQUkVDQVRJT04iIHZhbHVlPSJ0cnVlIiAvPgorICAgIDxvcHRpb24gbmFtZT0iQURESVRJT05BTF9PUFRJT05TX1NUUklORyIgdmFsdWU9IiIgLz4KKyAgICA8b3B0aW9uIG5hbWU9Ik1BWElNVU1fSEVBUF9TSVpFIiB2YWx1ZT0iMTI4IiAvPgorICA8L2NvbXBvbmVudD4KKyAgPGNvbXBvbmVudCBuYW1lPSJKYXZhZG9jR2VuZXJhdGlvbk1hbmFnZXIiPgorICAgIDxvcHRpb24gbmFtZT0iT1VUUFVUX0RJUkVDVE9SWSIgLz4KKyAgICA8b3B0aW9uIG5hbWU9Ik9QVElPTl9TQ09QRSIgdmFsdWU9InByb3RlY3RlZCIgLz4KKyAgICA8b3B0aW9uIG5hbWU9Ik9QVElPTl9ISUVSQVJDSFkiIHZhbHVlPSJ0cnVlIiAvPgorICAgIDxvcHRpb24gbmFtZT0iT1BUSU9OX05BVklHQVRPUiIgdmFsdWU9InRydWUiIC8+CisgICAgPG9wdGlvbiBuYW1lPSJPUFRJT05fSU5ERVgiIHZhbHVlPSJ0cnVlIiAvPgorICAgIDxvcHRpb24gbmFtZT0iT1BUSU9OX1NFUEFSQVRFX0lOREVYIiB2YWx1ZT0idHJ1ZSIgLz4KKyAgICA8b3B0aW9uIG5hbWU9Ik9QVElPTl9ET0NVTUVOVF9UQUdfVVNFIiB2YWx1ZT0iZmFsc2UiIC8+CisgICAgPG9wdGlvbiBuYW1lPSJPUFRJT05fRE9DVU1FTlRfVEFHX0FVVEhPUiIgdmFsdWU9ImZhbHNlIiAvPgorICAgIDxvcHRpb24gbmFtZT0iT1BUSU9OX0RPQ1VNRU5UX1RBR19WRVJTSU9OIiB2YWx1ZT0iZmFsc2UiIC8+CisgICAgPG9wdGlvbiBuYW1lPSJPUFRJT05fRE9DVU1FTlRfVEFHX0RFUFJFQ0FURUQiIHZhbHVlPSJ0cnVlIiAvPgorICAgIDxvcHRpb24gbmFtZT0iT1BUSU9OX0RFUFJFQ0FURURfTElTVCIgdmFsdWU9InRydWUiIC8+CisgICAgPG9wdGlvbiBuYW1lPSJPVEhFUl9PUFRJT05TIiB2YWx1ZT0iIiAvPgorICAgIDxvcHRpb24gbmFtZT0iSEVBUF9TSVpFIiAvPgorICAgIDxvcHRpb24gbmFtZT0iTE9DQUxFIiAvPgorICAgIDxvcHRpb24gbmFtZT0iT1BFTl9JTl9CUk9XU0VSIiB2YWx1ZT0idHJ1ZSIgLz4KKyAgPC9jb21wb25lbnQ+CisgIDxjb21wb25lbnQgbmFtZT0iSmlrZXNTZXR0aW5ncyI+CisgICAgPG9wdGlvbiBuYW1lPSJKSUtFU19QQVRIIiB2YWx1ZT0iIiAvPgorICAgIDxvcHRpb24gbmFtZT0iREVCVUdHSU5HX0lORk8iIHZhbHVlPSJ0cnVlIiAvPgorICAgIDxvcHRpb24gbmFtZT0iREVQUkVDQVRJT04iIHZhbHVlPSJ0cnVlIiAvPgorICAgIDxvcHRpb24gbmFtZT0iR0VORVJBVEVfTk9fV0FSTklOR1MiIHZhbHVlPSJmYWxzZSIgLz4KKyAgICA8b3B0aW9uIG5hbWU9IklTX0VNQUNTX0VSUk9SU19NT0RFIiB2YWx1ZT0idHJ1ZSIgLz4KKyAgICA8b3B0aW9uIG5hbWU9IkFERElUSU9OQUxfT1BUSU9OU19TVFJJTkciIHZhbHVlPSIiIC8+CisgIDwvY29tcG9uZW50PgorICA8Y29tcG9uZW50IG5hbWU9IkxvZ0NvbnNvbGVQcmVmZXJlbmNlcyI+CisgICAgPG9wdGlvbiBuYW1lPSJGSUxURVJfRVJST1JTIiB2YWx1ZT0iZmFsc2UiIC8+CisgICAgPG9wdGlvbiBuYW1lPSJGSUxURVJfV0FSTklOR1MiIHZhbHVlPSJmYWxzZSIgLz4KKyAgICA8b3B0aW9uIG5hbWU9IkZJTFRFUl9JTkZPIiB2YWx1ZT0idHJ1ZSIgLz4KKyAgICA8b3B0aW9uIG5hbWU9IkNVU1RPTV9GSUxURVIiIC8+CisgIDwvY29tcG9uZW50PgorICA8Y29tcG9uZW50IG5hbWU9IlBhbGV0dGUyIj4KKyAgICA8Z3JvdXAgbmFtZT0iU3dpbmciPgorICAgICAgPGl0ZW0gY2xhc3M9ImNvbS5pbnRlbGxpai51aURlc2lnbmVyLkhTcGFjZXIiIHRvb2x0aXAtdGV4dD0iSG9yaXpvbnRhbCBTcGFjZXIiIGljb249Ii9jb20vaW50ZWxsaWovdWlEZXNpZ25lci9pY29ucy9oc3BhY2VyLnBuZyIgcmVtb3ZhYmxlPSJmYWxzZSIgYXV0by1jcmVhdGUtYmluZGluZz0iZmFsc2UiIGNhbi1hdHRhY2gtbGFiZWw9ImZhbHNlIj4KKyAgICAgICAgPGRlZmF1bHQtY29uc3RyYWludHMgdnNpemUtcG9saWN5PSIxIiBoc2l6ZS1wb2xpY3k9IjYiIGFuY2hvcj0iMCIgZmlsbD0iMSIgLz4KKyAgICAgIDwvaXRlbT4KKyAgICAgIDxpdGVtIGNsYXNzPSJjb20uaW50ZWxsaWoudWlEZXNpZ25lci5WU3BhY2VyIiB0b29sdGlwLXRleHQ9IlZlcnRpY2FsIFNwYWNlciIgaWNvbj0iL2NvbS9pbnRlbGxpai91aURlc2lnbmVyL2ljb25zL3ZzcGFjZXIucG5nIiByZW1vdmFibGU9ImZhbHNlIiBhdXRvLWNyZWF0ZS1iaW5kaW5nPSJmYWxzZSIgY2FuLWF0dGFjaC1sYWJlbD0iZmFsc2UiPgorICAgICAgICA8ZGVmYXVsdC1jb25zdHJhaW50cyB2c2l6ZS1wb2xpY3k9IjYiIGhzaXplLXBvbGljeT0iMSIgYW5jaG9yPSIwIiBmaWxsPSIyIiAvPgorICAgICAgPC9pdGVtPgorICAgICAgPGl0ZW0gY2xhc3M9ImphdmF4LnN3aW5nLkpQYW5lbCIgaWNvbj0iL2NvbS9pbnRlbGxpai91aURlc2lnbmVyL2ljb25zL3BhbmVsLnBuZyIgcmVtb3ZhYmxlPSJmYWxzZSIgYXV0by1jcmVhdGUtYmluZGluZz0iZmFsc2UiIGNhbi1hdHRhY2gtbGFiZWw9ImZhbHNlIj4KKyAgICAgICAgPGRlZmF1bHQtY29uc3RyYWludHMgdnNpemUtcG9saWN5PSIzIiBoc2l6ZS1wb2xpY3k9IjMiIGFuY2hvcj0iMCIgZmlsbD0iMyIgLz4KKyAgICAgIDwvaXRlbT4KKyAgICAgIDxpdGVtIGNsYXNzPSJqYXZheC5zd2luZy5KU2Nyb2xsUGFuZSIgaWNvbj0iL2NvbS9pbnRlbGxpai91aURlc2lnbmVyL2ljb25zL3Njcm9sbFBhbmUucG5nIiByZW1vdmFibGU9ImZhbHNlIiBhdXRvLWNyZWF0ZS1iaW5kaW5nPSJmYWxzZSIgY2FuLWF0dGFjaC1sYWJlbD0idHJ1ZSI+CisgICAgICAgIDxkZWZhdWx0LWNvbnN0cmFpbnRzIHZzaXplLXBvbGljeT0iNyIgaHNpemUtcG9saWN5PSI3IiBhbmNob3I9IjAiIGZpbGw9IjMiIC8+CisgICAgICA8L2l0ZW0+CisgICAgICA8aXRlbSBjbGFzcz0iamF2YXguc3dpbmcuSkJ1dHRvbiIgaWNvbj0iL2NvbS9pbnRlbGxpai91aURlc2lnbmVyL2ljb25zL2J1dHRvbi5wbmciIHJlbW92YWJsZT0iZmFsc2UiIGF1dG8tY3JlYXRlLWJpbmRpbmc9InRydWUiIGNhbi1hdHRhY2gtbGFiZWw9ImZhbHNlIj4KKyAgICAgICAgPGRlZmF1bHQtY29uc3RyYWludHMgdnNpemUtcG9saWN5PSIwIiBoc2l6ZS1wb2xpY3k9IjMiIGFuY2hvcj0iMCIgZmlsbD0iMSIgLz4KKyAgICAgICAgPGluaXRpYWwtdmFsdWVzPgorICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJ0ZXh0IiB2YWx1ZT0iQnV0dG9uIiAvPgorICAgICAgICA8L2luaXRpYWwtdmFsdWVzPgorICAgICAgPC9pdGVtPgorICAgICAgPGl0ZW0gY2xhc3M9ImphdmF4LnN3aW5nLkpSYWRpb0J1dHRvbiIgaWNvbj0iL2NvbS9pbnRlbGxpai91aURlc2lnbmVyL2ljb25zL3JhZGlvQnV0dG9uLnBuZyIgcmVtb3ZhYmxlPSJmYWxzZSIgYXV0by1jcmVhdGUtYmluZGluZz0idHJ1ZSIgY2FuLWF0dGFjaC1sYWJlbD0iZmFsc2UiPgorICAgICAgICA8ZGVmYXVsdC1jb25zdHJhaW50cyB2c2l6ZS1wb2xpY3k9IjAiIGhzaXplLXBvbGljeT0iMyIgYW5jaG9yPSI4IiBmaWxsPSIwIiAvPgorICAgICAgICA8aW5pdGlhbC12YWx1ZXM+CisgICAgICAgICAgPHByb3BlcnR5IG5hbWU9InRleHQiIHZhbHVlPSJSYWRpb0J1dHRvbiIgLz4KKyAgICAgICAgPC9pbml0aWFsLXZhbHVlcz4KKyAgICAgIDwvaXRlbT4KKyAgICAgIDxpdGVtIGNsYXNzPSJqYXZheC5zd2luZy5KQ2hlY2tCb3giIGljb249Ii9jb20vaW50ZWxsaWovdWlEZXNpZ25lci9pY29ucy9jaGVja0JveC5wbmciIHJlbW92YWJsZT0iZmFsc2UiIGF1dG8tY3JlYXRlLWJpbmRpbmc9InRydWUiIGNhbi1hdHRhY2gtbGFiZWw9ImZhbHNlIj4KKyAgICAgICAgPGRlZmF1bHQtY29uc3RyYWludHMgdnNpemUtcG9saWN5PSIwIiBoc2l6ZS1wb2xpY3k9IjMiIGFuY2hvcj0iOCIgZmlsbD0iMCIgLz4KKyAgICAgICAgPGluaXRpYWwtdmFsdWVzPgorICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJ0ZXh0IiB2YWx1ZT0iQ2hlY2tCb3giIC8+CisgICAgICAgIDwvaW5pdGlhbC12YWx1ZXM+CisgICAgICA8L2l0ZW0+CisgICAgICA8aXRlbSBjbGFzcz0iamF2YXguc3dpbmcuSkxhYmVsIiBpY29uPSIvY29tL2ludGVsbGlqL3VpRGVzaWduZXIvaWNvbnMvbGFiZWwucG5nIiByZW1vdmFibGU9ImZhbHNlIiBhdXRvLWNyZWF0ZS1iaW5kaW5nPSJmYWxzZSIgY2FuLWF0dGFjaC1sYWJlbD0iZmFsc2UiPgorICAgICAgICA8ZGVmYXVsdC1jb25zdHJhaW50cyB2c2l6ZS1wb2xpY3k9IjAiIGhzaXplLXBvbGljeT0iMCIgYW5jaG9yPSI4IiBmaWxsPSIwIiAvPgorICAgICAgICA8aW5pdGlhbC12YWx1ZXM+CisgICAgICAgICAgPHByb3BlcnR5IG5hbWU9InRleHQiIHZhbHVlPSJMYWJlbCIgLz4KKyAgICAgICAgPC9pbml0aWFsLXZhbHVlcz4KKyAgICAgIDwvaXRlbT4KKyAgICAgIDxpdGVtIGNsYXNzPSJqYXZheC5zd2luZy5KVGV4dEZpZWxkIiBpY29uPSIvY29tL2ludGVsbGlqL3VpRGVzaWduZXIvaWNvbnMvdGV4dEZpZWxkLnBuZyIgcmVtb3ZhYmxlPSJmYWxzZSIgYXV0by1jcmVhdGUtYmluZGluZz0idHJ1ZSIgY2FuLWF0dGFjaC1sYWJlbD0idHJ1ZSI+CisgICAgICAgIDxkZWZhdWx0LWNvbnN0cmFpbnRzIHZzaXplLXBvbGljeT0iMCIgaHNpemUtcG9saWN5PSI2IiBhbmNob3I9IjgiIGZpbGw9IjEiPgorICAgICAgICAgIDxwcmVmZXJyZWQtc2l6ZSB3aWR0aD0iMTUwIiBoZWlnaHQ9Ii0xIiAvPgorICAgICAgICA8L2RlZmF1bHQtY29uc3RyYWludHM+CisgICAgICA8L2l0ZW0+CisgICAgICA8aXRlbSBjbGFzcz0iamF2YXguc3dpbmcuSlBhc3N3b3JkRmllbGQiIGljb249Ii9jb20vaW50ZWxsaWovdWlEZXNpZ25lci9pY29ucy9wYXNzd29yZEZpZWxkLnBuZyIgcmVtb3ZhYmxlPSJmYWxzZSIgYXV0by1jcmVhdGUtYmluZGluZz0idHJ1ZSIgY2FuLWF0dGFjaC1sYWJlbD0idHJ1ZSI+CisgICAgICAgIDxkZWZhdWx0LWNvbnN0cmFpbnRzIHZzaXplLXBvbGljeT0iMCIgaHNpemUtcG9saWN5PSI2IiBhbmNob3I9IjgiIGZpbGw9IjEiPgorICAgICAgICAgIDxwcmVmZXJyZWQtc2l6ZSB3aWR0aD0iMTUwIiBoZWlnaHQ9Ii0xIiAvPgorICAgICAgICA8L2RlZmF1bHQtY29uc3RyYWludHM+CisgICAgICA8L2l0ZW0+CisgICAgICA8aXRlbSBjbGFzcz0iamF2YXguc3dpbmcuSkZvcm1hdHRlZFRleHRGaWVsZCIgaWNvbj0iL2NvbS9pbnRlbGxpai91aURlc2lnbmVyL2ljb25zL2Zvcm1hdHRlZFRleHRGaWVsZC5wbmciIHJlbW92YWJsZT0iZmFsc2UiIGF1dG8tY3JlYXRlLWJpbmRpbmc9InRydWUiIGNhbi1hdHRhY2gtbGFiZWw9InRydWUiPgorICAgICAgICA8ZGVmYXVsdC1jb25zdHJhaW50cyB2c2l6ZS1wb2xpY3k9IjAiIGhzaXplLXBvbGljeT0iNiIgYW5jaG9yPSI4IiBmaWxsPSIxIj4KKyAgICAgICAgICA8cHJlZmVycmVkLXNpemUgd2lkdGg9IjE1MCIgaGVpZ2h0PSItMSIgLz4KKyAgICAgICAgPC9kZWZhdWx0LWNvbnN0cmFpbnRzPgorICAgICAgPC9pdGVtPgorICAgICAgPGl0ZW0gY2xhc3M9ImphdmF4LnN3aW5nLkpUZXh0QXJlYSIgaWNvbj0iL2NvbS9pbnRlbGxpai91aURlc2lnbmVyL2ljb25zL3RleHRBcmVhLnBuZyIgcmVtb3ZhYmxlPSJmYWxzZSIgYXV0by1jcmVhdGUtYmluZGluZz0idHJ1ZSIgY2FuLWF0dGFjaC1sYWJlbD0idHJ1ZSI+CisgICAgICAgIDxkZWZhdWx0LWNvbnN0cmFpbnRzIHZzaXplLXBvbGljeT0iNiIgaHNpemUtcG9saWN5PSI2IiBhbmNob3I9IjAiIGZpbGw9IjMiPgorICAgICAgICAgIDxwcmVmZXJyZWQtc2l6ZSB3aWR0aD0iMTUwIiBoZWlnaHQ9IjUwIiAvPgorICAgICAgICA8L2RlZmF1bHQtY29uc3RyYWludHM+CisgICAgICA8L2l0ZW0+CisgICAgICA8aXRlbSBjbGFzcz0iamF2YXguc3dpbmcuSlRleHRQYW5lIiBpY29uPSIvY29tL2ludGVsbGlqL3VpRGVzaWduZXIvaWNvbnMvdGV4dFBhbmUucG5nIiByZW1vdmFibGU9ImZhbHNlIiBhdXRvLWNyZWF0ZS1iaW5kaW5nPSJ0cnVlIiBjYW4tYXR0YWNoLWxhYmVsPSJ0cnVlIj4KKyAgICAgICAgPGRlZmF1bHQtY29uc3RyYWludHMgdnNpemUtcG9saWN5PSI2IiBoc2l6ZS1wb2xpY3k9IjYiIGFuY2hvcj0iMCIgZmlsbD0iMyI+CisgICAgICAgICAgPHByZWZlcnJlZC1zaXplIHdpZHRoPSIxNTAiIGhlaWdodD0iNTAiIC8+CisgICAgICAgIDwvZGVmYXVsdC1jb25zdHJhaW50cz4KKyAgICAgIDwvaXRlbT4KKyAgICAgIDxpdGVtIGNsYXNzPSJqYXZheC5zd2luZy5KRWRpdG9yUGFuZSIgaWNvbj0iL2NvbS9pbnRlbGxpai91aURlc2lnbmVyL2ljb25zL2VkaXRvclBhbmUucG5nIiByZW1vdmFibGU9ImZhbHNlIiBhdXRvLWNyZWF0ZS1iaW5kaW5nPSJ0cnVlIiBjYW4tYXR0YWNoLWxhYmVsPSJ0cnVlIj4KKyAgICAgICAgPGRlZmF1bHQtY29uc3RyYWludHMgdnNpemUtcG9saWN5PSI2IiBoc2l6ZS1wb2xpY3k9IjYiIGFuY2hvcj0iMCIgZmlsbD0iMyI+CisgICAgICAgICAgPHByZWZlcnJlZC1zaXplIHdpZHRoPSIxNTAiIGhlaWdodD0iNTAiIC8+CisgICAgICAgIDwvZGVmYXVsdC1jb25zdHJhaW50cz4KKyAgICAgIDwvaXRlbT4KKyAgICAgIDxpdGVtIGNsYXNzPSJqYXZheC5zd2luZy5KQ29tYm9Cb3giIGljb249Ii9jb20vaW50ZWxsaWovdWlEZXNpZ25lci9pY29ucy9jb21ib0JveC5wbmciIHJlbW92YWJsZT0iZmFsc2UiIGF1dG8tY3JlYXRlLWJpbmRpbmc9InRydWUiIGNhbi1hdHRhY2gtbGFiZWw9InRydWUiPgorICAgICAgICA8ZGVmYXVsdC1jb25zdHJhaW50cyB2c2l6ZS1wb2xpY3k9IjAiIGhzaXplLXBvbGljeT0iMiIgYW5jaG9yPSI4IiBmaWxsPSIxIiAvPgorICAgICAgPC9pdGVtPgorICAgICAgPGl0ZW0gY2xhc3M9ImphdmF4LnN3aW5nLkpUYWJsZSIgaWNvbj0iL2NvbS9pbnRlbGxpai91aURlc2lnbmVyL2ljb25zL3RhYmxlLnBuZyIgcmVtb3ZhYmxlPSJmYWxzZSIgYXV0by1jcmVhdGUtYmluZGluZz0idHJ1ZSIgY2FuLWF0dGFjaC1sYWJlbD0iZmFsc2UiPgorICAgICAgICA8ZGVmYXVsdC1jb25zdHJhaW50cyB2c2l6ZS1wb2xpY3k9IjYiIGhzaXplLXBvbGljeT0iNiIgYW5jaG9yPSIwIiBmaWxsPSIzIj4KKyAgICAgICAgICA8cHJlZmVycmVkLXNpemUgd2lkdGg9IjE1MCIgaGVpZ2h0PSI1MCIgLz4KKyAgICAgICAgPC9kZWZhdWx0LWNvbnN0cmFpbnRzPgorICAgICAgPC9pdGVtPgorICAgICAgPGl0ZW0gY2xhc3M9ImphdmF4LnN3aW5nLkpMaXN0IiBpY29uPSIvY29tL2ludGVsbGlqL3VpRGVzaWduZXIvaWNvbnMvbGlzdC5wbmciIHJlbW92YWJsZT0iZmFsc2UiIGF1dG8tY3JlYXRlLWJpbmRpbmc9InRydWUiIGNhbi1hdHRhY2gtbGFiZWw9ImZhbHNlIj4KKyAgICAgICAgPGRlZmF1bHQtY29uc3RyYWludHMgdnNpemUtcG9saWN5PSI2IiBoc2l6ZS1wb2xpY3k9IjIiIGFuY2hvcj0iMCIgZmlsbD0iMyI+CisgICAgICAgICAgPHByZWZlcnJlZC1zaXplIHdpZHRoPSIxNTAiIGhlaWdodD0iNTAiIC8+CisgICAgICAgIDwvZGVmYXVsdC1jb25zdHJhaW50cz4KKyAgICAgIDwvaXRlbT4KKyAgICAgIDxpdGVtIGNsYXNzPSJqYXZheC5zd2luZy5KVHJlZSIgaWNvbj0iL2NvbS9pbnRlbGxpai91aURlc2lnbmVyL2ljb25zL3RyZWUucG5nIiByZW1vdmFibGU9ImZhbHNlIiBhdXRvLWNyZWF0ZS1iaW5kaW5nPSJ0cnVlIiBjYW4tYXR0YWNoLWxhYmVsPSJmYWxzZSI+CisgICAgICAgIDxkZWZhdWx0LWNvbnN0cmFpbnRzIHZzaXplLXBvbGljeT0iNiIgaHNpemUtcG9saWN5PSI2IiBhbmNob3I9IjAiIGZpbGw9IjMiPgorICAgICAgICAgIDxwcmVmZXJyZWQtc2l6ZSB3aWR0aD0iMTUwIiBoZWlnaHQ9IjUwIiAvPgorICAgICAgICA8L2RlZmF1bHQtY29uc3RyYWludHM+CisgICAgICA8L2l0ZW0+CisgICAgICA8aXRlbSBjbGFzcz0iamF2YXguc3dpbmcuSlRhYmJlZFBhbmUiIGljb249Ii9jb20vaW50ZWxsaWovdWlEZXNpZ25lci9pY29ucy90YWJiZWRQYW5lLnBuZyIgcmVtb3ZhYmxlPSJmYWxzZSIgYXV0by1jcmVhdGUtYmluZGluZz0idHJ1ZSIgY2FuLWF0dGFjaC1sYWJlbD0iZmFsc2UiPgorICAgICAgICA8ZGVmYXVsdC1jb25zdHJhaW50cyB2c2l6ZS1wb2xpY3k9IjMiIGhzaXplLXBvbGljeT0iMyIgYW5jaG9yPSIwIiBmaWxsPSIzIj4KKyAgICAgICAgICA8cHJlZmVycmVkLXNpemUgd2lkdGg9IjIwMCIgaGVpZ2h0PSIyMDAiIC8+CisgICAgICAgIDwvZGVmYXVsdC1jb25zdHJhaW50cz4KKyAgICAgIDwvaXRlbT4KKyAgICAgIDxpdGVtIGNsYXNzPSJqYXZheC5zd2luZy5KU3BsaXRQYW5lIiBpY29uPSIvY29tL2ludGVsbGlqL3VpRGVzaWduZXIvaWNvbnMvc3BsaXRQYW5lLnBuZyIgcmVtb3ZhYmxlPSJmYWxzZSIgYXV0by1jcmVhdGUtYmluZGluZz0iZmFsc2UiIGNhbi1hdHRhY2gtbGFiZWw9ImZhbHNlIj4KKyAgICAgICAgPGRlZmF1bHQtY29uc3RyYWludHMgdnNpemUtcG9saWN5PSIzIiBoc2l6ZS1wb2xpY3k9IjMiIGFuY2hvcj0iMCIgZmlsbD0iMyI+CisgICAgICAgICAgPHByZWZlcnJlZC1zaXplIHdpZHRoPSIyMDAiIGhlaWdodD0iMjAwIiAvPgorICAgICAgICA8L2RlZmF1bHQtY29uc3RyYWludHM+CisgICAgICA8L2l0ZW0+CisgICAgICA8aXRlbSBjbGFzcz0iamF2YXguc3dpbmcuSlNwaW5uZXIiIGljb249Ii9jb20vaW50ZWxsaWovdWlEZXNpZ25lci9pY29ucy9zcGlubmVyLnBuZyIgcmVtb3ZhYmxlPSJmYWxzZSIgYXV0by1jcmVhdGUtYmluZGluZz0idHJ1ZSIgY2FuLWF0dGFjaC1sYWJlbD0idHJ1ZSI+CisgICAgICAgIDxkZWZhdWx0LWNvbnN0cmFpbnRzIHZzaXplLXBvbGljeT0iMCIgaHNpemUtcG9saWN5PSI2IiBhbmNob3I9IjgiIGZpbGw9IjEiIC8+CisgICAgICA8L2l0ZW0+CisgICAgICA8aXRlbSBjbGFzcz0iamF2YXguc3dpbmcuSlNsaWRlciIgaWNvbj0iL2NvbS9pbnRlbGxpai91aURlc2lnbmVyL2ljb25zL3NsaWRlci5wbmciIHJlbW92YWJsZT0iZmFsc2UiIGF1dG8tY3JlYXRlLWJpbmRpbmc9InRydWUiIGNhbi1hdHRhY2gtbGFiZWw9ImZhbHNlIj4KKyAgICAgICAgPGRlZmF1bHQtY29uc3RyYWludHMgdnNpemUtcG9saWN5PSIwIiBoc2l6ZS1wb2xpY3k9IjYiIGFuY2hvcj0iOCIgZmlsbD0iMSIgLz4KKyAgICAgIDwvaXRlbT4KKyAgICAgIDxpdGVtIGNsYXNzPSJqYXZheC5zd2luZy5KU2VwYXJhdG9yIiBpY29uPSIvY29tL2ludGVsbGlqL3VpRGVzaWduZXIvaWNvbnMvc2VwYXJhdG9yLnBuZyIgcmVtb3ZhYmxlPSJmYWxzZSIgYXV0by1jcmVhdGUtYmluZGluZz0iZmFsc2UiIGNhbi1hdHRhY2gtbGFiZWw9ImZhbHNlIj4KKyAgICAgICAgPGRlZmF1bHQtY29uc3RyYWludHMgdnNpemUtcG9saWN5PSI2IiBoc2l6ZS1wb2xpY3k9IjYiIGFuY2hvcj0iMCIgZmlsbD0iMyIgLz4KKyAgICAgIDwvaXRlbT4KKyAgICAgIDxpdGVtIGNsYXNzPSJqYXZheC5zd2luZy5KUHJvZ3Jlc3NCYXIiIGljb249Ii9jb20vaW50ZWxsaWovdWlEZXNpZ25lci9pY29ucy9wcm9ncmVzc2Jhci5wbmciIHJlbW92YWJsZT0iZmFsc2UiIGF1dG8tY3JlYXRlLWJpbmRpbmc9InRydWUiIGNhbi1hdHRhY2gtbGFiZWw9ImZhbHNlIj4KKyAgICAgICAgPGRlZmF1bHQtY29uc3RyYWludHMgdnNpemUtcG9saWN5PSIwIiBoc2l6ZS1wb2xpY3k9IjYiIGFuY2hvcj0iMCIgZmlsbD0iMSIgLz4KKyAgICAgIDwvaXRlbT4KKyAgICAgIDxpdGVtIGNsYXNzPSJqYXZheC5zd2luZy5KVG9vbEJhciIgaWNvbj0iL2NvbS9pbnRlbGxpai91aURlc2lnbmVyL2ljb25zL3Rvb2xiYXIucG5nIiByZW1vdmFibGU9ImZhbHNlIiBhdXRvLWNyZWF0ZS1iaW5kaW5nPSJmYWxzZSIgY2FuLWF0dGFjaC1sYWJlbD0iZmFsc2UiPgorICAgICAgICA8ZGVmYXVsdC1jb25zdHJhaW50cyB2c2l6ZS1wb2xpY3k9IjAiIGhzaXplLXBvbGljeT0iNiIgYW5jaG9yPSIwIiBmaWxsPSIxIj4KKyAgICAgICAgICA8cHJlZmVycmVkLXNpemUgd2lkdGg9Ii0xIiBoZWlnaHQ9IjIwIiAvPgorICAgICAgICA8L2RlZmF1bHQtY29uc3RyYWludHM+CisgICAgICA8L2l0ZW0+CisgICAgICA8aXRlbSBjbGFzcz0iamF2YXguc3dpbmcuSlRvb2xCYXIkU2VwYXJhdG9yIiBpY29uPSIvY29tL2ludGVsbGlqL3VpRGVzaWduZXIvaWNvbnMvdG9vbGJhclNlcGFyYXRvci5wbmciIHJlbW92YWJsZT0iZmFsc2UiIGF1dG8tY3JlYXRlLWJpbmRpbmc9ImZhbHNlIiBjYW4tYXR0YWNoLWxhYmVsPSJmYWxzZSI+CisgICAgICAgIDxkZWZhdWx0LWNvbnN0cmFpbnRzIHZzaXplLXBvbGljeT0iMCIgaHNpemUtcG9saWN5PSIwIiBhbmNob3I9IjAiIGZpbGw9IjEiIC8+CisgICAgICA8L2l0ZW0+CisgICAgICA8aXRlbSBjbGFzcz0iamF2YXguc3dpbmcuSlNjcm9sbEJhciIgaWNvbj0iL2NvbS9pbnRlbGxpai91aURlc2lnbmVyL2ljb25zL3Njcm9sbGJhci5wbmciIHJlbW92YWJsZT0iZmFsc2UiIGF1dG8tY3JlYXRlLWJpbmRpbmc9InRydWUiIGNhbi1hdHRhY2gtbGFiZWw9ImZhbHNlIj4KKyAgICAgICAgPGRlZmF1bHQtY29uc3RyYWludHMgdnNpemUtcG9saWN5PSI2IiBoc2l6ZS1wb2xpY3k9IjAiIGFuY2hvcj0iMCIgZmlsbD0iMiIgLz4KKyAgICAgIDwvaXRlbT4KKyAgICA8L2dyb3VwPgorICA8L2NvbXBvbmVudD4KKyAgPGNvbXBvbmVudCBuYW1lPSJQcm9qZWN0TW9kdWxlTWFuYWdlciI+CisgICAgPG1vZHVsZXM+CisgICAgICA8bW9kdWxlIGZpbGV1cmw9ImZpbGU6Ly8kUFJPSkVDVF9ESVIkL3Rlc3QxL3Rlc3QxLmltbCIgZmlsZXBhdGg9IiRQUk9KRUNUX0RJUiQvdGVzdDEvdGVzdDEuaW1sIiAvPgorICAgICAgPG1vZHVsZSBmaWxldXJsPSJmaWxlOi8vJFBST0pFQ1RfRElSJC90ZXN0Mi90ZXN0Mi5pbWwiIGZpbGVwYXRoPSIkUFJPSkVDVF9ESVIkL3Rlc3QyL3Rlc3QyLmltbCIgLz4KKyAgICAgIDxtb2R1bGUgZmlsZXVybD0iZmlsZTovLyRQUk9KRUNUX0RJUiQvdGVzdDMvdGVzdDMuaW1sIiBmaWxlcGF0aD0iJFBST0pFQ1RfRElSJC90ZXN0My90ZXN0My5pbWwiIC8+CisgICAgPC9tb2R1bGVzPgorICA8L2NvbXBvbmVudD4KKyAgPGNvbXBvbmVudCBuYW1lPSJQcm9qZWN0Um9vdE1hbmFnZXIiIHZlcnNpb249IjIiIGFzc2VydC1rZXl3b3JkPSJ0cnVlIiBqZGstMTU9InRydWUiIHByb2plY3QtamRrLW5hbWU9IjEuNSIgcHJvamVjdC1qZGstdHlwZT0iSmF2YVNESyI+CisgICAgPG91dHB1dCB1cmw9ImZpbGU6Ly8kUFJPSkVDVF9ESVIkL2NsYXNzZXMiIC8+CisgIDwvY29tcG9uZW50PgorICA8Y29tcG9uZW50IG5hbWU9IlByb2plY3RSdW5Db25maWd1cmF0aW9uTWFuYWdlciIgLz4KKyAgPGNvbXBvbmVudCBuYW1lPSJSbWljU2V0dGluZ3MiPgorICAgIDxvcHRpb24gbmFtZT0iSVNfRUFOQUJMRUQiIHZhbHVlPSJmYWxzZSIgLz4KKyAgICA8b3B0aW9uIG5hbWU9IkRFQlVHR0lOR19JTkZPIiB2YWx1ZT0idHJ1ZSIgLz4KKyAgICA8b3B0aW9uIG5hbWU9IkdFTkVSQVRFX05PX1dBUk5JTkdTIiB2YWx1ZT0iZmFsc2UiIC8+CisgICAgPG9wdGlvbiBuYW1lPSJHRU5FUkFURV9JSU9QX1NUVUJTIiB2YWx1ZT0iZmFsc2UiIC8+CisgICAgPG9wdGlvbiBuYW1lPSJBRERJVElPTkFMX09QVElPTlNfU1RSSU5HIiB2YWx1ZT0iIiAvPgorICA8L2NvbXBvbmVudD4KKyAgPGNvbXBvbmVudCBuYW1lPSJTdGFydGVhbVZjc0FkYXB0ZXIiIC8+CisgIDxjb21wb25lbnQgbmFtZT0iVnNzVmNzIiAvPgorICA8Y29tcG9uZW50IG5hbWU9ImxpYnJhcnlUYWJsZSIgLz4KKyAgPGNvbXBvbmVudCBuYW1lPSJ1aWRlc2lnbmVyLWNvbmZpZ3VyYXRpb24iPgorICAgIDxvcHRpb24gbmFtZT0iSU5TVFJVTUVOVF9DTEFTU0VTIiB2YWx1ZT0idHJ1ZSIgLz4KKyAgICA8b3B0aW9uIG5hbWU9IkNPUFlfRk9STVNfUlVOVElNRV9UT19PVVRQVVQiIHZhbHVlPSJ0cnVlIiAvPgorICAgIDxvcHRpb24gbmFtZT0iREVGQVVMVF9MQVlPVVRfTUFOQUdFUiIgdmFsdWU9IkdyaWRMYXlvdXRNYW5hZ2VyIiAvPgorICA8L2NvbXBvbmVudD4KKyAgPFVzZWRQYXRoTWFjcm9zIC8+Cis8L3Byb2plY3Q+CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9uYXZpZ2F0aW9uL2FsZXhQcm9qZWN0L3Rlc3QxL3NyYy9jb20vdGVzdC9UZXN0SS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L25hdmlnYXRpb24vYWxleFByb2plY3QvdGVzdDEvc3JjL2NvbS90ZXN0L1Rlc3RJLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTFiNjg1NwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9uYXZpZ2F0aW9uL2FsZXhQcm9qZWN0L3Rlc3QxL3NyYy9jb20vdGVzdC9UZXN0SS5qYXZhCkBAIC0wLDAgKzEsMTIgQEAKK3BhY2thZ2UgY29tLnRlc3Q7CisKKy8qKgorICogQ3JlYXRlZCBieSBJbnRlbGxpSiBJREVBLgorICogVXNlcjogY2RyCisgKiBEYXRlOiBBdWcgMTQsIDIwMDYKKyAqIFRpbWU6IDM6MzU6MTggUE0KKyAqIFRvIGNoYW5nZSB0aGlzIHRlbXBsYXRlIHVzZSBGaWxlIHwgU2V0dGluZ3MgfCBGaWxlIFRlbXBsYXRlcy4KKyAqLworcHVibGljIGludGVyZmFjZSBUZXN0SSB7Ly9qampramgga2xqaCBsaworICAgIHZvaWQgdGVzdCgvKiAqLyk7Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvbmF2aWdhdGlvbi9hbGV4UHJvamVjdC90ZXN0MS9zcmMvY29tL3Rlc3QvVGVzdElJbXBsMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L25hdmlnYXRpb24vYWxleFByb2plY3QvdGVzdDEvc3JjL2NvbS90ZXN0L1Rlc3RJSW1wbDEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMDZiMTYzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L25hdmlnYXRpb24vYWxleFByb2plY3QvdGVzdDEvc3JjL2NvbS90ZXN0L1Rlc3RJSW1wbDEuamF2YQpAQCAtMCwwICsxLDE0IEBACitwYWNrYWdlIGNvbS50ZXN0OworCisvKioKKyAqIENyZWF0ZWQgYnkgSW50ZWxsaUogSURFQS4KKyAqIFVzZXI6IGNkcgorICogRGF0ZTogQXVnIDE0LCAyMDA2CisgKiBUaW1lOiAzOjM1OjUyIFBNCisgKiBUbyBjaGFuZ2UgdGhpcyB0ZW1wbGF0ZSB1c2UgRmlsZSB8IFNldHRpbmdzIHwgRmlsZSBUZW1wbGF0ZXMuCisgKi8KK3B1YmxpYyBjbGFzcyBUZXN0SUltcGwxIGltcGxlbWVudHMgVGVzdEkgeworICAgIHB1YmxpYyB2b2lkIHRlc3QoKSB7CisgICAgICAgIC8vVG8gY2hhbmdlIGJvZHkgb2YgaW1wbGVtZW50ZWQgbWV0aG9kcyB1c2UgRmlsZSB8IFNldHRpbmdzIHwgRmlsZSBUZW1wbGF0ZXMuCisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L25hdmlnYXRpb24vYWxleFByb2plY3QvdGVzdDEvc3JjL2NvbS90ZXN0L1Rlc3RJSW1wbDIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9uYXZpZ2F0aW9uL2FsZXhQcm9qZWN0L3Rlc3QxL3NyYy9jb20vdGVzdC9UZXN0SUltcGwyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmQyMjFjOQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9uYXZpZ2F0aW9uL2FsZXhQcm9qZWN0L3Rlc3QxL3NyYy9jb20vdGVzdC9UZXN0SUltcGwyLmphdmEKQEAgLTAsMCArMSwxNCBAQAorcGFja2FnZSBjb20udGVzdDsKKworLyoqCisgKiBDcmVhdGVkIGJ5IEludGVsbGlKIElERUEuCisgKiBVc2VyOiBjZHIKKyAqIERhdGU6IEF1ZyAxNCwgMjAwNgorICogVGltZTogMzozNjowMyBQTQorICogVG8gY2hhbmdlIHRoaXMgdGVtcGxhdGUgdXNlIEZpbGUgfCBTZXR0aW5ncyB8IEZpbGUgVGVtcGxhdGVzLgorICovCitwdWJsaWMgY2xhc3MgVGVzdElJbXBsMiBpbXBsZW1lbnRzIFRlc3RJIHsKKyAgICBwdWJsaWMgdm9pZCB0ZXN0KCkgeworICAgICAgICAvL1RvIGNoYW5nZSBib2R5IG9mIGltcGxlbWVudGVkIG1ldGhvZHMgdXNlIEZpbGUgfCBTZXR0aW5ncyB8IEZpbGUgVGVtcGxhdGVzLgorICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9uYXZpZ2F0aW9uL2FsZXhQcm9qZWN0L3Rlc3QxL3Rlc3QxLmltbCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9uYXZpZ2F0aW9uL2FsZXhQcm9qZWN0L3Rlc3QxL3Rlc3QxLmltbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45YzNhMGE2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L25hdmlnYXRpb24vYWxleFByb2plY3QvdGVzdDEvdGVzdDEuaW1sCkBAIC0wLDAgKzEsMTQgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8bW9kdWxlIHZlcnNpb249IjQiIHJlbGF0aXZlUGF0aHM9InRydWUiIHR5cGU9IkpBVkFfTU9EVUxFIj4KKyAgPGNvbXBvbmVudCBuYW1lPSJNb2R1bGVSb290TWFuYWdlciIgLz4KKyAgPGNvbXBvbmVudCBuYW1lPSJOZXdNb2R1bGVSb290TWFuYWdlciIgaW5oZXJpdC1jb21waWxlci1vdXRwdXQ9InRydWUiPgorICAgIDxleGNsdWRlLW91dHB1dCAvPgorICAgIDxjb250ZW50IHVybD0iZmlsZTovLyRNT0RVTEVfRElSJCI+CisgICAgICA8c291cmNlRm9sZGVyIHVybD0iZmlsZTovLyRNT0RVTEVfRElSJC9zcmMiIGlzVGVzdFNvdXJjZT0iZmFsc2UiIC8+CisgICAgPC9jb250ZW50PgorICAgIDxvcmRlckVudHJ5IHR5cGU9ImluaGVyaXRlZEpkayIgLz4KKyAgICA8b3JkZXJFbnRyeSB0eXBlPSJzb3VyY2VGb2xkZXIiIGZvclRlc3RzPSJmYWxzZSIgLz4KKyAgICA8b3JkZXJFbnRyeVByb3BlcnRpZXMgLz4KKyAgPC9jb21wb25lbnQ+Cis8L21vZHVsZT4KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L25hdmlnYXRpb24vYWxleFByb2plY3QvdGVzdDIvc3JjL2NvbS90ZXN0L1Rlc3RJLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvbmF2aWdhdGlvbi9hbGV4UHJvamVjdC90ZXN0Mi9zcmMvY29tL3Rlc3QvVGVzdEkuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43YjIyYjgyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L25hdmlnYXRpb24vYWxleFByb2plY3QvdGVzdDIvc3JjL2NvbS90ZXN0L1Rlc3RJLmphdmEKQEAgLTAsMCArMSwxMSBAQAorcGFja2FnZSBjb20udGVzdDsKKworLyoqCisgKiBDcmVhdGVkIGJ5IEludGVsbGlKIElERUEuCisgKiBVc2VyOiBjZHIKKyAqIERhdGU6IEF1ZyAxNCwgMjAwNgorICogVGltZTogMzozNToxMSBQTQorICogVG8gY2hhbmdlIHRoaXMgdGVtcGxhdGUgdXNlIEZpbGUgfCBTZXR0aW5ncyB8IEZpbGUgVGVtcGxhdGVzLgorICovCitwdWJsaWMgaW50ZXJmYWNlIFRlc3RJIHsKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9uYXZpZ2F0aW9uL2FsZXhQcm9qZWN0L3Rlc3QyL3NyYy9jb20vdGVzdC9UZXN0SUltcGwxLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvbmF2aWdhdGlvbi9hbGV4UHJvamVjdC90ZXN0Mi9zcmMvY29tL3Rlc3QvVGVzdElJbXBsMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY4NjE3ZmMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvbmF2aWdhdGlvbi9hbGV4UHJvamVjdC90ZXN0Mi9zcmMvY29tL3Rlc3QvVGVzdElJbXBsMS5qYXZhCkBAIC0wLDAgKzEsMTEgQEAKK3BhY2thZ2UgY29tLnRlc3Q7CisKKy8qKgorICogQ3JlYXRlZCBieSBJbnRlbGxpSiBJREVBLgorICogVXNlcjogY2RyCisgKiBEYXRlOiBBdWcgMTQsIDIwMDYKKyAqIFRpbWU6IDM6MzY6MjIgUE0KKyAqIFRvIGNoYW5nZSB0aGlzIHRlbXBsYXRlIHVzZSBGaWxlIHwgU2V0dGluZ3MgfCBGaWxlIFRlbXBsYXRlcy4KKyAqLworcHVibGljIGNsYXNzIFRlc3RJSW1wbDEgaW1wbGVtZW50cyBUZXN0SSB7Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvbmF2aWdhdGlvbi9hbGV4UHJvamVjdC90ZXN0Mi9zcmMvY29tL3Rlc3QvVGVzdElJbXBsMy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L25hdmlnYXRpb24vYWxleFByb2plY3QvdGVzdDIvc3JjL2NvbS90ZXN0L1Rlc3RJSW1wbDMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43YWU3NmM4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L25hdmlnYXRpb24vYWxleFByb2plY3QvdGVzdDIvc3JjL2NvbS90ZXN0L1Rlc3RJSW1wbDMuamF2YQpAQCAtMCwwICsxLDExIEBACitwYWNrYWdlIGNvbS50ZXN0OworCisvKioKKyAqIENyZWF0ZWQgYnkgSW50ZWxsaUogSURFQS4KKyAqIFVzZXI6IGNkcgorICogRGF0ZTogQXVnIDE0LCAyMDA2CisgKiBUaW1lOiAzOjM2OjI4IFBNCisgKiBUbyBjaGFuZ2UgdGhpcyB0ZW1wbGF0ZSB1c2UgRmlsZSB8IFNldHRpbmdzIHwgRmlsZSBUZW1wbGF0ZXMuCisgKi8KK3B1YmxpYyBjbGFzcyBUZXN0SUltcGwzIGltcGxlbWVudHMgVGVzdEkgeworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L25hdmlnYXRpb24vYWxleFByb2plY3QvdGVzdDIvdGVzdDIuaW1sIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L25hdmlnYXRpb24vYWxleFByb2plY3QvdGVzdDIvdGVzdDIuaW1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjljM2EwYTYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvbmF2aWdhdGlvbi9hbGV4UHJvamVjdC90ZXN0Mi90ZXN0Mi5pbWwKQEAgLTAsMCArMSwxNCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxtb2R1bGUgdmVyc2lvbj0iNCIgcmVsYXRpdmVQYXRocz0idHJ1ZSIgdHlwZT0iSkFWQV9NT0RVTEUiPgorICA8Y29tcG9uZW50IG5hbWU9Ik1vZHVsZVJvb3RNYW5hZ2VyIiAvPgorICA8Y29tcG9uZW50IG5hbWU9Ik5ld01vZHVsZVJvb3RNYW5hZ2VyIiBpbmhlcml0LWNvbXBpbGVyLW91dHB1dD0idHJ1ZSI+CisgICAgPGV4Y2x1ZGUtb3V0cHV0IC8+CisgICAgPGNvbnRlbnQgdXJsPSJmaWxlOi8vJE1PRFVMRV9ESVIkIj4KKyAgICAgIDxzb3VyY2VGb2xkZXIgdXJsPSJmaWxlOi8vJE1PRFVMRV9ESVIkL3NyYyIgaXNUZXN0U291cmNlPSJmYWxzZSIgLz4KKyAgICA8L2NvbnRlbnQ+CisgICAgPG9yZGVyRW50cnkgdHlwZT0iaW5oZXJpdGVkSmRrIiAvPgorICAgIDxvcmRlckVudHJ5IHR5cGU9InNvdXJjZUZvbGRlciIgZm9yVGVzdHM9ImZhbHNlIiAvPgorICAgIDxvcmRlckVudHJ5UHJvcGVydGllcyAvPgorICA8L2NvbXBvbmVudD4KKzwvbW9kdWxlPgorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvbmF2aWdhdGlvbi9hbGV4UHJvamVjdC90ZXN0My9zcmMvY29tL3Rlc3QvVGVzdEkuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9uYXZpZ2F0aW9uL2FsZXhQcm9qZWN0L3Rlc3QzL3NyYy9jb20vdGVzdC9UZXN0SS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYzZDQzZTAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvbmF2aWdhdGlvbi9hbGV4UHJvamVjdC90ZXN0My9zcmMvY29tL3Rlc3QvVGVzdEkuamF2YQpAQCAtMCwwICsxLDExIEBACitwYWNrYWdlIGNvbS50ZXN0OworCisvKioKKyAqIENyZWF0ZWQgYnkgSW50ZWxsaUogSURFQS4KKyAqIFVzZXI6IGNkcgorICogRGF0ZTogQXVnIDE0LCAyMDA2CisgKiBUaW1lOiAzOjM1OjAzIFBNCisgKiBUbyBjaGFuZ2UgdGhpcyB0ZW1wbGF0ZSB1c2UgRmlsZSB8IFNldHRpbmdzIHwgRmlsZSBUZW1wbGF0ZXMuCisgKi8KK3B1YmxpYyBpbnRlcmZhY2UgVGVzdEkgeworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L25hdmlnYXRpb24vYWxleFByb2plY3QvdGVzdDMvc3JjL2NvbS90ZXN0L1Rlc3RJSW1wbDEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9uYXZpZ2F0aW9uL2FsZXhQcm9qZWN0L3Rlc3QzL3NyYy9jb20vdGVzdC9UZXN0SUltcGwxLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTZlNWQ4NAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9uYXZpZ2F0aW9uL2FsZXhQcm9qZWN0L3Rlc3QzL3NyYy9jb20vdGVzdC9UZXN0SUltcGwxLmphdmEKQEAgLTAsMCArMSwxMSBAQAorcGFja2FnZSBjb20udGVzdDsKKworLyoqCisgKiBDcmVhdGVkIGJ5IEludGVsbGlKIElERUEuCisgKiBVc2VyOiBjZHIKKyAqIERhdGU6IEF1ZyAxNCwgMjAwNgorICogVGltZTogMzozNjozNiBQTQorICogVG8gY2hhbmdlIHRoaXMgdGVtcGxhdGUgdXNlIEZpbGUgfCBTZXR0aW5ncyB8IEZpbGUgVGVtcGxhdGVzLgorICovCitwdWJsaWMgY2xhc3MgVGVzdElJbXBsMSBpbXBsZW1lbnRzIFRlc3RJIHsKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9uYXZpZ2F0aW9uL2FsZXhQcm9qZWN0L3Rlc3QzL3Rlc3QzLmltbCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9uYXZpZ2F0aW9uL2FsZXhQcm9qZWN0L3Rlc3QzL3Rlc3QzLmltbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45YzNhMGE2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L25hdmlnYXRpb24vYWxleFByb2plY3QvdGVzdDMvdGVzdDMuaW1sCkBAIC0wLDAgKzEsMTQgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8bW9kdWxlIHZlcnNpb249IjQiIHJlbGF0aXZlUGF0aHM9InRydWUiIHR5cGU9IkpBVkFfTU9EVUxFIj4KKyAgPGNvbXBvbmVudCBuYW1lPSJNb2R1bGVSb290TWFuYWdlciIgLz4KKyAgPGNvbXBvbmVudCBuYW1lPSJOZXdNb2R1bGVSb290TWFuYWdlciIgaW5oZXJpdC1jb21waWxlci1vdXRwdXQ9InRydWUiPgorICAgIDxleGNsdWRlLW91dHB1dCAvPgorICAgIDxjb250ZW50IHVybD0iZmlsZTovLyRNT0RVTEVfRElSJCI+CisgICAgICA8c291cmNlRm9sZGVyIHVybD0iZmlsZTovLyRNT0RVTEVfRElSJC9zcmMiIGlzVGVzdFNvdXJjZT0iZmFsc2UiIC8+CisgICAgPC9jb250ZW50PgorICAgIDxvcmRlckVudHJ5IHR5cGU9ImluaGVyaXRlZEpkayIgLz4KKyAgICA8b3JkZXJFbnRyeSB0eXBlPSJzb3VyY2VGb2xkZXIiIGZvclRlc3RzPSJmYWxzZSIgLz4KKyAgICA8b3JkZXJFbnRyeVByb3BlcnRpZXMgLz4KKyAgPC9jb21wb25lbnQ+Cis8L21vZHVsZT4KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L251bGxpdHlpbmZlcnJlci9hZnRlckFzc2VydFBhcmFtTm90TnVsbC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L251bGxpdHlpbmZlcnJlci9hZnRlckFzc2VydFBhcmFtTm90TnVsbC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI0NmEwYmUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvbnVsbGl0eWluZmVycmVyL2FmdGVyQXNzZXJ0UGFyYW1Ob3ROdWxsLmphdmEKQEAgLTAsMCArMSwxNCBAQAoraW1wb3J0IG9yZy5qZXRicmFpbnMuYW5ub3RhdGlvbnMuTm90TnVsbDsKKworY2xhc3MgVGVzdCB7CisgIEBOb3ROdWxsCisgIHB1YmxpYyBTdHJpbmcgbm9OdWxsKEBOb3ROdWxsIFN0cmluZyB0ZXh0KSB7CisgICAgYXNzZXJ0IHRleHQgIT0gbnVsbDsKKyAgICByZXR1cm4gIiI7CisgIH0KKworICBwcml2YXRlIHZvaWQgZm9vKCkgeworICAgIEBOb3ROdWxsIFN0cmluZyBzdHIgPSAiIjsKKyAgICBhc3NlcnQgc3RyICE9IG51bGw7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvbnVsbGl0eWluZmVycmVyL2FmdGVyQ29uZGl0aW9uYWxSZXR1cm5Ob3ROdWxsLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvbnVsbGl0eWluZmVycmVyL2FmdGVyQ29uZGl0aW9uYWxSZXR1cm5Ob3ROdWxsLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWE4OWU0NwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9udWxsaXR5aW5mZXJyZXIvYWZ0ZXJDb25kaXRpb25hbFJldHVybk5vdE51bGwuamF2YQpAQCAtMCwwICsxLDkgQEAKK2ltcG9ydCBvcmcuamV0YnJhaW5zLmFubm90YXRpb25zLk5vdE51bGw7CitpbXBvcnQgb3JnLmpldGJyYWlucy5hbm5vdGF0aW9ucy5OdWxsYWJsZTsKKworY2xhc3MgVGVzdCB7CisgICAgQE5vdE51bGwKKyAgICBwdWJsaWMgIFN0cmluZyBub051bGwoIEBOdWxsYWJsZSBTdHJpbmcgdGV4dCkgeworICAgICAgICByZXR1cm4gdGV4dCA9PSBudWxsID8gIiIgOiB0ZXh0OworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvbnVsbGl0eWluZmVycmVyL2FmdGVyRmllbGRzQXNzaWdubWVudC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L251bGxpdHlpbmZlcnJlci9hZnRlckZpZWxkc0Fzc2lnbm1lbnQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MDc0MWFlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L251bGxpdHlpbmZlcnJlci9hZnRlckZpZWxkc0Fzc2lnbm1lbnQuamF2YQpAQCAtMCwwICsxLDU4IEBACitpbXBvcnQgb3JnLmpldGJyYWlucy5hbm5vdGF0aW9ucy4qOworCitjbGFzcyBUZXN0IHsKKyAgQE5vdE51bGwKKyAgU3RyaW5nIG15Rm9vID0gIiI7CisKKyAgQE51bGxhYmxlCisgIFN0cmluZyBteUZvbzEgPSBudWxsOworCisgIEBOb3ROdWxsCisgIFN0cmluZyBteUZvbzIgPSBmb28yKCk7CisgIEBOb3ROdWxsIFN0cmluZyBmb28yKCkgeyByZXR1cm4gIiI7fQorCisgIEBOdWxsYWJsZQorICBTdHJpbmcgbXlGb28zID0gZm9vMygpOworICBATnVsbGFibGUgU3RyaW5nIGZvbzMoKSB7IHJldHVybiBudWxsO30KKworICBTdHJpbmcgbXlGb280OworICB2b2lkIHNldEZvbzQoKSB7CisgICAgbXlGb280ID0gIiI7CisgIH0KKworICBATm90TnVsbAorICBmaW5hbCBTdHJpbmcgbXlGb281OworICBATnVsbGFibGUKKyAgZmluYWwgU3RyaW5nIG15Rm9vNjsKKyAgQE5vdE51bGwKKyAgZmluYWwgU3RyaW5nIG15Rm9vNzsKKyAgQE51bGxhYmxlCisgIGZpbmFsIFN0cmluZyBteUZvbzg7CisgIGZpbmFsIFN0cmluZyBteUZvbzk7CisgIEBOdWxsYWJsZQorICBmaW5hbCBTdHJpbmcgbXlGb28xMDsKKworICBmaW5hbCBTdHJpbmcgbXlGb28xMSA9ICIiOworICBATm90TnVsbAorICBmaW5hbCBTdHJpbmcgbXlGb28xMjsKKyAgQE51bGxhYmxlCisgIGZpbmFsIFN0cmluZyBteUZvbzEzID0gbnVsbDsKKworICAvKioKKyAgICoge0BsaW5rICNteUZvbzZ9CisgICAqLworICBUZXN0KEBOb3ROdWxsIFN0cmluZyBwYXJhbSwgQE51bGxhYmxlIFN0cmluZyBwYXJhbU51bGxhYmxlLCBTdHJpbmcgc2ltcGxlUGFyYW0pIHsKKyAgICBteUZvbzUgPSAiIjsKKyAgICBteUZvbzYgPSBudWxsOworICAgIG15Rm9vNyA9IHBhcmFtOworICAgIG15Rm9vOCA9IHBhcmFtTnVsbGFibGU7CisgICAgbXlGb285ID0gc2ltcGxlUGFyYW07CisgICAgbXlGb28xMCA9IGZvbzEwKGZhbHNlKTsKKyAgICBteUZvbzEyID0gIiI7CisgIH0KKworICBATnVsbGFibGUKKyAgU3RyaW5nIGZvbzEwKGJvb2xlYW4gZmxhZykgeworICAgIHJldHVybiBmbGFnID8gZm9vMigpIDogZm9vMygpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L251bGxpdHlpbmZlcnJlci9hZnRlckZvckVhY2hQYXJhbWV0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9udWxsaXR5aW5mZXJyZXIvYWZ0ZXJGb3JFYWNoUGFyYW1ldGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjg2MzQ2NwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9udWxsaXR5aW5mZXJyZXIvYWZ0ZXJGb3JFYWNoUGFyYW1ldGVyLmphdmEKQEAgLTAsMCArMSwxMCBAQAoraW1wb3J0IG9yZy5qZXRicmFpbnMuYW5ub3RhdGlvbnMuTm90TnVsbDsKKworaW1wb3J0IGphdmEudXRpbC4qOworY2xhc3MgVGVzdCB7CisgICB2b2lkIGZvbyhATm90TnVsbCBMaXN0IHJlcXVlc3RzKXsKKyAgICAgICAgZm9yIChATm90TnVsbCBPYmplY3QgcmVxdWVzdCA6IHJlcXVlc3RzKSB7CisgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKHJlcXVlc3QudG9TdHJpbmcoKSk7CisgICAgICAgIH0KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L251bGxpdHlpbmZlcnJlci9hZnRlck1ldGhvZFJldHVyblZhbHVlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvbnVsbGl0eWluZmVycmVyL2FmdGVyTWV0aG9kUmV0dXJuVmFsdWUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YWUwYjViCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L251bGxpdHlpbmZlcnJlci9hZnRlck1ldGhvZFJldHVyblZhbHVlLmphdmEKQEAgLTAsMCArMSw4NCBAQAoraW1wb3J0IG9yZy5qZXRicmFpbnMuYW5ub3RhdGlvbnMuKjsKKworY2xhc3MgVGVzdCB7CisgIEBOdWxsYWJsZQorICBTdHJpbmcgZm9vMSgpIHsKKyAgICByZXR1cm4gbnVsbDsKKyAgfQorCisgIEBOb3ROdWxsCisgIFN0cmluZyBmb28yKCkgeworICAgIHJldHVybiAiIjsKKyAgfQorCisgIFN0cmluZyBmb28zKFN0cmluZyBzKSB7CisgICAgcmV0dXJuIHM7CisgIH0KKworICBTdHJpbmcgZm9vNChATm90TnVsbCBTdHJpbmcgcykgeworICAgIHJldHVybiBzLnN1YnN0cmluZygwKTsKKyAgfQorCisgIEBOb3ROdWxsCisgIEludGVnZXIgZm9vNShJbnRlZ2VyIGkpIHsKKyAgICByZXR1cm4gaSsrOworICB9CisKKyAgQE5vdE51bGwKKyAgSW50ZWdlciBmb282KEludGVnZXIgaSkgeworICAgIGlmIChpID09IDApIHJldHVybiAxOworICAgIHJldHVybiBpICogZm9vNihpLS0pOworICB9CisKKyAgQE51bGxhYmxlCisgIEludGVnZXIgZm9vNyhib29sZWFuIGZsYWcpIHsKKyAgICByZXR1cm4gZmxhZyA/IG51bGwgOiAxOworICB9CisKKyAgQE51bGxhYmxlCisgIEludGVnZXIgZm9vOChib29sZWFuIGZsYWcpIHsKKyAgICBpZiAoZmxhZykgeworICAgICAgcmV0dXJuIG51bGw7CisgICAgfQorICAgIGVsc2UgeworICAgICAgcmV0dXJuIDE7CisgICAgfQorICB9CisKKyAgQE51bGxhYmxlCisgIFN0cmluZyBiYXI5KCkgeworICAgIHJldHVybiBmb28zKCIiKTsKKyAgfQorCisgIEBOdWxsYWJsZQorICBTdHJpbmcgZm9vOSgpIHsKKyAgICByZXR1cm4gYmFyOSgpOworICB9CisKKworICBATnVsbGFibGUKKyAgU3RyaW5nIGJhcjEwKCkgeworICAgIHJldHVybiBmb28zKCIiKTsKKyAgfQorCisgIEBOb3ROdWxsCisgIFN0cmluZyBiYXIxMDEoKSB7CisgICAgcmV0dXJuIGZvbzMoIiIpOworICB9CisKKyAgQE51bGxhYmxlCisgIFN0cmluZyBmb28xMChib29sZWFuIGZsYWcpIHsKKyAgICByZXR1cm4gZmxhZyA/IGJhcjEwKCkgOiBiYXIxMDEoKTsKKyAgfQorCisgIEBOb3ROdWxsCisgIFN0cmluZyBmb28xMSgpIHsKKyAgICBjbGFzcyBGb297CisgICAgICBATnVsbGFibGUKKyAgICAgIFN0cmluZyBtZXNzKCkgeworICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuICIiOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L251bGxpdHlpbmZlcnJlci9hZnRlclBhcmFtZXRlckNoZWNrZWRGb3JOdWxsLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvbnVsbGl0eWluZmVycmVyL2FmdGVyUGFyYW1ldGVyQ2hlY2tlZEZvck51bGwuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40Y2EyOGQ4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L251bGxpdHlpbmZlcnJlci9hZnRlclBhcmFtZXRlckNoZWNrZWRGb3JOdWxsLmphdmEKQEAgLTAsMCArMSwzNyBAQAoraW1wb3J0IG9yZy5qZXRicmFpbnMuYW5ub3RhdGlvbnMuKjsKKworY2xhc3MgVGVzdCB7CisgIHZvaWQgYmFyKEBOdWxsYWJsZSBTdHJpbmcgc3RyKSB7CisgICAgaWYgKHN0ciA9PSBudWxsKSB7CisgICAgICBmb28oc3RyKTsKKyAgICB9CisgIH0KKworICBTdHJpbmcgZm9vKFN0cmluZyBzdHIpIHsKKyAgICByZXR1cm4gc3RyOworICB9CisKKyAgQE51bGxhYmxlCisgIFN0cmluZyBmb28xKEBOdWxsYWJsZSBTdHJpbmcgc3RyKSB7CisgICAgaWYgKHN0ciA9PSBudWxsKTsKKyAgICByZXR1cm4gKHN0cik7CisgIH0KKworICBATm90TnVsbAorICBTdHJpbmcgZm9vMihATnVsbGFibGUgU3RyaW5nIHN0cikgeworICAgIGlmIChzdHIgPT0gbnVsbCk7CisgICAgcmV0dXJuICgoU3RyaW5nKXN0cik7CisgIH0KKworICBATm90TnVsbAorICBTdHJpbmcgZnJhbShATnVsbGFibGUgU3RyaW5nIHN0ciwgYm9vbGVhbiBiKSB7CisgICAgaWYgKHN0ciAhPSBudWxsKSB7CisgICAgICByZXR1cm4gYiA/IHN0ciA6ICJub3QgbnVsbCBzdHJpbWciOworICAgIH0KKyAgICByZXR1cm4gInN0ciB3YXMgbnVsbCI7CisgIH0KKworCisKKworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9udWxsaXR5aW5mZXJyZXIvYWZ0ZXJQYXJhbWV0ZXJEZXJlZmVyZW5jZWQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9udWxsaXR5aW5mZXJyZXIvYWZ0ZXJQYXJhbWV0ZXJEZXJlZmVyZW5jZWQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MDFmMDIzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L251bGxpdHlpbmZlcnJlci9hZnRlclBhcmFtZXRlckRlcmVmZXJlbmNlZC5qYXZhCkBAIC0wLDAgKzEsMjMgQEAKK2ltcG9ydCBvcmcuamV0YnJhaW5zLmFubm90YXRpb25zLio7CisKK2NsYXNzIFRlc3QgeworICB2b2lkIGZvbyhATm90TnVsbCBTdHJpbmcgcykgeworICAgIHMuc3Vic3RyaW5nKDApOworICB9CisKKyAgLyoqCisgICAqIEBwYXJhbSBzdHIKKyAgICovCisgIHZvaWQgYmFyKEBOb3ROdWxsIFN0cmluZyBzdHIpIHsKKyAgICBpZiAoc3RyLnN1YnN0cmluZygwKSA9PSBudWxsKSB7CisgICAgfQorICB9CisKKyAgLyoqCisgICAqIEBwYXJhbSBzdHIKKyAgICovCisgIHZvaWQgYmFyKEBOb3ROdWxsIFN0cmluZyBzdHIpIHsKKyAgICBpZiAoKHN0cikuc3Vic3RyaW5nKDApID09IG51bGwpIHsKKyAgICB9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvbnVsbGl0eWluZmVycmVyL2FmdGVyUGFyYW1ldGVyUGFzc2VkMk5vdE51bGwuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9udWxsaXR5aW5mZXJyZXIvYWZ0ZXJQYXJhbWV0ZXJQYXNzZWQyTm90TnVsbC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkwMTEzYzIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvbnVsbGl0eWluZmVycmVyL2FmdGVyUGFyYW1ldGVyUGFzc2VkMk5vdE51bGwuamF2YQpAQCAtMCwwICsxLDEwIEBACitpbXBvcnQgb3JnLmpldGJyYWlucy5hbm5vdGF0aW9ucy4qOworCitjbGFzcyBUZXN0IHsKKyAgdm9pZCBmb28oQE5vdE51bGwgU3RyaW5nIHMpIHsKKyAgfQorCisgIHZvaWQgYmFyKEBOb3ROdWxsIFN0cmluZyBzdHIpIHsKKyAgICBmb28oc3RyKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9udWxsaXR5aW5mZXJyZXIvYWZ0ZXJQYXJhbWV0ZXJVc2VkSW5Gb3JlYWNoSXRlcmF0ZWRWYWx1ZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L251bGxpdHlpbmZlcnJlci9hZnRlclBhcmFtZXRlclVzZWRJbkZvcmVhY2hJdGVyYXRlZFZhbHVlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTU0N2MxOAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9udWxsaXR5aW5mZXJyZXIvYWZ0ZXJQYXJhbWV0ZXJVc2VkSW5Gb3JlYWNoSXRlcmF0ZWRWYWx1ZS5qYXZhCkBAIC0wLDAgKzEsOSBAQAoraW1wb3J0IG9yZy5qZXRicmFpbnMuYW5ub3RhdGlvbnMuTm90TnVsbDsKKworaW1wb3J0IGphdmEudXRpbC4qOworY2xhc3MgVGVzdCB7CisgICB2b2lkIGZvbyhATm90TnVsbCBMaXN0IHJlcXVlc3RzKXsKKyAgICAgICAgZm9yIChPYmplY3QgcmVxdWVzdCA6IHJlcXVlc3RzKSB7CisgICAgICAgIH0KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L251bGxpdHlpbmZlcnJlci9hZnRlclRyeUVudW1Td2l0Y2guamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9udWxsaXR5aW5mZXJyZXIvYWZ0ZXJUcnlFbnVtU3dpdGNoLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTE3MjhmZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9udWxsaXR5aW5mZXJyZXIvYWZ0ZXJUcnlFbnVtU3dpdGNoLmphdmEKQEAgLTAsMCArMSwxMyBAQAoraW1wb3J0IG9yZy5qZXRicmFpbnMuYW5ub3RhdGlvbnMuKjsKKworcHVibGljIGNsYXNzIEluZmVyIHsKKyAgICBlbnVtIEUgezsKKyAgICB9CisKKyAgICB2b2lkIHRyeVN3aXRjaEVudW0oQE5vdE51bGwgRSBlKSB7CisgICAgICAgIHN3aXRjaCAoZSkgeworCisgICAgICAgIH0KKyAgICB9CisKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvbnVsbGl0eWluZmVycmVyL2JlZm9yZUFzc2VydFBhcmFtTm90TnVsbC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L251bGxpdHlpbmZlcnJlci9iZWZvcmVBc3NlcnRQYXJhbU5vdE51bGwuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZjRhODljCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L251bGxpdHlpbmZlcnJlci9iZWZvcmVBc3NlcnRQYXJhbU5vdE51bGwuamF2YQpAQCAtMCwwICsxLDExIEBACitjbGFzcyBUZXN0IHsKKyAgcHVibGljIFN0cmluZyBub051bGwoU3RyaW5nIHRleHQpIHsKKyAgICBhc3NlcnQgdGV4dCAhPSBudWxsOworICAgIHJldHVybiAiIjsKKyAgfQorCisgIHByaXZhdGUgdm9pZCBmb28oKSB7CisgICAgU3RyaW5nIHN0ciA9ICIiOworICAgIGFzc2VydCBzdHIgIT0gbnVsbDsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9udWxsaXR5aW5mZXJyZXIvYmVmb3JlQ29uZGl0aW9uYWxSZXR1cm5Ob3ROdWxsLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvbnVsbGl0eWluZmVycmVyL2JlZm9yZUNvbmRpdGlvbmFsUmV0dXJuTm90TnVsbC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFlNWYxYTgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvbnVsbGl0eWluZmVycmVyL2JlZm9yZUNvbmRpdGlvbmFsUmV0dXJuTm90TnVsbC5qYXZhCkBAIC0wLDAgKzEsNSBAQAorY2xhc3MgVGVzdCB7CisgICAgcHVibGljICBTdHJpbmcgbm9OdWxsKCBTdHJpbmcgdGV4dCkgeworICAgICAgICByZXR1cm4gdGV4dCA9PSBudWxsID8gIiIgOiB0ZXh0OworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvbnVsbGl0eWluZmVycmVyL2JlZm9yZUZpZWxkc0Fzc2lnbm1lbnQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9udWxsaXR5aW5mZXJyZXIvYmVmb3JlRmllbGRzQXNzaWdubWVudC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE3NzcyYWYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvbnVsbGl0eWluZmVycmVyL2JlZm9yZUZpZWxkc0Fzc2lnbm1lbnQuamF2YQpAQCAtMCwwICsxLDQ2IEBACitpbXBvcnQgb3JnLmpldGJyYWlucy5hbm5vdGF0aW9ucy4qOworCitjbGFzcyBUZXN0IHsKKyAgU3RyaW5nIG15Rm9vID0gIiI7CisKKyAgU3RyaW5nIG15Rm9vMSA9IG51bGw7CisKKyAgU3RyaW5nIG15Rm9vMiA9IGZvbzIoKTsKKyAgQE5vdE51bGwgU3RyaW5nIGZvbzIoKSB7IHJldHVybiAiIjt9CisKKyAgU3RyaW5nIG15Rm9vMyA9IGZvbzMoKTsKKyAgQE51bGxhYmxlIFN0cmluZyBmb28zKCkgeyByZXR1cm4gbnVsbDt9CisKKyAgU3RyaW5nIG15Rm9vNDsKKyAgdm9pZCBzZXRGb280KCkgeworICAgIG15Rm9vNCA9ICIiOworICB9CisKKyAgZmluYWwgU3RyaW5nIG15Rm9vNTsKKyAgZmluYWwgU3RyaW5nIG15Rm9vNjsKKyAgZmluYWwgU3RyaW5nIG15Rm9vNzsKKyAgZmluYWwgU3RyaW5nIG15Rm9vODsKKyAgZmluYWwgU3RyaW5nIG15Rm9vOTsKKyAgZmluYWwgU3RyaW5nIG15Rm9vMTA7CisKKyAgZmluYWwgU3RyaW5nIG15Rm9vMTEgPSAiIjsKKyAgZmluYWwgU3RyaW5nIG15Rm9vMTI7CisgIGZpbmFsIFN0cmluZyBteUZvbzEzID0gbnVsbDsKKworICAvKioKKyAgICoge0BsaW5rICNteUZvbzZ9CisgICAqLworICBUZXN0KEBOb3ROdWxsIFN0cmluZyBwYXJhbSwgQE51bGxhYmxlIFN0cmluZyBwYXJhbU51bGxhYmxlLCBTdHJpbmcgc2ltcGxlUGFyYW0pIHsKKyAgICBteUZvbzUgPSAiIjsKKyAgICBteUZvbzYgPSBudWxsOworICAgIG15Rm9vNyA9IHBhcmFtOworICAgIG15Rm9vOCA9IHBhcmFtTnVsbGFibGU7CisgICAgbXlGb285ID0gc2ltcGxlUGFyYW07CisgICAgbXlGb28xMCA9IGZvbzEwKGZhbHNlKTsKKyAgICBteUZvbzEyID0gIiI7CisgIH0KKworICBTdHJpbmcgZm9vMTAoYm9vbGVhbiBmbGFnKSB7CisgICAgcmV0dXJuIGZsYWcgPyBmb28yKCkgOiBmb28zKCk7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvbnVsbGl0eWluZmVycmVyL2JlZm9yZUZvckVhY2hQYXJhbWV0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9udWxsaXR5aW5mZXJyZXIvYmVmb3JlRm9yRWFjaFBhcmFtZXRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc3NzJiYjgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvbnVsbGl0eWluZmVycmVyL2JlZm9yZUZvckVhY2hQYXJhbWV0ZXIuamF2YQpAQCAtMCwwICsxLDggQEAKK2ltcG9ydCBqYXZhLnV0aWwuKjsKK2NsYXNzIFRlc3QgeworICAgdm9pZCBmb28oTGlzdCByZXF1ZXN0cyl7CisgICAgICAgIGZvciAoT2JqZWN0IHJlcXVlc3QgOiByZXF1ZXN0cykgeworICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihyZXF1ZXN0LnRvU3RyaW5nKCkpOworICAgICAgICB9CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9udWxsaXR5aW5mZXJyZXIvYmVmb3JlTWV0aG9kUmV0dXJuVmFsdWUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9udWxsaXR5aW5mZXJyZXIvYmVmb3JlTWV0aG9kUmV0dXJuVmFsdWUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MDVlMzFjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L251bGxpdHlpbmZlcnJlci9iZWZvcmVNZXRob2RSZXR1cm5WYWx1ZS5qYXZhCkBAIC0wLDAgKzEsNzQgQEAKK2ltcG9ydCBvcmcuamV0YnJhaW5zLmFubm90YXRpb25zLio7CisKK2NsYXNzIFRlc3QgeworICBTdHJpbmcgZm9vMSgpIHsKKyAgICByZXR1cm4gbnVsbDsKKyAgfQorCisgIFN0cmluZyBmb28yKCkgeworICAgIHJldHVybiAiIjsKKyAgfQorCisgIFN0cmluZyBmb28zKFN0cmluZyBzKSB7CisgICAgcmV0dXJuIHM7CisgIH0KKworICBTdHJpbmcgZm9vNChTdHJpbmcgcykgeworICAgIHJldHVybiBzLnN1YnN0cmluZygwKTsKKyAgfQorCisgIEludGVnZXIgZm9vNShJbnRlZ2VyIGkpIHsKKyAgICByZXR1cm4gaSsrOworICB9CisKKyAgSW50ZWdlciBmb282KEludGVnZXIgaSkgeworICAgIGlmIChpID09IDApIHJldHVybiAxOworICAgIHJldHVybiBpICogZm9vNihpLS0pOworICB9CisKKyAgSW50ZWdlciBmb283KGJvb2xlYW4gZmxhZykgeworICAgIHJldHVybiBmbGFnID8gbnVsbCA6IDE7CisgIH0KKworICBJbnRlZ2VyIGZvbzgoYm9vbGVhbiBmbGFnKSB7CisgICAgaWYgKGZsYWcpIHsKKyAgICAgIHJldHVybiBudWxsOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHJldHVybiAxOworICAgIH0KKyAgfQorCisgIEBOdWxsYWJsZQorICBTdHJpbmcgYmFyOSgpIHsKKyAgICByZXR1cm4gZm9vMygiIik7CisgIH0KKworICBTdHJpbmcgZm9vOSgpIHsKKyAgICByZXR1cm4gYmFyOSgpOworICB9CisKKworICBATnVsbGFibGUKKyAgU3RyaW5nIGJhcjEwKCkgeworICAgIHJldHVybiBmb28zKCIiKTsKKyAgfQorCisgIEBOb3ROdWxsCisgIFN0cmluZyBiYXIxMDEoKSB7CisgICAgcmV0dXJuIGZvbzMoIiIpOworICB9CisKKyAgU3RyaW5nIGZvbzEwKGJvb2xlYW4gZmxhZykgeworICAgIHJldHVybiBmbGFnID8gYmFyMTAoKSA6IGJhcjEwMSgpOworICB9CisKKyAgU3RyaW5nIGZvbzExKCkgeworICAgIGNsYXNzIEZvb3sKKyAgICAgIFN0cmluZyBtZXNzKCkgeworICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuICIiOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L251bGxpdHlpbmZlcnJlci9iZWZvcmVQYXJhbWV0ZXJDaGVja2VkRm9ySW5zdGFuY2VvZi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L251bGxpdHlpbmZlcnJlci9iZWZvcmVQYXJhbWV0ZXJDaGVja2VkRm9ySW5zdGFuY2VvZi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRmNzAzYTEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvbnVsbGl0eWluZmVycmVyL2JlZm9yZVBhcmFtZXRlckNoZWNrZWRGb3JJbnN0YW5jZW9mLmphdmEKQEAgLTAsMCArMSwxMiBAQAorcHVibGljIGNsYXNzIEMgeworICBwcml2YXRlIGludCB4OworCisgIHB1YmxpYyBib29sZWFuIGVxdWFscyhPYmplY3Qgb2JqZWN0KSB7CisgICAgaWYgKG9iamVjdCBpbnN0YW5jZW9mIEMpIHsKKyAgICAgIGlmICgoKEMpb2JqZWN0KS54ID09IHgpIHsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICB9CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9udWxsaXR5aW5mZXJyZXIvYmVmb3JlUGFyYW1ldGVyQ2hlY2tlZEZvck51bGwuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9udWxsaXR5aW5mZXJyZXIvYmVmb3JlUGFyYW1ldGVyQ2hlY2tlZEZvck51bGwuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYjRiYjBiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L251bGxpdHlpbmZlcnJlci9iZWZvcmVQYXJhbWV0ZXJDaGVja2VkRm9yTnVsbC5qYXZhCkBAIC0wLDAgKzEsMzQgQEAKK2ltcG9ydCBvcmcuamV0YnJhaW5zLmFubm90YXRpb25zLio7CisKK2NsYXNzIFRlc3QgeworICB2b2lkIGJhcihTdHJpbmcgc3RyKSB7CisgICAgaWYgKHN0ciA9PSBudWxsKSB7CisgICAgICBmb28oc3RyKTsKKyAgICB9CisgIH0KKworICBTdHJpbmcgZm9vKFN0cmluZyBzdHIpIHsKKyAgICByZXR1cm4gc3RyOworICB9CisKKyAgU3RyaW5nIGZvbzEoU3RyaW5nIHN0cikgeworICAgIGlmIChzdHIgPT0gbnVsbCk7CisgICAgcmV0dXJuIChzdHIpOworICB9CisKKyAgU3RyaW5nIGZvbzIoU3RyaW5nIHN0cikgeworICAgIGlmIChzdHIgPT0gbnVsbCk7CisgICAgcmV0dXJuICgoU3RyaW5nKXN0cik7CisgIH0KKworICBTdHJpbmcgZnJhbShTdHJpbmcgc3RyLCBib29sZWFuIGIpIHsKKyAgICBpZiAoc3RyICE9IG51bGwpIHsKKyAgICAgIHJldHVybiBiID8gc3RyIDogIm5vdCBudWxsIHN0cmltZyI7CisgICAgfQorICAgIHJldHVybiAic3RyIHdhcyBudWxsIjsKKyAgfQorCisKKworCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L251bGxpdHlpbmZlcnJlci9iZWZvcmVQYXJhbWV0ZXJEZXJlZmVyZW5jZWQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9udWxsaXR5aW5mZXJyZXIvYmVmb3JlUGFyYW1ldGVyRGVyZWZlcmVuY2VkLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTFiYTdjYQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9udWxsaXR5aW5mZXJyZXIvYmVmb3JlUGFyYW1ldGVyRGVyZWZlcmVuY2VkLmphdmEKQEAgLTAsMCArMSwyMyBAQAoraW1wb3J0IG9yZy5qZXRicmFpbnMuYW5ub3RhdGlvbnMuKjsKKworY2xhc3MgVGVzdCB7CisgIHZvaWQgZm9vKFN0cmluZyBzKSB7CisgICAgcy5zdWJzdHJpbmcoMCk7CisgIH0KKworICAvKioKKyAgICogQHBhcmFtIHN0cgorICAgKi8KKyAgdm9pZCBiYXIoU3RyaW5nIHN0cikgeworICAgIGlmIChzdHIuc3Vic3RyaW5nKDApID09IG51bGwpIHsKKyAgICB9CisgIH0KKworICAvKioKKyAgICogQHBhcmFtIHN0cgorICAgKi8KKyAgdm9pZCBiYXIoU3RyaW5nIHN0cikgeworICAgIGlmICgoc3RyKS5zdWJzdHJpbmcoMCkgPT0gbnVsbCkgeworICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9udWxsaXR5aW5mZXJyZXIvYmVmb3JlUGFyYW1ldGVyUGFzc2VkMk5vdE51bGwuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9udWxsaXR5aW5mZXJyZXIvYmVmb3JlUGFyYW1ldGVyUGFzc2VkMk5vdE51bGwuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMDQ2YzYxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L251bGxpdHlpbmZlcnJlci9iZWZvcmVQYXJhbWV0ZXJQYXNzZWQyTm90TnVsbC5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKK2ltcG9ydCBvcmcuamV0YnJhaW5zLmFubm90YXRpb25zLio7CisKK2NsYXNzIFRlc3QgeworICB2b2lkIGZvbyhATm90TnVsbCBTdHJpbmcgcykgeworICB9CisKKyAgdm9pZCBiYXIoU3RyaW5nIHN0cikgeworICAgIGZvbyhzdHIpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L251bGxpdHlpbmZlcnJlci9iZWZvcmVQYXJhbWV0ZXJVc2VkSW5Gb3JlYWNoSXRlcmF0ZWRWYWx1ZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L251bGxpdHlpbmZlcnJlci9iZWZvcmVQYXJhbWV0ZXJVc2VkSW5Gb3JlYWNoSXRlcmF0ZWRWYWx1ZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE2NmNlNDQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvbnVsbGl0eWluZmVycmVyL2JlZm9yZVBhcmFtZXRlclVzZWRJbkZvcmVhY2hJdGVyYXRlZFZhbHVlLmphdmEKQEAgLTAsMCArMSw3IEBACitpbXBvcnQgamF2YS51dGlsLio7CitjbGFzcyBUZXN0IHsKKyAgIHZvaWQgZm9vKExpc3QgcmVxdWVzdHMpeworICAgICAgICBmb3IgKE9iamVjdCByZXF1ZXN0IDogcmVxdWVzdHMpIHsKKyAgICAgICAgfQorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvbnVsbGl0eWluZmVycmVyL2JlZm9yZVRyeUVudW1Td2l0Y2guamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9udWxsaXR5aW5mZXJyZXIvYmVmb3JlVHJ5RW51bVN3aXRjaC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYwYzcwNDcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvbnVsbGl0eWluZmVycmVyL2JlZm9yZVRyeUVudW1Td2l0Y2guamF2YQpAQCAtMCwwICsxLDEzIEBACitpbXBvcnQgb3JnLmpldGJyYWlucy5hbm5vdGF0aW9ucy4qOworCitwdWJsaWMgY2xhc3MgSW5mZXIgeworICAgIGVudW0gRSB7OworICAgIH0KKworICAgIHZvaWQgdHJ5U3dpdGNoRW51bShFIGUpIHsKKyAgICAgICAgc3dpdGNoIChlKSB7CisKKyAgICAgICAgfQorICAgIH0KKworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9udWxsaXR5aW5mZXJyZXIvbGliL2Fubm90YXRpb25zLmphciBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9udWxsaXR5aW5mZXJyZXIvbGliL2Fubm90YXRpb25zLmphcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NDA0MTkyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L251bGxpdHlpbmZlcnJlci9saWIvYW5ub3RhdGlvbnMuamFyCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9vdmVycmlkZUltcGxlbWVudC9JbXBsZW1lbnRlZENvbnN0cnVjdG9yc0V4Y2x1ZGVkLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvb3ZlcnJpZGVJbXBsZW1lbnQvSW1wbGVtZW50ZWRDb25zdHJ1Y3RvcnNFeGNsdWRlZC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkwNjY5NjUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvb3ZlcnJpZGVJbXBsZW1lbnQvSW1wbGVtZW50ZWRDb25zdHJ1Y3RvcnNFeGNsdWRlZC5qYXZhCkBAIC0wLDAgKzEsOSBAQAorY2xhc3MgQSB7CisgIEEoKSB7IH0KKyAgQShTdHJpbmcgcykgeyB9Cit9CisKK2NsYXNzIEIgZXh0ZW5kcyBBIHsKKyAgQigpIHsgc3VwZXIoKTsgfQorICA8Y2FyZXQ+Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvb3ZlcnJpZGVJbXBsZW1lbnQvYWZ0ZXJBbm5vdGF0aW9uLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvb3ZlcnJpZGVJbXBsZW1lbnQvYWZ0ZXJBbm5vdGF0aW9uLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODAxNmQ4ZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9vdmVycmlkZUltcGxlbWVudC9hZnRlckFubm90YXRpb24uamF2YQpAQCAtMCwwICsxLDEyIEBACitAaW50ZXJmYWNlIGZmeworICAgIFN0cmluZyBmKCkgZGVmYXVsdCAiIjsKK30KK2NsYXNzIGQgaW1wbGVtZW50cyBmZiB7CisgICAgcHVibGljIFN0cmluZyBmKCkgeworICAgICAgICA8Y2FyZXQ+PHNlbGVjdGlvbj5yZXR1cm4gbnVsbDsgIC8vVG8gY2hhbmdlIGJvZHkgb2YgaW1wbGVtZW50ZWQgbWV0aG9kcyB1c2UgRmlsZSB8IFNldHRpbmdzIHwgRmlsZSBUZW1wbGF0ZXMuPC9zZWxlY3Rpb24+CisgICAgfQorCisgICAgcHVibGljIENsYXNzPD8gZXh0ZW5kcyBBbm5vdGF0aW9uPiBhbm5vdGF0aW9uVHlwZSgpIHsKKyAgICAgICAgcmV0dXJuIG51bGw7ICAvL1RvIGNoYW5nZSBib2R5IG9mIGltcGxlbWVudGVkIG1ldGhvZHMgdXNlIEZpbGUgfCBTZXR0aW5ncyB8IEZpbGUgVGVtcGxhdGVzLgorICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9vdmVycmlkZUltcGxlbWVudC9hZnRlckNsb25lLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvb3ZlcnJpZGVJbXBsZW1lbnQvYWZ0ZXJDbG9uZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI2ZGMzYjAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvb3ZlcnJpZGVJbXBsZW1lbnQvYWZ0ZXJDbG9uZS5qYXZhCkBAIC0wLDAgKzEsMTIgQEAKK2NsYXNzIEdlbiB7CisgICAgcHJvdGVjdGVkIEdlbiBjbG9uZSgpIHsKKyAgICAgICAgcmV0dXJuIG51bGw7CisgICAgfQorfQorCitjbGFzcyBYMiBleHRlbmRzIEdlbiB7CisgICAgQE92ZXJyaWRlCisgICAgcHJvdGVjdGVkIEdlbiBjbG9uZSgpIHsKKyAgICAgICAgPGNhcmV0PjxzZWxlY3Rpb24+cmV0dXJuIHN1cGVyLmNsb25lKCk7ICAgIC8vVG8gY2hhbmdlIGJvZHkgb2Ygb3ZlcnJpZGRlbiBtZXRob2RzIHVzZSBGaWxlIHwgU2V0dGluZ3MgfCBGaWxlIFRlbXBsYXRlcy48L3NlbGVjdGlvbj4KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L292ZXJyaWRlSW1wbGVtZW50L2FmdGVyRG9Ob3RJbXBsZW1lbnRFeHRlbnNpb25NZXRob2RzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvb3ZlcnJpZGVJbXBsZW1lbnQvYWZ0ZXJEb05vdEltcGxlbWVudEV4dGVuc2lvbk1ldGhvZHMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMzJiZjUzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L292ZXJyaWRlSW1wbGVtZW50L2FmdGVyRG9Ob3RJbXBsZW1lbnRFeHRlbnNpb25NZXRob2RzLmphdmEKQEAgLTAsMCArMSwxNSBAQAoraW50ZXJmYWNlIEE8VD4geworICAgIHZvaWQgbTEoVCB0KTsKKyAgICB2b2lkIG0yKCk7Cit9CisKK2ludGVyZmFjZSBCPFQ+IGV4dGVuZHMgQTxUPiB7CisgICAgdm9pZCBtMShUIHQpIGRlZmF1bHQgeyB9Cit9CisKK2NsYXNzIE15Q2xhc3M8VD4gaW1wbGVtZW50cyBCPFQ+IHsKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgdm9pZCBtMigpIHsKKyAgICAgICAgPHNlbGVjdGlvbj4vL1RvIGNoYW5nZSBib2R5IG9mIGltcGxlbWVudGVkIG1ldGhvZHMgdXNlIEZpbGUgfCBTZXR0aW5ncyB8IEZpbGUgVGVtcGxhdGVzLjwvc2VsZWN0aW9uPgorICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9vdmVycmlkZUltcGxlbWVudC9hZnRlckVudW1Db25zdGFudC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L292ZXJyaWRlSW1wbGVtZW50L2FmdGVyRW51bUNvbnN0YW50LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTczZjc4ZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9vdmVycmlkZUltcGxlbWVudC9hZnRlckVudW1Db25zdGFudC5qYXZhCkBAIC0wLDAgKzEsMjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwMC0yMDEyIEpldEJyYWlucyBzLnIuby4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitlbnVtIEV7CisgIEUxIHsKKyAgICAgIEBPdmVycmlkZQorICAgICAgcHVibGljIHZvaWQgZm9vKCkgeworICAgICAgICAgIDxzZWxlY3Rpb24+Ly9UbyBjaGFuZ2UgYm9keSBvZiBpbXBsZW1lbnRlZCBtZXRob2RzIHVzZSBGaWxlIHwgU2V0dGluZ3MgfCBGaWxlIFRlbXBsYXRlcy48L3NlbGVjdGlvbj4KKyAgICAgIH0KKyAgfTsKKyAgcHVibGljIGFic3RyYWN0IHZvaWQgZm9vKCk7Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvb3ZlcnJpZGVJbXBsZW1lbnQvYWZ0ZXJFcmFzdXJlV2lsZGNhcmQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9vdmVycmlkZUltcGxlbWVudC9hZnRlckVyYXN1cmVXaWxkY2FyZC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRjNzU5MDkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvb3ZlcnJpZGVJbXBsZW1lbnQvYWZ0ZXJFcmFzdXJlV2lsZGNhcmQuamF2YQpAQCAtMCwwICsxLDkgQEAKK2ludGVyZmFjZSBHZW5lcmljPFQ+IHsKKyAgVCBmb28oKTsKK30KKworY2xhc3MgSUkgaW1wbGVtZW50cyBHZW5lcmljPD8+IHsKKyAgICBwdWJsaWMgT2JqZWN0IGZvbygpIHsKKyAgICAgICAgPHNlbGVjdGlvbj5yZXR1cm4gbnVsbDsgIC8vVG8gY2hhbmdlIGJvZHkgb2YgaW1wbGVtZW50ZWQgbWV0aG9kcyB1c2UgRmlsZSB8IFNldHRpbmdzIHwgRmlsZSBUZW1wbGF0ZXMuPC9zZWxlY3Rpb24+CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9vdmVycmlkZUltcGxlbWVudC9hZnRlckltcGxlbWVudEV4dGVuc2lvbk1ldGhvZHMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9vdmVycmlkZUltcGxlbWVudC9hZnRlckltcGxlbWVudEV4dGVuc2lvbk1ldGhvZHMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40N2U1NzJlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L292ZXJyaWRlSW1wbGVtZW50L2FmdGVySW1wbGVtZW50RXh0ZW5zaW9uTWV0aG9kcy5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKK2ludGVyZmFjZSBBPFQ+IHsKKyAgICB2b2lkIG0oVCB0KSBkZWZhdWx0IHsgfQorfQorCitjbGFzcyBNeUNsYXNzPFQ+IGltcGxlbWVudHMgQTxUPiB7CisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIHZvaWQgbShUIHQpIHsKKyAgICAgICAgPHNlbGVjdGlvbj4vL1RvIGNoYW5nZSBib2R5IG9mIGltcGxlbWVudGVkIG1ldGhvZHMgdXNlIEZpbGUgfCBTZXR0aW5ncyB8IEZpbGUgVGVtcGxhdGVzLjwvc2VsZWN0aW9uPgorICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9vdmVycmlkZUltcGxlbWVudC9hZnRlckluY29tcGxldGUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9vdmVycmlkZUltcGxlbWVudC9hZnRlckluY29tcGxldGUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZmExMjExCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L292ZXJyaWRlSW1wbGVtZW50L2FmdGVySW5jb21wbGV0ZS5qYXZhCkBAIC0wLDAgKzEsNSBAQAorY2xhc3MgUyBpbXBsZW1lbnRzIFJ1bm5hYmxlIHsKKyAgICBwdWJsaWMgdm9pZCBydW4oKSB7CisgICAgICAgIDxjYXJldD48c2VsZWN0aW9uPi8vVG8gY2hhbmdlIGJvZHkgb2YgaW1wbGVtZW50ZWQgbWV0aG9kcyB1c2UgRmlsZSB8IFNldHRpbmdzIHwgRmlsZSBUZW1wbGF0ZXMuPC9zZWxlY3Rpb24+CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9vdmVycmlkZUltcGxlbWVudC9hZnRlckludGVyZmFjZUFuZEFic3RyYWN0Q2xhc3MuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9vdmVycmlkZUltcGxlbWVudC9hZnRlckludGVyZmFjZUFuZEFic3RyYWN0Q2xhc3MuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iOTAxMzRiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L292ZXJyaWRlSW1wbGVtZW50L2FmdGVySW50ZXJmYWNlQW5kQWJzdHJhY3RDbGFzcy5qYXZhCkBAIC0wLDAgKzEsMTYgQEAKK2Fic3RyYWN0IGNsYXNzIEEgeworICBwdWJsaWMgYWJzdHJhY3QgRCBmb28oKTsKK30KKworaW50ZXJmYWNlIEIgeworICBGIGZvbygpOworfQorCitjbGFzcyBDIGV4dGVuZHMgQSBpbXBsZW1lbnRzIEIgeworICAgIHB1YmxpYyBGIGZvbygpIHsKKyAgICAgICAgPHNlbGVjdGlvbj5yZXR1cm4gbnVsbDsgIC8vVG8gY2hhbmdlIGJvZHkgb2YgaW1wbGVtZW50ZWQgbWV0aG9kcyB1c2UgRmlsZSB8IFNldHRpbmdzIHwgRmlsZSBUZW1wbGF0ZXMuPC9zZWxlY3Rpb24+CisgICAgfQorfQorCitjbGFzcyBEIHt9CitjbGFzcyBGIGV4dGVuZHMgRCB7fQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9vdmVycmlkZUltcGxlbWVudC9hZnRlckxvbmdGaW5hbFBhcmFtZXRlckxpc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9vdmVycmlkZUltcGxlbWVudC9hZnRlckxvbmdGaW5hbFBhcmFtZXRlckxpc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYjdhNzI3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L292ZXJyaWRlSW1wbGVtZW50L2FmdGVyTG9uZ0ZpbmFsUGFyYW1ldGVyTGlzdC5qYXZhCkBAIC0wLDAgKzEsMTYgQEAKK3B1YmxpYyBpbnRlcmZhY2UgQSB7CisgICAgdm9pZCBmb28oU3RyaW5nIHBwcHBwcHBwcHBwcDEsIFN0cmluZyBwcHBwcHBwcHBwcHAyLFN0cmluZyBwcHBwcHBwcHBwcHAzLFN0cmluZyBwcHBwcHBwcHBwcHA0LFN0cmluZyBwcHBwcHBwcHBwcHA1LFN0cmluZyBwcHBwcHBwcHBwcHA2LFN0cmluZyBwcHBwcHBwcHBwcHA3LFN0cmluZyBwcHBwcHBwcHBwcHA4KTsKK30KKworYWJzdHJhY3QgY2xhc3MgQiBpbXBsZW1lbnRzIEF7CisgICAgcHVibGljIHZvaWQgZm9vKGZpbmFsIFN0cmluZyBwcHBwcHBwcHBwcHAxLAorICAgICAgICAgICAgICAgICAgICBmaW5hbCBTdHJpbmcgcHBwcHBwcHBwcHBwMiwKKyAgICAgICAgICAgICAgICAgICAgZmluYWwgU3RyaW5nIHBwcHBwcHBwcHBwcDMsCisgICAgICAgICAgICAgICAgICAgIGZpbmFsIFN0cmluZyBwcHBwcHBwcHBwcHA0LAorICAgICAgICAgICAgICAgICAgICBmaW5hbCBTdHJpbmcgcHBwcHBwcHBwcHBwNSwKKyAgICAgICAgICAgICAgICAgICAgZmluYWwgU3RyaW5nIHBwcHBwcHBwcHBwcDYsCisgICAgICAgICAgICAgICAgICAgIGZpbmFsIFN0cmluZyBwcHBwcHBwcHBwcHA3LAorICAgICAgICAgICAgICAgICAgICBmaW5hbCBTdHJpbmcgcHBwcHBwcHBwcHBwOCkgeworICAgICAgICA8Y2FyZXQ+PHNlbGVjdGlvbj4vL1RvIGNoYW5nZSBib2R5IG9mIGltcGxlbWVudGVkIG1ldGhvZHMgdXNlIEZpbGUgfCBTZXR0aW5ncyB8IEZpbGUgVGVtcGxhdGVzLjwvc2VsZWN0aW9uPgorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvb3ZlcnJpZGVJbXBsZW1lbnQvYWZ0ZXJMb25nUGFyYW1ldGVyTGlzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L292ZXJyaWRlSW1wbGVtZW50L2FmdGVyTG9uZ1BhcmFtZXRlckxpc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hN2Q4OTlhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L292ZXJyaWRlSW1wbGVtZW50L2FmdGVyTG9uZ1BhcmFtZXRlckxpc3QuamF2YQpAQCAtMCwwICsxLDE1IEBACitwdWJsaWMgaW50ZXJmYWNlIEEgeworICAgIHZvaWQgZm9vKFN0cmluZyBwMSwgU3RyaW5nIHAyLFN0cmluZyBwMyxTdHJpbmcgcDQsU3RyaW5nIHA1LFN0cmluZyBwNixTdHJpbmcgcDcpOworfQorCithYnN0cmFjdCBjbGFzcyBCIGltcGxlbWVudHMgQXsKKyAgICBwdWJsaWMgdm9pZCBmb28oU3RyaW5nIHAxLAorICAgICAgICAgICAgICAgICAgICBTdHJpbmcgcDIsCisgICAgICAgICAgICAgICAgICAgIFN0cmluZyBwMywKKyAgICAgICAgICAgICAgICAgICAgU3RyaW5nIHA0LAorICAgICAgICAgICAgICAgICAgICBTdHJpbmcgcDUsCisgICAgICAgICAgICAgICAgICAgIFN0cmluZyBwNiwKKyAgICAgICAgICAgICAgICAgICAgU3RyaW5nIHA3KSB7CisgICAgICAgIDxjYXJldD48c2VsZWN0aW9uPi8vVG8gY2hhbmdlIGJvZHkgb2YgaW1wbGVtZW50ZWQgbWV0aG9kcyB1c2UgRmlsZSB8IFNldHRpbmdzIHwgRmlsZSBUZW1wbGF0ZXMuPC9zZWxlY3Rpb24+CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9vdmVycmlkZUltcGxlbWVudC9hZnRlck11bHRpcGxlSW50ZXJmYWNlSW5oZXJpdGFuY2UuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9vdmVycmlkZUltcGxlbWVudC9hZnRlck11bHRpcGxlSW50ZXJmYWNlSW5oZXJpdGFuY2UuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYzQ5YTkxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L292ZXJyaWRlSW1wbGVtZW50L2FmdGVyTXVsdGlwbGVJbnRlcmZhY2VJbmhlcml0YW5jZS5qYXZhCkBAIC0wLDAgKzEsMTYgQEAKK2ludGVyZmFjZSBBCit7CisgICAgYWJzdHJhY3QgU3RyaW5nIGZvbygpOworfQorCitpbnRlcmZhY2UgQgoreworICAgIGFic3RyYWN0IE9iamVjdCBmb28oKTsKK30KKworY2xhc3MgQyBpbXBsZW1lbnRzIEEsIEIKK3sKKyAgICBwdWJsaWMgU3RyaW5nIGZvbygpIHsKKyAgICAgICAgPHNlbGVjdGlvbj5yZXR1cm4gbnVsbDsgIC8vVG8gY2hhbmdlIGJvZHkgb2YgaW1wbGVtZW50ZWQgbWV0aG9kcyB1c2UgRmlsZSB8IFNldHRpbmdzIHwgRmlsZSBUZW1wbGF0ZXMuPC9zZWxlY3Rpb24+CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9vdmVycmlkZUltcGxlbWVudC9hZnRlck9uVGhlTGluZVdpdGhFeGlzdGluZ0V4cHJlc3Npb24uamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9vdmVycmlkZUltcGxlbWVudC9hZnRlck9uVGhlTGluZVdpdGhFeGlzdGluZ0V4cHJlc3Npb24uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YTRlMjk4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L292ZXJyaWRlSW1wbGVtZW50L2FmdGVyT25UaGVMaW5lV2l0aEV4aXN0aW5nRXhwcmVzc2lvbi5qYXZhCkBAIC0wLDAgKzEsMTIgQEAKK2Fic3RyYWN0IGNsYXNzICBCYXNlICB7CisgICAgdm9pZCBmb28oKXt9Cit9CisKK2NsYXNzIFN1YiBleHRlbmRzIEJhc2UgeworICAgIGludCBpdDsKKworICAgIEBPdmVycmlkZQorICAgIHZvaWQgZm9vKCkgeworICAgICAgICA8Y2FyZXQ+PHNlbGVjdGlvbj5zdXBlci5mb28oKTsgICAgLy9UbyBjaGFuZ2UgYm9keSBvZiBvdmVycmlkZGVuIG1ldGhvZHMgdXNlIEZpbGUgfCBTZXR0aW5ncyB8IEZpbGUgVGVtcGxhdGVzLjwvc2VsZWN0aW9uPgorICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9vdmVycmlkZUltcGxlbWVudC9hZnRlclJhd1N1cGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvb3ZlcnJpZGVJbXBsZW1lbnQvYWZ0ZXJSYXdTdXBlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk1OTEyYTEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvb3ZlcnJpZGVJbXBsZW1lbnQvYWZ0ZXJSYXdTdXBlci5qYXZhCkBAIC0wLDAgKzEsMjUgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwMC0yMDEyIEpldEJyYWlucyBzLnIuby4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitpbnRlcmZhY2UgQTxUPiB7CisgICAgICAgIDxTPiB2b2lkIGZvbygpOworICAgIH0KKworICAgIGNsYXNzIEIgaW1wbGVtZW50cyBBCisgICAgeworICAgICAgICBwdWJsaWMgdm9pZCBmb28oKSB7CisgICAgICAgICAgICA8c2VsZWN0aW9uPi8vVG8gY2hhbmdlIGJvZHkgb2YgaW1wbGVtZW50ZWQgbWV0aG9kcyB1c2UgRmlsZSB8IFNldHRpbmdzIHwgRmlsZSBUZW1wbGF0ZXMuPC9zZWxlY3Rpb24+CisgICAgICAgIH0KKyAgICB9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvb3ZlcnJpZGVJbXBsZW1lbnQvYWZ0ZXJSZXNvbHZlVHlwZVBhcmFtQ29uZmxpY3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9vdmVycmlkZUltcGxlbWVudC9hZnRlclJlc29sdmVUeXBlUGFyYW1Db25mbGljdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE3ZmVlZjIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvb3ZlcnJpZGVJbXBsZW1lbnQvYWZ0ZXJSZXNvbHZlVHlwZVBhcmFtQ29uZmxpY3QuamF2YQpAQCAtMCwwICsxLDEwIEBACithYnN0cmFjdCBjbGFzcyBBMTxYPnsKKyAgICBhYnN0cmFjdCA8VD4gdm9pZCBmb28oVCB0LCBYIHgpOworfQorCitjbGFzcyBCMTxUPiBleHRlbmRzIEExPFQ+eworICAgIEBPdmVycmlkZQorICAgIDxUMT4gdm9pZCBmb28oVDEgdDEsIFQgdCkgeworICAgICAgICA8c2VsZWN0aW9uPi8vVG8gY2hhbmdlIGJvZHkgb2YgaW1wbGVtZW50ZWQgbWV0aG9kcyB1c2UgRmlsZSB8IFNldHRpbmdzIHwgRmlsZSBUZW1wbGF0ZXMuPC9zZWxlY3Rpb24+CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L292ZXJyaWRlSW1wbGVtZW50L2FmdGVyU2ltcGxlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvb3ZlcnJpZGVJbXBsZW1lbnQvYWZ0ZXJTaW1wbGUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMDRlZTEwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L292ZXJyaWRlSW1wbGVtZW50L2FmdGVyU2ltcGxlLmphdmEKQEAgLTAsMCArMSwxMCBAQAorYWJzdHJhY3QgY2xhc3MgIElYICB7CisgICAgdm9pZCBmb28oKXt9Cit9CisKK2NsYXNzIFhYQyBleHRlbmRzIElYIHsKKyAgICBAT3ZlcnJpZGUKKyAgICB2b2lkIGZvbygpIHsKKyAgICAgICAgPGNhcmV0PjxzZWxlY3Rpb24+c3VwZXIuZm9vKCk7ICAgIC8vVG8gY2hhbmdlIGJvZHkgb2Ygb3ZlcnJpZGRlbiBtZXRob2RzIHVzZSBGaWxlIHwgU2V0dGluZ3MgfCBGaWxlIFRlbXBsYXRlcy48L3NlbGVjdGlvbj4KKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvb3ZlcnJpZGVJbXBsZW1lbnQvYWZ0ZXJTaW1wbGlmeU9iamVjdFdpbGRjYXJkLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvb3ZlcnJpZGVJbXBsZW1lbnQvYWZ0ZXJTaW1wbGlmeU9iamVjdFdpbGRjYXJkLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGYwOWQ4ZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9vdmVycmlkZUltcGxlbWVudC9hZnRlclNpbXBsaWZ5T2JqZWN0V2lsZGNhcmQuamF2YQpAQCAtMCwwICsxLDEyIEBACitpbnRlcmZhY2UgR2VuZXJpYzxUPiB7CisgIFNvbWVHZW5lcmljPD8gZXh0ZW5kcyBUPiBmb28oKTsKK30KKworY2xhc3MgSUkgaW1wbGVtZW50cyBHZW5lcmljPE9iamVjdD4geworICAgIHB1YmxpYyBTb21lR2VuZXJpYzw/PiBmb28oKSB7CisgICAgICAgIDxzZWxlY3Rpb24+cmV0dXJuIG51bGw7ICAvL1RvIGNoYW5nZSBib2R5IG9mIGltcGxlbWVudGVkIG1ldGhvZHMgdXNlIEZpbGUgfCBTZXR0aW5ncyB8IEZpbGUgVGVtcGxhdGVzLjwvc2VsZWN0aW9uPgorICAgIH0KK30KKworY2xhc3MgU29tZUdlbmVyaWM8UD4geworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9vdmVycmlkZUltcGxlbWVudC9hZnRlclN1YnN0aXR1dGVCb3VuZEluTWV0aG9kVHlwZVBhcmFtLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvb3ZlcnJpZGVJbXBsZW1lbnQvYWZ0ZXJTdWJzdGl0dXRlQm91bmRJbk1ldGhvZFR5cGVQYXJhbS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ3ODE2YzQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvb3ZlcnJpZGVJbXBsZW1lbnQvYWZ0ZXJTdWJzdGl0dXRlQm91bmRJbk1ldGhvZFR5cGVQYXJhbS5qYXZhCkBAIC0wLDAgKzEsMjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwMC0yMDEyIEpldEJyYWlucyBzLnIuby4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCithYnN0cmFjdCBjbGFzcyBBPFQ+IHsKKyAgICAgICAgYWJzdHJhY3QgPFMgZXh0ZW5kcyBUPiB2b2lkIGZvbyhTIHMpOworICAgIH0KKworICAgIGNsYXNzIEI8Uz4gZXh0ZW5kcyBBPFRocm93YWJsZT57IC8vIEltcGxlbWVudCBtZXRob2RzCisKKyAgICAgICAgQE92ZXJyaWRlCisgICAgICAgIDxTIGV4dGVuZHMgVGhyb3dhYmxlPiB2b2lkIGZvbyhTIHMpIHsKKyAgICAgICAgICAgIDxzZWxlY3Rpb24+Ly9UbyBjaGFuZ2UgYm9keSBvZiBpbXBsZW1lbnRlZCBtZXRob2RzIHVzZSBGaWxlIHwgU2V0dGluZ3MgfCBGaWxlIFRlbXBsYXRlcy48L3NlbGVjdGlvbj4KKyAgICAgICAgfQorICAgIH0KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9vdmVycmlkZUltcGxlbWVudC9hZnRlclN1YnN0aXR1dGlvbkluVHlwZVBhcmFtZXRlcnNMaXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvb3ZlcnJpZGVJbXBsZW1lbnQvYWZ0ZXJTdWJzdGl0dXRpb25JblR5cGVQYXJhbWV0ZXJzTGlzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFjZDY3MmUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvb3ZlcnJpZGVJbXBsZW1lbnQvYWZ0ZXJTdWJzdGl0dXRpb25JblR5cGVQYXJhbWV0ZXJzTGlzdC5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKK2Fic3RyYWN0IGNsYXNzICBJWDxUPiAgeworICAgYWJzdHJhY3QgPFMgZXh0ZW5kcyBUPiB2b2lkIGZvbygpe30KK30KKworY2xhc3MgWFhDPFM+IGV4dGVuZHMgSVg8VGhyb3dhYmxlPiB7CisgICAgQE92ZXJyaWRlCisgICAgPFMgZXh0ZW5kcyBUaHJvd2FibGU+IHZvaWQgZm9vKCkgeworICAgICAgICA8Y2FyZXQ+PHNlbGVjdGlvbj4vL1RvIGNoYW5nZSBib2R5IG9mIGltcGxlbWVudGVkIG1ldGhvZHMgdXNlIEZpbGUgfCBTZXR0aW5ncyB8IEZpbGUgVGVtcGxhdGVzLjwvc2VsZWN0aW9uPgorICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9vdmVycmlkZUltcGxlbWVudC9hZnRlclRlc3RNaXNzZWQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9vdmVycmlkZUltcGxlbWVudC9hZnRlclRlc3RNaXNzZWQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNGZhZDliCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L292ZXJyaWRlSW1wbGVtZW50L2FmdGVyVGVzdE1pc3NlZC5qYXZhCkBAIC0wLDAgKzEsMTEgQEAKK2NsYXNzIGZ7CisgIEBvcmcudGVzdG5nLmFubm90YXRpb25zLkJlZm9yZU1ldGhvZAorICBTdHJpbmcgZm9vKCkge3JldHVybiAiIjt9Cit9CisKK2NsYXNzIGZmIGV4dGVuZHMgZiB7CisgICAgQE92ZXJyaWRlCisgICAgU3RyaW5nIGZvbygpIHsKKyAgICAgICAgPHNlbGVjdGlvbj5yZXR1cm4gc3VwZXIuZm9vKCk7ICAgIC8vVG8gY2hhbmdlIGJvZHkgb2Ygb3ZlcnJpZGRlbiBtZXRob2RzIHVzZSBGaWxlIHwgU2V0dGluZ3MgfCBGaWxlIFRlbXBsYXRlcy48L3NlbGVjdGlvbj4KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L292ZXJyaWRlSW1wbGVtZW50L2FmdGVyVHlwZVBhcmFtLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvb3ZlcnJpZGVJbXBsZW1lbnQvYWZ0ZXJUeXBlUGFyYW0uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iY2M2ZGY0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L292ZXJyaWRlSW1wbGVtZW50L2FmdGVyVHlwZVBhcmFtLmphdmEKQEAgLTAsMCArMSw5IEBACitpbnRlcmZhY2UgRnVuY3Rpb248Uz4geworICB2b2lkIGZ1bihGdW5jdGlvbjxTPiBmdW5jdGlvbik7Cit9CisKK2NsYXNzIEJhciBleHRlbmRzIEZ1bmN0aW9uPFN0cmluZz57CisgICAgcHVibGljIHZvaWQgZnVuKEZ1bmN0aW9uPFN0cmluZz4gZnVuY3Rpb24pIHsKKyAgICAgICAgPHNlbGVjdGlvbj4vL1RvIGNoYW5nZSBib2R5IG9mIGltcGxlbWVudGVkIG1ldGhvZHMgdXNlIEZpbGUgfCBTZXR0aW5ncyB8IEZpbGUgVGVtcGxhdGVzLjwvc2VsZWN0aW9uPgorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvb3ZlcnJpZGVJbXBsZW1lbnQvYWZ0ZXJXaWxkY2FyZC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L292ZXJyaWRlSW1wbGVtZW50L2FmdGVyV2lsZGNhcmQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45YzM5ODM4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L292ZXJyaWRlSW1wbGVtZW50L2FmdGVyV2lsZGNhcmQuamF2YQpAQCAtMCwwICsxLDkgQEAKK2ludGVyZmFjZSBGdW5jdGlvbjxTLCBSPiB7CisgIFIgZnVuKFMgcyk7Cit9CisKK2NsYXNzIEJhciBleHRlbmRzIEZ1bmN0aW9uPFN0cmluZywgPz57CisgICAgcHVibGljIE9iamVjdCBmdW4oU3RyaW5nIHMpIHsKKyAgICAgICAgPHNlbGVjdGlvbj5yZXR1cm4gbnVsbDsgIC8vVG8gY2hhbmdlIGJvZHkgb2YgaW1wbGVtZW50ZWQgbWV0aG9kcyB1c2UgRmlsZSB8IFNldHRpbmdzIHwgRmlsZSBUZW1wbGF0ZXMuPC9zZWxlY3Rpb24+CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9vdmVycmlkZUltcGxlbWVudC9iZWZvcmVBbm5vdGF0aW9uLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvb3ZlcnJpZGVJbXBsZW1lbnQvYmVmb3JlQW5ub3RhdGlvbi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgzODg0ZmYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvb3ZlcnJpZGVJbXBsZW1lbnQvYmVmb3JlQW5ub3RhdGlvbi5qYXZhCkBAIC0wLDAgKzEsOSBAQAorQGludGVyZmFjZSBmZnsKKyAgICBTdHJpbmcgZigpIGRlZmF1bHQgIiI7Cit9CitjbGFzcyBkIGltcGxlbWVudHMgZmYgeworICAgIDxjYXJldD4KKyAgICBwdWJsaWMgQ2xhc3M8PyBleHRlbmRzIEFubm90YXRpb24+IGFubm90YXRpb25UeXBlKCkgeworICAgICAgICByZXR1cm4gbnVsbDsgIC8vVG8gY2hhbmdlIGJvZHkgb2YgaW1wbGVtZW50ZWQgbWV0aG9kcyB1c2UgRmlsZSB8IFNldHRpbmdzIHwgRmlsZSBUZW1wbGF0ZXMuCisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L292ZXJyaWRlSW1wbGVtZW50L2JlZm9yZUNsb25lLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvb3ZlcnJpZGVJbXBsZW1lbnQvYmVmb3JlQ2xvbmUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YmY2MzU2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L292ZXJyaWRlSW1wbGVtZW50L2JlZm9yZUNsb25lLmphdmEKQEAgLTAsMCArMSw5IEBACitjbGFzcyBHZW4geworICAgIHByb3RlY3RlZCBHZW4gY2xvbmUoKSB7CisgICAgICAgIHJldHVybiBudWxsOworICAgIH0KK30KKworY2xhc3MgWDIgZXh0ZW5kcyBHZW4geworICAgIDxjYXJldD4KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvb3ZlcnJpZGVJbXBsZW1lbnQvYmVmb3JlRG9Ob3RJbXBsZW1lbnRFeHRlbnNpb25NZXRob2RzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvb3ZlcnJpZGVJbXBsZW1lbnQvYmVmb3JlRG9Ob3RJbXBsZW1lbnRFeHRlbnNpb25NZXRob2RzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWRmN2M1NwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9vdmVycmlkZUltcGxlbWVudC9iZWZvcmVEb05vdEltcGxlbWVudEV4dGVuc2lvbk1ldGhvZHMuamF2YQpAQCAtMCwwICsxLDEyIEBACitpbnRlcmZhY2UgQTxUPiB7CisgICAgdm9pZCBtMShUIHQpOworICAgIHZvaWQgbTIoKTsKK30KKworaW50ZXJmYWNlIEI8VD4gZXh0ZW5kcyBBPFQ+IHsKKyAgICB2b2lkIG0xKFQgdCkgZGVmYXVsdCB7IH0KK30KKworY2xhc3MgTXlDbGFzczxUPiBpbXBsZW1lbnRzIEI8VD4geworICAgIDxjYXJldD4KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9vdmVycmlkZUltcGxlbWVudC9iZWZvcmVFbnVtQ29uc3RhbnQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9vdmVycmlkZUltcGxlbWVudC9iZWZvcmVFbnVtQ29uc3RhbnQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZDA2ZWViYwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9vdmVycmlkZUltcGxlbWVudC9iZWZvcmVFbnVtQ29uc3RhbnQuamF2YQpAQCAtMCwwICsxLDE5IEBACisvKgorICogQ29weXJpZ2h0IDIwMDAtMjAxMiBKZXRCcmFpbnMgcy5yLm8uCisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworZW51bSBFeworICBFMTsKKyAgcHVibGljIGFic3RyYWN0IHZvaWQgZm88Y2FyZXQ+bygpOworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L292ZXJyaWRlSW1wbGVtZW50L2JlZm9yZUVyYXN1cmVXaWxkY2FyZC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L292ZXJyaWRlSW1wbGVtZW50L2JlZm9yZUVyYXN1cmVXaWxkY2FyZC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjljMmNmYmMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvb3ZlcnJpZGVJbXBsZW1lbnQvYmVmb3JlRXJhc3VyZVdpbGRjYXJkLmphdmEKQEAgLTAsMCArMSw3IEBACitpbnRlcmZhY2UgR2VuZXJpYzxUPiB7CisgIFQgZm9vKCk7Cit9CisKK2NsYXNzIElJIGltcGxlbWVudHMgR2VuZXJpYzw/PiB7CisgIDxjYXJldD4KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvb3ZlcnJpZGVJbXBsZW1lbnQvYmVmb3JlSW1wbGVtZW50RXh0ZW5zaW9uTWV0aG9kcy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L292ZXJyaWRlSW1wbGVtZW50L2JlZm9yZUltcGxlbWVudEV4dGVuc2lvbk1ldGhvZHMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNjk0ODczCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L292ZXJyaWRlSW1wbGVtZW50L2JlZm9yZUltcGxlbWVudEV4dGVuc2lvbk1ldGhvZHMuamF2YQpAQCAtMCwwICsxLDcgQEAKK2ludGVyZmFjZSBBPFQ+IHsKKyAgICB2b2lkIG0oVCB0KSBkZWZhdWx0IHsgfQorfQorCitjbGFzcyBNeUNsYXNzPFQ+IGltcGxlbWVudHMgQTxUPiB7CisgICAgPGNhcmV0PgorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L292ZXJyaWRlSW1wbGVtZW50L2JlZm9yZUluY29tcGxldGUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9vdmVycmlkZUltcGxlbWVudC9iZWZvcmVJbmNvbXBsZXRlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWIxMGZmZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9vdmVycmlkZUltcGxlbWVudC9iZWZvcmVJbmNvbXBsZXRlLmphdmEKQEAgLTAsMCArMSBAQAorY2xhc3MgUyA8Y2FyZXQ+aW1wbGVtZW50cyBSdW5uYWJsZQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9vdmVycmlkZUltcGxlbWVudC9iZWZvcmVJbnRlcmZhY2VBbmRBYnN0cmFjdENsYXNzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvb3ZlcnJpZGVJbXBsZW1lbnQvYmVmb3JlSW50ZXJmYWNlQW5kQWJzdHJhY3RDbGFzcy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc0YjRmMGEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvb3ZlcnJpZGVJbXBsZW1lbnQvYmVmb3JlSW50ZXJmYWNlQW5kQWJzdHJhY3RDbGFzcy5qYXZhCkBAIC0wLDAgKzEsMTQgQEAKK2Fic3RyYWN0IGNsYXNzIEEgeworICBwdWJsaWMgYWJzdHJhY3QgRCBmb28oKTsKK30KKworaW50ZXJmYWNlIEIgeworICBGIGZvbygpOworfQorCitjbGFzcyBDIGV4dGVuZHMgQSBpbXBsZW1lbnRzIEIgeworICAgIDxjYXJldD4KK30KKworY2xhc3MgRCB7fQorY2xhc3MgRiBleHRlbmRzIEQge30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvb3ZlcnJpZGVJbXBsZW1lbnQvYmVmb3JlTG9uZ0ZpbmFsUGFyYW1ldGVyTGlzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L292ZXJyaWRlSW1wbGVtZW50L2JlZm9yZUxvbmdGaW5hbFBhcmFtZXRlckxpc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYjk0MGUxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L292ZXJyaWRlSW1wbGVtZW50L2JlZm9yZUxvbmdGaW5hbFBhcmFtZXRlckxpc3QuamF2YQpAQCAtMCwwICsxLDcgQEAKK3B1YmxpYyBpbnRlcmZhY2UgQSB7CisgICAgdm9pZCBmb28oU3RyaW5nIHBwcHBwcHBwcHBwcDEsIFN0cmluZyBwcHBwcHBwcHBwcHAyLFN0cmluZyBwcHBwcHBwcHBwcHAzLFN0cmluZyBwcHBwcHBwcHBwcHA0LFN0cmluZyBwcHBwcHBwcHBwcHA1LFN0cmluZyBwcHBwcHBwcHBwcHA2LFN0cmluZyBwcHBwcHBwcHBwcHA3LFN0cmluZyBwcHBwcHBwcHBwcHA4KTsKK30KKworYWJzdHJhY3QgY2xhc3MgQiBpbXBsZW1lbnRzIEF7CisgIDxjYXJldD4KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvb3ZlcnJpZGVJbXBsZW1lbnQvYmVmb3JlTG9uZ1BhcmFtZXRlckxpc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9vdmVycmlkZUltcGxlbWVudC9iZWZvcmVMb25nUGFyYW1ldGVyTGlzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdlNzdhZDkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvb3ZlcnJpZGVJbXBsZW1lbnQvYmVmb3JlTG9uZ1BhcmFtZXRlckxpc3QuamF2YQpAQCAtMCwwICsxLDcgQEAKK3B1YmxpYyBpbnRlcmZhY2UgQSB7CisgICAgdm9pZCBmb28oU3RyaW5nIHAxLCBTdHJpbmcgcDIsU3RyaW5nIHAzLFN0cmluZyBwNCxTdHJpbmcgcDUsU3RyaW5nIHA2LFN0cmluZyBwNyk7Cit9CisKK2Fic3RyYWN0IGNsYXNzIEIgaW1wbGVtZW50cyBBeworICAgIDxjYXJldD4KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvb3ZlcnJpZGVJbXBsZW1lbnQvYmVmb3JlTXVsdGlwbGVJbnRlcmZhY2VJbmhlcml0YW5jZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L292ZXJyaWRlSW1wbGVtZW50L2JlZm9yZU11bHRpcGxlSW50ZXJmYWNlSW5oZXJpdGFuY2UuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45OGE0OTFhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L292ZXJyaWRlSW1wbGVtZW50L2JlZm9yZU11bHRpcGxlSW50ZXJmYWNlSW5oZXJpdGFuY2UuamF2YQpAQCAtMCwwICsxLDE0IEBACitpbnRlcmZhY2UgQQoreworICAgIGFic3RyYWN0IFN0cmluZyBmb28oKTsKK30KKworaW50ZXJmYWNlIEIKK3sKKyAgICBhYnN0cmFjdCBPYmplY3QgZm9vKCk7Cit9CisKK2NsYXNzIEMgaW1wbGVtZW50cyBBLCBCCit7CisgICAgPGNhcmV0PgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9vdmVycmlkZUltcGxlbWVudC9iZWZvcmVPblRoZUxpbmVXaXRoRXhpc3RpbmdFeHByZXNzaW9uLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvb3ZlcnJpZGVJbXBsZW1lbnQvYmVmb3JlT25UaGVMaW5lV2l0aEV4aXN0aW5nRXhwcmVzc2lvbi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFhN2M2ZGMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvb3ZlcnJpZGVJbXBsZW1lbnQvYmVmb3JlT25UaGVMaW5lV2l0aEV4aXN0aW5nRXhwcmVzc2lvbi5qYXZhCkBAIC0wLDAgKzEsNyBAQAorYWJzdHJhY3QgY2xhc3MgIEJhc2UgIHsKKyAgICB2b2lkIGZvbygpe30KK30KKworY2xhc3MgU3ViIGV4dGVuZHMgQmFzZSB7CisgICAgaW50IGl0OzxjYXJldD4KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9vdmVycmlkZUltcGxlbWVudC9iZWZvcmVSYXdTdXBlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L292ZXJyaWRlSW1wbGVtZW50L2JlZm9yZVJhd1N1cGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWVmZTk1YwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9vdmVycmlkZUltcGxlbWVudC9iZWZvcmVSYXdTdXBlci5qYXZhCkBAIC0wLDAgKzEsMjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwMC0yMDEyIEpldEJyYWlucyBzLnIuby4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitpbnRlcmZhY2UgQTxUPiB7CisgICAgICAgIDxTPiB2b2lkIGZvbygpOworICAgIH0KKworICAgIGNsYXNzIEIgaW1wbGVtZW50cyBBCisgICAgeworICAgICAgPGNhcmV0PgorCisgICAgfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L292ZXJyaWRlSW1wbGVtZW50L2JlZm9yZVJlc29sdmVUeXBlUGFyYW1Db25mbGljdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L292ZXJyaWRlSW1wbGVtZW50L2JlZm9yZVJlc29sdmVUeXBlUGFyYW1Db25mbGljdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZmZTE5MWUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvb3ZlcnJpZGVJbXBsZW1lbnQvYmVmb3JlUmVzb2x2ZVR5cGVQYXJhbUNvbmZsaWN0LmphdmEKQEAgLTAsMCArMSw3IEBACithYnN0cmFjdCBjbGFzcyBBMTxYPnsKKyAgICBhYnN0cmFjdCA8VD4gdm9pZCBmb28oVCB0LCBYIHgpOworfQorCitjbGFzcyBCMTxUPiBleHRlbmRzIEExPFQ+eworICA8Y2FyZXQ+Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvb3ZlcnJpZGVJbXBsZW1lbnQvYmVmb3JlU2ltcGxlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvb3ZlcnJpZGVJbXBsZW1lbnQvYmVmb3JlU2ltcGxlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDA2ZGRmYQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9vdmVycmlkZUltcGxlbWVudC9iZWZvcmVTaW1wbGUuamF2YQpAQCAtMCwwICsxLDcgQEAKK2Fic3RyYWN0IGNsYXNzICBJWCAgeworICAgIHZvaWQgZm9vKCl7fQorfQorCitjbGFzcyBYWEMgZXh0ZW5kcyBJWCB7CisgICAgPGNhcmV0PgorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L292ZXJyaWRlSW1wbGVtZW50L2JlZm9yZVNpbXBsaWZ5T2JqZWN0V2lsZGNhcmQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9vdmVycmlkZUltcGxlbWVudC9iZWZvcmVTaW1wbGlmeU9iamVjdFdpbGRjYXJkLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzI5NmUxZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9vdmVycmlkZUltcGxlbWVudC9iZWZvcmVTaW1wbGlmeU9iamVjdFdpbGRjYXJkLmphdmEKQEAgLTAsMCArMSwxMCBAQAoraW50ZXJmYWNlIEdlbmVyaWM8VD4geworICBTb21lR2VuZXJpYzw/IGV4dGVuZHMgVD4gZm9vKCk7Cit9CisKK2NsYXNzIElJIGltcGxlbWVudHMgR2VuZXJpYzxPYmplY3Q+IHsKKyAgPGNhcmV0PgorfQorCitjbGFzcyBTb21lR2VuZXJpYzxQPiB7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L292ZXJyaWRlSW1wbGVtZW50L2JlZm9yZVN1YnN0aXR1dGVCb3VuZEluTWV0aG9kVHlwZVBhcmFtLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvb3ZlcnJpZGVJbXBsZW1lbnQvYmVmb3JlU3Vic3RpdHV0ZUJvdW5kSW5NZXRob2RUeXBlUGFyYW0uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wY2NjZGExCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L292ZXJyaWRlSW1wbGVtZW50L2JlZm9yZVN1YnN0aXR1dGVCb3VuZEluTWV0aG9kVHlwZVBhcmFtLmphdmEKQEAgLTAsMCArMSwyMiBAQAorLyoKKyAqIENvcHlyaWdodCAyMDAwLTIwMTIgSmV0QnJhaW5zIHMuci5vLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK2Fic3RyYWN0IGNsYXNzIEE8VD4geworICAgICAgICBhYnN0cmFjdCA8UyBleHRlbmRzIFQ+IHZvaWQgZm9vKFMgcyk7CisgICAgfQorCisgICAgY2xhc3MgQjxTPiBleHRlbmRzIEE8VGhyb3dhYmxlPnsgLy8gSW1wbGVtZW50IG1ldGhvZHMKKyAgICAgIDxjYXJldD4KKyAgICB9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvb3ZlcnJpZGVJbXBsZW1lbnQvYmVmb3JlU3Vic3RpdHV0aW9uSW5UeXBlUGFyYW1ldGVyc0xpc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9vdmVycmlkZUltcGxlbWVudC9iZWZvcmVTdWJzdGl0dXRpb25JblR5cGVQYXJhbWV0ZXJzTGlzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY2ZjNkOGUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvb3ZlcnJpZGVJbXBsZW1lbnQvYmVmb3JlU3Vic3RpdHV0aW9uSW5UeXBlUGFyYW1ldGVyc0xpc3QuamF2YQpAQCAtMCwwICsxLDcgQEAKK2Fic3RyYWN0IGNsYXNzICBJWDxUPiAgeworICAgYWJzdHJhY3QgPFMgZXh0ZW5kcyBUPiB2b2lkIGZvbygpe30KK30KKworY2xhc3MgWFhDPFM+IGV4dGVuZHMgSVg8VGhyb3dhYmxlPiB7CisgICAgPGNhcmV0PgorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L292ZXJyaWRlSW1wbGVtZW50L2JlZm9yZVRlc3RNaXNzZWQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9vdmVycmlkZUltcGxlbWVudC9iZWZvcmVUZXN0TWlzc2VkLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmE3MDEyZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9vdmVycmlkZUltcGxlbWVudC9iZWZvcmVUZXN0TWlzc2VkLmphdmEKQEAgLTAsMCArMSw4IEBACitjbGFzcyBmeworICBAb3JnLnRlc3RuZy5hbm5vdGF0aW9ucy5CZWZvcmVNZXRob2QKKyAgU3RyaW5nIGZvbygpIHtyZXR1cm4gIiI7fQorfQorCitjbGFzcyBmZiBleHRlbmRzIGYgeworICA8Y2FyZXQ+Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L292ZXJyaWRlSW1wbGVtZW50L2JlZm9yZVR5cGVQYXJhbS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L292ZXJyaWRlSW1wbGVtZW50L2JlZm9yZVR5cGVQYXJhbS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAyZjkxZjYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvb3ZlcnJpZGVJbXBsZW1lbnQvYmVmb3JlVHlwZVBhcmFtLmphdmEKQEAgLTAsMCArMSw3IEBACitpbnRlcmZhY2UgRnVuY3Rpb248Uz4geworICB2b2lkIGZ1bihGdW5jdGlvbjxTPiBmdW5jdGlvbik7Cit9CisKK2NsYXNzIEJhciBleHRlbmRzIEZ1bmN0aW9uPFN0cmluZz57CisgIDxjYXJldD4KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvb3ZlcnJpZGVJbXBsZW1lbnQvYmVmb3JlV2lsZGNhcmQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9vdmVycmlkZUltcGxlbWVudC9iZWZvcmVXaWxkY2FyZC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEyZjQ5ZDUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvb3ZlcnJpZGVJbXBsZW1lbnQvYmVmb3JlV2lsZGNhcmQuamF2YQpAQCAtMCwwICsxLDcgQEAKK2ludGVyZmFjZSBGdW5jdGlvbjxTLCBSPiB7CisgIFIgZnVuKFMgcyk7Cit9CisKK2NsYXNzIEJhciBleHRlbmRzIEZ1bmN0aW9uPFN0cmluZywgPz57CisgIDxjYXJldD4KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvc2xpY2UvYmFja3dhcmQvQW5vbkNsYXNzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvc2xpY2UvYmFja3dhcmQvQW5vbkNsYXNzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTc4YTkzZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9zbGljZS9iYWNrd2FyZC9Bbm9uQ2xhc3MuamF2YQpAQCAtMCwwICsxLDE3IEBACitjbGFzcyBUZXN0IHsKKworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKKyAgICAgICAgZmluYWwgU3RyaW5nIGEgPSA8Zmxvd24xMT5hcmdzWzBdOworICAgICAgICBmaW5hbCBTdHJpbmcgYiA9IGFyZ3NbMV07CisgICAgICAgIG5ldyBSdW5uYWJsZSgpIHsKKyAgICAgICAgICAgIHB1YmxpYyB2b2lkIHJ1bigpIHsKKyAgICAgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oZig8Zmxvd24xPmEsIGIpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfS5ydW4oKTsKKyAgICB9CisKKyAgICBwcml2YXRlIHN0YXRpYyBTdHJpbmcgZihTdHJpbmcgYSwgU3RyaW5nIGIpIHsKKyAgICAgICAgcmV0dXJuIDxjYXJldD5hICsgYjsKKyAgICB9CisKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvc2xpY2UvYmFja3dhcmQvQXNzaWdubWVudC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L3NsaWNlL2JhY2t3YXJkL0Fzc2lnbm1lbnQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zOWMwNmZkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L3NsaWNlL2JhY2t3YXJkL0Fzc2lnbm1lbnQuamF2YQpAQCAtMCwwICsxLDcgQEAKK2NsYXNzIFYgeworICB7CisgICAgaW50IGk7CisgICAgaTxjYXJldD49IDxmbG93bjE+MTsKKyAgICAKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9zbGljZS9iYWNrd2FyZC9Db21wbGV4VHlwZUVyYXN1cmUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9zbGljZS9iYWNrd2FyZC9Db21wbGV4VHlwZUVyYXN1cmUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hM2ZjMzgxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L3NsaWNlL2JhY2t3YXJkL0NvbXBsZXhUeXBlRXJhc3VyZS5qYXZhCkBAIC0wLDAgKzEsODkgQEAKK2NsYXNzIFBhaXI8QSwgQj4geworICBwdWJsaWMgZmluYWwgQSBmaXJzdDsKKyAgcHVibGljIGZpbmFsIEIgc2Vjb25kOworCisgIHB1YmxpYyBQYWlyKEEgZmlyc3QsIEIgc2Vjb25kKSB7CisgICAgdGhpcy5maXJzdCA9IDxmbG93bjExMT5maXJzdDsKKyAgICB0aGlzLnNlY29uZCA9IHNlY29uZDsKKyAgfQorCisgIHB1YmxpYyBmaW5hbCBBIGdldEZpcnN0KCkgeworICAgIHJldHVybiA8Zmxvd24xMT5maXJzdDsKKyAgfQorCisgIHB1YmxpYyBmaW5hbCBCIGdldFNlY29uZCgpIHsKKyAgICByZXR1cm4gc2Vjb25kOworICB9CisKKyAgcHVibGljIHN0YXRpYyA8QSwgQj4gUGFpcjxBLCBCPiBjcmVhdGUoQSBmaXJzdCwgQiBzZWNvbmQpIHsKKyAgICByZXR1cm4gbmV3IFBhaXI8QSxCPig8Zmxvd24xMTExPmZpcnN0LCBzZWNvbmQpOworICB9CisKKyAgcHVibGljIGZpbmFsIGJvb2xlYW4gZXF1YWxzKE9iamVjdCBvKXsKKyAgICByZXR1cm4gbyBpbnN0YW5jZW9mIFBhaXIgJiYgZmFsc2U7CisgIH0KKworICBwdWJsaWMgZmluYWwgaW50IGhhc2hDb2RlKCl7CisgICAgaW50IGhhc2hDb2RlID0gMDsKKyAgICBpZiAoZmlyc3QgIT0gbnVsbCl7CisgICAgICBoYXNoQ29kZSArPSBoYXNoQ29kZShmaXJzdCk7CisgICAgfQorICAgIGlmIChzZWNvbmQgIT0gbnVsbCl7CisgICAgICBoYXNoQ29kZSArPSBoYXNoQ29kZShzZWNvbmQpOworICAgIH0KKyAgICByZXR1cm4gaGFzaENvZGU7CisgIH0KKworICBwcml2YXRlIHN0YXRpYyBpbnQgaGFzaENvZGUoZmluYWwgT2JqZWN0IG8pIHsKKyAgICByZXR1cm4gby5oYXNoQ29kZSgpOworICB9CisKKyAgcHVibGljIFN0cmluZyB0b1N0cmluZygpIHsKKyAgICByZXR1cm4gIjwiICsgZmlyc3QgKyAiLCIgKyBzZWNvbmQgKyAiPiI7CisgIH0KK30KK2NsYXNzIFJlZjxUPiB7CisgIHByaXZhdGUgVCBteVZhbHVlOworCisgIHB1YmxpYyBSZWYoKSB7IH0KKworICBwdWJsaWMgUmVmKFQgdmFsdWUpIHsKKyAgICBteVZhbHVlID0gdmFsdWU7CisgIH0KKworICBwdWJsaWMgYm9vbGVhbiBpc051bGwgKCkgeworICAgIHJldHVybiBteVZhbHVlID09IG51bGw7CisgIH0KKworICBwdWJsaWMgVCBnZXQgKCkgeworICAgIHJldHVybiBteVZhbHVlOworICB9CisKKyAgcHVibGljIHZvaWQgc2V0IChUIHZhbHVlKSB7CisgICAgbXlWYWx1ZSA9IHZhbHVlOworICB9CisKKyAgcHVibGljIHN0YXRpYyA8VD4gUmVmPFQ+IGNyZWF0ZShUIHZhbHVlKSB7CisgICAgcmV0dXJuIG5ldyBSZWY8VD4odmFsdWUpOworICB9CisKKyAgcHVibGljIFN0cmluZyB0b1N0cmluZygpIHsKKyAgICByZXR1cm4gbXlWYWx1ZSA9PSBudWxsID8gbnVsbCA6IG15VmFsdWUudG9TdHJpbmcoKTsKKyAgfQorfQorY2xhc3MgUHNpVmFyaWFibGUge30KK2NsYXNzIFBzaUZpZWxkIGV4dGVuZHMgUHNpVmFyaWFibGUge30KKworY2xhc3MgUyB7CisgICAgICAgIHByaXZhdGUgc3RhdGljIFBhaXI8Ym9vbGVhbltdLCBCb29sZWFuPiBwYXJzZUZsYWdzKGZpbmFsIFN0cmluZyBzdHJpbmcpIHsKKyAgICAgICAgICBib29sZWFuIHJldHVybkZsYWcgPSBmYWxzZTsKKyAgICAgICAgICBmaW5hbCBib29sZWFuW10gcmVzdWx0ID0gbmV3IGJvb2xlYW5bMF07CisgICAgICAgICAgcmV0dXJuIFBhaXIuY3JlYXRlKHJlc3VsdCwgcmV0dXJuRmxhZyk7CisgICAgICAgIH0KKyAgICAgICAgdm9pZCBwc2lmbG93KCkgeworICAgICAgICAgICAgUmVmPFBhaXI8UHNpRmllbGQsIEJvb2xlYW4+PiBhbmNob3JSZWYgPSBuZXcgUmVmPFBhaXI8UHNpRmllbGQsIEJvb2xlYW4+PigpOworICAgICAgICAgICAgUGFpcjxQc2lGaWVsZCwgQm9vbGVhbj4gZmllbGRBbmNob3IgPSBhbmNob3JSZWYuZ2V0KCk7CisKKyAgICAgICAgICAgIFBzaVZhcmlhYmxlIDxjYXJldD5wc2lWYXJpYWJsZSA9IDxmbG93bjE+ZmllbGRBbmNob3IuZ2V0Rmlyc3QoKTsKKyAgICAgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9zbGljZS9iYWNrd2FyZC9Db25kaXRpb25hbC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L3NsaWNlL2JhY2t3YXJkL0NvbmRpdGlvbmFsLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTZlMDdjYQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9zbGljZS9iYWNrd2FyZC9Db25kaXRpb25hbC5qYXZhCkBAIC0wLDAgKzEsMTMgQEAKK2NsYXNzIHMgeworICAgIHsKKyAgICAgIHgoPGZsb3duMTEyMTE+Inh4eCIpOworICAgIH0KKyAgICBTdHJpbmcgeChTdHJpbmcgZykgeworICAgICAgICBTdHJpbmcgZCA9IDxmbG93bjE+Zm9vKDxmbG93bjExMjE+Zyk7CisgICAgICAgIHJldHVybiA8Y2FyZXQ+ZDsKKyAgICB9CisKKyAgICBwcml2YXRlIFN0cmluZyBmb28oU3RyaW5nIGkpIHsKKyAgICAgICAgcmV0dXJuIDxmbG93bjExPmk9PW51bGwgPyA8Zmxvd24xMTE+bnVsbCA6IDxmbG93bjExMj5pOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvc2xpY2UvYmFja3dhcmQvQ29uZGl0aW9uYWwyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvc2xpY2UvYmFja3dhcmQvQ29uZGl0aW9uYWwyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzU0OTg2NgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9zbGljZS9iYWNrd2FyZC9Db25kaXRpb25hbDIuamF2YQpAQCAtMCwwICsxLDE3IEBACitjbGFzcyBUZXN0IHsKKworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKKyAgICAgICAgZmluYWwgU3RyaW5nIGEgPSA8Zmxvd24xMTIxPmFyZ3NbMF07CisgICAgICAgIGZpbmFsIFN0cmluZyBiID0gPGZsb3duMTE+VGVzdC5jbGFzcyA9PSBudWxsID8gPGZsb3duMTExPmFyZ3NbMV0gOiA8Zmxvd24xMTI+YTsKKyAgICAgICAgbmV3IFJ1bm5hYmxlKCkgeworICAgICAgICAgICAgcHVibGljIHZvaWQgcnVuKCkgeworICAgICAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihmKGEsIDxmbG93bjE+YikpOworICAgICAgICAgICAgfQorICAgICAgICB9LnJ1bigpOworICAgIH0KKworICAgIHByaXZhdGUgc3RhdGljIFN0cmluZyBmKFN0cmluZyBhLCBTdHJpbmcgYikgeworICAgICAgICByZXR1cm4gYSArIDxjYXJldD5iOworICAgIH0KKworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L3NsaWNlL2JhY2t3YXJkL0RvdWJsZU51bGxzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvc2xpY2UvYmFja3dhcmQvRG91YmxlTnVsbHMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMTM2MDE0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L3NsaWNlL2JhY2t3YXJkL0RvdWJsZU51bGxzLmphdmEKQEAgLTAsMCArMSw5IEBACitwdWJsaWMgY2xhc3MgWCAgeworICBTdHJpbmcgPGNhcmV0Pmw7CisgIHsKKyAgICBsID0gbnVsbDsKKyAgfQorICB7CisgICAgbCA9IG51bGw7CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9zbGljZS9iYWNrd2FyZC9EdXBTbGljZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L3NsaWNlL2JhY2t3YXJkL0R1cFNsaWNlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTk4M2VlNgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9zbGljZS9iYWNrd2FyZC9EdXBTbGljZS5qYXZhCkBAIC0wLDAgKzEsMTMgQEAKK3B1YmxpYyBjbGFzcyBEdXBTbGljZSB7CisgICAgaW50IDxjYXJldD5maWVsZDsgCisKKyAgICB2b2lkIG11bHRpcGx5KGludCBmcCkgeworICAgICAgICB0aGlzLmZpZWxkID0gZnA7CisgICAgICAgIG11bHRpcGxheTIoMTExMTExMTExMSk7CisgICAgfQorCisgICAgdm9pZCBtdWx0aXBsYXkyKGludCBpKSB7CisgICAgICAgIGZpZWxkID0gaTsKKyAgICAgICAgbXVsdGlwbHkoaSk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L3NsaWNlL2JhY2t3YXJkL0R1cGxpY2F0ZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L3NsaWNlL2JhY2t3YXJkL0R1cGxpY2F0ZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU4MTJmOGQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvc2xpY2UvYmFja3dhcmQvRHVwbGljYXRlLmphdmEKQEAgLTAsMCArMSwzMiBAQAorY2xhc3MgVGVzdCB7CisgICAgYm9vbGVhbiA8Y2FyZXQ+ZmllOworICAgIGludCBmKFQgdCkgeworICAgICAgICBmaWUgPSB0LnQ7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIHZvaWQgZyhUIHQpIHsKKy8vICAgICAgICB0LnQgPSBmYWxzZTsKKyAgICAgICAgZmllID0gdHJ1ZTsKKyAgICB9CisgICAgdm9pZCBoKFQgdCkgeworICAgICAgICBib29sZWFuIHQxID0gdC50OworICAgICAgICB0cnkgeworICAgICAgICAgICAgdC50ID0gZmFsc2U7CisgICAgICAgICAgICBnKHQpOworICAgICAgICB9CisgICAgICAgIGZpbmFsbHkgeworICAgICAgICAgICAgdC50ID0gdDE7CisgICAgICAgIH0KKyAgICB9CisKKworICAgIHByaXZhdGUgY2xhc3MgVCB7CisgICAgICAgIHB1YmxpYyBib29sZWFuIHQgPSB0cnVlOworCisgICAgICAgIHB1YmxpYyBib29sZWFuIGlzVCgpIHsKKyAgICAgICAgICAgIGlzVCgpOworICAgICAgICAgICAgcmV0dXJuIHQ7CisgICAgICAgIH0KKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvc2xpY2UvYmFja3dhcmQvRHVwbGljYXRlTGVhdmVzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvc2xpY2UvYmFja3dhcmQvRHVwbGljYXRlTGVhdmVzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTg0NDBlYwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9zbGljZS9iYWNrd2FyZC9EdXBsaWNhdGVMZWF2ZXMuamF2YQpAQCAtMCwwICsxLDIzIEBACitwdWJsaWMgY2xhc3MgWCAgeworICAgIFN0cmluZyA8Y2FyZXQ+bDsKKworICAgIHB1YmxpYyBYKCkgeworICAgICAgICBmcygib28iLCB0aGlzKTsKKyAgICB9CisKKyAgICB2b2lkIGZzKFN0cmluZyB0LCBYIHgpCisgICAgeworICAgICAgICB4LnNldCh0KTsKKyAgICB9CisgICAgICAgICAgICAgICAgLy8KKyAgICB2b2lkIHNldChTdHJpbmcgZCkgeworICAgICAgICBsID0gZDsKKyAgICB9Cit9CisKK2NsYXNzIFhYIGV4dGVuZHMgWCB7CisgICAgdm9pZCBmcyhTdHJpbmcgdCwgWCB4KSB7CisgICAgICAgIHguZnModCwgeCk7CisgICAgfQorfQorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvc2xpY2UvYmFja3dhcmQvRW51bUNvbnN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvc2xpY2UvYmFja3dhcmQvRW51bUNvbnN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGVjY2Q4MgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9zbGljZS9iYWNrd2FyZC9FbnVtQ29uc3QuamF2YQpAQCAtMCwwICsxLDYgQEAKKyAgICBlbnVtIE0geworICAgICAgICBYKDxmbG93bjE+OTk5KTsKKworICAgICAgICBNKGludCA8Y2FyZXQ+aSkgeworICAgICAgICB9CisgICAgfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L3NsaWNlL2JhY2t3YXJkL0dlbmVyaWNCb3hpbmcuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9zbGljZS9iYWNrd2FyZC9HZW5lcmljQm94aW5nLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTg4ODk0NAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9zbGljZS9iYWNrd2FyZC9HZW5lcmljQm94aW5nLmphdmEKQEAgLTAsMCArMSwyMSBAQAorcHVibGljIGNsYXNzIEJveGkgeworICAgIHByaXZhdGUgaW50ZXJmYWNlIEZvbzxUPiB7CisgICAgICAgICAgICBUIHQoKTsKKyAgICAgICAgfQorCisgICAgICAgICB7CisgICAgICAgICAgICBGb288U3RyaW5nPiBhID0gbmV3IEZvbzxTdHJpbmc+KCkgeworICAgICAgICAgICAgICAgIHB1YmxpYyBTdHJpbmcgdCgpIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuICJhIjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9OworICAgICAgICAgICAgRm9vPEludGVnZXI+IGIgPSBuZXcgRm9vPEludGVnZXI+KCkgeworICAgICAgICAgICAgICAgIHB1YmxpYyBJbnRlZ2VyIHQoKSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiA8Zmxvd24xMT40MjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9OworCisgICAgICAgICAgICBpbnQgPGNhcmV0PmkgPSA8Zmxvd24xPmIudCgpOworICAgICAgICB9CisKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvc2xpY2UvYmFja3dhcmQvR2VuZXJpY0ltcGxlbWVudC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L3NsaWNlL2JhY2t3YXJkL0dlbmVyaWNJbXBsZW1lbnQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MWQwZWU1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L3NsaWNlL2JhY2t3YXJkL0dlbmVyaWNJbXBsZW1lbnQuamF2YQpAQCAtMCwwICsxLDIxIEBACitwdWJsaWMgY2xhc3MgWCB7CisgICAgeworICAgICAgICBQcm9jPFN0cmluZz4gcHJvY3MgPSBuZXcgUHJvYzxTdHJpbmc+KCkgeworICAgICAgICAgICAgcHVibGljIHZvaWQgZihTdHJpbmcgPGNhcmV0PnMpIHsKKyAgICAgICAgICAgICAgICAvL1RvIGNoYW5nZSBib2R5IG9mIGltcGxlbWVudGVkIG1ldGhvZHMgdXNlIEZpbGUgfCBTZXR0aW5ncyB8IEZpbGUgVGVtcGxhdGVzLgorICAgICAgICAgICAgfQorICAgICAgICB9OworICAgICAgICBQcm9jPEludGVnZXI+IHByb2NpID0gbmV3IFByb2M8SW50ZWdlcj4oKSB7CisgICAgICAgICAgICBwdWJsaWMgdm9pZCBmKEludGVnZXIgcykgeworICAgICAgICAgICAgICAgIC8vVG8gY2hhbmdlIGJvZHkgb2YgaW1wbGVtZW50ZWQgbWV0aG9kcyB1c2UgRmlsZSB8IFNldHRpbmdzIHwgRmlsZSBUZW1wbGF0ZXMuCisgICAgICAgICAgICB9CisgICAgICAgIH07CisKKyAgICAgICAgcHJvY3MuZig8Zmxvd24xPiIiKTsKKyAgICAgICAgcHJvY2kuZigwKTsKKyAgICB9Cit9CisKK2ludGVyZmFjZSBQcm9jPFQ+IHsKKyAgICAgIHZvaWQgZihUIHQpOworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L3NsaWNlL2JhY2t3YXJkL0dlbmVyaWNJbXBsZW1lbnQyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvc2xpY2UvYmFja3dhcmQvR2VuZXJpY0ltcGxlbWVudDIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YzNmNWYxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L3NsaWNlL2JhY2t3YXJkL0dlbmVyaWNJbXBsZW1lbnQyLmphdmEKQEAgLTAsMCArMSwyMSBAQAorcHVibGljIGNsYXNzIFggeworICAgIHsKKyAgICAgICAgUHJvYzxTdHJpbmc+IHByb2NzID0gbmV3IFByb2M8U3RyaW5nPigpIHsKKyAgICAgICAgICAgIHB1YmxpYyB2b2lkIGYoU3RyaW5nIHMpIHsKKyAgICAgICAgICAgICAgICAvL1RvIGNoYW5nZSBib2R5IG9mIGltcGxlbWVudGVkIG1ldGhvZHMgdXNlIEZpbGUgfCBTZXR0aW5ncyB8IEZpbGUgVGVtcGxhdGVzLgorICAgICAgICAgICAgfQorICAgICAgICB9OworICAgICAgICBQcm9jPEludGVnZXI+IHByb2NpID0gbmV3IFByb2M8SW50ZWdlcj4oKSB7CisgICAgICAgICAgICBwdWJsaWMgdm9pZCBmKEludGVnZXIgPGNhcmV0PnMpIHsKKyAgICAgICAgICAgICAgICAvL1RvIGNoYW5nZSBib2R5IG9mIGltcGxlbWVudGVkIG1ldGhvZHMgdXNlIEZpbGUgfCBTZXR0aW5ncyB8IEZpbGUgVGVtcGxhdGVzLgorICAgICAgICAgICAgfQorICAgICAgICB9OworCisgICAgICAgIHByb2NzLmYoIiIpOworICAgICAgICBwcm9jaS5mKDxmbG93bjE+MCk7CisgICAgfQorfQorCitpbnRlcmZhY2UgUHJvYzxUPiB7CisgICAgICB2b2lkIGYoVCB0KTsKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9zbGljZS9iYWNrd2FyZC9HZW5lcmljc1N1YnN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvc2xpY2UvYmFja3dhcmQvR2VuZXJpY3NTdWJzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM0NDAxNDkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvc2xpY2UvYmFja3dhcmQvR2VuZXJpY3NTdWJzdC5qYXZhCkBAIC0wLDAgKzEsMjggQEAKK2ltcG9ydCBqYXZhLnV0aWwuTWFwOworCitjbGFzcyBNPFgsIFk+IHsKKyAgICBNYXA8WCwgWT4gbTsKKyAgICBZIHk7CisKKyAgICBwdWJsaWMgTShNYXA8WCwgWT4gbSwgWSB5KSB7CisgICAgICAgIHRoaXMubSA9IG07CisgICAgICAgIHRoaXMueSA9IDxmbG93bjExMTExPnk7CisgICAgfQorCisgICAgcHVibGljIHN0YXRpYyA8TVgsIE1ZPiBNPE1YLCBNWT4gbWFrZU0oTVkgeSkgeworICAgICAgICByZXR1cm4gbmV3IE08TVgsIE1ZPihudWxsLCA8Zmxvd24xMTExMTE+eSk7CisgICAgfQorCisgICAgWSBnZXQoWCB4KSB7CisgICAgICAgIFkgcmVzID0gPGZsb3duMTExMjE+bS5nZXQoeCk7CisgICAgICAgIHJldHVybiA8Zmxvd24xMTE+cmVzID09IG51bGwgPyA8Zmxvd24xMTExPnkgOiA8Zmxvd24xMTEyPnJlczsKKyAgICB9CisKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgZygpIHsKKyAgICAgICAgU3RyaW5nIDxjYXJldD5hID0gPGZsb3duMT5mKE0uPFN0cmluZywgU3RyaW5nPm1ha2VNKDxmbG93bjExMTExMTE+ImEiKSwgImsiKTsKKyAgICB9CisKKyAgICBwdWJsaWMgc3RhdGljIDxBPiBBIGYoTTxBLCBBPiBhLCBBIGthKSB7CisgICAgICAgIHJldHVybiA8Zmxvd24xMT5hLmdldChrYSk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9zbGljZS9iYWNrd2FyZC9JbnRlck1ldGhvZC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L3NsaWNlL2JhY2t3YXJkL0ludGVyTWV0aG9kLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGVlMTNhNQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9zbGljZS9iYWNrd2FyZC9JbnRlck1ldGhvZC5qYXZhCkBAIC0wLDAgKzEsMjQgQEAKK3B1YmxpYyBjbGFzcyBXVyB7CisgICAgdm9pZCBmKFN0cmluZyBkZGQpIHsKKyAgICAgICAgaWYgKGhhc2hDb2RlKCkgPT0gMCkKKyAgICAgICAgICAgIGRkZCA9IDxmbG93bjExMTE+ImRkIjsKKyAgICAgICAgZm9vKDxmbG93bjExMT5kZGQpOworICAgIH0KKworICAgIHsKKyAgICAgICAgZig8Zmxvd24xMTEyPiJ4eHgiKTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIHgoPGZsb3duMTEyMT4ienp6Iik7CisgICAgfQorCisgICAgU3RyaW5nIHgoU3RyaW5nIGcpIHsKKyAgICAgICAgU3RyaW5nIGQgPSA8Zmxvd24xPmZvbyg8Zmxvd24xMTI+Zyk7CisgICAgICAgIHJldHVybiA8Y2FyZXQ+ZDsKKyAgICB9CisKKyAgICBwcml2YXRlIFN0cmluZyBmb28oU3RyaW5nIGkpIHsKKyAgICAgICAgcmV0dXJuIDxmbG93bjExPmk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L3NsaWNlL2JhY2t3YXJkL0xvY2FsVmFyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvc2xpY2UvYmFja3dhcmQvTG9jYWxWYXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MTc0N2JjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L3NsaWNlL2JhY2t3YXJkL0xvY2FsVmFyLmphdmEKQEAgLTAsMCArMSw2IEBACitjbGFzcyBTIHsKKyBTdHJpbmcgeChTdHJpbmcgZykgeworICBTdHJpbmcgZCA9IChTdHJpbmcpKDxmbG93bjE+Zyk7CisgIHJldHVybiA8Y2FyZXQ+ZDsKKyB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvc2xpY2UvYmFja3dhcmQvTWV0aG9kQ2FsbC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L3NsaWNlL2JhY2t3YXJkL01ldGhvZENhbGwuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zM2QwN2QxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L3NsaWNlL2JhY2t3YXJkL01ldGhvZENhbGwuamF2YQpAQCAtMCwwICsxLDkgQEAKK2NsYXNzIFQyIHsKKyAgICB2b2lkIGYoKSB7CisgICAgICAgIGludCBpID0gPGNhcmV0PngoKTsKKyAgICB9CisKKyAgICBwcml2YXRlIGludCB4KCkgeworICAgICAgICByZXR1cm4gPGZsb3duMT4wOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvc2xpY2UvYmFja3dhcmQvTWV0aG9kUmV0dXJuLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvc2xpY2UvYmFja3dhcmQvTWV0aG9kUmV0dXJuLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWMzYWZjYgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9zbGljZS9iYWNrd2FyZC9NZXRob2RSZXR1cm4uamF2YQpAQCAtMCwwICsxLDI3IEBACisKK2NsYXNzIHMgeworICAgIHsKKyAgICAgIHgoPGZsb3duMTIxMT4ieHh4Iik7CisgICAgfQorICAgIFN0cmluZyB4KFN0cmluZyBnKSB7CisgICAgICAgIFN0cmluZyBkID0gPGZsb3duMT5mb28oPGZsb3duMTIxPmcpOworICAgICAgICByZXR1cm4gPGNhcmV0PmQ7CisgICAgfQorCisgICAgcHJpdmF0ZSBTdHJpbmcgZm9vKFN0cmluZyBpKSB7CisgICAgICAgIGlmIChpPT1udWxsKSB7CisgICAgICAgICAgICBuZXcgQ2FsbGFibGU8U3RyaW5nPigpeworICAgICAgICAgICAgICAgIHB1YmxpYyBTdHJpbmcgY2FsbCgpIHRocm93cyBFeGNlcHRpb24geworICAgICAgICAgICAgICAgICAgICByZXR1cm4gInh4eHh4eHh4eCI7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfTsKKyAgICAgICAgICAgIHJldHVybiA8Zmxvd24xMT5udWxsOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgcmV0dXJuIDxmbG93bjEyPmk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK2ludGVyZmFjZSBDYWxsYWJsZTxWPiB7CisgICAgViBjYWxsKCkgdGhyb3dzIEV4Y2VwdGlvbjsKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9zbGljZS9iYWNrd2FyZC9OdWxscy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L3NsaWNlL2JhY2t3YXJkL051bGxzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTQ3MzhmMgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9zbGljZS9iYWNrd2FyZC9OdWxscy5qYXZhCkBAIC0wLDAgKzEsNTcgQEAKK2ltcG9ydCBvcmcuamV0YnJhaW5zLmFubm90YXRpb25zLk5vdE51bGw7CitpbXBvcnQgb3JnLmpldGJyYWlucy5hbm5vdGF0aW9ucy5OdWxsYWJsZTsKKworcHVibGljIGNsYXNzIFggIHsKKyAgICBwcml2YXRlIGZpbmFsIHN0YXRpYyBTdHJpbmcgQ09OID0gIiI7CisgICAgU3RyaW5nIDxjYXJldD5sOworICAgIHByaXZhdGUgU3RyaW5nIGQ7CisKKyAgICBwdWJsaWMgWChTdHJpbmcgZykgeworICAgICAgICBzZXQoInh4eCIpOworICAgICAgICBzZXQoZyk7CisgICAgICAgIGZzKCJvbyIsIHRoaXMpOworCisgICAgICAgIFN0cmluZyBvID0gKFN0cmluZykoKG51bGwpKTsKKyAgICAgICAgc2V0KG8pOworCisgICAgICAgIHNldChuZXcgU3RyaW5nKCkpOworICAgICAgICBzZXQobm4oKSk7CisgICAgICAgIHNldChDT04pOworICAgICAgICBTdHJpbmcgbm4gPSBnID09IG51bGwgPyBDT04gOiBnOworICAgICAgICBzZXQobm4pOworCisgICAgICAgIFN0cmluZyBvdGhlciA9IGcgPT0gIiIgPyBDT04gOiBnOworICAgICAgICBzZXQob3RoZXIpOworCisgICAgICAgIGcuaGFzaENvZGUoKTsgLy8gZyBkZXJlZmVybmNlZCBiZWZvcmUgdXNlLCBtdXN0IGJlIE5OCisgICAgICAgIHNldChnKTsKKworICAgICAgICBzZXQobnUoKSk7CisgICAgICAgIHNldChoeigpKTsKKyAgICB9CisKKyAgICBATm90TnVsbAorICAgIFN0cmluZyBubigpIHsKKyAgICAgICAgcmV0dXJuICIiOworICAgIH0KKyAgICBATnVsbGFibGUKKyAgICBTdHJpbmcgbnUoKSB7CisgICAgICAgIHJldHVybiAiIjsKKyAgICB9CisgICAgU3RyaW5nIGh6KCkgeworICAgICAgICByZXR1cm4gZDsKKyAgICB9CisgICAgdm9pZCBmcyhATnVsbGFibGUgU3RyaW5nIHQsIFggeCkKKyAgICB7CisgICAgICAgIHguc2V0KHQpOworCisgICAgICAgIHguc2V0KHQgPT0gbnVsbCA/ICJudWxsIiA6IHQpOworICAgIH0KKworICAgIHZvaWQgc2V0KFN0cmluZyBkKSB7CisgICAgICAgIGwgPSBkOworICAgIH0KKyAgICB2b2lkIHNldEZyb21OTihATm90TnVsbCBTdHJpbmcgZCkgeworICAgICAgICBsID0gZDsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvc2xpY2UvYmFja3dhcmQvT3ZlcmxvYWRDb25zdHJ1Y3Rvci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L3NsaWNlL2JhY2t3YXJkL092ZXJsb2FkQ29uc3RydWN0b3IuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZTBlOTBhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L3NsaWNlL2JhY2t3YXJkL092ZXJsb2FkQ29uc3RydWN0b3IuamF2YQpAQCAtMCwwICsxLDE3IEBACitpbXBvcnQgamF2YS51dGlsLio7CisKK3B1YmxpYyBjbGFzcyAgQXV0byB7CisgICAgcHVibGljIEF1dG8oQXJyYXlMaXN0IHcsIFJ1bm5hYmxlIDxjYXJldD5pKSB7CisgICAgICAgIHRoaXModywgbnVsbCxudWxsKTsKKyAgICB9CisgICAgcHVibGljIEF1dG8oQXJyYXlMaXN0IHcsIFJ1bm5hYmxlICBpLFJ1bm5hYmxlIG8pIHsKKyAgICAgICAgby5oYXNoQ29kZSgpOworICAgIH0KKworICAgIHsKKworICAgICAgICBuZXcgQXV0byhudWxsLG51bGwsbnVsbCk7CisgICAgICAgIG5ldyBBdXRvKG51bGwsPGZsb3duMT5udWxsKTsKKyAgICB9CisKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9zbGljZS9iYWNrd2FyZC9PdmVycmlkZXMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9zbGljZS9iYWNrd2FyZC9PdmVycmlkZXMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZDc1ZWVjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L3NsaWNlL2JhY2t3YXJkL092ZXJyaWRlcy5qYXZhCkBAIC0wLDAgKzEsMjIgQEAKK3B1YmxpYyBjbGFzcyBPdmVycmlkZVNsaWNlIHsKKyAgICBpbnRlcmZhY2UgSSB7CisgICAgICAgIGludCBmKGludCBpKTsKKyAgICB9CisgICAgY2xhc3MgTyBpbXBsZW1lbnRzIEkgeworICAgICAgICBwdWJsaWMgaW50IGYoaW50IGkpIHsKKyAgICAgICAgICAgIHJldHVybiA8Zmxvd24xMT5pOworICAgICAgICB9CisgICAgfQorICAgIGNsYXNzIE8wIGltcGxlbWVudHMgSSB7CisgICAgICAgIHB1YmxpYyBpbnQgZihpbnQgaSkgeworICAgICAgICAgICAgcmV0dXJuIDxmbG93bjEyPjA7CisgICAgICAgIH0KKyAgICB9CisKKyAgICB7CisgICAgICAgIGYoPGZsb3duMTExMT4xLCBuZXcgTygpKTsKKyAgICB9CisgICAgdm9pZCBmKGludCBjLCBJIGkpIHsKKyAgICAgICAgaW50IDxjYXJldD54ID0gPGZsb3duMT5pLmYoPGZsb3duMTExPmMpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9zbGljZS9iYWNrd2FyZC9Qb3N0Zml4LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvc2xpY2UvYmFja3dhcmQvUG9zdGZpeC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNmNWZmODcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvc2xpY2UvYmFja3dhcmQvUG9zdGZpeC5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKK2NsYXNzIEluY3JEZWNySWdub3JlIHsKKwlpbnQgPGNhcmV0PmkgPSA8Zmxvd24xPjA7CisKKwlpbnQgaW5jcigpIHsKKwkJcmV0dXJuIDxmbG93bjI+aSsrOworCX0KKwlpbnQgZGVjcigpIHsKKwkJcmV0dXJuIDxmbG93bjM+LS1pOworCX0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvc2xpY2UvYmFja3dhcmQvU2ltcGxlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvc2xpY2UvYmFja3dhcmQvU2ltcGxlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjFlYTcwMWYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvc2xpY2UvYmFja3dhcmQvU2ltcGxlLmphdmEKQEAgLTAsMCArMSwxMCBAQAorY2xhc3MgV1cgeworeyBTdHJpbmcgZGRkOworICBkZGQgPSBmb28oPGZsb3duMT4xKTsKK30gICAgICAgICAgICAgICAgIAorCitwcml2YXRlIFN0cmluZyBmb28oaW50IGkpIHsKKyAgcmV0dXJuIDxjYXJldD5pKyIiOworfQorCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L3NsaWNlL2JhY2t3YXJkL1R1cGxlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvc2xpY2UvYmFja3dhcmQvVHVwbGUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ODkxMzViCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L3NsaWNlL2JhY2t3YXJkL1R1cGxlLmphdmEKQEAgLTAsMCArMSwxNCBAQAorY2xhc3MgVHVwbGU8WCxZPiB7CisgICAgcHVibGljIGZpbmFsIFggeDsKKyAgICBwdWJsaWMgZmluYWwgWSB5OworICAgIHB1YmxpYyBUdXBsZShYIHgsWSB5KSB7dGhpcy54PXg7IHRoaXMueT15O30KKworICAgIHB1YmxpYyBYIGdldFgoKSB7CisgICAgICAgIHJldHVybiA8Y2FyZXQ+eDsKKyAgICB9CisKKyAgICBwcml2YXRlIHN0YXRpYyA8WCxZPiBUdXBsZTxYLFk+IGNvcHkoVHVwbGU8WCxZPiB0KSB7CisgICAgICAgIHJldHVybiBuZXcgVHVwbGU8WCxZPih0LngsIHQueSk7CisgICAgfQorCit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvc2xpY2UvYmFja3dhcmQvVHlwZUF3YXJlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvc2xpY2UvYmFja3dhcmQvVHlwZUF3YXJlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmQ4NTdhZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9zbGljZS9iYWNrd2FyZC9UeXBlQXdhcmUuamF2YQpAQCAtMCwwICsxLDE3IEBACitjbGFzcyBBIHsKKyAgICBwcml2YXRlIHN0YXRpYyBjbGFzcyBUdXBsZTxYLFk+IHsKKyAgICAgICAgcHVibGljIGZpbmFsIFggeDsKKyAgICAgICAgcHVibGljIGZpbmFsIFkgeTsKKyAgICAgICAgcHVibGljIFR1cGxlKFggeCxZIHkpIHt0aGlzLng9PGZsb3duMTE+eDsgdGhpcy55PXk7fQorICAgIH0KKworICAgIHByaXZhdGUgc3RhdGljIGNsYXNzIEZvbyB7CisgICAgICAgIHZvaWQgZigpIHsKKyAgICAgICAgICAgIFR1cGxlPEludGVnZXIsSW50ZWdlcj4gdDEgPSBuZXcgVHVwbGU8SW50ZWdlcixJbnRlZ2VyPigxLDIpOworICAgICAgICAgICAgVHVwbGU8U3RyaW5nLFN0cmluZz4gdDIgPSBuZXcgVHVwbGU8U3RyaW5nLFN0cmluZz4oPGZsb3duMTExPiJhIiwiYiIpOworICAgICAgICAgICAgVHVwbGU8Rm9vLEZvbz4gdDJ3ID0gbmV3IFR1cGxlPEZvbyxGb28+KG51bGwsbnVsbCk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIFN0cmluZyA8Y2FyZXQ+eCA9IHQyLjxmbG93bjE+eDsKKyAgICAgICAgfQorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvc2xpY2UvYmFja3dhcmQvVHlwZUF3YXJlMi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L3NsaWNlL2JhY2t3YXJkL1R5cGVBd2FyZTIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZmI0ZjhiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L3NsaWNlL2JhY2t3YXJkL1R5cGVBd2FyZTIuamF2YQpAQCAtMCwwICsxLDE1IEBACitjbGFzcyBBIHsKKyAgICBwcml2YXRlIHN0YXRpYyBjbGFzcyBUdXBsZTxYLFk+IHsKKyAgICAgICAgcHVibGljIGZpbmFsIFggPGNhcmV0Png7CisgICAgICAgIHB1YmxpYyBmaW5hbCBZIHk7CisgICAgICAgIHB1YmxpYyBUdXBsZShYIHgsWSB5KSB7dGhpcy54PTxmbG93bjE+eDsgdGhpcy55PXk7fQorICAgIH0KKworICAgIHByaXZhdGUgc3RhdGljIGNsYXNzIEZvbyB7CisgICAgICAgIHZvaWQgZigpIHsKKyAgICAgICAgICAgIFR1cGxlPEludGVnZXIsSW50ZWdlcj4gdDEgPSBuZXcgVHVwbGU8SW50ZWdlcixJbnRlZ2VyPig8Zmxvd24xMT4xLDIpOworICAgICAgICAgICAgVHVwbGU8U3RyaW5nLFN0cmluZz4gdDIgPSBuZXcgVHVwbGU8U3RyaW5nLFN0cmluZz4oPGZsb3duMTI+ImEiLCJiIik7CisgICAgICAgICAgICBTdHJpbmcgeCA9IHQyLng7CisgICAgICAgIH0KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L3NsaWNlL2JhY2t3YXJkL1R5cGVFcmFzZWQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9zbGljZS9iYWNrd2FyZC9UeXBlRXJhc2VkLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjFkNGJjMwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9zbGljZS9iYWNrd2FyZC9UeXBlRXJhc2VkLmphdmEKQEAgLTAsMCArMSwxNCBAQAorY2xhc3MgQSB7CisgICAgcHJpdmF0ZSBzdGF0aWMgY2xhc3MgVHVwbGU8WCxZPiB7CisgICAgICAgIHB1YmxpYyBmaW5hbCBYIHg7CisgICAgICAgIHB1YmxpYyBmaW5hbCBZIHk7CisgICAgICAgIHB1YmxpYyBUdXBsZShYIHgsWSB5KSB7dGhpcy54PTxmbG93bjExPng7IHRoaXMueT15O30KKyAgICB9CisKKyAgICBwcml2YXRlIHN0YXRpYyBjbGFzcyBGb28geworICAgICAgICB2b2lkIGYyKFR1cGxlPFN0cmluZywgU3RyaW5nPiB0MncpIHsKKyAgICAgICAgICAgIFR1cGxlIHQyID0gbmV3IFR1cGxlKDEsMik7CisgICAgICAgICAgICBTdHJpbmcgPGNhcmV0PnggPSB0MncuPGZsb3duMT54OworICAgICAgICB9CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9zbGljZS9iYWNrd2FyZC9WYXJVc2UuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9zbGljZS9iYWNrd2FyZC9WYXJVc2UuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YmFkMTk4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L3NsaWNlL2JhY2t3YXJkL1ZhclVzZS5qYXZhCkBAIC0wLDAgKzEsMTYgQEAKK2NsYXNzIFMgeworICAgIHByaXZhdGUgU3RyaW5nIGZvbyA9IDxmbG93bjExPiJ4eHgiOworCisgICAgeworICAgICAgICBTdHJpbmcgYmFyID0gPGZsb3duMT5mb287CisgICAgICAgIGlmIChiYXIuZXF1YWxzKCJhIikpIHsKKyAgICAgICAgfSBlbHNlIGlmIChiYXIuZXF1YWxzKCJiIikpIHsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChiYXIuZXF1YWxzKCJjIikpIHsKKyAgICAgICAgICAgIGJhciA9IDxmbG93bjI+IiI7CisgICAgICAgIH0KKworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oImJhcjogIiArIDxjYXJldD5iYXIpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvc2xpY2UvYmFja3dhcmQvVmlhUGFyYW1ldGVyaXplZE1ldGhvZHMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9zbGljZS9iYWNrd2FyZC9WaWFQYXJhbWV0ZXJpemVkTWV0aG9kcy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdjMjBkM2UKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvc2xpY2UvYmFja3dhcmQvVmlhUGFyYW1ldGVyaXplZE1ldGhvZHMuamF2YQpAQCAtMCwwICsxLDE5IEBACitjbGFzcyBBIHsKKyAgICBwcml2YXRlIHN0YXRpYyBjbGFzcyBUdXBsZTxYLFk+IHsKKyAgICAgICAgcHVibGljIGZpbmFsIFggeDsKKyAgICAgICAgcHVibGljIGZpbmFsIFkgeTsKKyAgICAgICAgcHVibGljIFR1cGxlKFggeCxZIHkpIHt0aGlzLng9PGZsb3duMTE+eDsgdGhpcy55PXk7fQorICAgICAgICBwdWJsaWMgc3RhdGljIDxYMSxZMT4gVHVwbGU8WDEsWTE+IGNyZWF0ZShYMSB4LCBZMSB5KSB7CisgICAgICAgICAgICByZXR1cm4gbmV3IFR1cGxlPFgxLFkxPig8Zmxvd24xMTE+eCwgeSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwcml2YXRlIHN0YXRpYyBjbGFzcyBGb28geworICAgICAgICB2b2lkIGYoKSB7CisgICAgICAgICAgICBUdXBsZTxTdHJpbmcsU3RyaW5nPiB0ID0gVHVwbGUuY3JlYXRlKDxmbG93bjExMTE+IiIsIiIpOworICAgICAgICAgICAgVHVwbGU8T2JqZWN0LE9iamVjdD4gdDIgPSBUdXBsZS5jcmVhdGUoKE9iamVjdCkgIiIsKE9iamVjdCkgIiIpOworCisgICAgICAgICAgICBTdHJpbmcgPGNhcmV0PnggPSB0LjxmbG93bjE+eDsKKyAgICAgICAgfQorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvc2xpY2UvYmFja3dhcmQvV2VpcmRDYXJldFBvc2l0aW9uLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvc2xpY2UvYmFja3dhcmQvV2VpcmRDYXJldFBvc2l0aW9uLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2UyMWNhNAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9zbGljZS9iYWNrd2FyZC9XZWlyZENhcmV0UG9zaXRpb24uamF2YQpAQCAtMCwwICsxLDI5IEBACitjbGFzcyBGb28geworICAgIHByaXZhdGUgc3RhdGljIE15RW51bSBzdGF0aWNNeUVudW0gPSBNeUVudW0uPGZsb3duMTE+QkFSOworCisgICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgeworICAgICAgICBwcm9kdWNlKCk7CisgICAgfQorCisgICAgc3RhdGljIHZvaWQgcHJvZHVjZSgpIHsKKyAgICAgICAgcHJvZHVjZSg8Zmxvd24xPnN0YXRpY015RW51bSk7CisgICAgfQorCisgICAgc3RhdGljIHZvaWQgcHJvZHVjZShNeUVudW0gbXlFbnVtKSB7CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigibXlFbnVtOiAiICsgbXlFbnVtPGNhcmV0Pik7CisgICAgfQorCisgICAgc3RhdGljIHZvaWQgZigpIHsKKyAgICAgICAgc3RhdGljTXlFbnVtID0gTXlFbnVtLjxmbG93bjEyPkJBWjsKKyAgICB9CisKKyAgICBzdGF0aWMgdm9pZCBnKCkgeworICAgICAgICBzdGF0aWNNeUVudW0gPSBNeUVudW0uPGZsb3duMTM+Rk9POworICAgIH0KKworICAgIGVudW0gTXlFbnVtIHsKKyAgICAgICAgRk9PLAorICAgICAgICBCQVIsCisgICAgICAgIEJBWgorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvc2xpY2UvZm9yd2FyZC9JbnRlck1ldGhvZC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L3NsaWNlL2ZvcndhcmQvSW50ZXJNZXRob2QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZDcyM2JjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L3NsaWNlL2ZvcndhcmQvSW50ZXJNZXRob2QuamF2YQpAQCAtMCwwICsxLDI4IEBACitwdWJsaWMgY2xhc3MgVDIgeworICAgIGludCA8Y2FyZXQ+ZmZmOworCisgICAgcHVibGljIFQyKGludCBpKSB7CisgICAgICAgIGZmZiA9IGk7CisgICAgfQorCisgICAgcHVibGljIGludCA8Zmxvd24xMT5nZXRGZmYoKSB7CisgICAgICAgIHJldHVybiA8Zmxvd24xPmZmZjsKKyAgICB9CisKKyAgICB2b2lkIGYoaW50IGkyKSB7CisvLyAgICAgICAgZmZmPWkyOworICAgICAgICBwKDxmbG93bjExMT5nZXRGZmYoKSk7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgcChpbnQgPGZsb3duMTExMT5pKSB7CisgICAgICAgIG5ldyBGKDxmbG93bjExMTExPmkpOworICAgIH0KKworICAgIHByaXZhdGUgY2xhc3MgRiB7CisgICAgICAgIHByaXZhdGUgaW50IDxmbG93bjExMTExMTExPnhzczsKKworICAgICAgICBwdWJsaWMgRihpbnQgPGZsb3duMTExMTExPmkpIHsKKyAgICAgICAgICAgIHhzcyA9IDxmbG93bjExMTExMTE+aTsKKyAgICAgICAgfQorICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9zbGljZS9mb3J3YXJkL1BhcmFtZXRlcnMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9zbGljZS9mb3J3YXJkL1BhcmFtZXRlcnMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xN2I5YjVjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L3NsaWNlL2ZvcndhcmQvUGFyYW1ldGVycy5qYXZhCkBAIC0wLDAgKzEsNjYgQEAKK2ltcG9ydCBqYXZhLnV0aWwuKjsKKworY2xhc3MgWCB7CitjbGFzcyBNeU1hcCBpbXBsZW1lbnRzIE1hcCB7CisgICAgcHVibGljIGludCBzaXplKCkgeworICAgICAgICByZXR1cm4gMDsgIC8vVG8gY2hhbmdlIGJvZHkgb2YgaW1wbGVtZW50ZWQgbWV0aG9kcyB1c2UgRmlsZSB8IFNldHRpbmdzIHwgRmlsZSBUZW1wbGF0ZXMuCisgICAgfQorCisgICAgcHVibGljIGJvb2xlYW4gaXNFbXB0eSgpIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOyAgLy9UbyBjaGFuZ2UgYm9keSBvZiBpbXBsZW1lbnRlZCBtZXRob2RzIHVzZSBGaWxlIHwgU2V0dGluZ3MgfCBGaWxlIFRlbXBsYXRlcy4KKyAgICB9CisKKyAgICBwdWJsaWMgYm9vbGVhbiBjb250YWluc0tleShPYmplY3Qga2V5KSB7CisgICAgICAgIHJldHVybiBmYWxzZTsgIC8vVG8gY2hhbmdlIGJvZHkgb2YgaW1wbGVtZW50ZWQgbWV0aG9kcyB1c2UgRmlsZSB8IFNldHRpbmdzIHwgRmlsZSBUZW1wbGF0ZXMuCisgICAgfQorCisgICAgcHVibGljIGJvb2xlYW4gY29udGFpbnNWYWx1ZShPYmplY3QgdmFsdWUpIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOyAgLy9UbyBjaGFuZ2UgYm9keSBvZiBpbXBsZW1lbnRlZCBtZXRob2RzIHVzZSBGaWxlIHwgU2V0dGluZ3MgfCBGaWxlIFRlbXBsYXRlcy4KKyAgICB9CisKKyAgICBwdWJsaWMgT2JqZWN0IGdldChPYmplY3QgPGZsb3duMTExMT5rZXkpIHsKKyAgICAgICAgcmV0dXJuIGtleS48Zmxvd24xMTExMT5nZXRDbGFzcygpOworICAgIH0KKworICAgIHB1YmxpYyBPYmplY3QgcHV0KE9iamVjdCBrZXksIE9iamVjdCB2YWx1ZSkgeworICAgICAgICByZXR1cm4gbnVsbDsgIC8vVG8gY2hhbmdlIGJvZHkgb2YgaW1wbGVtZW50ZWQgbWV0aG9kcyB1c2UgRmlsZSB8IFNldHRpbmdzIHwgRmlsZSBUZW1wbGF0ZXMuCisgICAgfQorCisgICAgcHVibGljIE9iamVjdCByZW1vdmUoT2JqZWN0IGtleSkgeworICAgICAgICByZXR1cm4gbnVsbDsgIC8vVG8gY2hhbmdlIGJvZHkgb2YgaW1wbGVtZW50ZWQgbWV0aG9kcyB1c2UgRmlsZSB8IFNldHRpbmdzIHwgRmlsZSBUZW1wbGF0ZXMuCisgICAgfQorCisgICAgcHVibGljIHZvaWQgcHV0QWxsKE1hcCBtKSB7CisgICAgICAgIC8vVG8gY2hhbmdlIGJvZHkgb2YgaW1wbGVtZW50ZWQgbWV0aG9kcyB1c2UgRmlsZSB8IFNldHRpbmdzIHwgRmlsZSBUZW1wbGF0ZXMuCisgICAgfQorCisgICAgcHVibGljIHZvaWQgY2xlYXIoKSB7CisgICAgICAgIC8vVG8gY2hhbmdlIGJvZHkgb2YgaW1wbGVtZW50ZWQgbWV0aG9kcyB1c2UgRmlsZSB8IFNldHRpbmdzIHwgRmlsZSBUZW1wbGF0ZXMuCisgICAgfQorCisgICAgcHVibGljIFNldCBrZXlTZXQoKSB7CisgICAgICAgIHJldHVybiBudWxsOyAgLy9UbyBjaGFuZ2UgYm9keSBvZiBpbXBsZW1lbnRlZCBtZXRob2RzIHVzZSBGaWxlIHwgU2V0dGluZ3MgfCBGaWxlIFRlbXBsYXRlcy4KKyAgICB9CisKKyAgICBwdWJsaWMgQ29sbGVjdGlvbiB2YWx1ZXMoKSB7CisgICAgICAgIHJldHVybiBudWxsOyAgLy9UbyBjaGFuZ2UgYm9keSBvZiBpbXBsZW1lbnRlZCBtZXRob2RzIHVzZSBGaWxlIHwgU2V0dGluZ3MgfCBGaWxlIFRlbXBsYXRlcy4KKyAgICB9CisKKyAgICBwdWJsaWMgU2V0IGVudHJ5U2V0KCkgeworICAgICAgICByZXR1cm4gbnVsbDsgIC8vVG8gY2hhbmdlIGJvZHkgb2YgaW1wbGVtZW50ZWQgbWV0aG9kcyB1c2UgRmlsZSB8IFNldHRpbmdzIHwgRmlsZSBUZW1wbGF0ZXMuCisgICAgfQorfQorCitwdWJsaWMgU3RyaW5nIGdldEVuY29kaW5nKCBpbnQgPGNhcmV0PnZpcnR1YWxGaWxlLCBib29sZWFuIHVzZVBhcmVudERlZmF1bHRzKSB7CisgICAgTWFwPEludGVnZXIsU3RyaW5nPiBteU1hcHBpbmcgPSBudWxsOworICBpbnQgPGZsb3duMTE+cGFyZW50ID0gPGZsb3duMT52aXJ0dWFsRmlsZTsKKyAgd2hpbGUgKHRydWUpIHsKKyAgICBTdHJpbmcgY2hhcnNldCA9IG15TWFwcGluZy5nZXQoPGZsb3duMTExPnBhcmVudCk7CisgICAgaWYgKGNoYXJzZXQgIT0gbnVsbCB8fCAhdXNlUGFyZW50RGVmYXVsdHMpIHJldHVybiBjaGFyc2V0OworICAgIGlmIChwYXJlbnQgPT0gMCkgYnJlYWs7CisgICAgcGFyZW50ID0gcGFyZW50LTE7CisgIH0KKyAgcmV0dXJuIG51bGw7Cit9CisKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvc2xpY2UvZm9yd2FyZC9TaW1wbGUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9zbGljZS9mb3J3YXJkL1NpbXBsZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEwNDliZWMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvc2xpY2UvZm9yd2FyZC9TaW1wbGUuamF2YQpAQCAtMCwwICsxLDMwIEBACisgcHVibGljIGNsYXNzIFQyIHsKKyAgICAgaW50IDxmbG93bjExMTExMT5mZmY7CisKKyAgICAgeworIC8vICAgICAgICBmKGZmZik7CisgICAgIH0KKworIHZvaWQgZihpbnQgPGNhcmV0PmkyKSB7CisgICAgIGludCBpID0gLTE7CisgICAgIGkgPSAwOworICAgICB0cnkgeyAgICAgICAgICAgLy8KKyAgICAgICAgIGkgPSAxOworICAgICAgICAgaWYgKGkyID09IDApIHsKKyAgICAgICAgICAgICBwKDxmbG93bjE+aTIpOy8vCisgICAgICAgICB9CisgICAgIH0KKyAgICAgY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CisKKyAgICAgfQorICAgICBmaW5hbGx5IHsKKyAgICAgICAgIGkgPSA5OworICAgICB9CisgfQorCisgICAgIHB1YmxpYyB2b2lkIHAoaW50IDxmbG93bjExPmkpIHsvLworIC8vICAgICAgICBmZmYgPSBpOworICAgICAgICAgaW50IDxmbG93bjExMTE+ZGRkID0gPGZsb3duMTExPmk7CisgICAgICAgICBmZmYgPTxmbG93bjExMTExPmRkZDsKKyAgICAgfQorIH0KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9zcGxpdElmQWN0aW9uL2FmdGVyMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L3NwbGl0SWZBY3Rpb24vYWZ0ZXIxLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWEwYTM0NwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9zcGxpdElmQWN0aW9uL2FmdGVyMS5qYXZhCkBAIC0wLDAgKzEsMTUgQEAKK2NsYXNzIEMgeworICAgIHZvaWQgZm9vKCkgeworICAgICAgICBpZiAoPGNhcmV0PmEpIHsKKyAgICAgICAgICAgIGlmIChiKSB7CisgICAgICAgICAgICAgICAgY2FsbCgpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgZG9udENhbGwoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGRvbnRDYWxsKCk7CisgICAgICAgIH0KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L3NwbGl0SWZBY3Rpb24vYWZ0ZXIyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvc3BsaXRJZkFjdGlvbi9hZnRlcjIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NjgwODIzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L3NwbGl0SWZBY3Rpb24vYWZ0ZXIyLmphdmEKQEAgLTAsMCArMSw5IEBACitjbGFzcyBDIHsKKyAgICB2b2lkIGZvbygpIHsKKyAgICAgICAgaWYgKDxjYXJldD5hKSB7CisgICAgICAgICAgICBpZiAoYikgeworICAgICAgICAgICAgICAgIGNhbGwoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvc3BsaXRJZkFjdGlvbi9hZnRlcjMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9zcGxpdElmQWN0aW9uL2FmdGVyMy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhjY2UxMDcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvc3BsaXRJZkFjdGlvbi9hZnRlcjMuamF2YQpAQCAtMCwwICsxLDkgQEAKK2NsYXNzIEMgeworICAgIHZvaWQgZm9vKCkgeworICAgICAgICBpZiAoPGNhcmV0PmEpIHsKKyAgICAgICAgICAgIGNhbGwoKTsKKyAgICAgICAgfSBlbHNlIGlmIChiKSB7CisgICAgICAgICAgICBjYWxsKCk7CisgICAgICAgIH0KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L3NwbGl0SWZBY3Rpb24vYWZ0ZXI0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvc3BsaXRJZkFjdGlvbi9hZnRlcjQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44Nzk3ZTdlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L3NwbGl0SWZBY3Rpb24vYWZ0ZXI0LmphdmEKQEAgLTAsMCArMSwxMSBAQAorY2xhc3MgQyB7CisgICAgdm9pZCBmb28oKSB7CisgICAgICAgIGlmICg8Y2FyZXQ+YSkgeworICAgICAgICAgICAgY2FsbCgpOworICAgICAgICB9IGVsc2UgaWYgKGIpIHsKKyAgICAgICAgICAgIGNhbGwoKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGRvbnRDYWxsKCk7CisgICAgICAgIH0KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L3NwbGl0SWZBY3Rpb24vYWZ0ZXI1LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvc3BsaXRJZkFjdGlvbi9hZnRlcjUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZTI4ZWUwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L3NwbGl0SWZBY3Rpb24vYWZ0ZXI1LmphdmEKQEAgLTAsMCArMSw5IEBACitjbGFzcyBDIHsKKyAgICB2b2lkIGZvbygpIHsKKyAgICAgICAgaWYgKDxjYXJldD5hICYmIGIpIHsKKyAgICAgICAgICAgIGlmIChjICYmIGQgJiYgZSkgeworICAgICAgICAgICAgICAgIGNhbGwoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvc3BsaXRJZkFjdGlvbi9hZnRlckNvbW1lbnQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9zcGxpdElmQWN0aW9uL2FmdGVyQ29tbWVudC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEyOTE1ODMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvc3BsaXRJZkFjdGlvbi9hZnRlckNvbW1lbnQuamF2YQpAQCAtMCwwICsxLDkgQEAKK2NsYXNzIEMgeworICAgIHZvaWQgZm9vKCkgeworICAgICAgICBpZiAoYSkgeworICAgICAgICAgICAgY2FsbCgpOworICAgICAgICB9IGVsc2UgaWYgKGIpIHsKKyAgICAgICAgICAgIGNhbGwoKTsKKyAgICAgICAgfQorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvc3BsaXRJZkFjdGlvbi9hZnRlck9yUGFyZW50aGVzaXMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9zcGxpdElmQWN0aW9uL2FmdGVyT3JQYXJlbnRoZXNpcy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEyOTE1ODMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvc3BsaXRJZkFjdGlvbi9hZnRlck9yUGFyZW50aGVzaXMuamF2YQpAQCAtMCwwICsxLDkgQEAKK2NsYXNzIEMgeworICAgIHZvaWQgZm9vKCkgeworICAgICAgICBpZiAoYSkgeworICAgICAgICAgICAgY2FsbCgpOworICAgICAgICB9IGVsc2UgaWYgKGIpIHsKKyAgICAgICAgICAgIGNhbGwoKTsKKyAgICAgICAgfQorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvc3BsaXRJZkFjdGlvbi9hZnRlclBhcmVudGhlc2lzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvc3BsaXRJZkFjdGlvbi9hZnRlclBhcmVudGhlc2lzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTkwMjBjZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9zcGxpdElmQWN0aW9uL2FmdGVyUGFyZW50aGVzaXMuamF2YQpAQCAtMCwwICsxLDkgQEAKK2NsYXNzIEMgeworICAgIHZvaWQgZm9vKCkgeworICAgICAgICBpZiAoYSkgeworICAgICAgICAgICAgaWYgKGIpIHsKKyAgICAgICAgICAgICAgICBjYWxsKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L3NwbGl0SWZBY3Rpb24vYmVmb3JlMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L3NwbGl0SWZBY3Rpb24vYmVmb3JlMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgxOTg0ZTkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvc3BsaXRJZkFjdGlvbi9iZWZvcmUxLmphdmEKQEAgLTAsMCArMSwxMCBAQAorY2xhc3MgQyB7CisgICAgdm9pZCBmb28oKSB7CisgICAgICAgIGlmIChhICY8Y2FyZXQ+JiBiKSB7CisgICAgICAgICAgICBjYWxsKCk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBkb250Q2FsbCgpOworICAgICAgICB9CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9zcGxpdElmQWN0aW9uL2JlZm9yZTIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9zcGxpdElmQWN0aW9uL2JlZm9yZTIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZGU1YjY4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L3NwbGl0SWZBY3Rpb24vYmVmb3JlMi5qYXZhCkBAIC0wLDAgKzEsNyBAQAorY2xhc3MgQyB7CisgICAgdm9pZCBmb28oKSB7CisgICAgICAgIGlmIChhICY8Y2FyZXQ+JiBiKSB7CisgICAgICAgICAgICBjYWxsKCk7CisgICAgICAgIH0KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L3NwbGl0SWZBY3Rpb24vYmVmb3JlMy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L3NwbGl0SWZBY3Rpb24vYmVmb3JlMy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE1OTFkNjEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvc3BsaXRJZkFjdGlvbi9iZWZvcmUzLmphdmEKQEAgLTAsMCArMSw3IEBACitjbGFzcyBDIHsKKyAgICB2b2lkIGZvbygpIHsKKyAgICAgICAgaWYgKGEgfDxjYXJldD58IGIpIHsKKyAgICAgICAgICAgIGNhbGwoKTsKKyAgICAgICAgfQorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvc3BsaXRJZkFjdGlvbi9iZWZvcmU0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvc3BsaXRJZkFjdGlvbi9iZWZvcmU0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzhkMGJhYQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9zcGxpdElmQWN0aW9uL2JlZm9yZTQuamF2YQpAQCAtMCwwICsxLDkgQEAKK2NsYXNzIEMgeworICAgIHZvaWQgZm9vKCkgeworICAgICAgICBpZiAoYSB8PGNhcmV0PnwgYikgeworICAgICAgICAgICAgY2FsbCgpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgZG9udENhbGwoKTsKKyAgICAgICAgfQorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvc3BsaXRJZkFjdGlvbi9iZWZvcmU1LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvc3BsaXRJZkFjdGlvbi9iZWZvcmU1LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDBlNTBmYwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9zcGxpdElmQWN0aW9uL2JlZm9yZTUuamF2YQpAQCAtMCwwICsxLDcgQEAKK2NsYXNzIEMgeworICAgIHZvaWQgZm9vKCkgeworICAgICAgICBpZiAoYSAmJiBiICY8Y2FyZXQ+JiBjICYmIGQgJiYgZSkgeworICAgICAgICAgICAgY2FsbCgpOworICAgICAgICB9CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9zcGxpdElmQWN0aW9uL2JlZm9yZUNvbW1lbnQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9zcGxpdElmQWN0aW9uL2JlZm9yZUNvbW1lbnQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYTczMjRmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L3NwbGl0SWZBY3Rpb24vYmVmb3JlQ29tbWVudC5qYXZhCkBAIC0wLDAgKzEsOCBAQAorY2xhc3MgQyB7CisgICAgdm9pZCBmb28oKSB7CisgICAgICAgIGlmIChhIHw8Y2FyZXQ+fCAvL2NvbW1lbnQgCisgICAgICAgICAgICBiKSB7CisgICAgICAgICAgICBjYWxsKCk7CisgICAgICAgIH0KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L3NwbGl0SWZBY3Rpb24vYmVmb3JlT3JBbmRNaXhlZC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L3NwbGl0SWZBY3Rpb24vYmVmb3JlT3JBbmRNaXhlZC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM4YTdkMDgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvc3BsaXRJZkFjdGlvbi9iZWZvcmVPckFuZE1peGVkLmphdmEKQEAgLTAsMCArMSw3IEBACitjbGFzcyBDIHsKKyAgICB2b2lkIGZvbygpIHsKKyAgICAgICAgaWYgKGEgfHwgYiAmPGNhcmV0PiYgYykgeworICAgICAgICAgICAgY2FsbCgpOworICAgICAgICB9CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9zcGxpdElmQWN0aW9uL2JlZm9yZU9yUGFyZW50aGVzaXMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9zcGxpdElmQWN0aW9uL2JlZm9yZU9yUGFyZW50aGVzaXMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMmM5YTdiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L3NwbGl0SWZBY3Rpb24vYmVmb3JlT3JQYXJlbnRoZXNpcy5qYXZhCkBAIC0wLDAgKzEsNyBAQAorY2xhc3MgQyB7CisgICAgdm9pZCBmb28oKSB7CisgICAgICAgIGlmICgoYSkgfDxjYXJldD58IChiKSkgeworICAgICAgICAgICAgY2FsbCgpOworICAgICAgICB9CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9zcGxpdElmQWN0aW9uL2JlZm9yZVBhcmVudGhlc2lzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvc3BsaXRJZkFjdGlvbi9iZWZvcmVQYXJlbnRoZXNpcy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRmYjYyMmE5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L3NwbGl0SWZBY3Rpb24vYmVmb3JlUGFyZW50aGVzaXMuamF2YQpAQCAtMCwwICsxLDcgQEAKK2NsYXNzIEMgeworICAgIHZvaWQgZm9vKCkgeworICAgICAgICBpZiAoKGEpICY8Y2FyZXQ+JiAoYikpIHsKKyAgICAgICAgICAgIGNhbGwoKTsKKyAgICAgICAgfQorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvc3Vycm91bmRBdXRvQ2xvc2VhYmxlL01peGVkVXNhZ2VzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvc3Vycm91bmRBdXRvQ2xvc2VhYmxlL01peGVkVXNhZ2VzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWM5ODM4YQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9zdXJyb3VuZEF1dG9DbG9zZWFibGUvTWl4ZWRVc2FnZXMuamF2YQpAQCAtMCwwICsxLDIyIEBACitpbXBvcnQgamF2YS5pby5GaWxlOworaW1wb3J0IGphdmEuaW8uRmlsZUlucHV0U3RyZWFtOworaW1wb3J0IGphdmEuaW8uSU9FeGNlcHRpb247CitpbXBvcnQgamF2YS51dGlsLkFycmF5czsKKworY2xhc3MgQyB7CisgICAgdm9pZCBtKEZpbGUgZmlsZSkgdGhyb3dzIElPRXhjZXB0aW9uIHsKKyAgICAgICAgPGNhcmV0PkZpbGVJbnB1dFN0cmVhbSBmaWxlSW5wdXRTdHJlYW0gPSBuZXcgRmlsZUlucHV0U3RyZWFtKGZpbGUpOworICAgICAgICBpbnQgcmVhZCwgbGVuID0gLTE7CisgICAgICAgIGJvb2xlYW4gZW1wdHkgPSB0cnVlOworICAgICAgICBkbyB7CisgICAgICAgICAgICByZWFkID0gZmlsZUlucHV0U3RyZWFtLnJlYWQoKTsKKyAgICAgICAgICAgIGNoYXJbXSBjaGFycyA9IENoYXJhY3Rlci50b0NoYXJzKHJlYWQpOworICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKHJlYWQgKyAiID0gIiArIEFycmF5cy50b1N0cmluZyhjaGFycykpOworICAgICAgICAgICAgKytsZW47CisgICAgICAgICAgICBlbXB0eSA9IGZhbHNlOworICAgICAgICB9CisgICAgICAgIHdoaWxlIChyZWFkICE9IC0xKTsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKGxlbik7CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihlbXB0eSk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L3N1cnJvdW5kQXV0b0Nsb3NlYWJsZS9NaXhlZFVzYWdlc19hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L3N1cnJvdW5kQXV0b0Nsb3NlYWJsZS9NaXhlZFVzYWdlc19hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZhMTkxNDE1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L3N1cnJvdW5kQXV0b0Nsb3NlYWJsZS9NaXhlZFVzYWdlc19hZnRlci5qYXZhCkBAIC0wLDAgKzEsMjYgQEAKK2ltcG9ydCBqYXZhLmlvLkZpbGU7CitpbXBvcnQgamF2YS5pby5GaWxlSW5wdXRTdHJlYW07CitpbXBvcnQgamF2YS5pby5JT0V4Y2VwdGlvbjsKK2ltcG9ydCBqYXZhLnV0aWwuQXJyYXlzOworCitjbGFzcyBDIHsKKyAgICB2b2lkIG0oRmlsZSBmaWxlKSB0aHJvd3MgSU9FeGNlcHRpb24geworICAgICAgICBpbnQgbGVuOworICAgICAgICBib29sZWFuIGVtcHR5OworICAgICAgICB0cnkgKEZpbGVJbnB1dFN0cmVhbSBmaWxlSW5wdXRTdHJlYW0gPSBuZXcgRmlsZUlucHV0U3RyZWFtKGZpbGUpKSB7CisgICAgICAgICAgICBpbnQgcmVhZDsKKyAgICAgICAgICAgIGxlbiA9IC0xOworICAgICAgICAgICAgZW1wdHkgPSB0cnVlOworICAgICAgICAgICAgZG8geworICAgICAgICAgICAgICAgIHJlYWQgPSBmaWxlSW5wdXRTdHJlYW0ucmVhZCgpOworICAgICAgICAgICAgICAgIGNoYXJbXSBjaGFycyA9IENoYXJhY3Rlci50b0NoYXJzKHJlYWQpOworICAgICAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihyZWFkICsgIiA9ICIgKyBBcnJheXMudG9TdHJpbmcoY2hhcnMpKTsKKyAgICAgICAgICAgICAgICArK2xlbjsKKyAgICAgICAgICAgICAgICBlbXB0eSA9IGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgd2hpbGUgKHJlYWQgIT0gLTEpOworICAgICAgICB9CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihsZW4pOworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oZW1wdHkpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9zdXJyb3VuZEF1dG9DbG9zZWFibGUvU2ltcGxlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvc3Vycm91bmRBdXRvQ2xvc2VhYmxlL1NpbXBsZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMzMDc1MDkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvc3Vycm91bmRBdXRvQ2xvc2VhYmxlL1NpbXBsZS5qYXZhCkBAIC0wLDAgKzEsMjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwMC0yMDEyIEpldEJyYWlucyBzLnIuby4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKK2ltcG9ydCBqYXZhLmlvLio7CitpbXBvcnQgamF2YS5uZXQuKjsKKworY2xhc3MgQyB7CisgICAgcHVibGljIHZvaWQgcmVhZChVUkxDb25uZWN0aW9uIGNvbm5lY3Rpb24pIHsKKyAgICAgICAgPGNhcmV0PklucHV0U3RyZWFtIHN0cmVhbSA9IGNvbm5lY3Rpb24uZ2V0SW5wdXRTdHJlYW0oKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L3N1cnJvdW5kQXV0b0Nsb3NlYWJsZS9TaW1wbGVfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9zdXJyb3VuZEF1dG9DbG9zZWFibGUvU2ltcGxlX2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGRjZGNmYgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9zdXJyb3VuZEF1dG9DbG9zZWFibGUvU2ltcGxlX2FmdGVyLmphdmEKQEAgLTAsMCArMSwyNSBAQAorLyoKKyAqIENvcHlyaWdodCAyMDAwLTIwMTIgSmV0QnJhaW5zIHMuci5vLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworaW1wb3J0IGphdmEuaW8uKjsKK2ltcG9ydCBqYXZhLm5ldC4qOworCitjbGFzcyBDIHsKKyAgICBwdWJsaWMgdm9pZCByZWFkKFVSTENvbm5lY3Rpb24gY29ubmVjdGlvbikgeworICAgICAgICB0cnkgKElucHV0U3RyZWFtIHN0cmVhbSA9IGNvbm5lY3Rpb24uZ2V0SW5wdXRTdHJlYW0oKSkgezxjYXJldD4KKyAgICAgICAgfQorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvc3Vycm91bmRBdXRvQ2xvc2VhYmxlL1VzYWdlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvc3Vycm91bmRBdXRvQ2xvc2VhYmxlL1VzYWdlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjM0YmVkYQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9zdXJyb3VuZEF1dG9DbG9zZWFibGUvVXNhZ2UuamF2YQpAQCAtMCwwICsxLDE1IEBACitpbXBvcnQgamF2YS5pby5GaWxlOworaW1wb3J0IGphdmEuaW8uRmlsZUlucHV0U3RyZWFtOworaW1wb3J0IGphdmEuaW8uSU9FeGNlcHRpb247CisKK2NsYXNzIEMgeworICAgIHZvaWQgbShGaWxlIGZpbGUpIHRocm93cyBJT0V4Y2VwdGlvbiB7CisgICAgICAgIDxjYXJldD5GaWxlSW5wdXRTdHJlYW0gZmlsZUlucHV0U3RyZWFtID0gbmV3IEZpbGVJbnB1dFN0cmVhbShmaWxlKTsKKyAgICAgICAgaW50IHJlYWQ7CisgICAgICAgIGRvIHsKKyAgICAgICAgICAgIHJlYWQgPSBmaWxlSW5wdXRTdHJlYW0ucmVhZCgpOworICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKHJlYWQpOworICAgICAgICB9CisgICAgICAgIHdoaWxlIChyZWFkICE9IC0xKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvc3Vycm91bmRBdXRvQ2xvc2VhYmxlL1VzYWdlX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvc3Vycm91bmRBdXRvQ2xvc2VhYmxlL1VzYWdlX2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDU4ZTMzMQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC9zdXJyb3VuZEF1dG9DbG9zZWFibGUvVXNhZ2VfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDE2IEBACitpbXBvcnQgamF2YS5pby5GaWxlOworaW1wb3J0IGphdmEuaW8uRmlsZUlucHV0U3RyZWFtOworaW1wb3J0IGphdmEuaW8uSU9FeGNlcHRpb247CisKK2NsYXNzIEMgeworICAgIHZvaWQgbShGaWxlIGZpbGUpIHRocm93cyBJT0V4Y2VwdGlvbiB7CisgICAgICAgIHRyeSAoRmlsZUlucHV0U3RyZWFtIGZpbGVJbnB1dFN0cmVhbSA9IG5ldyBGaWxlSW5wdXRTdHJlYW0oZmlsZSkpIHsKKyAgICAgICAgICAgIGludCByZWFkOworICAgICAgICAgICAgZG8geworICAgICAgICAgICAgICAgIHJlYWQgPSBmaWxlSW5wdXRTdHJlYW0ucmVhZCgpOworICAgICAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihyZWFkKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHdoaWxlIChyZWFkICE9IC0xKTsKKyAgICAgICAgfQorICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC90ZW1wbGF0ZS9BbGxvd1R5cGluZ1JhbmRvbUV4cHJlc3Npb25zV2l0aExvb2t1cE9wZW4tb3V0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvdGVtcGxhdGUvQWxsb3dUeXBpbmdSYW5kb21FeHByZXNzaW9uc1dpdGhMb29rdXBPcGVuLW91dC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE3NjAxMjUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvdGVtcGxhdGUvQWxsb3dUeXBpbmdSYW5kb21FeHByZXNzaW9uc1dpdGhMb29rdXBPcGVuLW91dC5qYXZhCkBAIC0wLDAgKzEsMTEgQEAKK2ltcG9ydCBqYXZhLmlvLkZpbGU7CitpbXBvcnQgamF2YS5sYW5nLk9iamVjdDsKK2ltcG9ydCBqYXZhLnV0aWwuTWFwOworCitjbGFzcyBGb28geworICAgIHZvaWQgZm9vKE1hcDxGaWxlLCBPYmplY3Q+IGZpbGVzLCBGaWxlIGZpbGUsIE9iamVjdCBmaWx4KSB7CisgICAgICAgIGZvciAoRmlsZSBmaWxlMSA6IGZpbGUuPGNhcmV0PikgeworICAgICAgICAgICAgCisgICAgICAgIH0KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L3RlbXBsYXRlL0FsbG93VHlwaW5nUmFuZG9tRXhwcmVzc2lvbnNXaXRoTG9va3VwT3Blbi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L3RlbXBsYXRlL0FsbG93VHlwaW5nUmFuZG9tRXhwcmVzc2lvbnNXaXRoTG9va3VwT3Blbi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI1OTM4MzEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvdGVtcGxhdGUvQWxsb3dUeXBpbmdSYW5kb21FeHByZXNzaW9uc1dpdGhMb29rdXBPcGVuLmphdmEKQEAgLTAsMCArMSw5IEBACitpbXBvcnQgamF2YS5pby5GaWxlOworaW1wb3J0IGphdmEubGFuZy5PYmplY3Q7CitpbXBvcnQgamF2YS51dGlsLk1hcDsKKworY2xhc3MgRm9vIHsKKyAgICB2b2lkIGZvbyhNYXA8RmlsZSwgT2JqZWN0PiBmaWxlcywgRmlsZSBmaWxlLCBPYmplY3QgZmlseCkgeworICAgICAgPGNhcmV0PgorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvdGVtcGxhdGUvQXNMaXN0VG9hci1vdXQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC90ZW1wbGF0ZS9Bc0xpc3RUb2FyLW91dC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc5Njk1MjMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvdGVtcGxhdGUvQXNMaXN0VG9hci1vdXQuamF2YQpAQCAtMCwwICsxLDkgQEAKK2ltcG9ydCBqYXZhLnV0aWwuQXJyYXlzOworaW1wb3J0IGphdmEudXRpbC5MaXN0OworCitjbGFzcyBGb28geworCisgIHN0YXRpYyB2b2lkIGZvbyhMaXN0PFN0cmluZz4gbHMpIHsKKyAgICBMaXN0PFN0cmluZz4gbHMyID0gQXJyYXlzLmFzTGlzdChscy50b0FycmF5KG5ldyBTdHJpbmdbbHMuc2l6ZSgpXSk8Y2FyZXQ+KTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC90ZW1wbGF0ZS9Bc0xpc3RUb2FyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvdGVtcGxhdGUvQXNMaXN0VG9hci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJlZmI2Y2UKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvdGVtcGxhdGUvQXNMaXN0VG9hci5qYXZhCkBAIC0wLDAgKzEsOSBAQAoraW1wb3J0IGphdmEudXRpbC5BcnJheXM7CitpbXBvcnQgamF2YS51dGlsLkxpc3Q7CisKK2NsYXNzIEZvbyB7CisKKyAgc3RhdGljIHZvaWQgZm9vKExpc3Q8U3RyaW5nPiBscykgeworICAgIExpc3Q8U3RyaW5nPiBsczIgPSBBcnJheXMuYXNMaXN0KDxjYXJldD4pOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L3RlbXBsYXRlL0NsYXNzTmFtZURvdEluVGVtcGxhdGUtb3V0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvdGVtcGxhdGUvQ2xhc3NOYW1lRG90SW5UZW1wbGF0ZS1vdXQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MDRlNDM4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L3RlbXBsYXRlL0NsYXNzTmFtZURvdEluVGVtcGxhdGUtb3V0LmphdmEKQEAgLTAsMCArMSw4IEBACitpbXBvcnQgamF2YS5pby5GaWxlOworCitjbGFzcyBGb28geworICAgIHsKKyAgICAgIEZpbGUgZmlsZSA9IG5ldyBGaWxlKCJzb21lLnR4dCIpOworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oImZpbGUgPSAiICsgRmlsZS48Y2FyZXQ+KTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L3RlbXBsYXRlL0NsYXNzTmFtZURvdEluVGVtcGxhdGUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC90ZW1wbGF0ZS9DbGFzc05hbWVEb3RJblRlbXBsYXRlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjBkMmFmYwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC90ZW1wbGF0ZS9DbGFzc05hbWVEb3RJblRlbXBsYXRlLmphdmEKQEAgLTAsMCArMSw4IEBACitpbXBvcnQgamF2YS5pby5GaWxlOworCitjbGFzcyBGb28geworICAgIHsKKyAgICAgIEZpbGUgZmlsZSA9IG5ldyBGaWxlKCJzb21lLnR4dCIpOworICAgICAgPGNhcmV0PgorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvdGVtcGxhdGUvRW5kSW5UaGVNaWRkbGUtb3V0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvdGVtcGxhdGUvRW5kSW5UaGVNaWRkbGUtb3V0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTYxZWUxMwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC90ZW1wbGF0ZS9FbmRJblRoZU1pZGRsZS1vdXQuamF2YQpAQCAtMCwwICsxLDkgQEAKK3B1YmxpYyBjbGFzcyBFbmRJblRoZU1pZGRsZSB7CisgICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgeworICAgICAgICBqYXZheC5zd2luZy5KRnJhbWUgZnJhbWUgPSBuZXcgamF2YXguc3dpbmcuSkZyYW1lKCk7CisgICAgICAgIDxjYXJldD4KKyAgICAgICAgZnJhbWUuc2V0VmlzaWJsZSh0cnVlKTsKKyAgICAgICAgZnJhbWUuc2V0RGVmYXVsdENsb3NlT3BlcmF0aW9uKGphdmF4LnN3aW5nLkpGcmFtZS5FWElUX09OX0NMT1NFKTsKKyAgICAgICAgZnJhbWUucGFjaygpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvdGVtcGxhdGUvRW5kSW5UaGVNaWRkbGUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC90ZW1wbGF0ZS9FbmRJblRoZU1pZGRsZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjllODFkMjEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvdGVtcGxhdGUvRW5kSW5UaGVNaWRkbGUuamF2YQpAQCAtMCwwICsxLDUgQEAKK3B1YmxpYyBjbGFzcyBFbmRJblRoZU1pZGRsZSB7CisgICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgeworICAgICAgICA8Y2FyZXQ+CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC90ZW1wbGF0ZS9JdGVyLW91dC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L3RlbXBsYXRlL0l0ZXItb3V0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMThiNzY0NgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC90ZW1wbGF0ZS9JdGVyLW91dC5qYXZhCkBAIC0wLDAgKzEsMTIgQEAKK2ltcG9ydCBqYXZhLnV0aWwuKjsKKworY2xhc3MgQmFyR29vIHt9CisKK2NsYXNzIEZvbyB7CisgICAgeworICAgICAgICBMaXN0PEJhckdvbz4gZ29vczsKKyAgICAgICAgZm9yIChCYXJHb28gZ29vIDogZ29vcykgeworICAgICAgICAgICAgPGNhcmV0PgorICAgICAgICB9CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC90ZW1wbGF0ZS9JdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvdGVtcGxhdGUvSXRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQwZDA1N2QKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvdGVtcGxhdGUvSXRlci5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKK2ltcG9ydCBqYXZhLnV0aWwuKjsKKworY2xhc3MgQmFyR29vIHt9CisKK2NsYXNzIEZvbyB7CisgICAgeworICAgICAgICBMaXN0PEJhckdvbz4gZ29vczsKKyAgICAgICAgPGNhcmV0PgorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvdGVtcGxhdGUvSXRlcjEtb3V0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvdGVtcGxhdGUvSXRlcjEtb3V0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjZhNWYyOAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC90ZW1wbGF0ZS9JdGVyMS1vdXQuamF2YQpAQCAtMCwwICsxLDE0IEBACitpbXBvcnQgamF2YS51dGlsLio7CisKK3B1YmxpYyBjbGFzcyBDIHsKKyAgT2JqZWN0IG8gPSBuZXcgT2JqZWN0KCkgeworICAgIGNsYXNzIElubmVyIHsKKyAgICB9CisKKyAgICB2b2lkIGZvbyhMaXN0PElubmVyPiBpbm5lcnMpIHsKKyAgICAgICAgZm9yIChJbm5lciA8c2VsZWN0aW9uPmlubmVyPGNhcmV0Pjwvc2VsZWN0aW9uPiA6IGlubmVycykgeworICAgICAgICAgICAgCisgICAgICAgIH0KKyAgICB9CisgIH07Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvdGVtcGxhdGUvSXRlcjEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC90ZW1wbGF0ZS9JdGVyMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM5NTVmYWUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvdGVtcGxhdGUvSXRlcjEuamF2YQpAQCAtMCwwICsxLDEyIEBACitpbXBvcnQgamF2YS51dGlsLio7CisKK3B1YmxpYyBjbGFzcyBDIHsKKyAgT2JqZWN0IG8gPSBuZXcgT2JqZWN0KCkgeworICAgIGNsYXNzIElubmVyIHsKKyAgICB9CisKKyAgICB2b2lkIGZvbyhMaXN0PElubmVyPiBpbm5lcnMpIHsKKyAgICAgIDxjYXJldD4KKyAgICB9CisgIH07Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvdGVtcGxhdGUvSXRlckZvcmNlQnJhY2VzLW91dC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L3RlbXBsYXRlL0l0ZXJGb3JjZUJyYWNlcy1vdXQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMGUyYTAwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L3RlbXBsYXRlL0l0ZXJGb3JjZUJyYWNlcy1vdXQuamF2YQpAQCAtMCwwICsxLDE0IEBACitpbXBvcnQgamF2YS51dGlsLio7CisKK2NsYXNzIEJhckdvbyB7fQorCitjbGFzcyBGb28geworICAgIHsKKyAgICAgICAgTGlzdDxCYXJHb28+IGdvb3M7CisgICAgICAgIGlmICh0cnVlKSB7CisgICAgICAgICAgICBmb3IgKEJhckdvbyBnb28gOiA8c2VsZWN0aW9uPmdvb3M8L3NlbGVjdGlvbj48Y2FyZXQ+KSB7CisKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvdGVtcGxhdGUvSXRlckZvcmNlQnJhY2VzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvdGVtcGxhdGUvSXRlckZvcmNlQnJhY2VzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTg5YzBmOQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC90ZW1wbGF0ZS9JdGVyRm9yY2VCcmFjZXMuamF2YQpAQCAtMCwwICsxLDEwIEBACitpbXBvcnQgamF2YS51dGlsLio7CisKK2NsYXNzIEJhckdvbyB7fQorCitjbGFzcyBGb28geworICAgIHsKKyAgICAgICAgTGlzdDxCYXJHb28+IGdvb3M7CisgICAgICAgIGlmICh0cnVlKSA8Y2FyZXQ+CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC90ZW1wbGF0ZS9JdGVyUGFyYW1ldGVyaXplZElubmVyLW91dC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L3RlbXBsYXRlL0l0ZXJQYXJhbWV0ZXJpemVkSW5uZXItb3V0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDRlNjRjOQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC90ZW1wbGF0ZS9JdGVyUGFyYW1ldGVyaXplZElubmVyLW91dC5qYXZhCkBAIC0wLDAgKzEsMTUgQEAKK2ltcG9ydCBqYXZhLnV0aWwuTGlzdDsKKworcHVibGljIGNsYXNzIExpdmVUZW1wbGF0ZVRlc3QgeworCisgICAgdm9pZCBvbmUoKSB7CisgICAgICAgIExpc3Q8QS5CPFN0cmluZz4+IGxpc3Q7CisgICAgICAgIGZvciAoQS5CPFN0cmluZz4gc3RyaW5nQiA6IDxzZWxlY3Rpb24+bGlzdDwvc2VsZWN0aW9uPjxjYXJldD4pIHsKKworICAgICAgICB9CisgICAgfQorfQorCitjbGFzcyBBIHsKKyAgICBzdGF0aWMgaW50ZXJmYWNlIEI8VD4ge30KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvdGVtcGxhdGUvSXRlclBhcmFtZXRlcml6ZWRJbm5lci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L3RlbXBsYXRlL0l0ZXJQYXJhbWV0ZXJpemVkSW5uZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNDI0NmE3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L3RlbXBsYXRlL0l0ZXJQYXJhbWV0ZXJpemVkSW5uZXIuamF2YQpAQCAtMCwwICsxLDEzIEBACitpbXBvcnQgamF2YS51dGlsLkxpc3Q7CisKK3B1YmxpYyBjbGFzcyBMaXZlVGVtcGxhdGVUZXN0IHsKKworICAgIHZvaWQgb25lKCkgeworICAgICAgICBMaXN0PEEuQjxTdHJpbmc+PiBsaXN0OworICAgICAgICA8Y2FyZXQ+CisgICAgfQorfQorCitjbGFzcyBBIHsKKyAgICBzdGF0aWMgaW50ZXJmYWNlIEI8VD4ge30KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvdGVtcGxhdGUvTmF2aWdhdGlvbkFjdGlvbnNEb250VGVybWluYXRlVGVtcGxhdGUtb3V0LnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC90ZW1wbGF0ZS9OYXZpZ2F0aW9uQWN0aW9uc0RvbnRUZXJtaW5hdGVUZW1wbGF0ZS1vdXQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNhODU4YTIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvdGVtcGxhdGUvTmF2aWdhdGlvbkFjdGlvbnNEb250VGVybWluYXRlVGVtcGxhdGUtb3V0LnR4dApAQCAtMCwwICsxLDMgQEAKK0hlbGxvIEggV29ybGQgSAorSGVsbG8gSCBXb3JsZCBICitIZWxsbyBIIFdvcmxkIEg8Y2FyZXQ+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L3RlbXBsYXRlL1ByZWZlclN0YXJ0TWF0Y2hlc0luTG9va3Vwcy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L3RlbXBsYXRlL1ByZWZlclN0YXJ0TWF0Y2hlc0luTG9va3Vwcy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQxYjQ0NzkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvdGVtcGxhdGUvUHJlZmVyU3RhcnRNYXRjaGVzSW5Mb29rdXBzLmphdmEKQEAgLTAsMCArMSwxMSBAQAoraW1wb3J0IGphdmEudXRpbC4qOworCitjbGFzcyBCYXJHb28ge30KKworY2xhc3MgRm9vIHsKKyAgICB7CisgICAgICAgIE1hcDxCYXJHb28sIFN0cmluZ0J1aWxkZXI+IGdvb3M7CisKKyAgICAgICAgPGNhcmV0PgorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvdGVtcGxhdGUvU291dHAtb3V0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvdGVtcGxhdGUvU291dHAtb3V0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGI2MmU2NgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC90ZW1wbGF0ZS9Tb3V0cC1vdXQuamF2YQpAQCAtMCwwICsxLDEwIEBACitpbXBvcnQgamF2YS5sYW5nLlN0cmluZzsKK2ltcG9ydCBqYXZhLnV0aWwuTGlzdDsKKworcHVibGljIGNsYXNzIExpdmVUZW1wbGF0ZVRlc3QgeworCisgIHZvaWQgdXNhZ2UoaW50IG51bSwgYm9vbGVhbiBzb21lQm9vbGVhbiwgTGlzdDxTdHJpbmc+IGFyZ3MpeworICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJudW0gPSBbIiArIG51bSArICJdLCBzb21lQm9vbGVhbiA9IFsiICsgc29tZUJvb2xlYW4gKyAiXSwgYXJncyA9IFsiICsgYXJncyArICJdIik7PGNhcmV0PgorICB9CisKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvdGVtcGxhdGUvU291dHAuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC90ZW1wbGF0ZS9Tb3V0cC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAxZDVlYzMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvdGVtcGxhdGUvU291dHAuamF2YQpAQCAtMCwwICsxLDEwIEBACitpbXBvcnQgamF2YS5sYW5nLlN0cmluZzsKK2ltcG9ydCBqYXZhLnV0aWwuTGlzdDsKKworcHVibGljIGNsYXNzIExpdmVUZW1wbGF0ZVRlc3QgeworCisgIHZvaWQgdXNhZ2UoaW50IG51bSwgYm9vbGVhbiBzb21lQm9vbGVhbiwgTGlzdDxTdHJpbmc+IGFyZ3MpeworICAgIDxjYXJldD4KKyAgfQorCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L3RlbXBsYXRlL1RvYXItb3V0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvdGVtcGxhdGUvVG9hci1vdXQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZjY4NGFhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L3RlbXBsYXRlL1RvYXItb3V0LmphdmEKQEAgLTAsMCArMSw4IEBACitpbXBvcnQgamF2YS51dGlsLio7CisKK2NsYXNzIEZvbyB7CisgIHsKKyAgICBMaXN0PFN0cmluZz4gbDsKKyAgICBTdHJpbmdbXSBzID0gbC50b0FycmF5KG5ldyBTdHJpbmdbbC5zaXplKCldKTxjYXJldD4KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC90ZW1wbGF0ZS9Ub2FyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvdGVtcGxhdGUvVG9hci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBiODQzZWUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvdGVtcGxhdGUvVG9hci5qYXZhCkBAIC0wLDAgKzEsOCBAQAoraW1wb3J0IGphdmEudXRpbC4qOworCitjbGFzcyBGb28geworICB7CisgICAgTGlzdDxTdHJpbmc+IGw7CisgICAgU3RyaW5nW10gcyA9IDxjYXJldD4KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC90ZW1wbGF0ZS9WYXJhcmdUb2FyLW91dC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L3RlbXBsYXRlL1ZhcmFyZ1RvYXItb3V0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2QzNWZiMgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC90ZW1wbGF0ZS9WYXJhcmdUb2FyLW91dC5qYXZhCkBAIC0wLDAgKzEsMTEgQEAKK2ltcG9ydCBqYXZhLnV0aWwuTGlzdDsKKworcHVibGljIGNsYXNzIExpdmVUZW1wbGF0ZVRlc3QgeworCisgIHZvaWQgZm9vKFN0cmluZy4uLiBtZXNzYWdlcyl7fQorICB2b2lkIHVzYWdlKCl7CisgICAgTGlzdDxTdHJpbmc+IG1lc3NhZ2VzID0gbmV3IEFycmF5TGlzdDxTdHJpbmc+KCk7CisgICAgZm9vKG1lc3NhZ2VzLnRvQXJyYXkobmV3IDxzZWxlY3Rpb24+U3RyaW5nPGNhcmV0Pjwvc2VsZWN0aW9uPlttZXNzYWdlcy5zaXplKCldKSk7CisgIH0KKworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb2RlSW5zaWdodC90ZW1wbGF0ZS9WYXJhcmdUb2FyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvdGVtcGxhdGUvVmFyYXJnVG9hci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEyNmI5MWQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvdGVtcGxhdGUvVmFyYXJnVG9hci5qYXZhCkBAIC0wLDAgKzEsMTEgQEAKK2ltcG9ydCBqYXZhLnV0aWwuTGlzdDsKKworcHVibGljIGNsYXNzIExpdmVUZW1wbGF0ZVRlc3QgeworCisgIHZvaWQgZm9vKFN0cmluZy4uLiBtZXNzYWdlcyl7fQorICB2b2lkIHVzYWdlKCl7CisgICAgTGlzdDxTdHJpbmc+IG1lc3NhZ2VzID0gbmV3IEFycmF5TGlzdDxTdHJpbmc+KCk7CisgICAgZm9vKDxjYXJldD4pOworICB9CisKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvdW5kZXJzY29yZXNJbkxpdGVyYWxzL1dpdGhVbmRlcnNjb3Jlcy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L3VuZGVyc2NvcmVzSW5MaXRlcmFscy9XaXRoVW5kZXJzY29yZXMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYTUxNDUyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L3VuZGVyc2NvcmVzSW5MaXRlcmFscy9XaXRoVW5kZXJzY29yZXMuamF2YQpAQCAtMCwwICsxLDMgQEAKK2NsYXNzIEMgeworICBpbnQgaSA9IDxjYXJldD4xMjNfNDU2Xzc4OTsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29kZUluc2lnaHQvdW5kZXJzY29yZXNJbkxpdGVyYWxzL1dpdGhvdXRVbmRlcnNjb3Jlcy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L3VuZGVyc2NvcmVzSW5MaXRlcmFscy9XaXRob3V0VW5kZXJzY29yZXMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZWEwZGFjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvZGVJbnNpZ2h0L3VuZGVyc2NvcmVzSW5MaXRlcmFscy9XaXRob3V0VW5kZXJzY29yZXMuamF2YQpAQCAtMCwwICsxLDMgQEAKK2NsYXNzIEMgeworICBpbnQgaSA9IDxjYXJldD4xMjM0NTY3ODk7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvYW5ub3RhdGlvbnMvYWRkQW5ub3RhdGlvblRhcmdldC5sb2cgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9hbm5vdGF0aW9ucy9hZGRBbm5vdGF0aW9uVGFyZ2V0LmxvZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZWQzZWFkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvYW5ub3RhdGlvbnMvYWRkQW5ub3RhdGlvblRhcmdldC5sb2cKQEAgLTAsMCArMSw2IEBACitDbGVhbmluZyBvdXRwdXQgZmlsZXM6CitvdXQvcHJvZHVjdGlvbi9BZGRBbm5vdGF0aW9uVGFyZ2V0L0EuY2xhc3MKK0VuZCBvZiBmaWxlcworQ29tcGlsaW5nIGZpbGVzOgorc3JjL0EuamF2YQorRW5kIG9mIGZpbGVzCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9hbm5vdGF0aW9ucy9hZGRBbm5vdGF0aW9uVGFyZ2V0L0EuamF2YS5uZXcgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9hbm5vdGF0aW9ucy9hZGRBbm5vdGF0aW9uVGFyZ2V0L0EuamF2YS5uZXcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDNlOWRhZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2Fubm90YXRpb25zL2FkZEFubm90YXRpb25UYXJnZXQvQS5qYXZhLm5ldwpAQCAtMCwwICsxLDcgQEAKK2ltcG9ydCBqYXZhLmxhbmcuYW5ub3RhdGlvbi4qOworaW1wb3J0IHN0YXRpYyBqYXZhLmxhbmcuYW5ub3RhdGlvbi5FbGVtZW50VHlwZS4qOworCitAVGFyZ2V0KHtUWVBFLCBGSUVMRCwgTUVUSE9EfSkKK3B1YmxpYyBAaW50ZXJmYWNlIEEgeworICBpbnQgdmFsdWUoKTsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9hbm5vdGF0aW9ucy9hZGRBbm5vdGF0aW9uVGFyZ2V0L3NyYy9BLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9hbm5vdGF0aW9ucy9hZGRBbm5vdGF0aW9uVGFyZ2V0L3NyYy9BLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGQxMGI3ZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2Fubm90YXRpb25zL2FkZEFubm90YXRpb25UYXJnZXQvc3JjL0EuamF2YQpAQCAtMCwwICsxLDcgQEAKK2ltcG9ydCBqYXZhLmxhbmcuYW5ub3RhdGlvbi4qOworaW1wb3J0IHN0YXRpYyBqYXZhLmxhbmcuYW5ub3RhdGlvbi5FbGVtZW50VHlwZS4qOworCitAVGFyZ2V0KHtUWVBFLCBGSUVMRCwgTUVUSE9EfSkKK3B1YmxpYyBAaW50ZXJmYWNlIEEgeworICBpbnQgdmFsdWUoKSBkZWZhdWx0IDM7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvYW5ub3RhdGlvbnMvYWRkQW5ub3RhdGlvblRhcmdldC9zcmMvQy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvYW5ub3RhdGlvbnMvYWRkQW5ub3RhdGlvblRhcmdldC9zcmMvQy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI5NjJhZWYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9hbm5vdGF0aW9ucy9hZGRBbm5vdGF0aW9uVGFyZ2V0L3NyYy9DLmphdmEKQEAgLTAsMCArMSwzIEBACitAQSgxMCkgCitwdWJsaWMgY2xhc3MgQyB7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvYW5ub3RhdGlvbnMvYWRkQW5ub3RhdGlvblRhcmdldC9zcmMvQzIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2Fubm90YXRpb25zL2FkZEFubm90YXRpb25UYXJnZXQvc3JjL0MyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTc3NjE1NmIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9hbm5vdGF0aW9ucy9hZGRBbm5vdGF0aW9uVGFyZ2V0L3NyYy9DMi5qYXZhCkBAIC0wLDAgKzEsNSBAQAorcHVibGljIGNsYXNzIEMyIHsKKworICBAQSgzMCkgCisgIGludCBmaWVsZDsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9hbm5vdGF0aW9ucy9hZGRBbm5vdGF0aW9uVHlwZU1lbWJlcldpdGhEZWZhdWx0VmFsdWUubG9nIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvYW5ub3RhdGlvbnMvYWRkQW5ub3RhdGlvblR5cGVNZW1iZXJXaXRoRGVmYXVsdFZhbHVlLmxvZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MDNkODM3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvYW5ub3RhdGlvbnMvYWRkQW5ub3RhdGlvblR5cGVNZW1iZXJXaXRoRGVmYXVsdFZhbHVlLmxvZwpAQCAtMCwwICsxLDYgQEAKK0NsZWFuaW5nIG91dHB1dCBmaWxlczoKK291dC9wcm9kdWN0aW9uL0FkZEFubm90YXRpb25UeXBlTWVtYmVyV2l0aERlZmF1bHRWYWx1ZS9BLmNsYXNzCitFbmQgb2YgZmlsZXMKK0NvbXBpbGluZyBmaWxlczoKK3NyYy9BLmphdmEKK0VuZCBvZiBmaWxlcwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvYW5ub3RhdGlvbnMvYWRkQW5ub3RhdGlvblR5cGVNZW1iZXJXaXRoRGVmYXVsdFZhbHVlL0EuamF2YS5uZXcgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9hbm5vdGF0aW9ucy9hZGRBbm5vdGF0aW9uVHlwZU1lbWJlcldpdGhEZWZhdWx0VmFsdWUvQS5qYXZhLm5ldwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYzg5MmZhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvYW5ub3RhdGlvbnMvYWRkQW5ub3RhdGlvblR5cGVNZW1iZXJXaXRoRGVmYXVsdFZhbHVlL0EuamF2YS5uZXcKQEAgLTAsMCArMSw0IEBACitwdWJsaWMgQGludGVyZmFjZSBBIHsKKyAgaW50IHZhbHVlKCk7CisgIGludCB2YWx1ZTEoKSBkZWZhdWx0IDc7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvYW5ub3RhdGlvbnMvYWRkQW5ub3RhdGlvblR5cGVNZW1iZXJXaXRoRGVmYXVsdFZhbHVlL3NyYy9BLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9hbm5vdGF0aW9ucy9hZGRBbm5vdGF0aW9uVHlwZU1lbWJlcldpdGhEZWZhdWx0VmFsdWUvc3JjL0EuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44N2YxYjY0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvYW5ub3RhdGlvbnMvYWRkQW5ub3RhdGlvblR5cGVNZW1iZXJXaXRoRGVmYXVsdFZhbHVlL3NyYy9BLmphdmEKQEAgLTAsMCArMSwzIEBACitwdWJsaWMgQGludGVyZmFjZSBBIHsKKyAgaW50IHZhbHVlKCk7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvYW5ub3RhdGlvbnMvYWRkQW5ub3RhdGlvblR5cGVNZW1iZXJXaXRoRGVmYXVsdFZhbHVlL3NyYy9DLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9hbm5vdGF0aW9ucy9hZGRBbm5vdGF0aW9uVHlwZU1lbWJlcldpdGhEZWZhdWx0VmFsdWUvc3JjL0MuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iOTYyYWVmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvYW5ub3RhdGlvbnMvYWRkQW5ub3RhdGlvblR5cGVNZW1iZXJXaXRoRGVmYXVsdFZhbHVlL3NyYy9DLmphdmEKQEAgLTAsMCArMSwzIEBACitAQSgxMCkgCitwdWJsaWMgY2xhc3MgQyB7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvYW5ub3RhdGlvbnMvYWRkQW5ub3RhdGlvblR5cGVNZW1iZXJXaXRoRGVmYXVsdFZhbHVlL3NyYy9DMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvYW5ub3RhdGlvbnMvYWRkQW5ub3RhdGlvblR5cGVNZW1iZXJXaXRoRGVmYXVsdFZhbHVlL3NyYy9DMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAzNDI5MDUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9hbm5vdGF0aW9ucy9hZGRBbm5vdGF0aW9uVHlwZU1lbWJlcldpdGhEZWZhdWx0VmFsdWUvc3JjL0MxLmphdmEKQEAgLTAsMCArMSw2IEBACitwdWJsaWMgY2xhc3MgQzEgeworCisgIEBBKDIwKQorICB2b2lkIGZvbygpIHsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2Fubm90YXRpb25zL2FkZEFubm90YXRpb25UeXBlTWVtYmVyV2l0aERlZmF1bHRWYWx1ZS9zcmMvQzIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2Fubm90YXRpb25zL2FkZEFubm90YXRpb25UeXBlTWVtYmVyV2l0aERlZmF1bHRWYWx1ZS9zcmMvQzIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNzc2MTU2YgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2Fubm90YXRpb25zL2FkZEFubm90YXRpb25UeXBlTWVtYmVyV2l0aERlZmF1bHRWYWx1ZS9zcmMvQzIuamF2YQpAQCAtMCwwICsxLDUgQEAKK3B1YmxpYyBjbGFzcyBDMiB7CisKKyAgQEEoMzApIAorICBpbnQgZmllbGQ7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvYW5ub3RhdGlvbnMvYWRkQW5ub3RhdGlvblR5cGVNZW1iZXJXaXRoRGVmYXVsdFZhbHVlMi5sb2cgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9hbm5vdGF0aW9ucy9hZGRBbm5vdGF0aW9uVHlwZU1lbWJlcldpdGhEZWZhdWx0VmFsdWUyLmxvZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40OWNiNjAxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvYW5ub3RhdGlvbnMvYWRkQW5ub3RhdGlvblR5cGVNZW1iZXJXaXRoRGVmYXVsdFZhbHVlMi5sb2cKQEAgLTAsMCArMSw2IEBACitDbGVhbmluZyBvdXRwdXQgZmlsZXM6CitvdXQvcHJvZHVjdGlvbi9BZGRBbm5vdGF0aW9uVHlwZU1lbWJlcldpdGhEZWZhdWx0VmFsdWUyL0EuY2xhc3MKK0VuZCBvZiBmaWxlcworQ29tcGlsaW5nIGZpbGVzOgorc3JjL0EuamF2YQorRW5kIG9mIGZpbGVzCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9hbm5vdGF0aW9ucy9hZGRBbm5vdGF0aW9uVHlwZU1lbWJlcldpdGhEZWZhdWx0VmFsdWUyL0EuamF2YS5uZXcgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9hbm5vdGF0aW9ucy9hZGRBbm5vdGF0aW9uVHlwZU1lbWJlcldpdGhEZWZhdWx0VmFsdWUyL0EuamF2YS5uZXcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWUyY2YxMwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2Fubm90YXRpb25zL2FkZEFubm90YXRpb25UeXBlTWVtYmVyV2l0aERlZmF1bHRWYWx1ZTIvQS5qYXZhLm5ldwpAQCAtMCwwICsxLDQgQEAKK3B1YmxpYyBAaW50ZXJmYWNlIEEgeworICBDbGFzcyB2YWx1ZSgpOworICBDbGFzcyB2YWx1ZTEoKSBkZWZhdWx0IGJ5dGUuY2xhc3M7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvYW5ub3RhdGlvbnMvYWRkQW5ub3RhdGlvblR5cGVNZW1iZXJXaXRoRGVmYXVsdFZhbHVlMi9zcmMvQS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvYW5ub3RhdGlvbnMvYWRkQW5ub3RhdGlvblR5cGVNZW1iZXJXaXRoRGVmYXVsdFZhbHVlMi9zcmMvQS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEyMTI0ZmUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9hbm5vdGF0aW9ucy9hZGRBbm5vdGF0aW9uVHlwZU1lbWJlcldpdGhEZWZhdWx0VmFsdWUyL3NyYy9BLmphdmEKQEAgLTAsMCArMSwzIEBACitwdWJsaWMgQGludGVyZmFjZSBBIHsKKyAgQ2xhc3MgdmFsdWUoKTsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9hbm5vdGF0aW9ucy9hZGRBbm5vdGF0aW9uVHlwZU1lbWJlcldpdGhEZWZhdWx0VmFsdWUyL3NyYy9DLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9hbm5vdGF0aW9ucy9hZGRBbm5vdGF0aW9uVHlwZU1lbWJlcldpdGhEZWZhdWx0VmFsdWUyL3NyYy9DLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTZlNjJkMAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2Fubm90YXRpb25zL2FkZEFubm90YXRpb25UeXBlTWVtYmVyV2l0aERlZmF1bHRWYWx1ZTIvc3JjL0MuamF2YQpAQCAtMCwwICsxLDMgQEAKK0BBKGludC5jbGFzcykgCitwdWJsaWMgY2xhc3MgQyB7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvYW5ub3RhdGlvbnMvYWRkQW5ub3RhdGlvblR5cGVNZW1iZXJXaXRoRGVmYXVsdFZhbHVlMi9zcmMvQzEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2Fubm90YXRpb25zL2FkZEFubm90YXRpb25UeXBlTWVtYmVyV2l0aERlZmF1bHRWYWx1ZTIvc3JjL0MxLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDk4YjlkNwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2Fubm90YXRpb25zL2FkZEFubm90YXRpb25UeXBlTWVtYmVyV2l0aERlZmF1bHRWYWx1ZTIvc3JjL0MxLmphdmEKQEAgLTAsMCArMSw2IEBACitwdWJsaWMgY2xhc3MgQzEgeworCisgIEBBKGJvb2xlYW4uY2xhc3MpCisgIHZvaWQgZm9vKCkgeworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvYW5ub3RhdGlvbnMvYWRkQW5ub3RhdGlvblR5cGVNZW1iZXJXaXRoRGVmYXVsdFZhbHVlMi9zcmMvQzIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2Fubm90YXRpb25zL2FkZEFubm90YXRpb25UeXBlTWVtYmVyV2l0aERlZmF1bHRWYWx1ZTIvc3JjL0MyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmY3NGY0NQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2Fubm90YXRpb25zL2FkZEFubm90YXRpb25UeXBlTWVtYmVyV2l0aERlZmF1bHRWYWx1ZTIvc3JjL0MyLmphdmEKQEAgLTAsMCArMSw1IEBACitwdWJsaWMgY2xhc3MgQzIgeworCisgIEBBKGRvdWJsZS5jbGFzcykgCisgIGludCBmaWVsZDsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9hbm5vdGF0aW9ucy9hZGRBbm5vdGF0aW9uVHlwZU1lbWJlcldpdGhvdXREZWZhdWx0VmFsdWUubG9nIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvYW5ub3RhdGlvbnMvYWRkQW5ub3RhdGlvblR5cGVNZW1iZXJXaXRob3V0RGVmYXVsdFZhbHVlLmxvZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZTFiYTgyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvYW5ub3RhdGlvbnMvYWRkQW5ub3RhdGlvblR5cGVNZW1iZXJXaXRob3V0RGVmYXVsdFZhbHVlLmxvZwpAQCAtMCwwICsxLDE2IEBACitDbGVhbmluZyBvdXRwdXQgZmlsZXM6CitvdXQvcHJvZHVjdGlvbi9BZGRBbm5vdGF0aW9uVHlwZU1lbWJlcldpdGhvdXREZWZhdWx0VmFsdWUvQS5jbGFzcworRW5kIG9mIGZpbGVzCitDb21waWxpbmcgZmlsZXM6CitzcmMvQS5qYXZhCitFbmQgb2YgZmlsZXMKK0NsZWFuaW5nIG91dHB1dCBmaWxlczoKK291dC9wcm9kdWN0aW9uL0FkZEFubm90YXRpb25UeXBlTWVtYmVyV2l0aG91dERlZmF1bHRWYWx1ZS9DLmNsYXNzCitvdXQvcHJvZHVjdGlvbi9BZGRBbm5vdGF0aW9uVHlwZU1lbWJlcldpdGhvdXREZWZhdWx0VmFsdWUvQzEuY2xhc3MKK291dC9wcm9kdWN0aW9uL0FkZEFubm90YXRpb25UeXBlTWVtYmVyV2l0aG91dERlZmF1bHRWYWx1ZS9DMi5jbGFzcworRW5kIG9mIGZpbGVzCitDb21waWxpbmcgZmlsZXM6CitzcmMvQy5qYXZhCitzcmMvQzEuamF2YQorc3JjL0MyLmphdmEKK0VuZCBvZiBmaWxlcwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvYW5ub3RhdGlvbnMvYWRkQW5ub3RhdGlvblR5cGVNZW1iZXJXaXRob3V0RGVmYXVsdFZhbHVlL0EuamF2YS5uZXcgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9hbm5vdGF0aW9ucy9hZGRBbm5vdGF0aW9uVHlwZU1lbWJlcldpdGhvdXREZWZhdWx0VmFsdWUvQS5qYXZhLm5ldwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41Mzg2OTk5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvYW5ub3RhdGlvbnMvYWRkQW5ub3RhdGlvblR5cGVNZW1iZXJXaXRob3V0RGVmYXVsdFZhbHVlL0EuamF2YS5uZXcKQEAgLTAsMCArMSw0IEBACitwdWJsaWMgQGludGVyZmFjZSBBIHsKKyAgaW50IHZhbHVlKCk7CisgIGludCB2YWx1ZTEoKTsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9hbm5vdGF0aW9ucy9hZGRBbm5vdGF0aW9uVHlwZU1lbWJlcldpdGhvdXREZWZhdWx0VmFsdWUvc3JjL0EuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2Fubm90YXRpb25zL2FkZEFubm90YXRpb25UeXBlTWVtYmVyV2l0aG91dERlZmF1bHRWYWx1ZS9zcmMvQS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg3ZjFiNjQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9hbm5vdGF0aW9ucy9hZGRBbm5vdGF0aW9uVHlwZU1lbWJlcldpdGhvdXREZWZhdWx0VmFsdWUvc3JjL0EuamF2YQpAQCAtMCwwICsxLDMgQEAKK3B1YmxpYyBAaW50ZXJmYWNlIEEgeworICBpbnQgdmFsdWUoKTsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9hbm5vdGF0aW9ucy9hZGRBbm5vdGF0aW9uVHlwZU1lbWJlcldpdGhvdXREZWZhdWx0VmFsdWUvc3JjL0MuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2Fubm90YXRpb25zL2FkZEFubm90YXRpb25UeXBlTWVtYmVyV2l0aG91dERlZmF1bHRWYWx1ZS9zcmMvQy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI5NjJhZWYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9hbm5vdGF0aW9ucy9hZGRBbm5vdGF0aW9uVHlwZU1lbWJlcldpdGhvdXREZWZhdWx0VmFsdWUvc3JjL0MuamF2YQpAQCAtMCwwICsxLDMgQEAKK0BBKDEwKSAKK3B1YmxpYyBjbGFzcyBDIHsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9hbm5vdGF0aW9ucy9hZGRBbm5vdGF0aW9uVHlwZU1lbWJlcldpdGhvdXREZWZhdWx0VmFsdWUvc3JjL0MxLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9hbm5vdGF0aW9ucy9hZGRBbm5vdGF0aW9uVHlwZU1lbWJlcldpdGhvdXREZWZhdWx0VmFsdWUvc3JjL0MxLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDM0MjkwNQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2Fubm90YXRpb25zL2FkZEFubm90YXRpb25UeXBlTWVtYmVyV2l0aG91dERlZmF1bHRWYWx1ZS9zcmMvQzEuamF2YQpAQCAtMCwwICsxLDYgQEAKK3B1YmxpYyBjbGFzcyBDMSB7CisKKyAgQEEoMjApCisgIHZvaWQgZm9vKCkgeworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvYW5ub3RhdGlvbnMvYWRkQW5ub3RhdGlvblR5cGVNZW1iZXJXaXRob3V0RGVmYXVsdFZhbHVlL3NyYy9DMi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvYW5ub3RhdGlvbnMvYWRkQW5ub3RhdGlvblR5cGVNZW1iZXJXaXRob3V0RGVmYXVsdFZhbHVlL3NyYy9DMi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU3NzYxNTZiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvYW5ub3RhdGlvbnMvYWRkQW5ub3RhdGlvblR5cGVNZW1iZXJXaXRob3V0RGVmYXVsdFZhbHVlL3NyYy9DMi5qYXZhCkBAIC0wLDAgKzEsNSBAQAorcHVibGljIGNsYXNzIEMyIHsKKworICBAQSgzMCkgCisgIGludCBmaWVsZDsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9hbm5vdGF0aW9ucy9hZGREZWZhdWx0VG9Bbm5vdGF0aW9uTWVtYmVyLmxvZyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2Fubm90YXRpb25zL2FkZERlZmF1bHRUb0Fubm90YXRpb25NZW1iZXIubG9nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIzY2U5Yzg3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvYW5ub3RhdGlvbnMvYWRkRGVmYXVsdFRvQW5ub3RhdGlvbk1lbWJlci5sb2cKQEAgLTAsMCArMSw2IEBACitDbGVhbmluZyBvdXRwdXQgZmlsZXM6CitvdXQvcHJvZHVjdGlvbi9BZGREZWZhdWx0VG9Bbm5vdGF0aW9uTWVtYmVyL0EuY2xhc3MKK0VuZCBvZiBmaWxlcworQ29tcGlsaW5nIGZpbGVzOgorc3JjL0EuamF2YQorRW5kIG9mIGZpbGVzCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9hbm5vdGF0aW9ucy9hZGREZWZhdWx0VG9Bbm5vdGF0aW9uTWVtYmVyL0EuamF2YS5uZXcgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9hbm5vdGF0aW9ucy9hZGREZWZhdWx0VG9Bbm5vdGF0aW9uTWVtYmVyL0EuamF2YS5uZXcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWNhYTMxNAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2Fubm90YXRpb25zL2FkZERlZmF1bHRUb0Fubm90YXRpb25NZW1iZXIvQS5qYXZhLm5ldwpAQCAtMCwwICsxLDMgQEAKK3B1YmxpYyBAaW50ZXJmYWNlIEEgeworICBpbnQgdmFsdWUoKSBkZWZhdWx0IDc7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvYW5ub3RhdGlvbnMvYWRkRGVmYXVsdFRvQW5ub3RhdGlvbk1lbWJlci9zcmMvQS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvYW5ub3RhdGlvbnMvYWRkRGVmYXVsdFRvQW5ub3RhdGlvbk1lbWJlci9zcmMvQS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg3ZjFiNjQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9hbm5vdGF0aW9ucy9hZGREZWZhdWx0VG9Bbm5vdGF0aW9uTWVtYmVyL3NyYy9BLmphdmEKQEAgLTAsMCArMSwzIEBACitwdWJsaWMgQGludGVyZmFjZSBBIHsKKyAgaW50IHZhbHVlKCk7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvYW5ub3RhdGlvbnMvYWRkRGVmYXVsdFRvQW5ub3RhdGlvbk1lbWJlci9zcmMvQy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvYW5ub3RhdGlvbnMvYWRkRGVmYXVsdFRvQW5ub3RhdGlvbk1lbWJlci9zcmMvQy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI5NjJhZWYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9hbm5vdGF0aW9ucy9hZGREZWZhdWx0VG9Bbm5vdGF0aW9uTWVtYmVyL3NyYy9DLmphdmEKQEAgLTAsMCArMSwzIEBACitAQSgxMCkgCitwdWJsaWMgY2xhc3MgQyB7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvYW5ub3RhdGlvbnMvYWRkRGVmYXVsdFRvQW5ub3RhdGlvbk1lbWJlci9zcmMvQzEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2Fubm90YXRpb25zL2FkZERlZmF1bHRUb0Fubm90YXRpb25NZW1iZXIvc3JjL0MxLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDM0MjkwNQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2Fubm90YXRpb25zL2FkZERlZmF1bHRUb0Fubm90YXRpb25NZW1iZXIvc3JjL0MxLmphdmEKQEAgLTAsMCArMSw2IEBACitwdWJsaWMgY2xhc3MgQzEgeworCisgIEBBKDIwKQorICB2b2lkIGZvbygpIHsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2Fubm90YXRpb25zL2FkZERlZmF1bHRUb0Fubm90YXRpb25NZW1iZXIvc3JjL0MyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9hbm5vdGF0aW9ucy9hZGREZWZhdWx0VG9Bbm5vdGF0aW9uTWVtYmVyL3NyYy9DMi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU3NzYxNTZiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvYW5ub3RhdGlvbnMvYWRkRGVmYXVsdFRvQW5ub3RhdGlvbk1lbWJlci9zcmMvQzIuamF2YQpAQCAtMCwwICsxLDUgQEAKK3B1YmxpYyBjbGFzcyBDMiB7CisKKyAgQEEoMzApIAorICBpbnQgZmllbGQ7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvYW5ub3RhdGlvbnMvY2hhbmdlQW5ub3RhdGlvblJldGVudGlvblBvbGljeS5sb2cgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9hbm5vdGF0aW9ucy9jaGFuZ2VBbm5vdGF0aW9uUmV0ZW50aW9uUG9saWN5LmxvZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNTY0ZTEzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvYW5ub3RhdGlvbnMvY2hhbmdlQW5ub3RhdGlvblJldGVudGlvblBvbGljeS5sb2cKQEAgLTAsMCArMSwxNiBAQAorQ2xlYW5pbmcgb3V0cHV0IGZpbGVzOgorb3V0L3Byb2R1Y3Rpb24vQ2hhbmdlQW5ub3RhdGlvblJldGVudGlvblBvbGljeS9BLmNsYXNzCitFbmQgb2YgZmlsZXMKK0NvbXBpbGluZyBmaWxlczoKK3NyYy9BLmphdmEKK0VuZCBvZiBmaWxlcworQ2xlYW5pbmcgb3V0cHV0IGZpbGVzOgorb3V0L3Byb2R1Y3Rpb24vQ2hhbmdlQW5ub3RhdGlvblJldGVudGlvblBvbGljeS9DLmNsYXNzCitvdXQvcHJvZHVjdGlvbi9DaGFuZ2VBbm5vdGF0aW9uUmV0ZW50aW9uUG9saWN5L0MxLmNsYXNzCitvdXQvcHJvZHVjdGlvbi9DaGFuZ2VBbm5vdGF0aW9uUmV0ZW50aW9uUG9saWN5L0MyLmNsYXNzCitFbmQgb2YgZmlsZXMKK0NvbXBpbGluZyBmaWxlczoKK3NyYy9DLmphdmEKK3NyYy9DMS5qYXZhCitzcmMvQzIuamF2YQorRW5kIG9mIGZpbGVzCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9hbm5vdGF0aW9ucy9jaGFuZ2VBbm5vdGF0aW9uUmV0ZW50aW9uUG9saWN5L0EuamF2YS5uZXcgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9hbm5vdGF0aW9ucy9jaGFuZ2VBbm5vdGF0aW9uUmV0ZW50aW9uUG9saWN5L0EuamF2YS5uZXcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTZlYTFjNgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2Fubm90YXRpb25zL2NoYW5nZUFubm90YXRpb25SZXRlbnRpb25Qb2xpY3kvQS5qYXZhLm5ldwpAQCAtMCwwICsxLDcgQEAKK2ltcG9ydCBqYXZhLmxhbmcuYW5ub3RhdGlvbi4qOworaW1wb3J0IHN0YXRpYyBqYXZhLmxhbmcuYW5ub3RhdGlvbi5SZXRlbnRpb25Qb2xpY3kuKjsKKworQFJldGVudGlvbihTT1VSQ0UpCitwdWJsaWMgQGludGVyZmFjZSBBIHsKKyAgaW50IHZhbHVlKCk7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvYW5ub3RhdGlvbnMvY2hhbmdlQW5ub3RhdGlvblJldGVudGlvblBvbGljeS9zcmMvQS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvYW5ub3RhdGlvbnMvY2hhbmdlQW5ub3RhdGlvblJldGVudGlvblBvbGljeS9zcmMvQS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg3ZjFiNjQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9hbm5vdGF0aW9ucy9jaGFuZ2VBbm5vdGF0aW9uUmV0ZW50aW9uUG9saWN5L3NyYy9BLmphdmEKQEAgLTAsMCArMSwzIEBACitwdWJsaWMgQGludGVyZmFjZSBBIHsKKyAgaW50IHZhbHVlKCk7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvYW5ub3RhdGlvbnMvY2hhbmdlQW5ub3RhdGlvblJldGVudGlvblBvbGljeS9zcmMvQy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvYW5ub3RhdGlvbnMvY2hhbmdlQW5ub3RhdGlvblJldGVudGlvblBvbGljeS9zcmMvQy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI5NjJhZWYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9hbm5vdGF0aW9ucy9jaGFuZ2VBbm5vdGF0aW9uUmV0ZW50aW9uUG9saWN5L3NyYy9DLmphdmEKQEAgLTAsMCArMSwzIEBACitAQSgxMCkgCitwdWJsaWMgY2xhc3MgQyB7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvYW5ub3RhdGlvbnMvY2hhbmdlQW5ub3RhdGlvblJldGVudGlvblBvbGljeS9zcmMvQzEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2Fubm90YXRpb25zL2NoYW5nZUFubm90YXRpb25SZXRlbnRpb25Qb2xpY3kvc3JjL0MxLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDM0MjkwNQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2Fubm90YXRpb25zL2NoYW5nZUFubm90YXRpb25SZXRlbnRpb25Qb2xpY3kvc3JjL0MxLmphdmEKQEAgLTAsMCArMSw2IEBACitwdWJsaWMgY2xhc3MgQzEgeworCisgIEBBKDIwKQorICB2b2lkIGZvbygpIHsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2Fubm90YXRpb25zL2NoYW5nZUFubm90YXRpb25SZXRlbnRpb25Qb2xpY3kvc3JjL0MyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9hbm5vdGF0aW9ucy9jaGFuZ2VBbm5vdGF0aW9uUmV0ZW50aW9uUG9saWN5L3NyYy9DMi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU3NzYxNTZiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvYW5ub3RhdGlvbnMvY2hhbmdlQW5ub3RhdGlvblJldGVudGlvblBvbGljeS9zcmMvQzIuamF2YQpAQCAtMCwwICsxLDUgQEAKK3B1YmxpYyBjbGFzcyBDMiB7CisKKyAgQEEoMzApIAorICBpbnQgZmllbGQ7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvYW5ub3RhdGlvbnMvY2hhbmdlQW5ub3RhdGlvblJldGVudGlvblBvbGljeTEubG9nIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvYW5ub3RhdGlvbnMvY2hhbmdlQW5ub3RhdGlvblJldGVudGlvblBvbGljeTEubG9nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY2M2JjN2UKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9hbm5vdGF0aW9ucy9jaGFuZ2VBbm5vdGF0aW9uUmV0ZW50aW9uUG9saWN5MS5sb2cKQEAgLTAsMCArMSwxNiBAQAorQ2xlYW5pbmcgb3V0cHV0IGZpbGVzOgorb3V0L3Byb2R1Y3Rpb24vQ2hhbmdlQW5ub3RhdGlvblJldGVudGlvblBvbGljeTEvQS5jbGFzcworRW5kIG9mIGZpbGVzCitDb21waWxpbmcgZmlsZXM6CitzcmMvQS5qYXZhCitFbmQgb2YgZmlsZXMKK0NsZWFuaW5nIG91dHB1dCBmaWxlczoKK291dC9wcm9kdWN0aW9uL0NoYW5nZUFubm90YXRpb25SZXRlbnRpb25Qb2xpY3kxL0MuY2xhc3MKK291dC9wcm9kdWN0aW9uL0NoYW5nZUFubm90YXRpb25SZXRlbnRpb25Qb2xpY3kxL0MxLmNsYXNzCitvdXQvcHJvZHVjdGlvbi9DaGFuZ2VBbm5vdGF0aW9uUmV0ZW50aW9uUG9saWN5MS9DMi5jbGFzcworRW5kIG9mIGZpbGVzCitDb21waWxpbmcgZmlsZXM6CitzcmMvQy5qYXZhCitzcmMvQzEuamF2YQorc3JjL0MyLmphdmEKK0VuZCBvZiBmaWxlcwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvYW5ub3RhdGlvbnMvY2hhbmdlQW5ub3RhdGlvblJldGVudGlvblBvbGljeTEvQS5qYXZhLm5ldyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2Fubm90YXRpb25zL2NoYW5nZUFubm90YXRpb25SZXRlbnRpb25Qb2xpY3kxL0EuamF2YS5uZXcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTJkOGRjMAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2Fubm90YXRpb25zL2NoYW5nZUFubm90YXRpb25SZXRlbnRpb25Qb2xpY3kxL0EuamF2YS5uZXcKQEAgLTAsMCArMSw3IEBACitpbXBvcnQgamF2YS5sYW5nLmFubm90YXRpb24uKjsKK2ltcG9ydCBzdGF0aWMgamF2YS5sYW5nLmFubm90YXRpb24uUmV0ZW50aW9uUG9saWN5Lio7CisKK0BSZXRlbnRpb24oUlVOVElNRSkKK3B1YmxpYyBAaW50ZXJmYWNlIEEgeworICBpbnQgdmFsdWUoKTsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9hbm5vdGF0aW9ucy9jaGFuZ2VBbm5vdGF0aW9uUmV0ZW50aW9uUG9saWN5MS9zcmMvQS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvYW5ub3RhdGlvbnMvY2hhbmdlQW5ub3RhdGlvblJldGVudGlvblBvbGljeTEvc3JjL0EuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44N2YxYjY0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvYW5ub3RhdGlvbnMvY2hhbmdlQW5ub3RhdGlvblJldGVudGlvblBvbGljeTEvc3JjL0EuamF2YQpAQCAtMCwwICsxLDMgQEAKK3B1YmxpYyBAaW50ZXJmYWNlIEEgeworICBpbnQgdmFsdWUoKTsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9hbm5vdGF0aW9ucy9jaGFuZ2VBbm5vdGF0aW9uUmV0ZW50aW9uUG9saWN5MS9zcmMvQy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvYW5ub3RhdGlvbnMvY2hhbmdlQW5ub3RhdGlvblJldGVudGlvblBvbGljeTEvc3JjL0MuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iOTYyYWVmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvYW5ub3RhdGlvbnMvY2hhbmdlQW5ub3RhdGlvblJldGVudGlvblBvbGljeTEvc3JjL0MuamF2YQpAQCAtMCwwICsxLDMgQEAKK0BBKDEwKSAKK3B1YmxpYyBjbGFzcyBDIHsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9hbm5vdGF0aW9ucy9jaGFuZ2VBbm5vdGF0aW9uUmV0ZW50aW9uUG9saWN5MS9zcmMvQzEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2Fubm90YXRpb25zL2NoYW5nZUFubm90YXRpb25SZXRlbnRpb25Qb2xpY3kxL3NyYy9DMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAzNDI5MDUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9hbm5vdGF0aW9ucy9jaGFuZ2VBbm5vdGF0aW9uUmV0ZW50aW9uUG9saWN5MS9zcmMvQzEuamF2YQpAQCAtMCwwICsxLDYgQEAKK3B1YmxpYyBjbGFzcyBDMSB7CisKKyAgQEEoMjApCisgIHZvaWQgZm9vKCkgeworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvYW5ub3RhdGlvbnMvY2hhbmdlQW5ub3RhdGlvblJldGVudGlvblBvbGljeTEvc3JjL0MyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9hbm5vdGF0aW9ucy9jaGFuZ2VBbm5vdGF0aW9uUmV0ZW50aW9uUG9saWN5MS9zcmMvQzIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNzc2MTU2YgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2Fubm90YXRpb25zL2NoYW5nZUFubm90YXRpb25SZXRlbnRpb25Qb2xpY3kxL3NyYy9DMi5qYXZhCkBAIC0wLDAgKzEsNSBAQAorcHVibGljIGNsYXNzIEMyIHsKKworICBAQSgzMCkgCisgIGludCBmaWVsZDsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9hbm5vdGF0aW9ucy9jaGFuZ2VBbm5vdGF0aW9uUmV0ZW50aW9uUG9saWN5Mi5sb2cgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9hbm5vdGF0aW9ucy9jaGFuZ2VBbm5vdGF0aW9uUmV0ZW50aW9uUG9saWN5Mi5sb2cKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjExY2E5MwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2Fubm90YXRpb25zL2NoYW5nZUFubm90YXRpb25SZXRlbnRpb25Qb2xpY3kyLmxvZwpAQCAtMCwwICsxLDE4IEBACitDbGVhbmluZyBvdXRwdXQgZmlsZXM6CitvdXQvcHJvZHVjdGlvbi9DaGFuZ2VBbm5vdGF0aW9uUmV0ZW50aW9uUG9saWN5Mi9BLmNsYXNzCitFbmQgb2YgZmlsZXMKK0NvbXBpbGluZyBmaWxlczoKK3NyYy9BLmphdmEKK0VuZCBvZiBmaWxlcworQ2xlYW5pbmcgb3V0cHV0IGZpbGVzOgorb3V0L3Byb2R1Y3Rpb24vQ2hhbmdlQW5ub3RhdGlvblJldGVudGlvblBvbGljeTIvQS5jbGFzcworb3V0L3Byb2R1Y3Rpb24vQ2hhbmdlQW5ub3RhdGlvblJldGVudGlvblBvbGljeTIvQy5jbGFzcworb3V0L3Byb2R1Y3Rpb24vQ2hhbmdlQW5ub3RhdGlvblJldGVudGlvblBvbGljeTIvQzEuY2xhc3MKK291dC9wcm9kdWN0aW9uL0NoYW5nZUFubm90YXRpb25SZXRlbnRpb25Qb2xpY3kyL0MyLmNsYXNzCitFbmQgb2YgZmlsZXMKK0NvbXBpbGluZyBmaWxlczoKK3NyYy9BLmphdmEKK3NyYy9DLmphdmEKK3NyYy9DMS5qYXZhCitzcmMvQzIuamF2YQorRW5kIG9mIGZpbGVzCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9hbm5vdGF0aW9ucy9jaGFuZ2VBbm5vdGF0aW9uUmV0ZW50aW9uUG9saWN5Mi9BLmphdmEubmV3IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvYW5ub3RhdGlvbnMvY2hhbmdlQW5ub3RhdGlvblJldGVudGlvblBvbGljeTIvQS5qYXZhLm5ldwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MmQ4ZGMwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvYW5ub3RhdGlvbnMvY2hhbmdlQW5ub3RhdGlvblJldGVudGlvblBvbGljeTIvQS5qYXZhLm5ldwpAQCAtMCwwICsxLDcgQEAKK2ltcG9ydCBqYXZhLmxhbmcuYW5ub3RhdGlvbi4qOworaW1wb3J0IHN0YXRpYyBqYXZhLmxhbmcuYW5ub3RhdGlvbi5SZXRlbnRpb25Qb2xpY3kuKjsKKworQFJldGVudGlvbihSVU5USU1FKQorcHVibGljIEBpbnRlcmZhY2UgQSB7CisgIGludCB2YWx1ZSgpOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2Fubm90YXRpb25zL2NoYW5nZUFubm90YXRpb25SZXRlbnRpb25Qb2xpY3kyL3NyYy9BLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9hbm5vdGF0aW9ucy9jaGFuZ2VBbm5vdGF0aW9uUmV0ZW50aW9uUG9saWN5Mi9zcmMvQS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU2ZWExYzYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9hbm5vdGF0aW9ucy9jaGFuZ2VBbm5vdGF0aW9uUmV0ZW50aW9uUG9saWN5Mi9zcmMvQS5qYXZhCkBAIC0wLDAgKzEsNyBAQAoraW1wb3J0IGphdmEubGFuZy5hbm5vdGF0aW9uLio7CitpbXBvcnQgc3RhdGljIGphdmEubGFuZy5hbm5vdGF0aW9uLlJldGVudGlvblBvbGljeS4qOworCitAUmV0ZW50aW9uKFNPVVJDRSkKK3B1YmxpYyBAaW50ZXJmYWNlIEEgeworICBpbnQgdmFsdWUoKTsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9hbm5vdGF0aW9ucy9jaGFuZ2VBbm5vdGF0aW9uUmV0ZW50aW9uUG9saWN5Mi9zcmMvQy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvYW5ub3RhdGlvbnMvY2hhbmdlQW5ub3RhdGlvblJldGVudGlvblBvbGljeTIvc3JjL0MuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iOTYyYWVmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvYW5ub3RhdGlvbnMvY2hhbmdlQW5ub3RhdGlvblJldGVudGlvblBvbGljeTIvc3JjL0MuamF2YQpAQCAtMCwwICsxLDMgQEAKK0BBKDEwKSAKK3B1YmxpYyBjbGFzcyBDIHsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9hbm5vdGF0aW9ucy9jaGFuZ2VBbm5vdGF0aW9uUmV0ZW50aW9uUG9saWN5Mi9zcmMvQzEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2Fubm90YXRpb25zL2NoYW5nZUFubm90YXRpb25SZXRlbnRpb25Qb2xpY3kyL3NyYy9DMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAzNDI5MDUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9hbm5vdGF0aW9ucy9jaGFuZ2VBbm5vdGF0aW9uUmV0ZW50aW9uUG9saWN5Mi9zcmMvQzEuamF2YQpAQCAtMCwwICsxLDYgQEAKK3B1YmxpYyBjbGFzcyBDMSB7CisKKyAgQEEoMjApCisgIHZvaWQgZm9vKCkgeworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvYW5ub3RhdGlvbnMvY2hhbmdlQW5ub3RhdGlvblJldGVudGlvblBvbGljeTIvc3JjL0MyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9hbm5vdGF0aW9ucy9jaGFuZ2VBbm5vdGF0aW9uUmV0ZW50aW9uUG9saWN5Mi9zcmMvQzIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYTI0ZjE5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvYW5ub3RhdGlvbnMvY2hhbmdlQW5ub3RhdGlvblJldGVudGlvblBvbGljeTIvc3JjL0MyLmphdmEKQEAgLTAsMCArMSwzIEBACitwdWJsaWMgY2xhc3MgQzIgeworICBpbnQgZmllbGQ7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvYW5ub3RhdGlvbnMvY2hhbmdlQW5ub3RhdGlvblJldGVudGlvblBvbGljeTMubG9nIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvYW5ub3RhdGlvbnMvY2hhbmdlQW5ub3RhdGlvblJldGVudGlvblBvbGljeTMubG9nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhkYWIyMTAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9hbm5vdGF0aW9ucy9jaGFuZ2VBbm5vdGF0aW9uUmV0ZW50aW9uUG9saWN5My5sb2cKQEAgLTAsMCArMSwxOCBAQAorQ2xlYW5pbmcgb3V0cHV0IGZpbGVzOgorb3V0L3Byb2R1Y3Rpb24vQ2hhbmdlQW5ub3RhdGlvblJldGVudGlvblBvbGljeTMvQS5jbGFzcworRW5kIG9mIGZpbGVzCitDb21waWxpbmcgZmlsZXM6CitzcmMvQS5qYXZhCitFbmQgb2YgZmlsZXMKK0NsZWFuaW5nIG91dHB1dCBmaWxlczoKK291dC9wcm9kdWN0aW9uL0NoYW5nZUFubm90YXRpb25SZXRlbnRpb25Qb2xpY3kzL0EuY2xhc3MKK291dC9wcm9kdWN0aW9uL0NoYW5nZUFubm90YXRpb25SZXRlbnRpb25Qb2xpY3kzL0MuY2xhc3MKK291dC9wcm9kdWN0aW9uL0NoYW5nZUFubm90YXRpb25SZXRlbnRpb25Qb2xpY3kzL0MxLmNsYXNzCitvdXQvcHJvZHVjdGlvbi9DaGFuZ2VBbm5vdGF0aW9uUmV0ZW50aW9uUG9saWN5My9DMi5jbGFzcworRW5kIG9mIGZpbGVzCitDb21waWxpbmcgZmlsZXM6CitzcmMvQS5qYXZhCitzcmMvQy5qYXZhCitzcmMvQzEuamF2YQorc3JjL0MyLmphdmEKK0VuZCBvZiBmaWxlcwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvYW5ub3RhdGlvbnMvY2hhbmdlQW5ub3RhdGlvblJldGVudGlvblBvbGljeTMvQS5qYXZhLm5ldyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2Fubm90YXRpb25zL2NoYW5nZUFubm90YXRpb25SZXRlbnRpb25Qb2xpY3kzL0EuamF2YS5uZXcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDAwOTJhOQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2Fubm90YXRpb25zL2NoYW5nZUFubm90YXRpb25SZXRlbnRpb25Qb2xpY3kzL0EuamF2YS5uZXcKQEAgLTAsMCArMSw3IEBACitpbXBvcnQgamF2YS5sYW5nLmFubm90YXRpb24uKjsKK2ltcG9ydCBzdGF0aWMgamF2YS5sYW5nLmFubm90YXRpb24uUmV0ZW50aW9uUG9saWN5Lio7CisKK0BSZXRlbnRpb24oQ0xBU1MpCitwdWJsaWMgQGludGVyZmFjZSBBIHsKKyAgaW50IHZhbHVlKCk7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvYW5ub3RhdGlvbnMvY2hhbmdlQW5ub3RhdGlvblJldGVudGlvblBvbGljeTMvc3JjL0EuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2Fubm90YXRpb25zL2NoYW5nZUFubm90YXRpb25SZXRlbnRpb25Qb2xpY3kzL3NyYy9BLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTZlYTFjNgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2Fubm90YXRpb25zL2NoYW5nZUFubm90YXRpb25SZXRlbnRpb25Qb2xpY3kzL3NyYy9BLmphdmEKQEAgLTAsMCArMSw3IEBACitpbXBvcnQgamF2YS5sYW5nLmFubm90YXRpb24uKjsKK2ltcG9ydCBzdGF0aWMgamF2YS5sYW5nLmFubm90YXRpb24uUmV0ZW50aW9uUG9saWN5Lio7CisKK0BSZXRlbnRpb24oU09VUkNFKQorcHVibGljIEBpbnRlcmZhY2UgQSB7CisgIGludCB2YWx1ZSgpOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2Fubm90YXRpb25zL2NoYW5nZUFubm90YXRpb25SZXRlbnRpb25Qb2xpY3kzL3NyYy9DLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9hbm5vdGF0aW9ucy9jaGFuZ2VBbm5vdGF0aW9uUmV0ZW50aW9uUG9saWN5My9zcmMvQy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI5NjJhZWYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9hbm5vdGF0aW9ucy9jaGFuZ2VBbm5vdGF0aW9uUmV0ZW50aW9uUG9saWN5My9zcmMvQy5qYXZhCkBAIC0wLDAgKzEsMyBAQAorQEEoMTApIAorcHVibGljIGNsYXNzIEMgeworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2Fubm90YXRpb25zL2NoYW5nZUFubm90YXRpb25SZXRlbnRpb25Qb2xpY3kzL3NyYy9DMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvYW5ub3RhdGlvbnMvY2hhbmdlQW5ub3RhdGlvblJldGVudGlvblBvbGljeTMvc3JjL0MxLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDM0MjkwNQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2Fubm90YXRpb25zL2NoYW5nZUFubm90YXRpb25SZXRlbnRpb25Qb2xpY3kzL3NyYy9DMS5qYXZhCkBAIC0wLDAgKzEsNiBAQAorcHVibGljIGNsYXNzIEMxIHsKKworICBAQSgyMCkKKyAgdm9pZCBmb28oKSB7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9hbm5vdGF0aW9ucy9jaGFuZ2VBbm5vdGF0aW9uUmV0ZW50aW9uUG9saWN5My9zcmMvQzIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2Fubm90YXRpb25zL2NoYW5nZUFubm90YXRpb25SZXRlbnRpb25Qb2xpY3kzL3NyYy9DMi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU3NzYxNTZiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvYW5ub3RhdGlvbnMvY2hhbmdlQW5ub3RhdGlvblJldGVudGlvblBvbGljeTMvc3JjL0MyLmphdmEKQEAgLTAsMCArMSw1IEBACitwdWJsaWMgY2xhc3MgQzIgeworCisgIEBBKDMwKSAKKyAgaW50IGZpZWxkOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2Fubm90YXRpb25zL2NoYW5nZUFubm90YXRpb25SZXRlbnRpb25Qb2xpY3k0LmxvZyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2Fubm90YXRpb25zL2NoYW5nZUFubm90YXRpb25SZXRlbnRpb25Qb2xpY3k0LmxvZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMWZjNmM1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvYW5ub3RhdGlvbnMvY2hhbmdlQW5ub3RhdGlvblJldGVudGlvblBvbGljeTQubG9nCkBAIC0wLDAgKzEsMTQgQEAKK0NsZWFuaW5nIG91dHB1dCBmaWxlczoKK291dC9wcm9kdWN0aW9uL0NoYW5nZUFubm90YXRpb25SZXRlbnRpb25Qb2xpY3k0L0EuY2xhc3MKK0VuZCBvZiBmaWxlcworQ29tcGlsaW5nIGZpbGVzOgorc3JjL0EuamF2YQorRW5kIG9mIGZpbGVzCitDbGVhbmluZyBvdXRwdXQgZmlsZXM6CitvdXQvcHJvZHVjdGlvbi9DaGFuZ2VBbm5vdGF0aW9uUmV0ZW50aW9uUG9saWN5NC9DLmNsYXNzCitvdXQvcHJvZHVjdGlvbi9DaGFuZ2VBbm5vdGF0aW9uUmV0ZW50aW9uUG9saWN5NC9DMi5jbGFzcworRW5kIG9mIGZpbGVzCitDb21waWxpbmcgZmlsZXM6CitzcmMvQy5qYXZhCitzcmMvQzIuamF2YQorRW5kIG9mIGZpbGVzCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9hbm5vdGF0aW9ucy9jaGFuZ2VBbm5vdGF0aW9uUmV0ZW50aW9uUG9saWN5NC9BLmphdmEubmV3IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvYW5ub3RhdGlvbnMvY2hhbmdlQW5ub3RhdGlvblJldGVudGlvblBvbGljeTQvQS5qYXZhLm5ldwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NmVhMWM2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvYW5ub3RhdGlvbnMvY2hhbmdlQW5ub3RhdGlvblJldGVudGlvblBvbGljeTQvQS5qYXZhLm5ldwpAQCAtMCwwICsxLDcgQEAKK2ltcG9ydCBqYXZhLmxhbmcuYW5ub3RhdGlvbi4qOworaW1wb3J0IHN0YXRpYyBqYXZhLmxhbmcuYW5ub3RhdGlvbi5SZXRlbnRpb25Qb2xpY3kuKjsKKworQFJldGVudGlvbihTT1VSQ0UpCitwdWJsaWMgQGludGVyZmFjZSBBIHsKKyAgaW50IHZhbHVlKCk7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvYW5ub3RhdGlvbnMvY2hhbmdlQW5ub3RhdGlvblJldGVudGlvblBvbGljeTQvc3JjL0EuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2Fubm90YXRpb25zL2NoYW5nZUFubm90YXRpb25SZXRlbnRpb25Qb2xpY3k0L3NyYy9BLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTJkOGRjMAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2Fubm90YXRpb25zL2NoYW5nZUFubm90YXRpb25SZXRlbnRpb25Qb2xpY3k0L3NyYy9BLmphdmEKQEAgLTAsMCArMSw3IEBACitpbXBvcnQgamF2YS5sYW5nLmFubm90YXRpb24uKjsKK2ltcG9ydCBzdGF0aWMgamF2YS5sYW5nLmFubm90YXRpb24uUmV0ZW50aW9uUG9saWN5Lio7CisKK0BSZXRlbnRpb24oUlVOVElNRSkKK3B1YmxpYyBAaW50ZXJmYWNlIEEgeworICBpbnQgdmFsdWUoKTsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9hbm5vdGF0aW9ucy9jaGFuZ2VBbm5vdGF0aW9uUmV0ZW50aW9uUG9saWN5NC9zcmMvQy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvYW5ub3RhdGlvbnMvY2hhbmdlQW5ub3RhdGlvblJldGVudGlvblBvbGljeTQvc3JjL0MuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iOTYyYWVmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvYW5ub3RhdGlvbnMvY2hhbmdlQW5ub3RhdGlvblJldGVudGlvblBvbGljeTQvc3JjL0MuamF2YQpAQCAtMCwwICsxLDMgQEAKK0BBKDEwKSAKK3B1YmxpYyBjbGFzcyBDIHsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9hbm5vdGF0aW9ucy9jaGFuZ2VBbm5vdGF0aW9uUmV0ZW50aW9uUG9saWN5NC9zcmMvQzEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2Fubm90YXRpb25zL2NoYW5nZUFubm90YXRpb25SZXRlbnRpb25Qb2xpY3k0L3NyYy9DMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU2YjViMzAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9hbm5vdGF0aW9ucy9jaGFuZ2VBbm5vdGF0aW9uUmV0ZW50aW9uUG9saWN5NC9zcmMvQzEuamF2YQpAQCAtMCwwICsxLDQgQEAKK3B1YmxpYyBjbGFzcyBDMSB7CisgIHZvaWQgZm9vKCkgeworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvYW5ub3RhdGlvbnMvY2hhbmdlQW5ub3RhdGlvblJldGVudGlvblBvbGljeTQvc3JjL0MyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9hbm5vdGF0aW9ucy9jaGFuZ2VBbm5vdGF0aW9uUmV0ZW50aW9uUG9saWN5NC9zcmMvQzIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNzc2MTU2YgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2Fubm90YXRpb25zL2NoYW5nZUFubm90YXRpb25SZXRlbnRpb25Qb2xpY3k0L3NyYy9DMi5qYXZhCkBAIC0wLDAgKzEsNSBAQAorcHVibGljIGNsYXNzIEMyIHsKKworICBAQSgzMCkgCisgIGludCBmaWVsZDsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9hbm5vdGF0aW9ucy9jaGFuZ2VBbm5vdGF0aW9uVHlwZU1lbWJlclR5cGUubG9nIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvYW5ub3RhdGlvbnMvY2hhbmdlQW5ub3RhdGlvblR5cGVNZW1iZXJUeXBlLmxvZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMDcxMTVjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvYW5ub3RhdGlvbnMvY2hhbmdlQW5ub3RhdGlvblR5cGVNZW1iZXJUeXBlLmxvZwpAQCAtMCwwICsxLDE2IEBACitDbGVhbmluZyBvdXRwdXQgZmlsZXM6CitvdXQvcHJvZHVjdGlvbi9DaGFuZ2VBbm5vdGF0aW9uVHlwZU1lbWJlclR5cGUvQS5jbGFzcworRW5kIG9mIGZpbGVzCitDb21waWxpbmcgZmlsZXM6CitzcmMvQS5qYXZhCitFbmQgb2YgZmlsZXMKK0NsZWFuaW5nIG91dHB1dCBmaWxlczoKK291dC9wcm9kdWN0aW9uL0NoYW5nZUFubm90YXRpb25UeXBlTWVtYmVyVHlwZS9DLmNsYXNzCitvdXQvcHJvZHVjdGlvbi9DaGFuZ2VBbm5vdGF0aW9uVHlwZU1lbWJlclR5cGUvQzEuY2xhc3MKK291dC9wcm9kdWN0aW9uL0NoYW5nZUFubm90YXRpb25UeXBlTWVtYmVyVHlwZS9DMi5jbGFzcworRW5kIG9mIGZpbGVzCitDb21waWxpbmcgZmlsZXM6CitzcmMvQy5qYXZhCitzcmMvQzEuamF2YQorc3JjL0MyLmphdmEKK0VuZCBvZiBmaWxlcwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvYW5ub3RhdGlvbnMvY2hhbmdlQW5ub3RhdGlvblR5cGVNZW1iZXJUeXBlL0EuamF2YS5uZXcgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9hbm5vdGF0aW9ucy9jaGFuZ2VBbm5vdGF0aW9uVHlwZU1lbWJlclR5cGUvQS5qYXZhLm5ldwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMjEyNGZlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvYW5ub3RhdGlvbnMvY2hhbmdlQW5ub3RhdGlvblR5cGVNZW1iZXJUeXBlL0EuamF2YS5uZXcKQEAgLTAsMCArMSwzIEBACitwdWJsaWMgQGludGVyZmFjZSBBIHsKKyAgQ2xhc3MgdmFsdWUoKTsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9hbm5vdGF0aW9ucy9jaGFuZ2VBbm5vdGF0aW9uVHlwZU1lbWJlclR5cGUvc3JjL0EuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2Fubm90YXRpb25zL2NoYW5nZUFubm90YXRpb25UeXBlTWVtYmVyVHlwZS9zcmMvQS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg3ZjFiNjQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9hbm5vdGF0aW9ucy9jaGFuZ2VBbm5vdGF0aW9uVHlwZU1lbWJlclR5cGUvc3JjL0EuamF2YQpAQCAtMCwwICsxLDMgQEAKK3B1YmxpYyBAaW50ZXJmYWNlIEEgeworICBpbnQgdmFsdWUoKTsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9hbm5vdGF0aW9ucy9jaGFuZ2VBbm5vdGF0aW9uVHlwZU1lbWJlclR5cGUvc3JjL0MuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2Fubm90YXRpb25zL2NoYW5nZUFubm90YXRpb25UeXBlTWVtYmVyVHlwZS9zcmMvQy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI5NjJhZWYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9hbm5vdGF0aW9ucy9jaGFuZ2VBbm5vdGF0aW9uVHlwZU1lbWJlclR5cGUvc3JjL0MuamF2YQpAQCAtMCwwICsxLDMgQEAKK0BBKDEwKSAKK3B1YmxpYyBjbGFzcyBDIHsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9hbm5vdGF0aW9ucy9jaGFuZ2VBbm5vdGF0aW9uVHlwZU1lbWJlclR5cGUvc3JjL0MxLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9hbm5vdGF0aW9ucy9jaGFuZ2VBbm5vdGF0aW9uVHlwZU1lbWJlclR5cGUvc3JjL0MxLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDM0MjkwNQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2Fubm90YXRpb25zL2NoYW5nZUFubm90YXRpb25UeXBlTWVtYmVyVHlwZS9zcmMvQzEuamF2YQpAQCAtMCwwICsxLDYgQEAKK3B1YmxpYyBjbGFzcyBDMSB7CisKKyAgQEEoMjApCisgIHZvaWQgZm9vKCkgeworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvYW5ub3RhdGlvbnMvY2hhbmdlQW5ub3RhdGlvblR5cGVNZW1iZXJUeXBlL3NyYy9DMi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvYW5ub3RhdGlvbnMvY2hhbmdlQW5ub3RhdGlvblR5cGVNZW1iZXJUeXBlL3NyYy9DMi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU3NzYxNTZiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvYW5ub3RhdGlvbnMvY2hhbmdlQW5ub3RhdGlvblR5cGVNZW1iZXJUeXBlL3NyYy9DMi5qYXZhCkBAIC0wLDAgKzEsNSBAQAorcHVibGljIGNsYXNzIEMyIHsKKworICBAQSgzMCkgCisgIGludCBmaWVsZDsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9hbm5vdGF0aW9ucy9jbGFzc0FzQXJndW1lbnQubG9nIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvYW5ub3RhdGlvbnMvY2xhc3NBc0FyZ3VtZW50LmxvZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MTIyNTQyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvYW5ub3RhdGlvbnMvY2xhc3NBc0FyZ3VtZW50LmxvZwpAQCAtMCwwICsxLDEyIEBACitDbGVhbmluZyBvdXRwdXQgZmlsZXM6CitvdXQvcHJvZHVjdGlvbi9DbGFzc0FzQXJndW1lbnQvQS5jbGFzcworRW5kIG9mIGZpbGVzCitDb21waWxpbmcgZmlsZXM6CitzcmMvQS5qYXZhCitFbmQgb2YgZmlsZXMKK0NsZWFuaW5nIG91dHB1dCBmaWxlczoKK291dC9wcm9kdWN0aW9uL0NsYXNzQXNBcmd1bWVudC9Bbm5vdGF0ZWQuY2xhc3MKK0VuZCBvZiBmaWxlcworQ29tcGlsaW5nIGZpbGVzOgorc3JjL0Fubm90YXRlZC5qYXZhCitFbmQgb2YgZmlsZXMKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2Fubm90YXRpb25zL2NsYXNzQXNBcmd1bWVudC9BLmphdmEubmV3IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvYW5ub3RhdGlvbnMvY2xhc3NBc0FyZ3VtZW50L0EuamF2YS5uZXcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTY5ZGUyOQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2Fubm90YXRpb25zL2NsYXNzQXNBcmd1bWVudC9BLmphdmEubmV3CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9hbm5vdGF0aW9ucy9jbGFzc0FzQXJndW1lbnQvc3JjL0EuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2Fubm90YXRpb25zL2NsYXNzQXNBcmd1bWVudC9zcmMvQS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY1NWU2MmEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9hbm5vdGF0aW9ucy9jbGFzc0FzQXJndW1lbnQvc3JjL0EuamF2YQpAQCAtMCwwICsxLDkgQEAKKy8qKgorICogQ3JlYXRlZCB3aXRoIEludGVsbGlKIElERUEuCisgKiBVc2VyOiBkYgorICogRGF0ZTogMDQuMDUuMTIKKyAqIFRpbWU6IDE3OjQyCisgKiBUbyBjaGFuZ2UgdGhpcyB0ZW1wbGF0ZSB1c2UgRmlsZSB8IFNldHRpbmdzIHwgRmlsZSBUZW1wbGF0ZXMuCisgKi8KK3B1YmxpYyBjbGFzcyBBIHsKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2Fubm90YXRpb25zL2NsYXNzQXNBcmd1bWVudC9zcmMvQW5uLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9hbm5vdGF0aW9ucy9jbGFzc0FzQXJndW1lbnQvc3JjL0Fubi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJlYzJmOWUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9hbm5vdGF0aW9ucy9jbGFzc0FzQXJndW1lbnQvc3JjL0Fubi5qYXZhCkBAIC0wLDAgKzEsMTMgQEAKKy8qKgorICogQ3JlYXRlZCB3aXRoIEludGVsbGlKIElERUEuCisgKiBVc2VyOiBkYgorICogRGF0ZTogMDQuMDUuMTIKKyAqIFRpbWU6IDE3OjQyCisgKiBUbyBjaGFuZ2UgdGhpcyB0ZW1wbGF0ZSB1c2UgRmlsZSB8IFNldHRpbmdzIHwgRmlsZSBUZW1wbGF0ZXMuCisgKi8KK2ltcG9ydCBqYXZhLmxhbmcuYW5ub3RhdGlvbi5SZXRlbnRpb247CitpbXBvcnQgamF2YS5sYW5nLmFubm90YXRpb24uUmV0ZW50aW9uUG9saWN5OworCitAUmV0ZW50aW9uKFJldGVudGlvblBvbGljeS5DTEFTUykgcHVibGljIEBpbnRlcmZhY2UgQW5uIHsKKyAgICAgICAgQ2xhc3NbXSB2YWx1ZSgpOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2Fubm90YXRpb25zL2NsYXNzQXNBcmd1bWVudC9zcmMvQW5ub3RhdGVkLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9hbm5vdGF0aW9ucy9jbGFzc0FzQXJndW1lbnQvc3JjL0Fubm90YXRlZC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA5ZmFmYjUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9hbm5vdGF0aW9ucy9jbGFzc0FzQXJndW1lbnQvc3JjL0Fubm90YXRlZC5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKKy8qKgorICogQ3JlYXRlZCB3aXRoIEludGVsbGlKIElERUEuCisgKiBVc2VyOiBkYgorICogRGF0ZTogMDQuMDUuMTIKKyAqIFRpbWU6IDE3OjQzCisgKiBUbyBjaGFuZ2UgdGhpcyB0ZW1wbGF0ZSB1c2UgRmlsZSB8IFNldHRpbmdzIHwgRmlsZSBUZW1wbGF0ZXMuCisgKi8KK0BBbm4oQS5jbGFzcykKK3B1YmxpYyBjbGFzcyBBbm5vdGF0ZWQgeworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvYW5ub3RhdGlvbnMvY29uc2VydmF0aXZlTm9uSW5jcmVtZW50YWwubG9nIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvYW5ub3RhdGlvbnMvY29uc2VydmF0aXZlTm9uSW5jcmVtZW50YWwubG9nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM5ZjRjZTcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9hbm5vdGF0aW9ucy9jb25zZXJ2YXRpdmVOb25JbmNyZW1lbnRhbC5sb2cKQEAgLTAsMCArMSwyNiBAQAorQ2xlYW5pbmcgb3V0cHV0IGZpbGVzOgorb3V0L3Byb2R1Y3Rpb24vYTIvQTIuY2xhc3MKK0VuZCBvZiBmaWxlcworQ29tcGlsaW5nIGZpbGVzOgorYTIvc3JjL0EyLmphdmEKK0VuZCBvZiBmaWxlcworQ2xlYW5pbmcgb3V0cHV0IGZpbGVzOgorb3V0L3Byb2R1Y3Rpb24vYTIvQTIuY2xhc3MKK291dC9wcm9kdWN0aW9uL2EyL0MuY2xhc3MKK0VuZCBvZiBmaWxlcworQ29tcGlsaW5nIGZpbGVzOgorYTIvc3JjL0EyLmphdmEKK2EyL3NyYy9DLmphdmEKK0VuZCBvZiBmaWxlcworQ2xlYW5pbmcgb3V0cHV0IGZpbGVzOgorb3V0L3Byb2R1Y3Rpb24vYjIyL0IyMi5jbGFzcworRW5kIG9mIGZpbGVzCitDb21waWxpbmcgZmlsZXM6CitiMjIvc3JjL0IyMi5qYXZhCitFbmQgb2YgZmlsZXMKK0NsZWFuaW5nIG91dHB1dCBmaWxlczoKK291dC9wcm9kdWN0aW9uL2IyMS9CMjEuY2xhc3MKK0VuZCBvZiBmaWxlcworQ29tcGlsaW5nIGZpbGVzOgorYjIxL3NyYy9CMjEuamF2YQorRW5kIG9mIGZpbGVzCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9hbm5vdGF0aW9ucy9jb25zZXJ2YXRpdmVOb25JbmNyZW1lbnRhbC8uaWRlYS9taXNjLnhtbCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2Fubm90YXRpb25zL2NvbnNlcnZhdGl2ZU5vbkluY3JlbWVudGFsLy5pZGVhL21pc2MueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM5YjNmODEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9hbm5vdGF0aW9ucy9jb25zZXJ2YXRpdmVOb25JbmNyZW1lbnRhbC8uaWRlYS9taXNjLnhtbApAQCAtMCwwICsxLDQ5IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPHByb2plY3QgdmVyc2lvbj0iNCI+CisgIDxjb21wb25lbnQgbmFtZT0iRW50cnlQb2ludHNNYW5hZ2VyIj4KKyAgICA8ZW50cnlfcG9pbnRzIHZlcnNpb249IjIuMCIgLz4KKyAgPC9jb21wb25lbnQ+CisgIDxjb21wb25lbnQgbmFtZT0iSmF2YWRvY0dlbmVyYXRpb25NYW5hZ2VyIj4KKyAgICA8b3B0aW9uIG5hbWU9Ik9VVFBVVF9ESVJFQ1RPUlkiIC8+CisgICAgPG9wdGlvbiBuYW1lPSJPUFRJT05fU0NPUEUiIHZhbHVlPSJwcm90ZWN0ZWQiIC8+CisgICAgPG9wdGlvbiBuYW1lPSJPUFRJT05fSElFUkFSQ0hZIiB2YWx1ZT0idHJ1ZSIgLz4KKyAgICA8b3B0aW9uIG5hbWU9Ik9QVElPTl9OQVZJR0FUT1IiIHZhbHVlPSJ0cnVlIiAvPgorICAgIDxvcHRpb24gbmFtZT0iT1BUSU9OX0lOREVYIiB2YWx1ZT0idHJ1ZSIgLz4KKyAgICA8b3B0aW9uIG5hbWU9Ik9QVElPTl9TRVBBUkFURV9JTkRFWCIgdmFsdWU9InRydWUiIC8+CisgICAgPG9wdGlvbiBuYW1lPSJPUFRJT05fRE9DVU1FTlRfVEFHX1VTRSIgdmFsdWU9ImZhbHNlIiAvPgorICAgIDxvcHRpb24gbmFtZT0iT1BUSU9OX0RPQ1VNRU5UX1RBR19BVVRIT1IiIHZhbHVlPSJmYWxzZSIgLz4KKyAgICA8b3B0aW9uIG5hbWU9Ik9QVElPTl9ET0NVTUVOVF9UQUdfVkVSU0lPTiIgdmFsdWU9ImZhbHNlIiAvPgorICAgIDxvcHRpb24gbmFtZT0iT1BUSU9OX0RPQ1VNRU5UX1RBR19ERVBSRUNBVEVEIiB2YWx1ZT0idHJ1ZSIgLz4KKyAgICA8b3B0aW9uIG5hbWU9Ik9QVElPTl9ERVBSRUNBVEVEX0xJU1QiIHZhbHVlPSJ0cnVlIiAvPgorICAgIDxvcHRpb24gbmFtZT0iT1RIRVJfT1BUSU9OUyIgdmFsdWU9IiIgLz4KKyAgICA8b3B0aW9uIG5hbWU9IkhFQVBfU0laRSIgLz4KKyAgICA8b3B0aW9uIG5hbWU9IkxPQ0FMRSIgLz4KKyAgICA8b3B0aW9uIG5hbWU9Ik9QRU5fSU5fQlJPV1NFUiIgdmFsdWU9InRydWUiIC8+CisgIDwvY29tcG9uZW50PgorICA8Y29tcG9uZW50IG5hbWU9Ik1vZHVsZUVkaXRvclN0YXRlIj4KKyAgICA8b3B0aW9uIG5hbWU9IkxBU1RfRURJVEVEX01PRFVMRV9OQU1FIiAvPgorICAgIDxvcHRpb24gbmFtZT0iTEFTVF9FRElURURfVEFCX05BTUUiIC8+CisgIDwvY29tcG9uZW50PgorICA8Y29tcG9uZW50IG5hbWU9Ik51bGxhYmxlTm90TnVsbE1hbmFnZXIiPgorICAgIDxvcHRpb24gbmFtZT0ibXlEZWZhdWx0TnVsbGFibGUiIHZhbHVlPSJvcmcuamV0YnJhaW5zLmFubm90YXRpb25zLk51bGxhYmxlIiAvPgorICAgIDxvcHRpb24gbmFtZT0ibXlEZWZhdWx0Tm90TnVsbCIgdmFsdWU9Im9yZy5qZXRicmFpbnMuYW5ub3RhdGlvbnMuTm90TnVsbCIgLz4KKyAgICA8b3B0aW9uIG5hbWU9Im15TnVsbGFibGVzIj4KKyAgICAgIDx2YWx1ZT4KKyAgICAgICAgPGxpc3Qgc2l6ZT0iMCIgLz4KKyAgICAgIDwvdmFsdWU+CisgICAgPC9vcHRpb24+CisgICAgPG9wdGlvbiBuYW1lPSJteU5vdE51bGxzIj4KKyAgICAgIDx2YWx1ZT4KKyAgICAgICAgPGxpc3Qgc2l6ZT0iMyI+CisgICAgICAgICAgPGl0ZW0gaW5kZXg9IjAiIGNsYXNzPSJqYXZhLmxhbmcuU3RyaW5nIiBpdGVtdmFsdWU9Im9yZy5qZXRicmFpbnMuYW5ub3RhdGlvbnMuTm90TnVsbCIgLz4KKyAgICAgICAgICA8aXRlbSBpbmRleD0iMSIgY2xhc3M9ImphdmEubGFuZy5TdHJpbmciIGl0ZW12YWx1ZT0iamF2YXguYW5ub3RhdGlvbi5Ob25udWxsIiAvPgorICAgICAgICAgIDxpdGVtIGluZGV4PSIyIiBjbGFzcz0iamF2YS5sYW5nLlN0cmluZyIgaXRlbXZhbHVlPSJlZHUudW1kLmNzLmZpbmRidWdzLmFubm90YXRpb25zLk5vbk51bGwiIC8+CisgICAgICAgIDwvbGlzdD4KKyAgICAgIDwvdmFsdWU+CisgICAgPC9vcHRpb24+CisgIDwvY29tcG9uZW50PgorICA8Y29tcG9uZW50IG5hbWU9IlByb2plY3RSb290TWFuYWdlciIgdmVyc2lvbj0iMiIgbGFuZ3VhZ2VMZXZlbD0iSkRLXzFfNSIgYXNzZXJ0LWtleXdvcmQ9InRydWUiIGpkay0xNT0idHJ1ZSIgcHJvamVjdC1qZGstbmFtZT0iSURFQSBqZGsiIHByb2plY3QtamRrLXR5cGU9IkphdmFTREsiPgorICAgIDxvdXRwdXQgdXJsPSJmaWxlOi8vJFBST0pFQ1RfRElSJC9vdXQiIC8+CisgIDwvY29tcG9uZW50PgorPC9wcm9qZWN0PgorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9hbm5vdGF0aW9ucy9jb25zZXJ2YXRpdmVOb25JbmNyZW1lbnRhbC8uaWRlYS9tb2R1bGVzLnhtbCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2Fubm90YXRpb25zL2NvbnNlcnZhdGl2ZU5vbkluY3JlbWVudGFsLy5pZGVhL21vZHVsZXMueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZmOWE0ZTIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9hbm5vdGF0aW9ucy9jb25zZXJ2YXRpdmVOb25JbmNyZW1lbnRhbC8uaWRlYS9tb2R1bGVzLnhtbApAQCAtMCwwICsxLDEzIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPHByb2plY3QgdmVyc2lvbj0iNCI+CisgIDxjb21wb25lbnQgbmFtZT0iUHJvamVjdE1vZHVsZU1hbmFnZXIiPgorICAgIDxtb2R1bGVzPgorICAgICAgPG1vZHVsZSBmaWxldXJsPSJmaWxlOi8vJFBST0pFQ1RfRElSJC9hMS9hMS5pbWwiIGZpbGVwYXRoPSIkUFJPSkVDVF9ESVIkL2ExL2ExLmltbCIgLz4KKyAgICAgIDxtb2R1bGUgZmlsZXVybD0iZmlsZTovLyRQUk9KRUNUX0RJUiQvYTIvYTIuaW1sIiBmaWxlcGF0aD0iJFBST0pFQ1RfRElSJC9hMi9hMi5pbWwiIC8+CisgICAgICA8bW9kdWxlIGZpbGV1cmw9ImZpbGU6Ly8kUFJPSkVDVF9ESVIkL2IyMS9iMjEuaW1sIiBmaWxlcGF0aD0iJFBST0pFQ1RfRElSJC9iMjEvYjIxLmltbCIgLz4KKyAgICAgIDxtb2R1bGUgZmlsZXVybD0iZmlsZTovLyRQUk9KRUNUX0RJUiQvYjIyL2IyMi5pbWwiIGZpbGVwYXRoPSIkUFJPSkVDVF9ESVIkL2IyMi9iMjIuaW1sIiAvPgorICAgICAgPG1vZHVsZSBmaWxldXJsPSJmaWxlOi8vJFBST0pFQ1RfRElSJC9jb25zZXJ2YXRpdmVOb25JbmNyZW1lbnRhbC5pbWwiIGZpbGVwYXRoPSIkUFJPSkVDVF9ESVIkL2NvbnNlcnZhdGl2ZU5vbkluY3JlbWVudGFsLmltbCIgLz4KKyAgICA8L21vZHVsZXM+CisgIDwvY29tcG9uZW50PgorPC9wcm9qZWN0PgorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9hbm5vdGF0aW9ucy9jb25zZXJ2YXRpdmVOb25JbmNyZW1lbnRhbC9hMS9hMS5pbWwgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9hbm5vdGF0aW9ucy9jb25zZXJ2YXRpdmVOb25JbmNyZW1lbnRhbC9hMS9hMS5pbWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmQyZGViYQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2Fubm90YXRpb25zL2NvbnNlcnZhdGl2ZU5vbkluY3JlbWVudGFsL2ExL2ExLmltbApAQCAtMCwwICsxLDEzIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPG1vZHVsZSB0eXBlPSJKQVZBX01PRFVMRSIgdmVyc2lvbj0iNCI+CisgIDxjb21wb25lbnQgbmFtZT0iTmV3TW9kdWxlUm9vdE1hbmFnZXIiIGluaGVyaXQtY29tcGlsZXItb3V0cHV0PSJ0cnVlIj4KKyAgICA8ZXhjbHVkZS1vdXRwdXQgLz4KKyAgICA8Y29udGVudCB1cmw9ImZpbGU6Ly8kTU9EVUxFX0RJUiQiPgorICAgICAgPHNvdXJjZUZvbGRlciB1cmw9ImZpbGU6Ly8kTU9EVUxFX0RJUiQvc3JjIiBpc1Rlc3RTb3VyY2U9ImZhbHNlIiAvPgorICAgIDwvY29udGVudD4KKyAgICA8b3JkZXJFbnRyeSB0eXBlPSJpbmhlcml0ZWRKZGsiIC8+CisgICAgPG9yZGVyRW50cnkgdHlwZT0ic291cmNlRm9sZGVyIiBmb3JUZXN0cz0iZmFsc2UiIC8+CisgICAgPG9yZGVyRW50cnkgdHlwZT0ibW9kdWxlIiBtb2R1bGUtbmFtZT0iY29uc2VydmF0aXZlTm9uSW5jcmVtZW50YWwiIC8+CisgIDwvY29tcG9uZW50PgorPC9tb2R1bGU+CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2Fubm90YXRpb25zL2NvbnNlcnZhdGl2ZU5vbkluY3JlbWVudGFsL2ExL3NyYy9BMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvYW5ub3RhdGlvbnMvY29uc2VydmF0aXZlTm9uSW5jcmVtZW50YWwvYTEvc3JjL0ExLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2I5MDk0OTkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9hbm5vdGF0aW9ucy9jb25zZXJ2YXRpdmVOb25JbmNyZW1lbnRhbC9hMS9zcmMvQTEuamF2YQpAQCAtMCwwICsxLDkgQEAKKy8qKgorICogQ3JlYXRlZCBieSBJbnRlbGxpSiBJREVBLgorICogVXNlcjogZGIKKyAqIERhdGU6IDA2LjA4LjExCisgKiBUaW1lOiAxNDo1NgorICogVG8gY2hhbmdlIHRoaXMgdGVtcGxhdGUgdXNlIEZpbGUgfCBTZXR0aW5ncyB8IEZpbGUgVGVtcGxhdGVzLgorICovCitwdWJsaWMgY2xhc3MgQTEgeworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvYW5ub3RhdGlvbnMvY29uc2VydmF0aXZlTm9uSW5jcmVtZW50YWwvYTIvYTIuaW1sIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvYW5ub3RhdGlvbnMvY29uc2VydmF0aXZlTm9uSW5jcmVtZW50YWwvYTIvYTIuaW1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZkMmRlYmEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9hbm5vdGF0aW9ucy9jb25zZXJ2YXRpdmVOb25JbmNyZW1lbnRhbC9hMi9hMi5pbWwKQEAgLTAsMCArMSwxMyBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxtb2R1bGUgdHlwZT0iSkFWQV9NT0RVTEUiIHZlcnNpb249IjQiPgorICA8Y29tcG9uZW50IG5hbWU9Ik5ld01vZHVsZVJvb3RNYW5hZ2VyIiBpbmhlcml0LWNvbXBpbGVyLW91dHB1dD0idHJ1ZSI+CisgICAgPGV4Y2x1ZGUtb3V0cHV0IC8+CisgICAgPGNvbnRlbnQgdXJsPSJmaWxlOi8vJE1PRFVMRV9ESVIkIj4KKyAgICAgIDxzb3VyY2VGb2xkZXIgdXJsPSJmaWxlOi8vJE1PRFVMRV9ESVIkL3NyYyIgaXNUZXN0U291cmNlPSJmYWxzZSIgLz4KKyAgICA8L2NvbnRlbnQ+CisgICAgPG9yZGVyRW50cnkgdHlwZT0iaW5oZXJpdGVkSmRrIiAvPgorICAgIDxvcmRlckVudHJ5IHR5cGU9InNvdXJjZUZvbGRlciIgZm9yVGVzdHM9ImZhbHNlIiAvPgorICAgIDxvcmRlckVudHJ5IHR5cGU9Im1vZHVsZSIgbW9kdWxlLW5hbWU9ImNvbnNlcnZhdGl2ZU5vbkluY3JlbWVudGFsIiAvPgorICA8L2NvbXBvbmVudD4KKzwvbW9kdWxlPgorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9hbm5vdGF0aW9ucy9jb25zZXJ2YXRpdmVOb25JbmNyZW1lbnRhbC9hMi9zcmMvQTIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2Fubm90YXRpb25zL2NvbnNlcnZhdGl2ZU5vbkluY3JlbWVudGFsL2EyL3NyYy9BMi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ2YWMyOTgyMAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2Fubm90YXRpb25zL2NvbnNlcnZhdGl2ZU5vbkluY3JlbWVudGFsL2EyL3NyYy9BMi5qYXZhCkBAIC0wLDAgKzEsMTQgQEAKK2ltcG9ydCBqYXZhLmxhbmcuYW5ub3RhdGlvbi5SZXRlbnRpb247CitpbXBvcnQgamF2YS5sYW5nLmFubm90YXRpb24uUmV0ZW50aW9uUG9saWN5OworCisvKioKKyAqIENyZWF0ZWQgYnkgSW50ZWxsaUogSURFQS4KKyAqIFVzZXI6IGRiCisgKiBEYXRlOiAwNi4wOC4xMQorICogVGltZTogMTQ6NTYKKyAqIFRvIGNoYW5nZSB0aGlzIHRlbXBsYXRlIHVzZSBGaWxlIHwgU2V0dGluZ3MgfCBGaWxlIFRlbXBsYXRlcy4KKyAqLworCitAUmV0ZW50aW9uKFJldGVudGlvblBvbGljeS5TT1VSQ0UpCitwdWJsaWMgQGludGVyZmFjZSBBMiB7Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9hbm5vdGF0aW9ucy9jb25zZXJ2YXRpdmVOb25JbmNyZW1lbnRhbC9hMi9zcmMvQTIuamF2YS5uZXcgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9hbm5vdGF0aW9ucy9jb25zZXJ2YXRpdmVOb25JbmNyZW1lbnRhbC9hMi9zcmMvQTIuamF2YS5uZXcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGQ2NjNhMQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2Fubm90YXRpb25zL2NvbnNlcnZhdGl2ZU5vbkluY3JlbWVudGFsL2EyL3NyYy9BMi5qYXZhLm5ldwpAQCAtMCwwICsxLDE1IEBACitpbXBvcnQgamF2YS5sYW5nLmFubm90YXRpb24uUmV0ZW50aW9uOworaW1wb3J0IGphdmEubGFuZy5hbm5vdGF0aW9uLlJldGVudGlvblBvbGljeTsKKworLyoqCisgKiBDcmVhdGVkIGJ5IEludGVsbGlKIElERUEuCisgKiBVc2VyOiBkYgorICogRGF0ZTogMDYuMDguMTEKKyAqIFRpbWU6IDE0OjU2CisgKiBUbyBjaGFuZ2UgdGhpcyB0ZW1wbGF0ZSB1c2UgRmlsZSB8IFNldHRpbmdzIHwgRmlsZSBUZW1wbGF0ZXMuCisgKi8KKworQFJldGVudGlvbihSZXRlbnRpb25Qb2xpY3kuU09VUkNFKQorcHVibGljIEBpbnRlcmZhY2UgQTIgeworICBTdHJpbmcgdmFsdWUgKCk7Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9hbm5vdGF0aW9ucy9jb25zZXJ2YXRpdmVOb25JbmNyZW1lbnRhbC9hMi9zcmMvQy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvYW5ub3RhdGlvbnMvY29uc2VydmF0aXZlTm9uSW5jcmVtZW50YWwvYTIvc3JjL0MuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hN2M0YTEwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvYW5ub3RhdGlvbnMvY29uc2VydmF0aXZlTm9uSW5jcmVtZW50YWwvYTIvc3JjL0MuamF2YQpAQCAtMCwwICsxIEBACitwdWJsaWMgY2xhc3MgQyB7fQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2Fubm90YXRpb25zL2NvbnNlcnZhdGl2ZU5vbkluY3JlbWVudGFsL2IyMS9iMjEuaW1sIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvYW5ub3RhdGlvbnMvY29uc2VydmF0aXZlTm9uSW5jcmVtZW50YWwvYjIxL2IyMS5pbWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDJlYTM2NQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2Fubm90YXRpb25zL2NvbnNlcnZhdGl2ZU5vbkluY3JlbWVudGFsL2IyMS9iMjEuaW1sCkBAIC0wLDAgKzEsMTMgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8bW9kdWxlIHR5cGU9IkpBVkFfTU9EVUxFIiB2ZXJzaW9uPSI0Ij4KKyAgPGNvbXBvbmVudCBuYW1lPSJOZXdNb2R1bGVSb290TWFuYWdlciIgaW5oZXJpdC1jb21waWxlci1vdXRwdXQ9InRydWUiPgorICAgIDxleGNsdWRlLW91dHB1dCAvPgorICAgIDxjb250ZW50IHVybD0iZmlsZTovLyRNT0RVTEVfRElSJCI+CisgICAgICA8c291cmNlRm9sZGVyIHVybD0iZmlsZTovLyRNT0RVTEVfRElSJC9zcmMiIGlzVGVzdFNvdXJjZT0iZmFsc2UiIC8+CisgICAgPC9jb250ZW50PgorICAgIDxvcmRlckVudHJ5IHR5cGU9ImluaGVyaXRlZEpkayIgLz4KKyAgICA8b3JkZXJFbnRyeSB0eXBlPSJzb3VyY2VGb2xkZXIiIGZvclRlc3RzPSJmYWxzZSIgLz4KKyAgICA8b3JkZXJFbnRyeSB0eXBlPSJtb2R1bGUiIG1vZHVsZS1uYW1lPSJhMiIgLz4KKyAgPC9jb21wb25lbnQ+Cis8L21vZHVsZT4KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvYW5ub3RhdGlvbnMvY29uc2VydmF0aXZlTm9uSW5jcmVtZW50YWwvYjIxL3NyYy9CMjEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2Fubm90YXRpb25zL2NvbnNlcnZhdGl2ZU5vbkluY3JlbWVudGFsL2IyMS9zcmMvQjIxLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGRiNGQxZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2Fubm90YXRpb25zL2NvbnNlcnZhdGl2ZU5vbkluY3JlbWVudGFsL2IyMS9zcmMvQjIxLmphdmEKQEAgLTAsMCArMSw5IEBACisvKioKKyAqIENyZWF0ZWQgYnkgSW50ZWxsaUogSURFQS4KKyAqIFVzZXI6IGRiCisgKiBEYXRlOiAwNi4wOC4xMQorICogVGltZTogMTQ6NTcKKyAqIFRvIGNoYW5nZSB0aGlzIHRlbXBsYXRlIHVzZSBGaWxlIHwgU2V0dGluZ3MgfCBGaWxlIFRlbXBsYXRlcy4KKyAqLworcHVibGljIGNsYXNzIEIyMSB7Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9hbm5vdGF0aW9ucy9jb25zZXJ2YXRpdmVOb25JbmNyZW1lbnRhbC9iMjIvYjIyLmltbCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2Fubm90YXRpb25zL2NvbnNlcnZhdGl2ZU5vbkluY3JlbWVudGFsL2IyMi9iMjIuaW1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAyZWEzNjUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9hbm5vdGF0aW9ucy9jb25zZXJ2YXRpdmVOb25JbmNyZW1lbnRhbC9iMjIvYjIyLmltbApAQCAtMCwwICsxLDEzIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPG1vZHVsZSB0eXBlPSJKQVZBX01PRFVMRSIgdmVyc2lvbj0iNCI+CisgIDxjb21wb25lbnQgbmFtZT0iTmV3TW9kdWxlUm9vdE1hbmFnZXIiIGluaGVyaXQtY29tcGlsZXItb3V0cHV0PSJ0cnVlIj4KKyAgICA8ZXhjbHVkZS1vdXRwdXQgLz4KKyAgICA8Y29udGVudCB1cmw9ImZpbGU6Ly8kTU9EVUxFX0RJUiQiPgorICAgICAgPHNvdXJjZUZvbGRlciB1cmw9ImZpbGU6Ly8kTU9EVUxFX0RJUiQvc3JjIiBpc1Rlc3RTb3VyY2U9ImZhbHNlIiAvPgorICAgIDwvY29udGVudD4KKyAgICA8b3JkZXJFbnRyeSB0eXBlPSJpbmhlcml0ZWRKZGsiIC8+CisgICAgPG9yZGVyRW50cnkgdHlwZT0ic291cmNlRm9sZGVyIiBmb3JUZXN0cz0iZmFsc2UiIC8+CisgICAgPG9yZGVyRW50cnkgdHlwZT0ibW9kdWxlIiBtb2R1bGUtbmFtZT0iYTIiIC8+CisgIDwvY29tcG9uZW50PgorPC9tb2R1bGU+CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2Fubm90YXRpb25zL2NvbnNlcnZhdGl2ZU5vbkluY3JlbWVudGFsL2IyMi9zcmMvQjIyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9hbm5vdGF0aW9ucy9jb25zZXJ2YXRpdmVOb25JbmNyZW1lbnRhbC9iMjIvc3JjL0IyMi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA4MTI5NTQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9hbm5vdGF0aW9ucy9jb25zZXJ2YXRpdmVOb25JbmNyZW1lbnRhbC9iMjIvc3JjL0IyMi5qYXZhCkBAIC0wLDAgKzEsOSBAQAorLyoqCisgKiBDcmVhdGVkIGJ5IEludGVsbGlKIElERUEuCisgKiBVc2VyOiBkYgorICogRGF0ZTogMDYuMDguMTEKKyAqIFRpbWU6IDE0OjU3CisgKiBUbyBjaGFuZ2UgdGhpcyB0ZW1wbGF0ZSB1c2UgRmlsZSB8IFNldHRpbmdzIHwgRmlsZSBUZW1wbGF0ZXMuCisgKi8KK3B1YmxpYyBjbGFzcyBCMjIgeworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvYW5ub3RhdGlvbnMvY29uc2VydmF0aXZlTm9uSW5jcmVtZW50YWwvY29uc2VydmF0aXZlTm9uSW5jcmVtZW50YWwuaW1sIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvYW5ub3RhdGlvbnMvY29uc2VydmF0aXZlTm9uSW5jcmVtZW50YWwvY29uc2VydmF0aXZlTm9uSW5jcmVtZW50YWwuaW1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ1YzA3NDMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9hbm5vdGF0aW9ucy9jb25zZXJ2YXRpdmVOb25JbmNyZW1lbnRhbC9jb25zZXJ2YXRpdmVOb25JbmNyZW1lbnRhbC5pbWwKQEAgLTAsMCArMSwxMiBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxtb2R1bGUgdHlwZT0iSkFWQV9NT0RVTEUiIHZlcnNpb249IjQiPgorICA8Y29tcG9uZW50IG5hbWU9Ik5ld01vZHVsZVJvb3RNYW5hZ2VyIiBpbmhlcml0LWNvbXBpbGVyLW91dHB1dD0idHJ1ZSI+CisgICAgPGV4Y2x1ZGUtb3V0cHV0IC8+CisgICAgPGNvbnRlbnQgdXJsPSJmaWxlOi8vJE1PRFVMRV9ESVIkIj4KKyAgICAgIDxzb3VyY2VGb2xkZXIgdXJsPSJmaWxlOi8vJE1PRFVMRV9ESVIkL3NyYyIgaXNUZXN0U291cmNlPSJmYWxzZSIgLz4KKyAgICA8L2NvbnRlbnQ+CisgICAgPG9yZGVyRW50cnkgdHlwZT0iaW5oZXJpdGVkSmRrIiAvPgorICAgIDxvcmRlckVudHJ5IHR5cGU9InNvdXJjZUZvbGRlciIgZm9yVGVzdHM9ImZhbHNlIiAvPgorICA8L2NvbXBvbmVudD4KKzwvbW9kdWxlPgorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9hbm5vdGF0aW9ucy9jb25zZXJ2YXRpdmVOb25JbmNyZW1lbnRhbC9zcmMvQS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvYW5ub3RhdGlvbnMvY29uc2VydmF0aXZlTm9uSW5jcmVtZW50YWwvc3JjL0EuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZDhiZmIzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvYW5ub3RhdGlvbnMvY29uc2VydmF0aXZlTm9uSW5jcmVtZW50YWwvc3JjL0EuamF2YQpAQCAtMCwwICsxLDkgQEAKKy8qKgorICogQ3JlYXRlZCBieSBJbnRlbGxpSiBJREVBLgorICogVXNlcjogZGIKKyAqIERhdGU6IDA2LjA4LjExCisgKiBUaW1lOiAxNDo1NgorICogVG8gY2hhbmdlIHRoaXMgdGVtcGxhdGUgdXNlIEZpbGUgfCBTZXR0aW5ncyB8IEZpbGUgVGVtcGxhdGVzLgorICovCitwdWJsaWMgY2xhc3MgQSB7Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9hbm5vdGF0aW9ucy9jb25zZXJ2YXRpdmVOb25JbmNyZW1lbnRhbDEubG9nIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvYW5ub3RhdGlvbnMvY29uc2VydmF0aXZlTm9uSW5jcmVtZW50YWwxLmxvZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jOWY0Y2U3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvYW5ub3RhdGlvbnMvY29uc2VydmF0aXZlTm9uSW5jcmVtZW50YWwxLmxvZwpAQCAtMCwwICsxLDI2IEBACitDbGVhbmluZyBvdXRwdXQgZmlsZXM6CitvdXQvcHJvZHVjdGlvbi9hMi9BMi5jbGFzcworRW5kIG9mIGZpbGVzCitDb21waWxpbmcgZmlsZXM6CithMi9zcmMvQTIuamF2YQorRW5kIG9mIGZpbGVzCitDbGVhbmluZyBvdXRwdXQgZmlsZXM6CitvdXQvcHJvZHVjdGlvbi9hMi9BMi5jbGFzcworb3V0L3Byb2R1Y3Rpb24vYTIvQy5jbGFzcworRW5kIG9mIGZpbGVzCitDb21waWxpbmcgZmlsZXM6CithMi9zcmMvQTIuamF2YQorYTIvc3JjL0MuamF2YQorRW5kIG9mIGZpbGVzCitDbGVhbmluZyBvdXRwdXQgZmlsZXM6CitvdXQvcHJvZHVjdGlvbi9iMjIvQjIyLmNsYXNzCitFbmQgb2YgZmlsZXMKK0NvbXBpbGluZyBmaWxlczoKK2IyMi9zcmMvQjIyLmphdmEKK0VuZCBvZiBmaWxlcworQ2xlYW5pbmcgb3V0cHV0IGZpbGVzOgorb3V0L3Byb2R1Y3Rpb24vYjIxL0IyMS5jbGFzcworRW5kIG9mIGZpbGVzCitDb21waWxpbmcgZmlsZXM6CitiMjEvc3JjL0IyMS5qYXZhCitFbmQgb2YgZmlsZXMKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2Fubm90YXRpb25zL2NvbnNlcnZhdGl2ZU5vbkluY3JlbWVudGFsMS8uaWRlYS9taXNjLnhtbCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2Fubm90YXRpb25zL2NvbnNlcnZhdGl2ZU5vbkluY3JlbWVudGFsMS8uaWRlYS9taXNjLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jOWIzZjgxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvYW5ub3RhdGlvbnMvY29uc2VydmF0aXZlTm9uSW5jcmVtZW50YWwxLy5pZGVhL21pc2MueG1sCkBAIC0wLDAgKzEsNDkgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8cHJvamVjdCB2ZXJzaW9uPSI0Ij4KKyAgPGNvbXBvbmVudCBuYW1lPSJFbnRyeVBvaW50c01hbmFnZXIiPgorICAgIDxlbnRyeV9wb2ludHMgdmVyc2lvbj0iMi4wIiAvPgorICA8L2NvbXBvbmVudD4KKyAgPGNvbXBvbmVudCBuYW1lPSJKYXZhZG9jR2VuZXJhdGlvbk1hbmFnZXIiPgorICAgIDxvcHRpb24gbmFtZT0iT1VUUFVUX0RJUkVDVE9SWSIgLz4KKyAgICA8b3B0aW9uIG5hbWU9Ik9QVElPTl9TQ09QRSIgdmFsdWU9InByb3RlY3RlZCIgLz4KKyAgICA8b3B0aW9uIG5hbWU9Ik9QVElPTl9ISUVSQVJDSFkiIHZhbHVlPSJ0cnVlIiAvPgorICAgIDxvcHRpb24gbmFtZT0iT1BUSU9OX05BVklHQVRPUiIgdmFsdWU9InRydWUiIC8+CisgICAgPG9wdGlvbiBuYW1lPSJPUFRJT05fSU5ERVgiIHZhbHVlPSJ0cnVlIiAvPgorICAgIDxvcHRpb24gbmFtZT0iT1BUSU9OX1NFUEFSQVRFX0lOREVYIiB2YWx1ZT0idHJ1ZSIgLz4KKyAgICA8b3B0aW9uIG5hbWU9Ik9QVElPTl9ET0NVTUVOVF9UQUdfVVNFIiB2YWx1ZT0iZmFsc2UiIC8+CisgICAgPG9wdGlvbiBuYW1lPSJPUFRJT05fRE9DVU1FTlRfVEFHX0FVVEhPUiIgdmFsdWU9ImZhbHNlIiAvPgorICAgIDxvcHRpb24gbmFtZT0iT1BUSU9OX0RPQ1VNRU5UX1RBR19WRVJTSU9OIiB2YWx1ZT0iZmFsc2UiIC8+CisgICAgPG9wdGlvbiBuYW1lPSJPUFRJT05fRE9DVU1FTlRfVEFHX0RFUFJFQ0FURUQiIHZhbHVlPSJ0cnVlIiAvPgorICAgIDxvcHRpb24gbmFtZT0iT1BUSU9OX0RFUFJFQ0FURURfTElTVCIgdmFsdWU9InRydWUiIC8+CisgICAgPG9wdGlvbiBuYW1lPSJPVEhFUl9PUFRJT05TIiB2YWx1ZT0iIiAvPgorICAgIDxvcHRpb24gbmFtZT0iSEVBUF9TSVpFIiAvPgorICAgIDxvcHRpb24gbmFtZT0iTE9DQUxFIiAvPgorICAgIDxvcHRpb24gbmFtZT0iT1BFTl9JTl9CUk9XU0VSIiB2YWx1ZT0idHJ1ZSIgLz4KKyAgPC9jb21wb25lbnQ+CisgIDxjb21wb25lbnQgbmFtZT0iTW9kdWxlRWRpdG9yU3RhdGUiPgorICAgIDxvcHRpb24gbmFtZT0iTEFTVF9FRElURURfTU9EVUxFX05BTUUiIC8+CisgICAgPG9wdGlvbiBuYW1lPSJMQVNUX0VESVRFRF9UQUJfTkFNRSIgLz4KKyAgPC9jb21wb25lbnQ+CisgIDxjb21wb25lbnQgbmFtZT0iTnVsbGFibGVOb3ROdWxsTWFuYWdlciI+CisgICAgPG9wdGlvbiBuYW1lPSJteURlZmF1bHROdWxsYWJsZSIgdmFsdWU9Im9yZy5qZXRicmFpbnMuYW5ub3RhdGlvbnMuTnVsbGFibGUiIC8+CisgICAgPG9wdGlvbiBuYW1lPSJteURlZmF1bHROb3ROdWxsIiB2YWx1ZT0ib3JnLmpldGJyYWlucy5hbm5vdGF0aW9ucy5Ob3ROdWxsIiAvPgorICAgIDxvcHRpb24gbmFtZT0ibXlOdWxsYWJsZXMiPgorICAgICAgPHZhbHVlPgorICAgICAgICA8bGlzdCBzaXplPSIwIiAvPgorICAgICAgPC92YWx1ZT4KKyAgICA8L29wdGlvbj4KKyAgICA8b3B0aW9uIG5hbWU9Im15Tm90TnVsbHMiPgorICAgICAgPHZhbHVlPgorICAgICAgICA8bGlzdCBzaXplPSIzIj4KKyAgICAgICAgICA8aXRlbSBpbmRleD0iMCIgY2xhc3M9ImphdmEubGFuZy5TdHJpbmciIGl0ZW12YWx1ZT0ib3JnLmpldGJyYWlucy5hbm5vdGF0aW9ucy5Ob3ROdWxsIiAvPgorICAgICAgICAgIDxpdGVtIGluZGV4PSIxIiBjbGFzcz0iamF2YS5sYW5nLlN0cmluZyIgaXRlbXZhbHVlPSJqYXZheC5hbm5vdGF0aW9uLk5vbm51bGwiIC8+CisgICAgICAgICAgPGl0ZW0gaW5kZXg9IjIiIGNsYXNzPSJqYXZhLmxhbmcuU3RyaW5nIiBpdGVtdmFsdWU9ImVkdS51bWQuY3MuZmluZGJ1Z3MuYW5ub3RhdGlvbnMuTm9uTnVsbCIgLz4KKyAgICAgICAgPC9saXN0PgorICAgICAgPC92YWx1ZT4KKyAgICA8L29wdGlvbj4KKyAgPC9jb21wb25lbnQ+CisgIDxjb21wb25lbnQgbmFtZT0iUHJvamVjdFJvb3RNYW5hZ2VyIiB2ZXJzaW9uPSIyIiBsYW5ndWFnZUxldmVsPSJKREtfMV81IiBhc3NlcnQta2V5d29yZD0idHJ1ZSIgamRrLTE1PSJ0cnVlIiBwcm9qZWN0LWpkay1uYW1lPSJJREVBIGpkayIgcHJvamVjdC1qZGstdHlwZT0iSmF2YVNESyI+CisgICAgPG91dHB1dCB1cmw9ImZpbGU6Ly8kUFJPSkVDVF9ESVIkL291dCIgLz4KKyAgPC9jb21wb25lbnQ+Cis8L3Byb2plY3Q+CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2Fubm90YXRpb25zL2NvbnNlcnZhdGl2ZU5vbkluY3JlbWVudGFsMS8uaWRlYS9tb2R1bGVzLnhtbCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2Fubm90YXRpb25zL2NvbnNlcnZhdGl2ZU5vbkluY3JlbWVudGFsMS8uaWRlYS9tb2R1bGVzLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZjlhNGUyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvYW5ub3RhdGlvbnMvY29uc2VydmF0aXZlTm9uSW5jcmVtZW50YWwxLy5pZGVhL21vZHVsZXMueG1sCkBAIC0wLDAgKzEsMTMgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8cHJvamVjdCB2ZXJzaW9uPSI0Ij4KKyAgPGNvbXBvbmVudCBuYW1lPSJQcm9qZWN0TW9kdWxlTWFuYWdlciI+CisgICAgPG1vZHVsZXM+CisgICAgICA8bW9kdWxlIGZpbGV1cmw9ImZpbGU6Ly8kUFJPSkVDVF9ESVIkL2ExL2ExLmltbCIgZmlsZXBhdGg9IiRQUk9KRUNUX0RJUiQvYTEvYTEuaW1sIiAvPgorICAgICAgPG1vZHVsZSBmaWxldXJsPSJmaWxlOi8vJFBST0pFQ1RfRElSJC9hMi9hMi5pbWwiIGZpbGVwYXRoPSIkUFJPSkVDVF9ESVIkL2EyL2EyLmltbCIgLz4KKyAgICAgIDxtb2R1bGUgZmlsZXVybD0iZmlsZTovLyRQUk9KRUNUX0RJUiQvYjIxL2IyMS5pbWwiIGZpbGVwYXRoPSIkUFJPSkVDVF9ESVIkL2IyMS9iMjEuaW1sIiAvPgorICAgICAgPG1vZHVsZSBmaWxldXJsPSJmaWxlOi8vJFBST0pFQ1RfRElSJC9iMjIvYjIyLmltbCIgZmlsZXBhdGg9IiRQUk9KRUNUX0RJUiQvYjIyL2IyMi5pbWwiIC8+CisgICAgICA8bW9kdWxlIGZpbGV1cmw9ImZpbGU6Ly8kUFJPSkVDVF9ESVIkL2NvbnNlcnZhdGl2ZU5vbkluY3JlbWVudGFsLmltbCIgZmlsZXBhdGg9IiRQUk9KRUNUX0RJUiQvY29uc2VydmF0aXZlTm9uSW5jcmVtZW50YWwuaW1sIiAvPgorICAgIDwvbW9kdWxlcz4KKyAgPC9jb21wb25lbnQ+Cis8L3Byb2plY3Q+CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2Fubm90YXRpb25zL2NvbnNlcnZhdGl2ZU5vbkluY3JlbWVudGFsMS9hMS9hMS5pbWwgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9hbm5vdGF0aW9ucy9jb25zZXJ2YXRpdmVOb25JbmNyZW1lbnRhbDEvYTEvYTEuaW1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZkMmRlYmEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9hbm5vdGF0aW9ucy9jb25zZXJ2YXRpdmVOb25JbmNyZW1lbnRhbDEvYTEvYTEuaW1sCkBAIC0wLDAgKzEsMTMgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8bW9kdWxlIHR5cGU9IkpBVkFfTU9EVUxFIiB2ZXJzaW9uPSI0Ij4KKyAgPGNvbXBvbmVudCBuYW1lPSJOZXdNb2R1bGVSb290TWFuYWdlciIgaW5oZXJpdC1jb21waWxlci1vdXRwdXQ9InRydWUiPgorICAgIDxleGNsdWRlLW91dHB1dCAvPgorICAgIDxjb250ZW50IHVybD0iZmlsZTovLyRNT0RVTEVfRElSJCI+CisgICAgICA8c291cmNlRm9sZGVyIHVybD0iZmlsZTovLyRNT0RVTEVfRElSJC9zcmMiIGlzVGVzdFNvdXJjZT0iZmFsc2UiIC8+CisgICAgPC9jb250ZW50PgorICAgIDxvcmRlckVudHJ5IHR5cGU9ImluaGVyaXRlZEpkayIgLz4KKyAgICA8b3JkZXJFbnRyeSB0eXBlPSJzb3VyY2VGb2xkZXIiIGZvclRlc3RzPSJmYWxzZSIgLz4KKyAgICA8b3JkZXJFbnRyeSB0eXBlPSJtb2R1bGUiIG1vZHVsZS1uYW1lPSJjb25zZXJ2YXRpdmVOb25JbmNyZW1lbnRhbCIgLz4KKyAgPC9jb21wb25lbnQ+Cis8L21vZHVsZT4KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvYW5ub3RhdGlvbnMvY29uc2VydmF0aXZlTm9uSW5jcmVtZW50YWwxL2ExL3NyYy9BMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvYW5ub3RhdGlvbnMvY29uc2VydmF0aXZlTm9uSW5jcmVtZW50YWwxL2ExL3NyYy9BMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNiOTA5NDk5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvYW5ub3RhdGlvbnMvY29uc2VydmF0aXZlTm9uSW5jcmVtZW50YWwxL2ExL3NyYy9BMS5qYXZhCkBAIC0wLDAgKzEsOSBAQAorLyoqCisgKiBDcmVhdGVkIGJ5IEludGVsbGlKIElERUEuCisgKiBVc2VyOiBkYgorICogRGF0ZTogMDYuMDguMTEKKyAqIFRpbWU6IDE0OjU2CisgKiBUbyBjaGFuZ2UgdGhpcyB0ZW1wbGF0ZSB1c2UgRmlsZSB8IFNldHRpbmdzIHwgRmlsZSBUZW1wbGF0ZXMuCisgKi8KK3B1YmxpYyBjbGFzcyBBMSB7Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9hbm5vdGF0aW9ucy9jb25zZXJ2YXRpdmVOb25JbmNyZW1lbnRhbDEvYTIvYTIuaW1sIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvYW5ub3RhdGlvbnMvY29uc2VydmF0aXZlTm9uSW5jcmVtZW50YWwxL2EyL2EyLmltbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZDJkZWJhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvYW5ub3RhdGlvbnMvY29uc2VydmF0aXZlTm9uSW5jcmVtZW50YWwxL2EyL2EyLmltbApAQCAtMCwwICsxLDEzIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPG1vZHVsZSB0eXBlPSJKQVZBX01PRFVMRSIgdmVyc2lvbj0iNCI+CisgIDxjb21wb25lbnQgbmFtZT0iTmV3TW9kdWxlUm9vdE1hbmFnZXIiIGluaGVyaXQtY29tcGlsZXItb3V0cHV0PSJ0cnVlIj4KKyAgICA8ZXhjbHVkZS1vdXRwdXQgLz4KKyAgICA8Y29udGVudCB1cmw9ImZpbGU6Ly8kTU9EVUxFX0RJUiQiPgorICAgICAgPHNvdXJjZUZvbGRlciB1cmw9ImZpbGU6Ly8kTU9EVUxFX0RJUiQvc3JjIiBpc1Rlc3RTb3VyY2U9ImZhbHNlIiAvPgorICAgIDwvY29udGVudD4KKyAgICA8b3JkZXJFbnRyeSB0eXBlPSJpbmhlcml0ZWRKZGsiIC8+CisgICAgPG9yZGVyRW50cnkgdHlwZT0ic291cmNlRm9sZGVyIiBmb3JUZXN0cz0iZmFsc2UiIC8+CisgICAgPG9yZGVyRW50cnkgdHlwZT0ibW9kdWxlIiBtb2R1bGUtbmFtZT0iY29uc2VydmF0aXZlTm9uSW5jcmVtZW50YWwiIC8+CisgIDwvY29tcG9uZW50PgorPC9tb2R1bGU+CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2Fubm90YXRpb25zL2NvbnNlcnZhdGl2ZU5vbkluY3JlbWVudGFsMS9hMi9zcmMvQTIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2Fubm90YXRpb25zL2NvbnNlcnZhdGl2ZU5vbkluY3JlbWVudGFsMS9hMi9zcmMvQTIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZjZjZjdkYgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2Fubm90YXRpb25zL2NvbnNlcnZhdGl2ZU5vbkluY3JlbWVudGFsMS9hMi9zcmMvQTIuamF2YQpAQCAtMCwwICsxLDE3IEBACitpbXBvcnQgamF2YS5sYW5nLmFubm90YXRpb24uUmV0ZW50aW9uOworaW1wb3J0IGphdmEubGFuZy5hbm5vdGF0aW9uLlJldGVudGlvblBvbGljeTsKK2ltcG9ydCBqYXZhLmxhbmcuYW5ub3RhdGlvbi5FbGVtZW50VHlwZTsKK2ltcG9ydCBqYXZhLmxhbmcuYW5ub3RhdGlvbi5UYXJnZXQ7CisKKy8qKgorICogQ3JlYXRlZCBieSBJbnRlbGxpSiBJREVBLgorICogVXNlcjogZGIKKyAqIERhdGU6IDA2LjA4LjExCisgKiBUaW1lOiAxNDo1NgorICogVG8gY2hhbmdlIHRoaXMgdGVtcGxhdGUgdXNlIEZpbGUgfCBTZXR0aW5ncyB8IEZpbGUgVGVtcGxhdGVzLgorICovCisKK0BSZXRlbnRpb24oUmV0ZW50aW9uUG9saWN5LlNPVVJDRSkKK0BUYXJnZXQoe0VsZW1lbnRUeXBlLlRZUEUsIEVsZW1lbnRUeXBlLk1FVEhPRCwgRWxlbWVudFR5cGUuTE9DQUxfVkFSSUFCTEV9KQorcHVibGljIEBpbnRlcmZhY2UgQTIgeworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvYW5ub3RhdGlvbnMvY29uc2VydmF0aXZlTm9uSW5jcmVtZW50YWwxL2EyL3NyYy9BMi5qYXZhLm5ldyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2Fubm90YXRpb25zL2NvbnNlcnZhdGl2ZU5vbkluY3JlbWVudGFsMS9hMi9zcmMvQTIuamF2YS5uZXcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2UyZGRiMAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2Fubm90YXRpb25zL2NvbnNlcnZhdGl2ZU5vbkluY3JlbWVudGFsMS9hMi9zcmMvQTIuamF2YS5uZXcKQEAgLTAsMCArMSwxOCBAQAoraW1wb3J0IGphdmEubGFuZy5hbm5vdGF0aW9uLlJldGVudGlvbjsKK2ltcG9ydCBqYXZhLmxhbmcuYW5ub3RhdGlvbi5SZXRlbnRpb25Qb2xpY3k7CitpbXBvcnQgamF2YS5sYW5nLmFubm90YXRpb24uRWxlbWVudFR5cGU7CitpbXBvcnQgamF2YS5sYW5nLmFubm90YXRpb24uVGFyZ2V0OworCisvKioKKyAqIENyZWF0ZWQgYnkgSW50ZWxsaUogSURFQS4KKyAqIFVzZXI6IGRiCisgKiBEYXRlOiAwNi4wOC4xMQorICogVGltZTogMTQ6NTYKKyAqIFRvIGNoYW5nZSB0aGlzIHRlbXBsYXRlIHVzZSBGaWxlIHwgU2V0dGluZ3MgfCBGaWxlIFRlbXBsYXRlcy4KKyAqLworCitAUmV0ZW50aW9uKFJldGVudGlvblBvbGljeS5TT1VSQ0UpCitAVGFyZ2V0KHtFbGVtZW50VHlwZS5UWVBFLCBFbGVtZW50VHlwZS5NRVRIT0R9KQorcHVibGljIEBpbnRlcmZhY2UgQTIgeworICBTdHJpbmcgdmFsdWUgKCk7Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9hbm5vdGF0aW9ucy9jb25zZXJ2YXRpdmVOb25JbmNyZW1lbnRhbDEvYTIvc3JjL0MuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2Fubm90YXRpb25zL2NvbnNlcnZhdGl2ZU5vbkluY3JlbWVudGFsMS9hMi9zcmMvQy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE3YzRhMTAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9hbm5vdGF0aW9ucy9jb25zZXJ2YXRpdmVOb25JbmNyZW1lbnRhbDEvYTIvc3JjL0MuamF2YQpAQCAtMCwwICsxIEBACitwdWJsaWMgY2xhc3MgQyB7fQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2Fubm90YXRpb25zL2NvbnNlcnZhdGl2ZU5vbkluY3JlbWVudGFsMS9iMjEvYjIxLmltbCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2Fubm90YXRpb25zL2NvbnNlcnZhdGl2ZU5vbkluY3JlbWVudGFsMS9iMjEvYjIxLmltbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMmVhMzY1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvYW5ub3RhdGlvbnMvY29uc2VydmF0aXZlTm9uSW5jcmVtZW50YWwxL2IyMS9iMjEuaW1sCkBAIC0wLDAgKzEsMTMgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8bW9kdWxlIHR5cGU9IkpBVkFfTU9EVUxFIiB2ZXJzaW9uPSI0Ij4KKyAgPGNvbXBvbmVudCBuYW1lPSJOZXdNb2R1bGVSb290TWFuYWdlciIgaW5oZXJpdC1jb21waWxlci1vdXRwdXQ9InRydWUiPgorICAgIDxleGNsdWRlLW91dHB1dCAvPgorICAgIDxjb250ZW50IHVybD0iZmlsZTovLyRNT0RVTEVfRElSJCI+CisgICAgICA8c291cmNlRm9sZGVyIHVybD0iZmlsZTovLyRNT0RVTEVfRElSJC9zcmMiIGlzVGVzdFNvdXJjZT0iZmFsc2UiIC8+CisgICAgPC9jb250ZW50PgorICAgIDxvcmRlckVudHJ5IHR5cGU9ImluaGVyaXRlZEpkayIgLz4KKyAgICA8b3JkZXJFbnRyeSB0eXBlPSJzb3VyY2VGb2xkZXIiIGZvclRlc3RzPSJmYWxzZSIgLz4KKyAgICA8b3JkZXJFbnRyeSB0eXBlPSJtb2R1bGUiIG1vZHVsZS1uYW1lPSJhMiIgLz4KKyAgPC9jb21wb25lbnQ+Cis8L21vZHVsZT4KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvYW5ub3RhdGlvbnMvY29uc2VydmF0aXZlTm9uSW5jcmVtZW50YWwxL2IyMS9zcmMvQjIxLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9hbm5vdGF0aW9ucy9jb25zZXJ2YXRpdmVOb25JbmNyZW1lbnRhbDEvYjIxL3NyYy9CMjEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZGI0ZDFmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvYW5ub3RhdGlvbnMvY29uc2VydmF0aXZlTm9uSW5jcmVtZW50YWwxL2IyMS9zcmMvQjIxLmphdmEKQEAgLTAsMCArMSw5IEBACisvKioKKyAqIENyZWF0ZWQgYnkgSW50ZWxsaUogSURFQS4KKyAqIFVzZXI6IGRiCisgKiBEYXRlOiAwNi4wOC4xMQorICogVGltZTogMTQ6NTcKKyAqIFRvIGNoYW5nZSB0aGlzIHRlbXBsYXRlIHVzZSBGaWxlIHwgU2V0dGluZ3MgfCBGaWxlIFRlbXBsYXRlcy4KKyAqLworcHVibGljIGNsYXNzIEIyMSB7Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9hbm5vdGF0aW9ucy9jb25zZXJ2YXRpdmVOb25JbmNyZW1lbnRhbDEvYjIyL2IyMi5pbWwgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9hbm5vdGF0aW9ucy9jb25zZXJ2YXRpdmVOb25JbmNyZW1lbnRhbDEvYjIyL2IyMi5pbWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDJlYTM2NQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2Fubm90YXRpb25zL2NvbnNlcnZhdGl2ZU5vbkluY3JlbWVudGFsMS9iMjIvYjIyLmltbApAQCAtMCwwICsxLDEzIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPG1vZHVsZSB0eXBlPSJKQVZBX01PRFVMRSIgdmVyc2lvbj0iNCI+CisgIDxjb21wb25lbnQgbmFtZT0iTmV3TW9kdWxlUm9vdE1hbmFnZXIiIGluaGVyaXQtY29tcGlsZXItb3V0cHV0PSJ0cnVlIj4KKyAgICA8ZXhjbHVkZS1vdXRwdXQgLz4KKyAgICA8Y29udGVudCB1cmw9ImZpbGU6Ly8kTU9EVUxFX0RJUiQiPgorICAgICAgPHNvdXJjZUZvbGRlciB1cmw9ImZpbGU6Ly8kTU9EVUxFX0RJUiQvc3JjIiBpc1Rlc3RTb3VyY2U9ImZhbHNlIiAvPgorICAgIDwvY29udGVudD4KKyAgICA8b3JkZXJFbnRyeSB0eXBlPSJpbmhlcml0ZWRKZGsiIC8+CisgICAgPG9yZGVyRW50cnkgdHlwZT0ic291cmNlRm9sZGVyIiBmb3JUZXN0cz0iZmFsc2UiIC8+CisgICAgPG9yZGVyRW50cnkgdHlwZT0ibW9kdWxlIiBtb2R1bGUtbmFtZT0iYTIiIC8+CisgIDwvY29tcG9uZW50PgorPC9tb2R1bGU+CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2Fubm90YXRpb25zL2NvbnNlcnZhdGl2ZU5vbkluY3JlbWVudGFsMS9iMjIvc3JjL0IyMi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvYW5ub3RhdGlvbnMvY29uc2VydmF0aXZlTm9uSW5jcmVtZW50YWwxL2IyMi9zcmMvQjIyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDgxMjk1NAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2Fubm90YXRpb25zL2NvbnNlcnZhdGl2ZU5vbkluY3JlbWVudGFsMS9iMjIvc3JjL0IyMi5qYXZhCkBAIC0wLDAgKzEsOSBAQAorLyoqCisgKiBDcmVhdGVkIGJ5IEludGVsbGlKIElERUEuCisgKiBVc2VyOiBkYgorICogRGF0ZTogMDYuMDguMTEKKyAqIFRpbWU6IDE0OjU3CisgKiBUbyBjaGFuZ2UgdGhpcyB0ZW1wbGF0ZSB1c2UgRmlsZSB8IFNldHRpbmdzIHwgRmlsZSBUZW1wbGF0ZXMuCisgKi8KK3B1YmxpYyBjbGFzcyBCMjIgeworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvYW5ub3RhdGlvbnMvY29uc2VydmF0aXZlTm9uSW5jcmVtZW50YWwxL2NvbnNlcnZhdGl2ZU5vbkluY3JlbWVudGFsLmltbCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2Fubm90YXRpb25zL2NvbnNlcnZhdGl2ZU5vbkluY3JlbWVudGFsMS9jb25zZXJ2YXRpdmVOb25JbmNyZW1lbnRhbC5pbWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDVjMDc0MwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2Fubm90YXRpb25zL2NvbnNlcnZhdGl2ZU5vbkluY3JlbWVudGFsMS9jb25zZXJ2YXRpdmVOb25JbmNyZW1lbnRhbC5pbWwKQEAgLTAsMCArMSwxMiBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxtb2R1bGUgdHlwZT0iSkFWQV9NT0RVTEUiIHZlcnNpb249IjQiPgorICA8Y29tcG9uZW50IG5hbWU9Ik5ld01vZHVsZVJvb3RNYW5hZ2VyIiBpbmhlcml0LWNvbXBpbGVyLW91dHB1dD0idHJ1ZSI+CisgICAgPGV4Y2x1ZGUtb3V0cHV0IC8+CisgICAgPGNvbnRlbnQgdXJsPSJmaWxlOi8vJE1PRFVMRV9ESVIkIj4KKyAgICAgIDxzb3VyY2VGb2xkZXIgdXJsPSJmaWxlOi8vJE1PRFVMRV9ESVIkL3NyYyIgaXNUZXN0U291cmNlPSJmYWxzZSIgLz4KKyAgICA8L2NvbnRlbnQ+CisgICAgPG9yZGVyRW50cnkgdHlwZT0iaW5oZXJpdGVkSmRrIiAvPgorICAgIDxvcmRlckVudHJ5IHR5cGU9InNvdXJjZUZvbGRlciIgZm9yVGVzdHM9ImZhbHNlIiAvPgorICA8L2NvbXBvbmVudD4KKzwvbW9kdWxlPgorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9hbm5vdGF0aW9ucy9jb25zZXJ2YXRpdmVOb25JbmNyZW1lbnRhbDEvc3JjL0EuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2Fubm90YXRpb25zL2NvbnNlcnZhdGl2ZU5vbkluY3JlbWVudGFsMS9zcmMvQS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFkOGJmYjMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9hbm5vdGF0aW9ucy9jb25zZXJ2YXRpdmVOb25JbmNyZW1lbnRhbDEvc3JjL0EuamF2YQpAQCAtMCwwICsxLDkgQEAKKy8qKgorICogQ3JlYXRlZCBieSBJbnRlbGxpSiBJREVBLgorICogVXNlcjogZGIKKyAqIERhdGU6IDA2LjA4LjExCisgKiBUaW1lOiAxNDo1NgorICogVG8gY2hhbmdlIHRoaXMgdGVtcGxhdGUgdXNlIEZpbGUgfCBTZXR0aW5ncyB8IEZpbGUgVGVtcGxhdGVzLgorICovCitwdWJsaWMgY2xhc3MgQSB7Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9hbm5vdGF0aW9ucy9tZXRhQW5ub3RhdGlvbkNoYW5nZWQubG9nIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvYW5ub3RhdGlvbnMvbWV0YUFubm90YXRpb25DaGFuZ2VkLmxvZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NDM3YWM0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvYW5ub3RhdGlvbnMvbWV0YUFubm90YXRpb25DaGFuZ2VkLmxvZwpAQCAtMCwwICsxLDggQEAKK0NsZWFuaW5nIG91dHB1dCBmaWxlczoKK291dC9wcm9kdWN0aW9uL01ldGFBbm5vdGF0aW9uQ2hhbmdlZC9BMS5jbGFzcworb3V0L3Byb2R1Y3Rpb24vTWV0YUFubm90YXRpb25DaGFuZ2VkL0MxLmNsYXNzCitFbmQgb2YgZmlsZXMKK0NvbXBpbGluZyBmaWxlczoKK3NyYy9BMS5qYXZhCitzcmMvQzEuamF2YQorRW5kIG9mIGZpbGVzCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9hbm5vdGF0aW9ucy9tZXRhQW5ub3RhdGlvbkNoYW5nZWQvQTEuamF2YS5uZXcgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9hbm5vdGF0aW9ucy9tZXRhQW5ub3RhdGlvbkNoYW5nZWQvQTEuamF2YS5uZXcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODVmMGRlNgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2Fubm90YXRpb25zL21ldGFBbm5vdGF0aW9uQ2hhbmdlZC9BMS5qYXZhLm5ldwpAQCAtMCwwICsxLDYgQEAKK2ltcG9ydCBqYXZhLmxhbmcuYW5ub3RhdGlvbi4qOworaW1wb3J0IHN0YXRpYyBqYXZhLmxhbmcuYW5ub3RhdGlvbi5FbGVtZW50VHlwZS4qOworCitAQSgxMSkKK3B1YmxpYyBAaW50ZXJmYWNlIEExIHsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9hbm5vdGF0aW9ucy9tZXRhQW5ub3RhdGlvbkNoYW5nZWQvc3JjL0EuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2Fubm90YXRpb25zL21ldGFBbm5vdGF0aW9uQ2hhbmdlZC9zcmMvQS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjllNDUyYWQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9hbm5vdGF0aW9ucy9tZXRhQW5ub3RhdGlvbkNoYW5nZWQvc3JjL0EuamF2YQpAQCAtMCwwICsxLDYgQEAKK2ltcG9ydCBqYXZhLmxhbmcuYW5ub3RhdGlvbi4qOworaW1wb3J0IHN0YXRpYyBqYXZhLmxhbmcuYW5ub3RhdGlvbi5FbGVtZW50VHlwZS4qOworCitwdWJsaWMgQGludGVyZmFjZSBBIHsKKyAgaW50IHZhbHVlKCk7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvYW5ub3RhdGlvbnMvbWV0YUFubm90YXRpb25DaGFuZ2VkL3NyYy9BMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvYW5ub3RhdGlvbnMvbWV0YUFubm90YXRpb25DaGFuZ2VkL3NyYy9BMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMwOWVkODkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9hbm5vdGF0aW9ucy9tZXRhQW5ub3RhdGlvbkNoYW5nZWQvc3JjL0ExLmphdmEKQEAgLTAsMCArMSw2IEBACitpbXBvcnQgamF2YS5sYW5nLmFubm90YXRpb24uKjsKK2ltcG9ydCBzdGF0aWMgamF2YS5sYW5nLmFubm90YXRpb24uRWxlbWVudFR5cGUuKjsKKworQEEoMSkKK3B1YmxpYyBAaW50ZXJmYWNlIEExIHsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9hbm5vdGF0aW9ucy9tZXRhQW5ub3RhdGlvbkNoYW5nZWQvc3JjL0MuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2Fubm90YXRpb25zL21ldGFBbm5vdGF0aW9uQ2hhbmdlZC9zcmMvQy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI5NjJhZWYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9hbm5vdGF0aW9ucy9tZXRhQW5ub3RhdGlvbkNoYW5nZWQvc3JjL0MuamF2YQpAQCAtMCwwICsxLDMgQEAKK0BBKDEwKSAKK3B1YmxpYyBjbGFzcyBDIHsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9hbm5vdGF0aW9ucy9tZXRhQW5ub3RhdGlvbkNoYW5nZWQvc3JjL0MxLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9hbm5vdGF0aW9ucy9tZXRhQW5ub3RhdGlvbkNoYW5nZWQvc3JjL0MxLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjdlN2E2YgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2Fubm90YXRpb25zL21ldGFBbm5vdGF0aW9uQ2hhbmdlZC9zcmMvQzEuamF2YQpAQCAtMCwwICsxLDMgQEAKK0BBMQorcHVibGljIGNsYXNzIEMxIHsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9hbm5vdGF0aW9ucy9tZXRhQW5ub3RhdGlvbkNoYW5nZWRDYXNjYWRlLmxvZyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2Fubm90YXRpb25zL21ldGFBbm5vdGF0aW9uQ2hhbmdlZENhc2NhZGUubG9nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ2MGJkZDMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9hbm5vdGF0aW9ucy9tZXRhQW5ub3RhdGlvbkNoYW5nZWRDYXNjYWRlLmxvZwpAQCAtMCwwICsxLDEyIEBACitDbGVhbmluZyBvdXRwdXQgZmlsZXM6CitvdXQvcHJvZHVjdGlvbi9NZXRhQW5ub3RhdGlvbkNoYW5nZWRDYXNjYWRlL0EuY2xhc3MKK291dC9wcm9kdWN0aW9uL01ldGFBbm5vdGF0aW9uQ2hhbmdlZENhc2NhZGUvQy5jbGFzcworb3V0L3Byb2R1Y3Rpb24vTWV0YUFubm90YXRpb25DaGFuZ2VkQ2FzY2FkZS9BMS5jbGFzcworb3V0L3Byb2R1Y3Rpb24vTWV0YUFubm90YXRpb25DaGFuZ2VkQ2FzY2FkZS9DMS5jbGFzcworRW5kIG9mIGZpbGVzCitDb21waWxpbmcgZmlsZXM6CitzcmMvQS5qYXZhCitzcmMvQy5qYXZhCitzcmMvQTEuamF2YQorc3JjL0MxLmphdmEKK0VuZCBvZiBmaWxlcwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvYW5ub3RhdGlvbnMvbWV0YUFubm90YXRpb25DaGFuZ2VkQ2FzY2FkZS9BLmphdmEubmV3IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvYW5ub3RhdGlvbnMvbWV0YUFubm90YXRpb25DaGFuZ2VkQ2FzY2FkZS9BLmphdmEubmV3Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI0ZTY3ZDYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9hbm5vdGF0aW9ucy9tZXRhQW5ub3RhdGlvbkNoYW5nZWRDYXNjYWRlL0EuamF2YS5uZXcKQEAgLTAsMCArMSw3IEBACitpbXBvcnQgamF2YS5sYW5nLmFubm90YXRpb24uKjsKK2ltcG9ydCBzdGF0aWMgamF2YS5sYW5nLmFubm90YXRpb24uRWxlbWVudFR5cGUuKjsKKworQEIoNzcpCitwdWJsaWMgQGludGVyZmFjZSBBIHsKKyAgaW50IHZhbHVlKCk7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvYW5ub3RhdGlvbnMvbWV0YUFubm90YXRpb25DaGFuZ2VkQ2FzY2FkZS9zcmMvQS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvYW5ub3RhdGlvbnMvbWV0YUFubm90YXRpb25DaGFuZ2VkQ2FzY2FkZS9zcmMvQS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjllNDUyYWQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9hbm5vdGF0aW9ucy9tZXRhQW5ub3RhdGlvbkNoYW5nZWRDYXNjYWRlL3NyYy9BLmphdmEKQEAgLTAsMCArMSw2IEBACitpbXBvcnQgamF2YS5sYW5nLmFubm90YXRpb24uKjsKK2ltcG9ydCBzdGF0aWMgamF2YS5sYW5nLmFubm90YXRpb24uRWxlbWVudFR5cGUuKjsKKworcHVibGljIEBpbnRlcmZhY2UgQSB7CisgIGludCB2YWx1ZSgpOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2Fubm90YXRpb25zL21ldGFBbm5vdGF0aW9uQ2hhbmdlZENhc2NhZGUvc3JjL0ExLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9hbm5vdGF0aW9ucy9tZXRhQW5ub3RhdGlvbkNoYW5nZWRDYXNjYWRlL3NyYy9BMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMwOWVkODkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9hbm5vdGF0aW9ucy9tZXRhQW5ub3RhdGlvbkNoYW5nZWRDYXNjYWRlL3NyYy9BMS5qYXZhCkBAIC0wLDAgKzEsNiBAQAoraW1wb3J0IGphdmEubGFuZy5hbm5vdGF0aW9uLio7CitpbXBvcnQgc3RhdGljIGphdmEubGFuZy5hbm5vdGF0aW9uLkVsZW1lbnRUeXBlLio7CisKK0BBKDEpCitwdWJsaWMgQGludGVyZmFjZSBBMSB7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvYW5ub3RhdGlvbnMvbWV0YUFubm90YXRpb25DaGFuZ2VkQ2FzY2FkZS9zcmMvQi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvYW5ub3RhdGlvbnMvbWV0YUFubm90YXRpb25DaGFuZ2VkQ2FzY2FkZS9zcmMvQi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEzM2ZkZjcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9hbm5vdGF0aW9ucy9tZXRhQW5ub3RhdGlvbkNoYW5nZWRDYXNjYWRlL3NyYy9CLmphdmEKQEAgLTAsMCArMSw2IEBACitpbXBvcnQgamF2YS5sYW5nLmFubm90YXRpb24uKjsKK2ltcG9ydCBzdGF0aWMgamF2YS5sYW5nLmFubm90YXRpb24uRWxlbWVudFR5cGUuKjsKKworcHVibGljIEBpbnRlcmZhY2UgQiB7CisgIGludCB2YWx1ZSgpOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2Fubm90YXRpb25zL21ldGFBbm5vdGF0aW9uQ2hhbmdlZENhc2NhZGUvc3JjL0MuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2Fubm90YXRpb25zL21ldGFBbm5vdGF0aW9uQ2hhbmdlZENhc2NhZGUvc3JjL0MuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iOTYyYWVmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvYW5ub3RhdGlvbnMvbWV0YUFubm90YXRpb25DaGFuZ2VkQ2FzY2FkZS9zcmMvQy5qYXZhCkBAIC0wLDAgKzEsMyBAQAorQEEoMTApIAorcHVibGljIGNsYXNzIEMgeworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2Fubm90YXRpb25zL21ldGFBbm5vdGF0aW9uQ2hhbmdlZENhc2NhZGUvc3JjL0MxLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9hbm5vdGF0aW9ucy9tZXRhQW5ub3RhdGlvbkNoYW5nZWRDYXNjYWRlL3NyYy9DMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI3ZTdhNmIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9hbm5vdGF0aW9ucy9tZXRhQW5ub3RhdGlvbkNoYW5nZWRDYXNjYWRlL3NyYy9DMS5qYXZhCkBAIC0wLDAgKzEsMyBAQAorQEExCitwdWJsaWMgY2xhc3MgQzEgeworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2Fubm90YXRpb25zL21ldGFBbm5vdGF0aW9uQ2hhbmdlZENhc2NhZGUyLmxvZyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2Fubm90YXRpb25zL21ldGFBbm5vdGF0aW9uQ2hhbmdlZENhc2NhZGUyLmxvZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44N2I0NjMzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvYW5ub3RhdGlvbnMvbWV0YUFubm90YXRpb25DaGFuZ2VkQ2FzY2FkZTIubG9nCkBAIC0wLDAgKzEsMTIgQEAKK0NsZWFuaW5nIG91dHB1dCBmaWxlczoKK291dC9wcm9kdWN0aW9uL01ldGFBbm5vdGF0aW9uQ2hhbmdlZENhc2NhZGUyL0EuY2xhc3MKK291dC9wcm9kdWN0aW9uL01ldGFBbm5vdGF0aW9uQ2hhbmdlZENhc2NhZGUyL0MuY2xhc3MKK291dC9wcm9kdWN0aW9uL01ldGFBbm5vdGF0aW9uQ2hhbmdlZENhc2NhZGUyL0ExLmNsYXNzCitvdXQvcHJvZHVjdGlvbi9NZXRhQW5ub3RhdGlvbkNoYW5nZWRDYXNjYWRlMi9DMS5jbGFzcworRW5kIG9mIGZpbGVzCitDb21waWxpbmcgZmlsZXM6CitzcmMvQS5qYXZhCitzcmMvQy5qYXZhCitzcmMvQTEuamF2YQorc3JjL0MxLmphdmEKK0VuZCBvZiBmaWxlcwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvYW5ub3RhdGlvbnMvbWV0YUFubm90YXRpb25DaGFuZ2VkQ2FzY2FkZTIvQS5qYXZhLm5ldyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2Fubm90YXRpb25zL21ldGFBbm5vdGF0aW9uQ2hhbmdlZENhc2NhZGUyL0EuamF2YS5uZXcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWJkMTRmOAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2Fubm90YXRpb25zL21ldGFBbm5vdGF0aW9uQ2hhbmdlZENhc2NhZGUyL0EuamF2YS5uZXcKQEAgLTAsMCArMSw3IEBACitpbXBvcnQgamF2YS5sYW5nLmFubm90YXRpb24uKjsKK2ltcG9ydCBzdGF0aWMgamF2YS5sYW5nLmFubm90YXRpb24uRWxlbWVudFR5cGUuKjsKKworQEIoODgpCitwdWJsaWMgQGludGVyZmFjZSBBIHsKKyAgaW50IHZhbHVlKCk7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvYW5ub3RhdGlvbnMvbWV0YUFubm90YXRpb25DaGFuZ2VkQ2FzY2FkZTIvc3JjL0EuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2Fubm90YXRpb25zL21ldGFBbm5vdGF0aW9uQ2hhbmdlZENhc2NhZGUyL3NyYy9BLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjRlNjdkNgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2Fubm90YXRpb25zL21ldGFBbm5vdGF0aW9uQ2hhbmdlZENhc2NhZGUyL3NyYy9BLmphdmEKQEAgLTAsMCArMSw3IEBACitpbXBvcnQgamF2YS5sYW5nLmFubm90YXRpb24uKjsKK2ltcG9ydCBzdGF0aWMgamF2YS5sYW5nLmFubm90YXRpb24uRWxlbWVudFR5cGUuKjsKKworQEIoNzcpCitwdWJsaWMgQGludGVyZmFjZSBBIHsKKyAgaW50IHZhbHVlKCk7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvYW5ub3RhdGlvbnMvbWV0YUFubm90YXRpb25DaGFuZ2VkQ2FzY2FkZTIvc3JjL0ExLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9hbm5vdGF0aW9ucy9tZXRhQW5ub3RhdGlvbkNoYW5nZWRDYXNjYWRlMi9zcmMvQTEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMDllZDg5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvYW5ub3RhdGlvbnMvbWV0YUFubm90YXRpb25DaGFuZ2VkQ2FzY2FkZTIvc3JjL0ExLmphdmEKQEAgLTAsMCArMSw2IEBACitpbXBvcnQgamF2YS5sYW5nLmFubm90YXRpb24uKjsKK2ltcG9ydCBzdGF0aWMgamF2YS5sYW5nLmFubm90YXRpb24uRWxlbWVudFR5cGUuKjsKKworQEEoMSkKK3B1YmxpYyBAaW50ZXJmYWNlIEExIHsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9hbm5vdGF0aW9ucy9tZXRhQW5ub3RhdGlvbkNoYW5nZWRDYXNjYWRlMi9zcmMvQi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvYW5ub3RhdGlvbnMvbWV0YUFubm90YXRpb25DaGFuZ2VkQ2FzY2FkZTIvc3JjL0IuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMzNmZGY3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvYW5ub3RhdGlvbnMvbWV0YUFubm90YXRpb25DaGFuZ2VkQ2FzY2FkZTIvc3JjL0IuamF2YQpAQCAtMCwwICsxLDYgQEAKK2ltcG9ydCBqYXZhLmxhbmcuYW5ub3RhdGlvbi4qOworaW1wb3J0IHN0YXRpYyBqYXZhLmxhbmcuYW5ub3RhdGlvbi5FbGVtZW50VHlwZS4qOworCitwdWJsaWMgQGludGVyZmFjZSBCIHsKKyAgaW50IHZhbHVlKCk7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvYW5ub3RhdGlvbnMvbWV0YUFubm90YXRpb25DaGFuZ2VkQ2FzY2FkZTIvc3JjL0MuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2Fubm90YXRpb25zL21ldGFBbm5vdGF0aW9uQ2hhbmdlZENhc2NhZGUyL3NyYy9DLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjk2MmFlZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2Fubm90YXRpb25zL21ldGFBbm5vdGF0aW9uQ2hhbmdlZENhc2NhZGUyL3NyYy9DLmphdmEKQEAgLTAsMCArMSwzIEBACitAQSgxMCkgCitwdWJsaWMgY2xhc3MgQyB7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvYW5ub3RhdGlvbnMvbWV0YUFubm90YXRpb25DaGFuZ2VkQ2FzY2FkZTIvc3JjL0MxLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9hbm5vdGF0aW9ucy9tZXRhQW5ub3RhdGlvbkNoYW5nZWRDYXNjYWRlMi9zcmMvQzEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iN2U3YTZiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvYW5ub3RhdGlvbnMvbWV0YUFubm90YXRpb25DaGFuZ2VkQ2FzY2FkZTIvc3JjL0MxLmphdmEKQEAgLTAsMCArMSwzIEBACitAQTEKK3B1YmxpYyBjbGFzcyBDMSB7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvYW5ub3RhdGlvbnMvcmVtb3ZlQW5ub3RhdGlvblRhcmdldC5sb2cgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9hbm5vdGF0aW9ucy9yZW1vdmVBbm5vdGF0aW9uVGFyZ2V0LmxvZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNWM4YjU4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvYW5ub3RhdGlvbnMvcmVtb3ZlQW5ub3RhdGlvblRhcmdldC5sb2cKQEAgLTAsMCArMSwxMiBAQAorQ2xlYW5pbmcgb3V0cHV0IGZpbGVzOgorb3V0L3Byb2R1Y3Rpb24vUmVtb3ZlQW5ub3RhdGlvblRhcmdldC9BLmNsYXNzCitFbmQgb2YgZmlsZXMKK0NvbXBpbGluZyBmaWxlczoKK3NyYy9BLmphdmEKK0VuZCBvZiBmaWxlcworQ2xlYW5pbmcgb3V0cHV0IGZpbGVzOgorb3V0L3Byb2R1Y3Rpb24vUmVtb3ZlQW5ub3RhdGlvblRhcmdldC9DMi5jbGFzcworRW5kIG9mIGZpbGVzCitDb21waWxpbmcgZmlsZXM6CitzcmMvQzIuamF2YQorRW5kIG9mIGZpbGVzCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9hbm5vdGF0aW9ucy9yZW1vdmVBbm5vdGF0aW9uVGFyZ2V0L0EuamF2YS5uZXcgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9hbm5vdGF0aW9ucy9yZW1vdmVBbm5vdGF0aW9uVGFyZ2V0L0EuamF2YS5uZXcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjExNmE1MwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2Fubm90YXRpb25zL3JlbW92ZUFubm90YXRpb25UYXJnZXQvQS5qYXZhLm5ldwpAQCAtMCwwICsxLDcgQEAKK2ltcG9ydCBqYXZhLmxhbmcuYW5ub3RhdGlvbi4qOworaW1wb3J0IHN0YXRpYyBqYXZhLmxhbmcuYW5ub3RhdGlvbi5FbGVtZW50VHlwZS4qOworCitAVGFyZ2V0KFRZUEUpCitwdWJsaWMgQGludGVyZmFjZSBBIHsKKyAgaW50IHZhbHVlKCk7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvYW5ub3RhdGlvbnMvcmVtb3ZlQW5ub3RhdGlvblRhcmdldC9zcmMvQS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvYW5ub3RhdGlvbnMvcmVtb3ZlQW5ub3RhdGlvblRhcmdldC9zcmMvQS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc0MGM0YzQ3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvYW5ub3RhdGlvbnMvcmVtb3ZlQW5ub3RhdGlvblRhcmdldC9zcmMvQS5qYXZhCkBAIC0wLDAgKzEsNyBAQAoraW1wb3J0IGphdmEubGFuZy5hbm5vdGF0aW9uLio7CitpbXBvcnQgc3RhdGljIGphdmEubGFuZy5hbm5vdGF0aW9uLkVsZW1lbnRUeXBlLio7CisKK0BUYXJnZXQoe1RZUEUsIEZJRUxEfSkKK3B1YmxpYyBAaW50ZXJmYWNlIEEgeworICBpbnQgdmFsdWUoKTsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9hbm5vdGF0aW9ucy9yZW1vdmVBbm5vdGF0aW9uVGFyZ2V0L3NyYy9DLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9hbm5vdGF0aW9ucy9yZW1vdmVBbm5vdGF0aW9uVGFyZ2V0L3NyYy9DLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjk2MmFlZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2Fubm90YXRpb25zL3JlbW92ZUFubm90YXRpb25UYXJnZXQvc3JjL0MuamF2YQpAQCAtMCwwICsxLDMgQEAKK0BBKDEwKSAKK3B1YmxpYyBjbGFzcyBDIHsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9hbm5vdGF0aW9ucy9yZW1vdmVBbm5vdGF0aW9uVGFyZ2V0L3NyYy9DMi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvYW5ub3RhdGlvbnMvcmVtb3ZlQW5ub3RhdGlvblRhcmdldC9zcmMvQzIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNzc2MTU2YgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2Fubm90YXRpb25zL3JlbW92ZUFubm90YXRpb25UYXJnZXQvc3JjL0MyLmphdmEKQEAgLTAsMCArMSw1IEBACitwdWJsaWMgY2xhc3MgQzIgeworCisgIEBBKDMwKSAKKyAgaW50IGZpZWxkOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2Fubm90YXRpb25zL3JlbW92ZUFubm90YXRpb25UeXBlTWVtYmVyLmxvZyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2Fubm90YXRpb25zL3JlbW92ZUFubm90YXRpb25UeXBlTWVtYmVyLmxvZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NzZmNWU5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvYW5ub3RhdGlvbnMvcmVtb3ZlQW5ub3RhdGlvblR5cGVNZW1iZXIubG9nCkBAIC0wLDAgKzEsMTYgQEAKK0NsZWFuaW5nIG91dHB1dCBmaWxlczoKK291dC9wcm9kdWN0aW9uL1JlbW92ZUFubm90YXRpb25UeXBlTWVtYmVyL0EuY2xhc3MKK0VuZCBvZiBmaWxlcworQ29tcGlsaW5nIGZpbGVzOgorc3JjL0EuamF2YQorRW5kIG9mIGZpbGVzCitDbGVhbmluZyBvdXRwdXQgZmlsZXM6CitvdXQvcHJvZHVjdGlvbi9SZW1vdmVBbm5vdGF0aW9uVHlwZU1lbWJlci9DLmNsYXNzCitvdXQvcHJvZHVjdGlvbi9SZW1vdmVBbm5vdGF0aW9uVHlwZU1lbWJlci9DMS5jbGFzcworb3V0L3Byb2R1Y3Rpb24vUmVtb3ZlQW5ub3RhdGlvblR5cGVNZW1iZXIvQzIuY2xhc3MKK0VuZCBvZiBmaWxlcworQ29tcGlsaW5nIGZpbGVzOgorc3JjL0MuamF2YQorc3JjL0MxLmphdmEKK3NyYy9DMi5qYXZhCitFbmQgb2YgZmlsZXMKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2Fubm90YXRpb25zL3JlbW92ZUFubm90YXRpb25UeXBlTWVtYmVyL0EuamF2YS5uZXcgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9hbm5vdGF0aW9ucy9yZW1vdmVBbm5vdGF0aW9uVHlwZU1lbWJlci9BLmphdmEubmV3Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA0Yzc0NTQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9hbm5vdGF0aW9ucy9yZW1vdmVBbm5vdGF0aW9uVHlwZU1lbWJlci9BLmphdmEubmV3CkBAIC0wLDAgKzEsMiBAQAorcHVibGljIEBpbnRlcmZhY2UgQSB7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvYW5ub3RhdGlvbnMvcmVtb3ZlQW5ub3RhdGlvblR5cGVNZW1iZXIvc3JjL0EuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2Fubm90YXRpb25zL3JlbW92ZUFubm90YXRpb25UeXBlTWVtYmVyL3NyYy9BLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODdmMWI2NAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2Fubm90YXRpb25zL3JlbW92ZUFubm90YXRpb25UeXBlTWVtYmVyL3NyYy9BLmphdmEKQEAgLTAsMCArMSwzIEBACitwdWJsaWMgQGludGVyZmFjZSBBIHsKKyAgaW50IHZhbHVlKCk7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvYW5ub3RhdGlvbnMvcmVtb3ZlQW5ub3RhdGlvblR5cGVNZW1iZXIvc3JjL0MuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2Fubm90YXRpb25zL3JlbW92ZUFubm90YXRpb25UeXBlTWVtYmVyL3NyYy9DLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjk2MmFlZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2Fubm90YXRpb25zL3JlbW92ZUFubm90YXRpb25UeXBlTWVtYmVyL3NyYy9DLmphdmEKQEAgLTAsMCArMSwzIEBACitAQSgxMCkgCitwdWJsaWMgY2xhc3MgQyB7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvYW5ub3RhdGlvbnMvcmVtb3ZlQW5ub3RhdGlvblR5cGVNZW1iZXIvc3JjL0MxLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9hbm5vdGF0aW9ucy9yZW1vdmVBbm5vdGF0aW9uVHlwZU1lbWJlci9zcmMvQzEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMzQyOTA1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvYW5ub3RhdGlvbnMvcmVtb3ZlQW5ub3RhdGlvblR5cGVNZW1iZXIvc3JjL0MxLmphdmEKQEAgLTAsMCArMSw2IEBACitwdWJsaWMgY2xhc3MgQzEgeworCisgIEBBKDIwKQorICB2b2lkIGZvbygpIHsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2Fubm90YXRpb25zL3JlbW92ZUFubm90YXRpb25UeXBlTWVtYmVyL3NyYy9DMi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvYW5ub3RhdGlvbnMvcmVtb3ZlQW5ub3RhdGlvblR5cGVNZW1iZXIvc3JjL0MyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTc3NjE1NmIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9hbm5vdGF0aW9ucy9yZW1vdmVBbm5vdGF0aW9uVHlwZU1lbWJlci9zcmMvQzIuamF2YQpAQCAtMCwwICsxLDUgQEAKK3B1YmxpYyBjbGFzcyBDMiB7CisKKyAgQEEoMzApIAorICBpbnQgZmllbGQ7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvYW5ub3RhdGlvbnMvcmVtb3ZlQW5ub3RhdGlvblR5cGVNZW1iZXIxLmxvZyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2Fubm90YXRpb25zL3JlbW92ZUFubm90YXRpb25UeXBlTWVtYmVyMS5sb2cKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODcyOTRhNQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2Fubm90YXRpb25zL3JlbW92ZUFubm90YXRpb25UeXBlTWVtYmVyMS5sb2cKQEAgLTAsMCArMSwxNiBAQAorQ2xlYW5pbmcgb3V0cHV0IGZpbGVzOgorb3V0L3Byb2R1Y3Rpb24vUmVtb3ZlQW5ub3RhdGlvblR5cGVNZW1iZXIxL0EuY2xhc3MKK0VuZCBvZiBmaWxlcworQ29tcGlsaW5nIGZpbGVzOgorc3JjL0EuamF2YQorRW5kIG9mIGZpbGVzCitDbGVhbmluZyBvdXRwdXQgZmlsZXM6CitvdXQvcHJvZHVjdGlvbi9SZW1vdmVBbm5vdGF0aW9uVHlwZU1lbWJlcjEvQy5jbGFzcworb3V0L3Byb2R1Y3Rpb24vUmVtb3ZlQW5ub3RhdGlvblR5cGVNZW1iZXIxL0MxLmNsYXNzCitvdXQvcHJvZHVjdGlvbi9SZW1vdmVBbm5vdGF0aW9uVHlwZU1lbWJlcjEvQzIuY2xhc3MKK0VuZCBvZiBmaWxlcworQ29tcGlsaW5nIGZpbGVzOgorc3JjL0MuamF2YQorc3JjL0MxLmphdmEKK3NyYy9DMi5qYXZhCitFbmQgb2YgZmlsZXMKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2Fubm90YXRpb25zL3JlbW92ZUFubm90YXRpb25UeXBlTWVtYmVyMS9BLmphdmEubmV3IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvYW5ub3RhdGlvbnMvcmVtb3ZlQW5ub3RhdGlvblR5cGVNZW1iZXIxL0EuamF2YS5uZXcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDRjNzQ1NAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2Fubm90YXRpb25zL3JlbW92ZUFubm90YXRpb25UeXBlTWVtYmVyMS9BLmphdmEubmV3CkBAIC0wLDAgKzEsMiBAQAorcHVibGljIEBpbnRlcmZhY2UgQSB7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvYW5ub3RhdGlvbnMvcmVtb3ZlQW5ub3RhdGlvblR5cGVNZW1iZXIxL3NyYy9BLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9hbm5vdGF0aW9ucy9yZW1vdmVBbm5vdGF0aW9uVHlwZU1lbWJlcjEvc3JjL0EuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NDdkMDc3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvYW5ub3RhdGlvbnMvcmVtb3ZlQW5ub3RhdGlvblR5cGVNZW1iZXIxL3NyYy9BLmphdmEKQEAgLTAsMCArMSwzIEBACitwdWJsaWMgQGludGVyZmFjZSBBIHsKKyAgaW50IHZhbHVlKCkgZGVmYXVsdCAxOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2Fubm90YXRpb25zL3JlbW92ZUFubm90YXRpb25UeXBlTWVtYmVyMS9zcmMvQy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvYW5ub3RhdGlvbnMvcmVtb3ZlQW5ub3RhdGlvblR5cGVNZW1iZXIxL3NyYy9DLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjk2MmFlZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2Fubm90YXRpb25zL3JlbW92ZUFubm90YXRpb25UeXBlTWVtYmVyMS9zcmMvQy5qYXZhCkBAIC0wLDAgKzEsMyBAQAorQEEoMTApIAorcHVibGljIGNsYXNzIEMgeworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2Fubm90YXRpb25zL3JlbW92ZUFubm90YXRpb25UeXBlTWVtYmVyMS9zcmMvQzEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2Fubm90YXRpb25zL3JlbW92ZUFubm90YXRpb25UeXBlTWVtYmVyMS9zcmMvQzEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMzQyOTA1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvYW5ub3RhdGlvbnMvcmVtb3ZlQW5ub3RhdGlvblR5cGVNZW1iZXIxL3NyYy9DMS5qYXZhCkBAIC0wLDAgKzEsNiBAQAorcHVibGljIGNsYXNzIEMxIHsKKworICBAQSgyMCkKKyAgdm9pZCBmb28oKSB7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9hbm5vdGF0aW9ucy9yZW1vdmVBbm5vdGF0aW9uVHlwZU1lbWJlcjEvc3JjL0MyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9hbm5vdGF0aW9ucy9yZW1vdmVBbm5vdGF0aW9uVHlwZU1lbWJlcjEvc3JjL0MyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTc3NjE1NmIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9hbm5vdGF0aW9ucy9yZW1vdmVBbm5vdGF0aW9uVHlwZU1lbWJlcjEvc3JjL0MyLmphdmEKQEAgLTAsMCArMSw1IEBACitwdWJsaWMgY2xhc3MgQzIgeworCisgIEBBKDMwKSAKKyAgaW50IGZpZWxkOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2Fubm90YXRpb25zL3JlbW92ZURlZmF1bHRGcm9tQW5ub3RhdGlvbk1lbWJlci5sb2cgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9hbm5vdGF0aW9ucy9yZW1vdmVEZWZhdWx0RnJvbUFubm90YXRpb25NZW1iZXIubG9nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkzYjk1NTkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9hbm5vdGF0aW9ucy9yZW1vdmVEZWZhdWx0RnJvbUFubm90YXRpb25NZW1iZXIubG9nCkBAIC0wLDAgKzEsMTQgQEAKK0NsZWFuaW5nIG91dHB1dCBmaWxlczoKK291dC9wcm9kdWN0aW9uL1JlbW92ZURlZmF1bHRGcm9tQW5ub3RhdGlvbk1lbWJlci9BLmNsYXNzCitFbmQgb2YgZmlsZXMKK0NvbXBpbGluZyBmaWxlczoKK3NyYy9BLmphdmEKK0VuZCBvZiBmaWxlcworQ2xlYW5pbmcgb3V0cHV0IGZpbGVzOgorb3V0L3Byb2R1Y3Rpb24vUmVtb3ZlRGVmYXVsdEZyb21Bbm5vdGF0aW9uTWVtYmVyL0MuY2xhc3MKK291dC9wcm9kdWN0aW9uL1JlbW92ZURlZmF1bHRGcm9tQW5ub3RhdGlvbk1lbWJlci9DMS5jbGFzcworRW5kIG9mIGZpbGVzCitDb21waWxpbmcgZmlsZXM6CitzcmMvQy5qYXZhCitzcmMvQzEuamF2YQorRW5kIG9mIGZpbGVzCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9hbm5vdGF0aW9ucy9yZW1vdmVEZWZhdWx0RnJvbUFubm90YXRpb25NZW1iZXIvQS5qYXZhLm5ldyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2Fubm90YXRpb25zL3JlbW92ZURlZmF1bHRGcm9tQW5ub3RhdGlvbk1lbWJlci9BLmphdmEubmV3Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg3ZjFiNjQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9hbm5vdGF0aW9ucy9yZW1vdmVEZWZhdWx0RnJvbUFubm90YXRpb25NZW1iZXIvQS5qYXZhLm5ldwpAQCAtMCwwICsxLDMgQEAKK3B1YmxpYyBAaW50ZXJmYWNlIEEgeworICBpbnQgdmFsdWUoKTsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9hbm5vdGF0aW9ucy9yZW1vdmVEZWZhdWx0RnJvbUFubm90YXRpb25NZW1iZXIvc3JjL0EuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2Fubm90YXRpb25zL3JlbW92ZURlZmF1bHRGcm9tQW5ub3RhdGlvbk1lbWJlci9zcmMvQS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVjYWEzMTQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9hbm5vdGF0aW9ucy9yZW1vdmVEZWZhdWx0RnJvbUFubm90YXRpb25NZW1iZXIvc3JjL0EuamF2YQpAQCAtMCwwICsxLDMgQEAKK3B1YmxpYyBAaW50ZXJmYWNlIEEgeworICBpbnQgdmFsdWUoKSBkZWZhdWx0IDc7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvYW5ub3RhdGlvbnMvcmVtb3ZlRGVmYXVsdEZyb21Bbm5vdGF0aW9uTWVtYmVyL3NyYy9DLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9hbm5vdGF0aW9ucy9yZW1vdmVEZWZhdWx0RnJvbUFubm90YXRpb25NZW1iZXIvc3JjL0MuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jOWY1MWM4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvYW5ub3RhdGlvbnMvcmVtb3ZlRGVmYXVsdEZyb21Bbm5vdGF0aW9uTWVtYmVyL3NyYy9DLmphdmEKQEAgLTAsMCArMSwzIEBACitAQSgpIAorcHVibGljIGNsYXNzIEMgeworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2Fubm90YXRpb25zL3JlbW92ZURlZmF1bHRGcm9tQW5ub3RhdGlvbk1lbWJlci9zcmMvQzEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2Fubm90YXRpb25zL3JlbW92ZURlZmF1bHRGcm9tQW5ub3RhdGlvbk1lbWJlci9zcmMvQzEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NTczNDg4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvYW5ub3RhdGlvbnMvcmVtb3ZlRGVmYXVsdEZyb21Bbm5vdGF0aW9uTWVtYmVyL3NyYy9DMS5qYXZhCkBAIC0wLDAgKzEsNiBAQAorcHVibGljIGNsYXNzIEMxIHsKKworICBAQSgpCisgIHZvaWQgZm9vKCkgeworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvYW5ub3RhdGlvbnMvcmVtb3ZlRGVmYXVsdEZyb21Bbm5vdGF0aW9uTWVtYmVyL3NyYy9DMi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvYW5ub3RhdGlvbnMvcmVtb3ZlRGVmYXVsdEZyb21Bbm5vdGF0aW9uTWVtYmVyL3NyYy9DMi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU3NzYxNTZiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvYW5ub3RhdGlvbnMvcmVtb3ZlRGVmYXVsdEZyb21Bbm5vdGF0aW9uTWVtYmVyL3NyYy9DMi5qYXZhCkBAIC0wLDAgKzEsNSBAQAorcHVibGljIGNsYXNzIEMyIHsKKworICBAQSgzMCkgCisgIGludCBmaWVsZDsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9jaGFuZ2VOYW1lL2NoYW5nZUNhc2VPZk5hbWUvYnVpbGQubG9nIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvY2hhbmdlTmFtZS9jaGFuZ2VDYXNlT2ZOYW1lL2J1aWxkLmxvZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYjI4ODY3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvY2hhbmdlTmFtZS9jaGFuZ2VDYXNlT2ZOYW1lL2J1aWxkLmxvZwpAQCAtMCwwICsxLDYgQEAKK0NsZWFuaW5nIG91dHB1dCBmaWxlczoKK291dC9wcm9kdWN0aW9uL0NoYW5nZUNhc2VPZk5hbWUvQS5jbGFzcworRW5kIG9mIGZpbGVzCitDb21waWxpbmcgZmlsZXM6CitzcmMvYS5qYXZhCitFbmQgb2YgZmlsZXMKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NoYW5nZU5hbWUvY2hhbmdlQ2FzZU9mTmFtZS9zcmMvQS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvY2hhbmdlTmFtZS9jaGFuZ2VDYXNlT2ZOYW1lL3NyYy9BLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjFmZjJhYgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NoYW5nZU5hbWUvY2hhbmdlQ2FzZU9mTmFtZS9zcmMvQS5qYXZhCkBAIC0wLDAgKzEsMiBAQAorcHVibGljIGNsYXNzIEEgeworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NoYW5nZU5hbWUvY2hhbmdlQ2FzZU9mTmFtZS9zcmMvQS5qYXZhLnJlbW92ZSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NoYW5nZU5hbWUvY2hhbmdlQ2FzZU9mTmFtZS9zcmMvQS5qYXZhLnJlbW92ZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNjlkZTI5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvY2hhbmdlTmFtZS9jaGFuZ2VDYXNlT2ZOYW1lL3NyYy9BLmphdmEucmVtb3ZlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9jaGFuZ2VOYW1lL2NoYW5nZUNhc2VPZk5hbWUvc3JjL2EuamF2YS5uZXcgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9jaGFuZ2VOYW1lL2NoYW5nZUNhc2VPZk5hbWUvc3JjL2EuamF2YS5uZXcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTUzYTNiOQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NoYW5nZU5hbWUvY2hhbmdlQ2FzZU9mTmFtZS9zcmMvYS5qYXZhLm5ldwpAQCAtMCwwICsxLDIgQEAKK3B1YmxpYyBjbGFzcyBhIHsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9jaGFuZ2VOYW1lL2NoYW5nZUNsYXNzTmFtZS9BLmphdmEucmVtb3ZlIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvY2hhbmdlTmFtZS9jaGFuZ2VDbGFzc05hbWUvQS5qYXZhLnJlbW92ZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNjlkZTI5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvY2hhbmdlTmFtZS9jaGFuZ2VDbGFzc05hbWUvQS5qYXZhLnJlbW92ZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvY2hhbmdlTmFtZS9jaGFuZ2VDbGFzc05hbWUvQi5qYXZhLm5ldyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NoYW5nZU5hbWUvY2hhbmdlQ2xhc3NOYW1lL0IuamF2YS5uZXcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjUzODM0YgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NoYW5nZU5hbWUvY2hhbmdlQ2xhc3NOYW1lL0IuamF2YS5uZXcKQEAgLTAsMCArMSwyIEBACitjbGFzcyBCIHsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9jaGFuZ2VOYW1lL2NoYW5nZUNsYXNzTmFtZS9idWlsZC5sb2cgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9jaGFuZ2VOYW1lL2NoYW5nZUNsYXNzTmFtZS9idWlsZC5sb2cKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzI3MzFkNQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NoYW5nZU5hbWUvY2hhbmdlQ2xhc3NOYW1lL2J1aWxkLmxvZwpAQCAtMCwwICsxLDYgQEAKK0NsZWFuaW5nIG91dHB1dCBmaWxlczoKK291dC9wcm9kdWN0aW9uL0NoYW5nZUNsYXNzTmFtZS9BLmNsYXNzCitFbmQgb2YgZmlsZXMKK0NvbXBpbGluZyBmaWxlczoKK3NyYy9CLmphdmEKK0VuZCBvZiBmaWxlcwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvY2hhbmdlTmFtZS9jaGFuZ2VDbGFzc05hbWUvc3JjL0EuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NoYW5nZU5hbWUvY2hhbmdlQ2xhc3NOYW1lL3NyYy9BLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTdjYTIyYQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NoYW5nZU5hbWUvY2hhbmdlQ2xhc3NOYW1lL3NyYy9BLmphdmEKQEAgLTAsMCArMSwyIEBACitjbGFzcyBBIHsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9jbGFzc01vZGlmaWVycy9hZGRTdGF0aWMubG9nIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvY2xhc3NNb2RpZmllcnMvYWRkU3RhdGljLmxvZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZDYzY2RlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvY2xhc3NNb2RpZmllcnMvYWRkU3RhdGljLmxvZwpAQCAtMCwwICsxLDEzIEBACitDbGVhbmluZyBvdXRwdXQgZmlsZXM6CitvdXQvcHJvZHVjdGlvbi9BZGRTdGF0aWMvQSRCLmNsYXNzCitvdXQvcHJvZHVjdGlvbi9BZGRTdGF0aWMvQS5jbGFzcworRW5kIG9mIGZpbGVzCitDb21waWxpbmcgZmlsZXM6CitzcmMvQS5qYXZhCitFbmQgb2YgZmlsZXMKK0NsZWFuaW5nIG91dHB1dCBmaWxlczoKK291dC9wcm9kdWN0aW9uL0FkZFN0YXRpYy9CLmNsYXNzCitFbmQgb2YgZmlsZXMKK0NvbXBpbGluZyBmaWxlczoKK3NyYy9CLmphdmEKK0VuZCBvZiBmaWxlcwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvY2xhc3NNb2RpZmllcnMvYWRkU3RhdGljL0EuamF2YS5uZXcgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9jbGFzc01vZGlmaWVycy9hZGRTdGF0aWMvQS5qYXZhLm5ldwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNTI0ZmRmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvY2xhc3NNb2RpZmllcnMvYWRkU3RhdGljL0EuamF2YS5uZXcKQEAgLTAsMCArMSwxNSBAQAorcHVibGljIGNsYXNzIEEgeworICAgIGludCBhOworCisgICAgcHVibGljIEEgKGludCBhKSB7CisgICAgICAgIHRoaXMuYSA9IGE7CisgICAgfQorCisgICAgcHVibGljIHN0YXRpYyBjbGFzcyBCIHsKKyAgICAgICAgaW50IGI7CisKKyAgICAgICAgcHVibGljIEIgKGludCBiKSB7CisgICAgICAgICAgICB0aGlzLmIgPSBiOworICAgICAgICB9CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NsYXNzTW9kaWZpZXJzL2FkZFN0YXRpYy9zcmMvQS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvY2xhc3NNb2RpZmllcnMvYWRkU3RhdGljL3NyYy9BLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjBjNWE2YQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NsYXNzTW9kaWZpZXJzL2FkZFN0YXRpYy9zcmMvQS5qYXZhCkBAIC0wLDAgKzEsMTUgQEAKK3B1YmxpYyBjbGFzcyBBIHsKKyAgICBpbnQgYTsKKworICAgIHB1YmxpYyBBIChpbnQgYSkgeworICAgICAgICB0aGlzLmEgPSBhOworICAgIH0KKworICAgIHB1YmxpYyBjbGFzcyBCIHsKKyAgICAgICAgaW50IGI7CisKKyAgICAgICAgcHVibGljIEIgKGludCBiKSB7CisgICAgICAgICAgICB0aGlzLmIgPSBiOworICAgICAgICB9CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NsYXNzTW9kaWZpZXJzL2FkZFN0YXRpYy9zcmMvQi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvY2xhc3NNb2RpZmllcnMvYWRkU3RhdGljL3NyYy9CLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGYyNjFlNAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NsYXNzTW9kaWZpZXJzL2FkZFN0YXRpYy9zcmMvQi5qYXZhCkBAIC0wLDAgKzEsNSBAQAorcHVibGljIGNsYXNzIEIgeworICAgIHB1YmxpYyBBLkIgZ2V0ICgpIHsKKyAgICAgICAgcmV0dXJuIG5ldyBBKDEpLm5ldyBCKDMpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9jbGFzc01vZGlmaWVycy9hZGRTdGF0aWMvc3JjL0MuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NsYXNzTW9kaWZpZXJzL2FkZFN0YXRpYy9zcmMvQy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFmYWRjYTQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9jbGFzc01vZGlmaWVycy9hZGRTdGF0aWMvc3JjL0MuamF2YQpAQCAtMCwwICsxLDUgQEAKK3B1YmxpYyBjbGFzcyBDIHsKKyAgICBwdWJsaWMgQS5CIGdldCAoKSB7CisgICAgICAgIHJldHVybiBuZXcgQigpLmdldCgpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9jbGFzc01vZGlmaWVycy9kZWNBY2Nlc3MubG9nIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvY2xhc3NNb2RpZmllcnMvZGVjQWNjZXNzLmxvZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZDIwNDljCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvY2xhc3NNb2RpZmllcnMvZGVjQWNjZXNzLmxvZwpAQCAtMCwwICsxLDEyIEBACitDbGVhbmluZyBvdXRwdXQgZmlsZXM6CitvdXQvcHJvZHVjdGlvbi9EZWNBY2Nlc3MvaW1wbC9TZXJ2aWNlLmNsYXNzCitFbmQgb2YgZmlsZXMKK0NvbXBpbGluZyBmaWxlczoKK3NyYy9pbXBsL1NlcnZpY2UuamF2YQorRW5kIG9mIGZpbGVzCitDbGVhbmluZyBvdXRwdXQgZmlsZXM6CitvdXQvcHJvZHVjdGlvbi9EZWNBY2Nlc3MvQ2xpZW50LmNsYXNzCitFbmQgb2YgZmlsZXMKK0NvbXBpbGluZyBmaWxlczoKK3NyYy9pbXBsL0NsaWVudC5qYXZhCitFbmQgb2YgZmlsZXMKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NsYXNzTW9kaWZpZXJzL2RlY0FjY2Vzcy9zcmMvaW1wbC9DbGllbnQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NsYXNzTW9kaWZpZXJzL2RlY0FjY2Vzcy9zcmMvaW1wbC9DbGllbnQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYjViYWRiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvY2xhc3NNb2RpZmllcnMvZGVjQWNjZXNzL3NyYy9pbXBsL0NsaWVudC5qYXZhCkBAIC0wLDAgKzEsOSBAQAoraW1wb3J0IGltcGwuU2VydmljZTsKKworaW1wb3J0IGphdmEuc2VjdXJpdHkuUHJvdmlkZXI7CisKK2NsYXNzIENsaWVudCB7CisgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKKyAgICAgIG5ldyBTZXJ2aWNlKDEwKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NsYXNzTW9kaWZpZXJzL2RlY0FjY2Vzcy9zcmMvaW1wbC9TZXJ2aWNlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9jbGFzc01vZGlmaWVycy9kZWNBY2Nlc3Mvc3JjL2ltcGwvU2VydmljZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUzYzk4NmMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9jbGFzc01vZGlmaWVycy9kZWNBY2Nlc3Mvc3JjL2ltcGwvU2VydmljZS5qYXZhCkBAIC0wLDAgKzEsNCBAQAorcGFja2FnZSBpbXBsOworcHVibGljIGNsYXNzIFNlcnZpY2V7CisgIHB1YmxpYyBTZXJ2aWNlKGludCBhKXt9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvY2xhc3NNb2RpZmllcnMvZGVjQWNjZXNzL3NyYy9pbXBsL1NlcnZpY2UuamF2YS5uZXcgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9jbGFzc01vZGlmaWVycy9kZWNBY2Nlc3Mvc3JjL2ltcGwvU2VydmljZS5qYXZhLm5ldwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZGIzYzUzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvY2xhc3NNb2RpZmllcnMvZGVjQWNjZXNzL3NyYy9pbXBsL1NlcnZpY2UuamF2YS5uZXcKQEAgLTAsMCArMSw0IEBACitwYWNrYWdlIGltcGw7CitjbGFzcyBTZXJ2aWNleworICBwdWJsaWMgU2VydmljZShpbnQgYSl7fQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NsYXNzTW9kaWZpZXJzL2Ryb3BBYnN0cmFjdC5sb2cgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9jbGFzc01vZGlmaWVycy9kcm9wQWJzdHJhY3QubG9nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVkMmIzMDJkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvY2xhc3NNb2RpZmllcnMvZHJvcEFic3RyYWN0LmxvZwpAQCAtMCwwICsxLDYgQEAKK0NsZWFuaW5nIG91dHB1dCBmaWxlczoKK291dC9wcm9kdWN0aW9uL0Ryb3BBYnN0cmFjdC9BLmNsYXNzCitFbmQgb2YgZmlsZXMKK0NvbXBpbGluZyBmaWxlczoKK3NyYy9BLmphdmEKK0VuZCBvZiBmaWxlcwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvY2xhc3NNb2RpZmllcnMvZHJvcEFic3RyYWN0L0EuamF2YS5uZXcgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9jbGFzc01vZGlmaWVycy9kcm9wQWJzdHJhY3QvQS5qYXZhLm5ldwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yODhlOTdhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvY2xhc3NNb2RpZmllcnMvZHJvcEFic3RyYWN0L0EuamF2YS5uZXcKQEAgLTAsMCArMSw1IEBACitwdWJsaWMgY2xhc3MgQSB7CisgICAgaW50IGYgKCkgeworICAgICAgIHJldHVybiAwOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9jbGFzc01vZGlmaWVycy9kcm9wQWJzdHJhY3Qvc3JjL0EuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NsYXNzTW9kaWZpZXJzL2Ryb3BBYnN0cmFjdC9zcmMvQS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUzN2RiMDgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9jbGFzc01vZGlmaWVycy9kcm9wQWJzdHJhY3Qvc3JjL0EuamF2YQpAQCAtMCwwICsxLDEwIEBACisvKioKKyAqIENyZWF0ZWQgYnkgSW50ZWxsaUogSURFQS4KKyAqIFVzZXI6IGRiCisgKiBEYXRlOiAyMS4wOS4xMQorICogVGltZTogMjM6NTUKKyAqIFRvIGNoYW5nZSB0aGlzIHRlbXBsYXRlIHVzZSBGaWxlIHwgU2V0dGluZ3MgfCBGaWxlIFRlbXBsYXRlcy4KKyAqLworcHVibGljIGFic3RyYWN0IGNsYXNzIEEgeworICAgIGFic3RyYWN0IGludCBmICgpOworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvY2xhc3NNb2RpZmllcnMvZHJvcEFic3RyYWN0L3NyYy9CLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9jbGFzc01vZGlmaWVycy9kcm9wQWJzdHJhY3Qvc3JjL0IuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ODVkNjAwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvY2xhc3NNb2RpZmllcnMvZHJvcEFic3RyYWN0L3NyYy9CLmphdmEKQEAgLTAsMCArMSw5IEBACisvKioKKyAqIENyZWF0ZWQgYnkgSW50ZWxsaUogSURFQS4KKyAqIFVzZXI6IGRiCisgKiBEYXRlOiAyMS4wOS4xMQorICogVGltZTogMjM6NTYKKyAqIFRvIGNoYW5nZSB0aGlzIHRlbXBsYXRlIHVzZSBGaWxlIHwgU2V0dGluZ3MgfCBGaWxlIFRlbXBsYXRlcy4KKyAqLworcHVibGljIGFic3RyYWN0IGNsYXNzIEIgZXh0ZW5kcyBBIHsKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NsYXNzTW9kaWZpZXJzL2Ryb3BBYnN0cmFjdC9zcmMvQy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvY2xhc3NNb2RpZmllcnMvZHJvcEFic3RyYWN0L3NyYy9DLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmY3Mzc4MwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NsYXNzTW9kaWZpZXJzL2Ryb3BBYnN0cmFjdC9zcmMvQy5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKKy8qKgorICogQ3JlYXRlZCBieSBJbnRlbGxpSiBJREVBLgorICogVXNlcjogZGIKKyAqIERhdGU6IDIxLjA5LjExCisgKiBUaW1lOiAyMzo1NgorICogVG8gY2hhbmdlIHRoaXMgdGVtcGxhdGUgdXNlIEZpbGUgfCBTZXR0aW5ncyB8IEZpbGUgVGVtcGxhdGVzLgorICovCitwdWJsaWMgYWJzdHJhY3QgY2xhc3MgQyBleHRlbmRzIEEgeworICAgIGFic3RyYWN0IGludCBnKCk7Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9jbGFzc01vZGlmaWVycy9kcm9wQWJzdHJhY3Qvc3JjL00uamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NsYXNzTW9kaWZpZXJzL2Ryb3BBYnN0cmFjdC9zcmMvTS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhlMDhjNTUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9jbGFzc01vZGlmaWVycy9kcm9wQWJzdHJhY3Qvc3JjL00uamF2YQpAQCAtMCwwICsxLDEyIEBACisvKioKKyAqIENyZWF0ZWQgYnkgSW50ZWxsaUogSURFQS4KKyAqIFVzZXI6IGRiCisgKiBEYXRlOiAyMS4wOS4xMQorICogVGltZTogMjM6NTcKKyAqIFRvIGNoYW5nZSB0aGlzIHRlbXBsYXRlIHVzZSBGaWxlIHwgU2V0dGluZ3MgfCBGaWxlIFRlbXBsYXRlcy4KKyAqLworcHVibGljIGNsYXNzIE0geworICAgIHB1YmxpYyBpbnQgZyAoZmluYWwgQSBhLCBmaW5hbCBCIGIsIGZpbmFsIEMgYyl7CisgICAgICAgIHJldHVybiBhLmYoKSArIGIuZigpICsgYy5mKCkgKyBjLmcoKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9jbGFzc01vZGlmaWVycy9yZW1vdmVTdGF0aWMubG9nIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvY2xhc3NNb2RpZmllcnMvcmVtb3ZlU3RhdGljLmxvZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mN2UyNWE4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvY2xhc3NNb2RpZmllcnMvcmVtb3ZlU3RhdGljLmxvZwpAQCAtMCwwICsxLDEzIEBACitDbGVhbmluZyBvdXRwdXQgZmlsZXM6CitvdXQvcHJvZHVjdGlvbi9SZW1vdmVTdGF0aWMvQSRCLmNsYXNzCitvdXQvcHJvZHVjdGlvbi9SZW1vdmVTdGF0aWMvQS5jbGFzcworRW5kIG9mIGZpbGVzCitDb21waWxpbmcgZmlsZXM6CitzcmMvQS5qYXZhCitFbmQgb2YgZmlsZXMKK0NsZWFuaW5nIG91dHB1dCBmaWxlczoKK291dC9wcm9kdWN0aW9uL1JlbW92ZVN0YXRpYy9CLmNsYXNzCitFbmQgb2YgZmlsZXMKK0NvbXBpbGluZyBmaWxlczoKK3NyYy9CLmphdmEKK0VuZCBvZiBmaWxlcwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvY2xhc3NNb2RpZmllcnMvcmVtb3ZlU3RhdGljL0EuamF2YS5uZXcgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9jbGFzc01vZGlmaWVycy9yZW1vdmVTdGF0aWMvQS5qYXZhLm5ldwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MGM1YTZhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvY2xhc3NNb2RpZmllcnMvcmVtb3ZlU3RhdGljL0EuamF2YS5uZXcKQEAgLTAsMCArMSwxNSBAQAorcHVibGljIGNsYXNzIEEgeworICAgIGludCBhOworCisgICAgcHVibGljIEEgKGludCBhKSB7CisgICAgICAgIHRoaXMuYSA9IGE7CisgICAgfQorCisgICAgcHVibGljIGNsYXNzIEIgeworICAgICAgICBpbnQgYjsKKworICAgICAgICBwdWJsaWMgQiAoaW50IGIpIHsKKyAgICAgICAgICAgIHRoaXMuYiA9IGI7CisgICAgICAgIH0KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvY2xhc3NNb2RpZmllcnMvcmVtb3ZlU3RhdGljL3NyYy9BLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9jbGFzc01vZGlmaWVycy9yZW1vdmVTdGF0aWMvc3JjL0EuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNTI0ZmRmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvY2xhc3NNb2RpZmllcnMvcmVtb3ZlU3RhdGljL3NyYy9BLmphdmEKQEAgLTAsMCArMSwxNSBAQAorcHVibGljIGNsYXNzIEEgeworICAgIGludCBhOworCisgICAgcHVibGljIEEgKGludCBhKSB7CisgICAgICAgIHRoaXMuYSA9IGE7CisgICAgfQorCisgICAgcHVibGljIHN0YXRpYyBjbGFzcyBCIHsKKyAgICAgICAgaW50IGI7CisKKyAgICAgICAgcHVibGljIEIgKGludCBiKSB7CisgICAgICAgICAgICB0aGlzLmIgPSBiOworICAgICAgICB9CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NsYXNzTW9kaWZpZXJzL3JlbW92ZVN0YXRpYy9zcmMvQi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvY2xhc3NNb2RpZmllcnMvcmVtb3ZlU3RhdGljL3NyYy9CLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmVjYzU3MgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NsYXNzTW9kaWZpZXJzL3JlbW92ZVN0YXRpYy9zcmMvQi5qYXZhCkBAIC0wLDAgKzEsNSBAQAorcHVibGljIGNsYXNzIEIgeworICAgIHB1YmxpYyBBLkIgZ2V0ICgpIHsKKyAgICAgICAgcmV0dXJuIG5ldyBBLkIoMyk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NsYXNzTW9kaWZpZXJzL3JlbW92ZVN0YXRpYy9zcmMvQy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvY2xhc3NNb2RpZmllcnMvcmVtb3ZlU3RhdGljL3NyYy9DLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWZhZGNhNAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NsYXNzTW9kaWZpZXJzL3JlbW92ZVN0YXRpYy9zcmMvQy5qYXZhCkBAIC0wLDAgKzEsNSBAQAorcHVibGljIGNsYXNzIEMgeworICAgIHB1YmxpYyBBLkIgZ2V0ICgpIHsKKyAgICAgICAgcmV0dXJuIG5ldyBCKCkuZ2V0KCk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NsYXNzTW9kaWZpZXJzL3NldEFic3RyYWN0LmxvZyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NsYXNzTW9kaWZpZXJzL3NldEFic3RyYWN0LmxvZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MGIwZmZmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvY2xhc3NNb2RpZmllcnMvc2V0QWJzdHJhY3QubG9nCkBAIC0wLDAgKzEsMTIgQEAKK0NsZWFuaW5nIG91dHB1dCBmaWxlczoKK291dC9wcm9kdWN0aW9uL1NldEFic3RyYWN0L1NlcnZpY2UuY2xhc3MKK0VuZCBvZiBmaWxlcworQ29tcGlsaW5nIGZpbGVzOgorc3JjL1NlcnZpY2UuamF2YQorRW5kIG9mIGZpbGVzCitDbGVhbmluZyBvdXRwdXQgZmlsZXM6CitvdXQvcHJvZHVjdGlvbi9TZXRBYnN0cmFjdC9DbGllbnQuY2xhc3MKK0VuZCBvZiBmaWxlcworQ29tcGlsaW5nIGZpbGVzOgorc3JjL0NsaWVudC5qYXZhCitFbmQgb2YgZmlsZXMKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NsYXNzTW9kaWZpZXJzL3NldEFic3RyYWN0L1NlcnZpY2UuamF2YS5uZXcgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9jbGFzc01vZGlmaWVycy9zZXRBYnN0cmFjdC9TZXJ2aWNlLmphdmEubmV3Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ1M2ZmMDIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9jbGFzc01vZGlmaWVycy9zZXRBYnN0cmFjdC9TZXJ2aWNlLmphdmEubmV3CkBAIC0wLDAgKzEsMyBAQAorcHVibGljIGFic3RyYWN0IGNsYXNzIFNlcnZpY2V7CisgIHB1YmxpYyB2b2lkIGZvbygpIHt9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvY2xhc3NNb2RpZmllcnMvc2V0QWJzdHJhY3Qvc3JjL0NsaWVudC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvY2xhc3NNb2RpZmllcnMvc2V0QWJzdHJhY3Qvc3JjL0NsaWVudC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdiMGVhN2YKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9jbGFzc01vZGlmaWVycy9zZXRBYnN0cmFjdC9zcmMvQ2xpZW50LmphdmEKQEAgLTAsMCArMSw2IEBACitjbGFzcyBDbGllbnQgeworICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CisgICAgU2VydmljZSBzZXJ2aWNlID0gbmV3IFNlcnZpY2UoKTsKKyAgICBzZXJ2aWNlLmZvbygpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvY2xhc3NNb2RpZmllcnMvc2V0QWJzdHJhY3Qvc3JjL04uamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NsYXNzTW9kaWZpZXJzL3NldEFic3RyYWN0L3NyYy9OLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjg3MWNmZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NsYXNzTW9kaWZpZXJzL3NldEFic3RyYWN0L3NyYy9OLmphdmEKQEAgLTAsMCArMSw1IEBACitjbGFzcyBOIHsKKyAgICB2b2lkIGYgKFNlcnZpY2UgcykgeworICAgICAgICBzLmZvbyAoKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvY2xhc3NNb2RpZmllcnMvc2V0QWJzdHJhY3Qvc3JjL1NlcnZpY2UuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NsYXNzTW9kaWZpZXJzL3NldEFic3RyYWN0L3NyYy9TZXJ2aWNlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTZhNzZmZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NsYXNzTW9kaWZpZXJzL3NldEFic3RyYWN0L3NyYy9TZXJ2aWNlLmphdmEKQEAgLTAsMCArMSwzIEBACitwdWJsaWMgY2xhc3MgU2VydmljZXsKKyAgcHVibGljIHZvaWQgZm9vKCkge30KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9jbGFzc01vZGlmaWVycy9zZXRGaW5hbC5sb2cgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9jbGFzc01vZGlmaWVycy9zZXRGaW5hbC5sb2cKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDA5OTIwOQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NsYXNzTW9kaWZpZXJzL3NldEZpbmFsLmxvZwpAQCAtMCwwICsxLDEyIEBACitDbGVhbmluZyBvdXRwdXQgZmlsZXM6CitvdXQvcHJvZHVjdGlvbi9TZXRGaW5hbC9TZXJ2aWNlLmNsYXNzCitFbmQgb2YgZmlsZXMKK0NvbXBpbGluZyBmaWxlczoKK3NyYy9TZXJ2aWNlLmphdmEKK0VuZCBvZiBmaWxlcworQ2xlYW5pbmcgb3V0cHV0IGZpbGVzOgorb3V0L3Byb2R1Y3Rpb24vU2V0RmluYWwvU3ViU2VydmljZS5jbGFzcworRW5kIG9mIGZpbGVzCitDb21waWxpbmcgZmlsZXM6CitzcmMvU3ViU2VydmljZS5qYXZhCitFbmQgb2YgZmlsZXMKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NsYXNzTW9kaWZpZXJzL3NldEZpbmFsL1NlcnZpY2UuamF2YS5uZXcgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9jbGFzc01vZGlmaWVycy9zZXRGaW5hbC9TZXJ2aWNlLmphdmEubmV3Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhlNWJjOTcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9jbGFzc01vZGlmaWVycy9zZXRGaW5hbC9TZXJ2aWNlLmphdmEubmV3CkBAIC0wLDAgKzEsMyBAQAorcHVibGljIGZpbmFsIGNsYXNzIFNlcnZpY2V7CisgIHB1YmxpYyB2b2lkIGZvbygpIHt9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvY2xhc3NNb2RpZmllcnMvc2V0RmluYWwvc3JjL1NlcnZpY2UuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NsYXNzTW9kaWZpZXJzL3NldEZpbmFsL3NyYy9TZXJ2aWNlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTZhNzZmZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NsYXNzTW9kaWZpZXJzL3NldEZpbmFsL3NyYy9TZXJ2aWNlLmphdmEKQEAgLTAsMCArMSwzIEBACitwdWJsaWMgY2xhc3MgU2VydmljZXsKKyAgcHVibGljIHZvaWQgZm9vKCkge30KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9jbGFzc01vZGlmaWVycy9zZXRGaW5hbC9zcmMvU3ViU2VydmljZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvY2xhc3NNb2RpZmllcnMvc2V0RmluYWwvc3JjL1N1YlNlcnZpY2UuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMDBmZTE4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvY2xhc3NNb2RpZmllcnMvc2V0RmluYWwvc3JjL1N1YlNlcnZpY2UuamF2YQpAQCAtMCwwICsxLDIgQEAKK3B1YmxpYyBjbGFzcyBTdWJTZXJ2aWNlIGV4dGVuZHMgU2VydmljZSB7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvY2xhc3NNb2RpZmllcnMvc2V0RmluYWwxLmxvZyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NsYXNzTW9kaWZpZXJzL3NldEZpbmFsMS5sb2cKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWJkY2MxMAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NsYXNzTW9kaWZpZXJzL3NldEZpbmFsMS5sb2cKQEAgLTAsMCArMSwxMiBAQAorQ2xlYW5pbmcgb3V0cHV0IGZpbGVzOgorb3V0L3Byb2R1Y3Rpb24vU2V0RmluYWwxL0EuY2xhc3MKK0VuZCBvZiBmaWxlcworQ29tcGlsaW5nIGZpbGVzOgorc3JjL0EuamF2YQorRW5kIG9mIGZpbGVzCitDbGVhbmluZyBvdXRwdXQgZmlsZXM6CitvdXQvcHJvZHVjdGlvbi9TZXRGaW5hbDEvQi5jbGFzcworRW5kIG9mIGZpbGVzCitDb21waWxpbmcgZmlsZXM6CitzcmMvQi5qYXZhCitFbmQgb2YgZmlsZXMKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NsYXNzTW9kaWZpZXJzL3NldEZpbmFsMS9BLmphdmEubmV3IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvY2xhc3NNb2RpZmllcnMvc2V0RmluYWwxL0EuamF2YS5uZXcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzk3Mzk0OQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NsYXNzTW9kaWZpZXJzL3NldEZpbmFsMS9BLmphdmEubmV3CkBAIC0wLDAgKzEsMiBAQAorcHVibGljIGZpbmFsIGNsYXNzIEEgeworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NsYXNzTW9kaWZpZXJzL3NldEZpbmFsMS9zcmMvQS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvY2xhc3NNb2RpZmllcnMvc2V0RmluYWwxL3NyYy9BLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjFmZjJhYgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NsYXNzTW9kaWZpZXJzL3NldEZpbmFsMS9zcmMvQS5qYXZhCkBAIC0wLDAgKzEsMiBAQAorcHVibGljIGNsYXNzIEEgeworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NsYXNzTW9kaWZpZXJzL3NldEZpbmFsMS9zcmMvQi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvY2xhc3NNb2RpZmllcnMvc2V0RmluYWwxL3NyYy9CLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTc0Y2VhOQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NsYXNzTW9kaWZpZXJzL3NldEZpbmFsMS9zcmMvQi5qYXZhCkBAIC0wLDAgKzEsOSBAQAorcHVibGljIGNsYXNzIEIgeworICB2b2lkIGZvbygpIHsKKyAgICBBIGEgPSBiYXIoKTsKKyAgICBpZiAoYSBpbnN0YW5jZW9mIEkpIHsKKyAgICB9CisgIH0KKworICBBIGJhcigpIHtyZXR1cm4gbnVsbDt9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvY2xhc3NNb2RpZmllcnMvc2V0RmluYWwxL3NyYy9JLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9jbGFzc01vZGlmaWVycy9zZXRGaW5hbDEvc3JjL0kuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zOWYxYjI1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvY2xhc3NNb2RpZmllcnMvc2V0RmluYWwxL3NyYy9JLmphdmEKQEAgLTAsMCArMSwyIEBACitwdWJsaWMgaW50ZXJmYWNlIEkgeworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NsYXNzUHJvcGVydGllcy9hZGRFeHRlbmRzLmxvZyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NsYXNzUHJvcGVydGllcy9hZGRFeHRlbmRzLmxvZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lOTRmYTUwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvY2xhc3NQcm9wZXJ0aWVzL2FkZEV4dGVuZHMubG9nCkBAIC0wLDAgKzEsMTQgQEAKK0NsZWFuaW5nIG91dHB1dCBmaWxlczoKK291dC9wcm9kdWN0aW9uL0FkZEV4dGVuZHMvU3VwZXIuY2xhc3MKK0VuZCBvZiBmaWxlcworQ29tcGlsaW5nIGZpbGVzOgorc3JjL1N1cGVyLmphdmEKK0VuZCBvZiBmaWxlcworQ2xlYW5pbmcgb3V0cHV0IGZpbGVzOgorb3V0L3Byb2R1Y3Rpb24vQWRkRXh0ZW5kcy9DbGllbnQyLmNsYXNzCitvdXQvcHJvZHVjdGlvbi9BZGRFeHRlbmRzL0NsaWVudDMuY2xhc3MKK0VuZCBvZiBmaWxlcworQ29tcGlsaW5nIGZpbGVzOgorc3JjL0NsaWVudDIuamF2YQorc3JjL0NsaWVudDMuamF2YQorRW5kIG9mIGZpbGVzCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9jbGFzc1Byb3BlcnRpZXMvYWRkRXh0ZW5kcy9TdXBlci5qYXZhLm5ldyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NsYXNzUHJvcGVydGllcy9hZGRFeHRlbmRzL1N1cGVyLmphdmEubmV3Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk4NDQ5YTMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9jbGFzc1Byb3BlcnRpZXMvYWRkRXh0ZW5kcy9TdXBlci5qYXZhLm5ldwpAQCAtMCwwICsxLDMgQEAKK2NsYXNzIFN1cGVyIGV4dGVuZHMgSHlwZXIgeworICBjaGFyIHMgPSAncyc7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvY2xhc3NQcm9wZXJ0aWVzL2FkZEV4dGVuZHMvc3JjL0NsaWVudC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvY2xhc3NQcm9wZXJ0aWVzL2FkZEV4dGVuZHMvc3JjL0NsaWVudC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM3ZGVhNzYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9jbGFzc1Byb3BlcnRpZXMvYWRkRXh0ZW5kcy9zcmMvQ2xpZW50LmphdmEKQEAgLTAsMCArMSw1IEBACitjbGFzcyBDbGllbnQgeworICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CisgICAgbmV3IFN1cGVyKCk7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9jbGFzc1Byb3BlcnRpZXMvYWRkRXh0ZW5kcy9zcmMvQ2xpZW50Mi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvY2xhc3NQcm9wZXJ0aWVzL2FkZEV4dGVuZHMvc3JjL0NsaWVudDIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44OTAwZDAyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvY2xhc3NQcm9wZXJ0aWVzL2FkZEV4dGVuZHMvc3JjL0NsaWVudDIuamF2YQpAQCAtMCwwICsxLDQgQEAKK2NsYXNzIENsaWVudDIgZXh0ZW5kcyBTdXBlciB7CisgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NsYXNzUHJvcGVydGllcy9hZGRFeHRlbmRzL3NyYy9DbGllbnQzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9jbGFzc1Byb3BlcnRpZXMvYWRkRXh0ZW5kcy9zcmMvQ2xpZW50My5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY3M2ZkODQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9jbGFzc1Byb3BlcnRpZXMvYWRkRXh0ZW5kcy9zcmMvQ2xpZW50My5qYXZhCkBAIC0wLDAgKzEsNCBAQAorY2xhc3MgQ2xpZW50MyBleHRlbmRzIENsaWVudDIgeworICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9jbGFzc1Byb3BlcnRpZXMvYWRkRXh0ZW5kcy9zcmMvSHlwZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NsYXNzUHJvcGVydGllcy9hZGRFeHRlbmRzL3NyYy9IeXBlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM5ZTJkNzgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9jbGFzc1Byb3BlcnRpZXMvYWRkRXh0ZW5kcy9zcmMvSHlwZXIuamF2YQpAQCAtMCwwICsxLDMgQEAKK2NsYXNzIEh5cGVyIHsKKyAgY2hhciBoID0gJ2gnOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NsYXNzUHJvcGVydGllcy9hZGRFeHRlbmRzL3NyYy9TdXBlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvY2xhc3NQcm9wZXJ0aWVzL2FkZEV4dGVuZHMvc3JjL1N1cGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2UyZTVlMAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NsYXNzUHJvcGVydGllcy9hZGRFeHRlbmRzL3NyYy9TdXBlci5qYXZhCkBAIC0wLDAgKzEsMyBAQAorY2xhc3MgU3VwZXIgeworICBjaGFyIHMgPSAncyc7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvY2xhc3NQcm9wZXJ0aWVzL2FkZEltcGxlbWVudHMubG9nIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvY2xhc3NQcm9wZXJ0aWVzL2FkZEltcGxlbWVudHMubG9nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVmM2Q2NjMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9jbGFzc1Byb3BlcnRpZXMvYWRkSW1wbGVtZW50cy5sb2cKQEAgLTAsMCArMSwxNCBAQAorQ2xlYW5pbmcgb3V0cHV0IGZpbGVzOgorb3V0L3Byb2R1Y3Rpb24vQWRkSW1wbGVtZW50cy9TdXBlci5jbGFzcworRW5kIG9mIGZpbGVzCitDb21waWxpbmcgZmlsZXM6CitzcmMvU3VwZXIuamF2YQorRW5kIG9mIGZpbGVzCitDbGVhbmluZyBvdXRwdXQgZmlsZXM6CitvdXQvcHJvZHVjdGlvbi9BZGRJbXBsZW1lbnRzL0NsaWVudDIuY2xhc3MKK291dC9wcm9kdWN0aW9uL0FkZEltcGxlbWVudHMvQ2xpZW50My5jbGFzcworRW5kIG9mIGZpbGVzCitDb21waWxpbmcgZmlsZXM6CitzcmMvQ2xpZW50Mi5qYXZhCitzcmMvQ2xpZW50My5qYXZhCitFbmQgb2YgZmlsZXMKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NsYXNzUHJvcGVydGllcy9hZGRJbXBsZW1lbnRzL1N1cGVyLmphdmEubmV3IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvY2xhc3NQcm9wZXJ0aWVzL2FkZEltcGxlbWVudHMvU3VwZXIuamF2YS5uZXcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzE0Mjg5YgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NsYXNzUHJvcGVydGllcy9hZGRJbXBsZW1lbnRzL1N1cGVyLmphdmEubmV3CkBAIC0wLDAgKzEsMyBAQAorY2xhc3MgU3VwZXIgaW1wbGVtZW50cyBIeXBlciB7CisgIGNoYXIgcyA9ICdzJzsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9jbGFzc1Byb3BlcnRpZXMvYWRkSW1wbGVtZW50cy9zcmMvQ2xpZW50LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9jbGFzc1Byb3BlcnRpZXMvYWRkSW1wbGVtZW50cy9zcmMvQ2xpZW50LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzdkZWE3NgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NsYXNzUHJvcGVydGllcy9hZGRJbXBsZW1lbnRzL3NyYy9DbGllbnQuamF2YQpAQCAtMCwwICsxLDUgQEAKK2NsYXNzIENsaWVudCB7CisgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKKyAgICBuZXcgU3VwZXIoKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NsYXNzUHJvcGVydGllcy9hZGRJbXBsZW1lbnRzL3NyYy9DbGllbnQyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9jbGFzc1Byb3BlcnRpZXMvYWRkSW1wbGVtZW50cy9zcmMvQ2xpZW50Mi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg5MDBkMDIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9jbGFzc1Byb3BlcnRpZXMvYWRkSW1wbGVtZW50cy9zcmMvQ2xpZW50Mi5qYXZhCkBAIC0wLDAgKzEsNCBAQAorY2xhc3MgQ2xpZW50MiBleHRlbmRzIFN1cGVyIHsKKyAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgeworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvY2xhc3NQcm9wZXJ0aWVzL2FkZEltcGxlbWVudHMvc3JjL0NsaWVudDMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NsYXNzUHJvcGVydGllcy9hZGRJbXBsZW1lbnRzL3NyYy9DbGllbnQzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjczZmQ4NAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NsYXNzUHJvcGVydGllcy9hZGRJbXBsZW1lbnRzL3NyYy9DbGllbnQzLmphdmEKQEAgLTAsMCArMSw0IEBACitjbGFzcyBDbGllbnQzIGV4dGVuZHMgQ2xpZW50MiB7CisgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NsYXNzUHJvcGVydGllcy9hZGRJbXBsZW1lbnRzL3NyYy9IeXBlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvY2xhc3NQcm9wZXJ0aWVzL2FkZEltcGxlbWVudHMvc3JjL0h5cGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjIwYzg4ZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NsYXNzUHJvcGVydGllcy9hZGRJbXBsZW1lbnRzL3NyYy9IeXBlci5qYXZhCkBAIC0wLDAgKzEsMiBAQAoraW50ZXJmYWNlIEh5cGVyIHsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9jbGFzc1Byb3BlcnRpZXMvYWRkSW1wbGVtZW50cy9zcmMvU3VwZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NsYXNzUHJvcGVydGllcy9hZGRJbXBsZW1lbnRzL3NyYy9TdXBlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdlMmU1ZTAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9jbGFzc1Byb3BlcnRpZXMvYWRkSW1wbGVtZW50cy9zcmMvU3VwZXIuamF2YQpAQCAtMCwwICsxLDMgQEAKK2NsYXNzIFN1cGVyIHsKKyAgY2hhciBzID0gJ3MnOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NsYXNzUHJvcGVydGllcy9jaGFuZ2VFeHRlbmRzLmxvZyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NsYXNzUHJvcGVydGllcy9jaGFuZ2VFeHRlbmRzLmxvZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wY2JhMDQwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvY2xhc3NQcm9wZXJ0aWVzL2NoYW5nZUV4dGVuZHMubG9nCkBAIC0wLDAgKzEsMTYgQEAKK0NsZWFuaW5nIG91dHB1dCBmaWxlczoKK291dC9wcm9kdWN0aW9uL0NoYW5nZUV4dGVuZHMvU3VwZXIuY2xhc3MKK0VuZCBvZiBmaWxlcworQ29tcGlsaW5nIGZpbGVzOgorc3JjL1N1cGVyLmphdmEKK0VuZCBvZiBmaWxlcworQ2xlYW5pbmcgb3V0cHV0IGZpbGVzOgorb3V0L3Byb2R1Y3Rpb24vQ2hhbmdlRXh0ZW5kcy9DbGllbnQuY2xhc3MKK291dC9wcm9kdWN0aW9uL0NoYW5nZUV4dGVuZHMvQ2xpZW50Mi5jbGFzcworb3V0L3Byb2R1Y3Rpb24vQ2hhbmdlRXh0ZW5kcy9DbGllbnQzLmNsYXNzCitFbmQgb2YgZmlsZXMKK0NvbXBpbGluZyBmaWxlczoKK3NyYy9DbGllbnQuamF2YQorc3JjL0NsaWVudDIuamF2YQorc3JjL0NsaWVudDMuamF2YQorRW5kIG9mIGZpbGVzCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9jbGFzc1Byb3BlcnRpZXMvY2hhbmdlRXh0ZW5kcy9TdXBlci5qYXZhLm5ldyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NsYXNzUHJvcGVydGllcy9jaGFuZ2VFeHRlbmRzL1N1cGVyLmphdmEubmV3Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRkZTQ5MmMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9jbGFzc1Byb3BlcnRpZXMvY2hhbmdlRXh0ZW5kcy9TdXBlci5qYXZhLm5ldwpAQCAtMCwwICsxLDMgQEAKK2NsYXNzIFN1cGVyIGV4dGVuZHMgQW5vdGhlckh5cGVyIHsKKyAgY2hhciBzID0gJ3MnOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NsYXNzUHJvcGVydGllcy9jaGFuZ2VFeHRlbmRzL3NyYy9Bbm90aGVySHlwZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NsYXNzUHJvcGVydGllcy9jaGFuZ2VFeHRlbmRzL3NyYy9Bbm90aGVySHlwZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zM2U1MGQ4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvY2xhc3NQcm9wZXJ0aWVzL2NoYW5nZUV4dGVuZHMvc3JjL0Fub3RoZXJIeXBlci5qYXZhCkBAIC0wLDAgKzEsMiBAQAorY2xhc3MgQW5vdGhlckh5cGVyIHsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9jbGFzc1Byb3BlcnRpZXMvY2hhbmdlRXh0ZW5kcy9zcmMvQ2xpZW50LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9jbGFzc1Byb3BlcnRpZXMvY2hhbmdlRXh0ZW5kcy9zcmMvQ2xpZW50LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzdkZWE3NgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NsYXNzUHJvcGVydGllcy9jaGFuZ2VFeHRlbmRzL3NyYy9DbGllbnQuamF2YQpAQCAtMCwwICsxLDUgQEAKK2NsYXNzIENsaWVudCB7CisgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKKyAgICBuZXcgU3VwZXIoKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NsYXNzUHJvcGVydGllcy9jaGFuZ2VFeHRlbmRzL3NyYy9DbGllbnQyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9jbGFzc1Byb3BlcnRpZXMvY2hhbmdlRXh0ZW5kcy9zcmMvQ2xpZW50Mi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg5MDBkMDIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9jbGFzc1Byb3BlcnRpZXMvY2hhbmdlRXh0ZW5kcy9zcmMvQ2xpZW50Mi5qYXZhCkBAIC0wLDAgKzEsNCBAQAorY2xhc3MgQ2xpZW50MiBleHRlbmRzIFN1cGVyIHsKKyAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgeworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvY2xhc3NQcm9wZXJ0aWVzL2NoYW5nZUV4dGVuZHMvc3JjL0NsaWVudDMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NsYXNzUHJvcGVydGllcy9jaGFuZ2VFeHRlbmRzL3NyYy9DbGllbnQzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjczZmQ4NAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NsYXNzUHJvcGVydGllcy9jaGFuZ2VFeHRlbmRzL3NyYy9DbGllbnQzLmphdmEKQEAgLTAsMCArMSw0IEBACitjbGFzcyBDbGllbnQzIGV4dGVuZHMgQ2xpZW50MiB7CisgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NsYXNzUHJvcGVydGllcy9jaGFuZ2VFeHRlbmRzL3NyYy9IeXBlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvY2xhc3NQcm9wZXJ0aWVzL2NoYW5nZUV4dGVuZHMvc3JjL0h5cGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzllMmQ3OAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NsYXNzUHJvcGVydGllcy9jaGFuZ2VFeHRlbmRzL3NyYy9IeXBlci5qYXZhCkBAIC0wLDAgKzEsMyBAQAorY2xhc3MgSHlwZXIgeworICBjaGFyIGggPSAnaCc7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvY2xhc3NQcm9wZXJ0aWVzL2NoYW5nZUV4dGVuZHMvc3JjL1N1cGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9jbGFzc1Byb3BlcnRpZXMvY2hhbmdlRXh0ZW5kcy9zcmMvU3VwZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ODQ0OWEzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvY2xhc3NQcm9wZXJ0aWVzL2NoYW5nZUV4dGVuZHMvc3JjL1N1cGVyLmphdmEKQEAgLTAsMCArMSwzIEBACitjbGFzcyBTdXBlciBleHRlbmRzIEh5cGVyIHsKKyAgY2hhciBzID0gJ3MnOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NsYXNzUHJvcGVydGllcy9jaGFuZ2VFeHRlbmRzMi5sb2cgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9jbGFzc1Byb3BlcnRpZXMvY2hhbmdlRXh0ZW5kczIubG9nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQwZjIyZTQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9jbGFzc1Byb3BlcnRpZXMvY2hhbmdlRXh0ZW5kczIubG9nCkBAIC0wLDAgKzEsMTMgQEAKK0NsZWFuaW5nIG91dHB1dCBmaWxlczoKK291dC9wcm9kdWN0aW9uL0NoYW5nZUV4dGVuZHMyL1ZpY3RpbSRTdWJWaWN0aW0uY2xhc3MKK291dC9wcm9kdWN0aW9uL0NoYW5nZUV4dGVuZHMyL1ZpY3RpbS5jbGFzcworRW5kIG9mIGZpbGVzCitDb21waWxpbmcgZmlsZXM6CitzcmMvVmljdGltLmphdmEKK0VuZCBvZiBmaWxlcworQ2xlYW5pbmcgb3V0cHV0IGZpbGVzOgorb3V0L3Byb2R1Y3Rpb24vQ2hhbmdlRXh0ZW5kczIvTWFpbi5jbGFzcworRW5kIG9mIGZpbGVzCitDb21waWxpbmcgZmlsZXM6CitzcmMvTWFpbi5qYXZhCitFbmQgb2YgZmlsZXMKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NsYXNzUHJvcGVydGllcy9jaGFuZ2VFeHRlbmRzMi9WaWN0aW0uamF2YS5uZXcgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9jbGFzc1Byb3BlcnRpZXMvY2hhbmdlRXh0ZW5kczIvVmljdGltLmphdmEubmV3Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE3YzVjMmUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9jbGFzc1Byb3BlcnRpZXMvY2hhbmdlRXh0ZW5kczIvVmljdGltLmphdmEubmV3CkBAIC0wLDAgKzEsMTIgQEAKKy8qKgorICogQ3JlYXRlZCB3aXRoIEludGVsbGlKIElERUEuCisgKiBVc2VyOiBkYgorICogRGF0ZTogMjAuMDIuMTIKKyAqIFRpbWU6IDEzOjE5CisgKiBUbyBjaGFuZ2UgdGhpcyB0ZW1wbGF0ZSB1c2UgRmlsZSB8IFNldHRpbmdzIHwgRmlsZSBUZW1wbGF0ZXMuCisgKi8KK3B1YmxpYyBjbGFzcyBWaWN0aW0gZXh0ZW5kcyBTdXBlciB7CisgICAgcHVibGljIHN0YXRpYyBjbGFzcyBTdWJWaWN0aW0gZXh0ZW5kcyBWaWN0aW0geworCisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvY2xhc3NQcm9wZXJ0aWVzL2NoYW5nZUV4dGVuZHMyL3NyYy9NYWluLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9jbGFzc1Byb3BlcnRpZXMvY2hhbmdlRXh0ZW5kczIvc3JjL01haW4uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZmRkN2M2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvY2xhc3NQcm9wZXJ0aWVzL2NoYW5nZUV4dGVuZHMyL3NyYy9NYWluLmphdmEKQEAgLTAsMCArMSwyMCBAQAorLyoqCisgKiBDcmVhdGVkIHdpdGggSW50ZWxsaUogSURFQS4KKyAqIFVzZXI6IGRiCisgKiBEYXRlOiAyMC4wMi4xMgorICogVGltZTogMTM6MTkKKyAqIFRvIGNoYW5nZSB0aGlzIHRlbXBsYXRlIHVzZSBGaWxlIHwgU2V0dGluZ3MgfCBGaWxlIFRlbXBsYXRlcy4KKyAqLworcHVibGljIGNsYXNzIE1haW4geworICAgIHN0YXRpYyB2b2lkIGRvTWUgKGZpbmFsIFB1cGVyIHgpIHsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJQdXBlciEiKTsKKyAgICB9CisKKyAgICBzdGF0aWMgdm9pZCBkb01lIChmaW5hbCBTdXBlciB4KXsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJTdXBlciEiKTsKKyAgICB9CisKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbiAoU3RyaW5nW10gYXJncyl7CisgICAgICAgIGRvTWUobmV3IFZpY3RpbS5TdWJWaWN0aW0oKSk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvY2xhc3NQcm9wZXJ0aWVzL2NoYW5nZUV4dGVuZHMyL3NyYy9QdXBlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvY2xhc3NQcm9wZXJ0aWVzL2NoYW5nZUV4dGVuZHMyL3NyYy9QdXBlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkzY2NhMTIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9jbGFzc1Byb3BlcnRpZXMvY2hhbmdlRXh0ZW5kczIvc3JjL1B1cGVyLmphdmEKQEAgLTAsMCArMSw5IEBACisvKioKKyAqIENyZWF0ZWQgd2l0aCBJbnRlbGxpSiBJREVBLgorICogVXNlcjogZGIKKyAqIERhdGU6IDIwLjAyLjEyCisgKiBUaW1lOiAxMzoxOQorICogVG8gY2hhbmdlIHRoaXMgdGVtcGxhdGUgdXNlIEZpbGUgfCBTZXR0aW5ncyB8IEZpbGUgVGVtcGxhdGVzLgorICovCitwdWJsaWMgY2xhc3MgUHVwZXIgeworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvY2xhc3NQcm9wZXJ0aWVzL2NoYW5nZUV4dGVuZHMyL3NyYy9TdXBlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvY2xhc3NQcm9wZXJ0aWVzL2NoYW5nZUV4dGVuZHMyL3NyYy9TdXBlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJkNzBmNTgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9jbGFzc1Byb3BlcnRpZXMvY2hhbmdlRXh0ZW5kczIvc3JjL1N1cGVyLmphdmEKQEAgLTAsMCArMSw5IEBACisvKioKKyAqIENyZWF0ZWQgd2l0aCBJbnRlbGxpSiBJREVBLgorICogVXNlcjogZGIKKyAqIERhdGU6IDIwLjAyLjEyCisgKiBUaW1lOiAxMzoxOQorICogVG8gY2hhbmdlIHRoaXMgdGVtcGxhdGUgdXNlIEZpbGUgfCBTZXR0aW5ncyB8IEZpbGUgVGVtcGxhdGVzLgorICovCitwdWJsaWMgY2xhc3MgU3VwZXIgeworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvY2xhc3NQcm9wZXJ0aWVzL2NoYW5nZUV4dGVuZHMyL3NyYy9WaWN0aW0uamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NsYXNzUHJvcGVydGllcy9jaGFuZ2VFeHRlbmRzMi9zcmMvVmljdGltLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTg3MWNmYgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NsYXNzUHJvcGVydGllcy9jaGFuZ2VFeHRlbmRzMi9zcmMvVmljdGltLmphdmEKQEAgLTAsMCArMSwxMiBAQAorLyoqCisgKiBDcmVhdGVkIHdpdGggSW50ZWxsaUogSURFQS4KKyAqIFVzZXI6IGRiCisgKiBEYXRlOiAyMC4wMi4xMgorICogVGltZTogMTM6MTkKKyAqIFRvIGNoYW5nZSB0aGlzIHRlbXBsYXRlIHVzZSBGaWxlIHwgU2V0dGluZ3MgfCBGaWxlIFRlbXBsYXRlcy4KKyAqLworcHVibGljIGNsYXNzIFZpY3RpbSBleHRlbmRzIFB1cGVyIHsKKyAgICBwdWJsaWMgc3RhdGljIGNsYXNzIFN1YlZpY3RpbSBleHRlbmRzIFZpY3RpbSB7CisKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9jbGFzc1Byb3BlcnRpZXMvcmVtb3ZlRXh0ZW5kcy5sb2cgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9jbGFzc1Byb3BlcnRpZXMvcmVtb3ZlRXh0ZW5kcy5sb2cKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2I1ZDllYQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NsYXNzUHJvcGVydGllcy9yZW1vdmVFeHRlbmRzLmxvZwpAQCAtMCwwICsxLDE0IEBACitDbGVhbmluZyBvdXRwdXQgZmlsZXM6CitvdXQvcHJvZHVjdGlvbi9SZW1vdmVFeHRlbmRzL1N1cGVyLmNsYXNzCitFbmQgb2YgZmlsZXMKK0NvbXBpbGluZyBmaWxlczoKK3NyYy9TdXBlci5qYXZhCitFbmQgb2YgZmlsZXMKK0NsZWFuaW5nIG91dHB1dCBmaWxlczoKK291dC9wcm9kdWN0aW9uL1JlbW92ZUV4dGVuZHMvQ2xpZW50LmNsYXNzCitvdXQvcHJvZHVjdGlvbi9SZW1vdmVFeHRlbmRzL0NsaWVudDIuY2xhc3MKK0VuZCBvZiBmaWxlcworQ29tcGlsaW5nIGZpbGVzOgorc3JjL0NsaWVudC5qYXZhCitzcmMvQ2xpZW50Mi5qYXZhCitFbmQgb2YgZmlsZXMKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NsYXNzUHJvcGVydGllcy9yZW1vdmVFeHRlbmRzL1N1cGVyLmphdmEubmV3IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvY2xhc3NQcm9wZXJ0aWVzL3JlbW92ZUV4dGVuZHMvU3VwZXIuamF2YS5uZXcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2UyZTVlMAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NsYXNzUHJvcGVydGllcy9yZW1vdmVFeHRlbmRzL1N1cGVyLmphdmEubmV3CkBAIC0wLDAgKzEsMyBAQAorY2xhc3MgU3VwZXIgeworICBjaGFyIHMgPSAncyc7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvY2xhc3NQcm9wZXJ0aWVzL3JlbW92ZUV4dGVuZHMvc3JjL0NsaWVudC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvY2xhc3NQcm9wZXJ0aWVzL3JlbW92ZUV4dGVuZHMvc3JjL0NsaWVudC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI2OTc0NDYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9jbGFzc1Byb3BlcnRpZXMvcmVtb3ZlRXh0ZW5kcy9zcmMvQ2xpZW50LmphdmEKQEAgLTAsMCArMSw2IEBACitjbGFzcyBDbGllbnQgeworICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CisgICAgSHlwZXIgaCA9IG5ldyBTdXBlcigpOworICAgIFN5c3RlbS5vdXQucHJpbnRsbihoLmgpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvY2xhc3NQcm9wZXJ0aWVzL3JlbW92ZUV4dGVuZHMvc3JjL0NsaWVudDIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NsYXNzUHJvcGVydGllcy9yZW1vdmVFeHRlbmRzL3NyYy9DbGllbnQyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODkwMGQwMgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NsYXNzUHJvcGVydGllcy9yZW1vdmVFeHRlbmRzL3NyYy9DbGllbnQyLmphdmEKQEAgLTAsMCArMSw0IEBACitjbGFzcyBDbGllbnQyIGV4dGVuZHMgU3VwZXIgeworICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9jbGFzc1Byb3BlcnRpZXMvcmVtb3ZlRXh0ZW5kcy9zcmMvSHlwZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NsYXNzUHJvcGVydGllcy9yZW1vdmVFeHRlbmRzL3NyYy9IeXBlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM5ZTJkNzgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9jbGFzc1Byb3BlcnRpZXMvcmVtb3ZlRXh0ZW5kcy9zcmMvSHlwZXIuamF2YQpAQCAtMCwwICsxLDMgQEAKK2NsYXNzIEh5cGVyIHsKKyAgY2hhciBoID0gJ2gnOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NsYXNzUHJvcGVydGllcy9yZW1vdmVFeHRlbmRzL3NyYy9TdXBlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvY2xhc3NQcm9wZXJ0aWVzL3JlbW92ZUV4dGVuZHMvc3JjL1N1cGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTg0NDlhMwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NsYXNzUHJvcGVydGllcy9yZW1vdmVFeHRlbmRzL3NyYy9TdXBlci5qYXZhCkBAIC0wLDAgKzEsMyBAQAorY2xhc3MgU3VwZXIgZXh0ZW5kcyBIeXBlciB7CisgIGNoYXIgcyA9ICdzJzsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9jbGFzc1Byb3BlcnRpZXMvcmVtb3ZlRXh0ZW5kc0FmZmVjdHNGaWVsZEFjY2Vzcy5sb2cgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9jbGFzc1Byb3BlcnRpZXMvcmVtb3ZlRXh0ZW5kc0FmZmVjdHNGaWVsZEFjY2Vzcy5sb2cKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjVmY2ZkMAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NsYXNzUHJvcGVydGllcy9yZW1vdmVFeHRlbmRzQWZmZWN0c0ZpZWxkQWNjZXNzLmxvZwpAQCAtMCwwICsxLDE0IEBACitDbGVhbmluZyBvdXRwdXQgZmlsZXM6CitvdXQvcHJvZHVjdGlvbi9SZW1vdmVFeHRlbmRzQWZmZWN0c0ZpZWxkQWNjZXNzL0dvYWxTd2l0Y2guY2xhc3MKK0VuZCBvZiBmaWxlcworQ29tcGlsaW5nIGZpbGVzOgorc3JjL0dvYWxTd2l0Y2guamF2YQorRW5kIG9mIGZpbGVzCitDbGVhbmluZyBvdXRwdXQgZmlsZXM6CitvdXQvcHJvZHVjdGlvbi9SZW1vdmVFeHRlbmRzQWZmZWN0c0ZpZWxkQWNjZXNzL0ZhckNsaWVudC5jbGFzcworb3V0L3Byb2R1Y3Rpb24vUmVtb3ZlRXh0ZW5kc0FmZmVjdHNGaWVsZEFjY2Vzcy9Td2l0Y2hQcm92aWRlci5jbGFzcworRW5kIG9mIGZpbGVzCitDb21waWxpbmcgZmlsZXM6CitzcmMvRmFyQ2xpZW50LmphdmEKK3NyYy9Td2l0Y2hQcm92aWRlci5qYXZhCitFbmQgb2YgZmlsZXMKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NsYXNzUHJvcGVydGllcy9yZW1vdmVFeHRlbmRzQWZmZWN0c0ZpZWxkQWNjZXNzL0dvYWxTd2l0Y2guamF2YS5uZXcgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9jbGFzc1Byb3BlcnRpZXMvcmVtb3ZlRXh0ZW5kc0FmZmVjdHNGaWVsZEFjY2Vzcy9Hb2FsU3dpdGNoLmphdmEubmV3Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE2ZWI3MjIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9jbGFzc1Byb3BlcnRpZXMvcmVtb3ZlRXh0ZW5kc0FmZmVjdHNGaWVsZEFjY2Vzcy9Hb2FsU3dpdGNoLmphdmEubmV3CkBAIC0wLDAgKzEsMiBAQAorcHVibGljIGNsYXNzIEdvYWxTd2l0Y2ggeworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvY2xhc3NQcm9wZXJ0aWVzL3JlbW92ZUV4dGVuZHNBZmZlY3RzRmllbGRBY2Nlc3Mvc3JjL0ZhckNsaWVudC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvY2xhc3NQcm9wZXJ0aWVzL3JlbW92ZUV4dGVuZHNBZmZlY3RzRmllbGRBY2Nlc3Mvc3JjL0ZhckNsaWVudC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFkNzUwMDQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9jbGFzc1Byb3BlcnRpZXMvcmVtb3ZlRXh0ZW5kc0FmZmVjdHNGaWVsZEFjY2Vzcy9zcmMvRmFyQ2xpZW50LmphdmEKQEAgLTAsMCArMSw1IEBACitwdWJsaWMgY2xhc3MgRmFyQ2xpZW50IHsKKyAgICBwdWJsaWMgdm9pZCBjb250ZXh0KCkgeworICAgICAgICBGYXJHb2FsIGdvYWwxID0gbmV3IFN3aXRjaFByb3ZpZGVyKCkuZmllbGQ7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NsYXNzUHJvcGVydGllcy9yZW1vdmVFeHRlbmRzQWZmZWN0c0ZpZWxkQWNjZXNzL3NyYy9GYXJHb2FsLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9jbGFzc1Byb3BlcnRpZXMvcmVtb3ZlRXh0ZW5kc0FmZmVjdHNGaWVsZEFjY2Vzcy9zcmMvRmFyR29hbC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk5ZjAxZDgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9jbGFzc1Byb3BlcnRpZXMvcmVtb3ZlRXh0ZW5kc0FmZmVjdHNGaWVsZEFjY2Vzcy9zcmMvRmFyR29hbC5qYXZhCkBAIC0wLDAgKzEsMiBAQAorcHVibGljIGNsYXNzIEZhckdvYWwgeworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvY2xhc3NQcm9wZXJ0aWVzL3JlbW92ZUV4dGVuZHNBZmZlY3RzRmllbGRBY2Nlc3Mvc3JjL0dvYWxTd2l0Y2guamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NsYXNzUHJvcGVydGllcy9yZW1vdmVFeHRlbmRzQWZmZWN0c0ZpZWxkQWNjZXNzL3NyYy9Hb2FsU3dpdGNoLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGE2ODliMgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NsYXNzUHJvcGVydGllcy9yZW1vdmVFeHRlbmRzQWZmZWN0c0ZpZWxkQWNjZXNzL3NyYy9Hb2FsU3dpdGNoLmphdmEKQEAgLTAsMCArMSwyIEBACitwdWJsaWMgY2xhc3MgR29hbFN3aXRjaCBleHRlbmRzIEZhckdvYWx7Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9jbGFzc1Byb3BlcnRpZXMvcmVtb3ZlRXh0ZW5kc0FmZmVjdHNGaWVsZEFjY2Vzcy9zcmMvU3dpdGNoUHJvdmlkZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NsYXNzUHJvcGVydGllcy9yZW1vdmVFeHRlbmRzQWZmZWN0c0ZpZWxkQWNjZXNzL3NyYy9Td2l0Y2hQcm92aWRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNhYTlhZWQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9jbGFzc1Byb3BlcnRpZXMvcmVtb3ZlRXh0ZW5kc0FmZmVjdHNGaWVsZEFjY2Vzcy9zcmMvU3dpdGNoUHJvdmlkZXIuamF2YQpAQCAtMCwwICsxLDMgQEAKK3B1YmxpYyBjbGFzcyBTd2l0Y2hQcm92aWRlciB7CisgICAgcHVibGljIEdvYWxTd2l0Y2ggZmllbGQ7Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9jbGFzc1Byb3BlcnRpZXMvcmVtb3ZlRXh0ZW5kc0FmZmVjdHNNZXRob2RBY2Nlc3MubG9nIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvY2xhc3NQcm9wZXJ0aWVzL3JlbW92ZUV4dGVuZHNBZmZlY3RzTWV0aG9kQWNjZXNzLmxvZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MWEzMjhkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvY2xhc3NQcm9wZXJ0aWVzL3JlbW92ZUV4dGVuZHNBZmZlY3RzTWV0aG9kQWNjZXNzLmxvZwpAQCAtMCwwICsxLDE0IEBACitDbGVhbmluZyBvdXRwdXQgZmlsZXM6CitvdXQvcHJvZHVjdGlvbi9SZW1vdmVFeHRlbmRzQWZmZWN0c01ldGhvZEFjY2Vzcy9Hb2FsU3dpdGNoLmNsYXNzCitFbmQgb2YgZmlsZXMKK0NvbXBpbGluZyBmaWxlczoKK3NyYy9Hb2FsU3dpdGNoLmphdmEKK0VuZCBvZiBmaWxlcworQ2xlYW5pbmcgb3V0cHV0IGZpbGVzOgorb3V0L3Byb2R1Y3Rpb24vUmVtb3ZlRXh0ZW5kc0FmZmVjdHNNZXRob2RBY2Nlc3MvRmFyQ2xpZW50LmNsYXNzCitvdXQvcHJvZHVjdGlvbi9SZW1vdmVFeHRlbmRzQWZmZWN0c01ldGhvZEFjY2Vzcy9Td2l0Y2hQcm92aWRlci5jbGFzcworRW5kIG9mIGZpbGVzCitDb21waWxpbmcgZmlsZXM6CitzcmMvRmFyQ2xpZW50LmphdmEKK3NyYy9Td2l0Y2hQcm92aWRlci5qYXZhCitFbmQgb2YgZmlsZXMKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NsYXNzUHJvcGVydGllcy9yZW1vdmVFeHRlbmRzQWZmZWN0c01ldGhvZEFjY2Vzcy9Hb2FsU3dpdGNoLmphdmEubmV3IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvY2xhc3NQcm9wZXJ0aWVzL3JlbW92ZUV4dGVuZHNBZmZlY3RzTWV0aG9kQWNjZXNzL0dvYWxTd2l0Y2guamF2YS5uZXcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTZlYjcyMgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NsYXNzUHJvcGVydGllcy9yZW1vdmVFeHRlbmRzQWZmZWN0c01ldGhvZEFjY2Vzcy9Hb2FsU3dpdGNoLmphdmEubmV3CkBAIC0wLDAgKzEsMiBAQAorcHVibGljIGNsYXNzIEdvYWxTd2l0Y2ggeworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvY2xhc3NQcm9wZXJ0aWVzL3JlbW92ZUV4dGVuZHNBZmZlY3RzTWV0aG9kQWNjZXNzL3NyYy9GYXJDbGllbnQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NsYXNzUHJvcGVydGllcy9yZW1vdmVFeHRlbmRzQWZmZWN0c01ldGhvZEFjY2Vzcy9zcmMvRmFyQ2xpZW50LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmIxY2MwZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NsYXNzUHJvcGVydGllcy9yZW1vdmVFeHRlbmRzQWZmZWN0c01ldGhvZEFjY2Vzcy9zcmMvRmFyQ2xpZW50LmphdmEKQEAgLTAsMCArMSw1IEBACitwdWJsaWMgY2xhc3MgRmFyQ2xpZW50IHsKKyAgICBwdWJsaWMgdm9pZCBjb250ZXh0KCkgeworICAgICAgICBGYXJHb2FsIGdvYWwyID0gbmV3IFN3aXRjaFByb3ZpZGVyKCkubWV0aG9kKCk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NsYXNzUHJvcGVydGllcy9yZW1vdmVFeHRlbmRzQWZmZWN0c01ldGhvZEFjY2Vzcy9zcmMvRmFyR29hbC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvY2xhc3NQcm9wZXJ0aWVzL3JlbW92ZUV4dGVuZHNBZmZlY3RzTWV0aG9kQWNjZXNzL3NyYy9GYXJHb2FsLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTlmMDFkOAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NsYXNzUHJvcGVydGllcy9yZW1vdmVFeHRlbmRzQWZmZWN0c01ldGhvZEFjY2Vzcy9zcmMvRmFyR29hbC5qYXZhCkBAIC0wLDAgKzEsMiBAQAorcHVibGljIGNsYXNzIEZhckdvYWwgeworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvY2xhc3NQcm9wZXJ0aWVzL3JlbW92ZUV4dGVuZHNBZmZlY3RzTWV0aG9kQWNjZXNzL3NyYy9Hb2FsU3dpdGNoLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9jbGFzc1Byb3BlcnRpZXMvcmVtb3ZlRXh0ZW5kc0FmZmVjdHNNZXRob2RBY2Nlc3Mvc3JjL0dvYWxTd2l0Y2guamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYTY4OWIyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvY2xhc3NQcm9wZXJ0aWVzL3JlbW92ZUV4dGVuZHNBZmZlY3RzTWV0aG9kQWNjZXNzL3NyYy9Hb2FsU3dpdGNoLmphdmEKQEAgLTAsMCArMSwyIEBACitwdWJsaWMgY2xhc3MgR29hbFN3aXRjaCBleHRlbmRzIEZhckdvYWx7Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9jbGFzc1Byb3BlcnRpZXMvcmVtb3ZlRXh0ZW5kc0FmZmVjdHNNZXRob2RBY2Nlc3Mvc3JjL1N3aXRjaFByb3ZpZGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9jbGFzc1Byb3BlcnRpZXMvcmVtb3ZlRXh0ZW5kc0FmZmVjdHNNZXRob2RBY2Nlc3Mvc3JjL1N3aXRjaFByb3ZpZGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2I2MzVkMAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NsYXNzUHJvcGVydGllcy9yZW1vdmVFeHRlbmRzQWZmZWN0c01ldGhvZEFjY2Vzcy9zcmMvU3dpdGNoUHJvdmlkZXIuamF2YQpAQCAtMCwwICsxLDUgQEAKK3B1YmxpYyBjbGFzcyBTd2l0Y2hQcm92aWRlciB7CisgICAgcHVibGljIEdvYWxTd2l0Y2ggbWV0aG9kKCkgeworICAgICAgICByZXR1cm4gbmV3IEdvYWxTd2l0Y2goKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9jbGFzc1Byb3BlcnRpZXMvcmVtb3ZlSW1wbGVtZW50cy5sb2cgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9jbGFzc1Byb3BlcnRpZXMvcmVtb3ZlSW1wbGVtZW50cy5sb2cKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWVhNGQ0NAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NsYXNzUHJvcGVydGllcy9yZW1vdmVJbXBsZW1lbnRzLmxvZwpAQCAtMCwwICsxLDE0IEBACitDbGVhbmluZyBvdXRwdXQgZmlsZXM6CitvdXQvcHJvZHVjdGlvbi9SZW1vdmVJbXBsZW1lbnRzL1N1cGVyLmNsYXNzCitFbmQgb2YgZmlsZXMKK0NvbXBpbGluZyBmaWxlczoKK3NyYy9TdXBlci5qYXZhCitFbmQgb2YgZmlsZXMKK0NsZWFuaW5nIG91dHB1dCBmaWxlczoKK291dC9wcm9kdWN0aW9uL1JlbW92ZUltcGxlbWVudHMvQ2xpZW50LmNsYXNzCitvdXQvcHJvZHVjdGlvbi9SZW1vdmVJbXBsZW1lbnRzL0NsaWVudDIuY2xhc3MKK0VuZCBvZiBmaWxlcworQ29tcGlsaW5nIGZpbGVzOgorc3JjL0NsaWVudC5qYXZhCitzcmMvQ2xpZW50Mi5qYXZhCitFbmQgb2YgZmlsZXMKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NsYXNzUHJvcGVydGllcy9yZW1vdmVJbXBsZW1lbnRzL1N1cGVyLmphdmEubmV3IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvY2xhc3NQcm9wZXJ0aWVzL3JlbW92ZUltcGxlbWVudHMvU3VwZXIuamF2YS5uZXcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzdiMGNkYjE2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvY2xhc3NQcm9wZXJ0aWVzL3JlbW92ZUltcGxlbWVudHMvU3VwZXIuamF2YS5uZXcKQEAgLTAsMCArMSw0IEBACitjbGFzcyBTdXBlciBpbXBsZW1lbnRzIGphdmEubGFuZy5SdW5uYWJsZSB7CisgIHB1YmxpYyB2b2lkIHJ1bigpIHsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NsYXNzUHJvcGVydGllcy9yZW1vdmVJbXBsZW1lbnRzL3NyYy9DbGllbnQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NsYXNzUHJvcGVydGllcy9yZW1vdmVJbXBsZW1lbnRzL3NyYy9DbGllbnQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZDlhZTU0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvY2xhc3NQcm9wZXJ0aWVzL3JlbW92ZUltcGxlbWVudHMvc3JjL0NsaWVudC5qYXZhCkBAIC0wLDAgKzEsNSBAQAorY2xhc3MgQ2xpZW50IHsKKyAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgeworICAgSHlwZXIgaCA9IG5ldyBTdXBlcigpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvY2xhc3NQcm9wZXJ0aWVzL3JlbW92ZUltcGxlbWVudHMvc3JjL0NsaWVudDIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NsYXNzUHJvcGVydGllcy9yZW1vdmVJbXBsZW1lbnRzL3NyYy9DbGllbnQyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODkwMGQwMgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NsYXNzUHJvcGVydGllcy9yZW1vdmVJbXBsZW1lbnRzL3NyYy9DbGllbnQyLmphdmEKQEAgLTAsMCArMSw0IEBACitjbGFzcyBDbGllbnQyIGV4dGVuZHMgU3VwZXIgeworICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9jbGFzc1Byb3BlcnRpZXMvcmVtb3ZlSW1wbGVtZW50cy9zcmMvSHlwZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NsYXNzUHJvcGVydGllcy9yZW1vdmVJbXBsZW1lbnRzL3NyYy9IeXBlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYyMGM4OGQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9jbGFzc1Byb3BlcnRpZXMvcmVtb3ZlSW1wbGVtZW50cy9zcmMvSHlwZXIuamF2YQpAQCAtMCwwICsxLDIgQEAKK2ludGVyZmFjZSBIeXBlciB7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvY2xhc3NQcm9wZXJ0aWVzL3JlbW92ZUltcGxlbWVudHMvc3JjL1N1cGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9jbGFzc1Byb3BlcnRpZXMvcmVtb3ZlSW1wbGVtZW50cy9zcmMvU3VwZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZWNiNWMxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvY2xhc3NQcm9wZXJ0aWVzL3JlbW92ZUltcGxlbWVudHMvc3JjL1N1cGVyLmphdmEKQEAgLTAsMCArMSw0IEBACitjbGFzcyBTdXBlciBpbXBsZW1lbnRzIEh5cGVyLCBqYXZhLmxhbmcuUnVubmFibGUgeworICBwdWJsaWMgdm9pZCBydW4oKSB7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9jbGFzc1Byb3BlcnRpZXMvcmVtb3ZlSW1wbGVtZW50czIubG9nIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvY2xhc3NQcm9wZXJ0aWVzL3JlbW92ZUltcGxlbWVudHMyLmxvZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZGIzNTczCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvY2xhc3NQcm9wZXJ0aWVzL3JlbW92ZUltcGxlbWVudHMyLmxvZwpAQCAtMCwwICsxLDE0IEBACitDbGVhbmluZyBvdXRwdXQgZmlsZXM6CitvdXQvcHJvZHVjdGlvbi9SZW1vdmVJbXBsZW1lbnRzMi9UZXN0LmNsYXNzCitFbmQgb2YgZmlsZXMKK0NvbXBpbGluZyBmaWxlczoKK3NyYy9UZXN0LmphdmEKK0VuZCBvZiBmaWxlcworQ2xlYW5pbmcgb3V0cHV0IGZpbGVzOgorb3V0L3Byb2R1Y3Rpb24vUmVtb3ZlSW1wbGVtZW50czIvQ2xpZW50LmNsYXNzCitvdXQvcHJvZHVjdGlvbi9SZW1vdmVJbXBsZW1lbnRzMi9DbGllbnRJbXBsLmNsYXNzCitFbmQgb2YgZmlsZXMKK0NvbXBpbGluZyBmaWxlczoKK3NyYy9DbGllbnQuamF2YQorc3JjL0NsaWVudEltcGwuamF2YQorRW5kIG9mIGZpbGVzCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9jbGFzc1Byb3BlcnRpZXMvcmVtb3ZlSW1wbGVtZW50czIvVGVzdC5qYXZhLm5ldyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NsYXNzUHJvcGVydGllcy9yZW1vdmVJbXBsZW1lbnRzMi9UZXN0LmphdmEubmV3Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZlNDk1ODIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9jbGFzc1Byb3BlcnRpZXMvcmVtb3ZlSW1wbGVtZW50czIvVGVzdC5qYXZhLm5ldwpAQCAtMCwwICsxLDUgQEAKKworcHVibGljIGNsYXNzIFRlc3QgeworICBwdWJsaWMgdm9pZCBydW4oKSB7CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NsYXNzUHJvcGVydGllcy9yZW1vdmVJbXBsZW1lbnRzMi9zcmMvQ2xpZW50LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9jbGFzc1Byb3BlcnRpZXMvcmVtb3ZlSW1wbGVtZW50czIvc3JjL0NsaWVudC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBmY2RlN2IKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9jbGFzc1Byb3BlcnRpZXMvcmVtb3ZlSW1wbGVtZW50czIvc3JjL0NsaWVudC5qYXZhCkBAIC0wLDAgKzEsMTEgQEAKKworaW1wb3J0IGphdmF4LnN3aW5nLio7CisKK3B1YmxpYyBhYnN0cmFjdCBjbGFzcyBDbGllbnQgeworICB7CisgICAgVGVzdCB0ZXN0ID0gZm9vKCk7CisgICAgU3dpbmdVdGlsaXRpZXMuaW52b2tlTGF0ZXIodGVzdCk7CisgIH0KKworICBwdWJsaWMgYWJzdHJhY3QgVGVzdCBmb28oKTsKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NsYXNzUHJvcGVydGllcy9yZW1vdmVJbXBsZW1lbnRzMi9zcmMvQ2xpZW50SW1wbC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvY2xhc3NQcm9wZXJ0aWVzL3JlbW92ZUltcGxlbWVudHMyL3NyYy9DbGllbnRJbXBsLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGIwZGM3ZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NsYXNzUHJvcGVydGllcy9yZW1vdmVJbXBsZW1lbnRzMi9zcmMvQ2xpZW50SW1wbC5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKK3B1YmxpYyBjbGFzcyBDbGllbnRJbXBsIGV4dGVuZHMgQ2xpZW50IHsKKyAgcHVibGljIFRlc3QgZm9vKCkgeworICAgIHJldHVybiBuZXcgVGVzdCgpOworICB9CisKKyAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgeworICAgIG5ldyBDbGllbnRJbXBsKCk7CisgIH0KKworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NsYXNzUHJvcGVydGllcy9yZW1vdmVJbXBsZW1lbnRzMi9zcmMvVGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvY2xhc3NQcm9wZXJ0aWVzL3JlbW92ZUltcGxlbWVudHMyL3NyYy9UZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTQ4NjhiOAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NsYXNzUHJvcGVydGllcy9yZW1vdmVJbXBsZW1lbnRzMi9zcmMvVGVzdC5qYXZhCkBAIC0wLDAgKzEsNSBAQAorCitwdWJsaWMgY2xhc3MgVGVzdCBpbXBsZW1lbnRzIFJ1bm5hYmxleworICBwdWJsaWMgdm9pZCBydW4oKSB7CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NsYXNzUHJvcGVydGllcy9yZW1vdmVJbXBsZW1lbnRzMy5sb2cgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9jbGFzc1Byb3BlcnRpZXMvcmVtb3ZlSW1wbGVtZW50czMubG9nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUzMDdlMTYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9jbGFzc1Byb3BlcnRpZXMvcmVtb3ZlSW1wbGVtZW50czMubG9nCkBAIC0wLDAgKzEsMTQgQEAKK0NsZWFuaW5nIG91dHB1dCBmaWxlczoKK291dC9wcm9kdWN0aW9uL1JlbW92ZUltcGxlbWVudHMzL1Rlc3QuY2xhc3MKK0VuZCBvZiBmaWxlcworQ29tcGlsaW5nIGZpbGVzOgorc3JjL1Rlc3QuamF2YQorRW5kIG9mIGZpbGVzCitDbGVhbmluZyBvdXRwdXQgZmlsZXM6CitvdXQvcHJvZHVjdGlvbi9SZW1vdmVJbXBsZW1lbnRzMy9DbGllbnQuY2xhc3MKK291dC9wcm9kdWN0aW9uL1JlbW92ZUltcGxlbWVudHMzL0NsaWVudEltcGwuY2xhc3MKK0VuZCBvZiBmaWxlcworQ29tcGlsaW5nIGZpbGVzOgorc3JjL0NsaWVudC5qYXZhCitzcmMvQ2xpZW50SW1wbC5qYXZhCitFbmQgb2YgZmlsZXMKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NsYXNzUHJvcGVydGllcy9yZW1vdmVJbXBsZW1lbnRzMy9UZXN0LmphdmEubmV3IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvY2xhc3NQcm9wZXJ0aWVzL3JlbW92ZUltcGxlbWVudHMzL1Rlc3QuamF2YS5uZXcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmU0OTU4MgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NsYXNzUHJvcGVydGllcy9yZW1vdmVJbXBsZW1lbnRzMy9UZXN0LmphdmEubmV3CkBAIC0wLDAgKzEsNSBAQAorCitwdWJsaWMgY2xhc3MgVGVzdCB7CisgIHB1YmxpYyB2b2lkIHJ1bigpIHsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvY2xhc3NQcm9wZXJ0aWVzL3JlbW92ZUltcGxlbWVudHMzL3NyYy9DbGllbnQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NsYXNzUHJvcGVydGllcy9yZW1vdmVJbXBsZW1lbnRzMy9zcmMvQ2xpZW50LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWNlOTY5OQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NsYXNzUHJvcGVydGllcy9yZW1vdmVJbXBsZW1lbnRzMy9zcmMvQ2xpZW50LmphdmEKQEAgLTAsMCArMSwxMSBAQAorCitpbXBvcnQgamF2YXguc3dpbmcuKjsKKworcHVibGljIGFic3RyYWN0IGNsYXNzIENsaWVudCB7CisgIHsKKyAgICBUZXN0IHRlc3QgPSAoVGVzdClmb28oKTsKKyAgICBTd2luZ1V0aWxpdGllcy5pbnZva2VMYXRlcih0ZXN0KTsKKyAgfQorCisgIHB1YmxpYyBhYnN0cmFjdCBSdW5uYWJsZSBmb28oKTsKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NsYXNzUHJvcGVydGllcy9yZW1vdmVJbXBsZW1lbnRzMy9zcmMvQ2xpZW50SW1wbC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvY2xhc3NQcm9wZXJ0aWVzL3JlbW92ZUltcGxlbWVudHMzL3NyYy9DbGllbnRJbXBsLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDkyN2FhMTkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9jbGFzc1Byb3BlcnRpZXMvcmVtb3ZlSW1wbGVtZW50czMvc3JjL0NsaWVudEltcGwuamF2YQpAQCAtMCwwICsxLDEwIEBACitwdWJsaWMgY2xhc3MgQ2xpZW50SW1wbCBleHRlbmRzIENsaWVudCB7CisgIHB1YmxpYyBSdW5uYWJsZSBmb28oKSB7CisgICAgcmV0dXJuIG5ldyBUZXN0KCk7CisgIH0KKworICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CisgICAgbmV3IENsaWVudEltcGwoKTsKKyAgfQorCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvY2xhc3NQcm9wZXJ0aWVzL3JlbW92ZUltcGxlbWVudHMzL3NyYy9UZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9jbGFzc1Byb3BlcnRpZXMvcmVtb3ZlSW1wbGVtZW50czMvc3JjL1Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNDg2OGI4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvY2xhc3NQcm9wZXJ0aWVzL3JlbW92ZUltcGxlbWVudHMzL3NyYy9UZXN0LmphdmEKQEAgLTAsMCArMSw1IEBACisKK3B1YmxpYyBjbGFzcyBUZXN0IGltcGxlbWVudHMgUnVubmFibGV7CisgIHB1YmxpYyB2b2lkIHJ1bigpIHsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvY29tbW9uL2FkZENsYXNzLmxvZyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NvbW1vbi9hZGRDbGFzcy5sb2cKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWFhZjZiMQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NvbW1vbi9hZGRDbGFzcy5sb2cKQEAgLTAsMCArMSw5IEBACitDb21waWxpbmcgZmlsZXM6CitzcmMvVXRpbC5qYXZhCitFbmQgb2YgZmlsZXMKK0NsZWFuaW5nIG91dHB1dCBmaWxlczoKK291dC9wcm9kdWN0aW9uL2FkZENsYXNzL0NsaWVudC5jbGFzcworRW5kIG9mIGZpbGVzCitDb21waWxpbmcgZmlsZXM6CitzcmMvQ2xpZW50LmphdmEKK0VuZCBvZiBmaWxlcwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvY29tbW9uL2FkZENsYXNzLy5pZGVhL21pc2MueG1sIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvY29tbW9uL2FkZENsYXNzLy5pZGVhL21pc2MueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlhMjQ5ZDIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9jb21tb24vYWRkQ2xhc3MvLmlkZWEvbWlzYy54bWwKQEAgLTAsMCArMSwxMyBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxwcm9qZWN0IHZlcnNpb249IjQiPgorICA8Y29tcG9uZW50IG5hbWU9IkVudHJ5UG9pbnRzTWFuYWdlciI+CisgICAgPGVudHJ5X3BvaW50cyB2ZXJzaW9uPSIyLjAiIC8+CisgIDwvY29tcG9uZW50PgorICA8Y29tcG9uZW50IG5hbWU9IlByb2plY3RSZXNvdXJjZXMiPgorICAgIDxkZWZhdWx0LWh0bWwtZG9jdHlwZT5odHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sPC9kZWZhdWx0LWh0bWwtZG9jdHlwZT4KKyAgPC9jb21wb25lbnQ+CisgIDxjb21wb25lbnQgbmFtZT0iUHJvamVjdFJvb3RNYW5hZ2VyIiB2ZXJzaW9uPSIyIiBsYW5ndWFnZUxldmVsPSJKREtfMV82IiBhc3NlcnQta2V5d29yZD0idHJ1ZSIgamRrLTE1PSJ0cnVlIiBwcm9qZWN0LWpkay1uYW1lPSJJREVBIGpkayIgcHJvamVjdC1qZGstdHlwZT0iSmF2YVNESyI+CisgICAgPG91dHB1dCB1cmw9ImZpbGU6Ly8kUFJPSkVDVF9ESVIkL291dCIgLz4KKyAgPC9jb21wb25lbnQ+Cis8L3Byb2plY3Q+CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NvbW1vbi9hZGRDbGFzcy8uaWRlYS9tb2R1bGVzLnhtbCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NvbW1vbi9hZGRDbGFzcy8uaWRlYS9tb2R1bGVzLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lY2VmYzY0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvY29tbW9uL2FkZENsYXNzLy5pZGVhL21vZHVsZXMueG1sCkBAIC0wLDAgKzEsMTAgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8cHJvamVjdCB2ZXJzaW9uPSI0Ij4KKyAgPGNvbXBvbmVudCBuYW1lPSJQcm9qZWN0TW9kdWxlTWFuYWdlciI+CisgICAgPG1vZHVsZXM+CisgICAgICA8bW9kdWxlIGZpbGV1cmw9ImZpbGU6Ly8kUFJPSkVDVF9ESVIkL2FkZENsYXNzLmltbCIgZmlsZXBhdGg9IiRQUk9KRUNUX0RJUiQvYWRkQ2xhc3MuaW1sIiAvPgorICAgICAgPG1vZHVsZSBmaWxldXJsPSJmaWxlOi8vJFBST0pFQ1RfRElSJC9jb21tb24vY29tbW9uLmltbCIgZmlsZXBhdGg9IiRQUk9KRUNUX0RJUiQvY29tbW9uL2NvbW1vbi5pbWwiIC8+CisgICAgPC9tb2R1bGVzPgorICA8L2NvbXBvbmVudD4KKzwvcHJvamVjdD4KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvY29tbW9uL2FkZENsYXNzL1V0aWwuamF2YS5uZXcgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9jb21tb24vYWRkQ2xhc3MvVXRpbC5qYXZhLm5ldwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMTQxMTUxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvY29tbW9uL2FkZENsYXNzL1V0aWwuamF2YS5uZXcKQEAgLTAsMCArMSw1IEBACitwdWJsaWMgY2xhc3MgVXRpbCB7CisgIHB1YmxpYyBzdGF0aWMgdm9pZCBmb28gKGludCB4KSB7CisKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NvbW1vbi9hZGRDbGFzcy9hZGRDbGFzcy5pbWwgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9jb21tb24vYWRkQ2xhc3MvYWRkQ2xhc3MuaW1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA4OThiNTQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9jb21tb24vYWRkQ2xhc3MvYWRkQ2xhc3MuaW1sCkBAIC0wLDAgKzEsMTMgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8bW9kdWxlIHR5cGU9IkpBVkFfTU9EVUxFIiB2ZXJzaW9uPSI0Ij4KKyAgPGNvbXBvbmVudCBuYW1lPSJOZXdNb2R1bGVSb290TWFuYWdlciIgaW5oZXJpdC1jb21waWxlci1vdXRwdXQ9InRydWUiPgorICAgIDxleGNsdWRlLW91dHB1dCAvPgorICAgIDxjb250ZW50IHVybD0iZmlsZTovLyRNT0RVTEVfRElSJCI+CisgICAgICA8c291cmNlRm9sZGVyIHVybD0iZmlsZTovLyRNT0RVTEVfRElSJC9zcmMiIGlzVGVzdFNvdXJjZT0iZmFsc2UiIC8+CisgICAgPC9jb250ZW50PgorICAgIDxvcmRlckVudHJ5IHR5cGU9ImpkayIgamRrTmFtZT0iSURFQSBqZGsiIGpka1R5cGU9IkphdmFTREsiIC8+CisgICAgPG9yZGVyRW50cnkgdHlwZT0ic291cmNlRm9sZGVyIiBmb3JUZXN0cz0iZmFsc2UiIC8+CisgICAgPG9yZGVyRW50cnkgdHlwZT0ibW9kdWxlIiBtb2R1bGUtbmFtZT0iY29tbW9uIiAvPgorICA8L2NvbXBvbmVudD4KKzwvbW9kdWxlPgorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9jb21tb24vYWRkQ2xhc3MvY29tbW9uL2NvbW1vbi5pbWwgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9jb21tb24vYWRkQ2xhc3MvY29tbW9uL2NvbW1vbi5pbWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDVjMDc0MwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NvbW1vbi9hZGRDbGFzcy9jb21tb24vY29tbW9uLmltbApAQCAtMCwwICsxLDEyIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPG1vZHVsZSB0eXBlPSJKQVZBX01PRFVMRSIgdmVyc2lvbj0iNCI+CisgIDxjb21wb25lbnQgbmFtZT0iTmV3TW9kdWxlUm9vdE1hbmFnZXIiIGluaGVyaXQtY29tcGlsZXItb3V0cHV0PSJ0cnVlIj4KKyAgICA8ZXhjbHVkZS1vdXRwdXQgLz4KKyAgICA8Y29udGVudCB1cmw9ImZpbGU6Ly8kTU9EVUxFX0RJUiQiPgorICAgICAgPHNvdXJjZUZvbGRlciB1cmw9ImZpbGU6Ly8kTU9EVUxFX0RJUiQvc3JjIiBpc1Rlc3RTb3VyY2U9ImZhbHNlIiAvPgorICAgIDwvY29udGVudD4KKyAgICA8b3JkZXJFbnRyeSB0eXBlPSJpbmhlcml0ZWRKZGsiIC8+CisgICAgPG9yZGVyRW50cnkgdHlwZT0ic291cmNlRm9sZGVyIiBmb3JUZXN0cz0iZmFsc2UiIC8+CisgIDwvY29tcG9uZW50PgorPC9tb2R1bGU+CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NvbW1vbi9hZGRDbGFzcy9jb21tb24vc3JjL1V0aWwuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NvbW1vbi9hZGRDbGFzcy9jb21tb24vc3JjL1V0aWwuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZTM1YWZmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvY29tbW9uL2FkZENsYXNzL2NvbW1vbi9zcmMvVXRpbC5qYXZhCkBAIC0wLDAgKzEsMTIgQEAKKy8qKgorICogQ3JlYXRlZCB3aXRoIEludGVsbGlKIElERUEuCisgKiBVc2VyOiBkYgorICogRGF0ZTogMTEuMDQuMTIKKyAqIFRpbWU6IDExOjQzCisgKiBUbyBjaGFuZ2UgdGhpcyB0ZW1wbGF0ZSB1c2UgRmlsZSB8IFNldHRpbmdzIHwgRmlsZSBUZW1wbGF0ZXMuCisgKi8KK3B1YmxpYyBjbGFzcyBVdGlsIHsKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgZm9vICgpIHsKKworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NvbW1vbi9hZGRDbGFzcy9zcmMvQ2xpZW50LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9jb21tb24vYWRkQ2xhc3Mvc3JjL0NsaWVudC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA0YjdhZDcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9jb21tb24vYWRkQ2xhc3Mvc3JjL0NsaWVudC5qYXZhCkBAIC0wLDAgKzEsMTIgQEAKKy8qKgorICogQ3JlYXRlZCB3aXRoIEludGVsbGlKIElERUEuCisgKiBVc2VyOiBkYgorICogRGF0ZTogMTEuMDQuMTIKKyAqIFRpbWU6IDExOjQzCisgKiBUbyBjaGFuZ2UgdGhpcyB0ZW1wbGF0ZSB1c2UgRmlsZSB8IFNldHRpbmdzIHwgRmlsZSBUZW1wbGF0ZXMuCisgKi8KK3B1YmxpYyBjbGFzcyBDbGllbnQgeworICAgIHsKKyAgICAgICAgVXRpbC5mb28oKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9jb21tb24vYW5vbnltb3VzLmxvZyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NvbW1vbi9hbm9ueW1vdXMubG9nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJjMjRjZWYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9jb21tb24vYW5vbnltb3VzLmxvZwpAQCAtMCwwICsxLDEzIEBACitDbGVhbmluZyBvdXRwdXQgZmlsZXM6CitvdXQvcHJvZHVjdGlvbi9Bbm9ueW1vdXMvU2VydmVyLmNsYXNzCitFbmQgb2YgZmlsZXMKK0NvbXBpbGluZyBmaWxlczoKK3NyYy9TZXJ2ZXIuamF2YQorRW5kIG9mIGZpbGVzCitDbGVhbmluZyBvdXRwdXQgZmlsZXM6CitvdXQvcHJvZHVjdGlvbi9Bbm9ueW1vdXMvQ2xpZW50JDEuY2xhc3MKK291dC9wcm9kdWN0aW9uL0Fub255bW91cy9DbGllbnQuY2xhc3MKK0VuZCBvZiBmaWxlcworQ29tcGlsaW5nIGZpbGVzOgorc3JjL0NsaWVudC5qYXZhCitFbmQgb2YgZmlsZXMKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NvbW1vbi9hbm9ueW1vdXMvU2VydmVyLmphdmEubmV3IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvY29tbW9uL2Fub255bW91cy9TZXJ2ZXIuamF2YS5uZXcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDc5NmY4NQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NvbW1vbi9hbm9ueW1vdXMvU2VydmVyLmphdmEubmV3CkBAIC0wLDAgKzEsNCBAQAorY2xhc3MgU2VydmVyeworICBzdGF0aWMgdm9pZCBmb28oaW50IGEpeworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvY29tbW9uL2Fub255bW91cy9zcmMvQ2xpZW50LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9jb21tb24vYW5vbnltb3VzL3NyYy9DbGllbnQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jOTJiMmJkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvY29tbW9uL2Fub255bW91cy9zcmMvQ2xpZW50LmphdmEKQEAgLTAsMCArMSw5IEBACitjbGFzcyBDbGllbnR7CisgIHZvaWQgZm9vKCl7CisgICAgUnVubmFibGUgcnVubmFibGUgPSBuZXcgUnVubmFibGUoKXsKKyAgICAgIHB1YmxpYyB2b2lkIHJ1bigpeworICAgICAgICBTZXJ2ZXIuZm9vKCk7CisgICAgICB9CisgICAgfTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NvbW1vbi9hbm9ueW1vdXMvc3JjL1NlcnZlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvY29tbW9uL2Fub255bW91cy9zcmMvU2VydmVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjBjNzA3YgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NvbW1vbi9hbm9ueW1vdXMvc3JjL1NlcnZlci5qYXZhCkBAIC0wLDAgKzEsNCBAQAorY2xhc3MgU2VydmVyeworICBzdGF0aWMgdm9pZCBmb28oKXsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NvbW1vbi9jaGFuZ2VEZWZpbml0aW9uVG9DbGFzcy5sb2cgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9jb21tb24vY2hhbmdlRGVmaW5pdGlvblRvQ2xhc3MubG9nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIyZDhjYjcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9jb21tb24vY2hhbmdlRGVmaW5pdGlvblRvQ2xhc3MubG9nCkBAIC0wLDAgKzEsMTMgQEAKK0NsZWFuaW5nIG91dHB1dCBmaWxlczoKK291dC9wcm9kdWN0aW9uL0NoYW5nZURlZmluaXRpb25Ub0NsYXNzL1NlcnZlci5jbGFzcworRW5kIG9mIGZpbGVzCitDb21waWxpbmcgZmlsZXM6CitzcmMvU2VydmVyLmphdmEKK0VuZCBvZiBmaWxlcworQ2xlYW5pbmcgb3V0cHV0IGZpbGVzOgorb3V0L3Byb2R1Y3Rpb24vQ2hhbmdlRGVmaW5pdGlvblRvQ2xhc3MvQ2xpZW50JDEuY2xhc3MKK291dC9wcm9kdWN0aW9uL0NoYW5nZURlZmluaXRpb25Ub0NsYXNzL0NsaWVudC5jbGFzcworRW5kIG9mIGZpbGVzCitDb21waWxpbmcgZmlsZXM6CitzcmMvQ2xpZW50LmphdmEKK0VuZCBvZiBmaWxlcwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvY29tbW9uL2NoYW5nZURlZmluaXRpb25Ub0NsYXNzL1NlcnZlci5qYXZhLm5ldyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NvbW1vbi9jaGFuZ2VEZWZpbml0aW9uVG9DbGFzcy9TZXJ2ZXIuamF2YS5uZXcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDExYTQ2OQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NvbW1vbi9jaGFuZ2VEZWZpbml0aW9uVG9DbGFzcy9TZXJ2ZXIuamF2YS5uZXcKQEAgLTAsMCArMSwzIEBACithYnN0cmFjdCBjbGFzcyBTZXJ2ZXJ7CisgIHB1YmxpYyBhYnN0cmFjdCB2b2lkIGZvbygpOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NvbW1vbi9jaGFuZ2VEZWZpbml0aW9uVG9DbGFzcy9zcmMvQ2xpZW50LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9jb21tb24vY2hhbmdlRGVmaW5pdGlvblRvQ2xhc3Mvc3JjL0NsaWVudC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc2ZmRjNzgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9jb21tb24vY2hhbmdlRGVmaW5pdGlvblRvQ2xhc3Mvc3JjL0NsaWVudC5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKK2NsYXNzIENsaWVudHsKKyAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgeworICAgIFNlcnZlciBzZXJ2ZXIgPSBuZXcgU2VydmVyKCkgeworICAgICAgcHVibGljIHZvaWQgZm9vKCkgeworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oImZvbyBjYWxsZWQiKTsKKyAgICAgIH0KKyAgICB9OworICAgIHNlcnZlci5mb28oKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NvbW1vbi9jaGFuZ2VEZWZpbml0aW9uVG9DbGFzcy9zcmMvU2VydmVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9jb21tb24vY2hhbmdlRGVmaW5pdGlvblRvQ2xhc3Mvc3JjL1NlcnZlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ3MTgwMDcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9jb21tb24vY2hhbmdlRGVmaW5pdGlvblRvQ2xhc3Mvc3JjL1NlcnZlci5qYXZhCkBAIC0wLDAgKzEsMyBAQAoraW50ZXJmYWNlIFNlcnZlcnsKKyAgcHVibGljIHZvaWQgZm9vKCk7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvY29tbW9uL2NoYW5nZURlZmluaXRpb25Ub0NsYXNzMi5sb2cgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9jb21tb24vY2hhbmdlRGVmaW5pdGlvblRvQ2xhc3MyLmxvZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iY2E4YWIyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvY29tbW9uL2NoYW5nZURlZmluaXRpb25Ub0NsYXNzMi5sb2cKQEAgLTAsMCArMSwxNSBAQAorQ2xlYW5pbmcgb3V0cHV0IGZpbGVzOgorb3V0L3Byb2R1Y3Rpb24vQ2hhbmdlRGVmaW5pdGlvblRvQ2xhc3MyL1NlcnZlci5jbGFzcworRW5kIG9mIGZpbGVzCitDb21waWxpbmcgZmlsZXM6CitzcmMvU2VydmVyLmphdmEKK0VuZCBvZiBmaWxlcworQ2xlYW5pbmcgb3V0cHV0IGZpbGVzOgorb3V0L3Byb2R1Y3Rpb24vQ2hhbmdlRGVmaW5pdGlvblRvQ2xhc3MyL0NsaWVudC5jbGFzcworb3V0L3Byb2R1Y3Rpb24vQ2hhbmdlRGVmaW5pdGlvblRvQ2xhc3MyL0ZhY3RvcnkkMS5jbGFzcworb3V0L3Byb2R1Y3Rpb24vQ2hhbmdlRGVmaW5pdGlvblRvQ2xhc3MyL0ZhY3RvcnkuY2xhc3MKK0VuZCBvZiBmaWxlcworQ29tcGlsaW5nIGZpbGVzOgorc3JjL0NsaWVudC5qYXZhCitzcmMvRmFjdG9yeS5qYXZhCitFbmQgb2YgZmlsZXMKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NvbW1vbi9jaGFuZ2VEZWZpbml0aW9uVG9DbGFzczIvU2VydmVyLmphdmEubmV3IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvY29tbW9uL2NoYW5nZURlZmluaXRpb25Ub0NsYXNzMi9TZXJ2ZXIuamF2YS5uZXcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDExYTQ2OQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NvbW1vbi9jaGFuZ2VEZWZpbml0aW9uVG9DbGFzczIvU2VydmVyLmphdmEubmV3CkBAIC0wLDAgKzEsMyBAQAorYWJzdHJhY3QgY2xhc3MgU2VydmVyeworICBwdWJsaWMgYWJzdHJhY3Qgdm9pZCBmb28oKTsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9jb21tb24vY2hhbmdlRGVmaW5pdGlvblRvQ2xhc3MyL3NyYy9DbGllbnQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NvbW1vbi9jaGFuZ2VEZWZpbml0aW9uVG9DbGFzczIvc3JjL0NsaWVudC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM4ODVlMzgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9jb21tb24vY2hhbmdlRGVmaW5pdGlvblRvQ2xhc3MyL3NyYy9DbGllbnQuamF2YQpAQCAtMCwwICsxLDYgQEAKK2NsYXNzIENsaWVudHsKKyAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgeworICAgIFNlcnZlciBzZXJ2ZXIgPSBGYWN0b3J5LmNyZWF0ZVNlcnZlcigpOworICAgIHNlcnZlci5mb28oKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NvbW1vbi9jaGFuZ2VEZWZpbml0aW9uVG9DbGFzczIvc3JjL0ZhY3RvcnkuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NvbW1vbi9jaGFuZ2VEZWZpbml0aW9uVG9DbGFzczIvc3JjL0ZhY3RvcnkuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZTc4Y2Y0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvY29tbW9uL2NoYW5nZURlZmluaXRpb25Ub0NsYXNzMi9zcmMvRmFjdG9yeS5qYXZhCkBAIC0wLDAgKzEsOSBAQAorY2xhc3MgRmFjdG9yeSB7CisgIHB1YmxpYyBzdGF0aWMgU2VydmVyIGNyZWF0ZVNlcnZlcigpIHsKKyAgICByZXR1cm4gbmV3IFNlcnZlcigpIHsKKyAgICAgIHB1YmxpYyB2b2lkIGZvbygpIHsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJmb28oKSBjYWxsZWQiKTsKKyAgICAgIH0KKyAgICB9OworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvY29tbW9uL2NoYW5nZURlZmluaXRpb25Ub0NsYXNzMi9zcmMvU2VydmVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9jb21tb24vY2hhbmdlRGVmaW5pdGlvblRvQ2xhc3MyL3NyYy9TZXJ2ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NzE4MDA3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvY29tbW9uL2NoYW5nZURlZmluaXRpb25Ub0NsYXNzMi9zcmMvU2VydmVyLmphdmEKQEAgLTAsMCArMSwzIEBACitpbnRlcmZhY2UgU2VydmVyeworICBwdWJsaWMgdm9pZCBmb28oKTsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9jb21tb24vY2xhc3MySW50ZXJmYWNlMS5sb2cgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9jb21tb24vY2xhc3MySW50ZXJmYWNlMS5sb2cKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzc3MDg0NQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NvbW1vbi9jbGFzczJJbnRlcmZhY2UxLmxvZwpAQCAtMCwwICsxLDE3IEBACitDbGVhbmluZyBvdXRwdXQgZmlsZXM6CitvdXQvcHJvZHVjdGlvbi9DbGFzczJJbnRlcmZhY2UxL0ZhY3RvcnkuY2xhc3MKK0VuZCBvZiBmaWxlcworQ29tcGlsaW5nIGZpbGVzOgorc3JjL0ZhY3RvcnkuamF2YQorRW5kIG9mIGZpbGVzCitDbGVhbmluZyBvdXRwdXQgZmlsZXM6CitvdXQvcHJvZHVjdGlvbi9DbGFzczJJbnRlcmZhY2UxL0NsaWVudCQxLmNsYXNzCitvdXQvcHJvZHVjdGlvbi9DbGFzczJJbnRlcmZhY2UxL0NsaWVudC5jbGFzcworb3V0L3Byb2R1Y3Rpb24vQ2xhc3MySW50ZXJmYWNlMS9NYWluLmNsYXNzCitvdXQvcHJvZHVjdGlvbi9DbGFzczJJbnRlcmZhY2UxL1N1YkNsaWVudC5jbGFzcworRW5kIG9mIGZpbGVzCitDb21waWxpbmcgZmlsZXM6CitzcmMvQ2xpZW50LmphdmEKK3NyYy9NYWluLmphdmEKK3NyYy9TdWJDbGllbnQuamF2YQorRW5kIG9mIGZpbGVzCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9jb21tb24vY2xhc3MySW50ZXJmYWNlMS9GYWN0b3J5LmphdmEubmV3IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvY29tbW9uL2NsYXNzMkludGVyZmFjZTEvRmFjdG9yeS5qYXZhLm5ldwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMDI0MTA0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvY29tbW9uL2NsYXNzMkludGVyZmFjZTEvRmFjdG9yeS5qYXZhLm5ldwpAQCAtMCwwICsxLDQgQEAKK2Fic3RyYWN0IGNsYXNzIEZhY3RvcnkgeworICBhYnN0cmFjdCBQcm9kdWN0IGNyZWF0ZSgpOworfQorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9jb21tb24vY2xhc3MySW50ZXJmYWNlMS9GYWN0b3J5LmphdmEubmV3fiBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NvbW1vbi9jbGFzczJJbnRlcmZhY2UxL0ZhY3RvcnkuamF2YS5uZXd+Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAxMDdlNjUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9jb21tb24vY2xhc3MySW50ZXJmYWNlMS9GYWN0b3J5LmphdmEubmV3fgpAQCAtMCwwICsxLDQgQEAKK2ludGVyZmFjZSBGYWN0b3J5IHsKKyAgUHJvZHVjdCBjcmVhdGUoKTsKK30KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvY29tbW9uL2NsYXNzMkludGVyZmFjZTEvc3JjL0NsaWVudC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvY29tbW9uL2NsYXNzMkludGVyZmFjZTEvc3JjL0NsaWVudC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU4NTRkMTgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9jb21tb24vY2xhc3MySW50ZXJmYWNlMS9zcmMvQ2xpZW50LmphdmEKQEAgLTAsMCArMSw4IEBACitjbGFzcyBDbGllbnQgeworICBwcm90ZWN0ZWQgRmFjdG9yeSBmYWN0b3J5ID0KKyAgICBuZXcgRmFjdG9yeSgpIHsKKyAgICAgIHB1YmxpYyBQcm9kdWN0IGNyZWF0ZSAoKSB7CisgICAgICAgIHJldHVybiBuZXcgUHJvZHVjdCgiY3JlYXRlZCIpOworICAgICAgfQorICAgIH07ICAKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NvbW1vbi9jbGFzczJJbnRlcmZhY2UxL3NyYy9GYWN0b3J5LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9jb21tb24vY2xhc3MySW50ZXJmYWNlMS9zcmMvRmFjdG9yeS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAxMDdlNjUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9jb21tb24vY2xhc3MySW50ZXJmYWNlMS9zcmMvRmFjdG9yeS5qYXZhCkBAIC0wLDAgKzEsNCBAQAoraW50ZXJmYWNlIEZhY3RvcnkgeworICBQcm9kdWN0IGNyZWF0ZSgpOworfQorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9jb21tb24vY2xhc3MySW50ZXJmYWNlMS9zcmMvTWFpbi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvY29tbW9uL2NsYXNzMkludGVyZmFjZTEvc3JjL01haW4uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44Yzc1Mzk0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvY29tbW9uL2NsYXNzMkludGVyZmFjZTEvc3JjL01haW4uamF2YQpAQCAtMCwwICsxLDYgQEAKK3B1YmxpYyBjbGFzcyBNYWluIHsKKyAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4gKFN0cmluZ1tdIGFyZ3MpIHsKKyAgICAgIGZpbmFsIFN1YkNsaWVudCBzID0gbmV3IFN1YkNsaWVudCAoKTsKKyAgICAgIHMubWV0aG9kIChzLmZhY3RvcnkpOworICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9jb21tb24vY2xhc3MySW50ZXJmYWNlMS9zcmMvUHJvZHVjdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvY29tbW9uL2NsYXNzMkludGVyZmFjZTEvc3JjL1Byb2R1Y3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMzk1ZGU1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvY29tbW9uL2NsYXNzMkludGVyZmFjZTEvc3JjL1Byb2R1Y3QuamF2YQpAQCAtMCwwICsxLDUgQEAKK2NsYXNzIFByb2R1Y3QgeworICBTdHJpbmcgbmFtZTsKKyAgcHVibGljIFByb2R1Y3QgKFN0cmluZyBuYW1lKSB7dGhpcy5uYW1lID0gbmFtZTt9CisgIHB1YmxpYyBTdHJpbmcgdG9TdHJpbmcgKCkge3JldHVybiBuYW1lO30KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NvbW1vbi9jbGFzczJJbnRlcmZhY2UxL3NyYy9TdWJDbGllbnQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NvbW1vbi9jbGFzczJJbnRlcmZhY2UxL3NyYy9TdWJDbGllbnQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wOTIyZWM5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvY29tbW9uL2NsYXNzMkludGVyZmFjZTEvc3JjL1N1YkNsaWVudC5qYXZhCkBAIC0wLDAgKzEsNiBAQAorY2xhc3MgU3ViQ2xpZW50IGV4dGVuZHMgQ2xpZW50IHsKKyAgdm9pZCBtZXRob2QgKGZpbmFsIEZhY3RvcnkgZmFjdG9yeSkgeworICAgIFByb2R1Y3QgcHJvZHVjdCA9IGZhY3RvcnkuY3JlYXRlKCk7CisgICAgU3lzdGVtLm91dC5wcmludGxuIChwcm9kdWN0KTsKKyAgfQorfSAKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NvbW1vbi9jbGFzczJJbnRlcmZhY2UyLmxvZyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NvbW1vbi9jbGFzczJJbnRlcmZhY2UyLmxvZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMTIxZGY1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvY29tbW9uL2NsYXNzMkludGVyZmFjZTIubG9nCkBAIC0wLDAgKzEsMTUgQEAKK0NsZWFuaW5nIG91dHB1dCBmaWxlczoKK291dC9wcm9kdWN0aW9uL0NsYXNzMkludGVyZmFjZTIvRmFjdG9yeS5jbGFzcworRW5kIG9mIGZpbGVzCitDb21waWxpbmcgZmlsZXM6CitzcmMvRmFjdG9yeS5qYXZhCitFbmQgb2YgZmlsZXMKK0NsZWFuaW5nIG91dHB1dCBmaWxlczoKK291dC9wcm9kdWN0aW9uL0NsYXNzMkludGVyZmFjZTIvQ2xpZW50JDEuY2xhc3MKK291dC9wcm9kdWN0aW9uL0NsYXNzMkludGVyZmFjZTIvQ2xpZW50LmNsYXNzCitvdXQvcHJvZHVjdGlvbi9DbGFzczJJbnRlcmZhY2UyL1N1YkNsaWVudC5jbGFzcworRW5kIG9mIGZpbGVzCitDb21waWxpbmcgZmlsZXM6CitzcmMvQ2xpZW50LmphdmEKK3NyYy9TdWJDbGllbnQuamF2YQorRW5kIG9mIGZpbGVzCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9jb21tb24vY2xhc3MySW50ZXJmYWNlMi9GYWN0b3J5LmphdmEubmV3IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvY29tbW9uL2NsYXNzMkludGVyZmFjZTIvRmFjdG9yeS5qYXZhLm5ldwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMDI0MTA0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvY29tbW9uL2NsYXNzMkludGVyZmFjZTIvRmFjdG9yeS5qYXZhLm5ldwpAQCAtMCwwICsxLDQgQEAKK2Fic3RyYWN0IGNsYXNzIEZhY3RvcnkgeworICBhYnN0cmFjdCBQcm9kdWN0IGNyZWF0ZSgpOworfQorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9jb21tb24vY2xhc3MySW50ZXJmYWNlMi9zcmMvQ2xpZW50LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9jb21tb24vY2xhc3MySW50ZXJmYWNlMi9zcmMvQ2xpZW50LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTg1NGQxOAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NvbW1vbi9jbGFzczJJbnRlcmZhY2UyL3NyYy9DbGllbnQuamF2YQpAQCAtMCwwICsxLDggQEAKK2NsYXNzIENsaWVudCB7CisgIHByb3RlY3RlZCBGYWN0b3J5IGZhY3RvcnkgPQorICAgIG5ldyBGYWN0b3J5KCkgeworICAgICAgcHVibGljIFByb2R1Y3QgY3JlYXRlICgpIHsKKyAgICAgICAgcmV0dXJuIG5ldyBQcm9kdWN0KCJjcmVhdGVkIik7CisgICAgICB9CisgICAgfTsgIAorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvY29tbW9uL2NsYXNzMkludGVyZmFjZTIvc3JjL0ZhY3RvcnkuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NvbW1vbi9jbGFzczJJbnRlcmZhY2UyL3NyYy9GYWN0b3J5LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDEwN2U2NQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NvbW1vbi9jbGFzczJJbnRlcmZhY2UyL3NyYy9GYWN0b3J5LmphdmEKQEAgLTAsMCArMSw0IEBACitpbnRlcmZhY2UgRmFjdG9yeSB7CisgIFByb2R1Y3QgY3JlYXRlKCk7Cit9CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NvbW1vbi9jbGFzczJJbnRlcmZhY2UyL3NyYy9NYWluLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9jb21tb24vY2xhc3MySW50ZXJmYWNlMi9zcmMvTWFpbi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ2YTZhZWIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9jb21tb24vY2xhc3MySW50ZXJmYWNlMi9zcmMvTWFpbi5qYXZhCkBAIC0wLDAgKzEsNiBAQAorcHVibGljIGNsYXNzIE1haW4geworICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbiAoU3RyaW5nW10gYXJncykgeworICAgICAgZmluYWwgU3ViQ2xpZW50IHMgPSBuZXcgU3ViQ2xpZW50ICgpOworICAgICAgcy5tZXRob2QgKCk7CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NvbW1vbi9jbGFzczJJbnRlcmZhY2UyL3NyYy9Qcm9kdWN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9jb21tb24vY2xhc3MySW50ZXJmYWNlMi9zcmMvUHJvZHVjdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAzOTVkZTUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9jb21tb24vY2xhc3MySW50ZXJmYWNlMi9zcmMvUHJvZHVjdC5qYXZhCkBAIC0wLDAgKzEsNSBAQAorY2xhc3MgUHJvZHVjdCB7CisgIFN0cmluZyBuYW1lOworICBwdWJsaWMgUHJvZHVjdCAoU3RyaW5nIG5hbWUpIHt0aGlzLm5hbWUgPSBuYW1lO30KKyAgcHVibGljIFN0cmluZyB0b1N0cmluZyAoKSB7cmV0dXJuIG5hbWU7fQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvY29tbW9uL2NsYXNzMkludGVyZmFjZTIvc3JjL1N1YkNsaWVudC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvY29tbW9uL2NsYXNzMkludGVyZmFjZTIvc3JjL1N1YkNsaWVudC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ4ZDliMjkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9jb21tb24vY2xhc3MySW50ZXJmYWNlMi9zcmMvU3ViQ2xpZW50LmphdmEKQEAgLTAsMCArMSw2IEBACitjbGFzcyBTdWJDbGllbnQgZXh0ZW5kcyBDbGllbnQgeworICB2b2lkIG1ldGhvZCAoKSB7CisgICAgUHJvZHVjdCBwcm9kdWN0ID0gZmFjdG9yeS5jcmVhdGUoKTsKKyAgICBTeXN0ZW0ub3V0LnByaW50bG4gKHByb2R1Y3QpOworICB9Cit9IApkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvY29tbW9uL2NsYXNzMkludGVyZmFjZTMubG9nIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvY29tbW9uL2NsYXNzMkludGVyZmFjZTMubG9nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhkYzhlNzIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9jb21tb24vY2xhc3MySW50ZXJmYWNlMy5sb2cKQEAgLTAsMCArMSwxNSBAQAorQ2xlYW5pbmcgb3V0cHV0IGZpbGVzOgorb3V0L3Byb2R1Y3Rpb24vQ2xhc3MySW50ZXJmYWNlMy9GYWN0b3J5LmNsYXNzCitFbmQgb2YgZmlsZXMKK0NvbXBpbGluZyBmaWxlczoKK3NyYy9GYWN0b3J5LmphdmEKK0VuZCBvZiBmaWxlcworQ2xlYW5pbmcgb3V0cHV0IGZpbGVzOgorb3V0L3Byb2R1Y3Rpb24vQ2xhc3MySW50ZXJmYWNlMy9DbGllbnQkMS5jbGFzcworb3V0L3Byb2R1Y3Rpb24vQ2xhc3MySW50ZXJmYWNlMy9DbGllbnQuY2xhc3MKK291dC9wcm9kdWN0aW9uL0NsYXNzMkludGVyZmFjZTMvU3ViQ2xpZW50LmNsYXNzCitFbmQgb2YgZmlsZXMKK0NvbXBpbGluZyBmaWxlczoKK3NyYy9DbGllbnQuamF2YQorc3JjL1N1YkNsaWVudC5qYXZhCitFbmQgb2YgZmlsZXMKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NvbW1vbi9jbGFzczJJbnRlcmZhY2UzL0ZhY3RvcnkuamF2YS5uZXcgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9jb21tb24vY2xhc3MySW50ZXJmYWNlMy9GYWN0b3J5LmphdmEubmV3Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMwMjQxMDQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9jb21tb24vY2xhc3MySW50ZXJmYWNlMy9GYWN0b3J5LmphdmEubmV3CkBAIC0wLDAgKzEsNCBAQAorYWJzdHJhY3QgY2xhc3MgRmFjdG9yeSB7CisgIGFic3RyYWN0IFByb2R1Y3QgY3JlYXRlKCk7Cit9CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NvbW1vbi9jbGFzczJJbnRlcmZhY2UzL3NyYy9DbGllbnQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NvbW1vbi9jbGFzczJJbnRlcmZhY2UzL3NyYy9DbGllbnQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41OTdkZDdjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvY29tbW9uL2NsYXNzMkludGVyZmFjZTMvc3JjL0NsaWVudC5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKK2NsYXNzIENsaWVudCB7CisgICAgcHJvdGVjdGVkIEZhY3RvcnkgZ2V0RmFjdG9yeSAoKSB7CisgICAgICByZXR1cm4KKyAgICAgICAgbmV3IEZhY3RvcnkoKSB7CisgICAgICAgICAgcHVibGljIFByb2R1Y3QgY3JlYXRlICgpIHsKKyAgICAgICAgICAgIHJldHVybiBuZXcgUHJvZHVjdCgiY3JlYXRlZCIpOworICAgICAgICAgIH0KKyAgICAgICAgfTsgIAorICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NvbW1vbi9jbGFzczJJbnRlcmZhY2UzL3NyYy9GYWN0b3J5LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9jb21tb24vY2xhc3MySW50ZXJmYWNlMy9zcmMvRmFjdG9yeS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAxMDdlNjUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9jb21tb24vY2xhc3MySW50ZXJmYWNlMy9zcmMvRmFjdG9yeS5qYXZhCkBAIC0wLDAgKzEsNCBAQAoraW50ZXJmYWNlIEZhY3RvcnkgeworICBQcm9kdWN0IGNyZWF0ZSgpOworfQorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9jb21tb24vY2xhc3MySW50ZXJmYWNlMy9zcmMvTWFpbi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvY29tbW9uL2NsYXNzMkludGVyZmFjZTMvc3JjL01haW4uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NmE2YWViCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvY29tbW9uL2NsYXNzMkludGVyZmFjZTMvc3JjL01haW4uamF2YQpAQCAtMCwwICsxLDYgQEAKK3B1YmxpYyBjbGFzcyBNYWluIHsKKyAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4gKFN0cmluZ1tdIGFyZ3MpIHsKKyAgICAgIGZpbmFsIFN1YkNsaWVudCBzID0gbmV3IFN1YkNsaWVudCAoKTsKKyAgICAgIHMubWV0aG9kICgpOworICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9jb21tb24vY2xhc3MySW50ZXJmYWNlMy9zcmMvUHJvZHVjdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvY29tbW9uL2NsYXNzMkludGVyZmFjZTMvc3JjL1Byb2R1Y3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMzk1ZGU1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvY29tbW9uL2NsYXNzMkludGVyZmFjZTMvc3JjL1Byb2R1Y3QuamF2YQpAQCAtMCwwICsxLDUgQEAKK2NsYXNzIFByb2R1Y3QgeworICBTdHJpbmcgbmFtZTsKKyAgcHVibGljIFByb2R1Y3QgKFN0cmluZyBuYW1lKSB7dGhpcy5uYW1lID0gbmFtZTt9CisgIHB1YmxpYyBTdHJpbmcgdG9TdHJpbmcgKCkge3JldHVybiBuYW1lO30KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NvbW1vbi9jbGFzczJJbnRlcmZhY2UzL3NyYy9TdWJDbGllbnQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NvbW1vbi9jbGFzczJJbnRlcmZhY2UzL3NyYy9TdWJDbGllbnQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNWFlODc0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvY29tbW9uL2NsYXNzMkludGVyZmFjZTMvc3JjL1N1YkNsaWVudC5qYXZhCkBAIC0wLDAgKzEsNiBAQAorY2xhc3MgU3ViQ2xpZW50IGV4dGVuZHMgQ2xpZW50IHsKKyAgdm9pZCBtZXRob2QgKCkgeworICAgIFByb2R1Y3QgcHJvZHVjdCA9IGdldEZhY3RvcnkoKS5jcmVhdGUoKTsKKyAgICBTeXN0ZW0ub3V0LnByaW50bG4gKHByb2R1Y3QpOworICB9Cit9IApkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvY29tbW9uL2RlbGV0ZUNsYXNzLmxvZyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NvbW1vbi9kZWxldGVDbGFzcy5sb2cKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzlkYTFhNmUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9jb21tb24vZGVsZXRlQ2xhc3MubG9nCkBAIC0wLDAgKzEsOSBAQAorQ2xlYW5pbmcgb3V0cHV0IGZpbGVzOgorb3V0L3Byb2R1Y3Rpb24vRGVsZXRlQ2xhc3MvcGFja2FnZUEvU2VydmVyLmNsYXNzCitFbmQgb2YgZmlsZXMKK0NsZWFuaW5nIG91dHB1dCBmaWxlczoKK291dC9wcm9kdWN0aW9uL0RlbGV0ZUNsYXNzL3BhY2thZ2VBL0NsaWVudC5jbGFzcworRW5kIG9mIGZpbGVzCitDb21waWxpbmcgZmlsZXM6CitzcmMvcGFja2FnZUEvQ2xpZW50LmphdmEKK0VuZCBvZiBmaWxlcwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvY29tbW9uL2RlbGV0ZUNsYXNzL3NyYy9wYWNrYWdlQS9DbGllbnQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NvbW1vbi9kZWxldGVDbGFzcy9zcmMvcGFja2FnZUEvQ2xpZW50LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2VmNTQyZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NvbW1vbi9kZWxldGVDbGFzcy9zcmMvcGFja2FnZUEvQ2xpZW50LmphdmEKQEAgLTAsMCArMSwxMiBAQAorLyoqCisgKiBjcmVhdGVkIGF0IEphbiAyMiwgMjAwMgorICogQGF1dGhvciBKZWthCisgKi8KK3BhY2thZ2UgcGFja2FnZUE7CisKK3B1YmxpYyBjbGFzcyBDbGllbnQgeworICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CisgICAgU2VydmVyIHNlcnZlciA9IG5ldyBTZXJ2ZXIoKTsKKyAgICBzZXJ2ZXIubWV0aG9kKCk7CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NvbW1vbi9kZWxldGVDbGFzcy9zcmMvcGFja2FnZUEvU2VydmVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9jb21tb24vZGVsZXRlQ2xhc3Mvc3JjL3BhY2thZ2VBL1NlcnZlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgxMGM4N2QKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9jb21tb24vZGVsZXRlQ2xhc3Mvc3JjL3BhY2thZ2VBL1NlcnZlci5qYXZhCkBAIC0wLDAgKzEsMTEgQEAKKy8qKgorICogY3JlYXRlZCBhdCBKYW4gMjIsIDIwMDIKKyAqIEBhdXRob3IgSmVrYQorICovCitwYWNrYWdlIHBhY2thZ2VBOworCitwdWJsaWMgY2xhc3MgU2VydmVyIHsKKyAgcHVibGljIHZvaWQgbWV0aG9kKCkgeworICAgIFN5c3RlbS5vdXQucHJpbnRsbigiU2VydmVyLm1ldGhvZCIpOworICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9jb21tb24vZGVsZXRlQ2xhc3Mvc3JjL3BhY2thZ2VBL1NlcnZlci5qYXZhLnJlbW92ZSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NvbW1vbi9kZWxldGVDbGFzcy9zcmMvcGFja2FnZUEvU2VydmVyLmphdmEucmVtb3ZlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU2OWRlMjkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9jb21tb24vZGVsZXRlQ2xhc3Mvc3JjL3BhY2thZ2VBL1NlcnZlci5qYXZhLnJlbW92ZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvY29tbW9uL2RlbGV0ZUNsYXNzMS5sb2cgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9jb21tb24vZGVsZXRlQ2xhc3MxLmxvZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YmFiYjhhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvY29tbW9uL2RlbGV0ZUNsYXNzMS5sb2cKQEAgLTAsMCArMSw5IEBACitDbGVhbmluZyBvdXRwdXQgZmlsZXM6CitvdXQvcHJvZHVjdGlvbi9EZWxldGVDbGFzczEvcGFja2FnZUEvU2VydmVyLmNsYXNzCitFbmQgb2YgZmlsZXMKK0NsZWFuaW5nIG91dHB1dCBmaWxlczoKK291dC9wcm9kdWN0aW9uL0RlbGV0ZUNsYXNzMS9wYWNrYWdlQS9DbGllbnQuY2xhc3MKK0VuZCBvZiBmaWxlcworQ29tcGlsaW5nIGZpbGVzOgorc3JjL3BhY2thZ2VBL0NsaWVudC5qYXZhCitFbmQgb2YgZmlsZXMKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NvbW1vbi9kZWxldGVDbGFzczEvc3JjL3BhY2thZ2VBL0NsaWVudC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvY29tbW9uL2RlbGV0ZUNsYXNzMS9zcmMvcGFja2FnZUEvQ2xpZW50LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjkxZDViYwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NvbW1vbi9kZWxldGVDbGFzczEvc3JjL3BhY2thZ2VBL0NsaWVudC5qYXZhCkBAIC0wLDAgKzEsNSBAQAorcGFja2FnZSBwYWNrYWdlQTsKKworcHVibGljIGNsYXNzIENsaWVudCB7CisJc3RhdGljIENsYXNzIGMgPSBuZXcgU2VydmVyKCkuZ2V0Q2xhc3MoKTsKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NvbW1vbi9kZWxldGVDbGFzczEvc3JjL3BhY2thZ2VBL1NlcnZlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvY29tbW9uL2RlbGV0ZUNsYXNzMS9zcmMvcGFja2FnZUEvU2VydmVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjVmMWJlNgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NvbW1vbi9kZWxldGVDbGFzczEvc3JjL3BhY2thZ2VBL1NlcnZlci5qYXZhCkBAIC0wLDAgKzEsNCBAQAorcGFja2FnZSBwYWNrYWdlQTsKKworcHVibGljIGNsYXNzIFNlcnZlciB7Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9jb21tb24vZGVsZXRlQ2xhc3MxL3NyYy9wYWNrYWdlQS9TZXJ2ZXIuamF2YS5yZW1vdmUgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9jb21tb24vZGVsZXRlQ2xhc3MxL3NyYy9wYWNrYWdlQS9TZXJ2ZXIuamF2YS5yZW1vdmUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTY5ZGUyOQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NvbW1vbi9kZWxldGVDbGFzczEvc3JjL3BhY2thZ2VBL1NlcnZlci5qYXZhLnJlbW92ZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvY29tbW9uL2RlbGV0ZUNsYXNzMi5sb2cgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9jb21tb24vZGVsZXRlQ2xhc3MyLmxvZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45N2QyOTQxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvY29tbW9uL2RlbGV0ZUNsYXNzMi5sb2cKQEAgLTAsMCArMSwxMiBAQAorQ2xlYW5pbmcgb3V0cHV0IGZpbGVzOgorb3V0L3Byb2R1Y3Rpb24vRGVsZXRlQ2xhc3MyL3BhY2thZ2VBL1NlcnZlci5jbGFzcworRW5kIG9mIGZpbGVzCitDb21waWxpbmcgZmlsZXM6CitzcmMvcGFja2FnZUEvU2VydmVyLmphdmEKK0VuZCBvZiBmaWxlcworQ2xlYW5pbmcgb3V0cHV0IGZpbGVzOgorb3V0L3Byb2R1Y3Rpb24vRGVsZXRlQ2xhc3MyL3BhY2thZ2VBL0NsaWVudC5jbGFzcworRW5kIG9mIGZpbGVzCitDb21waWxpbmcgZmlsZXM6CitzcmMvcGFja2FnZUEvQ2xpZW50LmphdmEKK0VuZCBvZiBmaWxlcwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvY29tbW9uL2RlbGV0ZUNsYXNzMi9zcmMvcGFja2FnZUEvQ2xpZW50LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9jb21tb24vZGVsZXRlQ2xhc3MyL3NyYy9wYWNrYWdlQS9DbGllbnQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZWY1NDJmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvY29tbW9uL2RlbGV0ZUNsYXNzMi9zcmMvcGFja2FnZUEvQ2xpZW50LmphdmEKQEAgLTAsMCArMSwxMiBAQAorLyoqCisgKiBjcmVhdGVkIGF0IEphbiAyMiwgMjAwMgorICogQGF1dGhvciBKZWthCisgKi8KK3BhY2thZ2UgcGFja2FnZUE7CisKK3B1YmxpYyBjbGFzcyBDbGllbnQgeworICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CisgICAgU2VydmVyIHNlcnZlciA9IG5ldyBTZXJ2ZXIoKTsKKyAgICBzZXJ2ZXIubWV0aG9kKCk7CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NvbW1vbi9kZWxldGVDbGFzczIvc3JjL3BhY2thZ2VBL1NlcnZlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvY29tbW9uL2RlbGV0ZUNsYXNzMi9zcmMvcGFja2FnZUEvU2VydmVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTE2ODQzMAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NvbW1vbi9kZWxldGVDbGFzczIvc3JjL3BhY2thZ2VBL1NlcnZlci5qYXZhCkBAIC0wLDAgKzEsNyBAQAorcGFja2FnZSBwYWNrYWdlQTsKKworcHVibGljIGNsYXNzIFNlcnZlciB7CisgIHB1YmxpYyB2b2lkIG1ldGhvZCgpIHsKKyAgICBTeXN0ZW0ub3V0LnByaW50bG4oIlNlcnZlci5tZXRob2QiKTsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvY29tbW9uL2RlbGV0ZUNsYXNzMi9zcmMvcGFja2FnZUEvU2VydmVyLmphdmEubmV3IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvY29tbW9uL2RlbGV0ZUNsYXNzMi9zcmMvcGFja2FnZUEvU2VydmVyLmphdmEubmV3Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBmYzhjMTIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9jb21tb24vZGVsZXRlQ2xhc3MyL3NyYy9wYWNrYWdlQS9TZXJ2ZXIuamF2YS5uZXcKQEAgLTAsMCArMSBAQAorcGFja2FnZSBwYWNrYWdlQTsKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NvbW1vbi9kZWxldGVDbGFzczMubG9nIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvY29tbW9uL2RlbGV0ZUNsYXNzMy5sb2cKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDRmMGNmNgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NvbW1vbi9kZWxldGVDbGFzczMubG9nCkBAIC0wLDAgKzEsOSBAQAorQ2xlYW5pbmcgb3V0cHV0IGZpbGVzOgorb3V0L3Byb2R1Y3Rpb24vTS9BLmNsYXNzCitFbmQgb2YgZmlsZXMKK0NvbXBpbGluZyBmaWxlczoKK00vc3JjL0EuamF2YQorRW5kIG9mIGZpbGVzCitDbGVhbmluZyBvdXRwdXQgZmlsZXM6CitvdXQvcHJvZHVjdGlvbi9OL0MuY2xhc3MKK0VuZCBvZiBmaWxlcwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvY29tbW9uL2RlbGV0ZUNsYXNzMy8uaWRlYS9taXNjLnhtbCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NvbW1vbi9kZWxldGVDbGFzczMvLmlkZWEvbWlzYy54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjc5ODA5NgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NvbW1vbi9kZWxldGVDbGFzczMvLmlkZWEvbWlzYy54bWwKQEAgLTAsMCArMSwxMCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxwcm9qZWN0IHZlcnNpb249IjQiPgorICA8Y29tcG9uZW50IG5hbWU9IkVudHJ5UG9pbnRzTWFuYWdlciI+CisgICAgPGVudHJ5X3BvaW50cyB2ZXJzaW9uPSIyLjAiIC8+CisgIDwvY29tcG9uZW50PgorICA8Y29tcG9uZW50IG5hbWU9IlByb2plY3RSb290TWFuYWdlciIgdmVyc2lvbj0iMiIgbGFuZ3VhZ2VMZXZlbD0iSkRLXzFfNiIgYXNzZXJ0LWtleXdvcmQ9InRydWUiIGpkay0xNT0idHJ1ZSIgcHJvamVjdC1qZGstbmFtZT0iSURFQSBqZGsiIHByb2plY3QtamRrLXR5cGU9IkphdmFTREsiPgorICAgIDxvdXRwdXQgdXJsPSJmaWxlOi8vJFBST0pFQ1RfRElSJC9vdXQiIC8+CisgIDwvY29tcG9uZW50PgorPC9wcm9qZWN0PgorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9jb21tb24vZGVsZXRlQ2xhc3MzLy5pZGVhL21vZHVsZXMueG1sIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvY29tbW9uL2RlbGV0ZUNsYXNzMy8uaWRlYS9tb2R1bGVzLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYjAzNjFmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvY29tbW9uL2RlbGV0ZUNsYXNzMy8uaWRlYS9tb2R1bGVzLnhtbApAQCAtMCwwICsxLDEwIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPHByb2plY3QgdmVyc2lvbj0iNCI+CisgIDxjb21wb25lbnQgbmFtZT0iUHJvamVjdE1vZHVsZU1hbmFnZXIiPgorICAgIDxtb2R1bGVzPgorICAgICAgPG1vZHVsZSBmaWxldXJsPSJmaWxlOi8vJFBST0pFQ1RfRElSJC9NL00uaW1sIiBmaWxlcGF0aD0iJFBST0pFQ1RfRElSJC9NL00uaW1sIiAvPgorICAgICAgPG1vZHVsZSBmaWxldXJsPSJmaWxlOi8vJFBST0pFQ1RfRElSJC9OL04uaW1sIiBmaWxlcGF0aD0iJFBST0pFQ1RfRElSJC9OL04uaW1sIiAvPgorICAgIDwvbW9kdWxlcz4KKyAgPC9jb21wb25lbnQ+Cis8L3Byb2plY3Q+CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NvbW1vbi9kZWxldGVDbGFzczMvTS9NLmltbCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NvbW1vbi9kZWxldGVDbGFzczMvTS9NLmltbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNWMwNzQzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvY29tbW9uL2RlbGV0ZUNsYXNzMy9NL00uaW1sCkBAIC0wLDAgKzEsMTIgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8bW9kdWxlIHR5cGU9IkpBVkFfTU9EVUxFIiB2ZXJzaW9uPSI0Ij4KKyAgPGNvbXBvbmVudCBuYW1lPSJOZXdNb2R1bGVSb290TWFuYWdlciIgaW5oZXJpdC1jb21waWxlci1vdXRwdXQ9InRydWUiPgorICAgIDxleGNsdWRlLW91dHB1dCAvPgorICAgIDxjb250ZW50IHVybD0iZmlsZTovLyRNT0RVTEVfRElSJCI+CisgICAgICA8c291cmNlRm9sZGVyIHVybD0iZmlsZTovLyRNT0RVTEVfRElSJC9zcmMiIGlzVGVzdFNvdXJjZT0iZmFsc2UiIC8+CisgICAgPC9jb250ZW50PgorICAgIDxvcmRlckVudHJ5IHR5cGU9ImluaGVyaXRlZEpkayIgLz4KKyAgICA8b3JkZXJFbnRyeSB0eXBlPSJzb3VyY2VGb2xkZXIiIGZvclRlc3RzPSJmYWxzZSIgLz4KKyAgPC9jb21wb25lbnQ+Cis8L21vZHVsZT4KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvY29tbW9uL2RlbGV0ZUNsYXNzMy9NL3NyYy9BLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9jb21tb24vZGVsZXRlQ2xhc3MzL00vc3JjL0EuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZWU1ZDM5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvY29tbW9uL2RlbGV0ZUNsYXNzMy9NL3NyYy9BLmphdmEKQEAgLTAsMCArMSw5IEBACisvKioKKyAqIENyZWF0ZWQgd2l0aCBJbnRlbGxpSiBJREVBLgorICogVXNlcjogZGIKKyAqIERhdGU6IDIwLjAyLjEyCisgKiBUaW1lOiAxMjo0NworICogVG8gY2hhbmdlIHRoaXMgdGVtcGxhdGUgdXNlIEZpbGUgfCBTZXR0aW5ncyB8IEZpbGUgVGVtcGxhdGVzLgorICovCitwdWJsaWMgY2xhc3MgQSB7Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9jb21tb24vZGVsZXRlQ2xhc3MzL00vc3JjL0EuamF2YS5uZXcgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9jb21tb24vZGVsZXRlQ2xhc3MzL00vc3JjL0EuamF2YS5uZXcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTZiZTEyOAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NvbW1vbi9kZWxldGVDbGFzczMvTS9zcmMvQS5qYXZhLm5ldwpAQCAtMCwwICsxLDMgQEAKK3B1YmxpYyBjbGFzcyBBIHsKKyAgcHVibGljIEEgKGludCB4KSB7fQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NvbW1vbi9kZWxldGVDbGFzczMvTi9OLmltbCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NvbW1vbi9kZWxldGVDbGFzczMvTi9OLmltbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMDVkY2FkMAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NvbW1vbi9kZWxldGVDbGFzczMvTi9OLmltbApAQCAtMCwwICsxLDEzIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPG1vZHVsZSB0eXBlPSJKQVZBX01PRFVMRSIgdmVyc2lvbj0iNCI+CisgIDxjb21wb25lbnQgbmFtZT0iTmV3TW9kdWxlUm9vdE1hbmFnZXIiIGluaGVyaXQtY29tcGlsZXItb3V0cHV0PSJ0cnVlIj4KKyAgICA8ZXhjbHVkZS1vdXRwdXQgLz4KKyAgICA8Y29udGVudCB1cmw9ImZpbGU6Ly8kTU9EVUxFX0RJUiQiPgorICAgICAgPHNvdXJjZUZvbGRlciB1cmw9ImZpbGU6Ly8kTU9EVUxFX0RJUiQvc3JjIiBpc1Rlc3RTb3VyY2U9ImZhbHNlIiAvPgorICAgIDwvY29udGVudD4KKyAgICA8b3JkZXJFbnRyeSB0eXBlPSJpbmhlcml0ZWRKZGsiIC8+CisgICAgPG9yZGVyRW50cnkgdHlwZT0ic291cmNlRm9sZGVyIiBmb3JUZXN0cz0iZmFsc2UiIC8+CisgICAgPG9yZGVyRW50cnkgdHlwZT0ibW9kdWxlIiBtb2R1bGUtbmFtZT0iTSIgLz4KKyAgPC9jb21wb25lbnQ+Cis8L21vZHVsZT4KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvY29tbW9uL2RlbGV0ZUNsYXNzMy9OL3NyYy9DLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9jb21tb24vZGVsZXRlQ2xhc3MzL04vc3JjL0MuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZTE4MzIyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvY29tbW9uL2RlbGV0ZUNsYXNzMy9OL3NyYy9DLmphdmEKQEAgLTAsMCArMSwxMCBAQAorLyoqCisgKiBDcmVhdGVkIHdpdGggSW50ZWxsaUogSURFQS4KKyAqIFVzZXI6IGRiCisgKiBEYXRlOiAyMC4wMi4xMgorICogVGltZTogMTI6NDYKKyAqIFRvIGNoYW5nZSB0aGlzIHRlbXBsYXRlIHVzZSBGaWxlIHwgU2V0dGluZ3MgfCBGaWxlIFRlbXBsYXRlcy4KKyAqLworcHVibGljIGNsYXNzIEMgeworICAgIEEgYSA9IG5ldyBBKCk7Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9jb21tb24vZGVsZXRlQ2xhc3MzL04vc3JjL0MuamF2YS5yZW1vdmUgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9jb21tb24vZGVsZXRlQ2xhc3MzL04vc3JjL0MuamF2YS5yZW1vdmUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjk5NWE0ZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NvbW1vbi9kZWxldGVDbGFzczMvTi9zcmMvQy5qYXZhLnJlbW92ZQpAQCAtMCwwICsxIEBACitkdW1teQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NvbW1vbi9kZWxldGVDbGFzczQubG9nIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvY29tbW9uL2RlbGV0ZUNsYXNzNC5sb2cKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTJjNmJjMgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NvbW1vbi9kZWxldGVDbGFzczQubG9nCkBAIC0wLDAgKzEsOSBAQAorQ2xlYW5pbmcgb3V0cHV0IGZpbGVzOgorb3V0L3Byb2R1Y3Rpb24vRGVsZXRlQ2xhc3M0L0EuY2xhc3MKK0VuZCBvZiBmaWxlcworQ2xlYW5pbmcgb3V0cHV0IGZpbGVzOgorb3V0L3Byb2R1Y3Rpb24vRGVsZXRlQ2xhc3M0L0IuY2xhc3MKK0VuZCBvZiBmaWxlcworQ29tcGlsaW5nIGZpbGVzOgorc3JjL0IuamF2YQorRW5kIG9mIGZpbGVzCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9jb21tb24vZGVsZXRlQ2xhc3M0L0EuamF2YS5yZW1vdmUgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9jb21tb24vZGVsZXRlQ2xhc3M0L0EuamF2YS5yZW1vdmUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzYxZjRhNwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NvbW1vbi9kZWxldGVDbGFzczQvQS5qYXZhLnJlbW92ZQpAQCAtMCwwICsxIEBACis8ZHVtbXk+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvY29tbW9uL2RlbGV0ZUNsYXNzNC9zcmMvQS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvY29tbW9uL2RlbGV0ZUNsYXNzNC9zcmMvQS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhlYjNjMGUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9jb21tb24vZGVsZXRlQ2xhc3M0L3NyYy9BLmphdmEKQEAgLTAsMCArMSwzIEBACitwdWJsaWMgY2xhc3MgQSB7CisKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9jb21tb24vZGVsZXRlQ2xhc3M0L3NyYy9CLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9jb21tb24vZGVsZXRlQ2xhc3M0L3NyYy9CLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzhiNDlkMwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NvbW1vbi9kZWxldGVDbGFzczQvc3JjL0IuamF2YQpAQCAtMCwwICsxLDUgQEAKK3B1YmxpYyBjbGFzcyBCIHsKKyAgQ2xhc3MgZm9vICgpIHsKKyAgICByZXR1cm4gQS5jbGFzczsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NvbW1vbi9kZWxldGVDbGFzc0FmdGVyQ29tcGlsZUVycm9ycy5sb2cgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9jb21tb24vZGVsZXRlQ2xhc3NBZnRlckNvbXBpbGVFcnJvcnMubG9nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI0ZDM3NzMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9jb21tb24vZGVsZXRlQ2xhc3NBZnRlckNvbXBpbGVFcnJvcnMubG9nCkBAIC0wLDAgKzEsMTIgQEAKK0NsZWFuaW5nIG91dHB1dCBmaWxlczoKK291dC9wcm9kdWN0aW9uL0RlbGV0ZUNsYXNzQWZ0ZXJDb21waWxlRXJyb3JzL3BhY2thZ2VBL1NlcnZlci5jbGFzcworRW5kIG9mIGZpbGVzCitDb21waWxpbmcgZmlsZXM6CitzcmMvcGFja2FnZUEvU2VydmVyLmphdmEKK0VuZCBvZiBmaWxlcworQ2xlYW5pbmcgb3V0cHV0IGZpbGVzOgorb3V0L3Byb2R1Y3Rpb24vRGVsZXRlQ2xhc3NBZnRlckNvbXBpbGVFcnJvcnMvcGFja2FnZUEvQ2xpZW50LmNsYXNzCitFbmQgb2YgZmlsZXMKK0NvbXBpbGluZyBmaWxlczoKK3NyYy9wYWNrYWdlQS9DbGllbnQuamF2YQorRW5kIG9mIGZpbGVzCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9jb21tb24vZGVsZXRlQ2xhc3NBZnRlckNvbXBpbGVFcnJvcnMvc3JjL3BhY2thZ2VBL0NsaWVudC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvY29tbW9uL2RlbGV0ZUNsYXNzQWZ0ZXJDb21waWxlRXJyb3JzL3NyYy9wYWNrYWdlQS9DbGllbnQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZDY4NjliCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvY29tbW9uL2RlbGV0ZUNsYXNzQWZ0ZXJDb21waWxlRXJyb3JzL3NyYy9wYWNrYWdlQS9DbGllbnQuamF2YQpAQCAtMCwwICsxLDkgQEAKK3BhY2thZ2UgcGFja2FnZUE7CisKK3B1YmxpYyBjbGFzcyBDbGllbnQgeworCisgIHB1YmxpYyB2b2lkIG1ldGhvZChTZXJ2ZXIgc2VydmVyKSB7CisgICAgc2VydmVyLm1ldGhvZCgpOworICB9CisKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NvbW1vbi9kZWxldGVDbGFzc0FmdGVyQ29tcGlsZUVycm9ycy9zcmMvcGFja2FnZUEvU2VydmVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9jb21tb24vZGVsZXRlQ2xhc3NBZnRlckNvbXBpbGVFcnJvcnMvc3JjL3BhY2thZ2VBL1NlcnZlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUxNjg0MzAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9jb21tb24vZGVsZXRlQ2xhc3NBZnRlckNvbXBpbGVFcnJvcnMvc3JjL3BhY2thZ2VBL1NlcnZlci5qYXZhCkBAIC0wLDAgKzEsNyBAQAorcGFja2FnZSBwYWNrYWdlQTsKKworcHVibGljIGNsYXNzIFNlcnZlciB7CisgIHB1YmxpYyB2b2lkIG1ldGhvZCgpIHsKKyAgICBTeXN0ZW0ub3V0LnByaW50bG4oIlNlcnZlci5tZXRob2QiKTsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvY29tbW9uL2RlbGV0ZUNsYXNzQWZ0ZXJDb21waWxlRXJyb3JzL3NyYy9wYWNrYWdlQS9TZXJ2ZXIuamF2YS5uZXcgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9jb21tb24vZGVsZXRlQ2xhc3NBZnRlckNvbXBpbGVFcnJvcnMvc3JjL3BhY2thZ2VBL1NlcnZlci5qYXZhLm5ldwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZGQwNzEyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvY29tbW9uL2RlbGV0ZUNsYXNzQWZ0ZXJDb21waWxlRXJyb3JzL3NyYy9wYWNrYWdlQS9TZXJ2ZXIuamF2YS5uZXcKQEAgLTAsMCArMSw3IEBACitwYWNrYWdlIHBhY2thZ2VBOworCitwdWJsaWMgY2xhc3MgU2VydmVyIHsKKyAgcHVibGljIHZvaWQgbWV0aG9kKCkgeworICAgIFN5c3RlbS5vdXQucHJpbnRsbigiU2VydmVyLm1ldGhvZCIpOyA8c29tZS1lcnJvciE+CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NvbW1vbi9kZWxldGVDbGFzc0FmdGVyQ29tcGlsZUVycm9ycy9zcmMvcGFja2FnZUEvU2VydmVyLmphdmEucmVtb3ZlMSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NvbW1vbi9kZWxldGVDbGFzc0FmdGVyQ29tcGlsZUVycm9ycy9zcmMvcGFja2FnZUEvU2VydmVyLmphdmEucmVtb3ZlMQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNjlkZTI5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvY29tbW9uL2RlbGV0ZUNsYXNzQWZ0ZXJDb21waWxlRXJyb3JzL3NyYy9wYWNrYWdlQS9TZXJ2ZXIuamF2YS5yZW1vdmUxCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9jb21tb24vZGVsZXRlQ2xhc3NQYWNrYWdlRG9lc250TWF0Y2hSb290LmxvZyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NvbW1vbi9kZWxldGVDbGFzc1BhY2thZ2VEb2VzbnRNYXRjaFJvb3QubG9nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBhODhhZjgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9jb21tb24vZGVsZXRlQ2xhc3NQYWNrYWdlRG9lc250TWF0Y2hSb290LmxvZwpAQCAtMCwwICsxLDEwIEBACitDbGVhbmluZyBvdXRwdXQgZmlsZXM6CitvdXQvcHJvZHVjdGlvbi9EZWxldGVDbGFzc1BhY2thZ2VEb2VzbnRNYXRjaFJvb3QvcHBwL1NlcnZlciQxLmNsYXNzCitvdXQvcHJvZHVjdGlvbi9EZWxldGVDbGFzc1BhY2thZ2VEb2VzbnRNYXRjaFJvb3QvcHBwL1NlcnZlci5jbGFzcworRW5kIG9mIGZpbGVzCitDbGVhbmluZyBvdXRwdXQgZmlsZXM6CitvdXQvcHJvZHVjdGlvbi9EZWxldGVDbGFzc1BhY2thZ2VEb2VzbnRNYXRjaFJvb3QvY2xpZW50UGFja2FnZS9DbGllbnQuY2xhc3MKK0VuZCBvZiBmaWxlcworQ29tcGlsaW5nIGZpbGVzOgorc3JjL3BhY2thZ2VBL0NsaWVudC5qYXZhCitFbmQgb2YgZmlsZXMKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NvbW1vbi9kZWxldGVDbGFzc1BhY2thZ2VEb2VzbnRNYXRjaFJvb3QvZGF0YS54bWwgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9jb21tb24vZGVsZXRlQ2xhc3NQYWNrYWdlRG9lc250TWF0Y2hSb290L2RhdGEueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI4YmNmNmQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9jb21tb24vZGVsZXRlQ2xhc3NQYWNrYWdlRG9lc250TWF0Y2hSb290L2RhdGEueG1sCkBAIC0wLDAgKzEsMTcgQEAKKzx0ZXN0RGF0YT4KKworICA8ZGVsZXRlPgorICAgIDxmaWxlIHBhdGg9InNvdXJjZS9wYWNrYWdlQS9TZXJ2ZXIuamF2YSIgLz4KKyAgPC9kZWxldGU+CisKKyAgPGRlbGV0ZWRfYnlfbWFrZT4KKyAgICA8ZmlsZSBwYXRoPSJjbGFzc2VzL3BwcC9TZXJ2ZXIuY2xhc3MiIC8+CisgICAgPGZpbGUgcGF0aD0iY2xhc3Nlcy9wcHAvU2VydmVyJDEuY2xhc3MiIC8+CisgICAgPGZpbGUgcGF0aD0iY2xhc3Nlcy9jbGllbnRQYWNrYWdlL0NsaWVudC5jbGFzcyIgLz4KKyAgPC9kZWxldGVkX2J5X21ha2U+CisKKyAgPHJlY29tcGlsZT4KKyAgICA8ZmlsZSBwYXRoPSJzb3VyY2UvcGFja2FnZUEvQ2xpZW50LmphdmEiIC8+CisgIDwvcmVjb21waWxlPgorCis8L3Rlc3REYXRhPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NvbW1vbi9kZWxldGVDbGFzc1BhY2thZ2VEb2VzbnRNYXRjaFJvb3Qvc3JjL3BhY2thZ2VBL0NsaWVudC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvY29tbW9uL2RlbGV0ZUNsYXNzUGFja2FnZURvZXNudE1hdGNoUm9vdC9zcmMvcGFja2FnZUEvQ2xpZW50LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTMyMTg5YgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NvbW1vbi9kZWxldGVDbGFzc1BhY2thZ2VEb2VzbnRNYXRjaFJvb3Qvc3JjL3BhY2thZ2VBL0NsaWVudC5qYXZhCkBAIC0wLDAgKzEsMTMgQEAKKy8qKgorICogY3JlYXRlZCBhdCBKYW4gMjIsIDIwMDIKKyAqIEBhdXRob3IgSmVrYQorICovCitwYWNrYWdlIGNsaWVudFBhY2thZ2U7CitpbXBvcnQgcHBwLio7CisKK3B1YmxpYyBjbGFzcyBDbGllbnQgeworICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CisgICAgU2VydmVyIHNlcnZlciA9IG5ldyBTZXJ2ZXIoKTsKKyAgICBzZXJ2ZXIubWV0aG9kKCk7CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NvbW1vbi9kZWxldGVDbGFzc1BhY2thZ2VEb2VzbnRNYXRjaFJvb3Qvc3JjL3BhY2thZ2VBL1NlcnZlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvY29tbW9uL2RlbGV0ZUNsYXNzUGFja2FnZURvZXNudE1hdGNoUm9vdC9zcmMvcGFja2FnZUEvU2VydmVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGY4MDVjYQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NvbW1vbi9kZWxldGVDbGFzc1BhY2thZ2VEb2VzbnRNYXRjaFJvb3Qvc3JjL3BhY2thZ2VBL1NlcnZlci5qYXZhCkBAIC0wLDAgKzEsMTUgQEAKKy8qKgorICogY3JlYXRlZCBhdCBKYW4gMjIsIDIwMDIKKyAqIEBhdXRob3IgSmVrYQorICovCitwYWNrYWdlIHBwcDsKKworcHVibGljIGNsYXNzIFNlcnZlciB7CisgIHB1YmxpYyB2b2lkIG1ldGhvZCgpIHsKKyAgICBuZXcgUnVubmFibGUoKXsKKyAgICAgIHB1YmxpYyB2b2lkIHJ1bigpIHsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJTZXJ2ZXIubWV0aG9kIik7CisgICAgICB9CisgICAgfS5ydW4oKTsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvY29tbW9uL2RlbGV0ZUNsYXNzUGFja2FnZURvZXNudE1hdGNoUm9vdC9zcmMvcGFja2FnZUEvU2VydmVyLmphdmEucmVtb3ZlIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvY29tbW9uL2RlbGV0ZUNsYXNzUGFja2FnZURvZXNudE1hdGNoUm9vdC9zcmMvcGFja2FnZUEvU2VydmVyLmphdmEucmVtb3ZlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU2OWRlMjkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9jb21tb24vZGVsZXRlQ2xhc3NQYWNrYWdlRG9lc250TWF0Y2hSb290L3NyYy9wYWNrYWdlQS9TZXJ2ZXIuamF2YS5yZW1vdmUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NvbW1vbi9kZXBlbmRlbmN5VXBkYXRlLmxvZyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NvbW1vbi9kZXBlbmRlbmN5VXBkYXRlLmxvZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZjEyZmZhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvY29tbW9uL2RlcGVuZGVuY3lVcGRhdGUubG9nCkBAIC0wLDAgKzEsMTQgQEAKK0NsZWFuaW5nIG91dHB1dCBmaWxlczoKK291dC9wcm9kdWN0aW9uL0RlcGVuZGVuY3lVcGRhdGUvQS5jbGFzcworb3V0L3Byb2R1Y3Rpb24vRGVwZW5kZW5jeVVwZGF0ZS9FLmNsYXNzCitFbmQgb2YgZmlsZXMKK0NvbXBpbGluZyBmaWxlczoKK3NyYy9BLmphdmEKK3NyYy9FLmphdmEKK0VuZCBvZiBmaWxlcworQ2xlYW5pbmcgb3V0cHV0IGZpbGVzOgorb3V0L3Byb2R1Y3Rpb24vRGVwZW5kZW5jeVVwZGF0ZS9CLmNsYXNzCitFbmQgb2YgZmlsZXMKK0NvbXBpbGluZyBmaWxlczoKK3NyYy9CLmphdmEKK0VuZCBvZiBmaWxlcwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvY29tbW9uL2RlcGVuZGVuY3lVcGRhdGUvQS5qYXZhLm5ldyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NvbW1vbi9kZXBlbmRlbmN5VXBkYXRlL0EuamF2YS5uZXcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODRlNWY0MwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NvbW1vbi9kZXBlbmRlbmN5VXBkYXRlL0EuamF2YS5uZXcKQEAgLTAsMCArMSwzIEBACitpbnRlcmZhY2UgQSB7CisKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9jb21tb24vZGVwZW5kZW5jeVVwZGF0ZS9FLmphdmEubmV3IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvY29tbW9uL2RlcGVuZGVuY3lVcGRhdGUvRS5qYXZhLm5ldwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mODI2MmJjZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NvbW1vbi9kZXBlbmRlbmN5VXBkYXRlL0UuamF2YS5uZXcKQEAgLTAsMCArMSw1IEBACitjbGFzcyBFIHsKKyAgQSBmICgpIHsKKyAgICByZXR1cm4gbmV3IEEoKXt9OworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvY29tbW9uL2RlcGVuZGVuY3lVcGRhdGUvc3JjL0EuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NvbW1vbi9kZXBlbmRlbmN5VXBkYXRlL3NyYy9BLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWI0NTY4YQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NvbW1vbi9kZXBlbmRlbmN5VXBkYXRlL3NyYy9BLmphdmEKQEAgLTAsMCArMSwzIEBACitjbGFzcyBBIHsKKworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NvbW1vbi9kZXBlbmRlbmN5VXBkYXRlL3NyYy9CLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9jb21tb24vZGVwZW5kZW5jeVVwZGF0ZS9zcmMvQi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI2ODE1MzkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9jb21tb24vZGVwZW5kZW5jeVVwZGF0ZS9zcmMvQi5qYXZhCkBAIC0wLDAgKzEsMyBAQAorY2xhc3MgQjxUIGV4dGVuZHMgQT57CisKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9jb21tb24vZGVwZW5kZW5jeVVwZGF0ZS9zcmMvRS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvY29tbW9uL2RlcGVuZGVuY3lVcGRhdGUvc3JjL0UuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNzU2OTlhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvY29tbW9uL2RlcGVuZGVuY3lVcGRhdGUvc3JjL0UuamF2YQpAQCAtMCwwICsxLDUgQEAKK2NsYXNzIEUgeworICBBIGYgKCkgeworICAgIHJldHVybiBuZXcgQSgpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvY29tbW9uL2lubmVyLmxvZyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NvbW1vbi9pbm5lci5sb2cKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjBhYzg3OAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NvbW1vbi9pbm5lci5sb2cKQEAgLTAsMCArMSwxMyBAQAorQ2xlYW5pbmcgb3V0cHV0IGZpbGVzOgorb3V0L3Byb2R1Y3Rpb24vSW5uZXIvU2VydmVyLmNsYXNzCitFbmQgb2YgZmlsZXMKK0NvbXBpbGluZyBmaWxlczoKK3NyYy9TZXJ2ZXIuamF2YQorRW5kIG9mIGZpbGVzCitDbGVhbmluZyBvdXRwdXQgZmlsZXM6CitvdXQvcHJvZHVjdGlvbi9Jbm5lci9DbGllbnQkSW5uZXIuY2xhc3MKK291dC9wcm9kdWN0aW9uL0lubmVyL0NsaWVudC5jbGFzcworRW5kIG9mIGZpbGVzCitDb21waWxpbmcgZmlsZXM6CitzcmMvQ2xpZW50LmphdmEKK0VuZCBvZiBmaWxlcwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvY29tbW9uL2lubmVyL1NlcnZlci5qYXZhLm5ldyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NvbW1vbi9pbm5lci9TZXJ2ZXIuamF2YS5uZXcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDc5NmY4NQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NvbW1vbi9pbm5lci9TZXJ2ZXIuamF2YS5uZXcKQEAgLTAsMCArMSw0IEBACitjbGFzcyBTZXJ2ZXJ7CisgIHN0YXRpYyB2b2lkIGZvbyhpbnQgYSl7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9jb21tb24vaW5uZXIvc3JjL0NsaWVudC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvY29tbW9uL2lubmVyL3NyYy9DbGllbnQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMDc3M2M5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvY29tbW9uL2lubmVyL3NyYy9DbGllbnQuamF2YQpAQCAtMCwwICsxLDcgQEAKK2NsYXNzIENsaWVudHsKKyAgY2xhc3MgSW5uZXJ7CisgICAgdm9pZCBmb28oKXsKKyAgICAgIFNlcnZlci5mb28oKTsKKyAgICB9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9jb21tb24vaW5uZXIvc3JjL1NlcnZlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvY29tbW9uL2lubmVyL3NyYy9TZXJ2ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MGM3MDdiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvY29tbW9uL2lubmVyL3NyYy9TZXJ2ZXIuamF2YQpAQCAtMCwwICsxLDQgQEAKK2NsYXNzIFNlcnZlcnsKKyAgc3RhdGljIHZvaWQgZm9vKCl7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9jb21tb24vbm9SZXNvdXJjZURlbGV0ZS5sb2cgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9jb21tb24vbm9SZXNvdXJjZURlbGV0ZS5sb2cKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTY5ZGUyOQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NvbW1vbi9ub1Jlc291cmNlRGVsZXRlLmxvZwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvY29tbW9uL25vUmVzb3VyY2VEZWxldGUvc3JjL2NvbS90dHQucHJvcGVydGllcyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NvbW1vbi9ub1Jlc291cmNlRGVsZXRlL3NyYy9jb20vdHR0LnByb3BlcnRpZXMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzBkNzRkMgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NvbW1vbi9ub1Jlc291cmNlRGVsZXRlL3NyYy9jb20vdHR0LnByb3BlcnRpZXMKQEAgLTAsMCArMSBAQAordGVzdApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NvbW1vbi9ub1NlY29uZEZpbGVDb21waWxlLmxvZyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NvbW1vbi9ub1NlY29uZEZpbGVDb21waWxlLmxvZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMTA2Y2NhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvY29tbW9uL25vU2Vjb25kRmlsZUNvbXBpbGUubG9nCkBAIC0wLDAgKzEsOSBAQAorQ2xlYW5pbmcgb3V0cHV0IGZpbGVzOgorb3V0L3Byb2R1Y3Rpb24vTm9TZWNvbmRGaWxlQ29tcGlsZS9BLmNsYXNzCitvdXQvcHJvZHVjdGlvbi9Ob1NlY29uZEZpbGVDb21waWxlL0IuY2xhc3MKK291dC9wcm9kdWN0aW9uL05vU2Vjb25kRmlsZUNvbXBpbGUvQy5jbGFzcworRW5kIG9mIGZpbGVzCitDb21waWxpbmcgZmlsZXM6CitzcmMvQS5qYXZhCitzcmMvQy5qYXZhCitFbmQgb2YgZmlsZXMKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NvbW1vbi9ub1NlY29uZEZpbGVDb21waWxlL0EuamF2YS5uZXcgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9jb21tb24vbm9TZWNvbmRGaWxlQ29tcGlsZS9BLmphdmEubmV3Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcyMDVjZDAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9jb21tb24vbm9TZWNvbmRGaWxlQ29tcGlsZS9BLmphdmEubmV3CkBAIC0wLDAgKzEsMyBAQAorCitwdWJsaWMgY2xhc3MgQSB7Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9jb21tb24vbm9TZWNvbmRGaWxlQ29tcGlsZS9DLmphdmEubmV3IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvY29tbW9uL25vU2Vjb25kRmlsZUNvbXBpbGUvQy5qYXZhLm5ldwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YmNmOGU1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvY29tbW9uL25vU2Vjb25kRmlsZUNvbXBpbGUvQy5qYXZhLm5ldwpAQCAtMCwwICsxLDUgQEAKKworcHVibGljIGNsYXNzIEMgeworICBwdWJsaWMgQyhpbnQgYSkgeworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvY29tbW9uL25vU2Vjb25kRmlsZUNvbXBpbGUvc3JjL0EuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NvbW1vbi9ub1NlY29uZEZpbGVDb21waWxlL3NyYy9BLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzI1ZjA3YQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NvbW1vbi9ub1NlY29uZEZpbGVDb21waWxlL3NyYy9BLmphdmEKQEAgLTAsMCArMSw5IEBACisKK3B1YmxpYyBjbGFzcyBBIHsKK30KKworY2xhc3MgQnsKKyAgeworICAgIG5ldyBDKCk7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9jb21tb24vbm9TZWNvbmRGaWxlQ29tcGlsZS9zcmMvQy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvY29tbW9uL25vU2Vjb25kRmlsZUNvbXBpbGUvc3JjL0MuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYzJmNmI0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvY29tbW9uL25vU2Vjb25kRmlsZUNvbXBpbGUvc3JjL0MuamF2YQpAQCAtMCwwICsxLDUgQEAKKworcHVibGljIGNsYXNzIEMgeworICBwdWJsaWMgQygpIHsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NvbW1vbi9ub1NlY29uZEZpbGVDb21waWxlMS5sb2cgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9jb21tb24vbm9TZWNvbmRGaWxlQ29tcGlsZTEubG9nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZiYmJiNGYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9jb21tb24vbm9TZWNvbmRGaWxlQ29tcGlsZTEubG9nCkBAIC0wLDAgKzEsOSBAQAorQ2xlYW5pbmcgb3V0cHV0IGZpbGVzOgorb3V0L3Byb2R1Y3Rpb24vTm9TZWNvbmRGaWxlQ29tcGlsZTEvQS5jbGFzcworb3V0L3Byb2R1Y3Rpb24vTm9TZWNvbmRGaWxlQ29tcGlsZTEvQi5jbGFzcworb3V0L3Byb2R1Y3Rpb24vTm9TZWNvbmRGaWxlQ29tcGlsZTEvQy5jbGFzcworRW5kIG9mIGZpbGVzCitDb21waWxpbmcgZmlsZXM6CitzcmMvQS5qYXZhCitzcmMvQy5qYXZhCitFbmQgb2YgZmlsZXMKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NvbW1vbi9ub1NlY29uZEZpbGVDb21waWxlMS9BLmphdmEubmV3IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvY29tbW9uL25vU2Vjb25kRmlsZUNvbXBpbGUxL0EuamF2YS5uZXcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmIzMWE3MAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NvbW1vbi9ub1NlY29uZEZpbGVDb21waWxlMS9BLmphdmEubmV3CkBAIC0wLDAgKzEsOSBAQAorCitwdWJsaWMgY2xhc3MgQSB7Cit9CisKK2NsYXNzIEJ7CisgIHsKKyAgICBuZXcgQygxMCk7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9jb21tb24vbm9TZWNvbmRGaWxlQ29tcGlsZTEvQy5qYXZhLm5ldyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NvbW1vbi9ub1NlY29uZEZpbGVDb21waWxlMS9DLmphdmEubmV3Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhiY2Y4ZTUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9jb21tb24vbm9TZWNvbmRGaWxlQ29tcGlsZTEvQy5qYXZhLm5ldwpAQCAtMCwwICsxLDUgQEAKKworcHVibGljIGNsYXNzIEMgeworICBwdWJsaWMgQyhpbnQgYSkgeworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvY29tbW9uL25vU2Vjb25kRmlsZUNvbXBpbGUxL3NyYy9BLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9jb21tb24vbm9TZWNvbmRGaWxlQ29tcGlsZTEvc3JjL0EuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMjVmMDdhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvY29tbW9uL25vU2Vjb25kRmlsZUNvbXBpbGUxL3NyYy9BLmphdmEKQEAgLTAsMCArMSw5IEBACisKK3B1YmxpYyBjbGFzcyBBIHsKK30KKworY2xhc3MgQnsKKyAgeworICAgIG5ldyBDKCk7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9jb21tb24vbm9TZWNvbmRGaWxlQ29tcGlsZTEvc3JjL0MuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NvbW1vbi9ub1NlY29uZEZpbGVDb21waWxlMS9zcmMvQy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFjMmY2YjQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9jb21tb24vbm9TZWNvbmRGaWxlQ29tcGlsZTEvc3JjL0MuamF2YQpAQCAtMCwwICsxLDUgQEAKKworcHVibGljIGNsYXNzIEMgeworICBwdWJsaWMgQygpIHsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NvbXBpbGVQYWNrYWdlL3N5bmNocm9uaXplT3V0cHV0L2EvQS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvY29tcGlsZVBhY2thZ2Uvc3luY2hyb25pemVPdXRwdXQvYS9BLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODQxMzBhMwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NvbXBpbGVQYWNrYWdlL3N5bmNocm9uaXplT3V0cHV0L2EvQS5qYXZhCkBAIC0wLDAgKzEsMyBAQAorcGFja2FnZSBhOworY2xhc3MgQSB7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvY29tcGlsZVBhY2thZ2Uvc3luY2hyb25pemVPdXRwdXQvYWIvQi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvY29tcGlsZVBhY2thZ2Uvc3luY2hyb25pemVPdXRwdXQvYWIvQi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVjZmQyYzY4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvY29tcGlsZVBhY2thZ2Uvc3luY2hyb25pemVPdXRwdXQvYWIvQi5qYXZhCkBAIC0wLDAgKzEsMyBAQAorcGFja2FnZSBhYjsKK2NsYXNzIEIgeworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NvbXBpbGVQYWNrYWdlL3N5bmNocm9uaXplT3V0cHV0L2RhdGEueG1sIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvY29tcGlsZVBhY2thZ2Uvc3luY2hyb25pemVPdXRwdXQvZGF0YS54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2M3OWMzNQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2NvbXBpbGVQYWNrYWdlL3N5bmNocm9uaXplT3V0cHV0L2RhdGEueG1sCkBAIC0wLDAgKzEsMTAgQEAKKzx0ZXN0RGF0YT4KKworICA8ZGVsZXRlZF9ieV9tYWtlPgorICAgIDxmaWxlIHBhdGg9ImNsYXNzZXMvYS9BLmNsYXNzIiAvPgorICA8L2RlbGV0ZWRfYnlfbWFrZT4KKworICA8cmVjb21waWxlPgorICAgIDxmaWxlIHBhdGg9InNvdXJjZS9hL0EuamF2YSIgLz4KKyAgPC9yZWNvbXBpbGU+Cis8L3Rlc3REYXRhPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2ZpZWxkTW9kaWZpZXJzL3NldEZpbmFsLmxvZyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2ZpZWxkTW9kaWZpZXJzL3NldEZpbmFsLmxvZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZWFjMzExCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZmllbGRNb2RpZmllcnMvc2V0RmluYWwubG9nCkBAIC0wLDAgKzEsMTQgQEAKK0NsZWFuaW5nIG91dHB1dCBmaWxlczoKK291dC9wcm9kdWN0aW9uL1NldEZpbmFsL0Jhc2UuY2xhc3MKK0VuZCBvZiBmaWxlcworQ29tcGlsaW5nIGZpbGVzOgorc3JjL0Jhc2UuamF2YQorRW5kIG9mIGZpbGVzCitDbGVhbmluZyBvdXRwdXQgZmlsZXM6CitvdXQvcHJvZHVjdGlvbi9TZXRGaW5hbC9DbGllbnQxLmNsYXNzCitvdXQvcHJvZHVjdGlvbi9TZXRGaW5hbC9DbGllbnQyLmNsYXNzCitFbmQgb2YgZmlsZXMKK0NvbXBpbGluZyBmaWxlczoKK3NyYy9DbGllbnQxLmphdmEKK3NyYy9DbGllbnQyLmphdmEKK0VuZCBvZiBmaWxlcwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZmllbGRNb2RpZmllcnMvc2V0RmluYWwvQmFzZS5qYXZhLm5ldyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2ZpZWxkTW9kaWZpZXJzL3NldEZpbmFsL0Jhc2UuamF2YS5uZXcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzlhNjFmNwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2ZpZWxkTW9kaWZpZXJzL3NldEZpbmFsL0Jhc2UuamF2YS5uZXcKQEAgLTAsMCArMSwzIEBACitjbGFzcyBCYXNlIHsKKyAgZmluYWwgc3RhdGljIGNoYXIgcyA9ICdnJzsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9maWVsZE1vZGlmaWVycy9zZXRGaW5hbC9zcmMvQmFzZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZmllbGRNb2RpZmllcnMvc2V0RmluYWwvc3JjL0Jhc2UuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMDE3ZDkxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZmllbGRNb2RpZmllcnMvc2V0RmluYWwvc3JjL0Jhc2UuamF2YQpAQCAtMCwwICsxLDMgQEAKK2NsYXNzIEJhc2UgeworICBzdGF0aWMgY2hhciBzOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2ZpZWxkTW9kaWZpZXJzL3NldEZpbmFsL3NyYy9DbGllbnQxLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9maWVsZE1vZGlmaWVycy9zZXRGaW5hbC9zcmMvQ2xpZW50MS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNkNDgyNTUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9maWVsZE1vZGlmaWVycy9zZXRGaW5hbC9zcmMvQ2xpZW50MS5qYXZhCkBAIC0wLDAgKzEsNSBAQAorY2xhc3MgQ2xpZW50MSBleHRlbmRzIEJhc2UgeworICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKXsKKyAgICBzID0gJ2EnOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZmllbGRNb2RpZmllcnMvc2V0RmluYWwvc3JjL0NsaWVudDIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2ZpZWxkTW9kaWZpZXJzL3NldEZpbmFsL3NyYy9DbGllbnQyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmMyMGFjZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2ZpZWxkTW9kaWZpZXJzL3NldEZpbmFsL3NyYy9DbGllbnQyLmphdmEKQEAgLTAsMCArMSw1IEBACitjbGFzcyBDbGllbnQyIHsKKyAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncyl7CisgICAgQmFzZS5zID0gJ2EnOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZmllbGRNb2RpZmllcnMvc2V0RmluYWwvc3JjL0NsaWVudDMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2ZpZWxkTW9kaWZpZXJzL3NldEZpbmFsL3NyYy9DbGllbnQzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWI5ZTI4MgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2ZpZWxkTW9kaWZpZXJzL3NldEZpbmFsL3NyYy9DbGllbnQzLmphdmEKQEAgLTAsMCArMSwzIEBACitwdWJsaWMgY2xhc3MgQ2xpZW50MyB7CisgICAgY2hhciBjID0gQmFzZS5zOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2ZpZWxkTW9kaWZpZXJzL3NldFByaXZhdGUubG9nIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZmllbGRNb2RpZmllcnMvc2V0UHJpdmF0ZS5sb2cKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWQ2N2JjNwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2ZpZWxkTW9kaWZpZXJzL3NldFByaXZhdGUubG9nCkBAIC0wLDAgKzEsMTIgQEAKK0NsZWFuaW5nIG91dHB1dCBmaWxlczoKK291dC9wcm9kdWN0aW9uL1NldFByaXZhdGUvQS5jbGFzcworRW5kIG9mIGZpbGVzCitDb21waWxpbmcgZmlsZXM6CitzcmMvQS5qYXZhCitFbmQgb2YgZmlsZXMKK0NsZWFuaW5nIG91dHB1dCBmaWxlczoKK291dC9wcm9kdWN0aW9uL1NldFByaXZhdGUvQi5jbGFzcworRW5kIG9mIGZpbGVzCitDb21waWxpbmcgZmlsZXM6CitzcmMvQi5qYXZhCitFbmQgb2YgZmlsZXMKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2ZpZWxkTW9kaWZpZXJzL3NldFByaXZhdGUvQS5qYXZhLm5ldyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2ZpZWxkTW9kaWZpZXJzL3NldFByaXZhdGUvQS5qYXZhLm5ldwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYzg5NjcwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZmllbGRNb2RpZmllcnMvc2V0UHJpdmF0ZS9BLmphdmEubmV3CkBAIC0wLDAgKzEsMyBAQAorcHVibGljIGNsYXNzIEEgeworICAgIHByaXZhdGUgaW50IHg7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZmllbGRNb2RpZmllcnMvc2V0UHJpdmF0ZS9zcmMvQS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZmllbGRNb2RpZmllcnMvc2V0UHJpdmF0ZS9zcmMvQS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMwNTQxNzUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9maWVsZE1vZGlmaWVycy9zZXRQcml2YXRlL3NyYy9BLmphdmEKQEAgLTAsMCArMSwzIEBACitwdWJsaWMgY2xhc3MgQSB7CisgICAgcHVibGljIGludCB4OworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2ZpZWxkTW9kaWZpZXJzL3NldFByaXZhdGUvc3JjL0IuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2ZpZWxkTW9kaWZpZXJzL3NldFByaXZhdGUvc3JjL0IuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40OTk4OTNhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZmllbGRNb2RpZmllcnMvc2V0UHJpdmF0ZS9zcmMvQi5qYXZhCkBAIC0wLDAgKzEsNSBAQAorcHVibGljIGNsYXNzIEIgeworICAgIHZvaWQgZiAoQSBhKSB7CisgICAgICAgIGludCB5ID0gYS54OworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9maWVsZE1vZGlmaWVycy9zZXRQcm90ZWN0ZWQubG9nIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZmllbGRNb2RpZmllcnMvc2V0UHJvdGVjdGVkLmxvZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNjVkYTkzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZmllbGRNb2RpZmllcnMvc2V0UHJvdGVjdGVkLmxvZwpAQCAtMCwwICsxLDEyIEBACitDbGVhbmluZyBvdXRwdXQgZmlsZXM6CitvdXQvcHJvZHVjdGlvbi9TZXRQcm90ZWN0ZWQvQS5jbGFzcworRW5kIG9mIGZpbGVzCitDb21waWxpbmcgZmlsZXM6CitzcmMvQS5qYXZhCitFbmQgb2YgZmlsZXMKK0NsZWFuaW5nIG91dHB1dCBmaWxlczoKK291dC9wcm9kdWN0aW9uL1NldFByb3RlY3RlZC9CLmNsYXNzCitFbmQgb2YgZmlsZXMKK0NvbXBpbGluZyBmaWxlczoKK3NyYy9CLmphdmEKK0VuZCBvZiBmaWxlcwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZmllbGRNb2RpZmllcnMvc2V0UHJvdGVjdGVkL0EuamF2YS5uZXcgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9maWVsZE1vZGlmaWVycy9zZXRQcm90ZWN0ZWQvQS5qYXZhLm5ldwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41N2IxMGI3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZmllbGRNb2RpZmllcnMvc2V0UHJvdGVjdGVkL0EuamF2YS5uZXcKQEAgLTAsMCArMSwzIEBACitwdWJsaWMgY2xhc3MgQSB7CisgICAgcHJvdGVjdGVkIGludCB4OworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2ZpZWxkTW9kaWZpZXJzL3NldFByb3RlY3RlZC9zcmMvQS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZmllbGRNb2RpZmllcnMvc2V0UHJvdGVjdGVkL3NyYy9BLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzA1NDE3NQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2ZpZWxkTW9kaWZpZXJzL3NldFByb3RlY3RlZC9zcmMvQS5qYXZhCkBAIC0wLDAgKzEsMyBAQAorcHVibGljIGNsYXNzIEEgeworICAgIHB1YmxpYyBpbnQgeDsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9maWVsZE1vZGlmaWVycy9zZXRQcm90ZWN0ZWQvc3JjL0IuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2ZpZWxkTW9kaWZpZXJzL3NldFByb3RlY3RlZC9zcmMvQi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ5OTg5M2EKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9maWVsZE1vZGlmaWVycy9zZXRQcm90ZWN0ZWQvc3JjL0IuamF2YQpAQCAtMCwwICsxLDUgQEAKK3B1YmxpYyBjbGFzcyBCIHsKKyAgICB2b2lkIGYgKEEgYSkgeworICAgICAgICBpbnQgeSA9IGEueDsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZmllbGRNb2RpZmllcnMvc2V0UHJvdGVjdGVkL3NyYy9DLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9maWVsZE1vZGlmaWVycy9zZXRQcm90ZWN0ZWQvc3JjL0MuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MGJhNGQwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZmllbGRNb2RpZmllcnMvc2V0UHJvdGVjdGVkL3NyYy9DLmphdmEKQEAgLTAsMCArMSw1IEBACitwdWJsaWMgY2xhc3MgQyBleHRlbmRzIEEgeworICAgIGludCBmICgpeworICAgICAgICByZXR1cm4geDsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZmllbGRNb2RpZmllcnMvc2V0U3RhdGljLmxvZyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2ZpZWxkTW9kaWZpZXJzL3NldFN0YXRpYy5sb2cKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDA5MjQ2OAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2ZpZWxkTW9kaWZpZXJzL3NldFN0YXRpYy5sb2cKQEAgLTAsMCArMSwxNCBAQAorQ2xlYW5pbmcgb3V0cHV0IGZpbGVzOgorb3V0L3Byb2R1Y3Rpb24vU2V0U3RhdGljL0Jhc2UuY2xhc3MKK0VuZCBvZiBmaWxlcworQ29tcGlsaW5nIGZpbGVzOgorc3JjL0Jhc2UuamF2YQorRW5kIG9mIGZpbGVzCitDbGVhbmluZyBvdXRwdXQgZmlsZXM6CitvdXQvcHJvZHVjdGlvbi9TZXRTdGF0aWMvQ2xpZW50MS5jbGFzcworb3V0L3Byb2R1Y3Rpb24vU2V0U3RhdGljL0NsaWVudDIuY2xhc3MKK0VuZCBvZiBmaWxlcworQ29tcGlsaW5nIGZpbGVzOgorc3JjL0NsaWVudDEuamF2YQorc3JjL0NsaWVudDIuamF2YQorRW5kIG9mIGZpbGVzCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9maWVsZE1vZGlmaWVycy9zZXRTdGF0aWMvQmFzZS5qYXZhLm5ldyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2ZpZWxkTW9kaWZpZXJzL3NldFN0YXRpYy9CYXNlLmphdmEubmV3Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIwMTdkOTEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9maWVsZE1vZGlmaWVycy9zZXRTdGF0aWMvQmFzZS5qYXZhLm5ldwpAQCAtMCwwICsxLDMgQEAKK2NsYXNzIEJhc2UgeworICBzdGF0aWMgY2hhciBzOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2ZpZWxkTW9kaWZpZXJzL3NldFN0YXRpYy9zcmMvQmFzZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZmllbGRNb2RpZmllcnMvc2V0U3RhdGljL3NyYy9CYXNlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmU2ODYwMAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2ZpZWxkTW9kaWZpZXJzL3NldFN0YXRpYy9zcmMvQmFzZS5qYXZhCkBAIC0wLDAgKzEsMyBAQAorY2xhc3MgQmFzZSB7CisgIGNoYXIgczsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9maWVsZE1vZGlmaWVycy9zZXRTdGF0aWMvc3JjL0NsaWVudDEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2ZpZWxkTW9kaWZpZXJzL3NldFN0YXRpYy9zcmMvQ2xpZW50MS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUwYmE0NTYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9maWVsZE1vZGlmaWVycy9zZXRTdGF0aWMvc3JjL0NsaWVudDEuamF2YQpAQCAtMCwwICsxLDUgQEAKK2NsYXNzIENsaWVudDEgZXh0ZW5kcyBCYXNlIHsKKyAgdm9pZCBmb28oKSB7CisgICAgcyA9ICdhJzsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2ZpZWxkTW9kaWZpZXJzL3NldFN0YXRpYy9zcmMvQ2xpZW50Mi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZmllbGRNb2RpZmllcnMvc2V0U3RhdGljL3NyYy9DbGllbnQyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzc1MzAzMgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2ZpZWxkTW9kaWZpZXJzL3NldFN0YXRpYy9zcmMvQ2xpZW50Mi5qYXZhCkBAIC0wLDAgKzEsNSBAQAorY2xhc3MgQ2xpZW50MiB7CisgIHZvaWQgZm9vKCkgeworICAgIG5ldyBCYXNlKCkucyA9ICdhJzsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2ZpZWxkTW9kaWZpZXJzL3Vuc2V0U3RhdGljLmxvZyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2ZpZWxkTW9kaWZpZXJzL3Vuc2V0U3RhdGljLmxvZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYzdjZWRmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZmllbGRNb2RpZmllcnMvdW5zZXRTdGF0aWMubG9nCkBAIC0wLDAgKzEsMTQgQEAKK0NsZWFuaW5nIG91dHB1dCBmaWxlczoKK291dC9wcm9kdWN0aW9uL1Vuc2V0U3RhdGljL0Jhc2UuY2xhc3MKK0VuZCBvZiBmaWxlcworQ29tcGlsaW5nIGZpbGVzOgorc3JjL0Jhc2UuamF2YQorRW5kIG9mIGZpbGVzCitDbGVhbmluZyBvdXRwdXQgZmlsZXM6CitvdXQvcHJvZHVjdGlvbi9VbnNldFN0YXRpYy9DbGllbnQxLmNsYXNzCitvdXQvcHJvZHVjdGlvbi9VbnNldFN0YXRpYy9DbGllbnQyLmNsYXNzCitFbmQgb2YgZmlsZXMKK0NvbXBpbGluZyBmaWxlczoKK3NyYy9DbGllbnQxLmphdmEKK3NyYy9DbGllbnQyLmphdmEKK0VuZCBvZiBmaWxlcwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZmllbGRNb2RpZmllcnMvdW5zZXRTdGF0aWMvQmFzZS5qYXZhLm5ldyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2ZpZWxkTW9kaWZpZXJzL3Vuc2V0U3RhdGljL0Jhc2UuamF2YS5uZXcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmU2ODYwMAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2ZpZWxkTW9kaWZpZXJzL3Vuc2V0U3RhdGljL0Jhc2UuamF2YS5uZXcKQEAgLTAsMCArMSwzIEBACitjbGFzcyBCYXNlIHsKKyAgY2hhciBzOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2ZpZWxkTW9kaWZpZXJzL3Vuc2V0U3RhdGljL3NyYy9CYXNlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9maWVsZE1vZGlmaWVycy91bnNldFN0YXRpYy9zcmMvQmFzZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIwMTdkOTEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9maWVsZE1vZGlmaWVycy91bnNldFN0YXRpYy9zcmMvQmFzZS5qYXZhCkBAIC0wLDAgKzEsMyBAQAorY2xhc3MgQmFzZSB7CisgIHN0YXRpYyBjaGFyIHM7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZmllbGRNb2RpZmllcnMvdW5zZXRTdGF0aWMvc3JjL0NsaWVudDEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2ZpZWxkTW9kaWZpZXJzL3Vuc2V0U3RhdGljL3NyYy9DbGllbnQxLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTYxZGYwYwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2ZpZWxkTW9kaWZpZXJzL3Vuc2V0U3RhdGljL3NyYy9DbGllbnQxLmphdmEKQEAgLTAsMCArMSw1IEBACitjbGFzcyBDbGllbnQxIGV4dGVuZHMgQmFzZSB7CisgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKKyAgICBTeXN0ZW0ub3V0LnByaW50bG4ocyk7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9maWVsZE1vZGlmaWVycy91bnNldFN0YXRpYy9zcmMvQ2xpZW50Mi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZmllbGRNb2RpZmllcnMvdW5zZXRTdGF0aWMvc3JjL0NsaWVudDIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hY2UwM2M1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZmllbGRNb2RpZmllcnMvdW5zZXRTdGF0aWMvc3JjL0NsaWVudDIuamF2YQpAQCAtMCwwICsxLDUgQEAKK2NsYXNzIENsaWVudDIgeworICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CisgICAgU3lzdGVtLm91dC5wcmludGxuKEJhc2Uucyk7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9maWVsZE1vZGlmaWVycy91bnNldFN0YXRpY0ZpbmFsLmxvZyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2ZpZWxkTW9kaWZpZXJzL3Vuc2V0U3RhdGljRmluYWwubG9nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ4MDY1YTUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9maWVsZE1vZGlmaWVycy91bnNldFN0YXRpY0ZpbmFsLmxvZwpAQCAtMCwwICsxLDEyIEBACitDbGVhbmluZyBvdXRwdXQgZmlsZXM6CitvdXQvcHJvZHVjdGlvbi9VbnNldFN0YXRpY0ZpbmFsL1NlcnZlci5jbGFzcworRW5kIG9mIGZpbGVzCitDb21waWxpbmcgZmlsZXM6CitzcmMvU2VydmVyLmphdmEKK0VuZCBvZiBmaWxlcworQ2xlYW5pbmcgb3V0cHV0IGZpbGVzOgorb3V0L3Byb2R1Y3Rpb24vVW5zZXRTdGF0aWNGaW5hbC9DbGllbnQuY2xhc3MKK0VuZCBvZiBmaWxlcworQ29tcGlsaW5nIGZpbGVzOgorc3JjL0NsaWVudC5qYXZhCitFbmQgb2YgZmlsZXMKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2ZpZWxkTW9kaWZpZXJzL3Vuc2V0U3RhdGljRmluYWwvU2VydmVyLmphdmEubmV3IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZmllbGRNb2RpZmllcnMvdW5zZXRTdGF0aWNGaW5hbC9TZXJ2ZXIuamF2YS5uZXcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmU1NzllOAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2ZpZWxkTW9kaWZpZXJzL3Vuc2V0U3RhdGljRmluYWwvU2VydmVyLmphdmEubmV3CkBAIC0wLDAgKzEsMyBAQAorY2xhc3MgU2VydmVyIHsKKyAgc3RhdGljIFN0cmluZyBzID0gIlN0YXRpYyI7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZmllbGRNb2RpZmllcnMvdW5zZXRTdGF0aWNGaW5hbC9zcmMvQ2xpZW50LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9maWVsZE1vZGlmaWVycy91bnNldFN0YXRpY0ZpbmFsL3NyYy9DbGllbnQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZGQ2YTFiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZmllbGRNb2RpZmllcnMvdW5zZXRTdGF0aWNGaW5hbC9zcmMvQ2xpZW50LmphdmEKQEAgLTAsMCArMSw1IEBACitjbGFzcyBDbGllbnQgeworICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CisgICAgU3lzdGVtLm91dC5wcmludGxuKFNlcnZlci5zKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2ZpZWxkTW9kaWZpZXJzL3Vuc2V0U3RhdGljRmluYWwvc3JjL1NlcnZlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZmllbGRNb2RpZmllcnMvdW5zZXRTdGF0aWNGaW5hbC9zcmMvU2VydmVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGEyNGYxYgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2ZpZWxkTW9kaWZpZXJzL3Vuc2V0U3RhdGljRmluYWwvc3JjL1NlcnZlci5qYXZhCkBAIC0wLDAgKzEsMyBAQAorY2xhc3MgU2VydmVyIHsKKyAgc3RhdGljIGZpbmFsIFN0cmluZyBzID0gIlN0YXRpY0ZpbmFsIjsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9maWVsZFByb3BlcnRpZXMvY29uc3RhbnRDaGFpbi5sb2cgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9maWVsZFByb3BlcnRpZXMvY29uc3RhbnRDaGFpbi5sb2cKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzcyNDVmMgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2ZpZWxkUHJvcGVydGllcy9jb25zdGFudENoYWluLmxvZwpAQCAtMCwwICsxLDE0IEBACitDbGVhbmluZyBvdXRwdXQgZmlsZXM6CitvdXQvcHJvZHVjdGlvbi9Db25zdGFudENoYWluL1NlcnZlci5jbGFzcworRW5kIG9mIGZpbGVzCitDb21waWxpbmcgZmlsZXM6CitzcmMvU2VydmVyLmphdmEKK0VuZCBvZiBmaWxlcworQ2xlYW5pbmcgb3V0cHV0IGZpbGVzOgorb3V0L3Byb2R1Y3Rpb24vQ29uc3RhbnRDaGFpbi9DbGllbnQuY2xhc3MKK291dC9wcm9kdWN0aW9uL0NvbnN0YW50Q2hhaW4vU2VydmVyQ2xpZW50LmNsYXNzCitFbmQgb2YgZmlsZXMKK0NvbXBpbGluZyBmaWxlczoKK3NyYy9DbGllbnQuamF2YQorc3JjL1NlcnZlckNsaWVudC5qYXZhCitFbmQgb2YgZmlsZXMKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2ZpZWxkUHJvcGVydGllcy9jb25zdGFudENoYWluL1NlcnZlci5qYXZhLm5ldyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2ZpZWxkUHJvcGVydGllcy9jb25zdGFudENoYWluL1NlcnZlci5qYXZhLm5ldwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZTdhMTIwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZmllbGRQcm9wZXJ0aWVzL2NvbnN0YW50Q2hhaW4vU2VydmVyLmphdmEubmV3CkBAIC0wLDAgKzEsMyBAQAorY2xhc3MgU2VydmVyIHsKKyAgc3RhdGljIGZpbmFsIGludCB2YXIgPSA1MDA7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZmllbGRQcm9wZXJ0aWVzL2NvbnN0YW50Q2hhaW4vc3JjL0NsaWVudC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZmllbGRQcm9wZXJ0aWVzL2NvbnN0YW50Q2hhaW4vc3JjL0NsaWVudC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI3ZGNlMTcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9maWVsZFByb3BlcnRpZXMvY29uc3RhbnRDaGFpbi9zcmMvQ2xpZW50LmphdmEKQEAgLTAsMCArMSw1IEBACitjbGFzcyBDbGllbnQgeworICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CisgICAgU3lzdGVtLm91dC5wcmludGxuKFNlcnZlckNsaWVudC52YXIpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZmllbGRQcm9wZXJ0aWVzL2NvbnN0YW50Q2hhaW4vc3JjL1NlcnZlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZmllbGRQcm9wZXJ0aWVzL2NvbnN0YW50Q2hhaW4vc3JjL1NlcnZlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI4MmQ0MmEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9maWVsZFByb3BlcnRpZXMvY29uc3RhbnRDaGFpbi9zcmMvU2VydmVyLmphdmEKQEAgLTAsMCArMSwzIEBACitjbGFzcyBTZXJ2ZXIgeworICBzdGF0aWMgZmluYWwgaW50IHZhciA9IDEwMDsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9maWVsZFByb3BlcnRpZXMvY29uc3RhbnRDaGFpbi9zcmMvU2VydmVyQ2xpZW50LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9maWVsZFByb3BlcnRpZXMvY29uc3RhbnRDaGFpbi9zcmMvU2VydmVyQ2xpZW50LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTgzOTdlNgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2ZpZWxkUHJvcGVydGllcy9jb25zdGFudENoYWluL3NyYy9TZXJ2ZXJDbGllbnQuamF2YQpAQCAtMCwwICsxLDMgQEAKK2NsYXNzIFNlcnZlckNsaWVudCB7CisgIHN0YXRpYyBmaW5hbCBpbnQgdmFyID0gU2VydmVyLnZhciAqIDEwMDA7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZmllbGRQcm9wZXJ0aWVzL2NvbnN0YW50Q2hhaW4xLmxvZyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2ZpZWxkUHJvcGVydGllcy9jb25zdGFudENoYWluMS5sb2cKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTA2ZmVhNAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2ZpZWxkUHJvcGVydGllcy9jb25zdGFudENoYWluMS5sb2cKQEAgLTAsMCArMSwxOCBAQAorQ2xlYW5pbmcgb3V0cHV0IGZpbGVzOgorb3V0L3Byb2R1Y3Rpb24vQ29uc3RhbnRDaGFpbjEvQS5jbGFzcworRW5kIG9mIGZpbGVzCitDb21waWxpbmcgZmlsZXM6CitzcmMvQS5qYXZhCitFbmQgb2YgZmlsZXMKK0NsZWFuaW5nIG91dHB1dCBmaWxlczoKK291dC9wcm9kdWN0aW9uL0NvbnN0YW50Q2hhaW4xL0EuY2xhc3MKK291dC9wcm9kdWN0aW9uL0NvbnN0YW50Q2hhaW4xL0IuY2xhc3MKK291dC9wcm9kdWN0aW9uL0NvbnN0YW50Q2hhaW4xL0MuY2xhc3MKK291dC9wcm9kdWN0aW9uL0NvbnN0YW50Q2hhaW4xL0NsaWVudC5jbGFzcworRW5kIG9mIGZpbGVzCitDb21waWxpbmcgZmlsZXM6CitzcmMvQS5qYXZhCitzcmMvQi5qYXZhCitzcmMvQy5qYXZhCitzcmMvQ2xpZW50LmphdmEKK0VuZCBvZiBmaWxlcwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZmllbGRQcm9wZXJ0aWVzL2NvbnN0YW50Q2hhaW4xL0EuamF2YS5uZXcgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9maWVsZFByb3BlcnRpZXMvY29uc3RhbnRDaGFpbjEvQS5qYXZhLm5ldwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMjEwYjlmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZmllbGRQcm9wZXJ0aWVzL2NvbnN0YW50Q2hhaW4xL0EuamF2YS5uZXcKQEAgLTAsMCArMSw3IEBACitpbnRlcmZhY2UgQSB7CisgIHN0YXRpYyBmaW5hbCBzaG9ydCB2YXIwID0gMTAwOworICBzdGF0aWMgZmluYWwgc2hvcnQgdmFyMSA9IHZhcjAgKyAxOworICBzdGF0aWMgZmluYWwgc2hvcnQgdmFyMTIgPSB2YXIxICsgMTsKKyAgc3RhdGljIGZpbmFsIHNob3J0IHZhcjIgPSB2YXIxMiArIDE7CisgIHN0YXRpYyBmaW5hbCBzaG9ydCBsYXN0ID0gdmFyMjsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9maWVsZFByb3BlcnRpZXMvY29uc3RhbnRDaGFpbjEvc3JjL0EuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2ZpZWxkUHJvcGVydGllcy9jb25zdGFudENoYWluMS9zcmMvQS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA0NjczOGYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9maWVsZFByb3BlcnRpZXMvY29uc3RhbnRDaGFpbjEvc3JjL0EuamF2YQpAQCAtMCwwICsxLDYgQEAKK2ludGVyZmFjZSBBIHsKKyAgc3RhdGljIGZpbmFsIHNob3J0IHZhcjAgPSAxMDA7CisgIHN0YXRpYyBmaW5hbCBzaG9ydCB2YXIxID0gdmFyMCArIDE7CisgIHN0YXRpYyBmaW5hbCBzaG9ydCB2YXIyID0gdmFyMSArIDE7CisgIHN0YXRpYyBmaW5hbCBzaG9ydCBsYXN0ID0gdmFyMjsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9maWVsZFByb3BlcnRpZXMvY29uc3RhbnRDaGFpbjEvc3JjL0IuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2ZpZWxkUHJvcGVydGllcy9jb25zdGFudENoYWluMS9zcmMvQi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEyOGQ1NDkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9maWVsZFByb3BlcnRpZXMvY29uc3RhbnRDaGFpbjEvc3JjL0IuamF2YQpAQCAtMCwwICsxLDQgQEAKK2ludGVyZmFjZSBCIGV4dGVuZHMgQSB7CisgIHN0YXRpYyBmaW5hbCBzaG9ydCB2YXIgPSBBLmxhc3QgKyAxOworICBzdGF0aWMgZmluYWwgc2hvcnQgbGFzdEIgPSB2YXI7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZmllbGRQcm9wZXJ0aWVzL2NvbnN0YW50Q2hhaW4xL3NyYy9DLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9maWVsZFByb3BlcnRpZXMvY29uc3RhbnRDaGFpbjEvc3JjL0MuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ODc0NzA1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZmllbGRQcm9wZXJ0aWVzL2NvbnN0YW50Q2hhaW4xL3NyYy9DLmphdmEKQEAgLTAsMCArMSw0IEBACitpbnRlcmZhY2UgQyBleHRlbmRzIEIgeworICBzdGF0aWMgZmluYWwgc2hvcnQgdmFyQyA9IEIubGFzdCArIDE7CisgIHN0YXRpYyBmaW5hbCBzaG9ydCBsYXN0QyA9IHZhckM7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZmllbGRQcm9wZXJ0aWVzL2NvbnN0YW50Q2hhaW4xL3NyYy9DbGllbnQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2ZpZWxkUHJvcGVydGllcy9jb25zdGFudENoYWluMS9zcmMvQ2xpZW50LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjZkMDhmOAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2ZpZWxkUHJvcGVydGllcy9jb25zdGFudENoYWluMS9zcmMvQ2xpZW50LmphdmEKQEAgLTAsMCArMSw1IEBACitjbGFzcyBDbGllbnQgaW1wbGVtZW50cyBDIHsKKyAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgeworICAgIFN5c3RlbS5vdXQucHJpbnRsbihDLmxhc3RDKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2ZpZWxkUHJvcGVydGllcy9jb25zdGFudENoYWluMi5sb2cgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9maWVsZFByb3BlcnRpZXMvY29uc3RhbnRDaGFpbjIubG9nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdlNmQ0NTEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9maWVsZFByb3BlcnRpZXMvY29uc3RhbnRDaGFpbjIubG9nCkBAIC0wLDAgKzEsMTggQEAKK0NsZWFuaW5nIG91dHB1dCBmaWxlczoKK291dC9wcm9kdWN0aW9uL0NvbnN0YW50Q2hhaW4yL0NsaWVudC5jbGFzcworb3V0L3Byb2R1Y3Rpb24vQ29uc3RhbnRDaGFpbjIvQ29uc3QxLmNsYXNzCitFbmQgb2YgZmlsZXMKK0NvbXBpbGluZyBmaWxlczoKK3NyYy9DbGllbnQuamF2YQorc3JjL0NvbnN0MS5qYXZhCitFbmQgb2YgZmlsZXMKK0NsZWFuaW5nIG91dHB1dCBmaWxlczoKK291dC9wcm9kdWN0aW9uL0NvbnN0YW50Q2hhaW4yL0NsaWVudC5jbGFzcworb3V0L3Byb2R1Y3Rpb24vQ29uc3RhbnRDaGFpbjIvQ29uc3QxLmNsYXNzCitvdXQvcHJvZHVjdGlvbi9Db25zdGFudENoYWluMi9Db25zdDIuY2xhc3MKK0VuZCBvZiBmaWxlcworQ29tcGlsaW5nIGZpbGVzOgorc3JjL0NsaWVudC5qYXZhCitzcmMvQ29uc3QxLmphdmEKK3NyYy9Db25zdDIuamF2YQorRW5kIG9mIGZpbGVzCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9maWVsZFByb3BlcnRpZXMvY29uc3RhbnRDaGFpbjIvQ2xpZW50LmphdmEubmV3IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZmllbGRQcm9wZXJ0aWVzL2NvbnN0YW50Q2hhaW4yL0NsaWVudC5qYXZhLm5ldwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMzA1YzNiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZmllbGRQcm9wZXJ0aWVzL2NvbnN0YW50Q2hhaW4yL0NsaWVudC5qYXZhLm5ldwpAQCAtMCwwICsxLDYgQEAKK2NsYXNzIENsaWVudCB7CisgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKKyAgICBTeXN0ZW0ub3V0LnByaW50bG4oQ29uc3QyLkEyKTsKKyAgICBTeXN0ZW0ub3V0LnByaW50bG4oQ29uc3QyLkEyKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2ZpZWxkUHJvcGVydGllcy9jb25zdGFudENoYWluMi9Db25zdDEuamF2YS5uZXcgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9maWVsZFByb3BlcnRpZXMvY29uc3RhbnRDaGFpbjIvQ29uc3QxLmphdmEubmV3Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBhNThmZmEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9maWVsZFByb3BlcnRpZXMvY29uc3RhbnRDaGFpbjIvQ29uc3QxLmphdmEubmV3CkBAIC0wLDAgKzEsMyBAQAorcHVibGljIGNsYXNzIENvbnN0MSB7CisgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEExID0gMjA7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZmllbGRQcm9wZXJ0aWVzL2NvbnN0YW50Q2hhaW4yL3NyYy9DbGllbnQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2ZpZWxkUHJvcGVydGllcy9jb25zdGFudENoYWluMi9zcmMvQ2xpZW50LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZThhMDBjMAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2ZpZWxkUHJvcGVydGllcy9jb25zdGFudENoYWluMi9zcmMvQ2xpZW50LmphdmEKQEAgLTAsMCArMSw1IEBACitjbGFzcyBDbGllbnQgeworICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CisgICAgU3lzdGVtLm91dC5wcmludGxuKENvbnN0Mi5BMik7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9maWVsZFByb3BlcnRpZXMvY29uc3RhbnRDaGFpbjIvc3JjL0NvbnN0MS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZmllbGRQcm9wZXJ0aWVzL2NvbnN0YW50Q2hhaW4yL3NyYy9Db25zdDEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YTk5ZDUzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZmllbGRQcm9wZXJ0aWVzL2NvbnN0YW50Q2hhaW4yL3NyYy9Db25zdDEuamF2YQpAQCAtMCwwICsxLDMgQEAKK3B1YmxpYyBjbGFzcyBDb25zdDEgeworICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBBMSA9IDEwOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2ZpZWxkUHJvcGVydGllcy9jb25zdGFudENoYWluMi9zcmMvQ29uc3QyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9maWVsZFByb3BlcnRpZXMvY29uc3RhbnRDaGFpbjIvc3JjL0NvbnN0Mi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY5Mzc5MGUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9maWVsZFByb3BlcnRpZXMvY29uc3RhbnRDaGFpbjIvc3JjL0NvbnN0Mi5qYXZhCkBAIC0wLDAgKzEsMyBAQAorcHVibGljIGNsYXNzIENvbnN0MiB7CisgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEEyID0gQ29uc3QxLkExOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2ZpZWxkUHJvcGVydGllcy9jb25zdGFudFJlbW92ZS5sb2cgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9maWVsZFByb3BlcnRpZXMvY29uc3RhbnRSZW1vdmUubG9nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRlNjdkOTQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9maWVsZFByb3BlcnRpZXMvY29uc3RhbnRSZW1vdmUubG9nCkBAIC0wLDAgKzEsMTIgQEAKK0NsZWFuaW5nIG91dHB1dCBmaWxlczoKK291dC9wcm9kdWN0aW9uL0NvbnN0YW50UmVtb3ZlL1NlcnZlci5jbGFzcworRW5kIG9mIGZpbGVzCitDb21waWxpbmcgZmlsZXM6CitzcmMvU2VydmVyLmphdmEKK0VuZCBvZiBmaWxlcworQ2xlYW5pbmcgb3V0cHV0IGZpbGVzOgorb3V0L3Byb2R1Y3Rpb24vQ29uc3RhbnRSZW1vdmUvQ2xpZW50LmNsYXNzCitFbmQgb2YgZmlsZXMKK0NvbXBpbGluZyBmaWxlczoKK3NyYy9DbGllbnQuamF2YQorRW5kIG9mIGZpbGVzCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9maWVsZFByb3BlcnRpZXMvY29uc3RhbnRSZW1vdmUvU2VydmVyLmphdmEubmV3IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZmllbGRQcm9wZXJ0aWVzL2NvbnN0YW50UmVtb3ZlL1NlcnZlci5qYXZhLm5ldwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNDYxMDZiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZmllbGRQcm9wZXJ0aWVzL2NvbnN0YW50UmVtb3ZlL1NlcnZlci5qYXZhLm5ldwpAQCAtMCwwICsxLDIgQEAKK2NsYXNzIFNlcnZlciB7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZmllbGRQcm9wZXJ0aWVzL2NvbnN0YW50UmVtb3ZlL3NyYy9DbGllbnQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2ZpZWxkUHJvcGVydGllcy9jb25zdGFudFJlbW92ZS9zcmMvQ2xpZW50LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGRkNmExYgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2ZpZWxkUHJvcGVydGllcy9jb25zdGFudFJlbW92ZS9zcmMvQ2xpZW50LmphdmEKQEAgLTAsMCArMSw1IEBACitjbGFzcyBDbGllbnQgeworICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CisgICAgU3lzdGVtLm91dC5wcmludGxuKFNlcnZlci5zKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2ZpZWxkUHJvcGVydGllcy9jb25zdGFudFJlbW92ZS9zcmMvU2VydmVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9maWVsZFByb3BlcnRpZXMvY29uc3RhbnRSZW1vdmUvc3JjL1NlcnZlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhhMjRmMWIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9maWVsZFByb3BlcnRpZXMvY29uc3RhbnRSZW1vdmUvc3JjL1NlcnZlci5qYXZhCkBAIC0wLDAgKzEsMyBAQAorY2xhc3MgU2VydmVyIHsKKyAgc3RhdGljIGZpbmFsIFN0cmluZyBzID0gIlN0YXRpY0ZpbmFsIjsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9maWVsZFByb3BlcnRpZXMvY29uc3RhbnRSZW1vdmUxLmxvZyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2ZpZWxkUHJvcGVydGllcy9jb25zdGFudFJlbW92ZTEubG9nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNmYTE1MjMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9maWVsZFByb3BlcnRpZXMvY29uc3RhbnRSZW1vdmUxLmxvZwpAQCAtMCwwICsxLDEyIEBACitDbGVhbmluZyBvdXRwdXQgZmlsZXM6CitvdXQvcHJvZHVjdGlvbi9Db25zdGFudFJlbW92ZTEvU2VydmVyLmNsYXNzCitFbmQgb2YgZmlsZXMKK0NvbXBpbGluZyBmaWxlczoKK3NyYy9TZXJ2ZXIuamF2YQorRW5kIG9mIGZpbGVzCitDbGVhbmluZyBvdXRwdXQgZmlsZXM6CitvdXQvcHJvZHVjdGlvbi9Db25zdGFudFJlbW92ZTEvQ2xpZW50LmNsYXNzCitFbmQgb2YgZmlsZXMKK0NvbXBpbGluZyBmaWxlczoKK3NyYy9DbGllbnQuamF2YQorRW5kIG9mIGZpbGVzCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9maWVsZFByb3BlcnRpZXMvY29uc3RhbnRSZW1vdmUxL1NlcnZlci5qYXZhLm5ldyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2ZpZWxkUHJvcGVydGllcy9jb25zdGFudFJlbW92ZTEvU2VydmVyLmphdmEubmV3Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE0NjEwNmIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9maWVsZFByb3BlcnRpZXMvY29uc3RhbnRSZW1vdmUxL1NlcnZlci5qYXZhLm5ldwpAQCAtMCwwICsxLDIgQEAKK2NsYXNzIFNlcnZlciB7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZmllbGRQcm9wZXJ0aWVzL2NvbnN0YW50UmVtb3ZlMS9zcmMvQS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZmllbGRQcm9wZXJ0aWVzL2NvbnN0YW50UmVtb3ZlMS9zcmMvQS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUwNmI0Y2MKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9maWVsZFByb3BlcnRpZXMvY29uc3RhbnRSZW1vdmUxL3NyYy9BLmphdmEKQEAgLTAsMCArMSw1IEBACitwdWJsaWMgY2xhc3MgQXsKKyAgICBzdGF0aWMgU3RyaW5nIGZvbygpeworICAgICAgICByZXR1cm4gICJhYmMiOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9maWVsZFByb3BlcnRpZXMvY29uc3RhbnRSZW1vdmUxL3NyYy9DbGllbnQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2ZpZWxkUHJvcGVydGllcy9jb25zdGFudFJlbW92ZTEvc3JjL0NsaWVudC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRkZDZhMWIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9maWVsZFByb3BlcnRpZXMvY29uc3RhbnRSZW1vdmUxL3NyYy9DbGllbnQuamF2YQpAQCAtMCwwICsxLDUgQEAKK2NsYXNzIENsaWVudCB7CisgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKKyAgICBTeXN0ZW0ub3V0LnByaW50bG4oU2VydmVyLnMpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZmllbGRQcm9wZXJ0aWVzL2NvbnN0YW50UmVtb3ZlMS9zcmMvU2VydmVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9maWVsZFByb3BlcnRpZXMvY29uc3RhbnRSZW1vdmUxL3NyYy9TZXJ2ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMDUxODg3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZmllbGRQcm9wZXJ0aWVzL2NvbnN0YW50UmVtb3ZlMS9zcmMvU2VydmVyLmphdmEKQEAgLTAsMCArMSwzIEBACitjbGFzcyBTZXJ2ZXIgeworICBzdGF0aWMgZmluYWwgU3RyaW5nIHMgPSBBLmZvbygpOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2ZpZWxkUHJvcGVydGllcy9kb3VibGVDb25zdGFudENoYW5nZS5sb2cgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9maWVsZFByb3BlcnRpZXMvZG91YmxlQ29uc3RhbnRDaGFuZ2UubG9nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJiNDM3ODEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9maWVsZFByb3BlcnRpZXMvZG91YmxlQ29uc3RhbnRDaGFuZ2UubG9nCkBAIC0wLDAgKzEsMTIgQEAKK0NsZWFuaW5nIG91dHB1dCBmaWxlczoKK291dC9wcm9kdWN0aW9uL0RvdWJsZUNvbnN0YW50Q2hhbmdlL1NlcnZlci5jbGFzcworRW5kIG9mIGZpbGVzCitDb21waWxpbmcgZmlsZXM6CitzcmMvU2VydmVyLmphdmEKK0VuZCBvZiBmaWxlcworQ2xlYW5pbmcgb3V0cHV0IGZpbGVzOgorb3V0L3Byb2R1Y3Rpb24vRG91YmxlQ29uc3RhbnRDaGFuZ2UvQ2xpZW50LmNsYXNzCitFbmQgb2YgZmlsZXMKK0NvbXBpbGluZyBmaWxlczoKK3NyYy9DbGllbnQuamF2YQorRW5kIG9mIGZpbGVzCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9maWVsZFByb3BlcnRpZXMvZG91YmxlQ29uc3RhbnRDaGFuZ2UvU2VydmVyLmphdmEubmV3IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZmllbGRQcm9wZXJ0aWVzL2RvdWJsZUNvbnN0YW50Q2hhbmdlL1NlcnZlci5qYXZhLm5ldwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NTVkOTkyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZmllbGRQcm9wZXJ0aWVzL2RvdWJsZUNvbnN0YW50Q2hhbmdlL1NlcnZlci5qYXZhLm5ldwpAQCAtMCwwICsxLDMgQEAKK2NsYXNzIFNlcnZlciB7CisgIHN0YXRpYyBmaW5hbCBkb3VibGUgdmFyID0gOTkuOTsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9maWVsZFByb3BlcnRpZXMvZG91YmxlQ29uc3RhbnRDaGFuZ2Uvc3JjL0NsaWVudC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZmllbGRQcm9wZXJ0aWVzL2RvdWJsZUNvbnN0YW50Q2hhbmdlL3NyYy9DbGllbnQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NTczMGVmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZmllbGRQcm9wZXJ0aWVzL2RvdWJsZUNvbnN0YW50Q2hhbmdlL3NyYy9DbGllbnQuamF2YQpAQCAtMCwwICsxLDUgQEAKK2NsYXNzIENsaWVudCB7CisgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKKyAgICBTeXN0ZW0ub3V0LnByaW50bG4oU2VydmVyLnZhcik7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9maWVsZFByb3BlcnRpZXMvZG91YmxlQ29uc3RhbnRDaGFuZ2Uvc3JjL1NlcnZlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZmllbGRQcm9wZXJ0aWVzL2RvdWJsZUNvbnN0YW50Q2hhbmdlL3NyYy9TZXJ2ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MGE1NmJmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZmllbGRQcm9wZXJ0aWVzL2RvdWJsZUNvbnN0YW50Q2hhbmdlL3NyYy9TZXJ2ZXIuamF2YQpAQCAtMCwwICsxLDMgQEAKK2NsYXNzIFNlcnZlciB7CisgIHN0YXRpYyBmaW5hbCBkb3VibGUgdmFyID0gMTAwLjA7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZmllbGRQcm9wZXJ0aWVzL2Zsb2F0Q29uc3RhbnRDaGFuZ2UubG9nIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZmllbGRQcm9wZXJ0aWVzL2Zsb2F0Q29uc3RhbnRDaGFuZ2UubG9nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcxODEzMmEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9maWVsZFByb3BlcnRpZXMvZmxvYXRDb25zdGFudENoYW5nZS5sb2cKQEAgLTAsMCArMSwxMiBAQAorQ2xlYW5pbmcgb3V0cHV0IGZpbGVzOgorb3V0L3Byb2R1Y3Rpb24vRmxvYXRDb25zdGFudENoYW5nZS9TZXJ2ZXIuY2xhc3MKK0VuZCBvZiBmaWxlcworQ29tcGlsaW5nIGZpbGVzOgorc3JjL1NlcnZlci5qYXZhCitFbmQgb2YgZmlsZXMKK0NsZWFuaW5nIG91dHB1dCBmaWxlczoKK291dC9wcm9kdWN0aW9uL0Zsb2F0Q29uc3RhbnRDaGFuZ2UvQ2xpZW50LmNsYXNzCitFbmQgb2YgZmlsZXMKK0NvbXBpbGluZyBmaWxlczoKK3NyYy9DbGllbnQuamF2YQorRW5kIG9mIGZpbGVzCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9maWVsZFByb3BlcnRpZXMvZmxvYXRDb25zdGFudENoYW5nZS9TZXJ2ZXIuamF2YS5uZXcgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9maWVsZFByb3BlcnRpZXMvZmxvYXRDb25zdGFudENoYW5nZS9TZXJ2ZXIuamF2YS5uZXcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTU4ZDY3MQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2ZpZWxkUHJvcGVydGllcy9mbG9hdENvbnN0YW50Q2hhbmdlL1NlcnZlci5qYXZhLm5ldwpAQCAtMCwwICsxLDMgQEAKK2NsYXNzIFNlcnZlciB7CisgIHN0YXRpYyBmaW5hbCBmbG9hdCB2YXIgPSAxMDAuMWY7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZmllbGRQcm9wZXJ0aWVzL2Zsb2F0Q29uc3RhbnRDaGFuZ2Uvc3JjL0NsaWVudC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZmllbGRQcm9wZXJ0aWVzL2Zsb2F0Q29uc3RhbnRDaGFuZ2Uvc3JjL0NsaWVudC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc1NzMwZWYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9maWVsZFByb3BlcnRpZXMvZmxvYXRDb25zdGFudENoYW5nZS9zcmMvQ2xpZW50LmphdmEKQEAgLTAsMCArMSw1IEBACitjbGFzcyBDbGllbnQgeworICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CisgICAgU3lzdGVtLm91dC5wcmludGxuKFNlcnZlci52YXIpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZmllbGRQcm9wZXJ0aWVzL2Zsb2F0Q29uc3RhbnRDaGFuZ2Uvc3JjL1NlcnZlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZmllbGRQcm9wZXJ0aWVzL2Zsb2F0Q29uc3RhbnRDaGFuZ2Uvc3JjL1NlcnZlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNjOWZiMmQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9maWVsZFByb3BlcnRpZXMvZmxvYXRDb25zdGFudENoYW5nZS9zcmMvU2VydmVyLmphdmEKQEAgLTAsMCArMSwzIEBACitjbGFzcyBTZXJ2ZXIgeworICBzdGF0aWMgZmluYWwgZmxvYXQgdmFyID0gMTAwLjBmOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2ZpZWxkUHJvcGVydGllcy9pbm5lckNvbnN0YW50Q2hhbmdlLmxvZyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2ZpZWxkUHJvcGVydGllcy9pbm5lckNvbnN0YW50Q2hhbmdlLmxvZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZThlNDgwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZmllbGRQcm9wZXJ0aWVzL2lubmVyQ29uc3RhbnRDaGFuZ2UubG9nCkBAIC0wLDAgKzEsMTYgQEAKK0NsZWFuaW5nIG91dHB1dCBmaWxlczoKK291dC9wcm9kdWN0aW9uL0lubmVyQ29uc3RhbnRDaGFuZ2UvU2VydmVyJElubmVyLmNsYXNzCitvdXQvcHJvZHVjdGlvbi9Jbm5lckNvbnN0YW50Q2hhbmdlL1NlcnZlci5jbGFzcworRW5kIG9mIGZpbGVzCitDb21waWxpbmcgZmlsZXM6CitzcmMvU2VydmVyLmphdmEKK0VuZCBvZiBmaWxlcworQ2xlYW5pbmcgb3V0cHV0IGZpbGVzOgorb3V0L3Byb2R1Y3Rpb24vSW5uZXJDb25zdGFudENoYW5nZS9DbGllbnQuY2xhc3MKK291dC9wcm9kdWN0aW9uL0lubmVyQ29uc3RhbnRDaGFuZ2UvU2VydmVyJElubmVyLmNsYXNzCitvdXQvcHJvZHVjdGlvbi9Jbm5lckNvbnN0YW50Q2hhbmdlL1NlcnZlci5jbGFzcworRW5kIG9mIGZpbGVzCitDb21waWxpbmcgZmlsZXM6CitzcmMvQ2xpZW50LmphdmEKK3NyYy9TZXJ2ZXIuamF2YQorRW5kIG9mIGZpbGVzCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9maWVsZFByb3BlcnRpZXMvaW5uZXJDb25zdGFudENoYW5nZS9TZXJ2ZXIuamF2YS5uZXcgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9maWVsZFByb3BlcnRpZXMvaW5uZXJDb25zdGFudENoYW5nZS9TZXJ2ZXIuamF2YS5uZXcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2I4NGVjMwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2ZpZWxkUHJvcGVydGllcy9pbm5lckNvbnN0YW50Q2hhbmdlL1NlcnZlci5qYXZhLm5ldwpAQCAtMCwwICsxLDUgQEAKK2NsYXNzIFNlcnZlciB7CisgIHB1YmxpYyBzdGF0aWMgaW50ZXJmYWNlIElubmVyIHsKKyAgICBTdHJpbmcgcyA9ICJTdGF0aWNGaW5hbF91cGRhdGVkIjsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2ZpZWxkUHJvcGVydGllcy9pbm5lckNvbnN0YW50Q2hhbmdlL3NyYy9DbGllbnQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2ZpZWxkUHJvcGVydGllcy9pbm5lckNvbnN0YW50Q2hhbmdlL3NyYy9DbGllbnQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lODVjZjIzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZmllbGRQcm9wZXJ0aWVzL2lubmVyQ29uc3RhbnRDaGFuZ2Uvc3JjL0NsaWVudC5qYXZhCkBAIC0wLDAgKzEsNSBAQAorY2xhc3MgQ2xpZW50IHsKKyAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgeworICAgIFN5c3RlbS5vdXQucHJpbnRsbihTZXJ2ZXIuSW5uZXIucyk7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9maWVsZFByb3BlcnRpZXMvaW5uZXJDb25zdGFudENoYW5nZS9zcmMvU2VydmVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9maWVsZFByb3BlcnRpZXMvaW5uZXJDb25zdGFudENoYW5nZS9zcmMvU2VydmVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYThhMWJiNgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2ZpZWxkUHJvcGVydGllcy9pbm5lckNvbnN0YW50Q2hhbmdlL3NyYy9TZXJ2ZXIuamF2YQpAQCAtMCwwICsxLDUgQEAKK2NsYXNzIFNlcnZlciB7CisgIHB1YmxpYyBzdGF0aWMgaW50ZXJmYWNlIElubmVyIHsKKyAgICBTdHJpbmcgcyA9ICJTdGF0aWNGaW5hbCI7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9maWVsZFByb3BlcnRpZXMvaW50Q29uc3RhbnRDaGFuZ2UubG9nIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZmllbGRQcm9wZXJ0aWVzL2ludENvbnN0YW50Q2hhbmdlLmxvZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZDBiYjM0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZmllbGRQcm9wZXJ0aWVzL2ludENvbnN0YW50Q2hhbmdlLmxvZwpAQCAtMCwwICsxLDEyIEBACitDbGVhbmluZyBvdXRwdXQgZmlsZXM6CitvdXQvcHJvZHVjdGlvbi9JbnRDb25zdGFudENoYW5nZS9TZXJ2ZXIuY2xhc3MKK0VuZCBvZiBmaWxlcworQ29tcGlsaW5nIGZpbGVzOgorc3JjL1NlcnZlci5qYXZhCitFbmQgb2YgZmlsZXMKK0NsZWFuaW5nIG91dHB1dCBmaWxlczoKK291dC9wcm9kdWN0aW9uL0ludENvbnN0YW50Q2hhbmdlL0NsaWVudC5jbGFzcworRW5kIG9mIGZpbGVzCitDb21waWxpbmcgZmlsZXM6CitzcmMvQ2xpZW50LmphdmEKK0VuZCBvZiBmaWxlcwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZmllbGRQcm9wZXJ0aWVzL2ludENvbnN0YW50Q2hhbmdlL1NlcnZlci5qYXZhLm5ldyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2ZpZWxkUHJvcGVydGllcy9pbnRDb25zdGFudENoYW5nZS9TZXJ2ZXIuamF2YS5uZXcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGU3YTEyMAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2ZpZWxkUHJvcGVydGllcy9pbnRDb25zdGFudENoYW5nZS9TZXJ2ZXIuamF2YS5uZXcKQEAgLTAsMCArMSwzIEBACitjbGFzcyBTZXJ2ZXIgeworICBzdGF0aWMgZmluYWwgaW50IHZhciA9IDUwMDsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9maWVsZFByb3BlcnRpZXMvaW50Q29uc3RhbnRDaGFuZ2Uvc3JjL0NsaWVudC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZmllbGRQcm9wZXJ0aWVzL2ludENvbnN0YW50Q2hhbmdlL3NyYy9DbGllbnQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NTczMGVmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZmllbGRQcm9wZXJ0aWVzL2ludENvbnN0YW50Q2hhbmdlL3NyYy9DbGllbnQuamF2YQpAQCAtMCwwICsxLDUgQEAKK2NsYXNzIENsaWVudCB7CisgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKKyAgICBTeXN0ZW0ub3V0LnByaW50bG4oU2VydmVyLnZhcik7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9maWVsZFByb3BlcnRpZXMvaW50Q29uc3RhbnRDaGFuZ2Uvc3JjL1NlcnZlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZmllbGRQcm9wZXJ0aWVzL2ludENvbnN0YW50Q2hhbmdlL3NyYy9TZXJ2ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yODJkNDJhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZmllbGRQcm9wZXJ0aWVzL2ludENvbnN0YW50Q2hhbmdlL3NyYy9TZXJ2ZXIuamF2YQpAQCAtMCwwICsxLDMgQEAKK2NsYXNzIFNlcnZlciB7CisgIHN0YXRpYyBmaW5hbCBpbnQgdmFyID0gMTAwOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2ZpZWxkUHJvcGVydGllcy9sb25nQ29uc3RhbnRDaGFuZ2UubG9nIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZmllbGRQcm9wZXJ0aWVzL2xvbmdDb25zdGFudENoYW5nZS5sb2cKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTIyMWUxNQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2ZpZWxkUHJvcGVydGllcy9sb25nQ29uc3RhbnRDaGFuZ2UubG9nCkBAIC0wLDAgKzEsMTIgQEAKK0NsZWFuaW5nIG91dHB1dCBmaWxlczoKK291dC9wcm9kdWN0aW9uL0xvbmdDb25zdGFudENoYW5nZS9TZXJ2ZXIuY2xhc3MKK0VuZCBvZiBmaWxlcworQ29tcGlsaW5nIGZpbGVzOgorc3JjL1NlcnZlci5qYXZhCitFbmQgb2YgZmlsZXMKK0NsZWFuaW5nIG91dHB1dCBmaWxlczoKK291dC9wcm9kdWN0aW9uL0xvbmdDb25zdGFudENoYW5nZS9DbGllbnQuY2xhc3MKK0VuZCBvZiBmaWxlcworQ29tcGlsaW5nIGZpbGVzOgorc3JjL0NsaWVudC5qYXZhCitFbmQgb2YgZmlsZXMKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2ZpZWxkUHJvcGVydGllcy9sb25nQ29uc3RhbnRDaGFuZ2UvU2VydmVyLmphdmEubmV3IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZmllbGRQcm9wZXJ0aWVzL2xvbmdDb25zdGFudENoYW5nZS9TZXJ2ZXIuamF2YS5uZXcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTk1ZjgzOAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2ZpZWxkUHJvcGVydGllcy9sb25nQ29uc3RhbnRDaGFuZ2UvU2VydmVyLmphdmEubmV3CkBAIC0wLDAgKzEsMyBAQAorY2xhc3MgU2VydmVyIHsKKyAgc3RhdGljIGZpbmFsIGxvbmcgdmFyID0gNTAwMDAwMEw7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZmllbGRQcm9wZXJ0aWVzL2xvbmdDb25zdGFudENoYW5nZS9zcmMvQ2xpZW50LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9maWVsZFByb3BlcnRpZXMvbG9uZ0NvbnN0YW50Q2hhbmdlL3NyYy9DbGllbnQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NTczMGVmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZmllbGRQcm9wZXJ0aWVzL2xvbmdDb25zdGFudENoYW5nZS9zcmMvQ2xpZW50LmphdmEKQEAgLTAsMCArMSw1IEBACitjbGFzcyBDbGllbnQgeworICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CisgICAgU3lzdGVtLm91dC5wcmludGxuKFNlcnZlci52YXIpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZmllbGRQcm9wZXJ0aWVzL2xvbmdDb25zdGFudENoYW5nZS9zcmMvU2VydmVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9maWVsZFByb3BlcnRpZXMvbG9uZ0NvbnN0YW50Q2hhbmdlL3NyYy9TZXJ2ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hY2JkZGQ3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZmllbGRQcm9wZXJ0aWVzL2xvbmdDb25zdGFudENoYW5nZS9zcmMvU2VydmVyLmphdmEKQEAgLTAsMCArMSwzIEBACitjbGFzcyBTZXJ2ZXIgeworICBzdGF0aWMgZmluYWwgbG9uZyB2YXIgPSAxMDAwMDAwTDsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9maWVsZFByb3BlcnRpZXMvbm9uQ29tcGlsZVRpbWVDb25zdGFudC5sb2cgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9maWVsZFByb3BlcnRpZXMvbm9uQ29tcGlsZVRpbWVDb25zdGFudC5sb2cKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmE3YmY4MAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2ZpZWxkUHJvcGVydGllcy9ub25Db21waWxlVGltZUNvbnN0YW50LmxvZwpAQCAtMCwwICsxLDYgQEAKK0NsZWFuaW5nIG91dHB1dCBmaWxlczoKK291dC9wcm9kdWN0aW9uL05vbkNvbXBpbGVUaW1lQ29uc3RhbnQvVGVzdC5jbGFzcworRW5kIG9mIGZpbGVzCitDb21waWxpbmcgZmlsZXM6CitzcmMvVGVzdC5qYXZhCitFbmQgb2YgZmlsZXMKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2ZpZWxkUHJvcGVydGllcy9ub25Db21waWxlVGltZUNvbnN0YW50L1Rlc3QuamF2YS5uZXcgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9maWVsZFByb3BlcnRpZXMvbm9uQ29tcGlsZVRpbWVDb25zdGFudC9UZXN0LmphdmEubmV3Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY1OTBjMDYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9maWVsZFByb3BlcnRpZXMvbm9uQ29tcGlsZVRpbWVDb25zdGFudC9UZXN0LmphdmEubmV3CkBAIC0wLDAgKzEsOSBAQAorCisvLyBub3RoaW5nIGhhcyBjaGFuZ2VkIQorcHVibGljIGNsYXNzIFRlc3QgeworICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBDT05TVCA9IGZvbygpOworCisgIHByaXZhdGUgc3RhdGljIGludCBmb28oKSB7CisgICAgcmV0dXJuIDA7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9maWVsZFByb3BlcnRpZXMvbm9uQ29tcGlsZVRpbWVDb25zdGFudC9zcmMvQ2xpZW50LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9maWVsZFByb3BlcnRpZXMvbm9uQ29tcGlsZVRpbWVDb25zdGFudC9zcmMvQ2xpZW50LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDViZTVjZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2ZpZWxkUHJvcGVydGllcy9ub25Db21waWxlVGltZUNvbnN0YW50L3NyYy9DbGllbnQuamF2YQpAQCAtMCwwICsxLDYgQEAKKworcHVibGljIGNsYXNzIENsaWVudCB7CisgIGludCBmb28oKXsKKyAgICByZXR1cm4gVGVzdC5DT05TVDsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2ZpZWxkUHJvcGVydGllcy9ub25Db21waWxlVGltZUNvbnN0YW50L3NyYy9UZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9maWVsZFByb3BlcnRpZXMvbm9uQ29tcGlsZVRpbWVDb25zdGFudC9zcmMvVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZiNzI2MjQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9maWVsZFByb3BlcnRpZXMvbm9uQ29tcGlsZVRpbWVDb25zdGFudC9zcmMvVGVzdC5qYXZhCkBAIC0wLDAgKzEsOCBAQAorCitwdWJsaWMgY2xhc3MgVGVzdCB7CisgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IENPTlNUID0gZm9vKCk7CisKKyAgcHJpdmF0ZSBzdGF0aWMgaW50IGZvbygpIHsKKyAgICByZXR1cm4gMDsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2ZpZWxkUHJvcGVydGllcy9ub25JbmNyZW1lbnRhbDEubG9nIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZmllbGRQcm9wZXJ0aWVzL25vbkluY3JlbWVudGFsMS5sb2cKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTZlZDc0NAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2ZpZWxkUHJvcGVydGllcy9ub25JbmNyZW1lbnRhbDEubG9nCkBAIC0wLDAgKzEsMTIgQEAKK0NsZWFuaW5nIG91dHB1dCBmaWxlczoKK291dC9wcm9kdWN0aW9uL05vbkluY3JlbWVudGFsMS9BL0EuY2xhc3MKK0VuZCBvZiBmaWxlcworQ29tcGlsaW5nIGZpbGVzOgorc3JjL0EvQS5qYXZhCitFbmQgb2YgZmlsZXMKK0NsZWFuaW5nIG91dHB1dCBmaWxlczoKK291dC9wcm9kdWN0aW9uL05vbkluY3JlbWVudGFsMS9BL0MuY2xhc3MKK0VuZCBvZiBmaWxlcworQ29tcGlsaW5nIGZpbGVzOgorc3JjL0EvQy5qYXZhCitFbmQgb2YgZmlsZXMKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2ZpZWxkUHJvcGVydGllcy9ub25JbmNyZW1lbnRhbDEvc3JjL0EvQS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZmllbGRQcm9wZXJ0aWVzL25vbkluY3JlbWVudGFsMS9zcmMvQS9BLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmQzOGEwNwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2ZpZWxkUHJvcGVydGllcy9ub25JbmNyZW1lbnRhbDEvc3JjL0EvQS5qYXZhCkBAIC0wLDAgKzEsMTIgQEAKK3BhY2thZ2UgQTsKKworLyoqCisgKiBDcmVhdGVkIGJ5IEludGVsbGlKIElERUEuCisgKiBVc2VyOiBkYgorICogRGF0ZTogMjMuMDEuMTIKKyAqIFRpbWU6IDEzOjUxCisgKiBUbyBjaGFuZ2UgdGhpcyB0ZW1wbGF0ZSB1c2UgRmlsZSB8IFNldHRpbmdzIHwgRmlsZSBUZW1wbGF0ZXMuCisgKi8KK3B1YmxpYyBjbGFzcyBBIHsKKyAgICBmaW5hbCBzdGF0aWMgaW50IHggPSAxMDI0OworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZmllbGRQcm9wZXJ0aWVzL25vbkluY3JlbWVudGFsMS9zcmMvQS9BLmphdmEubmV3IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZmllbGRQcm9wZXJ0aWVzL25vbkluY3JlbWVudGFsMS9zcmMvQS9BLmphdmEubmV3Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY0YTYwMjIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9maWVsZFByb3BlcnRpZXMvbm9uSW5jcmVtZW50YWwxL3NyYy9BL0EuamF2YS5uZXcKQEAgLTAsMCArMSwxMiBAQAorcGFja2FnZSBBOworCisvKioKKyAqIENyZWF0ZWQgYnkgSW50ZWxsaUogSURFQS4KKyAqIFVzZXI6IGRiCisgKiBEYXRlOiAyMy4wMS4xMgorICogVGltZTogMTM6NTEKKyAqIFRvIGNoYW5nZSB0aGlzIHRlbXBsYXRlIHVzZSBGaWxlIHwgU2V0dGluZ3MgfCBGaWxlIFRlbXBsYXRlcy4KKyAqLworcHVibGljIGNsYXNzIEEgeworICAgIGZpbmFsIHN0YXRpYyBpbnQgeCA9IDEwMjU7Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9maWVsZFByb3BlcnRpZXMvbm9uSW5jcmVtZW50YWwxL3NyYy9BL0MuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2ZpZWxkUHJvcGVydGllcy9ub25JbmNyZW1lbnRhbDEvc3JjL0EvQy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYwYWMwM2EKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9maWVsZFByb3BlcnRpZXMvbm9uSW5jcmVtZW50YWwxL3NyYy9BL0MuamF2YQpAQCAtMCwwICsxLDE0IEBACitwYWNrYWdlIEE7CisKKy8qKgorICogQ3JlYXRlZCBieSBJbnRlbGxpSiBJREVBLgorICogVXNlcjogZGIKKyAqIERhdGU6IDIzLjAxLjEyCisgKiBUaW1lOiAxMzo1MQorICogVG8gY2hhbmdlIHRoaXMgdGVtcGxhdGUgdXNlIEZpbGUgfCBTZXR0aW5ncyB8IEZpbGUgVGVtcGxhdGVzLgorICovCitwdWJsaWMgY2xhc3MgQyB7CisgICAgcHVibGljIGludCBnZXQoKXsKKyAgICAgICAgcmV0dXJuIEEueDsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9maWVsZFByb3BlcnRpZXMvbm9uSW5jcmVtZW50YWwxL3NyYy9CL00uamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2ZpZWxkUHJvcGVydGllcy9ub25JbmNyZW1lbnRhbDEvc3JjL0IvTS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZiNWI3MWYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9maWVsZFByb3BlcnRpZXMvbm9uSW5jcmVtZW50YWwxL3NyYy9CL00uamF2YQpAQCAtMCwwICsxLDE0IEBACitwYWNrYWdlIEI7CisKK2ltcG9ydCBBLkM7CisKKy8qKgorICogQ3JlYXRlZCBieSBJbnRlbGxpSiBJREVBLgorICogVXNlcjogZGIKKyAqIERhdGU6IDIzLjAxLjEyCisgKiBUaW1lOiAxMzo1MgorICogVG8gY2hhbmdlIHRoaXMgdGVtcGxhdGUgdXNlIEZpbGUgfCBTZXR0aW5ncyB8IEZpbGUgVGVtcGxhdGVzLgorICovCitwdWJsaWMgY2xhc3MgTSB7CisgICAgaW50IHkgPSBuZXcgQygpLmdldCgpOworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZmllbGRQcm9wZXJ0aWVzL25vbkluY3JlbWVudGFsMi5sb2cgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9maWVsZFByb3BlcnRpZXMvbm9uSW5jcmVtZW50YWwyLmxvZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYWZkNjMwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZmllbGRQcm9wZXJ0aWVzL25vbkluY3JlbWVudGFsMi5sb2cKQEAgLTAsMCArMSwxNCBAQAorQ2xlYW5pbmcgb3V0cHV0IGZpbGVzOgorb3V0L3Byb2R1Y3Rpb24vTm9uSW5jcmVtZW50YWwyL0EvQS5jbGFzcworRW5kIG9mIGZpbGVzCitDb21waWxpbmcgZmlsZXM6CitzcmMvQS9BLmphdmEKK0VuZCBvZiBmaWxlcworQ2xlYW5pbmcgb3V0cHV0IGZpbGVzOgorb3V0L3Byb2R1Y3Rpb24vTm9uSW5jcmVtZW50YWwyL0EvQy5jbGFzcworb3V0L3Byb2R1Y3Rpb24vTm9uSW5jcmVtZW50YWwyL0IvTS5jbGFzcworRW5kIG9mIGZpbGVzCitDb21waWxpbmcgZmlsZXM6CitzcmMvQS9DLmphdmEKK3NyYy9CL00uamF2YQorRW5kIG9mIGZpbGVzCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9maWVsZFByb3BlcnRpZXMvbm9uSW5jcmVtZW50YWwyL3NyYy9BL0EuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2ZpZWxkUHJvcGVydGllcy9ub25JbmNyZW1lbnRhbDIvc3JjL0EvQS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQyM2NlMjgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9maWVsZFByb3BlcnRpZXMvbm9uSW5jcmVtZW50YWwyL3NyYy9BL0EuamF2YQpAQCAtMCwwICsxLDEyIEBACitwYWNrYWdlIEE7CisKKy8qKgorICogQ3JlYXRlZCBieSBJbnRlbGxpSiBJREVBLgorICogVXNlcjogZGIKKyAqIERhdGU6IDIzLjAxLjEyCisgKiBUaW1lOiAxMzo1MQorICogVG8gY2hhbmdlIHRoaXMgdGVtcGxhdGUgdXNlIEZpbGUgfCBTZXR0aW5ncyB8IEZpbGUgVGVtcGxhdGVzLgorICovCitwdWJsaWMgY2xhc3MgQSB7CisgICAgcHJvdGVjdGVkIGZpbmFsIHN0YXRpYyBpbnQgeCA9IDEwMjQ7Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9maWVsZFByb3BlcnRpZXMvbm9uSW5jcmVtZW50YWwyL3NyYy9BL0EuamF2YS5uZXcgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9maWVsZFByb3BlcnRpZXMvbm9uSW5jcmVtZW50YWwyL3NyYy9BL0EuamF2YS5uZXcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjEyZjEwMgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2ZpZWxkUHJvcGVydGllcy9ub25JbmNyZW1lbnRhbDIvc3JjL0EvQS5qYXZhLm5ldwpAQCAtMCwwICsxLDEyIEBACitwYWNrYWdlIEE7CisKKy8qKgorICogQ3JlYXRlZCBieSBJbnRlbGxpSiBJREVBLgorICogVXNlcjogZGIKKyAqIERhdGU6IDIzLjAxLjEyCisgKiBUaW1lOiAxMzo1MQorICogVG8gY2hhbmdlIHRoaXMgdGVtcGxhdGUgdXNlIEZpbGUgfCBTZXR0aW5ncyB8IEZpbGUgVGVtcGxhdGVzLgorICovCitwdWJsaWMgY2xhc3MgQSB7CisgICAgcHJvdGVjdGVkIGZpbmFsIHN0YXRpYyBpbnQgeCA9IDEwMjU7Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9maWVsZFByb3BlcnRpZXMvbm9uSW5jcmVtZW50YWwyL3NyYy9BL0MuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2ZpZWxkUHJvcGVydGllcy9ub25JbmNyZW1lbnRhbDIvc3JjL0EvQy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYwYWMwM2EKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9maWVsZFByb3BlcnRpZXMvbm9uSW5jcmVtZW50YWwyL3NyYy9BL0MuamF2YQpAQCAtMCwwICsxLDE0IEBACitwYWNrYWdlIEE7CisKKy8qKgorICogQ3JlYXRlZCBieSBJbnRlbGxpSiBJREVBLgorICogVXNlcjogZGIKKyAqIERhdGU6IDIzLjAxLjEyCisgKiBUaW1lOiAxMzo1MQorICogVG8gY2hhbmdlIHRoaXMgdGVtcGxhdGUgdXNlIEZpbGUgfCBTZXR0aW5ncyB8IEZpbGUgVGVtcGxhdGVzLgorICovCitwdWJsaWMgY2xhc3MgQyB7CisgICAgcHVibGljIGludCBnZXQoKXsKKyAgICAgICAgcmV0dXJuIEEueDsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9maWVsZFByb3BlcnRpZXMvbm9uSW5jcmVtZW50YWwyL3NyYy9CL00uamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2ZpZWxkUHJvcGVydGllcy9ub25JbmNyZW1lbnRhbDIvc3JjL0IvTS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIzZDViNTcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9maWVsZFByb3BlcnRpZXMvbm9uSW5jcmVtZW50YWwyL3NyYy9CL00uamF2YQpAQCAtMCwwICsxLDEzIEBACitwYWNrYWdlIEI7CisKK2ltcG9ydCBBLkM7CisvKioKKyAqIENyZWF0ZWQgYnkgSW50ZWxsaUogSURFQS4KKyAqIFVzZXI6IGRiCisgKiBEYXRlOiAyMy4wMS4xMgorICogVGltZTogMTM6NTIKKyAqIFRvIGNoYW5nZSB0aGlzIHRlbXBsYXRlIHVzZSBGaWxlIHwgU2V0dGluZ3MgfCBGaWxlIFRlbXBsYXRlcy4KKyAqLworcHVibGljIGNsYXNzIE0gZXh0ZW5kcyBBLkEgeworICAgIGludCB5ID0gQS5BLng7Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9maWVsZFByb3BlcnRpZXMvbm9uSW5jcmVtZW50YWwyL3NyYy9CL04uamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2ZpZWxkUHJvcGVydGllcy9ub25JbmNyZW1lbnRhbDIvc3JjL0IvTi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNjYTc5NTgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9maWVsZFByb3BlcnRpZXMvbm9uSW5jcmVtZW50YWwyL3NyYy9CL04uamF2YQpAQCAtMCwwICsxLDE0IEBACitwYWNrYWdlIEI7CisKK2ltcG9ydCBBLkM7CisKKy8qKgorICogQ3JlYXRlZCBieSBJbnRlbGxpSiBJREVBLgorICogVXNlcjogZGIKKyAqIERhdGU6IDIzLjAxLjEyCisgKiBUaW1lOiAxMzo1MgorICogVG8gY2hhbmdlIHRoaXMgdGVtcGxhdGUgdXNlIEZpbGUgfCBTZXR0aW5ncyB8IEZpbGUgVGVtcGxhdGVzLgorICovCitwdWJsaWMgY2xhc3MgTiB7CisgICAgaW50IHkgPSBuZXcgQygpLmdldCgpOworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZmllbGRQcm9wZXJ0aWVzL25vbkluY3JlbWVudGFsMy9BJEEuamF2YS5uZXd+IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZmllbGRQcm9wZXJ0aWVzL25vbkluY3JlbWVudGFsMy9BJEEuamF2YS5uZXd+Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJkMzhhMDcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9maWVsZFByb3BlcnRpZXMvbm9uSW5jcmVtZW50YWwzL0EkQS5qYXZhLm5ld34KQEAgLTAsMCArMSwxMiBAQAorcGFja2FnZSBBOworCisvKioKKyAqIENyZWF0ZWQgYnkgSW50ZWxsaUogSURFQS4KKyAqIFVzZXI6IGRiCisgKiBEYXRlOiAyMy4wMS4xMgorICogVGltZTogMTM6NTEKKyAqIFRvIGNoYW5nZSB0aGlzIHRlbXBsYXRlIHVzZSBGaWxlIHwgU2V0dGluZ3MgfCBGaWxlIFRlbXBsYXRlcy4KKyAqLworcHVibGljIGNsYXNzIEEgeworICAgIGZpbmFsIHN0YXRpYyBpbnQgeCA9IDEwMjQ7Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9maWVsZFByb3BlcnRpZXMvbm9uSW5jcmVtZW50YWwzL3NyYy9BL0EuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2ZpZWxkUHJvcGVydGllcy9ub25JbmNyZW1lbnRhbDMvc3JjL0EvQS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJkMzhhMDcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9maWVsZFByb3BlcnRpZXMvbm9uSW5jcmVtZW50YWwzL3NyYy9BL0EuamF2YQpAQCAtMCwwICsxLDEyIEBACitwYWNrYWdlIEE7CisKKy8qKgorICogQ3JlYXRlZCBieSBJbnRlbGxpSiBJREVBLgorICogVXNlcjogZGIKKyAqIERhdGU6IDIzLjAxLjEyCisgKiBUaW1lOiAxMzo1MQorICogVG8gY2hhbmdlIHRoaXMgdGVtcGxhdGUgdXNlIEZpbGUgfCBTZXR0aW5ncyB8IEZpbGUgVGVtcGxhdGVzLgorICovCitwdWJsaWMgY2xhc3MgQSB7CisgICAgZmluYWwgc3RhdGljIGludCB4ID0gMTAyNDsKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2ZpZWxkUHJvcGVydGllcy9ub25JbmNyZW1lbnRhbDMvc3JjL0EvQS5qYXZhLm5ldyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2ZpZWxkUHJvcGVydGllcy9ub25JbmNyZW1lbnRhbDMvc3JjL0EvQS5qYXZhLm5ldwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNGE2MDIyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZmllbGRQcm9wZXJ0aWVzL25vbkluY3JlbWVudGFsMy9zcmMvQS9BLmphdmEubmV3CkBAIC0wLDAgKzEsMTIgQEAKK3BhY2thZ2UgQTsKKworLyoqCisgKiBDcmVhdGVkIGJ5IEludGVsbGlKIElERUEuCisgKiBVc2VyOiBkYgorICogRGF0ZTogMjMuMDEuMTIKKyAqIFRpbWU6IDEzOjUxCisgKiBUbyBjaGFuZ2UgdGhpcyB0ZW1wbGF0ZSB1c2UgRmlsZSB8IFNldHRpbmdzIHwgRmlsZSBUZW1wbGF0ZXMuCisgKi8KK3B1YmxpYyBjbGFzcyBBIHsKKyAgICBmaW5hbCBzdGF0aWMgaW50IHggPSAxMDI1OworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZmllbGRQcm9wZXJ0aWVzL25vbkluY3JlbWVudGFsMy9zcmMvQS9DLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9maWVsZFByb3BlcnRpZXMvbm9uSW5jcmVtZW50YWwzL3NyYy9BL0MuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MGFjMDNhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZmllbGRQcm9wZXJ0aWVzL25vbkluY3JlbWVudGFsMy9zcmMvQS9DLmphdmEKQEAgLTAsMCArMSwxNCBAQAorcGFja2FnZSBBOworCisvKioKKyAqIENyZWF0ZWQgYnkgSW50ZWxsaUogSURFQS4KKyAqIFVzZXI6IGRiCisgKiBEYXRlOiAyMy4wMS4xMgorICogVGltZTogMTM6NTEKKyAqIFRvIGNoYW5nZSB0aGlzIHRlbXBsYXRlIHVzZSBGaWxlIHwgU2V0dGluZ3MgfCBGaWxlIFRlbXBsYXRlcy4KKyAqLworcHVibGljIGNsYXNzIEMgeworICAgIHB1YmxpYyBpbnQgZ2V0KCl7CisgICAgICAgIHJldHVybiBBLng7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZmllbGRQcm9wZXJ0aWVzL25vbkluY3JlbWVudGFsMy9zcmMvQi9NLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9maWVsZFByb3BlcnRpZXMvbm9uSW5jcmVtZW50YWwzL3NyYy9CL00uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYjViNzFmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZmllbGRQcm9wZXJ0aWVzL25vbkluY3JlbWVudGFsMy9zcmMvQi9NLmphdmEKQEAgLTAsMCArMSwxNCBAQAorcGFja2FnZSBCOworCitpbXBvcnQgQS5DOworCisvKioKKyAqIENyZWF0ZWQgYnkgSW50ZWxsaUogSURFQS4KKyAqIFVzZXI6IGRiCisgKiBEYXRlOiAyMy4wMS4xMgorICogVGltZTogMTM6NTIKKyAqIFRvIGNoYW5nZSB0aGlzIHRlbXBsYXRlIHVzZSBGaWxlIHwgU2V0dGluZ3MgfCBGaWxlIFRlbXBsYXRlcy4KKyAqLworcHVibGljIGNsYXNzIE0geworICAgIGludCB5ID0gbmV3IEMoKS5nZXQoKTsKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2ZpZWxkUHJvcGVydGllcy9ub25JbmNyZW1lbnRhbDQubG9nIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZmllbGRQcm9wZXJ0aWVzL25vbkluY3JlbWVudGFsNC5sb2cKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzViMGJiZjkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9maWVsZFByb3BlcnRpZXMvbm9uSW5jcmVtZW50YWw0LmxvZwpAQCAtMCwwICsxLDYgQEAKK0NsZWFuaW5nIG91dHB1dCBmaWxlczoKK291dC9wcm9kdWN0aW9uL05vbkluY3JlbWVudGFsNC9BLmNsYXNzCitFbmQgb2YgZmlsZXMKK0NvbXBpbGluZyBmaWxlczoKK3NyYy9BLmphdmEKK0VuZCBvZiBmaWxlcwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZmllbGRQcm9wZXJ0aWVzL25vbkluY3JlbWVudGFsNC9BLmphdmEubmV3IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZmllbGRQcm9wZXJ0aWVzL25vbkluY3JlbWVudGFsNC9BLmphdmEubmV3Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjczZGNhMjgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9maWVsZFByb3BlcnRpZXMvbm9uSW5jcmVtZW50YWw0L0EuamF2YS5uZXcKQEAgLTAsMCArMSwxMCBAQAorLyoqCisgKiBDcmVhdGVkIHdpdGggSW50ZWxsaUogSURFQS4KKyAqIFVzZXI6IGRiCisgKiBEYXRlOiAzMS4wMy4xMgorICogVGltZTogMTc6NTAKKyAqIFRvIGNoYW5nZSB0aGlzIHRlbXBsYXRlIHVzZSBGaWxlIHwgU2V0dGluZ3MgfCBGaWxlIFRlbXBsYXRlcy4KKyAqLworcHVibGljIGNsYXNzIEEgeworICAgIHB1YmxpYyBmaW5hbCBzdGF0aWMgaW50IFggPSAwOworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZmllbGRQcm9wZXJ0aWVzL25vbkluY3JlbWVudGFsNC9zcmMvQS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZmllbGRQcm9wZXJ0aWVzL25vbkluY3JlbWVudGFsNC9zcmMvQS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjViNjFiZDYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9maWVsZFByb3BlcnRpZXMvbm9uSW5jcmVtZW50YWw0L3NyYy9BLmphdmEKQEAgLTAsMCArMSwxNCBAQAorLyoqCisgKiBDcmVhdGVkIHdpdGggSW50ZWxsaUogSURFQS4KKyAqIFVzZXI6IGRiCisgKiBEYXRlOiAzMS4wMy4xMgorICogVGltZTogMTc6NTAKKyAqIFRvIGNoYW5nZSB0aGlzIHRlbXBsYXRlIHVzZSBGaWxlIHwgU2V0dGluZ3MgfCBGaWxlIFRlbXBsYXRlcy4KKyAqLworcHVibGljIGNsYXNzIEEgeworICAgIHB1YmxpYyBmaW5hbCBzdGF0aWMgaW50IFg7CisKKyAgICBzdGF0aWMgeworICAgICAgICBYID0gMTAwOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2ZpZWxkUHJvcGVydGllcy9ub25JbmNyZW1lbnRhbDQvc3JjL0MuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2ZpZWxkUHJvcGVydGllcy9ub25JbmNyZW1lbnRhbDQvc3JjL0MuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZjdiYTBlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZmllbGRQcm9wZXJ0aWVzL25vbkluY3JlbWVudGFsNC9zcmMvQy5qYXZhCkBAIC0wLDAgKzEsOSBAQAorLyoqCisgKiBDcmVhdGVkIHdpdGggSW50ZWxsaUogSURFQS4KKyAqIFVzZXI6IGRiCisgKiBEYXRlOiAzMS4wMy4xMgorICogVGltZTogMTc6NTEKKyAqIFRvIGNoYW5nZSB0aGlzIHRlbXBsYXRlIHVzZSBGaWxlIHwgU2V0dGluZ3MgfCBGaWxlIFRlbXBsYXRlcy4KKyAqLworcHVibGljIGNsYXNzIEMgeworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZmllbGRQcm9wZXJ0aWVzL3N0cmluZ0NvbnN0YW50Q2hhbmdlLmxvZyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2ZpZWxkUHJvcGVydGllcy9zdHJpbmdDb25zdGFudENoYW5nZS5sb2cKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODY3NWJmMAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2ZpZWxkUHJvcGVydGllcy9zdHJpbmdDb25zdGFudENoYW5nZS5sb2cKQEAgLTAsMCArMSwxMiBAQAorQ2xlYW5pbmcgb3V0cHV0IGZpbGVzOgorb3V0L3Byb2R1Y3Rpb24vU3RyaW5nQ29uc3RhbnRDaGFuZ2UvU2VydmVyLmNsYXNzCitFbmQgb2YgZmlsZXMKK0NvbXBpbGluZyBmaWxlczoKK3NyYy9TZXJ2ZXIuamF2YQorRW5kIG9mIGZpbGVzCitDbGVhbmluZyBvdXRwdXQgZmlsZXM6CitvdXQvcHJvZHVjdGlvbi9TdHJpbmdDb25zdGFudENoYW5nZS9DbGllbnQuY2xhc3MKK0VuZCBvZiBmaWxlcworQ29tcGlsaW5nIGZpbGVzOgorc3JjL0NsaWVudC5qYXZhCitFbmQgb2YgZmlsZXMKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2ZpZWxkUHJvcGVydGllcy9zdHJpbmdDb25zdGFudENoYW5nZS9TZXJ2ZXIuamF2YS5uZXcgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9maWVsZFByb3BlcnRpZXMvc3RyaW5nQ29uc3RhbnRDaGFuZ2UvU2VydmVyLmphdmEubmV3Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIzZjFjMjAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9maWVsZFByb3BlcnRpZXMvc3RyaW5nQ29uc3RhbnRDaGFuZ2UvU2VydmVyLmphdmEubmV3CkBAIC0wLDAgKzEsMyBAQAorY2xhc3MgU2VydmVyIHsKKyAgc3RhdGljIGZpbmFsIFN0cmluZyBzID0gIkNoYW5nZWRTdGF0aWNGaW5hbCI7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZmllbGRQcm9wZXJ0aWVzL3N0cmluZ0NvbnN0YW50Q2hhbmdlL3NyYy9DbGllbnQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2ZpZWxkUHJvcGVydGllcy9zdHJpbmdDb25zdGFudENoYW5nZS9zcmMvQ2xpZW50LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGRkNmExYgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2ZpZWxkUHJvcGVydGllcy9zdHJpbmdDb25zdGFudENoYW5nZS9zcmMvQ2xpZW50LmphdmEKQEAgLTAsMCArMSw1IEBACitjbGFzcyBDbGllbnQgeworICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CisgICAgU3lzdGVtLm91dC5wcmludGxuKFNlcnZlci5zKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2ZpZWxkUHJvcGVydGllcy9zdHJpbmdDb25zdGFudENoYW5nZS9zcmMvU2VydmVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9maWVsZFByb3BlcnRpZXMvc3RyaW5nQ29uc3RhbnRDaGFuZ2Uvc3JjL1NlcnZlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhhMjRmMWIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9maWVsZFByb3BlcnRpZXMvc3RyaW5nQ29uc3RhbnRDaGFuZ2Uvc3JjL1NlcnZlci5qYXZhCkBAIC0wLDAgKzEsMyBAQAorY2xhc3MgU2VydmVyIHsKKyAgc3RhdGljIGZpbmFsIFN0cmluZyBzID0gIlN0YXRpY0ZpbmFsIjsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9maWVsZFByb3BlcnRpZXMvc3RyaW5nQ29uc3RhbnRMZXNzQWNjZXNzaWJsZS5sb2cgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9maWVsZFByb3BlcnRpZXMvc3RyaW5nQ29uc3RhbnRMZXNzQWNjZXNzaWJsZS5sb2cKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWZjOTM3YQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2ZpZWxkUHJvcGVydGllcy9zdHJpbmdDb25zdGFudExlc3NBY2Nlc3NpYmxlLmxvZwpAQCAtMCwwICsxLDE0IEBACitDbGVhbmluZyBvdXRwdXQgZmlsZXM6CitvdXQvcHJvZHVjdGlvbi9TdHJpbmdDb25zdGFudExlc3NBY2Nlc3NpYmxlL1NlcnZlci5jbGFzcworRW5kIG9mIGZpbGVzCitDb21waWxpbmcgZmlsZXM6CitzcmMvU2VydmVyLmphdmEKK0VuZCBvZiBmaWxlcworQ2xlYW5pbmcgb3V0cHV0IGZpbGVzOgorb3V0L3Byb2R1Y3Rpb24vU3RyaW5nQ29uc3RhbnRMZXNzQWNjZXNzaWJsZS9DbGllbnQuY2xhc3MKK291dC9wcm9kdWN0aW9uL1N0cmluZ0NvbnN0YW50TGVzc0FjY2Vzc2libGUvU2VydmVyLmNsYXNzCitFbmQgb2YgZmlsZXMKK0NvbXBpbGluZyBmaWxlczoKK3NyYy9DbGllbnQuamF2YQorc3JjL1NlcnZlci5qYXZhCitFbmQgb2YgZmlsZXMKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2ZpZWxkUHJvcGVydGllcy9zdHJpbmdDb25zdGFudExlc3NBY2Nlc3NpYmxlL1NlcnZlci5qYXZhLm5ldyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2ZpZWxkUHJvcGVydGllcy9zdHJpbmdDb25zdGFudExlc3NBY2Nlc3NpYmxlL1NlcnZlci5qYXZhLm5ldwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NjY3NDcxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZmllbGRQcm9wZXJ0aWVzL3N0cmluZ0NvbnN0YW50TGVzc0FjY2Vzc2libGUvU2VydmVyLmphdmEubmV3CkBAIC0wLDAgKzEsMyBAQAorY2xhc3MgU2VydmVyIHsKKyAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIHMgPSAiU3RhdGljRmluYWwiOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2ZpZWxkUHJvcGVydGllcy9zdHJpbmdDb25zdGFudExlc3NBY2Nlc3NpYmxlL3NyYy9DbGllbnQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2ZpZWxkUHJvcGVydGllcy9zdHJpbmdDb25zdGFudExlc3NBY2Nlc3NpYmxlL3NyYy9DbGllbnQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZGQ2YTFiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZmllbGRQcm9wZXJ0aWVzL3N0cmluZ0NvbnN0YW50TGVzc0FjY2Vzc2libGUvc3JjL0NsaWVudC5qYXZhCkBAIC0wLDAgKzEsNSBAQAorY2xhc3MgQ2xpZW50IHsKKyAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgeworICAgIFN5c3RlbS5vdXQucHJpbnRsbihTZXJ2ZXIucyk7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9maWVsZFByb3BlcnRpZXMvc3RyaW5nQ29uc3RhbnRMZXNzQWNjZXNzaWJsZS9zcmMvU2VydmVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9maWVsZFByb3BlcnRpZXMvc3RyaW5nQ29uc3RhbnRMZXNzQWNjZXNzaWJsZS9zcmMvU2VydmVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTRhNzg5NAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2ZpZWxkUHJvcGVydGllcy9zdHJpbmdDb25zdGFudExlc3NBY2Nlc3NpYmxlL3NyYy9TZXJ2ZXIuamF2YQpAQCAtMCwwICsxLDMgQEAKK2NsYXNzIFNlcnZlciB7CisgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIHMgPSAiU3RhdGljRmluYWwiOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2ZpZWxkUHJvcGVydGllcy90eXBlQ2hhbmdlLmxvZyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2ZpZWxkUHJvcGVydGllcy90eXBlQ2hhbmdlLmxvZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YTA2ZWI2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZmllbGRQcm9wZXJ0aWVzL3R5cGVDaGFuZ2UubG9nCkBAIC0wLDAgKzEsMTIgQEAKK0NsZWFuaW5nIG91dHB1dCBmaWxlczoKK291dC9wcm9kdWN0aW9uL1R5cGVDaGFuZ2UvQS5jbGFzcworRW5kIG9mIGZpbGVzCitDb21waWxpbmcgZmlsZXM6CitzcmMvQS5qYXZhCitFbmQgb2YgZmlsZXMKK0NsZWFuaW5nIG91dHB1dCBmaWxlczoKK291dC9wcm9kdWN0aW9uL1R5cGVDaGFuZ2UvQi5jbGFzcworRW5kIG9mIGZpbGVzCitDb21waWxpbmcgZmlsZXM6CitzcmMvQi5qYXZhCitFbmQgb2YgZmlsZXMKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2ZpZWxkUHJvcGVydGllcy90eXBlQ2hhbmdlL0EuamF2YS5uZXcgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9maWVsZFByb3BlcnRpZXMvdHlwZUNoYW5nZS9BLmphdmEubmV3Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE5OTMzZjMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9maWVsZFByb3BlcnRpZXMvdHlwZUNoYW5nZS9BLmphdmEubmV3CkBAIC0wLDAgKzEsMyBAQAorcHVibGljIGNsYXNzIEEgeworICAgIFN0cmluZyB4OworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2ZpZWxkUHJvcGVydGllcy90eXBlQ2hhbmdlL3NyYy9BLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9maWVsZFByb3BlcnRpZXMvdHlwZUNoYW5nZS9zcmMvQS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdlYjMyNmMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9maWVsZFByb3BlcnRpZXMvdHlwZUNoYW5nZS9zcmMvQS5qYXZhCkBAIC0wLDAgKzEsMyBAQAorcHVibGljIGNsYXNzIEEgeworICAgIGludCB4OworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2ZpZWxkUHJvcGVydGllcy90eXBlQ2hhbmdlL3NyYy9CLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9maWVsZFByb3BlcnRpZXMvdHlwZUNoYW5nZS9zcmMvQi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg1MjViY2YKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9maWVsZFByb3BlcnRpZXMvdHlwZUNoYW5nZS9zcmMvQi5qYXZhCkBAIC0wLDAgKzEsNSBAQAorcHVibGljIGNsYXNzIEIgeworICAgIHZvaWQgZiAoQSBhKSB7CisgICAgICAgIGEueCA9IDE7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2ZpZWxkUHJvcGVydGllcy90eXBlQ2hhbmdlMS5sb2cgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9maWVsZFByb3BlcnRpZXMvdHlwZUNoYW5nZTEubG9nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJkY2Q3ODEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9maWVsZFByb3BlcnRpZXMvdHlwZUNoYW5nZTEubG9nCkBAIC0wLDAgKzEsMTIgQEAKK0NsZWFuaW5nIG91dHB1dCBmaWxlczoKK291dC9wcm9kdWN0aW9uL1R5cGVDaGFuZ2UxL0EuY2xhc3MKK0VuZCBvZiBmaWxlcworQ29tcGlsaW5nIGZpbGVzOgorc3JjL0EuamF2YQorRW5kIG9mIGZpbGVzCitDbGVhbmluZyBvdXRwdXQgZmlsZXM6CitvdXQvcHJvZHVjdGlvbi9UeXBlQ2hhbmdlMS9DLmNsYXNzCitFbmQgb2YgZmlsZXMKK0NvbXBpbGluZyBmaWxlczoKK3NyYy9DLmphdmEKK0VuZCBvZiBmaWxlcwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZmllbGRQcm9wZXJ0aWVzL3R5cGVDaGFuZ2UxL0EuamF2YS5uZXcgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9maWVsZFByb3BlcnRpZXMvdHlwZUNoYW5nZTEvQS5qYXZhLm5ldwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xOTkzM2YzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZmllbGRQcm9wZXJ0aWVzL3R5cGVDaGFuZ2UxL0EuamF2YS5uZXcKQEAgLTAsMCArMSwzIEBACitwdWJsaWMgY2xhc3MgQSB7CisgICAgU3RyaW5nIHg7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZmllbGRQcm9wZXJ0aWVzL3R5cGVDaGFuZ2UxL3NyYy9BLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9maWVsZFByb3BlcnRpZXMvdHlwZUNoYW5nZTEvc3JjL0EuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZWIzMjZjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZmllbGRQcm9wZXJ0aWVzL3R5cGVDaGFuZ2UxL3NyYy9BLmphdmEKQEAgLTAsMCArMSwzIEBACitwdWJsaWMgY2xhc3MgQSB7CisgICAgaW50IHg7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZmllbGRQcm9wZXJ0aWVzL3R5cGVDaGFuZ2UxL3NyYy9CLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9maWVsZFByb3BlcnRpZXMvdHlwZUNoYW5nZTEvc3JjL0IuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMjIxYTUzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZmllbGRQcm9wZXJ0aWVzL3R5cGVDaGFuZ2UxL3NyYy9CLmphdmEKQEAgLTAsMCArMSwyIEBACitwdWJsaWMgY2xhc3MgQiBleHRlbmRzIEEgeworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2ZpZWxkUHJvcGVydGllcy90eXBlQ2hhbmdlMS9zcmMvQy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZmllbGRQcm9wZXJ0aWVzL3R5cGVDaGFuZ2UxL3NyYy9DLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTBiNTUxYwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2ZpZWxkUHJvcGVydGllcy90eXBlQ2hhbmdlMS9zcmMvQy5qYXZhCkBAIC0wLDAgKzEsNSBAQAorcHVibGljIGNsYXNzIEMgeworICAgIHZvaWQgZiAoQiBiKSB7CisgICAgICAgIGIueCA9IDE7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2ZpZWxkUHJvcGVydGllcy90eXBlQ2hhbmdlMS9zcmMvRC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZmllbGRQcm9wZXJ0aWVzL3R5cGVDaGFuZ2UxL3NyYy9ELmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2Y5NDUxMQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2ZpZWxkUHJvcGVydGllcy90eXBlQ2hhbmdlMS9zcmMvRC5qYXZhCkBAIC0wLDAgKzEsNSBAQAorcHVibGljIGNsYXNzIEQgeworICAgIHZvaWQgZiAoQiBiKSB7CisKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZmllbGRQcm9wZXJ0aWVzL3R5cGVDaGFuZ2UyLmxvZyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2ZpZWxkUHJvcGVydGllcy90eXBlQ2hhbmdlMi5sb2cKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTZkOGZkZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2ZpZWxkUHJvcGVydGllcy90eXBlQ2hhbmdlMi5sb2cKQEAgLTAsMCArMSw2IEBACitDbGVhbmluZyBvdXRwdXQgZmlsZXM6CitvdXQvcHJvZHVjdGlvbi9UeXBlQ2hhbmdlMi9BLmNsYXNzCitFbmQgb2YgZmlsZXMKK0NvbXBpbGluZyBmaWxlczoKK3NyYy9BLmphdmEKK0VuZCBvZiBmaWxlcwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZmllbGRQcm9wZXJ0aWVzL3R5cGVDaGFuZ2UyL0EuamF2YS5uZXcgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9maWVsZFByb3BlcnRpZXMvdHlwZUNoYW5nZTIvQS5qYXZhLm5ldwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xOTkzM2YzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZmllbGRQcm9wZXJ0aWVzL3R5cGVDaGFuZ2UyL0EuamF2YS5uZXcKQEAgLTAsMCArMSwzIEBACitwdWJsaWMgY2xhc3MgQSB7CisgICAgU3RyaW5nIHg7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZmllbGRQcm9wZXJ0aWVzL3R5cGVDaGFuZ2UyL3NyYy9BLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9maWVsZFByb3BlcnRpZXMvdHlwZUNoYW5nZTIvc3JjL0EuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hOTRjNWY3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZmllbGRQcm9wZXJ0aWVzL3R5cGVDaGFuZ2UyL3NyYy9BLmphdmEKQEAgLTAsMCArMSwzIEBACitwdWJsaWMgY2xhc3MgQSB7CisgIHB1YmxpYyBpbnQgeDsKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2ZpZWxkUHJvcGVydGllcy90eXBlQ2hhbmdlMi9zcmMvQi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZmllbGRQcm9wZXJ0aWVzL3R5cGVDaGFuZ2UyL3NyYy9CLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjEyMjc3YQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2ZpZWxkUHJvcGVydGllcy90eXBlQ2hhbmdlMi9zcmMvQi5qYXZhCkBAIC0wLDAgKzEsMyBAQAorcHVibGljIGNsYXNzIEIgZXh0ZW5kcyBBIHsKKyAgcHVibGljIGludCB4OworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZmllbGRQcm9wZXJ0aWVzL3R5cGVDaGFuZ2UyL3NyYy9DLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9maWVsZFByb3BlcnRpZXMvdHlwZUNoYW5nZTIvc3JjL0MuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMGI1NTFjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZmllbGRQcm9wZXJ0aWVzL3R5cGVDaGFuZ2UyL3NyYy9DLmphdmEKQEAgLTAsMCArMSw1IEBACitwdWJsaWMgY2xhc3MgQyB7CisgICAgdm9pZCBmIChCIGIpIHsKKyAgICAgICAgYi54ID0gMTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZmllbGRQcm9wZXJ0aWVzL3R5cGVDaGFuZ2UyL3NyYy9ELmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9maWVsZFByb3BlcnRpZXMvdHlwZUNoYW5nZTIvc3JjL0QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZjk0NTExCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZmllbGRQcm9wZXJ0aWVzL3R5cGVDaGFuZ2UyL3NyYy9ELmphdmEKQEAgLTAsMCArMSw1IEBACitwdWJsaWMgY2xhc3MgRCB7CisgICAgdm9pZCBmIChCIGIpIHsKKworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9hZGRNZXRob2RUb0Jhc2UubG9nIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZ2VuZXJpY3MvYWRkTWV0aG9kVG9CYXNlLmxvZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NTBhOGJhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZ2VuZXJpY3MvYWRkTWV0aG9kVG9CYXNlLmxvZwpAQCAtMCwwICsxLDEyIEBACitDbGVhbmluZyBvdXRwdXQgZmlsZXM6CitvdXQvcHJvZHVjdGlvbi9BZGRNZXRob2RUb0Jhc2UvQy5jbGFzcworRW5kIG9mIGZpbGVzCitDb21waWxpbmcgZmlsZXM6CitzcmMvQy5qYXZhCitFbmQgb2YgZmlsZXMKK0NsZWFuaW5nIG91dHB1dCBmaWxlczoKK291dC9wcm9kdWN0aW9uL0FkZE1ldGhvZFRvQmFzZS9ELmNsYXNzCitFbmQgb2YgZmlsZXMKK0NvbXBpbGluZyBmaWxlczoKK3NyYy9ELmphdmEKK0VuZCBvZiBmaWxlcwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZ2VuZXJpY3MvYWRkTWV0aG9kVG9CYXNlL0MuamF2YS5uZXcgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9hZGRNZXRob2RUb0Jhc2UvQy5qYXZhLm5ldwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMGE5YjUwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZ2VuZXJpY3MvYWRkTWV0aG9kVG9CYXNlL0MuamF2YS5uZXcKQEAgLTAsMCArMSwzIEBACitwdWJsaWMgY2xhc3MgQyB7CisgIE9iamVjdCBpZChPYmplY3QgeCkge3JldHVybiBudWxsO30KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9hZGRNZXRob2RUb0Jhc2UvZGF0YS54bWwgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9hZGRNZXRob2RUb0Jhc2UvZGF0YS54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTA2OGU0NwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2dlbmVyaWNzL2FkZE1ldGhvZFRvQmFzZS9kYXRhLnhtbApAQCAtMCwwICsxLDEwIEBACis8dGVzdERhdGE+CisgIDxkZWxldGVkX2J5X21ha2U+CisgICAgPGZpbGUgcGF0aD0iY2xhc3Nlcy9DLmNsYXNzIiAvPgorICAgIDxmaWxlIHBhdGg9ImNsYXNzZXMvRC5jbGFzcyIgLz4KKyAgPC9kZWxldGVkX2J5X21ha2U+CisKKyAgPHJlY29tcGlsZT4KKyAgICA8ZmlsZSBwYXRoPSJzb3VyY2UvRC5qYXZhIiAvPgorICA8L3JlY29tcGlsZT4KKzwvdGVzdERhdGE+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZ2VuZXJpY3MvYWRkTWV0aG9kVG9CYXNlL3NyYy9DLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9hZGRNZXRob2RUb0Jhc2Uvc3JjL0MuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNWVmMDFjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZ2VuZXJpY3MvYWRkTWV0aG9kVG9CYXNlL3NyYy9DLmphdmEKQEAgLTAsMCArMSwyIEBACitwdWJsaWMgY2xhc3MgQyB7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZ2VuZXJpY3MvYWRkTWV0aG9kVG9CYXNlL3NyYy9ELmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9hZGRNZXRob2RUb0Jhc2Uvc3JjL0QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NTk1ZDc0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZ2VuZXJpY3MvYWRkTWV0aG9kVG9CYXNlL3NyYy9ELmphdmEKQEAgLTAsMCArMSwzIEBACitwdWJsaWMgY2xhc3MgRDxBPiBleHRlbmRzIEMgeworICBBIGlkKEEgeCkge3JldHVybiBudWxsO30KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9hZGRQYXJhbWV0ZXJpemVkTWV0aG9kVG9CYXNlLmxvZyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2dlbmVyaWNzL2FkZFBhcmFtZXRlcml6ZWRNZXRob2RUb0Jhc2UubG9nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY3OGQ2NmEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9hZGRQYXJhbWV0ZXJpemVkTWV0aG9kVG9CYXNlLmxvZwpAQCAtMCwwICsxLDEyIEBACitDbGVhbmluZyBvdXRwdXQgZmlsZXM6CitvdXQvcHJvZHVjdGlvbi9BZGRQYXJhbWV0ZXJpemVkTWV0aG9kVG9CYXNlL0MuY2xhc3MKK0VuZCBvZiBmaWxlcworQ29tcGlsaW5nIGZpbGVzOgorc3JjL0MuamF2YQorRW5kIG9mIGZpbGVzCitDbGVhbmluZyBvdXRwdXQgZmlsZXM6CitvdXQvcHJvZHVjdGlvbi9BZGRQYXJhbWV0ZXJpemVkTWV0aG9kVG9CYXNlL0QuY2xhc3MKK0VuZCBvZiBmaWxlcworQ29tcGlsaW5nIGZpbGVzOgorc3JjL0QuamF2YQorRW5kIG9mIGZpbGVzCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9hZGRQYXJhbWV0ZXJpemVkTWV0aG9kVG9CYXNlL0MuamF2YS5uZXcgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9hZGRQYXJhbWV0ZXJpemVkTWV0aG9kVG9CYXNlL0MuamF2YS5uZXcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjQ3MWQwNgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2dlbmVyaWNzL2FkZFBhcmFtZXRlcml6ZWRNZXRob2RUb0Jhc2UvQy5qYXZhLm5ldwpAQCAtMCwwICsxLDMgQEAKK3B1YmxpYyBjbGFzcyBDPEE+IHsKKyAgQSBpZChBIHgpIHtyZXR1cm4gbnVsbDt9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZ2VuZXJpY3MvYWRkUGFyYW1ldGVyaXplZE1ldGhvZFRvQmFzZS9kYXRhLnhtbCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2dlbmVyaWNzL2FkZFBhcmFtZXRlcml6ZWRNZXRob2RUb0Jhc2UvZGF0YS54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTA2OGU0NwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2dlbmVyaWNzL2FkZFBhcmFtZXRlcml6ZWRNZXRob2RUb0Jhc2UvZGF0YS54bWwKQEAgLTAsMCArMSwxMCBAQAorPHRlc3REYXRhPgorICA8ZGVsZXRlZF9ieV9tYWtlPgorICAgIDxmaWxlIHBhdGg9ImNsYXNzZXMvQy5jbGFzcyIgLz4KKyAgICA8ZmlsZSBwYXRoPSJjbGFzc2VzL0QuY2xhc3MiIC8+CisgIDwvZGVsZXRlZF9ieV9tYWtlPgorCisgIDxyZWNvbXBpbGU+CisgICAgPGZpbGUgcGF0aD0ic291cmNlL0QuamF2YSIgLz4KKyAgPC9yZWNvbXBpbGU+Cis8L3Rlc3REYXRhPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2dlbmVyaWNzL2FkZFBhcmFtZXRlcml6ZWRNZXRob2RUb0Jhc2Uvc3JjL0MuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2dlbmVyaWNzL2FkZFBhcmFtZXRlcml6ZWRNZXRob2RUb0Jhc2Uvc3JjL0MuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YTdmZmZjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZ2VuZXJpY3MvYWRkUGFyYW1ldGVyaXplZE1ldGhvZFRvQmFzZS9zcmMvQy5qYXZhCkBAIC0wLDAgKzEsMiBAQAorcHVibGljIGNsYXNzIEM8QT4geworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2dlbmVyaWNzL2FkZFBhcmFtZXRlcml6ZWRNZXRob2RUb0Jhc2Uvc3JjL0QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2dlbmVyaWNzL2FkZFBhcmFtZXRlcml6ZWRNZXRob2RUb0Jhc2Uvc3JjL0QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNDU5OTU1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZ2VuZXJpY3MvYWRkUGFyYW1ldGVyaXplZE1ldGhvZFRvQmFzZS9zcmMvRC5qYXZhCkBAIC0wLDAgKzEsMyBAQAorcHVibGljIGNsYXNzIEQgZXh0ZW5kcyBDPFN0cmluZz4geworICBPYmplY3QgaWQoT2JqZWN0IHgpIHtyZXR1cm4gbnVsbDt9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZ2VuZXJpY3MvYXJndW1lbnRDb250YWlubWVudC5sb2cgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9hcmd1bWVudENvbnRhaW5tZW50LmxvZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MDFiMzJkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZ2VuZXJpY3MvYXJndW1lbnRDb250YWlubWVudC5sb2cKQEAgLTAsMCArMSwxNiBAQAorQ2xlYW5pbmcgb3V0cHV0IGZpbGVzOgorb3V0L3Byb2R1Y3Rpb24vQXJndW1lbnRDb250YWlubWVudC9TdWIyLmNsYXNzCitFbmQgb2YgZmlsZXMKK0NvbXBpbGluZyBmaWxlczoKK3NyYy9TdWIyLmphdmEKK0VuZCBvZiBmaWxlcworQ2xlYW5pbmcgb3V0cHV0IGZpbGVzOgorb3V0L3Byb2R1Y3Rpb24vQXJndW1lbnRDb250YWlubWVudC9DYXB0dXJlQ3JlYXRvci5jbGFzcworb3V0L3Byb2R1Y3Rpb24vQXJndW1lbnRDb250YWlubWVudC9DYXB0dXJlQ3JlYXRvcjIuY2xhc3MKK291dC9wcm9kdWN0aW9uL0FyZ3VtZW50Q29udGFpbm1lbnQvR2VuZXJpY0JvdW5kLmNsYXNzCitFbmQgb2YgZmlsZXMKK0NvbXBpbGluZyBmaWxlczoKK3NyYy9DYXB0dXJlQ3JlYXRvci5qYXZhCitzcmMvQ2FwdHVyZUNyZWF0b3IyLmphdmEKK3NyYy9HZW5lcmljQm91bmQuamF2YQorRW5kIG9mIGZpbGVzCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9hcmd1bWVudENvbnRhaW5tZW50L1N1YjIuamF2YS5uZXcgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9hcmd1bWVudENvbnRhaW5tZW50L1N1YjIuamF2YS5uZXcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWM4MDc3ZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2dlbmVyaWNzL2FyZ3VtZW50Q29udGFpbm1lbnQvU3ViMi5qYXZhLm5ldwpAQCAtMCwwICsxLDIgQEAKK3B1YmxpYyBjbGFzcyBTdWIyIHsKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2dlbmVyaWNzL2FyZ3VtZW50Q29udGFpbm1lbnQvc3JjL0NhcHR1cmVDcmVhdG9yLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9hcmd1bWVudENvbnRhaW5tZW50L3NyYy9DYXB0dXJlQ3JlYXRvci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU4ZmY4Y2MKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9hcmd1bWVudENvbnRhaW5tZW50L3NyYy9DYXB0dXJlQ3JlYXRvci5qYXZhCkBAIC0wLDAgKzEsNCBAQAorcHVibGljIGNsYXNzIENhcHR1cmVDcmVhdG9yIHsKKyAgICBwdWJsaWMgdm9pZCBjb250ZXh0KEdlbmVyaWNCb3VuZDw/IGV4dGVuZHMgUGFyZW50PiBwKSB7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZ2VuZXJpY3MvYXJndW1lbnRDb250YWlubWVudC9zcmMvQ2FwdHVyZUNyZWF0b3IyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9hcmd1bWVudENvbnRhaW5tZW50L3NyYy9DYXB0dXJlQ3JlYXRvcjIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYzllZDY5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZ2VuZXJpY3MvYXJndW1lbnRDb250YWlubWVudC9zcmMvQ2FwdHVyZUNyZWF0b3IyLmphdmEKQEAgLTAsMCArMSw0IEBACitwdWJsaWMgY2xhc3MgQ2FwdHVyZUNyZWF0b3IyIHsKKyAgICBwdWJsaWMgdm9pZCBjb250ZXh0KEdlbmVyaWNCb3VuZDw/IGV4dGVuZHMgU3ViPiBwKSB7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZ2VuZXJpY3MvYXJndW1lbnRDb250YWlubWVudC9zcmMvR2VuZXJpY0JvdW5kLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9hcmd1bWVudENvbnRhaW5tZW50L3NyYy9HZW5lcmljQm91bmQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ODFkOTQ2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZ2VuZXJpY3MvYXJndW1lbnRDb250YWlubWVudC9zcmMvR2VuZXJpY0JvdW5kLmphdmEKQEAgLTAsMCArMSwyIEBACitwdWJsaWMgY2xhc3MgR2VuZXJpY0JvdW5kPFQgZXh0ZW5kcyBTdWIyPiB7Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9hcmd1bWVudENvbnRhaW5tZW50L3NyYy9QYXJlbnQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2dlbmVyaWNzL2FyZ3VtZW50Q29udGFpbm1lbnQvc3JjL1BhcmVudC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVkZjZkOGUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9hcmd1bWVudENvbnRhaW5tZW50L3NyYy9QYXJlbnQuamF2YQpAQCAtMCwwICsxLDIgQEAKK3B1YmxpYyBjbGFzcyBQYXJlbnQgeworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZ2VuZXJpY3MvYXJndW1lbnRDb250YWlubWVudC9zcmMvU3ViLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9hcmd1bWVudENvbnRhaW5tZW50L3NyYy9TdWIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNjRkYWM1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZ2VuZXJpY3MvYXJndW1lbnRDb250YWlubWVudC9zcmMvU3ViLmphdmEKQEAgLTAsMCArMSwyIEBACitwdWJsaWMgY2xhc3MgU3ViIGV4dGVuZHMgUGFyZW50IHsKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2dlbmVyaWNzL2FyZ3VtZW50Q29udGFpbm1lbnQvc3JjL1N1YjIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2dlbmVyaWNzL2FyZ3VtZW50Q29udGFpbm1lbnQvc3JjL1N1YjIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZGVkNmNlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZ2VuZXJpY3MvYXJndW1lbnRDb250YWlubWVudC9zcmMvU3ViMi5qYXZhCkBAIC0wLDAgKzEsMiBAQAorcHVibGljIGNsYXNzIFN1YjIgZXh0ZW5kcyBTdWIgeworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZ2VuZXJpY3MvYXJndW1lbnRDb250YWlubWVudDIubG9nIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZ2VuZXJpY3MvYXJndW1lbnRDb250YWlubWVudDIubG9nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVkOTlhMTYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9hcmd1bWVudENvbnRhaW5tZW50Mi5sb2cKQEAgLTAsMCArMSwxOCBAQAorQ2xlYW5pbmcgb3V0cHV0IGZpbGVzOgorb3V0L3Byb2R1Y3Rpb24vQXJndW1lbnRDb250YWlubWVudDIvU3ViLmNsYXNzCitFbmQgb2YgZmlsZXMKK0NvbXBpbGluZyBmaWxlczoKK3NyYy9TdWIuamF2YQorRW5kIG9mIGZpbGVzCitDbGVhbmluZyBvdXRwdXQgZmlsZXM6CitvdXQvcHJvZHVjdGlvbi9Bcmd1bWVudENvbnRhaW5tZW50Mi9DYXB0dXJlQ3JlYXRvci5jbGFzcworb3V0L3Byb2R1Y3Rpb24vQXJndW1lbnRDb250YWlubWVudDIvQ2FwdHVyZUNyZWF0b3IyLmNsYXNzCitvdXQvcHJvZHVjdGlvbi9Bcmd1bWVudENvbnRhaW5tZW50Mi9HZW5lcmljQm91bmQuY2xhc3MKK291dC9wcm9kdWN0aW9uL0FyZ3VtZW50Q29udGFpbm1lbnQyL1N1YjIuY2xhc3MKK0VuZCBvZiBmaWxlcworQ29tcGlsaW5nIGZpbGVzOgorc3JjL0NhcHR1cmVDcmVhdG9yLmphdmEKK3NyYy9DYXB0dXJlQ3JlYXRvcjIuamF2YQorc3JjL0dlbmVyaWNCb3VuZC5qYXZhCitzcmMvU3ViMi5qYXZhCitFbmQgb2YgZmlsZXMKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2dlbmVyaWNzL2FyZ3VtZW50Q29udGFpbm1lbnQyL1N1Yi5qYXZhLm5ldyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2dlbmVyaWNzL2FyZ3VtZW50Q29udGFpbm1lbnQyL1N1Yi5qYXZhLm5ldwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hOWEyOWVhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZ2VuZXJpY3MvYXJndW1lbnRDb250YWlubWVudDIvU3ViLmphdmEubmV3CkBAIC0wLDAgKzEsMiBAQAorcHVibGljIGNsYXNzIFN1YiB7Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9hcmd1bWVudENvbnRhaW5tZW50Mi9zcmMvQ2FwdHVyZUNyZWF0b3IuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2dlbmVyaWNzL2FyZ3VtZW50Q29udGFpbm1lbnQyL3NyYy9DYXB0dXJlQ3JlYXRvci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE1Y2EwYjIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9hcmd1bWVudENvbnRhaW5tZW50Mi9zcmMvQ2FwdHVyZUNyZWF0b3IuamF2YQpAQCAtMCwwICsxLDQgQEAKK3B1YmxpYyBjbGFzcyBDYXB0dXJlQ3JlYXRvciB7CisgICAgcHVibGljIHZvaWQgY29udGV4dChHZW5lcmljQm91bmQ8PyBzdXBlciBTdWI+IHApIHsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9hcmd1bWVudENvbnRhaW5tZW50Mi9zcmMvQ2FwdHVyZUNyZWF0b3IyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9hcmd1bWVudENvbnRhaW5tZW50Mi9zcmMvQ2FwdHVyZUNyZWF0b3IyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzE1ZTA5ZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2dlbmVyaWNzL2FyZ3VtZW50Q29udGFpbm1lbnQyL3NyYy9DYXB0dXJlQ3JlYXRvcjIuamF2YQpAQCAtMCwwICsxLDQgQEAKK3B1YmxpYyBjbGFzcyBDYXB0dXJlQ3JlYXRvcjIgeworICAgIHB1YmxpYyB2b2lkIGNvbnRleHQoR2VuZXJpY0JvdW5kPD8gc3VwZXIgU3ViMj4gcCkgeworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2dlbmVyaWNzL2FyZ3VtZW50Q29udGFpbm1lbnQyL3NyYy9HZW5lcmljQm91bmQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2dlbmVyaWNzL2FyZ3VtZW50Q29udGFpbm1lbnQyL3NyYy9HZW5lcmljQm91bmQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NjU0NjdlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZ2VuZXJpY3MvYXJndW1lbnRDb250YWlubWVudDIvc3JjL0dlbmVyaWNCb3VuZC5qYXZhCkBAIC0wLDAgKzEsMiBAQAorcHVibGljIGNsYXNzIEdlbmVyaWNCb3VuZDxUIGV4dGVuZHMgUGFyZW50PiB7Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9hcmd1bWVudENvbnRhaW5tZW50Mi9zcmMvUGFyZW50LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9hcmd1bWVudENvbnRhaW5tZW50Mi9zcmMvUGFyZW50LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWRmNmQ4ZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2dlbmVyaWNzL2FyZ3VtZW50Q29udGFpbm1lbnQyL3NyYy9QYXJlbnQuamF2YQpAQCAtMCwwICsxLDIgQEAKK3B1YmxpYyBjbGFzcyBQYXJlbnQgeworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZ2VuZXJpY3MvYXJndW1lbnRDb250YWlubWVudDIvc3JjL1N1Yi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZ2VuZXJpY3MvYXJndW1lbnRDb250YWlubWVudDIvc3JjL1N1Yi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA2NGRhYzUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9hcmd1bWVudENvbnRhaW5tZW50Mi9zcmMvU3ViLmphdmEKQEAgLTAsMCArMSwyIEBACitwdWJsaWMgY2xhc3MgU3ViIGV4dGVuZHMgUGFyZW50IHsKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2dlbmVyaWNzL2FyZ3VtZW50Q29udGFpbm1lbnQyL3NyYy9TdWIyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9hcmd1bWVudENvbnRhaW5tZW50Mi9zcmMvU3ViMi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlmNWNlYmQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9hcmd1bWVudENvbnRhaW5tZW50Mi9zcmMvU3ViMi5qYXZhCkBAIC0wLDAgKzEsMiBAQAorcHVibGljIGNsYXNzIFN1YjIgZXh0ZW5kcyBTdWJ7Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9hcmd1bWVudENvbnRhaW5tZW50My5sb2cgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9hcmd1bWVudENvbnRhaW5tZW50My5sb2cKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTYyNTM2ZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2dlbmVyaWNzL2FyZ3VtZW50Q29udGFpbm1lbnQzLmxvZwpAQCAtMCwwICsxLDE0IEBACitDbGVhbmluZyBvdXRwdXQgZmlsZXM6CitvdXQvcHJvZHVjdGlvbi9Bcmd1bWVudENvbnRhaW5tZW50My9TdWIyLmNsYXNzCitFbmQgb2YgZmlsZXMKK0NvbXBpbGluZyBmaWxlczoKK3NyYy9TdWIyLmphdmEKK0VuZCBvZiBmaWxlcworQ2xlYW5pbmcgb3V0cHV0IGZpbGVzOgorb3V0L3Byb2R1Y3Rpb24vQXJndW1lbnRDb250YWlubWVudDMvQ2FwdHVyZUNyZWF0b3IyLmNsYXNzCitvdXQvcHJvZHVjdGlvbi9Bcmd1bWVudENvbnRhaW5tZW50My9HZW5lcmljQm91bmQuY2xhc3MKK0VuZCBvZiBmaWxlcworQ29tcGlsaW5nIGZpbGVzOgorc3JjL0NhcHR1cmVDcmVhdG9yMi5qYXZhCitzcmMvR2VuZXJpY0JvdW5kLmphdmEKK0VuZCBvZiBmaWxlcwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZ2VuZXJpY3MvYXJndW1lbnRDb250YWlubWVudDMvU3ViMi5qYXZhLm5ldyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2dlbmVyaWNzL2FyZ3VtZW50Q29udGFpbm1lbnQzL1N1YjIuamF2YS5uZXcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzczMjZiNwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2dlbmVyaWNzL2FyZ3VtZW50Q29udGFpbm1lbnQzL1N1YjIuamF2YS5uZXcKQEAgLTAsMCArMSwyIEBACitwdWJsaWMgY2xhc3MgU3ViMiBleHRlbmRzIFBhcmVudCB7Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9hcmd1bWVudENvbnRhaW5tZW50My9zcmMvQ2FwdHVyZUNyZWF0b3IuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2dlbmVyaWNzL2FyZ3VtZW50Q29udGFpbm1lbnQzL3NyYy9DYXB0dXJlQ3JlYXRvci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU4ZmY4Y2MKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9hcmd1bWVudENvbnRhaW5tZW50My9zcmMvQ2FwdHVyZUNyZWF0b3IuamF2YQpAQCAtMCwwICsxLDQgQEAKK3B1YmxpYyBjbGFzcyBDYXB0dXJlQ3JlYXRvciB7CisgICAgcHVibGljIHZvaWQgY29udGV4dChHZW5lcmljQm91bmQ8PyBleHRlbmRzIFBhcmVudD4gcCkgeworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2dlbmVyaWNzL2FyZ3VtZW50Q29udGFpbm1lbnQzL3NyYy9DYXB0dXJlQ3JlYXRvcjIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2dlbmVyaWNzL2FyZ3VtZW50Q29udGFpbm1lbnQzL3NyYy9DYXB0dXJlQ3JlYXRvcjIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYzllZDY5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZ2VuZXJpY3MvYXJndW1lbnRDb250YWlubWVudDMvc3JjL0NhcHR1cmVDcmVhdG9yMi5qYXZhCkBAIC0wLDAgKzEsNCBAQAorcHVibGljIGNsYXNzIENhcHR1cmVDcmVhdG9yMiB7CisgICAgcHVibGljIHZvaWQgY29udGV4dChHZW5lcmljQm91bmQ8PyBleHRlbmRzIFN1Yj4gcCkgeworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2dlbmVyaWNzL2FyZ3VtZW50Q29udGFpbm1lbnQzL3NyYy9HZW5lcmljQm91bmQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2dlbmVyaWNzL2FyZ3VtZW50Q29udGFpbm1lbnQzL3NyYy9HZW5lcmljQm91bmQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ODFkOTQ2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZ2VuZXJpY3MvYXJndW1lbnRDb250YWlubWVudDMvc3JjL0dlbmVyaWNCb3VuZC5qYXZhCkBAIC0wLDAgKzEsMiBAQAorcHVibGljIGNsYXNzIEdlbmVyaWNCb3VuZDxUIGV4dGVuZHMgU3ViMj4geworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZ2VuZXJpY3MvYXJndW1lbnRDb250YWlubWVudDMvc3JjL1BhcmVudC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZ2VuZXJpY3MvYXJndW1lbnRDb250YWlubWVudDMvc3JjL1BhcmVudC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVkZjZkOGUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9hcmd1bWVudENvbnRhaW5tZW50My9zcmMvUGFyZW50LmphdmEKQEAgLTAsMCArMSwyIEBACitwdWJsaWMgY2xhc3MgUGFyZW50IHsKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2dlbmVyaWNzL2FyZ3VtZW50Q29udGFpbm1lbnQzL3NyYy9TdWIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2dlbmVyaWNzL2FyZ3VtZW50Q29udGFpbm1lbnQzL3NyYy9TdWIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNjRkYWM1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZ2VuZXJpY3MvYXJndW1lbnRDb250YWlubWVudDMvc3JjL1N1Yi5qYXZhCkBAIC0wLDAgKzEsMiBAQAorcHVibGljIGNsYXNzIFN1YiBleHRlbmRzIFBhcmVudCB7Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9hcmd1bWVudENvbnRhaW5tZW50My9zcmMvU3ViMi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZ2VuZXJpY3MvYXJndW1lbnRDb250YWlubWVudDMvc3JjL1N1YjIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZGVkNmNlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZ2VuZXJpY3MvYXJndW1lbnRDb250YWlubWVudDMvc3JjL1N1YjIuamF2YQpAQCAtMCwwICsxLDIgQEAKK3B1YmxpYyBjbGFzcyBTdWIyIGV4dGVuZHMgU3ViIHsKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2dlbmVyaWNzL2NoYW5nZUJvdW5kLmxvZyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2dlbmVyaWNzL2NoYW5nZUJvdW5kLmxvZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYjI1ZDdkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZ2VuZXJpY3MvY2hhbmdlQm91bmQubG9nCkBAIC0wLDAgKzEsMTIgQEAKK0NsZWFuaW5nIG91dHB1dCBmaWxlczoKK291dC9wcm9kdWN0aW9uL0NoYW5nZUJvdW5kL0EuY2xhc3MKK0VuZCBvZiBmaWxlcworQ29tcGlsaW5nIGZpbGVzOgorc3JjL0EuamF2YQorRW5kIG9mIGZpbGVzCitDbGVhbmluZyBvdXRwdXQgZmlsZXM6CitvdXQvcHJvZHVjdGlvbi9DaGFuZ2VCb3VuZC9DbGllbnQuY2xhc3MKK0VuZCBvZiBmaWxlcworQ29tcGlsaW5nIGZpbGVzOgorc3JjL0NsaWVudC5qYXZhCitFbmQgb2YgZmlsZXMKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2dlbmVyaWNzL2NoYW5nZUJvdW5kL0EuamF2YS5uZXcgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9jaGFuZ2VCb3VuZC9BLmphdmEubmV3Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdhYzQ4ZTkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9jaGFuZ2VCb3VuZC9BLmphdmEubmV3CkBAIC0wLDAgKzEsMyBAQAorcHVibGljIGNsYXNzIEE8VCBleHRlbmRzIFN0cmluZz4geworICBUIGZvbygpIHtyZXR1cm4gbnVsbDt9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZ2VuZXJpY3MvY2hhbmdlQm91bmQvc3JjL0EuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2dlbmVyaWNzL2NoYW5nZUJvdW5kL3NyYy9BLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzRkNjMzMwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2dlbmVyaWNzL2NoYW5nZUJvdW5kL3NyYy9BLmphdmEKQEAgLTAsMCArMSwzIEBACitwdWJsaWMgY2xhc3MgQTxUIGV4dGVuZHMgVmFsdWU+IHsKKyAgVCBmb28oKSB7cmV0dXJuIG51bGw7fQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2dlbmVyaWNzL2NoYW5nZUJvdW5kL3NyYy9DbGllbnQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2dlbmVyaWNzL2NoYW5nZUJvdW5kL3NyYy9DbGllbnQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNTc2NmY1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZ2VuZXJpY3MvY2hhbmdlQm91bmQvc3JjL0NsaWVudC5qYXZhCkBAIC0wLDAgKzEsNSBAQAorcHVibGljIGNsYXNzIENsaWVudCB7CisgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKKyAgICBPYmplY3QgdmFsdWUgPSBuZXcgQTxWYWx1ZUltcGw+KCkuZm9vKCk7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9jaGFuZ2VCb3VuZC9zcmMvVmFsdWUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2dlbmVyaWNzL2NoYW5nZUJvdW5kL3NyYy9WYWx1ZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgxYjc5YzMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9jaGFuZ2VCb3VuZC9zcmMvVmFsdWUuamF2YQpAQCAtMCwwICsxLDIgQEAKK3B1YmxpYyBjbGFzcyBWYWx1ZSB7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZ2VuZXJpY3MvY2hhbmdlQm91bmQvc3JjL1ZhbHVlSW1wbC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZ2VuZXJpY3MvY2hhbmdlQm91bmQvc3JjL1ZhbHVlSW1wbC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ1MTkyZTkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9jaGFuZ2VCb3VuZC9zcmMvVmFsdWVJbXBsLmphdmEKQEAgLTAsMCArMSwyIEBACitwdWJsaWMgY2xhc3MgVmFsdWVJbXBsIGV4dGVuZHMgVmFsdWUgeworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2dlbmVyaWNzL2NoYW5nZUJvdW5kMS5sb2cgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9jaGFuZ2VCb3VuZDEubG9nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMzMDM0NWUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9jaGFuZ2VCb3VuZDEubG9nCkBAIC0wLDAgKzEsMTIgQEAKK0NsZWFuaW5nIG91dHB1dCBmaWxlczoKK291dC9wcm9kdWN0aW9uL0NoYW5nZUJvdW5kMS9BLmNsYXNzCitFbmQgb2YgZmlsZXMKK0NvbXBpbGluZyBmaWxlczoKK3NyYy9BLmphdmEKK0VuZCBvZiBmaWxlcworQ2xlYW5pbmcgb3V0cHV0IGZpbGVzOgorb3V0L3Byb2R1Y3Rpb24vQ2hhbmdlQm91bmQxL0NsaWVudC5jbGFzcworRW5kIG9mIGZpbGVzCitDb21waWxpbmcgZmlsZXM6CitzcmMvQ2xpZW50LmphdmEKK0VuZCBvZiBmaWxlcwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZ2VuZXJpY3MvY2hhbmdlQm91bmQxL0EuamF2YS5uZXcgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9jaGFuZ2VCb3VuZDEvQS5qYXZhLm5ldwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNWZiYTA5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZ2VuZXJpY3MvY2hhbmdlQm91bmQxL0EuamF2YS5uZXcKQEAgLTAsMCArMSwzIEBACitwdWJsaWMgY2xhc3MgQTxUIGV4dGVuZHMgU3RyaW5nPiB7CisgIHZvaWQgZm9vKFQgdCkge30KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9jaGFuZ2VCb3VuZDEvc3JjL0EuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2dlbmVyaWNzL2NoYW5nZUJvdW5kMS9zcmMvQS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY0NGU3NjYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9jaGFuZ2VCb3VuZDEvc3JjL0EuamF2YQpAQCAtMCwwICsxLDMgQEAKK3B1YmxpYyBjbGFzcyBBPFQgZXh0ZW5kcyBWYWx1ZT4geworICB2b2lkIGZvbyhUIHQpIHt9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZ2VuZXJpY3MvY2hhbmdlQm91bmQxL3NyYy9DbGllbnQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2dlbmVyaWNzL2NoYW5nZUJvdW5kMS9zcmMvQ2xpZW50LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjg5ZTFlMQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2dlbmVyaWNzL2NoYW5nZUJvdW5kMS9zcmMvQ2xpZW50LmphdmEKQEAgLTAsMCArMSw1IEBACitwdWJsaWMgY2xhc3MgQ2xpZW50IHsKKyAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgeworICAgIG5ldyBBPFZhbHVlSW1wbD4oKS5mb28obmV3IFZhbHVlSW1wbCgpKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2dlbmVyaWNzL2NoYW5nZUJvdW5kMS9zcmMvVmFsdWUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2dlbmVyaWNzL2NoYW5nZUJvdW5kMS9zcmMvVmFsdWUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MWI3OWMzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZ2VuZXJpY3MvY2hhbmdlQm91bmQxL3NyYy9WYWx1ZS5qYXZhCkBAIC0wLDAgKzEsMiBAQAorcHVibGljIGNsYXNzIFZhbHVlIHsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9jaGFuZ2VCb3VuZDEvc3JjL1ZhbHVlSW1wbC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZ2VuZXJpY3MvY2hhbmdlQm91bmQxL3NyYy9WYWx1ZUltcGwuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNTE5MmU5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZ2VuZXJpY3MvY2hhbmdlQm91bmQxL3NyYy9WYWx1ZUltcGwuamF2YQpAQCAtMCwwICsxLDIgQEAKK3B1YmxpYyBjbGFzcyBWYWx1ZUltcGwgZXh0ZW5kcyBWYWx1ZSB7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZ2VuZXJpY3MvY2hhbmdlQm91bmRDbGFzczEubG9nIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZ2VuZXJpY3MvY2hhbmdlQm91bmRDbGFzczEubG9nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNjNWExZDEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9jaGFuZ2VCb3VuZENsYXNzMS5sb2cKQEAgLTAsMCArMSw5IEBACitDbGVhbmluZyBvdXRwdXQgZmlsZXM6CitvdXQvcHJvZHVjdGlvbi9DaGFuZ2VCb3VuZENsYXNzMS9WYWx1ZS5jbGFzcworRW5kIG9mIGZpbGVzCitDbGVhbmluZyBvdXRwdXQgZmlsZXM6CitvdXQvcHJvZHVjdGlvbi9DaGFuZ2VCb3VuZENsYXNzMS9BLmNsYXNzCitFbmQgb2YgZmlsZXMKK0NvbXBpbGluZyBmaWxlczoKK3NyYy9BLmphdmEKK0VuZCBvZiBmaWxlcwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZ2VuZXJpY3MvY2hhbmdlQm91bmRDbGFzczEvVmFsdWUuamF2YS5yZW1vdmUgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9jaGFuZ2VCb3VuZENsYXNzMS9WYWx1ZS5qYXZhLnJlbW92ZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNjlkZTI5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZ2VuZXJpY3MvY2hhbmdlQm91bmRDbGFzczEvVmFsdWUuamF2YS5yZW1vdmUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2dlbmVyaWNzL2NoYW5nZUJvdW5kQ2xhc3MxL3NyYy9BLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9jaGFuZ2VCb3VuZENsYXNzMS9zcmMvQS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIzNDMxYzEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9jaGFuZ2VCb3VuZENsYXNzMS9zcmMvQS5qYXZhCkBAIC0wLDAgKzEsMiBAQAorcHVibGljIGNsYXNzIEE8VCBleHRlbmRzIFZhbHVlPiB7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZ2VuZXJpY3MvY2hhbmdlQm91bmRDbGFzczEvc3JjL1ZhbHVlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9jaGFuZ2VCb3VuZENsYXNzMS9zcmMvVmFsdWUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MWI3OWMzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZ2VuZXJpY3MvY2hhbmdlQm91bmRDbGFzczEvc3JjL1ZhbHVlLmphdmEKQEAgLTAsMCArMSwyIEBACitwdWJsaWMgY2xhc3MgVmFsdWUgeworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2dlbmVyaWNzL2NoYW5nZUJvdW5kSW50ZXJmYWNlMS5sb2cgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9jaGFuZ2VCb3VuZEludGVyZmFjZTEubG9nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEyYmI3YmEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9jaGFuZ2VCb3VuZEludGVyZmFjZTEubG9nCkBAIC0wLDAgKzEsMTIgQEAKK0NsZWFuaW5nIG91dHB1dCBmaWxlczoKK291dC9wcm9kdWN0aW9uL0NoYW5nZUJvdW5kSW50ZXJmYWNlMS9JLmNsYXNzCitFbmQgb2YgZmlsZXMKK0NvbXBpbGluZyBmaWxlczoKK3NyYy9JLmphdmEKK0VuZCBvZiBmaWxlcworQ2xlYW5pbmcgb3V0cHV0IGZpbGVzOgorb3V0L3Byb2R1Y3Rpb24vQ2hhbmdlQm91bmRJbnRlcmZhY2UxL0EuY2xhc3MKK0VuZCBvZiBmaWxlcworQ29tcGlsaW5nIGZpbGVzOgorc3JjL0EuamF2YQorRW5kIG9mIGZpbGVzCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9jaGFuZ2VCb3VuZEludGVyZmFjZTEvSS5qYXZhLm5ldyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2dlbmVyaWNzL2NoYW5nZUJvdW5kSW50ZXJmYWNlMS9JLmphdmEubmV3Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg1NGYzYjkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9jaGFuZ2VCb3VuZEludGVyZmFjZTEvSS5qYXZhLm5ldwpAQCAtMCwwICsxLDMgQEAKK3B1YmxpYyBjbGFzcyBJIHsKKyAgdm9pZCBiYXIoKSB7fQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2dlbmVyaWNzL2NoYW5nZUJvdW5kSW50ZXJmYWNlMS9zcmMvQS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZ2VuZXJpY3MvY2hhbmdlQm91bmRJbnRlcmZhY2UxL3NyYy9BLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWU3MWY3MgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2dlbmVyaWNzL2NoYW5nZUJvdW5kSW50ZXJmYWNlMS9zcmMvQS5qYXZhCkBAIC0wLDAgKzEsMyBAQAorcHVibGljIGNsYXNzIEE8VCBleHRlbmRzIFZhbHVlICYgST4geworICB2b2lkIGZvbyhUIHQpIHt0LmZvbygpO30KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9jaGFuZ2VCb3VuZEludGVyZmFjZTEvc3JjL0kuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2dlbmVyaWNzL2NoYW5nZUJvdW5kSW50ZXJmYWNlMS9zcmMvSS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNhMmVlMzIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9jaGFuZ2VCb3VuZEludGVyZmFjZTEvc3JjL0kuamF2YQpAQCAtMCwwICsxLDMgQEAKK3B1YmxpYyBpbnRlcmZhY2UgSSB7CisgIHZvaWQgYmFyKCk7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZ2VuZXJpY3MvY2hhbmdlQm91bmRJbnRlcmZhY2UxL3NyYy9WYWx1ZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZ2VuZXJpY3MvY2hhbmdlQm91bmRJbnRlcmZhY2UxL3NyYy9WYWx1ZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhhNDhhMmIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9jaGFuZ2VCb3VuZEludGVyZmFjZTEvc3JjL1ZhbHVlLmphdmEKQEAgLTAsMCArMSwzIEBACitwdWJsaWMgY2xhc3MgVmFsdWUgeworICB2b2lkIGZvbygpIHt9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZ2VuZXJpY3MvY2hhbmdlQm91bmRlZENsYXNzLmxvZyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2dlbmVyaWNzL2NoYW5nZUJvdW5kZWRDbGFzcy5sb2cKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmI0MTZiZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2dlbmVyaWNzL2NoYW5nZUJvdW5kZWRDbGFzcy5sb2cKQEAgLTAsMCArMSwxMiBAQAorQ2xlYW5pbmcgb3V0cHV0IGZpbGVzOgorb3V0L3Byb2R1Y3Rpb24vQ2hhbmdlQm91bmRlZENsYXNzL1ZhbHVlLmNsYXNzCitFbmQgb2YgZmlsZXMKK0NvbXBpbGluZyBmaWxlczoKK3NyYy9WYWx1ZS5qYXZhCitFbmQgb2YgZmlsZXMKK0NsZWFuaW5nIG91dHB1dCBmaWxlczoKK291dC9wcm9kdWN0aW9uL0NoYW5nZUJvdW5kZWRDbGFzcy9BLmNsYXNzCitFbmQgb2YgZmlsZXMKK0NvbXBpbGluZyBmaWxlczoKK3NyYy9BLmphdmEKK0VuZCBvZiBmaWxlcwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZ2VuZXJpY3MvY2hhbmdlQm91bmRlZENsYXNzL1ZhbHVlLmphdmEubmV3IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZ2VuZXJpY3MvY2hhbmdlQm91bmRlZENsYXNzL1ZhbHVlLmphdmEubmV3Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgxYjc5YzMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9jaGFuZ2VCb3VuZGVkQ2xhc3MvVmFsdWUuamF2YS5uZXcKQEAgLTAsMCArMSwyIEBACitwdWJsaWMgY2xhc3MgVmFsdWUgeworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2dlbmVyaWNzL2NoYW5nZUJvdW5kZWRDbGFzcy9zcmMvQS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZ2VuZXJpY3MvY2hhbmdlQm91bmRlZENsYXNzL3NyYy9BLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmE0OWUwMgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2dlbmVyaWNzL2NoYW5nZUJvdW5kZWRDbGFzcy9zcmMvQS5qYXZhCkBAIC0wLDAgKzEsMyBAQAorcHVibGljIGNsYXNzIEE8VCBleHRlbmRzIFZhbHVlPiB7CisgIHZvaWQgZm9vKFQgdCkge3QuZm9vKCk7fQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2dlbmVyaWNzL2NoYW5nZUJvdW5kZWRDbGFzcy9zcmMvVmFsdWUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2dlbmVyaWNzL2NoYW5nZUJvdW5kZWRDbGFzcy9zcmMvVmFsdWUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YTQ4YTJiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZ2VuZXJpY3MvY2hhbmdlQm91bmRlZENsYXNzL3NyYy9WYWx1ZS5qYXZhCkBAIC0wLDAgKzEsMyBAQAorcHVibGljIGNsYXNzIFZhbHVlIHsKKyAgdm9pZCBmb28oKSB7fQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2dlbmVyaWNzL2NoYW5nZUV4dGVuZHMubG9nIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZ2VuZXJpY3MvY2hhbmdlRXh0ZW5kcy5sb2cKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGNiYTA0MAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2dlbmVyaWNzL2NoYW5nZUV4dGVuZHMubG9nCkBAIC0wLDAgKzEsMTYgQEAKK0NsZWFuaW5nIG91dHB1dCBmaWxlczoKK291dC9wcm9kdWN0aW9uL0NoYW5nZUV4dGVuZHMvU3VwZXIuY2xhc3MKK0VuZCBvZiBmaWxlcworQ29tcGlsaW5nIGZpbGVzOgorc3JjL1N1cGVyLmphdmEKK0VuZCBvZiBmaWxlcworQ2xlYW5pbmcgb3V0cHV0IGZpbGVzOgorb3V0L3Byb2R1Y3Rpb24vQ2hhbmdlRXh0ZW5kcy9DbGllbnQuY2xhc3MKK291dC9wcm9kdWN0aW9uL0NoYW5nZUV4dGVuZHMvQ2xpZW50Mi5jbGFzcworb3V0L3Byb2R1Y3Rpb24vQ2hhbmdlRXh0ZW5kcy9DbGllbnQzLmNsYXNzCitFbmQgb2YgZmlsZXMKK0NvbXBpbGluZyBmaWxlczoKK3NyYy9DbGllbnQuamF2YQorc3JjL0NsaWVudDIuamF2YQorc3JjL0NsaWVudDMuamF2YQorRW5kIG9mIGZpbGVzCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9jaGFuZ2VFeHRlbmRzL1N1cGVyLmphdmEubmV3IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZ2VuZXJpY3MvY2hhbmdlRXh0ZW5kcy9TdXBlci5qYXZhLm5ldwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MzRhNTQxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZ2VuZXJpY3MvY2hhbmdlRXh0ZW5kcy9TdXBlci5qYXZhLm5ldwpAQCAtMCwwICsxLDMgQEAKK2NsYXNzIFN1cGVyIGV4dGVuZHMgSHlwZXI8U3RyaW5nPiB7CisgIGNoYXIgcyA9ICdzJzsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9jaGFuZ2VFeHRlbmRzL3NyYy9DbGllbnQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2dlbmVyaWNzL2NoYW5nZUV4dGVuZHMvc3JjL0NsaWVudC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdiZDZkMzcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9jaGFuZ2VFeHRlbmRzL3NyYy9DbGllbnQuamF2YQpAQCAtMCwwICsxLDcgQEAKK2NsYXNzIENsaWVudCB7CisgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKKyAgICBTdXBlciBzID0gbmV3IFN1cGVyKCk7CisgICAgcy5oID0gbmV3IEludGVnZXIoMTApOworICAgIFN5c3RlbS5vdXQucHJpbnRsbihzLmgpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZ2VuZXJpY3MvY2hhbmdlRXh0ZW5kcy9zcmMvQ2xpZW50Mi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZ2VuZXJpY3MvY2hhbmdlRXh0ZW5kcy9zcmMvQ2xpZW50Mi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg5MDBkMDIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9jaGFuZ2VFeHRlbmRzL3NyYy9DbGllbnQyLmphdmEKQEAgLTAsMCArMSw0IEBACitjbGFzcyBDbGllbnQyIGV4dGVuZHMgU3VwZXIgeworICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9jaGFuZ2VFeHRlbmRzL3NyYy9DbGllbnQzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9jaGFuZ2VFeHRlbmRzL3NyYy9DbGllbnQzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjczZmQ4NAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2dlbmVyaWNzL2NoYW5nZUV4dGVuZHMvc3JjL0NsaWVudDMuamF2YQpAQCAtMCwwICsxLDQgQEAKK2NsYXNzIENsaWVudDMgZXh0ZW5kcyBDbGllbnQyIHsKKyAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgeworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZ2VuZXJpY3MvY2hhbmdlRXh0ZW5kcy9zcmMvSHlwZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2dlbmVyaWNzL2NoYW5nZUV4dGVuZHMvc3JjL0h5cGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDNkMjY0ZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2dlbmVyaWNzL2NoYW5nZUV4dGVuZHMvc3JjL0h5cGVyLmphdmEKQEAgLTAsMCArMSwzIEBACitjbGFzcyBIeXBlcjxUPiB7CisgIFQgaDsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9jaGFuZ2VFeHRlbmRzL3NyYy9TdXBlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZ2VuZXJpY3MvY2hhbmdlRXh0ZW5kcy9zcmMvU3VwZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jODg1NTJiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZ2VuZXJpY3MvY2hhbmdlRXh0ZW5kcy9zcmMvU3VwZXIuamF2YQpAQCAtMCwwICsxLDMgQEAKK2NsYXNzIFN1cGVyIGV4dGVuZHMgSHlwZXI8SW50ZWdlcj4geworICBjaGFyIHMgPSAncyc7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZ2VuZXJpY3MvY2hhbmdlRXh0ZW5kczEubG9nIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZ2VuZXJpY3MvY2hhbmdlRXh0ZW5kczEubG9nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE0YWFhZTQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9jaGFuZ2VFeHRlbmRzMS5sb2cKQEAgLTAsMCArMSwxNiBAQAorQ2xlYW5pbmcgb3V0cHV0IGZpbGVzOgorb3V0L3Byb2R1Y3Rpb24vQ2hhbmdlRXh0ZW5kczEvU3VwZXIuY2xhc3MKK0VuZCBvZiBmaWxlcworQ29tcGlsaW5nIGZpbGVzOgorc3JjL1N1cGVyLmphdmEKK0VuZCBvZiBmaWxlcworQ2xlYW5pbmcgb3V0cHV0IGZpbGVzOgorb3V0L3Byb2R1Y3Rpb24vQ2hhbmdlRXh0ZW5kczEvQ2xpZW50LmNsYXNzCitvdXQvcHJvZHVjdGlvbi9DaGFuZ2VFeHRlbmRzMS9DbGllbnQyLmNsYXNzCitvdXQvcHJvZHVjdGlvbi9DaGFuZ2VFeHRlbmRzMS9DbGllbnQzLmNsYXNzCitFbmQgb2YgZmlsZXMKK0NvbXBpbGluZyBmaWxlczoKK3NyYy9DbGllbnQuamF2YQorc3JjL0NsaWVudDIuamF2YQorc3JjL0NsaWVudDMuamF2YQorRW5kIG9mIGZpbGVzCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9jaGFuZ2VFeHRlbmRzMS9TdXBlci5qYXZhLm5ldyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2dlbmVyaWNzL2NoYW5nZUV4dGVuZHMxL1N1cGVyLmphdmEubmV3Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM4ODU1MmIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9jaGFuZ2VFeHRlbmRzMS9TdXBlci5qYXZhLm5ldwpAQCAtMCwwICsxLDMgQEAKK2NsYXNzIFN1cGVyIGV4dGVuZHMgSHlwZXI8SW50ZWdlcj4geworICBjaGFyIHMgPSAncyc7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZ2VuZXJpY3MvY2hhbmdlRXh0ZW5kczEvc3JjL0NsaWVudC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZ2VuZXJpY3MvY2hhbmdlRXh0ZW5kczEvc3JjL0NsaWVudC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM3ZGVhNzYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9jaGFuZ2VFeHRlbmRzMS9zcmMvQ2xpZW50LmphdmEKQEAgLTAsMCArMSw1IEBACitjbGFzcyBDbGllbnQgeworICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CisgICAgbmV3IFN1cGVyKCk7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9jaGFuZ2VFeHRlbmRzMS9zcmMvQ2xpZW50Mi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZ2VuZXJpY3MvY2hhbmdlRXh0ZW5kczEvc3JjL0NsaWVudDIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44OTAwZDAyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZ2VuZXJpY3MvY2hhbmdlRXh0ZW5kczEvc3JjL0NsaWVudDIuamF2YQpAQCAtMCwwICsxLDQgQEAKK2NsYXNzIENsaWVudDIgZXh0ZW5kcyBTdXBlciB7CisgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2dlbmVyaWNzL2NoYW5nZUV4dGVuZHMxL3NyYy9DbGllbnQzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9jaGFuZ2VFeHRlbmRzMS9zcmMvQ2xpZW50My5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY3M2ZkODQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9jaGFuZ2VFeHRlbmRzMS9zcmMvQ2xpZW50My5qYXZhCkBAIC0wLDAgKzEsNCBAQAorY2xhc3MgQ2xpZW50MyBleHRlbmRzIENsaWVudDIgeworICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9jaGFuZ2VFeHRlbmRzMS9zcmMvSHlwZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2dlbmVyaWNzL2NoYW5nZUV4dGVuZHMxL3NyYy9IeXBlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU1YmYzZDcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9jaGFuZ2VFeHRlbmRzMS9zcmMvSHlwZXIuamF2YQpAQCAtMCwwICsxLDMgQEAKK2NsYXNzIEh5cGVyPFQ+IHsKKyBUIGg7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZ2VuZXJpY3MvY2hhbmdlRXh0ZW5kczEvc3JjL1N1cGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9jaGFuZ2VFeHRlbmRzMS9zcmMvU3VwZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ODQ0OWEzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZ2VuZXJpY3MvY2hhbmdlRXh0ZW5kczEvc3JjL1N1cGVyLmphdmEKQEAgLTAsMCArMSwzIEBACitjbGFzcyBTdXBlciBleHRlbmRzIEh5cGVyIHsKKyAgY2hhciBzID0gJ3MnOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2dlbmVyaWNzL2NoYW5nZUV4dGVuZHMyLmxvZyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2dlbmVyaWNzL2NoYW5nZUV4dGVuZHMyLmxvZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZjY0YTFiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZ2VuZXJpY3MvY2hhbmdlRXh0ZW5kczIubG9nCkBAIC0wLDAgKzEsMTIgQEAKK0NsZWFuaW5nIG91dHB1dCBmaWxlczoKK291dC9wcm9kdWN0aW9uL0NoYW5nZUV4dGVuZHMyL1N1cGVyLmNsYXNzCitFbmQgb2YgZmlsZXMKK0NvbXBpbGluZyBmaWxlczoKK3NyYy9TdXBlci5qYXZhCitFbmQgb2YgZmlsZXMKK0NsZWFuaW5nIG91dHB1dCBmaWxlczoKK291dC9wcm9kdWN0aW9uL0NoYW5nZUV4dGVuZHMyL0NsaWVudC5jbGFzcworRW5kIG9mIGZpbGVzCitDb21waWxpbmcgZmlsZXM6CitzcmMvQ2xpZW50LmphdmEKK0VuZCBvZiBmaWxlcwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZ2VuZXJpY3MvY2hhbmdlRXh0ZW5kczIvU3VwZXIuamF2YS5uZXcgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9jaGFuZ2VFeHRlbmRzMi9TdXBlci5qYXZhLm5ldwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNzg5ZTE0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZ2VuZXJpY3MvY2hhbmdlRXh0ZW5kczIvU3VwZXIuamF2YS5uZXcKQEAgLTAsMCArMSwyIEBACitjbGFzcyBTdXBlciBleHRlbmRzIEh5cGVyPEludGVnZXI+IHsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9jaGFuZ2VFeHRlbmRzMi9zcmMvQ2xpZW50LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9jaGFuZ2VFeHRlbmRzMi9zcmMvQ2xpZW50LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGMyMDc4YQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2dlbmVyaWNzL2NoYW5nZUV4dGVuZHMyL3NyYy9DbGllbnQuamF2YQpAQCAtMCwwICsxLDUgQEAKK2NsYXNzIENsaWVudCB7CisgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKKyAgICBuZXcgU3VwZXIoKS5mb28obmV3IE9iamVjdCgpKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2dlbmVyaWNzL2NoYW5nZUV4dGVuZHMyL3NyYy9IeXBlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZ2VuZXJpY3MvY2hhbmdlRXh0ZW5kczIvc3JjL0h5cGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2UyZGY2YwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2dlbmVyaWNzL2NoYW5nZUV4dGVuZHMyL3NyYy9IeXBlci5qYXZhCkBAIC0wLDAgKzEsMyBAQAorY2xhc3MgSHlwZXI8VD4geworIHZvaWQgZm9vKFQgdCkge30KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9jaGFuZ2VFeHRlbmRzMi9zcmMvU3VwZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2dlbmVyaWNzL2NoYW5nZUV4dGVuZHMyL3NyYy9TdXBlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM2MmU1NWQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9jaGFuZ2VFeHRlbmRzMi9zcmMvU3VwZXIuamF2YQpAQCAtMCwwICsxLDIgQEAKK2NsYXNzIFN1cGVyIGV4dGVuZHMgSHlwZXIgeworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2dlbmVyaWNzL2NoYW5nZUltcGxlbWVudHMubG9nIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZ2VuZXJpY3MvY2hhbmdlSW1wbGVtZW50cy5sb2cKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2UxNWZlNAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2dlbmVyaWNzL2NoYW5nZUltcGxlbWVudHMubG9nCkBAIC0wLDAgKzEsMTYgQEAKK0NsZWFuaW5nIG91dHB1dCBmaWxlczoKK291dC9wcm9kdWN0aW9uL0NoYW5nZUltcGxlbWVudHMvU3VwZXIuY2xhc3MKK0VuZCBvZiBmaWxlcworQ29tcGlsaW5nIGZpbGVzOgorc3JjL1N1cGVyLmphdmEKK0VuZCBvZiBmaWxlcworQ2xlYW5pbmcgb3V0cHV0IGZpbGVzOgorb3V0L3Byb2R1Y3Rpb24vQ2hhbmdlSW1wbGVtZW50cy9DbGllbnQuY2xhc3MKK291dC9wcm9kdWN0aW9uL0NoYW5nZUltcGxlbWVudHMvQ2xpZW50Mi5jbGFzcworb3V0L3Byb2R1Y3Rpb24vQ2hhbmdlSW1wbGVtZW50cy9DbGllbnQzLmNsYXNzCitFbmQgb2YgZmlsZXMKK0NvbXBpbGluZyBmaWxlczoKK3NyYy9DbGllbnQuamF2YQorc3JjL0NsaWVudDIuamF2YQorc3JjL0NsaWVudDMuamF2YQorRW5kIG9mIGZpbGVzCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9jaGFuZ2VJbXBsZW1lbnRzL1N1cGVyLmphdmEubmV3IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZ2VuZXJpY3MvY2hhbmdlSW1wbGVtZW50cy9TdXBlci5qYXZhLm5ldwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMzU0M2Y2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZ2VuZXJpY3MvY2hhbmdlSW1wbGVtZW50cy9TdXBlci5qYXZhLm5ldwpAQCAtMCwwICsxLDMgQEAKK2NsYXNzIFN1cGVyIGltcGxlbWVudHMgSHlwZXI8U3RyaW5nPiB7CisgIHB1YmxpYyB2b2lkIGZvbyhTdHJpbmcgdCkge30KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9jaGFuZ2VJbXBsZW1lbnRzL3NyYy9DbGllbnQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2dlbmVyaWNzL2NoYW5nZUltcGxlbWVudHMvc3JjL0NsaWVudC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZmYWY0ZTEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9jaGFuZ2VJbXBsZW1lbnRzL3NyYy9DbGllbnQuamF2YQpAQCAtMCwwICsxLDYgQEAKK2NsYXNzIENsaWVudCB7CisgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKKyAgICBIeXBlciBzID0gbmV3IFN1cGVyKCk7CisgICAgcy5mb28obmV3IEludGVnZXIoMTApKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2dlbmVyaWNzL2NoYW5nZUltcGxlbWVudHMvc3JjL0NsaWVudDIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2dlbmVyaWNzL2NoYW5nZUltcGxlbWVudHMvc3JjL0NsaWVudDIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44OTAwZDAyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZ2VuZXJpY3MvY2hhbmdlSW1wbGVtZW50cy9zcmMvQ2xpZW50Mi5qYXZhCkBAIC0wLDAgKzEsNCBAQAorY2xhc3MgQ2xpZW50MiBleHRlbmRzIFN1cGVyIHsKKyAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgeworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZ2VuZXJpY3MvY2hhbmdlSW1wbGVtZW50cy9zcmMvQ2xpZW50My5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZ2VuZXJpY3MvY2hhbmdlSW1wbGVtZW50cy9zcmMvQ2xpZW50My5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY3M2ZkODQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9jaGFuZ2VJbXBsZW1lbnRzL3NyYy9DbGllbnQzLmphdmEKQEAgLTAsMCArMSw0IEBACitjbGFzcyBDbGllbnQzIGV4dGVuZHMgQ2xpZW50MiB7CisgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2dlbmVyaWNzL2NoYW5nZUltcGxlbWVudHMvc3JjL0h5cGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9jaGFuZ2VJbXBsZW1lbnRzL3NyYy9IeXBlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNmZGQ3ZDYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9jaGFuZ2VJbXBsZW1lbnRzL3NyYy9IeXBlci5qYXZhCkBAIC0wLDAgKzEsMyBAQAoraW50ZXJmYWNlIEh5cGVyPFQ+IHsKKyAgdm9pZCBmb28oVCB0KTsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9jaGFuZ2VJbXBsZW1lbnRzL3NyYy9TdXBlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZ2VuZXJpY3MvY2hhbmdlSW1wbGVtZW50cy9zcmMvU3VwZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMGExMzIxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZ2VuZXJpY3MvY2hhbmdlSW1wbGVtZW50cy9zcmMvU3VwZXIuamF2YQpAQCAtMCwwICsxLDMgQEAKK2NsYXNzIFN1cGVyIGltcGxlbWVudHMgSHlwZXI8SW50ZWdlcj4geworICBwdWJsaWMgdm9pZCBmb28oSW50ZWdlciB0KSB7fQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2dlbmVyaWNzL2NoYW5nZUludGVyZmFjZVR5cGVQYXJhbWV0ZXIubG9nIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZ2VuZXJpY3MvY2hhbmdlSW50ZXJmYWNlVHlwZVBhcmFtZXRlci5sb2cKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2YzMGI5MwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2dlbmVyaWNzL2NoYW5nZUludGVyZmFjZVR5cGVQYXJhbWV0ZXIubG9nCkBAIC0wLDAgKzEsMTIgQEAKK0NsZWFuaW5nIG91dHB1dCBmaWxlczoKK291dC9wcm9kdWN0aW9uL0NoYW5nZUludGVyZmFjZVR5cGVQYXJhbWV0ZXIvQi5jbGFzcworRW5kIG9mIGZpbGVzCitDb21waWxpbmcgZmlsZXM6CitzcmMvQi5qYXZhCitFbmQgb2YgZmlsZXMKK0NsZWFuaW5nIG91dHB1dCBmaWxlczoKK291dC9wcm9kdWN0aW9uL0NoYW5nZUludGVyZmFjZVR5cGVQYXJhbWV0ZXIvQy5jbGFzcworRW5kIG9mIGZpbGVzCitDb21waWxpbmcgZmlsZXM6CitzcmMvQy5qYXZhCitFbmQgb2YgZmlsZXMKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2dlbmVyaWNzL2NoYW5nZUludGVyZmFjZVR5cGVQYXJhbWV0ZXIvQi5qYXZhLm5ldyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2dlbmVyaWNzL2NoYW5nZUludGVyZmFjZVR5cGVQYXJhbWV0ZXIvQi5qYXZhLm5ldwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZDQzMzZiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZ2VuZXJpY3MvY2hhbmdlSW50ZXJmYWNlVHlwZVBhcmFtZXRlci9CLmphdmEubmV3CkBAIC0wLDAgKzEsMiBAQAorcHVibGljIGNsYXNzIEIgaW1wbGVtZW50cyBJPEludGVnZXI+IHsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9jaGFuZ2VJbnRlcmZhY2VUeXBlUGFyYW1ldGVyL3NyYy9CLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9jaGFuZ2VJbnRlcmZhY2VUeXBlUGFyYW1ldGVyL3NyYy9CLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjhjYzdlMwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2dlbmVyaWNzL2NoYW5nZUludGVyZmFjZVR5cGVQYXJhbWV0ZXIvc3JjL0IuamF2YQpAQCAtMCwwICsxLDIgQEAKK3B1YmxpYyBjbGFzcyBCIGltcGxlbWVudHMgSTxTdHJpbmc+IHsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9jaGFuZ2VJbnRlcmZhY2VUeXBlUGFyYW1ldGVyL3NyYy9DLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9jaGFuZ2VJbnRlcmZhY2VUeXBlUGFyYW1ldGVyL3NyYy9DLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDM5ZWU3NgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2dlbmVyaWNzL2NoYW5nZUludGVyZmFjZVR5cGVQYXJhbWV0ZXIvc3JjL0MuamF2YQpAQCAtMCwwICsxLDIgQEAKK3B1YmxpYyBjbGFzcyBDIGV4dGVuZHMgQiBpbXBsZW1lbnRzIEk8U3RyaW5nPiB7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZ2VuZXJpY3MvY2hhbmdlSW50ZXJmYWNlVHlwZVBhcmFtZXRlci9zcmMvSS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZ2VuZXJpY3MvY2hhbmdlSW50ZXJmYWNlVHlwZVBhcmFtZXRlci9zcmMvSS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI0NTU1YjUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9jaGFuZ2VJbnRlcmZhY2VUeXBlUGFyYW1ldGVyL3NyYy9JLmphdmEKQEAgLTAsMCArMSwyIEBACitwdWJsaWMgaW50ZXJmYWNlIEk8VD4geworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2dlbmVyaWNzL2NoYW5nZVRvQ292YXJpYW50TWV0aG9kSW5CYXNlLmxvZyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2dlbmVyaWNzL2NoYW5nZVRvQ292YXJpYW50TWV0aG9kSW5CYXNlLmxvZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZTA3YjY3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZ2VuZXJpY3MvY2hhbmdlVG9Db3ZhcmlhbnRNZXRob2RJbkJhc2UubG9nCkBAIC0wLDAgKzEsMTIgQEAKK0NsZWFuaW5nIG91dHB1dCBmaWxlczoKK291dC9wcm9kdWN0aW9uL0NoYW5nZVRvQ292YXJpYW50TWV0aG9kSW5CYXNlL21ha2V0ZXN0L0Jhc2VJbXBsZW1lbnRhdGlvbi5jbGFzcworRW5kIG9mIGZpbGVzCitDb21waWxpbmcgZmlsZXM6CitzcmMvbWFrZXRlc3QvQmFzZUltcGxlbWVudGF0aW9uLmphdmEKK0VuZCBvZiBmaWxlcworQ2xlYW5pbmcgb3V0cHV0IGZpbGVzOgorb3V0L3Byb2R1Y3Rpb24vQ2hhbmdlVG9Db3ZhcmlhbnRNZXRob2RJbkJhc2UvbWFrZXRlc3QvSUltcGwuY2xhc3MKK0VuZCBvZiBmaWxlcworQ29tcGlsaW5nIGZpbGVzOgorc3JjL21ha2V0ZXN0L0lJbXBsLmphdmEKK0VuZCBvZiBmaWxlcwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZ2VuZXJpY3MvY2hhbmdlVG9Db3ZhcmlhbnRNZXRob2RJbkJhc2UvZGF0YS54bWwgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9jaGFuZ2VUb0NvdmFyaWFudE1ldGhvZEluQmFzZS9kYXRhLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wOWQ1ZTg3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZ2VuZXJpY3MvY2hhbmdlVG9Db3ZhcmlhbnRNZXRob2RJbkJhc2UvZGF0YS54bWwKQEAgLTAsMCArMSwxMCBAQAorPHRlc3REYXRhPgorICA8ZGVsZXRlZF9ieV9tYWtlPgorICAgIDxmaWxlIHBhdGg9ImNsYXNzZXMvbWFrZXRlc3QvQmFzZUltcGxlbWVudGF0aW9uLmNsYXNzIiAvPgorICAgIDxmaWxlIHBhdGg9ImNsYXNzZXMvbWFrZXRlc3QvSUltcGwuY2xhc3MiIC8+CisgIDwvZGVsZXRlZF9ieV9tYWtlPgorCisgIDxyZWNvbXBpbGU+CisgICAgPGZpbGUgcGF0aD0ic291cmNlL21ha2V0ZXN0L0lJbXBsLmphdmEiIC8+CisgIDwvcmVjb21waWxlPgorPC90ZXN0RGF0YT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9jaGFuZ2VUb0NvdmFyaWFudE1ldGhvZEluQmFzZS9zcmMvbWFrZXRlc3QvQmFzZUltcGxlbWVudGF0aW9uLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9jaGFuZ2VUb0NvdmFyaWFudE1ldGhvZEluQmFzZS9zcmMvbWFrZXRlc3QvQmFzZUltcGxlbWVudGF0aW9uLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTlhZTI5ZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2dlbmVyaWNzL2NoYW5nZVRvQ292YXJpYW50TWV0aG9kSW5CYXNlL3NyYy9tYWtldGVzdC9CYXNlSW1wbGVtZW50YXRpb24uamF2YQpAQCAtMCwwICsxLDcgQEAKK3BhY2thZ2UgbWFrZXRlc3Q7CisKK3B1YmxpYyBjbGFzcyBCYXNlSW1wbGVtZW50YXRpb24geworICAgIHB1YmxpYyBEYXRhIGdldERhdGEoKSB7CisgICAgICAgIHJldHVybiBuZXcgRGF0YUV4KCk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZ2VuZXJpY3MvY2hhbmdlVG9Db3ZhcmlhbnRNZXRob2RJbkJhc2Uvc3JjL21ha2V0ZXN0L0Jhc2VJbXBsZW1lbnRhdGlvbi5qYXZhLm5ldyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2dlbmVyaWNzL2NoYW5nZVRvQ292YXJpYW50TWV0aG9kSW5CYXNlL3NyYy9tYWtldGVzdC9CYXNlSW1wbGVtZW50YXRpb24uamF2YS5uZXcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDc0OTI3MAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2dlbmVyaWNzL2NoYW5nZVRvQ292YXJpYW50TWV0aG9kSW5CYXNlL3NyYy9tYWtldGVzdC9CYXNlSW1wbGVtZW50YXRpb24uamF2YS5uZXcKQEAgLTAsMCArMSw3IEBACitwYWNrYWdlIG1ha2V0ZXN0OworCitwdWJsaWMgY2xhc3MgQmFzZUltcGxlbWVudGF0aW9uIHsKKyAgICBwdWJsaWMgRGF0YUV4IGdldERhdGEoKSB7CisgICAgICAgIHJldHVybiBuZXcgRGF0YUV4KCk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZ2VuZXJpY3MvY2hhbmdlVG9Db3ZhcmlhbnRNZXRob2RJbkJhc2Uvc3JjL21ha2V0ZXN0L0RhdGEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2dlbmVyaWNzL2NoYW5nZVRvQ292YXJpYW50TWV0aG9kSW5CYXNlL3NyYy9tYWtldGVzdC9EYXRhLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGYxZmVjZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2dlbmVyaWNzL2NoYW5nZVRvQ292YXJpYW50TWV0aG9kSW5CYXNlL3NyYy9tYWtldGVzdC9EYXRhLmphdmEKQEAgLTAsMCArMSw0IEBACitwYWNrYWdlIG1ha2V0ZXN0OworCitwdWJsaWMgY2xhc3MgRGF0YSB7Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9jaGFuZ2VUb0NvdmFyaWFudE1ldGhvZEluQmFzZS9zcmMvbWFrZXRlc3QvRGF0YUV4LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9jaGFuZ2VUb0NvdmFyaWFudE1ldGhvZEluQmFzZS9zcmMvbWFrZXRlc3QvRGF0YUV4LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDQyYTZmYgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2dlbmVyaWNzL2NoYW5nZVRvQ292YXJpYW50TWV0aG9kSW5CYXNlL3NyYy9tYWtldGVzdC9EYXRhRXguamF2YQpAQCAtMCwwICsxLDQgQEAKK3BhY2thZ2UgbWFrZXRlc3Q7CisKK3B1YmxpYyBjbGFzcyBEYXRhRXggZXh0ZW5kcyBEYXRhIHsKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2dlbmVyaWNzL2NoYW5nZVRvQ292YXJpYW50TWV0aG9kSW5CYXNlL3NyYy9tYWtldGVzdC9JLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9jaGFuZ2VUb0NvdmFyaWFudE1ldGhvZEluQmFzZS9zcmMvbWFrZXRlc3QvSS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg0Mzc4MjEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9jaGFuZ2VUb0NvdmFyaWFudE1ldGhvZEluQmFzZS9zcmMvbWFrZXRlc3QvSS5qYXZhCkBAIC0wLDAgKzEsNSBAQAorcGFja2FnZSBtYWtldGVzdDsKKworcHVibGljIGludGVyZmFjZSBJIHsKKyAgICBEYXRhIGdldERhdGEoKTsKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2dlbmVyaWNzL2NoYW5nZVRvQ292YXJpYW50TWV0aG9kSW5CYXNlL3NyYy9tYWtldGVzdC9JSW1wbC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZ2VuZXJpY3MvY2hhbmdlVG9Db3ZhcmlhbnRNZXRob2RJbkJhc2Uvc3JjL21ha2V0ZXN0L0lJbXBsLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2VkODEyOQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2dlbmVyaWNzL2NoYW5nZVRvQ292YXJpYW50TWV0aG9kSW5CYXNlL3NyYy9tYWtldGVzdC9JSW1wbC5qYXZhCkBAIC0wLDAgKzEsNCBAQAorcGFja2FnZSBtYWtldGVzdDsKKworcHVibGljIGNsYXNzIElJbXBsIGV4dGVuZHMgQmFzZUltcGxlbWVudGF0aW9uIGltcGxlbWVudHMgSSB7Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9jaGFuZ2VUb0NvdmFyaWFudE1ldGhvZEluQmFzZS9zcmMvbWFrZXRlc3QvTWFpbi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZ2VuZXJpY3MvY2hhbmdlVG9Db3ZhcmlhbnRNZXRob2RJbkJhc2Uvc3JjL21ha2V0ZXN0L01haW4uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44M2ZhYzRkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZ2VuZXJpY3MvY2hhbmdlVG9Db3ZhcmlhbnRNZXRob2RJbkJhc2Uvc3JjL21ha2V0ZXN0L01haW4uamF2YQpAQCAtMCwwICsxLDkgQEAKK3BhY2thZ2UgbWFrZXRlc3Q7CisKK3B1YmxpYyBjbGFzcyBNYWluIHsKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CisgICAgICAgIEkgaSA9IG5ldyBJSW1wbCgpOworICAgICAgICBEYXRhIGRhdGEgPSBpLmdldERhdGEoKTsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJkYXRhID0gIiArIGRhdGEpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2dlbmVyaWNzL2NoYW5nZVRvQ292YXJpYW50TWV0aG9kSW5CYXNlMi5sb2cgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9jaGFuZ2VUb0NvdmFyaWFudE1ldGhvZEluQmFzZTIubG9nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk4MmFlOWEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9jaGFuZ2VUb0NvdmFyaWFudE1ldGhvZEluQmFzZTIubG9nCkBAIC0wLDAgKzEsMTIgQEAKK0NsZWFuaW5nIG91dHB1dCBmaWxlczoKK291dC9wcm9kdWN0aW9uL0NoYW5nZVRvQ292YXJpYW50TWV0aG9kSW5CYXNlMi9tYWtldGVzdC9CYXNlSW1wbGVtZW50YXRpb24uY2xhc3MKK0VuZCBvZiBmaWxlcworQ29tcGlsaW5nIGZpbGVzOgorc3JjL21ha2V0ZXN0L0Jhc2VJbXBsZW1lbnRhdGlvbi5qYXZhCitFbmQgb2YgZmlsZXMKK0NsZWFuaW5nIG91dHB1dCBmaWxlczoKK291dC9wcm9kdWN0aW9uL0NoYW5nZVRvQ292YXJpYW50TWV0aG9kSW5CYXNlMi9tYWtldGVzdC9JSW1wbC5jbGFzcworRW5kIG9mIGZpbGVzCitDb21waWxpbmcgZmlsZXM6CitzcmMvbWFrZXRlc3QvSUltcGwuamF2YQorRW5kIG9mIGZpbGVzCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9jaGFuZ2VUb0NvdmFyaWFudE1ldGhvZEluQmFzZTIvZGF0YS54bWwgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9jaGFuZ2VUb0NvdmFyaWFudE1ldGhvZEluQmFzZTIvZGF0YS54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDlkNWU4NwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2dlbmVyaWNzL2NoYW5nZVRvQ292YXJpYW50TWV0aG9kSW5CYXNlMi9kYXRhLnhtbApAQCAtMCwwICsxLDEwIEBACis8dGVzdERhdGE+CisgIDxkZWxldGVkX2J5X21ha2U+CisgICAgPGZpbGUgcGF0aD0iY2xhc3Nlcy9tYWtldGVzdC9CYXNlSW1wbGVtZW50YXRpb24uY2xhc3MiIC8+CisgICAgPGZpbGUgcGF0aD0iY2xhc3Nlcy9tYWtldGVzdC9JSW1wbC5jbGFzcyIgLz4KKyAgPC9kZWxldGVkX2J5X21ha2U+CisKKyAgPHJlY29tcGlsZT4KKyAgICA8ZmlsZSBwYXRoPSJzb3VyY2UvbWFrZXRlc3QvSUltcGwuamF2YSIgLz4KKyAgPC9yZWNvbXBpbGU+Cis8L3Rlc3REYXRhPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2dlbmVyaWNzL2NoYW5nZVRvQ292YXJpYW50TWV0aG9kSW5CYXNlMi9zcmMvbWFrZXRlc3QvQmFzZUltcGxlbWVudGF0aW9uLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9jaGFuZ2VUb0NvdmFyaWFudE1ldGhvZEluQmFzZTIvc3JjL21ha2V0ZXN0L0Jhc2VJbXBsZW1lbnRhdGlvbi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE5YWUyOWYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9jaGFuZ2VUb0NvdmFyaWFudE1ldGhvZEluQmFzZTIvc3JjL21ha2V0ZXN0L0Jhc2VJbXBsZW1lbnRhdGlvbi5qYXZhCkBAIC0wLDAgKzEsNyBAQAorcGFja2FnZSBtYWtldGVzdDsKKworcHVibGljIGNsYXNzIEJhc2VJbXBsZW1lbnRhdGlvbiB7CisgICAgcHVibGljIERhdGEgZ2V0RGF0YSgpIHsKKyAgICAgICAgcmV0dXJuIG5ldyBEYXRhRXgoKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9jaGFuZ2VUb0NvdmFyaWFudE1ldGhvZEluQmFzZTIvc3JjL21ha2V0ZXN0L0Jhc2VJbXBsZW1lbnRhdGlvbi5qYXZhLm5ldyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2dlbmVyaWNzL2NoYW5nZVRvQ292YXJpYW50TWV0aG9kSW5CYXNlMi9zcmMvbWFrZXRlc3QvQmFzZUltcGxlbWVudGF0aW9uLmphdmEubmV3Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA3NDkyNzAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9jaGFuZ2VUb0NvdmFyaWFudE1ldGhvZEluQmFzZTIvc3JjL21ha2V0ZXN0L0Jhc2VJbXBsZW1lbnRhdGlvbi5qYXZhLm5ldwpAQCAtMCwwICsxLDcgQEAKK3BhY2thZ2UgbWFrZXRlc3Q7CisKK3B1YmxpYyBjbGFzcyBCYXNlSW1wbGVtZW50YXRpb24geworICAgIHB1YmxpYyBEYXRhRXggZ2V0RGF0YSgpIHsKKyAgICAgICAgcmV0dXJuIG5ldyBEYXRhRXgoKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9jaGFuZ2VUb0NvdmFyaWFudE1ldGhvZEluQmFzZTIvc3JjL21ha2V0ZXN0L0RhdGEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2dlbmVyaWNzL2NoYW5nZVRvQ292YXJpYW50TWV0aG9kSW5CYXNlMi9zcmMvbWFrZXRlc3QvRGF0YS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRmMWZlY2QKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9jaGFuZ2VUb0NvdmFyaWFudE1ldGhvZEluQmFzZTIvc3JjL21ha2V0ZXN0L0RhdGEuamF2YQpAQCAtMCwwICsxLDQgQEAKK3BhY2thZ2UgbWFrZXRlc3Q7CisKK3B1YmxpYyBjbGFzcyBEYXRhIHsKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2dlbmVyaWNzL2NoYW5nZVRvQ292YXJpYW50TWV0aG9kSW5CYXNlMi9zcmMvbWFrZXRlc3QvRGF0YUV4LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9jaGFuZ2VUb0NvdmFyaWFudE1ldGhvZEluQmFzZTIvc3JjL21ha2V0ZXN0L0RhdGFFeC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ0MmE2ZmIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9jaGFuZ2VUb0NvdmFyaWFudE1ldGhvZEluQmFzZTIvc3JjL21ha2V0ZXN0L0RhdGFFeC5qYXZhCkBAIC0wLDAgKzEsNCBAQAorcGFja2FnZSBtYWtldGVzdDsKKworcHVibGljIGNsYXNzIERhdGFFeCBleHRlbmRzIERhdGEgeworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZ2VuZXJpY3MvY2hhbmdlVG9Db3ZhcmlhbnRNZXRob2RJbkJhc2UyL3NyYy9tYWtldGVzdC9JLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9jaGFuZ2VUb0NvdmFyaWFudE1ldGhvZEluQmFzZTIvc3JjL21ha2V0ZXN0L0kuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NDM3ODIxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZ2VuZXJpY3MvY2hhbmdlVG9Db3ZhcmlhbnRNZXRob2RJbkJhc2UyL3NyYy9tYWtldGVzdC9JLmphdmEKQEAgLTAsMCArMSw1IEBACitwYWNrYWdlIG1ha2V0ZXN0OworCitwdWJsaWMgaW50ZXJmYWNlIEkgeworICAgIERhdGEgZ2V0RGF0YSgpOworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZ2VuZXJpY3MvY2hhbmdlVG9Db3ZhcmlhbnRNZXRob2RJbkJhc2UyL3NyYy9tYWtldGVzdC9JSW1wbC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZ2VuZXJpY3MvY2hhbmdlVG9Db3ZhcmlhbnRNZXRob2RJbkJhc2UyL3NyYy9tYWtldGVzdC9JSW1wbC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU5MmM3ZTIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9jaGFuZ2VUb0NvdmFyaWFudE1ldGhvZEluQmFzZTIvc3JjL21ha2V0ZXN0L0lJbXBsLmphdmEKQEAgLTAsMCArMSw0IEBACitwYWNrYWdlIG1ha2V0ZXN0OworCitwdWJsaWMgY2xhc3MgSUltcGwgZXh0ZW5kcyBCYXNlSW1wbGVtZW50YXRpb24gaW1wbGVtZW50cyBKIHsKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2dlbmVyaWNzL2NoYW5nZVRvQ292YXJpYW50TWV0aG9kSW5CYXNlMi9zcmMvbWFrZXRlc3QvSi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZ2VuZXJpY3MvY2hhbmdlVG9Db3ZhcmlhbnRNZXRob2RJbkJhc2UyL3NyYy9tYWtldGVzdC9KLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDIxNmVjNgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2dlbmVyaWNzL2NoYW5nZVRvQ292YXJpYW50TWV0aG9kSW5CYXNlMi9zcmMvbWFrZXRlc3QvSi5qYXZhCkBAIC0wLDAgKzEsNCBAQAorcGFja2FnZSBtYWtldGVzdDsKKworcHVibGljIGludGVyZmFjZSBKIGV4dGVuZHMgSSB7Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9jaGFuZ2VUb0NvdmFyaWFudE1ldGhvZEluQmFzZTIvc3JjL21ha2V0ZXN0L01haW4uamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2dlbmVyaWNzL2NoYW5nZVRvQ292YXJpYW50TWV0aG9kSW5CYXNlMi9zcmMvbWFrZXRlc3QvTWFpbi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgzZmFjNGQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9jaGFuZ2VUb0NvdmFyaWFudE1ldGhvZEluQmFzZTIvc3JjL21ha2V0ZXN0L01haW4uamF2YQpAQCAtMCwwICsxLDkgQEAKK3BhY2thZ2UgbWFrZXRlc3Q7CisKK3B1YmxpYyBjbGFzcyBNYWluIHsKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CisgICAgICAgIEkgaSA9IG5ldyBJSW1wbCgpOworICAgICAgICBEYXRhIGRhdGEgPSBpLmdldERhdGEoKTsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJkYXRhID0gIiArIGRhdGEpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2dlbmVyaWNzL2NoYW5nZVRvQ292YXJpYW50TWV0aG9kSW5CYXNlMy9kYXRhLnhtbCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2dlbmVyaWNzL2NoYW5nZVRvQ292YXJpYW50TWV0aG9kSW5CYXNlMy9kYXRhLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZDg0MDdjMwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2dlbmVyaWNzL2NoYW5nZVRvQ292YXJpYW50TWV0aG9kSW5CYXNlMy9kYXRhLnhtbApAQCAtMCwwICsxLDEwIEBACis8dGVzdERhdGE+CisgIDxkZWxldGVkX2J5X21ha2U+CisgICAgPGZpbGUgcGF0aD0iY2xhc3Nlcy9tYWtldGVzdC9CYXNlSW1wbGVtZW50YXRpb24uY2xhc3MiIC8+CisgICAgPGZpbGUgcGF0aD0iY2xhc3Nlcy9tYWtldGVzdC9NZWRpYXRvci5jbGFzcyIgLz4KKyAgPC9kZWxldGVkX2J5X21ha2U+CisKKyAgPHJlY29tcGlsZT4KKyAgICA8ZmlsZSBwYXRoPSJzb3VyY2UvbWFrZXRlc3QvTWVkaWF0b3IuamF2YSIgLz4KKyAgPC9yZWNvbXBpbGU+Cis8L3Rlc3REYXRhPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2dlbmVyaWNzL2NoYW5nZVRvQ292YXJpYW50TWV0aG9kSW5CYXNlMy9vdXQvcHJvZHVjdGlvbi9DaGFuZ2VUb0NvdmFyaWFudE1ldGhvZEluQmFzZTMvbWFrZXRlc3QvQmFzZUltcGxlbWVudGF0aW9uLmNsYXNzIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZ2VuZXJpY3MvY2hhbmdlVG9Db3ZhcmlhbnRNZXRob2RJbkJhc2UzL291dC9wcm9kdWN0aW9uL0NoYW5nZVRvQ292YXJpYW50TWV0aG9kSW5CYXNlMy9tYWtldGVzdC9CYXNlSW1wbGVtZW50YXRpb24uY2xhc3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTM5ODMzNAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2dlbmVyaWNzL2NoYW5nZVRvQ292YXJpYW50TWV0aG9kSW5CYXNlMy9vdXQvcHJvZHVjdGlvbi9DaGFuZ2VUb0NvdmFyaWFudE1ldGhvZEluQmFzZTMvbWFrZXRlc3QvQmFzZUltcGxlbWVudGF0aW9uLmNsYXNzCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2dlbmVyaWNzL2NoYW5nZVRvQ292YXJpYW50TWV0aG9kSW5CYXNlMy9vdXQvcHJvZHVjdGlvbi9DaGFuZ2VUb0NvdmFyaWFudE1ldGhvZEluQmFzZTMvbWFrZXRlc3QvRGF0YS5jbGFzcyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2dlbmVyaWNzL2NoYW5nZVRvQ292YXJpYW50TWV0aG9kSW5CYXNlMy9vdXQvcHJvZHVjdGlvbi9DaGFuZ2VUb0NvdmFyaWFudE1ldGhvZEluQmFzZTMvbWFrZXRlc3QvRGF0YS5jbGFzcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MmUwN2Q2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZ2VuZXJpY3MvY2hhbmdlVG9Db3ZhcmlhbnRNZXRob2RJbkJhc2UzL291dC9wcm9kdWN0aW9uL0NoYW5nZVRvQ292YXJpYW50TWV0aG9kSW5CYXNlMy9tYWtldGVzdC9EYXRhLmNsYXNzCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2dlbmVyaWNzL2NoYW5nZVRvQ292YXJpYW50TWV0aG9kSW5CYXNlMy9vdXQvcHJvZHVjdGlvbi9DaGFuZ2VUb0NvdmFyaWFudE1ldGhvZEluQmFzZTMvbWFrZXRlc3QvRGF0YUV4LmNsYXNzIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZ2VuZXJpY3MvY2hhbmdlVG9Db3ZhcmlhbnRNZXRob2RJbkJhc2UzL291dC9wcm9kdWN0aW9uL0NoYW5nZVRvQ292YXJpYW50TWV0aG9kSW5CYXNlMy9tYWtldGVzdC9EYXRhRXguY2xhc3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTlmMGJkZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2dlbmVyaWNzL2NoYW5nZVRvQ292YXJpYW50TWV0aG9kSW5CYXNlMy9vdXQvcHJvZHVjdGlvbi9DaGFuZ2VUb0NvdmFyaWFudE1ldGhvZEluQmFzZTMvbWFrZXRlc3QvRGF0YUV4LmNsYXNzCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2dlbmVyaWNzL2NoYW5nZVRvQ292YXJpYW50TWV0aG9kSW5CYXNlMy9vdXQvcHJvZHVjdGlvbi9DaGFuZ2VUb0NvdmFyaWFudE1ldGhvZEluQmFzZTMvbWFrZXRlc3QvSS5jbGFzcyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2dlbmVyaWNzL2NoYW5nZVRvQ292YXJpYW50TWV0aG9kSW5CYXNlMy9vdXQvcHJvZHVjdGlvbi9DaGFuZ2VUb0NvdmFyaWFudE1ldGhvZEluQmFzZTMvbWFrZXRlc3QvSS5jbGFzcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYzdkNDU1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZ2VuZXJpY3MvY2hhbmdlVG9Db3ZhcmlhbnRNZXRob2RJbkJhc2UzL291dC9wcm9kdWN0aW9uL0NoYW5nZVRvQ292YXJpYW50TWV0aG9kSW5CYXNlMy9tYWtldGVzdC9JLmNsYXNzCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2dlbmVyaWNzL2NoYW5nZVRvQ292YXJpYW50TWV0aG9kSW5CYXNlMy9vdXQvcHJvZHVjdGlvbi9DaGFuZ2VUb0NvdmFyaWFudE1ldGhvZEluQmFzZTMvbWFrZXRlc3QvSUltcGwuY2xhc3MgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9jaGFuZ2VUb0NvdmFyaWFudE1ldGhvZEluQmFzZTMvb3V0L3Byb2R1Y3Rpb24vQ2hhbmdlVG9Db3ZhcmlhbnRNZXRob2RJbkJhc2UzL21ha2V0ZXN0L0lJbXBsLmNsYXNzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQzNzk4OWMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9jaGFuZ2VUb0NvdmFyaWFudE1ldGhvZEluQmFzZTMvb3V0L3Byb2R1Y3Rpb24vQ2hhbmdlVG9Db3ZhcmlhbnRNZXRob2RJbkJhc2UzL21ha2V0ZXN0L0lJbXBsLmNsYXNzCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2dlbmVyaWNzL2NoYW5nZVRvQ292YXJpYW50TWV0aG9kSW5CYXNlMy9vdXQvcHJvZHVjdGlvbi9DaGFuZ2VUb0NvdmFyaWFudE1ldGhvZEluQmFzZTMvbWFrZXRlc3QvSi5jbGFzcyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2dlbmVyaWNzL2NoYW5nZVRvQ292YXJpYW50TWV0aG9kSW5CYXNlMy9vdXQvcHJvZHVjdGlvbi9DaGFuZ2VUb0NvdmFyaWFudE1ldGhvZEluQmFzZTMvbWFrZXRlc3QvSi5jbGFzcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lM2IzMGM4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZ2VuZXJpY3MvY2hhbmdlVG9Db3ZhcmlhbnRNZXRob2RJbkJhc2UzL291dC9wcm9kdWN0aW9uL0NoYW5nZVRvQ292YXJpYW50TWV0aG9kSW5CYXNlMy9tYWtldGVzdC9KLmNsYXNzCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2dlbmVyaWNzL2NoYW5nZVRvQ292YXJpYW50TWV0aG9kSW5CYXNlMy9vdXQvcHJvZHVjdGlvbi9DaGFuZ2VUb0NvdmFyaWFudE1ldGhvZEluQmFzZTMvbWFrZXRlc3QvTWFpbi5jbGFzcyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2dlbmVyaWNzL2NoYW5nZVRvQ292YXJpYW50TWV0aG9kSW5CYXNlMy9vdXQvcHJvZHVjdGlvbi9DaGFuZ2VUb0NvdmFyaWFudE1ldGhvZEluQmFzZTMvbWFrZXRlc3QvTWFpbi5jbGFzcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMjVhZDZjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZ2VuZXJpY3MvY2hhbmdlVG9Db3ZhcmlhbnRNZXRob2RJbkJhc2UzL291dC9wcm9kdWN0aW9uL0NoYW5nZVRvQ292YXJpYW50TWV0aG9kSW5CYXNlMy9tYWtldGVzdC9NYWluLmNsYXNzCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2dlbmVyaWNzL2NoYW5nZVRvQ292YXJpYW50TWV0aG9kSW5CYXNlMy9vdXQvcHJvZHVjdGlvbi9DaGFuZ2VUb0NvdmFyaWFudE1ldGhvZEluQmFzZTMvbWFrZXRlc3QvTWVkaWF0b3IuY2xhc3MgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9jaGFuZ2VUb0NvdmFyaWFudE1ldGhvZEluQmFzZTMvb3V0L3Byb2R1Y3Rpb24vQ2hhbmdlVG9Db3ZhcmlhbnRNZXRob2RJbkJhc2UzL21ha2V0ZXN0L01lZGlhdG9yLmNsYXNzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZlNDdiMjIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9jaGFuZ2VUb0NvdmFyaWFudE1ldGhvZEluQmFzZTMvb3V0L3Byb2R1Y3Rpb24vQ2hhbmdlVG9Db3ZhcmlhbnRNZXRob2RJbkJhc2UzL21ha2V0ZXN0L01lZGlhdG9yLmNsYXNzCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2dlbmVyaWNzL2NoYW5nZVRvQ292YXJpYW50TWV0aG9kSW5CYXNlMy9zcmMvbWFrZXRlc3QvQmFzZUltcGxlbWVudGF0aW9uLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9jaGFuZ2VUb0NvdmFyaWFudE1ldGhvZEluQmFzZTMvc3JjL21ha2V0ZXN0L0Jhc2VJbXBsZW1lbnRhdGlvbi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE5YWUyOWYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9jaGFuZ2VUb0NvdmFyaWFudE1ldGhvZEluQmFzZTMvc3JjL21ha2V0ZXN0L0Jhc2VJbXBsZW1lbnRhdGlvbi5qYXZhCkBAIC0wLDAgKzEsNyBAQAorcGFja2FnZSBtYWtldGVzdDsKKworcHVibGljIGNsYXNzIEJhc2VJbXBsZW1lbnRhdGlvbiB7CisgICAgcHVibGljIERhdGEgZ2V0RGF0YSgpIHsKKyAgICAgICAgcmV0dXJuIG5ldyBEYXRhRXgoKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9jaGFuZ2VUb0NvdmFyaWFudE1ldGhvZEluQmFzZTMvc3JjL21ha2V0ZXN0L0Jhc2VJbXBsZW1lbnRhdGlvbi5qYXZhLm5ldyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2dlbmVyaWNzL2NoYW5nZVRvQ292YXJpYW50TWV0aG9kSW5CYXNlMy9zcmMvbWFrZXRlc3QvQmFzZUltcGxlbWVudGF0aW9uLmphdmEubmV3Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA3NDkyNzAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9jaGFuZ2VUb0NvdmFyaWFudE1ldGhvZEluQmFzZTMvc3JjL21ha2V0ZXN0L0Jhc2VJbXBsZW1lbnRhdGlvbi5qYXZhLm5ldwpAQCAtMCwwICsxLDcgQEAKK3BhY2thZ2UgbWFrZXRlc3Q7CisKK3B1YmxpYyBjbGFzcyBCYXNlSW1wbGVtZW50YXRpb24geworICAgIHB1YmxpYyBEYXRhRXggZ2V0RGF0YSgpIHsKKyAgICAgICAgcmV0dXJuIG5ldyBEYXRhRXgoKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9jaGFuZ2VUb0NvdmFyaWFudE1ldGhvZEluQmFzZTMvc3JjL21ha2V0ZXN0L0RhdGEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2dlbmVyaWNzL2NoYW5nZVRvQ292YXJpYW50TWV0aG9kSW5CYXNlMy9zcmMvbWFrZXRlc3QvRGF0YS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRmMWZlY2QKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9jaGFuZ2VUb0NvdmFyaWFudE1ldGhvZEluQmFzZTMvc3JjL21ha2V0ZXN0L0RhdGEuamF2YQpAQCAtMCwwICsxLDQgQEAKK3BhY2thZ2UgbWFrZXRlc3Q7CisKK3B1YmxpYyBjbGFzcyBEYXRhIHsKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2dlbmVyaWNzL2NoYW5nZVRvQ292YXJpYW50TWV0aG9kSW5CYXNlMy9zcmMvbWFrZXRlc3QvRGF0YUV4LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9jaGFuZ2VUb0NvdmFyaWFudE1ldGhvZEluQmFzZTMvc3JjL21ha2V0ZXN0L0RhdGFFeC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ0MmE2ZmIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9jaGFuZ2VUb0NvdmFyaWFudE1ldGhvZEluQmFzZTMvc3JjL21ha2V0ZXN0L0RhdGFFeC5qYXZhCkBAIC0wLDAgKzEsNCBAQAorcGFja2FnZSBtYWtldGVzdDsKKworcHVibGljIGNsYXNzIERhdGFFeCBleHRlbmRzIERhdGEgeworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZ2VuZXJpY3MvY2hhbmdlVG9Db3ZhcmlhbnRNZXRob2RJbkJhc2UzL3NyYy9tYWtldGVzdC9JLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9jaGFuZ2VUb0NvdmFyaWFudE1ldGhvZEluQmFzZTMvc3JjL21ha2V0ZXN0L0kuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NDM3ODIxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZ2VuZXJpY3MvY2hhbmdlVG9Db3ZhcmlhbnRNZXRob2RJbkJhc2UzL3NyYy9tYWtldGVzdC9JLmphdmEKQEAgLTAsMCArMSw1IEBACitwYWNrYWdlIG1ha2V0ZXN0OworCitwdWJsaWMgaW50ZXJmYWNlIEkgeworICAgIERhdGEgZ2V0RGF0YSgpOworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZ2VuZXJpY3MvY2hhbmdlVG9Db3ZhcmlhbnRNZXRob2RJbkJhc2UzL3NyYy9tYWtldGVzdC9JSW1wbC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZ2VuZXJpY3MvY2hhbmdlVG9Db3ZhcmlhbnRNZXRob2RJbkJhc2UzL3NyYy9tYWtldGVzdC9JSW1wbC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYxY2Q5M2YKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9jaGFuZ2VUb0NvdmFyaWFudE1ldGhvZEluQmFzZTMvc3JjL21ha2V0ZXN0L0lJbXBsLmphdmEKQEAgLTAsMCArMSw0IEBACitwYWNrYWdlIG1ha2V0ZXN0OworCitwdWJsaWMgY2xhc3MgSUltcGwgZXh0ZW5kcyBNZWRpYXRvciB7Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9jaGFuZ2VUb0NvdmFyaWFudE1ldGhvZEluQmFzZTMvc3JjL21ha2V0ZXN0L0ouamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2dlbmVyaWNzL2NoYW5nZVRvQ292YXJpYW50TWV0aG9kSW5CYXNlMy9zcmMvbWFrZXRlc3QvSi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQyMTZlYzYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9jaGFuZ2VUb0NvdmFyaWFudE1ldGhvZEluQmFzZTMvc3JjL21ha2V0ZXN0L0ouamF2YQpAQCAtMCwwICsxLDQgQEAKK3BhY2thZ2UgbWFrZXRlc3Q7CisKK3B1YmxpYyBpbnRlcmZhY2UgSiBleHRlbmRzIEkgeworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZ2VuZXJpY3MvY2hhbmdlVG9Db3ZhcmlhbnRNZXRob2RJbkJhc2UzL3NyYy9tYWtldGVzdC9NYWluLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9jaGFuZ2VUb0NvdmFyaWFudE1ldGhvZEluQmFzZTMvc3JjL21ha2V0ZXN0L01haW4uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44M2ZhYzRkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZ2VuZXJpY3MvY2hhbmdlVG9Db3ZhcmlhbnRNZXRob2RJbkJhc2UzL3NyYy9tYWtldGVzdC9NYWluLmphdmEKQEAgLTAsMCArMSw5IEBACitwYWNrYWdlIG1ha2V0ZXN0OworCitwdWJsaWMgY2xhc3MgTWFpbiB7CisgICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgeworICAgICAgICBJIGkgPSBuZXcgSUltcGwoKTsKKyAgICAgICAgRGF0YSBkYXRhID0gaS5nZXREYXRhKCk7CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiZGF0YSA9ICIgKyBkYXRhKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9jaGFuZ2VUb0NvdmFyaWFudE1ldGhvZEluQmFzZTMvc3JjL21ha2V0ZXN0L01lZGlhdG9yLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9jaGFuZ2VUb0NvdmFyaWFudE1ldGhvZEluQmFzZTMvc3JjL21ha2V0ZXN0L01lZGlhdG9yLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDY3OWE4OAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2dlbmVyaWNzL2NoYW5nZVRvQ292YXJpYW50TWV0aG9kSW5CYXNlMy9zcmMvbWFrZXRlc3QvTWVkaWF0b3IuamF2YQpAQCAtMCwwICsxLDQgQEAKK3BhY2thZ2UgbWFrZXRlc3Q7CisKK3B1YmxpYyBjbGFzcyBNZWRpYXRvciBleHRlbmRzIEJhc2VJbXBsZW1lbnRhdGlvbiBpbXBsZW1lbnRzIEogeworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZ2VuZXJpY3MvY2hhbmdlVmFyYXJnU2lnbmF0dXJlLmxvZyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2dlbmVyaWNzL2NoYW5nZVZhcmFyZ1NpZ25hdHVyZS5sb2cKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWQ4ZmEwYgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2dlbmVyaWNzL2NoYW5nZVZhcmFyZ1NpZ25hdHVyZS5sb2cKQEAgLTAsMCArMSwxMiBAQAorQ2xlYW5pbmcgb3V0cHV0IGZpbGVzOgorb3V0L3Byb2R1Y3Rpb24vQ2hhbmdlVmFyYXJnU2lnbmF0dXJlL3BhY2thZ2VBL0Jhc2UuY2xhc3MKK0VuZCBvZiBmaWxlcworQ29tcGlsaW5nIGZpbGVzOgorc3JjL3BhY2thZ2VBL0Jhc2UuamF2YQorRW5kIG9mIGZpbGVzCitDbGVhbmluZyBvdXRwdXQgZmlsZXM6CitvdXQvcHJvZHVjdGlvbi9DaGFuZ2VWYXJhcmdTaWduYXR1cmUvcGFja2FnZUEvRGVyaXZlZC5jbGFzcworRW5kIG9mIGZpbGVzCitDb21waWxpbmcgZmlsZXM6CitzcmMvcGFja2FnZUEvRGVyaXZlZC5qYXZhCitFbmQgb2YgZmlsZXMKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2dlbmVyaWNzL2NoYW5nZVZhcmFyZ1NpZ25hdHVyZS9kYXRhLnhtbCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2dlbmVyaWNzL2NoYW5nZVZhcmFyZ1NpZ25hdHVyZS9kYXRhLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kOGViNzlkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZ2VuZXJpY3MvY2hhbmdlVmFyYXJnU2lnbmF0dXJlL2RhdGEueG1sCkBAIC0wLDAgKzEsMTUgQEAKKzx0ZXN0RGF0YT4KKworICA8ZGVsZXRlPgorICA8L2RlbGV0ZT4KKworICA8ZGVsZXRlZF9ieV9tYWtlPgorICAgIDxmaWxlIHBhdGg9ImNsYXNzZXMvcGFja2FnZUEvQmFzZS5jbGFzcyIgLz4KKyAgICA8ZmlsZSBwYXRoPSJjbGFzc2VzL3BhY2thZ2VBL0Rlcml2ZWQuY2xhc3MiIC8+CisgIDwvZGVsZXRlZF9ieV9tYWtlPgorCisgIDxyZWNvbXBpbGU+CisgICAgPGZpbGUgcGF0aD0ic291cmNlL3BhY2thZ2VBL0Rlcml2ZWQuamF2YSIgLz4KKyAgPC9yZWNvbXBpbGU+CisKKzwvdGVzdERhdGE+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZ2VuZXJpY3MvY2hhbmdlVmFyYXJnU2lnbmF0dXJlL3NyYy9wYWNrYWdlQS9CYXNlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9jaGFuZ2VWYXJhcmdTaWduYXR1cmUvc3JjL3BhY2thZ2VBL0Jhc2UuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNTBhOWNhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZ2VuZXJpY3MvY2hhbmdlVmFyYXJnU2lnbmF0dXJlL3NyYy9wYWNrYWdlQS9CYXNlLmphdmEKQEAgLTAsMCArMSw3IEBACitwYWNrYWdlIHBhY2thZ2VBOworCitwdWJsaWMgY2xhc3MgQmFzZSB7CisgIHB1YmxpYyB2b2lkIGZvbyhTdHJpbmcuLi4gcGFyYW1zKSB7CisgICAgU3lzdGVtLm91dC5wcmludGxuKHBhcmFtcyk7CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2dlbmVyaWNzL2NoYW5nZVZhcmFyZ1NpZ25hdHVyZS9zcmMvcGFja2FnZUEvQmFzZS5qYXZhLm5ldyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2dlbmVyaWNzL2NoYW5nZVZhcmFyZ1NpZ25hdHVyZS9zcmMvcGFja2FnZUEvQmFzZS5qYXZhLm5ldwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YjYxYWIxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZ2VuZXJpY3MvY2hhbmdlVmFyYXJnU2lnbmF0dXJlL3NyYy9wYWNrYWdlQS9CYXNlLmphdmEubmV3CkBAIC0wLDAgKzEsNyBAQAorcGFja2FnZSBwYWNrYWdlQTsKKworcHVibGljIGNsYXNzIEJhc2UgeworICBwdWJsaWMgdm9pZCBmb28oamF2YS51dGlsLkxpc3Q8U3RyaW5nPiBwYXJhbXMpIHsKKyAgICBTeXN0ZW0ub3V0LnByaW50bG4ocGFyYW1zKTsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZ2VuZXJpY3MvY2hhbmdlVmFyYXJnU2lnbmF0dXJlL3NyYy9wYWNrYWdlQS9EZXJpdmVkLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9jaGFuZ2VWYXJhcmdTaWduYXR1cmUvc3JjL3BhY2thZ2VBL0Rlcml2ZWQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZjkyYjA3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZ2VuZXJpY3MvY2hhbmdlVmFyYXJnU2lnbmF0dXJlL3NyYy9wYWNrYWdlQS9EZXJpdmVkLmphdmEKQEAgLTAsMCArMSw4IEBACitwYWNrYWdlIHBhY2thZ2VBOworCitwdWJsaWMgY2xhc3MgRGVyaXZlZCBleHRlbmRzIEJhc2V7CisgIEBPdmVycmlkZQorICBwdWJsaWMgdm9pZCBmb28oU3RyaW5nLi4uIHBhcmFtcykgeworICAgIFN5c3RlbS5vdXQucHJpbnRsbigiRGVyaXZlZCAiICsgcGFyYW1zLnRvU3RyaW5nKCkpOworICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9jaGFuZ2VWYXJhcmdTaWduYXR1cmUxLmxvZyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2dlbmVyaWNzL2NoYW5nZVZhcmFyZ1NpZ25hdHVyZTEubG9nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc1M2MyYmMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9jaGFuZ2VWYXJhcmdTaWduYXR1cmUxLmxvZwpAQCAtMCwwICsxLDEyIEBACitDbGVhbmluZyBvdXRwdXQgZmlsZXM6CitvdXQvcHJvZHVjdGlvbi9DaGFuZ2VWYXJhcmdTaWduYXR1cmUxL3BhY2thZ2VBL0Jhc2UuY2xhc3MKK0VuZCBvZiBmaWxlcworQ29tcGlsaW5nIGZpbGVzOgorc3JjL3BhY2thZ2VBL0Jhc2UuamF2YQorRW5kIG9mIGZpbGVzCitDbGVhbmluZyBvdXRwdXQgZmlsZXM6CitvdXQvcHJvZHVjdGlvbi9DaGFuZ2VWYXJhcmdTaWduYXR1cmUxL3BhY2thZ2VBL0RlcmkkdmVkLmNsYXNzCitFbmQgb2YgZmlsZXMKK0NvbXBpbGluZyBmaWxlczoKK3NyYy9wYWNrYWdlQS9EZXJpJHZlZC5qYXZhCitFbmQgb2YgZmlsZXMKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2dlbmVyaWNzL2NoYW5nZVZhcmFyZ1NpZ25hdHVyZTEvZGF0YS54bWwgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9jaGFuZ2VWYXJhcmdTaWduYXR1cmUxL2RhdGEueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg5NTM0MTYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9jaGFuZ2VWYXJhcmdTaWduYXR1cmUxL2RhdGEueG1sCkBAIC0wLDAgKzEsMTUgQEAKKzx0ZXN0RGF0YT4KKworICA8ZGVsZXRlPgorICA8L2RlbGV0ZT4KKworICA8ZGVsZXRlZF9ieV9tYWtlPgorICAgIDxmaWxlIHBhdGg9ImNsYXNzZXMvcGFja2FnZUEvQmFzZS5jbGFzcyIgLz4KKyAgICA8ZmlsZSBwYXRoPSJjbGFzc2VzL3BhY2thZ2VBL0RlcmkkdmVkLmNsYXNzIiAvPgorICA8L2RlbGV0ZWRfYnlfbWFrZT4KKworICA8cmVjb21waWxlPgorICAgIDxmaWxlIHBhdGg9InNvdXJjZS9wYWNrYWdlQS9EZXJpJHZlZC5qYXZhIiAvPgorICA8L3JlY29tcGlsZT4KKworPC90ZXN0RGF0YT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9jaGFuZ2VWYXJhcmdTaWduYXR1cmUxL3NyYy9wYWNrYWdlQS9CYXNlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9jaGFuZ2VWYXJhcmdTaWduYXR1cmUxL3NyYy9wYWNrYWdlQS9CYXNlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjUwYTljYQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2dlbmVyaWNzL2NoYW5nZVZhcmFyZ1NpZ25hdHVyZTEvc3JjL3BhY2thZ2VBL0Jhc2UuamF2YQpAQCAtMCwwICsxLDcgQEAKK3BhY2thZ2UgcGFja2FnZUE7CisKK3B1YmxpYyBjbGFzcyBCYXNlIHsKKyAgcHVibGljIHZvaWQgZm9vKFN0cmluZy4uLiBwYXJhbXMpIHsKKyAgICBTeXN0ZW0ub3V0LnByaW50bG4ocGFyYW1zKTsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZ2VuZXJpY3MvY2hhbmdlVmFyYXJnU2lnbmF0dXJlMS9zcmMvcGFja2FnZUEvQmFzZS5qYXZhLm5ldyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2dlbmVyaWNzL2NoYW5nZVZhcmFyZ1NpZ25hdHVyZTEvc3JjL3BhY2thZ2VBL0Jhc2UuamF2YS5uZXcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWI2MWFiMQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2dlbmVyaWNzL2NoYW5nZVZhcmFyZ1NpZ25hdHVyZTEvc3JjL3BhY2thZ2VBL0Jhc2UuamF2YS5uZXcKQEAgLTAsMCArMSw3IEBACitwYWNrYWdlIHBhY2thZ2VBOworCitwdWJsaWMgY2xhc3MgQmFzZSB7CisgIHB1YmxpYyB2b2lkIGZvbyhqYXZhLnV0aWwuTGlzdDxTdHJpbmc+IHBhcmFtcykgeworICAgIFN5c3RlbS5vdXQucHJpbnRsbihwYXJhbXMpOworICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9jaGFuZ2VWYXJhcmdTaWduYXR1cmUxL3NyYy9wYWNrYWdlQS9EZXJpJHZlZC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZ2VuZXJpY3MvY2hhbmdlVmFyYXJnU2lnbmF0dXJlMS9zcmMvcGFja2FnZUEvRGVyaSR2ZWQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NjM1ZjE1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZ2VuZXJpY3MvY2hhbmdlVmFyYXJnU2lnbmF0dXJlMS9zcmMvcGFja2FnZUEvRGVyaSR2ZWQuamF2YQpAQCAtMCwwICsxLDggQEAKK3BhY2thZ2UgcGFja2FnZUE7CisKK3B1YmxpYyBjbGFzcyBEZXJpJHZlZCBleHRlbmRzIEJhc2V7CisgIEBPdmVycmlkZQorICBwdWJsaWMgdm9pZCBmb28oU3RyaW5nLi4uIHBhcmFtcykgeworICAgIFN5c3RlbS5vdXQucHJpbnRsbigiRGVyaXZlZCAiICsgcGFyYW1zLnRvU3RyaW5nKCkpOworICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9jb3ZhcmlhbmNlLmxvZyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2dlbmVyaWNzL2NvdmFyaWFuY2UubG9nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZkOGY4MjAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9jb3ZhcmlhbmNlLmxvZwpAQCAtMCwwICsxLDEyIEBACitDbGVhbmluZyBvdXRwdXQgZmlsZXM6CitvdXQvcHJvZHVjdGlvbi9Db3ZhcmlhbmNlL0Rlcml2ZWQuY2xhc3MKK0VuZCBvZiBmaWxlcworQ29tcGlsaW5nIGZpbGVzOgorc3JjL0Rlcml2ZWQuamF2YQorRW5kIG9mIGZpbGVzCitDbGVhbmluZyBvdXRwdXQgZmlsZXM6CitvdXQvcHJvZHVjdGlvbi9Db3ZhcmlhbmNlL0NsaWVudC5jbGFzcworRW5kIG9mIGZpbGVzCitDb21waWxpbmcgZmlsZXM6CitzcmMvQ2xpZW50LmphdmEKK0VuZCBvZiBmaWxlcwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZ2VuZXJpY3MvY292YXJpYW5jZS9EZXJpdmVkLmphdmEubmV3IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZ2VuZXJpY3MvY292YXJpYW5jZS9EZXJpdmVkLmphdmEubmV3Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFkOTQ5MmQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9jb3ZhcmlhbmNlL0Rlcml2ZWQuamF2YS5uZXcKQEAgLTAsMCArMSwyIEBACitwdWJsaWMgY2xhc3MgRGVyaXZlZCBleHRlbmRzIEJhc2UgeworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2dlbmVyaWNzL2NvdmFyaWFuY2Uvc3JjL0Jhc2UuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2dlbmVyaWNzL2NvdmFyaWFuY2Uvc3JjL0Jhc2UuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41Y2YzMDgyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZ2VuZXJpY3MvY292YXJpYW5jZS9zcmMvQmFzZS5qYXZhCkBAIC0wLDAgKzEsNSBAQAorcHVibGljIGNsYXNzIEJhc2UgeworICBwdWJsaWMgVmFsdWUgZ2V0VmFsdWUoKSB7CisgICAgcmV0dXJuIG5ldyBWYWx1ZSgpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZ2VuZXJpY3MvY292YXJpYW5jZS9zcmMvQ2xpZW50LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9jb3ZhcmlhbmNlL3NyYy9DbGllbnQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45YzYzNDMwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZ2VuZXJpY3MvY292YXJpYW5jZS9zcmMvQ2xpZW50LmphdmEKQEAgLTAsMCArMSw2IEBACitwdWJsaWMgY2xhc3MgQ2xpZW50IHsKKyAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgeworICAgIERlcml2ZWQgb2JqID0gbmV3IERlcml2ZWQoKTsKKyAgICBTeXN0ZW0ub3V0LnByaW50bG4ob2JqLmdldFZhbHVlKCkpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZ2VuZXJpY3MvY292YXJpYW5jZS9zcmMvRGVyaXZlZC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZ2VuZXJpY3MvY292YXJpYW5jZS9zcmMvRGVyaXZlZC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIyMzU4YTgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9jb3ZhcmlhbmNlL3NyYy9EZXJpdmVkLmphdmEKQEAgLTAsMCArMSw1IEBACitwdWJsaWMgY2xhc3MgRGVyaXZlZCBleHRlbmRzIEJhc2UgeworICBwdWJsaWMgVmFsdWVEZXJpdmVkIGdldFZhbHVlKCkgeworICAgIHJldHVybiBuZXcgVmFsdWVEZXJpdmVkKCk7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9jb3ZhcmlhbmNlL3NyYy9WYWx1ZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZ2VuZXJpY3MvY292YXJpYW5jZS9zcmMvVmFsdWUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZTE3M2VmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZ2VuZXJpY3MvY292YXJpYW5jZS9zcmMvVmFsdWUuamF2YQpAQCAtMCwwICsxLDUgQEAKK3B1YmxpYyBjbGFzcyBWYWx1ZSB7CisgIHB1YmxpYyBTdHJpbmcgdG9TdHJpbmcoKSB7CisgICAgcmV0dXJuICJWYWx1ZSI7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9jb3ZhcmlhbmNlL3NyYy9WYWx1ZURlcml2ZWQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2dlbmVyaWNzL2NvdmFyaWFuY2Uvc3JjL1ZhbHVlRGVyaXZlZC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU2ZDc3YjUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9jb3ZhcmlhbmNlL3NyYy9WYWx1ZURlcml2ZWQuamF2YQpAQCAtMCwwICsxLDUgQEAKK3B1YmxpYyBjbGFzcyBWYWx1ZURlcml2ZWQgZXh0ZW5kcyBWYWx1ZSB7CisgIHB1YmxpYyBTdHJpbmcgdG9TdHJpbmcoKSB7CisgICAgcmV0dXJuICJWYWx1ZURlcml2ZWQiOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZ2VuZXJpY3MvY292YXJpYW5jZTEubG9nIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZ2VuZXJpY3MvY292YXJpYW5jZTEubG9nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM5OWNmNDFmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZ2VuZXJpY3MvY292YXJpYW5jZTEubG9nCkBAIC0wLDAgKzEsNiBAQAorQ2xlYW5pbmcgb3V0cHV0IGZpbGVzOgorb3V0L3Byb2R1Y3Rpb24vQ292YXJpYW5jZTEvRGVyaXZlZC5jbGFzcworRW5kIG9mIGZpbGVzCitDb21waWxpbmcgZmlsZXM6CitzcmMvRGVyaXZlZC5qYXZhCitFbmQgb2YgZmlsZXMKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2dlbmVyaWNzL2NvdmFyaWFuY2UxL0Rlcml2ZWQuamF2YS5uZXcgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9jb3ZhcmlhbmNlMS9EZXJpdmVkLmphdmEubmV3Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFkOTQ5MmQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9jb3ZhcmlhbmNlMS9EZXJpdmVkLmphdmEubmV3CkBAIC0wLDAgKzEsMiBAQAorcHVibGljIGNsYXNzIERlcml2ZWQgZXh0ZW5kcyBCYXNlIHsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9jb3ZhcmlhbmNlMS9zcmMvQmFzZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZ2VuZXJpY3MvY292YXJpYW5jZTEvc3JjL0Jhc2UuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41Y2YzMDgyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZ2VuZXJpY3MvY292YXJpYW5jZTEvc3JjL0Jhc2UuamF2YQpAQCAtMCwwICsxLDUgQEAKK3B1YmxpYyBjbGFzcyBCYXNlIHsKKyAgcHVibGljIFZhbHVlIGdldFZhbHVlKCkgeworICAgIHJldHVybiBuZXcgVmFsdWUoKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2dlbmVyaWNzL2NvdmFyaWFuY2UxL3NyYy9DbGllbnQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2dlbmVyaWNzL2NvdmFyaWFuY2UxL3NyYy9DbGllbnQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMWIxNDg1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZ2VuZXJpY3MvY292YXJpYW5jZTEvc3JjL0NsaWVudC5qYXZhCkBAIC0wLDAgKzEsNiBAQAorcHVibGljIGNsYXNzIENsaWVudCB7CisgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKKyAgICBCYXNlIG9iaiA9IG5ldyBEZXJpdmVkKCk7CisgICAgU3lzdGVtLm91dC5wcmludGxuKG9iai5nZXRWYWx1ZSgpKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2dlbmVyaWNzL2NvdmFyaWFuY2UxL3NyYy9EZXJpdmVkLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9jb3ZhcmlhbmNlMS9zcmMvRGVyaXZlZC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIyMzU4YTgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9jb3ZhcmlhbmNlMS9zcmMvRGVyaXZlZC5qYXZhCkBAIC0wLDAgKzEsNSBAQAorcHVibGljIGNsYXNzIERlcml2ZWQgZXh0ZW5kcyBCYXNlIHsKKyAgcHVibGljIFZhbHVlRGVyaXZlZCBnZXRWYWx1ZSgpIHsKKyAgICByZXR1cm4gbmV3IFZhbHVlRGVyaXZlZCgpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZ2VuZXJpY3MvY292YXJpYW5jZTEvc3JjL1ZhbHVlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9jb3ZhcmlhbmNlMS9zcmMvVmFsdWUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZTE3M2VmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZ2VuZXJpY3MvY292YXJpYW5jZTEvc3JjL1ZhbHVlLmphdmEKQEAgLTAsMCArMSw1IEBACitwdWJsaWMgY2xhc3MgVmFsdWUgeworICBwdWJsaWMgU3RyaW5nIHRvU3RyaW5nKCkgeworICAgIHJldHVybiAiVmFsdWUiOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZ2VuZXJpY3MvY292YXJpYW5jZTEvc3JjL1ZhbHVlRGVyaXZlZC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZ2VuZXJpY3MvY292YXJpYW5jZTEvc3JjL1ZhbHVlRGVyaXZlZC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU2ZDc3YjUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9jb3ZhcmlhbmNlMS9zcmMvVmFsdWVEZXJpdmVkLmphdmEKQEAgLTAsMCArMSw1IEBACitwdWJsaWMgY2xhc3MgVmFsdWVEZXJpdmVkIGV4dGVuZHMgVmFsdWUgeworICBwdWJsaWMgU3RyaW5nIHRvU3RyaW5nKCkgeworICAgIHJldHVybiAiVmFsdWVEZXJpdmVkIjsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2dlbmVyaWNzL2NvdmFyaWFuY2UyLmxvZyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2dlbmVyaWNzL2NvdmFyaWFuY2UyLmxvZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zOWVlN2ViCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZ2VuZXJpY3MvY292YXJpYW5jZTIubG9nCkBAIC0wLDAgKzEsMTIgQEAKK0NsZWFuaW5nIG91dHB1dCBmaWxlczoKK291dC9wcm9kdWN0aW9uL0NvdmFyaWFuY2UyL0lmYWNlSW1wbC5jbGFzcworRW5kIG9mIGZpbGVzCitDb21waWxpbmcgZmlsZXM6CitzcmMvSWZhY2VJbXBsLmphdmEKK0VuZCBvZiBmaWxlcworQ2xlYW5pbmcgb3V0cHV0IGZpbGVzOgorb3V0L3Byb2R1Y3Rpb24vQ292YXJpYW5jZTIvQ2xpZW50LmNsYXNzCitFbmQgb2YgZmlsZXMKK0NvbXBpbGluZyBmaWxlczoKK3NyYy9DbGllbnQuamF2YQorRW5kIG9mIGZpbGVzCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9jb3ZhcmlhbmNlMi9JZmFjZUltcGwuamF2YS5uZXcgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9jb3ZhcmlhbmNlMi9JZmFjZUltcGwuamF2YS5uZXcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2Y5MGNlOQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2dlbmVyaWNzL2NvdmFyaWFuY2UyL0lmYWNlSW1wbC5qYXZhLm5ldwpAQCAtMCwwICsxLDcgQEAKK3B1YmxpYyBjbGFzcyBJZmFjZUltcGwgaW1wbGVtZW50cyBJZmFjZSB7CisgIAorICBwdWJsaWMgSWZhY2UgZm9vKCkgeworICAgIHJldHVybiB0aGlzOworICB9CisKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9jb3ZhcmlhbmNlMi9zcmMvQ2xpZW50LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9jb3ZhcmlhbmNlMi9zcmMvQ2xpZW50LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjZlNGVmOQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2dlbmVyaWNzL2NvdmFyaWFuY2UyL3NyYy9DbGllbnQuamF2YQpAQCAtMCwwICsxLDUgQEAKK3B1YmxpYyBjbGFzcyBDbGllbnQgeworICB2b2lkIGYoSWZhY2VJbXBsIGltcGwpIHsKKyAgICBpbXBsID0gaW1wbC5mb28oKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2dlbmVyaWNzL2NvdmFyaWFuY2UyL3NyYy9JZmFjZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZ2VuZXJpY3MvY292YXJpYW5jZTIvc3JjL0lmYWNlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTQ2ODZhZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2dlbmVyaWNzL2NvdmFyaWFuY2UyL3NyYy9JZmFjZS5qYXZhCkBAIC0wLDAgKzEsMyBAQAorcHVibGljIGludGVyZmFjZSBJZmFjZSB7CisgIElmYWNlIGZvbygpOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2dlbmVyaWNzL2NvdmFyaWFuY2UyL3NyYy9JZmFjZUltcGwuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2dlbmVyaWNzL2NvdmFyaWFuY2UyL3NyYy9JZmFjZUltcGwuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZjA4NjU5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZ2VuZXJpY3MvY292YXJpYW5jZTIvc3JjL0lmYWNlSW1wbC5qYXZhCkBAIC0wLDAgKzEsNyBAQAorcHVibGljIGNsYXNzIElmYWNlSW1wbCBpbXBsZW1lbnRzIElmYWNlIHsKKyAgCisgIHB1YmxpYyBJZmFjZUltcGwgZm9vKCkgeworICAgIHJldHVybiB0aGlzOworICB9CisKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9jb3ZhcmlhbmNlTm9DaGFuZ2VzLmxvZyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2dlbmVyaWNzL2NvdmFyaWFuY2VOb0NoYW5nZXMubG9nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIyNDIzOTkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9jb3ZhcmlhbmNlTm9DaGFuZ2VzLmxvZwpAQCAtMCwwICsxLDYgQEAKK0NsZWFuaW5nIG91dHB1dCBmaWxlczoKK291dC9wcm9kdWN0aW9uL0NvdmFyaWFuY2VOb0NoYW5nZXMvRGVyaXZlZC5jbGFzcworRW5kIG9mIGZpbGVzCitDb21waWxpbmcgZmlsZXM6CitzcmMvRGVyaXZlZC5qYXZhCitFbmQgb2YgZmlsZXMKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2dlbmVyaWNzL2NvdmFyaWFuY2VOb0NoYW5nZXMvRGVyaXZlZC5qYXZhLm5ldyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2dlbmVyaWNzL2NvdmFyaWFuY2VOb0NoYW5nZXMvRGVyaXZlZC5qYXZhLm5ldwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNDYyMTJmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZ2VuZXJpY3MvY292YXJpYW5jZU5vQ2hhbmdlcy9EZXJpdmVkLmphdmEubmV3CkBAIC0wLDAgKzEsNyBAQAorcHVibGljIGNsYXNzIERlcml2ZWQgZXh0ZW5kcyBCYXNlIHsKKyAgaW50IGZpZWxkID0gMTA7CisKKyAgcHVibGljIFZhbHVlRGVyaXZlZCBnZXRWYWx1ZSgpIHsKKyAgICByZXR1cm4gbmV3IFZhbHVlRGVyaXZlZCgpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZ2VuZXJpY3MvY292YXJpYW5jZU5vQ2hhbmdlcy9zcmMvQmFzZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZ2VuZXJpY3MvY292YXJpYW5jZU5vQ2hhbmdlcy9zcmMvQmFzZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVjZjMwODIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9jb3ZhcmlhbmNlTm9DaGFuZ2VzL3NyYy9CYXNlLmphdmEKQEAgLTAsMCArMSw1IEBACitwdWJsaWMgY2xhc3MgQmFzZSB7CisgIHB1YmxpYyBWYWx1ZSBnZXRWYWx1ZSgpIHsKKyAgICByZXR1cm4gbmV3IFZhbHVlKCk7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9jb3ZhcmlhbmNlTm9DaGFuZ2VzL3NyYy9DbGllbnQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2dlbmVyaWNzL2NvdmFyaWFuY2VOb0NoYW5nZXMvc3JjL0NsaWVudC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhiNGU1YTcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9jb3ZhcmlhbmNlTm9DaGFuZ2VzL3NyYy9DbGllbnQuamF2YQpAQCAtMCwwICsxLDYgQEAKK3B1YmxpYyBjbGFzcyBDbGllbnQgeworICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CisgICAgRGVyaXZlZCBvYmogPSBuZXcgRGVyaXZlZCgpOworICAgIFZhbHVlIHYgPSBvYmouZ2V0VmFsdWUoKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2dlbmVyaWNzL2NvdmFyaWFuY2VOb0NoYW5nZXMvc3JjL0Rlcml2ZWQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2dlbmVyaWNzL2NvdmFyaWFuY2VOb0NoYW5nZXMvc3JjL0Rlcml2ZWQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMjM1OGE4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZ2VuZXJpY3MvY292YXJpYW5jZU5vQ2hhbmdlcy9zcmMvRGVyaXZlZC5qYXZhCkBAIC0wLDAgKzEsNSBAQAorcHVibGljIGNsYXNzIERlcml2ZWQgZXh0ZW5kcyBCYXNlIHsKKyAgcHVibGljIFZhbHVlRGVyaXZlZCBnZXRWYWx1ZSgpIHsKKyAgICByZXR1cm4gbmV3IFZhbHVlRGVyaXZlZCgpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZ2VuZXJpY3MvY292YXJpYW5jZU5vQ2hhbmdlcy9zcmMvVmFsdWUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2dlbmVyaWNzL2NvdmFyaWFuY2VOb0NoYW5nZXMvc3JjL1ZhbHVlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmUxNzNlZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2dlbmVyaWNzL2NvdmFyaWFuY2VOb0NoYW5nZXMvc3JjL1ZhbHVlLmphdmEKQEAgLTAsMCArMSw1IEBACitwdWJsaWMgY2xhc3MgVmFsdWUgeworICBwdWJsaWMgU3RyaW5nIHRvU3RyaW5nKCkgeworICAgIHJldHVybiAiVmFsdWUiOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZ2VuZXJpY3MvY292YXJpYW5jZU5vQ2hhbmdlcy9zcmMvVmFsdWVEZXJpdmVkLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9jb3ZhcmlhbmNlTm9DaGFuZ2VzL3NyYy9WYWx1ZURlcml2ZWQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NmQ3N2I1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZ2VuZXJpY3MvY292YXJpYW5jZU5vQ2hhbmdlcy9zcmMvVmFsdWVEZXJpdmVkLmphdmEKQEAgLTAsMCArMSw1IEBACitwdWJsaWMgY2xhc3MgVmFsdWVEZXJpdmVkIGV4dGVuZHMgVmFsdWUgeworICBwdWJsaWMgU3RyaW5nIHRvU3RyaW5nKCkgeworICAgIHJldHVybiAiVmFsdWVEZXJpdmVkIjsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2dlbmVyaWNzL2RlZ2VuZXJpZnkubG9nIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZ2VuZXJpY3MvZGVnZW5lcmlmeS5sb2cKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDFjM2ViMgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2dlbmVyaWNzL2RlZ2VuZXJpZnkubG9nCkBAIC0wLDAgKzEsMTIgQEAKK0NsZWFuaW5nIG91dHB1dCBmaWxlczoKK291dC9wcm9kdWN0aW9uL0RlZ2VuZXJpZnkvQS5jbGFzcworRW5kIG9mIGZpbGVzCitDb21waWxpbmcgZmlsZXM6CitzcmMvQS5qYXZhCitFbmQgb2YgZmlsZXMKK0NsZWFuaW5nIG91dHB1dCBmaWxlczoKK291dC9wcm9kdWN0aW9uL0RlZ2VuZXJpZnkvQ2xpZW50LmNsYXNzCitFbmQgb2YgZmlsZXMKK0NvbXBpbGluZyBmaWxlczoKK3NyYy9DbGllbnQuamF2YQorRW5kIG9mIGZpbGVzCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9kZWdlbmVyaWZ5L0EuamF2YS5uZXcgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9kZWdlbmVyaWZ5L0EuamF2YS5uZXcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjFmZjJhYgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2dlbmVyaWNzL2RlZ2VuZXJpZnkvQS5qYXZhLm5ldwpAQCAtMCwwICsxLDIgQEAKK3B1YmxpYyBjbGFzcyBBIHsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9kZWdlbmVyaWZ5L3NyYy9BLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9kZWdlbmVyaWZ5L3NyYy9BLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTRhNTczZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2dlbmVyaWNzL2RlZ2VuZXJpZnkvc3JjL0EuamF2YQpAQCAtMCwwICsxLDIgQEAKK3B1YmxpYyBjbGFzcyBBPFQ+IHsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9kZWdlbmVyaWZ5L3NyYy9DbGllbnQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2dlbmVyaWNzL2RlZ2VuZXJpZnkvc3JjL0NsaWVudC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYyNmZjNjkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9kZWdlbmVyaWZ5L3NyYy9DbGllbnQuamF2YQpAQCAtMCwwICsxLDQgQEAKK3B1YmxpYyBjbGFzcyBDbGllbnQ8VD4geworICBwdWJsaWMgdm9pZCBmb28oQTxUPiBhKSB7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9kZWdlbmVyaWZ5MS5sb2cgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9kZWdlbmVyaWZ5MS5sb2cKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDI5NzdlNQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2dlbmVyaWNzL2RlZ2VuZXJpZnkxLmxvZwpAQCAtMCwwICsxLDEyIEBACitDbGVhbmluZyBvdXRwdXQgZmlsZXM6CitvdXQvcHJvZHVjdGlvbi9EZWdlbmVyaWZ5MS9BLmNsYXNzCitFbmQgb2YgZmlsZXMKK0NvbXBpbGluZyBmaWxlczoKK3NyYy9BLmphdmEKK0VuZCBvZiBmaWxlcworQ2xlYW5pbmcgb3V0cHV0IGZpbGVzOgorb3V0L3Byb2R1Y3Rpb24vRGVnZW5lcmlmeTEvQ2xpZW50LmNsYXNzCitFbmQgb2YgZmlsZXMKK0NvbXBpbGluZyBmaWxlczoKK3NyYy9DbGllbnQuamF2YQorRW5kIG9mIGZpbGVzCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9kZWdlbmVyaWZ5MS9BLmphdmEubmV3IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZ2VuZXJpY3MvZGVnZW5lcmlmeTEvQS5qYXZhLm5ldwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MWZmMmFiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZ2VuZXJpY3MvZGVnZW5lcmlmeTEvQS5qYXZhLm5ldwpAQCAtMCwwICsxLDIgQEAKK3B1YmxpYyBjbGFzcyBBIHsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9kZWdlbmVyaWZ5MS9zcmMvQS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZ2VuZXJpY3MvZGVnZW5lcmlmeTEvc3JjL0EuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNGE1NzNlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZ2VuZXJpY3MvZGVnZW5lcmlmeTEvc3JjL0EuamF2YQpAQCAtMCwwICsxLDIgQEAKK3B1YmxpYyBjbGFzcyBBPFQ+IHsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9kZWdlbmVyaWZ5MS9zcmMvQ2xpZW50LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9kZWdlbmVyaWZ5MS9zcmMvQ2xpZW50LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTNhZjU3ZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2dlbmVyaWNzL2RlZ2VuZXJpZnkxL3NyYy9DbGllbnQuamF2YQpAQCAtMCwwICsxLDQgQEAKK3B1YmxpYyBjbGFzcyBDbGllbnQgeworICBwdWJsaWMgPFQ+IHZvaWQgZm9vKEE8VD4gYSkgeworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZ2VuZXJpY3MvZmllbGRUeXBlQ2hhbmdlLmxvZyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2dlbmVyaWNzL2ZpZWxkVHlwZUNoYW5nZS5sb2cKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWJlNTI0YQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2dlbmVyaWNzL2ZpZWxkVHlwZUNoYW5nZS5sb2cKQEAgLTAsMCArMSwxMiBAQAorQ2xlYW5pbmcgb3V0cHV0IGZpbGVzOgorb3V0L3Byb2R1Y3Rpb24vRmllbGRUeXBlQ2hhbmdlL1NlcnZlci5jbGFzcworRW5kIG9mIGZpbGVzCitDb21waWxpbmcgZmlsZXM6CitzcmMvU2VydmVyLmphdmEKK0VuZCBvZiBmaWxlcworQ2xlYW5pbmcgb3V0cHV0IGZpbGVzOgorb3V0L3Byb2R1Y3Rpb24vRmllbGRUeXBlQ2hhbmdlL0NsaWVudC5jbGFzcworRW5kIG9mIGZpbGVzCitDb21waWxpbmcgZmlsZXM6CitzcmMvQ2xpZW50LmphdmEKK0VuZCBvZiBmaWxlcwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZ2VuZXJpY3MvZmllbGRUeXBlQ2hhbmdlL1NlcnZlci5qYXZhLm5ldyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2dlbmVyaWNzL2ZpZWxkVHlwZUNoYW5nZS9TZXJ2ZXIuamF2YS5uZXcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODdkY2NhNgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2dlbmVyaWNzL2ZpZWxkVHlwZUNoYW5nZS9TZXJ2ZXIuamF2YS5uZXcKQEAgLTAsMCArMSwzIEBACitwdWJsaWMgY2xhc3MgU2VydmVyIHsKKyAgR2VuZXJpY1R5cGU8SW50ZWdlcj4gZmllbGQgPSBuZXcgR2VuZXJpY1R5cGU8SW50ZWdlcj4oKTsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9maWVsZFR5cGVDaGFuZ2Uvc3JjL0NsaWVudC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZ2VuZXJpY3MvZmllbGRUeXBlQ2hhbmdlL3NyYy9DbGllbnQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNTIzYTIyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZ2VuZXJpY3MvZmllbGRUeXBlQ2hhbmdlL3NyYy9DbGllbnQuamF2YQpAQCAtMCwwICsxLDYgQEAKK3B1YmxpYyBjbGFzcyBDbGllbnQgeworCisgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpeworICAgIG5ldyBTZXJ2ZXIoKS5maWVsZC5mb28oImFhYSIpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZ2VuZXJpY3MvZmllbGRUeXBlQ2hhbmdlL3NyYy9HZW5lcmljVHlwZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZ2VuZXJpY3MvZmllbGRUeXBlQ2hhbmdlL3NyYy9HZW5lcmljVHlwZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA0MTIwZTQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9maWVsZFR5cGVDaGFuZ2Uvc3JjL0dlbmVyaWNUeXBlLmphdmEKQEAgLTAsMCArMSwzIEBACitwdWJsaWMgY2xhc3MgR2VuZXJpY1R5cGU8VD4geworICB2b2lkIGZvbyhUIHQpIHt9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZ2VuZXJpY3MvZmllbGRUeXBlQ2hhbmdlL3NyYy9TZXJ2ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2dlbmVyaWNzL2ZpZWxkVHlwZUNoYW5nZS9zcmMvU2VydmVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjhhYzJlMQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2dlbmVyaWNzL2ZpZWxkVHlwZUNoYW5nZS9zcmMvU2VydmVyLmphdmEKQEAgLTAsMCArMSwzIEBACitwdWJsaWMgY2xhc3MgU2VydmVyIHsKKyAgR2VuZXJpY1R5cGUgZmllbGQgPSBuZXcgR2VuZXJpY1R5cGUoKTsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9vdmVycmlkZUFubm90YXRlZEFub255bW91cy5sb2cgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9vdmVycmlkZUFubm90YXRlZEFub255bW91cy5sb2cKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDEzZDQxYQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2dlbmVyaWNzL292ZXJyaWRlQW5ub3RhdGVkQW5vbnltb3VzLmxvZwpAQCAtMCwwICsxLDEzIEBACitDbGVhbmluZyBvdXRwdXQgZmlsZXM6CitvdXQvcHJvZHVjdGlvbi9PdmVycmlkZUFubm90YXRlZEFub255bW91cy9wYWNrYWdlQS9CYXNlLmNsYXNzCitFbmQgb2YgZmlsZXMKK0NvbXBpbGluZyBmaWxlczoKK3NyYy9wYWNrYWdlQS9CYXNlLmphdmEKK0VuZCBvZiBmaWxlcworQ2xlYW5pbmcgb3V0cHV0IGZpbGVzOgorb3V0L3Byb2R1Y3Rpb24vT3ZlcnJpZGVBbm5vdGF0ZWRBbm9ueW1vdXMvcGFja2FnZUEvRGVyaXZlZCQxLmNsYXNzCitvdXQvcHJvZHVjdGlvbi9PdmVycmlkZUFubm90YXRlZEFub255bW91cy9wYWNrYWdlQS9EZXJpdmVkLmNsYXNzCitFbmQgb2YgZmlsZXMKK0NvbXBpbGluZyBmaWxlczoKK3NyYy9wYWNrYWdlQS9EZXJpdmVkLmphdmEKK0VuZCBvZiBmaWxlcwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZ2VuZXJpY3Mvb3ZlcnJpZGVBbm5vdGF0ZWRBbm9ueW1vdXMvZGF0YS54bWwgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9vdmVycmlkZUFubm90YXRlZEFub255bW91cy9kYXRhLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NGI1YjAzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZ2VuZXJpY3Mvb3ZlcnJpZGVBbm5vdGF0ZWRBbm9ueW1vdXMvZGF0YS54bWwKQEAgLTAsMCArMSwxNiBAQAorPHRlc3REYXRhPgorCisgIDxkZWxldGU+CisgIDwvZGVsZXRlPgorCisgIDxkZWxldGVkX2J5X21ha2U+CisgICAgPGZpbGUgcGF0aD0iY2xhc3Nlcy9wYWNrYWdlQS9CYXNlLmNsYXNzIiAvPgorICAgIDxmaWxlIHBhdGg9ImNsYXNzZXMvcGFja2FnZUEvRGVyaXZlZC5jbGFzcyIgLz4KKyAgICA8ZmlsZSBwYXRoPSJjbGFzc2VzL3BhY2thZ2VBL0Rlcml2ZWQkMS5jbGFzcyIgLz4KKyAgPC9kZWxldGVkX2J5X21ha2U+CisKKyAgPHJlY29tcGlsZT4KKyAgICA8ZmlsZSBwYXRoPSJzb3VyY2UvcGFja2FnZUEvRGVyaXZlZC5qYXZhIiAvPgorICA8L3JlY29tcGlsZT4KKworPC90ZXN0RGF0YT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9vdmVycmlkZUFubm90YXRlZEFub255bW91cy9zcmMvcGFja2FnZUEvQmFzZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZ2VuZXJpY3Mvb3ZlcnJpZGVBbm5vdGF0ZWRBbm9ueW1vdXMvc3JjL3BhY2thZ2VBL0Jhc2UuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNTBhOWNhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZ2VuZXJpY3Mvb3ZlcnJpZGVBbm5vdGF0ZWRBbm9ueW1vdXMvc3JjL3BhY2thZ2VBL0Jhc2UuamF2YQpAQCAtMCwwICsxLDcgQEAKK3BhY2thZ2UgcGFja2FnZUE7CisKK3B1YmxpYyBjbGFzcyBCYXNlIHsKKyAgcHVibGljIHZvaWQgZm9vKFN0cmluZy4uLiBwYXJhbXMpIHsKKyAgICBTeXN0ZW0ub3V0LnByaW50bG4ocGFyYW1zKTsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZ2VuZXJpY3Mvb3ZlcnJpZGVBbm5vdGF0ZWRBbm9ueW1vdXMvc3JjL3BhY2thZ2VBL0Jhc2UuamF2YS5uZXcgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9vdmVycmlkZUFubm90YXRlZEFub255bW91cy9zcmMvcGFja2FnZUEvQmFzZS5qYXZhLm5ldwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YjYxYWIxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZ2VuZXJpY3Mvb3ZlcnJpZGVBbm5vdGF0ZWRBbm9ueW1vdXMvc3JjL3BhY2thZ2VBL0Jhc2UuamF2YS5uZXcKQEAgLTAsMCArMSw3IEBACitwYWNrYWdlIHBhY2thZ2VBOworCitwdWJsaWMgY2xhc3MgQmFzZSB7CisgIHB1YmxpYyB2b2lkIGZvbyhqYXZhLnV0aWwuTGlzdDxTdHJpbmc+IHBhcmFtcykgeworICAgIFN5c3RlbS5vdXQucHJpbnRsbihwYXJhbXMpOworICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9vdmVycmlkZUFubm90YXRlZEFub255bW91cy9zcmMvcGFja2FnZUEvRGVyaXZlZC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZ2VuZXJpY3Mvb3ZlcnJpZGVBbm5vdGF0ZWRBbm9ueW1vdXMvc3JjL3BhY2thZ2VBL0Rlcml2ZWQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZTA5NmI4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZ2VuZXJpY3Mvb3ZlcnJpZGVBbm5vdGF0ZWRBbm9ueW1vdXMvc3JjL3BhY2thZ2VBL0Rlcml2ZWQuamF2YQpAQCAtMCwwICsxLDEyIEBACitwYWNrYWdlIHBhY2thZ2VBOworCitwdWJsaWMgY2xhc3MgRGVyaXZlZCB7CisgIHB1YmxpYyB2b2lkIGJhcigpIHsKKyAgICBCYXNlIGJhc2UgPSBuZXcgQmFzZSgpIHsKKyAgICAgIEBPdmVycmlkZQorICAgICAgcHVibGljIHZvaWQgZm9vKFN0cmluZy4uLiBwYXJhbXMpIHsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJEZXJpdmVkICIgKyBwYXJhbXMudG9TdHJpbmcoKSk7CisgICAgICB9CisgICAgfTsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZ2VuZXJpY3Mvb3ZlcnJpZGVBbm5vdGF0ZWRBbm9ueW1vdXNOb3RSZWNvbXBpbGUubG9nIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZ2VuZXJpY3Mvb3ZlcnJpZGVBbm5vdGF0ZWRBbm9ueW1vdXNOb3RSZWNvbXBpbGUubG9nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMzYmFkY2MKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9vdmVycmlkZUFubm90YXRlZEFub255bW91c05vdFJlY29tcGlsZS5sb2cKQEAgLTAsMCArMSwxMyBAQAorQ2xlYW5pbmcgb3V0cHV0IGZpbGVzOgorb3V0L3Byb2R1Y3Rpb24vT3ZlcnJpZGVBbm5vdGF0ZWRBbm9ueW1vdXNOb3RSZWNvbXBpbGUvcGFja2FnZUEvQmFzZS5jbGFzcworRW5kIG9mIGZpbGVzCitDb21waWxpbmcgZmlsZXM6CitzcmMvcGFja2FnZUEvQmFzZS5qYXZhCitFbmQgb2YgZmlsZXMKK0NsZWFuaW5nIG91dHB1dCBmaWxlczoKK291dC9wcm9kdWN0aW9uL092ZXJyaWRlQW5ub3RhdGVkQW5vbnltb3VzTm90UmVjb21waWxlL3BhY2thZ2VBL0Rlcml2ZWQkMS5jbGFzcworb3V0L3Byb2R1Y3Rpb24vT3ZlcnJpZGVBbm5vdGF0ZWRBbm9ueW1vdXNOb3RSZWNvbXBpbGUvcGFja2FnZUEvRGVyaXZlZC5jbGFzcworRW5kIG9mIGZpbGVzCitDb21waWxpbmcgZmlsZXM6CitzcmMvcGFja2FnZUEvRGVyaXZlZC5qYXZhCitFbmQgb2YgZmlsZXMKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2dlbmVyaWNzL292ZXJyaWRlQW5ub3RhdGVkQW5vbnltb3VzTm90UmVjb21waWxlL3NyYy9wYWNrYWdlQS9CYXNlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9vdmVycmlkZUFubm90YXRlZEFub255bW91c05vdFJlY29tcGlsZS9zcmMvcGFja2FnZUEvQmFzZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI1MGE5Y2EKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9vdmVycmlkZUFubm90YXRlZEFub255bW91c05vdFJlY29tcGlsZS9zcmMvcGFja2FnZUEvQmFzZS5qYXZhCkBAIC0wLDAgKzEsNyBAQAorcGFja2FnZSBwYWNrYWdlQTsKKworcHVibGljIGNsYXNzIEJhc2UgeworICBwdWJsaWMgdm9pZCBmb28oU3RyaW5nLi4uIHBhcmFtcykgeworICAgIFN5c3RlbS5vdXQucHJpbnRsbihwYXJhbXMpOworICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9vdmVycmlkZUFubm90YXRlZEFub255bW91c05vdFJlY29tcGlsZS9zcmMvcGFja2FnZUEvQmFzZS5qYXZhLm5ldyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2dlbmVyaWNzL292ZXJyaWRlQW5ub3RhdGVkQW5vbnltb3VzTm90UmVjb21waWxlL3NyYy9wYWNrYWdlQS9CYXNlLmphdmEubmV3Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjViNjFhYjEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9vdmVycmlkZUFubm90YXRlZEFub255bW91c05vdFJlY29tcGlsZS9zcmMvcGFja2FnZUEvQmFzZS5qYXZhLm5ldwpAQCAtMCwwICsxLDcgQEAKK3BhY2thZ2UgcGFja2FnZUE7CisKK3B1YmxpYyBjbGFzcyBCYXNlIHsKKyAgcHVibGljIHZvaWQgZm9vKGphdmEudXRpbC5MaXN0PFN0cmluZz4gcGFyYW1zKSB7CisgICAgU3lzdGVtLm91dC5wcmludGxuKHBhcmFtcyk7CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2dlbmVyaWNzL292ZXJyaWRlQW5ub3RhdGVkQW5vbnltb3VzTm90UmVjb21waWxlL3NyYy9wYWNrYWdlQS9EZXJpdmVkLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9vdmVycmlkZUFubm90YXRlZEFub255bW91c05vdFJlY29tcGlsZS9zcmMvcGFja2FnZUEvRGVyaXZlZC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMyNGU5ZmEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9vdmVycmlkZUFubm90YXRlZEFub255bW91c05vdFJlY29tcGlsZS9zcmMvcGFja2FnZUEvRGVyaXZlZC5qYXZhCkBAIC0wLDAgKzEsMTYgQEAKK3BhY2thZ2UgcGFja2FnZUE7CisKK3B1YmxpYyBjbGFzcyBEZXJpdmVkIGV4dGVuZHMgQmFzZSB7CisKKyAgcHVibGljIHZvaWQgYmFyKCkgeworICAgIFJ1bm5hYmxlIGJhc2UgPSBuZXcgUnVubmFibGVBZGFwdGVyKCkgeworICAgICAgQE92ZXJyaWRlCisgICAgICBwdWJsaWMgdm9pZCBydW4oKSB7CisgICAgICB9CisgICAgfTsKKyAgfQorICAKKy8vICBwdWJsaWMgdm9pZCBmb28oU3RyaW5nLi4uIHBhcmFtcykgeworLy8gICBTeXN0ZW0ub3V0LnByaW50bG4oIkRlcml2ZWQgIiArIHBhcmFtcy50b1N0cmluZygpKTsKKy8vICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9vdmVycmlkZUFubm90YXRlZEFub255bW91c05vdFJlY29tcGlsZS9zcmMvcGFja2FnZUEvUnVubmFibGVBZGFwdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9vdmVycmlkZUFubm90YXRlZEFub255bW91c05vdFJlY29tcGlsZS9zcmMvcGFja2FnZUEvUnVubmFibGVBZGFwdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjI1YWViNAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2dlbmVyaWNzL292ZXJyaWRlQW5ub3RhdGVkQW5vbnltb3VzTm90UmVjb21waWxlL3NyYy9wYWNrYWdlQS9SdW5uYWJsZUFkYXB0ZXIuamF2YQpAQCAtMCwwICsxLDYgQEAKK3BhY2thZ2UgcGFja2FnZUE7CisKK3B1YmxpYyBjbGFzcyBSdW5uYWJsZUFkYXB0ZXIgaW1wbGVtZW50cyBSdW5uYWJsZSB7CisgIHB1YmxpYyB2b2lkIHJ1bigpIHsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZ2VuZXJpY3Mvb3ZlcnJpZGVBbm5vdGF0ZWRJbm5lci5sb2cgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9vdmVycmlkZUFubm90YXRlZElubmVyLmxvZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kOTI5ZWQxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZ2VuZXJpY3Mvb3ZlcnJpZGVBbm5vdGF0ZWRJbm5lci5sb2cKQEAgLTAsMCArMSwxMyBAQAorQ2xlYW5pbmcgb3V0cHV0IGZpbGVzOgorb3V0L3Byb2R1Y3Rpb24vT3ZlcnJpZGVBbm5vdGF0ZWRJbm5lci9wYWNrYWdlQS9CYXNlLmNsYXNzCitFbmQgb2YgZmlsZXMKK0NvbXBpbGluZyBmaWxlczoKK3NyYy9wYWNrYWdlQS9CYXNlLmphdmEKK0VuZCBvZiBmaWxlcworQ2xlYW5pbmcgb3V0cHV0IGZpbGVzOgorb3V0L3Byb2R1Y3Rpb24vT3ZlcnJpZGVBbm5vdGF0ZWRJbm5lci9wYWNrYWdlQS9EZXJpdmVkJElubmVyLmNsYXNzCitvdXQvcHJvZHVjdGlvbi9PdmVycmlkZUFubm90YXRlZElubmVyL3BhY2thZ2VBL0Rlcml2ZWQuY2xhc3MKK0VuZCBvZiBmaWxlcworQ29tcGlsaW5nIGZpbGVzOgorc3JjL3BhY2thZ2VBL0Rlcml2ZWQuamF2YQorRW5kIG9mIGZpbGVzCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9vdmVycmlkZUFubm90YXRlZElubmVyL2RhdGEueG1sIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZ2VuZXJpY3Mvb3ZlcnJpZGVBbm5vdGF0ZWRJbm5lci9kYXRhLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZGVhMTI2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZ2VuZXJpY3Mvb3ZlcnJpZGVBbm5vdGF0ZWRJbm5lci9kYXRhLnhtbApAQCAtMCwwICsxLDE2IEBACis8dGVzdERhdGE+CisKKyAgPGRlbGV0ZT4KKyAgPC9kZWxldGU+CisKKyAgPGRlbGV0ZWRfYnlfbWFrZT4KKyAgICA8ZmlsZSBwYXRoPSJjbGFzc2VzL3BhY2thZ2VBL0Jhc2UuY2xhc3MiIC8+CisgICAgPGZpbGUgcGF0aD0iY2xhc3Nlcy9wYWNrYWdlQS9EZXJpdmVkLmNsYXNzIiAvPgorICAgIDxmaWxlIHBhdGg9ImNsYXNzZXMvcGFja2FnZUEvRGVyaXZlZCRJbm5lci5jbGFzcyIgLz4KKyAgPC9kZWxldGVkX2J5X21ha2U+CisKKyAgPHJlY29tcGlsZT4KKyAgICA8ZmlsZSBwYXRoPSJzb3VyY2UvcGFja2FnZUEvRGVyaXZlZC5qYXZhIiAvPgorICA8L3JlY29tcGlsZT4KKworPC90ZXN0RGF0YT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9vdmVycmlkZUFubm90YXRlZElubmVyL3NyYy9wYWNrYWdlQS9CYXNlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9vdmVycmlkZUFubm90YXRlZElubmVyL3NyYy9wYWNrYWdlQS9CYXNlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjUwYTljYQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2dlbmVyaWNzL292ZXJyaWRlQW5ub3RhdGVkSW5uZXIvc3JjL3BhY2thZ2VBL0Jhc2UuamF2YQpAQCAtMCwwICsxLDcgQEAKK3BhY2thZ2UgcGFja2FnZUE7CisKK3B1YmxpYyBjbGFzcyBCYXNlIHsKKyAgcHVibGljIHZvaWQgZm9vKFN0cmluZy4uLiBwYXJhbXMpIHsKKyAgICBTeXN0ZW0ub3V0LnByaW50bG4ocGFyYW1zKTsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZ2VuZXJpY3Mvb3ZlcnJpZGVBbm5vdGF0ZWRJbm5lci9zcmMvcGFja2FnZUEvQmFzZS5qYXZhLm5ldyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2dlbmVyaWNzL292ZXJyaWRlQW5ub3RhdGVkSW5uZXIvc3JjL3BhY2thZ2VBL0Jhc2UuamF2YS5uZXcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWI2MWFiMQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2dlbmVyaWNzL292ZXJyaWRlQW5ub3RhdGVkSW5uZXIvc3JjL3BhY2thZ2VBL0Jhc2UuamF2YS5uZXcKQEAgLTAsMCArMSw3IEBACitwYWNrYWdlIHBhY2thZ2VBOworCitwdWJsaWMgY2xhc3MgQmFzZSB7CisgIHB1YmxpYyB2b2lkIGZvbyhqYXZhLnV0aWwuTGlzdDxTdHJpbmc+IHBhcmFtcykgeworICAgIFN5c3RlbS5vdXQucHJpbnRsbihwYXJhbXMpOworICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9vdmVycmlkZUFubm90YXRlZElubmVyL3NyYy9wYWNrYWdlQS9EZXJpdmVkLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9vdmVycmlkZUFubm90YXRlZElubmVyL3NyYy9wYWNrYWdlQS9EZXJpdmVkLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjVkMzNhMAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2dlbmVyaWNzL292ZXJyaWRlQW5ub3RhdGVkSW5uZXIvc3JjL3BhY2thZ2VBL0Rlcml2ZWQuamF2YQpAQCAtMCwwICsxLDEwIEBACitwYWNrYWdlIHBhY2thZ2VBOworCitwdWJsaWMgY2xhc3MgRGVyaXZlZCB7CisgIGNsYXNzIElubmVyIGV4dGVuZHMgQmFzZSB7CisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIHZvaWQgZm9vKFN0cmluZy4uLiBwYXJhbXMpIHsKKyAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiRGVyaXZlZCAiICsgcGFyYW1zLnRvU3RyaW5nKCkpOworICAgIH0KKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZ2VuZXJpY3MvcGFyYW1UeXBlcy5sb2cgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9wYXJhbVR5cGVzLmxvZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iN2U4Y2Q3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZ2VuZXJpY3MvcGFyYW1UeXBlcy5sb2cKQEAgLTAsMCArMSwxMiBAQAorQ2xlYW5pbmcgb3V0cHV0IGZpbGVzOgorb3V0L3Byb2R1Y3Rpb24vUGFyYW1UeXBlcy9TZXJ2ZXIuY2xhc3MKK0VuZCBvZiBmaWxlcworQ29tcGlsaW5nIGZpbGVzOgorc3JjL1NlcnZlci5qYXZhCitFbmQgb2YgZmlsZXMKK0NsZWFuaW5nIG91dHB1dCBmaWxlczoKK291dC9wcm9kdWN0aW9uL1BhcmFtVHlwZXMvQ2xpZW50LmNsYXNzCitFbmQgb2YgZmlsZXMKK0NvbXBpbGluZyBmaWxlczoKK3NyYy9DbGllbnQuamF2YQorRW5kIG9mIGZpbGVzCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9wYXJhbVR5cGVzL1NlcnZlci5qYXZhLm5ldyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2dlbmVyaWNzL3BhcmFtVHlwZXMvU2VydmVyLmphdmEubmV3Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE4ODQ4NGMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9wYXJhbVR5cGVzL1NlcnZlci5qYXZhLm5ldwpAQCAtMCwwICsxLDYgQEAKK2ltcG9ydCBqYXZhLnV0aWwuU2V0OworCitwdWJsaWMgY2xhc3MgU2VydmVyIHsKKyAgICBwdWJsaWMgdm9pZCBmb28oU2V0PERhdGFCYXNlPiBjb2xsZWN0aW9uKSB7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZ2VuZXJpY3MvcGFyYW1UeXBlcy9zcmMvQ2xpZW50LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9wYXJhbVR5cGVzL3NyYy9DbGllbnQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZjM5MDFhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZ2VuZXJpY3MvcGFyYW1UeXBlcy9zcmMvQ2xpZW50LmphdmEKQEAgLTAsMCArMSw5IEBACitpbXBvcnQgamF2YS51dGlsLlNldDsKKworcHVibGljIGNsYXNzIENsaWVudCB7CisgICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgeworICAgICAgICBmaW5hbCBTZXJ2ZXIgc2VydmVyID0gbmV3IFNlcnZlcigpOworICAgICAgICBmaW5hbCBTZXQ8RGF0YURlcml2ZWQ+IHNldCA9IG51bGw7CisgICAgICAgIHNlcnZlci5mb28oc2V0KTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9wYXJhbVR5cGVzL3NyYy9EYXRhQmFzZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZ2VuZXJpY3MvcGFyYW1UeXBlcy9zcmMvRGF0YUJhc2UuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZjU0NDc1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZ2VuZXJpY3MvcGFyYW1UeXBlcy9zcmMvRGF0YUJhc2UuamF2YQpAQCAtMCwwICsxLDIgQEAKK3B1YmxpYyBjbGFzcyBEYXRhQmFzZSB7Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9wYXJhbVR5cGVzL3NyYy9EYXRhRGVyaXZlZC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZ2VuZXJpY3MvcGFyYW1UeXBlcy9zcmMvRGF0YURlcml2ZWQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZGE5YzY0MwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2dlbmVyaWNzL3BhcmFtVHlwZXMvc3JjL0RhdGFEZXJpdmVkLmphdmEKQEAgLTAsMCArMSwyIEBACitwdWJsaWMgY2xhc3MgRGF0YURlcml2ZWQgZXh0ZW5kcyBEYXRhQmFzZXsKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2dlbmVyaWNzL3BhcmFtVHlwZXMvc3JjL1NlcnZlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZ2VuZXJpY3MvcGFyYW1UeXBlcy9zcmMvU2VydmVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjljYWFlYgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2dlbmVyaWNzL3BhcmFtVHlwZXMvc3JjL1NlcnZlci5qYXZhCkBAIC0wLDAgKzEsNiBAQAoraW1wb3J0IGphdmEudXRpbC5TZXQ7CisKK3B1YmxpYyBjbGFzcyBTZXJ2ZXIgeworICAgIHB1YmxpYyB2b2lkIGZvbyhTZXQ8RGF0YURlcml2ZWQ+IGNvbGxlY3Rpb24pIHsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9yZXR1cm5UeXBlLmxvZyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2dlbmVyaWNzL3JldHVyblR5cGUubG9nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVhMzgzMmEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9nZW5lcmljcy9yZXR1cm5UeXBlLmxvZwpAQCAtMCwwICsxLDEyIEBACitDbGVhbmluZyBvdXRwdXQgZmlsZXM6CitvdXQvcHJvZHVjdGlvbi9SZXR1cm5UeXBlL1NlcnZlci5jbGFzcworRW5kIG9mIGZpbGVzCitDb21waWxpbmcgZmlsZXM6CitzcmMvU2VydmVyLmphdmEKK0VuZCBvZiBmaWxlcworQ2xlYW5pbmcgb3V0cHV0IGZpbGVzOgorb3V0L3Byb2R1Y3Rpb24vUmV0dXJuVHlwZS9DbGllbnQuY2xhc3MKK0VuZCBvZiBmaWxlcworQ29tcGlsaW5nIGZpbGVzOgorc3JjL0NsaWVudC5qYXZhCitFbmQgb2YgZmlsZXMKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2dlbmVyaWNzL3JldHVyblR5cGUvU2VydmVyLmphdmEubmV3IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZ2VuZXJpY3MvcmV0dXJuVHlwZS9TZXJ2ZXIuamF2YS5uZXcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzI3MDhkZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2dlbmVyaWNzL3JldHVyblR5cGUvU2VydmVyLmphdmEubmV3CkBAIC0wLDAgKzEsNSBAQAorcHVibGljIGNsYXNzIFNlcnZlciB7CisgIHB1YmxpYyBHZW5lcmljVHlwZTxTdHJpbmc+IGZvbygpIHsKKyAgICByZXR1cm4gbnVsbDsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2dlbmVyaWNzL3JldHVyblR5cGUvc3JjL0NsaWVudC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZ2VuZXJpY3MvcmV0dXJuVHlwZS9zcmMvQ2xpZW50LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDNlMWI2ZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2dlbmVyaWNzL3JldHVyblR5cGUvc3JjL0NsaWVudC5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKK3B1YmxpYyBjbGFzcyBDbGllbnQgeworICBwdWJsaWMgdm9pZCBiYXIoKSB7CisgICAgR2VuZXJpY1R5cGU8SW50ZWdlcj4gbGlzdCA9IG5ldyBTZXJ2ZXIoKS5mb28oKTsKKyAgICBTeXN0ZW0ub3V0LnByaW50bG4oImxpc3QgPSAiICsgbGlzdCk7OworICB9CisKKyAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncyl7CisgICAgbmV3IENsaWVudCgpLmJhcigpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZ2VuZXJpY3MvcmV0dXJuVHlwZS9zcmMvR2VuZXJpY1R5cGUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2dlbmVyaWNzL3JldHVyblR5cGUvc3JjL0dlbmVyaWNUeXBlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmE2MDJjMgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2dlbmVyaWNzL3JldHVyblR5cGUvc3JjL0dlbmVyaWNUeXBlLmphdmEKQEAgLTAsMCArMSwyIEBACitwdWJsaWMgY2xhc3MgR2VuZXJpY1R5cGU8VD4geworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2dlbmVyaWNzL3JldHVyblR5cGUvc3JjL1NlcnZlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvZ2VuZXJpY3MvcmV0dXJuVHlwZS9zcmMvU2VydmVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTNkMzc4MAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2dlbmVyaWNzL3JldHVyblR5cGUvc3JjL1NlcnZlci5qYXZhCkBAIC0wLDAgKzEsNSBAQAorcHVibGljIGNsYXNzIFNlcnZlciB7CisgIHB1YmxpYyBHZW5lcmljVHlwZTxJbnRlZ2VyPiBmb28oKSB7CisgICAgcmV0dXJuIG51bGw7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9pbXBvcnRzL2NsYXNzSW1wb3J0LmxvZyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2ltcG9ydHMvY2xhc3NJbXBvcnQubG9nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZmNDhmZTMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9pbXBvcnRzL2NsYXNzSW1wb3J0LmxvZwpAQCAtMCwwICsxLDkgQEAKK0NsZWFuaW5nIG91dHB1dCBmaWxlczoKK291dC9wcm9kdWN0aW9uL0NsYXNzSW1wb3J0L3BhY2thZ2VBL0EuY2xhc3MKK0VuZCBvZiBmaWxlcworQ2xlYW5pbmcgb3V0cHV0IGZpbGVzOgorb3V0L3Byb2R1Y3Rpb24vQ2xhc3NJbXBvcnQvQi5jbGFzcworRW5kIG9mIGZpbGVzCitDb21waWxpbmcgZmlsZXM6CitzcmMvQi5qYXZhCitFbmQgb2YgZmlsZXMKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2ltcG9ydHMvY2xhc3NJbXBvcnQvc3JjL0IuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2ltcG9ydHMvY2xhc3NJbXBvcnQvc3JjL0IuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NmUwYmMxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvaW1wb3J0cy9jbGFzc0ltcG9ydC9zcmMvQi5qYXZhCkBAIC0wLDAgKzEsNSBAQAoraW1wb3J0IHBhY2thZ2VBLkE7CisKK2NsYXNzIEIgeworCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvaW1wb3J0cy9jbGFzc0ltcG9ydC9zcmMvcGFja2FnZUEvQS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvaW1wb3J0cy9jbGFzc0ltcG9ydC9zcmMvcGFja2FnZUEvQS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUyYjAxOTgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9pbXBvcnRzL2NsYXNzSW1wb3J0L3NyYy9wYWNrYWdlQS9BLmphdmEKQEAgLTAsMCArMSw1IEBACitwYWNrYWdlIHBhY2thZ2VBOworCitwdWJsaWMgY2xhc3MgQSB7CisKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9pbXBvcnRzL2NsYXNzSW1wb3J0L3NyYy9wYWNrYWdlQS9BLmphdmEucmVtb3ZlIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvaW1wb3J0cy9jbGFzc0ltcG9ydC9zcmMvcGFja2FnZUEvQS5qYXZhLnJlbW92ZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yOTk1YTRkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvaW1wb3J0cy9jbGFzc0ltcG9ydC9zcmMvcGFja2FnZUEvQS5qYXZhLnJlbW92ZQpAQCAtMCwwICsxIEBACitkdW1teQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2ltcG9ydHMvc3RhdGljSW1wb3J0LmxvZyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2ltcG9ydHMvc3RhdGljSW1wb3J0LmxvZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMjkxNWJmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvaW1wb3J0cy9zdGF0aWNJbXBvcnQubG9nCkBAIC0wLDAgKzEsOSBAQAorQ2xlYW5pbmcgb3V0cHV0IGZpbGVzOgorb3V0L3Byb2R1Y3Rpb24vU3RhdGljSW1wb3J0L3BhY2thZ2VBL0EuY2xhc3MKK0VuZCBvZiBmaWxlcworQ2xlYW5pbmcgb3V0cHV0IGZpbGVzOgorb3V0L3Byb2R1Y3Rpb24vU3RhdGljSW1wb3J0L0IuY2xhc3MKK0VuZCBvZiBmaWxlcworQ29tcGlsaW5nIGZpbGVzOgorc3JjL0IuamF2YQorRW5kIG9mIGZpbGVzCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9pbXBvcnRzL3N0YXRpY0ltcG9ydC9zcmMvQi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvaW1wb3J0cy9zdGF0aWNJbXBvcnQvc3JjL0IuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NGJkNmU3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvaW1wb3J0cy9zdGF0aWNJbXBvcnQvc3JjL0IuamF2YQpAQCAtMCwwICsxLDUgQEAKK2ltcG9ydCBzdGF0aWMgcGFja2FnZUEuQS5QOworCitjbGFzcyBCIHsKKworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2ltcG9ydHMvc3RhdGljSW1wb3J0L3NyYy9wYWNrYWdlQS9BLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9pbXBvcnRzL3N0YXRpY0ltcG9ydC9zcmMvcGFja2FnZUEvQS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYxYzU1ZDkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9pbXBvcnRzL3N0YXRpY0ltcG9ydC9zcmMvcGFja2FnZUEvQS5qYXZhCkBAIC0wLDAgKzEsNSBAQAorcGFja2FnZSBwYWNrYWdlQTsKKworcHVibGljIGNsYXNzIEEgeworICBwdWJsaWMgc3RhdGljIGludCBQOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2ltcG9ydHMvc3RhdGljSW1wb3J0L3NyYy9wYWNrYWdlQS9BLmphdmEucmVtb3ZlIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvaW1wb3J0cy9zdGF0aWNJbXBvcnQvc3JjL3BhY2thZ2VBL0EuamF2YS5yZW1vdmUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjk5NWE0ZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2ltcG9ydHMvc3RhdGljSW1wb3J0L3NyYy9wYWNrYWdlQS9BLmphdmEucmVtb3ZlCkBAIC0wLDAgKzEgQEAKK2R1bW15ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvamFzcGVyVmFsaWRhdGlvbi9qYXZhRGVwZW5kZW50L1dFQi1JTkYvd2ViLnhtbCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2phc3BlclZhbGlkYXRpb24vamF2YURlcGVuZGVudC9XRUItSU5GL3dlYi54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2FmYzk5NgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2phc3BlclZhbGlkYXRpb24vamF2YURlcGVuZGVudC9XRUItSU5GL3dlYi54bWwKQEAgLTAsMCArMSw1IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorCis8IURPQ1RZUEUgd2ViLWFwcCBQVUJMSUMgIi0vL1N1biBNaWNyb3N5c3RlbXMsIEluYy4vL0RURCBXZWIgQXBwbGljYXRpb24gMi4zLy9FTiIgImh0dHA6Ly9qYXZhLnN1bi5jb20vZHRkL3dlYi1hcHBfMl8zLmR0ZCI+Cis8d2ViLWFwcD4KKzwvd2ViLWFwcD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9qYXNwZXJWYWxpZGF0aW9uL2phdmFEZXBlbmRlbnQvZGF0YS54bWwgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9qYXNwZXJWYWxpZGF0aW9uL2phdmFEZXBlbmRlbnQvZGF0YS54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzI1M2U3YgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2phc3BlclZhbGlkYXRpb24vamF2YURlcGVuZGVudC9kYXRhLnhtbApAQCAtMCwwICsxLDEyIEBACis8dGVzdERhdGE+CisgIDxkZWxldGU+CisgIDwvZGVsZXRlPgorCisgIDxkZWxldGVkX2J5X21ha2U+CisgICAgPGZpbGUgcGF0aD0iY2xhc3Nlcy94L1MuY2xhc3MiIC8+CisgIDwvZGVsZXRlZF9ieV9tYWtlPgorCisgIDxyZWNvbXBpbGU+CisgICAgPGZpbGUgcGF0aD0icm9vdC9hLmpzcCIgLz4KKyAgPC9yZWNvbXBpbGU+Cis8L3Rlc3REYXRhPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2phc3BlclZhbGlkYXRpb24vamF2YURlcGVuZGVudC9leHBsb2RlZC9XRUItSU5GL2NsYXNzZXMvYS5jbGFzcyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2phc3BlclZhbGlkYXRpb24vamF2YURlcGVuZGVudC9leHBsb2RlZC9XRUItSU5GL2NsYXNzZXMvYS5jbGFzcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZWQyNWQzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvamFzcGVyVmFsaWRhdGlvbi9qYXZhRGVwZW5kZW50L2V4cGxvZGVkL1dFQi1JTkYvY2xhc3Nlcy9hLmNsYXNzCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2phc3BlclZhbGlkYXRpb24vamF2YURlcGVuZGVudC9leHBsb2RlZC9XRUItSU5GL2xpYi94eHguamFyIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvamFzcGVyVmFsaWRhdGlvbi9qYXZhRGVwZW5kZW50L2V4cGxvZGVkL1dFQi1JTkYvbGliL3h4eC5qYXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGZjMzY2OQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2phc3BlclZhbGlkYXRpb24vamF2YURlcGVuZGVudC9leHBsb2RlZC9XRUItSU5GL2xpYi94eHguamFyCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2phc3BlclZhbGlkYXRpb24vamF2YURlcGVuZGVudC9leHBsb2RlZC9XRUItSU5GL3dlYi54bWwgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9qYXNwZXJWYWxpZGF0aW9uL2phdmFEZXBlbmRlbnQvZXhwbG9kZWQvV0VCLUlORi93ZWIueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNhZmM5OTYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9qYXNwZXJWYWxpZGF0aW9uL2phdmFEZXBlbmRlbnQvZXhwbG9kZWQvV0VCLUlORi93ZWIueG1sCkBAIC0wLDAgKzEsNSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKworPCFET0NUWVBFIHdlYi1hcHAgUFVCTElDICItLy9TdW4gTWljcm9zeXN0ZW1zLCBJbmMuLy9EVEQgV2ViIEFwcGxpY2F0aW9uIDIuMy8vRU4iICJodHRwOi8vamF2YS5zdW4uY29tL2R0ZC93ZWItYXBwXzJfMy5kdGQiPgorPHdlYi1hcHA+Cis8L3dlYi1hcHA+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvamFzcGVyVmFsaWRhdGlvbi9qYXZhRGVwZW5kZW50L2V4cGxvZGVkL2EuanNwIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvamFzcGVyVmFsaWRhdGlvbi9qYXZhRGVwZW5kZW50L2V4cGxvZGVkL2EuanNwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRlYWIwNjcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9qYXNwZXJWYWxpZGF0aW9uL2phdmFEZXBlbmRlbnQvZXhwbG9kZWQvYS5qc3AKQEAgLTAsMCArMSwxNCBAQAorPCUtLQorICBDcmVhdGVkIGJ5IEludGVsbGlKIElERUEuCisgIFVzZXI6IGNkcgorICBEYXRlOiBTZXAgMTcsIDIwMDQKKyAgVGltZTogMjo1Mzo1OCBQTQorICBUbyBjaGFuZ2UgdGhpcyB0ZW1wbGF0ZSB1c2UgRmlsZSB8IFNldHRpbmdzIHwgRmlsZSBUZW1wbGF0ZXMuCistLSU+Cis8JUAgcGFnZSBjb250ZW50VHlwZT0idGV4dC9odG1sO2NoYXJzZXQ9VVRGLTgiIGxhbmd1YWdlPSJqYXZhIiAlPgorPCVAaW5jbHVkZSBmaWxlPSJkZXAuanNwIiAlPgorPCVAaW5jbHVkZSBmaWxlPSJkZXAyLmpzcCIgJT4KKzxodG1sPgorICA8aGVhZD48dGl0bGU+U2ltcGxlIGpzcCBwYWdlPC90aXRsZT48L2hlYWQ+CisgIDxib2R5PlBsYWNlIHlvdXIgY29udGVudCBoZXJlPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2phc3BlclZhbGlkYXRpb24vamF2YURlcGVuZGVudC9saWIveHh4LmphciBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2phc3BlclZhbGlkYXRpb24vamF2YURlcGVuZGVudC9saWIveHh4LmphcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZmMzNjY5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvamFzcGVyVmFsaWRhdGlvbi9qYXZhRGVwZW5kZW50L2xpYi94eHguamFyCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2phc3BlclZhbGlkYXRpb24vamF2YURlcGVuZGVudC9tb2R1bGUuaW1sIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvamFzcGVyVmFsaWRhdGlvbi9qYXZhRGVwZW5kZW50L21vZHVsZS5pbWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjAxZjUyOAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2phc3BlclZhbGlkYXRpb24vamF2YURlcGVuZGVudC9tb2R1bGUuaW1sCkBAIC0wLDAgKzEsMzYgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8bW9kdWxlIHZlcnNpb249IjQiIHJlbGF0aXZlUGF0aHM9InRydWUiIHR5cGU9IkpBVkFfTU9EVUxFIj4KKyAgPGNvbXBvbmVudCBuYW1lPSJNb2R1bGVSb290TWFuYWdlciIgLz4KKyAgPGNvbXBvbmVudCBuYW1lPSJOZXdNb2R1bGVSb290TWFuYWdlciI+CisgICAgPG91dHB1dCB1cmw9ImZpbGU6Ly8kTU9EVUxFX0RJUiQvY2xhc3NlcyIgLz4KKyAgICA8ZXhjbHVkZS1vdXRwdXQgLz4KKyAgICA8ZXhwbG9kZWQgdXJsPSJmaWxlOi8vJE1PRFVMRV9ESVIkL2V4cGxvZGVkIiAvPgorICAgIDxleGNsdWRlLWV4cGxvZGVkIC8+CisgICAgPGNvbnRlbnQgdXJsPSJmaWxlOi8vJE1PRFVMRV9ESVIkIiAvPgorICAgIDxvcmRlckVudHJ5IHR5cGU9ImluaGVyaXRlZEpkayIgLz4KKyAgICA8b3JkZXJFbnRyeSB0eXBlPSJzb3VyY2VGb2xkZXIiIGZvclRlc3RzPSJmYWxzZSIgLz4KKyAgICA8b3JkZXJFbnRyeSB0eXBlPSJtb2R1bGUtbGlicmFyeSI+CisgICAgICA8bGlicmFyeT4KKyAgICAgICAgPENMQVNTRVM+CisgICAgICAgICAgPHJvb3QgdXJsPSJqYXI6Ly8kTU9EVUxFX0RJUiQvbGliL3h4eC5qYXIhLyIgLz4KKyAgICAgICAgPC9DTEFTU0VTPgorICAgICAgICA8SkFWQURPQyAvPgorICAgICAgICA8U09VUkNFUyAvPgorICAgICAgPC9saWJyYXJ5PgorICAgIDwvb3JkZXJFbnRyeT4KKyAgICA8b3JkZXJFbnRyeVByb3BlcnRpZXMgLz4KKyAgPC9jb21wb25lbnQ+CisgIDxjb21wb25lbnQgbmFtZT0iRmFjZXRNYW5hZ2VyIj4KKyAgICA8ZmFjZXQgdHlwZT0id2ViIiBuYW1lPSJtb2R1bGUiPgorICAgICAgPGNvbmZpZ3VyYXRpb24+CisgICAgICAgIDx3ZWJyb290cz4KKyAgICAgICAgICA8cm9vdCB1cmw9ImZpbGU6Ly8kTU9EVUxFX0RJUiQvcm9vdCIgcmVsYXRpdmU9Ii8iIC8+CisgICAgICAgIDwvd2Vicm9vdHM+CisgICAgICAgIDxkZXNjcmlwdG9ycz4KKyAgICAgICAgICA8ZGVwbG95bWVudERlc2NyaXB0b3IgbmFtZT0id2ViLnhtbCIgdXJsPSJmaWxlOi8vJE1PRFVMRV9ESVIkL1dFQi1JTkYvd2ViLnhtbCIgdmVyc2lvbj0iMi4zIiAvPgorICAgICAgICA8L2Rlc2NyaXB0b3JzPgorICAgICAgPC9jb25maWd1cmF0aW9uPgorICAgIDwvZmFjZXQ+CisgIDwvY29tcG9uZW50PgorPC9tb2R1bGU+CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2phc3BlclZhbGlkYXRpb24vamF2YURlcGVuZGVudC9yb290L2EuanNwIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvamFzcGVyVmFsaWRhdGlvbi9qYXZhRGVwZW5kZW50L3Jvb3QvYS5qc3AKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzFhZGVjNgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2phc3BlclZhbGlkYXRpb24vamF2YURlcGVuZGVudC9yb290L2EuanNwCkBAIC0wLDAgKzEsNyBAQAorPCVAIHBhZ2UgaW1wb3J0PSJ4LlMiJT4KKworPCVAIHBhZ2UgY29udGVudFR5cGU9InRleHQvaHRtbDtjaGFyc2V0PVVURi04IiBsYW5ndWFnZT0iamF2YSIgJT4KKworPCUgUy5mKCk7ICU+CitBQUFBQQorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9qYXNwZXJWYWxpZGF0aW9uL2phdmFEZXBlbmRlbnQvc291cmNlL2EuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2phc3BlclZhbGlkYXRpb24vamF2YURlcGVuZGVudC9zb3VyY2UvYS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg1MmY1NGYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9qYXNwZXJWYWxpZGF0aW9uL2phdmFEZXBlbmRlbnQvc291cmNlL2EuamF2YQpAQCAtMCwwICsxIEBACitjbGFzcyBhe30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9qYXNwZXJWYWxpZGF0aW9uL2phdmFEZXBlbmRlbnQvc291cmNlL3gvUy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvamFzcGVyVmFsaWRhdGlvbi9qYXZhRGVwZW5kZW50L3NvdXJjZS94L1MuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNzJiZTRhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvamFzcGVyVmFsaWRhdGlvbi9qYXZhRGVwZW5kZW50L3NvdXJjZS94L1MuamF2YQpAQCAtMCwwICsxLDcgQEAKK3BhY2thZ2UgeDsKKworLy8vLy8vLy8vLworcHVibGljIGNsYXNzIFMgeworICBwdWJsaWMgc3RhdGljIHZvaWQgZigpIHsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvamFzcGVyVmFsaWRhdGlvbi9qYXZhRGVwZW5kZW50L3NvdXJjZS94L1MuamF2YS5uZXcgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9qYXNwZXJWYWxpZGF0aW9uL2phdmFEZXBlbmRlbnQvc291cmNlL3gvUy5qYXZhLm5ldwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43YjA1NjkzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvamFzcGVyVmFsaWRhdGlvbi9qYXZhRGVwZW5kZW50L3NvdXJjZS94L1MuamF2YS5uZXcKQEAgLTAsMCArMSw3IEBACitwYWNrYWdlIHg7CisKKy8vLy8vLy8vLy8gWFhYWFhYWAorcHVibGljIGNsYXNzIFMgeworICBwdWJsaWMgc3RhdGljIHZvaWQgZigpIHsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvamFzcGVyVmFsaWRhdGlvbi9qc3BEZXBlbmRlbnQvV0VCLUlORi93ZWIueG1sIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvamFzcGVyVmFsaWRhdGlvbi9qc3BEZXBlbmRlbnQvV0VCLUlORi93ZWIueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNhZmM5OTYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9qYXNwZXJWYWxpZGF0aW9uL2pzcERlcGVuZGVudC9XRUItSU5GL3dlYi54bWwKQEAgLTAsMCArMSw1IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorCis8IURPQ1RZUEUgd2ViLWFwcCBQVUJMSUMgIi0vL1N1biBNaWNyb3N5c3RlbXMsIEluYy4vL0RURCBXZWIgQXBwbGljYXRpb24gMi4zLy9FTiIgImh0dHA6Ly9qYXZhLnN1bi5jb20vZHRkL3dlYi1hcHBfMl8zLmR0ZCI+Cis8d2ViLWFwcD4KKzwvd2ViLWFwcD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9qYXNwZXJWYWxpZGF0aW9uL2pzcERlcGVuZGVudC9kYXRhLnhtbCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2phc3BlclZhbGlkYXRpb24vanNwRGVwZW5kZW50L2RhdGEueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA3N2Y5YzEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9qYXNwZXJWYWxpZGF0aW9uL2pzcERlcGVuZGVudC9kYXRhLnhtbApAQCAtMCwwICsxLDExIEBACis8dGVzdERhdGE+CisgIDxkZWxldGU+CisgIDwvZGVsZXRlPgorCisgIDxkZWxldGVkX2J5X21ha2U+CisgIDwvZGVsZXRlZF9ieV9tYWtlPgorCisgIDxyZWNvbXBpbGU+CisgICAgPGZpbGUgcGF0aD0icm9vdC9hLmpzcCIgLz4KKyAgPC9yZWNvbXBpbGU+Cis8L3Rlc3REYXRhPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2phc3BlclZhbGlkYXRpb24vanNwRGVwZW5kZW50L2V4cGxvZGVkL1dFQi1JTkYvY2xhc3Nlcy9hLmNsYXNzIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvamFzcGVyVmFsaWRhdGlvbi9qc3BEZXBlbmRlbnQvZXhwbG9kZWQvV0VCLUlORi9jbGFzc2VzL2EuY2xhc3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGVkMjVkMwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2phc3BlclZhbGlkYXRpb24vanNwRGVwZW5kZW50L2V4cGxvZGVkL1dFQi1JTkYvY2xhc3Nlcy9hLmNsYXNzCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2phc3BlclZhbGlkYXRpb24vanNwRGVwZW5kZW50L2V4cGxvZGVkL1dFQi1JTkYvbGliL3h4eC5qYXIgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9qYXNwZXJWYWxpZGF0aW9uL2pzcERlcGVuZGVudC9leHBsb2RlZC9XRUItSU5GL2xpYi94eHguamFyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRmYzM2NjkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9qYXNwZXJWYWxpZGF0aW9uL2pzcERlcGVuZGVudC9leHBsb2RlZC9XRUItSU5GL2xpYi94eHguamFyCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2phc3BlclZhbGlkYXRpb24vanNwRGVwZW5kZW50L2V4cGxvZGVkL1dFQi1JTkYvd2ViLnhtbCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2phc3BlclZhbGlkYXRpb24vanNwRGVwZW5kZW50L2V4cGxvZGVkL1dFQi1JTkYvd2ViLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYWZjOTk2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvamFzcGVyVmFsaWRhdGlvbi9qc3BEZXBlbmRlbnQvZXhwbG9kZWQvV0VCLUlORi93ZWIueG1sCkBAIC0wLDAgKzEsNSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKworPCFET0NUWVBFIHdlYi1hcHAgUFVCTElDICItLy9TdW4gTWljcm9zeXN0ZW1zLCBJbmMuLy9EVEQgV2ViIEFwcGxpY2F0aW9uIDIuMy8vRU4iICJodHRwOi8vamF2YS5zdW4uY29tL2R0ZC93ZWItYXBwXzJfMy5kdGQiPgorPHdlYi1hcHA+Cis8L3dlYi1hcHA+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvamFzcGVyVmFsaWRhdGlvbi9qc3BEZXBlbmRlbnQvZXhwbG9kZWQvYS5qc3AgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9qYXNwZXJWYWxpZGF0aW9uL2pzcERlcGVuZGVudC9leHBsb2RlZC9hLmpzcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZWFiMDY3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvamFzcGVyVmFsaWRhdGlvbi9qc3BEZXBlbmRlbnQvZXhwbG9kZWQvYS5qc3AKQEAgLTAsMCArMSwxNCBAQAorPCUtLQorICBDcmVhdGVkIGJ5IEludGVsbGlKIElERUEuCisgIFVzZXI6IGNkcgorICBEYXRlOiBTZXAgMTcsIDIwMDQKKyAgVGltZTogMjo1Mzo1OCBQTQorICBUbyBjaGFuZ2UgdGhpcyB0ZW1wbGF0ZSB1c2UgRmlsZSB8IFNldHRpbmdzIHwgRmlsZSBUZW1wbGF0ZXMuCistLSU+Cis8JUAgcGFnZSBjb250ZW50VHlwZT0idGV4dC9odG1sO2NoYXJzZXQ9VVRGLTgiIGxhbmd1YWdlPSJqYXZhIiAlPgorPCVAaW5jbHVkZSBmaWxlPSJkZXAuanNwIiAlPgorPCVAaW5jbHVkZSBmaWxlPSJkZXAyLmpzcCIgJT4KKzxodG1sPgorICA8aGVhZD48dGl0bGU+U2ltcGxlIGpzcCBwYWdlPC90aXRsZT48L2hlYWQ+CisgIDxib2R5PlBsYWNlIHlvdXIgY29udGVudCBoZXJlPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2phc3BlclZhbGlkYXRpb24vanNwRGVwZW5kZW50L2V4cGxvZGVkL2RlcC5qc3AgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9qYXNwZXJWYWxpZGF0aW9uL2pzcERlcGVuZGVudC9leHBsb2RlZC9kZXAuanNwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY5ZWMyM2QKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9qYXNwZXJWYWxpZGF0aW9uL2pzcERlcGVuZGVudC9leHBsb2RlZC9kZXAuanNwCkBAIC0wLDAgKzEgQEAKK2RkZApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2phc3BlclZhbGlkYXRpb24vanNwRGVwZW5kZW50L2V4cGxvZGVkL2RlcDIuanNwIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvamFzcGVyVmFsaWRhdGlvbi9qc3BEZXBlbmRlbnQvZXhwbG9kZWQvZGVwMi5qc3AKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjllYzIzZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2phc3BlclZhbGlkYXRpb24vanNwRGVwZW5kZW50L2V4cGxvZGVkL2RlcDIuanNwCkBAIC0wLDAgKzEgQEAKK2RkZApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2phc3BlclZhbGlkYXRpb24vanNwRGVwZW5kZW50L2V4cGxvZGVkL2Rpci94eHguanNwIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvamFzcGVyVmFsaWRhdGlvbi9qc3BEZXBlbmRlbnQvZXhwbG9kZWQvZGlyL3h4eC5qc3AKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDBhNGEwYgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2phc3BlclZhbGlkYXRpb24vanNwRGVwZW5kZW50L2V4cGxvZGVkL2Rpci94eHguanNwCkBAIC0wLDAgKzEsMyBAQAorPCUKKyAgICBpbnQgYSA9IDA7CislPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2phc3BlclZhbGlkYXRpb24vanNwRGVwZW5kZW50L2xpYi94eHguamFyIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvamFzcGVyVmFsaWRhdGlvbi9qc3BEZXBlbmRlbnQvbGliL3h4eC5qYXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGZjMzY2OQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2phc3BlclZhbGlkYXRpb24vanNwRGVwZW5kZW50L2xpYi94eHguamFyCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2phc3BlclZhbGlkYXRpb24vanNwRGVwZW5kZW50L21vZHVsZS5pbWwgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9qYXNwZXJWYWxpZGF0aW9uL2pzcERlcGVuZGVudC9tb2R1bGUuaW1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE0YWEwMTQ1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvamFzcGVyVmFsaWRhdGlvbi9qc3BEZXBlbmRlbnQvbW9kdWxlLmltbApAQCAtMCwwICsxLDYwIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPG1vZHVsZSB2ZXJzaW9uPSI0IiByZWxhdGl2ZVBhdGhzPSJ0cnVlIiB0eXBlPSJKQVZBX01PRFVMRSI+CisgIDxjb21wb25lbnQgbmFtZT0iTW9kdWxlUm9vdE1hbmFnZXIiIC8+CisgIDxjb21wb25lbnQgbmFtZT0iTmV3TW9kdWxlUm9vdE1hbmFnZXIiPgorICAgIDxvdXRwdXQgdXJsPSJmaWxlOi8vJE1PRFVMRV9ESVIkL2NsYXNzZXMiIC8+CisgICAgPGV4Y2x1ZGUtb3V0cHV0IC8+CisgICAgPGV4cGxvZGVkIHVybD0iZmlsZTovLyRNT0RVTEVfRElSJC9leHBsb2RlZCIgLz4KKyAgICA8ZXhjbHVkZS1leHBsb2RlZCAvPgorICAgIDxjb250ZW50IHVybD0iZmlsZTovLyRNT0RVTEVfRElSJCIgLz4KKyAgICA8b3JkZXJFbnRyeSB0eXBlPSJpbmhlcml0ZWRKZGsiIC8+CisgICAgPG9yZGVyRW50cnkgdHlwZT0ic291cmNlRm9sZGVyIiBmb3JUZXN0cz0iZmFsc2UiIC8+CisgICAgPG9yZGVyRW50cnkgdHlwZT0ibW9kdWxlLWxpYnJhcnkiPgorICAgICAgPGxpYnJhcnk+CisgICAgICAgIDxDTEFTU0VTPgorICAgICAgICAgIDxyb290IHVybD0iamFyOi8vJE1PRFVMRV9ESVIkL2xpYi94eHguamFyIS8iIC8+CisgICAgICAgIDwvQ0xBU1NFUz4KKyAgICAgICAgPEpBVkFET0MgLz4KKyAgICAgICAgPFNPVVJDRVMgLz4KKyAgICAgIDwvbGlicmFyeT4KKyAgICA8L29yZGVyRW50cnk+CisgICAgPG9yZGVyRW50cnlQcm9wZXJ0aWVzIC8+CisgIDwvY29tcG9uZW50PgorICA8Y29tcG9uZW50IG5hbWU9IlZjc01hbmFnZXJDb25maWd1cmF0aW9uIj4KKyAgICA8b3B0aW9uIG5hbWU9IkFDVElWRV9WQ1NfTkFNRSIgdmFsdWU9IiZsdDtOb25lJmd0OyIgLz4KKyAgICA8b3B0aW9uIG5hbWU9IlVTRV9QUk9KRUNUX1ZDUyIgdmFsdWU9InRydWUiIC8+CisgIDwvY29tcG9uZW50PgorICA8Y29tcG9uZW50IG5hbWU9IkZhY2V0TWFuYWdlciI+CisgICAgPGZhY2V0IHR5cGU9IndlYiIgbmFtZT0ibW9kdWxlIj4KKyAgICAgIDxjb25maWd1cmF0aW9uPgorICAgICAgICA8d2Vicm9vdHM+CisgICAgICAgICAgPHJvb3QgdXJsPSJmaWxlOi8vJE1PRFVMRV9ESVIkL3Jvb3QiIHJlbGF0aXZlPSIvIiAvPgorICAgICAgICA8L3dlYnJvb3RzPgorICAgICAgICA8cGFja2FnaW5nPgorICAgICAgICAgIDxjb250YWluZXJFbGVtZW50IHR5cGU9Im1vZHVsZSIgbmFtZT0ibW9kdWxlIj4KKyAgICAgICAgICAgIDxhdHRyaWJ1dGUgbmFtZT0ibWV0aG9kIiB2YWx1ZT0iMSIgLz4KKyAgICAgICAgICAgIDxhdHRyaWJ1dGUgbmFtZT0iVVJJIiB2YWx1ZT0iL1dFQi1JTkYvY2xhc3NlcyIgLz4KKyAgICAgICAgICA8L2NvbnRhaW5lckVsZW1lbnQ+CisgICAgICAgICAgPGNvbnRhaW5lckVsZW1lbnQgdHlwZT0ibGlicmFyeSIgbGV2ZWw9Im1vZHVsZSI+CisgICAgICAgICAgICA8dXJsPmphcjovLyRNT0RVTEVfRElSJC9saWIveHh4LmphciEvPC91cmw+CisgICAgICAgICAgICA8YXR0cmlidXRlIG5hbWU9Im1ldGhvZCIgdmFsdWU9IjEiIC8+CisgICAgICAgICAgICA8YXR0cmlidXRlIG5hbWU9IlVSSSIgdmFsdWU9Ii9XRUItSU5GL2xpYi94eHguamFyIiAvPgorICAgICAgICAgIDwvY29udGFpbmVyRWxlbWVudD4KKyAgICAgICAgPC9wYWNrYWdpbmc+CisgICAgICAgIDxkZXNjcmlwdG9ycz4KKyAgICAgICAgICA8ZGVwbG95bWVudERlc2NyaXB0b3IgbmFtZT0id2ViLnhtbCIgdXJsPSJmaWxlOi8vJE1PRFVMRV9ESVIkL1dFQi1JTkYvd2ViLnhtbCIgdmVyc2lvbj0iMi4zIiAvPgorICAgICAgICA8L2Rlc2NyaXB0b3JzPgorICAgICAgICA8YnVpbGRpbmc+CisgICAgICAgICAgPHNldHRpbmcgbmFtZT0iRVhQTE9ERURfVVJMIiB2YWx1ZT0iZmlsZTovLyRNT0RVTEVfRElSJC9leHBsb2RlZCIgLz4KKyAgICAgICAgICA8c2V0dGluZyBuYW1lPSJFWFBMT0RFRF9FTkFCTEVEIiB2YWx1ZT0idHJ1ZSIgLz4KKyAgICAgICAgICA8c2V0dGluZyBuYW1lPSJKQVJfVVJMIiB2YWx1ZT0iZmlsZTovLyRNT0RVTEVfRElSJC9kZXAvd2FyL21vZHVsZS53YXIiIC8+CisgICAgICAgICAgPHNldHRpbmcgbmFtZT0iSkFSX0VOQUJMRUQiIHZhbHVlPSJmYWxzZSIgLz4KKyAgICAgICAgICA8c2V0dGluZyBuYW1lPSJTWU5DX0VYUExPREVEX0RJUiIgdmFsdWU9InRydWUiIC8+CisgICAgICAgICAgPHNldHRpbmcgbmFtZT0iQlVJTERfT05fRlJBTUVfREVBQ1RJVkFUSU9OIiB2YWx1ZT0iZmFsc2UiIC8+CisgICAgICAgICAgPHNldHRpbmcgbmFtZT0iUlVOX0pBU1BFUl9WQUxJREFUSU9OIiB2YWx1ZT0idHJ1ZSIgLz4KKyAgICAgICAgPC9idWlsZGluZz4KKyAgICAgIDwvY29uZmlndXJhdGlvbj4KKyAgICA8L2ZhY2V0PgorICA8L2NvbXBvbmVudD4KKzwvbW9kdWxlPgorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9qYXNwZXJWYWxpZGF0aW9uL2pzcERlcGVuZGVudC9yb290L2EuanNwIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvamFzcGVyVmFsaWRhdGlvbi9qc3BEZXBlbmRlbnQvcm9vdC9hLmpzcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZWFiMDY3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvamFzcGVyVmFsaWRhdGlvbi9qc3BEZXBlbmRlbnQvcm9vdC9hLmpzcApAQCAtMCwwICsxLDE0IEBACis8JS0tCisgIENyZWF0ZWQgYnkgSW50ZWxsaUogSURFQS4KKyAgVXNlcjogY2RyCisgIERhdGU6IFNlcCAxNywgMjAwNAorICBUaW1lOiAyOjUzOjU4IFBNCisgIFRvIGNoYW5nZSB0aGlzIHRlbXBsYXRlIHVzZSBGaWxlIHwgU2V0dGluZ3MgfCBGaWxlIFRlbXBsYXRlcy4KKy0tJT4KKzwlQCBwYWdlIGNvbnRlbnRUeXBlPSJ0ZXh0L2h0bWw7Y2hhcnNldD1VVEYtOCIgbGFuZ3VhZ2U9ImphdmEiICU+Cis8JUBpbmNsdWRlIGZpbGU9ImRlcC5qc3AiICU+Cis8JUBpbmNsdWRlIGZpbGU9ImRlcDIuanNwIiAlPgorPGh0bWw+CisgIDxoZWFkPjx0aXRsZT5TaW1wbGUganNwIHBhZ2U8L3RpdGxlPjwvaGVhZD4KKyAgPGJvZHk+UGxhY2UgeW91ciBjb250ZW50IGhlcmU8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvamFzcGVyVmFsaWRhdGlvbi9qc3BEZXBlbmRlbnQvcm9vdC9kZXAuanNwIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvamFzcGVyVmFsaWRhdGlvbi9qc3BEZXBlbmRlbnQvcm9vdC9kZXAuanNwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY5ZWMyM2QKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9qYXNwZXJWYWxpZGF0aW9uL2pzcERlcGVuZGVudC9yb290L2RlcC5qc3AKQEAgLTAsMCArMSBAQAorZGRkClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvamFzcGVyVmFsaWRhdGlvbi9qc3BEZXBlbmRlbnQvcm9vdC9kZXAuanNwLm5ldyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2phc3BlclZhbGlkYXRpb24vanNwRGVwZW5kZW50L3Jvb3QvZGVwLmpzcC5uZXcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjU1NDYwMgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2phc3BlclZhbGlkYXRpb24vanNwRGVwZW5kZW50L3Jvb3QvZGVwLmpzcC5uZXcKQEAgLTAsMCArMSBAQAorZGRkIFgKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9qYXNwZXJWYWxpZGF0aW9uL2pzcERlcGVuZGVudC9yb290L2RlcDIuanNwIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvamFzcGVyVmFsaWRhdGlvbi9qc3BEZXBlbmRlbnQvcm9vdC9kZXAyLmpzcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42OWVjMjNkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvamFzcGVyVmFsaWRhdGlvbi9qc3BEZXBlbmRlbnQvcm9vdC9kZXAyLmpzcApAQCAtMCwwICsxIEBACitkZGQKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9qYXNwZXJWYWxpZGF0aW9uL2pzcERlcGVuZGVudC9yb290L2Rpci94eHguanNwIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvamFzcGVyVmFsaWRhdGlvbi9qc3BEZXBlbmRlbnQvcm9vdC9kaXIveHh4LmpzcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMGE0YTBiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvamFzcGVyVmFsaWRhdGlvbi9qc3BEZXBlbmRlbnQvcm9vdC9kaXIveHh4LmpzcApAQCAtMCwwICsxLDMgQEAKKzwlCisgICAgaW50IGEgPSAwOworJT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9qYXNwZXJWYWxpZGF0aW9uL2pzcERlcGVuZGVudC9zb3VyY2UvYS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvamFzcGVyVmFsaWRhdGlvbi9qc3BEZXBlbmRlbnQvc291cmNlL2EuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NTJmNTRmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvamFzcGVyVmFsaWRhdGlvbi9qc3BEZXBlbmRlbnQvc291cmNlL2EuamF2YQpAQCAtMCwwICsxIEBACitjbGFzcyBhe30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9qYXNwZXJWYWxpZGF0aW9uL3Njb3BlL2RhdGEueG1sIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvamFzcGVyVmFsaWRhdGlvbi9zY29wZS9kYXRhLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNzdmOWMxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvamFzcGVyVmFsaWRhdGlvbi9zY29wZS9kYXRhLnhtbApAQCAtMCwwICsxLDExIEBACis8dGVzdERhdGE+CisgIDxkZWxldGU+CisgIDwvZGVsZXRlPgorCisgIDxkZWxldGVkX2J5X21ha2U+CisgIDwvZGVsZXRlZF9ieV9tYWtlPgorCisgIDxyZWNvbXBpbGU+CisgICAgPGZpbGUgcGF0aD0icm9vdC9hLmpzcCIgLz4KKyAgPC9yZWNvbXBpbGU+Cis8L3Rlc3REYXRhPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2phc3BlclZhbGlkYXRpb24vc2NvcGUvZXhwbG9kZWQvV0VCLUlORi93ZWIueG1sIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvamFzcGVyVmFsaWRhdGlvbi9zY29wZS9leHBsb2RlZC9XRUItSU5GL3dlYi54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2FmYzk5NgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2phc3BlclZhbGlkYXRpb24vc2NvcGUvZXhwbG9kZWQvV0VCLUlORi93ZWIueG1sCkBAIC0wLDAgKzEsNSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKworPCFET0NUWVBFIHdlYi1hcHAgUFVCTElDICItLy9TdW4gTWljcm9zeXN0ZW1zLCBJbmMuLy9EVEQgV2ViIEFwcGxpY2F0aW9uIDIuMy8vRU4iICJodHRwOi8vamF2YS5zdW4uY29tL2R0ZC93ZWItYXBwXzJfMy5kdGQiPgorPHdlYi1hcHA+Cis8L3dlYi1hcHA+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvamFzcGVyVmFsaWRhdGlvbi9zY29wZS9leHBsb2RlZC9hLmpzcCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2phc3BlclZhbGlkYXRpb24vc2NvcGUvZXhwbG9kZWQvYS5qc3AKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGVhYjA2NwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2phc3BlclZhbGlkYXRpb24vc2NvcGUvZXhwbG9kZWQvYS5qc3AKQEAgLTAsMCArMSwxNCBAQAorPCUtLQorICBDcmVhdGVkIGJ5IEludGVsbGlKIElERUEuCisgIFVzZXI6IGNkcgorICBEYXRlOiBTZXAgMTcsIDIwMDQKKyAgVGltZTogMjo1Mzo1OCBQTQorICBUbyBjaGFuZ2UgdGhpcyB0ZW1wbGF0ZSB1c2UgRmlsZSB8IFNldHRpbmdzIHwgRmlsZSBUZW1wbGF0ZXMuCistLSU+Cis8JUAgcGFnZSBjb250ZW50VHlwZT0idGV4dC9odG1sO2NoYXJzZXQ9VVRGLTgiIGxhbmd1YWdlPSJqYXZhIiAlPgorPCVAaW5jbHVkZSBmaWxlPSJkZXAuanNwIiAlPgorPCVAaW5jbHVkZSBmaWxlPSJkZXAyLmpzcCIgJT4KKzxodG1sPgorICA8aGVhZD48dGl0bGU+U2ltcGxlIGpzcCBwYWdlPC90aXRsZT48L2hlYWQ+CisgIDxib2R5PlBsYWNlIHlvdXIgY29udGVudCBoZXJlPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2phc3BlclZhbGlkYXRpb24vc2NvcGUvZXhwbG9kZWQvZGVwLmpzcCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2phc3BlclZhbGlkYXRpb24vc2NvcGUvZXhwbG9kZWQvZGVwLmpzcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42OWVjMjNkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvamFzcGVyVmFsaWRhdGlvbi9zY29wZS9leHBsb2RlZC9kZXAuanNwCkBAIC0wLDAgKzEgQEAKK2RkZApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2phc3BlclZhbGlkYXRpb24vc2NvcGUvZXhwbG9kZWQvZGVwMi5qc3AgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9qYXNwZXJWYWxpZGF0aW9uL3Njb3BlL2V4cGxvZGVkL2RlcDIuanNwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY5ZWMyM2QKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9qYXNwZXJWYWxpZGF0aW9uL3Njb3BlL2V4cGxvZGVkL2RlcDIuanNwCkBAIC0wLDAgKzEgQEAKK2RkZApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2phc3BlclZhbGlkYXRpb24vc2NvcGUvZXhwbG9kZWQvZGlyL3h4eC5qc3AgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9qYXNwZXJWYWxpZGF0aW9uL3Njb3BlL2V4cGxvZGVkL2Rpci94eHguanNwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQwYTRhMGIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9qYXNwZXJWYWxpZGF0aW9uL3Njb3BlL2V4cGxvZGVkL2Rpci94eHguanNwCkBAIC0wLDAgKzEsMyBAQAorPCUKKyAgICBpbnQgYSA9IDA7CislPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2phc3BlclZhbGlkYXRpb24vc2NvcGUvbW9kdWxlLmltbCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2phc3BlclZhbGlkYXRpb24vc2NvcGUvbW9kdWxlLmltbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMWNjOWEzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvamFzcGVyVmFsaWRhdGlvbi9zY29wZS9tb2R1bGUuaW1sCkBAIC0wLDAgKzEsMjYgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8bW9kdWxlIHZlcnNpb249IjQiIHJlbGF0aXZlUGF0aHM9InRydWUiIHR5cGU9IkpBVkFfTU9EVUxFIj4KKyAgPGNvbXBvbmVudCBuYW1lPSJNb2R1bGVSb290TWFuYWdlciIgLz4KKyAgPGNvbXBvbmVudCBuYW1lPSJOZXdNb2R1bGVSb290TWFuYWdlciI+CisgICAgPG91dHB1dCB1cmw9ImZpbGU6Ly8kTU9EVUxFX0RJUiQvY2xhc3NlcyIgLz4KKyAgICA8ZXhjbHVkZS1vdXRwdXQgLz4KKyAgICA8ZXhwbG9kZWQgdXJsPSJmaWxlOi8vJE1PRFVMRV9ESVIkL2V4cGxvZGVkIiAvPgorICAgIDxleGNsdWRlLWV4cGxvZGVkIC8+CisgICAgPGNvbnRlbnQgdXJsPSJmaWxlOi8vJE1PRFVMRV9ESVIkIiAvPgorICAgIDxvcmRlckVudHJ5IHR5cGU9ImluaGVyaXRlZEpkayIgLz4KKyAgICA8b3JkZXJFbnRyeSB0eXBlPSJzb3VyY2VGb2xkZXIiIGZvclRlc3RzPSJmYWxzZSIgLz4KKyAgPC9jb21wb25lbnQ+CisgIDxjb21wb25lbnQgbmFtZT0iRmFjZXRNYW5hZ2VyIj4KKyAgICA8ZmFjZXQgdHlwZT0id2ViIiBuYW1lPSJtb2R1bGUiPgorICAgICAgPGNvbmZpZ3VyYXRpb24+CisgICAgICAgIDx3ZWJyb290cz4KKyAgICAgICAgICA8cm9vdCB1cmw9ImZpbGU6Ly8kTU9EVUxFX0RJUiQvcm9vdCIgcmVsYXRpdmU9Ii8iIC8+CisgICAgICAgIDwvd2Vicm9vdHM+CisgICAgICAgIDxkZXNjcmlwdG9ycz4KKyAgICAgICAgICA8ZGVwbG95bWVudERlc2NyaXB0b3IgbmFtZT0id2ViLnhtbCIgdXJsPSJmaWxlOi8vJE1PRFVMRV9ESVIkL1dFQi1JTkYvd2ViLnhtbCIgdmVyc2lvbj0iMi4zIiAvPgorICAgICAgICA8L2Rlc2NyaXB0b3JzPgorICAgICAgPC9jb25maWd1cmF0aW9uPgorICAgIDwvZmFjZXQ+CisgIDwvY29tcG9uZW50PgorPC9tb2R1bGU+CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2phc3BlclZhbGlkYXRpb24vc2NvcGUvcm9vdC9hLmpzcCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2phc3BlclZhbGlkYXRpb24vc2NvcGUvcm9vdC9hLmpzcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZWFiMDY3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvamFzcGVyVmFsaWRhdGlvbi9zY29wZS9yb290L2EuanNwCkBAIC0wLDAgKzEsMTQgQEAKKzwlLS0KKyAgQ3JlYXRlZCBieSBJbnRlbGxpSiBJREVBLgorICBVc2VyOiBjZHIKKyAgRGF0ZTogU2VwIDE3LCAyMDA0CisgIFRpbWU6IDI6NTM6NTggUE0KKyAgVG8gY2hhbmdlIHRoaXMgdGVtcGxhdGUgdXNlIEZpbGUgfCBTZXR0aW5ncyB8IEZpbGUgVGVtcGxhdGVzLgorLS0lPgorPCVAIHBhZ2UgY29udGVudFR5cGU9InRleHQvaHRtbDtjaGFyc2V0PVVURi04IiBsYW5ndWFnZT0iamF2YSIgJT4KKzwlQGluY2x1ZGUgZmlsZT0iZGVwLmpzcCIgJT4KKzwlQGluY2x1ZGUgZmlsZT0iZGVwMi5qc3AiICU+Cis8aHRtbD4KKyAgPGhlYWQ+PHRpdGxlPlNpbXBsZSBqc3AgcGFnZTwvdGl0bGU+PC9oZWFkPgorICA8Ym9keT5QbGFjZSB5b3VyIGNvbnRlbnQgaGVyZTwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9qYXNwZXJWYWxpZGF0aW9uL3Njb3BlL3Jvb3QvYi5qc3AgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9qYXNwZXJWYWxpZGF0aW9uL3Njb3BlL3Jvb3QvYi5qc3AKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTY5ZGUyOQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2phc3BlclZhbGlkYXRpb24vc2NvcGUvcm9vdC9iLmpzcApkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvamFzcGVyVmFsaWRhdGlvbi9zY29wZS9yb290L2RlcC5qc3AgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9qYXNwZXJWYWxpZGF0aW9uL3Njb3BlL3Jvb3QvZGVwLmpzcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42OWVjMjNkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvamFzcGVyVmFsaWRhdGlvbi9zY29wZS9yb290L2RlcC5qc3AKQEAgLTAsMCArMSBAQAorZGRkClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvamFzcGVyVmFsaWRhdGlvbi9zY29wZS9yb290L2RlcC5qc3AubmV3IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvamFzcGVyVmFsaWRhdGlvbi9zY29wZS9yb290L2RlcC5qc3AubmV3Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI1NTQ2MDIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9qYXNwZXJWYWxpZGF0aW9uL3Njb3BlL3Jvb3QvZGVwLmpzcC5uZXcKQEAgLTAsMCArMSBAQAorZGRkIFgKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9qYXNwZXJWYWxpZGF0aW9uL3Njb3BlL3Jvb3QvZGVwMi5qc3AgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9qYXNwZXJWYWxpZGF0aW9uL3Njb3BlL3Jvb3QvZGVwMi5qc3AKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjllYzIzZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL2phc3BlclZhbGlkYXRpb24vc2NvcGUvcm9vdC9kZXAyLmpzcApAQCAtMCwwICsxIEBACitkZGQKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tYXJrRGlydHkvcmVjb21waWxlRGVwZW5kZW50LmxvZyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21hcmtEaXJ0eS9yZWNvbXBpbGVEZXBlbmRlbnQubG9nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE1OTk4ZWEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tYXJrRGlydHkvcmVjb21waWxlRGVwZW5kZW50LmxvZwpAQCAtMCwwICsxLDE0IEBACitDbGVhbmluZyBvdXRwdXQgZmlsZXM6CitvdXQvcHJvZHVjdGlvbi9SZWNvbXBpbGVEZXBlbmRlbnQvU2VydmVyLmNsYXNzCitFbmQgb2YgZmlsZXMKK0NvbXBpbGluZyBmaWxlczoKK3NyYy9TZXJ2ZXIuamF2YQorRW5kIG9mIGZpbGVzCitDbGVhbmluZyBvdXRwdXQgZmlsZXM6CitvdXQvcHJvZHVjdGlvbi9SZWNvbXBpbGVEZXBlbmRlbnQvQ2xpZW50LmNsYXNzCitvdXQvcHJvZHVjdGlvbi9SZWNvbXBpbGVEZXBlbmRlbnQvU2VydmVyLmNsYXNzCitFbmQgb2YgZmlsZXMKK0NvbXBpbGluZyBmaWxlczoKK3NyYy9DbGllbnQuamF2YQorc3JjL1NlcnZlci5qYXZhCitFbmQgb2YgZmlsZXMKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21hcmtEaXJ0eS9yZWNvbXBpbGVEZXBlbmRlbnQvU2VydmVyLmphdmEubmV3IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWFya0RpcnR5L3JlY29tcGlsZURlcGVuZGVudC9TZXJ2ZXIuamF2YS5uZXcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjFlZGRjNgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21hcmtEaXJ0eS9yZWNvbXBpbGVEZXBlbmRlbnQvU2VydmVyLmphdmEubmV3CkBAIC0wLDAgKzEsMyBAQAorcHVibGljIGNsYXNzIFNlcnZlcnsKKyAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgQ09OU1RBTlQgPSAyMDA7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWFya0RpcnR5L3JlY29tcGlsZURlcGVuZGVudC9zcmMvQ2xpZW50LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tYXJrRGlydHkvcmVjb21waWxlRGVwZW5kZW50L3NyYy9DbGllbnQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZGRiNzVjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWFya0RpcnR5L3JlY29tcGlsZURlcGVuZGVudC9zcmMvQ2xpZW50LmphdmEKQEAgLTAsMCArMSw1IEBACitjbGFzcyBDbGllbnQgeworICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CisgICAgU3lzdGVtLm91dC5wcmludGxuKFNlcnZlci5DT05TVEFOVCk7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tYXJrRGlydHkvcmVjb21waWxlRGVwZW5kZW50L3NyYy9TZXJ2ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21hcmtEaXJ0eS9yZWNvbXBpbGVEZXBlbmRlbnQvc3JjL1NlcnZlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY4MWYwYTYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tYXJrRGlydHkvcmVjb21waWxlRGVwZW5kZW50L3NyYy9TZXJ2ZXIuamF2YQpAQCAtMCwwICsxLDMgQEAKK3B1YmxpYyBjbGFzcyBTZXJ2ZXJ7CisgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IENPTlNUQU5UID0gMTAwOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21hcmtEaXJ0eS9yZWNvbXBpbGVEZXBlbmRlbnRUZXN0cy5sb2cgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tYXJrRGlydHkvcmVjb21waWxlRGVwZW5kZW50VGVzdHMubG9nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY1NDZiMGEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tYXJrRGlydHkvcmVjb21waWxlRGVwZW5kZW50VGVzdHMubG9nCkBAIC0wLDAgKzEsMjAgQEAKK0NsZWFuaW5nIG91dHB1dCBmaWxlczoKK291dC9wcm9kdWN0aW9uL1JlY29tcGlsZURlcGVuZGVudFRlc3RzL1NlcnZlci5jbGFzcworRW5kIG9mIGZpbGVzCitDb21waWxpbmcgZmlsZXM6CitzcmMvU2VydmVyLmphdmEKK0VuZCBvZiBmaWxlcworQ2xlYW5pbmcgb3V0cHV0IGZpbGVzOgorb3V0L3Byb2R1Y3Rpb24vUmVjb21waWxlRGVwZW5kZW50VGVzdHMvQ2xpZW50LmNsYXNzCitvdXQvcHJvZHVjdGlvbi9SZWNvbXBpbGVEZXBlbmRlbnRUZXN0cy9TZXJ2ZXIuY2xhc3MKK0VuZCBvZiBmaWxlcworQ29tcGlsaW5nIGZpbGVzOgorc3JjL0NsaWVudC5qYXZhCitzcmMvU2VydmVyLmphdmEKK0VuZCBvZiBmaWxlcworQ2xlYW5pbmcgb3V0cHV0IGZpbGVzOgorb3V0L3Rlc3QvUmVjb21waWxlRGVwZW5kZW50VGVzdHMvVGVzdENsaWVudC5jbGFzcworRW5kIG9mIGZpbGVzCitDb21waWxpbmcgZmlsZXM6Cit0ZXN0U3JjL1Rlc3RDbGllbnQuamF2YQorRW5kIG9mIGZpbGVzCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tYXJrRGlydHkvcmVjb21waWxlRGVwZW5kZW50VGVzdHMvU2VydmVyLmphdmEubmV3IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWFya0RpcnR5L3JlY29tcGlsZURlcGVuZGVudFRlc3RzL1NlcnZlci5qYXZhLm5ldwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMWVkZGM2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWFya0RpcnR5L3JlY29tcGlsZURlcGVuZGVudFRlc3RzL1NlcnZlci5qYXZhLm5ldwpAQCAtMCwwICsxLDMgQEAKK3B1YmxpYyBjbGFzcyBTZXJ2ZXJ7CisgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IENPTlNUQU5UID0gMjAwOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21hcmtEaXJ0eS9yZWNvbXBpbGVEZXBlbmRlbnRUZXN0cy9saWIvYS5qYXIgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tYXJrRGlydHkvcmVjb21waWxlRGVwZW5kZW50VGVzdHMvbGliL2EuamFyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU3NzY5MGQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tYXJrRGlydHkvcmVjb21waWxlRGVwZW5kZW50VGVzdHMvbGliL2EuamFyCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21hcmtEaXJ0eS9yZWNvbXBpbGVEZXBlbmRlbnRUZXN0cy9zcmMvQ2xpZW50LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tYXJrRGlydHkvcmVjb21waWxlRGVwZW5kZW50VGVzdHMvc3JjL0NsaWVudC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRkMmY2ZDgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tYXJrRGlydHkvcmVjb21waWxlRGVwZW5kZW50VGVzdHMvc3JjL0NsaWVudC5qYXZhCkBAIC0wLDAgKzEsMjAgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwMC0yMDEyIEpldEJyYWlucyBzLnIuby4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitjbGFzcyBDbGllbnQgeworICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CisgICAgU3lzdGVtLm91dC5wcmludGxuKFNlcnZlci5DT05TVEFOVCk7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tYXJrRGlydHkvcmVjb21waWxlRGVwZW5kZW50VGVzdHMvc3JjL1NlcnZlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWFya0RpcnR5L3JlY29tcGlsZURlcGVuZGVudFRlc3RzL3NyYy9TZXJ2ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZmFhYjI2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWFya0RpcnR5L3JlY29tcGlsZURlcGVuZGVudFRlc3RzL3NyYy9TZXJ2ZXIuamF2YQpAQCAtMCwwICsxLDE4IEBACisvKgorICogQ29weXJpZ2h0IDIwMDAtMjAxMiBKZXRCcmFpbnMgcy5yLm8uCisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcHVibGljIGNsYXNzIFNlcnZlcnsKKyAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgQ09OU1RBTlQgPSAxMDA7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWFya0RpcnR5L3JlY29tcGlsZURlcGVuZGVudFRlc3RzL3Rlc3RTcmMvVGVzdENsaWVudC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWFya0RpcnR5L3JlY29tcGlsZURlcGVuZGVudFRlc3RzL3Rlc3RTcmMvVGVzdENsaWVudC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFlMWQ1M2MKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tYXJrRGlydHkvcmVjb21waWxlRGVwZW5kZW50VGVzdHMvdGVzdFNyYy9UZXN0Q2xpZW50LmphdmEKQEAgLTAsMCArMSwyMCBAQAorLyoKKyAqIENvcHlyaWdodCAyMDAwLTIwMTIgSmV0QnJhaW5zIHMuci5vLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK2NsYXNzIFRlc3RDbGllbnQgeworICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CisgICAgU3lzdGVtLm91dC5wcmludGxuKFNlcnZlci5DT05TVEFOVCArIG5ldyBjb20uTXlDbGFzcygpLmdldCgpKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21hcmtEaXJ0eS90cmFuc2l0aXZlUmVjb21waWxlL2J1aWxkLmxvZyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21hcmtEaXJ0eS90cmFuc2l0aXZlUmVjb21waWxlL2J1aWxkLmxvZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YTViMGYzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWFya0RpcnR5L3RyYW5zaXRpdmVSZWNvbXBpbGUvYnVpbGQubG9nCkBAIC0wLDAgKzEsMzYgQEAKK0NsZWFuaW5nIG91dHB1dCBmaWxlczoKK291dC9wcm9kdWN0aW9uL2xpYi95L0xpYi5jbGFzcworRW5kIG9mIGZpbGVzCitDb21waWxpbmcgZmlsZXM6CitsaWIvc3JjL3kvTGliLmphdmEKK0VuZCBvZiBmaWxlcworQ2xlYW5pbmcgb3V0cHV0IGZpbGVzOgorb3V0L3Byb2R1Y3Rpb24vbGliL3kvTGliLmNsYXNzCitFbmQgb2YgZmlsZXMKK0NvbXBpbGluZyBmaWxlczoKK2xpYi9zcmMveS9MaWIuamF2YQorRW5kIG9mIGZpbGVzCitDbGVhbmluZyBvdXRwdXQgZmlsZXM6CitvdXQvdGVzdC9saWIvTGliVGVzdC5jbGFzcworRW5kIG9mIGZpbGVzCitDb21waWxpbmcgZmlsZXM6CitsaWIvdGVzdFNyYy9MaWJUZXN0LmphdmEKK0VuZCBvZiBmaWxlcworQ2xlYW5pbmcgb3V0cHV0IGZpbGVzOgorb3V0L3Byb2R1Y3Rpb24vdXRpbC94L1V0aWwuY2xhc3MKK0VuZCBvZiBmaWxlcworQ29tcGlsaW5nIGZpbGVzOgordXRpbC9zcmMveC9VdGlsLmphdmEKK0VuZCBvZiBmaWxlcworQ2xlYW5pbmcgb3V0cHV0IGZpbGVzOgorb3V0L3Rlc3QvdXRpbC9VdGlsVGVzdC5jbGFzcworRW5kIG9mIGZpbGVzCitDb21waWxpbmcgZmlsZXM6Cit1dGlsL3Rlc3RTcmMvVXRpbFRlc3QuamF2YQorRW5kIG9mIGZpbGVzCitDbGVhbmluZyBvdXRwdXQgZmlsZXM6CitvdXQvcHJvZHVjdGlvbi9UcmFuc2l0aXZlUmVjb21waWxlL0EuY2xhc3MKK0VuZCBvZiBmaWxlcworQ29tcGlsaW5nIGZpbGVzOgorc3JjL0EuamF2YQorRW5kIG9mIGZpbGVzCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tYXJrRGlydHkvdHJhbnNpdGl2ZVJlY29tcGlsZS9saWIvc3JjL3kvTGliLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tYXJrRGlydHkvdHJhbnNpdGl2ZVJlY29tcGlsZS9saWIvc3JjL3kvTGliLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODRhZjc0NQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21hcmtEaXJ0eS90cmFuc2l0aXZlUmVjb21waWxlL2xpYi9zcmMveS9MaWIuamF2YQpAQCAtMCwwICsxLDggQEAKK3BhY2thZ2UgeTsKKworcHVibGljIGNsYXNzIExpYiB7CisgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IENPTlNUID0gMjM5OworCisgIHB1YmxpYyBzdGF0aWMgdm9pZCBsaWJNZXRob2QoKSB7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tYXJrRGlydHkvdHJhbnNpdGl2ZVJlY29tcGlsZS9saWIvc3JjL3kvTGliLmphdmEubmV3IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWFya0RpcnR5L3RyYW5zaXRpdmVSZWNvbXBpbGUvbGliL3NyYy95L0xpYi5qYXZhLm5ldwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZjEwZWM1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWFya0RpcnR5L3RyYW5zaXRpdmVSZWNvbXBpbGUvbGliL3NyYy95L0xpYi5qYXZhLm5ldwpAQCAtMCwwICsxLDggQEAKK3BhY2thZ2UgeTsKKworcHVibGljIGNsYXNzIExpYiB7CisgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IENPTlNUID0gMjQxOworCisgIHB1YmxpYyBzdGF0aWMgdm9pZCBsaWJNZXRob2QoKSB7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tYXJrRGlydHkvdHJhbnNpdGl2ZVJlY29tcGlsZS9saWIvdGVzdFNyYy9MaWJUZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tYXJrRGlydHkvdHJhbnNpdGl2ZVJlY29tcGlsZS9saWIvdGVzdFNyYy9MaWJUZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2Y3Y2QxNwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21hcmtEaXJ0eS90cmFuc2l0aXZlUmVjb21waWxlL2xpYi90ZXN0U3JjL0xpYlRlc3QuamF2YQpAQCAtMCwwICsxIEBACitjbGFzcyBMaWJUZXN0IHsgfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21hcmtEaXJ0eS90cmFuc2l0aXZlUmVjb21waWxlL3NyYy9BLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tYXJrRGlydHkvdHJhbnNpdGl2ZVJlY29tcGlsZS9zcmMvQS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQzM2ViZDQxZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21hcmtEaXJ0eS90cmFuc2l0aXZlUmVjb21waWxlL3NyYy9BLmphdmEKQEAgLTAsMCArMSw3IEBACitpbXBvcnQgeC5VdGlsOworCitwdWJsaWMgY2xhc3MgQSB7CisgIEEoKSB7CisgICAgVXRpbC51dGlsTWV0aG9kKCk7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tYXJrRGlydHkvdHJhbnNpdGl2ZVJlY29tcGlsZS90ZXN0U3JjL015VGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWFya0RpcnR5L3RyYW5zaXRpdmVSZWNvbXBpbGUvdGVzdFNyYy9NeVRlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZTJhMTUyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWFya0RpcnR5L3RyYW5zaXRpdmVSZWNvbXBpbGUvdGVzdFNyYy9NeVRlc3QuamF2YQpAQCAtMCwwICsxIEBACitjbGFzcyBNeVRlc3Qge30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tYXJrRGlydHkvdHJhbnNpdGl2ZVJlY29tcGlsZS91dGlsL3NyYy94L1V0aWwuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21hcmtEaXJ0eS90cmFuc2l0aXZlUmVjb21waWxlL3V0aWwvc3JjL3gvVXRpbC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUxMjZkYjkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tYXJrRGlydHkvdHJhbnNpdGl2ZVJlY29tcGlsZS91dGlsL3NyYy94L1V0aWwuamF2YQpAQCAtMCwwICsxLDkgQEAKK3BhY2thZ2UgeDsKKworaW1wb3J0IHkuTGliOworCitwdWJsaWMgY2xhc3MgVXRpbCB7CisgIHB1YmxpYyBzdGF0aWMgdm9pZCB1dGlsTWV0aG9kKCkgeworICAgIExpYi5saWJNZXRob2QoKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21hcmtEaXJ0eS90cmFuc2l0aXZlUmVjb21waWxlL3V0aWwvc3JjL3gvVXRpbC5qYXZhLm5ldyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21hcmtEaXJ0eS90cmFuc2l0aXZlUmVjb21waWxlL3V0aWwvc3JjL3gvVXRpbC5qYXZhLm5ldwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45YzA4MWU4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWFya0RpcnR5L3RyYW5zaXRpdmVSZWNvbXBpbGUvdXRpbC9zcmMveC9VdGlsLmphdmEubmV3CkBAIC0wLDAgKzEsMTAgQEAKK3BhY2thZ2UgeDsKKworaW1wb3J0IHkuTGliOworCitwdWJsaWMgY2xhc3MgVXRpbCB7CisgIHB1YmxpYyBzdGF0aWMgaW50IHV0aWxNZXRob2QoKSB7CisgICAgTGliLmxpYk1ldGhvZCgpOworICAgIHJldHVybiAwOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWFya0RpcnR5L3RyYW5zaXRpdmVSZWNvbXBpbGUvdXRpbC90ZXN0U3JjL1V0aWxUZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tYXJrRGlydHkvdHJhbnNpdGl2ZVJlY29tcGlsZS91dGlsL3Rlc3RTcmMvVXRpbFRlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NzhiY2Y1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWFya0RpcnR5L3RyYW5zaXRpdmVSZWNvbXBpbGUvdXRpbC90ZXN0U3JjL1V0aWxUZXN0LmphdmEKQEAgLTAsMCArMSBAQAorcHVibGljIGNsYXNzIFV0aWxUZXN0IHt9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9hZGRBYnN0cmFjdE1ldGhvZC5sb2cgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2FkZEFic3RyYWN0TWV0aG9kLmxvZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wOTg5ZjMwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9hZGRBYnN0cmFjdE1ldGhvZC5sb2cKQEAgLTAsMCArMSwxMiBAQAorQ2xlYW5pbmcgb3V0cHV0IGZpbGVzOgorb3V0L3Byb2R1Y3Rpb24vQWRkQWJzdHJhY3RNZXRob2QvcGFja2FnZUEvQmFzZVNlcnZlci5jbGFzcworRW5kIG9mIGZpbGVzCitDb21waWxpbmcgZmlsZXM6CitzcmMvcGFja2FnZUEvQmFzZVNlcnZlci5qYXZhCitFbmQgb2YgZmlsZXMKK0NsZWFuaW5nIG91dHB1dCBmaWxlczoKK291dC9wcm9kdWN0aW9uL0FkZEFic3RyYWN0TWV0aG9kL3BhY2thZ2VBL1NlcnZlci5jbGFzcworRW5kIG9mIGZpbGVzCitDb21waWxpbmcgZmlsZXM6CitzcmMvcGFja2FnZUEvU2VydmVyLmphdmEKK0VuZCBvZiBmaWxlcwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9hZGRBYnN0cmFjdE1ldGhvZC9kYXRhLnhtbCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvYWRkQWJzdHJhY3RNZXRob2QvZGF0YS54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTdkMjY3OQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvYWRkQWJzdHJhY3RNZXRob2QvZGF0YS54bWwKQEAgLTAsMCArMSwxNSBAQAorPHRlc3REYXRhPgorCisgIDxkZWxldGU+CisgIDwvZGVsZXRlPgorCisgIDxkZWxldGVkX2J5X21ha2U+CisgICAgPGZpbGUgcGF0aD0iY2xhc3Nlcy9wYWNrYWdlQS9CYXNlU2VydmVyLmNsYXNzIiAvPgorICAgIDxmaWxlIHBhdGg9ImNsYXNzZXMvcGFja2FnZUEvU2VydmVyLmNsYXNzIiAvPgorICA8L2RlbGV0ZWRfYnlfbWFrZT4KKworICA8cmVjb21waWxlPgorICAgIDxmaWxlIHBhdGg9InNvdXJjZS9wYWNrYWdlQS9TZXJ2ZXIuamF2YSIgLz4KKyAgPC9yZWNvbXBpbGU+CisKKzwvdGVzdERhdGE+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9hZGRBYnN0cmFjdE1ldGhvZC9zcmMvcGFja2FnZUEvQmFzZVNlcnZlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9hZGRBYnN0cmFjdE1ldGhvZC9zcmMvcGFja2FnZUEvQmFzZVNlcnZlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ4MzgwNjMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2FkZEFic3RyYWN0TWV0aG9kL3NyYy9wYWNrYWdlQS9CYXNlU2VydmVyLmphdmEKQEAgLTAsMCArMSwxMSBAQAorLyoqCisgKiBjcmVhdGVkIGF0IEphbiAyMiwgMjAwMgorICogQGF1dGhvciBKZWthCisgKi8KK3BhY2thZ2UgcGFja2FnZUE7CisKK3B1YmxpYyBjbGFzcyBCYXNlU2VydmVyIHsKKyAgcHVibGljIHZvaWQgbWV0aG9kKCkgeworICAgIFN5c3RlbS5vdXQucHJpbnRsbigiQmFzZVNlcnZlci5tZXRob2QiKTsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9hZGRBYnN0cmFjdE1ldGhvZC9zcmMvcGFja2FnZUEvQmFzZVNlcnZlci5qYXZhLm5ldyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvYWRkQWJzdHJhY3RNZXRob2Qvc3JjL3BhY2thZ2VBL0Jhc2VTZXJ2ZXIuamF2YS5uZXcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTBlMmRiMAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvYWRkQWJzdHJhY3RNZXRob2Qvc3JjL3BhY2thZ2VBL0Jhc2VTZXJ2ZXIuamF2YS5uZXcKQEAgLTAsMCArMSwxMiBAQAorLyoqCisgKiBjcmVhdGVkIGF0IEphbiAyMiwgMjAwMgorICogQGF1dGhvciBKZWthCisgKi8KK3BhY2thZ2UgcGFja2FnZUE7CisKK3B1YmxpYyBhYnN0cmFjdCBjbGFzcyBCYXNlU2VydmVyIHsKKyAgcHVibGljIHZvaWQgbWV0aG9kKCkgeworICAgIFN5c3RlbS5vdXQucHJpbnRsbigiQmFzZVNlcnZlci5tZXRob2QiKTsKKyAgfQorICBwdWJsaWMgYWJzdHJhY3Qgdm9pZCBhYnN0cmFjdE1ldGhvZCgpOworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9hZGRBYnN0cmFjdE1ldGhvZC9zcmMvcGFja2FnZUEvQ2xpZW50LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2FkZEFic3RyYWN0TWV0aG9kL3NyYy9wYWNrYWdlQS9DbGllbnQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZWY1NDJmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9hZGRBYnN0cmFjdE1ldGhvZC9zcmMvcGFja2FnZUEvQ2xpZW50LmphdmEKQEAgLTAsMCArMSwxMiBAQAorLyoqCisgKiBjcmVhdGVkIGF0IEphbiAyMiwgMjAwMgorICogQGF1dGhvciBKZWthCisgKi8KK3BhY2thZ2UgcGFja2FnZUE7CisKK3B1YmxpYyBjbGFzcyBDbGllbnQgeworICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CisgICAgU2VydmVyIHNlcnZlciA9IG5ldyBTZXJ2ZXIoKTsKKyAgICBzZXJ2ZXIubWV0aG9kKCk7CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvYWRkQWJzdHJhY3RNZXRob2Qvc3JjL3BhY2thZ2VBL1NlcnZlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9hZGRBYnN0cmFjdE1ldGhvZC9zcmMvcGFja2FnZUEvU2VydmVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWJlMDY2MQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvYWRkQWJzdHJhY3RNZXRob2Qvc3JjL3BhY2thZ2VBL1NlcnZlci5qYXZhCkBAIC0wLDAgKzEsMTEgQEAKKy8qKgorICogY3JlYXRlZCBhdCBKYW4gMjIsIDIwMDIKKyAqIEBhdXRob3IgSmVrYQorICovCitwYWNrYWdlIHBhY2thZ2VBOworCitwdWJsaWMgY2xhc3MgU2VydmVyIGV4dGVuZHMgQmFzZVNlcnZlciB7CisgIHB1YmxpYyB2b2lkIG1ldGhvZCgpIHsKKyAgICBTeXN0ZW0ub3V0LnByaW50bG4oIlNlcnZlci5tZXRob2QiKTsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9hZGRDb25zdHJ1Y3RvclBhcmFtZXRlci5sb2cgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2FkZENvbnN0cnVjdG9yUGFyYW1ldGVyLmxvZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zM2E1YWExCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9hZGRDb25zdHJ1Y3RvclBhcmFtZXRlci5sb2cKQEAgLTAsMCArMSwxNCBAQAorQ2xlYW5pbmcgb3V0cHV0IGZpbGVzOgorb3V0L3Byb2R1Y3Rpb24vQWRkQ29uc3RydWN0b3JQYXJhbWV0ZXIvQmFzZS5jbGFzcworRW5kIG9mIGZpbGVzCitDb21waWxpbmcgZmlsZXM6CitzcmMvQmFzZS5qYXZhCitFbmQgb2YgZmlsZXMKK0NsZWFuaW5nIG91dHB1dCBmaWxlczoKK291dC9wcm9kdWN0aW9uL0FkZENvbnN0cnVjdG9yUGFyYW1ldGVyL0NsaWVudC5jbGFzcworb3V0L3Byb2R1Y3Rpb24vQWRkQ29uc3RydWN0b3JQYXJhbWV0ZXIvRGVyaXZlZC5jbGFzcworRW5kIG9mIGZpbGVzCitDb21waWxpbmcgZmlsZXM6CitzcmMvQ2xpZW50LmphdmEKK3NyYy9EZXJpdmVkLmphdmEKK0VuZCBvZiBmaWxlcwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9hZGRDb25zdHJ1Y3RvclBhcmFtZXRlci9CYXNlLmphdmEubmV3IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9hZGRDb25zdHJ1Y3RvclBhcmFtZXRlci9CYXNlLmphdmEubmV3Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY4NTY1YWEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2FkZENvbnN0cnVjdG9yUGFyYW1ldGVyL0Jhc2UuamF2YS5uZXcKQEAgLTAsMCArMSw0IEBACitjbGFzcyBCYXNlIHsKKyAgcHVibGljIEJhc2UoaW50IGEpIHsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvYWRkQ29uc3RydWN0b3JQYXJhbWV0ZXIvZGF0YS54bWwgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2FkZENvbnN0cnVjdG9yUGFyYW1ldGVyL2RhdGEueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVkMWI4YzQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2FkZENvbnN0cnVjdG9yUGFyYW1ldGVyL2RhdGEueG1sCkBAIC0wLDAgKzEsMTIgQEAKKzx0ZXN0RGF0YT4KKyAgPGRlbGV0ZWRfYnlfbWFrZT4KKyAgICA8ZmlsZSBwYXRoPSJjbGFzc2VzL0Jhc2UuY2xhc3MiIC8+CisgICAgPGZpbGUgcGF0aD0iY2xhc3Nlcy9DbGllbnQuY2xhc3MiIC8+CisgICAgPGZpbGUgcGF0aD0iY2xhc3Nlcy9EZXJpdmVkLmNsYXNzIiAvPgorICA8L2RlbGV0ZWRfYnlfbWFrZT4KKworICA8cmVjb21waWxlPgorICAgIDxmaWxlIHBhdGg9InNvdXJjZS9DbGllbnQuamF2YSIgLz4KKyAgICA8ZmlsZSBwYXRoPSJzb3VyY2UvRGVyaXZlZC5qYXZhIiAvPgorICA8L3JlY29tcGlsZT4KKzwvdGVzdERhdGE+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9hZGRDb25zdHJ1Y3RvclBhcmFtZXRlci9zcmMvQmFzZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9hZGRDb25zdHJ1Y3RvclBhcmFtZXRlci9zcmMvQmFzZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk5MThhYWIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2FkZENvbnN0cnVjdG9yUGFyYW1ldGVyL3NyYy9CYXNlLmphdmEKQEAgLTAsMCArMSwyIEBACitjbGFzcyBCYXNlIHsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2FkZENvbnN0cnVjdG9yUGFyYW1ldGVyL3NyYy9DbGllbnQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvYWRkQ29uc3RydWN0b3JQYXJhbWV0ZXIvc3JjL0NsaWVudC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVlYjZhNWYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2FkZENvbnN0cnVjdG9yUGFyYW1ldGVyL3NyYy9DbGllbnQuamF2YQpAQCAtMCwwICsxLDUgQEAKK2NsYXNzIENsaWVudHsKKyAgeworICAgIEJhc2UgYmFzZSA9IG5ldyBCYXNlKCk7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2FkZENvbnN0cnVjdG9yUGFyYW1ldGVyL3NyYy9EZXJpdmVkLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2FkZENvbnN0cnVjdG9yUGFyYW1ldGVyL3NyYy9EZXJpdmVkLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmZkZmFiNQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvYWRkQ29uc3RydWN0b3JQYXJhbWV0ZXIvc3JjL0Rlcml2ZWQuamF2YQpAQCAtMCwwICsxLDIgQEAKK2NsYXNzIERlcml2ZWQgZXh0ZW5kcyBCYXNlIHsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2FkZEZpZWxkVG9CYXNlQ2xhc3MubG9nIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9hZGRGaWVsZFRvQmFzZUNsYXNzLmxvZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZDA2MzYxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9hZGRGaWVsZFRvQmFzZUNsYXNzLmxvZwpAQCAtMCwwICsxLDYgQEAKK0NsZWFuaW5nIG91dHB1dCBmaWxlczoKK291dC9wcm9kdWN0aW9uL0FkZEZpZWxkVG9CYXNlQ2xhc3MvQmFzZVNlcnZlci5jbGFzcworRW5kIG9mIGZpbGVzCitDb21waWxpbmcgZmlsZXM6CitzcmMvQmFzZVNlcnZlci5qYXZhCitFbmQgb2YgZmlsZXMKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvYWRkRmllbGRUb0Jhc2VDbGFzcy9CYXNlU2VydmVyLmphdmEubmV3IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9hZGRGaWVsZFRvQmFzZUNsYXNzL0Jhc2VTZXJ2ZXIuamF2YS5uZXcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOThmN2Y3ZTQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2FkZEZpZWxkVG9CYXNlQ2xhc3MvQmFzZVNlcnZlci5qYXZhLm5ldwpAQCAtMCwwICsxLDMgQEAKK3B1YmxpYyBjbGFzcyBCYXNlU2VydmVyIHsKKyAgcHVibGljIFN0cmluZyBmaWVsZCA9ICJ0ZXN0U3RyaW5nIjsKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvYWRkRmllbGRUb0Jhc2VDbGFzcy9hZGRGaWVsZFRvQmFzZUNsYXNzLmxvZyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvYWRkRmllbGRUb0Jhc2VDbGFzcy9hZGRGaWVsZFRvQmFzZUNsYXNzLmxvZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZDA2MzYxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9hZGRGaWVsZFRvQmFzZUNsYXNzL2FkZEZpZWxkVG9CYXNlQ2xhc3MubG9nCkBAIC0wLDAgKzEsNiBAQAorQ2xlYW5pbmcgb3V0cHV0IGZpbGVzOgorb3V0L3Byb2R1Y3Rpb24vQWRkRmllbGRUb0Jhc2VDbGFzcy9CYXNlU2VydmVyLmNsYXNzCitFbmQgb2YgZmlsZXMKK0NvbXBpbGluZyBmaWxlczoKK3NyYy9CYXNlU2VydmVyLmphdmEKK0VuZCBvZiBmaWxlcwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9hZGRGaWVsZFRvQmFzZUNsYXNzL2RhdGEueG1sIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9hZGRGaWVsZFRvQmFzZUNsYXNzL2RhdGEueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU1OTc4MWUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2FkZEZpZWxkVG9CYXNlQ2xhc3MvZGF0YS54bWwKQEAgLTAsMCArMSwxMiBAQAorPHRlc3REYXRhPgorCisgIDxkZWxldGVkX2J5X21ha2U+CisgICAgPGZpbGUgcGF0aD0iY2xhc3Nlcy9CYXNlU2VydmVyLmNsYXNzIiAvPgorICAgIDxmaWxlIHBhdGg9ImNsYXNzZXMvU2VydmVyLmNsYXNzIiAvPgorICA8L2RlbGV0ZWRfYnlfbWFrZT4KKworICA8cmVjb21waWxlPgorICAgIDxmaWxlIHBhdGg9InNvdXJjZS9TZXJ2ZXIuamF2YSIgLz4KKyAgPC9yZWNvbXBpbGU+CisKKzwvdGVzdERhdGE+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9hZGRGaWVsZFRvQmFzZUNsYXNzL3NyYy9CYXNlU2VydmVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2FkZEZpZWxkVG9CYXNlQ2xhc3Mvc3JjL0Jhc2VTZXJ2ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zM2Y5YjdiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9hZGRGaWVsZFRvQmFzZUNsYXNzL3NyYy9CYXNlU2VydmVyLmphdmEKQEAgLTAsMCArMSwyIEBACitwdWJsaWMgY2xhc3MgQmFzZVNlcnZlciB7Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2FkZEZpZWxkVG9CYXNlQ2xhc3Mvc3JjL1NlcnZlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9hZGRGaWVsZFRvQmFzZUNsYXNzL3NyYy9TZXJ2ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NzA5NDY1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9hZGRGaWVsZFRvQmFzZUNsYXNzL3NyYy9TZXJ2ZXIuamF2YQpAQCAtMCwwICsxLDMgQEAKK3B1YmxpYyBjbGFzcyBTZXJ2ZXIgZXh0ZW5kcyBCYXNlU2VydmVyIHsKKyAgcHVibGljIEludGVnZXIgZmllbGQgPSBuZXcgSW50ZWdlcigxMCk7Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2FkZEZpZWxkVG9EZXJpdmVkLmxvZyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvYWRkRmllbGRUb0Rlcml2ZWQubG9nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY5YzZlNjAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2FkZEZpZWxkVG9EZXJpdmVkLmxvZwpAQCAtMCwwICsxLDEyIEBACitDbGVhbmluZyBvdXRwdXQgZmlsZXM6CitvdXQvcHJvZHVjdGlvbi9BZGRGaWVsZFRvRGVyaXZlZC9EZXJpdmVkLmNsYXNzCitFbmQgb2YgZmlsZXMKK0NvbXBpbGluZyBmaWxlczoKK3NyYy9EZXJpdmVkLmphdmEKK0VuZCBvZiBmaWxlcworQ2xlYW5pbmcgb3V0cHV0IGZpbGVzOgorb3V0L3Byb2R1Y3Rpb24vQWRkRmllbGRUb0Rlcml2ZWQvQ2xpZW50LmNsYXNzCitFbmQgb2YgZmlsZXMKK0NvbXBpbGluZyBmaWxlczoKK3NyYy9DbGllbnQuamF2YQorRW5kIG9mIGZpbGVzCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2FkZEZpZWxkVG9EZXJpdmVkL0Rlcml2ZWQuamF2YS5uZXcgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2FkZEZpZWxkVG9EZXJpdmVkL0Rlcml2ZWQuamF2YS5uZXcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjc2OTM2YgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvYWRkRmllbGRUb0Rlcml2ZWQvRGVyaXZlZC5qYXZhLm5ldwpAQCAtMCwwICsxLDMgQEAKK2NsYXNzIERlcml2ZWQgZXh0ZW5kcyBCYXNlIHsKKyAgY2hhciBoID0gJ2gnOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvYWRkRmllbGRUb0Rlcml2ZWQvZGF0YS54bWwgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2FkZEZpZWxkVG9EZXJpdmVkL2RhdGEueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA5Zjg1NDgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2FkZEZpZWxkVG9EZXJpdmVkL2RhdGEueG1sCkBAIC0wLDAgKzEsMTAgQEAKKzx0ZXN0RGF0YT4KKyAgPGRlbGV0ZWRfYnlfbWFrZT4KKyAgICA8ZmlsZSBwYXRoPSJjbGFzc2VzL0Rlcml2ZWQuY2xhc3MiIC8+CisgICAgPGZpbGUgcGF0aD0iY2xhc3Nlcy9DbGllbnQuY2xhc3MiIC8+CisgIDwvZGVsZXRlZF9ieV9tYWtlPgorCisgIDxyZWNvbXBpbGU+CisgICAgPGZpbGUgcGF0aD0ic291cmNlL0NsaWVudC5qYXZhIiAvPgorICA8L3JlY29tcGlsZT4KKzwvdGVzdERhdGE+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9hZGRGaWVsZFRvRGVyaXZlZC9zcmMvQmFzZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9hZGRGaWVsZFRvRGVyaXZlZC9zcmMvQmFzZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY5OTM3OTgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2FkZEZpZWxkVG9EZXJpdmVkL3NyYy9CYXNlLmphdmEKQEAgLTAsMCArMSwzIEBACitjbGFzcyBCYXNlIHsKKyBTdHJpbmcgaCA9ICJCYXNlIjsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2FkZEZpZWxkVG9EZXJpdmVkL3NyYy9DbGllbnQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvYWRkRmllbGRUb0Rlcml2ZWQvc3JjL0NsaWVudC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY1ZGMwYWMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2FkZEZpZWxkVG9EZXJpdmVkL3NyYy9DbGllbnQuamF2YQpAQCAtMCwwICsxLDYgQEAKK2NsYXNzIENsaWVudCBleHRlbmRzIERlcml2ZWQgeworICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CisgICAgU3RyaW5nIHMgPSBuZXcgQ2xpZW50KCkuaDsKKwkJU3lzdGVtLm91dC5wcmludGxuKHMpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9hZGRGaWVsZFRvRGVyaXZlZC9zcmMvRGVyaXZlZC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9hZGRGaWVsZFRvRGVyaXZlZC9zcmMvRGVyaXZlZC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZmZGZhYjUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2FkZEZpZWxkVG9EZXJpdmVkL3NyYy9EZXJpdmVkLmphdmEKQEAgLTAsMCArMSwyIEBACitjbGFzcyBEZXJpdmVkIGV4dGVuZHMgQmFzZSB7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9hZGRGaWVsZFRvSW50ZXJmYWNlLmxvZyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvYWRkRmllbGRUb0ludGVyZmFjZS5sb2cKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGJjNDI2NQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvYWRkRmllbGRUb0ludGVyZmFjZS5sb2cKQEAgLTAsMCArMSwxMiBAQAorQ2xlYW5pbmcgb3V0cHV0IGZpbGVzOgorb3V0L3Byb2R1Y3Rpb24vQWRkRmllbGRUb0ludGVyZmFjZS9CYXNlSW50ZXJmYWNlLmNsYXNzCitFbmQgb2YgZmlsZXMKK0NvbXBpbGluZyBmaWxlczoKK3NyYy9CYXNlSW50ZXJmYWNlLmphdmEKK0VuZCBvZiBmaWxlcworQ2xlYW5pbmcgb3V0cHV0IGZpbGVzOgorb3V0L3Byb2R1Y3Rpb24vQWRkRmllbGRUb0ludGVyZmFjZS9DbGllbnQuY2xhc3MKK0VuZCBvZiBmaWxlcworQ29tcGlsaW5nIGZpbGVzOgorc3JjL0NsaWVudC5qYXZhCitFbmQgb2YgZmlsZXMKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvYWRkRmllbGRUb0ludGVyZmFjZS9CYXNlSW50ZXJmYWNlLmphdmEubmV3IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9hZGRGaWVsZFRvSW50ZXJmYWNlL0Jhc2VJbnRlcmZhY2UuamF2YS5uZXcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjk5OWVjMwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvYWRkRmllbGRUb0ludGVyZmFjZS9CYXNlSW50ZXJmYWNlLmphdmEubmV3CkBAIC0wLDAgKzEsMyBAQAoraW50ZXJmYWNlIEJhc2VJbnRlcmZhY2UgeworICBTdHJpbmcgZmllbGQgPSAiQmFzZUludGVyZmFjZSI7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9hZGRGaWVsZFRvSW50ZXJmYWNlL2RhdGEueG1sIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9hZGRGaWVsZFRvSW50ZXJmYWNlL2RhdGEueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdjZTY0NjIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2FkZEZpZWxkVG9JbnRlcmZhY2UvZGF0YS54bWwKQEAgLTAsMCArMSwxMCBAQAorPHRlc3REYXRhPgorICA8ZGVsZXRlZF9ieV9tYWtlPgorICAgIDxmaWxlIHBhdGg9ImNsYXNzZXMvQmFzZUludGVyZmFjZS5jbGFzcyIgLz4KKyAgICA8ZmlsZSBwYXRoPSJjbGFzc2VzL0NsaWVudC5jbGFzcyIgLz4KKyAgPC9kZWxldGVkX2J5X21ha2U+CisKKyAgPHJlY29tcGlsZT4KKyAgICA8ZmlsZSBwYXRoPSJzb3VyY2UvQ2xpZW50LmphdmEiIC8+CisgIDwvcmVjb21waWxlPgorPC90ZXN0RGF0YT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2FkZEZpZWxkVG9JbnRlcmZhY2Uvc3JjL0Jhc2UuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvYWRkRmllbGRUb0ludGVyZmFjZS9zcmMvQmFzZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI4NjFmNGIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2FkZEZpZWxkVG9JbnRlcmZhY2Uvc3JjL0Jhc2UuamF2YQpAQCAtMCwwICsxLDMgQEAKK2NsYXNzIEJhc2UgeworIFN0cmluZyBmaWVsZCA9ICJCYXNlIjsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2FkZEZpZWxkVG9JbnRlcmZhY2Uvc3JjL0Jhc2VJbnRlcmZhY2UuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvYWRkRmllbGRUb0ludGVyZmFjZS9zcmMvQmFzZUludGVyZmFjZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA2ZmJiOGIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2FkZEZpZWxkVG9JbnRlcmZhY2Uvc3JjL0Jhc2VJbnRlcmZhY2UuamF2YQpAQCAtMCwwICsxLDIgQEAKK2ludGVyZmFjZSBCYXNlSW50ZXJmYWNlIHsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2FkZEZpZWxkVG9JbnRlcmZhY2Uvc3JjL0NsaWVudC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9hZGRGaWVsZFRvSW50ZXJmYWNlL3NyYy9DbGllbnQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYjIwNGQ2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9hZGRGaWVsZFRvSW50ZXJmYWNlL3NyYy9DbGllbnQuamF2YQpAQCAtMCwwICsxLDYgQEAKK2NsYXNzIENsaWVudCB7CisgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKKyAgICBTdHJpbmcgcyA9IG5ldyBEZXJpdmVkKCkuZmllbGQ7CisJCVN5c3RlbS5vdXQucHJpbnRsbihzKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvYWRkRmllbGRUb0ludGVyZmFjZS9zcmMvRGVyaXZlZC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9hZGRGaWVsZFRvSW50ZXJmYWNlL3NyYy9EZXJpdmVkLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmM4NGQ0OAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvYWRkRmllbGRUb0ludGVyZmFjZS9zcmMvRGVyaXZlZC5qYXZhCkBAIC0wLDAgKzEsMiBAQAorY2xhc3MgRGVyaXZlZCBleHRlbmRzIEJhc2UgaW1wbGVtZW50cyBCYXNlSW50ZXJmYWNlIHsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2FkZEZpZWxkVG9JbnRlcmZhY2UyLmxvZyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvYWRkRmllbGRUb0ludGVyZmFjZTIubG9nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY5OGIxMTIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2FkZEZpZWxkVG9JbnRlcmZhY2UyLmxvZwpAQCAtMCwwICsxLDEyIEBACitDbGVhbmluZyBvdXRwdXQgZmlsZXM6CitvdXQvcHJvZHVjdGlvbi9BZGRGaWVsZFRvSW50ZXJmYWNlMi9CYXNlSW50ZXJmYWNlLmNsYXNzCitFbmQgb2YgZmlsZXMKK0NvbXBpbGluZyBmaWxlczoKK3NyYy9CYXNlSW50ZXJmYWNlLmphdmEKK0VuZCBvZiBmaWxlcworQ2xlYW5pbmcgb3V0cHV0IGZpbGVzOgorb3V0L3Byb2R1Y3Rpb24vQWRkRmllbGRUb0ludGVyZmFjZTIvRGVyaXZlZC5jbGFzcworRW5kIG9mIGZpbGVzCitDb21waWxpbmcgZmlsZXM6CitzcmMvRGVyaXZlZC5qYXZhCitFbmQgb2YgZmlsZXMKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvYWRkRmllbGRUb0ludGVyZmFjZTIvQmFzZUludGVyZmFjZS5qYXZhLm5ldyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvYWRkRmllbGRUb0ludGVyZmFjZTIvQmFzZUludGVyZmFjZS5qYXZhLm5ldwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mOTk5ZWMzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9hZGRGaWVsZFRvSW50ZXJmYWNlMi9CYXNlSW50ZXJmYWNlLmphdmEubmV3CkBAIC0wLDAgKzEsMyBAQAoraW50ZXJmYWNlIEJhc2VJbnRlcmZhY2UgeworICBTdHJpbmcgZmllbGQgPSAiQmFzZUludGVyZmFjZSI7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9hZGRGaWVsZFRvSW50ZXJmYWNlMi9kYXRhLnhtbCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvYWRkRmllbGRUb0ludGVyZmFjZTIvZGF0YS54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTlmMWJjYgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvYWRkRmllbGRUb0ludGVyZmFjZTIvZGF0YS54bWwKQEAgLTAsMCArMSwxMCBAQAorPHRlc3REYXRhPgorICA8ZGVsZXRlZF9ieV9tYWtlPgorICAgIDxmaWxlIHBhdGg9ImNsYXNzZXMvQmFzZUludGVyZmFjZS5jbGFzcyIgLz4KKyAgICA8ZmlsZSBwYXRoPSJjbGFzc2VzL0Rlcml2ZWQuY2xhc3MiIC8+CisgIDwvZGVsZXRlZF9ieV9tYWtlPgorCisgIDxyZWNvbXBpbGU+CisgICAgPGZpbGUgcGF0aD0ic291cmNlL0Rlcml2ZWQuamF2YSIgLz4KKyAgPC9yZWNvbXBpbGU+Cis8L3Rlc3REYXRhPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvYWRkRmllbGRUb0ludGVyZmFjZTIvc3JjL0Jhc2UuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvYWRkRmllbGRUb0ludGVyZmFjZTIvc3JjL0Jhc2UuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iODYxZjRiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9hZGRGaWVsZFRvSW50ZXJmYWNlMi9zcmMvQmFzZS5qYXZhCkBAIC0wLDAgKzEsMyBAQAorY2xhc3MgQmFzZSB7CisgU3RyaW5nIGZpZWxkID0gIkJhc2UiOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvYWRkRmllbGRUb0ludGVyZmFjZTIvc3JjL0Jhc2VJbnRlcmZhY2UuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvYWRkRmllbGRUb0ludGVyZmFjZTIvc3JjL0Jhc2VJbnRlcmZhY2UuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNmZiYjhiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9hZGRGaWVsZFRvSW50ZXJmYWNlMi9zcmMvQmFzZUludGVyZmFjZS5qYXZhCkBAIC0wLDAgKzEsMiBAQAoraW50ZXJmYWNlIEJhc2VJbnRlcmZhY2UgeworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvYWRkRmllbGRUb0ludGVyZmFjZTIvc3JjL0Rlcml2ZWQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvYWRkRmllbGRUb0ludGVyZmFjZTIvc3JjL0Rlcml2ZWQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMDAyNTY4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9hZGRGaWVsZFRvSW50ZXJmYWNlMi9zcmMvRGVyaXZlZC5qYXZhCkBAIC0wLDAgKzEsOSBAQAorY2xhc3MgRGVyaXZlZCBleHRlbmRzIEJhc2UgaW1wbGVtZW50cyBCYXNlSW50ZXJmYWNlIHsKKyAgdm9pZCBmb28oKSB7CisgICAgU3lzdGVtLm91dC5wcmludGxuKGZpZWxkKTsKKyAgfQorCisgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKKyAgICBuZXcgRGVyaXZlZCgpLmZvbygpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9hZGRGaW5hbE1ldGhvZEhhdmluZ05vbkZpbmFsTWV0aG9kSW5TdWJjbGFzcy5sb2cgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2FkZEZpbmFsTWV0aG9kSGF2aW5nTm9uRmluYWxNZXRob2RJblN1YmNsYXNzLmxvZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYWZjZGUwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9hZGRGaW5hbE1ldGhvZEhhdmluZ05vbkZpbmFsTWV0aG9kSW5TdWJjbGFzcy5sb2cKQEAgLTAsMCArMSwxMiBAQAorQ2xlYW5pbmcgb3V0cHV0IGZpbGVzOgorb3V0L3Byb2R1Y3Rpb24vQWRkRmluYWxNZXRob2RIYXZpbmdOb25GaW5hbE1ldGhvZEluU3ViY2xhc3MvQmFzZVNlcnZlci5jbGFzcworRW5kIG9mIGZpbGVzCitDb21waWxpbmcgZmlsZXM6CitzcmMvQmFzZVNlcnZlci5qYXZhCitFbmQgb2YgZmlsZXMKK0NsZWFuaW5nIG91dHB1dCBmaWxlczoKK291dC9wcm9kdWN0aW9uL0FkZEZpbmFsTWV0aG9kSGF2aW5nTm9uRmluYWxNZXRob2RJblN1YmNsYXNzL1NlcnZlci5jbGFzcworRW5kIG9mIGZpbGVzCitDb21waWxpbmcgZmlsZXM6CitzcmMvU2VydmVyLmphdmEKK0VuZCBvZiBmaWxlcwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9hZGRGaW5hbE1ldGhvZEhhdmluZ05vbkZpbmFsTWV0aG9kSW5TdWJjbGFzcy9CYXNlU2VydmVyLmphdmEubmV3IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9hZGRGaW5hbE1ldGhvZEhhdmluZ05vbkZpbmFsTWV0aG9kSW5TdWJjbGFzcy9CYXNlU2VydmVyLmphdmEubmV3Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUxZTNlNDYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2FkZEZpbmFsTWV0aG9kSGF2aW5nTm9uRmluYWxNZXRob2RJblN1YmNsYXNzL0Jhc2VTZXJ2ZXIuamF2YS5uZXcKQEAgLTAsMCArMSw1IEBACitwdWJsaWMgY2xhc3MgQmFzZVNlcnZlciB7CisgIHB1YmxpYyBmaW5hbCBJbnRlZ2VyIG1ldGhvZCgpIHsKKyAgICByZXR1cm4gbmV3IEludGVnZXIoMTApOworICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2FkZEZpbmFsTWV0aG9kSGF2aW5nTm9uRmluYWxNZXRob2RJblN1YmNsYXNzL2RhdGEueG1sIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9hZGRGaW5hbE1ldGhvZEhhdmluZ05vbkZpbmFsTWV0aG9kSW5TdWJjbGFzcy9kYXRhLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NTk3ODFlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9hZGRGaW5hbE1ldGhvZEhhdmluZ05vbkZpbmFsTWV0aG9kSW5TdWJjbGFzcy9kYXRhLnhtbApAQCAtMCwwICsxLDEyIEBACis8dGVzdERhdGE+CisKKyAgPGRlbGV0ZWRfYnlfbWFrZT4KKyAgICA8ZmlsZSBwYXRoPSJjbGFzc2VzL0Jhc2VTZXJ2ZXIuY2xhc3MiIC8+CisgICAgPGZpbGUgcGF0aD0iY2xhc3Nlcy9TZXJ2ZXIuY2xhc3MiIC8+CisgIDwvZGVsZXRlZF9ieV9tYWtlPgorCisgIDxyZWNvbXBpbGU+CisgICAgPGZpbGUgcGF0aD0ic291cmNlL1NlcnZlci5qYXZhIiAvPgorICA8L3JlY29tcGlsZT4KKworPC90ZXN0RGF0YT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2FkZEZpbmFsTWV0aG9kSGF2aW5nTm9uRmluYWxNZXRob2RJblN1YmNsYXNzL3NyYy9CYXNlU2VydmVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2FkZEZpbmFsTWV0aG9kSGF2aW5nTm9uRmluYWxNZXRob2RJblN1YmNsYXNzL3NyYy9CYXNlU2VydmVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzNmOWI3YgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvYWRkRmluYWxNZXRob2RIYXZpbmdOb25GaW5hbE1ldGhvZEluU3ViY2xhc3Mvc3JjL0Jhc2VTZXJ2ZXIuamF2YQpAQCAtMCwwICsxLDIgQEAKK3B1YmxpYyBjbGFzcyBCYXNlU2VydmVyIHsKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvYWRkRmluYWxNZXRob2RIYXZpbmdOb25GaW5hbE1ldGhvZEluU3ViY2xhc3Mvc3JjL1NlcnZlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9hZGRGaW5hbE1ldGhvZEhhdmluZ05vbkZpbmFsTWV0aG9kSW5TdWJjbGFzcy9zcmMvU2VydmVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2I3OGVjYwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvYWRkRmluYWxNZXRob2RIYXZpbmdOb25GaW5hbE1ldGhvZEluU3ViY2xhc3Mvc3JjL1NlcnZlci5qYXZhCkBAIC0wLDAgKzEsNSBAQAorcHVibGljIGNsYXNzIFNlcnZlciBleHRlbmRzIEJhc2VTZXJ2ZXIgeworICBwdWJsaWMgSW50ZWdlciBtZXRob2QoKSB7CisgICAgcmV0dXJuIG5ldyBJbnRlZ2VyKDEwKTsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9hZGRIaWRpbmdGaWVsZC5sb2cgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2FkZEhpZGluZ0ZpZWxkLmxvZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMmM2YmRlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9hZGRIaWRpbmdGaWVsZC5sb2cKQEAgLTAsMCArMSwxMyBAQAorQ2xlYW5pbmcgb3V0cHV0IGZpbGVzOgorb3V0L3Byb2R1Y3Rpb24vQWRkSGlkaW5nRmllbGQvQmFzZUFjdGlvbi5jbGFzcworRW5kIG9mIGZpbGVzCitDb21waWxpbmcgZmlsZXM6CitzcmMvQmFzZUFjdGlvbi5qYXZhCitFbmQgb2YgZmlsZXMKK0NsZWFuaW5nIG91dHB1dCBmaWxlczoKK291dC9wcm9kdWN0aW9uL0FkZEhpZGluZ0ZpZWxkL0NsaWVudCQxLmNsYXNzCitvdXQvcHJvZHVjdGlvbi9BZGRIaWRpbmdGaWVsZC9DbGllbnQuY2xhc3MKK0VuZCBvZiBmaWxlcworQ29tcGlsaW5nIGZpbGVzOgorc3JjL0NsaWVudC5qYXZhCitFbmQgb2YgZmlsZXMKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvYWRkSGlkaW5nRmllbGQvQmFzZUFjdGlvbi5qYXZhLm5ldyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvYWRkSGlkaW5nRmllbGQvQmFzZUFjdGlvbi5qYXZhLm5ldwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYzhkMzIwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9hZGRIaWRpbmdGaWVsZC9CYXNlQWN0aW9uLmphdmEubmV3CkBAIC0wLDAgKzEsNyBAQAorcHVibGljIGFic3RyYWN0IGNsYXNzIEJhc2VBY3Rpb24geworICBpbnQgZmllbGQgPSA5OTk7CisKKyAgcHVibGljIGFic3RyYWN0IHZvaWQgYWN0aW9uKCk7CisKKworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvYWRkSGlkaW5nRmllbGQvZGF0YS54bWwgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2FkZEhpZGluZ0ZpZWxkL2RhdGEueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQyOGMwNWEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2FkZEhpZGluZ0ZpZWxkL2RhdGEueG1sCkBAIC0wLDAgKzEsMTIgQEAKKzx0ZXN0RGF0YT4KKyAgPGRlbGV0ZWRfYnlfbWFrZT4KKyAgICA8ZmlsZSBwYXRoPSJjbGFzc2VzL0Jhc2VBY3Rpb24uY2xhc3MiIC8+CisgICAgPGZpbGUgcGF0aD0iY2xhc3Nlcy9DbGllbnQuY2xhc3MiIC8+CisgICAgPGZpbGUgcGF0aD0iY2xhc3Nlcy9DbGllbnQkMS5jbGFzcyIgLz4KKyAgPC9kZWxldGVkX2J5X21ha2U+CisKKyAgPHJlY29tcGlsZT4KKyAgICA8ZmlsZSBwYXRoPSJzb3VyY2UvQ2xpZW50LmphdmEiIC8+CisgIDwvcmVjb21waWxlPgorCis8L3Rlc3REYXRhPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvYWRkSGlkaW5nRmllbGQvc3JjL0Jhc2VBY3Rpb24uamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvYWRkSGlkaW5nRmllbGQvc3JjL0Jhc2VBY3Rpb24uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNTA1YmQ2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9hZGRIaWRpbmdGaWVsZC9zcmMvQmFzZUFjdGlvbi5qYXZhCkBAIC0wLDAgKzEsMyBAQAorcHVibGljIGFic3RyYWN0IGNsYXNzIEJhc2VBY3Rpb24geworICBwdWJsaWMgYWJzdHJhY3Qgdm9pZCBhY3Rpb24oKTsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2FkZEhpZGluZ0ZpZWxkL3NyYy9CYXNlQ2xpZW50LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2FkZEhpZGluZ0ZpZWxkL3NyYy9CYXNlQ2xpZW50LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTU3NTM2YwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvYWRkSGlkaW5nRmllbGQvc3JjL0Jhc2VDbGllbnQuamF2YQpAQCAtMCwwICsxLDMgQEAKK3B1YmxpYyBjbGFzcyBCYXNlQ2xpZW50IHsKKyAgaW50IGZpZWxkID0gNzc3OworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvYWRkSGlkaW5nRmllbGQvc3JjL0NsaWVudC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9hZGRIaWRpbmdGaWVsZC9zcmMvQ2xpZW50LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODhlZDMwOAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvYWRkSGlkaW5nRmllbGQvc3JjL0NsaWVudC5qYXZhCkBAIC0wLDAgKzEsOSBAQAorcHVibGljIGNsYXNzIENsaWVudCBleHRlbmRzIEJhc2VDbGllbnR7CisgIHB1YmxpYyB2b2lkIGNhbGN1bGF0aW9uKCkgeworICAgIG5ldyBCYXNlQWN0aW9uKCkgeworICAgICAgIHB1YmxpYyB2b2lkIGFjdGlvbigpIHsKKyAgICAgICAgICBpbnQgZGF0YSA9IGZpZWxkOworICAgICAgIH0KKyAgICB9LmFjdGlvbigpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9hZGRIaWRpbmdNZXRob2QubG9nIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9hZGRIaWRpbmdNZXRob2QubG9nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE5NWQzNTQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2FkZEhpZGluZ01ldGhvZC5sb2cKQEAgLTAsMCArMSwxMyBAQAorQ2xlYW5pbmcgb3V0cHV0IGZpbGVzOgorb3V0L3Byb2R1Y3Rpb24vQWRkSGlkaW5nTWV0aG9kL0Jhc2VBY3Rpb24uY2xhc3MKK0VuZCBvZiBmaWxlcworQ29tcGlsaW5nIGZpbGVzOgorc3JjL0Jhc2VBY3Rpb24uamF2YQorRW5kIG9mIGZpbGVzCitDbGVhbmluZyBvdXRwdXQgZmlsZXM6CitvdXQvcHJvZHVjdGlvbi9BZGRIaWRpbmdNZXRob2QvQ2xpZW50JDEuY2xhc3MKK291dC9wcm9kdWN0aW9uL0FkZEhpZGluZ01ldGhvZC9DbGllbnQuY2xhc3MKK0VuZCBvZiBmaWxlcworQ29tcGlsaW5nIGZpbGVzOgorc3JjL0NsaWVudC5qYXZhCitFbmQgb2YgZmlsZXMKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvYWRkSGlkaW5nTWV0aG9kL0Jhc2VBY3Rpb24uamF2YS5uZXcgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2FkZEhpZGluZ01ldGhvZC9CYXNlQWN0aW9uLmphdmEubmV3Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE3OWU2OTAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2FkZEhpZGluZ01ldGhvZC9CYXNlQWN0aW9uLmphdmEubmV3CkBAIC0wLDAgKzEsOCBAQAorcHVibGljIGFic3RyYWN0IGNsYXNzIEJhc2VBY3Rpb24geworICBwdWJsaWMgYWJzdHJhY3Qgdm9pZCBhY3Rpb24oKTsKKworICBwdWJsaWMgaW50IGdldERhdGEoKSB7CisgICAgIHJldHVybiAxMDsKKyAgfQorCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9hZGRIaWRpbmdNZXRob2QvZGF0YS54bWwgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2FkZEhpZGluZ01ldGhvZC9kYXRhLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MjhjMDVhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9hZGRIaWRpbmdNZXRob2QvZGF0YS54bWwKQEAgLTAsMCArMSwxMiBAQAorPHRlc3REYXRhPgorICA8ZGVsZXRlZF9ieV9tYWtlPgorICAgIDxmaWxlIHBhdGg9ImNsYXNzZXMvQmFzZUFjdGlvbi5jbGFzcyIgLz4KKyAgICA8ZmlsZSBwYXRoPSJjbGFzc2VzL0NsaWVudC5jbGFzcyIgLz4KKyAgICA8ZmlsZSBwYXRoPSJjbGFzc2VzL0NsaWVudCQxLmNsYXNzIiAvPgorICA8L2RlbGV0ZWRfYnlfbWFrZT4KKworICA8cmVjb21waWxlPgorICAgIDxmaWxlIHBhdGg9InNvdXJjZS9DbGllbnQuamF2YSIgLz4KKyAgPC9yZWNvbXBpbGU+CisKKzwvdGVzdERhdGE+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9hZGRIaWRpbmdNZXRob2Qvc3JjL0Jhc2VBY3Rpb24uamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvYWRkSGlkaW5nTWV0aG9kL3NyYy9CYXNlQWN0aW9uLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTUwNWJkNgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvYWRkSGlkaW5nTWV0aG9kL3NyYy9CYXNlQWN0aW9uLmphdmEKQEAgLTAsMCArMSwzIEBACitwdWJsaWMgYWJzdHJhY3QgY2xhc3MgQmFzZUFjdGlvbiB7CisgIHB1YmxpYyBhYnN0cmFjdCB2b2lkIGFjdGlvbigpOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvYWRkSGlkaW5nTWV0aG9kL3NyYy9CYXNlQ2xpZW50LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2FkZEhpZGluZ01ldGhvZC9zcmMvQmFzZUNsaWVudC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM4MmQ5ZGIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2FkZEhpZGluZ01ldGhvZC9zcmMvQmFzZUNsaWVudC5qYXZhCkBAIC0wLDAgKzEsNSBAQAorcHVibGljIGNsYXNzIEJhc2VDbGllbnQgeworICBwdWJsaWMgaW50IGdldERhdGEoKSB7CisgICAgIHJldHVybiAxMDsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvYWRkSGlkaW5nTWV0aG9kL3NyYy9DbGllbnQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvYWRkSGlkaW5nTWV0aG9kL3NyYy9DbGllbnQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNTNlMzQxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9hZGRIaWRpbmdNZXRob2Qvc3JjL0NsaWVudC5qYXZhCkBAIC0wLDAgKzEsOSBAQAorcHVibGljIGNsYXNzIENsaWVudCBleHRlbmRzIEJhc2VDbGllbnR7CisgIHB1YmxpYyB2b2lkIGNhbGN1bGF0aW9uKCkgeworICAgIG5ldyBCYXNlQWN0aW9uKCkgeworICAgICAgIHB1YmxpYyB2b2lkIGFjdGlvbigpIHsKKyAgICAgICAgICBpbnQgZGF0YSA9IGdldERhdGEoKTsKKyAgICAgICB9CisgICAgfS5hY3Rpb24oKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvYWRkSW50ZXJmYWNlTWV0aG9kLmxvZyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvYWRkSW50ZXJmYWNlTWV0aG9kLmxvZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMzhkZjgyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9hZGRJbnRlcmZhY2VNZXRob2QubG9nCkBAIC0wLDAgKzEsMTIgQEAKK0NsZWFuaW5nIG91dHB1dCBmaWxlczoKK291dC9wcm9kdWN0aW9uL0FkZEludGVyZmFjZU1ldGhvZC9TZXJ2aWNlLmNsYXNzCitFbmQgb2YgZmlsZXMKK0NvbXBpbGluZyBmaWxlczoKK3NyYy9TZXJ2aWNlLmphdmEKK0VuZCBvZiBmaWxlcworQ2xlYW5pbmcgb3V0cHV0IGZpbGVzOgorb3V0L3Byb2R1Y3Rpb24vQWRkSW50ZXJmYWNlTWV0aG9kL1NlcnZpY2VJbXBsLmNsYXNzCitFbmQgb2YgZmlsZXMKK0NvbXBpbGluZyBmaWxlczoKK3NyYy9TZXJ2aWNlSW1wbC5qYXZhCitFbmQgb2YgZmlsZXMKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvYWRkSW50ZXJmYWNlTWV0aG9kL1NlcnZpY2UuamF2YS5uZXcgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2FkZEludGVyZmFjZU1ldGhvZC9TZXJ2aWNlLmphdmEubmV3Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdmNWIwYTEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2FkZEludGVyZmFjZU1ldGhvZC9TZXJ2aWNlLmphdmEubmV3CkBAIC0wLDAgKzEsNCBAQAoraW50ZXJmYWNlIFNlcnZpY2UgeworICB2b2lkIGZvbygpOworICB2b2lkIGJhcihpbnQgYSk7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9hZGRJbnRlcmZhY2VNZXRob2QvZGF0YS54bWwgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2FkZEludGVyZmFjZU1ldGhvZC9kYXRhLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wM2MwNWEwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9hZGRJbnRlcmZhY2VNZXRob2QvZGF0YS54bWwKQEAgLTAsMCArMSwxMiBAQAorPHRlc3REYXRhPgorCisgIDxkZWxldGVkX2J5X21ha2U+CisgICAgPGZpbGUgcGF0aD0iY2xhc3Nlcy9TZXJ2aWNlLmNsYXNzIiAvPgorICAgIDxmaWxlIHBhdGg9ImNsYXNzZXMvU2VydmljZUltcGwuY2xhc3MiIC8+CisgIDwvZGVsZXRlZF9ieV9tYWtlPgorCisgIDxyZWNvbXBpbGU+CisgICAgPGZpbGUgcGF0aD0ic291cmNlL1NlcnZpY2VJbXBsLmphdmEiIC8+CisgIDwvcmVjb21waWxlPgorCis8L3Rlc3REYXRhPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvYWRkSW50ZXJmYWNlTWV0aG9kL3NyYy9TZXJ2aWNlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2FkZEludGVyZmFjZU1ldGhvZC9zcmMvU2VydmljZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk3YzExM2YKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2FkZEludGVyZmFjZU1ldGhvZC9zcmMvU2VydmljZS5qYXZhCkBAIC0wLDAgKzEsMyBAQAoraW50ZXJmYWNlIFNlcnZpY2UgeworICB2b2lkIGZvbygpOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvYWRkSW50ZXJmYWNlTWV0aG9kL3NyYy9TZXJ2aWNlSW1wbC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9hZGRJbnRlcmZhY2VNZXRob2Qvc3JjL1NlcnZpY2VJbXBsLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGZhZTVlMAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvYWRkSW50ZXJmYWNlTWV0aG9kL3NyYy9TZXJ2aWNlSW1wbC5qYXZhCkBAIC0wLDAgKzEsNCBAQAorcHVibGljIGNsYXNzIFNlcnZpY2VJbXBsIGltcGxlbWVudHMgU2VydmljZSB7CisgIHB1YmxpYyB2b2lkIGZvbygpIHsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9hZGRJbnRlcmZhY2VNZXRob2QyLmxvZyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvYWRkSW50ZXJmYWNlTWV0aG9kMi5sb2cKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjk2ZWY4NQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvYWRkSW50ZXJmYWNlTWV0aG9kMi5sb2cKQEAgLTAsMCArMSwxNCBAQAorQ2xlYW5pbmcgb3V0cHV0IGZpbGVzOgorb3V0L3Byb2R1Y3Rpb24vQWRkSW50ZXJmYWNlTWV0aG9kMi9TZXJ2aWNlLmNsYXNzCitFbmQgb2YgZmlsZXMKK0NvbXBpbGluZyBmaWxlczoKK3NyYy9TZXJ2aWNlLmphdmEKK0VuZCBvZiBmaWxlcworQ2xlYW5pbmcgb3V0cHV0IGZpbGVzOgorb3V0L3Byb2R1Y3Rpb24vQWRkSW50ZXJmYWNlTWV0aG9kMi9EZXJpdmVkU2VydmljZS5jbGFzcworb3V0L3Byb2R1Y3Rpb24vQWRkSW50ZXJmYWNlTWV0aG9kMi9TZXJ2aWNlSW1wbC5jbGFzcworRW5kIG9mIGZpbGVzCitDb21waWxpbmcgZmlsZXM6CitzcmMvRGVyaXZlZFNlcnZpY2UuamF2YQorc3JjL1NlcnZpY2VJbXBsLmphdmEKK0VuZCBvZiBmaWxlcwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9hZGRJbnRlcmZhY2VNZXRob2QyL1NlcnZpY2UuamF2YS5uZXcgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2FkZEludGVyZmFjZU1ldGhvZDIvU2VydmljZS5qYXZhLm5ldwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZjViMGExCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9hZGRJbnRlcmZhY2VNZXRob2QyL1NlcnZpY2UuamF2YS5uZXcKQEAgLTAsMCArMSw0IEBACitpbnRlcmZhY2UgU2VydmljZSB7CisgIHZvaWQgZm9vKCk7CisgIHZvaWQgYmFyKGludCBhKTsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2FkZEludGVyZmFjZU1ldGhvZDIvZGF0YS54bWwgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2FkZEludGVyZmFjZU1ldGhvZDIvZGF0YS54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTAzZTU4YwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvYWRkSW50ZXJmYWNlTWV0aG9kMi9kYXRhLnhtbApAQCAtMCwwICsxLDE0IEBACis8dGVzdERhdGE+CisKKyAgPGRlbGV0ZWRfYnlfbWFrZT4KKyAgICA8ZmlsZSBwYXRoPSJjbGFzc2VzL1NlcnZpY2UuY2xhc3MiIC8+CisgICAgPGZpbGUgcGF0aD0iY2xhc3Nlcy9TZXJ2aWNlSW1wbC5jbGFzcyIgLz4KKyAgICA8ZmlsZSBwYXRoPSJjbGFzc2VzL0Rlcml2ZWRTZXJ2aWNlLmNsYXNzIiAvPgorICA8L2RlbGV0ZWRfYnlfbWFrZT4KKworICA8cmVjb21waWxlPgorICAgIDxmaWxlIHBhdGg9InNvdXJjZS9TZXJ2aWNlSW1wbC5qYXZhIiAvPgorICAgIDxmaWxlIHBhdGg9InNvdXJjZS9EZXJpdmVkU2VydmljZS5qYXZhIiAvPgorICA8L3JlY29tcGlsZT4KKworPC90ZXN0RGF0YT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2FkZEludGVyZmFjZU1ldGhvZDIvc3JjL0Rlcml2ZWRTZXJ2aWNlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2FkZEludGVyZmFjZU1ldGhvZDIvc3JjL0Rlcml2ZWRTZXJ2aWNlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGFiNDI4NwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvYWRkSW50ZXJmYWNlTWV0aG9kMi9zcmMvRGVyaXZlZFNlcnZpY2UuamF2YQpAQCAtMCwwICsxLDIgQEAKK2ludGVyZmFjZSBEZXJpdmVkU2VydmljZSBleHRlbmRzIFNlcnZpY2UgeworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvYWRkSW50ZXJmYWNlTWV0aG9kMi9zcmMvU2VydmljZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9hZGRJbnRlcmZhY2VNZXRob2QyL3NyYy9TZXJ2aWNlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTdjMTEzZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvYWRkSW50ZXJmYWNlTWV0aG9kMi9zcmMvU2VydmljZS5qYXZhCkBAIC0wLDAgKzEsMyBAQAoraW50ZXJmYWNlIFNlcnZpY2UgeworICB2b2lkIGZvbygpOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvYWRkSW50ZXJmYWNlTWV0aG9kMi9zcmMvU2VydmljZUltcGwuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvYWRkSW50ZXJmYWNlTWV0aG9kMi9zcmMvU2VydmljZUltcGwuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42Njg1MjUzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9hZGRJbnRlcmZhY2VNZXRob2QyL3NyYy9TZXJ2aWNlSW1wbC5qYXZhCkBAIC0wLDAgKzEsNCBAQAorcHVibGljIGNsYXNzIFNlcnZpY2VJbXBsIGltcGxlbWVudHMgRGVyaXZlZFNlcnZpY2UgeworICBwdWJsaWMgdm9pZCBmb28oKSB7CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvYWRkTGVzc0FjY2Vzc2libGVGaWVsZFRvRGVyaXZlZC5sb2cgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2FkZExlc3NBY2Nlc3NpYmxlRmllbGRUb0Rlcml2ZWQubG9nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjllNDM1MzAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2FkZExlc3NBY2Nlc3NpYmxlRmllbGRUb0Rlcml2ZWQubG9nCkBAIC0wLDAgKzEsMTIgQEAKK0NsZWFuaW5nIG91dHB1dCBmaWxlczoKK291dC9wcm9kdWN0aW9uL0FkZExlc3NBY2Nlc3NpYmxlRmllbGRUb0Rlcml2ZWQvRGVyaXZlZC5jbGFzcworRW5kIG9mIGZpbGVzCitDb21waWxpbmcgZmlsZXM6CitzcmMvRGVyaXZlZC5qYXZhCitFbmQgb2YgZmlsZXMKK0NsZWFuaW5nIG91dHB1dCBmaWxlczoKK291dC9wcm9kdWN0aW9uL0FkZExlc3NBY2Nlc3NpYmxlRmllbGRUb0Rlcml2ZWQvQ2xpZW50LmNsYXNzCitFbmQgb2YgZmlsZXMKK0NvbXBpbGluZyBmaWxlczoKK3NyYy9DbGllbnQuamF2YQorRW5kIG9mIGZpbGVzCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2FkZExlc3NBY2Nlc3NpYmxlRmllbGRUb0Rlcml2ZWQvRGVyaXZlZC5qYXZhLm5ldyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvYWRkTGVzc0FjY2Vzc2libGVGaWVsZFRvRGVyaXZlZC9EZXJpdmVkLmphdmEubmV3Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRjY2JmYWQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2FkZExlc3NBY2Nlc3NpYmxlRmllbGRUb0Rlcml2ZWQvRGVyaXZlZC5qYXZhLm5ldwpAQCAtMCwwICsxLDMgQEAKK2NsYXNzIERlcml2ZWQgZXh0ZW5kcyBCYXNlIHsKKyAgcHJpdmF0ZSBTdHJpbmcgbXlGaWVsZCA9ICJEZXJpdmVkLm15RmllbGQiOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvYWRkTGVzc0FjY2Vzc2libGVGaWVsZFRvRGVyaXZlZC9kYXRhLnhtbCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvYWRkTGVzc0FjY2Vzc2libGVGaWVsZFRvRGVyaXZlZC9kYXRhLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wOWY4NTQ4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9hZGRMZXNzQWNjZXNzaWJsZUZpZWxkVG9EZXJpdmVkL2RhdGEueG1sCkBAIC0wLDAgKzEsMTAgQEAKKzx0ZXN0RGF0YT4KKyAgPGRlbGV0ZWRfYnlfbWFrZT4KKyAgICA8ZmlsZSBwYXRoPSJjbGFzc2VzL0Rlcml2ZWQuY2xhc3MiIC8+CisgICAgPGZpbGUgcGF0aD0iY2xhc3Nlcy9DbGllbnQuY2xhc3MiIC8+CisgIDwvZGVsZXRlZF9ieV9tYWtlPgorCisgIDxyZWNvbXBpbGU+CisgICAgPGZpbGUgcGF0aD0ic291cmNlL0NsaWVudC5qYXZhIiAvPgorICA8L3JlY29tcGlsZT4KKzwvdGVzdERhdGE+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9hZGRMZXNzQWNjZXNzaWJsZUZpZWxkVG9EZXJpdmVkL3NyYy9CYXNlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2FkZExlc3NBY2Nlc3NpYmxlRmllbGRUb0Rlcml2ZWQvc3JjL0Jhc2UuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iOTg3NTJmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9hZGRMZXNzQWNjZXNzaWJsZUZpZWxkVG9EZXJpdmVkL3NyYy9CYXNlLmphdmEKQEAgLTAsMCArMSwzIEBACitjbGFzcyBCYXNlIHsKKyBTdHJpbmcgbXlGaWVsZCA9ICJCYXNlLm15RmllbGQiOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvYWRkTGVzc0FjY2Vzc2libGVGaWVsZFRvRGVyaXZlZC9zcmMvQ2xpZW50LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2FkZExlc3NBY2Nlc3NpYmxlRmllbGRUb0Rlcml2ZWQvc3JjL0NsaWVudC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBhZDYzZDIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2FkZExlc3NBY2Nlc3NpYmxlRmllbGRUb0Rlcml2ZWQvc3JjL0NsaWVudC5qYXZhCkBAIC0wLDAgKzEsNSBAQAorY2xhc3MgQ2xpZW50IHsKKyAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgeworCQlTeXN0ZW0ub3V0LnByaW50bG4obmV3IERlcml2ZWQoKS5teUZpZWxkKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvYWRkTGVzc0FjY2Vzc2libGVGaWVsZFRvRGVyaXZlZC9zcmMvRGVyaXZlZC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9hZGRMZXNzQWNjZXNzaWJsZUZpZWxkVG9EZXJpdmVkL3NyYy9EZXJpdmVkLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmZkZmFiNQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvYWRkTGVzc0FjY2Vzc2libGVGaWVsZFRvRGVyaXZlZC9zcmMvRGVyaXZlZC5qYXZhCkBAIC0wLDAgKzEsMiBAQAorY2xhc3MgRGVyaXZlZCBleHRlbmRzIEJhc2UgeworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvYWRkTWV0aG9kLmxvZyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvYWRkTWV0aG9kLmxvZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMTZlNGJlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9hZGRNZXRob2QubG9nCkBAIC0wLDAgKzEsMTIgQEAKK0NsZWFuaW5nIG91dHB1dCBmaWxlczoKK291dC9wcm9kdWN0aW9uL0FkZE1ldGhvZC9BLmNsYXNzCitFbmQgb2YgZmlsZXMKK0NvbXBpbGluZyBmaWxlczoKK3NyYy9BLmphdmEKK0VuZCBvZiBmaWxlcworQ2xlYW5pbmcgb3V0cHV0IGZpbGVzOgorb3V0L3Byb2R1Y3Rpb24vQWRkTWV0aG9kL0QuY2xhc3MKK0VuZCBvZiBmaWxlcworQ29tcGlsaW5nIGZpbGVzOgorc3JjL0QuamF2YQorRW5kIG9mIGZpbGVzCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2FkZE1ldGhvZC9BLmphdmEubmV3IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9hZGRNZXRob2QvQS5qYXZhLm5ldwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNTZjNTQ3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9hZGRNZXRob2QvQS5qYXZhLm5ldwpAQCAtMCwwICsxLDEzIEBACitwdWJsaWMgY2xhc3MgQSB7CisgICAgdm9pZCBmIChJbnRlZ2VyIHgpIHsKKworICAgIH0KKworICAgIHZvaWQgZiAoSW50ZWdlciB4LCBJbnRlZ2VyIHkpeworCisgICAgfQorCisgICAgdm9pZCBmIChTdHJpbmcgeCwgSW50ZWdlciB5KXsKKworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2FkZE1ldGhvZC9zcmMvQS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9hZGRNZXRob2Qvc3JjL0EuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNGVkNzRjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9hZGRNZXRob2Qvc3JjL0EuamF2YQpAQCAtMCwwICsxLDE2IEBACisvKioKKyAqIENyZWF0ZWQgYnkgSW50ZWxsaUogSURFQS4KKyAqIFVzZXI6IGRiCisgKiBEYXRlOiAxOC4xMS4xMQorICogVGltZTogMTg6NTMKKyAqIFRvIGNoYW5nZSB0aGlzIHRlbXBsYXRlIHVzZSBGaWxlIHwgU2V0dGluZ3MgfCBGaWxlIFRlbXBsYXRlcy4KKyAqLworcHVibGljIGNsYXNzIEEgeworICAgIHZvaWQgZiAoSW50ZWdlciB4KSB7CisgICAgICAgIAorICAgIH0KKyAgICAKKyAgICB2b2lkIGYgKEludGVnZXIgeCwgSW50ZWdlciB5KXsKKworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvYWRkTWV0aG9kL3NyYy9DLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2FkZE1ldGhvZC9zcmMvQy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUwMWM0ZDgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2FkZE1ldGhvZC9zcmMvQy5qYXZhCkBAIC0wLDAgKzEsMTIgQEAKKy8qKgorICogQ3JlYXRlZCBieSBJbnRlbGxpSiBJREVBLgorICogVXNlcjogZGIKKyAqIERhdGU6IDE4LjExLjExCisgKiBUaW1lOiAxODo1NAorICogVG8gY2hhbmdlIHRoaXMgdGVtcGxhdGUgdXNlIEZpbGUgfCBTZXR0aW5ncyB8IEZpbGUgVGVtcGxhdGVzLgorICovCitwdWJsaWMgY2xhc3MgQyB7CisgICAgdm9pZCBmIChBIGEpeworICAgICAgICBhLmYoMSk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9hZGRNZXRob2Qvc3JjL0QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvYWRkTWV0aG9kL3NyYy9ELmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDEzNmYzZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvYWRkTWV0aG9kL3NyYy9ELmphdmEKQEAgLTAsMCArMSwxMiBAQAorLyoqCisgKiBDcmVhdGVkIGJ5IEludGVsbGlKIElERUEuCisgKiBVc2VyOiBkYgorICogRGF0ZTogMTguMTEuMTEKKyAqIFRpbWU6IDE4OjU1CisgKiBUbyBjaGFuZ2UgdGhpcyB0ZW1wbGF0ZSB1c2UgRmlsZSB8IFNldHRpbmdzIHwgRmlsZSBUZW1wbGF0ZXMuCisgKi8KK3B1YmxpYyBjbGFzcyBEIHsKKyAgICB2b2lkIGYoQSBhKXsKKyAgICAgICAgYS5mKDEsIDIpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvYWRkTWV0aG9kV2l0aENvdmFyaWFudFJldHVyblR5cGUubG9nIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9hZGRNZXRob2RXaXRoQ292YXJpYW50UmV0dXJuVHlwZS5sb2cKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjBiNDAwMQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvYWRkTWV0aG9kV2l0aENvdmFyaWFudFJldHVyblR5cGUubG9nCkBAIC0wLDAgKzEsMTQgQEAKK0NsZWFuaW5nIG91dHB1dCBmaWxlczoKK291dC9wcm9kdWN0aW9uL0FkZE1ldGhvZFdpdGhDb3ZhcmlhbnRSZXR1cm5UeXBlL0Jhc2VTZXJ2ZXIuY2xhc3MKK291dC9wcm9kdWN0aW9uL0FkZE1ldGhvZFdpdGhDb3ZhcmlhbnRSZXR1cm5UeXBlL0NsaWVudC5jbGFzcworRW5kIG9mIGZpbGVzCitDb21waWxpbmcgZmlsZXM6CitzcmMvQmFzZVNlcnZlci5qYXZhCitzcmMvQ2xpZW50LmphdmEKK0VuZCBvZiBmaWxlcworQ2xlYW5pbmcgb3V0cHV0IGZpbGVzOgorb3V0L3Byb2R1Y3Rpb24vQWRkTWV0aG9kV2l0aENvdmFyaWFudFJldHVyblR5cGUvU2VydmVyLmNsYXNzCitFbmQgb2YgZmlsZXMKK0NvbXBpbGluZyBmaWxlczoKK3NyYy9TZXJ2ZXIuamF2YQorRW5kIG9mIGZpbGVzCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2FkZE1ldGhvZFdpdGhDb3ZhcmlhbnRSZXR1cm5UeXBlL0Jhc2VTZXJ2ZXIuamF2YS5uZXcgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2FkZE1ldGhvZFdpdGhDb3ZhcmlhbnRSZXR1cm5UeXBlL0Jhc2VTZXJ2ZXIuamF2YS5uZXcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2U4N2FlNQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvYWRkTWV0aG9kV2l0aENvdmFyaWFudFJldHVyblR5cGUvQmFzZVNlcnZlci5qYXZhLm5ldwpAQCAtMCwwICsxLDUgQEAKK3B1YmxpYyBjbGFzcyBCYXNlU2VydmVyIHsKKyAgcHVibGljIEVsZW1lbnQgbWV0aG9kKCkgeworICAgIHJldHVybiBuZXcgRWxlbWVudCgpOworICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2FkZE1ldGhvZFdpdGhDb3ZhcmlhbnRSZXR1cm5UeXBlL0NsaWVudC5qYXZhLm5ldyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvYWRkTWV0aG9kV2l0aENvdmFyaWFudFJldHVyblR5cGUvQ2xpZW50LmphdmEubmV3Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk2M2Q3OWEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2FkZE1ldGhvZFdpdGhDb3ZhcmlhbnRSZXR1cm5UeXBlL0NsaWVudC5qYXZhLm5ldwpAQCAtMCwwICsxLDcgQEAKK3B1YmxpYyBjbGFzcyBDbGllbnQgeworCisgIHB1YmxpYyB2b2lkIGZvbyhCYXNlU2VydmVyIHNlcnZlcikgeworICAgIEVsZW1lbnQgZWxlbSA9IHNlcnZlci5tZXRob2QoKTsKKyAgfQorCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9hZGRNZXRob2RXaXRoQ292YXJpYW50UmV0dXJuVHlwZS9kYXRhLnhtbCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvYWRkTWV0aG9kV2l0aENvdmFyaWFudFJldHVyblR5cGUvZGF0YS54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzU1NWQ5NgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvYWRkTWV0aG9kV2l0aENvdmFyaWFudFJldHVyblR5cGUvZGF0YS54bWwKQEAgLTAsMCArMSwxMyBAQAorPHRlc3REYXRhPgorCisgIDxkZWxldGVkX2J5X21ha2U+CisgICAgPGZpbGUgcGF0aD0iY2xhc3Nlcy9CYXNlU2VydmVyLmNsYXNzIiAvPgorICAgIDxmaWxlIHBhdGg9ImNsYXNzZXMvQ2xpZW50LmNsYXNzIiAvPgorICAgIDxmaWxlIHBhdGg9ImNsYXNzZXMvU2VydmVyLmNsYXNzIiAvPgorICA8L2RlbGV0ZWRfYnlfbWFrZT4KKworICA8cmVjb21waWxlPgorICAgIDxmaWxlIHBhdGg9InNvdXJjZS9TZXJ2ZXIuamF2YSIgLz4KKyAgPC9yZWNvbXBpbGU+CisKKzwvdGVzdERhdGE+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9hZGRNZXRob2RXaXRoQ292YXJpYW50UmV0dXJuVHlwZS9zcmMvQmFzZVNlcnZlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9hZGRNZXRob2RXaXRoQ292YXJpYW50UmV0dXJuVHlwZS9zcmMvQmFzZVNlcnZlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMzZjliN2IKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2FkZE1ldGhvZFdpdGhDb3ZhcmlhbnRSZXR1cm5UeXBlL3NyYy9CYXNlU2VydmVyLmphdmEKQEAgLTAsMCArMSwyIEBACitwdWJsaWMgY2xhc3MgQmFzZVNlcnZlciB7Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2FkZE1ldGhvZFdpdGhDb3ZhcmlhbnRSZXR1cm5UeXBlL3NyYy9DbGllbnQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvYWRkTWV0aG9kV2l0aENvdmFyaWFudFJldHVyblR5cGUvc3JjL0NsaWVudC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZkNmZlNmEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2FkZE1ldGhvZFdpdGhDb3ZhcmlhbnRSZXR1cm5UeXBlL3NyYy9DbGllbnQuamF2YQpAQCAtMCwwICsxLDcgQEAKK3B1YmxpYyBjbGFzcyBDbGllbnQgeworCisgIHB1YmxpYyB2b2lkIGZvbyhTZXJ2ZXIgc2VydmVyKSB7CisgICAgRWxlbWVudCBlbGVtID0gc2VydmVyLm1ldGhvZCgpOworICB9CisKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2FkZE1ldGhvZFdpdGhDb3ZhcmlhbnRSZXR1cm5UeXBlL3NyYy9FbGVtZW50LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2FkZE1ldGhvZFdpdGhDb3ZhcmlhbnRSZXR1cm5UeXBlL3NyYy9FbGVtZW50LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjI5YTBhNwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvYWRkTWV0aG9kV2l0aENvdmFyaWFudFJldHVyblR5cGUvc3JjL0VsZW1lbnQuamF2YQpAQCAtMCwwICsxLDIgQEAKK3B1YmxpYyBjbGFzcyBFbGVtZW50IHsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2FkZE1ldGhvZFdpdGhDb3ZhcmlhbnRSZXR1cm5UeXBlL3NyYy9TZXJ2ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvYWRkTWV0aG9kV2l0aENvdmFyaWFudFJldHVyblR5cGUvc3JjL1NlcnZlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQyZTJiMWIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2FkZE1ldGhvZFdpdGhDb3ZhcmlhbnRSZXR1cm5UeXBlL3NyYy9TZXJ2ZXIuamF2YQpAQCAtMCwwICsxLDUgQEAKK3B1YmxpYyBjbGFzcyBTZXJ2ZXIgZXh0ZW5kcyBCYXNlU2VydmVyIHsKKyAgcHVibGljIFN1YkVsZW1lbnQgbWV0aG9kKCkgeworICAgIHJldHVybiBuZXcgU3ViRWxlbWVudCgpOworICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2FkZE1ldGhvZFdpdGhDb3ZhcmlhbnRSZXR1cm5UeXBlL3NyYy9TdWJFbGVtZW50LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2FkZE1ldGhvZFdpdGhDb3ZhcmlhbnRSZXR1cm5UeXBlL3NyYy9TdWJFbGVtZW50LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjljNTE5YjQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2FkZE1ldGhvZFdpdGhDb3ZhcmlhbnRSZXR1cm5UeXBlL3NyYy9TdWJFbGVtZW50LmphdmEKQEAgLTAsMCArMSwyIEBACitwdWJsaWMgY2xhc3MgU3ViRWxlbWVudCBleHRlbmRzIEVsZW1lbnQgeworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvYWRkTWV0aG9kV2l0aEluY29tcGF0aWJsZVJldHVyblR5cGUubG9nIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9hZGRNZXRob2RXaXRoSW5jb21wYXRpYmxlUmV0dXJuVHlwZS5sb2cKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGFhZjJhMgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvYWRkTWV0aG9kV2l0aEluY29tcGF0aWJsZVJldHVyblR5cGUubG9nCkBAIC0wLDAgKzEsMTIgQEAKK0NsZWFuaW5nIG91dHB1dCBmaWxlczoKK291dC9wcm9kdWN0aW9uL0FkZE1ldGhvZFdpdGhJbmNvbXBhdGlibGVSZXR1cm5UeXBlL0Jhc2VTZXJ2ZXIuY2xhc3MKK0VuZCBvZiBmaWxlcworQ29tcGlsaW5nIGZpbGVzOgorc3JjL0Jhc2VTZXJ2ZXIuamF2YQorRW5kIG9mIGZpbGVzCitDbGVhbmluZyBvdXRwdXQgZmlsZXM6CitvdXQvcHJvZHVjdGlvbi9BZGRNZXRob2RXaXRoSW5jb21wYXRpYmxlUmV0dXJuVHlwZS9TZXJ2ZXIuY2xhc3MKK0VuZCBvZiBmaWxlcworQ29tcGlsaW5nIGZpbGVzOgorc3JjL1NlcnZlci5qYXZhCitFbmQgb2YgZmlsZXMKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvYWRkTWV0aG9kV2l0aEluY29tcGF0aWJsZVJldHVyblR5cGUvQmFzZVNlcnZlci5qYXZhLm5ldyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvYWRkTWV0aG9kV2l0aEluY29tcGF0aWJsZVJldHVyblR5cGUvQmFzZVNlcnZlci5qYXZhLm5ldwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MDlkYWY0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9hZGRNZXRob2RXaXRoSW5jb21wYXRpYmxlUmV0dXJuVHlwZS9CYXNlU2VydmVyLmphdmEubmV3CkBAIC0wLDAgKzEsNSBAQAorcHVibGljIGNsYXNzIEJhc2VTZXJ2ZXIgeworICBwdWJsaWMgU3RyaW5nIG1ldGhvZCgpIHsKKyAgICByZXR1cm4gInRlc3QiOworICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2FkZE1ldGhvZFdpdGhJbmNvbXBhdGlibGVSZXR1cm5UeXBlL2RhdGEueG1sIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9hZGRNZXRob2RXaXRoSW5jb21wYXRpYmxlUmV0dXJuVHlwZS9kYXRhLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NTk3ODFlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9hZGRNZXRob2RXaXRoSW5jb21wYXRpYmxlUmV0dXJuVHlwZS9kYXRhLnhtbApAQCAtMCwwICsxLDEyIEBACis8dGVzdERhdGE+CisKKyAgPGRlbGV0ZWRfYnlfbWFrZT4KKyAgICA8ZmlsZSBwYXRoPSJjbGFzc2VzL0Jhc2VTZXJ2ZXIuY2xhc3MiIC8+CisgICAgPGZpbGUgcGF0aD0iY2xhc3Nlcy9TZXJ2ZXIuY2xhc3MiIC8+CisgIDwvZGVsZXRlZF9ieV9tYWtlPgorCisgIDxyZWNvbXBpbGU+CisgICAgPGZpbGUgcGF0aD0ic291cmNlL1NlcnZlci5qYXZhIiAvPgorICA8L3JlY29tcGlsZT4KKworPC90ZXN0RGF0YT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2FkZE1ldGhvZFdpdGhJbmNvbXBhdGlibGVSZXR1cm5UeXBlL3NyYy9CYXNlU2VydmVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2FkZE1ldGhvZFdpdGhJbmNvbXBhdGlibGVSZXR1cm5UeXBlL3NyYy9CYXNlU2VydmVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzNmOWI3YgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvYWRkTWV0aG9kV2l0aEluY29tcGF0aWJsZVJldHVyblR5cGUvc3JjL0Jhc2VTZXJ2ZXIuamF2YQpAQCAtMCwwICsxLDIgQEAKK3B1YmxpYyBjbGFzcyBCYXNlU2VydmVyIHsKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvYWRkTWV0aG9kV2l0aEluY29tcGF0aWJsZVJldHVyblR5cGUvc3JjL1NlcnZlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9hZGRNZXRob2RXaXRoSW5jb21wYXRpYmxlUmV0dXJuVHlwZS9zcmMvU2VydmVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2I3OGVjYwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvYWRkTWV0aG9kV2l0aEluY29tcGF0aWJsZVJldHVyblR5cGUvc3JjL1NlcnZlci5qYXZhCkBAIC0wLDAgKzEsNSBAQAorcHVibGljIGNsYXNzIFNlcnZlciBleHRlbmRzIEJhc2VTZXJ2ZXIgeworICBwdWJsaWMgSW50ZWdlciBtZXRob2QoKSB7CisgICAgcmV0dXJuIG5ldyBJbnRlZ2VyKDEwKTsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9hZGRNb3JlQWNjZXNzaWJsZU1ldGhvZFRvQmFzZS5sb2cgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2FkZE1vcmVBY2Nlc3NpYmxlTWV0aG9kVG9CYXNlLmxvZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NjM2YmIwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9hZGRNb3JlQWNjZXNzaWJsZU1ldGhvZFRvQmFzZS5sb2cKQEAgLTAsMCArMSwxMiBAQAorQ2xlYW5pbmcgb3V0cHV0IGZpbGVzOgorb3V0L3Byb2R1Y3Rpb24vQWRkTW9yZUFjY2Vzc2libGVNZXRob2RUb0Jhc2UvQmFzZVNlcnZlci5jbGFzcworRW5kIG9mIGZpbGVzCitDb21waWxpbmcgZmlsZXM6CitzcmMvQmFzZVNlcnZlci5qYXZhCitFbmQgb2YgZmlsZXMKK0NsZWFuaW5nIG91dHB1dCBmaWxlczoKK291dC9wcm9kdWN0aW9uL0FkZE1vcmVBY2Nlc3NpYmxlTWV0aG9kVG9CYXNlL1NlcnZlci5jbGFzcworRW5kIG9mIGZpbGVzCitDb21waWxpbmcgZmlsZXM6CitzcmMvU2VydmVyLmphdmEKK0VuZCBvZiBmaWxlcwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9hZGRNb3JlQWNjZXNzaWJsZU1ldGhvZFRvQmFzZS9CYXNlU2VydmVyLmphdmEubmV3IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9hZGRNb3JlQWNjZXNzaWJsZU1ldGhvZFRvQmFzZS9CYXNlU2VydmVyLmphdmEubmV3Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAxMWE5MjIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2FkZE1vcmVBY2Nlc3NpYmxlTWV0aG9kVG9CYXNlL0Jhc2VTZXJ2ZXIuamF2YS5uZXcKQEAgLTAsMCArMSw1IEBACitwdWJsaWMgY2xhc3MgQmFzZVNlcnZlciB7CisgIHB1YmxpYyBJbnRlZ2VyIG1ldGhvZCgpIHsKKyAgICByZXR1cm4gbmV3IEludGVnZXIoMCk7CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvYWRkTW9yZUFjY2Vzc2libGVNZXRob2RUb0Jhc2UvZGF0YS54bWwgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2FkZE1vcmVBY2Nlc3NpYmxlTWV0aG9kVG9CYXNlL2RhdGEueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU1OTc4MWUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2FkZE1vcmVBY2Nlc3NpYmxlTWV0aG9kVG9CYXNlL2RhdGEueG1sCkBAIC0wLDAgKzEsMTIgQEAKKzx0ZXN0RGF0YT4KKworICA8ZGVsZXRlZF9ieV9tYWtlPgorICAgIDxmaWxlIHBhdGg9ImNsYXNzZXMvQmFzZVNlcnZlci5jbGFzcyIgLz4KKyAgICA8ZmlsZSBwYXRoPSJjbGFzc2VzL1NlcnZlci5jbGFzcyIgLz4KKyAgPC9kZWxldGVkX2J5X21ha2U+CisKKyAgPHJlY29tcGlsZT4KKyAgICA8ZmlsZSBwYXRoPSJzb3VyY2UvU2VydmVyLmphdmEiIC8+CisgIDwvcmVjb21waWxlPgorCis8L3Rlc3REYXRhPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvYWRkTW9yZUFjY2Vzc2libGVNZXRob2RUb0Jhc2Uvc3JjL0Jhc2VTZXJ2ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvYWRkTW9yZUFjY2Vzc2libGVNZXRob2RUb0Jhc2Uvc3JjL0Jhc2VTZXJ2ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zM2Y5YjdiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9hZGRNb3JlQWNjZXNzaWJsZU1ldGhvZFRvQmFzZS9zcmMvQmFzZVNlcnZlci5qYXZhCkBAIC0wLDAgKzEsMiBAQAorcHVibGljIGNsYXNzIEJhc2VTZXJ2ZXIgeworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9hZGRNb3JlQWNjZXNzaWJsZU1ldGhvZFRvQmFzZS9zcmMvU2VydmVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2FkZE1vcmVBY2Nlc3NpYmxlTWV0aG9kVG9CYXNlL3NyYy9TZXJ2ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mOTRkNmYzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9hZGRNb3JlQWNjZXNzaWJsZU1ldGhvZFRvQmFzZS9zcmMvU2VydmVyLmphdmEKQEAgLTAsMCArMSw1IEBACitwdWJsaWMgY2xhc3MgU2VydmVyIGV4dGVuZHMgQmFzZVNlcnZlciB7CisgIHByb3RlY3RlZCBJbnRlZ2VyIG1ldGhvZCgpIHsKKyAgICByZXR1cm4gbmV3IEludGVnZXIoMTApOworICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2FkZE1vcmVTcGVjaWZpYy5sb2cgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2FkZE1vcmVTcGVjaWZpYy5sb2cKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDU1ZmUyNgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvYWRkTW9yZVNwZWNpZmljLmxvZwpAQCAtMCwwICsxLDEyIEBACitDbGVhbmluZyBvdXRwdXQgZmlsZXM6CitvdXQvcHJvZHVjdGlvbi9BZGRNb3JlU3BlY2lmaWMvU2VydmVyLmNsYXNzCitFbmQgb2YgZmlsZXMKK0NvbXBpbGluZyBmaWxlczoKK3NyYy9TZXJ2ZXIuamF2YQorRW5kIG9mIGZpbGVzCitDbGVhbmluZyBvdXRwdXQgZmlsZXM6CitvdXQvcHJvZHVjdGlvbi9BZGRNb3JlU3BlY2lmaWMvQ2xpZW50LmNsYXNzCitFbmQgb2YgZmlsZXMKK0NvbXBpbGluZyBmaWxlczoKK3NyYy9DbGllbnQuamF2YQorRW5kIG9mIGZpbGVzCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2FkZE1vcmVTcGVjaWZpYy9TZXJ2ZXIuamF2YS5uZXcgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2FkZE1vcmVTcGVjaWZpYy9TZXJ2ZXIuamF2YS5uZXcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGY1MTM5YgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvYWRkTW9yZVNwZWNpZmljL1NlcnZlci5qYXZhLm5ldwpAQCAtMCwwICsxLDUgQEAKK2NsYXNzIFNlcnZlcnsKKyAgdm9pZCBmb28oT2JqZWN0IG8pe30KKworICB2b2lkIGZvbyhTdHJpbmcgcyl7fQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvYWRkTW9yZVNwZWNpZmljL2RhdGEueG1sIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9hZGRNb3JlU3BlY2lmaWMvZGF0YS54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmE4ODZkNAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvYWRkTW9yZVNwZWNpZmljL2RhdGEueG1sCkBAIC0wLDAgKzEsMTAgQEAKKzx0ZXN0RGF0YT4KKyAgPGRlbGV0ZWRfYnlfbWFrZT4KKyAgICA8ZmlsZSBwYXRoPSJjbGFzc2VzL1NlcnZlci5jbGFzcyIgLz4KKyAgICA8ZmlsZSBwYXRoPSJjbGFzc2VzL0NsaWVudC5jbGFzcyIgLz4KKyAgPC9kZWxldGVkX2J5X21ha2U+CisKKyAgPHJlY29tcGlsZT4KKyAgICA8ZmlsZSBwYXRoPSJzb3VyY2UvQ2xpZW50LmphdmEiIC8+CisgIDwvcmVjb21waWxlPgorPC90ZXN0RGF0YT4KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvYWRkTW9yZVNwZWNpZmljL3NyYy9DbGllbnQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvYWRkTW9yZVNwZWNpZmljL3NyYy9DbGllbnQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZWUwZjVjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9hZGRNb3JlU3BlY2lmaWMvc3JjL0NsaWVudC5qYXZhCkBAIC0wLDAgKzEsNSBAQAorY2xhc3MgQ2xpZW50eworICB7CisgICAgbmV3IFNlcnZlcigpLmZvbygiYWFhIik7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2FkZE1vcmVTcGVjaWZpYy9zcmMvU2VydmVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2FkZE1vcmVTcGVjaWZpYy9zcmMvU2VydmVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjQxNzc4OAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvYWRkTW9yZVNwZWNpZmljL3NyYy9TZXJ2ZXIuamF2YQpAQCAtMCwwICsxLDMgQEAKK2NsYXNzIFNlcnZlcnsKKyAgdm9pZCBmb28oT2JqZWN0IG8pe30KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2FkZE1vcmVTcGVjaWZpYzEubG9nIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9hZGRNb3JlU3BlY2lmaWMxLmxvZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mODBmZjM5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9hZGRNb3JlU3BlY2lmaWMxLmxvZwpAQCAtMCwwICsxLDEyIEBACitDbGVhbmluZyBvdXRwdXQgZmlsZXM6CitvdXQvcHJvZHVjdGlvbi9BZGRNb3JlU3BlY2lmaWMxL0Rlcml2ZWQuY2xhc3MKK0VuZCBvZiBmaWxlcworQ29tcGlsaW5nIGZpbGVzOgorc3JjL0Rlcml2ZWQuamF2YQorRW5kIG9mIGZpbGVzCitDbGVhbmluZyBvdXRwdXQgZmlsZXM6CitvdXQvcHJvZHVjdGlvbi9BZGRNb3JlU3BlY2lmaWMxL0NsaWVudC5jbGFzcworRW5kIG9mIGZpbGVzCitDb21waWxpbmcgZmlsZXM6CitzcmMvQ2xpZW50LmphdmEKK0VuZCBvZiBmaWxlcwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9hZGRNb3JlU3BlY2lmaWMxL0Rlcml2ZWQuamF2YS5uZXcgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2FkZE1vcmVTcGVjaWZpYzEvRGVyaXZlZC5qYXZhLm5ldwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZTU1NGQ1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9hZGRNb3JlU3BlY2lmaWMxL0Rlcml2ZWQuamF2YS5uZXcKQEAgLTAsMCArMSwzIEBACitjbGFzcyBEZXJpdmVkIGV4dGVuZHMgQmFzZXsKKyAgdm9pZCBmb28oU3RyaW5nIHMpIHt9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2FkZE1vcmVTcGVjaWZpYzEvZGF0YS54bWwgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2FkZE1vcmVTcGVjaWZpYzEvZGF0YS54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWRhOGM0ZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvYWRkTW9yZVNwZWNpZmljMS9kYXRhLnhtbApAQCAtMCwwICsxLDEwIEBACis8dGVzdERhdGE+CisgIDxkZWxldGVkX2J5X21ha2U+CisgICAgPGZpbGUgcGF0aD0iY2xhc3Nlcy9EZXJpdmVkLmNsYXNzIiAvPgorICAgIDxmaWxlIHBhdGg9ImNsYXNzZXMvQ2xpZW50LmNsYXNzIiAvPgorICA8L2RlbGV0ZWRfYnlfbWFrZT4KKworICA8cmVjb21waWxlPgorICAgIDxmaWxlIHBhdGg9InNvdXJjZS9DbGllbnQuamF2YSIgLz4KKyAgPC9yZWNvbXBpbGU+Cis8L3Rlc3REYXRhPgpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9hZGRNb3JlU3BlY2lmaWMxL3NyYy9CYXNlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2FkZE1vcmVTcGVjaWZpYzEvc3JjL0Jhc2UuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ODljNmFhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9hZGRNb3JlU3BlY2lmaWMxL3NyYy9CYXNlLmphdmEKQEAgLTAsMCArMSwzIEBACitjbGFzcyBCYXNleworICB2b2lkIGZvbyhPYmplY3Qgbyl7fQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvYWRkTW9yZVNwZWNpZmljMS9zcmMvQ2xpZW50LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2FkZE1vcmVTcGVjaWZpYzEvc3JjL0NsaWVudC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcwYTcwMzYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2FkZE1vcmVTcGVjaWZpYzEvc3JjL0NsaWVudC5qYXZhCkBAIC0wLDAgKzEsNSBAQAorY2xhc3MgQ2xpZW50eworICB7CisgICAgbmV3IERlcml2ZWQoKS5mb28oImFhYSIpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9hZGRNb3JlU3BlY2lmaWMxL3NyYy9EZXJpdmVkLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2FkZE1vcmVTcGVjaWZpYzEvc3JjL0Rlcml2ZWQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNWFkZDRiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9hZGRNb3JlU3BlY2lmaWMxL3NyYy9EZXJpdmVkLmphdmEKQEAgLTAsMCArMSwyIEBACitjbGFzcyBEZXJpdmVkIGV4dGVuZHMgQmFzZXsKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvYWRkTW9yZVNwZWNpZmljMi5sb2cgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2FkZE1vcmVTcGVjaWZpYzIubG9nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMzYWVhMzMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2FkZE1vcmVTcGVjaWZpYzIubG9nCkBAIC0wLDAgKzEsMTIgQEAKK0NsZWFuaW5nIG91dHB1dCBmaWxlczoKK291dC9wcm9kdWN0aW9uL0FkZE1vcmVTcGVjaWZpYzIvQmFzZS5jbGFzcworRW5kIG9mIGZpbGVzCitDb21waWxpbmcgZmlsZXM6CitzcmMvQmFzZS5qYXZhCitFbmQgb2YgZmlsZXMKK0NsZWFuaW5nIG91dHB1dCBmaWxlczoKK291dC9wcm9kdWN0aW9uL0FkZE1vcmVTcGVjaWZpYzIvQ2xpZW50LmNsYXNzCitFbmQgb2YgZmlsZXMKK0NvbXBpbGluZyBmaWxlczoKK3NyYy9DbGllbnQuamF2YQorRW5kIG9mIGZpbGVzCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2FkZE1vcmVTcGVjaWZpYzIvQmFzZS5qYXZhLm5ldyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvYWRkTW9yZVNwZWNpZmljMi9CYXNlLmphdmEubmV3Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZkOWFjNzcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2FkZE1vcmVTcGVjaWZpYzIvQmFzZS5qYXZhLm5ldwpAQCAtMCwwICsxLDMgQEAKK2NsYXNzIEJhc2V7CisgIHZvaWQgZm9vKFN0cmluZyBzKXt9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9hZGRNb3JlU3BlY2lmaWMyL2RhdGEueG1sIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9hZGRNb3JlU3BlY2lmaWMyL2RhdGEueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU3MWM3OTMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2FkZE1vcmVTcGVjaWZpYzIvZGF0YS54bWwKQEAgLTAsMCArMSwxMCBAQAorPHRlc3REYXRhPgorICA8ZGVsZXRlZF9ieV9tYWtlPgorICAgIDxmaWxlIHBhdGg9ImNsYXNzZXMvQmFzZS5jbGFzcyIgLz4KKyAgICA8ZmlsZSBwYXRoPSJjbGFzc2VzL0NsaWVudC5jbGFzcyIgLz4KKyAgPC9kZWxldGVkX2J5X21ha2U+CisKKyAgPHJlY29tcGlsZT4KKyAgICA8ZmlsZSBwYXRoPSJzb3VyY2UvQ2xpZW50LmphdmEiIC8+CisgIDwvcmVjb21waWxlPgorPC90ZXN0RGF0YT4KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvYWRkTW9yZVNwZWNpZmljMi9zcmMvQmFzZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9hZGRNb3JlU3BlY2lmaWMyL3NyYy9CYXNlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGQ1NTE0YgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvYWRkTW9yZVNwZWNpZmljMi9zcmMvQmFzZS5qYXZhCkBAIC0wLDAgKzEsMiBAQAorY2xhc3MgQmFzZXsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2FkZE1vcmVTcGVjaWZpYzIvc3JjL0NsaWVudC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9hZGRNb3JlU3BlY2lmaWMyL3NyYy9DbGllbnQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MGE3MDM2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9hZGRNb3JlU3BlY2lmaWMyL3NyYy9DbGllbnQuamF2YQpAQCAtMCwwICsxLDUgQEAKK2NsYXNzIENsaWVudHsKKyAgeworICAgIG5ldyBEZXJpdmVkKCkuZm9vKCJhYWEiKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvYWRkTW9yZVNwZWNpZmljMi9zcmMvRGVyaXZlZC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9hZGRNb3JlU3BlY2lmaWMyL3NyYy9EZXJpdmVkLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjUxM2EyZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvYWRkTW9yZVNwZWNpZmljMi9zcmMvRGVyaXZlZC5qYXZhCkBAIC0wLDAgKzEsMyBAQAorY2xhc3MgRGVyaXZlZCBleHRlbmRzIEJhc2V7CisgIHZvaWQgZm9vKE9iamVjdCBvKXt9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2FkZE5vblN0YXRpY01ldGhvZEhhdmluZ1N0YXRpY01ldGhvZEluU3ViY2xhc3MubG9nIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9hZGROb25TdGF0aWNNZXRob2RIYXZpbmdTdGF0aWNNZXRob2RJblN1YmNsYXNzLmxvZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNzc0YjcwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9hZGROb25TdGF0aWNNZXRob2RIYXZpbmdTdGF0aWNNZXRob2RJblN1YmNsYXNzLmxvZwpAQCAtMCwwICsxLDEyIEBACitDbGVhbmluZyBvdXRwdXQgZmlsZXM6CitvdXQvcHJvZHVjdGlvbi9BZGROb25TdGF0aWNNZXRob2RIYXZpbmdTdGF0aWNNZXRob2RJblN1YmNsYXNzL0Jhc2VTZXJ2ZXIuY2xhc3MKK0VuZCBvZiBmaWxlcworQ29tcGlsaW5nIGZpbGVzOgorc3JjL0Jhc2VTZXJ2ZXIuamF2YQorRW5kIG9mIGZpbGVzCitDbGVhbmluZyBvdXRwdXQgZmlsZXM6CitvdXQvcHJvZHVjdGlvbi9BZGROb25TdGF0aWNNZXRob2RIYXZpbmdTdGF0aWNNZXRob2RJblN1YmNsYXNzL1NlcnZlci5jbGFzcworRW5kIG9mIGZpbGVzCitDb21waWxpbmcgZmlsZXM6CitzcmMvU2VydmVyLmphdmEKK0VuZCBvZiBmaWxlcwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9hZGROb25TdGF0aWNNZXRob2RIYXZpbmdTdGF0aWNNZXRob2RJblN1YmNsYXNzL0Jhc2VTZXJ2ZXIuamF2YS5uZXcgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2FkZE5vblN0YXRpY01ldGhvZEhhdmluZ1N0YXRpY01ldGhvZEluU3ViY2xhc3MvQmFzZVNlcnZlci5qYXZhLm5ldwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYmZiYTRhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9hZGROb25TdGF0aWNNZXRob2RIYXZpbmdTdGF0aWNNZXRob2RJblN1YmNsYXNzL0Jhc2VTZXJ2ZXIuamF2YS5uZXcKQEAgLTAsMCArMSw1IEBACitwdWJsaWMgY2xhc3MgQmFzZVNlcnZlciB7CisgIHB1YmxpYyBJbnRlZ2VyIG1ldGhvZCgpIHsKKyAgICByZXR1cm4gbmV3IEludGVnZXIoMTApOworICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2FkZE5vblN0YXRpY01ldGhvZEhhdmluZ1N0YXRpY01ldGhvZEluU3ViY2xhc3MvZGF0YS54bWwgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2FkZE5vblN0YXRpY01ldGhvZEhhdmluZ1N0YXRpY01ldGhvZEluU3ViY2xhc3MvZGF0YS54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTU5NzgxZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvYWRkTm9uU3RhdGljTWV0aG9kSGF2aW5nU3RhdGljTWV0aG9kSW5TdWJjbGFzcy9kYXRhLnhtbApAQCAtMCwwICsxLDEyIEBACis8dGVzdERhdGE+CisKKyAgPGRlbGV0ZWRfYnlfbWFrZT4KKyAgICA8ZmlsZSBwYXRoPSJjbGFzc2VzL0Jhc2VTZXJ2ZXIuY2xhc3MiIC8+CisgICAgPGZpbGUgcGF0aD0iY2xhc3Nlcy9TZXJ2ZXIuY2xhc3MiIC8+CisgIDwvZGVsZXRlZF9ieV9tYWtlPgorCisgIDxyZWNvbXBpbGU+CisgICAgPGZpbGUgcGF0aD0ic291cmNlL1NlcnZlci5qYXZhIiAvPgorICA8L3JlY29tcGlsZT4KKworPC90ZXN0RGF0YT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2FkZE5vblN0YXRpY01ldGhvZEhhdmluZ1N0YXRpY01ldGhvZEluU3ViY2xhc3Mvc3JjL0Jhc2VTZXJ2ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvYWRkTm9uU3RhdGljTWV0aG9kSGF2aW5nU3RhdGljTWV0aG9kSW5TdWJjbGFzcy9zcmMvQmFzZVNlcnZlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMzZjliN2IKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2FkZE5vblN0YXRpY01ldGhvZEhhdmluZ1N0YXRpY01ldGhvZEluU3ViY2xhc3Mvc3JjL0Jhc2VTZXJ2ZXIuamF2YQpAQCAtMCwwICsxLDIgQEAKK3B1YmxpYyBjbGFzcyBCYXNlU2VydmVyIHsKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvYWRkTm9uU3RhdGljTWV0aG9kSGF2aW5nU3RhdGljTWV0aG9kSW5TdWJjbGFzcy9zcmMvU2VydmVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2FkZE5vblN0YXRpY01ldGhvZEhhdmluZ1N0YXRpY01ldGhvZEluU3ViY2xhc3Mvc3JjL1NlcnZlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcxMTAyOWIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2FkZE5vblN0YXRpY01ldGhvZEhhdmluZ1N0YXRpY01ldGhvZEluU3ViY2xhc3Mvc3JjL1NlcnZlci5qYXZhCkBAIC0wLDAgKzEsNSBAQAorcHVibGljIGNsYXNzIFNlcnZlciBleHRlbmRzIEJhc2VTZXJ2ZXIgeworICBwdWJsaWMgc3RhdGljIEludGVnZXIgbWV0aG9kKCkgeworICAgIHJldHVybiBuZXcgSW50ZWdlcigxMCk7CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvYWRkU3RhdGljRmllbGRUb0Rlcml2ZWQubG9nIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9hZGRTdGF0aWNGaWVsZFRvRGVyaXZlZC5sb2cKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjJkMDM2YwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvYWRkU3RhdGljRmllbGRUb0Rlcml2ZWQubG9nCkBAIC0wLDAgKzEsMTIgQEAKK0NsZWFuaW5nIG91dHB1dCBmaWxlczoKK291dC9wcm9kdWN0aW9uL0FkZFN0YXRpY0ZpZWxkVG9EZXJpdmVkL0Rlcml2ZWQuY2xhc3MKK0VuZCBvZiBmaWxlcworQ29tcGlsaW5nIGZpbGVzOgorc3JjL0Rlcml2ZWQuamF2YQorRW5kIG9mIGZpbGVzCitDbGVhbmluZyBvdXRwdXQgZmlsZXM6CitvdXQvcHJvZHVjdGlvbi9BZGRTdGF0aWNGaWVsZFRvRGVyaXZlZC9DbGllbnQuY2xhc3MKK0VuZCBvZiBmaWxlcworQ29tcGlsaW5nIGZpbGVzOgorc3JjL0NsaWVudC5qYXZhCitFbmQgb2YgZmlsZXMKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvYWRkU3RhdGljRmllbGRUb0Rlcml2ZWQvRGVyaXZlZC5qYXZhLm5ldyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvYWRkU3RhdGljRmllbGRUb0Rlcml2ZWQvRGVyaXZlZC5qYXZhLm5ldwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYjEzNzRhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9hZGRTdGF0aWNGaWVsZFRvRGVyaXZlZC9EZXJpdmVkLmphdmEubmV3CkBAIC0wLDAgKzEsMyBAQAorY2xhc3MgRGVyaXZlZCBleHRlbmRzIEJhc2UgeworICBwdWJsaWMgc3RhdGljIFN0cmluZyBteUZpZWxkID0gIkRlcml2ZWQubXlGaWVsZCI7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9hZGRTdGF0aWNGaWVsZFRvRGVyaXZlZC9kYXRhLnhtbCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvYWRkU3RhdGljRmllbGRUb0Rlcml2ZWQvZGF0YS54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDlmODU0OAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvYWRkU3RhdGljRmllbGRUb0Rlcml2ZWQvZGF0YS54bWwKQEAgLTAsMCArMSwxMCBAQAorPHRlc3REYXRhPgorICA8ZGVsZXRlZF9ieV9tYWtlPgorICAgIDxmaWxlIHBhdGg9ImNsYXNzZXMvRGVyaXZlZC5jbGFzcyIgLz4KKyAgICA8ZmlsZSBwYXRoPSJjbGFzc2VzL0NsaWVudC5jbGFzcyIgLz4KKyAgPC9kZWxldGVkX2J5X21ha2U+CisKKyAgPHJlY29tcGlsZT4KKyAgICA8ZmlsZSBwYXRoPSJzb3VyY2UvQ2xpZW50LmphdmEiIC8+CisgIDwvcmVjb21waWxlPgorPC90ZXN0RGF0YT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2FkZFN0YXRpY0ZpZWxkVG9EZXJpdmVkL3NyYy9CYXNlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2FkZFN0YXRpY0ZpZWxkVG9EZXJpdmVkL3NyYy9CYXNlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjk4NzUyZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvYWRkU3RhdGljRmllbGRUb0Rlcml2ZWQvc3JjL0Jhc2UuamF2YQpAQCAtMCwwICsxLDMgQEAKK2NsYXNzIEJhc2UgeworIFN0cmluZyBteUZpZWxkID0gIkJhc2UubXlGaWVsZCI7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9hZGRTdGF0aWNGaWVsZFRvRGVyaXZlZC9zcmMvQ2xpZW50LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2FkZFN0YXRpY0ZpZWxkVG9EZXJpdmVkL3NyYy9DbGllbnQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYWQ2M2QyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9hZGRTdGF0aWNGaWVsZFRvRGVyaXZlZC9zcmMvQ2xpZW50LmphdmEKQEAgLTAsMCArMSw1IEBACitjbGFzcyBDbGllbnQgeworICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CisJCVN5c3RlbS5vdXQucHJpbnRsbihuZXcgRGVyaXZlZCgpLm15RmllbGQpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9hZGRTdGF0aWNGaWVsZFRvRGVyaXZlZC9zcmMvRGVyaXZlZC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9hZGRTdGF0aWNGaWVsZFRvRGVyaXZlZC9zcmMvRGVyaXZlZC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZmZGZhYjUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2FkZFN0YXRpY0ZpZWxkVG9EZXJpdmVkL3NyYy9EZXJpdmVkLmphdmEKQEAgLTAsMCArMSwyIEBACitjbGFzcyBEZXJpdmVkIGV4dGVuZHMgQmFzZSB7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9jaGFuZ2VNZXRob2RHZW5lcmljUmV0dXJuVHlwZS5sb2cgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2NoYW5nZU1ldGhvZEdlbmVyaWNSZXR1cm5UeXBlLmxvZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZWNhNTAwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9jaGFuZ2VNZXRob2RHZW5lcmljUmV0dXJuVHlwZS5sb2cKQEAgLTAsMCArMSwxMiBAQAorQ2xlYW5pbmcgb3V0cHV0IGZpbGVzOgorb3V0L3Byb2R1Y3Rpb24vQ2hhbmdlTWV0aG9kR2VuZXJpY1JldHVyblR5cGUvcGFja2FnZUEvSUZhY2UuY2xhc3MKK0VuZCBvZiBmaWxlcworQ29tcGlsaW5nIGZpbGVzOgorc3JjL3BhY2thZ2VBL0lGYWNlLmphdmEKK0VuZCBvZiBmaWxlcworQ2xlYW5pbmcgb3V0cHV0IGZpbGVzOgorb3V0L3Byb2R1Y3Rpb24vQ2hhbmdlTWV0aG9kR2VuZXJpY1JldHVyblR5cGUvcGFja2FnZUEvSUZhY2VJbXBsLmNsYXNzCitFbmQgb2YgZmlsZXMKK0NvbXBpbGluZyBmaWxlczoKK3NyYy9wYWNrYWdlQS9JRmFjZUltcGwuamF2YQorRW5kIG9mIGZpbGVzCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2NoYW5nZU1ldGhvZEdlbmVyaWNSZXR1cm5UeXBlL2RhdGEueG1sIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9jaGFuZ2VNZXRob2RHZW5lcmljUmV0dXJuVHlwZS9kYXRhLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45YzlhZGY3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9jaGFuZ2VNZXRob2RHZW5lcmljUmV0dXJuVHlwZS9kYXRhLnhtbApAQCAtMCwwICsxLDEyIEBACis8dGVzdERhdGE+CisKKyAgPGRlbGV0ZWRfYnlfbWFrZT4KKyAgICA8ZmlsZSBwYXRoPSJjbGFzc2VzL3BhY2thZ2VBL0lGYWNlLmNsYXNzIiAvPgorICAgIDxmaWxlIHBhdGg9ImNsYXNzZXMvcGFja2FnZUEvSUZhY2VJbXBsLmNsYXNzIiAvPgorICA8L2RlbGV0ZWRfYnlfbWFrZT4KKworICA8cmVjb21waWxlPgorICAgIDxmaWxlIHBhdGg9InNvdXJjZS9wYWNrYWdlQS9JRmFjZWltcGwuamF2YSIgLz4KKyAgPC9yZWNvbXBpbGU+CisKKzwvdGVzdERhdGE+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9jaGFuZ2VNZXRob2RHZW5lcmljUmV0dXJuVHlwZS9zcmMvcGFja2FnZUEvSUZhY2UuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvY2hhbmdlTWV0aG9kR2VuZXJpY1JldHVyblR5cGUvc3JjL3BhY2thZ2VBL0lGYWNlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDc3NTAxYgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvY2hhbmdlTWV0aG9kR2VuZXJpY1JldHVyblR5cGUvc3JjL3BhY2thZ2VBL0lGYWNlLmphdmEKQEAgLTAsMCArMSw2IEBACitwYWNrYWdlIHBhY2thZ2VBOworaW1wb3J0IGphdmEudXRpbC5MaXN0OworCitwdWJsaWMgaW50ZXJmYWNlIElGYWNlIHsKKyAgICBMaXN0PD8gZXh0ZW5kcyBJbmZvMT4gZ2V0S2V5cygpOworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9jaGFuZ2VNZXRob2RHZW5lcmljUmV0dXJuVHlwZS9zcmMvcGFja2FnZUEvSUZhY2UuamF2YS5uZXcgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2NoYW5nZU1ldGhvZEdlbmVyaWNSZXR1cm5UeXBlL3NyYy9wYWNrYWdlQS9JRmFjZS5qYXZhLm5ldwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYzQ0NTlmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9jaGFuZ2VNZXRob2RHZW5lcmljUmV0dXJuVHlwZS9zcmMvcGFja2FnZUEvSUZhY2UuamF2YS5uZXcKQEAgLTAsMCArMSw2IEBACitwYWNrYWdlIHBhY2thZ2VBOworaW1wb3J0IGphdmEudXRpbC5MaXN0OworCitwdWJsaWMgaW50ZXJmYWNlIElGYWNlIHsKKyAgICBMaXN0PD8gZXh0ZW5kcyBJbmZvMj4gZ2V0S2V5cygpOworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9jaGFuZ2VNZXRob2RHZW5lcmljUmV0dXJuVHlwZS9zcmMvcGFja2FnZUEvSUZhY2VJbXBsLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2NoYW5nZU1ldGhvZEdlbmVyaWNSZXR1cm5UeXBlL3NyYy9wYWNrYWdlQS9JRmFjZUltcGwuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wOGVmZmI3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9jaGFuZ2VNZXRob2RHZW5lcmljUmV0dXJuVHlwZS9zcmMvcGFja2FnZUEvSUZhY2VJbXBsLmphdmEKQEAgLTAsMCArMSwxMCBAQAorcGFja2FnZSBwYWNrYWdlQTsKKworaW1wb3J0IGphdmEudXRpbC5MaXN0OworCitwdWJsaWMgY2xhc3MgSUZhY2VJbXBsIGltcGxlbWVudHMgSUZhY2V7CisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIExpc3Q8PyBleHRlbmRzIEluZm8xPiBnZXRLZXlzKCkgeworICAgICAgICByZXR1cm4gbnVsbDsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2NoYW5nZU1ldGhvZEdlbmVyaWNSZXR1cm5UeXBlL3NyYy9wYWNrYWdlQS9JbmZvMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9jaGFuZ2VNZXRob2RHZW5lcmljUmV0dXJuVHlwZS9zcmMvcGFja2FnZUEvSW5mbzEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNDRmMjc4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9jaGFuZ2VNZXRob2RHZW5lcmljUmV0dXJuVHlwZS9zcmMvcGFja2FnZUEvSW5mbzEuamF2YQpAQCAtMCwwICsxLDQgQEAKK3BhY2thZ2UgcGFja2FnZUE7CisKK3B1YmxpYyBjbGFzcyBJbmZvMSB7Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2NoYW5nZU1ldGhvZEdlbmVyaWNSZXR1cm5UeXBlL3NyYy9wYWNrYWdlQS9JbmZvMi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9jaGFuZ2VNZXRob2RHZW5lcmljUmV0dXJuVHlwZS9zcmMvcGFja2FnZUEvSW5mbzIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41OTYzMWY4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9jaGFuZ2VNZXRob2RHZW5lcmljUmV0dXJuVHlwZS9zcmMvcGFja2FnZUEvSW5mbzIuamF2YQpAQCAtMCwwICsxLDQgQEAKK3BhY2thZ2UgcGFja2FnZUE7CisKK3B1YmxpYyBjbGFzcyBJbmZvMiB7Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2NoYW5nZVN0YXRpY01ldGhvZFNpZ25hdHVyZS5sb2cgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2NoYW5nZVN0YXRpY01ldGhvZFNpZ25hdHVyZS5sb2cKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWJhODcyZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvY2hhbmdlU3RhdGljTWV0aG9kU2lnbmF0dXJlLmxvZwpAQCAtMCwwICsxLDEyIEBACitDbGVhbmluZyBvdXRwdXQgZmlsZXM6CitvdXQvcHJvZHVjdGlvbi9DaGFuZ2VTdGF0aWNNZXRob2RTaWduYXR1cmUvcGFja2FnZUEvU2VydmVyLmNsYXNzCitFbmQgb2YgZmlsZXMKK0NvbXBpbGluZyBmaWxlczoKK3NyYy9wYWNrYWdlQS9TZXJ2ZXIuamF2YQorRW5kIG9mIGZpbGVzCitDbGVhbmluZyBvdXRwdXQgZmlsZXM6CitvdXQvcHJvZHVjdGlvbi9DaGFuZ2VTdGF0aWNNZXRob2RTaWduYXR1cmUvcGFja2FnZUEvQ2xpZW50LmNsYXNzCitFbmQgb2YgZmlsZXMKK0NvbXBpbGluZyBmaWxlczoKK3NyYy9wYWNrYWdlQS9DbGllbnQuamF2YQorRW5kIG9mIGZpbGVzCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2NoYW5nZVN0YXRpY01ldGhvZFNpZ25hdHVyZS9kYXRhLnhtbCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvY2hhbmdlU3RhdGljTWV0aG9kU2lnbmF0dXJlL2RhdGEueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY0MWMzNjEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2NoYW5nZVN0YXRpY01ldGhvZFNpZ25hdHVyZS9kYXRhLnhtbApAQCAtMCwwICsxLDEyIEBACis8dGVzdERhdGE+CisKKyAgPGRlbGV0ZWRfYnlfbWFrZT4KKyAgICA8ZmlsZSBwYXRoPSJjbGFzc2VzL3BhY2thZ2VBL1NlcnZlci5jbGFzcyIgLz4KKyAgICA8ZmlsZSBwYXRoPSJjbGFzc2VzL3BhY2thZ2VBL0NsaWVudC5jbGFzcyIgLz4KKyAgPC9kZWxldGVkX2J5X21ha2U+CisKKyAgPHJlY29tcGlsZT4KKyAgICA8ZmlsZSBwYXRoPSJzb3VyY2UvcGFja2FnZUEvQ2xpZW50LmphdmEiIC8+CisgIDwvcmVjb21waWxlPgorCis8L3Rlc3REYXRhPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvY2hhbmdlU3RhdGljTWV0aG9kU2lnbmF0dXJlL3NyYy9wYWNrYWdlQS9DbGllbnQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvY2hhbmdlU3RhdGljTWV0aG9kU2lnbmF0dXJlL3NyYy9wYWNrYWdlQS9DbGllbnQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZmIxYWI5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9jaGFuZ2VTdGF0aWNNZXRob2RTaWduYXR1cmUvc3JjL3BhY2thZ2VBL0NsaWVudC5qYXZhCkBAIC0wLDAgKzEsNyBAQAorcGFja2FnZSBwYWNrYWdlQTsKKworcHVibGljIGNsYXNzIENsaWVudCB7CisgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKKyAgICBTZXJ2ZXIubWV0aG9kKCk7CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvY2hhbmdlU3RhdGljTWV0aG9kU2lnbmF0dXJlL3NyYy9wYWNrYWdlQS9TZXJ2ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvY2hhbmdlU3RhdGljTWV0aG9kU2lnbmF0dXJlL3NyYy9wYWNrYWdlQS9TZXJ2ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZmFkNWEzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9jaGFuZ2VTdGF0aWNNZXRob2RTaWduYXR1cmUvc3JjL3BhY2thZ2VBL1NlcnZlci5qYXZhCkBAIC0wLDAgKzEsNiBAQAorcGFja2FnZSBwYWNrYWdlQTsKKworcHVibGljIGNsYXNzIFNlcnZlciB7CisgIHB1YmxpYyBzdGF0aWMgdm9pZCBtZXRob2QoKSB7CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvY2hhbmdlU3RhdGljTWV0aG9kU2lnbmF0dXJlL3NyYy9wYWNrYWdlQS9TZXJ2ZXIuamF2YS5uZXcgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2NoYW5nZVN0YXRpY01ldGhvZFNpZ25hdHVyZS9zcmMvcGFja2FnZUEvU2VydmVyLmphdmEubmV3Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhlODhjNjcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2NoYW5nZVN0YXRpY01ldGhvZFNpZ25hdHVyZS9zcmMvcGFja2FnZUEvU2VydmVyLmphdmEubmV3CkBAIC0wLDAgKzEsNiBAQAorcGFja2FnZSBwYWNrYWdlQTsKKworcHVibGljIGNsYXNzIFNlcnZlciB7CisgIHB1YmxpYyBzdGF0aWMgdm9pZCBtZXRob2QoaW50IGEpIHsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9kZWxldGVDb25zdHJ1Y3Rvci5sb2cgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2RlbGV0ZUNvbnN0cnVjdG9yLmxvZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYWU5MzkwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9kZWxldGVDb25zdHJ1Y3Rvci5sb2cKQEAgLTAsMCArMSwxMiBAQAorQ2xlYW5pbmcgb3V0cHV0IGZpbGVzOgorb3V0L3Byb2R1Y3Rpb24vRGVsZXRlQ29uc3RydWN0b3IvU2VydmVyLmNsYXNzCitFbmQgb2YgZmlsZXMKK0NvbXBpbGluZyBmaWxlczoKK3NyYy9TZXJ2ZXIuamF2YQorRW5kIG9mIGZpbGVzCitDbGVhbmluZyBvdXRwdXQgZmlsZXM6CitvdXQvcHJvZHVjdGlvbi9EZWxldGVDb25zdHJ1Y3Rvci9DbGllbnQuY2xhc3MKK0VuZCBvZiBmaWxlcworQ29tcGlsaW5nIGZpbGVzOgorc3JjL0NsaWVudC5qYXZhCitFbmQgb2YgZmlsZXMKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvZGVsZXRlQ29uc3RydWN0b3IvU2VydmVyLmphdmEubmV3IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9kZWxldGVDb25zdHJ1Y3Rvci9TZXJ2ZXIuamF2YS5uZXcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWFjMDkxNQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvZGVsZXRlQ29uc3RydWN0b3IvU2VydmVyLmphdmEubmV3CkBAIC0wLDAgKzEsMiBAQAorY2xhc3MgU2VydmVyIHsKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvZGVsZXRlQ29uc3RydWN0b3IvZGF0YS54bWwgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2RlbGV0ZUNvbnN0cnVjdG9yL2RhdGEueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM4ZTdhOTkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2RlbGV0ZUNvbnN0cnVjdG9yL2RhdGEueG1sCkBAIC0wLDAgKzEsMTEgQEAKKzx0ZXN0RGF0YT4KKyAgPGRlbGV0ZWRfYnlfbWFrZT4KKyAgICA8ZmlsZSBwYXRoPSJjbGFzc2VzL1NlcnZlci5jbGFzcyIgLz4KKyAgICA8ZmlsZSBwYXRoPSJjbGFzc2VzL0NsaWVudC5jbGFzcyIgLz4KKyAgPC9kZWxldGVkX2J5X21ha2U+CisKKyAgPHJlY29tcGlsZT4KKyAgICA8ZmlsZSBwYXRoPSJzb3VyY2UvQ2xpZW50LmphdmEiIC8+CisgIDwvcmVjb21waWxlPgorCis8L3Rlc3REYXRhPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvZGVsZXRlQ29uc3RydWN0b3Ivc3JjL0NsaWVudC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9kZWxldGVDb25zdHJ1Y3Rvci9zcmMvQ2xpZW50LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmFhYTcwMAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvZGVsZXRlQ29uc3RydWN0b3Ivc3JjL0NsaWVudC5qYXZhCkBAIC0wLDAgKzEsNSBAQAorY2xhc3MgQ2xpZW50IHsKKyAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgeworICAgIG5ldyBTZXJ2ZXIoMTApOworICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2RlbGV0ZUNvbnN0cnVjdG9yL3NyYy9TZXJ2ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvZGVsZXRlQ29uc3RydWN0b3Ivc3JjL1NlcnZlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI4ZDZhZWYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2RlbGV0ZUNvbnN0cnVjdG9yL3NyYy9TZXJ2ZXIuamF2YQpAQCAtMCwwICsxLDQgQEAKK2NsYXNzIFNlcnZlciB7CisgIFNlcnZlcihpbnQgYSkgeworICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2RlbGV0ZUlubmVyLmxvZyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvZGVsZXRlSW5uZXIubG9nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBkMjBiYzUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2RlbGV0ZUlubmVyLmxvZwpAQCAtMCwwICsxLDEzIEBACitDbGVhbmluZyBvdXRwdXQgZmlsZXM6CitvdXQvcHJvZHVjdGlvbi9EZWxldGVJbm5lci9PdXRlciRJbm5lci5jbGFzcworb3V0L3Byb2R1Y3Rpb24vRGVsZXRlSW5uZXIvT3V0ZXIuY2xhc3MKK0VuZCBvZiBmaWxlcworQ29tcGlsaW5nIGZpbGVzOgorc3JjL091dGVyLmphdmEKK0VuZCBvZiBmaWxlcworQ2xlYW5pbmcgb3V0cHV0IGZpbGVzOgorb3V0L3Byb2R1Y3Rpb24vRGVsZXRlSW5uZXIvQ2xpZW50LmNsYXNzCitFbmQgb2YgZmlsZXMKK0NvbXBpbGluZyBmaWxlczoKK3NyYy9DbGllbnQuamF2YQorRW5kIG9mIGZpbGVzCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2RlbGV0ZUlubmVyL091dGVyLmphdmEubmV3IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9kZWxldGVJbm5lci9PdXRlci5qYXZhLm5ldwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43YzU1NTE2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9kZWxldGVJbm5lci9PdXRlci5qYXZhLm5ldwpAQCAtMCwwICsxLDMgQEAKKworcHVibGljIGNsYXNzIE91dGVyIHsKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvZGVsZXRlSW5uZXIvZGF0YS54bWwgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2RlbGV0ZUlubmVyL2RhdGEueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFiM2YyMTAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2RlbGV0ZUlubmVyL2RhdGEueG1sCkBAIC0wLDAgKzEsMTEgQEAKKzx0ZXN0RGF0YT4KKyAgPGRlbGV0ZWRfYnlfbWFrZT4KKyAgICA8ZmlsZSBwYXRoPSJjbGFzc2VzL091dGVyLmNsYXNzIiAvPgorICAgIDxmaWxlIHBhdGg9ImNsYXNzZXMvT3V0ZXIkSW5uZXIuY2xhc3MiIC8+CisgICAgPGZpbGUgcGF0aD0iY2xhc3Nlcy9DbGllbnQuY2xhc3MiIC8+CisgIDwvZGVsZXRlZF9ieV9tYWtlPgorCisgIDxyZWNvbXBpbGU+CisgICAgPGZpbGUgcGF0aD0ic291cmNlL0NsaWVudC5qYXZhIiAvPgorICA8L3JlY29tcGlsZT4KKzwvdGVzdERhdGE+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9kZWxldGVJbm5lci9zcmMvQ2xpZW50LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2RlbGV0ZUlubmVyL3NyYy9DbGllbnQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNTY4YWQ3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9kZWxldGVJbm5lci9zcmMvQ2xpZW50LmphdmEKQEAgLTAsMCArMSw0IEBACisKK3B1YmxpYyBjbGFzcyBDbGllbnQgeworICBPdXRlci5Jbm5lciBmaWVsZDsKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvZGVsZXRlSW5uZXIvc3JjL091dGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2RlbGV0ZUlubmVyL3NyYy9PdXRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlmNjQxZDQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2RlbGV0ZUlubmVyL3NyYy9PdXRlci5qYXZhCkBAIC0wLDAgKzEsNCBAQAorCitwdWJsaWMgY2xhc3MgT3V0ZXIgeworICBwdWJsaWMgc3RhdGljIGNsYXNzIElubmVyIHt9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2RlbGV0ZUludGVyZmFjZU1ldGhvZC5sb2cgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2RlbGV0ZUludGVyZmFjZU1ldGhvZC5sb2cKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmFhOWM1ZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvZGVsZXRlSW50ZXJmYWNlTWV0aG9kLmxvZwpAQCAtMCwwICsxLDE0IEBACitDbGVhbmluZyBvdXRwdXQgZmlsZXM6CitvdXQvcHJvZHVjdGlvbi9EZWxldGVJbnRlcmZhY2VNZXRob2QvSWZhY2UuY2xhc3MKK0VuZCBvZiBmaWxlcworQ29tcGlsaW5nIGZpbGVzOgorc3JjL0lmYWNlLmphdmEKK0VuZCBvZiBmaWxlcworQ2xlYW5pbmcgb3V0cHV0IGZpbGVzOgorb3V0L3Byb2R1Y3Rpb24vRGVsZXRlSW50ZXJmYWNlTWV0aG9kL0lmYWNlSW1wbC5jbGFzcworb3V0L3Byb2R1Y3Rpb24vRGVsZXRlSW50ZXJmYWNlTWV0aG9kL0lmYWNlSW1wbDIuY2xhc3MKK0VuZCBvZiBmaWxlcworQ29tcGlsaW5nIGZpbGVzOgorc3JjL0lmYWNlSW1wbC5qYXZhCitzcmMvSWZhY2VJbXBsMi5qYXZhCitFbmQgb2YgZmlsZXMKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvZGVsZXRlSW50ZXJmYWNlTWV0aG9kL0lmYWNlLmphdmEubmV3IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9kZWxldGVJbnRlcmZhY2VNZXRob2QvSWZhY2UuamF2YS5uZXcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjk1ZjBkNQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvZGVsZXRlSW50ZXJmYWNlTWV0aG9kL0lmYWNlLmphdmEubmV3CkBAIC0wLDAgKzEsMiBAQAorcHVibGljIGludGVyZmFjZSBJZmFjZSB7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9kZWxldGVJbnRlcmZhY2VNZXRob2QvZGF0YS54bWwgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2RlbGV0ZUludGVyZmFjZU1ldGhvZC9kYXRhLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZjdkMjU3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9kZWxldGVJbnRlcmZhY2VNZXRob2QvZGF0YS54bWwKQEAgLTAsMCArMSwxMiBAQAorPHRlc3REYXRhPgorICA8ZGVsZXRlZF9ieV9tYWtlPgorICAgIDxmaWxlIHBhdGg9ImNsYXNzZXMvSWZhY2VJbXBsLmNsYXNzIiAvPgorICAgIDxmaWxlIHBhdGg9ImNsYXNzZXMvSWZhY2VpbXBsMi5jbGFzcyIgLz4KKyAgPC9kZWxldGVkX2J5X21ha2U+CisKKyAgPHJlY29tcGlsZT4KKyAgICA8ZmlsZSBwYXRoPSJzb3VyY2UvSWZhY2VJbXBsLmphdmEiIC8+CisgICAgPGZpbGUgcGF0aD0ic291cmNlL0lmYWNlSW1wbDIuamF2YSIgLz4KKyAgPC9yZWNvbXBpbGU+CisKKzwvdGVzdERhdGE+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9kZWxldGVJbnRlcmZhY2VNZXRob2Qvc3JjL0lmYWNlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2RlbGV0ZUludGVyZmFjZU1ldGhvZC9zcmMvSWZhY2UuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hOTEyYTMxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9kZWxldGVJbnRlcmZhY2VNZXRob2Qvc3JjL0lmYWNlLmphdmEKQEAgLTAsMCArMSwzIEBACitwdWJsaWMgaW50ZXJmYWNlIElmYWNlIHsKKyB2b2lkIG1ldGhvZCgpOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvZGVsZXRlSW50ZXJmYWNlTWV0aG9kL3NyYy9JZmFjZUltcGwuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvZGVsZXRlSW50ZXJmYWNlTWV0aG9kL3NyYy9JZmFjZUltcGwuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yOWM3Yzg0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9kZWxldGVJbnRlcmZhY2VNZXRob2Qvc3JjL0lmYWNlSW1wbC5qYXZhCkBAIC0wLDAgKzEsMyBAQAorcHVibGljIGNsYXNzIElmYWNlSW1wbCBpbXBsZW1lbnRzIElmYWNlIHsKKyBwdWJsaWMgdm9pZCBtZXRob2QoKSB7fQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvZGVsZXRlSW50ZXJmYWNlTWV0aG9kL3NyYy9JZmFjZUltcGwyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2RlbGV0ZUludGVyZmFjZU1ldGhvZC9zcmMvSWZhY2VJbXBsMi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIwYWI3MzEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2RlbGV0ZUludGVyZmFjZU1ldGhvZC9zcmMvSWZhY2VJbXBsMi5qYXZhCkBAIC0wLDAgKzEsNCBAQAorcHVibGljIGNsYXNzIElmYWNlSW1wbDIgaW1wbGVtZW50cyBJZmFjZSB7CisgQE92ZXJyaWRlCisgcHVibGljIHZvaWQgbWV0aG9kKCkge30KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2RlbGV0ZU1ldGhvZC5sb2cgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2RlbGV0ZU1ldGhvZC5sb2cKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2IwNDg2NQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvZGVsZXRlTWV0aG9kLmxvZwpAQCAtMCwwICsxLDEyIEBACitDbGVhbmluZyBvdXRwdXQgZmlsZXM6CitvdXQvcHJvZHVjdGlvbi9EZWxldGVNZXRob2QvU2VydmVyLmNsYXNzCitFbmQgb2YgZmlsZXMKK0NvbXBpbGluZyBmaWxlczoKK3NyYy9TZXJ2ZXIuamF2YQorRW5kIG9mIGZpbGVzCitDbGVhbmluZyBvdXRwdXQgZmlsZXM6CitvdXQvcHJvZHVjdGlvbi9EZWxldGVNZXRob2QvU3VwZXIuY2xhc3MKK0VuZCBvZiBmaWxlcworQ29tcGlsaW5nIGZpbGVzOgorc3JjL1N1cGVyLmphdmEKK0VuZCBvZiBmaWxlcwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9kZWxldGVNZXRob2QvU2VydmVyLmphdmEubmV3IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9kZWxldGVNZXRob2QvU2VydmVyLmphdmEubmV3Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZiNGZkMWFlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9kZWxldGVNZXRob2QvU2VydmVyLmphdmEubmV3CkBAIC0wLDAgKzEsMyBAQAorCitwdWJsaWMgY2xhc3MgU2VydmVyIHsKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvZGVsZXRlTWV0aG9kL2RhdGEueG1sIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9kZWxldGVNZXRob2QvZGF0YS54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTMwYTg4YQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvZGVsZXRlTWV0aG9kL2RhdGEueG1sCkBAIC0wLDAgKzEsMTEgQEAKKzx0ZXN0RGF0YT4KKyAgPGRlbGV0ZWRfYnlfbWFrZT4KKyAgICA8ZmlsZSBwYXRoPSJjbGFzc2VzL1NlcnZlci5jbGFzcyIgLz4KKyAgICA8ZmlsZSBwYXRoPSJjbGFzc2VzL1N1cGVyLmNsYXNzIiAvPgorICA8L2RlbGV0ZWRfYnlfbWFrZT4KKworICA8cmVjb21waWxlPgorICAgIDxmaWxlIHBhdGg9InNvdXJjZS9TdXBlci5qYXZhIiAvPgorICA8L3JlY29tcGlsZT4KKworPC90ZXN0RGF0YT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2RlbGV0ZU1ldGhvZC9zcmMvU2VydmVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2RlbGV0ZU1ldGhvZC9zcmMvU2VydmVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzg4MDU3NQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvZGVsZXRlTWV0aG9kL3NyYy9TZXJ2ZXIuamF2YQpAQCAtMCwwICsxLDQgQEAKKworcHVibGljIGNsYXNzIFNlcnZlciB7CisgIHB1YmxpYyB2b2lkIGZvbygpe30KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvZGVsZXRlTWV0aG9kL3NyYy9TdXBlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9kZWxldGVNZXRob2Qvc3JjL1N1cGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDVkOGQwZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvZGVsZXRlTWV0aG9kL3NyYy9TdXBlci5qYXZhCkBAIC0wLDAgKzEsNiBAQAorCitwdWJsaWMgY2xhc3MgU3VwZXIgZXh0ZW5kcyBTZXJ2ZXJ7CisgIHsKKyAgICBmb28oKTsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9kZWxldGVNZXRob2RJbXBsZW1lbnRhdGlvbi5sb2cgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2RlbGV0ZU1ldGhvZEltcGxlbWVudGF0aW9uLmxvZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMGIzYzg3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9kZWxldGVNZXRob2RJbXBsZW1lbnRhdGlvbi5sb2cKQEAgLTAsMCArMSwxMiBAQAorQ2xlYW5pbmcgb3V0cHV0IGZpbGVzOgorb3V0L3Byb2R1Y3Rpb24vRGVsZXRlTWV0aG9kSW1wbGVtZW50YXRpb24vQmFzZUltcGwuY2xhc3MKK0VuZCBvZiBmaWxlcworQ29tcGlsaW5nIGZpbGVzOgorc3JjL0Jhc2VJbXBsLmphdmEKK0VuZCBvZiBmaWxlcworQ2xlYW5pbmcgb3V0cHV0IGZpbGVzOgorb3V0L3Byb2R1Y3Rpb24vRGVsZXRlTWV0aG9kSW1wbGVtZW50YXRpb24vQ29uY3JldGVCYXNlLmNsYXNzCitFbmQgb2YgZmlsZXMKK0NvbXBpbGluZyBmaWxlczoKK3NyYy9Db25jcmV0ZUJhc2UuamF2YQorRW5kIG9mIGZpbGVzCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2RlbGV0ZU1ldGhvZEltcGxlbWVudGF0aW9uL0Jhc2VJbXBsLmphdmEubmV3IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9kZWxldGVNZXRob2RJbXBsZW1lbnRhdGlvbi9CYXNlSW1wbC5qYXZhLm5ldwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MWVlYjJlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9kZWxldGVNZXRob2RJbXBsZW1lbnRhdGlvbi9CYXNlSW1wbC5qYXZhLm5ldwpAQCAtMCwwICsxLDIgQEAKK3B1YmxpYyBhYnN0cmFjdCBjbGFzcyBCYXNlSW1wbCBpbXBsZW1lbnRzIEJhc2UgeworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvZGVsZXRlTWV0aG9kSW1wbGVtZW50YXRpb24vZGF0YS54bWwgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2RlbGV0ZU1ldGhvZEltcGxlbWVudGF0aW9uL2RhdGEueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUyZTZiMjYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2RlbGV0ZU1ldGhvZEltcGxlbWVudGF0aW9uL2RhdGEueG1sCkBAIC0wLDAgKzEsMTEgQEAKKzx0ZXN0RGF0YT4KKyAgPGRlbGV0ZWRfYnlfbWFrZT4KKyAgICA8ZmlsZSBwYXRoPSJjbGFzc2VzL0Jhc2VJbXBsLmNsYXNzIiAvPgorICAgIDxmaWxlIHBhdGg9ImNsYXNzZXMvQ29uY3JldGVCYXNlLmNsYXNzIiAvPgorICA8L2RlbGV0ZWRfYnlfbWFrZT4KKworICA8cmVjb21waWxlPgorICAgIDxmaWxlIHBhdGg9InNvdXJjZS9Db25jcmV0ZUJhc2UuamF2YSIgLz4KKyAgPC9yZWNvbXBpbGU+CisKKzwvdGVzdERhdGE+CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2RlbGV0ZU1ldGhvZEltcGxlbWVudGF0aW9uL3NyYy9CYXNlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2RlbGV0ZU1ldGhvZEltcGxlbWVudGF0aW9uL3NyYy9CYXNlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWIwNmI5MwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvZGVsZXRlTWV0aG9kSW1wbGVtZW50YXRpb24vc3JjL0Jhc2UuamF2YQpAQCAtMCwwICsxLDQgQEAKK3B1YmxpYyBpbnRlcmZhY2UgQmFzZSB7CisgIHZvaWQgZm9vKCk7CisgIHZvaWQgYmFyKCk7Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2RlbGV0ZU1ldGhvZEltcGxlbWVudGF0aW9uL3NyYy9CYXNlSW1wbC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9kZWxldGVNZXRob2RJbXBsZW1lbnRhdGlvbi9zcmMvQmFzZUltcGwuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jM2Q5NWUwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9kZWxldGVNZXRob2RJbXBsZW1lbnRhdGlvbi9zcmMvQmFzZUltcGwuamF2YQpAQCAtMCwwICsxLDQgQEAKK3B1YmxpYyBhYnN0cmFjdCBjbGFzcyBCYXNlSW1wbCBpbXBsZW1lbnRzIEJhc2UgeworICBwdWJsaWMgdm9pZCBmb28oKSB7fQorICAvLyBsZWF2ZSBiYXIoKSB1bmltcGxlbWVudGVkCit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2RlbGV0ZU1ldGhvZEltcGxlbWVudGF0aW9uL3NyYy9Db25jcmV0ZUJhc2UuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvZGVsZXRlTWV0aG9kSW1wbGVtZW50YXRpb24vc3JjL0NvbmNyZXRlQmFzZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAyN2RhMTYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2RlbGV0ZU1ldGhvZEltcGxlbWVudGF0aW9uL3NyYy9Db25jcmV0ZUJhc2UuamF2YQpAQCAtMCwwICsxLDMgQEAKK3B1YmxpYyBjbGFzcyBDb25jcmV0ZUJhc2UgZXh0ZW5kcyBCYXNlSW1wbCB7CisgIHB1YmxpYyB2b2lkIGJhcigpIHt9OworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9kZWxldGVNZXRob2RJbXBsZW1lbnRhdGlvbjIubG9nIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9kZWxldGVNZXRob2RJbXBsZW1lbnRhdGlvbjIubG9nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJkMmZkM2EKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2RlbGV0ZU1ldGhvZEltcGxlbWVudGF0aW9uMi5sb2cKQEAgLTAsMCArMSw2IEBACitDbGVhbmluZyBvdXRwdXQgZmlsZXM6CitvdXQvcHJvZHVjdGlvbi9EZWxldGVNZXRob2RJbXBsZW1lbnRhdGlvbjIvQmFzZUltcGwuY2xhc3MKK0VuZCBvZiBmaWxlcworQ29tcGlsaW5nIGZpbGVzOgorc3JjL0Jhc2VJbXBsLmphdmEKK0VuZCBvZiBmaWxlcwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9kZWxldGVNZXRob2RJbXBsZW1lbnRhdGlvbjIvQmFzZUltcGwuamF2YS5uZXcgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2RlbGV0ZU1ldGhvZEltcGxlbWVudGF0aW9uMi9CYXNlSW1wbC5qYXZhLm5ldwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMTdkNjhkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9kZWxldGVNZXRob2RJbXBsZW1lbnRhdGlvbjIvQmFzZUltcGwuamF2YS5uZXcKQEAgLTAsMCArMSwyIEBACitwdWJsaWMgYWJzdHJhY3QgY2xhc3MgQmFzZUltcGwgZXh0ZW5kcyBCYXNlIHsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2RlbGV0ZU1ldGhvZEltcGxlbWVudGF0aW9uMi9kYXRhLnhtbCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvZGVsZXRlTWV0aG9kSW1wbGVtZW50YXRpb24yL2RhdGEueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc3MzViZDYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2RlbGV0ZU1ldGhvZEltcGxlbWVudGF0aW9uMi9kYXRhLnhtbApAQCAtMCwwICsxLDkgQEAKKzx0ZXN0RGF0YT4KKyAgPGRlbGV0ZWRfYnlfbWFrZT4KKyAgICA8ZmlsZSBwYXRoPSJjbGFzc2VzL0Jhc2VJbXBsLmNsYXNzIiAvPgorICA8L2RlbGV0ZWRfYnlfbWFrZT4KKworICA8cmVjb21waWxlPgorICA8L3JlY29tcGlsZT4KKworPC90ZXN0RGF0YT4KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvZGVsZXRlTWV0aG9kSW1wbGVtZW50YXRpb24yL3NyYy9CYXNlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2RlbGV0ZU1ldGhvZEltcGxlbWVudGF0aW9uMi9zcmMvQmFzZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUxNmRmMDUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2RlbGV0ZU1ldGhvZEltcGxlbWVudGF0aW9uMi9zcmMvQmFzZS5qYXZhCkBAIC0wLDAgKzEsMyBAQAorcHVibGljIGFic3RyYWN0IGNsYXNzIEJhc2UgeworICB2b2lkIGZvbygpIHt9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2RlbGV0ZU1ldGhvZEltcGxlbWVudGF0aW9uMi9zcmMvQmFzZUltcGwuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvZGVsZXRlTWV0aG9kSW1wbGVtZW50YXRpb24yL3NyYy9CYXNlSW1wbC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk5NDU1ZDQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2RlbGV0ZU1ldGhvZEltcGxlbWVudGF0aW9uMi9zcmMvQmFzZUltcGwuamF2YQpAQCAtMCwwICsxLDMgQEAKK3B1YmxpYyBhYnN0cmFjdCBjbGFzcyBCYXNlSW1wbCBleHRlbmRzIEJhc2UgeworICBwdWJsaWMgdm9pZCBmb28oKSB7fQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9kZWxldGVNZXRob2RJbXBsZW1lbnRhdGlvbjIvc3JjL0NvbmNyZXRlQmFzZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9kZWxldGVNZXRob2RJbXBsZW1lbnRhdGlvbjIvc3JjL0NvbmNyZXRlQmFzZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ5ZjVkN2EKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2RlbGV0ZU1ldGhvZEltcGxlbWVudGF0aW9uMi9zcmMvQ29uY3JldGVCYXNlLmphdmEKQEAgLTAsMCArMSwyIEBACitwdWJsaWMgY2xhc3MgQ29uY3JldGVCYXNlIGV4dGVuZHMgQmFzZUltcGwgeworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9kZWxldGVNZXRob2RJbXBsZW1lbnRhdGlvbjMubG9nIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9kZWxldGVNZXRob2RJbXBsZW1lbnRhdGlvbjMubG9nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZmZTg4OTYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2RlbGV0ZU1ldGhvZEltcGxlbWVudGF0aW9uMy5sb2cKQEAgLTAsMCArMSwxMiBAQAorQ2xlYW5pbmcgb3V0cHV0IGZpbGVzOgorb3V0L3Byb2R1Y3Rpb24vRGVsZXRlTWV0aG9kSW1wbGVtZW50YXRpb24zL0Jhc2UuY2xhc3MKK0VuZCBvZiBmaWxlcworQ29tcGlsaW5nIGZpbGVzOgorc3JjL0Jhc2UuamF2YQorRW5kIG9mIGZpbGVzCitDbGVhbmluZyBvdXRwdXQgZmlsZXM6CitvdXQvcHJvZHVjdGlvbi9EZWxldGVNZXRob2RJbXBsZW1lbnRhdGlvbjMvQmFzZUltcGwuY2xhc3MKK0VuZCBvZiBmaWxlcworQ29tcGlsaW5nIGZpbGVzOgorc3JjL0Jhc2VJbXBsLmphdmEKK0VuZCBvZiBmaWxlcwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9kZWxldGVNZXRob2RJbXBsZW1lbnRhdGlvbjMvQmFzZS5qYXZhLm5ldyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvZGVsZXRlTWV0aG9kSW1wbGVtZW50YXRpb24zL0Jhc2UuamF2YS5uZXcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTFmNzkxYQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvZGVsZXRlTWV0aG9kSW1wbGVtZW50YXRpb24zL0Jhc2UuamF2YS5uZXcKQEAgLTAsMCArMSwyIEBACitwdWJsaWMgY2xhc3MgQmFzZSB7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9kZWxldGVNZXRob2RJbXBsZW1lbnRhdGlvbjMvZGF0YS54bWwgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2RlbGV0ZU1ldGhvZEltcGxlbWVudGF0aW9uMy9kYXRhLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNTU5MjcyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9kZWxldGVNZXRob2RJbXBsZW1lbnRhdGlvbjMvZGF0YS54bWwKQEAgLTAsMCArMSwxMSBAQAorPHRlc3REYXRhPgorICA8ZGVsZXRlZF9ieV9tYWtlPgorICAgIDxmaWxlIHBhdGg9ImNsYXNzZXMvQmFzZS5jbGFzcyIgLz4KKyAgICA8ZmlsZSBwYXRoPSJjbGFzc2VzL0Jhc2VJbXBsLmNsYXNzIiAvPgorICA8L2RlbGV0ZWRfYnlfbWFrZT4KKworICA8cmVjb21waWxlPgorICAgIDxmaWxlIHBhdGg9InNvdXJjZS9CYXNlSW1wbC5qYXZhIiAvPgorICA8L3JlY29tcGlsZT4KKworPC90ZXN0RGF0YT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2RlbGV0ZU1ldGhvZEltcGxlbWVudGF0aW9uMy9zcmMvQmFzZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9kZWxldGVNZXRob2RJbXBsZW1lbnRhdGlvbjMvc3JjL0Jhc2UuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zODM5NmM1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9kZWxldGVNZXRob2RJbXBsZW1lbnRhdGlvbjMvc3JjL0Jhc2UuamF2YQpAQCAtMCwwICsxLDMgQEAKK3B1YmxpYyBjbGFzcyBCYXNlIHsKKyAgcHVibGljIHZvaWQgZm9vKCkge30KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2RlbGV0ZU1ldGhvZEltcGxlbWVudGF0aW9uMy9zcmMvQmFzZUlmYWNlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2RlbGV0ZU1ldGhvZEltcGxlbWVudGF0aW9uMy9zcmMvQmFzZUlmYWNlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGY3YWJjMwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvZGVsZXRlTWV0aG9kSW1wbGVtZW50YXRpb24zL3NyYy9CYXNlSWZhY2UuamF2YQpAQCAtMCwwICsxLDMgQEAKK3B1YmxpYyBpbnRlcmZhY2UgQmFzZUlmYWNlIHsKKyAgdm9pZCBmb28oKTsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2RlbGV0ZU1ldGhvZEltcGxlbWVudGF0aW9uMy9zcmMvQmFzZUltcGwuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvZGVsZXRlTWV0aG9kSW1wbGVtZW50YXRpb24zL3NyYy9CYXNlSW1wbC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBiNDdiYmUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2RlbGV0ZU1ldGhvZEltcGxlbWVudGF0aW9uMy9zcmMvQmFzZUltcGwuamF2YQpAQCAtMCwwICsxLDIgQEAKK3B1YmxpYyBjbGFzcyBCYXNlSW1wbCBleHRlbmRzIEJhc2UgaW1wbGVtZW50cyBCYXNlSWZhY2UgeworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvZGVsZXRlTWV0aG9kSW1wbGVtZW50YXRpb240LmxvZyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvZGVsZXRlTWV0aG9kSW1wbGVtZW50YXRpb240LmxvZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYjcyYjBmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9kZWxldGVNZXRob2RJbXBsZW1lbnRhdGlvbjQubG9nCkBAIC0wLDAgKzEsMTQgQEAKK0NsZWFuaW5nIG91dHB1dCBmaWxlczoKK291dC9wcm9kdWN0aW9uL0RlbGV0ZU1ldGhvZEltcGxlbWVudGF0aW9uNC9CYXNlLmNsYXNzCitFbmQgb2YgZmlsZXMKK0NvbXBpbGluZyBmaWxlczoKK3NyYy9CYXNlLmphdmEKK0VuZCBvZiBmaWxlcworQ2xlYW5pbmcgb3V0cHV0IGZpbGVzOgorb3V0L3Byb2R1Y3Rpb24vRGVsZXRlTWV0aG9kSW1wbGVtZW50YXRpb240L0Jhc2VJbXBsLmNsYXNzCitvdXQvcHJvZHVjdGlvbi9EZWxldGVNZXRob2RJbXBsZW1lbnRhdGlvbjQvQmFzZUltcGxJbXBsLmNsYXNzCitFbmQgb2YgZmlsZXMKK0NvbXBpbGluZyBmaWxlczoKK3NyYy9CYXNlSW1wbC5qYXZhCitzcmMvQmFzZUltcGxJbXBsLmphdmEKK0VuZCBvZiBmaWxlcwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9kZWxldGVNZXRob2RJbXBsZW1lbnRhdGlvbjQvQmFzZS5qYXZhLm5ldyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvZGVsZXRlTWV0aG9kSW1wbGVtZW50YXRpb240L0Jhc2UuamF2YS5uZXcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTFmNzkxYQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvZGVsZXRlTWV0aG9kSW1wbGVtZW50YXRpb240L0Jhc2UuamF2YS5uZXcKQEAgLTAsMCArMSwyIEBACitwdWJsaWMgY2xhc3MgQmFzZSB7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9kZWxldGVNZXRob2RJbXBsZW1lbnRhdGlvbjQvZGF0YS54bWwgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2RlbGV0ZU1ldGhvZEltcGxlbWVudGF0aW9uNC9kYXRhLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNzY1NzBlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9kZWxldGVNZXRob2RJbXBsZW1lbnRhdGlvbjQvZGF0YS54bWwKQEAgLTAsMCArMSwxMSBAQAorPHRlc3REYXRhPgorICA8ZGVsZXRlZF9ieV9tYWtlPgorICAgIDxmaWxlIHBhdGg9ImNsYXNzZXMvQmFzZS5jbGFzcyIgLz4KKyAgICA8ZmlsZSBwYXRoPSJjbGFzc2VzL0Jhc2VJbXBsSW1wbC5jbGFzcyIgLz4KKyAgPC9kZWxldGVkX2J5X21ha2U+CisKKyAgPHJlY29tcGlsZT4KKyAgICA8ZmlsZSBwYXRoPSJzb3VyY2UvQmFzZUltcGxJbXBsLmphdmEiIC8+CisgIDwvcmVjb21waWxlPgorCis8L3Rlc3REYXRhPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvZGVsZXRlTWV0aG9kSW1wbGVtZW50YXRpb240L3NyYy9CYXNlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2RlbGV0ZU1ldGhvZEltcGxlbWVudGF0aW9uNC9zcmMvQmFzZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM4Mzk2YzUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2RlbGV0ZU1ldGhvZEltcGxlbWVudGF0aW9uNC9zcmMvQmFzZS5qYXZhCkBAIC0wLDAgKzEsMyBAQAorcHVibGljIGNsYXNzIEJhc2UgeworICBwdWJsaWMgdm9pZCBmb28oKSB7fQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvZGVsZXRlTWV0aG9kSW1wbGVtZW50YXRpb240L3NyYy9CYXNlSWZhY2UuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvZGVsZXRlTWV0aG9kSW1wbGVtZW50YXRpb240L3NyYy9CYXNlSWZhY2UuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZjdhYmMzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9kZWxldGVNZXRob2RJbXBsZW1lbnRhdGlvbjQvc3JjL0Jhc2VJZmFjZS5qYXZhCkBAIC0wLDAgKzEsMyBAQAorcHVibGljIGludGVyZmFjZSBCYXNlSWZhY2UgeworICB2b2lkIGZvbygpOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvZGVsZXRlTWV0aG9kSW1wbGVtZW50YXRpb240L3NyYy9CYXNlSW1wbC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9kZWxldGVNZXRob2RJbXBsZW1lbnRhdGlvbjQvc3JjL0Jhc2VJbXBsLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2EzMzFmOQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvZGVsZXRlTWV0aG9kSW1wbGVtZW50YXRpb240L3NyYy9CYXNlSW1wbC5qYXZhCkBAIC0wLDAgKzEsMiBAQAorcHVibGljIGNsYXNzIEJhc2VJbXBsIGV4dGVuZHMgQmFzZXsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2RlbGV0ZU1ldGhvZEltcGxlbWVudGF0aW9uNC9zcmMvQmFzZUltcGxJbXBsLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2RlbGV0ZU1ldGhvZEltcGxlbWVudGF0aW9uNC9zcmMvQmFzZUltcGxJbXBsLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODFlZTY4ZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvZGVsZXRlTWV0aG9kSW1wbGVtZW50YXRpb240L3NyYy9CYXNlSW1wbEltcGwuamF2YQpAQCAtMCwwICsxLDIgQEAKK3B1YmxpYyBjbGFzcyBCYXNlSW1wbEltcGwgZXh0ZW5kcyBCYXNlSW1wbCBpbXBsZW1lbnRzIEJhc2VJZmFjZSB7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9kZWxldGVNZXRob2RJbXBsZW1lbnRhdGlvbjUubG9nIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9kZWxldGVNZXRob2RJbXBsZW1lbnRhdGlvbjUubG9nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEzNjk0MGYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2RlbGV0ZU1ldGhvZEltcGxlbWVudGF0aW9uNS5sb2cKQEAgLTAsMCArMSwxMiBAQAorQ2xlYW5pbmcgb3V0cHV0IGZpbGVzOgorb3V0L3Byb2R1Y3Rpb24vRGVsZXRlTWV0aG9kSW1wbGVtZW50YXRpb241L0Jhc2UuY2xhc3MKK0VuZCBvZiBmaWxlcworQ29tcGlsaW5nIGZpbGVzOgorc3JjL0Jhc2UuamF2YQorRW5kIG9mIGZpbGVzCitDbGVhbmluZyBvdXRwdXQgZmlsZXM6CitvdXQvcHJvZHVjdGlvbi9EZWxldGVNZXRob2RJbXBsZW1lbnRhdGlvbjUvQmFzZUltcGwuY2xhc3MKK0VuZCBvZiBmaWxlcworQ29tcGlsaW5nIGZpbGVzOgorc3JjL0Jhc2VJbXBsLmphdmEKK0VuZCBvZiBmaWxlcwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9kZWxldGVNZXRob2RJbXBsZW1lbnRhdGlvbjUvQmFzZS5qYXZhLm5ldyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvZGVsZXRlTWV0aG9kSW1wbGVtZW50YXRpb241L0Jhc2UuamF2YS5uZXcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTFmNzkxYQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvZGVsZXRlTWV0aG9kSW1wbGVtZW50YXRpb241L0Jhc2UuamF2YS5uZXcKQEAgLTAsMCArMSwyIEBACitwdWJsaWMgY2xhc3MgQmFzZSB7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9kZWxldGVNZXRob2RJbXBsZW1lbnRhdGlvbjUvZGF0YS54bWwgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2RlbGV0ZU1ldGhvZEltcGxlbWVudGF0aW9uNS9kYXRhLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNTU5MjcyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9kZWxldGVNZXRob2RJbXBsZW1lbnRhdGlvbjUvZGF0YS54bWwKQEAgLTAsMCArMSwxMSBAQAorPHRlc3REYXRhPgorICA8ZGVsZXRlZF9ieV9tYWtlPgorICAgIDxmaWxlIHBhdGg9ImNsYXNzZXMvQmFzZS5jbGFzcyIgLz4KKyAgICA8ZmlsZSBwYXRoPSJjbGFzc2VzL0Jhc2VJbXBsLmNsYXNzIiAvPgorICA8L2RlbGV0ZWRfYnlfbWFrZT4KKworICA8cmVjb21waWxlPgorICAgIDxmaWxlIHBhdGg9InNvdXJjZS9CYXNlSW1wbC5qYXZhIiAvPgorICA8L3JlY29tcGlsZT4KKworPC90ZXN0RGF0YT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2RlbGV0ZU1ldGhvZEltcGxlbWVudGF0aW9uNS9zcmMvQmFzZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9kZWxldGVNZXRob2RJbXBsZW1lbnRhdGlvbjUvc3JjL0Jhc2UuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zODM5NmM1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9kZWxldGVNZXRob2RJbXBsZW1lbnRhdGlvbjUvc3JjL0Jhc2UuamF2YQpAQCAtMCwwICsxLDMgQEAKK3B1YmxpYyBjbGFzcyBCYXNlIHsKKyAgcHVibGljIHZvaWQgZm9vKCkge30KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2RlbGV0ZU1ldGhvZEltcGxlbWVudGF0aW9uNS9zcmMvQmFzZUlmYWNlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2RlbGV0ZU1ldGhvZEltcGxlbWVudGF0aW9uNS9zcmMvQmFzZUlmYWNlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGY3YWJjMwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvZGVsZXRlTWV0aG9kSW1wbGVtZW50YXRpb241L3NyYy9CYXNlSWZhY2UuamF2YQpAQCAtMCwwICsxLDMgQEAKK3B1YmxpYyBpbnRlcmZhY2UgQmFzZUlmYWNlIHsKKyAgdm9pZCBmb28oKTsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2RlbGV0ZU1ldGhvZEltcGxlbWVudGF0aW9uNS9zcmMvQmFzZUltcGwuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvZGVsZXRlTWV0aG9kSW1wbGVtZW50YXRpb241L3NyYy9CYXNlSW1wbC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAxNjM2ODE4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9kZWxldGVNZXRob2RJbXBsZW1lbnRhdGlvbjUvc3JjL0Jhc2VJbXBsLmphdmEKQEAgLTAsMCArMSwzIEBACitwdWJsaWMgY2xhc3MgQmFzZUltcGwgZXh0ZW5kcyBCYXNleworICBwdWJsaWMgdm9pZCBmb28oKSB7fQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvZGVsZXRlTWV0aG9kSW1wbGVtZW50YXRpb241L3NyYy9CYXNlSW1wbEltcGwuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvZGVsZXRlTWV0aG9kSW1wbGVtZW50YXRpb241L3NyYy9CYXNlSW1wbEltcGwuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MWVlNjhmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9kZWxldGVNZXRob2RJbXBsZW1lbnRhdGlvbjUvc3JjL0Jhc2VJbXBsSW1wbC5qYXZhCkBAIC0wLDAgKzEsMiBAQAorcHVibGljIGNsYXNzIEJhc2VJbXBsSW1wbCBleHRlbmRzIEJhc2VJbXBsIGltcGxlbWVudHMgQmFzZUlmYWNlIHsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2RlbGV0ZU1ldGhvZEltcGxlbWVudGF0aW9uNi5sb2cgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2RlbGV0ZU1ldGhvZEltcGxlbWVudGF0aW9uNi5sb2cKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTRiZDM4MwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvZGVsZXRlTWV0aG9kSW1wbGVtZW50YXRpb242LmxvZwpAQCAtMCwwICsxLDEyIEBACitDbGVhbmluZyBvdXRwdXQgZmlsZXM6CitvdXQvcHJvZHVjdGlvbi9EZWxldGVNZXRob2RJbXBsZW1lbnRhdGlvbjYvQmFzZUltcGwuY2xhc3MKK0VuZCBvZiBmaWxlcworQ29tcGlsaW5nIGZpbGVzOgorc3JjL0Jhc2VJbXBsLmphdmEKK0VuZCBvZiBmaWxlcworQ2xlYW5pbmcgb3V0cHV0IGZpbGVzOgorb3V0L3Byb2R1Y3Rpb24vRGVsZXRlTWV0aG9kSW1wbGVtZW50YXRpb242L0Jhc2VJbXBsSW1wbC5jbGFzcworRW5kIG9mIGZpbGVzCitDb21waWxpbmcgZmlsZXM6CitzcmMvQmFzZUltcGxJbXBsLmphdmEKK0VuZCBvZiBmaWxlcwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9kZWxldGVNZXRob2RJbXBsZW1lbnRhdGlvbjYvQmFzZUltcGwuamF2YS5uZXcgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2RlbGV0ZU1ldGhvZEltcGxlbWVudGF0aW9uNi9CYXNlSW1wbC5qYXZhLm5ldwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMTdkNjhkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9kZWxldGVNZXRob2RJbXBsZW1lbnRhdGlvbjYvQmFzZUltcGwuamF2YS5uZXcKQEAgLTAsMCArMSwyIEBACitwdWJsaWMgYWJzdHJhY3QgY2xhc3MgQmFzZUltcGwgZXh0ZW5kcyBCYXNlIHsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2RlbGV0ZU1ldGhvZEltcGxlbWVudGF0aW9uNi9kYXRhLnhtbCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvZGVsZXRlTWV0aG9kSW1wbGVtZW50YXRpb242L2RhdGEueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJjYTI0NGQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2RlbGV0ZU1ldGhvZEltcGxlbWVudGF0aW9uNi9kYXRhLnhtbApAQCAtMCwwICsxLDExIEBACis8dGVzdERhdGE+CisgIDxkZWxldGVkX2J5X21ha2U+CisgICAgPGZpbGUgcGF0aD0iY2xhc3Nlcy9CYXNlSW1wbC5jbGFzcyIgLz4KKyAgICA8ZmlsZSBwYXRoPSJjbGFzc2VzL0Jhc2VJbXBsSW1wbC5jbGFzcyIgLz4KKyAgPC9kZWxldGVkX2J5X21ha2U+CisKKyAgPHJlY29tcGlsZT4KKyAgICA8ZmlsZSBwYXRoPSJzb3VyY2UvQmFzZUltcGxJbXBsLmphdmEiIC8+CisgIDwvcmVjb21waWxlPgorCis8L3Rlc3REYXRhPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvZGVsZXRlTWV0aG9kSW1wbGVtZW50YXRpb242L3NyYy9CYXNlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2RlbGV0ZU1ldGhvZEltcGxlbWVudGF0aW9uNi9zcmMvQmFzZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM4ZmI5MDFhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9kZWxldGVNZXRob2RJbXBsZW1lbnRhdGlvbjYvc3JjL0Jhc2UuamF2YQpAQCAtMCwwICsxLDMgQEAKK3B1YmxpYyBhYnN0cmFjdCBjbGFzcyBCYXNlIHsKKyAgcHVibGljIGFic3RyYWN0IHZvaWQgZm9vKCk7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9kZWxldGVNZXRob2RJbXBsZW1lbnRhdGlvbjYvc3JjL0Jhc2VJbXBsLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2RlbGV0ZU1ldGhvZEltcGxlbWVudGF0aW9uNi9zcmMvQmFzZUltcGwuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMTQxNWQxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9kZWxldGVNZXRob2RJbXBsZW1lbnRhdGlvbjYvc3JjL0Jhc2VJbXBsLmphdmEKQEAgLTAsMCArMSwzIEBACitwdWJsaWMgYWJzdHJhY3QgY2xhc3MgQmFzZUltcGwgZXh0ZW5kcyBCYXNlIHsKKyAgcHVibGljIHZvaWQgZm9vKCkge30KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2RlbGV0ZU1ldGhvZEltcGxlbWVudGF0aW9uNi9zcmMvQmFzZUltcGxJbXBsLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2RlbGV0ZU1ldGhvZEltcGxlbWVudGF0aW9uNi9zcmMvQmFzZUltcGxJbXBsLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmU0ODhiOAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvZGVsZXRlTWV0aG9kSW1wbGVtZW50YXRpb242L3NyYy9CYXNlSW1wbEltcGwuamF2YQpAQCAtMCwwICsxLDMgQEAKK3B1YmxpYyBjbGFzcyBCYXNlSW1wbEltcGwgZXh0ZW5kcyBCYXNlSW1wbCB7CisgIHB1YmxpYyB2b2lkIGZvbygpIHt9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9kZWxldGVNZXRob2RJbXBsZW1lbnRhdGlvbjYvc3JjL0NsaWVudC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9kZWxldGVNZXRob2RJbXBsZW1lbnRhdGlvbjYvc3JjL0NsaWVudC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFhMzJiZWMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2RlbGV0ZU1ldGhvZEltcGxlbWVudGF0aW9uNi9zcmMvQ2xpZW50LmphdmEKQEAgLTAsMCArMSw2IEBACitwdWJsaWMgY2xhc3MgQ2xpZW50IHsKKyAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4gKFN0cmluZ1tdIGFyZ3MpIHsKKyAgICBCYXNlIGJhc2UgPSBuZXcgQ29uY3JldGVCYXNlKCk7CisgICAgYmFzZS5mb28oKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvZGVsZXRlTWV0aG9kSW1wbGVtZW50YXRpb242L3NyYy9Db25jcmV0ZUJhc2UuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvZGVsZXRlTWV0aG9kSW1wbGVtZW50YXRpb242L3NyYy9Db25jcmV0ZUJhc2UuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNjZjNGQ1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9kZWxldGVNZXRob2RJbXBsZW1lbnRhdGlvbjYvc3JjL0NvbmNyZXRlQmFzZS5qYXZhCkBAIC0wLDAgKzEsMiBAQAorcHVibGljIGNsYXNzIENvbmNyZXRlQmFzZSBleHRlbmRzIEJhc2VJbXBsSW1wbCB7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9kZWxldGVNZXRob2RJbXBsZW1lbnRhdGlvbjcubG9nIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9kZWxldGVNZXRob2RJbXBsZW1lbnRhdGlvbjcubG9nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA4YjVlOTgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2RlbGV0ZU1ldGhvZEltcGxlbWVudGF0aW9uNy5sb2cKQEAgLTAsMCArMSwxNCBAQAorQ2xlYW5pbmcgb3V0cHV0IGZpbGVzOgorb3V0L3Byb2R1Y3Rpb24vRGVsZXRlTWV0aG9kSW1wbGVtZW50YXRpb243L0Jhc2VJbXBsLmNsYXNzCitvdXQvcHJvZHVjdGlvbi9EZWxldGVNZXRob2RJbXBsZW1lbnRhdGlvbjcvQmFzZUltcGxJbXBsLmNsYXNzCitFbmQgb2YgZmlsZXMKK0NvbXBpbGluZyBmaWxlczoKK3NyYy9CYXNlSW1wbC5qYXZhCitzcmMvQmFzZUltcGxJbXBsLmphdmEKK0VuZCBvZiBmaWxlcworQ2xlYW5pbmcgb3V0cHV0IGZpbGVzOgorb3V0L3Byb2R1Y3Rpb24vRGVsZXRlTWV0aG9kSW1wbGVtZW50YXRpb243L0NvbmNyZXRlQmFzZS5jbGFzcworRW5kIG9mIGZpbGVzCitDb21waWxpbmcgZmlsZXM6CitzcmMvQ29uY3JldGVCYXNlLmphdmEKK0VuZCBvZiBmaWxlcwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9kZWxldGVNZXRob2RJbXBsZW1lbnRhdGlvbjcvQmFzZUltcGwuamF2YS5uZXcgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2RlbGV0ZU1ldGhvZEltcGxlbWVudGF0aW9uNy9CYXNlSW1wbC5qYXZhLm5ldwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMTdkNjhkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9kZWxldGVNZXRob2RJbXBsZW1lbnRhdGlvbjcvQmFzZUltcGwuamF2YS5uZXcKQEAgLTAsMCArMSwyIEBACitwdWJsaWMgYWJzdHJhY3QgY2xhc3MgQmFzZUltcGwgZXh0ZW5kcyBCYXNlIHsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2RlbGV0ZU1ldGhvZEltcGxlbWVudGF0aW9uNy9CYXNlSW1wbEltcGwuamF2YS5uZXcgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2RlbGV0ZU1ldGhvZEltcGxlbWVudGF0aW9uNy9CYXNlSW1wbEltcGwuamF2YS5uZXcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGE0ZGY4ZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvZGVsZXRlTWV0aG9kSW1wbGVtZW50YXRpb243L0Jhc2VJbXBsSW1wbC5qYXZhLm5ldwpAQCAtMCwwICsxLDIgQEAKK3B1YmxpYyBhYnN0cmFjdCBjbGFzcyBCYXNlSW1wbEltcGwgZXh0ZW5kcyBCYXNlSW1wbCB7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9kZWxldGVNZXRob2RJbXBsZW1lbnRhdGlvbjcvZGF0YS54bWwgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2RlbGV0ZU1ldGhvZEltcGxlbWVudGF0aW9uNy9kYXRhLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42OWVlY2Y0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9kZWxldGVNZXRob2RJbXBsZW1lbnRhdGlvbjcvZGF0YS54bWwKQEAgLTAsMCArMSwxMiBAQAorPHRlc3REYXRhPgorICA8ZGVsZXRlZF9ieV9tYWtlPgorICAgIDxmaWxlIHBhdGg9ImNsYXNzZXMvQmFzZUltcGwuY2xhc3MiIC8+CisgICAgPGZpbGUgcGF0aD0iY2xhc3Nlcy9CYXNlSW1wbEltcGwuY2xhc3MiIC8+CisgICAgPGZpbGUgcGF0aD0iY2xhc3Nlcy9Db25jcmV0ZUJhc2UuY2xhc3MiIC8+CisgIDwvZGVsZXRlZF9ieV9tYWtlPgorCisgIDxyZWNvbXBpbGU+CisgICAgPGZpbGUgcGF0aD0ic291cmNlL0NvbmNyZXRlQmFzZS5qYXZhIiAvPgorICA8L3JlY29tcGlsZT4KKworPC90ZXN0RGF0YT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2RlbGV0ZU1ldGhvZEltcGxlbWVudGF0aW9uNy9zcmMvQmFzZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9kZWxldGVNZXRob2RJbXBsZW1lbnRhdGlvbjcvc3JjL0Jhc2UuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zOGZiOTAxYQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvZGVsZXRlTWV0aG9kSW1wbGVtZW50YXRpb243L3NyYy9CYXNlLmphdmEKQEAgLTAsMCArMSwzIEBACitwdWJsaWMgYWJzdHJhY3QgY2xhc3MgQmFzZSB7CisgIHB1YmxpYyBhYnN0cmFjdCB2b2lkIGZvbygpOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvZGVsZXRlTWV0aG9kSW1wbGVtZW50YXRpb243L3NyYy9CYXNlSW1wbC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9kZWxldGVNZXRob2RJbXBsZW1lbnRhdGlvbjcvc3JjL0Jhc2VJbXBsLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjE0MTVkMQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvZGVsZXRlTWV0aG9kSW1wbGVtZW50YXRpb243L3NyYy9CYXNlSW1wbC5qYXZhCkBAIC0wLDAgKzEsMyBAQAorcHVibGljIGFic3RyYWN0IGNsYXNzIEJhc2VJbXBsIGV4dGVuZHMgQmFzZSB7CisgIHB1YmxpYyB2b2lkIGZvbygpIHt9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9kZWxldGVNZXRob2RJbXBsZW1lbnRhdGlvbjcvc3JjL0Jhc2VJbXBsSW1wbC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9kZWxldGVNZXRob2RJbXBsZW1lbnRhdGlvbjcvc3JjL0Jhc2VJbXBsSW1wbC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM5MGE0MDMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2RlbGV0ZU1ldGhvZEltcGxlbWVudGF0aW9uNy9zcmMvQmFzZUltcGxJbXBsLmphdmEKQEAgLTAsMCArMSwzIEBACitwdWJsaWMgYWJzdHJhY3QgY2xhc3MgQmFzZUltcGxJbXBsIGV4dGVuZHMgQmFzZUltcGwgeworICBwdWJsaWMgdm9pZCBmb28oKSB7fQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvZGVsZXRlTWV0aG9kSW1wbGVtZW50YXRpb243L3NyYy9DbGllbnQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvZGVsZXRlTWV0aG9kSW1wbGVtZW50YXRpb243L3NyYy9DbGllbnQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYTMyYmVjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9kZWxldGVNZXRob2RJbXBsZW1lbnRhdGlvbjcvc3JjL0NsaWVudC5qYXZhCkBAIC0wLDAgKzEsNiBAQAorcHVibGljIGNsYXNzIENsaWVudCB7CisgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluIChTdHJpbmdbXSBhcmdzKSB7CisgICAgQmFzZSBiYXNlID0gbmV3IENvbmNyZXRlQmFzZSgpOworICAgIGJhc2UuZm9vKCk7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2RlbGV0ZU1ldGhvZEltcGxlbWVudGF0aW9uNy9zcmMvQ29uY3JldGVCYXNlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2RlbGV0ZU1ldGhvZEltcGxlbWVudGF0aW9uNy9zcmMvQ29uY3JldGVCYXNlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjY2YzRkNQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvZGVsZXRlTWV0aG9kSW1wbGVtZW50YXRpb243L3NyYy9Db25jcmV0ZUJhc2UuamF2YQpAQCAtMCwwICsxLDIgQEAKK3B1YmxpYyBjbGFzcyBDb25jcmV0ZUJhc2UgZXh0ZW5kcyBCYXNlSW1wbEltcGwgeworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvaGllcmFyY2h5LmxvZyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvaGllcmFyY2h5LmxvZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMGQwYTBkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9oaWVyYXJjaHkubG9nCkBAIC0wLDAgKzEsMTggQEAKK0NsZWFuaW5nIG91dHB1dCBmaWxlczoKK291dC9wcm9kdWN0aW9uL0hpZXJhcmNoeS9TZXJ2aWNlLmNsYXNzCitFbmQgb2YgZmlsZXMKK0NvbXBpbGluZyBmaWxlczoKK3NyYy9TZXJ2aWNlLmphdmEKK0VuZCBvZiBmaWxlcworQ2xlYW5pbmcgb3V0cHV0IGZpbGVzOgorb3V0L3Byb2R1Y3Rpb24vSGllcmFyY2h5L0NsaWVudDEkMS5jbGFzcworb3V0L3Byb2R1Y3Rpb24vSGllcmFyY2h5L0NsaWVudDEuY2xhc3MKK291dC9wcm9kdWN0aW9uL0hpZXJhcmNoeS9DbGllbnQyJDEuY2xhc3MKK291dC9wcm9kdWN0aW9uL0hpZXJhcmNoeS9DbGllbnQyLmNsYXNzCitvdXQvcHJvZHVjdGlvbi9IaWVyYXJjaHkvU2VydmljZUFkYXB0ZXIuY2xhc3MKK0VuZCBvZiBmaWxlcworQ29tcGlsaW5nIGZpbGVzOgorc3JjL0NsaWVudDEuamF2YQorc3JjL0NsaWVudDIuamF2YQorc3JjL1NlcnZpY2VBZGFwdGVyLmphdmEKK0VuZCBvZiBmaWxlcwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9oaWVyYXJjaHkvU2VydmljZS5qYXZhLm5ldyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvaGllcmFyY2h5L1NlcnZpY2UuamF2YS5uZXcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjU5OTY4NQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvaGllcmFyY2h5L1NlcnZpY2UuamF2YS5uZXcKQEAgLTAsMCArMSwzIEBACitwdWJsaWMgYWJzdHJhY3QgY2xhc3MgU2VydmljZXsKKyAgcHVibGljIGFic3RyYWN0IHZvaWQgZm9vKGludCBhKTsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2hpZXJhcmNoeS9kYXRhLnhtbCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvaGllcmFyY2h5L2RhdGEueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNmMjIzYzkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2hpZXJhcmNoeS9kYXRhLnhtbApAQCAtMCwwICsxLDE2IEBACis8dGVzdERhdGE+CisgIDxkZWxldGVkX2J5X21ha2U+CisgICAgPGZpbGUgcGF0aD0iY2xhc3Nlcy9TZXJ2aWNlLmNsYXNzIiAvPgorICAgIDxmaWxlIHBhdGg9ImNsYXNzZXMvQ2xpZW50MS5jbGFzcyIgLz4KKyAgICA8ZmlsZSBwYXRoPSJjbGFzc2VzL0NsaWVudDEkMS5jbGFzcyIgLz4KKyAgICA8ZmlsZSBwYXRoPSJjbGFzc2VzL0NsaWVudDIuY2xhc3MiIC8+CisgICAgPGZpbGUgcGF0aD0iY2xhc3Nlcy9DbGllbnQyJDEuY2xhc3MiIC8+CisgICAgPGZpbGUgcGF0aD0iY2xhc3Nlcy9TZXJ2aWNlQWRhcHRlci5jbGFzcyIgLz4KKyAgPC9kZWxldGVkX2J5X21ha2U+CisKKyAgPHJlY29tcGlsZT4KKyAgICA8ZmlsZSBwYXRoPSJzb3VyY2UvQ2xpZW50MS5qYXZhIiAvPgorICAgIDxmaWxlIHBhdGg9InNvdXJjZS9DbGllbnQyLmphdmEiIC8+CisgICAgPGZpbGUgcGF0aD0ic291cmNlL1NlcnZpY2VBZGFwdGVyLmphdmEiIC8+CisgIDwvcmVjb21waWxlPgorPC90ZXN0RGF0YT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2hpZXJhcmNoeS9zcmMvQ2xpZW50MS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9oaWVyYXJjaHkvc3JjL0NsaWVudDEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NDE2YzQ3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9oaWVyYXJjaHkvc3JjL0NsaWVudDEuamF2YQpAQCAtMCwwICsxLDggQEAKK2NsYXNzIENsaWVudDF7CisgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKKyAgICBTZXJ2aWNlIHNlcnZpY2UgPSBuZXcgU2VydmljZSgpIHsKKyAgICAgIHB1YmxpYyB2b2lkIGZvbygpIHsKKyAgICAgIH0KKyAgICB9OworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9oaWVyYXJjaHkvc3JjL0NsaWVudDIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvaGllcmFyY2h5L3NyYy9DbGllbnQyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzhmNGNlYgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvaGllcmFyY2h5L3NyYy9DbGllbnQyLmphdmEKQEAgLTAsMCArMSw4IEBACitjbGFzcyBDbGllbnQyeworICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CisgICAgU2VydmljZSBzZXJ2aWNlID0gbmV3IFNlcnZpY2VBZGFwdGVyKCkgeworICAgICAgcHVibGljIHZvaWQgZm9vKCkgeworICAgICAgfQorICAgIH07CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2hpZXJhcmNoeS9zcmMvU2VydmljZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9oaWVyYXJjaHkvc3JjL1NlcnZpY2UuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZWUyOTkwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9oaWVyYXJjaHkvc3JjL1NlcnZpY2UuamF2YQpAQCAtMCwwICsxLDMgQEAKK3B1YmxpYyBhYnN0cmFjdCBjbGFzcyBTZXJ2aWNleworICBwdWJsaWMgYWJzdHJhY3Qgdm9pZCBmb28oKTsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2hpZXJhcmNoeS9zcmMvU2VydmljZUFkYXB0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvaGllcmFyY2h5L3NyYy9TZXJ2aWNlQWRhcHRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZkOTIzMjgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2hpZXJhcmNoeS9zcmMvU2VydmljZUFkYXB0ZXIuamF2YQpAQCAtMCwwICsxLDQgQEAKK3B1YmxpYyBjbGFzcyBTZXJ2aWNlQWRhcHRlciBleHRlbmRzIFNlcnZpY2V7CisgIHB1YmxpYyB2b2lkIGZvbygpIHsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvaGllcmFyY2h5Mi5sb2cgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2hpZXJhcmNoeTIubG9nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJjNzhhZTEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2hpZXJhcmNoeTIubG9nCkBAIC0wLDAgKzEsMTggQEAKK0NsZWFuaW5nIG91dHB1dCBmaWxlczoKK291dC9wcm9kdWN0aW9uL0hpZXJhcmNoeTIvU2VydmljZS5jbGFzcworRW5kIG9mIGZpbGVzCitDb21waWxpbmcgZmlsZXM6CitzcmMvU2VydmljZS5qYXZhCitFbmQgb2YgZmlsZXMKK0NsZWFuaW5nIG91dHB1dCBmaWxlczoKK291dC9wcm9kdWN0aW9uL0hpZXJhcmNoeTIvQ2xpZW50MSQxLmNsYXNzCitvdXQvcHJvZHVjdGlvbi9IaWVyYXJjaHkyL0NsaWVudDEuY2xhc3MKK291dC9wcm9kdWN0aW9uL0hpZXJhcmNoeTIvQ2xpZW50MiQxLmNsYXNzCitvdXQvcHJvZHVjdGlvbi9IaWVyYXJjaHkyL0NsaWVudDIuY2xhc3MKK291dC9wcm9kdWN0aW9uL0hpZXJhcmNoeTIvU2VydmljZUFkYXB0ZXIuY2xhc3MKK0VuZCBvZiBmaWxlcworQ29tcGlsaW5nIGZpbGVzOgorc3JjL0NsaWVudDEuamF2YQorc3JjL0NsaWVudDIuamF2YQorc3JjL1NlcnZpY2VBZGFwdGVyLmphdmEKK0VuZCBvZiBmaWxlcwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9oaWVyYXJjaHkyL1NlcnZpY2UuamF2YS5uZXcgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2hpZXJhcmNoeTIvU2VydmljZS5qYXZhLm5ldwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZDExZGNiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9oaWVyYXJjaHkyL1NlcnZpY2UuamF2YS5uZXcKQEAgLTAsMCArMSwzIEBACitwdWJsaWMgaW50ZXJmYWNlIFNlcnZpY2V7CisgIHZvaWQgZm9vKGludCBhKTsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2hpZXJhcmNoeTIvZGF0YS54bWwgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2hpZXJhcmNoeTIvZGF0YS54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2YyMjNjOQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvaGllcmFyY2h5Mi9kYXRhLnhtbApAQCAtMCwwICsxLDE2IEBACis8dGVzdERhdGE+CisgIDxkZWxldGVkX2J5X21ha2U+CisgICAgPGZpbGUgcGF0aD0iY2xhc3Nlcy9TZXJ2aWNlLmNsYXNzIiAvPgorICAgIDxmaWxlIHBhdGg9ImNsYXNzZXMvQ2xpZW50MS5jbGFzcyIgLz4KKyAgICA8ZmlsZSBwYXRoPSJjbGFzc2VzL0NsaWVudDEkMS5jbGFzcyIgLz4KKyAgICA8ZmlsZSBwYXRoPSJjbGFzc2VzL0NsaWVudDIuY2xhc3MiIC8+CisgICAgPGZpbGUgcGF0aD0iY2xhc3Nlcy9DbGllbnQyJDEuY2xhc3MiIC8+CisgICAgPGZpbGUgcGF0aD0iY2xhc3Nlcy9TZXJ2aWNlQWRhcHRlci5jbGFzcyIgLz4KKyAgPC9kZWxldGVkX2J5X21ha2U+CisKKyAgPHJlY29tcGlsZT4KKyAgICA8ZmlsZSBwYXRoPSJzb3VyY2UvQ2xpZW50MS5qYXZhIiAvPgorICAgIDxmaWxlIHBhdGg9InNvdXJjZS9DbGllbnQyLmphdmEiIC8+CisgICAgPGZpbGUgcGF0aD0ic291cmNlL1NlcnZpY2VBZGFwdGVyLmphdmEiIC8+CisgIDwvcmVjb21waWxlPgorPC90ZXN0RGF0YT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2hpZXJhcmNoeTIvc3JjL0NsaWVudDEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvaGllcmFyY2h5Mi9zcmMvQ2xpZW50MS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc0MTZjNDcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2hpZXJhcmNoeTIvc3JjL0NsaWVudDEuamF2YQpAQCAtMCwwICsxLDggQEAKK2NsYXNzIENsaWVudDF7CisgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKKyAgICBTZXJ2aWNlIHNlcnZpY2UgPSBuZXcgU2VydmljZSgpIHsKKyAgICAgIHB1YmxpYyB2b2lkIGZvbygpIHsKKyAgICAgIH0KKyAgICB9OworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9oaWVyYXJjaHkyL3NyYy9DbGllbnQyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2hpZXJhcmNoeTIvc3JjL0NsaWVudDIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zOGY0Y2ViCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9oaWVyYXJjaHkyL3NyYy9DbGllbnQyLmphdmEKQEAgLTAsMCArMSw4IEBACitjbGFzcyBDbGllbnQyeworICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CisgICAgU2VydmljZSBzZXJ2aWNlID0gbmV3IFNlcnZpY2VBZGFwdGVyKCkgeworICAgICAgcHVibGljIHZvaWQgZm9vKCkgeworICAgICAgfQorICAgIH07CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2hpZXJhcmNoeTIvc3JjL1NlcnZpY2UuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvaGllcmFyY2h5Mi9zcmMvU2VydmljZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZmMDQyMWMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2hpZXJhcmNoeTIvc3JjL1NlcnZpY2UuamF2YQpAQCAtMCwwICsxLDMgQEAKK3B1YmxpYyBpbnRlcmZhY2UgU2VydmljZXsKKyAgdm9pZCBmb28oKTsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2hpZXJhcmNoeTIvc3JjL1NlcnZpY2VBZGFwdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL2hpZXJhcmNoeTIvc3JjL1NlcnZpY2VBZGFwdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODQ1Y2FmYgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvaGllcmFyY2h5Mi9zcmMvU2VydmljZUFkYXB0ZXIuamF2YQpAQCAtMCwwICsxLDQgQEAKK3B1YmxpYyBjbGFzcyBTZXJ2aWNlQWRhcHRlciBpbXBsZW1lbnRzIFNlcnZpY2V7CisgIHB1YmxpYyB2b2lkIGZvbygpIHsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvbW92ZU1ldGhvZFRvU3ViY2xhc3MvYnVpbGQubG9nIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9tb3ZlTWV0aG9kVG9TdWJjbGFzcy9idWlsZC5sb2cKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODY5MTRlMGEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL21vdmVNZXRob2RUb1N1YmNsYXNzL2J1aWxkLmxvZwpAQCAtMCwwICsxLDE0IEBACitDbGVhbmluZyBvdXRwdXQgZmlsZXM6CitvdXQvcHJvZHVjdGlvbi9Nb3ZlTWV0aG9kVG9TdWJjbGFzcy9CYXNlLmNsYXNzCitvdXQvcHJvZHVjdGlvbi9Nb3ZlTWV0aG9kVG9TdWJjbGFzcy9JbXBsLmNsYXNzCitFbmQgb2YgZmlsZXMKK0NvbXBpbGluZyBmaWxlczoKK3NyYy9CYXNlLmphdmEKK3NyYy9JbXBsLmphdmEKK0VuZCBvZiBmaWxlcworQ2xlYW5pbmcgb3V0cHV0IGZpbGVzOgorb3V0L3Byb2R1Y3Rpb24vTW92ZU1ldGhvZFRvU3ViY2xhc3MvTWFpbi5jbGFzcworRW5kIG9mIGZpbGVzCitDb21waWxpbmcgZmlsZXM6CitzcmMvTWFpbi5qYXZhCitFbmQgb2YgZmlsZXMKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvbW92ZU1ldGhvZFRvU3ViY2xhc3Mvc3JjL0Jhc2UuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvbW92ZU1ldGhvZFRvU3ViY2xhc3Mvc3JjL0Jhc2UuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YTlmNjUxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9tb3ZlTWV0aG9kVG9TdWJjbGFzcy9zcmMvQmFzZS5qYXZhCkBAIC0wLDAgKzEsNiBAQAoraW1wb3J0IGphdmEudXRpbC5Db2xsZWN0aW9uOworCitwdWJsaWMgY2xhc3MgQmFzZSB7CisgIHB1YmxpYyB2b2lkIG1ldGhvZChCYXNlIGEpIHsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9tb3ZlTWV0aG9kVG9TdWJjbGFzcy9zcmMvQmFzZS5qYXZhLm5ldyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvbW92ZU1ldGhvZFRvU3ViY2xhc3Mvc3JjL0Jhc2UuamF2YS5uZXcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGJlYjFhZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvbW92ZU1ldGhvZFRvU3ViY2xhc3Mvc3JjL0Jhc2UuamF2YS5uZXcKQEAgLTAsMCArMSwyIEBACitwdWJsaWMgY2xhc3MgQmFzZSB7Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL21vdmVNZXRob2RUb1N1YmNsYXNzL3NyYy9JbXBsLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL21vdmVNZXRob2RUb1N1YmNsYXNzL3NyYy9JbXBsLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjZhMzk4YwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvbW92ZU1ldGhvZFRvU3ViY2xhc3Mvc3JjL0ltcGwuamF2YQpAQCAtMCwwICsxLDIgQEAKK3B1YmxpYyBjbGFzcyBJbXBsIGV4dGVuZHMgQmFzZSB7Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL21vdmVNZXRob2RUb1N1YmNsYXNzL3NyYy9JbXBsLmphdmEubmV3IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9tb3ZlTWV0aG9kVG9TdWJjbGFzcy9zcmMvSW1wbC5qYXZhLm5ldwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MGYzNzA5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9tb3ZlTWV0aG9kVG9TdWJjbGFzcy9zcmMvSW1wbC5qYXZhLm5ldwpAQCAtMCwwICsxLDYgQEAKK2ltcG9ydCBqYXZhLnV0aWwuTGlzdDsKKworcHVibGljIGNsYXNzIEltcGwgZXh0ZW5kcyBCYXNlIHsKKyAgcHVibGljIHZvaWQgbWV0aG9kKEltcGwgYSkgeworICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL21vdmVNZXRob2RUb1N1YmNsYXNzL3NyYy9NYWluLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL21vdmVNZXRob2RUb1N1YmNsYXNzL3NyYy9NYWluLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjc3MWIwNgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvbW92ZU1ldGhvZFRvU3ViY2xhc3Mvc3JjL01haW4uamF2YQpAQCAtMCwwICsxLDkgQEAKK2ltcG9ydCBqYXZhLnV0aWwuQXJyYXlMaXN0OworaW1wb3J0IGphdmEudXRpbC5Db2xsZWN0aW9uOworCitwdWJsaWMgY2xhc3MgTWFpbiB7CisgIHsKKyAgICBJbXBsIGltcGwgPSBuZXcgSW1wbCgpOworICAgIGltcGwubWV0aG9kKG51bGwpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9yZW1vdmVCYXNlSW1wbGVtZW50YXRpb24ubG9nIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9yZW1vdmVCYXNlSW1wbGVtZW50YXRpb24ubG9nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMxNmNhOTkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL3JlbW92ZUJhc2VJbXBsZW1lbnRhdGlvbi5sb2cKQEAgLTAsMCArMSwxMiBAQAorQ2xlYW5pbmcgb3V0cHV0IGZpbGVzOgorb3V0L3Byb2R1Y3Rpb24vUmVtb3ZlQmFzZUltcGxlbWVudGF0aW9uL0EuY2xhc3MKK0VuZCBvZiBmaWxlcworQ29tcGlsaW5nIGZpbGVzOgorc3JjL0EuamF2YQorRW5kIG9mIGZpbGVzCitDbGVhbmluZyBvdXRwdXQgZmlsZXM6CitvdXQvcHJvZHVjdGlvbi9SZW1vdmVCYXNlSW1wbGVtZW50YXRpb24vQi5jbGFzcworRW5kIG9mIGZpbGVzCitDb21waWxpbmcgZmlsZXM6CitzcmMvQi5qYXZhCitFbmQgb2YgZmlsZXMKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvcmVtb3ZlQmFzZUltcGxlbWVudGF0aW9uL0EuamF2YS5uZXcgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL3JlbW92ZUJhc2VJbXBsZW1lbnRhdGlvbi9BLmphdmEubmV3Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU3OTgyZWQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL3JlbW92ZUJhc2VJbXBsZW1lbnRhdGlvbi9BLmphdmEubmV3CkBAIC0wLDAgKzEsNCBAQAoraW1wb3J0IGphdmEuYXd0LmV2ZW50Lio7CisKK3B1YmxpYyBhYnN0cmFjdCBjbGFzcyBBIGltcGxlbWVudHMgQWN0aW9uTGlzdGVuZXIgeworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvcmVtb3ZlQmFzZUltcGxlbWVudGF0aW9uL2RhdGEueG1sIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9yZW1vdmVCYXNlSW1wbGVtZW50YXRpb24vZGF0YS54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGU1MGE5YQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvcmVtb3ZlQmFzZUltcGxlbWVudGF0aW9uL2RhdGEueG1sCkBAIC0wLDAgKzEsMTAgQEAKKzx0ZXN0RGF0YT4KKyAgPGRlbGV0ZWRfYnlfbWFrZT4KKyAgICA8ZmlsZSBwYXRoPSJjbGFzc2VzL0EuY2xhc3MiIC8+CisgICAgPGZpbGUgcGF0aD0iY2xhc3Nlcy9CLmNsYXNzIiAvPgorICA8L2RlbGV0ZWRfYnlfbWFrZT4KKworICA8cmVjb21waWxlPgorICAgIDxmaWxlIHBhdGg9InNvdXJjZS9CLmphdmEiIC8+CisgIDwvcmVjb21waWxlPgorPC90ZXN0RGF0YT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL3JlbW92ZUJhc2VJbXBsZW1lbnRhdGlvbi9zcmMvQS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9yZW1vdmVCYXNlSW1wbGVtZW50YXRpb24vc3JjL0EuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYmNiNWQwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9yZW1vdmVCYXNlSW1wbGVtZW50YXRpb24vc3JjL0EuamF2YQpAQCAtMCwwICsxLDUgQEAKK2ltcG9ydCBqYXZhLmF3dC5ldmVudC4qOworCitwdWJsaWMgYWJzdHJhY3QgY2xhc3MgQSBpbXBsZW1lbnRzIEFjdGlvbkxpc3RlbmVyIHsKKyAgICBwdWJsaWMgZmluYWwgdm9pZCBhY3Rpb25QZXJmb3JtZWQoQWN0aW9uRXZlbnQgZSkge30KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL3JlbW92ZUJhc2VJbXBsZW1lbnRhdGlvbi9zcmMvQi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9yZW1vdmVCYXNlSW1wbGVtZW50YXRpb24vc3JjL0IuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MjJjN2YyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9yZW1vdmVCYXNlSW1wbGVtZW50YXRpb24vc3JjL0IuamF2YQpAQCAtMCwwICsxLDQgQEAKK2ltcG9ydCBqYXZhLmF3dC5ldmVudC4qOworCitwdWJsaWMgY2xhc3MgQiBleHRlbmRzIEEgeworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvcmVtb3ZlSGlkaW5nRmllbGQubG9nIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9yZW1vdmVIaWRpbmdGaWVsZC5sb2cKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjJmNDU1NwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvcmVtb3ZlSGlkaW5nRmllbGQubG9nCkBAIC0wLDAgKzEsMTMgQEAKK0NsZWFuaW5nIG91dHB1dCBmaWxlczoKK291dC9wcm9kdWN0aW9uL1JlbW92ZUhpZGluZ0ZpZWxkL0Jhc2VBY3Rpb24uY2xhc3MKK0VuZCBvZiBmaWxlcworQ29tcGlsaW5nIGZpbGVzOgorc3JjL0Jhc2VBY3Rpb24uamF2YQorRW5kIG9mIGZpbGVzCitDbGVhbmluZyBvdXRwdXQgZmlsZXM6CitvdXQvcHJvZHVjdGlvbi9SZW1vdmVIaWRpbmdGaWVsZC9DbGllbnQkMS5jbGFzcworb3V0L3Byb2R1Y3Rpb24vUmVtb3ZlSGlkaW5nRmllbGQvQ2xpZW50LmNsYXNzCitFbmQgb2YgZmlsZXMKK0NvbXBpbGluZyBmaWxlczoKK3NyYy9DbGllbnQuamF2YQorRW5kIG9mIGZpbGVzCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL3JlbW92ZUhpZGluZ0ZpZWxkL0Jhc2VBY3Rpb24uamF2YS5uZXcgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL3JlbW92ZUhpZGluZ0ZpZWxkL0Jhc2VBY3Rpb24uamF2YS5uZXcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWI4YjUxOTAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL3JlbW92ZUhpZGluZ0ZpZWxkL0Jhc2VBY3Rpb24uamF2YS5uZXcKQEAgLTAsMCArMSw1IEBACitwdWJsaWMgYWJzdHJhY3QgY2xhc3MgQmFzZUFjdGlvbiB7CisgIHB1YmxpYyBhYnN0cmFjdCB2b2lkIGFjdGlvbigpOworCisKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL3JlbW92ZUhpZGluZ0ZpZWxkL2RhdGEueG1sIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9yZW1vdmVIaWRpbmdGaWVsZC9kYXRhLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MjhjMDVhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9yZW1vdmVIaWRpbmdGaWVsZC9kYXRhLnhtbApAQCAtMCwwICsxLDEyIEBACis8dGVzdERhdGE+CisgIDxkZWxldGVkX2J5X21ha2U+CisgICAgPGZpbGUgcGF0aD0iY2xhc3Nlcy9CYXNlQWN0aW9uLmNsYXNzIiAvPgorICAgIDxmaWxlIHBhdGg9ImNsYXNzZXMvQ2xpZW50LmNsYXNzIiAvPgorICAgIDxmaWxlIHBhdGg9ImNsYXNzZXMvQ2xpZW50JDEuY2xhc3MiIC8+CisgIDwvZGVsZXRlZF9ieV9tYWtlPgorCisgIDxyZWNvbXBpbGU+CisgICAgPGZpbGUgcGF0aD0ic291cmNlL0NsaWVudC5qYXZhIiAvPgorICA8L3JlY29tcGlsZT4KKworPC90ZXN0RGF0YT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL3JlbW92ZUhpZGluZ0ZpZWxkL3NyYy9CYXNlQWN0aW9uLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL3JlbW92ZUhpZGluZ0ZpZWxkL3NyYy9CYXNlQWN0aW9uLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmVjYzBmNQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvcmVtb3ZlSGlkaW5nRmllbGQvc3JjL0Jhc2VBY3Rpb24uamF2YQpAQCAtMCwwICsxLDUgQEAKK3B1YmxpYyBhYnN0cmFjdCBjbGFzcyBCYXNlQWN0aW9uIHsKKyAgaW50IGZpZWxkID0gOTk5OworCisgIHB1YmxpYyBhYnN0cmFjdCB2b2lkIGFjdGlvbigpOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvcmVtb3ZlSGlkaW5nRmllbGQvc3JjL0Jhc2VDbGllbnQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvcmVtb3ZlSGlkaW5nRmllbGQvc3JjL0Jhc2VDbGllbnQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNTc1MzZjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9yZW1vdmVIaWRpbmdGaWVsZC9zcmMvQmFzZUNsaWVudC5qYXZhCkBAIC0wLDAgKzEsMyBAQAorcHVibGljIGNsYXNzIEJhc2VDbGllbnQgeworICBpbnQgZmllbGQgPSA3Nzc7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9yZW1vdmVIaWRpbmdGaWVsZC9zcmMvQ2xpZW50LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL3JlbW92ZUhpZGluZ0ZpZWxkL3NyYy9DbGllbnQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44OGVkMzA4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9yZW1vdmVIaWRpbmdGaWVsZC9zcmMvQ2xpZW50LmphdmEKQEAgLTAsMCArMSw5IEBACitwdWJsaWMgY2xhc3MgQ2xpZW50IGV4dGVuZHMgQmFzZUNsaWVudHsKKyAgcHVibGljIHZvaWQgY2FsY3VsYXRpb24oKSB7CisgICAgbmV3IEJhc2VBY3Rpb24oKSB7CisgICAgICAgcHVibGljIHZvaWQgYWN0aW9uKCkgeworICAgICAgICAgIGludCBkYXRhID0gZmllbGQ7CisgICAgICAgfQorICAgIH0uYWN0aW9uKCk7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL3JlbW92ZUhpZGluZ01ldGhvZC5sb2cgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL3JlbW92ZUhpZGluZ01ldGhvZC5sb2cKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGY3YWRkYwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvcmVtb3ZlSGlkaW5nTWV0aG9kLmxvZwpAQCAtMCwwICsxLDEzIEBACitDbGVhbmluZyBvdXRwdXQgZmlsZXM6CitvdXQvcHJvZHVjdGlvbi9SZW1vdmVIaWRpbmdNZXRob2QvQmFzZUFjdGlvbi5jbGFzcworRW5kIG9mIGZpbGVzCitDb21waWxpbmcgZmlsZXM6CitzcmMvQmFzZUFjdGlvbi5qYXZhCitFbmQgb2YgZmlsZXMKK0NsZWFuaW5nIG91dHB1dCBmaWxlczoKK291dC9wcm9kdWN0aW9uL1JlbW92ZUhpZGluZ01ldGhvZC9DbGllbnQkMS5jbGFzcworb3V0L3Byb2R1Y3Rpb24vUmVtb3ZlSGlkaW5nTWV0aG9kL0NsaWVudC5jbGFzcworRW5kIG9mIGZpbGVzCitDb21waWxpbmcgZmlsZXM6CitzcmMvQ2xpZW50LmphdmEKK0VuZCBvZiBmaWxlcwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9yZW1vdmVIaWRpbmdNZXRob2QvQmFzZUFjdGlvbi5qYXZhLm5ldyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvcmVtb3ZlSGlkaW5nTWV0aG9kL0Jhc2VBY3Rpb24uamF2YS5uZXcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTUwNWJkNgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvcmVtb3ZlSGlkaW5nTWV0aG9kL0Jhc2VBY3Rpb24uamF2YS5uZXcKQEAgLTAsMCArMSwzIEBACitwdWJsaWMgYWJzdHJhY3QgY2xhc3MgQmFzZUFjdGlvbiB7CisgIHB1YmxpYyBhYnN0cmFjdCB2b2lkIGFjdGlvbigpOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvcmVtb3ZlSGlkaW5nTWV0aG9kL2RhdGEueG1sIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9yZW1vdmVIaWRpbmdNZXRob2QvZGF0YS54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDI4YzA1YQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvcmVtb3ZlSGlkaW5nTWV0aG9kL2RhdGEueG1sCkBAIC0wLDAgKzEsMTIgQEAKKzx0ZXN0RGF0YT4KKyAgPGRlbGV0ZWRfYnlfbWFrZT4KKyAgICA8ZmlsZSBwYXRoPSJjbGFzc2VzL0Jhc2VBY3Rpb24uY2xhc3MiIC8+CisgICAgPGZpbGUgcGF0aD0iY2xhc3Nlcy9DbGllbnQuY2xhc3MiIC8+CisgICAgPGZpbGUgcGF0aD0iY2xhc3Nlcy9DbGllbnQkMS5jbGFzcyIgLz4KKyAgPC9kZWxldGVkX2J5X21ha2U+CisKKyAgPHJlY29tcGlsZT4KKyAgICA8ZmlsZSBwYXRoPSJzb3VyY2UvQ2xpZW50LmphdmEiIC8+CisgIDwvcmVjb21waWxlPgorCis8L3Rlc3REYXRhPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvcmVtb3ZlSGlkaW5nTWV0aG9kL3NyYy9CYXNlQWN0aW9uLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL3JlbW92ZUhpZGluZ01ldGhvZC9zcmMvQmFzZUFjdGlvbi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQxNjYzMTMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL3JlbW92ZUhpZGluZ01ldGhvZC9zcmMvQmFzZUFjdGlvbi5qYXZhCkBAIC0wLDAgKzEsNyBAQAorcHVibGljIGFic3RyYWN0IGNsYXNzIEJhc2VBY3Rpb24geworICBwdWJsaWMgYWJzdHJhY3Qgdm9pZCBhY3Rpb24oKTsKKworICBwdWJsaWMgaW50IGdldERhdGEoaW50IHBhcmFtKSB7CisgICAgIHJldHVybiAxMDsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvcmVtb3ZlSGlkaW5nTWV0aG9kL3NyYy9CYXNlQ2xpZW50LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL3JlbW92ZUhpZGluZ01ldGhvZC9zcmMvQmFzZUNsaWVudC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM4MmQ5ZGIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL3JlbW92ZUhpZGluZ01ldGhvZC9zcmMvQmFzZUNsaWVudC5qYXZhCkBAIC0wLDAgKzEsNSBAQAorcHVibGljIGNsYXNzIEJhc2VDbGllbnQgeworICBwdWJsaWMgaW50IGdldERhdGEoKSB7CisgICAgIHJldHVybiAxMDsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvcmVtb3ZlSGlkaW5nTWV0aG9kL3NyYy9DbGllbnQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvcmVtb3ZlSGlkaW5nTWV0aG9kL3NyYy9DbGllbnQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZDMyODgyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9yZW1vdmVIaWRpbmdNZXRob2Qvc3JjL0NsaWVudC5qYXZhCkBAIC0wLDAgKzEsOSBAQAorcHVibGljIGNsYXNzIENsaWVudCBleHRlbmRzIEJhc2VDbGllbnR7CisgIHB1YmxpYyB2b2lkIGNhbGN1bGF0aW9uKCkgeworICAgIG5ldyBCYXNlQWN0aW9uKCkgeworICAgICAgIHB1YmxpYyB2b2lkIGFjdGlvbigpIHsKKyAgICAgICAgICBpbnQgZGF0YSA9IGdldERhdGEoNyk7CisgICAgICAgfQorICAgIH0uYWN0aW9uKCk7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL3JlbW92ZVRocm93c0luQmFzZU1ldGhvZC5sb2cgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL3JlbW92ZVRocm93c0luQmFzZU1ldGhvZC5sb2cKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmVhZmRlMAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvcmVtb3ZlVGhyb3dzSW5CYXNlTWV0aG9kLmxvZwpAQCAtMCwwICsxLDEyIEBACitDbGVhbmluZyBvdXRwdXQgZmlsZXM6CitvdXQvcHJvZHVjdGlvbi9SZW1vdmVUaHJvd3NJbkJhc2VNZXRob2QvVGhyb3dpbmdUb3AuY2xhc3MKK0VuZCBvZiBmaWxlcworQ29tcGlsaW5nIGZpbGVzOgorc3JjL1Rocm93aW5nVG9wLmphdmEKK0VuZCBvZiBmaWxlcworQ2xlYW5pbmcgb3V0cHV0IGZpbGVzOgorb3V0L3Byb2R1Y3Rpb24vUmVtb3ZlVGhyb3dzSW5CYXNlTWV0aG9kL1Rocm93aW5nQm90dG9tLmNsYXNzCitFbmQgb2YgZmlsZXMKK0NvbXBpbGluZyBmaWxlczoKK3NyYy9UaHJvd2luZ0JvdHRvbS5qYXZhCitFbmQgb2YgZmlsZXMKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvcmVtb3ZlVGhyb3dzSW5CYXNlTWV0aG9kL1Rocm93aW5nVG9wLmphdmEubmV3IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9yZW1vdmVUaHJvd3NJbkJhc2VNZXRob2QvVGhyb3dpbmdUb3AuamF2YS5uZXcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDVjZmUwOQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvcmVtb3ZlVGhyb3dzSW5CYXNlTWV0aG9kL1Rocm93aW5nVG9wLmphdmEubmV3CkBAIC0wLDAgKzEsNCBAQAorcHVibGljIGNsYXNzIFRocm93aW5nVG9wIHsKKyAgICBwdWJsaWMgdm9pZCBzcG9pbCgpIHsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL3JlbW92ZVRocm93c0luQmFzZU1ldGhvZC9kYXRhLnhtbCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvcmVtb3ZlVGhyb3dzSW5CYXNlTWV0aG9kL2RhdGEueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE3MDMxMjcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL3JlbW92ZVRocm93c0luQmFzZU1ldGhvZC9kYXRhLnhtbApAQCAtMCwwICsxLDEyIEBACis8dGVzdERhdGE+CisKKyAgPGRlbGV0ZWRfYnlfbWFrZT4KKyAgICA8ZmlsZSBwYXRoPSJjbGFzc2VzL1Rocm93aW5nVG9wLmNsYXNzIiAvPgorICAgIDxmaWxlIHBhdGg9ImNsYXNzZXMvVGhyb3dpbmdCb3R0b20uY2xhc3MiIC8+CisgIDwvZGVsZXRlZF9ieV9tYWtlPgorCisgIDxyZWNvbXBpbGU+CisgICAgPGZpbGUgcGF0aD0ic291cmNlL1Rocm93aW5nQm90dG9tLmphdmEiIC8+CisgIDwvcmVjb21waWxlPgorCis8L3Rlc3REYXRhPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvcmVtb3ZlVGhyb3dzSW5CYXNlTWV0aG9kL3NyYy9DaGVja2VkLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL3JlbW92ZVRocm93c0luQmFzZU1ldGhvZC9zcmMvQ2hlY2tlZC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUzZGM0MmIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL3JlbW92ZVRocm93c0luQmFzZU1ldGhvZC9zcmMvQ2hlY2tlZC5qYXZhCkBAIC0wLDAgKzEsMiBAQAorcHVibGljIGNsYXNzIENoZWNrZWQgZXh0ZW5kcyBFeGNlcHRpb24geworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9yZW1vdmVUaHJvd3NJbkJhc2VNZXRob2Qvc3JjL1Rocm93aW5nQm90dG9tLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL3JlbW92ZVRocm93c0luQmFzZU1ldGhvZC9zcmMvVGhyb3dpbmdCb3R0b20uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZDI4MDUzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9yZW1vdmVUaHJvd3NJbkJhc2VNZXRob2Qvc3JjL1Rocm93aW5nQm90dG9tLmphdmEKQEAgLTAsMCArMSw1IEBACitwdWJsaWMgY2xhc3MgVGhyb3dpbmdCb3R0b20gZXh0ZW5kcyBUaHJvd2luZ1RvcHsKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgdm9pZCBzcG9pbCgpIHRocm93cyBDaGVja2VkIHsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL3JlbW92ZVRocm93c0luQmFzZU1ldGhvZC9zcmMvVGhyb3dpbmdUb3AuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvcmVtb3ZlVGhyb3dzSW5CYXNlTWV0aG9kL3NyYy9UaHJvd2luZ1RvcC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ5ODJhZGEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL3JlbW92ZVRocm93c0luQmFzZU1ldGhvZC9zcmMvVGhyb3dpbmdUb3AuamF2YQpAQCAtMCwwICsxLDQgQEAKK3B1YmxpYyBjbGFzcyBUaHJvd2luZ1RvcCB7CisgICAgcHVibGljIHZvaWQgc3BvaWwoKSB0aHJvd3MgQ2hlY2tlZCB7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9yZW5hbWVNZXRob2QubG9nIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9yZW5hbWVNZXRob2QubG9nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc1YzM2NTIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL3JlbmFtZU1ldGhvZC5sb2cKQEAgLTAsMCArMSwxMiBAQAorQ2xlYW5pbmcgb3V0cHV0IGZpbGVzOgorb3V0L3Byb2R1Y3Rpb24vUmVuYW1lTWV0aG9kL3BhY2thZ2VBL1NlcnZlci5jbGFzcworRW5kIG9mIGZpbGVzCitDb21waWxpbmcgZmlsZXM6CitzcmMvcGFja2FnZUEvU2VydmVyLmphdmEKK0VuZCBvZiBmaWxlcworQ2xlYW5pbmcgb3V0cHV0IGZpbGVzOgorb3V0L3Byb2R1Y3Rpb24vUmVuYW1lTWV0aG9kL3BhY2thZ2VBL0NsaWVudC5jbGFzcworRW5kIG9mIGZpbGVzCitDb21waWxpbmcgZmlsZXM6CitzcmMvcGFja2FnZUEvQ2xpZW50LmphdmEKK0VuZCBvZiBmaWxlcwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9yZW5hbWVNZXRob2QvZGF0YS54bWwgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL3JlbmFtZU1ldGhvZC9kYXRhLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NjU5ZjZlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9yZW5hbWVNZXRob2QvZGF0YS54bWwKQEAgLTAsMCArMSwxNSBAQAorPHRlc3REYXRhPgorCisgIDxkZWxldGU+CisgIDwvZGVsZXRlPgorCisgIDxkZWxldGVkX2J5X21ha2U+CisgICAgPGZpbGUgcGF0aD0iY2xhc3Nlcy9wYWNrYWdlQS9TZXJ2ZXIuY2xhc3MiIC8+CisgICAgPGZpbGUgcGF0aD0iY2xhc3Nlcy9wYWNrYWdlQS9DbGllbnQuY2xhc3MiIC8+CisgIDwvZGVsZXRlZF9ieV9tYWtlPgorCisgIDxyZWNvbXBpbGU+CisgICAgPGZpbGUgcGF0aD0ic291cmNlL3BhY2thZ2VBL0NsaWVudC5qYXZhIiAvPgorICA8L3JlY29tcGlsZT4KKworPC90ZXN0RGF0YT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL3JlbmFtZU1ldGhvZC9zcmMvcGFja2FnZUEvQ2xpZW50LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL3JlbmFtZU1ldGhvZC9zcmMvcGFja2FnZUEvQ2xpZW50LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2VmNTQyZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvcmVuYW1lTWV0aG9kL3NyYy9wYWNrYWdlQS9DbGllbnQuamF2YQpAQCAtMCwwICsxLDEyIEBACisvKioKKyAqIGNyZWF0ZWQgYXQgSmFuIDIyLCAyMDAyCisgKiBAYXV0aG9yIEpla2EKKyAqLworcGFja2FnZSBwYWNrYWdlQTsKKworcHVibGljIGNsYXNzIENsaWVudCB7CisgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKKyAgICBTZXJ2ZXIgc2VydmVyID0gbmV3IFNlcnZlcigpOworICAgIHNlcnZlci5tZXRob2QoKTsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9yZW5hbWVNZXRob2Qvc3JjL3BhY2thZ2VBL1NlcnZlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS9yZW5hbWVNZXRob2Qvc3JjL3BhY2thZ2VBL1NlcnZlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgxMGM4N2QKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL3JlbmFtZU1ldGhvZC9zcmMvcGFja2FnZUEvU2VydmVyLmphdmEKQEAgLTAsMCArMSwxMSBAQAorLyoqCisgKiBjcmVhdGVkIGF0IEphbiAyMiwgMjAwMgorICogQGF1dGhvciBKZWthCisgKi8KK3BhY2thZ2UgcGFja2FnZUE7CisKK3B1YmxpYyBjbGFzcyBTZXJ2ZXIgeworICBwdWJsaWMgdm9pZCBtZXRob2QoKSB7CisgICAgU3lzdGVtLm91dC5wcmludGxuKCJTZXJ2ZXIubWV0aG9kIik7CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvcmVuYW1lTWV0aG9kL3NyYy9wYWNrYWdlQS9TZXJ2ZXIuamF2YS5uZXcgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL3JlbmFtZU1ldGhvZC9zcmMvcGFja2FnZUEvU2VydmVyLmphdmEubmV3Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ4NTExMzAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL3JlbmFtZU1ldGhvZC9zcmMvcGFja2FnZUEvU2VydmVyLmphdmEubmV3CkBAIC0wLDAgKzEsMTEgQEAKKy8qKgorICogY3JlYXRlZCBhdCBKYW4gMjIsIDIwMDIKKyAqIEBhdXRob3IgSmVrYQorICovCitwYWNrYWdlIHBhY2thZ2VBOworCitwdWJsaWMgY2xhc3MgU2VydmVyIHsKKyAgcHVibGljIHZvaWQgbWV0aG9kMSgpIHsKKyAgICBTeXN0ZW0ub3V0LnByaW50bG4oIlNlcnZlci5tZXRob2QiKTsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS90aHJvd3NMaXN0RGlmZmVyc0luQmFzZUFuZERlcml2ZWQubG9nIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS90aHJvd3NMaXN0RGlmZmVyc0luQmFzZUFuZERlcml2ZWQubG9nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgyNGU2ODEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL3Rocm93c0xpc3REaWZmZXJzSW5CYXNlQW5kRGVyaXZlZC5sb2cKQEAgLTAsMCArMSwxMiBAQAorQ2xlYW5pbmcgb3V0cHV0IGZpbGVzOgorb3V0L3Byb2R1Y3Rpb24vVGhyb3dzTGlzdERpZmZlcnNJbkJhc2VBbmREZXJpdmVkL0Jhc2VTZXJ2ZXIuY2xhc3MKK0VuZCBvZiBmaWxlcworQ29tcGlsaW5nIGZpbGVzOgorc3JjL0Jhc2VTZXJ2ZXIuamF2YQorRW5kIG9mIGZpbGVzCitDbGVhbmluZyBvdXRwdXQgZmlsZXM6CitvdXQvcHJvZHVjdGlvbi9UaHJvd3NMaXN0RGlmZmVyc0luQmFzZUFuZERlcml2ZWQvU2VydmVyLmNsYXNzCitFbmQgb2YgZmlsZXMKK0NvbXBpbGluZyBmaWxlczoKK3NyYy9TZXJ2ZXIuamF2YQorRW5kIG9mIGZpbGVzCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL3Rocm93c0xpc3REaWZmZXJzSW5CYXNlQW5kRGVyaXZlZC9CYXNlU2VydmVyLmphdmEubmV3IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS90aHJvd3NMaXN0RGlmZmVyc0luQmFzZUFuZERlcml2ZWQvQmFzZVNlcnZlci5qYXZhLm5ldwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MGRhODVhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS90aHJvd3NMaXN0RGlmZmVyc0luQmFzZUFuZERlcml2ZWQvQmFzZVNlcnZlci5qYXZhLm5ldwpAQCAtMCwwICsxLDUgQEAKK3B1YmxpYyBjbGFzcyBCYXNlU2VydmVyIHsKKyAgcHVibGljIEludGVnZXIgbWV0aG9kKCkgdGhyb3dzIEV4Y2VwdGlvbjIgeworICAgIHJldHVybiBuZXcgSW50ZWdlcigwKTsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS90aHJvd3NMaXN0RGlmZmVyc0luQmFzZUFuZERlcml2ZWQvZGF0YS54bWwgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL3Rocm93c0xpc3REaWZmZXJzSW5CYXNlQW5kRGVyaXZlZC9kYXRhLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NTk3ODFlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS90aHJvd3NMaXN0RGlmZmVyc0luQmFzZUFuZERlcml2ZWQvZGF0YS54bWwKQEAgLTAsMCArMSwxMiBAQAorPHRlc3REYXRhPgorCisgIDxkZWxldGVkX2J5X21ha2U+CisgICAgPGZpbGUgcGF0aD0iY2xhc3Nlcy9CYXNlU2VydmVyLmNsYXNzIiAvPgorICAgIDxmaWxlIHBhdGg9ImNsYXNzZXMvU2VydmVyLmNsYXNzIiAvPgorICA8L2RlbGV0ZWRfYnlfbWFrZT4KKworICA8cmVjb21waWxlPgorICAgIDxmaWxlIHBhdGg9InNvdXJjZS9TZXJ2ZXIuamF2YSIgLz4KKyAgPC9yZWNvbXBpbGU+CisKKzwvdGVzdERhdGE+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS90aHJvd3NMaXN0RGlmZmVyc0luQmFzZUFuZERlcml2ZWQvc3JjL0Jhc2VTZXJ2ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvdGhyb3dzTGlzdERpZmZlcnNJbkJhc2VBbmREZXJpdmVkL3NyYy9CYXNlU2VydmVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzNmOWI3YgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvdGhyb3dzTGlzdERpZmZlcnNJbkJhc2VBbmREZXJpdmVkL3NyYy9CYXNlU2VydmVyLmphdmEKQEAgLTAsMCArMSwyIEBACitwdWJsaWMgY2xhc3MgQmFzZVNlcnZlciB7Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL3Rocm93c0xpc3REaWZmZXJzSW5CYXNlQW5kRGVyaXZlZC9zcmMvRXhjZXB0aW9uMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS90aHJvd3NMaXN0RGlmZmVyc0luQmFzZUFuZERlcml2ZWQvc3JjL0V4Y2VwdGlvbjEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZjU3YjdmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS90aHJvd3NMaXN0RGlmZmVyc0luQmFzZUFuZERlcml2ZWQvc3JjL0V4Y2VwdGlvbjEuamF2YQpAQCAtMCwwICsxLDIgQEAKK3B1YmxpYyBjbGFzcyBFeGNlcHRpb24xIGV4dGVuZHMgRXhjZXB0aW9uIHsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL3Rocm93c0xpc3REaWZmZXJzSW5CYXNlQW5kRGVyaXZlZC9zcmMvRXhjZXB0aW9uMi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS90aHJvd3NMaXN0RGlmZmVyc0luQmFzZUFuZERlcml2ZWQvc3JjL0V4Y2VwdGlvbjIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNzhhZWJiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWVtYmVyc0NoYW5nZS90aHJvd3NMaXN0RGlmZmVyc0luQmFzZUFuZERlcml2ZWQvc3JjL0V4Y2VwdGlvbjIuamF2YQpAQCAtMCwwICsxLDIgQEAKK3B1YmxpYyBjbGFzcyBFeGNlcHRpb24yIGV4dGVuZHMgRXhjZXB0aW9uIHsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL3Rocm93c0xpc3REaWZmZXJzSW5CYXNlQW5kRGVyaXZlZC9zcmMvU2VydmVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZW1iZXJzQ2hhbmdlL3Rocm93c0xpc3REaWZmZXJzSW5CYXNlQW5kRGVyaXZlZC9zcmMvU2VydmVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTQzMGFiOQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21lbWJlcnNDaGFuZ2UvdGhyb3dzTGlzdERpZmZlcnNJbkJhc2VBbmREZXJpdmVkL3NyYy9TZXJ2ZXIuamF2YQpAQCAtMCwwICsxLDUgQEAKK3B1YmxpYyBjbGFzcyBTZXJ2ZXIgZXh0ZW5kcyBCYXNlU2VydmVyIHsKKyAgcHJvdGVjdGVkIEludGVnZXIgbWV0aG9kKCkgdGhyb3dzIEV4Y2VwdGlvbjEgeworICAgIHJldHVybiBuZXcgSW50ZWdlcigxMCk7CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21ldGhvZE1vZGlmaWVycy9kZWNDb25zdHJ1Y3RvckFjY2Vzcy5sb2cgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZXRob2RNb2RpZmllcnMvZGVjQ29uc3RydWN0b3JBY2Nlc3MubG9nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVkNjAzYmMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZXRob2RNb2RpZmllcnMvZGVjQ29uc3RydWN0b3JBY2Nlc3MubG9nCkBAIC0wLDAgKzEsMTIgQEAKK0NsZWFuaW5nIG91dHB1dCBmaWxlczoKK291dC9wcm9kdWN0aW9uL0RlY0NvbnN0cnVjdG9yQWNjZXNzL2ltcGwvU2VydmVyLmNsYXNzCitFbmQgb2YgZmlsZXMKK0NvbXBpbGluZyBmaWxlczoKK3NyYy9pbXBsL1NlcnZlci5qYXZhCitFbmQgb2YgZmlsZXMKK0NsZWFuaW5nIG91dHB1dCBmaWxlczoKK291dC9wcm9kdWN0aW9uL0RlY0NvbnN0cnVjdG9yQWNjZXNzL0NsaWVudC5jbGFzcworRW5kIG9mIGZpbGVzCitDb21waWxpbmcgZmlsZXM6CitzcmMvQ2xpZW50LmphdmEKK0VuZCBvZiBmaWxlcwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWV0aG9kTW9kaWZpZXJzL2RlY0NvbnN0cnVjdG9yQWNjZXNzL2RhdGEueG1sIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWV0aG9kTW9kaWZpZXJzL2RlY0NvbnN0cnVjdG9yQWNjZXNzL2RhdGEueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM3ZmQ1ZDQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZXRob2RNb2RpZmllcnMvZGVjQ29uc3RydWN0b3JBY2Nlc3MvZGF0YS54bWwKQEAgLTAsMCArMSwxMCBAQAorPHRlc3REYXRhPgorICA8ZGVsZXRlZF9ieV9tYWtlPgorICAgIDxmaWxlIHBhdGg9ImNsYXNzZXMvaW1wbC9TZXJ2ZXIuY2xhc3MiIC8+CisgICAgPGZpbGUgcGF0aD0iY2xhc3Nlcy9DbGllbnQuY2xhc3MiIC8+CisgIDwvZGVsZXRlZF9ieV9tYWtlPgorCisgIDxyZWNvbXBpbGU+CisgICAgPGZpbGUgcGF0aD0ic291cmNlL0NsaWVudC5qYXZhIiAvPgorICA8L3JlY29tcGlsZT4KKzwvdGVzdERhdGE+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWV0aG9kTW9kaWZpZXJzL2RlY0NvbnN0cnVjdG9yQWNjZXNzL3NyYy9DbGllbnQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21ldGhvZE1vZGlmaWVycy9kZWNDb25zdHJ1Y3RvckFjY2Vzcy9zcmMvQ2xpZW50LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzczZDRhMwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21ldGhvZE1vZGlmaWVycy9kZWNDb25zdHJ1Y3RvckFjY2Vzcy9zcmMvQ2xpZW50LmphdmEKQEAgLTAsMCArMSw2IEBACitpbXBvcnQgaW1wbC4qOworY2xhc3MgQ2xpZW50IHsKKyAgU2VydmVyIGZhY3RvcnkoKSB7CisgICAgcmV0dXJuIG5ldyBTZXJ2ZXIoKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21ldGhvZE1vZGlmaWVycy9kZWNDb25zdHJ1Y3RvckFjY2Vzcy9zcmMvaW1wbC9TZXJ2ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21ldGhvZE1vZGlmaWVycy9kZWNDb25zdHJ1Y3RvckFjY2Vzcy9zcmMvaW1wbC9TZXJ2ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NzdkNjJmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWV0aG9kTW9kaWZpZXJzL2RlY0NvbnN0cnVjdG9yQWNjZXNzL3NyYy9pbXBsL1NlcnZlci5qYXZhCkBAIC0wLDAgKzEsMyBAQAorcGFja2FnZSBpbXBsOworcHVibGljIGNsYXNzIFNlcnZlciB7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWV0aG9kTW9kaWZpZXJzL2RlY0NvbnN0cnVjdG9yQWNjZXNzL3NyYy9pbXBsL1NlcnZlci5qYXZhLm5ldyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21ldGhvZE1vZGlmaWVycy9kZWNDb25zdHJ1Y3RvckFjY2Vzcy9zcmMvaW1wbC9TZXJ2ZXIuamF2YS5uZXcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTUxYjIyOAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21ldGhvZE1vZGlmaWVycy9kZWNDb25zdHJ1Y3RvckFjY2Vzcy9zcmMvaW1wbC9TZXJ2ZXIuamF2YS5uZXcKQEAgLTAsMCArMSw1IEBACitwYWNrYWdlIGltcGw7CitwdWJsaWMgY2xhc3MgU2VydmVyIHsKKyAgU2VydmVyKCkgeworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWV0aG9kTW9kaWZpZXJzL2luY0FjY2Vzcy5sb2cgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZXRob2RNb2RpZmllcnMvaW5jQWNjZXNzLmxvZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZDQ3YzExCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWV0aG9kTW9kaWZpZXJzL2luY0FjY2Vzcy5sb2cKQEAgLTAsMCArMSwxMiBAQAorQ2xlYW5pbmcgb3V0cHV0IGZpbGVzOgorb3V0L3Byb2R1Y3Rpb24vSW5jQWNjZXNzL0Jhc2UuY2xhc3MKK0VuZCBvZiBmaWxlcworQ29tcGlsaW5nIGZpbGVzOgorc3JjL0Jhc2UuamF2YQorRW5kIG9mIGZpbGVzCitDbGVhbmluZyBvdXRwdXQgZmlsZXM6CitvdXQvcHJvZHVjdGlvbi9JbmNBY2Nlc3MvRGVyaXZlZC5jbGFzcworRW5kIG9mIGZpbGVzCitDb21waWxpbmcgZmlsZXM6CitzcmMvRGVyaXZlZC5qYXZhCitFbmQgb2YgZmlsZXMKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21ldGhvZE1vZGlmaWVycy9pbmNBY2Nlc3MvQmFzZS5qYXZhLm5ldyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21ldGhvZE1vZGlmaWVycy9pbmNBY2Nlc3MvQmFzZS5qYXZhLm5ldwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NmM2MWRlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWV0aG9kTW9kaWZpZXJzL2luY0FjY2Vzcy9CYXNlLmphdmEubmV3CkBAIC0wLDAgKzEsMyBAQAorY2xhc3MgQmFzZSB7CisgIHB1YmxpYyB2b2lkIGZvbygpIHt9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWV0aG9kTW9kaWZpZXJzL2luY0FjY2Vzcy9kYXRhLnhtbCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21ldGhvZE1vZGlmaWVycy9pbmNBY2Nlc3MvZGF0YS54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjUxOTc5YjYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZXRob2RNb2RpZmllcnMvaW5jQWNjZXNzL2RhdGEueG1sCkBAIC0wLDAgKzEsMTAgQEAKKzx0ZXN0RGF0YT4KKyAgPGRlbGV0ZWRfYnlfbWFrZT4KKyAgICA8ZmlsZSBwYXRoPSJjbGFzc2VzL0Jhc2UuY2xhc3MiIC8+CisgICAgPGZpbGUgcGF0aD0iY2xhc3Nlcy9EZXJpdmVkLmNsYXNzIiAvPgorICA8L2RlbGV0ZWRfYnlfbWFrZT4KKworICA8cmVjb21waWxlPgorICAgIDxmaWxlIHBhdGg9InNvdXJjZS9EZXJpdmVkLmphdmEiIC8+CisgIDwvcmVjb21waWxlPgorPC90ZXN0RGF0YT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZXRob2RNb2RpZmllcnMvaW5jQWNjZXNzL3NyYy9CYXNlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZXRob2RNb2RpZmllcnMvaW5jQWNjZXNzL3NyYy9CYXNlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGJmNmM3NwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21ldGhvZE1vZGlmaWVycy9pbmNBY2Nlc3Mvc3JjL0Jhc2UuamF2YQpAQCAtMCwwICsxLDMgQEAKK2NsYXNzIEJhc2UgeworICBwcm90ZWN0ZWQgdm9pZCBmb28oKSB7fQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21ldGhvZE1vZGlmaWVycy9pbmNBY2Nlc3Mvc3JjL0Rlcml2ZWQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21ldGhvZE1vZGlmaWVycy9pbmNBY2Nlc3Mvc3JjL0Rlcml2ZWQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNzA2ZWUyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWV0aG9kTW9kaWZpZXJzL2luY0FjY2Vzcy9zcmMvRGVyaXZlZC5qYXZhCkBAIC0wLDAgKzEsMyBAQAorY2xhc3MgRGVyaXZlZCBleHRlbmRzIEJhc2UgeworICBwcm90ZWN0ZWQgdm9pZCBmb28oKSB7fQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21ldGhvZE1vZGlmaWVycy9zZXRBYnN0cmFjdC5sb2cgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZXRob2RNb2RpZmllcnMvc2V0QWJzdHJhY3QubG9nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgzMjAyZmMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZXRob2RNb2RpZmllcnMvc2V0QWJzdHJhY3QubG9nCkBAIC0wLDAgKzEsMTUgQEAKK0NsZWFuaW5nIG91dHB1dCBmaWxlczoKK291dC9wcm9kdWN0aW9uL1NldEFic3RyYWN0L1N1cGVyLmNsYXNzCitFbmQgb2YgZmlsZXMKK0NvbXBpbGluZyBmaWxlczoKK3NyYy9TdXBlci5qYXZhCitFbmQgb2YgZmlsZXMKK0NsZWFuaW5nIG91dHB1dCBmaWxlczoKK291dC9wcm9kdWN0aW9uL1NldEFic3RyYWN0L0Fub25EZXJpdmVkJDEuY2xhc3MKK291dC9wcm9kdWN0aW9uL1NldEFic3RyYWN0L0Fub25EZXJpdmVkLmNsYXNzCitvdXQvcHJvZHVjdGlvbi9TZXRBYnN0cmFjdC9EZXJpdmVkLmNsYXNzCitFbmQgb2YgZmlsZXMKK0NvbXBpbGluZyBmaWxlczoKK3NyYy9Bbm9uRGVyaXZlZC5qYXZhCitzcmMvRGVyaXZlZC5qYXZhCitFbmQgb2YgZmlsZXMKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21ldGhvZE1vZGlmaWVycy9zZXRBYnN0cmFjdC9TdXBlci5qYXZhLm5ldyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21ldGhvZE1vZGlmaWVycy9zZXRBYnN0cmFjdC9TdXBlci5qYXZhLm5ldwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MTlhZTFhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWV0aG9kTW9kaWZpZXJzL3NldEFic3RyYWN0L1N1cGVyLmphdmEubmV3CkBAIC0wLDAgKzEsMyBAQAorYWJzdHJhY3QgY2xhc3MgU3VwZXIgeworICBhYnN0cmFjdCB2b2lkIG91dCgpOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21ldGhvZE1vZGlmaWVycy9zZXRBYnN0cmFjdC9kYXRhLnhtbCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21ldGhvZE1vZGlmaWVycy9zZXRBYnN0cmFjdC9kYXRhLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYmExZDBmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWV0aG9kTW9kaWZpZXJzL3NldEFic3RyYWN0L2RhdGEueG1sCkBAIC0wLDAgKzEsMTMgQEAKKzx0ZXN0RGF0YT4KKyAgPGRlbGV0ZWRfYnlfbWFrZT4KKyAgICA8ZmlsZSBwYXRoPSJjbGFzc2VzL1N1cGVyLmNsYXNzIiAvPgorICAgIDxmaWxlIHBhdGg9ImNsYXNzZXMvRGVyaXZlZC5jbGFzcyIgLz4KKyAgICA8ZmlsZSBwYXRoPSJjbGFzc2VzL0Fub25EZXJpdmVkLmNsYXNzIiAvPgorICAgIDxmaWxlIHBhdGg9ImNsYXNzZXMvQW5vbkRlcml2ZWQkMS5jbGFzcyIgLz4KKyAgPC9kZWxldGVkX2J5X21ha2U+CisKKyAgPHJlY29tcGlsZT4KKyAgICA8ZmlsZSBwYXRoPSJzb3VyY2UvRGVyaXZlZC5qYXZhIiAvPgorICAgIDxmaWxlIHBhdGg9InNvdXJjZS9Bbm9uRGVyaXZlZC5qYXZhIiAvPgorICA8L3JlY29tcGlsZT4KKzwvdGVzdERhdGE+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWV0aG9kTW9kaWZpZXJzL3NldEFic3RyYWN0L3NyYy9Bbm9uRGVyaXZlZC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWV0aG9kTW9kaWZpZXJzL3NldEFic3RyYWN0L3NyYy9Bbm9uRGVyaXZlZC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEyYTgwYWUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZXRob2RNb2RpZmllcnMvc2V0QWJzdHJhY3Qvc3JjL0Fub25EZXJpdmVkLmphdmEKQEAgLTAsMCArMSw1IEBACitjbGFzcyBBbm9uRGVyaXZlZCB7CisgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKKyAgICBuZXcgU3VwZXIoKXt9OworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWV0aG9kTW9kaWZpZXJzL3NldEFic3RyYWN0L3NyYy9EZXJpdmVkLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZXRob2RNb2RpZmllcnMvc2V0QWJzdHJhY3Qvc3JjL0Rlcml2ZWQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMzBmMWY5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWV0aG9kTW9kaWZpZXJzL3NldEFic3RyYWN0L3NyYy9EZXJpdmVkLmphdmEKQEAgLTAsMCArMSw0IEBACitjbGFzcyBEZXJpdmVkIGV4dGVuZHMgU3VwZXJ7CisgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21ldGhvZE1vZGlmaWVycy9zZXRBYnN0cmFjdC9zcmMvU3VwZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21ldGhvZE1vZGlmaWVycy9zZXRBYnN0cmFjdC9zcmMvU3VwZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNWJjYjlkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWV0aG9kTW9kaWZpZXJzL3NldEFic3RyYWN0L3NyYy9TdXBlci5qYXZhCkBAIC0wLDAgKzEsNSBAQAorYWJzdHJhY3QgY2xhc3MgU3VwZXIgeworICB2b2lkIG91dCgpIHsKKyAgICBTeXN0ZW0ub3V0LnByaW50bG4oIm91dCIpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWV0aG9kTW9kaWZpZXJzL3NldEZpbmFsLmxvZyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21ldGhvZE1vZGlmaWVycy9zZXRGaW5hbC5sb2cKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjMyZjAwOAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21ldGhvZE1vZGlmaWVycy9zZXRGaW5hbC5sb2cKQEAgLTAsMCArMSwxMiBAQAorQ2xlYW5pbmcgb3V0cHV0IGZpbGVzOgorb3V0L3Byb2R1Y3Rpb24vU2V0RmluYWwvU3VwZXIuY2xhc3MKK0VuZCBvZiBmaWxlcworQ29tcGlsaW5nIGZpbGVzOgorc3JjL1N1cGVyLmphdmEKK0VuZCBvZiBmaWxlcworQ2xlYW5pbmcgb3V0cHV0IGZpbGVzOgorb3V0L3Byb2R1Y3Rpb24vU2V0RmluYWwvRGVyaXZlZC5jbGFzcworRW5kIG9mIGZpbGVzCitDb21waWxpbmcgZmlsZXM6CitzcmMvRGVyaXZlZC5qYXZhCitFbmQgb2YgZmlsZXMKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21ldGhvZE1vZGlmaWVycy9zZXRGaW5hbC9TdXBlci5qYXZhLm5ldyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21ldGhvZE1vZGlmaWVycy9zZXRGaW5hbC9TdXBlci5qYXZhLm5ldwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40OGVmYjczCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWV0aG9kTW9kaWZpZXJzL3NldEZpbmFsL1N1cGVyLmphdmEubmV3CkBAIC0wLDAgKzEsNCBAQAorY2xhc3MgU3VwZXIgeworICBmaW5hbCB2b2lkIG91dCgpIHsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21ldGhvZE1vZGlmaWVycy9zZXRGaW5hbC9kYXRhLnhtbCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21ldGhvZE1vZGlmaWVycy9zZXRGaW5hbC9kYXRhLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYTVkOWU1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWV0aG9kTW9kaWZpZXJzL3NldEZpbmFsL2RhdGEueG1sCkBAIC0wLDAgKzEsMTAgQEAKKzx0ZXN0RGF0YT4KKyAgPGRlbGV0ZWRfYnlfbWFrZT4KKyAgICA8ZmlsZSBwYXRoPSJjbGFzc2VzL1N1cGVyLmNsYXNzIiAvPgorICAgIDxmaWxlIHBhdGg9ImNsYXNzZXMvRGVyaXZlZC5jbGFzcyIgLz4KKyAgPC9kZWxldGVkX2J5X21ha2U+CisKKyAgPHJlY29tcGlsZT4KKyAgICA8ZmlsZSBwYXRoPSJzb3VyY2UvRGVyaXZlZC5qYXZhIiAvPgorICA8L3JlY29tcGlsZT4KKzwvdGVzdERhdGE+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWV0aG9kTW9kaWZpZXJzL3NldEZpbmFsL3NyYy9DbGllbnQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21ldGhvZE1vZGlmaWVycy9zZXRGaW5hbC9zcmMvQ2xpZW50LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWYyYWNlYwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21ldGhvZE1vZGlmaWVycy9zZXRGaW5hbC9zcmMvQ2xpZW50LmphdmEKQEAgLTAsMCArMSw1IEBACitjbGFzcyBDbGllbnR7CisgIHsKKyAgICBuZXcgU3VwZXIoKS5vdXQoKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21ldGhvZE1vZGlmaWVycy9zZXRGaW5hbC9zcmMvRGVyaXZlZC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWV0aG9kTW9kaWZpZXJzL3NldEZpbmFsL3NyYy9EZXJpdmVkLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODcwM2M1ZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21ldGhvZE1vZGlmaWVycy9zZXRGaW5hbC9zcmMvRGVyaXZlZC5qYXZhCkBAIC0wLDAgKzEsNSBAQAorY2xhc3MgRGVyaXZlZCBleHRlbmRzIFN1cGVyeworICB2b2lkIG91dCgpIHsKKyAgIC8vIHRoaXMgbWV0aG9kIG92ZXJyaWRlcyBTdXBlci5vdXQoKQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWV0aG9kTW9kaWZpZXJzL3NldEZpbmFsL3NyYy9TdXBlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWV0aG9kTW9kaWZpZXJzL3NldEZpbmFsL3NyYy9TdXBlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE0ZmFlYjkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZXRob2RNb2RpZmllcnMvc2V0RmluYWwvc3JjL1N1cGVyLmphdmEKQEAgLTAsMCArMSw0IEBACitjbGFzcyBTdXBlciB7CisgIHZvaWQgb3V0KCkgeworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWV0aG9kTW9kaWZpZXJzL3NldFByaXZhdGUubG9nIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWV0aG9kTW9kaWZpZXJzL3NldFByaXZhdGUubG9nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVkNjdiYzcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZXRob2RNb2RpZmllcnMvc2V0UHJpdmF0ZS5sb2cKQEAgLTAsMCArMSwxMiBAQAorQ2xlYW5pbmcgb3V0cHV0IGZpbGVzOgorb3V0L3Byb2R1Y3Rpb24vU2V0UHJpdmF0ZS9BLmNsYXNzCitFbmQgb2YgZmlsZXMKK0NvbXBpbGluZyBmaWxlczoKK3NyYy9BLmphdmEKK0VuZCBvZiBmaWxlcworQ2xlYW5pbmcgb3V0cHV0IGZpbGVzOgorb3V0L3Byb2R1Y3Rpb24vU2V0UHJpdmF0ZS9CLmNsYXNzCitFbmQgb2YgZmlsZXMKK0NvbXBpbGluZyBmaWxlczoKK3NyYy9CLmphdmEKK0VuZCBvZiBmaWxlcwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWV0aG9kTW9kaWZpZXJzL3NldFByaXZhdGUvQS5qYXZhLm5ldyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21ldGhvZE1vZGlmaWVycy9zZXRQcml2YXRlL0EuamF2YS5uZXcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzY0ZmEwNQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21ldGhvZE1vZGlmaWVycy9zZXRQcml2YXRlL0EuamF2YS5uZXcKQEAgLTAsMCArMSw1IEBACitjbGFzcyBBIHsKKyAgIHByaXZhdGUgdm9pZCBmKCkgeworCisgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWV0aG9kTW9kaWZpZXJzL3NldFByaXZhdGUvc3JjL0EuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21ldGhvZE1vZGlmaWVycy9zZXRQcml2YXRlL3NyYy9BLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTczZjI1ZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21ldGhvZE1vZGlmaWVycy9zZXRQcml2YXRlL3NyYy9BLmphdmEKQEAgLTAsMCArMSw1IEBACitjbGFzcyBBIHsKKyAgICB2b2lkIGYgKCl7CisKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWV0aG9kTW9kaWZpZXJzL3NldFByaXZhdGUvc3JjL0IuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21ldGhvZE1vZGlmaWVycy9zZXRQcml2YXRlL3NyYy9CLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmY1ZTczOAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21ldGhvZE1vZGlmaWVycy9zZXRQcml2YXRlL3NyYy9CLmphdmEKQEAgLTAsMCArMSw1IEBACitjbGFzcyBCIHsKKyAgIHZvaWQgZiAoQSBhKSB7CisgICAgICAgYS5mKCk7CisgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWV0aG9kTW9kaWZpZXJzL3NldFByb3RlY3RlZC5sb2cgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZXRob2RNb2RpZmllcnMvc2V0UHJvdGVjdGVkLmxvZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNjVkYTkzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWV0aG9kTW9kaWZpZXJzL3NldFByb3RlY3RlZC5sb2cKQEAgLTAsMCArMSwxMiBAQAorQ2xlYW5pbmcgb3V0cHV0IGZpbGVzOgorb3V0L3Byb2R1Y3Rpb24vU2V0UHJvdGVjdGVkL0EuY2xhc3MKK0VuZCBvZiBmaWxlcworQ29tcGlsaW5nIGZpbGVzOgorc3JjL0EuamF2YQorRW5kIG9mIGZpbGVzCitDbGVhbmluZyBvdXRwdXQgZmlsZXM6CitvdXQvcHJvZHVjdGlvbi9TZXRQcm90ZWN0ZWQvQi5jbGFzcworRW5kIG9mIGZpbGVzCitDb21waWxpbmcgZmlsZXM6CitzcmMvQi5qYXZhCitFbmQgb2YgZmlsZXMKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21ldGhvZE1vZGlmaWVycy9zZXRQcm90ZWN0ZWQvQS5qYXZhLm5ldyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21ldGhvZE1vZGlmaWVycy9zZXRQcm90ZWN0ZWQvQS5qYXZhLm5ldwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYmJjYzVlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWV0aG9kTW9kaWZpZXJzL3NldFByb3RlY3RlZC9BLmphdmEubmV3CkBAIC0wLDAgKzEsNSBAQAorY2xhc3MgQSB7CisgICBwcm90ZWN0ZWQgdm9pZCBmKCkgeworCisgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWV0aG9kTW9kaWZpZXJzL3NldFByb3RlY3RlZC9zcmMvQS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWV0aG9kTW9kaWZpZXJzL3NldFByb3RlY3RlZC9zcmMvQS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk3M2YyNWUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZXRob2RNb2RpZmllcnMvc2V0UHJvdGVjdGVkL3NyYy9BLmphdmEKQEAgLTAsMCArMSw1IEBACitjbGFzcyBBIHsKKyAgICB2b2lkIGYgKCl7CisKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWV0aG9kTW9kaWZpZXJzL3NldFByb3RlY3RlZC9zcmMvQi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWV0aG9kTW9kaWZpZXJzL3NldFByb3RlY3RlZC9zcmMvQi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZmNWU3MzgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZXRob2RNb2RpZmllcnMvc2V0UHJvdGVjdGVkL3NyYy9CLmphdmEKQEAgLTAsMCArMSw1IEBACitjbGFzcyBCIHsKKyAgIHZvaWQgZiAoQSBhKSB7CisgICAgICAgYS5mKCk7CisgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWV0aG9kTW9kaWZpZXJzL3NldFByb3RlY3RlZC9zcmMvQy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWV0aG9kTW9kaWZpZXJzL3NldFByb3RlY3RlZC9zcmMvQy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZkMGE2NmIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZXRob2RNb2RpZmllcnMvc2V0UHJvdGVjdGVkL3NyYy9DLmphdmEKQEAgLTAsMCArMSw1IEBACitjbGFzcyBDIGV4dGVuZHMgQSB7CisgICAgdm9pZCBnKCl7CisgICAgICAgIGYoKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWV0aG9kTW9kaWZpZXJzL3NldFN0YXRpYy5sb2cgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZXRob2RNb2RpZmllcnMvc2V0U3RhdGljLmxvZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZGQzNzEwMAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21ldGhvZE1vZGlmaWVycy9zZXRTdGF0aWMubG9nCkBAIC0wLDAgKzEsMTQgQEAKK0NsZWFuaW5nIG91dHB1dCBmaWxlczoKK291dC9wcm9kdWN0aW9uL1NldFN0YXRpYy9BLmNsYXNzCitFbmQgb2YgZmlsZXMKK0NvbXBpbGluZyBmaWxlczoKK3NyYy9BLmphdmEKK0VuZCBvZiBmaWxlcworQ2xlYW5pbmcgb3V0cHV0IGZpbGVzOgorb3V0L3Byb2R1Y3Rpb24vU2V0U3RhdGljL0IuY2xhc3MKK291dC9wcm9kdWN0aW9uL1NldFN0YXRpYy9DLmNsYXNzCitFbmQgb2YgZmlsZXMKK0NvbXBpbGluZyBmaWxlczoKK3NyYy9CLmphdmEKK3NyYy9DLmphdmEKK0VuZCBvZiBmaWxlcwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWV0aG9kTW9kaWZpZXJzL3NldFN0YXRpYy9BLmphdmEubmV3IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWV0aG9kTW9kaWZpZXJzL3NldFN0YXRpYy9BLmphdmEubmV3Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMxYjhlZjMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZXRob2RNb2RpZmllcnMvc2V0U3RhdGljL0EuamF2YS5uZXcKQEAgLTAsMCArMSw1IEBACitjbGFzcyBBIHsKKyAgICBzdGF0aWMgdm9pZCBmKCl7CisKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWV0aG9kTW9kaWZpZXJzL3NldFN0YXRpYy9zcmMvQS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWV0aG9kTW9kaWZpZXJzL3NldFN0YXRpYy9zcmMvQS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRlNDM5M2IKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZXRob2RNb2RpZmllcnMvc2V0U3RhdGljL3NyYy9BLmphdmEKQEAgLTAsMCArMSw1IEBACitjbGFzcyBBIHsKKyAgICB2b2lkIGYoKXsKKworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZXRob2RNb2RpZmllcnMvc2V0U3RhdGljL3NyYy9CLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZXRob2RNb2RpZmllcnMvc2V0U3RhdGljL3NyYy9CLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmZhNTYzMwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21ldGhvZE1vZGlmaWVycy9zZXRTdGF0aWMvc3JjL0IuamF2YQpAQCAtMCwwICsxLDMgQEAKK2NsYXNzIEIgZXh0ZW5kcyBBIHsKKyAgICB2b2lkIGYgKCl7fQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21ldGhvZE1vZGlmaWVycy9zZXRTdGF0aWMvc3JjL0MuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21ldGhvZE1vZGlmaWVycy9zZXRTdGF0aWMvc3JjL0MuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZWZiOGMyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWV0aG9kTW9kaWZpZXJzL3NldFN0YXRpYy9zcmMvQy5qYXZhCkBAIC0wLDAgKzEsNiBAQAorY2xhc3MgQ3sKKyAgICB2b2lkIGcgKEEgYSwgQiBiKXsKKyAgICAgICAgYS5mKCk7CisgICAgICAgIGIuZigpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZXRob2RNb2RpZmllcnMvdW5zZXRGaW5hbC5sb2cgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZXRob2RNb2RpZmllcnMvdW5zZXRGaW5hbC5sb2cKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGQyYmIwZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21ldGhvZE1vZGlmaWVycy91bnNldEZpbmFsLmxvZwpAQCAtMCwwICsxLDYgQEAKK0NsZWFuaW5nIG91dHB1dCBmaWxlczoKK291dC9wcm9kdWN0aW9uL1Vuc2V0RmluYWwvU2VydmVyLmNsYXNzCitFbmQgb2YgZmlsZXMKK0NvbXBpbGluZyBmaWxlczoKK3NyYy9TZXJ2ZXIuamF2YQorRW5kIG9mIGZpbGVzCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZXRob2RNb2RpZmllcnMvdW5zZXRGaW5hbC9TZXJ2ZXIuamF2YS5uZXcgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZXRob2RNb2RpZmllcnMvdW5zZXRGaW5hbC9TZXJ2ZXIuamF2YS5uZXcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTA0YTRjZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21ldGhvZE1vZGlmaWVycy91bnNldEZpbmFsL1NlcnZlci5qYXZhLm5ldwpAQCAtMCwwICsxLDQgQEAKK2NsYXNzIFNlcnZlciB7CisgIHZvaWQgZm9vKCkgeworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWV0aG9kTW9kaWZpZXJzL3Vuc2V0RmluYWwvZGF0YS54bWwgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZXRob2RNb2RpZmllcnMvdW5zZXRGaW5hbC9kYXRhLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MTFlYmU3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWV0aG9kTW9kaWZpZXJzL3Vuc2V0RmluYWwvZGF0YS54bWwKQEAgLTAsMCArMSw4IEBACis8dGVzdERhdGE+CisgIDxkZWxldGVkX2J5X21ha2U+CisgICAgPGZpbGUgcGF0aD0iY2xhc3Nlcy9TZXJ2ZXIuY2xhc3MiIC8+CisgIDwvZGVsZXRlZF9ieV9tYWtlPgorCisgIDxyZWNvbXBpbGU+CisgIDwvcmVjb21waWxlPgorPC90ZXN0RGF0YT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZXRob2RNb2RpZmllcnMvdW5zZXRGaW5hbC9zcmMvQ2xpZW50LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZXRob2RNb2RpZmllcnMvdW5zZXRGaW5hbC9zcmMvQ2xpZW50LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTFhNTllMAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21ldGhvZE1vZGlmaWVycy91bnNldEZpbmFsL3NyYy9DbGllbnQuamF2YQpAQCAtMCwwICsxLDUgQEAKK2NsYXNzIENsaWVudHsKKyAgeworICAgIG5ldyBTZXJ2ZXIoKS5mb28oKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21ldGhvZE1vZGlmaWVycy91bnNldEZpbmFsL3NyYy9TZXJ2ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21ldGhvZE1vZGlmaWVycy91bnNldEZpbmFsL3NyYy9TZXJ2ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNDY2Mjg0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWV0aG9kTW9kaWZpZXJzL3Vuc2V0RmluYWwvc3JjL1NlcnZlci5qYXZhCkBAIC0wLDAgKzEsNCBAQAorY2xhc3MgU2VydmVyIHsKKyAgZmluYWwgdm9pZCBmb28oKSB7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZXRob2RNb2RpZmllcnMvdW5zZXRTdGF0aWMubG9nIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWV0aG9kTW9kaWZpZXJzL3Vuc2V0U3RhdGljLmxvZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNjBmNGQxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWV0aG9kTW9kaWZpZXJzL3Vuc2V0U3RhdGljLmxvZwpAQCAtMCwwICsxLDEyIEBACitDbGVhbmluZyBvdXRwdXQgZmlsZXM6CitvdXQvcHJvZHVjdGlvbi9VbnNldFN0YXRpYy9CYXNlLmNsYXNzCitFbmQgb2YgZmlsZXMKK0NvbXBpbGluZyBmaWxlczoKK3NyYy9CYXNlLmphdmEKK0VuZCBvZiBmaWxlcworQ2xlYW5pbmcgb3V0cHV0IGZpbGVzOgorb3V0L3Byb2R1Y3Rpb24vVW5zZXRTdGF0aWMvQ2xpZW50LmNsYXNzCitFbmQgb2YgZmlsZXMKK0NvbXBpbGluZyBmaWxlczoKK3NyYy9DbGllbnQuamF2YQorRW5kIG9mIGZpbGVzCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZXRob2RNb2RpZmllcnMvdW5zZXRTdGF0aWMvQmFzZS5qYXZhLm5ldyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21ldGhvZE1vZGlmaWVycy91bnNldFN0YXRpYy9CYXNlLmphdmEubmV3Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ2NjdlMjYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZXRob2RNb2RpZmllcnMvdW5zZXRTdGF0aWMvQmFzZS5qYXZhLm5ldwpAQCAtMCwwICsxLDUgQEAKK2NsYXNzIEJhc2UgeworICBjaGFyIG1ldGhvZCgpIHsKKyAgICByZXR1cm4gJ2EnOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWV0aG9kTW9kaWZpZXJzL3Vuc2V0U3RhdGljL2RhdGEueG1sIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWV0aG9kTW9kaWZpZXJzL3Vuc2V0U3RhdGljL2RhdGEueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRiYTMzNjQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZXRob2RNb2RpZmllcnMvdW5zZXRTdGF0aWMvZGF0YS54bWwKQEAgLTAsMCArMSwxMCBAQAorPHRlc3REYXRhPgorICA8ZGVsZXRlZF9ieV9tYWtlPgorICAgIDxmaWxlIHBhdGg9ImNsYXNzZXMvQmFzZS5jbGFzcyIgLz4KKyAgICA8ZmlsZSBwYXRoPSJjbGFzc2VzL0NsaWVudC5jbGFzcyIgLz4KKyAgPC9kZWxldGVkX2J5X21ha2U+CisKKyAgPHJlY29tcGlsZT4KKyAgICA8ZmlsZSBwYXRoPSJzb3VyY2UvQ2xpZW50LmphdmEiIC8+CisgIDwvcmVjb21waWxlPgorPC90ZXN0RGF0YT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZXRob2RNb2RpZmllcnMvdW5zZXRTdGF0aWMvc3JjL0Jhc2UuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21ldGhvZE1vZGlmaWVycy91bnNldFN0YXRpYy9zcmMvQmFzZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQyYTZlMzAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZXRob2RNb2RpZmllcnMvdW5zZXRTdGF0aWMvc3JjL0Jhc2UuamF2YQpAQCAtMCwwICsxLDUgQEAKK2NsYXNzIEJhc2UgeworICBzdGF0aWMgY2hhciBtZXRob2QoKSB7CisgICAgcmV0dXJuICdhJzsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21ldGhvZE1vZGlmaWVycy91bnNldFN0YXRpYy9zcmMvQ2xpZW50LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZXRob2RNb2RpZmllcnMvdW5zZXRTdGF0aWMvc3JjL0NsaWVudC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBiYWZjMWQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZXRob2RNb2RpZmllcnMvdW5zZXRTdGF0aWMvc3JjL0NsaWVudC5qYXZhCkBAIC0wLDAgKzEsNSBAQAorY2xhc3MgQ2xpZW50IHsKKyAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgeworICAgIFN5c3RlbS5vdXQucHJpbnRsbihCYXNlLm1ldGhvZCgpKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21ldGhvZFByb3BlcnRpZXMvYWRkVGhyb3dzLmxvZyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21ldGhvZFByb3BlcnRpZXMvYWRkVGhyb3dzLmxvZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYTZlMTZhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWV0aG9kUHJvcGVydGllcy9hZGRUaHJvd3MubG9nCkBAIC0wLDAgKzEsMTIgQEAKK0NsZWFuaW5nIG91dHB1dCBmaWxlczoKK291dC9wcm9kdWN0aW9uL0FkZFRocm93cy9wYWNrYWdlQS9TZXJ2ZXIuY2xhc3MKK0VuZCBvZiBmaWxlcworQ29tcGlsaW5nIGZpbGVzOgorc3JjL3BhY2thZ2VBL1NlcnZlci5qYXZhCitFbmQgb2YgZmlsZXMKK0NsZWFuaW5nIG91dHB1dCBmaWxlczoKK291dC9wcm9kdWN0aW9uL0FkZFRocm93cy9wYWNrYWdlQS9DbGllbnQuY2xhc3MKK0VuZCBvZiBmaWxlcworQ29tcGlsaW5nIGZpbGVzOgorc3JjL3BhY2thZ2VBL0NsaWVudC5qYXZhCitFbmQgb2YgZmlsZXMKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21ldGhvZFByb3BlcnRpZXMvYWRkVGhyb3dzL2RhdGEueG1sIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWV0aG9kUHJvcGVydGllcy9hZGRUaHJvd3MvZGF0YS54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTYyYjcyZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21ldGhvZFByb3BlcnRpZXMvYWRkVGhyb3dzL2RhdGEueG1sCkBAIC0wLDAgKzEsMTUgQEAKKzx0ZXN0RGF0YT4KKworICA8ZGVsZXRlPgorICA8L2RlbGV0ZT4KKworICA8ZGVsZXRlZF9ieV9tYWtlPgorICAgIDxmaWxlIHBhdGg9ImNsYXNzZXMvcGFja2FnZUEvU2VydmVyLmNsYXNzIiAvPgorICAgIDxmaWxlIHBhdGg9ImNsYXNzZXMvcGFja2FnZUEvQ2xpZW50LmNsYXNzIiAvPgorICA8L2RlbGV0ZWRfYnlfbWFrZT4KKworICA8cmVjb21waWxlPgorICAgIDxmaWxlIHBhdGg9InNvdXJjZS9wYWNrYWdlQS9DbGllbnQuamF2YSIgLz4KKyAgPC9yZWNvbXBpbGU+CisKKzwvdGVzdERhdGE+CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZXRob2RQcm9wZXJ0aWVzL2FkZFRocm93cy9zcmMvcGFja2FnZUEvQ2xpZW50LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZXRob2RQcm9wZXJ0aWVzL2FkZFRocm93cy9zcmMvcGFja2FnZUEvQ2xpZW50LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2VmNTQyZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21ldGhvZFByb3BlcnRpZXMvYWRkVGhyb3dzL3NyYy9wYWNrYWdlQS9DbGllbnQuamF2YQpAQCAtMCwwICsxLDEyIEBACisvKioKKyAqIGNyZWF0ZWQgYXQgSmFuIDIyLCAyMDAyCisgKiBAYXV0aG9yIEpla2EKKyAqLworcGFja2FnZSBwYWNrYWdlQTsKKworcHVibGljIGNsYXNzIENsaWVudCB7CisgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKKyAgICBTZXJ2ZXIgc2VydmVyID0gbmV3IFNlcnZlcigpOworICAgIHNlcnZlci5tZXRob2QoKTsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWV0aG9kUHJvcGVydGllcy9hZGRUaHJvd3Mvc3JjL3BhY2thZ2VBL1NlcnZlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWV0aG9kUHJvcGVydGllcy9hZGRUaHJvd3Mvc3JjL3BhY2thZ2VBL1NlcnZlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgxMGM4N2QKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZXRob2RQcm9wZXJ0aWVzL2FkZFRocm93cy9zcmMvcGFja2FnZUEvU2VydmVyLmphdmEKQEAgLTAsMCArMSwxMSBAQAorLyoqCisgKiBjcmVhdGVkIGF0IEphbiAyMiwgMjAwMgorICogQGF1dGhvciBKZWthCisgKi8KK3BhY2thZ2UgcGFja2FnZUE7CisKK3B1YmxpYyBjbGFzcyBTZXJ2ZXIgeworICBwdWJsaWMgdm9pZCBtZXRob2QoKSB7CisgICAgU3lzdGVtLm91dC5wcmludGxuKCJTZXJ2ZXIubWV0aG9kIik7CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21ldGhvZFByb3BlcnRpZXMvYWRkVGhyb3dzL3NyYy9wYWNrYWdlQS9TZXJ2ZXIuamF2YS5uZXcgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZXRob2RQcm9wZXJ0aWVzL2FkZFRocm93cy9zcmMvcGFja2FnZUEvU2VydmVyLmphdmEubmV3Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVmMzYzOGEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZXRob2RQcm9wZXJ0aWVzL2FkZFRocm93cy9zcmMvcGFja2FnZUEvU2VydmVyLmphdmEubmV3CkBAIC0wLDAgKzEsMTEgQEAKKy8qKgorICogY3JlYXRlZCBhdCBKYW4gMjIsIDIwMDIKKyAqIEBhdXRob3IgSmVrYQorICovCitwYWNrYWdlIHBhY2thZ2VBOworCitwdWJsaWMgY2xhc3MgU2VydmVyIHsKKyAgcHVibGljIHZvaWQgbWV0aG9kKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgU3lzdGVtLm91dC5wcmludGxuKCJTZXJ2ZXIubWV0aG9kIik7CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21ldGhvZFByb3BlcnRpZXMvY2hhbmdlUmV0dXJuVHlwZS5sb2cgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZXRob2RQcm9wZXJ0aWVzL2NoYW5nZVJldHVyblR5cGUubG9nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFhNjIyZGEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZXRob2RQcm9wZXJ0aWVzL2NoYW5nZVJldHVyblR5cGUubG9nCkBAIC0wLDAgKzEsMTQgQEAKK0NsZWFuaW5nIG91dHB1dCBmaWxlczoKK291dC9wcm9kdWN0aW9uL0NoYW5nZVJldHVyblR5cGUvQmFzZS5jbGFzcworRW5kIG9mIGZpbGVzCitDb21waWxpbmcgZmlsZXM6CitzcmMvQmFzZS5qYXZhCitFbmQgb2YgZmlsZXMKK0NsZWFuaW5nIG91dHB1dCBmaWxlczoKK291dC9wcm9kdWN0aW9uL0NoYW5nZVJldHVyblR5cGUvQ2xpZW50LmNsYXNzCitvdXQvcHJvZHVjdGlvbi9DaGFuZ2VSZXR1cm5UeXBlL0Rlcml2ZWQuY2xhc3MKK0VuZCBvZiBmaWxlcworQ29tcGlsaW5nIGZpbGVzOgorc3JjL0NsaWVudC5qYXZhCitzcmMvRGVyaXZlZC5qYXZhCitFbmQgb2YgZmlsZXMKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21ldGhvZFByb3BlcnRpZXMvY2hhbmdlUmV0dXJuVHlwZS9CYXNlLmphdmEubmV3IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWV0aG9kUHJvcGVydGllcy9jaGFuZ2VSZXR1cm5UeXBlL0Jhc2UuamF2YS5uZXcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTlkMWZiNAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21ldGhvZFByb3BlcnRpZXMvY2hhbmdlUmV0dXJuVHlwZS9CYXNlLmphdmEubmV3CkBAIC0wLDAgKzEsNSBAQAorY2xhc3MgQmFzZSB7CisgIHB1YmxpYyBTdHJpbmdbXSBmb28oKSB7CisgICAgcmV0dXJuIG5ldyBTdHJpbmdbXXsiQmFzZS5mb28oKSJ9OworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWV0aG9kUHJvcGVydGllcy9jaGFuZ2VSZXR1cm5UeXBlL2RhdGEueG1sIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWV0aG9kUHJvcGVydGllcy9jaGFuZ2VSZXR1cm5UeXBlL2RhdGEueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQzMDQ1YTMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZXRob2RQcm9wZXJ0aWVzL2NoYW5nZVJldHVyblR5cGUvZGF0YS54bWwKQEAgLTAsMCArMSwxNCBAQAorPHRlc3REYXRhPgorCisgIDxkZWxldGVkX2J5X21ha2U+CisgICAgPGZpbGUgcGF0aD0iY2xhc3Nlcy9CYXNlLmNsYXNzIiAvPgorICAgIDxmaWxlIHBhdGg9ImNsYXNzZXMvQ2xpZW50LmNsYXNzIiAvPgorICAgIDxmaWxlIHBhdGg9ImNsYXNzZXMvRGVyaXZlZC5jbGFzcyIgLz4KKyAgPC9kZWxldGVkX2J5X21ha2U+CisKKyAgPHJlY29tcGlsZT4KKyAgICA8ZmlsZSBwYXRoPSJzb3VyY2UvQ2xpZW50LmphdmEiIC8+CisgICAgPGZpbGUgcGF0aD0ic291cmNlL0Rlcml2ZWQuamF2YSIgLz4KKyAgPC9yZWNvbXBpbGU+CisKKzwvdGVzdERhdGE+CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZXRob2RQcm9wZXJ0aWVzL2NoYW5nZVJldHVyblR5cGUvc3JjL0Jhc2UuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21ldGhvZFByb3BlcnRpZXMvY2hhbmdlUmV0dXJuVHlwZS9zcmMvQmFzZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQzZTc4NmEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZXRob2RQcm9wZXJ0aWVzL2NoYW5nZVJldHVyblR5cGUvc3JjL0Jhc2UuamF2YQpAQCAtMCwwICsxLDUgQEAKK2NsYXNzIEJhc2UgeworICBwdWJsaWMgU3RyaW5nIGZvbygpIHsKKyAgICByZXR1cm4gIkJhc2UuZm9vKCkiOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWV0aG9kUHJvcGVydGllcy9jaGFuZ2VSZXR1cm5UeXBlL3NyYy9DbGllbnQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21ldGhvZFByb3BlcnRpZXMvY2hhbmdlUmV0dXJuVHlwZS9zcmMvQ2xpZW50LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWVlZWZlNwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21ldGhvZFByb3BlcnRpZXMvY2hhbmdlUmV0dXJuVHlwZS9zcmMvQ2xpZW50LmphdmEKQEAgLTAsMCArMSw1IEBACitjbGFzcyBDbGllbnQgeworICBwdWJsaWMgdm9pZCBmb28oKSB7CisgICAgU3RyaW5nIHMgPSBuZXcgQmFzZSgpLmZvbygpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWV0aG9kUHJvcGVydGllcy9jaGFuZ2VSZXR1cm5UeXBlL3NyYy9EZXJpdmVkLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZXRob2RQcm9wZXJ0aWVzL2NoYW5nZVJldHVyblR5cGUvc3JjL0Rlcml2ZWQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41M2Y5MTkwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWV0aG9kUHJvcGVydGllcy9jaGFuZ2VSZXR1cm5UeXBlL3NyYy9EZXJpdmVkLmphdmEKQEAgLTAsMCArMSw1IEBACitjbGFzcyBEZXJpdmVkIGV4dGVuZHMgQmFzZSB7CisgIHB1YmxpYyBTdHJpbmcgZm9vKCkgeworICAgIHJldHVybiAiRGVyaXZlZC5mb28oKSI7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZXRob2RQcm9wZXJ0aWVzL2NoYW5nZVJldHVyblR5cGUxLmxvZyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21ldGhvZFByb3BlcnRpZXMvY2hhbmdlUmV0dXJuVHlwZTEubG9nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJlNjhhY2YKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZXRob2RQcm9wZXJ0aWVzL2NoYW5nZVJldHVyblR5cGUxLmxvZwpAQCAtMCwwICsxLDEyIEBACitDbGVhbmluZyBvdXRwdXQgZmlsZXM6CitvdXQvcHJvZHVjdGlvbi9DaGFuZ2VSZXR1cm5UeXBlMS9CYXNlLmNsYXNzCitFbmQgb2YgZmlsZXMKK0NvbXBpbGluZyBmaWxlczoKK3NyYy9CYXNlLmphdmEKK0VuZCBvZiBmaWxlcworQ2xlYW5pbmcgb3V0cHV0IGZpbGVzOgorb3V0L3Byb2R1Y3Rpb24vQ2hhbmdlUmV0dXJuVHlwZTEvQ2xpZW50LmNsYXNzCitFbmQgb2YgZmlsZXMKK0NvbXBpbGluZyBmaWxlczoKK3NyYy9DbGllbnQuamF2YQorRW5kIG9mIGZpbGVzCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZXRob2RQcm9wZXJ0aWVzL2NoYW5nZVJldHVyblR5cGUxL0Jhc2UuamF2YS5uZXcgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZXRob2RQcm9wZXJ0aWVzL2NoYW5nZVJldHVyblR5cGUxL0Jhc2UuamF2YS5uZXcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzA3YjRhYgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21ldGhvZFByb3BlcnRpZXMvY2hhbmdlUmV0dXJuVHlwZTEvQmFzZS5qYXZhLm5ldwpAQCAtMCwwICsxLDUgQEAKK2NsYXNzIEJhc2UgeworICBwdWJsaWMgc3RhdGljIFN0cmluZ1tdIGZvbygpIHsKKyAgICByZXR1cm4gbmV3IFN0cmluZ1tdeyJCYXNlLmZvbygpIn07CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZXRob2RQcm9wZXJ0aWVzL2NoYW5nZVJldHVyblR5cGUxL2RhdGEueG1sIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWV0aG9kUHJvcGVydGllcy9jaGFuZ2VSZXR1cm5UeXBlMS9kYXRhLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNzJhMWFhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWV0aG9kUHJvcGVydGllcy9jaGFuZ2VSZXR1cm5UeXBlMS9kYXRhLnhtbApAQCAtMCwwICsxLDEyIEBACis8dGVzdERhdGE+CisKKyAgPGRlbGV0ZWRfYnlfbWFrZT4KKyAgICA8ZmlsZSBwYXRoPSJjbGFzc2VzL0Jhc2UuY2xhc3MiIC8+CisgICAgPGZpbGUgcGF0aD0iY2xhc3Nlcy9DbGllbnQuY2xhc3MiIC8+CisgIDwvZGVsZXRlZF9ieV9tYWtlPgorCisgIDxyZWNvbXBpbGU+CisgICAgPGZpbGUgcGF0aD0ic291cmNlL0NsaWVudC5qYXZhIiAvPgorICA8L3JlY29tcGlsZT4KKworPC90ZXN0RGF0YT4KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21ldGhvZFByb3BlcnRpZXMvY2hhbmdlUmV0dXJuVHlwZTEvc3JjL0Jhc2UuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21ldGhvZFByb3BlcnRpZXMvY2hhbmdlUmV0dXJuVHlwZTEvc3JjL0Jhc2UuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZDRiZWU4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWV0aG9kUHJvcGVydGllcy9jaGFuZ2VSZXR1cm5UeXBlMS9zcmMvQmFzZS5qYXZhCkBAIC0wLDAgKzEsNSBAQAorY2xhc3MgQmFzZSB7CisgIHB1YmxpYyBzdGF0aWMgU3RyaW5nIGZvbygpIHsKKyAgICByZXR1cm4gIkJhc2UuZm9vKCkiOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWV0aG9kUHJvcGVydGllcy9jaGFuZ2VSZXR1cm5UeXBlMS9zcmMvQ2xpZW50LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZXRob2RQcm9wZXJ0aWVzL2NoYW5nZVJldHVyblR5cGUxL3NyYy9DbGllbnQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYmE2Mzk0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWV0aG9kUHJvcGVydGllcy9jaGFuZ2VSZXR1cm5UeXBlMS9zcmMvQ2xpZW50LmphdmEKQEAgLTAsMCArMSw1IEBACitjbGFzcyBDbGllbnQgeworICBwdWJsaWMgdm9pZCBmb28oKSB7CisgICAgU3RyaW5nIHMgPSBCYXNlLmZvbygpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWV0aG9kUHJvcGVydGllcy9jaGFuZ2VTaWduYXR1cmUubG9nIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWV0aG9kUHJvcGVydGllcy9jaGFuZ2VTaWduYXR1cmUubG9nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJmNDU5NTcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZXRob2RQcm9wZXJ0aWVzL2NoYW5nZVNpZ25hdHVyZS5sb2cKQEAgLTAsMCArMSwxMiBAQAorQ2xlYW5pbmcgb3V0cHV0IGZpbGVzOgorb3V0L3Byb2R1Y3Rpb24vQ2hhbmdlU2lnbmF0dXJlL1NlcnZlci5jbGFzcworRW5kIG9mIGZpbGVzCitDb21waWxpbmcgZmlsZXM6CitzcmMvU2VydmVyLmphdmEKK0VuZCBvZiBmaWxlcworQ2xlYW5pbmcgb3V0cHV0IGZpbGVzOgorb3V0L3Byb2R1Y3Rpb24vQ2hhbmdlU2lnbmF0dXJlL0NsaWVudC5jbGFzcworRW5kIG9mIGZpbGVzCitDb21waWxpbmcgZmlsZXM6CitzcmMvQ2xpZW50LmphdmEKK0VuZCBvZiBmaWxlcwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWV0aG9kUHJvcGVydGllcy9jaGFuZ2VTaWduYXR1cmUvU2VydmVyLmphdmEubmV3IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWV0aG9kUHJvcGVydGllcy9jaGFuZ2VTaWduYXR1cmUvU2VydmVyLmphdmEubmV3Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI0NDUxZTQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZXRob2RQcm9wZXJ0aWVzL2NoYW5nZVNpZ25hdHVyZS9TZXJ2ZXIuamF2YS5uZXcKQEAgLTAsMCArMSw0IEBACitwdWJsaWMgY2xhc3MgU2VydmVyIHsKKyAgcHVibGljIFNlcnZlcihsb25nIGIpIHsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21ldGhvZFByb3BlcnRpZXMvY2hhbmdlU2lnbmF0dXJlL2RhdGEueG1sIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWV0aG9kUHJvcGVydGllcy9jaGFuZ2VTaWduYXR1cmUvZGF0YS54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTIwOWUwOQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21ldGhvZFByb3BlcnRpZXMvY2hhbmdlU2lnbmF0dXJlL2RhdGEueG1sCkBAIC0wLDAgKzEsMTIgQEAKKzx0ZXN0RGF0YT4KKworICA8ZGVsZXRlZF9ieV9tYWtlPgorICAgIDxmaWxlIHBhdGg9ImNsYXNzZXMvU2VydmVyLmNsYXNzIiAvPgorICAgIDxmaWxlIHBhdGg9ImNsYXNzZXMvQ2xpZW50LmNsYXNzIiAvPgorICA8L2RlbGV0ZWRfYnlfbWFrZT4KKworICA8cmVjb21waWxlPgorICAgIDxmaWxlIHBhdGg9InNvdXJjZS9DbGllbnQuamF2YSIgLz4KKyAgPC9yZWNvbXBpbGU+CisKKzwvdGVzdERhdGE+CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZXRob2RQcm9wZXJ0aWVzL2NoYW5nZVNpZ25hdHVyZS9zcmMvQ2xpZW50LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZXRob2RQcm9wZXJ0aWVzL2NoYW5nZVNpZ25hdHVyZS9zcmMvQ2xpZW50LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWJjOWRiYQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21ldGhvZFByb3BlcnRpZXMvY2hhbmdlU2lnbmF0dXJlL3NyYy9DbGllbnQuamF2YQpAQCAtMCwwICsxLDUgQEAKK2NsYXNzIENsaWVudCB7CisgIHB1YmxpYyB2b2lkIGZvbygpIHsKKyAgICBuZXcgU2VydmVyKDEwKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21ldGhvZFByb3BlcnRpZXMvY2hhbmdlU2lnbmF0dXJlL3NyYy9TZXJ2ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21ldGhvZFByb3BlcnRpZXMvY2hhbmdlU2lnbmF0dXJlL3NyYy9TZXJ2ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYTdmZjM4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWV0aG9kUHJvcGVydGllcy9jaGFuZ2VTaWduYXR1cmUvc3JjL1NlcnZlci5qYXZhCkBAIC0wLDAgKzEsNCBAQAorY2xhc3MgU2VydmVyIHsKKyAgcHVibGljIFNlcnZlcihpbnQgYSkgeworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWV0aG9kUHJvcGVydGllcy9jaGFuZ2VTaWduYXR1cmUxLmxvZyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21ldGhvZFByb3BlcnRpZXMvY2hhbmdlU2lnbmF0dXJlMS5sb2cKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzAxYjU0OQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21ldGhvZFByb3BlcnRpZXMvY2hhbmdlU2lnbmF0dXJlMS5sb2cKQEAgLTAsMCArMSwxMiBAQAorQ2xlYW5pbmcgb3V0cHV0IGZpbGVzOgorb3V0L3Byb2R1Y3Rpb24vQ2hhbmdlU2lnbmF0dXJlMS9TZXJ2ZXIuY2xhc3MKK0VuZCBvZiBmaWxlcworQ29tcGlsaW5nIGZpbGVzOgorc3JjL1NlcnZlci5qYXZhCitFbmQgb2YgZmlsZXMKK0NsZWFuaW5nIG91dHB1dCBmaWxlczoKK291dC9wcm9kdWN0aW9uL0NoYW5nZVNpZ25hdHVyZTEvQ2xpZW50LmNsYXNzCitFbmQgb2YgZmlsZXMKK0NvbXBpbGluZyBmaWxlczoKK3NyYy9DbGllbnQuamF2YQorRW5kIG9mIGZpbGVzCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZXRob2RQcm9wZXJ0aWVzL2NoYW5nZVNpZ25hdHVyZTEvU2VydmVyLmphdmEubmV3IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWV0aG9kUHJvcGVydGllcy9jaGFuZ2VTaWduYXR1cmUxL1NlcnZlci5qYXZhLm5ldwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jODE4OWM0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWV0aG9kUHJvcGVydGllcy9jaGFuZ2VTaWduYXR1cmUxL1NlcnZlci5qYXZhLm5ldwpAQCAtMCwwICsxLDQgQEAKK3B1YmxpYyBjbGFzcyBTZXJ2ZXIgeworICBwdWJsaWMgU2VydmVyKElmYWNlSW1wbCBpKSB7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZXRob2RQcm9wZXJ0aWVzL2NoYW5nZVNpZ25hdHVyZTEvZGF0YS54bWwgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZXRob2RQcm9wZXJ0aWVzL2NoYW5nZVNpZ25hdHVyZTEvZGF0YS54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTIwOWUwOQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21ldGhvZFByb3BlcnRpZXMvY2hhbmdlU2lnbmF0dXJlMS9kYXRhLnhtbApAQCAtMCwwICsxLDEyIEBACis8dGVzdERhdGE+CisKKyAgPGRlbGV0ZWRfYnlfbWFrZT4KKyAgICA8ZmlsZSBwYXRoPSJjbGFzc2VzL1NlcnZlci5jbGFzcyIgLz4KKyAgICA8ZmlsZSBwYXRoPSJjbGFzc2VzL0NsaWVudC5jbGFzcyIgLz4KKyAgPC9kZWxldGVkX2J5X21ha2U+CisKKyAgPHJlY29tcGlsZT4KKyAgICA8ZmlsZSBwYXRoPSJzb3VyY2UvQ2xpZW50LmphdmEiIC8+CisgIDwvcmVjb21waWxlPgorCis8L3Rlc3REYXRhPgpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWV0aG9kUHJvcGVydGllcy9jaGFuZ2VTaWduYXR1cmUxL3NyYy9DbGllbnQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21ldGhvZFByb3BlcnRpZXMvY2hhbmdlU2lnbmF0dXJlMS9zcmMvQ2xpZW50LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGZiMWU1ZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21ldGhvZFByb3BlcnRpZXMvY2hhbmdlU2lnbmF0dXJlMS9zcmMvQ2xpZW50LmphdmEKQEAgLTAsMCArMSw1IEBACitjbGFzcyBDbGllbnQgeworICBwdWJsaWMgdm9pZCBmb28oKSB7CisgICAgbmV3IFNlcnZlcihJZmFjZUltcGwuY3JlYXRlKCkpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWV0aG9kUHJvcGVydGllcy9jaGFuZ2VTaWduYXR1cmUxL3NyYy9JZmFjZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWV0aG9kUHJvcGVydGllcy9jaGFuZ2VTaWduYXR1cmUxL3NyYy9JZmFjZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY1MDAxM2MKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZXRob2RQcm9wZXJ0aWVzL2NoYW5nZVNpZ25hdHVyZTEvc3JjL0lmYWNlLmphdmEKQEAgLTAsMCArMSwzIEBACitwdWJsaWMgaW50ZXJmYWNlIElmYWNlIHsKKyAgdm9pZCBmKCk7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWV0aG9kUHJvcGVydGllcy9jaGFuZ2VTaWduYXR1cmUxL3NyYy9JZmFjZUltcGwuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21ldGhvZFByb3BlcnRpZXMvY2hhbmdlU2lnbmF0dXJlMS9zcmMvSWZhY2VJbXBsLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDE1YTBlMQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL21ldGhvZFByb3BlcnRpZXMvY2hhbmdlU2lnbmF0dXJlMS9zcmMvSWZhY2VJbXBsLmphdmEKQEAgLTAsMCArMSw4IEBACitwdWJsaWMgY2xhc3MgSWZhY2VJbXBsIGltcGxlbWVudHMgSWZhY2UgeworCisgIHB1YmxpYyBzdGF0aWMgSWZhY2VJbXBsIGNyZWF0ZSgpIHsKKyAgICByZXR1cm4gbmV3IElmYWNlSW1wbCgpOworICB9CisKKyAgcHVibGljIHZvaWQgZigpIHt9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWV0aG9kUHJvcGVydGllcy9jaGFuZ2VTaWduYXR1cmUxL3NyYy9NYWluLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZXRob2RQcm9wZXJ0aWVzL2NoYW5nZVNpZ25hdHVyZTEvc3JjL01haW4uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NmYxNWYyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWV0aG9kUHJvcGVydGllcy9jaGFuZ2VTaWduYXR1cmUxL3NyYy9NYWluLmphdmEKQEAgLTAsMCArMSw1IEBACitwdWJsaWMgY2xhc3MgTWFpbiB7CisgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKKyAgICBuZXcgQ2xpZW50KCkuZm9vKCk7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9tZXRob2RQcm9wZXJ0aWVzL2NoYW5nZVNpZ25hdHVyZTEvc3JjL1NlcnZlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWV0aG9kUHJvcGVydGllcy9jaGFuZ2VTaWduYXR1cmUxL3NyYy9TZXJ2ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNThkNzcyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvbWV0aG9kUHJvcGVydGllcy9jaGFuZ2VTaWduYXR1cmUxL3NyYy9TZXJ2ZXIuamF2YQpAQCAtMCwwICsxLDQgQEAKK2NsYXNzIFNlcnZlciB7CisgIHB1YmxpYyBTZXJ2ZXIoSWZhY2UgaSkgeworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvcGFja2FnZUluZm8vcGFja2FnZUluZm9Ob1JlY29tcGlsZS5sb2cgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9wYWNrYWdlSW5mby9wYWNrYWdlSW5mb05vUmVjb21waWxlLmxvZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNjlkZTI5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvcGFja2FnZUluZm8vcGFja2FnZUluZm9Ob1JlY29tcGlsZS5sb2cKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL3BhY2thZ2VJbmZvL3BhY2thZ2VJbmZvTm9SZWNvbXBpbGUvc3JjL3AxL3BhY2thZ2UtaW5mby5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvcGFja2FnZUluZm8vcGFja2FnZUluZm9Ob1JlY29tcGlsZS9zcmMvcDEvcGFja2FnZS1pbmZvLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmMzMTJmNgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL3BhY2thZ2VJbmZvL3BhY2thZ2VJbmZvTm9SZWNvbXBpbGUvc3JjL3AxL3BhY2thZ2UtaW5mby5qYXZhCkBAIC0wLDAgKzEgQEAKK3BhY2thZ2UgcDE7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvcGFja2FnZUluZm8vcGFja2FnZUluZm9Ob1JlY29tcGlsZTIubG9nIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvcGFja2FnZUluZm8vcGFja2FnZUluZm9Ob1JlY29tcGlsZTIubG9nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU2OWRlMjkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9wYWNrYWdlSW5mby9wYWNrYWdlSW5mb05vUmVjb21waWxlMi5sb2cKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL3BhY2thZ2VJbmZvL3BhY2thZ2VJbmZvTm9SZWNvbXBpbGUyL3NyYy9wMS9hbm5vdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvcGFja2FnZUluZm8vcGFja2FnZUluZm9Ob1JlY29tcGlsZTIvc3JjL3AxL2Fubm90LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzc0ZDQwMTMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9wYWNrYWdlSW5mby9wYWNrYWdlSW5mb05vUmVjb21waWxlMi9zcmMvcDEvYW5ub3QuamF2YQpAQCAtMCwwICsxLDQgQEAKK3BhY2thZ2UgcDE7CisKK3B1YmxpYyBAaW50ZXJmYWNlIGFubm90IHsKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL3BhY2thZ2VJbmZvL3BhY2thZ2VJbmZvTm9SZWNvbXBpbGUyL3NyYy9wMS9wYWNrYWdlLWluZm8uamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL3BhY2thZ2VJbmZvL3BhY2thZ2VJbmZvTm9SZWNvbXBpbGUyL3NyYy9wMS9wYWNrYWdlLWluZm8uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNmQxNzI1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvcGFja2FnZUluZm8vcGFja2FnZUluZm9Ob1JlY29tcGlsZTIvc3JjL3AxL3BhY2thZ2UtaW5mby5qYXZhCkBAIC0wLDAgKzEgQEAKK0Bhbm5vdCBwYWNrYWdlIHAxOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL3BhY2thZ2VJbmZvL3BhY2thZ2VJbmZvUmVjb21waWxlT25Db25zdGFudENoYW5nZS5sb2cgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9wYWNrYWdlSW5mby9wYWNrYWdlSW5mb1JlY29tcGlsZU9uQ29uc3RhbnRDaGFuZ2UubG9nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNjZWYzM2MKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9wYWNrYWdlSW5mby9wYWNrYWdlSW5mb1JlY29tcGlsZU9uQ29uc3RhbnRDaGFuZ2UubG9nCkBAIC0wLDAgKzEsMTYgQEAKK0NsZWFuaW5nIG91dHB1dCBmaWxlczoKK291dC9wcm9kdWN0aW9uL1BhY2thZ2VJbmZvUmVjb21waWxlT25Db25zdGFudENoYW5nZS9idWcvTmFtZXNwYWNlLmNsYXNzCitFbmQgb2YgZmlsZXMKK0NvbXBpbGluZyBmaWxlczoKK3NyYy9idWcvTmFtZXNwYWNlLmphdmEKK0VuZCBvZiBmaWxlcworQ2xlYW5pbmcgb3V0cHV0IGZpbGVzOgorb3V0L3Byb2R1Y3Rpb24vUGFja2FnZUluZm9SZWNvbXBpbGVPbkNvbnN0YW50Q2hhbmdlL2J1Zy9Bbm4uY2xhc3MKK291dC9wcm9kdWN0aW9uL1BhY2thZ2VJbmZvUmVjb21waWxlT25Db25zdGFudENoYW5nZS9idWcvTmFtZXNwYWNlLmNsYXNzCitvdXQvcHJvZHVjdGlvbi9QYWNrYWdlSW5mb1JlY29tcGlsZU9uQ29uc3RhbnRDaGFuZ2UvYnVnL3BhY2thZ2UtaW5mby5jbGFzcworRW5kIG9mIGZpbGVzCitDb21waWxpbmcgZmlsZXM6CitzcmMvYnVnL0Fubi5qYXZhCitzcmMvYnVnL05hbWVzcGFjZS5qYXZhCitzcmMvYnVnL3BhY2thZ2UtaW5mby5qYXZhCitFbmQgb2YgZmlsZXMKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL3BhY2thZ2VJbmZvL3BhY2thZ2VJbmZvUmVjb21waWxlT25Db25zdGFudENoYW5nZS9zcmMvYnVnL0Fubi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvcGFja2FnZUluZm8vcGFja2FnZUluZm9SZWNvbXBpbGVPbkNvbnN0YW50Q2hhbmdlL3NyYy9idWcvQW5uLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmU0ZGQyZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL3BhY2thZ2VJbmZvL3BhY2thZ2VJbmZvUmVjb21waWxlT25Db25zdGFudENoYW5nZS9zcmMvYnVnL0Fubi5qYXZhCkBAIC0wLDAgKzEsMTIgQEAKK3BhY2thZ2UgYnVnOworCitpbXBvcnQgamF2YS5sYW5nLmFubm90YXRpb24uUmV0ZW50aW9uOworaW1wb3J0IGphdmEubGFuZy5hbm5vdGF0aW9uLlRhcmdldDsKKworaW1wb3J0IHN0YXRpYyBqYXZhLmxhbmcuYW5ub3RhdGlvbi5FbGVtZW50VHlwZS4qOworaW1wb3J0IHN0YXRpYyBqYXZhLmxhbmcuYW5ub3RhdGlvbi5SZXRlbnRpb25Qb2xpY3kuKjsKKworQFJldGVudGlvbihSVU5USU1FKSBAVGFyZ2V0KHtQQUNLQUdFfSkKK3B1YmxpYyBAaW50ZXJmYWNlIEFubiB7CisgICAgU3RyaW5nIG5hbWVzcGFjZSgpIGRlZmF1bHQgIiI7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvcGFja2FnZUluZm8vcGFja2FnZUluZm9SZWNvbXBpbGVPbkNvbnN0YW50Q2hhbmdlL3NyYy9idWcvTmFtZXNwYWNlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9wYWNrYWdlSW5mby9wYWNrYWdlSW5mb1JlY29tcGlsZU9uQ29uc3RhbnRDaGFuZ2Uvc3JjL2J1Zy9OYW1lc3BhY2UuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xN2UzOTU5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvcGFja2FnZUluZm8vcGFja2FnZUluZm9SZWNvbXBpbGVPbkNvbnN0YW50Q2hhbmdlL3NyYy9idWcvTmFtZXNwYWNlLmphdmEKQEAgLTAsMCArMSw1IEBACitwYWNrYWdlIGJ1ZzsKKworcHVibGljIGNsYXNzIE5hbWVzcGFjZSB7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgVVJJID0gInVyaSI7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvcGFja2FnZUluZm8vcGFja2FnZUluZm9SZWNvbXBpbGVPbkNvbnN0YW50Q2hhbmdlL3NyYy9idWcvTmFtZXNwYWNlLmphdmEubmV3IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvcGFja2FnZUluZm8vcGFja2FnZUluZm9SZWNvbXBpbGVPbkNvbnN0YW50Q2hhbmdlL3NyYy9idWcvTmFtZXNwYWNlLmphdmEubmV3Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkxNGUyMDUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC9wYWNrYWdlSW5mby9wYWNrYWdlSW5mb1JlY29tcGlsZU9uQ29uc3RhbnRDaGFuZ2Uvc3JjL2J1Zy9OYW1lc3BhY2UuamF2YS5uZXcKQEAgLTAsMCArMSw1IEBACitwYWNrYWdlIGJ1ZzsKKworcHVibGljIGNsYXNzIE5hbWVzcGFjZSB7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgVVJJID0gInVyaTIiOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL3BhY2thZ2VJbmZvL3BhY2thZ2VJbmZvUmVjb21waWxlT25Db25zdGFudENoYW5nZS9zcmMvYnVnL3BhY2thZ2UtaW5mby5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvcGFja2FnZUluZm8vcGFja2FnZUluZm9SZWNvbXBpbGVPbkNvbnN0YW50Q2hhbmdlL3NyYy9idWcvcGFja2FnZS1pbmZvLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYThiMTllZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL3BhY2thZ2VJbmZvL3BhY2thZ2VJbmZvUmVjb21waWxlT25Db25zdGFudENoYW5nZS9zcmMvYnVnL3BhY2thZ2UtaW5mby5qYXZhCkBAIC0wLDAgKzEsMiBAQAorQGJ1Zy5Bbm4obmFtZXNwYWNlID0gTmFtZXNwYWNlLlVSSSkKK3BhY2thZ2UgYnVnOwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvdWlEZXNpZ25lci9zaW1wbGUvYnVpbGQubG9nIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvdWlEZXNpZ25lci9zaW1wbGUvYnVpbGQubG9nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdmODM2MjQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC91aURlc2lnbmVyL3NpbXBsZS9idWlsZC5sb2cKQEAgLTAsMCArMSw2IEBACitDb21waWxpbmcgZmlsZXM6CitzcmMveHh4L015Rm9ybS5qYXZhCitFbmQgb2YgZmlsZXMKK0NvbXBpbGluZyBmb3JtczoKK3NyYy94eHgvTXlGb3JtLmZvcm0KK0VuZCBvZiBmaWxlcwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvdWlEZXNpZ25lci9zaW1wbGUvc3JjL3h4eC9NeUZvcm0uZm9ybSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL3VpRGVzaWduZXIvc2ltcGxlL3NyYy94eHgvTXlGb3JtLmZvcm0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzA0ZDk0NgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlU2VydmVyL2luY3JlbWVudGFsL3VpRGVzaWduZXIvc2ltcGxlL3NyYy94eHgvTXlGb3JtLmZvcm0KQEAgLTAsMCArMSwxMiBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxmb3JtIHhtbG5zPSJodHRwOi8vd3d3LmludGVsbGlqLmNvbS91aWRlc2lnbmVyL2Zvcm0vIiB2ZXJzaW9uPSIxIiBiaW5kLXRvLWNsYXNzPSJ4eHguTXlGb3JtIj4KKyAgPGdyaWQgaWQ9IjI3ZGM2IiBiaW5kaW5nPSJteVJvb3RQYW5lbCIgbGF5b3V0LW1hbmFnZXI9IkdyaWRMYXlvdXRNYW5hZ2VyIiByb3ctY291bnQ9IjEiIGNvbHVtbi1jb3VudD0iMSIgc2FtZS1zaXplLWhvcml6b250YWxseT0iZmFsc2UiIHNhbWUtc2l6ZS12ZXJ0aWNhbGx5PSJmYWxzZSIgaGdhcD0iLTEiIHZnYXA9Ii0xIj4KKyAgICA8bWFyZ2luIHRvcD0iMCIgbGVmdD0iMCIgYm90dG9tPSIwIiByaWdodD0iMCIvPgorICAgIDxjb25zdHJhaW50cz4KKyAgICAgIDx4eSB4PSIyMCIgeT0iMjAiIHdpZHRoPSI1MDAiIGhlaWdodD0iNDAwIi8+CisgICAgPC9jb25zdHJhaW50cz4KKyAgICA8cHJvcGVydGllcy8+CisgICAgPGJvcmRlciB0eXBlPSJub25lIi8+CisgICAgPGNoaWxkcmVuLz4KKyAgPC9ncmlkPgorPC9mb3JtPgpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvdWlEZXNpZ25lci9zaW1wbGUvc3JjL3h4eC9NeUZvcm0uZm9ybS5uZXcgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC91aURlc2lnbmVyL3NpbXBsZS9zcmMveHh4L015Rm9ybS5mb3JtLm5ldwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMjg2YWE3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvdWlEZXNpZ25lci9zaW1wbGUvc3JjL3h4eC9NeUZvcm0uZm9ybS5uZXcKQEAgLTAsMCArMSwxNCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxmb3JtIHhtbG5zPSJodHRwOi8vd3d3LmludGVsbGlqLmNvbS91aWRlc2lnbmVyL2Zvcm0vIiB2ZXJzaW9uPSIxIiBiaW5kLXRvLWNsYXNzPSJ4eHguTXlGb3JtIj4KKyAgPGdyaWQgaWQ9IjI3ZGM2IiBiaW5kaW5nPSJteVJvb3RQYW5lbCIgbGF5b3V0LW1hbmFnZXI9IkdyaWRMYXlvdXRNYW5hZ2VyIiByb3ctY291bnQ9IjEiIGNvbHVtbi1jb3VudD0iMSIgc2FtZS1zaXplLWhvcml6b250YWxseT0iZmFsc2UiIHNhbWUtc2l6ZS12ZXJ0aWNhbGx5PSJmYWxzZSIgaGdhcD0iLTEiIHZnYXA9Ii0xIj4KKyAgICA8bWFyZ2luIHRvcD0iMCIgbGVmdD0iMCIgYm90dG9tPSIwIiByaWdodD0iMCIvPgorICAgIDxjb25zdHJhaW50cz4KKyAgICAgIDx4eSB4PSIyMCIgeT0iMjAiIHdpZHRoPSI1MDAiIGhlaWdodD0iNDAwIi8+CisgICAgPC9jb25zdHJhaW50cz4KKyAgICA8cHJvcGVydGllcz4KKyAgICAgIDxlbmFibGVkIHZhbHVlPSJmYWxzZSIvPgorICAgIDwvcHJvcGVydGllcz4KKyAgICA8Ym9yZGVyIHR5cGU9Im5vbmUiLz4KKyAgICA8Y2hpbGRyZW4vPgorICA8L2dyaWQ+Cis8L2Zvcm0+CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZVNlcnZlci9pbmNyZW1lbnRhbC91aURlc2lnbmVyL3NpbXBsZS9zcmMveHh4L015Rm9ybS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvdWlEZXNpZ25lci9zaW1wbGUvc3JjL3h4eC9NeUZvcm0uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45YjczMDE0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVTZXJ2ZXIvaW5jcmVtZW50YWwvdWlEZXNpZ25lci9zaW1wbGUvc3JjL3h4eC9NeUZvcm0uamF2YQpAQCAtMCwwICsxLDI2IEBACisvKgorICogQ29weXJpZ2h0IDIwMDAtMjAxMiBKZXRCcmFpbnMgcy5yLm8uCisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcGFja2FnZSB4eHg7CisKK2ltcG9ydCBqYXZheC5zd2luZy4qOworCitwdWJsaWMgY2xhc3MgTXlGb3JtIHsKKyAgcHJpdmF0ZSBKUGFuZWwgbXlSb290UGFuZWw7CisKKyAgcHVibGljIEpQYW5lbCBnZXRNeVJvb3RQYW5lbCgpIHsKKyAgICByZXR1cm4gbXlSb290UGFuZWw7CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlci9ub3ROdWxsVmVyaWZpY2F0aW9uL0NvbnN0cnVjdG9yUGFyYW0uamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlci9ub3ROdWxsVmVyaWZpY2F0aW9uL0NvbnN0cnVjdG9yUGFyYW0uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kOTlhY2JkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVyL25vdE51bGxWZXJpZmljYXRpb24vQ29uc3RydWN0b3JQYXJhbS5qYXZhCkBAIC0wLDAgKzEsNiBAQAoraW1wb3J0IG9yZy5qZXRicmFpbnMuYW5ub3RhdGlvbnMuTm90TnVsbDsKKworcHVibGljIGNsYXNzIENvbnN0cnVjdG9yUGFyYW0geworICBwdWJsaWMgQ29uc3RydWN0b3JQYXJhbShATm90TnVsbCBPYmplY3QgbykgeworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVyL25vdE51bGxWZXJpZmljYXRpb24vRW51bUNvbnN0cnVjdG9yLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZXIvbm90TnVsbFZlcmlmaWNhdGlvbi9FbnVtQ29uc3RydWN0b3IuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYzc4NDIzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVyL25vdE51bGxWZXJpZmljYXRpb24vRW51bUNvbnN0cnVjdG9yLmphdmEKQEAgLTAsMCArMSwxMSBAQAoraW1wb3J0IG9yZy5qZXRicmFpbnMuYW5ub3RhdGlvbnMuTm90TnVsbDsKKworcHVibGljIGVudW0gRW51bUNvbnN0cnVjdG9yIHsKKyAgICBWYWx1ZSgibGFiZWwiKTsKKworICAgIHByaXZhdGUgZmluYWwgU3RyaW5nIGxhYmVsOworCisgICAgRW51bUNvbnN0cnVjdG9yKEBOb3ROdWxsIFN0cmluZyBsYWJlbCkgeworICAgICAgICB0aGlzLmxhYmVsID0gbGFiZWw7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVyL25vdE51bGxWZXJpZmljYXRpb24vRW51bUNvbnN0cnVjdG9yU2Vjb25kUGFyYW0uamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlci9ub3ROdWxsVmVyaWZpY2F0aW9uL0VudW1Db25zdHJ1Y3RvclNlY29uZFBhcmFtLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjA4MWI1ZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlci9ub3ROdWxsVmVyaWZpY2F0aW9uL0VudW1Db25zdHJ1Y3RvclNlY29uZFBhcmFtLmphdmEKQEAgLTAsMCArMSwyMyBAQAorLyoKKyAqIENvcHlyaWdodCAyMDAwLTIwMTAgSmV0QnJhaW5zIHMuci5vLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK2ltcG9ydCBvcmcuamV0YnJhaW5zLmFubm90YXRpb25zLk5vdE51bGw7CisKK3B1YmxpYyBlbnVtIEVudW1Db25zdHJ1Y3RvclNlY29uZFBhcmFtIHsKKyAgICBWYWx1ZSgiMSIsICIyIik7CisKKyAgICBFbnVtQ29uc3RydWN0b3JTZWNvbmRQYXJhbShTdHJpbmcgczEsIEBOb3ROdWxsIFN0cmluZyBzMikgeworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlci9ub3ROdWxsVmVyaWZpY2F0aW9uL011bHRpcGxlUmV0dXJucy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVyL25vdE51bGxWZXJpZmljYXRpb24vTXVsdGlwbGVSZXR1cm5zLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjE0NDZhNgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlci9ub3ROdWxsVmVyaWZpY2F0aW9uL011bHRpcGxlUmV0dXJucy5qYXZhCkBAIC0wLDAgKzEsOSBAQAoraW1wb3J0IG9yZy5qZXRicmFpbnMuYW5ub3RhdGlvbnMuTm90TnVsbDsKKworcHVibGljIGNsYXNzIE11bHRpcGxlUmV0dXJucyB7CisgIEBOb3ROdWxsIHB1YmxpYyBPYmplY3QgdGVzdChpbnQgaSkgeworICAgIGlmIChpID09IDApIHJldHVybiBudWxsOworICAgIGlmIChpID09IDEpIHJldHVybiBudWxsOworICAgIHJldHVybiBudWxsOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVyL25vdE51bGxWZXJpZmljYXRpb24vTm9uU3RhdGljSW5uZXJDbGFzcy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVyL25vdE51bGxWZXJpZmljYXRpb24vTm9uU3RhdGljSW5uZXJDbGFzcy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMzNjEzZmEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZXIvbm90TnVsbFZlcmlmaWNhdGlvbi9Ob25TdGF0aWNJbm5lckNsYXNzLmphdmEKQEAgLTAsMCArMSwxMiBAQAoraW1wb3J0IG9yZy5qZXRicmFpbnMuYW5ub3RhdGlvbnMuTm90TnVsbDsKKworcHVibGljIGNsYXNzIE5vblN0YXRpY0lubmVyQ2xhc3MgeworICBwdWJsaWMgTm9uU3RhdGljSW5uZXJDbGFzcygpIHsKKyAgICBuZXcgSW5uZXIoIiIpOworICB9CisKKyAgcHVibGljIGNsYXNzIElubmVyIHsKKyAgICBwdWJsaWMgSW5uZXIoQE5vdE51bGwgU3RyaW5nIHMpIHsKKyAgICB9CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlci9ub3ROdWxsVmVyaWZpY2F0aW9uL1NpbXBsZVBhcmFtLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZXIvbm90TnVsbFZlcmlmaWNhdGlvbi9TaW1wbGVQYXJhbS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIyMWY5NmUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZXIvbm90TnVsbFZlcmlmaWNhdGlvbi9TaW1wbGVQYXJhbS5qYXZhCkBAIC0wLDAgKzEsNiBAQAoraW1wb3J0IG9yZy5qZXRicmFpbnMuYW5ub3RhdGlvbnMuTm90TnVsbDsKKworcHVibGljIGNsYXNzIFNpbXBsZVBhcmFtIHsKKyAgcHVibGljIHZvaWQgdGVzdChATm90TnVsbCBPYmplY3QgbykgeworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVyL25vdE51bGxWZXJpZmljYXRpb24vU2ltcGxlUmV0dXJuLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZXIvbm90TnVsbFZlcmlmaWNhdGlvbi9TaW1wbGVSZXR1cm4uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYTg1YWQ5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVyL25vdE51bGxWZXJpZmljYXRpb24vU2ltcGxlUmV0dXJuLmphdmEKQEAgLTAsMCArMSw3IEBACitpbXBvcnQgb3JnLmpldGJyYWlucy5hbm5vdGF0aW9ucy5Ob3ROdWxsOworCitwdWJsaWMgY2xhc3MgU2ltcGxlUmV0dXJuIHsKKyAgQE5vdE51bGwgcHVibGljIE9iamVjdCB0ZXN0KCkgeworICAgIHJldHVybiBudWxsOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVyL25vdE51bGxWZXJpZmljYXRpb24vU3RhdGljSW5uZXJDbGFzcy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvbXBpbGVyL25vdE51bGxWZXJpZmljYXRpb24vU3RhdGljSW5uZXJDbGFzcy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEwODEwOTAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZXIvbm90TnVsbFZlcmlmaWNhdGlvbi9TdGF0aWNJbm5lckNsYXNzLmphdmEKQEAgLTAsMCArMSwxMiBAQAoraW1wb3J0IG9yZy5qZXRicmFpbnMuYW5ub3RhdGlvbnMuTm90TnVsbDsKKworcHVibGljIGNsYXNzIFN0YXRpY0lubmVyQ2xhc3MgeworICBwdWJsaWMgU3RhdGljSW5uZXJDbGFzcygpIHsKKyAgICBuZXcgSW5uZXIoIiIpOworICB9CisKKyAgcHVibGljIHN0YXRpYyBjbGFzcyBJbm5lciB7CisgICAgcHVibGljIElubmVyKEBOb3ROdWxsIFN0cmluZyBzKSB7CisgICAgfQorICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZXIvbm90TnVsbFZlcmlmaWNhdGlvbi9hbm5vdGF0aW9ucy5qYXIgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29tcGlsZXIvbm90TnVsbFZlcmlmaWNhdGlvbi9hbm5vdGF0aW9ucy5qYXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDU4NjBkOAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb21waWxlci9ub3ROdWxsVmVyaWZpY2F0aW9uL2Fubm90YXRpb25zLmphcgpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29yZS9sb2FkaW5nVGVzdC8uaWRlYS8ubmFtZSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb3JlL2xvYWRpbmdUZXN0Ly5pZGVhLy5uYW1lCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVlY2RhMDgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29yZS9sb2FkaW5nVGVzdC8uaWRlYS8ubmFtZQpAQCAtMCwwICsxIEBACitsb2FkaW5nVGVzdApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb3JlL2xvYWRpbmdUZXN0Ly5pZGVhL2NvbXBpbGVyLnhtbCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb3JlL2xvYWRpbmdUZXN0Ly5pZGVhL2NvbXBpbGVyLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMWI0MWM1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvcmUvbG9hZGluZ1Rlc3QvLmlkZWEvY29tcGlsZXIueG1sCkBAIC0wLDAgKzEsMjEgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8cHJvamVjdCB2ZXJzaW9uPSI0Ij4KKyAgPGNvbXBvbmVudCBuYW1lPSJDb21waWxlckNvbmZpZ3VyYXRpb24iPgorICAgIDxvcHRpb24gbmFtZT0iREVGQVVMVF9DT01QSUxFUiIgdmFsdWU9IkphdmFjIiAvPgorICAgIDxyZXNvdXJjZUV4dGVuc2lvbnMgLz4KKyAgICA8d2lsZGNhcmRSZXNvdXJjZVBhdHRlcm5zPgorICAgICAgPGVudHJ5IG5hbWU9Ij8qLnByb3BlcnRpZXMiIC8+CisgICAgICA8ZW50cnkgbmFtZT0iPyoueG1sIiAvPgorICAgICAgPGVudHJ5IG5hbWU9Ij8qLmdpZiIgLz4KKyAgICAgIDxlbnRyeSBuYW1lPSI/Ki5wbmciIC8+CisgICAgICA8ZW50cnkgbmFtZT0iPyouanBlZyIgLz4KKyAgICAgIDxlbnRyeSBuYW1lPSI/Ki5qcGciIC8+CisgICAgICA8ZW50cnkgbmFtZT0iPyouaHRtbCIgLz4KKyAgICAgIDxlbnRyeSBuYW1lPSI/Ki5kdGQiIC8+CisgICAgICA8ZW50cnkgbmFtZT0iPyoudGxkIiAvPgorICAgICAgPGVudHJ5IG5hbWU9Ij8qLmZ0bCIgLz4KKyAgICA8L3dpbGRjYXJkUmVzb3VyY2VQYXR0ZXJucz4KKyAgICA8YW5ub3RhdGlvblByb2Nlc3NpbmcgZW5hYmxlZD0iZmFsc2UiIHVzZUNsYXNzcGF0aD0idHJ1ZSIgLz4KKyAgPC9jb21wb25lbnQ+Cis8L3Byb2plY3Q+CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb3JlL2xvYWRpbmdUZXN0Ly5pZGVhL2NvcHlyaWdodC9wcm9maWxlc19zZXR0aW5ncy54bWwgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29yZS9sb2FkaW5nVGVzdC8uaWRlYS9jb3B5cmlnaHQvcHJvZmlsZXNfc2V0dGluZ3MueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM1NzI1NzEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29yZS9sb2FkaW5nVGVzdC8uaWRlYS9jb3B5cmlnaHQvcHJvZmlsZXNfc2V0dGluZ3MueG1sCkBAIC0wLDAgKzEsNSBAQAorPGNvbXBvbmVudCBuYW1lPSJDb3B5cmlnaHRNYW5hZ2VyIj4KKyAgPHNldHRpbmdzIGRlZmF1bHQ9IiI+CisgICAgPG1vZHVsZTJjb3B5cmlnaHQgLz4KKyAgPC9zZXR0aW5ncz4KKzwvY29tcG9uZW50PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb3JlL2xvYWRpbmdUZXN0Ly5pZGVhL2VuY29kaW5ncy54bWwgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29yZS9sb2FkaW5nVGVzdC8uaWRlYS9lbmNvZGluZ3MueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUyMDZkNzAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29yZS9sb2FkaW5nVGVzdC8uaWRlYS9lbmNvZGluZ3MueG1sCkBAIC0wLDAgKzEsNSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxwcm9qZWN0IHZlcnNpb249IjQiPgorICA8Y29tcG9uZW50IG5hbWU9IkVuY29kaW5nIiB1c2VVVEZHdWVzc2luZz0idHJ1ZSIgbmF0aXZlMkFzY2lpRm9yUHJvcGVydGllc0ZpbGVzPSJmYWxzZSIgLz4KKzwvcHJvamVjdD4KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvcmUvbG9hZGluZ1Rlc3QvLmlkZWEvbGlicmFyaWVzL2Fubm90YXRpb25zLnhtbCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb3JlL2xvYWRpbmdUZXN0Ly5pZGVhL2xpYnJhcmllcy9hbm5vdGF0aW9ucy54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDlkYjYwOQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb3JlL2xvYWRpbmdUZXN0Ly5pZGVhL2xpYnJhcmllcy9hbm5vdGF0aW9ucy54bWwKQEAgLTAsMCArMSw5IEBACis8Y29tcG9uZW50IG5hbWU9ImxpYnJhcnlUYWJsZSI+CisgIDxsaWJyYXJ5IG5hbWU9ImFubm90YXRpb25zIj4KKyAgICA8Q0xBU1NFUz4KKyAgICAgIDxyb290IHVybD0iamFyOi8vJFBST0pFQ1RfRElSJC9hbm5vdGF0aW9ucy5qYXIhLyIgLz4KKyAgICA8L0NMQVNTRVM+CisgICAgPEpBVkFET0MgLz4KKyAgICA8U09VUkNFUyAvPgorICA8L2xpYnJhcnk+Cis8L2NvbXBvbmVudD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29yZS9sb2FkaW5nVGVzdC8uaWRlYS9taXNjLnhtbCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb3JlL2xvYWRpbmdUZXN0Ly5pZGVhL21pc2MueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY4OThlNjQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29yZS9sb2FkaW5nVGVzdC8uaWRlYS9taXNjLnhtbApAQCAtMCwwICsxLDc5IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPHByb2plY3QgdmVyc2lvbj0iNCI+CisgIDxjb21wb25lbnQgbmFtZT0iQW50Q29uZmlndXJhdGlvbiI+CisgICAgPGRlZmF1bHRBbnQgYnVuZGxlZEFudD0idHJ1ZSIgLz4KKyAgPC9jb21wb25lbnQ+CisgIDxjb21wb25lbnQgbmFtZT0iUHJvamVjdEtleSI+CisgICAgPG9wdGlvbiBuYW1lPSJzdGF0ZSIgdmFsdWU9InByb2plY3Q6Ly9mODI5MTE4ZC1kNDY3LTRjMzEtYjFlNC1lNDY0YzUxMmI4NGIiIC8+CisgIDwvY29tcG9uZW50PgorICA8Y29tcG9uZW50IG5hbWU9IlByb2plY3RSZXNvdXJjZXMiPgorICAgIDxkZWZhdWx0LWh0bWwtZG9jdHlwZT5odHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sPC9kZWZhdWx0LWh0bWwtZG9jdHlwZT4KKyAgPC9jb21wb25lbnQ+CisgIDxjb21wb25lbnQgbmFtZT0iUHJvamVjdFJvb3RNYW5hZ2VyIiB2ZXJzaW9uPSIyIiBsYW5ndWFnZUxldmVsPSJKREtfMV8zIiBhc3NlcnQta2V5d29yZD0iZmFsc2UiIGpkay0xNT0iZmFsc2UiIHByb2plY3QtamRrLW5hbWU9IjEuNiIgcHJvamVjdC1qZGstdHlwZT0iSmF2YVNESyI+CisgICAgPG91dHB1dCB1cmw9ImZpbGU6Ly8kUFJPSkVDVF9ESVIkL291dCIgLz4KKyAgPC9jb21wb25lbnQ+CisgIDxjb21wb25lbnQgbmFtZT0iUHlDb25zb2xlT3B0aW9uc1Byb3ZpZGVyIj4KKyAgICA8b3B0aW9uIG5hbWU9Im15UHl0aG9uQ29uc29sZVN0YXRlIj4KKyAgICAgIDxQeUNvbnNvbGVTZXR0aW5ncyAvPgorICAgIDwvb3B0aW9uPgorICAgIDxvcHRpb24gbmFtZT0ibXlEamFuZ29Db25zb2xlU3RhdGUiPgorICAgICAgPFB5Q29uc29sZVNldHRpbmdzIC8+CisgICAgPC9vcHRpb24+CisgIDwvY29tcG9uZW50PgorICA8Y29tcG9uZW50IG5hbWU9IlN2bkNvbmZpZ3VyYXRpb24iIG1heEFubm90YXRlUmV2aXNpb25zPSI1MDAiPgorICAgIDxvcHRpb24gbmFtZT0iVVNFUiIgdmFsdWU9IiIgLz4KKyAgICA8b3B0aW9uIG5hbWU9IlBBU1NXT1JEIiB2YWx1ZT0iIiAvPgorICAgIDxvcHRpb24gbmFtZT0ibXlTU0hDb25uZWN0aW9uVGltZW91dCIgdmFsdWU9IjMwMDAwIiAvPgorICAgIDxvcHRpb24gbmFtZT0ibXlTU0hSZWFkVGltZW91dCIgdmFsdWU9IjMwMDAwIiAvPgorICAgIDxvcHRpb24gbmFtZT0iTEFTVF9NRVJHRURfUkVWSVNJT04iIC8+CisgICAgPG9wdGlvbiBuYW1lPSJNRVJHRV9EUllfUlVOIiB2YWx1ZT0iZmFsc2UiIC8+CisgICAgPG9wdGlvbiBuYW1lPSJNRVJHRV9ESUZGX1VTRV9BTkNFU1RSWSIgdmFsdWU9InRydWUiIC8+CisgICAgPG9wdGlvbiBuYW1lPSJVUERBVEVfTE9DS19PTl9ERU1BTkQiIHZhbHVlPSJmYWxzZSIgLz4KKyAgICA8b3B0aW9uIG5hbWU9IklHTk9SRV9TUEFDRVNfSU5fTUVSR0UiIHZhbHVlPSJmYWxzZSIgLz4KKyAgICA8b3B0aW9uIG5hbWU9IkRFVEVDVF9ORVNURURfQ09QSUVTIiB2YWx1ZT0idHJ1ZSIgLz4KKyAgICA8b3B0aW9uIG5hbWU9IkNIRUNLX05FU1RFRF9GT1JfUVVJQ0tfTUVSR0UiIHZhbHVlPSJmYWxzZSIgLz4KKyAgICA8b3B0aW9uIG5hbWU9IklHTk9SRV9TUEFDRVNfSU5fQU5OT1RBVEUiIHZhbHVlPSJ0cnVlIiAvPgorICAgIDxvcHRpb24gbmFtZT0iU0hPV19NRVJHRV9TT1VSQ0VTX0lOX0FOTk9UQVRFIiB2YWx1ZT0idHJ1ZSIgLz4KKyAgICA8b3B0aW9uIG5hbWU9IkZPUkNFX1VQREFURSIgdmFsdWU9ImZhbHNlIiAvPgorICAgIDxteUlzVXNlRGVmYXVsdFByb3h5PmZhbHNlPC9teUlzVXNlRGVmYXVsdFByb3h5PgorICA8L2NvbXBvbmVudD4KKyAgPGNvbXBvbmVudCBuYW1lPSJWc3NDb25maWd1cmF0aW9uIj4KKyAgICA8b3B0aW9uIG5hbWU9IkNMSUVOVF9QQVRIIiB2YWx1ZT0iIiAvPgorICAgIDxvcHRpb24gbmFtZT0iU1JDU0FGRUlOSV9QQVRIIiB2YWx1ZT0iIiAvPgorICAgIDxvcHRpb24gbmFtZT0iVVNFUl9OQU1FIiB2YWx1ZT0iIiAvPgorICAgIDxvcHRpb24gbmFtZT0iUFdEIiB2YWx1ZT0iIiAvPgorICAgIDxDaGVja291dE9wdGlvbnM+CisgICAgICA8b3B0aW9uIG5hbWU9IkNPTU1FTlQiIHZhbHVlPSIiIC8+CisgICAgICA8b3B0aW9uIG5hbWU9IkRPX05PVF9HRVRfTEFURVNUX1ZFUlNJT04iIHZhbHVlPSJmYWxzZSIgLz4KKyAgICAgIDxvcHRpb24gbmFtZT0iUkVQTEFDRV9XUklUQUJMRSIgdmFsdWU9ImZhbHNlIiAvPgorICAgICAgPG9wdGlvbiBuYW1lPSJSRUNVUlNJVkUiIHZhbHVlPSJmYWxzZSIgLz4KKyAgICA8L0NoZWNrb3V0T3B0aW9ucz4KKyAgICA8Q2hlY2tpbk9wdGlvbnM+CisgICAgICA8b3B0aW9uIG5hbWU9IkNPTU1FTlQiIHZhbHVlPSIiIC8+CisgICAgICA8b3B0aW9uIG5hbWU9IktFRVBfQ0hFQ0tFRF9PVVQiIHZhbHVlPSJmYWxzZSIgLz4KKyAgICAgIDxvcHRpb24gbmFtZT0iUkVDVVJTSVZFIiB2YWx1ZT0iZmFsc2UiIC8+CisgICAgPC9DaGVja2luT3B0aW9ucz4KKyAgICA8QWRkT3B0aW9ucz4KKyAgICAgIDxvcHRpb24gbmFtZT0iU1RPUkVfT05MWV9MQVRFU1RfVkVSU0lPTiIgdmFsdWU9ImZhbHNlIiAvPgorICAgICAgPG9wdGlvbiBuYW1lPSJDSEVDS19PVVRfSU1NRURJQVRFTFkiIHZhbHVlPSJmYWxzZSIgLz4KKyAgICA8L0FkZE9wdGlvbnM+CisgICAgPFVuZG9jaGVja291dE9wdGlvbnM+CisgICAgICA8b3B0aW9uIG5hbWU9Ik1BS0VfV1JJVEFCTEUiIHZhbHVlPSJmYWxzZSIgLz4KKyAgICAgIDxvcHRpb24gbmFtZT0iUkVQTEFDRV9MT0NBTF9DT1BZIiB2YWx1ZT0iMiIgLz4KKyAgICAgIDxvcHRpb24gbmFtZT0iUkVDVVJTSVZFIiB2YWx1ZT0iZmFsc2UiIC8+CisgICAgPC9VbmRvY2hlY2tvdXRPcHRpb25zPgorICAgIDxHZXRPcHRpb25zPgorICAgICAgPG9wdGlvbiBuYW1lPSJSRVBMQUNFX1dSSVRBQkxFIiB2YWx1ZT0iMCIgLz4KKyAgICAgIDxvcHRpb24gbmFtZT0iTUFLRV9XUklUQUJMRSIgdmFsdWU9ImZhbHNlIiAvPgorICAgICAgPG9wdGlvbiBuYW1lPSJBTlNXRVJfTkVHQVRJVkVMWSIgdmFsdWU9ImZhbHNlIiAvPgorICAgICAgPG9wdGlvbiBuYW1lPSJBTlNXRVJfUE9TSVRJVkVMWSIgdmFsdWU9ImZhbHNlIiAvPgorICAgICAgPG9wdGlvbiBuYW1lPSJSRUNVUlNJVkUiIHZhbHVlPSJmYWxzZSIgLz4KKyAgICAgIDxvcHRpb24gbmFtZT0iVkVSU0lPTiIgLz4KKyAgICA8L0dldE9wdGlvbnM+CisgIDwvY29tcG9uZW50PgorICA8Y29tcG9uZW50IG5hbWU9ImFudFdvcmtzcGFjZUNvbmZpZ3VyYXRpb24iPgorICAgIDxvcHRpb24gbmFtZT0iSVNfQVVUT1NDUk9MTF9UT19TT1VSQ0UiIHZhbHVlPSJmYWxzZSIgLz4KKyAgICA8b3B0aW9uIG5hbWU9IkZJTFRFUl9UQVJHRVRTIiB2YWx1ZT0iZmFsc2UiIC8+CisgIDwvY29tcG9uZW50PgorPC9wcm9qZWN0PgorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29yZS9sb2FkaW5nVGVzdC8uaWRlYS9tb2R1bGVzLnhtbCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb3JlL2xvYWRpbmdUZXN0Ly5pZGVhL21vZHVsZXMueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJjYzcyNGEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29yZS9sb2FkaW5nVGVzdC8uaWRlYS9tb2R1bGVzLnhtbApAQCAtMCwwICsxLDkgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8cHJvamVjdCB2ZXJzaW9uPSI0Ij4KKyAgPGNvbXBvbmVudCBuYW1lPSJQcm9qZWN0TW9kdWxlTWFuYWdlciI+CisgICAgPG1vZHVsZXM+CisgICAgICA8bW9kdWxlIGZpbGV1cmw9ImZpbGU6Ly8kUFJPSkVDVF9ESVIkL2xvYWRpbmdUZXN0LmltbCIgZmlsZXBhdGg9IiRQUk9KRUNUX0RJUiQvbG9hZGluZ1Rlc3QuaW1sIiAvPgorICAgIDwvbW9kdWxlcz4KKyAgPC9jb21wb25lbnQ+Cis8L3Byb2plY3Q+CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb3JlL2xvYWRpbmdUZXN0Ly5pZGVhL3Njb3Blcy9zY29wZV9zZXR0aW5ncy54bWwgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29yZS9sb2FkaW5nVGVzdC8uaWRlYS9zY29wZXMvc2NvcGVfc2V0dGluZ3MueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkyMjAwM2IKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29yZS9sb2FkaW5nVGVzdC8uaWRlYS9zY29wZXMvc2NvcGVfc2V0dGluZ3MueG1sCkBAIC0wLDAgKzEsNSBAQAorPGNvbXBvbmVudCBuYW1lPSJEZXBlbmRlbmN5VmFsaWRhdGlvbk1hbmFnZXIiPgorICA8c3RhdGU+CisgICAgPG9wdGlvbiBuYW1lPSJTS0lQX0lNUE9SVF9TVEFURU1FTlRTIiB2YWx1ZT0iZmFsc2UiIC8+CisgIDwvc3RhdGU+Cis8L2NvbXBvbmVudD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29yZS9sb2FkaW5nVGVzdC8uaWRlYS91aURlc2lnbmVyLnhtbCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb3JlL2xvYWRpbmdUZXN0Ly5pZGVhL3VpRGVzaWduZXIueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNiMDAwMjAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29yZS9sb2FkaW5nVGVzdC8uaWRlYS91aURlc2lnbmVyLnhtbApAQCAtMCwwICsxLDEyNSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxwcm9qZWN0IHZlcnNpb249IjQiPgorICA8Y29tcG9uZW50IG5hbWU9IlBhbGV0dGUyIj4KKyAgICA8Z3JvdXAgbmFtZT0iU3dpbmciPgorICAgICAgPGl0ZW0gY2xhc3M9ImNvbS5pbnRlbGxpai51aURlc2lnbmVyLkhTcGFjZXIiIHRvb2x0aXAtdGV4dD0iSG9yaXpvbnRhbCBTcGFjZXIiIGljb249Ii9jb20vaW50ZWxsaWovdWlEZXNpZ25lci9pY29ucy9oc3BhY2VyLnBuZyIgcmVtb3ZhYmxlPSJmYWxzZSIgYXV0by1jcmVhdGUtYmluZGluZz0iZmFsc2UiIGNhbi1hdHRhY2gtbGFiZWw9ImZhbHNlIj4KKyAgICAgICAgPGRlZmF1bHQtY29uc3RyYWludHMgdnNpemUtcG9saWN5PSIxIiBoc2l6ZS1wb2xpY3k9IjYiIGFuY2hvcj0iMCIgZmlsbD0iMSIgLz4KKyAgICAgIDwvaXRlbT4KKyAgICAgIDxpdGVtIGNsYXNzPSJjb20uaW50ZWxsaWoudWlEZXNpZ25lci5WU3BhY2VyIiB0b29sdGlwLXRleHQ9IlZlcnRpY2FsIFNwYWNlciIgaWNvbj0iL2NvbS9pbnRlbGxpai91aURlc2lnbmVyL2ljb25zL3ZzcGFjZXIucG5nIiByZW1vdmFibGU9ImZhbHNlIiBhdXRvLWNyZWF0ZS1iaW5kaW5nPSJmYWxzZSIgY2FuLWF0dGFjaC1sYWJlbD0iZmFsc2UiPgorICAgICAgICA8ZGVmYXVsdC1jb25zdHJhaW50cyB2c2l6ZS1wb2xpY3k9IjYiIGhzaXplLXBvbGljeT0iMSIgYW5jaG9yPSIwIiBmaWxsPSIyIiAvPgorICAgICAgPC9pdGVtPgorICAgICAgPGl0ZW0gY2xhc3M9ImphdmF4LnN3aW5nLkpQYW5lbCIgaWNvbj0iL2NvbS9pbnRlbGxpai91aURlc2lnbmVyL2ljb25zL3BhbmVsLnBuZyIgcmVtb3ZhYmxlPSJmYWxzZSIgYXV0by1jcmVhdGUtYmluZGluZz0iZmFsc2UiIGNhbi1hdHRhY2gtbGFiZWw9ImZhbHNlIj4KKyAgICAgICAgPGRlZmF1bHQtY29uc3RyYWludHMgdnNpemUtcG9saWN5PSIzIiBoc2l6ZS1wb2xpY3k9IjMiIGFuY2hvcj0iMCIgZmlsbD0iMyIgLz4KKyAgICAgIDwvaXRlbT4KKyAgICAgIDxpdGVtIGNsYXNzPSJqYXZheC5zd2luZy5KU2Nyb2xsUGFuZSIgaWNvbj0iL2NvbS9pbnRlbGxpai91aURlc2lnbmVyL2ljb25zL3Njcm9sbFBhbmUucG5nIiByZW1vdmFibGU9ImZhbHNlIiBhdXRvLWNyZWF0ZS1iaW5kaW5nPSJmYWxzZSIgY2FuLWF0dGFjaC1sYWJlbD0idHJ1ZSI+CisgICAgICAgIDxkZWZhdWx0LWNvbnN0cmFpbnRzIHZzaXplLXBvbGljeT0iNyIgaHNpemUtcG9saWN5PSI3IiBhbmNob3I9IjAiIGZpbGw9IjMiIC8+CisgICAgICA8L2l0ZW0+CisgICAgICA8aXRlbSBjbGFzcz0iamF2YXguc3dpbmcuSkJ1dHRvbiIgaWNvbj0iL2NvbS9pbnRlbGxpai91aURlc2lnbmVyL2ljb25zL2J1dHRvbi5wbmciIHJlbW92YWJsZT0iZmFsc2UiIGF1dG8tY3JlYXRlLWJpbmRpbmc9InRydWUiIGNhbi1hdHRhY2gtbGFiZWw9ImZhbHNlIj4KKyAgICAgICAgPGRlZmF1bHQtY29uc3RyYWludHMgdnNpemUtcG9saWN5PSIwIiBoc2l6ZS1wb2xpY3k9IjMiIGFuY2hvcj0iMCIgZmlsbD0iMSIgLz4KKyAgICAgICAgPGluaXRpYWwtdmFsdWVzPgorICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJ0ZXh0IiB2YWx1ZT0iQnV0dG9uIiAvPgorICAgICAgICA8L2luaXRpYWwtdmFsdWVzPgorICAgICAgPC9pdGVtPgorICAgICAgPGl0ZW0gY2xhc3M9ImphdmF4LnN3aW5nLkpSYWRpb0J1dHRvbiIgaWNvbj0iL2NvbS9pbnRlbGxpai91aURlc2lnbmVyL2ljb25zL3JhZGlvQnV0dG9uLnBuZyIgcmVtb3ZhYmxlPSJmYWxzZSIgYXV0by1jcmVhdGUtYmluZGluZz0idHJ1ZSIgY2FuLWF0dGFjaC1sYWJlbD0iZmFsc2UiPgorICAgICAgICA8ZGVmYXVsdC1jb25zdHJhaW50cyB2c2l6ZS1wb2xpY3k9IjAiIGhzaXplLXBvbGljeT0iMyIgYW5jaG9yPSI4IiBmaWxsPSIwIiAvPgorICAgICAgICA8aW5pdGlhbC12YWx1ZXM+CisgICAgICAgICAgPHByb3BlcnR5IG5hbWU9InRleHQiIHZhbHVlPSJSYWRpb0J1dHRvbiIgLz4KKyAgICAgICAgPC9pbml0aWFsLXZhbHVlcz4KKyAgICAgIDwvaXRlbT4KKyAgICAgIDxpdGVtIGNsYXNzPSJqYXZheC5zd2luZy5KQ2hlY2tCb3giIGljb249Ii9jb20vaW50ZWxsaWovdWlEZXNpZ25lci9pY29ucy9jaGVja0JveC5wbmciIHJlbW92YWJsZT0iZmFsc2UiIGF1dG8tY3JlYXRlLWJpbmRpbmc9InRydWUiIGNhbi1hdHRhY2gtbGFiZWw9ImZhbHNlIj4KKyAgICAgICAgPGRlZmF1bHQtY29uc3RyYWludHMgdnNpemUtcG9saWN5PSIwIiBoc2l6ZS1wb2xpY3k9IjMiIGFuY2hvcj0iOCIgZmlsbD0iMCIgLz4KKyAgICAgICAgPGluaXRpYWwtdmFsdWVzPgorICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJ0ZXh0IiB2YWx1ZT0iQ2hlY2tCb3giIC8+CisgICAgICAgIDwvaW5pdGlhbC12YWx1ZXM+CisgICAgICA8L2l0ZW0+CisgICAgICA8aXRlbSBjbGFzcz0iamF2YXguc3dpbmcuSkxhYmVsIiBpY29uPSIvY29tL2ludGVsbGlqL3VpRGVzaWduZXIvaWNvbnMvbGFiZWwucG5nIiByZW1vdmFibGU9ImZhbHNlIiBhdXRvLWNyZWF0ZS1iaW5kaW5nPSJmYWxzZSIgY2FuLWF0dGFjaC1sYWJlbD0iZmFsc2UiPgorICAgICAgICA8ZGVmYXVsdC1jb25zdHJhaW50cyB2c2l6ZS1wb2xpY3k9IjAiIGhzaXplLXBvbGljeT0iMCIgYW5jaG9yPSI4IiBmaWxsPSIwIiAvPgorICAgICAgICA8aW5pdGlhbC12YWx1ZXM+CisgICAgICAgICAgPHByb3BlcnR5IG5hbWU9InRleHQiIHZhbHVlPSJMYWJlbCIgLz4KKyAgICAgICAgPC9pbml0aWFsLXZhbHVlcz4KKyAgICAgIDwvaXRlbT4KKyAgICAgIDxpdGVtIGNsYXNzPSJqYXZheC5zd2luZy5KVGV4dEZpZWxkIiBpY29uPSIvY29tL2ludGVsbGlqL3VpRGVzaWduZXIvaWNvbnMvdGV4dEZpZWxkLnBuZyIgcmVtb3ZhYmxlPSJmYWxzZSIgYXV0by1jcmVhdGUtYmluZGluZz0idHJ1ZSIgY2FuLWF0dGFjaC1sYWJlbD0idHJ1ZSI+CisgICAgICAgIDxkZWZhdWx0LWNvbnN0cmFpbnRzIHZzaXplLXBvbGljeT0iMCIgaHNpemUtcG9saWN5PSI2IiBhbmNob3I9IjgiIGZpbGw9IjEiPgorICAgICAgICAgIDxwcmVmZXJyZWQtc2l6ZSB3aWR0aD0iMTUwIiBoZWlnaHQ9Ii0xIiAvPgorICAgICAgICA8L2RlZmF1bHQtY29uc3RyYWludHM+CisgICAgICA8L2l0ZW0+CisgICAgICA8aXRlbSBjbGFzcz0iamF2YXguc3dpbmcuSlBhc3N3b3JkRmllbGQiIGljb249Ii9jb20vaW50ZWxsaWovdWlEZXNpZ25lci9pY29ucy9wYXNzd29yZEZpZWxkLnBuZyIgcmVtb3ZhYmxlPSJmYWxzZSIgYXV0by1jcmVhdGUtYmluZGluZz0idHJ1ZSIgY2FuLWF0dGFjaC1sYWJlbD0idHJ1ZSI+CisgICAgICAgIDxkZWZhdWx0LWNvbnN0cmFpbnRzIHZzaXplLXBvbGljeT0iMCIgaHNpemUtcG9saWN5PSI2IiBhbmNob3I9IjgiIGZpbGw9IjEiPgorICAgICAgICAgIDxwcmVmZXJyZWQtc2l6ZSB3aWR0aD0iMTUwIiBoZWlnaHQ9Ii0xIiAvPgorICAgICAgICA8L2RlZmF1bHQtY29uc3RyYWludHM+CisgICAgICA8L2l0ZW0+CisgICAgICA8aXRlbSBjbGFzcz0iamF2YXguc3dpbmcuSkZvcm1hdHRlZFRleHRGaWVsZCIgaWNvbj0iL2NvbS9pbnRlbGxpai91aURlc2lnbmVyL2ljb25zL2Zvcm1hdHRlZFRleHRGaWVsZC5wbmciIHJlbW92YWJsZT0iZmFsc2UiIGF1dG8tY3JlYXRlLWJpbmRpbmc9InRydWUiIGNhbi1hdHRhY2gtbGFiZWw9InRydWUiPgorICAgICAgICA8ZGVmYXVsdC1jb25zdHJhaW50cyB2c2l6ZS1wb2xpY3k9IjAiIGhzaXplLXBvbGljeT0iNiIgYW5jaG9yPSI4IiBmaWxsPSIxIj4KKyAgICAgICAgICA8cHJlZmVycmVkLXNpemUgd2lkdGg9IjE1MCIgaGVpZ2h0PSItMSIgLz4KKyAgICAgICAgPC9kZWZhdWx0LWNvbnN0cmFpbnRzPgorICAgICAgPC9pdGVtPgorICAgICAgPGl0ZW0gY2xhc3M9ImphdmF4LnN3aW5nLkpUZXh0QXJlYSIgaWNvbj0iL2NvbS9pbnRlbGxpai91aURlc2lnbmVyL2ljb25zL3RleHRBcmVhLnBuZyIgcmVtb3ZhYmxlPSJmYWxzZSIgYXV0by1jcmVhdGUtYmluZGluZz0idHJ1ZSIgY2FuLWF0dGFjaC1sYWJlbD0idHJ1ZSI+CisgICAgICAgIDxkZWZhdWx0LWNvbnN0cmFpbnRzIHZzaXplLXBvbGljeT0iNiIgaHNpemUtcG9saWN5PSI2IiBhbmNob3I9IjAiIGZpbGw9IjMiPgorICAgICAgICAgIDxwcmVmZXJyZWQtc2l6ZSB3aWR0aD0iMTUwIiBoZWlnaHQ9IjUwIiAvPgorICAgICAgICA8L2RlZmF1bHQtY29uc3RyYWludHM+CisgICAgICA8L2l0ZW0+CisgICAgICA8aXRlbSBjbGFzcz0iamF2YXguc3dpbmcuSlRleHRQYW5lIiBpY29uPSIvY29tL2ludGVsbGlqL3VpRGVzaWduZXIvaWNvbnMvdGV4dFBhbmUucG5nIiByZW1vdmFibGU9ImZhbHNlIiBhdXRvLWNyZWF0ZS1iaW5kaW5nPSJ0cnVlIiBjYW4tYXR0YWNoLWxhYmVsPSJ0cnVlIj4KKyAgICAgICAgPGRlZmF1bHQtY29uc3RyYWludHMgdnNpemUtcG9saWN5PSI2IiBoc2l6ZS1wb2xpY3k9IjYiIGFuY2hvcj0iMCIgZmlsbD0iMyI+CisgICAgICAgICAgPHByZWZlcnJlZC1zaXplIHdpZHRoPSIxNTAiIGhlaWdodD0iNTAiIC8+CisgICAgICAgIDwvZGVmYXVsdC1jb25zdHJhaW50cz4KKyAgICAgIDwvaXRlbT4KKyAgICAgIDxpdGVtIGNsYXNzPSJqYXZheC5zd2luZy5KRWRpdG9yUGFuZSIgaWNvbj0iL2NvbS9pbnRlbGxpai91aURlc2lnbmVyL2ljb25zL2VkaXRvclBhbmUucG5nIiByZW1vdmFibGU9ImZhbHNlIiBhdXRvLWNyZWF0ZS1iaW5kaW5nPSJ0cnVlIiBjYW4tYXR0YWNoLWxhYmVsPSJ0cnVlIj4KKyAgICAgICAgPGRlZmF1bHQtY29uc3RyYWludHMgdnNpemUtcG9saWN5PSI2IiBoc2l6ZS1wb2xpY3k9IjYiIGFuY2hvcj0iMCIgZmlsbD0iMyI+CisgICAgICAgICAgPHByZWZlcnJlZC1zaXplIHdpZHRoPSIxNTAiIGhlaWdodD0iNTAiIC8+CisgICAgICAgIDwvZGVmYXVsdC1jb25zdHJhaW50cz4KKyAgICAgIDwvaXRlbT4KKyAgICAgIDxpdGVtIGNsYXNzPSJqYXZheC5zd2luZy5KQ29tYm9Cb3giIGljb249Ii9jb20vaW50ZWxsaWovdWlEZXNpZ25lci9pY29ucy9jb21ib0JveC5wbmciIHJlbW92YWJsZT0iZmFsc2UiIGF1dG8tY3JlYXRlLWJpbmRpbmc9InRydWUiIGNhbi1hdHRhY2gtbGFiZWw9InRydWUiPgorICAgICAgICA8ZGVmYXVsdC1jb25zdHJhaW50cyB2c2l6ZS1wb2xpY3k9IjAiIGhzaXplLXBvbGljeT0iMiIgYW5jaG9yPSI4IiBmaWxsPSIxIiAvPgorICAgICAgPC9pdGVtPgorICAgICAgPGl0ZW0gY2xhc3M9ImphdmF4LnN3aW5nLkpUYWJsZSIgaWNvbj0iL2NvbS9pbnRlbGxpai91aURlc2lnbmVyL2ljb25zL3RhYmxlLnBuZyIgcmVtb3ZhYmxlPSJmYWxzZSIgYXV0by1jcmVhdGUtYmluZGluZz0idHJ1ZSIgY2FuLWF0dGFjaC1sYWJlbD0iZmFsc2UiPgorICAgICAgICA8ZGVmYXVsdC1jb25zdHJhaW50cyB2c2l6ZS1wb2xpY3k9IjYiIGhzaXplLXBvbGljeT0iNiIgYW5jaG9yPSIwIiBmaWxsPSIzIj4KKyAgICAgICAgICA8cHJlZmVycmVkLXNpemUgd2lkdGg9IjE1MCIgaGVpZ2h0PSI1MCIgLz4KKyAgICAgICAgPC9kZWZhdWx0LWNvbnN0cmFpbnRzPgorICAgICAgPC9pdGVtPgorICAgICAgPGl0ZW0gY2xhc3M9ImphdmF4LnN3aW5nLkpMaXN0IiBpY29uPSIvY29tL2ludGVsbGlqL3VpRGVzaWduZXIvaWNvbnMvbGlzdC5wbmciIHJlbW92YWJsZT0iZmFsc2UiIGF1dG8tY3JlYXRlLWJpbmRpbmc9InRydWUiIGNhbi1hdHRhY2gtbGFiZWw9ImZhbHNlIj4KKyAgICAgICAgPGRlZmF1bHQtY29uc3RyYWludHMgdnNpemUtcG9saWN5PSI2IiBoc2l6ZS1wb2xpY3k9IjIiIGFuY2hvcj0iMCIgZmlsbD0iMyI+CisgICAgICAgICAgPHByZWZlcnJlZC1zaXplIHdpZHRoPSIxNTAiIGhlaWdodD0iNTAiIC8+CisgICAgICAgIDwvZGVmYXVsdC1jb25zdHJhaW50cz4KKyAgICAgIDwvaXRlbT4KKyAgICAgIDxpdGVtIGNsYXNzPSJqYXZheC5zd2luZy5KVHJlZSIgaWNvbj0iL2NvbS9pbnRlbGxpai91aURlc2lnbmVyL2ljb25zL3RyZWUucG5nIiByZW1vdmFibGU9ImZhbHNlIiBhdXRvLWNyZWF0ZS1iaW5kaW5nPSJ0cnVlIiBjYW4tYXR0YWNoLWxhYmVsPSJmYWxzZSI+CisgICAgICAgIDxkZWZhdWx0LWNvbnN0cmFpbnRzIHZzaXplLXBvbGljeT0iNiIgaHNpemUtcG9saWN5PSI2IiBhbmNob3I9IjAiIGZpbGw9IjMiPgorICAgICAgICAgIDxwcmVmZXJyZWQtc2l6ZSB3aWR0aD0iMTUwIiBoZWlnaHQ9IjUwIiAvPgorICAgICAgICA8L2RlZmF1bHQtY29uc3RyYWludHM+CisgICAgICA8L2l0ZW0+CisgICAgICA8aXRlbSBjbGFzcz0iamF2YXguc3dpbmcuSlRhYmJlZFBhbmUiIGljb249Ii9jb20vaW50ZWxsaWovdWlEZXNpZ25lci9pY29ucy90YWJiZWRQYW5lLnBuZyIgcmVtb3ZhYmxlPSJmYWxzZSIgYXV0by1jcmVhdGUtYmluZGluZz0idHJ1ZSIgY2FuLWF0dGFjaC1sYWJlbD0iZmFsc2UiPgorICAgICAgICA8ZGVmYXVsdC1jb25zdHJhaW50cyB2c2l6ZS1wb2xpY3k9IjMiIGhzaXplLXBvbGljeT0iMyIgYW5jaG9yPSIwIiBmaWxsPSIzIj4KKyAgICAgICAgICA8cHJlZmVycmVkLXNpemUgd2lkdGg9IjIwMCIgaGVpZ2h0PSIyMDAiIC8+CisgICAgICAgIDwvZGVmYXVsdC1jb25zdHJhaW50cz4KKyAgICAgIDwvaXRlbT4KKyAgICAgIDxpdGVtIGNsYXNzPSJqYXZheC5zd2luZy5KU3BsaXRQYW5lIiBpY29uPSIvY29tL2ludGVsbGlqL3VpRGVzaWduZXIvaWNvbnMvc3BsaXRQYW5lLnBuZyIgcmVtb3ZhYmxlPSJmYWxzZSIgYXV0by1jcmVhdGUtYmluZGluZz0iZmFsc2UiIGNhbi1hdHRhY2gtbGFiZWw9ImZhbHNlIj4KKyAgICAgICAgPGRlZmF1bHQtY29uc3RyYWludHMgdnNpemUtcG9saWN5PSIzIiBoc2l6ZS1wb2xpY3k9IjMiIGFuY2hvcj0iMCIgZmlsbD0iMyI+CisgICAgICAgICAgPHByZWZlcnJlZC1zaXplIHdpZHRoPSIyMDAiIGhlaWdodD0iMjAwIiAvPgorICAgICAgICA8L2RlZmF1bHQtY29uc3RyYWludHM+CisgICAgICA8L2l0ZW0+CisgICAgICA8aXRlbSBjbGFzcz0iamF2YXguc3dpbmcuSlNwaW5uZXIiIGljb249Ii9jb20vaW50ZWxsaWovdWlEZXNpZ25lci9pY29ucy9zcGlubmVyLnBuZyIgcmVtb3ZhYmxlPSJmYWxzZSIgYXV0by1jcmVhdGUtYmluZGluZz0idHJ1ZSIgY2FuLWF0dGFjaC1sYWJlbD0idHJ1ZSI+CisgICAgICAgIDxkZWZhdWx0LWNvbnN0cmFpbnRzIHZzaXplLXBvbGljeT0iMCIgaHNpemUtcG9saWN5PSI2IiBhbmNob3I9IjgiIGZpbGw9IjEiIC8+CisgICAgICA8L2l0ZW0+CisgICAgICA8aXRlbSBjbGFzcz0iamF2YXguc3dpbmcuSlNsaWRlciIgaWNvbj0iL2NvbS9pbnRlbGxpai91aURlc2lnbmVyL2ljb25zL3NsaWRlci5wbmciIHJlbW92YWJsZT0iZmFsc2UiIGF1dG8tY3JlYXRlLWJpbmRpbmc9InRydWUiIGNhbi1hdHRhY2gtbGFiZWw9ImZhbHNlIj4KKyAgICAgICAgPGRlZmF1bHQtY29uc3RyYWludHMgdnNpemUtcG9saWN5PSIwIiBoc2l6ZS1wb2xpY3k9IjYiIGFuY2hvcj0iOCIgZmlsbD0iMSIgLz4KKyAgICAgIDwvaXRlbT4KKyAgICAgIDxpdGVtIGNsYXNzPSJqYXZheC5zd2luZy5KU2VwYXJhdG9yIiBpY29uPSIvY29tL2ludGVsbGlqL3VpRGVzaWduZXIvaWNvbnMvc2VwYXJhdG9yLnBuZyIgcmVtb3ZhYmxlPSJmYWxzZSIgYXV0by1jcmVhdGUtYmluZGluZz0iZmFsc2UiIGNhbi1hdHRhY2gtbGFiZWw9ImZhbHNlIj4KKyAgICAgICAgPGRlZmF1bHQtY29uc3RyYWludHMgdnNpemUtcG9saWN5PSI2IiBoc2l6ZS1wb2xpY3k9IjYiIGFuY2hvcj0iMCIgZmlsbD0iMyIgLz4KKyAgICAgIDwvaXRlbT4KKyAgICAgIDxpdGVtIGNsYXNzPSJqYXZheC5zd2luZy5KUHJvZ3Jlc3NCYXIiIGljb249Ii9jb20vaW50ZWxsaWovdWlEZXNpZ25lci9pY29ucy9wcm9ncmVzc2Jhci5wbmciIHJlbW92YWJsZT0iZmFsc2UiIGF1dG8tY3JlYXRlLWJpbmRpbmc9InRydWUiIGNhbi1hdHRhY2gtbGFiZWw9ImZhbHNlIj4KKyAgICAgICAgPGRlZmF1bHQtY29uc3RyYWludHMgdnNpemUtcG9saWN5PSIwIiBoc2l6ZS1wb2xpY3k9IjYiIGFuY2hvcj0iMCIgZmlsbD0iMSIgLz4KKyAgICAgIDwvaXRlbT4KKyAgICAgIDxpdGVtIGNsYXNzPSJqYXZheC5zd2luZy5KVG9vbEJhciIgaWNvbj0iL2NvbS9pbnRlbGxpai91aURlc2lnbmVyL2ljb25zL3Rvb2xiYXIucG5nIiByZW1vdmFibGU9ImZhbHNlIiBhdXRvLWNyZWF0ZS1iaW5kaW5nPSJmYWxzZSIgY2FuLWF0dGFjaC1sYWJlbD0iZmFsc2UiPgorICAgICAgICA8ZGVmYXVsdC1jb25zdHJhaW50cyB2c2l6ZS1wb2xpY3k9IjAiIGhzaXplLXBvbGljeT0iNiIgYW5jaG9yPSIwIiBmaWxsPSIxIj4KKyAgICAgICAgICA8cHJlZmVycmVkLXNpemUgd2lkdGg9Ii0xIiBoZWlnaHQ9IjIwIiAvPgorICAgICAgICA8L2RlZmF1bHQtY29uc3RyYWludHM+CisgICAgICA8L2l0ZW0+CisgICAgICA8aXRlbSBjbGFzcz0iamF2YXguc3dpbmcuSlRvb2xCYXIkU2VwYXJhdG9yIiBpY29uPSIvY29tL2ludGVsbGlqL3VpRGVzaWduZXIvaWNvbnMvdG9vbGJhclNlcGFyYXRvci5wbmciIHJlbW92YWJsZT0iZmFsc2UiIGF1dG8tY3JlYXRlLWJpbmRpbmc9ImZhbHNlIiBjYW4tYXR0YWNoLWxhYmVsPSJmYWxzZSI+CisgICAgICAgIDxkZWZhdWx0LWNvbnN0cmFpbnRzIHZzaXplLXBvbGljeT0iMCIgaHNpemUtcG9saWN5PSIwIiBhbmNob3I9IjAiIGZpbGw9IjEiIC8+CisgICAgICA8L2l0ZW0+CisgICAgICA8aXRlbSBjbGFzcz0iamF2YXguc3dpbmcuSlNjcm9sbEJhciIgaWNvbj0iL2NvbS9pbnRlbGxpai91aURlc2lnbmVyL2ljb25zL3Njcm9sbGJhci5wbmciIHJlbW92YWJsZT0iZmFsc2UiIGF1dG8tY3JlYXRlLWJpbmRpbmc9InRydWUiIGNhbi1hdHRhY2gtbGFiZWw9ImZhbHNlIj4KKyAgICAgICAgPGRlZmF1bHQtY29uc3RyYWludHMgdnNpemUtcG9saWN5PSI2IiBoc2l6ZS1wb2xpY3k9IjAiIGFuY2hvcj0iMCIgZmlsbD0iMiIgLz4KKyAgICAgIDwvaXRlbT4KKyAgICA8L2dyb3VwPgorICA8L2NvbXBvbmVudD4KKzwvcHJvamVjdD4KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2NvcmUvbG9hZGluZ1Rlc3QvLmlkZWEvdmNzLnhtbCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb3JlL2xvYWRpbmdUZXN0Ly5pZGVhL3Zjcy54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGVmNmE2YQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb3JlL2xvYWRpbmdUZXN0Ly5pZGVhL3Zjcy54bWwKQEAgLTAsMCArMSw3IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPHByb2plY3QgdmVyc2lvbj0iNCI+CisgIDxjb21wb25lbnQgbmFtZT0iVmNzRGlyZWN0b3J5TWFwcGluZ3MiPgorICAgIDxtYXBwaW5nIGRpcmVjdG9yeT0iIiB2Y3M9IiIgLz4KKyAgPC9jb21wb25lbnQ+Cis8L3Byb2plY3Q+CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb3JlL2xvYWRpbmdUZXN0Ly5pZGVhL3dvcmtzcGFjZS54bWwgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29yZS9sb2FkaW5nVGVzdC8uaWRlYS93b3Jrc3BhY2UueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI5ZTY3ZjYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29yZS9sb2FkaW5nVGVzdC8uaWRlYS93b3Jrc3BhY2UueG1sCkBAIC0wLDAgKzEsMzYwIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPHByb2plY3QgdmVyc2lvbj0iNCI+CisgIDxjb21wb25lbnQgbmFtZT0iQ2hhbmdlTGlzdE1hbmFnZXIiPgorICAgIDxsaXN0IGRlZmF1bHQ9InRydWUiIGlkPSJiZTIzZGE0OS03NzI5LTQwOGUtOWMzYS1kZTE1OTA2ZjJhYTMiIG5hbWU9IkRlZmF1bHQiIGNvbW1lbnQ9IiIgLz4KKyAgICA8aWdub3JlZCBwYXRoPSJsb2FkaW5nVGVzdC5pd3MiIC8+CisgICAgPGlnbm9yZWQgcGF0aD0iLmlkZWEvd29ya3NwYWNlLnhtbCIgLz4KKyAgICA8b3B0aW9uIG5hbWU9IlRSQUNLSU5HX0VOQUJMRUQiIHZhbHVlPSJ0cnVlIiAvPgorICAgIDxvcHRpb24gbmFtZT0iU0hPV19ESUFMT0ciIHZhbHVlPSJmYWxzZSIgLz4KKyAgICA8b3B0aW9uIG5hbWU9IkhJR0hMSUdIVF9DT05GTElDVFMiIHZhbHVlPSJ0cnVlIiAvPgorICAgIDxvcHRpb24gbmFtZT0iSElHSExJR0hUX05PTl9BQ1RJVkVfQ0hBTkdFTElTVCIgdmFsdWU9ImZhbHNlIiAvPgorICAgIDxvcHRpb24gbmFtZT0iTEFTVF9SRVNPTFVUSU9OIiB2YWx1ZT0iSUdOT1JFIiAvPgorICA8L2NvbXBvbmVudD4KKyAgPGNvbXBvbmVudCBuYW1lPSJDaGFuZ2VzVmlld01hbmFnZXIiIGZsYXR0ZW5lZF92aWV3PSJ0cnVlIiBzaG93X2lnbm9yZWQ9ImZhbHNlIiAvPgorICA8Y29tcG9uZW50IG5hbWU9IkNyZWF0ZVBhdGNoQ29tbWl0RXhlY3V0b3IiPgorICAgIDxvcHRpb24gbmFtZT0iUEFUQ0hfUEFUSCIgdmFsdWU9IiIgLz4KKyAgPC9jb21wb25lbnQ+CisgIDxjb21wb25lbnQgbmFtZT0iRGFlbW9uQ29kZUFuYWx5emVyIj4KKyAgICA8ZGlzYWJsZV9oaW50cyAvPgorICA8L2NvbXBvbmVudD4KKyAgPGNvbXBvbmVudCBuYW1lPSJEZWJ1Z2dlck1hbmFnZXIiPgorICAgIDxicmVha3BvaW50X2FueT4KKyAgICAgIDxicmVha3BvaW50PgorICAgICAgICA8b3B0aW9uIG5hbWU9Ik5PVElGWV9DQVVHSFQiIHZhbHVlPSJ0cnVlIiAvPgorICAgICAgICA8b3B0aW9uIG5hbWU9Ik5PVElGWV9VTkNBVUdIVCIgdmFsdWU9InRydWUiIC8+CisgICAgICAgIDxvcHRpb24gbmFtZT0iRU5BQkxFRCIgdmFsdWU9ImZhbHNlIiAvPgorICAgICAgICA8b3B0aW9uIG5hbWU9IkxPR19FTkFCTEVEIiB2YWx1ZT0iZmFsc2UiIC8+CisgICAgICAgIDxvcHRpb24gbmFtZT0iTE9HX0VYUFJFU1NJT05fRU5BQkxFRCIgdmFsdWU9ImZhbHNlIiAvPgorICAgICAgICA8b3B0aW9uIG5hbWU9IlNVU1BFTkRfUE9MSUNZIiB2YWx1ZT0iU3VzcGVuZEFsbCIgLz4KKyAgICAgICAgPG9wdGlvbiBuYW1lPSJDT1VOVF9GSUxURVJfRU5BQkxFRCIgdmFsdWU9ImZhbHNlIiAvPgorICAgICAgICA8b3B0aW9uIG5hbWU9IkNPVU5UX0ZJTFRFUiIgdmFsdWU9IjAiIC8+CisgICAgICAgIDxvcHRpb24gbmFtZT0iQ09ORElUSU9OX0VOQUJMRUQiIHZhbHVlPSJmYWxzZSIgLz4KKyAgICAgICAgPG9wdGlvbiBuYW1lPSJDTEFTU19GSUxURVJTX0VOQUJMRUQiIHZhbHVlPSJmYWxzZSIgLz4KKyAgICAgICAgPG9wdGlvbiBuYW1lPSJJTlNUQU5DRV9GSUxURVJTX0VOQUJMRUQiIHZhbHVlPSJmYWxzZSIgLz4KKyAgICAgICAgPG9wdGlvbiBuYW1lPSJDT05ESVRJT04iIHZhbHVlPSIiIC8+CisgICAgICAgIDxvcHRpb24gbmFtZT0iTE9HX01FU1NBR0UiIHZhbHVlPSIiIC8+CisgICAgICA8L2JyZWFrcG9pbnQ+CisgICAgICA8YnJlYWtwb2ludD4KKyAgICAgICAgPG9wdGlvbiBuYW1lPSJOT1RJRllfQ0FVR0hUIiB2YWx1ZT0idHJ1ZSIgLz4KKyAgICAgICAgPG9wdGlvbiBuYW1lPSJOT1RJRllfVU5DQVVHSFQiIHZhbHVlPSJ0cnVlIiAvPgorICAgICAgICA8b3B0aW9uIG5hbWU9IkVOQUJMRUQiIHZhbHVlPSJmYWxzZSIgLz4KKyAgICAgICAgPG9wdGlvbiBuYW1lPSJMT0dfRU5BQkxFRCIgdmFsdWU9ImZhbHNlIiAvPgorICAgICAgICA8b3B0aW9uIG5hbWU9IkxPR19FWFBSRVNTSU9OX0VOQUJMRUQiIHZhbHVlPSJmYWxzZSIgLz4KKyAgICAgICAgPG9wdGlvbiBuYW1lPSJTVVNQRU5EX1BPTElDWSIgdmFsdWU9IlN1c3BlbmRBbGwiIC8+CisgICAgICAgIDxvcHRpb24gbmFtZT0iQ09VTlRfRklMVEVSX0VOQUJMRUQiIHZhbHVlPSJmYWxzZSIgLz4KKyAgICAgICAgPG9wdGlvbiBuYW1lPSJDT1VOVF9GSUxURVIiIHZhbHVlPSIwIiAvPgorICAgICAgICA8b3B0aW9uIG5hbWU9IkNPTkRJVElPTl9FTkFCTEVEIiB2YWx1ZT0iZmFsc2UiIC8+CisgICAgICAgIDxvcHRpb24gbmFtZT0iQ0xBU1NfRklMVEVSU19FTkFCTEVEIiB2YWx1ZT0iZmFsc2UiIC8+CisgICAgICAgIDxvcHRpb24gbmFtZT0iSU5TVEFOQ0VfRklMVEVSU19FTkFCTEVEIiB2YWx1ZT0iZmFsc2UiIC8+CisgICAgICAgIDxvcHRpb24gbmFtZT0iQ09ORElUSU9OIiB2YWx1ZT0iIiAvPgorICAgICAgICA8b3B0aW9uIG5hbWU9IkxPR19NRVNTQUdFIiB2YWx1ZT0iIiAvPgorICAgICAgPC9icmVha3BvaW50PgorICAgIDwvYnJlYWtwb2ludF9hbnk+CisgICAgPGJyZWFrcG9pbnRfcnVsZXMgLz4KKyAgICA8dWlfcHJvcGVydGllcyAvPgorICA8L2NvbXBvbmVudD4KKyAgPGNvbXBvbmVudCBuYW1lPSJGYXZvcml0ZXNNYW5hZ2VyIj4KKyAgICA8ZmF2b3JpdGVzX2xpc3QgbmFtZT0ibG9hZGluZ1Rlc3QiIC8+CisgIDwvY29tcG9uZW50PgorICA8Y29tcG9uZW50IG5hbWU9IkZpbGVFZGl0b3JNYW5hZ2VyIj4KKyAgICA8bGVhZj4KKyAgICAgIDxmaWxlIGxlYWYtZmlsZS1uYW1lPSJsb2FkaW5nVGVzdC5pbWwiIHBpbm5lZD0iZmFsc2UiIGN1cnJlbnQ9InRydWUiIGN1cnJlbnQtaW4tdGFiPSJ0cnVlIj4KKyAgICAgICAgPGVudHJ5IGZpbGU9ImZpbGU6Ly8kUFJPSkVDVF9ESVIkL2xvYWRpbmdUZXN0LmltbCI+CisgICAgICAgICAgPHByb3ZpZGVyIHNlbGVjdGVkPSJ0cnVlIiBlZGl0b3ItdHlwZS1pZD0idGV4dC1lZGl0b3IiPgorICAgICAgICAgICAgPHN0YXRlIGxpbmU9IjEwIiBjb2x1bW49IjAiIHNlbGVjdGlvbi1zdGFydD0iMzY4IiBzZWxlY3Rpb24tZW5kPSIzNjgiIHZlcnRpY2FsLXNjcm9sbC1wcm9wb3J0aW9uPSIwLjIyNzI3MjczIj4KKyAgICAgICAgICAgICAgPGZvbGRpbmcgLz4KKyAgICAgICAgICAgIDwvc3RhdGU+CisgICAgICAgICAgPC9wcm92aWRlcj4KKyAgICAgICAgPC9lbnRyeT4KKyAgICAgIDwvZmlsZT4KKyAgICA8L2xlYWY+CisgIDwvY29tcG9uZW50PgorICA8Y29tcG9uZW50IG5hbWU9IkZpbmRNYW5hZ2VyIj4KKyAgICA8RmluZFVzYWdlc01hbmFnZXI+CisgICAgICA8c2V0dGluZyBuYW1lPSJPUEVOX05FV19UQUIiIHZhbHVlPSJmYWxzZSIgLz4KKyAgICA8L0ZpbmRVc2FnZXNNYW5hZ2VyPgorICA8L2NvbXBvbmVudD4KKyAgPGNvbXBvbmVudCBuYW1lPSJHaXQuU2V0dGluZ3MiPgorICAgIDxvcHRpb24gbmFtZT0iTElORV9TRVBBUkFUT1JTX0NPTlZFUlNJT04iIHZhbHVlPSJBU0siIC8+CisgIDwvY29tcG9uZW50PgorICA8Y29tcG9uZW50IG5hbWU9IklkZURvY3VtZW50SGlzdG9yeSI+CisgICAgPG9wdGlvbiBuYW1lPSJjaGFuZ2VkRmlsZXMiPgorICAgICAgPGxpc3Q+CisgICAgICAgIDxvcHRpb24gdmFsdWU9IiRQUk9KRUNUX0RJUiQvbG9hZGluZ1Rlc3QuaW1sIiAvPgorICAgICAgPC9saXN0PgorICAgIDwvb3B0aW9uPgorICA8L2NvbXBvbmVudD4KKyAgPGNvbXBvbmVudCBuYW1lPSJQaHBXb3Jrc3BhY2VQcm9qZWN0Q29uZmlndXJhdGlvbiIgYmFja3dhcmRfY29tcGF0aWJpbGl0eV9wZXJmb3JtZWQ9InRydWUiIC8+CisgIDxjb21wb25lbnQgbmFtZT0iUHJvamVjdEZyYW1lQm91bmRzIj4KKyAgICA8b3B0aW9uIG5hbWU9IngiIHZhbHVlPSIxOTciIC8+CisgICAgPG9wdGlvbiBuYW1lPSJ5IiB2YWx1ZT0iMTMzIiAvPgorICAgIDxvcHRpb24gbmFtZT0id2lkdGgiIHZhbHVlPSIxNjM5IiAvPgorICAgIDxvcHRpb24gbmFtZT0iaGVpZ2h0IiB2YWx1ZT0iOTMzIiAvPgorICA8L2NvbXBvbmVudD4KKyAgPGNvbXBvbmVudCBuYW1lPSJQcm9qZWN0TGV2ZWxWY3NNYW5hZ2VyIiBzZXR0aW5nc0VkaXRlZE1hbnVhbGx5PSJmYWxzZSI+CisgICAgPE9wdGlvbnNTZXR0aW5nIHZhbHVlPSJ0cnVlIiBpZD0iQWRkIiAvPgorICAgIDxPcHRpb25zU2V0dGluZyB2YWx1ZT0idHJ1ZSIgaWQ9IlJlbW92ZSIgLz4KKyAgICA8T3B0aW9uc1NldHRpbmcgdmFsdWU9InRydWUiIGlkPSJDaGVja291dCIgLz4KKyAgICA8T3B0aW9uc1NldHRpbmcgdmFsdWU9InRydWUiIGlkPSJVcGRhdGUiIC8+CisgICAgPE9wdGlvbnNTZXR0aW5nIHZhbHVlPSJ0cnVlIiBpZD0iU3RhdHVzIiAvPgorICAgIDxPcHRpb25zU2V0dGluZyB2YWx1ZT0idHJ1ZSIgaWQ9IkVkaXQiIC8+CisgICAgPE9wdGlvbnNTZXR0aW5nIHZhbHVlPSJ0cnVlIiBpZD0iVW5kbyBDaGVjayBPdXQiIC8+CisgICAgPE9wdGlvbnNTZXR0aW5nIHZhbHVlPSJ0cnVlIiBpZD0iR2V0IExhdGVzdCBWZXJzaW9uIiAvPgorICAgIDxDb25maXJtYXRpb25zU2V0dGluZyB2YWx1ZT0iMCIgaWQ9IkFkZCIgLz4KKyAgICA8Q29uZmlybWF0aW9uc1NldHRpbmcgdmFsdWU9IjAiIGlkPSJSZW1vdmUiIC8+CisgIDwvY29tcG9uZW50PgorICA8Y29tcG9uZW50IG5hbWU9IlByb2plY3RSZWxvYWRTdGF0ZSI+CisgICAgPG9wdGlvbiBuYW1lPSJTVEFURSIgdmFsdWU9IjAiIC8+CisgIDwvY29tcG9uZW50PgorICA8Y29tcG9uZW50IG5hbWU9IlByb2plY3RWaWV3Ij4KKyAgICA8bmF2aWdhdG9yIGN1cnJlbnRWaWV3PSJQcm9qZWN0UGFuZSIgcHJvcG9ydGlvbnM9IiIgdmVyc2lvbj0iMSIgc3BsaXR0ZXJQcm9wb3J0aW9uPSIwLjUiPgorICAgICAgPGZsYXR0ZW5QYWNrYWdlcyAvPgorICAgICAgPHNob3dNZW1iZXJzIC8+CisgICAgICA8c2hvd01vZHVsZXMgLz4KKyAgICAgIDxzaG93TGlicmFyeUNvbnRlbnRzIC8+CisgICAgICA8aGlkZUVtcHR5UGFja2FnZXMgLz4KKyAgICAgIDxhYmJyZXZpYXRlUGFja2FnZU5hbWVzIC8+CisgICAgICA8YXV0b3Njcm9sbFRvU291cmNlIC8+CisgICAgICA8YXV0b3Njcm9sbEZyb21Tb3VyY2UgLz4KKyAgICAgIDxzb3J0QnlUeXBlIC8+CisgICAgPC9uYXZpZ2F0b3I+CisgICAgPHBhbmVzPgorICAgICAgPHBhbmUgaWQ9IlBhY2thZ2VzUGFuZSIgLz4KKyAgICAgIDxwYW5lIGlkPSJTY29wZSIgLz4KKyAgICAgIDxwYW5lIGlkPSJQcm9qZWN0UGFuZSI+CisgICAgICAgIDxzdWJQYW5lPgorICAgICAgICAgIDxQQVRIPgorICAgICAgICAgICAgPFBBVEhfRUxFTUVOVD4KKyAgICAgICAgICAgICAgPG9wdGlvbiBuYW1lPSJteUl0ZW1JZCIgdmFsdWU9ImxvYWRpbmdUZXN0IiAvPgorICAgICAgICAgICAgICA8b3B0aW9uIG5hbWU9Im15SXRlbVR5cGUiIHZhbHVlPSJjb20uaW50ZWxsaWouaWRlLnByb2plY3RWaWV3LmltcGwubm9kZXMuUHJvamVjdFZpZXdQcm9qZWN0Tm9kZSIgLz4KKyAgICAgICAgICAgIDwvUEFUSF9FTEVNRU5UPgorICAgICAgICAgIDwvUEFUSD4KKyAgICAgICAgICA8UEFUSD4KKyAgICAgICAgICAgIDxQQVRIX0VMRU1FTlQ+CisgICAgICAgICAgICAgIDxvcHRpb24gbmFtZT0ibXlJdGVtSWQiIHZhbHVlPSJsb2FkaW5nVGVzdCIgLz4KKyAgICAgICAgICAgICAgPG9wdGlvbiBuYW1lPSJteUl0ZW1UeXBlIiB2YWx1ZT0iY29tLmludGVsbGlqLmlkZS5wcm9qZWN0Vmlldy5pbXBsLm5vZGVzLlByb2plY3RWaWV3UHJvamVjdE5vZGUiIC8+CisgICAgICAgICAgICA8L1BBVEhfRUxFTUVOVD4KKyAgICAgICAgICAgIDxQQVRIX0VMRU1FTlQ+CisgICAgICAgICAgICAgIDxvcHRpb24gbmFtZT0ibXlJdGVtSWQiIHZhbHVlPSJsb2FkaW5nVGVzdCIgLz4KKyAgICAgICAgICAgICAgPG9wdGlvbiBuYW1lPSJteUl0ZW1UeXBlIiB2YWx1ZT0iY29tLmludGVsbGlqLmlkZS5wcm9qZWN0Vmlldy5pbXBsLm5vZGVzLlBzaURpcmVjdG9yeU5vZGUiIC8+CisgICAgICAgICAgICA8L1BBVEhfRUxFTUVOVD4KKyAgICAgICAgICA8L1BBVEg+CisgICAgICAgIDwvc3ViUGFuZT4KKyAgICAgIDwvcGFuZT4KKyAgICA8L3BhbmVzPgorICA8L2NvbXBvbmVudD4KKyAgPGNvbXBvbmVudCBuYW1lPSJQcm9wZXJ0aWVzQ29tcG9uZW50Ij4KKyAgICA8cHJvcGVydHkgbmFtZT0iR29Ub0ZpbGUuaW5jbHVkZUphdmFGaWxlcyIgdmFsdWU9ImZhbHNlIiAvPgorICAgIDxwcm9wZXJ0eSBuYW1lPSJwcm9qZWN0LnN0cnVjdHVyZS5sYXN0LmVkaXRlZCIgdmFsdWU9Ik1vZHVsZXMiIC8+CisgICAgPHByb3BlcnR5IG5hbWU9InByb2plY3Quc3RydWN0dXJlLnByb3BvcnRpb24iIHZhbHVlPSIwLjAiIC8+CisgICAgPHByb3BlcnR5IG5hbWU9Im9wdGlvbnMuc3BsaXR0ZXIubWFpbi5wcm9wb3J0aW9ucyIgdmFsdWU9IjAuMyIgLz4KKyAgICA8cHJvcGVydHkgbmFtZT0ib3B0aW9ucy5sYXN0U2VsZWN0ZWQiIHZhbHVlPSJwcmVmZXJlbmNlcy5wbHVnaW5NYW5hZ2VyIiAvPgorICAgIDxwcm9wZXJ0eSBuYW1lPSJNZW1iZXJDaG9vc2VyLnNvcnRlZCIgdmFsdWU9ImZhbHNlIiAvPgorICAgIDxwcm9wZXJ0eSBuYW1lPSJsYXN0X29wZW5lZF9maWxlX3BhdGgiIHZhbHVlPSIkUFJPSkVDVF9ESVIkIiAvPgorICAgIDxwcm9wZXJ0eSBuYW1lPSJwcm9qZWN0LnN0cnVjdHVyZS5zaWRlLnByb3BvcnRpb24iIHZhbHVlPSIwLjIiIC8+CisgICAgPHByb3BlcnR5IG5hbWU9Ik1lbWJlckNob29zZXIuY29weUphdmFkb2MiIHZhbHVlPSJmYWxzZSIgLz4KKyAgICA8cHJvcGVydHkgbmFtZT0iR29Ub0NsYXNzLnRvU2F2ZUluY2x1ZGVMaWJyYXJpZXMiIHZhbHVlPSJmYWxzZSIgLz4KKyAgICA8cHJvcGVydHkgbmFtZT0iV2ViU2VydmVyVG9vbFdpbmRvd0ZhY3RvcnlTdGF0ZSIgdmFsdWU9ImZhbHNlIiAvPgorICAgIDxwcm9wZXJ0eSBuYW1lPSJNZW1iZXJDaG9vc2VyLnNob3dDbGFzc2VzIiB2YWx1ZT0idHJ1ZSIgLz4KKyAgICA8cHJvcGVydHkgbmFtZT0iR29Ub0NsYXNzLmluY2x1ZGVMaWJyYXJpZXMiIHZhbHVlPSJmYWxzZSIgLz4KKyAgICA8cHJvcGVydHkgbmFtZT0ib3B0aW9ucy5zZWFyY2hWaXNpYmxlIiB2YWx1ZT0idHJ1ZSIgLz4KKyAgICA8cHJvcGVydHkgbmFtZT0ib3B0aW9ucy5zcGxpdHRlci5kZXRhaWxzLnByb3BvcnRpb25zIiB2YWx1ZT0iMC4yIiAvPgorICA8L2NvbXBvbmVudD4KKyAgPGNvbXBvbmVudCBuYW1lPSJSdW5NYW5hZ2VyIj4KKyAgICA8bGlzdCBzaXplPSIwIiAvPgorICAgIDxjb25maWd1cmF0aW9uIG5hbWU9IiZsdDt0ZW1wbGF0ZSZndDsiIHR5cGU9IldlYkFwcCIgZGVmYXVsdD0idHJ1ZSIgc2VsZWN0ZWQ9ImZhbHNlIj4KKyAgICAgIDxIb3N0PmxvY2FsaG9zdDwvSG9zdD4KKyAgICAgIDxQb3J0PjUwNTA8L1BvcnQ+CisgICAgPC9jb25maWd1cmF0aW9uPgorICA8L2NvbXBvbmVudD4KKyAgPGNvbXBvbmVudCBuYW1lPSJTaGVsdmVDaGFuZ2VzTWFuYWdlciIgc2hvd19yZWN5Y2xlZD0iZmFsc2UiIC8+CisgIDxjb21wb25lbnQgbmFtZT0iVGFza01hbmFnZXIiPgorICAgIDx0YXNrIGFjdGl2ZT0idHJ1ZSIgaWQ9IkRlZmF1bHQiIHN1bW1hcnk9IkRlZmF1bHQgdGFzayI+CisgICAgICA8Y2hhbmdlbGlzdCBpZD0iYmUyM2RhNDktNzcyOS00MDhlLTljM2EtZGUxNTkwNmYyYWEzIiBuYW1lPSJEZWZhdWx0IiBjb21tZW50PSIiIC8+CisgICAgICA8Y3JlYXRlZD4xMzM3MzU5MzA2NjYyPC9jcmVhdGVkPgorICAgICAgPHVwZGF0ZWQ+MTMzNzM1OTMwNjY2MjwvdXBkYXRlZD4KKyAgICA8L3Rhc2s+CisgICAgPHNlcnZlcnMgLz4KKyAgPC9jb21wb25lbnQ+CisgIDxjb21wb25lbnQgbmFtZT0iVG9vbFdpbmRvd01hbmFnZXIiPgorICAgIDxmcmFtZSB4PSIxOTciIHk9IjEzMyIgd2lkdGg9IjE2MzkiIGhlaWdodD0iOTMzIiBleHRlbmRlZC1zdGF0ZT0iMCIgLz4KKyAgICA8ZWRpdG9yIGFjdGl2ZT0iZmFsc2UiIC8+CisgICAgPGxheW91dD4KKyAgICAgIDx3aW5kb3dfaW5mbyBpZD0iRGF0YSBTb3VyY2VzIiBhY3RpdmU9ImZhbHNlIiBhbmNob3I9InJpZ2h0IiBhdXRvX2hpZGU9ImZhbHNlIiBpbnRlcm5hbF90eXBlPSJET0NLRUQiIHR5cGU9IkRPQ0tFRCIgdmlzaWJsZT0iZmFsc2UiIHdlaWdodD0iMC4zMyIgc2lkZVdlaWdodD0iMC41IiBvcmRlcj0iMyIgc2lkZV90b29sPSJmYWxzZSIgY29udGVudF91aT0idGFicyIgLz4KKyAgICAgIDx3aW5kb3dfaW5mbyBpZD0iQ2hhbmdlcyIgYWN0aXZlPSJmYWxzZSIgYW5jaG9yPSJib3R0b20iIGF1dG9faGlkZT0iZmFsc2UiIGludGVybmFsX3R5cGU9IkRPQ0tFRCIgdHlwZT0iRE9DS0VEIiB2aXNpYmxlPSJmYWxzZSIgd2VpZ2h0PSIwLjMzIiBzaWRlV2VpZ2h0PSIwLjUiIG9yZGVyPSI3IiBzaWRlX3Rvb2w9ImZhbHNlIiBjb250ZW50X3VpPSJ0YWJzIiAvPgorICAgICAgPHdpbmRvd19pbmZvIGlkPSJKZXRHcmFkbGUiIGFjdGl2ZT0iZmFsc2UiIGFuY2hvcj0icmlnaHQiIGF1dG9faGlkZT0iZmFsc2UiIGludGVybmFsX3R5cGU9IkRPQ0tFRCIgdHlwZT0iRE9DS0VEIiB2aXNpYmxlPSJmYWxzZSIgd2VpZ2h0PSIwLjMzIiBzaWRlV2VpZ2h0PSIwLjUiIG9yZGVyPSIzIiBzaWRlX3Rvb2w9ImZhbHNlIiBjb250ZW50X3VpPSJ0YWJzIiAvPgorICAgICAgPHdpbmRvd19pbmZvIGlkPSJQYWxldHRlIiBhY3RpdmU9ImZhbHNlIiBhbmNob3I9InJpZ2h0IiBhdXRvX2hpZGU9ImZhbHNlIiBpbnRlcm5hbF90eXBlPSJET0NLRUQiIHR5cGU9IkRPQ0tFRCIgdmlzaWJsZT0iZmFsc2UiIHdlaWdodD0iMC4zMyIgc2lkZVdlaWdodD0iMC41IiBvcmRlcj0iMyIgc2lkZV90b29sPSJmYWxzZSIgY29udGVudF91aT0idGFicyIgLz4KKyAgICAgIDx3aW5kb3dfaW5mbyBpZD0iQW50IEJ1aWxkIiBhY3RpdmU9ImZhbHNlIiBhbmNob3I9InJpZ2h0IiBhdXRvX2hpZGU9ImZhbHNlIiBpbnRlcm5hbF90eXBlPSJET0NLRUQiIHR5cGU9IkRPQ0tFRCIgdmlzaWJsZT0iZmFsc2UiIHdlaWdodD0iMC4yNSIgc2lkZVdlaWdodD0iMC41IiBvcmRlcj0iMSIgc2lkZV90b29sPSJmYWxzZSIgY29udGVudF91aT0idGFicyIgLz4KKyAgICAgIDx3aW5kb3dfaW5mbyBpZD0iRGVidWciIGFjdGl2ZT0iZmFsc2UiIGFuY2hvcj0iYm90dG9tIiBhdXRvX2hpZGU9ImZhbHNlIiBpbnRlcm5hbF90eXBlPSJET0NLRUQiIHR5cGU9IkRPQ0tFRCIgdmlzaWJsZT0iZmFsc2UiIHdlaWdodD0iMC40IiBzaWRlV2VpZ2h0PSIwLjUiIG9yZGVyPSIzIiBzaWRlX3Rvb2w9ImZhbHNlIiBjb250ZW50X3VpPSJ0YWJzIiAvPgorICAgICAgPHdpbmRvd19pbmZvIGlkPSJFdmVudCBMb2ciIGFjdGl2ZT0iZmFsc2UiIGFuY2hvcj0iYm90dG9tIiBhdXRvX2hpZGU9ImZhbHNlIiBpbnRlcm5hbF90eXBlPSJET0NLRUQiIHR5cGU9IkRPQ0tFRCIgdmlzaWJsZT0iZmFsc2UiIHdlaWdodD0iMC4zMyIgc2lkZVdlaWdodD0iMC41IiBvcmRlcj0iNyIgc2lkZV90b29sPSJ0cnVlIiBjb250ZW50X3VpPSJ0YWJzIiAvPgorICAgICAgPHdpbmRvd19pbmZvIGlkPSJGYXZvcml0ZXMiIGFjdGl2ZT0iZmFsc2UiIGFuY2hvcj0ibGVmdCIgYXV0b19oaWRlPSJmYWxzZSIgaW50ZXJuYWxfdHlwZT0iRE9DS0VEIiB0eXBlPSJET0NLRUQiIHZpc2libGU9ImZhbHNlIiB3ZWlnaHQ9IjAuMzMiIHNpZGVXZWlnaHQ9IjAuNSIgb3JkZXI9IjIiIHNpZGVfdG9vbD0idHJ1ZSIgY29udGVudF91aT0idGFicyIgLz4KKyAgICAgIDx3aW5kb3dfaW5mbyBpZD0iVmVyc2lvbiBDb250cm9sIiBhY3RpdmU9ImZhbHNlIiBhbmNob3I9ImJvdHRvbSIgYXV0b19oaWRlPSJmYWxzZSIgaW50ZXJuYWxfdHlwZT0iRE9DS0VEIiB0eXBlPSJET0NLRUQiIHZpc2libGU9ImZhbHNlIiB3ZWlnaHQ9IjAuMzMiIHNpZGVXZWlnaHQ9IjAuNSIgb3JkZXI9IjciIHNpZGVfdG9vbD0iZmFsc2UiIGNvbnRlbnRfdWk9InRhYnMiIC8+CisgICAgICA8d2luZG93X2luZm8gaWQ9IlRPRE8iIGFjdGl2ZT0iZmFsc2UiIGFuY2hvcj0iYm90dG9tIiBhdXRvX2hpZGU9ImZhbHNlIiBpbnRlcm5hbF90eXBlPSJET0NLRUQiIHR5cGU9IkRPQ0tFRCIgdmlzaWJsZT0iZmFsc2UiIHdlaWdodD0iMC4zMyIgc2lkZVdlaWdodD0iMC41IiBvcmRlcj0iNiIgc2lkZV90b29sPSJmYWxzZSIgY29udGVudF91aT0idGFicyIgLz4KKyAgICAgIDx3aW5kb3dfaW5mbyBpZD0iU3RydWN0dXJlIiBhY3RpdmU9ImZhbHNlIiBhbmNob3I9ImxlZnQiIGF1dG9faGlkZT0iZmFsc2UiIGludGVybmFsX3R5cGU9IkRPQ0tFRCIgdHlwZT0iRE9DS0VEIiB2aXNpYmxlPSJmYWxzZSIgd2VpZ2h0PSIwLjI1IiBzaWRlV2VpZ2h0PSIwLjUiIG9yZGVyPSIxIiBzaWRlX3Rvb2w9InRydWUiIGNvbnRlbnRfdWk9InRhYnMiIC8+CisgICAgICA8d2luZG93X2luZm8gaWQ9Ik1hdmVuIFByb2plY3RzIiBhY3RpdmU9ImZhbHNlIiBhbmNob3I9InJpZ2h0IiBhdXRvX2hpZGU9ImZhbHNlIiBpbnRlcm5hbF90eXBlPSJET0NLRUQiIHR5cGU9IkRPQ0tFRCIgdmlzaWJsZT0iZmFsc2UiIHdlaWdodD0iMC4zMyIgc2lkZVdlaWdodD0iMC41IiBvcmRlcj0iMyIgc2lkZV90b29sPSJmYWxzZSIgY29udGVudF91aT0idGFicyIgLz4KKyAgICAgIDx3aW5kb3dfaW5mbyBpZD0iQ29tbWFuZGVyIiBhY3RpdmU9ImZhbHNlIiBhbmNob3I9InJpZ2h0IiBhdXRvX2hpZGU9ImZhbHNlIiBpbnRlcm5hbF90eXBlPSJET0NLRUQiIHR5cGU9IkRPQ0tFRCIgdmlzaWJsZT0iZmFsc2UiIHdlaWdodD0iMC40IiBzaWRlV2VpZ2h0PSIwLjUiIG9yZGVyPSIwIiBzaWRlX3Rvb2w9ImZhbHNlIiBjb250ZW50X3VpPSJ0YWJzIiAvPgorICAgICAgPHdpbmRvd19pbmZvIGlkPSJBcHBsaWNhdGlvbiBTZXJ2ZXJzIiBhY3RpdmU9ImZhbHNlIiBhbmNob3I9ImJvdHRvbSIgYXV0b19oaWRlPSJmYWxzZSIgaW50ZXJuYWxfdHlwZT0iRE9DS0VEIiB0eXBlPSJET0NLRUQiIHZpc2libGU9ImZhbHNlIiB3ZWlnaHQ9IjAuMzMiIHNpZGVXZWlnaHQ9IjAuNSIgb3JkZXI9IjciIHNpZGVfdG9vbD0iZmFsc2UiIGNvbnRlbnRfdWk9InRhYnMiIC8+CisgICAgICA8d2luZG93X2luZm8gaWQ9IlByb2plY3QiIGFjdGl2ZT0iZmFsc2UiIGFuY2hvcj0ibGVmdCIgYXV0b19oaWRlPSJmYWxzZSIgaW50ZXJuYWxfdHlwZT0iRE9DS0VEIiB0eXBlPSJET0NLRUQiIHZpc2libGU9InRydWUiIHdlaWdodD0iMC4yNDk4NDE0NyIgc2lkZVdlaWdodD0iMC41IiBvcmRlcj0iMCIgc2lkZV90b29sPSJmYWxzZSIgY29udGVudF91aT0iY29tYm8iIC8+CisgICAgICA8d2luZG93X2luZm8gaWQ9IlJ1biIgYWN0aXZlPSJmYWxzZSIgYW5jaG9yPSJib3R0b20iIGF1dG9faGlkZT0iZmFsc2UiIGludGVybmFsX3R5cGU9IkRPQ0tFRCIgdHlwZT0iRE9DS0VEIiB2aXNpYmxlPSJmYWxzZSIgd2VpZ2h0PSIwLjMzIiBzaWRlV2VpZ2h0PSIwLjUiIG9yZGVyPSIyIiBzaWRlX3Rvb2w9ImZhbHNlIiBjb250ZW50X3VpPSJ0YWJzIiAvPgorICAgICAgPHdpbmRvd19pbmZvIGlkPSJKc1Rlc3REcml2ZXIgU2VydmVyIiBhY3RpdmU9ImZhbHNlIiBhbmNob3I9ImJvdHRvbSIgYXV0b19oaWRlPSJmYWxzZSIgaW50ZXJuYWxfdHlwZT0iRE9DS0VEIiB0eXBlPSJET0NLRUQiIHZpc2libGU9ImZhbHNlIiB3ZWlnaHQ9IjAuMzMiIHNpZGVXZWlnaHQ9IjAuNSIgb3JkZXI9IjciIHNpZGVfdG9vbD0iZmFsc2UiIGNvbnRlbnRfdWk9InRhYnMiIC8+CisgICAgICA8d2luZG93X2luZm8gaWQ9IkN2cyIgYWN0aXZlPSJmYWxzZSIgYW5jaG9yPSJib3R0b20iIGF1dG9faGlkZT0iZmFsc2UiIGludGVybmFsX3R5cGU9IkRPQ0tFRCIgdHlwZT0iRE9DS0VEIiB2aXNpYmxlPSJmYWxzZSIgd2VpZ2h0PSIwLjI1IiBzaWRlV2VpZ2h0PSIwLjUiIG9yZGVyPSI0IiBzaWRlX3Rvb2w9ImZhbHNlIiBjb250ZW50X3VpPSJ0YWJzIiAvPgorICAgICAgPHdpbmRvd19pbmZvIGlkPSJNZXNzYWdlIiBhY3RpdmU9ImZhbHNlIiBhbmNob3I9ImJvdHRvbSIgYXV0b19oaWRlPSJmYWxzZSIgaW50ZXJuYWxfdHlwZT0iRE9DS0VEIiB0eXBlPSJET0NLRUQiIHZpc2libGU9ImZhbHNlIiB3ZWlnaHQ9IjAuMzMiIHNpZGVXZWlnaHQ9IjAuNSIgb3JkZXI9IjAiIHNpZGVfdG9vbD0iZmFsc2UiIGNvbnRlbnRfdWk9InRhYnMiIC8+CisgICAgICA8d2luZG93X2luZm8gaWQ9IkZpbmQiIGFjdGl2ZT0iZmFsc2UiIGFuY2hvcj0iYm90dG9tIiBhdXRvX2hpZGU9ImZhbHNlIiBpbnRlcm5hbF90eXBlPSJET0NLRUQiIHR5cGU9IkRPQ0tFRCIgdmlzaWJsZT0iZmFsc2UiIHdlaWdodD0iMC4zMyIgc2lkZVdlaWdodD0iMC41IiBvcmRlcj0iMSIgc2lkZV90b29sPSJmYWxzZSIgY29udGVudF91aT0idGFicyIgLz4KKyAgICAgIDx3aW5kb3dfaW5mbyBpZD0iSGllcmFyY2h5IiBhY3RpdmU9ImZhbHNlIiBhbmNob3I9InJpZ2h0IiBhdXRvX2hpZGU9ImZhbHNlIiBpbnRlcm5hbF90eXBlPSJET0NLRUQiIHR5cGU9IkRPQ0tFRCIgdmlzaWJsZT0iZmFsc2UiIHdlaWdodD0iMC4yNSIgc2lkZVdlaWdodD0iMC41IiBvcmRlcj0iMiIgc2lkZV90b29sPSJmYWxzZSIgY29udGVudF91aT0iY29tYm8iIC8+CisgICAgICA8d2luZG93X2luZm8gaWQ9Ikluc3BlY3Rpb24iIGFjdGl2ZT0iZmFsc2UiIGFuY2hvcj0iYm90dG9tIiBhdXRvX2hpZGU9ImZhbHNlIiBpbnRlcm5hbF90eXBlPSJET0NLRUQiIHR5cGU9IkRPQ0tFRCIgdmlzaWJsZT0iZmFsc2UiIHdlaWdodD0iMC40IiBzaWRlV2VpZ2h0PSIwLjUiIG9yZGVyPSI1IiBzaWRlX3Rvb2w9ImZhbHNlIiBjb250ZW50X3VpPSJ0YWJzIiAvPgorICAgIDwvbGF5b3V0PgorICA8L2NvbXBvbmVudD4KKyAgPGNvbXBvbmVudCBuYW1lPSJWY3NDb250ZW50QW5ub3RhdGlvblNldHRpbmdzIj4KKyAgICA8b3B0aW9uIG5hbWU9Im15TGltaXQiIHZhbHVlPSIyNjc4NDAwMDAwIiAvPgorICA8L2NvbXBvbmVudD4KKyAgPGNvbXBvbmVudCBuYW1lPSJWY3NNYW5hZ2VyQ29uZmlndXJhdGlvbiI+CisgICAgPG9wdGlvbiBuYW1lPSJPRkZFUl9NT1ZFX1RPX0FOT1RIRVJfQ0hBTkdFTElTVF9PTl9QQVJUSUFMX0NPTU1JVCIgdmFsdWU9InRydWUiIC8+CisgICAgPG9wdGlvbiBuYW1lPSJDSEVDS19DT0RFX1NNRUxMU19CRUZPUkVfUFJPSkVDVF9DT01NSVQiIHZhbHVlPSJ0cnVlIiAvPgorICAgIDxvcHRpb24gbmFtZT0iQ0hFQ0tfTkVXX1RPRE8iIHZhbHVlPSJ0cnVlIiAvPgorICAgIDxvcHRpb24gbmFtZT0ibXlUb2RvUGFuZWxTZXR0aW5ncyI+CisgICAgICA8dmFsdWU+CisgICAgICAgIDxhcmUtcGFja2FnZXMtc2hvd24gdmFsdWU9ImZhbHNlIiAvPgorICAgICAgICA8YXJlLW1vZHVsZXMtc2hvd24gdmFsdWU9ImZhbHNlIiAvPgorICAgICAgICA8ZmxhdHRlbi1wYWNrYWdlcyB2YWx1ZT0iZmFsc2UiIC8+CisgICAgICAgIDxpcy1hdXRvc2Nyb2xsLXRvLXNvdXJjZSB2YWx1ZT0iZmFsc2UiIC8+CisgICAgICA8L3ZhbHVlPgorICAgIDwvb3B0aW9uPgorICAgIDxvcHRpb24gbmFtZT0iUEVSRk9STV9VUERBVEVfSU5fQkFDS0dST1VORCIgdmFsdWU9InRydWUiIC8+CisgICAgPG9wdGlvbiBuYW1lPSJQRVJGT1JNX0NPTU1JVF9JTl9CQUNLR1JPVU5EIiB2YWx1ZT0idHJ1ZSIgLz4KKyAgICA8b3B0aW9uIG5hbWU9IlBFUkZPUk1fRURJVF9JTl9CQUNLR1JPVU5EIiB2YWx1ZT0idHJ1ZSIgLz4KKyAgICA8b3B0aW9uIG5hbWU9IlBFUkZPUk1fQ0hFQ0tPVVRfSU5fQkFDS0dST1VORCIgdmFsdWU9InRydWUiIC8+CisgICAgPG9wdGlvbiBuYW1lPSJQRVJGT1JNX0FERF9SRU1PVkVfSU5fQkFDS0dST1VORCIgdmFsdWU9InRydWUiIC8+CisgICAgPG9wdGlvbiBuYW1lPSJQRVJGT1JNX1JPTExCQUNLX0lOX0JBQ0tHUk9VTkQiIHZhbHVlPSJmYWxzZSIgLz4KKyAgICA8b3B0aW9uIG5hbWU9IkNIRUNLX0xPQ0FMTFlfQ0hBTkdFRF9DT05GTElDVFNfSU5fQkFDS0dST1VORCIgdmFsdWU9ImZhbHNlIiAvPgorICAgIDxvcHRpb24gbmFtZT0iRU5BQkxFX0JBQ0tHUk9VTkRfUFJPQ0VTU0VTIiB2YWx1ZT0iZmFsc2UiIC8+CisgICAgPG9wdGlvbiBuYW1lPSJDSEFOR0VEX09OX1NFUlZFUl9JTlRFUlZBTCIgdmFsdWU9IjYwIiAvPgorICAgIDxvcHRpb24gbmFtZT0iU0hPV19PTkxZX0NIQU5HRURfSU5fU0VMRUNUSU9OX0RJRkYiIHZhbHVlPSJ0cnVlIiAvPgorICAgIDxvcHRpb24gbmFtZT0iQ0hFQ0tfQ09NTUlUX01FU1NBR0VfU1BFTExJTkciIHZhbHVlPSJ0cnVlIiAvPgorICAgIDxvcHRpb24gbmFtZT0iREVGQVVMVF9QQVRDSF9FWFRFTlNJT04iIHZhbHVlPSJwYXRjaCIgLz4KKyAgICA8b3B0aW9uIG5hbWU9IlNIT1JUX0RJRkZfSE9SSVNPTlRBTExZIiB2YWx1ZT0idHJ1ZSIgLz4KKyAgICA8b3B0aW9uIG5hbWU9IlNIT1JUX0RJRkZfRVhUUkFfTElORVMiIHZhbHVlPSIyIiAvPgorICAgIDxvcHRpb24gbmFtZT0iU09GVF9XUkFQU19JTl9TSE9SVF9ESUZGIiB2YWx1ZT0idHJ1ZSIgLz4KKyAgICA8b3B0aW9uIG5hbWU9IklOQ0xVREVfVEVYVF9JTlRPX1BBVENIIiB2YWx1ZT0iZmFsc2UiIC8+CisgICAgPG9wdGlvbiBuYW1lPSJJTkNMVURFX1RFWFRfSU5UT19TSEVMRiIgdmFsdWU9ImZhbHNlIiAvPgorICAgIDxvcHRpb24gbmFtZT0iQ1JFQVRFX1BBVENIX0VYUEFORF9ERVRBSUxTX0RFRkFVTFQiIHZhbHVlPSJ0cnVlIiAvPgorICAgIDxvcHRpb24gbmFtZT0iU0hPV19GSUxFX0hJU1RPUllfREVUQUlMUyIgdmFsdWU9InRydWUiIC8+CisgICAgPG9wdGlvbiBuYW1lPSJTSE9XX1ZDU19FUlJPUl9OT1RJRklDQVRJT05TIiB2YWx1ZT0idHJ1ZSIgLz4KKyAgICA8b3B0aW9uIG5hbWU9IkNIQU5HRV9ERVRBSUxTX09OIiB2YWx1ZT0iZmFsc2UiIC8+CisgICAgPG9wdGlvbiBuYW1lPSJGT1JDRV9OT05fRU1QVFlfQ09NTUVOVCIgdmFsdWU9ImZhbHNlIiAvPgorICAgIDxvcHRpb24gbmFtZT0iQ0xFQVJfSU5JVElBTF9DT01NSVRfTUVTU0FHRSIgdmFsdWU9ImZhbHNlIiAvPgorICAgIDxvcHRpb24gbmFtZT0iTEFTVF9DT01NSVRfTUVTU0FHRSIgLz4KKyAgICA8b3B0aW9uIG5hbWU9Ik1BS0VfTkVXX0NIQU5HRUxJU1RfQUNUSVZFIiB2YWx1ZT0iZmFsc2UiIC8+CisgICAgPG9wdGlvbiBuYW1lPSJPUFRJTUlaRV9JTVBPUlRTX0JFRk9SRV9QUk9KRUNUX0NPTU1JVCIgdmFsdWU9ImZhbHNlIiAvPgorICAgIDxvcHRpb24gbmFtZT0iQ0hFQ0tfRklMRVNfVVBfVE9fREFURV9CRUZPUkVfQ09NTUlUIiB2YWx1ZT0iZmFsc2UiIC8+CisgICAgPG9wdGlvbiBuYW1lPSJSRUZPUk1BVF9CRUZPUkVfUFJPSkVDVF9DT01NSVQiIHZhbHVlPSJmYWxzZSIgLz4KKyAgICA8b3B0aW9uIG5hbWU9IlJFRk9STUFUX0JFRk9SRV9GSUxFX0NPTU1JVCIgdmFsdWU9ImZhbHNlIiAvPgorICAgIDxvcHRpb24gbmFtZT0iRklMRV9ISVNUT1JZX0RJQUxPR19DT01NRU5UU19TUExJVFRFUl9QUk9QT1JUSU9OIiB2YWx1ZT0iMC44IiAvPgorICAgIDxvcHRpb24gbmFtZT0iRklMRV9ISVNUT1JZX0RJQUxPR19TUExJVFRFUl9QUk9QT1JUSU9OIiB2YWx1ZT0iMC41IiAvPgorICAgIDxvcHRpb24gbmFtZT0iQUNUSVZFX1ZDU19OQU1FIiAvPgorICAgIDxvcHRpb24gbmFtZT0iVVBEQVRFX0dST1VQX0JZX1BBQ0tBR0VTIiB2YWx1ZT0iZmFsc2UiIC8+CisgICAgPG9wdGlvbiBuYW1lPSJVUERBVEVfR1JPVVBfQllfQ0hBTkdFTElTVCIgdmFsdWU9ImZhbHNlIiAvPgorICAgIDxvcHRpb24gbmFtZT0iU0hPV19GSUxFX0hJU1RPUllfQVNfVFJFRSIgdmFsdWU9ImZhbHNlIiAvPgorICAgIDxvcHRpb24gbmFtZT0iRklMRV9ISVNUT1JZX1NQTElUVEVSX1BST1BPUlRJT04iIHZhbHVlPSIwLjYiIC8+CisgIDwvY29tcG9uZW50PgorICA8Y29tcG9uZW50IG5hbWU9IlhEZWJ1Z2dlck1hbmFnZXIiPgorICAgIDxicmVha3BvaW50LW1hbmFnZXIgLz4KKyAgPC9jb21wb25lbnQ+CisgIDxjb21wb25lbnQgbmFtZT0iZWRpdG9ySGlzdG9yeU1hbmFnZXIiPgorICAgIDxlbnRyeSBmaWxlPSJmaWxlOi8vJFBST0pFQ1RfRElSJC9sb2FkaW5nVGVzdC5pbWwiPgorICAgICAgPHByb3ZpZGVyIHNlbGVjdGVkPSJ0cnVlIiBlZGl0b3ItdHlwZS1pZD0idGV4dC1lZGl0b3IiPgorICAgICAgICA8c3RhdGUgbGluZT0iMTAiIGNvbHVtbj0iMCIgc2VsZWN0aW9uLXN0YXJ0PSIzNjgiIHNlbGVjdGlvbi1lbmQ9IjM2OCIgdmVydGljYWwtc2Nyb2xsLXByb3BvcnRpb249IjAuMjI3MjcyNzMiPgorICAgICAgICAgIDxmb2xkaW5nIC8+CisgICAgICAgIDwvc3RhdGU+CisgICAgICA8L3Byb3ZpZGVyPgorICAgIDwvZW50cnk+CisgIDwvY29tcG9uZW50PgorICA8Y29tcG9uZW50IG5hbWU9Im1hc3RlckRldGFpbHMiPgorICAgIDxzdGF0ZXM+CisgICAgICA8c3RhdGUga2V5PSJBcnRpZmFjdHNTdHJ1Y3R1cmVDb25maWd1cmFibGUuVUkiPgorICAgICAgICA8c2V0dGluZ3M+CisgICAgICAgICAgPGFydGlmYWN0LWVkaXRvciAvPgorICAgICAgICAgIDxzcGxpdHRlci1wcm9wb3J0aW9ucz4KKyAgICAgICAgICAgIDxvcHRpb24gbmFtZT0icHJvcG9ydGlvbnMiPgorICAgICAgICAgICAgICA8bGlzdD4KKyAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSIwLjIiIC8+CisgICAgICAgICAgICAgIDwvbGlzdD4KKyAgICAgICAgICAgIDwvb3B0aW9uPgorICAgICAgICAgIDwvc3BsaXR0ZXItcHJvcG9ydGlvbnM+CisgICAgICAgIDwvc2V0dGluZ3M+CisgICAgICA8L3N0YXRlPgorICAgICAgPHN0YXRlIGtleT0iRmFjZXRTdHJ1Y3R1cmVDb25maWd1cmFibGUuVUkiPgorICAgICAgICA8c2V0dGluZ3M+CisgICAgICAgICAgPGxhc3QtZWRpdGVkPk5vIGZhY2V0cyBhcmUgY29uZmlndXJlZDwvbGFzdC1lZGl0ZWQ+CisgICAgICAgICAgPHNwbGl0dGVyLXByb3BvcnRpb25zPgorICAgICAgICAgICAgPG9wdGlvbiBuYW1lPSJwcm9wb3J0aW9ucyI+CisgICAgICAgICAgICAgIDxsaXN0PgorICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9IjAuMiIgLz4KKyAgICAgICAgICAgICAgPC9saXN0PgorICAgICAgICAgICAgPC9vcHRpb24+CisgICAgICAgICAgPC9zcGxpdHRlci1wcm9wb3J0aW9ucz4KKyAgICAgICAgPC9zZXR0aW5ncz4KKyAgICAgIDwvc3RhdGU+CisgICAgICA8c3RhdGUga2V5PSJHbG9iYWxMaWJyYXJpZXNDb25maWd1cmFibGUuVUkiPgorICAgICAgICA8c2V0dGluZ3M+CisgICAgICAgICAgPGxhc3QtZWRpdGVkPmFjdHMtYXMtdGFnZ2FibGUtb24gKHYyLjAuNiwgcnVieS0xLjguNy1wMzM0KSBbZ2VtXTwvbGFzdC1lZGl0ZWQ+CisgICAgICAgICAgPHNwbGl0dGVyLXByb3BvcnRpb25zPgorICAgICAgICAgICAgPG9wdGlvbiBuYW1lPSJwcm9wb3J0aW9ucyI+CisgICAgICAgICAgICAgIDxsaXN0PgorICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9IjAuMiIgLz4KKyAgICAgICAgICAgICAgPC9saXN0PgorICAgICAgICAgICAgPC9vcHRpb24+CisgICAgICAgICAgPC9zcGxpdHRlci1wcm9wb3J0aW9ucz4KKyAgICAgICAgPC9zZXR0aW5ncz4KKyAgICAgIDwvc3RhdGU+CisgICAgICA8c3RhdGUga2V5PSJKZGtMaXN0Q29uZmlndXJhYmxlLlVJIj4KKyAgICAgICAgPHNldHRpbmdzPgorICAgICAgICAgIDxsYXN0LWVkaXRlZD4xLjY8L2xhc3QtZWRpdGVkPgorICAgICAgICAgIDxzcGxpdHRlci1wcm9wb3J0aW9ucz4KKyAgICAgICAgICAgIDxvcHRpb24gbmFtZT0icHJvcG9ydGlvbnMiPgorICAgICAgICAgICAgICA8bGlzdD4KKyAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSIwLjIiIC8+CisgICAgICAgICAgICAgIDwvbGlzdD4KKyAgICAgICAgICAgIDwvb3B0aW9uPgorICAgICAgICAgIDwvc3BsaXR0ZXItcHJvcG9ydGlvbnM+CisgICAgICAgIDwvc2V0dGluZ3M+CisgICAgICA8L3N0YXRlPgorICAgICAgPHN0YXRlIGtleT0iTW9kdWxlU3RydWN0dXJlQ29uZmlndXJhYmxlLlVJIj4KKyAgICAgICAgPHNldHRpbmdzPgorICAgICAgICAgIDxsYXN0LWVkaXRlZD5sb2FkaW5nVGVzdDwvbGFzdC1lZGl0ZWQ+CisgICAgICAgICAgPHNwbGl0dGVyLXByb3BvcnRpb25zPgorICAgICAgICAgICAgPG9wdGlvbiBuYW1lPSJwcm9wb3J0aW9ucyI+CisgICAgICAgICAgICAgIDxsaXN0PgorICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9IjAuMiIgLz4KKyAgICAgICAgICAgICAgPC9saXN0PgorICAgICAgICAgICAgPC9vcHRpb24+CisgICAgICAgICAgPC9zcGxpdHRlci1wcm9wb3J0aW9ucz4KKyAgICAgICAgPC9zZXR0aW5ncz4KKyAgICAgIDwvc3RhdGU+CisgICAgICA8c3RhdGUga2V5PSJQcm9qZWN0SkRLcy5VSSI+CisgICAgICAgIDxzZXR0aW5ncz4KKyAgICAgICAgICA8bGFzdC1lZGl0ZWQ+MS42PC9sYXN0LWVkaXRlZD4KKyAgICAgICAgICA8c3BsaXR0ZXItcHJvcG9ydGlvbnM+CisgICAgICAgICAgICA8b3B0aW9uIG5hbWU9InByb3BvcnRpb25zIj4KKyAgICAgICAgICAgICAgPGxpc3Q+CisgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iMC4yMDAwMDAwMiIgLz4KKyAgICAgICAgICAgICAgPC9saXN0PgorICAgICAgICAgICAgPC9vcHRpb24+CisgICAgICAgICAgPC9zcGxpdHRlci1wcm9wb3J0aW9ucz4KKyAgICAgICAgPC9zZXR0aW5ncz4KKyAgICAgIDwvc3RhdGU+CisgICAgICA8c3RhdGUga2V5PSJQcm9qZWN0TGlicmFyaWVzQ29uZmlndXJhYmxlLlVJIj4KKyAgICAgICAgPHNldHRpbmdzPgorICAgICAgICAgIDxsYXN0LWVkaXRlZD5hbm5vdGF0aW9uczwvbGFzdC1lZGl0ZWQ+CisgICAgICAgICAgPHNwbGl0dGVyLXByb3BvcnRpb25zPgorICAgICAgICAgICAgPG9wdGlvbiBuYW1lPSJwcm9wb3J0aW9ucyI+CisgICAgICAgICAgICAgIDxsaXN0PgorICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9IjAuMiIgLz4KKyAgICAgICAgICAgICAgPC9saXN0PgorICAgICAgICAgICAgPC9vcHRpb24+CisgICAgICAgICAgPC9zcGxpdHRlci1wcm9wb3J0aW9ucz4KKyAgICAgICAgPC9zZXR0aW5ncz4KKyAgICAgIDwvc3RhdGU+CisgICAgPC9zdGF0ZXM+CisgIDwvY29tcG9uZW50PgorPC9wcm9qZWN0PgorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29yZS9sb2FkaW5nVGVzdC9hbm5vdGF0aW9ucy5qYXIgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29yZS9sb2FkaW5nVGVzdC9hbm5vdGF0aW9ucy5qYXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDNhZTRhYgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb3JlL2xvYWRpbmdUZXN0L2Fubm90YXRpb25zLmphcgpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29yZS9sb2FkaW5nVGVzdC9sb2FkaW5nVGVzdC5pbWwgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvY29yZS9sb2FkaW5nVGVzdC9sb2FkaW5nVGVzdC5pbWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGM1MzU4MAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9jb3JlL2xvYWRpbmdUZXN0L2xvYWRpbmdUZXN0LmltbApAQCAtMCwwICsxLDEwIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPG1vZHVsZSB0eXBlPSJKQVZBX01PRFVMRSIgdmVyc2lvbj0iNCI+CisgIDxjb21wb25lbnQgbmFtZT0iTmV3TW9kdWxlUm9vdE1hbmFnZXIiIGluaGVyaXQtY29tcGlsZXItb3V0cHV0PSJ0cnVlIj4KKyAgICA8ZXhjbHVkZS1vdXRwdXQgLz4KKyAgICA8Y29udGVudCB1cmw9ImZpbGU6Ly8kTU9EVUxFX0RJUiQiIC8+CisgICAgPG9yZGVyRW50cnkgdHlwZT0ic291cmNlRm9sZGVyIiBmb3JUZXN0cz0iZmFsc2UiIC8+CisgICAgPG9yZGVyRW50cnkgdHlwZT0ibGlicmFyeSIgbmFtZT0iYW5ub3RhdGlvbnMiIGxldmVsPSJwcm9qZWN0IiAvPgorICA8L2NvbXBvbmVudD4KKzwvbW9kdWxlPgorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvZGVwZW5kZW5jaWVzL2N5Y2xlL25vQ3ljbGUvY29tL2EvQS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2RlcGVuZGVuY2llcy9jeWNsZS9ub0N5Y2xlL2NvbS9hL0EuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45M2RiNzg5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2RlcGVuZGVuY2llcy9jeWNsZS9ub0N5Y2xlL2NvbS9hL0EuamF2YQpAQCAtMCwwICsxLDQgQEAKK3BhY2thZ2UgY29tLmE7CitwdWJsaWMgY2xhc3MgQXsKKworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9kZXBlbmRlbmNpZXMvY3ljbGUvbm9DeWNsZS9jb20vYi9CLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvZGVwZW5kZW5jaWVzL2N5Y2xlL25vQ3ljbGUvY29tL2IvQi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ2ZWM4NGUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvZGVwZW5kZW5jaWVzL2N5Y2xlL25vQ3ljbGUvY29tL2IvQi5qYXZhCkBAIC0wLDAgKzEsNSBAQAorcGFja2FnZSBjb20uYjsKK2ltcG9ydCBjb20uYS5BOworcHVibGljIGNsYXNzIEJ7CitBIGFhID0gbmV3IEEoKTsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvZGVwZW5kZW5jaWVzL2N5Y2xlL3BhY2thZ2VTY29wZTEvY29tL2EvQS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2RlcGVuZGVuY2llcy9jeWNsZS9wYWNrYWdlU2NvcGUxL2NvbS9hL0EuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZDU4YzUzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2RlcGVuZGVuY2llcy9jeWNsZS9wYWNrYWdlU2NvcGUxL2NvbS9hL0EuamF2YQpAQCAtMCwwICsxLDUgQEAKK3BhY2thZ2UgY29tLmE7CitpbXBvcnQgY29tLmIuQjsKK3B1YmxpYyBjbGFzcyBBeworICBCIGIgPSBuZXcgQigpOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9kZXBlbmRlbmNpZXMvY3ljbGUvcGFja2FnZVNjb3BlMS9jb20vYi9CLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvZGVwZW5kZW5jaWVzL2N5Y2xlL3BhY2thZ2VTY29wZTEvY29tL2IvQi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU0OWEwYTMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvZGVwZW5kZW5jaWVzL2N5Y2xlL3BhY2thZ2VTY29wZTEvY29tL2IvQi5qYXZhCkBAIC0wLDAgKzEsNSBAQAorcGFja2FnZSBjb20uYjsKK2ltcG9ydCBjb20uYS5BOworcHVibGljIGNsYXNzIEJ7CisgIEEgYSA9IG5ldyBBKCk7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2RlcGVuZGVuY2llcy9jeWNsZS9wYWNrYWdlU2NvcGUyL2NvbS9zdWJzY29wZTEvYS9BLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvZGVwZW5kZW5jaWVzL2N5Y2xlL3BhY2thZ2VTY29wZTIvY29tL3N1YnNjb3BlMS9hL0EuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNThhOThhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2RlcGVuZGVuY2llcy9jeWNsZS9wYWNrYWdlU2NvcGUyL2NvbS9zdWJzY29wZTEvYS9BLmphdmEKQEAgLTAsMCArMSw1IEBACitwYWNrYWdlIGNvbS5zdWJzY29wZTEuYTsKK2ltcG9ydCBjb20uc3Vic2NvcGUxLmIuQjsKK3B1YmxpYyBjbGFzcyBBeworQiBiID0gbmV3IEIoKTsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvZGVwZW5kZW5jaWVzL2N5Y2xlL3BhY2thZ2VTY29wZTIvY29tL3N1YnNjb3BlMS9iL0IuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9kZXBlbmRlbmNpZXMvY3ljbGUvcGFja2FnZVNjb3BlMi9jb20vc3Vic2NvcGUxL2IvQi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIxY2IzZTAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvZGVwZW5kZW5jaWVzL2N5Y2xlL3BhY2thZ2VTY29wZTIvY29tL3N1YnNjb3BlMS9iL0IuamF2YQpAQCAtMCwwICsxLDUgQEAKK3BhY2thZ2UgY29tLnN1YnNjb3BlMS5iOworaW1wb3J0IGNvbS5zdWJzY29wZTEuYS5BOworcHVibGljIGNsYXNzIEJ7CitBIGEgPSBuZXcgQSgpOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9kZXBlbmRlbmNpZXMvY3ljbGUvcGFja2FnZVNjb3BlMi9jb20vc3Vic2NvcGUyL2MvQy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2RlcGVuZGVuY2llcy9jeWNsZS9wYWNrYWdlU2NvcGUyL2NvbS9zdWJzY29wZTIvYy9DLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWVkNDkwNwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9kZXBlbmRlbmNpZXMvY3ljbGUvcGFja2FnZVNjb3BlMi9jb20vc3Vic2NvcGUyL2MvQy5qYXZhCkBAIC0wLDAgKzEsNSBAQAorcGFja2FnZSBjb20uc3Vic2NvcGUyLmM7CitpbXBvcnQgY29tLnN1YnNjb3BlMi5kLkQ7CitwdWJsaWMgY2xhc3MgQ3sKK0QgZCA9IG5ldyBEKCk7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2RlcGVuZGVuY2llcy9jeWNsZS9wYWNrYWdlU2NvcGUyL2NvbS9zdWJzY29wZTIvZC9ELmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvZGVwZW5kZW5jaWVzL2N5Y2xlL3BhY2thZ2VTY29wZTIvY29tL3N1YnNjb3BlMi9kL0QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YmU4MzI2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2RlcGVuZGVuY2llcy9jeWNsZS9wYWNrYWdlU2NvcGUyL2NvbS9zdWJzY29wZTIvZC9ELmphdmEKQEAgLTAsMCArMSw1IEBACitwYWNrYWdlIGNvbS5zdWJzY29wZTIuZDsKK2ltcG9ydCBjb20uc3Vic2NvcGUyLmMuQzsKK3B1YmxpYyBjbGFzcyBEeworQyBjID0gbmV3IEMoKTsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvZGVwZW5kZW5jaWVzL2N5Y2xlL3QxL2NvbS9hL0EuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9kZXBlbmRlbmNpZXMvY3ljbGUvdDEvY29tL2EvQS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVkNThjNTMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvZGVwZW5kZW5jaWVzL2N5Y2xlL3QxL2NvbS9hL0EuamF2YQpAQCAtMCwwICsxLDUgQEAKK3BhY2thZ2UgY29tLmE7CitpbXBvcnQgY29tLmIuQjsKK3B1YmxpYyBjbGFzcyBBeworICBCIGIgPSBuZXcgQigpOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9kZXBlbmRlbmNpZXMvY3ljbGUvdDEvY29tL2IvQi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2RlcGVuZGVuY2llcy9jeWNsZS90MS9jb20vYi9CLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTQ5YTBhMwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9kZXBlbmRlbmNpZXMvY3ljbGUvdDEvY29tL2IvQi5qYXZhCkBAIC0wLDAgKzEsNSBAQAorcGFja2FnZSBjb20uYjsKK2ltcG9ydCBjb20uYS5BOworcHVibGljIGNsYXNzIEJ7CisgIEEgYSA9IG5ldyBBKCk7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2RlcGVuZGVuY2llcy9jeWNsZS90Mi9jb20vYS9BLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvZGVwZW5kZW5jaWVzL2N5Y2xlL3QyL2NvbS9hL0EuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMjRhMmYwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2RlcGVuZGVuY2llcy9jeWNsZS90Mi9jb20vYS9BLmphdmEKQEAgLTAsMCArMSw1IEBACitwYWNrYWdlIGNvbS5hOworaW1wb3J0IGNvbS5iLkI7CitwdWJsaWMgY2xhc3MgQXsKK0IgYiA9IG5ldyBCKCk7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2RlcGVuZGVuY2llcy9jeWNsZS90Mi9jb20vYi9CLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvZGVwZW5kZW5jaWVzL2N5Y2xlL3QyL2NvbS9iL0IuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ODkzNDQxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2RlcGVuZGVuY2llcy9jeWNsZS90Mi9jb20vYi9CLmphdmEKQEAgLTAsMCArMSw1IEBACitwYWNrYWdlIGNvbS5iOworaW1wb3J0IGNvbS5hLkE7CitwdWJsaWMgY2xhc3MgQnsKK0EgYSA9IG5ldyBBKCk7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2RlcGVuZGVuY2llcy9jeWNsZS90Mi9jb20vYy9DLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvZGVwZW5kZW5jaWVzL2N5Y2xlL3QyL2NvbS9jL0MuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZmQwZWJhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2RlcGVuZGVuY2llcy9jeWNsZS90Mi9jb20vYy9DLmphdmEKQEAgLTAsMCArMSw1IEBACitwYWNrYWdlIGNvbS5jOworaW1wb3J0IGNvbS5kLkQ7CitwdWJsaWMgY2xhc3MgQ3sKK0QgZCA9IG5ldyBEKCk7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2RlcGVuZGVuY2llcy9jeWNsZS90Mi9jb20vZC9ELmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvZGVwZW5kZW5jaWVzL2N5Y2xlL3QyL2NvbS9kL0QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMzI5ODQxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2RlcGVuZGVuY2llcy9jeWNsZS90Mi9jb20vZC9ELmphdmEKQEAgLTAsMCArMSw1IEBACitwYWNrYWdlIGNvbS5kOworaW1wb3J0IGNvbS5jLkM7CitwdWJsaWMgY2xhc3MgRHsKK0MgYyA9IG5ldyBDKCk7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2RlcGVuZGVuY2llcy9jeWNsZS90My9jb20vYS9BLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvZGVwZW5kZW5jaWVzL2N5Y2xlL3QzL2NvbS9hL0EuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZGU3NDQ3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2RlcGVuZGVuY2llcy9jeWNsZS90My9jb20vYS9BLmphdmEKQEAgLTAsMCArMSw1IEBACitwYWNrYWdlIGNvbS5hOworaW1wb3J0IGNvbS5jLkM7CitwdWJsaWMgY2xhc3MgQXsKK0MgYyA9IG5ldyBDKCk7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2RlcGVuZGVuY2llcy9jeWNsZS90My9jb20vYi9CLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvZGVwZW5kZW5jaWVzL2N5Y2xlL3QzL2NvbS9iL0IuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZmE2YTNmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2RlcGVuZGVuY2llcy9jeWNsZS90My9jb20vYi9CLmphdmEKQEAgLTAsMCArMSw3IEBACitwYWNrYWdlIGNvbS5iOworaW1wb3J0IGNvbS5hLkE7CitpbXBvcnQgY29tLmQuRDsKK3B1YmxpYyBjbGFzcyBCeworQSBhID0gbmV3IEEoKTsKK0QgZCA9IG5ldyBEKCk7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2RlcGVuZGVuY2llcy9jeWNsZS90My9jb20vYy9DLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvZGVwZW5kZW5jaWVzL2N5Y2xlL3QzL2NvbS9jL0MuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYWU4YzBjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2RlcGVuZGVuY2llcy9jeWNsZS90My9jb20vYy9DLmphdmEKQEAgLTAsMCArMSw1IEBACitwYWNrYWdlIGNvbS5jOworaW1wb3J0IGNvbS5iLkI7CitwdWJsaWMgY2xhc3MgQ3sKK0IgYiA9IG5ldyBCKCk7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2RlcGVuZGVuY2llcy9jeWNsZS90My9jb20vZC9ELmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvZGVwZW5kZW5jaWVzL2N5Y2xlL3QzL2NvbS9kL0QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMGY5NzE2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2RlcGVuZGVuY2llcy9jeWNsZS90My9jb20vZC9ELmphdmEKQEAgLTAsMCArMSw1IEBACitwYWNrYWdlIGNvbS5kOworaW1wb3J0IGNvbS5iLkI7CitwdWJsaWMgY2xhc3MgRHsKK0IgYiA9IG5ldyBCKCk7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2RlcGVuZGVuY2llcy9jeWNsZS90NC9jb20vYS9BLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvZGVwZW5kZW5jaWVzL2N5Y2xlL3Q0L2NvbS9hL0EuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMjRiNzc5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2RlcGVuZGVuY2llcy9jeWNsZS90NC9jb20vYS9BLmphdmEKQEAgLTAsMCArMSw3IEBACitwYWNrYWdlIGNvbS5hOworaW1wb3J0IGNvbS5iLkI7CitpbXBvcnQgY29tLmMuQzsKK3B1YmxpYyBjbGFzcyBBeworQiBiID0gbmV3IEIoKTsKK0MgYyA9IG5ldyBDKCk7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2RlcGVuZGVuY2llcy9jeWNsZS90NC9jb20vYi9CLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvZGVwZW5kZW5jaWVzL2N5Y2xlL3Q0L2NvbS9iL0IuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ODkzNDQxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2RlcGVuZGVuY2llcy9jeWNsZS90NC9jb20vYi9CLmphdmEKQEAgLTAsMCArMSw1IEBACitwYWNrYWdlIGNvbS5iOworaW1wb3J0IGNvbS5hLkE7CitwdWJsaWMgY2xhc3MgQnsKK0EgYSA9IG5ldyBBKCk7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2RlcGVuZGVuY2llcy9jeWNsZS90NC9jb20vYy9DLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvZGVwZW5kZW5jaWVzL2N5Y2xlL3Q0L2NvbS9jL0MuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZmQwZWJhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2RlcGVuZGVuY2llcy9jeWNsZS90NC9jb20vYy9DLmphdmEKQEAgLTAsMCArMSw1IEBACitwYWNrYWdlIGNvbS5jOworaW1wb3J0IGNvbS5kLkQ7CitwdWJsaWMgY2xhc3MgQ3sKK0QgZCA9IG5ldyBEKCk7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2RlcGVuZGVuY2llcy9jeWNsZS90NC9jb20vZC9ELmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvZGVwZW5kZW5jaWVzL2N5Y2xlL3Q0L2NvbS9kL0QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMDdhOTIwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2RlcGVuZGVuY2llcy9jeWNsZS90NC9jb20vZC9ELmphdmEKQEAgLTAsMCArMSw1IEBACitwYWNrYWdlIGNvbS5kOworaW1wb3J0IGNvbS5hLkE7CitwdWJsaWMgY2xhc3MgRHsKK0EgYSA9IG5ldyBBKCk7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2RlcGVuZGVuY2llcy9jeWNsZS90NS9jb20vYS9BLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvZGVwZW5kZW5jaWVzL2N5Y2xlL3Q1L2NvbS9hL0EuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZGU3NDQ3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2RlcGVuZGVuY2llcy9jeWNsZS90NS9jb20vYS9BLmphdmEKQEAgLTAsMCArMSw1IEBACitwYWNrYWdlIGNvbS5hOworaW1wb3J0IGNvbS5jLkM7CitwdWJsaWMgY2xhc3MgQXsKK0MgYyA9IG5ldyBDKCk7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2RlcGVuZGVuY2llcy9jeWNsZS90NS9jb20vYi9CLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvZGVwZW5kZW5jaWVzL2N5Y2xlL3Q1L2NvbS9iL0IuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZmE2YTNmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2RlcGVuZGVuY2llcy9jeWNsZS90NS9jb20vYi9CLmphdmEKQEAgLTAsMCArMSw3IEBACitwYWNrYWdlIGNvbS5iOworaW1wb3J0IGNvbS5hLkE7CitpbXBvcnQgY29tLmQuRDsKK3B1YmxpYyBjbGFzcyBCeworQSBhID0gbmV3IEEoKTsKK0QgZCA9IG5ldyBEKCk7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2RlcGVuZGVuY2llcy9jeWNsZS90NS9jb20vYy9DLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvZGVwZW5kZW5jaWVzL2N5Y2xlL3Q1L2NvbS9jL0MuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYWU4YzBjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2RlcGVuZGVuY2llcy9jeWNsZS90NS9jb20vYy9DLmphdmEKQEAgLTAsMCArMSw1IEBACitwYWNrYWdlIGNvbS5jOworaW1wb3J0IGNvbS5iLkI7CitwdWJsaWMgY2xhc3MgQ3sKK0IgYiA9IG5ldyBCKCk7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2RlcGVuZGVuY2llcy9jeWNsZS90NS9jb20vZC9ELmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvZGVwZW5kZW5jaWVzL2N5Y2xlL3Q1L2NvbS9kL0QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMGY5NzE2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2RlcGVuZGVuY2llcy9jeWNsZS90NS9jb20vZC9ELmphdmEKQEAgLTAsMCArMSw1IEBACitwYWNrYWdlIGNvbS5kOworaW1wb3J0IGNvbS5iLkI7CitwdWJsaWMgY2xhc3MgRHsKK0IgYiA9IG5ldyBCKCk7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2RlcGVuZGVuY2llcy9jeWNsZS90Ni9jb20vYS9BLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvZGVwZW5kZW5jaWVzL2N5Y2xlL3Q2L2NvbS9hL0EuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYWI4MThkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2RlcGVuZGVuY2llcy9jeWNsZS90Ni9jb20vYS9BLmphdmEKQEAgLTAsMCArMSw1IEBACitwYWNrYWdlIGNvbS5hOworaW1wb3J0IGNvbS5iLkIxOworcHVibGljIGNsYXNzIEF7CisgIEIxIGIgPSBuZXcgQjEoKTsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvZGVwZW5kZW5jaWVzL2N5Y2xlL3Q2L2NvbS9iL0IxLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvZGVwZW5kZW5jaWVzL2N5Y2xlL3Q2L2NvbS9iL0IxLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2JkNTUwYwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9kZXBlbmRlbmNpZXMvY3ljbGUvdDYvY29tL2IvQjEuamF2YQpAQCAtMCwwICsxLDQgQEAKK3BhY2thZ2UgY29tLmI7CitwdWJsaWMgY2xhc3MgQjF7CisKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvZGVwZW5kZW5jaWVzL2N5Y2xlL3Q2L2NvbS9iL0IyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvZGVwZW5kZW5jaWVzL2N5Y2xlL3Q2L2NvbS9iL0IyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzhiOGM5ZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9kZXBlbmRlbmNpZXMvY3ljbGUvdDYvY29tL2IvQjIuamF2YQpAQCAtMCwwICsxLDUgQEAKK3BhY2thZ2UgY29tLmI7CitpbXBvcnQgY29tLmMuQzsKK3B1YmxpYyBjbGFzcyBCMnsKK0MgY2M9IG5ldyBDKCk7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2RlcGVuZGVuY2llcy9jeWNsZS90Ni9jb20vYy9DLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvZGVwZW5kZW5jaWVzL2N5Y2xlL3Q2L2NvbS9jL0MuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zN2MzNDY1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2RlcGVuZGVuY2llcy9jeWNsZS90Ni9jb20vYy9DLmphdmEKQEAgLTAsMCArMSw1IEBACitwYWNrYWdlIGNvbS5jOworaW1wb3J0IGNvbS5hLkE7CitwdWJsaWMgY2xhc3MgQ3sKK0EgYWEgPSBuZXcgQSgpOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9kZXBlbmRlbmNpZXMvZGVwZW5kZW5jaWVzL3NyYy9jb20vcGFja2FnZTEvQ2xhc3MxLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvZGVwZW5kZW5jaWVzL2RlcGVuZGVuY2llcy9zcmMvY29tL3BhY2thZ2UxL0NsYXNzMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRmN2M0MDQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvZGVwZW5kZW5jaWVzL2RlcGVuZGVuY2llcy9zcmMvY29tL3BhY2thZ2UxL0NsYXNzMS5qYXZhCkBAIC0wLDAgKzEsNSBAQAorcGFja2FnZSBjb20ucGFja2FnZTE7CisKK3B1YmxpYyBjbGFzcyBDbGFzczEgeworICBwcml2YXRlIENsYXNzMiBteUNsYXNzOyAgCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2RlcGVuZGVuY2llcy9kZXBlbmRlbmNpZXMvc3JjL2NvbS9wYWNrYWdlMS9DbGFzczIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9kZXBlbmRlbmNpZXMvZGVwZW5kZW5jaWVzL3NyYy9jb20vcGFja2FnZTEvQ2xhc3MyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNThmNThhNAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9kZXBlbmRlbmNpZXMvZGVwZW5kZW5jaWVzL3NyYy9jb20vcGFja2FnZTEvQ2xhc3MyLmphdmEKQEAgLTAsMCArMSw0IEBACitwYWNrYWdlIGNvbS5wYWNrYWdlMTsKKworcHVibGljIGNsYXNzIENsYXNzMiB7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2RlcGVuZGVuY2llcy9zZWFyY2gvYmFja3dhcmRQYWNrYWdlU2NvcGUvY29tL2EvQS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2RlcGVuZGVuY2llcy9zZWFyY2gvYmFja3dhcmRQYWNrYWdlU2NvcGUvY29tL2EvQS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU1NGE3NDMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvZGVwZW5kZW5jaWVzL3NlYXJjaC9iYWNrd2FyZFBhY2thZ2VTY29wZS9jb20vYS9BLmphdmEKQEAgLTAsMCArMSw1IEBACitwYWNrYWdlIGNvbS5hOworcHVibGljIGNsYXNzIEF7CisgIHB1YmxpYyB2b2lkIGFhKCl7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvZGVwZW5kZW5jaWVzL3NlYXJjaC9iYWNrd2FyZFBhY2thZ2VTY29wZS9jb20vYS9DLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvZGVwZW5kZW5jaWVzL3NlYXJjaC9iYWNrd2FyZFBhY2thZ2VTY29wZS9jb20vYS9DLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWU1YzEzMQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9kZXBlbmRlbmNpZXMvc2VhcmNoL2JhY2t3YXJkUGFja2FnZVNjb3BlL2NvbS9hL0MuamF2YQpAQCAtMCwwICsxLDcgQEAKK3BhY2thZ2UgY29tLmE7CitwdWJsaWMgY2xhc3MgQ3sKKyAgQSBteUEgPSBuZXcgQSAoKTsKKyAgcHVibGljIHZvaWQgY2MoKXsKKyAgICBteUEuYWEoKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9kZXBlbmRlbmNpZXMvc2VhcmNoL2JhY2t3YXJkUGFja2FnZVNjb3BlL2NvbS9iL0IuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9kZXBlbmRlbmNpZXMvc2VhcmNoL2JhY2t3YXJkUGFja2FnZVNjb3BlL2NvbS9iL0IuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NDlhYTIwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2RlcGVuZGVuY2llcy9zZWFyY2gvYmFja3dhcmRQYWNrYWdlU2NvcGUvY29tL2IvQi5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKK3BhY2thZ2UgY29tLmI7CitpbXBvcnQgY29tLmEuKjsKK2NsYXNzIEJ7CisgIEEgbXlBID0gbmV3IEEoKTsKKyAgQyBteUMgPSBuZXcgQygpOworICB2b2lkIGJiKCl7CisgICAgbXlBLmFhKCk7CisgICAgbXlDLmNjKCk7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvZGVwZW5kZW5jaWVzL3NlYXJjaC9mb3J3YXJkUGFja2FnZVNjb3BlL2NvbS9hL0EuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9kZXBlbmRlbmNpZXMvc2VhcmNoL2ZvcndhcmRQYWNrYWdlU2NvcGUvY29tL2EvQS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU1NGE3NDMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvZGVwZW5kZW5jaWVzL3NlYXJjaC9mb3J3YXJkUGFja2FnZVNjb3BlL2NvbS9hL0EuamF2YQpAQCAtMCwwICsxLDUgQEAKK3BhY2thZ2UgY29tLmE7CitwdWJsaWMgY2xhc3MgQXsKKyAgcHVibGljIHZvaWQgYWEoKXsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9kZXBlbmRlbmNpZXMvc2VhcmNoL2ZvcndhcmRQYWNrYWdlU2NvcGUvY29tL2IvQi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2RlcGVuZGVuY2llcy9zZWFyY2gvZm9yd2FyZFBhY2thZ2VTY29wZS9jb20vYi9CLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGI0MmM3MAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9kZXBlbmRlbmNpZXMvc2VhcmNoL2ZvcndhcmRQYWNrYWdlU2NvcGUvY29tL2IvQi5qYXZhCkBAIC0wLDAgKzEsOCBAQAorcGFja2FnZSBjb20uYjsKK2ltcG9ydCBjb20uYS5BOworcHVibGljIGNsYXNzIEJ7CisgIEEgbXlBID0gbmV3IEEoKTsKKyAgcHVibGljIHZvaWQgYmIoKXsKKyAgICBteUEuYWEoKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9kZXBlbmRlbmNpZXMvc2VhcmNoL2ZvcndhcmRQYWNrYWdlU2NvcGUvY29tL2IvQy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2RlcGVuZGVuY2llcy9zZWFyY2gvZm9yd2FyZFBhY2thZ2VTY29wZS9jb20vYi9DLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWFkNGQ0MQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9kZXBlbmRlbmNpZXMvc2VhcmNoL2ZvcndhcmRQYWNrYWdlU2NvcGUvY29tL2IvQy5qYXZhCkBAIC0wLDAgKzEsOCBAQAorcGFja2FnZSBjb20uYjsKK2ltcG9ydCBjb20uYS5BOworcHVibGljIGNsYXNzIEN7CisgIEEgbXlBID0gbmV3IEEoKTsKKyAgcHVibGljIHZvaWQgY2MoKXsKKyAgICBteUEuYWEoKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9kZXBlbmRlbmNpZXMvc2VhcmNoL2ZvcndhcmRTaW1wbGUvQS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2RlcGVuZGVuY2llcy9zZWFyY2gvZm9yd2FyZFNpbXBsZS9BLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzZkMjAxYQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9kZXBlbmRlbmNpZXMvc2VhcmNoL2ZvcndhcmRTaW1wbGUvQS5qYXZhCkBAIC0wLDAgKzEsNiBAQAorcHVibGljIGNsYXNzIEF7CisgIEIgbXlCID0gbmV3IEIoKTsKKyAgdm9pZCBhYSgpeworICAgIG15Qi5iYigpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2RlcGVuZGVuY2llcy9zZWFyY2gvZm9yd2FyZFNpbXBsZS9CLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvZGVwZW5kZW5jaWVzL3NlYXJjaC9mb3J3YXJkU2ltcGxlL0IuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NGYzNjU1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2RlcGVuZGVuY2llcy9zZWFyY2gvZm9yd2FyZFNpbXBsZS9CLmphdmEKQEAgLTAsMCArMSw0IEBACitwdWJsaWMgY2xhc3MgQnsKKyAgcHVibGljIHZvaWQgYmIoKXsgICAgIAorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2ZpbGVTdHJ1Y3R1cmUvZmlsdGVyaW5nL0Fub255bW91c1R5cGUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9maWxlU3RydWN0dXJlL2ZpbHRlcmluZy9Bbm9ueW1vdXNUeXBlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjE3MzFkYQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9maWxlU3RydWN0dXJlL2ZpbHRlcmluZy9Bbm9ueW1vdXNUeXBlLmphdmEKQEAgLTAsMCArMSw4IEBACitpbXBvcnQgamF2YS5hd3QuKjsKKworY2xhc3MgQW5vbnltb3VzVHlwZTxjYXJldD4geworICBpbnQgbnVtOworICB2b2lkIGZvbygpIHsKKyAgICBuZXcgamF2YS5hd3QuUG9pbnQoKXt9OworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2ZpbGVTdHJ1Y3R1cmUvZmlsdGVyaW5nL0Fub255bW91c1R5cGUudHJlZSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9maWxlU3RydWN0dXJlL2ZpbHRlcmluZy9Bbm9ueW1vdXNUeXBlLnRyZWUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjU4YjFhMgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9maWxlU3RydWN0dXJlL2ZpbHRlcmluZy9Bbm9ueW1vdXNUeXBlLnRyZWUKQEAgLTAsMCArMSw0IEBACistQW5vbnltb3VzVHlwZS5qYXZhCisgLUFub255bW91c1R5cGUKKyAgLWZvbygpOiB2b2lkCisgICBbJDFdClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2ZpbGVTdHJ1Y3R1cmUvZmlsdGVyaW5nL0NhbWVsLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvZmlsZVN0cnVjdHVyZS9maWx0ZXJpbmcvQ2FtZWwuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMDc5NGY3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2ZpbGVTdHJ1Y3R1cmUvZmlsdGVyaW5nL0NhbWVsLmphdmEKQEAgLTAsMCArMSw3IEBACitjbGFzcyBDYW1lbDxjYXJldD4geworICB2b2lkIGRvU29tZXRoaW5nKCl7fQorICB2b2lkIGRvU29tZXRoaW5nV2l0aCgpe30KKyAgdm9pZCBkb1NvbWV0aGluZ1dpdGhNeUhlYWQoKXt9CisgIHZvaWQgZ2V0U29tZUhlYWQoKXt9CisgIHZvaWQgZ2V0U29tZUFydEhlYWRlcigpe30KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvZmlsZVN0cnVjdHVyZS9maWx0ZXJpbmcvQ2FtZWwudHJlZSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9maWxlU3RydWN0dXJlL2ZpbHRlcmluZy9DYW1lbC50cmVlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ3ZDJjYWIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvZmlsZVN0cnVjdHVyZS9maWx0ZXJpbmcvQ2FtZWwudHJlZQpAQCAtMCwwICsxLDUgQEAKKy1DYW1lbC5qYXZhCisgLUNhbWVsCisgIFtkb1NvbWV0aGluZ1dpdGhNeUhlYWQoKTogdm9pZF0KKyAgZ2V0U29tZUFydEhlYWRlcigpOiB2b2lkCisgIGdldFNvbWVIZWFkKCk6IHZvaWQKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvZmlsZVN0cnVjdHVyZS9maWx0ZXJpbmcvQ2FtZWwyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvZmlsZVN0cnVjdHVyZS9maWx0ZXJpbmcvQ2FtZWwyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTMwZGExMwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9maWxlU3RydWN0dXJlL2ZpbHRlcmluZy9DYW1lbDIuamF2YQpAQCAtMCwwICsxLDcgQEAKK2NsYXNzIENhbWVsMjxjYXJldD4geworICB2b2lkIGRvU29tZXRoaW5nKCl7fQorICB2b2lkIGRvU29tZXRoaW5nV2l0aCgpe30KKyAgdm9pZCBkb1NvbWV0aGluZ1dpdGhNeUhlYWQoKXt9CisgIHZvaWQgZG9Tb21lSGVhZCgpe30KKyAgdm9pZCBkb1NvbWVBcnRIZWFkZXIoKXt9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2ZpbGVTdHJ1Y3R1cmUvZmlsdGVyaW5nL0NhbWVsMi50cmVlIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2ZpbGVTdHJ1Y3R1cmUvZmlsdGVyaW5nL0NhbWVsMi50cmVlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMzZGJhYTgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvZmlsZVN0cnVjdHVyZS9maWx0ZXJpbmcvQ2FtZWwyLnRyZWUKQEAgLTAsMCArMSw1IEBACistQ2FtZWwyLmphdmEKKyAtQ2FtZWwyCisgIGRvU29tZUFydEhlYWRlcigpOiB2b2lkCisgIFtkb1NvbWVIZWFkKCk6IHZvaWRdCisgIGRvU29tZXRoaW5nV2l0aE15SGVhZCgpOiB2b2lkClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2ZpbGVTdHJ1Y3R1cmUvZmlsdGVyaW5nL1JldHVyblZhbHVlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvZmlsZVN0cnVjdHVyZS9maWx0ZXJpbmcvUmV0dXJuVmFsdWUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kOTlmZDcyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2ZpbGVTdHJ1Y3R1cmUvZmlsdGVyaW5nL1JldHVyblZhbHVlLmphdmEKQEAgLTAsMCArMSwxMCBAQAoraW1wb3J0IGphdmEuYXd0Lio7CisKK2NsYXNzIFJldHVyblZhbHVlIHsKKyAgdm9pZCBhYWEoKXs8Y2FyZXQ+fQorICBQb2ludCBnZXRMb2NhdGlvbk9uU2NyZWVuKCl7fQorICBQb2ludCBnZXRQb2ludCgpe30KKyAgdm9pZCBmZmYyKCl7fQorICB2b2lkIGZmZjMoKXt9CisgIHZvaWQgZmZmNCgpe30KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvZmlsZVN0cnVjdHVyZS9maWx0ZXJpbmcvUmV0dXJuVmFsdWUudHJlZSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9maWxlU3RydWN0dXJlL2ZpbHRlcmluZy9SZXR1cm5WYWx1ZS50cmVlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ2OWFkZGQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvZmlsZVN0cnVjdHVyZS9maWx0ZXJpbmcvUmV0dXJuVmFsdWUudHJlZQpAQCAtMCwwICsxLDQgQEAKKy1SZXR1cm5WYWx1ZS5qYXZhCisgLVJldHVyblZhbHVlCisgIGdldExvY2F0aW9uT25TY3JlZW4oKTogUG9pbnQKKyAgW2dldFBvaW50KCk6IFBvaW50XQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9maWxlU3RydWN0dXJlL2ZpbHRlcmluZy9TZWxlY3RMZWFmRmlyc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9maWxlU3RydWN0dXJlL2ZpbHRlcmluZy9TZWxlY3RMZWFmRmlyc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NWVkYTRlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2ZpbGVTdHJ1Y3R1cmUvZmlsdGVyaW5nL1NlbGVjdExlYWZGaXJzdC5qYXZhCkBAIC0wLDAgKzEsMTMgQEAKK2NsYXNzIFNlbGVjdExlYWZGaXJzdCB7CisgIHZvaWQgYWFhKCl7fQorICA8Y2FyZXQ+CisgIHZvaWQgYmJiKCl7fQorICB2b2lkIGNsZWFyKCl7fQorICB2b2lkIHp6eigpe30KKyAgY2xhc3MgQ2xlYXJDbGFzcyB7CisgICAgdm9pZCBra2soKXt9CisgICAgdm9pZCB3d3coKXt9CisgICAgdm9pZCBjbGVhcigpe30KKyAgICB2b2lkIHl5eSgpe30KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9maWxlU3RydWN0dXJlL2ZpbHRlcmluZy9TZWxlY3RMZWFmRmlyc3QudHJlZSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9maWxlU3RydWN0dXJlL2ZpbHRlcmluZy9TZWxlY3RMZWFmRmlyc3QudHJlZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYTMyMjYyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2ZpbGVTdHJ1Y3R1cmUvZmlsdGVyaW5nL1NlbGVjdExlYWZGaXJzdC50cmVlCkBAIC0wLDAgKzEsNSBAQAorLVNlbGVjdExlYWZGaXJzdC5qYXZhCisgLVNlbGVjdExlYWZGaXJzdAorICBbY2xlYXIoKTogdm9pZF0KKyAgLUNsZWFyQ2xhc3MKKyAgIGNsZWFyKCk6IHZvaWQKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvZmlsZVN0cnVjdHVyZS9maWx0ZXJpbmcvU2VsZWN0TGVhZkZpcnN0Mi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2ZpbGVTdHJ1Y3R1cmUvZmlsdGVyaW5nL1NlbGVjdExlYWZGaXJzdDIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNmQ1MDUyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2ZpbGVTdHJ1Y3R1cmUvZmlsdGVyaW5nL1NlbGVjdExlYWZGaXJzdDIuamF2YQpAQCAtMCwwICsxLDEzIEBACitjbGFzcyBTZWxlY3RMZWFmRmlyc3QyIHsKKyAgdm9pZCBhYWEoKXt9CisgIHZvaWQgYmJiKCl7fQorICB2b2lkIGNsZWFyKCl7fQorICB2b2lkIHp6eigpe30KKyAgY2xhc3MgQ2xlYXJDbGFzcyB7CisgICAgdm9pZCBra2soKXt9CisgICAgPGNhcmV0PgorICAgIHZvaWQgd3d3KCl7fQorICAgIHZvaWQgY2xlYXIoKXt9CisgICAgdm9pZCB5eXkoKXt9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvZmlsZVN0cnVjdHVyZS9maWx0ZXJpbmcvU2VsZWN0TGVhZkZpcnN0Mi50cmVlIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2ZpbGVTdHJ1Y3R1cmUvZmlsdGVyaW5nL1NlbGVjdExlYWZGaXJzdDIudHJlZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iOWJjOTVmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2ZpbGVTdHJ1Y3R1cmUvZmlsdGVyaW5nL1NlbGVjdExlYWZGaXJzdDIudHJlZQpAQCAtMCwwICsxLDUgQEAKKy1TZWxlY3RMZWFmRmlyc3QyLmphdmEKKyAtU2VsZWN0TGVhZkZpcnN0MgorICBjbGVhcigpOiB2b2lkCisgIC1DbGVhckNsYXNzCisgICBbY2xlYXIoKTogdm9pZF0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvZmlsZVN0cnVjdHVyZS9maWx0ZXJpbmcvU2VsZWN0TGVhZkZpcnN0My5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2ZpbGVTdHJ1Y3R1cmUvZmlsdGVyaW5nL1NlbGVjdExlYWZGaXJzdDMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZTRkNmI0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2ZpbGVTdHJ1Y3R1cmUvZmlsdGVyaW5nL1NlbGVjdExlYWZGaXJzdDMuamF2YQpAQCAtMCwwICsxLDEzIEBACitjbGFzcyBTZWxlY3RMZWFmRmlyc3QzIHsKKyAgaW50PGNhcmV0PiBudW07CisgIHZvaWQgYWFhKCl7fQorICB2b2lkIGJiYigpe30KKyAgdm9pZCBjbGVhcigpe30KKyAgdm9pZCB6enooKXt9CisgIGNsYXNzIENsZWFyQ2xhc3MgeworICAgIHZvaWQga2trKCl7fQorICAgIHZvaWQgd3d3KCl7fQorICAgIHZvaWQgY2xlYXIoKXt9CisgICAgdm9pZCB5eXkoKXt9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvZmlsZVN0cnVjdHVyZS9maWx0ZXJpbmcvU2VsZWN0TGVhZkZpcnN0My50cmVlIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2ZpbGVTdHJ1Y3R1cmUvZmlsdGVyaW5nL1NlbGVjdExlYWZGaXJzdDMudHJlZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMmNhZjJjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2ZpbGVTdHJ1Y3R1cmUvZmlsdGVyaW5nL1NlbGVjdExlYWZGaXJzdDMudHJlZQpAQCAtMCwwICsxLDUgQEAKKy1TZWxlY3RMZWFmRmlyc3QzLmphdmEKKyAtU2VsZWN0TGVhZkZpcnN0MworICBbY2xlYXIoKTogdm9pZF0KKyAgLUNsZWFyQ2xhc3MKKyAgIGNsZWFyKCk6IHZvaWQKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvZmlsZVN0cnVjdHVyZS9maWx0ZXJpbmcvU2VsZWN0TGVhZkZpcnN0NC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2ZpbGVTdHJ1Y3R1cmUvZmlsdGVyaW5nL1NlbGVjdExlYWZGaXJzdDQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40Y2FmM2YxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2ZpbGVTdHJ1Y3R1cmUvZmlsdGVyaW5nL1NlbGVjdExlYWZGaXJzdDQuamF2YQpAQCAtMCwwICsxLDEyIEBACitjbGFzcyBTZWxlY3RMZWFmRmlyc3Q0IHsKKyAgdm9pZCBhYWEoKXt9CisgIHZvaWQgYmJiKCl7fQorICB2b2lkIGNsZWFyKCl7fQorICB2b2lkIHp6eigpe30KKyAgY2xhc3MgQ2xlYXJDbGFzcyB7CisgICAgdm9pZDxjYXJldD4ga2trKCl7fQorICAgIHZvaWQgd3d3KCl7fQorICAgIHZvaWQgY2xlYXIoKXt9CisgICAgdm9pZCB5eXkoKXt9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvZmlsZVN0cnVjdHVyZS9maWx0ZXJpbmcvU2VsZWN0TGVhZkZpcnN0NC50cmVlIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2ZpbGVTdHJ1Y3R1cmUvZmlsdGVyaW5nL1NlbGVjdExlYWZGaXJzdDQudHJlZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMmI1MGZiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2ZpbGVTdHJ1Y3R1cmUvZmlsdGVyaW5nL1NlbGVjdExlYWZGaXJzdDQudHJlZQpAQCAtMCwwICsxLDUgQEAKKy1TZWxlY3RMZWFmRmlyc3Q0LmphdmEKKyAtU2VsZWN0TGVhZkZpcnN0NAorICBjbGVhcigpOiB2b2lkCisgIC1DbGVhckNsYXNzCisgICBbY2xlYXIoKTogdm9pZF0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvZmlsZVN0cnVjdHVyZS9maWx0ZXJpbmcvU2ltcGxlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvZmlsZVN0cnVjdHVyZS9maWx0ZXJpbmcvU2ltcGxlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjRhNjJlOQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9maWxlU3RydWN0dXJlL2ZpbHRlcmluZy9TaW1wbGUuamF2YQpAQCAtMCwwICsxLDggQEAKK2NsYXNzIFNpbXBsZTxjYXJldD4geworICB2b2lkIGFhYSgpe30KKyAgdm9pZCBiYmIoKXt9CisgIHZvaWQgZmZmKCl7fQorICB2b2lkIGZmZjIoKXt9CisgIHZvaWQgZmZmMygpe30KKyAgdm9pZCBmZmY0KCl7fQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2ZpbGVTdHJ1Y3R1cmUvZmlsdGVyaW5nL1NpbXBsZS50cmVlIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2ZpbGVTdHJ1Y3R1cmUvZmlsdGVyaW5nL1NpbXBsZS50cmVlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFmOTQxZDcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvZmlsZVN0cnVjdHVyZS9maWx0ZXJpbmcvU2ltcGxlLnRyZWUKQEAgLTAsMCArMSw2IEBACistU2ltcGxlLmphdmEKKyAtU2ltcGxlCisgIFtmZmYoKTogdm9pZF0KKyAgZmZmMigpOiB2b2lkCisgIGZmZjMoKTogdm9pZAorICBmZmY0KCk6IHZvaWQKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9maWxlU3RydWN0dXJlL2hpZXJhcmNoeS9Bbm9ueW1vdXNBc0NvbnN0YW50SW5JbnRlcmZhY2UuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9maWxlU3RydWN0dXJlL2hpZXJhcmNoeS9Bbm9ueW1vdXNBc0NvbnN0YW50SW5JbnRlcmZhY2UuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NWFiN2RkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2ZpbGVTdHJ1Y3R1cmUvaGllcmFyY2h5L0Fub255bW91c0FzQ29uc3RhbnRJbkludGVyZmFjZS5qYXZhCkBAIC0wLDAgKzEsMjIgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwMC0yMDEyIEpldEJyYWlucyBzLnIuby4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitjbGFzcyBBbm9ueW1vdXNBc0NvbnN0YW50SW5JbnRlcmZhY2UgeworICBpbnQgbnVtID0gNTsKKworICB2b2lkIGdldEFNZXRob2QoKSB7CisgICAgQnVnZ3kgYnVnZ3kgPSBuZXcgQnVnZ3koKXs8Y2FyZXQ+fTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9maWxlU3RydWN0dXJlL2hpZXJhcmNoeS9Bbm9ueW1vdXNBc0NvbnN0YW50SW5JbnRlcmZhY2UudHJlZSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9maWxlU3RydWN0dXJlL2hpZXJhcmNoeS9Bbm9ueW1vdXNBc0NvbnN0YW50SW5JbnRlcmZhY2UudHJlZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZGUzZmE4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2ZpbGVTdHJ1Y3R1cmUvaGllcmFyY2h5L0Fub255bW91c0FzQ29uc3RhbnRJbkludGVyZmFjZS50cmVlCkBAIC0wLDAgKzEsMjMgQEAKKy1Bbm9ueW1vdXNBc0NvbnN0YW50SW5JbnRlcmZhY2UuamF2YQorIC1Bbm9ueW1vdXNBc0NvbnN0YW50SW5JbnRlcmZhY2UKKyAgLWdldEFNZXRob2QoKTogdm9pZAorICAgLSQxCisgICAgZ2V0QSgpOiB2b2lkCisgICAgZ2V0QTEoKTogdm9pZAorICAgIGdldEEyKCk6IHZvaWQKKyAgICBnZXRBMygpOiB2b2lkCisgICAgZ2V0QTQoKTogdm9pZAorICAgIGdldEE1KCk6IHZvaWQKKyAgICBnZXRBNigpOiB2b2lkCisgICAgZ2V0QTcoKTogdm9pZAorICAgIGdldEE4KCk6IHZvaWQKKyAgICAtREVGQVVMVDogQnVnZ3lJbnRlcmZhY2UgPSBuZXcgQnVnZ3lJbnRlcmZhY2UoKSB7Li4ufQorICAgICAtJDEKKyAgICAgIFtnZXRBMSgpOiB2b2lkXQorICAgICAgZ2V0QTIoKTogdm9pZAorICAgICAgZ2V0QTMoKTogdm9pZAorICAgICAgZ2V0QTQoKTogdm9pZAorICAgICAgZ2V0QTUoKTogdm9pZAorICAgICAgZ2V0QTYoKTogdm9pZAorICAgICAgZ2V0QTcoKTogdm9pZAorICAgICAgZ2V0QTgoKTogdm9pZApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9maWxlU3RydWN0dXJlL2hpZXJhcmNoeS9Bbm9ueW1vdXNIYXNoQ29kZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2ZpbGVTdHJ1Y3R1cmUvaGllcmFyY2h5L0Fub255bW91c0hhc2hDb2RlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTExOGI3OQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9maWxlU3RydWN0dXJlL2hpZXJhcmNoeS9Bbm9ueW1vdXNIYXNoQ29kZS5qYXZhCkBAIC0wLDAgKzEsMjIgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwMC0yMDEyIEpldEJyYWlucyBzLnIuby4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitpbXBvcnQgamF2YS5sYW5nLk9iamVjdDsKKworcHVibGljIGNsYXNzIEE8Y2FyZXQ+IGV4dGVuZHMgT2JqZWN0IHsKKyAgdm9pZCBmb28oKSB7CisgICAgT2JqZWN0IG15T2JqZWN0ID0gbmV3IE9iamVjdCgpe307CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvZmlsZVN0cnVjdHVyZS9oaWVyYXJjaHkvQW5vbnltb3VzSGFzaENvZGUudHJlZSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9maWxlU3RydWN0dXJlL2hpZXJhcmNoeS9Bbm9ueW1vdXNIYXNoQ29kZS50cmVlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE5MjcxNTMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvZmlsZVN0cnVjdHVyZS9oaWVyYXJjaHkvQW5vbnltb3VzSGFzaENvZGUudHJlZQpAQCAtMCwwICsxLDMgQEAKKy1Bbm9ueW1vdXNIYXNoQ29kZS5qYXZhCisgLUEKKyAgW2hhc2hDb2RlKCk6IGludF0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvZmlsZVN0cnVjdHVyZS9oaWVyYXJjaHkvQnVnZ3kuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9maWxlU3RydWN0dXJlL2hpZXJhcmNoeS9CdWdneS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI4MzlhOTMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvZmlsZVN0cnVjdHVyZS9oaWVyYXJjaHkvQnVnZ3kuamF2YQpAQCAtMCwwICsxLDMzIEBACisvKgorICogQ29weXJpZ2h0IDIwMDAtMjAxMiBKZXRCcmFpbnMgcy5yLm8uCisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworaW1wb3J0IGphdmEubGFuZy5PYmplY3Q7CisKK2NsYXNzIEJ1Z2d5IGV4dGVuZHMgT2JqZWN0IGltcGxlbWVudHMgQnVnZ3lJbnRlcmZhY2UgeworICBwdWJsaWMgdm9pZCBnZXRBKCl7fQorICBwdWJsaWMgdm9pZCBnZXRCKCl7fQorICBwdWJsaWMgdm9pZCBnZXRDKCl7fQorICBwdWJsaWMgdm9pZCBnZXREKCl7fQorICBwdWJsaWMgdm9pZCBnZXRFKCl7fQorICBwdWJsaWMgdm9pZCBnZXRGKCl7fQorICBwdWJsaWMgdm9pZCBnZXRBMSgpe30KKyAgcHVibGljIHZvaWQgZ2V0QTIoKXt9CisgIHB1YmxpYyB2b2lkIGdldEEzKCl7fQorICBwdWJsaWMgdm9pZCBnZXRBNCgpe30KKyAgcHVibGljIHZvaWQgZ2V0QTUoKXt9CisgIHB1YmxpYyB2b2lkIGdldEE2KCl7fQorICBwdWJsaWMgdm9pZCBnZXRBNygpe30KKyAgcHVibGljIHZvaWQgZ2V0QTgoKXt9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2ZpbGVTdHJ1Y3R1cmUvaGllcmFyY2h5L0J1Z2d5SW50ZXJmYWNlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvZmlsZVN0cnVjdHVyZS9oaWVyYXJjaHkvQnVnZ3lJbnRlcmZhY2UuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZGY5MGQzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2ZpbGVTdHJ1Y3R1cmUvaGllcmFyY2h5L0J1Z2d5SW50ZXJmYWNlLmphdmEKQEAgLTAsMCArMSwzOCBAQAorLyoKKyAqIENvcHlyaWdodCAyMDAwLTIwMTIgSmV0QnJhaW5zIHMuci5vLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK2ltcG9ydCBqYXZhLmxhbmcuT3ZlcnJpZGU7CisKK2ludGVyZmFjZSAgQnVnZ3lJbnRlcmZhY2UgeworICBCdWdneUludGVyZmFjZSBERUZBVUxUID0gbmV3IEJ1Z2d5SW50ZXJmYWNlKCkgeworICAgIHB1YmxpYyB2b2lkIGdldEExKCl7fTsKKyAgICBwdWJsaWMgdm9pZCBnZXRBMigpe307CisgICAgcHVibGljIHZvaWQgZ2V0QTMoKXt9OworICAgIHB1YmxpYyB2b2lkIGdldEE0KCl7fTsKKyAgICBwdWJsaWMgdm9pZCBnZXRBNSgpe307CisgICAgcHVibGljIHZvaWQgZ2V0QTYoKXt9OworICAgIHB1YmxpYyB2b2lkIGdldEE3KCl7fTsKKyAgICBwdWJsaWMgdm9pZCBnZXRBOCgpe307CisgIH0KKworICB2b2lkIGdldEExKCk7CisgIHZvaWQgZ2V0QTIoKTsKKyAgdm9pZCBnZXRBMygpOworICB2b2lkIGdldEE0KCk7CisgIHZvaWQgZ2V0QTUoKTsKKyAgdm9pZCBnZXRBNigpOworICB2b2lkIGdldEE3KCk7CisgIHZvaWQgZ2V0QTgoKTsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvZmlsZVN0cnVjdHVyZS9oaWVyYXJjaHkvT2JqZWN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvZmlsZVN0cnVjdHVyZS9oaWVyYXJjaHkvT2JqZWN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGE0ZDViOAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9maWxlU3RydWN0dXJlL2hpZXJhcmNoeS9PYmplY3QuamF2YQpAQCAtMCwwICsxLDQyIEBACisvKgorICogQ29weXJpZ2h0IDIwMDAtMjAxMiBKZXRCcmFpbnMgcy5yLm8uCisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcHVibGljIGNsYXNzIE9iamVjdCB7CisgIHByaXZhdGUgc3RhdGljIG5hdGl2ZSB2b2lkIHJlZ2lzdGVyTmF0aXZlcygpOworCisgIHN0YXRpYyB7cmVnaXN0ZXJOYXRpdmVzKCk7fQorCisgIHB1YmxpYyBmaW5hbCBuYXRpdmUgQ2xhc3M8Pz4gZ2V0Q2xhc3MoKTsKKworICBwdWJsaWMgbmF0aXZlIGludCBoYXNoQ29kZSgpOworCisgIHB1YmxpYyBib29sZWFuIGVxdWFscyhPYmplY3Qgb2JqKSB7cmV0dXJuIGZhbHNlO30KKworICBwcm90ZWN0ZWQgbmF0aXZlIE9iamVjdCBjbG9uZSgpIHRocm93cyBDbG9uZU5vdFN1cHBvcnRlZEV4Y2VwdGlvbjsKKworICBwdWJsaWMgU3RyaW5nIHRvU3RyaW5nKCkge3JldHVybiBudWxsO30KKworICBwdWJsaWMgZmluYWwgbmF0aXZlIHZvaWQgbm90aWZ5KCk7CisKKyAgcHVibGljIGZpbmFsIG5hdGl2ZSB2b2lkIG5vdGlmeUFsbCgpOworCisgIHB1YmxpYyBmaW5hbCBuYXRpdmUgdm9pZCB3YWl0KGxvbmcgdGltZW91dCkgdGhyb3dzIEludGVycnVwdGVkRXhjZXB0aW9uOworCisgIHB1YmxpYyBmaW5hbCB2b2lkIHdhaXQobG9uZyB0aW1lb3V0LCBpbnQgbmFub3MpIHRocm93cyBJbnRlcnJ1cHRlZEV4Y2VwdGlvbiB7fQorCisgIHB1YmxpYyBmaW5hbCB2b2lkIHdhaXQoKSB0aHJvd3MgSW50ZXJydXB0ZWRFeGNlcHRpb24ge30KKworICBwcm90ZWN0ZWQgdm9pZCBmaW5hbGl6ZSgpIHRocm93cyBUaHJvd2FibGUgeyB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2ZpbGVTdHJ1Y3R1cmUvaGllcmFyY2h5L1NpbXBsZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2ZpbGVTdHJ1Y3R1cmUvaGllcmFyY2h5L1NpbXBsZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJmOThhYTIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvZmlsZVN0cnVjdHVyZS9oaWVyYXJjaHkvU2ltcGxlLmphdmEKQEAgLTAsMCArMSwyMCBAQAorLyoKKyAqIENvcHlyaWdodCAyMDAwLTIwMTIgSmV0QnJhaW5zIHMuci5vLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK2NsYXNzIFNpbXBsZSBleHRlbmRzIE9iamVjdCB7CisgIHZvaWQgYWFhKCl7fQorICB2b2lkIGJiYigpezxjYXJldD59CisgIHZvaWQgZmZmKCl7fQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9maWxlU3RydWN0dXJlL2hpZXJhcmNoeS9TaW1wbGUudHJlZSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9maWxlU3RydWN0dXJlL2hpZXJhcmNoeS9TaW1wbGUudHJlZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMzRiZGUxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2ZpbGVTdHJ1Y3R1cmUvaGllcmFyY2h5L1NpbXBsZS50cmVlCkBAIC0wLDAgKzEsMTYgQEAKKy1TaW1wbGUuamF2YQorIC1TaW1wbGUKKyAgYWFhKCk6IHZvaWQKKyAgYmJiKCk6IHZvaWQKKyAgY2xvbmUoKTogT2JqZWN0CisgIGVxdWFscyhPYmplY3QpOiBib29sZWFuCisgIFtmZmYoKTogdm9pZF0KKyAgZmluYWxpemUoKTogdm9pZAorICBnZXRDbGFzcygpOiBDbGFzczw/PgorICBoYXNoQ29kZSgpOiBpbnQKKyAgbm90aWZ5KCk6IHZvaWQKKyAgbm90aWZ5QWxsKCk6IHZvaWQKKyAgdG9TdHJpbmcoKTogU3RyaW5nCisgIHdhaXQoKTogdm9pZAorICB3YWl0KGxvbmcpOiB2b2lkCisgIHdhaXQobG9uZywgaW50KTogdm9pZApkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2ZpbGVTdHJ1Y3R1cmUvc2VsZWN0aW9uL0Fub255bW91cy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2ZpbGVTdHJ1Y3R1cmUvc2VsZWN0aW9uL0Fub255bW91cy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc1MDRiZjAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvZmlsZVN0cnVjdHVyZS9zZWxlY3Rpb24vQW5vbnltb3VzLmphdmEKQEAgLTAsMCArMSw4IEBACitjbGFzcyBBbm9ueW1vdXMgeworICBpbnQgbnVtMTsKKyAgaW50IG51bTI7CisgIE9iamVjdCBvID0gbmV3IE9iamVjdCgpezxjYXJldD59OworCisgIEFub255bW91cygpIHt9CisgIHZvaWQgZm9vKCkge30KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvZmlsZVN0cnVjdHVyZS9zZWxlY3Rpb24vQW5vbnltb3VzLnRyZWUgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvZmlsZVN0cnVjdHVyZS9zZWxlY3Rpb24vQW5vbnltb3VzLnRyZWUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmY3NGY5YQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9maWxlU3RydWN0dXJlL3NlbGVjdGlvbi9Bbm9ueW1vdXMudHJlZQpAQCAtMCwwICsxLDggQEAKKy1Bbm9ueW1vdXMuamF2YQorIC1Bbm9ueW1vdXMKKyAgQW5vbnltb3VzKCkKKyAgZm9vKCk6IHZvaWQKKyAgbnVtMTogaW50CisgIG51bTI6IGludAorICAtW286IE9iamVjdCA9IG5ldyBPYmplY3QoKSB7Li4ufV0KKyAgICQxClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2ZpbGVTdHJ1Y3R1cmUvc2VsZWN0aW9uL0Fub255bW91c0luQW5vbnltb3VzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvZmlsZVN0cnVjdHVyZS9zZWxlY3Rpb24vQW5vbnltb3VzSW5Bbm9ueW1vdXMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YmZlZmY3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2ZpbGVTdHJ1Y3R1cmUvc2VsZWN0aW9uL0Fub255bW91c0luQW5vbnltb3VzLmphdmEKQEAgLTAsMCArMSwxNSBAQAorY2xhc3MgQW5vbnltb3VzSW5Bbm9ueW1vdXMgeworICBpbnQgbnVtMTsKKyAgaW50IG51bTI7CisKKyAgQW5vbnltb3VzSW5Bbm9ueW1vdXMoKSB7fQorICB2b2lkIGZvbygpIHsKKyAgICBuZXcgT2JqZWN0KCkgeworICAgICAgIHB1YmxpYyBTdHJpbmcgdG9TdHJpbmcoKSB7CisgICAgICAgICByZXR1cm4gbmV3IE9iamVjdCgpeworICAgICAgICAgICB2b2lkIG1ldGhvZCgpIHs8Y2FyZXQ+fQorICAgICAgICAgfS50b1N0cmluZygpOworICAgICAgIH0KKyAgICB9OworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2ZpbGVTdHJ1Y3R1cmUvc2VsZWN0aW9uL0Fub255bW91c0luQW5vbnltb3VzLnRyZWUgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvZmlsZVN0cnVjdHVyZS9zZWxlY3Rpb24vQW5vbnltb3VzSW5Bbm9ueW1vdXMudHJlZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lY2RlODY5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2ZpbGVTdHJ1Y3R1cmUvc2VsZWN0aW9uL0Fub255bW91c0luQW5vbnltb3VzLnRyZWUKQEAgLTAsMCArMSwxMCBAQAorLUFub255bW91c0luQW5vbnltb3VzLmphdmEKKyAtQW5vbnltb3VzSW5Bbm9ueW1vdXMKKyAgQW5vbnltb3VzSW5Bbm9ueW1vdXMoKQorICAtZm9vKCk6IHZvaWQKKyAgIC0kMQorICAgIC10b1N0cmluZygpOiBTdHJpbmcKKyAgICAgLSQxCisgICAgICBbbWV0aG9kKCk6IHZvaWRdCisgIG51bTE6IGludAorICBudW0yOiBpbnQKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvZmlsZVN0cnVjdHVyZS9zZWxlY3Rpb24vQ29uc3RydWN0b3IuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9maWxlU3RydWN0dXJlL3NlbGVjdGlvbi9Db25zdHJ1Y3Rvci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU1YTVmMDIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvZmlsZVN0cnVjdHVyZS9zZWxlY3Rpb24vQ29uc3RydWN0b3IuamF2YQpAQCAtMCwwICsxLDcgQEAKK2NsYXNzIENvbnN0cnVjdG9yIHsKKyAgaW50IG51bTE7CisgIGludCBudW0yOworCisgIENvbnN0cnVjdG9yKCkgezxjYXJldD59CisgIHZvaWQgZm9vKCkge30KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvZmlsZVN0cnVjdHVyZS9zZWxlY3Rpb24vQ29uc3RydWN0b3IudHJlZSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9maWxlU3RydWN0dXJlL3NlbGVjdGlvbi9Db25zdHJ1Y3Rvci50cmVlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmViNTdjOTAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvZmlsZVN0cnVjdHVyZS9zZWxlY3Rpb24vQ29uc3RydWN0b3IudHJlZQpAQCAtMCwwICsxLDYgQEAKKy1Db25zdHJ1Y3Rvci5qYXZhCisgLUNvbnN0cnVjdG9yCisgIFtDb25zdHJ1Y3RvcigpXQorICBmb28oKTogdm9pZAorICBudW0xOiBpbnQKKyAgbnVtMjogaW50ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2ZpbGVTdHJ1Y3R1cmUvc2VsZWN0aW9uL0ZpZWxkLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvZmlsZVN0cnVjdHVyZS9zZWxlY3Rpb24vRmllbGQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNWU1ZmVhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2ZpbGVTdHJ1Y3R1cmUvc2VsZWN0aW9uL0ZpZWxkLmphdmEKQEAgLTAsMCArMSw3IEBACitjbGFzcyBGaWVsZCB7CisgIGludCBudW0xOworICBpbnQgPGNhcmV0Pm51bTI7CisKKyAgRmllbGQoKSB7fQorICB2b2lkIGZvbygpIHt9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2ZpbGVTdHJ1Y3R1cmUvc2VsZWN0aW9uL0ZpZWxkLnRyZWUgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvZmlsZVN0cnVjdHVyZS9zZWxlY3Rpb24vRmllbGQudHJlZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yODkxN2M3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2ZpbGVTdHJ1Y3R1cmUvc2VsZWN0aW9uL0ZpZWxkLnRyZWUKQEAgLTAsMCArMSw2IEBACistRmllbGQuamF2YQorIC1GaWVsZAorICBGaWVsZCgpCisgIGZvbygpOiB2b2lkCisgIG51bTE6IGludAorICBbbnVtMjogaW50XQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2ZpbGVTdHJ1Y3R1cmUvc2VsZWN0aW9uL0luc2lkZUNsYXNzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvZmlsZVN0cnVjdHVyZS9zZWxlY3Rpb24vSW5zaWRlQ2xhc3MuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZmMwNmMwZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9maWxlU3RydWN0dXJlL3NlbGVjdGlvbi9JbnNpZGVDbGFzcy5qYXZhCkBAIC0wLDAgKzEsNyBAQAorY2xhc3MgSW5zaWRlQ2xhc3MgeworICBpbnQgbnVtMTsKKyAgaW50IG51bTI7CisgIDxjYXJldD4KKyAgSW5zaWRlQ2xhc3MoKSB7fQorICB2b2lkIGZvbygpIHt9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2ZpbGVTdHJ1Y3R1cmUvc2VsZWN0aW9uL0luc2lkZUNsYXNzLnRyZWUgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvZmlsZVN0cnVjdHVyZS9zZWxlY3Rpb24vSW5zaWRlQ2xhc3MudHJlZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NmNkYzM0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2ZpbGVTdHJ1Y3R1cmUvc2VsZWN0aW9uL0luc2lkZUNsYXNzLnRyZWUKQEAgLTAsMCArMSw2IEBACistSW5zaWRlQ2xhc3MuamF2YQorIC1bSW5zaWRlQ2xhc3NdCisgIEluc2lkZUNsYXNzKCkKKyAgZm9vKCk6IHZvaWQKKyAgbnVtMTogaW50CisgIG51bTI6IGludApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9maWxlU3RydWN0dXJlL3NlbGVjdGlvbi9NZXRob2QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9maWxlU3RydWN0dXJlL3NlbGVjdGlvbi9NZXRob2QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMWU0N2UxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2ZpbGVTdHJ1Y3R1cmUvc2VsZWN0aW9uL01ldGhvZC5qYXZhCkBAIC0wLDAgKzEsNyBAQAorY2xhc3MgTWV0aG9kIHsKKyAgaW50IG51bTE7CisgIGludCBudW0yOworCisgIE1ldGhvZCgpIHt9CisgIHZvaWQgZm9vKCkgezxjYXJldD59Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2ZpbGVTdHJ1Y3R1cmUvc2VsZWN0aW9uL01ldGhvZC50cmVlIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2ZpbGVTdHJ1Y3R1cmUvc2VsZWN0aW9uL01ldGhvZC50cmVlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIxNjY1Y2MKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvZmlsZVN0cnVjdHVyZS9zZWxlY3Rpb24vTWV0aG9kLnRyZWUKQEAgLTAsMCArMSw2IEBACistTWV0aG9kLmphdmEKKyAtTWV0aG9kCisgIE1ldGhvZCgpCisgIFtmb28oKTogdm9pZF0KKyAgbnVtMTogaW50CisgIG51bTI6IGludApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9maW5kL2ZpbmRJbkNsYXNzSGllcmFyY2h5L3NyYy9BLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvZmluZC9maW5kSW5DbGFzc0hpZXJhcmNoeS9zcmMvQS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI4NWY1NTEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvZmluZC9maW5kSW5DbGFzc0hpZXJhcmNoeS9zcmMvQS5qYXZhCkBAIC0wLDAgKzEsMTggQEAKK3B1YmxpYyBjbGFzcyBBIHsKKyAgdm9pZCBmb28oT2JqZWN0IG8pIHsKKyAgICBpZiAobyBpbnN0YW5jZW9mIFN0cmluZyl7fQorICB9Cit9CisKK2NsYXNzIEFJbXBsIGV4dGVuZHMgQSB7CisgIHZvaWQgZm9vKE9iamVjdCBvKSB7CisgICAgaWYgKG8gaW5zdGFuY2VvZiBTdHJpbmcpe30KKyAgfQorfQorCitjbGFzcyBCIHsKKyAgdm9pZCBiYXIoT2JqZWN0IG8pIHsKKyAgICBpZiAobyBpbnN0YW5jZW9mIFN0cmluZyl7fQorICB9Cit9CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9maW5kL2ZpbmRJblBhdGgvc3JjL3MuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9maW5kL2ZpbmRJblBhdGgvc3JjL3MuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMjMwNjAxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2ZpbmQvZmluZEluUGF0aC9zcmMvcy5qYXZhCkBAIC0wLDAgKzEsMyBAQAorY2xhc3MgcyB7CisgU3RyaW5nIHMgPSAieHgueXkiOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9maW5kL2ZpbmRJblBhdGgvc3JjL3gvZGQucHJvcGVydGllcyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9maW5kL2ZpbmRJblBhdGgvc3JjL3gvZGQucHJvcGVydGllcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMmU5YjgyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2ZpbmQvZmluZEluUGF0aC9zcmMveC9kZC5wcm9wZXJ0aWVzCkBAIC0wLDAgKzEsMyBAQAoreHgueXk9enp6egorYWFhLmJiYj16enoKK2NjY2M9YwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9maW5kL2ZpbmRNYW5hZ2VyL3NyYy90ZXN0L0ZpbmRUZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvZmluZC9maW5kTWFuYWdlci9zcmMvdGVzdC9GaW5kVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZjZDU5ZmYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvZmluZC9maW5kTWFuYWdlci9zcmMvdGVzdC9GaW5kVGVzdC5qYXZhCkBAIC0wLDAgKzEsMTEgQEAKK3BhY2thZ2UgdGVzdDsKK3B1YmxpYyBjbGFzcyBGaW5kVGVzdCB7CisgICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgeworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIiBkb25lIik7CisvL2RvbmUKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJkb25lIik7CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiIGRvbmUiKTsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCIgZG9uZTIiKTsKKy8vZG9uZSEKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2ZpbmQvZmluZE1hbmFnZXIvc3JjMS90ZXN0cy9GaW5kVGVzdHMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9maW5kL2ZpbmRNYW5hZ2VyL3NyYzEvdGVzdHMvRmluZFRlc3RzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjU3YmVjZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9maW5kL2ZpbmRNYW5hZ2VyL3NyYzEvdGVzdHMvRmluZFRlc3RzLmphdmEKQEAgLTAsMCArMSwxMSBAQAorcGFja2FnZSB0ZXN0czsKK3B1YmxpYyBjbGFzcyBGaW5kVGVzdHMgeworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCIgZG9uZSIpOworLy9kb25lCisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiZG9uZSIpOworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIiBkb25lIik7CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiIGRvbmUyIik7CisvL2RvbmUhCisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9maW5kL2xpYlVuZGVyUHJvamVjdC9saWIvQi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2ZpbmQvbGliVW5kZXJQcm9qZWN0L2xpYi9CLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjM0YjMxOAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9maW5kL2xpYlVuZGVyUHJvamVjdC9saWIvQi5qYXZhCkBAIC0wLDAgKzEgQEAKKy8vIFRhcmdldFdvcmQKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvZmluZC9saWJVbmRlclByb2plY3Qvc3JjL0EuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9maW5kL2xpYlVuZGVyUHJvamVjdC9zcmMvQS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYzNGIzMTgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvZmluZC9saWJVbmRlclByb2plY3Qvc3JjL0EuamF2YQpAQCAtMCwwICsxIEBACisvLyBUYXJnZXRXb3JkClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2lkZS9maWxlVGVtcGxhdGVzLzEub3V0LnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pZGUvZmlsZVRlbXBsYXRlcy8xLm91dC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2NiZTE0MwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pZGUvZmlsZVRlbXBsYXRlcy8xLm91dC50eHQKQEAgLTAsMCArMSw5IEBACisgLyoKKyAqICRBdXRob3IkCisgKiAkSWQkCisgKiBAYXV0aG9yIE1pc2hhIFlha292bGV2CisgKiBAdmVyc2lvbiAkUmV2aXNpb24kCisqLworcGFja2FnZSBjb20uaWRlYTsKK3B1YmxpYyBjbGFzcyBNeUNsYXNzIHsKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pZGUvZmlsZVRlbXBsYXRlcy8xLnByb3AudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2lkZS9maWxlVGVtcGxhdGVzLzEucHJvcC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDFhYzliNgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pZGUvZmlsZVRlbXBsYXRlcy8xLnByb3AudHh0CkBAIC0wLDAgKzEsMyBAQAorQXV0aG9yPU1pc2hhIFlha292bGV2CitQQUNLQUdFX05BTUU9Y29tLmlkZWEKK05hbWU9TXlDbGFzcwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2lkZS9maWxlVGVtcGxhdGVzLzEudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2lkZS9maWxlVGVtcGxhdGVzLzEudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMzYTg2YjYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaWRlL2ZpbGVUZW1wbGF0ZXMvMS50eHQKQEAgLTAsMCArMSw5IEBACisgLyoKKyAqIFwkQXV0aG9yJAorICogJElkJAorICogQGF1dGhvciAkQXV0aG9yCisgKiBAdmVyc2lvbiAkUmV2aXNpb24kCisqLworcGFja2FnZSAke1BBQ0tBR0VfTkFNRX07CitwdWJsaWMgY2xhc3MgJHtOYW1lfSB7Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaWRlL2ZpbGVUZW1wbGF0ZXMvMi5vdXQudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2lkZS9maWxlVGVtcGxhdGVzLzIub3V0LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45YmI2ZTZiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2lkZS9maWxlVGVtcGxhdGVzLzIub3V0LnR4dApAQCAtMCwwICsxLDUgQEAKKy8vIE15Q2xhc3MuamF2YQorLy8gJEF1dGhvciQKKy8vIENyZWF0ZWQgb24gMzEtRGVjLTIwMDIgYnkgbXlha292bGV2CitwYWNrYWdlIGNvbS5pZGVhOworcHVibGljIGNsYXNzIE15Q2xhc3MgeyB9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaWRlL2ZpbGVUZW1wbGF0ZXMvMi5wcm9wLnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pZGUvZmlsZVRlbXBsYXRlcy8yLnByb3AudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM1YjA5NGEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaWRlL2ZpbGVUZW1wbGF0ZXMvMi5wcm9wLnR4dApAQCAtMCwwICsxLDQgQEAKK05BTUU9TXlDbGFzcworREFURT0zMS1EZWMtMjAwMgorVVNFUj1teWFrb3ZsZXYKK1BBQ0tBR0VfTkFNRT1jb20uaWRlYQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2lkZS9maWxlVGVtcGxhdGVzLzIudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2lkZS9maWxlVGVtcGxhdGVzLzIudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI4MTI4ODUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaWRlL2ZpbGVUZW1wbGF0ZXMvMi50eHQKQEAgLTAsMCArMSw1IEBACisvLyAke05BTUV9LmphdmEKKy8vICRBdXRob3IkCisvLyBDcmVhdGVkIG9uICREQVRFIGJ5ICRVU0VSCitwYWNrYWdlICRQQUNLQUdFX05BTUU7CitwdWJsaWMgY2xhc3MgJE5BTUUgeyB9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaWRlL2ZpbGVUZW1wbGF0ZXMvMy5vdXQudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2lkZS9maWxlVGVtcGxhdGVzLzMub3V0LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42M2M1MzY5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2lkZS9maWxlVGVtcGxhdGVzLzMub3V0LnR4dApAQCAtMCwwICsxLDggQEAKK3BhY2thZ2UgY29tLmlkZWE7CisKKy8qCisgKiAkTG9nJAorICogQHZlcnNpb24gJElkJAorICovCitwdWJsaWMgY2xhc3MgTXlDbGFzcyB7Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaWRlL2ZpbGVUZW1wbGF0ZXMvMy5wcm9wLnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pZGUvZmlsZVRlbXBsYXRlcy8zLnByb3AudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJkOTUyNDEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaWRlL2ZpbGVUZW1wbGF0ZXMvMy5wcm9wLnR4dApAQCAtMCwwICsxLDIgQEAKK05BTUU9TXlDbGFzcworUEFDS0FHRV9OQU1FPWNvbS5pZGVhCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaWRlL2ZpbGVUZW1wbGF0ZXMvMy50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaWRlL2ZpbGVUZW1wbGF0ZXMvMy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzMzNjBkNwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pZGUvZmlsZVRlbXBsYXRlcy8zLnR4dApAQCAtMCwwICsxLDggQEAKK3BhY2thZ2UgJHtQQUNLQUdFX05BTUV9OworCisvKgorICogJExvZyQKKyAqIEB2ZXJzaW9uICRJZCQKKyAqLworcHVibGljIGNsYXNzICR7TkFNRX0geworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2lkZS9maWxlVGVtcGxhdGVzLzQub3V0LnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pZGUvZmlsZVRlbXBsYXRlcy80Lm91dC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGE3MjRhNAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pZGUvZmlsZVRlbXBsYXRlcy80Lm91dC50eHQKQEAgLTAsMCArMSwyIEBACis8YzpvdXQgdmFsdWU9IiR7bW9kZWwubmFtZX0iLz4KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2lkZS9maWxlVGVtcGxhdGVzLzQucHJvcC50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaWRlL2ZpbGVUZW1wbGF0ZXMvNC5wcm9wLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMzk1OTdmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2lkZS9maWxlVGVtcGxhdGVzLzQucHJvcC50eHQKQEAgLTAsMCArMSwyIEBACisKKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2lkZS9maWxlVGVtcGxhdGVzLzQudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2lkZS9maWxlVGVtcGxhdGVzLzQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBhNzI0YTQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaWRlL2ZpbGVUZW1wbGF0ZXMvNC50eHQKQEAgLTAsMCArMSwyIEBACis8YzpvdXQgdmFsdWU9IiR7bW9kZWwubmFtZX0iLz4KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2lkZS9maWxlVGVtcGxhdGVzLzUub3V0LnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pZGUvZmlsZVRlbXBsYXRlcy81Lm91dC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjU0YTRhMAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pZGUvZmlsZVRlbXBsYXRlcy81Lm91dC50eHQKQEAgLTAsMCArMSwxMyBAQAorIC8qCisgKiB2ZW4kCisgKiAkSWQkCisgKiBAYXV0aG9yIHZlbgorICogQHZlcnNpb24gJFJldmlzaW9uJAorICogVGhpcyBpcyBhIGZpbGUgaGVhZGVyCisqLworcGFja2FnZSBjb20uaWRlYTsKK3B1YmxpYyBjbGFzcyBNeUNsYXNzIHsKKyAgLy8gV2hhdCBhIHdvbmRlcmZ1bCB3b3JsZCEKKyAgLy8gdmVuCisgIC8vICR7bXkubmFtZX0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pZGUvZmlsZVRlbXBsYXRlcy81LnByb3AudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2lkZS9maWxlVGVtcGxhdGVzLzUucHJvcC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjMyNTI1MAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pZGUvZmlsZVRlbXBsYXRlcy81LnByb3AudHh0CkBAIC0wLDAgKzEsMyBAQAorQXV0aG9yPXZlbgorUEFDS0FHRV9OQU1FPWNvbS5pZGVhCitOYW1lPU15Q2xhc3MKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pZGUvZmlsZVRlbXBsYXRlcy81LnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pZGUvZmlsZVRlbXBsYXRlcy81LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MGY4MzYyMQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pZGUvZmlsZVRlbXBsYXRlcy81LnR4dApAQCAtMCwwICsxLDcgQEAKKyNwYXJzZSgiaW5jbHVkZTEuaW5jLnR4dCIpCitwYWNrYWdlICR7UEFDS0FHRV9OQU1FfTsKK3B1YmxpYyBjbGFzcyAke05hbWV9IHsKKyAgLy8gV2hhdCBhIHdvbmRlcmZ1bCB3b3JsZCEKKyAgLy8gJEF1dGhvcgorICAvLyAke215Lm5hbWV9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaWRlL2ZpbGVUZW1wbGF0ZXMvaW5jbHVkZTEuaW5jLnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pZGUvZmlsZVRlbXBsYXRlcy9pbmNsdWRlMS5pbmMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJiZThhYTgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaWRlL2ZpbGVUZW1wbGF0ZXMvaW5jbHVkZTEuaW5jLnR4dApAQCAtMCwwICsxLDcgQEAKKyAvKgorICogJEF1dGhvciQKKyAqICRJZCQKKyAqIEBhdXRob3IgJEF1dGhvcgorICogQHZlcnNpb24gJFJldmlzaW9uJAorICogVGhpcyBpcyBhIGZpbGUgaGVhZGVyCisqLwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2lkZS9oaWVyYXJjaHkvY2FsbC9JZGVhRGV2NDEwMDUvQS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2lkZS9oaWVyYXJjaHkvY2FsbC9JZGVhRGV2NDEwMDUvQS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEwMDc2OWYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaWRlL2hpZXJhcmNoeS9jYWxsL0lkZWFEZXY0MTAwNS9BLmphdmEKQEAgLTAsMCArMSw2IEBACitjbGFzcyBBIHsKKyAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgeworICAgIEQgZCA9IG5ldyBEKCk7CisgICAgZC54eXp6eSgpOworICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaWRlL2hpZXJhcmNoeS9jYWxsL0lkZWFEZXY0MTAwNS9CLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaWRlL2hpZXJhcmNoeS9jYWxsL0lkZWFEZXY0MTAwNS9CLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODA1ZTk5YgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pZGUvaGllcmFyY2h5L2NhbGwvSWRlYURldjQxMDA1L0IuamF2YQpAQCAtMCwwICsxLDQgQEAKK2NsYXNzIEIgeworICBwdWJsaWMgdm9pZCB4eXp6eSgpIHsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2lkZS9oaWVyYXJjaHkvY2FsbC9JZGVhRGV2NDEwMDUvRC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2lkZS9oaWVyYXJjaHkvY2FsbC9JZGVhRGV2NDEwMDUvRC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM4MTEzNGYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaWRlL2hpZXJhcmNoeS9jYWxsL0lkZWFEZXY0MTAwNS9ELmphdmEKQEAgLTAsMCArMSwyIEBACitjbGFzcyBEIGV4dGVuZHMgQiB7Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaWRlL2hpZXJhcmNoeS9jYWxsL0lkZWFEZXY0MTAwNS9JZGVhRGV2NDEwMDVfdmVyaWZpY2F0aW9uLnhtbCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pZGUvaGllcmFyY2h5L2NhbGwvSWRlYURldjQxMDA1L0lkZWFEZXY0MTAwNV92ZXJpZmljYXRpb24ueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk2ZTI5NTQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaWRlL2hpZXJhcmNoeS9jYWxsL0lkZWFEZXY0MTAwNS9JZGVhRGV2NDEwMDVfdmVyaWZpY2F0aW9uLnhtbApAQCAtMCwwICsxLDQgQEAKKzxub2RlIHRleHQ9IkIueHl6enkoKSAgKCkiIGJhc2U9InRydWUiPgorICA8bm9kZSB0ZXh0PSJBLm1haW4oU3RyaW5nW10pICAoKSI+CisgIDwvbm9kZT4KKzwvbm9kZT4KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pZGUvaGllcmFyY2h5L2NhbGwvSWRlYURldjQxMDA1X0luaGVyaXRhbmNlL0EuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pZGUvaGllcmFyY2h5L2NhbGwvSWRlYURldjQxMDA1X0luaGVyaXRhbmNlL0EuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMjU1N2E3OQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pZGUvaGllcmFyY2h5L2NhbGwvSWRlYURldjQxMDA1X0luaGVyaXRhbmNlL0EuamF2YQpAQCAtMCwwICsxLDkgQEAKK2NsYXNzIEEgeworICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CisgICAgRCBkID0gbmV3IEQoKTsKKyAgICBkLnh5enp5KCk7CisKKyAgICBDIGMgPSBuZXcgQygpOworICAgIGMueHl6enkoKTsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2lkZS9oaWVyYXJjaHkvY2FsbC9JZGVhRGV2NDEwMDVfSW5oZXJpdGFuY2UvQi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2lkZS9oaWVyYXJjaHkvY2FsbC9JZGVhRGV2NDEwMDVfSW5oZXJpdGFuY2UvQi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgwNWU5OWIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaWRlL2hpZXJhcmNoeS9jYWxsL0lkZWFEZXY0MTAwNV9Jbmhlcml0YW5jZS9CLmphdmEKQEAgLTAsMCArMSw0IEBACitjbGFzcyBCIHsKKyAgcHVibGljIHZvaWQgeHl6enkoKSB7CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pZGUvaGllcmFyY2h5L2NhbGwvSWRlYURldjQxMDA1X0luaGVyaXRhbmNlL0MuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pZGUvaGllcmFyY2h5L2NhbGwvSWRlYURldjQxMDA1X0luaGVyaXRhbmNlL0MuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZTRjZmMxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2lkZS9oaWVyYXJjaHkvY2FsbC9JZGVhRGV2NDEwMDVfSW5oZXJpdGFuY2UvQy5qYXZhCkBAIC0wLDAgKzEsMiBAQAorY2xhc3MgQyBleHRlbmRzIEIgeworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2lkZS9oaWVyYXJjaHkvY2FsbC9JZGVhRGV2NDEwMDVfSW5oZXJpdGFuY2UvRC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2lkZS9oaWVyYXJjaHkvY2FsbC9JZGVhRGV2NDEwMDVfSW5oZXJpdGFuY2UvRC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVmMTA0MTEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaWRlL2hpZXJhcmNoeS9jYWxsL0lkZWFEZXY0MTAwNV9Jbmhlcml0YW5jZS9ELmphdmEKQEAgLTAsMCArMSw0IEBACitjbGFzcyBEIGV4dGVuZHMgQiB7CisgIHB1YmxpYyB2b2lkIHh5enp5KCkgeworICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaWRlL2hpZXJhcmNoeS9jYWxsL0lkZWFEZXY0MTAwNV9Jbmhlcml0YW5jZS9JZGVhRGV2NDEwMDVfSW5oZXJpdGFuY2VfdmVyaWZpY2F0aW9uLnhtbCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pZGUvaGllcmFyY2h5L2NhbGwvSWRlYURldjQxMDA1X0luaGVyaXRhbmNlL0lkZWFEZXY0MTAwNV9Jbmhlcml0YW5jZV92ZXJpZmljYXRpb24ueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ2N2Y5NTQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaWRlL2hpZXJhcmNoeS9jYWxsL0lkZWFEZXY0MTAwNV9Jbmhlcml0YW5jZS9JZGVhRGV2NDEwMDVfSW5oZXJpdGFuY2VfdmVyaWZpY2F0aW9uLnhtbApAQCAtMCwwICsxLDQgQEAKKzxub2RlIHRleHQ9IkQueHl6enkoKSAgKCkiIGJhc2U9InRydWUiPgorICA8bm9kZSB0ZXh0PSJBLm1haW4oU3RyaW5nW10pKDIgdXNhZ2VzKSAgKCkiPgorICA8L25vZGU+Cis8L25vZGU+CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaWRlL2hpZXJhcmNoeS9jYWxsL0lkZWFEZXY0MTAwNV9TaWJsaW5nL0EuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pZGUvaGllcmFyY2h5L2NhbGwvSWRlYURldjQxMDA1X1NpYmxpbmcvQS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQyNTU3YTc5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2lkZS9oaWVyYXJjaHkvY2FsbC9JZGVhRGV2NDEwMDVfU2libGluZy9BLmphdmEKQEAgLTAsMCArMSw5IEBACitjbGFzcyBBIHsKKyAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgeworICAgIEQgZCA9IG5ldyBEKCk7CisgICAgZC54eXp6eSgpOworCisgICAgQyBjID0gbmV3IEMoKTsKKyAgICBjLnh5enp5KCk7CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pZGUvaGllcmFyY2h5L2NhbGwvSWRlYURldjQxMDA1X1NpYmxpbmcvQi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2lkZS9oaWVyYXJjaHkvY2FsbC9JZGVhRGV2NDEwMDVfU2libGluZy9CLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODA1ZTk5YgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pZGUvaGllcmFyY2h5L2NhbGwvSWRlYURldjQxMDA1X1NpYmxpbmcvQi5qYXZhCkBAIC0wLDAgKzEsNCBAQAorY2xhc3MgQiB7CisgIHB1YmxpYyB2b2lkIHh5enp5KCkgeworICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaWRlL2hpZXJhcmNoeS9jYWxsL0lkZWFEZXY0MTAwNV9TaWJsaW5nL0MuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pZGUvaGllcmFyY2h5L2NhbGwvSWRlYURldjQxMDA1X1NpYmxpbmcvQy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFhMTZkZDEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaWRlL2hpZXJhcmNoeS9jYWxsL0lkZWFEZXY0MTAwNV9TaWJsaW5nL0MuamF2YQpAQCAtMCwwICsxLDQgQEAKK2NsYXNzIEMgZXh0ZW5kcyBCIHsKKyAgcHVibGljIHZvaWQgeHl6enkoKSB7CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pZGUvaGllcmFyY2h5L2NhbGwvSWRlYURldjQxMDA1X1NpYmxpbmcvRC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2lkZS9oaWVyYXJjaHkvY2FsbC9JZGVhRGV2NDEwMDVfU2libGluZy9ELmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWYxMDQxMQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pZGUvaGllcmFyY2h5L2NhbGwvSWRlYURldjQxMDA1X1NpYmxpbmcvRC5qYXZhCkBAIC0wLDAgKzEsNCBAQAorY2xhc3MgRCBleHRlbmRzIEIgeworICBwdWJsaWMgdm9pZCB4eXp6eSgpIHsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2lkZS9oaWVyYXJjaHkvY2FsbC9JZGVhRGV2NDEwMDVfU2libGluZy9JZGVhRGV2NDEwMDVfU2libGluZ192ZXJpZmljYXRpb24ueG1sIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2lkZS9oaWVyYXJjaHkvY2FsbC9JZGVhRGV2NDEwMDVfU2libGluZy9JZGVhRGV2NDEwMDVfU2libGluZ192ZXJpZmljYXRpb24ueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAyNmNmMDAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaWRlL2hpZXJhcmNoeS9jYWxsL0lkZWFEZXY0MTAwNV9TaWJsaW5nL0lkZWFEZXY0MTAwNV9TaWJsaW5nX3ZlcmlmaWNhdGlvbi54bWwKQEAgLTAsMCArMSw0IEBACis8bm9kZSB0ZXh0PSJELnh5enp5KCkgICgpIiBiYXNlPSJ0cnVlIj4KKyAgPG5vZGUgdGV4dD0iQS5tYWluKFN0cmluZ1tdKSAgKCkiPgorICA8L25vZGU+Cis8L25vZGU+CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaWRlL2hpZXJhcmNoeS9jYWxsL0lkZWFEZXY0MTAwNV9TaWJsaW5nVW5kZXJJbmhlcml0YW5jZS9BLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaWRlL2hpZXJhcmNoeS9jYWxsL0lkZWFEZXY0MTAwNV9TaWJsaW5nVW5kZXJJbmhlcml0YW5jZS9BLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTc2OGI1ZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pZGUvaGllcmFyY2h5L2NhbGwvSWRlYURldjQxMDA1X1NpYmxpbmdVbmRlckluaGVyaXRhbmNlL0EuamF2YQpAQCAtMCwwICsxLDkgQEAKK2NsYXNzIEEgeworICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CisgICAgRCBkID0gbmV3IEQoKTsKKyAgICBkLnh5enp5KCk7CisKKyAgICBDQ2hpbGQgYyA9IG5ldyBDQ2hpbGQoKTsKKyAgICBjLnh5enp5KCk7CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pZGUvaGllcmFyY2h5L2NhbGwvSWRlYURldjQxMDA1X1NpYmxpbmdVbmRlckluaGVyaXRhbmNlL0IuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pZGUvaGllcmFyY2h5L2NhbGwvSWRlYURldjQxMDA1X1NpYmxpbmdVbmRlckluaGVyaXRhbmNlL0IuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MDVlOTliCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2lkZS9oaWVyYXJjaHkvY2FsbC9JZGVhRGV2NDEwMDVfU2libGluZ1VuZGVySW5oZXJpdGFuY2UvQi5qYXZhCkBAIC0wLDAgKzEsNCBAQAorY2xhc3MgQiB7CisgIHB1YmxpYyB2b2lkIHh5enp5KCkgeworICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaWRlL2hpZXJhcmNoeS9jYWxsL0lkZWFEZXY0MTAwNV9TaWJsaW5nVW5kZXJJbmhlcml0YW5jZS9DLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaWRlL2hpZXJhcmNoeS9jYWxsL0lkZWFEZXY0MTAwNV9TaWJsaW5nVW5kZXJJbmhlcml0YW5jZS9DLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWExNmRkMQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pZGUvaGllcmFyY2h5L2NhbGwvSWRlYURldjQxMDA1X1NpYmxpbmdVbmRlckluaGVyaXRhbmNlL0MuamF2YQpAQCAtMCwwICsxLDQgQEAKK2NsYXNzIEMgZXh0ZW5kcyBCIHsKKyAgcHVibGljIHZvaWQgeHl6enkoKSB7CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pZGUvaGllcmFyY2h5L2NhbGwvSWRlYURldjQxMDA1X1NpYmxpbmdVbmRlckluaGVyaXRhbmNlL0NDaGlsZC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2lkZS9oaWVyYXJjaHkvY2FsbC9JZGVhRGV2NDEwMDVfU2libGluZ1VuZGVySW5oZXJpdGFuY2UvQ0NoaWxkLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDFlZjdlOAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pZGUvaGllcmFyY2h5L2NhbGwvSWRlYURldjQxMDA1X1NpYmxpbmdVbmRlckluaGVyaXRhbmNlL0NDaGlsZC5qYXZhCkBAIC0wLDAgKzEsMiBAQAorY2xhc3MgQ0NoaWxkIGV4dGVuZHMgQyB7Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaWRlL2hpZXJhcmNoeS9jYWxsL0lkZWFEZXY0MTAwNV9TaWJsaW5nVW5kZXJJbmhlcml0YW5jZS9ELmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaWRlL2hpZXJhcmNoeS9jYWxsL0lkZWFEZXY0MTAwNV9TaWJsaW5nVW5kZXJJbmhlcml0YW5jZS9ELmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWYxMDQxMQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pZGUvaGllcmFyY2h5L2NhbGwvSWRlYURldjQxMDA1X1NpYmxpbmdVbmRlckluaGVyaXRhbmNlL0QuamF2YQpAQCAtMCwwICsxLDQgQEAKK2NsYXNzIEQgZXh0ZW5kcyBCIHsKKyAgcHVibGljIHZvaWQgeHl6enkoKSB7CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pZGUvaGllcmFyY2h5L2NhbGwvSWRlYURldjQxMDA1X1NpYmxpbmdVbmRlckluaGVyaXRhbmNlL0lkZWFEZXY0MTAwNV9TaWJsaW5nVW5kZXJJbmhlcml0YW5jZV92ZXJpZmljYXRpb24ueG1sIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2lkZS9oaWVyYXJjaHkvY2FsbC9JZGVhRGV2NDEwMDVfU2libGluZ1VuZGVySW5oZXJpdGFuY2UvSWRlYURldjQxMDA1X1NpYmxpbmdVbmRlckluaGVyaXRhbmNlX3ZlcmlmaWNhdGlvbi54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDI2Y2YwMAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pZGUvaGllcmFyY2h5L2NhbGwvSWRlYURldjQxMDA1X1NpYmxpbmdVbmRlckluaGVyaXRhbmNlL0lkZWFEZXY0MTAwNV9TaWJsaW5nVW5kZXJJbmhlcml0YW5jZV92ZXJpZmljYXRpb24ueG1sCkBAIC0wLDAgKzEsNCBAQAorPG5vZGUgdGV4dD0iRC54eXp6eSgpICAoKSIgYmFzZT0idHJ1ZSI+CisgIDxub2RlIHRleHQ9IkEubWFpbihTdHJpbmdbXSkgICgpIj4KKyAgPC9ub2RlPgorPC9ub2RlPgpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2lkZS9oaWVyYXJjaHkvY2FsbC9JZGVhRGV2NDEyMzIvQS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2lkZS9oaWVyYXJjaHkvY2FsbC9JZGVhRGV2NDEyMzIvQS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU3MzQwMjAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaWRlL2hpZXJhcmNoeS9jYWxsL0lkZWFEZXY0MTIzMi9BLmphdmEKQEAgLTAsMCArMSw0IEBACitjbGFzcyBBIHsKKyAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oKSB7CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pZGUvaGllcmFyY2h5L2NhbGwvSWRlYURldjQxMjMyL0IuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pZGUvaGllcmFyY2h5L2NhbGwvSWRlYURldjQxMjMyL0IuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZTQxMmQyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2lkZS9oaWVyYXJjaHkvY2FsbC9JZGVhRGV2NDEyMzIvQi5qYXZhCkBAIC0wLDAgKzEsNSBAQAorY2xhc3MgQiB7CisgIHB1YmxpYyB2b2lkIHh5enp5KCkgeworICAgIEEubWFpbigpOworICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaWRlL2hpZXJhcmNoeS9jYWxsL0lkZWFEZXY0MTIzMi9JZGVhRGV2NDEyMzJfdmVyaWZpY2F0aW9uLnhtbCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pZGUvaGllcmFyY2h5L2NhbGwvSWRlYURldjQxMjMyL0lkZWFEZXY0MTIzMl92ZXJpZmljYXRpb24ueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMzMmY2YjgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaWRlL2hpZXJhcmNoeS9jYWxsL0lkZWFEZXY0MTIzMi9JZGVhRGV2NDEyMzJfdmVyaWZpY2F0aW9uLnhtbApAQCAtMCwwICsxLDQgQEAKKzxub2RlIHRleHQ9IkEubWFpbigpICAoKSIgYmFzZT0idHJ1ZSI+CisgIDxub2RlIHRleHQ9IkIueHl6enkoKSAgKCkiPgorICA8L25vZGU+Cis8L25vZGU+CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaWRlL3BsdWdpbnMvcGx1Z2luRGVzY3JpcHRvci9hc3AuamFyIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2lkZS9wbHVnaW5zL3BsdWdpbkRlc2NyaXB0b3IvYXNwLmphcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42OWExYzZkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2lkZS9wbHVnaW5zL3BsdWdpbkRlc2NyaXB0b3IvYXNwLmphcgpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaWRlL3BsdWdpbnMvcGx1Z2luRGVzY3JpcHRvci9yZXNvdXJjZXNfZW4uamFyIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2lkZS9wbHVnaW5zL3BsdWdpbkRlc2NyaXB0b3IvcmVzb3VyY2VzX2VuLmphcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMTQyNjRmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2lkZS9wbHVnaW5zL3BsdWdpbkRlc2NyaXB0b3IvcmVzb3VyY2VzX2VuLmphcgpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaWRlL3BsdWdpbnMvcmVvcmRlckphcnMvYW5ub3RhdGlvbnMuamFyIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2lkZS9wbHVnaW5zL3Jlb3JkZXJKYXJzL2Fubm90YXRpb25zLmphcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZjBiOTdiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2lkZS9wbHVnaW5zL3Jlb3JkZXJKYXJzL2Fubm90YXRpb25zLmphcgpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaWRlL3BsdWdpbnMvcmVvcmRlckphcnMvb3JkZXIudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2lkZS9wbHVnaW5zL3Jlb3JkZXJKYXJzL29yZGVyLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMTczZTJlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2lkZS9wbHVnaW5zL3Jlb3JkZXJKYXJzL29yZGVyLnR4dApAQCAtMCwwICsxLDIgQEAKK29yZy9qZXRicmFpbnMvYW5ub3RhdGlvbnMvTnVsbGFibGUuY2xhc3M6L2Fubm90YXRpb25zLmphcgorb3JnL2pldGJyYWlucy9hbm5vdGF0aW9ucy9Ob3ROdWxsLmNsYXNzOi9hbm5vdGF0aW9ucy5qYXIKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pZGUvcGx1Z2lucy9yZW9yZGVySmFycy96a20uamFyIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2lkZS9wbHVnaW5zL3Jlb3JkZXJKYXJzL3prbS5qYXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzFkNjYyMAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pZGUvcGx1Z2lucy9yZW9yZGVySmFycy96a20uamFyCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pZGUvcGx1Z2lucy9yZW9yZGVySmFycy96a21PcmRlci50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaWRlL3BsdWdpbnMvcmVvcmRlckphcnMvemttT3JkZXIudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg3ZTE1NDEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaWRlL3BsdWdpbnMvcmVvcmRlckphcnMvemttT3JkZXIudHh0CkBAIC0wLDAgKzEgQEAKK2NvbS9pbnRlbGxpai96a20vWktNQnVuZGxlLmNsYXNzOi96a20uamFyCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaWRlL3NvdXJjZVJvb3REZXRlY3Rpb24vZGVmYXVsdFBhY2thZ2Uvc3JjL015Q2xhc3MuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pZGUvc291cmNlUm9vdERldGVjdGlvbi9kZWZhdWx0UGFja2FnZS9zcmMvTXlDbGFzcy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY3MTdlYTQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaWRlL3NvdXJjZVJvb3REZXRlY3Rpb24vZGVmYXVsdFBhY2thZ2Uvc3JjL015Q2xhc3MuamF2YQpAQCAtMCwwICsxLDIgQEAKK3B1YmxpYyBjbGFzcyBNeUNsYXNzIHsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaWRlL3NvdXJjZVJvb3REZXRlY3Rpb24vZGVmYXVsdFBhY2thZ2VXaXRoSW1wb3J0L3NyYy9NeUNsYXNzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaWRlL3NvdXJjZVJvb3REZXRlY3Rpb24vZGVmYXVsdFBhY2thZ2VXaXRoSW1wb3J0L3NyYy9NeUNsYXNzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTFmOGI1OQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pZGUvc291cmNlUm9vdERldGVjdGlvbi9kZWZhdWx0UGFja2FnZVdpdGhJbXBvcnQvc3JjL015Q2xhc3MuamF2YQpAQCAtMCwwICsxLDkgQEAKK2ltcG9ydCBqYXZhLnV0aWwuKjsKKy8vYWFhCitpbXBvcnQgamF2YS5pby5PdXRwdXRTdHJlYW07CisKKy8qKgorICogbXkgY2xhc3MKKyAqLworcHVibGljIGNsYXNzIE15Q2xhc3MgeworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pZGUvc291cmNlUm9vdERldGVjdGlvbi9nYXJiYWdlL0VtcHR5Q2xhc3MuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pZGUvc291cmNlUm9vdERldGVjdGlvbi9nYXJiYWdlL0VtcHR5Q2xhc3MuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNjlkZTI5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2lkZS9zb3VyY2VSb290RGV0ZWN0aW9uL2dhcmJhZ2UvRW1wdHlDbGFzcy5qYXZhCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaWRlL3NvdXJjZVJvb3REZXRlY3Rpb24vZ2FyYmFnZS9HYXJiYWdlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaWRlL3NvdXJjZVJvb3REZXRlY3Rpb24vZ2FyYmFnZS9HYXJiYWdlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDU4YWRiMAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pZGUvc291cmNlUm9vdERldGVjdGlvbi9nYXJiYWdlL0dhcmJhZ2UuamF2YQpAQCAtMCwwICsxIEBACitnYXJiYWdlClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2lkZS9zb3VyY2VSb290RGV0ZWN0aW9uL3NpbXBsZS9zcmMvcGFjay9NeUNsYXNzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaWRlL3NvdXJjZVJvb3REZXRlY3Rpb24vc2ltcGxlL3NyYy9wYWNrL015Q2xhc3MuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NTc4ZTQ2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2lkZS9zb3VyY2VSb290RGV0ZWN0aW9uL3NpbXBsZS9zcmMvcGFjay9NeUNsYXNzLmphdmEKQEAgLTAsMCArMSw1IEBACisvL2NvbW1lbnQKK3BhY2thZ2UgcGFjazsKKworcHVibGljIGNsYXNzIE15Q2xhc3MgeworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pZGUvc291cmNlUm9vdERldGVjdGlvbi90d29Sb290cy9zcmMxL2FiYy9NeUNsYXNzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaWRlL3NvdXJjZVJvb3REZXRlY3Rpb24vdHdvUm9vdHMvc3JjMS9hYmMvTXlDbGFzcy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY1ODFmNjgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaWRlL3NvdXJjZVJvb3REZXRlY3Rpb24vdHdvUm9vdHMvc3JjMS9hYmMvTXlDbGFzcy5qYXZhCkBAIC0wLDAgKzEsMyBAQAorcGFja2FnZSBhYmM7CisKK2NsYXNzIE15Q2xhc3N7fQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pZGUvc291cmNlUm9vdERldGVjdGlvbi90d29Sb290cy9zcmMyL0NsYXNzMi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2lkZS9zb3VyY2VSb290RGV0ZWN0aW9uL3R3b1Jvb3RzL3NyYzIvQ2xhc3MyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzEwOWEzNgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pZGUvc291cmNlUm9vdERldGVjdGlvbi90d29Sb290cy9zcmMyL0NsYXNzMi5qYXZhCkBAIC0wLDAgKzEsMyBAQAorcGFja2FnZSB4eXo7CisKK3B1YmxpYyBjbGFzcyBDbGFzczJ7fQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pZGUvc291cmNlUm9vdERldGVjdGlvbi93aXRoUHJlZml4L015Q2xhc3MuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pZGUvc291cmNlUm9vdERldGVjdGlvbi93aXRoUHJlZml4L015Q2xhc3MuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMmIyNmU1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2lkZS9zb3VyY2VSb290RGV0ZWN0aW9uL3dpdGhQcmVmaXgvTXlDbGFzcy5qYXZhCkBAIC0wLDAgKzEsNCBAQAorcGFja2FnZSB4eHgueXl5OworCitwdWJsaWMgY2xhc3MgTXlDbGFzcyB7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vY2FuQmVGaW5hbC9TQ1I2MDczL2V4cGVjdGVkLnhtbCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2NhbkJlRmluYWwvU0NSNjA3My9leHBlY3RlZC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2IzNGM1NgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2NhbkJlRmluYWwvU0NSNjA3My9leHBlY3RlZC54bWwKQEAgLTAsMCArMSw5IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPHByb2JsZW1zPgorICA8cHJvYmxlbT4KKyAgICA8ZmlsZT5BLmphdmE8L2ZpbGU+CisgICAgPGxpbmU+MjwvbGluZT4KKyAgICA8ZGVzY3JpcHRpb24+ZmluYWw8L2Rlc2NyaXB0aW9uPgorICA8L3Byb2JsZW0+Cis8L3Byb2JsZW1zPgorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9jYW5CZUZpbmFsL1NDUjYwNzMvc3JjL0EuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2NhbkJlRmluYWwvU0NSNjA3My9zcmMvQS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU3MDU1MTcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9jYW5CZUZpbmFsL1NDUjYwNzMvc3JjL0EuamF2YQpAQCAtMCwwICsxLDYgQEAKK2ZpbmFsIGNsYXNzIEEgeworICAgIGludCBiOworICAgIEEoaW50IGMpIHsKKyAgICAgICAgYj1jOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2NhbkJlRmluYWwvU0NSNjc4MS9leHBlY3RlZC54bWwgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9jYW5CZUZpbmFsL1NDUjY3ODEvZXhwZWN0ZWQueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNiMzRjNTYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9jYW5CZUZpbmFsL1NDUjY3ODEvZXhwZWN0ZWQueG1sCkBAIC0wLDAgKzEsOSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxwcm9ibGVtcz4KKyAgPHByb2JsZW0+CisgICAgPGZpbGU+QS5qYXZhPC9maWxlPgorICAgIDxsaW5lPjI8L2xpbmU+CisgICAgPGRlc2NyaXB0aW9uPmZpbmFsPC9kZXNjcmlwdGlvbj4KKyAgPC9wcm9ibGVtPgorPC9wcm9ibGVtcz4KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vY2FuQmVGaW5hbC9TQ1I2NzgxL3NyYy9BLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9jYW5CZUZpbmFsL1NDUjY3ODEvc3JjL0EuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYWM0OWJjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vY2FuQmVGaW5hbC9TQ1I2NzgxL3NyYy9BLmphdmEKQEAgLTAsMCArMSwxMiBAQAorZmluYWwgY2xhc3MgQSB7CisgICAgaW50IG07CisgICAgaW50IGs7CisgICAgQSgpIHsKKyAgICAgICAgaz0wOworICAgICAgICBtPTA7CisgICAgfQorICAgIEEoaW50IG4pIHsKKyAgICAgICAgdGhpcygpOworICAgICAgICBrPW47CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vY2FuQmVGaW5hbC9TQ1I2ODQ1L2V4cGVjdGVkLnhtbCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2NhbkJlRmluYWwvU0NSNjg0NS9leHBlY3RlZC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDcwNGQ1OAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2NhbkJlRmluYWwvU0NSNjg0NS9leHBlY3RlZC54bWwKQEAgLTAsMCArMSw0IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPHByb2JsZW1zPgorPC9wcm9ibGVtcz4KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vY2FuQmVGaW5hbC9TQ1I2ODQ1L3NyYy9BLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9jYW5CZUZpbmFsL1NDUjY4NDUvc3JjL0EuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNzcyOGI5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vY2FuQmVGaW5hbC9TQ1I2ODQ1L3NyYy9BLmphdmEKQEAgLTAsMCArMSwzIEBACitmaW5hbCBjbGFzcyBBIHsKKyAgICBpbnQgazsKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2NhbkJlRmluYWwvU0NSNjg2MS9leHBlY3RlZC54bWwgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9jYW5CZUZpbmFsL1NDUjY4NjEvZXhwZWN0ZWQueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNiMzRjNTYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9jYW5CZUZpbmFsL1NDUjY4NjEvZXhwZWN0ZWQueG1sCkBAIC0wLDAgKzEsOSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxwcm9ibGVtcz4KKyAgPHByb2JsZW0+CisgICAgPGZpbGU+QS5qYXZhPC9maWxlPgorICAgIDxsaW5lPjI8L2xpbmU+CisgICAgPGRlc2NyaXB0aW9uPmZpbmFsPC9kZXNjcmlwdGlvbj4KKyAgPC9wcm9ibGVtPgorPC9wcm9ibGVtcz4KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vY2FuQmVGaW5hbC9TQ1I2ODYxL3NyYy9BLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9jYW5CZUZpbmFsL1NDUjY4NjEvc3JjL0EuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NzllMWFiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vY2FuQmVGaW5hbC9TQ1I2ODYxL3NyYy9BLmphdmEKQEAgLTAsMCArMSwxMiBAQAorZmluYWwgY2xhc3MgQSB7CisgICAgaW50IGs7CisgICAgaW50IG07CisgeworICBrID0gMDsKKyAgbSA9IDA7CisgfQorCisgQSgpIHsKKyAgIG0gPSAwOworIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2NhbkJlRmluYWwvU0NSNzczNy9leHBlY3RlZC54bWwgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9jYW5CZUZpbmFsL1NDUjc3MzcvZXhwZWN0ZWQueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ3MDRkNTgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9jYW5CZUZpbmFsL1NDUjc3MzcvZXhwZWN0ZWQueG1sCkBAIC0wLDAgKzEsNCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxwcm9ibGVtcz4KKzwvcHJvYmxlbXM+CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2NhbkJlRmluYWwvU0NSNzczNy9leHRfc3JjL0IuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2NhbkJlRmluYWwvU0NSNzczNy9leHRfc3JjL0IuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MjZiMzI3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vY2FuQmVGaW5hbC9TQ1I3NzM3L2V4dF9zcmMvQi5qYXZhCkBAIC0wLDAgKzEsNiBAQAorLy8gQi5qYXZhCitjbGFzcyBCIGV4dGVuZHMgQSB7CisgICAgcHVibGljIGZpbmFsIHZvaWQgcnVuKCkgeworICAgIH0KK30KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vY2FuQmVGaW5hbC9TQ1I3NzM3L3NyYy9BLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9jYW5CZUZpbmFsL1NDUjc3Mzcvc3JjL0EuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZWUyOGM4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vY2FuQmVGaW5hbC9TQ1I3NzM3L3NyYy9BLmphdmEKQEAgLTAsMCArMSw2IEBACisvLyBBLmphdmEKK2NsYXNzIEEgaW1wbGVtZW50cyBSdW5uYWJsZSB7CisgICAgcHVibGljIHZvaWQgcnVuKCkgeworICAgIH0KK30KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vY2FuQmVGaW5hbC9maWVsZEFuZFRyeUJsb2NrL2V4cGVjdGVkLnhtbCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2NhbkJlRmluYWwvZmllbGRBbmRUcnlCbG9jay9leHBlY3RlZC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWFjODc5ZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2NhbkJlRmluYWwvZmllbGRBbmRUcnlCbG9jay9leHBlY3RlZC54bWwKQEAgLTAsMCArMSwzIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPHByb2JsZW1zIC8+CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2NhbkJlRmluYWwvZmllbGRBbmRUcnlCbG9jay9zcmMvRm9vLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9jYW5CZUZpbmFsL2ZpZWxkQW5kVHJ5QmxvY2svc3JjL0Zvby5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYzNDFiMjIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9jYW5CZUZpbmFsL2ZpZWxkQW5kVHJ5QmxvY2svc3JjL0Zvby5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKK3B1YmxpYyBmaW5hbCBjbGFzcyBGb28geworICAgcHJpdmF0ZSBTdHJpbmcgczsKKyAKKyAgIHB1YmxpYyBGb28oKSB7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBzID0gInRlc3QiOworICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZSkgeworICAgICAgICB9CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2NhbkJlRmluYWwvZmllbGRBc3NpZ25tZW50c3NJbkluaXRpYWxpemVyL2V4cGVjdGVkLnhtbCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2NhbkJlRmluYWwvZmllbGRBc3NpZ25tZW50c3NJbkluaXRpYWxpemVyL2V4cGVjdGVkLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNzA0ZDU4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vY2FuQmVGaW5hbC9maWVsZEFzc2lnbm1lbnRzc0luSW5pdGlhbGl6ZXIvZXhwZWN0ZWQueG1sCkBAIC0wLDAgKzEsNCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxwcm9ibGVtcz4KKzwvcHJvYmxlbXM+CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2NhbkJlRmluYWwvZmllbGRBc3NpZ25tZW50c3NJbkluaXRpYWxpemVyL3NyYy9Gb28uamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2NhbkJlRmluYWwvZmllbGRBc3NpZ25tZW50c3NJbkluaXRpYWxpemVyL3NyYy9Gb28uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNzgwODY2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vY2FuQmVGaW5hbC9maWVsZEFzc2lnbm1lbnRzc0luSW5pdGlhbGl6ZXIvc3JjL0Zvby5qYXZhCkBAIC0wLDAgKzEsNyBAQAorZmluYWwgY2xhc3MgRm9vIHsKKyAgc3RhdGljIGJvb2xlYW4gZmxhZzsKKyAgc3RhdGljIHsKKyAgICBmbGFnID0gdHJ1ZTsKKyAgICBmbGFnID0gZmFsc2U7CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2NhbkJlRmluYWwvZmllbGRzL2V4cGVjdGVkLnhtbCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2NhbkJlRmluYWwvZmllbGRzL2V4cGVjdGVkLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNDJmMDUzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vY2FuQmVGaW5hbC9maWVsZHMvZXhwZWN0ZWQueG1sCkBAIC0wLDAgKzEsOSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxwcm9ibGVtcz4gIAorICA8cHJvYmxlbT4KKyAgICA8ZmlsZT5Gb28uamF2YTwvZmlsZT4KKyAgICA8bGluZT4zPC9saW5lPgorICAgIDxkZXNjcmlwdGlvbj5maW5hbDwvZGVzY3JpcHRpb24+CisgIDwvcHJvYmxlbT4KKzwvcHJvYmxlbXM+CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2NhbkJlRmluYWwvZmllbGRzL3NyYy9Gb28uamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2NhbkJlRmluYWwvZmllbGRzL3NyYy9Gb28uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MDk3YWI1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vY2FuQmVGaW5hbC9maWVsZHMvc3JjL0Zvby5qYXZhCkBAIC0wLDAgKzEsMjMgQEAKK3B1YmxpYyBmaW5hbCBjbGFzcyBGb28geworICAgcHJpdmF0ZSBPYmplY3QgZjEgPSBuZXcgT2JqZWN0KCk7IC8vIENhbiBiZSBmaW5hbCBidXQgdW51c2VkCisgICBwcml2YXRlIE9iamVjdCBmMjsgIC8vIENhbiBiZSBmaW5hbAorICAgcHJpdmF0ZSBPYmplY3QgZjM7ICAvLyBDYW5ub3QgYmUgZmluYWwKKyAgIHByaXZhdGUgT2JqZWN0IGY0OyAgLy8gY2Fubm90CisgICBwcml2YXRlIE9iamVjdCBmNSA9IG5ldyBPYmplY3QoKTsgIC8vIGNhbm5vdAorCisgCisgICBwdWJsaWMgRm9vKCkgeworICAgICAgICBmMiA9IG5ldyBPYmplY3QoKTsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGYzID0gInRlc3QiOworICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZSkgeworICAgICAgICB9CisgICAgICAgIGY1ID0gbmV3IE9iamVjdCgpOworICAgfQorCisgICBwdWJsaWMgRm9vKGludCBpKSB7CisgICAgICAgZjIgPSBuZXcgT2JqZWN0KCk7CisgICAgICAgZjQgPSBuZXcgT2JqZWN0KCk7CisgICAgICAgZjUgPSBuZXcgT2JqZWN0KCk7CisgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vY2FuQmVGaW5hbC9maWVsZHNSZWFkaW5nL2V4cGVjdGVkLnhtbCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2NhbkJlRmluYWwvZmllbGRzUmVhZGluZy9leHBlY3RlZC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTQyZjA1MwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2NhbkJlRmluYWwvZmllbGRzUmVhZGluZy9leHBlY3RlZC54bWwKQEAgLTAsMCArMSw5IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPHByb2JsZW1zPiAgCisgIDxwcm9ibGVtPgorICAgIDxmaWxlPkZvby5qYXZhPC9maWxlPgorICAgIDxsaW5lPjM8L2xpbmU+CisgICAgPGRlc2NyaXB0aW9uPmZpbmFsPC9kZXNjcmlwdGlvbj4KKyAgPC9wcm9ibGVtPgorPC9wcm9ibGVtcz4KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vY2FuQmVGaW5hbC9maWVsZHNSZWFkaW5nL3NyYy9Gb28uamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2NhbkJlRmluYWwvZmllbGRzUmVhZGluZy9zcmMvRm9vLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWQ1YTI5OAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2NhbkJlRmluYWwvZmllbGRzUmVhZGluZy9zcmMvRm9vLmphdmEKQEAgLTAsMCArMSwyNyBAQAorcHVibGljIGZpbmFsIGNsYXNzIEZvbyB7CisgICBwcml2YXRlIE9iamVjdCBmMSA9IG5ldyBPYmplY3QoKTsgLy8gQ2FuIGJlIGZpbmFsIGJ1dCB1bnVzZWQKKyAgIHByaXZhdGUgT2JqZWN0IGYyOyAgLy8gQ2FuIGJlIGZpbmFsCisgICBwcml2YXRlIE9iamVjdCBmMzsgIC8vIENhbm5vdCBiZSBmaW5hbAorICAgcHJpdmF0ZSBPYmplY3QgZjQ7ICAvLyBjYW5ub3QKKyAgIHByaXZhdGUgT2JqZWN0IGY1ID0gbmV3IE9iamVjdCgpOyAgLy8gY2Fubm90CisKKyAKKyAgIHB1YmxpYyBGb28oKSB7CisgICAgICAgIGYyID0gbmV3IE9iamVjdCgpOworICAgICAgICB0cnkgeworICAgICAgICAgICAgZjMgPSAidGVzdCI7CisgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CisgICAgICAgIH0KKyAgICAgICAgZjUgPSBuZXcgT2JqZWN0KCk7CisgICB9CisKKyAgIHB1YmxpYyBGb28oaW50IGkpIHsKKyAgICAgICBmMiA9IG5ldyBPYmplY3QoKTsKKyAgICAgICBmNCA9IG5ldyBPYmplY3QoKTsKKyAgICAgICBmNSA9IG5ldyBPYmplY3QoKTsKKyAgIH0KKworICAgcHVibGljIE9iamVjdCBnZXRGMigpeworICAgICByZXR1cm4gZjI7CisgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vY2FuQmVGaW5hbC9tZXRob2RJbmhlcml0YW5jZS9leHBlY3RlZC54bWwgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9jYW5CZUZpbmFsL21ldGhvZEluaGVyaXRhbmNlL2V4cGVjdGVkLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45YWM4NzlkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vY2FuQmVGaW5hbC9tZXRob2RJbmhlcml0YW5jZS9leHBlY3RlZC54bWwKQEAgLTAsMCArMSwzIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPHByb2JsZW1zIC8+CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2NhbkJlRmluYWwvbWV0aG9kSW5oZXJpdGFuY2Uvc3JjL2EuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2NhbkJlRmluYWwvbWV0aG9kSW5oZXJpdGFuY2Uvc3JjL2EuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lOTFhYzAyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vY2FuQmVGaW5hbC9tZXRob2RJbmhlcml0YW5jZS9zcmMvYS5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKK3B1YmxpYyBmaW5hbCBjbGFzcyBhIHsKKyAgcHVibGljIGZpbmFsIHZvaWQgZm9vKCkgeworICB9Cit9CisKK2ZpbmFsIGNsYXNzIGIgZXh0ZW5kcyBhIHsKKyAgcHVibGljIHZvaWQgZm9vKCkge30KK30KKworCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9jYW5CZUZpbmFsL3ByaXZhdGVJbm5lcnMvZXhwZWN0ZWQueG1sIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vY2FuQmVGaW5hbC9wcml2YXRlSW5uZXJzL2V4cGVjdGVkLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kODE0OGYwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vY2FuQmVGaW5hbC9wcml2YXRlSW5uZXJzL2V4cGVjdGVkLnhtbApAQCAtMCwwICsxLDkgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8cHJvYmxlbXM+CisgIDxwcm9ibGVtPgorICAgIDxmaWxlPkZvby5qYXZhPC9maWxlPgorICAgIDxsaW5lPjg8L2xpbmU+CisgICAgPGRlc2NyaXB0aW9uPkRlY2xhcmF0aW9uIGNhbiBoYXZlIGZpbmFsIG1vZGlmaWVyPC9kZXNjcmlwdGlvbj4KKyAgPC9wcm9ibGVtPgorPC9wcm9ibGVtcz4KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vY2FuQmVGaW5hbC9wcml2YXRlSW5uZXJzL3NyYy9Gb28uamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2NhbkJlRmluYWwvcHJpdmF0ZUlubmVycy9zcmMvRm9vLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjI1N2YwMAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2NhbkJlRmluYWwvcHJpdmF0ZUlubmVycy9zcmMvRm9vLmphdmEKQEAgLTAsMCArMSwxMCBAQAorcHVibGljIGZpbmFsIGNsYXNzIEZvbyB7CisgIHByaXZhdGUgY2xhc3MgSW5uZXJTdXBlciB7CisgIH0KKworICBwcml2YXRlIGZpbmFsIGNsYXNzIElubmVySW5oZXJpdG9yMSBleHRlbmRzIElubmVyU3VwZXIgeworICB9CisKKyAgcHJpdmF0ZSBjbGFzcyBJbm5lckluaGVyaXRvcjIgZXh0ZW5kcyBJbm5lclN1cGVyIHsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2NhbkJlRmluYWwvc2ltcGxlQ2xhc3NJbmhlcml0YW5jZS9leHBlY3RlZC54bWwgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9jYW5CZUZpbmFsL3NpbXBsZUNsYXNzSW5oZXJpdGFuY2UvZXhwZWN0ZWQueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlhYzg3OWQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9jYW5CZUZpbmFsL3NpbXBsZUNsYXNzSW5oZXJpdGFuY2UvZXhwZWN0ZWQueG1sCkBAIC0wLDAgKzEsMyBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxwcm9ibGVtcyAvPgorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9jYW5CZUZpbmFsL3NpbXBsZUNsYXNzSW5oZXJpdGFuY2Uvc3JjL0Zvby5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vY2FuQmVGaW5hbC9zaW1wbGVDbGFzc0luaGVyaXRhbmNlL3NyYy9Gb28uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MjBiNjdmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vY2FuQmVGaW5hbC9zaW1wbGVDbGFzc0luaGVyaXRhbmNlL3NyYy9Gb28uamF2YQpAQCAtMCwwICsxLDUgQEAKK3B1YmxpYyBmaW5hbCBjbGFzcyBGb28gZXh0ZW5kcyBCYXIgeworfQorCitjbGFzcyBCYXIgeworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2NhbkJlRmluYWwvc2ltcGxlQ2xhc3NJbmhlcml0YW5jZTEvZXhwZWN0ZWQueG1sIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vY2FuQmVGaW5hbC9zaW1wbGVDbGFzc0luaGVyaXRhbmNlMS9leHBlY3RlZC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDM3ZGYwOQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2NhbkJlRmluYWwvc2ltcGxlQ2xhc3NJbmhlcml0YW5jZTEvZXhwZWN0ZWQueG1sCkBAIC0wLDAgKzEsOSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxwcm9ibGVtcz4KKyAgPHByb2JsZW0+CisgICAgPGZpbGU+Rm9vLmphdmE8L2ZpbGU+CisgICAgPGxpbmU+MTwvbGluZT4KKyAgICA8ZGVzY3JpcHRpb24+RGVjbGFyYXRpb24gY2FuIGhhdmUgZmluYWwgbW9kaWZpZXI8L2Rlc2NyaXB0aW9uPgorICA8L3Byb2JsZW0+Cis8L3Byb2JsZW1zPgorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9jYW5CZUZpbmFsL3NpbXBsZUNsYXNzSW5oZXJpdGFuY2UxL3NyYy9Gb28uamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2NhbkJlRmluYWwvc2ltcGxlQ2xhc3NJbmhlcml0YW5jZTEvc3JjL0Zvby5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNjMGQ0NDIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9jYW5CZUZpbmFsL3NpbXBsZUNsYXNzSW5oZXJpdGFuY2UxL3NyYy9Gb28uamF2YQpAQCAtMCwwICsxLDUgQEAKK3B1YmxpYyBjbGFzcyBGb28gZXh0ZW5kcyBCYXIgeworfQorCitjbGFzcyBCYXIgeworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2NhbkJlRmluYWwvc2ltcGxlQ2xhc3NJbmhlcml0YW5jZUZpZWxkL2V4cGVjdGVkLnhtbCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2NhbkJlRmluYWwvc2ltcGxlQ2xhc3NJbmhlcml0YW5jZUZpZWxkL2V4cGVjdGVkLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45YWM4NzlkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vY2FuQmVGaW5hbC9zaW1wbGVDbGFzc0luaGVyaXRhbmNlRmllbGQvZXhwZWN0ZWQueG1sCkBAIC0wLDAgKzEsMyBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxwcm9ibGVtcyAvPgorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9jYW5CZUZpbmFsL3NpbXBsZUNsYXNzSW5oZXJpdGFuY2VGaWVsZC9zcmMvRm9vLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9jYW5CZUZpbmFsL3NpbXBsZUNsYXNzSW5oZXJpdGFuY2VGaWVsZC9zcmMvRm9vLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDU3NzJmNTMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9jYW5CZUZpbmFsL3NpbXBsZUNsYXNzSW5oZXJpdGFuY2VGaWVsZC9zcmMvRm9vLmphdmEKQEAgLTAsMCArMSwzMSBAQAorLyoKKyAqIENvcHlyaWdodCAyMDAwLTIwMTEgSmV0QnJhaW5zIHMuci5vLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3B1YmxpYyBjbGFzcyBBIHsKKyAgICBwcm90ZWN0ZWQgU3RyaW5nIG15U3RyaW5nOworICAgIHByb3RlY3RlZCBTdHJpbmcgbXlBbm90aGVyU3RyaW5nOworCisgICAgcHVibGljIEEoU3RyaW5nIHMpIHsKKyAgICAgICAgbXlTdHJpbmcgPSBzOworICAgIH0KK30KKworZmluYWwgY2xhc3MgQUltcGwgZXh0ZW5kcyBBIHsKKyAgICBwdWJsaWMgQUltcGwoU3RyaW5nIHMpIHsKKyAgICAgICAgc3VwZXIocyk7CisgICAgICAgIG15U3RyaW5nID0gcyArICIiOworICAgICAgICBteUFub3RoZXJTdHJpbmcgPSBzOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2NhbkJlRmluYWwvc3RhdGljQ2xhc3NJbml0aWFsaXplci9leHBlY3RlZC54bWwgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9jYW5CZUZpbmFsL3N0YXRpY0NsYXNzSW5pdGlhbGl6ZXIvZXhwZWN0ZWQueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVjMjcyYWIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9jYW5CZUZpbmFsL3N0YXRpY0NsYXNzSW5pdGlhbGl6ZXIvZXhwZWN0ZWQueG1sCkBAIC0wLDAgKzEsMyBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxwcm9ibGVtcy8+CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2NhbkJlRmluYWwvc3RhdGljQ2xhc3NJbml0aWFsaXplci9zcmMvRm9vLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9jYW5CZUZpbmFsL3N0YXRpY0NsYXNzSW5pdGlhbGl6ZXIvc3JjL0Zvby5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM0MWE3YmEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9jYW5CZUZpbmFsL3N0YXRpY0NsYXNzSW5pdGlhbGl6ZXIvc3JjL0Zvby5qYXZhCkBAIC0wLDAgKzEsMjEgQEAKK2ZpbmFsIGNsYXNzIFRlc3QgeworICAgIHN0YXRpYyBmaW5hbCBUZXN0IEEgPSBuZXcgVGVzdCgpOworCisgICAgcHJpdmF0ZSBpbnQgaSA9IDk5OworCisgICAgc3RhdGljIHsKKyAgICAgICAgQS5pID0gMTA7CisgICAgfQorfQorCitlbnVtIFRlc3QxIHsKKyAgICBBLCBCLCBDOworCisgICAgcHJpdmF0ZSBpbnQgaSA9IDk5OworCisgICAgc3RhdGljIHsKKyAgICAgICAgQS5pID0gMTA7CisgICAgICAgIEIuaSA9IDIwOworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oQS5pKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vY2FuQmVGaW5hbC9zdGF0aWNGaWVsZHMvZXhwZWN0ZWQueG1sIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vY2FuQmVGaW5hbC9zdGF0aWNGaWVsZHMvZXhwZWN0ZWQueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk2OTY5ZDMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9jYW5CZUZpbmFsL3N0YXRpY0ZpZWxkcy9leHBlY3RlZC54bWwKQEAgLTAsMCArMSw5IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPHByb2JsZW1zPiAgCisgIDxwcm9ibGVtPgorICAgIDxmaWxlPkZvby5qYXZhPC9maWxlPgorICAgIDxsaW5lPjI8L2xpbmU+CisgICAgPGRlc2NyaXB0aW9uPmZpbmFsPC9kZXNjcmlwdGlvbj4KKyAgPC9wcm9ibGVtPgorPC9wcm9ibGVtcz4KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vY2FuQmVGaW5hbC9zdGF0aWNGaWVsZHMvc3JjL0Zvby5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vY2FuQmVGaW5hbC9zdGF0aWNGaWVsZHMvc3JjL0Zvby5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM5NmUyMDEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9jYW5CZUZpbmFsL3N0YXRpY0ZpZWxkcy9zcmMvRm9vLmphdmEKQEAgLTAsMCArMSwxMyBAQAorcHVibGljIGZpbmFsIGNsYXNzIEZvbyB7CisgICAgcHJpdmF0ZSBzdGF0aWMgT2JqZWN0IGYxID0gbmV3IE9iamVjdCgpOyAvLyBDYW4gYmUgZmluYWwgYnV0IHVudXNlZAorICAgIHByaXZhdGUgc3RhdGljIE9iamVjdCBvYmplY3Q7IC8vIGNhbid0IGJlIGZpbmFsCisgIAorICAgIEZvbygpIHsKKyAgICAgICAgb2JqZWN0ID0gbmV3IE9iamVjdCgpOworICAgIH0KKyAgCisgICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgeworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oRm9vLmYxKTsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKEZvby5vYmplY3QpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9jb252ZXJ0ZXIvb3B0aW9ucy9vcHRpb25zLmFmdGVyLnhtbCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2NvbnZlcnRlci9vcHRpb25zL29wdGlvbnMuYWZ0ZXIueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE3NmI4ZmUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9jb252ZXJ0ZXIvb3B0aW9ucy9vcHRpb25zLmFmdGVyLnhtbApAQCAtMCwwICsxLDIwIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPGNvbmZpZz4KKyAgPHByb2ZpbGVzPgorICAgIDxwcm9maWxlIHZlcnNpb249IjEuMCIgaXNfbG9ja2VkPSJmYWxzZSI+CisgICAgICA8b3B0aW9uIG5hbWU9Im15TmFtZSIgdmFsdWU9IlByb2plY3QgRGVmYXVsdCIgLz4KKyAgICAgIDxvcHRpb24gbmFtZT0ibXlMb2NhbCIgdmFsdWU9ImZhbHNlIiAvPgorICAgIDwvcHJvZmlsZT4KKyAgICA8cHJvZmlsZSB2ZXJzaW9uPSIxLjAiIGlzX2xvY2tlZD0iZmFsc2UiPgorICAgICAgPG9wdGlvbiBuYW1lPSJteU5hbWUiIHZhbHVlPSJwMSIgLz4KKyAgICAgIDxvcHRpb24gbmFtZT0ibXlMb2NhbCIgdmFsdWU9ImZhbHNlIiAvPgorICAgICAgPGluc3BlY3Rpb25fdG9vbCBjbGFzcz0iQ29uc3RhbnRDb25kaXRpb25zIiBlbmFibGVkPSJ0cnVlIiBsZXZlbD0iV0FSTklORyIgZW5hYmxlZF9ieV9kZWZhdWx0PSJ0cnVlIj4KKyAgICAgICAgPG9wdGlvbiBuYW1lPSJTVUdHRVNUX05VTExBQkxFX0FOTk9UQVRJT05TIiB2YWx1ZT0idHJ1ZSIgLz4KKyAgICAgICAgPG9wdGlvbiBuYW1lPSJET05UX1JFUE9SVF9UUlVFX0FTU0VSVF9TVEFURU1FTlRTIiB2YWx1ZT0idHJ1ZSIgLz4KKyAgICAgIDwvaW5zcGVjdGlvbl90b29sPgorICAgIDwvcHJvZmlsZT4KKyAgPC9wcm9maWxlcz4KKyAgPG9wdGlvbiBuYW1lPSJQUk9KRUNUX1BST0ZJTEUiIHZhbHVlPSJwMSIgLz4KKyAgPG9wdGlvbiBuYW1lPSJVU0VfUFJPSkVDVF9QUk9GSUxFIiB2YWx1ZT0idHJ1ZSIgLz4KKyAgPHZlcnNpb24gdmFsdWU9IjEuMCIgLz4KKzwvY29uZmlnPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2NvbnZlcnRlci9vcHRpb25zL29wdGlvbnMuaXByIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vY29udmVydGVyL29wdGlvbnMvb3B0aW9ucy5pcHIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODk0MDZlOQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2NvbnZlcnRlci9vcHRpb25zL29wdGlvbnMuaXByCkBAIC0wLDAgKzEsMjc2IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPHByb2plY3QgcmVsYXRpdmVQYXRocz0iZmFsc2UiIHZlcnNpb249IjQiPgorICA8Y29tcG9uZW50IG5hbWU9IkFudENvbmZpZ3VyYXRpb24iPgorICAgIDxkZWZhdWx0QW50IGJ1bmRsZWRBbnQ9InRydWUiIC8+CisgIDwvY29tcG9uZW50PgorICA8Y29tcG9uZW50IG5hbWU9IkJ1aWxkSmFyUHJvamVjdFNldHRpbmdzIj4KKyAgICA8b3B0aW9uIG5hbWU9IkJVSUxEX0pBUlNfT05fTUFLRSIgdmFsdWU9ImZhbHNlIiAvPgorICA8L2NvbXBvbmVudD4KKyAgPGNvbXBvbmVudCBuYW1lPSJDb2RlU3R5bGVTZXR0aW5nc01hbmFnZXIiPgorICAgIDxvcHRpb24gbmFtZT0iUEVSX1BST0pFQ1RfU0VUVElOR1MiIC8+CisgICAgPG9wdGlvbiBuYW1lPSJVU0VfUEVSX1BST0pFQ1RfU0VUVElOR1MiIHZhbHVlPSJmYWxzZSIgLz4KKyAgPC9jb21wb25lbnQ+CisgIDxjb21wb25lbnQgbmFtZT0iQ29tcGlsZXJDb25maWd1cmF0aW9uIj4KKyAgICA8b3B0aW9uIG5hbWU9IkRFRkFVTFRfQ09NUElMRVIiIHZhbHVlPSJKYXZhYyIgLz4KKyAgICA8b3B0aW9uIG5hbWU9IkRFUExPWV9BRlRFUl9NQUtFIiB2YWx1ZT0iMCIgLz4KKyAgICA8cmVzb3VyY2VFeHRlbnNpb25zPgorICAgICAgPGVudHJ5IG5hbWU9Ii4rXC4ocHJvcGVydGllc3x4bWx8aHRtbHxkdGR8dGxkKSIgLz4KKyAgICAgIDxlbnRyeSBuYW1lPSIuK1wuKGdpZnxwbmd8anBlZ3xqcGcpIiAvPgorICAgIDwvcmVzb3VyY2VFeHRlbnNpb25zPgorICAgIDx3aWxkY2FyZFJlc291cmNlUGF0dGVybnM+CisgICAgICA8ZW50cnkgbmFtZT0iPyoucHJvcGVydGllcyIgLz4KKyAgICAgIDxlbnRyeSBuYW1lPSI/Ki54bWwiIC8+CisgICAgICA8ZW50cnkgbmFtZT0iPyouZ2lmIiAvPgorICAgICAgPGVudHJ5IG5hbWU9Ij8qLnBuZyIgLz4KKyAgICAgIDxlbnRyeSBuYW1lPSI/Ki5qcGVnIiAvPgorICAgICAgPGVudHJ5IG5hbWU9Ij8qLmpwZyIgLz4KKyAgICAgIDxlbnRyeSBuYW1lPSI/Ki5odG1sIiAvPgorICAgICAgPGVudHJ5IG5hbWU9Ij8qLmR0ZCIgLz4KKyAgICAgIDxlbnRyeSBuYW1lPSI/Ki50bGQiIC8+CisgICAgICA8ZW50cnkgbmFtZT0iPyouZnRsIiAvPgorICAgIDwvd2lsZGNhcmRSZXNvdXJjZVBhdHRlcm5zPgorICA8L2NvbXBvbmVudD4KKyAgPGNvbXBvbmVudCBuYW1lPSJDb3B5cmlnaHRNYW5hZ2VyIiBkZWZhdWx0PSIiPgorICAgIDxtb2R1bGUyY29weXJpZ2h0IC8+CisgIDwvY29tcG9uZW50PgorICA8Y29tcG9uZW50IG5hbWU9IkRhdGFTb3VyY2VNYW5hZ2VySW1wbCI+CisgICAgPGV4dGVybmFsaXplZCAvPgorICA8L2NvbXBvbmVudD4KKyAgPGNvbXBvbmVudCBuYW1lPSJEZXBlbmRlbmN5VmFsaWRhdGlvbk1hbmFnZXIiPgorICAgIDxvcHRpb24gbmFtZT0iU0tJUF9JTVBPUlRfU1RBVEVNRU5UUyIgdmFsdWU9ImZhbHNlIiAvPgorICA8L2NvbXBvbmVudD4KKyAgPGNvbXBvbmVudCBuYW1lPSJFY2xpcHNlQ29tcGlsZXJTZXR0aW5ncyI+CisgICAgPG9wdGlvbiBuYW1lPSJERUJVR0dJTkdfSU5GTyIgdmFsdWU9InRydWUiIC8+CisgICAgPG9wdGlvbiBuYW1lPSJHRU5FUkFURV9OT19XQVJOSU5HUyIgdmFsdWU9InRydWUiIC8+CisgICAgPG9wdGlvbiBuYW1lPSJERVBSRUNBVElPTiIgdmFsdWU9ImZhbHNlIiAvPgorICAgIDxvcHRpb24gbmFtZT0iQURESVRJT05BTF9PUFRJT05TX1NUUklORyIgdmFsdWU9IiIgLz4KKyAgICA8b3B0aW9uIG5hbWU9Ik1BWElNVU1fSEVBUF9TSVpFIiB2YWx1ZT0iMTI4IiAvPgorICA8L2NvbXBvbmVudD4KKyAgPGNvbXBvbmVudCBuYW1lPSJFY2xpcHNlRW1iZWRkZWRDb21waWxlclNldHRpbmdzIj4KKyAgICA8b3B0aW9uIG5hbWU9IkRFQlVHR0lOR19JTkZPIiB2YWx1ZT0idHJ1ZSIgLz4KKyAgICA8b3B0aW9uIG5hbWU9IkdFTkVSQVRFX05PX1dBUk5JTkdTIiB2YWx1ZT0idHJ1ZSIgLz4KKyAgICA8b3B0aW9uIG5hbWU9IkRFUFJFQ0FUSU9OIiB2YWx1ZT0iZmFsc2UiIC8+CisgICAgPG9wdGlvbiBuYW1lPSJBRERJVElPTkFMX09QVElPTlNfU1RSSU5HIiB2YWx1ZT0iIiAvPgorICAgIDxvcHRpb24gbmFtZT0iTUFYSU1VTV9IRUFQX1NJWkUiIHZhbHVlPSIxMjgiIC8+CisgIDwvY29tcG9uZW50PgorICA8Y29tcG9uZW50IG5hbWU9IkVuY29kaW5nIiB1c2VVVEZHdWVzc2luZz0idHJ1ZSIgbmF0aXZlMkFzY2lpRm9yUHJvcGVydGllc0ZpbGVzPSJmYWxzZSIgLz4KKyAgPGNvbXBvbmVudCBuYW1lPSJFbnRyeVBvaW50c01hbmFnZXIiPgorICAgIDxlbnRyeV9wb2ludHMgdmVyc2lvbj0iMi4wIiAvPgorICA8L2NvbXBvbmVudD4KKyAgPGNvbXBvbmVudCBuYW1lPSJJbnNwZWN0aW9uUHJvamVjdFByb2ZpbGVNYW5hZ2VyIj4KKyAgICA8b3B0aW9uIG5hbWU9IlBST0pFQ1RfUFJPRklMRSIgdmFsdWU9InAxIiAvPgorICAgIDxwcm9maWxlcz4KKyAgICAgIDxwcm9maWxlIHZlcnNpb249IjEuMCIgaXNfbG9ja2VkPSJmYWxzZSI+CisgICAgICAgIDxvcHRpb24gbmFtZT0ibXlOYW1lIiB2YWx1ZT0iUHJvamVjdCBEZWZhdWx0IiAvPgorICAgICAgICA8b3B0aW9uIG5hbWU9Im15TG9jYWwiIHZhbHVlPSJmYWxzZSIgLz4KKyAgICAgIDwvcHJvZmlsZT4KKyAgICAgIDxwcm9maWxlIHZlcnNpb249IjEuMCIgaXNfbG9ja2VkPSJmYWxzZSI+CisgICAgICAgIDxvcHRpb24gbmFtZT0ibXlOYW1lIiB2YWx1ZT0icDEiIC8+CisgICAgICAgIDxvcHRpb24gbmFtZT0ibXlMb2NhbCIgdmFsdWU9ImZhbHNlIiAvPgorICAgICAgICA8aW5zcGVjdGlvbl90b29sIGNsYXNzPSJDb25zdGFudENvbmRpdGlvbnMiIGxldmVsPSJXQVJOSU5HIiBlbmFibGVkPSJ0cnVlIj4KKyAgICAgICAgICAgIDxvcHRpb24gbmFtZT0iU1VHR0VTVF9OVUxMQUJMRV9BTk5PVEFUSU9OUyIgdmFsdWU9InRydWUiIC8+CisgICAgICAgICAgICA8b3B0aW9uIG5hbWU9IkRPTlRfUkVQT1JUX1RSVUVfQVNTRVJUX1NUQVRFTUVOVFMiIHZhbHVlPSJ0cnVlIiAvPgorICAgICAgICA8L2luc3BlY3Rpb25fdG9vbD4KKyAgICAgIDwvcHJvZmlsZT4KKyAgICA8L3Byb2ZpbGVzPgorICAgIDxsaXN0IHNpemU9IjUiPgorICAgICAgPGl0ZW0gaW5kZXg9IjAiIGNsYXNzPSJqYXZhLmxhbmcuU3RyaW5nIiBpdGVtdmFsdWU9IlRZUE8iIC8+CisgICAgICA8aXRlbSBpbmRleD0iMSIgY2xhc3M9ImphdmEubGFuZy5TdHJpbmciIGl0ZW12YWx1ZT0iU0VSVkVSIFBST0JMRU0iIC8+CisgICAgICA8aXRlbSBpbmRleD0iMiIgY2xhc3M9ImphdmEubGFuZy5TdHJpbmciIGl0ZW12YWx1ZT0iSU5GTyIgLz4KKyAgICAgIDxpdGVtIGluZGV4PSIzIiBjbGFzcz0iamF2YS5sYW5nLlN0cmluZyIgaXRlbXZhbHVlPSJXQVJOSU5HIiAvPgorICAgICAgPGl0ZW0gaW5kZXg9IjQiIGNsYXNzPSJqYXZhLmxhbmcuU3RyaW5nIiBpdGVtdmFsdWU9IkVSUk9SIiAvPgorICAgIDwvbGlzdD4KKyAgPC9jb21wb25lbnQ+CisgIDxjb21wb25lbnQgbmFtZT0iSmF2YWNTZXR0aW5ncyI+CisgICAgPG9wdGlvbiBuYW1lPSJERUJVR0dJTkdfSU5GTyIgdmFsdWU9InRydWUiIC8+CisgICAgPG9wdGlvbiBuYW1lPSJHRU5FUkFURV9OT19XQVJOSU5HUyIgdmFsdWU9ImZhbHNlIiAvPgorICAgIDxvcHRpb24gbmFtZT0iREVQUkVDQVRJT04iIHZhbHVlPSJ0cnVlIiAvPgorICAgIDxvcHRpb24gbmFtZT0iQURESVRJT05BTF9PUFRJT05TX1NUUklORyIgdmFsdWU9IiIgLz4KKyAgICA8b3B0aW9uIG5hbWU9Ik1BWElNVU1fSEVBUF9TSVpFIiB2YWx1ZT0iMTI4IiAvPgorICA8L2NvbXBvbmVudD4KKyAgPGNvbXBvbmVudCBuYW1lPSJKYXZhZG9jR2VuZXJhdGlvbk1hbmFnZXIiPgorICAgIDxvcHRpb24gbmFtZT0iT1VUUFVUX0RJUkVDVE9SWSIgLz4KKyAgICA8b3B0aW9uIG5hbWU9Ik9QVElPTl9TQ09QRSIgdmFsdWU9InByb3RlY3RlZCIgLz4KKyAgICA8b3B0aW9uIG5hbWU9Ik9QVElPTl9ISUVSQVJDSFkiIHZhbHVlPSJ0cnVlIiAvPgorICAgIDxvcHRpb24gbmFtZT0iT1BUSU9OX05BVklHQVRPUiIgdmFsdWU9InRydWUiIC8+CisgICAgPG9wdGlvbiBuYW1lPSJPUFRJT05fSU5ERVgiIHZhbHVlPSJ0cnVlIiAvPgorICAgIDxvcHRpb24gbmFtZT0iT1BUSU9OX1NFUEFSQVRFX0lOREVYIiB2YWx1ZT0idHJ1ZSIgLz4KKyAgICA8b3B0aW9uIG5hbWU9Ik9QVElPTl9ET0NVTUVOVF9UQUdfVVNFIiB2YWx1ZT0iZmFsc2UiIC8+CisgICAgPG9wdGlvbiBuYW1lPSJPUFRJT05fRE9DVU1FTlRfVEFHX0FVVEhPUiIgdmFsdWU9ImZhbHNlIiAvPgorICAgIDxvcHRpb24gbmFtZT0iT1BUSU9OX0RPQ1VNRU5UX1RBR19WRVJTSU9OIiB2YWx1ZT0iZmFsc2UiIC8+CisgICAgPG9wdGlvbiBuYW1lPSJPUFRJT05fRE9DVU1FTlRfVEFHX0RFUFJFQ0FURUQiIHZhbHVlPSJ0cnVlIiAvPgorICAgIDxvcHRpb24gbmFtZT0iT1BUSU9OX0RFUFJFQ0FURURfTElTVCIgdmFsdWU9InRydWUiIC8+CisgICAgPG9wdGlvbiBuYW1lPSJPVEhFUl9PUFRJT05TIiB2YWx1ZT0iIiAvPgorICAgIDxvcHRpb24gbmFtZT0iSEVBUF9TSVpFIiAvPgorICAgIDxvcHRpb24gbmFtZT0iTE9DQUxFIiAvPgorICAgIDxvcHRpb24gbmFtZT0iT1BFTl9JTl9CUk9XU0VSIiB2YWx1ZT0idHJ1ZSIgLz4KKyAgPC9jb21wb25lbnQ+CisgIDxjb21wb25lbnQgbmFtZT0iSmlrZXNTZXR0aW5ncyI+CisgICAgPG9wdGlvbiBuYW1lPSJKSUtFU19QQVRIIiB2YWx1ZT0iIiAvPgorICAgIDxvcHRpb24gbmFtZT0iREVCVUdHSU5HX0lORk8iIHZhbHVlPSJ0cnVlIiAvPgorICAgIDxvcHRpb24gbmFtZT0iREVQUkVDQVRJT04iIHZhbHVlPSJ0cnVlIiAvPgorICAgIDxvcHRpb24gbmFtZT0iR0VORVJBVEVfTk9fV0FSTklOR1MiIHZhbHVlPSJmYWxzZSIgLz4KKyAgICA8b3B0aW9uIG5hbWU9IklTX0VNQUNTX0VSUk9SU19NT0RFIiB2YWx1ZT0idHJ1ZSIgLz4KKyAgICA8b3B0aW9uIG5hbWU9IkFERElUSU9OQUxfT1BUSU9OU19TVFJJTkciIHZhbHVlPSIiIC8+CisgIDwvY29tcG9uZW50PgorICA8Y29tcG9uZW50IG5hbWU9IlBhbGV0dGUyIj4KKyAgICA8Z3JvdXAgbmFtZT0iU3dpbmciPgorICAgICAgPGl0ZW0gY2xhc3M9ImNvbS5pbnRlbGxpai51aURlc2lnbmVyLkhTcGFjZXIiIHRvb2x0aXAtdGV4dD0iSG9yaXpvbnRhbCBTcGFjZXIiIGljb249Ii9jb20vaW50ZWxsaWovdWlEZXNpZ25lci9pY29ucy9oc3BhY2VyLnBuZyIgcmVtb3ZhYmxlPSJmYWxzZSIgYXV0by1jcmVhdGUtYmluZGluZz0iZmFsc2UiIGNhbi1hdHRhY2gtbGFiZWw9ImZhbHNlIj4KKyAgICAgICAgPGRlZmF1bHQtY29uc3RyYWludHMgdnNpemUtcG9saWN5PSIxIiBoc2l6ZS1wb2xpY3k9IjYiIGFuY2hvcj0iMCIgZmlsbD0iMSIgLz4KKyAgICAgIDwvaXRlbT4KKyAgICAgIDxpdGVtIGNsYXNzPSJjb20uaW50ZWxsaWoudWlEZXNpZ25lci5WU3BhY2VyIiB0b29sdGlwLXRleHQ9IlZlcnRpY2FsIFNwYWNlciIgaWNvbj0iL2NvbS9pbnRlbGxpai91aURlc2lnbmVyL2ljb25zL3ZzcGFjZXIucG5nIiByZW1vdmFibGU9ImZhbHNlIiBhdXRvLWNyZWF0ZS1iaW5kaW5nPSJmYWxzZSIgY2FuLWF0dGFjaC1sYWJlbD0iZmFsc2UiPgorICAgICAgICA8ZGVmYXVsdC1jb25zdHJhaW50cyB2c2l6ZS1wb2xpY3k9IjYiIGhzaXplLXBvbGljeT0iMSIgYW5jaG9yPSIwIiBmaWxsPSIyIiAvPgorICAgICAgPC9pdGVtPgorICAgICAgPGl0ZW0gY2xhc3M9ImphdmF4LnN3aW5nLkpQYW5lbCIgaWNvbj0iL2NvbS9pbnRlbGxpai91aURlc2lnbmVyL2ljb25zL3BhbmVsLnBuZyIgcmVtb3ZhYmxlPSJmYWxzZSIgYXV0by1jcmVhdGUtYmluZGluZz0iZmFsc2UiIGNhbi1hdHRhY2gtbGFiZWw9ImZhbHNlIj4KKyAgICAgICAgPGRlZmF1bHQtY29uc3RyYWludHMgdnNpemUtcG9saWN5PSIzIiBoc2l6ZS1wb2xpY3k9IjMiIGFuY2hvcj0iMCIgZmlsbD0iMyIgLz4KKyAgICAgIDwvaXRlbT4KKyAgICAgIDxpdGVtIGNsYXNzPSJqYXZheC5zd2luZy5KU2Nyb2xsUGFuZSIgaWNvbj0iL2NvbS9pbnRlbGxpai91aURlc2lnbmVyL2ljb25zL3Njcm9sbFBhbmUucG5nIiByZW1vdmFibGU9ImZhbHNlIiBhdXRvLWNyZWF0ZS1iaW5kaW5nPSJmYWxzZSIgY2FuLWF0dGFjaC1sYWJlbD0idHJ1ZSI+CisgICAgICAgIDxkZWZhdWx0LWNvbnN0cmFpbnRzIHZzaXplLXBvbGljeT0iNyIgaHNpemUtcG9saWN5PSI3IiBhbmNob3I9IjAiIGZpbGw9IjMiIC8+CisgICAgICA8L2l0ZW0+CisgICAgICA8aXRlbSBjbGFzcz0iamF2YXguc3dpbmcuSkJ1dHRvbiIgaWNvbj0iL2NvbS9pbnRlbGxpai91aURlc2lnbmVyL2ljb25zL2J1dHRvbi5wbmciIHJlbW92YWJsZT0iZmFsc2UiIGF1dG8tY3JlYXRlLWJpbmRpbmc9InRydWUiIGNhbi1hdHRhY2gtbGFiZWw9ImZhbHNlIj4KKyAgICAgICAgPGRlZmF1bHQtY29uc3RyYWludHMgdnNpemUtcG9saWN5PSIwIiBoc2l6ZS1wb2xpY3k9IjMiIGFuY2hvcj0iMCIgZmlsbD0iMSIgLz4KKyAgICAgICAgPGluaXRpYWwtdmFsdWVzPgorICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJ0ZXh0IiB2YWx1ZT0iQnV0dG9uIiAvPgorICAgICAgICA8L2luaXRpYWwtdmFsdWVzPgorICAgICAgPC9pdGVtPgorICAgICAgPGl0ZW0gY2xhc3M9ImphdmF4LnN3aW5nLkpSYWRpb0J1dHRvbiIgaWNvbj0iL2NvbS9pbnRlbGxpai91aURlc2lnbmVyL2ljb25zL3JhZGlvQnV0dG9uLnBuZyIgcmVtb3ZhYmxlPSJmYWxzZSIgYXV0by1jcmVhdGUtYmluZGluZz0idHJ1ZSIgY2FuLWF0dGFjaC1sYWJlbD0iZmFsc2UiPgorICAgICAgICA8ZGVmYXVsdC1jb25zdHJhaW50cyB2c2l6ZS1wb2xpY3k9IjAiIGhzaXplLXBvbGljeT0iMyIgYW5jaG9yPSI4IiBmaWxsPSIwIiAvPgorICAgICAgICA8aW5pdGlhbC12YWx1ZXM+CisgICAgICAgICAgPHByb3BlcnR5IG5hbWU9InRleHQiIHZhbHVlPSJSYWRpb0J1dHRvbiIgLz4KKyAgICAgICAgPC9pbml0aWFsLXZhbHVlcz4KKyAgICAgIDwvaXRlbT4KKyAgICAgIDxpdGVtIGNsYXNzPSJqYXZheC5zd2luZy5KQ2hlY2tCb3giIGljb249Ii9jb20vaW50ZWxsaWovdWlEZXNpZ25lci9pY29ucy9jaGVja0JveC5wbmciIHJlbW92YWJsZT0iZmFsc2UiIGF1dG8tY3JlYXRlLWJpbmRpbmc9InRydWUiIGNhbi1hdHRhY2gtbGFiZWw9ImZhbHNlIj4KKyAgICAgICAgPGRlZmF1bHQtY29uc3RyYWludHMgdnNpemUtcG9saWN5PSIwIiBoc2l6ZS1wb2xpY3k9IjMiIGFuY2hvcj0iOCIgZmlsbD0iMCIgLz4KKyAgICAgICAgPGluaXRpYWwtdmFsdWVzPgorICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJ0ZXh0IiB2YWx1ZT0iQ2hlY2tCb3giIC8+CisgICAgICAgIDwvaW5pdGlhbC12YWx1ZXM+CisgICAgICA8L2l0ZW0+CisgICAgICA8aXRlbSBjbGFzcz0iamF2YXguc3dpbmcuSkxhYmVsIiBpY29uPSIvY29tL2ludGVsbGlqL3VpRGVzaWduZXIvaWNvbnMvbGFiZWwucG5nIiByZW1vdmFibGU9ImZhbHNlIiBhdXRvLWNyZWF0ZS1iaW5kaW5nPSJmYWxzZSIgY2FuLWF0dGFjaC1sYWJlbD0iZmFsc2UiPgorICAgICAgICA8ZGVmYXVsdC1jb25zdHJhaW50cyB2c2l6ZS1wb2xpY3k9IjAiIGhzaXplLXBvbGljeT0iMCIgYW5jaG9yPSI4IiBmaWxsPSIwIiAvPgorICAgICAgICA8aW5pdGlhbC12YWx1ZXM+CisgICAgICAgICAgPHByb3BlcnR5IG5hbWU9InRleHQiIHZhbHVlPSJMYWJlbCIgLz4KKyAgICAgICAgPC9pbml0aWFsLXZhbHVlcz4KKyAgICAgIDwvaXRlbT4KKyAgICAgIDxpdGVtIGNsYXNzPSJqYXZheC5zd2luZy5KVGV4dEZpZWxkIiBpY29uPSIvY29tL2ludGVsbGlqL3VpRGVzaWduZXIvaWNvbnMvdGV4dEZpZWxkLnBuZyIgcmVtb3ZhYmxlPSJmYWxzZSIgYXV0by1jcmVhdGUtYmluZGluZz0idHJ1ZSIgY2FuLWF0dGFjaC1sYWJlbD0idHJ1ZSI+CisgICAgICAgIDxkZWZhdWx0LWNvbnN0cmFpbnRzIHZzaXplLXBvbGljeT0iMCIgaHNpemUtcG9saWN5PSI2IiBhbmNob3I9IjgiIGZpbGw9IjEiPgorICAgICAgICAgIDxwcmVmZXJyZWQtc2l6ZSB3aWR0aD0iMTUwIiBoZWlnaHQ9Ii0xIiAvPgorICAgICAgICA8L2RlZmF1bHQtY29uc3RyYWludHM+CisgICAgICA8L2l0ZW0+CisgICAgICA8aXRlbSBjbGFzcz0iamF2YXguc3dpbmcuSlBhc3N3b3JkRmllbGQiIGljb249Ii9jb20vaW50ZWxsaWovdWlEZXNpZ25lci9pY29ucy9wYXNzd29yZEZpZWxkLnBuZyIgcmVtb3ZhYmxlPSJmYWxzZSIgYXV0by1jcmVhdGUtYmluZGluZz0idHJ1ZSIgY2FuLWF0dGFjaC1sYWJlbD0idHJ1ZSI+CisgICAgICAgIDxkZWZhdWx0LWNvbnN0cmFpbnRzIHZzaXplLXBvbGljeT0iMCIgaHNpemUtcG9saWN5PSI2IiBhbmNob3I9IjgiIGZpbGw9IjEiPgorICAgICAgICAgIDxwcmVmZXJyZWQtc2l6ZSB3aWR0aD0iMTUwIiBoZWlnaHQ9Ii0xIiAvPgorICAgICAgICA8L2RlZmF1bHQtY29uc3RyYWludHM+CisgICAgICA8L2l0ZW0+CisgICAgICA8aXRlbSBjbGFzcz0iamF2YXguc3dpbmcuSkZvcm1hdHRlZFRleHRGaWVsZCIgaWNvbj0iL2NvbS9pbnRlbGxpai91aURlc2lnbmVyL2ljb25zL2Zvcm1hdHRlZFRleHRGaWVsZC5wbmciIHJlbW92YWJsZT0iZmFsc2UiIGF1dG8tY3JlYXRlLWJpbmRpbmc9InRydWUiIGNhbi1hdHRhY2gtbGFiZWw9InRydWUiPgorICAgICAgICA8ZGVmYXVsdC1jb25zdHJhaW50cyB2c2l6ZS1wb2xpY3k9IjAiIGhzaXplLXBvbGljeT0iNiIgYW5jaG9yPSI4IiBmaWxsPSIxIj4KKyAgICAgICAgICA8cHJlZmVycmVkLXNpemUgd2lkdGg9IjE1MCIgaGVpZ2h0PSItMSIgLz4KKyAgICAgICAgPC9kZWZhdWx0LWNvbnN0cmFpbnRzPgorICAgICAgPC9pdGVtPgorICAgICAgPGl0ZW0gY2xhc3M9ImphdmF4LnN3aW5nLkpUZXh0QXJlYSIgaWNvbj0iL2NvbS9pbnRlbGxpai91aURlc2lnbmVyL2ljb25zL3RleHRBcmVhLnBuZyIgcmVtb3ZhYmxlPSJmYWxzZSIgYXV0by1jcmVhdGUtYmluZGluZz0idHJ1ZSIgY2FuLWF0dGFjaC1sYWJlbD0idHJ1ZSI+CisgICAgICAgIDxkZWZhdWx0LWNvbnN0cmFpbnRzIHZzaXplLXBvbGljeT0iNiIgaHNpemUtcG9saWN5PSI2IiBhbmNob3I9IjAiIGZpbGw9IjMiPgorICAgICAgICAgIDxwcmVmZXJyZWQtc2l6ZSB3aWR0aD0iMTUwIiBoZWlnaHQ9IjUwIiAvPgorICAgICAgICA8L2RlZmF1bHQtY29uc3RyYWludHM+CisgICAgICA8L2l0ZW0+CisgICAgICA8aXRlbSBjbGFzcz0iamF2YXguc3dpbmcuSlRleHRQYW5lIiBpY29uPSIvY29tL2ludGVsbGlqL3VpRGVzaWduZXIvaWNvbnMvdGV4dFBhbmUucG5nIiByZW1vdmFibGU9ImZhbHNlIiBhdXRvLWNyZWF0ZS1iaW5kaW5nPSJ0cnVlIiBjYW4tYXR0YWNoLWxhYmVsPSJ0cnVlIj4KKyAgICAgICAgPGRlZmF1bHQtY29uc3RyYWludHMgdnNpemUtcG9saWN5PSI2IiBoc2l6ZS1wb2xpY3k9IjYiIGFuY2hvcj0iMCIgZmlsbD0iMyI+CisgICAgICAgICAgPHByZWZlcnJlZC1zaXplIHdpZHRoPSIxNTAiIGhlaWdodD0iNTAiIC8+CisgICAgICAgIDwvZGVmYXVsdC1jb25zdHJhaW50cz4KKyAgICAgIDwvaXRlbT4KKyAgICAgIDxpdGVtIGNsYXNzPSJqYXZheC5zd2luZy5KRWRpdG9yUGFuZSIgaWNvbj0iL2NvbS9pbnRlbGxpai91aURlc2lnbmVyL2ljb25zL2VkaXRvclBhbmUucG5nIiByZW1vdmFibGU9ImZhbHNlIiBhdXRvLWNyZWF0ZS1iaW5kaW5nPSJ0cnVlIiBjYW4tYXR0YWNoLWxhYmVsPSJ0cnVlIj4KKyAgICAgICAgPGRlZmF1bHQtY29uc3RyYWludHMgdnNpemUtcG9saWN5PSI2IiBoc2l6ZS1wb2xpY3k9IjYiIGFuY2hvcj0iMCIgZmlsbD0iMyI+CisgICAgICAgICAgPHByZWZlcnJlZC1zaXplIHdpZHRoPSIxNTAiIGhlaWdodD0iNTAiIC8+CisgICAgICAgIDwvZGVmYXVsdC1jb25zdHJhaW50cz4KKyAgICAgIDwvaXRlbT4KKyAgICAgIDxpdGVtIGNsYXNzPSJqYXZheC5zd2luZy5KQ29tYm9Cb3giIGljb249Ii9jb20vaW50ZWxsaWovdWlEZXNpZ25lci9pY29ucy9jb21ib0JveC5wbmciIHJlbW92YWJsZT0iZmFsc2UiIGF1dG8tY3JlYXRlLWJpbmRpbmc9InRydWUiIGNhbi1hdHRhY2gtbGFiZWw9InRydWUiPgorICAgICAgICA8ZGVmYXVsdC1jb25zdHJhaW50cyB2c2l6ZS1wb2xpY3k9IjAiIGhzaXplLXBvbGljeT0iMiIgYW5jaG9yPSI4IiBmaWxsPSIxIiAvPgorICAgICAgPC9pdGVtPgorICAgICAgPGl0ZW0gY2xhc3M9ImphdmF4LnN3aW5nLkpUYWJsZSIgaWNvbj0iL2NvbS9pbnRlbGxpai91aURlc2lnbmVyL2ljb25zL3RhYmxlLnBuZyIgcmVtb3ZhYmxlPSJmYWxzZSIgYXV0by1jcmVhdGUtYmluZGluZz0idHJ1ZSIgY2FuLWF0dGFjaC1sYWJlbD0iZmFsc2UiPgorICAgICAgICA8ZGVmYXVsdC1jb25zdHJhaW50cyB2c2l6ZS1wb2xpY3k9IjYiIGhzaXplLXBvbGljeT0iNiIgYW5jaG9yPSIwIiBmaWxsPSIzIj4KKyAgICAgICAgICA8cHJlZmVycmVkLXNpemUgd2lkdGg9IjE1MCIgaGVpZ2h0PSI1MCIgLz4KKyAgICAgICAgPC9kZWZhdWx0LWNvbnN0cmFpbnRzPgorICAgICAgPC9pdGVtPgorICAgICAgPGl0ZW0gY2xhc3M9ImphdmF4LnN3aW5nLkpMaXN0IiBpY29uPSIvY29tL2ludGVsbGlqL3VpRGVzaWduZXIvaWNvbnMvbGlzdC5wbmciIHJlbW92YWJsZT0iZmFsc2UiIGF1dG8tY3JlYXRlLWJpbmRpbmc9InRydWUiIGNhbi1hdHRhY2gtbGFiZWw9ImZhbHNlIj4KKyAgICAgICAgPGRlZmF1bHQtY29uc3RyYWludHMgdnNpemUtcG9saWN5PSI2IiBoc2l6ZS1wb2xpY3k9IjIiIGFuY2hvcj0iMCIgZmlsbD0iMyI+CisgICAgICAgICAgPHByZWZlcnJlZC1zaXplIHdpZHRoPSIxNTAiIGhlaWdodD0iNTAiIC8+CisgICAgICAgIDwvZGVmYXVsdC1jb25zdHJhaW50cz4KKyAgICAgIDwvaXRlbT4KKyAgICAgIDxpdGVtIGNsYXNzPSJqYXZheC5zd2luZy5KVHJlZSIgaWNvbj0iL2NvbS9pbnRlbGxpai91aURlc2lnbmVyL2ljb25zL3RyZWUucG5nIiByZW1vdmFibGU9ImZhbHNlIiBhdXRvLWNyZWF0ZS1iaW5kaW5nPSJ0cnVlIiBjYW4tYXR0YWNoLWxhYmVsPSJmYWxzZSI+CisgICAgICAgIDxkZWZhdWx0LWNvbnN0cmFpbnRzIHZzaXplLXBvbGljeT0iNiIgaHNpemUtcG9saWN5PSI2IiBhbmNob3I9IjAiIGZpbGw9IjMiPgorICAgICAgICAgIDxwcmVmZXJyZWQtc2l6ZSB3aWR0aD0iMTUwIiBoZWlnaHQ9IjUwIiAvPgorICAgICAgICA8L2RlZmF1bHQtY29uc3RyYWludHM+CisgICAgICA8L2l0ZW0+CisgICAgICA8aXRlbSBjbGFzcz0iamF2YXguc3dpbmcuSlRhYmJlZFBhbmUiIGljb249Ii9jb20vaW50ZWxsaWovdWlEZXNpZ25lci9pY29ucy90YWJiZWRQYW5lLnBuZyIgcmVtb3ZhYmxlPSJmYWxzZSIgYXV0by1jcmVhdGUtYmluZGluZz0idHJ1ZSIgY2FuLWF0dGFjaC1sYWJlbD0iZmFsc2UiPgorICAgICAgICA8ZGVmYXVsdC1jb25zdHJhaW50cyB2c2l6ZS1wb2xpY3k9IjMiIGhzaXplLXBvbGljeT0iMyIgYW5jaG9yPSIwIiBmaWxsPSIzIj4KKyAgICAgICAgICA8cHJlZmVycmVkLXNpemUgd2lkdGg9IjIwMCIgaGVpZ2h0PSIyMDAiIC8+CisgICAgICAgIDwvZGVmYXVsdC1jb25zdHJhaW50cz4KKyAgICAgIDwvaXRlbT4KKyAgICAgIDxpdGVtIGNsYXNzPSJqYXZheC5zd2luZy5KU3BsaXRQYW5lIiBpY29uPSIvY29tL2ludGVsbGlqL3VpRGVzaWduZXIvaWNvbnMvc3BsaXRQYW5lLnBuZyIgcmVtb3ZhYmxlPSJmYWxzZSIgYXV0by1jcmVhdGUtYmluZGluZz0iZmFsc2UiIGNhbi1hdHRhY2gtbGFiZWw9ImZhbHNlIj4KKyAgICAgICAgPGRlZmF1bHQtY29uc3RyYWludHMgdnNpemUtcG9saWN5PSIzIiBoc2l6ZS1wb2xpY3k9IjMiIGFuY2hvcj0iMCIgZmlsbD0iMyI+CisgICAgICAgICAgPHByZWZlcnJlZC1zaXplIHdpZHRoPSIyMDAiIGhlaWdodD0iMjAwIiAvPgorICAgICAgICA8L2RlZmF1bHQtY29uc3RyYWludHM+CisgICAgICA8L2l0ZW0+CisgICAgICA8aXRlbSBjbGFzcz0iamF2YXguc3dpbmcuSlNwaW5uZXIiIGljb249Ii9jb20vaW50ZWxsaWovdWlEZXNpZ25lci9pY29ucy9zcGlubmVyLnBuZyIgcmVtb3ZhYmxlPSJmYWxzZSIgYXV0by1jcmVhdGUtYmluZGluZz0idHJ1ZSIgY2FuLWF0dGFjaC1sYWJlbD0idHJ1ZSI+CisgICAgICAgIDxkZWZhdWx0LWNvbnN0cmFpbnRzIHZzaXplLXBvbGljeT0iMCIgaHNpemUtcG9saWN5PSI2IiBhbmNob3I9IjgiIGZpbGw9IjEiIC8+CisgICAgICA8L2l0ZW0+CisgICAgICA8aXRlbSBjbGFzcz0iamF2YXguc3dpbmcuSlNsaWRlciIgaWNvbj0iL2NvbS9pbnRlbGxpai91aURlc2lnbmVyL2ljb25zL3NsaWRlci5wbmciIHJlbW92YWJsZT0iZmFsc2UiIGF1dG8tY3JlYXRlLWJpbmRpbmc9InRydWUiIGNhbi1hdHRhY2gtbGFiZWw9ImZhbHNlIj4KKyAgICAgICAgPGRlZmF1bHQtY29uc3RyYWludHMgdnNpemUtcG9saWN5PSIwIiBoc2l6ZS1wb2xpY3k9IjYiIGFuY2hvcj0iOCIgZmlsbD0iMSIgLz4KKyAgICAgIDwvaXRlbT4KKyAgICAgIDxpdGVtIGNsYXNzPSJqYXZheC5zd2luZy5KU2VwYXJhdG9yIiBpY29uPSIvY29tL2ludGVsbGlqL3VpRGVzaWduZXIvaWNvbnMvc2VwYXJhdG9yLnBuZyIgcmVtb3ZhYmxlPSJmYWxzZSIgYXV0by1jcmVhdGUtYmluZGluZz0iZmFsc2UiIGNhbi1hdHRhY2gtbGFiZWw9ImZhbHNlIj4KKyAgICAgICAgPGRlZmF1bHQtY29uc3RyYWludHMgdnNpemUtcG9saWN5PSI2IiBoc2l6ZS1wb2xpY3k9IjYiIGFuY2hvcj0iMCIgZmlsbD0iMyIgLz4KKyAgICAgIDwvaXRlbT4KKyAgICAgIDxpdGVtIGNsYXNzPSJqYXZheC5zd2luZy5KUHJvZ3Jlc3NCYXIiIGljb249Ii9jb20vaW50ZWxsaWovdWlEZXNpZ25lci9pY29ucy9wcm9ncmVzc2Jhci5wbmciIHJlbW92YWJsZT0iZmFsc2UiIGF1dG8tY3JlYXRlLWJpbmRpbmc9InRydWUiIGNhbi1hdHRhY2gtbGFiZWw9ImZhbHNlIj4KKyAgICAgICAgPGRlZmF1bHQtY29uc3RyYWludHMgdnNpemUtcG9saWN5PSIwIiBoc2l6ZS1wb2xpY3k9IjYiIGFuY2hvcj0iMCIgZmlsbD0iMSIgLz4KKyAgICAgIDwvaXRlbT4KKyAgICAgIDxpdGVtIGNsYXNzPSJqYXZheC5zd2luZy5KVG9vbEJhciIgaWNvbj0iL2NvbS9pbnRlbGxpai91aURlc2lnbmVyL2ljb25zL3Rvb2xiYXIucG5nIiByZW1vdmFibGU9ImZhbHNlIiBhdXRvLWNyZWF0ZS1iaW5kaW5nPSJmYWxzZSIgY2FuLWF0dGFjaC1sYWJlbD0iZmFsc2UiPgorICAgICAgICA8ZGVmYXVsdC1jb25zdHJhaW50cyB2c2l6ZS1wb2xpY3k9IjAiIGhzaXplLXBvbGljeT0iNiIgYW5jaG9yPSIwIiBmaWxsPSIxIj4KKyAgICAgICAgICA8cHJlZmVycmVkLXNpemUgd2lkdGg9Ii0xIiBoZWlnaHQ9IjIwIiAvPgorICAgICAgICA8L2RlZmF1bHQtY29uc3RyYWludHM+CisgICAgICA8L2l0ZW0+CisgICAgICA8aXRlbSBjbGFzcz0iamF2YXguc3dpbmcuSlRvb2xCYXIkU2VwYXJhdG9yIiBpY29uPSIvY29tL2ludGVsbGlqL3VpRGVzaWduZXIvaWNvbnMvdG9vbGJhclNlcGFyYXRvci5wbmciIHJlbW92YWJsZT0iZmFsc2UiIGF1dG8tY3JlYXRlLWJpbmRpbmc9ImZhbHNlIiBjYW4tYXR0YWNoLWxhYmVsPSJmYWxzZSI+CisgICAgICAgIDxkZWZhdWx0LWNvbnN0cmFpbnRzIHZzaXplLXBvbGljeT0iMCIgaHNpemUtcG9saWN5PSIwIiBhbmNob3I9IjAiIGZpbGw9IjEiIC8+CisgICAgICA8L2l0ZW0+CisgICAgICA8aXRlbSBjbGFzcz0iamF2YXguc3dpbmcuSlNjcm9sbEJhciIgaWNvbj0iL2NvbS9pbnRlbGxpai91aURlc2lnbmVyL2ljb25zL3Njcm9sbGJhci5wbmciIHJlbW92YWJsZT0iZmFsc2UiIGF1dG8tY3JlYXRlLWJpbmRpbmc9InRydWUiIGNhbi1hdHRhY2gtbGFiZWw9ImZhbHNlIj4KKyAgICAgICAgPGRlZmF1bHQtY29uc3RyYWludHMgdnNpemUtcG9saWN5PSI2IiBoc2l6ZS1wb2xpY3k9IjAiIGFuY2hvcj0iMCIgZmlsbD0iMiIgLz4KKyAgICAgIDwvaXRlbT4KKyAgICA8L2dyb3VwPgorICA8L2NvbXBvbmVudD4KKyAgPGNvbXBvbmVudCBuYW1lPSJQcm9qZWN0RGV0YWlscyI+CisgICAgPG9wdGlvbiBuYW1lPSJwcm9qZWN0TmFtZSIgdmFsdWU9InRlc3RuZyIgLz4KKyAgPC9jb21wb25lbnQ+CisgIDxjb21wb25lbnQgbmFtZT0iUHJvamVjdEZpbGVWZXJzaW9uIiBjb252ZXJ0ZWQ9InRydWUiPgorICAgIDxjb252ZXJ0ZXIgaWQ9ImphdmFlZS1tb2R1bGVzIiAvPgorICAgIDxjb252ZXJ0ZXIgaWQ9InJvci1tb2R1bGVzIiAvPgorICAgIDxjb252ZXJ0ZXIgaWQ9IlNlbGVuYVJ1bkNvbmZUb0RpYW5hIiAvPgorICA8L2NvbXBvbmVudD4KKyAgPGNvbXBvbmVudCBuYW1lPSJQcm9qZWN0S2V5Ij4KKyAgICA8b3B0aW9uIG5hbWU9InN0YXRlIiB2YWx1ZT0icHJvamVjdDovL0M6XGFubmFcdGVzdG5nXHRlc3RuZy5pcHIiIC8+CisgIDwvY29tcG9uZW50PgorICA8Y29tcG9uZW50IG5hbWU9IlByb2plY3RNb2R1bGVNYW5hZ2VyIj4KKyAgICA8bW9kdWxlcz4KKyAgICAgIDxtb2R1bGUgZmlsZXVybD0iZmlsZTovLyRQUk9KRUNUX0RJUiQvdGVzdG5nLmltbCIgZmlsZXBhdGg9IiRQUk9KRUNUX0RJUiQvdGVzdG5nLmltbCIgLz4KKyAgICAgIDxtb2R1bGUgZmlsZXVybD0iZmlsZTovLyRQUk9KRUNUX0RJUiQvdGVzdG5nLWNoaWxkL3Rlc3RuZy1jaGlsZC5pbWwiIGZpbGVwYXRoPSIkUFJPSkVDVF9ESVIkL3Rlc3RuZy1jaGlsZC90ZXN0bmctY2hpbGQuaW1sIiAvPgorICAgIDwvbW9kdWxlcz4KKyAgPC9jb21wb25lbnQ+CisgIDxjb21wb25lbnQgbmFtZT0iUHJvamVjdFJvb3RNYW5hZ2VyIiB2ZXJzaW9uPSIyIiBsYW5ndWFnZUxldmVsPSJKREtfMV81IiBhc3NlcnQta2V5d29yZD0idHJ1ZSIgamRrLTE1PSJ0cnVlIiBwcm9qZWN0LWpkay1uYW1lPSIxLjYiIHByb2plY3QtamRrLXR5cGU9IkphdmFTREsiPgorICAgIDxvdXRwdXQgdXJsPSJmaWxlOi8vJFBST0pFQ1RfRElSJC9vdXQiIC8+CisgIDwvY29tcG9uZW50PgorICA8Y29tcG9uZW50IG5hbWU9IlJlc291cmNlTWFuYWdlckNvbnRhaW5lciI+CisgICAgPG9wdGlvbiBuYW1lPSJteVJlc291cmNlQnVuZGxlcyI+CisgICAgICA8dmFsdWU+CisgICAgICAgIDxsaXN0IHNpemU9IjAiIC8+CisgICAgICA8L3ZhbHVlPgorICAgIDwvb3B0aW9uPgorICA8L2NvbXBvbmVudD4KKyAgPGNvbXBvbmVudCBuYW1lPSJSbWljU2V0dGluZ3MiPgorICAgIDxvcHRpb24gbmFtZT0iSVNfRUFOQUJMRUQiIHZhbHVlPSJmYWxzZSIgLz4KKyAgICA8b3B0aW9uIG5hbWU9IkRFQlVHR0lOR19JTkZPIiB2YWx1ZT0idHJ1ZSIgLz4KKyAgICA8b3B0aW9uIG5hbWU9IkdFTkVSQVRFX05PX1dBUk5JTkdTIiB2YWx1ZT0iZmFsc2UiIC8+CisgICAgPG9wdGlvbiBuYW1lPSJHRU5FUkFURV9JSU9QX1NUVUJTIiB2YWx1ZT0iZmFsc2UiIC8+CisgICAgPG9wdGlvbiBuYW1lPSJBRERJVElPTkFMX09QVElPTlNfU1RSSU5HIiB2YWx1ZT0iIiAvPgorICA8L2NvbXBvbmVudD4KKyAgPGNvbXBvbmVudCBuYW1lPSJXZWJTZXJ2aWNlc1BsdWdpbiIgYWRkUmVxdWlyZWRMaWJyYXJpZXM9InRydWUiIC8+CisgIDxVc2VkUGF0aE1hY3Jvcz4KKyAgICA8bWFjcm8gbmFtZT0icHAiIGRlc2NyaXB0aW9uPSIiIC8+CisgIDwvVXNlZFBhdGhNYWNyb3M+Cis8L3Byb2plY3Q+CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2NvbnZlcnRlci9zY29wZS9vcHRpb25zLmFmdGVyLnhtbCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2NvbnZlcnRlci9zY29wZS9vcHRpb25zLmFmdGVyLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYTE4OTg4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vY29udmVydGVyL3Njb3BlL29wdGlvbnMuYWZ0ZXIueG1sCkBAIC0wLDAgKzEsMjQgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8Y29uZmlnPgorICA8cHJvZmlsZXM+CisgICAgPHByb2ZpbGUgdmVyc2lvbj0iMS4wIiBpc19sb2NrZWQ9ImZhbHNlIj4KKyAgICAgIDxvcHRpb24gbmFtZT0ibXlOYW1lIiB2YWx1ZT0iUHJvamVjdCBEZWZhdWx0IiAvPgorICAgICAgPG9wdGlvbiBuYW1lPSJteUxvY2FsIiB2YWx1ZT0iZmFsc2UiIC8+CisgICAgPC9wcm9maWxlPgorICAgIDxwcm9maWxlIHZlcnNpb249IjEuMCIgaXNfbG9ja2VkPSJmYWxzZSI+CisgICAgICA8b3B0aW9uIG5hbWU9Im15TmFtZSIgdmFsdWU9InAxIiAvPgorICAgICAgPG9wdGlvbiBuYW1lPSJteUxvY2FsIiB2YWx1ZT0iZmFsc2UiIC8+CisgICAgICA8aW5zcGVjdGlvbl90b29sIGNsYXNzPSJDb25zdGFudENvbmRpdGlvbnMiIGVuYWJsZWQ9InRydWUiIGxldmVsPSJXQVJOSU5HIiBlbmFibGVkX2J5X2RlZmF1bHQ9InRydWUiPgorICAgICAgICA8c2NvcGUgbmFtZT0iUHJvZHVjdGlvbiIgbGV2ZWw9IldBUk5JTkciIGVuYWJsZWQ9InRydWUiPgorICAgICAgICAgIDxvcHRpb24gbmFtZT0iU1VHR0VTVF9OVUxMQUJMRV9BTk5PVEFUSU9OUyIgdmFsdWU9ImZhbHNlIiAvPgorICAgICAgICAgIDxvcHRpb24gbmFtZT0iRE9OVF9SRVBPUlRfVFJVRV9BU1NFUlRfU1RBVEVNRU5UUyIgdmFsdWU9ImZhbHNlIiAvPgorICAgICAgICA8L3Njb3BlPgorICAgICAgICA8b3B0aW9uIG5hbWU9IlNVR0dFU1RfTlVMTEFCTEVfQU5OT1RBVElPTlMiIHZhbHVlPSJ0cnVlIiAvPgorICAgICAgICA8b3B0aW9uIG5hbWU9IkRPTlRfUkVQT1JUX1RSVUVfQVNTRVJUX1NUQVRFTUVOVFMiIHZhbHVlPSJ0cnVlIiAvPgorICAgICAgPC9pbnNwZWN0aW9uX3Rvb2w+CisgICAgPC9wcm9maWxlPgorICA8L3Byb2ZpbGVzPgorICA8b3B0aW9uIG5hbWU9IlBST0pFQ1RfUFJPRklMRSIgdmFsdWU9InAxIiAvPgorICA8b3B0aW9uIG5hbWU9IlVTRV9QUk9KRUNUX1BST0ZJTEUiIHZhbHVlPSJ0cnVlIiAvPgorICA8dmVyc2lvbiB2YWx1ZT0iMS4wIiAvPgorPC9jb25maWc+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vY29udmVydGVyL3Njb3BlL29wdGlvbnMuaXByIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vY29udmVydGVyL3Njb3BlL29wdGlvbnMuaXByCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdlYzkwZTYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9jb252ZXJ0ZXIvc2NvcGUvb3B0aW9ucy5pcHIKQEAgLTAsMCArMSwyNzggQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8cHJvamVjdCByZWxhdGl2ZVBhdGhzPSJmYWxzZSIgdmVyc2lvbj0iNCI+CisgIDxjb21wb25lbnQgbmFtZT0iQW50Q29uZmlndXJhdGlvbiI+CisgICAgPGRlZmF1bHRBbnQgYnVuZGxlZEFudD0idHJ1ZSIgLz4KKyAgPC9jb21wb25lbnQ+CisgIDxjb21wb25lbnQgbmFtZT0iQnVpbGRKYXJQcm9qZWN0U2V0dGluZ3MiPgorICAgIDxvcHRpb24gbmFtZT0iQlVJTERfSkFSU19PTl9NQUtFIiB2YWx1ZT0iZmFsc2UiIC8+CisgIDwvY29tcG9uZW50PgorICA8Y29tcG9uZW50IG5hbWU9IkNvZGVTdHlsZVNldHRpbmdzTWFuYWdlciI+CisgICAgPG9wdGlvbiBuYW1lPSJQRVJfUFJPSkVDVF9TRVRUSU5HUyIgLz4KKyAgICA8b3B0aW9uIG5hbWU9IlVTRV9QRVJfUFJPSkVDVF9TRVRUSU5HUyIgdmFsdWU9ImZhbHNlIiAvPgorICA8L2NvbXBvbmVudD4KKyAgPGNvbXBvbmVudCBuYW1lPSJDb21waWxlckNvbmZpZ3VyYXRpb24iPgorICAgIDxvcHRpb24gbmFtZT0iREVGQVVMVF9DT01QSUxFUiIgdmFsdWU9IkphdmFjIiAvPgorICAgIDxvcHRpb24gbmFtZT0iREVQTE9ZX0FGVEVSX01BS0UiIHZhbHVlPSIwIiAvPgorICAgIDxyZXNvdXJjZUV4dGVuc2lvbnM+CisgICAgICA8ZW50cnkgbmFtZT0iLitcLihwcm9wZXJ0aWVzfHhtbHxodG1sfGR0ZHx0bGQpIiAvPgorICAgICAgPGVudHJ5IG5hbWU9Ii4rXC4oZ2lmfHBuZ3xqcGVnfGpwZykiIC8+CisgICAgPC9yZXNvdXJjZUV4dGVuc2lvbnM+CisgICAgPHdpbGRjYXJkUmVzb3VyY2VQYXR0ZXJucz4KKyAgICAgIDxlbnRyeSBuYW1lPSI/Ki5wcm9wZXJ0aWVzIiAvPgorICAgICAgPGVudHJ5IG5hbWU9Ij8qLnhtbCIgLz4KKyAgICAgIDxlbnRyeSBuYW1lPSI/Ki5naWYiIC8+CisgICAgICA8ZW50cnkgbmFtZT0iPyoucG5nIiAvPgorICAgICAgPGVudHJ5IG5hbWU9Ij8qLmpwZWciIC8+CisgICAgICA8ZW50cnkgbmFtZT0iPyouanBnIiAvPgorICAgICAgPGVudHJ5IG5hbWU9Ij8qLmh0bWwiIC8+CisgICAgICA8ZW50cnkgbmFtZT0iPyouZHRkIiAvPgorICAgICAgPGVudHJ5IG5hbWU9Ij8qLnRsZCIgLz4KKyAgICAgIDxlbnRyeSBuYW1lPSI/Ki5mdGwiIC8+CisgICAgPC93aWxkY2FyZFJlc291cmNlUGF0dGVybnM+CisgIDwvY29tcG9uZW50PgorICA8Y29tcG9uZW50IG5hbWU9IkNvcHlyaWdodE1hbmFnZXIiIGRlZmF1bHQ9IiI+CisgICAgPG1vZHVsZTJjb3B5cmlnaHQgLz4KKyAgPC9jb21wb25lbnQ+CisgIDxjb21wb25lbnQgbmFtZT0iRGF0YVNvdXJjZU1hbmFnZXJJbXBsIj4KKyAgICA8ZXh0ZXJuYWxpemVkIC8+CisgIDwvY29tcG9uZW50PgorICA8Y29tcG9uZW50IG5hbWU9IkRlcGVuZGVuY3lWYWxpZGF0aW9uTWFuYWdlciI+CisgICAgPG9wdGlvbiBuYW1lPSJTS0lQX0lNUE9SVF9TVEFURU1FTlRTIiB2YWx1ZT0iZmFsc2UiIC8+CisgIDwvY29tcG9uZW50PgorICA8Y29tcG9uZW50IG5hbWU9IkVjbGlwc2VDb21waWxlclNldHRpbmdzIj4KKyAgICA8b3B0aW9uIG5hbWU9IkRFQlVHR0lOR19JTkZPIiB2YWx1ZT0idHJ1ZSIgLz4KKyAgICA8b3B0aW9uIG5hbWU9IkdFTkVSQVRFX05PX1dBUk5JTkdTIiB2YWx1ZT0idHJ1ZSIgLz4KKyAgICA8b3B0aW9uIG5hbWU9IkRFUFJFQ0FUSU9OIiB2YWx1ZT0iZmFsc2UiIC8+CisgICAgPG9wdGlvbiBuYW1lPSJBRERJVElPTkFMX09QVElPTlNfU1RSSU5HIiB2YWx1ZT0iIiAvPgorICAgIDxvcHRpb24gbmFtZT0iTUFYSU1VTV9IRUFQX1NJWkUiIHZhbHVlPSIxMjgiIC8+CisgIDwvY29tcG9uZW50PgorICA8Y29tcG9uZW50IG5hbWU9IkVjbGlwc2VFbWJlZGRlZENvbXBpbGVyU2V0dGluZ3MiPgorICAgIDxvcHRpb24gbmFtZT0iREVCVUdHSU5HX0lORk8iIHZhbHVlPSJ0cnVlIiAvPgorICAgIDxvcHRpb24gbmFtZT0iR0VORVJBVEVfTk9fV0FSTklOR1MiIHZhbHVlPSJ0cnVlIiAvPgorICAgIDxvcHRpb24gbmFtZT0iREVQUkVDQVRJT04iIHZhbHVlPSJmYWxzZSIgLz4KKyAgICA8b3B0aW9uIG5hbWU9IkFERElUSU9OQUxfT1BUSU9OU19TVFJJTkciIHZhbHVlPSIiIC8+CisgICAgPG9wdGlvbiBuYW1lPSJNQVhJTVVNX0hFQVBfU0laRSIgdmFsdWU9IjEyOCIgLz4KKyAgPC9jb21wb25lbnQ+CisgIDxjb21wb25lbnQgbmFtZT0iRW5jb2RpbmciIHVzZVVURkd1ZXNzaW5nPSJ0cnVlIiBuYXRpdmUyQXNjaWlGb3JQcm9wZXJ0aWVzRmlsZXM9ImZhbHNlIiAvPgorICA8Y29tcG9uZW50IG5hbWU9IkVudHJ5UG9pbnRzTWFuYWdlciI+CisgICAgPGVudHJ5X3BvaW50cyB2ZXJzaW9uPSIyLjAiIC8+CisgIDwvY29tcG9uZW50PgorICA8Y29tcG9uZW50IG5hbWU9Ikluc3BlY3Rpb25Qcm9qZWN0UHJvZmlsZU1hbmFnZXIiPgorICAgIDxvcHRpb24gbmFtZT0iUFJPSkVDVF9QUk9GSUxFIiB2YWx1ZT0icDEiIC8+CisgICAgPHNjb3Blcz4KKyAgICAgIDxzY29wZSBwcm9maWxlPSJQcm9qZWN0IERlZmF1bHQiIG5hbWU9IlByb2R1Y3Rpb24iIC8+CisgICAgPC9zY29wZXM+CisgICAgPHByb2ZpbGVzPgorICAgICAgPHByb2ZpbGUgdmVyc2lvbj0iMS4wIiBpc19sb2NrZWQ9ImZhbHNlIj4KKyAgICAgICAgPG9wdGlvbiBuYW1lPSJteU5hbWUiIHZhbHVlPSJQcm9qZWN0IERlZmF1bHQiIC8+CisgICAgICAgIDxvcHRpb24gbmFtZT0ibXlMb2NhbCIgdmFsdWU9ImZhbHNlIiAvPgorICAgICAgPC9wcm9maWxlPgorICAgICAgPHByb2ZpbGUgdmVyc2lvbj0iMS4wIiBpc19sb2NrZWQ9ImZhbHNlIj4KKyAgICAgICAgPG9wdGlvbiBuYW1lPSJteU5hbWUiIHZhbHVlPSJwMSIgLz4KKyAgICAgICAgPG9wdGlvbiBuYW1lPSJteUxvY2FsIiB2YWx1ZT0iZmFsc2UiIC8+CisgICAgICAgIDxpbnNwZWN0aW9uX3Rvb2wgY2xhc3M9IkNvbnN0YW50Q29uZGl0aW9ucyIgbGV2ZWw9IldBUk5JTkciIGVuYWJsZWQ9InRydWUiPgorICAgICAgICAgICAgPG9wdGlvbiBuYW1lPSJTVUdHRVNUX05VTExBQkxFX0FOTk9UQVRJT05TIiB2YWx1ZT0idHJ1ZSIgLz4KKyAgICAgICAgICAgIDxvcHRpb24gbmFtZT0iRE9OVF9SRVBPUlRfVFJVRV9BU1NFUlRfU1RBVEVNRU5UUyIgdmFsdWU9InRydWUiIC8+CisgICAgICAgIDwvaW5zcGVjdGlvbl90b29sPgorICAgICAgPC9wcm9maWxlPgorICAgIDwvcHJvZmlsZXM+CisgICAgPGxpc3Qgc2l6ZT0iNSI+CisgICAgICA8aXRlbSBpbmRleD0iMCIgY2xhc3M9ImphdmEubGFuZy5TdHJpbmciIGl0ZW12YWx1ZT0iVFlQTyIgLz4KKyAgICAgIDxpdGVtIGluZGV4PSIxIiBjbGFzcz0iamF2YS5sYW5nLlN0cmluZyIgaXRlbXZhbHVlPSJTRVJWRVIgUFJPQkxFTSIgLz4KKyAgICAgIDxpdGVtIGluZGV4PSIyIiBjbGFzcz0iamF2YS5sYW5nLlN0cmluZyIgaXRlbXZhbHVlPSJJTkZPIiAvPgorICAgICAgPGl0ZW0gaW5kZXg9IjMiIGNsYXNzPSJqYXZhLmxhbmcuU3RyaW5nIiBpdGVtdmFsdWU9IldBUk5JTkciIC8+CisgICAgICA8aXRlbSBpbmRleD0iNCIgY2xhc3M9ImphdmEubGFuZy5TdHJpbmciIGl0ZW12YWx1ZT0iRVJST1IiIC8+CisgICAgPC9saXN0PgorICA8L2NvbXBvbmVudD4KKyAgPGNvbXBvbmVudCBuYW1lPSJKYXZhY1NldHRpbmdzIj4KKyAgICA8b3B0aW9uIG5hbWU9IkRFQlVHR0lOR19JTkZPIiB2YWx1ZT0idHJ1ZSIgLz4KKyAgICA8b3B0aW9uIG5hbWU9IkdFTkVSQVRFX05PX1dBUk5JTkdTIiB2YWx1ZT0iZmFsc2UiIC8+CisgICAgPG9wdGlvbiBuYW1lPSJERVBSRUNBVElPTiIgdmFsdWU9InRydWUiIC8+CisgICAgPG9wdGlvbiBuYW1lPSJBRERJVElPTkFMX09QVElPTlNfU1RSSU5HIiB2YWx1ZT0iIiAvPgorICAgIDxvcHRpb24gbmFtZT0iTUFYSU1VTV9IRUFQX1NJWkUiIHZhbHVlPSIxMjgiIC8+CisgIDwvY29tcG9uZW50PgorICA8Y29tcG9uZW50IG5hbWU9IkphdmFkb2NHZW5lcmF0aW9uTWFuYWdlciI+CisgICAgPG9wdGlvbiBuYW1lPSJPVVRQVVRfRElSRUNUT1JZIiAvPgorICAgIDxvcHRpb24gbmFtZT0iT1BUSU9OX1NDT1BFIiB2YWx1ZT0icHJvdGVjdGVkIiAvPgorICAgIDxvcHRpb24gbmFtZT0iT1BUSU9OX0hJRVJBUkNIWSIgdmFsdWU9InRydWUiIC8+CisgICAgPG9wdGlvbiBuYW1lPSJPUFRJT05fTkFWSUdBVE9SIiB2YWx1ZT0idHJ1ZSIgLz4KKyAgICA8b3B0aW9uIG5hbWU9Ik9QVElPTl9JTkRFWCIgdmFsdWU9InRydWUiIC8+CisgICAgPG9wdGlvbiBuYW1lPSJPUFRJT05fU0VQQVJBVEVfSU5ERVgiIHZhbHVlPSJ0cnVlIiAvPgorICAgIDxvcHRpb24gbmFtZT0iT1BUSU9OX0RPQ1VNRU5UX1RBR19VU0UiIHZhbHVlPSJmYWxzZSIgLz4KKyAgICA8b3B0aW9uIG5hbWU9Ik9QVElPTl9ET0NVTUVOVF9UQUdfQVVUSE9SIiB2YWx1ZT0iZmFsc2UiIC8+CisgICAgPG9wdGlvbiBuYW1lPSJPUFRJT05fRE9DVU1FTlRfVEFHX1ZFUlNJT04iIHZhbHVlPSJmYWxzZSIgLz4KKyAgICA8b3B0aW9uIG5hbWU9Ik9QVElPTl9ET0NVTUVOVF9UQUdfREVQUkVDQVRFRCIgdmFsdWU9InRydWUiIC8+CisgICAgPG9wdGlvbiBuYW1lPSJPUFRJT05fREVQUkVDQVRFRF9MSVNUIiB2YWx1ZT0idHJ1ZSIgLz4KKyAgICA8b3B0aW9uIG5hbWU9Ik9USEVSX09QVElPTlMiIHZhbHVlPSIiIC8+CisgICAgPG9wdGlvbiBuYW1lPSJIRUFQX1NJWkUiIC8+CisgICAgPG9wdGlvbiBuYW1lPSJMT0NBTEUiIC8+CisgICAgPG9wdGlvbiBuYW1lPSJPUEVOX0lOX0JST1dTRVIiIHZhbHVlPSJ0cnVlIiAvPgorICA8L2NvbXBvbmVudD4KKyAgPGNvbXBvbmVudCBuYW1lPSJKaWtlc1NldHRpbmdzIj4KKyAgICA8b3B0aW9uIG5hbWU9IkpJS0VTX1BBVEgiIHZhbHVlPSIiIC8+CisgICAgPG9wdGlvbiBuYW1lPSJERUJVR0dJTkdfSU5GTyIgdmFsdWU9InRydWUiIC8+CisgICAgPG9wdGlvbiBuYW1lPSJERVBSRUNBVElPTiIgdmFsdWU9InRydWUiIC8+CisgICAgPG9wdGlvbiBuYW1lPSJHRU5FUkFURV9OT19XQVJOSU5HUyIgdmFsdWU9ImZhbHNlIiAvPgorICAgIDxvcHRpb24gbmFtZT0iSVNfRU1BQ1NfRVJST1JTX01PREUiIHZhbHVlPSJ0cnVlIiAvPgorICAgIDxvcHRpb24gbmFtZT0iQURESVRJT05BTF9PUFRJT05TX1NUUklORyIgdmFsdWU9IiIgLz4KKyAgPC9jb21wb25lbnQ+CisgIDxjb21wb25lbnQgbmFtZT0iUGFsZXR0ZTIiPgorICAgIDxncm91cCBuYW1lPSJTd2luZyI+CisgICAgICA8aXRlbSBjbGFzcz0iY29tLmludGVsbGlqLnVpRGVzaWduZXIuSFNwYWNlciIgdG9vbHRpcC10ZXh0PSJIb3Jpem9udGFsIFNwYWNlciIgaWNvbj0iL2NvbS9pbnRlbGxpai91aURlc2lnbmVyL2ljb25zL2hzcGFjZXIucG5nIiByZW1vdmFibGU9ImZhbHNlIiBhdXRvLWNyZWF0ZS1iaW5kaW5nPSJmYWxzZSIgY2FuLWF0dGFjaC1sYWJlbD0iZmFsc2UiPgorICAgICAgICA8ZGVmYXVsdC1jb25zdHJhaW50cyB2c2l6ZS1wb2xpY3k9IjEiIGhzaXplLXBvbGljeT0iNiIgYW5jaG9yPSIwIiBmaWxsPSIxIiAvPgorICAgICAgPC9pdGVtPgorICAgICAgPGl0ZW0gY2xhc3M9ImNvbS5pbnRlbGxpai51aURlc2lnbmVyLlZTcGFjZXIiIHRvb2x0aXAtdGV4dD0iVmVydGljYWwgU3BhY2VyIiBpY29uPSIvY29tL2ludGVsbGlqL3VpRGVzaWduZXIvaWNvbnMvdnNwYWNlci5wbmciIHJlbW92YWJsZT0iZmFsc2UiIGF1dG8tY3JlYXRlLWJpbmRpbmc9ImZhbHNlIiBjYW4tYXR0YWNoLWxhYmVsPSJmYWxzZSI+CisgICAgICAgIDxkZWZhdWx0LWNvbnN0cmFpbnRzIHZzaXplLXBvbGljeT0iNiIgaHNpemUtcG9saWN5PSIxIiBhbmNob3I9IjAiIGZpbGw9IjIiIC8+CisgICAgICA8L2l0ZW0+CisgICAgICA8aXRlbSBjbGFzcz0iamF2YXguc3dpbmcuSlBhbmVsIiBpY29uPSIvY29tL2ludGVsbGlqL3VpRGVzaWduZXIvaWNvbnMvcGFuZWwucG5nIiByZW1vdmFibGU9ImZhbHNlIiBhdXRvLWNyZWF0ZS1iaW5kaW5nPSJmYWxzZSIgY2FuLWF0dGFjaC1sYWJlbD0iZmFsc2UiPgorICAgICAgICA8ZGVmYXVsdC1jb25zdHJhaW50cyB2c2l6ZS1wb2xpY3k9IjMiIGhzaXplLXBvbGljeT0iMyIgYW5jaG9yPSIwIiBmaWxsPSIzIiAvPgorICAgICAgPC9pdGVtPgorICAgICAgPGl0ZW0gY2xhc3M9ImphdmF4LnN3aW5nLkpTY3JvbGxQYW5lIiBpY29uPSIvY29tL2ludGVsbGlqL3VpRGVzaWduZXIvaWNvbnMvc2Nyb2xsUGFuZS5wbmciIHJlbW92YWJsZT0iZmFsc2UiIGF1dG8tY3JlYXRlLWJpbmRpbmc9ImZhbHNlIiBjYW4tYXR0YWNoLWxhYmVsPSJ0cnVlIj4KKyAgICAgICAgPGRlZmF1bHQtY29uc3RyYWludHMgdnNpemUtcG9saWN5PSI3IiBoc2l6ZS1wb2xpY3k9IjciIGFuY2hvcj0iMCIgZmlsbD0iMyIgLz4KKyAgICAgIDwvaXRlbT4KKyAgICAgIDxpdGVtIGNsYXNzPSJqYXZheC5zd2luZy5KQnV0dG9uIiBpY29uPSIvY29tL2ludGVsbGlqL3VpRGVzaWduZXIvaWNvbnMvYnV0dG9uLnBuZyIgcmVtb3ZhYmxlPSJmYWxzZSIgYXV0by1jcmVhdGUtYmluZGluZz0idHJ1ZSIgY2FuLWF0dGFjaC1sYWJlbD0iZmFsc2UiPgorICAgICAgICA8ZGVmYXVsdC1jb25zdHJhaW50cyB2c2l6ZS1wb2xpY3k9IjAiIGhzaXplLXBvbGljeT0iMyIgYW5jaG9yPSIwIiBmaWxsPSIxIiAvPgorICAgICAgICA8aW5pdGlhbC12YWx1ZXM+CisgICAgICAgICAgPHByb3BlcnR5IG5hbWU9InRleHQiIHZhbHVlPSJCdXR0b24iIC8+CisgICAgICAgIDwvaW5pdGlhbC12YWx1ZXM+CisgICAgICA8L2l0ZW0+CisgICAgICA8aXRlbSBjbGFzcz0iamF2YXguc3dpbmcuSlJhZGlvQnV0dG9uIiBpY29uPSIvY29tL2ludGVsbGlqL3VpRGVzaWduZXIvaWNvbnMvcmFkaW9CdXR0b24ucG5nIiByZW1vdmFibGU9ImZhbHNlIiBhdXRvLWNyZWF0ZS1iaW5kaW5nPSJ0cnVlIiBjYW4tYXR0YWNoLWxhYmVsPSJmYWxzZSI+CisgICAgICAgIDxkZWZhdWx0LWNvbnN0cmFpbnRzIHZzaXplLXBvbGljeT0iMCIgaHNpemUtcG9saWN5PSIzIiBhbmNob3I9IjgiIGZpbGw9IjAiIC8+CisgICAgICAgIDxpbml0aWFsLXZhbHVlcz4KKyAgICAgICAgICA8cHJvcGVydHkgbmFtZT0idGV4dCIgdmFsdWU9IlJhZGlvQnV0dG9uIiAvPgorICAgICAgICA8L2luaXRpYWwtdmFsdWVzPgorICAgICAgPC9pdGVtPgorICAgICAgPGl0ZW0gY2xhc3M9ImphdmF4LnN3aW5nLkpDaGVja0JveCIgaWNvbj0iL2NvbS9pbnRlbGxpai91aURlc2lnbmVyL2ljb25zL2NoZWNrQm94LnBuZyIgcmVtb3ZhYmxlPSJmYWxzZSIgYXV0by1jcmVhdGUtYmluZGluZz0idHJ1ZSIgY2FuLWF0dGFjaC1sYWJlbD0iZmFsc2UiPgorICAgICAgICA8ZGVmYXVsdC1jb25zdHJhaW50cyB2c2l6ZS1wb2xpY3k9IjAiIGhzaXplLXBvbGljeT0iMyIgYW5jaG9yPSI4IiBmaWxsPSIwIiAvPgorICAgICAgICA8aW5pdGlhbC12YWx1ZXM+CisgICAgICAgICAgPHByb3BlcnR5IG5hbWU9InRleHQiIHZhbHVlPSJDaGVja0JveCIgLz4KKyAgICAgICAgPC9pbml0aWFsLXZhbHVlcz4KKyAgICAgIDwvaXRlbT4KKyAgICAgIDxpdGVtIGNsYXNzPSJqYXZheC5zd2luZy5KTGFiZWwiIGljb249Ii9jb20vaW50ZWxsaWovdWlEZXNpZ25lci9pY29ucy9sYWJlbC5wbmciIHJlbW92YWJsZT0iZmFsc2UiIGF1dG8tY3JlYXRlLWJpbmRpbmc9ImZhbHNlIiBjYW4tYXR0YWNoLWxhYmVsPSJmYWxzZSI+CisgICAgICAgIDxkZWZhdWx0LWNvbnN0cmFpbnRzIHZzaXplLXBvbGljeT0iMCIgaHNpemUtcG9saWN5PSIwIiBhbmNob3I9IjgiIGZpbGw9IjAiIC8+CisgICAgICAgIDxpbml0aWFsLXZhbHVlcz4KKyAgICAgICAgICA8cHJvcGVydHkgbmFtZT0idGV4dCIgdmFsdWU9IkxhYmVsIiAvPgorICAgICAgICA8L2luaXRpYWwtdmFsdWVzPgorICAgICAgPC9pdGVtPgorICAgICAgPGl0ZW0gY2xhc3M9ImphdmF4LnN3aW5nLkpUZXh0RmllbGQiIGljb249Ii9jb20vaW50ZWxsaWovdWlEZXNpZ25lci9pY29ucy90ZXh0RmllbGQucG5nIiByZW1vdmFibGU9ImZhbHNlIiBhdXRvLWNyZWF0ZS1iaW5kaW5nPSJ0cnVlIiBjYW4tYXR0YWNoLWxhYmVsPSJ0cnVlIj4KKyAgICAgICAgPGRlZmF1bHQtY29uc3RyYWludHMgdnNpemUtcG9saWN5PSIwIiBoc2l6ZS1wb2xpY3k9IjYiIGFuY2hvcj0iOCIgZmlsbD0iMSI+CisgICAgICAgICAgPHByZWZlcnJlZC1zaXplIHdpZHRoPSIxNTAiIGhlaWdodD0iLTEiIC8+CisgICAgICAgIDwvZGVmYXVsdC1jb25zdHJhaW50cz4KKyAgICAgIDwvaXRlbT4KKyAgICAgIDxpdGVtIGNsYXNzPSJqYXZheC5zd2luZy5KUGFzc3dvcmRGaWVsZCIgaWNvbj0iL2NvbS9pbnRlbGxpai91aURlc2lnbmVyL2ljb25zL3Bhc3N3b3JkRmllbGQucG5nIiByZW1vdmFibGU9ImZhbHNlIiBhdXRvLWNyZWF0ZS1iaW5kaW5nPSJ0cnVlIiBjYW4tYXR0YWNoLWxhYmVsPSJ0cnVlIj4KKyAgICAgICAgPGRlZmF1bHQtY29uc3RyYWludHMgdnNpemUtcG9saWN5PSIwIiBoc2l6ZS1wb2xpY3k9IjYiIGFuY2hvcj0iOCIgZmlsbD0iMSI+CisgICAgICAgICAgPHByZWZlcnJlZC1zaXplIHdpZHRoPSIxNTAiIGhlaWdodD0iLTEiIC8+CisgICAgICAgIDwvZGVmYXVsdC1jb25zdHJhaW50cz4KKyAgICAgIDwvaXRlbT4KKyAgICAgIDxpdGVtIGNsYXNzPSJqYXZheC5zd2luZy5KRm9ybWF0dGVkVGV4dEZpZWxkIiBpY29uPSIvY29tL2ludGVsbGlqL3VpRGVzaWduZXIvaWNvbnMvZm9ybWF0dGVkVGV4dEZpZWxkLnBuZyIgcmVtb3ZhYmxlPSJmYWxzZSIgYXV0by1jcmVhdGUtYmluZGluZz0idHJ1ZSIgY2FuLWF0dGFjaC1sYWJlbD0idHJ1ZSI+CisgICAgICAgIDxkZWZhdWx0LWNvbnN0cmFpbnRzIHZzaXplLXBvbGljeT0iMCIgaHNpemUtcG9saWN5PSI2IiBhbmNob3I9IjgiIGZpbGw9IjEiPgorICAgICAgICAgIDxwcmVmZXJyZWQtc2l6ZSB3aWR0aD0iMTUwIiBoZWlnaHQ9Ii0xIiAvPgorICAgICAgICA8L2RlZmF1bHQtY29uc3RyYWludHM+CisgICAgICA8L2l0ZW0+CisgICAgICA8aXRlbSBjbGFzcz0iamF2YXguc3dpbmcuSlRleHRBcmVhIiBpY29uPSIvY29tL2ludGVsbGlqL3VpRGVzaWduZXIvaWNvbnMvdGV4dEFyZWEucG5nIiByZW1vdmFibGU9ImZhbHNlIiBhdXRvLWNyZWF0ZS1iaW5kaW5nPSJ0cnVlIiBjYW4tYXR0YWNoLWxhYmVsPSJ0cnVlIj4KKyAgICAgICAgPGRlZmF1bHQtY29uc3RyYWludHMgdnNpemUtcG9saWN5PSI2IiBoc2l6ZS1wb2xpY3k9IjYiIGFuY2hvcj0iMCIgZmlsbD0iMyI+CisgICAgICAgICAgPHByZWZlcnJlZC1zaXplIHdpZHRoPSIxNTAiIGhlaWdodD0iNTAiIC8+CisgICAgICAgIDwvZGVmYXVsdC1jb25zdHJhaW50cz4KKyAgICAgIDwvaXRlbT4KKyAgICAgIDxpdGVtIGNsYXNzPSJqYXZheC5zd2luZy5KVGV4dFBhbmUiIGljb249Ii9jb20vaW50ZWxsaWovdWlEZXNpZ25lci9pY29ucy90ZXh0UGFuZS5wbmciIHJlbW92YWJsZT0iZmFsc2UiIGF1dG8tY3JlYXRlLWJpbmRpbmc9InRydWUiIGNhbi1hdHRhY2gtbGFiZWw9InRydWUiPgorICAgICAgICA8ZGVmYXVsdC1jb25zdHJhaW50cyB2c2l6ZS1wb2xpY3k9IjYiIGhzaXplLXBvbGljeT0iNiIgYW5jaG9yPSIwIiBmaWxsPSIzIj4KKyAgICAgICAgICA8cHJlZmVycmVkLXNpemUgd2lkdGg9IjE1MCIgaGVpZ2h0PSI1MCIgLz4KKyAgICAgICAgPC9kZWZhdWx0LWNvbnN0cmFpbnRzPgorICAgICAgPC9pdGVtPgorICAgICAgPGl0ZW0gY2xhc3M9ImphdmF4LnN3aW5nLkpFZGl0b3JQYW5lIiBpY29uPSIvY29tL2ludGVsbGlqL3VpRGVzaWduZXIvaWNvbnMvZWRpdG9yUGFuZS5wbmciIHJlbW92YWJsZT0iZmFsc2UiIGF1dG8tY3JlYXRlLWJpbmRpbmc9InRydWUiIGNhbi1hdHRhY2gtbGFiZWw9InRydWUiPgorICAgICAgICA8ZGVmYXVsdC1jb25zdHJhaW50cyB2c2l6ZS1wb2xpY3k9IjYiIGhzaXplLXBvbGljeT0iNiIgYW5jaG9yPSIwIiBmaWxsPSIzIj4KKyAgICAgICAgICA8cHJlZmVycmVkLXNpemUgd2lkdGg9IjE1MCIgaGVpZ2h0PSI1MCIgLz4KKyAgICAgICAgPC9kZWZhdWx0LWNvbnN0cmFpbnRzPgorICAgICAgPC9pdGVtPgorICAgICAgPGl0ZW0gY2xhc3M9ImphdmF4LnN3aW5nLkpDb21ib0JveCIgaWNvbj0iL2NvbS9pbnRlbGxpai91aURlc2lnbmVyL2ljb25zL2NvbWJvQm94LnBuZyIgcmVtb3ZhYmxlPSJmYWxzZSIgYXV0by1jcmVhdGUtYmluZGluZz0idHJ1ZSIgY2FuLWF0dGFjaC1sYWJlbD0idHJ1ZSI+CisgICAgICAgIDxkZWZhdWx0LWNvbnN0cmFpbnRzIHZzaXplLXBvbGljeT0iMCIgaHNpemUtcG9saWN5PSIyIiBhbmNob3I9IjgiIGZpbGw9IjEiIC8+CisgICAgICA8L2l0ZW0+CisgICAgICA8aXRlbSBjbGFzcz0iamF2YXguc3dpbmcuSlRhYmxlIiBpY29uPSIvY29tL2ludGVsbGlqL3VpRGVzaWduZXIvaWNvbnMvdGFibGUucG5nIiByZW1vdmFibGU9ImZhbHNlIiBhdXRvLWNyZWF0ZS1iaW5kaW5nPSJ0cnVlIiBjYW4tYXR0YWNoLWxhYmVsPSJmYWxzZSI+CisgICAgICAgIDxkZWZhdWx0LWNvbnN0cmFpbnRzIHZzaXplLXBvbGljeT0iNiIgaHNpemUtcG9saWN5PSI2IiBhbmNob3I9IjAiIGZpbGw9IjMiPgorICAgICAgICAgIDxwcmVmZXJyZWQtc2l6ZSB3aWR0aD0iMTUwIiBoZWlnaHQ9IjUwIiAvPgorICAgICAgICA8L2RlZmF1bHQtY29uc3RyYWludHM+CisgICAgICA8L2l0ZW0+CisgICAgICA8aXRlbSBjbGFzcz0iamF2YXguc3dpbmcuSkxpc3QiIGljb249Ii9jb20vaW50ZWxsaWovdWlEZXNpZ25lci9pY29ucy9saXN0LnBuZyIgcmVtb3ZhYmxlPSJmYWxzZSIgYXV0by1jcmVhdGUtYmluZGluZz0idHJ1ZSIgY2FuLWF0dGFjaC1sYWJlbD0iZmFsc2UiPgorICAgICAgICA8ZGVmYXVsdC1jb25zdHJhaW50cyB2c2l6ZS1wb2xpY3k9IjYiIGhzaXplLXBvbGljeT0iMiIgYW5jaG9yPSIwIiBmaWxsPSIzIj4KKyAgICAgICAgICA8cHJlZmVycmVkLXNpemUgd2lkdGg9IjE1MCIgaGVpZ2h0PSI1MCIgLz4KKyAgICAgICAgPC9kZWZhdWx0LWNvbnN0cmFpbnRzPgorICAgICAgPC9pdGVtPgorICAgICAgPGl0ZW0gY2xhc3M9ImphdmF4LnN3aW5nLkpUcmVlIiBpY29uPSIvY29tL2ludGVsbGlqL3VpRGVzaWduZXIvaWNvbnMvdHJlZS5wbmciIHJlbW92YWJsZT0iZmFsc2UiIGF1dG8tY3JlYXRlLWJpbmRpbmc9InRydWUiIGNhbi1hdHRhY2gtbGFiZWw9ImZhbHNlIj4KKyAgICAgICAgPGRlZmF1bHQtY29uc3RyYWludHMgdnNpemUtcG9saWN5PSI2IiBoc2l6ZS1wb2xpY3k9IjYiIGFuY2hvcj0iMCIgZmlsbD0iMyI+CisgICAgICAgICAgPHByZWZlcnJlZC1zaXplIHdpZHRoPSIxNTAiIGhlaWdodD0iNTAiIC8+CisgICAgICAgIDwvZGVmYXVsdC1jb25zdHJhaW50cz4KKyAgICAgIDwvaXRlbT4KKyAgICAgIDxpdGVtIGNsYXNzPSJqYXZheC5zd2luZy5KVGFiYmVkUGFuZSIgaWNvbj0iL2NvbS9pbnRlbGxpai91aURlc2lnbmVyL2ljb25zL3RhYmJlZFBhbmUucG5nIiByZW1vdmFibGU9ImZhbHNlIiBhdXRvLWNyZWF0ZS1iaW5kaW5nPSJ0cnVlIiBjYW4tYXR0YWNoLWxhYmVsPSJmYWxzZSI+CisgICAgICAgIDxkZWZhdWx0LWNvbnN0cmFpbnRzIHZzaXplLXBvbGljeT0iMyIgaHNpemUtcG9saWN5PSIzIiBhbmNob3I9IjAiIGZpbGw9IjMiPgorICAgICAgICAgIDxwcmVmZXJyZWQtc2l6ZSB3aWR0aD0iMjAwIiBoZWlnaHQ9IjIwMCIgLz4KKyAgICAgICAgPC9kZWZhdWx0LWNvbnN0cmFpbnRzPgorICAgICAgPC9pdGVtPgorICAgICAgPGl0ZW0gY2xhc3M9ImphdmF4LnN3aW5nLkpTcGxpdFBhbmUiIGljb249Ii9jb20vaW50ZWxsaWovdWlEZXNpZ25lci9pY29ucy9zcGxpdFBhbmUucG5nIiByZW1vdmFibGU9ImZhbHNlIiBhdXRvLWNyZWF0ZS1iaW5kaW5nPSJmYWxzZSIgY2FuLWF0dGFjaC1sYWJlbD0iZmFsc2UiPgorICAgICAgICA8ZGVmYXVsdC1jb25zdHJhaW50cyB2c2l6ZS1wb2xpY3k9IjMiIGhzaXplLXBvbGljeT0iMyIgYW5jaG9yPSIwIiBmaWxsPSIzIj4KKyAgICAgICAgICA8cHJlZmVycmVkLXNpemUgd2lkdGg9IjIwMCIgaGVpZ2h0PSIyMDAiIC8+CisgICAgICAgIDwvZGVmYXVsdC1jb25zdHJhaW50cz4KKyAgICAgIDwvaXRlbT4KKyAgICAgIDxpdGVtIGNsYXNzPSJqYXZheC5zd2luZy5KU3Bpbm5lciIgaWNvbj0iL2NvbS9pbnRlbGxpai91aURlc2lnbmVyL2ljb25zL3NwaW5uZXIucG5nIiByZW1vdmFibGU9ImZhbHNlIiBhdXRvLWNyZWF0ZS1iaW5kaW5nPSJ0cnVlIiBjYW4tYXR0YWNoLWxhYmVsPSJ0cnVlIj4KKyAgICAgICAgPGRlZmF1bHQtY29uc3RyYWludHMgdnNpemUtcG9saWN5PSIwIiBoc2l6ZS1wb2xpY3k9IjYiIGFuY2hvcj0iOCIgZmlsbD0iMSIgLz4KKyAgICAgIDwvaXRlbT4KKyAgICAgIDxpdGVtIGNsYXNzPSJqYXZheC5zd2luZy5KU2xpZGVyIiBpY29uPSIvY29tL2ludGVsbGlqL3VpRGVzaWduZXIvaWNvbnMvc2xpZGVyLnBuZyIgcmVtb3ZhYmxlPSJmYWxzZSIgYXV0by1jcmVhdGUtYmluZGluZz0idHJ1ZSIgY2FuLWF0dGFjaC1sYWJlbD0iZmFsc2UiPgorICAgICAgICA8ZGVmYXVsdC1jb25zdHJhaW50cyB2c2l6ZS1wb2xpY3k9IjAiIGhzaXplLXBvbGljeT0iNiIgYW5jaG9yPSI4IiBmaWxsPSIxIiAvPgorICAgICAgPC9pdGVtPgorICAgICAgPGl0ZW0gY2xhc3M9ImphdmF4LnN3aW5nLkpTZXBhcmF0b3IiIGljb249Ii9jb20vaW50ZWxsaWovdWlEZXNpZ25lci9pY29ucy9zZXBhcmF0b3IucG5nIiByZW1vdmFibGU9ImZhbHNlIiBhdXRvLWNyZWF0ZS1iaW5kaW5nPSJmYWxzZSIgY2FuLWF0dGFjaC1sYWJlbD0iZmFsc2UiPgorICAgICAgICA8ZGVmYXVsdC1jb25zdHJhaW50cyB2c2l6ZS1wb2xpY3k9IjYiIGhzaXplLXBvbGljeT0iNiIgYW5jaG9yPSIwIiBmaWxsPSIzIiAvPgorICAgICAgPC9pdGVtPgorICAgICAgPGl0ZW0gY2xhc3M9ImphdmF4LnN3aW5nLkpQcm9ncmVzc0JhciIgaWNvbj0iL2NvbS9pbnRlbGxpai91aURlc2lnbmVyL2ljb25zL3Byb2dyZXNzYmFyLnBuZyIgcmVtb3ZhYmxlPSJmYWxzZSIgYXV0by1jcmVhdGUtYmluZGluZz0idHJ1ZSIgY2FuLWF0dGFjaC1sYWJlbD0iZmFsc2UiPgorICAgICAgICA8ZGVmYXVsdC1jb25zdHJhaW50cyB2c2l6ZS1wb2xpY3k9IjAiIGhzaXplLXBvbGljeT0iNiIgYW5jaG9yPSIwIiBmaWxsPSIxIiAvPgorICAgICAgPC9pdGVtPgorICAgICAgPGl0ZW0gY2xhc3M9ImphdmF4LnN3aW5nLkpUb29sQmFyIiBpY29uPSIvY29tL2ludGVsbGlqL3VpRGVzaWduZXIvaWNvbnMvdG9vbGJhci5wbmciIHJlbW92YWJsZT0iZmFsc2UiIGF1dG8tY3JlYXRlLWJpbmRpbmc9ImZhbHNlIiBjYW4tYXR0YWNoLWxhYmVsPSJmYWxzZSI+CisgICAgICAgIDxkZWZhdWx0LWNvbnN0cmFpbnRzIHZzaXplLXBvbGljeT0iMCIgaHNpemUtcG9saWN5PSI2IiBhbmNob3I9IjAiIGZpbGw9IjEiPgorICAgICAgICAgIDxwcmVmZXJyZWQtc2l6ZSB3aWR0aD0iLTEiIGhlaWdodD0iMjAiIC8+CisgICAgICAgIDwvZGVmYXVsdC1jb25zdHJhaW50cz4KKyAgICAgIDwvaXRlbT4KKyAgICAgIDxpdGVtIGNsYXNzPSJqYXZheC5zd2luZy5KVG9vbEJhciRTZXBhcmF0b3IiIGljb249Ii9jb20vaW50ZWxsaWovdWlEZXNpZ25lci9pY29ucy90b29sYmFyU2VwYXJhdG9yLnBuZyIgcmVtb3ZhYmxlPSJmYWxzZSIgYXV0by1jcmVhdGUtYmluZGluZz0iZmFsc2UiIGNhbi1hdHRhY2gtbGFiZWw9ImZhbHNlIj4KKyAgICAgICAgPGRlZmF1bHQtY29uc3RyYWludHMgdnNpemUtcG9saWN5PSIwIiBoc2l6ZS1wb2xpY3k9IjAiIGFuY2hvcj0iMCIgZmlsbD0iMSIgLz4KKyAgICAgIDwvaXRlbT4KKyAgICAgIDxpdGVtIGNsYXNzPSJqYXZheC5zd2luZy5KU2Nyb2xsQmFyIiBpY29uPSIvY29tL2ludGVsbGlqL3VpRGVzaWduZXIvaWNvbnMvc2Nyb2xsYmFyLnBuZyIgcmVtb3ZhYmxlPSJmYWxzZSIgYXV0by1jcmVhdGUtYmluZGluZz0idHJ1ZSIgY2FuLWF0dGFjaC1sYWJlbD0iZmFsc2UiPgorICAgICAgICA8ZGVmYXVsdC1jb25zdHJhaW50cyB2c2l6ZS1wb2xpY3k9IjYiIGhzaXplLXBvbGljeT0iMCIgYW5jaG9yPSIwIiBmaWxsPSIyIiAvPgorICAgICAgPC9pdGVtPgorICAgIDwvZ3JvdXA+CisgIDwvY29tcG9uZW50PgorICA8Y29tcG9uZW50IG5hbWU9IlByb2plY3REZXRhaWxzIj4KKyAgICA8b3B0aW9uIG5hbWU9InByb2plY3ROYW1lIiB2YWx1ZT0idGVzdG5nIiAvPgorICA8L2NvbXBvbmVudD4KKyAgPGNvbXBvbmVudCBuYW1lPSJQcm9qZWN0RmlsZVZlcnNpb24iIGNvbnZlcnRlZD0idHJ1ZSI+CisgICAgPGNvbnZlcnRlciBpZD0iamF2YWVlLW1vZHVsZXMiIC8+CisgICAgPGNvbnZlcnRlciBpZD0icm9yLW1vZHVsZXMiIC8+CisgICAgPGNvbnZlcnRlciBpZD0iU2VsZW5hUnVuQ29uZlRvRGlhbmEiIC8+CisgIDwvY29tcG9uZW50PgorICA8Y29tcG9uZW50IG5hbWU9IlByb2plY3RLZXkiPgorICAgIDxvcHRpb24gbmFtZT0ic3RhdGUiIHZhbHVlPSJwcm9qZWN0Oi8vQzpcYW5uYVx0ZXN0bmdcdGVzdG5nLmlwciIgLz4KKyAgPC9jb21wb25lbnQ+CisgIDxjb21wb25lbnQgbmFtZT0iUHJvamVjdE1vZHVsZU1hbmFnZXIiPgorICAgIDxtb2R1bGVzPgorICAgICAgPG1vZHVsZSBmaWxldXJsPSJmaWxlOi8vJFBST0pFQ1RfRElSJC90ZXN0bmcuaW1sIiBmaWxlcGF0aD0iJFBST0pFQ1RfRElSJC90ZXN0bmcuaW1sIiAvPgorICAgICAgPG1vZHVsZSBmaWxldXJsPSJmaWxlOi8vJFBST0pFQ1RfRElSJC90ZXN0bmctY2hpbGQvdGVzdG5nLWNoaWxkLmltbCIgZmlsZXBhdGg9IiRQUk9KRUNUX0RJUiQvdGVzdG5nLWNoaWxkL3Rlc3RuZy1jaGlsZC5pbWwiIC8+CisgICAgPC9tb2R1bGVzPgorICA8L2NvbXBvbmVudD4KKyAgPGNvbXBvbmVudCBuYW1lPSJQcm9qZWN0Um9vdE1hbmFnZXIiIHZlcnNpb249IjIiIGxhbmd1YWdlTGV2ZWw9IkpES18xXzUiIGFzc2VydC1rZXl3b3JkPSJ0cnVlIiBqZGstMTU9InRydWUiIHByb2plY3QtamRrLW5hbWU9IjEuNiIgcHJvamVjdC1qZGstdHlwZT0iSmF2YVNESyI+CisgICAgPG91dHB1dCB1cmw9ImZpbGU6Ly8kUFJPSkVDVF9ESVIkL291dCIgLz4KKyAgPC9jb21wb25lbnQ+CisgIDxjb21wb25lbnQgbmFtZT0iUmVzb3VyY2VNYW5hZ2VyQ29udGFpbmVyIj4KKyAgICA8b3B0aW9uIG5hbWU9Im15UmVzb3VyY2VCdW5kbGVzIj4KKyAgICAgIDx2YWx1ZT4KKyAgICAgICAgPGxpc3Qgc2l6ZT0iMCIgLz4KKyAgICAgIDwvdmFsdWU+CisgICAgPC9vcHRpb24+CisgIDwvY29tcG9uZW50PgorICA8Y29tcG9uZW50IG5hbWU9IlJtaWNTZXR0aW5ncyI+CisgICAgPG9wdGlvbiBuYW1lPSJJU19FQU5BQkxFRCIgdmFsdWU9ImZhbHNlIiAvPgorICAgIDxvcHRpb24gbmFtZT0iREVCVUdHSU5HX0lORk8iIHZhbHVlPSJ0cnVlIiAvPgorICAgIDxvcHRpb24gbmFtZT0iR0VORVJBVEVfTk9fV0FSTklOR1MiIHZhbHVlPSJmYWxzZSIgLz4KKyAgICA8b3B0aW9uIG5hbWU9IkdFTkVSQVRFX0lJT1BfU1RVQlMiIHZhbHVlPSJmYWxzZSIgLz4KKyAgICA8b3B0aW9uIG5hbWU9IkFERElUSU9OQUxfT1BUSU9OU19TVFJJTkciIHZhbHVlPSIiIC8+CisgIDwvY29tcG9uZW50PgorICA8Y29tcG9uZW50IG5hbWU9IldlYlNlcnZpY2VzUGx1Z2luIiBhZGRSZXF1aXJlZExpYnJhcmllcz0idHJ1ZSIgLz4KKyAgPFVzZWRQYXRoTWFjcm9zPgorICAgIDxtYWNybyBuYW1lPSJwcCIgZGVzY3JpcHRpb249IiIgLz4KKyAgPC9Vc2VkUGF0aE1hY3Jvcz4KKzwvcHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy9BbGV4QnVnL2V4cGVjdGVkLnhtbCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RhdGFGbG93L0FsZXhCdWcvZXhwZWN0ZWQueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc5NmEzMTUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy9BbGV4QnVnL2V4cGVjdGVkLnhtbApAQCAtMCwwICsxLDIgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8cHJvYmxlbXMgLz4KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RhdGFGbG93L0FsZXhCdWcvc3JjL1Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RhdGFGbG93L0FsZXhCdWcvc3JjL1Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xOTUzYTZhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvQWxleEJ1Zy9zcmMvVGVzdC5qYXZhCkBAIC0wLDAgKzEsNyBAQAorcHVibGljIGNsYXNzIFRlc3QgeworICBwdWJsaWMgU3RyaW5nIGZvbyhTdHJpbmcgcGF0aCkgeworICAgIFN0cmluZyBzbXRoID0gbmV3IFN0cmluZyhwYXRoKTsKKyAgICBpZiAocGF0aCA9PSBudWxsKSByZXR1cm4gbnVsbDsKKyAgICByZXR1cm4gc210aDsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvQXJyYXlBY2Nlc3NEb2VzbnRDYW5jZWxBbmFseXNpcy9leHBlY3RlZC54bWwgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy9BcnJheUFjY2Vzc0RvZXNudENhbmNlbEFuYWx5c2lzL2V4cGVjdGVkLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MDU3OGUxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvQXJyYXlBY2Nlc3NEb2VzbnRDYW5jZWxBbmFseXNpcy9leHBlY3RlZC54bWwKQEAgLTAsMCArMSw4IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPHByb2JsZW1zPgorPHByb2JsZW0+CisgIDxmaWxlPlRlc3QuamF2YTwvZmlsZT4KKyAgPGxpbmU+OTwvbGluZT4KKyAgPGRlc2NyaXB0aW9uPlBhc3NpbmcgbnVsbCBhcmd1bWVudCB0byBwYXJhbWV0ZXIgYW5ub3RhdGVkIGFzIEBOb3ROdWxsPC9kZXNjcmlwdGlvbj4KKzwvcHJvYmxlbT4KKzwvcHJvYmxlbXM+CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy9BcnJheUFjY2Vzc0RvZXNudENhbmNlbEFuYWx5c2lzL3NyYy9UZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy9BcnJheUFjY2Vzc0RvZXNudENhbmNlbEFuYWx5c2lzL3NyYy9UZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmIzODRlMgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RhdGFGbG93L0FycmF5QWNjZXNzRG9lc250Q2FuY2VsQW5hbHlzaXMvc3JjL1Rlc3QuamF2YQpAQCAtMCwwICsxLDExIEBACitpbXBvcnQgb3JnLmpldGJyYWlucy5hbm5vdGF0aW9ucy4qOworCitwdWJsaWMgY2xhc3MgVGVzdCB7CisgIHByaXZhdGUgc3RhdGljIHZvaWQgZm9vKEBOb3ROdWxsIFN0cmluZyBzbXRoKSB7CisgIH0KKworICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CisgICAgU3RyaW5nIHMgPSBhcmdzWzBdOworICAgIGZvbyhudWxsKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RhdGFGbG93L0FycmF5QWNjZXNzTlBFL2V4cGVjdGVkLnhtbCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RhdGFGbG93L0FycmF5QWNjZXNzTlBFL2V4cGVjdGVkLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMTc4NjNhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvQXJyYXlBY2Nlc3NOUEUvZXhwZWN0ZWQueG1sCkBAIC0wLDAgKzEsOCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxwcm9ibGVtcz4KKzxwcm9ibGVtPgorICA8ZmlsZT5UZXN0LmphdmE8L2ZpbGU+CisgIDxsaW5lPjU8L2xpbmU+CisgIDxkZXNjcmlwdGlvbj5BcnJheSBhY2Nlc3MgJmx0O2NvZGUmZ3Q7cGF0aFswXSZsdDsvY29kZSZndDsgbWF5IHByb2R1Y2UgJmx0O2NvZGUmZ3Q7amF2YS5sYW5nLk51bGxQb2ludGVyRXhjZXB0aW9uJmx0Oy9jb2RlJmd0OzwvZGVzY3JpcHRpb24+Cis8L3Byb2JsZW0+Cis8L3Byb2JsZW1zPgpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvQXJyYXlBY2Nlc3NOUEUvc3JjL1Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RhdGFGbG93L0FycmF5QWNjZXNzTlBFL3NyYy9UZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmZiNGE4MgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RhdGFGbG93L0FycmF5QWNjZXNzTlBFL3NyYy9UZXN0LmphdmEKQEAgLTAsMCArMSw5IEBACitwdWJsaWMgY2xhc3MgVGVzdCB7CisgIHB1YmxpYyBTdHJpbmcgZm9vKFN0cmluZ1tdIHBhdGgpIHsKKyAgICBpZiAocGF0aCAhPSBudWxsKSByZXR1cm4gbnVsbDsKKyAgIAorICAgIFN0cmluZyBwID0gcGF0aFswXTsKKworICAgIHJldHVybiAiIjsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvQm94aW5nTmFOL2V4cGVjdGVkLnhtbCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RhdGFGbG93L0JveGluZ05hTi9leHBlY3RlZC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzg1OWM3ZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RhdGFGbG93L0JveGluZ05hTi9leHBlY3RlZC54bWwKQEAgLTAsMCArMSw2MyBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxwcm9ibGVtcz4KKyAgPHByb2JsZW0+CisgICAgPGZpbGU+VGVzdC5qYXZhPC9maWxlPgorICAgIDxsaW5lPjY8L2xpbmU+CisgICAgPG1ldGhvZD4KKyAgICAgIDxuYW1lPnZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKTwvbmFtZT4KKyAgICAgIDxkaXNwbGF5X25hbWU+bWFpbihTdHJpbmdbXSk8L2Rpc3BsYXlfbmFtZT4KKyAgICAgIDxwYWNrYWdlPiZsdDtkZWZhdWx0Jmd0OzwvcGFja2FnZT4KKyAgICAgIDxjbGFzcz4KKyAgICAgICAgPG5hbWU+RG91YmxlVHJvdWJsZTwvbmFtZT4KKyAgICAgICAgPGRpc3BsYXlfbmFtZT5Eb3VibGVUcm91YmxlPC9kaXNwbGF5X25hbWU+CisgICAgICA8L2NsYXNzPgorICAgIDwvbWV0aG9kPgorICAgIDxkZXNjcmlwdGlvbj5Db25kaXRpb24gJmx0O2NvZGUmZ3Q7YiA9PSBEb3VibGUuTmFOJmx0Oy9jb2RlJmd0OyBpcyBhbHdheXMgJmx0O2NvZGUmZ3Q7ZmFsc2UmbHQ7L2NvZGUmZ3Q7LjwvZGVzY3JpcHRpb24+CisgIDwvcHJvYmxlbT4KKworICA8cHJvYmxlbT4KKyAgICA8ZmlsZT5UZXN0LmphdmE8L2ZpbGU+CisgICAgPGxpbmU+MTE8L2xpbmU+CisgICAgPG1ldGhvZD4KKyAgICAgIDxuYW1lPnZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKTwvbmFtZT4KKyAgICAgIDxkaXNwbGF5X25hbWU+bWFpbihTdHJpbmdbXSk8L2Rpc3BsYXlfbmFtZT4KKyAgICAgIDxwYWNrYWdlPiZsdDtkZWZhdWx0Jmd0OzwvcGFja2FnZT4KKyAgICAgIDxjbGFzcz4KKyAgICAgICAgPG5hbWU+RG91YmxlVHJvdWJsZTwvbmFtZT4KKyAgICAgICAgPGRpc3BsYXlfbmFtZT5Eb3VibGVUcm91YmxlPC9kaXNwbGF5X25hbWU+CisgICAgICA8L2NsYXNzPgorICAgIDwvbWV0aG9kPgorICAgIDxkZXNjcmlwdGlvbj5Db25kaXRpb24gJmx0O2NvZGUmZ3Q7RmxvYXQuTmFOICE9IEZsb2F0Lk5hTiZsdDsvY29kZSZndDsgaXMgYWx3YXlzICZsdDtjb2RlJmd0O3RydWUmbHQ7L2NvZGUmZ3Q7LjwvZGVzY3JpcHRpb24+CisgIDwvcHJvYmxlbT4KKworICA8cHJvYmxlbT4KKyAgICA8ZmlsZT5UZXN0LmphdmE8L2ZpbGU+CisgICAgPGxpbmU+MTg8L2xpbmU+CisgICAgPG1ldGhvZD4KKyAgICAgIDxuYW1lPnZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKTwvbmFtZT4KKyAgICAgIDxkaXNwbGF5X25hbWU+bWFpbihTdHJpbmdbXSk8L2Rpc3BsYXlfbmFtZT4KKyAgICAgIDxwYWNrYWdlPiZsdDtkZWZhdWx0Jmd0OzwvcGFja2FnZT4KKyAgICAgIDxjbGFzcz4KKyAgICAgICAgPG5hbWU+RG91YmxlVHJvdWJsZTwvbmFtZT4KKyAgICAgICAgPGRpc3BsYXlfbmFtZT5Eb3VibGVUcm91YmxlPC9kaXNwbGF5X25hbWU+CisgICAgICA8L2NsYXNzPgorICAgIDwvbWV0aG9kPgorICAgIDxkZXNjcmlwdGlvbj5Db25kaXRpb24gJmx0O2NvZGUmZ3Q7RG91YmxlLk5hTiA9PSBhJmx0Oy9jb2RlJmd0OyBpcyBhbHdheXMgJmx0O2NvZGUmZ3Q7ZmFsc2UmbHQ7L2NvZGUmZ3Q7LjwvZGVzY3JpcHRpb24+CisgIDwvcHJvYmxlbT4KKworICA8cHJvYmxlbT4KKyAgICA8ZmlsZT5UZXN0LmphdmE8L2ZpbGU+CisgICAgPGxpbmU+MTk8L2xpbmU+CisgICAgPG1ldGhvZD4KKyAgICAgIDxuYW1lPnZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKTwvbmFtZT4KKyAgICAgIDxkaXNwbGF5X25hbWU+bWFpbihTdHJpbmdbXSk8L2Rpc3BsYXlfbmFtZT4KKyAgICAgIDxwYWNrYWdlPiZsdDtkZWZhdWx0Jmd0OzwvcGFja2FnZT4KKyAgICAgIDxjbGFzcz4KKyAgICAgICAgPG5hbWU+RG91YmxlVHJvdWJsZTwvbmFtZT4KKyAgICAgICAgPGRpc3BsYXlfbmFtZT5Eb3VibGVUcm91YmxlPC9kaXNwbGF5X25hbWU+CisgICAgICA8L2NsYXNzPgorICAgIDwvbWV0aG9kPgorICAgIDxkZXNjcmlwdGlvbj5Db25kaXRpb24gJmx0O2NvZGUmZ3Q7YiA9PSBhJmx0Oy9jb2RlJmd0OyBpcyBhbHdheXMgJmx0O2NvZGUmZ3Q7ZmFsc2UmbHQ7L2NvZGUmZ3Q7LjwvZGVzY3JpcHRpb24+CisgIDwvcHJvYmxlbT4KKzwvcHJvYmxlbXM+CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RhdGFGbG93L0JveGluZ05hTi9zcmMvVGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvQm94aW5nTmFOL3NyYy9UZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzQ5NWJiYgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RhdGFGbG93L0JveGluZ05hTi9zcmMvVGVzdC5qYXZhCkBAIC0wLDAgKzEsMjIgQEAKK3B1YmxpYyBjbGFzcyBEb3VibGVUcm91YmxlIHsKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CisgICAgICAgIHsKKyAgICAgICAgRG91YmxlIGEgPSBEb3VibGUuTmFOOworICAgICAgICBkb3VibGUgYiA9IGE7Ly9Eb3VibGUuTmFOOworICAgICAgICBpZiAoYiA9PSBEb3VibGUuTmFOKSB7CisgICAgICAgICAgICA7CisgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGlmIChGbG9hdC5OYU4gIT0gRmxvYXQuTmFOKSB7CisKKyAgICAgICAgfQorCisgICAgICAgIHsKKyAgICAgICAgICBkb3VibGUgYSA9IERvdWJsZS5OYU47CisgICAgICAgICAgZG91YmxlIGIgPSBEb3VibGUuTmFOOworICAgICAgICAgIGlmIChEb3VibGUuTmFOID09IGEpIHt9CisgICAgICAgICAgaWYgKGIgPT0gYSkge30KKyAgICAgICAgfQorICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RhdGFGbG93L0NhdGNoUGFyYW1ldGVyQ2FudEJlTnVsbC9leHBlY3RlZC54bWwgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy9DYXRjaFBhcmFtZXRlckNhbnRCZU51bGwvZXhwZWN0ZWQueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA4MWU4ZmEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy9DYXRjaFBhcmFtZXRlckNhbnRCZU51bGwvZXhwZWN0ZWQueG1sCkBAIC0wLDAgKzEsMTMgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8cHJvYmxlbXM+CisgIDxwcm9ibGVtPgorICAgIDxmaWxlPlRlc3QuamF2YTwvZmlsZT4KKyAgICA8bGluZT44PC9saW5lPgorICAgIDxkZXNjcmlwdGlvbj5Db25kaXRpb24gJ2UgPT0gbnVsbCcgaXMgYWx3YXlzIGZhbHNlPC9kZXNjcmlwdGlvbj4KKyAgPC9wcm9ibGVtPgorICA8cHJvYmxlbT4KKyAgICA8ZmlsZT5UZXN0LmphdmE8L2ZpbGU+CisgICAgPGxpbmU+MTE8L2xpbmU+CisgICAgPGRlc2NyaXB0aW9uPkNvbmRpdGlvbiAnZSBpbnN0YW5jZW9mIEZpbGVOb3RGb3VuZEV4Y2VwdGlvbicgaXMgYWx3YXlzIGZhbHNlPC9kZXNjcmlwdGlvbj4KKyAgPC9wcm9ibGVtPgorPC9wcm9ibGVtcz4KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RhdGFGbG93L0NhdGNoUGFyYW1ldGVyQ2FudEJlTnVsbC9zcmMvVGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvQ2F0Y2hQYXJhbWV0ZXJDYW50QmVOdWxsL3NyYy9UZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDA4ZmJhYwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RhdGFGbG93L0NhdGNoUGFyYW1ldGVyQ2FudEJlTnVsbC9zcmMvVGVzdC5qYXZhCkBAIC0wLDAgKzEsMTYgQEAKK2ltcG9ydCBqYXZhLmlvLio7CisKK3B1YmxpYyBjbGFzcyBGb28geworICBwdWJsaWMgdm9pZCBmb28oKSB7CisgICAgdHJ5IHsKKyAgICAgIHRocm93IG5ldyBFT0ZFeGNlcHRpb24oImFhYSIpOworICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CisgICAgICBpZiAoZSA9PSBudWxsKSB7CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiQ2FuJ3QgYmUgaGVyZS4iKTsKKyAgICAgIH0KKyAgICAgIGlmIChlIGluc3RhbmNlb2YgRmlsZU5vdEZvdW5kRXhjZXB0aW9uKSB7CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiQ2FuJ3QgYmUgaGVyZS4iKTsKKyAgICAgIH0KKyAgICB9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy9DaGVja2VkRXhjZXB0aW9uRG9taW5hbmNlL2V4cGVjdGVkLnhtbCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RhdGFGbG93L0NoZWNrZWRFeGNlcHRpb25Eb21pbmFuY2UvZXhwZWN0ZWQueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVjMjcyYWIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy9DaGVja2VkRXhjZXB0aW9uRG9taW5hbmNlL2V4cGVjdGVkLnhtbApAQCAtMCwwICsxLDMgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8cHJvYmxlbXMvPgorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy9DaGVja2VkRXhjZXB0aW9uRG9taW5hbmNlL3NyYy9UZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy9DaGVja2VkRXhjZXB0aW9uRG9taW5hbmNlL3NyYy9UZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGEwYTY5MAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RhdGFGbG93L0NoZWNrZWRFeGNlcHRpb25Eb21pbmFuY2Uvc3JjL1Rlc3QuamF2YQpAQCAtMCwwICsxLDI0IEBACisgcHVibGljIGNsYXNzIENoZWNrZWRFeGNlcHRpb25Eb21pbmFuY2UgeworICAgcHJpdmF0ZSBzdGF0aWMgY2xhc3MgQ2hlY2tlZEV4Y2VwdGlvbiBleHRlbmRzIEV4Y2VwdGlvbiB7fQorCisgICBwdWJsaWMgc3RhdGljIHZvaWQgZm9vKCkgeworICAgICBib29sZWFuIGZsYWcgPSB0cnVlOworCisgICAgIHRyeSB7CisgICAgICAgYmFyKCk7CisgICAgIH0KKyAgICAgY2F0Y2ggKENoZWNrZWRFeGNlcHRpb24gZSkgeworICAgICAgIGZsYWcgPSBmYWxzZTsKKyAgICAgfQorICAgICBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKKyAgICAgfQorCisgICAgIGlmIChmbGFnKSB7IC8vIFRoaXMgc2hvdWxkIG5vdCBiZSBoaWdobGlnaHRlZCBhcyBhbHdheXMgdHJ1ZTsKKyAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIk11c3Qgbm90IGhhcHBlbiIpOworICAgICB9CisgICB9CisKKyAgIHB1YmxpYyBzdGF0aWMgdm9pZCBiYXIoKSB0aHJvd3MgQ2hlY2tlZEV4Y2VwdGlvbiB7CisgICAgIHRocm93IG5ldyBDaGVja2VkRXhjZXB0aW9uKCk7CisgICB9CisgfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvQ29uZGl0aW9uRmFsc2VBbmROUEUvZXhwZWN0ZWQueG1sIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvQ29uZGl0aW9uRmFsc2VBbmROUEUvZXhwZWN0ZWQueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFlZjRkNmEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy9Db25kaXRpb25GYWxzZUFuZE5QRS9leHBlY3RlZC54bWwKQEAgLTAsMCArMSwxOCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxwcm9ibGVtcz4KKyAgPHByb2JsZW0+CisgICAgPGZpbGU+VGVzdC5qYXZhPC9maWxlPgorICAgIDxsaW5lPjk8L2xpbmU+CisgICAgPGRlc2NyaXB0aW9uPk1ldGhvZCBpbnZvY2F0aW9uICdmb28oKS5mb28oKScgbWF5IHByb2R1Y2UgTnVsbFBvaW50ZXJFeGNlcHRpb248L2Rlc2NyaXB0aW9uPgorICA8L3Byb2JsZW0+CisgIDxwcm9ibGVtPgorICAgIDxmaWxlPlRlc3QuamF2YTwvZmlsZT4KKyAgICA8bGluZT4xMDwvbGluZT4KKyAgICA8ZGVzY3JpcHRpb24+TWV0aG9kIGludm9jYXRpb24gJ2ZvbygpLmZvbygpJyBtYXkgcHJvZHVjZSBOdWxsUG9pbnRlckV4Y2VwdGlvbjwvZGVzY3JpcHRpb24+CisgIDwvcHJvYmxlbT4KKyAgPHByb2JsZW0+CisgICAgPGZpbGU+VGVzdC5qYXZhPC9maWxlPgorICAgIDxsaW5lPjEwPC9saW5lPgorICAgIDxkZXNjcmlwdGlvbj5NZXRob2QgaW52b2NhdGlvbiAnZm9vKCkuZm9vKCkuZm9vKCknIG1heSBwcm9kdWNlIE51bGxQb2ludGVyRXhjZXB0aW9uPC9kZXNjcmlwdGlvbj4KKyAgPC9wcm9ibGVtPgorPC9wcm9ibGVtcz4KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RhdGFGbG93L0NvbmRpdGlvbkZhbHNlQW5kTlBFL3NyYy9UZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy9Db25kaXRpb25GYWxzZUFuZE5QRS9zcmMvVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBiMDI5YWMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy9Db25kaXRpb25GYWxzZUFuZE5QRS9zcmMvVGVzdC5qYXZhCkBAIC0wLDAgKzEsMTQgQEAKK2ltcG9ydCBvcmcuamV0YnJhaW5zLmFubm90YXRpb25zLk51bGxhYmxlOworcHVibGljIGNsYXNzIEZvbyB7CisgICAgQE51bGxhYmxlIEZvbyBmb28oKSB7CisgICAgICAgIHJldHVybiBudWxsOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIGJhcigpIHsKKyAgICAgICAgaWYgKGZvbygpICE9IG51bGwgJiYKKyAgICAgICAgICBmb28oKS5mb28oKSAhPSBudWxsICYmCisgICAgICAgICAgZm9vKCkuZm9vKCkuZm9vKCkgIT0gbnVsbCkgeworCisgICAgICAgIH0KKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy9Db25zdGFudHNEaWZmZXJlbnRUeXBlcy9leHBlY3RlZC54bWwgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy9Db25zdGFudHNEaWZmZXJlbnRUeXBlcy9leHBlY3RlZC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmEwOGM1MAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RhdGFGbG93L0NvbnN0YW50c0RpZmZlcmVudFR5cGVzL2V4cGVjdGVkLnhtbApAQCAtMCwwICsxLDQ3IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPHByb2JsZW1zPgorICA8cHJvYmxlbT4KKyAgICA8ZmlsZT5UZXN0LmphdmE8L2ZpbGU+CisgICAgPGxpbmU+NDwvbGluZT4KKyAgICA8bWV0aG9kPgorICAgICAgPG5hbWU+dm9pZCBmKCk8L25hbWU+CisgICAgICA8ZGlzcGxheV9uYW1lPmYoKTwvZGlzcGxheV9uYW1lPgorICAgICAgPHBhY2thZ2U+Jmx0O2RlZmF1bHQmZ3Q7PC9wYWNrYWdlPgorICAgICAgPGNsYXNzPgorICAgICAgICA8bmFtZT5UZXN0PC9uYW1lPgorICAgICAgICA8ZGlzcGxheV9uYW1lPlRlc3Q8L2Rpc3BsYXlfbmFtZT4KKyAgICAgIDwvY2xhc3M+CisgICAgPC9tZXRob2Q+CisgICAgPGRlc2NyaXB0aW9uPkNvbmRpdGlvbiAmbHQ7Y29kZSZndDtMID09IDUmbHQ7L2NvZGUmZ3Q7IGlzIGFsd2F5cyAmbHQ7Y29kZSZndDt0cnVlJmx0Oy9jb2RlJmd0OzwvZGVzY3JpcHRpb24+CisgIDwvcHJvYmxlbT4KKworICA8cHJvYmxlbT4KKyAgICA8ZmlsZT5UZXN0LmphdmE8L2ZpbGU+CisgICAgPGxpbmU+OTwvbGluZT4KKyAgICA8bWV0aG9kPgorICAgICAgPG5hbWU+dm9pZCBmKCk8L25hbWU+CisgICAgICA8ZGlzcGxheV9uYW1lPmYoKTwvZGlzcGxheV9uYW1lPgorICAgICAgPHBhY2thZ2U+Jmx0O2RlZmF1bHQmZ3Q7PC9wYWNrYWdlPgorICAgICAgPGNsYXNzPgorICAgICAgICA8bmFtZT5UZXN0PC9uYW1lPgorICAgICAgICA8ZGlzcGxheV9uYW1lPlRlc3Q8L2Rpc3BsYXlfbmFtZT4KKyAgICAgIDwvY2xhc3M+CisgICAgPC9tZXRob2Q+CisgICAgPGRlc2NyaXB0aW9uPkNvbmRpdGlvbiAmbHQ7Y29kZSZndDtsID09IDBmJmx0Oy9jb2RlJmd0OyBpcyBhbHdheXMgJmx0O2NvZGUmZ3Q7dHJ1ZSZsdDsvY29kZSZndDs8L2Rlc2NyaXB0aW9uPgorICA8L3Byb2JsZW0+CisKKyAgPHByb2JsZW0+CisgICAgPGZpbGU+VGVzdC5qYXZhPC9maWxlPgorICAgIDxsaW5lPjE0PC9saW5lPgorICAgIDxtZXRob2Q+CisgICAgICA8bmFtZT52b2lkIGYoKTwvbmFtZT4KKyAgICAgIDxkaXNwbGF5X25hbWU+ZigpPC9kaXNwbGF5X25hbWU+CisgICAgICA8cGFja2FnZT4mbHQ7ZGVmYXVsdCZndDs8L3BhY2thZ2U+CisgICAgICA8Y2xhc3M+CisgICAgICAgIDxuYW1lPlRlc3Q8L25hbWU+CisgICAgICAgIDxkaXNwbGF5X25hbWU+VGVzdDwvZGlzcGxheV9uYW1lPgorICAgICAgPC9jbGFzcz4KKyAgICA8L21ldGhvZD4KKyAgICA8ZGVzY3JpcHRpb24+Q29uZGl0aW9uICZsdDtjb2RlJmd0O2MgPT0gMUwmbHQ7L2NvZGUmZ3Q7IGlzIGFsd2F5cyAmbHQ7Y29kZSZndDt0cnVlJmx0Oy9jb2RlJmd0OzwvZGVzY3JpcHRpb24+CisgIDwvcHJvYmxlbT4KKzwvcHJvYmxlbXM+CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy9Db25zdGFudHNEaWZmZXJlbnRUeXBlcy9zcmMvVGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvQ29uc3RhbnRzRGlmZmVyZW50VHlwZXMvc3JjL1Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NDdjZDRlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvQ29uc3RhbnRzRGlmZmVyZW50VHlwZXMvc3JjL1Rlc3QuamF2YQpAQCAtMCwwICsxLDE5IEBACitwdWJsaWMgY2xhc3MgVGVzdCB7Cisgdm9pZCBmKCkgeworICAgICAgICAgTG9uZyBMID0gNUw7CisgICAgICAgICBpZiAoTCA9PSA1KSB7CisgICAgICAgICAgICAgOworICAgICAgICAgfQorCisgICAgICAgICBsb25nIGwgPSAwOworICAgICAgICAgaWYgKGwgPT0gMGYpIHsKKyAgICAgICAgICA7CisgICAgICAgICB9CisKKyAgICAgICAgIGNoYXIgYyA9IDE7CisgICAgICAgICBpZiAoYyA9PSAxTCkgeworICAgICAgICAgICA7CisgICAgICAgICB9CisgICAgICAgICAKKyB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvRmllbGRzRmxhc2hpbmcvZXhwZWN0ZWQueG1sIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvRmllbGRzRmxhc2hpbmcvZXhwZWN0ZWQueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFlOWQ1ZWYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy9GaWVsZHNGbGFzaGluZy9leHBlY3RlZC54bWwKQEAgLTAsMCArMSw4IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPHByb2JsZW1zPgorICA8cHJvYmxlbT4KKyAgICA8ZmlsZT5UZXN0LmphdmE8L2ZpbGU+CisgICAgPGxpbmU+MTg8L2xpbmU+CisgICAgPGRlc2NyaXB0aW9uPkFyZ3VtZW50ICdvYmonIG1pZ2h0IGJlIG51bGw8L2Rlc2NyaXB0aW9uPgorICA8L3Byb2JsZW0+Cis8L3Byb2JsZW1zPgpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvRmllbGRzRmxhc2hpbmcvc3JjL1Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RhdGFGbG93L0ZpZWxkc0ZsYXNoaW5nL3NyYy9UZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTQzZDlkZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RhdGFGbG93L0ZpZWxkc0ZsYXNoaW5nL3NyYy9UZXN0LmphdmEKQEAgLTAsMCArMSw1MSBAQAoraW1wb3J0IG9yZy5qZXRicmFpbnMuYW5ub3RhdGlvbnMuKjsKKworcHVibGljIGNsYXNzIFRlc3ROdWxsYWJsZUludGVydmVuaW5nICAgLy8gU2VlIGh0dHA6Ly93d3cuamV0YnJhaW5zLm5ldC9qaXJhL2Jyb3dzZS9JREVBLTI4NDUKK3sKKyAgICBATnVsbGFibGUgT2JqZWN0IG9iajsKKworICAgIHB1YmxpYyBUZXN0TnVsbGFibGVJbnRlcnZlbmluZyhmaW5hbCBATnVsbGFibGUgT2JqZWN0IG9iaikgeworICAgICAgICB0aGlzLm9iaiA9IG9iajsKKyAgICB9CisKKyAgICBATnVsbGFibGUgT2JqZWN0IGZvbygpIHsgcmV0dXJuIG51bGw7IH0KKyAgICB2b2lkIG5vdG51bGwoQE5vdE51bGwgT2JqZWN0IGFyZykge30KKworICAgIHZvaWQgdGVzdDEoKSB7CisgICAgICAgIGlmIChvYmogIT0gbnVsbCkgeworICAgICAgICAgICAgLy8gTWV0aG9kIGludGVydmVuaW5nLCBtaWdodCBjaGFuZ2Ugb2JqOyBzaG91bGQgaGF2ZSB3YXJuaW5nIChPSykKKyAgICAgICAgICAgIG9iaiA9IGZvbygpOworICAgICAgICAgICAgbm90bnVsbChvYmopOworICAgICAgICB9CisgICAgfQorCisgICAgdm9pZCB0ZXN0MigpIHsKKyAgICAgICAgaWYgKG9iaiAhPSBudWxsKSB7CisgICAgICAgICAgICAvLyBTaW1wbGUgYXNzaWdubWVudCBpbnRlcnZlbmluZywgbm8gbWV0aG9kIGNhbGxzIGFuZCBub3RoaW5nCisgICAgICAgICAgICAvLyBpbnZvbHZpbmcgb2JqLi4uCisgICAgICAgICAgICAvLyBTaG91bGQgYmUgbm8gd2FybmluZywgYnV0IHRoZXJlIGlzCisgICAgICAgICAgICBpbnQgeCA9IDEwOworICAgICAgICAgICAgbm90bnVsbChvYmopOworICAgICAgICB9CisgICAgfQorCisgICAgdm9pZCB0ZXN0MygpIHsKKyAgICAgICAgaWYgKG9iaiAhPSBudWxsKSB7CisgICAgICAgICAgICAvLyBDb25zdHJ1Y3RvciBjYWxsIGludGVydmVuaW5nOyBmb3IgYWxsIHdlIGtub3csIHRoaXMgY291bGQKKyAgICAgICAgICAgIC8vIGNoYW5nZSBvYmogdGhyb3VnaCBzb21lIHN0cmFuZ2UgaW50ZXJhY3Rpb24gKGNvbnN0cnVjdG9yCisgICAgICAgICAgICAvLyBjYWxscyBzdGF0aWMgbWV0aG9kIHdoaWNoIGhhcyBhY2Nlc3MgdG8gdGhpcyBvYmplY3Qgd2hpY2gKKyAgICAgICAgICAgIC8vIHRoZW4gY2hhbmdlcyBvYmopLiBTaG91bGQgYmUgYSB3YXJuaW5nIChPSykuCisgICAgICAgICAgICBUZXN0TnVsbGFibGVJbnRlcnZlbmluZyBvYmoyID0gbmV3IFRlc3ROdWxsYWJsZUludGVydmVuaW5nKG51bGwpOworICAgICAgICAgICAgbm90bnVsbChvYmopOworICAgICAgICB9CisgICAgfQorCisgICAgdm9pZCB0ZXN0NCgpIHsKKyAgICAgICAgaWYgKG9iaiAhPSBudWxsKSB7CisgICAgICAgICAgICAvLyBBcnJheSBjb25zdHJ1Y3Rpb24gY2Fubm90IGNoYW5nZSBvdGhlciBvYmplY3RzCisgICAgICAgICAgICAvLyBTaG91bGQgYmUgbm8gd2FybmluZywgYnV0IHRoZXJlIGlzCisgICAgICAgICAgICBPYmplY3RbXSBhcnIgPSBuZXcgT2JqZWN0WzVdOworICAgICAgICAgICAgbm90bnVsbChvYmopOworICAgICAgICB9CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvRm9yRWFjaE5QRS9leHBlY3RlZC54bWwgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy9Gb3JFYWNoTlBFL2V4cGVjdGVkLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MGQ0MjljCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvRm9yRWFjaE5QRS9leHBlY3RlZC54bWwKQEAgLTAsMCArMSw4IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPHByb2JsZW1zPgorPHByb2JsZW0+CisgIDxmaWxlPlRlc3QuamF2YTwvZmlsZT4KKyAgPGxpbmU+NDwvbGluZT4KKyAgPGRlc2NyaXB0aW9uPkRlcmVmZXJlbmNlIG9mICdwYXRoJyBtYXkgcHJvZHVjZSBqYXZhLmxhbmcuTnVsbFBvaW50ZXJFeGNlcHRpb248L2Rlc2NyaXB0aW9uPgorPC9wcm9ibGVtPgorPC9wcm9ibGVtcz4KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RhdGFGbG93L0ZvckVhY2hOUEUvc3JjL1Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RhdGFGbG93L0ZvckVhY2hOUEUvc3JjL1Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYWNhOTAyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvRm9yRWFjaE5QRS9zcmMvVGVzdC5qYXZhCkBAIC0wLDAgKzEsOCBAQAorcHVibGljIGNsYXNzIFRlc3QgeworICBwdWJsaWMgU3RyaW5nIGZvbyhTdHJpbmdbXSBwYXRoKSB7CisgICAgaWYgKHBhdGggIT0gbnVsbCkgcmV0dXJuIG51bGw7CisgICAgZm9yIChTdHJpbmcgcDogcGF0aCkge30KKworICAgIHJldHVybiAiIjsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvRm9yZWFjaEZsb3cvZXhwZWN0ZWQueG1sIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvRm9yZWFjaEZsb3cvZXhwZWN0ZWQueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVjMjcyYWIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy9Gb3JlYWNoRmxvdy9leHBlY3RlZC54bWwKQEAgLTAsMCArMSwzIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPHByb2JsZW1zLz4KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvRm9yZWFjaEZsb3cvc3JjL05wZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvRm9yZWFjaEZsb3cvc3JjL05wZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkwYTU0YzMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy9Gb3JlYWNoRmxvdy9zcmMvTnBlLmphdmEKQEAgLTAsMCArMSwyMSBAQAorcHVibGljIGNsYXNzIE5wZSB7CisgICBPYmplY3QgZm9vKE9iamVjdFtdIG9ianMpIHsKKyAgICAgIGJvb2xlYW4gc2tpcCA9IHRydWU7CisgICAgICBmb3IgKE9iamVjdCBvIDogb2JqcykgeworICAgICAgICBpZiAobyBpbnN0YW5jZW9mIFN0cmluZykgeworICAgICAgICAgIHNraXAgPSBmYWxzZTsKKyAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChza2lwKSB7CisgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKyAgICAgICAgYmFyKCk7CisgICAgICB9CisKKyAgICAgIHJldHVybiAiIjsKKyAgIH0KKworICAgdm9pZCBiYXIoKSB7CisgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvR2VuZXJpY0luc3RhbmNlb2YvZXhwZWN0ZWQueG1sIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvR2VuZXJpY0luc3RhbmNlb2YvZXhwZWN0ZWQueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNmNDc1YmIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy9HZW5lcmljSW5zdGFuY2VvZi9leHBlY3RlZC54bWwKQEAgLTAsMCArMSw5IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPHByb2JsZW1zPgorICA8cHJvYmxlbT4KKyAgICA8ZmlsZT5HZW5lcmljSW5zdGFuY2VvZi5qYXZhPC9maWxlPgorICAgIDxsaW5lPjg8L2xpbmU+CisgICAgPGRlc2NyaXB0aW9uPkNvbmRpdGlvbiBpcyBhbHdheXMgdHJ1ZTwvZGVzY3JpcHRpb24+CisgIDwvcHJvYmxlbT4KKzwvcHJvYmxlbXM+CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RhdGFGbG93L0dlbmVyaWNJbnN0YW5jZW9mL3NyYy9HZW5lcmljSW5zdGFuY2VvZi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvR2VuZXJpY0luc3RhbmNlb2Yvc3JjL0dlbmVyaWNJbnN0YW5jZW9mLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjljZjc3NwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RhdGFGbG93L0dlbmVyaWNJbnN0YW5jZW9mL3NyYy9HZW5lcmljSW5zdGFuY2VvZi5qYXZhCkBAIC0wLDAgKzEsMTIgQEAKK2NsYXNzIEdlbmVyaWM8VD4geworICBHZW5lcmljKCkge30KK30KKworY2xhc3MgVGVzdCB7CisgIHZvaWQgZm9vICgpIHsKKyAgICBHZW5lcmljIGcgPSBuZXcgR2VuZXJpYyAoKTsKKyAgICBpZiAoZyBpbnN0YW5jZW9mIEdlbmVyaWM8U3RyaW5nPikgeworICAgICAgcmV0dXJuOworICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RhdGFGbG93L0lERUExODQwL2V4cGVjdGVkLnhtbCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RhdGFGbG93L0lERUExODQwL2V4cGVjdGVkLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNzBiMGZhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvSURFQTE4NDAvZXhwZWN0ZWQueG1sCkBAIC0wLDAgKzEsOSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxwcm9ibGVtcz4KKyAgPHByb2JsZW0+CisgICAgPGZpbGU+TnBlLmphdmE8L2ZpbGU+CisgICAgPGxpbmU+MTA8L2xpbmU+CisgICAgPGRlc2NyaXB0aW9uPkFyZ3VtZW50ICdudWxsJyBpcyBwcm9iYWJseSBudWxsPC9kZXNjcmlwdGlvbj4KKyAgPC9wcm9ibGVtPgorPC9wcm9ibGVtcz4KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvSURFQTE4NDAvc3JjL1dyb25nUGFyYW1ldGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy9JREVBMTg0MC9zcmMvV3JvbmdQYXJhbWV0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MzlhODFmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvSURFQTE4NDAvc3JjL1dyb25nUGFyYW1ldGVyLmphdmEKQEAgLTAsMCArMSwxMiBAQAorcHVibGljIGNsYXNzIFdyb25nUGFyYW1ldGVyIHsKKyAgcHVibGljIGJvb2xlYW4gcmVzb2x2ZUFjdGlvbihATm90TnVsbCBPYmplY3QgYWN0aW9uLCBATm90TnVsbCBPYmplY3QgY29tYmF0YW50LCBATm90TnVsbCBPYmplY3QgdXNlcklucHV0UHJvdmlkZXIpIHsKKyAgICByZXR1cm4gZmFsc2U7CisgIH0KKworICBwdWJsaWMgdm9pZCBmb28oKSB7CisgICAgcmVzb2x2ZUFjdGlvbigKKyAgICAgIG5ldyBPYmplY3QoKSwKKyAgICAgIG5ldyBPYmplY3QoKSwKKyAgICAgIG51bGwpOyAvLyBMYXN0IHBhcmFtZXRlciBzaG91bGQgYmUgaGlnaGxpZ2h0ZWQKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RhdGFGbG93L0lERUFERVYxMDQ4OS9leHBlY3RlZC54bWwgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy9JREVBREVWMTA0ODkvZXhwZWN0ZWQueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJiNjI1NmYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy9JREVBREVWMTA0ODkvZXhwZWN0ZWQueG1sCkBAIC0wLDAgKzEsMTMgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8cHJvYmxlbXM+CisgIDxwcm9ibGVtPgorICAgIDxmaWxlPklERUFERVYxMDQ4OS5qYXZhPC9maWxlPgorICAgIDxsaW5lPjEwPC9saW5lPgorICAgIDxkZXNjcmlwdGlvbj5NZXRob2QgaW52b2NhdGlvbiAncy5sZW5ndGgoKScgbWF5IHByb2R1Y2UgTnVsbFBvaW50ZXJFeGNlcHRpb248L2Rlc2NyaXB0aW9uPgorICA8L3Byb2JsZW0+CisgIDxwcm9ibGVtPgorICAgIDxmaWxlPklERUFERVYxMDQ4OS5qYXZhPC9maWxlPgorICAgIDxsaW5lPjEyPC9saW5lPgorICAgIDxkZXNjcmlwdGlvbj5NZXRob2QgaW52b2NhdGlvbiAncy5sZW5ndGgoKScgbWF5IHByb2R1Y2UgTnVsbFBvaW50ZXJFeGNlcHRpb248L2Rlc2NyaXB0aW9uPgorICA8L3Byb2JsZW0+Cis8L3Byb2JsZW1zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RhdGFGbG93L0lERUFERVYxMDQ4OS9zcmMvSURFQURFVjEwNDg5LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy9JREVBREVWMTA0ODkvc3JjL0lERUFERVYxMDQ4OS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYwMjU5NDcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy9JREVBREVWMTA0ODkvc3JjL0lERUFERVYxMDQ4OS5qYXZhCkBAIC0wLDAgKzEsMjMgQEAKK2NsYXNzIElERUFERVYxMDQ4OSB7CisgICAgc3RhdGljIFN0cmluZyBnZXRTKCkgeworICAgICAgICByZXR1cm4gbnVsbDsKKyAgICB9CisKKyAgICBzdGF0aWMgdm9pZCBmKCkgeworICAgICAgICBTdHJpbmcgcyA9IGdldFMoKTsKKyAgICAgICAgaWYgKHMgIT0gbnVsbCkgcy5sZW5ndGgoKTsKKyAgICAgICAgaWYgKGZvbygpKSB7CisgICAgICAgICAgaW50W10gaTEgPSBuZXcgaW50IFtzLmxlbmd0aCgpXTsKKyAgICAgICAgfSBlbHNlIGlmIChmb28oKSkgeworICAgICAgICAgIGludFtdIGkyID0gbmV3IGludCBbXSB7cy5sZW5ndGgoKX07CisgICAgICAgIH0gZWxzZSBpZiAoZm9vKCkpIHsKKyAgICAgICAgICBpbnRbXVtdIGkzID0gbmV3IGludCBbKHMgPSAiIikubGVuZ3RoKCldW3MubGVuZ3RoKCldOworICAgICAgICB9IGVsc2V7CisgICAgICAgICAgaW50W10gaTQgPSBuZXcgaW50W10geyhzID0gIiIpLmxlbmd0aCgpLCBzLmxlbmd0aCgpfTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHByaXZhdGUgc3RhdGljIGJvb2xlYW4gZm9vKCkgeworICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy9JREVBREVWMTEwMzMvZXhwZWN0ZWQueG1sIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvSURFQURFVjExMDMzL2V4cGVjdGVkLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NzA0ZDkxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvSURFQURFVjExMDMzL2V4cGVjdGVkLnhtbApAQCAtMCwwICsxLDIgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8cHJvYmxlbXMvPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RhdGFGbG93L0lERUFERVYxMTAzMy9zcmMvUmlnaHRBc3NvY2lhdGl2ZUFzc2lnbm1lbnQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RhdGFGbG93L0lERUFERVYxMTAzMy9zcmMvUmlnaHRBc3NvY2lhdGl2ZUFzc2lnbm1lbnQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jM2IxYWZmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvSURFQURFVjExMDMzL3NyYy9SaWdodEFzc29jaWF0aXZlQXNzaWdubWVudC5qYXZhCkBAIC0wLDAgKzEsNiBAQAorcHVibGljIGNsYXNzIE5vbmNvbnN0YW50Q29uZGl0aW9uIHsKKwl2b2lkIHRlc3QoYm9vbGVhbiBmbGFnKSB7CisJCWlmIChmbGFnID09IChmbGFnID0gdHJ1ZSkpIHsKKwkJfQorCX0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy9JREVBREVWMTMxNTMvZXhwZWN0ZWQueG1sIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvSURFQURFVjEzMTUzL2V4cGVjdGVkLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MDhmMDVjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvSURFQURFVjEzMTUzL2V4cGVjdGVkLnhtbApAQCAtMCwwICsxLDggQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8cHJvYmxlbXM+CisgIDxwcm9ibGVtPgorICAgIDxmaWxlPk5wZS5qYXZhPC9maWxlPgorICAgIDxsaW5lPjk8L2xpbmU+CisgICAgPGRlc2NyaXB0aW9uPkNvbmRpdGlvbiAnZm9vICE9IG51bGwnIGlzIGFsd2F5cyAndHJ1ZSc8L2Rlc2NyaXB0aW9uPgorICA8L3Byb2JsZW0+Cis8L3Byb2JsZW1zPgpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvSURFQURFVjEzMTUzL3NyYy9OcGUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RhdGFGbG93L0lERUFERVYxMzE1My9zcmMvTnBlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmM5MWJlNQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RhdGFGbG93L0lERUFERVYxMzE1My9zcmMvTnBlLmphdmEKQEAgLTAsMCArMSwxMiBAQAoraW1wb3J0IG9yZy5qZXRicmFpbnMuYW5ub3RhdGlvbnMuKjsKKworaW1wb3J0IGphdmEudXRpbC4qOworCitjbGFzcyBUZXN0IHsKKyAgIHZvaWQgZm9vKCkgeworICAgICBTdHJpbmdbXSBkYXRhID0gbmV3IFN0cmluZ1tdIHsiYWJzIiwgImRlZiJ9OworICAgICBmb3IgKEBOb3ROdWxsIFN0cmluZyBmb286IGRhdGEpIHsKKyAgICAgICBhc3NlcnQgZm9vICE9IG51bGw7IC8vIENvbmRpdGlvbiBhbHdheXMgdHJ1ZQorICAgICB9CisgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvSURFQURFVjEzMTU2L2V4cGVjdGVkLnhtbCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RhdGFGbG93L0lERUFERVYxMzE1Ni9leHBlY3RlZC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzYzYzkyNQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RhdGFGbG93L0lERUFERVYxMzE1Ni9leHBlY3RlZC54bWwKQEAgLTAsMCArMSwyIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPHByb2JsZW1zLz4KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RhdGFGbG93L0lERUFERVYxMzE1Ni9zcmMvTnBlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy9JREVBREVWMTMxNTYvc3JjL05wZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY5NjU4NzUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy9JREVBREVWMTMxNTYvc3JjL05wZS5qYXZhCkBAIC0wLDAgKzEsMTUgQEAKK2ltcG9ydCBvcmcuamV0YnJhaW5zLmFubm90YXRpb25zLio7CisKK2NsYXNzIEZvbyB7CisgIHB1YmxpYyB2b2lkIHgoKSB0aHJvd3MgSU9FeGNlcHRpb24geworICAgICBATnVsbGFibGUgU3RyaW5nIGZvbyA9ICIiOworICAgICB3aGlsZSAoZm9vLmxlbmd0aCgpID09IDApIHsKKyAgICAgICBmb28gPSB5KCk7CisgICAgICAgaWYgKGZvbyA9PSBudWxsKSB0aHJvdyBuZXcgSU9FeGNlcHRpb24oImZvbyIpOworICAgICB9CisgIH0KKyAgCisgIHB1YmxpYyBTdHJpbmcgeSgpIHsKKyAgICAgcmV0dXJuICIiOworICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy9JREVBREVWMTU1ODMvZXhwZWN0ZWQueG1sIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvSURFQURFVjE1NTgzL2V4cGVjdGVkLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZGU2Zjg3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvSURFQURFVjE1NTgzL2V4cGVjdGVkLnhtbApAQCAtMCwwICsxLDE4IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPHByb2JsZW1zPgorICA8cHJvYmxlbT4KKyAgICA8ZmlsZT5OcGUuamF2YTwvZmlsZT4KKyAgICA8bGluZT4xNDwvbGluZT4KKyAgICA8ZGVzY3JpcHRpb24+J2xlbmd0aCcgbWF5IHByb2R1Y2UgJ051bGxQb2ludGVyRXhjZXB0aW9uJzwvZGVzY3JpcHRpb24+CisgIDwvcHJvYmxlbT4KKyAgPHByb2JsZW0+CisgICAgPGZpbGU+TnBlLmphdmE8L2ZpbGU+CisgICAgPGxpbmU+MTg8L2xpbmU+CisgICAgPGRlc2NyaXB0aW9uPidsZW5ndGgnIG1heSBwcm9kdWNlICdOdWxsUG9pbnRlckV4Y2VwdGlvbic8L2Rlc2NyaXB0aW9uPgorICA8L3Byb2JsZW0+CisgIDxwcm9ibGVtPgorICAgIDxmaWxlPk5wZS5qYXZhPC9maWxlPgorICAgIDxsaW5lPjI3PC9saW5lPgorICAgIDxkZXNjcmlwdGlvbj4nbGVuZ3RoJyBtYXkgcHJvZHVjZSAnTnVsbFBvaW50ZXJFeGNlcHRpb24nPC9kZXNjcmlwdGlvbj4KKyAgPC9wcm9ibGVtPgorPC9wcm9ibGVtcz4KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RhdGFGbG93L0lERUFERVYxNTU4My9zcmMvTnBlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy9JREVBREVWMTU1ODMvc3JjL05wZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMyMTM2NjIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy9JREVBREVWMTU1ODMvc3JjL05wZS5qYXZhCkBAIC0wLDAgKzEsMzEgQEAKK2ltcG9ydCBvcmcuamV0YnJhaW5zLmFubm90YXRpb25zLio7CisKK2ltcG9ydCBqYXZhLnV0aWwuKjsKKworY2xhc3MgVGVzdCB7CisgICAgQE51bGxhYmxlCisgICAgcHVibGljIFN0cmluZyBnZXRTdHJpbmcoU3RyaW5nIHMpIHsKKyAgICAgICAgcmV0dXJuIG51bGw7CisgICAgfQorCisgICAgdm9pZCB0ZXN0KENvbGxlY3Rpb248U3RyaW5nPiBmb29zKSB7CisgICAgICAgIFRlc3QgdCA9IG5ldyBUZXN0KCk7CisKKyAgICAgICAgZmluYWwgaW50IGkgPSB0LmdldFN0cmluZygiZm9vIikubGVuZ3RoKCk7CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiaSA9ICIgKyBpKTsKKworICAgICAgICBmb3IgKFN0cmluZyBmb28gOiBmb29zKSB7CisgICAgICAgICAgICBmaW5hbCBpbnQgaiA9IHQuZ2V0U3RyaW5nKGZvbykubGVuZ3RoKCk7CisgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oImkgPSAiICsgaik7CisgICAgICAgIH0KKyAgICB9CisKKyAgICB2b2lkIHRlc3QyKENvbGxlY3Rpb248U3RyaW5nPiBmb29zKSB7CisgICAgICAgIFRlc3QgdCA9IG5ldyBUZXN0KCk7CisKKyAgICAgICAgZm9yIChJdGVyYXRvcjxTdHJpbmc+IGl0ZXJhdG9yID0gZm9vcy5pdGVyYXRvcigpOyBpdGVyYXRvci5oYXNOZXh0KCk7KSB7CisgICAgICAgICAgICBmaW5hbCBpbnQgaSA9IGdldFN0cmluZyhpdGVyYXRvci5uZXh0KCkpLmxlbmd0aCgpOworICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJpID0gIiArIGkpOworICAgICAgICB9CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RhdGFGbG93L0lERUFERVYxNTc1L2V4cGVjdGVkLnhtbCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RhdGFGbG93L0lERUFERVYxNTc1L2V4cGVjdGVkLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMTQxNWZiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvSURFQURFVjE1NzUvZXhwZWN0ZWQueG1sCkBAIC0wLDAgKzEsOCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxwcm9ibGVtcz4KKyAgPHByb2JsZW0+CisgICAgPGZpbGU+VGVzdC5qYXZhPC9maWxlPgorICAgIDxsaW5lPjQ8L2xpbmU+CisgICAgPGRlc2NyaXB0aW9uPkNvbmRpdGlvbiAndGVzdCcgYXQgdGhlIGxlZnQgc2lkZSBpcyBhbHdheXMgJ3RydWUnPC9kZXNjcmlwdGlvbj4KKyAgPC9wcm9ibGVtPgorPC9wcm9ibGVtcz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy9JREVBREVWMTU3NS9zcmMvVGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvSURFQURFVjE1NzUvc3JjL1Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMzVmZTA5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvSURFQURFVjE1NzUvc3JjL1Rlc3QuamF2YQpAQCAtMCwwICsxLDYgQEAKK2NsYXNzIFRlc3RHZW5lcmljc0luc3RhbmNlb2YgeworICAgIHB1YmxpYyB2b2lkIGZvbyhPYmplY3QgbykgeworICAgICAgYm9vbGVhbiB0ZXN0ID0gdHJ1ZTsKKyAgICAgIHRlc3QgJj0gby5oYXNoQ29kZSgpID4gMzsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy9JREVBREVWMjYwNS9leHBlY3RlZC54bWwgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy9JREVBREVWMjYwNS9leHBlY3RlZC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTNlNzM2ZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RhdGFGbG93L0lERUFERVYyNjA1L2V4cGVjdGVkLnhtbApAQCAtMCwwICsxLDg2IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPHByb2JsZW1zPgorICA8cHJvYmxlbT4KKyAgICA8ZmlsZT5BbmRBc3NpZ24uamF2YTwvZmlsZT4KKyAgICA8bGluZT4xOTwvbGluZT4KKyAgICA8ZGVzY3JpcHRpb24+Q29uZGl0aW9uIGlzIGFsd2F5cyB0cnVlPC9kZXNjcmlwdGlvbj4KKyAgPC9wcm9ibGVtPgorICA8cHJvYmxlbT4KKyAgICA8ZmlsZT5BbmRBc3NpZ24uamF2YTwvZmlsZT4KKyAgICA8bGluZT4yNjwvbGluZT4KKyAgICA8ZGVzY3JpcHRpb24+Q29uZGl0aW9uIGlzIGFsd2F5cyBmYWxzZTwvZGVzY3JpcHRpb24+CisgIDwvcHJvYmxlbT4KKyAgPHByb2JsZW0+CisgICAgPGZpbGU+QW5kQXNzaWduLmphdmE8L2ZpbGU+CisgICAgPGxpbmU+MzM8L2xpbmU+CisgICAgPGRlc2NyaXB0aW9uPkNvbmRpdGlvbiBpcyBhbHdheXMgZmFsc2U8L2Rlc2NyaXB0aW9uPgorICA8L3Byb2JsZW0+CisgIDxwcm9ibGVtPgorICAgIDxmaWxlPkFuZEFzc2lnbi5qYXZhPC9maWxlPgorICAgIDxsaW5lPjQwPC9saW5lPgorICAgIDxkZXNjcmlwdGlvbj5Db25kaXRpb24gaXMgYWx3YXlzIGZhbHNlPC9kZXNjcmlwdGlvbj4KKyAgPC9wcm9ibGVtPgorICA8cHJvYmxlbT4KKyAgICA8ZmlsZT5BbmRBc3NpZ24uamF2YTwvZmlsZT4KKyAgICA8bGluZT40NzwvbGluZT4KKyAgICA8ZGVzY3JpcHRpb24+Q29uZGl0aW9uIGlzIGFsd2F5cyB0cnVlPC9kZXNjcmlwdGlvbj4KKyAgPC9wcm9ibGVtPgorICA8cHJvYmxlbT4KKyAgICA8ZmlsZT5BbmRBc3NpZ24uamF2YTwvZmlsZT4KKyAgICA8bGluZT41NDwvbGluZT4KKyAgICA8ZGVzY3JpcHRpb24+Q29uZGl0aW9uIGlzIGFsd2F5cyB0cnVlPC9kZXNjcmlwdGlvbj4KKyAgPC9wcm9ibGVtPgorICA8cHJvYmxlbT4KKyAgICA8ZmlsZT5BbmRBc3NpZ24uamF2YTwvZmlsZT4KKyAgICA8bGluZT42MTwvbGluZT4KKyAgICA8ZGVzY3JpcHRpb24+Q29uZGl0aW9uIGlzIGFsd2F5cyB0cnVlPC9kZXNjcmlwdGlvbj4KKyAgPC9wcm9ibGVtPgorICA8cHJvYmxlbT4KKyAgICA8ZmlsZT5BbmRBc3NpZ24uamF2YTwvZmlsZT4KKyAgICA8bGluZT42ODwvbGluZT4KKyAgICA8ZGVzY3JpcHRpb24+Q29uZGl0aW9uIGlzIGFsd2F5cyBmYWxzZTwvZGVzY3JpcHRpb24+CisgIDwvcHJvYmxlbT4KKworCisKKyAgPHByb2JsZW0+CisgICAgPGZpbGU+QW5kQXNzaWduLmphdmE8L2ZpbGU+CisgICAgPGxpbmU+MTc8L2xpbmU+CisgICAgPGRlc2NyaXB0aW9uPmxlZnQgYWx3YXlzIHRydWU8L2Rlc2NyaXB0aW9uPgorICA8L3Byb2JsZW0+CisgIDxwcm9ibGVtPgorICAgIDxmaWxlPkFuZEFzc2lnbi5qYXZhPC9maWxlPgorICAgIDxsaW5lPjI0PC9saW5lPgorICAgIDxkZXNjcmlwdGlvbj5sZWZ0IGFsd2F5cyB0cnVlPC9kZXNjcmlwdGlvbj4KKyAgPC9wcm9ibGVtPgorICA8cHJvYmxlbT4KKyAgICA8ZmlsZT5BbmRBc3NpZ24uamF2YTwvZmlsZT4KKyAgICA8bGluZT4zMTwvbGluZT4KKyAgICA8ZGVzY3JpcHRpb24+bGVmdCBhbHdheXMgZmFsc2U8L2Rlc2NyaXB0aW9uPgorICA8L3Byb2JsZW0+CisgIDxwcm9ibGVtPgorICAgIDxmaWxlPkFuZEFzc2lnbi5qYXZhPC9maWxlPgorICAgIDxsaW5lPjM4PC9saW5lPgorICAgIDxkZXNjcmlwdGlvbj5sZWZ0IGFsd2F5cyBmYWxzZTwvZGVzY3JpcHRpb24+CisgIDwvcHJvYmxlbT4KKyAgPHByb2JsZW0+CisgICAgPGZpbGU+QW5kQXNzaWduLmphdmE8L2ZpbGU+CisgICAgPGxpbmU+NDU8L2xpbmU+CisgICAgPGRlc2NyaXB0aW9uPmxlZnQgYWx3YXlzIHRydWU8L2Rlc2NyaXB0aW9uPgorICA8L3Byb2JsZW0+CisgIDxwcm9ibGVtPgorICAgIDxmaWxlPkFuZEFzc2lnbi5qYXZhPC9maWxlPgorICAgIDxsaW5lPjUyPC9saW5lPgorICAgIDxkZXNjcmlwdGlvbj5sZWZ0IGFsd2F5cyB0cnVlPC9kZXNjcmlwdGlvbj4KKyAgPC9wcm9ibGVtPgorICA8cHJvYmxlbT4KKyAgICA8ZmlsZT5BbmRBc3NpZ24uamF2YTwvZmlsZT4KKyAgICA8bGluZT41OTwvbGluZT4KKyAgICA8ZGVzY3JpcHRpb24+bGVmdCBhbHdheXMgZmFsc2U8L2Rlc2NyaXB0aW9uPgorICA8L3Byb2JsZW0+CisgIDxwcm9ibGVtPgorICAgIDxmaWxlPkFuZEFzc2lnbi5qYXZhPC9maWxlPgorICAgIDxsaW5lPjY2PC9saW5lPgorICAgIDxkZXNjcmlwdGlvbj5sZWZ0IGFsd2F5cyBmYWxzZTwvZGVzY3JpcHRpb24+CisgIDwvcHJvYmxlbT4KKzwvcHJvYmxlbXM+CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy9JREVBREVWMjYwNS9zcmMvQW5kQXNzaWduLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy9JREVBREVWMjYwNS9zcmMvQW5kQXNzaWduLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTlmOGM0NQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RhdGFGbG93L0lERUFERVYyNjA1L3NyYy9BbmRBc3NpZ24uamF2YQpAQCAtMCwwICsxLDcyIEBACitwdWJsaWMgY2xhc3MgQW5kQXNzaWduIHsKKyAgcHVibGljIHZvaWQgZm9vKGJvb2xlYW4gcmVzdWx0LCBPYmplY3QgYWNjKSB7CisgICAgcmVzdWx0ICY9IHZlcmlmeShyZXN1bHQgPyBhY2MgOiBudWxsKTsKKyAgfQorCisgIHB1YmxpYyBib29sZWFuIHZlcmlmeShPYmplY3QgbykgeworICAgIFN5c3RlbS5vdXQucHJpbnRsbihvKTsKKyAgICByZXR1cm4gdHJ1ZTsKKyAgfQorCisgIHB1YmxpYyB2b2lkIHBvc2l0aXZlcygpIHsKKyAgICAgYm9vbGVhbiB0ID0gdHJ1ZTsKKyAgICAgYm9vbGVhbiBmID0gZmFsc2U7CisgICAgIGJvb2xlYW4gcjsKKworICAgICByID0gdDsKKyAgICAgciAmPSB0OyAgICAgICAgICAgICAgICAgICAgICAvLyBBbHdheXMgdHJ1ZQorCisgICAgIGlmIChyKSB7ICAgICAgICAgICAgICAgICAgICAgLy8gQWx3YXlzIHRydWUKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJmb28iKTsKKyAgICAgfQorCisgICAgIHIgPSB0OworICAgICByICY9IGY7ICAgICAgICAgICAgICAgICAgICAgIC8vIEFsd2F5cyB0cnVlCisKKyAgICAgaWYgKHIpIHsgICAgICAgICAgICAgICAgICAgICAvLyBBbHdheXMgZmFsc2UKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJmb28iKTsKKyAgICAgfQorCisgICAgIHIgPSBmOworICAgICByICY9IHQ7ICAgICAgICAgICAgICAgICAgICAgIC8vIEFsd2F5cyBmYWxzZQorCisgICAgIGlmIChyKSB7ICAgICAgICAgICAgICAgICAgICAgLy8gQWx3YXlzIGZhbHNlCisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiZm9vIik7CisgICAgIH0KKworICAgICByID0gZjsKKyAgICAgciAmPSBmOyAgICAgICAgICAgICAgICAgICAgICAvLyBBbHdheXMgZmFsc2UKKworICAgICBpZiAocikgeyAgICAgICAgICAgICAgICAgICAgIC8vIEFsd2F5cyBmYWxzZQorICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oImZvbyIpOworICAgICB9CisKKyAgICAgciA9IHQ7CisgICAgIHIgfD0gdCAgICAgICAgICAgICAgICAgICAgICAgLy8gQWx3YXlzIHRydWUKKworICAgICBpZiAocikgeyAgICAgICAgICAgICAgICAgICAgIC8vIEFsd2F5cyB0cnVlCisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiZm9vIik7CisgICAgIH0KKworICAgICByID0gdDsKKyAgICAgciB8PSBmICAgICAgICAgICAgICAgICAgICAgICAvLyBBbHdheXMgdHJ1ZQorCisgICAgIGlmIChyKSB7ICAgICAgICAgICAgICAgICAgICAgLy8gQWx3YXlzIHRydWUKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJmb28iKTsKKyAgICAgfQorCisgICAgIHIgPSBmOworICAgICByIHw9IHQgICAgICAgICAgICAgICAgICAgICAgIC8vIEFsd2F5cyBmYWxzZQorCisgICAgIGlmIChyKSB7ICAgICAgICAgICAgICAgICAgICAgLy8gQWx3YXlzIHRydWUKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJmb28iKTsKKyAgICAgfQorCisgICAgIHIgPSBmOworICAgICByIHw9IGYgICAgICAgICAgICAgICAgICAgICAgLy8gQWx3YXlzIGZhbHNlCisKKyAgICAgaWYgKHIpIHsgICAgICAgICAgICAgICAgICAgICAvLyBBbHdheXMgZmFsc2UKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJmb28iKTsKKyAgICAgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvSURFQURFVjc0NTE4L2V4cGVjdGVkLnhtbCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RhdGFGbG93L0lERUFERVY3NDUxOC9leHBlY3RlZC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDM4OTZlZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RhdGFGbG93L0lERUFERVY3NDUxOC9leHBlY3RlZC54bWwKQEAgLTAsMCArMSwxMCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxwcm9ibGVtcz4KKyAgPHByb2JsZW0+CisgICAgPGZpbGU+Tm9XYXJuaW5ncy5qYXZhPC9maWxlPgorICAgIDxsaW5lPjk8L2xpbmU+CisgICAgPHByb2JsZW1fY2xhc3Mgc2V2ZXJpdHk9IldBUk5JTkciIGF0dHJpYnV0ZV9rZXk9IldBUk5JTkdfQVRUUklCVVRFUyI+Q29uc3RhbnQgY29uZGl0aW9ucyAmYW1wOyBleGNlcHRpb25zPC9wcm9ibGVtX2NsYXNzPgorICAgIDxkZXNjcmlwdGlvbj5Db25kaXRpb24gJmx0O2NvZGUmZ3Q7aSA9PSAxJmx0Oy9jb2RlJmd0OyBpcyBhbHdheXMgJmx0O2NvZGUmZ3Q7dHJ1ZSZsdDsvY29kZSZndDsgd2hlbiByZWFjaGVkPC9kZXNjcmlwdGlvbj4KKyAgPC9wcm9ibGVtPgorPC9wcm9ibGVtcz4KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvSURFQURFVjc0NTE4L3NyYy9Ob1dhcm5pbmdzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy9JREVBREVWNzQ1MTgvc3JjL05vV2FybmluZ3MuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42OGU0YzUyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvSURFQURFVjc0NTE4L3NyYy9Ob1dhcm5pbmdzLmphdmEKQEAgLTAsMCArMSwyMSBAQAoraW1wb3J0IGphdmEudXRpbC4qOworCitwdWJsaWMgY2xhc3MgTm9XYXJuaW5ncyB7CisgICAgcHVibGljIHZvaWQgZigpIHsKKyAgICAgICAgaW50IGkgPSAxOworCisgICAgICAgIGJvb2xlYW4gYiA9IHRydWU7CisgICAgICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgICAgICBpZiAoYiAmJiBpID09IDEpIHsKKyAgICAgICAgICAgICAgICBiID0gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBpID0gZygpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAKKyAgICBwdWJsaWMgaW50IGcoKSB7CisgICAgICByZXR1cm4gMTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy9JREVBREVWNzQ1MThfMi9leHBlY3RlZC54bWwgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy9JREVBREVWNzQ1MThfMi9leHBlY3RlZC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWMyNzJhYgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RhdGFGbG93L0lERUFERVY3NDUxOF8yL2V4cGVjdGVkLnhtbApAQCAtMCwwICsxLDMgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8cHJvYmxlbXMvPgorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy9JREVBREVWNzQ1MThfMi9zcmMvU2FtcGxlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy9JREVBREVWNzQ1MThfMi9zcmMvU2FtcGxlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzNmOGY3ZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RhdGFGbG93L0lERUFERVY3NDUxOF8yL3NyYy9TYW1wbGUuamF2YQpAQCAtMCwwICsxLDE3IEBACitwdWJsaWMgYWJzdHJhY3QgY2xhc3MgTm9XYXJuaW5ncyB7CisgICAgcHVibGljIHZvaWQgZigpIHsKKyAgICAgIGJvb2xlYW4gQSA9IGZhbHNlOworICAgICAgYm9vbGVhbiBCID0gZmFsc2U7CisKKyAgICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgICAgYm9vbGVhbiBmID0gZygpOworICAgICAgICAgIEEgPSBBIHx8IGY7CisgICAgICAgICAgQiA9IEIgfHwgIWY7CisgICAgICAgICAgaWYgKEEgJiYgQikgeworICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgfQorICAgICAgfQorICAgIH0KKyAgCisgICAgcHVibGljIGFic3RyYWN0IGJvb2xlYW4gZygpOworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvSURFQURFVjc3ODE5L2V4cGVjdGVkLnhtbCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RhdGFGbG93L0lERUFERVY3NzgxOS9leHBlY3RlZC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWMyNzJhYgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RhdGFGbG93L0lERUFERVY3NzgxOS9leHBlY3RlZC54bWwKQEAgLTAsMCArMSwzIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPHByb2JsZW1zLz4KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvSURFQURFVjc3ODE5L3NyYy9Ob1dhcm5pbmdzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy9JREVBREVWNzc4MTkvc3JjL05vV2FybmluZ3MuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NmIxNTc2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvSURFQURFVjc3ODE5L3NyYy9Ob1dhcm5pbmdzLmphdmEKQEAgLTAsMCArMSwxMiBAQAoraW1wb3J0IG9yZy5qZXRicmFpbnMuYW5ub3RhdGlvbnMuKjsKKworcHVibGljIGNsYXNzIFRlc3QgeworICBwdWJsaWMgQE51bGxhYmxlIFN0cmluZyBmb287CisgIAorICBwdWJsaWMgdm9pZCB0ZXN0KCkgeworICAgIAorICAgIGlmIChmb28gIT0gbnVsbCAmJiBmb28ubGVuZ3RoKCkgPiAxKSB7CisgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oZm9vLmxlbmd0aCgpKTsKKyAgICB9CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RhdGFGbG93L0lERUFERVY3ODM3MC9leHBlY3RlZC54bWwgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy9JREVBREVWNzgzNzAvZXhwZWN0ZWQueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVjMjcyYWIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy9JREVBREVWNzgzNzAvZXhwZWN0ZWQueG1sCkBAIC0wLDAgKzEsMyBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxwcm9ibGVtcy8+CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RhdGFGbG93L0lERUFERVY3ODM3MC9zcmMvTm9XYXJuaW5ncy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvSURFQURFVjc4MzcwL3NyYy9Ob1dhcm5pbmdzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWNlMmQwNgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RhdGFGbG93L0lERUFERVY3ODM3MC9zcmMvTm9XYXJuaW5ncy5qYXZhCkBAIC0wLDAgKzEsOCBAQAoraW1wb3J0IG9yZy5qZXRicmFpbnMuYW5ub3RhdGlvbnMuTnVsbGFibGU7CisKK3B1YmxpYyBjbGFzcyBOb1dhcm5pbmdzIHsKKyAgICBpbnQgZihATnVsbGFibGUgU3RyaW5nIHZhbHVlKSAgeworICAgICAgICB2YWx1ZSA9IHZhbHVlID09IG51bGwgPyAiIiA6IHZhbHVlOworICAgICAgICByZXR1cm4gdmFsdWUuaGFzaENvZGUoKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy9JbnN0YW5jZW9mL2V4cGVjdGVkLnhtbCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RhdGFGbG93L0luc3RhbmNlb2YvZXhwZWN0ZWQueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgwOTdmNzQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy9JbnN0YW5jZW9mL2V4cGVjdGVkLnhtbApAQCAtMCwwICsxLDkgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8cHJvYmxlbXM+CisgIDxwcm9ibGVtPgorICAgIDxmaWxlPkZvby5qYXZhPC9maWxlPgorICAgIDxsaW5lPjEwPC9saW5lPgorICAgIDxkZXNjcmlwdGlvbj5Db25kaXRpb24gJ28gaW5zdGFuY2VvZiBCJyBpcyBhbHdheXMgZmFsc2U8L2Rlc2NyaXB0aW9uPgorICA8L3Byb2JsZW0+Cis8L3Byb2JsZW1zPgorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy9JbnN0YW5jZW9mL3NyYy9Gb28uamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RhdGFGbG93L0luc3RhbmNlb2Yvc3JjL0Zvby5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAxNjE3MDMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy9JbnN0YW5jZW9mL3NyYy9Gb28uamF2YQpAQCAtMCwwICsxLDE0IEBACitjbGFzcyBBIHsKK30KKworCitjbGFzcyBCIGV4dGVuZHMgQSB7Cit9CisKK2NsYXNzIEMgeworICAgdm9pZCBmb28oT2JqZWN0IG8pIHsKKyAgICAgICBpZiAobyBpbnN0YW5jZW9mIEEgfHwgbyBpbnN0YW5jZW9mIEIpIHsKKyAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJTb21ldGhpbmciKTsKKyAgICAgICB9CisgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvTm90TnVsbEFycmF5L2V4cGVjdGVkLnhtbCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RhdGFGbG93L05vdE51bGxBcnJheS9leHBlY3RlZC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzk2YTMxNQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RhdGFGbG93L05vdE51bGxBcnJheS9leHBlY3RlZC54bWwKQEAgLTAsMCArMSwyIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPHByb2JsZW1zIC8+CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy9Ob3ROdWxsQXJyYXkvc3JjL1Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RhdGFGbG93L05vdE51bGxBcnJheS9zcmMvVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE5NjcxNTUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy9Ob3ROdWxsQXJyYXkvc3JjL1Rlc3QuamF2YQpAQCAtMCwwICsxLDE1IEBACitpbXBvcnQgb3JnLmpldGJyYWlucy5hbm5vdGF0aW9ucy5OdWxsYWJsZTsKK2ltcG9ydCBvcmcuamV0YnJhaW5zLmFubm90YXRpb25zLk5vdE51bGw7CisKK3B1YmxpYyBjbGFzcyBUZXN0TlBFYWZ0ZXJOZXcgeworICBATnVsbGFibGUgT2JqZWN0W10gYXJyOworICB2b2lkIHRlc3QoQE5vdE51bGwgT2JqZWN0W10gbm90bnVsbCkgeworICAgICAgYXJyID0gbm90bnVsbDsKKyAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihhcnIubGVuZ3RoKTsKKyAgfQorCisgIHZvaWQgdGVzdCgpIHsKKyAgICAgIGFyciA9IG5ldyBPYmplY3RbNV07CisgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oYXJyLmxlbmd0aCk7CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RhdGFGbG93L05vdE51bGxMb2NhbFZhcmlhYmxlL2V4cGVjdGVkLnhtbCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RhdGFGbG93L05vdE51bGxMb2NhbFZhcmlhYmxlL2V4cGVjdGVkLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNjYxZTIzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvTm90TnVsbExvY2FsVmFyaWFibGUvZXhwZWN0ZWQueG1sCkBAIC0wLDAgKzEsOCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxwcm9ibGVtcz4KKyAgPHByb2JsZW0+CisgICAgPGZpbGU+TnBlLmphdmE8L2ZpbGU+CisgICAgPGxpbmU+NzwvbGluZT4KKyAgICA8ZGVzY3JpcHRpb24+Q29uZGl0aW9uICdvID09IG51bGwnIGlzIGFsd2F5cyBmYWxzZTwvZGVzY3JpcHRpb24+CisgIDwvcHJvYmxlbT4KKzwvcHJvYmxlbXM+CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy9Ob3ROdWxsTG9jYWxWYXJpYWJsZS9zcmMvTnBlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy9Ob3ROdWxsTG9jYWxWYXJpYWJsZS9zcmMvTnBlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzkzM2Y1YgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RhdGFGbG93L05vdE51bGxMb2NhbFZhcmlhYmxlL3NyYy9OcGUuamF2YQpAQCAtMCwwICsxLDEwIEBACitpbXBvcnQgb3JnLmpldGJyYWlucy5hbm5vdGF0aW9ucy5Ob3ROdWxsOworaW1wb3J0IG9yZy5qZXRicmFpbnMuYW5ub3RhdGlvbnMuTnVsbGFibGU7CisKK3B1YmxpYyBjbGFzcyBOcGUgeworICAgdm9pZCBiYXIoKSB7CisgICAgIGZpbmFsIEBOb3ROdWxsIE9iamVjdCBvID0gY2FsbCgpOworICAgICBpZiAobyA9PSBudWxsKSB7fQorICAgfQorICAgT2JqZWN0IGNhbGwoKSB7cmV0dXJuIG5ldyBPYmplY3QoKTt9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvTm90TnVsbGFibGUvZXhwZWN0ZWQueG1sIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvTm90TnVsbGFibGUvZXhwZWN0ZWQueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM4Yzg1ZmMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy9Ob3ROdWxsYWJsZS9leHBlY3RlZC54bWwKQEAgLTAsMCArMSw5IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPHByb2JsZW1zPgorICA8cHJvYmxlbT4KKyAgICA8ZmlsZT5OcGUuamF2YTwvZmlsZT4KKyAgICA8bGluZT4xMDwvbGluZT4KKyAgICA8ZGVzY3JpcHRpb24+Q29uZGl0aW9uICdvID09IG51bGwnIGlzIGFsd2F5cyBmYWxzZTwvZGVzY3JpcHRpb24+CisgIDwvcHJvYmxlbT4KKzwvcHJvYmxlbXM+CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RhdGFGbG93L05vdE51bGxhYmxlL3NyYy9OcGUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RhdGFGbG93L05vdE51bGxhYmxlL3NyYy9OcGUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNTUzYjUzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvTm90TnVsbGFibGUvc3JjL05wZS5qYXZhCkBAIC0wLDAgKzEsMTIgQEAKK2ltcG9ydCBvcmcuamV0YnJhaW5zLmFubm90YXRpb25zLk5vdE51bGw7CisKK3B1YmxpYyBjbGFzcyBOcGUgeworICAgQE5vdE51bGwgT2JqZWN0IGZvbygpIHsKKyAgICAgcmV0dXJuIG5ldyBPYmplY3QoKTsKKyAgIH0KKworICAgdm9pZCBiYXIoKSB7CisgICAgIE9iamVjdCBvID0gZm9vKCk7CisgICAgIGlmIChvID09IG51bGwpIFN5c3RlbS5vdXQucHJpbnRsbigiQ2FuJ3QgYmUiKTsKKyAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy9Ob3ROdWxsYWJsZVBhcmFtZXRlci9leHBlY3RlZC54bWwgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy9Ob3ROdWxsYWJsZVBhcmFtZXRlci9leHBlY3RlZC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDE5OWFlMQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RhdGFGbG93L05vdE51bGxhYmxlUGFyYW1ldGVyL2V4cGVjdGVkLnhtbApAQCAtMCwwICsxLDkgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8cHJvYmxlbXM+CisgIDxwcm9ibGVtPgorICAgIDxmaWxlPk5wZS5qYXZhPC9maWxlPgorICAgIDxsaW5lPjk8L2xpbmU+CisgICAgPGRlc2NyaXB0aW9uPlBhc3NpbmcgbnVsbCBhcmd1bWVudCB0byBwYXJhbWV0ZXIgYW5ub3RhdGVkIGFzIEBOb3ROdWxsPC9kZXNjcmlwdGlvbj4KKyAgPC9wcm9ibGVtPgorPC9wcm9ibGVtcz4KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvTm90TnVsbGFibGVQYXJhbWV0ZXIvc3JjL05wZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvTm90TnVsbGFibGVQYXJhbWV0ZXIvc3JjL05wZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ4YTJhNmYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy9Ob3ROdWxsYWJsZVBhcmFtZXRlci9zcmMvTnBlLmphdmEKQEAgLTAsMCArMSwxMSBAQAoraW1wb3J0IG9yZy5qZXRicmFpbnMuYW5ub3RhdGlvbnMuTm90TnVsbDsKKworcHVibGljIGNsYXNzIE5wZSB7CisgICBPYmplY3QgZm9vKEBOb3ROdWxsIE9iamVjdCBvKSB7CisgICAgIHJldHVybiBvOworICAgfQorCisgICB2b2lkIGJhcigpIHsKKyAgICAgT2JqZWN0IG8gPSBmb28obnVsbCk7IC8vIG51bGwgc2hvdWxkIG5vdCBiZSBwYXNzZWQgaGVyZS4KKyAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy9Ob3ROdWxsYWJsZVBhcmFtZXRlcjIvZXhwZWN0ZWQueG1sIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvTm90TnVsbGFibGVQYXJhbWV0ZXIyL2V4cGVjdGVkLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZWE2NWU3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvTm90TnVsbGFibGVQYXJhbWV0ZXIyL2V4cGVjdGVkLnhtbApAQCAtMCwwICsxLDkgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8cHJvYmxlbXM+CisgIDxwcm9ibGVtPgorICAgIDxmaWxlPk5wZS5qYXZhPC9maWxlPgorICAgIDxsaW5lPjU8L2xpbmU+CisgICAgPGRlc2NyaXB0aW9uPkNvbmRpdGlvbiAnbyA9PSBudWxsJyBpcyBhbHdheXMgZmFsc2U8L2Rlc2NyaXB0aW9uPgorICA8L3Byb2JsZW0+Cis8L3Byb2JsZW1zPgorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy9Ob3ROdWxsYWJsZVBhcmFtZXRlcjIvc3JjL05wZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvTm90TnVsbGFibGVQYXJhbWV0ZXIyL3NyYy9OcGUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MjBhYzA5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvTm90TnVsbGFibGVQYXJhbWV0ZXIyL3NyYy9OcGUuamF2YQpAQCAtMCwwICsxLDEwIEBACitpbXBvcnQgb3JnLmpldGJyYWlucy5hbm5vdGF0aW9ucy5Ob3ROdWxsOworCitwdWJsaWMgY2xhc3MgTnBlIHsKKyAgIE9iamVjdCBmb28oQE5vdE51bGwgT2JqZWN0IG8pIHsKKyAgICAgaWYgKG8gPT0gbnVsbCkgeworICAgICAgIC8vIFNob3VsZCBub3QgZ2V0IHRoZXJlLgorICAgICB9CisgICAgIHJldHVybiBvOworICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RhdGFGbG93L051bGxhYmxlL2V4cGVjdGVkLnhtbCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RhdGFGbG93L051bGxhYmxlL2V4cGVjdGVkLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lOTI0NTM0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvTnVsbGFibGUvZXhwZWN0ZWQueG1sCkBAIC0wLDAgKzEsOCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxwcm9ibGVtcz4KKyAgPHByb2JsZW0+CisgICAgPGZpbGU+TnBlLmphdmE8L2ZpbGU+CisgICAgPGxpbmU+MTQ8L2xpbmU+CisgICAgPGRlc2NyaXB0aW9uPkFyZ3VtZW50ICdudWxsYWJsZSgpJyBtaWdodCBiZSBudWxsPC9kZXNjcmlwdGlvbj4KKyAgPC9wcm9ibGVtPgorPC9wcm9ibGVtcz4KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RhdGFGbG93L051bGxhYmxlL3NyYy9OcGUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RhdGFGbG93L051bGxhYmxlL3NyYy9OcGUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZDcxNjY0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvTnVsbGFibGUvc3JjL05wZS5qYXZhCkBAIC0wLDAgKzEsMTYgQEAKK2ltcG9ydCBvcmcuamV0YnJhaW5zLmFubm90YXRpb25zLk5vdE51bGw7CitpbXBvcnQgb3JnLmpldGJyYWlucy5hbm5vdGF0aW9ucy5OdWxsYWJsZTsKKworcHVibGljIGNsYXNzIE5wZSB7CisgICBPYmplY3QgZm9vKEBOb3ROdWxsIE9iamVjdCBvKSB7CisgICAgIHJldHVybiBvOworICAgfQorCisgICBATnVsbGFibGUgT2JqZWN0IG51bGxhYmxlKCkgeworICAgICByZXR1cm4gbnVsbDsKKyAgIH0KKworICAgdm9pZCBiYXIoKSB7CisgICAgIE9iamVjdCBvID0gZm9vKG51bGxhYmxlKCkpOyAvLyBudWxsIHNob3VsZCBub3QgYmUgcGFzc2VkIGhlcmUuCisgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvTnVsbGFibGVBc3NpZ25tZW50L2V4cGVjdGVkLnhtbCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RhdGFGbG93L051bGxhYmxlQXNzaWdubWVudC9leHBlY3RlZC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2MyY2VhYwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RhdGFGbG93L051bGxhYmxlQXNzaWdubWVudC9leHBlY3RlZC54bWwKQEAgLTAsMCArMSwxMyBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxwcm9ibGVtcz4KKyAgPHByb2JsZW0+CisgICAgPGZpbGU+TnBlLmphdmE8L2ZpbGU+CisgICAgPGxpbmU+MTI8L2xpbmU+CisgICAgPGRlc2NyaXB0aW9uPkV4cHJlc3Npb24gJ28nIG1pZ2h0IGV2YWx1YXRlIHRvIG51bGw8L2Rlc2NyaXB0aW9uPgorICA8L3Byb2JsZW0+CisgIDxwcm9ibGVtPgorICAgIDxmaWxlPk5wZS5qYXZhPC9maWxlPgorICAgIDxsaW5lPjEzPC9saW5lPgorICAgIDxkZXNjcmlwdGlvbj5FeHByZXNzaW9uICdvJyBtaWdodCBldmFsdWF0ZSB0byBudWxsPC9kZXNjcmlwdGlvbj4KKyAgPC9wcm9ibGVtPgorPC9wcm9ibGVtcz4KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RhdGFGbG93L051bGxhYmxlQXNzaWdubWVudC9zcmMvTnBlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy9OdWxsYWJsZUFzc2lnbm1lbnQvc3JjL05wZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVhZTUwNjEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy9OdWxsYWJsZUFzc2lnbm1lbnQvc3JjL05wZS5qYXZhCkBAIC0wLDAgKzEsMTUgQEAKK2ltcG9ydCBvcmcuamV0YnJhaW5zLmFubm90YXRpb25zLk5vdE51bGw7CitpbXBvcnQgb3JnLmpldGJyYWlucy5hbm5vdGF0aW9ucy5OdWxsYWJsZTsKKworcHVibGljIGNsYXNzIE5wZSB7CisgICBATm90TnVsbCBPYmplY3QgYUZpZWxkOworICAgQE51bGxhYmxlIE9iamVjdCBudWxsYWJsZSgpIHsKKyAgICAgcmV0dXJuIG51bGw7CisgICB9CisKKyAgIHZvaWQgYmFyKCkgeworICAgICBPYmplY3QgbyA9IG51bGxhYmxlKCk7CisgICAgIGFGaWVsZCA9IG87CisgICAgIEBOb3ROdWxsIE9iamVjdCBhTG9jYWxWYXJpYWJsZSA9IG87CisgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvTnVsbGFibGVMb2NhbFZhcmlhYmxlL2V4cGVjdGVkLnhtbCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RhdGFGbG93L051bGxhYmxlTG9jYWxWYXJpYWJsZS9leHBlY3RlZC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODMzMDJiMQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RhdGFGbG93L051bGxhYmxlTG9jYWxWYXJpYWJsZS9leHBlY3RlZC54bWwKQEAgLTAsMCArMSw4IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPHByb2JsZW1zPgorICA8cHJvYmxlbT4KKyAgICA8ZmlsZT5OcGUuamF2YTwvZmlsZT4KKyAgICA8bGluZT43PC9saW5lPgorICAgIDxkZXNjcmlwdGlvbj4nby5oYXNoQ29kZSgpJyBtYXkgcHJvZHVjZSBOdWxsUG9pbnRlckV4Y2VwdGlvbjwvZGVzY3JpcHRpb24+CisgIDwvcHJvYmxlbT4KKzwvcHJvYmxlbXM+CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy9OdWxsYWJsZUxvY2FsVmFyaWFibGUvc3JjL05wZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvTnVsbGFibGVMb2NhbFZhcmlhYmxlL3NyYy9OcGUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZTIzMjg1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvTnVsbGFibGVMb2NhbFZhcmlhYmxlL3NyYy9OcGUuamF2YQpAQCAtMCwwICsxLDEzIEBACitpbXBvcnQgb3JnLmpldGJyYWlucy5hbm5vdGF0aW9ucy5Ob3ROdWxsOworaW1wb3J0IG9yZy5qZXRicmFpbnMuYW5ub3RhdGlvbnMuTnVsbGFibGU7CisKK3B1YmxpYyBjbGFzcyBOcGUgeworICAgdm9pZCBiYXIoKSB7CisgICAgIGZpbmFsIEBOdWxsYWJsZSBPYmplY3QgbyA9IGZvbygpOworICAgICBvLmhhc2hDb2RlKCk7IC8vIE5QRQorICAgfQorCisgICBATnVsbGFibGUgT2JqZWN0IGZvbygpIHsKKyAgICAgcmV0dXJuIG51bGw7CisgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy9OdWxsYWJsZVByb2JsZW1UaHJvdWdoQ2FzdC9leHBlY3RlZC54bWwgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy9OdWxsYWJsZVByb2JsZW1UaHJvdWdoQ2FzdC9leHBlY3RlZC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjdlYjVlOAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RhdGFGbG93L051bGxhYmxlUHJvYmxlbVRocm91Z2hDYXN0L2V4cGVjdGVkLnhtbApAQCAtMCwwICsxLDggQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8cHJvYmxlbXM+CisgIDxwcm9ibGVtPgorICAgIDxmaWxlPk5wZS5qYXZhPC9maWxlPgorICAgIDxsaW5lPjY8L2xpbmU+CisgICAgPGRlc2NyaXB0aW9uPk1ldGhvZCBpbnZvY2F0aW9uICZsdDtjb2RlJmd0OygoU29tZUludGVyZmFjZUltcGwpeCkuYmFyKCkmbHQ7L2NvZGUmZ3Q7IG1heSBwcm9kdWNlICZsdDtjb2RlJmd0O2phdmEubGFuZy5OdWxsUG9pbnRlckV4Y2VwdGlvbiZsdDsvY29kZSZndDs8L2Rlc2NyaXB0aW9uPgorICA8L3Byb2JsZW0+Cis8L3Byb2JsZW1zPgpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvTnVsbGFibGVQcm9ibGVtVGhyb3VnaENhc3Qvc3JjL05wZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvTnVsbGFibGVQcm9ibGVtVGhyb3VnaENhc3Qvc3JjL05wZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU5Mzc1OTEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy9OdWxsYWJsZVByb2JsZW1UaHJvdWdoQ2FzdC9zcmMvTnBlLmphdmEKQEAgLTAsMCArMSwxOCBAQAoraW1wb3J0IG9yZy5qZXRicmFpbnMuYW5ub3RhdGlvbnMuTnVsbGFibGU7CisKK3B1YmxpYyBjbGFzcyBOcGUgeworICAKKyAgdm9pZCBmb28oQE51bGxhYmxlIFNvbWVJbnRlcmZhY2UgeCkgeworICAgICgoU29tZUludGVyZmFjZUltcGwpeCkuYmFyKCk7CisgIH0KKworICBpbnRlcmZhY2UgU29tZUludGVyZmFjZSB7CisgICAgdm9pZCBiYXIoKTsKKyAgfQorCisgIGNsYXNzIFNvbWVJbnRlcmZhY2VJbXBsIGltcGxlbWVudHMgU29tZUludGVyZmFjZSB7CisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIHZvaWQgYmFyKCkgeworICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RhdGFGbG93L051bGxhYmxlUmV0dXJuL2V4cGVjdGVkLnhtbCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RhdGFGbG93L051bGxhYmxlUmV0dXJuL2V4cGVjdGVkLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZGQzZWEwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvTnVsbGFibGVSZXR1cm4vZXhwZWN0ZWQueG1sCkBAIC0wLDAgKzEsOCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxwcm9ibGVtcz4KKyAgPHByb2JsZW0+CisgICAgPGZpbGU+TnBlLmphdmE8L2ZpbGU+CisgICAgPGxpbmU+NjwvbGluZT4KKyAgICA8ZGVzY3JpcHRpb24+bnVsbCBpcyByZXR1cm5lZDwvZGVzY3JpcHRpb24+CisgIDwvcHJvYmxlbT4KKzwvcHJvYmxlbXM+CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy9OdWxsYWJsZVJldHVybi9zcmMvTnBlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy9OdWxsYWJsZVJldHVybi9zcmMvTnBlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjI4MDZhMAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RhdGFGbG93L051bGxhYmxlUmV0dXJuL3NyYy9OcGUuamF2YQpAQCAtMCwwICsxLDggQEAKK2ltcG9ydCBvcmcuamV0YnJhaW5zLmFubm90YXRpb25zLk5vdE51bGw7CitpbXBvcnQgb3JnLmpldGJyYWlucy5hbm5vdGF0aW9ucy5OdWxsYWJsZTsKKworcHVibGljIGNsYXNzIE5wZSB7CisgICBATm90TnVsbCBPYmplY3QgZm9vKCkgeworICAgICByZXR1cm4gbnVsbDsKKyAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy9OdWxsYWJsZVJldHVybjEvZXhwZWN0ZWQueG1sIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvTnVsbGFibGVSZXR1cm4xL2V4cGVjdGVkLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YzQ1OGVhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvTnVsbGFibGVSZXR1cm4xL2V4cGVjdGVkLnhtbApAQCAtMCwwICsxLDggQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8cHJvYmxlbXM+CisgIDxwcm9ibGVtPgorICAgIDxmaWxlPlRlc3QuamF2YTwvZmlsZT4KKyAgICA8bGluZT44PC9saW5lPgorICAgIDxkZXNjcmlwdGlvbj5FeHByZXNzaW9uICdyZXMnIG1pZ2h0IGV2YWx1YXRlIHRvIG51bGwgYnV0IGlzIHJldHVybmVkIGJ5IHRoZSBtZXRob2QgZGVjbGFyZWQgYXMgQE5vdE51bGw8L2Rlc2NyaXB0aW9uPgorICA8L3Byb2JsZW0+Cis8L3Byb2JsZW1zPgpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvTnVsbGFibGVSZXR1cm4xL3NyYy9UZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy9OdWxsYWJsZVJldHVybjEvc3JjL1Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YTczY2QyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvTnVsbGFibGVSZXR1cm4xL3NyYy9UZXN0LmphdmEKQEAgLTAsMCArMSwxMCBAQAoraW1wb3J0IG9yZy5qZXRicmFpbnMuYW5ub3RhdGlvbnMuTm90TnVsbDsKK2ltcG9ydCBvcmcuamV0YnJhaW5zLmFubm90YXRpb25zLk51bGxhYmxlOworCitjbGFzcyBUZXN0IHsKKyAgQE5vdE51bGwgT2JqZWN0IGZvbygpIHsKKyAgICBPYmplY3QgcmVzOworICAgIHJlcyA9IG51bGw7CisgICAgcmV0dXJuIHJlczsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RhdGFGbG93L051bGxhYmxlVGhyb3VnaENhc3QvZXhwZWN0ZWQueG1sIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvTnVsbGFibGVUaHJvdWdoQ2FzdC9leHBlY3RlZC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGEzYWY1NgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RhdGFGbG93L051bGxhYmxlVGhyb3VnaENhc3QvZXhwZWN0ZWQueG1sCkBAIC0wLDAgKzEsOCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxwcm9ibGVtcz4KKyAgPHByb2JsZW0+CisgICAgPGZpbGU+TnBlLmphdmE8L2ZpbGU+CisgICAgPGxpbmU+MTQ8L2xpbmU+CisgICAgPGRlc2NyaXB0aW9uPkFyZ3VtZW50ICcoT2JqZWN0KW51bGxhYmxlKCknIG1pZ2h0IGJlIG51bGw8L2Rlc2NyaXB0aW9uPgorICA8L3Byb2JsZW0+Cis8L3Byb2JsZW1zPgpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvTnVsbGFibGVUaHJvdWdoQ2FzdC9zcmMvTnBlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy9OdWxsYWJsZVRocm91Z2hDYXN0L3NyYy9OcGUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYmFmMmFkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvTnVsbGFibGVUaHJvdWdoQ2FzdC9zcmMvTnBlLmphdmEKQEAgLTAsMCArMSwxNiBAQAoraW1wb3J0IG9yZy5qZXRicmFpbnMuYW5ub3RhdGlvbnMuTm90TnVsbDsKK2ltcG9ydCBvcmcuamV0YnJhaW5zLmFubm90YXRpb25zLk51bGxhYmxlOworCitwdWJsaWMgY2xhc3MgTnBlIHsKKyAgIE9iamVjdCBmb28oQE5vdE51bGwgT2JqZWN0IG8pIHsKKyAgICAgcmV0dXJuIG87CisgICB9CisKKyAgIEBOdWxsYWJsZSBPYmplY3QgbnVsbGFibGUoKSB7CisgICAgIHJldHVybiBudWxsOworICAgfQorCisgICB2b2lkIGJhcigpIHsKKyAgICAgT2JqZWN0IG8gPSBmb28oKE9iamVjdCludWxsYWJsZSgpKTsgLy8gbnVsbCBzaG91bGQgbm90IGJlIHBhc3NlZCBoZXJlLgorICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RhdGFGbG93L051bGxhYmxlVGhyb3VnaFZhcmlhYmxlL2V4cGVjdGVkLnhtbCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RhdGFGbG93L051bGxhYmxlVGhyb3VnaFZhcmlhYmxlL2V4cGVjdGVkLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ODM3NjE0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvTnVsbGFibGVUaHJvdWdoVmFyaWFibGUvZXhwZWN0ZWQueG1sCkBAIC0wLDAgKzEsOCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxwcm9ibGVtcz4KKyAgPHByb2JsZW0+CisgICAgPGZpbGU+TnBlLmphdmE8L2ZpbGU+CisgICAgPGxpbmU+MTU8L2xpbmU+CisgICAgPGRlc2NyaXB0aW9uPkFyZ3VtZW50ICdvJyBtaWdodCBiZSBudWxsPC9kZXNjcmlwdGlvbj4KKyAgPC9wcm9ibGVtPgorPC9wcm9ibGVtcz4KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RhdGFGbG93L051bGxhYmxlVGhyb3VnaFZhcmlhYmxlL3NyYy9OcGUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RhdGFGbG93L051bGxhYmxlVGhyb3VnaFZhcmlhYmxlL3NyYy9OcGUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MTdhNGMyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvTnVsbGFibGVUaHJvdWdoVmFyaWFibGUvc3JjL05wZS5qYXZhCkBAIC0wLDAgKzEsMTcgQEAKK2ltcG9ydCBvcmcuamV0YnJhaW5zLmFubm90YXRpb25zLk5vdE51bGw7CitpbXBvcnQgb3JnLmpldGJyYWlucy5hbm5vdGF0aW9ucy5OdWxsYWJsZTsKKworcHVibGljIGNsYXNzIE5wZSB7CisgICBPYmplY3QgZm9vKEBOb3ROdWxsIE9iamVjdCBvKSB7CisgICAgIHJldHVybiBvOworICAgfQorCisgICBATnVsbGFibGUgT2JqZWN0IG51bGxhYmxlKCkgeworICAgICByZXR1cm4gbnVsbDsKKyAgIH0KKworICAgdm9pZCBiYXIoKSB7CisgICAgIE9iamVjdCBvID0gbnVsbGFibGUoKTsKKyAgICAgZm9vKG8pOyAvLyBudWxsIHNob3VsZCBub3QgYmUgcGFzc2VkIGhlcmUKKyAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy9OdWxsYWJsZVRocm91Z2hWYXJpYWJsZVNob3VsZE5vdEJlUmVwb3J0ZWQvZXhwZWN0ZWQueG1sIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvTnVsbGFibGVUaHJvdWdoVmFyaWFibGVTaG91bGROb3RCZVJlcG9ydGVkL2V4cGVjdGVkLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNjNjOTI1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvTnVsbGFibGVUaHJvdWdoVmFyaWFibGVTaG91bGROb3RCZVJlcG9ydGVkL2V4cGVjdGVkLnhtbApAQCAtMCwwICsxLDIgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8cHJvYmxlbXMvPgpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvTnVsbGFibGVUaHJvdWdoVmFyaWFibGVTaG91bGROb3RCZVJlcG9ydGVkL3NyYy9OcGUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RhdGFGbG93L051bGxhYmxlVGhyb3VnaFZhcmlhYmxlU2hvdWxkTm90QmVSZXBvcnRlZC9zcmMvTnBlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzdiMTIyMgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RhdGFGbG93L051bGxhYmxlVGhyb3VnaFZhcmlhYmxlU2hvdWxkTm90QmVSZXBvcnRlZC9zcmMvTnBlLmphdmEKQEAgLTAsMCArMSwxOSBAQAoraW1wb3J0IG9yZy5qZXRicmFpbnMuYW5ub3RhdGlvbnMuTm90TnVsbDsKK2ltcG9ydCBvcmcuamV0YnJhaW5zLmFubm90YXRpb25zLk51bGxhYmxlOworCitwdWJsaWMgY2xhc3MgTnBlIHsKKyAgIE9iamVjdCBmb28oQE5vdE51bGwgT2JqZWN0IG8pIHsKKyAgICAgcmV0dXJuIG87CisgICB9CisKKyAgIEBOdWxsYWJsZSBPYmplY3QgbnVsbGFibGUoKSB7CisgICAgIHJldHVybiBudWxsOworICAgfQorCisgICB2b2lkIGJhcigpIHsKKyAgICAgT2JqZWN0IG8gPSBudWxsYWJsZSgpOworICAgICBpZiAobyAhPSBudWxsKSB7CisgICAgICAgZm9vKG8pOyAvLyBPSywgbyBjYW4ndCBiZSBudWxsLgorICAgICB9CisgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvUGx1c09uU3RyaW5ncy9leHBlY3RlZC54bWwgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy9QbHVzT25TdHJpbmdzL2V4cGVjdGVkLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNWE5N2ZmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvUGx1c09uU3RyaW5ncy9leHBlY3RlZC54bWwKQEAgLTAsMCArMSw4IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPHByb2JsZW1zPgorICA8cHJvYmxlbT4KKyAgICA8ZmlsZT5UZXN0LmphdmE8L2ZpbGU+CisgICAgPGxpbmU+NjwvbGluZT4KKyAgICA8ZGVzY3JpcHRpb24+Q29uZGl0aW9uICdjID09IG51bGwnIGlzIGFsd2F5cyBmYWxzZTwvZGVzY3JpcHRpb24+CisgIDwvcHJvYmxlbT4KKzwvcHJvYmxlbXM+CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy9QbHVzT25TdHJpbmdzL3NyYy9UZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy9QbHVzT25TdHJpbmdzL3NyYy9UZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTllYTc0ZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RhdGFGbG93L1BsdXNPblN0cmluZ3Mvc3JjL1Rlc3QuamF2YQpAQCAtMCwwICsxLDEwIEBACitpbXBvcnQgamF2YS5pby4qOworCitwdWJsaWMgY2xhc3MgRm9vIHsKKyAgcHVibGljIHZvaWQgZm9vKE9iamVjdCBhLCBTdHJpbmcgYikgeworICAgICBTdHJpbmcgYyA9IGEgKyBiOworICAgICBpZiAoYyA9PSBudWxsKSB7CisgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIkNhbid0IGJlISIpOworICAgICB9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy9SZWdyZXNzaW9uQnlQdGkvZXhwZWN0ZWQueG1sIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvUmVncmVzc2lvbkJ5UHRpL2V4cGVjdGVkLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYzI3MmFiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvUmVncmVzc2lvbkJ5UHRpL2V4cGVjdGVkLnhtbApAQCAtMCwwICsxLDMgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8cHJvYmxlbXMvPgorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy9SZWdyZXNzaW9uQnlQdGkvc3JjL05vV2FybmluZ3MuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RhdGFGbG93L1JlZ3Jlc3Npb25CeVB0aS9zcmMvTm9XYXJuaW5ncy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNlMzNjNjI4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvUmVncmVzc2lvbkJ5UHRpL3NyYy9Ob1dhcm5pbmdzLmphdmEKQEAgLTAsMCArMSwzMiBAQAorLyoKKyAqIENvcHlyaWdodCAyMDAwLTIwMTEgSmV0QnJhaW5zIHMuci5vLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3B1YmxpYyBjbGFzcyBBQUEgeworIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKKworICAgZm9yIChpbnQgaSA9IDA7IGkgPCBhcmdzLmxlbmd0aDsgaSsrKSB7CisgICAgIGZpbmFsIFN0cmluZyBlbGVtZW50ID0gYXJnc1tpXTsKKworICAgICBpZiAoaSA9PSAxKSB7CisgICAgICAgaWYgKGVsZW1lbnQgIT0gbnVsbCkgeyAvLyAhISEhISBXUk9ORzogZWxlbWVudFsxXSA9PSBudWxsCisgICAgICAgICByZXR1cm47CisgICAgICAgfQorICAgICB9CisgICAgIGVsc2UgaWYgKGVsZW1lbnQgPT0gbnVsbCkgeworICAgICAgIHJldHVybjsKKyAgICAgfQorICAgfQorIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RhdGFGbG93L1NDUjEzNjI2L2V4cGVjdGVkLnhtbCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RhdGFGbG93L1NDUjEzNjI2L2V4cGVjdGVkLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZTZiMzZkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvU0NSMTM2MjYvZXhwZWN0ZWQueG1sCkBAIC0wLDAgKzEsMTQgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8cHJvYmxlbXM+CisgIDxwcm9ibGVtPgorICAgIDxmaWxlPlRlc3QuamF2YTwvZmlsZT4KKyAgICA8bGluZT4xNDwvbGluZT4KKyAgICA8ZGVzY3JpcHRpb24+Q29uZGl0aW9uICchYSAmYW1wOyZhbXA7IGInIGFsd2F5cyBmYWxzZTwvZGVzY3JpcHRpb24+CisgIDwvcHJvYmxlbT4KKyAgPHByb2JsZW0+CisgICAgPGZpbGU+VGVzdC5qYXZhPC9maWxlPgorICAgIDxsaW5lPjE0PC9saW5lPgorICAgIDxkZXNjcmlwdGlvbj5Db25kaXRpb24gJyFhJyBhbHdheXMgZmFsc2U8L2Rlc2NyaXB0aW9uPgorICA8L3Byb2JsZW0+Cis8L3Byb2JsZW1zPgorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy9TQ1IxMzYyNi9zcmMvVGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvU0NSMTM2MjYvc3JjL1Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NjE3Y2Y3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvU0NSMTM2MjYvc3JjL1Rlc3QuamF2YQpAQCAtMCwwICsxLDE2IEBACitjbGFzcyBUZXN0Cit7CitjbGFzcyBUZXN0Cit7CisgICAgcHVibGljIHZvaWQgeCgpCisgICAgeworICAgICAgICBib29sZWFuIGEgPSBmYWxzZTsKKyAgICAgICAgYm9vbGVhbiBiID0gdHJ1ZTsKKworICAgICAgICBkbworICAgICAgICB7CisgICAgICAgICAgICBhID0gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICB3aGlsZSggIWEgJiYgYiApOworICAgIH0KK319CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy9TQ1IxMzcwMi9leHBlY3RlZC54bWwgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy9TQ1IxMzcwMi9leHBlY3RlZC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWFjODc5ZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RhdGFGbG93L1NDUjEzNzAyL2V4cGVjdGVkLnhtbApAQCAtMCwwICsxLDMgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8cHJvYmxlbXMgLz4KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvU0NSMTM3MDIvc3JjL0Zvby5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvU0NSMTM3MDIvc3JjL0Zvby5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg0YzMxYTYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy9TQ1IxMzcwMi9zcmMvRm9vLmphdmEKQEAgLTAsMCArMSw1IEBACitwdWJsaWMgY2xhc3MgRm9vIHsKKyAgIHB1YmxpYyB2b2lkIGZvbygpIHsKKyAgICAgIGRvIHt9IHdoaWxlKGZhbHNlKTsKKyAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy9TQ1IxMzg3MS9leHBlY3RlZC54bWwgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy9TQ1IxMzg3MS9leHBlY3RlZC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWFjODc5ZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RhdGFGbG93L1NDUjEzODcxL2V4cGVjdGVkLnhtbApAQCAtMCwwICsxLDMgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8cHJvYmxlbXMgLz4KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvU0NSMTM4NzEvc3JjL0FhYS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvU0NSMTM4NzEvc3JjL0FhYS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc5M2Y1MzEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy9TQ1IxMzg3MS9zcmMvQWFhLmphdmEKQEAgLTAsMCArMSwxMiBAQAorcHVibGljIGNsYXNzIEFhYSB7CisgIE9iamVjdCBnZXRPYmplY3QoKSB7CisgICAgcmV0dXJuIG51bGw7CisgIH0KKyAgCisgIHZvaWQgZigpIHsKKyAgICBPYmplY3Qgb2JqID0gZ2V0T2JqZWN0KCk7CisgICAgaWYgKG9iaiBpbnN0YW5jZW9mIEFhYSB8fCBvYmogPT0gbnVsbCkgeworICAgICAgQWFhIGEgPSAoQWFhKSBvYmo7IC8vIGluc3BlY3Rpb24gcmVwb3J0cyB0aGF0IENsYXNzQ2FzdEV4Y2VwdGlvbiBjYW4gYmUgdGhyb3duCisgICAgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvU0NSMTQzMTQvZXhwZWN0ZWQueG1sIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvU0NSMTQzMTQvZXhwZWN0ZWQueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA5MjkzOWEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy9TQ1IxNDMxNC9leHBlY3RlZC54bWwKQEAgLTAsMCArMSw5IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPHByb2JsZW1zPgorICA8cHJvYmxlbT4KKyAgICA8ZmlsZT5GaW5hbGx5LmphdmE8L2ZpbGU+CisgICAgPGxpbmU+OTwvbGluZT4KKyAgICA8ZGVzY3JpcHRpb24+TWV0aG9kIGludm9jYXRpb24gJ28uaGFzaENvZGUoKScgbWF5IHByb2R1Y2UgamF2YS5sYW5nLk51bGxQb2ludGVyRXhjZXB0aW9uPC9kZXNjcmlwdGlvbj4KKyAgPC9wcm9ibGVtPgorPC9wcm9ibGVtcz4KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvU0NSMTQzMTQvc3JjL0ZpbmFsbHkuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RhdGFGbG93L1NDUjE0MzE0L3NyYy9GaW5hbGx5LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmQ4YjA0OAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RhdGFGbG93L1NDUjE0MzE0L3NyYy9GaW5hbGx5LmphdmEKQEAgLTAsMCArMSwzNyBAQAoraW1wb3J0IGphdmEuaW8uKjsKKworcHVibGljIGNsYXNzIEZpbmFsbHkgeworICAgcHVibGljIHZvaWQgZm9vKE9iamVjdCBvKSB7CisgICAgIHRyeSB7CisgICAgICAgaWYgKG8gPT0gbnVsbCkgcmV0dXJuOworICAgICB9CisgICAgIGZpbmFsbHkgeworICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihvLmhhc2hDb2RlKCkpOyAvLyBFcnJvciBoZXJlLgorICAgICB9CisgICAgIFN5c3RlbS5vdXQucHJpbnRsbihvLmhhc2hDb2RlKCkpOyAvLyBObyBlcnJvciBoZXJlLgorICAgfQorCisgICBwdWJsaWMgdm9pZCBiYXIoT2JqZWN0IG8pIHsKKyAgICAgIGJvb2xlYW4gcmVhcnJhbmdlQ2hpbGRyZW4gPSBmYWxzZTsKKyAgICAgIE9iamVjdCB0eXBlUGF0dGVybjsKKyAgICAgIHRyeSB7CisgICAgICAgIHR5cGVQYXR0ZXJuID0gcGFyc2VUeXBlUGF0dGVybigpOworICAgICAgfSBjYXRjaCAoRmlsZU5vdEZvdW5kRXhjZXB0aW9uIGZvbGxvd3NGYWlsdXJlKSB7CisgICAgICAgIGlmIChvICE9IG51bGwpIHsKKyAgICAgICAgICB0eXBlUGF0dGVybiA9IGZvbGxvd3NGYWlsdXJlLmdldFBhcnNpbmdSZXN1bHQoKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICB0aHJvdyBmb2xsb3dzRmFpbHVyZTsKKyAgICAgICAgfQorCisgICAgICAgIHJlYXJyYW5nZUNoaWxkcmVuID0gdHJ1ZTsKKyAgICAgIH0KKworICAgICAgaWYgKHJlYXJyYW5nZUNoaWxkcmVuKSB7CisgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIkNhbiBiZSBoZXJlLiIpOworICAgICAgfQorICAgfQorCisgICBPYmplY3QgcGFyc2VUeXBlUGF0dGVybigpIHRocm93cyBJT0V4Y2VwdGlvbiB7CisgICAgICByZXR1cm4gbnVsbDsKKyAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy9TQ1IxNDgxOS9leHBlY3RlZC54bWwgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy9TQ1IxNDgxOS9leHBlY3RlZC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODA3YzljYQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RhdGFGbG93L1NDUjE0ODE5L2V4cGVjdGVkLnhtbApAQCAtMCwwICsxLDE5IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPHByb2JsZW1zPgorICA8cHJvYmxlbT4KKyAgICA8ZmlsZT5UZXN0LmphdmE8L2ZpbGU+CisgICAgPGxpbmU+MzwvbGluZT4KKyAgICA8ZGVzY3JpcHRpb24+Q29uZGl0aW9uICd0IGluc3RhbmNlb2YgVGVzdCcgaXMgcmVkdW5kYW50PC9kZXNjcmlwdGlvbj4KKyAgPC9wcm9ibGVtPgorICA8cHJvYmxlbT4KKyAgICA8ZmlsZT5UZXN0LmphdmE8L2ZpbGU+CisgICAgPGxpbmU+OTwvbGluZT4KKyAgICA8ZGVzY3JpcHRpb24+Q29uZGl0aW9uICd0IGluc3RhbmNlb2YgVGVzdCcgYWx3YXlzIHRydWU8L2Rlc2NyaXB0aW9uPgorICA8L3Byb2JsZW0+CisgIDxwcm9ibGVtPgorICAgIDxmaWxlPlRlc3QuamF2YTwvZmlsZT4KKyAgICA8bGluZT4xNDwvbGluZT4KKyAgICA8ZGVzY3JpcHRpb24+Q29uZGl0aW9uICdmb28obnVsbCkgaW5zdGFuY2VvZiBUZXN0JyBpcyByZWR1bmRhbnQ8L2Rlc2NyaXB0aW9uPgorICA8L3Byb2JsZW0+Cis8L3Byb2JsZW1zPgorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy9TQ1IxNDgxOS9zcmMvVGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvU0NSMTQ4MTkvc3JjL1Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYWYxNDUwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvU0NSMTQ4MTkvc3JjL1Rlc3QuamF2YQpAQCAtMCwwICsxLDE3IEBACitwdWJsaWMgY2xhc3MgVGVzdCB7CisgIHB1YmxpYyBUZXN0IGZvbyhUZXN0IHQpIHsKKyAgICAgaWYgKHQgaW5zdGFuY2VvZiBUZXN0KSB7IC8vIHJlZHVuZGFudCBpbnN0YW5jZW9mIGVycm9yIGhlcmUuIHQgY2FuIGJlIG51bGwKKyAgICAgICBmb28obnVsbCk7CisgICAgIH0KKyAgfQorICBwdWJsaWMgT2JqZWN0IGJhcihUZXN0IHQpIHsKKyAgICAgaWYgKHQgPT0gbnVsbCkgcmV0dXJuOworICAgICBpZiAodCBpbnN0YW5jZW9mIFRlc3QpIHsgLy8gYWx3YXlzIHRydWUgZXJyb3IgaGVyZS4gdCBjYW4ndCBiZSBudWxsCisgICAgICAgZm9vKG51bGwpOworICAgICB9CisKKyAgICAgaWYgKGJhcihudWxsKSBpbnN0YW5jZW9mIFRlc3QpIHJldHVybiBudWxsOyAgLy8gbm8gZXJyb3IgaGVyZS4KKyAgICAgaWYgKGZvbyhudWxsKSBpbnN0YW5jZW9mIFRlc3QpIHJldHVybiBudWxsOyAgLy8gcmVkdW5kYW50IGluc3RhbmNlb2YgZXJyb3IgaGVyZS4gZm9vKG51bGwpIGNhbiBiZSBudWxsCisgICAgIHJldHVybiBudWxsOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvU0NSMTUxNjIvZXhwZWN0ZWQueG1sIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvU0NSMTUxNjIvZXhwZWN0ZWQueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVmMmVlMzUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy9TQ1IxNTE2Mi9leHBlY3RlZC54bWwKQEAgLTAsMCArMSw5IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPHByb2JsZW1zPgorICA8cHJvYmxlbT4KKyAgICA8ZmlsZT5OdWxsVGVzdC5qYXZhPC9maWxlPgorICAgIDxsaW5lPjY8L2xpbmU+CisgICAgPGRlc2NyaXB0aW9uPkRlcmVmZXJlbmNlIG9mICd0JyBtYXkgcHJvZHVjZSBqYXZhLmxhbmcuTnVsbFBvaW50ZXJFeGNlcHRpb248L2Rlc2NyaXB0aW9uPgorICA8L3Byb2JsZW0+Cis8L3Byb2JsZW1zPgorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy9TQ1IxNTE2Mi9zcmMvTnVsbFRlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RhdGFGbG93L1NDUjE1MTYyL3NyYy9OdWxsVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM1OThlNzUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy9TQ1IxNTE2Mi9zcmMvTnVsbFRlc3QuamF2YQpAQCAtMCwwICsxLDkgQEAKK3B1YmxpYyBjbGFzcyBOdWxsVGVzdCB7CisgICAgaW50IG07CisgICAgdm9pZCBmKCkge307CisgICAgcHVibGljIHZvaWQgeCgpIHsKKyAgICAgICAgTnVsbFRlc3QgdCA9IG51bGw7CisgICAgICAgIHQubSA9IDEyOworICAgICAgICB0LmYoKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvU0NSMTU0MDYvZXhwZWN0ZWQueG1sIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvU0NSMTU0MDYvZXhwZWN0ZWQueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVjMjcyYWIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy9TQ1IxNTQwNi9leHBlY3RlZC54bWwKQEAgLTAsMCArMSwzIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPHByb2JsZW1zLz4KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvU0NSMTU0MDYvc3JjL0NvZGVGbG93VGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvU0NSMTU0MDYvc3JjL0NvZGVGbG93VGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYyOTUzZDcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy9TQ1IxNTQwNi9zcmMvQ29kZUZsb3dUZXN0LmphdmEKQEAgLTAsMCArMSwzMSBAQAoraW1wb3J0IG9yZy5qZXRicmFpbnMuYW5ub3RhdGlvbnMuTm90TnVsbDsKKworcHVibGljIGNsYXNzIENvZGVGbG93VGVzdCB7CisgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluIChTdHJpbmdbXSBhcmdzKSB7CisgICAgU3RyaW5nIHN0cmluZzsKKyAgICBFeGNlcHRpb24gZXhjZXB0aW9uOworICAgIHRyeSB7CisgICAgICBzdHJpbmcgPSBnZXRTdHJpbmcoKTsKKyAgICAgIGV4Y2VwdGlvbiA9IG51bGw7CisgICAgfSBjYXRjaCAoU29tZUV4Y2VwdGlvbiBlMSkgeworICAgICAgc3RyaW5nID0gbnVsbDsKKyAgICAgIGV4Y2VwdGlvbiA9IGUxOworICAgIH0KKworICAgIGlmIChzdHJpbmcgIT0gbnVsbCkKKyAgICAgIFN5c3RlbS5vdXQucHJpbnRsbiAoIk5vdCBudWxsIik7CisgICAgZWxzZQorICAgICAgZXhjZXB0aW9uLnByaW50U3RhY2tUcmFjZSgpOworICB9CisKKyAgQE5vdE51bGwgCisgIHByaXZhdGUgc3RhdGljIFN0cmluZyBnZXRTdHJpbmcgKCkgdGhyb3dzIFNvbWVFeGNlcHRpb24geworICAgIGlmIChNYXRoLnJhbmRvbSgpIDwgMC41KQorICAgICAgdGhyb3cgbmV3IFNvbWVFeGNlcHRpb24oKTsKKyAgICBlbHNlCisgICAgICByZXR1cm4gIiI7CisgIH0KKworICBwcml2YXRlIHN0YXRpYyBjbGFzcyBTb21lRXhjZXB0aW9uIGV4dGVuZHMgRXhjZXB0aW9uIHsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvU0NSMTgxODYvZXhwZWN0ZWQueG1sIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvU0NSMTgxODYvZXhwZWN0ZWQueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM2M2M5MjUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy9TQ1IxODE4Ni9leHBlY3RlZC54bWwKQEAgLTAsMCArMSwyIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPHByb2JsZW1zLz4KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RhdGFGbG93L1NDUjE4MTg2L3NyYy9UZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy9TQ1IxODE4Ni9zcmMvVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNiZWEzOTcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy9TQ1IxODE4Ni9zcmMvVGVzdC5qYXZhCkBAIC0wLDAgKzEsNjEgQEAKK2ltcG9ydCBqYXZhLnNxbC4qOworCitwdWJsaWMgY2xhc3MgVGVzdCB7CisKKyAgLyoqCisgICAqIEzkZHQgZGVuIERhdGVuc2F0ei4KKyAgICovCisgIHByaXZhdGUgYm9vbGVhbiBsb2FkVmFsdWVzKFRyYW5zYWN0aW9uIHRyYW5zYWN0aW9uKSB7CisgICAgdHJ5IHsKKyAgICAgIGJvb2xlYW4gcmVzPWZhbHNlOworICAgICAgUHJlcGFyZWRTdGF0ZW1lbnQgc3RtdD10cmFuc2FjdGlvbi5kaXJ0eSgpID8gdHJhbnNhY3Rpb24uZGJzdG9yZSgpLnN0bXRHZXREaXJ0eSh0aGlzKSA6IHRyYW5zYWN0aW9uLmRic3RvcmUoKS5zdG10R2V0Q2xlYW4odGhpcyk7CisgICAgICBpZiAoc3RtdD09bnVsbCkgcmV0dXJuIGZhbHNlOworICAgICAgc3luY2hyb25pemVkKHN0bXQpIHsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICB0cmFuc2FjdGlvbi5kYm1hbmFnZXIuZGJzdG9yZSgpLmxvYWRzQ291bnQrKzsKKyAgICAgICAgICB0cnkgeworICAgICAgICAgICAgZmlsbFBIUEsoc3RtdCwgdHJhbnNhY3Rpb24pOworICAgICAgICAgIH0gY2F0Y2ggKFNRTEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICBEQk1hbmFnZXIucmVzZXRUaHJlYWQoc3RtdCk7CisgICAgICAgICAgICB0aHJvdyBlOworICAgICAgICAgIH0KKyAgICAgICAgICBSZXN1bHRTZXQgcnM9c3RtdC5leGVjdXRlUXVlcnkoKTsKKyAgICAgICAgICB0cnkgeworICAgICAgICAgICAgaWYgKHJzLm5leHQoKSkgeworICAgICAgICAgICAgICBsb2FkT3JkZXJlZChycyk7CisgICAgICAgICAgICAgIHJlcz10cnVlOworICAgICAgICAgICAgfSBlbHNlIGlmICh0cmFuc2FjdGlvbi5kYm1hbmFnZXIuYWNjZXNzQ29tbWl0QnVnKCkpIHsKKyAgICAgICAgICAgICAgLy8gU2NoZWludCBtYW5jaG1hbCBpbiBBY2Nlc3MgenUgcGFzc2llcmVuLi4uLgorICAgICAgICAgICAgICBQcmVwYXJlZFN0YXRlbWVudCBzdG10MT10cmFuc2FjdGlvbi5kaXJ0eSgpID8gc3RtdEdldERpcnR5KHRyYW5zYWN0aW9uLmRic3RvcmUoKSkgOiBzdG10R2V0Q2xlYW4odHJhbnNhY3Rpb24uZGJzdG9yZSgpKTsKKyAgICAgICAgICAgICAgc3luY2hyb25pemVkKHN0bXQxKQorICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgZmlsbFBIUEsoc3RtdDEsIHRyYW5zYWN0aW9uKTsKKyAgICAgICAgICAgICAgICBSZXN1bHRTZXQgcnMxPXN0bXQxLmV4ZWN1dGVRdWVyeSgpOworICAgICAgICAgICAgICAgIGlmIChyczEubmV4dCgpKSB7CisgICAgICAgICAgICAgICAgICBEYmcucHcoIlNlY29uZCB0cnkgdG8gbG9hZCBvYmplY3QgcmV0dXJucyBhbiBvYmplY3Q6ICIrdG9TdHJpbmcoKSsiPz8/Iik7CisgICAgICAgICAgICAgICAgICBsb2FkT3JkZXJlZChyczEpOworICAgICAgICAgICAgICAgICAgcmVzPXRydWU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHJzMS5jbG9zZSgpOworICAgICAgICAgICAgICAgIHN0bXQxLmNsb3NlKCk7CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9IGZpbmFsbHkgeworICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgcnMuY2xvc2UoKTsKKyAgICAgICAgICAgIH0gY2F0Y2ggKFNRTEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICAgIERiZy5wdyhlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0gY2F0Y2ggKFNRTEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgaGFuZGxlU1FMRXhjZXB0aW9uKGUsIHN0bXQpOworICAgICAgICB9CisgICAgICB9CisgICAgICBpZiAocmVzKSBsb2FkQmxvYnModHJhbnNhY3Rpb24pOworICAgICAgcmV0dXJuIHJlczsKKyAgICB9IGNhdGNoIChTUUxFeGNlcHRpb24gZSkgeworICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbkJhZyhlKTsKKyAgICB9CisgIH0KKworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvU0NSMzk5NTAvZXhwZWN0ZWQueG1sIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvU0NSMzk5NTAvZXhwZWN0ZWQueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA5NTNkZDcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy9TQ1IzOTk1MC9leHBlY3RlZC54bWwKQEAgLTAsMCArMSwyIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPHByb2JsZW1zIC8+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvU0NSMzk5NTAvc3JjL1Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RhdGFGbG93L1NDUjM5OTUwL3NyYy9UZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzMxZDdjZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RhdGFGbG93L1NDUjM5OTUwL3NyYy9UZXN0LmphdmEKQEAgLTAsMCArMSwxMiBAQAoraW50ZXJmYWNlIEludGVyIHt9CisKK2NsYXNzIEltcGwgaW1wbGVtZW50cyBJbnRlciB7fQorCitjbGFzcyBUZXN0R2VuZXJpY3NJbnN0YW5jZW9mPEkgZXh0ZW5kcyBJbnRlcj4KK3sKKyAgICBJIG1lbWJlcjsKKworICAgIHsKKyAgICAgIGJvb2xlYW4gdGVzdCA9IG1lbWJlciBpbnN0YW5jZW9mIEltcGw7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvU3RyYW5nZUFycmF5SW5kZXhPdXRPZkJvdW5kcy9leHBlY3RlZC54bWwgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy9TdHJhbmdlQXJyYXlJbmRleE91dE9mQm91bmRzL2V4cGVjdGVkLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wOTUzZGQ3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvU3RyYW5nZUFycmF5SW5kZXhPdXRPZkJvdW5kcy9leHBlY3RlZC54bWwKQEAgLTAsMCArMSwyIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPHByb2JsZW1zIC8+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvU3RyYW5nZUFycmF5SW5kZXhPdXRPZkJvdW5kcy9zcmMvVGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvU3RyYW5nZUFycmF5SW5kZXhPdXRPZkJvdW5kcy9zcmMvVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFjMDNlZWEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy9TdHJhbmdlQXJyYXlJbmRleE91dE9mQm91bmRzL3NyYy9UZXN0LmphdmEKQEAgLTAsMCArMSwzNCBAQAorcHVibGljIGNsYXNzIFRlc3QgeworICBwdWJsaWMgdm9pZCBmb28oKSB7CisgICAgUHJvcGVydGllcyBwcm9wZXJ0aWVzID0gbmV3IFByb3BlcnRpZXMoKTsKKyAgICBJbnB1dFN0cmVhbSBpblN0cmVhbSA9IG51bGw7CisgICAgdHJ5IHsKKyAgICAgIHJlbW92ZUN1c3RvbVByZWZpeEZyb21Qcm9wZXJ0aWVzKHByb3BlcnRpZXNGaWxlKTsKKworICAgICAgaW5TdHJlYW0gPSBuZXcgRmlsZUlucHV0U3RyZWFtKHByb3BlcnRpZXNGaWxlKTsKKyAgICAgIHByb3BlcnRpZXMubG9hZChpblN0cmVhbSk7CisKKyAgICAgIEVudW1lcmF0aW9uPD8+IHByb3BlcnR5TmFtZXMgPSBwcm9wZXJ0aWVzLnByb3BlcnR5TmFtZXMoKTsKKyAgICAgIHdoaWxlIChwcm9wZXJ0eU5hbWVzLmhhc01vcmVFbGVtZW50cygpKSB7CisgICAgICAgIFN0cmluZyBuYW1lID0gKFN0cmluZykgcHJvcGVydHlOYW1lcy5uZXh0RWxlbWVudCgpOworCisgICAgICAgIHNldFZhbHVlKG5hbWUsIHByb3BlcnRpZXMuZ2V0UHJvcGVydHkobmFtZSkpOworICAgICAgfQorCisgICAgfSBjYXRjaCAoRmlsZU5vdEZvdW5kRXhjZXB0aW9uIGUpIHsKKyAgICAgIFN5c3RlbS5lcnIucHJpbnRsbihlLmdldE1lc3NhZ2UoKSk7CisgICAgICBTeXN0ZW0uZXhpdCgtMSk7CisgICAgfQorICAgIGNhdGNoIChJT0V4Y2VwdGlvbiBlKSB7CisgICAgICBMT0cuZXJyb3IoZS5nZXRNZXNzYWdlKCksIGUpOworICAgIH0gZmluYWxseSB7CisgICAgICBpZiAoaW5TdHJlYW0gIT0gbnVsbCkgeworICAgICAgICB0cnkgeworICAgICAgICAgIGluU3RyZWFtLmNsb3NlKCk7CisgICAgICAgIH0gY2F0Y2ggKElPRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICBMT0cuaW5mbyhlKTsKKyAgICAgICAgfQorICAgICAgfQorICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RhdGFGbG93L1N3aXRjaEVudW1DYXNlcy9leHBlY3RlZC54bWwgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy9Td2l0Y2hFbnVtQ2FzZXMvZXhwZWN0ZWQueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE1OTJjY2QKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy9Td2l0Y2hFbnVtQ2FzZXMvZXhwZWN0ZWQueG1sCkBAIC0wLDAgKzEsOCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxwcm9ibGVtcz4KKyAgPHByb2JsZW0+CisgICAgPGZpbGU+VGVzdC5qYXZhPC9maWxlPgorICAgIDxsaW5lPjcyPC9saW5lPgorICAgIDxkZXNjcmlwdGlvbj5NZXRob2QgaW52b2NhdGlvbiAmbHQ7Y29kZSZndDtmb28ubGVuZ3RoKCkmbHQ7L2NvZGUmZ3Q7IG1heSBwcm9kdWNlICZsdDtjb2RlJmd0O2phdmEubGFuZy5OdWxsUG9pbnRlckV4Y2VwdGlvbiZsdDsvY29kZSZndDs8L2Rlc2NyaXB0aW9uPgorICA8L3Byb2JsZW0+Cis8L3Byb2JsZW1zPgpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvU3dpdGNoRW51bUNhc2VzL3NyYy9UZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy9Td2l0Y2hFbnVtQ2FzZXMvc3JjL1Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYjJiMDU1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvU3dpdGNoRW51bUNhc2VzL3NyYy9UZXN0LmphdmEKQEAgLTAsMCArMSw3OCBAQAorcHVibGljIGNsYXNzIFRlc3QgeworICB2b2lkIHdpdGhEZWZhdWx0V2l0aG91dEJyZWFrKE15RW51bSBlKSB7CisgICAgU3RyaW5nIGZvbyA9IG51bGw7CisgICAgc3dpdGNoIChlKSB7CisgICAgICBjYXNlIEZPTzoKKyAgICAgICAgZm9vID0gImZvbyI7CisgICAgICBjYXNlIEJBUjoKKyAgICAgICAgZm9vID0gImJhciI7CisgICAgICBkZWZhdWx0OgorICAgICAgICBmb28gPSAiZGVmYXVsdCI7CisgICAgfQorICAgIGludCBsID0gZm9vLmxlbmd0aCgpOworICB9CisKKyAgdm9pZCB3aXRoRGVmYXVsdFdpdGhCcmVhayhNeUVudW0gZSkgeworICAgIFN0cmluZyBmb28gPSBudWxsOworICAgIHN3aXRjaCAoZSkgeworICAgICAgY2FzZSBGT086CisgICAgICAgIGZvbyA9ICJmb28iOworICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgQkFSOgorICAgICAgICBmb28gPSAiYmFyIjsKKyAgICAgICAgYnJlYWs7CisgICAgICBkZWZhdWx0OgorICAgICAgICBmb28gPSAiZGVmYXVsdCI7CisgICAgfQorICAgIGludCBsID0gZm9vLmxlbmd0aCgpOworICB9CisKKyAgdm9pZCB3aXRoRGVmYXVsdFdpdGhvdXRCYXIoTXlFbnVtIGUpIHsKKyAgICBTdHJpbmcgZm9vID0gbnVsbDsKKyAgICBzd2l0Y2ggKGUpIHsKKyAgICAgIGNhc2UgRk9POgorICAgICAgICBmb28gPSAiZm9vIjsKKyAgICAgICAgYnJlYWs7CisgICAgICBkZWZhdWx0OgorICAgICAgICBmb28gPSAiZGVmYXVsdCI7CisgICAgfQorICAgIGludCBsID0gZm9vLmxlbmd0aCgpOworICB9CisKKyAgdm9pZCB3aXRob3V0RGVmYXVsdFdpdGhCcmVhayhNeUVudW0gZSkgeworICAgIFN0cmluZyBmb28gPSBudWxsOworICAgIHN3aXRjaCAoZSkgeworICAgICAgY2FzZSBGT086CisgICAgICAgIGZvbyA9ICJmb28iOworICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgQkFSOgorICAgICAgICBmb28gPSAiYmFyIjsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGludCBsID0gZm9vLmxlbmd0aCgpOworICB9CisKKyAgdm9pZCB3aXRob3V0RGVmYXVsdFdpdGhvdXRCcmVhayhNeUVudW0gZSkgeworICAgIFN0cmluZyBmb28gPSBudWxsOworICAgIHN3aXRjaCAoZSkgeworICAgICAgY2FzZSBGT086CisgICAgICAgIGZvbyA9ICJmb28iOworICAgICAgY2FzZSBCQVI6CisgICAgICAgIGZvbyA9ICJiYXIiOworICAgIH0KKyAgICBpbnQgbCA9IGZvby5sZW5ndGgoKTsKKyAgfQorCisgIHZvaWQgd2l0aG91dERlZmF1bHRXaXRob3V0QmFyKE15RW51bSBlKSB7CisgICAgU3RyaW5nIGZvbyA9IG51bGw7CisgICAgc3dpdGNoIChlKSB7CisgICAgICBjYXNlIEZPTzoKKyAgICAgICAgZm9vID0gImZvbyI7CisgICAgfQorICAgIGludCBsID0gZm9vLmxlbmd0aCgpOworICB9Cit9CisKK2VudW0gTXlFbnVtIHsKKyAgRk9PLCBCQVI7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvU3dpdGNoUXVhbGlmaWVyUHJvZHVjZXNOUEUvZXhwZWN0ZWQueG1sIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvU3dpdGNoUXVhbGlmaWVyUHJvZHVjZXNOUEUvZXhwZWN0ZWQueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc1ZDc1ZGEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy9Td2l0Y2hRdWFsaWZpZXJQcm9kdWNlc05QRS9leHBlY3RlZC54bWwKQEAgLTAsMCArMSw4IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPHByb2JsZW1zPgorPHByb2JsZW0+CisgIDxmaWxlPlRlc3QuamF2YTwvZmlsZT4KKyAgPGxpbmU+MTA8L2xpbmU+CisgIDxkZXNjcmlwdGlvbj5EZXJlZmVyZW5jZSBvZiAnZ2V0RSgpJyBtYXkgcHJvZHVjZSAnTnVsbFBvaW50ZXJFeGNlcHRpb24nPC9kZXNjcmlwdGlvbj4KKzwvcHJvYmxlbT4KKzwvcHJvYmxlbXM+CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy9Td2l0Y2hRdWFsaWZpZXJQcm9kdWNlc05QRS9zcmMvVGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvU3dpdGNoUXVhbGlmaWVyUHJvZHVjZXNOUEUvc3JjL1Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMDEwNWQwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvU3dpdGNoUXVhbGlmaWVyUHJvZHVjZXNOUEUvc3JjL1Rlc3QuamF2YQpAQCAtMCwwICsxLDE1IEBACitpbXBvcnQgb3JnLmpldGJyYWlucy5hbm5vdGF0aW9ucy5OdWxsYWJsZTsKKworcHVibGljIGNsYXNzIFRlc3QgeworICAgIGVudW0gRSB7IEEsIEIgfQorCisgICAgQE51bGxhYmxlCisgICAgc3RhdGljIEUgZ2V0RSgpIHsgcmV0dXJuIG51bGw7IH0KKworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKKyAgICAgICAgc3dpdGNoIChnZXRFKCkpIHsgIC8vIDw8PCBzaG91bGQgYmUgaGlnaGxpZ2h0ZWQgYXMgcG90ZW50aWFsIE5QRQorICAgICAgICAgICAgY2FzZSBBOgorICAgICAgICAgICAgY2FzZSBCOgorICAgICAgICB9CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RhdGFGbG93L1RyeVdpdGhSZXNvdXJjZXNJbnN0YW5jZU9mLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy9UcnlXaXRoUmVzb3VyY2VzSW5zdGFuY2VPZi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYyYWM0YTgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy9UcnlXaXRoUmVzb3VyY2VzSW5zdGFuY2VPZi5qYXZhCkBAIC0wLDAgKzEsMzAgQEAKK2NsYXNzIFRlc3QgeworICBzdGF0aWMgY2xhc3MgUmVzb3VyY2VmdWxFeGNlcHRpb24xIGV4dGVuZHMgRXhjZXB0aW9uIHsgfQorICBzdGF0aWMgY2xhc3MgUmVzb3VyY2VmdWxFeGNlcHRpb24yIGV4dGVuZHMgRXhjZXB0aW9uIHsgfQorICBzdGF0aWMgY2xhc3MgUmVzb3VyY2VmdWxFeGNlcHRpb24zIGV4dGVuZHMgRXhjZXB0aW9uIHsgfQorCisgIHN0YXRpYyBjbGFzcyBFeGNlcHRpb25hbFJlc291cmNlIGltcGxlbWVudHMgQXV0b0Nsb3NlYWJsZSB7CisgICAgQE92ZXJyaWRlIHB1YmxpYyB2b2lkIGNsb3NlKCkgdGhyb3dzIFJlc291cmNlZnVsRXhjZXB0aW9uMSB7IH0KKyAgfQorCisgIEV4Y2VwdGlvbmFsUmVzb3VyY2UgcHJvdmlkZUV4Y2VwdGlvbmFsUmVzb3VyY2UoKSB0aHJvd3MgUmVzb3VyY2VmdWxFeGNlcHRpb24yIHsKKyAgICByZXR1cm4gbmV3IEV4Y2VwdGlvbmFsUmVzb3VyY2UoKTsKKyAgfQorCisgIHZvaWQgbSgpIHsKKyAgICB0cnkgKEV4Y2VwdGlvbmFsUmVzb3VyY2UgciA9IHByb3ZpZGVFeGNlcHRpb25hbFJlc291cmNlKCkpIHsKKyAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihyKTsKKyAgICB9CisgICAgY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CisgICAgICBpZiAoZSBpbnN0YW5jZW9mIFJlc291cmNlZnVsRXhjZXB0aW9uMSkgeworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIjEiKTsKKyAgICAgIH0KKyAgICAgIGVsc2UgaWYgKGUgaW5zdGFuY2VvZiBSZXNvdXJjZWZ1bEV4Y2VwdGlvbjIpIHsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCIyIik7CisgICAgICB9CisgICAgICBlbHNlIGlmICg8d2FybmluZyBkZXNjcj0iQ29uZGl0aW9uICdlIGluc3RhbmNlb2YgUmVzb3VyY2VmdWxFeGNlcHRpb24zJyBpcyBhbHdheXMgJ2ZhbHNlJyI+ZSBpbnN0YW5jZW9mIFJlc291cmNlZnVsRXhjZXB0aW9uMzwvd2FybmluZz4pIHsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCIzIik7CisgICAgICB9CisgICAgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvVHJ5V2l0aFJlc291cmNlc051bGxhYmlsaXR5LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy9UcnlXaXRoUmVzb3VyY2VzTnVsbGFiaWxpdHkuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MDQzNWRmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvVHJ5V2l0aFJlc291cmNlc051bGxhYmlsaXR5LmphdmEKQEAgLTAsMCArMSwyMiBAQAorY2xhc3MgVGVzdCB7CisgIHN0YXRpYyBjbGFzcyBNeVJlc291cmNlIGltcGxlbWVudHMgQXV0b0Nsb3NlYWJsZSB7CisgICAgQE92ZXJyaWRlIHB1YmxpYyB2b2lkIGNsb3NlKCkgeyB9CisgIH0KKworICBpbnRlcmZhY2UgTXlSZXNvdXJjZVByb3ZpZGVyIHsKKyAgICBNeVJlc291cmNlIGdldFJlc291cmNlKCk7CisgIH0KKworICB2b2lkIG0xKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgTXlSZXNvdXJjZVByb3ZpZGVyIHByb3ZpZGVyID0gbnVsbDsKKyAgICB0cnkgKE15UmVzb3VyY2UgciA9IDx3YXJuaW5nIGRlc2NyPSJNZXRob2QgaW52b2NhdGlvbiAncHJvdmlkZXIuZ2V0UmVzb3VyY2UoKScgbWF5IHByb2R1Y2UgJ2phdmEubGFuZy5OdWxsUG9pbnRlckV4Y2VwdGlvbiciPnByb3ZpZGVyLmdldFJlc291cmNlKCk8L3dhcm5pbmc+KSB7CisgICAgICBTeXN0ZW0ub3V0LnByaW50bG4ocik7CisgICAgfQorICB9CisKKyAgdm9pZCBtMigpIHsKKyAgICB0cnkgKE15UmVzb3VyY2UgciA9IG51bGwpIHsKKyAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihyKTsKKyAgICB9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy9Zb2xlQnVnL2V4cGVjdGVkLnhtbCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RhdGFGbG93L1lvbGVCdWcvZXhwZWN0ZWQueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQxMTM2OTEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy9Zb2xlQnVnL2V4cGVjdGVkLnhtbApAQCAtMCwwICsxLDggQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8cHJvYmxlbXM+CisgIDxwcm9ibGVtPgorICAgIDxmaWxlPlRlc3QuamF2YTwvZmlsZT4KKyAgICA8bGluZT45PC9saW5lPgorICAgIDxkZXNjcmlwdGlvbj4nZm9vKCkgIT0gbnVsbCcgaXMgYWx3YXlzIHRydWU8L2Rlc2NyaXB0aW9uPgorICA8L3Byb2JsZW0+Cis8L3Byb2JsZW1zPgpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvWW9sZUJ1Zy9zcmMvVGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvWW9sZUJ1Zy9zcmMvVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBlODM3NTYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy9Zb2xlQnVnL3NyYy9UZXN0LmphdmEKQEAgLTAsMCArMSwxMSBAQAoraW1wb3J0IG9yZy5qZXRicmFpbnMuYW5ub3RhdGlvbnMuKjsKK3B1YmxpYyBjbGFzcyBUZXN0IHsKKyAgICBATm90TnVsbAorICAgIHB1YmxpYyBPYmplY3QgZm9vKCkgeworICAgICAgICByZXR1cm4gbmV3IE9iamVjdCgpOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHFxcSgpIHsKKyAgICAgICAgaW50IGMgPSBmb28oKSAhPSBudWxsID8gZm9vKCkuaGFzaENvZGUoKSA6IDA7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvYW5kRXEvZXhwZWN0ZWQueG1sIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvYW5kRXEvZXhwZWN0ZWQueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgwZWJjOWUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy9hbmRFcS9leHBlY3RlZC54bWwKQEAgLTAsMCArMSw4IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPHByb2JsZW1zPgorICA8cHJvYmxlbT4KKyAgICA8ZmlsZT5UZXN0LmphdmE8L2ZpbGU+CisgICAgPGxpbmU+NDwvbGluZT4KKyAgICA8ZGVzY3JpcHRpb24+ciBpcyBhbHdheXMgdHJ1ZTwvZGVzY3JpcHRpb24+CisgIDwvcHJvYmxlbT4KKzwvcHJvYmxlbXM+CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy9hbmRFcS9zcmMvVGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvYW5kRXEvc3JjL1Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44OTE5ZjE1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvYW5kRXEvc3JjL1Rlc3QuamF2YQpAQCAtMCwwICsxLDggQEAKK3B1YmxpYyBjbGFzcyBUZXN0IHsKKyAgcHVibGljIHZvaWQgZm9vKGJvb2xlYW4geCwgYm9vbGVhbiB5LCBib29sZWFuIHopIHsKKyAgICBib29sZWFuIHIgPSB0cnVlOworICAgIHIgJj0geDsKKyAgICByICY9IHk7CisgICAgciAmPSB6OworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvYXV0b2JveGluZy9leHBlY3RlZC54bWwgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy9hdXRvYm94aW5nL2V4cGVjdGVkLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40N2Q2OGU1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvYXV0b2JveGluZy9leHBlY3RlZC54bWwKQEAgLTAsMCArMSwzNDUgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8cHJvYmxlbXM+Cis8cHJvYmxlbT4KKyAgPGZpbGU+VGVzdC5qYXZhPC9maWxlPgorICA8bGluZT41PC9saW5lPgorICA8bWV0aG9kPgorICAgIDxuYW1lPnZvaWQgZihpbnQgayk8L25hbWU+CisgICAgPGRpc3BsYXlfbmFtZT5mKGludCk8L2Rpc3BsYXlfbmFtZT4KKyAgICA8cGFja2FnZT4mbHQ7ZGVmYXVsdCZndDs8L3BhY2thZ2U+CisgICAgPGNsYXNzPgorICAgICAgPG5hbWU+QXV0bzwvbmFtZT4KKyAgICAgIDxkaXNwbGF5X25hbWU+QXV0bzwvZGlzcGxheV9uYW1lPgorICAgIDwvY2xhc3M+CisgIDwvbWV0aG9kPgorICA8cHJvYmxlbV9jbGFzcz5Db25zdGFudCBjb25kaXRpb25zICZhbXA7IGV4Y2VwdGlvbnM8L3Byb2JsZW1fY2xhc3M+CisgIDxkZXNjcmlwdGlvbj5Db25kaXRpb24gJmx0O2NvZGUmZ3Q7aT09aiZsdDsvY29kZSZndDsgaXMgYWx3YXlzICZsdDtjb2RlJmd0O3RydWUmbHQ7L2NvZGUmZ3Q7PC9kZXNjcmlwdGlvbj4KKzwvcHJvYmxlbT4KKworCis8cHJvYmxlbT4KKyAgPGZpbGU+VGVzdC5qYXZhPC9maWxlPgorICA8bGluZT45PC9saW5lPgorICA8bWV0aG9kPgorICAgIDxuYW1lPnZvaWQgZihpbnQgayk8L25hbWU+CisgICAgPGRpc3BsYXlfbmFtZT5mKGludCk8L2Rpc3BsYXlfbmFtZT4KKyAgICA8cGFja2FnZT4mbHQ7ZGVmYXVsdCZndDs8L3BhY2thZ2U+CisgICAgPGNsYXNzPgorICAgICAgPG5hbWU+QXV0bzwvbmFtZT4KKyAgICAgIDxkaXNwbGF5X25hbWU+QXV0bzwvZGlzcGxheV9uYW1lPgorICAgIDwvY2xhc3M+CisgIDwvbWV0aG9kPgorICA8cHJvYmxlbV9jbGFzcz5Db25zdGFudCBjb25kaXRpb25zICZhbXA7IGV4Y2VwdGlvbnM8L3Byb2JsZW1fY2xhc3M+CisgIDxkZXNjcmlwdGlvbj5Db25kaXRpb24gJmx0O2NvZGUmZ3Q7aT09ajImbHQ7L2NvZGUmZ3Q7IGlzIGFsd2F5cyAmbHQ7Y29kZSZndDtmYWxzZSZsdDsvY29kZSZndDs8L2Rlc2NyaXB0aW9uPgorPC9wcm9ibGVtPgorCisKKzxwcm9ibGVtPgorICA8ZmlsZT5UZXN0LmphdmE8L2ZpbGU+CisgIDxsaW5lPjEyPC9saW5lPgorICA8bWV0aG9kPgorICAgIDxuYW1lPnZvaWQgZihpbnQgayk8L25hbWU+CisgICAgPGRpc3BsYXlfbmFtZT5mKGludCk8L2Rpc3BsYXlfbmFtZT4KKyAgICA8cGFja2FnZT4mbHQ7ZGVmYXVsdCZndDs8L3BhY2thZ2U+CisgICAgPGNsYXNzPgorICAgICAgPG5hbWU+QXV0bzwvbmFtZT4KKyAgICAgIDxkaXNwbGF5X25hbWU+QXV0bzwvZGlzcGxheV9uYW1lPgorICAgIDwvY2xhc3M+CisgIDwvbWV0aG9kPgorICA8cHJvYmxlbV9jbGFzcz5Db25zdGFudCBjb25kaXRpb25zICZhbXA7IGV4Y2VwdGlvbnM8L3Byb2JsZW1fY2xhc3M+CisgIDxkZXNjcmlwdGlvbj5Db25kaXRpb24gJmx0O2NvZGUmZ3Q7aT09MCZsdDsvY29kZSZndDsgaXMgYWx3YXlzICZsdDtjb2RlJmd0O3RydWUmbHQ7L2NvZGUmZ3Q7PC9kZXNjcmlwdGlvbj4KKzwvcHJvYmxlbT4KKworCis8cHJvYmxlbT4KKyAgPGZpbGU+VGVzdC5qYXZhPC9maWxlPgorICA8bGluZT4xNTwvbGluZT4KKyAgPG1ldGhvZD4KKyAgICA8bmFtZT52b2lkIGYoaW50IGspPC9uYW1lPgorICAgIDxkaXNwbGF5X25hbWU+ZihpbnQpPC9kaXNwbGF5X25hbWU+CisgICAgPHBhY2thZ2U+Jmx0O2RlZmF1bHQmZ3Q7PC9wYWNrYWdlPgorICAgIDxjbGFzcz4KKyAgICAgIDxuYW1lPkF1dG88L25hbWU+CisgICAgICA8ZGlzcGxheV9uYW1lPkF1dG88L2Rpc3BsYXlfbmFtZT4KKyAgICA8L2NsYXNzPgorICA8L21ldGhvZD4KKyAgPHByb2JsZW1fY2xhc3M+Q29uc3RhbnQgY29uZGl0aW9ucyAmYW1wOyBleGNlcHRpb25zPC9wcm9ibGVtX2NsYXNzPgorICA8ZGVzY3JpcHRpb24+Q29uZGl0aW9uICZsdDtjb2RlJmd0O2k9PTEmbHQ7L2NvZGUmZ3Q7IGlzIGFsd2F5cyAmbHQ7Y29kZSZndDtmYWxzZSZsdDsvY29kZSZndDs8L2Rlc2NyaXB0aW9uPgorPC9wcm9ibGVtPgorCisgIDxwcm9ibGVtPgorICAgIDxmaWxlPlRlc3QuamF2YTwvZmlsZT4KKyAgICA8bGluZT4yMjwvbGluZT4KKyAgICA8bWV0aG9kPgorICAgICAgPG5hbWU+dm9pZCBmKGludCBrKTwvbmFtZT4KKyAgICAgIDxkaXNwbGF5X25hbWU+ZihpbnQpPC9kaXNwbGF5X25hbWU+CisgICAgICA8cGFja2FnZT4mbHQ7ZGVmYXVsdCZndDs8L3BhY2thZ2U+CisgICAgICA8Y2xhc3M+CisgICAgICAgIDxuYW1lPkF1dG88L25hbWU+CisgICAgICAgIDxkaXNwbGF5X25hbWU+QXV0bzwvZGlzcGxheV9uYW1lPgorICAgICAgPC9jbGFzcz4KKyAgICA8L21ldGhvZD4KKyAgICA8cHJvYmxlbV9jbGFzcz5Db25zdGFudCBjb25kaXRpb25zICZhbXA7IGV4Y2VwdGlvbnM8L3Byb2JsZW1fY2xhc3M+CisgICAgPGRlc2NyaXB0aW9uPkNvbmRpdGlvbiAmbHQ7Y29kZSZndDtiaWcxPT0zMzMmbHQ7L2NvZGUmZ3Q7IGlzIGFsd2F5cyAmbHQ7Y29kZSZndDt0cnVlJmx0Oy9jb2RlJmd0OzwvZGVzY3JpcHRpb24+CisgIDwvcHJvYmxlbT4KKworCisKKyAgPHByb2JsZW0+CisgICAgPGZpbGU+VGVzdC5qYXZhPC9maWxlPgorICAgIDxsaW5lPjI0PC9saW5lPgorICAgIDxtZXRob2Q+CisgICAgICA8bmFtZT52b2lkIGYoaW50IGspPC9uYW1lPgorICAgICAgPGRpc3BsYXlfbmFtZT5mKGludCk8L2Rpc3BsYXlfbmFtZT4KKyAgICAgIDxwYWNrYWdlPiZsdDtkZWZhdWx0Jmd0OzwvcGFja2FnZT4KKyAgICAgIDxjbGFzcz4KKyAgICAgICAgPG5hbWU+QXV0bzwvbmFtZT4KKyAgICAgICAgPGRpc3BsYXlfbmFtZT5BdXRvPC9kaXNwbGF5X25hbWU+CisgICAgICA8L2NsYXNzPgorICAgIDwvbWV0aG9kPgorICAgIDxwcm9ibGVtX2NsYXNzPkNvbnN0YW50IGNvbmRpdGlvbnMgJmFtcDsgZXhjZXB0aW9uczwvcHJvYmxlbV9jbGFzcz4KKyAgICA8ZGVzY3JpcHRpb24+Q29uZGl0aW9uICZsdDtjb2RlJmd0OzMzMyA9PSBiaWcyJmx0Oy9jb2RlJmd0OyBpcyBhbHdheXMgJmx0O2NvZGUmZ3Q7dHJ1ZSZsdDsvY29kZSZndDs8L2Rlc2NyaXB0aW9uPgorICA8L3Byb2JsZW0+CisKKworCisgIDxwcm9ibGVtPgorICAgIDxmaWxlPlRlc3QuamF2YTwvZmlsZT4KKyAgICA8bGluZT4yNjwvbGluZT4KKyAgICA8bWV0aG9kPgorICAgICAgPG5hbWU+dm9pZCBmKGludCBrKTwvbmFtZT4KKyAgICAgIDxkaXNwbGF5X25hbWU+ZihpbnQpPC9kaXNwbGF5X25hbWU+CisgICAgICA8cGFja2FnZT4mbHQ7ZGVmYXVsdCZndDs8L3BhY2thZ2U+CisgICAgICA8Y2xhc3M+CisgICAgICAgIDxuYW1lPkF1dG88L25hbWU+CisgICAgICAgIDxkaXNwbGF5X25hbWU+QXV0bzwvZGlzcGxheV9uYW1lPgorICAgICAgPC9jbGFzcz4KKyAgICA8L21ldGhvZD4KKyAgICA8cHJvYmxlbV9jbGFzcz5Db25zdGFudCBjb25kaXRpb25zICZhbXA7IGV4Y2VwdGlvbnM8L3Byb2JsZW1fY2xhc3M+CisgICAgPGRlc2NyaXB0aW9uPkNvbmRpdGlvbiAmbHQ7Y29kZSZndDszMzM9PTMzMyZsdDsvY29kZSZndDsgaXMgYWx3YXlzICZsdDtjb2RlJmd0O3RydWUmbHQ7L2NvZGUmZ3Q7PC9kZXNjcmlwdGlvbj4KKyAgPC9wcm9ibGVtPgorCisKKworICA8cHJvYmxlbT4KKyAgICA8ZmlsZT5UZXN0LmphdmE8L2ZpbGU+CisgICAgPGxpbmU+Mjg8L2xpbmU+CisgICAgPG1ldGhvZD4KKyAgICAgIDxuYW1lPnZvaWQgZihpbnQgayk8L25hbWU+CisgICAgICA8ZGlzcGxheV9uYW1lPmYoaW50KTwvZGlzcGxheV9uYW1lPgorICAgICAgPHBhY2thZ2U+Jmx0O2RlZmF1bHQmZ3Q7PC9wYWNrYWdlPgorICAgICAgPGNsYXNzPgorICAgICAgICA8bmFtZT5BdXRvPC9uYW1lPgorICAgICAgICA8ZGlzcGxheV9uYW1lPkF1dG88L2Rpc3BsYXlfbmFtZT4KKyAgICAgIDwvY2xhc3M+CisgICAgPC9tZXRob2Q+CisgICAgPHByb2JsZW1fY2xhc3M+Q29uc3RhbnQgY29uZGl0aW9ucyAmYW1wOyBleGNlcHRpb25zPC9wcm9ibGVtX2NsYXNzPgorICAgIDxkZXNjcmlwdGlvbj5Db25kaXRpb24gJmx0O2NvZGUmZ3Q7YmlnMT09YmlnMiZsdDsvY29kZSZndDsgaXMgYWx3YXlzICZsdDtjb2RlJmd0O2ZhbHNlJmx0Oy9jb2RlJmd0OzwvZGVzY3JpcHRpb24+CisgIDwvcHJvYmxlbT4KKworCisKKyAgPHByb2JsZW0+CisgICAgPGZpbGU+VGVzdC5qYXZhPC9maWxlPgorICAgIDxsaW5lPjMyPC9saW5lPgorICAgIDxtZXRob2Q+CisgICAgICA8bmFtZT52b2lkIGYoaW50IGspPC9uYW1lPgorICAgICAgPGRpc3BsYXlfbmFtZT5mKGludCk8L2Rpc3BsYXlfbmFtZT4KKyAgICAgIDxwYWNrYWdlPiZsdDtkZWZhdWx0Jmd0OzwvcGFja2FnZT4KKyAgICAgIDxjbGFzcz4KKyAgICAgICAgPG5hbWU+QXV0bzwvbmFtZT4KKyAgICAgICAgPGRpc3BsYXlfbmFtZT5BdXRvPC9kaXNwbGF5X25hbWU+CisgICAgICA8L2NsYXNzPgorICAgIDwvbWV0aG9kPgorICAgIDxwcm9ibGVtX2NsYXNzPkNvbnN0YW50IGNvbmRpdGlvbnMgJmFtcDsgZXhjZXB0aW9uczwvcHJvYmxlbV9jbGFzcz4KKyAgICA8ZGVzY3JpcHRpb24+Q29uZGl0aW9uICZsdDtjb2RlJmd0O3ByaW09PWJpZzImbHQ7L2NvZGUmZ3Q7IGlzIGFsd2F5cyAmbHQ7Y29kZSZndDt0cnVlJmx0Oy9jb2RlJmd0OzwvZGVzY3JpcHRpb24+CisgIDwvcHJvYmxlbT4KKworCisKKyAgPHByb2JsZW0+CisgICAgPGZpbGU+VGVzdC5qYXZhPC9maWxlPgorICAgIDxsaW5lPjM2PC9saW5lPgorICAgIDxtZXRob2Q+CisgICAgICA8bmFtZT52b2lkIGYoaW50IGspPC9uYW1lPgorICAgICAgPGRpc3BsYXlfbmFtZT5mKGludCk8L2Rpc3BsYXlfbmFtZT4KKyAgICAgIDxwYWNrYWdlPiZsdDtkZWZhdWx0Jmd0OzwvcGFja2FnZT4KKyAgICAgIDxjbGFzcz4KKyAgICAgICAgPG5hbWU+QXV0bzwvbmFtZT4KKyAgICAgICAgPGRpc3BsYXlfbmFtZT5BdXRvPC9kaXNwbGF5X25hbWU+CisgICAgICA8L2NsYXNzPgorICAgIDwvbWV0aG9kPgorICAgIDxwcm9ibGVtX2NsYXNzPkNvbnN0YW50IGNvbmRpdGlvbnMgJmFtcDsgZXhjZXB0aW9uczwvcHJvYmxlbV9jbGFzcz4KKyAgICA8ZGVzY3JpcHRpb24+Q29uZGl0aW9uICZsdDtjb2RlJmd0O2JpZzEgPT0gMCZsdDsvY29kZSZndDsgaXMgYWx3YXlzICZsdDtjb2RlJmd0O2ZhbHNlJmx0Oy9jb2RlJmd0OzwvZGVzY3JpcHRpb24+CisgIDwvcHJvYmxlbT4KKworCisKKyAgPHByb2JsZW0+CisgICAgPGZpbGU+VGVzdC5qYXZhPC9maWxlPgorICAgIDxsaW5lPjM5PC9saW5lPgorICAgIDxtZXRob2Q+CisgICAgICA8bmFtZT52b2lkIGYoaW50IGspPC9uYW1lPgorICAgICAgPGRpc3BsYXlfbmFtZT5mKGludCk8L2Rpc3BsYXlfbmFtZT4KKyAgICAgIDxwYWNrYWdlPiZsdDtkZWZhdWx0Jmd0OzwvcGFja2FnZT4KKyAgICAgIDxjbGFzcz4KKyAgICAgICAgPG5hbWU+QXV0bzwvbmFtZT4KKyAgICAgICAgPGRpc3BsYXlfbmFtZT5BdXRvPC9kaXNwbGF5X25hbWU+CisgICAgICA8L2NsYXNzPgorICAgIDwvbWV0aG9kPgorICAgIDxwcm9ibGVtX2NsYXNzPkNvbnN0YW50IGNvbmRpdGlvbnMgJmFtcDsgZXhjZXB0aW9uczwvcHJvYmxlbV9jbGFzcz4KKyAgICA8ZGVzY3JpcHRpb24+Q29uZGl0aW9uICZsdDtjb2RlJmd0O2JpZzEgPT0gMzMyJmx0Oy9jb2RlJmd0OyBpcyBhbHdheXMgJmx0O2NvZGUmZ3Q7ZmFsc2UmbHQ7L2NvZGUmZ3Q7PC9kZXNjcmlwdGlvbj4KKyAgPC9wcm9ibGVtPgorCisKKworICA8cHJvYmxlbT4KKyAgICA8ZmlsZT5UZXN0LmphdmE8L2ZpbGU+CisgICAgPGxpbmU+NDQ8L2xpbmU+CisgICAgPG1ldGhvZD4KKyAgICAgIDxuYW1lPnZvaWQgZihpbnQgayk8L25hbWU+CisgICAgICA8ZGlzcGxheV9uYW1lPmYoaW50KTwvZGlzcGxheV9uYW1lPgorICAgICAgPHBhY2thZ2U+Jmx0O2RlZmF1bHQmZ3Q7PC9wYWNrYWdlPgorICAgICAgPGNsYXNzPgorICAgICAgICA8bmFtZT5BdXRvPC9uYW1lPgorICAgICAgICA8ZGlzcGxheV9uYW1lPkF1dG88L2Rpc3BsYXlfbmFtZT4KKyAgICAgIDwvY2xhc3M+CisgICAgPC9tZXRob2Q+CisgICAgPHByb2JsZW1fY2xhc3M+Q29uc3RhbnQgY29uZGl0aW9ucyAmYW1wOyBleGNlcHRpb25zPC9wcm9ibGVtX2NsYXNzPgorICAgIDxkZXNjcmlwdGlvbj5Db25kaXRpb24gJmx0O2NvZGUmZ3Q7Yz09MTIzNCZsdDsvY29kZSZndDsgaXMgYWx3YXlzICZsdDtjb2RlJmd0O3RydWUmbHQ7L2NvZGUmZ3Q7PC9kZXNjcmlwdGlvbj4KKyAgPC9wcm9ibGVtPgorCisKKworICA8cHJvYmxlbT4KKyAgICA8ZmlsZT5UZXN0LmphdmE8L2ZpbGU+CisgICAgPGxpbmU+NDc8L2xpbmU+CisgICAgPG1ldGhvZD4KKyAgICAgIDxuYW1lPnZvaWQgZihpbnQgayk8L25hbWU+CisgICAgICA8ZGlzcGxheV9uYW1lPmYoaW50KTwvZGlzcGxheV9uYW1lPgorICAgICAgPHBhY2thZ2U+Jmx0O2RlZmF1bHQmZ3Q7PC9wYWNrYWdlPgorICAgICAgPGNsYXNzPgorICAgICAgICA8bmFtZT5BdXRvPC9uYW1lPgorICAgICAgICA8ZGlzcGxheV9uYW1lPkF1dG88L2Rpc3BsYXlfbmFtZT4KKyAgICAgIDwvY2xhc3M+CisgICAgPC9tZXRob2Q+CisgICAgPHByb2JsZW1fY2xhc3M+Q29uc3RhbnQgY29uZGl0aW9ucyAmYW1wOyBleGNlcHRpb25zPC9wcm9ibGVtX2NsYXNzPgorICAgIDxkZXNjcmlwdGlvbj5Db25kaXRpb24gJmx0O2NvZGUmZ3Q7Yz09MTI0Jmx0Oy9jb2RlJmd0OyBpcyBhbHdheXMgJmx0O2NvZGUmZ3Q7ZmFsc2UmbHQ7L2NvZGUmZ3Q7PC9kZXNjcmlwdGlvbj4KKyAgPC9wcm9ibGVtPgorCisKKworICA8cHJvYmxlbT4KKyAgICA8ZmlsZT5UZXN0LmphdmE8L2ZpbGU+CisgICAgPGxpbmU+NTE8L2xpbmU+CisgICAgPG1ldGhvZD4KKyAgICAgIDxuYW1lPnZvaWQgZihpbnQgayk8L25hbWU+CisgICAgICA8ZGlzcGxheV9uYW1lPmYoaW50KTwvZGlzcGxheV9uYW1lPgorICAgICAgPHBhY2thZ2U+Jmx0O2RlZmF1bHQmZ3Q7PC9wYWNrYWdlPgorICAgICAgPGNsYXNzPgorICAgICAgICA8bmFtZT5BdXRvPC9uYW1lPgorICAgICAgICA8ZGlzcGxheV9uYW1lPkF1dG88L2Rpc3BsYXlfbmFtZT4KKyAgICAgIDwvY2xhc3M+CisgICAgPC9tZXRob2Q+CisgICAgPHByb2JsZW1fY2xhc3M+Q29uc3RhbnQgY29uZGl0aW9ucyAmYW1wOyBleGNlcHRpb25zPC9wcm9ibGVtX2NsYXNzPgorICAgIDxkZXNjcmlwdGlvbj5Db25kaXRpb24gJmx0O2NvZGUmZ3Q7Yz09MTIzNCZsdDsvY29kZSZndDsgaXMgYWx3YXlzICZsdDtjb2RlJmd0O2ZhbHNlJmx0Oy9jb2RlJmd0OzwvZGVzY3JpcHRpb24+CisgIDwvcHJvYmxlbT4KKworCisKKyAgPHByb2JsZW0+CisgICAgPGZpbGU+VGVzdC5qYXZhPC9maWxlPgorICAgIDxsaW5lPjU0PC9saW5lPgorICAgIDxtZXRob2Q+CisgICAgICA8bmFtZT52b2lkIGYoaW50IGspPC9uYW1lPgorICAgICAgPGRpc3BsYXlfbmFtZT5mKGludCk8L2Rpc3BsYXlfbmFtZT4KKyAgICAgIDxwYWNrYWdlPiZsdDtkZWZhdWx0Jmd0OzwvcGFja2FnZT4KKyAgICAgIDxjbGFzcz4KKyAgICAgICAgPG5hbWU+QXV0bzwvbmFtZT4KKyAgICAgICAgPGRpc3BsYXlfbmFtZT5BdXRvPC9kaXNwbGF5X25hbWU+CisgICAgICA8L2NsYXNzPgorICAgIDwvbWV0aG9kPgorICAgIDxwcm9ibGVtX2NsYXNzPkNvbnN0YW50IGNvbmRpdGlvbnMgJmFtcDsgZXhjZXB0aW9uczwvcHJvYmxlbV9jbGFzcz4KKyAgICA8ZGVzY3JpcHRpb24+Q29uZGl0aW9uICZsdDtjb2RlJmd0O2M9PWMmbHQ7L2NvZGUmZ3Q7IGlzIGFsd2F5cyAmbHQ7Y29kZSZndDt0cnVlJmx0Oy9jb2RlJmd0OzwvZGVzY3JpcHRpb24+CisgIDwvcHJvYmxlbT4KKworCisKKyAgPHByb2JsZW0+CisgICAgPGZpbGU+VGVzdC5qYXZhPC9maWxlPgorICAgIDxsaW5lPjU4PC9saW5lPgorICAgIDxtZXRob2Q+CisgICAgICA8bmFtZT52b2lkIGYoaW50IGspPC9uYW1lPgorICAgICAgPGRpc3BsYXlfbmFtZT5mKGludCk8L2Rpc3BsYXlfbmFtZT4KKyAgICAgIDxwYWNrYWdlPiZsdDtkZWZhdWx0Jmd0OzwvcGFja2FnZT4KKyAgICAgIDxjbGFzcz4KKyAgICAgICAgPG5hbWU+QXV0bzwvbmFtZT4KKyAgICAgICAgPGRpc3BsYXlfbmFtZT5BdXRvPC9kaXNwbGF5X25hbWU+CisgICAgICA8L2NsYXNzPgorICAgIDwvbWV0aG9kPgorICAgIDxwcm9ibGVtX2NsYXNzPkNvbnN0YW50IGNvbmRpdGlvbnMgJmFtcDsgZXhjZXB0aW9uczwvcHJvYmxlbV9jbGFzcz4KKyAgICA8ZGVzY3JpcHRpb24+Q29uZGl0aW9uICZsdDtjb2RlJmd0O2M9PWMyJmx0Oy9jb2RlJmd0OyBpcyBhbHdheXMgJmx0O2NvZGUmZ3Q7dHJ1ZSZsdDsvY29kZSZndDs8L2Rlc2NyaXB0aW9uPgorICA8L3Byb2JsZW0+CisKKyAgPHByb2JsZW0+CisgICAgPGZpbGU+VGVzdC5qYXZhPC9maWxlPgorICAgIDxsaW5lPjczPC9saW5lPgorICAgIDxtZXRob2Q+CisgICAgICA8bmFtZT52b2lkIGNhbkJlU3RhdGljKGludCB4KTwvbmFtZT4KKyAgICAgIDxkaXNwbGF5X25hbWU+Y2FuQmVTdGF0aWMoaW50KTwvZGlzcGxheV9uYW1lPgorICAgICAgPHBhY2thZ2U+Jmx0O2RlZmF1bHQmZ3Q7PC9wYWNrYWdlPgorICAgICAgPGNsYXNzPgorICAgICAgICA8bmFtZT5hYWE8L25hbWU+CisgICAgICAgIDxkaXNwbGF5X25hbWU+YWFhPC9kaXNwbGF5X25hbWU+CisgICAgICA8L2NsYXNzPgorICAgIDwvbWV0aG9kPgorICAgIDxwcm9ibGVtX2NsYXNzPkNvbnN0YW50IGNvbmRpdGlvbnMgJmFtcDsgZXhjZXB0aW9uczwvcHJvYmxlbV9jbGFzcz4KKyAgICA8ZGVzY3JpcHRpb24+Q29uZGl0aW9uICZsdDtjb2RlJmd0O2EgPT0gNSZsdDsvY29kZSZndDsgaXMgYWx3YXlzICZsdDtjb2RlJmd0O2ZhbHNlJmx0Oy9jb2RlJmd0OzwvZGVzY3JpcHRpb24+CisgIDwvcHJvYmxlbT4KKyAgPHByb2JsZW0+CisgICAgPGZpbGU+VGVzdC5qYXZhPC9maWxlPgorICAgIDxsaW5lPjgzPC9saW5lPgorICAgIDxtZXRob2Q+CisgICAgICA8bmFtZT52b2lkIGYoaW50IHApPC9uYW1lPgorICAgICAgPGRpc3BsYXlfbmFtZT5mKGludCk8L2Rpc3BsYXlfbmFtZT4KKyAgICAgIDxwYWNrYWdlPiZsdDtkZWZhdWx0Jmd0OzwvcGFja2FnZT4KKyAgICAgIDxjbGFzcz4KKyAgICAgICAgPG5hbWU+YWFhPC9uYW1lPgorICAgICAgICA8ZGlzcGxheV9uYW1lPmFhYTwvZGlzcGxheV9uYW1lPgorICAgICAgPC9jbGFzcz4KKyAgICA8L21ldGhvZD4KKyAgICA8cHJvYmxlbV9jbGFzcz5Db25zdGFudCBjb25kaXRpb25zICZhbXA7IGV4Y2VwdGlvbnM8L3Byb2JsZW1fY2xhc3M+CisgICAgPGRlc2NyaXB0aW9uPkNvbmRpdGlvbiAmbHQ7Y29kZSZndDtpMSA9PSBpMiZsdDsvY29kZSZndDsgaXMgYWx3YXlzICZsdDtjb2RlJmd0O3RydWUmbHQ7L2NvZGUmZ3Q7PC9kZXNjcmlwdGlvbj4KKyAgPC9wcm9ibGVtPgorCisgIDwhLS0KKyAgPHByb2JsZW0+CisgICAgPGZpbGU+VGVzdC5qYXZhPC9maWxlPgorICAgIDxsaW5lPjEwMzwvbGluZT4KKyAgICA8ZGVzY3JpcHRpb24+J3I9PXIxJyBpcyBhbHdheXMgZmFsc2U8L2Rlc2NyaXB0aW9uPgorICA8L3Byb2JsZW0+CisgIC0tPgorCisgIDxwcm9ibGVtPgorICAgIDxmaWxlPlRlc3QuamF2YTwvZmlsZT4KKyAgICA8bGluZT4xMDc8L2xpbmU+CisgICAgPGRlc2NyaXB0aW9uPidyMj09cjMnIGlzIGFsd2F5cyBmYWxzZTwvZGVzY3JpcHRpb24+CisgIDwvcHJvYmxlbT4KKworCisgIDwhLS0KKyAgPHByb2JsZW0+CisgICAgPGZpbGU+VGVzdC5qYXZhPC9maWxlPgorICAgIDxsaW5lPjExMjwvbGluZT4KKyAgICA8ZGVzY3JpcHRpb24+J2ZyPT1mcjEnIGlzIGFsd2F5cyBmYWxzZTwvZGVzY3JpcHRpb24+CisgIDwvcHJvYmxlbT4KKyAgLS0+CisKKworICA8cHJvYmxlbT4KKyAgICA8ZmlsZT5UZXN0LmphdmE8L2ZpbGU+CisgICAgPGxpbmU+MTE2PC9saW5lPgorICAgIDxkZXNjcmlwdGlvbj4nZnIyPT1mcjMnIGlzIGFsd2F5cyBmYWxzZTwvZGVzY3JpcHRpb24+CisgIDwvcHJvYmxlbT4KKworPC9wcm9ibGVtcz4KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RhdGFGbG93L2F1dG9ib3hpbmcvc3JjL1Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RhdGFGbG93L2F1dG9ib3hpbmcvc3JjL1Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zODEzOWRlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvYXV0b2JveGluZy9zcmMvVGVzdC5qYXZhCkBAIC0wLDAgKzEsMTE5IEBACitwdWJsaWMgY2xhc3MgQXV0byB7CisgICAgdm9pZCBmKGludCBrKSB7CisgICAgICAgIEludGVnZXIgaSA9IDA7CisgICAgICAgIEludGVnZXIgaj0wOyAgICAKKyAgICAgICAgaWYgKGk9PWopIHsKKworICAgICAgICB9CisgICAgICAgIEludGVnZXIgajIgPSAxOworICAgICAgICBpZiAoaT09ajIpIHsKKyAgICAgICAgICAgIAorICAgICAgICB9CisgICAgICAgIGlmIChpPT0wKSB7CisgICAgICAgICAgICAKKyAgICAgICAgfQorICAgICAgICBpZiAoaT09MSkgeworICAgICAgICAgICAgCisgICAgICAgIH0KKworICAgICAgICAvLy8vLy8vLy8vLy8vLy8vLy8KKyAgICAgICAgSW50ZWdlciBiaWcxID0gMzMzOworICAgICAgICBJbnRlZ2VyIGJpZzI9ICAzMzM7CisgICAgICAgIGlmIChiaWcxPT0zMzMpIHsKKyAgICAgICAgfQorICAgICAgICBpZiAoMzMzID09IGJpZzIpIHsKKyAgICAgICAgfQorICAgICAgICBpZiAoMzMzPT0zMzMpIHsKKyAgICAgICAgfQorICAgICAgICBpZiAoYmlnMT09YmlnMikgeworCisgICAgICAgIH0KKyAgICAgICAgaW50IHByaW0gPSBiaWcxOworICAgICAgICBpZiAocHJpbT09YmlnMikgeworCisgICAgICAgIH0KKworICAgICAgICBpZiAoYmlnMSA9PSAwKSB7CisKKyAgICAgICAgfQorICAgICAgICBpZiAoYmlnMSA9PSAzMzIpIHsKKworICAgICAgICB9CisKKyAgICAgICAgQ2hhcmFjdGVyIGMgPSAxMjM0OworICAgICAgICBpZiAoYz09MTIzNCkgeworCisgICAgICAgIH0KKyAgICAgICAgaWYgKGM9PTEyNCkgeworCisgICAgICAgIH0KKyAgICAgICAgYyA9IDE7CisgICAgICAgIGlmIChjPT0xMjM0KSB7CisKKyAgICAgICAgfQorICAgICAgICBpZiAoYz09YykgeworCisgICAgICAgIH0KKyAgICAgICAgQ2hhcmFjdGVyIGMyID0gMTsKKyAgICAgICAgaWYgKGM9PWMyKSB7CisKKyAgICAgICAgfQorICAgIH0KK30KK2NsYXNzIGFhYSB7CisgIGludCBhOworICBpbnQgYjsKKyAgdm9pZCBjYW5CZVN0YXRpYyhpbnQgeCkgeworICAgICAgZm9yIChpbnQgaT0wO2k8MTA7aSsrKSB7CisgICAgICAgYSA9IGk7CisgICAgICB9CisKKyAgICAgIGEgPSA0OworCisgICAgaWYgKGEgPT0gNSkgeworICAgIH0KKyAgfQorCisKKyAgICB2b2lkIGYoaW50IHApIHsKKyAgICAgICAgeworICAgICAgICAgICAgaW50IGkgPSAxOworICAgICAgICAgICAgSW50ZWdlciBpMSA9IGk7CisgICAgICAgICAgICBJbnRlZ2VyIGkyID0gaTsKKyAgICAgICAgICAgIGlmIChpMSA9PSBpMikgeworCisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgeworICAgICAgICAgICAgaW50IGkgPSBwOworICAgICAgICAgICAgSW50ZWdlciBpMSA9IGk7CisgICAgICAgICAgICBJbnRlZ2VyIGkyID0gaTsKKyAgICAgICAgICAgIGlmIChpMSA9PSBpMikgeworCisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKK30KK2NsYXNzIFVzZXNEb3VibGVBbmRGbG9hdCB7CisgICAgdm9pZCBmKCkgeworICAgICAgICBkb3VibGUgZGQgPSAxMC4wOworICAgICAgICBEb3VibGUgciA9IGRkOworICAgICAgICBEb3VibGUgcjEgPSBkZDsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCIocj09cjEpIGlzICIrKHI9PXIxKSk7CisKKyAgICAgICAgRG91YmxlIHIyID0gMTAuMDsKKyAgICAgICAgRG91YmxlIHIzID0gMTAuMDsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCIocjI9PXIzKSBpcyAiKyhyMj09cjMpKTsKKworICAgICAgICBmbG9hdCBmZCA9IDEwLjBmOworICAgICAgICBGbG9hdCBmciA9IGZkOworICAgICAgICBGbG9hdCBmcjEgPSBmZDsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCIocj09cjEpIGlzICIrKGZyPT1mcjEpKTsKKworICAgICAgICBGbG9hdCBmcjIgPSAxMC4wZjsKKyAgICAgICAgRmxvYXQgZnIzID0gMTAuMGY7CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiKHIyPT1yMykgaXMgIisoZnIyPT1mcjMpKTsKKyAgICAKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvYm94aW5nQm9vbGVhbi9leHBlY3RlZC54bWwgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy9ib3hpbmdCb29sZWFuL2V4cGVjdGVkLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMDRlYTI4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvYm94aW5nQm9vbGVhbi9leHBlY3RlZC54bWwKQEAgLTAsMCArMSwzOSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxwcm9ibGVtcz4KKyAgPHByb2JsZW0+CisgICAgPGZpbGU+VGVzdC5qYXZhPC9maWxlPgorICAgIDxsaW5lPjE0PC9saW5lPgorICAgIDxkZXNjcmlwdGlvbj5Db25kaXRpb24gJmx0O2NvZGUmZ3Q7YyZsdDsvY29kZSZndDsgaXMgYWx3YXlzICZsdDtjb2RlJmd0O2ZhbHNlJmx0Oy9jb2RlJmd0Oy48L2Rlc2NyaXB0aW9uPgorICA8L3Byb2JsZW0+CisKKyAgPHByb2JsZW0+CisgICAgPGZpbGU+VGVzdC5qYXZhPC9maWxlPgorICAgIDxsaW5lPjIwPC9saW5lPgorICAgIDxkZXNjcmlwdGlvbj5Db25kaXRpb24gJmx0O2NvZGUmZ3Q7YyZsdDsvY29kZSZndDsgaXMgYWx3YXlzICZsdDtjb2RlJmd0O3RydWUmbHQ7L2NvZGUmZ3Q7LjwvZGVzY3JpcHRpb24+CisgIDwvcHJvYmxlbT4KKworICA8cHJvYmxlbT4KKyAgICA8ZmlsZT5UZXN0LmphdmE8L2ZpbGU+CisgICAgPGxpbmU+MzM8L2xpbmU+CisgICAgPGRlc2NyaXB0aW9uPkNvbmRpdGlvbiAmbHQ7Y29kZSZndDtvJmx0Oy9jb2RlJmd0OyBpcyBhbHdheXMgJmx0O2NvZGUmZ3Q7dHJ1ZSZsdDsvY29kZSZndDsuPC9kZXNjcmlwdGlvbj4KKyAgPC9wcm9ibGVtPgorCisgIDxwcm9ibGVtPgorICAgIDxmaWxlPlRlc3QuamF2YTwvZmlsZT4KKyAgICA8bGluZT4zOTwvbGluZT4KKyAgICA8ZGVzY3JpcHRpb24+Q29uZGl0aW9uICZsdDtjb2RlJmd0O28mbHQ7L2NvZGUmZ3Q7IGlzIGFsd2F5cyAmbHQ7Y29kZSZndDtmYWxzZSZsdDsvY29kZSZndDsuPC9kZXNjcmlwdGlvbj4KKyAgPC9wcm9ibGVtPgorCisgIDxwcm9ibGVtPgorICAgIDxmaWxlPlRlc3QuamF2YTwvZmlsZT4KKyAgICA8bGluZT40NTwvbGluZT4KKyAgICA8ZGVzY3JpcHRpb24+Q29uZGl0aW9uICZsdDtjb2RlJmd0O28mbHQ7L2NvZGUmZ3Q7IGlzIGFsd2F5cyAmbHQ7Y29kZSZndDt0cnVlJmx0Oy9jb2RlJmd0Oy48L2Rlc2NyaXB0aW9uPgorICA8L3Byb2JsZW0+CisKKyAgPHByb2JsZW0+CisgICAgPGZpbGU+VGVzdC5qYXZhPC9maWxlPgorICAgIDxsaW5lPjUxPC9saW5lPgorICAgIDxkZXNjcmlwdGlvbj5Db25kaXRpb24gJmx0O2NvZGUmZ3Q7byZsdDsvY29kZSZndDsgYXQgdGhlIGxlZnQgc2lkZSBvZiBhc3NpZ25tZW50IGV4cHJlc3Npb24gaXMgYWx3YXlzICZsdDtjb2RlJmd0O2ZhbHNlJmx0Oy9jb2RlJmd0Oy4gQ2FuIGJlIHNpbXBsaWZpZWQgdG8gbm9ybWFsIGFzc2lnbm1lbnQuPC9kZXNjcmlwdGlvbj4KKyAgPC9wcm9ibGVtPgorCis8L3Byb2JsZW1zPgpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvYm94aW5nQm9vbGVhbi9zcmMvVGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvYm94aW5nQm9vbGVhbi9zcmMvVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE1ZTM4ZWQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy9ib3hpbmdCb29sZWFuL3NyYy9UZXN0LmphdmEKQEAgLTAsMCArMSw1NSBAQAorcHVibGljIGNsYXNzIFMgeworICAgIHZvaWQgZihCb29sZWFuIG92ZXJyaWRlKSB7CisKKyAgICAgICAgaWYgKG92ZXJyaWRlID09IG51bGwpIHsKKyAgICAgICAgICAgIC8vZG9Tb21ldGhpbmcoKTsKKyAgICAgICAgfSBlbHNlIGlmIChvdmVycmlkZSkgeyAgICAvLyBhbHdheXMgZmFsc2U/CisgICAgICAgICAgICAvL2RvT3ZlcnJpZGUoKTsKKyAgICAgICAgfQorCisgICAgfQorICAgICAgICBwdWJsaWMgdm9pZCB0ZTAoYm9vbGVhbiBiKXsKKyAgICAgICAgICAgIEJvb2xlYW4gYyA9IGZhbHNlOworICAgIC8vICAgICAgICBpZiAoYikgYyA9IHRydWU7CisgICAgICAgICAgICBpZiAoYykgeworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHB1YmxpYyB2b2lkIHRlMShib29sZWFuIGIpeworICAgICAgICAgICAgQm9vbGVhbiBjID0gdHJ1ZTsKKyAgICAvLyAgICAgICAgaWYgKGIpIGMgPSB0cnVlOworICAgICAgICAgICAgaWYgKGMpIHsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBwdWJsaWMgdm9pZCB0ZTIoYm9vbGVhbiBiKXsKKyAgICAgICAgICAgIEJvb2xlYW4gYyA9IGZhbHNlOworICAgICAgICAgICAgaWYgKGIpIGMgPSB0cnVlOworICAgICAgICAgICAgaWYgKGMpIHsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgcHVibGljIHZvaWQgdGUzKGJvb2xlYW4gYil7CisgICAgICAgIEJvb2xlYW4gYyA9IEJvb2xlYW4uRkFMU0U7CisgICAgICAgIGJvb2xlYW4gbyA9ICFjOworICAgICAgICBpZiAobykgeworICAgICAgICB9CisgICAgfQorICAgIHB1YmxpYyB2b2lkIHRlNChib29sZWFuIGIpeworICAgICAgICBCb29sZWFuIGMgPSBCb29sZWFuLkZBTFNFOworICAgICAgICBib29sZWFuIG8gPSBjOworICAgICAgICBpZiAobykgeworICAgICAgICB9CisgICAgfQorICAgIHB1YmxpYyB2b2lkIHRlNShib29sZWFuIGIpeworICAgICAgICBCb29sZWFuIGMgPSBCb29sZWFuLlRSVUU7CisgICAgICAgIGJvb2xlYW4gbyA9IGJ8fGM7CisgICAgICAgIGlmIChvKSB7CisgICAgICAgIH0KKyAgICB9CisgICAgcHVibGljIHZvaWQgdGU2KGJvb2xlYW4gYil7CisgICAgICAgIEJvb2xlYW4gYyA9IEJvb2xlYW4uVFJVRTsKKyAgICAgICAgYm9vbGVhbiBvID0gIWM7CisgICAgICAgIG8gfD0gYyZiOworICAgICAgICBpZiAobykgeworICAgICAgICB9CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvY2FzZUFuZE5wZS9leHBlY3RlZC54bWwgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy9jYXNlQW5kTnBlL2V4cGVjdGVkLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hODNlZjdiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvY2FzZUFuZE5wZS9leHBlY3RlZC54bWwKQEAgLTAsMCArMSwyNCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxwcm9ibGVtcz4KKyAgPHByb2JsZW0+CisgICAgPGZpbGU+Q2FzZUFuZE5wZS5qYXZhPC9maWxlPgorICAgIDxsaW5lPjc5PC9saW5lPgorICAgIDxkZXNjcmlwdGlvbj5Db25kaXRpb24gJ2EgIT0gbnVsbCcgaXMgYWx3YXlzIHRydWU8L2Rlc2NyaXB0aW9uPgorICA8L3Byb2JsZW0+CisgIDxwcm9ibGVtPgorICAgIDxmaWxlPkNhc2VBbmROcGUuamF2YTwvZmlsZT4KKyAgICA8bGluZT4yNjwvbGluZT4KKyAgICA8ZGVzY3JpcHRpb24+TWV0aG9kIGludm9jYXRpb24gJ28uZXF1YWxzKG8pJyBtYXkgcHJvZHVjZSBOdWxsUG9pbnRlckV4Y2VwdGlvbjwvZGVzY3JpcHRpb24+CisgIDwvcHJvYmxlbT4KKyAgPHByb2JsZW0+CisgICAgPGZpbGU+Q2FzZUFuZE5wZS5qYXZhPC9maWxlPgorICAgIDxsaW5lPjQ4PC9saW5lPgorICAgIDxkZXNjcmlwdGlvbj5Td2l0Y2ggbGFiZWwgJ2Nhc2UgMTonIGlzIHVucmVhY2hhYmxlPC9kZXNjcmlwdGlvbj4KKyAgPC9wcm9ibGVtPgorICA8cHJvYmxlbT4KKyAgICA8ZmlsZT5DYXNlQW5kTnBlLmphdmE8L2ZpbGU+CisgICAgPGxpbmU+NDk8L2xpbmU+CisgICAgPGRlc2NyaXB0aW9uPlN3aXRjaCBsYWJlbCAnY2FzZSAyOicgaXMgdW5yZWFjaGFibGU8L2Rlc2NyaXB0aW9uPgorICA8L3Byb2JsZW0+Cis8L3Byb2JsZW1zPgorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy9jYXNlQW5kTnBlL3NyYy9DYXNlQW5kTnBlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy9jYXNlQW5kTnBlL3NyYy9DYXNlQW5kTnBlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTE2NDNkNQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RhdGFGbG93L2Nhc2VBbmROcGUvc3JjL0Nhc2VBbmROcGUuamF2YQpAQCAtMCwwICsxLDEyMiBAQAorLyoKKyAqIENyZWF0ZWQgYnkgSW50ZWxsaUogSURFQS4KKyAqIFVzZXI6IG1heAorICogRGF0ZTogSmFuIDQsIDIwMDIKKyAqIFRpbWU6IDQ6MDE6MjEgUE0KKyAqIFRvIGNoYW5nZSB0ZW1wbGF0ZSBmb3IgbmV3IGludGVyZmFjZSB1c2UKKyAqIENvZGUgU3R5bGUgfCBDbGFzcyBUZW1wbGF0ZXMgb3B0aW9ucyAoVG9vbHMgfCBJREUgT3B0aW9ucykuCisgKi8KK3BhY2thZ2UgdGVzdC5kZWFkY29kZTsKKworaW1wb3J0IGphdmEuaW8uSU9FeGNlcHRpb247CisKK3B1YmxpYyBjbGFzcyBhYWEgeworICBpbnQgYTsKKyAgaW50IGI7CisKKyAgdm9pZCB4KGludCBpLCBPYmplY3QgbykgeworICAgIGlmIChvID09IG51bGwpIHsKKyAgICAgIGkgPSAyOworICAgIH0KKworICAgIGlmIChvIGluc3RhbmNlb2YgU3RyaW5nKSB7CisgICAgICBvLmVxdWFscyhvKTsKKyAgICB9CisKKyAgICBvLmVxdWFscyhvKTsKKworICAgIGlmIChpID09IDMpIHsKKyAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiIik7CisgICAgfQorICAgIGlmIChpID09IDMpIHsKKyAgICAgIG8uZXF1YWxzKG8pOworICAgICAgby5lcXVhbHMobyk7CisgICAgfQorCisgICAgby5lcXVhbHMobyk7CisKKworICAgIGlmIChpID09IDIpIHsKKyAgICAgIGkgPSA2OworICAgIH0gZWxzZSB7CisgICAgICBpID0gNTsKKyAgICB9CisKKyAgICAvL1N5c3RlbS5leGl0KDApOworCisgICAgc3dpdGNoKGkpIHsKKyAgICAgIGNhc2UgMTogU3lzdGVtLm91dC5wcmludGxuKCIxIG5vdCByZWFjaGFibGUiKTsgYnJlYWs7CisgICAgICBjYXNlIDI6IFN5c3RlbS5vdXQucHJpbnRsbigiMiBub3QgcmVhY2hhYmxlIik7IGJyZWFrOworICAgICAgY2FzZSA2OiBTeXN0ZW0ub3V0LnByaW50bG4oIjYgcmVhY2hhYmxlIik7IGJyZWFrOworICAgICAgY2FzZSA1OiBTeXN0ZW0ub3V0LnByaW50bG4oIjUgcmVhY2hhYmxlIik7IGJyZWFrOworICAgICAgZGVmYXVsdDogU3lzdGVtLm91dC5wcmludGxuKCJEZWZhdWx0IG5vdCByZWFjaGFibGUiKTsgYnJlYWs7CisgICAgfQorICAgIGludCBqID0gMDsKKworICAgIGZvciAoOyBpIDwgNTsgaSsrLCBqKyspIHt9CisgIH0KKworICB2b2lkIGNhbkJlU3RhdGljKCkgeworICAgIGZvciAoaW50IGkgPSAxNTsgaSA+PSAwOyAtLWkpCisgICAgeworICAgICAgaWYgKChpPT00KSB8fCAoaT09MTApKQorICAgICAgeworICAgICAgICAvL2FjdHVhbCBibG9jayBib2R5IHJlbW92ZWQKKyAgICAgIH0KKyAgICB9CisKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bGw7IGkrKykgeworICAgICAgYSA9IGk7CisgICAgICB0aGlzLmEgPSBpOworICAgIH0KKworICAgIGlmIChhICE9IGIgJiYgYSAhPSA1KSB7CisgICAgICBhID0gMzsKKyAgICB9IGVsc2UgeworICAgICAgYSA9IDQ7CisgICAgfQorCisgICAgaWYgKGEgIT0gbnVsbCAmJiBhIGluc3RhbmNlb2YgYWFhKSB7CisgICAgICBpZiAodHJ1ZSkgeworICAgICAgICAvL2EgPSBuZXcgYWFhKCk7CisgICAgICB9CisgICAgfQorCisgICAgYSA9IDYgKyAxOworICB9Cit9CisKKworY2xhc3MgVGVzdAoreworICBwdWJsaWMgc3RhdGljIGludCBteXVudXNlZGZpZWxkMSA9IDA7CisgIC8vIC0tUmVjeWNsZSBCaW4gKDMvMjkvMDIgNjo0NCBQTSlwdWJsaWMgc3RhdGljIGludCBteXVudXNlZGZpZWxkMiA9IDA7CisgIHB1YmxpYyBzdGF0aWMgaW50IG15dW51c2VkZmllbGQzID0gMDsKKyAgLy8gLS1SZWN5Y2xlIEJpbiAoMy8yOS8wMiA2OjQ0IFBNKXB1YmxpYyBzdGF0aWMgaW50IG15dW51c2VkZmllbGQ0ID0gMDsKKyAgcHVibGljIHN0YXRpYyBpbnQgbXl1bnVzZWRmaWVsZDUgPSAwOworCisKKyAgICAgdm9pZCB0ZXN0TWV0aG9kMSgpIHRocm93cyBJT0V4Y2VwdGlvbiB7fQorICAgICB2b2lkIHRlc3RNZXRob2QyKCkgdGhyb3dzIElPRXhjZXB0aW9uIHt9CisKKyAgICAgcHVibGljIHZvaWQgbWFpbihTdHJpbmcgYXJndltdKQorICAgICB7CisgICAgICAgICAgYm9vbGVhbiBjYWxsaW5nTWV0aG9kMSA9IGZhbHNlOworICAgICAgICAgIHRyeQorICAgICAgICAgIHsKKyAgICAgICAgICAgIGludCBpID0gKGludCkgMDsKKyAgICAgICAgICAgICAgIGNhbGxpbmdNZXRob2QxID0gdHJ1ZTsKKyAgICAgICAgICAgICAgIHRlc3RNZXRob2QxKCk7CisgICAgICAgICAgICAgICBjYWxsaW5nTWV0aG9kMSA9IGZhbHNlOworICAgICAgICAgICAgICAgdGVzdE1ldGhvZDIoKTsKKyAgICAgICAgICB9CisgICAgICAgICAgY2F0Y2ggKElPRXhjZXB0aW9uIGUpCisgICAgICAgICAgeworICAgICAgICAgICAgICAgaWYgKGNhbGxpbmdNZXRob2QxKQorICAgICAgICAgICAgICAgICAgICBTeXN0ZW0uZXJyLnByaW50bG4oIkVycm9yIHdoaWxlIGNhbGxpbmcgbWV0aG9kIDEiKTsKKyAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgU3lzdGVtLmVyci5wcmludGxuKCJFcnJvciB3aGlsZSBjYWxsaW5nIG1ldGhvZCAyIik7CisgICAgICAgICAgfQorICAgICB9Cit9CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RhdGFGbG93L2NjZS9leHBlY3RlZC54bWwgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy9jY2UvZXhwZWN0ZWQueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU1NjdkNWQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy9jY2UvZXhwZWN0ZWQueG1sCkBAIC0wLDAgKzEsOSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxwcm9ibGVtcz4KKyAgPHByb2JsZW0+CisgICAgPGZpbGU+Q2NlLmphdmE8L2ZpbGU+CisgICAgPGxpbmU+MTI8L2xpbmU+CisgICAgPGRlc2NyaXB0aW9uPm1heSBwcm9kdWNlIENsYXNzQ2FzdEV4Y2VwdGlvbjwvZGVzY3JpcHRpb24+CisgIDwvcHJvYmxlbT4KKzwvcHJvYmxlbXM+CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RhdGFGbG93L2NjZS9zcmMvQ2NlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy9jY2Uvc3JjL0NjZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE4YmM5NmUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy9jY2Uvc3JjL0NjZS5qYXZhCkBAIC0wLDAgKzEsMTkgQEAKK2NsYXNzIEEgeworfQorCitjbGFzcyBCIHsKK30KKworcHVibGljIGNsYXNzIENjZSB7CisgICBwdWJsaWMgdm9pZCBhKCkgeworICAgICAgT2JqZWN0IG8gPSBnZXRPYmplY3QoKTsKKworICAgICAgaWYgKG8gaW5zdGFuY2VvZiBBKSB7CisgICAgICAgIEIgYiA9IChCKSBvOworICAgICAgfQorICAgfQorCisgICBPYmplY3QgZ2V0T2JqZWN0KCkgeworICAgICByZXR1cm4gbmV3IEEoKTsKKyAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy9jb21waWxlVGltZUNvbnN0L2V4cGVjdGVkLnhtbCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RhdGFGbG93L2NvbXBpbGVUaW1lQ29uc3QvZXhwZWN0ZWQueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjliNDE4NWQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy9jb21waWxlVGltZUNvbnN0L2V4cGVjdGVkLnhtbApAQCAtMCwwICsxLDI0IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPHByb2JsZW1zPgorPHByb2JsZW0+CisgIDxmaWxlPlRlc3QuamF2YTwvZmlsZT4KKyAgPGxpbmU+NjwvbGluZT4KKyAgPG1ldGhvZD4KKyAgICA8bmFtZT52b2lkIGZvbyhib29sZWFuIHBhcmFtKTwvbmFtZT4KKyAgICA8ZGlzcGxheV9uYW1lPmZvbyhib29sZWFuKTwvZGlzcGxheV9uYW1lPgorICAgIDxwYWNrYWdlPiZsdDtkZWZhdWx0Jmd0OzwvcGFja2FnZT4KKyAgICA8Y2xhc3M+CisgICAgICA8bmFtZT5ZPC9uYW1lPgorICAgICAgPGRpc3BsYXlfbmFtZT5ZPC9kaXNwbGF5X25hbWU+CisgICAgPC9jbGFzcz4KKyAgPC9tZXRob2Q+CisgIDxwcm9ibGVtX2NsYXNzPkNvbnN0YW50IGNvbmRpdGlvbnMgJmFtcDsgZXhjZXB0aW9uczwvcHJvYmxlbV9jbGFzcz4KKyAgPGRlc2NyaXB0aW9uPkNvbmRpdGlvbiAmbHQ7Y29kZSZndDtiJmx0Oy9jb2RlJmd0OyBpcyBhbHdheXMgJmx0O2NvZGUmZ3Q7dHJ1ZSZsdDsvY29kZSZndDsuPC9kZXNjcmlwdGlvbj4KKzwvcHJvYmxlbT4KKyAgPHByb2JsZW0+CisgICAgPGZpbGU+VGVzdC5qYXZhPC9maWxlPgorICAgIDxsaW5lPjU8L2xpbmU+CisgICAgPHByb2JsZW1fY2xhc3Mgc2V2ZXJpdHk9IldBUk5JTkciIGF0dHJpYnV0ZV9rZXk9IldBUk5JTkdfQVRUUklCVVRFUyI+Q29uc3RhbnQgY29uZGl0aW9ucyAmYW1wOyBleGNlcHRpb25zPC9wcm9ibGVtX2NsYXNzPgorICAgIDxkZXNjcmlwdGlvbj5Db25kaXRpb24gJmx0O2NvZGUmZ3Q7Q09OU1QmbHQ7L2NvZGUmZ3Q7IGlzIGFsd2F5cyAmbHQ7Y29kZSZndDt0cnVlJmx0Oy9jb2RlJmd0OzwvZGVzY3JpcHRpb24+CisgIDwvcHJvYmxlbT4KKzwvcHJvYmxlbXM+CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy9jb21waWxlVGltZUNvbnN0L3NyYy9UZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy9jb21waWxlVGltZUNvbnN0L3NyYy9UZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGQzMDJhNwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RhdGFGbG93L2NvbXBpbGVUaW1lQ29uc3Qvc3JjL1Rlc3QuamF2YQpAQCAtMCwwICsxLDkgQEAKK3B1YmxpYyBjbGFzcyBZIHsgICAKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBib29sZWFuIENPTlNUID0gdHJ1ZTsKKworICAgIHB1YmxpYyB2b2lkIGZvbyhib29sZWFuIHBhcmFtKSB7CisgICAgICAgIGJvb2xlYW4gYiA9IENPTlNUIHx8IHBhcmFtOworICAgICAgICBpZiAoYikgeworICAgICAgICB9CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvY29uc3RhbnRFeHByL2V4cGVjdGVkLnhtbCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RhdGFGbG93L2NvbnN0YW50RXhwci9leHBlY3RlZC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGUxNjkzMgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RhdGFGbG93L2NvbnN0YW50RXhwci9leHBlY3RlZC54bWwKQEAgLTAsMCArMSw4IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPHByb2JsZW1zPgorICA8cHJvYmxlbT4KKyAgICA8ZmlsZT5UZXN0LmphdmE8L2ZpbGU+CisgICAgPGxpbmU+NjwvbGluZT4KKyAgICA8ZGVzY3JpcHRpb24+Q29uZGl0aW9uICdpID09IGonIGlzIGFsd2F5cyB0cnVlPC9kZXNjcmlwdGlvbj4KKyAgPC9wcm9ibGVtPgorPC9wcm9ibGVtcz4KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RhdGFGbG93L2NvbnN0YW50RXhwci9zcmMvVGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvY29uc3RhbnRFeHByL3NyYy9UZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGVjOTIwNQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RhdGFGbG93L2NvbnN0YW50RXhwci9zcmMvVGVzdC5qYXZhCkBAIC0wLDAgKzEsOSBAQAorcHVibGljIGNsYXNzIFRlc3QgeworICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgQ09OU1QgPSAzLzIgKyAwKjE7CisgIHB1YmxpYyB2b2lkIGZvbygpIHsKKyAgICBpbnQgaSA9IDA7CisgICAgaW50IGogPSAyICsgKENPTlNUKSAtIDYvMjsKKyAgICBpZiAoaSA9PSBqKSB7CisgICAgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvZXhjZXB0aW9uQ0ZHL2V4cGVjdGVkLnhtbCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RhdGFGbG93L2V4Y2VwdGlvbkNGRy9leHBlY3RlZC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWFjODc5ZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RhdGFGbG93L2V4Y2VwdGlvbkNGRy9leHBlY3RlZC54bWwKQEAgLTAsMCArMSwzIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPHByb2JsZW1zIC8+CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RhdGFGbG93L2V4Y2VwdGlvbkNGRy9zcmMvRXhjZXB0aW9uQ0ZHLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy9leGNlcHRpb25DRkcvc3JjL0V4Y2VwdGlvbkNGRy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY1OWZkMWYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy9leGNlcHRpb25DRkcvc3JjL0V4Y2VwdGlvbkNGRy5qYXZhCkBAIC0wLDAgKzEsMzQgQEAKK2ltcG9ydCBqYXZhLmlvLio7CisKK2NsYXNzIFRlc3QKK3sKKyAgcHVibGljIHN0YXRpYyBpbnQgbXl1bnVzZWRmaWVsZDEgPSAwOworICAvLyAtLVJlY3ljbGUgQmluICgzLzI5LzAyIDY6NDQgUE0pcHVibGljIHN0YXRpYyBpbnQgbXl1bnVzZWRmaWVsZDIgPSAwOworICBwdWJsaWMgc3RhdGljIGludCBteXVudXNlZGZpZWxkMyA9IDA7CisgIC8vIC0tUmVjeWNsZSBCaW4gKDMvMjkvMDIgNjo0NCBQTSlwdWJsaWMgc3RhdGljIGludCBteXVudXNlZGZpZWxkNCA9IDA7CisgIHB1YmxpYyBzdGF0aWMgaW50IG15dW51c2VkZmllbGQ1ID0gMDsKKworCisgICAgIHZvaWQgdGVzdE1ldGhvZDEoKSB0aHJvd3MgSU9FeGNlcHRpb24ge30KKyAgICAgdm9pZCB0ZXN0TWV0aG9kMigpIHRocm93cyBJT0V4Y2VwdGlvbiB7fQorCisgICAgIHB1YmxpYyB2b2lkIG1haW4oU3RyaW5nIGFyZ3ZbXSkKKyAgICAgeworICAgICAgICAgIGJvb2xlYW4gY2FsbGluZ01ldGhvZDEgPSBmYWxzZTsKKyAgICAgICAgICB0cnkKKyAgICAgICAgICB7CisgICAgICAgICAgICBpbnQgaSA9IChpbnQpIDA7CisgICAgICAgICAgICAgICBjYWxsaW5nTWV0aG9kMSA9IHRydWU7CisgICAgICAgICAgICAgICB0ZXN0TWV0aG9kMSgpOworICAgICAgICAgICAgICAgY2FsbGluZ01ldGhvZDEgPSBmYWxzZTsKKyAgICAgICAgICAgICAgIHRlc3RNZXRob2QyKCk7CisgICAgICAgICAgfQorICAgICAgICAgIGNhdGNoIChJT0V4Y2VwdGlvbiBlKQorICAgICAgICAgIHsKKyAgICAgICAgICAgICAgIGlmIChjYWxsaW5nTWV0aG9kMSkKKyAgICAgICAgICAgICAgICAgICAgU3lzdGVtLmVyci5wcmludGxuKCJFcnJvciB3aGlsZSBjYWxsaW5nIG1ldGhvZCAxIik7CisgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIFN5c3RlbS5lcnIucHJpbnRsbigiRXJyb3Igd2hpbGUgY2FsbGluZyBtZXRob2QgMiIpOworICAgICAgICAgIH0KKyAgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvZmluYWxGaWVsZHMvZXhwZWN0ZWQueG1sIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvZmluYWxGaWVsZHMvZXhwZWN0ZWQueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc5NmEzMTUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy9maW5hbEZpZWxkcy9leHBlY3RlZC54bWwKQEAgLTAsMCArMSwyIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPHByb2JsZW1zIC8+CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy9maW5hbEZpZWxkcy9zcmMvVGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvZmluYWxGaWVsZHMvc3JjL1Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41Y2MyMzcyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvZmluYWxGaWVsZHMvc3JjL1Rlc3QuamF2YQpAQCAtMCwwICsxLDE2IEBACitpbXBvcnQgb3JnLmpldGJyYWlucy5hbm5vdGF0aW9ucy5OdWxsYWJsZTsKKworcHVibGljIGNsYXNzIFRlc3QgeworICBATnVsbGFibGUgcHVibGljIGZpbmFsIFN0cmluZyBvOworCisgIHB1YmxpYyBUZXN0KFN0cmluZyBxKSB7IG8gPSBxOyB9CisKKyAgcHVibGljIHZvaWQgdGVzdCgpIHsKKyAgICBpZiAobyAhPSBudWxsKSB7CisgICAgICBiYXIoKTsKKyAgICAgIG8uaGFzaENvZGUoKTsKKyAgICB9CisgIH0KKworICBwdWJsaWMgdm9pZCBiYXIoKSB7fQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RhdGFGbG93L2ZpeHR1cmUvQW5uUmVwb3J0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy9maXh0dXJlL0FublJlcG9ydC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgxMWI0MWMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy9maXh0dXJlL0FublJlcG9ydC5qYXZhCkBAIC0wLDAgKzEsMjEgQEAKK2ltcG9ydCBvcmcuamV0YnJhaW5zLmFubm90YXRpb25zLk5vdE51bGw7CisKK3B1YmxpYyBjbGFzcyBBU0QgeworICBzdGF0aWMgdm9pZCBmb28oT2JqZWN0IGFueSkgeworICAgIGJvb2xlYW4gYSA9IGZhbHNlOworICAgIGJvb2xlYW4gYiA9IGZhbHNlOworICAgIHdoaWxlICh0cnVlKSB7CisgICAgICBib29sZWFuIHRyZyA9IGJhcigpID09IGFueTsKKworICAgICAgYSA9IGEgfHwgdHJnOworICAgICAgYiA9IGIgfHwgIXRyZzsKKworICAgICAgaWYgKGIgJiYgYSkgYnJlYWs7CisgICAgfQorICB9CisKKyAgQE5vdE51bGwKKyAgc3RhdGljIE9iamVjdCBiYXIoKSB7CisgICAgcmV0dXJuIG5ldyBPYmplY3QoKTsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvZml4dHVyZS9Bbm5vdGF0ZWRUeXBlUGFyYW1ldGVycy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvZml4dHVyZS9Bbm5vdGF0ZWRUeXBlUGFyYW1ldGVycy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ5ODJiMGMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy9maXh0dXJlL0Fubm90YXRlZFR5cGVQYXJhbWV0ZXJzLmphdmEKQEAgLTAsMCArMSwzMiBAQAoraW1wb3J0IGZvby5Ob3ROdWxsOworaW1wb3J0IGZvby5OdWxsYWJsZTsKKworaW1wb3J0IGphdmEudXRpbC5MaXN0OworCitjbGFzcyBUZXN0IHsKKyAgcHJpdmF0ZSBzdGF0aWMgdm9pZCB0ZXN0KExpc3Q8QE5vdE51bGwgT2JqZWN0PiBsaXN0KSB7CisgICAgaWYgKDx3YXJuaW5nIGRlc2NyPSJDb25kaXRpb24gJ2xpc3QuZ2V0KDApID09IG51bGwnIGlzIGFsd2F5cyAnZmFsc2UnIj5saXN0LmdldCgwKSA9PSBudWxsPC93YXJuaW5nPikgeworICAgICAgcmV0dXJuOworICAgIH0KKyAgICBsaXN0LmFkZCg8d2FybmluZyBkZXNjcj0iUGFzc2luZyAnbnVsbCcgYXJndW1lbnQgdG8gcGFyYW1ldGVyIGFubm90YXRlZCBhcyBATm90TnVsbCI+bnVsbDwvd2FybmluZz4pOworICB9CisgIHByaXZhdGUgc3RhdGljIHZvaWQgdGVzdDIoTGlzdDxATnVsbGFibGUgT2JqZWN0PiBsaXN0KSB7CisgICAgaWYgKGxpc3QuZ2V0KDApID09IG51bGwpIHsKKyAgICAgIHJldHVybjsKKyAgICB9CisgICAgbGlzdC5hZGQobnVsbCk7CisgIH0KKworICBwcml2YXRlIHN0YXRpYyB2b2lkIHRlc3QzKFJlZjxATm90TnVsbCBPYmplY3Q+IHJlZikgeworICAgIGlmICg8d2FybmluZyBkZXNjcj0iQ29uZGl0aW9uICdyZWYudmFsdWUgPT0gbnVsbCcgaXMgYWx3YXlzICdmYWxzZSciPnJlZi52YWx1ZSA9PSBudWxsPC93YXJuaW5nPikgeworICAgICAgcmV0dXJuOworICAgIH0KKyAgICByZWYudmFsdWUgPSA8d2FybmluZyBkZXNjcj0iJ251bGwnIGlzIGFzc2lnbmVkIHRvIGEgdmFyaWFibGUgdGhhdCBpcyBhbm5vdGF0ZWQgd2l0aCBATm90TnVsbCI+bnVsbDwvd2FybmluZz47CisgIH0KKworCit9CisKK2NsYXNzIFJlZjxUPiB7CisgIFQgdmFsdWU7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvZml4dHVyZS9Bc3NlcnRGYWlsSW5DYXRjaC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvZml4dHVyZS9Bc3NlcnRGYWlsSW5DYXRjaC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkzZmNmNmQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy9maXh0dXJlL0Fzc2VydEZhaWxJbkNhdGNoLmphdmEKQEAgLTAsMCArMSwyNCBAQAoraW1wb3J0IG9yZy5qZXRicmFpbnMuYW5ub3RhdGlvbnMuTm90TnVsbDsKK2ltcG9ydCBvcmcuanVuaXQuQXNzZXJ0OworCitjbGFzcyBUZXN0IHsKKworICBwdWJsaWMgc3RhdGljIHZvaWQgZm9vKCkgeworICAgIFN0cmluZyByZXN1bHQgPSBudWxsOworICAgIHRyeSB7CisgICAgICByZXN1bHQgPSBjcmVhdGVTdHJpbmcoKTsKKyAgICB9CisgICAgY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CisgICAgICBBc3NlcnQuZmFpbCgpOworICAgIH0KKyAgICBmaW5hbGx5IHsKKyAgICAgIGlmIChyZXN1bHQgPT0gbnVsbCkgeworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIkFuYWx5c2lzIGZhaWxlZCEiKTsKKyAgICAgIH0KKyAgICB9CisgIH0KKworICBwcml2YXRlIHN0YXRpYyBATm90TnVsbCBTdHJpbmcgY3JlYXRlU3RyaW5nKCkgeworICAgIHRocm93IG5ldyBOdWxsUG9pbnRlckV4Y2VwdGlvbigpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvZml4dHVyZS9Bc3NpZ25pbmdDbGFzc0xpdGVyYWxUb051bGxhYmxlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy9maXh0dXJlL0Fzc2lnbmluZ0NsYXNzTGl0ZXJhbFRvTnVsbGFibGUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNGU0NGVhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvZml4dHVyZS9Bc3NpZ25pbmdDbGFzc0xpdGVyYWxUb051bGxhYmxlLmphdmEKQEAgLTAsMCArMSwxNCBAQAoraW1wb3J0IG9yZy5qZXRicmFpbnMuYW5ub3RhdGlvbnMuTm90TnVsbDsKK2ltcG9ydCBvcmcuamV0YnJhaW5zLmFubm90YXRpb25zLk51bGxhYmxlOworCitwdWJsaWMgY2xhc3MgQnJva2VuQWxpZ25tZW50IHsKKworICBwdWJsaWMgdm9pZCBtYWluKFN0cmluZy4uLiBhcmdzKSB7CisgICAgQE51bGxhYmxlIENsYXNzIG9iamVjdCA9IE9iamVjdC5jbGFzczsKKyAgICBvdXRwdXQyKG9iamVjdCk7CisgIH0KKworICBwdWJsaWMgc3RhdGljIHZvaWQgb3V0cHV0MihATm90TnVsbCBPYmplY3QgdmFsdWUpIHsKKyAgICBTeXN0ZW0ub3V0LnByaW50bG4odmFsdWUpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvZml4dHVyZS9Bc3NpZ25pbmdVbmtub3duVG9OdWxsYWJsZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvZml4dHVyZS9Bc3NpZ25pbmdVbmtub3duVG9OdWxsYWJsZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI4ZDFhMWUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy9maXh0dXJlL0Fzc2lnbmluZ1Vua25vd25Ub051bGxhYmxlLmphdmEKQEAgLTAsMCArMSwxMiBAQAoraW1wb3J0IG9yZy5qZXRicmFpbnMuYW5ub3RhdGlvbnMuTnVsbGFibGU7CisKK3B1YmxpYyBjbGFzcyBCcm9rZW5BbGlnbm1lbnQgeworCisgIFN0cmluZyB1bmtub3duKFN0cmluZyBzKSB7IHJldHVybiBzOyB9CisKKyAgcHVibGljIHZvaWQgZXhhbXBsZShATnVsbGFibGUgU3RyaW5nIHZhbHVlKSB7CisgICAgdmFsdWUgPSB1bmtub3duKDx3YXJuaW5nIGRlc2NyPSJBcmd1bWVudCAndmFsdWUnIG1pZ2h0IGJlIG51bGwgYnV0IHBhc3NlZCB0byBub24gYW5ub3RhdGVkIHBhcmFtZXRlciI+dmFsdWU8L3dhcm5pbmc+KTsKKyAgICBpZiAodmFsdWUuY29udGFpbnMoIiUiKSkgeworICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RhdGFGbG93L2ZpeHR1cmUvQmlnTWV0aG9kTm90Q29tcGxleC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvZml4dHVyZS9CaWdNZXRob2ROb3RDb21wbGV4LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGExZmY0NAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RhdGFGbG93L2ZpeHR1cmUvQmlnTWV0aG9kTm90Q29tcGxleC5qYXZhCkBAIC0wLDAgKzEsNTYgQEAKK3B1YmxpYyBhYnN0cmFjdCBjbGFzcyBEREQgeworICBhYnN0cmFjdCBib29sZWFuIGNvbmRpdGlvbigpOworICBhYnN0cmFjdCBPYmplY3QgZm9vKCk7CisgIGFic3RyYWN0IE9iamVjdCBiYXIoKTsKKworICB2b2lkIHRlc3QoT2JqZWN0IG8sIERERCBhbm90aGVyKSB7CisgICAgdHJ5IHsKKyAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihjb25kaXRpb24oKSAmJiBlcXVhbHMobykgPyBhbm90aGVyLmZvbygpIDogYW5vdGhlci5iYXIoKSk7CisgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oY29uZGl0aW9uKCkgJiYgZXF1YWxzKG8pID8gYW5vdGhlci5mb28oKSA6IGFub3RoZXIuYmFyKCkpOworICAgICAgU3lzdGVtLm91dC5wcmludGxuKGNvbmRpdGlvbigpICYmIGVxdWFscyhvKSA/IGFub3RoZXIuZm9vKCkgOiBhbm90aGVyLmJhcigpKTsKKyAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihjb25kaXRpb24oKSAmJiBlcXVhbHMobykgPyBhbm90aGVyLmZvbygpIDogYW5vdGhlci5iYXIoKSk7CisgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oY29uZGl0aW9uKCkgJiYgZXF1YWxzKG8pID8gYW5vdGhlci5mb28oKSA6IGFub3RoZXIuYmFyKCkpOworICAgICAgU3lzdGVtLm91dC5wcmludGxuKGNvbmRpdGlvbigpICYmIGVxdWFscyhvKSA/IGFub3RoZXIuZm9vKCkgOiBhbm90aGVyLmJhcigpKTsKKyAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihjb25kaXRpb24oKSAmJiBlcXVhbHMobykgPyBhbm90aGVyLmZvbygpIDogYW5vdGhlci5iYXIoKSk7CisgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oY29uZGl0aW9uKCkgJiYgZXF1YWxzKG8pID8gYW5vdGhlci5mb28oKSA6IGFub3RoZXIuYmFyKCkpOworICAgICAgU3lzdGVtLm91dC5wcmludGxuKGNvbmRpdGlvbigpICYmIGVxdWFscyhvKSA/IGFub3RoZXIuZm9vKCkgOiBhbm90aGVyLmJhcigpKTsKKyAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihjb25kaXRpb24oKSAmJiBlcXVhbHMobykgPyBhbm90aGVyLmZvbygpIDogYW5vdGhlci5iYXIoKSk7CisgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oY29uZGl0aW9uKCkgJiYgZXF1YWxzKG8pID8gYW5vdGhlci5mb28oKSA6IGFub3RoZXIuYmFyKCkpOworICAgICAgU3lzdGVtLm91dC5wcmludGxuKGNvbmRpdGlvbigpICYmIGVxdWFscyhvKSA/IGFub3RoZXIuZm9vKCkgOiBhbm90aGVyLmJhcigpKTsKKyAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihjb25kaXRpb24oKSAmJiBlcXVhbHMobykgPyBhbm90aGVyLmZvbygpIDogYW5vdGhlci5iYXIoKSk7CisgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oY29uZGl0aW9uKCkgJiYgZXF1YWxzKG8pID8gYW5vdGhlci5mb28oKSA6IGFub3RoZXIuYmFyKCkpOworICAgICAgU3lzdGVtLm91dC5wcmludGxuKGNvbmRpdGlvbigpICYmIGVxdWFscyhvKSA/IGFub3RoZXIuZm9vKCkgOiBhbm90aGVyLmJhcigpKTsKKyAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihjb25kaXRpb24oKSAmJiBlcXVhbHMobykgPyBhbm90aGVyLmZvbygpIDogYW5vdGhlci5iYXIoKSk7CisgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oY29uZGl0aW9uKCkgJiYgZXF1YWxzKG8pID8gYW5vdGhlci5mb28oKSA6IGFub3RoZXIuYmFyKCkpOworICAgICAgU3lzdGVtLm91dC5wcmludGxuKGNvbmRpdGlvbigpICYmIGVxdWFscyhvKSA/IGFub3RoZXIuZm9vKCkgOiBhbm90aGVyLmJhcigpKTsKKyAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihjb25kaXRpb24oKSAmJiBlcXVhbHMobykgPyBhbm90aGVyLmZvbygpIDogYW5vdGhlci5iYXIoKSk7CisgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oY29uZGl0aW9uKCkgJiYgZXF1YWxzKG8pID8gYW5vdGhlci5mb28oKSA6IGFub3RoZXIuYmFyKCkpOworICAgICAgU3lzdGVtLm91dC5wcmludGxuKGNvbmRpdGlvbigpICYmIGVxdWFscyhvKSA/IGFub3RoZXIuZm9vKCkgOiBhbm90aGVyLmJhcigpKTsKKyAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihjb25kaXRpb24oKSAmJiBlcXVhbHMobykgPyBhbm90aGVyLmZvbygpIDogYW5vdGhlci5iYXIoKSk7CisgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oY29uZGl0aW9uKCkgJiYgZXF1YWxzKG8pID8gYW5vdGhlci5mb28oKSA6IGFub3RoZXIuYmFyKCkpOworICAgICAgU3lzdGVtLm91dC5wcmludGxuKGNvbmRpdGlvbigpICYmIGVxdWFscyhvKSA/IGFub3RoZXIuZm9vKCkgOiBhbm90aGVyLmJhcigpKTsKKyAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihjb25kaXRpb24oKSAmJiBlcXVhbHMobykgPyBhbm90aGVyLmZvbygpIDogYW5vdGhlci5iYXIoKSk7CisgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oY29uZGl0aW9uKCkgJiYgZXF1YWxzKG8pID8gYW5vdGhlci5mb28oKSA6IGFub3RoZXIuYmFyKCkpOworICAgICAgU3lzdGVtLm91dC5wcmludGxuKGNvbmRpdGlvbigpICYmIGVxdWFscyhvKSA/IGFub3RoZXIuZm9vKCkgOiBhbm90aGVyLmJhcigpKTsKKyAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihjb25kaXRpb24oKSAmJiBlcXVhbHMobykgPyBhbm90aGVyLmZvbygpIDogYW5vdGhlci5iYXIoKSk7CisgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oY29uZGl0aW9uKCkgJiYgZXF1YWxzKG8pID8gYW5vdGhlci5mb28oKSA6IGFub3RoZXIuYmFyKCkpOworICAgICAgU3lzdGVtLm91dC5wcmludGxuKGNvbmRpdGlvbigpICYmIGVxdWFscyhvKSA/IGFub3RoZXIuZm9vKCkgOiBhbm90aGVyLmJhcigpKTsKKyAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihjb25kaXRpb24oKSAmJiBlcXVhbHMobykgPyBhbm90aGVyLmZvbygpIDogYW5vdGhlci5iYXIoKSk7CisgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oY29uZGl0aW9uKCkgJiYgZXF1YWxzKG8pID8gYW5vdGhlci5mb28oKSA6IGFub3RoZXIuYmFyKCkpOworICAgICAgU3lzdGVtLm91dC5wcmludGxuKGNvbmRpdGlvbigpICYmIGVxdWFscyhvKSA/IGFub3RoZXIuZm9vKCkgOiBhbm90aGVyLmJhcigpKTsKKyAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihjb25kaXRpb24oKSAmJiBlcXVhbHMobykgPyBhbm90aGVyLmZvbygpIDogYW5vdGhlci5iYXIoKSk7CisgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oY29uZGl0aW9uKCkgJiYgZXF1YWxzKG8pID8gYW5vdGhlci5mb28oKSA6IGFub3RoZXIuYmFyKCkpOworICAgICAgU3lzdGVtLm91dC5wcmludGxuKGNvbmRpdGlvbigpICYmIGVxdWFscyhvKSA/IGFub3RoZXIuZm9vKCkgOiBhbm90aGVyLmJhcigpKTsKKyAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihjb25kaXRpb24oKSAmJiBlcXVhbHMobykgPyBhbm90aGVyLmZvbygpIDogYW5vdGhlci5iYXIoKSk7CisgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oY29uZGl0aW9uKCkgJiYgZXF1YWxzKG8pID8gYW5vdGhlci5mb28oKSA6IGFub3RoZXIuYmFyKCkpOworICAgICAgU3lzdGVtLm91dC5wcmludGxuKGNvbmRpdGlvbigpICYmIGVxdWFscyhvKSA/IGFub3RoZXIuZm9vKCkgOiBhbm90aGVyLmJhcigpKTsKKyAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihjb25kaXRpb24oKSAmJiBlcXVhbHMobykgPyBhbm90aGVyLmZvbygpIDogYW5vdGhlci5iYXIoKSk7CisgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oY29uZGl0aW9uKCkgJiYgZXF1YWxzKG8pID8gYW5vdGhlci5mb28oKSA6IGFub3RoZXIuYmFyKCkpOworICAgICAgU3lzdGVtLm91dC5wcmludGxuKGNvbmRpdGlvbigpICYmIGVxdWFscyhvKSA/IGFub3RoZXIuZm9vKCkgOiBhbm90aGVyLmJhcigpKTsKKyAgICB9CisgICAgY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CisgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oZSk7CisgICAgfQorICB9CisKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RhdGFGbG93L2ZpeHR1cmUvQm94aW5nMTI4LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy9maXh0dXJlL0JveGluZzEyOC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFiZGQ1YTQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy9maXh0dXJlL0JveGluZzEyOC5qYXZhCkBAIC0wLDAgKzEsMTEgQEAKK2NsYXNzIEZvbyB7CisgIHB1YmxpYyB2b2lkIGZvbygpIHsKKyAgICBJbnRlZ2VyIGEgPSAxMjg7CisgICAgSW50ZWdlciBiID0gKGludCkgYTsvLyBjYXN0IGlzIG5lY2Vzc2FyeSBiZWNhdXNlIG5ldyBvYmplY3QgaXMgY3JlYXRlZAorICAgIEludGVnZXIgYyA9IDEyODsKKworICAgIFN5c3RlbS5vdXQucHJpbnRsbihhID09IGIpOworICAgIFN5c3RlbS5vdXQucHJpbnRsbig8d2FybmluZyBkZXNjcj0iQ29uZGl0aW9uICdhID09IGMnIGlzIGFsd2F5cyAnZmFsc2UnIj5hID09IGM8L3dhcm5pbmc+KTsKKyAgfQorCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvZml4dHVyZS9CdWlsZFJlZ2V4cE5vdENvbXBsZXguamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RhdGFGbG93L2ZpeHR1cmUvQnVpbGRSZWdleHBOb3RDb21wbGV4LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjY1NWRlYQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RhdGFGbG93L2ZpeHR1cmUvQnVpbGRSZWdleHBOb3RDb21wbGV4LmphdmEKQEAgLTAsMCArMSwxNiBAQAorY2xhc3MgWCAgeworCisgIHB1YmxpYyBzdGF0aWMgdm9pZCBidWlsZFJlZ2V4cChTdHJpbmcgcGF0dGVybiwgaW50IGV4YWN0UHJlZml4TGVuLCBib29sZWFuIGZvckNvbXBsZXRpb24pIHsKKyAgICBTeXN0ZW0ub3V0LnByaW50bG4oIWZvckNvbXBsZXRpb24gJiYgcGF0dGVybi5lbmRzV2l0aCgiICIpKTsKKyAgICBTeXN0ZW0ub3V0LnByaW50bG4oZXhhY3RQcmVmaXhMZW4gPT0gMCk7CisgICAgYm9vbGVhbiBwcmV2SXNVcHBlcmNhc2UgPSBmYWxzZTsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IHBhdHRlcm4ubGVuZ3RoKCk7IGkrKykgeworICAgICAgZmluYWwgY2hhciBjID0gcGF0dGVybi5jaGFyQXQoaSk7CisgICAgICBpZiAoYyA9PSAnKicpIHsgfQorICAgICAgZWxzZSBpZiAoYyA9PSAnICcpIHsgfQorICAgICAgZWxzZSBpZiAoYyA9PSAnOicgfHwgcHJldklzVXBwZXJjYXNlKSB7IH0KKyAgICB9CisKKyAgfQorCit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy9maXh0dXJlL0NhbkJlTnVsbERvZXNudEltcGx5SXNOdWxsLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy9maXh0dXJlL0NhbkJlTnVsbERvZXNudEltcGx5SXNOdWxsLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTZmNTc3MQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RhdGFGbG93L2ZpeHR1cmUvQ2FuQmVOdWxsRG9lc250SW1wbHlJc051bGwuamF2YQpAQCAtMCwwICsxLDE0IEBACitpbXBvcnQgb3JnLmpldGJyYWlucy5hbm5vdGF0aW9ucy5OdWxsYWJsZTsKKworcHVibGljIGNsYXNzIERERCB7CisgIGludCB0ZXN0KGJvb2xlYW4gdCkgeworICAgIGlmICh0ICYmIDx3YXJuaW5nIGRlc2NyPSJEZXJlZmVyZW5jZSBvZiAnZmZmKCknIG1heSBwcm9kdWNlICdqYXZhLmxhbmcuTnVsbFBvaW50ZXJFeGNlcHRpb24nIj5mZmYoKTwvd2FybmluZz4ubGVuZ3RoID09IDEpIHsKKyAgICAgIHJldHVybiAwOworICAgIH0KKyAgICByZXR1cm4gMTsKKyAgfQorCisgIHB1YmxpYyBATnVsbGFibGUgREREW10gZmZmKCkgeworICAgIHJldHVybiBuZXcgREREWzhdOworICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy9maXh0dXJlL0NhdGNoUnVudGltZUV4Y2VwdGlvbi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvZml4dHVyZS9DYXRjaFJ1bnRpbWVFeGNlcHRpb24uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xOTNiM2JjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvZml4dHVyZS9DYXRjaFJ1bnRpbWVFeGNlcHRpb24uamF2YQpAQCAtMCwwICsxLDQ4IEBACitpbXBvcnQgb3JnLmpldGJyYWlucy5hbm5vdGF0aW9ucy5Ob3ROdWxsOworCitwdWJsaWMgY2xhc3MgQnJva2VuQWxpZ25tZW50IHsKKworICBATm90TnVsbAorICBPYmplY3QgdGVzdDEoKSB7CisgICAgdHJ5IHsKKyAgICAgIGJhcig8d2FybmluZyBkZXNjcj0iUGFzc2luZyAnbnVsbCcgYXJndW1lbnQgdG8gcGFyYW1ldGVyIGFubm90YXRlZCBhcyBATm90TnVsbCI+bnVsbDwvd2FybmluZz4pOworICAgICAgcmV0dXJuIDx3YXJuaW5nIGRlc2NyPSInbnVsbCcgaXMgcmV0dXJuZWQgYnkgdGhlIG1ldGhvZCBkZWNsYXJlZCBhcyBATm90TnVsbCI+bnVsbDwvd2FybmluZz47CisgICAgfQorICAgIGNhdGNoIChSdW50aW1lRXhjZXB0aW9uIGUpIHsKKyAgICAgIHJldHVybiA8d2FybmluZyBkZXNjcj0iJ251bGwnIGlzIHJldHVybmVkIGJ5IHRoZSBtZXRob2QgZGVjbGFyZWQgYXMgQE5vdE51bGwiPm51bGw8L3dhcm5pbmc+OworICAgIH0KKyAgfQorCisgIEBOb3ROdWxsCisgIE9iamVjdCB0ZXN0MigpIHsKKyAgICB0cnkgeworICAgICAgYmFyKDx3YXJuaW5nIGRlc2NyPSJQYXNzaW5nICdudWxsJyBhcmd1bWVudCB0byBwYXJhbWV0ZXIgYW5ub3RhdGVkIGFzIEBOb3ROdWxsIj5udWxsPC93YXJuaW5nPik7CisgICAgICByZXR1cm4gPHdhcm5pbmcgZGVzY3I9IidudWxsJyBpcyByZXR1cm5lZCBieSB0aGUgbWV0aG9kIGRlY2xhcmVkIGFzIEBOb3ROdWxsIj5udWxsPC93YXJuaW5nPjsKKyAgICB9CisgICAgY2F0Y2ggKElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiB8IElsbGVnYWxTdGF0ZUV4Y2VwdGlvbiBlKSB7CisgICAgICByZXR1cm4gPHdhcm5pbmcgZGVzY3I9IidudWxsJyBpcyByZXR1cm5lZCBieSB0aGUgbWV0aG9kIGRlY2xhcmVkIGFzIEBOb3ROdWxsIj5udWxsPC93YXJuaW5nPjsKKyAgICB9CisgIH0KKworICBATm90TnVsbAorICBPYmplY3QgdGVzdDMoKSB7CisgICAgdHJ5IHsKKyAgICAgIGJhcig8d2FybmluZyBkZXNjcj0iUGFzc2luZyAnbnVsbCcgYXJndW1lbnQgdG8gcGFyYW1ldGVyIGFubm90YXRlZCBhcyBATm90TnVsbCI+bnVsbDwvd2FybmluZz4pOworICAgICAgcmV0dXJuIDx3YXJuaW5nIGRlc2NyPSInbnVsbCcgaXMgcmV0dXJuZWQgYnkgdGhlIG1ldGhvZCBkZWNsYXJlZCBhcyBATm90TnVsbCI+bnVsbDwvd2FybmluZz47CisgICAgfQorICAgIGNhdGNoIChBc3NlcnRpb25FcnJvciB8IElsbGVnYWxTdGF0ZUV4Y2VwdGlvbiBlKSB7CisgICAgICByZXR1cm4gPHdhcm5pbmcgZGVzY3I9IidudWxsJyBpcyByZXR1cm5lZCBieSB0aGUgbWV0aG9kIGRlY2xhcmVkIGFzIEBOb3ROdWxsIj5udWxsPC93YXJuaW5nPjsKKyAgICB9CisgIH0KKworICBwdWJsaWMgdm9pZCBiYXIoQE5vdE51bGwgT2JqZWN0IGZvbykgeworICAgIGFzc2VydCA8d2FybmluZyBkZXNjcj0iQ29uZGl0aW9uICdmb28gIT0gbnVsbCcgaXMgYWx3YXlzICd0cnVlJyI+Zm9vICE9IG51bGw8L3dhcm5pbmc+OworICB9CisKKyAgcHVibGljIHZvaWQgYmFyMihATm90TnVsbCBPYmplY3QgZm9vKSB7CisgICAgYXNzZXJ0IDx3YXJuaW5nIGRlc2NyPSJDb25kaXRpb24gJ2ZvbyAhPSBudWxsJyBpcyBhbHdheXMgJ3RydWUnIj5mb28gIT0gbnVsbDwvd2FybmluZz47CisgICAgdHJ5IHsgfQorICAgIGNhdGNoIChqYXZhLmxhbmcuUnVudGltZUV4Y2VwdGlvbiBleCkgeyB9CisgIH0KKworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RhdGFGbG93L2ZpeHR1cmUvQ2hhaW5lZEZpbmFsRmllbGRBY2Nlc3NvcnNEZmEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RhdGFGbG93L2ZpeHR1cmUvQ2hhaW5lZEZpbmFsRmllbGRBY2Nlc3NvcnNEZmEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44Y2Y4YmJkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvZml4dHVyZS9DaGFpbmVkRmluYWxGaWVsZEFjY2Vzc29yc0RmYS5qYXZhCkBAIC0wLDAgKzEsODQgQEAKK2ltcG9ydCBvcmcuamV0YnJhaW5zLmFubm90YXRpb25zLk51bGxhYmxlOworCitpbXBvcnQgamF2YS5sYW5nLlN0cmluZzsKKworcHVibGljIGNsYXNzIEJyb2tlbkFsaWdubWVudCB7CisKKyAgdm9pZCBtYWluKERhdGEgZGF0YSkgeworICAgIGlmIChkYXRhLmdldFRleHQoKSAhPSBudWxsKSB7CisgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oZGF0YS5nZXRUZXh0KCkuaGFzaENvZGUoKSk7CisgICAgfQorCisgICAgZGF0YSA9IG5ldyBEYXRhKG51bGwsIDx3YXJuaW5nIGRlc2NyPSJQYXNzaW5nICdudWxsJyBhcmd1bWVudCB0byBub24gYW5ub3RhdGVkIHBhcmFtZXRlciI+bnVsbDwvd2FybmluZz4pOworICAgIFN5c3RlbS5vdXQucHJpbnRsbig8d2FybmluZyBkZXNjcj0iTWV0aG9kIGludm9jYXRpb24gJ2RhdGEuZ2V0VGV4dCgpLmhhc2hDb2RlKCknIG1heSBwcm9kdWNlICdqYXZhLmxhbmcuTnVsbFBvaW50ZXJFeGNlcHRpb24nIj5kYXRhLmdldFRleHQoKS5oYXNoQ29kZSgpPC93YXJuaW5nPik7CisKKyAgICBpZiAoZGF0YS5pbm5lcigpICE9IG51bGwpIHsKKyAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihkYXRhLmlubmVyKCkuaGFzaENvZGUoKSk7CisgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oPHdhcm5pbmcgZGVzY3I9Ik1ldGhvZCBpbnZvY2F0aW9uICdkYXRhLmlubmVyKCkuZ2V0VGV4dCgpLmhhc2hDb2RlKCknIG1heSBwcm9kdWNlICdqYXZhLmxhbmcuTnVsbFBvaW50ZXJFeGNlcHRpb24nIj5kYXRhLmlubmVyKCkuZ2V0VGV4dCgpLmhhc2hDb2RlKCk8L3dhcm5pbmc+KTsKKyAgICAgIGlmIChkYXRhLmlubmVyKCkgIT0gbnVsbCkgeworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oZGF0YS5pbm5lcigpLmhhc2hDb2RlKCkpOworICAgICAgfQorCisgICAgICBkYXRhID0gbmV3IERhdGEobnVsbCwgPHdhcm5pbmcgZGVzY3I9IlBhc3NpbmcgJ251bGwnIGFyZ3VtZW50IHRvIG5vbiBhbm5vdGF0ZWQgcGFyYW1ldGVyIj5udWxsPC93YXJuaW5nPik7CisgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oPHdhcm5pbmcgZGVzY3I9Ik1ldGhvZCBpbnZvY2F0aW9uICdkYXRhLmlubmVyKCkuaGFzaENvZGUoKScgbWF5IHByb2R1Y2UgJ2phdmEubGFuZy5OdWxsUG9pbnRlckV4Y2VwdGlvbiciPmRhdGEuaW5uZXIoKS5oYXNoQ29kZSgpPC93YXJuaW5nPik7CisgICAgfQorICB9CisKKyAgdm9pZCBtYWluMihEYXRhIGRhdGEpIHsKKyAgICBpZiAoZGF0YS5pbm5lcigpICE9IG51bGwgJiYgZGF0YS5pbm5lcigpLmdldFRleHQoKSAhPSBudWxsKSB7CisgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oZGF0YS5pbm5lcigpLmhhc2hDb2RlKCkpOworICAgICAgU3lzdGVtLm91dC5wcmludGxuKGRhdGEuaW5uZXIoKS5nZXRUZXh0KCkuaGFzaENvZGUoKSk7CisgICAgfQorICB9CisKKyAgdm9pZCBtYWluMyhEYXRhIGRhdGEpIHsKKyAgICBpZiAoZGF0YS5pbm5lck92ZXJyaWRkZW4oKSAhPSBudWxsKSB7CisgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oZGF0YS5pbm5lck92ZXJyaWRkZW4oKS5oYXNoQ29kZSgpKTsKKyAgICB9CisgICAgaWYgKGRhdGEuc29tZXRoaW5nKCkgIT0gbnVsbCkgeworICAgICAgU3lzdGVtLm91dC5wcmludGxuKDx3YXJuaW5nIGRlc2NyPSJNZXRob2QgaW52b2NhdGlvbiAnZGF0YS5zb21ldGhpbmcoKS5oYXNoQ29kZSgpJyBtYXkgcHJvZHVjZSAnamF2YS5sYW5nLk51bGxQb2ludGVyRXhjZXB0aW9uJyI+ZGF0YS5zb21ldGhpbmcoKS5oYXNoQ29kZSgpPC93YXJuaW5nPik7CisgICAgfQorICB9CisKKyAgcHJpdmF0ZSBzdGF0aWMgY2xhc3MgRGF0YSB7CisgICAgQE51bGxhYmxlIGZpbmFsIFN0cmluZyB0ZXh0OworICAgIEBOdWxsYWJsZSBmaW5hbCBEYXRhIGlubmVyOworCisgICAgRGF0YShATnVsbGFibGUgU3RyaW5nIHRleHQsIERhdGEgaW5uZXIpIHsKKyAgICAgIHRoaXMudGV4dCA9IHRleHQ7CisgICAgICB0aGlzLmlubmVyID0gaW5uZXI7CisgICAgfQorCisgICAgQE51bGxhYmxlCisgICAgcHVibGljIFN0cmluZyBnZXRUZXh0KCkgeworICAgICAgcmV0dXJuIHRleHQ7CisgICAgfQorCisgICAgQE51bGxhYmxlCisgICAgcHVibGljIERhdGEgaW5uZXIoKSB7CisgICAgICByZXR1cm4gaW5uZXI7CisgICAgfQorCisgICAgQE51bGxhYmxlCisgICAgcHVibGljIERhdGEgaW5uZXJPdmVycmlkZGVuKCkgeworICAgICAgcmV0dXJuIGlubmVyOworICAgIH0KKworICAgIEBOdWxsYWJsZQorICAgIHB1YmxpYyBTdHJpbmcgc29tZXRoaW5nKCkgeworICAgICAgcmV0dXJuIG5ldyBTdHJpbmcoKTsKKyAgICB9CisgIH0KKworICBjbGFzcyBEYXRhSW1wbCBleHRlbmRzIERhdGEgeworICAgIERhdGFJbXBsKEBOdWxsYWJsZSBTdHJpbmcgdGV4dCwgRGF0YSBpbm5lcikgeworICAgICAgc3VwZXIodGV4dCwgaW5uZXIpOworICAgIH0KKworICAgIEBOdWxsYWJsZQorICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyBEYXRhIGlubmVyT3ZlcnJpZGRlbigpIHsKKyAgICAgIHJldHVybiBzdXBlci5pbm5lck92ZXJyaWRkZW4oKTsKKyAgICB9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy9maXh0dXJlL0NoYWluZWRGaW5hbEZpZWxkc0RmYS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvZml4dHVyZS9DaGFpbmVkRmluYWxGaWVsZHNEZmEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMDk2ZDgyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvZml4dHVyZS9DaGFpbmVkRmluYWxGaWVsZHNEZmEuamF2YQpAQCAtMCwwICsxLDQwIEBACitpbXBvcnQgb3JnLmpldGJyYWlucy5hbm5vdGF0aW9ucy5OdWxsYWJsZTsKK3B1YmxpYyBjbGFzcyBCcm9rZW5BbGlnbm1lbnQgeworCisgIHZvaWQgbWFpbihEYXRhIGRhdGEpIHsKKyAgICBpZiAoZGF0YS50ZXh0ICE9IG51bGwpIHsKKyAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihkYXRhLnRleHQuaGFzaENvZGUoKSk7CisgICAgfQorCisgICAgZGF0YSA9IG5ldyBEYXRhKG51bGwsIDx3YXJuaW5nIGRlc2NyPSJQYXNzaW5nICdudWxsJyBhcmd1bWVudCB0byBub24gYW5ub3RhdGVkIHBhcmFtZXRlciI+bnVsbDwvd2FybmluZz4pOworICAgIFN5c3RlbS5vdXQucHJpbnRsbig8d2FybmluZyBkZXNjcj0iTWV0aG9kIGludm9jYXRpb24gJ2RhdGEudGV4dC5oYXNoQ29kZSgpJyBtYXkgcHJvZHVjZSAnamF2YS5sYW5nLk51bGxQb2ludGVyRXhjZXB0aW9uJyI+ZGF0YS50ZXh0Lmhhc2hDb2RlKCk8L3dhcm5pbmc+KTsKKworICAgIGlmIChkYXRhLmlubmVyICE9IG51bGwpIHsKKyAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihkYXRhLmlubmVyLmhhc2hDb2RlKCkpOworICAgICAgU3lzdGVtLm91dC5wcmludGxuKDx3YXJuaW5nIGRlc2NyPSJNZXRob2QgaW52b2NhdGlvbiAnZGF0YS5pbm5lci50ZXh0Lmhhc2hDb2RlKCknIG1heSBwcm9kdWNlICdqYXZhLmxhbmcuTnVsbFBvaW50ZXJFeGNlcHRpb24nIj5kYXRhLmlubmVyLnRleHQuaGFzaENvZGUoKTwvd2FybmluZz4pOworICAgICAgaWYgKDx3YXJuaW5nIGRlc2NyPSJDb25kaXRpb24gJ2RhdGEuaW5uZXIgIT0gbnVsbCcgaXMgYWx3YXlzICd0cnVlJyI+ZGF0YS5pbm5lciAhPSBudWxsPC93YXJuaW5nPikgeworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oZGF0YS5pbm5lci5oYXNoQ29kZSgpKTsKKyAgICAgIH0KKworICAgICAgZGF0YSA9IG5ldyBEYXRhKG51bGwsIDx3YXJuaW5nIGRlc2NyPSJQYXNzaW5nICdudWxsJyBhcmd1bWVudCB0byBub24gYW5ub3RhdGVkIHBhcmFtZXRlciI+bnVsbDwvd2FybmluZz4pOworICAgICAgU3lzdGVtLm91dC5wcmludGxuKDx3YXJuaW5nIGRlc2NyPSJNZXRob2QgaW52b2NhdGlvbiAnZGF0YS5pbm5lci5oYXNoQ29kZSgpJyBtYXkgcHJvZHVjZSAnamF2YS5sYW5nLk51bGxQb2ludGVyRXhjZXB0aW9uJyI+ZGF0YS5pbm5lci5oYXNoQ29kZSgpPC93YXJuaW5nPik7CisgICAgfQorICB9CisKKyAgdm9pZCBtYWluMihEYXRhIGRhdGEpIHsKKyAgICBpZiAoZGF0YS5pbm5lciAhPSBudWxsICYmIGRhdGEuaW5uZXIudGV4dCAhPSBudWxsKSB7CisgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oZGF0YS5pbm5lci5oYXNoQ29kZSgpKTsKKyAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihkYXRhLmlubmVyLnRleHQuaGFzaENvZGUoKSk7CisgICAgfQorICB9CisKKyAgcHJpdmF0ZSBzdGF0aWMgY2xhc3MgRGF0YSB7CisgICAgQE51bGxhYmxlIHB1YmxpYyBmaW5hbCBTdHJpbmcgdGV4dDsKKyAgICBATnVsbGFibGUgcHVibGljIGZpbmFsIERhdGEgaW5uZXI7CisKKyAgICBEYXRhKEBOdWxsYWJsZSBTdHJpbmcgdGV4dCwgRGF0YSBpbm5lcikgeworICAgICAgdGhpcy50ZXh0ID0gdGV4dDsKKyAgICAgIHRoaXMuaW5uZXIgPSBpbm5lcjsKKyAgICB9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy9maXh0dXJlL0NoZWNrRmllbGRJbml0aWFsaXplcnMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RhdGFGbG93L2ZpeHR1cmUvQ2hlY2tGaWVsZEluaXRpYWxpemVycy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU2YTg3YWMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy9maXh0dXJlL0NoZWNrRmllbGRJbml0aWFsaXplcnMuamF2YQpAQCAtMCwwICsxLDEzIEBACitpbXBvcnQgb3JnLmpldGJyYWlucy5hbm5vdGF0aW9ucy5Ob3ROdWxsOworaW1wb3J0IG9yZy5qZXRicmFpbnMuYW5ub3RhdGlvbnMuTnVsbGFibGU7CisKKworY2xhc3MgRm9vIHsKKyAgQE51bGxhYmxlIHN0YXRpYyBPYmplY3QgZm9vKCkgeyByZXR1cm4gbnVsbDsgfQorICBzdGF0aWMgU3RyaW5nIGJhcihATm90TnVsbCBPYmplY3QgYXJnKSB7IHJldHVybiAiIjsgfQorfQorY2xhc3MgQmFyIHsKKyAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgcyA9IEZvby5iYXIoPHdhcm5pbmcgZGVzY3I9IkFyZ3VtZW50ICdGb28uZm9vKCknIG1pZ2h0IGJlIG51bGwiPkZvby5mb28oKTwvd2FybmluZz4pOworICBATm90TnVsbCBwdWJsaWMgc3RhdGljIE9iamVjdCBvID0gPHdhcm5pbmcgZGVzY3I9IkV4cHJlc3Npb24gJ0Zvby5mb28oKScgbWlnaHQgZXZhbHVhdGUgdG8gbnVsbCBidXQgaXMgYXNzaWduZWQgdG8gYSB2YXJpYWJsZSB0aGF0IGlzIGFubm90YXRlZCB3aXRoIEBOb3ROdWxsIj5Gb28uZm9vKCk8L3dhcm5pbmc+OworCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvZml4dHVyZS9Db21wYXJpbmdUb05vdE51bGxTaG91bGROb3RBZmZlY3ROdWxsaXR5LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy9maXh0dXJlL0NvbXBhcmluZ1RvTm90TnVsbFNob3VsZE5vdEFmZmVjdE51bGxpdHkuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNDRiNmY4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvZml4dHVyZS9Db21wYXJpbmdUb05vdE51bGxTaG91bGROb3RBZmZlY3ROdWxsaXR5LmphdmEKQEAgLTAsMCArMSwyNiBAQAoraW1wb3J0IG9yZy5qZXRicmFpbnMuYW5ub3RhdGlvbnMuTm90TnVsbDsKKworaW1wb3J0IGphdmEudXRpbC5Db2xsZWN0aW9uOworCitwdWJsaWMgY2xhc3MgQmFyMyB7CisKKyAgQE5vdE51bGwKKyAgT2JqZWN0IGdldE9iaigpIHsKKyAgICByZXR1cm4gbmV3IE9iamVjdCgpOworICB9CisKKyAgdm9pZCBmb28oQ29sbGVjdGlvbjxPYmplY3Q+IGNvbGxlY3Rpb24pIHsKKyAgICBpZiAoIWNvbGxlY3Rpb24uaXNFbXB0eSgpKSB7CisgICAgICBPYmplY3QgZmlyc3QgPSBjb2xsZWN0aW9uLml0ZXJhdG9yKCkubmV4dCgpOworICAgICAgaWYgKGZpcnN0ICE9IGdldE9iaigpIHx8IGNvbGxlY3Rpb24uc2l6ZSgpID4gMCkgeworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oZmlyc3QuaGFzaENvZGUoKSk7CisgICAgICB9CisgICAgICBpZiAoZmlyc3QgPT0gZ2V0T2JqKCkgfHwgY29sbGVjdGlvbi5zaXplKCkgPiAwKSB7CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihmaXJzdC5oYXNoQ29kZSgpKTsKKyAgICAgIH0KKyAgICAgIGlmIChmaXJzdCA9PSBudWxsKSB7CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbig8d2FybmluZyBkZXNjcj0iTWV0aG9kIGludm9jYXRpb24gJ2ZpcnN0Lmhhc2hDb2RlKCknIG1heSBwcm9kdWNlICdqYXZhLmxhbmcuTnVsbFBvaW50ZXJFeGNlcHRpb24nIj5maXJzdC5oYXNoQ29kZSgpPC93YXJuaW5nPik7CisgICAgICB9CisgICAgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvZml4dHVyZS9Db25zdGFudERvdWJsZUNvbXBhcmlzb25zLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy9maXh0dXJlL0NvbnN0YW50RG91YmxlQ29tcGFyaXNvbnMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMTI2YWMxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvZml4dHVyZS9Db25zdGFudERvdWJsZUNvbXBhcmlzb25zLmphdmEKQEAgLTAsMCArMSwxMSBAQAorY2xhc3MgRm9vIHsKKworICBwcml2YXRlIHZvaWQgZm9vKCkgeworICAgIGRvdWJsZSBkID0gRG91YmxlLk1JTl9WQUxVRTsKKyAgICB3aGlsZSAodHJ1ZSkgeworICAgICAgaWYgKGQgPT0gRG91YmxlLk1JTl9WQUxVRSkgeworICAgICAgICBkID0gMDsKKyAgICAgIH0KKyAgICB9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy9maXh0dXJlL0NvbnRpbnVlRmx1c2hlc0xvb3BWYXJpYWJsZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvZml4dHVyZS9Db250aW51ZUZsdXNoZXNMb29wVmFyaWFibGUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMzI4NTIxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvZml4dHVyZS9Db250aW51ZUZsdXNoZXNMb29wVmFyaWFibGUuamF2YQpAQCAtMCwwICsxLDI4IEBACitpbXBvcnQgb3JnLmpldGJyYWlucy5hbm5vdGF0aW9ucy5Ob3ROdWxsOworaW1wb3J0IG9yZy5qZXRicmFpbnMuYW5ub3RhdGlvbnMuTnVsbGFibGU7CisKK2ltcG9ydCBqYXZhLmlvLklPRXhjZXB0aW9uOworaW1wb3J0IGphdmEuaW8uSW5wdXRTdHJlYW07CitpbXBvcnQgamF2YS5zcWwuU1FMRXhjZXB0aW9uOworaW1wb3J0IGphdmEudXRpbC5NYXA7CisKK3B1YmxpYyBjbGFzcyBNYWluIHsKKyAgcHVibGljIHN0YXRpYyBTdHJpbmcgZXNjYXBlQW5kVW5lc2NhcGVTeW1ib2xzKFN0cmluZyBzLCBTdHJpbmdCdWlsZGVyIGJ1aWxkZXIpIHsKKyAgICBib29sZWFuIGVzY2FwZWQgPSBmYWxzZTsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IHMubGVuZ3RoKCk7IGkrKykgeworICAgICAgZmluYWwgY2hhciBjaCA9IHMuY2hhckF0KGkpOworICAgICAgaWYgKGVzY2FwZWQpIHsKKyAgICAgICAgaWYgKGNoPT0nbicpIGJ1aWxkZXIuYXBwZW5kKCdcbicpOworICAgICAgICBpZiAoPHdhcm5pbmcgZGVzY3I9IkNvbmRpdGlvbiAnZXNjYXBlZCcgaXMgYWx3YXlzICd0cnVlJyI+ZXNjYXBlZDwvd2FybmluZz4pIGJyZWFrOworICAgICAgICBlc2NhcGVkID0gZmFsc2U7CisgICAgICAgIGNvbnRpbnVlOworICAgICAgfQorICAgICAgaWYgKGNoID09ICdcXCcpIHsKKyAgICAgICAgZXNjYXBlZCA9IHRydWU7CisgICAgICAgIGNvbnRpbnVlOworICAgICAgfQorICAgICAgYnVpbGRlci5hcHBlbmQoY2gpOworICAgIH0KKyAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvZml4dHVyZS9FcXVhbHNDb25zdGFudC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvZml4dHVyZS9FcXVhbHNDb25zdGFudC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ0ZDFhMTUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy9maXh0dXJlL0VxdWFsc0NvbnN0YW50LmphdmEKQEAgLTAsMCArMSwxMCBAQAoraW1wb3J0IG9yZy5qZXRicmFpbnMuYW5ub3RhdGlvbnMuKjsKK2NsYXNzIENsYXNzMSB7CisgIHB1YmxpYyB2b2lkIGYoQE51bGxhYmxlIE9iamVjdCBvKSB7CisgICAgbyA9IG8gIT0gbnVsbCA/IG8gOiBDbGFzczIuTzsKKyAgICBvLnRvU3RyaW5nKCk7CisgIH0KK30KK2NsYXNzIENsYXNzMiB7CisgIHN0YXRpYyBmaW5hbCBPYmplY3QgTyA9IG5ldyBPYmplY3QoKTsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy9maXh0dXJlL0VxdWFsc0VudW1Db25zdGFudC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvZml4dHVyZS9FcXVhbHNFbnVtQ29uc3RhbnQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMGU3YjU5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvZml4dHVyZS9FcXVhbHNFbnVtQ29uc3RhbnQuamF2YQpAQCAtMCwwICsxLDEzIEBACitpbXBvcnQgb3JnLmpldGJyYWlucy5hbm5vdGF0aW9ucy4qOworY2xhc3MgVGVzdElERUFXYXJuIHsKKyAgdm9pZCBtZXRob2QoQE51bGxhYmxlIE15RW51bSBlKSB7CisgICAgaWYgKGUgIT0gTXlFbnVtLmZvbykge3JldHVybjt9CisgICAgU3lzdGVtLm91dC5wcmludGxuKGUuaGFzaENvZGUoKSk7CisgIH0KKyAgdm9pZCBtZXRob2QyKEBOdWxsYWJsZSBNeUVudW0gZSkgeworICAgIGlmIChlID09IE15RW51bS5mb28pIHsKKyAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihlLmhhc2hDb2RlKCkpOworICAgIH0KKyAgfQorfQorZW51bSBNeUVudW0geyBmb28sIGJhciB9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvZml4dHVyZS9FcXVhbHNJbXBsaWVzTm90TnVsbC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvZml4dHVyZS9FcXVhbHNJbXBsaWVzTm90TnVsbC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQzMjc2NDQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy9maXh0dXJlL0VxdWFsc0ltcGxpZXNOb3ROdWxsLmphdmEKQEAgLTAsMCArMSwyNCBAQAoraW1wb3J0IG9yZy5qZXRicmFpbnMuYW5ub3RhdGlvbnMuTm90TnVsbDsKKworY2xhc3MgVGVzdCB7CisgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKKyAgICBPYmplY3QgZmlyc3QgPSBudWxsOworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgMTA7IGkrKykgeworICAgICAgaWYgKCEiYiIuZXF1YWxzKGZpcnN0KSkgeworICAgICAgICBmaXJzdCA9ICJiIjsKKyAgICAgIH0KKyAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihmaXJzdC50b1N0cmluZygpKTsKKyAgICB9CisgIH0KKworICBwdWJsaWMgdm9pZCBidWdneUluc3BlY3Rpb25FeGFtcGxlKE9iamVjdCBwYXJlbnROb2RlKSB7CisgICAgZmluYWwgU3RyaW5nIHBhcmVudE5hbWUgPSBwYXJlbnROb2RlID09IG51bGwgPyBudWxsIDogcGFyZW50Tm9kZS50b1N0cmluZygpOworICAgIGlmICgiVG9waWNzIi5lcXVhbHMocGFyZW50TmFtZSkpIHsKKyAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihwYXJlbnROb2RlLnRvU3RyaW5nKCkpOworICAgIH0gZWxzZSBpZiAoIlF1ZXVlcyIuZXF1YWxzKHBhcmVudE5hbWUpKSB7CisgICAgICBTeXN0ZW0ub3V0LnByaW50bG4ocGFyZW50Tm9kZS50b1N0cmluZygpKTsKKyAgICB9CisgICAgU3lzdGVtLm91dC5wcmludGxuKDx3YXJuaW5nIGRlc2NyPSJNZXRob2QgaW52b2NhdGlvbiAncGFyZW50Tm9kZS50b1N0cmluZygpJyBtYXkgcHJvZHVjZSAnamF2YS5sYW5nLk51bGxQb2ludGVyRXhjZXB0aW9uJyI+cGFyZW50Tm9kZS50b1N0cmluZygpPC93YXJuaW5nPik7CisgIH0KKworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RhdGFGbG93L2ZpeHR1cmUvRXF1YWxzTm90TnVsbC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvZml4dHVyZS9FcXVhbHNOb3ROdWxsLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDQ1OWM5MAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RhdGFGbG93L2ZpeHR1cmUvRXF1YWxzTm90TnVsbC5qYXZhCkBAIC0wLDAgKzEsNzcgQEAKK2ltcG9ydCBvcmcuamV0YnJhaW5zLmFubm90YXRpb25zLk5vdE51bGw7CitpbXBvcnQgb3JnLmpldGJyYWlucy5hbm5vdGF0aW9ucy5OdWxsYWJsZTsKKworcHVibGljIGNsYXNzIE1haW4geworICBATm90TnVsbAorICBwcml2YXRlIE9iamVjdCB0ZXN0MShATm90TnVsbCBPYmplY3QgZGVmVmFsLCBATnVsbGFibGUgZmluYWwgT2JqZWN0IHZhbCkgeworICAgIHJldHVybiBkZWZWYWw7CisgIH0KKyAgQE5vdE51bGwKKyAgcHJpdmF0ZSBPYmplY3QgdGVzdDExKEBOb3ROdWxsIE9iamVjdCBkZWZWYWwsIEBOdWxsYWJsZSBmaW5hbCBPYmplY3QgdmFsKSB7CisgICAgaWYgKHZhbCAhPSBudWxsKSB7CisgICAgICByZXR1cm4gdmFsOworICAgIH0KKyAgICByZXR1cm4gZGVmVmFsOworICB9CisgIEBOb3ROdWxsCisgIHByaXZhdGUgT2JqZWN0IHRlc3Q1KEBOb3ROdWxsIE9iamVjdCBkZWZWYWwsIEBOdWxsYWJsZSBmaW5hbCBPYmplY3QgdmFsKSB7CisgICAgaWYgKGRlZlZhbCA9PSB2YWwpIHsKKyAgICAgIHJldHVybiB2YWw7CisgICAgfQorICAgIHJldHVybiBkZWZWYWw7CisgIH0KKyAgQE5vdE51bGwKKyAgcHJpdmF0ZSBPYmplY3QgdGVzdDYoQE5vdE51bGwgT2JqZWN0IGRlZlZhbCwgQE51bGxhYmxlIGZpbmFsIE9iamVjdCB2YWwpIHsKKyAgICBpZiAodmFsID09IGRlZlZhbCkgeworICAgICAgcmV0dXJuIHZhbDsKKyAgICB9CisgICAgcmV0dXJuIGRlZlZhbDsKKyAgfQorICBATm90TnVsbAorICBwcml2YXRlIE9iamVjdCB0ZXN0NyhATm90TnVsbCBPYmplY3QgZGVmVmFsLCBATnVsbGFibGUgZmluYWwgT2JqZWN0IHZhbCkgeworICAgIGlmICg8d2FybmluZyBkZXNjcj0iTWV0aG9kIGludm9jYXRpb24gJ3ZhbC5lcXVhbHMoZGVmVmFsKScgbWF5IHByb2R1Y2UgJ2phdmEubGFuZy5OdWxsUG9pbnRlckV4Y2VwdGlvbiciPnZhbC5lcXVhbHMoZGVmVmFsKTwvd2FybmluZz4pIHsKKyAgICAgIHJldHVybiBkZWZWYWw7CisgICAgfQorICAgIHJldHVybiBkZWZWYWw7CisgIH0KKyAgQE5vdE51bGwKKyAgcHJpdmF0ZSBPYmplY3QgdGVzdDgoQE5vdE51bGwgT2JqZWN0IGRlZlZhbCwgQE51bGxhYmxlIGZpbmFsIE9iamVjdCB2YWwpIHsKKyAgICBpZiAoZGVmVmFsLmVxdWFscyh2YWwpKSB7CisgICAgICByZXR1cm4gdmFsOworICAgIH0KKyAgICByZXR1cm4gZGVmVmFsOworICB9CisgIEBOb3ROdWxsIHByaXZhdGUgT2JqZWN0IHRlc3Q5KEBOb3ROdWxsIE9iamVjdCBkZWZWYWwsIEBOdWxsYWJsZSBmaW5hbCBPYmplY3QgdmFsKSB7CisgICAgaWYgKGVxdWFscyh2YWwpKSB7CisgICAgICByZXR1cm4gdmFsOworICAgIH0KKyAgICByZXR1cm4gZGVmVmFsOworICB9CisgIEBOb3ROdWxsIHByaXZhdGUgT2JqZWN0IHRlc3QxMChATm90TnVsbCBPYmplY3QgZGVmVmFsLCBATnVsbGFibGUgZmluYWwgT2JqZWN0IHZhbCkgeworICAgIGlmICh2YWwgIT0gbnVsbCkgeworICAgICAgcmV0dXJuIHZhbDsKKyAgICB9CisgICAgaWYgKGRlZlZhbC5lcXVhbHModmFsKSkgeworICAgICAgcmV0dXJuIHZhbDsKKyAgICB9CisgICAgcmV0dXJuIGRlZlZhbDsKKyAgfQorCisgIEBOb3ROdWxsCisgIHByaXZhdGUgc3RhdGljIE9iamVjdCB0ZXN0KEBOb3ROdWxsIE9iamVjdCBkZWZWYWwsIEBOdWxsYWJsZSBmaW5hbCBPYmplY3QgdmFsKSB7CisgICAgaWYgKHZhbCAhPSBudWxsKSB7CisgICAgICByZXR1cm4gdmFsOworICAgIH0KKyAgICBpZiAoPHdhcm5pbmcgZGVzY3I9IkNvbmRpdGlvbiAnZGVmVmFsID09IHZhbCcgaXMgYWx3YXlzICdmYWxzZSciPmRlZlZhbCA9PSB2YWw8L3dhcm5pbmc+KSB7CisgICAgICByZXR1cm4gdmFsOworICAgIH0KKyAgICBpZiAoPHdhcm5pbmcgZGVzY3I9IkNvbmRpdGlvbiAndmFsID09IGRlZlZhbCcgaXMgYWx3YXlzICdmYWxzZSciPnZhbCA9PSBkZWZWYWw8L3dhcm5pbmc+KSB7CisgICAgICByZXR1cm4gdmFsOworICAgIH0KKyAgICBpZiAoZGVmVmFsLmVxdWFscyh2YWwpKSB7CisgICAgICByZXR1cm4gdmFsOworICAgIH0KKyAgICByZXR1cm4gZGVmVmFsOworICB9CisKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy9maXh0dXJlL0ZpZWxkQ2hhbmdlZEJldHdlZW5TeW5jaHJvbml6ZWRCbG9ja3MuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RhdGFGbG93L2ZpeHR1cmUvRmllbGRDaGFuZ2VkQmV0d2VlblN5bmNocm9uaXplZEJsb2Nrcy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQxMWUzYTAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy9maXh0dXJlL0ZpZWxkQ2hhbmdlZEJldHdlZW5TeW5jaHJvbml6ZWRCbG9ja3MuamF2YQpAQCAtMCwwICsxLDIwIEBACitwdWJsaWMgY2xhc3MgQmFyIHsKKyAgcHJpdmF0ZSBPYmplY3QgZmllbGQ7CisgIHByaXZhdGUgZmluYWwgT2JqZWN0IGxvY2sgPSBuZXcgT2JqZWN0KCk7CisKKyAgcHVibGljIHZvaWQgbWFpbigpIHsKKyAgICBzeW5jaHJvbml6ZWQgKGxvY2spIHsKKyAgICAgIGlmIChmaWVsZCAhPSBudWxsKSB7CisgICAgICAgIHJldHVybjsKKyAgICAgIH0KKyAgICB9CisgICAgc3luY2hyb25pemVkIChsb2NrKSB7CisgICAgICBpZiAoZmllbGQgIT0gbnVsbCkgeworICAgICAgICByZXR1cm47CisgICAgICB9CisgICAgICBpZiAoPHdhcm5pbmcgZGVzY3I9IkNvbmRpdGlvbiAnZmllbGQgPT0gbnVsbCcgaXMgYWx3YXlzICd0cnVlJyI+ZmllbGQgPT0gbnVsbDwvd2FybmluZz4pIHsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCk7CisgICAgICB9CisgICAgfQorICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy9maXh0dXJlL0ZpZWxkSW5Bbm9ueW1vdXMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RhdGFGbG93L2ZpeHR1cmUvRmllbGRJbkFub255bW91cy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkyZDRhNWQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy9maXh0dXJlL0ZpZWxkSW5Bbm9ueW1vdXMuamF2YQpAQCAtMCwwICsxLDM2IEBACitjbGFzcyBab28yIHsKKyAgcHJpdmF0ZSBib29sZWFuIGNvbmRpdGlvbjsKKyAgcHJpdmF0ZSBmaW5hbCBib29sZWFuIGNvbmRpdGlvbjI7CisKKyAgWm9vMihib29sZWFuIGNvbmRpdGlvbjIpIHsKKyAgICB0aGlzLmNvbmRpdGlvbjIgPSBjb25kaXRpb24yOworICB9CisKKyAgUnVubmFibGUgZm9vKCkgeworICAgIGlmICghY29uZGl0aW9uKSB7CisgICAgICByZXR1cm4gbmV3IFJ1bm5hYmxlKCkgeworCisgICAgICAgIHB1YmxpYyB2b2lkIHJ1bigpIHsKKyAgICAgICAgICBpZiAoY29uZGl0aW9uKSB7CisgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oImFhYSIpOworICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfTsKKyAgICB9CisgICAgaWYgKCFjb25kaXRpb24yKSB7CisgICAgICByZXR1cm4gbmV3IFJ1bm5hYmxlKCkgeworCisgICAgICAgIHB1YmxpYyB2b2lkIHJ1bigpIHsKKyAgICAgICAgICBpZiAoPHdhcm5pbmcgZGVzY3I9IkNvbmRpdGlvbiAnY29uZGl0aW9uMicgaXMgYWx3YXlzICdmYWxzZSciPmNvbmRpdGlvbjI8L3dhcm5pbmc+KSB7CisgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oImFhYSIpOworICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfTsKKyAgICB9CisgICAgcmV0dXJuIDx3YXJuaW5nIGRlc2NyPSInbnVsbCcgaXMgcmV0dXJuZWQgYnkgdGhlIG1ldGhvZCB3aGljaCBpc24ndCBkZWNsYXJlZCBhcyBATnVsbGFibGUiPm51bGw8L3dhcm5pbmc+OworICB9CisKKyAgcHVibGljIHZvaWQgc2V0Q29uZGl0aW9uKGJvb2xlYW4gY29uZGl0aW9uKSB7CisgICAgdGhpcy5jb25kaXRpb24gPSBjb25kaXRpb247CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RhdGFGbG93L2ZpeHR1cmUvRmllbGRJbml0aWFsaXplckluQW5vbnltb3VzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy9maXh0dXJlL0ZpZWxkSW5pdGlhbGl6ZXJJbkFub255bW91cy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBlZGRmMzgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy9maXh0dXJlL0ZpZWxkSW5pdGlhbGl6ZXJJbkFub255bW91cy5qYXZhCkBAIC0wLDAgKzEsMTggQEAKK2ltcG9ydCBvcmcuamV0YnJhaW5zLmFubm90YXRpb25zLk51bGxhYmxlOworCitjbGFzcyBab28yIHsKKworICB2b2lkIGZvbyhATnVsbGFibGUgT2JqZWN0IGZvbykgeworICAgIGlmIChmb28gPT0gbnVsbCkgeworICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG5ldyBSdW5uYWJsZSgpIHsKKyAgICAgIGludCBoYyA9IGZvby5oYXNoQ29kZSgpOworCisgICAgICBwdWJsaWMgdm9pZCBydW4oKSB7CisgICAgICB9CisgICAgfS5ydW4oKTsKKyAgfQorCit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy9maXh0dXJlL0ZpbmFsRmllbGRzRGlmZmVyZW50SW5zdGFuY2VzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy9maXh0dXJlL0ZpbmFsRmllbGRzRGlmZmVyZW50SW5zdGFuY2VzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWY0MDNlNwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RhdGFGbG93L2ZpeHR1cmUvRmluYWxGaWVsZHNEaWZmZXJlbnRJbnN0YW5jZXMuamF2YQpAQCAtMCwwICsxLDIxIEBACitwdWJsaWMgY2xhc3MgQnJva2VuQWxpZ25tZW50IHsKKworICBwcml2YXRlIHN0YXRpYyBib29sZWFuIGRvbWluYXRlcyhmaW5hbCBXYXRjaFJlcXVlc3RJbXBsIHJlcXVlc3QsIGZpbmFsIFdhdGNoUmVxdWVzdEltcGwgb3RoZXIpIHsKKyAgICBpZiAocmVxdWVzdC5teVRvV2F0Y2hSZWN1cnNpdmVseSkgeworICAgICAgcmV0dXJuIG90aGVyLm15Um9vdFBhdGguc3RhcnRzV2l0aChyZXF1ZXN0Lm15Um9vdFBhdGgpOworICAgIH0KKworICAgIHJldHVybiAhb3RoZXIubXlUb1dhdGNoUmVjdXJzaXZlbHkgJiYgcmVxdWVzdC5teVJvb3RQYXRoLmVxdWFscyhvdGhlci5teVJvb3RQYXRoKTsKKyAgfQorCisgIHByaXZhdGUgc3RhdGljIGNsYXNzIFdhdGNoUmVxdWVzdEltcGwgeworICAgIHByaXZhdGUgZmluYWwgYm9vbGVhbiBteVRvV2F0Y2hSZWN1cnNpdmVseTsKKyAgICBwcml2YXRlIGZpbmFsIFN0cmluZyBteVJvb3RQYXRoID0gIiI7CisKKyAgICBwcml2YXRlIFdhdGNoUmVxdWVzdEltcGwoYm9vbGVhbiB0b1dhdGNoUmVjdXJzaXZlbHkpIHsKKyAgICAgIG15VG9XYXRjaFJlY3Vyc2l2ZWx5ID0gdG9XYXRjaFJlY3Vyc2l2ZWx5OworICAgIH0KKworICB9CisKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy9maXh0dXJlL0ZpbmFsRmllbGRzSW5pdGlhbGl6ZWRCeUFubm90YXRlZFBhcmFtZXRlcnMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RhdGFGbG93L2ZpeHR1cmUvRmluYWxGaWVsZHNJbml0aWFsaXplZEJ5QW5ub3RhdGVkUGFyYW1ldGVycy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRiN2QwYjQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy9maXh0dXJlL0ZpbmFsRmllbGRzSW5pdGlhbGl6ZWRCeUFubm90YXRlZFBhcmFtZXRlcnMuamF2YQpAQCAtMCwwICsxLDMwIEBACitpbXBvcnQgb3JnLmpldGJyYWlucy5hbm5vdGF0aW9ucy5Ob3ROdWxsOworaW1wb3J0IG9yZy5qZXRicmFpbnMuYW5ub3RhdGlvbnMuTnVsbGFibGU7CisKK2ltcG9ydCBqYXZhLmxhbmcuT2JqZWN0OworCitwdWJsaWMgY2xhc3MgRG9vIHsKKyAgcHJpdmF0ZSBmaW5hbCBPYmplY3QgbXlBOworICBwcml2YXRlIGZpbmFsIE9iamVjdCBteUI7CisgIHByaXZhdGUgZmluYWwgT2JqZWN0IG15QzsKKworICBwdWJsaWMgRG9vKEBOdWxsYWJsZSBPYmplY3QgbXlBLCBATm90TnVsbCBPYmplY3QgbXlCLCBPYmplY3QgYykgeworICAgIHRoaXMubXlBID0gbXlBOworICAgIHRoaXMubXlCID0gbXlCOworICAgIG15QyA9IGM7CisgIH0KKworICBpbnQgYmFyKCkgeworICAgIHJldHVybiBteUMuaGFzaENvZGUoKTsKKyAgfQorCisKKyAgaW50IGZvbygpIHsKKyAgICBpZiAoPHdhcm5pbmcgZGVzY3I9IkNvbmRpdGlvbiAnbXlCICE9IG51bGwnIGlzIGFsd2F5cyAndHJ1ZSciPm15QiAhPSBudWxsPC93YXJuaW5nPiAmJgorICAgIDx3YXJuaW5nIGRlc2NyPSJNZXRob2QgaW52b2NhdGlvbiAnbXlBLmVxdWFscyhteUIpJyBtYXkgcHJvZHVjZSAnamF2YS5sYW5nLk51bGxQb2ludGVyRXhjZXB0aW9uJyI+bXlBLmVxdWFscyhteUIpPC93YXJuaW5nPikgeworICAgICAgcmV0dXJuIDI7CisgICAgfQorCisgICAgcmV0dXJuIG15QS5oYXNoQ29kZSgpOworICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy9maXh0dXJlL0ZpbmFsTG9vcFZhcmlhYmxlSW5zdGFuY2VvZi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvZml4dHVyZS9GaW5hbExvb3BWYXJpYWJsZUluc3RhbmNlb2YuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNjBjYWQ5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvZml4dHVyZS9GaW5hbExvb3BWYXJpYWJsZUluc3RhbmNlb2YuamF2YQpAQCAtMCwwICsxLDE2IEBACitwdWJsaWMgY2xhc3MgVGVzdCB7CisKKyAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oT2JqZWN0W10gYXJncykgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgYm9vbGVhbiBlbHZpc0xpdmVzID0gZmFsc2U7CisgICAgZm9yIChmaW5hbCBPYmplY3QgbyA6IGFyZ3MpIHsKKyAgICAgIGlmIChvIGluc3RhbmNlb2YgSW50ZWdlcikgeworICAgICAgICBlbHZpc0xpdmVzID0gdHJ1ZTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIGlmIChlbHZpc0xpdmVzKSB7CisgICAgICAgICAgU3lzdGVtLmVyci5wcmludGxuKCJFbHZpcyBpcyBhbGl2ZSEiKTsKKyAgICAgICAgfQorICAgICAgfQorICAgIH0KKyAgfQorCit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy9maXh0dXJlL0dlbmVyYXRlZEVxdWFscy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvZml4dHVyZS9HZW5lcmF0ZWRFcXVhbHMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMjViNDUyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvZml4dHVyZS9HZW5lcmF0ZWRFcXVhbHMuamF2YQpAQCAtMCwwICsxLDIwIEBACitwdWJsaWMgY2xhc3MgQmFyIHsKKyAgaW50IGZvbzsKKworICBAT3ZlcnJpZGUKKyAgcHVibGljIGJvb2xlYW4gZXF1YWxzKE9iamVjdCBvKSB7CisgICAgaWYgKHRoaXMgPT0gbykgcmV0dXJuIHRydWU7CisgICAgaWYgKCEobyBpbnN0YW5jZW9mIEJhcikpIHJldHVybiBmYWxzZTsKKworICAgIEJhciBiYXIgPSAoQmFyKSBvOworCisgICAgaWYgKGZvbyAhPSBiYXIuZm9vKSByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gdHJ1ZTsKKyAgfQorCisgIEBPdmVycmlkZQorICBwdWJsaWMgaW50IGhhc2hDb2RlKCkgeworICAgIHJldHVybiBmb287CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RhdGFGbG93L2ZpeHR1cmUvR3JlYXRlcklzTm90RXF1YWxzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy9maXh0dXJlL0dyZWF0ZXJJc05vdEVxdWFscy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhlN2NjNWQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy9maXh0dXJlL0dyZWF0ZXJJc05vdEVxdWFscy5qYXZhCkBAIC0wLDAgKzEsOCBAQAorY2xhc3MgWm9vMiB7CisgIHZvaWQgZm9vKGphdmEudXRpbC5MaXN0W10gZGVhbHNJbmZvKSB7CisgICAgZmluYWwgaW50IGRlYWxzTnVtYmVyID0gZGVhbHNJbmZvICE9IG51bGwgJiYgZGVhbHNJbmZvLmxlbmd0aCA9PSAyID8gZGVhbHNJbmZvWzBdLnNpemUoKSA6IDA7CisgICAgaWYgKGRlYWxzTnVtYmVyID4gMCkgeworICAgICAgU3lzdGVtLm91dC5wcmludGxuKGRlYWxzSW5mb1swXS5nZXQoMCkpOworICAgIH0KKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvZml4dHVyZS9JREVBODQ0ODkuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RhdGFGbG93L2ZpeHR1cmUvSURFQTg0NDg5LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjAyMzBhNwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RhdGFGbG93L2ZpeHR1cmUvSURFQTg0NDg5LmphdmEKQEAgLTAsMCArMSwxMSBAQAorY2xhc3MgTWFpbiB7CisgIHN0YXRpYyBjbGFzcyBVc2VyIHsKKyAgICBwdWJsaWMgaW50IFJlZ2lzdHJhdGlvblN0YXRlOworICB9CisKKyAgcHVibGljIHN0YXRpYyB2b2lkIGZ1bihVc2VyIHVzZXIpIHsKKyAgICBpZiAoKHVzZXIuUmVnaXN0cmF0aW9uU3RhdGUgPT0gNSB8fCB1c2VyLlJlZ2lzdHJhdGlvblN0YXRlID09IDEwKSA9PSB0cnVlKSB7CisKKyAgICB9CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RhdGFGbG93L2ZpeHR1cmUvTGFzdENvbnN0YW50Q29uZGl0aW9uSW5BbmQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RhdGFGbG93L2ZpeHR1cmUvTGFzdENvbnN0YW50Q29uZGl0aW9uSW5BbmQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZTI3YWE3MQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RhdGFGbG93L2ZpeHR1cmUvTGFzdENvbnN0YW50Q29uZGl0aW9uSW5BbmQuamF2YQpAQCAtMCwwICsxLDE0IEBACitjbGFzcyBGdW4geworICBwcml2YXRlIHZvaWQgcGFyc2VEZWNsYXJhdG9yKE9iamVjdCBidWlsZGVyLCBib29sZWFuIGlzVHVwbGUpIHsKKyAgICBpZiAoIWlzVHVwbGUpIHsKKyAgICAgIHJldHVybjsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICBpZiAoc210aCgpICYmIDx3YXJuaW5nIGRlc2NyPSJDb25kaXRpb24gJ2lzVHVwbGUnIGlzIGFsd2F5cyAndHJ1ZScgd2hlbiByZWFjaGVkIj5pc1R1cGxlPC93YXJuaW5nPikgeworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oKTsKKyAgICAgIH0KKyAgICB9CisgIH0KKworICBib29sZWFuIHNtdGgoKSB7IHJldHVybiB0cnVlOyB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvZml4dHVyZS9Mb2NhbENsYXNzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy9maXh0dXJlL0xvY2FsQ2xhc3MuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NjE5NmVjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvZml4dHVyZS9Mb2NhbENsYXNzLmphdmEKQEAgLTAsMCArMSwxNyBAQAoraW1wb3J0IG9yZy5qZXRicmFpbnMuYW5ub3RhdGlvbnMuTm90TnVsbDsKK2ltcG9ydCBvcmcuamV0YnJhaW5zLmFubm90YXRpb25zLk51bGxhYmxlOworCitjbGFzcyBUZXN0IHsKKyAgdm9pZCBmKEBOdWxsYWJsZSBmaW5hbCBPYmplY3QgeCkgeworICAgIGlmICh4ICE9IG51bGwpIHsKKyAgICAgIGNsYXNzIEMgeworICAgICAgICBDKEBOb3ROdWxsIE9iamVjdCB4KSB7CisgICAgICAgIH0KKworICAgICAgICBDKCkgeworICAgICAgICAgIHRoaXMoeCk7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy9maXh0dXJlL01ldGhvZENhbGxGbHVzaGVzRmllbGQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RhdGFGbG93L2ZpeHR1cmUvTWV0aG9kQ2FsbEZsdXNoZXNGaWVsZC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ0M2M3NmUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy9maXh0dXJlL01ldGhvZENhbGxGbHVzaGVzRmllbGQuamF2YQpAQCAtMCwwICsxLDIxIEBACitpbXBvcnQgb3JnLmpldGJyYWlucy5hbm5vdGF0aW9ucy5OdWxsYWJsZTsKKworY2xhc3MgRnVuIHsKKyAgQE51bGxhYmxlCisgIHByaXZhdGUgT2JqZWN0IGZvbzsKKworICBwdWJsaWMgRnVuKCkgeworICAgIGZvbyA9IG5ldyBPYmplY3QoKTsKKyAgICBtYWtlTWFnaWMoKTsKKworICAgIGlmIChudWxsID09IGZvbykgeworICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJoZWxsbyIpOworICAgIH0KKworICB9CisKKyAgcHJpdmF0ZSB2b2lkIG1ha2VNYWdpYygpIHsKKyAgICBmb28gPSBudWxsOworICB9CisKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy9maXh0dXJlL011bHRpQ2F0Y2guamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RhdGFGbG93L2ZpeHR1cmUvTXVsdGlDYXRjaC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJmZmM0YTEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy9maXh0dXJlL011bHRpQ2F0Y2guamF2YQpAQCAtMCwwICsxLDM4IEBACisvKgorICogQ29weXJpZ2h0IDIwMDAtMjAxMiBKZXRCcmFpbnMgcy5yLm8uCisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworaW1wb3J0IG9yZy5qZXRicmFpbnMuYW5ub3RhdGlvbnMuTm90TnVsbDsKK2ltcG9ydCBvcmcuamV0YnJhaW5zLmFubm90YXRpb25zLk51bGxhYmxlOworCitpbXBvcnQgamF2YS5pby5JT0V4Y2VwdGlvbjsKK2ltcG9ydCBqYXZhLmlvLklucHV0U3RyZWFtOworaW1wb3J0IGphdmEuc3FsLlNRTEV4Y2VwdGlvbjsKK2ltcG9ydCBqYXZhLnV0aWwuTWFwOworCitjbGFzcyBNdWx0aWNhdGNoIHsKKyAgQE5vdE51bGwKKyAgcHVibGljIE1hcCB0ZXN0KFN0cmluZyBuYW1lKSB7CisgICAgdHJ5IChJbnB1dFN0cmVhbSBzID0gYnVpbGQoKSkgeworICAgICAgcmV0dXJuIDx3YXJuaW5nIGRlc2NyPSInbnVsbCcgaXMgcmV0dXJuZWQgYnkgdGhlIG1ldGhvZCBkZWNsYXJlZCBhcyBATm90TnVsbCI+bnVsbDwvd2FybmluZz47CisgICAgfSBjYXRjaCAoU1FMRXhjZXB0aW9uIHwgSU9FeGNlcHRpb24gZSkgeworICAgICAgdGhyb3cgbmV3IFJ1bnRpbWVFeGNlcHRpb24oZSk7CisgICAgfQorICB9CisKKyAgcHJpdmF0ZSBJbnB1dFN0cmVhbSBidWlsZCgpIHRocm93cyBTUUxFeGNlcHRpb24geworICAgIHJldHVybiA8d2FybmluZyBkZXNjcj0iJ251bGwnIGlzIHJldHVybmVkIGJ5IHRoZSBtZXRob2Qgd2hpY2ggaXNuJ3QgZGVjbGFyZWQgYXMgQE51bGxhYmxlIj5udWxsPC93YXJuaW5nPjsKKyAgfQorCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvZml4dHVyZS9NdXRhYmxlTm90QW5ub3RhdGVkRmllbGRzVHJlYXRtZW50LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy9maXh0dXJlL011dGFibGVOb3RBbm5vdGF0ZWRGaWVsZHNUcmVhdG1lbnQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hN2M2N2UwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvZml4dHVyZS9NdXRhYmxlTm90QW5ub3RhdGVkRmllbGRzVHJlYXRtZW50LmphdmEKQEAgLTAsMCArMSw2OCBAQAoraW1wb3J0IG9yZy5qZXRicmFpbnMuYW5ub3RhdGlvbnMuTnVsbGFibGU7CisKK2NsYXNzIEZvbyB7CisgIE9iamVjdCBkYXRhOworCisgIHZvaWQgY2hlY2tOb3ROdWxsQW5kVXNlKEZvbyBmKSB7CisgICAgaWYgKGYuZGF0YSAhPSBudWxsKSB7CisgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oZi5kYXRhLmhhc2hDb2RlKCkpOworICAgIH0KKyAgfQorCisgIHZvaWQgY2hlY2tOdWxsQW5kUmV0dXJuKEZvbyBmKSB7CisgICAgaWYgKGYuZGF0YSA9PSBudWxsKSB7CisgICAgICByZXR1cm47CisgICAgfQorICAgIFN5c3RlbS5vdXQucHJpbnRsbihmLmRhdGEuaGFzaENvZGUoKSk7CisgIH0KKworICB2b2lkIHdhcm5XaGVuV3JvbmdDaGVjaygpIHsKKyAgICBpZiAoZGF0YSAhPSBudWxsKSB7CisgICAgICByZXR1cm47CisgICAgfQorICAgIFN5c3RlbS5vdXQucHJpbnRsbig8d2FybmluZyBkZXNjcj0iTWV0aG9kIGludm9jYXRpb24gJ2RhdGEuaGFzaENvZGUoKScgbWF5IHByb2R1Y2UgJ2phdmEubGFuZy5OdWxsUG9pbnRlckV4Y2VwdGlvbiciPmRhdGEuaGFzaENvZGUoKTwvd2FybmluZz4pOworICAgIFN5c3RlbS5vdXQucHJpbnRsbihkYXRhLmhhc2hDb2RlKCkpOworICB9CisKKyAgdm9pZCBkb250V2FybldoZW5Ob3RDaGVja2VkKEZvbyBmKSB7CisgICAgU3lzdGVtLm91dC5wcmludGxuKGYuZGF0YS5oYXNoQ29kZSgpKTsKKyAgfQorICAKKyAgdm9pZCBkb250V2FybldoZW5Ob3RDaGVja2VkVGhpcygpIHsKKyAgICBTeXN0ZW0ub3V0LnByaW50bG4oZGF0YS5oYXNoQ29kZSgpKTsKKyAgfQorICAKKyAgdm9pZCBkb250V2FybldoZW5Eb3VibGVDaGVja2VkKEZvbyBmKSB7CisgICAgaWYgKGYuZGF0YSA9PSBudWxsKSB7CisgICAgICByZXR1cm47CisgICAgfQorICAgIGlmIChmLmRhdGEgPT0gbnVsbCkgeworICAgICAgcmV0dXJuOworICAgIH0KKyAgICBTeXN0ZW0ub3V0LnByaW50bG4oZi5kYXRhLmhhc2hDb2RlKCkpOworICB9CisKKyAgdm9pZCBkb250V2FybldoZW5Eb3VibGVDaGVja2VkX1RoaXNfU3luY2hyb25pemVkKCkgeworICAgIGlmIChkYXRhID09IG51bGwpIHsKKyAgICAgIHJldHVybjsKKyAgICB9CisgICAgc3luY2hyb25pemVkICh0aGlzKSB7CisgICAgICBpZiAoZGF0YSA9PSBudWxsKSB7CisgICAgICAgIHJldHVybjsKKyAgICAgIH0KKyAgICB9CisgICAgU3lzdGVtLm91dC5wcmludGxuKGRhdGEuaGFzaENvZGUoKSk7CisgIH0KKyAgCisgIHZvaWQgZG9udFdhcm5XaGVuRG91YmxlQ2hlY2tlZF9UaGlzX1dpdGhNZXRob2RDYWxsKCkgeworICAgIGlmIChkYXRhID09IG51bGwpIHsKKyAgICAgIHJldHVybjsKKyAgICB9CisgICAgU3lzdGVtLm91dC5wcmludGxuKGRhdGEuaGFzaENvZGUoKSk7CisgICAgaWYgKGRhdGEgPT0gbnVsbCkgeworICAgICAgcmV0dXJuOworICAgIH0KKyAgICBTeXN0ZW0ub3V0LnByaW50bG4oZGF0YS5oYXNoQ29kZSgpKTsKKyAgfQorCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvZml4dHVyZS9NdXRhYmxlTnVsbGFibGVGaWVsZHNUcmVhdG1lbnQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RhdGFGbG93L2ZpeHR1cmUvTXV0YWJsZU51bGxhYmxlRmllbGRzVHJlYXRtZW50LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWUyYjE4MQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RhdGFGbG93L2ZpeHR1cmUvTXV0YWJsZU51bGxhYmxlRmllbGRzVHJlYXRtZW50LmphdmEKQEAgLTAsMCArMSw3MCBAQAoraW1wb3J0IG9yZy5qZXRicmFpbnMuYW5ub3RhdGlvbnMuTnVsbGFibGU7CisKK2NsYXNzIEZvbyB7CisgIEBOdWxsYWJsZSBPYmplY3QgZGF0YTsKKworICB2b2lkIGNoZWNrTm90TnVsbEFuZFVzZShGb28gZikgeworICAgIGlmIChmLmRhdGEgIT0gbnVsbCkgeworICAgICAgU3lzdGVtLm91dC5wcmludGxuKGYuZGF0YS5oYXNoQ29kZSgpKTsKKyAgICB9CisgIH0KKworICB2b2lkIGNoZWNrTnVsbEFuZFJldHVybihGb28gZikgeworICAgIGlmIChmLmRhdGEgPT0gbnVsbCkgeworICAgICAgcmV0dXJuOworICAgIH0KKyAgICBTeXN0ZW0ub3V0LnByaW50bG4oZi5kYXRhLmhhc2hDb2RlKCkpOworICB9CisKKyAgdm9pZCB3YXJuV2hlbldyb25nQ2hlY2soKSB7CisgICAgaWYgKGRhdGEgIT0gbnVsbCkgeworICAgICAgcmV0dXJuOworICAgIH0KKyAgICBTeXN0ZW0ub3V0LnByaW50bG4oPHdhcm5pbmcgZGVzY3I9Ik1ldGhvZCBpbnZvY2F0aW9uICdkYXRhLmhhc2hDb2RlKCknIG1heSBwcm9kdWNlICdqYXZhLmxhbmcuTnVsbFBvaW50ZXJFeGNlcHRpb24nIj5kYXRhLmhhc2hDb2RlKCk8L3dhcm5pbmc+KTsKKyAgICBTeXN0ZW0ub3V0LnByaW50bG4oZGF0YS5oYXNoQ29kZSgpKTsKKyAgfQorCisgIHZvaWQgd2FybldoZW5Ob3RDaGVja2VkT25jZShGb28gZikgeworICAgIFN5c3RlbS5vdXQucHJpbnRsbig8d2FybmluZyBkZXNjcj0iTWV0aG9kIGludm9jYXRpb24gJ2YuZGF0YS5oYXNoQ29kZSgpJyBtYXkgcHJvZHVjZSAnamF2YS5sYW5nLk51bGxQb2ludGVyRXhjZXB0aW9uJyI+Zi5kYXRhLmhhc2hDb2RlKCk8L3dhcm5pbmc+KTsKKyAgICBTeXN0ZW0ub3V0LnByaW50bG4oZi5kYXRhLmhhc2hDb2RlKCkpOworICB9CisgIAorICB2b2lkIHdhcm5XaGVuTm90Q2hlY2tlZFRoaXNPbmNlKCkgeworICAgIFN5c3RlbS5vdXQucHJpbnRsbig8d2FybmluZyBkZXNjcj0iTWV0aG9kIGludm9jYXRpb24gJ2RhdGEuaGFzaENvZGUoKScgbWF5IHByb2R1Y2UgJ2phdmEubGFuZy5OdWxsUG9pbnRlckV4Y2VwdGlvbiciPmRhdGEuaGFzaENvZGUoKTwvd2FybmluZz4pOworICAgIFN5c3RlbS5vdXQucHJpbnRsbihkYXRhLmhhc2hDb2RlKCkpOworICB9CisgIAorICB2b2lkIGRvbnRXYXJuV2hlbkRvdWJsZUNoZWNrZWQoRm9vIGYpIHsKKyAgICBpZiAoZi5kYXRhID09IG51bGwpIHsKKyAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKGYuZGF0YSA9PSBudWxsKSB7CisgICAgICByZXR1cm47CisgICAgfQorICAgIFN5c3RlbS5vdXQucHJpbnRsbihmLmRhdGEuaGFzaENvZGUoKSk7CisgIH0KKworICB2b2lkIGRvbnRXYXJuV2hlbkRvdWJsZUNoZWNrZWRfVGhpc19TeW5jaHJvbml6ZWQoKSB7CisgICAgaWYgKGRhdGEgPT0gbnVsbCkgeworICAgICAgcmV0dXJuOworICAgIH0KKyAgICBzeW5jaHJvbml6ZWQgKHRoaXMpIHsKKyAgICAgIGlmIChkYXRhID09IG51bGwpIHsKKyAgICAgICAgcmV0dXJuOworICAgICAgfQorICAgIH0KKyAgICBTeXN0ZW0ub3V0LnByaW50bG4oZGF0YS5oYXNoQ29kZSgpKTsKKyAgfQorICAKKyAgdm9pZCBkb250V2FybldoZW5Eb3VibGVDaGVja2VkX1RoaXNfV2l0aE1ldGhvZENhbGwoKSB7CisgICAgaWYgKGRhdGEgPT0gbnVsbCkgeworICAgICAgcmV0dXJuOworICAgIH0KKyAgICBTeXN0ZW0ub3V0LnByaW50bG4oZGF0YS5oYXNoQ29kZSgpKTsKKyAgICBpZiAoZGF0YSA9PSBudWxsKSB7CisgICAgICByZXR1cm47CisgICAgfQorICAgIFN5c3RlbS5vdXQucHJpbnRsbihkYXRhLmhhc2hDb2RlKCkpOworICB9CisKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy9maXh0dXJlL011dGFibGVWb2xhdGlsZU51bGxhYmxlRmllbGRzVHJlYXRtZW50LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy9maXh0dXJlL011dGFibGVWb2xhdGlsZU51bGxhYmxlRmllbGRzVHJlYXRtZW50LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTVjZGFjMQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RhdGFGbG93L2ZpeHR1cmUvTXV0YWJsZVZvbGF0aWxlTnVsbGFibGVGaWVsZHNUcmVhdG1lbnQuamF2YQpAQCAtMCwwICsxLDY4IEBACitpbXBvcnQgb3JnLmpldGJyYWlucy5hbm5vdGF0aW9ucy5OdWxsYWJsZTsKKworY2xhc3MgRm9vIHsKKyAgQE51bGxhYmxlIHZvbGF0aWxlIE9iamVjdCBkYXRhOworCisgIHZvaWQgY2hlY2tOb3ROdWxsQW5kVXNlKEZvbyBmKSB7CisgICAgaWYgKGYuZGF0YSAhPSBudWxsKSB7CisgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oPHdhcm5pbmcgZGVzY3I9Ik1ldGhvZCBpbnZvY2F0aW9uICdmLmRhdGEuaGFzaENvZGUoKScgbWF5IHByb2R1Y2UgJ2phdmEubGFuZy5OdWxsUG9pbnRlckV4Y2VwdGlvbiciPmYuZGF0YS5oYXNoQ29kZSgpPC93YXJuaW5nPik7CisgICAgfQorICB9CisKKyAgdm9pZCBjaGVja051bGxBbmRSZXR1cm4oRm9vIGYpIHsKKyAgICBpZiAoZi5kYXRhID09IG51bGwpIHsKKyAgICAgIHJldHVybjsKKyAgICB9CisgICAgU3lzdGVtLm91dC5wcmludGxuKDx3YXJuaW5nIGRlc2NyPSJNZXRob2QgaW52b2NhdGlvbiAnZi5kYXRhLmhhc2hDb2RlKCknIG1heSBwcm9kdWNlICdqYXZhLmxhbmcuTnVsbFBvaW50ZXJFeGNlcHRpb24nIj5mLmRhdGEuaGFzaENvZGUoKTwvd2FybmluZz4pOworICB9CisKKyAgdm9pZCB3YXJuV2hlbldyb25nQ2hlY2soKSB7CisgICAgaWYgKGRhdGEgIT0gbnVsbCkgeworICAgICAgcmV0dXJuOworICAgIH0KKyAgICBTeXN0ZW0ub3V0LnByaW50bG4oPHdhcm5pbmcgZGVzY3I9Ik1ldGhvZCBpbnZvY2F0aW9uICdkYXRhLmhhc2hDb2RlKCknIG1heSBwcm9kdWNlICdqYXZhLmxhbmcuTnVsbFBvaW50ZXJFeGNlcHRpb24nIj5kYXRhLmhhc2hDb2RlKCk8L3dhcm5pbmc+KTsKKyAgICBTeXN0ZW0ub3V0LnByaW50bG4oPHdhcm5pbmcgZGVzY3I9Ik1ldGhvZCBpbnZvY2F0aW9uICdkYXRhLmhhc2hDb2RlKCknIG1heSBwcm9kdWNlICdqYXZhLmxhbmcuTnVsbFBvaW50ZXJFeGNlcHRpb24nIj5kYXRhLmhhc2hDb2RlKCk8L3dhcm5pbmc+KTsKKyAgfQorCisgIHZvaWQgd2FybldoZW5Ob3RDaGVja2VkKEZvbyBmKSB7CisgICAgU3lzdGVtLm91dC5wcmludGxuKDx3YXJuaW5nIGRlc2NyPSJNZXRob2QgaW52b2NhdGlvbiAnZi5kYXRhLmhhc2hDb2RlKCknIG1heSBwcm9kdWNlICdqYXZhLmxhbmcuTnVsbFBvaW50ZXJFeGNlcHRpb24nIj5mLmRhdGEuaGFzaENvZGUoKTwvd2FybmluZz4pOworICB9CisgIAorICB2b2lkIHdhcm5XaGVuTm90Q2hlY2tlZFRoaXMoKSB7CisgICAgU3lzdGVtLm91dC5wcmludGxuKDx3YXJuaW5nIGRlc2NyPSJNZXRob2QgaW52b2NhdGlvbiAnZGF0YS5oYXNoQ29kZSgpJyBtYXkgcHJvZHVjZSAnamF2YS5sYW5nLk51bGxQb2ludGVyRXhjZXB0aW9uJyI+ZGF0YS5oYXNoQ29kZSgpPC93YXJuaW5nPik7CisgIH0KKyAgCisgIHZvaWQgZG9udFdhcm5XaGVuRG91YmxlQ2hlY2tlZChGb28gZikgeworICAgIGlmIChmLmRhdGEgPT0gbnVsbCkgeworICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAoZi5kYXRhID09IG51bGwpIHsKKyAgICAgIHJldHVybjsKKyAgICB9CisgICAgU3lzdGVtLm91dC5wcmludGxuKDx3YXJuaW5nIGRlc2NyPSJNZXRob2QgaW52b2NhdGlvbiAnZi5kYXRhLmhhc2hDb2RlKCknIG1heSBwcm9kdWNlICdqYXZhLmxhbmcuTnVsbFBvaW50ZXJFeGNlcHRpb24nIj5mLmRhdGEuaGFzaENvZGUoKTwvd2FybmluZz4pOworICB9CisKKyAgdm9pZCBkb250V2FybldoZW5Eb3VibGVDaGVja2VkX1RoaXNfU3luY2hyb25pemVkKCkgeworICAgIGlmIChkYXRhID09IG51bGwpIHsKKyAgICAgIHJldHVybjsKKyAgICB9CisgICAgc3luY2hyb25pemVkICh0aGlzKSB7CisgICAgICBpZiAoZGF0YSA9PSBudWxsKSB7CisgICAgICAgIHJldHVybjsKKyAgICAgIH0KKyAgICB9CisgICAgU3lzdGVtLm91dC5wcmludGxuKDx3YXJuaW5nPmRhdGEuaGFzaENvZGUoKTwvd2FybmluZz4pOworICB9CisgIAorICB2b2lkIGRvbnRXYXJuV2hlbkRvdWJsZUNoZWNrZWRfVGhpc19XaXRoTWV0aG9kQ2FsbCgpIHsKKyAgICBpZiAoZGF0YSA9PSBudWxsKSB7CisgICAgICByZXR1cm47CisgICAgfQorICAgIFN5c3RlbS5vdXQucHJpbnRsbig8d2FybmluZz5kYXRhLmhhc2hDb2RlKCk8L3dhcm5pbmc+KTsKKyAgICBpZiAoZGF0YSA9PSBudWxsKSB7CisgICAgICByZXR1cm47CisgICAgfQorICAgIFN5c3RlbS5vdXQucHJpbnRsbig8d2FybmluZz5kYXRhLmhhc2hDb2RlKCk8L3dhcm5pbmc+KTsKKyAgfQorCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvZml4dHVyZS9Ob3RFcXVhbHNEb2VzbnRJbXBseU5vdE51bGxpdHkuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RhdGFGbG93L2ZpeHR1cmUvTm90RXF1YWxzRG9lc250SW1wbHlOb3ROdWxsaXR5LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTc0NTg1YwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RhdGFGbG93L2ZpeHR1cmUvTm90RXF1YWxzRG9lc250SW1wbHlOb3ROdWxsaXR5LmphdmEKQEAgLTAsMCArMSwyMSBAQAoraW1wb3J0IG9yZy5qZXRicmFpbnMuYW5ub3RhdGlvbnMuTnVsbGFibGU7CitjbGFzcyBUZXN0SURFQVdhcm4geworICB2b2lkIHRlc3QoamF2YS51dGlsLk1hcDxPYmplY3QsIE9iamVjdD4gdmFsdWVzKSB7CisgICAgYm9vbGVhbiBjb25kaXRpb24gPSBmYWxzZTsKKyAgICBPYmplY3QgdGFyZ2V0ID0gZ2V0VGFyZ2V0KCk7CisgICAgZm9yIChPYmplY3QgbyA6IHZhbHVlcy52YWx1ZXMoKSkgeworICAgICAgaWYgKG8gIT0gbnVsbCAmJiBvICE9IHRhcmdldCkgeworICAgICAgICBjb25kaXRpb24gPSB0cnVlOworICAgICAgfQorICAgIH0KKyAgICBpZiAoIWNvbmRpdGlvbiB8fCB0YXJnZXQgPT0gbnVsbCkgeworICAgICAgU3lzdGVtLm91dC5wcmludGxuKHRhcmdldCk7CisgICAgfQorICB9CisKKyAgQE51bGxhYmxlCisgIHB1YmxpYyBPYmplY3QgZ2V0VGFyZ2V0KCkgeworICAgIHJldHVybiBudWxsOworICB9CisKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RhdGFGbG93L2ZpeHR1cmUvTm90R3JlYXRlcklzTm90RXF1YWxzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy9maXh0dXJlL05vdEdyZWF0ZXJJc05vdEVxdWFscy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY1MjhmY2QKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy9maXh0dXJlL05vdEdyZWF0ZXJJc05vdEVxdWFscy5qYXZhCkBAIC0wLDAgKzEsMzggQEAKK2ltcG9ydCBvcmcuamV0YnJhaW5zLmFubm90YXRpb25zLk5vdE51bGw7CisKK2ltcG9ydCBqYXZhLmlvLkZpbGU7CisKK2NsYXNzIFpvbzIgeworICBwdWJsaWMgc3RhdGljIGJvb2xlYW4gc3RhcnRzV2l0aChATm90TnVsbCBTdHJpbmcgcGF0aCwgQE5vdE51bGwgU3RyaW5nIHN0YXJ0LCBmaW5hbCBib29sZWFuIGNhc2VTZW5zaXRpdmUpIHsKKyAgICBmaW5hbCBpbnQgbGVuZ3RoMSA9IHBhdGgubGVuZ3RoKCk7CisgICAgZmluYWwgaW50IGxlbmd0aDIgPSBzdGFydC5sZW5ndGgoKTsKKyAgICBpZiAobGVuZ3RoMiA9PSAwKSByZXR1cm4gdHJ1ZTsKKyAgICBpZiAobGVuZ3RoMiA+IGxlbmd0aDEpIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIXBhdGgucmVnaW9uTWF0Y2hlcyghY2FzZVNlbnNpdGl2ZSwgMCwgc3RhcnQsIDAsIGxlbmd0aDIpKSByZXR1cm4gZmFsc2U7CisgICAgaWYgKGxlbmd0aDEgPT0gbGVuZ3RoMikgcmV0dXJuIHRydWU7CisgICAgY2hhciBsYXN0MiA9IHN0YXJ0LmNoYXJBdChsZW5ndGgyIC0gMSk7CisgICAgY2hhciBuZXh0MTsKKyAgICBpZiAobGFzdDIgPT0gJy8nIHx8IGxhc3QyID09IEZpbGUuc2VwYXJhdG9yQ2hhcikgeworICAgICAgbmV4dDEgPSBwYXRoLmNoYXJBdChsZW5ndGgyIC0gMSk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgbmV4dDEgPSBwYXRoLmNoYXJBdChsZW5ndGgyKTsKKyAgICB9CisgICAgcmV0dXJuIG5leHQxID09ICcvJyB8fCBuZXh0MSA9PSBGaWxlLnNlcGFyYXRvckNoYXI7CisgIH0KKyAgdm9pZCBmb28oU29tZSBtZSwgU29tZSBvdGhlcikgeworICAgIGlmIChtZS5kZXB0aCA8IG90aGVyLmRlcHRoKSB7CisgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oImxlc3MiKTsKKyAgICB9IGVsc2UgaWYgKG90aGVyLmRlcHRoID4gbWUuZGVwdGgpIHsKKyAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigibW9yZSIpOworICAgIH0KKyAgfQorfQorCitjbGFzcyBTb21lIHsKKyAgZmluYWwgaW50IGRlcHRoOworCisgIFNvbWUoaW50IGRlcHRoKSB7CisgICAgdGhpcy5kZXB0aCA9IGRlcHRoOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvZml4dHVyZS9OdWxsQ2hlY2tEb2VzbnRBZmZlY3RVbmNoZWNrZWRDYXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy9maXh0dXJlL051bGxDaGVja0RvZXNudEFmZmVjdFVuY2hlY2tlZENhc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZjg1NjQ4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvZml4dHVyZS9OdWxsQ2hlY2tEb2VzbnRBZmZlY3RVbmNoZWNrZWRDYXN0LmphdmEKQEAgLTAsMCArMSwxNSBAQAorcHVibGljIGNsYXNzIERhdGFGbG93QnVnIHsKKworICBwdWJsaWMgaW50IGFkZDIoT2JqZWN0IGxlZnQsIE9iamVjdCByaWdodCkgeworICAgIGlmIChsZWZ0ICE9IG51bGwgJiYgIShsZWZ0IGluc3RhbmNlb2YgU3RyaW5nKSkgeworICAgICAgcmV0dXJuICgoPHdhcm5pbmcgZGVzY3I9IkNhc3RpbmcgJ2xlZnQnIHRvICdTdHJpbmcnIG1heSBwcm9kdWNlICdqYXZhLmxhbmcuQ2xhc3NDYXN0RXhjZXB0aW9uJyI+U3RyaW5nPC93YXJuaW5nPikgbGVmdCkubGVuZ3RoKCk7CisKKyAgICB9CisgICAgaWYgKCEocmlnaHQgaW5zdGFuY2VvZiBTdHJpbmcpKSB7CisgICAgICByZXR1cm4gKCg8d2FybmluZyBkZXNjcj0iQ2FzdGluZyAncmlnaHQnIHRvICdTdHJpbmcnIG1heSBwcm9kdWNlICdqYXZhLmxhbmcuQ2xhc3NDYXN0RXhjZXB0aW9uJyI+U3RyaW5nPC93YXJuaW5nPikgcmlnaHQpLmxlbmd0aCgpOworCisgICAgfQorICAgIHJldHVybiAyOworICB9CisKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy9maXh0dXJlL051bGxhYmxlQW5vbnltb3VzTWV0aG9kLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy9maXh0dXJlL051bGxhYmxlQW5vbnltb3VzTWV0aG9kLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmQ4MmM4YgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RhdGFGbG93L2ZpeHR1cmUvTnVsbGFibGVBbm9ueW1vdXNNZXRob2QuamF2YQpAQCAtMCwwICsxLDE4IEBACitpbXBvcnQgb3JnLmpldGJyYWlucy5hbm5vdGF0aW9ucy5OdWxsYWJsZTsKKworcHVibGljIGNsYXNzIEJhciB7CisKKyAgICB2b2lkIG5hdmlnYXRlVG8oKSB7CisgICAgICAgIENvbXB1dGFibGUgYyA9IG5ldyBDb21wdXRhYmxlKCkgeworICAgICAgICAgICAgQE51bGxhYmxlICAKKyAgICAgICAgICAgIHB1YmxpYyBPYmplY3QgY29tcHV0ZSgpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKyAgICB9CisKK30KKworaW50ZXJmYWNlIENvbXB1dGFibGUgeworICAgIEBOdWxsYWJsZSBPYmplY3QgY29tcHV0ZSgpOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RhdGFGbG93L2ZpeHR1cmUvTnVsbGFibGVBbm9ueW1vdXNQYXJhbWV0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RhdGFGbG93L2ZpeHR1cmUvTnVsbGFibGVBbm9ueW1vdXNQYXJhbWV0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NmM1MjdlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvZml4dHVyZS9OdWxsYWJsZUFub255bW91c1BhcmFtZXRlci5qYXZhCkBAIC0wLDAgKzEsMTcgQEAKK2ltcG9ydCBvcmcuamV0YnJhaW5zLmFubm90YXRpb25zLk51bGxhYmxlOworCitwdWJsaWMgY2xhc3MgQmFyIHsKKworICAgIHZvaWQgbmF2aWdhdGVUbyhmaW5hbEBOdWxsYWJsZSBPYmplY3QgcCkgeworICAgICAgaWYgKHAgPT0gbnVsbCkgeworICAgICAgICByZXR1cm47CisgICAgICB9CisKKyAgICAgICAgUnVubmFibGUgYyA9IG5ldyBSdW5uYWJsZSgpIHsKKyAgICAgICAgICAgIHB1YmxpYyB2b2lkIHJ1bigpIHsKKyAgICAgICAgICAgICAgICBwLmhhc2hDb2RlKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH07CisgICAgfQorCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvZml4dHVyZS9OdWxsYWJsZUFub255bW91c1ZvbGF0aWxlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy9maXh0dXJlL051bGxhYmxlQW5vbnltb3VzVm9sYXRpbGUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jOTdkZDBiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvZml4dHVyZS9OdWxsYWJsZUFub255bW91c1ZvbGF0aWxlLmphdmEKQEAgLTAsMCArMSwyNiBAQAoraW1wb3J0IGphdmF4LnN3aW5nLio7CisKK2NsYXNzIFRlc3QgeworICAgIHB1YmxpYyB2b2lkIHNldE9iaihPYmplY3Qgb2JqKSB7CisgICAgICAgIHRoaXMub2JqID0gb2JqOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHRlc3QoKSB7CisgICAgICAgIG9iaiA9IG5ldyBPYmplY3QoKTsKKyAgICAgICAgamF2YXguc3dpbmcuU3dpbmdVdGlsaXRpZXMuaW52b2tlTGF0ZXIobmV3IFJ1bm5hYmxlKCkgeworICAgICAgICAgICAgcHVibGljIHZvaWQgcnVuKCkgeworICAgICAgICAgICAgICAgIE9iamVjdCBvID0gb2JqOworICAgICAgICAgICAgICAgIGlmIChvICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJ4Iik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9KTsKKyAgICAgICAgZmluYWwgT2JqZWN0IHUgPSBuZXcgT2JqZWN0KCk7CisgICAgICAgIGlmICg8d2FybmluZyBkZXNjcj0iQ29uZGl0aW9uICd1ICE9IG51bGwnIGlzIGFsd2F5cyAndHJ1ZSciPnUgIT0gbnVsbDwvd2FybmluZz4pIHsKKyAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oInkiKTsKKyAgICAgICAgfQorICAgICAgICBvYmogPSBudWxsOworICAgIH0KKworICAgIHByaXZhdGUgdm9sYXRpbGUgT2JqZWN0IG9iajsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy9maXh0dXJlL051bGxhYmxlQW5vbnltb3VzVm9sYXRpbGVOb3ROdWxsLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy9maXh0dXJlL051bGxhYmxlQW5vbnltb3VzVm9sYXRpbGVOb3ROdWxsLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjVhMGUwMwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RhdGFGbG93L2ZpeHR1cmUvTnVsbGFibGVBbm9ueW1vdXNWb2xhdGlsZU5vdE51bGwuamF2YQpAQCAtMCwwICsxLDI0IEBACitpbXBvcnQgb3JnLmpldGJyYWlucy5hbm5vdGF0aW9ucy5Ob3ROdWxsOworCitpbXBvcnQgamF2YXguc3dpbmcuKjsKKworY2xhc3MgVGVzdCB7CisgICAgcHVibGljIHZvaWQgc2V0T2JqKE9iamVjdCBvYmopIHsKKyAgICAgICAgdGhpcy5vYmogPSBvYmo7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgdGVzdCgpIHsKKyAgICAgICAgb2JqID0gbmV3IE9iamVjdCgpOworICAgICAgICBTd2luZ1V0aWxpdGllcy5pbnZva2VMYXRlcihuZXcgUnVubmFibGUoKSB7CisgICAgICAgICAgICBwdWJsaWMgdm9pZCBydW4oKSB7CisgICAgICAgICAgICAgICAgT2JqZWN0IG8gPSBvYmo7CisgICAgICAgICAgICAgICAgaWYgKDx3YXJuaW5nIGRlc2NyPSJDb25kaXRpb24gJ28gIT0gbnVsbCcgaXMgYWx3YXlzICd0cnVlJyI+byAhPSBudWxsPC93YXJuaW5nPikgeworICAgICAgICAgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIngiKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0pOworICAgICAgb2JqID0gPHdhcm5pbmcgZGVzY3I9IidudWxsJyBpcyBhc3NpZ25lZCB0byBhIHZhcmlhYmxlIHRoYXQgaXMgYW5ub3RhdGVkIHdpdGggQE5vdE51bGwiPm51bGw8L3dhcm5pbmc+OworICAgIH0KKworICAgIEBOb3ROdWxsIHByaXZhdGUgdm9sYXRpbGUgT2JqZWN0IG9iajsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy9maXh0dXJlL051bGxhYmxlRmllbGQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RhdGFGbG93L2ZpeHR1cmUvTnVsbGFibGVGaWVsZC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBhMzQxZDMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy9maXh0dXJlL051bGxhYmxlRmllbGQuamF2YQpAQCAtMCwwICsxLDkgQEAKK2ltcG9ydCBvcmcuamV0YnJhaW5zLmFubm90YXRpb25zLk51bGxhYmxlOworCitwdWJsaWMgY2xhc3MgREREIHsKKyAgQE51bGxhYmxlCisgIFN0cmluZyBmaWVsZDsKKyAgaW50IHRlc3QoKSB7CisgICAgcmV0dXJuIDx3YXJuaW5nIGRlc2NyPSJNZXRob2QgaW52b2NhdGlvbiAnbmV3IERERCgpLmZpZWxkLmhhc2hDb2RlKCknIG1heSBwcm9kdWNlICdqYXZhLmxhbmcuTnVsbFBvaW50ZXJFeGNlcHRpb24nIj5uZXcgREREKCkuZmllbGQuaGFzaENvZGUoKTwvd2FybmluZz47CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RhdGFGbG93L2ZpeHR1cmUvTnVsbGFibGVGb3JlYWNoVmFyaWFibGUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RhdGFGbG93L2ZpeHR1cmUvTnVsbGFibGVGb3JlYWNoVmFyaWFibGUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZmExYzY0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvZml4dHVyZS9OdWxsYWJsZUZvcmVhY2hWYXJpYWJsZS5qYXZhCkBAIC0wLDAgKzEsMjAgQEAKK2ltcG9ydCBmb28uTnVsbGFibGU7CisKK2ltcG9ydCBqYXZhLnV0aWwuQXJyYXlMaXN0OworaW1wb3J0IGphdmEudXRpbC5MaXN0OworCitwdWJsaWMgY2xhc3MgRm9vIHsKKyAgdm9pZCBmb28xKExpc3Q8SW50ZWdlcj4gbGlzdCkgeworICAgIGZvciAoQE51bGxhYmxlIEludGVnZXIgaSA6IGxpc3QpIHsKKyAgICAgIFN5c3RlbS5vdXQucHJpbnRsbig8d2FybmluZyBkZXNjcj0iTWV0aG9kIGludm9jYXRpb24gJ2kuaW50VmFsdWUoKScgbWF5IHByb2R1Y2UgJ2phdmEubGFuZy5OdWxsUG9pbnRlckV4Y2VwdGlvbiciPmkuaW50VmFsdWUoKTwvd2FybmluZz4pOworICAgIH0KKyAgfQorICB2b2lkIGZvbzIoTGlzdDxATnVsbGFibGUgSW50ZWdlcj4gbGlzdCkgeworICAgIGZvciAoQE51bGxhYmxlIEludGVnZXIgaSA6IGxpc3QpIHsKKyAgICAgIFN5c3RlbS5vdXQucHJpbnRsbig8d2FybmluZyBkZXNjcj0iTWV0aG9kIGludm9jYXRpb24gJ2kuaW50VmFsdWUoKScgbWF5IHByb2R1Y2UgJ2phdmEubGFuZy5OdWxsUG9pbnRlckV4Y2VwdGlvbiciPmkuaW50VmFsdWUoKTwvd2FybmluZz4pOworICAgIH0KKyAgfQorCit9CisKKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvZml4dHVyZS9QYXNzaW5nTnVsbGFibGVJbnRvVmFyYXJnLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy9maXh0dXJlL1Bhc3NpbmdOdWxsYWJsZUludG9WYXJhcmcuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYjc0NmFmOAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RhdGFGbG93L2ZpeHR1cmUvUGFzc2luZ051bGxhYmxlSW50b1ZhcmFyZy5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKK2ltcG9ydCBvcmcuamV0YnJhaW5zLmFubm90YXRpb25zLk5vdE51bGw7CisKK2NsYXNzIFRlc3QgeworICBwdWJsaWMgc3RhdGljIHZvaWQgdGVzdChATm90TnVsbCBPYmplY3QuLi4gb2JqZWN0cykgeyB9CisKKyAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgeworICAgIE9iamVjdCBvID0gbnVsbDsKKyAgICB0ZXN0KG8pOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvZml4dHVyZS9QcmVzZXJ2ZU51bGxhYmxlT25VbmNoZWNrZWRDYXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy9maXh0dXJlL1ByZXNlcnZlTnVsbGFibGVPblVuY2hlY2tlZENhc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMDYzZDEyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvZml4dHVyZS9QcmVzZXJ2ZU51bGxhYmxlT25VbmNoZWNrZWRDYXN0LmphdmEKQEAgLTAsMCArMSwxNiBAQAoraW1wb3J0IG9yZy5qZXRicmFpbnMuYW5ub3RhdGlvbnMuTm90TnVsbDsKKworaW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7CitpbXBvcnQgamF2YS51dGlsLkNvbGxlY3Rpb247CitpbXBvcnQgamF2YS51dGlsLkxpc3Q7CisKK3B1YmxpYyBjbGFzcyBCcm9rZW5BbGlnbm1lbnQgeworICB2b2lkIHQoKSB7CisgICAgQE5vdE51bGwgQ29sbGVjdGlvbiBsaXN0ID0gbmV3IEFycmF5TGlzdCgpOworICAgIExpc3Q8U3RyaW5nPiBzdHJpbmdzID0gKExpc3Q8U3RyaW5nPikgbGlzdDsKKyAgICBpZiAoPHdhcm5pbmcgZGVzY3I9IkNvbmRpdGlvbiAnc3RyaW5ncyAhPSBudWxsJyBpcyBhbHdheXMgJ3RydWUnIj5zdHJpbmdzICE9IG51bGw8L3dhcm5pbmc+KSB7CisgICAgICBpbnQgZm9vID0gNDI7CisgICAgfQorICB9CisKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy9maXh0dXJlL1JldHVybmluZ051bGxGcm9tVm9pZE1ldGhvZC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvZml4dHVyZS9SZXR1cm5pbmdOdWxsRnJvbVZvaWRNZXRob2QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNTQ0YmYxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvZml4dHVyZS9SZXR1cm5pbmdOdWxsRnJvbVZvaWRNZXRob2QuamF2YQpAQCAtMCwwICsxLDYgQEAKK3B1YmxpYyBjbGFzcyBCcm9rZW5BbGlnbm1lbnQgeworCisgIFZvaWQgdGVzdCgpIHsKKyAgICByZXR1cm4gbnVsbDsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RhdGFGbG93L2ZpeHR1cmUvU2tpcEFzc2VydGlvbnMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RhdGFGbG93L2ZpeHR1cmUvU2tpcEFzc2VydGlvbnMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ODZmZGNiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvZml4dHVyZS9Ta2lwQXNzZXJ0aW9ucy5qYXZhCkBAIC0wLDAgKzEsMjEgQEAKK2ltcG9ydCBvcmcuamV0YnJhaW5zLmFubm90YXRpb25zLk5vdE51bGw7CisKK2NsYXNzIFRlc3QgeworICBwcml2YXRlIHN0YXRpYyB2b2lkIHRlc3QoQE5vdE51bGwgT2JqZWN0IGZvbykgeworICAgIGFzc2VydCBmb28gIT0gbnVsbDsKKyAgfQorCisgIHByaXZhdGUgc3RhdGljIHZvaWQgdGVzdDIoQE5vdE51bGwgT2JqZWN0IGZvbykgeworICAgIGlmIChmb28gPT0gbnVsbCkgeworICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigpOworICAgIH0KKyAgfQorICBwcml2YXRlIHN0YXRpYyB2b2lkIHRlc3QzKEBOb3ROdWxsIE9iamVjdCBmb28pIHsKKyAgICBpZiAoZm9vID09IG51bGwpIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oKTsKKyAgfQorCisgIHByaXZhdGUgc3RhdGljIHZvaWQgdGVzdDQoQE5vdE51bGwgT2JqZWN0IGZvbykgeworICAgIGlmICg8d2FybmluZyBkZXNjcj0iQ29uZGl0aW9uICdmb28gIT0gbnVsbCcgaXMgYWx3YXlzICd0cnVlJyI+Zm9vICE9IG51bGw8L3dhcm5pbmc+KSB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCk7CisgIH0KKworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RhdGFGbG93L2ZpeHR1cmUvU3RyaW5nVGVybmFyeUFsd2F5c1RydWUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RhdGFGbG93L2ZpeHR1cmUvU3RyaW5nVGVybmFyeUFsd2F5c1RydWUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MzI1NWQ5YQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RhdGFGbG93L2ZpeHR1cmUvU3RyaW5nVGVybmFyeUFsd2F5c1RydWUuamF2YQpAQCAtMCwwICsxLDEyIEBACitjbGFzcyBGb28geworICBwdWJsaWMgdm9pZCBmb28oKSB7CisgICAgZmluYWwgYm9vbGVhbiBmbGFnID0gdHJ1ZTsKKworICAgIGJhcig8d2FybmluZyBkZXNjcj0iQ29uZGl0aW9uICdmbGFnJyBpcyBhbHdheXMgJ3RydWUnIj5mbGFnPC93YXJuaW5nPiA/ICJhIiA6ICJiIiwKKyAgICAgIDx3YXJuaW5nIGRlc2NyPSJDb25kaXRpb24gJ2ZsYWcnIGlzIGFsd2F5cyAndHJ1ZSciPmZsYWc8L3dhcm5pbmc+ID8gbmV3IFN0cmluZ1tdeyJhYSJ9IDogbmV3IFN0cmluZ1tdeyJiYiJ9CisgICAgKTsKKyAgfQorCisgIHZvaWQgYmFyKFN0cmluZyBiLCBTdHJpbmdbXSBhKSB7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy9maXh0dXJlL1N5bW1ldHJpY1VuY2hlY2tlZENhc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RhdGFGbG93L2ZpeHR1cmUvU3ltbWV0cmljVW5jaGVja2VkQ2FzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhjMTA4N2IKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy9maXh0dXJlL1N5bW1ldHJpY1VuY2hlY2tlZENhc3QuamF2YQpAQCAtMCwwICsxLDIyIEBACitpbXBvcnQgamF2YS51dGlsLkRhdGU7CisKK3B1YmxpYyBjbGFzcyBEYXRhRmxvd0J1ZyB7CisKKyAgcHJpdmF0ZSBzdGF0aWMgYm9vbGVhbiBpc051bWJlcmFibGUoT2JqZWN0IG8pIHsKKyAgICByZXR1cm4gbyBpbnN0YW5jZW9mIE51bWJlcjsKKyAgfQorCisgIHB1YmxpYyBPYmplY3QgYWRkKE9iamVjdCBsZWZ0LCBPYmplY3QgcmlnaHQpIHsKKyAgICBpZiAobGVmdCAhPSBudWxsICYmIHJpZ2h0ICE9IG51bGwgJiYgKGxlZnQgaW5zdGFuY2VvZiBEYXRlIHx8IHJpZ2h0IGluc3RhbmNlb2YgRGF0ZSkpIHsKKyAgICAgIGlmIChpc051bWJlcmFibGUobGVmdCkpIHsKKyAgICAgICAgcmV0dXJuICgoPHdhcm5pbmcgZGVzY3I9IkNhc3RpbmcgJ3JpZ2h0JyB0byAnRGF0ZScgbWF5IHByb2R1Y2UgJ2phdmEubGFuZy5DbGFzc0Nhc3RFeGNlcHRpb24nIj5EYXRlPC93YXJuaW5nPikgcmlnaHQpLmdldFRpbWUoKTsKKyAgICAgIH0KKworICAgICAgaWYgKGlzTnVtYmVyYWJsZShyaWdodCkpIHsKKyAgICAgICAgcmV0dXJuICgoPHdhcm5pbmcgZGVzY3I9IkNhc3RpbmcgJ2xlZnQnIHRvICdEYXRlJyBtYXkgcHJvZHVjZSAnamF2YS5sYW5nLkNsYXNzQ2FzdEV4Y2VwdGlvbiciPkRhdGU8L3dhcm5pbmc+KSBsZWZ0KS5nZXRUaW1lKCk7CisgICAgICB9CisgICAgfQorICAgIHJldHVybiBuZXcgT2JqZWN0KCk7CisgIH0KKworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RhdGFGbG93L2ZpeHR1cmUvU3luY2hyb25pemluZ09uTnVsbGFibGUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RhdGFGbG93L2ZpeHR1cmUvU3luY2hyb25pemluZ09uTnVsbGFibGUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43YTgzZGY2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvZml4dHVyZS9TeW5jaHJvbml6aW5nT25OdWxsYWJsZS5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKK2ltcG9ydCBvcmcuamV0YnJhaW5zLmFubm90YXRpb25zLk51bGxhYmxlOworCitwdWJsaWMgY2xhc3MgQnJva2VuQWxpZ25tZW50IHsKKworICB2b2lkIHRlc3QoQE51bGxhYmxlIE9iamVjdCBuKSB7CisgICAgc3luY2hyb25pemVkICg8d2FybmluZyBkZXNjcj0iRGVyZWZlcmVuY2Ugb2YgJ24nIG1heSBwcm9kdWNlICdqYXZhLmxhbmcuTnVsbFBvaW50ZXJFeGNlcHRpb24nIj5uPC93YXJuaW5nPikgeworCisgICAgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvZml4dHVyZS9UZXJuYXJ5SW5XaGlsZU5vdENvbXBsZXguamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RhdGFGbG93L2ZpeHR1cmUvVGVybmFyeUluV2hpbGVOb3RDb21wbGV4LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTFiMmFmZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RhdGFGbG93L2ZpeHR1cmUvVGVybmFyeUluV2hpbGVOb3RDb21wbGV4LmphdmEKQEAgLTAsMCArMSwyNSBAQAoraW1wb3J0IGphdmEudXRpbC5MaXN0OworCitwdWJsaWMgY2xhc3MgRm9vIHsKKyAgcHVibGljIHZvaWQgbWF0Y2hBZnRlckZyYWdtZW50KGludCBwYXR0ZXJuSW5kZXgsIGludCBtYXRjaExlbikgeworICAgIGludCBzdGFyID0gcGF0dGVybkluZGV4IDwgbWF0Y2hMZW4gPyBtYXRjaExlbiA6IC0xOworICAgIHdoaWxlIChtYXRjaExlbiA+IDApIHsKKyAgICAgIGludCBpID0gbWF0Y2hMZW4gPT0gc3RhciA/IG1hdGNoTGVuIDogc3RhcjsKKyAgICB9CisgIH0KKworICBwdWJsaWMgdm9pZCBtYXRjaEFmdGVyRnJhZ21lbnRCb3hlZChJbnRlZ2VyIHBhdHRlcm5JbmRleCwgSW50ZWdlciBtYXRjaExlbikgeworICAgIEludGVnZXIgc3RhciA9IHBhdHRlcm5JbmRleCA8IG1hdGNoTGVuID8gbWF0Y2hMZW4gOiAtMTsKKyAgICB3aGlsZSAobWF0Y2hMZW4gPiAwKSB7CisgICAgICBJbnRlZ2VyIGkgPSBtYXRjaExlbiA9PSBzdGFyID8gbWF0Y2hMZW4gOiBzdGFyOworICAgIH0KKyAgfQorCisgIHB1YmxpYyB2b2lkIG1hdGNoQWZ0ZXJGcmFnbWVudFNlbWlCb3hlZChJbnRlZ2VyIHBhdHRlcm5JbmRleCwgSW50ZWdlciBtYXRjaExlbikgeworICAgIGludCBzdGFyID0gcGF0dGVybkluZGV4IDwgbWF0Y2hMZW4gPyBtYXRjaExlbiA6IC0xOworICAgIHdoaWxlIChtYXRjaExlbiA+IDApIHsKKyAgICAgIEludGVnZXIgaSA9IG1hdGNoTGVuID09IHN0YXIgPyBtYXRjaExlbiA6IHN0YXI7CisgICAgfQorICB9CisKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RhdGFGbG93L2ZpeHR1cmUvVGhpc0ZpZWxkR2V0dGVycy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvZml4dHVyZS9UaGlzRmllbGRHZXR0ZXJzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzczMmIxOAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RhdGFGbG93L2ZpeHR1cmUvVGhpc0ZpZWxkR2V0dGVycy5qYXZhCkBAIC0wLDAgKzEsMjMgQEAKK2NsYXNzIFRlc3QgeworCisgIHByaXZhdGUgaW50IGNvdW50MTsKKyAgcHJpdmF0ZSBpbnQgY291bnQyOworCisgIHB1YmxpYyB2b2lkIHRlc3QoKSB7CisgICAgaW50IG9sZENvdW50MSA9IGdldENvdW50MSgpOworICAgIGludCBvbGRDb3VudDIgPSBnZXRDb3VudDIoKTsKKyAgICBjb3VudDErKzsKKyAgICBpZiAob2xkQ291bnQxICE9IGdldENvdW50MSgpIHx8IG9sZENvdW50MiAhPSBnZXRDb3VudDIoKSkgeworICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJjaGFuZ2VkIik7CisgICAgfQorICB9CisKKyAgcHJpdmF0ZSBpbnQgZ2V0Q291bnQxKCkgeworICAgIHJldHVybiBjb3VudDE7CisgIH0KKworICBwcml2YXRlIGludCBnZXRDb3VudDIoKSB7CisgICAgcmV0dXJuIGNvdW50MjsKKyAgfQorCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvZml4dHVyZS9UcmFuc2llbnRGaW5hbEZpZWxkLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy9maXh0dXJlL1RyYW5zaWVudEZpbmFsRmllbGQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMmJlNzdkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvZml4dHVyZS9UcmFuc2llbnRGaW5hbEZpZWxkLmphdmEKQEAgLTAsMCArMSwxMSBAQAorZmluYWwgY2xhc3MgQWxpdmUgaW1wbGVtZW50cyBqYXZhLmlvLlNlcmlhbGl6YWJsZSB7CisgIHByaXZhdGUgdHJhbnNpZW50IGZpbmFsIE9iamVjdCBlbHZpcyA9IG5ldyBPYmplY3QoKTsKKyAgQE92ZXJyaWRlCisgIHB1YmxpYyBTdHJpbmcgdG9TdHJpbmcoKSB7CisgICAgaWYgKGVsdmlzICE9IG51bGwpIHsKKyAgICAgIHJldHVybiAidWgtaHVoLWh1aCI7CisgICAgfSBlbHNlIHsKKyAgICAgIHJldHVybiAidGhlIGtpbmcgaXMgZGVhZCI7CisgICAgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvZml4dHVyZS9UcnlDYXRjaEluRm9yTm90Q29tcGxleC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvZml4dHVyZS9UcnlDYXRjaEluRm9yTm90Q29tcGxleC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkwOTc0OTEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy9maXh0dXJlL1RyeUNhdGNoSW5Gb3JOb3RDb21wbGV4LmphdmEKQEAgLTAsMCArMSwxMiBAQAorcHVibGljIGNsYXNzIEJhciB7CisgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKKyAgICBmb3IgKFN0cmluZyBzIDogYXJncykgeworICAgICAgdHJ5IHsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKHMpOworICAgICAgfQorICAgICAgY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihlKTsKKyAgICAgIH0KKyAgICB9CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RhdGFGbG93L2ZpeHR1cmUvVHJ5SW5Bbm9ueW1vdXMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RhdGFGbG93L2ZpeHR1cmUvVHJ5SW5Bbm9ueW1vdXMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNjFkNWNkNAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RhdGFGbG93L2ZpeHR1cmUvVHJ5SW5Bbm9ueW1vdXMuamF2YQpAQCAtMCwwICsxLDIxIEBACitwdWJsaWMgY2xhc3MgQmFyIHsKKworICAgIHZvaWQgc3VibWl0KFJ1bm5hYmxlIHIpIHsgfQorICAgIFN0cmluZ1tdIGZvb3MoKSB7IHJldHVybiBuZXcgU3RyaW5nWzBdOyB9CisKKyAgICB2b2lkIG5hdmlnYXRlVG8oKSB7CisgICAgICAgIHN1Ym1pdChuZXcgUnVubmFibGUoKSB7CisgICAgICAgICAgICBwdWJsaWMgdm9pZCBydW4oKSB7CisgICAgICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICAgICAgZm9yIChPYmplY3QgbmV4dCA6IGZvb3MoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG5leHQgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGNhdGNoIChUaHJvd2FibGUgdGgpIHsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0pOworICAgIH0KKworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvZml4dHVyZS9Vbmtub3duRmxvYXRNYXlCZU5hTi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvZml4dHVyZS9Vbmtub3duRmxvYXRNYXlCZU5hTi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFjMjllYmMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy9maXh0dXJlL1Vua25vd25GbG9hdE1heUJlTmFOLmphdmEKQEAgLTAsMCArMSwxNSBAQAorY2xhc3MgRnVuIHsKKyAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgZmxvYXQgZjEgPSBGbG9hdC5wYXJzZUZsb2F0KCJOYU4iKTsKKyAgICBpZiAoZjEgPT0gZjEpIHsKKyAgICAgIFN5c3RlbS5lcnIucHJpbnRsbigiRUxWSVMgTElWRVMhIik7CisgICAgfQorICAgIGZsb2F0IGYyID0gRmxvYXQuTmFOOworICAgIC8vIFdhcm5pbmc6ICBDb25kaXRpb24gJ2YyID09IGYyJyBpcyBhbHdheXMgJ2ZhbHNlJworICAgIC8vIENvcnJlY3QsIGJ1dCBpZiB5b3UgZXh0cmFjdCB0aGUgYXNzaWdubWVudCB0byBhIG1ldGhvZCB0aGUgaW5zcGVjdGlvbiBmbGlwcworICAgIGlmICg8d2FybmluZyBkZXNjcj0iQ29uZGl0aW9uICdmMiA9PSBmMicgaXMgYWx3YXlzICdmYWxzZSciPmYyID09IGYyPC93YXJuaW5nPikgeworICAgICAgU3lzdGVtLmVyci5wcmludGxuKCJFTFZJUyBMSVZFUyEiKTsKKyAgICB9CisgIH0KKworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RhdGFGbG93L2ZpeHR1cmUvVmlzaXRGaW5hbGx5T25jZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvZml4dHVyZS9WaXNpdEZpbmFsbHlPbmNlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2U3MGViNwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RhdGFGbG93L2ZpeHR1cmUvVmlzaXRGaW5hbGx5T25jZS5qYXZhCkBAIC0wLDAgKzEsMzkgQEAKK2ltcG9ydCBqYXZhLmlvLklPRXhjZXB0aW9uOworCitjbGFzcyBUZXN0SURFQVdhcm4geworICBwcml2YXRlIENvbm5lY3Rpb24gX2Nvbm5lY3Rpb247CisKKyAgcHVibGljIHZvaWQgd2FybigpIHRocm93cyBJT0V4Y2VwdGlvbiB7CisgICAgdHJ5IHsKKyAgICAgIGlmIChfY29ubmVjdGlvbiAhPSBudWxsKSB7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgX2Nvbm5lY3Rpb24uY29tbWl0KCk7CisgICAgICAgIH0gZmluYWxseSB7CisgICAgICAgICAgX2Nvbm5lY3Rpb24uY2xvc2UoKTsKKyAgICAgICAgICBfY29ubmVjdGlvbiA9IG51bGw7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9IGNhdGNoIChJT0V4Y2VwdGlvbiBlKSB7CisgICAgICB0aHJvdyBuZXcgUnVudGltZUV4Y2VwdGlvbihlKTsKKyAgICB9CisgIH0KKworICBwdWJsaWMgdm9pZCB3YXJuMigpIHRocm93cyBJT0V4Y2VwdGlvbiB7CisgICAgaWYgKF9jb25uZWN0aW9uID09IG51bGwpIHJldHVybjsKKyAgICB0cnkgeworICAgICAgdHJ5IHsKKyAgICAgICAgX2Nvbm5lY3Rpb24uY29tbWl0KCk7CisgICAgICB9IGZpbmFsbHkgeworICAgICAgICBfY29ubmVjdGlvbi5jbG9zZSgpOworICAgICAgICBfY29ubmVjdGlvbiA9IG51bGw7CisgICAgICB9CisgICAgfSBjYXRjaCAoSU9FeGNlcHRpb24gZSkgeworICAgICAgdGhyb3cgbmV3IFJ1bnRpbWVFeGNlcHRpb24oZSk7CisgICAgfQorICB9CisKKyAgaW50ZXJmYWNlIENvbm5lY3Rpb24geworICAgIHZvaWQgY29tbWl0KCkgdGhyb3dzIElPRXhjZXB0aW9uOworICAgIHZvaWQgY2xvc2UoKSB0aHJvd3MgSU9FeGNlcHRpb247CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RhdGFGbG93L2luc3QvZXhwZWN0ZWQueG1sIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvaW5zdC9leHBlY3RlZC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDkwYWE1MgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RhdGFGbG93L2luc3QvZXhwZWN0ZWQueG1sCkBAIC0wLDAgKzEsOSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxwcm9ibGVtcz4KKyAgPHByb2JsZW0+CisgICAgPGZpbGU+SW5zdC5qYXZhPC9maWxlPgorICAgIDxsaW5lPjE2PC9saW5lPgorICAgIDxkZXNjcmlwdGlvbj5Db25kaXRpb24gJ2EgaW5zdGFuY2VvZiBBJyBpcyBhbHdheXMgdHJ1ZTwvZGVzY3JpcHRpb24+CisgIDwvcHJvYmxlbT4KKzwvcHJvYmxlbXM+CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RhdGFGbG93L2luc3Qvc3JjL0luc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RhdGFGbG93L2luc3Qvc3JjL0luc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYmU1ZmNmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvaW5zdC9zcmMvSW5zdC5qYXZhCkBAIC0wLDAgKzEsMjcgQEAKK2NsYXNzIEEgeworCit9CisKK2NsYXNzIEIgZXh0ZW5kcyBBIHsKKworfQorCitwdWJsaWMgY2xhc3MgSW5zdCB7CisgICAgcHVibGljIHZvaWQgeCgpIHsKKyAgICAgICAgT2JqZWN0IGEgPSBuZXcgT2JqZWN0KCk7CisKKworICAgICAgICBpZiAoYSBpbnN0YW5jZW9mIEIpIHsKKyAgICAgICAgICAgIEEgYWEgPShBKSBhOworICAgICAgICAgICAgaWYgKGEgaW5zdGFuY2VvZiBBKSB7CisgICAgICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJIZUhlIik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oYWEpOworICAgICAgICB9CisgICAgfQorCisgICAgcHVibGljIHZvaWQgeShPYmplY3QgYSkgeworICAgICAgICBpZiAoYSBpbnN0YW5jZW9mIEEpIHt9CisgICAgICAgIGlmIChhIGluc3RhbmNlb2YgQikge30KKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy9ucGUxL2V4cGVjdGVkLnhtbCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RhdGFGbG93L25wZTEvZXhwZWN0ZWQueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVjODlmMTMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy9ucGUxL2V4cGVjdGVkLnhtbApAQCAtMCwwICsxLDkgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8cHJvYmxlbXM+CisgIDxwcm9ibGVtPgorICAgIDxmaWxlPk5wZS5qYXZhPC9maWxlPgorICAgIDxsaW5lPjc8L2xpbmU+CisgICAgPGRlc2NyaXB0aW9uPk1ldGhvZCBpbnZvY2F0aW9uICdvLmVxdWFscygpJyBwcm9kdWNlIE51bGxQb2ludGVyRXhjZXB0aW9uPC9kZXNjcmlwdGlvbj4KKyAgPC9wcm9ibGVtPgorPC9wcm9ibGVtcz4KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvbnBlMS9zcmMvTnBlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy9ucGUxL3NyYy9OcGUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMDE1MmUwNQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RhdGFGbG93L25wZTEvc3JjL05wZS5qYXZhCkBAIC0wLDAgKzEsOSBAQAorcHVibGljIGNsYXNzIE5wZSB7CisgIHB1YmxpYyB2b2lkIGEoT2JqZWN0IG8pIHsKKyAgICBpZiAobyAhPSBudWxsKSB7CisgICAgICAvLyBEbyBzb21ldGhpbmcKKyAgICB9CisKKyAgICBvLmVxdWFscygpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvbnVsbGFibGVGaWVsZC9leHBlY3RlZC54bWwgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy9udWxsYWJsZUZpZWxkL2V4cGVjdGVkLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NTVjY2IxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvbnVsbGFibGVGaWVsZC9leHBlY3RlZC54bWwKQEAgLTAsMCArMSw5IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPHByb2JsZW1zPgorICA8cHJvYmxlbT4KKyAgICA8ZmlsZT5UZXN0LmphdmE8L2ZpbGU+CisgICAgPGxpbmU+NjwvbGluZT4KKyAgICA8ZGVzY3JpcHRpb24+J3MuZXF1YWxzKHMpJyBtYXkgcHJvZHVjZSBOdWxsUG9pbnRlckV4Y2VwdGlvbjwvZGVzY3JpcHRpb24+CisgIDwvcHJvYmxlbT4KKzwvcHJvYmxlbXM+CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RhdGFGbG93L251bGxhYmxlRmllbGQvc3JjL1Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RhdGFGbG93L251bGxhYmxlRmllbGQvc3JjL1Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZGMwZGJlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvbnVsbGFibGVGaWVsZC9zcmMvVGVzdC5qYXZhCkBAIC0wLDAgKzEsOCBAQAorcHVibGljIGNsYXNzIFRlc3QgeworICBwdWJsaWMgU3RyaW5nIHM7CisKKyAgcHVibGljIHZvaWQgZm9vKCkgeworICAgICBzID0gbnVsbDsKKyAgICAgYm9vbGVhbiBiID0gcy5lcXVhbHMocyk7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy9vckJ1Zy9leHBlY3RlZC54bWwgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy9vckJ1Zy9leHBlY3RlZC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWMyNzJhYgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RhdGFGbG93L29yQnVnL2V4cGVjdGVkLnhtbApAQCAtMCwwICsxLDMgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8cHJvYmxlbXMvPgorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy9vckJ1Zy9zcmMvVGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvb3JCdWcvc3JjL1Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iODllMjRkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvb3JCdWcvc3JjL1Rlc3QuamF2YQpAQCAtMCwwICsxLDggQEAKK3B1YmxpYyBjbGFzcyBUZXN0IHsKKyAgcHVibGljIGJvb2xlYW4gYWJjKE9iamVjdCBvMSwgT2JqZWN0IG8yKSB7CisgICAgaWYgKG8xID09IG51bGwgfHwgbzIgPT0gbnVsbCkgeworICAgICAgcmV0dXJuIG8xID09IG8yOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy9zY3JJREVBMS9leHBlY3RlZC54bWwgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy9zY3JJREVBMS9leHBlY3RlZC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDk1M2RkNwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RhdGFGbG93L3NjcklERUExL2V4cGVjdGVkLnhtbApAQCAtMCwwICsxLDIgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8cHJvYmxlbXMgLz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy9zY3JJREVBMS9zcmMvVGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvc2NySURFQTEvc3JjL1Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZDQ0NGE5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvc2NySURFQTEvc3JjL1Rlc3QuamF2YQpAQCAtMCwwICsxLDE2IEBACitpbXBvcnQgamF2YS5pby5GaWxlT3V0cHV0U3RyZWFtOworCitjbGFzcyBUZXN0IHsKKyAgICBzdGF0aWMgdm9pZCBmb28oKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgICAgRmlsZU91dHB1dFN0cmVhbSBmb3MgPSBudWxsOworCisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBmb3MgPSBuZXcgRmlsZU91dHB1dFN0cmVhbSgiYzpcXG15ZmlsZSIpOworICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZXgpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oIk9oLCBkZWFyIG1lLiIsIGV4KTsKKyAgICAgICAgfSBmaW5hbGx5IHsKKyAgICAgICAgICAgIGlmIChmb3MgIT0gbnVsbCkgeworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvdGhpc0luc3RhbmNlb2YvZXhwZWN0ZWQueG1sIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cvdGhpc0luc3RhbmNlb2YvZXhwZWN0ZWQueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZmNmY0OTYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy90aGlzSW5zdGFuY2VvZi9leHBlY3RlZC54bWwKQEAgLTAsMCArMSw4IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPHByb2JsZW1zPgorICA8cHJvYmxlbT4KKyAgICA8ZmlsZT5UZXN0LmphdmE8L2ZpbGU+CisgICAgPGxpbmU+MzwvbGluZT4KKyAgICA8ZGVzY3JpcHRpb24+J3RoaXMgaW5zdGFuY2VvZiBPYmplY3QnIGlzIGFsd2F5cyB0cnVlPC9kZXNjcmlwdGlvbj4KKyAgPC9wcm9ibGVtPgorPC9wcm9ibGVtcz4KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RhdGFGbG93L3RoaXNJbnN0YW5jZW9mL3NyYy9UZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy90aGlzSW5zdGFuY2VvZi9zcmMvVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM3MmRkNmQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy90aGlzSW5zdGFuY2VvZi9zcmMvVGVzdC5qYXZhCkBAIC0wLDAgKzEsNSBAQAorcHVibGljIGNsYXNzIFRlc3QgeworICAgcHVibGljIHZvaWQgZm9vKCkgeworICAgICAgYm9vbGVhbiBiID0gdGhpcyBpbnN0YW5jZW9mIE9iamVjdDsKKyAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy91bmJveGluZ05QRS9leHBlY3RlZC54bWwgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy91bmJveGluZ05QRS9leHBlY3RlZC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDAwMTY4ZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RhdGFGbG93L3VuYm94aW5nTlBFL2V4cGVjdGVkLnhtbApAQCAtMCwwICsxLDM4NyBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxwcm9ibGVtcz4KKzxwcm9ibGVtPgorICA8ZmlsZT5UZXN0LmphdmE8L2ZpbGU+CisgIDxsaW5lPjk1PC9saW5lPgorICA8bWV0aG9kPgorICAgIDxuYW1lPmludCBmKGludCBrKTwvbmFtZT4KKyAgICA8ZGlzcGxheV9uYW1lPmYoaW50KTwvZGlzcGxheV9uYW1lPgorICAgIDxwYWNrYWdlPiZsdDtkZWZhdWx0Jmd0OzwvcGFja2FnZT4KKyAgICA8Y2xhc3M+CisgICAgICA8bmFtZT5BdXRvPC9uYW1lPgorICAgICAgPGRpc3BsYXlfbmFtZT5BdXRvPC9kaXNwbGF5X25hbWU+CisgICAgPC9jbGFzcz4KKyAgPC9tZXRob2Q+CisgIDxwcm9ibGVtX2NsYXNzPkNvbnN0YW50IGNvbmRpdGlvbnMgJmFtcDsgZXhjZXB0aW9uczwvcHJvYmxlbV9jbGFzcz4KKyAgPGRlc2NyaXB0aW9uPlVuYm94aW5nIG9mICZsdDtjb2RlJmd0O2kmbHQ7L2NvZGUmZ3Q7IG1heSBwcm9kdWNlICZsdDtjb2RlJmd0O2phdmEubGFuZy5OdWxsUG9pbnRlckV4Y2VwdGlvbiZsdDsvY29kZSZndDsuPC9kZXNjcmlwdGlvbj4KKzwvcHJvYmxlbT4KKworCisKKzxwcm9ibGVtPgorICA8ZmlsZT5UZXN0LmphdmE8L2ZpbGU+CisgIDxsaW5lPjkxPC9saW5lPgorICA8bWV0aG9kPgorICAgIDxuYW1lPmludCBmKGludCBrKTwvbmFtZT4KKyAgICA8ZGlzcGxheV9uYW1lPmYoaW50KTwvZGlzcGxheV9uYW1lPgorICAgIDxwYWNrYWdlPiZsdDtkZWZhdWx0Jmd0OzwvcGFja2FnZT4KKyAgICA8Y2xhc3M+CisgICAgICA8bmFtZT5BdXRvPC9uYW1lPgorICAgICAgPGRpc3BsYXlfbmFtZT5BdXRvPC9kaXNwbGF5X25hbWU+CisgICAgPC9jbGFzcz4KKyAgPC9tZXRob2Q+CisgIDxwcm9ibGVtX2NsYXNzPkNvbnN0YW50IGNvbmRpdGlvbnMgJmFtcDsgZXhjZXB0aW9uczwvcHJvYmxlbV9jbGFzcz4KKyAgPGRlc2NyaXB0aW9uPlVuYm94aW5nIG9mICZsdDtjb2RlJmd0O2kmbHQ7L2NvZGUmZ3Q7IG1heSBwcm9kdWNlICZsdDtjb2RlJmd0O2phdmEubGFuZy5OdWxsUG9pbnRlckV4Y2VwdGlvbiZsdDsvY29kZSZndDsuPC9kZXNjcmlwdGlvbj4KKzwvcHJvYmxlbT4KKworCisKKzxwcm9ibGVtPgorICA8ZmlsZT5UZXN0LmphdmE8L2ZpbGU+CisgIDxsaW5lPjMxPC9saW5lPgorICA8bWV0aG9kPgorICAgIDxuYW1lPmludCBmKGludCBrKTwvbmFtZT4KKyAgICA8ZGlzcGxheV9uYW1lPmYoaW50KTwvZGlzcGxheV9uYW1lPgorICAgIDxwYWNrYWdlPiZsdDtkZWZhdWx0Jmd0OzwvcGFja2FnZT4KKyAgICA8Y2xhc3M+CisgICAgICA8bmFtZT5BdXRvPC9uYW1lPgorICAgICAgPGRpc3BsYXlfbmFtZT5BdXRvPC9kaXNwbGF5X25hbWU+CisgICAgPC9jbGFzcz4KKyAgPC9tZXRob2Q+CisgIDxwcm9ibGVtX2NsYXNzPkNvbnN0YW50IGNvbmRpdGlvbnMgJmFtcDsgZXhjZXB0aW9uczwvcHJvYmxlbV9jbGFzcz4KKyAgPGRlc2NyaXB0aW9uPlVuYm94aW5nIG9mICZsdDtjb2RlJmd0O2kmbHQ7L2NvZGUmZ3Q7IG1heSBwcm9kdWNlICZsdDtjb2RlJmd0O2phdmEubGFuZy5OdWxsUG9pbnRlckV4Y2VwdGlvbiZsdDsvY29kZSZndDsuPC9kZXNjcmlwdGlvbj4KKzwvcHJvYmxlbT4KKworCisKKzxwcm9ibGVtPgorICA8ZmlsZT5UZXN0LmphdmE8L2ZpbGU+CisgIDxsaW5lPjg3PC9saW5lPgorICA8bWV0aG9kPgorICAgIDxuYW1lPmludCBmKGludCBrKTwvbmFtZT4KKyAgICA8ZGlzcGxheV9uYW1lPmYoaW50KTwvZGlzcGxheV9uYW1lPgorICAgIDxwYWNrYWdlPiZsdDtkZWZhdWx0Jmd0OzwvcGFja2FnZT4KKyAgICA8Y2xhc3M+CisgICAgICA8bmFtZT5BdXRvPC9uYW1lPgorICAgICAgPGRpc3BsYXlfbmFtZT5BdXRvPC9kaXNwbGF5X25hbWU+CisgICAgPC9jbGFzcz4KKyAgPC9tZXRob2Q+CisgIDxwcm9ibGVtX2NsYXNzPkNvbnN0YW50IGNvbmRpdGlvbnMgJmFtcDsgZXhjZXB0aW9uczwvcHJvYmxlbV9jbGFzcz4KKyAgPGRlc2NyaXB0aW9uPlVuYm94aW5nIG9mICZsdDtjb2RlJmd0O2kmbHQ7L2NvZGUmZ3Q7IG1heSBwcm9kdWNlICZsdDtjb2RlJmd0O2phdmEubGFuZy5OdWxsUG9pbnRlckV4Y2VwdGlvbiZsdDsvY29kZSZndDsuPC9kZXNjcmlwdGlvbj4KKzwvcHJvYmxlbT4KKworCisKKzxwcm9ibGVtPgorICA8ZmlsZT5UZXN0LmphdmE8L2ZpbGU+CisgIDxsaW5lPjE0PC9saW5lPgorICA8bWV0aG9kPgorICAgIDxuYW1lPmludCBmKGludCBrKTwvbmFtZT4KKyAgICA8ZGlzcGxheV9uYW1lPmYoaW50KTwvZGlzcGxheV9uYW1lPgorICAgIDxwYWNrYWdlPiZsdDtkZWZhdWx0Jmd0OzwvcGFja2FnZT4KKyAgICA8Y2xhc3M+CisgICAgICA8bmFtZT5BdXRvPC9uYW1lPgorICAgICAgPGRpc3BsYXlfbmFtZT5BdXRvPC9kaXNwbGF5X25hbWU+CisgICAgPC9jbGFzcz4KKyAgPC9tZXRob2Q+CisgIDxwcm9ibGVtX2NsYXNzPkNvbnN0YW50IGNvbmRpdGlvbnMgJmFtcDsgZXhjZXB0aW9uczwvcHJvYmxlbV9jbGFzcz4KKyAgPGRlc2NyaXB0aW9uPlVuYm94aW5nIG9mICZsdDtjb2RlJmd0O2kmbHQ7L2NvZGUmZ3Q7IG1heSBwcm9kdWNlICZsdDtjb2RlJmd0O2phdmEubGFuZy5OdWxsUG9pbnRlckV4Y2VwdGlvbiZsdDsvY29kZSZndDsuPC9kZXNjcmlwdGlvbj4KKzwvcHJvYmxlbT4KKworCisKKzxwcm9ibGVtPgorICA8ZmlsZT5UZXN0LmphdmE8L2ZpbGU+CisgIDxsaW5lPjc1PC9saW5lPgorICA8bWV0aG9kPgorICAgIDxuYW1lPmludCBmKGludCBrKTwvbmFtZT4KKyAgICA8ZGlzcGxheV9uYW1lPmYoaW50KTwvZGlzcGxheV9uYW1lPgorICAgIDxwYWNrYWdlPiZsdDtkZWZhdWx0Jmd0OzwvcGFja2FnZT4KKyAgICA8Y2xhc3M+CisgICAgICA8bmFtZT5BdXRvPC9uYW1lPgorICAgICAgPGRpc3BsYXlfbmFtZT5BdXRvPC9kaXNwbGF5X25hbWU+CisgICAgPC9jbGFzcz4KKyAgPC9tZXRob2Q+CisgIDxwcm9ibGVtX2NsYXNzPkNvbnN0YW50IGNvbmRpdGlvbnMgJmFtcDsgZXhjZXB0aW9uczwvcHJvYmxlbV9jbGFzcz4KKyAgPGRlc2NyaXB0aW9uPlVuYm94aW5nIG9mICZsdDtjb2RlJmd0O2kmbHQ7L2NvZGUmZ3Q7IG1heSBwcm9kdWNlICZsdDtjb2RlJmd0O2phdmEubGFuZy5OdWxsUG9pbnRlckV4Y2VwdGlvbiZsdDsvY29kZSZndDsuPC9kZXNjcmlwdGlvbj4KKzwvcHJvYmxlbT4KKworCisKKzxwcm9ibGVtPgorICA8ZmlsZT5UZXN0LmphdmE8L2ZpbGU+CisgIDxsaW5lPjgzPC9saW5lPgorICA8bWV0aG9kPgorICAgIDxuYW1lPmludCBmKGludCBrKTwvbmFtZT4KKyAgICA8ZGlzcGxheV9uYW1lPmYoaW50KTwvZGlzcGxheV9uYW1lPgorICAgIDxwYWNrYWdlPiZsdDtkZWZhdWx0Jmd0OzwvcGFja2FnZT4KKyAgICA8Y2xhc3M+CisgICAgICA8bmFtZT5BdXRvPC9uYW1lPgorICAgICAgPGRpc3BsYXlfbmFtZT5BdXRvPC9kaXNwbGF5X25hbWU+CisgICAgPC9jbGFzcz4KKyAgPC9tZXRob2Q+CisgIDxwcm9ibGVtX2NsYXNzPkNvbnN0YW50IGNvbmRpdGlvbnMgJmFtcDsgZXhjZXB0aW9uczwvcHJvYmxlbV9jbGFzcz4KKyAgPGRlc2NyaXB0aW9uPlVuYm94aW5nIG9mICZsdDtjb2RlJmd0O2kmbHQ7L2NvZGUmZ3Q7IG1heSBwcm9kdWNlICZsdDtjb2RlJmd0O2phdmEubGFuZy5OdWxsUG9pbnRlckV4Y2VwdGlvbiZsdDsvY29kZSZndDsuPC9kZXNjcmlwdGlvbj4KKzwvcHJvYmxlbT4KKworCisKKzxwcm9ibGVtPgorICA8ZmlsZT5UZXN0LmphdmE8L2ZpbGU+CisgIDxsaW5lPjQ1PC9saW5lPgorICA8bWV0aG9kPgorICAgIDxuYW1lPmludCBmKGludCBrKTwvbmFtZT4KKyAgICA8ZGlzcGxheV9uYW1lPmYoaW50KTwvZGlzcGxheV9uYW1lPgorICAgIDxwYWNrYWdlPiZsdDtkZWZhdWx0Jmd0OzwvcGFja2FnZT4KKyAgICA8Y2xhc3M+CisgICAgICA8bmFtZT5BdXRvPC9uYW1lPgorICAgICAgPGRpc3BsYXlfbmFtZT5BdXRvPC9kaXNwbGF5X25hbWU+CisgICAgPC9jbGFzcz4KKyAgPC9tZXRob2Q+CisgIDxwcm9ibGVtX2NsYXNzPkNvbnN0YW50IGNvbmRpdGlvbnMgJmFtcDsgZXhjZXB0aW9uczwvcHJvYmxlbV9jbGFzcz4KKyAgPGRlc2NyaXB0aW9uPlVuYm94aW5nIG9mICZsdDtjb2RlJmd0O2kmbHQ7L2NvZGUmZ3Q7IG1heSBwcm9kdWNlICZsdDtjb2RlJmd0O2phdmEubGFuZy5OdWxsUG9pbnRlckV4Y2VwdGlvbiZsdDsvY29kZSZndDsuPC9kZXNjcmlwdGlvbj4KKzwvcHJvYmxlbT4KKworCisKKzxwcm9ibGVtPgorICA8ZmlsZT5UZXN0LmphdmE8L2ZpbGU+CisgIDxsaW5lPjY3PC9saW5lPgorICA8bWV0aG9kPgorICAgIDxuYW1lPmludCBmKGludCBrKTwvbmFtZT4KKyAgICA8ZGlzcGxheV9uYW1lPmYoaW50KTwvZGlzcGxheV9uYW1lPgorICAgIDxwYWNrYWdlPiZsdDtkZWZhdWx0Jmd0OzwvcGFja2FnZT4KKyAgICA8Y2xhc3M+CisgICAgICA8bmFtZT5BdXRvPC9uYW1lPgorICAgICAgPGRpc3BsYXlfbmFtZT5BdXRvPC9kaXNwbGF5X25hbWU+CisgICAgPC9jbGFzcz4KKyAgPC9tZXRob2Q+CisgIDxwcm9ibGVtX2NsYXNzPkNvbnN0YW50IGNvbmRpdGlvbnMgJmFtcDsgZXhjZXB0aW9uczwvcHJvYmxlbV9jbGFzcz4KKyAgPGRlc2NyaXB0aW9uPlVuYm94aW5nIG9mICZsdDtjb2RlJmd0O2kmbHQ7L2NvZGUmZ3Q7IG1heSBwcm9kdWNlICZsdDtjb2RlJmd0O2phdmEubGFuZy5OdWxsUG9pbnRlckV4Y2VwdGlvbiZsdDsvY29kZSZndDsuPC9kZXNjcmlwdGlvbj4KKzwvcHJvYmxlbT4KKworCisKKzxwcm9ibGVtPgorICA8ZmlsZT5UZXN0LmphdmE8L2ZpbGU+CisgIDxsaW5lPjcxPC9saW5lPgorICA8bWV0aG9kPgorICAgIDxuYW1lPmludCBmKGludCBrKTwvbmFtZT4KKyAgICA8ZGlzcGxheV9uYW1lPmYoaW50KTwvZGlzcGxheV9uYW1lPgorICAgIDxwYWNrYWdlPiZsdDtkZWZhdWx0Jmd0OzwvcGFja2FnZT4KKyAgICA8Y2xhc3M+CisgICAgICA8bmFtZT5BdXRvPC9uYW1lPgorICAgICAgPGRpc3BsYXlfbmFtZT5BdXRvPC9kaXNwbGF5X25hbWU+CisgICAgPC9jbGFzcz4KKyAgPC9tZXRob2Q+CisgIDxwcm9ibGVtX2NsYXNzPkNvbnN0YW50IGNvbmRpdGlvbnMgJmFtcDsgZXhjZXB0aW9uczwvcHJvYmxlbV9jbGFzcz4KKyAgPGRlc2NyaXB0aW9uPlVuYm94aW5nIG9mICZsdDtjb2RlJmd0O2kmbHQ7L2NvZGUmZ3Q7IG1heSBwcm9kdWNlICZsdDtjb2RlJmd0O2phdmEubGFuZy5OdWxsUG9pbnRlckV4Y2VwdGlvbiZsdDsvY29kZSZndDsuPC9kZXNjcmlwdGlvbj4KKzwvcHJvYmxlbT4KKworCisKKzxwcm9ibGVtPgorICA8ZmlsZT5UZXN0LmphdmE8L2ZpbGU+CisgIDxsaW5lPjg8L2xpbmU+CisgIDxtZXRob2Q+CisgICAgPG5hbWU+aW50IGYoaW50IGspPC9uYW1lPgorICAgIDxkaXNwbGF5X25hbWU+ZihpbnQpPC9kaXNwbGF5X25hbWU+CisgICAgPHBhY2thZ2U+Jmx0O2RlZmF1bHQmZ3Q7PC9wYWNrYWdlPgorICAgIDxjbGFzcz4KKyAgICAgIDxuYW1lPkF1dG88L25hbWU+CisgICAgICA8ZGlzcGxheV9uYW1lPkF1dG88L2Rpc3BsYXlfbmFtZT4KKyAgICA8L2NsYXNzPgorICA8L21ldGhvZD4KKyAgPHByb2JsZW1fY2xhc3M+Q29uc3RhbnQgY29uZGl0aW9ucyAmYW1wOyBleGNlcHRpb25zPC9wcm9ibGVtX2NsYXNzPgorICA8ZGVzY3JpcHRpb24+VW5ib3hpbmcgb2YgJmx0O2NvZGUmZ3Q7aSZsdDsvY29kZSZndDsgbWF5IHByb2R1Y2UgJmx0O2NvZGUmZ3Q7amF2YS5sYW5nLk51bGxQb2ludGVyRXhjZXB0aW9uJmx0Oy9jb2RlJmd0Oy48L2Rlc2NyaXB0aW9uPgorPC9wcm9ibGVtPgorCisKKworPHByb2JsZW0+CisgIDxmaWxlPlRlc3QuamF2YTwvZmlsZT4KKyAgPGxpbmU+Nzk8L2xpbmU+CisgIDxtZXRob2Q+CisgICAgPG5hbWU+aW50IGYoaW50IGspPC9uYW1lPgorICAgIDxkaXNwbGF5X25hbWU+ZihpbnQpPC9kaXNwbGF5X25hbWU+CisgICAgPHBhY2thZ2U+Jmx0O2RlZmF1bHQmZ3Q7PC9wYWNrYWdlPgorICAgIDxjbGFzcz4KKyAgICAgIDxuYW1lPkF1dG88L25hbWU+CisgICAgICA8ZGlzcGxheV9uYW1lPkF1dG88L2Rpc3BsYXlfbmFtZT4KKyAgICA8L2NsYXNzPgorICA8L21ldGhvZD4KKyAgPHByb2JsZW1fY2xhc3M+Q29uc3RhbnQgY29uZGl0aW9ucyAmYW1wOyBleGNlcHRpb25zPC9wcm9ibGVtX2NsYXNzPgorICA8ZGVzY3JpcHRpb24+VW5ib3hpbmcgb2YgJmx0O2NvZGUmZ3Q7aSZsdDsvY29kZSZndDsgbWF5IHByb2R1Y2UgJmx0O2NvZGUmZ3Q7amF2YS5sYW5nLk51bGxQb2ludGVyRXhjZXB0aW9uJmx0Oy9jb2RlJmd0Oy48L2Rlc2NyaXB0aW9uPgorPC9wcm9ibGVtPgorCisKKworPHByb2JsZW0+CisgIDxmaWxlPlRlc3QuamF2YTwvZmlsZT4KKyAgPGxpbmU+MjI8L2xpbmU+CisgIDxtZXRob2Q+CisgICAgPG5hbWU+aW50IGYoaW50IGspPC9uYW1lPgorICAgIDxkaXNwbGF5X25hbWU+ZihpbnQpPC9kaXNwbGF5X25hbWU+CisgICAgPHBhY2thZ2U+Jmx0O2RlZmF1bHQmZ3Q7PC9wYWNrYWdlPgorICAgIDxjbGFzcz4KKyAgICAgIDxuYW1lPkF1dG88L25hbWU+CisgICAgICA8ZGlzcGxheV9uYW1lPkF1dG88L2Rpc3BsYXlfbmFtZT4KKyAgICA8L2NsYXNzPgorICA8L21ldGhvZD4KKyAgPHByb2JsZW1fY2xhc3M+Q29uc3RhbnQgY29uZGl0aW9ucyAmYW1wOyBleGNlcHRpb25zPC9wcm9ibGVtX2NsYXNzPgorICA8ZGVzY3JpcHRpb24+VW5ib3hpbmcgb2YgJmx0O2NvZGUmZ3Q7aSZsdDsvY29kZSZndDsgbWF5IHByb2R1Y2UgJmx0O2NvZGUmZ3Q7amF2YS5sYW5nLk51bGxQb2ludGVyRXhjZXB0aW9uJmx0Oy9jb2RlJmd0Oy48L2Rlc2NyaXB0aW9uPgorPC9wcm9ibGVtPgorCisKKworPHByb2JsZW0+CisgIDxmaWxlPlRlc3QuamF2YTwvZmlsZT4KKyAgPGxpbmU+NTA8L2xpbmU+CisgIDxtZXRob2Q+CisgICAgPG5hbWU+aW50IGYoaW50IGspPC9uYW1lPgorICAgIDxkaXNwbGF5X25hbWU+ZihpbnQpPC9kaXNwbGF5X25hbWU+CisgICAgPHBhY2thZ2U+Jmx0O2RlZmF1bHQmZ3Q7PC9wYWNrYWdlPgorICAgIDxjbGFzcz4KKyAgICAgIDxuYW1lPkF1dG88L25hbWU+CisgICAgICA8ZGlzcGxheV9uYW1lPkF1dG88L2Rpc3BsYXlfbmFtZT4KKyAgICA8L2NsYXNzPgorICA8L21ldGhvZD4KKyAgPHByb2JsZW1fY2xhc3M+Q29uc3RhbnQgY29uZGl0aW9ucyAmYW1wOyBleGNlcHRpb25zPC9wcm9ibGVtX2NsYXNzPgorICA8ZGVzY3JpcHRpb24+VW5ib3hpbmcgb2YgJmx0O2NvZGUmZ3Q7aSZsdDsvY29kZSZndDsgbWF5IHByb2R1Y2UgJmx0O2NvZGUmZ3Q7amF2YS5sYW5nLk51bGxQb2ludGVyRXhjZXB0aW9uJmx0Oy9jb2RlJmd0Oy48L2Rlc2NyaXB0aW9uPgorPC9wcm9ibGVtPgorCisKKworPHByb2JsZW0+CisgIDxmaWxlPlRlc3QuamF2YTwvZmlsZT4KKyAgPGxpbmU+NTY8L2xpbmU+CisgIDxtZXRob2Q+CisgICAgPG5hbWU+aW50IGYoaW50IGspPC9uYW1lPgorICAgIDxkaXNwbGF5X25hbWU+ZihpbnQpPC9kaXNwbGF5X25hbWU+CisgICAgPHBhY2thZ2U+Jmx0O2RlZmF1bHQmZ3Q7PC9wYWNrYWdlPgorICAgIDxjbGFzcz4KKyAgICAgIDxuYW1lPkF1dG88L25hbWU+CisgICAgICA8ZGlzcGxheV9uYW1lPkF1dG88L2Rpc3BsYXlfbmFtZT4KKyAgICA8L2NsYXNzPgorICA8L21ldGhvZD4KKyAgPHByb2JsZW1fY2xhc3M+Q29uc3RhbnQgY29uZGl0aW9ucyAmYW1wOyBleGNlcHRpb25zPC9wcm9ibGVtX2NsYXNzPgorICA8ZGVzY3JpcHRpb24+VW5ib3hpbmcgb2YgJmx0O2NvZGUmZ3Q7aSZsdDsvY29kZSZndDsgbWF5IHByb2R1Y2UgJmx0O2NvZGUmZ3Q7amF2YS5sYW5nLk51bGxQb2ludGVyRXhjZXB0aW9uJmx0Oy9jb2RlJmd0Oy48L2Rlc2NyaXB0aW9uPgorPC9wcm9ibGVtPgorCisKKworPHByb2JsZW0+CisgIDxmaWxlPlRlc3QuamF2YTwvZmlsZT4KKyAgPGxpbmU+MjY8L2xpbmU+CisgIDxtZXRob2Q+CisgICAgPG5hbWU+aW50IGYoaW50IGspPC9uYW1lPgorICAgIDxkaXNwbGF5X25hbWU+ZihpbnQpPC9kaXNwbGF5X25hbWU+CisgICAgPHBhY2thZ2U+Jmx0O2RlZmF1bHQmZ3Q7PC9wYWNrYWdlPgorICAgIDxjbGFzcz4KKyAgICAgIDxuYW1lPkF1dG88L25hbWU+CisgICAgICA8ZGlzcGxheV9uYW1lPkF1dG88L2Rpc3BsYXlfbmFtZT4KKyAgICA8L2NsYXNzPgorICA8L21ldGhvZD4KKyAgPHByb2JsZW1fY2xhc3M+Q29uc3RhbnQgY29uZGl0aW9ucyAmYW1wOyBleGNlcHRpb25zPC9wcm9ibGVtX2NsYXNzPgorICA8ZGVzY3JpcHRpb24+VW5ib3hpbmcgb2YgJmx0O2NvZGUmZ3Q7aSZsdDsvY29kZSZndDsgbWF5IHByb2R1Y2UgJmx0O2NvZGUmZ3Q7amF2YS5sYW5nLk51bGxQb2ludGVyRXhjZXB0aW9uJmx0Oy9jb2RlJmd0Oy48L2Rlc2NyaXB0aW9uPgorPC9wcm9ibGVtPgorCisKKworPHByb2JsZW0+CisgIDxmaWxlPlRlc3QuamF2YTwvZmlsZT4KKyAgPGxpbmU+OTk8L2xpbmU+CisgIDxtZXRob2Q+CisgICAgPG5hbWU+aW50IGYoaW50IGspPC9uYW1lPgorICAgIDxkaXNwbGF5X25hbWU+ZihpbnQpPC9kaXNwbGF5X25hbWU+CisgICAgPHBhY2thZ2U+Jmx0O2RlZmF1bHQmZ3Q7PC9wYWNrYWdlPgorICAgIDxjbGFzcz4KKyAgICAgIDxuYW1lPkF1dG88L25hbWU+CisgICAgICA8ZGlzcGxheV9uYW1lPkF1dG88L2Rpc3BsYXlfbmFtZT4KKyAgICA8L2NsYXNzPgorICA8L21ldGhvZD4KKyAgPHByb2JsZW1fY2xhc3M+Q29uc3RhbnQgY29uZGl0aW9ucyAmYW1wOyBleGNlcHRpb25zPC9wcm9ibGVtX2NsYXNzPgorICA8ZGVzY3JpcHRpb24+VW5ib3hpbmcgb2YgJmx0O2NvZGUmZ3Q7aSZsdDsvY29kZSZndDsgbWF5IHByb2R1Y2UgJmx0O2NvZGUmZ3Q7amF2YS5sYW5nLk51bGxQb2ludGVyRXhjZXB0aW9uJmx0Oy9jb2RlJmd0Oy48L2Rlc2NyaXB0aW9uPgorPC9wcm9ibGVtPgorCisKKworPHByb2JsZW0+CisgIDxmaWxlPlRlc3QuamF2YTwvZmlsZT4KKyAgPGxpbmU+MzU8L2xpbmU+CisgIDxtZXRob2Q+CisgICAgPG5hbWU+aW50IGYoaW50IGspPC9uYW1lPgorICAgIDxkaXNwbGF5X25hbWU+ZihpbnQpPC9kaXNwbGF5X25hbWU+CisgICAgPHBhY2thZ2U+Jmx0O2RlZmF1bHQmZ3Q7PC9wYWNrYWdlPgorICAgIDxjbGFzcz4KKyAgICAgIDxuYW1lPkF1dG88L25hbWU+CisgICAgICA8ZGlzcGxheV9uYW1lPkF1dG88L2Rpc3BsYXlfbmFtZT4KKyAgICA8L2NsYXNzPgorICA8L21ldGhvZD4KKyAgPHByb2JsZW1fY2xhc3M+Q29uc3RhbnQgY29uZGl0aW9ucyAmYW1wOyBleGNlcHRpb25zPC9wcm9ibGVtX2NsYXNzPgorICA8ZGVzY3JpcHRpb24+VW5ib3hpbmcgb2YgJmx0O2NvZGUmZ3Q7aSZsdDsvY29kZSZndDsgbWF5IHByb2R1Y2UgJmx0O2NvZGUmZ3Q7amF2YS5sYW5nLk51bGxQb2ludGVyRXhjZXB0aW9uJmx0Oy9jb2RlJmd0Oy48L2Rlc2NyaXB0aW9uPgorPC9wcm9ibGVtPgorCisKKworPHByb2JsZW0+CisgIDxmaWxlPlRlc3QuamF2YTwvZmlsZT4KKyAgPGxpbmU+NDA8L2xpbmU+CisgIDxtZXRob2Q+CisgICAgPG5hbWU+aW50IGYoaW50IGspPC9uYW1lPgorICAgIDxkaXNwbGF5X25hbWU+ZihpbnQpPC9kaXNwbGF5X25hbWU+CisgICAgPHBhY2thZ2U+Jmx0O2RlZmF1bHQmZ3Q7PC9wYWNrYWdlPgorICAgIDxjbGFzcz4KKyAgICAgIDxuYW1lPkF1dG88L25hbWU+CisgICAgICA8ZGlzcGxheV9uYW1lPkF1dG88L2Rpc3BsYXlfbmFtZT4KKyAgICA8L2NsYXNzPgorICA8L21ldGhvZD4KKyAgPHByb2JsZW1fY2xhc3M+Q29uc3RhbnQgY29uZGl0aW9ucyAmYW1wOyBleGNlcHRpb25zPC9wcm9ibGVtX2NsYXNzPgorICA8ZGVzY3JpcHRpb24+VW5ib3hpbmcgb2YgJmx0O2NvZGUmZ3Q7aSZsdDsvY29kZSZndDsgbWF5IHByb2R1Y2UgJmx0O2NvZGUmZ3Q7amF2YS5sYW5nLk51bGxQb2ludGVyRXhjZXB0aW9uJmx0Oy9jb2RlJmd0Oy48L2Rlc2NyaXB0aW9uPgorPC9wcm9ibGVtPgorCisKKworPHByb2JsZW0+CisgIDxmaWxlPlRlc3QuamF2YTwvZmlsZT4KKyAgPGxpbmU+NjE8L2xpbmU+CisgIDxtZXRob2Q+CisgICAgPG5hbWU+aW50IGYoaW50IGspPC9uYW1lPgorICAgIDxkaXNwbGF5X25hbWU+ZihpbnQpPC9kaXNwbGF5X25hbWU+CisgICAgPHBhY2thZ2U+Jmx0O2RlZmF1bHQmZ3Q7PC9wYWNrYWdlPgorICAgIDxjbGFzcz4KKyAgICAgIDxuYW1lPkF1dG88L25hbWU+CisgICAgICA8ZGlzcGxheV9uYW1lPkF1dG88L2Rpc3BsYXlfbmFtZT4KKyAgICA8L2NsYXNzPgorICA8L21ldGhvZD4KKyAgPHByb2JsZW1fY2xhc3M+Q29uc3RhbnQgY29uZGl0aW9ucyAmYW1wOyBleGNlcHRpb25zPC9wcm9ibGVtX2NsYXNzPgorICA8ZGVzY3JpcHRpb24+VW5ib3hpbmcgb2YgJmx0O2NvZGUmZ3Q7aSZsdDsvY29kZSZndDsgbWF5IHByb2R1Y2UgJmx0O2NvZGUmZ3Q7amF2YS5sYW5nLk51bGxQb2ludGVyRXhjZXB0aW9uJmx0Oy9jb2RlJmd0Oy48L2Rlc2NyaXB0aW9uPgorPC9wcm9ibGVtPgorCisKKworPHByb2JsZW0+CisgIDxmaWxlPlRlc3QuamF2YTwvZmlsZT4KKyAgPGxpbmU+MTg8L2xpbmU+CisgIDxtZXRob2Q+CisgICAgPG5hbWU+aW50IGYoaW50IGspPC9uYW1lPgorICAgIDxkaXNwbGF5X25hbWU+ZihpbnQpPC9kaXNwbGF5X25hbWU+CisgICAgPHBhY2thZ2U+Jmx0O2RlZmF1bHQmZ3Q7PC9wYWNrYWdlPgorICAgIDxjbGFzcz4KKyAgICAgIDxuYW1lPkF1dG88L25hbWU+CisgICAgICA8ZGlzcGxheV9uYW1lPkF1dG88L2Rpc3BsYXlfbmFtZT4KKyAgICA8L2NsYXNzPgorICA8L21ldGhvZD4KKyAgPHByb2JsZW1fY2xhc3M+Q29uc3RhbnQgY29uZGl0aW9ucyAmYW1wOyBleGNlcHRpb25zPC9wcm9ibGVtX2NsYXNzPgorICA8ZGVzY3JpcHRpb24+VW5ib3hpbmcgb2YgJmx0O2NvZGUmZ3Q7aSZsdDsvY29kZSZndDsgbWF5IHByb2R1Y2UgJmx0O2NvZGUmZ3Q7amF2YS5sYW5nLk51bGxQb2ludGVyRXhjZXB0aW9uJmx0Oy9jb2RlJmd0Oy48L2Rlc2NyaXB0aW9uPgorPC9wcm9ibGVtPgorCisgIDxwcm9ibGVtPgorICAgIDxmaWxlPlRlc3QuamF2YTwvZmlsZT4KKyAgICA8bGluZT42NzwvbGluZT4KKyAgICA8cGFja2FnZT4mbHQ7ZGVmYXVsdCZndDs8L3BhY2thZ2U+CisgICAgPHByb2JsZW1fY2xhc3Mgc2V2ZXJpdHk9IldBUk5JTkciIGF0dHJpYnV0ZV9rZXk9IldBUk5JTkdfQVRUUklCVVRFUyI+Q29uc3RhbnQgY29uZGl0aW9ucyAmYW1wOyBleGNlcHRpb25zPC9wcm9ibGVtX2NsYXNzPgorICAgIDxkZXNjcmlwdGlvbj5Db25kaXRpb24gJmx0O2NvZGUmZ3Q7aSZsdDsvY29kZSZndDsgaXMgYWx3YXlzICZsdDtjb2RlJmd0O3RydWUmbHQ7L2NvZGUmZ3Q7IHdoZW4gcmVhY2hlZDwvZGVzY3JpcHRpb24+CisgIDwvcHJvYmxlbT4KKworPC9wcm9ibGVtcz4KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RhdGFGbG93L3VuYm94aW5nTlBFL3NyYy9UZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy91bmJveGluZ05QRS9zcmMvVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZhZjBiZTAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy91bmJveGluZ05QRS9zcmMvVGVzdC5qYXZhCkBAIC0wLDAgKzEsMTA0IEBACitjbGFzcyBBdXRvIHsKKyAgICBwdWJsaWMgQXV0byhpbnQgaykgeworICAgIH0KKworICAgIGludCBmKGludCBrKSB7CisgICAgICAgIHsKKyAgICAgICAgICAgIEludGVnZXIgaSA9IG51bGw7CisgICAgICAgICAgICBpZiAoaT4wKSB7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICB7CisgICAgICAgICAgICBJbnRlZ2VyIGkgPSBudWxsOworICAgICAgICAgICAgaW50IGkxID0gKGludCkgaTsKKyAgICAgICAgfQorICAgICAgICB7CisgICAgICAgICAgICBJbnRlZ2VyIGkgPSBudWxsOworICAgICAgICAgICAgaW50IGkxID0gaStpOworICAgICAgICB9CisgICAgICAgIHsKKyAgICAgICAgICAgIEludGVnZXIgaSA9IG51bGw7CisgICAgICAgICAgICBpbnQgaTEgPSBpKys7CisgICAgICAgIH0KKyAgICAgICAgeworICAgICAgICAgICAgSW50ZWdlciBpID0gbnVsbDsKKyAgICAgICAgICAgIEludGVnZXIgaTEgPSBpKys7CisgICAgICAgIH0KKyAgICAgICAgeworICAgICAgICAgICAgSW50ZWdlciBpID0gbnVsbDsKKyAgICAgICAgICAgIGludFtdIGlhID0gbmV3IGludFswXTsKKyAgICAgICAgICAgIGludCBpMiA9IGlhW2ldOworICAgICAgICB9CisgICAgICAgIHsKKyAgICAgICAgICAgIEludGVnZXIgaSA9IG51bGw7CisgICAgICAgICAgICBpbnRbXSBpMiA9IHtpfTsKKyAgICAgICAgfQorICAgICAgICB7CisgICAgICAgICAgICBCb29sZWFuIGkgPSBudWxsOworICAgICAgICAgICAgYm9vbGVhbiBpMiA9IHRoaXM9PXRoaXM7CisgICAgICAgICAgICBpMiAmPSBpOworICAgICAgICB9CisgICAgICAgIHsKKyAgICAgICAgICAgIEJvb2xlYW4gaSA9IG51bGw7CisgICAgICAgICAgICBib29sZWFuIGkyID0gdGhpcz09dGhpczsKKyAgICAgICAgICAgIGkyIHw9IGk7CisgICAgICAgIH0KKyAgICAgICAgeworICAgICAgICAgICAgQm9vbGVhbiBpID0gbnVsbDsKKyAgICAgICAgICAgIGJvb2xlYW4gaTIgPSB0aGlzPT10aGlzOworICAgICAgICAgICAgaTIgPSAhaTsKKyAgICAgICAgfQorCisgICAgICAgIHsKKyAgICAgICAgICAgIEludGVnZXIgaSA9IG51bGw7CisgICAgICAgICAgICBpZiAodGhpcz09dGhpcykgeworICAgICAgICAgICAgICAgIHJldHVybiBpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHsKKyAgICAgICAgICAgIEludGVnZXIgaSA9IG51bGw7CisgICAgICAgICAgICBzd2l0Y2goaSkgeworICAgICAgICAgICAgICAgIGNhc2UgMDoKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICB7CisgICAgICAgICAgICBCb29sZWFuIGkgPSBudWxsOworICAgICAgICAgICAgYm9vbGVhbiBpMiA9IGkgJiYgaTsKKyAgICAgICAgfQorICAgICAgICB7CisgICAgICAgICAgICBCb29sZWFuIGkgPSBudWxsOworICAgICAgICAgICAgYm9vbGVhbiBpMiA9IGkgfCBpOworICAgICAgICB9CisgICAgICAgIHsKKyAgICAgICAgICAgIEJvb2xlYW4gaSA9IG51bGw7CisgICAgICAgICAgICBib29sZWFuIGkyID0gdHJ1ZSBeIGk7CisgICAgICAgIH0KKyAgICAgICAgeworICAgICAgICAgICAgQm9vbGVhbiBpID0gbnVsbDsKKyAgICAgICAgICAgIGJvb2xlYW4gaTIgPSBpID8gdHJ1ZSA6IGZhbHNlOworICAgICAgICB9CisgICAgICAgIHsKKyAgICAgICAgICAgIEludGVnZXIgaSA9IG51bGw7CisgICAgICAgICAgICBmKGkpOworICAgICAgICB9CisgICAgICAgIHsKKyAgICAgICAgICAgIEludGVnZXIgaSA9IG51bGw7CisgICAgICAgICAgICBuZXcgQXV0byhpKTsKKyAgICAgICAgfQorICAgICAgICB7CisgICAgICAgICAgICBJbnRlZ2VyIGkgPSBudWxsOworICAgICAgICAgICAgaSsrOworICAgICAgICB9CisgICAgICAgIHsKKyAgICAgICAgICAgIEludGVnZXIgaSA9IG51bGw7CisgICAgICAgICAgICAtLWk7CisgICAgICAgIH0KKyAgICAgICAgeworICAgICAgICAgICAgQm9vbGVhbiBpID0gbnVsbDsKKyAgICAgICAgICAgIEJvb2xlYW4gaTIgPSAhaTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiAwOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RhdGFGbG93L3dyb25nRXF1YWxUeXBlcy9leHBlY3RlZC54bWwgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy93cm9uZ0VxdWFsVHlwZXMvZXhwZWN0ZWQueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlhYzg3OWQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy93cm9uZ0VxdWFsVHlwZXMvZXhwZWN0ZWQueG1sCkBAIC0wLDAgKzEsMyBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxwcm9ibGVtcyAvPgorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy93cm9uZ0VxdWFsVHlwZXMvc3JjL1Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RhdGFGbG93L3dyb25nRXF1YWxUeXBlcy9zcmMvVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU1MTRiMTkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy93cm9uZ0VxdWFsVHlwZXMvc3JjL1Rlc3QuamF2YQpAQCAtMCwwICsxLDggQEAKK2ltcG9ydCBqYXZhLnV0aWwuQ2FsZW5kYXI7CisKK3B1YmxpYyBjbGFzcyBUZXN0IHsKKyAgcHVibGljIHZvaWQgZm9vKE9iamVjdCBjKSB7CisgICAgaWYgKGMgaW5zdGFuY2VvZiBDYWxlbmRhcikgcmV0dXJuOyAgICAKKyAgICBpZiAoYyA9PSBDYWxlbmRhci5nZXRJbnN0YW5jZSgpKSB7fQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGF0YUZsb3cveG9yL2V4cGVjdGVkLnhtbCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RhdGFGbG93L3hvci9leHBlY3RlZC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzk2YTMxNQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RhdGFGbG93L3hvci9leHBlY3RlZC54bWwKQEAgLTAsMCArMSwyIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPHByb2JsZW1zIC8+CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy94b3Ivc3JjL1Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RhdGFGbG93L3hvci9zcmMvVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE0ZDQ1ODQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kYXRhRmxvdy94b3Ivc3JjL1Rlc3QuamF2YQpAQCAtMCwwICsxLDggQEAKK3B1YmxpYyBjbGFzcyBUZXN0IHsKKyAgcHVibGljIHN0YXRpYyB2b2lkIHRlc3QoZmluYWwgT2JqZWN0IGEsIGZpbmFsIE9iamVjdCBiKSB7CisJaWYgKChhID09IG51bGwgXiBiID09IG51bGwpCisJCXx8IChhICE9IG51bGwgJiYgYS5oYXNoQ29kZSgpICE9IGIuaGFzaENvZGUoKSkpIHsKKwkJU3lzdGVtLm91dC5wcmludGxuKCJhYWEiKTsKKwl9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kZWFkQ29kZS9TQ1I2MDY3L2V4cGVjdGVkLnhtbCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RlYWRDb2RlL1NDUjYwNjcvZXhwZWN0ZWQueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRkNzA2N2UKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kZWFkQ29kZS9TQ1I2MDY3L2V4cGVjdGVkLnhtbApAQCAtMCwwICsxLDkgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8cHJvYmxlbXM+CisgIDxwcm9ibGVtPgorICAgIDxmaWxlPkEuamF2YTwvZmlsZT4KKyAgICA8bGluZT4yPC9saW5lPgorICAgIDxkZXNjcmlwdGlvbj5Db25zdHJ1Y3RvciBpcyBuZXZlciB1c2VkPC9kZXNjcmlwdGlvbj4KKyAgPC9wcm9ibGVtPgorPC9wcm9ibGVtcz4KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGVhZENvZGUvU0NSNjA2Ny9leHRfc3JjL0IuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RlYWRDb2RlL1NDUjYwNjcvZXh0X3NyYy9CLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGJiMGU1OQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RlYWRDb2RlL1NDUjYwNjcvZXh0X3NyYy9CLmphdmEKQEAgLTAsMCArMSw0IEBACitjbGFzcyBCIHsKKyAgICBBIGE9bmV3IEEoMCk7Cit9CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RlYWRDb2RlL1NDUjYwNjcvc3JjL0EuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RlYWRDb2RlL1NDUjYwNjcvc3JjL0EuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wODM0MmM1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGVhZENvZGUvU0NSNjA2Ny9zcmMvQS5qYXZhCkBAIC0wLDAgKzEsOCBAQAorY2xhc3MgQSB7CisgICAgQSgpIHsKKyAgICB9CisgICAgQShpbnQgaykgeworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oayk7CisgICAgfQorfQorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kZWFkQ29kZS9TQ1I5NjkwL2V4cGVjdGVkLnhtbCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RlYWRDb2RlL1NDUjk2OTAvZXhwZWN0ZWQueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ3MDRkNTgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kZWFkQ29kZS9TQ1I5NjkwL2V4cGVjdGVkLnhtbApAQCAtMCwwICsxLDQgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8cHJvYmxlbXM+Cis8L3Byb2JsZW1zPgorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kZWFkQ29kZS9TQ1I5NjkwL2V4dF9zcmMvQi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGVhZENvZGUvU0NSOTY5MC9leHRfc3JjL0IuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMDM3MzYyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGVhZENvZGUvU0NSOTY5MC9leHRfc3JjL0IuamF2YQpAQCAtMCwwICsxLDMgQEAKK2NsYXNzIEIgZXh0ZW5kcyBBIHsKK30KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGVhZENvZGUvU0NSOTY5MC9zcmMvQS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGVhZENvZGUvU0NSOTY5MC9zcmMvQS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZhNjRlY2QKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kZWFkQ29kZS9TQ1I5NjkwL3NyYy9BLmphdmEKQEAgLTAsMCArMSw1IEBACithYnN0cmFjdCBjbGFzcyBBIHsKKyAgICBBKCkgeworICAgIH0KK30KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGVhZENvZGUvYWJzdHJhY3RDbGFzc1dpdGhTZXJpYWxpemFibGVTdWJjbGFzc2VzL2V4cGVjdGVkLnhtbCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RlYWRDb2RlL2Fic3RyYWN0Q2xhc3NXaXRoU2VyaWFsaXphYmxlU3ViY2xhc3Nlcy9leHBlY3RlZC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzllMWEwZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RlYWRDb2RlL2Fic3RyYWN0Q2xhc3NXaXRoU2VyaWFsaXphYmxlU3ViY2xhc3Nlcy9leHBlY3RlZC54bWwKQEAgLTAsMCArMSw0IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPHByb2JsZW1zPiAgCis8L3Byb2JsZW1zPgorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kZWFkQ29kZS9hYnN0cmFjdENsYXNzV2l0aFNlcmlhbGl6YWJsZVN1YmNsYXNzZXMvc3JjL1Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RlYWRDb2RlL2Fic3RyYWN0Q2xhc3NXaXRoU2VyaWFsaXphYmxlU3ViY2xhc3Nlcy9zcmMvVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE5MmI3MzgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kZWFkQ29kZS9hYnN0cmFjdENsYXNzV2l0aFNlcmlhbGl6YWJsZVN1YmNsYXNzZXMvc3JjL1Rlc3QuamF2YQpAQCAtMCwwICsxLDEzIEBACitpbXBvcnQgamF2YS5pby4qOworCitwdWJsaWMgYWJzdHJhY3QgY2xhc3MgQSB7CisgIHByb3RlY3RlZCBPYmplY3QgcmVhZFJlc29sdmUoKSB0aHJvd3MgT2JqZWN0U3RyZWFtRXhjZXB0aW9uIHsKKyAgICByZXR1cm4gbnVsbDsKKyAgfQorfQorCitjbGFzcyBBSW1wbCBleHRlbmRzIEEgaW1wbGVtZW50cyBTZXJpYWxpemFibGUgeworICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CisgICAgU3lzdGVtLm91dC5wcmludGxuKG5ldyBBSW1wbCgpLnRvU3RyaW5nKCkpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGVhZENvZGUvYWRkaXRpb25hbEFubm90YXRpb25zL2V4cGVjdGVkLnhtbCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RlYWRDb2RlL2FkZGl0aW9uYWxBbm5vdGF0aW9ucy9leHBlY3RlZC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzllMWEwZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RlYWRDb2RlL2FkZGl0aW9uYWxBbm5vdGF0aW9ucy9leHBlY3RlZC54bWwKQEAgLTAsMCArMSw0IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPHByb2JsZW1zPiAgCis8L3Byb2JsZW1zPgorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kZWFkQ29kZS9hZGRpdGlvbmFsQW5ub3RhdGlvbnMvc3JjL1Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RlYWRDb2RlL2FkZGl0aW9uYWxBbm5vdGF0aW9ucy9zcmMvVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIyZWU5ZDcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kZWFkQ29kZS9hZGRpdGlvbmFsQW5ub3RhdGlvbnMvc3JjL1Rlc3QuamF2YQpAQCAtMCwwICsxLDkgQEAKK0BBbm5vdGF0ZWQKK3B1YmxpYyBjbGFzcyBUZXN0IHsKKyAgQEFubm90YXRlZAorICBwdWJsaWMgdm9pZCBmb28oKXt9CisKKyAgQEFubm90YXRlZAorICBwdWJsaWMgaW50IG15UHVibGljRmllbGQ7CisKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kZWFkQ29kZS9hbm5vdGF0aW9uSW50ZXJmYWNlL2V4cGVjdGVkLnhtbCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RlYWRDb2RlL2Fubm90YXRpb25JbnRlcmZhY2UvZXhwZWN0ZWQueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc5ZTFhMGYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kZWFkQ29kZS9hbm5vdGF0aW9uSW50ZXJmYWNlL2V4cGVjdGVkLnhtbApAQCAtMCwwICsxLDQgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8cHJvYmxlbXM+ICAKKzwvcHJvYmxlbXM+CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RlYWRDb2RlL2Fubm90YXRpb25JbnRlcmZhY2Uvc3JjL1Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RlYWRDb2RlL2Fubm90YXRpb25JbnRlcmZhY2Uvc3JjL1Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMjg2NWQxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGVhZENvZGUvYW5ub3RhdGlvbkludGVyZmFjZS9zcmMvVGVzdC5qYXZhCkBAIC0wLDAgKzEsNiBAQAoraW1wb3J0IGphdmEubGFuZy5hbm5vdGF0aW9uLio7CisKK0BUYXJnZXQoe0VsZW1lbnRUeXBlLk1FVEhPRCwgRWxlbWVudFR5cGUuRklFTEQsIEVsZW1lbnRUeXBlLlBBUkFNRVRFUiwgRWxlbWVudFR5cGUuTE9DQUxfVkFSSUFCTEV9KQorcHVibGljIEBpbnRlcmZhY2UgVGVzdCB7CisgIFN0cmluZyB2YWx1ZSgpIGRlZmF1bHQgIiI7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGVhZENvZGUvY2hhaW5PZkNhbGxzL2V4cGVjdGVkLnhtbCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RlYWRDb2RlL2NoYWluT2ZDYWxscy9leHBlY3RlZC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzllMWEwZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RlYWRDb2RlL2NoYWluT2ZDYWxscy9leHBlY3RlZC54bWwKQEAgLTAsMCArMSw0IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPHByb2JsZW1zPiAgCis8L3Byb2JsZW1zPgorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kZWFkQ29kZS9jaGFpbk9mQ2FsbHMvc3JjL0EuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RlYWRDb2RlL2NoYWluT2ZDYWxscy9zcmMvQS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYyNDBkN2YKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kZWFkQ29kZS9jaGFpbk9mQ2FsbHMvc3JjL0EuamF2YQpAQCAtMCwwICsxLDUgQEAKK3B1YmxpYyBjbGFzcyBBIHsKKyAgcHVibGljIEEoKSB7CisKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RlYWRDb2RlL2NoYWluT2ZDYWxscy9zcmMvQi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGVhZENvZGUvY2hhaW5PZkNhbGxzL3NyYy9CLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjYxOWQ1ZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RlYWRDb2RlL2NoYWluT2ZDYWxscy9zcmMvQi5qYXZhCkBAIC0wLDAgKzEsNSBAQAorcHVibGljIGNsYXNzIEIgaW1wbGVtZW50cyBJeworICBwdWJsaWMgdm9pZCBwcm9qZWN0T3BlbmVkKCkgeworICAgIG5ldyBBKCk7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kZWFkQ29kZS9jaGFpbk9mQ2FsbHMvc3JjL0kuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RlYWRDb2RlL2NoYWluT2ZDYWxscy9zcmMvSS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMwMDU4MWEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kZWFkQ29kZS9jaGFpbk9mQ2FsbHMvc3JjL0kuamF2YQpAQCAtMCwwICsxLDMgQEAKK3B1YmxpYyBpbnRlcmZhY2UgSSB7CisgICB2b2lkIHByb2plY3RPcGVuZWQoKTsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kZWFkQ29kZS9jaGFpbk9mQ2FsbHMvc3JjL1Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RlYWRDb2RlL2NoYWluT2ZDYWxscy9zcmMvVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMwYzdiMDcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kZWFkQ29kZS9jaGFpbk9mQ2FsbHMvc3JjL1Rlc3QuamF2YQpAQCAtMCwwICsxLDYgQEAKK2NsYXNzIFRlc3QgeworICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKXsKKyAgICBJIGkgPSBudWxsOworICAgIGkucHJvamVjdE9wZW5lZCgpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGVhZENvZGUvY2hhaW5PZkNhbGxzL3NyYy9jb21wcy54bWwgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kZWFkQ29kZS9jaGFpbk9mQ2FsbHMvc3JjL2NvbXBzLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iOTNjYTNhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGVhZENvZGUvY2hhaW5PZkNhbGxzL3NyYy9jb21wcy54bWwKQEAgLTAsMCArMSBAQAorPGNvbXBvbmVudD5CPC9jb21wb25lbnQ+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGVhZENvZGUvY2hhaW5PZlN1cHByZXNzaW9ucy9leHBlY3RlZC54bWwgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kZWFkQ29kZS9jaGFpbk9mU3VwcHJlc3Npb25zL2V4cGVjdGVkLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43OWUxYTBmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGVhZENvZGUvY2hhaW5PZlN1cHByZXNzaW9ucy9leHBlY3RlZC54bWwKQEAgLTAsMCArMSw0IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPHByb2JsZW1zPiAgCis8L3Byb2JsZW1zPgorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kZWFkQ29kZS9jaGFpbk9mU3VwcHJlc3Npb25zL3NyYy9BLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kZWFkQ29kZS9jaGFpbk9mU3VwcHJlc3Npb25zL3NyYy9BLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTk3ZTE0MgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RlYWRDb2RlL2NoYWluT2ZTdXBwcmVzc2lvbnMvc3JjL0EuamF2YQpAQCAtMCwwICsxLDE4IEBACitwdWJsaWMgY2xhc3MgQSB7CisgICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgeworICAgICAgbmV3IEEoKTsKKyAgICB9CisKKyAgICBwcml2YXRlIHZvaWQgYSgpeworICAgIH0KKworICAgIHByaXZhdGUgdm9pZCBiKCl7CisgICAgICBhKCk7CisgICAgfQorCisgICAgQGphdmEubGFuZy5TdXBwcmVzc1dhcm5pbmdzKHsiVW51c2VkRGVjbGFyYXRpb24ifSkKKyAgICBwcml2YXRlIHZvaWQgYygpeworICAgICAgYigpOworICAgIH0KK30KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGVhZENvZGUvY2xhc3NMaXRlcmFsUmVmL2V4cGVjdGVkLnhtbCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RlYWRDb2RlL2NsYXNzTGl0ZXJhbFJlZi9leHBlY3RlZC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmRhZmM1MgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RlYWRDb2RlL2NsYXNzTGl0ZXJhbFJlZi9leHBlY3RlZC54bWwKQEAgLTAsMCArMSw0IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPHByb2JsZW1zLz4KKworCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kZWFkQ29kZS9jbGFzc0xpdGVyYWxSZWYvc3JjL1Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RlYWRDb2RlL2NsYXNzTGl0ZXJhbFJlZi9zcmMvVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEzNTAwMTkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kZWFkQ29kZS9jbGFzc0xpdGVyYWxSZWYvc3JjL1Rlc3QuamF2YQpAQCAtMCwwICsxLDEyIEBACitpbXBvcnQgamF2YS5sYW5nLkNsYXNzOworaW1wb3J0IGphdmEubGFuZy5TdHJpbmc7CisKK3B1YmxpYyBjbGFzcyBUZXN0IHsKKyAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgeworICAgIFRlc3QuY2xhc3MuZ2V0RGVjbGFyZWRDb25zdHJ1Y3RvcihTdHJpbmcuY2xhc3MpLm5ld0luc3RhbmNlKCJGb28iKTsKKyAgfQorCisgIHB1YmxpYyBUZXN0KFN0cmluZyBwYXJhbSkgeworICAgIFN5c3RlbS5vdXQucHJpbnRsbigiVGhpcyBpcyB1c2VkISIpOworICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kZWFkQ29kZS9jb25zdHJ1Y3RvckNhbGxzL2V4cGVjdGVkLnhtbCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RlYWRDb2RlL2NvbnN0cnVjdG9yQ2FsbHMvZXhwZWN0ZWQueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc5ZTFhMGYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kZWFkQ29kZS9jb25zdHJ1Y3RvckNhbGxzL2V4cGVjdGVkLnhtbApAQCAtMCwwICsxLDQgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8cHJvYmxlbXM+ICAKKzwvcHJvYmxlbXM+CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RlYWRDb2RlL2NvbnN0cnVjdG9yQ2FsbHMvc3JjL0EuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RlYWRDb2RlL2NvbnN0cnVjdG9yQ2FsbHMvc3JjL0EuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMDE5OTlhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGVhZENvZGUvY29uc3RydWN0b3JDYWxscy9zcmMvQS5qYXZhCkBAIC0wLDAgKzEsNCBAQAorcHVibGljIGNsYXNzIEEgeworICBwdWJsaWMgQShpbnQgaSkgeworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGVhZENvZGUvY29uc3RydWN0b3JDYWxscy9zcmMvQi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGVhZENvZGUvY29uc3RydWN0b3JDYWxscy9zcmMvQi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc3YzE0MmQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kZWFkQ29kZS9jb25zdHJ1Y3RvckNhbGxzL3NyYy9CLmphdmEKQEAgLTAsMCArMSw1IEBACitwdWJsaWMgY2xhc3MgQiB7CisgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpeworICAgIFN5c3RlbS5vdXQucHJpbnRsbihuZXcgQSgxKSk7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kZWFkQ29kZS9jb25zdHJ1Y3RvckNhbGxzMS9leHBlY3RlZC54bWwgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kZWFkQ29kZS9jb25zdHJ1Y3RvckNhbGxzMS9leHBlY3RlZC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzllMWEwZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RlYWRDb2RlL2NvbnN0cnVjdG9yQ2FsbHMxL2V4cGVjdGVkLnhtbApAQCAtMCwwICsxLDQgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8cHJvYmxlbXM+ICAKKzwvcHJvYmxlbXM+CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RlYWRDb2RlL2NvbnN0cnVjdG9yQ2FsbHMxL3NyYy9UZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kZWFkQ29kZS9jb25zdHJ1Y3RvckNhbGxzMS9zcmMvVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFiNGM0ZmIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kZWFkQ29kZS9jb25zdHJ1Y3RvckNhbGxzMS9zcmMvVGVzdC5qYXZhCkBAIC0wLDAgKzEsOSBAQAorcHVibGljIGNsYXNzIFRlc3QgeworICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKXsKKyAgICBTeXN0ZW0ub3V0LnByaW50bG4obmV3IEEoMSkpOworICB9CisgIAorICBwcml2YXRlIGNsYXNzIEEgeworICAgIHB1YmxpYyBBKGludCBpKXt9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kZWFkQ29kZS9jb25zdHJ1Y3RvclJlYWNoYWJsZUZyb21GaWVsZEluaXRpYWxpemVyL2V4cGVjdGVkLnhtbCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RlYWRDb2RlL2NvbnN0cnVjdG9yUmVhY2hhYmxlRnJvbUZpZWxkSW5pdGlhbGl6ZXIvZXhwZWN0ZWQueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc5ZTFhMGYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kZWFkQ29kZS9jb25zdHJ1Y3RvclJlYWNoYWJsZUZyb21GaWVsZEluaXRpYWxpemVyL2V4cGVjdGVkLnhtbApAQCAtMCwwICsxLDQgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8cHJvYmxlbXM+ICAKKzwvcHJvYmxlbXM+CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RlYWRDb2RlL2NvbnN0cnVjdG9yUmVhY2hhYmxlRnJvbUZpZWxkSW5pdGlhbGl6ZXIvc3JjL3Rlc3QvQU1hdGNoZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RlYWRDb2RlL2NvbnN0cnVjdG9yUmVhY2hhYmxlRnJvbUZpZWxkSW5pdGlhbGl6ZXIvc3JjL3Rlc3QvQU1hdGNoZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMzRkMWZkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGVhZENvZGUvY29uc3RydWN0b3JSZWFjaGFibGVGcm9tRmllbGRJbml0aWFsaXplci9zcmMvdGVzdC9BTWF0Y2hlci5qYXZhCkBAIC0wLDAgKzEsOCBAQAorcGFja2FnZSB0ZXN0OworCitwdWJsaWMgY2xhc3MgQU1hdGNoZXIgaW1wbGVtZW50cyBNYXRjaGVyeworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIEJyYWNlUGFpciBbXSAgUEFJUlMgPSBuZXcgQnJhY2VQYWlyW117bmV3IEJyYWNlUGFpcigpfTsKKyAgICBwdWJsaWMgQnJhY2VQYWlyW10gZ2V0UGFpcnMoKSB7CisgICAgICAgIHJldHVybiBQQUlSUzsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kZWFkQ29kZS9jb25zdHJ1Y3RvclJlYWNoYWJsZUZyb21GaWVsZEluaXRpYWxpemVyL3NyYy90ZXN0L0JyYWNlUGFpci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGVhZENvZGUvY29uc3RydWN0b3JSZWFjaGFibGVGcm9tRmllbGRJbml0aWFsaXplci9zcmMvdGVzdC9CcmFjZVBhaXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZTQ0NGEzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGVhZENvZGUvY29uc3RydWN0b3JSZWFjaGFibGVGcm9tRmllbGRJbml0aWFsaXplci9zcmMvdGVzdC9CcmFjZVBhaXIuamF2YQpAQCAtMCwwICsxLDcgQEAKK3BhY2thZ2UgdGVzdDsKKworcHVibGljIGNsYXNzIEJyYWNlUGFpciB7CisKKyAgICBwdWJsaWMgQnJhY2VQYWlyKCkgeworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RlYWRDb2RlL2NvbnN0cnVjdG9yUmVhY2hhYmxlRnJvbUZpZWxkSW5pdGlhbGl6ZXIvc3JjL3Rlc3QvTWF0Y2hlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGVhZENvZGUvY29uc3RydWN0b3JSZWFjaGFibGVGcm9tRmllbGRJbml0aWFsaXplci9zcmMvdGVzdC9NYXRjaGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWQzNzBkZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RlYWRDb2RlL2NvbnN0cnVjdG9yUmVhY2hhYmxlRnJvbUZpZWxkSW5pdGlhbGl6ZXIvc3JjL3Rlc3QvTWF0Y2hlci5qYXZhCkBAIC0wLDAgKzEsNSBAQAorcGFja2FnZSB0ZXN0OworCitwdWJsaWMgaW50ZXJmYWNlIE1hdGNoZXIgeworICAgIEJyYWNlUGFpcltdIGdldFBhaXJzKCk7Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kZWFkQ29kZS9jb25zdHJ1Y3RvclJlYWNoYWJsZUZyb21GaWVsZEluaXRpYWxpemVyL3NyYy90ZXN0L1Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RlYWRDb2RlL2NvbnN0cnVjdG9yUmVhY2hhYmxlRnJvbUZpZWxkSW5pdGlhbGl6ZXIvc3JjL3Rlc3QvVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM1NGRiM2QKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kZWFkQ29kZS9jb25zdHJ1Y3RvclJlYWNoYWJsZUZyb21GaWVsZEluaXRpYWxpemVyL3NyYy90ZXN0L1Rlc3QuamF2YQpAQCAtMCwwICsxLDEyIEBACitwYWNrYWdlIHRlc3Q7CisKK3B1YmxpYyBjbGFzcyBUZXN0IHsKKworICAgIHB1YmxpYyBUZXN0KE1hdGNoZXIgbSkgeworICAgICAgICBCcmFjZVBhaXJbXSBicmFjZVBhaXJzID0gbS5nZXRQYWlycygpOworICAgIH0KKworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKG5ldyBUZXN0KG5ldyBBTWF0Y2hlcigpKSk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGVhZENvZGUvZW51bUluc3RhbnRpYXRpb24vZXhwZWN0ZWQueG1sIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGVhZENvZGUvZW51bUluc3RhbnRpYXRpb24vZXhwZWN0ZWQueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc5ZTFhMGYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kZWFkQ29kZS9lbnVtSW5zdGFudGlhdGlvbi9leHBlY3RlZC54bWwKQEAgLTAsMCArMSw0IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPHByb2JsZW1zPiAgCis8L3Byb2JsZW1zPgorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kZWFkQ29kZS9lbnVtSW5zdGFudGlhdGlvbi9leHRfc3JjL1Rlc3QxLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kZWFkQ29kZS9lbnVtSW5zdGFudGlhdGlvbi9leHRfc3JjL1Rlc3QxLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWQxZWU1OAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RlYWRDb2RlL2VudW1JbnN0YW50aWF0aW9uL2V4dF9zcmMvVGVzdDEuamF2YQpAQCAtMCwwICsxLDcgQEAKK3B1YmxpYyBjbGFzcyBUZXN0MSB7CisgIHZvaWQgZm9vKCkgeworICAgIGlmIChUZXN0LkZJUlNULmludmVydCgpICE9IFRlc3QuU0VDT05EKSB7CisgICAgICAvL2Fzc2VydAorICAgIH0KKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGVhZENvZGUvZW51bUluc3RhbnRpYXRpb24vc3JjL1Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RlYWRDb2RlL2VudW1JbnN0YW50aWF0aW9uL3NyYy9UZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGRiMzk4NAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RlYWRDb2RlL2VudW1JbnN0YW50aWF0aW9uL3NyYy9UZXN0LmphdmEKQEAgLTAsMCArMSw4IEBACitwdWJsaWMgZW51bSBUZXN0Cit7CisgICAgRklSU1QsIFNFQ09ORDsKKworICAgIHB1YmxpYyBUZXN0IGludmVydCgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMgPT0gRklSU1QgPyBTRUNPTkQgOiBGSVJTVDsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGVhZENvZGUvZW51bVZhbHVlcy9leHBlY3RlZC54bWwgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kZWFkQ29kZS9lbnVtVmFsdWVzL2V4cGVjdGVkLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43OWUxYTBmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGVhZENvZGUvZW51bVZhbHVlcy9leHBlY3RlZC54bWwKQEAgLTAsMCArMSw0IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPHByb2JsZW1zPiAgCis8L3Byb2JsZW1zPgorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kZWFkQ29kZS9lbnVtVmFsdWVzL3NyYy9UZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kZWFkQ29kZS9lbnVtVmFsdWVzL3NyYy9UZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzEwYmI1MgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RlYWRDb2RlL2VudW1WYWx1ZXMvc3JjL1Rlc3QuamF2YQpAQCAtMCwwICsxLDIyIEBACitwdWJsaWMgY2xhc3MgVW51c2VkRGVjbEJ1ZyB7CisKKyAgICBwdWJsaWMgc3RhdGljIGVudW0gQ29uY2VybiB7CisgICAgICAgIC8vIFRoZXNlIGZpZWxkcyBhcmUgdXNlZCEgIEp1c3QgYmVjYXVzZSBJIGRvbid0IG1lbnRpb24gdGhlbSBieSBuYW1lCisgICAgICAgIC8vIGRvZXNuJ3QgbWVhbiB0aGV5IGFyZW4ndCB1c2VkIQorICAgICAgICAvLyBJREVBIHRlbGxzIG1lIEkgbmVlZDogQFN1cHByZXNzV2FybmluZ3MoeyJVbnVzZWREZWNsYXJhdGlvbiJ9KQorICAgICAgICBMT1csCisgICAgICAgIE1FRElVTSwKKyAgICAgICAgSElHSDsKKyAgICB9OworCisgICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgeworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIkNvbmNlcm5zIGFyZToiKTsKKworICAgICAgICAvLyBJbnZva2luZyBDb25jZXJuLnZhbHVlcygpIHNob3VsZCBjb3VudCBhcyB1c2luZyBhbGwgdGhlIGZpZWxkcyBpbiB0aGUKKyAgICAgICAgLy8gZW51bS4KKyAgICAgICAgZm9yIChDb25jZXJuIGNvbmNlcm4gOiBDb25jZXJuLnZhbHVlcygpKSB7CisgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50KCJcdCIpOworICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKGNvbmNlcm4pOworICAgICAgICB9IC8vIGVuZCBmb3IKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGVhZENvZGUvZm9ybVVzYWdlL2V4cGVjdGVkLnhtbCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RlYWRDb2RlL2Zvcm1Vc2FnZS9leHBlY3RlZC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWU5MzM0OQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RlYWRDb2RlL2Zvcm1Vc2FnZS9leHBlY3RlZC54bWwKQEAgLTAsMCArMSwzIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPHByb2JsZW1zPgorPC9wcm9ibGVtcz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kZWFkQ29kZS9mb3JtVXNhZ2Uvc3JjL3AxL0Zvcm0uZm9ybSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RlYWRDb2RlL2Zvcm1Vc2FnZS9zcmMvcDEvRm9ybS5mb3JtCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRlODM1OWQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kZWFkQ29kZS9mb3JtVXNhZ2Uvc3JjL3AxL0Zvcm0uZm9ybQpAQCAtMCwwICsxLDEyIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPGZvcm0geG1sbnM9Imh0dHA6Ly93d3cuaW50ZWxsaWouY29tL3VpZGVzaWduZXIvZm9ybS8iIHZlcnNpb249IjEiIGJpbmQtdG8tY2xhc3M9InAxLkZvcm0iPgorICA8Y29tcG9uZW50IGlkPSI1NjZhNiIgY2xhc3M9ImphdmF4LnN3aW5nLkpMYWJlbCIgYmluZGluZz0ibXlMYWJlbCI+CisgICAgPGNvbnN0cmFpbnRzPgorICAgICAgPHh5IHg9IjE2NyIgeT0iMTE2IiB3aWR0aD0iMzMiIGhlaWdodD0iMTYiLz4KKyAgICAgIDxncmlkIHJvdz0iMCIgY29sdW1uPSIwIiByb3ctc3Bhbj0iMSIgY29sLXNwYW49IjEiIHZzaXplLXBvbGljeT0iMCIgaHNpemUtcG9saWN5PSIwIiBhbmNob3I9IjgiIGZpbGw9IjAiLz4KKyAgICA8L2NvbnN0cmFpbnRzPgorICAgIDxwcm9wZXJ0aWVzPgorICAgICAgPHRleHQgdmFsdWU9IkxhYmVsIi8+CisgICAgPC9wcm9wZXJ0aWVzPgorICA8L2NvbXBvbmVudD4KKzwvZm9ybT4KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RlYWRDb2RlL2Zvcm1Vc2FnZS9zcmMvcDEvRm9ybS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGVhZENvZGUvZm9ybVVzYWdlL3NyYy9wMS9Gb3JtLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmJlOTFmNgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RlYWRDb2RlL2Zvcm1Vc2FnZS9zcmMvcDEvRm9ybS5qYXZhCkBAIC0wLDAgKzEsOCBAQAorcGFja2FnZSBwMTsKKworcHVibGljIGNsYXNzIEZvcm0geworICAgIHByaXZhdGUgSkxhYmVsIG15TGFiZWw7CisKKyAgICBwcml2YXRlIHZvaWQgY3JlYXRlVUlDb21wb25lbnRzKCkgeworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kZWFkQ29kZS9qdW5pdEFic3RyYWN0Q2xhc3NXaXRoSW5oZXJpdG9yL2V4cGVjdGVkLnhtbCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RlYWRDb2RlL2p1bml0QWJzdHJhY3RDbGFzc1dpdGhJbmhlcml0b3IvZXhwZWN0ZWQueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM2M2M5MjUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kZWFkQ29kZS9qdW5pdEFic3RyYWN0Q2xhc3NXaXRoSW5oZXJpdG9yL2V4cGVjdGVkLnhtbApAQCAtMCwwICsxLDIgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8cHJvYmxlbXMvPgpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGVhZENvZGUvanVuaXRBYnN0cmFjdENsYXNzV2l0aEluaGVyaXRvci9zcmMvQ2hpbGRUZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kZWFkQ29kZS9qdW5pdEFic3RyYWN0Q2xhc3NXaXRoSW5oZXJpdG9yL3NyYy9DaGlsZFRlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNDg0MWFkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGVhZENvZGUvanVuaXRBYnN0cmFjdENsYXNzV2l0aEluaGVyaXRvci9zcmMvQ2hpbGRUZXN0LmphdmEKQEAgLTAsMCArMSBAQAorcHVibGljIGNsYXNzIENoaWxkVGVzdCBleHRlbmRzIEFic3RyYWN0VGVzdCB7fQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RlYWRDb2RlL2p1bml0QWJzdHJhY3RDbGFzc1dpdGhJbmhlcml0b3Ivc3JjL1Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RlYWRDb2RlL2p1bml0QWJzdHJhY3RDbGFzc1dpdGhJbmhlcml0b3Ivc3JjL1Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMDI4NGE5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGVhZENvZGUvanVuaXRBYnN0cmFjdENsYXNzV2l0aEluaGVyaXRvci9zcmMvVGVzdC5qYXZhCkBAIC0wLDAgKzEsNCBAQAorcHVibGljIGFic3RyYWN0IGNsYXNzIEFic3RyYWN0VGVzdCB7CisgIEBvcmcuanVuaXQuVGVzdAorICBwdWJsaWMgdm9pZCB0ZXN0U210aCgpIHt9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGVhZENvZGUvanVuaXRBYnN0cmFjdENsYXNzV2l0aG91dEluaGVyaXRvci9leHBlY3RlZC54bWwgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kZWFkQ29kZS9qdW5pdEFic3RyYWN0Q2xhc3NXaXRob3V0SW5oZXJpdG9yL2V4cGVjdGVkLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMzA3NWFiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGVhZENvZGUvanVuaXRBYnN0cmFjdENsYXNzV2l0aG91dEluaGVyaXRvci9leHBlY3RlZC54bWwKQEAgLTAsMCArMSw5IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPHByb2JsZW1zPgorICA8cHJvYmxlbT4KKyAgICA8ZmlsZT5UZXN0LmphdmE8L2ZpbGU+CisgICAgPGxpbmU+MzwvbGluZT4KKyAgICA8ZW50cnlfcG9pbnQgVFlQRT0ibWV0aG9kIiBGUU5BTUU9IkFic3RyYWN0VGVzdCB2b2lkIHRlc3RTbXRoKCkiLz4KKyAgICA8ZGVzY3JpcHRpb24+TWV0aG9kIGlzIG5ldmVyIHVzZWQuPC9kZXNjcmlwdGlvbj4KKyAgPC9wcm9ibGVtPgorPC9wcm9ibGVtcz4KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RlYWRDb2RlL2p1bml0QWJzdHJhY3RDbGFzc1dpdGhvdXRJbmhlcml0b3Ivc3JjL1Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RlYWRDb2RlL2p1bml0QWJzdHJhY3RDbGFzc1dpdGhvdXRJbmhlcml0b3Ivc3JjL1Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMDI4NGE5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGVhZENvZGUvanVuaXRBYnN0cmFjdENsYXNzV2l0aG91dEluaGVyaXRvci9zcmMvVGVzdC5qYXZhCkBAIC0wLDAgKzEsNCBAQAorcHVibGljIGFic3RyYWN0IGNsYXNzIEFic3RyYWN0VGVzdCB7CisgIEBvcmcuanVuaXQuVGVzdAorICBwdWJsaWMgdm9pZCB0ZXN0U210aCgpIHt9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGVhZENvZGUvanVuaXRFbnRyeVBvaW50L2V4cGVjdGVkLnhtbCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RlYWRDb2RlL2p1bml0RW50cnlQb2ludC9leHBlY3RlZC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmUyMGJkZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RlYWRDb2RlL2p1bml0RW50cnlQb2ludC9leHBlY3RlZC54bWwKQEAgLTAsMCArMSwxNiBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxwcm9ibGVtcz4KKyAgPHByb2JsZW0+CisgICAgPGZpbGU+VGVzdC5qYXZhPC9maWxlPgorICAgIDxsaW5lPjE0PC9saW5lPgorICAgIDxlbnRyeV9wb2ludCBUWVBFPSJtZXRob2QiIEZRTkFNRT0iVGVzdCB2b2lkIG5vdEFUZXN0KCkiLz4KKyAgICA8ZGVzY3JpcHRpb24+TWV0aG9kIGlzIG5ldmVyIHVzZWQuPC9kZXNjcmlwdGlvbj4KKyAgPC9wcm9ibGVtPgorICA8cHJvYmxlbT4KKyAgICA8ZmlsZT5UZXN0LmphdmE8L2ZpbGU+CisgICAgPGxpbmU+ODwvbGluZT4KKyAgICA8ZW50cnlfcG9pbnQgVFlQRT0ibWV0aG9kIiBGUU5BTUU9IlRlc3Qgdm9pZCB0ZXN0U210aCgpIi8+CisgICAgPGRlc2NyaXB0aW9uPk1ldGhvZCBpcyBuZXZlciB1c2VkLjwvZGVzY3JpcHRpb24+CisgIDwvcHJvYmxlbT4KKzwvcHJvYmxlbXM+CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RlYWRDb2RlL2p1bml0RW50cnlQb2ludC9zcmMvQS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGVhZENvZGUvanVuaXRFbnRyeVBvaW50L3NyYy9BLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTY5ZGUyOQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RlYWRDb2RlL2p1bml0RW50cnlQb2ludC9zcmMvQS5qYXZhCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kZWFkQ29kZS9qdW5pdEVudHJ5UG9pbnQvc3JjL0kuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RlYWRDb2RlL2p1bml0RW50cnlQb2ludC9zcmMvSS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMwZTE4ZGNiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGVhZENvZGUvanVuaXRFbnRyeVBvaW50L3NyYy9JLmphdmEKQEAgLTAsMCArMSwzIEBACitwdWJsaWMgaW50ZXJmYWNlIEkgeworICBBIGNyZWF0ZSgpOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RlYWRDb2RlL2p1bml0RW50cnlQb2ludC9zcmMvSUltcGwuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RlYWRDb2RlL2p1bml0RW50cnlQb2ludC9zcmMvSUltcGwuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMDQ1YWIwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGVhZENvZGUvanVuaXRFbnRyeVBvaW50L3NyYy9JSW1wbC5qYXZhCkBAIC0wLDAgKzEsNSBAQAorcHVibGljIGNsYXNzIElJbXBsIGV4dGVuZHMgSSB7CisgIHB1YmxpYyBBIGNyZWF0ZSgpIHsKKyAgICByZXR1cm4gbmV3IEEoKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RlYWRDb2RlL2p1bml0RW50cnlQb2ludC9zcmMvVGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGVhZENvZGUvanVuaXRFbnRyeVBvaW50L3NyYy9UZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTFlZWMxNgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RlYWRDb2RlL2p1bml0RW50cnlQb2ludC9zcmMvVGVzdC5qYXZhCkBAIC0wLDAgKzEsMTUgQEAKK3B1YmxpYyBjbGFzcyBUZXN0IHsKKyAgcHVibGljIHN0YXRpYyBqdW5pdC5mcmFtZXdvcmsuVGVzdCBzdWl0ZSgpIHsKKyAgICBJIGkgPSBuZXcgSUltcGwoKTsKKyAgICBBIGEgPSBpLmNyZWF0ZSgpOworICAgIHJldHVybiBudWxsOworICB9CisKKyAgcHVibGljIHZvaWQgdGVzdFNtdGgoKSB7fQorCisgIHB1YmxpYyB2b2lkIHNldFVwKCkge30KKworICBwdWJsaWMgdm9pZCB0ZWFyRG93bigpe30KKworICBwdWJsaWMgdm9pZCBub3RBVGVzdCgpe30KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kZWFkQ29kZS9qdW5pdEVudHJ5UG9pbnRDdXN0b21SdW5XaXRoL2V4cGVjdGVkLnhtbCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RlYWRDb2RlL2p1bml0RW50cnlQb2ludEN1c3RvbVJ1bldpdGgvZXhwZWN0ZWQueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM2M2M5MjUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kZWFkQ29kZS9qdW5pdEVudHJ5UG9pbnRDdXN0b21SdW5XaXRoL2V4cGVjdGVkLnhtbApAQCAtMCwwICsxLDIgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8cHJvYmxlbXMvPgpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGVhZENvZGUvanVuaXRFbnRyeVBvaW50Q3VzdG9tUnVuV2l0aC9zcmMvVGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGVhZENvZGUvanVuaXRFbnRyeVBvaW50Q3VzdG9tUnVuV2l0aC9zcmMvVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM0YmQ0NTkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kZWFkQ29kZS9qdW5pdEVudHJ5UG9pbnRDdXN0b21SdW5XaXRoL3NyYy9UZXN0LmphdmEKQEAgLTAsMCArMSwxMCBAQAorQG9yZy5qdW5pdC5ydW5uZXIuUnVuV2l0aChVbnJlc29sdmVkUnVubmVyLmNsYXNzKQorcHVibGljIGNsYXNzIFRlc3QgeworICBwdWJsaWMgdm9pZCB0ZXN0U210aCgpIHt9CisKKyAgcHVibGljIHZvaWQgc2V0VXAoKSB7fQorCisgIHB1YmxpYyB2b2lkIHRlYXJEb3duKCl7fQorCisgIHB1YmxpYyB2b2lkIG5vdEFUZXN0QnV0Q2FuQmVSdW5uZWRXaXRoQ3VzdG9tUnVubmVyKCl7fQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RlYWRDb2RlL211dGFibGVDYWxscy9leHBlY3RlZC54bWwgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kZWFkQ29kZS9tdXRhYmxlQ2FsbHMvZXhwZWN0ZWQueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk4ZjQ4YWUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kZWFkQ29kZS9tdXRhYmxlQ2FsbHMvZXhwZWN0ZWQueG1sCkBAIC0wLDAgKzEsMTYgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8cHJvYmxlbXM+CisgIDxwcm9ibGVtPgorICAgIDxmaWxlPkEuamF2YTwvZmlsZT4KKyAgICA8bGluZT4yPC9saW5lPgorICAgIDxwcm9ibGVtX2NsYXNzPnVudXNlZCBkZWNsYXJhdGlvbjwvcHJvYmxlbV9jbGFzcz4KKyAgICA8ZGVzY3JpcHRpb24+TWV0aG9kIGhhcyB1c2FnZShzKSBidXQgdGhleSBhbGwgYmVsb25nIHRvIHJlY3Vyc2l2ZSBjYWxscyBjaGFpbiB0aGF0IGhhcyBubyBtZW1iZXJzIHJlYWNoYWJsZSBmcm9tIGVudHJ5IHBvaW50cy48L2Rlc2NyaXB0aW9uPgorICA8L3Byb2JsZW0+CisgIDxwcm9ibGVtPgorICAgIDxmaWxlPkEuamF2YTwvZmlsZT4KKyAgICA8bGluZT41PC9saW5lPgorICAgIDxwcm9ibGVtX2NsYXNzPnVudXNlZCBkZWNsYXJhdGlvbjwvcHJvYmxlbV9jbGFzcz4KKyAgICA8ZGVzY3JpcHRpb24+TWV0aG9kIGhhcyB1c2FnZShzKSBidXQgdGhleSBhbGwgYmVsb25nIHRvIHJlY3Vyc2l2ZSBjYWxscyBjaGFpbiB0aGF0IGhhcyBubyBtZW1iZXJzIHJlYWNoYWJsZSBmcm9tIGVudHJ5IHBvaW50cy48L2Rlc2NyaXB0aW9uPgorICA8L3Byb2JsZW0+Cis8L3Byb2JsZW1zPgorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kZWFkQ29kZS9tdXRhYmxlQ2FsbHMvc3JjL0EuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RlYWRDb2RlL211dGFibGVDYWxscy9zcmMvQS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI4ZTM2Y2MKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kZWFkQ29kZS9tdXRhYmxlQ2FsbHMvc3JjL0EuamF2YQpAQCAtMCwwICsxLDkgQEAKK3B1YmxpYyBjbGFzcyBBIHsKKyAgIHByaXZhdGUgdm9pZCBhKCl7CisgICAgIGIoKTsKKyAgIH0KKyAgIHByaXZhdGUgdm9pZCBiKCl7CisgICAgIGEoKTsKKyAgIH0KK30KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGVhZENvZGUvbm9uSmF2YVJlZmVyZW5jZXMvZXhwZWN0ZWQueG1sIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGVhZENvZGUvbm9uSmF2YVJlZmVyZW5jZXMvZXhwZWN0ZWQueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc0NTQ3ODIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kZWFkQ29kZS9ub25KYXZhUmVmZXJlbmNlcy9leHBlY3RlZC54bWwKQEAgLTAsMCArMSw5IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPHByb2JsZW1zPgorICA8cHJvYmxlbT4KKyAgICA8ZmlsZT5UZXN0LmphdmE8L2ZpbGU+CisgICAgPGxpbmU+MjwvbGluZT4KKyAgICA8ZGVzY3JpcHRpb24+RmllbGQgaGFzIG5vIHVzYWdlcy48L2Rlc2NyaXB0aW9uPgorICA8L3Byb2JsZW0+Cis8L3Byb2JsZW1zPgorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kZWFkQ29kZS9ub25KYXZhUmVmZXJlbmNlcy9leHRfc3JjL3Jlcy54bWwgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kZWFkQ29kZS9ub25KYXZhUmVmZXJlbmNlcy9leHRfc3JjL3Jlcy54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzgwMDliYgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RlYWRDb2RlL25vbkphdmFSZWZlcmVuY2VzL2V4dF9zcmMvcmVzLnhtbApAQCAtMCwwICsxIEBACis8cm9vdD5UZXN0PC9yb290PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RlYWRDb2RlL25vbkphdmFSZWZlcmVuY2VzL3NyYy9UZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kZWFkQ29kZS9ub25KYXZhUmVmZXJlbmNlcy9zcmMvVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNkYTRhN2UKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kZWFkQ29kZS9ub25KYXZhUmVmZXJlbmNlcy9zcmMvVGVzdC5qYXZhCkBAIC0wLDAgKzEsMyBAQAorcHVibGljIGNsYXNzIFRlc3QgeworICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBMT0cgPSBUZXN0LmNsYXNzLmdldE5hbWUoKTsgICAKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kZWFkQ29kZS9wYWNrYWdlTG9jYWwvZXhwZWN0ZWQueG1sIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGVhZENvZGUvcGFja2FnZUxvY2FsL2V4cGVjdGVkLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43N2YxNmU5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGVhZENvZGUvcGFja2FnZUxvY2FsL2V4cGVjdGVkLnhtbApAQCAtMCwwICsxLDEwIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPHByb2JsZW1zPgorICA8cHJvYmxlbT4KKyAgICA8ZmlsZT5BLmphdmE8L2ZpbGU+CisgICAgPGxpbmU+MzwvbGluZT4KKyAgICA8cHJvYmxlbV9jbGFzcz51bnVzZWQgZGVjbGFyYXRpb248L3Byb2JsZW1fY2xhc3M+CisgICAgPGRlc2NyaXB0aW9uPkNsYXNzIGlzIG5vdCBpbnN0YW50aWF0ZWQuPC9kZXNjcmlwdGlvbj4KKyAgPC9wcm9ibGVtPgorPC9wcm9ibGVtcz4KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGVhZENvZGUvcGFja2FnZUxvY2FsL3NyYy9BLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kZWFkQ29kZS9wYWNrYWdlTG9jYWwvc3JjL0EuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42OWQ4NjZkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGVhZENvZGUvcGFja2FnZUxvY2FsL3NyYy9BLmphdmEKQEAgLTAsMCArMSw4IEBACitjbGFzcyBBIHsKK30KK2NsYXNzIEJ7CisgIHByaXZhdGUgdm9pZCBiKCl7CisgICAgbmV3IEIoKTsKKyAgfQorfQorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kZWFkQ29kZS9yZWFjaGFibGVGcm9tRmllbGRBcnJheUluaXRpYWxpemVyL2V4cGVjdGVkLnhtbCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RlYWRDb2RlL3JlYWNoYWJsZUZyb21GaWVsZEFycmF5SW5pdGlhbGl6ZXIvZXhwZWN0ZWQueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc5ZTFhMGYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kZWFkQ29kZS9yZWFjaGFibGVGcm9tRmllbGRBcnJheUluaXRpYWxpemVyL2V4cGVjdGVkLnhtbApAQCAtMCwwICsxLDQgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8cHJvYmxlbXM+ICAKKzwvcHJvYmxlbXM+CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RlYWRDb2RlL3JlYWNoYWJsZUZyb21GaWVsZEFycmF5SW5pdGlhbGl6ZXIvc3JjL0ludGVyZmFjZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGVhZENvZGUvcmVhY2hhYmxlRnJvbUZpZWxkQXJyYXlJbml0aWFsaXplci9zcmMvSW50ZXJmYWNlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2ZjNDhhYwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RlYWRDb2RlL3JlYWNoYWJsZUZyb21GaWVsZEFycmF5SW5pdGlhbGl6ZXIvc3JjL0ludGVyZmFjZS5qYXZhCkBAIC0wLDAgKzEsMyBAQAoraW50ZXJmYWNlIEludGVyZmFjZSB7CisgIGludFtdIGdldEZpZWxkKCk7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGVhZENvZGUvcmVhY2hhYmxlRnJvbUZpZWxkQXJyYXlJbml0aWFsaXplci9zcmMvVGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGVhZENvZGUvcmVhY2hhYmxlRnJvbUZpZWxkQXJyYXlJbml0aWFsaXplci9zcmMvVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU0MjlmMWUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kZWFkQ29kZS9yZWFjaGFibGVGcm9tRmllbGRBcnJheUluaXRpYWxpemVyL3NyYy9UZXN0LmphdmEKQEAgLTAsMCArMSwxNiBAQAorcHVibGljIGNsYXNzIFRlc3QgaW1wbGVtZW50cyBJbnRlcmZhY2V7CisgICBwdWJsaWMgc3RhdGljIGludFtdIG15RmllbGQgPSBuZXcgaW50W10ge2luaXQoKX07CisKKyAgIHB1YmxpYyBzdGF0aWMgaW50IGluaXQoKSB7CisgICAgIHJldHVybiAxOworICAgfQorICAgCisgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKXsKKyAgICAgSW50ZXJmYWNlIGkgPSBuZXcgVGVzdCgpOworICAgICBTeXN0ZW0ub3V0LnByaW50bG4oaS5nZXRGaWVsZCgpKTsKKyAgIH0KKworICAgcHVibGljIGludFtdIGdldEZpZWxkKCkgeworICAgICByZXR1cm4gbXlGaWVsZDsKKyAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kZWFkQ29kZS9yZWFjaGFibGVGcm9tRmllbGRJbml0aWFsaXplci9leHBlY3RlZC54bWwgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kZWFkQ29kZS9yZWFjaGFibGVGcm9tRmllbGRJbml0aWFsaXplci9leHBlY3RlZC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzllMWEwZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RlYWRDb2RlL3JlYWNoYWJsZUZyb21GaWVsZEluaXRpYWxpemVyL2V4cGVjdGVkLnhtbApAQCAtMCwwICsxLDQgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8cHJvYmxlbXM+ICAKKzwvcHJvYmxlbXM+CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RlYWRDb2RlL3JlYWNoYWJsZUZyb21GaWVsZEluaXRpYWxpemVyL3NyYy9JbnRlcmZhY2UuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RlYWRDb2RlL3JlYWNoYWJsZUZyb21GaWVsZEluaXRpYWxpemVyL3NyYy9JbnRlcmZhY2UuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZjk1OTg4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGVhZENvZGUvcmVhY2hhYmxlRnJvbUZpZWxkSW5pdGlhbGl6ZXIvc3JjL0ludGVyZmFjZS5qYXZhCkBAIC0wLDAgKzEsMyBAQAoraW50ZXJmYWNlIEludGVyZmFjZSB7CisgIGludCBnZXRGaWVsZCgpOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RlYWRDb2RlL3JlYWNoYWJsZUZyb21GaWVsZEluaXRpYWxpemVyL3NyYy9UZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kZWFkQ29kZS9yZWFjaGFibGVGcm9tRmllbGRJbml0aWFsaXplci9zcmMvVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNlNTQ3NjQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kZWFkQ29kZS9yZWFjaGFibGVGcm9tRmllbGRJbml0aWFsaXplci9zcmMvVGVzdC5qYXZhCkBAIC0wLDAgKzEsMTYgQEAKK3B1YmxpYyBjbGFzcyBUZXN0IGltcGxlbWVudHMgSW50ZXJmYWNleworICAgcHVibGljIGludCBteUZpZWxkID0gaW5pdCgpOworCisgICBwdWJsaWMgaW50IGluaXQoKSB7CisgICAgIHJldHVybiAxOworICAgfQorICAgCisgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKXsKKyAgICAgSW50ZXJmYWNlIGkgPSBuZXcgVGVzdCgpOworICAgICBTeXN0ZW0ub3V0LnByaW50bG4oaS5nZXRGaWVsZCgpKTsKKyAgIH0KKworICAgcHVibGljIGludCBnZXRGaWVsZCgpIHsKKyAgICAgcmV0dXJuIG15RmllbGQ7CisgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGVhZENvZGUvcmVhY2hhYmxlRnJvbU1haW4vZXhwZWN0ZWQueG1sIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGVhZENvZGUvcmVhY2hhYmxlRnJvbU1haW4vZXhwZWN0ZWQueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc5ZTFhMGYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kZWFkQ29kZS9yZWFjaGFibGVGcm9tTWFpbi9leHBlY3RlZC54bWwKQEAgLTAsMCArMSw0IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPHByb2JsZW1zPiAgCis8L3Byb2JsZW1zPgorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kZWFkQ29kZS9yZWFjaGFibGVGcm9tTWFpbi9zcmMvQS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGVhZENvZGUvcmVhY2hhYmxlRnJvbU1haW4vc3JjL0EuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41Y2NmMjg2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGVhZENvZGUvcmVhY2hhYmxlRnJvbU1haW4vc3JjL0EuamF2YQpAQCAtMCwwICsxLDEwIEBACitwdWJsaWMgY2xhc3MgQSB7CisgICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgeworICAgICAgICBCLmIoKTsKKyAgICB9CisgICAgcHJpdmF0ZSBzdGF0aWMgY2xhc3MgQnsKKyAgICAgICAgcHVibGljIHN0YXRpYyBCIGIoKXsKKyAgICAgICAgICAgIHJldHVybiBuZXcgQigpOworICAgICAgICB9CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGVhZENvZGUvcmVhY2hhYmxlRnJvbVhtbC9leHBlY3RlZC54bWwgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kZWFkQ29kZS9yZWFjaGFibGVGcm9tWG1sL2V4cGVjdGVkLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43OWUxYTBmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGVhZENvZGUvcmVhY2hhYmxlRnJvbVhtbC9leHBlY3RlZC54bWwKQEAgLTAsMCArMSw0IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPHByb2JsZW1zPiAgCis8L3Byb2JsZW1zPgorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kZWFkQ29kZS9yZWFjaGFibGVGcm9tWG1sL3NyYy9BLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kZWFkQ29kZS9yZWFjaGFibGVGcm9tWG1sL3NyYy9BLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDkzMzJhZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RlYWRDb2RlL3JlYWNoYWJsZUZyb21YbWwvc3JjL0EuamF2YQpAQCAtMCwwICsxLDUgQEAKK3B1YmxpYyBjbGFzcyBBIHsKKyAgcHVibGljIEEoKSB7CisKKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGVhZENvZGUvcmVhY2hhYmxlRnJvbVhtbC9zcmMvY29tcHMueG1sIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGVhZENvZGUvcmVhY2hhYmxlRnJvbVhtbC9zcmMvY29tcHMueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUyNWRjYWQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kZWFkQ29kZS9yZWFjaGFibGVGcm9tWG1sL3NyYy9jb21wcy54bWwKQEAgLTAsMCArMSBAQAorPGNvbXBvbmVudD5BPC9jb21wb25lbnQ+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGVhZENvZGUvc2VyaWFsaXphYmxlL2V4cGVjdGVkLnhtbCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RlYWRDb2RlL3NlcmlhbGl6YWJsZS9leHBlY3RlZC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWU5MzM0OQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RlYWRDb2RlL3NlcmlhbGl6YWJsZS9leHBlY3RlZC54bWwKQEAgLTAsMCArMSwzIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPHByb2JsZW1zPgorPC9wcm9ibGVtcz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kZWFkQ29kZS9zZXJpYWxpemFibGUvZXh0X3NyYy9FeHRlcm5hbC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGVhZENvZGUvc2VyaWFsaXphYmxlL2V4dF9zcmMvRXh0ZXJuYWwuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZTE3YmExCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGVhZENvZGUvc2VyaWFsaXphYmxlL2V4dF9zcmMvRXh0ZXJuYWwuamF2YQpAQCAtMCwwICsxLDUgQEAKK3B1YmxpYyBjbGFzcyBFeHRlcm5hbCB7CisgIHsKKyAgICBuZXcgVGVzdCgpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGVhZENvZGUvc2VyaWFsaXphYmxlL3NyYy9UZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kZWFkQ29kZS9zZXJpYWxpemFibGUvc3JjL1Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YWZiMGVjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGVhZENvZGUvc2VyaWFsaXphYmxlL3NyYy9UZXN0LmphdmEKQEAgLTAsMCArMSw2IEBACitwdWJsaWMgY2xhc3MgVGVzdCBpbXBsZW1lbnRzIGphdmEuaW8uU2VyaWFsaXphYmxlIHsKKyAgcHJpdmF0ZSB2b2lkIHdyaXRlT2JqZWN0KGphdmEuaW8uT2JqZWN0T3V0cHV0U3RyZWFtIG91dCkge30KKyAgcHJpdmF0ZSB2b2lkIHJlYWRPYmplY3QoamF2YS5pby5PYmplY3RJbnB1dFN0cmVhbSBpbikge30KKyAgcHVibGljIE9iamVjdCB3cml0ZVJlcGxhY2UoKSB7IHJldHVybiBudWxsOyB9CisgIHB1YmxpYyBPYmplY3QgcmVhZFJlc29sdmUoKSB7IHJldHVybiBudWxsOyB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGVhZENvZGUvc2luZ2xldG9uL2V4cGVjdGVkLnhtbCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RlYWRDb2RlL3NpbmdsZXRvbi9leHBlY3RlZC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDcwNGQ1OAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RlYWRDb2RlL3NpbmdsZXRvbi9leHBlY3RlZC54bWwKQEAgLTAsMCArMSw0IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPHByb2JsZW1zPgorPC9wcm9ibGVtcz4KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGVhZENvZGUvc2luZ2xldG9uL3NyYy9NYWluLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kZWFkQ29kZS9zaW5nbGV0b24vc3JjL01haW4uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zOGY5MGQyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGVhZENvZGUvc2luZ2xldG9uL3NyYy9NYWluLmphdmEKQEAgLTAsMCArMSw1IEBACitwdWJsaWMgY2xhc3MgTWFpbiB7CisgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmcgYXJnc1tdKSB7CisgICAgICBTaW5nbGV0b24uZ2V0SW5zdGFuY2UoKTsKKyAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kZWFkQ29kZS9zaW5nbGV0b24vc3JjL1NpbmdsZXRvbi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGVhZENvZGUvc2luZ2xldG9uL3NyYy9TaW5nbGV0b24uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41Mjc4MmRkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGVhZENvZGUvc2luZ2xldG9uL3NyYy9TaW5nbGV0b24uamF2YQpAQCAtMCwwICsxLDcgQEAKK3B1YmljIGNsYXNzIFNpbmdsZXRvbiB7CisgICBwcml2YXRlIHN0YXRpYyBTaW5nbGV0b24gb3VySW5zdGFuY2UgPSBuZXcgU2luZ2xldG9uKCk7CisKKyAgIHB1YmxpYyBTaW5nbGV0b24gZ2V0SW5zdGFuY2UoKSB7CisgICAgICByZXR1cm4gb3VySW5zdGFuY2U7CisgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGVhZENvZGUvc3RhdGljTWV0aG9kcy9leHBlY3RlZC54bWwgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kZWFkQ29kZS9zdGF0aWNNZXRob2RzL2V4cGVjdGVkLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MDAxNzUwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGVhZENvZGUvc3RhdGljTWV0aG9kcy9leHBlY3RlZC54bWwKQEAgLTAsMCArMSwxMCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxwcm9ibGVtcz4KKyAgPHByb2JsZW0+CisgICAgPGZpbGU+QS5qYXZhPC9maWxlPgorICAgIDxsaW5lPjM8L2xpbmU+CisgICAgPHByb2JsZW1fY2xhc3M+dW51c2VkIGRlY2xhcmF0aW9uPC9wcm9ibGVtX2NsYXNzPgorICAgIDxkZXNjcmlwdGlvbj5NZXRob2QgaXMgbmV2ZXIgdXNlZC48L2Rlc2NyaXB0aW9uPgorICA8L3Byb2JsZW0+Cis8L3Byb2JsZW1zPgorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kZWFkQ29kZS9zdGF0aWNNZXRob2RzL3NyYy9BLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kZWFkQ29kZS9zdGF0aWNNZXRob2RzL3NyYy9BLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzgxMTViYgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RlYWRDb2RlL3N0YXRpY01ldGhvZHMvc3JjL0EuamF2YQpAQCAtMCwwICsxLDcgQEAKK3B1YmxpYyBjbGFzcyBBIHsKKyAgcHJpdmF0ZSBBKCl7fQorICBwdWJsaWMgc3RhdGljIEEgZ2V0SW5zdGFuY2UoKXsKKyAgICByZXR1cm4gbmV3IEEoKTsKKyAgfQorfQorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kZWFkQ29kZS9zdXBwcmVzcy9leHBlY3RlZC54bWwgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kZWFkQ29kZS9zdXBwcmVzcy9leHBlY3RlZC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzllMWEwZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RlYWRDb2RlL3N1cHByZXNzL2V4cGVjdGVkLnhtbApAQCAtMCwwICsxLDQgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8cHJvYmxlbXM+ICAKKzwvcHJvYmxlbXM+CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RlYWRDb2RlL3N1cHByZXNzL2V4dF9zcmMvQi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGVhZENvZGUvc3VwcHJlc3MvZXh0X3NyYy9CLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGJiMGU1OQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RlYWRDb2RlL3N1cHByZXNzL2V4dF9zcmMvQi5qYXZhCkBAIC0wLDAgKzEsNCBAQAorY2xhc3MgQiB7CisgICAgQSBhPW5ldyBBKDApOworfQorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kZWFkQ29kZS9zdXBwcmVzcy9zcmMvQS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGVhZENvZGUvc3VwcHJlc3Mvc3JjL0EuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMThiYzBkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGVhZENvZGUvc3VwcHJlc3Mvc3JjL0EuamF2YQpAQCAtMCwwICsxLDkgQEAKK2NsYXNzIEEgeworICAgIEBqYXZhLmxhbmcuU3VwcHJlc3NXYXJuaW5ncyh7IlVudXNlZERlY2xhcmF0aW9uIn0pCisgICAgQSgpIHsKKyAgICB9CisgICAgQShpbnQgaykgeworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oayk7CisgICAgfQorfQorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kZWFkQ29kZS9zdXBwcmVzczEvZXhwZWN0ZWQueG1sIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGVhZENvZGUvc3VwcHJlc3MxL2V4cGVjdGVkLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43OWUxYTBmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGVhZENvZGUvc3VwcHJlc3MxL2V4cGVjdGVkLnhtbApAQCAtMCwwICsxLDQgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8cHJvYmxlbXM+ICAKKzwvcHJvYmxlbXM+CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RlYWRDb2RlL3N1cHByZXNzMS9zcmMvQS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGVhZENvZGUvc3VwcHJlc3MxL3NyYy9BLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDM0MTY1ZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RlYWRDb2RlL3N1cHByZXNzMS9zcmMvQS5qYXZhCkBAIC0wLDAgKzEsOCBAQAorY2xhc3MgQSB7CisgICAgQGphdmEubGFuZy5TdXBwcmVzc1dhcm5pbmdzKHsiVW51c2VkRGVjbGFyYXRpb24ifSkKKyAgICBBKCkgeworICAgICAgbmV3IEIoKTsKKyAgICB9CisKK30KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGVhZENvZGUvc3VwcHJlc3MxL3NyYy9CLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kZWFkQ29kZS9zdXBwcmVzczEvc3JjL0IuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NzFjMmRjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGVhZENvZGUvc3VwcHJlc3MxL3NyYy9CLmphdmEKQEAgLTAsMCArMSwzIEBACitjbGFzcyBCIHsKKyAgQigpe30KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kZWFkQ29kZS9zdXBwcmVzczIvZXhwZWN0ZWQueG1sIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGVhZENvZGUvc3VwcHJlc3MyL2V4cGVjdGVkLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43OWUxYTBmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGVhZENvZGUvc3VwcHJlc3MyL2V4cGVjdGVkLnhtbApAQCAtMCwwICsxLDQgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8cHJvYmxlbXM+ICAKKzwvcHJvYmxlbXM+CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RlYWRDb2RlL3N1cHByZXNzMi9zcmMvQS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGVhZENvZGUvc3VwcHJlc3MyL3NyYy9BLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGE2YjY5YQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RlYWRDb2RlL3N1cHByZXNzMi9zcmMvQS5qYXZhCkBAIC0wLDAgKzEsOCBAQAorY2xhc3MgQSB7CisgICAgQGphdmEubGFuZy5TdXBwcmVzc1dhcm5pbmdzKHsiVW51c2VkRGVjbGFyYXRpb24ifSkKKyAgICBBKCkgeworICAgICAgQiBiYiA9IG5ldyBCKCk7CisgICAgfQorCit9CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RlYWRDb2RlL3N1cHByZXNzMi9zcmMvQi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGVhZENvZGUvc3VwcHJlc3MyL3NyYy9CLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTEzNjc5NAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RlYWRDb2RlL3N1cHByZXNzMi9zcmMvQi5qYXZhCkBAIC0wLDAgKzEsMyBAQAorY2xhc3MgQiB7CisgIAorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RlYWRDb2RlL3VzYWdlc0luQW5vbnltb3VzL2V4cGVjdGVkLnhtbCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RlYWRDb2RlL3VzYWdlc0luQW5vbnltb3VzL2V4cGVjdGVkLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43OWUxYTBmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGVhZENvZGUvdXNhZ2VzSW5Bbm9ueW1vdXMvZXhwZWN0ZWQueG1sCkBAIC0wLDAgKzEsNCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxwcm9ibGVtcz4gIAorPC9wcm9ibGVtcz4KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGVhZENvZGUvdXNhZ2VzSW5Bbm9ueW1vdXMvc3JjL1Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RlYWRDb2RlL3VzYWdlc0luQW5vbnltb3VzL3NyYy9UZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmMzMjA5YwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RlYWRDb2RlL3VzYWdlc0luQW5vbnltb3VzL3NyYy9UZXN0LmphdmEKQEAgLTAsMCArMSwxNiBAQAorcHVibGljIGNsYXNzIE15Q2xhc3MgeworICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CisgICAgbmV3IFBhcmVudChtZXRob2QoKSkgeworICAgIH07CisgIH0KKworICBwdWJsaWMgc3RhdGljIFN0cmluZyBtZXRob2QoKSB7CisgICAgcmV0dXJuICIiOworICB9CisKKyAgcHVibGljIHN0YXRpYyBjbGFzcyBQYXJlbnQgeworICAgIHByb3RlY3RlZCBQYXJlbnQoT2JqZWN0IG8pIHsKKyAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihvKTsKKyAgICB9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kZWZVc2UvQXJyYXlMZW5ndGgvZXhwZWN0ZWQueG1sIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGVmVXNlL0FycmF5TGVuZ3RoL2V4cGVjdGVkLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNzA0ZDU4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGVmVXNlL0FycmF5TGVuZ3RoL2V4cGVjdGVkLnhtbApAQCAtMCwwICsxLDQgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8cHJvYmxlbXM+Cis8L3Byb2JsZW1zPgorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kZWZVc2UvQXJyYXlMZW5ndGgvc3JjL0Zvby5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGVmVXNlL0FycmF5TGVuZ3RoL3NyYy9Gb28uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMTI2YWVlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGVmVXNlL0FycmF5TGVuZ3RoL3NyYy9Gb28uamF2YQpAQCAtMCwwICsxLDYgQEAKK3B1YmxpYyBjbGFzcyBGb28geworICBwdWJsaWMgdm9pZCBmb28oKSB7CisgICAgaW50W10gYXJyYXkgPSBuZXcgaW50WzVdOworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgYXJyYXkubGVuZ3RoOyBpKyspIHt9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kZWZVc2UvSGFuZy9leHBlY3RlZC54bWwgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kZWZVc2UvSGFuZy9leHBlY3RlZC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDcwNGQ1OAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RlZlVzZS9IYW5nL2V4cGVjdGVkLnhtbApAQCAtMCwwICsxLDQgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8cHJvYmxlbXM+Cis8L3Byb2JsZW1zPgorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kZWZVc2UvSGFuZy9zcmMvRm9vLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kZWZVc2UvSGFuZy9zcmMvRm9vLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDZiMjBmOAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RlZlVzZS9IYW5nL3NyYy9Gb28uamF2YQpAQCAtMCwwICsxLDEwOSBAQAorcHVibGljIGNsYXNzIERlZlVzZSB7CisKKyAgICBwcml2YXRlIGludCBkZWZsYXRlX2Zhc3QoaW50IGZsdXNoLCBpbnQgbG9va2FoZWFkLCBpbnQgbWF0Y2hfbGVuZ3RoKSB7CisgICAgICAgIC8vICAgIHNob3J0IGhhc2hfaGVhZCA9IDA7IC8vIGhlYWQgb2YgdGhlIGhhc2ggY2hhaW4KKyAgICAgICAgaW50IGhhc2hfaGVhZCA9IDA7IC8vIGhlYWQgb2YgdGhlIGhhc2ggY2hhaW4KKyAgICAgICAgYm9vbGVhbiBiZmx1c2g7IC8vIHNldCBpZiBjdXJyZW50IGJsb2NrIG11c3QgYmUgZmx1c2hlZAorCisgICAgICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgICAgICAvLyBNYWtlIHN1cmUgdGhhdCB3ZSBhbHdheXMgaGF2ZSBlbm91Z2ggbG9va2FoZWFkLCBleGNlcHQKKyAgICAgICAgICAgIC8vIGF0IHRoZSBlbmQgb2YgdGhlIGlucHV0IGZpbGUuIFdlIG5lZWQgTUFYX01BVENIIGJ5dGVzCisgICAgICAgICAgICAvLyBmb3IgdGhlIG5leHQgbWF0Y2gsIHBsdXMgTUlOX01BVENIIGJ5dGVzIHRvIGluc2VydCB0aGUKKyAgICAgICAgICAgIC8vIHN0cmluZyBmb2xsb3dpbmcgdGhlIG5leHQgbWF0Y2guCisgICAgICAgICAgICBpZiAobG9va2FoZWFkIDwgMSkgeworICAgICAgICAgICAgICAgIGlmIChsb29rYWhlYWQgPCAxICYmIGZsdXNoID09IEpabGliLlpfTk9fRkxVU0gpIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChsb29rYWhlYWQgPT0gMCkgeworICAgICAgICAgICAgICAgICAgICBicmVhazsgLy8gZmx1c2ggdGhlIGN1cnJlbnQgYmxvY2sKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIEluc2VydCB0aGUgc3RyaW5nIHdpbmRvd1tzdHJzdGFydCAuLiBzdHJzdGFydCsyXSBpbiB0aGUKKyAgICAgICAgICAgIC8vIGRpY3Rpb25hcnksIGFuZCBzZXQgaGFzaF9oZWFkIHRvIHRoZSBoZWFkIG9mIHRoZSBoYXNoIGNoYWluOgorICAgICAgICAgICAgaWYgKGxvb2thaGVhZCA+PSAwKSB7CisgICAgICAgICAgICAgICAgaW5zX2ggPSAoaW5zX2ggPDwgaGFzaF9zaGlmdCBeIHdpbmRvd1tzdHJzdGFydCArIDAgLSAxXSAmIDB4ZmYpICYKKyAgICAgICAgICAgICAgICAgICAgICAgIGhhc2hfbWFzazsKKworICAgICAgICAgICAgICAgIC8vIHByZXZbc3Ryc3RhcnQmd19tYXNrXT1oYXNoX2hlYWQ9aGVhZFtpbnNfaF07CisgICAgICAgICAgICAgICAgaGFzaF9oZWFkID0gMHhmZmZmOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBGaW5kIHRoZSBsb25nZXN0IG1hdGNoLCBkaXNjYXJkaW5nIHRob3NlIDw9IHByZXZfbGVuZ3RoLgorICAgICAgICAgICAgLy8gQXQgdGhpcyBwb2ludCB3ZSBoYXZlIGFsd2F5cyBtYXRjaF9sZW5ndGggPCBNSU5fTUFUQ0gKKworICAgICAgICAgICAgaWYgKGhhc2hfaGVhZCAhPSAwTCAmJgorICAgICAgICAgICAgICAgICAgICAoc3Ryc3RhcnQgLSBoYXNoX2hlYWQgJiAweGZmZmYpIDw9IHdfc2l6ZSAtIDEpIHsKKyAgICAgICAgICAgICAgICAvLyBUbyBzaW1wbGlmeSB0aGUgY29kZSwgd2UgcHJldmVudCBtYXRjaGVzIHdpdGggdGhlIHN0cmluZworICAgICAgICAgICAgICAgIC8vIG9mIHdpbmRvdyBpbmRleCAwIChpbiBwYXJ0aWN1bGFyIHdlIGhhdmUgdG8gYXZvaWQgYSBtYXRjaAorICAgICAgICAgICAgICAgIC8vIG9mIHRoZSBzdHJpbmcgd2l0aCBpdHNlbGYgYXQgdGhlIHN0YXJ0IG9mIHRoZSBpbnB1dCBmaWxlKS4KKyAgICAgICAgICAgICAgICBpZiAoc3RyYXRlZ3kgIT0gSlpsaWIuWl9IVUZGTUFOX09OTFkpIHsKKyAgICAgICAgICAgICAgICAgICAgbWF0Y2hfbGVuZ3RoID0gbG9uZ2VzdF9tYXRjaChoYXNoX2hlYWQpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAvLyBsb25nZXN0X21hdGNoKCkgc2V0cyBtYXRjaF9zdGFydAorICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKG1hdGNoX2xlbmd0aCA+PSAwKSB7CisgICAgICAgICAgICAgICAgLy8gICAgICAgIGNoZWNrX21hdGNoKHN0cnN0YXJ0LCBtYXRjaF9zdGFydCwgbWF0Y2hfbGVuZ3RoKTsKKworICAgICAgICAgICAgICAgIGJmbHVzaCA9IF90cl90YWxseShzdHJzdGFydCAtIG1hdGNoX3N0YXJ0LCBtYXRjaF9sZW5ndGggLQorICAgICAgICAgICAgICAgICAgICAgICAgMCk7CisKKyAgICAgICAgICAgICAgICBsb29rYWhlYWQgLT0gbWF0Y2hfbGVuZ3RoOworCisgICAgICAgICAgICAgICAgLy8gSW5zZXJ0IG5ldyBzdHJpbmdzIGluIHRoZSBoYXNoIHRhYmxlIG9ubHkgaWYgdGhlIG1hdGNoIGxlbmd0aAorICAgICAgICAgICAgICAgIC8vIGlzIG5vdCB0b28gbGFyZ2UuIFRoaXMgc2F2ZXMgdGltZSBidXQgZGVncmFkZXMgY29tcHJlc3Npb24uCisgICAgICAgICAgICAgICAgaWYgKG1hdGNoX2xlbmd0aCA8PSBtYXhfbGF6eV9tYXRjaCAmJiBsb29rYWhlYWQgPj0gMCkgeworICAgICAgICAgICAgICAgICAgICBtYXRjaF9sZW5ndGggLS07IC8vIHN0cmluZyBhdCBzdHJzdGFydCBhbHJlYWR5IGluIGhhc2ggdGFibGUKKyAgICAgICAgICAgICAgICAgICAgZG8geworICAgICAgICAgICAgICAgICAgICAgICAgc3Ryc3RhcnQgKys7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGluc19oID0gKGluc19oIDw8IGhhc2hfc2hpZnQgXiB3aW5kb3dbc3Ryc3RhcnQgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwIC0gMV0gJiAweGZmKSAmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhc2hfbWFzazsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgICAgICBwcmV2W3N0cnN0YXJ0JndfbWFza109aGFzaF9oZWFkPWhlYWRbaW5zX2hdOworICAgICAgICAgICAgICAgICAgICAgICAgaGFzaF9oZWFkID0gaGVhZFtpbnNfaF0gJiAweGZmZmY7CisgICAgICAgICAgICAgICAgICAgICAgICBwcmV2W3N0cnN0YXJ0ICYgd19tYXNrXSA9IGhlYWRbaW5zX2hdOworICAgICAgICAgICAgICAgICAgICAgICAgaGVhZFtpbnNfaF0gPSAoc2hvcnQpIHN0cnN0YXJ0OworCisgICAgICAgICAgICAgICAgICAgICAgICAvLyBzdHJzdGFydCBuZXZlciBleGNlZWRzIFdTSVpFLU1BWF9NQVRDSCwgc28gdGhlcmUgYXJlCisgICAgICAgICAgICAgICAgICAgICAgICAvLyBhbHdheXMgTUlOX01BVENIIGJ5dGVzIGFoZWFkLgorICAgICAgICAgICAgICAgICAgICB9IHdoaWxlICgtLSBtYXRjaF9sZW5ndGggIT0gMCk7CisgICAgICAgICAgICAgICAgICAgIHN0cnN0YXJ0ICsrOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHN0cnN0YXJ0ICs9IG1hdGNoX2xlbmd0aDsKKyAgICAgICAgICAgICAgICAgICAgbWF0Y2hfbGVuZ3RoID0gMDsKKyAgICAgICAgICAgICAgICAgICAgaW5zX2ggPSB3aW5kb3dbc3Ryc3RhcnRdICYgMHhmZjsKKworICAgICAgICAgICAgICAgICAgICBpbnNfaCA9IChpbnNfaCA8PCBoYXNoX3NoaWZ0IF4gd2luZG93W3N0cnN0YXJ0ICsgMV0gJiAweGZmKSAmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFzaF9tYXNrOworICAgICAgICAgICAgICAgICAgICAvLyBJZiBsb29rYWhlYWQgPCBNSU5fTUFUQ0gsIGluc19oIGlzIGdhcmJhZ2UsIGJ1dCBpdCBkb2VzIG5vdAorICAgICAgICAgICAgICAgICAgICAvLyBtYXR0ZXIgc2luY2UgaXQgd2lsbCBiZSByZWNvbXB1dGVkIGF0IG5leHQgZGVmbGF0ZSBjYWxsLgorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgLy8gTm8gbWF0Y2gsIG91dHB1dCBhIGxpdGVyYWwgYnl0ZQorCisgICAgICAgICAgICAgICAgYmZsdXNoID0gX3RyX3RhbGx5KDAsIHdpbmRvd1tzdHJzdGFydF0gJiAweGZmKTsKKyAgICAgICAgICAgICAgICBsb29rYWhlYWQgLS07CisgICAgICAgICAgICAgICAgc3Ryc3RhcnQgKys7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoYmZsdXNoKSB7CisKKyAgICAgICAgICAgICAgICBmbHVzaF9ibG9ja19vbmx5KGZhbHNlKTsKKyAgICAgICAgICAgICAgICBpZiAoc3RybS5hdmFpbF9vdXQgPT0gMCkgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBmbHVzaF9ibG9ja19vbmx5KGZsdXNoID09IEpabGliLlpfRklOSVNIKTsKKyAgICAgICAgaWYgKGZsdXNoID09IDApIHsKKyAgICAgICAgICAgIGlmIChmbHVzaCA9PSBKWmxpYi5aX0ZJTklTSCkgeworICAgICAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICByZXR1cm4gZmx1c2ggPT0gSlpsaWIuWl9GSU5JU0g/IDEgOiAwOworICAgIH0KKworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGVmVXNlL1NDUjI4MDE5L2V4cGVjdGVkLnhtbCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RlZlVzZS9TQ1IyODAxOS9leHBlY3RlZC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDcwNGQ1OAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RlZlVzZS9TQ1IyODAxOS9leHBlY3RlZC54bWwKQEAgLTAsMCArMSw0IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPHByb2JsZW1zPgorPC9wcm9ibGVtcz4KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGVmVXNlL1NDUjI4MDE5L3NyYy9Bc3luY2hyb25vdXNJbWFnZUxvYWRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGVmVXNlL1NDUjI4MDE5L3NyYy9Bc3luY2hyb25vdXNJbWFnZUxvYWRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUwOWY5NTAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kZWZVc2UvU0NSMjgwMTkvc3JjL0FzeW5jaHJvbm91c0ltYWdlTG9hZGVyLmphdmEKQEAgLTAsMCArMSwxNyBAQAoraW1wb3J0IGphdmEudXRpbC5TdGFjazsKKworcHVibGljIGNsYXNzIEFzeW5jaHJvbm91c0ltYWdlTG9hZGVyIGV4dGVuZHMgVGhyZWFkIHsKKyAgICBwcml2YXRlIGZpbmFsIFN0YWNrIF90YXNrcyA9IG5ldyBTdGFjaygpOworCisgICAgcHJpdmF0ZSB2b2lkIHRocmVhZEJvZHkoKSB0aHJvd3MgSW50ZXJydXB0ZWRFeGNlcHRpb24geworICAgICAgICB3aGlsZSAodHJ1ZSkgeworICAgICAgICAgICAgZmluYWwgUnVubmFibGUgdGFzazsKKyAgICAgICAgICAgIHN5bmNocm9uaXplZCAodGhpcykgeworICAgICAgICAgICAgICAgIHdoaWxlIChfdGFza3MuaXNFbXB0eSgpKQorICAgICAgICAgICAgICAgICAgICB3YWl0KCk7CisgICAgICAgICAgICAgICAgdGFzayA9IChSdW5uYWJsZSkgX3Rhc2tzLnBvcCgpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgdGFzay5ydW4oKTsKKyAgICAgICAgfQorICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RlZlVzZS9TQ1I0MDM2NC9leHBlY3RlZC54bWwgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kZWZVc2UvU0NSNDAzNjQvZXhwZWN0ZWQueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc5NmEzMTUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kZWZVc2UvU0NSNDAzNjQvZXhwZWN0ZWQueG1sCkBAIC0wLDAgKzEsMiBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxwcm9ibGVtcyAvPgpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGVmVXNlL1NDUjQwMzY0L3NyYy9UZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kZWZVc2UvU0NSNDAzNjQvc3JjL1Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMDY2ZTNjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGVmVXNlL1NDUjQwMzY0L3NyYy9UZXN0LmphdmEKQEAgLTAsMCArMSwxNiBAQAorcGFja2FnZSBzcGlrZTsKKworcHVibGljIGNsYXNzIEEKK3sKKwlwdWJsaWMgc3RhdGljIHZvaWQgbWFpbiAoU3RyaW5nW10gYXJncykKKwl7CisJCWJvb2xlYW4gdGhlcmVJc01vcmVUb1BhcnNlOworCQlkbyB7CisJCQl0aGVyZUlzTW9yZVRvUGFyc2UgPSBidWlsZE5leHRPYmplY3QgKCk7CisJCX0gd2hpbGUgKHRoZXJlSXNNb3JlVG9QYXJzZSk7CisJfQorCisJcHJpdmF0ZSBzdGF0aWMgYm9vbGVhbiBidWlsZE5leHRPYmplY3QgKCkgeworCQlyZXR1cm4gZmFsc2U7CisJfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGVmVXNlL1NDUjUxNDQvZXhwZWN0ZWQueG1sIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGVmVXNlL1NDUjUxNDQvZXhwZWN0ZWQueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlhYzg3OWQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kZWZVc2UvU0NSNTE0NC9leHBlY3RlZC54bWwKQEAgLTAsMCArMSwzIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPHByb2JsZW1zIC8+CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RlZlVzZS9TQ1I1MTQ0L3NyYy9Bc3NpZ25UZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kZWZVc2UvU0NSNTE0NC9zcmMvQXNzaWduVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRhMWZlNTgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kZWZVc2UvU0NSNTE0NC9zcmMvQXNzaWduVGVzdC5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKK3B1YmxpYyBjbGFzcyBBc3NpZ25UZXN0IHsgCisgICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgeworICAgICAgICBpbnQgZm9vID0gMDsKKyAKKyAgICAgICAgd2hpbGUgKHRydWUpIHsKKyAgICAgICAgICAgIGlmIChmb28gIT0gMTIpIFN5c3RlbS5vdXQucHJpbnRsbigiVGVzdCIpOworICAgICAgICAgICAgaWYgKE1hdGgucmFuZG9tKCkgPiAwLjUpIGZvbyA9IDIyOworICAgICAgICB9CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGVmVXNlL1NDUjY4NDMvZXhwZWN0ZWQueG1sIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGVmVXNlL1NDUjY4NDMvZXhwZWN0ZWQueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJhMmMyOTEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kZWZVc2UvU0NSNjg0My9leHBlY3RlZC54bWwKQEAgLTAsMCArMSwyMCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxwcm9ibGVtcz4KKyAgPHByb2JsZW0+CisgICAgPGZpbGU+Tm90VXNlZFRlc3QuamF2YTwvZmlsZT4KKyAgICA8bGluZT4zPC9saW5lPgorICAgIDxkZXNjcmlwdGlvbj5WYXJpYWJsZSBpcyBuZXZlciB1c2VkPC9kZXNjcmlwdGlvbj4KKyAgPC9wcm9ibGVtPgorICA8cHJvYmxlbT4KKyAgICA8ZmlsZT5Ob3RVc2VkVGVzdC5qYXZhPC9maWxlPgorICAgIDxsaW5lPjQ8L2xpbmU+CisgICAgPGRlc2NyaXB0aW9uPlRoZSB2YWx1ZSBhc3NpZ25lZCBpcyBuZXZlciB1c2VkPC9kZXNjcmlwdGlvbj4KKyAgPC9wcm9ibGVtPgorICA8cHJvYmxlbT4KKyAgICA8ZmlsZT5Ob3RVc2VkVGVzdC5qYXZhPC9maWxlPgorICAgIDxsaW5lPjU8L2xpbmU+CisgICAgPGRlc2NyaXB0aW9uPlRoZSB2YWx1ZSBhc3NpZ25lZCBpcyBuZXZlciB1c2VkPC9kZXNjcmlwdGlvbj4KKyAgPC9wcm9ibGVtPgorCis8L3Byb2JsZW1zPgorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kZWZVc2UvU0NSNjg0My9zcmMvTm90VXNlZFRlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RlZlVzZS9TQ1I2ODQzL3NyYy9Ob3RVc2VkVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI5NjFiMTkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kZWZVc2UvU0NSNjg0My9zcmMvTm90VXNlZFRlc3QuamF2YQpAQCAtMCwwICsxLDcgQEAKK3B1YmxpYyBjbGFzcyBOb3RVc2VkVGVzdCB7IAorICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKKwlib29sZWFuIHVudXNlZCA9IHRydWU7CisJdW51c2VkID0gdHJ1ZTsKKwl1bnVzZWQgPSB0cnVlOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RlZlVzZS9Vc2VkSW5BcnJheUluaXRpYWxpemVyL2V4cGVjdGVkLnhtbCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RlZlVzZS9Vc2VkSW5BcnJheUluaXRpYWxpemVyL2V4cGVjdGVkLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNzA0ZDU4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGVmVXNlL1VzZWRJbkFycmF5SW5pdGlhbGl6ZXIvZXhwZWN0ZWQueG1sCkBAIC0wLDAgKzEsNCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxwcm9ibGVtcz4KKzwvcHJvYmxlbXM+CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RlZlVzZS9Vc2VkSW5BcnJheUluaXRpYWxpemVyL3NyYy9Gb28uamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RlZlVzZS9Vc2VkSW5BcnJheUluaXRpYWxpemVyL3NyYy9Gb28uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNDY0M2IxMQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RlZlVzZS9Vc2VkSW5BcnJheUluaXRpYWxpemVyL3NyYy9Gb28uamF2YQpAQCAtMCwwICsxLDcgQEAKK3B1YmxpYyBjbGFzcyBGb28geworICBwdWJsaWMgdm9pZCBmb28oKSB7CisgICAgaW50IGkgPSA0CisgICAgaW50W10gYXJyYXkgPSBuZXcgaW50W10ge2l9OworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgYXJyYXkubGVuZ3RoOyBpKyspIHt9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kZWZVc2UvYXJyYXlJbmRleFVzYWdlcy9leHBlY3RlZC54bWwgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kZWZVc2UvYXJyYXlJbmRleFVzYWdlcy9leHBlY3RlZC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmNiYmFiNAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RlZlVzZS9hcnJheUluZGV4VXNhZ2VzL2V4cGVjdGVkLnhtbApAQCAtMCwwICsxLDkgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8cHJvYmxlbXM+CisgIDxwcm9ibGVtPgorICAgIDxmaWxlPkZvby5qYXZhPC9maWxlPgorICAgIDxsaW5lPjc8L2xpbmU+CisgICAgPGRlc2NyaXB0aW9uPlRoZSB2YWx1ZSBjaGFuZ2VkIGlzIG5ldmVyIHVzZWQ8L2Rlc2NyaXB0aW9uPgorICA8L3Byb2JsZW0+Cis8L3Byb2JsZW1zPgorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kZWZVc2UvYXJyYXlJbmRleFVzYWdlcy9zcmMvRm9vLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kZWZVc2UvYXJyYXlJbmRleFVzYWdlcy9zcmMvRm9vLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmE3ZGVjZGQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kZWZVc2UvYXJyYXlJbmRleFVzYWdlcy9zcmMvRm9vLmphdmEKQEAgLTAsMCArMSwxMSBAQAorcHVibGljIGNsYXNzIEZvbyB7CisgIGludCBteU9mZnNldDsKKyAgdm9pZCBmb28oKSB7CisgICAgaW50IG9mZnNldCA9IG15T2Zmc2V0ICsgNDsKKyAgICBieXRlW10gYSA9IG5ldyBieXRlWzEwXTsKKyAgICBieXRlIGIxID0gYVtvZmZzZXQrK107CisgICAgYnl0ZSBiMiA9IGFbb2Zmc2V0KytdOworICAgIFN5c3RlbS5vdXQucHJpbnRsbihiMSk7CisgICAgU3lzdGVtLm91dC5wcmludGxuKGIyKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RlZlVzZS91bnVzZWRWYXJpYWJsZS9leHBlY3RlZC54bWwgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kZWZVc2UvdW51c2VkVmFyaWFibGUvZXhwZWN0ZWQueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJlNTA5OGUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kZWZVc2UvdW51c2VkVmFyaWFibGUvZXhwZWN0ZWQueG1sCkBAIC0wLDAgKzEsOSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxwcm9ibGVtcz4KKyAgPHByb2JsZW0+CisgICAgPGZpbGU+Rm9vLmphdmE8L2ZpbGU+CisgICAgPGxpbmU+MzwvbGluZT4KKyAgICA8ZGVzY3JpcHRpb24+VmFyaWFibGUgaSBpcyBuZXZlciB1c2VkPC9kZXNjcmlwdGlvbj4KKyAgPC9wcm9ibGVtPgorPC9wcm9ibGVtcz4KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGVmVXNlL3VudXNlZFZhcmlhYmxlL3NyYy9Gb28uamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RlZlVzZS91bnVzZWRWYXJpYWJsZS9zcmMvRm9vLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTcyZWNlYwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RlZlVzZS91bnVzZWRWYXJpYWJsZS9zcmMvRm9vLmphdmEKQEAgLTAsMCArMSw1IEBACitwdWJsaWMgY2xhc3MgRm9vIHsKKyAgcHVibGljIHZvaWQgZm9vKCkgeworICAgIGludCBpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGVmYXVsdEZpbGVUZW1wbGF0ZVVzYWdlL2RlZmF1bHRGaWxlL2V4cGVjdGVkLnhtbCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RlZmF1bHRGaWxlVGVtcGxhdGVVc2FnZS9kZWZhdWx0RmlsZS9leHBlY3RlZC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGEwZDNkMwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RlZmF1bHRGaWxlVGVtcGxhdGVVc2FnZS9kZWZhdWx0RmlsZS9leHBlY3RlZC54bWwKQEAgLTAsMCArMSwxMTggQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8cHJvYmxlbXM+CisKKzxwcm9ibGVtPgorICA8ZmlsZT5YLmphdmE8L2ZpbGU+CisgIDxsaW5lPjQ8L2xpbmU+CisgIDxwcm9ibGVtX2NsYXNzPkRlZmF1bHQgRmlsZSBUZW1wbGF0ZSBVc2FnZTwvcHJvYmxlbV9jbGFzcz4KKyAgPGRlc2NyaXB0aW9uPkRlZmF1bHQgRmlsZSB0ZW1wbGF0ZTwvZGVzY3JpcHRpb24+Cis8L3Byb2JsZW0+CisKKyAgPHByb2JsZW0+CisgICAgPGZpbGU+WDIuamF2YTwvZmlsZT4KKyAgICA8bGluZT40PC9saW5lPgorICAgIDxwcm9ibGVtX2NsYXNzPkRlZmF1bHQgRmlsZSBUZW1wbGF0ZSBVc2FnZTwvcHJvYmxlbV9jbGFzcz4KKyAgICA8ZGVzY3JpcHRpb24+RGVmYXVsdCBGaWxlIHRlbXBsYXRlPC9kZXNjcmlwdGlvbj4KKyAgPC9wcm9ibGVtPgorCisgIDxwcm9ibGVtPgorICA8ZmlsZT5YLmphdmE8L2ZpbGU+CisgIDxsaW5lPjE3PC9saW5lPgorICA8cGFja2FnZT54PC9wYWNrYWdlPgorICA8Y2xhc3M+CisgICAgPG5hbWU+WDwvbmFtZT4KKyAgICA8ZGlzcGxheV9uYW1lPlg8L2Rpc3BsYXlfbmFtZT4KKyAgPC9jbGFzcz4KKyAgPHByb2JsZW1fY2xhc3M+RGVmYXVsdCBGaWxlIFRlbXBsYXRlIFVzYWdlPC9wcm9ibGVtX2NsYXNzPgorICA8ZGVzY3JpcHRpb24+RGVmYXVsdCBGaWxlIHRlbXBsYXRlPC9kZXNjcmlwdGlvbj4KKzwvcHJvYmxlbT4KKworPHByb2JsZW0+CisgIDxmaWxlPlguamF2YTwvZmlsZT4KKyAgPGxpbmU+MjI8L2xpbmU+CisgIDxwYWNrYWdlPng8L3BhY2thZ2U+CisgIDxjbGFzcz4KKyAgICA8bmFtZT5YPC9uYW1lPgorICAgIDxkaXNwbGF5X25hbWU+WDwvZGlzcGxheV9uYW1lPgorICA8L2NsYXNzPgorICA8cHJvYmxlbV9jbGFzcz5EZWZhdWx0IEZpbGUgVGVtcGxhdGUgVXNhZ2U8L3Byb2JsZW1fY2xhc3M+CisgIDxkZXNjcmlwdGlvbj5EZWZhdWx0IEZpbGUgdGVtcGxhdGU8L2Rlc2NyaXB0aW9uPgorPC9wcm9ibGVtPgorCis8cHJvYmxlbT4KKyAgPGZpbGU+WC5qYXZhPC9maWxlPgorICA8bGluZT4zMTwvbGluZT4KKyAgPG1ldGhvZD4KKyAgICA8bmFtZT5pbnQgaGFzaENvZGUoKTwvbmFtZT4KKyAgICA8ZGlzcGxheV9uYW1lPmhhc2hDb2RlKCk8L2Rpc3BsYXlfbmFtZT4KKyAgICA8cGFja2FnZT54PC9wYWNrYWdlPgorICAgIDxjbGFzcz4KKyAgICAgIDxuYW1lPlg8L25hbWU+CisgICAgICA8ZGlzcGxheV9uYW1lPlg8L2Rpc3BsYXlfbmFtZT4KKyAgICA8L2NsYXNzPgorICA8L21ldGhvZD4KKyAgPHByb2JsZW1fY2xhc3M+RGVmYXVsdCBGaWxlIFRlbXBsYXRlIFVzYWdlPC9wcm9ibGVtX2NsYXNzPgorICA8ZGVzY3JpcHRpb24+RGVmYXVsdCBGaWxlIHRlbXBsYXRlPC9kZXNjcmlwdGlvbj4KKzwvcHJvYmxlbT4KKworPHByb2JsZW0+CisgIDxmaWxlPlguamF2YTwvZmlsZT4KKyAgPGxpbmU+Mjc8L2xpbmU+CisgIDxtZXRob2Q+CisgICAgPG5hbWU+dm9pZCBnKCk8L25hbWU+CisgICAgPGRpc3BsYXlfbmFtZT5nKCk8L2Rpc3BsYXlfbmFtZT4KKyAgICA8cGFja2FnZT54PC9wYWNrYWdlPgorICAgIDxjbGFzcz4KKyAgICAgIDxuYW1lPlg8L25hbWU+CisgICAgICA8ZGlzcGxheV9uYW1lPlg8L2Rpc3BsYXlfbmFtZT4KKyAgICA8L2NsYXNzPgorICA8L21ldGhvZD4KKyAgPHByb2JsZW1fY2xhc3M+RGVmYXVsdCBGaWxlIFRlbXBsYXRlIFVzYWdlPC9wcm9ibGVtX2NsYXNzPgorICA8ZGVzY3JpcHRpb24+RGVmYXVsdCBGaWxlIHRlbXBsYXRlPC9kZXNjcmlwdGlvbj4KKzwvcHJvYmxlbT4KKworPHByb2JsZW0+CisgIDxmaWxlPlguamF2YTwvZmlsZT4KKyAgPGxpbmU+MzU8L2xpbmU+CisgIDxtZXRob2Q+CisgICAgPG5hbWU+U3RyaW5nIHRvU3RyaW5nKCk8L25hbWU+CisgICAgPGRpc3BsYXlfbmFtZT50b1N0cmluZygpPC9kaXNwbGF5X25hbWU+CisgICAgPHBhY2thZ2U+eDwvcGFja2FnZT4KKyAgICA8Y2xhc3M+CisgICAgICA8bmFtZT5YPC9uYW1lPgorICAgICAgPGRpc3BsYXlfbmFtZT5YPC9kaXNwbGF5X25hbWU+CisgICAgPC9jbGFzcz4KKyAgPC9tZXRob2Q+CisgIDxwcm9ibGVtX2NsYXNzPkRlZmF1bHQgRmlsZSBUZW1wbGF0ZSBVc2FnZTwvcHJvYmxlbV9jbGFzcz4KKyAgPGRlc2NyaXB0aW9uPkRlZmF1bHQgRmlsZSB0ZW1wbGF0ZTwvZGVzY3JpcHRpb24+Cis8L3Byb2JsZW0+CisKKzxwcm9ibGVtPgorICA8ZmlsZT5YLmphdmE8L2ZpbGU+CisgIDxsaW5lPjM5PC9saW5lPgorICA8bWV0aG9kPgorICAgIDxuYW1lPnZvaWQgcnVuKCk8L25hbWU+CisgICAgPGRpc3BsYXlfbmFtZT5ydW4oKTwvZGlzcGxheV9uYW1lPgorICAgIDxwYWNrYWdlPng8L3BhY2thZ2U+CisgICAgPGNsYXNzPgorICAgICAgPG5hbWU+WDwvbmFtZT4KKyAgICAgIDxkaXNwbGF5X25hbWU+WDwvZGlzcGxheV9uYW1lPgorICAgIDwvY2xhc3M+CisgIDwvbWV0aG9kPgorICA8cHJvYmxlbV9jbGFzcz5EZWZhdWx0IEZpbGUgVGVtcGxhdGUgVXNhZ2U8L3Byb2JsZW1fY2xhc3M+CisgIDxkZXNjcmlwdGlvbj5EZWZhdWx0IEZpbGUgdGVtcGxhdGU8L2Rlc2NyaXB0aW9uPgorPC9wcm9ibGVtPgorCisgIDxwcm9ibGVtPgorICAgIDxmaWxlPlguamF2YTwvZmlsZT4KKyAgICA8bGluZT42MzwvbGluZT4KKyAgICA8cGFja2FnZT54PC9wYWNrYWdlPgorICAgIDxjbGFzcz4KKyAgICAgIDxuYW1lPlg8L25hbWU+CisgICAgICA8ZGlzcGxheV9uYW1lPlg8L2Rpc3BsYXlfbmFtZT4KKyAgICA8L2NsYXNzPgorICAgIDxwcm9ibGVtX2NsYXNzPkRlZmF1bHQgRmlsZSBUZW1wbGF0ZSBVc2FnZTwvcHJvYmxlbV9jbGFzcz4KKyAgICA8ZGVzY3JpcHRpb24+RGVmYXVsdCBGaWxlIHRlbXBsYXRlPC9kZXNjcmlwdGlvbj4KKyAgPC9wcm9ibGVtPgorCis8L3Byb2JsZW1zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RlZmF1bHRGaWxlVGVtcGxhdGVVc2FnZS9kZWZhdWx0RmlsZS9zcmMveC9YLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kZWZhdWx0RmlsZVRlbXBsYXRlVXNhZ2UvZGVmYXVsdEZpbGUvc3JjL3gvWC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUyMmMyMmMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kZWZhdWx0RmlsZVRlbXBsYXRlVXNhZ2UvZGVmYXVsdEZpbGUvc3JjL3gvWC5qYXZhCkBAIC0wLDAgKzEsNjcgQEAKK3BhY2thZ2UgeDsKK2ltcG9ydCBqYXZhLmlvLio7CisKKy8qKgorICogQ3JlYXRlZCB3aXRoIEludGVsbGlKIElERUEuCisgKiBVc2VyOiBBbGV4ZXkKKyAqIERhdGU6IDAyLjEyLjIwMDUKKyAqIFRpbWU6IDA6MjQ6MTQKKyAqIFRvIGNoYW5nZSB0aGlzIHRlbXBsYXRlIHVzZSBGaWxlIHwgU2V0dGluZ3MgfCBGaWxlIFRlbXBsYXRlcy4KKyAqLworcHVibGljIGNsYXNzIFggaW1wbGVtZW50cyBSdW5uYWJsZXsKKyAgICBGaWxlIGY7IC8va2tqIGxra2wgamprdXVmZGZmZmZqa2tqamgga2poIGtqaGoga2tqaCBramggIGkgayBraiBraiBrbGogbGtqIGxraiBsa2psIGtqIGtsa2wga2wKKyAgICB7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBmPW51bGw7CisgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICBlLnByaW50U3RhY2tUcmFjZSgpOyAgLy9UbyBjaGFuZ2UgYm9keSBvZiBjYXRjaCBzdGF0ZW1lbnQgdXNlIEZpbGUgfCBTZXR0aW5ncyB8IEZpbGUgVGVtcGxhdGVzLgorICAgICAgICB9CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBnKCk7CisgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBleCkgeworICAgICAgICAgICAgZXgucHJpbnRTdGFja1RyYWNlKCk7ICAvL1RvIGNoYW5nZSBib2R5IG9mIGNhdGNoIHN0YXRlbWVudCB1c2UgRmlsZSB8IFNldHRpbmdzIHwgRmlsZSBUZW1wbGF0ZXMuCisgICAgICAgIH0KKyAgICB9CisKKyAgICBwcml2YXRlIHZvaWQgZygpIHRocm93cyBFT0ZFeGNlcHRpb24sIEZpbGVOb3RGb3VuZEV4Y2VwdGlvbiB7CisgICAgICAgIC8vVG8gY2hhbmdlIGJvZHkgb2YgY3JlYXRlZCBtZXRob2RzIHVzZSBGaWxlIHwgU2V0dGluZ3MgfCBGaWxlIFRlbXBsYXRlcy4KKyAgICB9CisKKyAgICBwdWJsaWMgaW50IGhhc2hDb2RlKCkgeworICAgICAgICByZXR1cm4gc3VwZXIuaGFzaENvZGUoKTsgICAgLy9UbyBjaGFuZ2UgYm9keSBvZiBvdmVycmlkZGVuIG1ldGhvZHMgdXNlIEZpbGUgfCBTZXR0aW5ncyB8IEZpbGUgVGVtcGxhdGVzLgorICAgIH0KKyAgICAgICAgCisgICAgcHVibGljIFN0cmluZyB0b1N0cmluZygpIHsKKyAgICAgcmV0dXJuIHN1cGVyLnRvU3RyaW5nKCk7ICAgICAgICAgICAgLy9UbyBjaGFuZ2UgYm9keSBvZiBvdmVycmlkZGVuIG1ldGhvZHMgdXNlIEZpbGUgfCBTZXR0aW5ncyB8IEZpbGUgVGVtcGxhdGVzLgorICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHJ1bigpIHsKKyAgICAgICAgLy9UbyBjaGFuZ2UgYm9keSBvZiBpbXBsZW1lbnRlZCBtZXRob2RzIHVzZSBGaWxlIHwgU2V0dGluZ3MgfCBGaWxlIFRlbXBsYXRlcy4KKyAgICB9CisKKyAgICBwcml2YXRlIHZvaWQgbWV0aG9kKCkgeworICAgICAgICAvLyBoZWxsbworICAgIH0KKyAgICBwcml2YXRlIGludCBnZXRpKCkgeworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgcHJpdmF0ZSB2b2lkIGNhdCgpIHsKKyAgICAgIHRyeSB7CisgICAgICB9CisgICAgICBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKKyAgICAgICBlLnByaW50U3RhY2tUcmFjZSgpOyAvLyBoZXkKKyAgICAgIH0KKyAgICB9CisgICAgIHByb3RlY3RlZCB2b2lkIGZpbmFsaXplKCkgdGhyb3dzIFRocm93YWJsZSB7CisgICAgICAgICAgICBzdXBlci5maW5hbGl6ZSgpOyAgICAKKyAgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIG11bHRpKCkgeworICAgICAgICB0cnkgeworICAgICAgICAgICAgZygpOworICAgICAgICB9IGNhdGNoIChFT0ZFeGNlcHRpb24gfCBGaWxlTm90Rm91bmRFeGNlcHRpb24gZXgpIHsKKyAgICAgICAgICAgIGV4LnByaW50U3RhY2tUcmFjZSgpOyAgLy9UbyBjaGFuZ2UgYm9keSBvZiBjYXRjaCBzdGF0ZW1lbnQgdXNlIEZpbGUgfCBTZXR0aW5ncyB8IEZpbGUgVGVtcGxhdGVzLgorICAgICAgICB9CisgICAgfQorfQorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kZWZhdWx0RmlsZVRlbXBsYXRlVXNhZ2UvZGVmYXVsdEZpbGUvc3JjL3gvWDIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RlZmF1bHRGaWxlVGVtcGxhdGVVc2FnZS9kZWZhdWx0RmlsZS9zcmMveC9YMi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJjNDM3MzcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kZWZhdWx0RmlsZVRlbXBsYXRlVXNhZ2UvZGVmYXVsdEZpbGUvc3JjL3gvWDIuamF2YQpAQCAtMCwwICsxLDEyIEBACitwYWNrYWdlIHg7CitpbXBvcnQgamF2YS5pby4qOworCisvKioKKyAqIENyZWF0ZWQgd2l0aCBJbnRlbGxpSiBJREVBLgorICogVXNlcjogQWxleGV5CisgKiBEYXRlOiAwMi4xMi4yMDA1CisgKiBUaW1lOiAwOjI0OjE0CisgKiBUbyBjaGFuZ2UgdGhpcyB0ZW1wbGF0ZSB1c2UgRmlsZSB8IFNldHRpbmdzIHwgRmlsZSBUZW1wbGF0ZXMuCisgKi8KK3B1YmxpYyBjbGFzcyBYMiB7Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kZXByZWNhdGlvbi9kZXByZWNhdGVkRGVmYXVsdENvbnN0cnVjdG9ySW5TdXBlci9leHBlY3RlZC54bWwgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kZXByZWNhdGlvbi9kZXByZWNhdGVkRGVmYXVsdENvbnN0cnVjdG9ySW5TdXBlci9leHBlY3RlZC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWU2MWVhOAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RlcHJlY2F0aW9uL2RlcHJlY2F0ZWREZWZhdWx0Q29uc3RydWN0b3JJblN1cGVyL2V4cGVjdGVkLnhtbApAQCAtMCwwICsxLDE0IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPHByb2JsZW1zPgorICA8cHJvYmxlbT4KKyAgICA8ZmlsZT5UZXN0LmphdmE8L2ZpbGU+CisgICAgPGxpbmU+NTwvbGluZT4KKyAgICA8ZGVzY3JpcHRpb24+RGVmYXVsdCBjb25zdHJ1Y3RvciBpbiBDIGlzIGRlcHJlY2F0ZWQ8L2Rlc2NyaXB0aW9uPgorICA8L3Byb2JsZW0+CisgIDxwcm9ibGVtPgorICAgIDxmaWxlPlRlc3QuamF2YTwvZmlsZT4KKyAgICA8bGluZT4xMDwvbGluZT4KKyAgICA8ZGVzY3JpcHRpb24+RGVmYXVsdCBjb25zdHJ1Y3RvciBpbiBDIGlzIGRlcHJlY2F0ZWQ8L2Rlc2NyaXB0aW9uPgorICA8L3Byb2JsZW0+Cis8L3Byb2JsZW1zPgorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kZXByZWNhdGlvbi9kZXByZWNhdGVkRGVmYXVsdENvbnN0cnVjdG9ySW5TdXBlci9zcmMvVGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGVwcmVjYXRpb24vZGVwcmVjYXRlZERlZmF1bHRDb25zdHJ1Y3RvckluU3VwZXIvc3JjL1Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ODA4YzJjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGVwcmVjYXRpb24vZGVwcmVjYXRlZERlZmF1bHRDb25zdHJ1Y3RvckluU3VwZXIvc3JjL1Rlc3QuamF2YQpAQCAtMCwwICsxLDEyIEBACitjbGFzcyBDIHsKKyAgQERlcHJlY2F0ZWQgQygpIHsgfQorfQorCitjbGFzcyBEIGV4dGVuZHMgQyB7Cit9CisKK2NsYXNzIFAgeworICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CisgICAgbmV3IEMoKXt9OworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGVwcmVjYXRpb24vZGVwcmVjYXRlZERlZmF1bHRDb25zdHJ1Y3RvckluU3VwZXJOb3RDYWxsZWQvZXhwZWN0ZWQueG1sIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGVwcmVjYXRpb24vZGVwcmVjYXRlZERlZmF1bHRDb25zdHJ1Y3RvckluU3VwZXJOb3RDYWxsZWQvZXhwZWN0ZWQueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZiZmM1YTAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kZXByZWNhdGlvbi9kZXByZWNhdGVkRGVmYXVsdENvbnN0cnVjdG9ySW5TdXBlck5vdENhbGxlZC9leHBlY3RlZC54bWwKQEAgLTAsMCArMSw5IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPHByb2JsZW1zPgorICA8cHJvYmxlbT4KKyAgICA8ZmlsZT5UZXN0LmphdmE8L2ZpbGU+CisgICAgPGxpbmU+NjwvbGluZT4KKyAgICA8ZGVzY3JpcHRpb24+RGVmYXVsdCBjb25zdHJ1Y3RvciBpbiBDIGlzIGRlcHJlY2F0ZWQ8L2Rlc2NyaXB0aW9uPgorICA8L3Byb2JsZW0+Cis8L3Byb2JsZW1zPgorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kZXByZWNhdGlvbi9kZXByZWNhdGVkRGVmYXVsdENvbnN0cnVjdG9ySW5TdXBlck5vdENhbGxlZC9zcmMvVGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGVwcmVjYXRpb24vZGVwcmVjYXRlZERlZmF1bHRDb25zdHJ1Y3RvckluU3VwZXJOb3RDYWxsZWQvc3JjL1Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNDBmMWQwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGVwcmVjYXRpb24vZGVwcmVjYXRlZERlZmF1bHRDb25zdHJ1Y3RvckluU3VwZXJOb3RDYWxsZWQvc3JjL1Rlc3QuamF2YQpAQCAtMCwwICsxLDggQEAKK2NsYXNzIEMgeworICBARGVwcmVjYXRlZCBDKCkgeyB9Cit9CisKK2NsYXNzIEQgZXh0ZW5kcyBDIHsKKyAgRCgpIHsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGVwcmVjYXRpb24vZGVwcmVjYXRlZEZpZWxkL2V4cGVjdGVkLnhtbCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RlcHJlY2F0aW9uL2RlcHJlY2F0ZWRGaWVsZC9leHBlY3RlZC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDRlY2Y5MQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RlcHJlY2F0aW9uL2RlcHJlY2F0ZWRGaWVsZC9leHBlY3RlZC54bWwKQEAgLTAsMCArMSw5IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPHByb2JsZW1zPgorICA8cHJvYmxlbT4KKyAgICA8ZmlsZT5UZXN0LmphdmE8L2ZpbGU+CisgICAgPGxpbmU+NzwvbGluZT4KKyAgICA8ZGVzY3JpcHRpb24+J2InIGlzIGRlcHJlY2F0ZWQ8L2Rlc2NyaXB0aW9uPgorICA8L3Byb2JsZW0+Cis8L3Byb2JsZW1zPgorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kZXByZWNhdGlvbi9kZXByZWNhdGVkRmllbGQvc3JjL1Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RlcHJlY2F0aW9uL2RlcHJlY2F0ZWRGaWVsZC9zcmMvVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE4MDQyOGE4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGVwcmVjYXRpb24vZGVwcmVjYXRlZEZpZWxkL3NyYy9UZXN0LmphdmEKQEAgLTAsMCArMSw5IEBACitwdWJsaWMgY2xhc3MgVGVzdHsKKyAgLyoqCisgICAgKiBAZGVwcmVjYXRlZAorICAgICovCisgICAgYm9vbGVhbiBiOworICAgIGJvb2xlYW4gYmFyKCl7CisgICAgICByZXR1cm4gYjsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGVwcmVjYXRpb24vZGVwcmVjYXRlZEluSW1wb3J0L2V4cGVjdGVkLnhtbCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RlcHJlY2F0aW9uL2RlcHJlY2F0ZWRJbkltcG9ydC9leHBlY3RlZC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDcwNGQ5MQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RlcHJlY2F0aW9uL2RlcHJlY2F0ZWRJbkltcG9ydC9leHBlY3RlZC54bWwKQEAgLTAsMCArMSwyIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPHByb2JsZW1zLz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kZXByZWNhdGlvbi9kZXByZWNhdGVkSW5JbXBvcnQvc3JjL1Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RlcHJlY2F0aW9uL2RlcHJlY2F0ZWRJbkltcG9ydC9zcmMvVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM2MTkyMjIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kZXByZWNhdGlvbi9kZXByZWNhdGVkSW5JbXBvcnQvc3JjL1Rlc3QuamF2YQpAQCAtMCwwICsxLDMgQEAKK2ltcG9ydCBhLkE7CitwdWJsaWMgY2xhc3MgVGVzdCB7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGVwcmVjYXRpb24vZGVwcmVjYXRlZEluSW1wb3J0L3NyYy9hL0EuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RlcHJlY2F0aW9uL2RlcHJlY2F0ZWRJbkltcG9ydC9zcmMvYS9BLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzJjZDlmNAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RlcHJlY2F0aW9uL2RlcHJlY2F0ZWRJbkltcG9ydC9zcmMvYS9BLmphdmEKQEAgLTAsMCArMSwzIEBACitwYWNrYWdlIGE7CitARGVwcmVjYXRlZAorcHVibGljIGNsYXNzIEEge30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kZXByZWNhdGlvbi9kZXByZWNhdGVkSW5uZXIvZXhwZWN0ZWQueG1sIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGVwcmVjYXRpb24vZGVwcmVjYXRlZElubmVyL2V4cGVjdGVkLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNjRmZWM0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGVwcmVjYXRpb24vZGVwcmVjYXRlZElubmVyL2V4cGVjdGVkLnhtbApAQCAtMCwwICsxLDI5IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPHByb2JsZW1zPgorICA8cHJvYmxlbT4KKyAgICA8ZmlsZT5UZXN0LmphdmE8L2ZpbGU+CisgICAgPGxpbmU+MTE8L2xpbmU+CisgICAgPGRlc2NyaXB0aW9uPidmb28oKScgaXMgZGVwcmVjYXRlZDwvZGVzY3JpcHRpb24+CisgIDwvcHJvYmxlbT4KKyAgPHByb2JsZW0+CisgICAgPGZpbGU+VGVzdC5qYXZhPC9maWxlPgorICAgIDxsaW5lPjIyPC9saW5lPgorICAgIDxkZXNjcmlwdGlvbj4nZm9vKCknIGlzIGRlcHJlY2F0ZWQ8L2Rlc2NyaXB0aW9uPgorICA8L3Byb2JsZW0+CisgIDxwcm9ibGVtPgorICAgIDxmaWxlPlRlc3QuamF2YTwvZmlsZT4KKyAgICA8bGluZT40MjwvbGluZT4KKyAgICA8ZGVzY3JpcHRpb24+J2ZvbygpJyBpcyBkZXByZWNhdGVkPC9kZXNjcmlwdGlvbj4KKyAgPC9wcm9ibGVtPgorICA8cHJvYmxlbT4KKyAgICA8ZmlsZT5UZXN0LmphdmE8L2ZpbGU+CisgICAgPGxpbmU+NDM8L2xpbmU+CisgICAgPGRlc2NyaXB0aW9uPidmb28oKScgaXMgZGVwcmVjYXRlZDwvZGVzY3JpcHRpb24+CisgIDwvcHJvYmxlbT4KKyAgPHByb2JsZW0+CisgICAgPGZpbGU+VGVzdC5qYXZhPC9maWxlPgorICAgIDxsaW5lPjQzPC9saW5lPgorICAgIDxkZXNjcmlwdGlvbj4nZm9vKCknIGlzIGRlcHJlY2F0ZWQ8L2Rlc2NyaXB0aW9uPgorICA8L3Byb2JsZW0+Cis8L3Byb2JsZW1zPgorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kZXByZWNhdGlvbi9kZXByZWNhdGVkSW5uZXIvc3JjL1Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2RlcHJlY2F0aW9uL2RlcHJlY2F0ZWRJbm5lci9zcmMvVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZhZjY4NWYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kZXByZWNhdGlvbi9kZXByZWNhdGVkSW5uZXIvc3JjL1Rlc3QuamF2YQpAQCAtMCwwICsxLDQ3IEBACitwdWJsaWMgY2xhc3MgVGVzdCB7CisgICAgLyoqCisgICAgICogQGRlcHJlY2F0ZWQKKyAgICAgICovCisgICBib29sZWFuIGZvbygpeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICB9CisKKyAgIFJ1bm5hYmxlIHJ1bm5hYmxlID0gbmV3IFJ1bm5hYmxlKCkgeworICAgICAgIHB1YmxpYyB2b2lkIHJ1bigpIHsKKyAgICAgICAgICAgVGVzdC50aGlzLmZvbygpOworICAgICAgIH0KKyAgIH07CisKKyAgIGJvb2xlYW4gYmFyKGJvb2xlYW4gZyl7CisgICAgICAgbmV3IFJ1bm5hYmxlKCl7CisKKyAgICAgICAgICAgcHVibGljIHZvaWQgcnVuKCkgeworICAgICAgICAgICAgICBuZXcgUnVubmFibGUoKXsKKworICAgICAgICAgICAgICAgICAgcHVibGljIHZvaWQgcnVuKCkgeworICAgICAgICAgICAgICAgICAgICAgIFRlc3QudGhpcy5mb28oKTsKKyAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgfQorICAgICAgIH07CisgICAgICAgcmV0dXJuIGZhbHNlOworICAgfQorCisgICBUZXN0KGJvb2xlYW4gZywgYm9vbGVhbiBoKXsKKyAgICAgaWYgKGcgJiYgaCl7fQorICAgfQorCisKKyAgICBwdWJsaWMgVGVzdCgpIHsKKyAgICB9CisKKworCisgICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgeworICAgICAgICBUZXN0IHRlc3QgPSBuZXcgVGVzdCgpOworICAgICAgICB0ZXN0LmJhcih0ZXN0LmZvbygpKTsKKyAgICAgICAgVGVzdCB5MTEgPSBuZXcgVGVzdCh0ZXN0LmZvbygpLCB0ZXN0LmJhcih0ZXN0LmZvbygpKSk7CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbih5MTEpOworICAgIH0KKworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGVwcmVjYXRpb24vZGVwcmVjYXRlZE1ldGhvZC9leHBlY3RlZC54bWwgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kZXByZWNhdGlvbi9kZXByZWNhdGVkTWV0aG9kL2V4cGVjdGVkLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iODc2ODc3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGVwcmVjYXRpb24vZGVwcmVjYXRlZE1ldGhvZC9leHBlY3RlZC54bWwKQEAgLTAsMCArMSw5IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPHByb2JsZW1zPgorICA8cHJvYmxlbT4KKyAgICA8ZmlsZT5UZXN0LmphdmE8L2ZpbGU+CisgICAgPGxpbmU+ODwvbGluZT4KKyAgICA8ZGVzY3JpcHRpb24+J2ZvbygpJyBpcyBkZXByZWNhdGVkPC9kZXNjcmlwdGlvbj4KKyAgPC9wcm9ibGVtPgorPC9wcm9ibGVtcz4KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGVwcmVjYXRpb24vZGVwcmVjYXRlZE1ldGhvZC9zcmMvVGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZGVwcmVjYXRpb24vZGVwcmVjYXRlZE1ldGhvZC9zcmMvVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI0MDdlODIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kZXByZWNhdGlvbi9kZXByZWNhdGVkTWV0aG9kL3NyYy9UZXN0LmphdmEKQEAgLTAsMCArMSwxMCBAQAorcHVibGljIGNsYXNzIFRlc3QgeworICAvKioKKyAgICogQGRlcHJlY2F0ZWQgCisgICAqLworICB2b2lkIGZvbygpe30KKworICB2b2lkIGJhcigpeworICAgIGZvbygpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZHVwbGljYXRlVGhyb3dzL3NpbXBsZS9leHBlY3RlZC54bWwgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9kdXBsaWNhdGVUaHJvd3Mvc2ltcGxlL2V4cGVjdGVkLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hOGU2YjllCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZHVwbGljYXRlVGhyb3dzL3NpbXBsZS9leHBlY3RlZC54bWwKQEAgLTAsMCArMSwzMCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxwcm9ibGVtcz4KKyAgPHByb2JsZW0+CisgICAgPGZpbGU+WC5qYXZhPC9maWxlPgorICAgIDxsaW5lPjU8L2xpbmU+CisgICAgPHByb2JsZW1fY2xhc3M+RHVwbGljYXRlIHRocm93czwvcHJvYmxlbV9jbGFzcz4KKyAgICA8ZGVzY3JpcHRpb24+RHVwbGljYXRlIHRocm93czwvZGVzY3JpcHRpb24+CisgIDwvcHJvYmxlbT4KKworICA8cHJvYmxlbT4KKyAgICA8ZmlsZT5YLmphdmE8L2ZpbGU+CisgICAgPGxpbmU+MTA8L2xpbmU+CisgICAgPHByb2JsZW1fY2xhc3M+RHVwbGljYXRlIHRocm93czwvcHJvYmxlbV9jbGFzcz4KKyAgICA8ZGVzY3JpcHRpb24+VGhlcmUgaXMgYSBtb3JlIGdlbmVyYWwgZXhjZXB0aW9uLCAnamF2YS5sYW5nLkV4Y2VwdGlvbicgaW4gdGhlIHRocm93cyBsaXN0IGFscmVhZHkuPC9kZXNjcmlwdGlvbj4KKyAgPC9wcm9ibGVtPgorCisgIDxwcm9ibGVtPgorICAgIDxmaWxlPlguamF2YTwvZmlsZT4KKyAgICA8bGluZT4xODwvbGluZT4KKyAgICA8cHJvYmxlbV9jbGFzcyBzZXZlcml0eT0iV0FSTklORyIgYXR0cmlidXRlX2tleT0iTk9UX1VTRURfRUxFTUVOVF9BVFRSSUJVVEVTIj5EdXBsaWNhdGUgdGhyb3dzPC9wcm9ibGVtX2NsYXNzPgorICAgIDxkZXNjcmlwdGlvbj5EdXBsaWNhdGUgdGhyb3dzPC9kZXNjcmlwdGlvbj4KKyAgPC9wcm9ibGVtPgorCisgIDxwcm9ibGVtPgorICAgIDxmaWxlPlguamF2YTwvZmlsZT4KKyAgICA8bGluZT4xOTwvbGluZT4KKyAgICA8cHJvYmxlbV9jbGFzcyBzZXZlcml0eT0iV0FSTklORyIgYXR0cmlidXRlX2tleT0iTk9UX1VTRURfRUxFTUVOVF9BVFRSSUJVVEVTIj5EdXBsaWNhdGUgdGhyb3dzPC9wcm9ibGVtX2NsYXNzPgorICAgIDxkZXNjcmlwdGlvbj5EdXBsaWNhdGUgdGhyb3dzPC9kZXNjcmlwdGlvbj4KKyAgPC9wcm9ibGVtPgorPC9wcm9ibGVtcz4KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2R1cGxpY2F0ZVRocm93cy9zaW1wbGUvc3JjL1guamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2R1cGxpY2F0ZVRocm93cy9zaW1wbGUvc3JjL1guamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMDgzMzIyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZHVwbGljYXRlVGhyb3dzL3NpbXBsZS9zcmMvWC5qYXZhCkBAIC0wLDAgKzEsMjQgQEAKK2ltcG9ydCBqYXZhLmlvLio7CisKK3B1YmxpYyBjbGFzcyBYIHsKKyB2b2lkIGYoKSB0aHJvd3MKKyAgICAgICAgICAgIEV4Y2VwdGlvbiwKKyAgICAgICAgICAgIEV4Y2VwdGlvbiB7CisgfQorIHZvaWQgZjIoKSB0aHJvd3MKKyAgICAgICAgICAgIEV4Y2VwdGlvbiwKKyAgICAgICAgICAgIElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiB7CisgfQorIHZvaWQgZjMoKSB0aHJvd3MKKyAgICAgICAgICAgIEZpbGVOb3RGb3VuZEV4Y2VwdGlvbiwKKyAgICAgICAgICAgIEVPRkV4Y2VwdGlvbiB7CisgfQorCisgICAgIHB1YmxpYyB2b2lkIFRUVCgpIHRocm93cworICAgICBGaWxlTm90Rm91bmRFeGNlcHRpb24sCisgICAgIEVPRkV4Y2VwdGlvbiwKKyAgICAgRmlsZU5vdEZvdW5kRXhjZXB0aW9uLAorICAgICBFT0ZFeGNlcHRpb24geworICAgICB9CisKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9lbXB0eU1ldGhvZC9TQ1I4MzIxL2V4cGVjdGVkLnhtbCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2VtcHR5TWV0aG9kL1NDUjgzMjEvZXhwZWN0ZWQueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA5YTJkNDMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9lbXB0eU1ldGhvZC9TQ1I4MzIxL2V4cGVjdGVkLnhtbApAQCAtMCwwICsxLDE5IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPHByb2JsZW1zPgorICA8cHJvYmxlbT4KKyAgICA8ZmlsZT5NeUxpc3RlbmVyLmphdmE8L2ZpbGU+CisgICAgPGxpbmU+MjwvbGluZT4KKyAgICA8ZGVzY3JpcHRpb24+ZW1wdHk8L2Rlc2NyaXB0aW9uPgorICA8L3Byb2JsZW0+CisgIDxwcm9ibGVtPgorICAgIDxmaWxlPk15TGlzdGVuZXIuamF2YTwvZmlsZT4KKyAgICA8bGluZT40PC9saW5lPgorICAgIDxkZXNjcmlwdGlvbj5lbXB0eTwvZGVzY3JpcHRpb24+CisgIDwvcHJvYmxlbT4KKyAgPHByb2JsZW0+CisgICAgPGZpbGU+TXlBZGFwdGVyVXNhZ2UuamF2YTwvZmlsZT4KKyAgICA8bGluZT4yPC9saW5lPgorICAgIDxkZXNjcmlwdGlvbj5vbmx5IGNhbGxzIHN1cGVyPC9kZXNjcmlwdGlvbj4KKyAgPC9wcm9ibGVtPgorPC9wcm9ibGVtcz4KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZW1wdHlNZXRob2QvU0NSODMyMS9zcmMvTXlBZGFwdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9lbXB0eU1ldGhvZC9TQ1I4MzIxL3NyYy9NeUFkYXB0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYmExMDAyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZW1wdHlNZXRob2QvU0NSODMyMS9zcmMvTXlBZGFwdGVyLmphdmEKQEAgLTAsMCArMSw1IEBACitwdWJsaWMgY2xhc3MgTXlBZGFwdGVyIGltcGxlbWVudHMgTXlMaXN0ZW5lciB7CisgIHB1YmxpYyB2b2lkIG15TGlzdGVuMSgpIHt9CisgIHB1YmxpYyB2b2lkIG15TGlzdGVuMigpIHt9CisgIHB1YmxpYyB2b2lkIG15TGlzdGVuMygpIHt9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9lbXB0eU1ldGhvZC9TQ1I4MzIxL3NyYy9NeUFkYXB0ZXJVc2FnZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZW1wdHlNZXRob2QvU0NSODMyMS9zcmMvTXlBZGFwdGVyVXNhZ2UuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41M2U0ZWM3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZW1wdHlNZXRob2QvU0NSODMyMS9zcmMvTXlBZGFwdGVyVXNhZ2UuamF2YQpAQCAtMCwwICsxLDggQEAKK3B1YmxpYyBjbGFzcyBNeUFkYXB0ZXJVc2FnZSBleHRlbmRzIE15QWRhcHRlciB7CisgIHB1YmxpYyB2b2lkIG15TGlzdGVuMSgpeworICAgIHN1cGVyLm15TGlzdGVuMSgpOworICB9CisgIHB1YmxpYyB2b2lkIG15TGlzdGVuMigpeworICAgIFN5c3RlbS5vdXQucHJpbnRsbigiY29kZSBoZXJlIik7CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2VtcHR5TWV0aG9kL1NDUjgzMjEvc3JjL015TGlzdGVuZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2VtcHR5TWV0aG9kL1NDUjgzMjEvc3JjL015TGlzdGVuZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZTRlYzYzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZW1wdHlNZXRob2QvU0NSODMyMS9zcmMvTXlMaXN0ZW5lci5qYXZhCkBAIC0wLDAgKzEsNSBAQAorcHVibGljIGludGVyZmFjZSBNeUxpc3RlbmVyIHsKKyAgdm9pZCBteUxpc3RlbjEoKTsKKyAgdm9pZCBteUxpc3RlbjIoKTsKKyAgdm9pZCBteUxpc3RlbjMoKTsKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2VtcHR5TWV0aG9kL2V4dGVybmFsT3ZlcnJpZGUvZXhwZWN0ZWQueG1sIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZW1wdHlNZXRob2QvZXh0ZXJuYWxPdmVycmlkZS9leHBlY3RlZC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTExZjc4MQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2VtcHR5TWV0aG9kL2V4dGVybmFsT3ZlcnJpZGUvZXhwZWN0ZWQueG1sCkBAIC0wLDAgKzEsMTQgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8cHJvYmxlbXM+CisgIDxwcm9ibGVtPgorICAgIDxmaWxlPkJhc2UuamF2YTwvZmlsZT4KKyAgICA8bGluZT4yPC9saW5lPgorICAgIDxkZXNjcmlwdGlvbj5lbXB0eTwvZGVzY3JpcHRpb24+CisgIDwvcHJvYmxlbT4KKyAgPHByb2JsZW0+CisgICAgPGZpbGU+QmFzZS5qYXZhPC9maWxlPgorICAgIDxsaW5lPjQ8L2xpbmU+CisgICAgPGRlc2NyaXB0aW9uPmVtcHR5PC9kZXNjcmlwdGlvbj4KKyAgPC9wcm9ibGVtPgorPC9wcm9ibGVtcz4KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZW1wdHlNZXRob2QvZXh0ZXJuYWxPdmVycmlkZS9leHRfc3JjL0Rlcml2ZWQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2VtcHR5TWV0aG9kL2V4dGVybmFsT3ZlcnJpZGUvZXh0X3NyYy9EZXJpdmVkLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTliNGQzZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2VtcHR5TWV0aG9kL2V4dGVybmFsT3ZlcnJpZGUvZXh0X3NyYy9EZXJpdmVkLmphdmEKQEAgLTAsMCArMSw1IEBACitwdWJsaWMgY2xhc3MgRGVyaXZlZCBleHRlbmRzIEJhc2UgeworICBwdWJsaWMgdm9pZCBmb28oKSB7fQorICBwdWJsaWMgdm9pZCBiYXIoKSB7IFN5c3RlbS5vdXQucHJpbnRsbigiSGVsbG8iKTsgfQorICBwdWJsaWMgdm9pZCBmb29iYXIoKSB7IHN1cGVyLmZvb2JhcigpOyB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZW1wdHlNZXRob2QvZXh0ZXJuYWxPdmVycmlkZS9zcmMvQmFzZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZW1wdHlNZXRob2QvZXh0ZXJuYWxPdmVycmlkZS9zcmMvQmFzZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJhOTUwYjEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9lbXB0eU1ldGhvZC9leHRlcm5hbE92ZXJyaWRlL3NyYy9CYXNlLmphdmEKQEAgLTAsMCArMSw1IEBACitwdWJsaWMgY2xhc3MgQmFzZSB7CisgICBwdWJsaWMgdm9pZCBmb28oKSB7fQorICAgcHVibGljIHZvaWQgYmFyKCkge30KKyAgIHB1YmxpYyB2b2lkIGZvb2JhcigpIHt9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZW1wdHlNZXRob2QvaW5Bbm9ueW1vdXMvZXhwZWN0ZWQueG1sIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZW1wdHlNZXRob2QvaW5Bbm9ueW1vdXMvZXhwZWN0ZWQueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQyYzlkNWIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9lbXB0eU1ldGhvZC9pbkFub255bW91cy9leHBlY3RlZC54bWwKQEAgLTAsMCArMSwzMiBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxwcm9ibGVtcz4KKyAgPHByb2JsZW0+CisgICAgPGZpbGU+VGVzdC5qYXZhPC9maWxlPgorICAgIDxsaW5lPjY8L2xpbmU+CisgICAgPGVudHJ5X3BvaW50IFRZUEU9Im1ldGhvZCIgRlFOQU1FPSJUZXN0JDEgdm9pZCBhKCkiLz4KKyAgICA8cHJvYmxlbV9jbGFzcz5FbXB0eSBtZXRob2Q8L3Byb2JsZW1fY2xhc3M+CisgICAgPGRlc2NyaXB0aW9uPlRoZSBtZXRob2QgaXMgZW1wdHk8L2Rlc2NyaXB0aW9uPgorICA8L3Byb2JsZW0+CisgIDxwcm9ibGVtPgorICAgIDxmaWxlPlRlc3QuamF2YTwvZmlsZT4KKyAgICA8bGluZT4xMzwvbGluZT4KKyAgICA8ZW50cnlfcG9pbnQgVFlQRT0ibWV0aG9kIiBGUU5BTUU9IlRlc3QkNUEkMSB2b2lkIGFhKCkiLz4KKyAgICA8cHJvYmxlbV9jbGFzcz5FbXB0eSBtZXRob2Q8L3Byb2JsZW1fY2xhc3M+CisgICAgPGRlc2NyaXB0aW9uPlRoZSBtZXRob2QgaXMgZW1wdHk8L2Rlc2NyaXB0aW9uPgorICA8L3Byb2JsZW0+CisgIDxwcm9ibGVtPgorICAgIDxmaWxlPlRlc3QuamF2YTwvZmlsZT4KKyAgICA8bGluZT4yMDwvbGluZT4KKyAgICA8ZW50cnlfcG9pbnQgVFlQRT0ibWV0aG9kIiBGUU5BTUU9IlRlc3QkNUEkM0ExJDEgdm9pZCBhYTEoKSIvPgorICAgIDxwcm9ibGVtX2NsYXNzPkVtcHR5IG1ldGhvZDwvcHJvYmxlbV9jbGFzcz4KKyAgICA8ZGVzY3JpcHRpb24+VGhlIG1ldGhvZCBpcyBlbXB0eTwvZGVzY3JpcHRpb24+CisgIDwvcHJvYmxlbT4KKyAgPHByb2JsZW0+CisgICAgPGZpbGU+VGVzdC5qYXZhPC9maWxlPgorICAgIDxsaW5lPjMyPC9saW5lPgorICAgIDxlbnRyeV9wb2ludCBUWVBFPSJtZXRob2QiIEZRTkFNRT0iVGVzdC5CJDEgdm9pZCBiYigpIi8+CisgICAgPHByb2JsZW1fY2xhc3M+RW1wdHkgbWV0aG9kPC9wcm9ibGVtX2NsYXNzPgorICAgIDxkZXNjcmlwdGlvbj5UaGUgbWV0aG9kIGlzIGVtcHR5PC9kZXNjcmlwdGlvbj4KKyAgPC9wcm9ibGVtPgorPC9wcm9ibGVtcz4KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZW1wdHlNZXRob2QvaW5Bbm9ueW1vdXMvc3JjL1Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2VtcHR5TWV0aG9kL2luQW5vbnltb3VzL3NyYy9UZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjIyYmJlMAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2VtcHR5TWV0aG9kL2luQW5vbnltb3VzL3NyYy9UZXN0LmphdmEKQEAgLTAsMCArMSwzNiBAQAorcHVibGljIGNsYXNzIFRlc3QgeworICBwdWJsaWMgdm9pZCBmb28oKSB7CisgICAgUnVubmFibGUgciA9IG5ldyBSdW5uYWJsZSgpIHsKKyAgICAgIHB1YmxpYyB2b2lkIHJ1bigpeworICAgICAgfQorICAgICAgcHJpdmF0ZSB2b2lkIGEoKXt9CisgICAgfQorICAgIGNsYXNzIEEgeworICAgICAgdm9pZCBhKCl7CisgICAgICAgIFJ1bm5hYmxlIGEgPSBuZXcgUnVubmFibGUoKSB7CisgICAgICAgICAgcHVibGljIHZvaWQgcnVuKCl7CisgICAgICAgICAgfQorICAgICAgICAgIHByaXZhdGUgdm9pZCBhYSgpe30KKyAgICAgICAgfQorICAgICAgICBjbGFzcyBBMSB7CisgICAgICAgICAgdm9pZCBhMSgpeworICAgICAgICAgICAgUnVubmFibGUgYTEgPSBuZXcgUnVubmFibGUoKSB7CisgICAgICAgICAgICAgIHB1YmxpYyB2b2lkIHJ1bigpeworICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIHByaXZhdGUgdm9pZCBhYTEoKXt9CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgfQorICB9CisgIGNsYXNzIEIgeworICAgIHZvaWQgYigpIHsKKyAgICAgIFJ1bm5hYmxlIGIgPSBuZXcgUnVubmFibGUoKSB7CisgICAgICAgIHB1YmxpYyB2b2lkIHJ1bigpeworICAgICAgICB9CisgICAgICAgIHByaXZhdGUgdm9pZCBiYigpe30KKyAgICAgIH0KKyAgICB9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9lbXB0eU1ldGhvZC9zdXBlckNhbGwvZXhwZWN0ZWQueG1sIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZW1wdHlNZXRob2Qvc3VwZXJDYWxsL2V4cGVjdGVkLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNzk2ODI0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZW1wdHlNZXRob2Qvc3VwZXJDYWxsL2V4cGVjdGVkLnhtbApAQCAtMCwwICsxLDkgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8cHJvYmxlbXM+CisgIDxwcm9ibGVtPgorICAgIDxmaWxlPkJhc2UuamF2YTwvZmlsZT4KKyAgICA8bGluZT4yPC9saW5lPgorICAgIDxkZXNjcmlwdGlvbj5lbXB0eTwvZGVzY3JpcHRpb24+CisgIDwvcHJvYmxlbT4KKzwvcHJvYmxlbXM+CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2VtcHR5TWV0aG9kL3N1cGVyQ2FsbC9zcmMvQmFzZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZW1wdHlNZXRob2Qvc3VwZXJDYWxsL3NyYy9CYXNlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzgzOTZjNQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2VtcHR5TWV0aG9kL3N1cGVyQ2FsbC9zcmMvQmFzZS5qYXZhCkBAIC0wLDAgKzEsMyBAQAorcHVibGljIGNsYXNzIEJhc2UgeworICBwdWJsaWMgdm9pZCBmb28oKSB7fQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2VtcHR5TWV0aG9kL3N1cGVyQ2FsbC9zcmMvRGVyaXZlZC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZW1wdHlNZXRob2Qvc3VwZXJDYWxsL3NyYy9EZXJpdmVkLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTA2YTE3NQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2VtcHR5TWV0aG9kL3N1cGVyQ2FsbC9zcmMvRGVyaXZlZC5qYXZhCkBAIC0wLDAgKzEsNSBAQAorcHVibGljIGNsYXNzIERlcml2ZWQgZXh0ZW5kcyBCYXNlIHsKKyAgcHVibGljIHZvaWQgZm9vKCkgeworICAgICBzdXBlci5mb28oKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2VtcHR5TWV0aG9kL3N1cGVyQ2FsbEJ5UmFuZ2UvZXhwZWN0ZWQueG1sIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZW1wdHlNZXRob2Qvc3VwZXJDYWxsQnlSYW5nZS9leHBlY3RlZC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmYyYTZiMQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2VtcHR5TWV0aG9kL3N1cGVyQ2FsbEJ5UmFuZ2UvZXhwZWN0ZWQueG1sCkBAIC0wLDAgKzEsMTAgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8cHJvYmxlbXM+CisgIDxwcm9ibGVtPgorICAgIDxmaWxlPkJhc2UuamF2YTwvZmlsZT4KKyAgICA8bGluZT4yPC9saW5lPgorICAgIDxkZXNjcmlwdGlvbj5lbXB0eTwvZGVzY3JpcHRpb24+CisgICAgPGVudHJ5X3BvaW50IFRZUEU9Im1ldGhvZCIgRlFOQU1FPSJCYXNlIHZvaWQgZm9vKCkiIC8+CisgIDwvcHJvYmxlbT4KKzwvcHJvYmxlbXM+CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2VtcHR5TWV0aG9kL3N1cGVyQ2FsbEJ5UmFuZ2Uvc3JjL0Jhc2UuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2VtcHR5TWV0aG9kL3N1cGVyQ2FsbEJ5UmFuZ2Uvc3JjL0Jhc2UuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zODM5NmM1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZW1wdHlNZXRob2Qvc3VwZXJDYWxsQnlSYW5nZS9zcmMvQmFzZS5qYXZhCkBAIC0wLDAgKzEsMyBAQAorcHVibGljIGNsYXNzIEJhc2UgeworICBwdWJsaWMgdm9pZCBmb28oKSB7fQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2VtcHR5TWV0aG9kL3N1cGVyQ2FsbEJ5UmFuZ2Uvc3JjL0Rlcml2ZWQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2VtcHR5TWV0aG9kL3N1cGVyQ2FsbEJ5UmFuZ2Uvc3JjL0Rlcml2ZWQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MDZhMTc1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZW1wdHlNZXRob2Qvc3VwZXJDYWxsQnlSYW5nZS9zcmMvRGVyaXZlZC5qYXZhCkBAIC0wLDAgKzEsNSBAQAorcHVibGljIGNsYXNzIERlcml2ZWQgZXh0ZW5kcyBCYXNlIHsKKyAgcHVibGljIHZvaWQgZm9vKCkgeworICAgICBzdXBlci5mb28oKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2VtcHR5TWV0aG9kL3N1cGVyRnJvbUFub3RoZXJQYWNrYWdlQ2FsbC9leHBlY3RlZC54bWwgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9lbXB0eU1ldGhvZC9zdXBlckZyb21Bbm90aGVyUGFja2FnZUNhbGwvZXhwZWN0ZWQueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM2M2M5MjUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9lbXB0eU1ldGhvZC9zdXBlckZyb21Bbm90aGVyUGFja2FnZUNhbGwvZXhwZWN0ZWQueG1sCkBAIC0wLDAgKzEsMiBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxwcm9ibGVtcy8+CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9lbXB0eU1ldGhvZC9zdXBlckZyb21Bbm90aGVyUGFja2FnZUNhbGwvc3JjL3AxL0Jhc2UuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2VtcHR5TWV0aG9kL3N1cGVyRnJvbUFub3RoZXJQYWNrYWdlQ2FsbC9zcmMvcDEvQmFzZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY0MTFlYTAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9lbXB0eU1ldGhvZC9zdXBlckZyb21Bbm90aGVyUGFja2FnZUNhbGwvc3JjL3AxL0Jhc2UuamF2YQpAQCAtMCwwICsxLDQgQEAKK3BhY2thZ2UgcDE7CitwdWJsaWMgY2xhc3MgQmFzZSB7CisgIHByb3RlY3RlZCB2b2lkIGZvbygpIHtTeXN0ZW0ub3V0LnByaW50bG4oIiIpO30KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9lbXB0eU1ldGhvZC9zdXBlckZyb21Bbm90aGVyUGFja2FnZUNhbGwvc3JjL3AyL0Rlcml2ZWQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2VtcHR5TWV0aG9kL3N1cGVyRnJvbUFub3RoZXJQYWNrYWdlQ2FsbC9zcmMvcDIvRGVyaXZlZC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVmMjA0NGIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9lbXB0eU1ldGhvZC9zdXBlckZyb21Bbm90aGVyUGFja2FnZUNhbGwvc3JjL3AyL0Rlcml2ZWQuamF2YQpAQCAtMCwwICsxLDcgQEAKK3BhY2thZ2UgcDI7CitpbXBvcnQgcDE7CitwdWJsaWMgY2xhc3MgRGVyaXZlZCBleHRlbmRzIEJhc2UgeworICBwcm90ZWN0ZWQgdm9pZCBmb28oKSB7CisgICAgIHN1cGVyLmZvbygpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZW1wdHlNZXRob2Qvc3VwZXJXaXRob3V0U3luYy9leHBlY3RlZC54bWwgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9lbXB0eU1ldGhvZC9zdXBlcldpdGhvdXRTeW5jL2V4cGVjdGVkLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNjNjOTI1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZW1wdHlNZXRob2Qvc3VwZXJXaXRob3V0U3luYy9leHBlY3RlZC54bWwKQEAgLTAsMCArMSwyIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPHByb2JsZW1zLz4KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2VtcHR5TWV0aG9kL3N1cGVyV2l0aG91dFN5bmMvc3JjL3AxL0Jhc2UuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2VtcHR5TWV0aG9kL3N1cGVyV2l0aG91dFN5bmMvc3JjL3AxL0Jhc2UuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNzJjYmU4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZW1wdHlNZXRob2Qvc3VwZXJXaXRob3V0U3luYy9zcmMvcDEvQmFzZS5qYXZhCkBAIC0wLDAgKzEsNCBAQAorcGFja2FnZSBwMTsKK3B1YmxpYyBjbGFzcyBCYXNlIHsKKyAgcHVibGljIHZvaWQgZm9vKCkge1N5c3RlbS5vdXQucHJpbnRsbigiIik7fQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2VtcHR5TWV0aG9kL3N1cGVyV2l0aG91dFN5bmMvc3JjL3AyL0Rlcml2ZWQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2VtcHR5TWV0aG9kL3N1cGVyV2l0aG91dFN5bmMvc3JjL3AyL0Rlcml2ZWQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZWEwNjEyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZW1wdHlNZXRob2Qvc3VwZXJXaXRob3V0U3luYy9zcmMvcDIvRGVyaXZlZC5qYXZhCkBAIC0wLDAgKzEsNyBAQAorcGFja2FnZSBwMjsKK2ltcG9ydCBwMTsKK3B1YmxpYyBjbGFzcyBEZXJpdmVkIGV4dGVuZHMgcDEuQmFzZSB7CisgIHB1YmxpYyBzeW5jaHJvbml6ZWQgdm9pZCBmb28oKSB7CisgICAgIHN1cGVyLmZvbygpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZXF1YWxzQW5kSGFzaGNvZGUvaGllcmFyY2h5L2V4cGVjdGVkLnhtbCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2VxdWFsc0FuZEhhc2hjb2RlL2hpZXJhcmNoeS9leHBlY3RlZC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDk1ZTFjNgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2VxdWFsc0FuZEhhc2hjb2RlL2hpZXJhcmNoeS9leHBlY3RlZC54bWwKQEAgLTAsMCArMSwxMyBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxwcm9ibGVtcz4KKyAgPHByb2JsZW0+CisgICAgPGZpbGU+QS5qYXZhPC9maWxlPgorICAgIDxsaW5lPjE8L2xpbmU+CisgICAgPGRlc2NyaXB0aW9uPkNsYXNzIGhhcyAmbHQ7Y29kZSZndDtlcXVhbHMoKSZsdDsvY29kZSZndDsgZGVmaW5lZCBidXQgZG9lcyBub3QgZGVmaW5lICZsdDtjb2RlJmd0O2hhc2hDb2RlKCkmbHQ7L2NvZGUmZ3Q7LjwvZGVzY3JpcHRpb24+CisgIDwvcHJvYmxlbT4KKyAgPHByb2JsZW0+CisgICAgPGZpbGU+Qi5qYXZhPC9maWxlPgorICAgIDxsaW5lPjE8L2xpbmU+CisgICAgPGRlc2NyaXB0aW9uPkNsYXNzIGhhcyAmbHQ7Y29kZSZndDtoYXNoQ29kZSgpJmx0Oy9jb2RlJmd0OyBkZWZpbmVkIGJ1dCBkb2VzIG5vdCBkZWZpbmUgJmx0O2NvZGUmZ3Q7ZXF1YWxzKCkmbHQ7L2NvZGUmZ3Q7LjwvZGVzY3JpcHRpb24+CisgIDwvcHJvYmxlbT4KKzwvcHJvYmxlbXM+CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9lcXVhbHNBbmRIYXNoY29kZS9oaWVyYXJjaHkvc3JjL0EuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2VxdWFsc0FuZEhhc2hjb2RlL2hpZXJhcmNoeS9zcmMvQS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdiYzUzN2IKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9lcXVhbHNBbmRIYXNoY29kZS9oaWVyYXJjaHkvc3JjL0EuamF2YQpAQCAtMCwwICsxLDUgQEAKK2NsYXNzIEEgeworICAgIHB1YmxpYyBib29sZWFuIGVxdWFscyhmaW5hbCBPYmplY3QgbykgeworICAgICAgcmV0dXJuIHRoaXMgPT0gbzsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZXF1YWxzQW5kSGFzaGNvZGUvaGllcmFyY2h5L3NyYy9CLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9lcXVhbHNBbmRIYXNoY29kZS9oaWVyYXJjaHkvc3JjL0IuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MWFkM2M0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZXF1YWxzQW5kSGFzaGNvZGUvaGllcmFyY2h5L3NyYy9CLmphdmEKQEAgLTAsMCArMSw1IEBACitjbGFzcyBCIGV4dGVuZHMgQSB7CisgIHB1YmxpYyBpbnQgaGFzaENvZGUoKSB7CisgICAgcmV0dXJuIDMxOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZXF1YWxzQW5kSGFzaGNvZGUvaW5uZXJDbGFzcy9leHBlY3RlZC54bWwgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9lcXVhbHNBbmRIYXNoY29kZS9pbm5lckNsYXNzL2V4cGVjdGVkLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NzhmMTE2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZXF1YWxzQW5kSGFzaGNvZGUvaW5uZXJDbGFzcy9leHBlY3RlZC54bWwKQEAgLTAsMCArMSw4IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPHByb2JsZW1zPgorICA8cHJvYmxlbT4KKyAgICA8ZmlsZT5UZXN0LmphdmE8L2ZpbGU+CisgICAgPGxpbmU+MjwvbGluZT4KKyAgICA8ZGVzY3JpcHRpb24+Q2xhc3MgaGFzICZsdDtjb2RlJmd0O2VxdWFscygpJmx0Oy9jb2RlJmd0OyBkZWZpbmVkIGJ1dCBkb2VzIG5vdCBkZWZpbmUgJmx0O2NvZGUmZ3Q7aGFzaENvZGUoKSZsdDsvY29kZSZndDsuPC9kZXNjcmlwdGlvbj4KKyAgPC9wcm9ibGVtPgorPC9wcm9ibGVtcz4KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2VxdWFsc0FuZEhhc2hjb2RlL2lubmVyQ2xhc3Mvc3JjL1Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2VxdWFsc0FuZEhhc2hjb2RlL2lubmVyQ2xhc3Mvc3JjL1Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZGUwZGRmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZXF1YWxzQW5kSGFzaGNvZGUvaW5uZXJDbGFzcy9zcmMvVGVzdC5qYXZhCkBAIC0wLDAgKzEsNyBAQAorY2xhc3MgVGVzdCB7CisgIGNsYXNzIElubmVyIHsKKyAgICBwdWJsaWMgYm9vbGVhbiBlcXVhbHMoZmluYWwgT2JqZWN0IG8pIHsKKyAgICAgIHJldHVybiB0aGlzID09IG87CisgICAgfQorICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9maWVsZENhbkJlTG9jYWwvY29uc3RydWN0b3IvZXhwZWN0ZWQueG1sIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZmllbGRDYW5CZUxvY2FsL2NvbnN0cnVjdG9yL2V4cGVjdGVkLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lODc4M2QzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZmllbGRDYW5CZUxvY2FsL2NvbnN0cnVjdG9yL2V4cGVjdGVkLnhtbApAQCAtMCwwICsxLDggQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8cHJvYmxlbXM+CisgIDxwcm9ibGVtPgorICAgIDxmaWxlPlRlc3QuamF2YTwvZmlsZT4KKyAgICA8bGluZT4yPC9saW5lPgorICAgIDxkZXNjcmlwdGlvbj5GaWVsZCBjYW4gYmUgY29udmVydGVkIHRvIGEgdmFyaWFibGU8L2Rlc2NyaXB0aW9uPgorICA8L3Byb2JsZW0+Cis8L3Byb2JsZW1zPgpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZmllbGRDYW5CZUxvY2FsL2NvbnN0cnVjdG9yL3NyYy9UZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9maWVsZENhbkJlTG9jYWwvY29uc3RydWN0b3Ivc3JjL1Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNTFjNTc5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZmllbGRDYW5CZUxvY2FsL2NvbnN0cnVjdG9yL3NyYy9UZXN0LmphdmEKQEAgLTAsMCArMSwxNSBAQAorY2xhc3MgVGVtcCB7CisgICAgcHJpdmF0ZSBpbnQgbGVuZ3RoID0gMTA7CisgICAgcHJpdmF0ZSBpbnRbXSBhcnJheTsKKworICAgIHB1YmxpYyBUZW1wKCkKKyAgICB7CisgICAgICAgIGFycmF5ID0gbmV3IGludFtsZW5ndGhdOworICAgIH0KKworCisgICAgcHVibGljIGludFtdIGdldEFycmF5KCkKKyAgICB7CisgICAgICAgIHJldHVybiBhcnJheTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZmllbGRDYW5CZUxvY2FsL2ZpZWxkVXNlZEZvcldyaXRpbmdJbkxhbWJkYS9leHBlY3RlZC54bWwgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9maWVsZENhbkJlTG9jYWwvZmllbGRVc2VkRm9yV3JpdGluZ0luTGFtYmRhL2V4cGVjdGVkLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ODBhODg5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZmllbGRDYW5CZUxvY2FsL2ZpZWxkVXNlZEZvcldyaXRpbmdJbkxhbWJkYS9leHBlY3RlZC54bWwKQEAgLTAsMCArMSwzIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPHByb2JsZW1zPgorPC9wcm9ibGVtcz4KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2ZpZWxkQ2FuQmVMb2NhbC9maWVsZFVzZWRGb3JXcml0aW5nSW5MYW1iZGEvc3JjL1Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2ZpZWxkQ2FuQmVMb2NhbC9maWVsZFVzZWRGb3JXcml0aW5nSW5MYW1iZGEvc3JjL1Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMDQ2NzQ3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZmllbGRDYW5CZUxvY2FsL2ZpZWxkVXNlZEZvcldyaXRpbmdJbkxhbWJkYS9zcmMvVGVzdC5qYXZhCkBAIC0wLDAgKzEsMTMgQEAKK2NsYXNzIFRlc3QgeworICAgIHByaXZhdGUgaW50IGY7CisKKyAgICB2b2lkIGZvbyAoKSB7CisgICAgICAgIGYgPSAwOworICAgICAgICBpbnQgayA9IGY7CisgICAgfQorCisgICAgaW50IGJhciAoKSB7CisgICAgICAgIGYgPSA1OworICAgICAgICByZXR1cm4gZjsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9maWVsZENhbkJlTG9jYWwvZmllbGRVc2VkSW5Db25zdGFudEluaXRpYWxpemF0aW9uL2V4cGVjdGVkLnhtbCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2ZpZWxkQ2FuQmVMb2NhbC9maWVsZFVzZWRJbkNvbnN0YW50SW5pdGlhbGl6YXRpb24vZXhwZWN0ZWQueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU4MGE4ODkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9maWVsZENhbkJlTG9jYWwvZmllbGRVc2VkSW5Db25zdGFudEluaXRpYWxpemF0aW9uL2V4cGVjdGVkLnhtbApAQCAtMCwwICsxLDMgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8cHJvYmxlbXM+Cis8L3Byb2JsZW1zPgpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZmllbGRDYW5CZUxvY2FsL2ZpZWxkVXNlZEluQ29uc3RhbnRJbml0aWFsaXphdGlvbi9zcmMvVGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZmllbGRDYW5CZUxvY2FsL2ZpZWxkVXNlZEluQ29uc3RhbnRJbml0aWFsaXphdGlvbi9zcmMvVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZhZGMzMTgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9maWVsZENhbkJlTG9jYWwvZmllbGRVc2VkSW5Db25zdGFudEluaXRpYWxpemF0aW9uL3NyYy9UZXN0LmphdmEKQEAgLTAsMCArMSw5IEBACitjbGFzcyBUZXN0IHsKKyAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgT2JqZWN0IEZPTyA9IG5ldyBUZXN0KCkuZm9vOworICAKKyAgICAgIHByaXZhdGUgZmluYWwgU3RyaW5nIGZvbzsKKyAgCisgICAgICBwcml2YXRlIFRlc3QoKSB7CisgICAgICAgICAgZm9vID0gInNvbWUgdGV4dCI7CisgICAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9maWVsZENhbkJlTG9jYWwvZmllbGRXaXRoSW1tdXRhYmxlVHlwZS9leHBlY3RlZC54bWwgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9maWVsZENhbkJlTG9jYWwvZmllbGRXaXRoSW1tdXRhYmxlVHlwZS9leHBlY3RlZC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTUyYjBhMQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2ZpZWxkQ2FuQmVMb2NhbC9maWVsZFdpdGhJbW11dGFibGVUeXBlL2V4cGVjdGVkLnhtbApAQCAtMCwwICsxLDggQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8cHJvYmxlbXM+CisgIDxwcm9ibGVtPgorICAgIDxmaWxlPlRlc3QuamF2YTwvZmlsZT4KKyAgICA8bGluZT4yPC9saW5lPgorICAgIDxkZXNjcmlwdGlvbj5GaWVsZCBjYW4gYmUgY29udmVydGVkIHRvIGEgbG9jYWwgdmFyaWFibGU8L2Rlc2NyaXB0aW9uPgorICA8L3Byb2JsZW0+Cis8L3Byb2JsZW1zPgpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZmllbGRDYW5CZUxvY2FsL2ZpZWxkV2l0aEltbXV0YWJsZVR5cGUvc3JjL1Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2ZpZWxkQ2FuQmVMb2NhbC9maWVsZFdpdGhJbW11dGFibGVUeXBlL3NyYy9UZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDg0ODhiYQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2ZpZWxkQ2FuQmVMb2NhbC9maWVsZFdpdGhJbW11dGFibGVUeXBlL3NyYy9UZXN0LmphdmEKQEAgLTAsMCArMSw4IEBACitjbGFzcyBUZXN0IHsKKyAgICBwcml2YXRlIFN0cmluZyBmID0gIiI7CisKKyAgICB2b2lkIGZvbyAoKSB7CisgICAgICBmLnN1YnN0cmluZygwKTsKKyAgICB9CisKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2ZpZWxkQ2FuQmVMb2NhbC9pZ25vcmVBbm5vdGF0ZWQvZXhwZWN0ZWQueG1sIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZmllbGRDYW5CZUxvY2FsL2lnbm9yZUFubm90YXRlZC9leHBlY3RlZC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTgwYTg4OQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2ZpZWxkQ2FuQmVMb2NhbC9pZ25vcmVBbm5vdGF0ZWQvZXhwZWN0ZWQueG1sCkBAIC0wLDAgKzEsMyBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxwcm9ibGVtcz4KKzwvcHJvYmxlbXM+CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9maWVsZENhbkJlTG9jYWwvaWdub3JlQW5ub3RhdGVkL3NyYy9UZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9maWVsZENhbkJlTG9jYWwvaWdub3JlQW5ub3RhdGVkL3NyYy9UZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmNhNzI4ZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2ZpZWxkQ2FuQmVMb2NhbC9pZ25vcmVBbm5vdGF0ZWQvc3JjL1Rlc3QuamF2YQpAQCAtMCwwICsxLDkgQEAKK2NsYXNzIFRlc3QgeworICAgIEBEZXByZWNhdGVkCisgICAgcHJpdmF0ZSBpbnQgZjsKKworICAgIHZvaWQgZm9vICgpIHsKKyAgICAgICAgZiA9IDA7CisgICAgICAgIGludCBrID0gZjsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9maWVsZENhbkJlTG9jYWwvaW5uZXJDbGFzc0NvbnN0cnVjdG9yL2V4cGVjdGVkLnhtbCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2ZpZWxkQ2FuQmVMb2NhbC9pbm5lckNsYXNzQ29uc3RydWN0b3IvZXhwZWN0ZWQueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ3MDRkOTEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9maWVsZENhbkJlTG9jYWwvaW5uZXJDbGFzc0NvbnN0cnVjdG9yL2V4cGVjdGVkLnhtbApAQCAtMCwwICsxLDIgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8cHJvYmxlbXMvPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2ZpZWxkQ2FuQmVMb2NhbC9pbm5lckNsYXNzQ29uc3RydWN0b3Ivc3JjL1Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2ZpZWxkQ2FuQmVMb2NhbC9pbm5lckNsYXNzQ29uc3RydWN0b3Ivc3JjL1Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NmQ0YjljCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZmllbGRDYW5CZUxvY2FsL2lubmVyQ2xhc3NDb25zdHJ1Y3Rvci9zcmMvVGVzdC5qYXZhCkBAIC0wLDAgKzEsMTEgQEAKK3B1YmxpYyBjbGFzcyBPdXRlciB7CisgIHByaXZhdGUgaW50IHZhbHVlID0gMDsKKworICBwdWJsaWMgY2xhc3MgSW5uZXIgeworICAgIHByaXZhdGUgZmluYWwgaW50IG15VmFsdWU7CisKKyAgICBwdWJsaWMgSW5uZXIoKSB7CisgICAgICBteVZhbHVlID0gdmFsdWUrKzsKKyAgICB9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9maWVsZENhbkJlTG9jYWwvaW5uZXJDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIvZXhwZWN0ZWQueG1sIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZmllbGRDYW5CZUxvY2FsL2lubmVyQ2xhc3NGaWVsZEluaXRpYWxpemVyL2V4cGVjdGVkLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NzA0ZDkxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZmllbGRDYW5CZUxvY2FsL2lubmVyQ2xhc3NGaWVsZEluaXRpYWxpemVyL2V4cGVjdGVkLnhtbApAQCAtMCwwICsxLDIgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8cHJvYmxlbXMvPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2ZpZWxkQ2FuQmVMb2NhbC9pbm5lckNsYXNzRmllbGRJbml0aWFsaXplci9zcmMvVGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZmllbGRDYW5CZUxvY2FsL2lubmVyQ2xhc3NGaWVsZEluaXRpYWxpemVyL3NyYy9UZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDE4ZjY0OQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2ZpZWxkQ2FuQmVMb2NhbC9pbm5lckNsYXNzRmllbGRJbml0aWFsaXplci9zcmMvVGVzdC5qYXZhCkBAIC0wLDAgKzEsNyBAQAorcHVibGljIGNsYXNzIE91dGVyIHsKKyAgcHJpdmF0ZSBpbnQgdmFsdWUgPSAwOworCisgIHB1YmxpYyBjbGFzcyBJbm5lciB7CisgICAgcHJpdmF0ZSBmaW5hbCBpbnQgbXlWYWx1ZSA9IE91dGVyLnRoaXMudmFsdWU7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9maWVsZENhbkJlTG9jYWwvbG9jYWxTdGF0ZVZhcjJJbm5lckNsYXNzL2V4cGVjdGVkLnhtbCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2ZpZWxkQ2FuQmVMb2NhbC9sb2NhbFN0YXRlVmFyMklubmVyQ2xhc3MvZXhwZWN0ZWQueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ3MDRkOTEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9maWVsZENhbkJlTG9jYWwvbG9jYWxTdGF0ZVZhcjJJbm5lckNsYXNzL2V4cGVjdGVkLnhtbApAQCAtMCwwICsxLDIgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8cHJvYmxlbXMvPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2ZpZWxkQ2FuQmVMb2NhbC9sb2NhbFN0YXRlVmFyMklubmVyQ2xhc3Mvc3JjL1Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2ZpZWxkQ2FuQmVMb2NhbC9sb2NhbFN0YXRlVmFyMklubmVyQ2xhc3Mvc3JjL1Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNTVhNGQxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZmllbGRDYW5CZUxvY2FsL2xvY2FsU3RhdGVWYXIySW5uZXJDbGFzcy9zcmMvVGVzdC5qYXZhCkBAIC0wLDAgKzEsMTEgQEAKK2ltcG9ydCBqYXZhLnV0aWwuKjsKK3B1YmxpYyBjbGFzcyBPdXRlciB7CisgIHByaXZhdGUgTWFwPFN0cmluZywgU3RyaW5nPiB2YWx1ZSA9IG5ldyBIYXNoTWFwPFN0cmluZywgU3RyaW5nPigpOworCisgIHB1YmxpYyBjbGFzcyBJbm5lciB7CisKKyAgICBwdWJsaWMgSW5uZXIoU3RyaW5nIHMpIHsKKyAgICAgIGlmICghdmFsdWUuY29udGFpbnNLZXkocykpIHZhbHVlLnB1dChzLCAiIik7CisgICAgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZmllbGRDYW5CZUxvY2FsL2xvY2FsVmFyMklubmVyQ2xhc3MvZXhwZWN0ZWQueG1sIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZmllbGRDYW5CZUxvY2FsL2xvY2FsVmFyMklubmVyQ2xhc3MvZXhwZWN0ZWQueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMwNjZmM2QKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9maWVsZENhbkJlTG9jYWwvbG9jYWxWYXIySW5uZXJDbGFzcy9leHBlY3RlZC54bWwKQEAgLTAsMCArMSw5IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPHByb2JsZW1zPgorICA8cHJvYmxlbT4KKyAgICA8ZmlsZT5UZXN0LmphdmE8L2ZpbGU+CisgICAgPGxpbmU+MjwvbGluZT4KKyAgICA8cHJvYmxlbV9jbGFzcyBzZXZlcml0eT0iV0FSTklORyIgYXR0cmlidXRlX2tleT0iV0FSTklOR19BVFRSSUJVVEVTIj5GaWVsZCBjYW4gYmUgbG9jYWw8L3Byb2JsZW1fY2xhc3M+CisgICAgPGRlc2NyaXB0aW9uPkZpZWxkIGNhbiBiZSBjb252ZXJ0ZWQgdG8gYSBsb2NhbCB2YXJpYWJsZTwvZGVzY3JpcHRpb24+CisgIDwvcHJvYmxlbT4KKzwvcHJvYmxlbXM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZmllbGRDYW5CZUxvY2FsL2xvY2FsVmFyMklubmVyQ2xhc3Mvc3JjL1Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2ZpZWxkQ2FuQmVMb2NhbC9sb2NhbFZhcjJJbm5lckNsYXNzL3NyYy9UZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDdiMzhlMAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2ZpZWxkQ2FuQmVMb2NhbC9sb2NhbFZhcjJJbm5lckNsYXNzL3NyYy9UZXN0LmphdmEKQEAgLTAsMCArMSwxMSBAQAorcHVibGljIGNsYXNzIE91dGVyIHsKKyAgcHJpdmF0ZSBpbnQgdmFsdWUgPSAwOworCisgIHB1YmxpYyBjbGFzcyBJbm5lciB7CisgICAgcHJpdmF0ZSBmaW5hbCBpbnQgbXlWYWx1ZTsKKworICAgIHB1YmxpYyBJbm5lcigpIHsKKyAgICAgIG15VmFsdWUgPSB2YWx1ZTsKKyAgICB9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9maWVsZENhbkJlTG9jYWwvbm90Q29uc3RhbnRJbml0aWFsaXplci9leHBlY3RlZC54bWwgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9maWVsZENhbkJlTG9jYWwvbm90Q29uc3RhbnRJbml0aWFsaXplci9leHBlY3RlZC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDcwNGQ5MQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2ZpZWxkQ2FuQmVMb2NhbC9ub3RDb25zdGFudEluaXRpYWxpemVyL2V4cGVjdGVkLnhtbApAQCAtMCwwICsxLDIgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8cHJvYmxlbXMvPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2ZpZWxkQ2FuQmVMb2NhbC9ub3RDb25zdGFudEluaXRpYWxpemVyL3NyYy9UZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9maWVsZENhbkJlTG9jYWwvbm90Q29uc3RhbnRJbml0aWFsaXplci9zcmMvVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJiYmI2ZDIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9maWVsZENhbkJlTG9jYWwvbm90Q29uc3RhbnRJbml0aWFsaXplci9zcmMvVGVzdC5qYXZhCkBAIC0wLDAgKzEsMTYgQEAKK2ltcG9ydCBqYXZhLnV0aWwuKjsKKworcHVibGljIGNsYXNzIE91dGVyIHsKKyAgcHJpdmF0ZSBmaW5hbCBpbnQgdmFsdWUgPSBjYWxjVmFsdWUoKTsKKworICBpbnQgbXlWYWx1ZTsKKyAgU2V0IHNldCA9IG5ldyBIYXNoU2V0KCk7CisKKyAgaW50IGNhbGNWYWx1ZSgpIHsKKyAgICByZXR1cm4gc2V0LnNpemUoKTsKKyAgfQorCisgIHZvaWQgaW5pdE15VmFsdWUoKSB7CisgICAgbXlWYWx1ZSA9IHZhbHVlOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZmllbGRDYW5CZUxvY2FsL3NpbXBsZS9leHBlY3RlZC54bWwgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9maWVsZENhbkJlTG9jYWwvc2ltcGxlL2V4cGVjdGVkLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lODc4M2QzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZmllbGRDYW5CZUxvY2FsL3NpbXBsZS9leHBlY3RlZC54bWwKQEAgLTAsMCArMSw4IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPHByb2JsZW1zPgorICA8cHJvYmxlbT4KKyAgICA8ZmlsZT5UZXN0LmphdmE8L2ZpbGU+CisgICAgPGxpbmU+MjwvbGluZT4KKyAgICA8ZGVzY3JpcHRpb24+RmllbGQgY2FuIGJlIGNvbnZlcnRlZCB0byBhIHZhcmlhYmxlPC9kZXNjcmlwdGlvbj4KKyAgPC9wcm9ibGVtPgorPC9wcm9ibGVtcz4KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2ZpZWxkQ2FuQmVMb2NhbC9zaW1wbGUvc3JjL1Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2ZpZWxkQ2FuQmVMb2NhbC9zaW1wbGUvc3JjL1Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MzNkZTk3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZmllbGRDYW5CZUxvY2FsL3NpbXBsZS9zcmMvVGVzdC5qYXZhCkBAIC0wLDAgKzEsOCBAQAorY2xhc3MgVGVzdCB7CisgICAgcHJpdmF0ZSBpbnQgZjsKKworICAgIHZvaWQgZm9vICgpIHsKKyAgICAgICAgZiA9IDA7CisgICAgICAgIGludCBrID0gZjsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9maWVsZENhbkJlTG9jYWwvc3RhdGVGaWVsZC9leHBlY3RlZC54bWwgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9maWVsZENhbkJlTG9jYWwvc3RhdGVGaWVsZC9leHBlY3RlZC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTgwYTg4OQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2ZpZWxkQ2FuQmVMb2NhbC9zdGF0ZUZpZWxkL2V4cGVjdGVkLnhtbApAQCAtMCwwICsxLDMgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8cHJvYmxlbXM+Cis8L3Byb2JsZW1zPgpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZmllbGRDYW5CZUxvY2FsL3N0YXRlRmllbGQvc3JjL1Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2ZpZWxkQ2FuQmVMb2NhbC9zdGF0ZUZpZWxkL3NyYy9UZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzk3NzRjMAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2ZpZWxkQ2FuQmVMb2NhbC9zdGF0ZUZpZWxkL3NyYy9UZXN0LmphdmEKQEAgLTAsMCArMSw4IEBACitpbXBvcnQgamF2YS51dGlsLio7CitwdWJsaWMgY2xhc3MgVGVzdCB7CisgIHByaXZhdGUgZmluYWwgTWFwPFN0cmluZywgU3RyaW5nPiBteU1vZHVsZVRvT3V0cHV0ID0gbmV3IEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+KCk7CisKKyAgdm9pZCBmb28oKSB7CisgICAgaWYgKG15TW9kdWxlVG9PdXRwdXQuY29udGFpbnNLZXkobnVsbCkpIG15TW9kdWxlVG9PdXRwdXQucHV0KCIiLCAiIik7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9maWVsZENhbkJlTG9jYWwvc3RhdGljQWNjZXNzL2V4cGVjdGVkLnhtbCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2ZpZWxkQ2FuQmVMb2NhbC9zdGF0aWNBY2Nlc3MvZXhwZWN0ZWQueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU4MGE4ODkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9maWVsZENhbkJlTG9jYWwvc3RhdGljQWNjZXNzL2V4cGVjdGVkLnhtbApAQCAtMCwwICsxLDMgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8cHJvYmxlbXM+Cis8L3Byb2JsZW1zPgpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZmllbGRDYW5CZUxvY2FsL3N0YXRpY0FjY2Vzcy9zcmMvVGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZmllbGRDYW5CZUxvY2FsL3N0YXRpY0FjY2Vzcy9zcmMvVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVkZmE4NDUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9maWVsZENhbkJlTG9jYWwvc3RhdGljQWNjZXNzL3NyYy9UZXN0LmphdmEKQEAgLTAsMCArMSw4IEBACitjbGFzcyBUZXN0IHsKK3ByaXZhdGUgc3RhdGljIGludCBjb3VudCA9IDA7CisKKwlwdWJsaWMgRmllbGRDYW5CZUxvY2FsKCkgeworCQljb3VudCA9IGNvdW50ICsgMTsKKwl9CisKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2ZpZWxkQ2FuQmVMb2NhbC9zdGF0aWNGaW5hbC9leHBlY3RlZC54bWwgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9maWVsZENhbkJlTG9jYWwvc3RhdGljRmluYWwvZXhwZWN0ZWQueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU4MGE4ODkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9maWVsZENhbkJlTG9jYWwvc3RhdGljRmluYWwvZXhwZWN0ZWQueG1sCkBAIC0wLDAgKzEsMyBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxwcm9ibGVtcz4KKzwvcHJvYmxlbXM+CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9maWVsZENhbkJlTG9jYWwvc3RhdGljRmluYWwvc3JjL1Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2ZpZWxkQ2FuQmVMb2NhbC9zdGF0aWNGaW5hbC9zcmMvVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFhMjRkYmMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9maWVsZENhbkJlTG9jYWwvc3RhdGljRmluYWwvc3JjL1Rlc3QuamF2YQpAQCAtMCwwICsxLDExIEBACitjbGFzcyBUZXN0IHsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgZiA9IDA7CisKKyAgICB2b2lkIGZvbyAoKSB7CisgICAgICAgIGludCBrID0gZjsKKyAgICB9CisKKyAgICBpbnQgYmFyICgpIHsKKyAgICAgICAgcmV0dXJuIGY7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZmllbGRDYW5CZUxvY2FsL3R3b01ldGhvZHMvZXhwZWN0ZWQueG1sIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZmllbGRDYW5CZUxvY2FsL3R3b01ldGhvZHMvZXhwZWN0ZWQueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU4MGE4ODkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9maWVsZENhbkJlTG9jYWwvdHdvTWV0aG9kcy9leHBlY3RlZC54bWwKQEAgLTAsMCArMSwzIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPHByb2JsZW1zPgorPC9wcm9ibGVtcz4KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2ZpZWxkQ2FuQmVMb2NhbC90d29NZXRob2RzL3NyYy9UZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9maWVsZENhbkJlTG9jYWwvdHdvTWV0aG9kcy9zcmMvVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk0ZGY0NGUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9maWVsZENhbkJlTG9jYWwvdHdvTWV0aG9kcy9zcmMvVGVzdC5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKK2NsYXNzIFRlc3QgeworICBwcml2YXRlIGludCBmOworCisgIHB1YmxpYyB2b2lkIGJhcigpIHsKKyAgICBmb28oKCkgLT4ge2YrKzt9KTsKKyAgfQorCisgIHByaXZhdGUgdm9pZCBmb28oUnVubmFibGUgcikgeworICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9nbG9iYWxDb250ZXh0L0Zvby5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZ2xvYmFsQ29udGV4dC9Gb28uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YTJiNDRkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vZ2xvYmFsQ29udGV4dC9Gb28uamF2YQpAQCAtMCwwICsxIEBACitwdWJsaWMgY2xhc3MgRm9vIHt9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9qYXZhRG9jSW5zcGVjdGlvbi9kb3VibGVNaXNzZWRUYWdzL2V4cGVjdGVkLnhtbCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2phdmFEb2NJbnNwZWN0aW9uL2RvdWJsZU1pc3NlZFRhZ3MvZXhwZWN0ZWQueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhjYmMyMTQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9qYXZhRG9jSW5zcGVjdGlvbi9kb3VibGVNaXNzZWRUYWdzL2V4cGVjdGVkLnhtbApAQCAtMCwwICsxLDE0IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPHByb2JsZW1zPgorICA8cHJvYmxlbT4KKyAgICA8ZmlsZT5Gb28uamF2YTwvZmlsZT4KKyAgICA8bGluZT42PC9saW5lPgorICAgIDxkZXNjcmlwdGlvbj5taXNzaW5nPC9kZXNjcmlwdGlvbj4KKyAgPC9wcm9ibGVtPgorICA8cHJvYmxlbT4KKyAgICA8ZmlsZT5Gb28uamF2YTwvZmlsZT4KKyAgICA8bGluZT43PC9saW5lPgorICAgIDxkZXNjcmlwdGlvbj5taXNzaW5nPC9kZXNjcmlwdGlvbj4KKyAgPC9wcm9ibGVtPgorPC9wcm9ibGVtcz4KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vamF2YURvY0luc3BlY3Rpb24vZG91YmxlTWlzc2VkVGFncy9zcmMvRm9vLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9qYXZhRG9jSW5zcGVjdGlvbi9kb3VibGVNaXNzZWRUYWdzL3NyYy9Gb28uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNjA2ZDc0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vamF2YURvY0luc3BlY3Rpb24vZG91YmxlTWlzc2VkVGFncy9zcmMvRm9vLmphdmEKQEAgLTAsMCArMSwxMCBAQAorLyoqCisgIEBhdXRob3IgbWUKKyovCitwdWJsaWMgYWJzdHJhY3QgY2xhc3MgRm9vIHsKKyAgLyoqCisgIEBwYXJhbSBpCisgIEBwYXJhbSBqCisgICovCisgIHB1YmxpYyBhYnN0cmFjdCB2b2lkIGZvbyhpbnQgaSwgaW50IGopOworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vamF2YURvY0luc3BlY3Rpb24vZHVwbGljYXRlRGVwcmVjYXRlZC9leHBlY3RlZC54bWwgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9qYXZhRG9jSW5zcGVjdGlvbi9kdXBsaWNhdGVEZXByZWNhdGVkL2V4cGVjdGVkLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NWM0ZmJmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vamF2YURvY0luc3BlY3Rpb24vZHVwbGljYXRlRGVwcmVjYXRlZC9leHBlY3RlZC54bWwKQEAgLTAsMCArMSw5IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPHByb2JsZW1zPgorICA8cHJvYmxlbT4KKyAgICA8ZmlsZT5Gb28uamF2YTwvZmlsZT4KKyAgICA8bGluZT40PC9saW5lPgorICAgIDxkZXNjcmlwdGlvbj5EdXBsaWNhdGUgQGRlcHJlY2F0ZWQgdGFnPC9kZXNjcmlwdGlvbj4KKyAgPC9wcm9ibGVtPgorPC9wcm9ibGVtcz4KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vamF2YURvY0luc3BlY3Rpb24vZHVwbGljYXRlRGVwcmVjYXRlZC9zcmMvRm9vLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9qYXZhRG9jSW5zcGVjdGlvbi9kdXBsaWNhdGVEZXByZWNhdGVkL3NyYy9Gb28uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZThiNGU2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vamF2YURvY0luc3BlY3Rpb24vZHVwbGljYXRlRGVwcmVjYXRlZC9zcmMvRm9vLmphdmEKQEAgLTAsMCArMSw3IEBACisvKioKKyAqIFRlc3QuCisgKiBAZGVwcmVjYXRlZCBZb3UgYmV0LgorICogQGRlcHJlY2F0ZWQgR290Y2hhLgorICovCitjbGFzcyBGb28geworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vamF2YURvY0luc3BlY3Rpb24vZHVwbGljYXRlUGFyYW0vZXhwZWN0ZWQueG1sIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vamF2YURvY0luc3BlY3Rpb24vZHVwbGljYXRlUGFyYW0vZXhwZWN0ZWQueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQyOTU5ZTcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9qYXZhRG9jSW5zcGVjdGlvbi9kdXBsaWNhdGVQYXJhbS9leHBlY3RlZC54bWwKQEAgLTAsMCArMSw5IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPHByb2JsZW1zPgorICA8cHJvYmxlbT4KKyAgICA8ZmlsZT5Gb28uamF2YTwvZmlsZT4KKyAgICA8bGluZT41PC9saW5lPgorICAgIDxkZXNjcmlwdGlvbj5EdXBsaWNhdGUgQHBhcmFtIHRhZyBmb3IgcGFyYW1ldGVyICdzJzwvZGVzY3JpcHRpb24+CisgIDwvcHJvYmxlbT4KKzwvcHJvYmxlbXM+CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2phdmFEb2NJbnNwZWN0aW9uL2R1cGxpY2F0ZVBhcmFtL3NyYy9Gb28uamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2phdmFEb2NJbnNwZWN0aW9uL2R1cGxpY2F0ZVBhcmFtL3NyYy9Gb28uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MGYwZmMyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vamF2YURvY0luc3BlY3Rpb24vZHVwbGljYXRlUGFyYW0vc3JjL0Zvby5qYXZhCkBAIC0wLDAgKzEsOSBAQAorY2xhc3MgVGVzdCB7CisgIC8qKgorICAgKiBUZXN0LgorICAgKiBAcGFyYW0gcyBteSBzdHJpbmcKKyAgICogQHBhcmFtIHMgYW5vdGhlciBzdHJpbmcKKyAgICovCisgIHZvaWQgdGVzdChTdHJpbmcgcykgeworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vamF2YURvY0luc3BlY3Rpb24vZHVwbGljYXRlUmV0dXJuL2V4cGVjdGVkLnhtbCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2phdmFEb2NJbnNwZWN0aW9uL2R1cGxpY2F0ZVJldHVybi9leHBlY3RlZC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTljMTFmNgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2phdmFEb2NJbnNwZWN0aW9uL2R1cGxpY2F0ZVJldHVybi9leHBlY3RlZC54bWwKQEAgLTAsMCArMSw4IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPHByb2JsZW1zPgorICA8cHJvYmxlbT4KKyAgICA8ZmlsZT5Gb28uamF2YTwvZmlsZT4KKyAgICA8bGluZT41PC9saW5lPgorICAgIDxkZXNjcmlwdGlvbj5EdXBsaWNhdGUgQHJldHVybiB0YWc8L2Rlc2NyaXB0aW9uPgorICA8L3Byb2JsZW0+Cis8L3Byb2JsZW1zPgpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vamF2YURvY0luc3BlY3Rpb24vZHVwbGljYXRlUmV0dXJuL3NyYy9Gb28uamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2phdmFEb2NJbnNwZWN0aW9uL2R1cGxpY2F0ZVJldHVybi9zcmMvRm9vLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmU4MTJhMAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2phdmFEb2NJbnNwZWN0aW9uL2R1cGxpY2F0ZVJldHVybi9zcmMvRm9vLmphdmEKQEAgLTAsMCArMSw5IEBACitjbGFzcyBUZXN0IHsKKyAgLyoqCisgICAqIFRlc3QuCisgICAqIEByZXR1cm4gbXkgc3RyaW5nCisgICAqIEByZXR1cm4gYW5vdGhlciBzdHJpbmcKKyAgICovCisgIFN0cmluZyB0ZXN0KCkgeworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vamF2YURvY0luc3BlY3Rpb24vZHVwbGljYXRlU2VyaWFsL2V4cGVjdGVkLnhtbCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2phdmFEb2NJbnNwZWN0aW9uL2R1cGxpY2F0ZVNlcmlhbC9leHBlY3RlZC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjM2ZmIxNQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2phdmFEb2NJbnNwZWN0aW9uL2R1cGxpY2F0ZVNlcmlhbC9leHBlY3RlZC54bWwKQEAgLTAsMCArMSw5IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPHByb2JsZW1zPgorICA8cHJvYmxlbT4KKyAgICA8ZmlsZT5Gb28uamF2YTwvZmlsZT4KKyAgICA8bGluZT41PC9saW5lPgorICAgIDxkZXNjcmlwdGlvbj5EdXBsaWNhdGUgQHNlcmlhbCB0YWc8L2Rlc2NyaXB0aW9uPgorICA8L3Byb2JsZW0+Cis8L3Byb2JsZW1zPgorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9qYXZhRG9jSW5zcGVjdGlvbi9kdXBsaWNhdGVTZXJpYWwvc3JjL0Zvby5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vamF2YURvY0luc3BlY3Rpb24vZHVwbGljYXRlU2VyaWFsL3NyYy9Gb28uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYmM1NGMzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vamF2YURvY0luc3BlY3Rpb24vZHVwbGljYXRlU2VyaWFsL3NyYy9Gb28uamF2YQpAQCAtMCwwICsxLDggQEAKK2NsYXNzIFRlc3QgeworICAvKioKKyAgICogVGVzdC4KKyAgICogQHNlcmlhbCBzb21ldGhpbmcKKyAgICogQHNlcmlhbCBzb21ldGhpbmcgZWxzZQorICAgKi8KKyAgIHByaXZhdGUgaW50IGE7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vamF2YURvY0luc3BlY3Rpb24vZHVwbGljYXRlVGhyb3dzL2V4cGVjdGVkLnhtbCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2phdmFEb2NJbnNwZWN0aW9uL2R1cGxpY2F0ZVRocm93cy9leHBlY3RlZC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTUyNWE2OAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2phdmFEb2NJbnNwZWN0aW9uL2R1cGxpY2F0ZVRocm93cy9leHBlY3RlZC54bWwKQEAgLTAsMCArMSw5IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPHByb2JsZW1zPgorICA8cHJvYmxlbT4KKyAgICA8ZmlsZT5Gb28uamF2YTwvZmlsZT4KKyAgICA8bGluZT41PC9saW5lPgorICAgIDxkZXNjcmlwdGlvbj5EdXBsaWNhdGUgQHRocm93cyB0YWcgZm9yIGV4Y2VwdGlvbiAnamF2YS5sYW5nLkV4Y2VwdGlvbic8L2Rlc2NyaXB0aW9uPgorICA8L3Byb2JsZW0+Cis8L3Byb2JsZW1zPgorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9qYXZhRG9jSW5zcGVjdGlvbi9kdXBsaWNhdGVUaHJvd3Mvc3JjL0Zvby5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vamF2YURvY0luc3BlY3Rpb24vZHVwbGljYXRlVGhyb3dzL3NyYy9Gb28uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hM2Y4ODE5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vamF2YURvY0luc3BlY3Rpb24vZHVwbGljYXRlVGhyb3dzL3NyYy9Gb28uamF2YQpAQCAtMCwwICsxLDkgQEAKK2NsYXNzIFRlc3QgeworICAvKioKKyAgICogVGVzdC4KKyAgICogQHRocm93cyBqYXZhLmxhbmcuRXhjZXB0aW9uIGluIGNhc2Ugb2YgcHJvYmxlbXMKKyAgICogQGV4Y2VwdGlvbiBqYXZhLmxhbmcuRXhjZXB0aW9uIGluIGNhc2Ugb2Ygb3RoZXIgcHJvYmxlbXMKKyAgICovCisgIHZvaWQgdGVzdCgpIHRocm93cyBqYXZhLmxhbmcuRXhjZXB0aW9uIHsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2phdmFEb2NJbnNwZWN0aW9uL2dlbmVyaWNzUGFyYW1zL2V4cGVjdGVkLnhtbCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2phdmFEb2NJbnNwZWN0aW9uL2dlbmVyaWNzUGFyYW1zL2V4cGVjdGVkLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43OWUxYTBmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vamF2YURvY0luc3BlY3Rpb24vZ2VuZXJpY3NQYXJhbXMvZXhwZWN0ZWQueG1sCkBAIC0wLDAgKzEsNCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxwcm9ibGVtcz4gIAorPC9wcm9ibGVtcz4KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vamF2YURvY0luc3BlY3Rpb24vZ2VuZXJpY3NQYXJhbXMvc3JjL0Zvby5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vamF2YURvY0luc3BlY3Rpb24vZ2VuZXJpY3NQYXJhbXMvc3JjL0Zvby5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU0ZTQwM2YKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9qYXZhRG9jSW5zcGVjdGlvbi9nZW5lcmljc1BhcmFtcy9zcmMvRm9vLmphdmEKQEAgLTAsMCArMSw4IEBACitwdWJsaWMgY2xhc3MgRm9vIHsKKyAgLyoqCisgICpkZXNjcmlwdGlvbgorICAqQHBhcmFtIGkgdGhpcyBpcyBhIHBhcmFtZXRlcgorICAqQHBhcmFtIDxUPiB0eXBlIG9mIG9iamVjdCB0byBkbyBzb21ldGhpbmcgd2l0aC4KKyAgKi8KKyAgcHVibGljIDxUPiB2b2lkIGZvbyhUIGkpe30KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2phdmFEb2NJbnNwZWN0aW9uL2lnbm9yZUR1cGxpY2F0ZVRocm93cy9leHBlY3RlZC54bWwgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9qYXZhRG9jSW5zcGVjdGlvbi9pZ25vcmVEdXBsaWNhdGVUaHJvd3MvZXhwZWN0ZWQueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ3MDRkNTgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9qYXZhRG9jSW5zcGVjdGlvbi9pZ25vcmVEdXBsaWNhdGVUaHJvd3MvZXhwZWN0ZWQueG1sCkBAIC0wLDAgKzEsNCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxwcm9ibGVtcz4KKzwvcHJvYmxlbXM+CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2phdmFEb2NJbnNwZWN0aW9uL2lnbm9yZUR1cGxpY2F0ZVRocm93cy9zcmMvVGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vamF2YURvY0luc3BlY3Rpb24vaWdub3JlRHVwbGljYXRlVGhyb3dzL3NyYy9UZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDJiYTU1OQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2phdmFEb2NJbnNwZWN0aW9uL2lnbm9yZUR1cGxpY2F0ZVRocm93cy9zcmMvVGVzdC5qYXZhCkBAIC0wLDAgKzEsOSBAQAorY2xhc3MgVGVzdCB7CisvKioKKyAqQHRocm93cyBBcnJheUluZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb24gaW4gc29tZSBjYXNlCisgKkB0aHJvd3MgQXJyYXlJbmRleE91dE9mQm91bmRzRXhjZXB0aW9uIGFuZCBpbiBzb21lIG90aGVyIGNhc2UKKyAqLworICB2b2lkIGZvbygpIHRocm93cyBBcnJheUluZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb24geworCisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9qYXZhRG9jSW5zcGVjdGlvbi9taXNvcmRlcmVkVGhyb3dzVGFnL2V4cGVjdGVkLnhtbCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2phdmFEb2NJbnNwZWN0aW9uL21pc29yZGVyZWRUaHJvd3NUYWcvZXhwZWN0ZWQueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc5ZTFhMGYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9qYXZhRG9jSW5zcGVjdGlvbi9taXNvcmRlcmVkVGhyb3dzVGFnL2V4cGVjdGVkLnhtbApAQCAtMCwwICsxLDQgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8cHJvYmxlbXM+ICAKKzwvcHJvYmxlbXM+CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2phdmFEb2NJbnNwZWN0aW9uL21pc29yZGVyZWRUaHJvd3NUYWcvc3JjL1Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2phdmFEb2NJbnNwZWN0aW9uL21pc29yZGVyZWRUaHJvd3NUYWcvc3JjL1Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MWEzNDdlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vamF2YURvY0luc3BlY3Rpb24vbWlzb3JkZXJlZFRocm93c1RhZy9zcmMvVGVzdC5qYXZhCkBAIC0wLDAgKzEsOSBAQAorcHVibGljIGNsYXNzIFRlc3QgeworICAgIC8qKgorICAgICAqIEB0aHJvd3MgamF2YS5pby5JT0V4Y2VwdGlvbiBleGNlcHRpb24gaW4gc29tZSBjYXNlCisgICAgICogQHRocm93cyBFeGNlcHRpb24gZXhjZXB0aW9uIGluIG90aGVyIGNhc2UKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBmb28oKSB0aHJvd3MgRXhjZXB0aW9uLCBqYXZhLmlvLklPRXhjZXB0aW9uIHsKKworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9qYXZhRG9jSW5zcGVjdGlvbi9taXNzZWRUYWdzL2V4cGVjdGVkLnhtbCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2phdmFEb2NJbnNwZWN0aW9uL21pc3NlZFRhZ3MvZXhwZWN0ZWQueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc5ZTFhMGYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9qYXZhRG9jSW5zcGVjdGlvbi9taXNzZWRUYWdzL2V4cGVjdGVkLnhtbApAQCAtMCwwICsxLDQgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8cHJvYmxlbXM+ICAKKzwvcHJvYmxlbXM+CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2phdmFEb2NJbnNwZWN0aW9uL21pc3NlZFRhZ3Mvc3JjL0Jhci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vamF2YURvY0luc3BlY3Rpb24vbWlzc2VkVGFncy9zcmMvQmFyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2VlYzA0NwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2phdmFEb2NJbnNwZWN0aW9uL21pc3NlZFRhZ3Mvc3JjL0Jhci5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKKy8qKgorICBAYXV0aG9yIG1lCisqLworcHVibGljIGNsYXNzIEJhciBleHRlbmRzIEZvbyB7CisgIC8qKgorICAqLworICBwdWJsaWMgdm9pZCBmb28oaW50IGkpIHsKKyAgICBpKys7CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2phdmFEb2NJbnNwZWN0aW9uL21pc3NlZFRhZ3Mvc3JjL0Zvby5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vamF2YURvY0luc3BlY3Rpb24vbWlzc2VkVGFncy9zcmMvRm9vLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGMyN2Y4ZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2phdmFEb2NJbnNwZWN0aW9uL21pc3NlZFRhZ3Mvc3JjL0Zvby5qYXZhCkBAIC0wLDAgKzEsOSBAQAorLyoqCisgIEBhdXRob3IgbWUKKyovCitwdWJsaWMgYWJzdHJhY3QgY2xhc3MgRm9vIHsKKyAgLyoqCisgIEBwYXJhbSBpIHRoaXMgaXMgYSBwYXJhbWV0ZXIKKyAgKi8KKyAgcHVibGljIGFic3RyYWN0IHZvaWQgZm9vKGludCBpKTsKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2phdmFEb2NJbnNwZWN0aW9uL21pc3NlZFRocm93c1RhZy9leHBlY3RlZC54bWwgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9qYXZhRG9jSW5zcGVjdGlvbi9taXNzZWRUaHJvd3NUYWcvZXhwZWN0ZWQueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdhMTM5NTkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9qYXZhRG9jSW5zcGVjdGlvbi9taXNzZWRUaHJvd3NUYWcvZXhwZWN0ZWQueG1sCkBAIC0wLDAgKzEsMjAgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8cHJvYmxlbXM+CisgIDxwcm9ibGVtPgorICA8ZmlsZT5UZXN0LmphdmE8L2ZpbGU+CisgIDxsaW5lPjU8L2xpbmU+CisgIDx0ZXh0X3JhbmdlIHN0YXJ0PSI3OSIgZW5kPSI4MiIgLz4KKyAgPG1ldGhvZD4KKyAgICA8bmFtZT52b2lkIGZvbygpPC9uYW1lPgorICAgIDxkaXNwbGF5X25hbWU+Zm9vKCk8L2Rpc3BsYXlfbmFtZT4KKyAgICA8cGFja2FnZT4mbHQ7ZGVmYXVsdCZndDs8L3BhY2thZ2U+CisgICAgPGNsYXNzPgorICAgICAgPG5hbWU+VGVzdDwvbmFtZT4KKyAgICAgIDxkaXNwbGF5X25hbWU+VGVzdDwvZGlzcGxheV9uYW1lPgorICAgIDwvY2xhc3M+CisgIDwvbWV0aG9kPgorICA8cHJvYmxlbV9jbGFzcyBzZXZlcml0eT0iV0FSTklORyIgYXR0cmlidXRlX2tleT0iV0FSTklOR19BVFRSSUJVVEVTIj5EZWNsYXJhdGlvbiBoYXMgamF2YWRvYyBwcm9ibGVtczwvcHJvYmxlbV9jbGFzcz4KKyAgPGRlc2NyaXB0aW9uPlJlcXVpcmVkIHRhZyAmbHQ7Y29kZSZndDtAdGhyb3dzJmx0Oy9jb2RlJmd0OyBqYXZhLmlvLklPRXhjZXB0aW9uIGlzIG1pc3Npbmc8L2Rlc2NyaXB0aW9uPgorPC9wcm9ibGVtPgorPC9wcm9ibGVtcz4KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vamF2YURvY0luc3BlY3Rpb24vbWlzc2VkVGhyb3dzVGFnL3NyYy9UZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9qYXZhRG9jSW5zcGVjdGlvbi9taXNzZWRUaHJvd3NUYWcvc3JjL1Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNDFhOWQxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vamF2YURvY0luc3BlY3Rpb24vbWlzc2VkVGhyb3dzVGFnL3NyYy9UZXN0LmphdmEKQEAgLTAsMCArMSw4IEBACitjbGFzcyBUZXN0IHsKKy8qKgorICpAdGhyb3dzIGphdmEubGFuZy5BcnJheUluZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb24gaW4gc29tZSBjYXNlCisgKi8KKyAgdm9pZCBmb28oKSB0aHJvd3MgamF2YS5pby5JT0V4Y2VwdGlvbiwgamF2YS5sYW5nLkFycmF5SW5kZXhPdXRPZkJvdW5kc0V4Y2VwdGlvbiB7CisKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2xvY2FsQ2FuQmVGaW5hbC9TQ1IxMTc1Ny9leHBlY3RlZC54bWwgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9sb2NhbENhbkJlRmluYWwvU0NSMTE3NTcvZXhwZWN0ZWQueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ3MDRkNTgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9sb2NhbENhbkJlRmluYWwvU0NSMTE3NTcvZXhwZWN0ZWQueG1sCkBAIC0wLDAgKzEsNCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxwcm9ibGVtcz4KKzwvcHJvYmxlbXM+CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2xvY2FsQ2FuQmVGaW5hbC9TQ1IxMTc1Ny9zcmMvVGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vbG9jYWxDYW5CZUZpbmFsL1NDUjExNzU3L3NyYy9UZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTg5MTcyMQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2xvY2FsQ2FuQmVGaW5hbC9TQ1IxMTc1Ny9zcmMvVGVzdC5qYXZhCkBAIC0wLDAgKzEsMjQgQEAKK3B1YmxpYyBjbGFzcyBUZXN0IHsKKyAgcHVibGljIGludCBmaWIoaW50IG4pIHsKKyAgICBzd2l0Y2ggKG4pIHsKKyAgICBjYXNlIDA6CisgICAgICByZXR1cm4gMDsKKyAgICAvLyB5b3UgY2FuIGNvbW1lbnQgb3V0IHRoZSBuZXh0IHRocmVlIGxpbmVzIC0tIHNhbWUgdGhpbmcKKyAgICBjYXNlIDE6CisgICAgY2FzZSAyOgorICAgICAgcmV0dXJuIDE7CisgICAgZGVmYXVsdDoKKyAgICAgIGludCBhOworICAgICAgaW50IGIgPSAxOworICAgICAgaW50IGMgPSAyOworICAgICAgbiAtPSAzOworICAgICAgd2hpbGUgKG4tLSA+IDApIHsKKyAgICAgICAgYSA9IGI7CisgICAgICAgIGIgPSBjOworICAgICAgICBjID0gYSArIGI7CisgICAgICB9CisgICAgICByZXR1cm4gYzsKKyAgICB9CisgIH0KK30KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vbG9jYWxDYW5CZUZpbmFsL1NDUjY3NDRfMS9leHBlY3RlZC54bWwgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9sb2NhbENhbkJlRmluYWwvU0NSNjc0NF8xL2V4cGVjdGVkLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNzA0ZDU4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vbG9jYWxDYW5CZUZpbmFsL1NDUjY3NDRfMS9leHBlY3RlZC54bWwKQEAgLTAsMCArMSw0IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPHByb2JsZW1zPgorPC9wcm9ibGVtcz4KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vbG9jYWxDYW5CZUZpbmFsL1NDUjY3NDRfMS9zcmMvZm9vL1Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2xvY2FsQ2FuQmVGaW5hbC9TQ1I2NzQ0XzEvc3JjL2Zvby9UZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWVlNDQyMgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2xvY2FsQ2FuQmVGaW5hbC9TQ1I2NzQ0XzEvc3JjL2Zvby9UZXN0LmphdmEKQEAgLTAsMCArMSw2IEBACitwYWNrYWdlIGZvbzsKKworcHVibGljIGNsYXNzIFRlc3QgeworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKGZpbmFsIFN0cmluZ1tdIGFyZ3MpIHsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vbG9jYWxDYW5CZUZpbmFsL1NDUjY3NDRfMi9leHBlY3RlZC54bWwgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9sb2NhbENhbkJlRmluYWwvU0NSNjc0NF8yL2V4cGVjdGVkLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jODRiNjk5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vbG9jYWxDYW5CZUZpbmFsL1NDUjY3NDRfMi9leHBlY3RlZC54bWwKQEAgLTAsMCArMSw5IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPHByb2JsZW1zPgorICA8cHJvYmxlbT4KKyAgICA8ZmlsZT5UZXN0LmphdmE8L2ZpbGU+CisgICAgPGxpbmU+NTwvbGluZT4KKyAgICA8ZGVzY3JpcHRpb24+ZmluYWw8L2Rlc2NyaXB0aW9uPgorICA8L3Byb2JsZW0+Cis8L3Byb2JsZW1zPgorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9sb2NhbENhbkJlRmluYWwvU0NSNjc0NF8yL3NyYy9mb28vVGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vbG9jYWxDYW5CZUZpbmFsL1NDUjY3NDRfMi9zcmMvZm9vL1Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNmZmMmYzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vbG9jYWxDYW5CZUZpbmFsL1NDUjY3NDRfMi9zcmMvZm9vL1Rlc3QuamF2YQpAQCAtMCwwICsxLDcgQEAKK3BhY2thZ2UgZm9vOworCitwdWJsaWMgY2xhc3MgVGVzdCB7CisgICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oZmluYWwgU3RyaW5nW10gYXJncykgeworCWludCBmb28gPSAxMjsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vbG9jYWxDYW5CZUZpbmFsL1NDUjY3NDRfMy9leHBlY3RlZC54bWwgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9sb2NhbENhbkJlRmluYWwvU0NSNjc0NF8zL2V4cGVjdGVkLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNzA0ZDU4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vbG9jYWxDYW5CZUZpbmFsL1NDUjY3NDRfMy9leHBlY3RlZC54bWwKQEAgLTAsMCArMSw0IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPHByb2JsZW1zPgorPC9wcm9ibGVtcz4KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vbG9jYWxDYW5CZUZpbmFsL1NDUjY3NDRfMy9zcmMvZm9vL1Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2xvY2FsQ2FuQmVGaW5hbC9TQ1I2NzQ0XzMvc3JjL2Zvby9UZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODQwMDg5NwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2xvY2FsQ2FuQmVGaW5hbC9TQ1I2NzQ0XzMvc3JjL2Zvby9UZXN0LmphdmEKQEAgLTAsMCArMSw3IEBACitwYWNrYWdlIGZvbzsKKworcHVibGljIGNsYXNzIFRlc3QgeworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKGZpbmFsIFN0cmluZ1tdIGFyZ3MpIHsKKwlmaW5hbCBpbnQgZm9vID0gMTI7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2xvY2FsQ2FuQmVGaW5hbC9TQ1I2NzQ0XzQvZXhwZWN0ZWQueG1sIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vbG9jYWxDYW5CZUZpbmFsL1NDUjY3NDRfNC9leHBlY3RlZC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDcwNGQ1OAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2xvY2FsQ2FuQmVGaW5hbC9TQ1I2NzQ0XzQvZXhwZWN0ZWQueG1sCkBAIC0wLDAgKzEsNCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxwcm9ibGVtcz4KKzwvcHJvYmxlbXM+CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2xvY2FsQ2FuQmVGaW5hbC9TQ1I2NzQ0XzQvc3JjL2Zvby9UZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9sb2NhbENhbkJlRmluYWwvU0NSNjc0NF80L3NyYy9mb28vVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM4ZDdjMzcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9sb2NhbENhbkJlRmluYWwvU0NSNjc0NF80L3NyYy9mb28vVGVzdC5qYXZhCkBAIC0wLDAgKzEsOCBAQAorcGFja2FnZSBmb287CisKK3B1YmxpYyBjbGFzcyBUZXN0IHsKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihmaW5hbCBTdHJpbmdbXSBhcmdzKSB7CisJZmluYWwgaW50IGZvbyA9IDEyOworCWZpbmFsIGludCBiYXIgPSAyNDsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vbG9jYWxDYW5CZUZpbmFsL1NDUjY3NDRfNS9leHBlY3RlZC54bWwgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9sb2NhbENhbkJlRmluYWwvU0NSNjc0NF81L2V4cGVjdGVkLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNzA0ZDU4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vbG9jYWxDYW5CZUZpbmFsL1NDUjY3NDRfNS9leHBlY3RlZC54bWwKQEAgLTAsMCArMSw0IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPHByb2JsZW1zPgorPC9wcm9ibGVtcz4KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vbG9jYWxDYW5CZUZpbmFsL1NDUjY3NDRfNS9zcmMvZm9vL1Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2xvY2FsQ2FuQmVGaW5hbC9TQ1I2NzQ0XzUvc3JjL2Zvby9UZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODBmYzM0YgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2xvY2FsQ2FuQmVGaW5hbC9TQ1I2NzQ0XzUvc3JjL2Zvby9UZXN0LmphdmEKQEAgLTAsMCArMSw5IEBACitwYWNrYWdlIGZvbzsKKworcHVibGljIGNsYXNzIFRlc3QgeworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKGZpbmFsIFN0cmluZ1tdIGFyZ3MpIHsKKwlmaW5hbCBpbnQgZm9vID0gMTI7CisJZmluYWwgaW50IGJhciA9IDI0OworCWZpbmFsIGludCBnYXpvbmsgPSA0ODsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vbG9jYWxDYW5CZUZpbmFsL1NDUjY3NDRfNi9leHBlY3RlZC54bWwgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9sb2NhbENhbkJlRmluYWwvU0NSNjc0NF82L2V4cGVjdGVkLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNzA0ZDU4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vbG9jYWxDYW5CZUZpbmFsL1NDUjY3NDRfNi9leHBlY3RlZC54bWwKQEAgLTAsMCArMSw0IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPHByb2JsZW1zPgorPC9wcm9ibGVtcz4KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vbG9jYWxDYW5CZUZpbmFsL1NDUjY3NDRfNi9zcmMvZm9vL1Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2xvY2FsQ2FuQmVGaW5hbC9TQ1I2NzQ0XzYvc3JjL2Zvby9UZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTBiZGEzYgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2xvY2FsQ2FuQmVGaW5hbC9TQ1I2NzQ0XzYvc3JjL2Zvby9UZXN0LmphdmEKQEAgLTAsMCArMSwxMCBAQAorcGFja2FnZSBmb287CisKK3B1YmxpYyBjbGFzcyBUZXN0IHsKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihmaW5hbCBTdHJpbmdbXSBhcmdzKSB7CisJZmluYWwgaW50IGZvbyA9IDEyOworCWZpbmFsIGludCBiYXIgPSAyNDsKKwlmaW5hbCBpbnQgZ2F6b25rID0gNDg7CisJZmluYWwgaW50IGJhbmFuYSA9IDk2OworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9sb2NhbENhbkJlRmluYWwvU0NSNzQyOC9leHBlY3RlZC54bWwgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9sb2NhbENhbkJlRmluYWwvU0NSNzQyOC9leHBlY3RlZC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjEzNzgzMwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2xvY2FsQ2FuQmVGaW5hbC9TQ1I3NDI4L2V4cGVjdGVkLnhtbApAQCAtMCwwICsxLDI0IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPHByb2JsZW1zPgorICA8cHJvYmxlbT4KKyAgICA8ZmlsZT5KdW5rLmphdmE8L2ZpbGU+CisgICAgPGxpbmU+NTwvbGluZT4KKyAgICA8ZGVzY3JpcHRpb24+YmFyIGZpbmFsPC9kZXNjcmlwdGlvbj4KKyAgPC9wcm9ibGVtPgorICA8cHJvYmxlbT4KKyAgICA8ZmlsZT5KdW5rLmphdmE8L2ZpbGU+CisgICAgPGxpbmU+ODwvbGluZT4KKyAgICA8ZGVzY3JpcHRpb24+aSBmaW5hbDwvZGVzY3JpcHRpb24+CisgIDwvcHJvYmxlbT4KKyAgPHByb2JsZW0+CisgICAgPGZpbGU+SnVuay5qYXZhPC9maWxlPgorICAgIDxsaW5lPjk8L2xpbmU+CisgICAgPGRlc2NyaXB0aW9uPmZvbyBmaW5hbDwvZGVzY3JpcHRpb24+CisgIDwvcHJvYmxlbT4KKyAgPHByb2JsZW0+CisgICAgPGZpbGU+SnVuay5qYXZhPC9maWxlPgorICAgIDxsaW5lPjE1PC9saW5lPgorICAgIDxkZXNjcmlwdGlvbj5qIGZpbmFsPC9kZXNjcmlwdGlvbj4KKyAgPC9wcm9ibGVtPgorPC9wcm9ibGVtcz4KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vbG9jYWxDYW5CZUZpbmFsL1NDUjc0Mjgvc3JjL0p1bmsuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2xvY2FsQ2FuQmVGaW5hbC9TQ1I3NDI4L3NyYy9KdW5rLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmMyNmNjNAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2xvY2FsQ2FuQmVGaW5hbC9TQ1I3NDI4L3NyYy9KdW5rLmphdmEKQEAgLTAsMCArMSwyMCBAQAorcHVibGljIGZpbmFsIGNsYXNzIEp1bmsKKyAgIHsKKyAgIHB1YmxpYyB2b2lkIHNpbGx5TWV0aG9kKCkKKyAgICAgIHsKKyAgICAgIFN0cmluZyBiYXIgPSAiYmFyIjsKKyAgICAgIHRyeQorICAgICAgICAgeworICAgICAgICAgaW50IGkgPSAxOworICAgICAgICAgU3RyaW5nIGZvbyA9ICJmb28iOworICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJbIiArIGJhciArICJ8IiArIGkgKyAifCIgKyBmb28gKyAiXSIpOworICAgICAgICAgLy90aHJvdyBuZXcgRXhjZXB0aW9uKCk7CisgICAgICAgICB9CisgICAgICBjYXRjaCAoRXhjZXB0aW9uIGUpCisgICAgICAgICB7CisgICAgICAgICBpbnQgaiA9IDI7CisgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oImogPSBbIiArIGogKyAiXSIpOworICAgICAgICAgfQorICAgICAgfQorICAgfQorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9sb2NhbENhbkJlRmluYWwvU0NSNzQyOF8xL2V4cGVjdGVkLnhtbCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2xvY2FsQ2FuQmVGaW5hbC9TQ1I3NDI4XzEvZXhwZWN0ZWQueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYxMzc4MzMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9sb2NhbENhbkJlRmluYWwvU0NSNzQyOF8xL2V4cGVjdGVkLnhtbApAQCAtMCwwICsxLDI0IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPHByb2JsZW1zPgorICA8cHJvYmxlbT4KKyAgICA8ZmlsZT5KdW5rLmphdmE8L2ZpbGU+CisgICAgPGxpbmU+NTwvbGluZT4KKyAgICA8ZGVzY3JpcHRpb24+YmFyIGZpbmFsPC9kZXNjcmlwdGlvbj4KKyAgPC9wcm9ibGVtPgorICA8cHJvYmxlbT4KKyAgICA8ZmlsZT5KdW5rLmphdmE8L2ZpbGU+CisgICAgPGxpbmU+ODwvbGluZT4KKyAgICA8ZGVzY3JpcHRpb24+aSBmaW5hbDwvZGVzY3JpcHRpb24+CisgIDwvcHJvYmxlbT4KKyAgPHByb2JsZW0+CisgICAgPGZpbGU+SnVuay5qYXZhPC9maWxlPgorICAgIDxsaW5lPjk8L2xpbmU+CisgICAgPGRlc2NyaXB0aW9uPmZvbyBmaW5hbDwvZGVzY3JpcHRpb24+CisgIDwvcHJvYmxlbT4KKyAgPHByb2JsZW0+CisgICAgPGZpbGU+SnVuay5qYXZhPC9maWxlPgorICAgIDxsaW5lPjE1PC9saW5lPgorICAgIDxkZXNjcmlwdGlvbj5qIGZpbmFsPC9kZXNjcmlwdGlvbj4KKyAgPC9wcm9ibGVtPgorPC9wcm9ibGVtcz4KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vbG9jYWxDYW5CZUZpbmFsL1NDUjc0MjhfMS9zcmMvSnVuay5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vbG9jYWxDYW5CZUZpbmFsL1NDUjc0MjhfMS9zcmMvSnVuay5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI4YjIwMWMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9sb2NhbENhbkJlRmluYWwvU0NSNzQyOF8xL3NyYy9KdW5rLmphdmEKQEAgLTAsMCArMSwyNCBAQAorcHVibGljIGZpbmFsIGNsYXNzIEp1bmsKKyAgIHsKKyAgIHB1YmxpYyB2b2lkIHNpbGx5TWV0aG9kKCkKKyAgICAgIHsKKyAgICAgIFN0cmluZyBiYXIgPSAiYmFyIjsKKyAgICAgIHRyeQorICAgICAgICAgeworICAgICAgICAgaW50IGkgPSAxOworICAgICAgICAgU3RyaW5nIGZvbyA9ICJmb28iOworICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJbIiArIGJhciArICJ8IiArIGkgKyAifCIgKyBmb28gKyAiXSIpOworICAgICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbigpOworICAgICAgICAgfQorICAgICAgY2F0Y2ggKEV4Y2VwdGlvbiBlKQorICAgICAgICAgeworICAgICAgICAgaW50IGogPSAyOworICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJqID0gWyIgKyBqICsgIl0iKTsKKyAgICAgICAgIH0KKyAgICAgIGZpbmFsbHkKKyAgICAgICAgIHsKKyAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiSW4gZmluYWxseSIpOworICAgICAgICAgfQorICAgICAgfQorICAgfQorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9sb2NhbENhbkJlRmluYWwvU0NSNzYwMS9leHBlY3RlZC54bWwgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9sb2NhbENhbkJlRmluYWwvU0NSNzYwMS9leHBlY3RlZC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjNiODYyMgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2xvY2FsQ2FuQmVGaW5hbC9TQ1I3NjAxL2V4cGVjdGVkLnhtbApAQCAtMCwwICsxLDkgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8cHJvYmxlbXM+CisgIDxwcm9ibGVtPgorICAgIDxmaWxlPlRlc3RGaW5hbDIuamF2YTwvZmlsZT4KKyAgICA8bGluZT40PC9saW5lPgorICAgIDxkZXNjcmlwdGlvbj5pIGZpbmFsPC9kZXNjcmlwdGlvbj4KKyAgPC9wcm9ibGVtPgorPC9wcm9ibGVtcz4KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vbG9jYWxDYW5CZUZpbmFsL1NDUjc2MDEvc3JjL1Rlc3RGaW5hbDIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2xvY2FsQ2FuQmVGaW5hbC9TQ1I3NjAxL3NyYy9UZXN0RmluYWwyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDdlMWQwNwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2xvY2FsQ2FuQmVGaW5hbC9TQ1I3NjAxL3NyYy9UZXN0RmluYWwyLmphdmEKQEAgLTAsMCArMSw4IEBACitwdWJsaWMgY2xhc3MgVGVzdEZpbmFsMiB7CisgICAgc3RhdGljIHZvaWQgZm9vKGZpbmFsIGJvb2xlYW4gYikgeworCWlmIChiKSB7CisJICAgIGludCBpID0gMTI7CisJICAgIFN5c3RlbS5vdXQucHJpbnRsbigiaSA9ICIgKyBpKTsKKwl9CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vbG9jYWxDYW5CZUZpbmFsL2ZvcmVhY2gvZXhwZWN0ZWQueG1sIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vbG9jYWxDYW5CZUZpbmFsL2ZvcmVhY2gvZXhwZWN0ZWQueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNiZjczM2MKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9sb2NhbENhbkJlRmluYWwvZm9yZWFjaC9leHBlY3RlZC54bWwKQEAgLTAsMCArMSw5IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPHByb2JsZW1zPgorICA8cHJvYmxlbT4KKyAgICA8ZmlsZT5UZXN0RmluYWwyLmphdmE8L2ZpbGU+CisgICAgPGxpbmU+MzwvbGluZT4KKyAgICA8ZGVzY3JpcHRpb24+YnggZmluYWw8L2Rlc2NyaXB0aW9uPgorICA8L3Byb2JsZW0+Cis8L3Byb2JsZW1zPgorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9sb2NhbENhbkJlRmluYWwvZm9yZWFjaC9zcmMvVGVzdEZpbmFsMi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vbG9jYWxDYW5CZUZpbmFsL2ZvcmVhY2gvc3JjL1Rlc3RGaW5hbDIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNzAwMjM2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vbG9jYWxDYW5CZUZpbmFsL2ZvcmVhY2gvc3JjL1Rlc3RGaW5hbDIuamF2YQpAQCAtMCwwICsxLDEwIEBACitwdWJsaWMgY2xhc3MgVGVzdEZpbmFsMiB7CisgICAgc3RhdGljIHZvaWQgZm9vKGZpbmFsIGJvb2xlYW5bXSBiKSB7CisgICAgICAgIGZvcihib29sZWFuIGJ4IDogYikgeworICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJieCA9ICIgKyBieCk7CisgICAgICAgIH0KKyAgICAgICAgZm9yKGJvb2xlYW4gYnkgOiBiKSB7CisgICAgICAgICAgICBieSA9IGZhbHNlOworICAgICAgICB9CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vbG9jYWxDYW5CZUZpbmFsL2lmL2V4cGVjdGVkLnhtbCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2xvY2FsQ2FuQmVGaW5hbC9pZi9leHBlY3RlZC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTE0ZGZkNAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2xvY2FsQ2FuQmVGaW5hbC9pZi9leHBlY3RlZC54bWwKQEAgLTAsMCArMSw5IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPHByb2JsZW1zPgorICA8cHJvYmxlbT4KKyAgICA8ZmlsZT5UZXN0LmphdmE8L2ZpbGU+CisgICAgPGxpbmU+NDwvbGluZT4KKyAgICA8ZGVzY3JpcHRpb24+ZmluYWw8L2Rlc2NyaXB0aW9uPgorICA8L3Byb2JsZW0+Cis8L3Byb2JsZW1zPgorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9sb2NhbENhbkJlRmluYWwvaWYvc3JjL1Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2xvY2FsQ2FuQmVGaW5hbC9pZi9zcmMvVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUzMjlkNjMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9sb2NhbENhbkJlRmluYWwvaWYvc3JjL1Rlc3QuamF2YQpAQCAtMCwwICsxLDExIEBACitwdWJsaWMgY2xhc3MgVGVzdHsKKworICBwdWJsaWMgdm9pZCB0KCkgeworICAgIE9iamVjdCB2OworICAgIGlmICh0cnVlKSB7CisgICAgICB2ID0gbmV3IE9iamVjdCgpOyAKKyAgICB9IGVsc2UgeworICAgICAgdiA9IG5ldyBPYmplY3QoKTsKKyAgICB9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9sb2NhbENhbkJlRmluYWwvaW5jb21wbGV0ZUFzc2lnbm1lbnQvZXhwZWN0ZWQueG1sIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vbG9jYWxDYW5CZUZpbmFsL2luY29tcGxldGVBc3NpZ25tZW50L2V4cGVjdGVkLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYzhhOGVmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vbG9jYWxDYW5CZUZpbmFsL2luY29tcGxldGVBc3NpZ25tZW50L2V4cGVjdGVkLnhtbApAQCAtMCwwICsxLDkgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8cHJvYmxlbXM+CisgIDxwcm9ibGVtPgorICAgIDxmaWxlPlRlc3QuamF2YTwvZmlsZT4KKyAgICA8bGluZT41PC9saW5lPgorICAgIDxkZXNjcmlwdGlvbj5vIGZpbmFsPC9kZXNjcmlwdGlvbj4KKyAgPC9wcm9ibGVtPgorPC9wcm9ibGVtcz4KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vbG9jYWxDYW5CZUZpbmFsL2luY29tcGxldGVBc3NpZ25tZW50L3NyYy9UZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9sb2NhbENhbkJlRmluYWwvaW5jb21wbGV0ZUFzc2lnbm1lbnQvc3JjL1Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYzRhYjkxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vbG9jYWxDYW5CZUZpbmFsL2luY29tcGxldGVBc3NpZ25tZW50L3NyYy9UZXN0LmphdmEKQEAgLTAsMCArMSwxMyBAQAorcHVibGljIGNsYXNzIFRlc3R7CisKKyAgcHVibGljIHZvaWQgdCgpIHsKKyAgICBPYmplY3QgdjsKKyAgICBPYmplY3QgbzsKKyAgICBpZiAodHJ1ZSkgeworICAgICAgdiA9IG5ldyBPYmplY3QoKTsgCisgICAgICBvID0gbmV3IE9iamVjdCgpOworICAgIH0gZWxzZSB7CisgICAgfQorICAgIFN5c3RlbS5vdXQucHJpbnRsbih2KTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2xvY2FsQ2FuQmVGaW5hbC9tdWx0aVdyaXRlTm9SZWFkL2V4cGVjdGVkLnhtbCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2xvY2FsQ2FuQmVGaW5hbC9tdWx0aVdyaXRlTm9SZWFkL2V4cGVjdGVkLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45YWM4NzlkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vbG9jYWxDYW5CZUZpbmFsL211bHRpV3JpdGVOb1JlYWQvZXhwZWN0ZWQueG1sCkBAIC0wLDAgKzEsMyBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxwcm9ibGVtcyAvPgorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9sb2NhbENhbkJlRmluYWwvbXVsdGlXcml0ZU5vUmVhZC9zcmMvVGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vbG9jYWxDYW5CZUZpbmFsL211bHRpV3JpdGVOb1JlYWQvc3JjL1Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YTA4NDkwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vbG9jYWxDYW5CZUZpbmFsL211bHRpV3JpdGVOb1JlYWQvc3JjL1Rlc3QuamF2YQpAQCAtMCwwICsxLDkgQEAKK3B1YmxpYyBjbGFzcyBUZXN0eworCisgIHB1YmxpYyB2b2lkIHQoKSB7CisgICAgT2JqZWN0IHY7CisgICAgZm9yIChpbnQgaSA9IDA7aTwxMDtpKyspIHsKKyAgICAgIHYgPSBuZXcgT2JqZWN0KCk7CisgICAgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vbG9jYWxDYW5CZUZpbmFsL3BhcmFtZXRlcnMvZXhwZWN0ZWQueG1sIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vbG9jYWxDYW5CZUZpbmFsL3BhcmFtZXRlcnMvZXhwZWN0ZWQueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYxZDNhMjkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9sb2NhbENhbkJlRmluYWwvcGFyYW1ldGVycy9leHBlY3RlZC54bWwKQEAgLTAsMCArMSw5IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPHByb2JsZW1zPgorICA8cHJvYmxlbT4KKyAgICA8ZmlsZT5UZXN0LmphdmE8L2ZpbGU+CisgICAgPGxpbmU+MzwvbGluZT4KKyAgICA8ZGVzY3JpcHRpb24+YXJncyBmaW5hbDwvZGVzY3JpcHRpb24+CisgIDwvcHJvYmxlbT4KKzwvcHJvYmxlbXM+CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL2xvY2FsQ2FuQmVGaW5hbC9wYXJhbWV0ZXJzL3NyYy9UZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9sb2NhbENhbkJlRmluYWwvcGFyYW1ldGVycy9zcmMvVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMxMDRkM2YKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9sb2NhbENhbkJlRmluYWwvcGFyYW1ldGVycy9zcmMvVGVzdC5qYXZhCkBAIC0wLDAgKzEsMTkgQEAKK3B1YmxpYyBjbGFzcyBUZXN0Cit7CisgICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgeworICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihhcmdzWzBdKTsKKyAgICB9CisKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgZm9vKFN0cmluZyBjYW5ub3RCZUZpbmFsKSB7CisgICAgICAgY2Fubm90QmVGaW5hbCA9ICIiOworICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihjYW5ub3RCZUZpbmFsKTsKKyAgICB9CisKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgYmFyKGZpbmFsIFN0cmluZyBhbHJlYWR5RmluYWwpIHsKKyAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oYWxyZWFkeUZpbmFsKTsKKyAgICB9CisKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgYmFyMShmaW5hbCBTdHJpbmcgYWxyZWFkeUZpbmFsKSB7CisgICAgfQorfQorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9tYWdpYy9zaW1wbGUvZXhwZWN0ZWQueG1sIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vbWFnaWMvc2ltcGxlL2V4cGVjdGVkLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMjQ3YmU5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vbWFnaWMvc2ltcGxlL2V4cGVjdGVkLnhtbApAQCAtMCwwICsxLDQ0OSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxwcm9ibGVtcz4KKyAgPCEtLTxwcm9ibGVtPi0tPgorICAgIDwhLS08ZmlsZT5YLmphdmE8L2ZpbGU+LS0+CisgICAgPCEtLTxsaW5lPjU8L2xpbmU+LS0+CisgICAgPCEtLTxwcm9ibGVtX2NsYXNzPkR1cGxpY2F0ZSB0aHJvd3M8L3Byb2JsZW1fY2xhc3M+LS0+CisgICAgPCEtLTxkZXNjcmlwdGlvbj5EdXBsaWNhdGUgdGhyb3dzPC9kZXNjcmlwdGlvbj4tLT4KKyAgPCEtLTwvcHJvYmxlbT4tLT4KKworICA8cHJvYmxlbT4KKyAgICA8ZmlsZT5YLmphdmE8L2ZpbGU+CisgICAgPGxpbmU+Mjk8L2xpbmU+CisgICAgCisgICAgCisgICAgCisgICAgPHByb2JsZW1fY2xhc3Mgc2V2ZXJpdHk9IldBUk5JTkciIGF0dHJpYnV0ZV9rZXk9IldBUk5JTkdfQVRUUklCVVRFUyI+bWFnaWMgY29uc3RhbnQ8L3Byb2JsZW1fY2xhc3M+CisgICAgPGRlc2NyaXB0aW9uPk11c3QgYmUgb25lIG9mOiBDb25zdC5YLCBDb25zdC5ZLCBDb25zdC5aPC9kZXNjcmlwdGlvbj4KKyAgPC9wcm9ibGVtPgorICAKKyAgCisgIAorICA8cHJvYmxlbT4KKyAgICA8ZmlsZT5YLmphdmE8L2ZpbGU+CisgICAgPGxpbmU+MzA8L2xpbmU+CisgICAgCisgICAgCisgICAgCisgICAgPHByb2JsZW1fY2xhc3Mgc2V2ZXJpdHk9IldBUk5JTkciIGF0dHJpYnV0ZV9rZXk9IldBUk5JTkdfQVRUUklCVVRFUyI+bWFnaWMgY29uc3RhbnQ8L3Byb2JsZW1fY2xhc3M+CisgICAgPGRlc2NyaXB0aW9uPk11c3QgYmUgb25lIG9mOiBDb25zdC5YLCBDb25zdC5ZLCBDb25zdC5aPC9kZXNjcmlwdGlvbj4KKyAgPC9wcm9ibGVtPgorICAKKyAgCisgIAorICA8cHJvYmxlbT4KKyAgICA8ZmlsZT5YLmphdmE8L2ZpbGU+CisgICAgPGxpbmU+MzE8L2xpbmU+CisgICAgCisgICAgCisgICAgCisgICAgPHByb2JsZW1fY2xhc3Mgc2V2ZXJpdHk9IldBUk5JTkciIGF0dHJpYnV0ZV9rZXk9IldBUk5JTkdfQVRUUklCVVRFUyI+bWFnaWMgY29uc3RhbnQ8L3Byb2JsZW1fY2xhc3M+CisgICAgPGRlc2NyaXB0aW9uPk11c3QgYmUgb25lIG9mOiBDb25zdC5YLCBDb25zdC5ZLCBDb25zdC5aPC9kZXNjcmlwdGlvbj4KKyAgPC9wcm9ibGVtPgorICAKKyAgCisgIAorICA8cHJvYmxlbT4KKyAgICA8ZmlsZT5YLmphdmE8L2ZpbGU+CisgICAgPGxpbmU+MzM8L2xpbmU+CisgICAgCisgICAgCisgICAgCisgICAgPHByb2JsZW1fY2xhc3Mgc2V2ZXJpdHk9IldBUk5JTkciIGF0dHJpYnV0ZV9rZXk9IldBUk5JTkdfQVRUUklCVVRFUyI+bWFnaWMgY29uc3RhbnQ8L3Byb2JsZW1fY2xhc3M+CisgICAgPGRlc2NyaXB0aW9uPk11c3QgYmUgb25lIG9mOiBDb25zdC5YLCBDb25zdC5ZLCBDb25zdC5aPC9kZXNjcmlwdGlvbj4KKyAgPC9wcm9ibGVtPgorICAKKyAgCisgIAorICA8cHJvYmxlbT4KKyAgICA8ZmlsZT5YLmphdmE8L2ZpbGU+CisgICAgPGxpbmU+MzQ8L2xpbmU+CisgICAgCisgICAgCisgICAgCisgICAgPHByb2JsZW1fY2xhc3Mgc2V2ZXJpdHk9IldBUk5JTkciIGF0dHJpYnV0ZV9rZXk9IldBUk5JTkdfQVRUUklCVVRFUyI+bWFnaWMgY29uc3RhbnQ8L3Byb2JsZW1fY2xhc3M+CisgICAgPGRlc2NyaXB0aW9uPk11c3QgYmUgb25lIG9mOiBDb25zdC5YLCBDb25zdC5ZLCBDb25zdC5aPC9kZXNjcmlwdGlvbj4KKyAgPC9wcm9ibGVtPgorICAKKyAgCisgIAorICA8cHJvYmxlbT4KKyAgICA8ZmlsZT5YLmphdmE8L2ZpbGU+CisgICAgPGxpbmU+MzU8L2xpbmU+CisgICAgCisgICAgCisgICAgCisgICAgPHByb2JsZW1fY2xhc3Mgc2V2ZXJpdHk9IldBUk5JTkciIGF0dHJpYnV0ZV9rZXk9IldBUk5JTkdfQVRUUklCVVRFUyI+bWFnaWMgY29uc3RhbnQ8L3Byb2JsZW1fY2xhc3M+CisgICAgPGRlc2NyaXB0aW9uPk11c3QgYmUgb25lIG9mOiBDb25zdC5YLCBDb25zdC5ZLCBDb25zdC5aPC9kZXNjcmlwdGlvbj4KKyAgPC9wcm9ibGVtPgorICAKKyAgCisgIAorICA8cHJvYmxlbT4KKyAgICA8ZmlsZT5YLmphdmE8L2ZpbGU+CisgICAgPGxpbmU+MzY8L2xpbmU+CisgICAgCisgICAgCisgICAgCisgICAgPHByb2JsZW1fY2xhc3Mgc2V2ZXJpdHk9IldBUk5JTkciIGF0dHJpYnV0ZV9rZXk9IldBUk5JTkdfQVRUUklCVVRFUyI+bWFnaWMgY29uc3RhbnQ8L3Byb2JsZW1fY2xhc3M+CisgICAgPGRlc2NyaXB0aW9uPk11c3QgYmUgb25lIG9mOiBDb25zdC5YLCBDb25zdC5ZLCBDb25zdC5aPC9kZXNjcmlwdGlvbj4KKyAgPC9wcm9ibGVtPgorICAKKworICAKKzxwcm9ibGVtPgorICA8ZmlsZT5YLmphdmE8L2ZpbGU+CisgIDxsaW5lPjU1PC9saW5lPgorICAKKyAgCisgIAorICA8cHJvYmxlbV9jbGFzcyBzZXZlcml0eT0iV0FSTklORyIgYXR0cmlidXRlX2tleT0iV0FSTklOR19BVFRSSUJVVEVTIj5tYWdpYyBjb25zdGFudDwvcHJvYmxlbV9jbGFzcz4KKyAgPGRlc2NyaXB0aW9uPk11c3QgYmUgb25lIG9mOiBDb25zdC5YLCBDb25zdC5ZLCBDb25zdC5aPC9kZXNjcmlwdGlvbj4KKzwvcHJvYmxlbT4KKworCisKKzxwcm9ibGVtPgorICA8ZmlsZT5YLmphdmE8L2ZpbGU+CisgIDxsaW5lPjU2PC9saW5lPgorICAKKyAgCisgIAorICA8cHJvYmxlbV9jbGFzcyBzZXZlcml0eT0iV0FSTklORyIgYXR0cmlidXRlX2tleT0iV0FSTklOR19BVFRSSUJVVEVTIj5tYWdpYyBjb25zdGFudDwvcHJvYmxlbV9jbGFzcz4KKyAgPGRlc2NyaXB0aW9uPk11c3QgYmUgb25lIG9mOiBDb25zdC5YLCBDb25zdC5ZLCBDb25zdC5aPC9kZXNjcmlwdGlvbj4KKzwvcHJvYmxlbT4KKworCisKKzxwcm9ibGVtPgorICA8ZmlsZT5YLmphdmE8L2ZpbGU+CisgIDxsaW5lPjU3PC9saW5lPgorICAKKyAgCisgIAorICA8cHJvYmxlbV9jbGFzcyBzZXZlcml0eT0iV0FSTklORyIgYXR0cmlidXRlX2tleT0iV0FSTklOR19BVFRSSUJVVEVTIj5tYWdpYyBjb25zdGFudDwvcHJvYmxlbV9jbGFzcz4KKyAgPGRlc2NyaXB0aW9uPk11c3QgYmUgb25lIG9mOiBDb25zdC5YLCBDb25zdC5ZLCBDb25zdC5aPC9kZXNjcmlwdGlvbj4KKzwvcHJvYmxlbT4KKworCisKKzxwcm9ibGVtPgorICA8ZmlsZT5YLmphdmE8L2ZpbGU+CisgIDxsaW5lPjU5PC9saW5lPgorICAKKyAgCisgIAorICA8cHJvYmxlbV9jbGFzcyBzZXZlcml0eT0iV0FSTklORyIgYXR0cmlidXRlX2tleT0iV0FSTklOR19BVFRSSUJVVEVTIj5tYWdpYyBjb25zdGFudDwvcHJvYmxlbV9jbGFzcz4KKyAgPGRlc2NyaXB0aW9uPk11c3QgYmUgb25lIG9mOiBDb25zdC5YLCBDb25zdC5ZLCBDb25zdC5aPC9kZXNjcmlwdGlvbj4KKzwvcHJvYmxlbT4KKworCisKKzxwcm9ibGVtPgorICA8ZmlsZT5YLmphdmE8L2ZpbGU+CisgIDxsaW5lPjYwPC9saW5lPgorICAKKyAgCisgIAorICA8cHJvYmxlbV9jbGFzcyBzZXZlcml0eT0iV0FSTklORyIgYXR0cmlidXRlX2tleT0iV0FSTklOR19BVFRSSUJVVEVTIj5tYWdpYyBjb25zdGFudDwvcHJvYmxlbV9jbGFzcz4KKyAgPGRlc2NyaXB0aW9uPk11c3QgYmUgb25lIG9mOiBDb25zdC5YLCBDb25zdC5ZLCBDb25zdC5aPC9kZXNjcmlwdGlvbj4KKzwvcHJvYmxlbT4KKworCisKKzxwcm9ibGVtPgorICA8ZmlsZT5YLmphdmE8L2ZpbGU+CisgIDxsaW5lPjYxPC9saW5lPgorICAKKyAgCisgIAorICA8cHJvYmxlbV9jbGFzcyBzZXZlcml0eT0iV0FSTklORyIgYXR0cmlidXRlX2tleT0iV0FSTklOR19BVFRSSUJVVEVTIj5tYWdpYyBjb25zdGFudDwvcHJvYmxlbV9jbGFzcz4KKyAgPGRlc2NyaXB0aW9uPk11c3QgYmUgb25lIG9mOiBDb25zdC5YLCBDb25zdC5ZLCBDb25zdC5aPC9kZXNjcmlwdGlvbj4KKzwvcHJvYmxlbT4KKworCisKKzxwcm9ibGVtPgorICA8ZmlsZT5YLmphdmE8L2ZpbGU+CisgIDxsaW5lPjYyPC9saW5lPgorICAKKyAgCisgIAorICA8cHJvYmxlbV9jbGFzcyBzZXZlcml0eT0iV0FSTklORyIgYXR0cmlidXRlX2tleT0iV0FSTklOR19BVFRSSUJVVEVTIj5tYWdpYyBjb25zdGFudDwvcHJvYmxlbV9jbGFzcz4KKyAgPGRlc2NyaXB0aW9uPk11c3QgYmUgb25lIG9mOiBDb25zdC5YLCBDb25zdC5ZLCBDb25zdC5aPC9kZXNjcmlwdGlvbj4KKzwvcHJvYmxlbT4KKworCis8cHJvYmxlbT4KKyAgIDxmaWxlPlguamF2YTwvZmlsZT4KKyAgIDxsaW5lPjgxPC9saW5lPgorICAgPHByb2JsZW1fY2xhc3Mgc2V2ZXJpdHk9IldBUk5JTkciIGF0dHJpYnV0ZV9rZXk9IldBUk5JTkdfQVRUUklCVVRFUyI+bWFnaWMgY29uc3RhbnQ8L3Byb2JsZW1fY2xhc3M+CisgICA8ZGVzY3JpcHRpb24+TXVzdCBiZSBvbmUgb2Y6IENvbnN0LlgsIENvbnN0LlksIENvbnN0Llo8L2Rlc2NyaXB0aW9uPgorIDwvcHJvYmxlbT4KKworICAKKyAgPHByb2JsZW0+CisgICAgPGZpbGU+WC5qYXZhPC9maWxlPgorICAgIDxsaW5lPjgyPC9saW5lPgorICAgIAorICAgIAorICAgIAorICAgIDxwcm9ibGVtX2NsYXNzIHNldmVyaXR5PSJXQVJOSU5HIiBhdHRyaWJ1dGVfa2V5PSJXQVJOSU5HX0FUVFJJQlVURVMiPm1hZ2ljIGNvbnN0YW50PC9wcm9ibGVtX2NsYXNzPgorICAgIDxkZXNjcmlwdGlvbj5NdXN0IGJlIG9uZSBvZjogQ29uc3QuWCwgQ29uc3QuWSwgQ29uc3QuWjwvZGVzY3JpcHRpb24+CisgIDwvcHJvYmxlbT4KKyAgCisgIAorICAKKyAgPHByb2JsZW0+CisgICAgPGZpbGU+WC5qYXZhPC9maWxlPgorICAgIDxsaW5lPjgzPC9saW5lPgorICAgIAorICAgIAorICAgIAorICAgIDxwcm9ibGVtX2NsYXNzIHNldmVyaXR5PSJXQVJOSU5HIiBhdHRyaWJ1dGVfa2V5PSJXQVJOSU5HX0FUVFJJQlVURVMiPm1hZ2ljIGNvbnN0YW50PC9wcm9ibGVtX2NsYXNzPgorICAgIDxkZXNjcmlwdGlvbj5NdXN0IGJlIG9uZSBvZjogQ29uc3QuWCwgQ29uc3QuWSwgQ29uc3QuWjwvZGVzY3JpcHRpb24+CisgIDwvcHJvYmxlbT4KKyAgCisgIAorICAKKyAgPHByb2JsZW0+CisgICAgPGZpbGU+WC5qYXZhPC9maWxlPgorICAgIDxsaW5lPjg1PC9saW5lPgorICAgIAorICAgIAorICAgIAorICAgIDxwcm9ibGVtX2NsYXNzIHNldmVyaXR5PSJXQVJOSU5HIiBhdHRyaWJ1dGVfa2V5PSJXQVJOSU5HX0FUVFJJQlVURVMiPm1hZ2ljIGNvbnN0YW50PC9wcm9ibGVtX2NsYXNzPgorICAgIDxkZXNjcmlwdGlvbj5NdXN0IGJlIG9uZSBvZjogQ29uc3QuWCwgQ29uc3QuWSwgQ29uc3QuWjwvZGVzY3JpcHRpb24+CisgIDwvcHJvYmxlbT4KKyAgCisgIAorICAKKyAgPHByb2JsZW0+CisgICAgPGZpbGU+WC5qYXZhPC9maWxlPgorICAgIDxsaW5lPjg2PC9saW5lPgorICAgIAorICAgIAorICAgIAorICAgIDxwcm9ibGVtX2NsYXNzIHNldmVyaXR5PSJXQVJOSU5HIiBhdHRyaWJ1dGVfa2V5PSJXQVJOSU5HX0FUVFJJQlVURVMiPm1hZ2ljIGNvbnN0YW50PC9wcm9ibGVtX2NsYXNzPgorICAgIDxkZXNjcmlwdGlvbj5NdXN0IGJlIG9uZSBvZjogQ29uc3QuWCwgQ29uc3QuWSwgQ29uc3QuWjwvZGVzY3JpcHRpb24+CisgIDwvcHJvYmxlbT4KKyAgCisgIAorICAKKyAgPHByb2JsZW0+CisgICAgPGZpbGU+WC5qYXZhPC9maWxlPgorICAgIDxsaW5lPjg3PC9saW5lPgorICAgIAorICAgIAorICAgIAorICAgIDxwcm9ibGVtX2NsYXNzIHNldmVyaXR5PSJXQVJOSU5HIiBhdHRyaWJ1dGVfa2V5PSJXQVJOSU5HX0FUVFJJQlVURVMiPm1hZ2ljIGNvbnN0YW50PC9wcm9ibGVtX2NsYXNzPgorICAgIDxkZXNjcmlwdGlvbj5NdXN0IGJlIG9uZSBvZjogQ29uc3QuWCwgQ29uc3QuWSwgQ29uc3QuWjwvZGVzY3JpcHRpb24+CisgIDwvcHJvYmxlbT4KKyAgCisgIAorICAKKyAgPHByb2JsZW0+CisgICAgPGZpbGU+WC5qYXZhPC9maWxlPgorICAgIDxsaW5lPjg4PC9saW5lPgorICAgIAorICAgIAorICAgIAorICAgIDxwcm9ibGVtX2NsYXNzIHNldmVyaXR5PSJXQVJOSU5HIiBhdHRyaWJ1dGVfa2V5PSJXQVJOSU5HX0FUVFJJQlVURVMiPm1hZ2ljIGNvbnN0YW50PC9wcm9ibGVtX2NsYXNzPgorICAgIDxkZXNjcmlwdGlvbj5NdXN0IGJlIG9uZSBvZjogQ29uc3QuWCwgQ29uc3QuWSwgQ29uc3QuWjwvZGVzY3JpcHRpb24+CisgIDwvcHJvYmxlbT4KKyAgCisgIAorICA8cHJvYmxlbT4KKyAgICA8ZmlsZT5YLmphdmE8L2ZpbGU+CisgICAgPGxpbmU+MTE4PC9saW5lPgorICAgIDxwcm9ibGVtX2NsYXNzIHNldmVyaXR5PSJXQVJOSU5HIiBhdHRyaWJ1dGVfa2V5PSJXQVJOSU5HX0FUVFJJQlVURVMiPm1hZ2ljIGNvbnN0YW50PC9wcm9ibGVtX2NsYXNzPgorICAgIDxkZXNjcmlwdGlvbj5NdXN0IGJlIG9uZSBvZjogQ29uc3QuWCwgQ29uc3QuWSwgQ29uc3QuWjwvZGVzY3JpcHRpb24+CisgIDwvcHJvYmxlbT4KKworIDxwcm9ibGVtPgorICAgPGZpbGU+WC5qYXZhPC9maWxlPgorICAgPGxpbmU+MTE5PC9saW5lPgorICAgPHByb2JsZW1fY2xhc3Mgc2V2ZXJpdHk9IldBUk5JTkciIGF0dHJpYnV0ZV9rZXk9IldBUk5JTkdfQVRUUklCVVRFUyI+bWFnaWMgY29uc3RhbnQ8L3Byb2JsZW1fY2xhc3M+CisgICA8ZGVzY3JpcHRpb24+TXVzdCBiZSBvbmUgb2Y6IENvbnN0LlgsIENvbnN0LlksIENvbnN0Llo8L2Rlc2NyaXB0aW9uPgorIDwvcHJvYmxlbT4KKyAKKyAKKyAKKyA8cHJvYmxlbT4KKyAgIDxmaWxlPlguamF2YTwvZmlsZT4KKyAgIDxsaW5lPjEyMjwvbGluZT4KKyAgIAorICAgCisgICAKKyAgIDxwcm9ibGVtX2NsYXNzIHNldmVyaXR5PSJXQVJOSU5HIiBhdHRyaWJ1dGVfa2V5PSJXQVJOSU5HX0FUVFJJQlVURVMiPm1hZ2ljIGNvbnN0YW50PC9wcm9ibGVtX2NsYXNzPgorICAgPGRlc2NyaXB0aW9uPk11c3QgYmUgb25lIG9mOiBDb25zdC5YLCBDb25zdC5ZLCBDb25zdC5aPC9kZXNjcmlwdGlvbj4KKyA8L3Byb2JsZW0+CisgCisgCisgCisgPHByb2JsZW0+CisgICA8ZmlsZT5YLmphdmE8L2ZpbGU+CisgICA8bGluZT4xMjM8L2xpbmU+CisgICAKKyAgIAorICAgCisgICA8cHJvYmxlbV9jbGFzcyBzZXZlcml0eT0iV0FSTklORyIgYXR0cmlidXRlX2tleT0iV0FSTklOR19BVFRSSUJVVEVTIj5tYWdpYyBjb25zdGFudDwvcHJvYmxlbV9jbGFzcz4KKyAgIDxkZXNjcmlwdGlvbj5NdXN0IGJlIG9uZSBvZjogQ29uc3QuWCwgQ29uc3QuWSwgQ29uc3QuWjwvZGVzY3JpcHRpb24+CisgPC9wcm9ibGVtPgorIAorIAorIAorIDxwcm9ibGVtPgorICAgPGZpbGU+WC5qYXZhPC9maWxlPgorICAgPGxpbmU+MTI0PC9saW5lPgorICAgCisgICAKKyAgIAorICAgPHByb2JsZW1fY2xhc3Mgc2V2ZXJpdHk9IldBUk5JTkciIGF0dHJpYnV0ZV9rZXk9IldBUk5JTkdfQVRUUklCVVRFUyI+bWFnaWMgY29uc3RhbnQ8L3Byb2JsZW1fY2xhc3M+CisgICA8ZGVzY3JpcHRpb24+TXVzdCBiZSBvbmUgb2Y6IENvbnN0LlgsIENvbnN0LlksIENvbnN0Llo8L2Rlc2NyaXB0aW9uPgorIDwvcHJvYmxlbT4KKyAKKyAKKyAKKyA8cHJvYmxlbT4KKyAgIDxmaWxlPlguamF2YTwvZmlsZT4KKyAgIDxsaW5lPjEyNTwvbGluZT4KKyAgIAorICAgCisgICAKKyAgIDxwcm9ibGVtX2NsYXNzIHNldmVyaXR5PSJXQVJOSU5HIiBhdHRyaWJ1dGVfa2V5PSJXQVJOSU5HX0FUVFJJQlVURVMiPm1hZ2ljIGNvbnN0YW50PC9wcm9ibGVtX2NsYXNzPgorICAgPGRlc2NyaXB0aW9uPk11c3QgYmUgb25lIG9mOiBDb25zdC5YLCBDb25zdC5ZLCBDb25zdC5aPC9kZXNjcmlwdGlvbj4KKyA8L3Byb2JsZW0+CisgCisKKyAgCisKKzxwcm9ibGVtPgorICA8ZmlsZT5YLmphdmE8L2ZpbGU+CisgIDxsaW5lPjE3MzwvbGluZT4KKyAgPHByb2JsZW1fY2xhc3Mgc2V2ZXJpdHk9IldBUk5JTkciIGF0dHJpYnV0ZV9rZXk9IldBUk5JTkdfQVRUUklCVVRFUyI+bWFnaWMgY29uc3RhbnQ8L3Byb2JsZW1fY2xhc3M+CisgIDxkZXNjcmlwdGlvbj5NdXN0IGJlIG9uZSBvZjogQ29uc3QuWCwgQ29uc3QuWSwgQ29uc3QuWjwvZGVzY3JpcHRpb24+Cis8L3Byb2JsZW0+CisKKworCis8cHJvYmxlbT4KKyAgPGZpbGU+WC5qYXZhPC9maWxlPgorICA8bGluZT4xNzQ8L2xpbmU+CisgIDxwcm9ibGVtX2NsYXNzIHNldmVyaXR5PSJXQVJOSU5HIiBhdHRyaWJ1dGVfa2V5PSJXQVJOSU5HX0FUVFJJQlVURVMiPm1hZ2ljIGNvbnN0YW50PC9wcm9ibGVtX2NsYXNzPgorICA8ZGVzY3JpcHRpb24+TXVzdCBiZSBvbmUgb2Y6IENvbnN0LlgsIENvbnN0LlksIENvbnN0Llo8L2Rlc2NyaXB0aW9uPgorPC9wcm9ibGVtPgorCisKKworPHByb2JsZW0+CisgIDxmaWxlPlguamF2YTwvZmlsZT4KKyAgPGxpbmU+MTc1PC9saW5lPgorICA8cHJvYmxlbV9jbGFzcyBzZXZlcml0eT0iV0FSTklORyIgYXR0cmlidXRlX2tleT0iV0FSTklOR19BVFRSSUJVVEVTIj5tYWdpYyBjb25zdGFudDwvcHJvYmxlbV9jbGFzcz4KKyAgPGRlc2NyaXB0aW9uPk11c3QgYmUgb25lIG9mOiBDb25zdC5YLCBDb25zdC5ZLCBDb25zdC5aPC9kZXNjcmlwdGlvbj4KKzwvcHJvYmxlbT4KKworCisKKzxwcm9ibGVtPgorICA8ZmlsZT5YLmphdmE8L2ZpbGU+CisgIDxsaW5lPjE3NzwvbGluZT4KKyAgPHByb2JsZW1fY2xhc3Mgc2V2ZXJpdHk9IldBUk5JTkciIGF0dHJpYnV0ZV9rZXk9IldBUk5JTkdfQVRUUklCVVRFUyI+bWFnaWMgY29uc3RhbnQ8L3Byb2JsZW1fY2xhc3M+CisgIDxkZXNjcmlwdGlvbj5NdXN0IGJlIG9uZSBvZjogQ29uc3QuWCwgQ29uc3QuWSwgQ29uc3QuWjwvZGVzY3JpcHRpb24+Cis8L3Byb2JsZW0+CisgIAorCis8cHJvYmxlbT4KKyAgPGZpbGU+WC5qYXZhPC9maWxlPgorICA8bGluZT4xNzg8L2xpbmU+CisgIDxwcm9ibGVtX2NsYXNzIHNldmVyaXR5PSJXQVJOSU5HIiBhdHRyaWJ1dGVfa2V5PSJXQVJOSU5HX0FUVFJJQlVURVMiPm1hZ2ljIGNvbnN0YW50PC9wcm9ibGVtX2NsYXNzPgorICA8ZGVzY3JpcHRpb24+TXVzdCBiZSBvbmUgb2Y6IENvbnN0LlgsIENvbnN0LlksIENvbnN0Llo8L2Rlc2NyaXB0aW9uPgorPC9wcm9ibGVtPgorCisKKworPHByb2JsZW0+CisgIDxmaWxlPlguamF2YTwvZmlsZT4KKyAgPGxpbmU+MTc5PC9saW5lPgorICA8cHJvYmxlbV9jbGFzcyBzZXZlcml0eT0iV0FSTklORyIgYXR0cmlidXRlX2tleT0iV0FSTklOR19BVFRSSUJVVEVTIj5tYWdpYyBjb25zdGFudDwvcHJvYmxlbV9jbGFzcz4KKyAgPGRlc2NyaXB0aW9uPk11c3QgYmUgb25lIG9mOiBDb25zdC5YLCBDb25zdC5ZLCBDb25zdC5aPC9kZXNjcmlwdGlvbj4KKzwvcHJvYmxlbT4KKworCisKKzxwcm9ibGVtPgorICA8ZmlsZT5YLmphdmE8L2ZpbGU+CisgIDxsaW5lPjE4MDwvbGluZT4KKyAgPHByb2JsZW1fY2xhc3Mgc2V2ZXJpdHk9IldBUk5JTkciIGF0dHJpYnV0ZV9rZXk9IldBUk5JTkdfQVRUUklCVVRFUyI+bWFnaWMgY29uc3RhbnQ8L3Byb2JsZW1fY2xhc3M+CisgIDxkZXNjcmlwdGlvbj5NdXN0IGJlIG9uZSBvZjogQ29uc3QuWCwgQ29uc3QuWSwgQ29uc3QuWjwvZGVzY3JpcHRpb24+Cis8L3Byb2JsZW0+CisgIAorCis8cHJvYmxlbT4KKyAgPGZpbGU+WC5qYXZhPC9maWxlPgorICAgPGxpbmU+MTkzPC9saW5lPgorICAgPHByb2JsZW1fY2xhc3Mgc2V2ZXJpdHk9IldBUk5JTkciIGF0dHJpYnV0ZV9rZXk9IldBUk5JTkdfQVRUUklCVVRFUyI+bWFnaWMgY29uc3RhbnQ8L3Byb2JsZW1fY2xhc3M+CisgICA8ZGVzY3JpcHRpb24+TXVzdCBiZSBvbmUgb2Y6IENvbnN0LlgsIENvbnN0Llk8L2Rlc2NyaXB0aW9uPgorIDwvcHJvYmxlbT4KKworCisgPHByb2JsZW0+CisgICA8ZmlsZT5YLmphdmE8L2ZpbGU+CisgICA8bGluZT4xOTU8L2xpbmU+CisgICA8cHJvYmxlbV9jbGFzcyBzZXZlcml0eT0iV0FSTklORyIgYXR0cmlidXRlX2tleT0iV0FSTklOR19BVFRSSUJVVEVTIj5tYWdpYyBjb25zdGFudDwvcHJvYmxlbV9jbGFzcz4KKyAgIDxkZXNjcmlwdGlvbj5NdXN0IGJlIG9uZSBvZjogQ29uc3QuWCwgQ29uc3QuWTwvZGVzY3JpcHRpb24+CisgPC9wcm9ibGVtPgorCisgIDxwcm9ibGVtPgorICAgIDxmaWxlPlguamF2YTwvZmlsZT4KKyAgICA8bGluZT4yMjc8L2xpbmU+CisgICAgPHByb2JsZW1fY2xhc3Mgc2V2ZXJpdHk9IldBUk5JTkciIGF0dHJpYnV0ZV9rZXk9IldBUk5JTkdfQVRUUklCVVRFUyI+bWFnaWMgY29uc3RhbnQ8L3Byb2JsZW1fY2xhc3M+CisgICAgPGRlc2NyaXB0aW9uPk11c3QgYmUgb25lIG9mOiBDb25zdC5YLCBDb25zdC5ZPC9kZXNjcmlwdGlvbj4KKyAgPC9wcm9ibGVtPgorCisKKyAgPHByb2JsZW0+CisgICAgPGZpbGU+WC5qYXZhPC9maWxlPgorICAgIDxsaW5lPjIyODwvbGluZT4KKyAgICA8cHJvYmxlbV9jbGFzcyBzZXZlcml0eT0iV0FSTklORyIgYXR0cmlidXRlX2tleT0iV0FSTklOR19BVFRSSUJVVEVTIj5tYWdpYyBjb25zdGFudDwvcHJvYmxlbV9jbGFzcz4KKyAgICA8ZGVzY3JpcHRpb24+TXVzdCBiZSBvbmUgb2Y6IENvbnN0LlgsIENvbnN0Llk8L2Rlc2NyaXB0aW9uPgorICA8L3Byb2JsZW0+CisKKworICA8cHJvYmxlbT4KKyAgICA8ZmlsZT5YLmphdmE8L2ZpbGU+CisgICAgPGxpbmU+MjI5PC9saW5lPgorICAgIDxwcm9ibGVtX2NsYXNzIHNldmVyaXR5PSJXQVJOSU5HIiBhdHRyaWJ1dGVfa2V5PSJXQVJOSU5HX0FUVFJJQlVURVMiPm1hZ2ljIGNvbnN0YW50PC9wcm9ibGVtX2NsYXNzPgorICAgIDxkZXNjcmlwdGlvbj5NdXN0IGJlIG9uZSBvZjogQ29uc3QuWCwgQ29uc3QuWTwvZGVzY3JpcHRpb24+CisgIDwvcHJvYmxlbT4KKworCisgIDxwcm9ibGVtPgorICAgIDxmaWxlPlguamF2YTwvZmlsZT4KKyAgICA8bGluZT4yMzA8L2xpbmU+CisgICAgPHByb2JsZW1fY2xhc3Mgc2V2ZXJpdHk9IldBUk5JTkciIGF0dHJpYnV0ZV9rZXk9IldBUk5JTkdfQVRUUklCVVRFUyI+bWFnaWMgY29uc3RhbnQ8L3Byb2JsZW1fY2xhc3M+CisgICAgPGRlc2NyaXB0aW9uPk11c3QgYmUgb25lIG9mOiBDb25zdC5YLCBDb25zdC5ZPC9kZXNjcmlwdGlvbj4KKyAgPC9wcm9ibGVtPgorCisgIDxwcm9ibGVtPgorICAgIDxmaWxlPlguamF2YTwvZmlsZT4KKyAgICA8bGluZT4yMzE8L2xpbmU+CisgICAgPHByb2JsZW1fY2xhc3Mgc2V2ZXJpdHk9IldBUk5JTkciIGF0dHJpYnV0ZV9rZXk9IldBUk5JTkdfQVRUUklCVVRFUyI+bWFnaWMgY29uc3RhbnQ8L3Byb2JsZW1fY2xhc3M+CisgICAgPGRlc2NyaXB0aW9uPk11c3QgYmUgb25lIG9mOiBDb25zdC5YLCBDb25zdC5ZPC9kZXNjcmlwdGlvbj4KKyAgPC9wcm9ibGVtPgorCisgIDxwcm9ibGVtPgorICAgIDxmaWxlPlguamF2YTwvZmlsZT4KKyAgICA8bGluZT4yMzg8L2xpbmU+CisgICAgPHByb2JsZW1fY2xhc3Mgc2V2ZXJpdHk9IldBUk5JTkciIGF0dHJpYnV0ZV9rZXk9IldBUk5JTkdfQVRUUklCVVRFUyI+TWFnaWMgQ29uc3RhbnQ8L3Byb2JsZW1fY2xhc3M+CisgICAgPGRlc2NyaXB0aW9uPk11c3QgYmUgb25lIG9mOiBDYWxlbmRhci5KQU5VQVJZLCBDYWxlbmRhci5GRUJSVUFSWSwgQ2FsZW5kYXIuTUFSQ0gsIENhbGVuZGFyLkFQUklMLCBDYWxlbmRhci5NQVksIENhbGVuZGFyLkpVTkUsIENhbGVuZGFyLkpVTFksIENhbGVuZGFyLkFVR1VTVCwgQ2FsZW5kYXIuU0VQVEVNQkVSLCBDYWxlbmRhci5PQ1RPQkVSLCBDYWxlbmRhci5OT1ZFTUJFUiwgQ2FsZW5kYXIuREVDRU1CRVI8L2Rlc2NyaXB0aW9uPgorICA8L3Byb2JsZW0+CisKKyAgPHByb2JsZW0+CisgICAgPGZpbGU+WC5qYXZhPC9maWxlPgorICAgIDxsaW5lPjIzOTwvbGluZT4KKyAgICA8cHJvYmxlbV9jbGFzcyBzZXZlcml0eT0iV0FSTklORyIgYXR0cmlidXRlX2tleT0iV0FSTklOR19BVFRSSUJVVEVTIj5NYWdpYyBDb25zdGFudDwvcHJvYmxlbV9jbGFzcz4KKyAgICA8ZGVzY3JpcHRpb24+TXVzdCBiZSBvbmUgb2Y6IFN3aW5nQ29uc3RhbnRzLkxFRlQsIFN3aW5nQ29uc3RhbnRzLkNFTlRFUiwgU3dpbmdDb25zdGFudHMuUklHSFQsIFN3aW5nQ29uc3RhbnRzLkxFQURJTkcsIFN3aW5nQ29uc3RhbnRzLlRSQUlMSU5HPC9kZXNjcmlwdGlvbj4KKyAgPC9wcm9ibGVtPgorCis8L3Byb2JsZW1zPgpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vbWFnaWMvc2ltcGxlL3NyYy9YLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9tYWdpYy9zaW1wbGUvc3JjL1guamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZmNmODEyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vbWFnaWMvc2ltcGxlL3NyYy9YLmphdmEKQEAgLTAsMCArMSwyNTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwMC0yMDExIEpldEJyYWlucyBzLnIuby4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitpbXBvcnQgb3JnLmludGVsbGlqLmxhbmcuYW5ub3RhdGlvbnMuTWFnaWNDb25zdGFudDsKKworaW1wb3J0IGphdmEuaW8uKjsKKworY2xhc3MgQ29uc3QgeworICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBYID0gMDsKKyAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgWSA9IDI7CisgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFogPSAzOworfQorcHVibGljIGNsYXNzIFggeworCisgIHZvaWQgZihATWFnaWNDb25zdGFudChpbnRWYWx1ZXM9e0NvbnN0LlgsIENvbnN0LlksIENvbnN0Llp9KSBpbnQgeCkgeworICAgIC8vLy8vLy8vLy8vIEJBRAorICAgIGYoMCk7CisgICAgZigxKTsKKyAgICBmKENvbnN0LlggfCBDb25zdC5ZKTsKKyAgICBpbnQgaSA9IENvbnN0LlggfCBDb25zdC5ZOworICAgIGYoaSk7CisgICAgaWYgKHggPT0gMykgeworICAgICAgeCA9IDI7CisgICAgICBhc3NlcnQgeCAhPSAxOworICAgIH0KKworICAgIC8vLy8vLy8vLy8vLy8vIEdPT0QKKyAgICBmKENvbnN0LlgpOworICAgIGYoQ29uc3QuWSk7CisgICAgZihDb25zdC5aKTsKKyAgICBpbnQgaTIgPSB0aGlzID09IG51bGwgPyBDb25zdC5YIDogQ29uc3QuWTsKKyAgICBmKGkyKTsKKyAgICBpZiAoeCA9PSBDb25zdC5YKSB7CisgICAgICB4ID0gQ29uc3QuWTsKKyAgICAgIGFzc2VydCB4ICE9IENvbnN0Llo7CisgICAgfQorCisgICAgZjIoeCk7CisgIH0KKworICB2b2lkIGYyKEBNYWdpY0NvbnN0YW50KHZhbHVlc0Zyb21DbGFzcyA9Q29uc3QuY2xhc3MpIGludCB4KSB7CisgICAgLy8vLy8vLy8vLy8gQkFECisgICAgZjIoMCk7CisgICAgZjIoMSk7CisgICAgZjIoQ29uc3QuWCB8IENvbnN0LlkpOworICAgIGludCBpID0gQ29uc3QuWCB8IENvbnN0Llk7CisgICAgZjIoaSk7CisgICAgaWYgKHggPT0gMykgeworICAgICAgeCA9IDI7CisgICAgICBhc3NlcnQgeCAhPSAxOworICAgIH0KKworICAgIC8vLy8vLy8vLy8vLy8vIEdPT0QKKyAgICBmMihDb25zdC5YKTsKKyAgICBmMihDb25zdC5ZKTsKKyAgICBmMihDb25zdC5aKTsKKyAgICBpbnQgaTIgPSB0aGlzID09IG51bGwgPyBDb25zdC5YIDogQ29uc3QuWTsKKyAgICBmMihpMik7CisgICAgaWYgKHggPT0gQ29uc3QuWCkgeworICAgICAgeCA9IENvbnN0Llk7CisgICAgICBhc3NlcnQgeCAhPSBDb25zdC5aOworICAgIH0KKworICAgIGYoeCk7CisgIH0KKworICB2b2lkIGYzKEBNYWdpY0NvbnN0YW50KGZsYWdzID17Q29uc3QuWCwgQ29uc3QuWSwgQ29uc3QuWn0pIGludCB4KSB7CisgICAgLy8vLy8vLy8vLy8gQkFECisgICAgZjMoMik7CisgICAgZjMoMSk7CisgICAgZihDb25zdC5YIHwgQ29uc3QuWSk7CisgICAgaW50IGkgPSBDb25zdC5YIHwgNDsKKyAgICBmMyhpKTsKKyAgICBpZiAoeCA9PSAzKSB7CisgICAgICB4ID0gMjsKKyAgICAgIGFzc2VydCB4ICE9IDE7CisgICAgfQorCisgICAgLy8vLy8vLy8vLy8vLy8gR09PRAorICAgIGYzKENvbnN0LlgpOworICAgIGYzKENvbnN0LlkpOworICAgIGYzKENvbnN0LlopOworCisgICAgaW50IGkyID0gdGhpcyA9PSBudWxsID8gQ29uc3QuWCA6IENvbnN0Llk7CisgICAgZjMoaTIpOworICAgIGludCBpeCA9IENvbnN0LlggfCBDb25zdC5ZOworICAgIGYzKGl4KTsKKyAgICBmMygwKTsKKyAgICBmMygtMSk7CisgICAgaW50IGYgPSAwOworICAgIGlmICh4ID09IENvbnN0LlgpIHsKKyAgICAgIHggPSBDb25zdC5ZOworICAgICAgYXNzZXJ0IHggIT0gQ29uc3QuWjsKKyAgICAgIGYgfD0gQ29uc3QuWTsgIGYgJj0gQ29uc3QuWCAmIH4oQ29uc3QuWiB8IENvbnN0LlgpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIGYgfD0gQ29uc3QuWDsgIGYgPSBmICYgfihDb25zdC5YIHwgQ29uc3QuWCk7CisgICAgfQorICAgIGYzKGYpOworCisgICAgZjQoeCk7CisgIH0KKworICB2b2lkIGY0KEBNYWdpY0NvbnN0YW50KGZsYWdzRnJvbUNsYXNzID1Db25zdC5jbGFzcykgaW50IHgpIHsKKyAgICAvLy8vLy8vLy8vLyBCQUQKKyAgICBmNCgtMyk7CisgICAgZjQoMSk7CisgICAgZjQoQ29uc3QuWCB8IENvbnN0LlkpOworICAgIGludCBpID0gQ29uc3QuWCB8IDQ7CisgICAgZjQoaSk7CisgICAgaWYgKHggPT0gMykgeworICAgICAgeCA9IDI7CisgICAgICBhc3NlcnQgeCAhPSAxOworICAgIH0KKworICAgIC8vLy8vLy8vLy8vLy8vIEdPT0QKKyAgICBmNChDb25zdC5YKTsKKyAgICBmNChDb25zdC5ZKTsKKyAgICBmNChDb25zdC5aKTsKKworICAgIGludCBpMiA9IHRoaXMgPT0gbnVsbCA/IENvbnN0LlggOiBDb25zdC5ZOworICAgIGY0KGkyKTsKKyAgICBpbnQgaXggPSBDb25zdC5YIHwgQ29uc3QuWTsKKyAgICBmNChpeCk7CisgICAgZjQoMCk7CisgICAgZjQoLTEpOworICAgIGludCBmID0gMDsKKyAgICBpZiAoeCA9PSBDb25zdC5YKSB7CisgICAgICB4ID0gQ29uc3QuWTsKKyAgICAgIGFzc2VydCB4ICE9IENvbnN0Llo7CisgICAgICBmIHw9IENvbnN0Llk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgZiB8PSBDb25zdC5YOworICAgIH0KKyAgICBmNChmKTsKKworICAgIGYzKHgpOworICB9CisKKworICBjbGFzcyBBbGlhcyB7CisgICAgQE1hZ2ljQ29uc3RhbnQoaW50VmFsdWVzPXtDb25zdC5YLCBDb25zdC5ZLCBDb25zdC5afSkKKyAgICBAaW50ZXJmYWNlIEludEVudW17fQorCisgICAgdm9pZCBmKEBJbnRFbnVtIGludCB4KSB7CisgICAgICAvLy8vLy8vLy8vLy8vLyBHT09ECisgICAgICBmKENvbnN0LlgpOworICAgICAgZihDb25zdC5ZKTsKKyAgICAgIGYoQ29uc3QuWik7CisgICAgICBpbnQgaTIgPSB0aGlzID09IG51bGwgPyBDb25zdC5YIDogQ29uc3QuWTsKKyAgICAgIGYoaTIpOworICAgICAgaWYgKHggPT0gQ29uc3QuWCkgeworICAgICAgICB4ID0gQ29uc3QuWTsKKyAgICAgICAgYXNzZXJ0IHggIT0gQ29uc3QuWjsKKyAgICAgIH0KKworICAgICAgZjIoeCk7CisKKyAgICAgIC8vLy8vLy8vLy8vIEJBRAorICAgICAgZigwKTsKKyAgICAgIGYoMSk7CisgICAgICBmKENvbnN0LlggfCBDb25zdC5ZKTsKKyAgICAgIGludCBpID0gQ29uc3QuWCB8IENvbnN0Llk7CisgICAgICBmKGkpOworICAgICAgaWYgKHggPT0gMyB8fCBnZXRDbGFzcygpLmlzSW50ZXJmYWNlKCkpIHsKKyAgICAgICAgeCA9IDI7CisgICAgICAgIGFzc2VydCB4ICE9IDE7CisgICAgICB9CisKKyAgICAgIGYyKHgpOworICAgIH0KKyAgfQorCisgIGNsYXNzIE1hZ2ljQW5ub0luc2lkZUFubm90YXRpb25Vc2FnZSB7CisgICAgQGludGVyZmFjZSBJSUkgeworICAgICAgQE1hZ2ljQ29uc3RhbnQoaW50VmFsdWVzID0ge0NvbnN0LlgsIENvbnN0Lll9KSBpbnQgdmFsKCk7CisgICAgfQorCisgICAgLy8gYmFkCisgICAgQElJSSh2YWwgPSAyKQorICAgIGludCBoOworICAgIEBJSUkodmFsID0gQ29uc3QuWCB8IENvbnN0LlkpCisgICAgdm9pZCBmKCl7fQorCisgICAgLy8gZ29vZAorICAgIEBJSUkodmFsID0gQ29uc3QuWCkKKyAgICBpbnQgaDI7CisgIH0KKworICBhYnN0cmFjdCBjbGFzcyBCZWFuSW5mb1BhcnNpbmcgeworICAgIC8qKgorICAgICAqIEBzZWUgICAgICAgIGphdmEubGFuZy5SdW50aW1lI2V4aXQoaW50KQorICAgICAqCisgICAgICogQGJlYW5pbmZvCisgICAgICogICBwcmVmZXJyZWQ6IHRydWUKKyAgICAgKiAgICAgICBib3VuZDogdHJ1ZQorICAgICAqICAgICAgICBlbnVtOiBET19OT1RISU5HX09OX0NMT1NFIENvbnN0LlgKKyAgICAgKiAgICAgICAgICAgICAgSElERV9PTl9DTE9TRSAgICAgICBDb25zdC5ZCisgICAgICogZGVzY3JpcHRpb246IFRoZSBmcmFtZSdzIGRlZmF1bHQgY2xvc2Ugb3BlcmF0aW9uLgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIHNldFgoaW50IG9wZXJhdGlvbikgeworCisgICAgfQorCisgICAgcHVibGljIGFic3RyYWN0IGludCBnZXRYKCk7CisKKyAgICB7CisgICAgICAvLyBnb29kCisgICAgICBzZXRYKENvbnN0LlgpOworICAgICAgc2V0WChDb25zdC5ZKTsKKyAgICAgIGlmIChnZXRYKCkgPT0gQ29uc3QuWCB8fCBnZXRYKCkgPT0gQ29uc3QuWSkge30KKworICAgICAgLy8gYmFkCisgICAgICBzZXRYKDApOworICAgICAgc2V0WCgtMSk7CisgICAgICBzZXRYKENvbnN0LlopOworICAgICAgaWYgKGdldFgoKSA9PSAxKSB7fQorICAgICAgaWYgKGdldFgoKSA9PSBDb25zdC5aKSB7fQorICAgIH0KKworICB9CisKKyAgY2xhc3MgRXh0ZXJuYWxBbm5vdGF0aW9ucyB7CisgICAgdm9pZCBmKCkgeworICAgICAgamF2YS51dGlsLkNhbGVuZGFyLmdldEluc3RhbmNlKCkuc2V0KDIwMDAsOSwwKQorICAgICAgbmV3IGphdmF4LnN3aW5nLkpMYWJlbCgidGV4dCIsIDMpOworICAgIH0KKyAgfQorICBzdGF0aWMgY2xhc3MgT3ZlcnJpZGVYIGV4dGVuZHMgWCB7CisgICAgdm9pZCBmKGludCB4KSB7CisgICAgICBzdXBlci5mKHgpOworICAgIH0KKyAgfQorCisgIHZvaWQgcGx1c1N1cHBvcnRlZEluRmxhZ3MoQE1hZ2ljQ29uc3RhbnQoZmxhZ3MgPXtDb25zdC5YLCBDb25zdC5ZLCBDb25zdC5afSkgaW50IHgpIHsKKyAgICAvLy8vLy8vLy8vLy8vLyBHT09ECisgICAgcGx1c1N1cHBvcnRlZEluRmxhZ3MoQ29uc3QuWCArIENvbnN0LlkpOworICAgIHBsdXNTdXBwb3J0ZWRJbkZsYWdzKENvbnN0LlogKyBDb25zdC5YICsgQ29uc3QuWSk7CisgICAgcGx1c1N1cHBvcnRlZEluRmxhZ3MoQ29uc3QuWiArIChDb25zdC5YICsgQ29uc3QuWSkpOworCisgICAgaW50IGl4ID0gQ29uc3QuWCArIENvbnN0Llk7CisgICAgcGx1c1N1cHBvcnRlZEluRmxhZ3MoaXgpOworICAgIHBsdXNTdXBwb3J0ZWRJbkZsYWdzKDApOworICAgIHBsdXNTdXBwb3J0ZWRJbkZsYWdzKC0xKTsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vbnVsbGFibGVQcm9ibGVtcy9nZXR0ZXJTZXR0ZXJQcm9ibGVtcy9leHBlY3RlZC54bWwgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9udWxsYWJsZVByb2JsZW1zL2dldHRlclNldHRlclByb2JsZW1zL2V4cGVjdGVkLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lODNiMjliCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vbnVsbGFibGVQcm9ibGVtcy9nZXR0ZXJTZXR0ZXJQcm9ibGVtcy9leHBlY3RlZC54bWwKQEAgLTAsMCArMSw3MyBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxwcm9ibGVtcz4KKyAgPHByb2JsZW0+CisgICAgPGZpbGU+VGVzdC5qYXZhPC9maWxlPgorICAgIDxsaW5lPjExPC9saW5lPgorICAgIDxtZXRob2Q+CisgICAgICA8bmFtZT52b2lkIHNldEIoQiBiKTwvbmFtZT4KKyAgICAgIDxkaXNwbGF5X25hbWU+c2V0QihCKTwvZGlzcGxheV9uYW1lPgorICAgICAgPHBhY2thZ2U+Jmx0O2RlZmF1bHQmZ3Q7PC9wYWNrYWdlPgorICAgICAgPGNsYXNzPgorICAgICAgICA8bmFtZT5CPC9uYW1lPgorICAgICAgICA8ZGlzcGxheV9uYW1lPkI8L2Rpc3BsYXlfbmFtZT4KKyAgICAgIDwvY2xhc3M+CisgICAgPC9tZXRob2Q+CisgICAgPHByb2JsZW1fY2xhc3Mgc2V2ZXJpdHk9IldBUk5JTkciIGF0dHJpYnV0ZV9rZXk9IldBUk5JTkdfQVRUUklCVVRFUyI+QE5vdE51bGwvQE51bGxhYmxlIHByb2JsZW1zPC9wcm9ibGVtX2NsYXNzPgorICAgIDxkZXNjcmlwdGlvbj5TZXR0ZXIgcGFyYW1ldGVyIGZvciBATm90TnVsbCBmaWVsZCBtaWdodCBiZSBhbm5vdGF0ZWQgQE5vdE51bGwgaXRzZWxmPC9kZXNjcmlwdGlvbj4KKyAgPC9wcm9ibGVtPgorICA8cHJvYmxlbT4KKyAgICA8ZmlsZT5UZXN0LmphdmE8L2ZpbGU+CisgICAgPGxpbmU+NzwvbGluZT4KKyAgICA8bWV0aG9kPgorICAgICAgPG5hbWU+QiBnZXRCKCk8L25hbWU+CisgICAgICA8ZGlzcGxheV9uYW1lPmdldEIoKTwvZGlzcGxheV9uYW1lPgorICAgICAgPHBhY2thZ2U+Jmx0O2RlZmF1bHQmZ3Q7PC9wYWNrYWdlPgorICAgICAgPGNsYXNzPgorICAgICAgICA8bmFtZT5CPC9uYW1lPgorICAgICAgICA8ZGlzcGxheV9uYW1lPkI8L2Rpc3BsYXlfbmFtZT4KKyAgICAgIDwvY2xhc3M+CisgICAgPC9tZXRob2Q+CisgICAgPHByb2JsZW1fY2xhc3Mgc2V2ZXJpdHk9IldBUk5JTkciIGF0dHJpYnV0ZV9rZXk9IldBUk5JTkdfQVRUUklCVVRFUyI+QE5vdE51bGwvQE51bGxhYmxlIHByb2JsZW1zPC9wcm9ibGVtX2NsYXNzPgorICAgIDxkZXNjcmlwdGlvbj5HZXR0ZXIgZm9yIEBOb3ROdWxsIGZpZWxkIG1pZ2h0IGJlIGFubm90YXRlZCBATm90TnVsbCBpdHNlbGY8L2Rlc2NyaXB0aW9uPgorICA8L3Byb2JsZW0+CisgIAorICA8cHJvYmxlbT4KKyAgICA8ZmlsZT5UZXN0LmphdmE8L2ZpbGU+CisgICAgPGxpbmU+MjU8L2xpbmU+CisgICAgPHByb2JsZW1fY2xhc3Mgc2V2ZXJpdHk9IldBUk5JTkciIGF0dHJpYnV0ZV9rZXk9IldBUk5JTkdfQVRUUklCVVRFUyI+QE5vdE51bGwvQE51bGxhYmxlIHByb2JsZW1zPC9wcm9ibGVtX2NsYXNzPgorICAgIDxkZXNjcmlwdGlvbj5Db25zdHJ1Y3RvciBwYXJhbWV0ZXIgZm9yIEBOb3ROdWxsIGZpZWxkIG1pZ2h0IGJlIGFubm90YXRlZCBATm90TnVsbCBpdHNlbGY8L2Rlc2NyaXB0aW9uPgorICA8L3Byb2JsZW0+CisKKworICA8cHJvYmxlbT4KKyAgICA8ZmlsZT5UZXN0LmphdmE8L2ZpbGU+CisgICAgPGxpbmU+Mzg8L2xpbmU+CisgICAgPHByb2JsZW1fY2xhc3Mgc2V2ZXJpdHk9IldBUk5JTkciIGF0dHJpYnV0ZV9rZXk9IldBUk5JTkdfQVRUUklCVVRFUyI+QE5vdE51bGwvQE51bGxhYmxlIHByb2JsZW1zPC9wcm9ibGVtX2NsYXNzPgorICAgIDxkZXNjcmlwdGlvbj5TZXR0ZXIgcGFyYW1ldGVyIGZvciBATm90TnVsbCBmaWVsZCBtaWdodCBiZSBhbm5vdGF0ZWQgQE5vdE51bGwgaXRzZWxmPC9kZXNjcmlwdGlvbj4KKyAgPC9wcm9ibGVtPgorCisKKyAgPHByb2JsZW0+CisgICAgPGZpbGU+VGVzdC5qYXZhPC9maWxlPgorICAgIDxsaW5lPjM0PC9saW5lPgorICAgIDxwcm9ibGVtX2NsYXNzIHNldmVyaXR5PSJXQVJOSU5HIiBhdHRyaWJ1dGVfa2V5PSJXQVJOSU5HX0FUVFJJQlVURVMiPkBOb3ROdWxsL0BOdWxsYWJsZSBwcm9ibGVtczwvcHJvYmxlbV9jbGFzcz4KKyAgICA8ZGVzY3JpcHRpb24+R2V0dGVyIGZvciBATm90TnVsbCBmaWVsZCBtaWdodCBiZSBhbm5vdGF0ZWQgQE5vdE51bGwgaXRzZWxmPC9kZXNjcmlwdGlvbj4KKyAgPC9wcm9ibGVtPgorCisKKyAgPHByb2JsZW0+CisgICAgPGZpbGU+VGVzdC5qYXZhPC9maWxlPgorICAgIDxsaW5lPjI5PC9saW5lPgorICAgIDxwcm9ibGVtX2NsYXNzIHNldmVyaXR5PSJXQVJOSU5HIiBhdHRyaWJ1dGVfa2V5PSJXQVJOSU5HX0FUVFJJQlVURVMiPkBOb3ROdWxsL0BOdWxsYWJsZSBwcm9ibGVtczwvcHJvYmxlbV9jbGFzcz4KKyAgICA8ZGVzY3JpcHRpb24+Q29uc3RydWN0b3IgcGFyYW1ldGVyIGZvciBATm90TnVsbCBmaWVsZCBtaWdodCBiZSBhbm5vdGF0ZWQgQE5vdE51bGwgaXRzZWxmPC9kZXNjcmlwdGlvbj4KKyAgPC9wcm9ibGVtPgorCisgIDxwcm9ibGVtPgorICAgIDxmaWxlPlRlc3QuamF2YTwvZmlsZT4KKyAgICA8bGluZT42MzwvbGluZT4KKyAgICA8cHJvYmxlbV9jbGFzcyBzZXZlcml0eT0iV0FSTklORyIgYXR0cmlidXRlX2tleT0iV0FSTklOR19BVFRSSUJVVEVTIj5ATm90TnVsbC9ATnVsbGFibGUgcHJvYmxlbXM8L3Byb2JsZW1fY2xhc3M+CisgICAgPGRlc2NyaXB0aW9uPkNvbnN0cnVjdG9yIHBhcmFtZXRlciBmb3IgQE5vdE51bGwgZmllbGQgbWlnaHQgYmUgYW5ub3RhdGVkIEBOb3ROdWxsIGl0c2VsZjwvZGVzY3JpcHRpb24+CisgIDwvcHJvYmxlbT4KKworCis8L3Byb2JsZW1zPgpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vbnVsbGFibGVQcm9ibGVtcy9nZXR0ZXJTZXR0ZXJQcm9ibGVtcy9zcmMvVGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vbnVsbGFibGVQcm9ibGVtcy9nZXR0ZXJTZXR0ZXJQcm9ibGVtcy9zcmMvVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZmYzQ3YjQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9udWxsYWJsZVByb2JsZW1zL2dldHRlclNldHRlclByb2JsZW1zL3NyYy9UZXN0LmphdmEKQEAgLTAsMCArMSw2NyBAQAoraW1wb3J0IG9yZy5qZXRicmFpbnMuYW5ub3RhdGlvbnMuTm90TnVsbDsKKworY2xhc3MgQiB7CisgICAgIEBOb3ROdWxsCisgICAgIEIgYjsKKworICAgIHB1YmxpYyBCIGdldEIoKSB7CisgICAgICAgIHJldHVybiBiOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNldEIoQiBiKSB7CisgICAgICAgIHRoaXMuYiA9IGI7CisgICAgfQorCisgICAgICAgIEBOb3ROdWxsCisgICAgICAgIHByaXZhdGUgU3RyaW5nIGJ1ZyA9ICJ0cnVlIjsKKworICAgICAgICBwdWJsaWMgYm9vbGVhbiBnZXRCdWcoKSB7CisgICAgICAgICAgICByZXR1cm4gQm9vbGVhbi52YWx1ZU9mKGJ1Zyk7CisgICAgICAgIH0KK30KK2NsYXNzIEMgeworICBATm90TnVsbCBDIGM7CisKKyAgQyhDIGMpIHsKKyAgICB0aGlzLmMgPSBjOworICB9CisKKyAgQyhATnVsbGFibGUgQyBjLCBpbnQgaSkgeworICAgIHRoaXMuYyA9IGM7CisgIH0KKworICBATnVsbGFibGUKKyAgcHVibGljIEMgZ2V0QygpIHsKKyAgICByZXR1cm4gYzsKKyAgfQorCisgIHB1YmxpYyB2b2lkIHNldEMoQE51bGxhYmxlIEMgYykgeworICAgIHRoaXMuYyA9IGM7CisgIH0KKworICBATm90TnVsbCBDIGMxOworICBAb3JnLmpldGJyYWlucy5hbm5vdGF0aW9ucy5OdWxsYWJsZQorICBwdWJsaWMgQyBnZXRDMSgpIHsKKyAgICBpZiAoYzEgIT0gbnVsbCkgeworICAgICAgcmV0dXJuIG51bGw7CisgICAgfQorICAgIHJldHVybiBjMTsKKyAgfQorfQorCitjbGFzcyBEIHsKKyAgICBATnVsbGFibGUgTG9uZyBteUw7CisKKyAgICBEKGxvbmcgbCkgeworICAgICAgbXlMID0gbDsKKyAgICB9Cit9CisKK2NsYXNzIEUgeworICBmaW5hbCBATm90TnVsbCBDIGM7CisKKyAgRShDIGMpIHsKKyAgICB0aGlzLmMgPSBjOworICB9CisKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9udWxsYWJsZVByb2JsZW1zL2pkazE0L2V4cGVjdGVkLnhtbCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL251bGxhYmxlUHJvYmxlbXMvamRrMTQvZXhwZWN0ZWQueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ3MDRkNTgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9udWxsYWJsZVByb2JsZW1zL2pkazE0L2V4cGVjdGVkLnhtbApAQCAtMCwwICsxLDQgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8cHJvYmxlbXM+Cis8L3Byb2JsZW1zPgorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9udWxsYWJsZVByb2JsZW1zL2pkazE0L3NyYy9UZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9udWxsYWJsZVByb2JsZW1zL2pkazE0L3NyYy9UZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTE0MDNjYwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL251bGxhYmxlUHJvYmxlbXMvamRrMTQvc3JjL1Rlc3QuamF2YQpAQCAtMCwwICsxLDI2IEBACitpbXBvcnQgb3JnLmpldGJyYWlucy5hbm5vdGF0aW9ucy5Ob3ROdWxsOworaW1wb3J0IG9yZy5qZXRicmFpbnMuYW5ub3RhdGlvbnMuTnVsbGFibGU7CisKK2NsYXNzIEIgeworICAgIHB1YmxpYyB2b2lkIGYoQE5vdE51bGwgU3RyaW5nIHApe30KKyAgICBATm90TnVsbAorICAgIHB1YmxpYyBTdHJpbmcgbm4oQE51bGxhYmxlIFN0cmluZyBwYXJhbSkgeworICAgICAgICByZXR1cm4gIiI7CisgICAgfQorfQorICAgICAgICAgCitwdWJsaWMgY2xhc3MgWSBleHRlbmRzIEIgeworICAgIEBOb3ROdWxsIEBOdWxsYWJsZSBTdHJpbmcgczsKKyAgICBwdWJsaWMgdm9pZCBmKFN0cmluZyBwKXt9CisgICAgICAgCisgICAgICAgICAgCisgICAgcHVibGljIFN0cmluZyBubihATm90TnVsbCBTdHJpbmcgcGFyYW0pIHsgCisgICAgICAgIHJldHVybiAiIjsKKyAgICB9CisgICAgdm9pZCBwKEBOb3ROdWxsIEBOdWxsYWJsZSBTdHJpbmcgcDIpe30KKworCisgICAgQE51bGxhYmxlIGludCBmOworICAgIEBOb3ROdWxsIHZvaWQgdmYoKXt9CisgICAgdm9pZCB0KEBOb3ROdWxsIGRvdWJsZSBkKXt9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9udWxsYWJsZVByb2JsZW1zL251bGxhYmxlRmllbGROb3RudWxsUGFyYW0vZXhwZWN0ZWQueG1sIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vbnVsbGFibGVQcm9ibGVtcy9udWxsYWJsZUZpZWxkTm90bnVsbFBhcmFtL2V4cGVjdGVkLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MDc1ODJlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vbnVsbGFibGVQcm9ibGVtcy9udWxsYWJsZUZpZWxkTm90bnVsbFBhcmFtL2V4cGVjdGVkLnhtbApAQCAtMCwwICsxLDkgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8cHJvYmxlbXM+CisgIDxwcm9ibGVtPgorICAgIDxmaWxlPlRlc3QuamF2YTwvZmlsZT4KKyAgICA8bGluZT44PC9saW5lPgorICAgIDxkZXNjcmlwdGlvbj5Db25zdHJ1Y3RvciBwYXJhbWV0ZXIgZm9yIEBOdWxsYWJsZSBmaWVsZCBpcyBhbm5vdGF0ZWQgQE5vdE51bGw8L2Rlc2NyaXB0aW9uPgorICA8L3Byb2JsZW0+Cis8L3Byb2JsZW1zPgorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9udWxsYWJsZVByb2JsZW1zL251bGxhYmxlRmllbGROb3RudWxsUGFyYW0vc3JjL1Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL251bGxhYmxlUHJvYmxlbXMvbnVsbGFibGVGaWVsZE5vdG51bGxQYXJhbS9zcmMvVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVjZWJhYjcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9udWxsYWJsZVByb2JsZW1zL251bGxhYmxlRmllbGROb3RudWxsUGFyYW0vc3JjL1Rlc3QuamF2YQpAQCAtMCwwICsxLDIxIEBACitpbXBvcnQgb3JnLmpldGJyYWlucy5hbm5vdGF0aW9ucy4qOworCitjbGFzcyBUZXN0IHsKKyAgICAgQE51bGxhYmxlIHByaXZhdGUgZmluYWwgU3RyaW5nIGJhc2VGaWxlOworICAgICBATnVsbGFibGUgcHJpdmF0ZSBmaW5hbCBTdHJpbmcgYmFzZUZpbGUxOworCisKKyAgICAgcHVibGljIFRlc3QoQE5vdE51bGwgU3RyaW5nIGJhc2VGaWxlKSB7CisgICAgICAgICB0aGlzLmJhc2VGaWxlID0gYmFzZUZpbGU7CisgICAgICAgICB0aGlzLmJhc2VGaWxlMSA9IG51bGw7CisgICAgIH0KKworICAgICBwdWJsaWMgVGVzdChATm90TnVsbCBTdHJpbmcgYmFzZUZpbGUxLCBib29sZWFuIGEpIHsKKyAgICAgICAgIHRoaXMuYmFzZUZpbGUxID0gYmFzZUZpbGUxOworICAgICAgICAgaWYgKGJhc2VGaWxlMS5jb250YWlucygiZm9vIikpIHsKKyAgICAgICAgICAgdGhpcy5iYXNlRmlsZSA9IG51bGw7CisgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICB0aGlzLmJhc2VGaWxlID0gbnVsbDsKKyAgICAgICAgIH0KKyAgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL251bGxhYmxlUHJvYmxlbXMvb3ZlcnJpZGRlbk1ldGhvZHMvZXhwZWN0ZWQueG1sIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vbnVsbGFibGVQcm9ibGVtcy9vdmVycmlkZGVuTWV0aG9kcy9leHBlY3RlZC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWMxZjdjZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL251bGxhYmxlUHJvYmxlbXMvb3ZlcnJpZGRlbk1ldGhvZHMvZXhwZWN0ZWQueG1sCkBAIC0wLDAgKzEsNDMgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8cHJvYmxlbXM+Cis8cHJvYmxlbT4KKyAgPGZpbGU+VGVzdC5qYXZhPC9maWxlPgorICA8bGluZT4xODwvbGluZT4KKyAgPHByb2JsZW1fY2xhc3Mgc2V2ZXJpdHk9IldBUk5JTkciIGF0dHJpYnV0ZV9rZXk9IldBUk5JTkdfQVRUUklCVVRFUyI+QE5vdE51bGwvQE51bGxhYmxlIHByb2JsZW1zPC9wcm9ibGVtX2NsYXNzPgorICA8ZGVzY3JpcHRpb24+Tm90IGFubm90YXRlZCBtZXRob2Qgb3ZlcnJpZGVzIG1ldGhvZCBhbm5vdGF0ZWQgd2l0aCBATm90TnVsbDwvZGVzY3JpcHRpb24+Cis8L3Byb2JsZW0+CisKKzxwcm9ibGVtPgorICA8ZmlsZT5UZXN0LmphdmE8L2ZpbGU+CisgIDxsaW5lPjE4PC9saW5lPgorICA8cHJvYmxlbV9jbGFzcyBzZXZlcml0eT0iV0FSTklORyIgYXR0cmlidXRlX2tleT0iV0FSTklOR19BVFRSSUJVVEVTIj5ATm90TnVsbC9ATnVsbGFibGUgcHJvYmxlbXM8L3Byb2JsZW1fY2xhc3M+CisgIDxkZXNjcmlwdGlvbj5Ob3QgYW5ub3RhdGVkIHBhcmFtZXRlciBvdmVycmlkZXMgQE5vdE51bGwgcGFyYW1ldGVyPC9kZXNjcmlwdGlvbj4KKzwvcHJvYmxlbT4KKworPHByb2JsZW0+CisgIDxmaWxlPlRlc3QuamF2YTwvZmlsZT4KKyAgPGxpbmU+NTwvbGluZT4KKyAgPHByb2JsZW1fY2xhc3Mgc2V2ZXJpdHk9IldBUk5JTkciIGF0dHJpYnV0ZV9rZXk9IldBUk5JTkdfQVRUUklCVVRFUyI+QE5vdE51bGwvQE51bGxhYmxlIHByb2JsZW1zPC9wcm9ibGVtX2NsYXNzPgorICA8ZGVzY3JpcHRpb24+T3ZlcnJpZGRlbiBtZXRob2RzIGFyZSBub3QgYW5ub3RhdGVkPC9kZXNjcmlwdGlvbj4KKzwvcHJvYmxlbT4KKworPHByb2JsZW0+CisgIDxmaWxlPlRlc3QuamF2YTwvZmlsZT4KKyAgPGxpbmU+NjwvbGluZT4KKyAgPHByb2JsZW1fY2xhc3Mgc2V2ZXJpdHk9IldBUk5JTkciIGF0dHJpYnV0ZV9rZXk9IldBUk5JTkdfQVRUUklCVVRFUyI+QE5vdE51bGwvQE51bGxhYmxlIHByb2JsZW1zPC9wcm9ibGVtX2NsYXNzPgorICA8ZGVzY3JpcHRpb24+T3ZlcnJpZGRlbiBtZXRob2QgcGFyYW1ldGVycyBhcmUgbm90IGFubm90YXRlZDwvZGVzY3JpcHRpb24+Cis8L3Byb2JsZW0+CisKKzxwcm9ibGVtPgorICA8ZmlsZT5UZXN0LmphdmE8L2ZpbGU+CisgIDxsaW5lPjEyPC9saW5lPgorICA8cHJvYmxlbV9jbGFzcyBzZXZlcml0eT0iV0FSTklORyIgYXR0cmlidXRlX2tleT0iV0FSTklOR19BVFRSSUJVVEVTIj5ATm90TnVsbC9ATnVsbGFibGUgcHJvYmxlbXM8L3Byb2JsZW1fY2xhc3M+CisgIDxkZXNjcmlwdGlvbj5Ob3QgYW5ub3RhdGVkIG1ldGhvZCBvdmVycmlkZXMgbWV0aG9kIGFubm90YXRlZCB3aXRoIEBOb3ROdWxsPC9kZXNjcmlwdGlvbj4KKzwvcHJvYmxlbT4KKworPHByb2JsZW0+CisgIDxmaWxlPlRlc3QuamF2YTwvZmlsZT4KKyAgPGxpbmU+MTI8L2xpbmU+CisgIDxwcm9ibGVtX2NsYXNzIHNldmVyaXR5PSJXQVJOSU5HIiBhdHRyaWJ1dGVfa2V5PSJXQVJOSU5HX0FUVFJJQlVURVMiPkBOb3ROdWxsL0BOdWxsYWJsZSBwcm9ibGVtczwvcHJvYmxlbV9jbGFzcz4KKyAgPGRlc2NyaXB0aW9uPk5vdCBhbm5vdGF0ZWQgcGFyYW1ldGVyIG92ZXJyaWRlcyBATm90TnVsbCBwYXJhbWV0ZXI8L2Rlc2NyaXB0aW9uPgorPC9wcm9ibGVtPjwvcHJvYmxlbXM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vbnVsbGFibGVQcm9ibGVtcy9vdmVycmlkZGVuTWV0aG9kcy9zcmMvVGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vbnVsbGFibGVQcm9ibGVtcy9vdmVycmlkZGVuTWV0aG9kcy9zcmMvVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU0NGViOGMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9udWxsYWJsZVByb2JsZW1zL292ZXJyaWRkZW5NZXRob2RzL3NyYy9UZXN0LmphdmEKQEAgLTAsMCArMSw1MyBAQAoraW1wb3J0IG9yZy5qZXRicmFpbnMuYW5ub3RhdGlvbnMuTm90TnVsbDsKK2ltcG9ydCBvcmcuamV0YnJhaW5zLmFubm90YXRpb25zLk51bGxhYmxlOworCithYnN0cmFjdCBjbGFzcyBQMiB7CisgICAgQE5vdE51bGwKKyAgICBTdHJpbmcgZm9vKEBOb3ROdWxsIFAgcCkgeworICAgICAgICByZXR1cm4gIiI7CisgICAgfQorfQorCitjbGFzcyBQUFAgZXh0ZW5kcyBQMiB7CisgICAgU3RyaW5nIGZvbyhQIHApIHsKKyAgICAgICAgcmV0dXJuIHN1cGVyLmZvbyhwKTsKKyAgICB9Cit9CitjbGFzcyBQUFAyIGV4dGVuZHMgUDIgeworCisgICAgU3RyaW5nIGZvbyhQIHApIHsKKyAgICAgICAgcmV0dXJuIHN1cGVyLmZvbyhwKTsKKyAgICB9Cit9CisKKy8vLy8vLy8gIGluIGxpYnJhcnkKK2ludGVyZmFjZSBGb28geworICAgIEBOb3ROdWxsCisgICAgU3RyaW5nIGdldFRpdGxlKCk7Cit9CitjbGFzcyBGb29JbXBsIGV4dGVuZHMgamF2YS5hd3QuRnJhbWUgaW1wbGVtZW50cyBGb28geworLy8gICAgcHVibGljIFN0cmluZyBnZXRUaXRsZSgpIHsKKy8vICAgICAgICByZXR1cm4gc3VwZXIuZ2V0VGl0bGUoKTsgICAgLy9UbyBjaGFuZ2UgYm9keSBvZiBvdmVycmlkZGVuIG1ldGhvZHMgdXNlIEZpbGUgfCBTZXR0aW5ncyB8IEZpbGUgVGVtcGxhdGVzLgorLy8gICAgfQorfQorCisKK2ludGVyZmFjZSBJMSB7CisgIEBOdWxsYWJsZQorICBPYmplY3QgZm9vKCk7Cit9CisKK2ludGVyZmFjZSBJMiBleHRlbmRzIEkxIHsKKyAgQE5vdE51bGwKKyAgT2JqZWN0IGZvbygpOworfQorCitjbGFzcyBBIGltcGxlbWVudHMgSTEgeworICBAT3ZlcnJpZGUKKyAgcHVibGljIE9iamVjdCBmb28oKSB7CisgICAgLy8gcmV0dXJucyBzb21ldGhpbmcKKyAgfQorfQorCitjbGFzcyBCIGV4dGVuZHMgQSBpbXBsZW1lbnRzIEkyIHsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9udWxsYWJsZVByb2JsZW1zL3Byb2JsZW1zL2V4cGVjdGVkLnhtbCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL251bGxhYmxlUHJvYmxlbXMvcHJvYmxlbXMvZXhwZWN0ZWQueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkzNDZkMzcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9udWxsYWJsZVByb2JsZW1zL3Byb2JsZW1zL2V4cGVjdGVkLnhtbApAQCAtMCwwICsxLDE2OSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxwcm9ibGVtcz4KKzxwcm9ibGVtPgorICA8ZmlsZT5UZXN0LmphdmE8L2ZpbGU+CisgIDxsaW5lPjE0PC9saW5lPgorICA8bWV0aG9kPgorICAgIDxuYW1lPnZvaWQgZihTdHJpbmcgcCk8L25hbWU+CisgICAgPGRpc3BsYXlfbmFtZT5mKFN0cmluZyk8L2Rpc3BsYXlfbmFtZT4KKyAgICA8cGFja2FnZT4mbHQ7ZGVmYXVsdCZndDs8L3BhY2thZ2U+CisgICAgPGNsYXNzPgorICAgICAgPG5hbWU+WTwvbmFtZT4KKyAgICAgIDxkaXNwbGF5X25hbWU+WTwvZGlzcGxheV9uYW1lPgorICAgIDwvY2xhc3M+CisgIDwvbWV0aG9kPgorICA8ZGVzY3JpcHRpb24+Tm90IGFubm90YXRlZCBwYXJhbWV0ZXIgb3ZlcnJpZGVzIEBOb3ROdWxsIHBhcmFtZXRlcjwvZGVzY3JpcHRpb24+Cis8L3Byb2JsZW0+CisKKworPHByb2JsZW0+CisgIDxmaWxlPlRlc3QuamF2YTwvZmlsZT4KKyAgPGxpbmU+MTc8L2xpbmU+CisgIDx0ZXh0X3JhbmdlIHN0YXJ0PSIzNjEiIGVuZD0iMzYzIiAvPgorICA8bWV0aG9kPgorICAgIDxuYW1lPlN0cmluZyBubihTdHJpbmcgcGFyYW0pPC9uYW1lPgorICAgIDxkaXNwbGF5X25hbWU+bm4oU3RyaW5nKTwvZGlzcGxheV9uYW1lPgorICAgIDxwYWNrYWdlPiZsdDtkZWZhdWx0Jmd0OzwvcGFja2FnZT4KKyAgICA8Y2xhc3M+CisgICAgICA8bmFtZT5ZPC9uYW1lPgorICAgICAgPGRpc3BsYXlfbmFtZT5ZPC9kaXNwbGF5X25hbWU+CisgICAgPC9jbGFzcz4KKyAgPC9tZXRob2Q+CisgIDxkZXNjcmlwdGlvbj5Ob3QgYW5ub3RhdGVkIG1ldGhvZCBvdmVycmlkZXMgbWV0aG9kIGFubm90YXRlZCB3aXRoIEBOb3ROdWxsPC9kZXNjcmlwdGlvbj4KKzwvcHJvYmxlbT4KKworCis8cHJvYmxlbT4KKyAgPGZpbGU+VGVzdC5qYXZhPC9maWxlPgorICA8bGluZT4xNzwvbGluZT4KKyAgPHRleHRfcmFuZ2Ugc3RhcnQ9IjM4MCIgZW5kPSIzODUiIC8+CisgIDxtZXRob2Q+CisgICAgPG5hbWU+U3RyaW5nIG5uKFN0cmluZyBwYXJhbSk8L25hbWU+CisgICAgPGRpc3BsYXlfbmFtZT5ubihTdHJpbmcpPC9kaXNwbGF5X25hbWU+CisgICAgPHBhY2thZ2U+Jmx0O2RlZmF1bHQmZ3Q7PC9wYWNrYWdlPgorICAgIDxjbGFzcz4KKyAgICAgIDxuYW1lPlk8L25hbWU+CisgICAgICA8ZGlzcGxheV9uYW1lPlk8L2Rpc3BsYXlfbmFtZT4KKyAgICA8L2NsYXNzPgorICA8L21ldGhvZD4KKyAgPGRlc2NyaXB0aW9uPlBhcmFtZXRlciBhbm5vdGF0ZWQgQE5vbk51bGwgbXVzdCBub3Qgb3ZlcnJpZGUgQE51bGxhYmxlIHBhcmFtZXRlcjwvZGVzY3JpcHRpb24+Cis8L3Byb2JsZW0+CisKKworPHByb2JsZW0+CisgIDxmaWxlPlRlc3QuamF2YTwvZmlsZT4KKyAgPGxpbmU+MTM8L2xpbmU+CisgIDx0ZXh0X3JhbmdlIHN0YXJ0PSIyOTEiIGVuZD0iMjkyIiAvPgorICA8ZmllbGQ+CisgICAgPG5hbWU+U3RyaW5nIHM8L25hbWU+CisgICAgPGRpc3BsYXlfbmFtZT5zPC9kaXNwbGF5X25hbWU+CisgICAgPHBhY2thZ2U+Jmx0O2RlZmF1bHQmZ3Q7PC9wYWNrYWdlPgorICAgIDxjbGFzcz4KKyAgICAgIDxuYW1lPlk8L25hbWU+CisgICAgICA8ZGlzcGxheV9uYW1lPlk8L2Rpc3BsYXlfbmFtZT4KKyAgICA8L2NsYXNzPgorICA8L2ZpZWxkPgorICA8ZGVzY3JpcHRpb24+Q2Fubm90IGFubm90YXRlIHdpdGggYm90aCBATnVsbGFibGUgYW5kIEBOb3ROdWxsPC9kZXNjcmlwdGlvbj4KKworPC9wcm9ibGVtPgorICA8cHJvYmxlbT4KKyAgICA8ZmlsZT5UZXN0LmphdmE8L2ZpbGU+CisgICAgPGxpbmU+MTM8L2xpbmU+CisgICAgPGZpZWxkPgorICAgICAgPG5hbWU+U3RyaW5nIHM8L25hbWU+CisgICAgICA8ZGlzcGxheV9uYW1lPnM8L2Rpc3BsYXlfbmFtZT4KKyAgICAgIDxwYWNrYWdlPiZsdDtkZWZhdWx0Jmd0OzwvcGFja2FnZT4KKyAgICAgIDxjbGFzcz4KKyAgICAgICAgPG5hbWU+WTwvbmFtZT4KKyAgICAgICAgPGRpc3BsYXlfbmFtZT5ZPC9kaXNwbGF5X25hbWU+CisgICAgICA8L2NsYXNzPgorICAgIDwvZmllbGQ+CisgICAgPHByb2JsZW1fY2xhc3Mgc2V2ZXJpdHk9IldBUk5JTkciIGF0dHJpYnV0ZV9rZXk9IldBUk5JTkdfQVRUUklCVVRFUyI+QE5vdE51bGwvQE51bGxhYmxlIHByb2JsZW1zPC9wcm9ibGVtX2NsYXNzPgorICAgIDxkZXNjcmlwdGlvbj5DYW5ub3QgYW5ub3RhdGUgd2l0aCBib3RoIEBOdWxsYWJsZSBhbmQgQE5vdE51bGw8L2Rlc2NyaXB0aW9uPgorICA8L3Byb2JsZW0+CisKKworPHByb2JsZW0+CisgIDxmaWxlPlRlc3QuamF2YTwvZmlsZT4KKyAgPGxpbmU+MjA8L2xpbmU+CisgIDx0ZXh0X3JhbmdlIHN0YXJ0PSI0NTIiIGVuZD0iNDU0IiAvPgorICA8bWV0aG9kPgorICAgIDxuYW1lPnZvaWQgcChTdHJpbmcgcDIpPC9uYW1lPgorICAgIDxkaXNwbGF5X25hbWU+cChTdHJpbmcpPC9kaXNwbGF5X25hbWU+CisgICAgPHBhY2thZ2U+Jmx0O2RlZmF1bHQmZ3Q7PC9wYWNrYWdlPgorICAgIDxjbGFzcz4KKyAgICAgIDxuYW1lPlk8L25hbWU+CisgICAgICA8ZGlzcGxheV9uYW1lPlk8L2Rpc3BsYXlfbmFtZT4KKyAgICA8L2NsYXNzPgorICA8L21ldGhvZD4KKyAgPGRlc2NyaXB0aW9uPkNhbm5vdCBhbm5vdGF0ZSB3aXRoIGJvdGggQE51bGxhYmxlIGFuZCBATm90TnVsbDwvZGVzY3JpcHRpb24+Cis8L3Byb2JsZW0+CisKKyAgPHByb2JsZW0+CisgICAgPGZpbGU+VGVzdC5qYXZhPC9maWxlPgorICAgIDxsaW5lPjIzPC9saW5lPgorICAgIDx0ZXh0X3JhbmdlIHN0YXJ0PSI0NzYiIGVuZD0iNDc3IiAvPgorICAgIDxmaWVsZD4KKyAgICAgIDxuYW1lPmludCBmPC9uYW1lPgorICAgICAgPGRpc3BsYXlfbmFtZT5mPC9kaXNwbGF5X25hbWU+CisgICAgICA8cGFja2FnZT4mbHQ7ZGVmYXVsdCZndDs8L3BhY2thZ2U+CisgICAgICA8Y2xhc3M+CisgICAgICAgIDxuYW1lPlk8L25hbWU+CisgICAgICAgIDxkaXNwbGF5X25hbWU+WTwvZGlzcGxheV9uYW1lPgorICAgICAgPC9jbGFzcz4KKyAgICA8L2ZpZWxkPgorICAgIDxkZXNjcmlwdGlvbj5QcmltaXRpdmUgdHlwZSBtZW1iZXJzIGNhbm5vdCBiZSBOdWxsYWJsZS9Ob3ROdWxsIGFubm90YXRlZDwvZGVzY3JpcHRpb24+CisgIDwvcHJvYmxlbT4KKworICA8cHJvYmxlbT4KKyAgICA8ZmlsZT5UZXN0LmphdmE8L2ZpbGU+CisgICAgPGxpbmU+MjQ8L2xpbmU+CisgICAgPHRleHRfcmFuZ2Ugc3RhcnQ9IjQ5MiIgZW5kPSI0OTYiIC8+CisgICAgPG1ldGhvZD4KKyAgICAgIDxuYW1lPnZvaWQgdmYoKTwvbmFtZT4KKyAgICAgIDxkaXNwbGF5X25hbWU+dmYoKTwvZGlzcGxheV9uYW1lPgorICAgICAgPHBhY2thZ2U+Jmx0O2RlZmF1bHQmZ3Q7PC9wYWNrYWdlPgorICAgICAgPGNsYXNzPgorICAgICAgICA8bmFtZT5ZPC9uYW1lPgorICAgICAgICA8ZGlzcGxheV9uYW1lPlk8L2Rpc3BsYXlfbmFtZT4KKyAgICAgIDwvY2xhc3M+CisgICAgPC9tZXRob2Q+CisgICAgPGRlc2NyaXB0aW9uPlByaW1pdGl2ZSB0eXBlIG1lbWJlcnMgY2Fubm90IGJlIE51bGxhYmxlL05vdE51bGwgYW5ub3RhdGVkPC9kZXNjcmlwdGlvbj4KKyAgPC9wcm9ibGVtPgorCisKKyAgPHByb2JsZW0+CisgICAgPGZpbGU+VGVzdC5qYXZhPC9maWxlPgorICAgIDxsaW5lPjI1PC9saW5lPgorICAgIDx0ZXh0X3JhbmdlIHN0YXJ0PSI1MzEiIGVuZD0iNTMyIiAvPgorICAgIDxtZXRob2Q+CisgICAgICA8bmFtZT52b2lkIHQoZG91YmxlIGQpPC9uYW1lPgorICAgICAgPGRpc3BsYXlfbmFtZT50KGRvdWJsZSk8L2Rpc3BsYXlfbmFtZT4KKyAgICAgIDxwYWNrYWdlPiZsdDtkZWZhdWx0Jmd0OzwvcGFja2FnZT4KKyAgICAgIDxjbGFzcz4KKyAgICAgICAgPG5hbWU+WTwvbmFtZT4KKyAgICAgICAgPGRpc3BsYXlfbmFtZT5ZPC9kaXNwbGF5X25hbWU+CisgICAgICA8L2NsYXNzPgorICAgIDwvbWV0aG9kPgorICAgIDxkZXNjcmlwdGlvbj5QcmltaXRpdmUgdHlwZSBtZW1iZXJzIGNhbm5vdCBiZSBOdWxsYWJsZS9Ob3ROdWxsIGFubm90YXRlZDwvZGVzY3JpcHRpb24+CisgIDwvcHJvYmxlbT4KKworCisgIDxwcm9ibGVtPgorICAgIDxmaWxlPlRlc3QuamF2YTwvZmlsZT4KKyAgICA8bGluZT4yMDwvbGluZT4KKyAgICA8bWV0aG9kPgorICAgICAgPG5hbWU+dm9pZCBwKFN0cmluZyBwMik8L25hbWU+CisgICAgICA8bmFtZT5wKFN0cmluZyk8L25hbWU+CisgICAgICA8cGFja2FnZT4mbHQ7ZGVmYXVsdCZndDs8L3BhY2thZ2U+CisgICAgICA8Y2xhc3M+CisgICAgICAgIDxuYW1lPlk8L25hbWU+CisgICAgICAgIDxkaXNwbGF5X25hbWU+WTwvZGlzcGxheV9uYW1lPgorICAgICAgPC9jbGFzcz4KKyAgICA8L21ldGhvZD4KKyAgICA8cHJvYmxlbV9jbGFzcyBzZXZlcml0eT0iV0FSTklORyIgYXR0cmlidXRlX2tleT0iV0FSTklOR19BVFRSSUJVVEVTIj5ATm90TnVsbC9ATnVsbGFibGUgcHJvYmxlbXM8L3Byb2JsZW1fY2xhc3M+CisgICAgPGRlc2NyaXB0aW9uPkNhbm5vdCBhbm5vdGF0ZSB3aXRoIGJvdGggQE51bGxhYmxlIGFuZCBATm90TnVsbDwvZGVzY3JpcHRpb24+CisgIDwvcHJvYmxlbT4KKworPC9wcm9ibGVtcz4KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vbnVsbGFibGVQcm9ibGVtcy9wcm9ibGVtcy9zcmMvVGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vbnVsbGFibGVQcm9ibGVtcy9wcm9ibGVtcy9zcmMvVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmExNDAzY2MKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9udWxsYWJsZVByb2JsZW1zL3Byb2JsZW1zL3NyYy9UZXN0LmphdmEKQEAgLTAsMCArMSwyNiBAQAoraW1wb3J0IG9yZy5qZXRicmFpbnMuYW5ub3RhdGlvbnMuTm90TnVsbDsKK2ltcG9ydCBvcmcuamV0YnJhaW5zLmFubm90YXRpb25zLk51bGxhYmxlOworCitjbGFzcyBCIHsKKyAgICBwdWJsaWMgdm9pZCBmKEBOb3ROdWxsIFN0cmluZyBwKXt9CisgICAgQE5vdE51bGwKKyAgICBwdWJsaWMgU3RyaW5nIG5uKEBOdWxsYWJsZSBTdHJpbmcgcGFyYW0pIHsKKyAgICAgICAgcmV0dXJuICIiOworICAgIH0KK30KKyAgICAgICAgIAorcHVibGljIGNsYXNzIFkgZXh0ZW5kcyBCIHsKKyAgICBATm90TnVsbCBATnVsbGFibGUgU3RyaW5nIHM7CisgICAgcHVibGljIHZvaWQgZihTdHJpbmcgcCl7fQorICAgICAgIAorICAgICAgICAgIAorICAgIHB1YmxpYyBTdHJpbmcgbm4oQE5vdE51bGwgU3RyaW5nIHBhcmFtKSB7IAorICAgICAgICByZXR1cm4gIiI7CisgICAgfQorICAgIHZvaWQgcChATm90TnVsbCBATnVsbGFibGUgU3RyaW5nIHAyKXt9CisKKworICAgIEBOdWxsYWJsZSBpbnQgZjsKKyAgICBATm90TnVsbCB2b2lkIHZmKCl7fQorICAgIHZvaWQgdChATm90TnVsbCBkb3VibGUgZCl7fQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vbnVsbGFibGVQcm9ibGVtcy9wcm9ibGVtczIvZXhwZWN0ZWQueG1sIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vbnVsbGFibGVQcm9ibGVtcy9wcm9ibGVtczIvZXhwZWN0ZWQueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdjMDYwM2QKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9udWxsYWJsZVByb2JsZW1zL3Byb2JsZW1zMi9leHBlY3RlZC54bWwKQEAgLTAsMCArMSw4NSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxwcm9ibGVtcz4KKyAgPHByb2JsZW0+CisgICAgPGZpbGU+VGVzdC5qYXZhPC9maWxlPgorICAgIDxsaW5lPjIzPC9saW5lPgorICAgIDx0ZXh0X3JhbmdlIHN0YXJ0PSI1NTYiIGVuZD0iNTU3IiAvPgorICAgIDxtZXRob2Q+CisgICAgICA8bmFtZT5TdHJpbmcgZigpPC9uYW1lPgorICAgICAgPGRpc3BsYXlfbmFtZT5mKCk8L2Rpc3BsYXlfbmFtZT4KKyAgICAgIDxwYWNrYWdlPiZsdDtkZWZhdWx0Jmd0OzwvcGFja2FnZT4KKyAgICAgIDxjbGFzcz4KKyAgICAgICAgPG5hbWU+Q0M8L25hbWU+CisgICAgICAgIDxkaXNwbGF5X25hbWU+Q0M8L2Rpc3BsYXlfbmFtZT4KKyAgICAgIDwvY2xhc3M+CisgICAgPC9tZXRob2Q+CisgICAgPGRlc2NyaXB0aW9uPkNhbm5vdCBhbm5vdGF0ZSB3aXRoIGJvdGggQE51bGxhYmxlIGFuZCBATm90TnVsbDwvZGVzY3JpcHRpb24+CisgIDwvcHJvYmxlbT4KKyAgPHByb2JsZW0+CisgICAgPGZpbGU+VGVzdC5qYXZhPC9maWxlPgorICAgIDxsaW5lPjIzPC9saW5lPgorICAgIDxtZXRob2Q+CisgICAgICA8bmFtZT5TdHJpbmcgZigpPC9uYW1lPgorICAgICAgPG5hbWU+ZigpPC9uYW1lPgorICAgICAgPHBhY2thZ2U+Jmx0O2RlZmF1bHQmZ3Q7PC9wYWNrYWdlPgorICAgICAgPGNsYXNzPgorICAgICAgICA8bmFtZT5DQzwvbmFtZT4KKyAgICAgICAgPGRpc3BsYXlfbmFtZT5DQzwvZGlzcGxheV9uYW1lPgorICAgICAgPC9jbGFzcz4KKyAgICA8L21ldGhvZD4KKyAgICA8cHJvYmxlbV9jbGFzcyBzZXZlcml0eT0iV0FSTklORyIgYXR0cmlidXRlX2tleT0iV0FSTklOR19BVFRSSUJVVEVTIj5ATm90TnVsbC9ATnVsbGFibGUgcHJvYmxlbXM8L3Byb2JsZW1fY2xhc3M+CisgICAgPGRlc2NyaXB0aW9uPkNhbm5vdCBhbm5vdGF0ZSB3aXRoIGJvdGggQE51bGxhYmxlIGFuZCBATm90TnVsbDwvZGVzY3JpcHRpb24+CisgIDwvcHJvYmxlbT4KKworCisgIDxwcm9ibGVtPgorICAgIDxmaWxlPlRlc3QuamF2YTwvZmlsZT4KKyAgICA8bGluZT4xNjwvbGluZT4KKyAgICA8dGV4dF9yYW5nZSBzdGFydD0iMzY4IiBlbmQ9IjM3MyIgLz4KKyAgICA8bWV0aG9kPgorICAgICAgPG5hbWU+QyBnZXRDMigpPC9uYW1lPgorICAgICAgPGRpc3BsYXlfbmFtZT5nZXRDMigpPC9kaXNwbGF5X25hbWU+CisgICAgICA8cGFja2FnZT4mbHQ7ZGVmYXVsdCZndDs8L3BhY2thZ2U+CisgICAgICA8Y2xhc3M+CisgICAgICAgIDxuYW1lPkNDPC9uYW1lPgorICAgICAgICA8ZGlzcGxheV9uYW1lPkNDPC9kaXNwbGF5X25hbWU+CisgICAgICA8L2NsYXNzPgorICAgIDwvbWV0aG9kPgorICAgIDxkZXNjcmlwdGlvbj5Ob3QgYW5ub3RhdGVkIG1ldGhvZCBvdmVycmlkZXMgbWV0aG9kIGFubm90YXRlZCB3aXRoIEBOb3ROdWxsPC9kZXNjcmlwdGlvbj4KKyAgPC9wcm9ibGVtPgorCisKKyAgPHByb2JsZW0+CisgICAgPGZpbGU+VGVzdC5qYXZhPC9maWxlPgorICAgIDxsaW5lPjE4PC9saW5lPgorICAgIDx0ZXh0X3JhbmdlIHN0YXJ0PSI0MTciIGVuZD0iNDE4IiAvPgorICAgIDxtZXRob2Q+CisgICAgICA8bmFtZT52b2lkIGYxKEMgcCk8L25hbWU+CisgICAgICA8ZGlzcGxheV9uYW1lPmYxKEMpPC9kaXNwbGF5X25hbWU+CisgICAgICA8cGFja2FnZT4mbHQ7ZGVmYXVsdCZndDs8L3BhY2thZ2U+CisgICAgICA8Y2xhc3M+CisgICAgICAgIDxuYW1lPkNDPC9uYW1lPgorICAgICAgICA8ZGlzcGxheV9uYW1lPkNDPC9kaXNwbGF5X25hbWU+CisgICAgICA8L2NsYXNzPgorICAgIDwvbWV0aG9kPgorICAgIDxkZXNjcmlwdGlvbj5QYXJhbWV0ZXIgYW5ub3RhdGVkIEBOb25OdWxsIG11c3Qgbm90IG92ZXJyaWRlIEBOdWxsYWJsZSBwYXJhbWV0ZXI8L2Rlc2NyaXB0aW9uPgorICA8L3Byb2JsZW0+CisKKworICA8cHJvYmxlbT4KKyAgICA8ZmlsZT5UZXN0LmphdmE8L2ZpbGU+CisgICAgPGxpbmU+MTU8L2xpbmU+CisgICAgPHRleHRfcmFuZ2Ugc3RhcnQ9IjMzOCIgZW5kPSIzNDIiIC8+CisgICAgPG1ldGhvZD4KKyAgICAgIDxuYW1lPkMgZ2V0QygpPC9uYW1lPgorICAgICAgPGRpc3BsYXlfbmFtZT5nZXRDKCk8L2Rpc3BsYXlfbmFtZT4KKyAgICAgIDxwYWNrYWdlPiZsdDtkZWZhdWx0Jmd0OzwvcGFja2FnZT4KKyAgICAgIDxjbGFzcz4KKyAgICAgICAgPG5hbWU+Q0M8L25hbWU+CisgICAgICAgIDxkaXNwbGF5X25hbWU+Q0M8L2Rpc3BsYXlfbmFtZT4KKyAgICAgIDwvY2xhc3M+CisgICAgPC9tZXRob2Q+CisgICAgPGRlc2NyaXB0aW9uPk1ldGhvZCBhbm5vdGF0ZWQgd2l0aCBATnVsbGFibGUgbXVzdCBub3Qgb3ZlcnJpZGUgQE5vdE51bGwgbWV0aG9kPC9kZXNjcmlwdGlvbj4KKyAgPC9wcm9ibGVtPgorPC9wcm9ibGVtcz4KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vbnVsbGFibGVQcm9ibGVtcy9wcm9ibGVtczIvc3JjL1Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL251bGxhYmxlUHJvYmxlbXMvcHJvYmxlbXMyL3NyYy9UZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTZhMDVkYgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL251bGxhYmxlUHJvYmxlbXMvcHJvYmxlbXMyL3NyYy9UZXN0LmphdmEKQEAgLTAsMCArMSwyNCBAQAoraW1wb3J0IG9yZy5qZXRicmFpbnMuYW5ub3RhdGlvbnMuKjsKKworY2xhc3MgQyB7CisgIHB1YmxpYyBzdGF0aWMgQyBDID0gbnVsbDsKKyAgQE5vdE51bGwgcHVibGljIEMgZ2V0QygpIHtyZXR1cm4gQzt9CisgIEBOb3ROdWxsIHB1YmxpYyBDIGdldEMyKCkge3JldHVybiBDO30KKworICBwdWJsaWMgdm9pZCBmMShATnVsbGFibGUgQyBwKSB7fQorICBwdWJsaWMgdm9pZCBmMihATm90TnVsbCBDIHApIHt9CisgIHB1YmxpYyB2b2lkIGYzKEBOdWxsYWJsZSBDIHApIHt9CisgIHB1YmxpYyB2b2lkIGY0KEBOb3ROdWxsIEMgcCkge30KK30KKworY2xhc3MgQ0MgZXh0ZW5kcyBDIHsKKyAgQE51bGxhYmxlIHB1YmxpYyBDIGdldEMoKSB7cmV0dXJuIEM7fQorICBwdWJsaWMgQyBnZXRDMigpIHtyZXR1cm4gQzt9CisKKyAgcHVibGljIHZvaWQgZjEoQE5vdE51bGwgQyBwKSB7fQorICBwdWJsaWMgdm9pZCBmMihATm90TnVsbCBDIHApIHt9CisgIHB1YmxpYyB2b2lkIGYzKEBOdWxsYWJsZSBDIHApIHt9CisgIHB1YmxpYyB2b2lkIGY0KEBOdWxsYWJsZSBDIHApIHt9CisKKyAgQE51bGxhYmxlIEBOb3ROdWxsIFN0cmluZyBmKCkgeyByZXR1cm4gbnVsbDt9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9udW1lcmljT3ZlcmZsb3cvc2ltcGxlL2V4cGVjdGVkLnhtbCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL251bWVyaWNPdmVyZmxvdy9zaW1wbGUvZXhwZWN0ZWQueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc4ZDIyYmYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9udW1lcmljT3ZlcmZsb3cvc2ltcGxlL2V4cGVjdGVkLnhtbApAQCAtMCwwICsxLDY1MCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxwcm9ibGVtcz4KKyAgPHByb2JsZW0+CisgICAgPGZpbGU+Rm9vLmphdmE8L2ZpbGU+CisgICAgPGxpbmU+ODc8L2xpbmU+CisgICAgPGRlc2NyaXB0aW9uPk51bWVyaWMgb3ZlcmZsb3cgaW4gZXhwcmVzc2lvbjwvZGVzY3JpcHRpb24+CisgIDwvcHJvYmxlbT4KKworCisgIAorICA8cHJvYmxlbT4KKyAgICA8ZmlsZT5Gb28uamF2YTwvZmlsZT4KKyAgICA8bGluZT4xNjwvbGluZT4KKyAgICA8ZGVzY3JpcHRpb24+TnVtZXJpYyBvdmVyZmxvdyBpbiBleHByZXNzaW9uPC9kZXNjcmlwdGlvbj4KKyAgPC9wcm9ibGVtPgorCisKKyAgCisgIDxwcm9ibGVtPgorICAgIDxmaWxlPkZvby5qYXZhPC9maWxlPgorICAgIDxsaW5lPjE3PC9saW5lPgorICAgIAorICAgIDxkZXNjcmlwdGlvbj5OdW1lcmljIG92ZXJmbG93IGluIGV4cHJlc3Npb248L2Rlc2NyaXB0aW9uPgorICA8L3Byb2JsZW0+CisKKworICAKKyAgPHByb2JsZW0+CisgICAgPGZpbGU+Rm9vLmphdmE8L2ZpbGU+CisgICAgPGxpbmU+MTc8L2xpbmU+CisgICAgCisgICAgPGRlc2NyaXB0aW9uPk51bWVyaWMgb3ZlcmZsb3cgaW4gZXhwcmVzc2lvbjwvZGVzY3JpcHRpb24+CisgIDwvcHJvYmxlbT4KKworCisgIAorICA8cHJvYmxlbT4KKyAgICA8ZmlsZT5Gb28uamF2YTwvZmlsZT4KKyAgICA8bGluZT4xODwvbGluZT4KKyAgICAKKyAgICA8ZGVzY3JpcHRpb24+TnVtZXJpYyBvdmVyZmxvdyBpbiBleHByZXNzaW9uPC9kZXNjcmlwdGlvbj4KKyAgPC9wcm9ibGVtPgorCisKKyAgCisgIDxwcm9ibGVtPgorICAgIDxmaWxlPkZvby5qYXZhPC9maWxlPgorICAgIDxsaW5lPjE4PC9saW5lPgorICAgIAorICAgIDxkZXNjcmlwdGlvbj5OdW1lcmljIG92ZXJmbG93IGluIGV4cHJlc3Npb248L2Rlc2NyaXB0aW9uPgorICA8L3Byb2JsZW0+CisKKworICAKKyAgPHByb2JsZW0+CisgICAgPGZpbGU+Rm9vLmphdmE8L2ZpbGU+CisgICAgPGxpbmU+MTk8L2xpbmU+CisgICAgCisgICAgPGRlc2NyaXB0aW9uPk51bWVyaWMgb3ZlcmZsb3cgaW4gZXhwcmVzc2lvbjwvZGVzY3JpcHRpb24+CisgIDwvcHJvYmxlbT4KKworCisgIAorICA8cHJvYmxlbT4KKyAgICA8ZmlsZT5Gb28uamF2YTwvZmlsZT4KKyAgICA8bGluZT4xOTwvbGluZT4KKyAgICAKKyAgICA8ZGVzY3JpcHRpb24+TnVtZXJpYyBvdmVyZmxvdyBpbiBleHByZXNzaW9uPC9kZXNjcmlwdGlvbj4KKyAgPC9wcm9ibGVtPgorCisKKyAgCisgIDxwcm9ibGVtPgorICAgIDxmaWxlPkZvby5qYXZhPC9maWxlPgorICAgIDxsaW5lPjI1PC9saW5lPgorICAgIAorICAgIDxkZXNjcmlwdGlvbj5OdW1lcmljIG92ZXJmbG93IGluIGV4cHJlc3Npb248L2Rlc2NyaXB0aW9uPgorICA8L3Byb2JsZW0+CisKKworICAKKyAgPHByb2JsZW0+CisgICAgPGZpbGU+Rm9vLmphdmE8L2ZpbGU+CisgICAgPGxpbmU+Mjc8L2xpbmU+CisgICAgCisgICAgPGRlc2NyaXB0aW9uPk51bWVyaWMgb3ZlcmZsb3cgaW4gZXhwcmVzc2lvbjwvZGVzY3JpcHRpb24+CisgIDwvcHJvYmxlbT4KKworCisgIAorICA8cHJvYmxlbT4KKyAgICA8ZmlsZT5Gb28uamF2YTwvZmlsZT4KKyAgICA8bGluZT4yNzwvbGluZT4KKyAgICAKKyAgICA8ZGVzY3JpcHRpb24+TnVtZXJpYyBvdmVyZmxvdyBpbiBleHByZXNzaW9uPC9kZXNjcmlwdGlvbj4KKyAgPC9wcm9ibGVtPgorCisKKyAgCisgIDxwcm9ibGVtPgorICAgIDxmaWxlPkZvby5qYXZhPC9maWxlPgorICAgIDxsaW5lPjI4PC9saW5lPgorICAgIAorICAgIDxkZXNjcmlwdGlvbj5OdW1lcmljIG92ZXJmbG93IGluIGV4cHJlc3Npb248L2Rlc2NyaXB0aW9uPgorICA8L3Byb2JsZW0+CisKKworICAKKyAgPHByb2JsZW0+CisgICAgPGZpbGU+Rm9vLmphdmE8L2ZpbGU+CisgICAgPGxpbmU+Mjg8L2xpbmU+CisgICAgCisgICAgPGRlc2NyaXB0aW9uPk51bWVyaWMgb3ZlcmZsb3cgaW4gZXhwcmVzc2lvbjwvZGVzY3JpcHRpb24+CisgIDwvcHJvYmxlbT4KKworCisgIAorICA8cHJvYmxlbT4KKyAgICA8ZmlsZT5Gb28uamF2YTwvZmlsZT4KKyAgICA8bGluZT4yOTwvbGluZT4KKyAgICAKKyAgICA8ZGVzY3JpcHRpb24+TnVtZXJpYyBvdmVyZmxvdyBpbiBleHByZXNzaW9uPC9kZXNjcmlwdGlvbj4KKyAgPC9wcm9ibGVtPgorCisKKyAgCisgIDxwcm9ibGVtPgorICAgIDxmaWxlPkZvby5qYXZhPC9maWxlPgorICAgIDxsaW5lPjI5PC9saW5lPgorICAgIAorICAgIDxkZXNjcmlwdGlvbj5OdW1lcmljIG92ZXJmbG93IGluIGV4cHJlc3Npb248L2Rlc2NyaXB0aW9uPgorICA8L3Byb2JsZW0+CisKKworICAKKyAgPHByb2JsZW0+CisgICAgPGZpbGU+Rm9vLmphdmE8L2ZpbGU+CisgICAgPGxpbmU+MzA8L2xpbmU+CisgICAgCisgICAgPGRlc2NyaXB0aW9uPk51bWVyaWMgb3ZlcmZsb3cgaW4gZXhwcmVzc2lvbjwvZGVzY3JpcHRpb24+CisgIDwvcHJvYmxlbT4KKworCisgIAorICA8cHJvYmxlbT4KKyAgICA8ZmlsZT5Gb28uamF2YTwvZmlsZT4KKyAgICA8bGluZT4zMDwvbGluZT4KKyAgICAKKyAgICA8ZGVzY3JpcHRpb24+TnVtZXJpYyBvdmVyZmxvdyBpbiBleHByZXNzaW9uPC9kZXNjcmlwdGlvbj4KKyAgPC9wcm9ibGVtPgorCisKKyAgCisgIDxwcm9ibGVtPgorICAgIDxmaWxlPkZvby5qYXZhPC9maWxlPgorICAgIDxsaW5lPjM0PC9saW5lPgorICAgIAorICAgIDxkZXNjcmlwdGlvbj5OdW1lcmljIG92ZXJmbG93IGluIGV4cHJlc3Npb248L2Rlc2NyaXB0aW9uPgorICA8L3Byb2JsZW0+CisKKworICAKKyAgPHByb2JsZW0+CisgICAgPGZpbGU+Rm9vLmphdmE8L2ZpbGU+CisgICAgPGxpbmU+MzU8L2xpbmU+CisgICAgCisgICAgPGRlc2NyaXB0aW9uPk51bWVyaWMgb3ZlcmZsb3cgaW4gZXhwcmVzc2lvbjwvZGVzY3JpcHRpb24+CisgIDwvcHJvYmxlbT4KKworCisgIAorICA8cHJvYmxlbT4KKyAgICA8ZmlsZT5Gb28uamF2YTwvZmlsZT4KKyAgICA8bGluZT4zNTwvbGluZT4KKyAgICAKKyAgICA8ZGVzY3JpcHRpb24+TnVtZXJpYyBvdmVyZmxvdyBpbiBleHByZXNzaW9uPC9kZXNjcmlwdGlvbj4KKyAgPC9wcm9ibGVtPgorCisKKyAgCisgIDxwcm9ibGVtPgorICAgIDxmaWxlPkZvby5qYXZhPC9maWxlPgorICAgIDxsaW5lPjM2PC9saW5lPgorICAgIAorICAgIDxkZXNjcmlwdGlvbj5OdW1lcmljIG92ZXJmbG93IGluIGV4cHJlc3Npb248L2Rlc2NyaXB0aW9uPgorICA8L3Byb2JsZW0+CisKKworICAKKyAgPHByb2JsZW0+CisgICAgPGZpbGU+Rm9vLmphdmE8L2ZpbGU+CisgICAgPGxpbmU+MzY8L2xpbmU+CisgICAgCisgICAgPGRlc2NyaXB0aW9uPk51bWVyaWMgb3ZlcmZsb3cgaW4gZXhwcmVzc2lvbjwvZGVzY3JpcHRpb24+CisgIDwvcHJvYmxlbT4KKworCisgIAorICA8cHJvYmxlbT4KKyAgICA8ZmlsZT5Gb28uamF2YTwvZmlsZT4KKyAgICA8bGluZT4zNzwvbGluZT4KKyAgICAKKyAgICA8ZGVzY3JpcHRpb24+TnVtZXJpYyBvdmVyZmxvdyBpbiBleHByZXNzaW9uPC9kZXNjcmlwdGlvbj4KKyAgPC9wcm9ibGVtPgorCisKKyAgCisgIDxwcm9ibGVtPgorICAgIDxmaWxlPkZvby5qYXZhPC9maWxlPgorICAgIDxsaW5lPjM3PC9saW5lPgorICAgIAorICAgIDxkZXNjcmlwdGlvbj5OdW1lcmljIG92ZXJmbG93IGluIGV4cHJlc3Npb248L2Rlc2NyaXB0aW9uPgorICA8L3Byb2JsZW0+CisKKworICAKKyAgPHByb2JsZW0+CisgICAgPGZpbGU+Rm9vLmphdmE8L2ZpbGU+CisgICAgPGxpbmU+Mzg8L2xpbmU+CisgICAgCisgICAgPGRlc2NyaXB0aW9uPk51bWVyaWMgb3ZlcmZsb3cgaW4gZXhwcmVzc2lvbjwvZGVzY3JpcHRpb24+CisgIDwvcHJvYmxlbT4KKworCisgIAorICA8cHJvYmxlbT4KKyAgICA8ZmlsZT5Gb28uamF2YTwvZmlsZT4KKyAgICA8bGluZT4zODwvbGluZT4KKyAgICAKKyAgICA8ZGVzY3JpcHRpb24+TnVtZXJpYyBvdmVyZmxvdyBpbiBleHByZXNzaW9uPC9kZXNjcmlwdGlvbj4KKyAgPC9wcm9ibGVtPgorCisKKyAgCisgIDxwcm9ibGVtPgorICAgIDxmaWxlPkZvby5qYXZhPC9maWxlPgorICAgIDxsaW5lPjM5PC9saW5lPgorICAgIAorICAgIDxkZXNjcmlwdGlvbj5OdW1lcmljIG92ZXJmbG93IGluIGV4cHJlc3Npb248L2Rlc2NyaXB0aW9uPgorICA8L3Byb2JsZW0+CisKKworICAKKyAgPHByb2JsZW0+CisgICAgPGZpbGU+Rm9vLmphdmE8L2ZpbGU+CisgICAgPGxpbmU+Mzk8L2xpbmU+CisgICAgCisgICAgPGRlc2NyaXB0aW9uPk51bWVyaWMgb3ZlcmZsb3cgaW4gZXhwcmVzc2lvbjwvZGVzY3JpcHRpb24+CisgIDwvcHJvYmxlbT4KKworCisgIAorICA8cHJvYmxlbT4KKyAgICA8ZmlsZT5Gb28uamF2YTwvZmlsZT4KKyAgICA8bGluZT40MzwvbGluZT4KKyAgICAKKyAgICA8ZGVzY3JpcHRpb24+TnVtZXJpYyBvdmVyZmxvdyBpbiBleHByZXNzaW9uPC9kZXNjcmlwdGlvbj4KKyAgPC9wcm9ibGVtPgorCisKKyAgCisgIDxwcm9ibGVtPgorICAgIDxmaWxlPkZvby5qYXZhPC9maWxlPgorICAgIDxsaW5lPjQzPC9saW5lPgorICAgIAorICAgIDxkZXNjcmlwdGlvbj5OdW1lcmljIG92ZXJmbG93IGluIGV4cHJlc3Npb248L2Rlc2NyaXB0aW9uPgorICA8L3Byb2JsZW0+CisKKworICAKKyAgPHByb2JsZW0+CisgICAgPGZpbGU+Rm9vLmphdmE8L2ZpbGU+CisgICAgPGxpbmU+NDQ8L2xpbmU+CisgICAgCisgICAgPGRlc2NyaXB0aW9uPk51bWVyaWMgb3ZlcmZsb3cgaW4gZXhwcmVzc2lvbjwvZGVzY3JpcHRpb24+CisgIDwvcHJvYmxlbT4KKworCisgIAorICA8cHJvYmxlbT4KKyAgICA8ZmlsZT5Gb28uamF2YTwvZmlsZT4KKyAgICA8bGluZT40NDwvbGluZT4KKyAgICAKKyAgICA8ZGVzY3JpcHRpb24+TnVtZXJpYyBvdmVyZmxvdyBpbiBleHByZXNzaW9uPC9kZXNjcmlwdGlvbj4KKyAgPC9wcm9ibGVtPgorCisKKyAgCisgIDxwcm9ibGVtPgorICAgIDxmaWxlPkZvby5qYXZhPC9maWxlPgorICAgIDxsaW5lPjQ1PC9saW5lPgorICAgIAorICAgIDxkZXNjcmlwdGlvbj5OdW1lcmljIG92ZXJmbG93IGluIGV4cHJlc3Npb248L2Rlc2NyaXB0aW9uPgorICA8L3Byb2JsZW0+CisKKworICAKKyAgPHByb2JsZW0+CisgICAgPGZpbGU+Rm9vLmphdmE8L2ZpbGU+CisgICAgPGxpbmU+NDU8L2xpbmU+CisgICAgCisgICAgPGRlc2NyaXB0aW9uPk51bWVyaWMgb3ZlcmZsb3cgaW4gZXhwcmVzc2lvbjwvZGVzY3JpcHRpb24+CisgIDwvcHJvYmxlbT4KKworCisgIAorICA8cHJvYmxlbT4KKyAgICA8ZmlsZT5Gb28uamF2YTwvZmlsZT4KKyAgICA8bGluZT40NzwvbGluZT4KKyAgICAKKyAgICA8ZGVzY3JpcHRpb24+TnVtZXJpYyBvdmVyZmxvdyBpbiBleHByZXNzaW9uPC9kZXNjcmlwdGlvbj4KKyAgPC9wcm9ibGVtPgorCisKKyAgCisgIDxwcm9ibGVtPgorICAgIDxmaWxlPkZvby5qYXZhPC9maWxlPgorICAgIDxsaW5lPjQ3PC9saW5lPgorICAgIAorICAgIDxkZXNjcmlwdGlvbj5OdW1lcmljIG92ZXJmbG93IGluIGV4cHJlc3Npb248L2Rlc2NyaXB0aW9uPgorICA8L3Byb2JsZW0+CisKKworICAKKyAgPHByb2JsZW0+CisgICAgPGZpbGU+Rm9vLmphdmE8L2ZpbGU+CisgICAgPGxpbmU+NDg8L2xpbmU+CisgICAgCisgICAgPGRlc2NyaXB0aW9uPk51bWVyaWMgb3ZlcmZsb3cgaW4gZXhwcmVzc2lvbjwvZGVzY3JpcHRpb24+CisgIDwvcHJvYmxlbT4KKworCisgIAorICA8cHJvYmxlbT4KKyAgICA8ZmlsZT5Gb28uamF2YTwvZmlsZT4KKyAgICA8bGluZT40ODwvbGluZT4KKyAgICAKKyAgICA8ZGVzY3JpcHRpb24+TnVtZXJpYyBvdmVyZmxvdyBpbiBleHByZXNzaW9uPC9kZXNjcmlwdGlvbj4KKyAgPC9wcm9ibGVtPgorCisKKyAgCisgIDxwcm9ibGVtPgorICAgIDxmaWxlPkZvby5qYXZhPC9maWxlPgorICAgIDxsaW5lPjUxPC9saW5lPgorICAgIAorICAgIDxkZXNjcmlwdGlvbj5OdW1lcmljIG92ZXJmbG93IGluIGV4cHJlc3Npb248L2Rlc2NyaXB0aW9uPgorICA8L3Byb2JsZW0+CisKKworICAKKyAgPHByb2JsZW0+CisgICAgPGZpbGU+Rm9vLmphdmE8L2ZpbGU+CisgICAgPGxpbmU+NTI8L2xpbmU+CisgICAgCisgICAgPGRlc2NyaXB0aW9uPk51bWVyaWMgb3ZlcmZsb3cgaW4gZXhwcmVzc2lvbjwvZGVzY3JpcHRpb24+CisgIDwvcHJvYmxlbT4KKworCisgIAorICA8cHJvYmxlbT4KKyAgICA8ZmlsZT5Gb28uamF2YTwvZmlsZT4KKyAgICA8bGluZT41MjwvbGluZT4KKyAgICAKKyAgICA8ZGVzY3JpcHRpb24+TnVtZXJpYyBvdmVyZmxvdyBpbiBleHByZXNzaW9uPC9kZXNjcmlwdGlvbj4KKyAgPC9wcm9ibGVtPgorCisKKyAgCisgIDxwcm9ibGVtPgorICAgIDxmaWxlPkZvby5qYXZhPC9maWxlPgorICAgIDxsaW5lPjUzPC9saW5lPgorICAgIAorICAgIDxkZXNjcmlwdGlvbj5OdW1lcmljIG92ZXJmbG93IGluIGV4cHJlc3Npb248L2Rlc2NyaXB0aW9uPgorICA8L3Byb2JsZW0+CisKKworICAKKyAgPHByb2JsZW0+CisgICAgPGZpbGU+Rm9vLmphdmE8L2ZpbGU+CisgICAgPGxpbmU+NTM8L2xpbmU+CisgICAgCisgICAgPGRlc2NyaXB0aW9uPk51bWVyaWMgb3ZlcmZsb3cgaW4gZXhwcmVzc2lvbjwvZGVzY3JpcHRpb24+CisgIDwvcHJvYmxlbT4KKworCisgIAorICA8cHJvYmxlbT4KKyAgICA8ZmlsZT5Gb28uamF2YTwvZmlsZT4KKyAgICA8bGluZT41NDwvbGluZT4KKyAgICAKKyAgICA8ZGVzY3JpcHRpb24+TnVtZXJpYyBvdmVyZmxvdyBpbiBleHByZXNzaW9uPC9kZXNjcmlwdGlvbj4KKyAgPC9wcm9ibGVtPgorCisKKyAgCisgIDxwcm9ibGVtPgorICAgIDxmaWxlPkZvby5qYXZhPC9maWxlPgorICAgIDxsaW5lPjU0PC9saW5lPgorICAgIAorICAgIDxkZXNjcmlwdGlvbj5OdW1lcmljIG92ZXJmbG93IGluIGV4cHJlc3Npb248L2Rlc2NyaXB0aW9uPgorICA8L3Byb2JsZW0+CisKKworICAKKyAgPHByb2JsZW0+CisgICAgPGZpbGU+Rm9vLmphdmE8L2ZpbGU+CisgICAgPGxpbmU+NTU8L2xpbmU+CisgICAgCisgICAgPGRlc2NyaXB0aW9uPk51bWVyaWMgb3ZlcmZsb3cgaW4gZXhwcmVzc2lvbjwvZGVzY3JpcHRpb24+CisgIDwvcHJvYmxlbT4KKworCisgIAorICA8cHJvYmxlbT4KKyAgICA8ZmlsZT5Gb28uamF2YTwvZmlsZT4KKyAgICA8bGluZT41NTwvbGluZT4KKyAgICAKKyAgICA8ZGVzY3JpcHRpb24+TnVtZXJpYyBvdmVyZmxvdyBpbiBleHByZXNzaW9uPC9kZXNjcmlwdGlvbj4KKyAgPC9wcm9ibGVtPgorCisKKyAgCisgIDxwcm9ibGVtPgorICAgIDxmaWxlPkZvby5qYXZhPC9maWxlPgorICAgIDxsaW5lPjU2PC9saW5lPgorICAgIAorICAgIDxkZXNjcmlwdGlvbj5OdW1lcmljIG92ZXJmbG93IGluIGV4cHJlc3Npb248L2Rlc2NyaXB0aW9uPgorICA8L3Byb2JsZW0+CisKKworICAKKyAgPHByb2JsZW0+CisgICAgPGZpbGU+Rm9vLmphdmE8L2ZpbGU+CisgICAgPGxpbmU+NTY8L2xpbmU+CisgICAgCisgICAgPGRlc2NyaXB0aW9uPk51bWVyaWMgb3ZlcmZsb3cgaW4gZXhwcmVzc2lvbjwvZGVzY3JpcHRpb24+CisgIDwvcHJvYmxlbT4KKworCisgIAorICA8cHJvYmxlbT4KKyAgICA8ZmlsZT5Gb28uamF2YTwvZmlsZT4KKyAgICA8bGluZT42MDwvbGluZT4KKyAgICAKKyAgICA8ZGVzY3JpcHRpb24+TnVtZXJpYyBvdmVyZmxvdyBpbiBleHByZXNzaW9uPC9kZXNjcmlwdGlvbj4KKyAgPC9wcm9ibGVtPgorCisKKyAgCisgIDxwcm9ibGVtPgorICAgIDxmaWxlPkZvby5qYXZhPC9maWxlPgorICAgIDxsaW5lPjYwPC9saW5lPgorICAgIAorICAgIDxkZXNjcmlwdGlvbj5OdW1lcmljIG92ZXJmbG93IGluIGV4cHJlc3Npb248L2Rlc2NyaXB0aW9uPgorICA8L3Byb2JsZW0+CisKKworICAKKyAgPHByb2JsZW0+CisgICAgPGZpbGU+Rm9vLmphdmE8L2ZpbGU+CisgICAgPGxpbmU+NjI8L2xpbmU+CisgICAgCisgICAgPGRlc2NyaXB0aW9uPk51bWVyaWMgb3ZlcmZsb3cgaW4gZXhwcmVzc2lvbjwvZGVzY3JpcHRpb24+CisgIDwvcHJvYmxlbT4KKworCisgIAorICA8cHJvYmxlbT4KKyAgICA8ZmlsZT5Gb28uamF2YTwvZmlsZT4KKyAgICA8bGluZT42MjwvbGluZT4KKyAgICAKKyAgICA8ZGVzY3JpcHRpb24+TnVtZXJpYyBvdmVyZmxvdyBpbiBleHByZXNzaW9uPC9kZXNjcmlwdGlvbj4KKyAgPC9wcm9ibGVtPgorCisKKyAgCisgIDxwcm9ibGVtPgorICAgIDxmaWxlPkZvby5qYXZhPC9maWxlPgorICAgIDxsaW5lPjYzPC9saW5lPgorICAgIAorICAgIDxkZXNjcmlwdGlvbj5OdW1lcmljIG92ZXJmbG93IGluIGV4cHJlc3Npb248L2Rlc2NyaXB0aW9uPgorICA8L3Byb2JsZW0+CisKKworICAKKyAgPHByb2JsZW0+CisgICAgPGZpbGU+Rm9vLmphdmE8L2ZpbGU+CisgICAgPGxpbmU+NjM8L2xpbmU+CisgICAgCisgICAgPGRlc2NyaXB0aW9uPk51bWVyaWMgb3ZlcmZsb3cgaW4gZXhwcmVzc2lvbjwvZGVzY3JpcHRpb24+CisgIDwvcHJvYmxlbT4KKworCisgIAorICA8cHJvYmxlbT4KKyAgICA8ZmlsZT5Gb28uamF2YTwvZmlsZT4KKyAgICA8bGluZT42NDwvbGluZT4KKyAgICAKKyAgICA8ZGVzY3JpcHRpb24+TnVtZXJpYyBvdmVyZmxvdyBpbiBleHByZXNzaW9uPC9kZXNjcmlwdGlvbj4KKyAgPC9wcm9ibGVtPgorCisKKyAgCisgIDxwcm9ibGVtPgorICAgIDxmaWxlPkZvby5qYXZhPC9maWxlPgorICAgIDxsaW5lPjY0PC9saW5lPgorICAgIAorICAgIDxkZXNjcmlwdGlvbj5OdW1lcmljIG92ZXJmbG93IGluIGV4cHJlc3Npb248L2Rlc2NyaXB0aW9uPgorICA8L3Byb2JsZW0+CisKKworICAKKyAgPHByb2JsZW0+CisgICAgPGZpbGU+Rm9vLmphdmE8L2ZpbGU+CisgICAgPGxpbmU+NjU8L2xpbmU+CisgICAgCisgICAgPGRlc2NyaXB0aW9uPk51bWVyaWMgb3ZlcmZsb3cgaW4gZXhwcmVzc2lvbjwvZGVzY3JpcHRpb24+CisgIDwvcHJvYmxlbT4KKworCisgIAorICA8cHJvYmxlbT4KKyAgICA8ZmlsZT5Gb28uamF2YTwvZmlsZT4KKyAgICA8bGluZT42NTwvbGluZT4KKyAgICAKKyAgICA8ZGVzY3JpcHRpb24+TnVtZXJpYyBvdmVyZmxvdyBpbiBleHByZXNzaW9uPC9kZXNjcmlwdGlvbj4KKyAgPC9wcm9ibGVtPgorCisKKyAgCisgIDxwcm9ibGVtPgorICAgIDxmaWxlPkZvby5qYXZhPC9maWxlPgorICAgIDxsaW5lPjY3PC9saW5lPgorICAgIAorICAgIDxkZXNjcmlwdGlvbj5OdW1lcmljIG92ZXJmbG93IGluIGV4cHJlc3Npb248L2Rlc2NyaXB0aW9uPgorICA8L3Byb2JsZW0+CisKKworICAKKyAgPHByb2JsZW0+CisgICAgPGZpbGU+Rm9vLmphdmE8L2ZpbGU+CisgICAgPGxpbmU+Njc8L2xpbmU+CisgICAgCisgICAgPGRlc2NyaXB0aW9uPk51bWVyaWMgb3ZlcmZsb3cgaW4gZXhwcmVzc2lvbjwvZGVzY3JpcHRpb24+CisgIDwvcHJvYmxlbT4KKworCisgIAorICA8cHJvYmxlbT4KKyAgICA8ZmlsZT5Gb28uamF2YTwvZmlsZT4KKyAgICA8bGluZT42ODwvbGluZT4KKyAgICAKKyAgICA8ZGVzY3JpcHRpb24+TnVtZXJpYyBvdmVyZmxvdyBpbiBleHByZXNzaW9uPC9kZXNjcmlwdGlvbj4KKyAgPC9wcm9ibGVtPgorCisKKyAgCisgIDxwcm9ibGVtPgorICAgIDxmaWxlPkZvby5qYXZhPC9maWxlPgorICAgIDxsaW5lPjY4PC9saW5lPgorICAgIAorICAgIDxkZXNjcmlwdGlvbj5OdW1lcmljIG92ZXJmbG93IGluIGV4cHJlc3Npb248L2Rlc2NyaXB0aW9uPgorICA8L3Byb2JsZW0+CisKKworICAKKyAgPHByb2JsZW0+CisgICAgPGZpbGU+Rm9vLmphdmE8L2ZpbGU+CisgICAgPGxpbmU+Njk8L2xpbmU+CisgICAgCisgICAgPGRlc2NyaXB0aW9uPk51bWVyaWMgb3ZlcmZsb3cgaW4gZXhwcmVzc2lvbjwvZGVzY3JpcHRpb24+CisgIDwvcHJvYmxlbT4KKworCisgIAorICA8cHJvYmxlbT4KKyAgICA8ZmlsZT5Gb28uamF2YTwvZmlsZT4KKyAgICA8bGluZT42OTwvbGluZT4KKyAgICAKKyAgICA8ZGVzY3JpcHRpb24+TnVtZXJpYyBvdmVyZmxvdyBpbiBleHByZXNzaW9uPC9kZXNjcmlwdGlvbj4KKyAgPC9wcm9ibGVtPgorCisKKyAgCisgIDxwcm9ibGVtPgorICAgIDxmaWxlPkZvby5qYXZhPC9maWxlPgorICAgIDxsaW5lPjcxPC9saW5lPgorICAgIAorICAgIDxkZXNjcmlwdGlvbj5OdW1lcmljIG92ZXJmbG93IGluIGV4cHJlc3Npb248L2Rlc2NyaXB0aW9uPgorICA8L3Byb2JsZW0+CisKKworICAKKyAgPHByb2JsZW0+CisgICAgPGZpbGU+Rm9vLmphdmE8L2ZpbGU+CisgICAgPGxpbmU+NzE8L2xpbmU+CisgICAgCisgICAgPGRlc2NyaXB0aW9uPk51bWVyaWMgb3ZlcmZsb3cgaW4gZXhwcmVzc2lvbjwvZGVzY3JpcHRpb24+CisgIDwvcHJvYmxlbT4KKworCisgIAorICA8cHJvYmxlbT4KKyAgICA8ZmlsZT5Gb28uamF2YTwvZmlsZT4KKyAgICA8bGluZT43MjwvbGluZT4KKyAgICAKKyAgICA8ZGVzY3JpcHRpb24+TnVtZXJpYyBvdmVyZmxvdyBpbiBleHByZXNzaW9uPC9kZXNjcmlwdGlvbj4KKyAgPC9wcm9ibGVtPgorCisKKyAgCisgIDxwcm9ibGVtPgorICAgIDxmaWxlPkZvby5qYXZhPC9maWxlPgorICAgIDxsaW5lPjcyPC9saW5lPgorICAgIAorICAgIDxkZXNjcmlwdGlvbj5OdW1lcmljIG92ZXJmbG93IGluIGV4cHJlc3Npb248L2Rlc2NyaXB0aW9uPgorICA8L3Byb2JsZW0+CisKKworICAKKyAgPHByb2JsZW0+CisgICAgPGZpbGU+Rm9vLmphdmE8L2ZpbGU+CisgICAgPGxpbmU+NzI8L2xpbmU+CisgICAgCisgICAgPGRlc2NyaXB0aW9uPk51bWVyaWMgb3ZlcmZsb3cgaW4gZXhwcmVzc2lvbjwvZGVzY3JpcHRpb24+CisgIDwvcHJvYmxlbT4KKworCisgIAorICA8cHJvYmxlbT4KKyAgICA8ZmlsZT5Gb28uamF2YTwvZmlsZT4KKyAgICA8bGluZT43MjwvbGluZT4KKyAgICAKKyAgICA8ZGVzY3JpcHRpb24+TnVtZXJpYyBvdmVyZmxvdyBpbiBleHByZXNzaW9uPC9kZXNjcmlwdGlvbj4KKyAgPC9wcm9ibGVtPgorCisKKyAgCisgIDxwcm9ibGVtPgorICAgIDxmaWxlPkZvby5qYXZhPC9maWxlPgorICAgIDxsaW5lPjcyPC9saW5lPgorCisgICAgPGRlc2NyaXB0aW9uPk51bWVyaWMgb3ZlcmZsb3cgaW4gZXhwcmVzc2lvbjwvZGVzY3JpcHRpb24+CisgIDwvcHJvYmxlbT4KKworCisgIAorPC9wcm9ibGVtcz4KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vbnVtZXJpY092ZXJmbG93L3NpbXBsZS9zcmMvRm9vLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9udW1lcmljT3ZlcmZsb3cvc2ltcGxlL3NyYy9Gb28uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYWVkM2M2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vbnVtZXJpY092ZXJmbG93L3NpbXBsZS9zcmMvRm9vLmphdmEKQEAgLTAsMCArMSw4OCBAQAorLy8gb3ZlcmZsb3dzIGluIGNvbnN0IGV4cHJlc3Npb25zCisKKworY2xhc3MgYyB7CisgLy8gQCojJCYgISByZWZlcmVuY2VzIGRvIG5vdCB3b3JrIGluIEpSRQorIHN0YXRpYyBmaW5hbCBsb25nIExPTkdfTUlOX1ZBTFVFID0gMHg4MDAwMDAwMDAwMDAwMDAwTDsKKyBzdGF0aWMgZmluYWwgbG9uZyBMT05HX01BWF9WQUxVRSA9IDB4N2ZmZmZmZmZmZmZmZmZmZkw7Cisgc3RhdGljIGZpbmFsIGludCBJTlRFR0VSX01JTl9WQUxVRSA9IDB4ODAwMDAwMDA7Cisgc3RhdGljIGZpbmFsIGludCBJTlRFR0VSX01BWF9WQUxVRSA9IDB4N2ZmZmZmZmY7Cisgc3RhdGljIGZpbmFsIGZsb2F0IEZMT0FUX01JTl9WQUxVRSA9IDEuNGUtNDVmOworIHN0YXRpYyBmaW5hbCBmbG9hdCBGTE9BVF9NQVhfVkFMVUUgPSAzLjQwMjgyMzVlKzM4ZjsKKyBzdGF0aWMgZmluYWwgZG91YmxlIERPVUJMRV9NSU5fVkFMVUUgPSA0LjllLTMyNDsKKyBzdGF0aWMgZmluYWwgZG91YmxlIERPVUJMRV9NQVhfVkFMVUUgPSAxLjc5NzY5MzEzNDg2MjMxNTdlKzMwODsKKworIHZvaWQgZigpIHsKKyAgIGZsb2F0IGYxID0gMS4wZiAvIDAuMGY7CisgICBmMSA9IEZMT0FUX01BWF9WQUxVRSArIEZMT0FUX01BWF9WQUxVRTsKKyAgIGYxID0gRkxPQVRfTUFYX1ZBTFVFICogMjsKKyAgIGYxID0gMiAvIEZMT0FUX01JTl9WQUxVRTsKKyAgIGYxID0gRkxPQVRfTUlOX1ZBTFVFICsgMTsKKyAgIGYxID0gLSBGTE9BVF9NSU5fVkFMVUU7CisgICBmMSA9IC1GTE9BVF9NQVhfVkFMVUU7CisgICBTeXN0ZW0ub3V0LnByaW50bG4oZjEpOworCisgICBkb3VibGUgZDEgPSBET1VCTEVfTUFYX1ZBTFVFIC0gLURPVUJMRV9NQVhfVkFMVUU7CisgICBkMSA9IERPVUJMRV9NQVhfVkFMVUUgKyAxOworICAgZDEgPSAyICogRE9VQkxFX01BWF9WQUxVRTsKKyAgIGQxID0gMiAvIERPVUJMRV9NSU5fVkFMVUU7CisgICBkMSA9IDIgLyAwLjBkOworICAgZDEgPSAyIC8gMC4wOworICAgU3lzdGVtLm91dC5wcmludGxuKGQxKTsKKworCisgICBpbnQgaTEgPSBJTlRFR0VSX01BWF9WQUxVRSArIDE7CisgICBpMSA9IElOVEVHRVJfTUFYX1ZBTFVFIC0gMSArIDI7CisgICBpMSA9IElOVEVHRVJfTUFYX1ZBTFVFIC0gSU5URUdFUl9NSU5fVkFMVUU7CisgICBpMSA9IC1JTlRFR0VSX01JTl9WQUxVRTsKKyAgIGkxID0gSU5URUdFUl9NSU5fVkFMVUUgLSAxOworICAgaTEgPSBJTlRFR0VSX01JTl9WQUxVRSAtIElOVEVHRVJfTUFYX1ZBTFVFOworICAgaTEgPSBJTlRFR0VSX01JTl9WQUxVRSArIElOVEVHRVJfTUFYX1ZBTFVFOworICAgaTEgPSAtIElOVEVHRVJfTUFYX1ZBTFVFOworICAgaTEgPSAtIC1JTlRFR0VSX01BWF9WQUxVRTsKKyAgIGkxID0gSU5URUdFUl9NSU5fVkFMVUUgKiAtMTsKKyAgIGkxID0gSU5URUdFUl9NSU5fVkFMVUUgKiAyOworICAgaTEgPSBJTlRFR0VSX01BWF9WQUxVRSAqIC0yOworICAgaTEgPSBJTlRFR0VSX01BWF9WQUxVRSAqIC0xOworICAgaTEgPSAyIC8gMDsKKyAgIGkxID0gSU5URUdFUl9NSU5fVkFMVUUgLyAtMTsKKyAgIFN5c3RlbS5vdXQucHJpbnRsbihpMSk7CisKKyAgIGxvbmcgbDEgPSBMT05HX01BWF9WQUxVRSArIDE7CisgICBsMSA9IExPTkdfTUFYX1ZBTFVFIC0gMSArIDI7CisgICBsMSA9IExPTkdfTUFYX1ZBTFVFIC0gTE9OR19NSU5fVkFMVUU7CisgICBsMSA9IC1MT05HX01JTl9WQUxVRTsKKyAgIGwxID0gTE9OR19NSU5fVkFMVUUgLSAxOworICAgbDEgPSBMT05HX01JTl9WQUxVRSAtIExPTkdfTUFYX1ZBTFVFOworICAgbDEgPSBMT05HX01JTl9WQUxVRSArIExPTkdfTUFYX1ZBTFVFOworICAgbDEgPSAtIExPTkdfTUFYX1ZBTFVFOworICAgbDEgPSAtIC1MT05HX01BWF9WQUxVRTsKKyAgIGwxID0gLUlOVEVHRVJfTUlOX1ZBTFVFOworICAgbDEgPSAgLTFMICsgSU5URUdFUl9NSU5fVkFMVUU7CisgICBsMSA9IExPTkdfTUlOX1ZBTFVFICogSU5URUdFUl9NSU5fVkFMVUU7CisgICBsMSA9IExPTkdfTUlOX1ZBTFVFICogLTE7CisgICBsMSA9IExPTkdfTUlOX1ZBTFVFICogMjsKKyAgIGwxID0gTE9OR19NQVhfVkFMVUUgKiAtMjsKKyAgIGwxID0gSU5URUdFUl9NSU5fVkFMVUUgKiAtMUw7CisgICBsMSA9IDIgLyAwTDsKKyAgIGwxID0gMiAlIDBMOworICAgbDEgPSBMT05HX01JTl9WQUxVRSAvIC0xOworCisgICBsMSA9IDMwICogMjQgKiA2MCAqIDYwICogMTAwMDsgCisgICBsMSA9IDMwMDAwMDAwICogMjQzMjMyMzIzICogKExPTkdfTUFYX1ZBTFVFICszKSAvIDU7CisKKyAgIFN5c3RlbS5vdXQucHJpbnRsbihsMSk7CisKKworICAgCisgICB9CisgICAKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBsb25nIE1JTExJU19QRVJfREFZID0gMjQgKiAzNjAwICogMTAwMDsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBsb25nIF83REFZUyA9IDcgKiBNSUxMSVNfUEVSX0RBWTsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBsb25nIF8zMERBWVMgPSAzMCAqIE1JTExJU19QRVJfREFZOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGxvbmcgXzEwMDBEQVlTID0gMTAwMCAqIE1JTExJU19QRVJfREFZOworICAgIHsKKyAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oXzEwMDBEQVlTICsgXzMwREFZUyArIF83REFZUyk7CisgICAgfQorICAgIGludCBpaWkgPSAyICUgMDsKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3BhcmFtZXRlckNhbkJlTG9jYWwvZm9yL2V4cGVjdGVkLnhtbCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3BhcmFtZXRlckNhbkJlTG9jYWwvZm9yL2V4cGVjdGVkLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lY2RmMTU0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcGFyYW1ldGVyQ2FuQmVMb2NhbC9mb3IvZXhwZWN0ZWQueG1sCkBAIC0wLDAgKzEsOCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxwcm9ibGVtcz4KKyAgPHByb2JsZW0+CisgICAgPGZpbGU+VGVzdC5qYXZhPC9maWxlPgorICAgIDxsaW5lPjI8L2xpbmU+CisgICAgPGRlc2NyaXB0aW9uPlBhcmFtZXRlciBjYW4gYmUgY29udmVydGVkIHRvIGEgdmFyaWFibGU8L2Rlc2NyaXB0aW9uPgorICA8L3Byb2JsZW0+Cis8L3Byb2JsZW1zPgpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcGFyYW1ldGVyQ2FuQmVMb2NhbC9mb3Ivc3JjL1Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3BhcmFtZXRlckNhbkJlTG9jYWwvZm9yL3NyYy9UZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTU0NjdhNgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3BhcmFtZXRlckNhbkJlTG9jYWwvZm9yL3NyYy9UZXN0LmphdmEKQEAgLTAsMCArMSw4IEBACitjbGFzcyBUZW1wIHsKKyAgcHVibGljIFRlbXAoaW50IHApIHsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IDEwOyBpKyspIHsKKyAgICAgIHAgPSBpOworICAgICAgU3lzdGVtLm91dC5wcmludChwKTsKKyAgICB9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9wYXJhbWV0ZXJDYW5CZUxvY2FsL2lmL2V4cGVjdGVkLnhtbCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3BhcmFtZXRlckNhbkJlTG9jYWwvaWYvZXhwZWN0ZWQueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA2YWJlYzYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9wYXJhbWV0ZXJDYW5CZUxvY2FsL2lmL2V4cGVjdGVkLnhtbApAQCAtMCwwICsxLDggQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8cHJvYmxlbXM+CisgIDxwcm9ibGVtPgorICAgIDxmaWxlPlRlc3QuamF2YTwvZmlsZT4KKyAgICA8bGluZT40PC9saW5lPgorICAgIDxkZXNjcmlwdGlvbj5QYXJhbWV0ZXIgY2FuIGJlIGNvbnZlcnRlZCB0byBhIHZhcmlhYmxlPC9kZXNjcmlwdGlvbj4KKyAgPC9wcm9ibGVtPgorPC9wcm9ibGVtcz4KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3BhcmFtZXRlckNhbkJlTG9jYWwvaWYvc3JjL1Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3BhcmFtZXRlckNhbkJlTG9jYWwvaWYvc3JjL1Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YWU2ODAwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcGFyYW1ldGVyQ2FuQmVMb2NhbC9pZi9zcmMvVGVzdC5qYXZhCkBAIC0wLDAgKzEsMTMgQEAKK2NsYXNzIFRlbXAgeworICBwdWJsaWMgYm9vbGVhbiBmbGFnOworCisgIHZvaWQgdGVzdChpbnQgcCkgeworICAgIGlmIChmbGFnKSB7CisgICAgICBwID0gMTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICBwID0gMjsKKyAgICB9CisgICAgU3lzdGVtLm91dC5wcmludChwKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3BhcmFtZXRlckNhbkJlTG9jYWwvcmVhZE9ubHkvZXhwZWN0ZWQueG1sIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcGFyYW1ldGVyQ2FuQmVMb2NhbC9yZWFkT25seS9leHBlY3RlZC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDcwNGQ5MQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3BhcmFtZXRlckNhbkJlTG9jYWwvcmVhZE9ubHkvZXhwZWN0ZWQueG1sCkBAIC0wLDAgKzEsMiBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxwcm9ibGVtcy8+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcGFyYW1ldGVyQ2FuQmVMb2NhbC9yZWFkT25seS9zcmMvVGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcGFyYW1ldGVyQ2FuQmVMb2NhbC9yZWFkT25seS9zcmMvVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkyOTZlN2UKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9wYXJhbWV0ZXJDYW5CZUxvY2FsL3JlYWRPbmx5L3NyYy9UZXN0LmphdmEKQEAgLTAsMCArMSw4IEBACitjbGFzcyBUZXN0IHsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGJvb2xlYW4gbXlGb28gPSBmYWxzZTsKKworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBmb28oaW50IHApIHsKKyAgICAgICAgaWYgKCFteUZvbykgcmV0dXJuOworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oInAgPSAiICsgcCk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcGFyYW1ldGVyQ2FuQmVMb2NhbC9zaW1wbGUvZXhwZWN0ZWQueG1sIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcGFyYW1ldGVyQ2FuQmVMb2NhbC9zaW1wbGUvZXhwZWN0ZWQueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE4M2FiZDIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9wYXJhbWV0ZXJDYW5CZUxvY2FsL3NpbXBsZS9leHBlY3RlZC54bWwKQEAgLTAsMCArMSw4IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPHByb2JsZW1zPgorICA8cHJvYmxlbT4KKyAgICA8ZmlsZT5UZXN0LmphdmE8L2ZpbGU+CisgICAgPGxpbmU+MzwvbGluZT4KKyAgICA8ZGVzY3JpcHRpb24+UGFyYW1ldGVyIGNhbiBiZSBjb252ZXJ0ZWQgdG8gYSB2YXJpYWJsZTwvZGVzY3JpcHRpb24+CisgIDwvcHJvYmxlbT4KKzwvcHJvYmxlbXM+CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9wYXJhbWV0ZXJDYW5CZUxvY2FsL3NpbXBsZS9zcmMvVGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcGFyYW1ldGVyQ2FuQmVMb2NhbC9zaW1wbGUvc3JjL1Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zM2VjNDdhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcGFyYW1ldGVyQ2FuQmVMb2NhbC9zaW1wbGUvc3JjL1Rlc3QuamF2YQpAQCAtMCwwICsxLDcgQEAKK2NsYXNzIFRlbXAgeworCisgIHZvaWQgdGVzdChpbnQgcCkgeworICAgIHAgPSAxOworICAgIFN5c3RlbS5vdXQucHJpbnQocCk7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9xdWlja0ZpeC9Db252ZXJ0UGFyYW1ldGVyVG9Mb2NhbFZhcmlhYmxlL2FmdGVyRm9yLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9xdWlja0ZpeC9Db252ZXJ0UGFyYW1ldGVyVG9Mb2NhbFZhcmlhYmxlL2FmdGVyRm9yLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2U4NzExZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3F1aWNrRml4L0NvbnZlcnRQYXJhbWV0ZXJUb0xvY2FsVmFyaWFibGUvYWZ0ZXJGb3IuamF2YQpAQCAtMCwwICsxLDkgQEAKKy8vICJDb252ZXJ0IHRvIGxvY2FsIHZhcmlhYmxlIiAidHJ1ZSIKK2NsYXNzIFRlbXAgeworICBwdWJsaWMgVGVtcCgpIHsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IDEwOyBpKyspIHsKKyAgICAgICAgPGNhcmV0PmludCBwID0gaTsKKyAgICAgIFN5c3RlbS5vdXQucHJpbnQocCk7CisgICAgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcXVpY2tGaXgvQ29udmVydFBhcmFtZXRlclRvTG9jYWxWYXJpYWJsZS9hZnRlcklmLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9xdWlja0ZpeC9Db252ZXJ0UGFyYW1ldGVyVG9Mb2NhbFZhcmlhYmxlL2FmdGVySWYuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNmQ4Zjc1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcXVpY2tGaXgvQ29udmVydFBhcmFtZXRlclRvTG9jYWxWYXJpYWJsZS9hZnRlcklmLmphdmEKQEAgLTAsMCArMSwxNSBAQAorLy8gIkNvbnZlcnQgdG8gbG9jYWwgdmFyaWFibGUiICJ0cnVlIgorY2xhc3MgVGVtcCB7CisgIHB1YmxpYyBib29sZWFuIGZsYWc7CisKKyAgdm9pZCB0ZXN0KCkgeworICAgICAgPGNhcmV0PmludCBwOworICAgICAgaWYgKGZsYWcpIHsKKyAgICAgIHAgPSAxOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHAgPSAyOworICAgIH0KKyAgICBTeXN0ZW0ub3V0LnByaW50KHApOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcXVpY2tGaXgvQ29udmVydFBhcmFtZXRlclRvTG9jYWxWYXJpYWJsZS9hZnRlclNpbXBsZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcXVpY2tGaXgvQ29udmVydFBhcmFtZXRlclRvTG9jYWxWYXJpYWJsZS9hZnRlclNpbXBsZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY2OTJmZjEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9xdWlja0ZpeC9Db252ZXJ0UGFyYW1ldGVyVG9Mb2NhbFZhcmlhYmxlL2FmdGVyU2ltcGxlLmphdmEKQEAgLTAsMCArMSw4IEBACisvLyAiQ29udmVydCB0byBsb2NhbCB2YXJpYWJsZSIgInRydWUiCitjbGFzcyBUZW1wIHsKKworICB2b2lkIHRlc3QoKSB7CisgICAgICA8Y2FyZXQ+aW50IHAgPSAxOworICAgIFN5c3RlbS5vdXQucHJpbnQocCk7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9xdWlja0ZpeC9Db252ZXJ0UGFyYW1ldGVyVG9Mb2NhbFZhcmlhYmxlL2FmdGVyVXBkYXRlQ2FsbGVycy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcXVpY2tGaXgvQ29udmVydFBhcmFtZXRlclRvTG9jYWxWYXJpYWJsZS9hZnRlclVwZGF0ZUNhbGxlcnMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYmRhNzExCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcXVpY2tGaXgvQ29udmVydFBhcmFtZXRlclRvTG9jYWxWYXJpYWJsZS9hZnRlclVwZGF0ZUNhbGxlcnMuamF2YQpAQCAtMCwwICsxLDEyIEBACisvLyAiQ29udmVydCB0byBsb2NhbCB2YXJpYWJsZSIgInRydWUiCitjbGFzcyBUZW1wIHsKKworICB2b2lkIGZvbygpIHsKKyAgICAgIDxjYXJldD5pbnQgeCA9IDU7CisgICAgU3lzdGVtLm91dC5wcmludGxuKHgpOworICB9CisKKyAgdm9pZCBiYXIoKSB7CisgICAgZm9vKCk7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9xdWlja0ZpeC9Db252ZXJ0UGFyYW1ldGVyVG9Mb2NhbFZhcmlhYmxlL2FmdGVyVXBkYXRlQ2FsbGVyczEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3F1aWNrRml4L0NvbnZlcnRQYXJhbWV0ZXJUb0xvY2FsVmFyaWFibGUvYWZ0ZXJVcGRhdGVDYWxsZXJzMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI5YzAzMTgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9xdWlja0ZpeC9Db252ZXJ0UGFyYW1ldGVyVG9Mb2NhbFZhcmlhYmxlL2FmdGVyVXBkYXRlQ2FsbGVyczEuamF2YQpAQCAtMCwwICsxLDEyIEBACisvLyAiQ29udmVydCB0byBsb2NhbCB2YXJpYWJsZSIgInRydWUiCitjbGFzcyBUZW1wIHsKKworICB2b2lkIGZvbyhpbnQgaykgeworICAgICAgaW50IHggPSA1OworICAgIFN5c3RlbS5vdXQucHJpbnRsbih4KTsKKyAgfQorCisgIHZvaWQgYmFyKCkgeworICAgIGZvbyg0Mik7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9xdWlja0ZpeC9Db252ZXJ0UGFyYW1ldGVyVG9Mb2NhbFZhcmlhYmxlL2JlZm9yZUZvci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcXVpY2tGaXgvQ29udmVydFBhcmFtZXRlclRvTG9jYWxWYXJpYWJsZS9iZWZvcmVGb3IuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41OThiMjM3OAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3F1aWNrRml4L0NvbnZlcnRQYXJhbWV0ZXJUb0xvY2FsVmFyaWFibGUvYmVmb3JlRm9yLmphdmEKQEAgLTAsMCArMSw5IEBACisvLyAiQ29udmVydCB0byBsb2NhbCB2YXJpYWJsZSIgInRydWUiCitjbGFzcyBUZW1wIHsKKyAgcHVibGljIFRlbXAoaW50IDxjYXJldD5wKSB7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCAxMDsgaSsrKSB7CisgICAgICBwID0gaTsKKyAgICAgIFN5c3RlbS5vdXQucHJpbnQocCk7CisgICAgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcXVpY2tGaXgvQ29udmVydFBhcmFtZXRlclRvTG9jYWxWYXJpYWJsZS9iZWZvcmVJZi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcXVpY2tGaXgvQ29udmVydFBhcmFtZXRlclRvTG9jYWxWYXJpYWJsZS9iZWZvcmVJZi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZkYzNiYjEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9xdWlja0ZpeC9Db252ZXJ0UGFyYW1ldGVyVG9Mb2NhbFZhcmlhYmxlL2JlZm9yZUlmLmphdmEKQEAgLTAsMCArMSwxNCBAQAorLy8gIkNvbnZlcnQgdG8gbG9jYWwgdmFyaWFibGUiICJ0cnVlIgorY2xhc3MgVGVtcCB7CisgIHB1YmxpYyBib29sZWFuIGZsYWc7CisKKyAgdm9pZCB0ZXN0KGludCA8Y2FyZXQ+cCkgeworICAgIGlmIChmbGFnKSB7CisgICAgICBwID0gMTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICBwID0gMjsKKyAgICB9CisgICAgU3lzdGVtLm91dC5wcmludChwKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3F1aWNrRml4L0NvbnZlcnRQYXJhbWV0ZXJUb0xvY2FsVmFyaWFibGUvYmVmb3JlU2ltcGxlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9xdWlja0ZpeC9Db252ZXJ0UGFyYW1ldGVyVG9Mb2NhbFZhcmlhYmxlL2JlZm9yZVNpbXBsZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNmMDNjZTIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9xdWlja0ZpeC9Db252ZXJ0UGFyYW1ldGVyVG9Mb2NhbFZhcmlhYmxlL2JlZm9yZVNpbXBsZS5qYXZhCkBAIC0wLDAgKzEsOCBAQAorLy8gIkNvbnZlcnQgdG8gbG9jYWwgdmFyaWFibGUiICJ0cnVlIgorY2xhc3MgVGVtcCB7CisKKyAgdm9pZCB0ZXN0KGludCA8Y2FyZXQ+cCkgeworICAgIHAgPSAxOworICAgIFN5c3RlbS5vdXQucHJpbnQocCk7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9xdWlja0ZpeC9Db252ZXJ0UGFyYW1ldGVyVG9Mb2NhbFZhcmlhYmxlL2JlZm9yZVVwZGF0ZUNhbGxlcnMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3F1aWNrRml4L0NvbnZlcnRQYXJhbWV0ZXJUb0xvY2FsVmFyaWFibGUvYmVmb3JlVXBkYXRlQ2FsbGVycy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ0MWQ1MDMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9xdWlja0ZpeC9Db252ZXJ0UGFyYW1ldGVyVG9Mb2NhbFZhcmlhYmxlL2JlZm9yZVVwZGF0ZUNhbGxlcnMuamF2YQpAQCAtMCwwICsxLDEyIEBACisvLyAiQ29udmVydCB0byBsb2NhbCB2YXJpYWJsZSIgInRydWUiCitjbGFzcyBUZW1wIHsKKworICB2b2lkIGZvbyhpbnQgPGNhcmV0PngpIHsKKyAgICB4ID0gNTsKKyAgICBTeXN0ZW0ub3V0LnByaW50bG4oeCk7CisgIH0KKworICB2b2lkIGJhcigpIHsKKyAgICBmb28oMik7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9xdWlja0ZpeC9Db252ZXJ0UGFyYW1ldGVyVG9Mb2NhbFZhcmlhYmxlL2JlZm9yZVVwZGF0ZUNhbGxlcnMxLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9xdWlja0ZpeC9Db252ZXJ0UGFyYW1ldGVyVG9Mb2NhbFZhcmlhYmxlL2JlZm9yZVVwZGF0ZUNhbGxlcnMxLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTg0YjM3MwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3F1aWNrRml4L0NvbnZlcnRQYXJhbWV0ZXJUb0xvY2FsVmFyaWFibGUvYmVmb3JlVXBkYXRlQ2FsbGVyczEuamF2YQpAQCAtMCwwICsxLDEyIEBACisvLyAiQ29udmVydCB0byBsb2NhbCB2YXJpYWJsZSIgInRydWUiCitjbGFzcyBUZW1wIHsKKworICB2b2lkIGZvbyhpbnQgPGNhcmV0PngsIGludCBrKSB7CisgICAgeCA9IDU7CisgICAgU3lzdGVtLm91dC5wcmludGxuKHgpOworICB9CisKKyAgdm9pZCBiYXIoKSB7CisgICAgZm9vKDIsIDQyKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3F1aWNrRml4L1NhbWVQYXJhbWV0ZXJWYWx1ZS9hZnRlcjEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3F1aWNrRml4L1NhbWVQYXJhbWV0ZXJWYWx1ZS9hZnRlcjEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZjQ1OTI1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcXVpY2tGaXgvU2FtZVBhcmFtZXRlclZhbHVlL2FmdGVyMS5qYXZhCkBAIC0wLDAgKzEsNiBAQAorLy8gImYgZmFsc2UiICJ0cnVlIgorcHVibGljIGNsYXNzIFRlc3QgeworICB2b2lkIGZvbyg8Y2FyZXQ+KXt9CisgIHZvaWQgYmFyKCl7Zm9vKCk7fQorICB2b2lkIGJhcjEoKXtmb28oKTt9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcXVpY2tGaXgvU2FtZVBhcmFtZXRlclZhbHVlL2FmdGVyMi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcXVpY2tGaXgvU2FtZVBhcmFtZXRlclZhbHVlL2FmdGVyMi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIwNWRlNTQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9xdWlja0ZpeC9TYW1lUGFyYW1ldGVyVmFsdWUvYWZ0ZXIyLmphdmEKQEAgLTAsMCArMSwxMCBAQAorLy8gImYgZmFsc2UiICJ0cnVlIgorcHVibGljIGNsYXNzIFRlc3QgeworICB2b2lkIGZvbyg8Y2FyZXQ+KXsKKyAgICBpZiAoZmFsc2UpIHsKKyAgICAgIFN5c3RlLm91dC5wcmludChmYWxzZSk7CisgICAgfQorICB9CisgIHZvaWQgYmFyKCl7Zm9vKCk7fQorICB2b2lkIGJhcjEoKXtmb28oKTt9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcXVpY2tGaXgvU2FtZVBhcmFtZXRlclZhbHVlL2FmdGVyMy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcXVpY2tGaXgvU2FtZVBhcmFtZXRlclZhbHVlL2FmdGVyMy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM1NjVlZDYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9xdWlja0ZpeC9TYW1lUGFyYW1ldGVyVmFsdWUvYWZ0ZXIzLmphdmEKQEAgLTAsMCArMSwxMCBAQAorLy8gImIgZmFsc2UiICJ0cnVlIgorcHVibGljIGNsYXNzIFRlc3QgeworICB2b2lkIGZvbyhib29sZWFuIGY8Y2FyZXQ+KXsKKyAgICBpZiAoZikgeworICAgICAgU3lzdGUub3V0LnByaW50KGYpOworICAgIH0KKyAgfQorICB2b2lkIGJhcigpe2ZvbyhmYWxzZSk7fQorICB2b2lkIGJhcjEoKXtmb28odHJ1ZSk7fQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3F1aWNrRml4L1NhbWVQYXJhbWV0ZXJWYWx1ZS9hZnRlcjQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3F1aWNrRml4L1NhbWVQYXJhbWV0ZXJWYWx1ZS9hZnRlcjQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NWVhOTMwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcXVpY2tGaXgvU2FtZVBhcmFtZXRlclZhbHVlL2FmdGVyNC5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKKy8vICJmIGZhbHNlIiAidHJ1ZSIKK3B1YmxpYyBjbGFzcyBUZXN0IHsKKyAgdm9pZCBmb28oPGNhcmV0PmJvb2xlYW4gYil7CisgICAgaWYgKGZhbHNlKSB7CisgICAgICBTeXN0ZS5vdXQucHJpbnQoZmFsc2UpOworICAgIH0KKyAgfQorICB2b2lkIGJhcigpe2ZvbyhmYWxzZSk7fQorICB2b2lkIGJhcjEoKXtmb28odHJ1ZSk7fQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3F1aWNrRml4L1NhbWVQYXJhbWV0ZXJWYWx1ZS9hZnRlcjUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3F1aWNrRml4L1NhbWVQYXJhbWV0ZXJWYWx1ZS9hZnRlcjUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMjQ0YmI3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcXVpY2tGaXgvU2FtZVBhcmFtZXRlclZhbHVlL2FmdGVyNS5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKKy8vICJmIDUiICJ0cnVlIgorcHVibGljIGNsYXNzIFRlc3QgeworICB2b2lkIGZvbyg8Y2FyZXQ+KXsKKyAgICBpZiAoNSA9PSA1KSB7CisgICAgICBTeXN0ZS5vdXQucHJpbnQoNSk7CisgICAgfQorICB9CisgIHZvaWQgYmFyKCl7Zm9vKCk7fQorICB2b2lkIGJhcjEoKXtmb28oKTt9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcXVpY2tGaXgvU2FtZVBhcmFtZXRlclZhbHVlL2FmdGVyNi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcXVpY2tGaXgvU2FtZVBhcmFtZXRlclZhbHVlL2FmdGVyNi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJlZThjN2QKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9xdWlja0ZpeC9TYW1lUGFyYW1ldGVyVmFsdWUvYWZ0ZXI2LmphdmEKQEAgLTAsMCArMSw5IEBACisvLyAiZiA1IiAidHJ1ZSIKK3B1YmxpYyBjbGFzcyBUZXN0IHsKKyAgdm9pZCBmb28oPGNhcmV0Pil7CisgICAgU3lzdGUub3V0LnByaW50KGQobmV3IGludFtdezV9KSk7CisgIH0KKyAgaW50IGQoaW50W10gZCl7fQorICB2b2lkIGJhcigpe2ZvbygpO30KKyAgdm9pZCBiYXIxKCl7Zm9vKCk7fQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3F1aWNrRml4L1NhbWVQYXJhbWV0ZXJWYWx1ZS9iZWZvcmUxLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9xdWlja0ZpeC9TYW1lUGFyYW1ldGVyVmFsdWUvYmVmb3JlMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZiZTQwNWMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9xdWlja0ZpeC9TYW1lUGFyYW1ldGVyVmFsdWUvYmVmb3JlMS5qYXZhCkBAIC0wLDAgKzEsNiBAQAorLy8gImYgZmFsc2UiICJ0cnVlIgorcHVibGljIGNsYXNzIFRlc3QgeworICB2b2lkIGZvbyhib29sZWFuIDxjYXJldD5mKXt9CisgIHZvaWQgYmFyKCl7Zm9vKGZhbHNlKTt9CisgIHZvaWQgYmFyMSgpe2ZvbyhmYWxzZSk7fQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3F1aWNrRml4L1NhbWVQYXJhbWV0ZXJWYWx1ZS9iZWZvcmUyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9xdWlja0ZpeC9TYW1lUGFyYW1ldGVyVmFsdWUvYmVmb3JlMi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEzYWU0MmIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9xdWlja0ZpeC9TYW1lUGFyYW1ldGVyVmFsdWUvYmVmb3JlMi5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKKy8vICJmIGZhbHNlIiAidHJ1ZSIKK3B1YmxpYyBjbGFzcyBUZXN0IHsKKyAgdm9pZCBmb28oYm9vbGVhbiA8Y2FyZXQ+Zil7CisgICAgaWYgKGYpIHsKKyAgICAgIFN5c3RlLm91dC5wcmludChmKTsKKyAgICB9CisgIH0KKyAgdm9pZCBiYXIoKXtmb28oZmFsc2UpO30KKyAgdm9pZCBiYXIxKCl7Zm9vKGZhbHNlKTt9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcXVpY2tGaXgvU2FtZVBhcmFtZXRlclZhbHVlL2JlZm9yZTMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3F1aWNrRml4L1NhbWVQYXJhbWV0ZXJWYWx1ZS9iZWZvcmUzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWYzZGJiZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3F1aWNrRml4L1NhbWVQYXJhbWV0ZXJWYWx1ZS9iZWZvcmUzLmphdmEKQEAgLTAsMCArMSwxMCBAQAorLy8gImIgZmFsc2UiICJ0cnVlIgorcHVibGljIGNsYXNzIFRlc3QgeworICB2b2lkIGZvbyhib29sZWFuIGYsIGJvb2xlYW4gPGNhcmV0PmIpeworICAgIGlmIChmKSB7CisgICAgICBTeXN0ZS5vdXQucHJpbnQoZik7CisgICAgfQorICB9CisgIHZvaWQgYmFyKCl7Zm9vKGZhbHNlLCBmYWxzZSk7fQorICB2b2lkIGJhcjEoKXtmb28odHJ1ZSwgZmFsc2UpO30KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9xdWlja0ZpeC9TYW1lUGFyYW1ldGVyVmFsdWUvYmVmb3JlNC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcXVpY2tGaXgvU2FtZVBhcmFtZXRlclZhbHVlL2JlZm9yZTQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZDc5OTI3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcXVpY2tGaXgvU2FtZVBhcmFtZXRlclZhbHVlL2JlZm9yZTQuamF2YQpAQCAtMCwwICsxLDEwIEBACisvLyAiZiBmYWxzZSIgInRydWUiCitwdWJsaWMgY2xhc3MgVGVzdCB7CisgIHZvaWQgZm9vKGJvb2xlYW4gPGNhcmV0PmYsIGJvb2xlYW4gYil7CisgICAgaWYgKGYpIHsKKyAgICAgIFN5c3RlLm91dC5wcmludChmKTsKKyAgICB9CisgIH0KKyAgdm9pZCBiYXIoKXtmb28oZmFsc2UsIGZhbHNlKTt9CisgIHZvaWQgYmFyMSgpe2ZvbyhmYWxzZSwgdHJ1ZSk7fQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3F1aWNrRml4L1NhbWVQYXJhbWV0ZXJWYWx1ZS9iZWZvcmU1LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9xdWlja0ZpeC9TYW1lUGFyYW1ldGVyVmFsdWUvYmVmb3JlNS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE3MzA1NDUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9xdWlja0ZpeC9TYW1lUGFyYW1ldGVyVmFsdWUvYmVmb3JlNS5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKKy8vICJmIDUiICJ0cnVlIgorcHVibGljIGNsYXNzIFRlc3QgeworICB2b2lkIGZvbyhpbnQgPGNhcmV0PmYpeworICAgIGlmIChmID09IDUpIHsKKyAgICAgIFN5c3RlLm91dC5wcmludChmKTsKKyAgICB9CisgIH0KKyAgdm9pZCBiYXIoKXtmb28oNSk7fQorICB2b2lkIGJhcjEoKXtmb28oNSk7fQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3F1aWNrRml4L1NhbWVQYXJhbWV0ZXJWYWx1ZS9iZWZvcmU2LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9xdWlja0ZpeC9TYW1lUGFyYW1ldGVyVmFsdWUvYmVmb3JlNi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY3MmQ0ODAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9xdWlja0ZpeC9TYW1lUGFyYW1ldGVyVmFsdWUvYmVmb3JlNi5qYXZhCkBAIC0wLDAgKzEsOSBAQAorLy8gImYgNSIgInRydWUiCitwdWJsaWMgY2xhc3MgVGVzdCB7CisgIHZvaWQgZm9vKGludC4uLiA8Y2FyZXQ+Zil7CisgICAgU3lzdGUub3V0LnByaW50KGQoZikpOworICB9CisgIGludCBkKGludFtdIGQpe30KKyAgdm9pZCBiYXIoKXtmb28oNSk7fQorICB2b2lkIGJhcjEoKXtmb28oNSk7fQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3JlZHVuZGFudEFycmF5Rm9yVmFyYXJncy9JREVBREVWMTUyMTUvZXhwZWN0ZWQueG1sIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcmVkdW5kYW50QXJyYXlGb3JWYXJhcmdzL0lERUFERVYxNTIxNS9leHBlY3RlZC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmVlYzYxYgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3JlZHVuZGFudEFycmF5Rm9yVmFyYXJncy9JREVBREVWMTUyMTUvZXhwZWN0ZWQueG1sCkBAIC0wLDAgKzEsMTAgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8cHJvYmxlbXM+Cis8cHJvYmxlbT4KKyAgPGZpbGU+VGVzdC5qYXZhPC9maWxlPgorICA8bGluZT4xODwvbGluZT4KKyAgPHByb2JsZW1fY2xhc3Mgc2V2ZXJpdHk9IldBUk5JTkciIGF0dHJpYnV0ZV9rZXk9IldBUk5JTkdfQVRUUklCVVRFUyI+UmVkdW5kYW50IGFycmF5IGNyZWF0aW9uPC9wcm9ibGVtX2NsYXNzPgorICA8ZGVzY3JpcHRpb24+UmVkdW5kYW50IGFycmF5IGNyZWF0aW9uIGZvciBjYWxsaW5nIHZhcmFyZ3MgbWV0aG9kPC9kZXNjcmlwdGlvbj4KKzwvcHJvYmxlbT4KKyAgCis8L3Byb2JsZW1zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3JlZHVuZGFudEFycmF5Rm9yVmFyYXJncy9JREVBREVWMTUyMTUvc3JjL1Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3JlZHVuZGFudEFycmF5Rm9yVmFyYXJncy9JREVBREVWMTUyMTUvc3JjL1Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZTU5MDYyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcmVkdW5kYW50QXJyYXlGb3JWYXJhcmdzL0lERUFERVYxNTIxNS9zcmMvVGVzdC5qYXZhCkBAIC0wLDAgKzEsMjAgQEAKKworcHVibGljIGNsYXNzIFRlc3QgeworCisgICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgeworICAgICAgICBmb28obmV3IGJ5dGVbXXsgMSwgMiwgMyB9KTsKKyAgICB9CisKKyAgICBwcml2YXRlIHN0YXRpYyB2b2lkIGZvbyhieXRlLi4uIGJ5dGVzKSB7CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiVGVzdC5mb28oYnl0ZS4uLikiKTsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBieXRlcy5sZW5ndGg7IGkrKykgeworICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJieXRlc1siICsgaSArICJdID0gIiArIGJ5dGVzW2ldKTsKKyAgICAgICAgfQorICAgIH0KKworCisgICAgCisgICAgcHVibGljIHN0YXRpYyB2b2lkIGV4dHJhKFN0cmluZy4uLiBhcmdzKSB7CisgICAgICBleHRyYShuZXcgU3RyaW5nW117InZ2diIsImFhYSJ9KTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcmVkdW5kYW50QXJyYXlGb3JWYXJhcmdzL0lERUFERVYyNTkyMy9leHBlY3RlZC54bWwgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9yZWR1bmRhbnRBcnJheUZvclZhcmFyZ3MvSURFQURFVjI1OTIzL2V4cGVjdGVkLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zOWMyNzE2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcmVkdW5kYW50QXJyYXlGb3JWYXJhcmdzL0lERUFERVYyNTkyMy9leHBlY3RlZC54bWwKQEAgLTAsMCArMSwxMCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxwcm9ibGVtcz4KKzxwcm9ibGVtPgorICA8ZmlsZT5UZXN0LmphdmE8L2ZpbGU+CisgIDxsaW5lPjc8L2xpbmU+CisgIDxwcm9ibGVtX2NsYXNzIHNldmVyaXR5PSJXQVJOSU5HIiBhdHRyaWJ1dGVfa2V5PSJXQVJOSU5HX0FUVFJJQlVURVMiPlJlZHVuZGFudCBhcnJheSBjcmVhdGlvbjwvcHJvYmxlbV9jbGFzcz4KKyAgPGRlc2NyaXB0aW9uPlJlZHVuZGFudCBhcnJheSBjcmVhdGlvbiBmb3IgY2FsbGluZyB2YXJhcmdzIG1ldGhvZDwvZGVzY3JpcHRpb24+Cis8L3Byb2JsZW0+CisKKzwvcHJvYmxlbXM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcmVkdW5kYW50QXJyYXlGb3JWYXJhcmdzL0lERUFERVYyNTkyMy9zcmMvVGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcmVkdW5kYW50QXJyYXlGb3JWYXJhcmdzL0lERUFERVYyNTkyMy9zcmMvVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdkOGMzYjEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9yZWR1bmRhbnRBcnJheUZvclZhcmFyZ3MvSURFQURFVjI1OTIzL3NyYy9UZXN0LmphdmEKQEAgLTAsMCArMSw5IEBACisKK3B1YmxpYyBjbGFzcyBUZXN0IHsKKyAgICBwdWJsaWMgdm9pZCBmb28oT2JqZWN0Li4uIHBhcmFtcykge30KKworICAgIHsKKyAgICAgICAgZm9vKG5ldyBPYmplY3RbMl0pOworICAgICAgICBmb28obmV3IE9iamVjdFswXSk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3JlZHVuZGFudEFycmF5Rm9yVmFyYXJncy9jaGVja0VudW1Db25zdGFudC9leHBlY3RlZC54bWwgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9yZWR1bmRhbnRBcnJheUZvclZhcmFyZ3MvY2hlY2tFbnVtQ29uc3RhbnQvZXhwZWN0ZWQueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ0YzA3MmQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9yZWR1bmRhbnRBcnJheUZvclZhcmFyZ3MvY2hlY2tFbnVtQ29uc3RhbnQvZXhwZWN0ZWQueG1sCkBAIC0wLDAgKzEsOSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxwcm9ibGVtcz4KKyAgPHByb2JsZW0+CisgICAgPGZpbGU+VGVzdC5qYXZhPC9maWxlPgorICAgIDxsaW5lPjM8L2xpbmU+CisgICAgPHByb2JsZW1fY2xhc3Mgc2V2ZXJpdHk9IldBUk5JTkciIGF0dHJpYnV0ZV9rZXk9IldBUk5JTkdfQVRUUklCVVRFUyI+UmVkdW5kYW50IGFycmF5IGNyZWF0aW9uPC9wcm9ibGVtX2NsYXNzPgorICAgIDxkZXNjcmlwdGlvbj5SZWR1bmRhbnQgYXJyYXkgY3JlYXRpb24gZm9yIGNhbGxpbmcgdmFyYXJncyBtZXRob2Q8L2Rlc2NyaXB0aW9uPgorICA8L3Byb2JsZW0+Cis8L3Byb2JsZW1zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3JlZHVuZGFudEFycmF5Rm9yVmFyYXJncy9jaGVja0VudW1Db25zdGFudC9zcmMvVGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcmVkdW5kYW50QXJyYXlGb3JWYXJhcmdzL2NoZWNrRW51bUNvbnN0YW50L3NyYy9UZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWJlZjIyMAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3JlZHVuZGFudEFycmF5Rm9yVmFyYXJncy9jaGVja0VudW1Db25zdGFudC9zcmMvVGVzdC5qYXZhCkBAIC0wLDAgKzEsNyBAQAorCitwdWJsaWMgZW51bSBUZXN0IHsKKyAgQShuZXcgU3RyaW5nW117IjEiLCAiMiJ9KTsKKworICBUZXN0KFN0cmluZy4uLiBzcykgeworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcmVkdW5kYW50QXJyYXlGb3JWYXJhcmdzL2dlbmVyaWMvZXhwZWN0ZWQueG1sIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcmVkdW5kYW50QXJyYXlGb3JWYXJhcmdzL2dlbmVyaWMvZXhwZWN0ZWQueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQwMzk2MmUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9yZWR1bmRhbnRBcnJheUZvclZhcmFyZ3MvZ2VuZXJpYy9leHBlY3RlZC54bWwKQEAgLTAsMCArMSw5IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPHByb2JsZW1zPgorICA8cHJvYmxlbT4KKyAgICA8ZmlsZT5UZXN0LmphdmE8L2ZpbGU+CisgICAgPGxpbmU+MTA8L2xpbmU+CisgICAgPHByb2JsZW1fY2xhc3Mgc2V2ZXJpdHk9IldBUk5JTkciIGF0dHJpYnV0ZV9rZXk9IldBUk5JTkdfQVRUUklCVVRFUyI+UmVkdW5kYW50IGFycmF5IGNyZWF0aW9uPC9wcm9ibGVtX2NsYXNzPgorICAgIDxkZXNjcmlwdGlvbj5SZWR1bmRhbnQgYXJyYXkgY3JlYXRpb24gZm9yIGNhbGxpbmcgdmFyYXJncyBtZXRob2Q8L2Rlc2NyaXB0aW9uPgorICA8L3Byb2JsZW0+Cis8L3Byb2JsZW1zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3JlZHVuZGFudEFycmF5Rm9yVmFyYXJncy9nZW5lcmljL3NyYy9UZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9yZWR1bmRhbnRBcnJheUZvclZhcmFyZ3MvZ2VuZXJpYy9zcmMvVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlmMzhkZGMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9yZWR1bmRhbnRBcnJheUZvclZhcmFyZ3MvZ2VuZXJpYy9zcmMvVGVzdC5qYXZhCkBAIC0wLDAgKzEsMTggQEAKKworY2xhc3MgVGVzdCB7CisgIGNsYXNzIEEge30KKyAgY2xhc3MgQiBleHRlbmRzIEEge30KKworICB2b2lkIGYoKSB7CisgICAgQiBiID0gbmV3IEIoKTsKKyAgICBDPEE+IGwgPSBhc0MobmV3IEFbXXtifSk7CisgICAgQSBhID0gbmV3IEEoKTsKKyAgICBDPEE+IG0gPSBhc0MobmV3IEFbXXthfSk7CisgIH0KKworICBwdWJsaWMgc3RhdGljIDxUPiBDPFQ+IGFzQyhULi4uIHRzKSB7CisgICAgcmV0dXJuIG51bGw7CisgIH0KKworICBjbGFzcyBDPFQ+IHt9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9yZWR1bmRhbnRBcnJheUZvclZhcmFyZ3MvbmVzdGVkQXJyYXkvZXhwZWN0ZWQueG1sIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcmVkdW5kYW50QXJyYXlGb3JWYXJhcmdzL25lc3RlZEFycmF5L2V4cGVjdGVkLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNWUyOGQ4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcmVkdW5kYW50QXJyYXlGb3JWYXJhcmdzL25lc3RlZEFycmF5L2V4cGVjdGVkLnhtbApAQCAtMCwwICsxLDE3IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPHByb2JsZW1zPgorICA8cHJvYmxlbT4KKyAgICA8ZmlsZT5UZXN0LmphdmE8L2ZpbGU+CisgICAgPGxpbmU+MTM8L2xpbmU+CisgICAgPHByb2JsZW1fY2xhc3Mgc2V2ZXJpdHk9IldBUk5JTkciIGF0dHJpYnV0ZV9rZXk9IldBUk5JTkdfQVRUUklCVVRFUyI+UmVkdW5kYW50IGFycmF5IGNyZWF0aW9uPC9wcm9ibGVtX2NsYXNzPgorICAgIDxkZXNjcmlwdGlvbj5SZWR1bmRhbnQgYXJyYXkgY3JlYXRpb24gZm9yIGNhbGxpbmcgdmFyYXJncyBtZXRob2Q8L2Rlc2NyaXB0aW9uPgorICA8L3Byb2JsZW0+CisKKyAgPHByb2JsZW0+CisgICAgPGZpbGU+VGVzdC5qYXZhPC9maWxlPgorICAgIDxsaW5lPjE0PC9saW5lPgorICAgIDxwcm9ibGVtX2NsYXNzIHNldmVyaXR5PSJXQVJOSU5HIiBhdHRyaWJ1dGVfa2V5PSJXQVJOSU5HX0FUVFJJQlVURVMiPlJlZHVuZGFudCBhcnJheSBjcmVhdGlvbjwvcHJvYmxlbV9jbGFzcz4KKyAgICA8ZGVzY3JpcHRpb24+UmVkdW5kYW50IGFycmF5IGNyZWF0aW9uIGZvciBjYWxsaW5nIHZhcmFyZ3MgbWV0aG9kPC9kZXNjcmlwdGlvbj4KKyAgPC9wcm9ibGVtPgorCis8L3Byb2JsZW1zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3JlZHVuZGFudEFycmF5Rm9yVmFyYXJncy9uZXN0ZWRBcnJheS9zcmMvVGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcmVkdW5kYW50QXJyYXlGb3JWYXJhcmdzL25lc3RlZEFycmF5L3NyYy9UZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODYzYWM2ZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3JlZHVuZGFudEFycmF5Rm9yVmFyYXJncy9uZXN0ZWRBcnJheS9zcmMvVGVzdC5qYXZhCkBAIC0wLDAgKzEsMTYgQEAKK3B1YmxpYyBjbGFzcyBJbnRlbnRpb25UZXN0IHsKKyAgICBwdWJsaWMgSW50ZW50aW9uVGVzdCgpIHt9CisKKyAgICBwdWJsaWMgdm9pZCBtZXRob2QoIE9iamVjdCAuLi4gYXJncyApIHsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBhcmdzLmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oImFyZ3NbIitpKyJdID0gIiArIGFyZ3NbaV0pOworICAgICAgICB9CisgICAgfQorCisgICAgcHVibGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CisgICAgICAgIFN0cmluZ1tdIHBhcmFtcyA9IG5ldyBTdHJpbmdbXXsgIjAiLCAiMSIgfTsKKyAgICAgICAgbWV0aG9kKG5ldyBPYmplY3RbXXtwYXJhbXN9KTsKKyAgICAgICAgbWV0aG9kKG5ldyBPYmplY3RbXXsiMiIsIHBhcmFtc30pOworICAgICAgICBtZXRob2QobmV3IE9iamVjdFtde3BhcmFtcywgcGFyYW1zfSk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3JlZHVuZGFudEFycmF5Rm9yVmFyYXJncy9xdWlja0ZpeC9QcmVzZXJ2ZUNvbW1lbnRzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9yZWR1bmRhbnRBcnJheUZvclZhcmFyZ3MvcXVpY2tGaXgvUHJlc2VydmVDb21tZW50cy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg1NGIwYTQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9yZWR1bmRhbnRBcnJheUZvclZhcmFyZ3MvcXVpY2tGaXgvUHJlc2VydmVDb21tZW50cy5qYXZhCkBAIC0wLDAgKzEsOCBAQAorY2xhc3MgVGVzdCB7CisgIHZvaWQgZm9vKFN0cmluZy4uLiBzdHJzKXt9CisgIHZvaWQgYmFyKCkgeworICAgIGZvbyhuZXcgUzxjYXJldD50cmluZ1tdIHsKKyAgICAgICJlZHdxZWZ3ZSIsIC8vbXkgY29tbWVudAorICAgIH0pOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcmVkdW5kYW50QXJyYXlGb3JWYXJhcmdzL3F1aWNrRml4L1ByZXNlcnZlQ29tbWVudHNfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3JlZHVuZGFudEFycmF5Rm9yVmFyYXJncy9xdWlja0ZpeC9QcmVzZXJ2ZUNvbW1lbnRzX2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDExOGU3NQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3JlZHVuZGFudEFycmF5Rm9yVmFyYXJncy9xdWlja0ZpeC9QcmVzZXJ2ZUNvbW1lbnRzX2FmdGVyLmphdmEKQEAgLTAsMCArMSw3IEBACitjbGFzcyBUZXN0IHsKKyAgdm9pZCBmb28oU3RyaW5nLi4uIHN0cnMpe30KKyAgdm9pZCBiYXIoKSB7CisgICAgZm9vKCJlZHdxZWZ3ZSIsIC8vbXkgY29tbWVudAorICAgICk7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9yZWR1bmRhbnRBcnJheUZvclZhcmFyZ3MvcXVpY2tGaXgvUmVtb3ZlVGFpbGluZ0NvbW1hcy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcmVkdW5kYW50QXJyYXlGb3JWYXJhcmdzL3F1aWNrRml4L1JlbW92ZVRhaWxpbmdDb21tYXMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NTJlOTZjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcmVkdW5kYW50QXJyYXlGb3JWYXJhcmdzL3F1aWNrRml4L1JlbW92ZVRhaWxpbmdDb21tYXMuamF2YQpAQCAtMCwwICsxLDkgQEAKK3B1YmxpYyBjbGFzcyBNYWluIHsKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CisgICAgICAgIGRpc3BsYXkobmV3IFM8Y2FyZXQ+dHJpbmdbXXsKKyAgICAgICAgICAgICAgICAiaGkiLAorICAgICAgICB9KTsKKyAgICB9CisKKyAgICBwcml2YXRlIHN0YXRpYyB2b2lkIGRpc3BsYXkoU3RyaW5nLi4uIG1lc3NhZ2VzKSB7IH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9yZWR1bmRhbnRBcnJheUZvclZhcmFyZ3MvcXVpY2tGaXgvUmVtb3ZlVGFpbGluZ0NvbW1hc19hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcmVkdW5kYW50QXJyYXlGb3JWYXJhcmdzL3F1aWNrRml4L1JlbW92ZVRhaWxpbmdDb21tYXNfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NWU1YzVkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcmVkdW5kYW50QXJyYXlGb3JWYXJhcmdzL3F1aWNrRml4L1JlbW92ZVRhaWxpbmdDb21tYXNfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDcgQEAKK3B1YmxpYyBjbGFzcyBNYWluIHsKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CisgICAgICAgIGRpc3BsYXkoImhpIik7CisgICAgfQorCisgICAgcHJpdmF0ZSBzdGF0aWMgdm9pZCBkaXNwbGF5KFN0cmluZy4uLiBtZXNzYWdlcykgeyB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcmVkdW5kYW50Q2FzdC9BbWJpZ291c1Bhcm0xL2V4cGVjdGVkLnhtbCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3JlZHVuZGFudENhc3QvQW1iaWdvdXNQYXJtMS9leHBlY3RlZC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTM0NTc2ZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3JlZHVuZGFudENhc3QvQW1iaWdvdXNQYXJtMS9leHBlY3RlZC54bWwKQEAgLTAsMCArMSw5IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPHByb2JsZW1zPgorICA8cHJvYmxlbT4KKyAgICA8ZmlsZT5BbWJpZ291c1Bhcm0xLmphdmE8L2ZpbGU+CisgICAgPGxpbmU+MTE8L2xpbmU+CisgICAgPGRlc2NyaXB0aW9uPkNhc3RpbmcgYyB0byBBIGlzIHJlZHVuZGFudDwvZGVzY3JpcHRpb24+CisgIDwvcHJvYmxlbT4KKzwvcHJvYmxlbXM+CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3JlZHVuZGFudENhc3QvQW1iaWdvdXNQYXJtMS9zcmMvQW1iaWdvdXNQYXJtMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcmVkdW5kYW50Q2FzdC9BbWJpZ291c1Bhcm0xL3NyYy9BbWJpZ291c1Bhcm0xLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDJlOTBjNAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3JlZHVuZGFudENhc3QvQW1iaWdvdXNQYXJtMS9zcmMvQW1iaWdvdXNQYXJtMS5qYXZhCkBAIC0wLDAgKzEsMTMgQEAKK2ludGVyZmFjZSBBIHt9CisKK2ludGVyZmFjZSBCIHt9CisKK2NsYXNzIEMgaW1wbGVtZW50cyBBLCBCIHt9CisKK3B1YmxpYyBjbGFzcyBBbWJpZ291c1BhcmFtZXRlciB7CisgICBwdWJsaWMgdm9pZCB1YShBIGEpIHt9CisKKyAgIHB1YmxpYyB2b2lkIGNhbGxlcihDIGMpIHsKKyAgICAgdWEoKEEpYyk7CisgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcmVkdW5kYW50Q2FzdC9BbWJpZ291c1Bhcm0yL2V4cGVjdGVkLnhtbCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3JlZHVuZGFudENhc3QvQW1iaWdvdXNQYXJtMi9leHBlY3RlZC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDE5MGE2NQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3JlZHVuZGFudENhc3QvQW1iaWdvdXNQYXJtMi9leHBlY3RlZC54bWwKQEAgLTAsMCArMSwxNCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxwcm9ibGVtcz4KKyAgPHByb2JsZW0+CisgICAgPGZpbGU+QW1iaWdvdXNQYXJtMi5qYXZhPC9maWxlPgorICAgIDxsaW5lPjE0PC9saW5lPgorICAgIDxkZXNjcmlwdGlvbj5DYXN0aW5nIGMgdG8gQSBpcyByZWR1bmRhbnQ8L2Rlc2NyaXB0aW9uPgorICA8L3Byb2JsZW0+CisgIDxwcm9ibGVtPgorICAgIDxmaWxlPkFtYmlnb3VzUGFybTIuamF2YTwvZmlsZT4KKyAgICA8bGluZT4xNTwvbGluZT4KKyAgICA8ZGVzY3JpcHRpb24+Q2FzdGluZyBhIHRvIEEgaXMgcmVkdW5kYW50PC9kZXNjcmlwdGlvbj4KKyAgPC9wcm9ibGVtPgorPC9wcm9ibGVtcz4KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcmVkdW5kYW50Q2FzdC9BbWJpZ291c1Bhcm0yL3NyYy8uQW1iaWdvdXNQYXJtMi5qYXZhLnN3cCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3JlZHVuZGFudENhc3QvQW1iaWdvdXNQYXJtMi9zcmMvLkFtYmlnb3VzUGFybTIuamF2YS5zd3AKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTc0NzFkMQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3JlZHVuZGFudENhc3QvQW1iaWdvdXNQYXJtMi9zcmMvLkFtYmlnb3VzUGFybTIuamF2YS5zd3AKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcmVkdW5kYW50Q2FzdC9BbWJpZ291c1Bhcm0yL3NyYy9BbWJpZ291c1Bhcm0yLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9yZWR1bmRhbnRDYXN0L0FtYmlnb3VzUGFybTIvc3JjL0FtYmlnb3VzUGFybTIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MTRhZWU2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcmVkdW5kYW50Q2FzdC9BbWJpZ291c1Bhcm0yL3NyYy9BbWJpZ291c1Bhcm0yLmphdmEKQEAgLTAsMCArMSwxNyBAQAoraW50ZXJmYWNlIEEge30KKworaW50ZXJmYWNlIEIge30KKworY2xhc3MgQyBpbXBsZW1lbnRzIEEsIEIge30KKworcHVibGljIGNsYXNzIEFtYmlnb3VzUGFyYW1ldGVyIHsKKyAgIHZvaWQgbShBIGEpIHt9CisgICB2b2lkIG0oQiBiKSB7fQorCisgICBwdWJsaWMgdm9pZCBjYWxsZXIoQyBjKSB7CisgICAgIG0oKEEpYyk7CisgICAgIG0oKEEpbnVsbCk7CisgICAgIEEgYSA9IChBKWM7CisgICAgIG0oKEEpYSk7CisgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcmVkdW5kYW50Q2FzdC9BbWJpZ291c1Bhcm0zL2V4cGVjdGVkLnhtbCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3JlZHVuZGFudENhc3QvQW1iaWdvdXNQYXJtMy9leHBlY3RlZC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTIxMTU1NgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3JlZHVuZGFudENhc3QvQW1iaWdvdXNQYXJtMy9leHBlY3RlZC54bWwKQEAgLTAsMCArMSw5IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPHByb2JsZW1zPgorICA8cHJvYmxlbT4KKyAgICA8ZmlsZT5BbWJpZ291c1Bhcm0zLmphdmE8L2ZpbGU+CisgICAgPGxpbmU+MTM8L2xpbmU+CisgICAgPGRlc2NyaXB0aW9uPkNhc3RpbmcgbnVsbCB0byBBIGlzIHJlZHVuZGFudDwvZGVzY3JpcHRpb24+CisgIDwvcHJvYmxlbT4KKzwvcHJvYmxlbXM+CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3JlZHVuZGFudENhc3QvQW1iaWdvdXNQYXJtMy9zcmMvQW1iaWdvdXNQYXJtMy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcmVkdW5kYW50Q2FzdC9BbWJpZ291c1Bhcm0zL3NyYy9BbWJpZ291c1Bhcm0zLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzAzNTZjMAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3JlZHVuZGFudENhc3QvQW1iaWdvdXNQYXJtMy9zcmMvQW1iaWdvdXNQYXJtMy5qYXZhCkBAIC0wLDAgKzEsMTUgQEAKK2ludGVyZmFjZSBBIHt9CitpbnRlcmZhY2UgQiB7fQorCitwdWJsaWMgY2xhc3MgQW1iaWdvdXNQYXJhbWV0ZXIgeworICAgcHVibGljIHZvaWQgZihBIGEpIHt9CisgICBwdWJsaWMgdm9pZCBmKEIgYikge30KKyAgIHB1YmxpYyB2b2lkIGYoT2JqZWN0IG8pIHt9CisKKyAgIHB1YmxpYyB2b2lkIGcoT2JqZWN0IG8pIHt9CisKKyAgIHB1YmxpYyB2b2lkIGNhbGxlcigpIHsKKyAgICAgZigoQSludWxsKTsKKyAgICAgZygoQSludWxsKTsKKyAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9yZWR1bmRhbnRDYXN0L0FtYmlnb3VzUGFybTQvZXhwZWN0ZWQueG1sIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcmVkdW5kYW50Q2FzdC9BbWJpZ291c1Bhcm00L2V4cGVjdGVkLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45YWM4NzlkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcmVkdW5kYW50Q2FzdC9BbWJpZ291c1Bhcm00L2V4cGVjdGVkLnhtbApAQCAtMCwwICsxLDMgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8cHJvYmxlbXMgLz4KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcmVkdW5kYW50Q2FzdC9BbWJpZ291c1Bhcm00L3NyYy9BbWJpZ291c1Bhcm00LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9yZWR1bmRhbnRDYXN0L0FtYmlnb3VzUGFybTQvc3JjL0FtYmlnb3VzUGFybTQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zY2E2MDY5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcmVkdW5kYW50Q2FzdC9BbWJpZ291c1Bhcm00L3NyYy9BbWJpZ291c1Bhcm00LmphdmEKQEAgLTAsMCArMSw4IEBACitpbXBvcnQgamF2YXguc3dpbmcuKjsKK2ltcG9ydCBqYXZhLmF3dC4qOworCitwdWJsaWMgY2xhc3MgQW1iaWdvdXNQYXJhbWV0ZXIgeworICAgcHVibGljIHZvaWQgY2FsbGVyKCkgeworICAgICBuZXcgSkRpYWxvZygoRnJhbWUpbnVsbCwgIlRpdGxlIiwgdHJ1ZSk7CisgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcmVkdW5kYW50Q2FzdC9BbWJpZ291c1Bhcm01L2V4cGVjdGVkLnhtbCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3JlZHVuZGFudENhc3QvQW1iaWdvdXNQYXJtNS9leHBlY3RlZC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWFjODc5ZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3JlZHVuZGFudENhc3QvQW1iaWdvdXNQYXJtNS9leHBlY3RlZC54bWwKQEAgLTAsMCArMSwzIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPHByb2JsZW1zIC8+CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3JlZHVuZGFudENhc3QvQW1iaWdvdXNQYXJtNS9zcmMvQW1iaWdvdXNQYXJtNS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcmVkdW5kYW50Q2FzdC9BbWJpZ291c1Bhcm01L3NyYy9BbWJpZ291c1Bhcm01LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmI2MTU1M2E4MAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3JlZHVuZGFudENhc3QvQW1iaWdvdXNQYXJtNS9zcmMvQW1iaWdvdXNQYXJtNS5qYXZhCkBAIC0wLDAgKzEsOCBAQAoraW1wb3J0IGphdmF4LnN3aW5nLio7CitpbXBvcnQgamF2YS5hd3QuKjsKKworcHVibGljIGNsYXNzIEFtYmlnb3VzUGFyYW1ldGVyIHsKKyAgIHB1YmxpYyB2b2lkIGNhbGxlcigpIHsKKyAgICAgbmV3IEpEaWFsb2coICgoRnJhbWUpbnVsbCksICJUaXRsZSIsIHRydWUpOworICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3JlZHVuZGFudENhc3QvQW55T2ZUd28vZXhwZWN0ZWQueG1sIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcmVkdW5kYW50Q2FzdC9BbnlPZlR3by9leHBlY3RlZC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWFjODc5ZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3JlZHVuZGFudENhc3QvQW55T2ZUd28vZXhwZWN0ZWQueG1sCkBAIC0wLDAgKzEsMyBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxwcm9ibGVtcyAvPgorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9yZWR1bmRhbnRDYXN0L0FueU9mVHdvL3NyYy9BbnlPZlR3by5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcmVkdW5kYW50Q2FzdC9BbnlPZlR3by9zcmMvQW55T2ZUd28uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYjkyMmFjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcmVkdW5kYW50Q2FzdC9BbnlPZlR3by9zcmMvQW55T2ZUd28uamF2YQpAQCAtMCwwICsxLDExIEBACitwYWNrYWdlIGNvbTsKKworcHVibGljIGNsYXNzIFRlc3QgeworICBzdGF0aWMgdm9pZCBmKE9iamVjdCBzLCBPYmplY3Qgbyl7fQorICBzdGF0aWMgdm9pZCBmKFN0cmluZyBzLCBTdHJpbmcgbyl7fQorCisgIHZvaWQgZm9vKCl7CisgICAgT2JqZWN0IG87CisgICAgZigoU3RyaW5nKW8sIChTdHJpbmcpbyk7CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3JlZHVuZGFudENhc3QvQXJyYXlBY2Nlc3MvZXhwZWN0ZWQueG1sIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcmVkdW5kYW50Q2FzdC9BcnJheUFjY2Vzcy9leHBlY3RlZC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWFjODc5ZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3JlZHVuZGFudENhc3QvQXJyYXlBY2Nlc3MvZXhwZWN0ZWQueG1sCkBAIC0wLDAgKzEsMyBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxwcm9ibGVtcyAvPgorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9yZWR1bmRhbnRDYXN0L0FycmF5QWNjZXNzL3NyYy9BcnJheUFjY2Vzcy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcmVkdW5kYW50Q2FzdC9BcnJheUFjY2Vzcy9zcmMvQXJyYXlBY2Nlc3MuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xY2JhYTA4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcmVkdW5kYW50Q2FzdC9BcnJheUFjY2Vzcy9zcmMvQXJyYXlBY2Nlc3MuamF2YQpAQCAtMCwwICsxLDI0IEBACitpbXBvcnQgamF2YS51dGlsLio7CisvKgorICogQ29weXJpZ2h0IDIwMDAtMjAxMiBKZXRCcmFpbnMgcy5yLm8uCisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCitjbGFzcyBBIHsKKyAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nIGFyZ3MpIHsKKyAgICBNYXA8U3RyaW5nLCBPYmplY3Q+IG1hcCA9IG5ldyBIYXNoTWFwPFN0cmluZywgT2JqZWN0PigpOworICAgIG1hcC5wdXQoImEiLCBuZXcgaW50WzFdKTsKKyAgICAoKGludFtdKW1hcC5nZXQoImEiKSlbMF0gKz0gNTsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcmVkdW5kYW50Q2FzdC9Bc3NpZ25tZW50MS9leHBlY3RlZC54bWwgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9yZWR1bmRhbnRDYXN0L0Fzc2lnbm1lbnQxL2V4cGVjdGVkLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MDZmODZlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcmVkdW5kYW50Q2FzdC9Bc3NpZ25tZW50MS9leHBlY3RlZC54bWwKQEAgLTAsMCArMSw5IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPHByb2JsZW1zPgorICA8cHJvYmxlbT4KKyAgICA8ZmlsZT5Bc3NpZ25tZW50MS5qYXZhPC9maWxlPgorICAgIDxsaW5lPjQ8L2xpbmU+CisgICAgPGRlc2NyaXB0aW9uPkNhc3RpbmcgbnVsbCB0byBTdHJpbmcgaXMgcmVkdW5kYW50PC9kZXNjcmlwdGlvbj4KKyAgPC9wcm9ibGVtPgorPC9wcm9ibGVtcz4KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcmVkdW5kYW50Q2FzdC9Bc3NpZ25tZW50MS9zcmMvQXNzaWdubWVudDEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3JlZHVuZGFudENhc3QvQXNzaWdubWVudDEvc3JjL0Fzc2lnbm1lbnQxLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGZmNmM0YgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3JlZHVuZGFudENhc3QvQXNzaWdubWVudDEvc3JjL0Fzc2lnbm1lbnQxLmphdmEKQEAgLTAsMCArMSw2IEBACitjbGFzcyBUZXN0eworICBzdGF0aWMgZigpeworICAgIE9iamVjdCBvOworICAgIG8gPSAoU3RyaW5nKW51bGw7CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3JlZHVuZGFudENhc3QvQ29tcGFyaW5nVG9OdWxsL2V4cGVjdGVkLnhtbCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3JlZHVuZGFudENhc3QvQ29tcGFyaW5nVG9OdWxsL2V4cGVjdGVkLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jOTQyZjM3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcmVkdW5kYW50Q2FzdC9Db21wYXJpbmdUb051bGwvZXhwZWN0ZWQueG1sCkBAIC0wLDAgKzEsOSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxwcm9ibGVtcz4KKyAgPHByb2JsZW0+CisgICAgPGZpbGU+VGVzdC5qYXZhPC9maWxlPgorICAgIDxsaW5lPjQ8L2xpbmU+CisgICAgPGRlc2NyaXB0aW9uPkNhc3RpbmcgbyB0byBTdHJpbmcgaXMgcmVkdW5kYW50PC9kZXNjcmlwdGlvbj4KKyAgPC9wcm9ibGVtPgorPC9wcm9ibGVtcz4KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcmVkdW5kYW50Q2FzdC9Db21wYXJpbmdUb051bGwvc3JjL1Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3JlZHVuZGFudENhc3QvQ29tcGFyaW5nVG9OdWxsL3NyYy9UZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjhkOTgyOQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3JlZHVuZGFudENhc3QvQ29tcGFyaW5nVG9OdWxsL3NyYy9UZXN0LmphdmEKQEAgLTAsMCArMSw2IEBACitwdWJsaWMgY2xhc3MgVGVzdCB7CisgICBwdWJsaWMgYm9vbGVhbiBmb28oKSB7CisgICAgICAgIE9iamVjdCBvID0gbnVsbDsKKyAgICAgICAgcmV0dXJuIChTdHJpbmcpIG8gPT0gbnVsbDsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcmVkdW5kYW50Q2FzdC9EaWZmZXJlbnRGaWVsZHMvZXhwZWN0ZWQueG1sIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcmVkdW5kYW50Q2FzdC9EaWZmZXJlbnRGaWVsZHMvZXhwZWN0ZWQueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVlOTMzNDkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9yZWR1bmRhbnRDYXN0L0RpZmZlcmVudEZpZWxkcy9leHBlY3RlZC54bWwKQEAgLTAsMCArMSwzIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPHByb2JsZW1zPgorPC9wcm9ibGVtcz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9yZWR1bmRhbnRDYXN0L0RpZmZlcmVudEZpZWxkcy9zcmMvVGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcmVkdW5kYW50Q2FzdC9EaWZmZXJlbnRGaWVsZHMvc3JjL1Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZjI1YTgzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcmVkdW5kYW50Q2FzdC9EaWZmZXJlbnRGaWVsZHMvc3JjL1Rlc3QuamF2YQpAQCAtMCwwICsxLDEyIEBACitjbGFzcyBZIHsKKyAgICBpbnQgc2l6ZSA9IDQ7Cit9CisKK2NsYXNzIFogZXh0ZW5kcyBZIHsKKyAgICBpbnQgc2l6ZSA9IDU7CisKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CisgICAgICAgIFogeiA9IG5ldyBaKCk7CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiei5zaXplID0gIiArICgoWSl6KS5zaXplKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcmVkdW5kYW50Q2FzdC9Eb3VibGVDYXN0MS9leHBlY3RlZC54bWwgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9yZWR1bmRhbnRDYXN0L0RvdWJsZUNhc3QxL2V4cGVjdGVkLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44OWE1OWVjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcmVkdW5kYW50Q2FzdC9Eb3VibGVDYXN0MS9leHBlY3RlZC54bWwKQEAgLTAsMCArMSw5IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPHByb2JsZW1zPgorICA8cHJvYmxlbT4KKyAgICA8ZmlsZT5Eb3VibGVDYXN0MS5qYXZhPC9maWxlPgorICAgIDxsaW5lPjc8L2xpbmU+CisgICAgPGRlc2NyaXB0aW9uPkNhc3RpbmcgbyB0byBMaXN0IGlzIHJlZHVuZGFudDwvZGVzY3JpcHRpb24+CisgIDwvcHJvYmxlbT4KKzwvcHJvYmxlbXM+CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3JlZHVuZGFudENhc3QvRG91YmxlQ2FzdDEvc3JjL0RvdWJsZUNhc3QxLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9yZWR1bmRhbnRDYXN0L0RvdWJsZUNhc3QxL3NyYy9Eb3VibGVDYXN0MS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYwNTY5OGQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9yZWR1bmRhbnRDYXN0L0RvdWJsZUNhc3QxL3NyYy9Eb3VibGVDYXN0MS5qYXZhCkBAIC0wLDAgKzEsOSBAQAoraW1wb3J0IGphdmEudXRpbC5MaXN0OworaW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7CisKK2NsYXNzIFRlc3R7CisgIHN0YXRpYyBmKCl7CisgICAgT2JqZWN0IG87CisgICAgQXJyYXlMaXN0IGxpc3QgPSAoQXJyYXlMaXN0KShMaXN0KW87CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3JlZHVuZGFudENhc3QvRG91YmxlQ2FzdDIvZXhwZWN0ZWQueG1sIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcmVkdW5kYW50Q2FzdC9Eb3VibGVDYXN0Mi9leHBlY3RlZC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTY4MjllMQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3JlZHVuZGFudENhc3QvRG91YmxlQ2FzdDIvZXhwZWN0ZWQueG1sCkBAIC0wLDAgKzEsOSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxwcm9ibGVtcz4KKyAgPHByb2JsZW0+CisgICAgPGZpbGU+RG91YmxlQ2FzdDIuamF2YTwvZmlsZT4KKyAgICA8bGluZT43PC9saW5lPgorICAgIDxkZXNjcmlwdGlvbj5DYXN0aW5nIG8gdG8gTGlzdCBpcyByZWR1bmRhbnQ8L2Rlc2NyaXB0aW9uPgorICA8L3Byb2JsZW0+Cis8L3Byb2JsZW1zPgorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9yZWR1bmRhbnRDYXN0L0RvdWJsZUNhc3QyL3NyYy9Eb3VibGVDYXN0Mi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcmVkdW5kYW50Q2FzdC9Eb3VibGVDYXN0Mi9zcmMvRG91YmxlQ2FzdDIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YmI4YjY0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcmVkdW5kYW50Q2FzdC9Eb3VibGVDYXN0Mi9zcmMvRG91YmxlQ2FzdDIuamF2YQpAQCAtMCwwICsxLDkgQEAKK2ltcG9ydCBqYXZhLnV0aWwuTGlzdDsKK2ltcG9ydCBqYXZhLnV0aWwuQXJyYXlMaXN0OworCitjbGFzcyBUZXN0eworICBzdGF0aWMgZigpeworICAgIE9iamVjdCBvOworICAgIEFycmF5TGlzdCBsaXN0ID0gKEFycmF5TGlzdCkoKExpc3Qpbyk7CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3JlZHVuZGFudENhc3QvRG91YmxlQ2FzdDMvZXhwZWN0ZWQueG1sIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcmVkdW5kYW50Q2FzdC9Eb3VibGVDYXN0My9leHBlY3RlZC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZThjMjAxYwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3JlZHVuZGFudENhc3QvRG91YmxlQ2FzdDMvZXhwZWN0ZWQueG1sCkBAIC0wLDAgKzEsMTQgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8cHJvYmxlbXM+CisgIDxwcm9ibGVtPgorICAgIDxmaWxlPkRvdWJsZUNhc3QzLmphdmE8L2ZpbGU+CisgICAgPGxpbmU+NDwvbGluZT4KKyAgICA8ZGVzY3JpcHRpb24+Q2FzdGluZyAnKFN0cmluZykgbycgdG8gU3RyaW5nIGlzIHJlZHVuZGFudDwvZGVzY3JpcHRpb24+CisgIDwvcHJvYmxlbT4KKyAgPHByb2JsZW0+CisgICAgPGZpbGU+RG91YmxlQ2FzdDMuamF2YTwvZmlsZT4KKyAgICA8bGluZT40PC9saW5lPgorICAgIDxkZXNjcmlwdGlvbj5DYXN0aW5nICdvJyB0byBTdHJpbmcgaXMgcmVkdW5kYW50PC9kZXNjcmlwdGlvbj4KKyAgPC9wcm9ibGVtPgorPC9wcm9ibGVtcz4KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcmVkdW5kYW50Q2FzdC9Eb3VibGVDYXN0My9zcmMvRG91YmxlQ2FzdDMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3JlZHVuZGFudENhc3QvRG91YmxlQ2FzdDMvc3JjL0RvdWJsZUNhc3QzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzZkYTljYgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3JlZHVuZGFudENhc3QvRG91YmxlQ2FzdDMvc3JjL0RvdWJsZUNhc3QzLmphdmEKQEAgLTAsMCArMSw2IEBACitjbGFzcyBUZXN0eworICBzdGF0aWMgZigpeworICAgIE9iamVjdCBvOworICAgIFN0cmluZyBzID0gKFN0cmluZykgKFN0cmluZykgbzsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcmVkdW5kYW50Q2FzdC9Eb3VibGVDYXN0NC9leHBlY3RlZC54bWwgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9yZWR1bmRhbnRDYXN0L0RvdWJsZUNhc3Q0L2V4cGVjdGVkLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MGQ1Y2ZlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcmVkdW5kYW50Q2FzdC9Eb3VibGVDYXN0NC9leHBlY3RlZC54bWwKQEAgLTAsMCArMSwxNCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxwcm9ibGVtcz4KKyAgPHByb2JsZW0+CisgICAgPGZpbGU+RG91YmxlQ2FzdDQuamF2YTwvZmlsZT4KKyAgICA8bGluZT40PC9saW5lPgorICAgIDxkZXNjcmlwdGlvbj5DYXN0aW5nICcoU3RyaW5nKSBvJyB0byBPYmplY3QgaXMgcmVkdW5kYW50PC9kZXNjcmlwdGlvbj4KKyAgPC9wcm9ibGVtPgorICA8cHJvYmxlbT4KKyAgICA8ZmlsZT5Eb3VibGVDYXN0NC5qYXZhPC9maWxlPgorICAgIDxsaW5lPjQ8L2xpbmU+CisgICAgPGRlc2NyaXB0aW9uPkNhc3RpbmcgJ28nIHRvIFN0cmluZyBpcyByZWR1bmRhbnQ8L2Rlc2NyaXB0aW9uPgorICA8L3Byb2JsZW0+Cis8L3Byb2JsZW1zPgorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9yZWR1bmRhbnRDYXN0L0RvdWJsZUNhc3Q0L3NyYy9Eb3VibGVDYXN0NC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcmVkdW5kYW50Q2FzdC9Eb3VibGVDYXN0NC9zcmMvRG91YmxlQ2FzdDQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNGI5MDA5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcmVkdW5kYW50Q2FzdC9Eb3VibGVDYXN0NC9zcmMvRG91YmxlQ2FzdDQuamF2YQpAQCAtMCwwICsxLDYgQEAKK2NsYXNzIFRlc3R7CisgIHN0YXRpYyBmKCl7CisgICAgT2JqZWN0IG87CisgICAgT2JqZWN0IG8yID0gKE9iamVjdCkgKFN0cmluZykgbzsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcmVkdW5kYW50Q2FzdC9Eb3VibGVDYXN0NS9leHBlY3RlZC54bWwgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9yZWR1bmRhbnRDYXN0L0RvdWJsZUNhc3Q1L2V4cGVjdGVkLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45YWM4NzlkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcmVkdW5kYW50Q2FzdC9Eb3VibGVDYXN0NS9leHBlY3RlZC54bWwKQEAgLTAsMCArMSwzIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPHByb2JsZW1zIC8+CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3JlZHVuZGFudENhc3QvRG91YmxlQ2FzdDUvc3JjL0RvdWJsZUNhc3Q1LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9yZWR1bmRhbnRDYXN0L0RvdWJsZUNhc3Q1L3NyYy9Eb3VibGVDYXN0NS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIwZDk3MDMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9yZWR1bmRhbnRDYXN0L0RvdWJsZUNhc3Q1L3NyYy9Eb3VibGVDYXN0NS5qYXZhCkBAIC0wLDAgKzEsNSBAQAorY2xhc3MgVGVzdHsKKyAgc3RhdGljIGYoZG91YmxlIGEpeworICAgIGRvdWJsZSBiID0gKGRvdWJsZSkoaW50KWEgLyAxMDA7CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3JlZHVuZGFudENhc3QvRmllbGRBY2Nlc3NPblRoZUxlZnRPZkFzc2lnbm1lbnQvZXhwZWN0ZWQueG1sIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcmVkdW5kYW50Q2FzdC9GaWVsZEFjY2Vzc09uVGhlTGVmdE9mQXNzaWdubWVudC9leHBlY3RlZC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmQ4MDI4YQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3JlZHVuZGFudENhc3QvRmllbGRBY2Nlc3NPblRoZUxlZnRPZkFzc2lnbm1lbnQvZXhwZWN0ZWQueG1sCkBAIC0wLDAgKzEsMTYgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8cHJvYmxlbXM+CisgIDxwcm9ibGVtPgorICAgIDxmaWxlPkEuamF2YTwvZmlsZT4KKyAgICA8bGluZT42PC9saW5lPgorICAgIDxkZXNjcmlwdGlvbj5DYXN0aW5nICZsdDtjb2RlJmd0O3QmbHQ7L2NvZGUmZ3Q7IHRvICZsdDtjb2RlJmd0O0ZvbyZsdDsvY29kZSZndDsgaXMgcmVkdW5kYW50PC9kZXNjcmlwdGlvbj4KKyAgPC9wcm9ibGVtPgorCisgIDxwcm9ibGVtPgorICAgIDxmaWxlPkEuamF2YTwvZmlsZT4KKyAgICA8bGluZT41PC9saW5lPgorICAgIDxkZXNjcmlwdGlvbj5DYXN0aW5nICZsdDtjb2RlJmd0O3QmbHQ7L2NvZGUmZ3Q7IHRvICZsdDtjb2RlJmd0O0ZvbyZsdDsvY29kZSZndDsgaXMgcmVkdW5kYW50PC9kZXNjcmlwdGlvbj4KKyAgPC9wcm9ibGVtPgorCis8L3Byb2JsZW1zPgorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9yZWR1bmRhbnRDYXN0L0ZpZWxkQWNjZXNzT25UaGVMZWZ0T2ZBc3NpZ25tZW50L3NyYy9BLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9yZWR1bmRhbnRDYXN0L0ZpZWxkQWNjZXNzT25UaGVMZWZ0T2ZBc3NpZ25tZW50L3NyYy9BLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjM4ZjcxMQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3JlZHVuZGFudENhc3QvRmllbGRBY2Nlc3NPblRoZUxlZnRPZkFzc2lnbm1lbnQvc3JjL0EuamF2YQpAQCAtMCwwICsxLDExIEBACithYnN0cmFjdCBjbGFzcyBGb28geworICBwcm90ZWN0ZWQgaW50IGZpZWxkOworCisgIHB1YmxpYyBpbnQgZihCYXIgdCl7CisgICAgKChGb28pdCkuZmllbGQgPSAwOworICAgIHJldHVybiAoKEZvbyl0KS5maWVsZDsKKyAgfQorCit9CisKK2NsYXNzIEJhciBleHRlbmRzIEZvb3t9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcmVkdW5kYW50Q2FzdC9JREVBREVWMTUxNzAvZXhwZWN0ZWQueG1sIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcmVkdW5kYW50Q2FzdC9JREVBREVWMTUxNzAvZXhwZWN0ZWQueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc5NmEzMTUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9yZWR1bmRhbnRDYXN0L0lERUFERVYxNTE3MC9leHBlY3RlZC54bWwKQEAgLTAsMCArMSwyIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPHByb2JsZW1zIC8+CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9yZWR1bmRhbnRDYXN0L0lERUFERVYxNTE3MC9zcmMvVGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcmVkdW5kYW50Q2FzdC9JREVBREVWMTUxNzAvc3JjL1Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YmRhNDJjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcmVkdW5kYW50Q2FzdC9JREVBREVWMTUxNzAvc3JjL1Rlc3QuamF2YQpAQCAtMCwwICsxLDE2IEBACitjbGFzcyBBIHsKKyAgICB2b2lkIGZvbygpIHRocm93cyBFeGNlcHRpb24ge30KK30KKworY2xhc3MgQiBleHRlbmRzIEEgeworICAgIHZvaWQgZm9vKCkgIHsKKworICAgIH0KK30KKworY2xhc3MgQyB7CisgICAgeworICAgICAgICBBIGEgPSBuZXcgQigpOworICAgICAgICAoKEIpIGEpLmZvbygpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9yZWR1bmRhbnRDYXN0L0lERUFERVYyNTY3NS9leHBlY3RlZC54bWwgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9yZWR1bmRhbnRDYXN0L0lERUFERVYyNTY3NS9leHBlY3RlZC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzQ0MGE0OQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3JlZHVuZGFudENhc3QvSURFQURFVjI1Njc1L2V4cGVjdGVkLnhtbApAQCAtMCwwICsxLDkgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8cHJvYmxlbXM+CisgIDxwcm9ibGVtPgorICAgIDxmaWxlPkEuamF2YTwvZmlsZT4KKyAgICA8bGluZT4zPC9saW5lPgorICAgIDxkZXNjcmlwdGlvbj5DYXN0aW5nICdhcnJheScgdG8gU3RyaW5nW10gaXMgcmVkdW5kYW50PC9kZXNjcmlwdGlvbj4KKyAgPC9wcm9ibGVtPgorPC9wcm9ibGVtcz4KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcmVkdW5kYW50Q2FzdC9JREVBREVWMjU2NzUvc3JjL0EuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3JlZHVuZGFudENhc3QvSURFQURFVjI1Njc1L3NyYy9BLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDc0YTA0MQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3JlZHVuZGFudENhc3QvSURFQURFVjI1Njc1L3NyYy9BLmphdmEKQEAgLTAsMCArMSwxNSBAQAorcHVibGljIGNsYXNzIFRlc3QgeworICAgIHB1YmxpYyB2b2lkIGZvbyhPYmplY3RbXSBhcnJheSkgeworICAgICAgICAoKFN0cmluZ1tdKSBhcnJheSlbMF0gPSAiICI7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgYmFyKFN0cmluZ1tdIGFycmF5KSB7CisgICAgICAgICgoT2JqZWN0W10pIGFycmF5KVswXSA9IG5ldyBPYmplY3QoKTsKKyAgICB9CisKKyAgICBwdWJsaWMgT2JqZWN0IG9iajsgIAorICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBzZXRPYmpWYWx1ZUluQXJyYXkoVGVzdCB0LCBPYmplY3QgdmFsKSB7CisgICAgICB0Lm9iaiA9IG5ldyBPYmplY3RbMV07CisgICAgICAoKE9iamVjdFtdKXQub2JqKVswXSA9IHZhbDsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcmVkdW5kYW50Q2FzdC9JREVBREVWNjgxOC9leHBlY3RlZC54bWwgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9yZWR1bmRhbnRDYXN0L0lERUFERVY2ODE4L2V4cGVjdGVkLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZDE3OGU5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcmVkdW5kYW50Q2FzdC9JREVBREVWNjgxOC9leHBlY3RlZC54bWwKQEAgLTAsMCArMSw5IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPHByb2JsZW1zPgorICA8cHJvYmxlbT4KKyAgICA8ZmlsZT5BLmphdmE8L2ZpbGU+CisgICAgPGxpbmU+MTM8L2xpbmU+CisgICAgPGRlc2NyaXB0aW9uPkNhc3RpbmcgcHJpY2VzLmdldChudWxsKSB0byBCaWRBc2sgaXMgcmVkdW5kYW50PC9kZXNjcmlwdGlvbj4KKyAgPC9wcm9ibGVtPgorPC9wcm9ibGVtcz4KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcmVkdW5kYW50Q2FzdC9JREVBREVWNjgxOC9zcmMvQS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcmVkdW5kYW50Q2FzdC9JREVBREVWNjgxOC9zcmMvQS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAwZTZmYmQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9yZWR1bmRhbnRDYXN0L0lERUFERVY2ODE4L3NyYy9BLmphdmEKQEAgLTAsMCArMSwxNSBAQAorY2xhc3MgR2V0dGVyIHsKKyAgICBCaWRBc2sgZ2V0KFN0cmluZyBzKSB7CisgICAgICAgIHJldHVybiBudWxsOworICAgIH0KK30KKworY2xhc3MgQmlkQXNrIHsKKyAgICBwdWJsaWMgT2JqZWN0IGdldE9wZW5RdW90ZTsKK30KKworcHVibGljIGNsYXNzIEEgeworICAgIHN0YXRpYyBPYmplY3QgZihHZXR0ZXIgcHJpY2VzKSB7CisgICAgICAgIHJldHVybiBTeXN0ZW0uY3VycmVudFRpbWVNaWxsaXMoKSA9PSAyLjAgPyAgICgoQmlkQXNrKSBwcmljZXMuZ2V0KG51bGwpKS5nZXRPcGVuUXVvdGUgOiBudWxsOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3JlZHVuZGFudENhc3QvSW5Db25kaXRpb25hbC9leHBlY3RlZC54bWwgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9yZWR1bmRhbnRDYXN0L0luQ29uZGl0aW9uYWwvZXhwZWN0ZWQueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ5M2ZiMWMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9yZWR1bmRhbnRDYXN0L0luQ29uZGl0aW9uYWwvZXhwZWN0ZWQueG1sCkBAIC0wLDAgKzEsOSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxwcm9ibGVtcz4KKyAgPHByb2JsZW0+CisgICAgPGZpbGU+QS5qYXZhPC9maWxlPgorICAgIDxsaW5lPjM8L2xpbmU+CisgICAgPHByb2JsZW1fY2xhc3Mgc2V2ZXJpdHk9IldBUk5JTkciIGF0dHJpYnV0ZV9rZXk9Ik5PVF9VU0VEX0VMRU1FTlRfQVRUUklCVVRFUyI+UmVkdW5kYW50IHR5cGUgY2FzdDwvcHJvYmxlbV9jbGFzcz4KKyAgICA8ZGVzY3JpcHRpb24+Q2FzdGluZyAmbHQ7Y29kZSZndDtudWxsJmx0Oy9jb2RlJmd0OyB0byAmbHQ7Y29kZSZndDtTdHJpbmcmbHQ7L2NvZGUmZ3Q7IGlzIHJlZHVuZGFudDwvZGVzY3JpcHRpb24+CisgIDwvcHJvYmxlbT4KKzwvcHJvYmxlbXM+CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9yZWR1bmRhbnRDYXN0L0luQ29uZGl0aW9uYWwvc3JjL0EuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3JlZHVuZGFudENhc3QvSW5Db25kaXRpb25hbC9zcmMvQS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI0YWM2MGMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9yZWR1bmRhbnRDYXN0L0luQ29uZGl0aW9uYWwvc3JjL0EuamF2YQpAQCAtMCwwICsxLDUgQEAKK2NsYXNzIEEgeworICAgeworICAgICBTdHJpbmcgcyA9IHRydWUgPyAiIiA6IChTdHJpbmcpIG51bGw7IC8vY2FzdCBpcyBuZWVkZWQKKyAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9yZWR1bmRhbnRDYXN0L0luQ29uZGl0aW9uYWxQcmVzZXJ2ZVJlc29sdmUvZXhwZWN0ZWQueG1sIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcmVkdW5kYW50Q2FzdC9JbkNvbmRpdGlvbmFsUHJlc2VydmVSZXNvbHZlL2V4cGVjdGVkLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMzQzZWIwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcmVkdW5kYW50Q2FzdC9JbkNvbmRpdGlvbmFsUHJlc2VydmVSZXNvbHZlL2V4cGVjdGVkLnhtbApAQCAtMCwwICsxLDkgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8cHJvYmxlbXM+CisgIDxwcm9ibGVtPgorICAgIDxmaWxlPkEuamF2YTwvZmlsZT4KKyAgICA8bGluZT40PC9saW5lPgorICAgIDxwcm9ibGVtX2NsYXNzIHNldmVyaXR5PSJXQVJOSU5HIiBhdHRyaWJ1dGVfa2V5PSJOT1RfVVNFRF9FTEVNRU5UX0FUVFJJQlVURVMiPlJlZHVuZGFudCB0eXBlIGNhc3Q8L3Byb2JsZW1fY2xhc3M+CisgICAgPGRlc2NyaXB0aW9uPkNhc3RpbmcgJmx0O2NvZGUmZ3Q7cGFyYW0mbHQ7L2NvZGUmZ3Q7IHRvICZsdDtjb2RlJmd0O09iamVjdCZsdDsvY29kZSZndDsgaXMgcmVkdW5kYW50PC9kZXNjcmlwdGlvbj4KKyAgPC9wcm9ibGVtPgorPC9wcm9ibGVtcz4KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3JlZHVuZGFudENhc3QvSW5Db25kaXRpb25hbFByZXNlcnZlUmVzb2x2ZS9zcmMvQS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcmVkdW5kYW50Q2FzdC9JbkNvbmRpdGlvbmFsUHJlc2VydmVSZXNvbHZlL3NyYy9BLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTlkOTVkZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3JlZHVuZGFudENhc3QvSW5Db25kaXRpb25hbFByZXNlcnZlUmVzb2x2ZS9zcmMvQS5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKK2NsYXNzIEEgeworICB2b2lkIGFkZChPYmplY3QgbywgU3RyaW5nIHBhcmFtKSB7CisgICAgYWRkKG8sIG8gIT0gbnVsbCA/IG51bGwgOiAoT2JqZWN0KSBwYXJhbSk7CisgICAgYWRkKG8sIG8gPT0gbnVsbCA/IG5ldyBPYmplY3QoKSA6IChPYmplY3QpIHBhcmFtKTsKKyAgfQorCisgIHZvaWQgYWRkKE9iamVjdCBvLCBPYmplY3QgcGFyYW0pIHsKKworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcmVkdW5kYW50Q2FzdC9JbmFjY2Vzc2libGUvZXhwZWN0ZWQueG1sIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcmVkdW5kYW50Q2FzdC9JbmFjY2Vzc2libGUvZXhwZWN0ZWQueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU4MGE4ODkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9yZWR1bmRhbnRDYXN0L0luYWNjZXNzaWJsZS9leHBlY3RlZC54bWwKQEAgLTAsMCArMSwzIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPHByb2JsZW1zPgorPC9wcm9ibGVtcz4KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3JlZHVuZGFudENhc3QvSW5hY2Nlc3NpYmxlL3NyYy9UZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9yZWR1bmRhbnRDYXN0L0luYWNjZXNzaWJsZS9zcmMvVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRjMzZkNWIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9yZWR1bmRhbnRDYXN0L0luYWNjZXNzaWJsZS9zcmMvVGVzdC5qYXZhCkBAIC0wLDAgKzEsMTIgQEAKK2NsYXNzIEVudHJ5IHsKKyAgcHJpdmF0ZSBmaW5hbCBPYmplY3Qgb2JqOworICBwcm90ZWN0ZWQgRW50cnkoRGlyZWN0b3J5IHBhcmVudCkgeworICAgIG9iaiA9ICgoRW50cnkpcGFyZW50KS5vYmo7IC8vY2FzdCBpcyBuZWVkZWQgYmVjYXVzZSAnb2JqJyBpcyBub3QgdmlzaWJsZSB3aXRoICdEaXJlY3RvcnknIGFjY2VzcyBjbGFzcworICB9Cit9CisKK2NsYXNzIERpcmVjdG9yeSBleHRlbmRzIEVudHJ5IHsKKyAgcHVibGljIERpcmVjdG9yeShEaXJlY3RvcnkgcGFyZW50KSB7CisgICAgc3VwZXIocGFyZW50KTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3JlZHVuZGFudENhc3QvSW5pdGlhbGl6ZXIxL2V4cGVjdGVkLnhtbCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3JlZHVuZGFudENhc3QvSW5pdGlhbGl6ZXIxL2V4cGVjdGVkLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MDU0ZTViCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcmVkdW5kYW50Q2FzdC9Jbml0aWFsaXplcjEvZXhwZWN0ZWQueG1sCkBAIC0wLDAgKzEsOSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxwcm9ibGVtcz4KKyAgPHByb2JsZW0+CisgICAgPGZpbGU+SW5pdGlhbGl6ZXIxLmphdmE8L2ZpbGU+CisgICAgPGxpbmU+MzwvbGluZT4KKyAgICA8ZGVzY3JpcHRpb24+Q2FzdGluZyBudWxsIHRvIFN0cmluZyBpcyByZWR1bmRhbnQ8L2Rlc2NyaXB0aW9uPgorICA8L3Byb2JsZW0+Cis8L3Byb2JsZW1zPgorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9yZWR1bmRhbnRDYXN0L0luaXRpYWxpemVyMS9zcmMvSW5pdGlhbGl6ZXIxLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9yZWR1bmRhbnRDYXN0L0luaXRpYWxpemVyMS9zcmMvSW5pdGlhbGl6ZXIxLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGU5YmVmNwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3JlZHVuZGFudENhc3QvSW5pdGlhbGl6ZXIxL3NyYy9Jbml0aWFsaXplcjEuamF2YQpAQCAtMCwwICsxLDUgQEAKK2NsYXNzIFRlc3R7CisgIHN0YXRpYyBmKCl7CisgICAgT2JqZWN0IG8gPSAoU3RyaW5nKW51bGw7CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3JlZHVuZGFudENhc3QvSW50VG9Eb3VibGUvZXhwZWN0ZWQueG1sIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcmVkdW5kYW50Q2FzdC9JbnRUb0RvdWJsZS9leHBlY3RlZC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWFjODc5ZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3JlZHVuZGFudENhc3QvSW50VG9Eb3VibGUvZXhwZWN0ZWQueG1sCkBAIC0wLDAgKzEsMyBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxwcm9ibGVtcyAvPgorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9yZWR1bmRhbnRDYXN0L0ludFRvRG91YmxlL3NyYy9UZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9yZWR1bmRhbnRDYXN0L0ludFRvRG91YmxlL3NyYy9UZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDc5MDI2OAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3JlZHVuZGFudENhc3QvSW50VG9Eb3VibGUvc3JjL1Rlc3QuamF2YQpAQCAtMCwwICsxLDUgQEAKK2NsYXNzIEF7CisgIHZvaWQgZigpeworICAgIGRvdWJsZSBkID0gKGRvdWJsZSkxIC8gNTsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcmVkdW5kYW50Q2FzdC9OZXN0ZWRDYXN0L2V4cGVjdGVkLnhtbCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3JlZHVuZGFudENhc3QvTmVzdGVkQ2FzdC9leHBlY3RlZC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWU1OTRhMgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3JlZHVuZGFudENhc3QvTmVzdGVkQ2FzdC9leHBlY3RlZC54bWwKQEAgLTAsMCArMSw5IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPHByb2JsZW1zPgorICA8cHJvYmxlbT4KKyAgICA8ZmlsZT5DYXN0VGVzdC5qYXZhPC9maWxlPgorICAgIDxsaW5lPjc8L2xpbmU+CisgICAgPHByb2JsZW1fY2xhc3Mgc2V2ZXJpdHk9IldBUk5JTkciIGF0dHJpYnV0ZV9rZXk9Ik5PVF9VU0VEX0VMRU1FTlRfQVRUUklCVVRFUyI+UmVkdW5kYW50IHR5cGUgY2FzdDwvcHJvYmxlbV9jbGFzcz4KKyAgICA8ZGVzY3JpcHRpb24+Q2FzdGluZyAmbHQ7Y29kZSZndDtjdDEmbHQ7L2NvZGUmZ3Q7IHRvICZsdDtjb2RlJmd0O0Nhc3RUZXN0Jmx0Oy9jb2RlJmd0OyBpcyByZWR1bmRhbnQ8L2Rlc2NyaXB0aW9uPgorICA8L3Byb2JsZW0+Cis8L3Byb2JsZW1zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3JlZHVuZGFudENhc3QvTmVzdGVkQ2FzdC9zcmMvQ2FzdFRlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3JlZHVuZGFudENhc3QvTmVzdGVkQ2FzdC9zcmMvQ2FzdFRlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NGJiYWJiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcmVkdW5kYW50Q2FzdC9OZXN0ZWRDYXN0L3NyYy9DYXN0VGVzdC5qYXZhCkBAIC0wLDAgKzEsOSBAQAorY2xhc3MgQ2FzdFRlc3QKK3sKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbiAoU3RyaW5nW10gYXJncykgdGhyb3dzIENsb25lTm90U3VwcG9ydGVkRXhjZXB0aW9uCisgICAgeworICAgICAgICBDYXN0VGVzdCBjdDEgPSBuZXcgQ2FzdFRlc3QgKCk7CisgICAgICAgIC8vIFRoZSBjYXN0IG9mIGN0MSBpcyBvYnZpb3VzbHkgcmVkdW5kYW50IChhbHRob3VnaCB0aGUgY2FzdCBvZiB0aGUgcmVzdWx0IGlzIG5lY2Vzc2FyeSkKKyAgICAgICAgQ2FzdFRlc3QgY3QyID0gKENhc3RUZXN0KSAoKENhc3RUZXN0KWN0MSkuY2xvbmUoKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcmVkdW5kYW50Q2FzdC9OZXN0ZWRUaGluZ3MvZXhwZWN0ZWQueG1sIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcmVkdW5kYW50Q2FzdC9OZXN0ZWRUaGluZ3MvZXhwZWN0ZWQueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMzODFjMzQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9yZWR1bmRhbnRDYXN0L05lc3RlZFRoaW5ncy9leHBlY3RlZC54bWwKQEAgLTAsMCArMSw5IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPHByb2JsZW1zPgorICA8cHJvYmxlbT4KKyAgICA8ZmlsZT5OZXN0ZWRUaGluZ3MuamF2YTwvZmlsZT4KKyAgICA8bGluZT4xMzwvbGluZT4KKyAgICA8ZGVzY3JpcHRpb24+Q2FzdGluZyAiIiB0byBTdHJpbmcgaXMgcmVkdW5kYW50PC9kZXNjcmlwdGlvbj4KKyAgPC9wcm9ibGVtPgorPC9wcm9ibGVtcz4KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcmVkdW5kYW50Q2FzdC9OZXN0ZWRUaGluZ3Mvc3JjL05lc3RlZFRoaW5ncy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcmVkdW5kYW50Q2FzdC9OZXN0ZWRUaGluZ3Mvc3JjL05lc3RlZFRoaW5ncy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFiMTlhZjkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9yZWR1bmRhbnRDYXN0L05lc3RlZFRoaW5ncy9zcmMvTmVzdGVkVGhpbmdzLmphdmEKQEAgLTAsMCArMSwyNiBAQAorY2xhc3MgWFhYIHsKKyAgICBTdHJpbmcgZigpIHsKKyAgICAgICAgbmV3IFJ1bm5hYmxlKCkgeworICAgICAgICAgICAgcHVibGljIHZvaWQgcnVuKCkgeworICAgICAgICAgICAgICAgIG5ldyBSdW5uYWJsZSgpIHsKKyAgICAgICAgICAgICAgICAgICAgcHVibGljIHZvaWQgcnVuKCkgeworICAgICAgICAgICAgICAgICAgICAgICAgbmV3IFJ1bm5hYmxlKCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyB2b2lkIHJ1bigpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3IFJ1bm5hYmxlKCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVibGljIHZvaWQgcnVuKCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBSdW5uYWJsZSgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVibGljIHZvaWQgcnVuKCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nIHMgPSAoU3RyaW5nKSIiOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICB9OworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKyAgICAgICAgcmV0dXJuICIiOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3JlZHVuZGFudENhc3QvTmV3MS9leHBlY3RlZC54bWwgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9yZWR1bmRhbnRDYXN0L05ldzEvZXhwZWN0ZWQueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEzNWZlNjcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9yZWR1bmRhbnRDYXN0L05ldzEvZXhwZWN0ZWQueG1sCkBAIC0wLDAgKzEsOSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxwcm9ibGVtcz4KKyAgPHByb2JsZW0+CisgICAgPGZpbGU+TmV3MS5qYXZhPC9maWxlPgorICAgIDxsaW5lPjU8L2xpbmU+CisgICAgPGRlc2NyaXB0aW9uPkNhc3RpbmcgbnVsbCB0byBTdHJpbmcgaXMgcmVkdW5kYW50PC9kZXNjcmlwdGlvbj4KKyAgPC9wcm9ibGVtPgorPC9wcm9ibGVtcz4KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcmVkdW5kYW50Q2FzdC9OZXcxL3NyYy9OZXcxLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9yZWR1bmRhbnRDYXN0L05ldzEvc3JjL05ldzEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMWE2NjI1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcmVkdW5kYW50Q2FzdC9OZXcxL3NyYy9OZXcxLmphdmEKQEAgLTAsMCArMSw3IEBACitjbGFzcyBUZXN0eworICBUZXN0KE9iamVjdCBvKXt9CisKKyAgc3RhdGljIGYoKXsKKyAgICBuZXcgVGVzdCgoU3RyaW5nKW51bGwpOworICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9yZWR1bmRhbnRDYXN0L09uZU9mVHdvL2V4cGVjdGVkLnhtbCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3JlZHVuZGFudENhc3QvT25lT2ZUd28vZXhwZWN0ZWQueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYxOTA5NmUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9yZWR1bmRhbnRDYXN0L09uZU9mVHdvL2V4cGVjdGVkLnhtbApAQCAtMCwwICsxLDkgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8cHJvYmxlbXM+CisgIDxwcm9ibGVtPgorICAgIDxmaWxlPk9uZU9mVHdvLmphdmE8L2ZpbGU+CisgICAgPGxpbmU+ODwvbGluZT4KKyAgICA8ZGVzY3JpcHRpb24+Q2FzdGluZyBvIHRvIFN0cmluZyBpcyByZWR1bmRhbnQ8L2Rlc2NyaXB0aW9uPgorICA8L3Byb2JsZW0+Cis8L3Byb2JsZW1zPgorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9yZWR1bmRhbnRDYXN0L09uZU9mVHdvL3NyYy9PbmVPZlR3by5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcmVkdW5kYW50Q2FzdC9PbmVPZlR3by9zcmMvT25lT2ZUd28uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZmY2ODUwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcmVkdW5kYW50Q2FzdC9PbmVPZlR3by9zcmMvT25lT2ZUd28uamF2YQpAQCAtMCwwICsxLDEwIEBACitwYWNrYWdlIGNvbTsKKworcHVibGljIGNsYXNzIFRlc3QgeworICBzdGF0aWMgdm9pZCBmKFN0cmluZyBzLCBPYmplY3Qgbyl7fQorCisgIHZvaWQgZm9vKCl7CisgICAgT2JqZWN0IG87CisgICAgZigoU3RyaW5nKW8sIChTdHJpbmcpbyk7CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3JlZHVuZGFudENhc3QvUHJpbWl0aXZlSW5zaWRlU3luY2hyb25pemVkL2V4cGVjdGVkLnhtbCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3JlZHVuZGFudENhc3QvUHJpbWl0aXZlSW5zaWRlU3luY2hyb25pemVkL2V4cGVjdGVkLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZTkzMzQ5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcmVkdW5kYW50Q2FzdC9QcmltaXRpdmVJbnNpZGVTeW5jaHJvbml6ZWQvZXhwZWN0ZWQueG1sCkBAIC0wLDAgKzEsMyBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxwcm9ibGVtcz4KKzwvcHJvYmxlbXM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcmVkdW5kYW50Q2FzdC9QcmltaXRpdmVJbnNpZGVTeW5jaHJvbml6ZWQvc3JjL0Nhc3RUZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9yZWR1bmRhbnRDYXN0L1ByaW1pdGl2ZUluc2lkZVN5bmNocm9uaXplZC9zcmMvQ2FzdFRlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZDYwN2NiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcmVkdW5kYW50Q2FzdC9QcmltaXRpdmVJbnNpZGVTeW5jaHJvbml6ZWQvc3JjL0Nhc3RUZXN0LmphdmEKQEAgLTAsMCArMSw4IEBACitjbGFzcyBDYXN0VGVzdAoreworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluIChTdHJpbmdbXSBhcmdzKSB0aHJvd3MgQ2xvbmVOb3RTdXBwb3J0ZWRFeGNlcHRpb24KKyAgICB7CisgICAgICAgaW50IGkgPSAwOworICAgICAgIHN5bmNocm9uaXplZCAoKE9iamVjdClpKXt9CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3JlZHVuZGFudENhc3QvU0NSMTE1NTUvZXhwZWN0ZWQueG1sIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcmVkdW5kYW50Q2FzdC9TQ1IxMTU1NS9leHBlY3RlZC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWFjODc5ZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3JlZHVuZGFudENhc3QvU0NSMTE1NTUvZXhwZWN0ZWQueG1sCkBAIC0wLDAgKzEsMyBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxwcm9ibGVtcyAvPgorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9yZWR1bmRhbnRDYXN0L1NDUjExNTU1L3NyYy9UZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9yZWR1bmRhbnRDYXN0L1NDUjExNTU1L3NyYy9UZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDM5YTcwYgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3JlZHVuZGFudENhc3QvU0NSMTE1NTUvc3JjL1Rlc3QuamF2YQpAQCAtMCwwICsxLDkgQEAKKworaW1wb3J0IGphdmEuYXd0Lio7CisKK3B1YmxpYyBjbGFzcyBUZXN0IHsKKyAgdm9pZCBmb28oKXsKKyAgICBDb21wb25lbnQgYyA9IG51bGw7CisgICAgKChGcmFtZSkgYykuc2hvdygpOworICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9yZWR1bmRhbnRDYXN0L1NDUjEzMzk3L2V4cGVjdGVkLnhtbCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3JlZHVuZGFudENhc3QvU0NSMTMzOTcvZXhwZWN0ZWQueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVjMjcyYWIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9yZWR1bmRhbnRDYXN0L1NDUjEzMzk3L2V4cGVjdGVkLnhtbApAQCAtMCwwICsxLDMgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8cHJvYmxlbXMvPgorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9yZWR1bmRhbnRDYXN0L1NDUjEzMzk3L3NyYy9UZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9yZWR1bmRhbnRDYXN0L1NDUjEzMzk3L3NyYy9UZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzcyZjQ3YwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3JlZHVuZGFudENhc3QvU0NSMTMzOTcvc3JjL1Rlc3QuamF2YQpAQCAtMCwwICsxLDIxIEBACitjbGFzcyBSZWR1bmRhbnRDYXN0UHJvYmxlbSB7CisgICAgcHVibGljIGFic3RyYWN0IHN0YXRpYyBjbGFzcyBUb3AgeworICAgICAgICBwdWJsaWMgU3RyaW5nIGYoT2JqZWN0IG8pIHsKKyAgICAgICAgICAgIHJldHVybiAiVG9wLmYoT2JqZWN0KSI7CisgICAgICAgIH0KKyAgICB9CisgCisgICAgcHVibGljIHN0YXRpYyBjbGFzcyBTdWIgZXh0ZW5kcyBUb3AgeworICAgICAgICBwdWJsaWMgU3RyaW5nIGYoU3RyaW5nIHMpIHsKKyAgICAgICAgICAgIHJldHVybiAiTWlkZGxlLmYoU3RyaW5nKSI7CisgICAgICAgIH0KKyAgICB9CisgCisgICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgeworICAgICAgICBTdWIgc3ViID0gbmV3IFN1YigpOworICAgICAgICBTdHJpbmcgYVN0cmluZyA9ICIiOworIAorICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oKChUb3Apc3ViKS5mKGFTdHJpbmcpKTsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKHN1Yi5mKGFTdHJpbmcpKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9yZWR1bmRhbnRDYXN0L1NDUjE0NTAyL2V4cGVjdGVkLnhtbCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3JlZHVuZGFudENhc3QvU0NSMTQ1MDIvZXhwZWN0ZWQueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVhNjBmOWIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9yZWR1bmRhbnRDYXN0L1NDUjE0NTAyL2V4cGVjdGVkLnhtbApAQCAtMCwwICsxLDkgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8cHJvYmxlbXM+CisgIDxwcm9ibGVtPgorICAgIDxmaWxlPlRlc3QuamF2YTwvZmlsZT4KKyAgICA8bGluZT4zPC9saW5lPgorICAgIDxkZXNjcmlwdGlvbj5DYXN0aW5nIG5ldyBUZXN0KCkgdG8gVGVzdCBpcyByZWR1bmRhbnQ8L2Rlc2NyaXB0aW9uPgorICA8L3Byb2JsZW0+Cis8L3Byb2JsZW1zPgorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9yZWR1bmRhbnRDYXN0L1NDUjE0NTAyL3NyYy9UZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9yZWR1bmRhbnRDYXN0L1NDUjE0NTAyL3NyYy9UZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODQ0NjY0YwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3JlZHVuZGFudENhc3QvU0NSMTQ1MDIvc3JjL1Rlc3QuamF2YQpAQCAtMCwwICsxLDUgQEAKK3B1YmxpYyBjbGFzcyBUZXN0IHsKKyAgIHB1YmxpYyB2b2lkIGZvbyhUZXN0IHQpIHsKKyAgICAgZm9vKCgoVGVzdCkgbmV3IFRlc3QoKSkpOworICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3JlZHVuZGFudENhc3QvU0NSMTQ1NTkvZXhwZWN0ZWQueG1sIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcmVkdW5kYW50Q2FzdC9TQ1IxNDU1OS9leHBlY3RlZC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWMyNzJhYgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3JlZHVuZGFudENhc3QvU0NSMTQ1NTkvZXhwZWN0ZWQueG1sCkBAIC0wLDAgKzEsMyBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxwcm9ibGVtcy8+CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3JlZHVuZGFudENhc3QvU0NSMTQ1NTkvc3JjL1Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3JlZHVuZGFudENhc3QvU0NSMTQ1NTkvc3JjL1Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNmViNjA5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcmVkdW5kYW50Q2FzdC9TQ1IxNDU1OS9zcmMvVGVzdC5qYXZhCkBAIC0wLDAgKzEsMTUgQEAKK3B1YmxpYyBjbGFzcyBUZXN0IHsKKyAgY2xhc3MgU3VwZXIgeworICAgIE9iamVjdCBmb28oKSB7IHJldHVybiBuZXcgT2JqZWN0KCk7IH0KKyAgfQorICBjbGFzcyBTdWIgZXh0ZW5kcyBTdXBlcnsKKyAgICBTdHJpbmcgZm9vKCkgeyByZXR1cm4gIiI7IH0KKyAgfQorICBwdWJsaWMgU3RyaW5nIGdldChmaW5hbCBTdXBlciBvYmopIHsKKyAgICBpZiAob2JqIGluc3RhbmNlb2YgU3ViKSB7CisgICAgICByZXR1cm4gKChTdWIpb2JqKS5mb28oKTsKKyAgICB9IGVsc2UgeworICAgICAgcmV0dXJuICJUaGUgdmFsdWUgaXMgIiArIG9iai5mb28oKTsKKyAgICB9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9yZWR1bmRhbnRDYXN0L1NDUjE1MjM2L2V4cGVjdGVkLnhtbCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3JlZHVuZGFudENhc3QvU0NSMTUyMzYvZXhwZWN0ZWQueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFiMDMzZTUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9yZWR1bmRhbnRDYXN0L1NDUjE1MjM2L2V4cGVjdGVkLnhtbApAQCAtMCwwICsxLDggQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8cHJvYmxlbXM+CisgIDxwcm9ibGVtPgorICAgIDxmaWxlPlRlc3QuamF2YTwvZmlsZT4KKyAgICA8bGluZT4zPC9saW5lPgorICAgIDxkZXNjcmlwdGlvbj5DYXN0aW5nIHMgdG8gU3RyaW5nIGlzIHJlZHVuZGFudDwvZGVzY3JpcHRpb24+CisgIDwvcHJvYmxlbT4KKzwvcHJvYmxlbXM+CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9yZWR1bmRhbnRDYXN0L1NDUjE1MjM2L3NyYy9UZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9yZWR1bmRhbnRDYXN0L1NDUjE1MjM2L3NyYy9UZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGJiNWZlOQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3JlZHVuZGFudENhc3QvU0NSMTUyMzYvc3JjL1Rlc3QuamF2YQpAQCAtMCwwICsxLDUgQEAKK3B1YmxpYyBjbGFzcyBUZXN0IHsKKyAgIHB1YmxpYyB2b2lkIHRlc3QoT2JqZWN0IHMpIHsKKyAgICAgIE9iamVjdCBvID0gKChTdHJpbmcpIHMpOworICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3JlZHVuZGFudENhc3QvU0NSNjkwNy9leHBlY3RlZC54bWwgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9yZWR1bmRhbnRDYXN0L1NDUjY5MDcvZXhwZWN0ZWQueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNhMzZjNTIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9yZWR1bmRhbnRDYXN0L1NDUjY5MDcvZXhwZWN0ZWQueG1sCkBAIC0wLDAgKzEsOSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxwcm9ibGVtcz4KKyAgPHByb2JsZW0+CisgICAgPGZpbGU+VGVzdC5qYXZhPC9maWxlPgorICAgIDxsaW5lPjc8L2xpbmU+CisgICAgPGRlc2NyaXB0aW9uPkNhc3RpbmcgbnVsbCB0byBTdHJpbmcgaXMgcmVkdW5kYW50PC9kZXNjcmlwdGlvbj4KKyAgPC9wcm9ibGVtPgorPC9wcm9ibGVtcz4KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcmVkdW5kYW50Q2FzdC9TQ1I2OTA3L3NyYy9UZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9yZWR1bmRhbnRDYXN0L1NDUjY5MDcvc3JjL1Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NzQ3MDMwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcmVkdW5kYW50Q2FzdC9TQ1I2OTA3L3NyYy9UZXN0LmphdmEKQEAgLTAsMCArMSw5IEBACisKK3B1YmxpYyBjbGFzcyBUZXN0IHsKKyAgdm9pZCBmb28oU3RyaW5nIG1zZyl7fQorICB2b2lkIGZvbyhPYmplY3Qgbyl7fQorCisgIHZvaWQgbWV0aG9kKCl7CisgICAgZm9vKChTdHJpbmcpbnVsbCk7CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3JlZHVuZGFudENhc3QvU2hvcnRUb1Nob3J0L2V4cGVjdGVkLnhtbCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3JlZHVuZGFudENhc3QvU2hvcnRUb1Nob3J0L2V4cGVjdGVkLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMzBiZWEwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcmVkdW5kYW50Q2FzdC9TaG9ydFRvU2hvcnQvZXhwZWN0ZWQueG1sCkBAIC0wLDAgKzEsOSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxwcm9ibGVtcz4KKyAgPHByb2JsZW0+CisgICAgPGZpbGU+VGVzdC5qYXZhPC9maWxlPgorICAgIDxsaW5lPjQ8L2xpbmU+CisgICAgPGRlc2NyaXB0aW9uPkNhc3RpbmcgdiB0byBzaG9ydCBpcyByZWR1bmRhbnQ8L2Rlc2NyaXB0aW9uPgorICA8L3Byb2JsZW0+Cis8L3Byb2JsZW1zPgorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9yZWR1bmRhbnRDYXN0L1Nob3J0VG9TaG9ydC9zcmMvVGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcmVkdW5kYW50Q2FzdC9TaG9ydFRvU2hvcnQvc3JjL1Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZGU0YWEzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcmVkdW5kYW50Q2FzdC9TaG9ydFRvU2hvcnQvc3JjL1Rlc3QuamF2YQpAQCAtMCwwICsxLDcgQEAKK2NsYXNzIFRlc3R7CisgIHNob3J0IGZvbygpeworICAgIHNob3J0IHYgPSAwOworICAgIHNob3J0IHMgPSAoc2hvcnQpdjsKKyAgICByZXR1cm4gczsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3JlZHVuZGFudENhc3QvU2hvcnRWc0ludC9leHBlY3RlZC54bWwgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9yZWR1bmRhbnRDYXN0L1Nob3J0VnNJbnQvZXhwZWN0ZWQueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlhYzg3OWQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9yZWR1bmRhbnRDYXN0L1Nob3J0VnNJbnQvZXhwZWN0ZWQueG1sCkBAIC0wLDAgKzEsMyBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxwcm9ibGVtcyAvPgorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9yZWR1bmRhbnRDYXN0L1Nob3J0VnNJbnQvc3JjL1Nob3J0VnNJbnQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3JlZHVuZGFudENhc3QvU2hvcnRWc0ludC9zcmMvU2hvcnRWc0ludC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQwYjY5MGQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9yZWR1bmRhbnRDYXN0L1Nob3J0VnNJbnQvc3JjL1Nob3J0VnNJbnQuamF2YQpAQCAtMCwwICsxLDggQEAKK2NsYXNzIEF7CisgIFN0cmluZyB0b0hleChpbnQgaSkge30gCisgIFN0cmluZyB0b0hleChzaG9ydCBpKSB7fQorCisgIHZvaWQgZigpeworICAgIFN0cmluZyByZXN1bHQgPSB0b0hleCgoc2hvcnQpJ2knKTsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcmVkdW5kYW50Q2FzdC9UcnVuY2F0aW9uL2V4cGVjdGVkLnhtbCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3JlZHVuZGFudENhc3QvVHJ1bmNhdGlvbi9leHBlY3RlZC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWFjODc5ZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3JlZHVuZGFudENhc3QvVHJ1bmNhdGlvbi9leHBlY3RlZC54bWwKQEAgLTAsMCArMSwzIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPHByb2JsZW1zIC8+CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3JlZHVuZGFudENhc3QvVHJ1bmNhdGlvbi9zcmMvVGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcmVkdW5kYW50Q2FzdC9UcnVuY2F0aW9uL3NyYy9UZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjg3MDdmNjMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9yZWR1bmRhbnRDYXN0L1RydW5jYXRpb24vc3JjL1Rlc3QuamF2YQpAQCAtMCwwICsxLDUgQEAKK2NsYXNzIEF7CisgIHZvaWQgZigpeworICAgIGRvdWJsZSBkID0gKGludCkgMS41OworICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9yZWR1bmRhbnRDYXN0L1ZpcnR1YWxNZXRob2QxL2V4cGVjdGVkLnhtbCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3JlZHVuZGFudENhc3QvVmlydHVhbE1ldGhvZDEvZXhwZWN0ZWQueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUyZWQyYjgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9yZWR1bmRhbnRDYXN0L1ZpcnR1YWxNZXRob2QxL2V4cGVjdGVkLnhtbApAQCAtMCwwICsxLDkgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8cHJvYmxlbXM+CisgIDxwcm9ibGVtPgorICAgIDxmaWxlPlZpcnR1YWxNZXRob2QxLmphdmE8L2ZpbGU+CisgICAgPGxpbmU+MTI8L2xpbmU+CisgICAgPGRlc2NyaXB0aW9uPkNhc3RpbmcgYSBCIGlzIHJlZHVuZGFudDwvZGVzY3JpcHRpb24+CisgIDwvcHJvYmxlbT4KKzwvcHJvYmxlbXM+CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3JlZHVuZGFudENhc3QvVmlydHVhbE1ldGhvZDEvc3JjL1ZpcnR1YWxNZXRob2QxLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9yZWR1bmRhbnRDYXN0L1ZpcnR1YWxNZXRob2QxL3NyYy9WaXJ0dWFsTWV0aG9kMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY2ZDE3NDEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9yZWR1bmRhbnRDYXN0L1ZpcnR1YWxNZXRob2QxL3NyYy9WaXJ0dWFsTWV0aG9kMS5qYXZhCkBAIC0wLDAgKzEsMTQgQEAKK2NsYXNzIEF7CisgIHZvaWQgZigpe30KK30KKworY2xhc3MgQiBleHRlbmRzIEF7CisgIHZvaWQgZigpe30KK30KKworY2xhc3MgVGVzdHsKKyAgc3RhdGljIGZvbygpeworICAgIEEgYTsKKyAgICAoKEIpYSkuZigpOworICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9yZWR1bmRhbnRDYXN0L1ZpcnR1YWxNZXRob2QyL2V4cGVjdGVkLnhtbCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3JlZHVuZGFudENhc3QvVmlydHVhbE1ldGhvZDIvZXhwZWN0ZWQueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlhYzg3OWQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9yZWR1bmRhbnRDYXN0L1ZpcnR1YWxNZXRob2QyL2V4cGVjdGVkLnhtbApAQCAtMCwwICsxLDMgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8cHJvYmxlbXMgLz4KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcmVkdW5kYW50Q2FzdC9WaXJ0dWFsTWV0aG9kMi9zcmMvVmlydHVhbE1ldGhvZDIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3JlZHVuZGFudENhc3QvVmlydHVhbE1ldGhvZDIvc3JjL1ZpcnR1YWxNZXRob2QyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWIwMjdjZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3JlZHVuZGFudENhc3QvVmlydHVhbE1ldGhvZDIvc3JjL1ZpcnR1YWxNZXRob2QyLmphdmEKQEAgLTAsMCArMSwxNCBAQAorY2xhc3MgQXsKKyAgcHJpdmF0ZSB2b2lkIGYoKXt9Cit9CisKK2NsYXNzIEIgZXh0ZW5kcyBBeworICB2b2lkIGYoKXt9Cit9CisKK2NsYXNzIFRlc3R7CisgIHN0YXRpYyBmb28oKXsKKyAgICBBIGE7CisgICAgKChCKWEpLmYoKTsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcmVkdW5kYW50Q2FzdC9WaXJ0dWFsTWV0aG9kMy9leHBlY3RlZC54bWwgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9yZWR1bmRhbnRDYXN0L1ZpcnR1YWxNZXRob2QzL2V4cGVjdGVkLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYmY2NjBkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcmVkdW5kYW50Q2FzdC9WaXJ0dWFsTWV0aG9kMy9leHBlY3RlZC54bWwKQEAgLTAsMCArMSw5IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPHByb2JsZW1zPgorICA8cHJvYmxlbT4KKyAgICA8ZmlsZT5WaXJ0dWFsTWV0aG9kMy5qYXZhPC9maWxlPgorICAgIDxsaW5lPjQ8L2xpbmU+CisgICAgPGRlc2NyaXB0aW9uPkNhc3RpbmcgbyB0byBTdHJpbmcgaXMgcmVkdW5kYW50PC9kZXNjcmlwdGlvbj4KKyAgPC9wcm9ibGVtPgorPC9wcm9ibGVtcz4KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcmVkdW5kYW50Q2FzdC9WaXJ0dWFsTWV0aG9kMy9zcmMvVmlydHVhbE1ldGhvZDMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3JlZHVuZGFudENhc3QvVmlydHVhbE1ldGhvZDMvc3JjL1ZpcnR1YWxNZXRob2QzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWMxM2IyZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3JlZHVuZGFudENhc3QvVmlydHVhbE1ldGhvZDMvc3JjL1ZpcnR1YWxNZXRob2QzLmphdmEKQEAgLTAsMCArMSw2IEBACitjbGFzcyBUZXN0eworICBzdGF0aWMgZm9vKCl7CisgICAgT2JqZWN0IG87CisgICAgYm9vbGVhbiByZXMgPSAoKFN0cmluZylvKS5lcXVhbHMobnVsbCk7CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3JlZHVuZGFudENhc3QvZ2VuZXJpY3MvQm94aW5nSW5SZWYvZXhwZWN0ZWQueG1sIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcmVkdW5kYW50Q2FzdC9nZW5lcmljcy9Cb3hpbmdJblJlZi9leHBlY3RlZC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTgwYTg4OQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3JlZHVuZGFudENhc3QvZ2VuZXJpY3MvQm94aW5nSW5SZWYvZXhwZWN0ZWQueG1sCkBAIC0wLDAgKzEsMyBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxwcm9ibGVtcz4KKzwvcHJvYmxlbXM+CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9yZWR1bmRhbnRDYXN0L2dlbmVyaWNzL0JveGluZ0luUmVmL3NyYy9UZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9yZWR1bmRhbnRDYXN0L2dlbmVyaWNzL0JveGluZ0luUmVmL3NyYy9UZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGQ0ZGQyZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3JlZHVuZGFudENhc3QvZ2VuZXJpY3MvQm94aW5nSW5SZWYvc3JjL1Rlc3QuamF2YQpAQCAtMCwwICsxLDcgQEAKKy8vVGhpcyBpcyBhIHRlc3QgZm9yIEpES18xNSBMYW5ndWFnZUxldmVsCitwdWJsaWMgY2xhc3MgVGVzdCB7CisgICAgdm9pZCBmb28gKCkgeworICAgICAgICBpbnQgeCA9IDQ7CisgICAgICAgICgoSW50ZWdlcikgeCkudG9TdHJpbmcoKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcmVkdW5kYW50Q2FzdC9nZW5lcmljcy9DYXN0VG9VbmJvdW5kV2lsZGNhcmQvZXhwZWN0ZWQueG1sIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcmVkdW5kYW50Q2FzdC9nZW5lcmljcy9DYXN0VG9VbmJvdW5kV2lsZGNhcmQvZXhwZWN0ZWQueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ3MDRkOTEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9yZWR1bmRhbnRDYXN0L2dlbmVyaWNzL0Nhc3RUb1VuYm91bmRXaWxkY2FyZC9leHBlY3RlZC54bWwKQEAgLTAsMCArMSwyIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPHByb2JsZW1zLz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9yZWR1bmRhbnRDYXN0L2dlbmVyaWNzL0Nhc3RUb1VuYm91bmRXaWxkY2FyZC9zcmMvVGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcmVkdW5kYW50Q2FzdC9nZW5lcmljcy9DYXN0VG9VbmJvdW5kV2lsZGNhcmQvc3JjL1Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZjdlNDZlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcmVkdW5kYW50Q2FzdC9nZW5lcmljcy9DYXN0VG9VbmJvdW5kV2lsZGNhcmQvc3JjL1Rlc3QuamF2YQpAQCAtMCwwICsxLDkgQEAKK2ltcG9ydCBqYXZhLnV0aWwuKjsKK2ltcG9ydCBqYXZhLnV0aWwuTWFwOworCitjbGFzcyBUZXN0IHsKKyAgeworICAgIE1hcDxOdW1iZXIsIFN0cmluZz4gbWFwMSA9IG51bGw7CisgICAgTWFwPEludGVnZXIsIFN0cmluZz4gbWFwMiA9IChNYXA8SW50ZWdlciwgU3RyaW5nPikgKE1hcDw/LCA/PikgbWFwMTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3JlZHVuZGFudENhc3QvZ2VuZXJpY3MvRW51bUNvbnN0YW50L2V4cGVjdGVkLnhtbCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3JlZHVuZGFudENhc3QvZ2VuZXJpY3MvRW51bUNvbnN0YW50L2V4cGVjdGVkLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jOGM4NjViCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcmVkdW5kYW50Q2FzdC9nZW5lcmljcy9FbnVtQ29uc3RhbnQvZXhwZWN0ZWQueG1sCkBAIC0wLDAgKzEsOSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxwcm9ibGVtcz4KKyAgPHByb2JsZW0+CisgICAgPGZpbGU+VGVzdC5qYXZhPC9maWxlPgorICAgIDxsaW5lPjM8L2xpbmU+CisgICAgPHByb2JsZW1fY2xhc3Mgc2V2ZXJpdHk9IldBUk5JTkciIGF0dHJpYnV0ZV9rZXk9Ik5PVF9VU0VEX0VMRU1FTlRfQVRUUklCVVRFUyI+UmVkdW5kYW50IHR5cGUgY2FzdDwvcHJvYmxlbV9jbGFzcz4KKyAgICA8ZGVzY3JpcHRpb24+Q2FzdGluZyAmbHQ7Y29kZSZndDsmcXVvdDsmcXVvdDsmbHQ7L2NvZGUmZ3Q7IHRvICZsdDtjb2RlJmd0O1N0cmluZyZsdDsvY29kZSZndDsgaXMgcmVkdW5kYW50PC9kZXNjcmlwdGlvbj4KKyAgPC9wcm9ibGVtPgorPC9wcm9ibGVtcz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9yZWR1bmRhbnRDYXN0L2dlbmVyaWNzL0VudW1Db25zdGFudC9zcmMvVGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcmVkdW5kYW50Q2FzdC9nZW5lcmljcy9FbnVtQ29uc3RhbnQvc3JjL1Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZGNiZGNjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcmVkdW5kYW50Q2FzdC9nZW5lcmljcy9FbnVtQ29uc3RhbnQvc3JjL1Rlc3QuamF2YQpAQCAtMCwwICsxLDcgQEAKKworZW51bSBUZXN0IHsKKyAgQSgoU3RyaW5nKSAiIik7CisKKyAgVGVzdChTdHJpbmcgcykgeworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcmVkdW5kYW50Q2FzdC9nZW5lcmljcy9JREVBMjI4OTkvZXhwZWN0ZWQueG1sIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcmVkdW5kYW50Q2FzdC9nZW5lcmljcy9JREVBMjI4OTkvZXhwZWN0ZWQueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ3MDRkOTEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9yZWR1bmRhbnRDYXN0L2dlbmVyaWNzL0lERUEyMjg5OS9leHBlY3RlZC54bWwKQEAgLTAsMCArMSwyIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPHByb2JsZW1zLz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9yZWR1bmRhbnRDYXN0L2dlbmVyaWNzL0lERUEyMjg5OS9zcmMvV3JhcHBlclRvUHJpbWl0aXZlQ2FzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcmVkdW5kYW50Q2FzdC9nZW5lcmljcy9JREVBMjI4OTkvc3JjL1dyYXBwZXJUb1ByaW1pdGl2ZUNhc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYTliMjFjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcmVkdW5kYW50Q2FzdC9nZW5lcmljcy9JREVBMjI4OTkvc3JjL1dyYXBwZXJUb1ByaW1pdGl2ZUNhc3QuamF2YQpAQCAtMCwwICsxLDE1IEBACitwdWJsaWMgY2xhc3MgUmVkdW5kYW50SW50Q2FzdAoreworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKKyAgICAgICAgSW50ZWdlciBpID0gODsKKyAgICAgICAgbWV0aG9kKChpbnQpaSwgMSk7ICAvLyBpbnQgY2FzdCBpcyBtYXJrZWQgYXMgcmVkdW5kYW50CisgICAgfQorCisgICAgc3RhdGljIHZvaWQgbWV0aG9kKE9iamVjdCBvLCBPYmplY3QgbzEpIHsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJ0aGlzIG1ldGhvZCB3b3JrcyBvbiBvYmplY3RzIik7CisgICAgfQorCisgICAgc3RhdGljIHZvaWQgbWV0aG9kKGludCBpLCBpbnQgaTEpIHsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJ0aGlzIG1ldGhvZCB3b3JrcyBvbiBpbnRzIik7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcmVkdW5kYW50Q2FzdC9nZW5lcmljcy9JZ25vcmUvZXhwZWN0ZWQueG1sIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcmVkdW5kYW50Q2FzdC9nZW5lcmljcy9JZ25vcmUvZXhwZWN0ZWQueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU2YWVhYWQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9yZWR1bmRhbnRDYXN0L2dlbmVyaWNzL0lnbm9yZS9leHBlY3RlZC54bWwKQEAgLTAsMCArMSwxNCBAQAorPHByb2JsZW1zPgorICA8cHJvYmxlbT4KKyAgICA8ZmlsZT5UZXN0LmphdmE8L2ZpbGU+CisgICAgPGxpbmU+MTE8L2xpbmU+CisgICAgPHByb2JsZW1fY2xhc3Mgc2V2ZXJpdHk9IldBUk5JTkciIGF0dHJpYnV0ZV9rZXk9Ik5PVF9VU0VEX0VMRU1FTlRfQVRUUklCVVRFUyI+UmVkdW5kYW50IHR5cGUgY2FzdDwvcHJvYmxlbV9jbGFzcz4KKyAgICA8ZGVzY3JpcHRpb24+Q2FzdGluZyAmbHQ7Y29kZSZndDt0aGlzJmx0Oy9jb2RlJmd0OyB0byAmbHQ7Y29kZSZndDtDYXN0UHJldmVudHNOUEVEZXRlY3Rpb24mbHQ7L2NvZGUmZ3Q7IGlzIHJlZHVuZGFudDwvZGVzY3JpcHRpb24+CisgIDwvcHJvYmxlbT4KKyAgPHByb2JsZW0+CisgICAgPGZpbGU+U3VzcGljaW91cy5qYXZhPC9maWxlPgorICAgIDxsaW5lPjk8L2xpbmU+CisgICAgPHByb2JsZW1fY2xhc3Mgc2V2ZXJpdHk9IldBUk5JTkciIGF0dHJpYnV0ZV9rZXk9Ik5PVF9VU0VEX0VMRU1FTlRfQVRUUklCVVRFUyI+UmVkdW5kYW50IHR5cGUgY2FzdDwvcHJvYmxlbV9jbGFzcz4KKyAgICA8ZGVzY3JpcHRpb24+Q2FzdGluZyAmbHQ7Y29kZSZndDtzdHImbHQ7L2NvZGUmZ3Q7IHRvICZsdDtjb2RlJmd0O1N0cmluZyZsdDsvY29kZSZndDsgaXMgcmVkdW5kYW50PC9kZXNjcmlwdGlvbj4KKyAgPC9wcm9ibGVtPgorPC9wcm9ibGVtcz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9yZWR1bmRhbnRDYXN0L2dlbmVyaWNzL0lnbm9yZS9zY3IvU3VzcGljaW91cy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcmVkdW5kYW50Q2FzdC9nZW5lcmljcy9JZ25vcmUvc2NyL1N1c3BpY2lvdXMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NTcxOWIwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcmVkdW5kYW50Q2FzdC9nZW5lcmljcy9JZ25vcmUvc2NyL1N1c3BpY2lvdXMuamF2YQpAQCAtMCwwICsxLDEyIEBACitpbXBvcnQgamF2YS51dGlsLk1hcDsKKworcHVibGljIGNsYXNzIFN1c3BpY2lvdXMgeworICAgIE1hcDxTdHJpbmcsIFN0cmluZz4gbWFwOworCisgICAgdm9pZCBmKE9iamVjdCBzKXsKKyAgICAgICAgU3RyaW5nIHN0ciA9IChTdHJpbmcpIHM7CisgICAgICAgIG1hcC5yZW1vdmUoKFN0cmluZylzKTsKKyAgICAgICAgbWFwLnJlbW92ZSgoU3RyaW5nKXN0cik7CisgICAgfQorCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcmVkdW5kYW50Q2FzdC9nZW5lcmljcy9JZ25vcmUvc2NyL1Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3JlZHVuZGFudENhc3QvZ2VuZXJpY3MvSWdub3JlL3Njci9UZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjcxMmQzMwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3JlZHVuZGFudENhc3QvZ2VuZXJpY3MvSWdub3JlL3Njci9UZXN0LmphdmEKQEAgLTAsMCArMSwyMSBAQAoraW1wb3J0IG9yZy5qZXRicmFpbnMuYW5ub3RhdGlvbnMuTm90TnVsbDsKK2ltcG9ydCBvcmcuamV0YnJhaW5zLmFubm90YXRpb25zLk51bGxhYmxlOworCitjbGFzcyBDYXN0UHJldmVudHNOUEVEZXRlY3Rpb24geworICAgIEBOdWxsYWJsZSBPYmplY3QgZ2V0UGFyZW50KCkgeworICAgICAgICByZXR1cm4gbnVsbDsKKyAgICB9CisKKyAgICB2b2lkIGYoKSB7CisgICAgICAgICgoQ2hpbGRDYXN0SW1wbCl0aGlzKS5nZXRQYXJlbnQoKS50b1N0cmluZygpOworICAgICAgICAoKENhc3RQcmV2ZW50c05QRURldGVjdGlvbil0aGlzKS5nZXRQYXJlbnQoKS50b1N0cmluZygpOworICAgIH0KK30KKworY2xhc3MgQ2hpbGRDYXN0SW1wbCBleHRlbmRzIENhc3RQcmV2ZW50c05QRURldGVjdGlvbiB7CisgICAgQE5vdE51bGwKKyAgICBAT3ZlcnJpZGUKKyAgICBPYmplY3QgZ2V0UGFyZW50KCkgeworICAgICAgICByZXR1cm4gc3VwZXIuZ2V0UGFyZW50KCk7ICAgIC8vVG8gY2hhbmdlIGJvZHkgb2Ygb3ZlcnJpZGRlbiBtZXRob2RzIHVzZSBGaWxlIHwgU2V0dGluZ3MgfCBGaWxlIFRlbXBsYXRlcy4KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcmVkdW5kYW50Q2FzdC9nZW5lcmljcy9JbmZlcmVuY2UxL2V4cGVjdGVkLnhtbCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3JlZHVuZGFudENhc3QvZ2VuZXJpY3MvSW5mZXJlbmNlMS9leHBlY3RlZC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTgwYTg4OQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3JlZHVuZGFudENhc3QvZ2VuZXJpY3MvSW5mZXJlbmNlMS9leHBlY3RlZC54bWwKQEAgLTAsMCArMSwzIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPHByb2JsZW1zPgorPC9wcm9ibGVtcz4KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3JlZHVuZGFudENhc3QvZ2VuZXJpY3MvSW5mZXJlbmNlMS9zcmMvVGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcmVkdW5kYW50Q2FzdC9nZW5lcmljcy9JbmZlcmVuY2UxL3NyYy9UZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2UzODM2YTYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9yZWR1bmRhbnRDYXN0L2dlbmVyaWNzL0luZmVyZW5jZTEvc3JjL1Rlc3QuamF2YQpAQCAtMCwwICsxLDIwIEBACitpbXBvcnQgamF2YS51dGlsLk1hcDsKK2NsYXNzIFRlc3QyIHsKKyAgICBwdWJsaWMgU3RyaW5nIHM7CisgIHB1YmxpYyB2b2lkIG1haW5hKE9iamVjdCBrZXksIE1hcCBwYXJhbWV0ZXJzKSB7CisgICAgICBzID0gKChTdHJpbmdbXSkgcGFyYW1ldGVycy5nZXQoa2V5KSlbMF07CisgIH0KK30KKworcHVibGljIGNsYXNzIFRlc3QgeworICAgIHN0YXRpYyBjbGFzcyBTb21lQ2xhc3MgeworICAgICAgICBwdWJsaWMgPFQ+IFQgZ2V0WCgpIHsKKyAgICAgICAgICAgIHJldHVybiBudWxsOworICAgICAgICB9CisgICAgfQorCisgICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgeworICAgICAgICAvL2Nhc3QgaXMgbmVlZGVkIGZvciAnU3RyaW5nJyB0byBiZSBpbmZlcmVkIQorICAgICAgICBTeXN0ZW0uZ2V0UHJvcGVydHkoKFN0cmluZyluZXcgU29tZUNsYXNzKCkuZ2V0WCgpKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9yZWR1bmRhbnRDYXN0L2dlbmVyaWNzL0luZmVyZW5jZTIvZXhwZWN0ZWQueG1sIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcmVkdW5kYW50Q2FzdC9nZW5lcmljcy9JbmZlcmVuY2UyL2V4cGVjdGVkLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZTkzMzQ5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcmVkdW5kYW50Q2FzdC9nZW5lcmljcy9JbmZlcmVuY2UyL2V4cGVjdGVkLnhtbApAQCAtMCwwICsxLDMgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8cHJvYmxlbXM+Cis8L3Byb2JsZW1zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3JlZHVuZGFudENhc3QvZ2VuZXJpY3MvSW5mZXJlbmNlMi9zcmMvVGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcmVkdW5kYW50Q2FzdC9nZW5lcmljcy9JbmZlcmVuY2UyL3NyYy9UZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzEyMWMwNQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3JlZHVuZGFudENhc3QvZ2VuZXJpY3MvSW5mZXJlbmNlMi9zcmMvVGVzdC5qYXZhCkBAIC0wLDAgKzEsMzIgQEAKK2ltcG9ydCBqYXZhLnV0aWwuSGFzaFNldDsKK2ltcG9ydCBqYXZhLnV0aWwuU2V0OworCitmaW5hbCBjbGFzcyBQYWlyPEEsIEI+IHsKKyAgICBwdWJsaWMgZmluYWwgQSBmaXJzdDsKKyAgICBwdWJsaWMgZmluYWwgQiBzZWNvbmQ7CisKKyAgICBwdWJsaWMgUGFpcihBIGZpcnN0LCBCIHNlY29uZCkgeworICAgICAgICB0aGlzLmZpcnN0ID0gZmlyc3Q7CisgICAgICAgIHRoaXMuc2Vjb25kID0gc2Vjb25kOworICAgIH0KKworICAgIHB1YmxpYyBmaW5hbCBBIGdldEZpcnN0KCkgeworICAgICAgICByZXR1cm4gZmlyc3Q7CisgICAgfQorCisgICAgcHVibGljIGZpbmFsIEIgZ2V0U2Vjb25kKCkgeworICAgICAgICByZXR1cm4gc2Vjb25kOworICAgIH0KKworICAgIHB1YmxpYyBzdGF0aWMgPEEsIEI+IFBhaXI8QSwgQj4gY3JlYXRlKEEgZmlyc3QsIEIgc2Vjb25kKSB7CisgICAgICAgIHJldHVybiBuZXcgUGFpcjxBLCBCPihmaXJzdCwgc2Vjb25kKTsKKyAgICB9CisKK30KKworY2xhc3MgVGVzdCB7CisgICAgZmluYWwgU2V0PFN0cmluZz4gc3RyaW5ncyA9IG5ldyBIYXNoU2V0PFN0cmluZz4oKTsKKyAgICBmaW5hbCBQYWlyPFNldDxTdHJpbmc+LCBTZXQ8U3RyaW5nPj4geCA9IEJvb2xlYW4uVFJVRS5ib29sZWFuVmFsdWUoKQorICAgICAgICAgICAgPyBQYWlyLmNyZWF0ZShzdHJpbmdzLCBzdHJpbmdzKQorICAgICAgICAgICAgOiBQYWlyLmNyZWF0ZSgoKFNldDxTdHJpbmc+KSAgbnVsbCksIChTZXQ8U3RyaW5nPikgbnVsbCk7IC8vdGhlc2UgY2FzdHMgYXJlIG5vdCByZWR1bmRhbnQKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3JlZHVuZGFudENhc3QvZ2VuZXJpY3MvSW5mZXJlbmNlMy9leHBlY3RlZC54bWwgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9yZWR1bmRhbnRDYXN0L2dlbmVyaWNzL0luZmVyZW5jZTMvZXhwZWN0ZWQueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM4MDIzNmIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9yZWR1bmRhbnRDYXN0L2dlbmVyaWNzL0luZmVyZW5jZTMvZXhwZWN0ZWQueG1sCkBAIC0wLDAgKzEsMTMgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8cHJvYmxlbXM+Cis8cHJvYmxlbT4KKyAgPGZpbGU+VGVzdC5qYXZhPC9maWxlPgorICA8bGluZT4zMTwvbGluZT4KKyAgPGRlc2NyaXB0aW9uPkNhc3RpbmcgJ251bGwnIHRvICdTZXQmbHQ7U3RyaW5nJmd0OycgaXMgcmVkdW5kYW50PC9kZXNjcmlwdGlvbj4KKzwvcHJvYmxlbT4KKzxwcm9ibGVtPgorICA8ZmlsZT5UZXN0LmphdmE8L2ZpbGU+CisgIDxsaW5lPjMxPC9saW5lPgorICA8ZGVzY3JpcHRpb24+Q2FzdGluZyAnbnVsbCcgdG8gJ1NldCZsdDtTdHJpbmcmZ3Q7JyBpcyByZWR1bmRhbnQ8L2Rlc2NyaXB0aW9uPgorPC9wcm9ibGVtPgorPC9wcm9ibGVtcz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9yZWR1bmRhbnRDYXN0L2dlbmVyaWNzL0luZmVyZW5jZTMvc3JjL1Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3JlZHVuZGFudENhc3QvZ2VuZXJpY3MvSW5mZXJlbmNlMy9zcmMvVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY0Y2Y2ZDIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9yZWR1bmRhbnRDYXN0L2dlbmVyaWNzL0luZmVyZW5jZTMvc3JjL1Rlc3QuamF2YQpAQCAtMCwwICsxLDMyIEBACitpbXBvcnQgamF2YS51dGlsLkhhc2hTZXQ7CitpbXBvcnQgamF2YS51dGlsLlNldDsKKworZmluYWwgY2xhc3MgUGFpcjxBLCBCPiB7CisgICAgcHVibGljIGZpbmFsIEEgZmlyc3Q7CisgICAgcHVibGljIGZpbmFsIEIgc2Vjb25kOworCisgICAgcHVibGljIFBhaXIoQSBmaXJzdCwgQiBzZWNvbmQpIHsKKyAgICAgICAgdGhpcy5maXJzdCA9IGZpcnN0OworICAgICAgICB0aGlzLnNlY29uZCA9IHNlY29uZDsKKyAgICB9CisKKyAgICBwdWJsaWMgZmluYWwgQSBnZXRGaXJzdCgpIHsKKyAgICAgICAgcmV0dXJuIGZpcnN0OworICAgIH0KKworICAgIHB1YmxpYyBmaW5hbCBCIGdldFNlY29uZCgpIHsKKyAgICAgICAgcmV0dXJuIHNlY29uZDsKKyAgICB9CisKKyAgICBwdWJsaWMgc3RhdGljIDxBPiBQYWlyPEEsIEE+IGNyZWF0ZShBIGZpcnN0LCBBIHNlY29uZCkgeworICAgICAgICByZXR1cm4gbmV3IFBhaXI8QSwgQT4oZmlyc3QsIHNlY29uZCk7CisgICAgfQorCit9CisKK2NsYXNzIFRlc3QgeworICAgIGZpbmFsIFNldDxTdHJpbmc+IHN0cmluZ3MgPSBuZXcgSGFzaFNldDxTdHJpbmc+KCk7CisgICAgZmluYWwgUGFpcjxTZXQ8U3RyaW5nPiwgU2V0PFN0cmluZz4+IHggPSBCb29sZWFuLlRSVUUuYm9vbGVhblZhbHVlKCkKKyAgICAgICAgICAgID8gUGFpci5jcmVhdGUoc3RyaW5ncywgc3RyaW5ncykKKyAgICAgICAgICAgIDogUGFpci5jcmVhdGUoKChTZXQ8U3RyaW5nPikgIG51bGwpLCAoU2V0PFN0cmluZz4pIG51bGwpOyAvL2JvdGggY2FzdHMgYXJlIG1hcmtlZCwgYnV0IG9uZSBpcyByZXF1aXJlZCBmb3IgY29ycmVjdCBpbmZlcmVuY2UKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3JlZHVuZGFudENhc3QvZ2VuZXJpY3MvSW5mZXJlbmNlRnJvbUNhc3QvZXhwZWN0ZWQueG1sIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcmVkdW5kYW50Q2FzdC9nZW5lcmljcy9JbmZlcmVuY2VGcm9tQ2FzdC9leHBlY3RlZC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGFhYjJhZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3JlZHVuZGFudENhc3QvZ2VuZXJpY3MvSW5mZXJlbmNlRnJvbUNhc3QvZXhwZWN0ZWQueG1sCkBAIC0wLDAgKzEsMTMgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8cHJvYmxlbXM+CisgIDxwcm9ibGVtPgorICAgIDxmaWxlPlRlc3QuamF2YTwvZmlsZT4KKyAgICA8bGluZT41PC9saW5lPgorICAgIDxkZXNjcmlwdGlvbj5DYXN0aW5nICZsdDtjb2RlJmd0O2dldENvbXBvbmVudCgmcXVvdDtiYXImcXVvdDspJmx0Oy9jb2RlJmd0OyB0byAmbHQ7Y29kZSZndDtCYXImbHQ7L2NvZGUmZ3Q7IGlzIHJlZHVuZGFudDwvZGVzY3JpcHRpb24+CisgIDwvcHJvYmxlbT4KKyAgPHByb2JsZW0+CisgICAgPGZpbGU+VGVzdC5qYXZhPC9maWxlPgorICAgIDxsaW5lPjY8L2xpbmU+CisgICAgPGRlc2NyaXB0aW9uPkNhc3RpbmcgJmx0O2NvZGUmZ3Q7Z2V0Q29tcG9uZW50KCZxdW90O2JhciZxdW90OykmbHQ7L2NvZGUmZ3Q7IHRvICZsdDtjb2RlJmd0O0JhciZsdDsvY29kZSZndDsgaXMgcmVkdW5kYW50PC9kZXNjcmlwdGlvbj4KKyAgPC9wcm9ibGVtPgorPC9wcm9ibGVtcz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9yZWR1bmRhbnRDYXN0L2dlbmVyaWNzL0luZmVyZW5jZUZyb21DYXN0L3NyYy9UZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9yZWR1bmRhbnRDYXN0L2dlbmVyaWNzL0luZmVyZW5jZUZyb21DYXN0L3NyYy9UZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODU1MjcyNQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3JlZHVuZGFudENhc3QvZ2VuZXJpY3MvSW5mZXJlbmNlRnJvbUNhc3Qvc3JjL1Rlc3QuamF2YQpAQCAtMCwwICsxLDE4IEBACitjbGFzcyBUZXN0IHsKKworICAgIHsKKyAgICAgICAgZigoQmFyKSBnZXRDb21wb25lbnQoImJhciIpKTsKKyAgICAgICAgZjEoKEJhcikgZ2V0Q29tcG9uZW50KCJiYXIiKSk7CisgICAgICAgIEJhciBiID0gKEJhcikgZ2V0Q29tcG9uZW50KCJiYXIiKTsKKyAgICB9CisKKyAgICBwcml2YXRlIDxKIGV4dGVuZHMgQmFyPiB2b2lkIGYoSiBqKSB7fQorCisgICAgcHJpdmF0ZSA8Sj4gdm9pZCBmMShKIGopIHt9CisKKyAgICBwcml2YXRlIDxUPiBUIGdldENvbXBvbmVudChTdHJpbmcgbmFtZSkgeworICAgICAgICByZXR1cm4gbnVsbDsKKyAgICB9CisKKyAgICBzdGF0aWMgY2xhc3MgQmFyIHt9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9yZWR1bmRhbnRDYXN0L2dlbmVyaWNzL051bGxJblZhcmFyZ3NQYXJhbWV0ZXIvZXhwZWN0ZWQueG1sIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcmVkdW5kYW50Q2FzdC9nZW5lcmljcy9OdWxsSW5WYXJhcmdzUGFyYW1ldGVyL2V4cGVjdGVkLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ODkwNmJkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcmVkdW5kYW50Q2FzdC9nZW5lcmljcy9OdWxsSW5WYXJhcmdzUGFyYW1ldGVyL2V4cGVjdGVkLnhtbApAQCAtMCwwICsxLDEzIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPHByb2JsZW1zPgorICA8cHJvYmxlbT4KKyAgICA8ZmlsZT5UZXN0LmphdmE8L2ZpbGU+CisgICAgPGxpbmU+ODwvbGluZT4KKyAgICA8ZGVzY3JpcHRpb24+Q2FzdGluZyBudWxsIHRvIENsYXNzW10gaXMgcmVkdW5kYW50PC9kZXNjcmlwdGlvbj4KKyAgPC9wcm9ibGVtPgorICA8cHJvYmxlbT4KKyAgICA8ZmlsZT5UZXN0LmphdmE8L2ZpbGU+CisgICAgPGxpbmU+OTwvbGluZT4KKyAgICA8ZGVzY3JpcHRpb24+Q2FzdGluZyBudWxsIHRvIENsYXNzW10gaXMgcmVkdW5kYW50PC9kZXNjcmlwdGlvbj4KKyAgPC9wcm9ibGVtPgorPC9wcm9ibGVtcz4KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3JlZHVuZGFudENhc3QvZ2VuZXJpY3MvTnVsbEluVmFyYXJnc1BhcmFtZXRlci9zcmMvVGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcmVkdW5kYW50Q2FzdC9nZW5lcmljcy9OdWxsSW5WYXJhcmdzUGFyYW1ldGVyL3NyYy9UZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzE3ZDI2NDcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9yZWR1bmRhbnRDYXN0L2dlbmVyaWNzL051bGxJblZhcmFyZ3NQYXJhbWV0ZXIvc3JjL1Rlc3QuamF2YQpAQCAtMCwwICsxLDExIEBACitjbGFzcyBUZXN0IHsKKyAgdm9pZCBmKENsYXNzLi4uIGNsYXNzZXMpIHsKKyAgfQorCisgIHZvaWQgZygpIHsKKyAgICBmKCgoQ2xhc3NbXSludWxsKSk7CisgICAgZigoKENsYXNzKW51bGwpKTsKKyAgICBmKCgoQ2xhc3MpbnVsbCksCisgICAgICAoKENsYXNzKW51bGwpKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3JlZHVuZGFudENhc3QvZ2VuZXJpY3MvUmF3Q2FzdC9leHBlY3RlZC54bWwgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9yZWR1bmRhbnRDYXN0L2dlbmVyaWNzL1Jhd0Nhc3QvZXhwZWN0ZWQueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ3MDRkOTEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9yZWR1bmRhbnRDYXN0L2dlbmVyaWNzL1Jhd0Nhc3QvZXhwZWN0ZWQueG1sCkBAIC0wLDAgKzEsMiBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxwcm9ibGVtcy8+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcmVkdW5kYW50Q2FzdC9nZW5lcmljcy9SYXdDYXN0L3NyYy9UZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9yZWR1bmRhbnRDYXN0L2dlbmVyaWNzL1Jhd0Nhc3Qvc3JjL1Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMzhhODU1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcmVkdW5kYW50Q2FzdC9nZW5lcmljcy9SYXdDYXN0L3NyYy9UZXN0LmphdmEKQEAgLTAsMCArMSwyMSBAQAoraW1wb3J0IGphdmEudXRpbC5MaXN0OworaW1wb3J0IGphdmEudXRpbC5NYXA7CitpbXBvcnQgamF2YS51dGlsLlByb3BlcnRpZXM7CisKK3B1YmxpYyBjbGFzcyBNYWluIHsKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgICAgUHJvcGVydGllcyBwcm9wZXJ0aWVzID0gbmV3IFByb3BlcnRpZXMoKTsKKworICAgICAgICBNYXA8U3RyaW5nLCBTdHJpbmc+IG1hcCA9IChNYXApIHByb3BlcnRpZXM7CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihtYXApOworICAgIH0KK30KKworaW50ZXJmYWNlIEkge30KK2NsYXNzIEMgaW1wbGVtZW50cyBJIHt9CitjbGFzcyBVIHsKKyAgdm9pZCBmb28oKSB7CisgICAgTGlzdDxDPiBsaXN0T2ZDID0gbnVsbDsKKyAgICBMaXN0PEk+IGxpc3RPZkkgPSAoTGlzdCkgbGlzdE9mQzsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcmVkdW5kYW50Q2FzdC9nZW5lcmljcy9SYXdDYXN0MS9leHBlY3RlZC54bWwgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9yZWR1bmRhbnRDYXN0L2dlbmVyaWNzL1Jhd0Nhc3QxL2V4cGVjdGVkLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NzA0ZDkxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcmVkdW5kYW50Q2FzdC9nZW5lcmljcy9SYXdDYXN0MS9leHBlY3RlZC54bWwKQEAgLTAsMCArMSwyIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPHByb2JsZW1zLz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9yZWR1bmRhbnRDYXN0L2dlbmVyaWNzL1Jhd0Nhc3QxL3NyYy9UZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9yZWR1bmRhbnRDYXN0L2dlbmVyaWNzL1Jhd0Nhc3QxL3NyYy9UZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmYzMDJkZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3JlZHVuZGFudENhc3QvZ2VuZXJpY3MvUmF3Q2FzdDEvc3JjL1Rlc3QuamF2YQpAQCAtMCwwICsxLDEwIEBACitjbGFzcyBUZXN0IHsKKyAgeworICAgIGNsYXNzIFR5cGVkUXVlcnk8VD4ge30KKyAgICBjbGFzcyBUZW1wb3JhbERhdGFEVE88Sz4ge30KKyAgICBjbGFzcyBGT0xERVJfSUQge30KKworICAgIFR5cGVkUXVlcnk8VGVtcG9yYWxEYXRhRFRPPiBoID0gbnVsbDsKKyAgICBUeXBlZFF1ZXJ5PFRlbXBvcmFsRGF0YURUTzxGT0xERVJfSUQ+PiB0eXBlZFF1ZXJ5ID0gKFR5cGVkUXVlcnk8VGVtcG9yYWxEYXRhRFRPPEZPTERFUl9JRD4+KSAoVHlwZWRRdWVyeTw/PiloOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcmVkdW5kYW50Q2FzdC9nZW5lcmljcy9SYXdDYXN0c1RvQXZvaWRJbmNvbXBhdGliaWxpdHkvZXhwZWN0ZWQueG1sIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcmVkdW5kYW50Q2FzdC9nZW5lcmljcy9SYXdDYXN0c1RvQXZvaWRJbmNvbXBhdGliaWxpdHkvZXhwZWN0ZWQueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM2M2M5MjUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9yZWR1bmRhbnRDYXN0L2dlbmVyaWNzL1Jhd0Nhc3RzVG9Bdm9pZEluY29tcGF0aWJpbGl0eS9leHBlY3RlZC54bWwKQEAgLTAsMCArMSwyIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPHByb2JsZW1zLz4KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3JlZHVuZGFudENhc3QvZ2VuZXJpY3MvUmF3Q2FzdHNUb0F2b2lkSW5jb21wYXRpYmlsaXR5L3NyYy9DYXN0Q2FzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcmVkdW5kYW50Q2FzdC9nZW5lcmljcy9SYXdDYXN0c1RvQXZvaWRJbmNvbXBhdGliaWxpdHkvc3JjL0Nhc3RDYXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWY4MWRlZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3JlZHVuZGFudENhc3QvZ2VuZXJpY3MvUmF3Q2FzdHNUb0F2b2lkSW5jb21wYXRpYmlsaXR5L3NyYy9DYXN0Q2FzdC5qYXZhCkBAIC0wLDAgKzEsMTMgQEAKK2ltcG9ydCBqYXZhLnV0aWwuTGlzdDsKKworCitjbGFzcyBSZWR1bmRhbnRDYXN0cyB7CisgICAgTGlzdDxUcmFuc2xhdGluZ0NvbXBpbGVyPiBteVRyYW5zbGF0b3JzOworICAgIHZvaWQgdCgpIHsKKyAgICAgICAgYigoTGlzdDxDb21waWxlcj4pIChMaXN0KW15VHJhbnNsYXRvcnMpOworICAgIH0KKworICAgIHZvaWQgYihMaXN0PENvbXBpbGVyPiBsKXt9Cit9CitpbnRlcmZhY2UgQ29tcGlsZXJ7fQoraW50ZXJmYWNlIFRyYW5zbGF0aW5nQ29tcGlsZXIgZXh0ZW5kcyBDb21waWxlcnt9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9yZWR1bmRhbnRDYXN0L2dlbmVyaWNzL1Jhd0Nhc3RzVG9Bdm9pZEluY29tcGF0aWJpbGl0eS9zcmMvUmV0dXJuVmFsdWUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3JlZHVuZGFudENhc3QvZ2VuZXJpY3MvUmF3Q2FzdHNUb0F2b2lkSW5jb21wYXRpYmlsaXR5L3NyYy9SZXR1cm5WYWx1ZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYzMDg3MGIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9yZWR1bmRhbnRDYXN0L2dlbmVyaWNzL1Jhd0Nhc3RzVG9Bdm9pZEluY29tcGF0aWJpbGl0eS9zcmMvUmV0dXJuVmFsdWUuamF2YQpAQCAtMCwwICsxLDE2IEBACitpbnRlcmZhY2UgR2VuZXJpY1ZhbHVlPFQ+IHsKKyAgICBUIGdldFZhbHVlKCk7Cit9CisKK2ludGVyZmFjZSBHZW5lcmljQXR0VmFsdWU8VD4gZXh0ZW5kcyBHZW5lcmljVmFsdWU8VD4geworfQorCitpbnRlcmZhY2UgUHJvcGVydHkgeworICAgIEdlbmVyaWNBdHRWYWx1ZTxPYmplY3Q+IGdldFZhbHVlKCk7Cit9CisKK2NsYXNzIFJlZENhc3QgeworICAgIHB1YmxpYyBHZW5lcmljVmFsdWU8U3RyaW5nPiBnZXREYXRhU291cmNlTmFtZShQcm9wZXJ0eSBwcm9wZXJ0eSkgeworICAgICAgICByZXR1cm4gIChHZW5lcmljVmFsdWUpICBwcm9wZXJ0eS5nZXRWYWx1ZSgpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3JlZHVuZGFudENhc3QvZ2VuZXJpY3MvVHlwZVBhcmFtZXRlckFjY2Vzc0NoZWNrc0phdmE3L2V4cGVjdGVkLnhtbCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3JlZHVuZGFudENhc3QvZ2VuZXJpY3MvVHlwZVBhcmFtZXRlckFjY2Vzc0NoZWNrc0phdmE3L2V4cGVjdGVkLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NzA0ZDkxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcmVkdW5kYW50Q2FzdC9nZW5lcmljcy9UeXBlUGFyYW1ldGVyQWNjZXNzQ2hlY2tzSmF2YTcvZXhwZWN0ZWQueG1sCkBAIC0wLDAgKzEsMiBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxwcm9ibGVtcy8+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcmVkdW5kYW50Q2FzdC9nZW5lcmljcy9UeXBlUGFyYW1ldGVyQWNjZXNzQ2hlY2tzSmF2YTcvc3JjL1R5cGVQYXJhbWV0ZXJBY2Nlc3NDaGVja3NKYXZhNy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcmVkdW5kYW50Q2FzdC9nZW5lcmljcy9UeXBlUGFyYW1ldGVyQWNjZXNzQ2hlY2tzSmF2YTcvc3JjL1R5cGVQYXJhbWV0ZXJBY2Nlc3NDaGVja3NKYXZhNy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgyZTI3NjMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9yZWR1bmRhbnRDYXN0L2dlbmVyaWNzL1R5cGVQYXJhbWV0ZXJBY2Nlc3NDaGVja3NKYXZhNy9zcmMvVHlwZVBhcmFtZXRlckFjY2Vzc0NoZWNrc0phdmE3LmphdmEKQEAgLTAsMCArMSw3IEBACitwdWJsaWMgYWJzdHJhY3QgY2xhc3MgRm9vPFQgZXh0ZW5kcyBGb288VD4+IHsKKyAgcHJpdmF0ZSBpbnQgZmllbGQ7CisKKyAgcHVibGljIGludCBiYXIoVCB0KXsKKyAgICByZXR1cm4gKChGb288VD4pdCkuZmllbGQ7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9yZWR1bmRhbnRDYXN0L2dlbmVyaWNzL1dyYXBwZXJUb1ByaW1pdGl2ZUNhc3QvZXhwZWN0ZWQueG1sIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcmVkdW5kYW50Q2FzdC9nZW5lcmljcy9XcmFwcGVyVG9QcmltaXRpdmVDYXN0L2V4cGVjdGVkLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NTc0Y2M3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcmVkdW5kYW50Q2FzdC9nZW5lcmljcy9XcmFwcGVyVG9QcmltaXRpdmVDYXN0L2V4cGVjdGVkLnhtbApAQCAtMCwwICsxLDQ4IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPHByb2JsZW1zPgorICA8cHJvYmxlbT4KKyAgICA8ZmlsZT5XcmFwcGVyVG9QcmltaXRpdmVDYXN0LmphdmE8L2ZpbGU+CisgICAgPGxpbmU+ODwvbGluZT4KKyAgICA8cHJvYmxlbV9jbGFzcyBzZXZlcml0eT0iV0FSTklORyIgYXR0cmlidXRlX2tleT0iTk9UX1VTRURfRUxFTUVOVF9BVFRSSUJVVEVTIj5SZWR1bmRhbnQgdHlwZSBjYXN0PC9wcm9ibGVtX2NsYXNzPgorICAgIDxkZXNjcmlwdGlvbj5DYXN0aW5nICZsdDtjb2RlJmd0O0ombHQ7L2NvZGUmZ3Q7IHRvICZsdDtjb2RlJmd0O2ludCZsdDsvY29kZSZndDsgaXMgcmVkdW5kYW50PC9kZXNjcmlwdGlvbj4KKyAgPC9wcm9ibGVtPgorCisgIDxwcm9ibGVtPgorICAgIDxmaWxlPldyYXBwZXJUb1ByaW1pdGl2ZUNhc3QuamF2YTwvZmlsZT4KKyAgICA8bGluZT45PC9saW5lPgorICAgIDxwcm9ibGVtX2NsYXNzIHNldmVyaXR5PSJXQVJOSU5HIiBhdHRyaWJ1dGVfa2V5PSJOT1RfVVNFRF9FTEVNRU5UX0FUVFJJQlVURVMiPlJlZHVuZGFudCB0eXBlIGNhc3Q8L3Byb2JsZW1fY2xhc3M+CisgICAgPGRlc2NyaXB0aW9uPkNhc3RpbmcgJmx0O2NvZGUmZ3Q7SSZsdDsvY29kZSZndDsgdG8gJmx0O2NvZGUmZ3Q7aW50Jmx0Oy9jb2RlJmd0OyBpcyByZWR1bmRhbnQ8L2Rlc2NyaXB0aW9uPgorICA8L3Byb2JsZW0+CisKKyAgPHByb2JsZW0+CisgICAgPGZpbGU+V3JhcHBlclRvUHJpbWl0aXZlQ2FzdC5qYXZhPC9maWxlPgorICAgIDxsaW5lPjEyPC9saW5lPgorICAgIDxwcm9ibGVtX2NsYXNzIHNldmVyaXR5PSJXQVJOSU5HIiBhdHRyaWJ1dGVfa2V5PSJOT1RfVVNFRF9FTEVNRU5UX0FUVFJJQlVURVMiPlJlZHVuZGFudCB0eXBlIGNhc3Q8L3Byb2JsZW1fY2xhc3M+CisgICAgPGRlc2NyaXB0aW9uPkNhc3RpbmcgJmx0O2NvZGUmZ3Q7cCZsdDsvY29kZSZndDsgdG8gJmx0O2NvZGUmZ3Q7SW50ZWdlciZsdDsvY29kZSZndDsgaXMgcmVkdW5kYW50PC9kZXNjcmlwdGlvbj4KKyAgPC9wcm9ibGVtPgorCisgIDxwcm9ibGVtPgorICAgIDxmaWxlPldyYXBwZXJUb1ByaW1pdGl2ZUNhc3QuamF2YTwvZmlsZT4KKyAgICA8bGluZT4xNTwvbGluZT4KKyAgICA8cHJvYmxlbV9jbGFzcyBzZXZlcml0eT0iV0FSTklORyIgYXR0cmlidXRlX2tleT0iTk9UX1VTRURfRUxFTUVOVF9BVFRSSUJVVEVTIj5SZWR1bmRhbnQgdHlwZSBjYXN0PC9wcm9ibGVtX2NsYXNzPgorICAgIDxkZXNjcmlwdGlvbj5DYXN0aW5nICZsdDtjb2RlJmd0O3AmbHQ7L2NvZGUmZ3Q7IHRvICZsdDtjb2RlJmd0O0ludGVnZXImbHQ7L2NvZGUmZ3Q7IGlzIHJlZHVuZGFudDwvZGVzY3JpcHRpb24+CisgIDwvcHJvYmxlbT4KKworCisgIDxwcm9ibGVtPgorICAgIDxmaWxlPldyYXBwZXJUb1ByaW1pdGl2ZUNhc3QuamF2YTwvZmlsZT4KKyAgICA8bGluZT4yNDwvbGluZT4KKyAgICA8cHJvYmxlbV9jbGFzcyBzZXZlcml0eT0iV0FSTklORyIgYXR0cmlidXRlX2tleT0iTk9UX1VTRURfRUxFTUVOVF9BVFRSSUJVVEVTIj5SZWR1bmRhbnQgdHlwZSBjYXN0PC9wcm9ibGVtX2NsYXNzPgorICAgIDxkZXNjcmlwdGlvbj5DYXN0aW5nICZsdDtjb2RlJmd0O2xudW1iZXImbHQ7L2NvZGUmZ3Q7IHRvICZsdDtjb2RlJmd0O2xvbmcmbHQ7L2NvZGUmZ3Q7IGlzIHJlZHVuZGFudDwvZGVzY3JpcHRpb24+CisgIDwvcHJvYmxlbT4KKworCisgIDxwcm9ibGVtPgorICAgIDxmaWxlPldyYXBwZXJUb1ByaW1pdGl2ZUNhc3QuamF2YTwvZmlsZT4KKyAgICA8bGluZT4yNDwvbGluZT4KKyAgICA8cHJvYmxlbV9jbGFzcyBzZXZlcml0eT0iV0FSTklORyIgYXR0cmlidXRlX2tleT0iTk9UX1VTRURfRUxFTUVOVF9BVFRSSUJVVEVTIj5SZWR1bmRhbnQgdHlwZSBjYXN0PC9wcm9ibGVtX2NsYXNzPgorICAgIDxkZXNjcmlwdGlvbj5DYXN0aW5nICZsdDtjb2RlJmd0O2xudW1iZXImbHQ7L2NvZGUmZ3Q7IHRvICZsdDtjb2RlJmd0O2xvbmcmbHQ7L2NvZGUmZ3Q7IGlzIHJlZHVuZGFudDwvZGVzY3JpcHRpb24+CisgIDwvcHJvYmxlbT4KKworPC9wcm9ibGVtcz4KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcmVkdW5kYW50Q2FzdC9nZW5lcmljcy9XcmFwcGVyVG9QcmltaXRpdmVDYXN0L3NyYy9XcmFwcGVyVG9QcmltaXRpdmVDYXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9yZWR1bmRhbnRDYXN0L2dlbmVyaWNzL1dyYXBwZXJUb1ByaW1pdGl2ZUNhc3Qvc3JjL1dyYXBwZXJUb1ByaW1pdGl2ZUNhc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYTNlNzczCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcmVkdW5kYW50Q2FzdC9nZW5lcmljcy9XcmFwcGVyVG9QcmltaXRpdmVDYXN0L3NyYy9XcmFwcGVyVG9QcmltaXRpdmVDYXN0LmphdmEKQEAgLTAsMCArMSwzMiBAQAorcHVibGljIGNsYXNzIE1haW4geworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKKyAgICAgICAgSW50ZWdlciBKID0gNDsKKyAgICAgICAgSW50ZWdlciBJID0gbmV3IEludGVnZXIoNCk7CisKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKEkgPT0gSik7CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigoaW50KSBJID09IEopOworICAgICAgICBpbnQgaiA9IChpbnQpSjsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKChpbnQpIEkgPT0gaik7CisKKyAgICAgICAgaW50IHAgPSA1NTU1NTU7CisgICAgICAgIEludGVnZXIgVyA9IChJbnRlZ2VyKSBwOworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oKEludGVnZXIpIHAgPT0gVyk7CisgICAgICAgIGludCB3ID0gVzsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKChJbnRlZ2VyKSBwID09IHcpOworCisgICAgICAgIEludGVnZXIgdGVzdCA9IDEwOworICAgICAgICBkb3VibGUgZCA9ICgoZG91YmxlKXRlc3QvMTAwKTsKKworICAgICAgICBEb3VibGUgbnVtYmVyID0gRG91YmxlLnZhbHVlT2YoMyk7CisgICAgICAgIGxvbmcgaW50ZWdlclBhcnQgPSAobG9uZykgKGRvdWJsZSkgbnVtYmVyOworCisgICAgICAgIExvbmcgbG51bWJlciA9IExvbmcudmFsdWVPZigzKTsKKyAgICAgICAgbG9uZyBpbnRlZ2VyUGFydEwgPSAobG9uZykgKGxvbmcpIGxudW1iZXI7CisgICAgfQorfQorCitjbGFzcyBGb288VD4geworICBUIGZvbygpIHsKKyAgICByZXR1cm4gKFQpKE9iamVjdCkxOworICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9yZWR1bmRhbnRDYXN0L2xhbWJkYS9FeHBlY3RlZFN1cGVydHlwZS9leHBlY3RlZC54bWwgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9yZWR1bmRhbnRDYXN0L2xhbWJkYS9FeHBlY3RlZFN1cGVydHlwZS9leHBlY3RlZC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWU5MzM0OQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3JlZHVuZGFudENhc3QvbGFtYmRhL0V4cGVjdGVkU3VwZXJ0eXBlL2V4cGVjdGVkLnhtbApAQCAtMCwwICsxLDMgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8cHJvYmxlbXM+Cis8L3Byb2JsZW1zPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3JlZHVuZGFudENhc3QvbGFtYmRhL0V4cGVjdGVkU3VwZXJ0eXBlL3NyYy9UZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9yZWR1bmRhbnRDYXN0L2xhbWJkYS9FeHBlY3RlZFN1cGVydHlwZS9zcmMvVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk3ODMyZTQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9yZWR1bmRhbnRDYXN0L2xhbWJkYS9FeHBlY3RlZFN1cGVydHlwZS9zcmMvVGVzdC5qYXZhCkBAIC0wLDAgKzEsMzEgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwMC0yMDEyIEpldEJyYWlucyBzLnIuby4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwdWJsaWMgY2xhc3MgVGVzdCB7CisgIGludGVyZmFjZSBJIHsKKyAgfQorCisgIGludGVyZmFjZSBCYXIgZXh0ZW5kcyBJIHsKKyAgICBpbnQgY29tcGFyZShTdHJpbmcgbzEsIFN0cmluZyBvMik7CisgIH0KKworICB7CisgICAgSSBiYXIyID0gKEJhcikgKG8xLCBvMikgLT4gMDsKKyAgICBnKChCYXIpIChvMSwgbzIpIC0+IDApOworICAgICgoQmFyKSAobzEsIG8yKSAtPiAwKS5nZXRDbGFzcygpOworICB9CisKKyAgdm9pZCBnKEkgaSl7fQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3JlZHVuZGFudENhc3QvbGFtYmRhL0xhbWJkYUNvbnRleHQvZXhwZWN0ZWQueG1sIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcmVkdW5kYW50Q2FzdC9sYW1iZGEvTGFtYmRhQ29udGV4dC9leHBlY3RlZC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTM3M2NkYwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3JlZHVuZGFudENhc3QvbGFtYmRhL0xhbWJkYUNvbnRleHQvZXhwZWN0ZWQueG1sCkBAIC0wLDAgKzEsOCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxwcm9ibGVtcz4KKyAgPHByb2JsZW0+CisgICAgPGZpbGU+VGVzdC5qYXZhPC9maWxlPgorICAgIDxsaW5lPjc8L2xpbmU+CisgICAgPGRlc2NyaXB0aW9uPkNhc3RpbmcgJmx0O2NvZGUmZ3Q7cyAtJmd0OyBzLmVuZHNXaXRoKCZxdW90Oy5qYXZhJnF1b3Q7KSZsdDsvY29kZSZndDsgdG8gJmx0O2NvZGUmZ3Q7SSZsdDsvY29kZSZndDsgaXMgcmVkdW5kYW50PC9kZXNjcmlwdGlvbj4KKyAgPC9wcm9ibGVtPgorPC9wcm9ibGVtcz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9yZWR1bmRhbnRDYXN0L2xhbWJkYS9MYW1iZGFDb250ZXh0L3NyYy9UZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9yZWR1bmRhbnRDYXN0L2xhbWJkYS9MYW1iZGFDb250ZXh0L3NyYy9UZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTEwZDE4NAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3JlZHVuZGFudENhc3QvbGFtYmRhL0xhbWJkYUNvbnRleHQvc3JjL1Rlc3QuamF2YQpAQCAtMCwwICsxLDEwIEBACitjbGFzcyBUZXN0IHsKKyAgaW50ZXJmYWNlIEkgeworICAgIGJvb2xlYW4gZm9vKFN0cmluZyBzKTsKKyAgfQorICB7CisgICAgKChJKXMgLT4gcy5lbmRzV2l0aCgiLmphdmEiKSkuZ2V0Q2xhc3MoKTsKKyAgICBJIGkgPSAoSSlzIC0+IHMuZW5kc1dpdGgoIi5qYXZhIik7CisgICAgCisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3JlZHVuZGFudENhc3QvbGFtYmRhL01ldGhvZFJlZkNvbnRleHQvZXhwZWN0ZWQueG1sIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcmVkdW5kYW50Q2FzdC9sYW1iZGEvTWV0aG9kUmVmQ29udGV4dC9leHBlY3RlZC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDcwNGQ5MQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3JlZHVuZGFudENhc3QvbGFtYmRhL01ldGhvZFJlZkNvbnRleHQvZXhwZWN0ZWQueG1sCkBAIC0wLDAgKzEsMiBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxwcm9ibGVtcy8+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcmVkdW5kYW50Q2FzdC9sYW1iZGEvTWV0aG9kUmVmQ29udGV4dC9zcmMvVGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcmVkdW5kYW50Q2FzdC9sYW1iZGEvTWV0aG9kUmVmQ29udGV4dC9zcmMvVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI4MmYyY2EKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9yZWR1bmRhbnRDYXN0L2xhbWJkYS9NZXRob2RSZWZDb250ZXh0L3NyYy9UZXN0LmphdmEKQEAgLTAsMCArMSwxMyBAQAorY2xhc3MgVGVzdCB7CisgIHsKKyAgICAgICgoQmFyKSBUZXN0OjpsZW5ndGgpLl8oIiIpOworICB9CisKKyAgcHVibGljIHN0YXRpYyBJbnRlZ2VyIGxlbmd0aChTdHJpbmcgcykgeworICAgIHJldHVybiBzLmxlbmd0aCgpOworICB9CisKKyAgaW50ZXJmYWNlIEJhciB7CisgICAgSW50ZWdlciBfKFN0cmluZyBzKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3JlZHVuZGFudFN1cHByZXNzL2RlZmF1bHRGaWxlL2V4cGVjdGVkLnhtbCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3JlZHVuZGFudFN1cHByZXNzL2RlZmF1bHRGaWxlL2V4cGVjdGVkLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZmQ3ZjdhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcmVkdW5kYW50U3VwcHJlc3MvZGVmYXVsdEZpbGUvZXhwZWN0ZWQueG1sCkBAIC0wLDAgKzEsNjMgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8cHJvYmxlbXM+CisKKyAgPHByb2JsZW0+CisgICAgPGZpbGU+WC5qYXZhPC9maWxlPgorICAgIDxsaW5lPjQ8L2xpbmU+CisgICAgPHByb2JsZW1fY2xhc3M+UmVkdW5kYW50IHN1cHByZXNzaW9uPC9wcm9ibGVtX2NsYXNzPgorICAgIDxkZXNjcmlwdGlvbj5SZWR1bmRhbnQgc3VwcHJlc3Npb248L2Rlc2NyaXB0aW9uPgorICAgIDxlbnRyeV9wb2ludCBUWVBFPSJtZXRob2QiIEZRTkFNRT0ieC5TIHZvaWQgZigpIiAvPgorICA8L3Byb2JsZW0+CisKKyAgPHByb2JsZW0+CisgICAgPGZpbGU+WC5qYXZhPC9maWxlPgorICAgIDxsaW5lPjQyPC9saW5lPgorICAgIDxwcm9ibGVtX2NsYXNzPlJlZHVuZGFudCBzdXBwcmVzc2lvbjwvcHJvYmxlbV9jbGFzcz4KKyAgICA8ZGVzY3JpcHRpb24+UmVkdW5kYW50IHN1cHByZXNzaW9uPC9kZXNjcmlwdGlvbj4KKyAgICA8ZW50cnlfcG9pbnQgVFlQRT0ibWV0aG9kIiBGUU5BTUU9InguUyB2b2lkIGooKSIgLz4KKyAgPC9wcm9ibGVtPgorCisgIDxwcm9ibGVtPgorICAgIDxmaWxlPlguamF2YTwvZmlsZT4KKyAgICA8bGluZT41MzwvbGluZT4KKyAgICA8cHJvYmxlbV9jbGFzcz5SZWR1bmRhbnQgc3VwcHJlc3Npb248L3Byb2JsZW1fY2xhc3M+CisgICAgPGRlc2NyaXB0aW9uPlJlZHVuZGFudCBzdXBwcmVzc2lvbjwvZGVzY3JpcHRpb24+CisgICAgIDxlbnRyeV9wb2ludCBUWVBFPSJmaWVsZCIgRlFOQU1FPSJ4LlMkM3NzIHMiIC8+CisgIDwvcHJvYmxlbT4KKworCisgIDxwcm9ibGVtPgorICAgIDxmaWxlPlguamF2YTwvZmlsZT4KKyAgICA8bGluZT4xOTwvbGluZT4KKyAgICA8cHJvYmxlbV9jbGFzcz5SZWR1bmRhbnQgc3VwcHJlc3Npb248L3Byb2JsZW1fY2xhc3M+CisgICAgPGRlc2NyaXB0aW9uPlJlZHVuZGFudCBzdXBwcmVzc2lvbjwvZGVzY3JpcHRpb24+CisgICAgPGVudHJ5X3BvaW50IFRZUEU9Im1ldGhvZCIgRlFOQU1FPSJ4LlMgdm9pZCBoKCkiIC8+CisgIDwvcHJvYmxlbT4KKworCisgIDxwcm9ibGVtPgorICAgIDxmaWxlPlguamF2YTwvZmlsZT4KKyAgICA8bGluZT4zMDwvbGluZT4KKyAgICA8cHJvYmxlbV9jbGFzcz5SZWR1bmRhbnQgc3VwcHJlc3Npb248L3Byb2JsZW1fY2xhc3M+CisgICAgPGRlc2NyaXB0aW9uPlJlZHVuZGFudCBzdXBwcmVzc2lvbjwvZGVzY3JpcHRpb24+CisgICAgPGVudHJ5X3BvaW50IFRZUEU9ImNsYXNzIiBGUU5BTUU9InguUyQxc3MiIC8+CisgIDwvcHJvYmxlbT4KKworCisgIDxwcm9ibGVtPgorICAgIDxmaWxlPlguamF2YTwvZmlsZT4KKyAgICA8bGluZT4xMTwvbGluZT4KKyAgICA8cHJvYmxlbV9jbGFzcz5SZWR1bmRhbnQgc3VwcHJlc3Npb248L3Byb2JsZW1fY2xhc3M+CisgICAgPGRlc2NyaXB0aW9uPlJlZHVuZGFudCBzdXBwcmVzc2lvbjwvZGVzY3JpcHRpb24+CisgICAgPGVudHJ5X3BvaW50IFRZUEU9Im1ldGhvZCIgRlFOQU1FPSJ4LlMgdm9pZCBnKCkiIC8+CisgIDwvcHJvYmxlbT4KKworICA8cHJvYmxlbT4KKyAgICA8ZmlsZT5YLmphdmE8L2ZpbGU+CisgICAgPGxpbmU+Njc8L2xpbmU+CisgICAgPHByb2JsZW1fY2xhc3M+UmVkdW5kYW50IHN1cHByZXNzaW9uPC9wcm9ibGVtX2NsYXNzPgorICAgIDxkZXNjcmlwdGlvbj5SZWR1bmRhbnQgc3VwcHJlc3Npb248L2Rlc2NyaXB0aW9uPgorICAgIDxlbnRyeV9wb2ludCBUWVBFPSJtZXRob2QiIEZRTkFNRT0ieC5TIHZvaWQgZm9vMSgpIiAvPgorICA8L3Byb2JsZW0+CisKKzwvcHJvYmxlbXM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcmVkdW5kYW50U3VwcHJlc3MvZGVmYXVsdEZpbGUvc3JjL3gvWC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcmVkdW5kYW50U3VwcHJlc3MvZGVmYXVsdEZpbGUvc3JjL3gvWC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk1ZTFhNjMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9yZWR1bmRhbnRTdXBwcmVzcy9kZWZhdWx0RmlsZS9zcmMveC9YLmphdmEKQEAgLTAsMCArMSw2OSBAQAorcGFja2FnZSB4OworCitjbGFzcyBTIHsKKyAgICBwdWJsaWMgdm9pZCBmKCkgeworICAgICAgICAvL25vaW5zcGVjdGlvbiBIYXJkQ29kZWRTdHJpbmdMaXRlcmFsCisgICAgICAgIFN0cmluZyBzPW51bGw7CisgICAgICAgIC8vbm9pbnNwZWN0aW9uIEhhcmRDb2RlZFN0cmluZ0xpdGVyYWwKKyAgICAgICAgU3RyaW5nIHMyPSJzc3Nzc3NzIjsKKyAgICB9CisgICAgQFN1cHByZXNzV2FybmluZ3MoeyJIYXJkQ29kZWRTdHJpbmdMaXRlcmFsIn0pCisgICAgdm9pZCBnKCkgeworICAgICAgICBTdHJpbmcgcyA9IG51bGw7CisgICAgfQorICAgIEBTdXBwcmVzc1dhcm5pbmdzKHsiSGFyZENvZGVkU3RyaW5nTGl0ZXJhbCJ9KQorICAgIHZvaWQgZzIoKSB7CisgICAgICAgIFN0cmluZyBzID0gInNzc3Nzc3MiOworICAgIH0KKworICAgIHZvaWQgaCgpIHsKKyAgICAgICAgQFN1cHByZXNzV2FybmluZ3MoeyJIYXJkQ29kZWRTdHJpbmdMaXRlcmFsIn0pCisgICAgICAgIFN0cmluZyBzID0gbnVsbDsKKyAgICB9CisgICAgdm9pZCBoMigpIHsKKyAgICAgICAgQFN1cHByZXNzV2FybmluZ3MoeyJIYXJkQ29kZWRTdHJpbmdMaXRlcmFsIn0pCisgICAgICAgIFN0cmluZyBzID0gInNzc3Nzc3MiOworICAgIH0KKworICAgIHZvaWQgaSgpIHsKKyAgICAgICAgQFN1cHByZXNzV2FybmluZ3MoeyJIYXJkQ29kZWRTdHJpbmdMaXRlcmFsIn0pCisgICAgICAgIGNsYXNzIHNzIHsKKyAgICAgICAgICBTdHJpbmcgcyA9IG51bGw7CisgICAgICAgIH0KKyAgICB9CisgICAgdm9pZCBpMigpIHsKKyAgICAgICAgQFN1cHByZXNzV2FybmluZ3MoeyJIYXJkQ29kZWRTdHJpbmdMaXRlcmFsIn0pCisgICAgICAgIGNsYXNzIHNzIHsKKyAgICAgICAgICBTdHJpbmcgcyA9ICJzc3Nzc3NzIjsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKiBAbm9pbnNwZWN0aW9uIEhhcmRDb2RlZFN0cmluZ0xpdGVyYWwgKi8KKyAgICB2b2lkIGooKSB7CisgICAgICAgIFN0cmluZyBzID0gbnVsbDsKKyAgICB9CisgICAgLyoqIEBub2luc3BlY3Rpb24gSGFyZENvZGVkU3RyaW5nTGl0ZXJhbCAqLworICAgIHZvaWQgajIoKSB7CisgICAgICAgIFN0cmluZyBzID0gInNzc3Nzc3MiOworICAgIH0KKworICAgIHZvaWQgaygpIHsKKyAgICAgICAgY2xhc3Mgc3MgeworICAgICAgICAgIC8qKiBAbm9pbnNwZWN0aW9uIEhhcmRDb2RlZFN0cmluZ0xpdGVyYWwgKi8KKyAgICAgICAgICBTdHJpbmcgcyA9IG51bGw7CisgICAgICAgIH0KKyAgICB9CisgICAgdm9pZCBrMigpIHsKKyAgICAgICAgY2xhc3Mgc3MgeworICAgICAgICAgIC8qKiBAbm9pbnNwZWN0aW9uIEhhcmRDb2RlZFN0cmluZ0xpdGVyYWwgKi8KKyAgICAgICAgICBTdHJpbmcgcyA9ICJzc3Nzc3NzIjsKKyAgICAgICAgfQorICAgIH0KKworICAgIEBTdXBwcmVzc1dhcm5pbmdzKHsiRW1wdHlNZXRob2QifSkKKyAgICB2b2lkIGZvbygpIHt9CisKKyAgICBAU3VwcHJlc3NXYXJuaW5ncyh7IkVtcHR5TWV0aG9kIn0pCisgICAgdm9pZCBmb28xKCkge1N0cmluZyBmO30KKworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcmVkdW5kYW50U3VwcHJlc3Mvc3VwcHJlc3NBbGwvZXhwZWN0ZWQueG1sIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcmVkdW5kYW50U3VwcHJlc3Mvc3VwcHJlc3NBbGwvZXhwZWN0ZWQueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVlOTMzNDkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9yZWR1bmRhbnRTdXBwcmVzcy9zdXBwcmVzc0FsbC9leHBlY3RlZC54bWwKQEAgLTAsMCArMSwzIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPHByb2JsZW1zPgorPC9wcm9ibGVtcz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9yZWR1bmRhbnRTdXBwcmVzcy9zdXBwcmVzc0FsbC9zcmMveC9YLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9yZWR1bmRhbnRTdXBwcmVzcy9zdXBwcmVzc0FsbC9zcmMveC9YLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzY0NWU2MAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3JlZHVuZGFudFN1cHByZXNzL3N1cHByZXNzQWxsL3NyYy94L1guamF2YQpAQCAtMCwwICsxLDggQEAKK3BhY2thZ2UgeDsKKworcHVibGljIGNsYXNzIFMgeworICBAU3VwcHJlc3NXYXJuaW5ncygiQUxMIikKKyAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgeworICAgIFN5c3RlbS5vdXQucHJpbnRsbihhcmdzWzBdKTsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcmVkdW5kYW50VGhyb3cvSW1wbGljaXRTdXBlci9leHBlY3RlZC54bWwgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9yZWR1bmRhbnRUaHJvdy9JbXBsaWNpdFN1cGVyL2V4cGVjdGVkLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYzU1NzIzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcmVkdW5kYW50VGhyb3cvSW1wbGljaXRTdXBlci9leHBlY3RlZC54bWwKQEAgLTAsMCArMSwxOSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzwhLS0KKyAgfiBDb3B5cmlnaHQgMjAwMC0yMDEwIEpldEJyYWlucyBzLnIuby4KKyAgfgorICB+IExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICB+IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAgfiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAgfgorICB+IGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICB+CisgIH4gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICB+IGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgIH4gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgIH4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICB+IGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICAtLT4KKzxwcm9ibGVtcz4KKworPC9wcm9ibGVtcz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9yZWR1bmRhbnRUaHJvdy9JbXBsaWNpdFN1cGVyL3NyYy9BLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9yZWR1bmRhbnRUaHJvdy9JbXBsaWNpdFN1cGVyL3NyYy9BLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWI2YzhjOAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3JlZHVuZGFudFRocm93L0ltcGxpY2l0U3VwZXIvc3JjL0EuamF2YQpAQCAtMCwwICsxLDIwIEBACisvKgorICogQ29weXJpZ2h0IDIwMDAtMjAxMiBKZXRCcmFpbnMgcy5yLm8uCisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcHVibGljIGNsYXNzIEEgeworICAgIHB1YmxpYyBBKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oIk9vcHMiKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcmVkdW5kYW50VGhyb3cvSW1wbGljaXRTdXBlci9zcmMvQi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcmVkdW5kYW50VGhyb3cvSW1wbGljaXRTdXBlci9zcmMvQi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY1YWY3NTQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9yZWR1bmRhbnRUaHJvdy9JbXBsaWNpdFN1cGVyL3NyYy9CLmphdmEKQEAgLTAsMCArMSwyMCBAQAorLyoKKyAqIENvcHlyaWdodCAyMDAwLTIwMTIgSmV0QnJhaW5zIHMuci5vLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3B1YmxpYyBjbGFzcyBCIGV4dGVuZHMgQSB7CisgICAgcHVibGljIEIoKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgICAgLy8gSW1wbGljaXQgY2FsbCB0byBzdXBlcigpCisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3JlZHVuZGFudFRocm93L0luaGVyaXRlZC9leHBlY3RlZC54bWwgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9yZWR1bmRhbnRUaHJvdy9Jbmhlcml0ZWQvZXhwZWN0ZWQueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ3MDRkNTgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9yZWR1bmRhbnRUaHJvdy9Jbmhlcml0ZWQvZXhwZWN0ZWQueG1sCkBAIC0wLDAgKzEsNCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxwcm9ibGVtcz4KKzwvcHJvYmxlbXM+CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3JlZHVuZGFudFRocm93L0luaGVyaXRlZC9zcmMvVGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcmVkdW5kYW50VGhyb3cvSW5oZXJpdGVkL3NyYy9UZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWVlMDM0MwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3JlZHVuZGFudFRocm93L0luaGVyaXRlZC9zcmMvVGVzdC5qYXZhCkBAIC0wLDAgKzEsMjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwMC0yMDEyIEpldEJyYWlucyBzLnIuby4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwdWJsaWMgY2xhc3MgVGVzdCB7CisgIHZvaWQgZm9vKCkgdGhyb3dzIGphdmEubGFuZy5FeGNlcHRpb24geworICAgIHRocm93IG5ldyBqYXZhLmlvLklPRXhjZXB0aW9uKCk7CisgIH0KKworICB2b2lkIGJhcigpIHRocm93cyBqYXZhLmlvLklPRXhjZXB0aW9uIHsKKyAgICB0aHJvdyBuZXcgamF2YS5sYW5nLkV4Y2VwdGlvbigpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcmVkdW5kYW50VGhyb3cvUmVtb3RlL2V4cGVjdGVkLnhtbCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3JlZHVuZGFudFRocm93L1JlbW90ZS9leHBlY3RlZC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2VmZGRlYQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3JlZHVuZGFudFRocm93L1JlbW90ZS9leHBlY3RlZC54bWwKQEAgLTAsMCArMSw5IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPHByb2JsZW1zPgorICA8cHJvYmxlbT4KKyAgICA8ZmlsZT5FLmphdmE8L2ZpbGU+CisgICAgPGxpbmU+MTU8L2xpbmU+CisgICAgPGRlc2NyaXB0aW9uPlRoZSBkZWNsYXJlZCBleGNlcHRpb24gJmx0O2NvZGUmZ3Q7UmVtb3RlRXhjZXB0aW9uJmx0Oy9jb2RlJmd0OyBpcyBuZXZlciB0aHJvd24gaW4gbWV0aG9kIGltcGxlbWVudGF0aW9ucy48L2Rlc2NyaXB0aW9uPgorICA8L3Byb2JsZW0+Cis8L3Byb2JsZW1zPgorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9yZWR1bmRhbnRUaHJvdy9SZW1vdGUvc3JjL0UuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3JlZHVuZGFudFRocm93L1JlbW90ZS9zcmMvRS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY1MjdlYjIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9yZWR1bmRhbnRUaHJvdy9SZW1vdGUvc3JjL0UuamF2YQpAQCAtMCwwICsxLDI0IEBACitpbXBvcnQgamF2YS5ybWkuKjsKKworaW50ZXJmYWNlIEEgZXh0ZW5kcyBSZW1vdGUgeworICB2b2lkIGEoKSB0aHJvd3MgUmVtb3RlRXhjZXB0aW9uOworfQorCisKK2NsYXNzIEQgaW1wbGVtZW50cyBBIHsKKyAgcHVibGljIHZvaWQgYSgpIHsKKyAgfQorfQorCisKK2ludGVyZmFjZSBOb3RSZW1vdGFibGUgeworICB2b2lkIGEoKSB0aHJvd3MgUmVtb3RlRXhjZXB0aW9uOworfQorCisKK2NsYXNzIEROb3RSZW1vdGFibGUgaW1wbGVtZW50cyBOb3RSZW1vdGFibGUgeworICBwdWJsaWMgdm9pZCBhKCkgeworICB9Cit9CisKKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcmVkdW5kYW50VGhyb3cvU0NSMTQ1NDMvZXhwZWN0ZWQueG1sIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcmVkdW5kYW50VGhyb3cvU0NSMTQ1NDMvZXhwZWN0ZWQueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ3MDRkNTgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9yZWR1bmRhbnRUaHJvdy9TQ1IxNDU0My9leHBlY3RlZC54bWwKQEAgLTAsMCArMSw0IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPHByb2JsZW1zPgorPC9wcm9ibGVtcz4KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcmVkdW5kYW50VGhyb3cvU0NSMTQ1NDMvc3JjL0UuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3JlZHVuZGFudFRocm93L1NDUjE0NTQzL3NyYy9FLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzk5MDhlMAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3JlZHVuZGFudFRocm93L1NDUjE0NTQzL3NyYy9FLmphdmEKQEAgLTAsMCArMSwxNCBAQAorY2xhc3MgRCBleHRlbmRzIEUgeworIAorICBwcm90ZWN0ZWQgdm9pZCBkb1NvbWV0aGluZygpIHRocm93cyBFeGNlcHRpb24geworICAgIHRocm93IG5ldyBFeGNlcHRpb24oKTsKKyAgfQorIAorfQorIAorIAorcHVibGljIGFic3RyYWN0IGNsYXNzIEUgeworIAorICBwcm90ZWN0ZWQgYWJzdHJhY3Qgdm9pZCBkb1NvbWV0aGluZygpIHRocm93cyBFeGNlcHRpb247CisgCit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9yZWR1bmRhbnRUaHJvdy9TQ1I2ODU4L2V4cGVjdGVkLnhtbCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3JlZHVuZGFudFRocm93L1NDUjY4NTgvZXhwZWN0ZWQueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY3ZTUzMzYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9yZWR1bmRhbnRUaHJvdy9TQ1I2ODU4L2V4cGVjdGVkLnhtbApAQCAtMCwwICsxLDkgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8cHJvYmxlbXM+CisgIDxwcm9ibGVtPgorICAgIDxmaWxlPkZvby5qYXZhPC9maWxlPgorICAgIDxsaW5lPjQ8L2xpbmU+CisgICAgPGRlc2NyaXB0aW9uPklPRXhjZXB0aW9uPC9kZXNjcmlwdGlvbj4KKyAgPC9wcm9ibGVtPgorPC9wcm9ibGVtcz4KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcmVkdW5kYW50VGhyb3cvU0NSNjg1OC9zcmMvRm9vLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9yZWR1bmRhbnRUaHJvdy9TQ1I2ODU4L3NyYy9Gb28uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44Nzk5OTg3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcmVkdW5kYW50VGhyb3cvU0NSNjg1OC9zcmMvRm9vLmphdmEKQEAgLTAsMCArMSw2IEBACitpbXBvcnQgamF2YS5pby4qOworCitwdWJsaWMgY2xhc3MgRm9vIHsKKyAgIHB1YmxpYyBGb28oKSB0aHJvd3MgSU9FeGNlcHRpb24geworICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3JlZHVuZGFudFRocm93L1NDUjY4NThCeVJhbmdlL2V4cGVjdGVkLnhtbCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3JlZHVuZGFudFRocm93L1NDUjY4NThCeVJhbmdlL2V4cGVjdGVkLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZTNhMThjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcmVkdW5kYW50VGhyb3cvU0NSNjg1OEJ5UmFuZ2UvZXhwZWN0ZWQueG1sCkBAIC0wLDAgKzEsMTAgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8cHJvYmxlbXM+CisgIDxwcm9ibGVtPgorICAgIDxmaWxlPkZvby5qYXZhPC9maWxlPgorICAgIDxsaW5lPjQ8L2xpbmU+CisgICAgPGRlc2NyaXB0aW9uPklPRXhjZXB0aW9uPC9kZXNjcmlwdGlvbj4KKyAgICA8ZW50cnlfcG9pbnQgVFlQRT0ibWV0aG9kIiBGUU5BTUU9IkZvbyBGb28oKSIgLz4KKyAgPC9wcm9ibGVtPgorPC9wcm9ibGVtcz4KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcmVkdW5kYW50VGhyb3cvU0NSNjg1OEJ5UmFuZ2Uvc3JjL0Zvby5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcmVkdW5kYW50VGhyb3cvU0NSNjg1OEJ5UmFuZ2Uvc3JjL0Zvby5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg3OTk5ODcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9yZWR1bmRhbnRUaHJvdy9TQ1I2ODU4QnlSYW5nZS9zcmMvRm9vLmphdmEKQEAgLTAsMCArMSw2IEBACitpbXBvcnQgamF2YS5pby4qOworCitwdWJsaWMgY2xhc3MgRm9vIHsKKyAgIHB1YmxpYyBGb28oKSB0aHJvd3MgSU9FeGNlcHRpb24geworICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3JlZHVuZGFudFRocm93L1NDUjgzMjIvZXhwZWN0ZWQueG1sIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcmVkdW5kYW50VGhyb3cvU0NSODMyMi9leHBlY3RlZC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWZjYjYxNwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3JlZHVuZGFudFRocm93L1NDUjgzMjIvZXhwZWN0ZWQueG1sCkBAIC0wLDAgKzEsOSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxwcm9ibGVtcz4KKyAgPHByb2JsZW0+CisgICAgPGZpbGU+QW5JbnRlcmZhY2UuamF2YTwvZmlsZT4KKyAgICA8bGluZT42PC9saW5lPgorICAgIDxkZXNjcmlwdGlvbj5JT0V4Y2VwdGlvbjwvZGVzY3JpcHRpb24+CisgIDwvcHJvYmxlbT4KKzwvcHJvYmxlbXM+CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3JlZHVuZGFudFRocm93L1NDUjgzMjIvc3JjL2FQYWNrYWdlL0FDbGFzcy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcmVkdW5kYW50VGhyb3cvU0NSODMyMi9zcmMvYVBhY2thZ2UvQUNsYXNzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWFiMzI0MgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3JlZHVuZGFudFRocm93L1NDUjgzMjIvc3JjL2FQYWNrYWdlL0FDbGFzcy5qYXZhCkBAIC0wLDAgKzEsMTMgQEAKK3BhY2thZ2UgYVBhY2thZ2U7CisKK2ltcG9ydCBqYXZhLmlvLklPRXhjZXB0aW9uOworCitwdWJsaWMgY2xhc3MgQUNsYXNzIGltcGxlbWVudHMgQW5JbnRlcmZhY2V7CisJaW50IGFGaWVsZF8xOworCWludCBhRmllbGRfMjsKKworCXB1YmxpYyB2b2lkIG1ldGhvZEEoaW50IG15SW50KSB0aHJvd3MgSU9FeGNlcHRpb24geworCQkvL3NvbWUgY29kZSBoZXJlCisJICBhRmllbGRfMSA9IDE7CisJfQorICB9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9yZWR1bmRhbnRUaHJvdy9TQ1I4MzIyL3NyYy9hUGFja2FnZS9BQ2xhc3NUd28uamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3JlZHVuZGFudFRocm93L1NDUjgzMjIvc3JjL2FQYWNrYWdlL0FDbGFzc1R3by5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNkMDViZGQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9yZWR1bmRhbnRUaHJvdy9TQ1I4MzIyL3NyYy9hUGFja2FnZS9BQ2xhc3NUd28uamF2YQpAQCAtMCwwICsxLDEwIEBACitwYWNrYWdlIGFQYWNrYWdlOworCitpbXBvcnQgamF2YS5pby5JT0V4Y2VwdGlvbjsKKworcHVibGljIGNsYXNzIEFDbGFzc1R3byBpbXBsZW1lbnRzIEFuSW50ZXJmYWNlIHsKKworCXB1YmxpYyB2b2lkIG1ldGhvZEEoaW50IG15SW50KSB0aHJvd3MgSU9FeGNlcHRpb257CisJICAvL3NvbWUgY29kZSBoZXJlCisJfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcmVkdW5kYW50VGhyb3cvU0NSODMyMi9zcmMvYVBhY2thZ2UvQW5JbnRlcmZhY2UuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3JlZHVuZGFudFRocm93L1NDUjgzMjIvc3JjL2FQYWNrYWdlL0FuSW50ZXJmYWNlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWZiODgyNQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3JlZHVuZGFudFRocm93L1NDUjgzMjIvc3JjL2FQYWNrYWdlL0FuSW50ZXJmYWNlLmphdmEKQEAgLTAsMCArMSw3IEBACitwYWNrYWdlIGFQYWNrYWdlOworCitpbXBvcnQgamF2YS5pby5JT0V4Y2VwdGlvbjsKKworcHVibGljIGludGVyZmFjZSBBbkludGVyZmFjZSB7CisJdm9pZCBtZXRob2RBKGludCBteUludCkgdGhyb3dzIElPRXhjZXB0aW9uOworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcmVkdW5kYW50VGhyb3cvU2VsZkNhbGwvZXhwZWN0ZWQueG1sIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcmVkdW5kYW50VGhyb3cvU2VsZkNhbGwvZXhwZWN0ZWQueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY3ZTUzMzYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9yZWR1bmRhbnRUaHJvdy9TZWxmQ2FsbC9leHBlY3RlZC54bWwKQEAgLTAsMCArMSw5IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPHByb2JsZW1zPgorICA8cHJvYmxlbT4KKyAgICA8ZmlsZT5Gb28uamF2YTwvZmlsZT4KKyAgICA8bGluZT40PC9saW5lPgorICAgIDxkZXNjcmlwdGlvbj5JT0V4Y2VwdGlvbjwvZGVzY3JpcHRpb24+CisgIDwvcHJvYmxlbT4KKzwvcHJvYmxlbXM+CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3JlZHVuZGFudFRocm93L1NlbGZDYWxsL3NyYy9Gb28uamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3JlZHVuZGFudFRocm93L1NlbGZDYWxsL3NyYy9Gb28uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNjAyZDVkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcmVkdW5kYW50VGhyb3cvU2VsZkNhbGwvc3JjL0Zvby5qYXZhCkBAIC0wLDAgKzEsOSBAQAoraW1wb3J0IGphdmEuaW8uKjsKKworcHVibGljIGNsYXNzIEZvbyB7CisgIHB1YmxpYyB2b2lkIGZvbygpIHRocm93cyBJT0V4Y2VwdGlvbiB7CisgICAgaWYgKDQgPiAzKSB7CisgICAgICBmb28oKTsKKyAgICB9CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3JlZHVuZGFudFRocm93L2VudHJ5UG9pbnQvZXhwZWN0ZWQueG1sIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcmVkdW5kYW50VGhyb3cvZW50cnlQb2ludC9leHBlY3RlZC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZThhYTY3YwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3JlZHVuZGFudFRocm93L2VudHJ5UG9pbnQvZXhwZWN0ZWQueG1sCkBAIC0wLDAgKzEsMyBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxwcm9ibGVtcz48L3Byb2JsZW1zPgorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9yZWR1bmRhbnRUaHJvdy9lbnRyeVBvaW50L3NyYy9UZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9yZWR1bmRhbnRUaHJvdy9lbnRyeVBvaW50L3NyYy9UZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWNiMmI4ZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3JlZHVuZGFudFRocm93L2VudHJ5UG9pbnQvc3JjL1Rlc3QuamF2YQpAQCAtMCwwICsxLDMgQEAKK3B1YmxpYyBjbGFzcyBUZXN0IGltcGxlbWVudHMgamF2YS5pby5TZXJpYWxpemFibGUgeworICBwdWJsaWMgdm9pZCByZWFkT2JqZWN0KGphdmEuaW8uT2JqZWN0SW5wdXRTdHJlYW0gaW4pIHRocm93cyBFeGNlcHRpb24ge30KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9yZWR1bmRhbnRUeXBlQXJncy9SZXR1cm5QcmltaXRpdmVUeXBlcy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcmVkdW5kYW50VHlwZUFyZ3MvUmV0dXJuUHJpbWl0aXZlVHlwZXMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43N2MzYjUyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vcmVkdW5kYW50VHlwZUFyZ3MvUmV0dXJuUHJpbWl0aXZlVHlwZXMuamF2YQpAQCAtMCwwICsxLDEyIEBACitpbXBvcnQgamF2YS51dGlsLk1hcDsKK2NsYXNzIFRlc3QgeworICBNYXAgc29tZU1hcDsKKworICBwdWJsaWMgaW50IGdldEdldEJhcigpIHsKKyAgICByZXR1cm4gdGhpcy48SW50ZWdlcj5nZXRGb28oIm51bWJlck9mQ29uZmlndXJhdGlvbnMiKTsKKyAgfQorCisgIHByb3RlY3RlZCA8VD4gVCBnZXRGb28oU3RyaW5nIGtleSkgeworICAgIHJldHVybiAoVClzb21lTWFwLmdldChrZXkpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vc2FtZVBhcmFtZXRlclZhbHVlL2VudHJ5UG9pbnQvZXhwZWN0ZWQueG1sIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vc2FtZVBhcmFtZXRlclZhbHVlL2VudHJ5UG9pbnQvZXhwZWN0ZWQueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU4YWE2N2MKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9zYW1lUGFyYW1ldGVyVmFsdWUvZW50cnlQb2ludC9leHBlY3RlZC54bWwKQEAgLTAsMCArMSwzIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPHByb2JsZW1zPjwvcHJvYmxlbXM+CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3NhbWVQYXJhbWV0ZXJWYWx1ZS9lbnRyeVBvaW50L3NyYy9UZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9zYW1lUGFyYW1ldGVyVmFsdWUvZW50cnlQb2ludC9zcmMvVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBlYWE1NjAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9zYW1lUGFyYW1ldGVyVmFsdWUvZW50cnlQb2ludC9zcmMvVGVzdC5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKK3B1YmxpYyBjbGFzcyBUZXN0IHsKKworICBwdWJsaWMgVGVzdCgpIHsKKyAgICBUZXN0Lm1haW4obnVsbCk7CisgIH0KKworICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKXt9CisKKworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3NhbWVQYXJhbWV0ZXJWYWx1ZS9zaW1wbGVWYXJhcmcvZXhwZWN0ZWQueG1sIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vc2FtZVBhcmFtZXRlclZhbHVlL3NpbXBsZVZhcmFyZy9leHBlY3RlZC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmZhMmY3YwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3NhbWVQYXJhbWV0ZXJWYWx1ZS9zaW1wbGVWYXJhcmcvZXhwZWN0ZWQueG1sCkBAIC0wLDAgKzEsMTEgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8cHJvYmxlbXM+CisgIDxwcm9ibGVtPgorICAgIDxmaWxlPlRlc3QuamF2YTwvZmlsZT4KKyAgICA8bGluZT4zPC9saW5lPgorICAgIDxwcm9ibGVtX2NsYXNzPkFjdHVhbCBtZXRob2QgcGFyYW1ldGVyIGlzIHRoZSBzYW1lIGNvbnN0YW50PC9wcm9ibGVtX2NsYXNzPgorICAgIDxkZXNjcmlwdGlvbj5BY3R1YWwgdmFsdWUgb2YgcGFyYW1ldGVyPC9kZXNjcmlwdGlvbj4KKyAgPC9wcm9ibGVtPgorPC9wcm9ibGVtcz4KKworCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9zYW1lUGFyYW1ldGVyVmFsdWUvc2ltcGxlVmFyYXJnL3NyYy9UZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9zYW1lUGFyYW1ldGVyVmFsdWUvc2ltcGxlVmFyYXJnL3NyYy9UZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzQwNThkOAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3NhbWVQYXJhbWV0ZXJWYWx1ZS9zaW1wbGVWYXJhcmcvc3JjL1Rlc3QuamF2YQpAQCAtMCwwICsxLDEzIEBACitwdWJsaWMgY2xhc3MgVGVzdCB7CisKKyAgIHByaXZhdGUgdm9pZCBmb28oU3RyaW5nLi4uIGFyZ3MpIHt9CisKKyAgIHB1YmxpYyB2b2lkIGJhcigpIHsKKyAgICAgZm9vKCJmb28iKTsKKyAgICAgZm9vKCJmb28iKTsKKyAgIH0KKworICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncyl7CisgICAgIG5ldyBUZXN0KCkuYmFyKCk7CisgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vc2FtZVBhcmFtZXRlclZhbHVlL3ZhcmFyZ3MvZXhwZWN0ZWQueG1sIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vc2FtZVBhcmFtZXRlclZhbHVlL3ZhcmFyZ3MvZXhwZWN0ZWQueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU4YWE2N2MKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9zYW1lUGFyYW1ldGVyVmFsdWUvdmFyYXJncy9leHBlY3RlZC54bWwKQEAgLTAsMCArMSwzIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPHByb2JsZW1zPjwvcHJvYmxlbXM+CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3NhbWVQYXJhbWV0ZXJWYWx1ZS92YXJhcmdzL3NyYy9UZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9zYW1lUGFyYW1ldGVyVmFsdWUvdmFyYXJncy9zcmMvVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM5YzdjZDQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9zYW1lUGFyYW1ldGVyVmFsdWUvdmFyYXJncy9zcmMvVGVzdC5qYXZhCkBAIC0wLDAgKzEsMTMgQEAKK3B1YmxpYyBjbGFzcyBUZXN0IHsKKworICAgcHJpdmF0ZSB2b2lkIGZvbyhTdHJpbmcuLi4gYXJncykge30KKworICAgcHVibGljIHZvaWQgYmFyKCkgeworICAgICBmb28oImZvbyIsICJiYXIiKTsKKyAgICAgZm9vKCJibGEiKTsKKyAgIH0KKworICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncyl7CisgICAgIG5ldyBUZXN0KCkuYmFyKCk7CisgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vc2FtZVBhcmFtZXRlclZhbHVlL3dpdGhvdXREZWFkQ29kZS9leHBlY3RlZC54bWwgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9zYW1lUGFyYW1ldGVyVmFsdWUvd2l0aG91dERlYWRDb2RlL2V4cGVjdGVkLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42M2IyZTAwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vc2FtZVBhcmFtZXRlclZhbHVlL3dpdGhvdXREZWFkQ29kZS9leHBlY3RlZC54bWwKQEAgLTAsMCArMSwxMCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxwcm9ibGVtcz4KKyAgPHByb2JsZW0+CisgICAgPGZpbGU+VGVzdC5qYXZhPC9maWxlPgorICAgIDxsaW5lPjc8L2xpbmU+CisgICAgPHByb2JsZW1fY2xhc3M+QWN0dWFsIG1ldGhvZCBwYXJhbWV0ZXIgaXMgdGhlIHNhbWUgY29uc3RhbnQ8L3Byb2JsZW1fY2xhc3M+CisgICAgPGRlc2NyaXB0aW9uPkFjdHVhbCB2YWx1ZSBvZiBwYXJhbWV0ZXI8L2Rlc2NyaXB0aW9uPgorICA8L3Byb2JsZW0+Cis8L3Byb2JsZW1zPgorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9zYW1lUGFyYW1ldGVyVmFsdWUvd2l0aG91dERlYWRDb2RlL3NyYy9UZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9zYW1lUGFyYW1ldGVyVmFsdWUvd2l0aG91dERlYWRDb2RlL3NyYy9UZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGVhYTU2MAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3NhbWVQYXJhbWV0ZXJWYWx1ZS93aXRob3V0RGVhZENvZGUvc3JjL1Rlc3QuamF2YQpAQCAtMCwwICsxLDEwIEBACitwdWJsaWMgY2xhc3MgVGVzdCB7CisKKyAgcHVibGljIFRlc3QoKSB7CisgICAgVGVzdC5tYWluKG51bGwpOworICB9CisKKyAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncyl7fQorCisKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9zaWxseUFzc2lnbm1lbnQvbXVsdGlwbGUvZXhwZWN0ZWQueG1sIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vc2lsbHlBc3NpZ25tZW50L211bHRpcGxlL2V4cGVjdGVkLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZWE5ZjI1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vc2lsbHlBc3NpZ25tZW50L211bHRpcGxlL2V4cGVjdGVkLnhtbApAQCAtMCwwICsxLDQ2IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPHByb2JsZW1zPgorCisgIDxwcm9ibGVtPgorICAgIDxmaWxlPlRlc3QuamF2YTwvZmlsZT4KKyAgICA8bGluZT4zPC9saW5lPgorICAgIDxkZXNjcmlwdGlvbj5WYXJpYWJsZSAnYXJncycgaXMgYXNzaWduZWQgdG8gaXRzZWxmPC9kZXNjcmlwdGlvbj4KKyAgPC9wcm9ibGVtPgorCisgIDxwcm9ibGVtPgorICAgIDxmaWxlPlRlc3QuamF2YTwvZmlsZT4KKyAgICA8bGluZT40PC9saW5lPgorICAgIDxkZXNjcmlwdGlvbj5WYXJpYWJsZSAnaicgaXMgaW5pdGlhbGl6ZWQgd2l0aCBzZWxmIGFzc2lnbm1lbnQ8L2Rlc2NyaXB0aW9uPgorICA8L3Byb2JsZW0+CisKKyAgPHByb2JsZW0+CisgICAgPGZpbGU+VGVzdC5qYXZhPC9maWxlPgorICAgIDxsaW5lPjU8L2xpbmU+CisgICAgPGRlc2NyaXB0aW9uPlZhcmlhYmxlICdhcmdzJyBpcyBhc3NpZ25lZCB0byBpdHNlbGY8L2Rlc2NyaXB0aW9uPgorICA8L3Byb2JsZW0+CisKKyAgPHByb2JsZW0+CisgICAgPGZpbGU+VGVzdC5qYXZhPC9maWxlPgorICAgIDxsaW5lPjg8L2xpbmU+CisgICAgPGRlc2NyaXB0aW9uPlZhcmlhYmxlICd6JyBpcyBpbml0aWFsaXplZCB3aXRoIHNlbGYgYXNzaWdubWVudDwvZGVzY3JpcHRpb24+CisgIDwvcHJvYmxlbT4KKworICA8cHJvYmxlbT4KKyAgICA8ZmlsZT5UZXN0LmphdmE8L2ZpbGU+CisgICAgPGxpbmU+MTM8L2xpbmU+CisgICAgPGRlc2NyaXB0aW9uPlZhcmlhYmxlICd5JyBpcyBhc3NpZ25lZCB0byBpdHNlbGY8L2Rlc2NyaXB0aW9uPgorICA8L3Byb2JsZW0+CisKKyAgPHByb2JsZW0+CisgICAgPGZpbGU+VGVzdC5qYXZhPC9maWxlPgorICAgIDxsaW5lPjE3PC9saW5lPgorICAgIDxkZXNjcmlwdGlvbj5WYXJpYWJsZSAnaCcgaXMgYXNzaWduZWQgdG8gaXRzZWxmPC9kZXNjcmlwdGlvbj4KKyAgPC9wcm9ibGVtPgorCisgIDxwcm9ibGVtPgorICAgIDxmaWxlPlRlc3QuamF2YTwvZmlsZT4KKyAgICA8bGluZT4xODwvbGluZT4KKyAgICA8ZGVzY3JpcHRpb24+VmFyaWFibGUgJ2gnIGlzIGFzc2lnbmVkIHRvIGl0c2VsZjwvZGVzY3JpcHRpb24+CisgIDwvcHJvYmxlbT4KKworPC9wcm9ibGVtcz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9zaWxseUFzc2lnbm1lbnQvbXVsdGlwbGUvc3JjL1Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3NpbGx5QXNzaWdubWVudC9tdWx0aXBsZS9zcmMvVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBiM2ZlYjUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9zaWxseUFzc2lnbm1lbnQvbXVsdGlwbGUvc3JjL1Rlc3QuamF2YQpAQCAtMCwwICsxLDI0IEBACitwdWJsaWMgY2xhc3MgVGVzdCBleHRlbmRzIFN1cGVyIHsKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CisgICAgICAgIGFyZ3MgPSBhcmdzOworICAgICAgICBpbnQgaiA9ICgoaikgPSAxKTsKKyAgICAgICAgYXJncyA9IChhcmdzKSA9IG51bGw7CisgICAgfQorCisgICAgcHJpdmF0ZSBmaW5hbCBpbnQgeiA9IHRoaXMuejsKKyAgICBwdWJsaWMgc3RhdGljIGludCB5ID0gQUJDVi55OworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IHggPSBBQkNWLng7CisKKyAgICBzdGF0aWMgdm9pZCBmb28oKSB7CisgICAgICAgIHkgPSBUZXN0Lnk7CisgICAgfQorCisgICAgdm9pZCBjYWxsKCkgeworICAgICAgaCA9IHN1cGVyLmg7CisgICAgICBoID0gKGgpID0gMTsKKyAgICB9Cit9CitjbGFzcyBTdXBlciB7CisgICAgaW50IGg7Cit9CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3NpbGx5QXNzaWdubWVudC9zdXBwcmVzc2VkL2V4cGVjdGVkLnhtbCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3NpbGx5QXNzaWdubWVudC9zdXBwcmVzc2VkL2V4cGVjdGVkLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NzA0ZDkxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vc2lsbHlBc3NpZ25tZW50L3N1cHByZXNzZWQvZXhwZWN0ZWQueG1sCkBAIC0wLDAgKzEsMiBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxwcm9ibGVtcy8+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vc2lsbHlBc3NpZ25tZW50L3N1cHByZXNzZWQvc3JjL1Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3NpbGx5QXNzaWdubWVudC9zdXBwcmVzc2VkL3NyYy9UZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDFmNGEwYgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3NpbGx5QXNzaWdubWVudC9zdXBwcmVzc2VkL3NyYy9UZXN0LmphdmEKQEAgLTAsMCArMSwxMSBAQAorcHVibGljIGNsYXNzIFRlc3QgeworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKKyAgICAgICAgLy9ub2luc3BlY3Rpb24gU2lsbHlBc3NpZ25tZW50CisgICAgICAgIGFyZ3MgPSBhcmdzOworICAgICAgICBpbnQgaSA9IDA7CisgICAgICAgIGlmIChpID09IDApIHsKKworICAgICAgICB9IGVsc2UgLy9ub2luc3BlY3Rpb24gU2lsbHlBc3NpZ25tZW50CisgICAgICAgICAgaSA9PSBpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3N1c3BpY2lvdXNDYWxscy9JZ25vcmVDb252ZXJ0aWJsZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vc3VzcGljaW91c0NhbGxzL0lnbm9yZUNvbnZlcnRpYmxlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTQzM2IyYgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3N1c3BpY2lvdXNDYWxscy9JZ25vcmVDb252ZXJ0aWJsZS5qYXZhCkBAIC0wLDAgKzEsMTYgQEAKK2ltcG9ydCBqYXZhLnV0aWwuTWFwOworaW1wb3J0IGphdmEudXRpbC5MaXN0OworaW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7CisKK2NsYXNzIENsYXp6IHsKKyAgdm9pZCBmKE1hcDxJbnRlZ2VyLFN0cmluZz4gbWFwKSB7CisgICAgTnVtYmVyIG4gPSBuZXcgSW50ZWdlcigzKTsKKyAgICBpZiAobWFwLmNvbnRhaW5zS2V5KG4pKSB7CisgICAgICByZXR1cm47CisgICAgfQorICB9CisKKyAgdm9pZCBmb28oTGlzdDw/IGV4dGVuZHMgTnVtYmVyPiBjKSB7CisgICAgYy5jb250YWlucyg8d2FybmluZyBkZXNjcj0iJ0xpc3Q8PyBleHRlbmRzIE51bWJlcj4nIG1heSBub3QgY29udGFpbiBvYmplY3RzIG9mIHR5cGUgJ1N0cmluZyciPiIiPC93YXJuaW5nPik7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9zdXNwaWNpb3VzQ2FsbHMvVXNlRGZhLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9zdXNwaWNpb3VzQ2FsbHMvVXNlRGZhLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2JhOGMzZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3N1c3BpY2lvdXNDYWxscy9Vc2VEZmEuamF2YQpAQCAtMCwwICsxLDExIEBACitpbXBvcnQgamF2YS5sYW5nLkludGVnZXI7CitpbXBvcnQgamF2YS51dGlsLk1hcDsKKworY2xhc3MgQ2xhenogeworICB2b2lkIGYoTWFwPEludGVnZXIsIFN0cmluZz4gbWFwLCBPYmplY3QgbykgeworICAgIGlmIChvIGluc3RhbmNlb2YgSW50ZWdlciAmJiBtYXAuY29udGFpbnNLZXkobykpIHsKKyAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigpOworICAgIH0KKyAgfQorCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vc3VzcGljaW91c0NhbGxzL1dpbGRjYXJkLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9zdXNwaWNpb3VzQ2FsbHMvV2lsZGNhcmQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNzk4MTBmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vc3VzcGljaW91c0NhbGxzL1dpbGRjYXJkLmphdmEKQEAgLTAsMCArMSwxMiBAQAoraW1wb3J0IGphdmEudXRpbC5MaXN0OworaW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7CisKK2NsYXNzIENsYXp6IHsKKyAgICB2b2lkIGZvbyhMaXN0PD8gZXh0ZW5kcyBOdW1iZXI+IGwpIHsKKyAgICAgIGJvb2xlYW4gYiA9IGwuY29udGFpbnMoPHdhcm5pbmcgZGVzY3I9IidMaXN0PD8gZXh0ZW5kcyBOdW1iZXI+JyBtYXkgbm90IGNvbnRhaW4gb2JqZWN0cyBvZiB0eXBlICdTdHJpbmcnIj4iIjwvd2FybmluZz4pOyAgICB9CisgICAgdm9pZCBiYXIoKSB7CisgICAgICBMaXN0PD8gZXh0ZW5kcyBDbGFzczw/Pj4gbCA9IG5ldyBBcnJheUxpc3Q8Q2xhc3M8Pz4+KCk7CisgICAgICBDbGFzczw/PiBvID0gU3RyaW5nLmNsYXNzOworICAgICAgaW50IGkgPSBsLmluZGV4T2Yobyk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3N1c3BpY2lvdXNOYW1lQ29tYmluYXRpb24vYXNzaWdubWVudC9leHBlY3RlZC54bWwgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9zdXNwaWNpb3VzTmFtZUNvbWJpbmF0aW9uL2Fzc2lnbm1lbnQvZXhwZWN0ZWQueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgzNTZlYTUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9zdXNwaWNpb3VzTmFtZUNvbWJpbmF0aW9uL2Fzc2lnbm1lbnQvZXhwZWN0ZWQueG1sCkBAIC0wLDAgKzEsOCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxwcm9ibGVtcz4KKyAgPHByb2JsZW0+CisgICAgPGZpbGU+QXNzaWdubWVudC5qYXZhPC9maWxlPgorICAgIDxsaW5lPjQ8L2xpbmU+CisgICAgPGRlc2NyaXB0aW9uPid4JyBzaG91bGQgcHJvYmFibHkgbm90IGJlIGFzc2lnbmVkIHRvICd5JzwvZGVzY3JpcHRpb24+CisgIDwvcHJvYmxlbT4KKzwvcHJvYmxlbXM+CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9zdXNwaWNpb3VzTmFtZUNvbWJpbmF0aW9uL2Fzc2lnbm1lbnQvc3JjL0Fzc2lnbm1lbnQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3N1c3BpY2lvdXNOYW1lQ29tYmluYXRpb24vYXNzaWdubWVudC9zcmMvQXNzaWdubWVudC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgxNzBjMDAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9zdXNwaWNpb3VzTmFtZUNvbWJpbmF0aW9uL2Fzc2lnbm1lbnQvc3JjL0Fzc2lnbm1lbnQuamF2YQpAQCAtMCwwICsxLDYgQEAKK3B1YmxpYyBjbGFzcyBBc3NpZ25tZW50IHsKKyAgcHVibGljIHZvaWQgdGVzdCgpIHsKKyAgICBpbnQgeCA9IDAsIHkgPSAwOworICAgIHkgPSB4OworICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9zdXNwaWNpb3VzTmFtZUNvbWJpbmF0aW9uL2luaXRpYWxpemVyL2V4cGVjdGVkLnhtbCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3N1c3BpY2lvdXNOYW1lQ29tYmluYXRpb24vaW5pdGlhbGl6ZXIvZXhwZWN0ZWQueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVhODUwZGUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9zdXNwaWNpb3VzTmFtZUNvbWJpbmF0aW9uL2luaXRpYWxpemVyL2V4cGVjdGVkLnhtbApAQCAtMCwwICsxLDggQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8cHJvYmxlbXM+CisgIDxwcm9ibGVtPgorICAgIDxmaWxlPkluaXRpYWxpemVyLmphdmE8L2ZpbGU+CisgICAgPGxpbmU+NDwvbGluZT4KKyAgICA8ZGVzY3JpcHRpb24+J3gnIHNob3VsZCBwcm9iYWJseSBub3QgYmUgYXNzaWduZWQgdG8gJ3knPC9kZXNjcmlwdGlvbj4KKyAgPC9wcm9ibGVtPgorPC9wcm9ibGVtcz4KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3N1c3BpY2lvdXNOYW1lQ29tYmluYXRpb24vaW5pdGlhbGl6ZXIvc3JjL0luaXRpYWxpemVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9zdXNwaWNpb3VzTmFtZUNvbWJpbmF0aW9uL2luaXRpYWxpemVyL3NyYy9Jbml0aWFsaXplci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhlMTkyMmUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9zdXNwaWNpb3VzTmFtZUNvbWJpbmF0aW9uL2luaXRpYWxpemVyL3NyYy9Jbml0aWFsaXplci5qYXZhCkBAIC0wLDAgKzEsNiBAQAorcHVibGljIGNsYXNzIEluaXRpYWxpemVyIHsKKyAgcHVibGljIHZvaWQgdGVzdCgpIHsKKyAgICBpbnQgeCA9IDA7CisgICAgaW50IHkgPSB4OworICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9zdXNwaWNpb3VzTmFtZUNvbWJpbmF0aW9uL3BhcmFtZXRlci9leHBlY3RlZC54bWwgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9zdXNwaWNpb3VzTmFtZUNvbWJpbmF0aW9uL3BhcmFtZXRlci9leHBlY3RlZC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2I5YTQ1YQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3N1c3BpY2lvdXNOYW1lQ29tYmluYXRpb24vcGFyYW1ldGVyL2V4cGVjdGVkLnhtbApAQCAtMCwwICsxLDggQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8cHJvYmxlbXM+CisgIDxwcm9ibGVtPgorICAgIDxmaWxlPlBhcmFtZXRlci5qYXZhPC9maWxlPgorICAgIDxsaW5lPjQ8L2xpbmU+CisgICAgPGRlc2NyaXB0aW9uPidzdGFydFgnIHNob3VsZCBwcm9iYWJseSBub3QgYmUgcGFzc2VkIGFzIHBhcmFtZXRlciAneSc8L2Rlc2NyaXB0aW9uPgorICA8L3Byb2JsZW0+Cis8L3Byb2JsZW1zPgpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vc3VzcGljaW91c05hbWVDb21iaW5hdGlvbi9wYXJhbWV0ZXIvc3JjL1BhcmFtZXRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vc3VzcGljaW91c05hbWVDb21iaW5hdGlvbi9wYXJhbWV0ZXIvc3JjL1BhcmFtZXRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMyY2FjNWUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9zdXNwaWNpb3VzTmFtZUNvbWJpbmF0aW9uL3BhcmFtZXRlci9zcmMvUGFyYW1ldGVyLmphdmEKQEAgLTAsMCArMSw5IEBACitwdWJsaWMgY2xhc3MgUGFyYW1ldGVyIHsKKyAgcHVibGljIHZvaWQgdGVzdCgpIHsKKyAgICBpbnQgc3RhcnRYID0gMDsKKyAgICBtZXRob2Qoc3RhcnRYKTsKKyAgfQorCisgIHByaXZhdGUgdm9pZCBtZXRob2QoaW50IHkpIHsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vc3VzcGljaW91c05hbWVDb21iaW5hdGlvbi9yZXR1cm5WYWx1ZS9leHBlY3RlZC54bWwgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9zdXNwaWNpb3VzTmFtZUNvbWJpbmF0aW9uL3JldHVyblZhbHVlL2V4cGVjdGVkLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kN2QyZTc0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vc3VzcGljaW91c05hbWVDb21iaW5hdGlvbi9yZXR1cm5WYWx1ZS9leHBlY3RlZC54bWwKQEAgLTAsMCArMSw4IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPHByb2JsZW1zPgorICA8cHJvYmxlbT4KKyAgICA8ZmlsZT5SZXR1cm5WYWx1ZS5qYXZhPC9maWxlPgorICAgIDxsaW5lPjQ8L2xpbmU+CisgICAgPGRlc2NyaXB0aW9uPid5JyBzaG91bGQgcHJvYmFibHkgbm90IGJlIHJldHVybmVkIGZyb20gbWV0aG9kICdnZXRYJzwvZGVzY3JpcHRpb24+CisgIDwvcHJvYmxlbT4KKzwvcHJvYmxlbXM+CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi9zdXNwaWNpb3VzTmFtZUNvbWJpbmF0aW9uL3JldHVyblZhbHVlL3NyYy9SZXR1cm5WYWx1ZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vc3VzcGljaW91c05hbWVDb21iaW5hdGlvbi9yZXR1cm5WYWx1ZS9zcmMvUmV0dXJuVmFsdWUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NjNkMTkyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vc3VzcGljaW91c05hbWVDb21iaW5hdGlvbi9yZXR1cm5WYWx1ZS9zcmMvUmV0dXJuVmFsdWUuamF2YQpAQCAtMCwwICsxLDYgQEAKK3B1YmxpYyBjbGFzcyBSZXR1cm5WYWx1ZSB7CisgIHB1YmxpYyBpbnQgZ2V0WCgpIHsKKyAgICBpbnQgeT0wOworICAgIHJldHVybiB5OworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vdW51c2VkTWV0aG9kUGFyYW1ldGVyL2FwcE1haW5VbnVzZWRQYXJhbXMvZXhwZWN0ZWQueG1sIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vdW51c2VkTWV0aG9kUGFyYW1ldGVyL2FwcE1haW5VbnVzZWRQYXJhbXMvZXhwZWN0ZWQueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU4YWE2N2MKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi91bnVzZWRNZXRob2RQYXJhbWV0ZXIvYXBwTWFpblVudXNlZFBhcmFtcy9leHBlY3RlZC54bWwKQEAgLTAsMCArMSwzIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPHByb2JsZW1zPjwvcHJvYmxlbXM+CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3VudXNlZE1ldGhvZFBhcmFtZXRlci9hcHBNYWluVW51c2VkUGFyYW1zL3NyYy9UZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi91bnVzZWRNZXRob2RQYXJhbWV0ZXIvYXBwTWFpblVudXNlZFBhcmFtcy9zcmMvVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgzOGM2YmEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi91bnVzZWRNZXRob2RQYXJhbWV0ZXIvYXBwTWFpblVudXNlZFBhcmFtcy9zcmMvVGVzdC5qYXZhCkBAIC0wLDAgKzEsNCBAQAorcHVibGljIGNsYXNzIFRlc3QgeworICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi91bnVzZWRNZXRob2RQYXJhbWV0ZXIvZW50cnlQb2ludFVudXNlZFBhcmFtZXRlci9leHBlY3RlZC54bWwgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi91bnVzZWRNZXRob2RQYXJhbWV0ZXIvZW50cnlQb2ludFVudXNlZFBhcmFtZXRlci9leHBlY3RlZC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZThhYTY3YwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3VudXNlZE1ldGhvZFBhcmFtZXRlci9lbnRyeVBvaW50VW51c2VkUGFyYW1ldGVyL2V4cGVjdGVkLnhtbApAQCAtMCwwICsxLDMgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8cHJvYmxlbXM+PC9wcm9ibGVtcz4KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vdW51c2VkTWV0aG9kUGFyYW1ldGVyL2VudHJ5UG9pbnRVbnVzZWRQYXJhbWV0ZXIvc3JjL1Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3VudXNlZE1ldGhvZFBhcmFtZXRlci9lbnRyeVBvaW50VW51c2VkUGFyYW1ldGVyL3NyYy9UZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWFkNGExOAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3VudXNlZE1ldGhvZFBhcmFtZXRlci9lbnRyeVBvaW50VW51c2VkUGFyYW1ldGVyL3NyYy9UZXN0LmphdmEKQEAgLTAsMCArMSw1IEBACitwdWJsaWMgY2xhc3MgVGVzdCB7CisgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpeworICAKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3VudXNlZE1ldGhvZFBhcmFtZXRlci9maWVsZEluQW5vbnltb3VzQ2xhc3MvZXhwZWN0ZWQueG1sIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vdW51c2VkTWV0aG9kUGFyYW1ldGVyL2ZpZWxkSW5Bbm9ueW1vdXNDbGFzcy9leHBlY3RlZC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZThhYTY3YwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3VudXNlZE1ldGhvZFBhcmFtZXRlci9maWVsZEluQW5vbnltb3VzQ2xhc3MvZXhwZWN0ZWQueG1sCkBAIC0wLDAgKzEsMyBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxwcm9ibGVtcz48L3Byb2JsZW1zPgorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi91bnVzZWRNZXRob2RQYXJhbWV0ZXIvZmllbGRJbkFub255bW91c0NsYXNzL3NyYy9UZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi91bnVzZWRNZXRob2RQYXJhbWV0ZXIvZmllbGRJbkFub255bW91c0NsYXNzL3NyYy9UZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzg1ZGMxMQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3VudXNlZE1ldGhvZFBhcmFtZXRlci9maWVsZEluQW5vbnltb3VzQ2xhc3Mvc3JjL1Rlc3QuamF2YQpAQCAtMCwwICsxLDkgQEAKK3B1YmxpYyBjbGFzcyBUZXN0IHsKKyAgcHVibGljIFJ1bm5hYmxlIGZvbyhmaW5hbCBpbnQgaSkgeworICAgIHJldHVybiBuZXcgUnVubmFibGUoKSB7CisgICAgICBwcml2YXRlIGludCBteUludCA9IGk7ICAgICAgCisgICAgICBwdWJsaWMgdm9pZCBydW4oKXsKKyAgICAgIH0KKyAgICB9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi91bnVzZWRNZXRob2RQYXJhbWV0ZXIvdW51c2VkUGFyYW1ldGVyL2V4cGVjdGVkLnhtbCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3VudXNlZE1ldGhvZFBhcmFtZXRlci91bnVzZWRQYXJhbWV0ZXIvZXhwZWN0ZWQueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM5OTZiMTcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi91bnVzZWRNZXRob2RQYXJhbWV0ZXIvdW51c2VkUGFyYW1ldGVyL2V4cGVjdGVkLnhtbApAQCAtMCwwICsxLDkgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8cHJvYmxlbXM+CisgIDxwcm9ibGVtPgorICAgIDxmaWxlPlRlc3QuamF2YTwvZmlsZT4KKyAgICA8bGluZT4yPC9saW5lPgorICAgIDxkZXNjcmlwdGlvbj5iPC9kZXNjcmlwdGlvbj4KKyAgPC9wcm9ibGVtPgorPC9wcm9ibGVtcz4KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vdW51c2VkTWV0aG9kUGFyYW1ldGVyL3VudXNlZFBhcmFtZXRlci9zcmMvVGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vdW51c2VkTWV0aG9kUGFyYW1ldGVyL3VudXNlZFBhcmFtZXRlci9zcmMvVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYwMjc2ZDkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi91bnVzZWRNZXRob2RQYXJhbWV0ZXIvdW51c2VkUGFyYW1ldGVyL3NyYy9UZXN0LmphdmEKQEAgLTAsMCArMSw1IEBACitwdWJsaWMgY2xhc3MgVGVzdCB7CisgIHB1YmxpYyB2b2lkIGZvbyhib29sZWFuIGIpIHsKKworICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi91bnVzZWRNZXRob2RQYXJhbWV0ZXIvdXNlZEZvclJlYWRpbmcvZXhwZWN0ZWQueG1sIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vdW51c2VkTWV0aG9kUGFyYW1ldGVyL3VzZWRGb3JSZWFkaW5nL2V4cGVjdGVkLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lOGFhNjdjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vdW51c2VkTWV0aG9kUGFyYW1ldGVyL3VzZWRGb3JSZWFkaW5nL2V4cGVjdGVkLnhtbApAQCAtMCwwICsxLDMgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8cHJvYmxlbXM+PC9wcm9ibGVtcz4KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vdW51c2VkTWV0aG9kUGFyYW1ldGVyL3VzZWRGb3JSZWFkaW5nL3NyYy9UZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi91bnVzZWRNZXRob2RQYXJhbWV0ZXIvdXNlZEZvclJlYWRpbmcvc3JjL1Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YjYwZWQ1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vdW51c2VkTWV0aG9kUGFyYW1ldGVyL3VzZWRGb3JSZWFkaW5nL3NyYy9UZXN0LmphdmEKQEAgLTAsMCArMSw1IEBACitwdWJsaWMgY2xhc3MgVGVzdCB7CisgIHB1YmxpYyB2b2lkIGZvbyhib29sZWFuIGIpIHsKKyAgICBib29sZWFuIGYgPSBiOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vdW51c2VkUmV0dXJuVmFsdWUvaGllcmFyY2h5L2V4cGVjdGVkLnhtbCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3VudXNlZFJldHVyblZhbHVlL2hpZXJhcmNoeS9leHBlY3RlZC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTc2NzFhOAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3VudXNlZFJldHVyblZhbHVlL2hpZXJhcmNoeS9leHBlY3RlZC54bWwKQEAgLTAsMCArMSw4IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPHByb2JsZW1zPgorICA8cHJvYmxlbT4KKyAgICA8ZmlsZT5JLmphdmE8L2ZpbGU+CisgICAgPGxpbmU+MjwvbGluZT4KKyAgICA8ZGVzY3JpcHRpb24+UmV0dXJuIHZhbHVlIG9mIHRoZSBtZXRob2QgaXMgbmV2ZXIgdXNlZDwvZGVzY3JpcHRpb24+CisgIDwvcHJvYmxlbT4KKzwvcHJvYmxlbXM+CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi91bnVzZWRSZXR1cm5WYWx1ZS9oaWVyYXJjaHkvc3JjL0IuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3VudXNlZFJldHVyblZhbHVlL2hpZXJhcmNoeS9zcmMvQi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQwZjI3OWUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi91bnVzZWRSZXR1cm5WYWx1ZS9oaWVyYXJjaHkvc3JjL0IuamF2YQpAQCAtMCwwICsxLDEwIEBACitjbGFzcyBCIGltcGxlbWVudHMgSSB7CisgIHB1YmxpYyBib29sZWFuIGlzVW51c2VkKCl7CisgICAgcmV0dXJuIGZhbHNlOworICB9CisKKyAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgeworICAgIEkgaSA9IG5ldyBCKCk7CisgICAgaS5pc1VudXNlZCgpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vdW51c2VkUmV0dXJuVmFsdWUvaGllcmFyY2h5L3NyYy9JLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi91bnVzZWRSZXR1cm5WYWx1ZS9oaWVyYXJjaHkvc3JjL0kuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hY2ExMzYxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vdW51c2VkUmV0dXJuVmFsdWUvaGllcmFyY2h5L3NyYy9JLmphdmEKQEAgLTAsMCArMSwzIEBACitpbnRlcmZhY2UgSSB7CisgIGJvb2xlYW4gaXNVbnVzZWQoKTsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi91bnVzZWRSZXR1cm5WYWx1ZS9uYXRpdmUvZXhwZWN0ZWQueG1sIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vdW51c2VkUmV0dXJuVmFsdWUvbmF0aXZlL2V4cGVjdGVkLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZTlhYzRiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vdW51c2VkUmV0dXJuVmFsdWUvbmF0aXZlL2V4cGVjdGVkLnhtbApAQCAtMCwwICsxLDggQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8cHJvYmxlbXM+CisgIDxwcm9ibGVtPgorICAgIDxmaWxlPlRlc3QuamF2YTwvZmlsZT4KKyAgICA8bGluZT4yPC9saW5lPgorICAgIDxkZXNjcmlwdGlvbj5SZXR1cm4gdmFsdWUgb2YgdGhlIG1ldGhvZCBpcyBuZXZlciB1c2VkPC9kZXNjcmlwdGlvbj4KKyAgPC9wcm9ibGVtPgorPC9wcm9ibGVtcz4KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3VudXNlZFJldHVyblZhbHVlL25hdGl2ZS9zcmMvVGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vdW51c2VkUmV0dXJuVmFsdWUvbmF0aXZlL3NyYy9UZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2NhZTJjMQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3VudXNlZFJldHVyblZhbHVlL25hdGl2ZS9zcmMvVGVzdC5qYXZhCkBAIC0wLDAgKzEsNyBAQAorY2xhc3MgVGVzdCB7CisgIHByaXZhdGUgc3RhdGljIG5hdGl2ZSBib29sZWFuIGlzVW51c2VkKCk7CisKKyAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgeworICAgIFRlc3QuaXNVbnVzZWQoKTsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vdW51c2VkUmV0dXJuVmFsdWUvbm9uTGl0ZXJhbC9leHBlY3RlZC54bWwgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi91bnVzZWRSZXR1cm5WYWx1ZS9ub25MaXRlcmFsL2V4cGVjdGVkLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jOTIyZWY4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vdW51c2VkUmV0dXJuVmFsdWUvbm9uTGl0ZXJhbC9leHBlY3RlZC54bWwKQEAgLTAsMCArMSw4IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPHByb2JsZW1zPgorICA8cHJvYmxlbT4KKyAgICA8ZmlsZT5UZXN0LmphdmE8L2ZpbGU+CisgICAgPGxpbmU+NjwvbGluZT4KKyAgICA8ZGVzY3JpcHRpb24+UmV0dXJuIHZhbHVlIG9mIHRoZSBtZXRob2QgaXMgbmV2ZXIgdXNlZDwvZGVzY3JpcHRpb24+CisgIDwvcHJvYmxlbT4KKzwvcHJvYmxlbXM+CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi91bnVzZWRSZXR1cm5WYWx1ZS9ub25MaXRlcmFsL3NyYy9UZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi91bnVzZWRSZXR1cm5WYWx1ZS9ub25MaXRlcmFsL3NyYy9UZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTg3YWNlNQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3VudXNlZFJldHVyblZhbHVlL25vbkxpdGVyYWwvc3JjL1Rlc3QuamF2YQpAQCAtMCwwICsxLDEzIEBACitjbGFzcyBUZXN0IHsKKyAgYm9vbGVhbiBmb28oKSB7CisgICAgcmV0dXJuIGZhbHNlOworICB9CisKKyAgYm9vbGVhbiBpc1VudXNlZCgpIHsKKyAgICByZXR1cm4gIWZvbygpOworICB9CisKKyAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgeworICAgIG5ldyBUZXN0KCkuaXNVbnVzZWQoKTsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vdW51c2VkUmV0dXJuVmFsdWUvc2ltcGxlU2V0dGVyL2V4cGVjdGVkLnhtbCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3VudXNlZFJldHVyblZhbHVlL3NpbXBsZVNldHRlci9leHBlY3RlZC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDcwNGQ5MQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3VudXNlZFJldHVyblZhbHVlL3NpbXBsZVNldHRlci9leHBlY3RlZC54bWwKQEAgLTAsMCArMSwyIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPHByb2JsZW1zLz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi91bnVzZWRSZXR1cm5WYWx1ZS9zaW1wbGVTZXR0ZXIvc3JjL1Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3VudXNlZFJldHVyblZhbHVlL3NpbXBsZVNldHRlci9zcmMvVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhkZjM4YzEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi91bnVzZWRSZXR1cm5WYWx1ZS9zaW1wbGVTZXR0ZXIvc3JjL1Rlc3QuamF2YQpAQCAtMCwwICsxLDEzIEBACitjbGFzcyBUZXN0IHsKKyAgcHJpdmF0ZSBTdHJpbmcgbXlTdHI7CisKKyAgcHVibGljIFRlc3Qgc2V0U3RyKFN0cmluZyBzdHIpIHsKKyAgICBteVN0ciA9IHN0cjsKKyAgICByZXR1cm4gdGhpczsKKyAgfQorCisgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKKyAgICBmaW5hbCBUZXN0IHRlc3QgPSBuZXcgVGVzdCgpOworICAgIHRlc3Quc2V0U3RyKCIiKTsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vdXNhZ2UxLjUvY29uc3RydWN0b3IvZXhwZWN0ZWQueG1sIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vdXNhZ2UxLjUvY29uc3RydWN0b3IvZXhwZWN0ZWQueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZiZGNmZjUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi91c2FnZTEuNS9jb25zdHJ1Y3Rvci9leHBlY3RlZC54bWwKQEAgLTAsMCArMSw5IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPHByb2JsZW1zPgorICA8cHJvYmxlbT4KKyAgICA8ZmlsZT5UZXN0LmphdmE8L2ZpbGU+CisgICAgPGxpbmU+MzwvbGluZT4KKyAgICA8ZGVzY3JpcHRpb24+VXNhZ2Ugb2YgQVBJIGRvY3VtZW50ZWQgYXMgQHNpbmNlIDEuNTwvZGVzY3JpcHRpb24+CisgIDwvcHJvYmxlbT4KKzwvcHJvYmxlbXM+CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3VzYWdlMS41L2NvbnN0cnVjdG9yL3NyYy9UZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi91c2FnZTEuNS9jb25zdHJ1Y3Rvci9zcmMvVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI1NWZjYjIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi91c2FnZTEuNS9jb25zdHJ1Y3Rvci9zcmMvVGVzdC5qYXZhCkBAIC0wLDAgKzEsNSBAQAorcHVibGljIGNsYXNzIFRlc3QgeworICB2b2lkIGZvbygpIHsKKyAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uICgiIiwgbmV3IFJ1bnRpbWVFeGNlcHRpb24oKSk7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi91c2FnZTEuNS9pZ25vcmVkL2V4cGVjdGVkLnhtbCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3VzYWdlMS41L2lnbm9yZWQvZXhwZWN0ZWQueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg2MjU2MzUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi91c2FnZTEuNS9pZ25vcmVkL2V4cGVjdGVkLnhtbApAQCAtMCwwICsxLDIgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8cHJvYmxlbXM+PC9wcm9ibGVtcz4KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3VzYWdlMS41L2lnbm9yZWQvc3JjL1Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3VzYWdlMS41L2lnbm9yZWQvc3JjL1Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMzA5YjFjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vdXNhZ2UxLjUvaWdub3JlZC9zcmMvVGVzdC5qYXZhCkBAIC0wLDAgKzEsNyBAQAoraW1wb3J0IGphdmEuYXd0Lmdlb20uR2VuZXJhbFBhdGg7CitwdWJsaWMgY2xhc3MgVGVzdCB7CisgIHZvaWQgZm9vKCkgeworICAgIEdlbmVyYWxQYXRoIHBhdGggPSBuZXcgR2VuZXJhbFBhdGgoKTsKKyAgICBwYXRoLm1vdmVUbygwLDApOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vdmlzaWJpbGl0eS9JREVBREVWMTAzMTIvZXhwZWN0ZWQueG1sIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vdmlzaWJpbGl0eS9JREVBREVWMTAzMTIvZXhwZWN0ZWQueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc5ZTFhMGYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi92aXNpYmlsaXR5L0lERUFERVYxMDMxMi9leHBlY3RlZC54bWwKQEAgLTAsMCArMSw0IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPHByb2JsZW1zPiAgCis8L3Byb2JsZW1zPgorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi92aXNpYmlsaXR5L0lERUFERVYxMDMxMi9leHRfc3JjL3dlYWtlci9iL0IuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3Zpc2liaWxpdHkvSURFQURFVjEwMzEyL2V4dF9zcmMvd2Vha2VyL2IvQi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBmYjEzYWIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi92aXNpYmlsaXR5L0lERUFERVYxMDMxMi9leHRfc3JjL3dlYWtlci9iL0IuamF2YQpAQCAtMCwwICsxLDEwIEBACitwYWNrYWdlIHdlYWtlci5iOworCitpbXBvcnQgd2Vha2VyLmEuQTsKKworcHVibGljIGNsYXNzIEIgeworCisgICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgeworICAgICAgICBBLmYoKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi92aXNpYmlsaXR5L0lERUFERVYxMDMxMi9zcmMvd2Vha2VyL2EvQS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vdmlzaWJpbGl0eS9JREVBREVWMTAzMTIvc3JjL3dlYWtlci9hL0EuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNDFkMWIxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vdmlzaWJpbGl0eS9JREVBREVWMTAzMTIvc3JjL3dlYWtlci9hL0EuamF2YQpAQCAtMCwwICsxLDExIEBACitwYWNrYWdlIHdlYWtlci5hOworCitwdWJsaWMgY2xhc3MgQSB7CisKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgZigpIHsKKyAgICB9CisKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CisgICAgICAgIGYoKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi92aXNpYmlsaXR5L0lERUFERVYxMDg4My9leHBlY3RlZC54bWwgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi92aXNpYmlsaXR5L0lERUFERVYxMDg4My9leHBlY3RlZC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzllMWEwZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3Zpc2liaWxpdHkvSURFQURFVjEwODgzL2V4cGVjdGVkLnhtbApAQCAtMCwwICsxLDQgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8cHJvYmxlbXM+ICAKKzwvcHJvYmxlbXM+CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3Zpc2liaWxpdHkvSURFQURFVjEwODgzL3NyYy9CYXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3Zpc2liaWxpdHkvSURFQURFVjEwODgzL3NyYy9CYXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZTljZTA3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vdmlzaWJpbGl0eS9JREVBREVWMTA4ODMvc3JjL0Jhci5qYXZhCkBAIC0wLDAgKzEsMTIgQEAKK3B1YmxpYyBjbGFzcyBCYXIgeworICBwdWJsaWMgc3RhdGljIGJvb2xlYW4gZXhlY3V0ZShib29sZWFuIGlzRm9vKSB7CisgICAgaWYgKGlzRm9vKSB7CisgICAgICByZXR1cm4gbmV3IEZvbygpLmlzVHJhbnNwYXJlbnRzT25seSgpOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7CisgIH0KKworICBib29sZWFuIGlzVHJhbnNwYXJlbnRzT25seSgpIHsKKyAgICByZXR1cm4gZmFsc2U7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi92aXNpYmlsaXR5L0lERUFERVYxMDg4My9zcmMvRm9vLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi92aXNpYmlsaXR5L0lERUFERVYxMDg4My9zcmMvRm9vLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTM2NGUyOQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3Zpc2liaWxpdHkvSURFQURFVjEwODgzL3NyYy9Gb28uamF2YQpAQCAtMCwwICsxLDMgQEAKK3B1YmxpYyBjbGFzcyBGb28gZXh0ZW5kcyBCYXIgeworCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vdmlzaWJpbGl0eS9TQ1IxMTc5Mi9leHBlY3RlZC54bWwgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi92aXNpYmlsaXR5L1NDUjExNzkyL2V4cGVjdGVkLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNzA0ZDU4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vdmlzaWJpbGl0eS9TQ1IxMTc5Mi9leHBlY3RlZC54bWwKQEAgLTAsMCArMSw0IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPHByb2JsZW1zPgorPC9wcm9ibGVtcz4KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vdmlzaWJpbGl0eS9TQ1IxMTc5Mi9zcmMvRm9vLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi92aXNpYmlsaXR5L1NDUjExNzkyL3NyYy9Gb28uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YjU3ZmY5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vdmlzaWJpbGl0eS9TQ1IxMTc5Mi9zcmMvRm9vLmphdmEKQEAgLTAsMCArMSwxMCBAQAorY2xhc3MgRm9vIHsKKyAgICBwcml2YXRlIHZvaWQgbWV0aG9kKCkgeworICAgICAgICBmaW5hbCBjbGFzcyBNeUNsYXNze30KKyAgICAgICAgT2JqZWN0IG8gPSBuZXcgTXlDbGFzcygpOworICAgIH0KKworICAgIHByaXZhdGUgdm9pZCBmb28oKSB7CisgICAgICAgIG1ldGhvZCgpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi92aXNpYmlsaXR5L1NDUjUwMDgvZXhwZWN0ZWQueG1sIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vdmlzaWJpbGl0eS9TQ1I1MDA4L2V4cGVjdGVkLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YzhiYzUzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vdmlzaWJpbGl0eS9TQ1I1MDA4L2V4cGVjdGVkLnhtbApAQCAtMCwwICsxLDkgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8cHJvYmxlbXM+CisgIDxwcm9ibGVtPgorICAgIDxmaWxlPlN1cGVyQ2xhc3MuamF2YTwvZmlsZT4KKyAgICA8bGluZT4zPC9saW5lPgorICAgIDxkZXNjcmlwdGlvbj5wYWNrYWdlIGxvY2FsPC9kZXNjcmlwdGlvbj4KKyAgPC9wcm9ibGVtPgorPC9wcm9ibGVtcz4KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vdmlzaWJpbGl0eS9TQ1I1MDA4L3NyYy9tYXJ0aS9wMS9TdWJDbGFzcy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vdmlzaWJpbGl0eS9TQ1I1MDA4L3NyYy9tYXJ0aS9wMS9TdWJDbGFzcy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJmZDkyYjIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi92aXNpYmlsaXR5L1NDUjUwMDgvc3JjL21hcnRpL3AxL1N1YkNsYXNzLmphdmEKQEAgLTAsMCArMSw2IEBACitwYWNrYWdlIG1hcnRpLnAxOworY2xhc3MgU3ViQ2xhc3MgZXh0ZW5kcyBTdXBlckNsYXNzeworICAgIHB1YmxpYyBTdWJDbGFzcygpIHsKKyAgICAgICAgc3VwZXIoKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi92aXNpYmlsaXR5L1NDUjUwMDgvc3JjL21hcnRpL3AxL1N1cGVyQ2xhc3MuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3Zpc2liaWxpdHkvU0NSNTAwOC9zcmMvbWFydGkvcDEvU3VwZXJDbGFzcy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMyODE3NWQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi92aXNpYmlsaXR5L1NDUjUwMDgvc3JjL21hcnRpL3AxL1N1cGVyQ2xhc3MuamF2YQpAQCAtMCwwICsxLDUgQEAKK3BhY2thZ2UgbWFydGkucDE7CitjbGFzcyBTdXBlckNsYXNzIHsKKyAgICBwdWJsaWMgU3VwZXJDbGFzcygpIHsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi92aXNpYmlsaXR5L1NDUjY4NTYvZXhwZWN0ZWQueG1sIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vdmlzaWJpbGl0eS9TQ1I2ODU2L2V4cGVjdGVkLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYTI3ODYzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vdmlzaWJpbGl0eS9TQ1I2ODU2L2V4cGVjdGVkLnhtbApAQCAtMCwwICsxLDE0IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPHByb2JsZW1zPgorICA8cHJvYmxlbT4KKyAgICA8ZmlsZT5BLmphdmE8L2ZpbGU+CisgICAgPGxpbmU+MzwvbGluZT4KKyAgICA8ZGVzY3JpcHRpb24+cHJpdmF0ZTwvZGVzY3JpcHRpb24+CisgIDwvcHJvYmxlbT4KKyAgPHByb2JsZW0+CisgICAgPGZpbGU+QS5qYXZhPC9maWxlPgorICAgIDxsaW5lPjQ8L2xpbmU+CisgICAgPGRlc2NyaXB0aW9uPnByaXZhdGU8L2Rlc2NyaXB0aW9uPgorICA8L3Byb2JsZW0+Cis8L3Byb2JsZW1zPgorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi92aXNpYmlsaXR5L1NDUjY4NTYvc3JjL0EuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3Zpc2liaWxpdHkvU0NSNjg1Ni9zcmMvQS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE5YjI1NzUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi92aXNpYmlsaXR5L1NDUjY4NTYvc3JjL0EuamF2YQpAQCAtMCwwICsxLDEzIEBACitjbGFzcyBBIHsKKyAgICBBKCl7fSAgICAKKyAgICBzdGF0aWMgY2xhc3MgQiB7CisgICAgICAgIGludCBrPTA7CisgICAgICAgIHsKKyAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihrKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CisgICAgICAgIG5ldyBCKCk7CisgICAgfQorfQorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi92aXNpYmlsaXR5L2Fubm90YXRpb25Vc2FnZXMvZXhwZWN0ZWQueG1sIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vdmlzaWJpbGl0eS9hbm5vdGF0aW9uVXNhZ2VzL2V4cGVjdGVkLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43OWUxYTBmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vdmlzaWJpbGl0eS9hbm5vdGF0aW9uVXNhZ2VzL2V4cGVjdGVkLnhtbApAQCAtMCwwICsxLDQgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8cHJvYmxlbXM+ICAKKzwvcHJvYmxlbXM+CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3Zpc2liaWxpdHkvYW5ub3RhdGlvblVzYWdlcy9zcmMvT2JzZXJ2ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3Zpc2liaWxpdHkvYW5ub3RhdGlvblVzYWdlcy9zcmMvT2JzZXJ2ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZWMyY2RiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vdmlzaWJpbGl0eS9hbm5vdGF0aW9uVXNhZ2VzL3NyYy9PYnNlcnZlci5qYXZhCkBAIC0wLDAgKzEsMyBAQAorcHVibGljIEBpbnRlcmZhY2UgT2JzZXJ2ZXIgeworICAgIFN0cmluZyB2YWx1ZSgpOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3Zpc2liaWxpdHkvYW5ub3RhdGlvblVzYWdlcy9zcmMvVGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vdmlzaWJpbGl0eS9hbm5vdGF0aW9uVXNhZ2VzL3NyYy9UZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjNiNGJhYQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3Zpc2liaWxpdHkvYW5ub3RhdGlvblVzYWdlcy9zcmMvVGVzdC5qYXZhCkBAIC0wLDAgKzEsNiBAQAorcHVibGljIGNsYXNzIFRlc3QgeworICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgQ09OU1QgPSAiY29uc3QiOworICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncyl7CisgICAgU3lzdGVtLm91dC5wcmludGxuKENPTlNUKTsKKyAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi92aXNpYmlsaXR5L2Fubm90YXRpb25Vc2FnZXMvc3JjL1VzYWdlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi92aXNpYmlsaXR5L2Fubm90YXRpb25Vc2FnZXMvc3JjL1VzYWdlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGQ5MzNlZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3Zpc2liaWxpdHkvYW5ub3RhdGlvblVzYWdlcy9zcmMvVXNhZ2UuamF2YQpAQCAtMCwwICsxLDggQEAKK0BPYnNlcnZlcihUZXN0LkNPTlNUKQorY2xhc3MgVXNhZ2UgeworICBAT2JzZXJ2ZXIoVGVzdC5DT05TVCkKKyAgaW50IGY7CisKKyAgQE9ic2VydmVyKFRlc3QuQ09OU1QpCisgIHZvaWQgZm9vKCl7fQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3Zpc2liaWxpdHkvZGVmYXVsdENvbnN0cnVjdG9yL2V4cGVjdGVkLnhtbCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3Zpc2liaWxpdHkvZGVmYXVsdENvbnN0cnVjdG9yL2V4cGVjdGVkLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43OWUxYTBmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vdmlzaWJpbGl0eS9kZWZhdWx0Q29uc3RydWN0b3IvZXhwZWN0ZWQueG1sCkBAIC0wLDAgKzEsNCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxwcm9ibGVtcz4gIAorPC9wcm9ibGVtcz4KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vdmlzaWJpbGl0eS9kZWZhdWx0Q29uc3RydWN0b3IvZXh0X3NyYy9yZXMueG1sIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vdmlzaWJpbGl0eS9kZWZhdWx0Q29uc3RydWN0b3IvZXh0X3NyYy9yZXMueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM4MDA5YmIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi92aXNpYmlsaXR5L2RlZmF1bHRDb25zdHJ1Y3Rvci9leHRfc3JjL3Jlcy54bWwKQEAgLTAsMCArMSBAQAorPHJvb3Q+VGVzdDwvcm9vdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi92aXNpYmlsaXR5L2RlZmF1bHRDb25zdHJ1Y3Rvci9zcmMvVGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vdmlzaWJpbGl0eS9kZWZhdWx0Q29uc3RydWN0b3Ivc3JjL1Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYzNhMmE1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vdmlzaWJpbGl0eS9kZWZhdWx0Q29uc3RydWN0b3Ivc3JjL1Rlc3QuamF2YQpAQCAtMCwwICsxLDYgQEAKK3B1YmxpYyBjbGFzcyBUZXN0IGltcGxlbWVudHMgamF2YS5sYW5nLkNsb25hYmxlIHsKKyAgIHB1YmxpYyBUZXN0KCl7fQorICAgcHVibGljIE9iamVjdCBjbG9uZSgpIHsKKyAgICAgcmV0dXJuIG5ldyBUZXN0KCk7CisgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vdmlzaWJpbGl0eS9lbnVtQ29uc3RhbnRzVmlzaWJpbGl0eS9leHBlY3RlZC54bWwgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi92aXNpYmlsaXR5L2VudW1Db25zdGFudHNWaXNpYmlsaXR5L2V4cGVjdGVkLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43OWUxYTBmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vdmlzaWJpbGl0eS9lbnVtQ29uc3RhbnRzVmlzaWJpbGl0eS9leHBlY3RlZC54bWwKQEAgLTAsMCArMSw0IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPHByb2JsZW1zPiAgCis8L3Byb2JsZW1zPgorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi92aXNpYmlsaXR5L2VudW1Db25zdGFudHNWaXNpYmlsaXR5L3NyYy9Gb28uamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3Zpc2liaWxpdHkvZW51bUNvbnN0YW50c1Zpc2liaWxpdHkvc3JjL0Zvby5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY0MDNkYTQ3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vdmlzaWJpbGl0eS9lbnVtQ29uc3RhbnRzVmlzaWJpbGl0eS9zcmMvRm9vLmphdmEKQEAgLTAsMCArMSw3IEBACitwdWJsaWMgZW51bSBGb28geworICBCQVIsIFVOVVNFRDsKKyAgCisgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpeworICAgIFN5c3RlbS5vdXQucHJpbnRsbihCQVIpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vdmlzaWJpbGl0eS9pbXBsaWNpdENvbnN0cnVjdG9yL2V4cGVjdGVkLnhtbCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3Zpc2liaWxpdHkvaW1wbGljaXRDb25zdHJ1Y3Rvci9leHBlY3RlZC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzllMWEwZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3Zpc2liaWxpdHkvaW1wbGljaXRDb25zdHJ1Y3Rvci9leHBlY3RlZC54bWwKQEAgLTAsMCArMSw0IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPHByb2JsZW1zPiAgCis8L3Byb2JsZW1zPgorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi92aXNpYmlsaXR5L2ltcGxpY2l0Q29uc3RydWN0b3IvZXh0X3NyYy9yZXMueG1sIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vdmlzaWJpbGl0eS9pbXBsaWNpdENvbnN0cnVjdG9yL2V4dF9zcmMvcmVzLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zODAwOWJiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vdmlzaWJpbGl0eS9pbXBsaWNpdENvbnN0cnVjdG9yL2V4dF9zcmMvcmVzLnhtbApAQCAtMCwwICsxIEBACis8cm9vdD5UZXN0PC9yb290PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3Zpc2liaWxpdHkvaW1wbGljaXRDb25zdHJ1Y3Rvci9zcmMvVGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vdmlzaWJpbGl0eS9pbXBsaWNpdENvbnN0cnVjdG9yL3NyYy9UZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWY0MjYxYQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3Zpc2liaWxpdHkvaW1wbGljaXRDb25zdHJ1Y3Rvci9zcmMvVGVzdC5qYXZhCkBAIC0wLDAgKzEsNSBAQAorcHVibGljIGNsYXNzIFRlc3QgaW1wbGVtZW50cyBqYXZhLmxhbmcuQ2xvbmFibGUgeworICAgcHVibGljIE9iamVjdCBjbG9uZSgpIHsKKyAgICAgcmV0dXJuIG5ldyBUZXN0KCk7CisgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vdmlzaWJpbGl0eS9pbm5lckNvbnN0cnVjdG9yL2V4cGVjdGVkLnhtbCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3Zpc2liaWxpdHkvaW5uZXJDb25zdHJ1Y3Rvci9leHBlY3RlZC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTZmMjVhYwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3Zpc2liaWxpdHkvaW5uZXJDb25zdHJ1Y3Rvci9leHBlY3RlZC54bWwKQEAgLTAsMCArMSw5IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPHByb2JsZW1zPgorICA8cHJvYmxlbT4KKyAgICA8ZmlsZT5Gb28uamF2YTwvZmlsZT4KKyAgICA8bGluZT40PC9saW5lPgorICAgIDxkZXNjcmlwdGlvbj5wcml2YXRlPC9kZXNjcmlwdGlvbj4KKyAgPC9wcm9ibGVtPgorPC9wcm9ibGVtcz4KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vdmlzaWJpbGl0eS9pbm5lckNvbnN0cnVjdG9yL3NyYy9Gb28uamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3Zpc2liaWxpdHkvaW5uZXJDb25zdHJ1Y3Rvci9zcmMvRm9vLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjE1OTAxNgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3Zpc2liaWxpdHkvaW5uZXJDb25zdHJ1Y3Rvci9zcmMvRm9vLmphdmEKQEAgLTAsMCArMSw3IEBACitjbGFzcyBGb28geworICBwcml2YXRlIGZpbmFsIEJhciBiYXIgPSBuZXcgQmFyKCk7CisgIHByaXZhdGUgY2xhc3MgQmFyIHsKKyAgICBwdWJsaWMgQmFyKCkgeworICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3Zpc2liaWxpdHkvcGFja2FnZUxldmVsVG9wcy9leHBlY3RlZC54bWwgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi92aXNpYmlsaXR5L3BhY2thZ2VMZXZlbFRvcHMvZXhwZWN0ZWQueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUzYzEwNWIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi92aXNpYmlsaXR5L3BhY2thZ2VMZXZlbFRvcHMvZXhwZWN0ZWQueG1sCkBAIC0wLDAgKzEsOSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxwcm9ibGVtcz4KKyAgPHByb2JsZW0+CisgICAgPGZpbGU+UGFja2FnZUxldmVsU2VydmVyLmphdmE8L2ZpbGU+CisgICAgPGxpbmU+MzwvbGluZT4KKyAgICA8ZGVzY3JpcHRpb24+cGFja2FnZSBsb2NhbDwvZGVzY3JpcHRpb24+CisgIDwvcHJvYmxlbT4KKzwvcHJvYmxlbXM+CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3Zpc2liaWxpdHkvcGFja2FnZUxldmVsVG9wcy9zcmMvcGFja2FnZTEvUGFja2FnZUxldmVsU2VydmVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi92aXNpYmlsaXR5L3BhY2thZ2VMZXZlbFRvcHMvc3JjL3BhY2thZ2UxL1BhY2thZ2VMZXZlbFNlcnZlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY1NmYyYjkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi92aXNpYmlsaXR5L3BhY2thZ2VMZXZlbFRvcHMvc3JjL3BhY2thZ2UxL1BhY2thZ2VMZXZlbFNlcnZlci5qYXZhCkBAIC0wLDAgKzEsNSBAQAorcGFja2FnZSBwYWNrYWdlMTsKKworcHVibGljIGNsYXNzIFBhY2thZ2VMZXZlbFNlcnZlciB7CisgIHB1YmxpYyBzdGF0aWMgdm9pZCBmb28oKSB7fQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3Zpc2liaWxpdHkvcGFja2FnZUxldmVsVG9wcy9zcmMvcGFja2FnZTEvUHVibGljU2VydmVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi92aXNpYmlsaXR5L3BhY2thZ2VMZXZlbFRvcHMvc3JjL3BhY2thZ2UxL1B1YmxpY1NlcnZlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM5OGRjMGUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi92aXNpYmlsaXR5L3BhY2thZ2VMZXZlbFRvcHMvc3JjL3BhY2thZ2UxL1B1YmxpY1NlcnZlci5qYXZhCkBAIC0wLDAgKzEsNSBAQAorcGFja2FnZSBwYWNrYWdlMTsKKworcHVibGljIGNsYXNzIFB1YmxpY1NlcnZlciB7CisgIHB1YmxpYyBzdGF0aWMgdm9pZCBmb28oKSB7fQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3Zpc2liaWxpdHkvcGFja2FnZUxldmVsVG9wcy9zcmMvcGFja2FnZTIvQ2xpZW50LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi92aXNpYmlsaXR5L3BhY2thZ2VMZXZlbFRvcHMvc3JjL3BhY2thZ2UyL0NsaWVudC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjViNTVkZTMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi92aXNpYmlsaXR5L3BhY2thZ2VMZXZlbFRvcHMvc3JjL3BhY2thZ2UyL0NsaWVudC5qYXZhCkBAIC0wLDAgKzEsOSBAQAorcGFja2FnZSBwYWNrYWdlMjsKKworaW1wb3J0IHBhY2thZ2UxLlB1YmxpY1NlcnZlcjsKKworY2xhc3MgQ2xpZW50IHsKKyAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nIGFyZ3NbXSkgeworICAgIFB1YmxpY1NlcnZlci5mb28oKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3Zpc2liaWxpdHkvdHlwZUFyZ3VtZW50cy9leHBlY3RlZC54bWwgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi92aXNpYmlsaXR5L3R5cGVBcmd1bWVudHMvZXhwZWN0ZWQueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVjMjcyYWIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi92aXNpYmlsaXR5L3R5cGVBcmd1bWVudHMvZXhwZWN0ZWQueG1sCkBAIC0wLDAgKzEsMyBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxwcm9ibGVtcy8+CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3Zpc2liaWxpdHkvdHlwZUFyZ3VtZW50cy9zcmMvQWJzdHJhY3RTZXR1cC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vdmlzaWJpbGl0eS90eXBlQXJndW1lbnRzL3NyYy9BYnN0cmFjdFNldHVwLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGZjNjQyZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3Zpc2liaWxpdHkvdHlwZUFyZ3VtZW50cy9zcmMvQWJzdHJhY3RTZXR1cC5qYXZhCkBAIC0wLDAgKzEsMTQgQEAKK3B1YmxpYyBhYnN0cmFjdCBjbGFzcyBBYnN0cmFjdFNldHVwPFQgZXh0ZW5kcyBBYnN0cmFjdFNldHVwUGFyYW1zPgoreworICAgcHJpdmF0ZSBUIHBhcmFtZXRlcnM7CisKKyAgIHB1YmxpYyBUIGdldFBhcmFtZXRlcnMoKQorICAgeworICAgICAgcmV0dXJuIHBhcmFtZXRlcnM7CisgICB9CisKKyAgIHByb3RlY3RlZCB2b2lkIHNldFBhcmFtZXRlcnMoVCBwUGFyYW1ldGVycykKKyAgIHsKKyAgICAgIHBhcmFtZXRlcnMgPSBwUGFyYW1ldGVyczsKKyAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3Zpc2liaWxpdHkvdHlwZUFyZ3VtZW50cy9zcmMvQWJzdHJhY3RTZXR1cFBhcmFtcy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vdmlzaWJpbGl0eS90eXBlQXJndW1lbnRzL3NyYy9BYnN0cmFjdFNldHVwUGFyYW1zLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWRjMDEzNwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3Zpc2liaWxpdHkvdHlwZUFyZ3VtZW50cy9zcmMvQWJzdHJhY3RTZXR1cFBhcmFtcy5qYXZhCkBAIC0wLDAgKzEsMyBAQAorcHVibGljIGNsYXNzIEFic3RyYWN0U2V0dXBQYXJhbXMKK3sKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3Zpc2liaWxpdHkvdHlwZUFyZ3VtZW50cy9zcmMvQ2hpbGRDbGFzcy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vdmlzaWJpbGl0eS90eXBlQXJndW1lbnRzL3NyYy9DaGlsZENsYXNzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGY2NzNiMQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3Zpc2liaWxpdHkvdHlwZUFyZ3VtZW50cy9zcmMvQ2hpbGRDbGFzcy5qYXZhCkBAIC0wLDAgKzEsMzMgQEAKK3B1YmxpYyBmaW5hbCBjbGFzcyBDaGlsZENsYXNzIGV4dGVuZHMgU3VwZXJjbGFzczxDaGlsZENsYXNzLlBhcmFtLCBDaGlsZENsYXNzLlNldHVwPgoreworLy8gLS0tIEZJRUxEUyAtLS0KKworICAgcHJpdmF0ZSBDaGlsZENsYXNzKCkKKyAgIHsKKworCisgICB9CisKKy8vIC0tLSBPVEhFUiBNRVRIT0RTIC0tLQorCisgICBAT3ZlcnJpZGUKKyAgIHByb3RlY3RlZCBTZXR1cCBjcmVhdGVJbml0aWFsaXplcigpCisgICB7CisgICAgICByZXR1cm4gbmV3IENoaWxkQ2xhc3MuU2V0dXAoKTsKKyAgIH0KKworCisgICBjbGFzcyBQYXJhbSBleHRlbmRzIEFic3RyYWN0U2V0dXBQYXJhbXMKKyAgIHsKKyAgIH0KKworICAgcHJpdmF0ZSBjbGFzcyBTZXR1cCBleHRlbmRzIEFic3RyYWN0U2V0dXA8UGFyYW0+CisgICB7CisKKyAgIH0KKworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHt9CisKKyAgICAKKworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3Zpc2liaWxpdHkvdHlwZUFyZ3VtZW50cy9zcmMvU3VwZXJjbGFzcy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vdmlzaWJpbGl0eS90eXBlQXJndW1lbnRzL3NyYy9TdXBlcmNsYXNzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzg5Yzc0MQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3Zpc2liaWxpdHkvdHlwZUFyZ3VtZW50cy9zcmMvU3VwZXJjbGFzcy5qYXZhCkBAIC0wLDAgKzEsOCBAQAorcHVibGljIGFic3RyYWN0IGNsYXNzIFN1cGVyY2xhc3M8VFBhcmFtIGV4dGVuZHMgQWJzdHJhY3RTZXR1cFBhcmFtcywgVFNldHVwIGV4dGVuZHMgQWJzdHJhY3RTZXR1cDxUUGFyYW0+PgoreworCisKKyAgIHByb3RlY3RlZCBhYnN0cmFjdCBUU2V0dXAgY3JlYXRlSW5pdGlhbGl6ZXIoKTsKKworCit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi92aXNpYmlsaXR5L3VzZWRGcm9tQW5ub3RhdGlvbnNFeHRlbmRzTGlzdC9leHBlY3RlZC54bWwgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvaW5zcGVjdGlvbi92aXNpYmlsaXR5L3VzZWRGcm9tQW5ub3RhdGlvbnNFeHRlbmRzTGlzdC9leHBlY3RlZC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODE1MzI0NwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3Zpc2liaWxpdHkvdXNlZEZyb21Bbm5vdGF0aW9uc0V4dGVuZHNMaXN0L2V4cGVjdGVkLnhtbApAQCAtMCwwICsxLDIyIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPHByb2JsZW1zPgorICA8cHJvYmxlbT4KKyAgICA8ZmlsZT5UaGlzQ2xhc3MuamF2YTwvZmlsZT4KKyAgICA8bGluZT41PC9saW5lPgorICAgIDxwcm9ibGVtX2NsYXNzIHNldmVyaXR5PSJXQVJOSU5HIiBhdHRyaWJ1dGVfa2V5PSJXQVJOSU5HX0FUVFJJQlVURVMiPkRlY2xhcmF0aW9uIGFjY2VzcyBjYW4gYmUgd2Vha2VyPC9wcm9ibGVtX2NsYXNzPgorICAgIDxoaW50cz4KKyAgICAgIDxoaW50IHZhbHVlPSJwYWNrYWdlTG9jYWwiIC8+CisgICAgPC9oaW50cz4KKyAgICA8ZGVzY3JpcHRpb24+Q2FuIGJlIHBhY2thZ2UgbG9jYWw8L2Rlc2NyaXB0aW9uPgorICA8L3Byb2JsZW0+CisgIDxwcm9ibGVtPgorICAgIDxmaWxlPlRoaXNDbGFzcy5qYXZhPC9maWxlPgorICAgIDxsaW5lPjQ8L2xpbmU+CisgICAgPHByb2JsZW1fY2xhc3Mgc2V2ZXJpdHk9IldBUk5JTkciIGF0dHJpYnV0ZV9rZXk9IldBUk5JTkdfQVRUUklCVVRFUyI+RGVjbGFyYXRpb24gYWNjZXNzIGNhbiBiZSB3ZWFrZXI8L3Byb2JsZW1fY2xhc3M+CisgICAgPGhpbnRzPgorICAgICAgPGhpbnQgdmFsdWU9InBhY2thZ2VMb2NhbCIgLz4KKyAgICA8L2hpbnRzPgorICAgIDxkZXNjcmlwdGlvbj5DYW4gYmUgcGFja2FnZSBsb2NhbDwvZGVzY3JpcHRpb24+CisgIDwvcHJvYmxlbT4KKzwvcHJvYmxlbXM+CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3Zpc2liaWxpdHkvdXNlZEZyb21Bbm5vdGF0aW9uc0V4dGVuZHNMaXN0L3NyYy9UaGlzQ2xhc3MuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9pbnNwZWN0aW9uL3Zpc2liaWxpdHkvdXNlZEZyb21Bbm5vdGF0aW9uc0V4dGVuZHNMaXN0L3NyYy9UaGlzQ2xhc3MuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NzQzM2YyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2luc3BlY3Rpb24vdmlzaWJpbGl0eS91c2VkRnJvbUFubm90YXRpb25zRXh0ZW5kc0xpc3Qvc3JjL1RoaXNDbGFzcy5qYXZhCkBAIC0wLDAgKzEsOSBAQAoraW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7CitAU3VwcHJlc3NXYXJuaW5ncyhUaGlzQ2xhc3MuUFVCTElDRklOQUxOQU1FKQorcHVibGljIGNsYXNzIFRoaXNDbGFzcyBleHRlbmRzIEFycmF5TGlzdDxUaGlzQ2xhc3MuRkY+IHsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBQVUJMSUNGSU5BTE5BTUUgPSAic3R1ZmYiOworICAgIHB1YmxpYyBzdGF0aWMgY2xhc3MgRkYge30KKworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2xpYlJlc29sdmUvY2xhc3Nlc0FuZFNvdXJjZXMvY2xhc3Nlc0FuZFNvdXJjZXMuamFyIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2xpYlJlc29sdmUvY2xhc3Nlc0FuZFNvdXJjZXMvY2xhc3Nlc0FuZFNvdXJjZXMuamFyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI0Y2YxMTkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvbGliUmVzb2x2ZS9jbGFzc2VzQW5kU291cmNlcy9jbGFzc2VzQW5kU291cmNlcy5qYXIKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2xpYlJlc29sdmUvaW5oZXJpdGFuY2UvZnVsbExpYnJhcnkuamFyIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2xpYlJlc29sdmUvaW5oZXJpdGFuY2UvZnVsbExpYnJhcnkuamFyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBiOGJlN2EKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvbGliUmVzb2x2ZS9pbmhlcml0YW5jZS9mdWxsTGlicmFyeS5qYXIKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL2xpYlJlc29sdmUvaW5oZXJpdGFuY2UvbWlkZGxlQm90dG9tLmphciBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9saWJSZXNvbHZlL2luaGVyaXRhbmNlL21pZGRsZUJvdHRvbS5qYXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmZlM2U1MQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9saWJSZXNvbHZlL2luaGVyaXRhbmNlL21pZGRsZUJvdHRvbS5qYXIKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL21vZGVsL01vZGVsLmltbCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9tb2RlbC9Nb2RlbC5pbWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDVjMDc0MwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9tb2RlbC9Nb2RlbC5pbWwKQEAgLTAsMCArMSwxMiBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxtb2R1bGUgdHlwZT0iSkFWQV9NT0RVTEUiIHZlcnNpb249IjQiPgorICA8Y29tcG9uZW50IG5hbWU9Ik5ld01vZHVsZVJvb3RNYW5hZ2VyIiBpbmhlcml0LWNvbXBpbGVyLW91dHB1dD0idHJ1ZSI+CisgICAgPGV4Y2x1ZGUtb3V0cHV0IC8+CisgICAgPGNvbnRlbnQgdXJsPSJmaWxlOi8vJE1PRFVMRV9ESVIkIj4KKyAgICAgIDxzb3VyY2VGb2xkZXIgdXJsPSJmaWxlOi8vJE1PRFVMRV9ESVIkL3NyYyIgaXNUZXN0U291cmNlPSJmYWxzZSIgLz4KKyAgICA8L2NvbnRlbnQ+CisgICAgPG9yZGVyRW50cnkgdHlwZT0iaW5oZXJpdGVkSmRrIiAvPgorICAgIDxvcmRlckVudHJ5IHR5cGU9InNvdXJjZUZvbGRlciIgZm9yVGVzdHM9ImZhbHNlIiAvPgorICA8L2NvbXBvbmVudD4KKzwvbW9kdWxlPgorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvbW9kZWwvbW9kZWwuaXByIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL21vZGVsL21vZGVsLmlwcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45YmNjMzJlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL21vZGVsL21vZGVsLmlwcgpAQCAtMCwwICsxLDE3NyBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxwcm9qZWN0IHZlcnNpb249IjQiPgorICA8Y29tcG9uZW50IG5hbWU9IkNvbXBpbGVyQ29uZmlndXJhdGlvbiI+CisgICAgPG9wdGlvbiBuYW1lPSJERUZBVUxUX0NPTVBJTEVSIiB2YWx1ZT0iSmF2YWMiIC8+CisgICAgPHJlc291cmNlRXh0ZW5zaW9ucyAvPgorICAgIDx3aWxkY2FyZFJlc291cmNlUGF0dGVybnM+CisgICAgICA8ZW50cnkgbmFtZT0iPyoucHJvcGVydGllcyIgLz4KKyAgICAgIDxlbnRyeSBuYW1lPSI/Ki54bWwiIC8+CisgICAgICA8ZW50cnkgbmFtZT0iPyouZ2lmIiAvPgorICAgICAgPGVudHJ5IG5hbWU9Ij8qLnBuZyIgLz4KKyAgICAgIDxlbnRyeSBuYW1lPSI/Ki5qcGVnIiAvPgorICAgICAgPGVudHJ5IG5hbWU9Ij8qLmpwZyIgLz4KKyAgICAgIDxlbnRyeSBuYW1lPSI/Ki5odG1sIiAvPgorICAgICAgPGVudHJ5IG5hbWU9Ij8qLmR0ZCIgLz4KKyAgICAgIDxlbnRyeSBuYW1lPSI/Ki50bGQiIC8+CisgICAgICA8ZW50cnkgbmFtZT0iPyouZnRsIiAvPgorICAgIDwvd2lsZGNhcmRSZXNvdXJjZVBhdHRlcm5zPgorICAgIDxhbm5vdGF0aW9uUHJvY2Vzc2luZyBlbmFibGVkPSJmYWxzZSIgdXNlQ2xhc3NwYXRoPSJ0cnVlIiAvPgorICA8L2NvbXBvbmVudD4KKyAgPGNvbXBvbmVudCBuYW1lPSJEZXBlbmRlbmN5VmFsaWRhdGlvbk1hbmFnZXIiPgorICAgIDxvcHRpb24gbmFtZT0iU0tJUF9JTVBPUlRfU1RBVEVNRU5UUyIgdmFsdWU9ImZhbHNlIiAvPgorICA8L2NvbXBvbmVudD4KKyAgPGNvbXBvbmVudCBuYW1lPSJFbmNvZGluZyIgdXNlVVRGR3Vlc3Npbmc9InRydWUiIG5hdGl2ZTJBc2NpaUZvclByb3BlcnRpZXNGaWxlcz0iZmFsc2UiIC8+CisgIDxjb21wb25lbnQgbmFtZT0iRW50cnlQb2ludHNNYW5hZ2VyIj4KKyAgICA8ZW50cnlfcG9pbnRzIHZlcnNpb249IjIuMCIgLz4KKyAgPC9jb21wb25lbnQ+CisgIDxjb21wb25lbnQgbmFtZT0iUGFsZXR0ZTIiPgorICAgIDxncm91cCBuYW1lPSJTd2luZyI+CisgICAgICA8aXRlbSBjbGFzcz0iY29tLmludGVsbGlqLnVpRGVzaWduZXIuSFNwYWNlciIgdG9vbHRpcC10ZXh0PSJIb3Jpem9udGFsIFNwYWNlciIgaWNvbj0iL2NvbS9pbnRlbGxpai91aURlc2lnbmVyL2ljb25zL2hzcGFjZXIucG5nIiByZW1vdmFibGU9ImZhbHNlIiBhdXRvLWNyZWF0ZS1iaW5kaW5nPSJmYWxzZSIgY2FuLWF0dGFjaC1sYWJlbD0iZmFsc2UiPgorICAgICAgICA8ZGVmYXVsdC1jb25zdHJhaW50cyB2c2l6ZS1wb2xpY3k9IjEiIGhzaXplLXBvbGljeT0iNiIgYW5jaG9yPSIwIiBmaWxsPSIxIiAvPgorICAgICAgPC9pdGVtPgorICAgICAgPGl0ZW0gY2xhc3M9ImNvbS5pbnRlbGxpai51aURlc2lnbmVyLlZTcGFjZXIiIHRvb2x0aXAtdGV4dD0iVmVydGljYWwgU3BhY2VyIiBpY29uPSIvY29tL2ludGVsbGlqL3VpRGVzaWduZXIvaWNvbnMvdnNwYWNlci5wbmciIHJlbW92YWJsZT0iZmFsc2UiIGF1dG8tY3JlYXRlLWJpbmRpbmc9ImZhbHNlIiBjYW4tYXR0YWNoLWxhYmVsPSJmYWxzZSI+CisgICAgICAgIDxkZWZhdWx0LWNvbnN0cmFpbnRzIHZzaXplLXBvbGljeT0iNiIgaHNpemUtcG9saWN5PSIxIiBhbmNob3I9IjAiIGZpbGw9IjIiIC8+CisgICAgICA8L2l0ZW0+CisgICAgICA8aXRlbSBjbGFzcz0iamF2YXguc3dpbmcuSlBhbmVsIiBpY29uPSIvY29tL2ludGVsbGlqL3VpRGVzaWduZXIvaWNvbnMvcGFuZWwucG5nIiByZW1vdmFibGU9ImZhbHNlIiBhdXRvLWNyZWF0ZS1iaW5kaW5nPSJmYWxzZSIgY2FuLWF0dGFjaC1sYWJlbD0iZmFsc2UiPgorICAgICAgICA8ZGVmYXVsdC1jb25zdHJhaW50cyB2c2l6ZS1wb2xpY3k9IjMiIGhzaXplLXBvbGljeT0iMyIgYW5jaG9yPSIwIiBmaWxsPSIzIiAvPgorICAgICAgPC9pdGVtPgorICAgICAgPGl0ZW0gY2xhc3M9ImphdmF4LnN3aW5nLkpTY3JvbGxQYW5lIiBpY29uPSIvY29tL2ludGVsbGlqL3VpRGVzaWduZXIvaWNvbnMvc2Nyb2xsUGFuZS5wbmciIHJlbW92YWJsZT0iZmFsc2UiIGF1dG8tY3JlYXRlLWJpbmRpbmc9ImZhbHNlIiBjYW4tYXR0YWNoLWxhYmVsPSJ0cnVlIj4KKyAgICAgICAgPGRlZmF1bHQtY29uc3RyYWludHMgdnNpemUtcG9saWN5PSI3IiBoc2l6ZS1wb2xpY3k9IjciIGFuY2hvcj0iMCIgZmlsbD0iMyIgLz4KKyAgICAgIDwvaXRlbT4KKyAgICAgIDxpdGVtIGNsYXNzPSJqYXZheC5zd2luZy5KQnV0dG9uIiBpY29uPSIvY29tL2ludGVsbGlqL3VpRGVzaWduZXIvaWNvbnMvYnV0dG9uLnBuZyIgcmVtb3ZhYmxlPSJmYWxzZSIgYXV0by1jcmVhdGUtYmluZGluZz0idHJ1ZSIgY2FuLWF0dGFjaC1sYWJlbD0iZmFsc2UiPgorICAgICAgICA8ZGVmYXVsdC1jb25zdHJhaW50cyB2c2l6ZS1wb2xpY3k9IjAiIGhzaXplLXBvbGljeT0iMyIgYW5jaG9yPSIwIiBmaWxsPSIxIiAvPgorICAgICAgICA8aW5pdGlhbC12YWx1ZXM+CisgICAgICAgICAgPHByb3BlcnR5IG5hbWU9InRleHQiIHZhbHVlPSJCdXR0b24iIC8+CisgICAgICAgIDwvaW5pdGlhbC12YWx1ZXM+CisgICAgICA8L2l0ZW0+CisgICAgICA8aXRlbSBjbGFzcz0iamF2YXguc3dpbmcuSlJhZGlvQnV0dG9uIiBpY29uPSIvY29tL2ludGVsbGlqL3VpRGVzaWduZXIvaWNvbnMvcmFkaW9CdXR0b24ucG5nIiByZW1vdmFibGU9ImZhbHNlIiBhdXRvLWNyZWF0ZS1iaW5kaW5nPSJ0cnVlIiBjYW4tYXR0YWNoLWxhYmVsPSJmYWxzZSI+CisgICAgICAgIDxkZWZhdWx0LWNvbnN0cmFpbnRzIHZzaXplLXBvbGljeT0iMCIgaHNpemUtcG9saWN5PSIzIiBhbmNob3I9IjgiIGZpbGw9IjAiIC8+CisgICAgICAgIDxpbml0aWFsLXZhbHVlcz4KKyAgICAgICAgICA8cHJvcGVydHkgbmFtZT0idGV4dCIgdmFsdWU9IlJhZGlvQnV0dG9uIiAvPgorICAgICAgICA8L2luaXRpYWwtdmFsdWVzPgorICAgICAgPC9pdGVtPgorICAgICAgPGl0ZW0gY2xhc3M9ImphdmF4LnN3aW5nLkpDaGVja0JveCIgaWNvbj0iL2NvbS9pbnRlbGxpai91aURlc2lnbmVyL2ljb25zL2NoZWNrQm94LnBuZyIgcmVtb3ZhYmxlPSJmYWxzZSIgYXV0by1jcmVhdGUtYmluZGluZz0idHJ1ZSIgY2FuLWF0dGFjaC1sYWJlbD0iZmFsc2UiPgorICAgICAgICA8ZGVmYXVsdC1jb25zdHJhaW50cyB2c2l6ZS1wb2xpY3k9IjAiIGhzaXplLXBvbGljeT0iMyIgYW5jaG9yPSI4IiBmaWxsPSIwIiAvPgorICAgICAgICA8aW5pdGlhbC12YWx1ZXM+CisgICAgICAgICAgPHByb3BlcnR5IG5hbWU9InRleHQiIHZhbHVlPSJDaGVja0JveCIgLz4KKyAgICAgICAgPC9pbml0aWFsLXZhbHVlcz4KKyAgICAgIDwvaXRlbT4KKyAgICAgIDxpdGVtIGNsYXNzPSJqYXZheC5zd2luZy5KTGFiZWwiIGljb249Ii9jb20vaW50ZWxsaWovdWlEZXNpZ25lci9pY29ucy9sYWJlbC5wbmciIHJlbW92YWJsZT0iZmFsc2UiIGF1dG8tY3JlYXRlLWJpbmRpbmc9ImZhbHNlIiBjYW4tYXR0YWNoLWxhYmVsPSJmYWxzZSI+CisgICAgICAgIDxkZWZhdWx0LWNvbnN0cmFpbnRzIHZzaXplLXBvbGljeT0iMCIgaHNpemUtcG9saWN5PSIwIiBhbmNob3I9IjgiIGZpbGw9IjAiIC8+CisgICAgICAgIDxpbml0aWFsLXZhbHVlcz4KKyAgICAgICAgICA8cHJvcGVydHkgbmFtZT0idGV4dCIgdmFsdWU9IkxhYmVsIiAvPgorICAgICAgICA8L2luaXRpYWwtdmFsdWVzPgorICAgICAgPC9pdGVtPgorICAgICAgPGl0ZW0gY2xhc3M9ImphdmF4LnN3aW5nLkpUZXh0RmllbGQiIGljb249Ii9jb20vaW50ZWxsaWovdWlEZXNpZ25lci9pY29ucy90ZXh0RmllbGQucG5nIiByZW1vdmFibGU9ImZhbHNlIiBhdXRvLWNyZWF0ZS1iaW5kaW5nPSJ0cnVlIiBjYW4tYXR0YWNoLWxhYmVsPSJ0cnVlIj4KKyAgICAgICAgPGRlZmF1bHQtY29uc3RyYWludHMgdnNpemUtcG9saWN5PSIwIiBoc2l6ZS1wb2xpY3k9IjYiIGFuY2hvcj0iOCIgZmlsbD0iMSI+CisgICAgICAgICAgPHByZWZlcnJlZC1zaXplIHdpZHRoPSIxNTAiIGhlaWdodD0iLTEiIC8+CisgICAgICAgIDwvZGVmYXVsdC1jb25zdHJhaW50cz4KKyAgICAgIDwvaXRlbT4KKyAgICAgIDxpdGVtIGNsYXNzPSJqYXZheC5zd2luZy5KUGFzc3dvcmRGaWVsZCIgaWNvbj0iL2NvbS9pbnRlbGxpai91aURlc2lnbmVyL2ljb25zL3Bhc3N3b3JkRmllbGQucG5nIiByZW1vdmFibGU9ImZhbHNlIiBhdXRvLWNyZWF0ZS1iaW5kaW5nPSJ0cnVlIiBjYW4tYXR0YWNoLWxhYmVsPSJ0cnVlIj4KKyAgICAgICAgPGRlZmF1bHQtY29uc3RyYWludHMgdnNpemUtcG9saWN5PSIwIiBoc2l6ZS1wb2xpY3k9IjYiIGFuY2hvcj0iOCIgZmlsbD0iMSI+CisgICAgICAgICAgPHByZWZlcnJlZC1zaXplIHdpZHRoPSIxNTAiIGhlaWdodD0iLTEiIC8+CisgICAgICAgIDwvZGVmYXVsdC1jb25zdHJhaW50cz4KKyAgICAgIDwvaXRlbT4KKyAgICAgIDxpdGVtIGNsYXNzPSJqYXZheC5zd2luZy5KRm9ybWF0dGVkVGV4dEZpZWxkIiBpY29uPSIvY29tL2ludGVsbGlqL3VpRGVzaWduZXIvaWNvbnMvZm9ybWF0dGVkVGV4dEZpZWxkLnBuZyIgcmVtb3ZhYmxlPSJmYWxzZSIgYXV0by1jcmVhdGUtYmluZGluZz0idHJ1ZSIgY2FuLWF0dGFjaC1sYWJlbD0idHJ1ZSI+CisgICAgICAgIDxkZWZhdWx0LWNvbnN0cmFpbnRzIHZzaXplLXBvbGljeT0iMCIgaHNpemUtcG9saWN5PSI2IiBhbmNob3I9IjgiIGZpbGw9IjEiPgorICAgICAgICAgIDxwcmVmZXJyZWQtc2l6ZSB3aWR0aD0iMTUwIiBoZWlnaHQ9Ii0xIiAvPgorICAgICAgICA8L2RlZmF1bHQtY29uc3RyYWludHM+CisgICAgICA8L2l0ZW0+CisgICAgICA8aXRlbSBjbGFzcz0iamF2YXguc3dpbmcuSlRleHRBcmVhIiBpY29uPSIvY29tL2ludGVsbGlqL3VpRGVzaWduZXIvaWNvbnMvdGV4dEFyZWEucG5nIiByZW1vdmFibGU9ImZhbHNlIiBhdXRvLWNyZWF0ZS1iaW5kaW5nPSJ0cnVlIiBjYW4tYXR0YWNoLWxhYmVsPSJ0cnVlIj4KKyAgICAgICAgPGRlZmF1bHQtY29uc3RyYWludHMgdnNpemUtcG9saWN5PSI2IiBoc2l6ZS1wb2xpY3k9IjYiIGFuY2hvcj0iMCIgZmlsbD0iMyI+CisgICAgICAgICAgPHByZWZlcnJlZC1zaXplIHdpZHRoPSIxNTAiIGhlaWdodD0iNTAiIC8+CisgICAgICAgIDwvZGVmYXVsdC1jb25zdHJhaW50cz4KKyAgICAgIDwvaXRlbT4KKyAgICAgIDxpdGVtIGNsYXNzPSJqYXZheC5zd2luZy5KVGV4dFBhbmUiIGljb249Ii9jb20vaW50ZWxsaWovdWlEZXNpZ25lci9pY29ucy90ZXh0UGFuZS5wbmciIHJlbW92YWJsZT0iZmFsc2UiIGF1dG8tY3JlYXRlLWJpbmRpbmc9InRydWUiIGNhbi1hdHRhY2gtbGFiZWw9InRydWUiPgorICAgICAgICA8ZGVmYXVsdC1jb25zdHJhaW50cyB2c2l6ZS1wb2xpY3k9IjYiIGhzaXplLXBvbGljeT0iNiIgYW5jaG9yPSIwIiBmaWxsPSIzIj4KKyAgICAgICAgICA8cHJlZmVycmVkLXNpemUgd2lkdGg9IjE1MCIgaGVpZ2h0PSI1MCIgLz4KKyAgICAgICAgPC9kZWZhdWx0LWNvbnN0cmFpbnRzPgorICAgICAgPC9pdGVtPgorICAgICAgPGl0ZW0gY2xhc3M9ImphdmF4LnN3aW5nLkpFZGl0b3JQYW5lIiBpY29uPSIvY29tL2ludGVsbGlqL3VpRGVzaWduZXIvaWNvbnMvZWRpdG9yUGFuZS5wbmciIHJlbW92YWJsZT0iZmFsc2UiIGF1dG8tY3JlYXRlLWJpbmRpbmc9InRydWUiIGNhbi1hdHRhY2gtbGFiZWw9InRydWUiPgorICAgICAgICA8ZGVmYXVsdC1jb25zdHJhaW50cyB2c2l6ZS1wb2xpY3k9IjYiIGhzaXplLXBvbGljeT0iNiIgYW5jaG9yPSIwIiBmaWxsPSIzIj4KKyAgICAgICAgICA8cHJlZmVycmVkLXNpemUgd2lkdGg9IjE1MCIgaGVpZ2h0PSI1MCIgLz4KKyAgICAgICAgPC9kZWZhdWx0LWNvbnN0cmFpbnRzPgorICAgICAgPC9pdGVtPgorICAgICAgPGl0ZW0gY2xhc3M9ImphdmF4LnN3aW5nLkpDb21ib0JveCIgaWNvbj0iL2NvbS9pbnRlbGxpai91aURlc2lnbmVyL2ljb25zL2NvbWJvQm94LnBuZyIgcmVtb3ZhYmxlPSJmYWxzZSIgYXV0by1jcmVhdGUtYmluZGluZz0idHJ1ZSIgY2FuLWF0dGFjaC1sYWJlbD0idHJ1ZSI+CisgICAgICAgIDxkZWZhdWx0LWNvbnN0cmFpbnRzIHZzaXplLXBvbGljeT0iMCIgaHNpemUtcG9saWN5PSIyIiBhbmNob3I9IjgiIGZpbGw9IjEiIC8+CisgICAgICA8L2l0ZW0+CisgICAgICA8aXRlbSBjbGFzcz0iamF2YXguc3dpbmcuSlRhYmxlIiBpY29uPSIvY29tL2ludGVsbGlqL3VpRGVzaWduZXIvaWNvbnMvdGFibGUucG5nIiByZW1vdmFibGU9ImZhbHNlIiBhdXRvLWNyZWF0ZS1iaW5kaW5nPSJ0cnVlIiBjYW4tYXR0YWNoLWxhYmVsPSJmYWxzZSI+CisgICAgICAgIDxkZWZhdWx0LWNvbnN0cmFpbnRzIHZzaXplLXBvbGljeT0iNiIgaHNpemUtcG9saWN5PSI2IiBhbmNob3I9IjAiIGZpbGw9IjMiPgorICAgICAgICAgIDxwcmVmZXJyZWQtc2l6ZSB3aWR0aD0iMTUwIiBoZWlnaHQ9IjUwIiAvPgorICAgICAgICA8L2RlZmF1bHQtY29uc3RyYWludHM+CisgICAgICA8L2l0ZW0+CisgICAgICA8aXRlbSBjbGFzcz0iamF2YXguc3dpbmcuSkxpc3QiIGljb249Ii9jb20vaW50ZWxsaWovdWlEZXNpZ25lci9pY29ucy9saXN0LnBuZyIgcmVtb3ZhYmxlPSJmYWxzZSIgYXV0by1jcmVhdGUtYmluZGluZz0idHJ1ZSIgY2FuLWF0dGFjaC1sYWJlbD0iZmFsc2UiPgorICAgICAgICA8ZGVmYXVsdC1jb25zdHJhaW50cyB2c2l6ZS1wb2xpY3k9IjYiIGhzaXplLXBvbGljeT0iMiIgYW5jaG9yPSIwIiBmaWxsPSIzIj4KKyAgICAgICAgICA8cHJlZmVycmVkLXNpemUgd2lkdGg9IjE1MCIgaGVpZ2h0PSI1MCIgLz4KKyAgICAgICAgPC9kZWZhdWx0LWNvbnN0cmFpbnRzPgorICAgICAgPC9pdGVtPgorICAgICAgPGl0ZW0gY2xhc3M9ImphdmF4LnN3aW5nLkpUcmVlIiBpY29uPSIvY29tL2ludGVsbGlqL3VpRGVzaWduZXIvaWNvbnMvdHJlZS5wbmciIHJlbW92YWJsZT0iZmFsc2UiIGF1dG8tY3JlYXRlLWJpbmRpbmc9InRydWUiIGNhbi1hdHRhY2gtbGFiZWw9ImZhbHNlIj4KKyAgICAgICAgPGRlZmF1bHQtY29uc3RyYWludHMgdnNpemUtcG9saWN5PSI2IiBoc2l6ZS1wb2xpY3k9IjYiIGFuY2hvcj0iMCIgZmlsbD0iMyI+CisgICAgICAgICAgPHByZWZlcnJlZC1zaXplIHdpZHRoPSIxNTAiIGhlaWdodD0iNTAiIC8+CisgICAgICAgIDwvZGVmYXVsdC1jb25zdHJhaW50cz4KKyAgICAgIDwvaXRlbT4KKyAgICAgIDxpdGVtIGNsYXNzPSJqYXZheC5zd2luZy5KVGFiYmVkUGFuZSIgaWNvbj0iL2NvbS9pbnRlbGxpai91aURlc2lnbmVyL2ljb25zL3RhYmJlZFBhbmUucG5nIiByZW1vdmFibGU9ImZhbHNlIiBhdXRvLWNyZWF0ZS1iaW5kaW5nPSJ0cnVlIiBjYW4tYXR0YWNoLWxhYmVsPSJmYWxzZSI+CisgICAgICAgIDxkZWZhdWx0LWNvbnN0cmFpbnRzIHZzaXplLXBvbGljeT0iMyIgaHNpemUtcG9saWN5PSIzIiBhbmNob3I9IjAiIGZpbGw9IjMiPgorICAgICAgICAgIDxwcmVmZXJyZWQtc2l6ZSB3aWR0aD0iMjAwIiBoZWlnaHQ9IjIwMCIgLz4KKyAgICAgICAgPC9kZWZhdWx0LWNvbnN0cmFpbnRzPgorICAgICAgPC9pdGVtPgorICAgICAgPGl0ZW0gY2xhc3M9ImphdmF4LnN3aW5nLkpTcGxpdFBhbmUiIGljb249Ii9jb20vaW50ZWxsaWovdWlEZXNpZ25lci9pY29ucy9zcGxpdFBhbmUucG5nIiByZW1vdmFibGU9ImZhbHNlIiBhdXRvLWNyZWF0ZS1iaW5kaW5nPSJmYWxzZSIgY2FuLWF0dGFjaC1sYWJlbD0iZmFsc2UiPgorICAgICAgICA8ZGVmYXVsdC1jb25zdHJhaW50cyB2c2l6ZS1wb2xpY3k9IjMiIGhzaXplLXBvbGljeT0iMyIgYW5jaG9yPSIwIiBmaWxsPSIzIj4KKyAgICAgICAgICA8cHJlZmVycmVkLXNpemUgd2lkdGg9IjIwMCIgaGVpZ2h0PSIyMDAiIC8+CisgICAgICAgIDwvZGVmYXVsdC1jb25zdHJhaW50cz4KKyAgICAgIDwvaXRlbT4KKyAgICAgIDxpdGVtIGNsYXNzPSJqYXZheC5zd2luZy5KU3Bpbm5lciIgaWNvbj0iL2NvbS9pbnRlbGxpai91aURlc2lnbmVyL2ljb25zL3NwaW5uZXIucG5nIiByZW1vdmFibGU9ImZhbHNlIiBhdXRvLWNyZWF0ZS1iaW5kaW5nPSJ0cnVlIiBjYW4tYXR0YWNoLWxhYmVsPSJ0cnVlIj4KKyAgICAgICAgPGRlZmF1bHQtY29uc3RyYWludHMgdnNpemUtcG9saWN5PSIwIiBoc2l6ZS1wb2xpY3k9IjYiIGFuY2hvcj0iOCIgZmlsbD0iMSIgLz4KKyAgICAgIDwvaXRlbT4KKyAgICAgIDxpdGVtIGNsYXNzPSJqYXZheC5zd2luZy5KU2xpZGVyIiBpY29uPSIvY29tL2ludGVsbGlqL3VpRGVzaWduZXIvaWNvbnMvc2xpZGVyLnBuZyIgcmVtb3ZhYmxlPSJmYWxzZSIgYXV0by1jcmVhdGUtYmluZGluZz0idHJ1ZSIgY2FuLWF0dGFjaC1sYWJlbD0iZmFsc2UiPgorICAgICAgICA8ZGVmYXVsdC1jb25zdHJhaW50cyB2c2l6ZS1wb2xpY3k9IjAiIGhzaXplLXBvbGljeT0iNiIgYW5jaG9yPSI4IiBmaWxsPSIxIiAvPgorICAgICAgPC9pdGVtPgorICAgICAgPGl0ZW0gY2xhc3M9ImphdmF4LnN3aW5nLkpTZXBhcmF0b3IiIGljb249Ii9jb20vaW50ZWxsaWovdWlEZXNpZ25lci9pY29ucy9zZXBhcmF0b3IucG5nIiByZW1vdmFibGU9ImZhbHNlIiBhdXRvLWNyZWF0ZS1iaW5kaW5nPSJmYWxzZSIgY2FuLWF0dGFjaC1sYWJlbD0iZmFsc2UiPgorICAgICAgICA8ZGVmYXVsdC1jb25zdHJhaW50cyB2c2l6ZS1wb2xpY3k9IjYiIGhzaXplLXBvbGljeT0iNiIgYW5jaG9yPSIwIiBmaWxsPSIzIiAvPgorICAgICAgPC9pdGVtPgorICAgICAgPGl0ZW0gY2xhc3M9ImphdmF4LnN3aW5nLkpQcm9ncmVzc0JhciIgaWNvbj0iL2NvbS9pbnRlbGxpai91aURlc2lnbmVyL2ljb25zL3Byb2dyZXNzYmFyLnBuZyIgcmVtb3ZhYmxlPSJmYWxzZSIgYXV0by1jcmVhdGUtYmluZGluZz0idHJ1ZSIgY2FuLWF0dGFjaC1sYWJlbD0iZmFsc2UiPgorICAgICAgICA8ZGVmYXVsdC1jb25zdHJhaW50cyB2c2l6ZS1wb2xpY3k9IjAiIGhzaXplLXBvbGljeT0iNiIgYW5jaG9yPSIwIiBmaWxsPSIxIiAvPgorICAgICAgPC9pdGVtPgorICAgICAgPGl0ZW0gY2xhc3M9ImphdmF4LnN3aW5nLkpUb29sQmFyIiBpY29uPSIvY29tL2ludGVsbGlqL3VpRGVzaWduZXIvaWNvbnMvdG9vbGJhci5wbmciIHJlbW92YWJsZT0iZmFsc2UiIGF1dG8tY3JlYXRlLWJpbmRpbmc9ImZhbHNlIiBjYW4tYXR0YWNoLWxhYmVsPSJmYWxzZSI+CisgICAgICAgIDxkZWZhdWx0LWNvbnN0cmFpbnRzIHZzaXplLXBvbGljeT0iMCIgaHNpemUtcG9saWN5PSI2IiBhbmNob3I9IjAiIGZpbGw9IjEiPgorICAgICAgICAgIDxwcmVmZXJyZWQtc2l6ZSB3aWR0aD0iLTEiIGhlaWdodD0iMjAiIC8+CisgICAgICAgIDwvZGVmYXVsdC1jb25zdHJhaW50cz4KKyAgICAgIDwvaXRlbT4KKyAgICAgIDxpdGVtIGNsYXNzPSJqYXZheC5zd2luZy5KVG9vbEJhciRTZXBhcmF0b3IiIGljb249Ii9jb20vaW50ZWxsaWovdWlEZXNpZ25lci9pY29ucy90b29sYmFyU2VwYXJhdG9yLnBuZyIgcmVtb3ZhYmxlPSJmYWxzZSIgYXV0by1jcmVhdGUtYmluZGluZz0iZmFsc2UiIGNhbi1hdHRhY2gtbGFiZWw9ImZhbHNlIj4KKyAgICAgICAgPGRlZmF1bHQtY29uc3RyYWludHMgdnNpemUtcG9saWN5PSIwIiBoc2l6ZS1wb2xpY3k9IjAiIGFuY2hvcj0iMCIgZmlsbD0iMSIgLz4KKyAgICAgIDwvaXRlbT4KKyAgICAgIDxpdGVtIGNsYXNzPSJqYXZheC5zd2luZy5KU2Nyb2xsQmFyIiBpY29uPSIvY29tL2ludGVsbGlqL3VpRGVzaWduZXIvaWNvbnMvc2Nyb2xsYmFyLnBuZyIgcmVtb3ZhYmxlPSJmYWxzZSIgYXV0by1jcmVhdGUtYmluZGluZz0idHJ1ZSIgY2FuLWF0dGFjaC1sYWJlbD0iZmFsc2UiPgorICAgICAgICA8ZGVmYXVsdC1jb25zdHJhaW50cyB2c2l6ZS1wb2xpY3k9IjYiIGhzaXplLXBvbGljeT0iMCIgYW5jaG9yPSIwIiBmaWxsPSIyIiAvPgorICAgICAgPC9pdGVtPgorICAgIDwvZ3JvdXA+CisgIDwvY29tcG9uZW50PgorICA8Y29tcG9uZW50IG5hbWU9IlByb2plY3RNb2R1bGVNYW5hZ2VyIj4KKyAgICA8bW9kdWxlcz4KKyAgICAgIDxtb2R1bGUgZmlsZXVybD0iZmlsZTovLyRQUk9KRUNUX0RJUiQvTW9kZWwuaW1sIiBmaWxlcGF0aD0iJFBST0pFQ1RfRElSJC9Nb2RlbC5pbWwiIC8+CisgICAgPC9tb2R1bGVzPgorICA8L2NvbXBvbmVudD4KKyAgPGNvbXBvbmVudCBuYW1lPSJQcm9qZWN0Um9vdE1hbmFnZXIiIHZlcnNpb249IjIiIGxhbmd1YWdlTGV2ZWw9IkpES18xXzYiIGFzc2VydC1rZXl3b3JkPSJ0cnVlIiBqZGstMTU9InRydWUiIHByb2plY3QtamRrLW5hbWU9IjEuNyAoMSkiIHByb2plY3QtamRrLXR5cGU9IkphdmFTREsiPgorICAgIDxvdXRwdXQgdXJsPSJmaWxlOi8vJFBST0pFQ1RfRElSJC9vdXQiIC8+CisgIDwvY29tcG9uZW50PgorICA8Y29tcG9uZW50IG5hbWU9IlZjc0RpcmVjdG9yeU1hcHBpbmdzIj4KKyAgICA8bWFwcGluZyBkaXJlY3Rvcnk9IiIgdmNzPSIiIC8+CisgIDwvY29tcG9uZW50PgorICA8Y29tcG9uZW50IG5hbWU9IldlYlNlcnZpY2VzUGx1Z2luIiBhZGRSZXF1aXJlZExpYnJhcmllcz0idHJ1ZSIgLz4KKyAgPGNvbXBvbmVudCBuYW1lPSJtYXN0ZXJEZXRhaWxzIj4KKyAgICA8c3RhdGVzPgorICAgICAgPHN0YXRlIGtleT0iUHJvamVjdEpES3MuVUkiPgorICAgICAgICA8c2V0dGluZ3M+CisgICAgICAgICAgPGxhc3QtZWRpdGVkPjEuNjwvbGFzdC1lZGl0ZWQ+CisgICAgICAgICAgPHNwbGl0dGVyLXByb3BvcnRpb25zPgorICAgICAgICAgICAgPG9wdGlvbiBuYW1lPSJwcm9wb3J0aW9ucyI+CisgICAgICAgICAgICAgIDxsaXN0PgorICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9IjAuMiIgLz4KKyAgICAgICAgICAgICAgPC9saXN0PgorICAgICAgICAgICAgPC9vcHRpb24+CisgICAgICAgICAgPC9zcGxpdHRlci1wcm9wb3J0aW9ucz4KKyAgICAgICAgPC9zZXR0aW5ncz4KKyAgICAgIDwvc3RhdGU+CisgICAgPC9zdGF0ZXM+CisgIDwvY29tcG9uZW50PgorPC9wcm9qZWN0PgorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvbW9kZWwvbW9kZWwuaXdzIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL21vZGVsL21vZGVsLml3cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yOWI1OTM3OQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9tb2RlbC9tb2RlbC5pd3MKQEAgLTAsMCArMSwzNDAgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8cHJvamVjdCB2ZXJzaW9uPSI0Ij4KKyAgPGNvbXBvbmVudCBuYW1lPSJDaGFuZ2VMaXN0TWFuYWdlciI+CisgICAgPGxpc3QgZGVmYXVsdD0idHJ1ZSIgaWQ9IjBjM2M3NGFlLTM4MWUtNGQ3MS05ZjgwLTQzNTZhMmExNjM4YSIgbmFtZT0iRGVmYXVsdCIgY29tbWVudD0iIiAvPgorICAgIDxpZ25vcmVkIHBhdGg9Im1vZGVsLml3cyIgLz4KKyAgICA8aWdub3JlZCBwYXRoPSIuaWRlYS93b3Jrc3BhY2UueG1sIiAvPgorICAgIDxvcHRpb24gbmFtZT0iVFJBQ0tJTkdfRU5BQkxFRCIgdmFsdWU9InRydWUiIC8+CisgICAgPG9wdGlvbiBuYW1lPSJTSE9XX0RJQUxPRyIgdmFsdWU9ImZhbHNlIiAvPgorICAgIDxvcHRpb24gbmFtZT0iSElHSExJR0hUX0NPTkZMSUNUUyIgdmFsdWU9InRydWUiIC8+CisgICAgPG9wdGlvbiBuYW1lPSJISUdITElHSFRfTk9OX0FDVElWRV9DSEFOR0VMSVNUIiB2YWx1ZT0iZmFsc2UiIC8+CisgICAgPG9wdGlvbiBuYW1lPSJMQVNUX1JFU09MVVRJT04iIHZhbHVlPSJJR05PUkUiIC8+CisgIDwvY29tcG9uZW50PgorICA8Y29tcG9uZW50IG5hbWU9IkNoYW5nZXNWaWV3TWFuYWdlciIgZmxhdHRlbmVkX3ZpZXc9InRydWUiIHNob3dfaWdub3JlZD0iZmFsc2UiIC8+CisgIDxjb21wb25lbnQgbmFtZT0iQ3JlYXRlUGF0Y2hDb21taXRFeGVjdXRvciI+CisgICAgPG9wdGlvbiBuYW1lPSJQQVRDSF9QQVRIIiB2YWx1ZT0iIiAvPgorICAgIDxvcHRpb24gbmFtZT0iUkVWRVJTRV9QQVRDSCIgdmFsdWU9ImZhbHNlIiAvPgorICA8L2NvbXBvbmVudD4KKyAgPGNvbXBvbmVudCBuYW1lPSJEYWVtb25Db2RlQW5hbHl6ZXIiPgorICAgIDxkaXNhYmxlX2hpbnRzIC8+CisgIDwvY29tcG9uZW50PgorICA8Y29tcG9uZW50IG5hbWU9IkRlYnVnZ2VyTWFuYWdlciI+CisgICAgPGJyZWFrcG9pbnRfYW55PgorICAgICAgPGJyZWFrcG9pbnQ+CisgICAgICAgIDxvcHRpb24gbmFtZT0iTk9USUZZX0NBVUdIVCIgdmFsdWU9InRydWUiIC8+CisgICAgICAgIDxvcHRpb24gbmFtZT0iTk9USUZZX1VOQ0FVR0hUIiB2YWx1ZT0idHJ1ZSIgLz4KKyAgICAgICAgPG9wdGlvbiBuYW1lPSJFTkFCTEVEIiB2YWx1ZT0iZmFsc2UiIC8+CisgICAgICAgIDxvcHRpb24gbmFtZT0iTE9HX0VOQUJMRUQiIHZhbHVlPSJmYWxzZSIgLz4KKyAgICAgICAgPG9wdGlvbiBuYW1lPSJMT0dfRVhQUkVTU0lPTl9FTkFCTEVEIiB2YWx1ZT0iZmFsc2UiIC8+CisgICAgICAgIDxvcHRpb24gbmFtZT0iU1VTUEVORF9QT0xJQ1kiIHZhbHVlPSJTdXNwZW5kQWxsIiAvPgorICAgICAgICA8b3B0aW9uIG5hbWU9IkNPVU5UX0ZJTFRFUl9FTkFCTEVEIiB2YWx1ZT0iZmFsc2UiIC8+CisgICAgICAgIDxvcHRpb24gbmFtZT0iQ09VTlRfRklMVEVSIiB2YWx1ZT0iMCIgLz4KKyAgICAgICAgPG9wdGlvbiBuYW1lPSJDT05ESVRJT05fRU5BQkxFRCIgdmFsdWU9ImZhbHNlIiAvPgorICAgICAgICA8b3B0aW9uIG5hbWU9IkNMQVNTX0ZJTFRFUlNfRU5BQkxFRCIgdmFsdWU9ImZhbHNlIiAvPgorICAgICAgICA8b3B0aW9uIG5hbWU9IklOU1RBTkNFX0ZJTFRFUlNfRU5BQkxFRCIgdmFsdWU9ImZhbHNlIiAvPgorICAgICAgICA8b3B0aW9uIG5hbWU9IkNPTkRJVElPTiIgdmFsdWU9IiIgLz4KKyAgICAgICAgPG9wdGlvbiBuYW1lPSJMT0dfTUVTU0FHRSIgdmFsdWU9IiIgLz4KKyAgICAgIDwvYnJlYWtwb2ludD4KKyAgICAgIDxicmVha3BvaW50PgorICAgICAgICA8b3B0aW9uIG5hbWU9Ik5PVElGWV9DQVVHSFQiIHZhbHVlPSJ0cnVlIiAvPgorICAgICAgICA8b3B0aW9uIG5hbWU9Ik5PVElGWV9VTkNBVUdIVCIgdmFsdWU9InRydWUiIC8+CisgICAgICAgIDxvcHRpb24gbmFtZT0iRU5BQkxFRCIgdmFsdWU9ImZhbHNlIiAvPgorICAgICAgICA8b3B0aW9uIG5hbWU9IkxPR19FTkFCTEVEIiB2YWx1ZT0iZmFsc2UiIC8+CisgICAgICAgIDxvcHRpb24gbmFtZT0iTE9HX0VYUFJFU1NJT05fRU5BQkxFRCIgdmFsdWU9ImZhbHNlIiAvPgorICAgICAgICA8b3B0aW9uIG5hbWU9IlNVU1BFTkRfUE9MSUNZIiB2YWx1ZT0iU3VzcGVuZEFsbCIgLz4KKyAgICAgICAgPG9wdGlvbiBuYW1lPSJDT1VOVF9GSUxURVJfRU5BQkxFRCIgdmFsdWU9ImZhbHNlIiAvPgorICAgICAgICA8b3B0aW9uIG5hbWU9IkNPVU5UX0ZJTFRFUiIgdmFsdWU9IjAiIC8+CisgICAgICAgIDxvcHRpb24gbmFtZT0iQ09ORElUSU9OX0VOQUJMRUQiIHZhbHVlPSJmYWxzZSIgLz4KKyAgICAgICAgPG9wdGlvbiBuYW1lPSJDTEFTU19GSUxURVJTX0VOQUJMRUQiIHZhbHVlPSJmYWxzZSIgLz4KKyAgICAgICAgPG9wdGlvbiBuYW1lPSJJTlNUQU5DRV9GSUxURVJTX0VOQUJMRUQiIHZhbHVlPSJmYWxzZSIgLz4KKyAgICAgICAgPG9wdGlvbiBuYW1lPSJDT05ESVRJT04iIHZhbHVlPSIiIC8+CisgICAgICAgIDxvcHRpb24gbmFtZT0iTE9HX01FU1NBR0UiIHZhbHVlPSIiIC8+CisgICAgICA8L2JyZWFrcG9pbnQ+CisgICAgPC9icmVha3BvaW50X2FueT4KKyAgICA8YnJlYWtwb2ludF9ydWxlcyAvPgorICAgIDx1aV9wcm9wZXJ0aWVzIC8+CisgIDwvY29tcG9uZW50PgorICA8Y29tcG9uZW50IG5hbWU9IkZhdm9yaXRlc01hbmFnZXIiPgorICAgIDxmYXZvcml0ZXNfbGlzdCBuYW1lPSJtb2RlbCIgLz4KKyAgPC9jb21wb25lbnQ+CisgIDxjb21wb25lbnQgbmFtZT0iRmlsZUVkaXRvck1hbmFnZXIiPgorICAgIDxsZWFmPgorICAgICAgPGZpbGUgbGVhZi1maWxlLW5hbWU9IkFDbGFzcy5qYXZhIiBwaW5uZWQ9ImZhbHNlIiBjdXJyZW50PSJ0cnVlIiBjdXJyZW50LWluLXRhYj0idHJ1ZSI+CisgICAgICAgIDxlbnRyeSBmaWxlPSJmaWxlOi8vJFBST0pFQ1RfRElSJC9zcmMveC9BQ2xhc3MuamF2YSI+CisgICAgICAgICAgPHByb3ZpZGVyIHNlbGVjdGVkPSJ0cnVlIiBlZGl0b3ItdHlwZS1pZD0idGV4dC1lZGl0b3IiPgorICAgICAgICAgICAgPHN0YXRlIGxpbmU9IjMiIGNvbHVtbj0iNDkiIHNlbGVjdGlvbi1zdGFydD0iMzUiIHNlbGVjdGlvbi1lbmQ9IjM1IiB2ZXJ0aWNhbC1zY3JvbGwtcHJvcG9ydGlvbj0iMC4wMTk0MDYzOTMiPgorICAgICAgICAgICAgICA8Zm9sZGluZyAvPgorICAgICAgICAgICAgPC9zdGF0ZT4KKyAgICAgICAgICA8L3Byb3ZpZGVyPgorICAgICAgICA8L2VudHJ5PgorICAgICAgPC9maWxlPgorICAgIDwvbGVhZj4KKyAgPC9jb21wb25lbnQ+CisgIDxjb21wb25lbnQgbmFtZT0iR2l0LlNldHRpbmdzIj4KKyAgICA8b3B0aW9uIG5hbWU9IkNIRUNLT1VUX0lOQ0xVREVfVEFHUyIgdmFsdWU9ImZhbHNlIiAvPgorICAgIDxvcHRpb24gbmFtZT0iVVBEQVRFX0NIQU5HRVNfUE9MSUNZIiB2YWx1ZT0iU1RBU0giIC8+CisgICAgPG9wdGlvbiBuYW1lPSJMSU5FX1NFUEFSQVRPUlNfQ09OVkVSU0lPTiIgdmFsdWU9IkFTSyIgLz4KKyAgPC9jb21wb25lbnQ+CisgIDxjb21wb25lbnQgbmFtZT0iUHJvamVjdEZyYW1lQm91bmRzIj4KKyAgICA8b3B0aW9uIG5hbWU9IngiIHZhbHVlPSIxMjc2IiAvPgorICAgIDxvcHRpb24gbmFtZT0ieSIgdmFsdWU9Ii00IiAvPgorICAgIDxvcHRpb24gbmFtZT0id2lkdGgiIHZhbHVlPSIxMjg4IiAvPgorICAgIDxvcHRpb24gbmFtZT0iaGVpZ2h0IiB2YWx1ZT0iMTAzMiIgLz4KKyAgPC9jb21wb25lbnQ+CisgIDxjb21wb25lbnQgbmFtZT0iUHJvamVjdExldmVsVmNzTWFuYWdlciIgc2V0dGluZ3NFZGl0ZWRNYW51YWxseT0iZmFsc2UiPgorICAgIDxPcHRpb25zU2V0dGluZyB2YWx1ZT0idHJ1ZSIgaWQ9IkFkZCIgLz4KKyAgICA8T3B0aW9uc1NldHRpbmcgdmFsdWU9InRydWUiIGlkPSJSZW1vdmUiIC8+CisgICAgPE9wdGlvbnNTZXR0aW5nIHZhbHVlPSJ0cnVlIiBpZD0iQ2hlY2tvdXQiIC8+CisgICAgPE9wdGlvbnNTZXR0aW5nIHZhbHVlPSJ0cnVlIiBpZD0iVXBkYXRlIiAvPgorICAgIDxPcHRpb25zU2V0dGluZyB2YWx1ZT0idHJ1ZSIgaWQ9IlN0YXR1cyIgLz4KKyAgICA8T3B0aW9uc1NldHRpbmcgdmFsdWU9InRydWUiIGlkPSJFZGl0IiAvPgorICAgIDxDb25maXJtYXRpb25zU2V0dGluZyB2YWx1ZT0iMCIgaWQ9IkFkZCIgLz4KKyAgICA8Q29uZmlybWF0aW9uc1NldHRpbmcgdmFsdWU9IjAiIGlkPSJSZW1vdmUiIC8+CisgIDwvY29tcG9uZW50PgorICA8Y29tcG9uZW50IG5hbWU9IlByb2plY3RSZWxvYWRTdGF0ZSI+CisgICAgPG9wdGlvbiBuYW1lPSJTVEFURSIgdmFsdWU9IjAiIC8+CisgIDwvY29tcG9uZW50PgorICA8Y29tcG9uZW50IG5hbWU9IlByb2plY3RWaWV3Ij4KKyAgICA8bmF2aWdhdG9yIGN1cnJlbnRWaWV3PSJQcm9qZWN0UGFuZSIgcHJvcG9ydGlvbnM9IiIgdmVyc2lvbj0iMSIgc3BsaXR0ZXJQcm9wb3J0aW9uPSIwLjUiPgorICAgICAgPGZsYXR0ZW5QYWNrYWdlcyAvPgorICAgICAgPHNob3dNZW1iZXJzIC8+CisgICAgICA8c2hvd01vZHVsZXMgLz4KKyAgICAgIDxzaG93TGlicmFyeUNvbnRlbnRzIC8+CisgICAgICA8aGlkZUVtcHR5UGFja2FnZXMgLz4KKyAgICAgIDxhYmJyZXZpYXRlUGFja2FnZU5hbWVzIC8+CisgICAgICA8YXV0b3Njcm9sbFRvU291cmNlIC8+CisgICAgICA8YXV0b3Njcm9sbEZyb21Tb3VyY2UgLz4KKyAgICAgIDxzb3J0QnlUeXBlIC8+CisgICAgPC9uYXZpZ2F0b3I+CisgICAgPHBhbmVzPgorICAgICAgPHBhbmUgaWQ9IlByb2plY3RQYW5lIj4KKyAgICAgICAgPHN1YlBhbmU+CisgICAgICAgICAgPFBBVEg+CisgICAgICAgICAgICA8UEFUSF9FTEVNRU5UPgorICAgICAgICAgICAgICA8b3B0aW9uIG5hbWU9Im15SXRlbUlkIiB2YWx1ZT0ibW9kZWwiIC8+CisgICAgICAgICAgICAgIDxvcHRpb24gbmFtZT0ibXlJdGVtVHlwZSIgdmFsdWU9ImNvbS5pbnRlbGxpai5pZGUucHJvamVjdFZpZXcuaW1wbC5ub2Rlcy5Qcm9qZWN0Vmlld1Byb2plY3ROb2RlIiAvPgorICAgICAgICAgICAgPC9QQVRIX0VMRU1FTlQ+CisgICAgICAgICAgPC9QQVRIPgorICAgICAgICAgIDxQQVRIPgorICAgICAgICAgICAgPFBBVEhfRUxFTUVOVD4KKyAgICAgICAgICAgICAgPG9wdGlvbiBuYW1lPSJteUl0ZW1JZCIgdmFsdWU9Im1vZGVsIiAvPgorICAgICAgICAgICAgICA8b3B0aW9uIG5hbWU9Im15SXRlbVR5cGUiIHZhbHVlPSJjb20uaW50ZWxsaWouaWRlLnByb2plY3RWaWV3LmltcGwubm9kZXMuUHJvamVjdFZpZXdQcm9qZWN0Tm9kZSIgLz4KKyAgICAgICAgICAgIDwvUEFUSF9FTEVNRU5UPgorICAgICAgICAgICAgPFBBVEhfRUxFTUVOVD4KKyAgICAgICAgICAgICAgPG9wdGlvbiBuYW1lPSJteUl0ZW1JZCIgdmFsdWU9Im1vZGVsIiAvPgorICAgICAgICAgICAgICA8b3B0aW9uIG5hbWU9Im15SXRlbVR5cGUiIHZhbHVlPSJjb20uaW50ZWxsaWouaWRlLnByb2plY3RWaWV3LmltcGwubm9kZXMuUHNpRGlyZWN0b3J5Tm9kZSIgLz4KKyAgICAgICAgICAgIDwvUEFUSF9FTEVNRU5UPgorICAgICAgICAgIDwvUEFUSD4KKyAgICAgICAgICA8UEFUSD4KKyAgICAgICAgICAgIDxQQVRIX0VMRU1FTlQ+CisgICAgICAgICAgICAgIDxvcHRpb24gbmFtZT0ibXlJdGVtSWQiIHZhbHVlPSJtb2RlbCIgLz4KKyAgICAgICAgICAgICAgPG9wdGlvbiBuYW1lPSJteUl0ZW1UeXBlIiB2YWx1ZT0iY29tLmludGVsbGlqLmlkZS5wcm9qZWN0Vmlldy5pbXBsLm5vZGVzLlByb2plY3RWaWV3UHJvamVjdE5vZGUiIC8+CisgICAgICAgICAgICA8L1BBVEhfRUxFTUVOVD4KKyAgICAgICAgICAgIDxQQVRIX0VMRU1FTlQ+CisgICAgICAgICAgICAgIDxvcHRpb24gbmFtZT0ibXlJdGVtSWQiIHZhbHVlPSJtb2RlbCIgLz4KKyAgICAgICAgICAgICAgPG9wdGlvbiBuYW1lPSJteUl0ZW1UeXBlIiB2YWx1ZT0iY29tLmludGVsbGlqLmlkZS5wcm9qZWN0Vmlldy5pbXBsLm5vZGVzLlBzaURpcmVjdG9yeU5vZGUiIC8+CisgICAgICAgICAgICA8L1BBVEhfRUxFTUVOVD4KKyAgICAgICAgICAgIDxQQVRIX0VMRU1FTlQ+CisgICAgICAgICAgICAgIDxvcHRpb24gbmFtZT0ibXlJdGVtSWQiIHZhbHVlPSJzcmMiIC8+CisgICAgICAgICAgICAgIDxvcHRpb24gbmFtZT0ibXlJdGVtVHlwZSIgdmFsdWU9ImNvbS5pbnRlbGxpai5pZGUucHJvamVjdFZpZXcuaW1wbC5ub2Rlcy5Qc2lEaXJlY3RvcnlOb2RlIiAvPgorICAgICAgICAgICAgPC9QQVRIX0VMRU1FTlQ+CisgICAgICAgICAgICA8UEFUSF9FTEVNRU5UPgorICAgICAgICAgICAgICA8b3B0aW9uIG5hbWU9Im15SXRlbUlkIiB2YWx1ZT0ieCIgLz4KKyAgICAgICAgICAgICAgPG9wdGlvbiBuYW1lPSJteUl0ZW1UeXBlIiB2YWx1ZT0iY29tLmludGVsbGlqLmlkZS5wcm9qZWN0Vmlldy5pbXBsLm5vZGVzLlBzaURpcmVjdG9yeU5vZGUiIC8+CisgICAgICAgICAgICA8L1BBVEhfRUxFTUVOVD4KKyAgICAgICAgICA8L1BBVEg+CisgICAgICAgIDwvc3ViUGFuZT4KKyAgICAgIDwvcGFuZT4KKyAgICAgIDxwYW5lIGlkPSJTY29wZSIgLz4KKyAgICAgIDxwYW5lIGlkPSJQYWNrYWdlc1BhbmUiIC8+CisgICAgPC9wYW5lcz4KKyAgPC9jb21wb25lbnQ+CisgIDxjb21wb25lbnQgbmFtZT0iUHJvcGVydGllc0NvbXBvbmVudCI+CisgICAgPHByb3BlcnR5IG5hbWU9IkdvVG9GaWxlLmluY2x1ZGVKYXZhRmlsZXMiIHZhbHVlPSJmYWxzZSIgLz4KKyAgICA8cHJvcGVydHkgbmFtZT0iR29Ub0NsYXNzLnRvU2F2ZUluY2x1ZGVMaWJyYXJpZXMiIHZhbHVlPSJmYWxzZSIgLz4KKyAgICA8cHJvcGVydHkgbmFtZT0iV2ViU2VydmVyVG9vbFdpbmRvd0ZhY3RvcnlTdGF0ZSIgdmFsdWU9ImZhbHNlIiAvPgorICAgIDxwcm9wZXJ0eSBuYW1lPSJNZW1iZXJDaG9vc2VyLnNvcnRlZCIgdmFsdWU9ImZhbHNlIiAvPgorICAgIDxwcm9wZXJ0eSBuYW1lPSJNZW1iZXJDaG9vc2VyLnNob3dDbGFzc2VzIiB2YWx1ZT0idHJ1ZSIgLz4KKyAgICA8cHJvcGVydHkgbmFtZT0iR29Ub0NsYXNzLmluY2x1ZGVMaWJyYXJpZXMiIHZhbHVlPSJmYWxzZSIgLz4KKyAgICA8cHJvcGVydHkgbmFtZT0iTWVtYmVyQ2hvb3Nlci5jb3B5SmF2YWRvYyIgdmFsdWU9ImZhbHNlIiAvPgorICA8L2NvbXBvbmVudD4KKyAgPGNvbXBvbmVudCBuYW1lPSJSdW5NYW5hZ2VyIj4KKyAgICA8Y29uZmlndXJhdGlvbiBkZWZhdWx0PSJ0cnVlIiB0eXBlPSIjb3JnLmpldGJyYWlucy5pZGVhLmRldmtpdC5ydW4uUGx1Z2luQ29uZmlndXJhdGlvblR5cGUiIGZhY3RvcnlOYW1lPSJQbHVnaW4iPgorICAgICAgPG1vZHVsZSBuYW1lPSIiIC8+CisgICAgICA8b3B0aW9uIG5hbWU9IlZNX1BBUkFNRVRFUlMiIHZhbHVlPSItWG14NTEybSAtWG1zMjU2bSAtWFg6TWF4UGVybVNpemU9MjUwbSIgLz4KKyAgICAgIDxvcHRpb24gbmFtZT0iUFJPR1JBTV9QQVJBTUVURVJTIiAvPgorICAgICAgPG1ldGhvZD4KKyAgICAgICAgPG9wdGlvbiBuYW1lPSJCdWlsZEFydGlmYWN0cyIgZW5hYmxlZD0iZmFsc2UiIC8+CisgICAgICAgIDxvcHRpb24gbmFtZT0iTWFrZSIgZW5hYmxlZD0idHJ1ZSIgLz4KKyAgICAgICAgPG9wdGlvbiBuYW1lPSJNYXZlbi5CZWZvcmVSdW5UYXNrIiBlbmFibGVkPSJmYWxzZSIgLz4KKyAgICAgICAgPG9wdGlvbiBuYW1lPSJQaGluZ1RhcmdldCIgZW5hYmxlZD0iZmFsc2UiIC8+CisgICAgICA8L21ldGhvZD4KKyAgICA8L2NvbmZpZ3VyYXRpb24+CisgICAgPGNvbmZpZ3VyYXRpb24gZGVmYXVsdD0idHJ1ZSIgdHlwZT0iUmVtb3RlIiBmYWN0b3J5TmFtZT0iUmVtb3RlIj4KKyAgICAgIDxvcHRpb24gbmFtZT0iVVNFX1NPQ0tFVF9UUkFOU1BPUlQiIHZhbHVlPSJ0cnVlIiAvPgorICAgICAgPG9wdGlvbiBuYW1lPSJTRVJWRVJfTU9ERSIgdmFsdWU9ImZhbHNlIiAvPgorICAgICAgPG9wdGlvbiBuYW1lPSJTSE1FTV9BRERSRVNTIiB2YWx1ZT0iamF2YWRlYnVnIiAvPgorICAgICAgPG9wdGlvbiBuYW1lPSJIT1NUIiB2YWx1ZT0ibG9jYWxob3N0IiAvPgorICAgICAgPG9wdGlvbiBuYW1lPSJQT1JUIiB2YWx1ZT0iNTAwNSIgLz4KKyAgICAgIDxtZXRob2Q+CisgICAgICAgIDxvcHRpb24gbmFtZT0iQnVpbGRBcnRpZmFjdHMiIGVuYWJsZWQ9ImZhbHNlIiAvPgorICAgICAgICA8b3B0aW9uIG5hbWU9Ik1hdmVuLkJlZm9yZVJ1blRhc2siIGVuYWJsZWQ9ImZhbHNlIiAvPgorICAgICAgPC9tZXRob2Q+CisgICAgPC9jb25maWd1cmF0aW9uPgorICAgIDxjb25maWd1cmF0aW9uIGRlZmF1bHQ9InRydWUiIHR5cGU9IkFwcGxldCIgZmFjdG9yeU5hbWU9IkFwcGxldCI+CisgICAgICA8bW9kdWxlIG5hbWU9IiIgLz4KKyAgICAgIDxvcHRpb24gbmFtZT0iTUFJTl9DTEFTU19OQU1FIiAvPgorICAgICAgPG9wdGlvbiBuYW1lPSJIVE1MX0ZJTEVfTkFNRSIgLz4KKyAgICAgIDxvcHRpb24gbmFtZT0iSFRNTF9VU0VEIiB2YWx1ZT0iZmFsc2UiIC8+CisgICAgICA8b3B0aW9uIG5hbWU9IldJRFRIIiB2YWx1ZT0iNDAwIiAvPgorICAgICAgPG9wdGlvbiBuYW1lPSJIRUlHSFQiIHZhbHVlPSIzMDAiIC8+CisgICAgICA8b3B0aW9uIG5hbWU9IlBPTElDWV9GSUxFIiB2YWx1ZT0iJEFQUExJQ0FUSU9OX0hPTUVfRElSJC9iaW4vYXBwbGV0dmlld2VyLnBvbGljeSIgLz4KKyAgICAgIDxvcHRpb24gbmFtZT0iVk1fUEFSQU1FVEVSUyIgLz4KKyAgICAgIDxvcHRpb24gbmFtZT0iQUxURVJOQVRJVkVfSlJFX1BBVEhfRU5BQkxFRCIgdmFsdWU9ImZhbHNlIiAvPgorICAgICAgPG9wdGlvbiBuYW1lPSJBTFRFUk5BVElWRV9KUkVfUEFUSCIgLz4KKyAgICAgIDxtZXRob2Q+CisgICAgICAgIDxvcHRpb24gbmFtZT0iQnVpbGRBcnRpZmFjdHMiIGVuYWJsZWQ9ImZhbHNlIiAvPgorICAgICAgICA8b3B0aW9uIG5hbWU9Ik1ha2UiIGVuYWJsZWQ9InRydWUiIC8+CisgICAgICAgIDxvcHRpb24gbmFtZT0iTWF2ZW4uQmVmb3JlUnVuVGFzayIgZW5hYmxlZD0iZmFsc2UiIC8+CisgICAgICAgIDxvcHRpb24gbmFtZT0iUGhpbmdUYXJnZXQiIGVuYWJsZWQ9ImZhbHNlIiAvPgorICAgICAgPC9tZXRob2Q+CisgICAgPC9jb25maWd1cmF0aW9uPgorICAgIDxjb25maWd1cmF0aW9uIGRlZmF1bHQ9InRydWUiIHR5cGU9IkFwcGxpY2F0aW9uIiBmYWN0b3J5TmFtZT0iQXBwbGljYXRpb24iPgorICAgICAgPG9wdGlvbiBuYW1lPSJNQUlOX0NMQVNTX05BTUUiIC8+CisgICAgICA8b3B0aW9uIG5hbWU9IlZNX1BBUkFNRVRFUlMiIC8+CisgICAgICA8b3B0aW9uIG5hbWU9IlBST0dSQU1fUEFSQU1FVEVSUyIgLz4KKyAgICAgIDxvcHRpb24gbmFtZT0iV09SS0lOR19ESVJFQ1RPUlkiIHZhbHVlPSIkUFJPSkVDVF9ESVIkIiAvPgorICAgICAgPG9wdGlvbiBuYW1lPSJBTFRFUk5BVElWRV9KUkVfUEFUSF9FTkFCTEVEIiB2YWx1ZT0iZmFsc2UiIC8+CisgICAgICA8b3B0aW9uIG5hbWU9IkFMVEVSTkFUSVZFX0pSRV9QQVRIIiAvPgorICAgICAgPG9wdGlvbiBuYW1lPSJFTkFCTEVfU1dJTkdfSU5TUEVDVE9SIiB2YWx1ZT0iZmFsc2UiIC8+CisgICAgICA8b3B0aW9uIG5hbWU9IkVOVl9WQVJJQUJMRVMiIC8+CisgICAgICA8b3B0aW9uIG5hbWU9IlBBU1NfUEFSRU5UX0VOVlMiIHZhbHVlPSJ0cnVlIiAvPgorICAgICAgPG1vZHVsZSBuYW1lPSIiIC8+CisgICAgICA8ZW52cyAvPgorICAgICAgPG1ldGhvZD4KKyAgICAgICAgPG9wdGlvbiBuYW1lPSJCdWlsZEFydGlmYWN0cyIgZW5hYmxlZD0iZmFsc2UiIC8+CisgICAgICAgIDxvcHRpb24gbmFtZT0iTWFrZSIgZW5hYmxlZD0idHJ1ZSIgLz4KKyAgICAgICAgPG9wdGlvbiBuYW1lPSJNYXZlbi5CZWZvcmVSdW5UYXNrIiBlbmFibGVkPSJmYWxzZSIgLz4KKyAgICAgICAgPG9wdGlvbiBuYW1lPSJQaGluZ1RhcmdldCIgZW5hYmxlZD0iZmFsc2UiIC8+CisgICAgICA8L21ldGhvZD4KKyAgICA8L2NvbmZpZ3VyYXRpb24+CisgICAgPGNvbmZpZ3VyYXRpb24gZGVmYXVsdD0idHJ1ZSIgdHlwZT0iSlVuaXQiIGZhY3RvcnlOYW1lPSJKVW5pdCI+CisgICAgICA8bW9kdWxlIG5hbWU9IiIgLz4KKyAgICAgIDxvcHRpb24gbmFtZT0iQUxURVJOQVRJVkVfSlJFX1BBVEhfRU5BQkxFRCIgdmFsdWU9ImZhbHNlIiAvPgorICAgICAgPG9wdGlvbiBuYW1lPSJBTFRFUk5BVElWRV9KUkVfUEFUSCIgLz4KKyAgICAgIDxvcHRpb24gbmFtZT0iUEFDS0FHRV9OQU1FIiAvPgorICAgICAgPG9wdGlvbiBuYW1lPSJNQUlOX0NMQVNTX05BTUUiIC8+CisgICAgICA8b3B0aW9uIG5hbWU9Ik1FVEhPRF9OQU1FIiAvPgorICAgICAgPG9wdGlvbiBuYW1lPSJURVNUX09CSkVDVCIgdmFsdWU9ImNsYXNzIiAvPgorICAgICAgPG9wdGlvbiBuYW1lPSJWTV9QQVJBTUVURVJTIiB2YWx1ZT0iLWVhIiAvPgorICAgICAgPG9wdGlvbiBuYW1lPSJQQVJBTUVURVJTIiAvPgorICAgICAgPG9wdGlvbiBuYW1lPSJXT1JLSU5HX0RJUkVDVE9SWSIgdmFsdWU9IiRQUk9KRUNUX0RJUiQiIC8+CisgICAgICA8b3B0aW9uIG5hbWU9IkVOVl9WQVJJQUJMRVMiIC8+CisgICAgICA8b3B0aW9uIG5hbWU9IlBBU1NfUEFSRU5UX0VOVlMiIHZhbHVlPSJ0cnVlIiAvPgorICAgICAgPG9wdGlvbiBuYW1lPSJURVNUX1NFQVJDSF9TQ09QRSI+CisgICAgICAgIDx2YWx1ZSBkZWZhdWx0TmFtZT0ibW9kdWxlV2l0aERlcGVuZGVuY2llcyIgLz4KKyAgICAgIDwvb3B0aW9uPgorICAgICAgPGVudnMgLz4KKyAgICAgIDxwYXR0ZXJucyAvPgorICAgICAgPG1ldGhvZD4KKyAgICAgICAgPG9wdGlvbiBuYW1lPSJCdWlsZEFydGlmYWN0cyIgZW5hYmxlZD0iZmFsc2UiIC8+CisgICAgICAgIDxvcHRpb24gbmFtZT0iTWFrZSIgZW5hYmxlZD0idHJ1ZSIgLz4KKyAgICAgICAgPG9wdGlvbiBuYW1lPSJNYXZlbi5CZWZvcmVSdW5UYXNrIiBlbmFibGVkPSJmYWxzZSIgLz4KKyAgICAgICAgPG9wdGlvbiBuYW1lPSJQaGluZ1RhcmdldCIgZW5hYmxlZD0iZmFsc2UiIC8+CisgICAgICA8L21ldGhvZD4KKyAgICA8L2NvbmZpZ3VyYXRpb24+CisgICAgPGxpc3Qgc2l6ZT0iMCIgLz4KKyAgICA8Y29uZmlndXJhdGlvbiBuYW1lPSImbHQ7dGVtcGxhdGUmZ3Q7IiB0eXBlPSJXZWJBcHAiIGRlZmF1bHQ9InRydWUiIHNlbGVjdGVkPSJmYWxzZSI+CisgICAgICA8SG9zdD5sb2NhbGhvc3Q8L0hvc3Q+CisgICAgICA8UG9ydD41MDUwPC9Qb3J0PgorICAgIDwvY29uZmlndXJhdGlvbj4KKyAgPC9jb21wb25lbnQ+CisgIDxjb21wb25lbnQgbmFtZT0iU2hlbHZlQ2hhbmdlc01hbmFnZXIiIHNob3dfcmVjeWNsZWQ9ImZhbHNlIiAvPgorICA8Y29tcG9uZW50IG5hbWU9IlRvb2xXaW5kb3dNYW5hZ2VyIj4KKyAgICA8ZnJhbWUgeD0iMTI3NiIgeT0iLTQiIHdpZHRoPSIxMjg4IiBoZWlnaHQ9IjEwMzIiIGV4dGVuZGVkLXN0YXRlPSI2IiAvPgorICAgIDxlZGl0b3IgYWN0aXZlPSJ0cnVlIiAvPgorICAgIDxsYXlvdXQ+CisgICAgICA8d2luZG93X2luZm8gaWQ9IkNoYW5nZXMiIGFjdGl2ZT0iZmFsc2UiIGFuY2hvcj0iYm90dG9tIiBhdXRvX2hpZGU9ImZhbHNlIiBpbnRlcm5hbF90eXBlPSJET0NLRUQiIHR5cGU9IkRPQ0tFRCIgdmlzaWJsZT0iZmFsc2UiIHdlaWdodD0iMC4zMyIgc2lkZVdlaWdodD0iMC41IiBvcmRlcj0iLTEiIHNpZGVfdG9vbD0iZmFsc2UiIGNvbnRlbnRfdWk9InRhYnMiIC8+CisgICAgICA8d2luZG93X2luZm8gaWQ9IlBhbGV0dGUiIGFjdGl2ZT0iZmFsc2UiIGFuY2hvcj0icmlnaHQiIGF1dG9faGlkZT0iZmFsc2UiIGludGVybmFsX3R5cGU9IkRPQ0tFRCIgdHlwZT0iRE9DS0VEIiB2aXNpYmxlPSJmYWxzZSIgd2VpZ2h0PSIwLjMzIiBzaWRlV2VpZ2h0PSIwLjUiIG9yZGVyPSItMSIgc2lkZV90b29sPSJmYWxzZSIgY29udGVudF91aT0idGFicyIgLz4KKyAgICAgIDx3aW5kb3dfaW5mbyBpZD0iRGVidWciIGFjdGl2ZT0iZmFsc2UiIGFuY2hvcj0iYm90dG9tIiBhdXRvX2hpZGU9ImZhbHNlIiBpbnRlcm5hbF90eXBlPSJET0NLRUQiIHR5cGU9IkRPQ0tFRCIgdmlzaWJsZT0iZmFsc2UiIHdlaWdodD0iMC40IiBzaWRlV2VpZ2h0PSIwLjUiIG9yZGVyPSIzIiBzaWRlX3Rvb2w9ImZhbHNlIiBjb250ZW50X3VpPSJ0YWJzIiAvPgorICAgICAgPHdpbmRvd19pbmZvIGlkPSJFdmVudCBMb2ciIGFjdGl2ZT0iZmFsc2UiIGFuY2hvcj0iYm90dG9tIiBhdXRvX2hpZGU9ImZhbHNlIiBpbnRlcm5hbF90eXBlPSJET0NLRUQiIHR5cGU9IkRPQ0tFRCIgdmlzaWJsZT0iZmFsc2UiIHdlaWdodD0iMC4zMyIgc2lkZVdlaWdodD0iMC41IiBvcmRlcj0iLTEiIHNpZGVfdG9vbD0idHJ1ZSIgY29udGVudF91aT0idGFicyIgLz4KKyAgICAgIDx3aW5kb3dfaW5mbyBpZD0iRmF2b3JpdGVzIiBhY3RpdmU9ImZhbHNlIiBhbmNob3I9ImxlZnQiIGF1dG9faGlkZT0iZmFsc2UiIGludGVybmFsX3R5cGU9IkRPQ0tFRCIgdHlwZT0iRE9DS0VEIiB2aXNpYmxlPSJmYWxzZSIgd2VpZ2h0PSIwLjMzIiBzaWRlV2VpZ2h0PSIwLjUiIG9yZGVyPSItMSIgc2lkZV90b29sPSJ0cnVlIiBjb250ZW50X3VpPSJ0YWJzIiAvPgorICAgICAgPHdpbmRvd19pbmZvIGlkPSJWZXJzaW9uIENvbnRyb2wiIGFjdGl2ZT0iZmFsc2UiIGFuY2hvcj0iYm90dG9tIiBhdXRvX2hpZGU9ImZhbHNlIiBpbnRlcm5hbF90eXBlPSJET0NLRUQiIHR5cGU9IkRPQ0tFRCIgdmlzaWJsZT0iZmFsc2UiIHdlaWdodD0iMC4zMyIgc2lkZVdlaWdodD0iMC41IiBvcmRlcj0iLTEiIHNpZGVfdG9vbD0iZmFsc2UiIGNvbnRlbnRfdWk9InRhYnMiIC8+CisgICAgICA8d2luZG93X2luZm8gaWQ9IlRPRE8iIGFjdGl2ZT0iZmFsc2UiIGFuY2hvcj0iYm90dG9tIiBhdXRvX2hpZGU9ImZhbHNlIiBpbnRlcm5hbF90eXBlPSJET0NLRUQiIHR5cGU9IkRPQ0tFRCIgdmlzaWJsZT0iZmFsc2UiIHdlaWdodD0iMC4zMyIgc2lkZVdlaWdodD0iMC41IiBvcmRlcj0iNiIgc2lkZV90b29sPSJmYWxzZSIgY29udGVudF91aT0idGFicyIgLz4KKyAgICAgIDx3aW5kb3dfaW5mbyBpZD0iUHJvZmlsZXIiIGFjdGl2ZT0iZmFsc2UiIGFuY2hvcj0iYm90dG9tIiBhdXRvX2hpZGU9ImZhbHNlIiBpbnRlcm5hbF90eXBlPSJET0NLRUQiIHR5cGU9IkRPQ0tFRCIgdmlzaWJsZT0iZmFsc2UiIHdlaWdodD0iMC4zMyIgc2lkZVdlaWdodD0iMC41IiBvcmRlcj0iLTEiIHNpZGVfdG9vbD0iZmFsc2UiIGNvbnRlbnRfdWk9InRhYnMiIC8+CisgICAgICA8d2luZG93X2luZm8gaWQ9IlN0cnVjdHVyZSIgYWN0aXZlPSJmYWxzZSIgYW5jaG9yPSJsZWZ0IiBhdXRvX2hpZGU9ImZhbHNlIiBpbnRlcm5hbF90eXBlPSJET0NLRUQiIHR5cGU9IkRPQ0tFRCIgdmlzaWJsZT0iZmFsc2UiIHdlaWdodD0iMC4yNSIgc2lkZVdlaWdodD0iMC41IiBvcmRlcj0iMSIgc2lkZV90b29sPSJ0cnVlIiBjb250ZW50X3VpPSJ0YWJzIiAvPgorICAgICAgPHdpbmRvd19pbmZvIGlkPSJNYXZlbiBQcm9qZWN0cyIgYWN0aXZlPSJmYWxzZSIgYW5jaG9yPSJyaWdodCIgYXV0b19oaWRlPSJmYWxzZSIgaW50ZXJuYWxfdHlwZT0iRE9DS0VEIiB0eXBlPSJET0NLRUQiIHZpc2libGU9ImZhbHNlIiB3ZWlnaHQ9IjAuMzMiIHNpZGVXZWlnaHQ9IjAuNSIgb3JkZXI9Ii0xIiBzaWRlX3Rvb2w9ImZhbHNlIiBjb250ZW50X3VpPSJ0YWJzIiAvPgorICAgICAgPHdpbmRvd19pbmZvIGlkPSJDb21tYW5kZXIiIGFjdGl2ZT0iZmFsc2UiIGFuY2hvcj0icmlnaHQiIGF1dG9faGlkZT0iZmFsc2UiIGludGVybmFsX3R5cGU9IkRPQ0tFRCIgdHlwZT0iRE9DS0VEIiB2aXNpYmxlPSJmYWxzZSIgd2VpZ2h0PSIwLjQiIHNpZGVXZWlnaHQ9IjAuNSIgb3JkZXI9IjAiIHNpZGVfdG9vbD0iZmFsc2UiIGNvbnRlbnRfdWk9InRhYnMiIC8+CisgICAgICA8d2luZG93X2luZm8gaWQ9IkFwcGxpY2F0aW9uIFNlcnZlcnMiIGFjdGl2ZT0iZmFsc2UiIGFuY2hvcj0iYm90dG9tIiBhdXRvX2hpZGU9ImZhbHNlIiBpbnRlcm5hbF90eXBlPSJET0NLRUQiIHR5cGU9IkRPQ0tFRCIgdmlzaWJsZT0iZmFsc2UiIHdlaWdodD0iMC4zMyIgc2lkZVdlaWdodD0iMC41IiBvcmRlcj0iLTEiIHNpZGVfdG9vbD0iZmFsc2UiIGNvbnRlbnRfdWk9InRhYnMiIC8+CisgICAgICA8d2luZG93X2luZm8gaWQ9IlByb2plY3QiIGFjdGl2ZT0iZmFsc2UiIGFuY2hvcj0ibGVmdCIgYXV0b19oaWRlPSJmYWxzZSIgaW50ZXJuYWxfdHlwZT0iRE9DS0VEIiB0eXBlPSJET0NLRUQiIHZpc2libGU9InRydWUiIHdlaWdodD0iMC4yNDk1OTM1IiBzaWRlV2VpZ2h0PSIwLjUiIG9yZGVyPSIwIiBzaWRlX3Rvb2w9ImZhbHNlIiBjb250ZW50X3VpPSJ0YWJzIiAvPgorICAgICAgPHdpbmRvd19pbmZvIGlkPSJSdW4iIGFjdGl2ZT0iZmFsc2UiIGFuY2hvcj0iYm90dG9tIiBhdXRvX2hpZGU9ImZhbHNlIiBpbnRlcm5hbF90eXBlPSJET0NLRUQiIHR5cGU9IkRPQ0tFRCIgdmlzaWJsZT0iZmFsc2UiIHdlaWdodD0iMC4zMyIgc2lkZVdlaWdodD0iMC41IiBvcmRlcj0iMiIgc2lkZV90b29sPSJmYWxzZSIgY29udGVudF91aT0idGFicyIgLz4KKyAgICAgIDx3aW5kb3dfaW5mbyBpZD0iSnNUZXN0RHJpdmVyIFNlcnZlciIgYWN0aXZlPSJmYWxzZSIgYW5jaG9yPSJib3R0b20iIGF1dG9faGlkZT0iZmFsc2UiIGludGVybmFsX3R5cGU9IkRPQ0tFRCIgdHlwZT0iRE9DS0VEIiB2aXNpYmxlPSJmYWxzZSIgd2VpZ2h0PSIwLjMzIiBzaWRlV2VpZ2h0PSIwLjUiIG9yZGVyPSItMSIgc2lkZV90b29sPSJmYWxzZSIgY29udGVudF91aT0idGFicyIgLz4KKyAgICAgIDx3aW5kb3dfaW5mbyBpZD0iQ3ZzIiBhY3RpdmU9ImZhbHNlIiBhbmNob3I9ImJvdHRvbSIgYXV0b19oaWRlPSJmYWxzZSIgaW50ZXJuYWxfdHlwZT0iRE9DS0VEIiB0eXBlPSJET0NLRUQiIHZpc2libGU9ImZhbHNlIiB3ZWlnaHQ9IjAuMjUiIHNpZGVXZWlnaHQ9IjAuNSIgb3JkZXI9IjQiIHNpZGVfdG9vbD0iZmFsc2UiIGNvbnRlbnRfdWk9InRhYnMiIC8+CisgICAgICA8d2luZG93X2luZm8gaWQ9Ik1lc3NhZ2UiIGFjdGl2ZT0iZmFsc2UiIGFuY2hvcj0iYm90dG9tIiBhdXRvX2hpZGU9ImZhbHNlIiBpbnRlcm5hbF90eXBlPSJET0NLRUQiIHR5cGU9IkRPQ0tFRCIgdmlzaWJsZT0iZmFsc2UiIHdlaWdodD0iMC4zMyIgc2lkZVdlaWdodD0iMC41IiBvcmRlcj0iMCIgc2lkZV90b29sPSJmYWxzZSIgY29udGVudF91aT0idGFicyIgLz4KKyAgICAgIDx3aW5kb3dfaW5mbyBpZD0iRmluZCIgYWN0aXZlPSJmYWxzZSIgYW5jaG9yPSJib3R0b20iIGF1dG9faGlkZT0iZmFsc2UiIGludGVybmFsX3R5cGU9IkRPQ0tFRCIgdHlwZT0iRE9DS0VEIiB2aXNpYmxlPSJmYWxzZSIgd2VpZ2h0PSIwLjMzIiBzaWRlV2VpZ2h0PSIwLjUiIG9yZGVyPSIxIiBzaWRlX3Rvb2w9ImZhbHNlIiBjb250ZW50X3VpPSJ0YWJzIiAvPgorICAgICAgPHdpbmRvd19pbmZvIGlkPSJBbnQgQnVpbGQiIGFjdGl2ZT0iZmFsc2UiIGFuY2hvcj0icmlnaHQiIGF1dG9faGlkZT0iZmFsc2UiIGludGVybmFsX3R5cGU9IkRPQ0tFRCIgdHlwZT0iRE9DS0VEIiB2aXNpYmxlPSJmYWxzZSIgd2VpZ2h0PSIwLjI1IiBzaWRlV2VpZ2h0PSIwLjUiIG9yZGVyPSIxIiBzaWRlX3Rvb2w9ImZhbHNlIiBjb250ZW50X3VpPSJ0YWJzIiAvPgorICAgICAgPHdpbmRvd19pbmZvIGlkPSJJbnNwZWN0aW9uIiBhY3RpdmU9ImZhbHNlIiBhbmNob3I9ImJvdHRvbSIgYXV0b19oaWRlPSJmYWxzZSIgaW50ZXJuYWxfdHlwZT0iRE9DS0VEIiB0eXBlPSJET0NLRUQiIHZpc2libGU9ImZhbHNlIiB3ZWlnaHQ9IjAuNCIgc2lkZVdlaWdodD0iMC41IiBvcmRlcj0iNSIgc2lkZV90b29sPSJmYWxzZSIgY29udGVudF91aT0idGFicyIgLz4KKyAgICAgIDx3aW5kb3dfaW5mbyBpZD0iSGllcmFyY2h5IiBhY3RpdmU9ImZhbHNlIiBhbmNob3I9InJpZ2h0IiBhdXRvX2hpZGU9ImZhbHNlIiBpbnRlcm5hbF90eXBlPSJET0NLRUQiIHR5cGU9IkRPQ0tFRCIgdmlzaWJsZT0iZmFsc2UiIHdlaWdodD0iMC4yNSIgc2lkZVdlaWdodD0iMC41IiBvcmRlcj0iMiIgc2lkZV90b29sPSJmYWxzZSIgY29udGVudF91aT0iY29tYm8iIC8+CisgICAgPC9sYXlvdXQ+CisgIDwvY29tcG9uZW50PgorICA8Y29tcG9uZW50IG5hbWU9IlZjc0NvbnRlbnRBbm5vdGF0aW9uU2V0dGluZ3MiPgorICAgIDxvcHRpb24gbmFtZT0ibXlMaW1pdCIgdmFsdWU9IjI2Nzg0MDAwMDAiIC8+CisgIDwvY29tcG9uZW50PgorICA8Y29tcG9uZW50IG5hbWU9IlZjc01hbmFnZXJDb25maWd1cmF0aW9uIj4KKyAgICA8b3B0aW9uIG5hbWU9Ik9GRkVSX01PVkVfVE9fQU5PVEhFUl9DSEFOR0VMSVNUX09OX1BBUlRJQUxfQ09NTUlUIiB2YWx1ZT0idHJ1ZSIgLz4KKyAgICA8b3B0aW9uIG5hbWU9IkNIRUNLX0NPREVfU01FTExTX0JFRk9SRV9QUk9KRUNUX0NPTU1JVCIgdmFsdWU9InRydWUiIC8+CisgICAgPG9wdGlvbiBuYW1lPSJDSEVDS19ORVdfVE9ETyIgdmFsdWU9InRydWUiIC8+CisgICAgPG9wdGlvbiBuYW1lPSJteVRvZG9QYW5lbFNldHRpbmdzIj4KKyAgICAgIDx2YWx1ZT4KKyAgICAgICAgPGFyZS1wYWNrYWdlcy1zaG93biB2YWx1ZT0iZmFsc2UiIC8+CisgICAgICAgIDxhcmUtbW9kdWxlcy1zaG93biB2YWx1ZT0iZmFsc2UiIC8+CisgICAgICAgIDxmbGF0dGVuLXBhY2thZ2VzIHZhbHVlPSJmYWxzZSIgLz4KKyAgICAgICAgPGlzLWF1dG9zY3JvbGwtdG8tc291cmNlIHZhbHVlPSJmYWxzZSIgLz4KKyAgICAgIDwvdmFsdWU+CisgICAgPC9vcHRpb24+CisgICAgPG9wdGlvbiBuYW1lPSJQRVJGT1JNX1VQREFURV9JTl9CQUNLR1JPVU5EIiB2YWx1ZT0idHJ1ZSIgLz4KKyAgICA8b3B0aW9uIG5hbWU9IlBFUkZPUk1fQ09NTUlUX0lOX0JBQ0tHUk9VTkQiIHZhbHVlPSJ0cnVlIiAvPgorICAgIDxvcHRpb24gbmFtZT0iUEVSRk9STV9FRElUX0lOX0JBQ0tHUk9VTkQiIHZhbHVlPSJ0cnVlIiAvPgorICAgIDxvcHRpb24gbmFtZT0iUEVSRk9STV9DSEVDS09VVF9JTl9CQUNLR1JPVU5EIiB2YWx1ZT0idHJ1ZSIgLz4KKyAgICA8b3B0aW9uIG5hbWU9IlBFUkZPUk1fQUREX1JFTU9WRV9JTl9CQUNLR1JPVU5EIiB2YWx1ZT0idHJ1ZSIgLz4KKyAgICA8b3B0aW9uIG5hbWU9IlBFUkZPUk1fUk9MTEJBQ0tfSU5fQkFDS0dST1VORCIgdmFsdWU9ImZhbHNlIiAvPgorICAgIDxvcHRpb24gbmFtZT0iQ0hFQ0tfTE9DQUxMWV9DSEFOR0VEX0NPTkZMSUNUU19JTl9CQUNLR1JPVU5EIiB2YWx1ZT0iZmFsc2UiIC8+CisgICAgPG9wdGlvbiBuYW1lPSJFTkFCTEVfQkFDS0dST1VORF9QUk9DRVNTRVMiIHZhbHVlPSJmYWxzZSIgLz4KKyAgICA8b3B0aW9uIG5hbWU9IkNIQU5HRURfT05fU0VSVkVSX0lOVEVSVkFMIiB2YWx1ZT0iNjAiIC8+CisgICAgPG9wdGlvbiBuYW1lPSJTSE9XX09OTFlfQ0hBTkdFRF9JTl9TRUxFQ1RJT05fRElGRiIgdmFsdWU9InRydWUiIC8+CisgICAgPG9wdGlvbiBuYW1lPSJDSEVDS19DT01NSVRfTUVTU0FHRV9TUEVMTElORyIgdmFsdWU9InRydWUiIC8+CisgICAgPG9wdGlvbiBuYW1lPSJERUZBVUxUX1BBVENIX0VYVEVOU0lPTiIgdmFsdWU9InBhdGNoIiAvPgorICAgIDxvcHRpb24gbmFtZT0iU0hPUlRfRElGRl9IT1JJU09OVEFMTFkiIHZhbHVlPSJ0cnVlIiAvPgorICAgIDxvcHRpb24gbmFtZT0iU0hPUlRfRElGRl9FWFRSQV9MSU5FUyIgdmFsdWU9IjIiIC8+CisgICAgPG9wdGlvbiBuYW1lPSJTT0ZUX1dSQVBTX0lOX1NIT1JUX0RJRkYiIHZhbHVlPSJ0cnVlIiAvPgorICAgIDxvcHRpb24gbmFtZT0iSU5DTFVERV9URVhUX0lOVE9fUEFUQ0giIHZhbHVlPSJmYWxzZSIgLz4KKyAgICA8b3B0aW9uIG5hbWU9IklOQ0xVREVfVEVYVF9JTlRPX1NIRUxGIiB2YWx1ZT0iZmFsc2UiIC8+CisgICAgPG9wdGlvbiBuYW1lPSJGT1JDRV9OT05fRU1QVFlfQ09NTUVOVCIgdmFsdWU9ImZhbHNlIiAvPgorICAgIDxvcHRpb24gbmFtZT0iTEFTVF9DT01NSVRfTUVTU0FHRSIgLz4KKyAgICA8b3B0aW9uIG5hbWU9Ik1BS0VfTkVXX0NIQU5HRUxJU1RfQUNUSVZFIiB2YWx1ZT0idHJ1ZSIgLz4KKyAgICA8b3B0aW9uIG5hbWU9Ik9QVElNSVpFX0lNUE9SVFNfQkVGT1JFX1BST0pFQ1RfQ09NTUlUIiB2YWx1ZT0iZmFsc2UiIC8+CisgICAgPG9wdGlvbiBuYW1lPSJDSEVDS19GSUxFU19VUF9UT19EQVRFX0JFRk9SRV9DT01NSVQiIHZhbHVlPSJmYWxzZSIgLz4KKyAgICA8b3B0aW9uIG5hbWU9IlJFRk9STUFUX0JFRk9SRV9QUk9KRUNUX0NPTU1JVCIgdmFsdWU9ImZhbHNlIiAvPgorICAgIDxvcHRpb24gbmFtZT0iUkVGT1JNQVRfQkVGT1JFX0ZJTEVfQ09NTUlUIiB2YWx1ZT0iZmFsc2UiIC8+CisgICAgPG9wdGlvbiBuYW1lPSJGSUxFX0hJU1RPUllfRElBTE9HX0NPTU1FTlRTX1NQTElUVEVSX1BST1BPUlRJT04iIHZhbHVlPSIwLjgiIC8+CisgICAgPG9wdGlvbiBuYW1lPSJGSUxFX0hJU1RPUllfRElBTE9HX1NQTElUVEVSX1BST1BPUlRJT04iIHZhbHVlPSIwLjUiIC8+CisgICAgPG9wdGlvbiBuYW1lPSJBQ1RJVkVfVkNTX05BTUUiIC8+CisgICAgPG9wdGlvbiBuYW1lPSJVUERBVEVfR1JPVVBfQllfUEFDS0FHRVMiIHZhbHVlPSJmYWxzZSIgLz4KKyAgICA8b3B0aW9uIG5hbWU9IlVQREFURV9HUk9VUF9CWV9DSEFOR0VMSVNUIiB2YWx1ZT0iZmFsc2UiIC8+CisgICAgPG9wdGlvbiBuYW1lPSJTSE9XX0ZJTEVfSElTVE9SWV9BU19UUkVFIiB2YWx1ZT0iZmFsc2UiIC8+CisgICAgPG9wdGlvbiBuYW1lPSJGSUxFX0hJU1RPUllfU1BMSVRURVJfUFJPUE9SVElPTiIgdmFsdWU9IjAuNiIgLz4KKyAgPC9jb21wb25lbnQ+CisgIDxjb21wb25lbnQgbmFtZT0iWERlYnVnZ2VyTWFuYWdlciI+CisgICAgPGJyZWFrcG9pbnQtbWFuYWdlciAvPgorICA8L2NvbXBvbmVudD4KKyAgPGNvbXBvbmVudCBuYW1lPSJlZGl0b3JIaXN0b3J5TWFuYWdlciI+CisgICAgPGVudHJ5IGZpbGU9ImZpbGU6Ly8kUFJPSkVDVF9ESVIkL3NyYy94L0FDbGFzcy5qYXZhIj4KKyAgICAgIDxwcm92aWRlciBzZWxlY3RlZD0idHJ1ZSIgZWRpdG9yLXR5cGUtaWQ9InRleHQtZWRpdG9yIj4KKyAgICAgICAgPHN0YXRlIGxpbmU9IjMiIGNvbHVtbj0iNDkiIHNlbGVjdGlvbi1zdGFydD0iMzUiIHNlbGVjdGlvbi1lbmQ9IjM1IiB2ZXJ0aWNhbC1zY3JvbGwtcHJvcG9ydGlvbj0iMC4wMTk0MDYzOTMiPgorICAgICAgICAgIDxmb2xkaW5nIC8+CisgICAgICAgIDwvc3RhdGU+CisgICAgICA8L3Byb3ZpZGVyPgorICAgIDwvZW50cnk+CisgIDwvY29tcG9uZW50PgorPC9wcm9qZWN0PgorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvbW9kZWwvc3JjL3gvQUNsYXNzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvbW9kZWwvc3JjL3gvQUNsYXNzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmQxMmViMgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9tb2RlbC9zcmMveC9BQ2xhc3MuamF2YQpAQCAtMCwwICsxLDE5IEBACisvKgorICogQ29weXJpZ2h0IDIwMDAtMjAxMiBKZXRCcmFpbnMgcy5yLm8uCisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcGFja2FnZSB4OworCitwdWJsaWMgY2xhc3MgQUNsYXNzIHsKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9tb2RlbC9zcmMveC9CQ2xhc3MuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9tb2RlbC9zcmMveC9CQ2xhc3MuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNWUxYjZkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL21vZGVsL3NyYy94L0JDbGFzcy5qYXZhCkBAIC0wLDAgKzEsMTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwMC0yMDEyIEpldEJyYWlucyBzLnIuby4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIHg7CisKK3B1YmxpYyBjbGFzcyBCQ2xhc3MgeworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL21vZHVsZVJvb3RNYW5hZ2VyL2NvbXBpbGVyT3V0cHV0SW5oZXJpdGFuY2UvdGVzdC5pbWwgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvbW9kdWxlUm9vdE1hbmFnZXIvY29tcGlsZXJPdXRwdXRJbmhlcml0YW5jZS90ZXN0LmltbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZDE5NjA1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL21vZHVsZVJvb3RNYW5hZ2VyL2NvbXBpbGVyT3V0cHV0SW5oZXJpdGFuY2UvdGVzdC5pbWwKQEAgLTAsMCArMSw0IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPG1vZHVsZSB2ZXJzaW9uPSI0IiByZWxhdGl2ZVBhdGhzPSJ0cnVlIj4KKzxjb21wb25lbnQgbmFtZT0iTmV3TW9kdWxlUm9vdE1hbmFnZXIiIC8+Cis8L21vZHVsZT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvbW9kdWxlUm9vdE1hbmFnZXIvY29udGVudFdyaXRlL2NsYXNzZXMvZW1wdHkudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL21vZHVsZVJvb3RNYW5hZ2VyL2NvbnRlbnRXcml0ZS9jbGFzc2VzL2VtcHR5LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNjlkZTI5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL21vZHVsZVJvb3RNYW5hZ2VyL2NvbnRlbnRXcml0ZS9jbGFzc2VzL2VtcHR5LnR4dApkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL21vZHVsZVJvb3RNYW5hZ2VyL2NvbnRlbnRXcml0ZS9leGNsdWRlL2VtcHR5LnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9tb2R1bGVSb290TWFuYWdlci9jb250ZW50V3JpdGUvZXhjbHVkZS9lbXB0eS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTY5ZGUyOQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9tb2R1bGVSb290TWFuYWdlci9jb250ZW50V3JpdGUvZXhjbHVkZS9lbXB0eS50eHQKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9tb2R1bGVSb290TWFuYWdlci9jb250ZW50V3JpdGUvc291cmNlL2VtcHR5LnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9tb2R1bGVSb290TWFuYWdlci9jb250ZW50V3JpdGUvc291cmNlL2VtcHR5LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNjlkZTI5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL21vZHVsZVJvb3RNYW5hZ2VyL2NvbnRlbnRXcml0ZS9zb3VyY2UvZW1wdHkudHh0CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvbW9kdWxlUm9vdE1hbmFnZXIvY29udGVudFdyaXRlL3Rlc3QuaW1sIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL21vZHVsZVJvb3RNYW5hZ2VyL2NvbnRlbnRXcml0ZS90ZXN0LmltbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZDE5NjA1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL21vZHVsZVJvb3RNYW5hZ2VyL2NvbnRlbnRXcml0ZS90ZXN0LmltbApAQCAtMCwwICsxLDQgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8bW9kdWxlIHZlcnNpb249IjQiIHJlbGF0aXZlUGF0aHM9InRydWUiPgorPGNvbXBvbmVudCBuYW1lPSJOZXdNb2R1bGVSb290TWFuYWdlciIgLz4KKzwvbW9kdWxlPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9tb2R1bGVSb290TWFuYWdlci9jb250ZW50V3JpdGUvdGVzdENsYXNzZXMvZW1wdHkudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL21vZHVsZVJvb3RNYW5hZ2VyL2NvbnRlbnRXcml0ZS90ZXN0Q2xhc3Nlcy9lbXB0eS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTY5ZGUyOQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9tb2R1bGVSb290TWFuYWdlci9jb250ZW50V3JpdGUvdGVzdENsYXNzZXMvZW1wdHkudHh0CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvbW9kdWxlUm9vdE1hbmFnZXIvY29udGVudFdyaXRlL3Rlc3RTb3VyY2UvZW1wdHkudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL21vZHVsZVJvb3RNYW5hZ2VyL2NvbnRlbnRXcml0ZS90ZXN0U291cmNlL2VtcHR5LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNjlkZTI5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL21vZHVsZVJvb3RNYW5hZ2VyL2NvbnRlbnRXcml0ZS90ZXN0U291cmNlL2VtcHR5LnR4dApkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL21vZHVsZVJvb3RNYW5hZ2VyL2NvbnZlcnRvcjM0L2xpYnJhcnlUYWJsZS9hZnRlci9hcHBsaWNhdGlvbkxpYnJhcmllcy54bWwgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvbW9kdWxlUm9vdE1hbmFnZXIvY29udmVydG9yMzQvbGlicmFyeVRhYmxlL2FmdGVyL2FwcGxpY2F0aW9uTGlicmFyaWVzLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hOWM2M2YwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL21vZHVsZVJvb3RNYW5hZ2VyL2NvbnZlcnRvcjM0L2xpYnJhcnlUYWJsZS9hZnRlci9hcHBsaWNhdGlvbkxpYnJhcmllcy54bWwKQEAgLTAsMCArMSwxMiBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxhcHBsaWNhdGlvbj4KKyAgPGNvbXBvbmVudCBuYW1lPSJsaWJyYXJ5VGFibGUiPgorICAgIDxsaWJyYXJ5IG5hbWU9Inh4eCI+CisgICAgICA8Q0xBU1NFUz4KKyAgICAgICAgPHJvb3QgdXJsPSJmaWxlOi8vL2JpbiIgLz4KKyAgICAgIDwvQ0xBU1NFUz4KKyAgICAgIDxKQVZBRE9DIC8+CisgICAgICA8U09VUkNFUyAvPgorICAgIDwvbGlicmFyeT4KKyAgPC9jb21wb25lbnQ+Cis8L2FwcGxpY2F0aW9uPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9tb2R1bGVSb290TWFuYWdlci9jb252ZXJ0b3IzNC9saWJyYXJ5VGFibGUvYmVmb3JlL2xpYnJhcnkudGFibGUueG1sIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL21vZHVsZVJvb3RNYW5hZ2VyL2NvbnZlcnRvcjM0L2xpYnJhcnlUYWJsZS9iZWZvcmUvbGlicmFyeS50YWJsZS54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGM0ODFiMQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9tb2R1bGVSb290TWFuYWdlci9jb252ZXJ0b3IzNC9saWJyYXJ5VGFibGUvYmVmb3JlL2xpYnJhcnkudGFibGUueG1sCkBAIC0wLDAgKzEsMjcgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8YXBwbGljYXRpb24+CisgIDxjb21wb25lbnQgbmFtZT0iUHJvamVjdExpYnJhcnlUYWJsZSI+CisgICAgPGxpYnJhcnk+CisgICAgICA8bmFtZSB2YWx1ZT0ieHh4IiAvPgorICAgICAgPHJvb3RzPgorICAgICAgICA8cHJvamVjdFBhdGg+CisgICAgICAgICAgPHJvb3QgdHlwZT0iY29tcG9zaXRlIiAvPgorICAgICAgICA8L3Byb2plY3RQYXRoPgorICAgICAgICA8c291cmNlUGF0aD4KKyAgICAgICAgICA8cm9vdCB0eXBlPSJjb21wb3NpdGUiIC8+CisgICAgICAgIDwvc291cmNlUGF0aD4KKyAgICAgICAgPGNsYXNzUGF0aD4KKyAgICAgICAgICA8cm9vdCB0eXBlPSJjb21wb3NpdGUiPgorICAgICAgICAgICAgIDxyb290IHR5cGU9InNpbXBsZSIgdXJsPSJmaWxlOi8vL2JpbiIgLz4KKyAgICAgICAgICA8L3Jvb3Q+CisgICAgICAgIDwvY2xhc3NQYXRoPgorICAgICAgICA8ZXhjbHVkZVBhdGg+CisgICAgICAgICAgPHJvb3QgdHlwZT0iY29tcG9zaXRlIiAvPgorICAgICAgICA8L2V4Y2x1ZGVQYXRoPgorICAgICAgICA8amF2YWRvY1BhdGg+CisgICAgICAgICAgPHJvb3QgdHlwZT0iY29tcG9zaXRlIiAvPgorICAgICAgICA8L2phdmFkb2NQYXRoPgorICAgICAgPC9yb290cz4KKyAgICA8L2xpYnJhcnk+CisgIDwvY29tcG9uZW50PgorPC9hcHBsaWNhdGlvbj4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvbW9kdWxlUm9vdE1hbmFnZXIvY29udmVydG9yMzQvc2NyMjQ1MTcvYWZ0ZXIvc2UubWRoLmh0bWwuaW1sIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL21vZHVsZVJvb3RNYW5hZ2VyL2NvbnZlcnRvcjM0L3NjcjI0NTE3L2FmdGVyL3NlLm1kaC5odG1sLmltbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45YTI1ZjZlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL21vZHVsZVJvb3RNYW5hZ2VyL2NvbnZlcnRvcjM0L3NjcjI0NTE3L2FmdGVyL3NlLm1kaC5odG1sLmltbApAQCAtMCwwICsxLDE1IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPG1vZHVsZSB2ZXJzaW9uPSI0IiByZWxhdGl2ZVBhdGhzPSJ0cnVlIj4KKzxjb21wb25lbnQgbmFtZT0iTmV3TW9kdWxlUm9vdE1hbmFnZXIiPgorICA8Y29udGVudCB1cmw9ImZpbGU6Ly8kTU9EVUxFX0RJUiQiPgorICAgIDxzb3VyY2VGb2xkZXIgaXNUZXN0U291cmNlPSJmYWxzZSIgdXJsPSJmaWxlOi8vJE1PRFVMRV9ESVIkL3NyYyIgLz4KKyAgICA8c291cmNlRm9sZGVyIGlzVGVzdFNvdXJjZT0iZmFsc2UiIHVybD0iZmlsZTovLyRNT0RVTEVfRElSJC90ZXN0L3NyYyIgLz4KKyAgPC9jb250ZW50PgorICA8b3JkZXJFbnRyeSB0eXBlPSJqZGsiIGpka05hbWU9ImphdmEgdmVyc2lvbiAmcXVvdDsxLjMuMSZxdW90OyIgLz4KKyAgPG9yZGVyRW50cnkgdHlwZT0ic291cmNlRm9sZGVyIiAvPgorICA8b3JkZXJFbnRyeSB0eXBlPSJsaWJyYXJ5IiBuYW1lPSJqYWthcnRhLWNvbW1vbnMtbGFuZy0yLjAiIGxldmVsPSJhcHBsaWNhdGlvbiIgLz4KKyAgPG91dHB1dCB1cmw9ImZpbGU6Ly8kTU9EVUxFX0RJUiQvYnVpbGQiIC8+CisgIDxvdXRwdXQtdGVzdCB1cmw9ImZpbGU6Ly8kTU9EVUxFX0RJUiQvYnVpbGQiIC8+CisgIDxleGNsdWRlLW91dHB1dCAvPgorPC9jb21wb25lbnQ+Cis8L21vZHVsZT4KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9tb2R1bGVSb290TWFuYWdlci9jb252ZXJ0b3IzNC9zY3IyNDUxNy9hZnRlci9zZS5tZGguaHRtbC5pcHIgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvbW9kdWxlUm9vdE1hbmFnZXIvY29udmVydG9yMzQvc2NyMjQ1MTcvYWZ0ZXIvc2UubWRoLmh0bWwuaXByCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE2NDE1MTIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvbW9kdWxlUm9vdE1hbmFnZXIvY29udmVydG9yMzQvc2NyMjQ1MTcvYWZ0ZXIvc2UubWRoLmh0bWwuaXByCkBAIC0wLDAgKzEsOCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxwcm9qZWN0IHZlcnNpb249IjQiIHJlbGF0aXZlUGF0aHM9InRydWUiPgorICA8Y29tcG9uZW50IG5hbWU9IlByb2plY3RNb2R1bGVNYW5hZ2VyIj4KKyAgICA8bW9kdWxlcz4KKyAgICAgIDxtb2R1bGUgZmlsZXBhdGg9IiRQUk9KRUNUX0RJUiQvc2UubWRoLmh0bWwuaW1sIiBmaWxldXJsPSJmaWxlOi8vJFBST0pFQ1RfRElSJC9zZS5tZGguaHRtbC5pbWwiIC8+CisgICAgPC9tb2R1bGVzPgorICA8L2NvbXBvbmVudD4KKzwvcHJvamVjdD4KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9tb2R1bGVSb290TWFuYWdlci9jb252ZXJ0b3IzNC9zY3IyNDUxNy9iZWZvcmUvc2UubWRoLmh0bWwuaXByIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL21vZHVsZVJvb3RNYW5hZ2VyL2NvbnZlcnRvcjM0L3NjcjI0NTE3L2JlZm9yZS9zZS5tZGguaHRtbC5pcHIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTY4MGQ4YQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9tb2R1bGVSb290TWFuYWdlci9jb252ZXJ0b3IzNC9zY3IyNDUxNy9iZWZvcmUvc2UubWRoLmh0bWwuaXByCkBAIC0wLDAgKzEsMTExIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPHByb2plY3QgdmVyc2lvbj0iMyIgcmVsYXRpdmVQYXRocz0iZmFsc2UiPgorICA8Y29tcG9uZW50IG5hbWU9IlByb2plY3RSb290TWFuYWdlciIgdmVyc2lvbj0iMiI+CisgICAgPGpkayBuYW1lPSJqYXZhIHZlcnNpb24gJnF1b3Q7MS4zLjEmcXVvdDsiIC8+CisgICAgPGxpYnJhcnkgbmFtZT0iamFrYXJ0YS1jb21tb25zLWxhbmctMi4wIiAvPgorICAgIDxwcm9qZWN0UGF0aD4KKyAgICAgIDxyb290IHR5cGU9ImNvbXBvc2l0ZSI+CisgICAgICAgIDxyb290IHR5cGU9InNpbXBsZSIgdXJsPSJmaWxlOi8vJFBST0pFQ1RfRElSJCIgLz4KKyAgICAgIDwvcm9vdD4KKyAgICA8L3Byb2plY3RQYXRoPgorICAgIDxzb3VyY2VQYXRoPgorICAgICAgPHJvb3QgdHlwZT0iY29tcG9zaXRlIj4KKyAgICAgICAgPHJvb3QgdHlwZT0iamRrIiByb290VHlwZT0ic291cmNlUGF0aCIgbmFtZT0iamF2YSB2ZXJzaW9uICZxdW90OzEuMy4xJnF1b3Q7IiAvPgorICAgICAgICA8cm9vdCB0eXBlPSJzaW1wbGUiIHVybD0iZmlsZTovLyRQUk9KRUNUX0RJUiQvc3JjIiAvPgorICAgICAgICA8cm9vdCB0eXBlPSJzaW1wbGUiIHVybD0iZmlsZTovLyRQUk9KRUNUX0RJUiQvdGVzdC9zcmMiIC8+CisgICAgICAgIDxyb290IHR5cGU9ImxpYnJhcnkiIHJvb3RUeXBlPSJzb3VyY2VQYXRoIiBuYW1lPSJqYWthcnRhLWNvbW1vbnMtbGFuZy0yLjAiIC8+CisgICAgICA8L3Jvb3Q+CisgICAgPC9zb3VyY2VQYXRoPgorICAgIDxjbGFzc1BhdGg+CisgICAgICA8cm9vdCB0eXBlPSJjb21wb3NpdGUiPgorICAgICAgICA8cm9vdCB0eXBlPSJqZGsiIHJvb3RUeXBlPSJjbGFzc1BhdGgiIG5hbWU9ImphdmEgdmVyc2lvbiAmcXVvdDsxLjMuMSZxdW90OyIgLz4KKyAgICAgICAgPHJvb3QgdHlwZT0ib3V0cHV0IiAvPgorICAgICAgICA8cm9vdCB0eXBlPSJsaWJyYXJ5IiByb290VHlwZT0iY2xhc3NQYXRoIiBuYW1lPSJqYWthcnRhLWNvbW1vbnMtbGFuZy0yLjAiIC8+CisgICAgICA8L3Jvb3Q+CisgICAgPC9jbGFzc1BhdGg+CisgICAgPGV4Y2x1ZGVQYXRoPgorICAgICAgPHJvb3QgdHlwZT0iY29tcG9zaXRlIj4KKyAgICAgICAgPHJvb3QgdHlwZT0iamRrIiByb290VHlwZT0iZXhjbHVkZVBhdGgiIG5hbWU9ImphdmEgdmVyc2lvbiAmcXVvdDsxLjMuMSZxdW90OyIgLz4KKyAgICAgICAgPHJvb3QgdHlwZT0iZXhjbHVkZWRPdXRwdXQiIC8+CisgICAgICA8L3Jvb3Q+CisgICAgPC9leGNsdWRlUGF0aD4KKyAgICA8amF2YWRvY1BhdGg+CisgICAgICA8cm9vdCB0eXBlPSJjb21wb3NpdGUiPgorICAgICAgICA8cm9vdCB0eXBlPSJqZGsiIHJvb3RUeXBlPSJqYXZhZG9jUGF0aCIgbmFtZT0iamF2YSB2ZXJzaW9uICZxdW90OzEuMy4xJnF1b3Q7IiAvPgorICAgICAgICA8cm9vdCB0eXBlPSJsaWJyYXJ5IiByb290VHlwZT0iamF2YWRvY1BhdGgiIG5hbWU9Impha2FydGEtY29tbW9ucy1sYW5nLTIuMCIgLz4KKyAgICAgIDwvcm9vdD4KKyAgICA8L2phdmFkb2NQYXRoPgorICAgIDxhc3NlcnRfa2V5d29yZCBlbmFibGVkPSJubyIgLz4KKyAgICA8ZXhjbHVkZV9vdXRwdXQgZW5hYmxlZD0ieWVzIiAvPgorICA8L2NvbXBvbmVudD4KKyAgPGNvbXBvbmVudCBuYW1lPSJDb21waWxlckNvbmZpZ3VyYXRpb24iPgorICAgIDxvcHRpb24gbmFtZT0iREVGQVVMVF9DT01QSUxFUiIgdmFsdWU9IkphdmFjIiAvPgorICAgIDxvcHRpb24gbmFtZT0iU1lOQ0hST05JWkVfT1VUUFVUX0RJUkVDVE9SWSIgdmFsdWU9ImZhbHNlIiAvPgorICAgIDxvcHRpb24gbmFtZT0iREVGQVVMVF9PVVRQVVRfUEFUSCIgdmFsdWU9IiRQUk9KRUNUX0RJUiQvYnVpbGQiIC8+CisgICAgPG9wdGlvbiBuYW1lPSJPVVRQVVRfTU9ERSIgdmFsdWU9InNpbmdsZSIgLz4KKyAgICA8cmVzb3VyY2VFeHRlbnNpb25zIC8+CisgIDwvY29tcG9uZW50PgorICA8Y29tcG9uZW50IG5hbWU9IkphdmFjU2V0dGluZ3MiPgorICAgIDxvcHRpb24gbmFtZT0iREVCVUdHSU5HX0lORk8iIHZhbHVlPSJ0cnVlIiAvPgorICAgIDxvcHRpb24gbmFtZT0iR0VORVJBVEVfTk9fV0FSTklOR1MiIHZhbHVlPSJmYWxzZSIgLz4KKyAgICA8b3B0aW9uIG5hbWU9IkRFUFJFQ0FUSU9OIiB2YWx1ZT0idHJ1ZSIgLz4KKyAgICA8b3B0aW9uIG5hbWU9IkFERElUSU9OQUxfT1BUSU9OU19TVFJJTkciIHZhbHVlPSIiIC8+CisgICAgPG9wdGlvbiBuYW1lPSJNQVhJTVVNX0hFQVBfU0laRSIgdmFsdWU9IjEyOCIgLz4KKyAgPC9jb21wb25lbnQ+CisgIDxjb21wb25lbnQgbmFtZT0iSmlrZXNTZXR0aW5ncyI+CisgICAgPG9wdGlvbiBuYW1lPSJKSUtFU19QQVRIIiB2YWx1ZT0iIiAvPgorICAgIDxvcHRpb24gbmFtZT0iREVCVUdHSU5HX0lORk8iIHZhbHVlPSJ0cnVlIiAvPgorICAgIDxvcHRpb24gbmFtZT0iREVQUkVDQVRJT04iIHZhbHVlPSJ0cnVlIiAvPgorICAgIDxvcHRpb24gbmFtZT0iR0VORVJBVEVfTk9fV0FSTklOR1MiIHZhbHVlPSJmYWxzZSIgLz4KKyAgICA8b3B0aW9uIG5hbWU9IkdFTkVSQVRFX01BS0VfRklMRV9ERVBFTkRFTkNJRVMiIHZhbHVlPSJmYWxzZSIgLz4KKyAgICA8b3B0aW9uIG5hbWU9IkRPX0ZVTExfREVQRU5ERU5DRV9DSEVDSyIgdmFsdWU9ImZhbHNlIiAvPgorICAgIDxvcHRpb24gbmFtZT0iSVNfRU1BQ1NfRVJST1JTX01PREUiIHZhbHVlPSJ0cnVlIiAvPgorICAgIDxvcHRpb24gbmFtZT0iQURESVRJT05BTF9PUFRJT05TX1NUUklORyIgdmFsdWU9IiIgLz4KKyAgPC9jb21wb25lbnQ+CisgIDxjb21wb25lbnQgbmFtZT0iQW50Q29uZmlndXJhdGlvbiI+CisgICAgPG9wdGlvbiBuYW1lPSJJU19BVVRPU0NST0xMX1RPX1NPVVJDRSIgdmFsdWU9ImZhbHNlIiAvPgorICAgIDxvcHRpb24gbmFtZT0iRklMVEVSX1RBUkdFVFMiIHZhbHVlPSJmYWxzZSIgLz4KKyAgPC9jb21wb25lbnQ+CisgIDxjb21wb25lbnQgbmFtZT0iSmF2YWRvY0dlbmVyYXRpb25NYW5hZ2VyIj4KKyAgICA8b3B0aW9uIG5hbWU9Ik9VVFBVVF9ESVJFQ1RPUlkiIC8+CisgICAgPG9wdGlvbiBuYW1lPSJPUFRJT05fU0NPUEUiIHZhbHVlPSJwcm90ZWN0ZWQiIC8+CisgICAgPG9wdGlvbiBuYW1lPSJPUFRJT05fSElFUkFSQ0hZIiB2YWx1ZT0iZmFsc2UiIC8+CisgICAgPG9wdGlvbiBuYW1lPSJPUFRJT05fTkFWSUdBVE9SIiB2YWx1ZT0iZmFsc2UiIC8+CisgICAgPG9wdGlvbiBuYW1lPSJPUFRJT05fSU5ERVgiIHZhbHVlPSJmYWxzZSIgLz4KKyAgICA8b3B0aW9uIG5hbWU9Ik9QVElPTl9TRVBBUkFURV9JTkRFWCIgdmFsdWU9ImZhbHNlIiAvPgorICAgIDxvcHRpb24gbmFtZT0iT1BUSU9OX0RPQ1VNRU5UX1RBR19VU0UiIHZhbHVlPSJ0cnVlIiAvPgorICAgIDxvcHRpb24gbmFtZT0iT1BUSU9OX0RPQ1VNRU5UX1RBR19BVVRIT1IiIHZhbHVlPSJ0cnVlIiAvPgorICAgIDxvcHRpb24gbmFtZT0iT1BUSU9OX0RPQ1VNRU5UX1RBR19WRVJTSU9OIiB2YWx1ZT0idHJ1ZSIgLz4KKyAgICA8b3B0aW9uIG5hbWU9Ik9QVElPTl9ET0NVTUVOVF9UQUdfREVQUkVDQVRFRCIgdmFsdWU9InRydWUiIC8+CisgICAgPG9wdGlvbiBuYW1lPSJPUFRJT05fREVQUkVDQVRFRF9MSVNUIiB2YWx1ZT0idHJ1ZSIgLz4KKyAgICA8b3B0aW9uIG5hbWU9Ik9USEVSX09QVElPTlMiIC8+CisgICAgPG9wdGlvbiBuYW1lPSJIRUFQX1NJWkUiIC8+CisgICAgPG9wdGlvbiBuYW1lPSJPUEVOX0lOX0JST1dTRVIiIHZhbHVlPSJmYWxzZSIgLz4KKyAgPC9jb21wb25lbnQ+CisgIDxjb21wb25lbnQgbmFtZT0iV2ViTWFuYWdlciI+CisgICAgPG9wdGlvbiBlbmFibGVkPSJmYWxzZSIgLz4KKyAgPC9jb21wb25lbnQ+CisgIDxjb21wb25lbnQgbmFtZT0iV2ViUm9vdENvbnRhaW5lciIgLz4KKyAgPGNvbXBvbmVudCBuYW1lPSJFamJNYW5hZ2VyIiBlbmFibGVkPSJmYWxzZSIgLz4KKyAgPGNvbXBvbmVudCBuYW1lPSJKVW5pdFByb2plY3RTZXR0aW5ncyI+CisgICAgPG9wdGlvbiBuYW1lPSJURVNUX1JVTk5FUiIgdmFsdWU9IlVJIiAvPgorICA8L2NvbXBvbmVudD4KKyAgPGNvbXBvbmVudCBuYW1lPSJFbnRyeVBvaW50c01hbmFnZXIiPgorICAgIDxlbnRyeV9wb2ludHMgLz4KKyAgPC9jb21wb25lbnQ+CisgIDxjb21wb25lbnQgbmFtZT0iRWpiQWN0aW9uc0NvbmZpZ3VyYXRpb24iPgorICAgIDxvcHRpb24gbmFtZT0iTkVXX01FU1NBR0VfQkVBTl9MQVNUX1BBQ0tBR0UiIHZhbHVlPSIiIC8+CisgICAgPG9wdGlvbiBuYW1lPSJORVdfRU5USVRZX0JFQU5fTEFTVF9QQUNLQUdFIiB2YWx1ZT0iIiAvPgorICAgIDxvcHRpb24gbmFtZT0iTkVXX1NFU1NJT05fQkVBTl9MQVNUX1BBQ0tBR0UiIHZhbHVlPSIiIC8+CisgIDwvY29tcG9uZW50PgorICA8Y29tcG9uZW50IG5hbWU9IkNvZGVTdHlsZU1hbmFnZXIiPgorICAgIDxvcHRpb24gbmFtZT0iVVNFX0RFRkFVTFRfQ09ERV9TVFlMRV9TQ0hFTUUiIHZhbHVlPSJ0cnVlIiAvPgorICAgIDxvcHRpb24gbmFtZT0iQ09ERV9TVFlMRV9TQ0hFTUUiIHZhbHVlPSIiIC8+CisgIDwvY29tcG9uZW50PgorICA8Y29tcG9uZW50IG5hbWU9IkV4cG9ydFRvSFRNTFNldHRpbmdzIj4KKyAgICA8b3B0aW9uIG5hbWU9IlBSSU5UX0xJTkVfTlVNQkVSUyIgdmFsdWU9ImZhbHNlIiAvPgorICAgIDxvcHRpb24gbmFtZT0iT1BFTl9JTl9CUk9XU0VSIiB2YWx1ZT0iZmFsc2UiIC8+CisgICAgPG9wdGlvbiBuYW1lPSJPVVRQVVRfRElSRUNUT1JZIiAvPgorICA8L2NvbXBvbmVudD4KKzwvcHJvamVjdD4KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL21vZHVsZVJvb3RNYW5hZ2VyL2NvbnZlcnRvcjM0L3NjcjI1Mjk4L2FmdGVyL2FwcGxpY2F0aW9uTGlicmFyaWVzLnhtbCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9tb2R1bGVSb290TWFuYWdlci9jb252ZXJ0b3IzNC9zY3IyNTI5OC9hZnRlci9hcHBsaWNhdGlvbkxpYnJhcmllcy54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGYxM2ZlZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9tb2R1bGVSb290TWFuYWdlci9jb252ZXJ0b3IzNC9zY3IyNTI5OC9hZnRlci9hcHBsaWNhdGlvbkxpYnJhcmllcy54bWwKQEAgLTAsMCArMSw3NDMgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8YXBwbGljYXRpb24+CisgIDxjb21wb25lbnQgbmFtZT0ibGlicmFyeVRhYmxlIj4KKyAgICA8bGlicmFyeSBuYW1lPSJhY3RpdmF0aW9uIj4KKyAgICAgIDxDTEFTU0VTPgorICAgICAgICA8cm9vdCB1cmw9ImphcjovL0M6L2xpYi9leHQvamFmLzFfMF8xL2FjdGl2YXRpb24uamFyIS8iIC8+CisgICAgICA8L0NMQVNTRVM+CisgICAgICA8SkFWQURPQz4KKyAgICAgICAgPHJvb3QgdXJsPSJmaWxlOi8vQzovbGliL2V4dC9qYWYvMV8wXzEvZG9jcy9qYXZhZG9jcyIgLz4KKyAgICAgIDwvSkFWQURPQz4KKyAgICAgIDxTT1VSQ0VTIC8+CisgICAgPC9saWJyYXJ5PgorICAgIDxsaWJyYXJ5IG5hbWU9ImNvbW0tMi4wIj4KKyAgICAgIDxDTEFTU0VTPgorICAgICAgICA8cm9vdCB1cmw9ImphcjovL0M6L2xpYi9leHQvY29tbS9jb21tLmphciEvIiAvPgorICAgICAgICA8cm9vdCB1cmw9ImZpbGU6Ly9DOi9saWIvZXh0L2NvbW0iIC8+CisgICAgICA8L0NMQVNTRVM+CisgICAgICA8SkFWQURPQz4KKyAgICAgICAgPHJvb3QgdXJsPSJmaWxlOi8vQzovbGliL2V4dC9jb21tL2phdmFkb2NzIiAvPgorICAgICAgPC9KQVZBRE9DPgorICAgICAgPFNPVVJDRVMgLz4KKyAgICA8L2xpYnJhcnk+CisgICAgPGxpYnJhcnkgbmFtZT0iZGVubmlzbHVuZGJlcmctY29kZWdlbmVyYXRpb24tMi4wIj4KKyAgICAgIDxDTEFTU0VTPgorICAgICAgICA8cm9vdCB1cmw9ImphcjovL0M6L2xpYi9kZW5uaXNsdW5kYmVyZy1jb2RlZ2VuZXJhdGlvbi9SRUxFQVNFLTJfMC9jb2RlZ2VuZXJhdGlvbi5qYXIhLyIgLz4KKyAgICAgIDwvQ0xBU1NFUz4KKyAgICAgIDxKQVZBRE9DIC8+CisgICAgICA8U09VUkNFUyAvPgorICAgIDwvbGlicmFyeT4KKyAgICA8bGlicmFyeSBuYW1lPSJkZW5uaXNsdW5kYmVyZy1za2F0dC0xLjAiPgorICAgICAgPENMQVNTRVM+CisgICAgICAgIDxyb290IHVybD0iamFyOi8vQzovbGliL2Rlbm5pc2x1bmRiZXJnLXNrYXR0L1JFTEVBU0UtMV8wL2Rlbm5pc2x1bmRiZXJnLXNrYXR0LmphciEvIiAvPgorICAgICAgPC9DTEFTU0VTPgorICAgICAgPEpBVkFET0M+CisgICAgICAgIDxyb290IHVybD0iZmlsZTovL0M6L2xpYi9kZW5uaXNsdW5kYmVyZy1za2F0dC9SRUxFQVNFLTFfMC9kb2NzL2FwaSIgLz4KKyAgICAgIDwvSkFWQURPQz4KKyAgICAgIDxTT1VSQ0VTIC8+CisgICAgPC9saWJyYXJ5PgorICAgIDxsaWJyYXJ5IG5hbWU9Iml0ZXh0LTEuMDAiPgorICAgICAgPENMQVNTRVM+CisgICAgICAgIDxyb290IHVybD0iamFyOi8vQzovbGliL2V4dC9pdGV4dC9pdGV4dC0xLjAwLmphciEvIiAvPgorICAgICAgPC9DTEFTU0VTPgorICAgICAgPEpBVkFET0MgLz4KKyAgICAgIDxTT1VSQ0VTIC8+CisgICAgPC9saWJyYXJ5PgorICAgIDxsaWJyYXJ5IG5hbWU9Iml0ZXh0LTEuMDEiPgorICAgICAgPENMQVNTRVM+CisgICAgICAgIDxyb290IHVybD0iamFyOi8vQzovbGliL2V4dC9pdGV4dC9pdGV4dC0xLjAxLmphciEvIiAvPgorICAgICAgPC9DTEFTU0VTPgorICAgICAgPEpBVkFET0MgLz4KKyAgICAgIDxTT1VSQ0VTIC8+CisgICAgPC9saWJyYXJ5PgorICAgIDxsaWJyYXJ5IG5hbWU9Impha2FydGEtY29tbW9ucy1sYW5nLTEuMC4xIj4KKyAgICAgIDxDTEFTU0VTPgorICAgICAgICA8cm9vdCB1cmw9ImphcjovL0M6L2xpYi9leHQvamFrYXJ0YS1jb21tb25zL2NvbW1vbnMtbGFuZy0xLjAuMS9jb21tb25zLWxhbmctMS4wLjEuamFyIS8iIC8+CisgICAgICA8L0NMQVNTRVM+CisgICAgICA8SkFWQURPQz4KKyAgICAgICAgPHJvb3QgdXJsPSJmaWxlOi8vQzovbGliL2V4dC9qYWthcnRhLWNvbW1vbnMvY29tbW9ucy1sYW5nLTEuMC4xL2RvY3MvYXBpIiAvPgorICAgICAgPC9KQVZBRE9DPgorICAgICAgPFNPVVJDRVMgLz4KKyAgICA8L2xpYnJhcnk+CisgICAgPGxpYnJhcnkgbmFtZT0iamFrYXJ0YS1jb21tb25zLWxhbmctMi4wIj4KKyAgICAgIDxDTEFTU0VTPgorICAgICAgICA8cm9vdCB1cmw9ImphcjovL0M6L2xpYi9leHQvamFrYXJ0YS1jb21tb25zL2NvbW1vbnMtbGFuZy0yLjAvY29tbW9ucy1sYW5nLTIuMC5qYXIhLyIgLz4KKyAgICAgIDwvQ0xBU1NFUz4KKyAgICAgIDxKQVZBRE9DPgorICAgICAgICA8cm9vdCB1cmw9ImZpbGU6Ly9DOi9saWIvZXh0L2pha2FydGEtY29tbW9ucy9jb21tb25zLWxhbmctMi4wL2RvY3MvYXBpIiAvPgorICAgICAgPC9KQVZBRE9DPgorICAgICAgPFNPVVJDRVMgLz4KKyAgICA8L2xpYnJhcnk+CisgICAgPGxpYnJhcnkgbmFtZT0iamFrYXJ0YS1jb21tb25zLWxvZ2dpbmctMS4wLjIiPgorICAgICAgPENMQVNTRVM+CisgICAgICAgIDxyb290IHVybD0iamFyOi8vQzovbGliL2V4dC9qYWthcnRhLWNvbW1vbnMvY29tbW9ucy1sb2dnaW5nLTEuMC4yL2NvbW1vbnMtbG9nZ2luZy5qYXIhLyIgLz4KKyAgICAgIDwvQ0xBU1NFUz4KKyAgICAgIDxKQVZBRE9DPgorICAgICAgICA8cm9vdCB1cmw9ImZpbGU6Ly9DOi9saWIvZXh0L2pha2FydGEtY29tbW9ucy9jb21tb25zLWxvZ2dpbmctMS4wLjIvZG9jcy9hcGkiIC8+CisgICAgICA8L0pBVkFET0M+CisgICAgICA8U09VUkNFUyAvPgorICAgIDwvbGlicmFyeT4KKyAgICA8bGlicmFyeSBuYW1lPSJqYWthcnRhLWNvbW1vbnMtbG9nZ2luZy0xLjAuMyI+CisgICAgICA8Q0xBU1NFUz4KKyAgICAgICAgPHJvb3QgdXJsPSJqYXI6Ly9DOi9saWIvZXh0L2pha2FydGEtY29tbW9ucy9jb21tb25zLWxvZ2dpbmctMS4wLjMvY29tbW9ucy1sb2dnaW5nLmphciEvIiAvPgorICAgICAgPC9DTEFTU0VTPgorICAgICAgPEpBVkFET0M+CisgICAgICAgIDxyb290IHVybD0iZmlsZTovL0M6L2xpYi9leHQvamFrYXJ0YS1jb21tb25zL2NvbW1vbnMtbG9nZ2luZy0xLjAuMy9kb2NzL2FwaSIgLz4KKyAgICAgIDwvSkFWQURPQz4KKyAgICAgIDxTT1VSQ0VTIC8+CisgICAgPC9saWJyYXJ5PgorICAgIDxsaWJyYXJ5IG5hbWU9ImpuZGkiPgorICAgICAgPENMQVNTRVM+CisgICAgICAgIDxyb290IHVybD0iamFyOi8vQzovbGliL2V4dC9qbmRpLzFfMl8xL2xpYi9qbmRpLmphciEvIiAvPgorICAgICAgPC9DTEFTU0VTPgorICAgICAgPEpBVkFET0M+CisgICAgICAgIDxyb290IHVybD0iZmlsZTovL0M6L2xpYi9leHQvam5kaS8xXzJfMS9sZGFwL2RvYy9sZGFwY29udHJvbHMiIC8+CisgICAgICAgIDxyb290IHVybD0iZmlsZTovL0M6L2xpYi9leHQvam5kaS8xXzJfMS9sZGFwL2RvYy9zYXNsIiAvPgorICAgICAgPC9KQVZBRE9DPgorICAgICAgPFNPVVJDRVMgLz4KKyAgICA8L2xpYnJhcnk+CisgICAgPGxpYnJhcnkgbmFtZT0ianNzZSI+CisgICAgICA8Q0xBU1NFUz4KKyAgICAgICAgPHJvb3QgdXJsPSJqYXI6Ly9DOi9saWIvZXh0L2pzc2UvbGliL2pjZXJ0LmphciEvIiAvPgorICAgICAgICA8cm9vdCB1cmw9ImphcjovL0M6L2xpYi9leHQvanNzZS9saWIvam5ldC5qYXIhLyIgLz4KKyAgICAgICAgPHJvb3QgdXJsPSJqYXI6Ly9DOi9saWIvZXh0L2pzc2UvbGliL2pzc2UuamFyIS8iIC8+CisgICAgICA8L0NMQVNTRVM+CisgICAgICA8SkFWQURPQz4KKyAgICAgICAgPHJvb3QgdXJsPSJmaWxlOi8vQzovbGliL2V4dC9qc3NlL2RvYy9hcGlkb2MiIC8+CisgICAgICA8L0pBVkFET0M+CisgICAgICA8U09VUkNFUyAvPgorICAgIDwvbGlicmFyeT4KKyAgICA8bGlicmFyeSBuYW1lPSJqc3RsLTEuMCI+CisgICAgICA8Q0xBU1NFUz4KKyAgICAgICAgPHJvb3QgdXJsPSJqYXI6Ly9DOi9saWIvZXh0L2pha2FydGEtdGFnbGlicy9zdGFuZGFyZC0xLjAuMy9saWIvanN0bC5qYXIhLyIgLz4KKyAgICAgIDwvQ0xBU1NFUz4KKyAgICAgIDxKQVZBRE9DPgorICAgICAgICA8cm9vdCB1cmw9ImZpbGU6Ly9DOi9saWIvZXh0L2pha2FydGEtdGFnbGlicy9zdGFuZGFyZC0xLjAuMy9qYXZhZG9jIiAvPgorICAgICAgPC9KQVZBRE9DPgorICAgICAgPFNPVVJDRVMgLz4KKyAgICA8L2xpYnJhcnk+CisgICAgPGxpYnJhcnkgbmFtZT0ianRhIj4KKyAgICAgIDxDTEFTU0VTPgorICAgICAgICA8cm9vdCB1cmw9ImphcjovL0M6L2xpYi9leHQvanRhL2p0YTIwLmphciEvIiAvPgorICAgICAgPC9DTEFTU0VTPgorICAgICAgPEpBVkFET0MgLz4KKyAgICAgIDxTT1VSQ0VTIC8+CisgICAgPC9saWJyYXJ5PgorICAgIDxsaWJyYXJ5IG5hbWU9Imp1bml0Ij4KKyAgICAgIDxDTEFTU0VTPgorICAgICAgICA8cm9vdCB1cmw9ImphcjovL0M6L2xpYi9leHQvanVuaXQvM184XzEvanVuaXQuamFyIS8iIC8+CisgICAgICA8L0NMQVNTRVM+CisgICAgICA8SkFWQURPQz4KKyAgICAgICAgPHJvb3QgdXJsPSJmaWxlOi8vQzovbGliL2V4dC9qdW5pdC8zXzhfMS9qYXZhZG9jIiAvPgorICAgICAgPC9KQVZBRE9DPgorICAgICAgPFNPVVJDRVMgLz4KKyAgICA8L2xpYnJhcnk+CisgICAgPGxpYnJhcnkgbmFtZT0ibG9nNGoiPgorICAgICAgPENMQVNTRVM+CisgICAgICAgIDxyb290IHVybD0iamFyOi8vQzovbGliL2V4dC9qYWthcnRhLWxvZzRqLzEuMi44L2Rpc3QvbGliL2xvZzRqLTEuMi44LmphciEvIiAvPgorICAgICAgPC9DTEFTU0VTPgorICAgICAgPEpBVkFET0M+CisgICAgICAgIDxyb290IHVybD0iZmlsZTovL0M6L2xpYi9leHQvamFrYXJ0YS1sb2c0ai8xLjIuOC9kb2NzL2FwaSIgLz4KKyAgICAgIDwvSkFWQURPQz4KKyAgICAgIDxTT1VSQ0VTIC8+CisgICAgPC9saWJyYXJ5PgorICAgIDxsaWJyYXJ5IG5hbWU9Im1haWwtMS4xLjMiPgorICAgICAgPENMQVNTRVM+CisgICAgICAgIDxyb290IHVybD0iamFyOi8vQzovbGliL2V4dC9qYXZhbWFpbC9qYXZhbWFpbC0xLjEuMy9tYWlsLmphciEvIiAvPgorICAgICAgPC9DTEFTU0VTPgorICAgICAgPEpBVkFET0M+CisgICAgICAgIDxyb290IHVybD0iZmlsZTovL0M6L2xpYi9leHQvamF2YW1haWwvamF2YW1haWwtMS4xLjMvZG9jcy9qYXZhZG9jcyIgLz4KKyAgICAgIDwvSkFWQURPQz4KKyAgICAgIDxTT1VSQ0VTIC8+CisgICAgPC9saWJyYXJ5PgorICAgIDxsaWJyYXJ5IG5hbWU9Im1haWwtMS4yIj4KKyAgICAgIDxDTEFTU0VTPgorICAgICAgICA8cm9vdCB1cmw9ImphcjovL0M6L2xpYi9leHQvamF2YW1haWwvamF2YW1haWwtMS4yL21haWwuamFyIS8iIC8+CisgICAgICA8L0NMQVNTRVM+CisgICAgICA8SkFWQURPQz4KKyAgICAgICAgPHJvb3QgdXJsPSJmaWxlOi8vQzovbGliL2V4dC9qYXZhbWFpbC9qYXZhbWFpbC0xLjIvZG9jcy9qYXZhZG9jcyIgLz4KKyAgICAgIDwvSkFWQURPQz4KKyAgICAgIDxTT1VSQ0VTIC8+CisgICAgPC9saWJyYXJ5PgorICAgIDxsaWJyYXJ5IG5hbWU9Im1kaC1hcHBsaWNhdGlvbi0xLjEuMyI+CisgICAgICA8Q0xBU1NFUz4KKyAgICAgICAgPHJvb3QgdXJsPSJqYXI6Ly9DOi9saWIvYXBwbGljYXRpb24vUkVMRUFTRS0xXzFfMy9hcHBsaWNhdGlvbi5qYXIhLyIgLz4KKyAgICAgIDwvQ0xBU1NFUz4KKyAgICAgIDxKQVZBRE9DPgorICAgICAgICA8cm9vdCB1cmw9ImZpbGU6Ly9DOi9saWIvYXBwbGljYXRpb24vUkVMRUFTRS0xXzFfMy9kb2NzL2FwaSIgLz4KKyAgICAgIDwvSkFWQURPQz4KKyAgICAgIDxTT1VSQ0VTIC8+CisgICAgPC9saWJyYXJ5PgorICAgIDxsaWJyYXJ5IG5hbWU9Im1kaC1hd3QtYXBwbGV0LTIuMi40Ij4KKyAgICAgIDxDTEFTU0VTPgorICAgICAgICA8cm9vdCB1cmw9ImphcjovL0M6L2xpYi9hd3QvUkVMRUFTRS0yXzJfNC9hd3QtYXBwbGV0LmphciEvIiAvPgorICAgICAgPC9DTEFTU0VTPgorICAgICAgPEpBVkFET0M+CisgICAgICAgIDxyb290IHVybD0iZmlsZTovL0M6L2xpYi9hd3QvUkVMRUFTRS0yXzJfNC9kb2NzL2FwaSIgLz4KKyAgICAgIDwvSkFWQURPQz4KKyAgICAgIDxTT1VSQ0VTIC8+CisgICAgPC9saWJyYXJ5PgorICAgIDxsaWJyYXJ5IG5hbWU9Im1kaC1kYXRhYmFzLTEuMS4yIj4KKyAgICAgIDxDTEFTU0VTPgorICAgICAgICA8cm9vdCB1cmw9ImphcjovL0M6L2xpYi9kYXRhYmFzL1JFTEVBU0UtMV8xXzIvZGF0YWJhcy5qYXIhLyIgLz4KKyAgICAgIDwvQ0xBU1NFUz4KKyAgICAgIDxKQVZBRE9DPgorICAgICAgICA8cm9vdCB1cmw9ImZpbGU6Ly9DOi9saWIvZGF0YWJhcy9SRUxFQVNFLTFfMV8yL2RvY3MvYXBpIiAvPgorICAgICAgPC9KQVZBRE9DPgorICAgICAgPFNPVVJDRVMgLz4KKyAgICA8L2xpYnJhcnk+CisgICAgPGxpYnJhcnkgbmFtZT0ibWRoLWRhdGFiYXMtdXRpbC0xLjEuMSI+CisgICAgICA8Q0xBU1NFUz4KKyAgICAgICAgPHJvb3QgdXJsPSJqYXI6Ly9DOi9saWIvZGF0YWJhcy11dGlsL1JFTEVBU0UtMV8xXzEvZGF0YWJhcy11dGlsLmphciEvIiAvPgorICAgICAgPC9DTEFTU0VTPgorICAgICAgPEpBVkFET0MgLz4KKyAgICAgIDxTT1VSQ0VTIC8+CisgICAgPC9saWJyYXJ5PgorICAgIDxsaWJyYXJ5IG5hbWU9Im1kaC1kYXRhYmFzLXV0aWwtMS4xLjIiPgorICAgICAgPENMQVNTRVM+CisgICAgICAgIDxyb290IHVybD0iamFyOi8vQzovbGliL2RhdGFiYXMtdXRpbC9SRUxFQVNFLTFfMV8yL2RhdGFiYXMtdXRpbC5qYXIhLyIgLz4KKyAgICAgIDwvQ0xBU1NFUz4KKyAgICAgIDxKQVZBRE9DPgorICAgICAgICA8cm9vdCB1cmw9ImZpbGU6Ly9DOi9saWIvZGF0YWJhcy11dGlsL1JFTEVBU0UtMV8xXzIvZG9jcy9hcGkiIC8+CisgICAgICA8L0pBVkFET0M+CisgICAgICA8U09VUkNFUyAvPgorICAgIDwvbGlicmFyeT4KKyAgICA8bGlicmFyeSBuYW1lPSJtZGgtZGF0YWJhcy11dGlsLWFwcGxldC0xLjEuMiI+CisgICAgICA8Q0xBU1NFUz4KKyAgICAgICAgPHJvb3QgdXJsPSJqYXI6Ly9DOi9saWIvZGF0YWJhcy11dGlsL1JFTEVBU0UtMV8xXzIvZGF0YWJhcy11dGlsLWFwcGxldC5qYXIhLyIgLz4KKyAgICAgIDwvQ0xBU1NFUz4KKyAgICAgIDxKQVZBRE9DPgorICAgICAgICA8cm9vdCB1cmw9ImZpbGU6Ly9DOi9saWIvZGF0YWJhcy11dGlsL1JFTEVBU0UtMV8xXzIvZG9jcy9hcGkiIC8+CisgICAgICA8L0pBVkFET0M+CisgICAgICA8U09VUkNFUyAvPgorICAgIDwvbGlicmFyeT4KKyAgICA8bGlicmFyeSBuYW1lPSJtZGgtZXBvc3QtMS4wLjEiPgorICAgICAgPENMQVNTRVM+CisgICAgICAgIDxyb290IHVybD0iamFyOi8vQzovbGliL2Vwb3N0L1JFTEVBU0UtMV8wXzEvZXBvc3QuamFyIS8iIC8+CisgICAgICA8L0NMQVNTRVM+CisgICAgICA8SkFWQURPQyAvPgorICAgICAgPFNPVVJDRVMgLz4KKyAgICA8L2xpYnJhcnk+CisgICAgPGxpYnJhcnkgbmFtZT0ibWRoLWVwb3N0LTEuMS4xIj4KKyAgICAgIDxDTEFTU0VTPgorICAgICAgICA8cm9vdCB1cmw9ImphcjovL0M6L2xpYi9lcG9zdC9SRUxFQVNFLTFfMV8xL2Vwb3N0LmphciEvIiAvPgorICAgICAgPC9DTEFTU0VTPgorICAgICAgPEpBVkFET0M+CisgICAgICAgIDxyb290IHVybD0iZmlsZTovL0M6L2xpYi9lcG9zdC9SRUxFQVNFLTFfMV8xL2RvY3MvYXBpIiAvPgorICAgICAgPC9KQVZBRE9DPgorICAgICAgPFNPVVJDRVMgLz4KKyAgICA8L2xpYnJhcnk+CisgICAgPGxpYnJhcnkgbmFtZT0ibWRoLWVwb3N0LTIuMCI+CisgICAgICA8Q0xBU1NFUz4KKyAgICAgICAgPHJvb3QgdXJsPSJqYXI6Ly9DOi9saWIvZXBvc3QvUkVMRUFTRS0yXzAvc2hhcmVkL2xpYi9lcG9zdC1zaGFyZWQuamFyIS8iIC8+CisgICAgICA8L0NMQVNTRVM+CisgICAgICA8SkFWQURPQz4KKyAgICAgICAgPHJvb3QgdXJsPSJmaWxlOi8vQzovbGliL2Vwb3N0L1JFTEVBU0UtMl8wL2RvY3MvYXBpIiAvPgorICAgICAgPC9KQVZBRE9DPgorICAgICAgPFNPVVJDRVMgLz4KKyAgICA8L2xpYnJhcnk+CisgICAgPGxpYnJhcnkgbmFtZT0ibWRoLWh0bWwtMS42LjIiPgorICAgICAgPENMQVNTRVM+CisgICAgICAgIDxyb290IHVybD0iamFyOi8vQzovbGliL2h0bWwvUkVMRUFTRS0xXzZfMi9odG1sLmphciEvIiAvPgorICAgICAgPC9DTEFTU0VTPgorICAgICAgPEpBVkFET0MgLz4KKyAgICAgIDxTT1VSQ0VTIC8+CisgICAgPC9saWJyYXJ5PgorICAgIDxsaWJyYXJ5IG5hbWU9Im1kaC1odG1sLTEuNi40Ij4KKyAgICAgIDxDTEFTU0VTPgorICAgICAgICA8cm9vdCB1cmw9ImphcjovL0M6L2xpYi9odG1sL1JFTEVBU0UtMV82XzQvaHRtbC5qYXIhLyIgLz4KKyAgICAgIDwvQ0xBU1NFUz4KKyAgICAgIDxKQVZBRE9DIC8+CisgICAgICA8U09VUkNFUyAvPgorICAgIDwvbGlicmFyeT4KKyAgICA8bGlicmFyeSBuYW1lPSJtZGgtaHRtbC0yLjAuMSI+CisgICAgICA8Q0xBU1NFUz4KKyAgICAgICAgPHJvb3QgdXJsPSJqYXI6Ly9DOi9saWIvaHRtbC9SRUxFQVNFLTJfMF8xL2h0bWwuamFyIS8iIC8+CisgICAgICA8L0NMQVNTRVM+CisgICAgICA8SkFWQURPQz4KKyAgICAgICAgPHJvb3QgdXJsPSJmaWxlOi8vQzovbGliL2h0bWwvUkVMRUFTRS0yXzBfMS9kb2NzL2FwaSIgLz4KKyAgICAgIDwvSkFWQURPQz4KKyAgICAgIDxTT1VSQ0VTIC8+CisgICAgPC9saWJyYXJ5PgorICAgIDxsaWJyYXJ5IG5hbWU9Im1kaC1odG1sLTIuMSI+CisgICAgICA8Q0xBU1NFUz4KKyAgICAgICAgPHJvb3QgdXJsPSJqYXI6Ly9DOi9saWIvaHRtbC9SRUxFQVNFLTJfMS9odG1sLmphciEvIiAvPgorICAgICAgPC9DTEFTU0VTPgorICAgICAgPEpBVkFET0M+CisgICAgICAgIDxyb290IHVybD0iZmlsZTovL0M6L2xpYi9odG1sL1JFTEVBU0UtMl8xL2RvY3MvYXBpIiAvPgorICAgICAgPC9KQVZBRE9DPgorICAgICAgPFNPVVJDRVMgLz4KKyAgICA8L2xpYnJhcnk+CisgICAgPGxpYnJhcnkgbmFtZT0ibWRoLWxhZG9rLTEuMiI+CisgICAgICA8Q0xBU1NFUz4KKyAgICAgICAgPHJvb3QgdXJsPSJqYXI6Ly9DOi9saWIvbGFkb2svUkVMRUFTRS0xXzIvbGFkb2suamFyIS8iIC8+CisgICAgICA8L0NMQVNTRVM+CisgICAgICA8SkFWQURPQyAvPgorICAgICAgPFNPVVJDRVMgLz4KKyAgICA8L2xpYnJhcnk+CisgICAgPGxpYnJhcnkgbmFtZT0ibWRoLWxhZG9rLTEuMyI+CisgICAgICA8Q0xBU1NFUz4KKyAgICAgICAgPHJvb3QgdXJsPSJqYXI6Ly9DOi9saWIvbGFkb2svUkVMRUFTRS0xXzMvbGFkb2suamFyIS8iIC8+CisgICAgICA8L0NMQVNTRVM+CisgICAgICA8SkFWQURPQyAvPgorICAgICAgPFNPVVJDRVMgLz4KKyAgICA8L2xpYnJhcnk+CisgICAgPGxpYnJhcnkgbmFtZT0ibWRoLWxhZG9rLTEuNCI+CisgICAgICA8Q0xBU1NFUz4KKyAgICAgICAgPHJvb3QgdXJsPSJqYXI6Ly9DOi9saWIvbGFkb2svUkVMRUFTRS0xXzQvbGFkb2suamFyIS8iIC8+CisgICAgICA8L0NMQVNTRVM+CisgICAgICA8SkFWQURPQyAvPgorICAgICAgPFNPVVJDRVMgLz4KKyAgICA8L2xpYnJhcnk+CisgICAgPGxpYnJhcnkgbmFtZT0ibWRoLWxhZG9rLTIuMCI+CisgICAgICA8Q0xBU1NFUz4KKyAgICAgICAgPHJvb3QgdXJsPSJqYXI6Ly9DOi9saWIvbGFkb2svUkVMRUFTRS0yXzAvc2hhcmVkL2xpYi9sYWRvay1zaGFyZWQuamFyIS8iIC8+CisgICAgICA8L0NMQVNTRVM+CisgICAgICA8SkFWQURPQz4KKyAgICAgICAgPHJvb3QgdXJsPSJmaWxlOi8vQzovbGliL2xhZG9rL1JFTEVBU0UtMl8wL3NoYXJlZC9kb2NzL2FwaSIgLz4KKyAgICAgIDwvSkFWQURPQz4KKyAgICAgIDxTT1VSQ0VTIC8+CisgICAgPC9saWJyYXJ5PgorICAgIDxsaWJyYXJ5IG5hbWU9Im1kaC1sYWRvay0yLjEiPgorICAgICAgPENMQVNTRVM+CisgICAgICAgIDxyb290IHVybD0iamFyOi8vQzovbGliL2xhZG9rL1JFTEVBU0UtMl8xL3NoYXJlZC9saWIvbGFkb2stc2hhcmVkLmphciEvIiAvPgorICAgICAgPC9DTEFTU0VTPgorICAgICAgPEpBVkFET0M+CisgICAgICAgIDxyb290IHVybD0iZmlsZTovL0M6L2xpYi9sYWRvay9SRUxFQVNFLTJfMS9zaGFyZWQvZG9jcy9hcGkiIC8+CisgICAgICA8L0pBVkFET0M+CisgICAgICA8U09VUkNFUyAvPgorICAgIDwvbGlicmFyeT4KKyAgICA8bGlicmFyeSBuYW1lPSJtZGgtbGFkb2stMi4yIj4KKyAgICAgIDxDTEFTU0VTPgorICAgICAgICA8cm9vdCB1cmw9ImphcjovL0M6L2xpYi9sYWRvay9SRUxFQVNFLTJfMi9zaGFyZWQvbGliL2xhZG9rLXNoYXJlZC5qYXIhLyIgLz4KKyAgICAgIDwvQ0xBU1NFUz4KKyAgICAgIDxKQVZBRE9DPgorICAgICAgICA8cm9vdCB1cmw9ImZpbGU6Ly9DOi9saWIvbGFkb2svUkVMRUFTRS0yXzIvc2hhcmVkL2RvY3MvYXBpIiAvPgorICAgICAgPC9KQVZBRE9DPgorICAgICAgPFNPVVJDRVMgLz4KKyAgICA8L2xpYnJhcnk+CisgICAgPGxpYnJhcnkgbmFtZT0ibWRoLW5kcy0yLjMiPgorICAgICAgPENMQVNTRVM+CisgICAgICAgIDxyb290IHVybD0iamFyOi8vQzovbGliL25kcy9SRUxFQVNFLTJfMy9uZHMuamFyIS8iIC8+CisgICAgICA8L0NMQVNTRVM+CisgICAgICA8SkFWQURPQyAvPgorICAgICAgPFNPVVJDRVMgLz4KKyAgICA8L2xpYnJhcnk+CisgICAgPGxpYnJhcnkgbmFtZT0ibWRoLW5kcy0yLjQiPgorICAgICAgPENMQVNTRVM+CisgICAgICAgIDxyb290IHVybD0iamFyOi8vQzovbGliL25kcy9SRUxFQVNFLTJfNC9uZHMuamFyIS8iIC8+CisgICAgICA8L0NMQVNTRVM+CisgICAgICA8SkFWQURPQz4KKyAgICAgICAgPHJvb3QgdXJsPSJmaWxlOi8vQzovbGliL25kcy9SRUxFQVNFLTJfNC9kb2NzL2FwaSIgLz4KKyAgICAgIDwvSkFWQURPQz4KKyAgICAgIDxTT1VSQ0VTIC8+CisgICAgPC9saWJyYXJ5PgorICAgIDxsaWJyYXJ5IG5hbWU9Im1kaC1uZHMtYWRtaW4tMi4zIj4KKyAgICAgIDxDTEFTU0VTPgorICAgICAgICA8cm9vdCB1cmw9ImphcjovL0M6L2xpYi9uZHMvUkVMRUFTRS0yXzMvbmRzLWFkbWluLmphciEvIiAvPgorICAgICAgPC9DTEFTU0VTPgorICAgICAgPEpBVkFET0MgLz4KKyAgICAgIDxTT1VSQ0VTIC8+CisgICAgPC9saWJyYXJ5PgorICAgIDxsaWJyYXJ5IG5hbWU9Im1kaC1uZHMtYWRtaW4tMi40Ij4KKyAgICAgIDxDTEFTU0VTPgorICAgICAgICA8cm9vdCB1cmw9ImphcjovL0M6L2xpYi9uZHMvUkVMRUFTRS0yXzQvbmRzLWFkbWluLmphciEvIiAvPgorICAgICAgPC9DTEFTU0VTPgorICAgICAgPEpBVkFET0M+CisgICAgICAgIDxyb290IHVybD0iZmlsZTovL0M6L2xpYi9uZHMvUkVMRUFTRS0yXzQvZG9jcy9hcGkiIC8+CisgICAgICA8L0pBVkFET0M+CisgICAgICA8U09VUkNFUyAvPgorICAgIDwvbGlicmFyeT4KKyAgICA8bGlicmFyeSBuYW1lPSJtZGgtbnloZXQtMi41Ij4KKyAgICAgIDxDTEFTU0VTPgorICAgICAgICA8cm9vdCB1cmw9ImphcjovL0M6L2xpYi9ueWhldC9SRUxFQVNFLTJfNS9ueWhldC5qYXIhLyIgLz4KKyAgICAgIDwvQ0xBU1NFUz4KKyAgICAgIDxKQVZBRE9DIC8+CisgICAgICA8U09VUkNFUz4KKyAgICAgICAgPHJvb3QgdXJsPSJmaWxlOi8vQzovcmVsZWFzZS9ueWhldC9zcmMiIC8+CisgICAgICA8L1NPVVJDRVM+CisgICAgPC9saWJyYXJ5PgorICAgIDxsaWJyYXJ5IG5hbWU9Im1kaC1ueWhldC0zLjAuMSI+CisgICAgICA8Q0xBU1NFUz4KKyAgICAgICAgPHJvb3QgdXJsPSJqYXI6Ly9DOi9saWIvbnloZXQvUkVMRUFTRS0zXzBfMS9zaGFyZWQvbGliL255aGV0LXNoYXJlZC5qYXIhLyIgLz4KKyAgICAgIDwvQ0xBU1NFUz4KKyAgICAgIDxKQVZBRE9DPgorICAgICAgICA8cm9vdCB1cmw9ImZpbGU6Ly9DOi9saWIvbnloZXQvUkVMRUFTRS0zXzBfMS9zaGFyZWQvZG9jcy9hcGkiIC8+CisgICAgICA8L0pBVkFET0M+CisgICAgICA8U09VUkNFUyAvPgorICAgIDwvbGlicmFyeT4KKyAgICA8bGlicmFyeSBuYW1lPSJtZGgtcGFzLWFkbWluLTEuMi4xIj4KKyAgICAgIDxDTEFTU0VTPgorICAgICAgICA8cm9vdCB1cmw9ImphcjovL0M6L2xpYi9wYXMvUkVMRUFTRS0xXzJfMS9wYXMtYWRtaW4uamFyIS8iIC8+CisgICAgICA8L0NMQVNTRVM+CisgICAgICA8SkFWQURPQyAvPgorICAgICAgPFNPVVJDRVM+CisgICAgICAgIDxyb290IHVybD0iZmlsZTovL0M6L3JlbGVhc2UvcGFzL3NyYyIgLz4KKyAgICAgIDwvU09VUkNFUz4KKyAgICA8L2xpYnJhcnk+CisgICAgPGxpYnJhcnkgbmFtZT0ibWRoLXBhc3NhZ2UtYWRtaW4tMi41Ij4KKyAgICAgIDxDTEFTU0VTPgorICAgICAgICA8cm9vdCB1cmw9ImphcjovL0M6L2xpYi9wYXNzYWdlL1JFTEVBU0UtMl81L3Bhc3NhZ2UtYWRtaW4uamFyIS8iIC8+CisgICAgICA8L0NMQVNTRVM+CisgICAgICA8SkFWQURPQyAvPgorICAgICAgPFNPVVJDRVM+CisgICAgICAgIDxyb290IHVybD0iZmlsZTovL0M6L3JlbGVhc2UvcGFzc2FnZS9zcmMiIC8+CisgICAgICA8L1NPVVJDRVM+CisgICAgPC9saWJyYXJ5PgorICAgIDxsaWJyYXJ5IG5hbWU9Im1kaC1wZXJzb25hbC01LjAiPgorICAgICAgPENMQVNTRVM+CisgICAgICAgIDxyb290IHVybD0iamFyOi8vQzovbGliL3BlcnNvbmFsL1JFTEVBU0UtNV8wL3NoYXJlZC9saWIvcGVyc29uYWwtc2hhcmVkLmphciEvIiAvPgorICAgICAgPC9DTEFTU0VTPgorICAgICAgPEpBVkFET0MgLz4KKyAgICAgIDxTT1VSQ0VTPgorICAgICAgICA8cm9vdCB1cmw9ImZpbGU6Ly9DOi9yZWxlYXNlL3BlcnNvbmFsL3NoYXJlZC9zcmMiIC8+CisgICAgICA8L1NPVVJDRVM+CisgICAgPC9saWJyYXJ5PgorICAgIDxsaWJyYXJ5IG5hbWU9Im1kaC1wZXJzb25hbC01LjMiPgorICAgICAgPENMQVNTRVM+CisgICAgICAgIDxyb290IHVybD0iamFyOi8vQzovbGliL3BlcnNvbmFsL1JFTEVBU0UtNV8zL3NoYXJlZC9saWIvcGVyc29uYWwtc2hhcmVkLmphciEvIiAvPgorICAgICAgPC9DTEFTU0VTPgorICAgICAgPEpBVkFET0MgLz4KKyAgICAgIDxTT1VSQ0VTPgorICAgICAgICA8cm9vdCB1cmw9ImZpbGU6Ly9DOi9yZWxlYXNlL3BlcnNvbmFsL3NoYXJlZC9zcmMiIC8+CisgICAgICA8L1NPVVJDRVM+CisgICAgPC9saWJyYXJ5PgorICAgIDxsaWJyYXJ5IG5hbWU9Im1kaC1wZXJzb25hbC01LjMuMSI+CisgICAgICA8Q0xBU1NFUz4KKyAgICAgICAgPHJvb3QgdXJsPSJqYXI6Ly9DOi9saWIvcGVyc29uYWwvUkVMRUFTRS01XzNfMS9zaGFyZWQvbGliL3BlcnNvbmFsLXNoYXJlZC5qYXIhLyIgLz4KKyAgICAgIDwvQ0xBU1NFUz4KKyAgICAgIDxKQVZBRE9DIC8+CisgICAgICA8U09VUkNFUz4KKyAgICAgICAgPHJvb3QgdXJsPSJmaWxlOi8vQzovcmVsZWFzZS9wZXJzb25hbC9zaGFyZWQvc3JjIiAvPgorICAgICAgPC9TT1VSQ0VTPgorICAgIDwvbGlicmFyeT4KKyAgICA8bGlicmFyeSBuYW1lPSJtZGgtcG9ydGFsLTIuMSI+CisgICAgICA8Q0xBU1NFUz4KKyAgICAgICAgPHJvb3QgdXJsPSJqYXI6Ly9DOi9saWIvcG9ydGFsL1JFTEVBU0UtMl8xL3BvcnRhbC9saWIvcG9ydGFsLmphciEvIiAvPgorICAgICAgPC9DTEFTU0VTPgorICAgICAgPEpBVkFET0M+CisgICAgICAgIDxyb290IHVybD0iZmlsZTovL0M6L2xpYi9wb3J0YWwvUkVMRUFTRS0yXzEvcG9ydGFsL2RvY3MvYXBpIiAvPgorICAgICAgPC9KQVZBRE9DPgorICAgICAgPFNPVVJDRVMgLz4KKyAgICA8L2xpYnJhcnk+CisgICAgPGxpYnJhcnkgbmFtZT0ibWRoLXJvYm90LTEuMSI+CisgICAgICA8Q0xBU1NFUz4KKyAgICAgICAgPHJvb3QgdXJsPSJqYXI6Ly9DOi9saWIvcm9ib3QvUkVMRUFTRS0xXzEvcm9ib3QuamFyIS8iIC8+CisgICAgICA8L0NMQVNTRVM+CisgICAgICA8SkFWQURPQz4KKyAgICAgICAgPHJvb3QgdXJsPSJmaWxlOi8vQzovbGliL3JvYm90L1JFTEVBU0UtMV8xL2RvY3MvYXBpIiAvPgorICAgICAgPC9KQVZBRE9DPgorICAgICAgPFNPVVJDRVMgLz4KKyAgICA8L2xpYnJhcnk+CisgICAgPGxpYnJhcnkgbmFtZT0ibWRoLXNjaGVtYS0yLjciPgorICAgICAgPENMQVNTRVM+CisgICAgICAgIDxyb290IHVybD0iamFyOi8vQzovbGliL3NjaGVtYS9SRUxFQVNFLTJfNy9zY2hlbWEuamFyIS8iIC8+CisgICAgICA8L0NMQVNTRVM+CisgICAgICA8SkFWQURPQyAvPgorICAgICAgPFNPVVJDRVM+CisgICAgICAgIDxyb290IHVybD0iZmlsZTovL0M6L3JlbGVhc2Uvc2NoZW1hL3NyYyIgLz4KKyAgICAgIDwvU09VUkNFUz4KKyAgICA8L2xpYnJhcnk+CisgICAgPGxpYnJhcnkgbmFtZT0ibWRoLXNjaGVtYS0zLjAuMiI+CisgICAgICA8Q0xBU1NFUz4KKyAgICAgICAgPHJvb3QgdXJsPSJqYXI6Ly9DOi9saWIvc2NoZW1hL1JFTEVBU0UtM18wXzIvc2hhcmVkL2xpYi9zY2hlbWEtc2hhcmVkLmphciEvIiAvPgorICAgICAgPC9DTEFTU0VTPgorICAgICAgPEpBVkFET0M+CisgICAgICAgIDxyb290IHVybD0iZmlsZTovL0M6L2xpYi9zY2hlbWEvUkVMRUFTRS0zXzBfMi9zaGFyZWQvZG9jcy9hcGkiIC8+CisgICAgICA8L0pBVkFET0M+CisgICAgICA8U09VUkNFUyAvPgorICAgIDwvbGlicmFyeT4KKyAgICA8bGlicmFyeSBuYW1lPSJtZGgtc2NoZW1hLTMuMC4zIj4KKyAgICAgIDxDTEFTU0VTPgorICAgICAgICA8cm9vdCB1cmw9ImphcjovL0M6L2xpYi9zY2hlbWEvUkVMRUFTRS0zXzBfMy9zaGFyZWQvbGliL3NjaGVtYS1zaGFyZWQuamFyIS8iIC8+CisgICAgICA8L0NMQVNTRVM+CisgICAgICA8SkFWQURPQz4KKyAgICAgICAgPHJvb3QgdXJsPSJmaWxlOi8vQzovbGliL3NjaGVtYS9SRUxFQVNFLTNfMF8zL3NoYXJlZC9kb2NzL2FwaSIgLz4KKyAgICAgIDwvSkFWQURPQz4KKyAgICAgIDxTT1VSQ0VTIC8+CisgICAgPC9saWJyYXJ5PgorICAgIDxsaWJyYXJ5IG5hbWU9Im1kaC1zZXJ2bGV0LTEuNC4yIj4KKyAgICAgIDxDTEFTU0VTPgorICAgICAgICA8cm9vdCB1cmw9ImphcjovL0M6L2xpYi9zZXJ2bGV0L1JFTEVBU0UtMV80XzIvc2VydmxldC5qYXIhLyIgLz4KKyAgICAgIDwvQ0xBU1NFUz4KKyAgICAgIDxKQVZBRE9DIC8+CisgICAgICA8U09VUkNFUyAvPgorICAgIDwvbGlicmFyeT4KKyAgICA8bGlicmFyeSBuYW1lPSJtZGgtc2VydmxldC0xLjQuMyI+CisgICAgICA8Q0xBU1NFUz4KKyAgICAgICAgPHJvb3QgdXJsPSJqYXI6Ly9DOi9saWIvc2VydmxldC9SRUxFQVNFLTFfNF8zL3NlcnZsZXQuamFyIS8iIC8+CisgICAgICA8L0NMQVNTRVM+CisgICAgICA8SkFWQURPQyAvPgorICAgICAgPFNPVVJDRVMgLz4KKyAgICA8L2xpYnJhcnk+CisgICAgPGxpYnJhcnkgbmFtZT0ibWRoLXNlcnZsZXQtMi4xIj4KKyAgICAgIDxDTEFTU0VTPgorICAgICAgICA8cm9vdCB1cmw9ImphcjovL0M6L2xpYi9zZXJ2bGV0L1JFTEVBU0UtMl8xL3NlcnZsZXQuamFyIS8iIC8+CisgICAgICA8L0NMQVNTRVM+CisgICAgICA8SkFWQURPQz4KKyAgICAgICAgPHJvb3QgdXJsPSJmaWxlOi8vQzovbGliL3NlcnZsZXQvUkVMRUFTRS0yXzFfMS9kb2NzL2FwaSIgLz4KKyAgICAgIDwvSkFWQURPQz4KKyAgICAgIDxTT1VSQ0VTIC8+CisgICAgPC9saWJyYXJ5PgorICAgIDxsaWJyYXJ5IG5hbWU9Im1kaC1zZXJ2bGV0LTIuMS4xIj4KKyAgICAgIDxDTEFTU0VTPgorICAgICAgICA8cm9vdCB1cmw9ImphcjovL0M6L2xpYi9zZXJ2bGV0L1JFTEVBU0UtMl8xXzEvc2VydmxldC5qYXIhLyIgLz4KKyAgICAgIDwvQ0xBU1NFUz4KKyAgICAgIDxKQVZBRE9DPgorICAgICAgICA8cm9vdCB1cmw9ImZpbGU6Ly9DOi9saWIvc2VydmxldC9SRUxFQVNFLTJfMV8xL2RvY3MvYXBpIiAvPgorICAgICAgPC9KQVZBRE9DPgorICAgICAgPFNPVVJDRVMgLz4KKyAgICA8L2xpYnJhcnk+CisgICAgPGxpYnJhcnkgbmFtZT0ibWRoLXNpYy0zLjEiPgorICAgICAgPENMQVNTRVM+CisgICAgICAgIDxyb290IHVybD0iamFyOi8vQzovbGliL3NpYy9SRUxFQVNFLTNfMS9zaWMuamFyIS8iIC8+CisgICAgICA8L0NMQVNTRVM+CisgICAgICA8SkFWQURPQz4KKyAgICAgICAgPHJvb3QgdXJsPSJmaWxlOi8vQzovcmVsZWFzZS9zaWMvc3JjIiAvPgorICAgICAgPC9KQVZBRE9DPgorICAgICAgPFNPVVJDRVMgLz4KKyAgICA8L2xpYnJhcnk+CisgICAgPGxpYnJhcnkgbmFtZT0ibWRoLXNpYy00LjEuMSI+CisgICAgICA8Q0xBU1NFUz4KKyAgICAgICAgPHJvb3QgdXJsPSJqYXI6Ly9DOi9saWIvc2ljL1JFTEVBU0UtNF8xXzEvc2hhcmVkL2xpYi9zaWMtc2hhcmVkLmphciEvIiAvPgorICAgICAgPC9DTEFTU0VTPgorICAgICAgPEpBVkFET0M+CisgICAgICAgIDxyb290IHVybD0iZmlsZTovL0M6L2xpYi9zaWMvUkVMRUFTRS00XzFfMS9zaGFyZWQvZG9jcy9hcGkiIC8+CisgICAgICA8L0pBVkFET0M+CisgICAgICA8U09VUkNFUyAvPgorICAgIDwvbGlicmFyeT4KKyAgICA8bGlicmFyeSBuYW1lPSJtZGgtc2ljLTQuMiI+CisgICAgICA8Q0xBU1NFUz4KKyAgICAgICAgPHJvb3QgdXJsPSJqYXI6Ly9DOi9saWIvc2ljL1JFTEVBU0UtNF8yL3NoYXJlZC9saWIvc2ljLXNoYXJlZC5qYXIhLyIgLz4KKyAgICAgIDwvQ0xBU1NFUz4KKyAgICAgIDxKQVZBRE9DPgorICAgICAgICA8cm9vdCB1cmw9ImZpbGU6Ly9DOi9saWIvc2ljL1JFTEVBU0UtNF8yL3NoYXJlZC9kb2NzL2FwaSIgLz4KKyAgICAgIDwvSkFWQURPQz4KKyAgICAgIDxTT1VSQ0VTIC8+CisgICAgPC9saWJyYXJ5PgorICAgIDxsaWJyYXJ5IG5hbWU9Im1kaC1zdHVkaWVpbmZvcm1hdGlvbi0zLjQiPgorICAgICAgPENMQVNTRVM+CisgICAgICAgIDxyb290IHVybD0iamFyOi8vQzovbGliL3N0dWRpZWluZm9ybWF0aW9uL1JFTEVBU0UtM180L3N0dWRpZWluZm9ybWF0aW9uLmphciEvIiAvPgorICAgICAgPC9DTEFTU0VTPgorICAgICAgPEpBVkFET0MgLz4KKyAgICAgIDxTT1VSQ0VTIC8+CisgICAgPC9saWJyYXJ5PgorICAgIDxsaWJyYXJ5IG5hbWU9Im1kaC1zdHVkaWVpbmZvcm1hdGlvbi00LjAiPgorICAgICAgPENMQVNTRVM+CisgICAgICAgIDxyb290IHVybD0iamFyOi8vQzovbGliL3N0dWRpZWluZm9ybWF0aW9uL1JFTEVBU0UtNF8wL3NoYXJlZC9saWIvc3R1ZGllaW5mb3JtYXRpb24tc2hhcmVkLmphciEvIiAvPgorICAgICAgPC9DTEFTU0VTPgorICAgICAgPEpBVkFET0M+CisgICAgICAgIDxyb290IHVybD0iZmlsZTovL0M6L2xpYi9zdHVkaWVpbmZvcm1hdGlvbi9SRUxFQVNFLTRfMC9zaGFyZWQvZG9jcy9hcGkiIC8+CisgICAgICA8L0pBVkFET0M+CisgICAgICA8U09VUkNFUyAvPgorICAgIDwvbGlicmFyeT4KKyAgICA8bGlicmFyeSBuYW1lPSJtZGgtc3R1ZGllaW5mb3JtYXRpb24tNC4yLjEiPgorICAgICAgPENMQVNTRVM+CisgICAgICAgIDxyb290IHVybD0iamFyOi8vQzovbGliL3N0dWRpZWluZm9ybWF0aW9uL1JFTEVBU0UtNF8yXzEvc2hhcmVkL2xpYi9zdHVkaWVpbmZvcm1hdGlvbi1zaGFyZWQuamFyIS8iIC8+CisgICAgICA8L0NMQVNTRVM+CisgICAgICA8SkFWQURPQz4KKyAgICAgICAgPHJvb3QgdXJsPSJmaWxlOi8vQzovbGliL3N0dWRpZWluZm9ybWF0aW9uL1JFTEVBU0UtNF8yXzEvc2hhcmVkL2RvY3MvYXBpIiAvPgorICAgICAgPC9KQVZBRE9DPgorICAgICAgPFNPVVJDRVMgLz4KKyAgICA8L2xpYnJhcnk+CisgICAgPGxpYnJhcnkgbmFtZT0ibWRoLXN0dWRpZWluZm9ybWF0aW9uLWFkbWluLTMuNS4yIj4KKyAgICAgIDxDTEFTU0VTPgorICAgICAgICA8cm9vdCB1cmw9ImphcjovL0M6L2xpYi9zdHVkaWVpbmZvcm1hdGlvbi9SRUxFQVNFLTNfNV8yL3N0dWRpZWluZm9ybWF0aW9uLWFkbWluLmphciEvIiAvPgorICAgICAgPC9DTEFTU0VTPgorICAgICAgPEpBVkFET0MgLz4KKyAgICAgIDxTT1VSQ0VTIC8+CisgICAgPC9saWJyYXJ5PgorICAgIDxsaWJyYXJ5IG5hbWU9Im1kaC1zd2luZy0xLjEiPgorICAgICAgPENMQVNTRVM+CisgICAgICAgIDxyb290IHVybD0iamFyOi8vQzovbGliL3N3aW5nL1JFTEVBU0UtMV8xL3N3aW5nLmphciEvIiAvPgorICAgICAgPC9DTEFTU0VTPgorICAgICAgPEpBVkFET0M+CisgICAgICAgIDxyb290IHVybD0iZmlsZTovL0M6L2xpYi9zd2luZy9SRUxFQVNFLTFfMS9kb2NzL2FwaSIgLz4KKyAgICAgIDwvSkFWQURPQz4KKyAgICAgIDxTT1VSQ0VTIC8+CisgICAgPC9saWJyYXJ5PgorICAgIDxsaWJyYXJ5IG5hbWU9Im1kaC1zd2luZy0xLjIiPgorICAgICAgPENMQVNTRVM+CisgICAgICAgIDxyb290IHVybD0iamFyOi8vQzovbGliL3N3aW5nL1JFTEVBU0UtMV8yL3N3aW5nLmphciEvIiAvPgorICAgICAgPC9DTEFTU0VTPgorICAgICAgPEpBVkFET0M+CisgICAgICAgIDxyb290IHVybD0iZmlsZTovL0M6L2xpYi9zd2luZy9SRUxFQVNFLTFfMi9kb2NzL2FwaSIgLz4KKyAgICAgIDwvSkFWQURPQz4KKyAgICAgIDxTT1VSQ0VTIC8+CisgICAgPC9saWJyYXJ5PgorICAgIDxsaWJyYXJ5IG5hbWU9Im1kaC10YWdsaWItaHRtbC0xLjUiPgorICAgICAgPENMQVNTRVM+CisgICAgICAgIDxyb290IHVybD0iamFyOi8vQzovbGliL3RhZ2xpYi9SRUxFQVNFLTFfNS9odG1sL2xpYi90YWdsaWItaHRtbC5qYXIhLyIgLz4KKyAgICAgIDwvQ0xBU1NFUz4KKyAgICAgIDxKQVZBRE9DPgorICAgICAgICA8cm9vdCB1cmw9ImZpbGU6Ly9DOi9saWIvdGFnbGliL1JFTEVBU0UtMV81L2h0bWwvZG9jcy9hcGkiIC8+CisgICAgICA8L0pBVkFET0M+CisgICAgICA8U09VUkNFUyAvPgorICAgIDwvbGlicmFyeT4KKyAgICA8bGlicmFyeSBuYW1lPSJtZGgtdGFnbGliLWh0bWwtMS42Ij4KKyAgICAgIDxDTEFTU0VTPgorICAgICAgICA8cm9vdCB1cmw9ImphcjovL0M6L2xpYi90YWdsaWIvUkVMRUFTRS0xXzYvaHRtbC9saWIvdGFnbGliLWh0bWwuamFyIS8iIC8+CisgICAgICA8L0NMQVNTRVM+CisgICAgICA8SkFWQURPQz4KKyAgICAgICAgPHJvb3QgdXJsPSJmaWxlOi8vQzovbGliL3RhZ2xpYi9SRUxFQVNFLTFfNi9odG1sL2RvY3MvYXBpIiAvPgorICAgICAgPC9KQVZBRE9DPgorICAgICAgPFNPVVJDRVMgLz4KKyAgICA8L2xpYnJhcnk+CisgICAgPGxpYnJhcnkgbmFtZT0ibWRoLXRhZ2xpYi1zcHJhay0xLjUiPgorICAgICAgPENMQVNTRVM+CisgICAgICAgIDxyb290IHVybD0iamFyOi8vQzovbGliL3RhZ2xpYi9SRUxFQVNFLTFfNS9zcHJhay9saWIvdGFnbGliLXNwcmFrLmphciEvIiAvPgorICAgICAgPC9DTEFTU0VTPgorICAgICAgPEpBVkFET0M+CisgICAgICAgIDxyb290IHVybD0iZmlsZTovL0M6L2xpYi90YWdsaWIvUkVMRUFTRS0xXzUvc3ByYWsvZG9jcy9hcGkiIC8+CisgICAgICA8L0pBVkFET0M+CisgICAgICA8U09VUkNFUyAvPgorICAgIDwvbGlicmFyeT4KKyAgICA8bGlicmFyeSBuYW1lPSJtZGgtdGFnbGliLXNwcmFrLTEuNiI+CisgICAgICA8Q0xBU1NFUz4KKyAgICAgICAgPHJvb3QgdXJsPSJqYXI6Ly9DOi9saWIvdGFnbGliL1JFTEVBU0UtMV82L3NwcmFrL2xpYi90YWdsaWItc3ByYWsuamFyIS8iIC8+CisgICAgICA8L0NMQVNTRVM+CisgICAgICA8SkFWQURPQz4KKyAgICAgICAgPHJvb3QgdXJsPSJmaWxlOi8vQzovbGliL3RhZ2xpYi9SRUxFQVNFLTFfNi9zcHJhay9kb2NzL2FwaSIgLz4KKyAgICAgIDwvSkFWQURPQz4KKyAgICAgIDxTT1VSQ0VTIC8+CisgICAgPC9saWJyYXJ5PgorICAgIDxsaWJyYXJ5IG5hbWU9Im1kaC10YWdsaWItdG9rZW4tMS41Ij4KKyAgICAgIDxDTEFTU0VTPgorICAgICAgICA8cm9vdCB1cmw9ImphcjovL0M6L2xpYi90YWdsaWIvUkVMRUFTRS0xXzUvdG9rZW4vbGliL3RhZ2xpYi10b2tlbi5qYXIhLyIgLz4KKyAgICAgIDwvQ0xBU1NFUz4KKyAgICAgIDxKQVZBRE9DPgorICAgICAgICA8cm9vdCB1cmw9ImZpbGU6Ly9DOi9saWIvdGFnbGliL1JFTEVBU0UtMV81L3Rva2VuL2RvY3MvYXBpIiAvPgorICAgICAgPC9KQVZBRE9DPgorICAgICAgPFNPVVJDRVMgLz4KKyAgICA8L2xpYnJhcnk+CisgICAgPGxpYnJhcnkgbmFtZT0ibWRoLXRhZ2xpYi10b2tlbi0xLjYiPgorICAgICAgPENMQVNTRVM+CisgICAgICAgIDxyb290IHVybD0iamFyOi8vQzovbGliL3RhZ2xpYi9SRUxFQVNFLTFfNi90b2tlbi9saWIvdGFnbGliLXRva2VuLmphciEvIiAvPgorICAgICAgPC9DTEFTU0VTPgorICAgICAgPEpBVkFET0M+CisgICAgICAgIDxyb290IHVybD0iZmlsZTovL0M6L2xpYi90YWdsaWIvUkVMRUFTRS0xXzYvdG9rZW4vZG9jcy9hcGkiIC8+CisgICAgICA8L0pBVkFET0M+CisgICAgICA8U09VUkNFUyAvPgorICAgIDwvbGlicmFyeT4KKyAgICA8bGlicmFyeSBuYW1lPSJtZGgtdXRpbC0yLjAuMSI+CisgICAgICA8Q0xBU1NFUz4KKyAgICAgICAgPHJvb3QgdXJsPSJqYXI6Ly9DOi9saWIvdXRpbC9SRUxFQVNFLTJfMF8xL3V0aWwuamFyIS8iIC8+CisgICAgICA8L0NMQVNTRVM+CisgICAgICA8SkFWQURPQyAvPgorICAgICAgPFNPVVJDRVMgLz4KKyAgICA8L2xpYnJhcnk+CisgICAgPGxpYnJhcnkgbmFtZT0ibWRoLXV0aWwtMi4xIj4KKyAgICAgIDxDTEFTU0VTPgorICAgICAgICA8cm9vdCB1cmw9ImphcjovL0M6L2xpYi91dGlsL1JFTEVBU0UtMl8xL3V0aWwuamFyIS8iIC8+CisgICAgICA8L0NMQVNTRVM+CisgICAgICA8SkFWQURPQyAvPgorICAgICAgPFNPVVJDRVMgLz4KKyAgICA8L2xpYnJhcnk+CisgICAgPGxpYnJhcnkgbmFtZT0ibWRoLXV0aWwtMi4yIj4KKyAgICAgIDxDTEFTU0VTPgorICAgICAgICA8cm9vdCB1cmw9ImphcjovL0M6L2xpYi91dGlsL1JFTEVBU0UtMl8yL3V0aWwuamFyIS8iIC8+CisgICAgICA8L0NMQVNTRVM+CisgICAgICA8SkFWQURPQz4KKyAgICAgICAgPHJvb3QgdXJsPSJmaWxlOi8vQzovbGliL3V0aWwvUkVMRUFTRS0yXzIvZG9jcy9hcGkiIC8+CisgICAgICA8L0pBVkFET0M+CisgICAgICA8U09VUkNFUyAvPgorICAgIDwvbGlicmFyeT4KKyAgICA8bGlicmFyeSBuYW1lPSJtZGgtdXRpbC0yLjMiPgorICAgICAgPENMQVNTRVM+CisgICAgICAgIDxyb290IHVybD0iamFyOi8vQzovbGliL3V0aWwvUkVMRUFTRS0yXzMvdXRpbC5qYXIhLyIgLz4KKyAgICAgIDwvQ0xBU1NFUz4KKyAgICAgIDxKQVZBRE9DPgorICAgICAgICA8cm9vdCB1cmw9ImZpbGU6Ly9DOi9saWIvdXRpbC9SRUxFQVNFLTJfMy9kb2NzL2FwaSIgLz4KKyAgICAgIDwvSkFWQURPQz4KKyAgICAgIDxTT1VSQ0VTIC8+CisgICAgPC9saWJyYXJ5PgorICAgIDxsaWJyYXJ5IG5hbWU9Im1kaC11dGlsLTIuMy4xIj4KKyAgICAgIDxDTEFTU0VTPgorICAgICAgICA8cm9vdCB1cmw9ImphcjovL0M6L2xpYi91dGlsL1JFTEVBU0UtMl8zXzEvdXRpbC5qYXIhLyIgLz4KKyAgICAgIDwvQ0xBU1NFUz4KKyAgICAgIDxKQVZBRE9DPgorICAgICAgICA8cm9vdCB1cmw9ImZpbGU6Ly9DOi9saWIvdXRpbC9SRUxFQVNFLTJfM18xL2RvY3MvYXBpIiAvPgorICAgICAgPC9KQVZBRE9DPgorICAgICAgPFNPVVJDRVMgLz4KKyAgICA8L2xpYnJhcnk+CisgICAgPGxpYnJhcnkgbmFtZT0ibWRoLXV0aWwtYXBwbGV0LTIuMiI+CisgICAgICA8Q0xBU1NFUz4KKyAgICAgICAgPHJvb3QgdXJsPSJqYXI6Ly9DOi9saWIvdXRpbC9SRUxFQVNFLTJfMi91dGlsLWFwcGxldC5qYXIhLyIgLz4KKyAgICAgIDwvQ0xBU1NFUz4KKyAgICAgIDxKQVZBRE9DPgorICAgICAgICA8cm9vdCB1cmw9ImZpbGU6Ly9DOi9saWIvdXRpbC9SRUxFQVNFLTJfMi9kb2NzL2FwaSIgLz4KKyAgICAgIDwvSkFWQURPQz4KKyAgICAgIDxTT1VSQ0VTIC8+CisgICAgPC9saWJyYXJ5PgorICAgIDxsaWJyYXJ5IG5hbWU9Im1kaC11dGlsLWFwcGxldC0yLjMuMSI+CisgICAgICA8Q0xBU1NFUz4KKyAgICAgICAgPHJvb3QgdXJsPSJqYXI6Ly9DOi9saWIvdXRpbC9SRUxFQVNFLTJfM18xL3V0aWwtYXBwbGV0LmphciEvIiAvPgorICAgICAgPC9DTEFTU0VTPgorICAgICAgPEpBVkFET0M+CisgICAgICAgIDxyb290IHVybD0iZmlsZTovL0M6L2xpYi91dGlsL1JFTEVBU0UtMl8zXzEvZG9jcy9hcGkiIC8+CisgICAgICA8L0pBVkFET0M+CisgICAgICA8U09VUkNFUyAvPgorICAgIDwvbGlicmFyeT4KKyAgICA8bGlicmFyeSBuYW1lPSJteXNxbC0yLjAiPgorICAgICAgPENMQVNTRVM+CisgICAgICAgIDxyb290IHVybD0iamFyOi8vQzovbGliL2V4dC9teXNxbC8yXzAvbXlzcWwuamFyIS8iIC8+CisgICAgICA8L0NMQVNTRVM+CisgICAgICA8SkFWQURPQyAvPgorICAgICAgPFNPVVJDRVMgLz4KKyAgICA8L2xpYnJhcnk+CisgICAgPGxpYnJhcnkgbmFtZT0ibXlzcWwtMy4wIj4KKyAgICAgIDxDTEFTU0VTPgorICAgICAgICA8cm9vdCB1cmw9ImphcjovL0M6L2xpYi9leHQvbXlzcWwvM18wL215c3FsLmphciEvIiAvPgorICAgICAgPC9DTEFTU0VTPgorICAgICAgPEpBVkFET0MgLz4KKyAgICAgIDxTT1VSQ0VTIC8+CisgICAgPC9saWJyYXJ5PgorICAgIDxsaWJyYXJ5IG5hbWU9Im9yYWNsZSI+CisgICAgICA8Q0xBU1NFUz4KKyAgICAgICAgPHJvb3QgdXJsPSJqYXI6Ly9DOi9saWIvZGlzdC9jbGFzc2VzMTIuemlwIS8iIC8+CisgICAgICA8L0NMQVNTRVM+CisgICAgICA8SkFWQURPQyAvPgorICAgICAgPFNPVVJDRVMgLz4KKyAgICA8L2xpYnJhcnk+CisgICAgPGxpYnJhcnkgbmFtZT0ib3JhY2xlLTguMSI+CisgICAgICA8Q0xBU1NFUz4KKyAgICAgICAgPHJvb3QgdXJsPSJqYXI6Ly9DOi9saWIvZXh0L29yYWNsZS84XzEvb3JhY2xlLmphciEvIiAvPgorICAgICAgPC9DTEFTU0VTPgorICAgICAgPEpBVkFET0MgLz4KKyAgICAgIDxTT1VSQ0VTIC8+CisgICAgPC9saWJyYXJ5PgorICAgIDxsaWJyYXJ5IG5hbWU9Im9ydS0yLjAuMSI+CisgICAgICA8Q0xBU1NFUz4KKyAgICAgICAgPHJvb3QgdXJsPSJqYXI6Ly9DOi9saWIvb3J1L1JFTEVBU0UtMl8wXzEvb3J1LmphciEvIiAvPgorICAgICAgPC9DTEFTU0VTPgorICAgICAgPEpBVkFET0M+CisgICAgICAgIDxyb290IHVybD0iZmlsZTovL0M6L2xpYi9vcnUvUkVMRUFTRS0yXzBfMS9kb2NzL2FwaSIgLz4KKyAgICAgIDwvSkFWQURPQz4KKyAgICAgIDxTT1VSQ0VTIC8+CisgICAgPC9saWJyYXJ5PgorICAgIDxsaWJyYXJ5IG5hbWU9InNlcnZsZXQtYXBpLTIuMyI+CisgICAgICA8Q0xBU1NFUz4KKyAgICAgICAgPHJvb3QgdXJsPSJqYXI6Ly9DOi9saWIvZXh0L3NlcnZsZXQvMl8zL3NlcnZsZXQuamFyIS8iIC8+CisgICAgICA8L0NMQVNTRVM+CisgICAgICA8SkFWQURPQz4KKyAgICAgICAgPHJvb3QgdXJsPSJmaWxlOi8vQzovbGliL2V4dC9zZXJ2bGV0LzJfMy9zZXJ2bGV0LTJfMy1mY3MtZG9jcyIgLz4KKyAgICAgICAgPHJvb3QgdXJsPSJmaWxlOi8vQzovbGliL2V4dC9zZXJ2bGV0LzJfMy9qc3AtMV8yLWZjcy1kb2NzIiAvPgorICAgICAgPC9KQVZBRE9DPgorICAgICAgPFNPVVJDRVMgLz4KKyAgICA8L2xpYnJhcnk+CisgICAgPGxpYnJhcnkgbmFtZT0id2VzdGVybWFyY2stdmNhbGVuZGFyIj4KKyAgICAgIDxDTEFTU0VTPgorICAgICAgICA8cm9vdCB1cmw9ImphcjovL0M6L2xpYi9leHQvd2VzdGVybWFyY2stdmNhbGVuZGFyL3dlc3Rlcm1hcmNrLXZjYWxlbmRhci5qYXIhLyIgLz4KKyAgICAgIDwvQ0xBU1NFUz4KKyAgICAgIDxKQVZBRE9DIC8+CisgICAgICA8U09VUkNFUyAvPgorICAgIDwvbGlicmFyeT4KKyAgICA8bGlicmFyeSBuYW1lPSJsb2c0am1vbml0b3IiPgorICAgICAgPENMQVNTRVM+CisgICAgICAgIDxyb290IHVybD0iamFyOi8vQzovUHJvZ3JhbS9JbnRlbGxpSi1JREVBLTMuMC41L2xpYi9sb2c0am1vbml0b3IuamFyIS8iIC8+CisgICAgICA8L0NMQVNTRVM+CisgICAgICA8SkFWQURPQyAvPgorICAgICAgPFNPVVJDRVMgLz4KKyAgICA8L2xpYnJhcnk+CisgIDwvY29tcG9uZW50PgorPC9hcHBsaWNhdGlvbj4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvbW9kdWxlUm9vdE1hbmFnZXIvY29udmVydG9yMzQvc2NyMjUyOTgvYmVmb3JlL2xpYnJhcnkudGFibGUueG1sIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL21vZHVsZVJvb3RNYW5hZ2VyL2NvbnZlcnRvcjM0L3NjcjI1Mjk4L2JlZm9yZS9saWJyYXJ5LnRhYmxlLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMmM4YmI3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL21vZHVsZVJvb3RNYW5hZ2VyL2NvbnZlcnRvcjM0L3NjcjI1Mjk4L2JlZm9yZS9saWJyYXJ5LnRhYmxlLnhtbApAQCAtMCwwICsxLDIwNDkgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8YXBwbGljYXRpb24+CisgIDxjb21wb25lbnQgbmFtZT0iUHJvamVjdExpYnJhcnlUYWJsZSI+CisgICAgPGxpYnJhcnk+CisgICAgICA8bmFtZSB2YWx1ZT0iYWN0aXZhdGlvbiIgLz4KKyAgICAgIDxyb290cz4KKyAgICAgICAgPHByb2plY3RQYXRoPgorICAgICAgICAgIDxyb290IHR5cGU9ImNvbXBvc2l0ZSIgLz4KKyAgICAgICAgPC9wcm9qZWN0UGF0aD4KKyAgICAgICAgPHNvdXJjZVBhdGg+CisgICAgICAgICAgPHJvb3QgdHlwZT0iY29tcG9zaXRlIiAvPgorICAgICAgICA8L3NvdXJjZVBhdGg+CisgICAgICAgIDxjbGFzc1BhdGg+CisgICAgICAgICAgPHJvb3QgdHlwZT0iY29tcG9zaXRlIj4KKyAgICAgICAgICAgIDxyb290IHR5cGU9InNpbXBsZSIgdXJsPSJqYXI6Ly9DOi9saWIvZXh0L2phZi8xXzBfMS9hY3RpdmF0aW9uLmphciEvIiAvPgorICAgICAgICAgIDwvcm9vdD4KKyAgICAgICAgPC9jbGFzc1BhdGg+CisgICAgICAgIDxleGNsdWRlUGF0aD4KKyAgICAgICAgICA8cm9vdCB0eXBlPSJjb21wb3NpdGUiIC8+CisgICAgICAgIDwvZXhjbHVkZVBhdGg+CisgICAgICAgIDxqYXZhZG9jUGF0aD4KKyAgICAgICAgICA8cm9vdCB0eXBlPSJjb21wb3NpdGUiPgorICAgICAgICAgICAgPHJvb3QgdHlwZT0ic2ltcGxlIiB1cmw9ImZpbGU6Ly9DOi9saWIvZXh0L2phZi8xXzBfMS9kb2NzL2phdmFkb2NzIiAvPgorICAgICAgICAgIDwvcm9vdD4KKyAgICAgICAgPC9qYXZhZG9jUGF0aD4KKyAgICAgIDwvcm9vdHM+CisgICAgPC9saWJyYXJ5PgorICAgIDxsaWJyYXJ5PgorICAgICAgPG5hbWUgdmFsdWU9ImNvbW0tMi4wIiAvPgorICAgICAgPHJvb3RzPgorICAgICAgICA8cHJvamVjdFBhdGg+CisgICAgICAgICAgPHJvb3QgdHlwZT0iY29tcG9zaXRlIiAvPgorICAgICAgICA8L3Byb2plY3RQYXRoPgorICAgICAgICA8c291cmNlUGF0aD4KKyAgICAgICAgICA8cm9vdCB0eXBlPSJjb21wb3NpdGUiIC8+CisgICAgICAgIDwvc291cmNlUGF0aD4KKyAgICAgICAgPGNsYXNzUGF0aD4KKyAgICAgICAgICA8cm9vdCB0eXBlPSJjb21wb3NpdGUiPgorICAgICAgICAgICAgPHJvb3QgdHlwZT0ic2ltcGxlIiB1cmw9ImphcjovL0M6L2xpYi9leHQvY29tbS9jb21tLmphciEvIiAvPgorICAgICAgICAgICAgPHJvb3QgdHlwZT0ic2ltcGxlIiB1cmw9ImZpbGU6Ly9DOi9saWIvZXh0L2NvbW0iIC8+CisgICAgICAgICAgPC9yb290PgorICAgICAgICA8L2NsYXNzUGF0aD4KKyAgICAgICAgPGV4Y2x1ZGVQYXRoPgorICAgICAgICAgIDxyb290IHR5cGU9ImNvbXBvc2l0ZSIgLz4KKyAgICAgICAgPC9leGNsdWRlUGF0aD4KKyAgICAgICAgPGphdmFkb2NQYXRoPgorICAgICAgICAgIDxyb290IHR5cGU9ImNvbXBvc2l0ZSI+CisgICAgICAgICAgICA8cm9vdCB0eXBlPSJzaW1wbGUiIHVybD0iZmlsZTovL0M6L2xpYi9leHQvY29tbS9qYXZhZG9jcyIgLz4KKyAgICAgICAgICA8L3Jvb3Q+CisgICAgICAgIDwvamF2YWRvY1BhdGg+CisgICAgICA8L3Jvb3RzPgorICAgIDwvbGlicmFyeT4KKyAgICA8bGlicmFyeT4KKyAgICAgIDxuYW1lIHZhbHVlPSJkZW5uaXNsdW5kYmVyZy1jb2RlZ2VuZXJhdGlvbi0yLjAiIC8+CisgICAgICA8cm9vdHM+CisgICAgICAgIDxwcm9qZWN0UGF0aD4KKyAgICAgICAgICA8cm9vdCB0eXBlPSJjb21wb3NpdGUiIC8+CisgICAgICAgIDwvcHJvamVjdFBhdGg+CisgICAgICAgIDxzb3VyY2VQYXRoPgorICAgICAgICAgIDxyb290IHR5cGU9ImNvbXBvc2l0ZSIgLz4KKyAgICAgICAgPC9zb3VyY2VQYXRoPgorICAgICAgICA8Y2xhc3NQYXRoPgorICAgICAgICAgIDxyb290IHR5cGU9ImNvbXBvc2l0ZSI+CisgICAgICAgICAgICA8cm9vdCB0eXBlPSJzaW1wbGUiIHVybD0iamFyOi8vQzovbGliL2Rlbm5pc2x1bmRiZXJnLWNvZGVnZW5lcmF0aW9uL1JFTEVBU0UtMl8wL2NvZGVnZW5lcmF0aW9uLmphciEvIiAvPgorICAgICAgICAgIDwvcm9vdD4KKyAgICAgICAgPC9jbGFzc1BhdGg+CisgICAgICAgIDxleGNsdWRlUGF0aD4KKyAgICAgICAgICA8cm9vdCB0eXBlPSJjb21wb3NpdGUiIC8+CisgICAgICAgIDwvZXhjbHVkZVBhdGg+CisgICAgICAgIDxqYXZhZG9jUGF0aD4KKyAgICAgICAgICA8cm9vdCB0eXBlPSJjb21wb3NpdGUiIC8+CisgICAgICAgIDwvamF2YWRvY1BhdGg+CisgICAgICA8L3Jvb3RzPgorICAgIDwvbGlicmFyeT4KKyAgICA8bGlicmFyeT4KKyAgICAgIDxuYW1lIHZhbHVlPSJkZW5uaXNsdW5kYmVyZy1za2F0dC0xLjAiIC8+CisgICAgICA8cm9vdHM+CisgICAgICAgIDxwcm9qZWN0UGF0aD4KKyAgICAgICAgICA8cm9vdCB0eXBlPSJjb21wb3NpdGUiIC8+CisgICAgICAgIDwvcHJvamVjdFBhdGg+CisgICAgICAgIDxzb3VyY2VQYXRoPgorICAgICAgICAgIDxyb290IHR5cGU9ImNvbXBvc2l0ZSIgLz4KKyAgICAgICAgPC9zb3VyY2VQYXRoPgorICAgICAgICA8Y2xhc3NQYXRoPgorICAgICAgICAgIDxyb290IHR5cGU9ImNvbXBvc2l0ZSI+CisgICAgICAgICAgICA8cm9vdCB0eXBlPSJzaW1wbGUiIHVybD0iamFyOi8vQzovbGliL2Rlbm5pc2x1bmRiZXJnLXNrYXR0L1JFTEVBU0UtMV8wL2Rlbm5pc2x1bmRiZXJnLXNrYXR0LmphciEvIiAvPgorICAgICAgICAgIDwvcm9vdD4KKyAgICAgICAgPC9jbGFzc1BhdGg+CisgICAgICAgIDxleGNsdWRlUGF0aD4KKyAgICAgICAgICA8cm9vdCB0eXBlPSJjb21wb3NpdGUiIC8+CisgICAgICAgIDwvZXhjbHVkZVBhdGg+CisgICAgICAgIDxqYXZhZG9jUGF0aD4KKyAgICAgICAgICA8cm9vdCB0eXBlPSJjb21wb3NpdGUiPgorICAgICAgICAgICAgPHJvb3QgdHlwZT0ic2ltcGxlIiB1cmw9ImZpbGU6Ly9DOi9saWIvZGVubmlzbHVuZGJlcmctc2thdHQvUkVMRUFTRS0xXzAvZG9jcy9hcGkiIC8+CisgICAgICAgICAgPC9yb290PgorICAgICAgICA8L2phdmFkb2NQYXRoPgorICAgICAgPC9yb290cz4KKyAgICA8L2xpYnJhcnk+CisgICAgPGxpYnJhcnk+CisgICAgICA8bmFtZSB2YWx1ZT0iaXRleHQtMS4wMCIgLz4KKyAgICAgIDxyb290cz4KKyAgICAgICAgPHByb2plY3RQYXRoPgorICAgICAgICAgIDxyb290IHR5cGU9ImNvbXBvc2l0ZSIgLz4KKyAgICAgICAgPC9wcm9qZWN0UGF0aD4KKyAgICAgICAgPHNvdXJjZVBhdGg+CisgICAgICAgICAgPHJvb3QgdHlwZT0iY29tcG9zaXRlIiAvPgorICAgICAgICA8L3NvdXJjZVBhdGg+CisgICAgICAgIDxjbGFzc1BhdGg+CisgICAgICAgICAgPHJvb3QgdHlwZT0iY29tcG9zaXRlIj4KKyAgICAgICAgICAgIDxyb290IHR5cGU9InNpbXBsZSIgdXJsPSJqYXI6Ly9DOi9saWIvZXh0L2l0ZXh0L2l0ZXh0LTEuMDAuamFyIS8iIC8+CisgICAgICAgICAgPC9yb290PgorICAgICAgICA8L2NsYXNzUGF0aD4KKyAgICAgICAgPGV4Y2x1ZGVQYXRoPgorICAgICAgICAgIDxyb290IHR5cGU9ImNvbXBvc2l0ZSIgLz4KKyAgICAgICAgPC9leGNsdWRlUGF0aD4KKyAgICAgICAgPGphdmFkb2NQYXRoPgorICAgICAgICAgIDxyb290IHR5cGU9ImNvbXBvc2l0ZSIgLz4KKyAgICAgICAgPC9qYXZhZG9jUGF0aD4KKyAgICAgIDwvcm9vdHM+CisgICAgPC9saWJyYXJ5PgorICAgIDxsaWJyYXJ5PgorICAgICAgPG5hbWUgdmFsdWU9Iml0ZXh0LTEuMDEiIC8+CisgICAgICA8cm9vdHM+CisgICAgICAgIDxwcm9qZWN0UGF0aD4KKyAgICAgICAgICA8cm9vdCB0eXBlPSJjb21wb3NpdGUiIC8+CisgICAgICAgIDwvcHJvamVjdFBhdGg+CisgICAgICAgIDxzb3VyY2VQYXRoPgorICAgICAgICAgIDxyb290IHR5cGU9ImNvbXBvc2l0ZSIgLz4KKyAgICAgICAgPC9zb3VyY2VQYXRoPgorICAgICAgICA8Y2xhc3NQYXRoPgorICAgICAgICAgIDxyb290IHR5cGU9ImNvbXBvc2l0ZSI+CisgICAgICAgICAgICA8cm9vdCB0eXBlPSJzaW1wbGUiIHVybD0iamFyOi8vQzovbGliL2V4dC9pdGV4dC9pdGV4dC0xLjAxLmphciEvIiAvPgorICAgICAgICAgIDwvcm9vdD4KKyAgICAgICAgPC9jbGFzc1BhdGg+CisgICAgICAgIDxleGNsdWRlUGF0aD4KKyAgICAgICAgICA8cm9vdCB0eXBlPSJjb21wb3NpdGUiIC8+CisgICAgICAgIDwvZXhjbHVkZVBhdGg+CisgICAgICAgIDxqYXZhZG9jUGF0aD4KKyAgICAgICAgICA8cm9vdCB0eXBlPSJjb21wb3NpdGUiIC8+CisgICAgICAgIDwvamF2YWRvY1BhdGg+CisgICAgICA8L3Jvb3RzPgorICAgIDwvbGlicmFyeT4KKyAgICA8bGlicmFyeT4KKyAgICAgIDxuYW1lIHZhbHVlPSJqYWthcnRhLWNvbW1vbnMtbGFuZy0xLjAuMSIgLz4KKyAgICAgIDxyb290cz4KKyAgICAgICAgPHByb2plY3RQYXRoPgorICAgICAgICAgIDxyb290IHR5cGU9ImNvbXBvc2l0ZSIgLz4KKyAgICAgICAgPC9wcm9qZWN0UGF0aD4KKyAgICAgICAgPHNvdXJjZVBhdGg+CisgICAgICAgICAgPHJvb3QgdHlwZT0iY29tcG9zaXRlIiAvPgorICAgICAgICA8L3NvdXJjZVBhdGg+CisgICAgICAgIDxjbGFzc1BhdGg+CisgICAgICAgICAgPHJvb3QgdHlwZT0iY29tcG9zaXRlIj4KKyAgICAgICAgICAgIDxyb290IHR5cGU9InNpbXBsZSIgdXJsPSJqYXI6Ly9DOi9saWIvZXh0L2pha2FydGEtY29tbW9ucy9jb21tb25zLWxhbmctMS4wLjEvY29tbW9ucy1sYW5nLTEuMC4xLmphciEvIiAvPgorICAgICAgICAgIDwvcm9vdD4KKyAgICAgICAgPC9jbGFzc1BhdGg+CisgICAgICAgIDxleGNsdWRlUGF0aD4KKyAgICAgICAgICA8cm9vdCB0eXBlPSJjb21wb3NpdGUiIC8+CisgICAgICAgIDwvZXhjbHVkZVBhdGg+CisgICAgICAgIDxqYXZhZG9jUGF0aD4KKyAgICAgICAgICA8cm9vdCB0eXBlPSJjb21wb3NpdGUiPgorICAgICAgICAgICAgPHJvb3QgdHlwZT0ic2ltcGxlIiB1cmw9ImZpbGU6Ly9DOi9saWIvZXh0L2pha2FydGEtY29tbW9ucy9jb21tb25zLWxhbmctMS4wLjEvZG9jcy9hcGkiIC8+CisgICAgICAgICAgPC9yb290PgorICAgICAgICA8L2phdmFkb2NQYXRoPgorICAgICAgPC9yb290cz4KKyAgICA8L2xpYnJhcnk+CisgICAgPGxpYnJhcnk+CisgICAgICA8bmFtZSB2YWx1ZT0iamFrYXJ0YS1jb21tb25zLWxhbmctMi4wIiAvPgorICAgICAgPHJvb3RzPgorICAgICAgICA8cHJvamVjdFBhdGg+CisgICAgICAgICAgPHJvb3QgdHlwZT0iY29tcG9zaXRlIiAvPgorICAgICAgICA8L3Byb2plY3RQYXRoPgorICAgICAgICA8c291cmNlUGF0aD4KKyAgICAgICAgICA8cm9vdCB0eXBlPSJjb21wb3NpdGUiIC8+CisgICAgICAgIDwvc291cmNlUGF0aD4KKyAgICAgICAgPGNsYXNzUGF0aD4KKyAgICAgICAgICA8cm9vdCB0eXBlPSJjb21wb3NpdGUiPgorICAgICAgICAgICAgPHJvb3QgdHlwZT0ic2ltcGxlIiB1cmw9ImphcjovL0M6L2xpYi9leHQvamFrYXJ0YS1jb21tb25zL2NvbW1vbnMtbGFuZy0yLjAvY29tbW9ucy1sYW5nLTIuMC5qYXIhLyIgLz4KKyAgICAgICAgICA8L3Jvb3Q+CisgICAgICAgIDwvY2xhc3NQYXRoPgorICAgICAgICA8ZXhjbHVkZVBhdGg+CisgICAgICAgICAgPHJvb3QgdHlwZT0iY29tcG9zaXRlIiAvPgorICAgICAgICA8L2V4Y2x1ZGVQYXRoPgorICAgICAgICA8amF2YWRvY1BhdGg+CisgICAgICAgICAgPHJvb3QgdHlwZT0iY29tcG9zaXRlIj4KKyAgICAgICAgICAgIDxyb290IHR5cGU9InNpbXBsZSIgdXJsPSJmaWxlOi8vQzovbGliL2V4dC9qYWthcnRhLWNvbW1vbnMvY29tbW9ucy1sYW5nLTIuMC9kb2NzL2FwaSIgLz4KKyAgICAgICAgICA8L3Jvb3Q+CisgICAgICAgIDwvamF2YWRvY1BhdGg+CisgICAgICA8L3Jvb3RzPgorICAgIDwvbGlicmFyeT4KKyAgICA8bGlicmFyeT4KKyAgICAgIDxuYW1lIHZhbHVlPSJqYWthcnRhLWNvbW1vbnMtbG9nZ2luZy0xLjAuMiIgLz4KKyAgICAgIDxyb290cz4KKyAgICAgICAgPHByb2plY3RQYXRoPgorICAgICAgICAgIDxyb290IHR5cGU9ImNvbXBvc2l0ZSIgLz4KKyAgICAgICAgPC9wcm9qZWN0UGF0aD4KKyAgICAgICAgPHNvdXJjZVBhdGg+CisgICAgICAgICAgPHJvb3QgdHlwZT0iY29tcG9zaXRlIiAvPgorICAgICAgICA8L3NvdXJjZVBhdGg+CisgICAgICAgIDxjbGFzc1BhdGg+CisgICAgICAgICAgPHJvb3QgdHlwZT0iY29tcG9zaXRlIj4KKyAgICAgICAgICAgIDxyb290IHR5cGU9InNpbXBsZSIgdXJsPSJqYXI6Ly9DOi9saWIvZXh0L2pha2FydGEtY29tbW9ucy9jb21tb25zLWxvZ2dpbmctMS4wLjIvY29tbW9ucy1sb2dnaW5nLmphciEvIiAvPgorICAgICAgICAgIDwvcm9vdD4KKyAgICAgICAgPC9jbGFzc1BhdGg+CisgICAgICAgIDxleGNsdWRlUGF0aD4KKyAgICAgICAgICA8cm9vdCB0eXBlPSJjb21wb3NpdGUiIC8+CisgICAgICAgIDwvZXhjbHVkZVBhdGg+CisgICAgICAgIDxqYXZhZG9jUGF0aD4KKyAgICAgICAgICA8cm9vdCB0eXBlPSJjb21wb3NpdGUiPgorICAgICAgICAgICAgPHJvb3QgdHlwZT0ic2ltcGxlIiB1cmw9ImZpbGU6Ly9DOi9saWIvZXh0L2pha2FydGEtY29tbW9ucy9jb21tb25zLWxvZ2dpbmctMS4wLjIvZG9jcy9hcGkiIC8+CisgICAgICAgICAgPC9yb290PgorICAgICAgICA8L2phdmFkb2NQYXRoPgorICAgICAgPC9yb290cz4KKyAgICA8L2xpYnJhcnk+CisgICAgPGxpYnJhcnk+CisgICAgICA8bmFtZSB2YWx1ZT0iamFrYXJ0YS1jb21tb25zLWxvZ2dpbmctMS4wLjMiIC8+CisgICAgICA8cm9vdHM+CisgICAgICAgIDxwcm9qZWN0UGF0aD4KKyAgICAgICAgICA8cm9vdCB0eXBlPSJjb21wb3NpdGUiIC8+CisgICAgICAgIDwvcHJvamVjdFBhdGg+CisgICAgICAgIDxzb3VyY2VQYXRoPgorICAgICAgICAgIDxyb290IHR5cGU9ImNvbXBvc2l0ZSIgLz4KKyAgICAgICAgPC9zb3VyY2VQYXRoPgorICAgICAgICA8Y2xhc3NQYXRoPgorICAgICAgICAgIDxyb290IHR5cGU9ImNvbXBvc2l0ZSI+CisgICAgICAgICAgICA8cm9vdCB0eXBlPSJzaW1wbGUiIHVybD0iamFyOi8vQzovbGliL2V4dC9qYWthcnRhLWNvbW1vbnMvY29tbW9ucy1sb2dnaW5nLTEuMC4zL2NvbW1vbnMtbG9nZ2luZy5qYXIhLyIgLz4KKyAgICAgICAgICA8L3Jvb3Q+CisgICAgICAgIDwvY2xhc3NQYXRoPgorICAgICAgICA8ZXhjbHVkZVBhdGg+CisgICAgICAgICAgPHJvb3QgdHlwZT0iY29tcG9zaXRlIiAvPgorICAgICAgICA8L2V4Y2x1ZGVQYXRoPgorICAgICAgICA8amF2YWRvY1BhdGg+CisgICAgICAgICAgPHJvb3QgdHlwZT0iY29tcG9zaXRlIj4KKyAgICAgICAgICAgIDxyb290IHR5cGU9InNpbXBsZSIgdXJsPSJmaWxlOi8vQzovbGliL2V4dC9qYWthcnRhLWNvbW1vbnMvY29tbW9ucy1sb2dnaW5nLTEuMC4zL2RvY3MvYXBpIiAvPgorICAgICAgICAgIDwvcm9vdD4KKyAgICAgICAgPC9qYXZhZG9jUGF0aD4KKyAgICAgIDwvcm9vdHM+CisgICAgPC9saWJyYXJ5PgorICAgIDxsaWJyYXJ5PgorICAgICAgPG5hbWUgdmFsdWU9ImpuZGkiIC8+CisgICAgICA8cm9vdHM+CisgICAgICAgIDxwcm9qZWN0UGF0aD4KKyAgICAgICAgICA8cm9vdCB0eXBlPSJjb21wb3NpdGUiIC8+CisgICAgICAgIDwvcHJvamVjdFBhdGg+CisgICAgICAgIDxzb3VyY2VQYXRoPgorICAgICAgICAgIDxyb290IHR5cGU9ImNvbXBvc2l0ZSIgLz4KKyAgICAgICAgPC9zb3VyY2VQYXRoPgorICAgICAgICA8Y2xhc3NQYXRoPgorICAgICAgICAgIDxyb290IHR5cGU9ImNvbXBvc2l0ZSI+CisgICAgICAgICAgICA8cm9vdCB0eXBlPSJzaW1wbGUiIHVybD0iamFyOi8vQzovbGliL2V4dC9qbmRpLzFfMl8xL2xpYi9qbmRpLmphciEvIiAvPgorICAgICAgICAgIDwvcm9vdD4KKyAgICAgICAgPC9jbGFzc1BhdGg+CisgICAgICAgIDxleGNsdWRlUGF0aD4KKyAgICAgICAgICA8cm9vdCB0eXBlPSJjb21wb3NpdGUiIC8+CisgICAgICAgIDwvZXhjbHVkZVBhdGg+CisgICAgICAgIDxqYXZhZG9jUGF0aD4KKyAgICAgICAgICA8cm9vdCB0eXBlPSJjb21wb3NpdGUiPgorICAgICAgICAgICAgPHJvb3QgdHlwZT0ic2ltcGxlIiB1cmw9ImZpbGU6Ly9DOi9saWIvZXh0L2puZGkvMV8yXzEvbGRhcC9kb2MvbGRhcGNvbnRyb2xzIiAvPgorICAgICAgICAgICAgPHJvb3QgdHlwZT0ic2ltcGxlIiB1cmw9ImZpbGU6Ly9DOi9saWIvZXh0L2puZGkvMV8yXzEvbGRhcC9kb2Mvc2FzbCIgLz4KKyAgICAgICAgICA8L3Jvb3Q+CisgICAgICAgIDwvamF2YWRvY1BhdGg+CisgICAgICA8L3Jvb3RzPgorICAgIDwvbGlicmFyeT4KKyAgICA8bGlicmFyeT4KKyAgICAgIDxuYW1lIHZhbHVlPSJqc3NlIiAvPgorICAgICAgPHJvb3RzPgorICAgICAgICA8cHJvamVjdFBhdGg+CisgICAgICAgICAgPHJvb3QgdHlwZT0iY29tcG9zaXRlIiAvPgorICAgICAgICA8L3Byb2plY3RQYXRoPgorICAgICAgICA8c291cmNlUGF0aD4KKyAgICAgICAgICA8cm9vdCB0eXBlPSJjb21wb3NpdGUiIC8+CisgICAgICAgIDwvc291cmNlUGF0aD4KKyAgICAgICAgPGNsYXNzUGF0aD4KKyAgICAgICAgICA8cm9vdCB0eXBlPSJjb21wb3NpdGUiPgorICAgICAgICAgICAgPHJvb3QgdHlwZT0ic2ltcGxlIiB1cmw9ImphcjovL0M6L2xpYi9leHQvanNzZS9saWIvamNlcnQuamFyIS8iIC8+CisgICAgICAgICAgICA8cm9vdCB0eXBlPSJzaW1wbGUiIHVybD0iamFyOi8vQzovbGliL2V4dC9qc3NlL2xpYi9qbmV0LmphciEvIiAvPgorICAgICAgICAgICAgPHJvb3QgdHlwZT0ic2ltcGxlIiB1cmw9ImphcjovL0M6L2xpYi9leHQvanNzZS9saWIvanNzZS5qYXIhLyIgLz4KKyAgICAgICAgICA8L3Jvb3Q+CisgICAgICAgIDwvY2xhc3NQYXRoPgorICAgICAgICA8ZXhjbHVkZVBhdGg+CisgICAgICAgICAgPHJvb3QgdHlwZT0iY29tcG9zaXRlIiAvPgorICAgICAgICA8L2V4Y2x1ZGVQYXRoPgorICAgICAgICA8amF2YWRvY1BhdGg+CisgICAgICAgICAgPHJvb3QgdHlwZT0iY29tcG9zaXRlIj4KKyAgICAgICAgICAgIDxyb290IHR5cGU9InNpbXBsZSIgdXJsPSJmaWxlOi8vQzovbGliL2V4dC9qc3NlL2RvYy9hcGlkb2MiIC8+CisgICAgICAgICAgPC9yb290PgorICAgICAgICA8L2phdmFkb2NQYXRoPgorICAgICAgPC9yb290cz4KKyAgICA8L2xpYnJhcnk+CisgICAgPGxpYnJhcnk+CisgICAgICA8bmFtZSB2YWx1ZT0ianN0bC0xLjAiIC8+CisgICAgICA8cm9vdHM+CisgICAgICAgIDxwcm9qZWN0UGF0aD4KKyAgICAgICAgICA8cm9vdCB0eXBlPSJjb21wb3NpdGUiIC8+CisgICAgICAgIDwvcHJvamVjdFBhdGg+CisgICAgICAgIDxzb3VyY2VQYXRoPgorICAgICAgICAgIDxyb290IHR5cGU9ImNvbXBvc2l0ZSIgLz4KKyAgICAgICAgPC9zb3VyY2VQYXRoPgorICAgICAgICA8Y2xhc3NQYXRoPgorICAgICAgICAgIDxyb290IHR5cGU9ImNvbXBvc2l0ZSI+CisgICAgICAgICAgICA8cm9vdCB0eXBlPSJzaW1wbGUiIHVybD0iamFyOi8vQzovbGliL2V4dC9qYWthcnRhLXRhZ2xpYnMvc3RhbmRhcmQtMS4wLjMvbGliL2pzdGwuamFyIS8iIC8+CisgICAgICAgICAgPC9yb290PgorICAgICAgICA8L2NsYXNzUGF0aD4KKyAgICAgICAgPGV4Y2x1ZGVQYXRoPgorICAgICAgICAgIDxyb290IHR5cGU9ImNvbXBvc2l0ZSIgLz4KKyAgICAgICAgPC9leGNsdWRlUGF0aD4KKyAgICAgICAgPGphdmFkb2NQYXRoPgorICAgICAgICAgIDxyb290IHR5cGU9ImNvbXBvc2l0ZSI+CisgICAgICAgICAgICA8cm9vdCB0eXBlPSJzaW1wbGUiIHVybD0iZmlsZTovL0M6L2xpYi9leHQvamFrYXJ0YS10YWdsaWJzL3N0YW5kYXJkLTEuMC4zL2phdmFkb2MiIC8+CisgICAgICAgICAgPC9yb290PgorICAgICAgICA8L2phdmFkb2NQYXRoPgorICAgICAgPC9yb290cz4KKyAgICA8L2xpYnJhcnk+CisgICAgPGxpYnJhcnk+CisgICAgICA8bmFtZSB2YWx1ZT0ianRhIiAvPgorICAgICAgPHJvb3RzPgorICAgICAgICA8cHJvamVjdFBhdGg+CisgICAgICAgICAgPHJvb3QgdHlwZT0iY29tcG9zaXRlIiAvPgorICAgICAgICA8L3Byb2plY3RQYXRoPgorICAgICAgICA8c291cmNlUGF0aD4KKyAgICAgICAgICA8cm9vdCB0eXBlPSJjb21wb3NpdGUiIC8+CisgICAgICAgIDwvc291cmNlUGF0aD4KKyAgICAgICAgPGNsYXNzUGF0aD4KKyAgICAgICAgICA8cm9vdCB0eXBlPSJjb21wb3NpdGUiPgorICAgICAgICAgICAgPHJvb3QgdHlwZT0ic2ltcGxlIiB1cmw9ImphcjovL0M6L2xpYi9leHQvanRhL2p0YTIwLmphciEvIiAvPgorICAgICAgICAgIDwvcm9vdD4KKyAgICAgICAgPC9jbGFzc1BhdGg+CisgICAgICAgIDxleGNsdWRlUGF0aD4KKyAgICAgICAgICA8cm9vdCB0eXBlPSJjb21wb3NpdGUiIC8+CisgICAgICAgIDwvZXhjbHVkZVBhdGg+CisgICAgICAgIDxqYXZhZG9jUGF0aD4KKyAgICAgICAgICA8cm9vdCB0eXBlPSJjb21wb3NpdGUiIC8+CisgICAgICAgIDwvamF2YWRvY1BhdGg+CisgICAgICA8L3Jvb3RzPgorICAgIDwvbGlicmFyeT4KKyAgICA8bGlicmFyeT4KKyAgICAgIDxuYW1lIHZhbHVlPSJqdW5pdCIgLz4KKyAgICAgIDxyb290cz4KKyAgICAgICAgPHByb2plY3RQYXRoPgorICAgICAgICAgIDxyb290IHR5cGU9ImNvbXBvc2l0ZSIgLz4KKyAgICAgICAgPC9wcm9qZWN0UGF0aD4KKyAgICAgICAgPHNvdXJjZVBhdGg+CisgICAgICAgICAgPHJvb3QgdHlwZT0iY29tcG9zaXRlIiAvPgorICAgICAgICA8L3NvdXJjZVBhdGg+CisgICAgICAgIDxjbGFzc1BhdGg+CisgICAgICAgICAgPHJvb3QgdHlwZT0iY29tcG9zaXRlIj4KKyAgICAgICAgICAgIDxyb290IHR5cGU9InNpbXBsZSIgdXJsPSJqYXI6Ly9DOi9saWIvZXh0L2p1bml0LzNfOF8xL2p1bml0LmphciEvIiAvPgorICAgICAgICAgIDwvcm9vdD4KKyAgICAgICAgPC9jbGFzc1BhdGg+CisgICAgICAgIDxleGNsdWRlUGF0aD4KKyAgICAgICAgICA8cm9vdCB0eXBlPSJjb21wb3NpdGUiIC8+CisgICAgICAgIDwvZXhjbHVkZVBhdGg+CisgICAgICAgIDxqYXZhZG9jUGF0aD4KKyAgICAgICAgICA8cm9vdCB0eXBlPSJjb21wb3NpdGUiPgorICAgICAgICAgICAgPHJvb3QgdHlwZT0ic2ltcGxlIiB1cmw9ImZpbGU6Ly9DOi9saWIvZXh0L2p1bml0LzNfOF8xL2phdmFkb2MiIC8+CisgICAgICAgICAgPC9yb290PgorICAgICAgICA8L2phdmFkb2NQYXRoPgorICAgICAgPC9yb290cz4KKyAgICA8L2xpYnJhcnk+CisgICAgPGxpYnJhcnk+CisgICAgICA8bmFtZSB2YWx1ZT0ibG9nNGoiIC8+CisgICAgICA8cm9vdHM+CisgICAgICAgIDxwcm9qZWN0UGF0aD4KKyAgICAgICAgICA8cm9vdCB0eXBlPSJjb21wb3NpdGUiIC8+CisgICAgICAgIDwvcHJvamVjdFBhdGg+CisgICAgICAgIDxzb3VyY2VQYXRoPgorICAgICAgICAgIDxyb290IHR5cGU9ImNvbXBvc2l0ZSIgLz4KKyAgICAgICAgPC9zb3VyY2VQYXRoPgorICAgICAgICA8Y2xhc3NQYXRoPgorICAgICAgICAgIDxyb290IHR5cGU9ImNvbXBvc2l0ZSI+CisgICAgICAgICAgICA8cm9vdCB0eXBlPSJzaW1wbGUiIHVybD0iamFyOi8vQzovbGliL2V4dC9qYWthcnRhLWxvZzRqLzEuMi44L2Rpc3QvbGliL2xvZzRqLTEuMi44LmphciEvIiAvPgorICAgICAgICAgIDwvcm9vdD4KKyAgICAgICAgPC9jbGFzc1BhdGg+CisgICAgICAgIDxleGNsdWRlUGF0aD4KKyAgICAgICAgICA8cm9vdCB0eXBlPSJjb21wb3NpdGUiIC8+CisgICAgICAgIDwvZXhjbHVkZVBhdGg+CisgICAgICAgIDxqYXZhZG9jUGF0aD4KKyAgICAgICAgICA8cm9vdCB0eXBlPSJjb21wb3NpdGUiPgorICAgICAgICAgICAgPHJvb3QgdHlwZT0ic2ltcGxlIiB1cmw9ImZpbGU6Ly9DOi9saWIvZXh0L2pha2FydGEtbG9nNGovMS4yLjgvZG9jcy9hcGkiIC8+CisgICAgICAgICAgPC9yb290PgorICAgICAgICA8L2phdmFkb2NQYXRoPgorICAgICAgPC9yb290cz4KKyAgICA8L2xpYnJhcnk+CisgICAgPGxpYnJhcnk+CisgICAgICA8bmFtZSB2YWx1ZT0ibWFpbC0xLjEuMyIgLz4KKyAgICAgIDxyb290cz4KKyAgICAgICAgPHByb2plY3RQYXRoPgorICAgICAgICAgIDxyb290IHR5cGU9ImNvbXBvc2l0ZSIgLz4KKyAgICAgICAgPC9wcm9qZWN0UGF0aD4KKyAgICAgICAgPHNvdXJjZVBhdGg+CisgICAgICAgICAgPHJvb3QgdHlwZT0iY29tcG9zaXRlIiAvPgorICAgICAgICA8L3NvdXJjZVBhdGg+CisgICAgICAgIDxjbGFzc1BhdGg+CisgICAgICAgICAgPHJvb3QgdHlwZT0iY29tcG9zaXRlIj4KKyAgICAgICAgICAgIDxyb290IHR5cGU9InNpbXBsZSIgdXJsPSJqYXI6Ly9DOi9saWIvZXh0L2phdmFtYWlsL2phdmFtYWlsLTEuMS4zL21haWwuamFyIS8iIC8+CisgICAgICAgICAgPC9yb290PgorICAgICAgICA8L2NsYXNzUGF0aD4KKyAgICAgICAgPGV4Y2x1ZGVQYXRoPgorICAgICAgICAgIDxyb290IHR5cGU9ImNvbXBvc2l0ZSIgLz4KKyAgICAgICAgPC9leGNsdWRlUGF0aD4KKyAgICAgICAgPGphdmFkb2NQYXRoPgorICAgICAgICAgIDxyb290IHR5cGU9ImNvbXBvc2l0ZSI+CisgICAgICAgICAgICA8cm9vdCB0eXBlPSJzaW1wbGUiIHVybD0iZmlsZTovL0M6L2xpYi9leHQvamF2YW1haWwvamF2YW1haWwtMS4xLjMvZG9jcy9qYXZhZG9jcyIgLz4KKyAgICAgICAgICA8L3Jvb3Q+CisgICAgICAgIDwvamF2YWRvY1BhdGg+CisgICAgICA8L3Jvb3RzPgorICAgIDwvbGlicmFyeT4KKyAgICA8bGlicmFyeT4KKyAgICAgIDxuYW1lIHZhbHVlPSJtYWlsLTEuMiIgLz4KKyAgICAgIDxyb290cz4KKyAgICAgICAgPHByb2plY3RQYXRoPgorICAgICAgICAgIDxyb290IHR5cGU9ImNvbXBvc2l0ZSIgLz4KKyAgICAgICAgPC9wcm9qZWN0UGF0aD4KKyAgICAgICAgPHNvdXJjZVBhdGg+CisgICAgICAgICAgPHJvb3QgdHlwZT0iY29tcG9zaXRlIiAvPgorICAgICAgICA8L3NvdXJjZVBhdGg+CisgICAgICAgIDxjbGFzc1BhdGg+CisgICAgICAgICAgPHJvb3QgdHlwZT0iY29tcG9zaXRlIj4KKyAgICAgICAgICAgIDxyb290IHR5cGU9InNpbXBsZSIgdXJsPSJqYXI6Ly9DOi9saWIvZXh0L2phdmFtYWlsL2phdmFtYWlsLTEuMi9tYWlsLmphciEvIiAvPgorICAgICAgICAgIDwvcm9vdD4KKyAgICAgICAgPC9jbGFzc1BhdGg+CisgICAgICAgIDxleGNsdWRlUGF0aD4KKyAgICAgICAgICA8cm9vdCB0eXBlPSJjb21wb3NpdGUiIC8+CisgICAgICAgIDwvZXhjbHVkZVBhdGg+CisgICAgICAgIDxqYXZhZG9jUGF0aD4KKyAgICAgICAgICA8cm9vdCB0eXBlPSJjb21wb3NpdGUiPgorICAgICAgICAgICAgPHJvb3QgdHlwZT0ic2ltcGxlIiB1cmw9ImZpbGU6Ly9DOi9saWIvZXh0L2phdmFtYWlsL2phdmFtYWlsLTEuMi9kb2NzL2phdmFkb2NzIiAvPgorICAgICAgICAgIDwvcm9vdD4KKyAgICAgICAgPC9qYXZhZG9jUGF0aD4KKyAgICAgIDwvcm9vdHM+CisgICAgPC9saWJyYXJ5PgorICAgIDxsaWJyYXJ5PgorICAgICAgPG5hbWUgdmFsdWU9Im1kaC1hcHBsaWNhdGlvbi0xLjEuMyIgLz4KKyAgICAgIDxyb290cz4KKyAgICAgICAgPHByb2plY3RQYXRoPgorICAgICAgICAgIDxyb290IHR5cGU9ImNvbXBvc2l0ZSIgLz4KKyAgICAgICAgPC9wcm9qZWN0UGF0aD4KKyAgICAgICAgPHNvdXJjZVBhdGg+CisgICAgICAgICAgPHJvb3QgdHlwZT0iY29tcG9zaXRlIiAvPgorICAgICAgICA8L3NvdXJjZVBhdGg+CisgICAgICAgIDxjbGFzc1BhdGg+CisgICAgICAgICAgPHJvb3QgdHlwZT0iY29tcG9zaXRlIj4KKyAgICAgICAgICAgIDxyb290IHR5cGU9InNpbXBsZSIgdXJsPSJqYXI6Ly9DOi9saWIvYXBwbGljYXRpb24vUkVMRUFTRS0xXzFfMy9hcHBsaWNhdGlvbi5qYXIhLyIgLz4KKyAgICAgICAgICA8L3Jvb3Q+CisgICAgICAgIDwvY2xhc3NQYXRoPgorICAgICAgICA8ZXhjbHVkZVBhdGg+CisgICAgICAgICAgPHJvb3QgdHlwZT0iY29tcG9zaXRlIiAvPgorICAgICAgICA8L2V4Y2x1ZGVQYXRoPgorICAgICAgICA8amF2YWRvY1BhdGg+CisgICAgICAgICAgPHJvb3QgdHlwZT0iY29tcG9zaXRlIj4KKyAgICAgICAgICAgIDxyb290IHR5cGU9InNpbXBsZSIgdXJsPSJmaWxlOi8vQzovbGliL2FwcGxpY2F0aW9uL1JFTEVBU0UtMV8xXzMvZG9jcy9hcGkiIC8+CisgICAgICAgICAgPC9yb290PgorICAgICAgICA8L2phdmFkb2NQYXRoPgorICAgICAgPC9yb290cz4KKyAgICA8L2xpYnJhcnk+CisgICAgPGxpYnJhcnk+CisgICAgICA8bmFtZSB2YWx1ZT0ibWRoLWF3dC1hcHBsZXQtMi4yLjQiIC8+CisgICAgICA8cm9vdHM+CisgICAgICAgIDxwcm9qZWN0UGF0aD4KKyAgICAgICAgICA8cm9vdCB0eXBlPSJjb21wb3NpdGUiIC8+CisgICAgICAgIDwvcHJvamVjdFBhdGg+CisgICAgICAgIDxzb3VyY2VQYXRoPgorICAgICAgICAgIDxyb290IHR5cGU9ImNvbXBvc2l0ZSIgLz4KKyAgICAgICAgPC9zb3VyY2VQYXRoPgorICAgICAgICA8Y2xhc3NQYXRoPgorICAgICAgICAgIDxyb290IHR5cGU9ImNvbXBvc2l0ZSI+CisgICAgICAgICAgICA8cm9vdCB0eXBlPSJzaW1wbGUiIHVybD0iamFyOi8vQzovbGliL2F3dC9SRUxFQVNFLTJfMl80L2F3dC1hcHBsZXQuamFyIS8iIC8+CisgICAgICAgICAgPC9yb290PgorICAgICAgICA8L2NsYXNzUGF0aD4KKyAgICAgICAgPGV4Y2x1ZGVQYXRoPgorICAgICAgICAgIDxyb290IHR5cGU9ImNvbXBvc2l0ZSIgLz4KKyAgICAgICAgPC9leGNsdWRlUGF0aD4KKyAgICAgICAgPGphdmFkb2NQYXRoPgorICAgICAgICAgIDxyb290IHR5cGU9ImNvbXBvc2l0ZSI+CisgICAgICAgICAgICA8cm9vdCB0eXBlPSJzaW1wbGUiIHVybD0iZmlsZTovL0M6L2xpYi9hd3QvUkVMRUFTRS0yXzJfNC9kb2NzL2FwaSIgLz4KKyAgICAgICAgICA8L3Jvb3Q+CisgICAgICAgIDwvamF2YWRvY1BhdGg+CisgICAgICA8L3Jvb3RzPgorICAgIDwvbGlicmFyeT4KKyAgICA8bGlicmFyeT4KKyAgICAgIDxuYW1lIHZhbHVlPSJtZGgtZGF0YWJhcy0xLjEuMiIgLz4KKyAgICAgIDxyb290cz4KKyAgICAgICAgPHByb2plY3RQYXRoPgorICAgICAgICAgIDxyb290IHR5cGU9ImNvbXBvc2l0ZSIgLz4KKyAgICAgICAgPC9wcm9qZWN0UGF0aD4KKyAgICAgICAgPHNvdXJjZVBhdGg+CisgICAgICAgICAgPHJvb3QgdHlwZT0iY29tcG9zaXRlIiAvPgorICAgICAgICA8L3NvdXJjZVBhdGg+CisgICAgICAgIDxjbGFzc1BhdGg+CisgICAgICAgICAgPHJvb3QgdHlwZT0iY29tcG9zaXRlIj4KKyAgICAgICAgICAgIDxyb290IHR5cGU9InNpbXBsZSIgdXJsPSJqYXI6Ly9DOi9saWIvZGF0YWJhcy9SRUxFQVNFLTFfMV8yL2RhdGFiYXMuamFyIS8iIC8+CisgICAgICAgICAgPC9yb290PgorICAgICAgICA8L2NsYXNzUGF0aD4KKyAgICAgICAgPGV4Y2x1ZGVQYXRoPgorICAgICAgICAgIDxyb290IHR5cGU9ImNvbXBvc2l0ZSIgLz4KKyAgICAgICAgPC9leGNsdWRlUGF0aD4KKyAgICAgICAgPGphdmFkb2NQYXRoPgorICAgICAgICAgIDxyb290IHR5cGU9ImNvbXBvc2l0ZSI+CisgICAgICAgICAgICA8cm9vdCB0eXBlPSJzaW1wbGUiIHVybD0iZmlsZTovL0M6L2xpYi9kYXRhYmFzL1JFTEVBU0UtMV8xXzIvZG9jcy9hcGkiIC8+CisgICAgICAgICAgPC9yb290PgorICAgICAgICA8L2phdmFkb2NQYXRoPgorICAgICAgPC9yb290cz4KKyAgICA8L2xpYnJhcnk+CisgICAgPGxpYnJhcnk+CisgICAgICA8bmFtZSB2YWx1ZT0ibWRoLWRhdGFiYXMtdXRpbC0xLjEuMSIgLz4KKyAgICAgIDxyb290cz4KKyAgICAgICAgPHByb2plY3RQYXRoPgorICAgICAgICAgIDxyb290IHR5cGU9ImNvbXBvc2l0ZSIgLz4KKyAgICAgICAgPC9wcm9qZWN0UGF0aD4KKyAgICAgICAgPHNvdXJjZVBhdGg+CisgICAgICAgICAgPHJvb3QgdHlwZT0iY29tcG9zaXRlIiAvPgorICAgICAgICA8L3NvdXJjZVBhdGg+CisgICAgICAgIDxjbGFzc1BhdGg+CisgICAgICAgICAgPHJvb3QgdHlwZT0iY29tcG9zaXRlIj4KKyAgICAgICAgICAgIDxyb290IHR5cGU9InNpbXBsZSIgdXJsPSJqYXI6Ly9DOi9saWIvZGF0YWJhcy11dGlsL1JFTEVBU0UtMV8xXzEvZGF0YWJhcy11dGlsLmphciEvIiAvPgorICAgICAgICAgIDwvcm9vdD4KKyAgICAgICAgPC9jbGFzc1BhdGg+CisgICAgICAgIDxleGNsdWRlUGF0aD4KKyAgICAgICAgICA8cm9vdCB0eXBlPSJjb21wb3NpdGUiIC8+CisgICAgICAgIDwvZXhjbHVkZVBhdGg+CisgICAgICAgIDxqYXZhZG9jUGF0aD4KKyAgICAgICAgICA8cm9vdCB0eXBlPSJjb21wb3NpdGUiIC8+CisgICAgICAgIDwvamF2YWRvY1BhdGg+CisgICAgICA8L3Jvb3RzPgorICAgIDwvbGlicmFyeT4KKyAgICA8bGlicmFyeT4KKyAgICAgIDxuYW1lIHZhbHVlPSJtZGgtZGF0YWJhcy11dGlsLTEuMS4yIiAvPgorICAgICAgPHJvb3RzPgorICAgICAgICA8cHJvamVjdFBhdGg+CisgICAgICAgICAgPHJvb3QgdHlwZT0iY29tcG9zaXRlIiAvPgorICAgICAgICA8L3Byb2plY3RQYXRoPgorICAgICAgICA8c291cmNlUGF0aD4KKyAgICAgICAgICA8cm9vdCB0eXBlPSJjb21wb3NpdGUiIC8+CisgICAgICAgIDwvc291cmNlUGF0aD4KKyAgICAgICAgPGNsYXNzUGF0aD4KKyAgICAgICAgICA8cm9vdCB0eXBlPSJjb21wb3NpdGUiPgorICAgICAgICAgICAgPHJvb3QgdHlwZT0ic2ltcGxlIiB1cmw9ImphcjovL0M6L2xpYi9kYXRhYmFzLXV0aWwvUkVMRUFTRS0xXzFfMi9kYXRhYmFzLXV0aWwuamFyIS8iIC8+CisgICAgICAgICAgPC9yb290PgorICAgICAgICA8L2NsYXNzUGF0aD4KKyAgICAgICAgPGV4Y2x1ZGVQYXRoPgorICAgICAgICAgIDxyb290IHR5cGU9ImNvbXBvc2l0ZSIgLz4KKyAgICAgICAgPC9leGNsdWRlUGF0aD4KKyAgICAgICAgPGphdmFkb2NQYXRoPgorICAgICAgICAgIDxyb290IHR5cGU9ImNvbXBvc2l0ZSI+CisgICAgICAgICAgICA8cm9vdCB0eXBlPSJzaW1wbGUiIHVybD0iZmlsZTovL0M6L2xpYi9kYXRhYmFzLXV0aWwvUkVMRUFTRS0xXzFfMi9kb2NzL2FwaSIgLz4KKyAgICAgICAgICA8L3Jvb3Q+CisgICAgICAgIDwvamF2YWRvY1BhdGg+CisgICAgICA8L3Jvb3RzPgorICAgIDwvbGlicmFyeT4KKyAgICA8bGlicmFyeT4KKyAgICAgIDxuYW1lIHZhbHVlPSJtZGgtZGF0YWJhcy11dGlsLWFwcGxldC0xLjEuMiIgLz4KKyAgICAgIDxyb290cz4KKyAgICAgICAgPHByb2plY3RQYXRoPgorICAgICAgICAgIDxyb290IHR5cGU9ImNvbXBvc2l0ZSIgLz4KKyAgICAgICAgPC9wcm9qZWN0UGF0aD4KKyAgICAgICAgPHNvdXJjZVBhdGg+CisgICAgICAgICAgPHJvb3QgdHlwZT0iY29tcG9zaXRlIiAvPgorICAgICAgICA8L3NvdXJjZVBhdGg+CisgICAgICAgIDxjbGFzc1BhdGg+CisgICAgICAgICAgPHJvb3QgdHlwZT0iY29tcG9zaXRlIj4KKyAgICAgICAgICAgIDxyb290IHR5cGU9InNpbXBsZSIgdXJsPSJqYXI6Ly9DOi9saWIvZGF0YWJhcy11dGlsL1JFTEVBU0UtMV8xXzIvZGF0YWJhcy11dGlsLWFwcGxldC5qYXIhLyIgLz4KKyAgICAgICAgICA8L3Jvb3Q+CisgICAgICAgIDwvY2xhc3NQYXRoPgorICAgICAgICA8ZXhjbHVkZVBhdGg+CisgICAgICAgICAgPHJvb3QgdHlwZT0iY29tcG9zaXRlIiAvPgorICAgICAgICA8L2V4Y2x1ZGVQYXRoPgorICAgICAgICA8amF2YWRvY1BhdGg+CisgICAgICAgICAgPHJvb3QgdHlwZT0iY29tcG9zaXRlIj4KKyAgICAgICAgICAgIDxyb290IHR5cGU9InNpbXBsZSIgdXJsPSJmaWxlOi8vQzovbGliL2RhdGFiYXMtdXRpbC9SRUxFQVNFLTFfMV8yL2RvY3MvYXBpIiAvPgorICAgICAgICAgIDwvcm9vdD4KKyAgICAgICAgPC9qYXZhZG9jUGF0aD4KKyAgICAgIDwvcm9vdHM+CisgICAgPC9saWJyYXJ5PgorICAgIDxsaWJyYXJ5PgorICAgICAgPG5hbWUgdmFsdWU9Im1kaC1lcG9zdC0xLjAuMSIgLz4KKyAgICAgIDxyb290cz4KKyAgICAgICAgPHByb2plY3RQYXRoPgorICAgICAgICAgIDxyb290IHR5cGU9ImNvbXBvc2l0ZSIgLz4KKyAgICAgICAgPC9wcm9qZWN0UGF0aD4KKyAgICAgICAgPHNvdXJjZVBhdGg+CisgICAgICAgICAgPHJvb3QgdHlwZT0iY29tcG9zaXRlIiAvPgorICAgICAgICA8L3NvdXJjZVBhdGg+CisgICAgICAgIDxjbGFzc1BhdGg+CisgICAgICAgICAgPHJvb3QgdHlwZT0iY29tcG9zaXRlIj4KKyAgICAgICAgICAgIDxyb290IHR5cGU9InNpbXBsZSIgdXJsPSJqYXI6Ly9DOi9saWIvZXBvc3QvUkVMRUFTRS0xXzBfMS9lcG9zdC5qYXIhLyIgLz4KKyAgICAgICAgICA8L3Jvb3Q+CisgICAgICAgIDwvY2xhc3NQYXRoPgorICAgICAgICA8ZXhjbHVkZVBhdGg+CisgICAgICAgICAgPHJvb3QgdHlwZT0iY29tcG9zaXRlIiAvPgorICAgICAgICA8L2V4Y2x1ZGVQYXRoPgorICAgICAgICA8amF2YWRvY1BhdGg+CisgICAgICAgICAgPHJvb3QgdHlwZT0iY29tcG9zaXRlIiAvPgorICAgICAgICA8L2phdmFkb2NQYXRoPgorICAgICAgPC9yb290cz4KKyAgICA8L2xpYnJhcnk+CisgICAgPGxpYnJhcnk+CisgICAgICA8bmFtZSB2YWx1ZT0ibWRoLWVwb3N0LTEuMS4xIiAvPgorICAgICAgPHJvb3RzPgorICAgICAgICA8cHJvamVjdFBhdGg+CisgICAgICAgICAgPHJvb3QgdHlwZT0iY29tcG9zaXRlIiAvPgorICAgICAgICA8L3Byb2plY3RQYXRoPgorICAgICAgICA8c291cmNlUGF0aD4KKyAgICAgICAgICA8cm9vdCB0eXBlPSJjb21wb3NpdGUiIC8+CisgICAgICAgIDwvc291cmNlUGF0aD4KKyAgICAgICAgPGNsYXNzUGF0aD4KKyAgICAgICAgICA8cm9vdCB0eXBlPSJjb21wb3NpdGUiPgorICAgICAgICAgICAgPHJvb3QgdHlwZT0ic2ltcGxlIiB1cmw9ImphcjovL0M6L2xpYi9lcG9zdC9SRUxFQVNFLTFfMV8xL2Vwb3N0LmphciEvIiAvPgorICAgICAgICAgIDwvcm9vdD4KKyAgICAgICAgPC9jbGFzc1BhdGg+CisgICAgICAgIDxleGNsdWRlUGF0aD4KKyAgICAgICAgICA8cm9vdCB0eXBlPSJjb21wb3NpdGUiIC8+CisgICAgICAgIDwvZXhjbHVkZVBhdGg+CisgICAgICAgIDxqYXZhZG9jUGF0aD4KKyAgICAgICAgICA8cm9vdCB0eXBlPSJjb21wb3NpdGUiPgorICAgICAgICAgICAgPHJvb3QgdHlwZT0ic2ltcGxlIiB1cmw9ImZpbGU6Ly9DOi9saWIvZXBvc3QvUkVMRUFTRS0xXzFfMS9kb2NzL2FwaSIgLz4KKyAgICAgICAgICA8L3Jvb3Q+CisgICAgICAgIDwvamF2YWRvY1BhdGg+CisgICAgICA8L3Jvb3RzPgorICAgIDwvbGlicmFyeT4KKyAgICA8bGlicmFyeT4KKyAgICAgIDxuYW1lIHZhbHVlPSJtZGgtZXBvc3QtMi4wIiAvPgorICAgICAgPHJvb3RzPgorICAgICAgICA8cHJvamVjdFBhdGg+CisgICAgICAgICAgPHJvb3QgdHlwZT0iY29tcG9zaXRlIiAvPgorICAgICAgICA8L3Byb2plY3RQYXRoPgorICAgICAgICA8c291cmNlUGF0aD4KKyAgICAgICAgICA8cm9vdCB0eXBlPSJjb21wb3NpdGUiIC8+CisgICAgICAgIDwvc291cmNlUGF0aD4KKyAgICAgICAgPGNsYXNzUGF0aD4KKyAgICAgICAgICA8cm9vdCB0eXBlPSJjb21wb3NpdGUiPgorICAgICAgICAgICAgPHJvb3QgdHlwZT0ic2ltcGxlIiB1cmw9ImphcjovL0M6L2xpYi9lcG9zdC9SRUxFQVNFLTJfMC9zaGFyZWQvbGliL2Vwb3N0LXNoYXJlZC5qYXIhLyIgLz4KKyAgICAgICAgICA8L3Jvb3Q+CisgICAgICAgIDwvY2xhc3NQYXRoPgorICAgICAgICA8ZXhjbHVkZVBhdGg+CisgICAgICAgICAgPHJvb3QgdHlwZT0iY29tcG9zaXRlIiAvPgorICAgICAgICA8L2V4Y2x1ZGVQYXRoPgorICAgICAgICA8amF2YWRvY1BhdGg+CisgICAgICAgICAgPHJvb3QgdHlwZT0iY29tcG9zaXRlIj4KKyAgICAgICAgICAgIDxyb290IHR5cGU9InNpbXBsZSIgdXJsPSJmaWxlOi8vQzovbGliL2Vwb3N0L1JFTEVBU0UtMl8wL2RvY3MvYXBpIiAvPgorICAgICAgICAgIDwvcm9vdD4KKyAgICAgICAgPC9qYXZhZG9jUGF0aD4KKyAgICAgIDwvcm9vdHM+CisgICAgPC9saWJyYXJ5PgorICAgIDxsaWJyYXJ5PgorICAgICAgPG5hbWUgdmFsdWU9Im1kaC1odG1sLTEuNi4yIiAvPgorICAgICAgPHJvb3RzPgorICAgICAgICA8cHJvamVjdFBhdGg+CisgICAgICAgICAgPHJvb3QgdHlwZT0iY29tcG9zaXRlIiAvPgorICAgICAgICA8L3Byb2plY3RQYXRoPgorICAgICAgICA8c291cmNlUGF0aD4KKyAgICAgICAgICA8cm9vdCB0eXBlPSJjb21wb3NpdGUiIC8+CisgICAgICAgIDwvc291cmNlUGF0aD4KKyAgICAgICAgPGNsYXNzUGF0aD4KKyAgICAgICAgICA8cm9vdCB0eXBlPSJjb21wb3NpdGUiPgorICAgICAgICAgICAgPHJvb3QgdHlwZT0ic2ltcGxlIiB1cmw9ImphcjovL0M6L2xpYi9odG1sL1JFTEVBU0UtMV82XzIvaHRtbC5qYXIhLyIgLz4KKyAgICAgICAgICA8L3Jvb3Q+CisgICAgICAgIDwvY2xhc3NQYXRoPgorICAgICAgICA8ZXhjbHVkZVBhdGg+CisgICAgICAgICAgPHJvb3QgdHlwZT0iY29tcG9zaXRlIiAvPgorICAgICAgICA8L2V4Y2x1ZGVQYXRoPgorICAgICAgICA8amF2YWRvY1BhdGg+CisgICAgICAgICAgPHJvb3QgdHlwZT0iY29tcG9zaXRlIiAvPgorICAgICAgICA8L2phdmFkb2NQYXRoPgorICAgICAgPC9yb290cz4KKyAgICA8L2xpYnJhcnk+CisgICAgPGxpYnJhcnk+CisgICAgICA8bmFtZSB2YWx1ZT0ibWRoLWh0bWwtMS42LjQiIC8+CisgICAgICA8cm9vdHM+CisgICAgICAgIDxwcm9qZWN0UGF0aD4KKyAgICAgICAgICA8cm9vdCB0eXBlPSJjb21wb3NpdGUiIC8+CisgICAgICAgIDwvcHJvamVjdFBhdGg+CisgICAgICAgIDxzb3VyY2VQYXRoPgorICAgICAgICAgIDxyb290IHR5cGU9ImNvbXBvc2l0ZSIgLz4KKyAgICAgICAgPC9zb3VyY2VQYXRoPgorICAgICAgICA8Y2xhc3NQYXRoPgorICAgICAgICAgIDxyb290IHR5cGU9ImNvbXBvc2l0ZSI+CisgICAgICAgICAgICA8cm9vdCB0eXBlPSJzaW1wbGUiIHVybD0iamFyOi8vQzovbGliL2h0bWwvUkVMRUFTRS0xXzZfNC9odG1sLmphciEvIiAvPgorICAgICAgICAgIDwvcm9vdD4KKyAgICAgICAgPC9jbGFzc1BhdGg+CisgICAgICAgIDxleGNsdWRlUGF0aD4KKyAgICAgICAgICA8cm9vdCB0eXBlPSJjb21wb3NpdGUiIC8+CisgICAgICAgIDwvZXhjbHVkZVBhdGg+CisgICAgICAgIDxqYXZhZG9jUGF0aD4KKyAgICAgICAgICA8cm9vdCB0eXBlPSJjb21wb3NpdGUiIC8+CisgICAgICAgIDwvamF2YWRvY1BhdGg+CisgICAgICA8L3Jvb3RzPgorICAgIDwvbGlicmFyeT4KKyAgICA8bGlicmFyeT4KKyAgICAgIDxuYW1lIHZhbHVlPSJtZGgtaHRtbC0yLjAuMSIgLz4KKyAgICAgIDxyb290cz4KKyAgICAgICAgPHByb2plY3RQYXRoPgorICAgICAgICAgIDxyb290IHR5cGU9ImNvbXBvc2l0ZSIgLz4KKyAgICAgICAgPC9wcm9qZWN0UGF0aD4KKyAgICAgICAgPHNvdXJjZVBhdGg+CisgICAgICAgICAgPHJvb3QgdHlwZT0iY29tcG9zaXRlIiAvPgorICAgICAgICA8L3NvdXJjZVBhdGg+CisgICAgICAgIDxjbGFzc1BhdGg+CisgICAgICAgICAgPHJvb3QgdHlwZT0iY29tcG9zaXRlIj4KKyAgICAgICAgICAgIDxyb290IHR5cGU9InNpbXBsZSIgdXJsPSJqYXI6Ly9DOi9saWIvaHRtbC9SRUxFQVNFLTJfMF8xL2h0bWwuamFyIS8iIC8+CisgICAgICAgICAgPC9yb290PgorICAgICAgICA8L2NsYXNzUGF0aD4KKyAgICAgICAgPGV4Y2x1ZGVQYXRoPgorICAgICAgICAgIDxyb290IHR5cGU9ImNvbXBvc2l0ZSIgLz4KKyAgICAgICAgPC9leGNsdWRlUGF0aD4KKyAgICAgICAgPGphdmFkb2NQYXRoPgorICAgICAgICAgIDxyb290IHR5cGU9ImNvbXBvc2l0ZSI+CisgICAgICAgICAgICA8cm9vdCB0eXBlPSJzaW1wbGUiIHVybD0iZmlsZTovL0M6L2xpYi9odG1sL1JFTEVBU0UtMl8wXzEvZG9jcy9hcGkiIC8+CisgICAgICAgICAgPC9yb290PgorICAgICAgICA8L2phdmFkb2NQYXRoPgorICAgICAgPC9yb290cz4KKyAgICA8L2xpYnJhcnk+CisgICAgPGxpYnJhcnk+CisgICAgICA8bmFtZSB2YWx1ZT0ibWRoLWh0bWwtMi4xIiAvPgorICAgICAgPHJvb3RzPgorICAgICAgICA8cHJvamVjdFBhdGg+CisgICAgICAgICAgPHJvb3QgdHlwZT0iY29tcG9zaXRlIiAvPgorICAgICAgICA8L3Byb2plY3RQYXRoPgorICAgICAgICA8c291cmNlUGF0aD4KKyAgICAgICAgICA8cm9vdCB0eXBlPSJjb21wb3NpdGUiIC8+CisgICAgICAgIDwvc291cmNlUGF0aD4KKyAgICAgICAgPGNsYXNzUGF0aD4KKyAgICAgICAgICA8cm9vdCB0eXBlPSJjb21wb3NpdGUiPgorICAgICAgICAgICAgPHJvb3QgdHlwZT0ic2ltcGxlIiB1cmw9ImphcjovL0M6L2xpYi9odG1sL1JFTEVBU0UtMl8xL2h0bWwuamFyIS8iIC8+CisgICAgICAgICAgPC9yb290PgorICAgICAgICA8L2NsYXNzUGF0aD4KKyAgICAgICAgPGV4Y2x1ZGVQYXRoPgorICAgICAgICAgIDxyb290IHR5cGU9ImNvbXBvc2l0ZSIgLz4KKyAgICAgICAgPC9leGNsdWRlUGF0aD4KKyAgICAgICAgPGphdmFkb2NQYXRoPgorICAgICAgICAgIDxyb290IHR5cGU9ImNvbXBvc2l0ZSI+CisgICAgICAgICAgICA8cm9vdCB0eXBlPSJzaW1wbGUiIHVybD0iZmlsZTovL0M6L2xpYi9odG1sL1JFTEVBU0UtMl8xL2RvY3MvYXBpIiAvPgorICAgICAgICAgIDwvcm9vdD4KKyAgICAgICAgPC9qYXZhZG9jUGF0aD4KKyAgICAgIDwvcm9vdHM+CisgICAgPC9saWJyYXJ5PgorICAgIDxsaWJyYXJ5PgorICAgICAgPG5hbWUgdmFsdWU9Im1kaC1sYWRvay0xLjIiIC8+CisgICAgICA8cm9vdHM+CisgICAgICAgIDxwcm9qZWN0UGF0aD4KKyAgICAgICAgICA8cm9vdCB0eXBlPSJjb21wb3NpdGUiIC8+CisgICAgICAgIDwvcHJvamVjdFBhdGg+CisgICAgICAgIDxzb3VyY2VQYXRoPgorICAgICAgICAgIDxyb290IHR5cGU9ImNvbXBvc2l0ZSIgLz4KKyAgICAgICAgPC9zb3VyY2VQYXRoPgorICAgICAgICA8Y2xhc3NQYXRoPgorICAgICAgICAgIDxyb290IHR5cGU9ImNvbXBvc2l0ZSI+CisgICAgICAgICAgICA8cm9vdCB0eXBlPSJzaW1wbGUiIHVybD0iamFyOi8vQzovbGliL2xhZG9rL1JFTEVBU0UtMV8yL2xhZG9rLmphciEvIiAvPgorICAgICAgICAgIDwvcm9vdD4KKyAgICAgICAgPC9jbGFzc1BhdGg+CisgICAgICAgIDxleGNsdWRlUGF0aD4KKyAgICAgICAgICA8cm9vdCB0eXBlPSJjb21wb3NpdGUiIC8+CisgICAgICAgIDwvZXhjbHVkZVBhdGg+CisgICAgICAgIDxqYXZhZG9jUGF0aD4KKyAgICAgICAgICA8cm9vdCB0eXBlPSJjb21wb3NpdGUiIC8+CisgICAgICAgIDwvamF2YWRvY1BhdGg+CisgICAgICA8L3Jvb3RzPgorICAgIDwvbGlicmFyeT4KKyAgICA8bGlicmFyeT4KKyAgICAgIDxuYW1lIHZhbHVlPSJtZGgtbGFkb2stMS4zIiAvPgorICAgICAgPHJvb3RzPgorICAgICAgICA8cHJvamVjdFBhdGg+CisgICAgICAgICAgPHJvb3QgdHlwZT0iY29tcG9zaXRlIiAvPgorICAgICAgICA8L3Byb2plY3RQYXRoPgorICAgICAgICA8c291cmNlUGF0aD4KKyAgICAgICAgICA8cm9vdCB0eXBlPSJjb21wb3NpdGUiIC8+CisgICAgICAgIDwvc291cmNlUGF0aD4KKyAgICAgICAgPGNsYXNzUGF0aD4KKyAgICAgICAgICA8cm9vdCB0eXBlPSJjb21wb3NpdGUiPgorICAgICAgICAgICAgPHJvb3QgdHlwZT0ic2ltcGxlIiB1cmw9ImphcjovL0M6L2xpYi9sYWRvay9SRUxFQVNFLTFfMy9sYWRvay5qYXIhLyIgLz4KKyAgICAgICAgICA8L3Jvb3Q+CisgICAgICAgIDwvY2xhc3NQYXRoPgorICAgICAgICA8ZXhjbHVkZVBhdGg+CisgICAgICAgICAgPHJvb3QgdHlwZT0iY29tcG9zaXRlIiAvPgorICAgICAgICA8L2V4Y2x1ZGVQYXRoPgorICAgICAgICA8amF2YWRvY1BhdGg+CisgICAgICAgICAgPHJvb3QgdHlwZT0iY29tcG9zaXRlIiAvPgorICAgICAgICA8L2phdmFkb2NQYXRoPgorICAgICAgPC9yb290cz4KKyAgICA8L2xpYnJhcnk+CisgICAgPGxpYnJhcnk+CisgICAgICA8bmFtZSB2YWx1ZT0ibWRoLWxhZG9rLTEuNCIgLz4KKyAgICAgIDxyb290cz4KKyAgICAgICAgPHByb2plY3RQYXRoPgorICAgICAgICAgIDxyb290IHR5cGU9ImNvbXBvc2l0ZSIgLz4KKyAgICAgICAgPC9wcm9qZWN0UGF0aD4KKyAgICAgICAgPHNvdXJjZVBhdGg+CisgICAgICAgICAgPHJvb3QgdHlwZT0iY29tcG9zaXRlIiAvPgorICAgICAgICA8L3NvdXJjZVBhdGg+CisgICAgICAgIDxjbGFzc1BhdGg+CisgICAgICAgICAgPHJvb3QgdHlwZT0iY29tcG9zaXRlIj4KKyAgICAgICAgICAgIDxyb290IHR5cGU9InNpbXBsZSIgdXJsPSJqYXI6Ly9DOi9saWIvbGFkb2svUkVMRUFTRS0xXzQvbGFkb2suamFyIS8iIC8+CisgICAgICAgICAgPC9yb290PgorICAgICAgICA8L2NsYXNzUGF0aD4KKyAgICAgICAgPGV4Y2x1ZGVQYXRoPgorICAgICAgICAgIDxyb290IHR5cGU9ImNvbXBvc2l0ZSIgLz4KKyAgICAgICAgPC9leGNsdWRlUGF0aD4KKyAgICAgICAgPGphdmFkb2NQYXRoPgorICAgICAgICAgIDxyb290IHR5cGU9ImNvbXBvc2l0ZSIgLz4KKyAgICAgICAgPC9qYXZhZG9jUGF0aD4KKyAgICAgIDwvcm9vdHM+CisgICAgPC9saWJyYXJ5PgorICAgIDxsaWJyYXJ5PgorICAgICAgPG5hbWUgdmFsdWU9Im1kaC1sYWRvay0yLjAiIC8+CisgICAgICA8cm9vdHM+CisgICAgICAgIDxwcm9qZWN0UGF0aD4KKyAgICAgICAgICA8cm9vdCB0eXBlPSJjb21wb3NpdGUiIC8+CisgICAgICAgIDwvcHJvamVjdFBhdGg+CisgICAgICAgIDxzb3VyY2VQYXRoPgorICAgICAgICAgIDxyb290IHR5cGU9ImNvbXBvc2l0ZSIgLz4KKyAgICAgICAgPC9zb3VyY2VQYXRoPgorICAgICAgICA8Y2xhc3NQYXRoPgorICAgICAgICAgIDxyb290IHR5cGU9ImNvbXBvc2l0ZSI+CisgICAgICAgICAgICA8cm9vdCB0eXBlPSJzaW1wbGUiIHVybD0iamFyOi8vQzovbGliL2xhZG9rL1JFTEVBU0UtMl8wL3NoYXJlZC9saWIvbGFkb2stc2hhcmVkLmphciEvIiAvPgorICAgICAgICAgIDwvcm9vdD4KKyAgICAgICAgPC9jbGFzc1BhdGg+CisgICAgICAgIDxleGNsdWRlUGF0aD4KKyAgICAgICAgICA8cm9vdCB0eXBlPSJjb21wb3NpdGUiIC8+CisgICAgICAgIDwvZXhjbHVkZVBhdGg+CisgICAgICAgIDxqYXZhZG9jUGF0aD4KKyAgICAgICAgICA8cm9vdCB0eXBlPSJjb21wb3NpdGUiPgorICAgICAgICAgICAgPHJvb3QgdHlwZT0ic2ltcGxlIiB1cmw9ImZpbGU6Ly9DOi9saWIvbGFkb2svUkVMRUFTRS0yXzAvc2hhcmVkL2RvY3MvYXBpIiAvPgorICAgICAgICAgIDwvcm9vdD4KKyAgICAgICAgPC9qYXZhZG9jUGF0aD4KKyAgICAgIDwvcm9vdHM+CisgICAgPC9saWJyYXJ5PgorICAgIDxsaWJyYXJ5PgorICAgICAgPG5hbWUgdmFsdWU9Im1kaC1sYWRvay0yLjEiIC8+CisgICAgICA8cm9vdHM+CisgICAgICAgIDxwcm9qZWN0UGF0aD4KKyAgICAgICAgICA8cm9vdCB0eXBlPSJjb21wb3NpdGUiIC8+CisgICAgICAgIDwvcHJvamVjdFBhdGg+CisgICAgICAgIDxzb3VyY2VQYXRoPgorICAgICAgICAgIDxyb290IHR5cGU9ImNvbXBvc2l0ZSIgLz4KKyAgICAgICAgPC9zb3VyY2VQYXRoPgorICAgICAgICA8Y2xhc3NQYXRoPgorICAgICAgICAgIDxyb290IHR5cGU9ImNvbXBvc2l0ZSI+CisgICAgICAgICAgICA8cm9vdCB0eXBlPSJzaW1wbGUiIHVybD0iamFyOi8vQzovbGliL2xhZG9rL1JFTEVBU0UtMl8xL3NoYXJlZC9saWIvbGFkb2stc2hhcmVkLmphciEvIiAvPgorICAgICAgICAgIDwvcm9vdD4KKyAgICAgICAgPC9jbGFzc1BhdGg+CisgICAgICAgIDxleGNsdWRlUGF0aD4KKyAgICAgICAgICA8cm9vdCB0eXBlPSJjb21wb3NpdGUiIC8+CisgICAgICAgIDwvZXhjbHVkZVBhdGg+CisgICAgICAgIDxqYXZhZG9jUGF0aD4KKyAgICAgICAgICA8cm9vdCB0eXBlPSJjb21wb3NpdGUiPgorICAgICAgICAgICAgPHJvb3QgdHlwZT0ic2ltcGxlIiB1cmw9ImZpbGU6Ly9DOi9saWIvbGFkb2svUkVMRUFTRS0yXzEvc2hhcmVkL2RvY3MvYXBpIiAvPgorICAgICAgICAgIDwvcm9vdD4KKyAgICAgICAgPC9qYXZhZG9jUGF0aD4KKyAgICAgIDwvcm9vdHM+CisgICAgPC9saWJyYXJ5PgorICAgIDxsaWJyYXJ5PgorICAgICAgPG5hbWUgdmFsdWU9Im1kaC1sYWRvay0yLjIiIC8+CisgICAgICA8cm9vdHM+CisgICAgICAgIDxwcm9qZWN0UGF0aD4KKyAgICAgICAgICA8cm9vdCB0eXBlPSJjb21wb3NpdGUiIC8+CisgICAgICAgIDwvcHJvamVjdFBhdGg+CisgICAgICAgIDxzb3VyY2VQYXRoPgorICAgICAgICAgIDxyb290IHR5cGU9ImNvbXBvc2l0ZSIgLz4KKyAgICAgICAgPC9zb3VyY2VQYXRoPgorICAgICAgICA8Y2xhc3NQYXRoPgorICAgICAgICAgIDxyb290IHR5cGU9ImNvbXBvc2l0ZSI+CisgICAgICAgICAgICA8cm9vdCB0eXBlPSJzaW1wbGUiIHVybD0iamFyOi8vQzovbGliL2xhZG9rL1JFTEVBU0UtMl8yL3NoYXJlZC9saWIvbGFkb2stc2hhcmVkLmphciEvIiAvPgorICAgICAgICAgIDwvcm9vdD4KKyAgICAgICAgPC9jbGFzc1BhdGg+CisgICAgICAgIDxleGNsdWRlUGF0aD4KKyAgICAgICAgICA8cm9vdCB0eXBlPSJjb21wb3NpdGUiIC8+CisgICAgICAgIDwvZXhjbHVkZVBhdGg+CisgICAgICAgIDxqYXZhZG9jUGF0aD4KKyAgICAgICAgICA8cm9vdCB0eXBlPSJjb21wb3NpdGUiPgorICAgICAgICAgICAgPHJvb3QgdHlwZT0ic2ltcGxlIiB1cmw9ImZpbGU6Ly9DOi9saWIvbGFkb2svUkVMRUFTRS0yXzIvc2hhcmVkL2RvY3MvYXBpIiAvPgorICAgICAgICAgIDwvcm9vdD4KKyAgICAgICAgPC9qYXZhZG9jUGF0aD4KKyAgICAgIDwvcm9vdHM+CisgICAgPC9saWJyYXJ5PgorICAgIDxsaWJyYXJ5PgorICAgICAgPG5hbWUgdmFsdWU9Im1kaC1uZHMtMi4zIiAvPgorICAgICAgPHJvb3RzPgorICAgICAgICA8cHJvamVjdFBhdGg+CisgICAgICAgICAgPHJvb3QgdHlwZT0iY29tcG9zaXRlIiAvPgorICAgICAgICA8L3Byb2plY3RQYXRoPgorICAgICAgICA8c291cmNlUGF0aD4KKyAgICAgICAgICA8cm9vdCB0eXBlPSJjb21wb3NpdGUiIC8+CisgICAgICAgIDwvc291cmNlUGF0aD4KKyAgICAgICAgPGNsYXNzUGF0aD4KKyAgICAgICAgICA8cm9vdCB0eXBlPSJjb21wb3NpdGUiPgorICAgICAgICAgICAgPHJvb3QgdHlwZT0ic2ltcGxlIiB1cmw9ImphcjovL0M6L2xpYi9uZHMvUkVMRUFTRS0yXzMvbmRzLmphciEvIiAvPgorICAgICAgICAgIDwvcm9vdD4KKyAgICAgICAgPC9jbGFzc1BhdGg+CisgICAgICAgIDxleGNsdWRlUGF0aD4KKyAgICAgICAgICA8cm9vdCB0eXBlPSJjb21wb3NpdGUiIC8+CisgICAgICAgIDwvZXhjbHVkZVBhdGg+CisgICAgICAgIDxqYXZhZG9jUGF0aD4KKyAgICAgICAgICA8cm9vdCB0eXBlPSJjb21wb3NpdGUiIC8+CisgICAgICAgIDwvamF2YWRvY1BhdGg+CisgICAgICA8L3Jvb3RzPgorICAgIDwvbGlicmFyeT4KKyAgICA8bGlicmFyeT4KKyAgICAgIDxuYW1lIHZhbHVlPSJtZGgtbmRzLTIuNCIgLz4KKyAgICAgIDxyb290cz4KKyAgICAgICAgPHByb2plY3RQYXRoPgorICAgICAgICAgIDxyb290IHR5cGU9ImNvbXBvc2l0ZSIgLz4KKyAgICAgICAgPC9wcm9qZWN0UGF0aD4KKyAgICAgICAgPHNvdXJjZVBhdGg+CisgICAgICAgICAgPHJvb3QgdHlwZT0iY29tcG9zaXRlIiAvPgorICAgICAgICA8L3NvdXJjZVBhdGg+CisgICAgICAgIDxjbGFzc1BhdGg+CisgICAgICAgICAgPHJvb3QgdHlwZT0iY29tcG9zaXRlIj4KKyAgICAgICAgICAgIDxyb290IHR5cGU9InNpbXBsZSIgdXJsPSJqYXI6Ly9DOi9saWIvbmRzL1JFTEVBU0UtMl80L25kcy5qYXIhLyIgLz4KKyAgICAgICAgICA8L3Jvb3Q+CisgICAgICAgIDwvY2xhc3NQYXRoPgorICAgICAgICA8ZXhjbHVkZVBhdGg+CisgICAgICAgICAgPHJvb3QgdHlwZT0iY29tcG9zaXRlIiAvPgorICAgICAgICA8L2V4Y2x1ZGVQYXRoPgorICAgICAgICA8amF2YWRvY1BhdGg+CisgICAgICAgICAgPHJvb3QgdHlwZT0iY29tcG9zaXRlIj4KKyAgICAgICAgICAgIDxyb290IHR5cGU9InNpbXBsZSIgdXJsPSJmaWxlOi8vQzovbGliL25kcy9SRUxFQVNFLTJfNC9kb2NzL2FwaSIgLz4KKyAgICAgICAgICA8L3Jvb3Q+CisgICAgICAgIDwvamF2YWRvY1BhdGg+CisgICAgICA8L3Jvb3RzPgorICAgIDwvbGlicmFyeT4KKyAgICA8bGlicmFyeT4KKyAgICAgIDxuYW1lIHZhbHVlPSJtZGgtbmRzLWFkbWluLTIuMyIgLz4KKyAgICAgIDxyb290cz4KKyAgICAgICAgPHByb2plY3RQYXRoPgorICAgICAgICAgIDxyb290IHR5cGU9ImNvbXBvc2l0ZSIgLz4KKyAgICAgICAgPC9wcm9qZWN0UGF0aD4KKyAgICAgICAgPHNvdXJjZVBhdGg+CisgICAgICAgICAgPHJvb3QgdHlwZT0iY29tcG9zaXRlIiAvPgorICAgICAgICA8L3NvdXJjZVBhdGg+CisgICAgICAgIDxjbGFzc1BhdGg+CisgICAgICAgICAgPHJvb3QgdHlwZT0iY29tcG9zaXRlIj4KKyAgICAgICAgICAgIDxyb290IHR5cGU9InNpbXBsZSIgdXJsPSJqYXI6Ly9DOi9saWIvbmRzL1JFTEVBU0UtMl8zL25kcy1hZG1pbi5qYXIhLyIgLz4KKyAgICAgICAgICA8L3Jvb3Q+CisgICAgICAgIDwvY2xhc3NQYXRoPgorICAgICAgICA8ZXhjbHVkZVBhdGg+CisgICAgICAgICAgPHJvb3QgdHlwZT0iY29tcG9zaXRlIiAvPgorICAgICAgICA8L2V4Y2x1ZGVQYXRoPgorICAgICAgICA8amF2YWRvY1BhdGg+CisgICAgICAgICAgPHJvb3QgdHlwZT0iY29tcG9zaXRlIiAvPgorICAgICAgICA8L2phdmFkb2NQYXRoPgorICAgICAgPC9yb290cz4KKyAgICA8L2xpYnJhcnk+CisgICAgPGxpYnJhcnk+CisgICAgICA8bmFtZSB2YWx1ZT0ibWRoLW5kcy1hZG1pbi0yLjQiIC8+CisgICAgICA8cm9vdHM+CisgICAgICAgIDxwcm9qZWN0UGF0aD4KKyAgICAgICAgICA8cm9vdCB0eXBlPSJjb21wb3NpdGUiIC8+CisgICAgICAgIDwvcHJvamVjdFBhdGg+CisgICAgICAgIDxzb3VyY2VQYXRoPgorICAgICAgICAgIDxyb290IHR5cGU9ImNvbXBvc2l0ZSIgLz4KKyAgICAgICAgPC9zb3VyY2VQYXRoPgorICAgICAgICA8Y2xhc3NQYXRoPgorICAgICAgICAgIDxyb290IHR5cGU9ImNvbXBvc2l0ZSI+CisgICAgICAgICAgICA8cm9vdCB0eXBlPSJzaW1wbGUiIHVybD0iamFyOi8vQzovbGliL25kcy9SRUxFQVNFLTJfNC9uZHMtYWRtaW4uamFyIS8iIC8+CisgICAgICAgICAgPC9yb290PgorICAgICAgICA8L2NsYXNzUGF0aD4KKyAgICAgICAgPGV4Y2x1ZGVQYXRoPgorICAgICAgICAgIDxyb290IHR5cGU9ImNvbXBvc2l0ZSIgLz4KKyAgICAgICAgPC9leGNsdWRlUGF0aD4KKyAgICAgICAgPGphdmFkb2NQYXRoPgorICAgICAgICAgIDxyb290IHR5cGU9ImNvbXBvc2l0ZSI+CisgICAgICAgICAgICA8cm9vdCB0eXBlPSJzaW1wbGUiIHVybD0iZmlsZTovL0M6L2xpYi9uZHMvUkVMRUFTRS0yXzQvZG9jcy9hcGkiIC8+CisgICAgICAgICAgPC9yb290PgorICAgICAgICA8L2phdmFkb2NQYXRoPgorICAgICAgPC9yb290cz4KKyAgICA8L2xpYnJhcnk+CisgICAgPGxpYnJhcnk+CisgICAgICA8bmFtZSB2YWx1ZT0ibWRoLW55aGV0LTIuNSIgLz4KKyAgICAgIDxyb290cz4KKyAgICAgICAgPHByb2plY3RQYXRoPgorICAgICAgICAgIDxyb290IHR5cGU9ImNvbXBvc2l0ZSIgLz4KKyAgICAgICAgPC9wcm9qZWN0UGF0aD4KKyAgICAgICAgPHNvdXJjZVBhdGg+CisgICAgICAgICAgPHJvb3QgdHlwZT0iY29tcG9zaXRlIj4KKyAgICAgICAgICAgIDxyb290IHR5cGU9InNpbXBsZSIgdXJsPSJmaWxlOi8vQzovcmVsZWFzZS9ueWhldC9zcmMiIC8+CisgICAgICAgICAgPC9yb290PgorICAgICAgICA8L3NvdXJjZVBhdGg+CisgICAgICAgIDxjbGFzc1BhdGg+CisgICAgICAgICAgPHJvb3QgdHlwZT0iY29tcG9zaXRlIj4KKyAgICAgICAgICAgIDxyb290IHR5cGU9InNpbXBsZSIgdXJsPSJqYXI6Ly9DOi9saWIvbnloZXQvUkVMRUFTRS0yXzUvbnloZXQuamFyIS8iIC8+CisgICAgICAgICAgPC9yb290PgorICAgICAgICA8L2NsYXNzUGF0aD4KKyAgICAgICAgPGV4Y2x1ZGVQYXRoPgorICAgICAgICAgIDxyb290IHR5cGU9ImNvbXBvc2l0ZSIgLz4KKyAgICAgICAgPC9leGNsdWRlUGF0aD4KKyAgICAgICAgPGphdmFkb2NQYXRoPgorICAgICAgICAgIDxyb290IHR5cGU9ImNvbXBvc2l0ZSIgLz4KKyAgICAgICAgPC9qYXZhZG9jUGF0aD4KKyAgICAgIDwvcm9vdHM+CisgICAgPC9saWJyYXJ5PgorICAgIDxsaWJyYXJ5PgorICAgICAgPG5hbWUgdmFsdWU9Im1kaC1ueWhldC0zLjAuMSIgLz4KKyAgICAgIDxyb290cz4KKyAgICAgICAgPHByb2plY3RQYXRoPgorICAgICAgICAgIDxyb290IHR5cGU9ImNvbXBvc2l0ZSIgLz4KKyAgICAgICAgPC9wcm9qZWN0UGF0aD4KKyAgICAgICAgPHNvdXJjZVBhdGg+CisgICAgICAgICAgPHJvb3QgdHlwZT0iY29tcG9zaXRlIiAvPgorICAgICAgICA8L3NvdXJjZVBhdGg+CisgICAgICAgIDxjbGFzc1BhdGg+CisgICAgICAgICAgPHJvb3QgdHlwZT0iY29tcG9zaXRlIj4KKyAgICAgICAgICAgIDxyb290IHR5cGU9InNpbXBsZSIgdXJsPSJqYXI6Ly9DOi9saWIvbnloZXQvUkVMRUFTRS0zXzBfMS9zaGFyZWQvbGliL255aGV0LXNoYXJlZC5qYXIhLyIgLz4KKyAgICAgICAgICA8L3Jvb3Q+CisgICAgICAgIDwvY2xhc3NQYXRoPgorICAgICAgICA8ZXhjbHVkZVBhdGg+CisgICAgICAgICAgPHJvb3QgdHlwZT0iY29tcG9zaXRlIiAvPgorICAgICAgICA8L2V4Y2x1ZGVQYXRoPgorICAgICAgICA8amF2YWRvY1BhdGg+CisgICAgICAgICAgPHJvb3QgdHlwZT0iY29tcG9zaXRlIj4KKyAgICAgICAgICAgIDxyb290IHR5cGU9InNpbXBsZSIgdXJsPSJmaWxlOi8vQzovbGliL255aGV0L1JFTEVBU0UtM18wXzEvc2hhcmVkL2RvY3MvYXBpIiAvPgorICAgICAgICAgIDwvcm9vdD4KKyAgICAgICAgPC9qYXZhZG9jUGF0aD4KKyAgICAgIDwvcm9vdHM+CisgICAgPC9saWJyYXJ5PgorICAgIDxsaWJyYXJ5PgorICAgICAgPG5hbWUgdmFsdWU9Im1kaC1wYXMtYWRtaW4tMS4yLjEiIC8+CisgICAgICA8cm9vdHM+CisgICAgICAgIDxwcm9qZWN0UGF0aD4KKyAgICAgICAgICA8cm9vdCB0eXBlPSJjb21wb3NpdGUiIC8+CisgICAgICAgIDwvcHJvamVjdFBhdGg+CisgICAgICAgIDxzb3VyY2VQYXRoPgorICAgICAgICAgIDxyb290IHR5cGU9ImNvbXBvc2l0ZSI+CisgICAgICAgICAgICA8cm9vdCB0eXBlPSJzaW1wbGUiIHVybD0iZmlsZTovL0M6L3JlbGVhc2UvcGFzL3NyYyIgLz4KKyAgICAgICAgICA8L3Jvb3Q+CisgICAgICAgIDwvc291cmNlUGF0aD4KKyAgICAgICAgPGNsYXNzUGF0aD4KKyAgICAgICAgICA8cm9vdCB0eXBlPSJjb21wb3NpdGUiPgorICAgICAgICAgICAgPHJvb3QgdHlwZT0ic2ltcGxlIiB1cmw9ImphcjovL0M6L2xpYi9wYXMvUkVMRUFTRS0xXzJfMS9wYXMtYWRtaW4uamFyIS8iIC8+CisgICAgICAgICAgPC9yb290PgorICAgICAgICA8L2NsYXNzUGF0aD4KKyAgICAgICAgPGV4Y2x1ZGVQYXRoPgorICAgICAgICAgIDxyb290IHR5cGU9ImNvbXBvc2l0ZSIgLz4KKyAgICAgICAgPC9leGNsdWRlUGF0aD4KKyAgICAgICAgPGphdmFkb2NQYXRoPgorICAgICAgICAgIDxyb290IHR5cGU9ImNvbXBvc2l0ZSIgLz4KKyAgICAgICAgPC9qYXZhZG9jUGF0aD4KKyAgICAgIDwvcm9vdHM+CisgICAgPC9saWJyYXJ5PgorICAgIDxsaWJyYXJ5PgorICAgICAgPG5hbWUgdmFsdWU9Im1kaC1wYXNzYWdlLWFkbWluLTIuNSIgLz4KKyAgICAgIDxyb290cz4KKyAgICAgICAgPHByb2plY3RQYXRoPgorICAgICAgICAgIDxyb290IHR5cGU9ImNvbXBvc2l0ZSIgLz4KKyAgICAgICAgPC9wcm9qZWN0UGF0aD4KKyAgICAgICAgPHNvdXJjZVBhdGg+CisgICAgICAgICAgPHJvb3QgdHlwZT0iY29tcG9zaXRlIj4KKyAgICAgICAgICAgIDxyb290IHR5cGU9InNpbXBsZSIgdXJsPSJmaWxlOi8vQzovcmVsZWFzZS9wYXNzYWdlL3NyYyIgLz4KKyAgICAgICAgICA8L3Jvb3Q+CisgICAgICAgIDwvc291cmNlUGF0aD4KKyAgICAgICAgPGNsYXNzUGF0aD4KKyAgICAgICAgICA8cm9vdCB0eXBlPSJjb21wb3NpdGUiPgorICAgICAgICAgICAgPHJvb3QgdHlwZT0ic2ltcGxlIiB1cmw9ImphcjovL0M6L2xpYi9wYXNzYWdlL1JFTEVBU0UtMl81L3Bhc3NhZ2UtYWRtaW4uamFyIS8iIC8+CisgICAgICAgICAgPC9yb290PgorICAgICAgICA8L2NsYXNzUGF0aD4KKyAgICAgICAgPGV4Y2x1ZGVQYXRoPgorICAgICAgICAgIDxyb290IHR5cGU9ImNvbXBvc2l0ZSIgLz4KKyAgICAgICAgPC9leGNsdWRlUGF0aD4KKyAgICAgICAgPGphdmFkb2NQYXRoPgorICAgICAgICAgIDxyb290IHR5cGU9ImNvbXBvc2l0ZSIgLz4KKyAgICAgICAgPC9qYXZhZG9jUGF0aD4KKyAgICAgIDwvcm9vdHM+CisgICAgPC9saWJyYXJ5PgorICAgIDxsaWJyYXJ5PgorICAgICAgPG5hbWUgdmFsdWU9Im1kaC1wZXJzb25hbC01LjAiIC8+CisgICAgICA8cm9vdHM+CisgICAgICAgIDxwcm9qZWN0UGF0aD4KKyAgICAgICAgICA8cm9vdCB0eXBlPSJjb21wb3NpdGUiIC8+CisgICAgICAgIDwvcHJvamVjdFBhdGg+CisgICAgICAgIDxzb3VyY2VQYXRoPgorICAgICAgICAgIDxyb290IHR5cGU9ImNvbXBvc2l0ZSI+CisgICAgICAgICAgICA8cm9vdCB0eXBlPSJzaW1wbGUiIHVybD0iZmlsZTovL0M6L3JlbGVhc2UvcGVyc29uYWwvc2hhcmVkL3NyYyIgLz4KKyAgICAgICAgICA8L3Jvb3Q+CisgICAgICAgIDwvc291cmNlUGF0aD4KKyAgICAgICAgPGNsYXNzUGF0aD4KKyAgICAgICAgICA8cm9vdCB0eXBlPSJjb21wb3NpdGUiPgorICAgICAgICAgICAgPHJvb3QgdHlwZT0ic2ltcGxlIiB1cmw9ImphcjovL0M6L2xpYi9wZXJzb25hbC9SRUxFQVNFLTVfMC9zaGFyZWQvbGliL3BlcnNvbmFsLXNoYXJlZC5qYXIhLyIgLz4KKyAgICAgICAgICA8L3Jvb3Q+CisgICAgICAgIDwvY2xhc3NQYXRoPgorICAgICAgICA8ZXhjbHVkZVBhdGg+CisgICAgICAgICAgPHJvb3QgdHlwZT0iY29tcG9zaXRlIiAvPgorICAgICAgICA8L2V4Y2x1ZGVQYXRoPgorICAgICAgICA8amF2YWRvY1BhdGg+CisgICAgICAgICAgPHJvb3QgdHlwZT0iY29tcG9zaXRlIiAvPgorICAgICAgICA8L2phdmFkb2NQYXRoPgorICAgICAgPC9yb290cz4KKyAgICA8L2xpYnJhcnk+CisgICAgPGxpYnJhcnk+CisgICAgICA8bmFtZSB2YWx1ZT0ibWRoLXBlcnNvbmFsLTUuMyIgLz4KKyAgICAgIDxyb290cz4KKyAgICAgICAgPHByb2plY3RQYXRoPgorICAgICAgICAgIDxyb290IHR5cGU9ImNvbXBvc2l0ZSIgLz4KKyAgICAgICAgPC9wcm9qZWN0UGF0aD4KKyAgICAgICAgPHNvdXJjZVBhdGg+CisgICAgICAgICAgPHJvb3QgdHlwZT0iY29tcG9zaXRlIj4KKyAgICAgICAgICAgIDxyb290IHR5cGU9InNpbXBsZSIgdXJsPSJmaWxlOi8vQzovcmVsZWFzZS9wZXJzb25hbC9zaGFyZWQvc3JjIiAvPgorICAgICAgICAgIDwvcm9vdD4KKyAgICAgICAgPC9zb3VyY2VQYXRoPgorICAgICAgICA8Y2xhc3NQYXRoPgorICAgICAgICAgIDxyb290IHR5cGU9ImNvbXBvc2l0ZSI+CisgICAgICAgICAgICA8cm9vdCB0eXBlPSJzaW1wbGUiIHVybD0iamFyOi8vQzovbGliL3BlcnNvbmFsL1JFTEVBU0UtNV8zL3NoYXJlZC9saWIvcGVyc29uYWwtc2hhcmVkLmphciEvIiAvPgorICAgICAgICAgIDwvcm9vdD4KKyAgICAgICAgPC9jbGFzc1BhdGg+CisgICAgICAgIDxleGNsdWRlUGF0aD4KKyAgICAgICAgICA8cm9vdCB0eXBlPSJjb21wb3NpdGUiIC8+CisgICAgICAgIDwvZXhjbHVkZVBhdGg+CisgICAgICAgIDxqYXZhZG9jUGF0aD4KKyAgICAgICAgICA8cm9vdCB0eXBlPSJjb21wb3NpdGUiIC8+CisgICAgICAgIDwvamF2YWRvY1BhdGg+CisgICAgICA8L3Jvb3RzPgorICAgIDwvbGlicmFyeT4KKyAgICA8bGlicmFyeT4KKyAgICAgIDxuYW1lIHZhbHVlPSJtZGgtcGVyc29uYWwtNS4zLjEiIC8+CisgICAgICA8cm9vdHM+CisgICAgICAgIDxwcm9qZWN0UGF0aD4KKyAgICAgICAgICA8cm9vdCB0eXBlPSJjb21wb3NpdGUiIC8+CisgICAgICAgIDwvcHJvamVjdFBhdGg+CisgICAgICAgIDxzb3VyY2VQYXRoPgorICAgICAgICAgIDxyb290IHR5cGU9ImNvbXBvc2l0ZSI+CisgICAgICAgICAgICA8cm9vdCB0eXBlPSJzaW1wbGUiIHVybD0iZmlsZTovL0M6L3JlbGVhc2UvcGVyc29uYWwvc2hhcmVkL3NyYyIgLz4KKyAgICAgICAgICA8L3Jvb3Q+CisgICAgICAgIDwvc291cmNlUGF0aD4KKyAgICAgICAgPGNsYXNzUGF0aD4KKyAgICAgICAgICA8cm9vdCB0eXBlPSJjb21wb3NpdGUiPgorICAgICAgICAgICAgPHJvb3QgdHlwZT0ic2ltcGxlIiB1cmw9ImphcjovL0M6L2xpYi9wZXJzb25hbC9SRUxFQVNFLTVfM18xL3NoYXJlZC9saWIvcGVyc29uYWwtc2hhcmVkLmphciEvIiAvPgorICAgICAgICAgIDwvcm9vdD4KKyAgICAgICAgPC9jbGFzc1BhdGg+CisgICAgICAgIDxleGNsdWRlUGF0aD4KKyAgICAgICAgICA8cm9vdCB0eXBlPSJjb21wb3NpdGUiIC8+CisgICAgICAgIDwvZXhjbHVkZVBhdGg+CisgICAgICAgIDxqYXZhZG9jUGF0aD4KKyAgICAgICAgICA8cm9vdCB0eXBlPSJjb21wb3NpdGUiIC8+CisgICAgICAgIDwvamF2YWRvY1BhdGg+CisgICAgICA8L3Jvb3RzPgorICAgIDwvbGlicmFyeT4KKyAgICA8bGlicmFyeT4KKyAgICAgIDxuYW1lIHZhbHVlPSJtZGgtcG9ydGFsLTIuMSIgLz4KKyAgICAgIDxyb290cz4KKyAgICAgICAgPHByb2plY3RQYXRoPgorICAgICAgICAgIDxyb290IHR5cGU9ImNvbXBvc2l0ZSIgLz4KKyAgICAgICAgPC9wcm9qZWN0UGF0aD4KKyAgICAgICAgPHNvdXJjZVBhdGg+CisgICAgICAgICAgPHJvb3QgdHlwZT0iY29tcG9zaXRlIiAvPgorICAgICAgICA8L3NvdXJjZVBhdGg+CisgICAgICAgIDxjbGFzc1BhdGg+CisgICAgICAgICAgPHJvb3QgdHlwZT0iY29tcG9zaXRlIj4KKyAgICAgICAgICAgIDxyb290IHR5cGU9InNpbXBsZSIgdXJsPSJqYXI6Ly9DOi9saWIvcG9ydGFsL1JFTEVBU0UtMl8xL3BvcnRhbC9saWIvcG9ydGFsLmphciEvIiAvPgorICAgICAgICAgIDwvcm9vdD4KKyAgICAgICAgPC9jbGFzc1BhdGg+CisgICAgICAgIDxleGNsdWRlUGF0aD4KKyAgICAgICAgICA8cm9vdCB0eXBlPSJjb21wb3NpdGUiIC8+CisgICAgICAgIDwvZXhjbHVkZVBhdGg+CisgICAgICAgIDxqYXZhZG9jUGF0aD4KKyAgICAgICAgICA8cm9vdCB0eXBlPSJjb21wb3NpdGUiPgorICAgICAgICAgICAgPHJvb3QgdHlwZT0ic2ltcGxlIiB1cmw9ImZpbGU6Ly9DOi9saWIvcG9ydGFsL1JFTEVBU0UtMl8xL3BvcnRhbC9kb2NzL2FwaSIgLz4KKyAgICAgICAgICA8L3Jvb3Q+CisgICAgICAgIDwvamF2YWRvY1BhdGg+CisgICAgICA8L3Jvb3RzPgorICAgIDwvbGlicmFyeT4KKyAgICA8bGlicmFyeT4KKyAgICAgIDxuYW1lIHZhbHVlPSJtZGgtcm9ib3QtMS4xIiAvPgorICAgICAgPHJvb3RzPgorICAgICAgICA8cHJvamVjdFBhdGg+CisgICAgICAgICAgPHJvb3QgdHlwZT0iY29tcG9zaXRlIiAvPgorICAgICAgICA8L3Byb2plY3RQYXRoPgorICAgICAgICA8c291cmNlUGF0aD4KKyAgICAgICAgICA8cm9vdCB0eXBlPSJjb21wb3NpdGUiIC8+CisgICAgICAgIDwvc291cmNlUGF0aD4KKyAgICAgICAgPGNsYXNzUGF0aD4KKyAgICAgICAgICA8cm9vdCB0eXBlPSJjb21wb3NpdGUiPgorICAgICAgICAgICAgPHJvb3QgdHlwZT0ic2ltcGxlIiB1cmw9ImphcjovL0M6L2xpYi9yb2JvdC9SRUxFQVNFLTFfMS9yb2JvdC5qYXIhLyIgLz4KKyAgICAgICAgICA8L3Jvb3Q+CisgICAgICAgIDwvY2xhc3NQYXRoPgorICAgICAgICA8ZXhjbHVkZVBhdGg+CisgICAgICAgICAgPHJvb3QgdHlwZT0iY29tcG9zaXRlIiAvPgorICAgICAgICA8L2V4Y2x1ZGVQYXRoPgorICAgICAgICA8amF2YWRvY1BhdGg+CisgICAgICAgICAgPHJvb3QgdHlwZT0iY29tcG9zaXRlIj4KKyAgICAgICAgICAgIDxyb290IHR5cGU9InNpbXBsZSIgdXJsPSJmaWxlOi8vQzovbGliL3JvYm90L1JFTEVBU0UtMV8xL2RvY3MvYXBpIiAvPgorICAgICAgICAgIDwvcm9vdD4KKyAgICAgICAgPC9qYXZhZG9jUGF0aD4KKyAgICAgIDwvcm9vdHM+CisgICAgPC9saWJyYXJ5PgorICAgIDxsaWJyYXJ5PgorICAgICAgPG5hbWUgdmFsdWU9Im1kaC1zY2hlbWEtMi43IiAvPgorICAgICAgPHJvb3RzPgorICAgICAgICA8cHJvamVjdFBhdGg+CisgICAgICAgICAgPHJvb3QgdHlwZT0iY29tcG9zaXRlIiAvPgorICAgICAgICA8L3Byb2plY3RQYXRoPgorICAgICAgICA8c291cmNlUGF0aD4KKyAgICAgICAgICA8cm9vdCB0eXBlPSJjb21wb3NpdGUiPgorICAgICAgICAgICAgPHJvb3QgdHlwZT0ic2ltcGxlIiB1cmw9ImZpbGU6Ly9DOi9yZWxlYXNlL3NjaGVtYS9zcmMiIC8+CisgICAgICAgICAgPC9yb290PgorICAgICAgICA8L3NvdXJjZVBhdGg+CisgICAgICAgIDxjbGFzc1BhdGg+CisgICAgICAgICAgPHJvb3QgdHlwZT0iY29tcG9zaXRlIj4KKyAgICAgICAgICAgIDxyb290IHR5cGU9InNpbXBsZSIgdXJsPSJqYXI6Ly9DOi9saWIvc2NoZW1hL1JFTEVBU0UtMl83L3NjaGVtYS5qYXIhLyIgLz4KKyAgICAgICAgICA8L3Jvb3Q+CisgICAgICAgIDwvY2xhc3NQYXRoPgorICAgICAgICA8ZXhjbHVkZVBhdGg+CisgICAgICAgICAgPHJvb3QgdHlwZT0iY29tcG9zaXRlIiAvPgorICAgICAgICA8L2V4Y2x1ZGVQYXRoPgorICAgICAgICA8amF2YWRvY1BhdGg+CisgICAgICAgICAgPHJvb3QgdHlwZT0iY29tcG9zaXRlIiAvPgorICAgICAgICA8L2phdmFkb2NQYXRoPgorICAgICAgPC9yb290cz4KKyAgICA8L2xpYnJhcnk+CisgICAgPGxpYnJhcnk+CisgICAgICA8bmFtZSB2YWx1ZT0ibWRoLXNjaGVtYS0zLjAuMiIgLz4KKyAgICAgIDxyb290cz4KKyAgICAgICAgPHByb2plY3RQYXRoPgorICAgICAgICAgIDxyb290IHR5cGU9ImNvbXBvc2l0ZSIgLz4KKyAgICAgICAgPC9wcm9qZWN0UGF0aD4KKyAgICAgICAgPHNvdXJjZVBhdGg+CisgICAgICAgICAgPHJvb3QgdHlwZT0iY29tcG9zaXRlIiAvPgorICAgICAgICA8L3NvdXJjZVBhdGg+CisgICAgICAgIDxjbGFzc1BhdGg+CisgICAgICAgICAgPHJvb3QgdHlwZT0iY29tcG9zaXRlIj4KKyAgICAgICAgICAgIDxyb290IHR5cGU9InNpbXBsZSIgdXJsPSJqYXI6Ly9DOi9saWIvc2NoZW1hL1JFTEVBU0UtM18wXzIvc2hhcmVkL2xpYi9zY2hlbWEtc2hhcmVkLmphciEvIiAvPgorICAgICAgICAgIDwvcm9vdD4KKyAgICAgICAgPC9jbGFzc1BhdGg+CisgICAgICAgIDxleGNsdWRlUGF0aD4KKyAgICAgICAgICA8cm9vdCB0eXBlPSJjb21wb3NpdGUiIC8+CisgICAgICAgIDwvZXhjbHVkZVBhdGg+CisgICAgICAgIDxqYXZhZG9jUGF0aD4KKyAgICAgICAgICA8cm9vdCB0eXBlPSJjb21wb3NpdGUiPgorICAgICAgICAgICAgPHJvb3QgdHlwZT0ic2ltcGxlIiB1cmw9ImZpbGU6Ly9DOi9saWIvc2NoZW1hL1JFTEVBU0UtM18wXzIvc2hhcmVkL2RvY3MvYXBpIiAvPgorICAgICAgICAgIDwvcm9vdD4KKyAgICAgICAgPC9qYXZhZG9jUGF0aD4KKyAgICAgIDwvcm9vdHM+CisgICAgPC9saWJyYXJ5PgorICAgIDxsaWJyYXJ5PgorICAgICAgPG5hbWUgdmFsdWU9Im1kaC1zY2hlbWEtMy4wLjMiIC8+CisgICAgICA8cm9vdHM+CisgICAgICAgIDxwcm9qZWN0UGF0aD4KKyAgICAgICAgICA8cm9vdCB0eXBlPSJjb21wb3NpdGUiIC8+CisgICAgICAgIDwvcHJvamVjdFBhdGg+CisgICAgICAgIDxzb3VyY2VQYXRoPgorICAgICAgICAgIDxyb290IHR5cGU9ImNvbXBvc2l0ZSIgLz4KKyAgICAgICAgPC9zb3VyY2VQYXRoPgorICAgICAgICA8Y2xhc3NQYXRoPgorICAgICAgICAgIDxyb290IHR5cGU9ImNvbXBvc2l0ZSI+CisgICAgICAgICAgICA8cm9vdCB0eXBlPSJzaW1wbGUiIHVybD0iamFyOi8vQzovbGliL3NjaGVtYS9SRUxFQVNFLTNfMF8zL3NoYXJlZC9saWIvc2NoZW1hLXNoYXJlZC5qYXIhLyIgLz4KKyAgICAgICAgICA8L3Jvb3Q+CisgICAgICAgIDwvY2xhc3NQYXRoPgorICAgICAgICA8ZXhjbHVkZVBhdGg+CisgICAgICAgICAgPHJvb3QgdHlwZT0iY29tcG9zaXRlIiAvPgorICAgICAgICA8L2V4Y2x1ZGVQYXRoPgorICAgICAgICA8amF2YWRvY1BhdGg+CisgICAgICAgICAgPHJvb3QgdHlwZT0iY29tcG9zaXRlIj4KKyAgICAgICAgICAgIDxyb290IHR5cGU9InNpbXBsZSIgdXJsPSJmaWxlOi8vQzovbGliL3NjaGVtYS9SRUxFQVNFLTNfMF8zL3NoYXJlZC9kb2NzL2FwaSIgLz4KKyAgICAgICAgICA8L3Jvb3Q+CisgICAgICAgIDwvamF2YWRvY1BhdGg+CisgICAgICA8L3Jvb3RzPgorICAgIDwvbGlicmFyeT4KKyAgICA8bGlicmFyeT4KKyAgICAgIDxuYW1lIHZhbHVlPSJtZGgtc2VydmxldC0xLjQuMiIgLz4KKyAgICAgIDxyb290cz4KKyAgICAgICAgPHByb2plY3RQYXRoPgorICAgICAgICAgIDxyb290IHR5cGU9ImNvbXBvc2l0ZSIgLz4KKyAgICAgICAgPC9wcm9qZWN0UGF0aD4KKyAgICAgICAgPHNvdXJjZVBhdGg+CisgICAgICAgICAgPHJvb3QgdHlwZT0iY29tcG9zaXRlIiAvPgorICAgICAgICA8L3NvdXJjZVBhdGg+CisgICAgICAgIDxjbGFzc1BhdGg+CisgICAgICAgICAgPHJvb3QgdHlwZT0iY29tcG9zaXRlIj4KKyAgICAgICAgICAgIDxyb290IHR5cGU9InNpbXBsZSIgdXJsPSJqYXI6Ly9DOi9saWIvc2VydmxldC9SRUxFQVNFLTFfNF8yL3NlcnZsZXQuamFyIS8iIC8+CisgICAgICAgICAgPC9yb290PgorICAgICAgICA8L2NsYXNzUGF0aD4KKyAgICAgICAgPGV4Y2x1ZGVQYXRoPgorICAgICAgICAgIDxyb290IHR5cGU9ImNvbXBvc2l0ZSIgLz4KKyAgICAgICAgPC9leGNsdWRlUGF0aD4KKyAgICAgICAgPGphdmFkb2NQYXRoPgorICAgICAgICAgIDxyb290IHR5cGU9ImNvbXBvc2l0ZSIgLz4KKyAgICAgICAgPC9qYXZhZG9jUGF0aD4KKyAgICAgIDwvcm9vdHM+CisgICAgPC9saWJyYXJ5PgorICAgIDxsaWJyYXJ5PgorICAgICAgPG5hbWUgdmFsdWU9Im1kaC1zZXJ2bGV0LTEuNC4zIiAvPgorICAgICAgPHJvb3RzPgorICAgICAgICA8cHJvamVjdFBhdGg+CisgICAgICAgICAgPHJvb3QgdHlwZT0iY29tcG9zaXRlIiAvPgorICAgICAgICA8L3Byb2plY3RQYXRoPgorICAgICAgICA8c291cmNlUGF0aD4KKyAgICAgICAgICA8cm9vdCB0eXBlPSJjb21wb3NpdGUiIC8+CisgICAgICAgIDwvc291cmNlUGF0aD4KKyAgICAgICAgPGNsYXNzUGF0aD4KKyAgICAgICAgICA8cm9vdCB0eXBlPSJjb21wb3NpdGUiPgorICAgICAgICAgICAgPHJvb3QgdHlwZT0ic2ltcGxlIiB1cmw9ImphcjovL0M6L2xpYi9zZXJ2bGV0L1JFTEVBU0UtMV80XzMvc2VydmxldC5qYXIhLyIgLz4KKyAgICAgICAgICA8L3Jvb3Q+CisgICAgICAgIDwvY2xhc3NQYXRoPgorICAgICAgICA8ZXhjbHVkZVBhdGg+CisgICAgICAgICAgPHJvb3QgdHlwZT0iY29tcG9zaXRlIiAvPgorICAgICAgICA8L2V4Y2x1ZGVQYXRoPgorICAgICAgICA8amF2YWRvY1BhdGg+CisgICAgICAgICAgPHJvb3QgdHlwZT0iY29tcG9zaXRlIiAvPgorICAgICAgICA8L2phdmFkb2NQYXRoPgorICAgICAgPC9yb290cz4KKyAgICA8L2xpYnJhcnk+CisgICAgPGxpYnJhcnk+CisgICAgICA8bmFtZSB2YWx1ZT0ibWRoLXNlcnZsZXQtMi4xIiAvPgorICAgICAgPHJvb3RzPgorICAgICAgICA8cHJvamVjdFBhdGg+CisgICAgICAgICAgPHJvb3QgdHlwZT0iY29tcG9zaXRlIiAvPgorICAgICAgICA8L3Byb2plY3RQYXRoPgorICAgICAgICA8c291cmNlUGF0aD4KKyAgICAgICAgICA8cm9vdCB0eXBlPSJjb21wb3NpdGUiIC8+CisgICAgICAgIDwvc291cmNlUGF0aD4KKyAgICAgICAgPGNsYXNzUGF0aD4KKyAgICAgICAgICA8cm9vdCB0eXBlPSJjb21wb3NpdGUiPgorICAgICAgICAgICAgPHJvb3QgdHlwZT0ic2ltcGxlIiB1cmw9ImphcjovL0M6L2xpYi9zZXJ2bGV0L1JFTEVBU0UtMl8xL3NlcnZsZXQuamFyIS8iIC8+CisgICAgICAgICAgPC9yb290PgorICAgICAgICA8L2NsYXNzUGF0aD4KKyAgICAgICAgPGV4Y2x1ZGVQYXRoPgorICAgICAgICAgIDxyb290IHR5cGU9ImNvbXBvc2l0ZSIgLz4KKyAgICAgICAgPC9leGNsdWRlUGF0aD4KKyAgICAgICAgPGphdmFkb2NQYXRoPgorICAgICAgICAgIDxyb290IHR5cGU9ImNvbXBvc2l0ZSI+CisgICAgICAgICAgICA8cm9vdCB0eXBlPSJzaW1wbGUiIHVybD0iZmlsZTovL0M6L2xpYi9zZXJ2bGV0L1JFTEVBU0UtMl8xXzEvZG9jcy9hcGkiIC8+CisgICAgICAgICAgPC9yb290PgorICAgICAgICA8L2phdmFkb2NQYXRoPgorICAgICAgPC9yb290cz4KKyAgICA8L2xpYnJhcnk+CisgICAgPGxpYnJhcnk+CisgICAgICA8bmFtZSB2YWx1ZT0ibWRoLXNlcnZsZXQtMi4xLjEiIC8+CisgICAgICA8cm9vdHM+CisgICAgICAgIDxwcm9qZWN0UGF0aD4KKyAgICAgICAgICA8cm9vdCB0eXBlPSJjb21wb3NpdGUiIC8+CisgICAgICAgIDwvcHJvamVjdFBhdGg+CisgICAgICAgIDxzb3VyY2VQYXRoPgorICAgICAgICAgIDxyb290IHR5cGU9ImNvbXBvc2l0ZSIgLz4KKyAgICAgICAgPC9zb3VyY2VQYXRoPgorICAgICAgICA8Y2xhc3NQYXRoPgorICAgICAgICAgIDxyb290IHR5cGU9ImNvbXBvc2l0ZSI+CisgICAgICAgICAgICA8cm9vdCB0eXBlPSJzaW1wbGUiIHVybD0iamFyOi8vQzovbGliL3NlcnZsZXQvUkVMRUFTRS0yXzFfMS9zZXJ2bGV0LmphciEvIiAvPgorICAgICAgICAgIDwvcm9vdD4KKyAgICAgICAgPC9jbGFzc1BhdGg+CisgICAgICAgIDxleGNsdWRlUGF0aD4KKyAgICAgICAgICA8cm9vdCB0eXBlPSJjb21wb3NpdGUiIC8+CisgICAgICAgIDwvZXhjbHVkZVBhdGg+CisgICAgICAgIDxqYXZhZG9jUGF0aD4KKyAgICAgICAgICA8cm9vdCB0eXBlPSJjb21wb3NpdGUiPgorICAgICAgICAgICAgPHJvb3QgdHlwZT0ic2ltcGxlIiB1cmw9ImZpbGU6Ly9DOi9saWIvc2VydmxldC9SRUxFQVNFLTJfMV8xL2RvY3MvYXBpIiAvPgorICAgICAgICAgIDwvcm9vdD4KKyAgICAgICAgPC9qYXZhZG9jUGF0aD4KKyAgICAgIDwvcm9vdHM+CisgICAgPC9saWJyYXJ5PgorICAgIDxsaWJyYXJ5PgorICAgICAgPG5hbWUgdmFsdWU9Im1kaC1zaWMtMy4xIiAvPgorICAgICAgPHJvb3RzPgorICAgICAgICA8cHJvamVjdFBhdGg+CisgICAgICAgICAgPHJvb3QgdHlwZT0iY29tcG9zaXRlIiAvPgorICAgICAgICA8L3Byb2plY3RQYXRoPgorICAgICAgICA8c291cmNlUGF0aD4KKyAgICAgICAgICA8cm9vdCB0eXBlPSJjb21wb3NpdGUiIC8+CisgICAgICAgIDwvc291cmNlUGF0aD4KKyAgICAgICAgPGNsYXNzUGF0aD4KKyAgICAgICAgICA8cm9vdCB0eXBlPSJjb21wb3NpdGUiPgorICAgICAgICAgICAgPHJvb3QgdHlwZT0ic2ltcGxlIiB1cmw9ImphcjovL0M6L2xpYi9zaWMvUkVMRUFTRS0zXzEvc2ljLmphciEvIiAvPgorICAgICAgICAgIDwvcm9vdD4KKyAgICAgICAgPC9jbGFzc1BhdGg+CisgICAgICAgIDxleGNsdWRlUGF0aD4KKyAgICAgICAgICA8cm9vdCB0eXBlPSJjb21wb3NpdGUiIC8+CisgICAgICAgIDwvZXhjbHVkZVBhdGg+CisgICAgICAgIDxqYXZhZG9jUGF0aD4KKyAgICAgICAgICA8cm9vdCB0eXBlPSJjb21wb3NpdGUiPgorICAgICAgICAgICAgPHJvb3QgdHlwZT0ic2ltcGxlIiB1cmw9ImZpbGU6Ly9DOi9yZWxlYXNlL3NpYy9zcmMiIC8+CisgICAgICAgICAgPC9yb290PgorICAgICAgICA8L2phdmFkb2NQYXRoPgorICAgICAgPC9yb290cz4KKyAgICA8L2xpYnJhcnk+CisgICAgPGxpYnJhcnk+CisgICAgICA8bmFtZSB2YWx1ZT0ibWRoLXNpYy00LjEuMSIgLz4KKyAgICAgIDxyb290cz4KKyAgICAgICAgPHByb2plY3RQYXRoPgorICAgICAgICAgIDxyb290IHR5cGU9ImNvbXBvc2l0ZSIgLz4KKyAgICAgICAgPC9wcm9qZWN0UGF0aD4KKyAgICAgICAgPHNvdXJjZVBhdGg+CisgICAgICAgICAgPHJvb3QgdHlwZT0iY29tcG9zaXRlIiAvPgorICAgICAgICA8L3NvdXJjZVBhdGg+CisgICAgICAgIDxjbGFzc1BhdGg+CisgICAgICAgICAgPHJvb3QgdHlwZT0iY29tcG9zaXRlIj4KKyAgICAgICAgICAgIDxyb290IHR5cGU9InNpbXBsZSIgdXJsPSJqYXI6Ly9DOi9saWIvc2ljL1JFTEVBU0UtNF8xXzEvc2hhcmVkL2xpYi9zaWMtc2hhcmVkLmphciEvIiAvPgorICAgICAgICAgIDwvcm9vdD4KKyAgICAgICAgPC9jbGFzc1BhdGg+CisgICAgICAgIDxleGNsdWRlUGF0aD4KKyAgICAgICAgICA8cm9vdCB0eXBlPSJjb21wb3NpdGUiIC8+CisgICAgICAgIDwvZXhjbHVkZVBhdGg+CisgICAgICAgIDxqYXZhZG9jUGF0aD4KKyAgICAgICAgICA8cm9vdCB0eXBlPSJjb21wb3NpdGUiPgorICAgICAgICAgICAgPHJvb3QgdHlwZT0ic2ltcGxlIiB1cmw9ImZpbGU6Ly9DOi9saWIvc2ljL1JFTEVBU0UtNF8xXzEvc2hhcmVkL2RvY3MvYXBpIiAvPgorICAgICAgICAgIDwvcm9vdD4KKyAgICAgICAgPC9qYXZhZG9jUGF0aD4KKyAgICAgIDwvcm9vdHM+CisgICAgPC9saWJyYXJ5PgorICAgIDxsaWJyYXJ5PgorICAgICAgPG5hbWUgdmFsdWU9Im1kaC1zaWMtNC4yIiAvPgorICAgICAgPHJvb3RzPgorICAgICAgICA8cHJvamVjdFBhdGg+CisgICAgICAgICAgPHJvb3QgdHlwZT0iY29tcG9zaXRlIiAvPgorICAgICAgICA8L3Byb2plY3RQYXRoPgorICAgICAgICA8c291cmNlUGF0aD4KKyAgICAgICAgICA8cm9vdCB0eXBlPSJjb21wb3NpdGUiIC8+CisgICAgICAgIDwvc291cmNlUGF0aD4KKyAgICAgICAgPGNsYXNzUGF0aD4KKyAgICAgICAgICA8cm9vdCB0eXBlPSJjb21wb3NpdGUiPgorICAgICAgICAgICAgPHJvb3QgdHlwZT0ic2ltcGxlIiB1cmw9ImphcjovL0M6L2xpYi9zaWMvUkVMRUFTRS00XzIvc2hhcmVkL2xpYi9zaWMtc2hhcmVkLmphciEvIiAvPgorICAgICAgICAgIDwvcm9vdD4KKyAgICAgICAgPC9jbGFzc1BhdGg+CisgICAgICAgIDxleGNsdWRlUGF0aD4KKyAgICAgICAgICA8cm9vdCB0eXBlPSJjb21wb3NpdGUiIC8+CisgICAgICAgIDwvZXhjbHVkZVBhdGg+CisgICAgICAgIDxqYXZhZG9jUGF0aD4KKyAgICAgICAgICA8cm9vdCB0eXBlPSJjb21wb3NpdGUiPgorICAgICAgICAgICAgPHJvb3QgdHlwZT0ic2ltcGxlIiB1cmw9ImZpbGU6Ly9DOi9saWIvc2ljL1JFTEVBU0UtNF8yL3NoYXJlZC9kb2NzL2FwaSIgLz4KKyAgICAgICAgICA8L3Jvb3Q+CisgICAgICAgIDwvamF2YWRvY1BhdGg+CisgICAgICA8L3Jvb3RzPgorICAgIDwvbGlicmFyeT4KKyAgICA8bGlicmFyeT4KKyAgICAgIDxuYW1lIHZhbHVlPSJtZGgtc3R1ZGllaW5mb3JtYXRpb24tMy40IiAvPgorICAgICAgPHJvb3RzPgorICAgICAgICA8cHJvamVjdFBhdGg+CisgICAgICAgICAgPHJvb3QgdHlwZT0iY29tcG9zaXRlIiAvPgorICAgICAgICA8L3Byb2plY3RQYXRoPgorICAgICAgICA8c291cmNlUGF0aD4KKyAgICAgICAgICA8cm9vdCB0eXBlPSJjb21wb3NpdGUiIC8+CisgICAgICAgIDwvc291cmNlUGF0aD4KKyAgICAgICAgPGNsYXNzUGF0aD4KKyAgICAgICAgICA8cm9vdCB0eXBlPSJjb21wb3NpdGUiPgorICAgICAgICAgICAgPHJvb3QgdHlwZT0ic2ltcGxlIiB1cmw9ImphcjovL0M6L2xpYi9zdHVkaWVpbmZvcm1hdGlvbi9SRUxFQVNFLTNfNC9zdHVkaWVpbmZvcm1hdGlvbi5qYXIhLyIgLz4KKyAgICAgICAgICA8L3Jvb3Q+CisgICAgICAgIDwvY2xhc3NQYXRoPgorICAgICAgICA8ZXhjbHVkZVBhdGg+CisgICAgICAgICAgPHJvb3QgdHlwZT0iY29tcG9zaXRlIiAvPgorICAgICAgICA8L2V4Y2x1ZGVQYXRoPgorICAgICAgICA8amF2YWRvY1BhdGg+CisgICAgICAgICAgPHJvb3QgdHlwZT0iY29tcG9zaXRlIiAvPgorICAgICAgICA8L2phdmFkb2NQYXRoPgorICAgICAgPC9yb290cz4KKyAgICA8L2xpYnJhcnk+CisgICAgPGxpYnJhcnk+CisgICAgICA8bmFtZSB2YWx1ZT0ibWRoLXN0dWRpZWluZm9ybWF0aW9uLTQuMCIgLz4KKyAgICAgIDxyb290cz4KKyAgICAgICAgPHByb2plY3RQYXRoPgorICAgICAgICAgIDxyb290IHR5cGU9ImNvbXBvc2l0ZSIgLz4KKyAgICAgICAgPC9wcm9qZWN0UGF0aD4KKyAgICAgICAgPHNvdXJjZVBhdGg+CisgICAgICAgICAgPHJvb3QgdHlwZT0iY29tcG9zaXRlIiAvPgorICAgICAgICA8L3NvdXJjZVBhdGg+CisgICAgICAgIDxjbGFzc1BhdGg+CisgICAgICAgICAgPHJvb3QgdHlwZT0iY29tcG9zaXRlIj4KKyAgICAgICAgICAgIDxyb290IHR5cGU9InNpbXBsZSIgdXJsPSJqYXI6Ly9DOi9saWIvc3R1ZGllaW5mb3JtYXRpb24vUkVMRUFTRS00XzAvc2hhcmVkL2xpYi9zdHVkaWVpbmZvcm1hdGlvbi1zaGFyZWQuamFyIS8iIC8+CisgICAgICAgICAgPC9yb290PgorICAgICAgICA8L2NsYXNzUGF0aD4KKyAgICAgICAgPGV4Y2x1ZGVQYXRoPgorICAgICAgICAgIDxyb290IHR5cGU9ImNvbXBvc2l0ZSIgLz4KKyAgICAgICAgPC9leGNsdWRlUGF0aD4KKyAgICAgICAgPGphdmFkb2NQYXRoPgorICAgICAgICAgIDxyb290IHR5cGU9ImNvbXBvc2l0ZSI+CisgICAgICAgICAgICA8cm9vdCB0eXBlPSJzaW1wbGUiIHVybD0iZmlsZTovL0M6L2xpYi9zdHVkaWVpbmZvcm1hdGlvbi9SRUxFQVNFLTRfMC9zaGFyZWQvZG9jcy9hcGkiIC8+CisgICAgICAgICAgPC9yb290PgorICAgICAgICA8L2phdmFkb2NQYXRoPgorICAgICAgPC9yb290cz4KKyAgICA8L2xpYnJhcnk+CisgICAgPGxpYnJhcnk+CisgICAgICA8bmFtZSB2YWx1ZT0ibWRoLXN0dWRpZWluZm9ybWF0aW9uLTQuMi4xIiAvPgorICAgICAgPHJvb3RzPgorICAgICAgICA8cHJvamVjdFBhdGg+CisgICAgICAgICAgPHJvb3QgdHlwZT0iY29tcG9zaXRlIiAvPgorICAgICAgICA8L3Byb2plY3RQYXRoPgorICAgICAgICA8c291cmNlUGF0aD4KKyAgICAgICAgICA8cm9vdCB0eXBlPSJjb21wb3NpdGUiIC8+CisgICAgICAgIDwvc291cmNlUGF0aD4KKyAgICAgICAgPGNsYXNzUGF0aD4KKyAgICAgICAgICA8cm9vdCB0eXBlPSJjb21wb3NpdGUiPgorICAgICAgICAgICAgPHJvb3QgdHlwZT0ic2ltcGxlIiB1cmw9ImphcjovL0M6L2xpYi9zdHVkaWVpbmZvcm1hdGlvbi9SRUxFQVNFLTRfMl8xL3NoYXJlZC9saWIvc3R1ZGllaW5mb3JtYXRpb24tc2hhcmVkLmphciEvIiAvPgorICAgICAgICAgIDwvcm9vdD4KKyAgICAgICAgPC9jbGFzc1BhdGg+CisgICAgICAgIDxleGNsdWRlUGF0aD4KKyAgICAgICAgICA8cm9vdCB0eXBlPSJjb21wb3NpdGUiIC8+CisgICAgICAgIDwvZXhjbHVkZVBhdGg+CisgICAgICAgIDxqYXZhZG9jUGF0aD4KKyAgICAgICAgICA8cm9vdCB0eXBlPSJjb21wb3NpdGUiPgorICAgICAgICAgICAgPHJvb3QgdHlwZT0ic2ltcGxlIiB1cmw9ImZpbGU6Ly9DOi9saWIvc3R1ZGllaW5mb3JtYXRpb24vUkVMRUFTRS00XzJfMS9zaGFyZWQvZG9jcy9hcGkiIC8+CisgICAgICAgICAgPC9yb290PgorICAgICAgICA8L2phdmFkb2NQYXRoPgorICAgICAgPC9yb290cz4KKyAgICA8L2xpYnJhcnk+CisgICAgPGxpYnJhcnk+CisgICAgICA8bmFtZSB2YWx1ZT0ibWRoLXN0dWRpZWluZm9ybWF0aW9uLWFkbWluLTMuNS4yIiAvPgorICAgICAgPHJvb3RzPgorICAgICAgICA8cHJvamVjdFBhdGg+CisgICAgICAgICAgPHJvb3QgdHlwZT0iY29tcG9zaXRlIiAvPgorICAgICAgICA8L3Byb2plY3RQYXRoPgorICAgICAgICA8c291cmNlUGF0aD4KKyAgICAgICAgICA8cm9vdCB0eXBlPSJjb21wb3NpdGUiIC8+CisgICAgICAgIDwvc291cmNlUGF0aD4KKyAgICAgICAgPGNsYXNzUGF0aD4KKyAgICAgICAgICA8cm9vdCB0eXBlPSJjb21wb3NpdGUiPgorICAgICAgICAgICAgPHJvb3QgdHlwZT0ic2ltcGxlIiB1cmw9ImphcjovL0M6L2xpYi9zdHVkaWVpbmZvcm1hdGlvbi9SRUxFQVNFLTNfNV8yL3N0dWRpZWluZm9ybWF0aW9uLWFkbWluLmphciEvIiAvPgorICAgICAgICAgIDwvcm9vdD4KKyAgICAgICAgPC9jbGFzc1BhdGg+CisgICAgICAgIDxleGNsdWRlUGF0aD4KKyAgICAgICAgICA8cm9vdCB0eXBlPSJjb21wb3NpdGUiIC8+CisgICAgICAgIDwvZXhjbHVkZVBhdGg+CisgICAgICAgIDxqYXZhZG9jUGF0aD4KKyAgICAgICAgICA8cm9vdCB0eXBlPSJjb21wb3NpdGUiIC8+CisgICAgICAgIDwvamF2YWRvY1BhdGg+CisgICAgICA8L3Jvb3RzPgorICAgIDwvbGlicmFyeT4KKyAgICA8bGlicmFyeT4KKyAgICAgIDxuYW1lIHZhbHVlPSJtZGgtc3dpbmctMS4xIiAvPgorICAgICAgPHJvb3RzPgorICAgICAgICA8cHJvamVjdFBhdGg+CisgICAgICAgICAgPHJvb3QgdHlwZT0iY29tcG9zaXRlIiAvPgorICAgICAgICA8L3Byb2plY3RQYXRoPgorICAgICAgICA8c291cmNlUGF0aD4KKyAgICAgICAgICA8cm9vdCB0eXBlPSJjb21wb3NpdGUiIC8+CisgICAgICAgIDwvc291cmNlUGF0aD4KKyAgICAgICAgPGNsYXNzUGF0aD4KKyAgICAgICAgICA8cm9vdCB0eXBlPSJjb21wb3NpdGUiPgorICAgICAgICAgICAgPHJvb3QgdHlwZT0ic2ltcGxlIiB1cmw9ImphcjovL0M6L2xpYi9zd2luZy9SRUxFQVNFLTFfMS9zd2luZy5qYXIhLyIgLz4KKyAgICAgICAgICA8L3Jvb3Q+CisgICAgICAgIDwvY2xhc3NQYXRoPgorICAgICAgICA8ZXhjbHVkZVBhdGg+CisgICAgICAgICAgPHJvb3QgdHlwZT0iY29tcG9zaXRlIiAvPgorICAgICAgICA8L2V4Y2x1ZGVQYXRoPgorICAgICAgICA8amF2YWRvY1BhdGg+CisgICAgICAgICAgPHJvb3QgdHlwZT0iY29tcG9zaXRlIj4KKyAgICAgICAgICAgIDxyb290IHR5cGU9InNpbXBsZSIgdXJsPSJmaWxlOi8vQzovbGliL3N3aW5nL1JFTEVBU0UtMV8xL2RvY3MvYXBpIiAvPgorICAgICAgICAgIDwvcm9vdD4KKyAgICAgICAgPC9qYXZhZG9jUGF0aD4KKyAgICAgIDwvcm9vdHM+CisgICAgPC9saWJyYXJ5PgorICAgIDxsaWJyYXJ5PgorICAgICAgPG5hbWUgdmFsdWU9Im1kaC1zd2luZy0xLjIiIC8+CisgICAgICA8cm9vdHM+CisgICAgICAgIDxwcm9qZWN0UGF0aD4KKyAgICAgICAgICA8cm9vdCB0eXBlPSJjb21wb3NpdGUiIC8+CisgICAgICAgIDwvcHJvamVjdFBhdGg+CisgICAgICAgIDxzb3VyY2VQYXRoPgorICAgICAgICAgIDxyb290IHR5cGU9ImNvbXBvc2l0ZSIgLz4KKyAgICAgICAgPC9zb3VyY2VQYXRoPgorICAgICAgICA8Y2xhc3NQYXRoPgorICAgICAgICAgIDxyb290IHR5cGU9ImNvbXBvc2l0ZSI+CisgICAgICAgICAgICA8cm9vdCB0eXBlPSJzaW1wbGUiIHVybD0iamFyOi8vQzovbGliL3N3aW5nL1JFTEVBU0UtMV8yL3N3aW5nLmphciEvIiAvPgorICAgICAgICAgIDwvcm9vdD4KKyAgICAgICAgPC9jbGFzc1BhdGg+CisgICAgICAgIDxleGNsdWRlUGF0aD4KKyAgICAgICAgICA8cm9vdCB0eXBlPSJjb21wb3NpdGUiIC8+CisgICAgICAgIDwvZXhjbHVkZVBhdGg+CisgICAgICAgIDxqYXZhZG9jUGF0aD4KKyAgICAgICAgICA8cm9vdCB0eXBlPSJjb21wb3NpdGUiPgorICAgICAgICAgICAgPHJvb3QgdHlwZT0ic2ltcGxlIiB1cmw9ImZpbGU6Ly9DOi9saWIvc3dpbmcvUkVMRUFTRS0xXzIvZG9jcy9hcGkiIC8+CisgICAgICAgICAgPC9yb290PgorICAgICAgICA8L2phdmFkb2NQYXRoPgorICAgICAgPC9yb290cz4KKyAgICA8L2xpYnJhcnk+CisgICAgPGxpYnJhcnk+CisgICAgICA8bmFtZSB2YWx1ZT0ibWRoLXRhZ2xpYi1odG1sLTEuNSIgLz4KKyAgICAgIDxyb290cz4KKyAgICAgICAgPHByb2plY3RQYXRoPgorICAgICAgICAgIDxyb290IHR5cGU9ImNvbXBvc2l0ZSIgLz4KKyAgICAgICAgPC9wcm9qZWN0UGF0aD4KKyAgICAgICAgPHNvdXJjZVBhdGg+CisgICAgICAgICAgPHJvb3QgdHlwZT0iY29tcG9zaXRlIiAvPgorICAgICAgICA8L3NvdXJjZVBhdGg+CisgICAgICAgIDxjbGFzc1BhdGg+CisgICAgICAgICAgPHJvb3QgdHlwZT0iY29tcG9zaXRlIj4KKyAgICAgICAgICAgIDxyb290IHR5cGU9InNpbXBsZSIgdXJsPSJqYXI6Ly9DOi9saWIvdGFnbGliL1JFTEVBU0UtMV81L2h0bWwvbGliL3RhZ2xpYi1odG1sLmphciEvIiAvPgorICAgICAgICAgIDwvcm9vdD4KKyAgICAgICAgPC9jbGFzc1BhdGg+CisgICAgICAgIDxleGNsdWRlUGF0aD4KKyAgICAgICAgICA8cm9vdCB0eXBlPSJjb21wb3NpdGUiIC8+CisgICAgICAgIDwvZXhjbHVkZVBhdGg+CisgICAgICAgIDxqYXZhZG9jUGF0aD4KKyAgICAgICAgICA8cm9vdCB0eXBlPSJjb21wb3NpdGUiPgorICAgICAgICAgICAgPHJvb3QgdHlwZT0ic2ltcGxlIiB1cmw9ImZpbGU6Ly9DOi9saWIvdGFnbGliL1JFTEVBU0UtMV81L2h0bWwvZG9jcy9hcGkiIC8+CisgICAgICAgICAgPC9yb290PgorICAgICAgICA8L2phdmFkb2NQYXRoPgorICAgICAgPC9yb290cz4KKyAgICA8L2xpYnJhcnk+CisgICAgPGxpYnJhcnk+CisgICAgICA8bmFtZSB2YWx1ZT0ibWRoLXRhZ2xpYi1odG1sLTEuNiIgLz4KKyAgICAgIDxyb290cz4KKyAgICAgICAgPHByb2plY3RQYXRoPgorICAgICAgICAgIDxyb290IHR5cGU9ImNvbXBvc2l0ZSIgLz4KKyAgICAgICAgPC9wcm9qZWN0UGF0aD4KKyAgICAgICAgPHNvdXJjZVBhdGg+CisgICAgICAgICAgPHJvb3QgdHlwZT0iY29tcG9zaXRlIiAvPgorICAgICAgICA8L3NvdXJjZVBhdGg+CisgICAgICAgIDxjbGFzc1BhdGg+CisgICAgICAgICAgPHJvb3QgdHlwZT0iY29tcG9zaXRlIj4KKyAgICAgICAgICAgIDxyb290IHR5cGU9InNpbXBsZSIgdXJsPSJqYXI6Ly9DOi9saWIvdGFnbGliL1JFTEVBU0UtMV82L2h0bWwvbGliL3RhZ2xpYi1odG1sLmphciEvIiAvPgorICAgICAgICAgIDwvcm9vdD4KKyAgICAgICAgPC9jbGFzc1BhdGg+CisgICAgICAgIDxleGNsdWRlUGF0aD4KKyAgICAgICAgICA8cm9vdCB0eXBlPSJjb21wb3NpdGUiIC8+CisgICAgICAgIDwvZXhjbHVkZVBhdGg+CisgICAgICAgIDxqYXZhZG9jUGF0aD4KKyAgICAgICAgICA8cm9vdCB0eXBlPSJjb21wb3NpdGUiPgorICAgICAgICAgICAgPHJvb3QgdHlwZT0ic2ltcGxlIiB1cmw9ImZpbGU6Ly9DOi9saWIvdGFnbGliL1JFTEVBU0UtMV82L2h0bWwvZG9jcy9hcGkiIC8+CisgICAgICAgICAgPC9yb290PgorICAgICAgICA8L2phdmFkb2NQYXRoPgorICAgICAgPC9yb290cz4KKyAgICA8L2xpYnJhcnk+CisgICAgPGxpYnJhcnk+CisgICAgICA8bmFtZSB2YWx1ZT0ibWRoLXRhZ2xpYi1zcHJhay0xLjUiIC8+CisgICAgICA8cm9vdHM+CisgICAgICAgIDxwcm9qZWN0UGF0aD4KKyAgICAgICAgICA8cm9vdCB0eXBlPSJjb21wb3NpdGUiIC8+CisgICAgICAgIDwvcHJvamVjdFBhdGg+CisgICAgICAgIDxzb3VyY2VQYXRoPgorICAgICAgICAgIDxyb290IHR5cGU9ImNvbXBvc2l0ZSIgLz4KKyAgICAgICAgPC9zb3VyY2VQYXRoPgorICAgICAgICA8Y2xhc3NQYXRoPgorICAgICAgICAgIDxyb290IHR5cGU9ImNvbXBvc2l0ZSI+CisgICAgICAgICAgICA8cm9vdCB0eXBlPSJzaW1wbGUiIHVybD0iamFyOi8vQzovbGliL3RhZ2xpYi9SRUxFQVNFLTFfNS9zcHJhay9saWIvdGFnbGliLXNwcmFrLmphciEvIiAvPgorICAgICAgICAgIDwvcm9vdD4KKyAgICAgICAgPC9jbGFzc1BhdGg+CisgICAgICAgIDxleGNsdWRlUGF0aD4KKyAgICAgICAgICA8cm9vdCB0eXBlPSJjb21wb3NpdGUiIC8+CisgICAgICAgIDwvZXhjbHVkZVBhdGg+CisgICAgICAgIDxqYXZhZG9jUGF0aD4KKyAgICAgICAgICA8cm9vdCB0eXBlPSJjb21wb3NpdGUiPgorICAgICAgICAgICAgPHJvb3QgdHlwZT0ic2ltcGxlIiB1cmw9ImZpbGU6Ly9DOi9saWIvdGFnbGliL1JFTEVBU0UtMV81L3NwcmFrL2RvY3MvYXBpIiAvPgorICAgICAgICAgIDwvcm9vdD4KKyAgICAgICAgPC9qYXZhZG9jUGF0aD4KKyAgICAgIDwvcm9vdHM+CisgICAgPC9saWJyYXJ5PgorICAgIDxsaWJyYXJ5PgorICAgICAgPG5hbWUgdmFsdWU9Im1kaC10YWdsaWItc3ByYWstMS42IiAvPgorICAgICAgPHJvb3RzPgorICAgICAgICA8cHJvamVjdFBhdGg+CisgICAgICAgICAgPHJvb3QgdHlwZT0iY29tcG9zaXRlIiAvPgorICAgICAgICA8L3Byb2plY3RQYXRoPgorICAgICAgICA8c291cmNlUGF0aD4KKyAgICAgICAgICA8cm9vdCB0eXBlPSJjb21wb3NpdGUiIC8+CisgICAgICAgIDwvc291cmNlUGF0aD4KKyAgICAgICAgPGNsYXNzUGF0aD4KKyAgICAgICAgICA8cm9vdCB0eXBlPSJjb21wb3NpdGUiPgorICAgICAgICAgICAgPHJvb3QgdHlwZT0ic2ltcGxlIiB1cmw9ImphcjovL0M6L2xpYi90YWdsaWIvUkVMRUFTRS0xXzYvc3ByYWsvbGliL3RhZ2xpYi1zcHJhay5qYXIhLyIgLz4KKyAgICAgICAgICA8L3Jvb3Q+CisgICAgICAgIDwvY2xhc3NQYXRoPgorICAgICAgICA8ZXhjbHVkZVBhdGg+CisgICAgICAgICAgPHJvb3QgdHlwZT0iY29tcG9zaXRlIiAvPgorICAgICAgICA8L2V4Y2x1ZGVQYXRoPgorICAgICAgICA8amF2YWRvY1BhdGg+CisgICAgICAgICAgPHJvb3QgdHlwZT0iY29tcG9zaXRlIj4KKyAgICAgICAgICAgIDxyb290IHR5cGU9InNpbXBsZSIgdXJsPSJmaWxlOi8vQzovbGliL3RhZ2xpYi9SRUxFQVNFLTFfNi9zcHJhay9kb2NzL2FwaSIgLz4KKyAgICAgICAgICA8L3Jvb3Q+CisgICAgICAgIDwvamF2YWRvY1BhdGg+CisgICAgICA8L3Jvb3RzPgorICAgIDwvbGlicmFyeT4KKyAgICA8bGlicmFyeT4KKyAgICAgIDxuYW1lIHZhbHVlPSJtZGgtdGFnbGliLXRva2VuLTEuNSIgLz4KKyAgICAgIDxyb290cz4KKyAgICAgICAgPHByb2plY3RQYXRoPgorICAgICAgICAgIDxyb290IHR5cGU9ImNvbXBvc2l0ZSIgLz4KKyAgICAgICAgPC9wcm9qZWN0UGF0aD4KKyAgICAgICAgPHNvdXJjZVBhdGg+CisgICAgICAgICAgPHJvb3QgdHlwZT0iY29tcG9zaXRlIiAvPgorICAgICAgICA8L3NvdXJjZVBhdGg+CisgICAgICAgIDxjbGFzc1BhdGg+CisgICAgICAgICAgPHJvb3QgdHlwZT0iY29tcG9zaXRlIj4KKyAgICAgICAgICAgIDxyb290IHR5cGU9InNpbXBsZSIgdXJsPSJqYXI6Ly9DOi9saWIvdGFnbGliL1JFTEVBU0UtMV81L3Rva2VuL2xpYi90YWdsaWItdG9rZW4uamFyIS8iIC8+CisgICAgICAgICAgPC9yb290PgorICAgICAgICA8L2NsYXNzUGF0aD4KKyAgICAgICAgPGV4Y2x1ZGVQYXRoPgorICAgICAgICAgIDxyb290IHR5cGU9ImNvbXBvc2l0ZSIgLz4KKyAgICAgICAgPC9leGNsdWRlUGF0aD4KKyAgICAgICAgPGphdmFkb2NQYXRoPgorICAgICAgICAgIDxyb290IHR5cGU9ImNvbXBvc2l0ZSI+CisgICAgICAgICAgICA8cm9vdCB0eXBlPSJzaW1wbGUiIHVybD0iZmlsZTovL0M6L2xpYi90YWdsaWIvUkVMRUFTRS0xXzUvdG9rZW4vZG9jcy9hcGkiIC8+CisgICAgICAgICAgPC9yb290PgorICAgICAgICA8L2phdmFkb2NQYXRoPgorICAgICAgPC9yb290cz4KKyAgICA8L2xpYnJhcnk+CisgICAgPGxpYnJhcnk+CisgICAgICA8bmFtZSB2YWx1ZT0ibWRoLXRhZ2xpYi10b2tlbi0xLjYiIC8+CisgICAgICA8cm9vdHM+CisgICAgICAgIDxwcm9qZWN0UGF0aD4KKyAgICAgICAgICA8cm9vdCB0eXBlPSJjb21wb3NpdGUiIC8+CisgICAgICAgIDwvcHJvamVjdFBhdGg+CisgICAgICAgIDxzb3VyY2VQYXRoPgorICAgICAgICAgIDxyb290IHR5cGU9ImNvbXBvc2l0ZSIgLz4KKyAgICAgICAgPC9zb3VyY2VQYXRoPgorICAgICAgICA8Y2xhc3NQYXRoPgorICAgICAgICAgIDxyb290IHR5cGU9ImNvbXBvc2l0ZSI+CisgICAgICAgICAgICA8cm9vdCB0eXBlPSJzaW1wbGUiIHVybD0iamFyOi8vQzovbGliL3RhZ2xpYi9SRUxFQVNFLTFfNi90b2tlbi9saWIvdGFnbGliLXRva2VuLmphciEvIiAvPgorICAgICAgICAgIDwvcm9vdD4KKyAgICAgICAgPC9jbGFzc1BhdGg+CisgICAgICAgIDxleGNsdWRlUGF0aD4KKyAgICAgICAgICA8cm9vdCB0eXBlPSJjb21wb3NpdGUiIC8+CisgICAgICAgIDwvZXhjbHVkZVBhdGg+CisgICAgICAgIDxqYXZhZG9jUGF0aD4KKyAgICAgICAgICA8cm9vdCB0eXBlPSJjb21wb3NpdGUiPgorICAgICAgICAgICAgPHJvb3QgdHlwZT0ic2ltcGxlIiB1cmw9ImZpbGU6Ly9DOi9saWIvdGFnbGliL1JFTEVBU0UtMV82L3Rva2VuL2RvY3MvYXBpIiAvPgorICAgICAgICAgIDwvcm9vdD4KKyAgICAgICAgPC9qYXZhZG9jUGF0aD4KKyAgICAgIDwvcm9vdHM+CisgICAgPC9saWJyYXJ5PgorICAgIDxsaWJyYXJ5PgorICAgICAgPG5hbWUgdmFsdWU9Im1kaC11dGlsLTIuMC4xIiAvPgorICAgICAgPHJvb3RzPgorICAgICAgICA8cHJvamVjdFBhdGg+CisgICAgICAgICAgPHJvb3QgdHlwZT0iY29tcG9zaXRlIiAvPgorICAgICAgICA8L3Byb2plY3RQYXRoPgorICAgICAgICA8c291cmNlUGF0aD4KKyAgICAgICAgICA8cm9vdCB0eXBlPSJjb21wb3NpdGUiIC8+CisgICAgICAgIDwvc291cmNlUGF0aD4KKyAgICAgICAgPGNsYXNzUGF0aD4KKyAgICAgICAgICA8cm9vdCB0eXBlPSJjb21wb3NpdGUiPgorICAgICAgICAgICAgPHJvb3QgdHlwZT0ic2ltcGxlIiB1cmw9ImphcjovL0M6L2xpYi91dGlsL1JFTEVBU0UtMl8wXzEvdXRpbC5qYXIhLyIgLz4KKyAgICAgICAgICA8L3Jvb3Q+CisgICAgICAgIDwvY2xhc3NQYXRoPgorICAgICAgICA8ZXhjbHVkZVBhdGg+CisgICAgICAgICAgPHJvb3QgdHlwZT0iY29tcG9zaXRlIiAvPgorICAgICAgICA8L2V4Y2x1ZGVQYXRoPgorICAgICAgICA8amF2YWRvY1BhdGg+CisgICAgICAgICAgPHJvb3QgdHlwZT0iY29tcG9zaXRlIiAvPgorICAgICAgICA8L2phdmFkb2NQYXRoPgorICAgICAgPC9yb290cz4KKyAgICA8L2xpYnJhcnk+CisgICAgPGxpYnJhcnk+CisgICAgICA8bmFtZSB2YWx1ZT0ibWRoLXV0aWwtMi4xIiAvPgorICAgICAgPHJvb3RzPgorICAgICAgICA8cHJvamVjdFBhdGg+CisgICAgICAgICAgPHJvb3QgdHlwZT0iY29tcG9zaXRlIiAvPgorICAgICAgICA8L3Byb2plY3RQYXRoPgorICAgICAgICA8c291cmNlUGF0aD4KKyAgICAgICAgICA8cm9vdCB0eXBlPSJjb21wb3NpdGUiIC8+CisgICAgICAgIDwvc291cmNlUGF0aD4KKyAgICAgICAgPGNsYXNzUGF0aD4KKyAgICAgICAgICA8cm9vdCB0eXBlPSJjb21wb3NpdGUiPgorICAgICAgICAgICAgPHJvb3QgdHlwZT0ic2ltcGxlIiB1cmw9ImphcjovL0M6L2xpYi91dGlsL1JFTEVBU0UtMl8xL3V0aWwuamFyIS8iIC8+CisgICAgICAgICAgPC9yb290PgorICAgICAgICA8L2NsYXNzUGF0aD4KKyAgICAgICAgPGV4Y2x1ZGVQYXRoPgorICAgICAgICAgIDxyb290IHR5cGU9ImNvbXBvc2l0ZSIgLz4KKyAgICAgICAgPC9leGNsdWRlUGF0aD4KKyAgICAgICAgPGphdmFkb2NQYXRoPgorICAgICAgICAgIDxyb290IHR5cGU9ImNvbXBvc2l0ZSIgLz4KKyAgICAgICAgPC9qYXZhZG9jUGF0aD4KKyAgICAgIDwvcm9vdHM+CisgICAgPC9saWJyYXJ5PgorICAgIDxsaWJyYXJ5PgorICAgICAgPG5hbWUgdmFsdWU9Im1kaC11dGlsLTIuMiIgLz4KKyAgICAgIDxyb290cz4KKyAgICAgICAgPHByb2plY3RQYXRoPgorICAgICAgICAgIDxyb290IHR5cGU9ImNvbXBvc2l0ZSIgLz4KKyAgICAgICAgPC9wcm9qZWN0UGF0aD4KKyAgICAgICAgPHNvdXJjZVBhdGg+CisgICAgICAgICAgPHJvb3QgdHlwZT0iY29tcG9zaXRlIiAvPgorICAgICAgICA8L3NvdXJjZVBhdGg+CisgICAgICAgIDxjbGFzc1BhdGg+CisgICAgICAgICAgPHJvb3QgdHlwZT0iY29tcG9zaXRlIj4KKyAgICAgICAgICAgIDxyb290IHR5cGU9InNpbXBsZSIgdXJsPSJqYXI6Ly9DOi9saWIvdXRpbC9SRUxFQVNFLTJfMi91dGlsLmphciEvIiAvPgorICAgICAgICAgIDwvcm9vdD4KKyAgICAgICAgPC9jbGFzc1BhdGg+CisgICAgICAgIDxleGNsdWRlUGF0aD4KKyAgICAgICAgICA8cm9vdCB0eXBlPSJjb21wb3NpdGUiIC8+CisgICAgICAgIDwvZXhjbHVkZVBhdGg+CisgICAgICAgIDxqYXZhZG9jUGF0aD4KKyAgICAgICAgICA8cm9vdCB0eXBlPSJjb21wb3NpdGUiPgorICAgICAgICAgICAgPHJvb3QgdHlwZT0ic2ltcGxlIiB1cmw9ImZpbGU6Ly9DOi9saWIvdXRpbC9SRUxFQVNFLTJfMi9kb2NzL2FwaSIgLz4KKyAgICAgICAgICA8L3Jvb3Q+CisgICAgICAgIDwvamF2YWRvY1BhdGg+CisgICAgICA8L3Jvb3RzPgorICAgIDwvbGlicmFyeT4KKyAgICA8bGlicmFyeT4KKyAgICAgIDxuYW1lIHZhbHVlPSJtZGgtdXRpbC0yLjMiIC8+CisgICAgICA8cm9vdHM+CisgICAgICAgIDxwcm9qZWN0UGF0aD4KKyAgICAgICAgICA8cm9vdCB0eXBlPSJjb21wb3NpdGUiIC8+CisgICAgICAgIDwvcHJvamVjdFBhdGg+CisgICAgICAgIDxzb3VyY2VQYXRoPgorICAgICAgICAgIDxyb290IHR5cGU9ImNvbXBvc2l0ZSIgLz4KKyAgICAgICAgPC9zb3VyY2VQYXRoPgorICAgICAgICA8Y2xhc3NQYXRoPgorICAgICAgICAgIDxyb290IHR5cGU9ImNvbXBvc2l0ZSI+CisgICAgICAgICAgICA8cm9vdCB0eXBlPSJzaW1wbGUiIHVybD0iamFyOi8vQzovbGliL3V0aWwvUkVMRUFTRS0yXzMvdXRpbC5qYXIhLyIgLz4KKyAgICAgICAgICA8L3Jvb3Q+CisgICAgICAgIDwvY2xhc3NQYXRoPgorICAgICAgICA8ZXhjbHVkZVBhdGg+CisgICAgICAgICAgPHJvb3QgdHlwZT0iY29tcG9zaXRlIiAvPgorICAgICAgICA8L2V4Y2x1ZGVQYXRoPgorICAgICAgICA8amF2YWRvY1BhdGg+CisgICAgICAgICAgPHJvb3QgdHlwZT0iY29tcG9zaXRlIj4KKyAgICAgICAgICAgIDxyb290IHR5cGU9InNpbXBsZSIgdXJsPSJmaWxlOi8vQzovbGliL3V0aWwvUkVMRUFTRS0yXzMvZG9jcy9hcGkiIC8+CisgICAgICAgICAgPC9yb290PgorICAgICAgICA8L2phdmFkb2NQYXRoPgorICAgICAgPC9yb290cz4KKyAgICA8L2xpYnJhcnk+CisgICAgPGxpYnJhcnk+CisgICAgICA8bmFtZSB2YWx1ZT0ibWRoLXV0aWwtMi4zLjEiIC8+CisgICAgICA8cm9vdHM+CisgICAgICAgIDxwcm9qZWN0UGF0aD4KKyAgICAgICAgICA8cm9vdCB0eXBlPSJjb21wb3NpdGUiIC8+CisgICAgICAgIDwvcHJvamVjdFBhdGg+CisgICAgICAgIDxzb3VyY2VQYXRoPgorICAgICAgICAgIDxyb290IHR5cGU9ImNvbXBvc2l0ZSIgLz4KKyAgICAgICAgPC9zb3VyY2VQYXRoPgorICAgICAgICA8Y2xhc3NQYXRoPgorICAgICAgICAgIDxyb290IHR5cGU9ImNvbXBvc2l0ZSI+CisgICAgICAgICAgICA8cm9vdCB0eXBlPSJzaW1wbGUiIHVybD0iamFyOi8vQzovbGliL3V0aWwvUkVMRUFTRS0yXzNfMS91dGlsLmphciEvIiAvPgorICAgICAgICAgIDwvcm9vdD4KKyAgICAgICAgPC9jbGFzc1BhdGg+CisgICAgICAgIDxleGNsdWRlUGF0aD4KKyAgICAgICAgICA8cm9vdCB0eXBlPSJjb21wb3NpdGUiIC8+CisgICAgICAgIDwvZXhjbHVkZVBhdGg+CisgICAgICAgIDxqYXZhZG9jUGF0aD4KKyAgICAgICAgICA8cm9vdCB0eXBlPSJjb21wb3NpdGUiPgorICAgICAgICAgICAgPHJvb3QgdHlwZT0ic2ltcGxlIiB1cmw9ImZpbGU6Ly9DOi9saWIvdXRpbC9SRUxFQVNFLTJfM18xL2RvY3MvYXBpIiAvPgorICAgICAgICAgIDwvcm9vdD4KKyAgICAgICAgPC9qYXZhZG9jUGF0aD4KKyAgICAgIDwvcm9vdHM+CisgICAgPC9saWJyYXJ5PgorICAgIDxsaWJyYXJ5PgorICAgICAgPG5hbWUgdmFsdWU9Im1kaC11dGlsLWFwcGxldC0yLjIiIC8+CisgICAgICA8cm9vdHM+CisgICAgICAgIDxwcm9qZWN0UGF0aD4KKyAgICAgICAgICA8cm9vdCB0eXBlPSJjb21wb3NpdGUiIC8+CisgICAgICAgIDwvcHJvamVjdFBhdGg+CisgICAgICAgIDxzb3VyY2VQYXRoPgorICAgICAgICAgIDxyb290IHR5cGU9ImNvbXBvc2l0ZSIgLz4KKyAgICAgICAgPC9zb3VyY2VQYXRoPgorICAgICAgICA8Y2xhc3NQYXRoPgorICAgICAgICAgIDxyb290IHR5cGU9ImNvbXBvc2l0ZSI+CisgICAgICAgICAgICA8cm9vdCB0eXBlPSJzaW1wbGUiIHVybD0iamFyOi8vQzovbGliL3V0aWwvUkVMRUFTRS0yXzIvdXRpbC1hcHBsZXQuamFyIS8iIC8+CisgICAgICAgICAgPC9yb290PgorICAgICAgICA8L2NsYXNzUGF0aD4KKyAgICAgICAgPGV4Y2x1ZGVQYXRoPgorICAgICAgICAgIDxyb290IHR5cGU9ImNvbXBvc2l0ZSIgLz4KKyAgICAgICAgPC9leGNsdWRlUGF0aD4KKyAgICAgICAgPGphdmFkb2NQYXRoPgorICAgICAgICAgIDxyb290IHR5cGU9ImNvbXBvc2l0ZSI+CisgICAgICAgICAgICA8cm9vdCB0eXBlPSJzaW1wbGUiIHVybD0iZmlsZTovL0M6L2xpYi91dGlsL1JFTEVBU0UtMl8yL2RvY3MvYXBpIiAvPgorICAgICAgICAgIDwvcm9vdD4KKyAgICAgICAgPC9qYXZhZG9jUGF0aD4KKyAgICAgIDwvcm9vdHM+CisgICAgPC9saWJyYXJ5PgorICAgIDxsaWJyYXJ5PgorICAgICAgPG5hbWUgdmFsdWU9Im1kaC11dGlsLWFwcGxldC0yLjMuMSIgLz4KKyAgICAgIDxyb290cz4KKyAgICAgICAgPHByb2plY3RQYXRoPgorICAgICAgICAgIDxyb290IHR5cGU9ImNvbXBvc2l0ZSIgLz4KKyAgICAgICAgPC9wcm9qZWN0UGF0aD4KKyAgICAgICAgPHNvdXJjZVBhdGg+CisgICAgICAgICAgPHJvb3QgdHlwZT0iY29tcG9zaXRlIiAvPgorICAgICAgICA8L3NvdXJjZVBhdGg+CisgICAgICAgIDxjbGFzc1BhdGg+CisgICAgICAgICAgPHJvb3QgdHlwZT0iY29tcG9zaXRlIj4KKyAgICAgICAgICAgIDxyb290IHR5cGU9InNpbXBsZSIgdXJsPSJqYXI6Ly9DOi9saWIvdXRpbC9SRUxFQVNFLTJfM18xL3V0aWwtYXBwbGV0LmphciEvIiAvPgorICAgICAgICAgIDwvcm9vdD4KKyAgICAgICAgPC9jbGFzc1BhdGg+CisgICAgICAgIDxleGNsdWRlUGF0aD4KKyAgICAgICAgICA8cm9vdCB0eXBlPSJjb21wb3NpdGUiIC8+CisgICAgICAgIDwvZXhjbHVkZVBhdGg+CisgICAgICAgIDxqYXZhZG9jUGF0aD4KKyAgICAgICAgICA8cm9vdCB0eXBlPSJjb21wb3NpdGUiPgorICAgICAgICAgICAgPHJvb3QgdHlwZT0ic2ltcGxlIiB1cmw9ImZpbGU6Ly9DOi9saWIvdXRpbC9SRUxFQVNFLTJfM18xL2RvY3MvYXBpIiAvPgorICAgICAgICAgIDwvcm9vdD4KKyAgICAgICAgPC9qYXZhZG9jUGF0aD4KKyAgICAgIDwvcm9vdHM+CisgICAgPC9saWJyYXJ5PgorICAgIDxsaWJyYXJ5PgorICAgICAgPG5hbWUgdmFsdWU9Im15c3FsLTIuMCIgLz4KKyAgICAgIDxyb290cz4KKyAgICAgICAgPHByb2plY3RQYXRoPgorICAgICAgICAgIDxyb290IHR5cGU9ImNvbXBvc2l0ZSIgLz4KKyAgICAgICAgPC9wcm9qZWN0UGF0aD4KKyAgICAgICAgPHNvdXJjZVBhdGg+CisgICAgICAgICAgPHJvb3QgdHlwZT0iY29tcG9zaXRlIiAvPgorICAgICAgICA8L3NvdXJjZVBhdGg+CisgICAgICAgIDxjbGFzc1BhdGg+CisgICAgICAgICAgPHJvb3QgdHlwZT0iY29tcG9zaXRlIj4KKyAgICAgICAgICAgIDxyb290IHR5cGU9InNpbXBsZSIgdXJsPSJqYXI6Ly9DOi9saWIvZXh0L215c3FsLzJfMC9teXNxbC5qYXIhLyIgLz4KKyAgICAgICAgICA8L3Jvb3Q+CisgICAgICAgIDwvY2xhc3NQYXRoPgorICAgICAgICA8ZXhjbHVkZVBhdGg+CisgICAgICAgICAgPHJvb3QgdHlwZT0iY29tcG9zaXRlIiAvPgorICAgICAgICA8L2V4Y2x1ZGVQYXRoPgorICAgICAgICA8amF2YWRvY1BhdGg+CisgICAgICAgICAgPHJvb3QgdHlwZT0iY29tcG9zaXRlIiAvPgorICAgICAgICA8L2phdmFkb2NQYXRoPgorICAgICAgPC9yb290cz4KKyAgICA8L2xpYnJhcnk+CisgICAgPGxpYnJhcnk+CisgICAgICA8bmFtZSB2YWx1ZT0ibXlzcWwtMy4wIiAvPgorICAgICAgPHJvb3RzPgorICAgICAgICA8cHJvamVjdFBhdGg+CisgICAgICAgICAgPHJvb3QgdHlwZT0iY29tcG9zaXRlIiAvPgorICAgICAgICA8L3Byb2plY3RQYXRoPgorICAgICAgICA8c291cmNlUGF0aD4KKyAgICAgICAgICA8cm9vdCB0eXBlPSJjb21wb3NpdGUiIC8+CisgICAgICAgIDwvc291cmNlUGF0aD4KKyAgICAgICAgPGNsYXNzUGF0aD4KKyAgICAgICAgICA8cm9vdCB0eXBlPSJjb21wb3NpdGUiPgorICAgICAgICAgICAgPHJvb3QgdHlwZT0ic2ltcGxlIiB1cmw9ImphcjovL0M6L2xpYi9leHQvbXlzcWwvM18wL215c3FsLmphciEvIiAvPgorICAgICAgICAgIDwvcm9vdD4KKyAgICAgICAgPC9jbGFzc1BhdGg+CisgICAgICAgIDxleGNsdWRlUGF0aD4KKyAgICAgICAgICA8cm9vdCB0eXBlPSJjb21wb3NpdGUiIC8+CisgICAgICAgIDwvZXhjbHVkZVBhdGg+CisgICAgICAgIDxqYXZhZG9jUGF0aD4KKyAgICAgICAgICA8cm9vdCB0eXBlPSJjb21wb3NpdGUiIC8+CisgICAgICAgIDwvamF2YWRvY1BhdGg+CisgICAgICA8L3Jvb3RzPgorICAgIDwvbGlicmFyeT4KKyAgICA8bGlicmFyeT4KKyAgICAgIDxuYW1lIHZhbHVlPSJvcmFjbGUiIC8+CisgICAgICA8cm9vdHM+CisgICAgICAgIDxwcm9qZWN0UGF0aD4KKyAgICAgICAgICA8cm9vdCB0eXBlPSJjb21wb3NpdGUiIC8+CisgICAgICAgIDwvcHJvamVjdFBhdGg+CisgICAgICAgIDxzb3VyY2VQYXRoPgorICAgICAgICAgIDxyb290IHR5cGU9ImNvbXBvc2l0ZSIgLz4KKyAgICAgICAgPC9zb3VyY2VQYXRoPgorICAgICAgICA8Y2xhc3NQYXRoPgorICAgICAgICAgIDxyb290IHR5cGU9ImNvbXBvc2l0ZSI+CisgICAgICAgICAgICA8cm9vdCB0eXBlPSJzaW1wbGUiIHVybD0iamFyOi8vQzovbGliL2Rpc3QvY2xhc3NlczEyLnppcCEvIiAvPgorICAgICAgICAgIDwvcm9vdD4KKyAgICAgICAgPC9jbGFzc1BhdGg+CisgICAgICAgIDxleGNsdWRlUGF0aD4KKyAgICAgICAgICA8cm9vdCB0eXBlPSJjb21wb3NpdGUiIC8+CisgICAgICAgIDwvZXhjbHVkZVBhdGg+CisgICAgICAgIDxqYXZhZG9jUGF0aD4KKyAgICAgICAgICA8cm9vdCB0eXBlPSJjb21wb3NpdGUiIC8+CisgICAgICAgIDwvamF2YWRvY1BhdGg+CisgICAgICA8L3Jvb3RzPgorICAgIDwvbGlicmFyeT4KKyAgICA8bGlicmFyeT4KKyAgICAgIDxuYW1lIHZhbHVlPSJvcmFjbGUtOC4xIiAvPgorICAgICAgPHJvb3RzPgorICAgICAgICA8cHJvamVjdFBhdGg+CisgICAgICAgICAgPHJvb3QgdHlwZT0iY29tcG9zaXRlIiAvPgorICAgICAgICA8L3Byb2plY3RQYXRoPgorICAgICAgICA8c291cmNlUGF0aD4KKyAgICAgICAgICA8cm9vdCB0eXBlPSJjb21wb3NpdGUiIC8+CisgICAgICAgIDwvc291cmNlUGF0aD4KKyAgICAgICAgPGNsYXNzUGF0aD4KKyAgICAgICAgICA8cm9vdCB0eXBlPSJjb21wb3NpdGUiPgorICAgICAgICAgICAgPHJvb3QgdHlwZT0ic2ltcGxlIiB1cmw9ImphcjovL0M6L2xpYi9leHQvb3JhY2xlLzhfMS9vcmFjbGUuamFyIS8iIC8+CisgICAgICAgICAgPC9yb290PgorICAgICAgICA8L2NsYXNzUGF0aD4KKyAgICAgICAgPGV4Y2x1ZGVQYXRoPgorICAgICAgICAgIDxyb290IHR5cGU9ImNvbXBvc2l0ZSIgLz4KKyAgICAgICAgPC9leGNsdWRlUGF0aD4KKyAgICAgICAgPGphdmFkb2NQYXRoPgorICAgICAgICAgIDxyb290IHR5cGU9ImNvbXBvc2l0ZSIgLz4KKyAgICAgICAgPC9qYXZhZG9jUGF0aD4KKyAgICAgIDwvcm9vdHM+CisgICAgPC9saWJyYXJ5PgorICAgIDxsaWJyYXJ5PgorICAgICAgPG5hbWUgdmFsdWU9Im9ydS0yLjAuMSIgLz4KKyAgICAgIDxyb290cz4KKyAgICAgICAgPHByb2plY3RQYXRoPgorICAgICAgICAgIDxyb290IHR5cGU9ImNvbXBvc2l0ZSIgLz4KKyAgICAgICAgPC9wcm9qZWN0UGF0aD4KKyAgICAgICAgPHNvdXJjZVBhdGg+CisgICAgICAgICAgPHJvb3QgdHlwZT0iY29tcG9zaXRlIiAvPgorICAgICAgICA8L3NvdXJjZVBhdGg+CisgICAgICAgIDxjbGFzc1BhdGg+CisgICAgICAgICAgPHJvb3QgdHlwZT0iY29tcG9zaXRlIj4KKyAgICAgICAgICAgIDxyb290IHR5cGU9InNpbXBsZSIgdXJsPSJqYXI6Ly9DOi9saWIvb3J1L1JFTEVBU0UtMl8wXzEvb3J1LmphciEvIiAvPgorICAgICAgICAgIDwvcm9vdD4KKyAgICAgICAgPC9jbGFzc1BhdGg+CisgICAgICAgIDxleGNsdWRlUGF0aD4KKyAgICAgICAgICA8cm9vdCB0eXBlPSJjb21wb3NpdGUiIC8+CisgICAgICAgIDwvZXhjbHVkZVBhdGg+CisgICAgICAgIDxqYXZhZG9jUGF0aD4KKyAgICAgICAgICA8cm9vdCB0eXBlPSJjb21wb3NpdGUiPgorICAgICAgICAgICAgPHJvb3QgdHlwZT0ic2ltcGxlIiB1cmw9ImZpbGU6Ly9DOi9saWIvb3J1L1JFTEVBU0UtMl8wXzEvZG9jcy9hcGkiIC8+CisgICAgICAgICAgPC9yb290PgorICAgICAgICA8L2phdmFkb2NQYXRoPgorICAgICAgPC9yb290cz4KKyAgICA8L2xpYnJhcnk+CisgICAgPGxpYnJhcnk+CisgICAgICA8bmFtZSB2YWx1ZT0ic2VydmxldC1hcGktMi4zIiAvPgorICAgICAgPHJvb3RzPgorICAgICAgICA8cHJvamVjdFBhdGg+CisgICAgICAgICAgPHJvb3QgdHlwZT0iY29tcG9zaXRlIiAvPgorICAgICAgICA8L3Byb2plY3RQYXRoPgorICAgICAgICA8c291cmNlUGF0aD4KKyAgICAgICAgICA8cm9vdCB0eXBlPSJjb21wb3NpdGUiIC8+CisgICAgICAgIDwvc291cmNlUGF0aD4KKyAgICAgICAgPGNsYXNzUGF0aD4KKyAgICAgICAgICA8cm9vdCB0eXBlPSJjb21wb3NpdGUiPgorICAgICAgICAgICAgPHJvb3QgdHlwZT0ic2ltcGxlIiB1cmw9ImphcjovL0M6L2xpYi9leHQvc2VydmxldC8yXzMvc2VydmxldC5qYXIhLyIgLz4KKyAgICAgICAgICA8L3Jvb3Q+CisgICAgICAgIDwvY2xhc3NQYXRoPgorICAgICAgICA8ZXhjbHVkZVBhdGg+CisgICAgICAgICAgPHJvb3QgdHlwZT0iY29tcG9zaXRlIiAvPgorICAgICAgICA8L2V4Y2x1ZGVQYXRoPgorICAgICAgICA8amF2YWRvY1BhdGg+CisgICAgICAgICAgPHJvb3QgdHlwZT0iY29tcG9zaXRlIj4KKyAgICAgICAgICAgIDxyb290IHR5cGU9InNpbXBsZSIgdXJsPSJmaWxlOi8vQzovbGliL2V4dC9zZXJ2bGV0LzJfMy9zZXJ2bGV0LTJfMy1mY3MtZG9jcyIgLz4KKyAgICAgICAgICAgIDxyb290IHR5cGU9InNpbXBsZSIgdXJsPSJmaWxlOi8vQzovbGliL2V4dC9zZXJ2bGV0LzJfMy9qc3AtMV8yLWZjcy1kb2NzIiAvPgorICAgICAgICAgIDwvcm9vdD4KKyAgICAgICAgPC9qYXZhZG9jUGF0aD4KKyAgICAgIDwvcm9vdHM+CisgICAgPC9saWJyYXJ5PgorICAgIDxsaWJyYXJ5PgorICAgICAgPG5hbWUgdmFsdWU9Indlc3Rlcm1hcmNrLXZjYWxlbmRhciIgLz4KKyAgICAgIDxyb290cz4KKyAgICAgICAgPHByb2plY3RQYXRoPgorICAgICAgICAgIDxyb290IHR5cGU9ImNvbXBvc2l0ZSIgLz4KKyAgICAgICAgPC9wcm9qZWN0UGF0aD4KKyAgICAgICAgPHNvdXJjZVBhdGg+CisgICAgICAgICAgPHJvb3QgdHlwZT0iY29tcG9zaXRlIiAvPgorICAgICAgICA8L3NvdXJjZVBhdGg+CisgICAgICAgIDxjbGFzc1BhdGg+CisgICAgICAgICAgPHJvb3QgdHlwZT0iY29tcG9zaXRlIj4KKyAgICAgICAgICAgIDxyb290IHR5cGU9InNpbXBsZSIgdXJsPSJqYXI6Ly9DOi9saWIvZXh0L3dlc3Rlcm1hcmNrLXZjYWxlbmRhci93ZXN0ZXJtYXJjay12Y2FsZW5kYXIuamFyIS8iIC8+CisgICAgICAgICAgPC9yb290PgorICAgICAgICA8L2NsYXNzUGF0aD4KKyAgICAgICAgPGV4Y2x1ZGVQYXRoPgorICAgICAgICAgIDxyb290IHR5cGU9ImNvbXBvc2l0ZSIgLz4KKyAgICAgICAgPC9leGNsdWRlUGF0aD4KKyAgICAgICAgPGphdmFkb2NQYXRoPgorICAgICAgICAgIDxyb290IHR5cGU9ImNvbXBvc2l0ZSIgLz4KKyAgICAgICAgPC9qYXZhZG9jUGF0aD4KKyAgICAgIDwvcm9vdHM+CisgICAgPC9saWJyYXJ5PgorICAgIDxsaWJyYXJ5PgorICAgICAgPG5hbWUgdmFsdWU9ImxvZzRqbW9uaXRvciIgLz4KKyAgICAgIDxyb290cz4KKyAgICAgICAgPHByb2plY3RQYXRoPgorICAgICAgICAgIDxyb290IHR5cGU9ImNvbXBvc2l0ZSIgLz4KKyAgICAgICAgPC9wcm9qZWN0UGF0aD4KKyAgICAgICAgPHNvdXJjZVBhdGg+CisgICAgICAgICAgPHJvb3QgdHlwZT0iY29tcG9zaXRlIiAvPgorICAgICAgICA8L3NvdXJjZVBhdGg+CisgICAgICAgIDxjbGFzc1BhdGg+CisgICAgICAgICAgPHJvb3QgdHlwZT0iY29tcG9zaXRlIj4KKyAgICAgICAgICAgIDxyb290IHR5cGU9InNpbXBsZSIgdXJsPSJqYXI6Ly9DOi9Qcm9ncmFtL0ludGVsbGlKLUlERUEtMy4wLjUvbGliL2xvZzRqbW9uaXRvci5qYXIhLyIgLz4KKyAgICAgICAgICA8L3Jvb3Q+CisgICAgICAgIDwvY2xhc3NQYXRoPgorICAgICAgICA8ZXhjbHVkZVBhdGg+CisgICAgICAgICAgPHJvb3QgdHlwZT0iY29tcG9zaXRlIiAvPgorICAgICAgICA8L2V4Y2x1ZGVQYXRoPgorICAgICAgICA8amF2YWRvY1BhdGg+CisgICAgICAgICAgPHJvb3QgdHlwZT0iY29tcG9zaXRlIiAvPgorICAgICAgICA8L2phdmFkb2NQYXRoPgorICAgICAgPC9yb290cz4KKyAgICA8L2xpYnJhcnk+CisgIDwvY29tcG9uZW50PgorPC9hcHBsaWNhdGlvbj4KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL21vZHVsZVJvb3RNYW5hZ2VyL2NvbnZlcnRvcjM0L3Rlc3QxL2FmdGVyL3Byai5pbWwgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvbW9kdWxlUm9vdE1hbmFnZXIvY29udmVydG9yMzQvdGVzdDEvYWZ0ZXIvcHJqLmltbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45OTcyODU5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL21vZHVsZVJvb3RNYW5hZ2VyL2NvbnZlcnRvcjM0L3Rlc3QxL2FmdGVyL3Byai5pbWwKQEAgLTAsMCArMSwxMyBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxtb2R1bGUgdmVyc2lvbj0iNCIgcmVsYXRpdmVQYXRocz0idHJ1ZSI+Cis8Y29tcG9uZW50IG5hbWU9Ik5ld01vZHVsZVJvb3RNYW5hZ2VyIj4KKyAgPGNvbnRlbnQgdXJsPSJmaWxlOi8vJE1PRFVMRV9ESVIkIj4KKyAgICA8c291cmNlRm9sZGVyIGlzVGVzdFNvdXJjZT0iZmFsc2UiIHVybD0iZmlsZTovLyRNT0RVTEVfRElSJC9zcmMiIC8+CisgIDwvY29udGVudD4KKyAgPG9yZGVyRW50cnkgdHlwZT0ic291cmNlRm9sZGVyIiAvPgorICA8b3JkZXJFbnRyeSB0eXBlPSJqZGsiIGpka05hbWU9ImphdmEgdmVyc2lvbiAmcXVvdDsxLjQuMiZxdW90OyIgLz4KKyAgPG91dHB1dCB1cmw9ImZpbGU6Ly8kTU9EVUxFX0RJUiQvY2xhc3NlcyIgLz4KKyAgPG91dHB1dC10ZXN0IHVybD0iZmlsZTovLyRNT0RVTEVfRElSJC9jbGFzc2VzIiAvPgorICA8ZXhjbHVkZS1vdXRwdXQgLz4KKzwvY29tcG9uZW50PgorPC9tb2R1bGU+CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvbW9kdWxlUm9vdE1hbmFnZXIvY29udmVydG9yMzQvdGVzdDEvYWZ0ZXIvcHJqLmlwciBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9tb2R1bGVSb290TWFuYWdlci9jb252ZXJ0b3IzNC90ZXN0MS9hZnRlci9wcmouaXByCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU3NTU4ODUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvbW9kdWxlUm9vdE1hbmFnZXIvY29udmVydG9yMzQvdGVzdDEvYWZ0ZXIvcHJqLmlwcgpAQCAtMCwwICsxLDkgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8cHJvamVjdCB2ZXJzaW9uPSI0IiByZWxhdGl2ZVBhdGhzPSJ0cnVlIj4KKyAgPGNvbXBvbmVudCBuYW1lPSJQcm9qZWN0TW9kdWxlTWFuYWdlciI+CisgICAgPG1vZHVsZXM+CisgICAgICA8bW9kdWxlIGZpbGVwYXRoPSIkUFJPSkVDVF9ESVIkL3Byai5pbWwiIGZpbGV1cmw9ImZpbGU6Ly8kUFJPSkVDVF9ESVIkL3Byai5pbWwiIC8+CisgICAgPC9tb2R1bGVzPgorICA8L2NvbXBvbmVudD4KKzwvcHJvamVjdD4KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL21vZHVsZVJvb3RNYW5hZ2VyL2NvbnZlcnRvcjM0L3Rlc3QxL2JlZm9yZS9wcmouaXByIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL21vZHVsZVJvb3RNYW5hZ2VyL2NvbnZlcnRvcjM0L3Rlc3QxL2JlZm9yZS9wcmouaXByCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk3YjE2NDEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvbW9kdWxlUm9vdE1hbmFnZXIvY29udmVydG9yMzQvdGVzdDEvYmVmb3JlL3Byai5pcHIKQEAgLTAsMCArMSwxMDggQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8cHJvamVjdCB2ZXJzaW9uPSIzIiByZWxhdGl2ZVBhdGhzPSJmYWxzZSI+CisgIDxjb21wb25lbnQgbmFtZT0iUHJvamVjdFJvb3RNYW5hZ2VyIiB2ZXJzaW9uPSIyIj4KKyAgICA8amRrIG5hbWU9ImphdmEgdmVyc2lvbiAmcXVvdDsxLjQuMiZxdW90OyIgLz4KKyAgICA8cHJvamVjdFBhdGg+CisgICAgICA8cm9vdCB0eXBlPSJjb21wb3NpdGUiPgorICAgICAgICA8cm9vdCB0eXBlPSJzaW1wbGUiIHVybD0iZmlsZTovLyRQUk9KRUNUX0RJUiQiIC8+CisgICAgICA8L3Jvb3Q+CisgICAgPC9wcm9qZWN0UGF0aD4KKyAgICA8c291cmNlUGF0aD4KKyAgICAgIDxyb290IHR5cGU9ImNvbXBvc2l0ZSI+CisgICAgICAgIDxyb290IHR5cGU9InNpbXBsZSIgdXJsPSJmaWxlOi8vJFBST0pFQ1RfRElSJC9zcmMiIC8+CisgICAgICAgIDxyb290IHR5cGU9ImpkayIgcm9vdFR5cGU9InNvdXJjZVBhdGgiIG5hbWU9ImphdmEgdmVyc2lvbiAmcXVvdDsxLjQuMiZxdW90OyIgLz4KKyAgICAgIDwvcm9vdD4KKyAgICA8L3NvdXJjZVBhdGg+CisgICAgPGNsYXNzUGF0aD4KKyAgICAgIDxyb290IHR5cGU9ImNvbXBvc2l0ZSI+CisgICAgICAgIDxyb290IHR5cGU9Im91dHB1dCIgLz4KKyAgICAgICAgPHJvb3QgdHlwZT0iamRrIiByb290VHlwZT0iY2xhc3NQYXRoIiBuYW1lPSJqYXZhIHZlcnNpb24gJnF1b3Q7MS40LjImcXVvdDsiIC8+CisgICAgICA8L3Jvb3Q+CisgICAgPC9jbGFzc1BhdGg+CisgICAgPGV4Y2x1ZGVQYXRoPgorICAgICAgPHJvb3QgdHlwZT0iY29tcG9zaXRlIj4KKyAgICAgICAgPHJvb3QgdHlwZT0iZXhjbHVkZWRPdXRwdXQiIC8+CisgICAgICA8L3Jvb3Q+CisgICAgPC9leGNsdWRlUGF0aD4KKyAgICA8amF2YWRvY1BhdGg+CisgICAgICA8cm9vdCB0eXBlPSJjb21wb3NpdGUiPgorICAgICAgICA8cm9vdCB0eXBlPSJqZGsiIHJvb3RUeXBlPSJqYXZhZG9jUGF0aCIgbmFtZT0iamF2YSB2ZXJzaW9uICZxdW90OzEuNC4yJnF1b3Q7IiAvPgorICAgICAgPC9yb290PgorICAgIDwvamF2YWRvY1BhdGg+CisgICAgPGFzc2VydF9rZXl3b3JkIGVuYWJsZWQ9Im5vIiAvPgorICAgIDxleGNsdWRlX291dHB1dCBlbmFibGVkPSJ5ZXMiIC8+CisgIDwvY29tcG9uZW50PgorICA8Y29tcG9uZW50IG5hbWU9IkNvbXBpbGVyQ29uZmlndXJhdGlvbiI+CisgICAgPG9wdGlvbiBuYW1lPSJERUZBVUxUX0NPTVBJTEVSIiB2YWx1ZT0iSmF2YWMiIC8+CisgICAgPG9wdGlvbiBuYW1lPSJTWU5DSFJPTklaRV9PVVRQVVRfRElSRUNUT1JZIiB2YWx1ZT0iZmFsc2UiIC8+CisgICAgPG9wdGlvbiBuYW1lPSJERUZBVUxUX09VVFBVVF9QQVRIIiB2YWx1ZT0iJFBST0pFQ1RfRElSJC9jbGFzc2VzIiAvPgorICAgIDxvcHRpb24gbmFtZT0iT1VUUFVUX01PREUiIHZhbHVlPSJzaW5nbGUiIC8+CisgICAgPHJlc291cmNlRXh0ZW5zaW9ucz4KKyAgICAgIDxlbnRyeSBuYW1lPSIuK1wuKHByb3BlcnRpZXN8eG1sfGh0bWwpIiAvPgorICAgICAgPGVudHJ5IG5hbWU9Ii4rXC4oZ2lmfHBuZ3xqcGVnfGpwZykiIC8+CisgICAgPC9yZXNvdXJjZUV4dGVuc2lvbnM+CisgIDwvY29tcG9uZW50PgorICA8Y29tcG9uZW50IG5hbWU9IkphdmFjU2V0dGluZ3MiPgorICAgIDxvcHRpb24gbmFtZT0iREVCVUdHSU5HX0lORk8iIHZhbHVlPSJ0cnVlIiAvPgorICAgIDxvcHRpb24gbmFtZT0iR0VORVJBVEVfTk9fV0FSTklOR1MiIHZhbHVlPSJmYWxzZSIgLz4KKyAgICA8b3B0aW9uIG5hbWU9IkRFUFJFQ0FUSU9OIiB2YWx1ZT0idHJ1ZSIgLz4KKyAgICA8b3B0aW9uIG5hbWU9IkFERElUSU9OQUxfT1BUSU9OU19TVFJJTkciIHZhbHVlPSIiIC8+CisgICAgPG9wdGlvbiBuYW1lPSJNQVhJTVVNX0hFQVBfU0laRSIgdmFsdWU9IjEyOCIgLz4KKyAgPC9jb21wb25lbnQ+CisgIDxjb21wb25lbnQgbmFtZT0iSmlrZXNTZXR0aW5ncyI+CisgICAgPG9wdGlvbiBuYW1lPSJKSUtFU19QQVRIIiB2YWx1ZT0iIiAvPgorICAgIDxvcHRpb24gbmFtZT0iREVCVUdHSU5HX0lORk8iIHZhbHVlPSJ0cnVlIiAvPgorICAgIDxvcHRpb24gbmFtZT0iREVQUkVDQVRJT04iIHZhbHVlPSJ0cnVlIiAvPgorICAgIDxvcHRpb24gbmFtZT0iR0VORVJBVEVfTk9fV0FSTklOR1MiIHZhbHVlPSJmYWxzZSIgLz4KKyAgICA8b3B0aW9uIG5hbWU9IkdFTkVSQVRFX01BS0VfRklMRV9ERVBFTkRFTkNJRVMiIHZhbHVlPSJmYWxzZSIgLz4KKyAgICA8b3B0aW9uIG5hbWU9IkRPX0ZVTExfREVQRU5ERU5DRV9DSEVDSyIgdmFsdWU9ImZhbHNlIiAvPgorICAgIDxvcHRpb24gbmFtZT0iSVNfRU1BQ1NfRVJST1JTX01PREUiIHZhbHVlPSJ0cnVlIiAvPgorICAgIDxvcHRpb24gbmFtZT0iQURESVRJT05BTF9PUFRJT05TX1NUUklORyIgdmFsdWU9IiIgLz4KKyAgPC9jb21wb25lbnQ+CisgIDxjb21wb25lbnQgbmFtZT0iQW50Q29uZmlndXJhdGlvbiI+CisgICAgPG9wdGlvbiBuYW1lPSJJU19BVVRPU0NST0xMX1RPX1NPVVJDRSIgdmFsdWU9ImZhbHNlIiAvPgorICAgIDxvcHRpb24gbmFtZT0iRklMVEVSX1RBUkdFVFMiIHZhbHVlPSJmYWxzZSIgLz4KKyAgPC9jb21wb25lbnQ+CisgIDxjb21wb25lbnQgbmFtZT0iSmF2YWRvY0dlbmVyYXRpb25NYW5hZ2VyIj4KKyAgICA8b3B0aW9uIG5hbWU9Ik9VVFBVVF9ESVJFQ1RPUlkiIC8+CisgICAgPG9wdGlvbiBuYW1lPSJPUFRJT05fU0NPUEUiIHZhbHVlPSJwcm90ZWN0ZWQiIC8+CisgICAgPG9wdGlvbiBuYW1lPSJPUFRJT05fSElFUkFSQ0hZIiB2YWx1ZT0idHJ1ZSIgLz4KKyAgICA8b3B0aW9uIG5hbWU9Ik9QVElPTl9OQVZJR0FUT1IiIHZhbHVlPSJ0cnVlIiAvPgorICAgIDxvcHRpb24gbmFtZT0iT1BUSU9OX0lOREVYIiB2YWx1ZT0idHJ1ZSIgLz4KKyAgICA8b3B0aW9uIG5hbWU9Ik9QVElPTl9TRVBBUkFURV9JTkRFWCIgdmFsdWU9InRydWUiIC8+CisgICAgPG9wdGlvbiBuYW1lPSJPUFRJT05fRE9DVU1FTlRfVEFHX1VTRSIgdmFsdWU9ImZhbHNlIiAvPgorICAgIDxvcHRpb24gbmFtZT0iT1BUSU9OX0RPQ1VNRU5UX1RBR19BVVRIT1IiIHZhbHVlPSJmYWxzZSIgLz4KKyAgICA8b3B0aW9uIG5hbWU9Ik9QVElPTl9ET0NVTUVOVF9UQUdfVkVSU0lPTiIgdmFsdWU9ImZhbHNlIiAvPgorICAgIDxvcHRpb24gbmFtZT0iT1BUSU9OX0RPQ1VNRU5UX1RBR19ERVBSRUNBVEVEIiB2YWx1ZT0idHJ1ZSIgLz4KKyAgICA8b3B0aW9uIG5hbWU9Ik9QVElPTl9ERVBSRUNBVEVEX0xJU1QiIHZhbHVlPSJ0cnVlIiAvPgorICAgIDxvcHRpb24gbmFtZT0iT1RIRVJfT1BUSU9OUyIgdmFsdWU9IiIgLz4KKyAgICA8b3B0aW9uIG5hbWU9IkhFQVBfU0laRSIgLz4KKyAgICA8b3B0aW9uIG5hbWU9Ik9QRU5fSU5fQlJPV1NFUiIgdmFsdWU9InRydWUiIC8+CisgIDwvY29tcG9uZW50PgorICA8Y29tcG9uZW50IG5hbWU9IldlYk1hbmFnZXIiPgorICAgIDxvcHRpb24gZW5hYmxlZD0iZmFsc2UiIC8+CisgIDwvY29tcG9uZW50PgorICA8Y29tcG9uZW50IG5hbWU9IldlYlJvb3RDb250YWluZXIiIC8+CisgIDxjb21wb25lbnQgbmFtZT0iRWpiTWFuYWdlciIgZW5hYmxlZD0iZmFsc2UiIC8+CisgIDxjb21wb25lbnQgbmFtZT0iSlVuaXRQcm9qZWN0U2V0dGluZ3MiPgorICAgIDxvcHRpb24gbmFtZT0iVEVTVF9SVU5ORVIiIHZhbHVlPSJVSSIgLz4KKyAgPC9jb21wb25lbnQ+CisgIDxjb21wb25lbnQgbmFtZT0iRW50cnlQb2ludHNNYW5hZ2VyIj4KKyAgICA8ZW50cnlfcG9pbnRzIC8+CisgIDwvY29tcG9uZW50PgorICA8Y29tcG9uZW50IG5hbWU9IkVqYkFjdGlvbnNDb25maWd1cmF0aW9uIj4KKyAgICA8b3B0aW9uIG5hbWU9Ik5FV19NRVNTQUdFX0JFQU5fTEFTVF9QQUNLQUdFIiB2YWx1ZT0iIiAvPgorICAgIDxvcHRpb24gbmFtZT0iTkVXX0VOVElUWV9CRUFOX0xBU1RfUEFDS0FHRSIgdmFsdWU9IiIgLz4KKyAgICA8b3B0aW9uIG5hbWU9Ik5FV19TRVNTSU9OX0JFQU5fTEFTVF9QQUNLQUdFIiB2YWx1ZT0iIiAvPgorICA8L2NvbXBvbmVudD4KKyAgPGNvbXBvbmVudCBuYW1lPSJDb2RlU3R5bGVNYW5hZ2VyIj4KKyAgICA8b3B0aW9uIG5hbWU9IlVTRV9ERUZBVUxUX0NPREVfU1RZTEVfU0NIRU1FIiB2YWx1ZT0idHJ1ZSIgLz4KKyAgICA8b3B0aW9uIG5hbWU9IkNPREVfU1RZTEVfU0NIRU1FIiB2YWx1ZT0iIiAvPgorICA8L2NvbXBvbmVudD4KKyAgPGNvbXBvbmVudCBuYW1lPSJFeHBvcnRUb0hUTUxTZXR0aW5ncyI+CisgICAgPG9wdGlvbiBuYW1lPSJQUklOVF9MSU5FX05VTUJFUlMiIHZhbHVlPSJmYWxzZSIgLz4KKyAgICA8b3B0aW9uIG5hbWU9Ik9QRU5fSU5fQlJPV1NFUiIgdmFsdWU9ImZhbHNlIiAvPgorICAgIDxvcHRpb24gbmFtZT0iT1VUUFVUX0RJUkVDVE9SWSIgLz4KKyAgPC9jb21wb25lbnQ+Cis8L3Byb2plY3Q+CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9tb2R1bGVSb290TWFuYWdlci9jb252ZXJ0b3IzNC90ZXN0Mi9hZnRlci9wcmoyLmltbCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9tb2R1bGVSb290TWFuYWdlci9jb252ZXJ0b3IzNC90ZXN0Mi9hZnRlci9wcmoyLmltbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNzFlYmU0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL21vZHVsZVJvb3RNYW5hZ2VyL2NvbnZlcnRvcjM0L3Rlc3QyL2FmdGVyL3ByajIuaW1sCkBAIC0wLDAgKzEsMjAgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8bW9kdWxlIHZlcnNpb249IjQiIHJlbGF0aXZlUGF0aHM9InRydWUiPgorPGNvbXBvbmVudCBuYW1lPSJOZXdNb2R1bGVSb290TWFuYWdlciI+CisgIDxjb250ZW50IHVybD0iZmlsZTovLyRNT0RVTEVfRElSJCI+CisgICAgPHNvdXJjZUZvbGRlciBpc1Rlc3RTb3VyY2U9ImZhbHNlIiB1cmw9ImZpbGU6Ly8kTU9EVUxFX0RJUiQvc3JjIiAvPgorICA8L2NvbnRlbnQ+CisgIDxvcmRlckVudHJ5IHR5cGU9Im1vZHVsZS1saWJyYXJ5Ij4KKyAgICA8bGlicmFyeT4KKyAgICAgIDxDTEFTU0VTPgorICAgICAgICA8cm9vdCB1cmw9ImphcjovLyRNT0RVTEVfRElSJC9vcGVuYXBpLmphciEvIiAvPgorICAgICAgPC9DTEFTU0VTPgorICAgIDwvbGlicmFyeT4KKyAgPC9vcmRlckVudHJ5PgorICA8b3JkZXJFbnRyeSB0eXBlPSJqZGsiIGpka05hbWU9ImphdmEgdmVyc2lvbiAmcXVvdDsxLjQuMiZxdW90OyIgLz4KKyAgPG9yZGVyRW50cnkgdHlwZT0ic291cmNlRm9sZGVyIiAvPgorICA8b3V0cHV0IHVybD0iZmlsZTovLyRNT0RVTEVfRElSJC9jbGFzc2VzIiAvPgorICA8b3V0cHV0LXRlc3QgdXJsPSJmaWxlOi8vJE1PRFVMRV9ESVIkL2NsYXNzZXMiIC8+CisgIDxleGNsdWRlLW91dHB1dCAvPgorPC9jb21wb25lbnQ+Cis8L21vZHVsZT4KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9tb2R1bGVSb290TWFuYWdlci9jb252ZXJ0b3IzNC90ZXN0Mi9hZnRlci9wcmoyLmlwciBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9tb2R1bGVSb290TWFuYWdlci9jb252ZXJ0b3IzNC90ZXN0Mi9hZnRlci9wcmoyLmlwcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45N2Q1NzJiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL21vZHVsZVJvb3RNYW5hZ2VyL2NvbnZlcnRvcjM0L3Rlc3QyL2FmdGVyL3ByajIuaXByCkBAIC0wLDAgKzEsOSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxwcm9qZWN0IHZlcnNpb249IjQiIHJlbGF0aXZlUGF0aHM9InRydWUiPgorICA8Y29tcG9uZW50IG5hbWU9IlByb2plY3RNb2R1bGVNYW5hZ2VyIj4KKyAgICA8bW9kdWxlcz4KKyAgICAgIDxtb2R1bGUgZmlsZXBhdGg9IiRQUk9KRUNUX0RJUiQvcHJqMi5pbWwiIGZpbGV1cmw9ImZpbGU6Ly8kUFJPSkVDVF9ESVIkL3ByajIuaW1sIi8+CisgICAgPC9tb2R1bGVzPgorICA8L2NvbXBvbmVudD4KKzwvcHJvamVjdD4KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL21vZHVsZVJvb3RNYW5hZ2VyL2NvbnZlcnRvcjM0L3Rlc3QyL2JlZm9yZS9wcmoyLmlwciBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9tb2R1bGVSb290TWFuYWdlci9jb252ZXJ0b3IzNC90ZXN0Mi9iZWZvcmUvcHJqMi5pcHIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2Q5MGYxZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9tb2R1bGVSb290TWFuYWdlci9jb252ZXJ0b3IzNC90ZXN0Mi9iZWZvcmUvcHJqMi5pcHIKQEAgLTAsMCArMSwxMDkgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8cHJvamVjdCB2ZXJzaW9uPSIzIiByZWxhdGl2ZVBhdGhzPSJmYWxzZSI+CisgIDxjb21wb25lbnQgbmFtZT0iUHJvamVjdFJvb3RNYW5hZ2VyIiB2ZXJzaW9uPSIyIj4KKyAgICA8amRrIG5hbWU9ImphdmEgdmVyc2lvbiAmcXVvdDsxLjQuMiZxdW90OyIgLz4KKyAgICA8cHJvamVjdFBhdGg+CisgICAgICA8cm9vdCB0eXBlPSJjb21wb3NpdGUiPgorICAgICAgICA8cm9vdCB0eXBlPSJzaW1wbGUiIHVybD0iZmlsZTovLyRQUk9KRUNUX0RJUiQiIC8+CisgICAgICA8L3Jvb3Q+CisgICAgPC9wcm9qZWN0UGF0aD4KKyAgICA8c291cmNlUGF0aD4KKyAgICAgIDxyb290IHR5cGU9ImNvbXBvc2l0ZSI+CisgICAgICAgIDxyb290IHR5cGU9InNpbXBsZSIgdXJsPSJmaWxlOi8vJFBST0pFQ1RfRElSJC9zcmMiIC8+CisgICAgICAgIDxyb290IHR5cGU9ImpkayIgcm9vdFR5cGU9InNvdXJjZVBhdGgiIG5hbWU9ImphdmEgdmVyc2lvbiAmcXVvdDsxLjQuMiZxdW90OyIgLz4KKyAgICAgIDwvcm9vdD4KKyAgICA8L3NvdXJjZVBhdGg+CisgICAgPGNsYXNzUGF0aD4KKyAgICAgIDxyb290IHR5cGU9ImNvbXBvc2l0ZSI+CisgICAgICAgIDxyb290IHR5cGU9InNpbXBsZSIgdXJsPSJqYXI6Ly8kUFJPSkVDVF9ESVIkL29wZW5hcGkuamFyIS8iIC8+CisgICAgICAgIDxyb290IHR5cGU9ImpkayIgcm9vdFR5cGU9ImNsYXNzUGF0aCIgbmFtZT0iamF2YSB2ZXJzaW9uICZxdW90OzEuNC4yJnF1b3Q7IiAvPgorICAgICAgICA8cm9vdCB0eXBlPSJvdXRwdXQiIC8+CisgICAgICA8L3Jvb3Q+CisgICAgPC9jbGFzc1BhdGg+CisgICAgPGV4Y2x1ZGVQYXRoPgorICAgICAgPHJvb3QgdHlwZT0iY29tcG9zaXRlIj4KKyAgICAgICAgPHJvb3QgdHlwZT0iZXhjbHVkZWRPdXRwdXQiIC8+CisgICAgICA8L3Jvb3Q+CisgICAgPC9leGNsdWRlUGF0aD4KKyAgICA8amF2YWRvY1BhdGg+CisgICAgICA8cm9vdCB0eXBlPSJjb21wb3NpdGUiPgorICAgICAgICA8cm9vdCB0eXBlPSJqZGsiIHJvb3RUeXBlPSJqYXZhZG9jUGF0aCIgbmFtZT0iamF2YSB2ZXJzaW9uICZxdW90OzEuNC4yJnF1b3Q7IiAvPgorICAgICAgPC9yb290PgorICAgIDwvamF2YWRvY1BhdGg+CisgICAgPGFzc2VydF9rZXl3b3JkIGVuYWJsZWQ9Im5vIiAvPgorICAgIDxleGNsdWRlX291dHB1dCBlbmFibGVkPSJ5ZXMiIC8+CisgIDwvY29tcG9uZW50PgorICA8Y29tcG9uZW50IG5hbWU9IkNvbXBpbGVyQ29uZmlndXJhdGlvbiI+CisgICAgPG9wdGlvbiBuYW1lPSJERUZBVUxUX0NPTVBJTEVSIiB2YWx1ZT0iSmF2YWMiIC8+CisgICAgPG9wdGlvbiBuYW1lPSJTWU5DSFJPTklaRV9PVVRQVVRfRElSRUNUT1JZIiB2YWx1ZT0iZmFsc2UiIC8+CisgICAgPG9wdGlvbiBuYW1lPSJERUZBVUxUX09VVFBVVF9QQVRIIiB2YWx1ZT0iJFBST0pFQ1RfRElSJC9jbGFzc2VzIiAvPgorICAgIDxvcHRpb24gbmFtZT0iT1VUUFVUX01PREUiIHZhbHVlPSJzaW5nbGUiIC8+CisgICAgPHJlc291cmNlRXh0ZW5zaW9ucz4KKyAgICAgIDxlbnRyeSBuYW1lPSIuK1wuKHByb3BlcnRpZXN8eG1sfGh0bWwpIiAvPgorICAgICAgPGVudHJ5IG5hbWU9Ii4rXC4oZ2lmfHBuZ3xqcGVnfGpwZykiIC8+CisgICAgPC9yZXNvdXJjZUV4dGVuc2lvbnM+CisgIDwvY29tcG9uZW50PgorICA8Y29tcG9uZW50IG5hbWU9IkphdmFjU2V0dGluZ3MiPgorICAgIDxvcHRpb24gbmFtZT0iREVCVUdHSU5HX0lORk8iIHZhbHVlPSJ0cnVlIiAvPgorICAgIDxvcHRpb24gbmFtZT0iR0VORVJBVEVfTk9fV0FSTklOR1MiIHZhbHVlPSJmYWxzZSIgLz4KKyAgICA8b3B0aW9uIG5hbWU9IkRFUFJFQ0FUSU9OIiB2YWx1ZT0idHJ1ZSIgLz4KKyAgICA8b3B0aW9uIG5hbWU9IkFERElUSU9OQUxfT1BUSU9OU19TVFJJTkciIHZhbHVlPSIiIC8+CisgICAgPG9wdGlvbiBuYW1lPSJNQVhJTVVNX0hFQVBfU0laRSIgdmFsdWU9IjEyOCIgLz4KKyAgPC9jb21wb25lbnQ+CisgIDxjb21wb25lbnQgbmFtZT0iSmlrZXNTZXR0aW5ncyI+CisgICAgPG9wdGlvbiBuYW1lPSJKSUtFU19QQVRIIiB2YWx1ZT0iIiAvPgorICAgIDxvcHRpb24gbmFtZT0iREVCVUdHSU5HX0lORk8iIHZhbHVlPSJ0cnVlIiAvPgorICAgIDxvcHRpb24gbmFtZT0iREVQUkVDQVRJT04iIHZhbHVlPSJ0cnVlIiAvPgorICAgIDxvcHRpb24gbmFtZT0iR0VORVJBVEVfTk9fV0FSTklOR1MiIHZhbHVlPSJmYWxzZSIgLz4KKyAgICA8b3B0aW9uIG5hbWU9IkdFTkVSQVRFX01BS0VfRklMRV9ERVBFTkRFTkNJRVMiIHZhbHVlPSJmYWxzZSIgLz4KKyAgICA8b3B0aW9uIG5hbWU9IkRPX0ZVTExfREVQRU5ERU5DRV9DSEVDSyIgdmFsdWU9ImZhbHNlIiAvPgorICAgIDxvcHRpb24gbmFtZT0iSVNfRU1BQ1NfRVJST1JTX01PREUiIHZhbHVlPSJ0cnVlIiAvPgorICAgIDxvcHRpb24gbmFtZT0iQURESVRJT05BTF9PUFRJT05TX1NUUklORyIgdmFsdWU9IiIgLz4KKyAgPC9jb21wb25lbnQ+CisgIDxjb21wb25lbnQgbmFtZT0iQW50Q29uZmlndXJhdGlvbiI+CisgICAgPG9wdGlvbiBuYW1lPSJJU19BVVRPU0NST0xMX1RPX1NPVVJDRSIgdmFsdWU9ImZhbHNlIiAvPgorICAgIDxvcHRpb24gbmFtZT0iRklMVEVSX1RBUkdFVFMiIHZhbHVlPSJmYWxzZSIgLz4KKyAgPC9jb21wb25lbnQ+CisgIDxjb21wb25lbnQgbmFtZT0iSmF2YWRvY0dlbmVyYXRpb25NYW5hZ2VyIj4KKyAgICA8b3B0aW9uIG5hbWU9Ik9VVFBVVF9ESVJFQ1RPUlkiIC8+CisgICAgPG9wdGlvbiBuYW1lPSJPUFRJT05fU0NPUEUiIHZhbHVlPSJwcm90ZWN0ZWQiIC8+CisgICAgPG9wdGlvbiBuYW1lPSJPUFRJT05fSElFUkFSQ0hZIiB2YWx1ZT0idHJ1ZSIgLz4KKyAgICA8b3B0aW9uIG5hbWU9Ik9QVElPTl9OQVZJR0FUT1IiIHZhbHVlPSJ0cnVlIiAvPgorICAgIDxvcHRpb24gbmFtZT0iT1BUSU9OX0lOREVYIiB2YWx1ZT0idHJ1ZSIgLz4KKyAgICA8b3B0aW9uIG5hbWU9Ik9QVElPTl9TRVBBUkFURV9JTkRFWCIgdmFsdWU9InRydWUiIC8+CisgICAgPG9wdGlvbiBuYW1lPSJPUFRJT05fRE9DVU1FTlRfVEFHX1VTRSIgdmFsdWU9ImZhbHNlIiAvPgorICAgIDxvcHRpb24gbmFtZT0iT1BUSU9OX0RPQ1VNRU5UX1RBR19BVVRIT1IiIHZhbHVlPSJmYWxzZSIgLz4KKyAgICA8b3B0aW9uIG5hbWU9Ik9QVElPTl9ET0NVTUVOVF9UQUdfVkVSU0lPTiIgdmFsdWU9ImZhbHNlIiAvPgorICAgIDxvcHRpb24gbmFtZT0iT1BUSU9OX0RPQ1VNRU5UX1RBR19ERVBSRUNBVEVEIiB2YWx1ZT0idHJ1ZSIgLz4KKyAgICA8b3B0aW9uIG5hbWU9Ik9QVElPTl9ERVBSRUNBVEVEX0xJU1QiIHZhbHVlPSJ0cnVlIiAvPgorICAgIDxvcHRpb24gbmFtZT0iT1RIRVJfT1BUSU9OUyIgdmFsdWU9IiIgLz4KKyAgICA8b3B0aW9uIG5hbWU9IkhFQVBfU0laRSIgLz4KKyAgICA8b3B0aW9uIG5hbWU9Ik9QRU5fSU5fQlJPV1NFUiIgdmFsdWU9InRydWUiIC8+CisgIDwvY29tcG9uZW50PgorICA8Y29tcG9uZW50IG5hbWU9IldlYk1hbmFnZXIiPgorICAgIDxvcHRpb24gZW5hYmxlZD0iZmFsc2UiIC8+CisgIDwvY29tcG9uZW50PgorICA8Y29tcG9uZW50IG5hbWU9IldlYlJvb3RDb250YWluZXIiIC8+CisgIDxjb21wb25lbnQgbmFtZT0iRWpiTWFuYWdlciIgZW5hYmxlZD0iZmFsc2UiIC8+CisgIDxjb21wb25lbnQgbmFtZT0iSlVuaXRQcm9qZWN0U2V0dGluZ3MiPgorICAgIDxvcHRpb24gbmFtZT0iVEVTVF9SVU5ORVIiIHZhbHVlPSJVSSIgLz4KKyAgPC9jb21wb25lbnQ+CisgIDxjb21wb25lbnQgbmFtZT0iRW50cnlQb2ludHNNYW5hZ2VyIj4KKyAgICA8ZW50cnlfcG9pbnRzIC8+CisgIDwvY29tcG9uZW50PgorICA8Y29tcG9uZW50IG5hbWU9IkVqYkFjdGlvbnNDb25maWd1cmF0aW9uIj4KKyAgICA8b3B0aW9uIG5hbWU9Ik5FV19NRVNTQUdFX0JFQU5fTEFTVF9QQUNLQUdFIiB2YWx1ZT0iIiAvPgorICAgIDxvcHRpb24gbmFtZT0iTkVXX0VOVElUWV9CRUFOX0xBU1RfUEFDS0FHRSIgdmFsdWU9IiIgLz4KKyAgICA8b3B0aW9uIG5hbWU9Ik5FV19TRVNTSU9OX0JFQU5fTEFTVF9QQUNLQUdFIiB2YWx1ZT0iIiAvPgorICA8L2NvbXBvbmVudD4KKyAgPGNvbXBvbmVudCBuYW1lPSJDb2RlU3R5bGVNYW5hZ2VyIj4KKyAgICA8b3B0aW9uIG5hbWU9IlVTRV9ERUZBVUxUX0NPREVfU1RZTEVfU0NIRU1FIiB2YWx1ZT0idHJ1ZSIgLz4KKyAgICA8b3B0aW9uIG5hbWU9IkNPREVfU1RZTEVfU0NIRU1FIiB2YWx1ZT0iIiAvPgorICA8L2NvbXBvbmVudD4KKyAgPGNvbXBvbmVudCBuYW1lPSJFeHBvcnRUb0hUTUxTZXR0aW5ncyI+CisgICAgPG9wdGlvbiBuYW1lPSJQUklOVF9MSU5FX05VTUJFUlMiIHZhbHVlPSJmYWxzZSIgLz4KKyAgICA8b3B0aW9uIG5hbWU9Ik9QRU5fSU5fQlJPV1NFUiIgdmFsdWU9ImZhbHNlIiAvPgorICAgIDxvcHRpb24gbmFtZT0iT1VUUFVUX0RJUkVDVE9SWSIgLz4KKyAgPC9jb21wb25lbnQ+Cis8L3Byb2plY3Q+CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9tb2R1bGVSb290TWFuYWdlci9jb252ZXJ0b3IzNC90ZXN0My9hZnRlci9wcmozLmltbCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9tb2R1bGVSb290TWFuYWdlci9jb252ZXJ0b3IzNC90ZXN0My9hZnRlci9wcmozLmltbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNzU4NmNiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL21vZHVsZVJvb3RNYW5hZ2VyL2NvbnZlcnRvcjM0L3Rlc3QzL2FmdGVyL3ByajMuaW1sCkBAIC0wLDAgKzEsMTkgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8bW9kdWxlIHZlcnNpb249IjQiIHJlbGF0aXZlUGF0aHM9InRydWUiPgorPGNvbXBvbmVudCBuYW1lPSJOZXdNb2R1bGVSb290TWFuYWdlciI+CisgIDxjb250ZW50IHVybD0iZmlsZTovLyRNT0RVTEVfRElSJC9wMSI+CisgICAgPHNvdXJjZUZvbGRlciBpc1Rlc3RTb3VyY2U9ImZhbHNlIiB1cmw9ImZpbGU6Ly8kTU9EVUxFX0RJUiQvcDEvc3JjIiAvPgorICAgIDxleGNsdWRlRm9sZGVyIHVybD0iZmlsZTovLyRNT0RVTEVfRElSJC9wMS9leGNsdWRlZDEiIC8+CisgIDwvY29udGVudD4KKyAgPGNvbnRlbnQgdXJsPSJmaWxlOi8vJE1PRFVMRV9ESVIkL3AyIj4KKyAgICA8c291cmNlRm9sZGVyIGlzVGVzdFNvdXJjZT0iZmFsc2UiIHVybD0iZmlsZTovLyRNT0RVTEVfRElSJC9wMi9zcmMiIC8+CisgICAgPGV4Y2x1ZGVGb2xkZXIgdXJsPSJmaWxlOi8vJE1PRFVMRV9ESVIkL3AyL3NyYy9leGNsdWRlZDIiIC8+CisgIDwvY29udGVudD4KKyAgPG9yZGVyRW50cnkgdHlwZT0ic291cmNlRm9sZGVyIiAvPgorICA8b3JkZXJFbnRyeSB0eXBlPSJqZGsiIGpka05hbWU9ImphdmEgdmVyc2lvbiAmcXVvdDsxLjQuMiZxdW90OyIgLz4KKyAgPG9yZGVyRW50cnkgdHlwZT0ibGlicmFyeSIgbmFtZT0iWFlaIiBsZXZlbD0iYXBwbGljYXRpb24iIC8+CisgIDxvdXRwdXQgdXJsPSJmaWxlOi8vJE1PRFVMRV9ESVIkL2NsYXNzZXMiIC8+CisgIDxvdXRwdXQtdGVzdCB1cmw9ImZpbGU6Ly8kTU9EVUxFX0RJUiQvY2xhc3NlcyIgLz4KKyAgPGV4Y2x1ZGUtb3V0cHV0IC8+Cis8L2NvbXBvbmVudD4KKzwvbW9kdWxlPgpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL21vZHVsZVJvb3RNYW5hZ2VyL2NvbnZlcnRvcjM0L3Rlc3QzL2FmdGVyL3ByajMuaXByIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL21vZHVsZVJvb3RNYW5hZ2VyL2NvbnZlcnRvcjM0L3Rlc3QzL2FmdGVyL3ByajMuaXByCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI2NjZhZjQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvbW9kdWxlUm9vdE1hbmFnZXIvY29udmVydG9yMzQvdGVzdDMvYWZ0ZXIvcHJqMy5pcHIKQEAgLTAsMCArMSw4IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPHByb2plY3QgdmVyc2lvbj0iNCIgcmVsYXRpdmVQYXRocz0idHJ1ZSI+CisgIDxjb21wb25lbnQgbmFtZT0iUHJvamVjdE1vZHVsZU1hbmFnZXIiPgorICAgIDxtb2R1bGVzPgorICAgICAgPG1vZHVsZSBmaWxlcGF0aD0iJFBST0pFQ1RfRElSJC9wcmozLmltbCIgZmlsZXVybD0iZmlsZTovLyRQUk9KRUNUX0RJUiQvcHJqMy5pbWwiIC8+CisgICAgPC9tb2R1bGVzPgorICA8L2NvbXBvbmVudD4KKzwvcHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvbW9kdWxlUm9vdE1hbmFnZXIvY29udmVydG9yMzQvdGVzdDMvYmVmb3JlL3ByajMuaXByIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL21vZHVsZVJvb3RNYW5hZ2VyL2NvbnZlcnRvcjM0L3Rlc3QzL2JlZm9yZS9wcmozLmlwcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZjRmODAwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL21vZHVsZVJvb3RNYW5hZ2VyL2NvbnZlcnRvcjM0L3Rlc3QzL2JlZm9yZS9wcmozLmlwcgpAQCAtMCwwICsxLDExNSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxwcm9qZWN0IHZlcnNpb249IjMiIHJlbGF0aXZlUGF0aHM9InRydWUiPgorICA8Y29tcG9uZW50IG5hbWU9IlByb2plY3RSb290TWFuYWdlciIgdmVyc2lvbj0iMiI+CisgICAgPGpkayBuYW1lPSJqYXZhIHZlcnNpb24gJnF1b3Q7MS40LjImcXVvdDsiIC8+CisgICAgPHByb2plY3RQYXRoPgorICAgICAgPHJvb3QgdHlwZT0iY29tcG9zaXRlIj4KKyAgICAgICAgPHJvb3QgdHlwZT0ic2ltcGxlIiB1cmw9ImZpbGU6Ly8kUFJPSkVDVF9ESVIkL3AxIiAvPgorICAgICAgICA8cm9vdCB0eXBlPSJzaW1wbGUiIHVybD0iZmlsZTovLyRQUk9KRUNUX0RJUiQvcDIiIC8+CisgICAgICA8L3Jvb3Q+CisgICAgPC9wcm9qZWN0UGF0aD4KKyAgICA8c291cmNlUGF0aD4KKyAgICAgIDxyb290IHR5cGU9ImNvbXBvc2l0ZSI+CisgICAgICAgIDxyb290IHR5cGU9InNpbXBsZSIgdXJsPSJmaWxlOi8vJFBST0pFQ1RfRElSJC9wMS9zcmMiIC8+CisgICAgICAgIDxyb290IHR5cGU9ImpkayIgcm9vdFR5cGU9InNvdXJjZVBhdGgiIG5hbWU9ImphdmEgdmVyc2lvbiAmcXVvdDsxLjQuMiZxdW90OyIgLz4KKyAgICAgICAgPHJvb3QgdHlwZT0ic2ltcGxlIiB1cmw9ImZpbGU6Ly8kUFJPSkVDVF9ESVIkL3AyL3NyYyIgLz4KKyAgICAgICAgPHJvb3QgdHlwZT0ibGlicmFyeSIgcm9vdFR5cGU9InNvdXJjZVBhdGgiIG5hbWU9IlhZWiIgLz4KKyAgICAgIDwvcm9vdD4KKyAgICA8L3NvdXJjZVBhdGg+CisgICAgPGNsYXNzUGF0aD4KKyAgICAgIDxyb290IHR5cGU9ImNvbXBvc2l0ZSI+CisgICAgICAgIDxyb290IHR5cGU9Im91dHB1dCIgLz4KKyAgICAgICAgPHJvb3QgdHlwZT0iamRrIiByb290VHlwZT0iY2xhc3NQYXRoIiBuYW1lPSJqYXZhIHZlcnNpb24gJnF1b3Q7MS40LjImcXVvdDsiIC8+CisgICAgICAgIDxyb290IHR5cGU9ImxpYnJhcnkiIHJvb3RUeXBlPSJjbGFzc1BhdGgiIG5hbWU9IlhZWiIgLz4KKyAgICAgIDwvcm9vdD4KKyAgICA8L2NsYXNzUGF0aD4KKyAgICA8ZXhjbHVkZVBhdGg+CisgICAgICA8cm9vdCB0eXBlPSJjb21wb3NpdGUiPgorICAgICAgICA8cm9vdCB0eXBlPSJleGNsdWRlZE91dHB1dCIgLz4KKyAgICAgICAgPHJvb3QgdHlwZT0ic2ltcGxlIiB1cmw9ImZpbGU6Ly8kUFJPSkVDVF9ESVIkL3AyL3NyYy9leGNsdWRlZDIiIC8+CisgICAgICAgIDxyb290IHR5cGU9InNpbXBsZSIgdXJsPSJmaWxlOi8vJFBST0pFQ1RfRElSJC9wMS9leGNsdWRlZDEiIC8+CisgICAgICAgIDxyb290IHR5cGU9InNpbXBsZSIgdXJsPSJmaWxlOi8vJFBST0pFQ1RfRElSJC9leGNsdWRlZFRvcCIgLz4KKyAgICAgIDwvcm9vdD4KKyAgICA8L2V4Y2x1ZGVQYXRoPgorICAgIDxqYXZhZG9jUGF0aD4KKyAgICAgIDxyb290IHR5cGU9ImNvbXBvc2l0ZSI+CisgICAgICAgIDxyb290IHR5cGU9ImpkayIgcm9vdFR5cGU9ImphdmFkb2NQYXRoIiBuYW1lPSJqYXZhIHZlcnNpb24gJnF1b3Q7MS40LjImcXVvdDsiIC8+CisgICAgICA8L3Jvb3Q+CisgICAgPC9qYXZhZG9jUGF0aD4KKyAgICA8YXNzZXJ0X2tleXdvcmQgZW5hYmxlZD0ibm8iIC8+CisgICAgPGV4Y2x1ZGVfb3V0cHV0IGVuYWJsZWQ9InllcyIgLz4KKyAgPC9jb21wb25lbnQ+CisgIDxjb21wb25lbnQgbmFtZT0iQ29tcGlsZXJDb25maWd1cmF0aW9uIj4KKyAgICA8b3B0aW9uIG5hbWU9IkRFRkFVTFRfQ09NUElMRVIiIHZhbHVlPSJKYXZhYyIgLz4KKyAgICA8b3B0aW9uIG5hbWU9IlNZTkNIUk9OSVpFX09VVFBVVF9ESVJFQ1RPUlkiIHZhbHVlPSJmYWxzZSIgLz4KKyAgICA8b3B0aW9uIG5hbWU9IkRFRkFVTFRfT1VUUFVUX1BBVEgiIHZhbHVlPSIkUFJPSkVDVF9ESVIkL2NsYXNzZXMiIC8+CisgICAgPG9wdGlvbiBuYW1lPSJPVVRQVVRfTU9ERSIgdmFsdWU9InNpbmdsZSIgLz4KKyAgICA8cmVzb3VyY2VFeHRlbnNpb25zPgorICAgICAgPGVudHJ5IG5hbWU9Ii4rXC4ocHJvcGVydGllc3x4bWx8aHRtbCkiIC8+CisgICAgICA8ZW50cnkgbmFtZT0iLitcLihnaWZ8cG5nfGpwZWd8anBnKSIgLz4KKyAgICA8L3Jlc291cmNlRXh0ZW5zaW9ucz4KKyAgPC9jb21wb25lbnQ+CisgIDxjb21wb25lbnQgbmFtZT0iSmF2YWNTZXR0aW5ncyI+CisgICAgPG9wdGlvbiBuYW1lPSJERUJVR0dJTkdfSU5GTyIgdmFsdWU9InRydWUiIC8+CisgICAgPG9wdGlvbiBuYW1lPSJHRU5FUkFURV9OT19XQVJOSU5HUyIgdmFsdWU9ImZhbHNlIiAvPgorICAgIDxvcHRpb24gbmFtZT0iREVQUkVDQVRJT04iIHZhbHVlPSJ0cnVlIiAvPgorICAgIDxvcHRpb24gbmFtZT0iQURESVRJT05BTF9PUFRJT05TX1NUUklORyIgdmFsdWU9IiIgLz4KKyAgICA8b3B0aW9uIG5hbWU9Ik1BWElNVU1fSEVBUF9TSVpFIiB2YWx1ZT0iMTI4IiAvPgorICA8L2NvbXBvbmVudD4KKyAgPGNvbXBvbmVudCBuYW1lPSJKaWtlc1NldHRpbmdzIj4KKyAgICA8b3B0aW9uIG5hbWU9IkpJS0VTX1BBVEgiIHZhbHVlPSIiIC8+CisgICAgPG9wdGlvbiBuYW1lPSJERUJVR0dJTkdfSU5GTyIgdmFsdWU9InRydWUiIC8+CisgICAgPG9wdGlvbiBuYW1lPSJERVBSRUNBVElPTiIgdmFsdWU9InRydWUiIC8+CisgICAgPG9wdGlvbiBuYW1lPSJHRU5FUkFURV9OT19XQVJOSU5HUyIgdmFsdWU9ImZhbHNlIiAvPgorICAgIDxvcHRpb24gbmFtZT0iR0VORVJBVEVfTUFLRV9GSUxFX0RFUEVOREVOQ0lFUyIgdmFsdWU9ImZhbHNlIiAvPgorICAgIDxvcHRpb24gbmFtZT0iRE9fRlVMTF9ERVBFTkRFTkNFX0NIRUNLIiB2YWx1ZT0iZmFsc2UiIC8+CisgICAgPG9wdGlvbiBuYW1lPSJJU19FTUFDU19FUlJPUlNfTU9ERSIgdmFsdWU9InRydWUiIC8+CisgICAgPG9wdGlvbiBuYW1lPSJBRERJVElPTkFMX09QVElPTlNfU1RSSU5HIiB2YWx1ZT0iIiAvPgorICA8L2NvbXBvbmVudD4KKyAgPGNvbXBvbmVudCBuYW1lPSJBbnRDb25maWd1cmF0aW9uIj4KKyAgICA8b3B0aW9uIG5hbWU9IklTX0FVVE9TQ1JPTExfVE9fU09VUkNFIiB2YWx1ZT0iZmFsc2UiIC8+CisgICAgPG9wdGlvbiBuYW1lPSJGSUxURVJfVEFSR0VUUyIgdmFsdWU9ImZhbHNlIiAvPgorICA8L2NvbXBvbmVudD4KKyAgPGNvbXBvbmVudCBuYW1lPSJKYXZhZG9jR2VuZXJhdGlvbk1hbmFnZXIiPgorICAgIDxvcHRpb24gbmFtZT0iT1VUUFVUX0RJUkVDVE9SWSIgLz4KKyAgICA8b3B0aW9uIG5hbWU9Ik9QVElPTl9TQ09QRSIgdmFsdWU9InByb3RlY3RlZCIgLz4KKyAgICA8b3B0aW9uIG5hbWU9Ik9QVElPTl9ISUVSQVJDSFkiIHZhbHVlPSJ0cnVlIiAvPgorICAgIDxvcHRpb24gbmFtZT0iT1BUSU9OX05BVklHQVRPUiIgdmFsdWU9InRydWUiIC8+CisgICAgPG9wdGlvbiBuYW1lPSJPUFRJT05fSU5ERVgiIHZhbHVlPSJ0cnVlIiAvPgorICAgIDxvcHRpb24gbmFtZT0iT1BUSU9OX1NFUEFSQVRFX0lOREVYIiB2YWx1ZT0idHJ1ZSIgLz4KKyAgICA8b3B0aW9uIG5hbWU9Ik9QVElPTl9ET0NVTUVOVF9UQUdfVVNFIiB2YWx1ZT0iZmFsc2UiIC8+CisgICAgPG9wdGlvbiBuYW1lPSJPUFRJT05fRE9DVU1FTlRfVEFHX0FVVEhPUiIgdmFsdWU9ImZhbHNlIiAvPgorICAgIDxvcHRpb24gbmFtZT0iT1BUSU9OX0RPQ1VNRU5UX1RBR19WRVJTSU9OIiB2YWx1ZT0iZmFsc2UiIC8+CisgICAgPG9wdGlvbiBuYW1lPSJPUFRJT05fRE9DVU1FTlRfVEFHX0RFUFJFQ0FURUQiIHZhbHVlPSJ0cnVlIiAvPgorICAgIDxvcHRpb24gbmFtZT0iT1BUSU9OX0RFUFJFQ0FURURfTElTVCIgdmFsdWU9InRydWUiIC8+CisgICAgPG9wdGlvbiBuYW1lPSJPVEhFUl9PUFRJT05TIiB2YWx1ZT0iIiAvPgorICAgIDxvcHRpb24gbmFtZT0iSEVBUF9TSVpFIiAvPgorICAgIDxvcHRpb24gbmFtZT0iT1BFTl9JTl9CUk9XU0VSIiB2YWx1ZT0idHJ1ZSIgLz4KKyAgPC9jb21wb25lbnQ+CisgIDxjb21wb25lbnQgbmFtZT0iV2ViTWFuYWdlciI+CisgICAgPG9wdGlvbiBlbmFibGVkPSJmYWxzZSIgLz4KKyAgPC9jb21wb25lbnQ+CisgIDxjb21wb25lbnQgbmFtZT0iV2ViUm9vdENvbnRhaW5lciIgLz4KKyAgPGNvbXBvbmVudCBuYW1lPSJFamJNYW5hZ2VyIiBlbmFibGVkPSJmYWxzZSIgLz4KKyAgPGNvbXBvbmVudCBuYW1lPSJKVW5pdFByb2plY3RTZXR0aW5ncyI+CisgICAgPG9wdGlvbiBuYW1lPSJURVNUX1JVTk5FUiIgdmFsdWU9IlVJIiAvPgorICA8L2NvbXBvbmVudD4KKyAgPGNvbXBvbmVudCBuYW1lPSJFbnRyeVBvaW50c01hbmFnZXIiPgorICAgIDxlbnRyeV9wb2ludHMgLz4KKyAgPC9jb21wb25lbnQ+CisgIDxjb21wb25lbnQgbmFtZT0iRWpiQWN0aW9uc0NvbmZpZ3VyYXRpb24iPgorICAgIDxvcHRpb24gbmFtZT0iTkVXX01FU1NBR0VfQkVBTl9MQVNUX1BBQ0tBR0UiIHZhbHVlPSIiIC8+CisgICAgPG9wdGlvbiBuYW1lPSJORVdfRU5USVRZX0JFQU5fTEFTVF9QQUNLQUdFIiB2YWx1ZT0iIiAvPgorICAgIDxvcHRpb24gbmFtZT0iTkVXX1NFU1NJT05fQkVBTl9MQVNUX1BBQ0tBR0UiIHZhbHVlPSIiIC8+CisgIDwvY29tcG9uZW50PgorICA8Y29tcG9uZW50IG5hbWU9IkNvZGVTdHlsZU1hbmFnZXIiPgorICAgIDxvcHRpb24gbmFtZT0iVVNFX0RFRkFVTFRfQ09ERV9TVFlMRV9TQ0hFTUUiIHZhbHVlPSJ0cnVlIiAvPgorICAgIDxvcHRpb24gbmFtZT0iQ09ERV9TVFlMRV9TQ0hFTUUiIHZhbHVlPSIiIC8+CisgIDwvY29tcG9uZW50PgorICA8Y29tcG9uZW50IG5hbWU9IkV4cG9ydFRvSFRNTFNldHRpbmdzIj4KKyAgICA8b3B0aW9uIG5hbWU9IlBSSU5UX0xJTkVfTlVNQkVSUyIgdmFsdWU9ImZhbHNlIiAvPgorICAgIDxvcHRpb24gbmFtZT0iT1BFTl9JTl9CUk9XU0VSIiB2YWx1ZT0iZmFsc2UiIC8+CisgICAgPG9wdGlvbiBuYW1lPSJPVVRQVVRfRElSRUNUT1JZIiAvPgorICA8L2NvbXBvbmVudD4KKzwvcHJvamVjdD4KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL21vZHVsZVJvb3RNYW5hZ2VyL2NvbnZlcnRvcjM0L3Rlc3Q0L2FmdGVyL3ByajQuaW1sIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL21vZHVsZVJvb3RNYW5hZ2VyL2NvbnZlcnRvcjM0L3Rlc3Q0L2FmdGVyL3ByajQuaW1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU4MzEzZjgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvbW9kdWxlUm9vdE1hbmFnZXIvY29udmVydG9yMzQvdGVzdDQvYWZ0ZXIvcHJqNC5pbWwKQEAgLTAsMCArMSwxMSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxtb2R1bGUgdmVyc2lvbj0iNCIgcmVsYXRpdmVQYXRocz0idHJ1ZSI+CisgIDxjb21wb25lbnQgbmFtZT0iTmV3TW9kdWxlUm9vdE1hbmFnZXIiPgorICAgIDxjb250ZW50IHVybD0iZmlsZTovLyRNT0RVTEVfRElSJCI+CisgICAgICA8c291cmNlRm9sZGVyIGlzVGVzdFNvdXJjZT0iZmFsc2UiIHVybD0iZmlsZTovLyRNT0RVTEVfRElSJC9zcmMiIC8+CisgICAgPC9jb250ZW50PgorICA8b3JkZXJFbnRyeSB0eXBlPSJzb3VyY2VGb2xkZXIiIC8+CisgIDxvcmRlckVudHJ5IHR5cGU9ImpkayIgamRrTmFtZT0iamF2YSB2ZXJzaW9uICZxdW90OzEuNC4xXzAyJnF1b3Q7IiAvPgorICA8ZXhjbHVkZS1vdXRwdXQgLz4KKzwvY29tcG9uZW50PgorPC9tb2R1bGU+CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvbW9kdWxlUm9vdE1hbmFnZXIvY29udmVydG9yMzQvdGVzdDQvYWZ0ZXIvcHJqNC5pcHIgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvbW9kdWxlUm9vdE1hbmFnZXIvY29udmVydG9yMzQvdGVzdDQvYWZ0ZXIvcHJqNC5pcHIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjMwZjE3MAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9tb2R1bGVSb290TWFuYWdlci9jb252ZXJ0b3IzNC90ZXN0NC9hZnRlci9wcmo0LmlwcgpAQCAtMCwwICsxLDggQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8cHJvamVjdCB2ZXJzaW9uPSI0IiByZWxhdGl2ZVBhdGhzPSJ0cnVlIj4KKyAgPGNvbXBvbmVudCBuYW1lPSJQcm9qZWN0TW9kdWxlTWFuYWdlciI+CisgICAgPG1vZHVsZXM+CisgICAgICA8bW9kdWxlIGZpbGVwYXRoPSIkUFJPSkVDVF9ESVIkL3ByajQuaW1sIiBmaWxldXJsPSJmaWxlOi8vJFBST0pFQ1RfRElSJC9wcmo0LmltbCIgLz4KKyAgICA8L21vZHVsZXM+CisgIDwvY29tcG9uZW50PgorPC9wcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9tb2R1bGVSb290TWFuYWdlci9jb252ZXJ0b3IzNC90ZXN0NC9iZWZvcmUvcHJqNC5pcHIgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvbW9kdWxlUm9vdE1hbmFnZXIvY29udmVydG9yMzQvdGVzdDQvYmVmb3JlL3ByajQuaXByCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNhMGIzOGMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvbW9kdWxlUm9vdE1hbmFnZXIvY29udmVydG9yMzQvdGVzdDQvYmVmb3JlL3ByajQuaXByCkBAIC0wLDAgKzEsMTA4IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPHByb2plY3QgdmVyc2lvbj0iMyIgcmVsYXRpdmVQYXRocz0idHJ1ZSI+CisgIDxjb21wb25lbnQgbmFtZT0iUHJvamVjdFJvb3RNYW5hZ2VyIiB2ZXJzaW9uPSIyIj4KKyAgICA8amRrIG5hbWU9ImphdmEgdmVyc2lvbiAmcXVvdDsxLjQuMV8wMiZxdW90OyIgLz4KKyAgICA8cHJvamVjdFBhdGg+CisgICAgICA8cm9vdCB0eXBlPSJjb21wb3NpdGUiPgorICAgICAgICA8cm9vdCB0eXBlPSJzaW1wbGUiIHVybD0iZmlsZTovLyRQUk9KRUNUX0RJUiQiIC8+CisgICAgICA8L3Jvb3Q+CisgICAgPC9wcm9qZWN0UGF0aD4KKyAgICA8c291cmNlUGF0aD4KKyAgICAgIDxyb290IHR5cGU9ImNvbXBvc2l0ZSI+CisgICAgICAgIDxyb290IHR5cGU9InNpbXBsZSIgdXJsPSJmaWxlOi8vJFBST0pFQ1RfRElSJC9zcmMiIC8+CisgICAgICAgIDxyb290IHR5cGU9ImpkayIgcm9vdFR5cGU9InNvdXJjZVBhdGgiIG5hbWU9ImphdmEgdmVyc2lvbiAmcXVvdDsxLjQuMV8wMiZxdW90OyIgLz4KKyAgICAgIDwvcm9vdD4KKyAgICA8L3NvdXJjZVBhdGg+CisgICAgPGNsYXNzUGF0aD4KKyAgICAgIDxyb290IHR5cGU9ImNvbXBvc2l0ZSI+CisgICAgICAgIDxyb290IHR5cGU9Im91dHB1dCIgLz4KKyAgICAgICAgPHJvb3QgdHlwZT0iamRrIiByb290VHlwZT0iY2xhc3NQYXRoIiBuYW1lPSJqYXZhIHZlcnNpb24gJnF1b3Q7MS40LjFfMDImcXVvdDsiIC8+CisgICAgICA8L3Jvb3Q+CisgICAgPC9jbGFzc1BhdGg+CisgICAgPGV4Y2x1ZGVQYXRoPgorICAgICAgPHJvb3QgdHlwZT0iY29tcG9zaXRlIj4KKyAgICAgICAgPHJvb3QgdHlwZT0iZXhjbHVkZWRPdXRwdXQiIC8+CisgICAgICA8L3Jvb3Q+CisgICAgPC9leGNsdWRlUGF0aD4KKyAgICA8amF2YWRvY1BhdGg+CisgICAgICA8cm9vdCB0eXBlPSJjb21wb3NpdGUiPgorICAgICAgICA8cm9vdCB0eXBlPSJqZGsiIHJvb3RUeXBlPSJqYXZhZG9jUGF0aCIgbmFtZT0iamF2YSB2ZXJzaW9uICZxdW90OzEuNC4xXzAyJnF1b3Q7IiAvPgorICAgICAgPC9yb290PgorICAgIDwvamF2YWRvY1BhdGg+CisgICAgPGFzc2VydF9rZXl3b3JkIGVuYWJsZWQ9Im5vIiAvPgorICAgIDxleGNsdWRlX291dHB1dCBlbmFibGVkPSJ5ZXMiIC8+CisgIDwvY29tcG9uZW50PgorICA8Y29tcG9uZW50IG5hbWU9IkNvbXBpbGVyQ29uZmlndXJhdGlvbiI+CisgICAgPG9wdGlvbiBuYW1lPSJERUZBVUxUX0NPTVBJTEVSIiB2YWx1ZT0iSmF2YWMiIC8+CisgICAgPG9wdGlvbiBuYW1lPSJTWU5DSFJPTklaRV9PVVRQVVRfRElSRUNUT1JZIiB2YWx1ZT0iZmFsc2UiIC8+CisgICAgPG9wdGlvbiBuYW1lPSJERUZBVUxUX09VVFBVVF9QQVRIIiAvPgorICAgIDxvcHRpb24gbmFtZT0iT1VUUFVUX01PREUiIHZhbHVlPSJzaW5nbGUiIC8+CisgICAgPHJlc291cmNlRXh0ZW5zaW9ucz4KKyAgICAgIDxlbnRyeSBuYW1lPSIuK1wuKHByb3BlcnRpZXN8eG1sfGh0bWwpIiAvPgorICAgICAgPGVudHJ5IG5hbWU9Ii4rXC4oZ2lmfHBuZ3xqcGVnfGpwZykiIC8+CisgICAgPC9yZXNvdXJjZUV4dGVuc2lvbnM+CisgIDwvY29tcG9uZW50PgorICA8Y29tcG9uZW50IG5hbWU9IkphdmFjU2V0dGluZ3MiPgorICAgIDxvcHRpb24gbmFtZT0iREVCVUdHSU5HX0lORk8iIHZhbHVlPSJ0cnVlIiAvPgorICAgIDxvcHRpb24gbmFtZT0iR0VORVJBVEVfTk9fV0FSTklOR1MiIHZhbHVlPSJmYWxzZSIgLz4KKyAgICA8b3B0aW9uIG5hbWU9IkRFUFJFQ0FUSU9OIiB2YWx1ZT0idHJ1ZSIgLz4KKyAgICA8b3B0aW9uIG5hbWU9IkFERElUSU9OQUxfT1BUSU9OU19TVFJJTkciIHZhbHVlPSIiIC8+CisgICAgPG9wdGlvbiBuYW1lPSJNQVhJTVVNX0hFQVBfU0laRSIgdmFsdWU9IjEyOCIgLz4KKyAgPC9jb21wb25lbnQ+CisgIDxjb21wb25lbnQgbmFtZT0iSmlrZXNTZXR0aW5ncyI+CisgICAgPG9wdGlvbiBuYW1lPSJKSUtFU19QQVRIIiB2YWx1ZT0iIiAvPgorICAgIDxvcHRpb24gbmFtZT0iREVCVUdHSU5HX0lORk8iIHZhbHVlPSJ0cnVlIiAvPgorICAgIDxvcHRpb24gbmFtZT0iREVQUkVDQVRJT04iIHZhbHVlPSJ0cnVlIiAvPgorICAgIDxvcHRpb24gbmFtZT0iR0VORVJBVEVfTk9fV0FSTklOR1MiIHZhbHVlPSJmYWxzZSIgLz4KKyAgICA8b3B0aW9uIG5hbWU9IkdFTkVSQVRFX01BS0VfRklMRV9ERVBFTkRFTkNJRVMiIHZhbHVlPSJmYWxzZSIgLz4KKyAgICA8b3B0aW9uIG5hbWU9IkRPX0ZVTExfREVQRU5ERU5DRV9DSEVDSyIgdmFsdWU9ImZhbHNlIiAvPgorICAgIDxvcHRpb24gbmFtZT0iSVNfRU1BQ1NfRVJST1JTX01PREUiIHZhbHVlPSJ0cnVlIiAvPgorICAgIDxvcHRpb24gbmFtZT0iQURESVRJT05BTF9PUFRJT05TX1NUUklORyIgdmFsdWU9IiIgLz4KKyAgPC9jb21wb25lbnQ+CisgIDxjb21wb25lbnQgbmFtZT0iQW50Q29uZmlndXJhdGlvbiI+CisgICAgPG9wdGlvbiBuYW1lPSJJU19BVVRPU0NST0xMX1RPX1NPVVJDRSIgdmFsdWU9ImZhbHNlIiAvPgorICAgIDxvcHRpb24gbmFtZT0iRklMVEVSX1RBUkdFVFMiIHZhbHVlPSJmYWxzZSIgLz4KKyAgPC9jb21wb25lbnQ+CisgIDxjb21wb25lbnQgbmFtZT0iSmF2YWRvY0dlbmVyYXRpb25NYW5hZ2VyIj4KKyAgICA8b3B0aW9uIG5hbWU9Ik9VVFBVVF9ESVJFQ1RPUlkiIC8+CisgICAgPG9wdGlvbiBuYW1lPSJPUFRJT05fU0NPUEUiIHZhbHVlPSJwcm90ZWN0ZWQiIC8+CisgICAgPG9wdGlvbiBuYW1lPSJPUFRJT05fSElFUkFSQ0hZIiB2YWx1ZT0idHJ1ZSIgLz4KKyAgICA8b3B0aW9uIG5hbWU9Ik9QVElPTl9OQVZJR0FUT1IiIHZhbHVlPSJ0cnVlIiAvPgorICAgIDxvcHRpb24gbmFtZT0iT1BUSU9OX0lOREVYIiB2YWx1ZT0idHJ1ZSIgLz4KKyAgICA8b3B0aW9uIG5hbWU9Ik9QVElPTl9TRVBBUkFURV9JTkRFWCIgdmFsdWU9InRydWUiIC8+CisgICAgPG9wdGlvbiBuYW1lPSJPUFRJT05fRE9DVU1FTlRfVEFHX1VTRSIgdmFsdWU9ImZhbHNlIiAvPgorICAgIDxvcHRpb24gbmFtZT0iT1BUSU9OX0RPQ1VNRU5UX1RBR19BVVRIT1IiIHZhbHVlPSJmYWxzZSIgLz4KKyAgICA8b3B0aW9uIG5hbWU9Ik9QVElPTl9ET0NVTUVOVF9UQUdfVkVSU0lPTiIgdmFsdWU9ImZhbHNlIiAvPgorICAgIDxvcHRpb24gbmFtZT0iT1BUSU9OX0RPQ1VNRU5UX1RBR19ERVBSRUNBVEVEIiB2YWx1ZT0idHJ1ZSIgLz4KKyAgICA8b3B0aW9uIG5hbWU9Ik9QVElPTl9ERVBSRUNBVEVEX0xJU1QiIHZhbHVlPSJ0cnVlIiAvPgorICAgIDxvcHRpb24gbmFtZT0iT1RIRVJfT1BUSU9OUyIgdmFsdWU9IiIgLz4KKyAgICA8b3B0aW9uIG5hbWU9IkhFQVBfU0laRSIgLz4KKyAgICA8b3B0aW9uIG5hbWU9Ik9QRU5fSU5fQlJPV1NFUiIgdmFsdWU9InRydWUiIC8+CisgIDwvY29tcG9uZW50PgorICA8Y29tcG9uZW50IG5hbWU9IldlYk1hbmFnZXIiPgorICAgIDxvcHRpb24gZW5hYmxlZD0iZmFsc2UiIC8+CisgIDwvY29tcG9uZW50PgorICA8Y29tcG9uZW50IG5hbWU9IldlYlJvb3RDb250YWluZXIiIC8+CisgIDxjb21wb25lbnQgbmFtZT0iRWpiTWFuYWdlciIgZW5hYmxlZD0iZmFsc2UiIC8+CisgIDxjb21wb25lbnQgbmFtZT0iSlVuaXRQcm9qZWN0U2V0dGluZ3MiPgorICAgIDxvcHRpb24gbmFtZT0iVEVTVF9SVU5ORVIiIHZhbHVlPSJVSSIgLz4KKyAgPC9jb21wb25lbnQ+CisgIDxjb21wb25lbnQgbmFtZT0iRW50cnlQb2ludHNNYW5hZ2VyIj4KKyAgICA8ZW50cnlfcG9pbnRzIC8+CisgIDwvY29tcG9uZW50PgorICA8Y29tcG9uZW50IG5hbWU9IkVqYkFjdGlvbnNDb25maWd1cmF0aW9uIj4KKyAgICA8b3B0aW9uIG5hbWU9Ik5FV19NRVNTQUdFX0JFQU5fTEFTVF9QQUNLQUdFIiB2YWx1ZT0iIiAvPgorICAgIDxvcHRpb24gbmFtZT0iTkVXX0VOVElUWV9CRUFOX0xBU1RfUEFDS0FHRSIgdmFsdWU9IiIgLz4KKyAgICA8b3B0aW9uIG5hbWU9Ik5FV19TRVNTSU9OX0JFQU5fTEFTVF9QQUNLQUdFIiB2YWx1ZT0iIiAvPgorICA8L2NvbXBvbmVudD4KKyAgPGNvbXBvbmVudCBuYW1lPSJDb2RlU3R5bGVNYW5hZ2VyIj4KKyAgICA8b3B0aW9uIG5hbWU9IlVTRV9ERUZBVUxUX0NPREVfU1RZTEVfU0NIRU1FIiB2YWx1ZT0idHJ1ZSIgLz4KKyAgICA8b3B0aW9uIG5hbWU9IkNPREVfU1RZTEVfU0NIRU1FIiB2YWx1ZT0iIiAvPgorICA8L2NvbXBvbmVudD4KKyAgPGNvbXBvbmVudCBuYW1lPSJFeHBvcnRUb0hUTUxTZXR0aW5ncyI+CisgICAgPG9wdGlvbiBuYW1lPSJQUklOVF9MSU5FX05VTUJFUlMiIHZhbHVlPSJmYWxzZSIgLz4KKyAgICA8b3B0aW9uIG5hbWU9Ik9QRU5fSU5fQlJPV1NFUiIgdmFsdWU9ImZhbHNlIiAvPgorICAgIDxvcHRpb24gbmFtZT0iT1VUUFVUX0RJUkVDVE9SWSIgLz4KKyAgPC9jb21wb25lbnQ+Cis8L3Byb2plY3Q+CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9tb2R1bGVSb290TWFuYWdlci9leHBvcnRlZE1vZHVsZXMvQS9zcmMvcC9BLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvbW9kdWxlUm9vdE1hbmFnZXIvZXhwb3J0ZWRNb2R1bGVzL0Evc3JjL3AvQS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE0OWJiOTAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvbW9kdWxlUm9vdE1hbmFnZXIvZXhwb3J0ZWRNb2R1bGVzL0Evc3JjL3AvQS5qYXZhCkBAIC0wLDAgKzEsNCBAQAorcGFja2FnZSBwOworCitwdWJsaWMgY2xhc3MgQSB7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL21vZHVsZVJvb3RNYW5hZ2VyL2V4cG9ydGVkTW9kdWxlcy9CL3NyYy9wL0IuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9tb2R1bGVSb290TWFuYWdlci9leHBvcnRlZE1vZHVsZXMvQi9zcmMvcC9CLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjBlN2JmMwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9tb2R1bGVSb290TWFuYWdlci9leHBvcnRlZE1vZHVsZXMvQi9zcmMvcC9CLmphdmEKQEAgLTAsMCArMSw0IEBACitwYWNrYWdlIHA7CisKK3B1YmxpYyBjbGFzcyBCIHsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvbW9kdWxlUm9vdE1hbmFnZXIvZXhwb3J0ZWRNb2R1bGVzL0Mvc3JjL3AvQy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL21vZHVsZVJvb3RNYW5hZ2VyL2V4cG9ydGVkTW9kdWxlcy9DL3NyYy9wL0MuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZTNlMWI2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL21vZHVsZVJvb3RNYW5hZ2VyL2V4cG9ydGVkTW9kdWxlcy9DL3NyYy9wL0MuamF2YQpAQCAtMCwwICsxLDQgQEAKK3BhY2thZ2UgcDsKKworcHVibGljIGNsYXNzIEMgeworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9tb2R1bGVSb290TWFuYWdlci9tb2R1bGVMaWJyYXJpZXMvbmFtZWRMaWJDbGFzc2VzL2VtcHR5LnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9tb2R1bGVSb290TWFuYWdlci9tb2R1bGVMaWJyYXJpZXMvbmFtZWRMaWJDbGFzc2VzL2VtcHR5LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNjlkZTI5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL21vZHVsZVJvb3RNYW5hZ2VyL21vZHVsZUxpYnJhcmllcy9uYW1lZExpYkNsYXNzZXMvZW1wdHkudHh0CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvbW9kdWxlUm9vdE1hbmFnZXIvbW9kdWxlTGlicmFyaWVzL3Rlc3QuaW1sIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL21vZHVsZVJvb3RNYW5hZ2VyL21vZHVsZUxpYnJhcmllcy90ZXN0LmltbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZDE5NjA1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL21vZHVsZVJvb3RNYW5hZ2VyL21vZHVsZUxpYnJhcmllcy90ZXN0LmltbApAQCAtMCwwICsxLDQgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8bW9kdWxlIHZlcnNpb249IjQiIHJlbGF0aXZlUGF0aHM9InRydWUiPgorPGNvbXBvbmVudCBuYW1lPSJOZXdNb2R1bGVSb290TWFuYWdlciIgLz4KKzwvbW9kdWxlPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9tb2R1bGVSb290TWFuYWdlci9tb2R1bGVMaWJyYXJpZXMvdW5uYW1lZExpYkNsYXNzZXMvZW1wdHkudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL21vZHVsZVJvb3RNYW5hZ2VyL21vZHVsZUxpYnJhcmllcy91bm5hbWVkTGliQ2xhc3Nlcy9lbXB0eS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTY5ZGUyOQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9tb2R1bGVSb290TWFuYWdlci9tb2R1bGVMaWJyYXJpZXMvdW5uYW1lZExpYkNsYXNzZXMvZW1wdHkudHh0CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvbW9kdWxlUm9vdE1hbmFnZXIvbXVsdGlNb2R1bGVFZGl0aW5nL3Jvb3RzRWRpdGluZy9hL3NyYy9xL0EuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9tb2R1bGVSb290TWFuYWdlci9tdWx0aU1vZHVsZUVkaXRpbmcvcm9vdHNFZGl0aW5nL2Evc3JjL3EvQS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE5ZDRhYTIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvbW9kdWxlUm9vdE1hbmFnZXIvbXVsdGlNb2R1bGVFZGl0aW5nL3Jvb3RzRWRpdGluZy9hL3NyYy9xL0EuamF2YQpAQCAtMCwwICsxLDQgQEAKK3BhY2thZ2UgcTsKKworY2xhc3MgQSB7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL21vZHVsZVJvb3RNYW5hZ2VyL211bHRpTW9kdWxlRWRpdGluZy9yb290c0VkaXRpbmcvYi9zcmMvai9CLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvbW9kdWxlUm9vdE1hbmFnZXIvbXVsdGlNb2R1bGVFZGl0aW5nL3Jvb3RzRWRpdGluZy9iL3NyYy9qL0IuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMzY5MjUwYQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9tb2R1bGVSb290TWFuYWdlci9tdWx0aU1vZHVsZUVkaXRpbmcvcm9vdHNFZGl0aW5nL2Ivc3JjL2ovQi5qYXZhCkBAIC0wLDAgKzEsNCBAQAorcGFja2FnZSBqOworCitjbGFzcyBCIHsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvbW9kdWxlUm9vdE1hbmFnZXIvcm9vdHMvdGVzdDEvY2xhc3Nlcy95LnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9tb2R1bGVSb290TWFuYWdlci9yb290cy90ZXN0MS9jbGFzc2VzL3kudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIwMmRiZjMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvbW9kdWxlUm9vdE1hbmFnZXIvcm9vdHMvdGVzdDEvY2xhc3Nlcy95LnR4dApAQCAtMCwwICsxIEBACit6enp6egpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9tb2R1bGVSb290TWFuYWdlci9yb290cy90ZXN0MS94LnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9tb2R1bGVSb290TWFuYWdlci9yb290cy90ZXN0MS94LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMGMxYmQwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL21vZHVsZVJvb3RNYW5hZ2VyL3Jvb3RzL3Rlc3QxL3gudHh0CkBAIC0wLDAgKzEgQEAKK2JsYWggYmxhaCBibGFoClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3Byb2plY3RWaWV3LzEvc3JjL2NvbS9wYWNrYWdlMS9DbGFzczIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wcm9qZWN0Vmlldy8xL3NyYy9jb20vcGFja2FnZTEvQ2xhc3MyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTY5ZGUyOQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wcm9qZWN0Vmlldy8xL3NyYy9jb20vcGFja2FnZTEvQ2xhc3MyLmphdmEKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wcm9qZWN0Vmlldy8xL3NyYy9jb20vcGFja2FnZTEvRm9ybTEuZm9ybSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wcm9qZWN0Vmlldy8xL3NyYy9jb20vcGFja2FnZTEvRm9ybTEuZm9ybQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNjlkZTI5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3Byb2plY3RWaWV3LzEvc3JjL2NvbS9wYWNrYWdlMS9Gb3JtMS5mb3JtCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHJvamVjdFZpZXcvMS9zcmMvY29tL3BhY2thZ2UxL0Zvcm0xLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHJvamVjdFZpZXcvMS9zcmMvY29tL3BhY2thZ2UxL0Zvcm0xLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTY5ZGUyOQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wcm9qZWN0Vmlldy8xL3NyYy9jb20vcGFja2FnZTEvRm9ybTEuamF2YQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3Byb2plY3RWaWV3LzEvc3JjL2NvbS9wYWNrYWdlMS9Gb3JtMi5mb3JtIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3Byb2plY3RWaWV3LzEvc3JjL2NvbS9wYWNrYWdlMS9Gb3JtMi5mb3JtCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU2OWRlMjkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHJvamVjdFZpZXcvMS9zcmMvY29tL3BhY2thZ2UxL0Zvcm0yLmZvcm0KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wcm9qZWN0Vmlldy9hbm5veWluZ1Njcm9sbGluZy9zcmMvY29tL3BhY2thZ2UxL0NsYXNzMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3Byb2plY3RWaWV3L2Fubm95aW5nU2Nyb2xsaW5nL3NyYy9jb20vcGFja2FnZTEvQ2xhc3MxLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjUwZTM3NAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wcm9qZWN0Vmlldy9hbm5veWluZ1Njcm9sbGluZy9zcmMvY29tL3BhY2thZ2UxL0NsYXNzMS5qYXZhCkBAIC0wLDAgKzEsMTUgQEAKK3BhY2thZ2UgY29tLnBhY2thZ2UxOworCitwdWJsaWMgY2xhc3MgQ2xhc3MxIHsKKyAgcHJpdmF0ZSBib29sZWFuIG15RmllbGQxOworICBwdWJsaWMgYm9vbGVhbiBteUZpZWxkMjsKKyAgCisgIHB1YmxpYyBpbnQgZ2V0VmFsdWUoKXsKKyAgIHJldHVybiAwOworICB9CisgIAorICBwdWJsaWMgY2xhc3MgSW5uZXJDbGFzc3sKKyAgICBwdWJsaWMgaW50IG15SW5uZXJDbGFzc0ZpZWxkOworICB9CisgIAorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3Byb2plY3RWaWV3L2F1dG9zY3JvbGxGcm9tU291cmNlT25PcGVuaW5nL3NyYy9jb20vcGFja2FnZTEvQ2xhc3MxLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHJvamVjdFZpZXcvYXV0b3Njcm9sbEZyb21Tb3VyY2VPbk9wZW5pbmcvc3JjL2NvbS9wYWNrYWdlMS9DbGFzczEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NGZmOWRhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3Byb2plY3RWaWV3L2F1dG9zY3JvbGxGcm9tU291cmNlT25PcGVuaW5nL3NyYy9jb20vcGFja2FnZTEvQ2xhc3MxLmphdmEKQEAgLTAsMCArMSwzMCBAQAorLyoKKyAqIENvcHlyaWdodCAyMDAwLTIwMTIgSmV0QnJhaW5zIHMuci5vLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2UgY29tLnBhY2thZ2UxOworCitwdWJsaWMgY2xhc3MgQ2xhc3MxIHsKKyAgcHJpdmF0ZSBib29sZWFuIG15RmllbGQxOworICBwdWJsaWMgYm9vbGVhbiBteUZpZWxkMjsKKyAgCisgIHB1YmxpYyBpbnQgZ2V0VmFsdWUoKXsKKyAgIHJldHVybiAwOworICB9CisgIAorICBwdWJsaWMgY2xhc3MgSW5uZXJDbGFzc3sKKyAgICBwdWJsaWMgaW50IG15SW5uZXJDbGFzc0ZpZWxkOworICB9CisgIAorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3Byb2plY3RWaWV3L2ZpbGVTdHJ1Y3R1cmVGb3JDbGFzcy9zcmMvY29tL3BhY2thZ2UxL0NsYXNzMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3Byb2plY3RWaWV3L2ZpbGVTdHJ1Y3R1cmVGb3JDbGFzcy9zcmMvY29tL3BhY2thZ2UxL0NsYXNzMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhkOWI5MjYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHJvamVjdFZpZXcvZmlsZVN0cnVjdHVyZUZvckNsYXNzL3NyYy9jb20vcGFja2FnZTEvQ2xhc3MxLmphdmEKQEAgLTAsMCArMSwyMiBAQAorcGFja2FnZSBjb20ucGFja2FnZTE7CisKK3B1YmxpYyBjbGFzcyBDbGFzczEgeworCisgIHByaXZhdGUgU3RyaW5nIF9teUZpZWxkMjsKKyAgCisKKyAgY2xhc3MgSW5uZXIyeworCisgIH0KKworICBpbnQgX215RmllbGQxOworCisgIGNsYXNzIElubmVyMXsKKworICB9CisKKyAgcHJpdmF0ZSB2b2lkIF9fbWV0aG9kKCkgeworCisgIH0KKworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3Byb2plY3RWaWV3L2dldFBhcmVudE9iamVjdC9zcmMvY29tL3BhY2thZ2UxL0NsYXNzMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3Byb2plY3RWaWV3L2dldFBhcmVudE9iamVjdC9zcmMvY29tL3BhY2thZ2UxL0NsYXNzMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkyZDRlYTcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHJvamVjdFZpZXcvZ2V0UGFyZW50T2JqZWN0L3NyYy9jb20vcGFja2FnZTEvQ2xhc3MxLmphdmEKQEAgLTAsMCArMSwxMiBAQAorcGFja2FnZSBjb20ucGFja2FnZTE7CisKK3B1YmxpYyBjbGFzcyBDbGFzczEgeworCisgIHByaXZhdGUgU3RyaW5nIG15RmllbGQ7CisgIAorICBwcml2YXRlIHZvaWQgbWV0aG9kKCkgeworICAKKyAgfQorICAKKworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3Byb2plY3RWaWV3L2dldFBhcmVudE9iamVjdC9zcmMvY29tL3BhY2thZ2UxL0NsYXNzMi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3Byb2plY3RWaWV3L2dldFBhcmVudE9iamVjdC9zcmMvY29tL3BhY2thZ2UxL0NsYXNzMi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAwYzg5M2MKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHJvamVjdFZpZXcvZ2V0UGFyZW50T2JqZWN0L3NyYy9jb20vcGFja2FnZTEvQ2xhc3MyLmphdmEKQEAgLTAsMCArMSw4IEBACitwYWNrYWdlIGNvbS5wYWNrYWdlMTsKKworcHVibGljIGNsYXNzIENsYXNzMiB7Cit9CisKK2NsYXNzIENsYXNzMyB7CisKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wcm9qZWN0Vmlldy9nZXRQYXJlbnRPYmplY3Qvc3JjL2NvbS9wYWNrYWdlMS9DbGFzczQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wcm9qZWN0Vmlldy9nZXRQYXJlbnRPYmplY3Qvc3JjL2NvbS9wYWNrYWdlMS9DbGFzczQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43M2VlYjkzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3Byb2plY3RWaWV3L2dldFBhcmVudE9iamVjdC9zcmMvY29tL3BhY2thZ2UxL0NsYXNzNC5qYXZhCkBAIC0wLDAgKzEsNCBAQAorcGFja2FnZSBjb20ucGFja2FnZTE7CisKK3B1YmxpYyBDbGFzczQgeworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3Byb2plY3RWaWV3L2dldFBhcmVudE9iamVjdC9zcmMvY29tL3BhY2thZ2UxL0Zvcm0xLmZvcm0gYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHJvamVjdFZpZXcvZ2V0UGFyZW50T2JqZWN0L3NyYy9jb20vcGFja2FnZTEvRm9ybTEuZm9ybQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNDA3ZmZlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3Byb2plY3RWaWV3L2dldFBhcmVudE9iamVjdC9zcmMvY29tL3BhY2thZ2UxL0Zvcm0xLmZvcm0KQEAgLTAsMCArMSwyIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPGZvcm0geG1sbnM9Imh0dHA6Ly93d3cuaW50ZWxsaWouY29tL3VpZGVzaWduZXIvZm9ybS8iIHZlcnNpb249IjEiIGJpbmQtdG8tY2xhc3M9ImNvbS5wYWNrYWdlMS5Gb3JtMSIvPgpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3Byb2plY3RWaWV3L2dldFBhcmVudE9iamVjdC9zcmMvY29tL3BhY2thZ2UxL0Zvcm0xLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHJvamVjdFZpZXcvZ2V0UGFyZW50T2JqZWN0L3NyYy9jb20vcGFja2FnZTEvRm9ybTEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNGZiMGFkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3Byb2plY3RWaWV3L2dldFBhcmVudE9iamVjdC9zcmMvY29tL3BhY2thZ2UxL0Zvcm0xLmphdmEKQEAgLTAsMCArMSw0IEBACitwYWNrYWdlIGNvbS5wYWNrYWdlMTsKKworcHVibGljIGNsYXNzIEZvcm0xIHsKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wcm9qZWN0Vmlldy9nZXRQYXJlbnRPYmplY3Qvc3JjL2NvbS9wYWNrYWdlMS9Gb3JtMi5mb3JtIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3Byb2plY3RWaWV3L2dldFBhcmVudE9iamVjdC9zcmMvY29tL3BhY2thZ2UxL0Zvcm0yLmZvcm0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDM1MzVmNQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wcm9qZWN0Vmlldy9nZXRQYXJlbnRPYmplY3Qvc3JjL2NvbS9wYWNrYWdlMS9Gb3JtMi5mb3JtCkBAIC0wLDAgKzEsMiBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxmb3JtIHZlcnNpb249IjEiIHhtbG5zPSJodHRwOi8vd3d3LmludGVsbGlqLmNvbS91aWRlc2lnbmVyL2Zvcm0vIi8+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3Byb2plY3RWaWV3L3BhY2thZ2VWaWV3L3NyYy9jb20vcGFja2FnZTEvQ2xhc3MxLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHJvamVjdFZpZXcvcGFja2FnZVZpZXcvc3JjL2NvbS9wYWNrYWdlMS9DbGFzczEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZmM1ZjNmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3Byb2plY3RWaWV3L3BhY2thZ2VWaWV3L3NyYy9jb20vcGFja2FnZTEvQ2xhc3MxLmphdmEKQEAgLTAsMCArMSw0IEBACitwYWNrYWdlIGNvbS5wYWNrYWdlMTsKKworcHVibGljIGNsYXNzIENsYXNzMSB7Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHJvamVjdFZpZXcvcGFja2FnZVZpZXcvc3JjL2NvbS9wYWNrYWdlMS9DbGFzczIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wcm9qZWN0Vmlldy9wYWNrYWdlVmlldy9zcmMvY29tL3BhY2thZ2UxL0NsYXNzMi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAwYzg5M2MKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHJvamVjdFZpZXcvcGFja2FnZVZpZXcvc3JjL2NvbS9wYWNrYWdlMS9DbGFzczIuamF2YQpAQCAtMCwwICsxLDggQEAKK3BhY2thZ2UgY29tLnBhY2thZ2UxOworCitwdWJsaWMgY2xhc3MgQ2xhc3MyIHsKK30KKworY2xhc3MgQ2xhc3MzIHsKKworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3Byb2plY3RWaWV3L3BhY2thZ2VWaWV3L3NyYy9jb20vcGFja2FnZTEvQ2xhc3M0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHJvamVjdFZpZXcvcGFja2FnZVZpZXcvc3JjL2NvbS9wYWNrYWdlMS9DbGFzczQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43M2VlYjkzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3Byb2plY3RWaWV3L3BhY2thZ2VWaWV3L3NyYy9jb20vcGFja2FnZTEvQ2xhc3M0LmphdmEKQEAgLTAsMCArMSw0IEBACitwYWNrYWdlIGNvbS5wYWNrYWdlMTsKKworcHVibGljIENsYXNzNCB7Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHJvamVjdFZpZXcvcGFja2FnZVZpZXcvc3JjL2NvbS9wYWNrYWdlMS9Gb3JtMS5mb3JtIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3Byb2plY3RWaWV3L3BhY2thZ2VWaWV3L3NyYy9jb20vcGFja2FnZTEvRm9ybTEuZm9ybQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNDA3ZmZlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3Byb2plY3RWaWV3L3BhY2thZ2VWaWV3L3NyYy9jb20vcGFja2FnZTEvRm9ybTEuZm9ybQpAQCAtMCwwICsxLDIgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8Zm9ybSB4bWxucz0iaHR0cDovL3d3dy5pbnRlbGxpai5jb20vdWlkZXNpZ25lci9mb3JtLyIgdmVyc2lvbj0iMSIgYmluZC10by1jbGFzcz0iY29tLnBhY2thZ2UxLkZvcm0xIi8+CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHJvamVjdFZpZXcvcGFja2FnZVZpZXcvc3JjL2NvbS9wYWNrYWdlMS9Gb3JtMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3Byb2plY3RWaWV3L3BhY2thZ2VWaWV3L3NyYy9jb20vcGFja2FnZTEvRm9ybTEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNGZiMGFkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3Byb2plY3RWaWV3L3BhY2thZ2VWaWV3L3NyYy9jb20vcGFja2FnZTEvRm9ybTEuamF2YQpAQCAtMCwwICsxLDQgQEAKK3BhY2thZ2UgY29tLnBhY2thZ2UxOworCitwdWJsaWMgY2xhc3MgRm9ybTEgeworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3Byb2plY3RWaWV3L3BhY2thZ2VWaWV3L3NyYy9jb20vcGFja2FnZTEvRm9ybTIuZm9ybSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wcm9qZWN0Vmlldy9wYWNrYWdlVmlldy9zcmMvY29tL3BhY2thZ2UxL0Zvcm0yLmZvcm0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDM1MzVmNQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wcm9qZWN0Vmlldy9wYWNrYWdlVmlldy9zcmMvY29tL3BhY2thZ2UxL0Zvcm0yLmZvcm0KQEAgLTAsMCArMSwyIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPGZvcm0gdmVyc2lvbj0iMSIgeG1sbnM9Imh0dHA6Ly93d3cuaW50ZWxsaWouY29tL3VpZGVzaWduZXIvZm9ybS8iLz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHJvamVjdFZpZXcvcGFja2FnZVZpZXcvc3JjL2phdmEvQ2xhc3MxLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHJvamVjdFZpZXcvcGFja2FnZVZpZXcvc3JjL2phdmEvQ2xhc3MxLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWZjNWYzZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wcm9qZWN0Vmlldy9wYWNrYWdlVmlldy9zcmMvamF2YS9DbGFzczEuamF2YQpAQCAtMCwwICsxLDQgQEAKK3BhY2thZ2UgY29tLnBhY2thZ2UxOworCitwdWJsaWMgY2xhc3MgQ2xhc3MxIHsKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wcm9qZWN0Vmlldy9wYWNrYWdlVmlldy9zcmMvamF2YXgvc2VydmxldC9DbGFzczEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wcm9qZWN0Vmlldy9wYWNrYWdlVmlldy9zcmMvamF2YXgvc2VydmxldC9DbGFzczEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZmM1ZjNmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3Byb2plY3RWaWV3L3BhY2thZ2VWaWV3L3NyYy9qYXZheC9zZXJ2bGV0L0NsYXNzMS5qYXZhCkBAIC0wLDAgKzEsNCBAQAorcGFja2FnZSBjb20ucGFja2FnZTE7CisKK3B1YmxpYyBjbGFzcyBDbGFzczEgeworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3Byb2plY3RWaWV3L3NlbGVjdFByb2plY3Qvc3JjL2NvbS9wYWNrYWdlMS9DbGFzczEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wcm9qZWN0Vmlldy9zZWxlY3RQcm9qZWN0L3NyYy9jb20vcGFja2FnZTEvQ2xhc3MxLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTJkNGVhNwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wcm9qZWN0Vmlldy9zZWxlY3RQcm9qZWN0L3NyYy9jb20vcGFja2FnZTEvQ2xhc3MxLmphdmEKQEAgLTAsMCArMSwxMiBAQAorcGFja2FnZSBjb20ucGFja2FnZTE7CisKK3B1YmxpYyBjbGFzcyBDbGFzczEgeworCisgIHByaXZhdGUgU3RyaW5nIG15RmllbGQ7CisgIAorICBwcml2YXRlIHZvaWQgbWV0aG9kKCkgeworICAKKyAgfQorICAKKworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3Byb2plY3RWaWV3L3NlbGVjdFByb2plY3Qvc3JjL2NvbS9wYWNrYWdlMS9DbGFzczIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wcm9qZWN0Vmlldy9zZWxlY3RQcm9qZWN0L3NyYy9jb20vcGFja2FnZTEvQ2xhc3MyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDBjODkzYwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wcm9qZWN0Vmlldy9zZWxlY3RQcm9qZWN0L3NyYy9jb20vcGFja2FnZTEvQ2xhc3MyLmphdmEKQEAgLTAsMCArMSw4IEBACitwYWNrYWdlIGNvbS5wYWNrYWdlMTsKKworcHVibGljIGNsYXNzIENsYXNzMiB7Cit9CisKK2NsYXNzIENsYXNzMyB7CisKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wcm9qZWN0Vmlldy9zZWxlY3RQcm9qZWN0L3NyYy9jb20vcGFja2FnZTEvQ2xhc3M0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHJvamVjdFZpZXcvc2VsZWN0UHJvamVjdC9zcmMvY29tL3BhY2thZ2UxL0NsYXNzNC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjczZWViOTMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHJvamVjdFZpZXcvc2VsZWN0UHJvamVjdC9zcmMvY29tL3BhY2thZ2UxL0NsYXNzNC5qYXZhCkBAIC0wLDAgKzEsNCBAQAorcGFja2FnZSBjb20ucGFja2FnZTE7CisKK3B1YmxpYyBDbGFzczQgeworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3Byb2plY3RWaWV3L3NlbGVjdFByb2plY3Qvc3JjL2NvbS9wYWNrYWdlMS9Gb3JtMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3Byb2plY3RWaWV3L3NlbGVjdFByb2plY3Qvc3JjL2NvbS9wYWNrYWdlMS9Gb3JtMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI0ZmIwYWQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHJvamVjdFZpZXcvc2VsZWN0UHJvamVjdC9zcmMvY29tL3BhY2thZ2UxL0Zvcm0xLmphdmEKQEAgLTAsMCArMSw0IEBACitwYWNrYWdlIGNvbS5wYWNrYWdlMTsKKworcHVibGljIGNsYXNzIEZvcm0xIHsKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wcm9qZWN0Vmlldy9zaG93Q2xhc3NNZW1iZXJzL3NyYy9jb20vcGFja2FnZTEvQ2xhc3MxLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHJvamVjdFZpZXcvc2hvd0NsYXNzTWVtYmVycy9zcmMvY29tL3BhY2thZ2UxL0NsYXNzMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI1MGUzNzQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHJvamVjdFZpZXcvc2hvd0NsYXNzTWVtYmVycy9zcmMvY29tL3BhY2thZ2UxL0NsYXNzMS5qYXZhCkBAIC0wLDAgKzEsMTUgQEAKK3BhY2thZ2UgY29tLnBhY2thZ2UxOworCitwdWJsaWMgY2xhc3MgQ2xhc3MxIHsKKyAgcHJpdmF0ZSBib29sZWFuIG15RmllbGQxOworICBwdWJsaWMgYm9vbGVhbiBteUZpZWxkMjsKKyAgCisgIHB1YmxpYyBpbnQgZ2V0VmFsdWUoKXsKKyAgIHJldHVybiAwOworICB9CisgIAorICBwdWJsaWMgY2xhc3MgSW5uZXJDbGFzc3sKKyAgICBwdWJsaWMgaW50IG15SW5uZXJDbGFzc0ZpZWxkOworICB9CisgIAorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3Byb2plY3RWaWV3L3Nob3dDbGFzc01lbWJlcnMvc3JjL2NvbS9wYWNrYWdlMS9DbGFzczIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wcm9qZWN0Vmlldy9zaG93Q2xhc3NNZW1iZXJzL3NyYy9jb20vcGFja2FnZTEvQ2xhc3MyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzlkMmFhYgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wcm9qZWN0Vmlldy9zaG93Q2xhc3NNZW1iZXJzL3NyYy9jb20vcGFja2FnZTEvQ2xhc3MyLmphdmEKQEAgLTAsMCArMSw1MyBAQAorcGFja2FnZSBjb20ucGFja2FnZTE7CisKK3B1YmxpYyBjbGFzcyBDbGFzczIgeworICBwcml2YXRlIGJvb2xlYW4gbXlGaWVsZDE7CisgIHB1YmxpYyBib29sZWFuIG15RmllbGQyOworICBwdWJsaWMgYm9vbGVhbiBteUZpZWxkMzsKKyAgcHVibGljIGJvb2xlYW4gbXlGaWVsZDQ7CisKKyAgcHVibGljIGludCBnZXRWYWx1ZSgpIHsKKyAgICByZXR1cm4gMDsKKyAgfQorCisgIHB1YmxpYyBjbGFzcyBJbm5lckNsYXNzMSB7CisgICAgcHVibGljIGludCBteUlubmVyQ2xhc3NGaWVsZDsKKworICAgIHB1YmxpYyBjbGFzcyBJbm5lckNsYXNzMTIgeworICAgICAgcHVibGljIGludCBteUlubmVyQ2xhc3NGaWVsZDsKKworICAgICAgcHVibGljIGNsYXNzIElubmVyQ2xhc3MxMyB7CisgICAgICAgIHB1YmxpYyBpbnQgbXlJbm5lckNsYXNzRmllbGQ7CisKKyAgICAgICAgcHVibGljIGNsYXNzIElubmVyQ2xhc3MxNCB7CisgICAgICAgICAgcHVibGljIGludCBteUlubmVyQ2xhc3NGaWVsZDsKKworICAgICAgICAgIHB1YmxpYyBjbGFzcyBJbm5lckNsYXNzMTUgeworICAgICAgICAgICAgcHVibGljIGludCBteUlubmVyQ2xhc3NGaWVsZDsKKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9CisgIH0KKworICBwdWJsaWMgY2xhc3MgSW5uZXJDbGFzczIgeworICAgIHB1YmxpYyBpbnQgbXlJbm5lckNsYXNzRmllbGQ7CisKKyAgICBwdWJsaWMgY2xhc3MgSW5uZXJDbGFzczIyIHsKKyAgICAgIHB1YmxpYyBpbnQgbXlJbm5lckNsYXNzRmllbGQ7CisKKyAgICAgIHB1YmxpYyBjbGFzcyBJbm5lckNsYXNzMjMgeworICAgICAgICBwdWJsaWMgaW50IG15SW5uZXJDbGFzc0ZpZWxkOworCisgICAgICAgIHB1YmxpYyBjbGFzcyBJbm5lckNsYXNzMjQgeworICAgICAgICAgIHB1YmxpYyBpbnQgbXlGaWVsZFRvU2VsZWN0OworCisgICAgICAgICAgcHVibGljIGNsYXNzIElubmVyQ2xhc3MyNSB7CisgICAgICAgICAgICBwdWJsaWMgaW50IG15SW5uZXJDbGFzc0ZpZWxkOworICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0KKyAgfQorCit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHJvamVjdFZpZXcvc3RhbmRhcmRQcm92aWRlcnMvc3JjL2NvbS9wYWNrYWdlMS9DbGFzczEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wcm9qZWN0Vmlldy9zdGFuZGFyZFByb3ZpZGVycy9zcmMvY29tL3BhY2thZ2UxL0NsYXNzMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlmYzVmM2YKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHJvamVjdFZpZXcvc3RhbmRhcmRQcm92aWRlcnMvc3JjL2NvbS9wYWNrYWdlMS9DbGFzczEuamF2YQpAQCAtMCwwICsxLDQgQEAKK3BhY2thZ2UgY29tLnBhY2thZ2UxOworCitwdWJsaWMgY2xhc3MgQ2xhc3MxIHsKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wcm9qZWN0Vmlldy9zdGFuZGFyZFByb3ZpZGVycy9zcmMvY29tL3BhY2thZ2UxL0NsYXNzMi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3Byb2plY3RWaWV3L3N0YW5kYXJkUHJvdmlkZXJzL3NyYy9jb20vcGFja2FnZTEvQ2xhc3MyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDBjODkzYwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wcm9qZWN0Vmlldy9zdGFuZGFyZFByb3ZpZGVycy9zcmMvY29tL3BhY2thZ2UxL0NsYXNzMi5qYXZhCkBAIC0wLDAgKzEsOCBAQAorcGFja2FnZSBjb20ucGFja2FnZTE7CisKK3B1YmxpYyBjbGFzcyBDbGFzczIgeworfQorCitjbGFzcyBDbGFzczMgeworCit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHJvamVjdFZpZXcvc3RhbmRhcmRQcm92aWRlcnMvc3JjL2NvbS9wYWNrYWdlMS9DbGFzczQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wcm9qZWN0Vmlldy9zdGFuZGFyZFByb3ZpZGVycy9zcmMvY29tL3BhY2thZ2UxL0NsYXNzNC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjczZWViOTMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHJvamVjdFZpZXcvc3RhbmRhcmRQcm92aWRlcnMvc3JjL2NvbS9wYWNrYWdlMS9DbGFzczQuamF2YQpAQCAtMCwwICsxLDQgQEAKK3BhY2thZ2UgY29tLnBhY2thZ2UxOworCitwdWJsaWMgQ2xhc3M0IHsKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wcm9qZWN0Vmlldy9zdGFuZGFyZFByb3ZpZGVycy9zcmMvY29tL3BhY2thZ2UxL0Zvcm0xLmZvcm0gYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHJvamVjdFZpZXcvc3RhbmRhcmRQcm92aWRlcnMvc3JjL2NvbS9wYWNrYWdlMS9Gb3JtMS5mb3JtCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE0MDdmZmUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHJvamVjdFZpZXcvc3RhbmRhcmRQcm92aWRlcnMvc3JjL2NvbS9wYWNrYWdlMS9Gb3JtMS5mb3JtCkBAIC0wLDAgKzEsMiBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxmb3JtIHhtbG5zPSJodHRwOi8vd3d3LmludGVsbGlqLmNvbS91aWRlc2lnbmVyL2Zvcm0vIiB2ZXJzaW9uPSIxIiBiaW5kLXRvLWNsYXNzPSJjb20ucGFja2FnZTEuRm9ybTEiLz4KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wcm9qZWN0Vmlldy9zdGFuZGFyZFByb3ZpZGVycy9zcmMvY29tL3BhY2thZ2UxL0Zvcm0xLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHJvamVjdFZpZXcvc3RhbmRhcmRQcm92aWRlcnMvc3JjL2NvbS9wYWNrYWdlMS9Gb3JtMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI0ZmIwYWQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHJvamVjdFZpZXcvc3RhbmRhcmRQcm92aWRlcnMvc3JjL2NvbS9wYWNrYWdlMS9Gb3JtMS5qYXZhCkBAIC0wLDAgKzEsNCBAQAorcGFja2FnZSBjb20ucGFja2FnZTE7CisKK3B1YmxpYyBjbGFzcyBGb3JtMSB7Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHJvamVjdFZpZXcvc3RhbmRhcmRQcm92aWRlcnMvc3JjL2NvbS9wYWNrYWdlMS9Gb3JtMi5mb3JtIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3Byb2plY3RWaWV3L3N0YW5kYXJkUHJvdmlkZXJzL3NyYy9jb20vcGFja2FnZTEvRm9ybTIuZm9ybQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MzUzNWY1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3Byb2plY3RWaWV3L3N0YW5kYXJkUHJvdmlkZXJzL3NyYy9jb20vcGFja2FnZTEvRm9ybTIuZm9ybQpAQCAtMCwwICsxLDIgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8Zm9ybSB2ZXJzaW9uPSIxIiB4bWxucz0iaHR0cDovL3d3dy5pbnRlbGxpai5jb20vdWlkZXNpZ25lci9mb3JtLyIvPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wcm9qZWN0Vmlldy90b0RvL3NyYy9wYWNrYWdlMS9KYXZhQ2xhc3MuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wcm9qZWN0Vmlldy90b0RvL3NyYy9wYWNrYWdlMS9KYXZhQ2xhc3MuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NDZiMGYwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3Byb2plY3RWaWV3L3RvRG8vc3JjL3BhY2thZ2UxL0phdmFDbGFzcy5qYXZhCkBAIC0wLDAgKzEsMTEgQEAKK3BhY2thZ2Ugc3JjLnBhY2thZ2UxOworCitwdWJsaWMgY2xhc3MgSmF2YUNsYXNzIHsKKworIC8vdG9kbzogQ2xhc3MgYm9keQorICBwcm90ZWN0ZWQgT2JqZWN0IGNsb25lKCkgdGhyb3dzIENsb25lTm90U3VwcG9ydGVkRXhjZXB0aW9uIHsKKy8vdG9kbzogTWV0aG9kIGJvZHkKKyAgICByZXR1cm4gc3VwZXIuY2xvbmUoKTsKKyAgfQorCit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHJvamVjdFZpZXcvdG9Eby9zcmMvcGFja2FnZTEvcGFja2FnZTIvSmF2YUNsYXNzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHJvamVjdFZpZXcvdG9Eby9zcmMvcGFja2FnZTEvcGFja2FnZTIvSmF2YUNsYXNzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGQ3ODQyMgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wcm9qZWN0Vmlldy90b0RvL3NyYy9wYWNrYWdlMS9wYWNrYWdlMi9KYXZhQ2xhc3MuamF2YQpAQCAtMCwwICsxLDExIEBACitwYWNrYWdlIHNyYy5wYWNrYWdlMS5wYWNrYWdlMjsKKworcHVibGljIGNsYXNzIEphdmFDbGFzcyB7CisKKyAgLy90b2RvOiBDbGFzcyBib2R5CisgICBwcm90ZWN0ZWQgT2JqZWN0IGNsb25lKCkgdGhyb3dzIENsb25lTm90U3VwcG9ydGVkRXhjZXB0aW9uIHsKKy8vdG9kbzogTWV0aG9kIGJvZHkKKyAgICAgcmV0dXJuIHN1cGVyLmNsb25lKCk7CisgICB9CisKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wcm9qZWN0Vmlldy90b0RvL3NyYy9wYWNrYWdlMy9KYXZhQ2xhc3MuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wcm9qZWN0Vmlldy90b0RvL3NyYy9wYWNrYWdlMy9KYXZhQ2xhc3MuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYzc3NjI1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3Byb2plY3RWaWV3L3RvRG8vc3JjL3BhY2thZ2UzL0phdmFDbGFzcy5qYXZhCkBAIC0wLDAgKzEsMTEgQEAKK3BhY2thZ2Ugc3JjLnBhY2thZ2UzOworCitwdWJsaWMgY2xhc3MgSmF2YUNsYXNzIHsKKworICAvL3RvZG86IENsYXNzIGJvZHkKKyAgIHByb3RlY3RlZCBPYmplY3QgY2xvbmUoKSB0aHJvd3MgQ2xvbmVOb3RTdXBwb3J0ZWRFeGNlcHRpb24geworLy90b2RvOiBNZXRob2QgYm9keQorICAgICByZXR1cm4gc3VwZXIuY2xvbmUoKTsKKyAgIH0KKworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3Byb2plY3RWaWV3L3RvRG8veG1sRmlsZS54bWwgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHJvamVjdFZpZXcvdG9Eby94bWxGaWxlLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMjA0MGE0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3Byb2plY3RWaWV3L3RvRG8veG1sRmlsZS54bWwKQEAgLTAsMCArMSwzIEBACis8dGFnPgorICA8IS0tdG9kby0tPgorPC90YWc+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3Byb2plY3RWaWV3L3RvRG8xL3NyYy9wYWNrYWdlMS9wYWNrYWdlMi9KYXZhQ2xhc3MuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wcm9qZWN0Vmlldy90b0RvMS9zcmMvcGFja2FnZTEvcGFja2FnZTIvSmF2YUNsYXNzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGQ3ODQyMgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wcm9qZWN0Vmlldy90b0RvMS9zcmMvcGFja2FnZTEvcGFja2FnZTIvSmF2YUNsYXNzLmphdmEKQEAgLTAsMCArMSwxMSBAQAorcGFja2FnZSBzcmMucGFja2FnZTEucGFja2FnZTI7CisKK3B1YmxpYyBjbGFzcyBKYXZhQ2xhc3MgeworCisgIC8vdG9kbzogQ2xhc3MgYm9keQorICAgcHJvdGVjdGVkIE9iamVjdCBjbG9uZSgpIHRocm93cyBDbG9uZU5vdFN1cHBvcnRlZEV4Y2VwdGlvbiB7CisvL3RvZG86IE1ldGhvZCBib2R5CisgICAgIHJldHVybiBzdXBlci5jbG9uZSgpOworICAgfQorCit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHJvamVjdFZpZXcvdXBkYXRlUHJvamVjdFZpZXcvc3JjL2NvbS9wYWNrYWdlMS9DbGFzczEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wcm9qZWN0Vmlldy91cGRhdGVQcm9qZWN0Vmlldy9zcmMvY29tL3BhY2thZ2UxL0NsYXNzMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlmYzVmM2YKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHJvamVjdFZpZXcvdXBkYXRlUHJvamVjdFZpZXcvc3JjL2NvbS9wYWNrYWdlMS9DbGFzczEuamF2YQpAQCAtMCwwICsxLDQgQEAKK3BhY2thZ2UgY29tLnBhY2thZ2UxOworCitwdWJsaWMgY2xhc3MgQ2xhc3MxIHsKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wcm9qZWN0Vmlldy91cGRhdGVQcm9qZWN0Vmlldy9zcmMvY29tL3BhY2thZ2UxL0NsYXNzMi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3Byb2plY3RWaWV3L3VwZGF0ZVByb2plY3RWaWV3L3NyYy9jb20vcGFja2FnZTEvQ2xhc3MyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDBjODkzYwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wcm9qZWN0Vmlldy91cGRhdGVQcm9qZWN0Vmlldy9zcmMvY29tL3BhY2thZ2UxL0NsYXNzMi5qYXZhCkBAIC0wLDAgKzEsOCBAQAorcGFja2FnZSBjb20ucGFja2FnZTE7CisKK3B1YmxpYyBjbGFzcyBDbGFzczIgeworfQorCitjbGFzcyBDbGFzczMgeworCit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHJvamVjdFZpZXcvdXBkYXRlUHJvamVjdFZpZXcvc3JjL2NvbS9wYWNrYWdlMS9DbGFzczQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wcm9qZWN0Vmlldy91cGRhdGVQcm9qZWN0Vmlldy9zcmMvY29tL3BhY2thZ2UxL0NsYXNzNC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjczZWViOTMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHJvamVjdFZpZXcvdXBkYXRlUHJvamVjdFZpZXcvc3JjL2NvbS9wYWNrYWdlMS9DbGFzczQuamF2YQpAQCAtMCwwICsxLDQgQEAKK3BhY2thZ2UgY29tLnBhY2thZ2UxOworCitwdWJsaWMgQ2xhc3M0IHsKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wcm9qZWN0Vmlldy91cGRhdGVQcm9qZWN0Vmlldy9zcmMvY29tL3BhY2thZ2UxL0Zvcm0xLmZvcm0gYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHJvamVjdFZpZXcvdXBkYXRlUHJvamVjdFZpZXcvc3JjL2NvbS9wYWNrYWdlMS9Gb3JtMS5mb3JtCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE0MDdmZmUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHJvamVjdFZpZXcvdXBkYXRlUHJvamVjdFZpZXcvc3JjL2NvbS9wYWNrYWdlMS9Gb3JtMS5mb3JtCkBAIC0wLDAgKzEsMiBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxmb3JtIHhtbG5zPSJodHRwOi8vd3d3LmludGVsbGlqLmNvbS91aWRlc2lnbmVyL2Zvcm0vIiB2ZXJzaW9uPSIxIiBiaW5kLXRvLWNsYXNzPSJjb20ucGFja2FnZTEuRm9ybTEiLz4KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wcm9qZWN0Vmlldy91cGRhdGVQcm9qZWN0Vmlldy9zcmMvY29tL3BhY2thZ2UxL0Zvcm0xLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHJvamVjdFZpZXcvdXBkYXRlUHJvamVjdFZpZXcvc3JjL2NvbS9wYWNrYWdlMS9Gb3JtMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI0ZmIwYWQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHJvamVjdFZpZXcvdXBkYXRlUHJvamVjdFZpZXcvc3JjL2NvbS9wYWNrYWdlMS9Gb3JtMS5qYXZhCkBAIC0wLDAgKzEsNCBAQAorcGFja2FnZSBjb20ucGFja2FnZTE7CisKK3B1YmxpYyBjbGFzcyBGb3JtMSB7Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHJvamVjdFZpZXcvdXBkYXRlUHJvamVjdFZpZXcvc3JjL2NvbS9wYWNrYWdlMS9Gb3JtMi5mb3JtIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3Byb2plY3RWaWV3L3VwZGF0ZVByb2plY3RWaWV3L3NyYy9jb20vcGFja2FnZTEvRm9ybTIuZm9ybQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MzUzNWY1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3Byb2plY3RWaWV3L3VwZGF0ZVByb2plY3RWaWV3L3NyYy9jb20vcGFja2FnZTEvRm9ybTIuZm9ybQpAQCAtMCwwICsxLDIgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8Zm9ybSB2ZXJzaW9uPSIxIiB4bWxucz0iaHR0cDovL3d3dy5pbnRlbGxpai5jb20vdWlkZXNpZ25lci9mb3JtLyIvPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wcm9qZWN0Vmlldy91cGRhdGluZ0FmdGVyUmVuYW1lL3NyYy9jb20vcGFja2FnZTEvQ2xhc3MyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHJvamVjdFZpZXcvdXBkYXRpbmdBZnRlclJlbmFtZS9zcmMvY29tL3BhY2thZ2UxL0NsYXNzMi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU2OWRlMjkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHJvamVjdFZpZXcvdXBkYXRpbmdBZnRlclJlbmFtZS9zcmMvY29tL3BhY2thZ2UxL0NsYXNzMi5qYXZhCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHJvamVjdFZpZXcvdXBkYXRpbmdBZnRlclJlbmFtZS9zcmMvY29tL3BhY2thZ2UxL0Zvcm0xLmZvcm0gYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHJvamVjdFZpZXcvdXBkYXRpbmdBZnRlclJlbmFtZS9zcmMvY29tL3BhY2thZ2UxL0Zvcm0xLmZvcm0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTY5ZGUyOQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wcm9qZWN0Vmlldy91cGRhdGluZ0FmdGVyUmVuYW1lL3NyYy9jb20vcGFja2FnZTEvRm9ybTEuZm9ybQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3Byb2plY3RWaWV3L3VwZGF0aW5nQWZ0ZXJSZW5hbWUvc3JjL2NvbS9wYWNrYWdlMS9Gb3JtMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3Byb2plY3RWaWV3L3VwZGF0aW5nQWZ0ZXJSZW5hbWUvc3JjL2NvbS9wYWNrYWdlMS9Gb3JtMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU2OWRlMjkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHJvamVjdFZpZXcvdXBkYXRpbmdBZnRlclJlbmFtZS9zcmMvY29tL3BhY2thZ2UxL0Zvcm0xLmphdmEKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wcm9qZWN0Vmlldy91cGRhdGluZ0FmdGVyUmVuYW1lL3NyYy9jb20vcGFja2FnZTEvRm9ybTIuZm9ybSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wcm9qZWN0Vmlldy91cGRhdGluZ0FmdGVyUmVuYW1lL3NyYy9jb20vcGFja2FnZTEvRm9ybTIuZm9ybQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNjlkZTI5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3Byb2plY3RWaWV3L3VwZGF0aW5nQWZ0ZXJSZW5hbWUvc3JjL2NvbS9wYWNrYWdlMS9Gb3JtMi5mb3JtCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHJvamVjdFZpZXcveG1sU3RydWN0dXJlVmlldy9maWxlMS5kdGQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHJvamVjdFZpZXcveG1sU3RydWN0dXJlVmlldy9maWxlMS5kdGQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWEzNDU1NTcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHJvamVjdFZpZXcveG1sU3RydWN0dXJlVmlldy9maWxlMS5kdGQKQEAgLTAsMCArMSwyMSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iSVNPLTg4NTktMSI/PgorPCFFTEVNRU5UIG15cGx1Z2luIChoZWxwc2V0KT4KKzwhQVRUTElTVCBteXBsdWdpbgorICAgIHVybCBDREFUQSAjSU1QTElFRAorICAgIHZlcnNpb24gQ0RBVEEgI0lNUExJRUQ+Cis8IUVMRU1FTlQgaGVscHNldCBFTVBUWT4KKzwhQVRUTElTVCBoZWxwc2V0CisgIGZpbGUgQ0RBVEEgI1JFUVVJUkVECisgIHBhdGggQ0RBVEEgI1JFUVVJUkVEPgorCis8IUVOVElUWSAlIGRyYWZ0ICdJR05PUkUnPgorIDwhRU5USVRZICUgZmluYWwgJ0lOQ0xVREUnPgorCis8IVslZHJhZnQ7WworPCFFTEVNRU5UIGJvb2sgKGNvbW1lbnRzKiwgdGl0bGUsIGJvZHksIHN1cHBsZW1lbnRzPyk+Cis8IUVMRU1FTlQgY29tbWVudHMgRU1QVFk+CitdXT4KKzwhWyVmaW5hbDtbCis8IUVMRU1FTlQgYm9vayAocHJpY2UsdGl0bGUsIGJvZHksIHN1cHBsZW1lbnRzPyk+Cis8IUVMRU1FTlQgcHJpY2UgRU1QVFk+CitdXT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHJvamVjdFZpZXcveG1sU3RydWN0dXJlVmlldy9maWxlMS5odG1sIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3Byb2plY3RWaWV3L3htbFN0cnVjdHVyZVZpZXcvZmlsZTEuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45OGRmZjc1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3Byb2plY3RWaWV3L3htbFN0cnVjdHVyZVZpZXcvZmlsZTEuaHRtbApAQCAtMCwwICsxLDExIEBACis8SEVBRD4KKzxUSVRMRT5DU1MgRXhhbXBsZTwvVElUTEU+Cis8U1RZTEUgVFlQRT0idGV4dC9jc3MiPgorICBIMSB7IGZvbnQtc2l6ZTogeC1sYXJnZTsgY29sb3I6IHJlZCB9CisgIEgyIHsgZm9udC1zaXplOiBsYXJnZTsgY29sb3I6IGJsdWUgfQorPC9TVFlMRT4KKzxCT0RZPgorICA8UD50ZXh0CisgIDxCUj50ZXh0MgorPC9CT0RZPgorPC9IRUFEPgpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3Byb2plY3RWaWV3L3htbFN0cnVjdHVyZVZpZXcvZmlsZTEueG1sIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3Byb2plY3RWaWV3L3htbFN0cnVjdHVyZVZpZXcvZmlsZTEueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ1OGZiMGUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHJvamVjdFZpZXcveG1sU3RydWN0dXJlVmlldy9maWxlMS54bWwKQEAgLTAsMCArMSwxMSBAQAorPHJvb3QgbmFtZT0iSURFQV9aS00iIGRlZmF1bHQ9ImFsbF9kaXN0IiBiYXNlZGlyPSIuIj4KKyAgPGEgYXR0cjE9InZhbHVlMSIgYXR0cjI9InZhbHVlMiI+CisgICAgdGV4dAorICAgIDxhIGF0dHIxPSJ2YWx1ZTEiIGF0dHIyPSJ2YWx1ZTIiPgorICAgICAgdGV4dDIKKyAgICA8dGV4dD48IVtDREFUQVtUZXh0IHdpdGgKK2EgbmV3IGxpbmVdXT48L3RleHQ+ICAgICAgCisgICAgICA8Yi8+CisgICAgPC9hPgorICA8L2E+Cis8L3Jvb3Q+CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHJvamVjdFZpZXcveG1sU3RydWN0dXJlVmlldy9maWxlMi5kdGQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHJvamVjdFZpZXcveG1sU3RydWN0dXJlVmlldy9maWxlMi5kdGQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2RiYWE1NAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wcm9qZWN0Vmlldy94bWxTdHJ1Y3R1cmVWaWV3L2ZpbGUyLmR0ZApAQCAtMCwwICsxLDQgQEAKKzwhRU5USVRZICUgSFRNTGxhdDEgUFVCTElDCisgICItLy9XM0MvL0VOVElUSUVTIExhdGluIDEgZm9yIFhIVE1MLy9FTiIKKyAgInhodG1sLWxhdDEtbW9kaWZpZWQuZW50Ij4KKyVIVE1MbGF0MTsKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wcm9qZWN0Vmlldy94bWxTdHJ1Y3R1cmVWaWV3L2ZpbGUyLnhtbCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wcm9qZWN0Vmlldy94bWxTdHJ1Y3R1cmVWaWV3L2ZpbGUyLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MjMwNmJjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3Byb2plY3RWaWV3L3htbFN0cnVjdHVyZVZpZXcvZmlsZTIueG1sCkBAIC0wLDAgKzEsOCBAQAorPCFET0NUWVBFIHRpdGxlIAorICBbCis8IUVMRU1FTlQgdGl0bGUgKCNQQ0RBVEEgfCBib2R5KSogPgorPCFFTEVNRU5UIGJvZHkgRU1QVFk+Cis8IUVMRU1FTlQgc3VwcGxlbWVudHMgRU1QVFk+CisgIF0+CisKKzx0aXRsZS8+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3Byb2plY3RWaWV3L3htbFN0cnVjdHVyZVZpZXcveGh0bWwtbGF0MS1tb2RpZmllZC5lbnQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHJvamVjdFZpZXcveG1sU3RydWN0dXJlVmlldy94aHRtbC1sYXQxLW1vZGlmaWVkLmVudApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMmJlZTc3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3Byb2plY3RWaWV3L3htbFN0cnVjdHVyZVZpZXcveGh0bWwtbGF0MS1tb2RpZmllZC5lbnQKQEAgLTAsMCArMSwyIEBACis8IUVOVElUWSBuYnNwICAgIiYjMTYwOyI+IDwhLS0gbm8tYnJlYWsgc3BhY2UgPSBub24tYnJlYWtpbmcgc3BhY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVSswMEEwIElTT251bSAtLT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2FycmF5SW5kZXhPdXRPZkJvdW5kcy9zcmMvYmxhL0JsYS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9hcnJheUluZGV4T3V0T2ZCb3VuZHMvc3JjL2JsYS9CbGEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYjA5NTVjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9hcnJheUluZGV4T3V0T2ZCb3VuZHMvc3JjL2JsYS9CbGEuamF2YQpAQCAtMCwwICsxLDQgQEAKK3BhY2thZ2UgYmxhOworCitwdWJsaWMgY2xhc3MgQmxhIHsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2FycmF5SW5kZXhPdXRPZkJvdW5kcy9zcmMvYmxhL0JsdS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9hcnJheUluZGV4T3V0T2ZCb3VuZHMvc3JjL2JsYS9CbHUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMzI4M2IyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9hcnJheUluZGV4T3V0T2ZCb3VuZHMvc3JjL2JsYS9CbHUuamF2YQpAQCAtMCwwICsxLDQgQEAKK3BhY2thZ2UgYmxhOworCitwdWJsaWMgY2xhc3MgQmx1IHsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2NsYXNzVXRpbC9NYW55Q2xhc3Nlcy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9jbGFzc1V0aWwvTWFueUNsYXNzZXMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NjFkZmI0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9jbGFzc1V0aWwvTWFueUNsYXNzZXMuamF2YQpAQCAtMCwwICsxLDQ3IEBACitpbXBvcnQgamF2YS5sYW5nLkNvbXBhcmFibGU7CitpbXBvcnQgamF2YS5sYW5nLkludGVnZXI7CitpbXBvcnQgamF2YS5sYW5nLk92ZXJyaWRlOworaW1wb3J0IGphdmEubGFuZy5SdW5uYWJsZTsKKworcHVibGljIGNsYXNzIE1hbnlDbGFzc2VzIHsKKyAgcHVibGljIHZvaWQgZm9vKCkgeworICAgIFJ1bm5hYmxlIHIgPSBuZXcgUnVubmFibGUoKSB7CisgICAgICBAT3ZlcnJpZGUKKyAgICAgIHB1YmxpYyB2b2lkIHJ1bigpIHsKKyAgICAgICAgQ29tcGFyYWJsZTxJbnRlZ2VyPiBjID0gbmV3IENvbXBhcmFibGU8SW50ZWdlcj4oKSB7CisgICAgICAgICAgQE92ZXJyaWRlCisgICAgICAgICAgcHVibGljIGludCBjb21wYXJlVG8oSW50ZWdlciBvKSB7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICB9CisgICAgICAgIH07CisgICAgICB9CisgICAgfTsKKyAgICAKKyAgICBjbGFzcyBGb29Mb2NhbCB7CisgICAgICBSdW5uYWJsZSByID0gbmV3IFJ1bm5hYmxlKCkgeworICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHVibGljIHZvaWQgcnVuKCkgeworICAgICAgICB9CisgICAgICB9OworICAgIH0KKyAgfQorICAKKyAgcHVibGljIHZvaWQgYmFyKCkgeworICAgIGNsYXNzIEZvb0xvY2FsIGltcGxlbWVudHMgUnVubmFibGUgeworICAgICAgQE92ZXJyaWRlCisgICAgICBwdWJsaWMgdm9pZCBydW4oKSB7CisgICAgICB9CisgICAgfQorICB9CisgIAorICBwdWJsaWMgY2xhc3MgQ2hpbGQgeworICAgIAorICB9CisgIAorfQorCitjbGFzcyBMb2NhbCB7CisgIHB1YmxpYyBzdGF0aWMgY2xhc3MgU3ViIHsKKworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9jbHMvMS9UZXN0Q2xhc3MuY2xhc3MgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2Nscy8xL1Rlc3RDbGFzcy5jbGFzcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZmU5MmVlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9jbHMvMS9UZXN0Q2xhc3MuY2xhc3MKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9jbHMvMi9UZXN0Q2xhc3MuY2xhc3MgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2Nscy8yL1Rlc3RDbGFzcy5jbGFzcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMTdjMmI1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9jbHMvMi9UZXN0Q2xhc3MuY2xhc3MKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9jbHMvbWlycm9yLyRCdWNrQ2xhc3MudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9jbHMvbWlycm9yLyRCdWNrQ2xhc3MudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ5NGY2ZTMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2Nscy9taXJyb3IvJEJ1Y2tDbGFzcy50eHQKQEAgLTAsMCArMSwxMSBAQAorCisgIC8vIEludGVsbGlKIEFQSSBEZWNvbXBpbGVyIHN0dWIgc291cmNlIGdlbmVyYXRlZCBmcm9tIGEgY2xhc3MgZmlsZQorICAvLyBJbXBsZW1lbnRhdGlvbiBvZiBtZXRob2RzIGlzIG5vdCBhdmFpbGFibGUKKworcGFja2FnZSBwa2c7CisKK2NsYXNzICRCdWNrQ2xhc3MgeworICAgICRCdWNrQ2xhc3MoKSB7IC8qIGNvbXBpbGVkIGNvZGUgKi8gfQorCisgICAgc3RhdGljIHBrZy4kQnVja0NsYXNzIGdldEluc3RhbmNlKCkgeyAvKiBjb21waWxlZCBjb2RlICovIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvY2xzL21pcnJvci9Bbm5vdGF0aW9ucy50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2Nscy9taXJyb3IvQW5ub3RhdGlvbnMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjliYmUzODQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2Nscy9taXJyb3IvQW5ub3RhdGlvbnMudHh0CkBAIC0wLDAgKzEsNTggQEAKKworICAvLyBJbnRlbGxpSiBBUEkgRGVjb21waWxlciBzdHViIHNvdXJjZSBnZW5lcmF0ZWQgZnJvbSBhIGNsYXNzIGZpbGUKKyAgLy8gSW1wbGVtZW50YXRpb24gb2YgbWV0aG9kcyBpcyBub3QgYXZhaWxhYmxlCisKK3BhY2thZ2UgcGtnOworCithYnN0cmFjdCBjbGFzcyBBbm5vdGF0aW9ucyB7CisgICAgQW5ub3RhdGlvbnMoKSB7IC8qIGNvbXBpbGVkIGNvZGUgKi8gfQorCisgICAgQHBrZy5Bbm5vdGF0aW9ucy5BMQorICAgIGFic3RyYWN0IHZvaWQgbTEoKTsKKworICAgIEBwa2cuQW5ub3RhdGlvbnMuQTIKKyAgICBhYnN0cmFjdCB2b2lkIG0yYSgpOworCisgICAgQHBrZy5Bbm5vdGF0aW9ucy5BMigiKyIpCisgICAgYWJzdHJhY3Qgdm9pZCBtMmIoKTsKKworICAgIEBwa2cuQW5ub3RhdGlvbnMuQTMoYTEgPSBAcGtnLkFubm90YXRpb25zLkExLCBhMiA9IEBwa2cuQW5ub3RhdGlvbnMuQTIpCisgICAgYWJzdHJhY3Qgdm9pZCBtMygpOworCisgICAgQHBrZy5Bbm5vdGF0aW9ucy5BNAorICAgIGFic3RyYWN0IHZvaWQgbTRhKCk7CisKKyAgICBAcGtnLkFubm90YXRpb25zLkE0KGlkcyA9IHs0MiwgODR9KQorICAgIGFic3RyYWN0IHZvaWQgbTRiKCk7CisKKyAgICBzdGF0aWMgQGludGVyZmFjZSBJbmRldGVybWluYXRlQW5ubyB7CisgICAgICAgIGZsb2F0IGYxKCkgZGVmYXVsdCAtMS4wZiAvIDAuMDsKKworICAgICAgICBmbG9hdCBmMigpIGRlZmF1bHQgMC4wZiAvIDAuMDsKKworICAgICAgICBmbG9hdCBmMygpIGRlZmF1bHQgMS4wZiAvIDAuMDsKKworICAgICAgICBkb3VibGUgZDEoKSBkZWZhdWx0IC0xLjAgLyAwLjA7CisKKyAgICAgICAgZG91YmxlIGQyKCkgZGVmYXVsdCAwLjBkIC8gMC4wOworCisgICAgICAgIGRvdWJsZSBkMygpIGRlZmF1bHQgMS4wIC8gMC4wOworICAgIH0KKworICAgIHN0YXRpYyBAaW50ZXJmYWNlIEE0IHsKKyAgICAgICAgaW50W10gaWRzKCkgZGVmYXVsdCB7fTsKKyAgICB9CisKKyAgICBzdGF0aWMgQGludGVyZmFjZSBBMyB7CisgICAgICAgIHBrZy5Bbm5vdGF0aW9ucy5BMSBhMSgpOworCisgICAgICAgIHBrZy5Bbm5vdGF0aW9ucy5BMiBhMigpOworICAgIH0KKworICAgIHN0YXRpYyBAaW50ZXJmYWNlIEEyIHsKKyAgICAgICAgamF2YS5sYW5nLlN0cmluZyB2YWx1ZSgpIGRlZmF1bHQgIi0iOworICAgIH0KKworICAgIHN0YXRpYyBAaW50ZXJmYWNlIEExIHsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9jbHMvbWlycm9yL0J1Y2tDbGFzcyQudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9jbHMvbWlycm9yL0J1Y2tDbGFzcyQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQzZjVhMGIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2Nscy9taXJyb3IvQnVja0NsYXNzJC50eHQKQEAgLTAsMCArMSwxMSBAQAorCisgIC8vIEludGVsbGlKIEFQSSBEZWNvbXBpbGVyIHN0dWIgc291cmNlIGdlbmVyYXRlZCBmcm9tIGEgY2xhc3MgZmlsZQorICAvLyBJbXBsZW1lbnRhdGlvbiBvZiBtZXRob2RzIGlzIG5vdCBhdmFpbGFibGUKKworcGFja2FnZSBwa2c7CisKK2NsYXNzIEJ1Y2tDbGFzcyQgeworICAgIEJ1Y2tDbGFzcyQoKSB7IC8qIGNvbXBpbGVkIGNvZGUgKi8gfQorCisgICAgc3RhdGljIHBrZy5CdWNrQ2xhc3MkIGdldEluc3RhbmNlKCkgeyAvKiBjb21waWxlZCBjb2RlICovIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2Nscy9taXJyb3IvRGVwcmVjYXRlZC50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2Nscy9taXJyb3IvRGVwcmVjYXRlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWZhMzNmYgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvY2xzL21pcnJvci9EZXByZWNhdGVkLnR4dApAQCAtMCwwICsxLDIyIEBACisKKyAgLy8gSW50ZWxsaUogQVBJIERlY29tcGlsZXIgc3R1YiBzb3VyY2UgZ2VuZXJhdGVkIGZyb20gYSBjbGFzcyBmaWxlCisgIC8vIEltcGxlbWVudGF0aW9uIG9mIG1ldGhvZHMgaXMgbm90IGF2YWlsYWJsZQorCitwYWNrYWdlIHBrZzsKKworLyoqCisgKiBAZGVwcmVjYXRlZAorICovCitjbGFzcyBEZXByZWNhdGVkIHsKKyAgICAvKioKKyAgICAgKiBAZGVwcmVjYXRlZAorICAgICAqLworICAgIGludCBmOworCisgICAgRGVwcmVjYXRlZCgpIHsgLyogY29tcGlsZWQgY29kZSAqLyB9CisKKyAgICAvKioKKyAgICAgKiBAZGVwcmVjYXRlZAorICAgICAqLworICAgIHZvaWQgbSgpIHsgLyogY29tcGlsZWQgY29kZSAqLyB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9jbHMvbWlycm9yL0VBNDA1NjgudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9jbHMvbWlycm9yL0VBNDA1NjgudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZiODJkODEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2Nscy9taXJyb3IvRUE0MDU2OC50eHQKQEAgLTAsMCArMSwzMSBAQAorCisgIC8vIEludGVsbGlKIEFQSSBEZWNvbXBpbGVyIHN0dWIgc291cmNlIGdlbmVyYXRlZCBmcm9tIGEgY2xhc3MgZmlsZQorICAvLyBJbXBsZW1lbnRhdGlvbiBvZiBtZXRob2RzIGlzIG5vdCBhdmFpbGFibGUKKworcGFja2FnZSBjb20uZ29vZ2xlLmFuZHJvaWQubWFwczsKKworcHVibGljIGNsYXNzIE92ZXJsYXlJdGVtIHsKKyAgICBwcm90ZWN0ZWQgZmluYWwgY29tLmdvb2dsZS5hbmRyb2lkLm1hcHMuR2VvUG9pbnQgbVBvaW50OworICAgIHByb3RlY3RlZCBmaW5hbCBqYXZhLmxhbmcuU3RyaW5nIG1UaXRsZTsKKyAgICBwcm90ZWN0ZWQgZmluYWwgamF2YS5sYW5nLlN0cmluZyBtU25pcHBldDsKKyAgICBwcm90ZWN0ZWQgYW5kcm9pZC5ncmFwaGljcy5kcmF3YWJsZS5EcmF3YWJsZSBtTWFya2VyOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IElURU1fU1RBVEVfRk9DVVNFRF9NQVNLID0gNDsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBJVEVNX1NUQVRFX1NFTEVDVEVEX01BU0sgPSAyOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IElURU1fU1RBVEVfUFJFU1NFRF9NQVNLID0gMTsKKworICAgIHB1YmxpYyBPdmVybGF5SXRlbShjb20uZ29vZ2xlLmFuZHJvaWQubWFwcy5HZW9Qb2ludCBnZW9Qb2ludCwgamF2YS5sYW5nLlN0cmluZyBzLCBqYXZhLmxhbmcuU3RyaW5nIHMxKSB7IC8qIGNvbXBpbGVkIGNvZGUgKi8gfQorCisgICAgcHVibGljIHZvaWQgc2V0TWFya2VyKGFuZHJvaWQuZ3JhcGhpY3MuZHJhd2FibGUuRHJhd2FibGUgZHJhd2FibGUpIHsgLyogY29tcGlsZWQgY29kZSAqLyB9CisKKyAgICBwdWJsaWMgYW5kcm9pZC5ncmFwaGljcy5kcmF3YWJsZS5EcmF3YWJsZSBnZXRNYXJrZXIoaW50IGkpIHsgLyogY29tcGlsZWQgY29kZSAqLyB9CisKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgc2V0U3RhdGUoYW5kcm9pZC5ncmFwaGljcy5kcmF3YWJsZS5EcmF3YWJsZSBkcmF3YWJsZSwgaW50IGkpIHsgLyogY29tcGlsZWQgY29kZSAqLyB9CisKKyAgICBwdWJsaWMgamF2YS5sYW5nLlN0cmluZyBnZXRUaXRsZSgpIHsgLyogY29tcGlsZWQgY29kZSAqLyB9CisKKyAgICBwdWJsaWMgamF2YS5sYW5nLlN0cmluZyBnZXRTbmlwcGV0KCkgeyAvKiBjb21waWxlZCBjb2RlICovIH0KKworICAgIHB1YmxpYyBjb20uZ29vZ2xlLmFuZHJvaWQubWFwcy5HZW9Qb2ludCBnZXRQb2ludCgpIHsgLyogY29tcGlsZWQgY29kZSAqLyB9CisKKyAgICBwdWJsaWMgamF2YS5sYW5nLlN0cmluZyByb3V0YWJsZUFkZHJlc3MoKSB7IC8qIGNvbXBpbGVkIGNvZGUgKi8gfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvY2xzL21pcnJvci9FbXB0eUVudW0udHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9jbHMvbWlycm9yL0VtcHR5RW51bS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODA4Y2M1NQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvY2xzL21pcnJvci9FbXB0eUVudW0udHh0CkBAIC0wLDAgKzEsMTUgQEAKKworICAvLyBJbnRlbGxpSiBBUEkgRGVjb21waWxlciBzdHViIHNvdXJjZSBnZW5lcmF0ZWQgZnJvbSBhIGNsYXNzIGZpbGUKKyAgLy8gSW1wbGVtZW50YXRpb24gb2YgbWV0aG9kcyBpcyBub3QgYXZhaWxhYmxlCisKK3BhY2thZ2UgcGtnOworCitlbnVtIEVtcHR5RW51bSB7CisgICAgOworCisgICAgcHVibGljIHN0YXRpYyBwa2cuRW1wdHlFbnVtW10gdmFsdWVzKCkgeyAvKiBjb21waWxlZCBjb2RlICovIH0KKworICAgIHB1YmxpYyBzdGF0aWMgcGtnLkVtcHR5RW51bSB2YWx1ZU9mKGphdmEubGFuZy5TdHJpbmcgcykgeyAvKiBjb21waWxlZCBjb2RlICovIH0KKworICAgIHByaXZhdGUgRW1wdHlFbnVtKCkgeyAvKiBjb21waWxlZCBjb2RlICovIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2Nscy9taXJyb3IvRW51bVdpdGhGaWVsZHMudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9jbHMvbWlycm9yL0VudW1XaXRoRmllbGRzLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ODIzZjEwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9jbHMvbWlycm9yL0VudW1XaXRoRmllbGRzLnR4dApAQCAtMCwwICsxLDE4IEBACisKKyAgLy8gSW50ZWxsaUogQVBJIERlY29tcGlsZXIgc3R1YiBzb3VyY2UgZ2VuZXJhdGVkIGZyb20gYSBjbGFzcyBmaWxlCisgIC8vIEltcGxlbWVudGF0aW9uIG9mIG1ldGhvZHMgaXMgbm90IGF2YWlsYWJsZQorCitwYWNrYWdlIHBrZzsKKworcHVibGljIGVudW0gRW51bVdpdGhGaWVsZHMgeworICAgIEUxLCBFMjsKKworICAgIHByaXZhdGUgYm9vbGVhbiBmMTsKKyAgICBzdGF0aWMgYm9vbGVhbiBmMjsKKworICAgIHB1YmxpYyBzdGF0aWMgcGtnLkVudW1XaXRoRmllbGRzW10gdmFsdWVzKCkgeyAvKiBjb21waWxlZCBjb2RlICovIH0KKworICAgIHB1YmxpYyBzdGF0aWMgcGtnLkVudW1XaXRoRmllbGRzIHZhbHVlT2YoamF2YS5sYW5nLlN0cmluZyBzKSB7IC8qIGNvbXBpbGVkIGNvZGUgKi8gfQorCisgICAgcHJpdmF0ZSBFbnVtV2l0aEZpZWxkcygpIHsgLyogY29tcGlsZWQgY29kZSAqLyB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9jbHMvbWlycm9yL0V4dE1ldGhvZHMudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9jbHMvbWlycm9yL0V4dE1ldGhvZHMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU1ZjllNTQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2Nscy9taXJyb3IvRXh0TWV0aG9kcy50eHQKQEAgLTAsMCArMSwxMSBAQAorCisgIC8vIEludGVsbGlKIEFQSSBEZWNvbXBpbGVyIHN0dWIgc291cmNlIGdlbmVyYXRlZCBmcm9tIGEgY2xhc3MgZmlsZQorICAvLyBJbXBsZW1lbnRhdGlvbiBvZiBtZXRob2RzIGlzIG5vdCBhdmFpbGFibGUKKworcGFja2FnZSBwa2c7CisKK2ludGVyZmFjZSBFeHRNZXRob2RzIHsKKyAgICB2b2lkIG0xKCk7CisKKyAgICBkZWZhdWx0IHZvaWQgbTIoKSB7IC8qIGNvbXBpbGVkIGNvZGUgKi8gfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9jbHMvbWlycm9yL01ldGhvZFJlY2VpdmVyLnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvY2xzL21pcnJvci9NZXRob2RSZWNlaXZlci50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzViN2ZjNQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvY2xzL21pcnJvci9NZXRob2RSZWNlaXZlci50eHQKQEAgLTAsMCArMSwxNCBAQAorCisgIC8vIEludGVsbGlKIEFQSSBEZWNvbXBpbGVyIHN0dWIgc291cmNlIGdlbmVyYXRlZCBmcm9tIGEgY2xhc3MgZmlsZQorICAvLyBJbXBsZW1lbnRhdGlvbiBvZiBtZXRob2RzIGlzIG5vdCBhdmFpbGFibGUKKworcGFja2FnZSBwa2c7CisKK2NsYXNzIE1ldGhvZFJlY2VpdmVyIHsKKyAgICBNZXRob2RSZWNlaXZlcigpIHsgLyogY29tcGlsZWQgY29kZSAqLyB9CisKKyAgICB2b2lkIG0oaW50IGkpIHsgLyogY29tcGlsZWQgY29kZSAqLyB9CisKKyAgICBzdGF0aWMgQGludGVyZmFjZSBBIHsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9jbHMvbWlycm9yL05lc3RlZC50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2Nscy9taXJyb3IvTmVzdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MjJjZGMxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9jbHMvbWlycm9yL05lc3RlZC50eHQKQEAgLTAsMCArMSwxNyBAQAorCisgIC8vIEludGVsbGlKIEFQSSBEZWNvbXBpbGVyIHN0dWIgc291cmNlIGdlbmVyYXRlZCBmcm9tIGEgY2xhc3MgZmlsZQorICAvLyBJbXBsZW1lbnRhdGlvbiBvZiBtZXRob2RzIGlzIG5vdCBhdmFpbGFibGUKKworcGFja2FnZSBwa2c7CisKK3B1YmxpYyBjbGFzcyBOZXN0ZWQgeworICAgIHB1YmxpYyBOZXN0ZWQoKSB7IC8qIGNvbXBpbGVkIGNvZGUgKi8gfQorCisgICAgcHVibGljIHN0YXRpYyBjbGFzcyBJbm5lcjEgeworICAgICAgICBwdWJsaWMgSW5uZXIxKCkgeyAvKiBjb21waWxlZCBjb2RlICovIH0KKworICAgICAgICBwdWJsaWMgY2xhc3MgSW5uZXIyIHsKKyAgICAgICAgICAgIHB1YmxpYyBJbm5lcjIoKSB7IC8qIGNvbXBpbGVkIGNvZGUgKi8gfQorICAgICAgICB9CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvY2xzL21pcnJvci9Ob3JtYWxDbGFzcy50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2Nscy9taXJyb3IvTm9ybWFsQ2xhc3MudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgyNTMyY2UKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2Nscy9taXJyb3IvTm9ybWFsQ2xhc3MudHh0CkBAIC0wLDAgKzEsMTcgQEAKKworICAvLyBJbnRlbGxpSiBBUEkgRGVjb21waWxlciBzdHViIHNvdXJjZSBnZW5lcmF0ZWQgZnJvbSBhIGNsYXNzIGZpbGUKKyAgLy8gSW1wbGVtZW50YXRpb24gb2YgbWV0aG9kcyBpcyBub3QgYXZhaWxhYmxlCisKK3BhY2thZ2UgcGtnOworCitjbGFzcyBOb3JtYWxDbGFzcyB7CisgICAgcHJpdmF0ZSBmaW5hbCBqYXZhLmxhbmcuT2JqZWN0IG87CisKKyAgICBOb3JtYWxDbGFzcygpIHsgLyogY29tcGlsZWQgY29kZSAqLyB9CisKKyAgICBqYXZhLmxhbmcuT2JqZWN0IGdldCgpIHsgLyogY29tcGlsZWQgY29kZSAqLyB9CisKKyAgICBwcml2YXRlIHN0YXRpYyBjbGFzcyBJbm5lciB7CisgICAgICAgIHByaXZhdGUgSW5uZXIoKSB7IC8qIGNvbXBpbGVkIGNvZGUgKi8gfQorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2Nscy9taXJyb3IvUGFyYW1ldGVyTmFtZXMudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9jbHMvbWlycm9yL1BhcmFtZXRlck5hbWVzLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MWU2ZDQ2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9jbHMvbWlycm9yL1BhcmFtZXRlck5hbWVzLnR4dApAQCAtMCwwICsxLDEzIEBACisKKyAgLy8gSW50ZWxsaUogQVBJIERlY29tcGlsZXIgc3R1YiBzb3VyY2UgZ2VuZXJhdGVkIGZyb20gYSBjbGFzcyBmaWxlCisgIC8vIEltcGxlbWVudGF0aW9uIG9mIG1ldGhvZHMgaXMgbm90IGF2YWlsYWJsZQorCitwYWNrYWdlIHBrZzsKKworcHVibGljIGNsYXNzIFBhcmFtZXRlck5hbWVzIHsKKyAgICBwdWJsaWMgUGFyYW1ldGVyTmFtZXMoKSB7IC8qIGNvbXBpbGVkIGNvZGUgKi8gfQorCisgICAgcHVibGljIHZvaWQgdGVzdChpbnQgaSwgaW50IGkxLCBqYXZhLmxhbmcuU3RyaW5nIHMpIHsgLyogY29tcGlsZWQgY29kZSAqLyB9CisKKyAgICBwcml2YXRlIHZvaWQgdGVzdEltcGwoaW50IGksIGludCBpMSwgamF2YS5sYW5nLlN0cmluZyBzLCBib29sZWFuIGIpIHsgLyogY29tcGlsZWQgY29kZSAqLyB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9jbHMvbWlycm9yL1NpbXBsZUVudW0udHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9jbHMvbWlycm9yL1NpbXBsZUVudW0udHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY1NDc3MGEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2Nscy9taXJyb3IvU2ltcGxlRW51bS50eHQKQEAgLTAsMCArMSwxNSBAQAorCisgIC8vIEludGVsbGlKIEFQSSBEZWNvbXBpbGVyIHN0dWIgc291cmNlIGdlbmVyYXRlZCBmcm9tIGEgY2xhc3MgZmlsZQorICAvLyBJbXBsZW1lbnRhdGlvbiBvZiBtZXRob2RzIGlzIG5vdCBhdmFpbGFibGUKKworcGFja2FnZSBwa2c7CisKK3B1YmxpYyBlbnVtIFNpbXBsZUVudW0geworICAgIEUxLCBFMjsKKworICAgIHB1YmxpYyBzdGF0aWMgcGtnLlNpbXBsZUVudW1bXSB2YWx1ZXMoKSB7IC8qIGNvbXBpbGVkIGNvZGUgKi8gfQorCisgICAgcHVibGljIHN0YXRpYyBwa2cuU2ltcGxlRW51bSB2YWx1ZU9mKGphdmEubGFuZy5TdHJpbmcgcykgeyAvKiBjb21waWxlZCBjb2RlICovIH0KKworICAgIHByaXZhdGUgU2ltcGxlRW51bSgpIHsgLyogY29tcGlsZWQgY29kZSAqLyB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9jbHMvbWlycm9yL3BhY2thZ2UtaW5mby50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2Nscy9taXJyb3IvcGFja2FnZS1pbmZvLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YzI1YjlmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9jbHMvbWlycm9yL3BhY2thZ2UtaW5mby50eHQKQEAgLTAsMCArMSw5IEBACisKKyAgLy8gSW50ZWxsaUogQVBJIERlY29tcGlsZXIgc3R1YiBzb3VyY2UgZ2VuZXJhdGVkIGZyb20gYSBjbGFzcyBmaWxlCisgIC8vIEltcGxlbWVudGF0aW9uIG9mIG1ldGhvZHMgaXMgbm90IGF2YWlsYWJsZQorCitwYWNrYWdlIHBrZzsKKworQHBrZy5Qa2dBbm5vCitpbnRlcmZhY2UgJCRwYWNrYWdlLWluZm8gLyogUmVhbCBuYW1lIGlzICdwYWNrYWdlLWluZm8nICovIHsKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvY2xzL21pcnJvci9wa2cvJEJ1Y2tDbGFzcy5jbGFzcyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvY2xzL21pcnJvci9wa2cvJEJ1Y2tDbGFzcy5jbGFzcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YWM0ZjNiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9jbHMvbWlycm9yL3BrZy8kQnVja0NsYXNzLmNsYXNzCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvY2xzL21pcnJvci9wa2cvQW5ub3RhdGlvbnMkQTEuY2xhc3MgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2Nscy9taXJyb3IvcGtnL0Fubm90YXRpb25zJEExLmNsYXNzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYxMjA5NjAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2Nscy9taXJyb3IvcGtnL0Fubm90YXRpb25zJEExLmNsYXNzCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvY2xzL21pcnJvci9wa2cvQW5ub3RhdGlvbnMkQTIuY2xhc3MgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2Nscy9taXJyb3IvcGtnL0Fubm90YXRpb25zJEEyLmNsYXNzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhkOTRhZmUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2Nscy9taXJyb3IvcGtnL0Fubm90YXRpb25zJEEyLmNsYXNzCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvY2xzL21pcnJvci9wa2cvQW5ub3RhdGlvbnMkQTMuY2xhc3MgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2Nscy9taXJyb3IvcGtnL0Fubm90YXRpb25zJEEzLmNsYXNzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYzMGNmZDkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2Nscy9taXJyb3IvcGtnL0Fubm90YXRpb25zJEEzLmNsYXNzCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvY2xzL21pcnJvci9wa2cvQW5ub3RhdGlvbnMkQTQuY2xhc3MgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2Nscy9taXJyb3IvcGtnL0Fubm90YXRpb25zJEE0LmNsYXNzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA0MGE4NGMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2Nscy9taXJyb3IvcGtnL0Fubm90YXRpb25zJEE0LmNsYXNzCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvY2xzL21pcnJvci9wa2cvQW5ub3RhdGlvbnMkSW5kZXRlcm1pbmF0ZUFubm8uY2xhc3MgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2Nscy9taXJyb3IvcGtnL0Fubm90YXRpb25zJEluZGV0ZXJtaW5hdGVBbm5vLmNsYXNzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ3N2I0OTkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2Nscy9taXJyb3IvcGtnL0Fubm90YXRpb25zJEluZGV0ZXJtaW5hdGVBbm5vLmNsYXNzCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvY2xzL21pcnJvci9wa2cvQW5ub3RhdGlvbnMuY2xhc3MgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2Nscy9taXJyb3IvcGtnL0Fubm90YXRpb25zLmNsYXNzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAzZjFmNTIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2Nscy9taXJyb3IvcGtnL0Fubm90YXRpb25zLmNsYXNzCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvY2xzL21pcnJvci9wa2cvQnVja0NsYXNzJC5jbGFzcyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvY2xzL21pcnJvci9wa2cvQnVja0NsYXNzJC5jbGFzcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZjRkMmRlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9jbHMvbWlycm9yL3BrZy9CdWNrQ2xhc3MkLmNsYXNzCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvY2xzL21pcnJvci9wa2cvRGVwcmVjYXRlZC5jbGFzcyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvY2xzL21pcnJvci9wa2cvRGVwcmVjYXRlZC5jbGFzcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44OWU4N2Q1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9jbHMvbWlycm9yL3BrZy9EZXByZWNhdGVkLmNsYXNzCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvY2xzL21pcnJvci9wa2cvRUE0MDU2OC5jbGFzcyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvY2xzL21pcnJvci9wa2cvRUE0MDU2OC5jbGFzcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MmIzMmZkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9jbHMvbWlycm9yL3BrZy9FQTQwNTY4LmNsYXNzCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvY2xzL21pcnJvci9wa2cvRW1wdHlFbnVtLmNsYXNzIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9jbHMvbWlycm9yL3BrZy9FbXB0eUVudW0uY2xhc3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmZmZDE4OQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvY2xzL21pcnJvci9wa2cvRW1wdHlFbnVtLmNsYXNzCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvY2xzL21pcnJvci9wa2cvRW51bVdpdGhGaWVsZHMuY2xhc3MgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2Nscy9taXJyb3IvcGtnL0VudW1XaXRoRmllbGRzLmNsYXNzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA4OTIwZmYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2Nscy9taXJyb3IvcGtnL0VudW1XaXRoRmllbGRzLmNsYXNzCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvY2xzL21pcnJvci9wa2cvRXh0TWV0aG9kcy5jbGFzcyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvY2xzL21pcnJvci9wa2cvRXh0TWV0aG9kcy5jbGFzcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NDA0YzcxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9jbHMvbWlycm9yL3BrZy9FeHRNZXRob2RzLmNsYXNzCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvY2xzL21pcnJvci9wa2cvTWV0aG9kUmVjZWl2ZXIkQS5jbGFzcyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvY2xzL21pcnJvci9wa2cvTWV0aG9kUmVjZWl2ZXIkQS5jbGFzcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44OGZmMDJkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9jbHMvbWlycm9yL3BrZy9NZXRob2RSZWNlaXZlciRBLmNsYXNzCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvY2xzL21pcnJvci9wa2cvTWV0aG9kUmVjZWl2ZXIuY2xhc3MgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2Nscy9taXJyb3IvcGtnL01ldGhvZFJlY2VpdmVyLmNsYXNzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI1OGZkOGUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2Nscy9taXJyb3IvcGtnL01ldGhvZFJlY2VpdmVyLmNsYXNzCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvY2xzL21pcnJvci9wa2cvTmVzdGVkJElubmVyMSRJbm5lcjIuY2xhc3MgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2Nscy9taXJyb3IvcGtnL05lc3RlZCRJbm5lcjEkSW5uZXIyLmNsYXNzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc5ZmNhODcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2Nscy9taXJyb3IvcGtnL05lc3RlZCRJbm5lcjEkSW5uZXIyLmNsYXNzCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvY2xzL21pcnJvci9wa2cvTmVzdGVkJElubmVyMS5jbGFzcyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvY2xzL21pcnJvci9wa2cvTmVzdGVkJElubmVyMS5jbGFzcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MWIzMTRhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9jbHMvbWlycm9yL3BrZy9OZXN0ZWQkSW5uZXIxLmNsYXNzCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvY2xzL21pcnJvci9wa2cvTmVzdGVkLmNsYXNzIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9jbHMvbWlycm9yL3BrZy9OZXN0ZWQuY2xhc3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODU3NDk4ZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvY2xzL21pcnJvci9wa2cvTmVzdGVkLmNsYXNzCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvY2xzL21pcnJvci9wa2cvTm9ybWFsQ2xhc3MkMS5jbGFzcyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvY2xzL21pcnJvci9wa2cvTm9ybWFsQ2xhc3MkMS5jbGFzcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MzY5ZTViCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9jbHMvbWlycm9yL3BrZy9Ob3JtYWxDbGFzcyQxLmNsYXNzCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvY2xzL21pcnJvci9wa2cvTm9ybWFsQ2xhc3MkSW5uZXIuY2xhc3MgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2Nscy9taXJyb3IvcGtnL05vcm1hbENsYXNzJElubmVyLmNsYXNzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcxMzc1MTUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2Nscy9taXJyb3IvcGtnL05vcm1hbENsYXNzJElubmVyLmNsYXNzCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvY2xzL21pcnJvci9wa2cvTm9ybWFsQ2xhc3MuY2xhc3MgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2Nscy9taXJyb3IvcGtnL05vcm1hbENsYXNzLmNsYXNzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY4MThiNDkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2Nscy9taXJyb3IvcGtnL05vcm1hbENsYXNzLmNsYXNzCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvY2xzL21pcnJvci9wa2cvUGFyYW1ldGVyTmFtZXMuY2xhc3MgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2Nscy9taXJyb3IvcGtnL1BhcmFtZXRlck5hbWVzLmNsYXNzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRkOTI2MDEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2Nscy9taXJyb3IvcGtnL1BhcmFtZXRlck5hbWVzLmNsYXNzCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvY2xzL21pcnJvci9wa2cvUGtnQW5uby5jbGFzcyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvY2xzL21pcnJvci9wa2cvUGtnQW5uby5jbGFzcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MGNiYjU5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9jbHMvbWlycm9yL3BrZy9Qa2dBbm5vLmNsYXNzCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvY2xzL21pcnJvci9wa2cvU2ltcGxlRW51bS5jbGFzcyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvY2xzL21pcnJvci9wa2cvU2ltcGxlRW51bS5jbGFzcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMGYxZDA3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9jbHMvbWlycm9yL3BrZy9TaW1wbGVFbnVtLmNsYXNzCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvY2xzL21pcnJvci9wa2cvcGFja2FnZS1pbmZvLmNsYXNzIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9jbHMvbWlycm9yL3BrZy9wYWNrYWdlLWluZm8uY2xhc3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGZiYmVjZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvY2xzL21pcnJvci9wa2cvcGFja2FnZS1pbmZvLmNsYXNzCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvY2xzL21pcnJvci9zcmMvcGtnLyRCdWNrQ2xhc3MuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvY2xzL21pcnJvci9zcmMvcGtnLyRCdWNrQ2xhc3MuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNzczNmNjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9jbHMvbWlycm9yL3NyYy9wa2cvJEJ1Y2tDbGFzcy5qYXZhCkBAIC0wLDAgKzEsNSBAQAorcGFja2FnZSBwa2c7CisKK2NsYXNzICRCdWNrQ2xhc3MgeworICBzdGF0aWMgJEJ1Y2tDbGFzcyBnZXRJbnN0YW5jZSgpIHsgcmV0dXJuIG51bGw7IH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvY2xzL21pcnJvci9zcmMvcGtnL0Fubm90YXRpb25zLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2Nscy9taXJyb3Ivc3JjL3BrZy9Bbm5vdGF0aW9ucy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVhZWRhNjgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2Nscy9taXJyb3Ivc3JjL3BrZy9Bbm5vdGF0aW9ucy5qYXZhCkBAIC0wLDAgKzEsMzcgQEAKK3BhY2thZ2UgcGtnOworCithYnN0cmFjdCBjbGFzcyBBbm5vdGF0aW9ucyB7CisgIEBpbnRlcmZhY2UgQTEgeyB9CisKKyAgQGludGVyZmFjZSBBMiB7CisgICAgU3RyaW5nIHZhbHVlKCkgZGVmYXVsdCAiLSI7CisgIH0KKworICBAaW50ZXJmYWNlIEEzIHsKKyAgICBBMSBhMSgpOworICAgIEEyIGEyKCk7CisgIH0KKworICBAaW50ZXJmYWNlIEE0IHsKKyAgICBpbnRbXSBpZHMoKSBkZWZhdWx0IHsgfTsKKyAgfQorCisgIEBBMSBhYnN0cmFjdCB2b2lkIG0xKCk7CisKKyAgQEEyKCkgYWJzdHJhY3Qgdm9pZCBtMmEoKTsKKyAgQEEyKCIrIikgYWJzdHJhY3Qgdm9pZCBtMmIoKTsKKworICBAQTMoYTEgPSBAQTEsIGEyID0gQEEyKSBhYnN0cmFjdCB2b2lkIG0zKCk7CisKKyAgQEE0IGFic3RyYWN0IHZvaWQgbTRhKCk7CisgIEBBNChpZHMgPSB7NDIsIDg0fSkgYWJzdHJhY3Qgdm9pZCBtNGIoKTsKKworICBAaW50ZXJmYWNlIEluZGV0ZXJtaW5hdGVBbm5vIHsKKyAgICBmbG9hdCBmMSgpIGRlZmF1bHQgRmxvYXQuTkVHQVRJVkVfSU5GSU5JVFk7CisgICAgZmxvYXQgZjIoKSBkZWZhdWx0IEZsb2F0Lk5hTjsKKyAgICBmbG9hdCBmMygpIGRlZmF1bHQgRmxvYXQuUE9TSVRJVkVfSU5GSU5JVFk7CisgICAgZG91YmxlIGQxKCkgZGVmYXVsdCBEb3VibGUuTkVHQVRJVkVfSU5GSU5JVFk7CisgICAgZG91YmxlIGQyKCkgZGVmYXVsdCBEb3VibGUuTmFOOworICAgIGRvdWJsZSBkMygpIGRlZmF1bHQgRG91YmxlLlBPU0lUSVZFX0lORklOSVRZOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9jbHMvbWlycm9yL3NyYy9wa2cvQnVja0NsYXNzJC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9jbHMvbWlycm9yL3NyYy9wa2cvQnVja0NsYXNzJC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY1ZWRkMTMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2Nscy9taXJyb3Ivc3JjL3BrZy9CdWNrQ2xhc3MkLmphdmEKQEAgLTAsMCArMSwxMSBAQAorcGFja2FnZSBwa2c7CisKK2NsYXNzIEJ1Y2tDbGFzcyQgeworICBCdWNrQ2xhc3MkKCkgeworICAgIFN5c3RlbS5vdXQucHJpbnRsbih0aGlzKTsKKyAgfQorCisgIHN0YXRpYyBCdWNrQ2xhc3MkIGdldEluc3RhbmNlKCkgeworICAgIHJldHVybiBuZXcgQnVja0NsYXNzJCgpOworICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2Nscy9taXJyb3Ivc3JjL3BrZy9EZXByZWNhdGVkLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2Nscy9taXJyb3Ivc3JjL3BrZy9EZXByZWNhdGVkLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTkzZTA1NzkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2Nscy9taXJyb3Ivc3JjL3BrZy9EZXByZWNhdGVkLmphdmEKQEAgLTAsMCArMSwxMCBAQAorcGFja2FnZSBwa2c7CisKKy8qKiBAZGVwcmVjYXRlZCBkb24ndCB1c2UgKi8KK2NsYXNzIERlcHJlY2F0ZWQgeworICAvKiogQGRlcHJlY2F0ZWQgZG9uJ3QgdXNlICovCisgIGludCBmOworCisgIC8qKiBAZGVwcmVjYXRlZCBkb24ndCB1c2UgKi8KKyAgdm9pZCBtKCkgeyB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9jbHMvbWlycm9yL3NyYy9wa2cvRW1wdHlFbnVtLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2Nscy9taXJyb3Ivc3JjL3BrZy9FbXB0eUVudW0uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNzg0YWM4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9jbHMvbWlycm9yL3NyYy9wa2cvRW1wdHlFbnVtLmphdmEKQEAgLTAsMCArMSwzIEBACitwYWNrYWdlIHBrZzsKKworZW51bSBFbXB0eUVudW0geyB9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9jbHMvbWlycm9yL3NyYy9wa2cvRW51bVdpdGhGaWVsZHMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvY2xzL21pcnJvci9zcmMvcGtnL0VudW1XaXRoRmllbGRzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzIxZDE2NgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvY2xzL21pcnJvci9zcmMvcGtnL0VudW1XaXRoRmllbGRzLmphdmEKQEAgLTAsMCArMSw4IEBACitwYWNrYWdlIHBrZzsKKworcHVibGljIGVudW0gRW51bVdpdGhGaWVsZHMgeworICBFMSwgRTI7CisKKyAgcHJpdmF0ZSBib29sZWFuIGYxOworICBzdGF0aWMgYm9vbGVhbiBmMjsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2Nscy9taXJyb3Ivc3JjL3BrZy9FeHRNZXRob2RzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2Nscy9taXJyb3Ivc3JjL3BrZy9FeHRNZXRob2RzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODJjMjgxYgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvY2xzL21pcnJvci9zcmMvcGtnL0V4dE1ldGhvZHMuamF2YQpAQCAtMCwwICsxLDYgQEAKK3BhY2thZ2UgcGtnOworCitpbnRlcmZhY2UgRXh0TWV0aG9kcyB7CisgIHZvaWQgbTEoKTsKKyAgdm9pZCBtMigpIGRlZmF1bHQgeyBTeXN0ZW0ub3V0LnByaW50bG4oIkhlbGxvIHRoZXJlLiIpOyB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2Nscy9taXJyb3Ivc3JjL3BrZy9NZXRob2RSZWNlaXZlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9jbHMvbWlycm9yL3NyYy9wa2cvTWV0aG9kUmVjZWl2ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45YmRiMmM2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9jbHMvbWlycm9yL3NyYy9wa2cvTWV0aG9kUmVjZWl2ZXIuamF2YQpAQCAtMCwwICsxLDYgQEAKK3BhY2thZ2UgcGtnOworCitjbGFzcyBNZXRob2RSZWNlaXZlciB7CisgIEBpbnRlcmZhY2UgQSB7IH0KKyAgdm9pZCBtKEBBIE1ldGhvZFJlY2VpdmVyIHRoaXMsIGludCBpKSB7IFN5c3RlbS5vdXQucHJpbnRsbigiaT0iICsgaSk7IH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvY2xzL21pcnJvci9zcmMvcGtnL05lc3RlZC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9jbHMvbWlycm9yL3NyYy9wa2cvTmVzdGVkLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTAxYzk1YgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvY2xzL21pcnJvci9zcmMvcGtnL05lc3RlZC5qYXZhCkBAIC0wLDAgKzEsNyBAQAorcGFja2FnZSBwa2c7CisKK3B1YmxpYyBjbGFzcyBOZXN0ZWQgeworICBwdWJsaWMgc3RhdGljIGNsYXNzIElubmVyMSB7CisgICAgcHVibGljIGNsYXNzIElubmVyMiB7IH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvY2xzL21pcnJvci9zcmMvcGtnL05vcm1hbENsYXNzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2Nscy9taXJyb3Ivc3JjL3BrZy9Ob3JtYWxDbGFzcy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQyZjE0MzQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2Nscy9taXJyb3Ivc3JjL3BrZy9Ob3JtYWxDbGFzcy5qYXZhCkBAIC0wLDAgKzEsMTEgQEAKK3BhY2thZ2UgcGtnOworCitjbGFzcyBOb3JtYWxDbGFzcyB7CisgIHByaXZhdGUgZmluYWwgT2JqZWN0IG8gPSBuZXcgSW5uZXIoKTsKKworICBPYmplY3QgZ2V0KCkgeworICAgIHJldHVybiBvOworICB9CisKKyAgcHJpdmF0ZSBzdGF0aWMgY2xhc3MgSW5uZXIgeyB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9jbHMvbWlycm9yL3NyYy9wa2cvUGFyYW1ldGVyTmFtZXMuY2xhc3MgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2Nscy9taXJyb3Ivc3JjL3BrZy9QYXJhbWV0ZXJOYW1lcy5jbGFzcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YjFkNDk1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9jbHMvbWlycm9yL3NyYy9wa2cvUGFyYW1ldGVyTmFtZXMuY2xhc3MKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9jbHMvbWlycm9yL3NyYy9wa2cvUGFyYW1ldGVyTmFtZXMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvY2xzL21pcnJvci9zcmMvcGtnL1BhcmFtZXRlck5hbWVzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzM4ZjA4NwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvY2xzL21pcnJvci9zcmMvcGtnL1BhcmFtZXRlck5hbWVzLmphdmEKQEAgLTAsMCArMSwxMyBAQAorcGFja2FnZSBwa2c7CisKK3B1YmxpYyBjbGFzcyBQYXJhbWV0ZXJOYW1lcyB7CisgIHB1YmxpYyB2b2lkIHRlc3QoaW50IGluZGV4LCBpbnQgaWQsIFN0cmluZyBuYW1lKSB7CisgICAgdGVzdEltcGwoaW5kZXgsIGlkLCBuYW1lLCB0cnVlKTsKKyAgfQorCisgIHByaXZhdGUgdm9pZCB0ZXN0SW1wbChpbnQgaW5kZXgsIGludCBpZCwgU3RyaW5nIG5hbWUsIGJvb2xlYW4gcHJpbnQpIHsKKyAgICBpZiAocHJpbnQpIHsKKyAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiWyIgKyBpbmRleCArICJdICIgKyBpZCArICI6IiArIG5hbWUpOworICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvY2xzL21pcnJvci9zcmMvcGtnL1BrZ0Fubm8uamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvY2xzL21pcnJvci9zcmMvcGtnL1BrZ0Fubm8uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNjA5MWY2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9jbHMvbWlycm9yL3NyYy9wa2cvUGtnQW5uby5qYXZhCkBAIC0wLDAgKzEsMyBAQAorcGFja2FnZSBwa2c7CisKK0BpbnRlcmZhY2UgUGtnQW5ubyB7IH0KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvY2xzL21pcnJvci9zcmMvcGtnL1NpbXBsZUVudW0uamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvY2xzL21pcnJvci9zcmMvcGtnL1NpbXBsZUVudW0uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNTQ2MDllCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9jbHMvbWlycm9yL3NyYy9wa2cvU2ltcGxlRW51bS5qYXZhCkBAIC0wLDAgKzEsNSBAQAorcGFja2FnZSBwa2c7CisKK3B1YmxpYyBlbnVtIFNpbXBsZUVudW0geworICBFMSwgRTIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2Nscy9taXJyb3Ivc3JjL3BrZy9wYWNrYWdlLWluZm8uamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvY2xzL21pcnJvci9zcmMvcGtnL3BhY2thZ2UtaW5mby5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE5MjA2OGEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2Nscy9taXJyb3Ivc3JjL3BrZy9wYWNrYWdlLWluZm8uamF2YQpAQCAtMCwwICsxLDIgQEAKK0BQa2dBbm5vCitwYWNrYWdlIHBrZzsKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvY2xzL3N0dWJCdWlsZGVyL0Fubm90YXRlZEVudW1Db25zdHJ1Y3Rvci5jbGFzcyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvY2xzL3N0dWJCdWlsZGVyL0Fubm90YXRlZEVudW1Db25zdHJ1Y3Rvci5jbGFzcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MjNkYWM2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9jbHMvc3R1YkJ1aWxkZXIvQW5ub3RhdGVkRW51bUNvbnN0cnVjdG9yLmNsYXNzCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvY2xzL3N0dWJCdWlsZGVyL0Fubm90YXRlZEVudW1Db25zdHJ1Y3Rvci50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2Nscy9zdHViQnVpbGRlci9Bbm5vdGF0ZWRFbnVtQ29uc3RydWN0b3IudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJlZDhmMDAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2Nscy9zdHViQnVpbGRlci9Bbm5vdGF0ZWRFbnVtQ29uc3RydWN0b3IudHh0CkBAIC0wLDAgKzEsMzIgQEAKK1BzaUphdmFGaWxlU3R1YiBbXQorICBQc2lDbGFzc1N0dWJbZW51bSBuYW1lPUFubm90YXRlZEVudW1Db25zdHJ1Y3RvciBmcW49QW5ub3RhdGVkRW51bUNvbnN0cnVjdG9yXQorICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0xN10KKyAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdFN0dWIKKyAgICBQc2lSZWZMaXN0U3R1YltFWFRFTkRTX0xJU1Q6XQorICAgIFBzaVJlZkxpc3RTdHViW0lNUExFTUVOVFNfTElTVDpdCisgICAgUHNpRmllbGRTdHViW2VudW1jb25zdCBBOkFubm90YXRlZEVudW1Db25zdHJ1Y3Rvcl0KKyAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0yNV0KKyAgICBQc2lGaWVsZFN0dWJbZW51bWNvbnN0IEI6QW5ub3RhdGVkRW51bUNvbnN0cnVjdG9yXQorICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTI1XQorICAgIFBzaUZpZWxkU3R1YltlbnVtY29uc3QgQzpBbm5vdGF0ZWRFbnVtQ29uc3RydWN0b3JdCisgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MjVdCisgICAgUHNpTWV0aG9kU3R1Ylt2YWx1ZXM6QW5ub3RhdGVkRW51bUNvbnN0cnVjdG9yW11dCisgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9OV0KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgUHNpUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgIFBzaVJlZkxpc3RTdHViW1RIUk9XU19MSVNUOl0KKyAgICBQc2lNZXRob2RTdHViW3ZhbHVlT2Y6QW5ub3RhdGVkRW51bUNvbnN0cnVjdG9yXQorICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTldCisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgIFBzaVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgIFBzaVBhcmFtZXRlclN0dWJbbmFtZTpqYXZhLmxhbmcuU3RyaW5nXQorICAgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0wXQorICAgICAgUHNpUmVmTGlzdFN0dWJbVEhST1dTX0xJU1Q6XQorICAgIFBzaU1ldGhvZFN0dWJbY29ucyB2YXJhcmdzIEFubm90YXRlZEVudW1Db25zdHJ1Y3Rvcjp2b2lkXQorICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTJdCisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgIFBzaVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgIFBzaVBhcmFtZXRlclN0dWJbbmFtZXM6amF2YS5sYW5nLlN0cmluZy4uLl0KKyAgICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MF0KKyAgICAgICAgICAgIFBzaUFubm90YXRpb25TdHViW0BvcmcuamV0YnJhaW5zLmFubm90YXRpb25zLk51bGxhYmxlXQorICAgICAgUHNpUmVmTGlzdFN0dWJbVEhST1dTX0xJU1Q6XQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9jbHMvc3R1YkJ1aWxkZXIvQW5ub3RhdGVkTm9uU3RhdGljSW5uZXJDbGFzc0NvbnN0cnVjdG9yJElubmVyLmNsYXNzIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9jbHMvc3R1YkJ1aWxkZXIvQW5ub3RhdGVkTm9uU3RhdGljSW5uZXJDbGFzc0NvbnN0cnVjdG9yJElubmVyLmNsYXNzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI1M2VjOWQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2Nscy9zdHViQnVpbGRlci9Bbm5vdGF0ZWROb25TdGF0aWNJbm5lckNsYXNzQ29uc3RydWN0b3IkSW5uZXIuY2xhc3MKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9jbHMvc3R1YkJ1aWxkZXIvQW5ub3RhdGVkTm9uU3RhdGljSW5uZXJDbGFzc0NvbnN0cnVjdG9yLmNsYXNzIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9jbHMvc3R1YkJ1aWxkZXIvQW5ub3RhdGVkTm9uU3RhdGljSW5uZXJDbGFzc0NvbnN0cnVjdG9yLmNsYXNzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNjZTZiZDkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2Nscy9zdHViQnVpbGRlci9Bbm5vdGF0ZWROb25TdGF0aWNJbm5lckNsYXNzQ29uc3RydWN0b3IuY2xhc3MKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9jbHMvc3R1YkJ1aWxkZXIvQW5ub3RhdGVkTm9uU3RhdGljSW5uZXJDbGFzc0NvbnN0cnVjdG9yLnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvY2xzL3N0dWJCdWlsZGVyL0Fubm90YXRlZE5vblN0YXRpY0lubmVyQ2xhc3NDb25zdHJ1Y3Rvci50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2NhNGU2ZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvY2xzL3N0dWJCdWlsZGVyL0Fubm90YXRlZE5vblN0YXRpY0lubmVyQ2xhc3NDb25zdHJ1Y3Rvci50eHQKQEAgLTAsMCArMSwyNCBAQAorUHNpSmF2YUZpbGVTdHViIFtdCisgIFBzaUNsYXNzU3R1YltuYW1lPUFubm90YXRlZE5vblN0YXRpY0lubmVyQ2xhc3NDb25zdHJ1Y3RvciBmcW49QW5ub3RhdGVkTm9uU3RhdGljSW5uZXJDbGFzc0NvbnN0cnVjdG9yXQorICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0xXQorICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0U3R1YgorICAgIFBzaVJlZkxpc3RTdHViW0VYVEVORFNfTElTVDpdCisgICAgUHNpUmVmTGlzdFN0dWJbSU1QTEVNRU5UU19MSVNUOl0KKyAgICBQc2lDbGFzc1N0dWJbbmFtZT1Jbm5lciBmcW49QW5ub3RhdGVkTm9uU3RhdGljSW5uZXJDbGFzc0NvbnN0cnVjdG9yLklubmVyXQorICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTQwOTZdCisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgIFBzaVJlZkxpc3RTdHViW0VYVEVORFNfTElTVDpdCisgICAgICBQc2lSZWZMaXN0U3R1YltJTVBMRU1FTlRTX0xJU1Q6XQorICAgICAgUHNpTWV0aG9kU3R1Yltjb25zIElubmVyOnZvaWRdCisgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0xXQorICAgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgICAgUHNpUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgICAgICBQc2lQYXJhbWV0ZXJTdHViW3BhcmFtOmphdmEubGFuZy5JbnRlZ2VyXQorICAgICAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTBdCisgICAgICAgICAgICAgIFBzaUFubm90YXRpb25TdHViW0BvcmcuamV0YnJhaW5zLmFubm90YXRpb25zLk5vdE51bGxdCisgICAgICAgIFBzaVJlZkxpc3RTdHViW1RIUk9XU19MSVNUOl0KKyAgICBQc2lNZXRob2RTdHViW2NvbnMgQW5ub3RhdGVkTm9uU3RhdGljSW5uZXJDbGFzc0NvbnN0cnVjdG9yOnZvaWRdCisgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MV0KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgUHNpUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgIFBzaVJlZkxpc3RTdHViW1RIUk9XU19MSVNUOl0KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvY2xzL3N0dWJCdWlsZGVyL0RvdWJsZVRlc3QuY2xhc3MgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2Nscy9zdHViQnVpbGRlci9Eb3VibGVUZXN0LmNsYXNzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhmYWE5ODIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2Nscy9zdHViQnVpbGRlci9Eb3VibGVUZXN0LmNsYXNzCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvY2xzL3N0dWJCdWlsZGVyL0RvdWJsZVRlc3QudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9jbHMvc3R1YkJ1aWxkZXIvRG91YmxlVGVzdC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjYwNmQ2NQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvY2xzL3N0dWJCdWlsZGVyL0RvdWJsZVRlc3QudHh0CkBAIC0wLDAgKzEsMjIgQEAKK1BzaUphdmFGaWxlU3R1YiBbXQorICBQc2lDbGFzc1N0dWJbbmFtZT1Eb3VibGVUZXN0IGZxbj1Eb3VibGVUZXN0XQorICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0xXQorICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0U3R1YgorICAgIFBzaVJlZkxpc3RTdHViW0VYVEVORFNfTElTVDpdCisgICAgUHNpUmVmTGlzdFN0dWJbSU1QTEVNRU5UU19MSVNUOl0KKyAgICBQc2lNZXRob2RTdHViW2NvbnMgRG91YmxlVGVzdDp2b2lkXQorICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTFdCisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgIFBzaVBhcmFtZXRlckxpc3RTdHViCisgICAgICBQc2lSZWZMaXN0U3R1YltUSFJPV1NfTElTVDpdCisgICAgUHNpTWV0aG9kU3R1Yltmb286dm9pZF0KKyAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz00MDk2XQorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3RTdHViCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgICBQc2lQYXJhbWV0ZXJTdHViW29uZTpkb3VibGVdCisgICAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTBdCisgICAgICAgIFBzaVBhcmFtZXRlclN0dWJbdHdvOmRvdWJsZV0KKyAgICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MF0KKyAgICAgICAgUHNpUGFyYW1ldGVyU3R1Ylt0aHJlZTpkb3VibGVdCisgICAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTBdCisgICAgICBQc2lSZWZMaXN0U3R1YltUSFJPV1NfTElTVDpdCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2Nscy9zdHViQnVpbGRlci9Nb2RpZmllcnMudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9jbHMvc3R1YkJ1aWxkZXIvTW9kaWZpZXJzLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNjA4ZWU3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9jbHMvc3R1YkJ1aWxkZXIvTW9kaWZpZXJzLnR4dApAQCAtMCwwICsxLDI3IEBACitQc2lKYXZhRmlsZVN0dWIgW3BhY2tdCisgIFBzaUNsYXNzU3R1YltuYW1lPU1vZGlmaWVycyBmcW49cGFjay5Nb2RpZmllcnNdCisgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTFdCisgICAgUHNpVHlwZVBhcmFtZXRlckxpc3RTdHViCisgICAgUHNpUmVmTGlzdFN0dWJbRVhURU5EU19MSVNUOl0KKyAgICBQc2lSZWZMaXN0U3R1YltJTVBMRU1FTlRTX0xJU1Q6XQorICAgIFBzaUZpZWxkU3R1YltmMTppbnRdCisgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MTMwXQorICAgIFBzaUZpZWxkU3R1YltmMjppbnRdCisgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9NjZdCisgICAgUHNpTWV0aG9kU3R1Yltjb25zIE1vZGlmaWVyczp2b2lkXQorICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTFdCisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgIFBzaVBhcmFtZXRlckxpc3RTdHViCisgICAgICBQc2lSZWZMaXN0U3R1YltUSFJPV1NfTElTVDpdCisgICAgUHNpTWV0aG9kU3R1Ylt2YXJhcmdzIG0xOnZvaWRdCisgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9Ml0KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgUHNpUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgICAgUHNpUGFyYW1ldGVyU3R1YltpOmludC4uLl0KKyAgICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MF0KKyAgICAgIFBzaVJlZkxpc3RTdHViW1RIUk9XU19MSVNUOl0KKyAgICBQc2lNZXRob2RTdHViW20yOnZvaWRdCisgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MzRdCisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgIFBzaVBhcmFtZXRlckxpc3RTdHViCisgICAgICBQc2lSZWZMaXN0U3R1YltUSFJPV1NfTElTVDpdCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2Nscy9zdHViQnVpbGRlci9OdWxsYWJsZS50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2Nscy9zdHViQnVpbGRlci9OdWxsYWJsZS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjc3ZmUxNAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvY2xzL3N0dWJCdWlsZGVyL051bGxhYmxlLnR4dApAQCAtMCwwICsxLDE0IEBACitQc2lKYXZhRmlsZVN0dWIgW29yZy5qZXRicmFpbnMuYW5ub3RhdGlvbnNdCisgIFBzaUNsYXNzU3R1YltpbnRlcmZhY2UgYW5ub3RhdGlvbiBuYW1lPU51bGxhYmxlIGZxbj1vcmcuamV0YnJhaW5zLmFubm90YXRpb25zLk51bGxhYmxlXQorICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0xMDI1XQorICAgICAgUHNpQW5ub3RhdGlvblN0dWJbQGphdmEubGFuZy5hbm5vdGF0aW9uLkRvY3VtZW50ZWRdCisgICAgICBQc2lBbm5vdGF0aW9uU3R1YltAamF2YS5sYW5nLmFubm90YXRpb24uUmV0ZW50aW9uKGphdmEubGFuZy5hbm5vdGF0aW9uLlJldGVudGlvblBvbGljeS5DTEFTUyldCisgICAgICBQc2lBbm5vdGF0aW9uU3R1YltAamF2YS5sYW5nLmFubm90YXRpb24uVGFyZ2V0KHtqYXZhLmxhbmcuYW5ub3RhdGlvbi5FbGVtZW50VHlwZS5NRVRIT0QsamF2YS5sYW5nLmFubm90YXRpb24uRWxlbWVudFR5cGUuRklFTEQsamF2YS5sYW5nLmFubm90YXRpb24uRWxlbWVudFR5cGUuUEFSQU1FVEVSLGphdmEubGFuZy5hbm5vdGF0aW9uLkVsZW1lbnRUeXBlLkxPQ0FMX1ZBUklBQkxFfSldCisgICAgUHNpVHlwZVBhcmFtZXRlckxpc3RTdHViCisgICAgUHNpUmVmTGlzdFN0dWJbRVhURU5EU19MSVNUOl0KKyAgICBQc2lSZWZMaXN0U3R1YltJTVBMRU1FTlRTX0xJU1Q6XQorICAgIFBzaU1ldGhvZFN0dWJbYW5ub3RhdGlvbiB2YWx1ZTpqYXZhLmxhbmcuU3RyaW5nIGRlZmF1bHQ9IiJdCisgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MTAyNV0KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgUHNpUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgIFBzaVJlZkxpc3RTdHViW1RIUk9XU19MSVNUOl0KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvY2xzL3N0dWJCdWlsZGVyL1Rlc3RTdWl0ZS5jbGFzcyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvY2xzL3N0dWJCdWlsZGVyL1Rlc3RTdWl0ZS5jbGFzcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNzY0Y2FmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9jbHMvc3R1YkJ1aWxkZXIvVGVzdFN1aXRlLmNsYXNzCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvY2xzL3N0dWJCdWlsZGVyL1Rlc3RTdWl0ZS50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2Nscy9zdHViQnVpbGRlci9UZXN0U3VpdGUudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFkMWIyMmEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2Nscy9zdHViQnVpbGRlci9UZXN0U3VpdGUudHh0CkBAIC0wLDAgKzEsMTYyIEBACitQc2lKYXZhRmlsZVN0dWIgW2p1bml0LmZyYW1ld29ya10KKyAgUHNpQ2xhc3NTdHViW25hbWU9VGVzdFN1aXRlIGZxbj1qdW5pdC5mcmFtZXdvcmsuVGVzdFN1aXRlXQorICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0xXQorICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0U3R1YgorICAgIFBzaVJlZkxpc3RTdHViW0VYVEVORFNfTElTVDpdCisgICAgUHNpUmVmTGlzdFN0dWJbSU1QTEVNRU5UU19MSVNUOmp1bml0LmZyYW1ld29yay5UZXN0XQorICAgIFBzaUZpZWxkU3R1YltmVGVzdHM6amF2YS51dGlsLlZlY3Rvcl0KKyAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0yXQorICAgIFBzaUZpZWxkU3R1YltmTmFtZTpqYXZhLmxhbmcuU3RyaW5nXQorICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTJdCisgICAgUHNpTWV0aG9kU3R1Yltjb25zIFRlc3RTdWl0ZTp2b2lkXQorICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTFdCisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgIFBzaVBhcmFtZXRlckxpc3RTdHViCisgICAgICBQc2lSZWZMaXN0U3R1YltUSFJPV1NfTElTVDpdCisgICAgUHNpTWV0aG9kU3R1Yltjb25zIFRlc3RTdWl0ZTp2b2lkXQorICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTFdCisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgIFBzaVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgIFBzaVBhcmFtZXRlclN0dWJbdGhlQ2xhc3M6amF2YS5sYW5nLkNsYXNzXQorICAgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0wXQorICAgICAgICBQc2lQYXJhbWV0ZXJTdHViW25hbWU6amF2YS5sYW5nLlN0cmluZ10KKyAgICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MF0KKyAgICAgIFBzaVJlZkxpc3RTdHViW1RIUk9XU19MSVNUOl0KKyAgICBQc2lNZXRob2RTdHViW2NvbnMgVGVzdFN1aXRlOnZvaWRdCisgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MV0KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgUHNpUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgICAgUHNpUGFyYW1ldGVyU3R1Ylt0aGVDbGFzczpqYXZhLmxhbmcuQ2xhc3NdCisgICAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTBdCisgICAgICBQc2lSZWZMaXN0U3R1YltUSFJPV1NfTElTVDpdCisgICAgUHNpTWV0aG9kU3R1Yltjb25zIFRlc3RTdWl0ZTp2b2lkXQorICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTFdCisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgIFBzaVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgIFBzaVBhcmFtZXRlclN0dWJbbmFtZTpqYXZhLmxhbmcuU3RyaW5nXQorICAgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0wXQorICAgICAgUHNpUmVmTGlzdFN0dWJbVEhST1dTX0xJU1Q6XQorICAgIFBzaU1ldGhvZFN0dWJbYWRkVGVzdDp2b2lkXQorICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTFdCisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgIFBzaVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgIFBzaVBhcmFtZXRlclN0dWJbdGVzdDpqdW5pdC5mcmFtZXdvcmsuVGVzdF0KKyAgICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MF0KKyAgICAgIFBzaVJlZkxpc3RTdHViW1RIUk9XU19MSVNUOl0KKyAgICBQc2lNZXRob2RTdHViW2FkZFRlc3RTdWl0ZTp2b2lkXQorICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTFdCisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgIFBzaVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgIFBzaVBhcmFtZXRlclN0dWJbdGVzdENsYXNzOmphdmEubGFuZy5DbGFzc10KKyAgICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MF0KKyAgICAgIFBzaVJlZkxpc3RTdHViW1RIUk9XU19MSVNUOl0KKyAgICBQc2lNZXRob2RTdHViW2FkZFRlc3RNZXRob2Q6dm9pZF0KKyAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0yXQorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3RTdHViCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgICBQc2lQYXJhbWV0ZXJTdHViW206amF2YS5sYW5nLnJlZmxlY3QuTWV0aG9kXQorICAgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0wXQorICAgICAgICBQc2lQYXJhbWV0ZXJTdHViW25hbWVzOmphdmEudXRpbC5WZWN0b3JdCisgICAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTBdCisgICAgICAgIFBzaVBhcmFtZXRlclN0dWJbdGhlQ2xhc3M6amF2YS5sYW5nLkNsYXNzXQorICAgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0wXQorICAgICAgUHNpUmVmTGlzdFN0dWJbVEhST1dTX0xJU1Q6XQorICAgIFBzaU1ldGhvZFN0dWJbY3JlYXRlVGVzdDpqdW5pdC5mcmFtZXdvcmsuVGVzdF0KKyAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz05XQorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3RTdHViCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgICBQc2lQYXJhbWV0ZXJTdHViW3RoZUNsYXNzOmphdmEubGFuZy5DbGFzc10KKyAgICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MF0KKyAgICAgICAgUHNpUGFyYW1ldGVyU3R1YltuYW1lOmphdmEubGFuZy5TdHJpbmddCisgICAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTBdCisgICAgICBQc2lSZWZMaXN0U3R1YltUSFJPV1NfTElTVDpdCisgICAgUHNpTWV0aG9kU3R1YltleGNlcHRpb25Ub1N0cmluZzpqYXZhLmxhbmcuU3RyaW5nXQorICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTEwXQorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3RTdHViCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgICBQc2lQYXJhbWV0ZXJTdHViW3Q6amF2YS5sYW5nLlRocm93YWJsZV0KKyAgICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MF0KKyAgICAgIFBzaVJlZkxpc3RTdHViW1RIUk9XU19MSVNUOl0KKyAgICBQc2lNZXRob2RTdHViW2NvdW50VGVzdENhc2VzOmludF0KKyAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0xXQorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3RTdHViCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgUHNpUmVmTGlzdFN0dWJbVEhST1dTX0xJU1Q6XQorICAgIFBzaU1ldGhvZFN0dWJbZ2V0VGVzdENvbnN0cnVjdG9yOmphdmEubGFuZy5yZWZsZWN0LkNvbnN0cnVjdG9yXQorICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTldCisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgIFBzaVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgIFBzaVBhcmFtZXRlclN0dWJbdGhlQ2xhc3M6amF2YS5sYW5nLkNsYXNzXQorICAgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0wXQorICAgICAgUHNpUmVmTGlzdFN0dWJbVEhST1dTX0xJU1Q6amF2YS5sYW5nLk5vU3VjaE1ldGhvZEV4Y2VwdGlvbl0KKyAgICBQc2lNZXRob2RTdHViW2lzUHVibGljVGVzdE1ldGhvZDpib29sZWFuXQorICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTJdCisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgIFBzaVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgIFBzaVBhcmFtZXRlclN0dWJbbTpqYXZhLmxhbmcucmVmbGVjdC5NZXRob2RdCisgICAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTBdCisgICAgICBQc2lSZWZMaXN0U3R1YltUSFJPV1NfTElTVDpdCisgICAgUHNpTWV0aG9kU3R1Yltpc1Rlc3RNZXRob2Q6Ym9vbGVhbl0KKyAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0yXQorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3RTdHViCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgICBQc2lQYXJhbWV0ZXJTdHViW206amF2YS5sYW5nLnJlZmxlY3QuTWV0aG9kXQorICAgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0wXQorICAgICAgUHNpUmVmTGlzdFN0dWJbVEhST1dTX0xJU1Q6XQorICAgIFBzaU1ldGhvZFN0dWJbcnVuOnZvaWRdCisgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MV0KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgUHNpUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgICAgUHNpUGFyYW1ldGVyU3R1YltyZXN1bHQ6anVuaXQuZnJhbWV3b3JrLlRlc3RSZXN1bHRdCisgICAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTBdCisgICAgICBQc2lSZWZMaXN0U3R1YltUSFJPV1NfTElTVDpdCisgICAgUHNpTWV0aG9kU3R1YltydW5UZXN0OnZvaWRdCisgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MV0KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgUHNpUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgICAgUHNpUGFyYW1ldGVyU3R1Ylt0ZXN0Omp1bml0LmZyYW1ld29yay5UZXN0XQorICAgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0wXQorICAgICAgICBQc2lQYXJhbWV0ZXJTdHViW3Jlc3VsdDpqdW5pdC5mcmFtZXdvcmsuVGVzdFJlc3VsdF0KKyAgICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MF0KKyAgICAgIFBzaVJlZkxpc3RTdHViW1RIUk9XU19MSVNUOl0KKyAgICBQc2lNZXRob2RTdHViW3Rlc3RBdDpqdW5pdC5mcmFtZXdvcmsuVGVzdF0KKyAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0xXQorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3RTdHViCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgICBQc2lQYXJhbWV0ZXJTdHViW2luZGV4OmludF0KKyAgICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MF0KKyAgICAgIFBzaVJlZkxpc3RTdHViW1RIUk9XU19MSVNUOl0KKyAgICBQc2lNZXRob2RTdHViW3Rlc3RDb3VudDppbnRdCisgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MV0KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgUHNpUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgIFBzaVJlZkxpc3RTdHViW1RIUk9XU19MSVNUOl0KKyAgICBQc2lNZXRob2RTdHViW3Rlc3RzOmphdmEudXRpbC5FbnVtZXJhdGlvbl0KKyAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0xXQorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3RTdHViCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgUHNpUmVmTGlzdFN0dWJbVEhST1dTX0xJU1Q6XQorICAgIFBzaU1ldGhvZFN0dWJbdG9TdHJpbmc6amF2YS5sYW5nLlN0cmluZ10KKyAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0xXQorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3RTdHViCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgUHNpUmVmTGlzdFN0dWJbVEhST1dTX0xJU1Q6XQorICAgIFBzaU1ldGhvZFN0dWJbc2V0TmFtZTp2b2lkXQorICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTFdCisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgIFBzaVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgIFBzaVBhcmFtZXRlclN0dWJbbmFtZTpqYXZhLmxhbmcuU3RyaW5nXQorICAgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0wXQorICAgICAgUHNpUmVmTGlzdFN0dWJbVEhST1dTX0xJU1Q6XQorICAgIFBzaU1ldGhvZFN0dWJbZ2V0TmFtZTpqYXZhLmxhbmcuU3RyaW5nXQorICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTFdCisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgIFBzaVBhcmFtZXRlckxpc3RTdHViCisgICAgICBQc2lSZWZMaXN0U3R1YltUSFJPV1NfTElTVDpdCisgICAgUHNpTWV0aG9kU3R1Ylt3YXJuaW5nOmp1bml0LmZyYW1ld29yay5UZXN0XQorICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTEwXQorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3RTdHViCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgICBQc2lQYXJhbWV0ZXJTdHViW21lc3NhZ2U6amF2YS5sYW5nLlN0cmluZ10KKyAgICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MF0KKyAgICAgIFBzaVJlZkxpc3RTdHViW1RIUk9XU19MSVNUOl0KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvY2xzL3N0dWJCdWlsZGVyL1RpbWVVbml0LnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvY2xzL3N0dWJCdWlsZGVyL1RpbWVVbml0LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZmJiYTM1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9jbHMvc3R1YkJ1aWxkZXIvVGltZVVuaXQudHh0CkBAIC0wLDAgKzEsMTE5IEBACitQc2lKYXZhRmlsZVN0dWIgW2phdmEudXRpbC5jb25jdXJyZW50XQorICBQc2lDbGFzc1N0dWJbZW51bSBuYW1lPVRpbWVVbml0IGZxbj1qYXZhLnV0aWwuY29uY3VycmVudC5UaW1lVW5pdF0KKyAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MTddCisgICAgUHNpVHlwZVBhcmFtZXRlckxpc3RTdHViCisgICAgUHNpUmVmTGlzdFN0dWJbRVhURU5EU19MSVNUOl0KKyAgICBQc2lSZWZMaXN0U3R1YltJTVBMRU1FTlRTX0xJU1Q6XQorICAgIFBzaUZpZWxkU3R1YltlbnVtY29uc3QgTkFOT1NFQ09ORFM6amF2YS51dGlsLmNvbmN1cnJlbnQuVGltZVVuaXRdCisgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MjVdCisgICAgUHNpRmllbGRTdHViW2VudW1jb25zdCBNSUNST1NFQ09ORFM6amF2YS51dGlsLmNvbmN1cnJlbnQuVGltZVVuaXRdCisgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MjVdCisgICAgUHNpRmllbGRTdHViW2VudW1jb25zdCBNSUxMSVNFQ09ORFM6amF2YS51dGlsLmNvbmN1cnJlbnQuVGltZVVuaXRdCisgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MjVdCisgICAgUHNpRmllbGRTdHViW2VudW1jb25zdCBTRUNPTkRTOmphdmEudXRpbC5jb25jdXJyZW50LlRpbWVVbml0XQorICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTI1XQorICAgIFBzaUZpZWxkU3R1YltpbmRleDppbnRdCisgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MThdCisgICAgUHNpRmllbGRTdHViW211bHRpcGxpZXJzOmludFtdXQorICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTI2XQorICAgIFBzaUZpZWxkU3R1YltvdmVyZmxvd3M6bG9uZ1tdXQorICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTI2XQorICAgIFBzaU1ldGhvZFN0dWJbdmFsdWVzOmphdmEudXRpbC5jb25jdXJyZW50LlRpbWVVbml0W11dCisgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MjVdCisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgIFBzaVBhcmFtZXRlckxpc3RTdHViCisgICAgICBQc2lSZWZMaXN0U3R1YltUSFJPV1NfTElTVDpdCisgICAgUHNpTWV0aG9kU3R1Ylt2YWx1ZU9mOmphdmEudXRpbC5jb25jdXJyZW50LlRpbWVVbml0XQorICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTldCisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgIFBzaVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgIFBzaVBhcmFtZXRlclN0dWJbcDE6amF2YS5sYW5nLlN0cmluZ10KKyAgICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MF0KKyAgICAgIFBzaVJlZkxpc3RTdHViW1RIUk9XU19MSVNUOl0KKyAgICBQc2lNZXRob2RTdHViW2NvbnMgVGltZVVuaXQ6dm9pZF0KKyAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0yXQorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3RTdHViCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgICBQc2lQYXJhbWV0ZXJTdHViW3AxOmludF0KKyAgICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MF0KKyAgICAgIFBzaVJlZkxpc3RTdHViW1RIUk9XU19MSVNUOl0KKyAgICBQc2lNZXRob2RTdHViW2RvQ29udmVydDpsb25nXQorICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTEwXQorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3RTdHViCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgICBQc2lQYXJhbWV0ZXJTdHViW3AxOmludF0KKyAgICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MF0KKyAgICAgICAgUHNpUGFyYW1ldGVyU3R1YltwMjpsb25nXQorICAgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0wXQorICAgICAgUHNpUmVmTGlzdFN0dWJbVEhST1dTX0xJU1Q6XQorICAgIFBzaU1ldGhvZFN0dWJbY29udmVydDpsb25nXQorICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTFdCisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgIFBzaVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgIFBzaVBhcmFtZXRlclN0dWJbcDE6bG9uZ10KKyAgICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MF0KKyAgICAgICAgUHNpUGFyYW1ldGVyU3R1YltwMjpqYXZhLnV0aWwuY29uY3VycmVudC5UaW1lVW5pdF0KKyAgICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MF0KKyAgICAgIFBzaVJlZkxpc3RTdHViW1RIUk9XU19MSVNUOl0KKyAgICBQc2lNZXRob2RTdHViW3RvTmFub3M6bG9uZ10KKyAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0xXQorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3RTdHViCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgICBQc2lQYXJhbWV0ZXJTdHViW3AxOmxvbmddCisgICAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTBdCisgICAgICBQc2lSZWZMaXN0U3R1YltUSFJPV1NfTElTVDpdCisgICAgUHNpTWV0aG9kU3R1Ylt0b01pY3Jvczpsb25nXQorICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTFdCisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgIFBzaVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgIFBzaVBhcmFtZXRlclN0dWJbcDE6bG9uZ10KKyAgICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MF0KKyAgICAgIFBzaVJlZkxpc3RTdHViW1RIUk9XU19MSVNUOl0KKyAgICBQc2lNZXRob2RTdHViW3RvTWlsbGlzOmxvbmddCisgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MV0KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgUHNpUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgICAgUHNpUGFyYW1ldGVyU3R1YltwMTpsb25nXQorICAgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0wXQorICAgICAgUHNpUmVmTGlzdFN0dWJbVEhST1dTX0xJU1Q6XQorICAgIFBzaU1ldGhvZFN0dWJbdG9TZWNvbmRzOmxvbmddCisgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MV0KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgUHNpUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgICAgUHNpUGFyYW1ldGVyU3R1YltwMTpsb25nXQorICAgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0wXQorICAgICAgUHNpUmVmTGlzdFN0dWJbVEhST1dTX0xJU1Q6XQorICAgIFBzaU1ldGhvZFN0dWJbZXhjZXNzTmFub3M6aW50XQorICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTJdCisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgIFBzaVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgIFBzaVBhcmFtZXRlclN0dWJbcDE6bG9uZ10KKyAgICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MF0KKyAgICAgICAgUHNpUGFyYW1ldGVyU3R1YltwMjpsb25nXQorICAgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0wXQorICAgICAgUHNpUmVmTGlzdFN0dWJbVEhST1dTX0xJU1Q6XQorICAgIFBzaU1ldGhvZFN0dWJbdGltZWRXYWl0OnZvaWRdCisgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MV0KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgUHNpUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgICAgUHNpUGFyYW1ldGVyU3R1YltwMTpqYXZhLmxhbmcuT2JqZWN0XQorICAgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0wXQorICAgICAgICBQc2lQYXJhbWV0ZXJTdHViW3AyOmxvbmddCisgICAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTBdCisgICAgICBQc2lSZWZMaXN0U3R1YltUSFJPV1NfTElTVDpqYXZhLmxhbmcuSW50ZXJydXB0ZWRFeGNlcHRpb25dCisgICAgUHNpTWV0aG9kU3R1Ylt0aW1lZEpvaW46dm9pZF0KKyAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0xXQorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3RTdHViCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgICBQc2lQYXJhbWV0ZXJTdHViW3AxOmphdmEubGFuZy5UaHJlYWRdCisgICAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTBdCisgICAgICAgIFBzaVBhcmFtZXRlclN0dWJbcDI6bG9uZ10KKyAgICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MF0KKyAgICAgIFBzaVJlZkxpc3RTdHViW1RIUk9XU19MSVNUOmphdmEubGFuZy5JbnRlcnJ1cHRlZEV4Y2VwdGlvbl0KKyAgICBQc2lNZXRob2RTdHViW3NsZWVwOnZvaWRdCisgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MV0KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgUHNpUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgICAgUHNpUGFyYW1ldGVyU3R1YltwMTpsb25nXQorICAgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0wXQorICAgICAgUHNpUmVmTGlzdFN0dWJbVEhST1dTX0xJU1Q6amF2YS5sYW5nLkludGVycnVwdGVkRXhjZXB0aW9uXQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9jbHMvc3R1YkJ1aWxkZXIvVXRpbENvbGxlY3Rpb25zLnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvY2xzL3N0dWJCdWlsZGVyL1V0aWxDb2xsZWN0aW9ucy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDU4ZTJlNgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvY2xzL3N0dWJCdWlsZGVyL1V0aWxDb2xsZWN0aW9ucy50eHQKQEAgLTAsMCArMSwyMzAxIEBACitQc2lKYXZhRmlsZVN0dWIgW2phdmEudXRpbF0KKyAgUHNpQ2xhc3NTdHViW25hbWU9Q29sbGVjdGlvbnMgZnFuPWphdmEudXRpbC5Db2xsZWN0aW9uc10KKyAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MV0KKyAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdFN0dWIKKyAgICBQc2lSZWZMaXN0U3R1YltFWFRFTkRTX0xJU1Q6XQorICAgIFBzaVJlZkxpc3RTdHViW0lNUExFTUVOVFNfTElTVDpdCisgICAgUHNpQ2xhc3NTdHViW25hbWU9Q29waWVzTGlzdCBmcW49amF2YS51dGlsLkNvbGxlY3Rpb25zLkNvcGllc0xpc3RdCisgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MTBdCisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgICAgUHNpVHlwZVBhcmFtZXRlcltFXQorICAgICAgICAgIFBzaVJlZkxpc3RTdHViW0VYVEVORFNfQk9VTkRTX0xJU1Q6XQorICAgICAgUHNpUmVmTGlzdFN0dWJbRVhURU5EU19MSVNUOmphdmEudXRpbC5BYnN0cmFjdExpc3Q8RT5dCisgICAgICBQc2lSZWZMaXN0U3R1YltJTVBMRU1FTlRTX0xJU1Q6amF2YS51dGlsLlJhbmRvbUFjY2VzcywgamF2YS5pby5TZXJpYWxpemFibGVdCisgICAgICBQc2lGaWVsZFN0dWJbc2VyaWFsVmVyc2lvblVJRDpsb25nPTI3MzkwOTkyNjgzOTg3MTE4MDBMXQorICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9NDEyMF0KKyAgICAgIFBzaUZpZWxkU3R1YltuOmludF0KKyAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTQwOTZdCisgICAgICBQc2lGaWVsZFN0dWJbZWxlbWVudDpFXQorICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9NDA5Nl0KKyAgICAgIFBzaU1ldGhvZFN0dWJbY29ucyBDb3BpZXNMaXN0OnZvaWRdCisgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz00MDk2XQorICAgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgICAgUHNpUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgICAgICBQc2lQYXJhbWV0ZXJTdHViW3AxOmludF0KKyAgICAgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0wXQorICAgICAgICAgIFBzaVBhcmFtZXRlclN0dWJbcDI6RV0KKyAgICAgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0wXQorICAgICAgICBQc2lSZWZMaXN0U3R1YltUSFJPV1NfTElTVDpdCisgICAgICBQc2lNZXRob2RTdHViW3NpemU6aW50XQorICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MV0KKyAgICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgIFBzaVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgIFBzaVJlZkxpc3RTdHViW1RIUk9XU19MSVNUOl0KKyAgICAgIFBzaU1ldGhvZFN0dWJbY29udGFpbnM6Ym9vbGVhbl0KKyAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTFdCisgICAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgICBQc2lQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgICAgIFBzaVBhcmFtZXRlclN0dWJbcDE6amF2YS5sYW5nLk9iamVjdF0KKyAgICAgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0wXQorICAgICAgICBQc2lSZWZMaXN0U3R1YltUSFJPV1NfTElTVDpdCisgICAgICBQc2lNZXRob2RTdHViW2dldDpFXQorICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MV0KKyAgICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgIFBzaVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgICAgUHNpUGFyYW1ldGVyU3R1YltwMTppbnRdCisgICAgICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MF0KKyAgICAgICAgUHNpUmVmTGlzdFN0dWJbVEhST1dTX0xJU1Q6XQorICAgIFBzaUNsYXNzU3R1YltuYW1lPUVtcHR5TGlzdCBmcW49amF2YS51dGlsLkNvbGxlY3Rpb25zLkVtcHR5TGlzdF0KKyAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0xMF0KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgUHNpUmVmTGlzdFN0dWJbRVhURU5EU19MSVNUOmphdmEudXRpbC5BYnN0cmFjdExpc3Q8amF2YS5sYW5nLk9iamVjdD5dCisgICAgICBQc2lSZWZMaXN0U3R1YltJTVBMRU1FTlRTX0xJU1Q6amF2YS51dGlsLlJhbmRvbUFjY2VzcywgamF2YS5pby5TZXJpYWxpemFibGVdCisgICAgICBQc2lGaWVsZFN0dWJbc2VyaWFsVmVyc2lvblVJRDpsb25nPTg4NDI4NDM5MzEyMjExMzkxNjZMXQorICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MjZdCisgICAgICBQc2lNZXRob2RTdHViW2NvbnMgRW1wdHlMaXN0OnZvaWRdCisgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0yXQorICAgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgICAgUHNpUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgICAgUHNpUmVmTGlzdFN0dWJbVEhST1dTX0xJU1Q6XQorICAgICAgUHNpTWV0aG9kU3R1YltzaXplOmludF0KKyAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTFdCisgICAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgICBQc2lQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgICBQc2lSZWZMaXN0U3R1YltUSFJPV1NfTElTVDpdCisgICAgICBQc2lNZXRob2RTdHViW2NvbnRhaW5zOmJvb2xlYW5dCisgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0xXQorICAgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgICAgUHNpUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgICAgICBQc2lQYXJhbWV0ZXJTdHViW3AxOmphdmEubGFuZy5PYmplY3RdCisgICAgICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MF0KKyAgICAgICAgUHNpUmVmTGlzdFN0dWJbVEhST1dTX0xJU1Q6XQorICAgICAgUHNpTWV0aG9kU3R1YltnZXQ6amF2YS5sYW5nLk9iamVjdF0KKyAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTFdCisgICAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgICBQc2lQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgICAgIFBzaVBhcmFtZXRlclN0dWJbcDE6aW50XQorICAgICAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTBdCisgICAgICAgIFBzaVJlZkxpc3RTdHViW1RIUk9XU19MSVNUOl0KKyAgICAgIFBzaU1ldGhvZFN0dWJbcmVhZFJlc29sdmU6amF2YS5sYW5nLk9iamVjdF0KKyAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTJdCisgICAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgICBQc2lQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgICBQc2lSZWZMaXN0U3R1YltUSFJPV1NfTElTVDpdCisgICAgUHNpQ2xhc3NTdHViW25hbWU9RW1wdHlNYXAgZnFuPWphdmEudXRpbC5Db2xsZWN0aW9ucy5FbXB0eU1hcF0KKyAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0xMF0KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgUHNpUmVmTGlzdFN0dWJbRVhURU5EU19MSVNUOmphdmEudXRpbC5BYnN0cmFjdE1hcDxqYXZhLmxhbmcuT2JqZWN0LGphdmEubGFuZy5PYmplY3Q+XQorICAgICAgUHNpUmVmTGlzdFN0dWJbSU1QTEVNRU5UU19MSVNUOmphdmEuaW8uU2VyaWFsaXphYmxlXQorICAgICAgUHNpRmllbGRTdHViW3NlcmlhbFZlcnNpb25VSUQ6bG9uZz02NDI4MzQ4MDgxMTA1NTk0MzIwTF0KKyAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTI2XQorICAgICAgUHNpTWV0aG9kU3R1Yltjb25zIEVtcHR5TWFwOnZvaWRdCisgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0yXQorICAgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgICAgUHNpUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgICAgUHNpUmVmTGlzdFN0dWJbVEhST1dTX0xJU1Q6XQorICAgICAgUHNpTWV0aG9kU3R1YltzaXplOmludF0KKyAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTFdCisgICAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgICBQc2lQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgICBQc2lSZWZMaXN0U3R1YltUSFJPV1NfTElTVDpdCisgICAgICBQc2lNZXRob2RTdHViW2lzRW1wdHk6Ym9vbGVhbl0KKyAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTFdCisgICAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgICBQc2lQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgICBQc2lSZWZMaXN0U3R1YltUSFJPV1NfTElTVDpdCisgICAgICBQc2lNZXRob2RTdHViW2NvbnRhaW5zS2V5OmJvb2xlYW5dCisgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0xXQorICAgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgICAgUHNpUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgICAgICBQc2lQYXJhbWV0ZXJTdHViW3AxOmphdmEubGFuZy5PYmplY3RdCisgICAgICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MF0KKyAgICAgICAgUHNpUmVmTGlzdFN0dWJbVEhST1dTX0xJU1Q6XQorICAgICAgUHNpTWV0aG9kU3R1Yltjb250YWluc1ZhbHVlOmJvb2xlYW5dCisgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0xXQorICAgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgICAgUHNpUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgICAgICBQc2lQYXJhbWV0ZXJTdHViW3AxOmphdmEubGFuZy5PYmplY3RdCisgICAgICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MF0KKyAgICAgICAgUHNpUmVmTGlzdFN0dWJbVEhST1dTX0xJU1Q6XQorICAgICAgUHNpTWV0aG9kU3R1YltnZXQ6amF2YS5sYW5nLk9iamVjdF0KKyAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTFdCisgICAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgICBQc2lQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgICAgIFBzaVBhcmFtZXRlclN0dWJbcDE6amF2YS5sYW5nLk9iamVjdF0KKyAgICAgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0wXQorICAgICAgICBQc2lSZWZMaXN0U3R1YltUSFJPV1NfTElTVDpdCisgICAgICBQc2lNZXRob2RTdHViW2tleVNldDpqYXZhLnV0aWwuU2V0PGphdmEubGFuZy5PYmplY3Q+XQorICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MV0KKyAgICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgIFBzaVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgIFBzaVJlZkxpc3RTdHViW1RIUk9XU19MSVNUOl0KKyAgICAgIFBzaU1ldGhvZFN0dWJbdmFsdWVzOmphdmEudXRpbC5Db2xsZWN0aW9uPGphdmEubGFuZy5PYmplY3Q+XQorICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MV0KKyAgICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgIFBzaVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgIFBzaVJlZkxpc3RTdHViW1RIUk9XU19MSVNUOl0KKyAgICAgIFBzaU1ldGhvZFN0dWJbZW50cnlTZXQ6amF2YS51dGlsLlNldDxqYXZhLnV0aWwuTWFwLkVudHJ5PGphdmEubGFuZy5PYmplY3QsamF2YS5sYW5nLk9iamVjdD4+XQorICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MV0KKyAgICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgIFBzaVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgIFBzaVJlZkxpc3RTdHViW1RIUk9XU19MSVNUOl0KKyAgICAgIFBzaU1ldGhvZFN0dWJbZXF1YWxzOmJvb2xlYW5dCisgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0xXQorICAgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgICAgUHNpUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgICAgICBQc2lQYXJhbWV0ZXJTdHViW3AxOmphdmEubGFuZy5PYmplY3RdCisgICAgICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MF0KKyAgICAgICAgUHNpUmVmTGlzdFN0dWJbVEhST1dTX0xJU1Q6XQorICAgICAgUHNpTWV0aG9kU3R1YltoYXNoQ29kZTppbnRdCisgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0xXQorICAgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgICAgUHNpUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgICAgUHNpUmVmTGlzdFN0dWJbVEhST1dTX0xJU1Q6XQorICAgICAgUHNpTWV0aG9kU3R1YltyZWFkUmVzb2x2ZTpqYXZhLmxhbmcuT2JqZWN0XQorICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9Ml0KKyAgICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgIFBzaVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgIFBzaVJlZkxpc3RTdHViW1RIUk9XU19MSVNUOl0KKyAgICBQc2lDbGFzc1N0dWJbbmFtZT1FbXB0eVNldCBmcW49amF2YS51dGlsLkNvbGxlY3Rpb25zLkVtcHR5U2V0XQorICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTEwXQorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3RTdHViCisgICAgICBQc2lSZWZMaXN0U3R1YltFWFRFTkRTX0xJU1Q6amF2YS51dGlsLkFic3RyYWN0U2V0PGphdmEubGFuZy5PYmplY3Q+XQorICAgICAgUHNpUmVmTGlzdFN0dWJbSU1QTEVNRU5UU19MSVNUOmphdmEuaW8uU2VyaWFsaXphYmxlXQorICAgICAgUHNpRmllbGRTdHViW3NlcmlhbFZlcnNpb25VSUQ6bG9uZz0xNTgyMjk2MzE1OTkwMzYyOTIwTF0KKyAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTI2XQorICAgICAgUHNpTWV0aG9kU3R1Yltjb25zIEVtcHR5U2V0OnZvaWRdCisgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0yXQorICAgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgICAgUHNpUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgICAgUHNpUmVmTGlzdFN0dWJbVEhST1dTX0xJU1Q6XQorICAgICAgUHNpTWV0aG9kU3R1YltpdGVyYXRvcjpqYXZhLnV0aWwuSXRlcmF0b3I8amF2YS5sYW5nLk9iamVjdD5dCisgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0xXQorICAgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgICAgUHNpUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgICAgUHNpUmVmTGlzdFN0dWJbVEhST1dTX0xJU1Q6XQorICAgICAgUHNpTWV0aG9kU3R1YltzaXplOmludF0KKyAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTFdCisgICAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgICBQc2lQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgICBQc2lSZWZMaXN0U3R1YltUSFJPV1NfTElTVDpdCisgICAgICBQc2lNZXRob2RTdHViW2NvbnRhaW5zOmJvb2xlYW5dCisgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0xXQorICAgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgICAgUHNpUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgICAgICBQc2lQYXJhbWV0ZXJTdHViW3AxOmphdmEubGFuZy5PYmplY3RdCisgICAgICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MF0KKyAgICAgICAgUHNpUmVmTGlzdFN0dWJbVEhST1dTX0xJU1Q6XQorICAgICAgUHNpTWV0aG9kU3R1YltyZWFkUmVzb2x2ZTpqYXZhLmxhbmcuT2JqZWN0XQorICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9Ml0KKyAgICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgIFBzaVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgIFBzaVJlZkxpc3RTdHViW1RIUk9XU19MSVNUOl0KKyAgICBQc2lDbGFzc1N0dWJbbmFtZT1SZXZlcnNlQ29tcGFyYXRvciBmcW49amF2YS51dGlsLkNvbGxlY3Rpb25zLlJldmVyc2VDb21wYXJhdG9yXQorICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTEwXQorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgIFBzaVR5cGVQYXJhbWV0ZXJbVF0KKyAgICAgICAgICBQc2lSZWZMaXN0U3R1YltFWFRFTkRTX0JPVU5EU19MSVNUOl0KKyAgICAgIFBzaVJlZkxpc3RTdHViW0VYVEVORFNfTElTVDpdCisgICAgICBQc2lSZWZMaXN0U3R1YltJTVBMRU1FTlRTX0xJU1Q6amF2YS51dGlsLkNvbXBhcmF0b3I8amF2YS5sYW5nLkNvbXBhcmFibGU8amF2YS5sYW5nLk9iamVjdD4+LCBqYXZhLmlvLlNlcmlhbGl6YWJsZV0KKyAgICAgIFBzaUZpZWxkU3R1YltzZXJpYWxWZXJzaW9uVUlEOmxvbmc9NzIwNzAzODA2ODQ5NDA2MDI0MExdCisgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0yNl0KKyAgICAgIFBzaU1ldGhvZFN0dWJbY29ucyBSZXZlcnNlQ29tcGFyYXRvcjp2b2lkXQorICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9Ml0KKyAgICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgIFBzaVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgIFBzaVJlZkxpc3RTdHViW1RIUk9XU19MSVNUOl0KKyAgICAgIFBzaU1ldGhvZFN0dWJbY29tcGFyZTppbnRdCisgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0xXQorICAgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgICAgUHNpUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgICAgICBQc2lQYXJhbWV0ZXJTdHViW3AxOmphdmEubGFuZy5Db21wYXJhYmxlPGphdmEubGFuZy5PYmplY3Q+XQorICAgICAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTBdCisgICAgICAgICAgUHNpUGFyYW1ldGVyU3R1YltwMjpqYXZhLmxhbmcuQ29tcGFyYWJsZTxqYXZhLmxhbmcuT2JqZWN0Pl0KKyAgICAgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0wXQorICAgICAgICBQc2lSZWZMaXN0U3R1YltUSFJPV1NfTElTVDpdCisgICAgUHNpQ2xhc3NTdHViW25hbWU9UmV2ZXJzZUNvbXBhcmF0b3IyIGZxbj1qYXZhLnV0aWwuQ29sbGVjdGlvbnMuUmV2ZXJzZUNvbXBhcmF0b3IyXQorICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTEwXQorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgIFBzaVR5cGVQYXJhbWV0ZXJbVF0KKyAgICAgICAgICBQc2lSZWZMaXN0U3R1YltFWFRFTkRTX0JPVU5EU19MSVNUOl0KKyAgICAgIFBzaVJlZkxpc3RTdHViW0VYVEVORFNfTElTVDpdCisgICAgICBQc2lSZWZMaXN0U3R1YltJTVBMRU1FTlRTX0xJU1Q6amF2YS51dGlsLkNvbXBhcmF0b3I8VD4sIGphdmEuaW8uU2VyaWFsaXphYmxlXQorICAgICAgUHNpRmllbGRTdHViW3NlcmlhbFZlcnNpb25VSUQ6bG9uZz00Mzc0MDkyMTM5ODU3TF0KKyAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTI2XQorICAgICAgUHNpRmllbGRTdHViW2NtcDpqYXZhLnV0aWwuQ29tcGFyYXRvcjxUPl0KKyAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTJdCisgICAgICBQc2lNZXRob2RTdHViW2NvbnMgUmV2ZXJzZUNvbXBhcmF0b3IyOnZvaWRdCisgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz00MDk2XQorICAgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgICAgUHNpUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgICAgICBQc2lQYXJhbWV0ZXJTdHViW3AxOmphdmEudXRpbC5Db21wYXJhdG9yPFQ+XQorICAgICAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTBdCisgICAgICAgIFBzaVJlZkxpc3RTdHViW1RIUk9XU19MSVNUOl0KKyAgICAgIFBzaU1ldGhvZFN0dWJbY29tcGFyZTppbnRdCisgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0xXQorICAgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgICAgUHNpUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgICAgICBQc2lQYXJhbWV0ZXJTdHViW3AxOlRdCisgICAgICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MF0KKyAgICAgICAgICBQc2lQYXJhbWV0ZXJTdHViW3AyOlRdCisgICAgICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MF0KKyAgICAgICAgUHNpUmVmTGlzdFN0dWJbVEhST1dTX0xJU1Q6XQorICAgIFBzaUNsYXNzU3R1YltpbnRlcmZhY2UgbmFtZT1TZWxmQ29tcGFyYWJsZSBmcW49amF2YS51dGlsLkNvbGxlY3Rpb25zLlNlbGZDb21wYXJhYmxlXQorICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTEwMzRdCisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgIFBzaVJlZkxpc3RTdHViW0VYVEVORFNfTElTVDpqYXZhLmxhbmcuQ29tcGFyYWJsZTxqYXZhLnV0aWwuQ29sbGVjdGlvbnMuU2VsZkNvbXBhcmFibGU+XQorICAgICAgUHNpUmVmTGlzdFN0dWJbSU1QTEVNRU5UU19MSVNUOl0KKyAgICBQc2lDbGFzc1N0dWJbbmFtZT1TaW5nbGV0b25MaXN0IGZxbj1qYXZhLnV0aWwuQ29sbGVjdGlvbnMuU2luZ2xldG9uTGlzdF0KKyAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0xMF0KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgICBQc2lUeXBlUGFyYW1ldGVyW0VdCisgICAgICAgICAgUHNpUmVmTGlzdFN0dWJbRVhURU5EU19CT1VORFNfTElTVDpdCisgICAgICBQc2lSZWZMaXN0U3R1YltFWFRFTkRTX0xJU1Q6amF2YS51dGlsLkFic3RyYWN0TGlzdDxFPl0KKyAgICAgIFBzaVJlZkxpc3RTdHViW0lNUExFTUVOVFNfTElTVDpqYXZhLnV0aWwuUmFuZG9tQWNjZXNzLCBqYXZhLmlvLlNlcmlhbGl6YWJsZV0KKyAgICAgIFBzaUZpZWxkU3R1YltzZXJpYWxWZXJzaW9uVUlEOmxvbmc9MzA5MzczNjYxODc0MDY1Mjk1MUxdCisgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz00MTIwXQorICAgICAgUHNpRmllbGRTdHViW2VsZW1lbnQ6RV0KKyAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTE4XQorICAgICAgUHNpTWV0aG9kU3R1Yltjb25zIFNpbmdsZXRvbkxpc3Q6dm9pZF0KKyAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTQwOTZdCisgICAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgICBQc2lQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgICAgIFBzaVBhcmFtZXRlclN0dWJbcDE6RV0KKyAgICAgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0wXQorICAgICAgICBQc2lSZWZMaXN0U3R1YltUSFJPV1NfTElTVDpdCisgICAgICBQc2lNZXRob2RTdHViW3NpemU6aW50XQorICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MV0KKyAgICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgIFBzaVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgIFBzaVJlZkxpc3RTdHViW1RIUk9XU19MSVNUOl0KKyAgICAgIFBzaU1ldGhvZFN0dWJbY29udGFpbnM6Ym9vbGVhbl0KKyAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTFdCisgICAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgICBQc2lQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgICAgIFBzaVBhcmFtZXRlclN0dWJbcDE6amF2YS5sYW5nLk9iamVjdF0KKyAgICAgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0wXQorICAgICAgICBQc2lSZWZMaXN0U3R1YltUSFJPV1NfTElTVDpdCisgICAgICBQc2lNZXRob2RTdHViW2dldDpFXQorICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MV0KKyAgICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgIFBzaVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgICAgUHNpUGFyYW1ldGVyU3R1YltwMTppbnRdCisgICAgICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MF0KKyAgICAgICAgUHNpUmVmTGlzdFN0dWJbVEhST1dTX0xJU1Q6XQorICAgIFBzaUNsYXNzU3R1YltuYW1lPVNpbmdsZXRvbk1hcCBmcW49amF2YS51dGlsLkNvbGxlY3Rpb25zLlNpbmdsZXRvbk1hcF0KKyAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0xMF0KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgICBQc2lUeXBlUGFyYW1ldGVyW0tdCisgICAgICAgICAgUHNpUmVmTGlzdFN0dWJbRVhURU5EU19CT1VORFNfTElTVDpdCisgICAgICAgIFBzaVR5cGVQYXJhbWV0ZXJbVl0KKyAgICAgICAgICBQc2lSZWZMaXN0U3R1YltFWFRFTkRTX0JPVU5EU19MSVNUOl0KKyAgICAgIFBzaVJlZkxpc3RTdHViW0VYVEVORFNfTElTVDpqYXZhLnV0aWwuQWJzdHJhY3RNYXA8SyxWPl0KKyAgICAgIFBzaVJlZkxpc3RTdHViW0lNUExFTUVOVFNfTElTVDpqYXZhLmlvLlNlcmlhbGl6YWJsZV0KKyAgICAgIFBzaUNsYXNzU3R1YltuYW1lPUltbXV0YWJsZUVudHJ5IGZxbj1qYXZhLnV0aWwuQ29sbGVjdGlvbnMuU2luZ2xldG9uTWFwLkltbXV0YWJsZUVudHJ5XQorICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MTBdCisgICAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgICAgIFBzaVR5cGVQYXJhbWV0ZXJbS10KKyAgICAgICAgICAgIFBzaVJlZkxpc3RTdHViW0VYVEVORFNfQk9VTkRTX0xJU1Q6XQorICAgICAgICAgIFBzaVR5cGVQYXJhbWV0ZXJbVl0KKyAgICAgICAgICAgIFBzaVJlZkxpc3RTdHViW0VYVEVORFNfQk9VTkRTX0xJU1Q6XQorICAgICAgICBQc2lSZWZMaXN0U3R1YltFWFRFTkRTX0xJU1Q6XQorICAgICAgICBQc2lSZWZMaXN0U3R1YltJTVBMRU1FTlRTX0xJU1Q6amF2YS51dGlsLk1hcC5FbnRyeTxLLFY+XQorICAgICAgICBQc2lGaWVsZFN0dWJbazpLXQorICAgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz00MTEyXQorICAgICAgICBQc2lGaWVsZFN0dWJbdjpWXQorICAgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz00MTEyXQorICAgICAgICBQc2lNZXRob2RTdHViW2NvbnMgSW1tdXRhYmxlRW50cnk6dm9pZF0KKyAgICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9NDA5Nl0KKyAgICAgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgICAgICBQc2lQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgICAgICAgUHNpUGFyYW1ldGVyU3R1YltwMTpLXQorICAgICAgICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MF0KKyAgICAgICAgICAgIFBzaVBhcmFtZXRlclN0dWJbcDI6Vl0KKyAgICAgICAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTBdCisgICAgICAgICAgUHNpUmVmTGlzdFN0dWJbVEhST1dTX0xJU1Q6XQorICAgICAgICBQc2lNZXRob2RTdHViW2dldEtleTpLXQorICAgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0xXQorICAgICAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgICAgIFBzaVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgICAgUHNpUmVmTGlzdFN0dWJbVEhST1dTX0xJU1Q6XQorICAgICAgICBQc2lNZXRob2RTdHViW2dldFZhbHVlOlZdCisgICAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTFdCisgICAgICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgICAgUHNpUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgICAgICBQc2lSZWZMaXN0U3R1YltUSFJPV1NfTElTVDpdCisgICAgICAgIFBzaU1ldGhvZFN0dWJbc2V0VmFsdWU6Vl0KKyAgICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MV0KKyAgICAgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgICAgICBQc2lQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgICAgICAgUHNpUGFyYW1ldGVyU3R1YltwMTpWXQorICAgICAgICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MF0KKyAgICAgICAgICBQc2lSZWZMaXN0U3R1YltUSFJPV1NfTElTVDpdCisgICAgICAgIFBzaU1ldGhvZFN0dWJbZXF1YWxzOmJvb2xlYW5dCisgICAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTFdCisgICAgICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgICAgUHNpUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgICAgICAgIFBzaVBhcmFtZXRlclN0dWJbcDE6amF2YS5sYW5nLk9iamVjdF0KKyAgICAgICAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTBdCisgICAgICAgICAgUHNpUmVmTGlzdFN0dWJbVEhST1dTX0xJU1Q6XQorICAgICAgICBQc2lNZXRob2RTdHViW2hhc2hDb2RlOmludF0KKyAgICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MV0KKyAgICAgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgICAgICBQc2lQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgICAgIFBzaVJlZkxpc3RTdHViW1RIUk9XU19MSVNUOl0KKyAgICAgICAgUHNpTWV0aG9kU3R1Ylt0b1N0cmluZzpqYXZhLmxhbmcuU3RyaW5nXQorICAgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0xXQorICAgICAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgICAgIFBzaVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgICAgUHNpUmVmTGlzdFN0dWJbVEhST1dTX0xJU1Q6XQorICAgICAgUHNpRmllbGRTdHViW3NlcmlhbFZlcnNpb25VSUQ6bG9uZz0tNjk3OTcyNDQ3NzIxNTA1MjkxMUxdCisgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0yNl0KKyAgICAgIFBzaUZpZWxkU3R1YltrOktdCisgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0xOF0KKyAgICAgIFBzaUZpZWxkU3R1Ylt2OlZdCisgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0xOF0KKyAgICAgIFBzaUZpZWxkU3R1YltrZXlTZXQ6amF2YS51dGlsLlNldDxLPl0KKyAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTEzMF0KKyAgICAgIFBzaUZpZWxkU3R1YltlbnRyeVNldDpqYXZhLnV0aWwuU2V0PGphdmEudXRpbC5NYXAuRW50cnk8SyxWPj5dCisgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0xMzBdCisgICAgICBQc2lGaWVsZFN0dWJbdmFsdWVzOmphdmEudXRpbC5Db2xsZWN0aW9uPFY+XQorICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MTMwXQorICAgICAgUHNpTWV0aG9kU3R1Yltjb25zIFNpbmdsZXRvbk1hcDp2b2lkXQorICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9NDA5Nl0KKyAgICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgIFBzaVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgICAgUHNpUGFyYW1ldGVyU3R1YltwMTpLXQorICAgICAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTBdCisgICAgICAgICAgUHNpUGFyYW1ldGVyU3R1YltwMjpWXQorICAgICAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTBdCisgICAgICAgIFBzaVJlZkxpc3RTdHViW1RIUk9XU19MSVNUOl0KKyAgICAgIFBzaU1ldGhvZFN0dWJbc2l6ZTppbnRdCisgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0xXQorICAgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgICAgUHNpUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgICAgUHNpUmVmTGlzdFN0dWJbVEhST1dTX0xJU1Q6XQorICAgICAgUHNpTWV0aG9kU3R1Yltpc0VtcHR5OmJvb2xlYW5dCisgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0xXQorICAgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgICAgUHNpUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgICAgUHNpUmVmTGlzdFN0dWJbVEhST1dTX0xJU1Q6XQorICAgICAgUHNpTWV0aG9kU3R1Yltjb250YWluc0tleTpib29sZWFuXQorICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MV0KKyAgICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgIFBzaVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgICAgUHNpUGFyYW1ldGVyU3R1YltwMTpqYXZhLmxhbmcuT2JqZWN0XQorICAgICAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTBdCisgICAgICAgIFBzaVJlZkxpc3RTdHViW1RIUk9XU19MSVNUOl0KKyAgICAgIFBzaU1ldGhvZFN0dWJbY29udGFpbnNWYWx1ZTpib29sZWFuXQorICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MV0KKyAgICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgIFBzaVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgICAgUHNpUGFyYW1ldGVyU3R1YltwMTpqYXZhLmxhbmcuT2JqZWN0XQorICAgICAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTBdCisgICAgICAgIFBzaVJlZkxpc3RTdHViW1RIUk9XU19MSVNUOl0KKyAgICAgIFBzaU1ldGhvZFN0dWJbZ2V0OlZdCisgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0xXQorICAgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgICAgUHNpUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgICAgICBQc2lQYXJhbWV0ZXJTdHViW3AxOmphdmEubGFuZy5PYmplY3RdCisgICAgICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MF0KKyAgICAgICAgUHNpUmVmTGlzdFN0dWJbVEhST1dTX0xJU1Q6XQorICAgICAgUHNpTWV0aG9kU3R1YltrZXlTZXQ6amF2YS51dGlsLlNldDxLPl0KKyAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTFdCisgICAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgICBQc2lQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgICBQc2lSZWZMaXN0U3R1YltUSFJPV1NfTElTVDpdCisgICAgICBQc2lNZXRob2RTdHViW2VudHJ5U2V0OmphdmEudXRpbC5TZXQ8amF2YS51dGlsLk1hcC5FbnRyeTxLLFY+Pl0KKyAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTFdCisgICAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgICBQc2lQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgICBQc2lSZWZMaXN0U3R1YltUSFJPV1NfTElTVDpdCisgICAgICBQc2lNZXRob2RTdHViW3ZhbHVlczpqYXZhLnV0aWwuQ29sbGVjdGlvbjxWPl0KKyAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTFdCisgICAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgICBQc2lQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgICBQc2lSZWZMaXN0U3R1YltUSFJPV1NfTElTVDpdCisgICAgUHNpQ2xhc3NTdHViW25hbWU9U2luZ2xldG9uU2V0IGZxbj1qYXZhLnV0aWwuQ29sbGVjdGlvbnMuU2luZ2xldG9uU2V0XQorICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTEwXQorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgIFBzaVR5cGVQYXJhbWV0ZXJbRV0KKyAgICAgICAgICBQc2lSZWZMaXN0U3R1YltFWFRFTkRTX0JPVU5EU19MSVNUOl0KKyAgICAgIFBzaVJlZkxpc3RTdHViW0VYVEVORFNfTElTVDpqYXZhLnV0aWwuQWJzdHJhY3RTZXQ8RT5dCisgICAgICBQc2lSZWZMaXN0U3R1YltJTVBMRU1FTlRTX0xJU1Q6amF2YS5pby5TZXJpYWxpemFibGVdCisgICAgICBQc2lGaWVsZFN0dWJbc2VyaWFsVmVyc2lvblVJRDpsb25nPTMxOTM2ODcyMDc1NTA0MzE2NzlMXQorICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MjZdCisgICAgICBQc2lGaWVsZFN0dWJbZWxlbWVudDpFXQorICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MThdCisgICAgICBQc2lNZXRob2RTdHViW2NvbnMgU2luZ2xldG9uU2V0OnZvaWRdCisgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz00MDk2XQorICAgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgICAgUHNpUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgICAgICBQc2lQYXJhbWV0ZXJTdHViW3AxOkVdCisgICAgICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MF0KKyAgICAgICAgUHNpUmVmTGlzdFN0dWJbVEhST1dTX0xJU1Q6XQorICAgICAgUHNpTWV0aG9kU3R1YltpdGVyYXRvcjpqYXZhLnV0aWwuSXRlcmF0b3I8RT5dCisgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0xXQorICAgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgICAgUHNpUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgICAgUHNpUmVmTGlzdFN0dWJbVEhST1dTX0xJU1Q6XQorICAgICAgUHNpTWV0aG9kU3R1YltzaXplOmludF0KKyAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTFdCisgICAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgICBQc2lQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgICBQc2lSZWZMaXN0U3R1YltUSFJPV1NfTElTVDpdCisgICAgICBQc2lNZXRob2RTdHViW2NvbnRhaW5zOmJvb2xlYW5dCisgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0xXQorICAgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgICAgUHNpUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgICAgICBQc2lQYXJhbWV0ZXJTdHViW3AxOmphdmEubGFuZy5PYmplY3RdCisgICAgICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MF0KKyAgICAgICAgUHNpUmVmTGlzdFN0dWJbVEhST1dTX0xJU1Q6XQorICAgIFBzaUNsYXNzU3R1YltuYW1lPVN5bmNocm9uaXplZENvbGxlY3Rpb24gZnFuPWphdmEudXRpbC5Db2xsZWN0aW9ucy5TeW5jaHJvbml6ZWRDb2xsZWN0aW9uXQorICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTQxMDRdCisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgICAgUHNpVHlwZVBhcmFtZXRlcltFXQorICAgICAgICAgIFBzaVJlZkxpc3RTdHViW0VYVEVORFNfQk9VTkRTX0xJU1Q6XQorICAgICAgUHNpUmVmTGlzdFN0dWJbRVhURU5EU19MSVNUOl0KKyAgICAgIFBzaVJlZkxpc3RTdHViW0lNUExFTUVOVFNfTElTVDpqYXZhLnV0aWwuQ29sbGVjdGlvbjxFPiwgamF2YS5pby5TZXJpYWxpemFibGVdCisgICAgICBQc2lGaWVsZFN0dWJbc2VyaWFsVmVyc2lvblVJRDpsb25nPTMwNTM5OTUwMzIwOTEzMzUwOTNMXQorICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MjZdCisgICAgICBQc2lGaWVsZFN0dWJbYzpqYXZhLnV0aWwuQ29sbGVjdGlvbjxFPl0KKyAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTQwOTZdCisgICAgICBQc2lGaWVsZFN0dWJbbXV0ZXg6amF2YS5sYW5nLk9iamVjdF0KKyAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTQwOTZdCisgICAgICBQc2lNZXRob2RTdHViW2NvbnMgU3luY2hyb25pemVkQ29sbGVjdGlvbjp2b2lkXQorICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9NDA5Nl0KKyAgICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgIFBzaVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgICAgUHNpUGFyYW1ldGVyU3R1YltwMTpqYXZhLnV0aWwuQ29sbGVjdGlvbjxFPl0KKyAgICAgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0wXQorICAgICAgICBQc2lSZWZMaXN0U3R1YltUSFJPV1NfTElTVDpdCisgICAgICBQc2lNZXRob2RTdHViW2NvbnMgU3luY2hyb25pemVkQ29sbGVjdGlvbjp2b2lkXQorICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9NDA5Nl0KKyAgICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgIFBzaVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgICAgUHNpUGFyYW1ldGVyU3R1YltwMTpqYXZhLnV0aWwuQ29sbGVjdGlvbjxFPl0KKyAgICAgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0wXQorICAgICAgICAgIFBzaVBhcmFtZXRlclN0dWJbcDI6amF2YS5sYW5nLk9iamVjdF0KKyAgICAgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0wXQorICAgICAgICBQc2lSZWZMaXN0U3R1YltUSFJPV1NfTElTVDpdCisgICAgICBQc2lNZXRob2RTdHViW3NpemU6aW50XQorICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MV0KKyAgICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgIFBzaVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgIFBzaVJlZkxpc3RTdHViW1RIUk9XU19MSVNUOl0KKyAgICAgIFBzaU1ldGhvZFN0dWJbaXNFbXB0eTpib29sZWFuXQorICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MV0KKyAgICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgIFBzaVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgIFBzaVJlZkxpc3RTdHViW1RIUk9XU19MSVNUOl0KKyAgICAgIFBzaU1ldGhvZFN0dWJbY29udGFpbnM6Ym9vbGVhbl0KKyAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTFdCisgICAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgICBQc2lQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgICAgIFBzaVBhcmFtZXRlclN0dWJbcDE6amF2YS5sYW5nLk9iamVjdF0KKyAgICAgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0wXQorICAgICAgICBQc2lSZWZMaXN0U3R1YltUSFJPV1NfTElTVDpdCisgICAgICBQc2lNZXRob2RTdHViW3RvQXJyYXk6amF2YS5sYW5nLk9iamVjdFtdXQorICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MV0KKyAgICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgIFBzaVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgIFBzaVJlZkxpc3RTdHViW1RIUk9XU19MSVNUOl0KKyAgICAgIFBzaU1ldGhvZFN0dWJbdG9BcnJheTpUW11dCisgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0xXQorICAgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgICAgICBQc2lUeXBlUGFyYW1ldGVyW1RdCisgICAgICAgICAgICBQc2lSZWZMaXN0U3R1YltFWFRFTkRTX0JPVU5EU19MSVNUOl0KKyAgICAgICAgUHNpUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgICAgICBQc2lQYXJhbWV0ZXJTdHViW3AxOlRbXV0KKyAgICAgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0wXQorICAgICAgICBQc2lSZWZMaXN0U3R1YltUSFJPV1NfTElTVDpdCisgICAgICBQc2lNZXRob2RTdHViW2l0ZXJhdG9yOmphdmEudXRpbC5JdGVyYXRvcjxFPl0KKyAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTFdCisgICAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgICBQc2lQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgICBQc2lSZWZMaXN0U3R1YltUSFJPV1NfTElTVDpdCisgICAgICBQc2lNZXRob2RTdHViW2FkZDpib29sZWFuXQorICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MV0KKyAgICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgIFBzaVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgICAgUHNpUGFyYW1ldGVyU3R1YltwMTpFXQorICAgICAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTBdCisgICAgICAgIFBzaVJlZkxpc3RTdHViW1RIUk9XU19MSVNUOl0KKyAgICAgIFBzaU1ldGhvZFN0dWJbcmVtb3ZlOmJvb2xlYW5dCisgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0xXQorICAgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgICAgUHNpUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgICAgICBQc2lQYXJhbWV0ZXJTdHViW3AxOmphdmEubGFuZy5PYmplY3RdCisgICAgICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MF0KKyAgICAgICAgUHNpUmVmTGlzdFN0dWJbVEhST1dTX0xJU1Q6XQorICAgICAgUHNpTWV0aG9kU3R1Yltjb250YWluc0FsbDpib29sZWFuXQorICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MV0KKyAgICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgIFBzaVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgICAgUHNpUGFyYW1ldGVyU3R1YltwMTpqYXZhLnV0aWwuQ29sbGVjdGlvbjw/Pl0KKyAgICAgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0wXQorICAgICAgICBQc2lSZWZMaXN0U3R1YltUSFJPV1NfTElTVDpdCisgICAgICBQc2lNZXRob2RTdHViW2FkZEFsbDpib29sZWFuXQorICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MV0KKyAgICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgIFBzaVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgICAgUHNpUGFyYW1ldGVyU3R1YltwMTpqYXZhLnV0aWwuQ29sbGVjdGlvbjw/IGV4dGVuZHMgRT5dCisgICAgICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MF0KKyAgICAgICAgUHNpUmVmTGlzdFN0dWJbVEhST1dTX0xJU1Q6XQorICAgICAgUHNpTWV0aG9kU3R1YltyZW1vdmVBbGw6Ym9vbGVhbl0KKyAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTFdCisgICAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgICBQc2lQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgICAgIFBzaVBhcmFtZXRlclN0dWJbcDE6amF2YS51dGlsLkNvbGxlY3Rpb248Pz5dCisgICAgICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MF0KKyAgICAgICAgUHNpUmVmTGlzdFN0dWJbVEhST1dTX0xJU1Q6XQorICAgICAgUHNpTWV0aG9kU3R1YltyZXRhaW5BbGw6Ym9vbGVhbl0KKyAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTFdCisgICAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgICBQc2lQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgICAgIFBzaVBhcmFtZXRlclN0dWJbcDE6amF2YS51dGlsLkNvbGxlY3Rpb248Pz5dCisgICAgICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MF0KKyAgICAgICAgUHNpUmVmTGlzdFN0dWJbVEhST1dTX0xJU1Q6XQorICAgICAgUHNpTWV0aG9kU3R1YltjbGVhcjp2b2lkXQorICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MV0KKyAgICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgIFBzaVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgIFBzaVJlZkxpc3RTdHViW1RIUk9XU19MSVNUOl0KKyAgICAgIFBzaU1ldGhvZFN0dWJbdG9TdHJpbmc6amF2YS5sYW5nLlN0cmluZ10KKyAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTFdCisgICAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgICBQc2lQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgICBQc2lSZWZMaXN0U3R1YltUSFJPV1NfTElTVDpdCisgICAgUHNpQ2xhc3NTdHViW25hbWU9U3luY2hyb25pemVkTGlzdCBmcW49amF2YS51dGlsLkNvbGxlY3Rpb25zLlN5bmNocm9uaXplZExpc3RdCisgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9NDEwNF0KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgICBQc2lUeXBlUGFyYW1ldGVyW0VdCisgICAgICAgICAgUHNpUmVmTGlzdFN0dWJbRVhURU5EU19CT1VORFNfTElTVDpdCisgICAgICBQc2lSZWZMaXN0U3R1YltFWFRFTkRTX0xJU1Q6amF2YS51dGlsLkNvbGxlY3Rpb25zLlN5bmNocm9uaXplZENvbGxlY3Rpb248RT5dCisgICAgICBQc2lSZWZMaXN0U3R1YltJTVBMRU1FTlRTX0xJU1Q6amF2YS51dGlsLkxpc3Q8RT5dCisgICAgICBQc2lGaWVsZFN0dWJbc2VyaWFsVmVyc2lvblVJRDpsb25nPS03NzU0MDkwMzcyOTYyOTcxNTI0TF0KKyAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTQxMjBdCisgICAgICBQc2lGaWVsZFN0dWJbbGlzdDpqYXZhLnV0aWwuTGlzdDxFPl0KKyAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTQwOTZdCisgICAgICBQc2lNZXRob2RTdHViW2NvbnMgU3luY2hyb25pemVkTGlzdDp2b2lkXQorICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9NDA5Nl0KKyAgICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgIFBzaVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgICAgUHNpUGFyYW1ldGVyU3R1YltwMTpqYXZhLnV0aWwuTGlzdDxFPl0KKyAgICAgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0wXQorICAgICAgICBQc2lSZWZMaXN0U3R1YltUSFJPV1NfTElTVDpdCisgICAgICBQc2lNZXRob2RTdHViW2NvbnMgU3luY2hyb25pemVkTGlzdDp2b2lkXQorICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9NDA5Nl0KKyAgICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgIFBzaVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgICAgUHNpUGFyYW1ldGVyU3R1YltwMTpqYXZhLnV0aWwuTGlzdDxFPl0KKyAgICAgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0wXQorICAgICAgICAgIFBzaVBhcmFtZXRlclN0dWJbcDI6amF2YS5sYW5nLk9iamVjdF0KKyAgICAgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0wXQorICAgICAgICBQc2lSZWZMaXN0U3R1YltUSFJPV1NfTElTVDpdCisgICAgICBQc2lNZXRob2RTdHViW2VxdWFsczpib29sZWFuXQorICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MV0KKyAgICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgIFBzaVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgICAgUHNpUGFyYW1ldGVyU3R1YltwMTpqYXZhLmxhbmcuT2JqZWN0XQorICAgICAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTBdCisgICAgICAgIFBzaVJlZkxpc3RTdHViW1RIUk9XU19MSVNUOl0KKyAgICAgIFBzaU1ldGhvZFN0dWJbaGFzaENvZGU6aW50XQorICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MV0KKyAgICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgIFBzaVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgIFBzaVJlZkxpc3RTdHViW1RIUk9XU19MSVNUOl0KKyAgICAgIFBzaU1ldGhvZFN0dWJbZ2V0OkVdCisgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0xXQorICAgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgICAgUHNpUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgICAgICBQc2lQYXJhbWV0ZXJTdHViW3AxOmludF0KKyAgICAgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0wXQorICAgICAgICBQc2lSZWZMaXN0U3R1YltUSFJPV1NfTElTVDpdCisgICAgICBQc2lNZXRob2RTdHViW3NldDpFXQorICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MV0KKyAgICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgIFBzaVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgICAgUHNpUGFyYW1ldGVyU3R1YltwMTppbnRdCisgICAgICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MF0KKyAgICAgICAgICBQc2lQYXJhbWV0ZXJTdHViW3AyOkVdCisgICAgICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MF0KKyAgICAgICAgUHNpUmVmTGlzdFN0dWJbVEhST1dTX0xJU1Q6XQorICAgICAgUHNpTWV0aG9kU3R1YlthZGQ6dm9pZF0KKyAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTFdCisgICAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgICBQc2lQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgICAgIFBzaVBhcmFtZXRlclN0dWJbcDE6aW50XQorICAgICAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTBdCisgICAgICAgICAgUHNpUGFyYW1ldGVyU3R1YltwMjpFXQorICAgICAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTBdCisgICAgICAgIFBzaVJlZkxpc3RTdHViW1RIUk9XU19MSVNUOl0KKyAgICAgIFBzaU1ldGhvZFN0dWJbcmVtb3ZlOkVdCisgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0xXQorICAgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgICAgUHNpUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgICAgICBQc2lQYXJhbWV0ZXJTdHViW3AxOmludF0KKyAgICAgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0wXQorICAgICAgICBQc2lSZWZMaXN0U3R1YltUSFJPV1NfTElTVDpdCisgICAgICBQc2lNZXRob2RTdHViW2luZGV4T2Y6aW50XQorICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MV0KKyAgICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgIFBzaVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgICAgUHNpUGFyYW1ldGVyU3R1YltwMTpqYXZhLmxhbmcuT2JqZWN0XQorICAgICAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTBdCisgICAgICAgIFBzaVJlZkxpc3RTdHViW1RIUk9XU19MSVNUOl0KKyAgICAgIFBzaU1ldGhvZFN0dWJbbGFzdEluZGV4T2Y6aW50XQorICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MV0KKyAgICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgIFBzaVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgICAgUHNpUGFyYW1ldGVyU3R1YltwMTpqYXZhLmxhbmcuT2JqZWN0XQorICAgICAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTBdCisgICAgICAgIFBzaVJlZkxpc3RTdHViW1RIUk9XU19MSVNUOl0KKyAgICAgIFBzaU1ldGhvZFN0dWJbYWRkQWxsOmJvb2xlYW5dCisgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0xXQorICAgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgICAgUHNpUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgICAgICBQc2lQYXJhbWV0ZXJTdHViW3AxOmludF0KKyAgICAgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0wXQorICAgICAgICAgIFBzaVBhcmFtZXRlclN0dWJbcDI6amF2YS51dGlsLkNvbGxlY3Rpb248PyBleHRlbmRzIEU+XQorICAgICAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTBdCisgICAgICAgIFBzaVJlZkxpc3RTdHViW1RIUk9XU19MSVNUOl0KKyAgICAgIFBzaU1ldGhvZFN0dWJbbGlzdEl0ZXJhdG9yOmphdmEudXRpbC5MaXN0SXRlcmF0b3I8RT5dCisgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0xXQorICAgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgICAgUHNpUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgICAgUHNpUmVmTGlzdFN0dWJbVEhST1dTX0xJU1Q6XQorICAgICAgUHNpTWV0aG9kU3R1YltsaXN0SXRlcmF0b3I6amF2YS51dGlsLkxpc3RJdGVyYXRvcjxFPl0KKyAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTFdCisgICAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgICBQc2lQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgICAgIFBzaVBhcmFtZXRlclN0dWJbcDE6aW50XQorICAgICAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTBdCisgICAgICAgIFBzaVJlZkxpc3RTdHViW1RIUk9XU19MSVNUOl0KKyAgICAgIFBzaU1ldGhvZFN0dWJbc3ViTGlzdDpqYXZhLnV0aWwuTGlzdDxFPl0KKyAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTFdCisgICAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgICBQc2lQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgICAgIFBzaVBhcmFtZXRlclN0dWJbcDE6aW50XQorICAgICAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTBdCisgICAgICAgICAgUHNpUGFyYW1ldGVyU3R1YltwMjppbnRdCisgICAgICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MF0KKyAgICAgICAgUHNpUmVmTGlzdFN0dWJbVEhST1dTX0xJU1Q6XQorICAgICAgUHNpTWV0aG9kU3R1YltyZWFkUmVzb2x2ZTpqYXZhLmxhbmcuT2JqZWN0XQorICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9Ml0KKyAgICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgIFBzaVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgIFBzaVJlZkxpc3RTdHViW1RIUk9XU19MSVNUOl0KKyAgICBQc2lDbGFzc1N0dWJbbmFtZT1TeW5jaHJvbml6ZWRNYXAgZnFuPWphdmEudXRpbC5Db2xsZWN0aW9ucy5TeW5jaHJvbml6ZWRNYXBdCisgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MTBdCisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgICAgUHNpVHlwZVBhcmFtZXRlcltLXQorICAgICAgICAgIFBzaVJlZkxpc3RTdHViW0VYVEVORFNfQk9VTkRTX0xJU1Q6XQorICAgICAgICBQc2lUeXBlUGFyYW1ldGVyW1ZdCisgICAgICAgICAgUHNpUmVmTGlzdFN0dWJbRVhURU5EU19CT1VORFNfTElTVDpdCisgICAgICBQc2lSZWZMaXN0U3R1YltFWFRFTkRTX0xJU1Q6XQorICAgICAgUHNpUmVmTGlzdFN0dWJbSU1QTEVNRU5UU19MSVNUOmphdmEudXRpbC5NYXA8SyxWPiwgamF2YS5pby5TZXJpYWxpemFibGVdCisgICAgICBQc2lGaWVsZFN0dWJbc2VyaWFsVmVyc2lvblVJRDpsb25nPTE5NzgxOTg0Nzk2NTkwMjI3MTVMXQorICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MjZdCisgICAgICBQc2lGaWVsZFN0dWJbbTpqYXZhLnV0aWwuTWFwPEssVj5dCisgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0yXQorICAgICAgUHNpRmllbGRTdHViW211dGV4OmphdmEubGFuZy5PYmplY3RdCisgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz00MDk2XQorICAgICAgUHNpRmllbGRTdHViW2tleVNldDpqYXZhLnV0aWwuU2V0PEs+XQorICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MTMwXQorICAgICAgUHNpRmllbGRTdHViW2VudHJ5U2V0OmphdmEudXRpbC5TZXQ8amF2YS51dGlsLk1hcC5FbnRyeTxLLFY+Pl0KKyAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTEzMF0KKyAgICAgIFBzaUZpZWxkU3R1Ylt2YWx1ZXM6amF2YS51dGlsLkNvbGxlY3Rpb248Vj5dCisgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0xMzBdCisgICAgICBQc2lNZXRob2RTdHViW2NvbnMgU3luY2hyb25pemVkTWFwOnZvaWRdCisgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz00MDk2XQorICAgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgICAgUHNpUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgICAgICBQc2lQYXJhbWV0ZXJTdHViW3AxOmphdmEudXRpbC5NYXA8SyxWPl0KKyAgICAgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0wXQorICAgICAgICBQc2lSZWZMaXN0U3R1YltUSFJPV1NfTElTVDpdCisgICAgICBQc2lNZXRob2RTdHViW2NvbnMgU3luY2hyb25pemVkTWFwOnZvaWRdCisgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz00MDk2XQorICAgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgICAgUHNpUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgICAgICBQc2lQYXJhbWV0ZXJTdHViW3AxOmphdmEudXRpbC5NYXA8SyxWPl0KKyAgICAgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0wXQorICAgICAgICAgIFBzaVBhcmFtZXRlclN0dWJbcDI6amF2YS5sYW5nLk9iamVjdF0KKyAgICAgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0wXQorICAgICAgICBQc2lSZWZMaXN0U3R1YltUSFJPV1NfTElTVDpdCisgICAgICBQc2lNZXRob2RTdHViW3NpemU6aW50XQorICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MV0KKyAgICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgIFBzaVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgIFBzaVJlZkxpc3RTdHViW1RIUk9XU19MSVNUOl0KKyAgICAgIFBzaU1ldGhvZFN0dWJbaXNFbXB0eTpib29sZWFuXQorICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MV0KKyAgICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgIFBzaVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgIFBzaVJlZkxpc3RTdHViW1RIUk9XU19MSVNUOl0KKyAgICAgIFBzaU1ldGhvZFN0dWJbY29udGFpbnNLZXk6Ym9vbGVhbl0KKyAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTFdCisgICAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgICBQc2lQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgICAgIFBzaVBhcmFtZXRlclN0dWJbcDE6amF2YS5sYW5nLk9iamVjdF0KKyAgICAgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0wXQorICAgICAgICBQc2lSZWZMaXN0U3R1YltUSFJPV1NfTElTVDpdCisgICAgICBQc2lNZXRob2RTdHViW2NvbnRhaW5zVmFsdWU6Ym9vbGVhbl0KKyAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTFdCisgICAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgICBQc2lQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgICAgIFBzaVBhcmFtZXRlclN0dWJbcDE6amF2YS5sYW5nLk9iamVjdF0KKyAgICAgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0wXQorICAgICAgICBQc2lSZWZMaXN0U3R1YltUSFJPV1NfTElTVDpdCisgICAgICBQc2lNZXRob2RTdHViW2dldDpWXQorICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MV0KKyAgICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgIFBzaVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgICAgUHNpUGFyYW1ldGVyU3R1YltwMTpqYXZhLmxhbmcuT2JqZWN0XQorICAgICAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTBdCisgICAgICAgIFBzaVJlZkxpc3RTdHViW1RIUk9XU19MSVNUOl0KKyAgICAgIFBzaU1ldGhvZFN0dWJbcHV0OlZdCisgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0xXQorICAgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgICAgUHNpUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgICAgICBQc2lQYXJhbWV0ZXJTdHViW3AxOktdCisgICAgICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MF0KKyAgICAgICAgICBQc2lQYXJhbWV0ZXJTdHViW3AyOlZdCisgICAgICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MF0KKyAgICAgICAgUHNpUmVmTGlzdFN0dWJbVEhST1dTX0xJU1Q6XQorICAgICAgUHNpTWV0aG9kU3R1YltyZW1vdmU6Vl0KKyAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTFdCisgICAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgICBQc2lQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgICAgIFBzaVBhcmFtZXRlclN0dWJbcDE6amF2YS5sYW5nLk9iamVjdF0KKyAgICAgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0wXQorICAgICAgICBQc2lSZWZMaXN0U3R1YltUSFJPV1NfTElTVDpdCisgICAgICBQc2lNZXRob2RTdHViW3B1dEFsbDp2b2lkXQorICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MV0KKyAgICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgIFBzaVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgICAgUHNpUGFyYW1ldGVyU3R1YltwMTpqYXZhLnV0aWwuTWFwPD8gZXh0ZW5kcyBLLD8gZXh0ZW5kcyBWPl0KKyAgICAgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0wXQorICAgICAgICBQc2lSZWZMaXN0U3R1YltUSFJPV1NfTElTVDpdCisgICAgICBQc2lNZXRob2RTdHViW2NsZWFyOnZvaWRdCisgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0xXQorICAgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgICAgUHNpUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgICAgUHNpUmVmTGlzdFN0dWJbVEhST1dTX0xJU1Q6XQorICAgICAgUHNpTWV0aG9kU3R1YltrZXlTZXQ6amF2YS51dGlsLlNldDxLPl0KKyAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTFdCisgICAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgICBQc2lQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgICBQc2lSZWZMaXN0U3R1YltUSFJPV1NfTElTVDpdCisgICAgICBQc2lNZXRob2RTdHViW2VudHJ5U2V0OmphdmEudXRpbC5TZXQ8amF2YS51dGlsLk1hcC5FbnRyeTxLLFY+Pl0KKyAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTFdCisgICAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgICBQc2lQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgICBQc2lSZWZMaXN0U3R1YltUSFJPV1NfTElTVDpdCisgICAgICBQc2lNZXRob2RTdHViW3ZhbHVlczpqYXZhLnV0aWwuQ29sbGVjdGlvbjxWPl0KKyAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTFdCisgICAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgICBQc2lQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgICBQc2lSZWZMaXN0U3R1YltUSFJPV1NfTElTVDpdCisgICAgICBQc2lNZXRob2RTdHViW2VxdWFsczpib29sZWFuXQorICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MV0KKyAgICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgIFBzaVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgICAgUHNpUGFyYW1ldGVyU3R1YltwMTpqYXZhLmxhbmcuT2JqZWN0XQorICAgICAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTBdCisgICAgICAgIFBzaVJlZkxpc3RTdHViW1RIUk9XU19MSVNUOl0KKyAgICAgIFBzaU1ldGhvZFN0dWJbaGFzaENvZGU6aW50XQorICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MV0KKyAgICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgIFBzaVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgIFBzaVJlZkxpc3RTdHViW1RIUk9XU19MSVNUOl0KKyAgICAgIFBzaU1ldGhvZFN0dWJbdG9TdHJpbmc6amF2YS5sYW5nLlN0cmluZ10KKyAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTFdCisgICAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgICBQc2lQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgICBQc2lSZWZMaXN0U3R1YltUSFJPV1NfTElTVDpdCisgICAgUHNpQ2xhc3NTdHViW25hbWU9U3luY2hyb25pemVkUmFuZG9tQWNjZXNzTGlzdCBmcW49amF2YS51dGlsLkNvbGxlY3Rpb25zLlN5bmNocm9uaXplZFJhbmRvbUFjY2Vzc0xpc3RdCisgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9NDEwNF0KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgICBQc2lUeXBlUGFyYW1ldGVyW0VdCisgICAgICAgICAgUHNpUmVmTGlzdFN0dWJbRVhURU5EU19CT1VORFNfTElTVDpdCisgICAgICBQc2lSZWZMaXN0U3R1YltFWFRFTkRTX0xJU1Q6amF2YS51dGlsLkNvbGxlY3Rpb25zLlN5bmNocm9uaXplZExpc3Q8RT5dCisgICAgICBQc2lSZWZMaXN0U3R1YltJTVBMRU1FTlRTX0xJU1Q6amF2YS51dGlsLlJhbmRvbUFjY2Vzc10KKyAgICAgIFBzaUZpZWxkU3R1YltzZXJpYWxWZXJzaW9uVUlEOmxvbmc9MTUzMDY3NDU4MzYwMjM1ODQ4MkxdCisgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz00MTIwXQorICAgICAgUHNpTWV0aG9kU3R1Yltjb25zIFN5bmNocm9uaXplZFJhbmRvbUFjY2Vzc0xpc3Q6dm9pZF0KKyAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTQwOTZdCisgICAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgICBQc2lQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgICAgIFBzaVBhcmFtZXRlclN0dWJbcDE6amF2YS51dGlsLkxpc3Q8RT5dCisgICAgICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MF0KKyAgICAgICAgUHNpUmVmTGlzdFN0dWJbVEhST1dTX0xJU1Q6XQorICAgICAgUHNpTWV0aG9kU3R1Yltjb25zIFN5bmNocm9uaXplZFJhbmRvbUFjY2Vzc0xpc3Q6dm9pZF0KKyAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTQwOTZdCisgICAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgICBQc2lQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgICAgIFBzaVBhcmFtZXRlclN0dWJbcDE6amF2YS51dGlsLkxpc3Q8RT5dCisgICAgICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MF0KKyAgICAgICAgICBQc2lQYXJhbWV0ZXJTdHViW3AyOmphdmEubGFuZy5PYmplY3RdCisgICAgICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MF0KKyAgICAgICAgUHNpUmVmTGlzdFN0dWJbVEhST1dTX0xJU1Q6XQorICAgICAgUHNpTWV0aG9kU3R1YltzdWJMaXN0OmphdmEudXRpbC5MaXN0PEU+XQorICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MV0KKyAgICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgIFBzaVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgICAgUHNpUGFyYW1ldGVyU3R1YltwMTppbnRdCisgICAgICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MF0KKyAgICAgICAgICBQc2lQYXJhbWV0ZXJTdHViW3AyOmludF0KKyAgICAgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0wXQorICAgICAgICBQc2lSZWZMaXN0U3R1YltUSFJPV1NfTElTVDpdCisgICAgICBQc2lNZXRob2RTdHViW3dyaXRlUmVwbGFjZTpqYXZhLmxhbmcuT2JqZWN0XQorICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9Ml0KKyAgICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgIFBzaVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgIFBzaVJlZkxpc3RTdHViW1RIUk9XU19MSVNUOl0KKyAgICBQc2lDbGFzc1N0dWJbbmFtZT1TeW5jaHJvbml6ZWRTZXQgZnFuPWphdmEudXRpbC5Db2xsZWN0aW9ucy5TeW5jaHJvbml6ZWRTZXRdCisgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9NDEwNF0KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgICBQc2lUeXBlUGFyYW1ldGVyW0VdCisgICAgICAgICAgUHNpUmVmTGlzdFN0dWJbRVhURU5EU19CT1VORFNfTElTVDpdCisgICAgICBQc2lSZWZMaXN0U3R1YltFWFRFTkRTX0xJU1Q6amF2YS51dGlsLkNvbGxlY3Rpb25zLlN5bmNocm9uaXplZENvbGxlY3Rpb248RT5dCisgICAgICBQc2lSZWZMaXN0U3R1YltJTVBMRU1FTlRTX0xJU1Q6amF2YS51dGlsLlNldDxFPl0KKyAgICAgIFBzaUZpZWxkU3R1YltzZXJpYWxWZXJzaW9uVUlEOmxvbmc9NDg3NDQ3MDA5NjgyMTg2MDQ0TF0KKyAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTI2XQorICAgICAgUHNpTWV0aG9kU3R1Yltjb25zIFN5bmNocm9uaXplZFNldDp2b2lkXQorICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9NDA5Nl0KKyAgICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgIFBzaVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgICAgUHNpUGFyYW1ldGVyU3R1YltwMTpqYXZhLnV0aWwuU2V0PEU+XQorICAgICAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTBdCisgICAgICAgIFBzaVJlZkxpc3RTdHViW1RIUk9XU19MSVNUOl0KKyAgICAgIFBzaU1ldGhvZFN0dWJbY29ucyBTeW5jaHJvbml6ZWRTZXQ6dm9pZF0KKyAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTQwOTZdCisgICAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgICBQc2lQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgICAgIFBzaVBhcmFtZXRlclN0dWJbcDE6amF2YS51dGlsLlNldDxFPl0KKyAgICAgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0wXQorICAgICAgICAgIFBzaVBhcmFtZXRlclN0dWJbcDI6amF2YS5sYW5nLk9iamVjdF0KKyAgICAgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0wXQorICAgICAgICBQc2lSZWZMaXN0U3R1YltUSFJPV1NfTElTVDpdCisgICAgICBQc2lNZXRob2RTdHViW2VxdWFsczpib29sZWFuXQorICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MV0KKyAgICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgIFBzaVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgICAgUHNpUGFyYW1ldGVyU3R1YltwMTpqYXZhLmxhbmcuT2JqZWN0XQorICAgICAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTBdCisgICAgICAgIFBzaVJlZkxpc3RTdHViW1RIUk9XU19MSVNUOl0KKyAgICAgIFBzaU1ldGhvZFN0dWJbaGFzaENvZGU6aW50XQorICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MV0KKyAgICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgIFBzaVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgIFBzaVJlZkxpc3RTdHViW1RIUk9XU19MSVNUOl0KKyAgICBQc2lDbGFzc1N0dWJbbmFtZT1TeW5jaHJvbml6ZWRTb3J0ZWRNYXAgZnFuPWphdmEudXRpbC5Db2xsZWN0aW9ucy5TeW5jaHJvbml6ZWRTb3J0ZWRNYXBdCisgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9NDEwNF0KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgICBQc2lUeXBlUGFyYW1ldGVyW0tdCisgICAgICAgICAgUHNpUmVmTGlzdFN0dWJbRVhURU5EU19CT1VORFNfTElTVDpdCisgICAgICAgIFBzaVR5cGVQYXJhbWV0ZXJbVl0KKyAgICAgICAgICBQc2lSZWZMaXN0U3R1YltFWFRFTkRTX0JPVU5EU19MSVNUOl0KKyAgICAgIFBzaVJlZkxpc3RTdHViW0VYVEVORFNfTElTVDpqYXZhLnV0aWwuQ29sbGVjdGlvbnMuU3luY2hyb25pemVkTWFwPEssVj5dCisgICAgICBQc2lSZWZMaXN0U3R1YltJTVBMRU1FTlRTX0xJU1Q6amF2YS51dGlsLlNvcnRlZE1hcDxLLFY+XQorICAgICAgUHNpRmllbGRTdHViW3NlcmlhbFZlcnNpb25VSUQ6bG9uZz0tODc5ODE0Njc2OTQxNjQ4Mzc5M0xdCisgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0yNl0KKyAgICAgIFBzaUZpZWxkU3R1YltzbTpqYXZhLnV0aWwuU29ydGVkTWFwPEssVj5dCisgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0yXQorICAgICAgUHNpTWV0aG9kU3R1Yltjb25zIFN5bmNocm9uaXplZFNvcnRlZE1hcDp2b2lkXQorICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9NDA5Nl0KKyAgICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgIFBzaVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgICAgUHNpUGFyYW1ldGVyU3R1YltwMTpqYXZhLnV0aWwuU29ydGVkTWFwPEssVj5dCisgICAgICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MF0KKyAgICAgICAgUHNpUmVmTGlzdFN0dWJbVEhST1dTX0xJU1Q6XQorICAgICAgUHNpTWV0aG9kU3R1Yltjb25zIFN5bmNocm9uaXplZFNvcnRlZE1hcDp2b2lkXQorICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9NDA5Nl0KKyAgICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgIFBzaVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgICAgUHNpUGFyYW1ldGVyU3R1YltwMTpqYXZhLnV0aWwuU29ydGVkTWFwPEssVj5dCisgICAgICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MF0KKyAgICAgICAgICBQc2lQYXJhbWV0ZXJTdHViW3AyOmphdmEubGFuZy5PYmplY3RdCisgICAgICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MF0KKyAgICAgICAgUHNpUmVmTGlzdFN0dWJbVEhST1dTX0xJU1Q6XQorICAgICAgUHNpTWV0aG9kU3R1Yltjb21wYXJhdG9yOmphdmEudXRpbC5Db21wYXJhdG9yPD8gc3VwZXIgSz5dCisgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0xXQorICAgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgICAgUHNpUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgICAgUHNpUmVmTGlzdFN0dWJbVEhST1dTX0xJU1Q6XQorICAgICAgUHNpTWV0aG9kU3R1YltzdWJNYXA6amF2YS51dGlsLlNvcnRlZE1hcDxLLFY+XQorICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MV0KKyAgICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgIFBzaVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgICAgUHNpUGFyYW1ldGVyU3R1YltwMTpLXQorICAgICAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTBdCisgICAgICAgICAgUHNpUGFyYW1ldGVyU3R1YltwMjpLXQorICAgICAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTBdCisgICAgICAgIFBzaVJlZkxpc3RTdHViW1RIUk9XU19MSVNUOl0KKyAgICAgIFBzaU1ldGhvZFN0dWJbaGVhZE1hcDpqYXZhLnV0aWwuU29ydGVkTWFwPEssVj5dCisgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0xXQorICAgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgICAgUHNpUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgICAgICBQc2lQYXJhbWV0ZXJTdHViW3AxOktdCisgICAgICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MF0KKyAgICAgICAgUHNpUmVmTGlzdFN0dWJbVEhST1dTX0xJU1Q6XQorICAgICAgUHNpTWV0aG9kU3R1Ylt0YWlsTWFwOmphdmEudXRpbC5Tb3J0ZWRNYXA8SyxWPl0KKyAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTFdCisgICAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgICBQc2lQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgICAgIFBzaVBhcmFtZXRlclN0dWJbcDE6S10KKyAgICAgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0wXQorICAgICAgICBQc2lSZWZMaXN0U3R1YltUSFJPV1NfTElTVDpdCisgICAgICBQc2lNZXRob2RTdHViW2ZpcnN0S2V5OktdCisgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0xXQorICAgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgICAgUHNpUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgICAgUHNpUmVmTGlzdFN0dWJbVEhST1dTX0xJU1Q6XQorICAgICAgUHNpTWV0aG9kU3R1YltsYXN0S2V5OktdCisgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0xXQorICAgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgICAgUHNpUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgICAgUHNpUmVmTGlzdFN0dWJbVEhST1dTX0xJU1Q6XQorICAgIFBzaUNsYXNzU3R1YltuYW1lPVN5bmNocm9uaXplZFNvcnRlZFNldCBmcW49amF2YS51dGlsLkNvbGxlY3Rpb25zLlN5bmNocm9uaXplZFNvcnRlZFNldF0KKyAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz00MTA0XQorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgIFBzaVR5cGVQYXJhbWV0ZXJbRV0KKyAgICAgICAgICBQc2lSZWZMaXN0U3R1YltFWFRFTkRTX0JPVU5EU19MSVNUOl0KKyAgICAgIFBzaVJlZkxpc3RTdHViW0VYVEVORFNfTElTVDpqYXZhLnV0aWwuQ29sbGVjdGlvbnMuU3luY2hyb25pemVkU2V0PEU+XQorICAgICAgUHNpUmVmTGlzdFN0dWJbSU1QTEVNRU5UU19MSVNUOmphdmEudXRpbC5Tb3J0ZWRTZXQ8RT5dCisgICAgICBQc2lGaWVsZFN0dWJbc2VyaWFsVmVyc2lvblVJRDpsb25nPTg2OTU4MDEzMTA4NjIxMjc0MDZMXQorICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MjZdCisgICAgICBQc2lGaWVsZFN0dWJbc3M6amF2YS51dGlsLlNvcnRlZFNldDxFPl0KKyAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTJdCisgICAgICBQc2lNZXRob2RTdHViW2NvbnMgU3luY2hyb25pemVkU29ydGVkU2V0OnZvaWRdCisgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz00MDk2XQorICAgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgICAgUHNpUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgICAgICBQc2lQYXJhbWV0ZXJTdHViW3AxOmphdmEudXRpbC5Tb3J0ZWRTZXQ8RT5dCisgICAgICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MF0KKyAgICAgICAgUHNpUmVmTGlzdFN0dWJbVEhST1dTX0xJU1Q6XQorICAgICAgUHNpTWV0aG9kU3R1Yltjb25zIFN5bmNocm9uaXplZFNvcnRlZFNldDp2b2lkXQorICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9NDA5Nl0KKyAgICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgIFBzaVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgICAgUHNpUGFyYW1ldGVyU3R1YltwMTpqYXZhLnV0aWwuU29ydGVkU2V0PEU+XQorICAgICAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTBdCisgICAgICAgICAgUHNpUGFyYW1ldGVyU3R1YltwMjpqYXZhLmxhbmcuT2JqZWN0XQorICAgICAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTBdCisgICAgICAgIFBzaVJlZkxpc3RTdHViW1RIUk9XU19MSVNUOl0KKyAgICAgIFBzaU1ldGhvZFN0dWJbY29tcGFyYXRvcjpqYXZhLnV0aWwuQ29tcGFyYXRvcjw/IHN1cGVyIEU+XQorICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MV0KKyAgICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgIFBzaVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgIFBzaVJlZkxpc3RTdHViW1RIUk9XU19MSVNUOl0KKyAgICAgIFBzaU1ldGhvZFN0dWJbc3ViU2V0OmphdmEudXRpbC5Tb3J0ZWRTZXQ8RT5dCisgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0xXQorICAgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgICAgUHNpUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgICAgICBQc2lQYXJhbWV0ZXJTdHViW3AxOkVdCisgICAgICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MF0KKyAgICAgICAgICBQc2lQYXJhbWV0ZXJTdHViW3AyOkVdCisgICAgICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MF0KKyAgICAgICAgUHNpUmVmTGlzdFN0dWJbVEhST1dTX0xJU1Q6XQorICAgICAgUHNpTWV0aG9kU3R1YltoZWFkU2V0OmphdmEudXRpbC5Tb3J0ZWRTZXQ8RT5dCisgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0xXQorICAgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgICAgUHNpUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgICAgICBQc2lQYXJhbWV0ZXJTdHViW3AxOkVdCisgICAgICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MF0KKyAgICAgICAgUHNpUmVmTGlzdFN0dWJbVEhST1dTX0xJU1Q6XQorICAgICAgUHNpTWV0aG9kU3R1Ylt0YWlsU2V0OmphdmEudXRpbC5Tb3J0ZWRTZXQ8RT5dCisgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0xXQorICAgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgICAgUHNpUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgICAgICBQc2lQYXJhbWV0ZXJTdHViW3AxOkVdCisgICAgICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MF0KKyAgICAgICAgUHNpUmVmTGlzdFN0dWJbVEhST1dTX0xJU1Q6XQorICAgICAgUHNpTWV0aG9kU3R1YltmaXJzdDpFXQorICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MV0KKyAgICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgIFBzaVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgIFBzaVJlZkxpc3RTdHViW1RIUk9XU19MSVNUOl0KKyAgICAgIFBzaU1ldGhvZFN0dWJbbGFzdDpFXQorICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MV0KKyAgICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgIFBzaVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgIFBzaVJlZkxpc3RTdHViW1RIUk9XU19MSVNUOl0KKyAgICBQc2lDbGFzc1N0dWJbbmFtZT1Vbm1vZGlmaWFibGVDb2xsZWN0aW9uIGZxbj1qYXZhLnV0aWwuQ29sbGVjdGlvbnMuVW5tb2RpZmlhYmxlQ29sbGVjdGlvbl0KKyAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz00MTA0XQorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgIFBzaVR5cGVQYXJhbWV0ZXJbRV0KKyAgICAgICAgICBQc2lSZWZMaXN0U3R1YltFWFRFTkRTX0JPVU5EU19MSVNUOl0KKyAgICAgIFBzaVJlZkxpc3RTdHViW0VYVEVORFNfTElTVDpdCisgICAgICBQc2lSZWZMaXN0U3R1YltJTVBMRU1FTlRTX0xJU1Q6amF2YS51dGlsLkNvbGxlY3Rpb248RT4sIGphdmEuaW8uU2VyaWFsaXphYmxlXQorICAgICAgUHNpRmllbGRTdHViW3NlcmlhbFZlcnNpb25VSUQ6bG9uZz0xODIwMDE3NzUyNTc4OTE0MDc4TF0KKyAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTI2XQorICAgICAgUHNpRmllbGRTdHViW2M6amF2YS51dGlsLkNvbGxlY3Rpb248PyBleHRlbmRzIEU+XQorICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9NDA5Nl0KKyAgICAgIFBzaU1ldGhvZFN0dWJbY29ucyBVbm1vZGlmaWFibGVDb2xsZWN0aW9uOnZvaWRdCisgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz00MDk2XQorICAgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgICAgUHNpUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgICAgICBQc2lQYXJhbWV0ZXJTdHViW3AxOmphdmEudXRpbC5Db2xsZWN0aW9uPD8gZXh0ZW5kcyBFPl0KKyAgICAgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0wXQorICAgICAgICBQc2lSZWZMaXN0U3R1YltUSFJPV1NfTElTVDpdCisgICAgICBQc2lNZXRob2RTdHViW3NpemU6aW50XQorICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MV0KKyAgICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgIFBzaVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgIFBzaVJlZkxpc3RTdHViW1RIUk9XU19MSVNUOl0KKyAgICAgIFBzaU1ldGhvZFN0dWJbaXNFbXB0eTpib29sZWFuXQorICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MV0KKyAgICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgIFBzaVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgIFBzaVJlZkxpc3RTdHViW1RIUk9XU19MSVNUOl0KKyAgICAgIFBzaU1ldGhvZFN0dWJbY29udGFpbnM6Ym9vbGVhbl0KKyAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTFdCisgICAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgICBQc2lQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgICAgIFBzaVBhcmFtZXRlclN0dWJbcDE6amF2YS5sYW5nLk9iamVjdF0KKyAgICAgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0wXQorICAgICAgICBQc2lSZWZMaXN0U3R1YltUSFJPV1NfTElTVDpdCisgICAgICBQc2lNZXRob2RTdHViW3RvQXJyYXk6amF2YS5sYW5nLk9iamVjdFtdXQorICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MV0KKyAgICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgIFBzaVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgIFBzaVJlZkxpc3RTdHViW1RIUk9XU19MSVNUOl0KKyAgICAgIFBzaU1ldGhvZFN0dWJbdG9BcnJheTpUW11dCisgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0xXQorICAgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgICAgICBQc2lUeXBlUGFyYW1ldGVyW1RdCisgICAgICAgICAgICBQc2lSZWZMaXN0U3R1YltFWFRFTkRTX0JPVU5EU19MSVNUOl0KKyAgICAgICAgUHNpUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgICAgICBQc2lQYXJhbWV0ZXJTdHViW3AxOlRbXV0KKyAgICAgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0wXQorICAgICAgICBQc2lSZWZMaXN0U3R1YltUSFJPV1NfTElTVDpdCisgICAgICBQc2lNZXRob2RTdHViW3RvU3RyaW5nOmphdmEubGFuZy5TdHJpbmddCisgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0xXQorICAgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgICAgUHNpUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgICAgUHNpUmVmTGlzdFN0dWJbVEhST1dTX0xJU1Q6XQorICAgICAgUHNpTWV0aG9kU3R1YltpdGVyYXRvcjpqYXZhLnV0aWwuSXRlcmF0b3I8RT5dCisgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0xXQorICAgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgICAgUHNpUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgICAgUHNpUmVmTGlzdFN0dWJbVEhST1dTX0xJU1Q6XQorICAgICAgUHNpTWV0aG9kU3R1YlthZGQ6Ym9vbGVhbl0KKyAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTFdCisgICAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgICBQc2lQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgICAgIFBzaVBhcmFtZXRlclN0dWJbcDE6RV0KKyAgICAgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0wXQorICAgICAgICBQc2lSZWZMaXN0U3R1YltUSFJPV1NfTElTVDpdCisgICAgICBQc2lNZXRob2RTdHViW3JlbW92ZTpib29sZWFuXQorICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MV0KKyAgICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgIFBzaVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgICAgUHNpUGFyYW1ldGVyU3R1YltwMTpqYXZhLmxhbmcuT2JqZWN0XQorICAgICAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTBdCisgICAgICAgIFBzaVJlZkxpc3RTdHViW1RIUk9XU19MSVNUOl0KKyAgICAgIFBzaU1ldGhvZFN0dWJbY29udGFpbnNBbGw6Ym9vbGVhbl0KKyAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTFdCisgICAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgICBQc2lQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgICAgIFBzaVBhcmFtZXRlclN0dWJbcDE6amF2YS51dGlsLkNvbGxlY3Rpb248Pz5dCisgICAgICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MF0KKyAgICAgICAgUHNpUmVmTGlzdFN0dWJbVEhST1dTX0xJU1Q6XQorICAgICAgUHNpTWV0aG9kU3R1YlthZGRBbGw6Ym9vbGVhbl0KKyAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTFdCisgICAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgICBQc2lQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgICAgIFBzaVBhcmFtZXRlclN0dWJbcDE6amF2YS51dGlsLkNvbGxlY3Rpb248PyBleHRlbmRzIEU+XQorICAgICAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTBdCisgICAgICAgIFBzaVJlZkxpc3RTdHViW1RIUk9XU19MSVNUOl0KKyAgICAgIFBzaU1ldGhvZFN0dWJbcmVtb3ZlQWxsOmJvb2xlYW5dCisgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0xXQorICAgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgICAgUHNpUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgICAgICBQc2lQYXJhbWV0ZXJTdHViW3AxOmphdmEudXRpbC5Db2xsZWN0aW9uPD8+XQorICAgICAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTBdCisgICAgICAgIFBzaVJlZkxpc3RTdHViW1RIUk9XU19MSVNUOl0KKyAgICAgIFBzaU1ldGhvZFN0dWJbcmV0YWluQWxsOmJvb2xlYW5dCisgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0xXQorICAgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgICAgUHNpUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgICAgICBQc2lQYXJhbWV0ZXJTdHViW3AxOmphdmEudXRpbC5Db2xsZWN0aW9uPD8+XQorICAgICAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTBdCisgICAgICAgIFBzaVJlZkxpc3RTdHViW1RIUk9XU19MSVNUOl0KKyAgICAgIFBzaU1ldGhvZFN0dWJbY2xlYXI6dm9pZF0KKyAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTFdCisgICAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgICBQc2lQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgICBQc2lSZWZMaXN0U3R1YltUSFJPV1NfTElTVDpdCisgICAgUHNpQ2xhc3NTdHViW25hbWU9VW5tb2RpZmlhYmxlTGlzdCBmcW49amF2YS51dGlsLkNvbGxlY3Rpb25zLlVubW9kaWZpYWJsZUxpc3RdCisgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9NDEwNF0KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgICBQc2lUeXBlUGFyYW1ldGVyW0VdCisgICAgICAgICAgUHNpUmVmTGlzdFN0dWJbRVhURU5EU19CT1VORFNfTElTVDpdCisgICAgICBQc2lSZWZMaXN0U3R1YltFWFRFTkRTX0xJU1Q6amF2YS51dGlsLkNvbGxlY3Rpb25zLlVubW9kaWZpYWJsZUNvbGxlY3Rpb248RT5dCisgICAgICBQc2lSZWZMaXN0U3R1YltJTVBMRU1FTlRTX0xJU1Q6amF2YS51dGlsLkxpc3Q8RT5dCisgICAgICBQc2lGaWVsZFN0dWJbc2VyaWFsVmVyc2lvblVJRDpsb25nPS0yODM5NjczNTYwNjUyNDc3MjhMXQorICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9NDEyMF0KKyAgICAgIFBzaUZpZWxkU3R1YltsaXN0OmphdmEudXRpbC5MaXN0PD8gZXh0ZW5kcyBFPl0KKyAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTQwOTZdCisgICAgICBQc2lNZXRob2RTdHViW2NvbnMgVW5tb2RpZmlhYmxlTGlzdDp2b2lkXQorICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9NDA5Nl0KKyAgICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgIFBzaVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgICAgUHNpUGFyYW1ldGVyU3R1YltwMTpqYXZhLnV0aWwuTGlzdDw/IGV4dGVuZHMgRT5dCisgICAgICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MF0KKyAgICAgICAgUHNpUmVmTGlzdFN0dWJbVEhST1dTX0xJU1Q6XQorICAgICAgUHNpTWV0aG9kU3R1YltlcXVhbHM6Ym9vbGVhbl0KKyAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTFdCisgICAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgICBQc2lQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgICAgIFBzaVBhcmFtZXRlclN0dWJbcDE6amF2YS5sYW5nLk9iamVjdF0KKyAgICAgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0wXQorICAgICAgICBQc2lSZWZMaXN0U3R1YltUSFJPV1NfTElTVDpdCisgICAgICBQc2lNZXRob2RTdHViW2hhc2hDb2RlOmludF0KKyAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTFdCisgICAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgICBQc2lQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgICBQc2lSZWZMaXN0U3R1YltUSFJPV1NfTElTVDpdCisgICAgICBQc2lNZXRob2RTdHViW2dldDpFXQorICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MV0KKyAgICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgIFBzaVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgICAgUHNpUGFyYW1ldGVyU3R1YltwMTppbnRdCisgICAgICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MF0KKyAgICAgICAgUHNpUmVmTGlzdFN0dWJbVEhST1dTX0xJU1Q6XQorICAgICAgUHNpTWV0aG9kU3R1YltzZXQ6RV0KKyAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTFdCisgICAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgICBQc2lQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgICAgIFBzaVBhcmFtZXRlclN0dWJbcDE6aW50XQorICAgICAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTBdCisgICAgICAgICAgUHNpUGFyYW1ldGVyU3R1YltwMjpFXQorICAgICAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTBdCisgICAgICAgIFBzaVJlZkxpc3RTdHViW1RIUk9XU19MSVNUOl0KKyAgICAgIFBzaU1ldGhvZFN0dWJbYWRkOnZvaWRdCisgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0xXQorICAgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgICAgUHNpUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgICAgICBQc2lQYXJhbWV0ZXJTdHViW3AxOmludF0KKyAgICAgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0wXQorICAgICAgICAgIFBzaVBhcmFtZXRlclN0dWJbcDI6RV0KKyAgICAgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0wXQorICAgICAgICBQc2lSZWZMaXN0U3R1YltUSFJPV1NfTElTVDpdCisgICAgICBQc2lNZXRob2RTdHViW3JlbW92ZTpFXQorICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MV0KKyAgICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgIFBzaVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgICAgUHNpUGFyYW1ldGVyU3R1YltwMTppbnRdCisgICAgICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MF0KKyAgICAgICAgUHNpUmVmTGlzdFN0dWJbVEhST1dTX0xJU1Q6XQorICAgICAgUHNpTWV0aG9kU3R1YltpbmRleE9mOmludF0KKyAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTFdCisgICAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgICBQc2lQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgICAgIFBzaVBhcmFtZXRlclN0dWJbcDE6amF2YS5sYW5nLk9iamVjdF0KKyAgICAgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0wXQorICAgICAgICBQc2lSZWZMaXN0U3R1YltUSFJPV1NfTElTVDpdCisgICAgICBQc2lNZXRob2RTdHViW2xhc3RJbmRleE9mOmludF0KKyAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTFdCisgICAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgICBQc2lQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgICAgIFBzaVBhcmFtZXRlclN0dWJbcDE6amF2YS5sYW5nLk9iamVjdF0KKyAgICAgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0wXQorICAgICAgICBQc2lSZWZMaXN0U3R1YltUSFJPV1NfTElTVDpdCisgICAgICBQc2lNZXRob2RTdHViW2FkZEFsbDpib29sZWFuXQorICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MV0KKyAgICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgIFBzaVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgICAgUHNpUGFyYW1ldGVyU3R1YltwMTppbnRdCisgICAgICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MF0KKyAgICAgICAgICBQc2lQYXJhbWV0ZXJTdHViW3AyOmphdmEudXRpbC5Db2xsZWN0aW9uPD8gZXh0ZW5kcyBFPl0KKyAgICAgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0wXQorICAgICAgICBQc2lSZWZMaXN0U3R1YltUSFJPV1NfTElTVDpdCisgICAgICBQc2lNZXRob2RTdHViW2xpc3RJdGVyYXRvcjpqYXZhLnV0aWwuTGlzdEl0ZXJhdG9yPEU+XQorICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MV0KKyAgICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgIFBzaVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgIFBzaVJlZkxpc3RTdHViW1RIUk9XU19MSVNUOl0KKyAgICAgIFBzaU1ldGhvZFN0dWJbbGlzdEl0ZXJhdG9yOmphdmEudXRpbC5MaXN0SXRlcmF0b3I8RT5dCisgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0xXQorICAgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgICAgUHNpUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgICAgICBQc2lQYXJhbWV0ZXJTdHViW3AxOmludF0KKyAgICAgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0wXQorICAgICAgICBQc2lSZWZMaXN0U3R1YltUSFJPV1NfTElTVDpdCisgICAgICBQc2lNZXRob2RTdHViW3N1Ykxpc3Q6amF2YS51dGlsLkxpc3Q8RT5dCisgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0xXQorICAgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgICAgUHNpUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgICAgICBQc2lQYXJhbWV0ZXJTdHViW3AxOmludF0KKyAgICAgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0wXQorICAgICAgICAgIFBzaVBhcmFtZXRlclN0dWJbcDI6aW50XQorICAgICAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTBdCisgICAgICAgIFBzaVJlZkxpc3RTdHViW1RIUk9XU19MSVNUOl0KKyAgICAgIFBzaU1ldGhvZFN0dWJbcmVhZFJlc29sdmU6amF2YS5sYW5nLk9iamVjdF0KKyAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTJdCisgICAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgICBQc2lQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgICBQc2lSZWZMaXN0U3R1YltUSFJPV1NfTElTVDpdCisgICAgUHNpQ2xhc3NTdHViW25hbWU9VW5tb2RpZmlhYmxlTWFwIGZxbj1qYXZhLnV0aWwuQ29sbGVjdGlvbnMuVW5tb2RpZmlhYmxlTWFwXQorICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTEwXQorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgIFBzaVR5cGVQYXJhbWV0ZXJbS10KKyAgICAgICAgICBQc2lSZWZMaXN0U3R1YltFWFRFTkRTX0JPVU5EU19MSVNUOl0KKyAgICAgICAgUHNpVHlwZVBhcmFtZXRlcltWXQorICAgICAgICAgIFBzaVJlZkxpc3RTdHViW0VYVEVORFNfQk9VTkRTX0xJU1Q6XQorICAgICAgUHNpUmVmTGlzdFN0dWJbRVhURU5EU19MSVNUOl0KKyAgICAgIFBzaVJlZkxpc3RTdHViW0lNUExFTUVOVFNfTElTVDpqYXZhLnV0aWwuTWFwPEssVj4sIGphdmEuaW8uU2VyaWFsaXphYmxlXQorICAgICAgUHNpQ2xhc3NTdHViW25hbWU9VW5tb2RpZmlhYmxlRW50cnlTZXQgZnFuPWphdmEudXRpbC5Db2xsZWN0aW9ucy5Vbm1vZGlmaWFibGVNYXAuVW5tb2RpZmlhYmxlRW50cnlTZXRdCisgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz00MTA0XQorICAgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgICAgICBQc2lUeXBlUGFyYW1ldGVyW0tdCisgICAgICAgICAgICBQc2lSZWZMaXN0U3R1YltFWFRFTkRTX0JPVU5EU19MSVNUOl0KKyAgICAgICAgICBQc2lUeXBlUGFyYW1ldGVyW1ZdCisgICAgICAgICAgICBQc2lSZWZMaXN0U3R1YltFWFRFTkRTX0JPVU5EU19MSVNUOl0KKyAgICAgICAgUHNpUmVmTGlzdFN0dWJbRVhURU5EU19MSVNUOmphdmEudXRpbC5Db2xsZWN0aW9ucy5Vbm1vZGlmaWFibGVTZXQ8amF2YS51dGlsLk1hcC5FbnRyeTxLLFY+Pl0KKyAgICAgICAgUHNpUmVmTGlzdFN0dWJbSU1QTEVNRU5UU19MSVNUOl0KKyAgICAgICAgUHNpQ2xhc3NTdHViW25hbWU9VW5tb2RpZmlhYmxlRW50cnkgZnFuPWphdmEudXRpbC5Db2xsZWN0aW9ucy5Vbm1vZGlmaWFibGVNYXAuVW5tb2RpZmlhYmxlRW50cnlTZXQuVW5tb2RpZmlhYmxlRW50cnldCisgICAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTEwXQorICAgICAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgICAgICAgUHNpVHlwZVBhcmFtZXRlcltLXQorICAgICAgICAgICAgICBQc2lSZWZMaXN0U3R1YltFWFRFTkRTX0JPVU5EU19MSVNUOl0KKyAgICAgICAgICAgIFBzaVR5cGVQYXJhbWV0ZXJbVl0KKyAgICAgICAgICAgICAgUHNpUmVmTGlzdFN0dWJbRVhURU5EU19CT1VORFNfTElTVDpdCisgICAgICAgICAgUHNpUmVmTGlzdFN0dWJbRVhURU5EU19MSVNUOl0KKyAgICAgICAgICBQc2lSZWZMaXN0U3R1YltJTVBMRU1FTlRTX0xJU1Q6amF2YS51dGlsLk1hcC5FbnRyeTxLLFY+XQorICAgICAgICAgIFBzaUZpZWxkU3R1YltlOmphdmEudXRpbC5NYXAuRW50cnk8PyBleHRlbmRzIEssPyBleHRlbmRzIFY+XQorICAgICAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTJdCisgICAgICAgICAgUHNpTWV0aG9kU3R1Yltjb25zIFVubW9kaWZpYWJsZUVudHJ5OnZvaWRdCisgICAgICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9NDA5Nl0KKyAgICAgICAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgICAgICAgUHNpUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgICAgICAgICAgUHNpUGFyYW1ldGVyU3R1YltwMTpqYXZhLnV0aWwuTWFwLkVudHJ5PD8gZXh0ZW5kcyBLLD8gZXh0ZW5kcyBWPl0KKyAgICAgICAgICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MF0KKyAgICAgICAgICAgIFBzaVJlZkxpc3RTdHViW1RIUk9XU19MSVNUOl0KKyAgICAgICAgICBQc2lNZXRob2RTdHViW2dldEtleTpLXQorICAgICAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTFdCisgICAgICAgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgICAgICAgIFBzaVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgICAgICBQc2lSZWZMaXN0U3R1YltUSFJPV1NfTElTVDpdCisgICAgICAgICAgUHNpTWV0aG9kU3R1YltnZXRWYWx1ZTpWXQorICAgICAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTFdCisgICAgICAgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgICAgICAgIFBzaVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgICAgICBQc2lSZWZMaXN0U3R1YltUSFJPV1NfTElTVDpdCisgICAgICAgICAgUHNpTWV0aG9kU3R1YltzZXRWYWx1ZTpWXQorICAgICAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTFdCisgICAgICAgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgICAgICAgIFBzaVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgICAgICAgIFBzaVBhcmFtZXRlclN0dWJbcDE6Vl0KKyAgICAgICAgICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MF0KKyAgICAgICAgICAgIFBzaVJlZkxpc3RTdHViW1RIUk9XU19MSVNUOl0KKyAgICAgICAgICBQc2lNZXRob2RTdHViW2hhc2hDb2RlOmludF0KKyAgICAgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0xXQorICAgICAgICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgICAgICBQc2lQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgICAgICAgUHNpUmVmTGlzdFN0dWJbVEhST1dTX0xJU1Q6XQorICAgICAgICAgIFBzaU1ldGhvZFN0dWJbZXF1YWxzOmJvb2xlYW5dCisgICAgICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MV0KKyAgICAgICAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgICAgICAgUHNpUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgICAgICAgICAgUHNpUGFyYW1ldGVyU3R1YltwMTpqYXZhLmxhbmcuT2JqZWN0XQorICAgICAgICAgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0wXQorICAgICAgICAgICAgUHNpUmVmTGlzdFN0dWJbVEhST1dTX0xJU1Q6XQorICAgICAgICAgIFBzaU1ldGhvZFN0dWJbdG9TdHJpbmc6amF2YS5sYW5nLlN0cmluZ10KKyAgICAgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0xXQorICAgICAgICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgICAgICBQc2lQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgICAgICAgUHNpUmVmTGlzdFN0dWJbVEhST1dTX0xJU1Q6XQorICAgICAgICBQc2lGaWVsZFN0dWJbc2VyaWFsVmVyc2lvblVJRDpsb25nPTc4NTQzOTA2MTE2NTc5NDM3MzNMXQorICAgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0yNl0KKyAgICAgICAgUHNpTWV0aG9kU3R1Yltjb25zIFVubW9kaWZpYWJsZUVudHJ5U2V0OnZvaWRdCisgICAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTQwOTZdCisgICAgICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgICAgUHNpUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgICAgICAgIFBzaVBhcmFtZXRlclN0dWJbcDE6amF2YS51dGlsLlNldDw/IGV4dGVuZHMgamF2YS51dGlsLk1hcC5FbnRyeTw/IGV4dGVuZHMgSyw/IGV4dGVuZHMgVj4+XQorICAgICAgICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MF0KKyAgICAgICAgICBQc2lSZWZMaXN0U3R1YltUSFJPV1NfTElTVDpdCisgICAgICAgIFBzaU1ldGhvZFN0dWJbaXRlcmF0b3I6amF2YS51dGlsLkl0ZXJhdG9yPGphdmEudXRpbC5NYXAuRW50cnk8SyxWPj5dCisgICAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTFdCisgICAgICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgICAgUHNpUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgICAgICBQc2lSZWZMaXN0U3R1YltUSFJPV1NfTElTVDpdCisgICAgICAgIFBzaU1ldGhvZFN0dWJbdG9BcnJheTpqYXZhLmxhbmcuT2JqZWN0W11dCisgICAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTFdCisgICAgICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgICAgUHNpUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgICAgICBQc2lSZWZMaXN0U3R1YltUSFJPV1NfTElTVDpdCisgICAgICAgIFBzaU1ldGhvZFN0dWJbdG9BcnJheTpUW11dCisgICAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTFdCisgICAgICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgICAgICBQc2lUeXBlUGFyYW1ldGVyW1RdCisgICAgICAgICAgICAgIFBzaVJlZkxpc3RTdHViW0VYVEVORFNfQk9VTkRTX0xJU1Q6XQorICAgICAgICAgIFBzaVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgICAgICBQc2lQYXJhbWV0ZXJTdHViW3AxOlRbXV0KKyAgICAgICAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTBdCisgICAgICAgICAgUHNpUmVmTGlzdFN0dWJbVEhST1dTX0xJU1Q6XQorICAgICAgICBQc2lNZXRob2RTdHViW2NvbnRhaW5zOmJvb2xlYW5dCisgICAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTFdCisgICAgICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgICAgUHNpUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgICAgICAgIFBzaVBhcmFtZXRlclN0dWJbcDE6amF2YS5sYW5nLk9iamVjdF0KKyAgICAgICAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTBdCisgICAgICAgICAgUHNpUmVmTGlzdFN0dWJbVEhST1dTX0xJU1Q6XQorICAgICAgICBQc2lNZXRob2RTdHViW2NvbnRhaW5zQWxsOmJvb2xlYW5dCisgICAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTFdCisgICAgICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgICAgUHNpUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgICAgICAgIFBzaVBhcmFtZXRlclN0dWJbcDE6amF2YS51dGlsLkNvbGxlY3Rpb248Pz5dCisgICAgICAgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0wXQorICAgICAgICAgIFBzaVJlZkxpc3RTdHViW1RIUk9XU19MSVNUOl0KKyAgICAgICAgUHNpTWV0aG9kU3R1YltlcXVhbHM6Ym9vbGVhbl0KKyAgICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MV0KKyAgICAgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgICAgICBQc2lQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgICAgICAgUHNpUGFyYW1ldGVyU3R1YltwMTpqYXZhLmxhbmcuT2JqZWN0XQorICAgICAgICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MF0KKyAgICAgICAgICBQc2lSZWZMaXN0U3R1YltUSFJPV1NfTElTVDpdCisgICAgICBQc2lGaWVsZFN0dWJbc2VyaWFsVmVyc2lvblVJRDpsb25nPS0xMDM0MjM0NzI4NTc0Mjg2MDE0TF0KKyAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTI2XQorICAgICAgUHNpRmllbGRTdHViW206amF2YS51dGlsLk1hcDw/IGV4dGVuZHMgSyw/IGV4dGVuZHMgVj5dCisgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0xOF0KKyAgICAgIFBzaUZpZWxkU3R1YltrZXlTZXQ6amF2YS51dGlsLlNldDxLPl0KKyAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTEzMF0KKyAgICAgIFBzaUZpZWxkU3R1YltlbnRyeVNldDpqYXZhLnV0aWwuU2V0PGphdmEudXRpbC5NYXAuRW50cnk8SyxWPj5dCisgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0xMzBdCisgICAgICBQc2lGaWVsZFN0dWJbdmFsdWVzOmphdmEudXRpbC5Db2xsZWN0aW9uPFY+XQorICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MTMwXQorICAgICAgUHNpTWV0aG9kU3R1Yltjb25zIFVubW9kaWZpYWJsZU1hcDp2b2lkXQorICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9NDA5Nl0KKyAgICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgIFBzaVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgICAgUHNpUGFyYW1ldGVyU3R1YltwMTpqYXZhLnV0aWwuTWFwPD8gZXh0ZW5kcyBLLD8gZXh0ZW5kcyBWPl0KKyAgICAgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0wXQorICAgICAgICBQc2lSZWZMaXN0U3R1YltUSFJPV1NfTElTVDpdCisgICAgICBQc2lNZXRob2RTdHViW3NpemU6aW50XQorICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MV0KKyAgICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgIFBzaVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgIFBzaVJlZkxpc3RTdHViW1RIUk9XU19MSVNUOl0KKyAgICAgIFBzaU1ldGhvZFN0dWJbaXNFbXB0eTpib29sZWFuXQorICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MV0KKyAgICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgIFBzaVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgIFBzaVJlZkxpc3RTdHViW1RIUk9XU19MSVNUOl0KKyAgICAgIFBzaU1ldGhvZFN0dWJbY29udGFpbnNLZXk6Ym9vbGVhbl0KKyAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTFdCisgICAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgICBQc2lQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgICAgIFBzaVBhcmFtZXRlclN0dWJbcDE6amF2YS5sYW5nLk9iamVjdF0KKyAgICAgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0wXQorICAgICAgICBQc2lSZWZMaXN0U3R1YltUSFJPV1NfTElTVDpdCisgICAgICBQc2lNZXRob2RTdHViW2NvbnRhaW5zVmFsdWU6Ym9vbGVhbl0KKyAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTFdCisgICAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgICBQc2lQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgICAgIFBzaVBhcmFtZXRlclN0dWJbcDE6amF2YS5sYW5nLk9iamVjdF0KKyAgICAgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0wXQorICAgICAgICBQc2lSZWZMaXN0U3R1YltUSFJPV1NfTElTVDpdCisgICAgICBQc2lNZXRob2RTdHViW2dldDpWXQorICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MV0KKyAgICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgIFBzaVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgICAgUHNpUGFyYW1ldGVyU3R1YltwMTpqYXZhLmxhbmcuT2JqZWN0XQorICAgICAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTBdCisgICAgICAgIFBzaVJlZkxpc3RTdHViW1RIUk9XU19MSVNUOl0KKyAgICAgIFBzaU1ldGhvZFN0dWJbcHV0OlZdCisgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0xXQorICAgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgICAgUHNpUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgICAgICBQc2lQYXJhbWV0ZXJTdHViW3AxOktdCisgICAgICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MF0KKyAgICAgICAgICBQc2lQYXJhbWV0ZXJTdHViW3AyOlZdCisgICAgICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MF0KKyAgICAgICAgUHNpUmVmTGlzdFN0dWJbVEhST1dTX0xJU1Q6XQorICAgICAgUHNpTWV0aG9kU3R1YltyZW1vdmU6Vl0KKyAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTFdCisgICAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgICBQc2lQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgICAgIFBzaVBhcmFtZXRlclN0dWJbcDE6amF2YS5sYW5nLk9iamVjdF0KKyAgICAgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0wXQorICAgICAgICBQc2lSZWZMaXN0U3R1YltUSFJPV1NfTElTVDpdCisgICAgICBQc2lNZXRob2RTdHViW3B1dEFsbDp2b2lkXQorICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MV0KKyAgICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgIFBzaVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgICAgUHNpUGFyYW1ldGVyU3R1YltwMTpqYXZhLnV0aWwuTWFwPD8gZXh0ZW5kcyBLLD8gZXh0ZW5kcyBWPl0KKyAgICAgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0wXQorICAgICAgICBQc2lSZWZMaXN0U3R1YltUSFJPV1NfTElTVDpdCisgICAgICBQc2lNZXRob2RTdHViW2NsZWFyOnZvaWRdCisgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0xXQorICAgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgICAgUHNpUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgICAgUHNpUmVmTGlzdFN0dWJbVEhST1dTX0xJU1Q6XQorICAgICAgUHNpTWV0aG9kU3R1YltrZXlTZXQ6amF2YS51dGlsLlNldDxLPl0KKyAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTFdCisgICAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgICBQc2lQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgICBQc2lSZWZMaXN0U3R1YltUSFJPV1NfTElTVDpdCisgICAgICBQc2lNZXRob2RTdHViW2VudHJ5U2V0OmphdmEudXRpbC5TZXQ8amF2YS51dGlsLk1hcC5FbnRyeTxLLFY+Pl0KKyAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTFdCisgICAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgICBQc2lQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgICBQc2lSZWZMaXN0U3R1YltUSFJPV1NfTElTVDpdCisgICAgICBQc2lNZXRob2RTdHViW3ZhbHVlczpqYXZhLnV0aWwuQ29sbGVjdGlvbjxWPl0KKyAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTFdCisgICAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgICBQc2lQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgICBQc2lSZWZMaXN0U3R1YltUSFJPV1NfTElTVDpdCisgICAgICBQc2lNZXRob2RTdHViW2VxdWFsczpib29sZWFuXQorICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MV0KKyAgICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgIFBzaVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgICAgUHNpUGFyYW1ldGVyU3R1YltwMTpqYXZhLmxhbmcuT2JqZWN0XQorICAgICAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTBdCisgICAgICAgIFBzaVJlZkxpc3RTdHViW1RIUk9XU19MSVNUOl0KKyAgICAgIFBzaU1ldGhvZFN0dWJbaGFzaENvZGU6aW50XQorICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MV0KKyAgICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgIFBzaVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgIFBzaVJlZkxpc3RTdHViW1RIUk9XU19MSVNUOl0KKyAgICAgIFBzaU1ldGhvZFN0dWJbdG9TdHJpbmc6amF2YS5sYW5nLlN0cmluZ10KKyAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTFdCisgICAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgICBQc2lQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgICBQc2lSZWZMaXN0U3R1YltUSFJPV1NfTElTVDpdCisgICAgUHNpQ2xhc3NTdHViW25hbWU9VW5tb2RpZmlhYmxlUmFuZG9tQWNjZXNzTGlzdCBmcW49amF2YS51dGlsLkNvbGxlY3Rpb25zLlVubW9kaWZpYWJsZVJhbmRvbUFjY2Vzc0xpc3RdCisgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9NDEwNF0KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgICBQc2lUeXBlUGFyYW1ldGVyW0VdCisgICAgICAgICAgUHNpUmVmTGlzdFN0dWJbRVhURU5EU19CT1VORFNfTElTVDpdCisgICAgICBQc2lSZWZMaXN0U3R1YltFWFRFTkRTX0xJU1Q6amF2YS51dGlsLkNvbGxlY3Rpb25zLlVubW9kaWZpYWJsZUxpc3Q8RT5dCisgICAgICBQc2lSZWZMaXN0U3R1YltJTVBMRU1FTlRTX0xJU1Q6amF2YS51dGlsLlJhbmRvbUFjY2Vzc10KKyAgICAgIFBzaUZpZWxkU3R1YltzZXJpYWxWZXJzaW9uVUlEOmxvbmc9LTI1NDIzMDg4MzY5NjYzODIwMDFMXQorICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MjZdCisgICAgICBQc2lNZXRob2RTdHViW2NvbnMgVW5tb2RpZmlhYmxlUmFuZG9tQWNjZXNzTGlzdDp2b2lkXQorICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9NDA5Nl0KKyAgICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgIFBzaVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgICAgUHNpUGFyYW1ldGVyU3R1YltwMTpqYXZhLnV0aWwuTGlzdDw/IGV4dGVuZHMgRT5dCisgICAgICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MF0KKyAgICAgICAgUHNpUmVmTGlzdFN0dWJbVEhST1dTX0xJU1Q6XQorICAgICAgUHNpTWV0aG9kU3R1YltzdWJMaXN0OmphdmEudXRpbC5MaXN0PEU+XQorICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MV0KKyAgICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgIFBzaVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgICAgUHNpUGFyYW1ldGVyU3R1YltwMTppbnRdCisgICAgICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MF0KKyAgICAgICAgICBQc2lQYXJhbWV0ZXJTdHViW3AyOmludF0KKyAgICAgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0wXQorICAgICAgICBQc2lSZWZMaXN0U3R1YltUSFJPV1NfTElTVDpdCisgICAgICBQc2lNZXRob2RTdHViW3dyaXRlUmVwbGFjZTpqYXZhLmxhbmcuT2JqZWN0XQorICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9Ml0KKyAgICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgIFBzaVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgIFBzaVJlZkxpc3RTdHViW1RIUk9XU19MSVNUOl0KKyAgICBQc2lDbGFzc1N0dWJbbmFtZT1Vbm1vZGlmaWFibGVTZXQgZnFuPWphdmEudXRpbC5Db2xsZWN0aW9ucy5Vbm1vZGlmaWFibGVTZXRdCisgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9NDEwNF0KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgICBQc2lUeXBlUGFyYW1ldGVyW0VdCisgICAgICAgICAgUHNpUmVmTGlzdFN0dWJbRVhURU5EU19CT1VORFNfTElTVDpdCisgICAgICBQc2lSZWZMaXN0U3R1YltFWFRFTkRTX0xJU1Q6amF2YS51dGlsLkNvbGxlY3Rpb25zLlVubW9kaWZpYWJsZUNvbGxlY3Rpb248RT5dCisgICAgICBQc2lSZWZMaXN0U3R1YltJTVBMRU1FTlRTX0xJU1Q6amF2YS51dGlsLlNldDxFPiwgamF2YS5pby5TZXJpYWxpemFibGVdCisgICAgICBQc2lGaWVsZFN0dWJbc2VyaWFsVmVyc2lvblVJRDpsb25nPS05MjE1MDQ3ODMzNzc1MDEzODAzTF0KKyAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTI2XQorICAgICAgUHNpTWV0aG9kU3R1Yltjb25zIFVubW9kaWZpYWJsZVNldDp2b2lkXQorICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9NDA5Nl0KKyAgICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgIFBzaVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgICAgUHNpUGFyYW1ldGVyU3R1YltwMTpqYXZhLnV0aWwuU2V0PD8gZXh0ZW5kcyBFPl0KKyAgICAgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0wXQorICAgICAgICBQc2lSZWZMaXN0U3R1YltUSFJPV1NfTElTVDpdCisgICAgICBQc2lNZXRob2RTdHViW2VxdWFsczpib29sZWFuXQorICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MV0KKyAgICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgIFBzaVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgICAgUHNpUGFyYW1ldGVyU3R1YltwMTpqYXZhLmxhbmcuT2JqZWN0XQorICAgICAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTBdCisgICAgICAgIFBzaVJlZkxpc3RTdHViW1RIUk9XU19MSVNUOl0KKyAgICAgIFBzaU1ldGhvZFN0dWJbaGFzaENvZGU6aW50XQorICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MV0KKyAgICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgIFBzaVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgIFBzaVJlZkxpc3RTdHViW1RIUk9XU19MSVNUOl0KKyAgICBQc2lDbGFzc1N0dWJbbmFtZT1Vbm1vZGlmaWFibGVTb3J0ZWRNYXAgZnFuPWphdmEudXRpbC5Db2xsZWN0aW9ucy5Vbm1vZGlmaWFibGVTb3J0ZWRNYXBdCisgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9NDEwNF0KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgICBQc2lUeXBlUGFyYW1ldGVyW0tdCisgICAgICAgICAgUHNpUmVmTGlzdFN0dWJbRVhURU5EU19CT1VORFNfTElTVDpdCisgICAgICAgIFBzaVR5cGVQYXJhbWV0ZXJbVl0KKyAgICAgICAgICBQc2lSZWZMaXN0U3R1YltFWFRFTkRTX0JPVU5EU19MSVNUOl0KKyAgICAgIFBzaVJlZkxpc3RTdHViW0VYVEVORFNfTElTVDpqYXZhLnV0aWwuQ29sbGVjdGlvbnMuVW5tb2RpZmlhYmxlTWFwPEssVj5dCisgICAgICBQc2lSZWZMaXN0U3R1YltJTVBMRU1FTlRTX0xJU1Q6amF2YS51dGlsLlNvcnRlZE1hcDxLLFY+LCBqYXZhLmlvLlNlcmlhbGl6YWJsZV0KKyAgICAgIFBzaUZpZWxkU3R1YltzZXJpYWxWZXJzaW9uVUlEOmxvbmc9LTg4MDY3NDM4MTU5OTY3MTMyMDZMXQorICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MjZdCisgICAgICBQc2lGaWVsZFN0dWJbc206amF2YS51dGlsLlNvcnRlZE1hcDxLLD8gZXh0ZW5kcyBWPl0KKyAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTJdCisgICAgICBQc2lNZXRob2RTdHViW2NvbnMgVW5tb2RpZmlhYmxlU29ydGVkTWFwOnZvaWRdCisgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz00MDk2XQorICAgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgICAgUHNpUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgICAgICBQc2lQYXJhbWV0ZXJTdHViW3AxOmphdmEudXRpbC5Tb3J0ZWRNYXA8Syw/IGV4dGVuZHMgVj5dCisgICAgICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MF0KKyAgICAgICAgUHNpUmVmTGlzdFN0dWJbVEhST1dTX0xJU1Q6XQorICAgICAgUHNpTWV0aG9kU3R1Yltjb21wYXJhdG9yOmphdmEudXRpbC5Db21wYXJhdG9yPD8gc3VwZXIgSz5dCisgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0xXQorICAgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgICAgUHNpUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgICAgUHNpUmVmTGlzdFN0dWJbVEhST1dTX0xJU1Q6XQorICAgICAgUHNpTWV0aG9kU3R1YltzdWJNYXA6amF2YS51dGlsLlNvcnRlZE1hcDxLLFY+XQorICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MV0KKyAgICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgIFBzaVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgICAgUHNpUGFyYW1ldGVyU3R1YltwMTpLXQorICAgICAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTBdCisgICAgICAgICAgUHNpUGFyYW1ldGVyU3R1YltwMjpLXQorICAgICAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTBdCisgICAgICAgIFBzaVJlZkxpc3RTdHViW1RIUk9XU19MSVNUOl0KKyAgICAgIFBzaU1ldGhvZFN0dWJbaGVhZE1hcDpqYXZhLnV0aWwuU29ydGVkTWFwPEssVj5dCisgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0xXQorICAgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgICAgUHNpUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgICAgICBQc2lQYXJhbWV0ZXJTdHViW3AxOktdCisgICAgICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MF0KKyAgICAgICAgUHNpUmVmTGlzdFN0dWJbVEhST1dTX0xJU1Q6XQorICAgICAgUHNpTWV0aG9kU3R1Ylt0YWlsTWFwOmphdmEudXRpbC5Tb3J0ZWRNYXA8SyxWPl0KKyAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTFdCisgICAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgICBQc2lQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgICAgIFBzaVBhcmFtZXRlclN0dWJbcDE6S10KKyAgICAgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0wXQorICAgICAgICBQc2lSZWZMaXN0U3R1YltUSFJPV1NfTElTVDpdCisgICAgICBQc2lNZXRob2RTdHViW2ZpcnN0S2V5OktdCisgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0xXQorICAgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgICAgUHNpUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgICAgUHNpUmVmTGlzdFN0dWJbVEhST1dTX0xJU1Q6XQorICAgICAgUHNpTWV0aG9kU3R1YltsYXN0S2V5OktdCisgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0xXQorICAgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgICAgUHNpUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgICAgUHNpUmVmTGlzdFN0dWJbVEhST1dTX0xJU1Q6XQorICAgIFBzaUNsYXNzU3R1YltuYW1lPVVubW9kaWZpYWJsZVNvcnRlZFNldCBmcW49amF2YS51dGlsLkNvbGxlY3Rpb25zLlVubW9kaWZpYWJsZVNvcnRlZFNldF0KKyAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz00MTA0XQorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgIFBzaVR5cGVQYXJhbWV0ZXJbRV0KKyAgICAgICAgICBQc2lSZWZMaXN0U3R1YltFWFRFTkRTX0JPVU5EU19MSVNUOl0KKyAgICAgIFBzaVJlZkxpc3RTdHViW0VYVEVORFNfTElTVDpqYXZhLnV0aWwuQ29sbGVjdGlvbnMuVW5tb2RpZmlhYmxlU2V0PEU+XQorICAgICAgUHNpUmVmTGlzdFN0dWJbSU1QTEVNRU5UU19MSVNUOmphdmEudXRpbC5Tb3J0ZWRTZXQ8RT4sIGphdmEuaW8uU2VyaWFsaXphYmxlXQorICAgICAgUHNpRmllbGRTdHViW3NlcmlhbFZlcnNpb25VSUQ6bG9uZz0tNDkyOTE0OTU5MTU5OTkxMTE2NUxdCisgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0yNl0KKyAgICAgIFBzaUZpZWxkU3R1YltzczpqYXZhLnV0aWwuU29ydGVkU2V0PEU+XQorICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9Ml0KKyAgICAgIFBzaU1ldGhvZFN0dWJbY29ucyBVbm1vZGlmaWFibGVTb3J0ZWRTZXQ6dm9pZF0KKyAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTQwOTZdCisgICAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgICBQc2lQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgICAgIFBzaVBhcmFtZXRlclN0dWJbcDE6amF2YS51dGlsLlNvcnRlZFNldDxFPl0KKyAgICAgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0wXQorICAgICAgICBQc2lSZWZMaXN0U3R1YltUSFJPV1NfTElTVDpdCisgICAgICBQc2lNZXRob2RTdHViW2NvbXBhcmF0b3I6amF2YS51dGlsLkNvbXBhcmF0b3I8PyBzdXBlciBFPl0KKyAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTFdCisgICAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgICBQc2lQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgICBQc2lSZWZMaXN0U3R1YltUSFJPV1NfTElTVDpdCisgICAgICBQc2lNZXRob2RTdHViW3N1YlNldDpqYXZhLnV0aWwuU29ydGVkU2V0PEU+XQorICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MV0KKyAgICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgIFBzaVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgICAgUHNpUGFyYW1ldGVyU3R1YltwMTpFXQorICAgICAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTBdCisgICAgICAgICAgUHNpUGFyYW1ldGVyU3R1YltwMjpFXQorICAgICAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTBdCisgICAgICAgIFBzaVJlZkxpc3RTdHViW1RIUk9XU19MSVNUOl0KKyAgICAgIFBzaU1ldGhvZFN0dWJbaGVhZFNldDpqYXZhLnV0aWwuU29ydGVkU2V0PEU+XQorICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MV0KKyAgICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgIFBzaVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgICAgUHNpUGFyYW1ldGVyU3R1YltwMTpFXQorICAgICAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTBdCisgICAgICAgIFBzaVJlZkxpc3RTdHViW1RIUk9XU19MSVNUOl0KKyAgICAgIFBzaU1ldGhvZFN0dWJbdGFpbFNldDpqYXZhLnV0aWwuU29ydGVkU2V0PEU+XQorICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MV0KKyAgICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgIFBzaVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgICAgUHNpUGFyYW1ldGVyU3R1YltwMTpFXQorICAgICAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTBdCisgICAgICAgIFBzaVJlZkxpc3RTdHViW1RIUk9XU19MSVNUOl0KKyAgICAgIFBzaU1ldGhvZFN0dWJbZmlyc3Q6RV0KKyAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTFdCisgICAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgICBQc2lQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgICBQc2lSZWZMaXN0U3R1YltUSFJPV1NfTElTVDpdCisgICAgICBQc2lNZXRob2RTdHViW2xhc3Q6RV0KKyAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTFdCisgICAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgICBQc2lQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgICBQc2lSZWZMaXN0U3R1YltUSFJPV1NfTElTVDpdCisgICAgUHNpRmllbGRTdHViW0JJTkFSWVNFQVJDSF9USFJFU0hPTEQ6aW50PTUwMDBdCisgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MjZdCisgICAgUHNpRmllbGRTdHViW1JFVkVSU0VfVEhSRVNIT0xEOmludD0xOF0KKyAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0yNl0KKyAgICBQc2lGaWVsZFN0dWJbU0hVRkZMRV9USFJFU0hPTEQ6aW50PTVdCisgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MjZdCisgICAgUHNpRmllbGRTdHViW0ZJTExfVEhSRVNIT0xEOmludD0yNV0KKyAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0yNl0KKyAgICBQc2lGaWVsZFN0dWJbUk9UQVRFX1RIUkVTSE9MRDppbnQ9MTAwXQorICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTI2XQorICAgIFBzaUZpZWxkU3R1YltDT1BZX1RIUkVTSE9MRDppbnQ9MTBdCisgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MjZdCisgICAgUHNpRmllbGRTdHViW1JFUExBQ0VBTExfVEhSRVNIT0xEOmludD0xMV0KKyAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0yNl0KKyAgICBQc2lGaWVsZFN0dWJbSU5ERVhPRlNVQkxJU1RfVEhSRVNIT0xEOmludD0zNV0KKyAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0yNl0KKyAgICBQc2lGaWVsZFN0dWJbcjpqYXZhLnV0aWwuUmFuZG9tXQorICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTEwXQorICAgIFBzaUZpZWxkU3R1YltFTVBUWV9TRVQ6amF2YS51dGlsLlNldF0KKyAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0yNV0KKyAgICBQc2lGaWVsZFN0dWJbRU1QVFlfTElTVDpqYXZhLnV0aWwuTGlzdF0KKyAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0yNV0KKyAgICBQc2lGaWVsZFN0dWJbRU1QVFlfTUFQOmphdmEudXRpbC5NYXBdCisgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MjVdCisgICAgUHNpRmllbGRTdHViW1JFVkVSU0VfT1JERVI6amF2YS51dGlsLkNvbXBhcmF0b3JdCisgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MjZdCisgICAgUHNpTWV0aG9kU3R1Yltjb25zIENvbGxlY3Rpb25zOnZvaWRdCisgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9Ml0KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgUHNpUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgIFBzaVJlZkxpc3RTdHViW1RIUk9XU19MSVNUOl0KKyAgICBQc2lNZXRob2RTdHViW3NvcnQ6dm9pZF0KKyAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz05XQorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgIFBzaVR5cGVQYXJhbWV0ZXJbVF0KKyAgICAgICAgICBQc2lSZWZMaXN0U3R1YltFWFRFTkRTX0JPVU5EU19MSVNUOmphdmEubGFuZy5Db21wYXJhYmxlPD8gc3VwZXIgVD5dCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgICBQc2lQYXJhbWV0ZXJTdHViW3AxOmphdmEudXRpbC5MaXN0PFQ+XQorICAgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0wXQorICAgICAgUHNpUmVmTGlzdFN0dWJbVEhST1dTX0xJU1Q6XQorICAgIFBzaU1ldGhvZFN0dWJbc29ydDp2b2lkXQorICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTldCisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgICAgUHNpVHlwZVBhcmFtZXRlcltUXQorICAgICAgICAgIFBzaVJlZkxpc3RTdHViW0VYVEVORFNfQk9VTkRTX0xJU1Q6XQorICAgICAgUHNpUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgICAgUHNpUGFyYW1ldGVyU3R1YltwMTpqYXZhLnV0aWwuTGlzdDxUPl0KKyAgICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MF0KKyAgICAgICAgUHNpUGFyYW1ldGVyU3R1YltwMjpqYXZhLnV0aWwuQ29tcGFyYXRvcjw/IHN1cGVyIFQ+XQorICAgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0wXQorICAgICAgUHNpUmVmTGlzdFN0dWJbVEhST1dTX0xJU1Q6XQorICAgIFBzaU1ldGhvZFN0dWJbYmluYXJ5U2VhcmNoOmludF0KKyAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz05XQorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgIFBzaVR5cGVQYXJhbWV0ZXJbVF0KKyAgICAgICAgICBQc2lSZWZMaXN0U3R1YltFWFRFTkRTX0JPVU5EU19MSVNUOmphdmEubGFuZy5Db21wYXJhYmxlPD8gc3VwZXIgVD5dCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgICBQc2lQYXJhbWV0ZXJTdHViW3AxOmphdmEudXRpbC5MaXN0PD8gZXh0ZW5kcyBUPl0KKyAgICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MF0KKyAgICAgICAgUHNpUGFyYW1ldGVyU3R1YltwMjpUXQorICAgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0wXQorICAgICAgUHNpUmVmTGlzdFN0dWJbVEhST1dTX0xJU1Q6XQorICAgIFBzaU1ldGhvZFN0dWJbaW5kZXhlZEJpbmFyeVNlYXJjaDppbnRdCisgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MTBdCisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgICAgUHNpVHlwZVBhcmFtZXRlcltUXQorICAgICAgICAgIFBzaVJlZkxpc3RTdHViW0VYVEVORFNfQk9VTkRTX0xJU1Q6amF2YS5sYW5nLkNvbXBhcmFibGU8PyBzdXBlciBUPl0KKyAgICAgIFBzaVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgIFBzaVBhcmFtZXRlclN0dWJbcDE6amF2YS51dGlsLkxpc3Q8PyBleHRlbmRzIFQ+XQorICAgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0wXQorICAgICAgICBQc2lQYXJhbWV0ZXJTdHViW3AyOlRdCisgICAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTBdCisgICAgICBQc2lSZWZMaXN0U3R1YltUSFJPV1NfTElTVDpdCisgICAgUHNpTWV0aG9kU3R1YltpdGVyYXRvckJpbmFyeVNlYXJjaDppbnRdCisgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MTBdCisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgICAgUHNpVHlwZVBhcmFtZXRlcltUXQorICAgICAgICAgIFBzaVJlZkxpc3RTdHViW0VYVEVORFNfQk9VTkRTX0xJU1Q6amF2YS5sYW5nLkNvbXBhcmFibGU8PyBzdXBlciBUPl0KKyAgICAgIFBzaVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgIFBzaVBhcmFtZXRlclN0dWJbcDE6amF2YS51dGlsLkxpc3Q8PyBleHRlbmRzIFQ+XQorICAgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0wXQorICAgICAgICBQc2lQYXJhbWV0ZXJTdHViW3AyOlRdCisgICAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTBdCisgICAgICBQc2lSZWZMaXN0U3R1YltUSFJPV1NfTElTVDpdCisgICAgUHNpTWV0aG9kU3R1YltnZXQ6VF0KKyAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0xMF0KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgICBQc2lUeXBlUGFyYW1ldGVyW1RdCisgICAgICAgICAgUHNpUmVmTGlzdFN0dWJbRVhURU5EU19CT1VORFNfTElTVDpdCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgICBQc2lQYXJhbWV0ZXJTdHViW3AxOmphdmEudXRpbC5MaXN0SXRlcmF0b3I8PyBleHRlbmRzIFQ+XQorICAgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0wXQorICAgICAgICBQc2lQYXJhbWV0ZXJTdHViW3AyOmludF0KKyAgICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MF0KKyAgICAgIFBzaVJlZkxpc3RTdHViW1RIUk9XU19MSVNUOl0KKyAgICBQc2lNZXRob2RTdHViW2JpbmFyeVNlYXJjaDppbnRdCisgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9OV0KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgICBQc2lUeXBlUGFyYW1ldGVyW1RdCisgICAgICAgICAgUHNpUmVmTGlzdFN0dWJbRVhURU5EU19CT1VORFNfTElTVDpdCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgICBQc2lQYXJhbWV0ZXJTdHViW3AxOmphdmEudXRpbC5MaXN0PD8gZXh0ZW5kcyBUPl0KKyAgICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MF0KKyAgICAgICAgUHNpUGFyYW1ldGVyU3R1YltwMjpUXQorICAgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0wXQorICAgICAgICBQc2lQYXJhbWV0ZXJTdHViW3AzOmphdmEudXRpbC5Db21wYXJhdG9yPD8gc3VwZXIgVD5dCisgICAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTBdCisgICAgICBQc2lSZWZMaXN0U3R1YltUSFJPV1NfTElTVDpdCisgICAgUHNpTWV0aG9kU3R1YltpbmRleGVkQmluYXJ5U2VhcmNoOmludF0KKyAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0xMF0KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgICBQc2lUeXBlUGFyYW1ldGVyW1RdCisgICAgICAgICAgUHNpUmVmTGlzdFN0dWJbRVhURU5EU19CT1VORFNfTElTVDpdCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgICBQc2lQYXJhbWV0ZXJTdHViW3AxOmphdmEudXRpbC5MaXN0PD8gZXh0ZW5kcyBUPl0KKyAgICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MF0KKyAgICAgICAgUHNpUGFyYW1ldGVyU3R1YltwMjpUXQorICAgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0wXQorICAgICAgICBQc2lQYXJhbWV0ZXJTdHViW3AzOmphdmEudXRpbC5Db21wYXJhdG9yPD8gc3VwZXIgVD5dCisgICAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTBdCisgICAgICBQc2lSZWZMaXN0U3R1YltUSFJPV1NfTElTVDpdCisgICAgUHNpTWV0aG9kU3R1YltpdGVyYXRvckJpbmFyeVNlYXJjaDppbnRdCisgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MTBdCisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgICAgUHNpVHlwZVBhcmFtZXRlcltUXQorICAgICAgICAgIFBzaVJlZkxpc3RTdHViW0VYVEVORFNfQk9VTkRTX0xJU1Q6XQorICAgICAgUHNpUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgICAgUHNpUGFyYW1ldGVyU3R1YltwMTpqYXZhLnV0aWwuTGlzdDw/IGV4dGVuZHMgVD5dCisgICAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTBdCisgICAgICAgIFBzaVBhcmFtZXRlclN0dWJbcDI6VF0KKyAgICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MF0KKyAgICAgICAgUHNpUGFyYW1ldGVyU3R1YltwMzpqYXZhLnV0aWwuQ29tcGFyYXRvcjw/IHN1cGVyIFQ+XQorICAgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0wXQorICAgICAgUHNpUmVmTGlzdFN0dWJbVEhST1dTX0xJU1Q6XQorICAgIFBzaU1ldGhvZFN0dWJbcmV2ZXJzZTp2b2lkXQorICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTldCisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgIFBzaVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgIFBzaVBhcmFtZXRlclN0dWJbcDE6amF2YS51dGlsLkxpc3Q8Pz5dCisgICAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTBdCisgICAgICBQc2lSZWZMaXN0U3R1YltUSFJPV1NfTElTVDpdCisgICAgUHNpTWV0aG9kU3R1YltzaHVmZmxlOnZvaWRdCisgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9OV0KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgUHNpUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgICAgUHNpUGFyYW1ldGVyU3R1YltwMTpqYXZhLnV0aWwuTGlzdDw/Pl0KKyAgICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MF0KKyAgICAgIFBzaVJlZkxpc3RTdHViW1RIUk9XU19MSVNUOl0KKyAgICBQc2lNZXRob2RTdHViW3NodWZmbGU6dm9pZF0KKyAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz05XQorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3RTdHViCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgICBQc2lQYXJhbWV0ZXJTdHViW3AxOmphdmEudXRpbC5MaXN0PD8+XQorICAgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0wXQorICAgICAgICBQc2lQYXJhbWV0ZXJTdHViW3AyOmphdmEudXRpbC5SYW5kb21dCisgICAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTBdCisgICAgICBQc2lSZWZMaXN0U3R1YltUSFJPV1NfTElTVDpdCisgICAgUHNpTWV0aG9kU3R1Yltzd2FwOnZvaWRdCisgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9OV0KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgUHNpUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgICAgUHNpUGFyYW1ldGVyU3R1YltwMTpqYXZhLnV0aWwuTGlzdDw/Pl0KKyAgICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MF0KKyAgICAgICAgUHNpUGFyYW1ldGVyU3R1YltwMjppbnRdCisgICAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTBdCisgICAgICAgIFBzaVBhcmFtZXRlclN0dWJbcDM6aW50XQorICAgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0wXQorICAgICAgUHNpUmVmTGlzdFN0dWJbVEhST1dTX0xJU1Q6XQorICAgIFBzaU1ldGhvZFN0dWJbc3dhcDp2b2lkXQorICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTEwXQorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3RTdHViCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgICBQc2lQYXJhbWV0ZXJTdHViW3AxOmphdmEubGFuZy5PYmplY3RbXV0KKyAgICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MF0KKyAgICAgICAgUHNpUGFyYW1ldGVyU3R1YltwMjppbnRdCisgICAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTBdCisgICAgICAgIFBzaVBhcmFtZXRlclN0dWJbcDM6aW50XQorICAgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0wXQorICAgICAgUHNpUmVmTGlzdFN0dWJbVEhST1dTX0xJU1Q6XQorICAgIFBzaU1ldGhvZFN0dWJbZmlsbDp2b2lkXQorICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTldCisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgICAgUHNpVHlwZVBhcmFtZXRlcltUXQorICAgICAgICAgIFBzaVJlZkxpc3RTdHViW0VYVEVORFNfQk9VTkRTX0xJU1Q6XQorICAgICAgUHNpUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgICAgUHNpUGFyYW1ldGVyU3R1YltwMTpqYXZhLnV0aWwuTGlzdDw/IHN1cGVyIFQ+XQorICAgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0wXQorICAgICAgICBQc2lQYXJhbWV0ZXJTdHViW3AyOlRdCisgICAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTBdCisgICAgICBQc2lSZWZMaXN0U3R1YltUSFJPV1NfTElTVDpdCisgICAgUHNpTWV0aG9kU3R1Yltjb3B5OnZvaWRdCisgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9OV0KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgICBQc2lUeXBlUGFyYW1ldGVyW1RdCisgICAgICAgICAgUHNpUmVmTGlzdFN0dWJbRVhURU5EU19CT1VORFNfTElTVDpdCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgICBQc2lQYXJhbWV0ZXJTdHViW3AxOmphdmEudXRpbC5MaXN0PD8gc3VwZXIgVD5dCisgICAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTBdCisgICAgICAgIFBzaVBhcmFtZXRlclN0dWJbcDI6amF2YS51dGlsLkxpc3Q8PyBleHRlbmRzIFQ+XQorICAgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0wXQorICAgICAgUHNpUmVmTGlzdFN0dWJbVEhST1dTX0xJU1Q6XQorICAgIFBzaU1ldGhvZFN0dWJbbWluOlRdCisgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9OV0KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgICBQc2lUeXBlUGFyYW1ldGVyW1RdCisgICAgICAgICAgUHNpUmVmTGlzdFN0dWJbRVhURU5EU19CT1VORFNfTElTVDpqYXZhLmxhbmcuQ29tcGFyYWJsZTw/IHN1cGVyIFQ+XQorICAgICAgUHNpUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgICAgUHNpUGFyYW1ldGVyU3R1YltwMTpqYXZhLnV0aWwuQ29sbGVjdGlvbjw/IGV4dGVuZHMgVD5dCisgICAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTBdCisgICAgICBQc2lSZWZMaXN0U3R1YltUSFJPV1NfTElTVDpdCisgICAgUHNpTWV0aG9kU3R1YlttaW46VF0KKyAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz05XQorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgIFBzaVR5cGVQYXJhbWV0ZXJbVF0KKyAgICAgICAgICBQc2lSZWZMaXN0U3R1YltFWFRFTkRTX0JPVU5EU19MSVNUOl0KKyAgICAgIFBzaVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgIFBzaVBhcmFtZXRlclN0dWJbcDE6amF2YS51dGlsLkNvbGxlY3Rpb248PyBleHRlbmRzIFQ+XQorICAgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0wXQorICAgICAgICBQc2lQYXJhbWV0ZXJTdHViW3AyOmphdmEudXRpbC5Db21wYXJhdG9yPD8gc3VwZXIgVD5dCisgICAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTBdCisgICAgICBQc2lSZWZMaXN0U3R1YltUSFJPV1NfTElTVDpdCisgICAgUHNpTWV0aG9kU3R1YlttYXg6VF0KKyAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz05XQorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgIFBzaVR5cGVQYXJhbWV0ZXJbVF0KKyAgICAgICAgICBQc2lSZWZMaXN0U3R1YltFWFRFTkRTX0JPVU5EU19MSVNUOmphdmEubGFuZy5Db21wYXJhYmxlPD8gc3VwZXIgVD5dCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgICBQc2lQYXJhbWV0ZXJTdHViW3AxOmphdmEudXRpbC5Db2xsZWN0aW9uPD8gZXh0ZW5kcyBUPl0KKyAgICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MF0KKyAgICAgIFBzaVJlZkxpc3RTdHViW1RIUk9XU19MSVNUOl0KKyAgICBQc2lNZXRob2RTdHViW21heDpUXQorICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTldCisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgICAgUHNpVHlwZVBhcmFtZXRlcltUXQorICAgICAgICAgIFBzaVJlZkxpc3RTdHViW0VYVEVORFNfQk9VTkRTX0xJU1Q6XQorICAgICAgUHNpUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgICAgUHNpUGFyYW1ldGVyU3R1YltwMTpqYXZhLnV0aWwuQ29sbGVjdGlvbjw/IGV4dGVuZHMgVD5dCisgICAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTBdCisgICAgICAgIFBzaVBhcmFtZXRlclN0dWJbcDI6amF2YS51dGlsLkNvbXBhcmF0b3I8PyBzdXBlciBUPl0KKyAgICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MF0KKyAgICAgIFBzaVJlZkxpc3RTdHViW1RIUk9XU19MSVNUOl0KKyAgICBQc2lNZXRob2RTdHViW3JvdGF0ZTp2b2lkXQorICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTldCisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgIFBzaVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgIFBzaVBhcmFtZXRlclN0dWJbcDE6amF2YS51dGlsLkxpc3Q8Pz5dCisgICAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTBdCisgICAgICAgIFBzaVBhcmFtZXRlclN0dWJbcDI6aW50XQorICAgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0wXQorICAgICAgUHNpUmVmTGlzdFN0dWJbVEhST1dTX0xJU1Q6XQorICAgIFBzaU1ldGhvZFN0dWJbcm90YXRlMTp2b2lkXQorICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTEwXQorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgIFBzaVR5cGVQYXJhbWV0ZXJbVF0KKyAgICAgICAgICBQc2lSZWZMaXN0U3R1YltFWFRFTkRTX0JPVU5EU19MSVNUOl0KKyAgICAgIFBzaVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgIFBzaVBhcmFtZXRlclN0dWJbcDE6amF2YS51dGlsLkxpc3Q8VD5dCisgICAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTBdCisgICAgICAgIFBzaVBhcmFtZXRlclN0dWJbcDI6aW50XQorICAgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0wXQorICAgICAgUHNpUmVmTGlzdFN0dWJbVEhST1dTX0xJU1Q6XQorICAgIFBzaU1ldGhvZFN0dWJbcm90YXRlMjp2b2lkXQorICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTEwXQorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3RTdHViCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgICBQc2lQYXJhbWV0ZXJTdHViW3AxOmphdmEudXRpbC5MaXN0PD8+XQorICAgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0wXQorICAgICAgICBQc2lQYXJhbWV0ZXJTdHViW3AyOmludF0KKyAgICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MF0KKyAgICAgIFBzaVJlZkxpc3RTdHViW1RIUk9XU19MSVNUOl0KKyAgICBQc2lNZXRob2RTdHViW3JlcGxhY2VBbGw6Ym9vbGVhbl0KKyAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz05XQorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgIFBzaVR5cGVQYXJhbWV0ZXJbVF0KKyAgICAgICAgICBQc2lSZWZMaXN0U3R1YltFWFRFTkRTX0JPVU5EU19MSVNUOl0KKyAgICAgIFBzaVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgIFBzaVBhcmFtZXRlclN0dWJbcDE6amF2YS51dGlsLkxpc3Q8VD5dCisgICAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTBdCisgICAgICAgIFBzaVBhcmFtZXRlclN0dWJbcDI6VF0KKyAgICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MF0KKyAgICAgICAgUHNpUGFyYW1ldGVyU3R1YltwMzpUXQorICAgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0wXQorICAgICAgUHNpUmVmTGlzdFN0dWJbVEhST1dTX0xJU1Q6XQorICAgIFBzaU1ldGhvZFN0dWJbaW5kZXhPZlN1Ykxpc3Q6aW50XQorICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTldCisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgIFBzaVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgIFBzaVBhcmFtZXRlclN0dWJbcDE6amF2YS51dGlsLkxpc3Q8Pz5dCisgICAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTBdCisgICAgICAgIFBzaVBhcmFtZXRlclN0dWJbcDI6amF2YS51dGlsLkxpc3Q8Pz5dCisgICAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTBdCisgICAgICBQc2lSZWZMaXN0U3R1YltUSFJPV1NfTElTVDpdCisgICAgUHNpTWV0aG9kU3R1YltsYXN0SW5kZXhPZlN1Ykxpc3Q6aW50XQorICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTldCisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgIFBzaVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgIFBzaVBhcmFtZXRlclN0dWJbcDE6amF2YS51dGlsLkxpc3Q8Pz5dCisgICAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTBdCisgICAgICAgIFBzaVBhcmFtZXRlclN0dWJbcDI6amF2YS51dGlsLkxpc3Q8Pz5dCisgICAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTBdCisgICAgICBQc2lSZWZMaXN0U3R1YltUSFJPV1NfTElTVDpdCisgICAgUHNpTWV0aG9kU3R1Ylt1bm1vZGlmaWFibGVDb2xsZWN0aW9uOmphdmEudXRpbC5Db2xsZWN0aW9uPFQ+XQorICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTldCisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgICAgUHNpVHlwZVBhcmFtZXRlcltUXQorICAgICAgICAgIFBzaVJlZkxpc3RTdHViW0VYVEVORFNfQk9VTkRTX0xJU1Q6XQorICAgICAgUHNpUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgICAgUHNpUGFyYW1ldGVyU3R1YltwMTpqYXZhLnV0aWwuQ29sbGVjdGlvbjw/IGV4dGVuZHMgVD5dCisgICAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTBdCisgICAgICBQc2lSZWZMaXN0U3R1YltUSFJPV1NfTElTVDpdCisgICAgUHNpTWV0aG9kU3R1Ylt1bm1vZGlmaWFibGVTZXQ6amF2YS51dGlsLlNldDxUPl0KKyAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz05XQorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgIFBzaVR5cGVQYXJhbWV0ZXJbVF0KKyAgICAgICAgICBQc2lSZWZMaXN0U3R1YltFWFRFTkRTX0JPVU5EU19MSVNUOl0KKyAgICAgIFBzaVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgIFBzaVBhcmFtZXRlclN0dWJbcDE6amF2YS51dGlsLlNldDw/IGV4dGVuZHMgVD5dCisgICAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTBdCisgICAgICBQc2lSZWZMaXN0U3R1YltUSFJPV1NfTElTVDpdCisgICAgUHNpTWV0aG9kU3R1Ylt1bm1vZGlmaWFibGVTb3J0ZWRTZXQ6amF2YS51dGlsLlNvcnRlZFNldDxUPl0KKyAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz05XQorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgIFBzaVR5cGVQYXJhbWV0ZXJbVF0KKyAgICAgICAgICBQc2lSZWZMaXN0U3R1YltFWFRFTkRTX0JPVU5EU19MSVNUOl0KKyAgICAgIFBzaVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgIFBzaVBhcmFtZXRlclN0dWJbcDE6amF2YS51dGlsLlNvcnRlZFNldDxUPl0KKyAgICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MF0KKyAgICAgIFBzaVJlZkxpc3RTdHViW1RIUk9XU19MSVNUOl0KKyAgICBQc2lNZXRob2RTdHViW3VubW9kaWZpYWJsZUxpc3Q6amF2YS51dGlsLkxpc3Q8VD5dCisgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9OV0KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgICBQc2lUeXBlUGFyYW1ldGVyW1RdCisgICAgICAgICAgUHNpUmVmTGlzdFN0dWJbRVhURU5EU19CT1VORFNfTElTVDpdCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgICBQc2lQYXJhbWV0ZXJTdHViW3AxOmphdmEudXRpbC5MaXN0PD8gZXh0ZW5kcyBUPl0KKyAgICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MF0KKyAgICAgIFBzaVJlZkxpc3RTdHViW1RIUk9XU19MSVNUOl0KKyAgICBQc2lNZXRob2RTdHViW3VubW9kaWZpYWJsZU1hcDpqYXZhLnV0aWwuTWFwPEssVj5dCisgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9OV0KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgICBQc2lUeXBlUGFyYW1ldGVyW0tdCisgICAgICAgICAgUHNpUmVmTGlzdFN0dWJbRVhURU5EU19CT1VORFNfTElTVDpdCisgICAgICAgIFBzaVR5cGVQYXJhbWV0ZXJbVl0KKyAgICAgICAgICBQc2lSZWZMaXN0U3R1YltFWFRFTkRTX0JPVU5EU19MSVNUOl0KKyAgICAgIFBzaVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgIFBzaVBhcmFtZXRlclN0dWJbcDE6amF2YS51dGlsLk1hcDw/IGV4dGVuZHMgSyw/IGV4dGVuZHMgVj5dCisgICAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTBdCisgICAgICBQc2lSZWZMaXN0U3R1YltUSFJPV1NfTElTVDpdCisgICAgUHNpTWV0aG9kU3R1Ylt1bm1vZGlmaWFibGVTb3J0ZWRNYXA6amF2YS51dGlsLlNvcnRlZE1hcDxLLFY+XQorICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTldCisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgICAgUHNpVHlwZVBhcmFtZXRlcltLXQorICAgICAgICAgIFBzaVJlZkxpc3RTdHViW0VYVEVORFNfQk9VTkRTX0xJU1Q6XQorICAgICAgICBQc2lUeXBlUGFyYW1ldGVyW1ZdCisgICAgICAgICAgUHNpUmVmTGlzdFN0dWJbRVhURU5EU19CT1VORFNfTElTVDpdCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgICBQc2lQYXJhbWV0ZXJTdHViW3AxOmphdmEudXRpbC5Tb3J0ZWRNYXA8Syw/IGV4dGVuZHMgVj5dCisgICAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTBdCisgICAgICBQc2lSZWZMaXN0U3R1YltUSFJPV1NfTElTVDpdCisgICAgUHNpTWV0aG9kU3R1YltzeW5jaHJvbml6ZWRDb2xsZWN0aW9uOmphdmEudXRpbC5Db2xsZWN0aW9uPFQ+XQorICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTldCisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgICAgUHNpVHlwZVBhcmFtZXRlcltUXQorICAgICAgICAgIFBzaVJlZkxpc3RTdHViW0VYVEVORFNfQk9VTkRTX0xJU1Q6XQorICAgICAgUHNpUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgICAgUHNpUGFyYW1ldGVyU3R1YltwMTpqYXZhLnV0aWwuQ29sbGVjdGlvbjxUPl0KKyAgICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MF0KKyAgICAgIFBzaVJlZkxpc3RTdHViW1RIUk9XU19MSVNUOl0KKyAgICBQc2lNZXRob2RTdHViW3N5bmNocm9uaXplZENvbGxlY3Rpb246amF2YS51dGlsLkNvbGxlY3Rpb248VD5dCisgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9NDEwNF0KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgICBQc2lUeXBlUGFyYW1ldGVyW1RdCisgICAgICAgICAgUHNpUmVmTGlzdFN0dWJbRVhURU5EU19CT1VORFNfTElTVDpdCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgICBQc2lQYXJhbWV0ZXJTdHViW3AxOmphdmEudXRpbC5Db2xsZWN0aW9uPFQ+XQorICAgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0wXQorICAgICAgICBQc2lQYXJhbWV0ZXJTdHViW3AyOmphdmEubGFuZy5PYmplY3RdCisgICAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTBdCisgICAgICBQc2lSZWZMaXN0U3R1YltUSFJPV1NfTElTVDpdCisgICAgUHNpTWV0aG9kU3R1YltzeW5jaHJvbml6ZWRTZXQ6amF2YS51dGlsLlNldDxUPl0KKyAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz05XQorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgIFBzaVR5cGVQYXJhbWV0ZXJbVF0KKyAgICAgICAgICBQc2lSZWZMaXN0U3R1YltFWFRFTkRTX0JPVU5EU19MSVNUOl0KKyAgICAgIFBzaVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgIFBzaVBhcmFtZXRlclN0dWJbcDE6amF2YS51dGlsLlNldDxUPl0KKyAgICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MF0KKyAgICAgIFBzaVJlZkxpc3RTdHViW1RIUk9XU19MSVNUOl0KKyAgICBQc2lNZXRob2RTdHViW3N5bmNocm9uaXplZFNldDpqYXZhLnV0aWwuU2V0PFQ+XQorICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTQxMDRdCisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgICAgUHNpVHlwZVBhcmFtZXRlcltUXQorICAgICAgICAgIFBzaVJlZkxpc3RTdHViW0VYVEVORFNfQk9VTkRTX0xJU1Q6XQorICAgICAgUHNpUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgICAgUHNpUGFyYW1ldGVyU3R1YltwMTpqYXZhLnV0aWwuU2V0PFQ+XQorICAgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0wXQorICAgICAgICBQc2lQYXJhbWV0ZXJTdHViW3AyOmphdmEubGFuZy5PYmplY3RdCisgICAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTBdCisgICAgICBQc2lSZWZMaXN0U3R1YltUSFJPV1NfTElTVDpdCisgICAgUHNpTWV0aG9kU3R1YltzeW5jaHJvbml6ZWRTb3J0ZWRTZXQ6amF2YS51dGlsLlNvcnRlZFNldDxUPl0KKyAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz05XQorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgIFBzaVR5cGVQYXJhbWV0ZXJbVF0KKyAgICAgICAgICBQc2lSZWZMaXN0U3R1YltFWFRFTkRTX0JPVU5EU19MSVNUOl0KKyAgICAgIFBzaVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgIFBzaVBhcmFtZXRlclN0dWJbcDE6amF2YS51dGlsLlNvcnRlZFNldDxUPl0KKyAgICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MF0KKyAgICAgIFBzaVJlZkxpc3RTdHViW1RIUk9XU19MSVNUOl0KKyAgICBQc2lNZXRob2RTdHViW3N5bmNocm9uaXplZExpc3Q6amF2YS51dGlsLkxpc3Q8VD5dCisgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9OV0KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgICBQc2lUeXBlUGFyYW1ldGVyW1RdCisgICAgICAgICAgUHNpUmVmTGlzdFN0dWJbRVhURU5EU19CT1VORFNfTElTVDpdCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgICBQc2lQYXJhbWV0ZXJTdHViW3AxOmphdmEudXRpbC5MaXN0PFQ+XQorICAgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0wXQorICAgICAgUHNpUmVmTGlzdFN0dWJbVEhST1dTX0xJU1Q6XQorICAgIFBzaU1ldGhvZFN0dWJbc3luY2hyb25pemVkTGlzdDpqYXZhLnV0aWwuTGlzdDxUPl0KKyAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz00MTA0XQorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgIFBzaVR5cGVQYXJhbWV0ZXJbVF0KKyAgICAgICAgICBQc2lSZWZMaXN0U3R1YltFWFRFTkRTX0JPVU5EU19MSVNUOl0KKyAgICAgIFBzaVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgIFBzaVBhcmFtZXRlclN0dWJbcDE6amF2YS51dGlsLkxpc3Q8VD5dCisgICAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTBdCisgICAgICAgIFBzaVBhcmFtZXRlclN0dWJbcDI6amF2YS5sYW5nLk9iamVjdF0KKyAgICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MF0KKyAgICAgIFBzaVJlZkxpc3RTdHViW1RIUk9XU19MSVNUOl0KKyAgICBQc2lNZXRob2RTdHViW3N5bmNocm9uaXplZE1hcDpqYXZhLnV0aWwuTWFwPEssVj5dCisgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9OV0KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgICBQc2lUeXBlUGFyYW1ldGVyW0tdCisgICAgICAgICAgUHNpUmVmTGlzdFN0dWJbRVhURU5EU19CT1VORFNfTElTVDpdCisgICAgICAgIFBzaVR5cGVQYXJhbWV0ZXJbVl0KKyAgICAgICAgICBQc2lSZWZMaXN0U3R1YltFWFRFTkRTX0JPVU5EU19MSVNUOl0KKyAgICAgIFBzaVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgIFBzaVBhcmFtZXRlclN0dWJbcDE6amF2YS51dGlsLk1hcDxLLFY+XQorICAgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0wXQorICAgICAgUHNpUmVmTGlzdFN0dWJbVEhST1dTX0xJU1Q6XQorICAgIFBzaU1ldGhvZFN0dWJbc3luY2hyb25pemVkU29ydGVkTWFwOmphdmEudXRpbC5Tb3J0ZWRNYXA8SyxWPl0KKyAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz05XQorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgIFBzaVR5cGVQYXJhbWV0ZXJbS10KKyAgICAgICAgICBQc2lSZWZMaXN0U3R1YltFWFRFTkRTX0JPVU5EU19MSVNUOl0KKyAgICAgICAgUHNpVHlwZVBhcmFtZXRlcltWXQorICAgICAgICAgIFBzaVJlZkxpc3RTdHViW0VYVEVORFNfQk9VTkRTX0xJU1Q6XQorICAgICAgUHNpUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgICAgUHNpUGFyYW1ldGVyU3R1YltwMTpqYXZhLnV0aWwuU29ydGVkTWFwPEssVj5dCisgICAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTBdCisgICAgICBQc2lSZWZMaXN0U3R1YltUSFJPV1NfTElTVDpdCisgICAgUHNpTWV0aG9kU3R1YltjaGVja2VkQ29sbGVjdGlvbjpqYXZhLnV0aWwuQ29sbGVjdGlvbjxFPl0KKyAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz05XQorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgIFBzaVR5cGVQYXJhbWV0ZXJbRV0KKyAgICAgICAgICBQc2lSZWZMaXN0U3R1YltFWFRFTkRTX0JPVU5EU19MSVNUOl0KKyAgICAgIFBzaVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgIFBzaVBhcmFtZXRlclN0dWJbcDE6amF2YS51dGlsLkNvbGxlY3Rpb248RT5dCisgICAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTBdCisgICAgICAgIFBzaVBhcmFtZXRlclN0dWJbcDI6amF2YS5sYW5nLkNsYXNzPEU+XQorICAgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0wXQorICAgICAgUHNpUmVmTGlzdFN0dWJbVEhST1dTX0xJU1Q6XQorICAgIFBzaU1ldGhvZFN0dWJbY2hlY2tlZFNldDpqYXZhLnV0aWwuU2V0PEU+XQorICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTldCisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgICAgUHNpVHlwZVBhcmFtZXRlcltFXQorICAgICAgICAgIFBzaVJlZkxpc3RTdHViW0VYVEVORFNfQk9VTkRTX0xJU1Q6XQorICAgICAgUHNpUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgICAgUHNpUGFyYW1ldGVyU3R1YltwMTpqYXZhLnV0aWwuU2V0PEU+XQorICAgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0wXQorICAgICAgICBQc2lQYXJhbWV0ZXJTdHViW3AyOmphdmEubGFuZy5DbGFzczxFPl0KKyAgICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MF0KKyAgICAgIFBzaVJlZkxpc3RTdHViW1RIUk9XU19MSVNUOl0KKyAgICBQc2lNZXRob2RTdHViW2NoZWNrZWRTb3J0ZWRTZXQ6amF2YS51dGlsLlNvcnRlZFNldDxFPl0KKyAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz05XQorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgIFBzaVR5cGVQYXJhbWV0ZXJbRV0KKyAgICAgICAgICBQc2lSZWZMaXN0U3R1YltFWFRFTkRTX0JPVU5EU19MSVNUOl0KKyAgICAgIFBzaVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgIFBzaVBhcmFtZXRlclN0dWJbcDE6amF2YS51dGlsLlNvcnRlZFNldDxFPl0KKyAgICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MF0KKyAgICAgICAgUHNpUGFyYW1ldGVyU3R1YltwMjpqYXZhLmxhbmcuQ2xhc3M8RT5dCisgICAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTBdCisgICAgICBQc2lSZWZMaXN0U3R1YltUSFJPV1NfTElTVDpdCisgICAgUHNpTWV0aG9kU3R1YltjaGVja2VkTGlzdDpqYXZhLnV0aWwuTGlzdDxFPl0KKyAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz05XQorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgIFBzaVR5cGVQYXJhbWV0ZXJbRV0KKyAgICAgICAgICBQc2lSZWZMaXN0U3R1YltFWFRFTkRTX0JPVU5EU19MSVNUOl0KKyAgICAgIFBzaVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgIFBzaVBhcmFtZXRlclN0dWJbcDE6amF2YS51dGlsLkxpc3Q8RT5dCisgICAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTBdCisgICAgICAgIFBzaVBhcmFtZXRlclN0dWJbcDI6amF2YS5sYW5nLkNsYXNzPEU+XQorICAgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0wXQorICAgICAgUHNpUmVmTGlzdFN0dWJbVEhST1dTX0xJU1Q6XQorICAgIFBzaU1ldGhvZFN0dWJbY2hlY2tlZE1hcDpqYXZhLnV0aWwuTWFwPEssVj5dCisgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9OV0KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgICBQc2lUeXBlUGFyYW1ldGVyW0tdCisgICAgICAgICAgUHNpUmVmTGlzdFN0dWJbRVhURU5EU19CT1VORFNfTElTVDpdCisgICAgICAgIFBzaVR5cGVQYXJhbWV0ZXJbVl0KKyAgICAgICAgICBQc2lSZWZMaXN0U3R1YltFWFRFTkRTX0JPVU5EU19MSVNUOl0KKyAgICAgIFBzaVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgIFBzaVBhcmFtZXRlclN0dWJbcDE6amF2YS51dGlsLk1hcDxLLFY+XQorICAgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0wXQorICAgICAgICBQc2lQYXJhbWV0ZXJTdHViW3AyOmphdmEubGFuZy5DbGFzczxLPl0KKyAgICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MF0KKyAgICAgICAgUHNpUGFyYW1ldGVyU3R1YltwMzpqYXZhLmxhbmcuQ2xhc3M8Vj5dCisgICAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTBdCisgICAgICBQc2lSZWZMaXN0U3R1YltUSFJPV1NfTElTVDpdCisgICAgUHNpTWV0aG9kU3R1YltjaGVja2VkU29ydGVkTWFwOmphdmEudXRpbC5Tb3J0ZWRNYXA8SyxWPl0KKyAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz05XQorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgIFBzaVR5cGVQYXJhbWV0ZXJbS10KKyAgICAgICAgICBQc2lSZWZMaXN0U3R1YltFWFRFTkRTX0JPVU5EU19MSVNUOl0KKyAgICAgICAgUHNpVHlwZVBhcmFtZXRlcltWXQorICAgICAgICAgIFBzaVJlZkxpc3RTdHViW0VYVEVORFNfQk9VTkRTX0xJU1Q6XQorICAgICAgUHNpUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgICAgUHNpUGFyYW1ldGVyU3R1YltwMTpqYXZhLnV0aWwuU29ydGVkTWFwPEssVj5dCisgICAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTBdCisgICAgICAgIFBzaVBhcmFtZXRlclN0dWJbcDI6amF2YS5sYW5nLkNsYXNzPEs+XQorICAgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0wXQorICAgICAgICBQc2lQYXJhbWV0ZXJTdHViW3AzOmphdmEubGFuZy5DbGFzczxWPl0KKyAgICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MF0KKyAgICAgIFBzaVJlZkxpc3RTdHViW1RIUk9XU19MSVNUOl0KKyAgICBQc2lNZXRob2RTdHViW2VtcHR5U2V0OmphdmEudXRpbC5TZXQ8VD5dCisgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MjVdCisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgICAgUHNpVHlwZVBhcmFtZXRlcltUXQorICAgICAgICAgIFBzaVJlZkxpc3RTdHViW0VYVEVORFNfQk9VTkRTX0xJU1Q6XQorICAgICAgUHNpUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgIFBzaVJlZkxpc3RTdHViW1RIUk9XU19MSVNUOl0KKyAgICBQc2lNZXRob2RTdHViW2VtcHR5TGlzdDpqYXZhLnV0aWwuTGlzdDxUPl0KKyAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0yNV0KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgICBQc2lUeXBlUGFyYW1ldGVyW1RdCisgICAgICAgICAgUHNpUmVmTGlzdFN0dWJbRVhURU5EU19CT1VORFNfTElTVDpdCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgUHNpUmVmTGlzdFN0dWJbVEhST1dTX0xJU1Q6XQorICAgIFBzaU1ldGhvZFN0dWJbZW1wdHlNYXA6amF2YS51dGlsLk1hcDxLLFY+XQorICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTI1XQorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgIFBzaVR5cGVQYXJhbWV0ZXJbS10KKyAgICAgICAgICBQc2lSZWZMaXN0U3R1YltFWFRFTkRTX0JPVU5EU19MSVNUOl0KKyAgICAgICAgUHNpVHlwZVBhcmFtZXRlcltWXQorICAgICAgICAgIFBzaVJlZkxpc3RTdHViW0VYVEVORFNfQk9VTkRTX0xJU1Q6XQorICAgICAgUHNpUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgIFBzaVJlZkxpc3RTdHViW1RIUk9XU19MSVNUOl0KKyAgICBQc2lNZXRob2RTdHViW3NpbmdsZXRvbjpqYXZhLnV0aWwuU2V0PFQ+XQorICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTldCisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgICAgUHNpVHlwZVBhcmFtZXRlcltUXQorICAgICAgICAgIFBzaVJlZkxpc3RTdHViW0VYVEVORFNfQk9VTkRTX0xJU1Q6XQorICAgICAgUHNpUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgICAgUHNpUGFyYW1ldGVyU3R1YltwMTpUXQorICAgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0wXQorICAgICAgUHNpUmVmTGlzdFN0dWJbVEhST1dTX0xJU1Q6XQorICAgIFBzaU1ldGhvZFN0dWJbc2luZ2xldG9uTGlzdDpqYXZhLnV0aWwuTGlzdDxUPl0KKyAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz05XQorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgIFBzaVR5cGVQYXJhbWV0ZXJbVF0KKyAgICAgICAgICBQc2lSZWZMaXN0U3R1YltFWFRFTkRTX0JPVU5EU19MSVNUOl0KKyAgICAgIFBzaVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgIFBzaVBhcmFtZXRlclN0dWJbcDE6VF0KKyAgICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MF0KKyAgICAgIFBzaVJlZkxpc3RTdHViW1RIUk9XU19MSVNUOl0KKyAgICBQc2lNZXRob2RTdHViW3NpbmdsZXRvbk1hcDpqYXZhLnV0aWwuTWFwPEssVj5dCisgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9OV0KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgICBQc2lUeXBlUGFyYW1ldGVyW0tdCisgICAgICAgICAgUHNpUmVmTGlzdFN0dWJbRVhURU5EU19CT1VORFNfTElTVDpdCisgICAgICAgIFBzaVR5cGVQYXJhbWV0ZXJbVl0KKyAgICAgICAgICBQc2lSZWZMaXN0U3R1YltFWFRFTkRTX0JPVU5EU19MSVNUOl0KKyAgICAgIFBzaVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgIFBzaVBhcmFtZXRlclN0dWJbcDE6S10KKyAgICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MF0KKyAgICAgICAgUHNpUGFyYW1ldGVyU3R1YltwMjpWXQorICAgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0wXQorICAgICAgUHNpUmVmTGlzdFN0dWJbVEhST1dTX0xJU1Q6XQorICAgIFBzaU1ldGhvZFN0dWJbbkNvcGllczpqYXZhLnV0aWwuTGlzdDxUPl0KKyAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz05XQorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgIFBzaVR5cGVQYXJhbWV0ZXJbVF0KKyAgICAgICAgICBQc2lSZWZMaXN0U3R1YltFWFRFTkRTX0JPVU5EU19MSVNUOl0KKyAgICAgIFBzaVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgIFBzaVBhcmFtZXRlclN0dWJbcDE6aW50XQorICAgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0wXQorICAgICAgICBQc2lQYXJhbWV0ZXJTdHViW3AyOlRdCisgICAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTBdCisgICAgICBQc2lSZWZMaXN0U3R1YltUSFJPV1NfTElTVDpdCisgICAgUHNpTWV0aG9kU3R1YltyZXZlcnNlT3JkZXI6amF2YS51dGlsLkNvbXBhcmF0b3I8VD5dCisgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9OV0KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgICBQc2lUeXBlUGFyYW1ldGVyW1RdCisgICAgICAgICAgUHNpUmVmTGlzdFN0dWJbRVhURU5EU19CT1VORFNfTElTVDpdCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgUHNpUmVmTGlzdFN0dWJbVEhST1dTX0xJU1Q6XQorICAgIFBzaU1ldGhvZFN0dWJbcmV2ZXJzZU9yZGVyOmphdmEudXRpbC5Db21wYXJhdG9yPFQ+XQorICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTldCisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgICAgUHNpVHlwZVBhcmFtZXRlcltUXQorICAgICAgICAgIFBzaVJlZkxpc3RTdHViW0VYVEVORFNfQk9VTkRTX0xJU1Q6XQorICAgICAgUHNpUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgICAgUHNpUGFyYW1ldGVyU3R1YltwMTpqYXZhLnV0aWwuQ29tcGFyYXRvcjxUPl0KKyAgICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MF0KKyAgICAgIFBzaVJlZkxpc3RTdHViW1RIUk9XU19MSVNUOl0KKyAgICBQc2lNZXRob2RTdHViW2VudW1lcmF0aW9uOmphdmEudXRpbC5FbnVtZXJhdGlvbjxUPl0KKyAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz05XQorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgIFBzaVR5cGVQYXJhbWV0ZXJbVF0KKyAgICAgICAgICBQc2lSZWZMaXN0U3R1YltFWFRFTkRTX0JPVU5EU19MSVNUOl0KKyAgICAgIFBzaVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgIFBzaVBhcmFtZXRlclN0dWJbcDE6amF2YS51dGlsLkNvbGxlY3Rpb248VD5dCisgICAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTBdCisgICAgICBQc2lSZWZMaXN0U3R1YltUSFJPV1NfTElTVDpdCisgICAgUHNpTWV0aG9kU3R1YltsaXN0OmphdmEudXRpbC5BcnJheUxpc3Q8VD5dCisgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9OV0KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgICBQc2lUeXBlUGFyYW1ldGVyW1RdCisgICAgICAgICAgUHNpUmVmTGlzdFN0dWJbRVhURU5EU19CT1VORFNfTElTVDpdCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgICBQc2lQYXJhbWV0ZXJTdHViW3AxOmphdmEudXRpbC5FbnVtZXJhdGlvbjxUPl0KKyAgICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MF0KKyAgICAgIFBzaVJlZkxpc3RTdHViW1RIUk9XU19MSVNUOl0KKyAgICBQc2lNZXRob2RTdHViW2VxOmJvb2xlYW5dCisgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MTBdCisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgIFBzaVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgIFBzaVBhcmFtZXRlclN0dWJbcDE6amF2YS5sYW5nLk9iamVjdF0KKyAgICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MF0KKyAgICAgICAgUHNpUGFyYW1ldGVyU3R1YltwMjpqYXZhLmxhbmcuT2JqZWN0XQorICAgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0wXQorICAgICAgUHNpUmVmTGlzdFN0dWJbVEhST1dTX0xJU1Q6XQorICAgIFBzaU1ldGhvZFN0dWJbZnJlcXVlbmN5OmludF0KKyAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz05XQorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3RTdHViCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgICBQc2lQYXJhbWV0ZXJTdHViW3AxOmphdmEudXRpbC5Db2xsZWN0aW9uPD8+XQorICAgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0wXQorICAgICAgICBQc2lQYXJhbWV0ZXJTdHViW3AyOmphdmEubGFuZy5PYmplY3RdCisgICAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTBdCisgICAgICBQc2lSZWZMaXN0U3R1YltUSFJPV1NfTElTVDpdCisgICAgUHNpTWV0aG9kU3R1YltkaXNqb2ludDpib29sZWFuXQorICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTldCisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgIFBzaVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgIFBzaVBhcmFtZXRlclN0dWJbcDE6amF2YS51dGlsLkNvbGxlY3Rpb248Pz5dCisgICAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTBdCisgICAgICAgIFBzaVBhcmFtZXRlclN0dWJbcDI6amF2YS51dGlsLkNvbGxlY3Rpb248Pz5dCisgICAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTBdCisgICAgICBQc2lSZWZMaXN0U3R1YltUSFJPV1NfTElTVDpdCisgICAgUHNpTWV0aG9kU3R1Ylt2YXJhcmdzIGFkZEFsbDpib29sZWFuXQorICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTldCisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgICAgUHNpVHlwZVBhcmFtZXRlcltUXQorICAgICAgICAgIFBzaVJlZkxpc3RTdHViW0VYVEVORFNfQk9VTkRTX0xJU1Q6XQorICAgICAgUHNpUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgICAgUHNpUGFyYW1ldGVyU3R1YltwMTpqYXZhLnV0aWwuQ29sbGVjdGlvbjw/IHN1cGVyIFQ+XQorICAgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0wXQorICAgICAgICBQc2lQYXJhbWV0ZXJTdHViW3AyOlQuLi5dCisgICAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTBdCisgICAgICBQc2lSZWZMaXN0U3R1YltUSFJPV1NfTElTVDpdCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2Nscy9zdHViQnVpbGRlci9VdGlsSGFzaE1hcC50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2Nscy9zdHViQnVpbGRlci9VdGlsSGFzaE1hcC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWMyYjlkOAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvY2xzL3N0dWJCdWlsZGVyL1V0aWxIYXNoTWFwLnR4dApAQCAtMCwwICsxLDMwOCBAQAorUHNpSmF2YUZpbGVTdHViIFtqYXZhLnV0aWxdCisgIFBzaUNsYXNzU3R1YltuYW1lPUhhc2hNYXAgZnFuPWphdmEudXRpbC5IYXNoTWFwXQorICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0xXQorICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgUHNpVHlwZVBhcmFtZXRlcltLXQorICAgICAgICBQc2lSZWZMaXN0U3R1YltFWFRFTkRTX0JPVU5EU19MSVNUOl0KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJbVl0KKyAgICAgICAgUHNpUmVmTGlzdFN0dWJbRVhURU5EU19CT1VORFNfTElTVDpdCisgICAgUHNpUmVmTGlzdFN0dWJbRVhURU5EU19MSVNUOmphdmEudXRpbC5BYnN0cmFjdE1hcDxLLFY+XQorICAgIFBzaVJlZkxpc3RTdHViW0lNUExFTUVOVFNfTElTVDpqYXZhLnV0aWwuTWFwPEssVj4sIGphdmEubGFuZy5DbG9uZWFibGUsIGphdmEuaW8uU2VyaWFsaXphYmxlXQorICAgIFBzaUZpZWxkU3R1YltERUZBVUxUX0lOSVRJQUxfQ0FQQUNJVFk6aW50PTE2XQorICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTQxMjBdCisgICAgUHNpRmllbGRTdHViW01BWElNVU1fQ0FQQUNJVFk6aW50PTEwNzM3NDE4MjRdCisgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9NDEyMF0KKyAgICBQc2lGaWVsZFN0dWJbREVGQVVMVF9MT0FEX0ZBQ1RPUjpmbG9hdD0wLjc1Zl0KKyAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz00MTIwXQorICAgIFBzaUZpZWxkU3R1Ylt0YWJsZTpqYXZhLnV0aWwuSGFzaE1hcC5FbnRyeVtdXQorICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTQyMjRdCisgICAgUHNpRmllbGRTdHViW3NpemU6aW50XQorICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTQyMjRdCisgICAgUHNpRmllbGRTdHViW3RocmVzaG9sZDppbnRdCisgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9NDA5Nl0KKyAgICBQc2lGaWVsZFN0dWJbbG9hZEZhY3RvcjpmbG9hdF0KKyAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz00MTEyXQorICAgIFBzaUZpZWxkU3R1Ylttb2RDb3VudDppbnRdCisgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9NDI4OF0KKyAgICBQc2lGaWVsZFN0dWJbTlVMTF9LRVk6amF2YS5sYW5nLk9iamVjdF0KKyAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz00MTIwXQorICAgIFBzaUZpZWxkU3R1YltlbnRyeVNldDpqYXZhLnV0aWwuU2V0PGphdmEudXRpbC5NYXAuRW50cnk8SyxWPj5dCisgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MTMwXQorICAgIFBzaUZpZWxkU3R1YltzZXJpYWxWZXJzaW9uVUlEOmxvbmc9MzYyNDk4ODIwNzYzMTgxMjY1TF0KKyAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0yNl0KKyAgICBQc2lNZXRob2RTdHViW2NvbnMgSGFzaE1hcDp2b2lkXQorICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTFdCisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgIFBzaVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgIFBzaVBhcmFtZXRlclN0dWJbcDE6aW50XQorICAgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0wXQorICAgICAgICBQc2lQYXJhbWV0ZXJTdHViW3AyOmZsb2F0XQorICAgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0wXQorICAgICAgUHNpUmVmTGlzdFN0dWJbVEhST1dTX0xJU1Q6XQorICAgIFBzaU1ldGhvZFN0dWJbY29ucyBIYXNoTWFwOnZvaWRdCisgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MV0KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgUHNpUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgICAgUHNpUGFyYW1ldGVyU3R1YltwMTppbnRdCisgICAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTBdCisgICAgICBQc2lSZWZMaXN0U3R1YltUSFJPV1NfTElTVDpdCisgICAgUHNpTWV0aG9kU3R1Yltjb25zIEhhc2hNYXA6dm9pZF0KKyAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0xXQorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3RTdHViCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgUHNpUmVmTGlzdFN0dWJbVEhST1dTX0xJU1Q6XQorICAgIFBzaU1ldGhvZFN0dWJbY29ucyBIYXNoTWFwOnZvaWRdCisgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MV0KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgUHNpUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgICAgUHNpUGFyYW1ldGVyU3R1YltwMTpqYXZhLnV0aWwuTWFwPD8gZXh0ZW5kcyBLLD8gZXh0ZW5kcyBWPl0KKyAgICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MF0KKyAgICAgIFBzaVJlZkxpc3RTdHViW1RIUk9XU19MSVNUOl0KKyAgICBQc2lNZXRob2RTdHViW2luaXQ6dm9pZF0KKyAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz00MDk2XQorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3RTdHViCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgUHNpUmVmTGlzdFN0dWJbVEhST1dTX0xJU1Q6XQorICAgIFBzaU1ldGhvZFN0dWJbbWFza051bGw6VF0KKyAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz00MTA0XQorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgIFBzaVR5cGVQYXJhbWV0ZXJbVF0KKyAgICAgICAgICBQc2lSZWZMaXN0U3R1YltFWFRFTkRTX0JPVU5EU19MSVNUOl0KKyAgICAgIFBzaVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgIFBzaVBhcmFtZXRlclN0dWJbcDE6VF0KKyAgICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MF0KKyAgICAgIFBzaVJlZkxpc3RTdHViW1RIUk9XU19MSVNUOl0KKyAgICBQc2lNZXRob2RTdHViW3VubWFza051bGw6VF0KKyAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz00MTA0XQorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgIFBzaVR5cGVQYXJhbWV0ZXJbVF0KKyAgICAgICAgICBQc2lSZWZMaXN0U3R1YltFWFRFTkRTX0JPVU5EU19MSVNUOl0KKyAgICAgIFBzaVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgIFBzaVBhcmFtZXRlclN0dWJbcDE6VF0KKyAgICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MF0KKyAgICAgIFBzaVJlZkxpc3RTdHViW1RIUk9XU19MSVNUOl0KKyAgICBQc2lNZXRob2RTdHViW2hhc2g6aW50XQorICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTQxMDRdCisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgIFBzaVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgIFBzaVBhcmFtZXRlclN0dWJbcDE6amF2YS5sYW5nLk9iamVjdF0KKyAgICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MF0KKyAgICAgIFBzaVJlZkxpc3RTdHViW1RIUk9XU19MSVNUOl0KKyAgICBQc2lNZXRob2RTdHViW2VxOmJvb2xlYW5dCisgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9NDEwNF0KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgUHNpUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgICAgUHNpUGFyYW1ldGVyU3R1YltwMTpqYXZhLmxhbmcuT2JqZWN0XQorICAgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0wXQorICAgICAgICBQc2lQYXJhbWV0ZXJTdHViW3AyOmphdmEubGFuZy5PYmplY3RdCisgICAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTBdCisgICAgICBQc2lSZWZMaXN0U3R1YltUSFJPV1NfTElTVDpdCisgICAgUHNpTWV0aG9kU3R1YltpbmRleEZvcjppbnRdCisgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9NDEwNF0KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgUHNpUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgICAgUHNpUGFyYW1ldGVyU3R1YltwMTppbnRdCisgICAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTBdCisgICAgICAgIFBzaVBhcmFtZXRlclN0dWJbcDI6aW50XQorICAgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0wXQorICAgICAgUHNpUmVmTGlzdFN0dWJbVEhST1dTX0xJU1Q6XQorICAgIFBzaU1ldGhvZFN0dWJbc2l6ZTppbnRdCisgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MV0KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgUHNpUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgIFBzaVJlZkxpc3RTdHViW1RIUk9XU19MSVNUOl0KKyAgICBQc2lNZXRob2RTdHViW2lzRW1wdHk6Ym9vbGVhbl0KKyAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0xXQorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3RTdHViCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgUHNpUmVmTGlzdFN0dWJbVEhST1dTX0xJU1Q6XQorICAgIFBzaU1ldGhvZFN0dWJbZ2V0OlZdCisgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MV0KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgUHNpUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgICAgUHNpUGFyYW1ldGVyU3R1YltwMTpqYXZhLmxhbmcuT2JqZWN0XQorICAgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0wXQorICAgICAgUHNpUmVmTGlzdFN0dWJbVEhST1dTX0xJU1Q6XQorICAgIFBzaU1ldGhvZFN0dWJbY29udGFpbnNLZXk6Ym9vbGVhbl0KKyAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0xXQorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3RTdHViCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgICBQc2lQYXJhbWV0ZXJTdHViW3AxOmphdmEubGFuZy5PYmplY3RdCisgICAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTBdCisgICAgICBQc2lSZWZMaXN0U3R1YltUSFJPV1NfTElTVDpdCisgICAgUHNpTWV0aG9kU3R1YltnZXRFbnRyeTpqYXZhLnV0aWwuSGFzaE1hcC5FbnRyeTxLLFY+XQorICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTQwOTZdCisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgIFBzaVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgIFBzaVBhcmFtZXRlclN0dWJbcDE6amF2YS5sYW5nLk9iamVjdF0KKyAgICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MF0KKyAgICAgIFBzaVJlZkxpc3RTdHViW1RIUk9XU19MSVNUOl0KKyAgICBQc2lNZXRob2RTdHViW3B1dDpWXQorICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTFdCisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgIFBzaVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgIFBzaVBhcmFtZXRlclN0dWJbcDE6S10KKyAgICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MF0KKyAgICAgICAgUHNpUGFyYW1ldGVyU3R1YltwMjpWXQorICAgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0wXQorICAgICAgUHNpUmVmTGlzdFN0dWJbVEhST1dTX0xJU1Q6XQorICAgIFBzaU1ldGhvZFN0dWJbcHV0Rm9yQ3JlYXRlOnZvaWRdCisgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9Ml0KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgUHNpUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgICAgUHNpUGFyYW1ldGVyU3R1YltwMTpLXQorICAgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0wXQorICAgICAgICBQc2lQYXJhbWV0ZXJTdHViW3AyOlZdCisgICAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTBdCisgICAgICBQc2lSZWZMaXN0U3R1YltUSFJPV1NfTElTVDpdCisgICAgUHNpTWV0aG9kU3R1YltwdXRBbGxGb3JDcmVhdGU6dm9pZF0KKyAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz00MDk2XQorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3RTdHViCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgICBQc2lQYXJhbWV0ZXJTdHViW3AxOmphdmEudXRpbC5NYXA8PyBleHRlbmRzIEssPyBleHRlbmRzIFY+XQorICAgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0wXQorICAgICAgUHNpUmVmTGlzdFN0dWJbVEhST1dTX0xJU1Q6XQorICAgIFBzaU1ldGhvZFN0dWJbcmVzaXplOnZvaWRdCisgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9NDA5Nl0KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgUHNpUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgICAgUHNpUGFyYW1ldGVyU3R1YltwMTppbnRdCisgICAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTBdCisgICAgICBQc2lSZWZMaXN0U3R1YltUSFJPV1NfTElTVDpdCisgICAgUHNpTWV0aG9kU3R1Ylt0cmFuc2Zlcjp2b2lkXQorICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTQwOTZdCisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgIFBzaVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgIFBzaVBhcmFtZXRlclN0dWJbcDE6amF2YS51dGlsLkhhc2hNYXAuRW50cnlbXV0KKyAgICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MF0KKyAgICAgIFBzaVJlZkxpc3RTdHViW1RIUk9XU19MSVNUOl0KKyAgICBQc2lNZXRob2RTdHViW3B1dEFsbDp2b2lkXQorICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTFdCisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgIFBzaVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgIFBzaVBhcmFtZXRlclN0dWJbcDE6amF2YS51dGlsLk1hcDw/IGV4dGVuZHMgSyw/IGV4dGVuZHMgVj5dCisgICAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTBdCisgICAgICBQc2lSZWZMaXN0U3R1YltUSFJPV1NfTElTVDpdCisgICAgUHNpTWV0aG9kU3R1YltyZW1vdmU6Vl0KKyAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0xXQorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3RTdHViCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgICBQc2lQYXJhbWV0ZXJTdHViW3AxOmphdmEubGFuZy5PYmplY3RdCisgICAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTBdCisgICAgICBQc2lSZWZMaXN0U3R1YltUSFJPV1NfTElTVDpdCisgICAgUHNpTWV0aG9kU3R1YltyZW1vdmVFbnRyeUZvcktleTpqYXZhLnV0aWwuSGFzaE1hcC5FbnRyeTxLLFY+XQorICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTQwOTZdCisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgIFBzaVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgIFBzaVBhcmFtZXRlclN0dWJbcDE6amF2YS5sYW5nLk9iamVjdF0KKyAgICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MF0KKyAgICAgIFBzaVJlZkxpc3RTdHViW1RIUk9XU19MSVNUOl0KKyAgICBQc2lNZXRob2RTdHViW3JlbW92ZU1hcHBpbmc6amF2YS51dGlsLkhhc2hNYXAuRW50cnk8SyxWPl0KKyAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz00MDk2XQorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3RTdHViCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgICBQc2lQYXJhbWV0ZXJTdHViW3AxOmphdmEubGFuZy5PYmplY3RdCisgICAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTBdCisgICAgICBQc2lSZWZMaXN0U3R1YltUSFJPV1NfTElTVDpdCisgICAgUHNpTWV0aG9kU3R1YltjbGVhcjp2b2lkXQorICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTFdCisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgIFBzaVBhcmFtZXRlckxpc3RTdHViCisgICAgICBQc2lSZWZMaXN0U3R1YltUSFJPV1NfTElTVDpdCisgICAgUHNpTWV0aG9kU3R1Yltjb250YWluc1ZhbHVlOmJvb2xlYW5dCisgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MV0KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgUHNpUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgICAgUHNpUGFyYW1ldGVyU3R1YltwMTpqYXZhLmxhbmcuT2JqZWN0XQorICAgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0wXQorICAgICAgUHNpUmVmTGlzdFN0dWJbVEhST1dTX0xJU1Q6XQorICAgIFBzaU1ldGhvZFN0dWJbY29udGFpbnNOdWxsVmFsdWU6Ym9vbGVhbl0KKyAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0yXQorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3RTdHViCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgUHNpUmVmTGlzdFN0dWJbVEhST1dTX0xJU1Q6XQorICAgIFBzaU1ldGhvZFN0dWJbY2xvbmU6amF2YS5sYW5nLk9iamVjdF0KKyAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0xXQorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3RTdHViCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgUHNpUmVmTGlzdFN0dWJbVEhST1dTX0xJU1Q6XQorICAgIFBzaU1ldGhvZFN0dWJbYWRkRW50cnk6dm9pZF0KKyAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz00MDk2XQorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3RTdHViCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgICBQc2lQYXJhbWV0ZXJTdHViW3AxOmludF0KKyAgICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MF0KKyAgICAgICAgUHNpUGFyYW1ldGVyU3R1YltwMjpLXQorICAgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0wXQorICAgICAgICBQc2lQYXJhbWV0ZXJTdHViW3AzOlZdCisgICAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTBdCisgICAgICAgIFBzaVBhcmFtZXRlclN0dWJbcDQ6aW50XQorICAgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0wXQorICAgICAgUHNpUmVmTGlzdFN0dWJbVEhST1dTX0xJU1Q6XQorICAgIFBzaU1ldGhvZFN0dWJbY3JlYXRlRW50cnk6dm9pZF0KKyAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz00MDk2XQorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3RTdHViCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgICBQc2lQYXJhbWV0ZXJTdHViW3AxOmludF0KKyAgICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MF0KKyAgICAgICAgUHNpUGFyYW1ldGVyU3R1YltwMjpLXQorICAgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0wXQorICAgICAgICBQc2lQYXJhbWV0ZXJTdHViW3AzOlZdCisgICAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTBdCisgICAgICAgIFBzaVBhcmFtZXRlclN0dWJbcDQ6aW50XQorICAgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0wXQorICAgICAgUHNpUmVmTGlzdFN0dWJbVEhST1dTX0xJU1Q6XQorICAgIFBzaU1ldGhvZFN0dWJbbmV3S2V5SXRlcmF0b3I6amF2YS51dGlsLkl0ZXJhdG9yPEs+XQorICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTQwOTZdCisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgIFBzaVBhcmFtZXRlckxpc3RTdHViCisgICAgICBQc2lSZWZMaXN0U3R1YltUSFJPV1NfTElTVDpdCisgICAgUHNpTWV0aG9kU3R1YltuZXdWYWx1ZUl0ZXJhdG9yOmphdmEudXRpbC5JdGVyYXRvcjxWPl0KKyAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz00MDk2XQorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3RTdHViCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgUHNpUmVmTGlzdFN0dWJbVEhST1dTX0xJU1Q6XQorICAgIFBzaU1ldGhvZFN0dWJbbmV3RW50cnlJdGVyYXRvcjpqYXZhLnV0aWwuSXRlcmF0b3I8amF2YS51dGlsLk1hcC5FbnRyeTxLLFY+Pl0KKyAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz00MDk2XQorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3RTdHViCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgUHNpUmVmTGlzdFN0dWJbVEhST1dTX0xJU1Q6XQorICAgIFBzaU1ldGhvZFN0dWJba2V5U2V0OmphdmEudXRpbC5TZXQ8Sz5dCisgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MV0KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgUHNpUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgIFBzaVJlZkxpc3RTdHViW1RIUk9XU19MSVNUOl0KKyAgICBQc2lNZXRob2RTdHViW3ZhbHVlczpqYXZhLnV0aWwuQ29sbGVjdGlvbjxWPl0KKyAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0xXQorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3RTdHViCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgUHNpUmVmTGlzdFN0dWJbVEhST1dTX0xJU1Q6XQorICAgIFBzaU1ldGhvZFN0dWJbZW50cnlTZXQ6amF2YS51dGlsLlNldDxqYXZhLnV0aWwuTWFwLkVudHJ5PEssVj4+XQorICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTFdCisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgIFBzaVBhcmFtZXRlckxpc3RTdHViCisgICAgICBQc2lSZWZMaXN0U3R1YltUSFJPV1NfTElTVDpdCisgICAgUHNpTWV0aG9kU3R1Ylt3cml0ZU9iamVjdDp2b2lkXQorICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTJdCisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgIFBzaVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgIFBzaVBhcmFtZXRlclN0dWJbcDE6amF2YS5pby5PYmplY3RPdXRwdXRTdHJlYW1dCisgICAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTBdCisgICAgICBQc2lSZWZMaXN0U3R1YltUSFJPV1NfTElTVDpqYXZhLmlvLklPRXhjZXB0aW9uXQorICAgIFBzaU1ldGhvZFN0dWJbcmVhZE9iamVjdDp2b2lkXQorICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTJdCisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgIFBzaVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgIFBzaVBhcmFtZXRlclN0dWJbcDE6amF2YS5pby5PYmplY3RJbnB1dFN0cmVhbV0KKyAgICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MF0KKyAgICAgIFBzaVJlZkxpc3RTdHViW1RIUk9XU19MSVNUOmphdmEuaW8uSU9FeGNlcHRpb24sIGphdmEubGFuZy5DbGFzc05vdEZvdW5kRXhjZXB0aW9uXQorICAgIFBzaU1ldGhvZFN0dWJbY2FwYWNpdHk6aW50XQorICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTQwOTZdCisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgIFBzaVBhcmFtZXRlckxpc3RTdHViCisgICAgICBQc2lSZWZMaXN0U3R1YltUSFJPV1NfTElTVDpdCisgICAgUHNpTWV0aG9kU3R1Yltsb2FkRmFjdG9yOmZsb2F0XQorICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTQwOTZdCisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgIFBzaVBhcmFtZXRlckxpc3RTdHViCisgICAgICBQc2lSZWZMaXN0U3R1YltUSFJPV1NfTElTVDpdCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2Nscy9zdHViQnVpbGRlci9VdGlsTGlzdC50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2Nscy9zdHViQnVpbGRlci9VdGlsTGlzdC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTc0NGNiZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvY2xzL3N0dWJCdWlsZGVyL1V0aWxMaXN0LnR4dApAQCAtMCwwICsxLDE3OSBAQAorUHNpSmF2YUZpbGVTdHViIFtqYXZhLnV0aWxdCisgIFBzaUNsYXNzU3R1YltpbnRlcmZhY2UgbmFtZT1MaXN0IGZxbj1qYXZhLnV0aWwuTGlzdF0KKyAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MTAyNV0KKyAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJbRV0KKyAgICAgICAgUHNpUmVmTGlzdFN0dWJbRVhURU5EU19CT1VORFNfTElTVDpdCisgICAgUHNpUmVmTGlzdFN0dWJbRVhURU5EU19MSVNUOmphdmEudXRpbC5Db2xsZWN0aW9uPEU+XQorICAgIFBzaVJlZkxpc3RTdHViW0lNUExFTUVOVFNfTElTVDpdCisgICAgUHNpTWV0aG9kU3R1YltzaXplOmludF0KKyAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0xMDI1XQorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3RTdHViCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgUHNpUmVmTGlzdFN0dWJbVEhST1dTX0xJU1Q6XQorICAgIFBzaU1ldGhvZFN0dWJbaXNFbXB0eTpib29sZWFuXQorICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTEwMjVdCisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgIFBzaVBhcmFtZXRlckxpc3RTdHViCisgICAgICBQc2lSZWZMaXN0U3R1YltUSFJPV1NfTElTVDpdCisgICAgUHNpTWV0aG9kU3R1Yltjb250YWluczpib29sZWFuXQorICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTEwMjVdCisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgIFBzaVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgIFBzaVBhcmFtZXRlclN0dWJbcDE6amF2YS5sYW5nLk9iamVjdF0KKyAgICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MF0KKyAgICAgIFBzaVJlZkxpc3RTdHViW1RIUk9XU19MSVNUOl0KKyAgICBQc2lNZXRob2RTdHViW2l0ZXJhdG9yOmphdmEudXRpbC5JdGVyYXRvcjxFPl0KKyAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0xMDI1XQorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3RTdHViCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgUHNpUmVmTGlzdFN0dWJbVEhST1dTX0xJU1Q6XQorICAgIFBzaU1ldGhvZFN0dWJbdG9BcnJheTpqYXZhLmxhbmcuT2JqZWN0W11dCisgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MTAyNV0KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgUHNpUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgIFBzaVJlZkxpc3RTdHViW1RIUk9XU19MSVNUOl0KKyAgICBQc2lNZXRob2RTdHViW3RvQXJyYXk6VFtdXQorICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTEwMjVdCisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgICAgUHNpVHlwZVBhcmFtZXRlcltUXQorICAgICAgICAgIFBzaVJlZkxpc3RTdHViW0VYVEVORFNfQk9VTkRTX0xJU1Q6XQorICAgICAgUHNpUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgICAgUHNpUGFyYW1ldGVyU3R1YltwMTpUW11dCisgICAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTBdCisgICAgICBQc2lSZWZMaXN0U3R1YltUSFJPV1NfTElTVDpdCisgICAgUHNpTWV0aG9kU3R1YlthZGQ6Ym9vbGVhbl0KKyAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0xMDI1XQorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3RTdHViCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgICBQc2lQYXJhbWV0ZXJTdHViW3AxOkVdCisgICAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTBdCisgICAgICBQc2lSZWZMaXN0U3R1YltUSFJPV1NfTElTVDpdCisgICAgUHNpTWV0aG9kU3R1YltyZW1vdmU6Ym9vbGVhbl0KKyAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0xMDI1XQorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3RTdHViCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgICBQc2lQYXJhbWV0ZXJTdHViW3AxOmphdmEubGFuZy5PYmplY3RdCisgICAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTBdCisgICAgICBQc2lSZWZMaXN0U3R1YltUSFJPV1NfTElTVDpdCisgICAgUHNpTWV0aG9kU3R1Yltjb250YWluc0FsbDpib29sZWFuXQorICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTEwMjVdCisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgIFBzaVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgIFBzaVBhcmFtZXRlclN0dWJbcDE6amF2YS51dGlsLkNvbGxlY3Rpb248Pz5dCisgICAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTBdCisgICAgICBQc2lSZWZMaXN0U3R1YltUSFJPV1NfTElTVDpdCisgICAgUHNpTWV0aG9kU3R1YlthZGRBbGw6Ym9vbGVhbl0KKyAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0xMDI1XQorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3RTdHViCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgICBQc2lQYXJhbWV0ZXJTdHViW3AxOmphdmEudXRpbC5Db2xsZWN0aW9uPD8gZXh0ZW5kcyBFPl0KKyAgICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MF0KKyAgICAgIFBzaVJlZkxpc3RTdHViW1RIUk9XU19MSVNUOl0KKyAgICBQc2lNZXRob2RTdHViW2FkZEFsbDpib29sZWFuXQorICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTEwMjVdCisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgIFBzaVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgIFBzaVBhcmFtZXRlclN0dWJbcDE6aW50XQorICAgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0wXQorICAgICAgICBQc2lQYXJhbWV0ZXJTdHViW3AyOmphdmEudXRpbC5Db2xsZWN0aW9uPD8gZXh0ZW5kcyBFPl0KKyAgICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MF0KKyAgICAgIFBzaVJlZkxpc3RTdHViW1RIUk9XU19MSVNUOl0KKyAgICBQc2lNZXRob2RTdHViW3JlbW92ZUFsbDpib29sZWFuXQorICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTEwMjVdCisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgIFBzaVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgIFBzaVBhcmFtZXRlclN0dWJbcDE6amF2YS51dGlsLkNvbGxlY3Rpb248Pz5dCisgICAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTBdCisgICAgICBQc2lSZWZMaXN0U3R1YltUSFJPV1NfTElTVDpdCisgICAgUHNpTWV0aG9kU3R1YltyZXRhaW5BbGw6Ym9vbGVhbl0KKyAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0xMDI1XQorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3RTdHViCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgICBQc2lQYXJhbWV0ZXJTdHViW3AxOmphdmEudXRpbC5Db2xsZWN0aW9uPD8+XQorICAgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0wXQorICAgICAgUHNpUmVmTGlzdFN0dWJbVEhST1dTX0xJU1Q6XQorICAgIFBzaU1ldGhvZFN0dWJbY2xlYXI6dm9pZF0KKyAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0xMDI1XQorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3RTdHViCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgUHNpUmVmTGlzdFN0dWJbVEhST1dTX0xJU1Q6XQorICAgIFBzaU1ldGhvZFN0dWJbZXF1YWxzOmJvb2xlYW5dCisgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MTAyNV0KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgUHNpUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgICAgUHNpUGFyYW1ldGVyU3R1YltwMTpqYXZhLmxhbmcuT2JqZWN0XQorICAgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0wXQorICAgICAgUHNpUmVmTGlzdFN0dWJbVEhST1dTX0xJU1Q6XQorICAgIFBzaU1ldGhvZFN0dWJbaGFzaENvZGU6aW50XQorICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTEwMjVdCisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgIFBzaVBhcmFtZXRlckxpc3RTdHViCisgICAgICBQc2lSZWZMaXN0U3R1YltUSFJPV1NfTElTVDpdCisgICAgUHNpTWV0aG9kU3R1YltnZXQ6RV0KKyAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0xMDI1XQorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3RTdHViCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgICBQc2lQYXJhbWV0ZXJTdHViW3AxOmludF0KKyAgICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MF0KKyAgICAgIFBzaVJlZkxpc3RTdHViW1RIUk9XU19MSVNUOl0KKyAgICBQc2lNZXRob2RTdHViW3NldDpFXQorICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTEwMjVdCisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgIFBzaVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgIFBzaVBhcmFtZXRlclN0dWJbcDE6aW50XQorICAgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0wXQorICAgICAgICBQc2lQYXJhbWV0ZXJTdHViW3AyOkVdCisgICAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTBdCisgICAgICBQc2lSZWZMaXN0U3R1YltUSFJPV1NfTElTVDpdCisgICAgUHNpTWV0aG9kU3R1YlthZGQ6dm9pZF0KKyAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0xMDI1XQorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3RTdHViCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgICBQc2lQYXJhbWV0ZXJTdHViW3AxOmludF0KKyAgICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MF0KKyAgICAgICAgUHNpUGFyYW1ldGVyU3R1YltwMjpFXQorICAgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0wXQorICAgICAgUHNpUmVmTGlzdFN0dWJbVEhST1dTX0xJU1Q6XQorICAgIFBzaU1ldGhvZFN0dWJbcmVtb3ZlOkVdCisgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MTAyNV0KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgUHNpUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgICAgUHNpUGFyYW1ldGVyU3R1YltwMTppbnRdCisgICAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTBdCisgICAgICBQc2lSZWZMaXN0U3R1YltUSFJPV1NfTElTVDpdCisgICAgUHNpTWV0aG9kU3R1YltpbmRleE9mOmludF0KKyAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0xMDI1XQorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3RTdHViCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgICBQc2lQYXJhbWV0ZXJTdHViW3AxOmphdmEubGFuZy5PYmplY3RdCisgICAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTBdCisgICAgICBQc2lSZWZMaXN0U3R1YltUSFJPV1NfTElTVDpdCisgICAgUHNpTWV0aG9kU3R1YltsYXN0SW5kZXhPZjppbnRdCisgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MTAyNV0KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgUHNpUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgICAgUHNpUGFyYW1ldGVyU3R1YltwMTpqYXZhLmxhbmcuT2JqZWN0XQorICAgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0wXQorICAgICAgUHNpUmVmTGlzdFN0dWJbVEhST1dTX0xJU1Q6XQorICAgIFBzaU1ldGhvZFN0dWJbbGlzdEl0ZXJhdG9yOmphdmEudXRpbC5MaXN0SXRlcmF0b3I8RT5dCisgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MTAyNV0KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgUHNpUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgIFBzaVJlZkxpc3RTdHViW1RIUk9XU19MSVNUOl0KKyAgICBQc2lNZXRob2RTdHViW2xpc3RJdGVyYXRvcjpqYXZhLnV0aWwuTGlzdEl0ZXJhdG9yPEU+XQorICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTEwMjVdCisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgIFBzaVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgIFBzaVBhcmFtZXRlclN0dWJbcDE6aW50XQorICAgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0wXQorICAgICAgUHNpUmVmTGlzdFN0dWJbVEhST1dTX0xJU1Q6XQorICAgIFBzaU1ldGhvZFN0dWJbc3ViTGlzdDpqYXZhLnV0aWwuTGlzdDxFPl0KKyAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0xMDI1XQorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3RTdHViCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgICBQc2lQYXJhbWV0ZXJTdHViW3AxOmludF0KKyAgICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MF0KKyAgICAgICAgUHNpUGFyYW1ldGVyU3R1YltwMjppbnRdCisgICAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTBdCisgICAgICBQc2lSZWZMaXN0U3R1YltUSFJPV1NfTElTVDpdCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2Nscy9zdHViQnVpbGRlci9VdGlsTWFwLnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvY2xzL3N0dWJCdWlsZGVyL1V0aWxNYXAudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIxMzJmM2IKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2Nscy9zdHViQnVpbGRlci9VdGlsTWFwLnR4dApAQCAtMCwwICsxLDEzNCBAQAorUHNpSmF2YUZpbGVTdHViIFtqYXZhLnV0aWxdCisgIFBzaUNsYXNzU3R1YltpbnRlcmZhY2UgbmFtZT1NYXAgZnFuPWphdmEudXRpbC5NYXBdCisgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTEwMjVdCisgICAgUHNpVHlwZVBhcmFtZXRlckxpc3RTdHViCisgICAgICBQc2lUeXBlUGFyYW1ldGVyW0tdCisgICAgICAgIFBzaVJlZkxpc3RTdHViW0VYVEVORFNfQk9VTkRTX0xJU1Q6XQorICAgICAgUHNpVHlwZVBhcmFtZXRlcltWXQorICAgICAgICBQc2lSZWZMaXN0U3R1YltFWFRFTkRTX0JPVU5EU19MSVNUOl0KKyAgICBQc2lSZWZMaXN0U3R1YltFWFRFTkRTX0xJU1Q6XQorICAgIFBzaVJlZkxpc3RTdHViW0lNUExFTUVOVFNfTElTVDpdCisgICAgUHNpQ2xhc3NTdHViW2ludGVyZmFjZSBuYW1lPUVudHJ5IGZxbj1qYXZhLnV0aWwuTWFwLkVudHJ5XQorICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTEwMzNdCisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgICAgUHNpVHlwZVBhcmFtZXRlcltLXQorICAgICAgICAgIFBzaVJlZkxpc3RTdHViW0VYVEVORFNfQk9VTkRTX0xJU1Q6XQorICAgICAgICBQc2lUeXBlUGFyYW1ldGVyW1ZdCisgICAgICAgICAgUHNpUmVmTGlzdFN0dWJbRVhURU5EU19CT1VORFNfTElTVDpdCisgICAgICBQc2lSZWZMaXN0U3R1YltFWFRFTkRTX0xJU1Q6XQorICAgICAgUHNpUmVmTGlzdFN0dWJbSU1QTEVNRU5UU19MSVNUOl0KKyAgICAgIFBzaU1ldGhvZFN0dWJbZ2V0S2V5OktdCisgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0xMDI1XQorICAgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgICAgUHNpUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgICAgUHNpUmVmTGlzdFN0dWJbVEhST1dTX0xJU1Q6XQorICAgICAgUHNpTWV0aG9kU3R1YltnZXRWYWx1ZTpWXQorICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MTAyNV0KKyAgICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgIFBzaVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgIFBzaVJlZkxpc3RTdHViW1RIUk9XU19MSVNUOl0KKyAgICAgIFBzaU1ldGhvZFN0dWJbc2V0VmFsdWU6Vl0KKyAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTEwMjVdCisgICAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgICBQc2lQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgICAgIFBzaVBhcmFtZXRlclN0dWJbcDE6Vl0KKyAgICAgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0wXQorICAgICAgICBQc2lSZWZMaXN0U3R1YltUSFJPV1NfTElTVDpdCisgICAgICBQc2lNZXRob2RTdHViW2VxdWFsczpib29sZWFuXQorICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MTAyNV0KKyAgICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgIFBzaVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgICAgUHNpUGFyYW1ldGVyU3R1YltwMTpqYXZhLmxhbmcuT2JqZWN0XQorICAgICAgICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTBdCisgICAgICAgIFBzaVJlZkxpc3RTdHViW1RIUk9XU19MSVNUOl0KKyAgICAgIFBzaU1ldGhvZFN0dWJbaGFzaENvZGU6aW50XQorICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MTAyNV0KKyAgICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgIFBzaVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgIFBzaVJlZkxpc3RTdHViW1RIUk9XU19MSVNUOl0KKyAgICBQc2lNZXRob2RTdHViW3NpemU6aW50XQorICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTEwMjVdCisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgIFBzaVBhcmFtZXRlckxpc3RTdHViCisgICAgICBQc2lSZWZMaXN0U3R1YltUSFJPV1NfTElTVDpdCisgICAgUHNpTWV0aG9kU3R1Yltpc0VtcHR5OmJvb2xlYW5dCisgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MTAyNV0KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgUHNpUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgIFBzaVJlZkxpc3RTdHViW1RIUk9XU19MSVNUOl0KKyAgICBQc2lNZXRob2RTdHViW2NvbnRhaW5zS2V5OmJvb2xlYW5dCisgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MTAyNV0KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgUHNpUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgICAgUHNpUGFyYW1ldGVyU3R1YltwMTpqYXZhLmxhbmcuT2JqZWN0XQorICAgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0wXQorICAgICAgUHNpUmVmTGlzdFN0dWJbVEhST1dTX0xJU1Q6XQorICAgIFBzaU1ldGhvZFN0dWJbY29udGFpbnNWYWx1ZTpib29sZWFuXQorICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTEwMjVdCisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgIFBzaVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgIFBzaVBhcmFtZXRlclN0dWJbcDE6amF2YS5sYW5nLk9iamVjdF0KKyAgICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MF0KKyAgICAgIFBzaVJlZkxpc3RTdHViW1RIUk9XU19MSVNUOl0KKyAgICBQc2lNZXRob2RTdHViW2dldDpWXQorICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTEwMjVdCisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgIFBzaVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgIFBzaVBhcmFtZXRlclN0dWJbcDE6amF2YS5sYW5nLk9iamVjdF0KKyAgICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MF0KKyAgICAgIFBzaVJlZkxpc3RTdHViW1RIUk9XU19MSVNUOl0KKyAgICBQc2lNZXRob2RTdHViW3B1dDpWXQorICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTEwMjVdCisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgIFBzaVBhcmFtZXRlckxpc3RTdHViCisgICAgICAgIFBzaVBhcmFtZXRlclN0dWJbcDE6S10KKyAgICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MF0KKyAgICAgICAgUHNpUGFyYW1ldGVyU3R1YltwMjpWXQorICAgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0wXQorICAgICAgUHNpUmVmTGlzdFN0dWJbVEhST1dTX0xJU1Q6XQorICAgIFBzaU1ldGhvZFN0dWJbcmVtb3ZlOlZdCisgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MTAyNV0KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgUHNpUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgICAgUHNpUGFyYW1ldGVyU3R1YltwMTpqYXZhLmxhbmcuT2JqZWN0XQorICAgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0wXQorICAgICAgUHNpUmVmTGlzdFN0dWJbVEhST1dTX0xJU1Q6XQorICAgIFBzaU1ldGhvZFN0dWJbcHV0QWxsOnZvaWRdCisgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MTAyNV0KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgUHNpUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgICAgUHNpUGFyYW1ldGVyU3R1YltwMTpqYXZhLnV0aWwuTWFwPD8gZXh0ZW5kcyBLLD8gZXh0ZW5kcyBWPl0KKyAgICAgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MF0KKyAgICAgIFBzaVJlZkxpc3RTdHViW1RIUk9XU19MSVNUOl0KKyAgICBQc2lNZXRob2RTdHViW2NsZWFyOnZvaWRdCisgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MTAyNV0KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgUHNpUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgIFBzaVJlZkxpc3RTdHViW1RIUk9XU19MSVNUOl0KKyAgICBQc2lNZXRob2RTdHViW2tleVNldDpqYXZhLnV0aWwuU2V0PEs+XQorICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTEwMjVdCisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgIFBzaVBhcmFtZXRlckxpc3RTdHViCisgICAgICBQc2lSZWZMaXN0U3R1YltUSFJPV1NfTElTVDpdCisgICAgUHNpTWV0aG9kU3R1Ylt2YWx1ZXM6amF2YS51dGlsLkNvbGxlY3Rpb248Vj5dCisgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MTAyNV0KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgUHNpUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgIFBzaVJlZkxpc3RTdHViW1RIUk9XU19MSVNUOl0KKyAgICBQc2lNZXRob2RTdHViW2VudHJ5U2V0OmphdmEudXRpbC5TZXQ8amF2YS51dGlsLk1hcC5FbnRyeTxLLFY+Pl0KKyAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0xMDI1XQorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3RTdHViCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgUHNpUmVmTGlzdFN0dWJbVEhST1dTX0xJU1Q6XQorICAgIFBzaU1ldGhvZFN0dWJbZXF1YWxzOmJvb2xlYW5dCisgICAgICBQc2lNb2RpZmllckxpc3RTdHViW21hc2s9MTAyNV0KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0U3R1YgorICAgICAgUHNpUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgICAgUHNpUGFyYW1ldGVyU3R1YltwMTpqYXZhLmxhbmcuT2JqZWN0XQorICAgICAgICAgIFBzaU1vZGlmaWVyTGlzdFN0dWJbbWFzaz0wXQorICAgICAgUHNpUmVmTGlzdFN0dWJbVEhST1dTX0xJU1Q6XQorICAgIFBzaU1ldGhvZFN0dWJbaGFzaENvZGU6aW50XQorICAgICAgUHNpTW9kaWZpZXJMaXN0U3R1YlttYXNrPTEwMjVdCisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdFN0dWIKKyAgICAgIFBzaVBhcmFtZXRlckxpc3RTdHViCisgICAgICBQc2lSZWZMaXN0U3R1YltUSFJPV1NfTElTVDpdCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2NvbnN0YW50VmFsdWVzL0NsYXNzV2l0aENvbnN0YW50cy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9jb25zdGFudFZhbHVlcy9DbGFzc1dpdGhDb25zdGFudHMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNzRjMGNmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9jb25zdGFudFZhbHVlcy9DbGFzc1dpdGhDb25zdGFudHMuamF2YQpAQCAtMCwwICsxLDE5IEBACitwdWJsaWMgY2xhc3MgQ2xhc3NXaXRoQ29uc3RhbnRzIHsKKyAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgSU5UX0NPTlNUMSA9IDE7CisgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IElOVF9DT05TVDIgPSAtMTsKKyAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgSU5UX0NPTlNUMyA9IC0yMTQ3NDgzNjQ4OworICBwdWJsaWMgc3RhdGljIGZpbmFsIGxvbmcgTE9OR19DT05TVDEgPSAyOworICBwdWJsaWMgc3RhdGljIGZpbmFsIGxvbmcgTE9OR19DT05TVDIgPSAxMDAwMDAwMDAwMDAwTDsKKyAgcHVibGljIHN0YXRpYyBmaW5hbCBsb25nIExPTkdfQ09OU1QzID0gLTkyMjMzNzIwMzY4NTQ3NzU4MDhMOworICBwdWJsaWMgc3RhdGljIGZpbmFsIHNob3J0IFNIT1JUX0NPTlNUID0gMzsKKyAgcHVibGljIHN0YXRpYyBmaW5hbCBieXRlIEJZVEVfQ09OU1QgPSA0OworICBwdWJsaWMgc3RhdGljIGZpbmFsIGNoYXIgQ0hBUl9DT05TVCA9ICc1JzsKKyAgcHVibGljIHN0YXRpYyBmaW5hbCBib29sZWFuIEJPT0xfQ09OU1QgPSB0cnVlOworICBwdWJsaWMgc3RhdGljIGZpbmFsIGZsb2F0IEZMT0FUX0NPTlNUID0gMS4yMzRmOworICBwdWJsaWMgc3RhdGljIGZpbmFsIGRvdWJsZSBET1VCTEVfQ09OU1QgPSAzLjQ1NjsKKyAgcHVibGljIHN0YXRpYyBmaW5hbCBqYXZhLmxhbmcuU3RyaW5nIFNUUklOR19DT05TVCA9ICJhXHJcblwiYmNkIjsKKworICBwdWJsaWMgc3RhdGljIGZpbmFsIGRvdWJsZSBkMSA9IERvdWJsZS5QT1NJVElWRV9JTkZJTklUWTsKKyAgcHVibGljIHN0YXRpYyBmaW5hbCBkb3VibGUgZDIgPSBEb3VibGUuTkVHQVRJVkVfSU5GSU5JVFk7CisgIHB1YmxpYyBzdGF0aWMgZmluYWwgZG91YmxlIGQzID0gRG91YmxlLk5hTjsKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvY29udHJvbEZsb3cvZmxvdzAuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvY29udHJvbEZsb3cvZmxvdzAuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MjU1MjEzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9jb250cm9sRmxvdy9mbG93MC5qYXZhCkBAIC0wLDAgKzEsNSBAQAorLy8gTG9jYWxzT3JNeUluc3RhbmNlRmllbGRzQ29udHJvbEZsb3dQb2xpY3kKK3B1YmxpYyBjbGFzcyBhIHsKKyAgdm9pZCBmKCkgezxjYXJldD4KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvY29udHJvbEZsb3cvZmxvdzAudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9jb250cm9sRmxvdy9mbG93MC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2E5MWEyNQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvY29udHJvbEZsb3cvZmxvdzAudHh0CkBAIC0wLDAgKzEgQEAKKzA6IEVNUFRZClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9jb250cm9sRmxvdy9mbG93MS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9jb250cm9sRmxvdy9mbG93MS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgyODhlNzcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2NvbnRyb2xGbG93L2Zsb3cxLmphdmEKQEAgLTAsMCArMSwxMCBAQAorLy8gTG9jYWxzT3JNeUluc3RhbmNlRmllbGRzQ29udHJvbEZsb3dQb2xpY3kKK3B1YmxpYyBjbGFzcyBhIHsKKyAgdm9pZCBmKCkgezxjYXJldD4KKyAgICBpbnQgaSA9IDA7CisgICAgaWYgKGk9PTApIHsKKyAgICAgIGkgPSA1OworICAgICAgaSA9IDk7CisgICAgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9jb250cm9sRmxvdy9mbG93MS50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2NvbnRyb2xGbG93L2Zsb3cxLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMjk3MTBkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9jb250cm9sRmxvdy9mbG93MS50eHQKQEAgLTAsMCArMSw1IEBACiswOiBXUklURSBpCisxOiBSRUFEIGkKKzI6IENPTkRfR09UTyBbRU5EXSA1CiszOiBXUklURSBpCis0OiBXUklURSBpCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2NvbnRyb2xGbG93L2Zsb3cxMC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9jb250cm9sRmxvdy9mbG93MTAuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYzIwYWZlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9jb250cm9sRmxvdy9mbG93MTAuamF2YQpAQCAtMCwwICsxLDE3IEBACisvLyBMb2NhbHNPck15SW5zdGFuY2VGaWVsZHNDb250cm9sRmxvd1BvbGljeQorCisKK3B1YmxpYyBjbGFzcyBkIHsKKyAgdm9pZCBmKGRbXSBhc3BlY3RzKSB7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBhc3BlY3RzLmxlbmd0aDsgaSsrKSB7PGNhcmV0PgorICAgICAgZmluYWwgaW50IGxpbmU7CisgICAgICB0cnkgeworICAgICAgICBsaW5lID0gSW50ZWdlci5wYXJzZUludCgiMiIpOyAgLy8gLworICAgICAgfQorICAgICAgY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CisgICAgICAgIGNvbnRpbnVlOworICAgICAgfQorICAgIH0KKyAgfQorCit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2NvbnRyb2xGbG93L2Zsb3cxMC50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2NvbnRyb2xGbG93L2Zsb3cxMC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGFlZTkyOQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvY29udHJvbEZsb3cvZmxvdzEwLnR4dApAQCAtMCwwICsxLDExIEBACiswOiBFTVBUWQorMTogQ09ORF9USFJPV19UTyA4CisyOiBFTVBUWQorMzogV1JJVEUgbGluZQorNDogQ09ORF9USFJPV19UTyA4Cis1OiBDT05EX1RIUk9XX1RPIDgKKzY6IENPTkRfVEhST1dfVE8gOAorNzogR09UTyBbRU5EXSAxMQorODogV1JJVEUgZQorOTogR09UTyBbRU5EXSAxMQorMTA6IEdPVE8gW0VORF0gMTEKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2NvbnRyb2xGbG93L2Zsb3cxMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9jb250cm9sRmxvdy9mbG93MTEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lY2FhMGJhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9jb250cm9sRmxvdy9mbG93MTEuamF2YQpAQCAtMCwwICsxLDExIEBACisvLyBMb2NhbHNPck15SW5zdGFuY2VGaWVsZHNDb250cm9sRmxvd1BvbGljeQorCisKK3B1YmxpYyBjbGFzcyBhIHsKKyAgaW50IGYoYm9vbGVhbiBiMSwgYm9vbGVhbiBiMikgezxjYXJldD4KKyAgICB3aGlsZSAoYjEgfHwgYjIpIHsKKyAgICB9CisgICAgcmV0dXJuIDA7CisgIH0KKworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9jb250cm9sRmxvdy9mbG93MTEudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9jb250cm9sRmxvdy9mbG93MTEudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMwNDIwNjIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2NvbnRyb2xGbG93L2Zsb3cxMS50eHQKQEAgLTAsMCArMSw3IEBACiswOiBSRUFEIGIxCisxOiBDT05EX0dPVE8gW0VORF0gNAorMjogUkVBRCBiMgorMzogQ09ORF9HT1RPIFtFTkRdIDYKKzQ6IEVNUFRZCis1OiBHT1RPIFtFTkRdIDAKKzY6IEdPVE8gW0VORF0gNyBSRVRVUk4KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvY29udHJvbEZsb3cvZmxvdzEyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2NvbnRyb2xGbG93L2Zsb3cxMi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBmMjk5MTkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2NvbnRyb2xGbG93L2Zsb3cxMi5qYXZhCkBAIC0wLDAgKzEsMTEgQEAKKy8vIExvY2Fsc09yTXlJbnN0YW5jZUZpZWxkc0NvbnRyb2xGbG93UG9saWN5CisKKworcHVibGljIGNsYXNzIGEgeworICBpbnQgZihib29sZWFuIGIxLCBib29sZWFuIGIyKSB7PGNhcmV0PgorICAgIGRvIHsKKyAgICB9IHdoaWxlIChiMSB8fCBiMik7CisgICAgcmV0dXJuIDA7CisgIH0KKworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9jb250cm9sRmxvdy9mbG93MTIudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9jb250cm9sRmxvdy9mbG93MTIudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg0ZWJmNmIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2NvbnRyb2xGbG93L2Zsb3cxMi50eHQKQEAgLTAsMCArMSw2IEBACiswOiBFTVBUWQorMTogUkVBRCBiMQorMjogQ09ORF9HT1RPIFtFTkRdIDAKKzM6IFJFQUQgYjIKKzQ6IENPTkRfR09UTyBbRU5EXSAwCis1OiBHT1RPIFtFTkRdIDYgUkVUVVJOCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2NvbnRyb2xGbG93L2Zsb3cxMy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9jb250cm9sRmxvdy9mbG93MTMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYjVhN2Q5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9jb250cm9sRmxvdy9mbG93MTMuamF2YQpAQCAtMCwwICsxLDIyIEBACisvLyBMb2NhbHNPck15SW5zdGFuY2VGaWVsZHNDb250cm9sRmxvd1BvbGljeQorCitpbXBvcnQgamF2YS5pby5JT0V4Y2VwdGlvbjsKKworaW1wb3J0IGphdmEuaW8uRU9GRXhjZXB0aW9uOworCitwdWJsaWMgY2xhc3MgYSB7CisgIAorICBpbnQgZihib29sZWFuIGIxLCBib29sZWFuIGIyKSB7PGNhcmV0PiAgICAgICAgCisgIAorICB0cnkgeworICAgICAgICAgICAgdGhyb3cgbmV3IElPRXhjZXB0aW9uKCk7CisgICAgICAgIH0gY2F0Y2ggKEVPRkV4Y2VwdGlvbiBlb2YpIHsKKyAgICAgICAgICAgIGVvZi5wcmludFN0YWNrVHJhY2UoKTsKKyAgICAgICAgfSBjYXRjaCAoSU9FeGNlcHRpb24gaW8pIHsKKyAgICAgICAgICAgIGlvLnByaW50U3RhY2tUcmFjZSgpOworICAgICAgICB9CisKKyAgICByZXR1cm4gMDsKKyAgfQorCit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2NvbnRyb2xGbG93L2Zsb3cxMy50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2NvbnRyb2xGbG93L2Zsb3cxMy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWI5MDhiNAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvY29udHJvbEZsb3cvZmxvdzEzLnR4dApAQCAtMCwwICsxLDE1IEBACiswOiBDT05EX1RIUk9XX1RPIDEwCisxOiBDT05EX1RIUk9XX1RPIDYKKzI6IEVNUFRZCiszOiBDT05EX1RIUk9XX1RPIDEwCis0OiBUSFJPV19UTyA2Cis1OiBHT1RPIFtFTkRdIDE0Cis2OiBXUklURSBpbworNzogUkVBRCBpbworODogRU1QVFkKKzk6IEdPVE8gW0VORF0gMTQKKzEwOiBXUklURSBlb2YKKzExOiBSRUFEIGVvZgorMTI6IEVNUFRZCisxMzogR09UTyBbRU5EXSAxNAorMTQ6IEdPVE8gW0VORF0gMTUgUkVUVVJOClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9jb250cm9sRmxvdy9mbG93MTQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvY29udHJvbEZsb3cvZmxvdzE0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWFjNjU3ZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvY29udHJvbEZsb3cvZmxvdzE0LmphdmEKQEAgLTAsMCArMSwyMCBAQAorLy8gTG9jYWxzT3JNeUluc3RhbmNlRmllbGRzQ29udHJvbEZsb3dQb2xpY3kKKworCisKK3B1YmxpYyBjbGFzcyBCIHsKKyAgICBwcm90ZWN0ZWQgT2JqZWN0IGludm9rZU5leHQoT2JqZWN0IG1pKQorICAgICAgIHRocm93cyBFeGNlcHRpb24KKyAgICB7PGNhcmV0PgorICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgcmV0dXJuIHRoaXM7CisgICAgICAgICAgfSBmaW5hbGx5IHsKKyAgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgIH0gZmluYWxseSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7CisgICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICB9CisKKworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9jb250cm9sRmxvdy9mbG93MTQudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9jb250cm9sRmxvdy9mbG93MTQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg4YTIzZDgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2NvbnRyb2xGbG93L2Zsb3cxNC50eHQKQEAgLTAsMCArMSwzMCBAQAorMDogQ09ORF9USFJPV19UTyA5CisxOiBHT1RPIFtFTkRdIDcgUkVUVVJOCisyOiBDT05EX1RIUk9XX1RPIDkKKzM6IENPTkRfVEhST1dfVE8gOQorNDogR09UTyBbRU5EXSA1Cis1OiBDQUxMIDExCis2OiBHT1RPIFtFTkRdIDMwCis3OiBDQUxMIDExCis4OiBHT1RPIFtFTkRdIDMwIFJFVFVSTgorOTogQ0FMTCAxMQorMTA6IEdPVE8gW0VORF0gMjkKKzExOiBDT05EX1RIUk9XX1RPIDE5CisxMjogRU1QVFkKKzEzOiBDT05EX1RIUk9XX1RPIDE5CisxNDogR09UTyBbRU5EXSAxNQorMTU6IENBTEwgMjEKKzE2OiBHT1RPIFtFTkRdIDI2CisxNzogQ0FMTCAyMQorMTg6IEdPVE8gW0VORF0gMjcgUkVUVVJOCisxOTogQ0FMTCAyMQorMjA6IEdPVE8gW0VORF0gMjUKKzIxOiBHT1RPIFtFTkRdIDIzIFJFVFVSTgorMjI6IFJFVFVSTiBGUk9NIDIxCisyMzogUkVUVVJOIEZST00gMjEgVE8gMTgKKzI0OiBSRVRVUk4gRlJPTSAyMSBUTyAyMAorMjU6IFRIUk9XX1RPIDMwCisyNjogUkVUVVJOIEZST00gMTEKKzI3OiBSRVRVUk4gRlJPTSAxMSBUTyA4CisyODogUkVUVVJOIEZST00gMTEgVE8gMTAKKzI5OiBUSFJPV19UTyAzMApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvY29udHJvbEZsb3cvZmxvdzE1LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2NvbnRyb2xGbG93L2Zsb3cxNS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcxMGY0NGQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2NvbnRyb2xGbG93L2Zsb3cxNS5qYXZhCkBAIC0wLDAgKzEsMzcgQEAKKy8vIExvY2Fsc09yTXlJbnN0YW5jZUZpZWxkc0NvbnRyb2xGbG93UG9saWN5CisvLyBTQ1IgMTI5MjYgCisKK2ltcG9ydCBqYXZhLnJtaS5SZW1vdGVFeGNlcHRpb247CisKK3B1YmxpYyBjbGFzcyBCIHsKKyAgICBwdWJsaWMgT2JqZWN0IHNob3coT2JqZWN0IG9iaikKKyAgICB7CisgICAgICAgIHRyeQorICAgICAgICB7CisgICAgICAgICAgICB0aHJvdyBuZXcgTnVsbFBvaW50ZXJFeGNlcHRpb24oKTsKKyAgICAgICAgfQorICAgICAgICBjYXRjaCAoIE51bGxQb2ludGVyRXhjZXB0aW9uIG5wZSApCisgICAgICAgIHsKKyAgICAgICAgfQorICAgICAgICBmaW5hbGx5CisgICAgICAgIHs8Y2FyZXQ+CisgICAgICAgICAgICBpZiAoIG9iaiAhPSBudWxsICkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICB0cnkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBSZW1vdGVFeGNlcHRpb24oKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgY2F0Y2ggKCBSZW1vdGVFeGNlcHRpb24gcmUgKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCByZSApOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBmaW5hbGx5CisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBvYmogPSBudWxsOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICByZXR1cm4gbnVsbDsKKyAgICB9CisKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvY29udHJvbEZsb3cvZmxvdzE1LnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvY29udHJvbEZsb3cvZmxvdzE1LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMWFhZWI3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9jb250cm9sRmxvdy9mbG93MTUudHh0CkBAIC0wLDAgKzEsMjcgQEAKKzA6IFJFQUQgb2JqCisxOiBDT05EX0dPVE8gW0VORF0gMjcKKzI6IENPTkRfVEhST1dfVE8gOQorMzogQ09ORF9USFJPV19UTyAyMAorNDogRU1QVFkKKzU6IFRIUk9XX1RPIDkKKzY6IENPTkRfVEhST1dfVE8gMjAKKzc6IENPTkRfVEhST1dfVE8gMjAKKzg6IEdPVE8gW0VORF0gMTYKKzk6IFdSSVRFIHJlCisxMDogQ09ORF9USFJPV19UTyAyMAorMTE6IFJFQUQgcmUKKzEyOiBFTVBUWQorMTM6IENPTkRfVEhST1dfVE8gMjAKKzE0OiBDT05EX1RIUk9XX1RPIDIwCisxNTogR09UTyBbRU5EXSAxNgorMTY6IENBTEwgMjIKKzE3OiBHT1RPIFtFTkRdIDI3CisxODogQ0FMTCAyMgorMTk6IEdPVE8gW0VORF0gMjcgUkVUVVJOCisyMDogQ0FMTCAyMgorMjE6IEdPVE8gW0VORF0gMjYKKzIyOiBXUklURSBvYmoKKzIzOiBSRVRVUk4gRlJPTSAyMgorMjQ6IFJFVFVSTiBGUk9NIDIyIFRPIDE5CisyNTogUkVUVVJOIEZST00gMjIgVE8gMjEKKzI2OiBUSFJPV19UTyAyNwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvY29udHJvbEZsb3cvZmxvdzE2LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2NvbnRyb2xGbG93L2Zsb3cxNi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjljNWE4Y2EKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2NvbnRyb2xGbG93L2Zsb3cxNi5qYXZhCkBAIC0wLDAgKzEsMjAgQEAKKy8vIExvY2Fsc09yTXlJbnN0YW5jZUZpZWxkc0NvbnRyb2xGbG93UG9saWN5CitpbXBvcnQgamF2YS5pby5JT0V4Y2VwdGlvbjsKKworY2xhc3MgVGVzdElkZWE5MzkgeworICAgIHB1YmxpYyBib29sZWFuIHRlc3QoKSB0aHJvd3MgSU9FeGNlcHRpb24gezxjYXJldD4KKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIHJldHVybiBnZXRhKCk7CisgICAgICAgIH0gY2F0Y2ggKElPRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBSdW50aW1lRXhjZXB0aW9uKCk7CisgICAgICAgIH0gZmluYWxseSB7CisgICAgICAgICAgICBnZXRhKCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwcml2YXRlIGJvb2xlYW4gZ2V0YSgpIHRocm93cyBJT0V4Y2VwdGlvbiB7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworfQorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2NvbnRyb2xGbG93L2Zsb3cxNi50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2NvbnRyb2xGbG93L2Zsb3cxNi50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDFkODFkYwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvY29udHJvbEZsb3cvZmxvdzE2LnR4dApAQCAtMCwwICsxLDI4IEBACiswOiBDT05EX1RIUk9XX1RPIDgKKzE6IENPTkRfVEhST1dfVE8gMTkKKzI6IEVNUFRZCiszOiBDT05EX1RIUk9XX1RPIDgKKzQ6IEdPVE8gW0VORF0gMTcgUkVUVVJOCis1OiBDT05EX1RIUk9XX1RPIDE5Cis2OiBDT05EX1RIUk9XX1RPIDE5Cis3OiBHT1RPIFtFTkRdIDE1Cis4OiBXUklURSBlCis5OiBDT05EX1RIUk9XX1RPIDE5CisxMDogRU1QVFkKKzExOiBUSFJPV19UTyAxOQorMTI6IENPTkRfVEhST1dfVE8gMTkKKzEzOiBDT05EX1RIUk9XX1RPIDE5CisxNDogR09UTyBbRU5EXSAxNQorMTU6IENBTEwgMjEKKzE2OiBHT1RPIFtFTkRdIDI4CisxNzogQ0FMTCAyMQorMTg6IEdPVE8gW0VORF0gMjggUkVUVVJOCisxOTogQ0FMTCAyMQorMjA6IEdPVE8gW0VORF0gMjcKKzIxOiBFTVBUWQorMjI6IENPTkRfVEhST1dfVE8gMjYKKzIzOiBSRVRVUk4gRlJPTSAyMQorMjQ6IFJFVFVSTiBGUk9NIDIxIFRPIDE4CisyNTogUkVUVVJOIEZST00gMjEgVE8gMjAKKzI2OiBSRVRVUk4gRlJPTSAyMSBUTyAyMAorMjc6IFRIUk9XX1RPIDI4ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9jb250cm9sRmxvdy9mbG93MTcuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvY29udHJvbEZsb3cvZmxvdzE3LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjliOWYwYQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvY29udHJvbEZsb3cvZmxvdzE3LmphdmEKQEAgLTAsMCArMSwxMCBAQAorLy8gTG9jYWxzT3JNeUluc3RhbmNlRmllbGRzQ29udHJvbEZsb3dQb2xpY3kKK2NsYXNzIFRlc3RGb3JlYWNoIHsKKyAgezxjYXJldD4KKyAgICBTdHJpbmdbXSBhcmdzID0gbmV3IFN0cmluZ1syNTZdOworCisgICAgZm9yKFN0cmluZyBzIDogYXJncykgeworICAgICAgZm9vKHMpOworICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvY29udHJvbEZsb3cvZmxvdzE3LnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvY29udHJvbEZsb3cvZmxvdzE3LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YzZkYzBlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9jb250cm9sRmxvdy9mbG93MTcudHh0CkBAIC0wLDAgKzEsOCBAQAorMDogRU1QVFkKKzE6IFdSSVRFIGFyZ3MKKzI6IFJFQUQgYXJncworMzogQ09ORF9HT1RPIFtFTkRdIDgKKzQ6IFdSSVRFIHMKKzU6IFJFQUQgcworNjogRU1QVFkKKzc6IEdPVE8gW0VORF0gMwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvY29udHJvbEZsb3cvZmxvdzE4LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2NvbnRyb2xGbG93L2Zsb3cxOC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY5YWVlNzMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2NvbnRyb2xGbG93L2Zsb3cxOC5qYXZhCkBAIC0wLDAgKzEsMTcgQEAKKy8vIExvY2Fsc09yTXlJbnN0YW5jZUZpZWxkc0NvbnRyb2xGbG93UG9saWN5CitpbXBvcnQgamF2YS5pby5JT0V4Y2VwdGlvbjsKK2ltcG9ydCBqYXZhLmlvLk91dHB1dFN0cmVhbTsKK3B1YmxpYyBjbGFzcyBPdXRlciB7CisgICAgdm9pZCBmKE91dHB1dFN0cmVhbSB3cml0ZXIpIHsgIDxjYXJldD4KKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IElPRXhjZXB0aW9uKCk7CisgICAgICAgICAgICB9IGZpbmFsbHkgeworICAgICAgICAgICAgICAgIHdyaXRlci5jbG9zZSgpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGNhdGNoIChJT0V4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgZS5oYXNoQ29kZSgpOworICAgICAgICB9CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9jb250cm9sRmxvdy9mbG93MTgudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9jb250cm9sRmxvdy9mbG93MTgudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRjYWY3ODYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2NvbnRyb2xGbG93L2Zsb3cxOC50eHQKQEAgLTAsMCArMSwyOCBAQAorMDogQ09ORF9USFJPV19UTyAyNAorMTogQ09ORF9USFJPV19UTyAyNAorMjogQ09ORF9USFJPV19UTyAxMgorMzogRU1QVFkKKzQ6IFRIUk9XX1RPIDI0Cis1OiBDT05EX1RIUk9XX1RPIDEyCis2OiBDT05EX1RIUk9XX1RPIDEyCis3OiBHT1RPIFtFTkRdIDgKKzg6IENBTEwgMTQKKzk6IEdPVE8gW0VORF0gMjMKKzEwOiBDQUxMIDE0CisxMTogR09UTyBbRU5EXSAyOCBSRVRVUk4KKzEyOiBDQUxMIDE0CisxMzogR09UTyBbRU5EXSAyMgorMTQ6IFJFQUQgd3JpdGVyCisxNTogRU1QVFkKKzE2OiBDT05EX1RIUk9XX1RPIDIxCisxNzogQ09ORF9USFJPV19UTyAyMQorMTg6IFJFVFVSTiBGUk9NIDE0CisxOTogUkVUVVJOIEZST00gMTQgVE8gMTEKKzIwOiBSRVRVUk4gRlJPTSAxNCBUTyAxMworMjE6IFJFVFVSTiBGUk9NIDE0IFRPIDI0CisyMjogVEhST1dfVE8gMjgKKzIzOiBHT1RPIFtFTkRdIDI4CisyNDogV1JJVEUgZQorMjU6IFJFQUQgZQorMjY6IEVNUFRZCisyNzogR09UTyBbRU5EXSAyOApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvY29udHJvbEZsb3cvZmxvdzIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvY29udHJvbEZsb3cvZmxvdzIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ODBjYjNlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9jb250cm9sRmxvdy9mbG93Mi5qYXZhCkBAIC0wLDAgKzEsOSBAQAorLy8gTG9jYWxzT3JNeUluc3RhbmNlRmllbGRzQ29udHJvbEZsb3dQb2xpY3kKK3B1YmxpYyBjbGFzcyBhIHsKKyAgdm9pZCBmKGludCBpKSB7PGNhcmV0PgorICAgIHdoaWxlIChpPT0wKSB7CisgICAgICBpID0gNTsKKyAgICAgIGlmIChpPT0zKSBicmVhazsKKyAgICB9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2NvbnRyb2xGbG93L2Zsb3cyLnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvY29udHJvbEZsb3cvZmxvdzIudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlmYzZiZGEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2NvbnRyb2xGbG93L2Zsb3cyLnR4dApAQCAtMCwwICsxLDcgQEAKKzA6IFJFQUQgaQorMTogQ09ORF9HT1RPIFtFTkRdIDcKKzI6IFdSSVRFIGkKKzM6IFJFQUQgaQorNDogQ09ORF9HT1RPIFtFTkRdIDYKKzU6IEdPVE8gW0VORF0gNworNjogR09UTyBbRU5EXSAwCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2NvbnRyb2xGbG93L2Zsb3czLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2NvbnRyb2xGbG93L2Zsb3czLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzAxNmU2NwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvY29udHJvbEZsb3cvZmxvdzMuamF2YQpAQCAtMCwwICsxLDE3IEBACisvLyBMb2NhbHNPck15SW5zdGFuY2VGaWVsZHNDb250cm9sRmxvd1BvbGljeQorCitwdWJsaWMgY2xhc3MgYSB7CisgIHZvaWQgZihpbnQgaSkgdGhyb3dzIEV4Y2VwdGlvbiB7PGNhcmV0PgorICAgICAgaSA9IDU7CisgICAgICB0cnkgeworICAgICAgICBmKGkpOworICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgaSA9IDA7CisgICAgICB9CisgICAgICBmaW5hbGx5IHsKKyAgICAgICAgaSA9IDk7CisgICAgICB9CisKKworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9jb250cm9sRmxvdy9mbG93My50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2NvbnRyb2xGbG93L2Zsb3czLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xY2NiZGU5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9jb250cm9sRmxvdy9mbG93My50eHQKQEAgLTAsMCArMSwzMCBAQAorMDogV1JJVEUgaQorMTogQ09ORF9USFJPV19UTyAxMworMjogQ09ORF9USFJPV19UTyAxMworMzogQ09ORF9USFJPV19UTyAyMworNDogUkVBRCBpCis1OiBFTVBUWQorNjogQ09ORF9USFJPV19UTyAxMworNzogQ09ORF9USFJPV19UTyAxMworODogQ09ORF9USFJPV19UTyAxMworOTogQ09ORF9USFJPV19UTyAyMworMTA6IENPTkRfVEhST1dfVE8gMTMKKzExOiBDT05EX1RIUk9XX1RPIDIzCisxMjogR09UTyBbRU5EXSAxOQorMTM6IFdSSVRFIGUKKzE0OiBDT05EX1RIUk9XX1RPIDIzCisxNTogV1JJVEUgaQorMTY6IENPTkRfVEhST1dfVE8gMjMKKzE3OiBDT05EX1RIUk9XX1RPIDIzCisxODogR09UTyBbRU5EXSAxOQorMTk6IENBTEwgMjUKKzIwOiBHT1RPIFtFTkRdIDMwCisyMTogQ0FMTCAyNQorMjI6IEdPVE8gW0VORF0gMzAgUkVUVVJOCisyMzogQ0FMTCAyNQorMjQ6IEdPVE8gW0VORF0gMjkKKzI1OiBXUklURSBpCisyNjogUkVUVVJOIEZST00gMjUKKzI3OiBSRVRVUk4gRlJPTSAyNSBUTyAyMgorMjg6IFJFVFVSTiBGUk9NIDI1IFRPIDI0CisyOTogVEhST1dfVE8gMzAKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2NvbnRyb2xGbG93L2Zsb3c0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2NvbnRyb2xGbG93L2Zsb3c0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWIzOGZhZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvY29udHJvbEZsb3cvZmxvdzQuamF2YQpAQCAtMCwwICsxLDExIEBACisvLyBMb2NhbHNPck15SW5zdGFuY2VGaWVsZHNDb250cm9sRmxvd1BvbGljeQorCitwdWJsaWMgY2xhc3MgYSB7CisgIHZvaWQgZihpbnQgaSkgdGhyb3dzIEV4Y2VwdGlvbiB7PGNhcmV0PgorICAgICAgICBpbnQgayA9MDsKKyAgICAgICAgc3dpdGNoIChrKSB7CisgICAgICAgICAgICAvL2Nhc2UgMDoKKyAgICAgICAgfQorCisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2NvbnRyb2xGbG93L2Zsb3c0LnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvY29udHJvbEZsb3cvZmxvdzQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg4ZGZjYzYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2NvbnRyb2xGbG93L2Zsb3c0LnR4dApAQCAtMCwwICsxLDQgQEAKKzA6IFdSSVRFIGsKKzE6IFJFQUQgaworMjogR09UTyBbRU5EXSAzCisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvY29udHJvbEZsb3cvZmxvdzUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvY29udHJvbEZsb3cvZmxvdzUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NjgwYWUzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9jb250cm9sRmxvdy9mbG93NS5qYXZhCkBAIC0wLDAgKzEsMTMgQEAKKy8vIExvY2Fsc09yTXlJbnN0YW5jZUZpZWxkc0NvbnRyb2xGbG93UG9saWN5CisKK3B1YmxpYyBjbGFzcyBhIHsKKyAgdm9pZCBmKGludCBpKSB0aHJvd3MgRXhjZXB0aW9uIHs8Y2FyZXQ+CisgICAgICAgIGludCBrID0wOworICAgICAgICBzd2l0Y2ggKGspIHsKKyAgICAgICAgICAgIGNhc2UgMDogaz0wOyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgMTogaz0xOyBicmVhazsKKyAgICAgICAgICAgIGRlZmF1bHQ6IGs9OTsgYnJlYWs7CisgICAgICAgIH0KKworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9jb250cm9sRmxvdy9mbG93NS50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2NvbnRyb2xGbG93L2Zsb3c1LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNjg4Y2U0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9jb250cm9sRmxvdy9mbG93NS50eHQKQEAgLTAsMCArMSwxMiBAQAorMDogV1JJVEUgaworMTogUkVBRCBrCisyOiBDT05EX0dPVE8gW0VORF0gNQorMzogQ09ORF9HT1RPIFtFTkRdIDcKKzQ6IENPTkRfR09UTyBbRU5EXSA5Cis1OiBXUklURSBrCis2OiBHT1RPIFtFTkRdIDExCis3OiBXUklURSBrCis4OiBHT1RPIFtFTkRdIDExCis5OiBXUklURSBrCisxMDogR09UTyBbRU5EXSAxMQorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2NvbnRyb2xGbG93L2Zsb3c2LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2NvbnRyb2xGbG93L2Zsb3c2LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjMzZmIzYgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvY29udHJvbEZsb3cvZmxvdzYuamF2YQpAQCAtMCwwICsxLDEzIEBACisvLyBMb2NhbHNPck15SW5zdGFuY2VGaWVsZHNDb250cm9sRmxvd1BvbGljeQorCitwdWJsaWMgY2xhc3MgYSB7CisgIGJvb2xlYW4gYzsKKyAgdm9pZCBmKGludCBpKSB0aHJvd3MgRXhjZXB0aW9uIHs8Y2FyZXQ+CisgICAgICAgIGZvciAoaW50IGk9MDsgaTwxMDA7IGkrKykgeworICAgICAgICAgICAgaWYgKGk9PTApIGJyZWFrOworICAgICAgICAgICAgaWYgKGk9PTEpIGNvbnRpbnVlOworICAgICAgICAgICAgYyA9ICFjOworICAgICAgICB9CisKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvY29udHJvbEZsb3cvZmxvdzYudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9jb250cm9sRmxvdy9mbG93Ni50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDEyZjY3YQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvY29udHJvbEZsb3cvZmxvdzYudHh0CkBAIC0wLDAgKzEsMTUgQEAKKzA6IFdSSVRFIGkKKzE6IFJFQUQgaQorMjogQ09ORF9HT1RPIFtFTkRdIDE0CiszOiBSRUFEIGkKKzQ6IENPTkRfR09UTyBbRU5EXSA2Cis1OiBHT1RPIFtFTkRdIDE0Cis2OiBSRUFEIGkKKzc6IENPTkRfR09UTyBbRU5EXSA5Cis4OiBHT1RPIFtFTkRdIDExCis5OiBSRUFEIGMKKzEwOiBXUklURSBjCisxMTogUkVBRCBpCisxMjogV1JJVEUgaQorMTM6IEdPVE8gW0VORF0gMQorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2NvbnRyb2xGbG93L2Zsb3c3LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2NvbnRyb2xGbG93L2Zsb3c3LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzQ5NDIzNgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvY29udHJvbEZsb3cvZmxvdzcuamF2YQpAQCAtMCwwICsxLDExIEBACisvLyBMb2NhbHNPck15SW5zdGFuY2VGaWVsZHNDb250cm9sRmxvd1BvbGljeQorCitwdWJsaWMgY2xhc3MgYSB7CisgIGJvb2xlYW4gYzsKKyAgdm9pZCBmKGludCBpKSB0aHJvd3MgRXhjZXB0aW9uIHs8Y2FyZXQ+CisgICAgICAgIGRvIHsKKyAgICAgICAgICAgIGM9IWM7CisgICAgICAgIH0gd2hpbGUgKCFjKTsKKworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9jb250cm9sRmxvdy9mbG93Ny50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2NvbnRyb2xGbG93L2Zsb3c3LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYzdiYTliCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9jb250cm9sRmxvdy9mbG93Ny50eHQKQEAgLTAsMCArMSw1IEBACiswOiBSRUFEIGMKKzE6IFdSSVRFIGMKKzI6IFJFQUQgYworMzogQ09ORF9HT1RPIFtFTkRdIDAKKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9jb250cm9sRmxvdy9mbG93OC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9jb250cm9sRmxvdy9mbG93OC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQyMDUyNTgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2NvbnRyb2xGbG93L2Zsb3c4LmphdmEKQEAgLTAsMCArMSwxMiBAQAorLy8gTG9jYWxzT3JNeUluc3RhbmNlRmllbGRzQ29udHJvbEZsb3dQb2xpY3kKKworcHVibGljIGNsYXNzIGEgeworICBib29sZWFuIGM7CisgIHZvaWQgZihpbnQgaSkgdGhyb3dzIEV4Y2VwdGlvbiB7PGNhcmV0PgorICAgICAgICBkbyB7CisgICAgICAgICAgICBpZiAoYykgYnJlYWs7CisgICAgICAgICAgICBjPSFjOworICAgICAgICAgICAgaWYgKGMpIGNvbnRpbnVlOworICAgICAgICB9IHdoaWxlICghYyk7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2NvbnRyb2xGbG93L2Zsb3c4LnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvY29udHJvbEZsb3cvZmxvdzgudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFlNGZhMzAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2NvbnRyb2xGbG93L2Zsb3c4LnR4dApAQCAtMCwwICsxLDEwIEBACiswOiBSRUFEIGMKKzE6IENPTkRfR09UTyBbRU5EXSAzCisyOiBHT1RPIFtFTkRdIDEwCiszOiBSRUFEIGMKKzQ6IFdSSVRFIGMKKzU6IFJFQUQgYworNjogQ09ORF9HT1RPIFtFTkRdIDgKKzc6IEdPVE8gW0VORF0gOAorODogUkVBRCBjCis5OiBDT05EX0dPVE8gW0VORF0gMApkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9jb250cm9sRmxvdy9mbG93OS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9jb250cm9sRmxvdy9mbG93OS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZlMjRkMmUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2NvbnRyb2xGbG93L2Zsb3c5LmphdmEKQEAgLTAsMCArMSwyMCBAQAorLy8gTG9jYWxzT3JNeUluc3RhbmNlRmllbGRzQ29udHJvbEZsb3dQb2xpY3kKKworCitpbXBvcnQgamF2YS5pby5GaWxlTm90Rm91bmRFeGNlcHRpb247CitpbXBvcnQgamF2YS5pby5GaWxlUmVhZGVyOworCitjbGFzcyBFeGNlcHRpb25UZXN0Q2FzZSB7CisKKyAgICB2b2lkIGNmMShpbnQgaSkgezxjYXJldD4KKyAgICAgIE9iamVjdCBvOworICAgICAgdHJ5IHsKKyAgICAgICAgbyA9IG5ldyBGaWxlUmVhZGVyKCIiKTsgICAvLworICAgICAgfQorICAgICAgY2F0Y2ggKEZpbGVOb3RGb3VuZEV4Y2VwdGlvbiBlKSB7IC8vCisgICAgICB9CisgICAgICBmaW5hbGx5IHsKKyAgICAgICAgaWYgKGk9PTEpIHJldHVybjsKKyAgICAgIH0KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9jb250cm9sRmxvdy9mbG93OS50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2NvbnRyb2xGbG93L2Zsb3c5LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNzY0ZDhkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9jb250cm9sRmxvdy9mbG93OS50eHQKQEAgLTAsMCArMSwyNyBAQAorMDogRU1QVFkKKzE6IENPTkRfVEhST1dfVE8gOQorMjogQ09ORF9USFJPV19UTyAxOAorMzogQ09ORF9USFJPV19UTyA5Cis0OiBXUklURSBvCis1OiBDT05EX1RIUk9XX1RPIDkKKzY6IENPTkRfVEhST1dfVE8gMTgKKzc6IENPTkRfVEhST1dfVE8gMTgKKzg6IEdPVE8gW0VORF0gMTQKKzk6IFdSSVRFIGUKKzEwOiBDT05EX1RIUk9XX1RPIDE4CisxMTogRU1QVFkKKzEyOiBDT05EX1RIUk9XX1RPIDE4CisxMzogR09UTyBbRU5EXSAxNAorMTQ6IENBTEwgMjAKKzE1OiBHT1RPIFtFTkRdIDI3CisxNjogQ0FMTCAyMAorMTc6IEdPVE8gW0VORF0gMjcgUkVUVVJOCisxODogQ0FMTCAyMAorMTk6IEdPVE8gW0VORF0gMjYKKzIwOiBSRUFEIGkKKzIxOiBDT05EX0dPVE8gW0VORF0gMjMKKzIyOiBHT1RPIFtFTkRdIDI0IFJFVFVSTgorMjM6IFJFVFVSTiBGUk9NIDIwCisyNDogUkVUVVJOIEZST00gMjAgVE8gMTcKKzI1OiBSRVRVUk4gRlJPTSAyMCBUTyAxOQorMjY6IFRIUk9XX1RPIDI3ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9jb250cm9sRmxvdy9mbG93QW5kLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2NvbnRyb2xGbG93L2Zsb3dBbmQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZjUyMDQ2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9jb250cm9sRmxvdy9mbG93QW5kLmphdmEKQEAgLTAsMCArMSwxMiBAQAorLy8gTG9jYWxzT3JNeUluc3RhbmNlRmllbGRzQ29udHJvbEZsb3dQb2xpY3kKKworaW1wb3J0IGphdmEuaW8uRmlsZU5vdEZvdW5kRXhjZXB0aW9uOworaW1wb3J0IGphdmEuaW8uRmlsZVJlYWRlcjsKKworY2xhc3MgRXhjZXB0aW9uVGVzdENhc2UgeworCisJcHVibGljIHZvaWQgZW5zdXJlQWxsSW52YWxpZGF0ZVRhc2tzQ29tcGxldGVkKGJvb2xlYW4gYSwgYm9vbGVhbiBiLCBib29sZWFuIGMpIHs8Y2FyZXQ+CisJCWZpbmFsIGJvb2xlYW4gZG9Qcm9ncmVzc1RoaW5nOworCQlkb1Byb2dyZXNzVGhpbmcgPSBjICYmIGEgJiYgYjsKKwl9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9jb250cm9sRmxvdy9mbG93QW5kLnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvY29udHJvbEZsb3cvZmxvd0FuZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjVhZTA0NwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvY29udHJvbEZsb3cvZmxvd0FuZC50eHQKQEAgLTAsMCArMSw3IEBACiswOiBFTVBUWQorMTogUkVBRCBjCisyOiBDT05EX0dPVE8gW0VORF0gNgorMzogUkVBRCBhCis0OiBDT05EX0dPVE8gW0VORF0gNgorNTogUkVBRCBiCis2OiBXUklURSBkb1Byb2dyZXNzVGhpbmcKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2NvbnRyb2xGbG93L2Zsb3dBbmQyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2NvbnRyb2xGbG93L2Zsb3dBbmQyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmEzMGY1MgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvY29udHJvbEZsb3cvZmxvd0FuZDIuamF2YQpAQCAtMCwwICsxLDE1IEBACisvLyBMb2NhbHNPck15SW5zdGFuY2VGaWVsZHNDb250cm9sRmxvd1BvbGljeQorCitjbGFzcyBFeGNlcHRpb25UZXN0Q2FzZSB7CisJcHVibGljIFN0cmluZyBnZXRJbmRleGluZ0xleGVyKGZpbmFsIGJvb2xlYW4gZmlsZSwgYm9vbGVhbiBiMSwgYm9vbGVhbiBiMikgezxjYXJldD4KKwkJU3RyaW5nIGhpZ2hsaWdodGVyOworCisJCWlmIChmaWxlICYmIGIxICYmIGIyKSB7CisJCQloaWdobGlnaHRlciA9ICJ0aGVuIjsKKwkJfQorCQllbHNlIHsKKwkJCWhpZ2hsaWdodGVyID0gImVsc2UiOworCQl9CisJCXJldHVybiBoaWdobGlnaHRlcjsKKwl9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9jb250cm9sRmxvdy9mbG93QW5kMi50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2NvbnRyb2xGbG93L2Zsb3dBbmQyLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMDNmNWI2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9jb250cm9sRmxvdy9mbG93QW5kMi50eHQKQEAgLTAsMCArMSwxMiBAQAorMDogRU1QVFkKKzE6IFJFQUQgZmlsZQorMjogQ09ORF9HT1RPIFtFTFNFXSA5CiszOiBSRUFEIGIxCis0OiBDT05EX0dPVE8gW0VMU0VdIDkKKzU6IFJFQUQgYjIKKzY6IENPTkRfR09UTyBbRUxTRV0gOQorNzogV1JJVEUgaGlnaGxpZ2h0ZXIKKzg6IEdPVE8gW0VORF0gMTAKKzk6IFdSSVRFIGhpZ2hsaWdodGVyCisxMDogUkVBRCBoaWdobGlnaHRlcgorMTE6IEdPVE8gW0VORF0gMTIgUkVUVVJOCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2NvbnRyb2xGbG93L2Zsb3dBbmQzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2NvbnRyb2xGbG93L2Zsb3dBbmQzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWI3YWMwZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvY29udHJvbEZsb3cvZmxvd0FuZDMuamF2YQpAQCAtMCwwICsxLDkgQEAKKy8vIExvY2Fsc09yTXlJbnN0YW5jZUZpZWxkc0NvbnRyb2xGbG93UG9saWN5CisKK2NsYXNzIGMgeworICBTdHJpbmcgY29udGFpbmVyOworICB2b2lkIGYoKSB7PGNhcmV0PgorICAgIFN0cmluZyBwYXJlbnQ7CisgICAgaWYgKGNvbnRhaW5lciA9PSBudWxsICYmIChwYXJlbnQgPSBudWxsKSAhPSBudWxsICYmIHBhcmVudCAhPSBudWxsKSB7fQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9jb250cm9sRmxvdy9mbG93QW5kMy50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2NvbnRyb2xGbG93L2Zsb3dBbmQzLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iOWU4MzkxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9jb250cm9sRmxvdy9mbG93QW5kMy50eHQKQEAgLTAsMCArMSw4IEBACiswOiBFTVBUWQorMTogUkVBRCBjb250YWluZXIKKzI6IENPTkRfR09UTyBbRU5EXSA4CiszOiBXUklURSBwYXJlbnQKKzQ6IENPTkRfR09UTyBbRU5EXSA4Cis1OiBSRUFEIHBhcmVudAorNjogQ09ORF9HT1RPIFtFTkRdIDgKKzc6IEVNUFRZClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9jb250cm9sRmxvdy9mbG93Q29uZGl0aW9uYWwuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvY29udHJvbEZsb3cvZmxvd0NvbmRpdGlvbmFsLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmI5ZmQ5MQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvY29udHJvbEZsb3cvZmxvd0NvbmRpdGlvbmFsLmphdmEKQEAgLTAsMCArMSwxMCBAQAorLy8gTG9jYWxzT3JNeUluc3RhbmNlRmllbGRzQ29udHJvbEZsb3dQb2xpY3kKKworY2xhc3MgRXhjZXB0aW9uVGVzdENhc2UgeworICAgdm9pZCBmKGJvb2xlYW4gYSwgYm9vbGVhbiBiKSB7PGNhcmV0PgorICAgICAgICBpbnQgbjsKKyAgICAgICAgaWYgKChhIHx8IGEpICYmIChuID0gMCkgPj0gMikgeworICAgICAgICAgICAgbisrOyAgIC8vCisgICAgICAgIH0KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9jb250cm9sRmxvdy9mbG93Q29uZGl0aW9uYWwudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9jb250cm9sRmxvdy9mbG93Q29uZGl0aW9uYWwudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYzZTdhODgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2NvbnRyb2xGbG93L2Zsb3dDb25kaXRpb25hbC50eHQKQEAgLTAsMCArMSw5IEBACiswOiBFTVBUWQorMTogUkVBRCBhCisyOiBDT05EX0dPVE8gW0VORF0gNQorMzogUkVBRCBhCis0OiBDT05EX0dPVE8gW0VORF0gOQorNTogV1JJVEUgbgorNjogQ09ORF9HT1RPIFtFTkRdIDkKKzc6IFJFQUQgbgorODogV1JJVEUgbgpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9jb250cm9sRmxvdy9mbG93TmVzdGVkQ29uZGl0aW9uYWwuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvY29udHJvbEZsb3cvZmxvd05lc3RlZENvbmRpdGlvbmFsLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTA5OGUyZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvY29udHJvbEZsb3cvZmxvd05lc3RlZENvbmRpdGlvbmFsLmphdmEKQEAgLTAsMCArMSwxNSBAQAorLy8gTG9jYWxzT3JNeUluc3RhbmNlRmllbGRzQ29udHJvbEZsb3dQb2xpY3kKKworY2xhc3MgTXlUZXN0ICB7CisgICAgdm9pZCBmKE9iamVjdCBvLCBsb25nIGNoaWxkcmVuU3RhbXAsIE9iamVjdCBvMikgezxjYXJldD4KKyAgICAgICAgbG9uZyBjdXJyZW50U3RhbXA7CisgICAgICAgIGlmICgobyBpbnN0YW5jZW9mIFN0cmluZyAmJiBjaGlsZHJlblN0YW1wICE9IChjdXJyZW50U3RhbXAgPSAwKSkKKyAgICAgICAgICAgICAgICB8fAorICAgICAgICAgICAgICAobzIgaW5zdGFuY2VvZiBJbnRlZ2VyICYmIGNoaWxkcmVuU3RhbXAgIT0gKGN1cnJlbnRTdGFtcCA9IDEpKQorICAgICAgICAgICApCisgICAgICAgIHsKKyAgICAgICAgICBjaGlsZHJlblN0YW1wID0gY3VycmVudFN0YW1wOworICAgICAgICB9CisgICAgfQorCit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2NvbnRyb2xGbG93L2Zsb3dOZXN0ZWRDb25kaXRpb25hbC50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2NvbnRyb2xGbG93L2Zsb3dOZXN0ZWRDb25kaXRpb25hbC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGNlOGFiZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvY29udHJvbEZsb3cvZmxvd05lc3RlZENvbmRpdGlvbmFsLnR4dApAQCAtMCwwICsxLDEzIEBACiswOiBFTVBUWQorMTogUkVBRCBvCisyOiBDT05EX0dPVE8gW0VORF0gNgorMzogUkVBRCBjaGlsZHJlblN0YW1wCis0OiBXUklURSBjdXJyZW50U3RhbXAKKzU6IENPTkRfR09UTyBbVEhFTl0gMTEKKzY6IFJFQUQgbzIKKzc6IENPTkRfR09UTyBbRU5EXSAxMworODogUkVBRCBjaGlsZHJlblN0YW1wCis5OiBXUklURSBjdXJyZW50U3RhbXAKKzEwOiBDT05EX0dPVE8gW0VORF0gMTMKKzExOiBSRUFEIGN1cnJlbnRTdGFtcAorMTI6IFdSSVRFIGNoaWxkcmVuU3RhbXAKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2Zvcm1hdHRlci9qYXZhLzEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvZm9ybWF0dGVyL2phdmEvMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUwOTE2NjIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2Zvcm1hdHRlci9qYXZhLzEuamF2YQpAQCAtMCwwICsxLDUgQEAKKyAgICAgY2xhc3MgVGVzdCB7CisgICAgIGNsYXNzIElubmVyeworICAgICBpbnQgbXlGaWVsZDsKKyAgICAgfQorICAgICB9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9mb3JtYXR0ZXIvamF2YS8xX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2Zvcm1hdHRlci9qYXZhLzFfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zN2IyODk0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9mb3JtYXR0ZXIvamF2YS8xX2FmdGVyLmphdmEKQEAgLTAsMCArMSw1IEBACisgICAgIGNsYXNzIFRlc3QgeworICAgICBjbGFzcyBJbm5lcnsKKyAgICAgICAgIGludCBteUZpZWxkOworICAgICB9CisgICAgIH0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2Zvcm1hdHRlci9qYXZhLzIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvZm9ybWF0dGVyL2phdmEvMi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY2MzUxMWYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2Zvcm1hdHRlci9qYXZhLzIuamF2YQpAQCAtMCwwICsxLDYgQEAKK2NsYXNzIEZvbyB7CisgICAgdm9pZCBmb28oKSB7CisgICAgICAgIGZvbygKKyAgICAgICAgKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9mb3JtYXR0ZXIvamF2YS8yX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2Zvcm1hdHRlci9qYXZhLzJfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNjM1MTFmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9mb3JtYXR0ZXIvamF2YS8yX2FmdGVyLmphdmEKQEAgLTAsMCArMSw2IEBACitjbGFzcyBGb28geworICAgIHZvaWQgZm9vKCkgeworICAgICAgICBmb28oCisgICAgICAgICk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvZm9ybWF0dGVyL2phdmEvMy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9mb3JtYXR0ZXIvamF2YS8zLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzg0YTg4MAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvZm9ybWF0dGVyL2phdmEvMy5qYXZhCkBAIC0wLDAgKzEsMTUgQEAKK3B1YmxpYyBjbGFzcyBBIHsKKyAgICBwcml2YXRlIHZvaWQgZm9vKCkgeworICAgICAgICBSdW5uYWJsZSBhID0gbmV3IFJ1bm5hYmxlKCkgeworICAgICAgICAgICAgcHJpdmF0ZSBpbnQgYTsKKworICAgICAgICAgICAgcHVibGljIHZvaWQgcnVuKCkgeworICAgICAgICAgICAgICAgIG5ld01ldGhvZCgpOworICAgICAgICAgICAgfQorCitwcml2YXRlIHZvaWQgbmV3TWV0aG9kKCkgeworICAgIGEgPSAyOworfQorICAgICAgICB9OworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2Zvcm1hdHRlci9qYXZhLzNfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvZm9ybWF0dGVyL2phdmEvM19hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU3MjkxNzQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2Zvcm1hdHRlci9qYXZhLzNfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDE1IEBACitwdWJsaWMgY2xhc3MgQSB7CisgICAgcHJpdmF0ZSB2b2lkIGZvbygpIHsKKyAgICAgICAgUnVubmFibGUgYSA9IG5ldyBSdW5uYWJsZSgpIHsKKyAgICAgICAgICAgIHByaXZhdGUgaW50IGE7CisKKyAgICAgICAgICAgIHB1YmxpYyB2b2lkIHJ1bigpIHsKKyAgICAgICAgICAgICAgICBuZXdNZXRob2QoKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcHJpdmF0ZSB2b2lkIG5ld01ldGhvZCgpIHsKKyAgICAgICAgICAgICAgICBhID0gMjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9mb3JtYXR0ZXIvamF2YS80LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2Zvcm1hdHRlci9qYXZhLzQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZTE1YmNkYwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvZm9ybWF0dGVyL2phdmEvNC5qYXZhCkBAIC0wLDAgKzEsMTEgQEAKK2NsYXNzIEZvbyB7Cit2b2lkIGZvbygpewordHJ5IHsKKyAgICAvLyBjb21tZW50IGJlZm9yZQorICAgIGcoKTsKKyAgICAvLyBjb21tZW50IGFmdGVyCit9IGNhdGNoIChFeGNlcHRpb24gZSkgeworICAgIGUucHJpbnRTdGFja1RyYWNlKCk7ICAvL1RvIGNoYW5nZSBib2R5IG9mIGNhdGNoIHN0YXRlbWVudCB1c2UgRmlsZSB8IFNldHRpbmdzIHwgRmlsZSBUZW1wbGF0ZXMuCit9Cit9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9mb3JtYXR0ZXIvamF2YS80X2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2Zvcm1hdHRlci9qYXZhLzRfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZmY1MWFkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9mb3JtYXR0ZXIvamF2YS80X2FmdGVyLmphdmEKQEAgLTAsMCArMSwxMSBAQAorY2xhc3MgRm9vIHsKK3ZvaWQgZm9vKCl7CisgICAgdHJ5IHsKKyAgICAgICAgLy8gY29tbWVudCBiZWZvcmUKKyAgICAgICAgZygpOworICAgICAgICAvLyBjb21tZW50IGFmdGVyCisgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgZS5wcmludFN0YWNrVHJhY2UoKTsgIC8vVG8gY2hhbmdlIGJvZHkgb2YgY2F0Y2ggc3RhdGVtZW50IHVzZSBGaWxlIHwgU2V0dGluZ3MgfCBGaWxlIFRlbXBsYXRlcy4KKyAgICB9Cit9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9mb3JtYXR0ZXIvamF2YS9BbGlnbkFzc2lnbm1lbnQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvZm9ybWF0dGVyL2phdmEvQWxpZ25Bc3NpZ25tZW50LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2VlNTVhNQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvZm9ybWF0dGVyL2phdmEvQWxpZ25Bc3NpZ25tZW50LmphdmEKQEAgLTAsMCArMSw4IEBACitjbGFzcyBGb297CisgICAgdm9pZCBmb28oKSB7CisgICAgc29tZVZhcmlhYmxlID0geCA9CisgICAgICAgICAgICB4ICsKKyAgICAgICAgICAgIHk7CisgICAgCisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvZm9ybWF0dGVyL2phdmEvQWxpZ25Bc3NpZ25tZW50X2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2Zvcm1hdHRlci9qYXZhL0FsaWduQXNzaWdubWVudF9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIxYzUzMTAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2Zvcm1hdHRlci9qYXZhL0FsaWduQXNzaWdubWVudF9hZnRlci5qYXZhCkBAIC0wLDAgKzEsOCBAQAorY2xhc3MgRm9vIHsKKyAgICB2b2lkIGZvbygpIHsKKyAgICAgICAgc29tZVZhcmlhYmxlID0geCA9CisgICAgICAgICAgICAgICAgeCArCisgICAgICAgICAgICAgICAgeTsKKworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2Zvcm1hdHRlci9qYXZhL0FsaWduRm9yLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2Zvcm1hdHRlci9qYXZhL0FsaWduRm9yLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzVjYTg4ZjAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2Zvcm1hdHRlci9qYXZhL0FsaWduRm9yLmphdmEKQEAgLTAsMCArMSwxMCBAQAorY2xhc3MgRm9vIHsKKyAgICB2b2lkIGZvbygpeworICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA8IDU7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkrKykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvU29tZXRoaW5nKGkpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9mb3JtYXR0ZXIvamF2YS9BbGlnbkZvcl9hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9mb3JtYXR0ZXIvamF2YS9BbGlnbkZvcl9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM3ODYyZGMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2Zvcm1hdHRlci9qYXZhL0FsaWduRm9yX2FmdGVyLmphdmEKQEAgLTAsMCArMSwxMCBAQAorY2xhc3MgRm9vIHsKKyAgICB2b2lkIGZvbygpIHsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7CisgICAgICAgICAgICAgaSA8IDU7CisgICAgICAgICAgICAgaSsrKSB7CisgICAgICAgICAgICBkb1NvbWV0aGluZyhpKTsKKyAgICAgICAgfQorCisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvZm9ybWF0dGVyL2phdmEvQWxpZ25NdWx0aUxpbmUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvZm9ybWF0dGVyL2phdmEvQWxpZ25NdWx0aUxpbmUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YjUyZjVkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9mb3JtYXR0ZXIvamF2YS9BbGlnbk11bHRpTGluZS5qYXZhCkBAIC0wLDAgKzEsNyBAQAorY2xhc3MgRm9veworICAgIHB1YmxpYyB2b2lkIGZvbygpeworICAgICAgICBpbnQgc29tZVZhcmlhYmxlID0gKHkgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHoKKyAgICAgICAgKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9mb3JtYXR0ZXIvamF2YS9BbGlnbk11bHRpTGluZV9hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9mb3JtYXR0ZXIvamF2YS9BbGlnbk11bHRpTGluZV9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE0YTYyMzUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2Zvcm1hdHRlci9qYXZhL0FsaWduTXVsdGlMaW5lX2FmdGVyLmphdmEKQEAgLTAsMCArMSw3IEBACitjbGFzcyBGb28geworICAgIHB1YmxpYyB2b2lkIGZvbygpIHsKKyAgICAgICAgaW50IHNvbWVWYXJpYWJsZSA9ICh5ICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB6CisgICAgICAgICk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvZm9ybWF0dGVyL2phdmEvQW5vbnltb3VzSW5uZXIyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2Zvcm1hdHRlci9qYXZhL0Fub255bW91c0lubmVyMi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlkYmMyOWYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2Zvcm1hdHRlci9qYXZhL0Fub255bW91c0lubmVyMi5qYXZhCkBAIC0wLDAgKzEsNyBAQAorY2xhc3MgQSB7CisgICAgQSBJTVBMID0gbmV3IEEoKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCBmKGJvb2xlYW4gYikgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXIoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgfTsKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvZm9ybWF0dGVyL2phdmEvQW5vbnltb3VzSW5uZXIyX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2Zvcm1hdHRlci9qYXZhL0Fub255bW91c0lubmVyMl9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjljOTJlOTkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2Zvcm1hdHRlci9qYXZhL0Fub255bW91c0lubmVyMl9hZnRlci5qYXZhCkBAIC0wLDAgKzEsNyBAQAorY2xhc3MgQSB7CisgICAgQSBJTVBMID0gbmV3IEEoKSB7CisgICAgICAgIHZvaWQgZihib29sZWFuIGIpIHsKKyAgICAgICAgICAgIGJhcigpOworICAgICAgICB9CisgICAgfTsKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvZm9ybWF0dGVyL2phdmEvQW5vbnltb3VzSW5uZXJDbGFzc2VzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2Zvcm1hdHRlci9qYXZhL0Fub255bW91c0lubmVyQ2xhc3Nlcy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZmOWI4NDcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2Zvcm1hdHRlci9qYXZhL0Fub255bW91c0lubmVyQ2xhc3Nlcy5qYXZhCkBAIC0wLDAgKzEsMTcgQEAKK3B1YmxpYyBjbGFzcyBBIHsKKyAgICB2b2lkIGYoKSB7CisgICAgICAgIG5ldyBNeSgpIHsKKyAgICAgICAgcHVibGljIHZvaWQgZigpIHsKKyAgICAgICAgICAgIGludCBpID0gOTsKKyAgICAgICAgICAgIGludCBqID0gOTsKKyAgICAgICAgfQorICAgIH07CisgICAgICAgIG5ldyBNeSgpIHsKKyAgICAgICAgcHVibGljIHZvaWQgZigpIHsKKyAgICAgICAgICAgIGwoKTsKKyAgICAgICAgICAgIGwoKTsKKyAgICAgICAgfQorICAgIH07CisgICAgfQorCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9mb3JtYXR0ZXIvamF2YS9Bbm9ueW1vdXNJbm5lckNsYXNzZXNfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvZm9ybWF0dGVyL2phdmEvQW5vbnltb3VzSW5uZXJDbGFzc2VzX2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDliNWExYwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvZm9ybWF0dGVyL2phdmEvQW5vbnltb3VzSW5uZXJDbGFzc2VzX2FmdGVyLmphdmEKQEAgLTAsMCArMSwxNyBAQAorcHVibGljIGNsYXNzIEEgeworICAgIHZvaWQgZigpIHsKKyAgICAgICAgbmV3IE15KCkgeworICAgICAgICAgICAgcHVibGljIHZvaWQgZigpIHsKKyAgICAgICAgICAgICAgICBpbnQgaSA9IDk7CisgICAgICAgICAgICAgICAgaW50IGogPSA5OworICAgICAgICAgICAgfQorICAgICAgICB9OworICAgICAgICBuZXcgTXkoKSB7CisgICAgICAgICAgICBwdWJsaWMgdm9pZCBmKCkgeworICAgICAgICAgICAgICAgIGwoKTsKKyAgICAgICAgICAgICAgICBsKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH07CisgICAgfQorCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9mb3JtYXR0ZXIvamF2YS9Bc3NlcnQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvZm9ybWF0dGVyL2phdmEvQXNzZXJ0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzlmZjNkNQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvZm9ybWF0dGVyL2phdmEvQXNzZXJ0LmphdmEKQEAgLTAsMCArMSw1IEBACitjbGFzcyBGb28geworICAgIHZvaWQgZm9vICgpIHsKKyAgICAgICAgYXNzZXJ0IGZhbHNlOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2Zvcm1hdHRlci9qYXZhL0Fzc2VydF9hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9mb3JtYXR0ZXIvamF2YS9Bc3NlcnRfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZmQ0NTU5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9mb3JtYXR0ZXIvamF2YS9Bc3NlcnRfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDUgQEAKK2NsYXNzIEZvbyB7CisgICAgdm9pZCBmb28oKSB7CisgICAgICAgIGFzc2VydCBmYWxzZTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9mb3JtYXR0ZXIvamF2YS9CbG9ja3MuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvZm9ybWF0dGVyL2phdmEvQmxvY2tzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzVmNTkxZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvZm9ybWF0dGVyL2phdmEvQmxvY2tzLmphdmEKQEAgLTAsMCArMSwzNCBAQAorY2xhc3MgRm9vIHsKKyAgICB2b2lkIGZvbygpeworICAgICAgICBpZiAoYSkKKyAgICAgICAgeworICAgICAgICB9CisKKyAgICAgICAgd2hpbGUoYSkKKyAgICAgICAgeworICAgICAgICB9CisKKyAgICAgICAgZG8KKyAgICAgICAgeworICAgICAgICB9IHdoaWxlKGEpOworCisKKyAgICAgICAgdHJ5CisgICAgICAgIHsKKyAgICAgICAgfQorICAgICAgICBjYXRjaChFeGNlcHRpb24gZSkKKyAgICAgICAgeworICAgICAgICB9CisgICAgICAgIGZpbmFsbHkKKyAgICAgICAgeworICAgICAgICB9CisKKyAgICAgICAgc3dpdGNoKGEpCisgICAgICAgIHsKKyAgICAgICAgfQorCisgICAgICAgIGZvcihhKQorICAgICAgICB7CisgICAgICAgIH0KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9mb3JtYXR0ZXIvamF2YS9CbG9ja3NfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvZm9ybWF0dGVyL2phdmEvQmxvY2tzX2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2UxOWViMQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvZm9ybWF0dGVyL2phdmEvQmxvY2tzX2FmdGVyLmphdmEKQEAgLTAsMCArMSwyNCBAQAorY2xhc3MgRm9vIHsKKyAgICB2b2lkIGZvbygpIHsKKyAgICAgICAgaWYgKGEpIHsKKyAgICAgICAgfQorCisgICAgICAgIHdoaWxlIChhKSB7CisgICAgICAgIH0KKworICAgICAgICBkbyB7CisgICAgICAgIH0gd2hpbGUgKGEpOworCisKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgfSBmaW5hbGx5IHsKKyAgICAgICAgfQorCisgICAgICAgIHN3aXRjaCAoYSkgeworICAgICAgICB9CisKKyAgICAgICAgZm9yIChhKSB7CisgICAgICAgIH0KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9mb3JtYXR0ZXIvamF2YS9CcmVha0luc2lkZUlmLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2Zvcm1hdHRlci9qYXZhL0JyZWFrSW5zaWRlSWYuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMzJmMjZkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9mb3JtYXR0ZXIvamF2YS9CcmVha0luc2lkZUlmLmphdmEKQEAgLTAsMCArMSw3IEBACitjbGFzcyBGb297CisgICAgcHVibGljIHZvaWQgYSgpeworICAgICAgICBpZiAoYikgeworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9mb3JtYXR0ZXIvamF2YS9CcmVha0luc2lkZUlmX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2Zvcm1hdHRlci9qYXZhL0JyZWFrSW5zaWRlSWZfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YmRmNzE5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9mb3JtYXR0ZXIvamF2YS9CcmVha0luc2lkZUlmX2FmdGVyLmphdmEKQEAgLTAsMCArMSw3IEBACitjbGFzcyBGb28geworICAgIHB1YmxpYyB2b2lkIGEoKSB7CisgICAgICAgIGlmIChiKSB7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2Zvcm1hdHRlci9qYXZhL0Nhc3RJbnNpZGVFbHNlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2Zvcm1hdHRlci9qYXZhL0Nhc3RJbnNpZGVFbHNlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2MyMTMwYQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvZm9ybWF0dGVyL2phdmEvQ2FzdEluc2lkZUVsc2UuamF2YQpAQCAtMCwwICsxLDkgQEAKK2NsYXNzIEZvbyB7CisgICAgcHVibGljIHZvaWQgZm9vKCl7CisgICAgICAgIGlmIChhKSB7CisKKyAgICAgICAgfSBlbHNlIHsKKygoU3RyaW5nKXZhbHVlKQorICAgICAgICB9CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvZm9ybWF0dGVyL2phdmEvQ2FzdEluc2lkZUVsc2VfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvZm9ybWF0dGVyL2phdmEvQ2FzdEluc2lkZUVsc2VfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNDEzYjg2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9mb3JtYXR0ZXIvamF2YS9DYXN0SW5zaWRlRWxzZV9hZnRlci5qYXZhCkBAIC0wLDAgKzEsOSBAQAorY2xhc3MgRm9vIHsKKyAgcHVibGljIHZvaWQgZm9vKCkgeworICAgIGlmIChhKSB7CisKKyAgICB9IGVsc2UgeworICAgICAgKChTdHJpbmcpIHZhbHVlKQorICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvZm9ybWF0dGVyL2phdmEvQ2hhaW5lZE1ldGhvZHNBbGlnbm1lbnQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvZm9ybWF0dGVyL2phdmEvQ2hhaW5lZE1ldGhvZHNBbGlnbm1lbnQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40N2MxYWJlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9mb3JtYXR0ZXIvamF2YS9DaGFpbmVkTWV0aG9kc0FsaWdubWVudC5qYXZhCkBAIC0wLDAgKzEsMzcgQEAKK2NsYXNzIEZvcm1hdHRpbmdUZXN0IHsKKworICAgIHByaXZhdGUgc3RhdGljIEZvcm1hdHRpbmdUZXN0IHN0YXRpY0ZvbzsKKworICAgIHByaXZhdGUgRm9ybWF0dGluZ1Rlc3QgaW5zdGFuY2VGb287CisKKyAgICBAU3VwcHJlc3NXYXJuaW5ncyh7IkFjY2Vzc1N0YXRpY1ZpYUluc3RhbmNlIn0pCisgICAgcHVibGljIHZvaWQgdGVzdCgpIHsKKworICAgICAgICAvLyBMb25nIGNoYWluZWQgbWV0aG9kIGNhbGxzIHdpdGggaW5pdGlhbCBpbnN0YW5jZSB0YXJnZXQgLSBtZXRob2QgY2FsbHMgYXJlIGFsaWduZWQgdG8gdGhlIGZpcnN0IG1ldGhvZAorICAgICAgICAvLyBjYWxsIHBsYWNlLgorICAgICAgICBpbnN0YW5jZUZvby5pbnN0YW5jZU1ldGhvZFdpdGhRdWl0ZUxvbmdOYW1lSW5kZWVkKCkuc3RhdGljTWV0aG9kV2l0aFF1aXRlTG9uZ05hbWVJbmRlZWQoKS5pbnN0YW5jZU1ldGhvZFdpdGhRdWl0ZUxvbmdOYW1lSW5kZWVkKCkuaW5zdGFuY2VNZXRob2RXaXRoUXVpdGVMb25nTmFtZUluZGVlZCgpLnN0YXRpY01ldGhvZFdpdGhRdWl0ZUxvbmdOYW1lSW5kZWVkKCk7CisKKyAgICAgICAgLy8gTG9uZyBjaGFpbmVkIG1ldGhvZCBjYWxscyB3aXRoIGluaXRpYWwgc3RhdGljIHRhcmdldCAtIG1ldGhvZCBjYWxscyBhcmUgYWxpZ25lZCB0byB0aGUgZmlyc3QgbWV0aG9kCisgICAgICAgIC8vIGNhbGwgcGxhY2UuCisgICAgICAgIHN0YXRpY0Zvby5pbnN0YW5jZU1ldGhvZFdpdGhRdWl0ZUxvbmdOYW1lSW5kZWVkKCkuc3RhdGljTWV0aG9kV2l0aFF1aXRlTG9uZ05hbWVJbmRlZWQoKS5pbnN0YW5jZU1ldGhvZFdpdGhRdWl0ZUxvbmdOYW1lSW5kZWVkKCkuaW5zdGFuY2VNZXRob2RXaXRoUXVpdGVMb25nTmFtZUluZGVlZCgpLnN0YXRpY01ldGhvZFdpdGhRdWl0ZUxvbmdOYW1lSW5kZWVkKCk7CisKKyAgICAgICAgLy8gSW50ZXJsZWF2ZWQgbWV0aG9kIGNhbGwgY2hhaW5zIC0gZXZlcnkgc3ViLWNoYWluIGlzIGFsaWduZWQgdG8gaXRzIG93biB0YXJnZXQKKyAgICAgICAgaW5zdGFuY2VGb28uaW5zdGFuY2VNZXRob2RXaXRoUXVpdGVMb25nTmFtZUluZGVlZCgpLnN0YXRpY01ldGhvZFdpdGhRdWl0ZUxvbmdOYW1lSW5kZWVkKCkuaW5zdGFuY2VNZXRob2RXaXRoUXVpdGVMb25nTmFtZUluZGVlZCgpLmluc3RhbmNlRm9vLmluc3RhbmNlTWV0aG9kV2l0aFF1aXRlTG9uZ05hbWVJbmRlZWQoKS5zdGF0aWNNZXRob2RXaXRoUXVpdGVMb25nTmFtZUluZGVlZCgpLmluc3RhbmNlTWV0aG9kV2l0aFF1aXRlTG9uZ05hbWVJbmRlZWQoKTsKKworICAgICAgICAvLyBJbnRlcmxlYXZlZCBtZXRob2QgY2FsbCBjaGFpbnMgd2l0aCBtYW51YWwgbGluZSBicmVhayAtIGV2ZXJ5IHN1Yi1jaGFpbiBpcyBhbGlnbmVkIHRvIGl0cyBvd24KKyAgICAgICAgLy8gdGFyZ2V0IGFuZCBtYW51YWwgbGluZSBicmVhayBpcyBwcmVzZXJ2ZWQuCisgICAgICAgIGluc3RhbmNlRm9vLmluc3RhbmNlTWV0aG9kV2l0aFF1aXRlTG9uZ05hbWVJbmRlZWQoKS5zdGF0aWNNZXRob2RXaXRoUXVpdGVMb25nTmFtZUluZGVlZCgpCisgICAgICAgICAgICAuaW5zdGFuY2VGb28uaW5zdGFuY2VNZXRob2RXaXRoUXVpdGVMb25nTmFtZUluZGVlZCgpLnN0YXRpY01ldGhvZFdpdGhRdWl0ZUxvbmdOYW1lSW5kZWVkKCkuaW5zdGFuY2VNZXRob2RXaXRoUXVpdGVMb25nTmFtZUluZGVlZCgpOworCisgICAgICAgIC8vIENoYWluZWQgY2FsbHMgd2l0aCBpbXBsaWNpdCB0YXJnZXQgLSBtZXRob2QgY2FsbHMgYXJlIG5vdCBhbGlnbmVkIGFuZCB1c2UgY29udGludWF0aW9uIGluZGVudCBpbnN0ZWFkLgorICAgICAgICBpbnN0YW5jZU1ldGhvZFdpdGhRdWl0ZUxvbmdOYW1lSW5kZWVkKCkuaW5zdGFuY2VNZXRob2RXaXRoUXVpdGVMb25nTmFtZUluZGVlZCgpLmluc3RhbmNlTWV0aG9kV2l0aFF1aXRlTG9uZ05hbWVJbmRlZWQoKS5pbnN0YW5jZU1ldGhvZFdpdGhRdWl0ZUxvbmdOYW1lSW5kZWVkKCk7CisgICAgfQorCisgICAgcHVibGljIEZvcm1hdHRpbmdUZXN0IGluc3RhbmNlTWV0aG9kV2l0aFF1aXRlTG9uZ05hbWVJbmRlZWQoKSB7CisgICAgICAgIHJldHVybiBpbnN0YW5jZUZvbzsKKyAgICB9CisKKyAgICBwdWJsaWMgc3RhdGljIEZvcm1hdHRpbmdUZXN0IHN0YXRpY01ldGhvZFdpdGhRdWl0ZUxvbmdOYW1lSW5kZWVkKCkgeworICAgICAgICByZXR1cm4gc3RhdGljRm9vOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvZm9ybWF0dGVyL2phdmEvQ2hhaW5lZE1ldGhvZHNBbGlnbm1lbnRfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvZm9ybWF0dGVyL2phdmEvQ2hhaW5lZE1ldGhvZHNBbGlnbm1lbnRfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYjIxYjkyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9mb3JtYXR0ZXIvamF2YS9DaGFpbmVkTWV0aG9kc0FsaWdubWVudF9hZnRlci5qYXZhCkBAIC0wLDAgKzEsNDYgQEAKK2NsYXNzIEZvcm1hdHRpbmdUZXN0IHsKKworICAgIHByaXZhdGUgc3RhdGljIEZvcm1hdHRpbmdUZXN0IHN0YXRpY0ZvbzsKKworICAgIHByaXZhdGUgRm9ybWF0dGluZ1Rlc3QgaW5zdGFuY2VGb287CisKKyAgICBAU3VwcHJlc3NXYXJuaW5ncyh7IkFjY2Vzc1N0YXRpY1ZpYUluc3RhbmNlIn0pCisgICAgcHVibGljIHZvaWQgdGVzdCgpIHsKKworICAgICAgICAvLyBMb25nIGNoYWluZWQgbWV0aG9kIGNhbGxzIHdpdGggaW5pdGlhbCBpbnN0YW5jZSB0YXJnZXQgLSBtZXRob2QgY2FsbHMgYXJlIGFsaWduZWQgdG8gdGhlIGZpcnN0IG1ldGhvZAorICAgICAgICAvLyBjYWxsIHBsYWNlLgorICAgICAgICBpbnN0YW5jZUZvby5pbnN0YW5jZU1ldGhvZFdpdGhRdWl0ZUxvbmdOYW1lSW5kZWVkKCkuc3RhdGljTWV0aG9kV2l0aFF1aXRlTG9uZ05hbWVJbmRlZWQoKQorICAgICAgICAgICAgICAgICAgIC5pbnN0YW5jZU1ldGhvZFdpdGhRdWl0ZUxvbmdOYW1lSW5kZWVkKCkuaW5zdGFuY2VNZXRob2RXaXRoUXVpdGVMb25nTmFtZUluZGVlZCgpCisgICAgICAgICAgICAgICAgICAgLnN0YXRpY01ldGhvZFdpdGhRdWl0ZUxvbmdOYW1lSW5kZWVkKCk7CisKKyAgICAgICAgLy8gTG9uZyBjaGFpbmVkIG1ldGhvZCBjYWxscyB3aXRoIGluaXRpYWwgc3RhdGljIHRhcmdldCAtIG1ldGhvZCBjYWxscyBhcmUgYWxpZ25lZCB0byB0aGUgZmlyc3QgbWV0aG9kCisgICAgICAgIC8vIGNhbGwgcGxhY2UuCisgICAgICAgIHN0YXRpY0Zvby5pbnN0YW5jZU1ldGhvZFdpdGhRdWl0ZUxvbmdOYW1lSW5kZWVkKCkuc3RhdGljTWV0aG9kV2l0aFF1aXRlTG9uZ05hbWVJbmRlZWQoKQorICAgICAgICAgICAgICAgICAuaW5zdGFuY2VNZXRob2RXaXRoUXVpdGVMb25nTmFtZUluZGVlZCgpLmluc3RhbmNlTWV0aG9kV2l0aFF1aXRlTG9uZ05hbWVJbmRlZWQoKQorICAgICAgICAgICAgICAgICAuc3RhdGljTWV0aG9kV2l0aFF1aXRlTG9uZ05hbWVJbmRlZWQoKTsKKworICAgICAgICAvLyBJbnRlcmxlYXZlZCBtZXRob2QgY2FsbCBjaGFpbnMgLSBldmVyeSBzdWItY2hhaW4gaXMgYWxpZ25lZCB0byBpdHMgb3duIHRhcmdldAorICAgICAgICBpbnN0YW5jZUZvby5pbnN0YW5jZU1ldGhvZFdpdGhRdWl0ZUxvbmdOYW1lSW5kZWVkKCkuc3RhdGljTWV0aG9kV2l0aFF1aXRlTG9uZ05hbWVJbmRlZWQoKQorICAgICAgICAgICAgICAgICAgIC5pbnN0YW5jZU1ldGhvZFdpdGhRdWl0ZUxvbmdOYW1lSW5kZWVkKCkuaW5zdGFuY2VGb28uaW5zdGFuY2VNZXRob2RXaXRoUXVpdGVMb25nTmFtZUluZGVlZCgpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5zdGF0aWNNZXRob2RXaXRoUXVpdGVMb25nTmFtZUluZGVlZCgpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5pbnN0YW5jZU1ldGhvZFdpdGhRdWl0ZUxvbmdOYW1lSW5kZWVkKCk7CisKKyAgICAgICAgLy8gSW50ZXJsZWF2ZWQgbWV0aG9kIGNhbGwgY2hhaW5zIHdpdGggbWFudWFsIGxpbmUgYnJlYWsgLSBldmVyeSBzdWItY2hhaW4gaXMgYWxpZ25lZCB0byBpdHMgb3duCisgICAgICAgIC8vIHRhcmdldCBhbmQgbWFudWFsIGxpbmUgYnJlYWsgaXMgcHJlc2VydmVkLgorICAgICAgICBpbnN0YW5jZUZvby5pbnN0YW5jZU1ldGhvZFdpdGhRdWl0ZUxvbmdOYW1lSW5kZWVkKCkuc3RhdGljTWV0aG9kV2l0aFF1aXRlTG9uZ05hbWVJbmRlZWQoKQorICAgICAgICAgICAgICAgIC5pbnN0YW5jZUZvby5pbnN0YW5jZU1ldGhvZFdpdGhRdWl0ZUxvbmdOYW1lSW5kZWVkKCkuc3RhdGljTWV0aG9kV2l0aFF1aXRlTG9uZ05hbWVJbmRlZWQoKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5pbnN0YW5jZU1ldGhvZFdpdGhRdWl0ZUxvbmdOYW1lSW5kZWVkKCk7CisKKyAgICAgICAgLy8gQ2hhaW5lZCBjYWxscyB3aXRoIGltcGxpY2l0IHRhcmdldCAtIG1ldGhvZCBjYWxscyBhcmUgbm90IGFsaWduZWQgYW5kIHVzZSBjb250aW51YXRpb24gaW5kZW50IGluc3RlYWQuCisgICAgICAgIGluc3RhbmNlTWV0aG9kV2l0aFF1aXRlTG9uZ05hbWVJbmRlZWQoKS5pbnN0YW5jZU1ldGhvZFdpdGhRdWl0ZUxvbmdOYW1lSW5kZWVkKCkKKyAgICAgICAgICAgICAgICAuaW5zdGFuY2VNZXRob2RXaXRoUXVpdGVMb25nTmFtZUluZGVlZCgpLmluc3RhbmNlTWV0aG9kV2l0aFF1aXRlTG9uZ05hbWVJbmRlZWQoKTsKKyAgICB9CisKKyAgICBwdWJsaWMgRm9ybWF0dGluZ1Rlc3QgaW5zdGFuY2VNZXRob2RXaXRoUXVpdGVMb25nTmFtZUluZGVlZCgpIHsKKyAgICAgICAgcmV0dXJuIGluc3RhbmNlRm9vOworICAgIH0KKworICAgIHB1YmxpYyBzdGF0aWMgRm9ybWF0dGluZ1Rlc3Qgc3RhdGljTWV0aG9kV2l0aFF1aXRlTG9uZ05hbWVJbmRlZWQoKSB7CisgICAgICAgIHJldHVybiBzdGF0aWNGb287CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9mb3JtYXR0ZXIvamF2YS9Db250aW51ZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9mb3JtYXR0ZXIvamF2YS9Db250aW51ZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcxNzdhMzIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2Zvcm1hdHRlci9qYXZhL0NvbnRpbnVlLmphdmEKQEAgLTAsMCArMSw1IEBACitjbGFzcyBBIHsKKyAgdm9pZCBmb28oKSB7CisgICAgICBjb250aW51ZTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvZm9ybWF0dGVyL2phdmEvQ29udGludWVfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvZm9ybWF0dGVyL2phdmEvQ29udGludWVfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZTVjMThkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9mb3JtYXR0ZXIvamF2YS9Db250aW51ZV9hZnRlci5qYXZhCkBAIC0wLDAgKzEsNSBAQAorY2xhc3MgQSB7CisgICAgdm9pZCBmb28oKSB7CisgICAgICAgIGNvbnRpbnVlOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2Zvcm1hdHRlci9qYXZhL0RvdWJsZUNhc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvZm9ybWF0dGVyL2phdmEvRG91YmxlQ2FzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYxM2M4NmUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2Zvcm1hdHRlci9qYXZhL0RvdWJsZUNhc3QuamF2YQpAQCAtMCwwICsxLDUgQEAKK2NsYXNzIEMgeworICAgIHsKKyAgICAgICAgU3RyaW5nIHEgPSAoU3RyaW5nKSAoIChTdHJpbmcpImFiYyIgKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2Zvcm1hdHRlci9qYXZhL0RvdWJsZUNhc3RfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvZm9ybWF0dGVyL2phdmEvRG91YmxlQ2FzdF9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk3MDk1M2QKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2Zvcm1hdHRlci9qYXZhL0RvdWJsZUNhc3RfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDUgQEAKK2NsYXNzIEMgeworICAgIHsKKyAgICAgICAgU3RyaW5nIHEgPSAoU3RyaW5nKSAoKFN0cmluZykgImFiYyIpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvZm9ybWF0dGVyL2phdmEvRm9yRWFjaC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9mb3JtYXR0ZXIvamF2YS9Gb3JFYWNoLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2FhMzUwNwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvZm9ybWF0dGVyL2phdmEvRm9yRWFjaC5qYXZhCkBAIC0wLDAgKzEsNiBAQAorY2xhc3MgQyB7CisgICAgeworICAgICAgICBmb3IoU3RyaW5nIHMgICA6Y29sbGVjdGlvbikgeworICAgICAgICB9CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvZm9ybWF0dGVyL2phdmEvRm9yRWFjaF9hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9mb3JtYXR0ZXIvamF2YS9Gb3JFYWNoX2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzhlODNhNAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvZm9ybWF0dGVyL2phdmEvRm9yRWFjaF9hZnRlci5qYXZhCkBAIC0wLDAgKzEsNiBAQAorY2xhc3MgQyB7CisgICAgeworICAgICAgICBmb3IgKFN0cmluZyBzIDogY29sbGVjdGlvbikgeworICAgICAgICB9CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvZm9ybWF0dGVyL2phdmEvSWYuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvZm9ybWF0dGVyL2phdmEvSWYuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYzczNDAyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9mb3JtYXR0ZXIvamF2YS9JZi5qYXZhCkBAIC0wLDAgKzEsNiBAQAorY2xhc3MgRm9vIHsKKyAgICB2b2lkIGZvbygpIHsKKyAgICAgICAgaWYgKGEpIHsKKyAgICAgICAgfQorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2Zvcm1hdHRlci9qYXZhL0lmQnJhY2VzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2Zvcm1hdHRlci9qYXZhL0lmQnJhY2VzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmYzNzU1MwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvZm9ybWF0dGVyL2phdmEvSWZCcmFjZXMuamF2YQpAQCAtMCwwICsxLDYgQEAKK2NsYXNzIEZvbyB7CisgICAgdm9pZCBmb28oKSB7CisgICAgICAgIGlmIChhKQorICAgICAgICAgICAgcmV0dXJuOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2Zvcm1hdHRlci9qYXZhL0lmQnJhY2VzX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2Zvcm1hdHRlci9qYXZhL0lmQnJhY2VzX2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGVlMjcyMgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvZm9ybWF0dGVyL2phdmEvSWZCcmFjZXNfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDcgQEAKK2NsYXNzIEZvbyB7CisgICAgdm9pZCBmb28oKSB7CisgICAgICAgIGlmIChhKSB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9mb3JtYXR0ZXIvamF2YS9JZkVsc2UuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvZm9ybWF0dGVyL2phdmEvSWZFbHNlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzkwMmU5NgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvZm9ybWF0dGVyL2phdmEvSWZFbHNlLmphdmEKQEAgLTAsMCArMSw1OSBAQAorcHVibGljIGNsYXNzIEZvbyB7CisgICAgcHVibGljIHZvaWQgZm9vKGJvb2xlYW4gYSwgaW50IHgsCisgICAgICAgICAgICAgICAgICAgIGludCB5LCBpbnQgeikgeworICAgICAgICBsYWJlbDE6CisgICAgICAgIGRvIHsKKyAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgaWYgKHggPiAwKSB7CisgICAgICAgICAgICAgICAgICAgIGludCBzb21lVmFyaWFibGUgPSBhID8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHggOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZSBpZiAoeCA8IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGludCBzb21lVmFyaWFibGUgPSAoeSArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOworICAgICAgICAgICAgICAgICAgICAgICAgc29tZVZhcmlhYmxlID0geCA9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4ICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDI6CisgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGludCBpID0gMDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA8IDU7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkrKykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb1NvbWV0aGluZyhpKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHN3aXRjaCAoYSkgeworICAgICAgICAgICAgICAgICAgICBjYXNlIDA6CisgICAgICAgICAgICAgICAgICAgICAgICBkb0Nhc2UwKCk7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgICAgIGRvRGVmYXVsdCgpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNhdGNoIChFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgICAgIHByb2Nlc3NFeGNlcHRpb24oZS5nZXRNZXNzYWdlKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4ICsgeSwgeiwgYSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBmaW5hbGx5IHsKKyAgICAgICAgICAgICAgICBwcm9jZXNzRmluYWxseSgpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHdoaWxlICh0cnVlKTsKKworICAgICAgICBpZiAoMiA8IDMpIHJldHVybjsKKyAgICAgICAgaWYgKDMgPCA0KQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBkbyB4Kysgd2hpbGUgKHggPCAxMDAwMCk7CisgICAgICAgIHdoaWxlICh4IDwgNTAwMDApIHgrKzsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCA1OyBpKyspIFN5c3RlbS5vdXQucHJpbnRsbihpKTsKKyAgICB9CisKKyAgICBwcml2YXRlIGNsYXNzIElubmVyQ2xhc3MgaW1wbGVtZW50cyBJMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJMiB7CisgICAgICAgIHB1YmxpYyB2b2lkIGJhcigpIHRocm93cyBFMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEUyIHsKKyAgICAgICAgfQorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2Zvcm1hdHRlci9qYXZhL0lmRWxzZV9hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9mb3JtYXR0ZXIvamF2YS9JZkVsc2VfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZjVlNGRiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9mb3JtYXR0ZXIvamF2YS9JZkVsc2VfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDU5IEBACitwdWJsaWMgY2xhc3MgRm9vIHsKKyAgICBwdWJsaWMgdm9pZCBmb28oYm9vbGVhbiBhLCBpbnQgeCwKKyAgICAgICAgICAgICAgICAgICAgaW50IHksIGludCB6KSB7CisgICAgICAgIGxhYmVsMToKKyAgICAgICAgZG8geworICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICBpZiAoeCA+IDApIHsKKyAgICAgICAgICAgICAgICAgICAgaW50IHNvbWVWYXJpYWJsZSA9IGEgPworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeCA6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIGlmICh4IDwgMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgaW50IHNvbWVWYXJpYWJsZSA9ICh5ICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgegorICAgICAgICAgICAgICAgICAgICAgICAgKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNvbWVWYXJpYWJsZSA9IHggPQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4ICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsMjoKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpIDwgNTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSsrKSB7IGRvU29tZXRoaW5nKGkpOyB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBzd2l0Y2ggKGEpIHsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSAwOgorICAgICAgICAgICAgICAgICAgICAgICAgZG9DYXNlMCgpOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgICAgICBkb0RlZmF1bHQoKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgICAgICBwcm9jZXNzRXhjZXB0aW9uKGUuZ2V0TWVzc2FnZSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeCArIHksIHosIGEpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZmluYWxseSB7CisgICAgICAgICAgICAgICAgcHJvY2Vzc0ZpbmFsbHkoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICB3aGlsZSAodHJ1ZSk7CisKKyAgICAgICAgaWYgKDIgPCAzKSByZXR1cm47CisgICAgICAgIGlmICgzIDwgNCkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgZG8geCsrIHdoaWxlICh4IDwgMTAwMDApOworICAgICAgICB3aGlsZSAoeCA8IDUwMDAwKSB4Kys7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgNTsgaSsrKSBTeXN0ZW0ub3V0LnByaW50bG4oaSk7CisgICAgfQorCisgICAgcHJpdmF0ZSBjbGFzcyBJbm5lckNsYXNzIGltcGxlbWVudHMgSTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSTIgeworICAgICAgICBwdWJsaWMgdm9pZCBiYXIoKSB0aHJvd3MgRTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFMiB7CisgICAgICAgIH0KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9mb3JtYXR0ZXIvamF2YS9JZl9hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9mb3JtYXR0ZXIvamF2YS9JZl9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM4MzVlYjYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2Zvcm1hdHRlci9qYXZhL0lmX2FmdGVyLmphdmEKQEAgLTAsMCArMSw3IEBACitjbGFzcyBGb28geworICAgIHZvaWQgZm9vKCkgeworICAgICAgICBpZiAoYSkKKyAgICAgICAgeworICAgICAgICB9CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvZm9ybWF0dGVyL2phdmEvSW5uZXJDbGFzc0FzUGFyYW1ldGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2Zvcm1hdHRlci9qYXZhL0lubmVyQ2xhc3NBc1BhcmFtZXRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI1MjQwZjIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2Zvcm1hdHRlci9qYXZhL0lubmVyQ2xhc3NBc1BhcmFtZXRlci5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKK2NsYXNzIEZvb3sKK3B1YmxpYyB2b2lkIGZvbygpeworYmFyX2NhbGwobmV3IFJ1bm5hYmxlKCl7Cit2b2lkIHJ1bigpeworYmFyKCk7CitiYXIoKTsKK30KK30pOworfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvZm9ybWF0dGVyL2phdmEvSW5uZXJDbGFzc0FzUGFyYW1ldGVyX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2Zvcm1hdHRlci9qYXZhL0lubmVyQ2xhc3NBc1BhcmFtZXRlcl9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFlMWIwODEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2Zvcm1hdHRlci9qYXZhL0lubmVyQ2xhc3NBc1BhcmFtZXRlcl9hZnRlci5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKK2NsYXNzIEZvbyB7CisgICAgcHVibGljIHZvaWQgZm9vKCkgeworICAgICAgICBiYXJfY2FsbChuZXcgUnVubmFibGUoKSB7CisgICAgICAgICAgICB2b2lkIHJ1bigpIHsKKyAgICAgICAgICAgICAgICBiYXIoKTsKKyAgICAgICAgICAgICAgICBiYXIoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvZm9ybWF0dGVyL2phdmEvSmF2YURvYy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9mb3JtYXR0ZXIvamF2YS9KYXZhRG9jLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGI5ZTZlMQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvZm9ybWF0dGVyL2phdmEvSmF2YURvYy5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKK3B1YmxpYyBjbGFzcyBUZXN0IHsKKyAgICB2b2lkIGFub3RoZXJNZXRob2QoU3RyaW5nIHMpOworICAgIFN0cmluZyBmaWVsZDsKKyAgICAvKioKKyAgICAgKiBAcGFyYW0gYW5PYmplY3QKKyAgICAgKi8KKyAgICB2b2lkIG1ldGhvZChUZXN0IGFuT2JqZWN0LCBTdHJpbmcgZmllbGQxKSB7CisgICAgICAgIGFuT2JqZWN0LmFub3RoZXJNZXRob2QoZmllbGQxKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9mb3JtYXR0ZXIvamF2YS9KYXZhRG9jX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2Zvcm1hdHRlci9qYXZhL0phdmFEb2NfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMDU2OWQ4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9mb3JtYXR0ZXIvamF2YS9KYXZhRG9jX2FmdGVyLmphdmEKQEAgLTAsMCArMSwxMiBAQAorcHVibGljIGNsYXNzIFRlc3QgeworICAgIHZvaWQgYW5vdGhlck1ldGhvZChTdHJpbmcgcyk7CisKKyAgICBTdHJpbmcgZmllbGQ7CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0gYW5PYmplY3QKKyAgICAgKi8KKyAgICB2b2lkIG1ldGhvZChUZXN0IGFuT2JqZWN0LCBTdHJpbmcgZmllbGQxKSB7CisgICAgICAgIGFuT2JqZWN0LmFub3RoZXJNZXRob2QoZmllbGQxKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9mb3JtYXR0ZXIvamF2YS9MYWJlbC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9mb3JtYXR0ZXIvamF2YS9MYWJlbC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQxNzhkNjUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2Zvcm1hdHRlci9qYXZhL0xhYmVsLmphdmEKQEAgLTAsMCArMSw1IEBACitjbGFzcyBYIHsKKyAgICB2b2lkIFkoKSB7CisgICAgICAgIHo6IGZvciAoaW50IGkgPSAwOyBpIDwgMjQ7IGkrKykge30KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9mb3JtYXR0ZXIvamF2YS9MYWJlbF9hZnRlcjEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvZm9ybWF0dGVyL2phdmEvTGFiZWxfYWZ0ZXIxLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODA2ZWRhNwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvZm9ybWF0dGVyL2phdmEvTGFiZWxfYWZ0ZXIxLmphdmEKQEAgLTAsMCArMSw3IEBACitjbGFzcyBYIHsKKyAgICB2b2lkIFkoKSB7Cit6OgorICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IDI0OyBpKyspIHsKKyAgICAgICAgfQorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2Zvcm1hdHRlci9qYXZhL0xvbmdBbm5vdGF0aW9uc0FyZU5vdFdyYXBwZWQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvZm9ybWF0dGVyL2phdmEvTG9uZ0Fubm90YXRpb25zQXJlTm90V3JhcHBlZC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBhNWI3YTEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2Zvcm1hdHRlci9qYXZhL0xvbmdBbm5vdGF0aW9uc0FyZU5vdFdyYXBwZWQuamF2YQpAQCAtMCwwICsxLDQgQEAKK0BYbWxUeXBlKG5hbWUgPSAic3VibWlzc2lvbkRhdGEiLAorICAgICAgICBwcm9wT3JkZXIgPSB7InN1Ym1pc3Npb25JZCIsICJzdWJtaXR0ZXJJZCIsICJjb250ZXN0SWQiLCAic3VibWl0dGVkRGF0ZSIsICJzdWJtaXNzaW9uQ29udGVudCIsICJwYXNzZWRTY3JlZW5pbmciLCAicGxhY2VtZW50IiwgInBhaWRGb3IiLCAicHJpY2UiLCAibWFya2VkRm9yUHVyY2hhc2UiLCAicmVtb3ZlZCJ9KQorcHVibGljIGNsYXNzIFN1Ym1pc3Npb25EYXRhIHsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2Zvcm1hdHRlci9qYXZhL0xvbmdBbm5vdGF0aW9uc0FyZU5vdFdyYXBwZWRfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvZm9ybWF0dGVyL2phdmEvTG9uZ0Fubm90YXRpb25zQXJlTm90V3JhcHBlZF9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZjYmI5MjEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2Zvcm1hdHRlci9qYXZhL0xvbmdBbm5vdGF0aW9uc0FyZU5vdFdyYXBwZWRfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDUgQEAKK0BYbWxUeXBlKG5hbWUgPSAic3VibWlzc2lvbkRhdGEiLAorICAgICAgICBwcm9wT3JkZXIgPSB7InN1Ym1pc3Npb25JZCIsICJzdWJtaXR0ZXJJZCIsICJjb250ZXN0SWQiLCAic3VibWl0dGVkRGF0ZSIsICJzdWJtaXNzaW9uQ29udGVudCIsCisgICAgICAgICAgICAgICAgInBhc3NlZFNjcmVlbmluZyIsICJwbGFjZW1lbnQiLCAicGFpZEZvciIsICJwcmljZSIsICJtYXJrZWRGb3JQdXJjaGFzZSIsICJyZW1vdmVkIn0pCitwdWJsaWMgY2xhc3MgU3VibWlzc2lvbkRhdGEgeworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvZm9ybWF0dGVyL2phdmEvTWV0aG9kQ2FsbEluQXNzaWdubWVudC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9mb3JtYXR0ZXIvamF2YS9NZXRob2RDYWxsSW5Bc3NpZ25tZW50LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWRhMzYxZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvZm9ybWF0dGVyL2phdmEvTWV0aG9kQ2FsbEluQXNzaWdubWVudC5qYXZhCkBAIC0wLDAgKzEsNiBAQAorY2xhc3MgRm9veworICB2b2lkIGZvbygpeworICAgIENsYXNzQmFyIGJhciA9CisgICAgY3JlYXRlQmFyKCk7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2Zvcm1hdHRlci9qYXZhL01ldGhvZENhbGxJbkFzc2lnbm1lbnRfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvZm9ybWF0dGVyL2phdmEvTWV0aG9kQ2FsbEluQXNzaWdubWVudF9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZmMmM3NzMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2Zvcm1hdHRlci9qYXZhL01ldGhvZENhbGxJbkFzc2lnbm1lbnRfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDYgQEAKK2NsYXNzIEZvbyB7CisgICAgdm9pZCBmb28oKSB7CisgICAgICAgIENsYXNzQmFyIGJhciA9CisgICAgICAgICAgICAgICAgY3JlYXRlQmFyKCk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvZm9ybWF0dGVyL2phdmEvTmV3LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2Zvcm1hdHRlci9qYXZhL05ldy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY3OTY5YWIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2Zvcm1hdHRlci9qYXZhL05ldy5qYXZhCkBAIC0wLDAgKzEsNiBAQAorcHVibGljIGNsYXNzIEMgeworICAgIEMgb3VyQyA9CisgICAgICAgICAgICBuZXcgQygKKyAgICAgICAgICAgICAgICBuZXcgQygpCisgICAgICAgICAgICAgICAgKTsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2Zvcm1hdHRlci9qYXZhL05ld19hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9mb3JtYXR0ZXIvamF2YS9OZXdfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZmNhZWI2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9mb3JtYXR0ZXIvamF2YS9OZXdfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDYgQEAKK3B1YmxpYyBjbGFzcyBDIHsKKyAgICBDIG91ckMgPQorICAgICAgICAgICAgbmV3IEMoCisgICAgICAgICAgICAgICAgICAgIG5ldyBDKCkKKyAgICAgICAgICAgICk7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9mb3JtYXR0ZXIvamF2YS9OdWxsTWV0aG9kUGFyYW1ldGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2Zvcm1hdHRlci9qYXZhL051bGxNZXRob2RQYXJhbWV0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42M2U0NjM1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9mb3JtYXR0ZXIvamF2YS9OdWxsTWV0aG9kUGFyYW1ldGVyLmphdmEKQEAgLTAsMCArMSw0IEBACitjbGFzcyBDIHsKK3B1YmxpYyBzdGF0aWMgZmluYWwgQzEgb3VyQyA9CituZXcgQzIobmV3IEMzKCksbnVsbCxuZXcgQzQoKSxuZXcgQzUoKSxuZXcgQzYoKSxuZXcgQzcoKSk7Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2Zvcm1hdHRlci9qYXZhL051bGxNZXRob2RQYXJhbWV0ZXJfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvZm9ybWF0dGVyL2phdmEvTnVsbE1ldGhvZFBhcmFtZXRlcl9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY5ZGI3NDcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2Zvcm1hdHRlci9qYXZhL051bGxNZXRob2RQYXJhbWV0ZXJfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDkgQEAKK2NsYXNzIEMgeworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgQzEgb3VyQyA9CisgICAgICAgICAgICBuZXcgQzIobmV3IEMzKCksCisgICAgICAgICAgICAgICAgICAgbnVsbCwKKyAgICAgICAgICAgICAgICAgICBuZXcgQzQoKSwKKyAgICAgICAgICAgICAgICAgICBuZXcgQzUoKSwKKyAgICAgICAgICAgICAgICAgICBuZXcgQzYoKSwKKyAgICAgICAgICAgICAgICAgICBuZXcgQzcoKSk7Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2Zvcm1hdHRlci9qYXZhL1BhcmFtZXRlcnNBbGlnbm1lbnQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvZm9ybWF0dGVyL2phdmEvUGFyYW1ldGVyc0FsaWdubWVudC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY2NzcyYTYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2Zvcm1hdHRlci9qYXZhL1BhcmFtZXRlcnNBbGlnbm1lbnQuamF2YQpAQCAtMCwwICsxLDEyIEBACitjbGFzcyBGb297CisgICAgdm9pZCBmb28oKSB7CisgICAgICBmaW5hbCBJbmRlbnRJbmZvIGluZGVudFByb3BlcnR5ID0gRm9ybWF0dGVyLmdldEluc3RhbmNlKCkuZ2V0V2hpdGVTcGFjZUJlZm9yZShuZXcgUHNpQmFzZWRGb3JtYXR0aW5nTW9kZWwoZWxlbWVudC5nZXRDb250YWluaW5nRmlsZSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldHRpbmdzKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2RlRm9ybWF0dGVyRmFjYWRlLmNyZWF0ZUJsb2NrKGVsZW1lbnQuZ2V0Q29udGFpbmluZ0ZpbGUoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldHRpbmdzKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldHRpbmdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZW50T3B0aW9ucywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGQyLmdldFRleHRSYW5nZSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvZm9ybWF0dGVyL2phdmEvUGFyYW1ldGVyc0FsaWdubWVudF9hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9mb3JtYXR0ZXIvamF2YS9QYXJhbWV0ZXJzQWxpZ25tZW50X2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGUwZGVlOAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvZm9ybWF0dGVyL2phdmEvUGFyYW1ldGVyc0FsaWdubWVudF9hZnRlci5qYXZhCkBAIC0wLDAgKzEsMTIgQEAKK2NsYXNzIEZvbyB7CisgICAgdm9pZCBmb28oKSB7CisgICAgICAgIGZpbmFsIEluZGVudEluZm8gaW5kZW50UHJvcGVydHkgPSBGb3JtYXR0ZXIuZ2V0SW5zdGFuY2UoKS5nZXRXaGl0ZVNwYWNlQmVmb3JlKG5ldyBQc2lCYXNlZEZvcm1hdHRpbmdNb2RlbChlbGVtZW50LmdldENvbnRhaW5pbmdGaWxlKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXR0aW5ncyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvZGVGb3JtYXR0ZXJGYWNhZGUuY3JlYXRlQmxvY2soZWxlbWVudC5nZXRDb250YWluaW5nRmlsZSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldHRpbmdzKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0dGluZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGVudE9wdGlvbnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkMi5nZXRUZXh0UmFuZ2UoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2Zvcm1hdHRlci9qYXZhL1NDUjExMjk2LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2Zvcm1hdHRlci9qYXZhL1NDUjExMjk2LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjNmM2Q0YQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvZm9ybWF0dGVyL2phdmEvU0NSMTEyOTYuamF2YQpAQCAtMCwwICsxLDE3IEBACitjbGFzcyBBIHsKKy8qKgorICogVGhlIDxjb2RlPlN0cmluZzwvY29kZT4gY2xhc3MgcmVwcmVzZW50cyBjaGFyYWN0ZXIgc3RyaW5ncy4gQWxsCisgKiBzdHJpbmcgbGl0ZXJhbHMgaW4gSmF2YSBwcm9ncmFtcywgc3VjaCBhcyA8Y29kZT4iYWJjIjwvY29kZT4sIGFyZQorICogaW1wbGVtZW50ZWQgYXMgaW5zdGFuY2VzIG9mIHRoaXMgY2xhc3MuCisgKgorICogU29tZSB0ZXh0IGFmdGVyIGVtcHR5IGxpbmUKKyAqCisgKiBAYXV0aG9yICBMZWUgQm95bnRvbgorICogQGF1dGhvciAgQXJ0aHVyIHZhbiBIb2ZmCisgKiBAdmVyc2lvbiAxLjE1MiwgMDIvMDEvMDMKKyAqIEBzaW5jZSAgIEpESzEuMAorICovCit2b2lkIGZvbygpIHsKKworfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvZm9ybWF0dGVyL2phdmEvU0NSMTEyOTZfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvZm9ybWF0dGVyL2phdmEvU0NSMTEyOTZfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MDJkYzUwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9mb3JtYXR0ZXIvamF2YS9TQ1IxMTI5Nl9hZnRlci5qYXZhCkBAIC0wLDAgKzEsMTcgQEAKK2NsYXNzIEEgeworICAgIC8qKgorICAgICAqIFRoZSA8Y29kZT5TdHJpbmc8L2NvZGU+IGNsYXNzIHJlcHJlc2VudHMKKyAgICAgKiBjaGFyYWN0ZXIgc3RyaW5ncy4gQWxsIHN0cmluZyBsaXRlcmFscyBpbiBKYXZhCisgICAgICogcHJvZ3JhbXMsIHN1Y2ggYXMgPGNvZGU+ImFiYyI8L2NvZGU+LCBhcmUKKyAgICAgKiBpbXBsZW1lbnRlZCBhcyBpbnN0YW5jZXMgb2YgdGhpcyBjbGFzcy4KKyAgICAgKiBTb21lIHRleHQgYWZ0ZXIgZW1wdHkgbGluZQorICAgICAqCisgICAgICogQGF1dGhvciBMZWUgQm95bnRvbgorICAgICAqIEBhdXRob3IgQXJ0aHVyIHZhbiBIb2ZmCisgICAgICogQHZlcnNpb24gMS4xNTIsIDAyLzAxLzAzCisgICAgICogQHNpbmNlIEpESzEuMAorICAgICAqLworICAgIHZvaWQgZm9vKCkgeworCisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvZm9ybWF0dGVyL2phdmEvU0NSMTE0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2Zvcm1hdHRlci9qYXZhL1NDUjExNC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ1M2FhNTAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2Zvcm1hdHRlci9qYXZhL1NDUjExNC5qYXZhCkBAIC0wLDAgKzEsMTEgQEAKK2NsYXNzIEZvb3sKKyAgICB2b2lkIGZvbygpIHsKK3RyeQoreworICAgLy93aGF0ZXZlcgorfQorY2F0Y2goRXhjZXB0aW9uIGV4KQoreworfSAgICAKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2Zvcm1hdHRlci9qYXZhL1NDUjExNF9hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9mb3JtYXR0ZXIvamF2YS9TQ1IxMTRfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZWI5NDJiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9mb3JtYXR0ZXIvamF2YS9TQ1IxMTRfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDExIEBACitjbGFzcyBGb28geworICAgIHZvaWQgZm9vKCkgeworICAgICAgICB0cnkKKyAgICAgICAgeworICAgICAgICAgICAgLy93aGF0ZXZlcgorICAgICAgICB9CisgICAgICAgIGNhdGNoIChFeGNlcHRpb24gZXgpCisgICAgICAgIHsKKyAgICAgICAgfQorICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvZm9ybWF0dGVyL2phdmEvU0NSMTE3OTkuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvZm9ybWF0dGVyL2phdmEvU0NSMTE3OTkuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZDFmMzUzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9mb3JtYXR0ZXIvamF2YS9TQ1IxMTc5OS5qYXZhCkBAIC0wLDAgKzEsNzMgQEAKK3BhY2thZ2UgYnIuY29tLnZpdm8udG9ycGVkZWlyby5wdWxsLmltcGw7CisKK2ltcG9ydCBici5jb20udml2by50b3JwZWRlaXJvLnB1bGwuTWVuc2FnZW1QdWxsOworaW1wb3J0IGJyLmNvbS52aXZvLnRvcnBlZGVpcm8ucHVsbC5QdWxsREFPOworaW1wb3J0IG9yZy5zcHJpbmdmcmFtZXdvcmsuamRiYy5jb3JlLkpkYmNUZW1wbGF0ZTsKKworaW1wb3J0IGphdmF4LnNxbC5EYXRhU291cmNlOworCisvKioKKyAqIEltcGxlbWVudGE/IHBhZHI/ZGUge0BsaW5rIFB1bGxEQU99IHF1ZSByZWFsaXphIHRvZGFzIGFzIG9wZXJhP3MgdXRpbGl6YW5kbyBTUUwgYXRyYXY/ZGUgdW0ge0BsaW5rCisgKiBKZGJjVGVtcGxhdGV9IGRvIFNwcmluZyBGcmFtZXdvcmsuCisgKgorICogQGF1dGhvciBNYXJjdXMgQnJpdG8KKyAqLworcHVibGljIGNsYXNzIFB1bGxEQU9KZGJjVGVtcGxhdGUgaW1wbGVtZW50cyBQdWxsREFPCit7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IFNUQVRVU19JTklDSUFMID0gLTc7CisKKyAgICBwcml2YXRlIEpkYmNUZW1wbGF0ZSB0ZW1wbGF0ZTsKKworICAgIHB1YmxpYyBTdHJpbmcgYnVzY2FyVVJMUHJvdmVkb3IoU3RyaW5nIHByb3ZlZG9yKQorICAgIHsKKyAgICAgICAgU3RyaW5nIHNxbCA9ICJTRUxFQ1QgdXJsIEZST00gcHVsbF91cmwgV0hFUkUgcHJvdmVkb3IgPSA/IjsKKyAgICAgICAgcmV0dXJuIChTdHJpbmcpIHRlbXBsYXRlLnF1ZXJ5Rm9yT2JqZWN0KHNxbCwgbmV3IE9iamVjdFtde3Byb3ZlZG9yfSwgU3RyaW5nLmNsYXNzKTsKKyAgICB9CisKKyAgICBwdWJsaWMgTG9uZyBpbnNlcmlyTWVuc2FnZW1IaXN0b3JpY28oTWVuc2FnZW1QdWxsIG1lbnNhZ2VtKQorICAgIHsKKyAgICAgICAgU3RyaW5nIHNxbCA9ICIiICsKKyAgICAgICAgICAgICJJTlNFUlQgSU5UTyBwdWxsX2hpc3RvcmljbyAoXG4iICsKKyAgICAgICAgICAgICIgICAgaWRfbG9nLFxuIiArCisgICAgICAgICAgICAiICAgIHByb3ZlZG9yLFxuIiArCisgICAgICAgICAgICAiICAgIG9yaWdlbSxcbiIgKworICAgICAgICAgICAgIiAgICBkZXN0aW5vLFxuIiArCisgICAgICAgICAgICAiICAgIG1zZ19vcmlnaW5hZGEsXG4iICsKKyAgICAgICAgICAgICIgICAgY29kX2Vycm8sXG4iICsKKyAgICAgICAgICAgICIgICAgZHRfcmVjZXBjYW9cbiIgKworICAgICAgICAgICAgIikgVkFMVUVTICg/LCA/LCA/LCA/LCA/LCA/LCBzeXNkYXRlKSI7CisKKyAgICAgICAgTG9uZyBpZCA9IGJ1c2NhclByb3hpbW9JRCgpOworCisgICAgICAgIHRlbXBsYXRlLnVwZGF0ZShzcWwsIG5ldyBPYmplY3RbXXtpZCwgbWVuc2FnZW0uZ2V0Q29kaWdvUHJvdmVkb3IoKSwKKyAgICAgICAgICAgICAgICBtZW5zYWdlbS5nZXRNZW5zYWdlbU9yaWdpbmFsKCkuZ2V0T3JpZ2VtKCksIG1lbnNhZ2VtLmdldE1lbnNhZ2VtT3JpZ2luYWwoKS5nZXREZXN0aW5vKCksCisgICAgICAgICAgICAgICAgbWVuc2FnZW0uZ2V0TWVuc2FnZW1PcmlnaW5hbCgpLmdldE1lbnNhZ2VtKCksIFNUQVRVU19JTklDSUFMfSk7CisKKyAgICAgICAgcmV0dXJuIGlkOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIGF0dWFsaXphck1lbnNhZ2VtSGlzdG9yaWNvKExvbmcgaWQsIGludCBzdGF0dXMsIFN0cmluZyBtZW5zYWdlbSkKKyAgICB7CisgICAgICAgIFN0cmluZyBzcWwgPSAiIiArCisgICAgICAgICAgICAiVVBEQVRFIHB1bGxfaGlzdG9yaWNvXG4iICsKKyAgICAgICAgICAgICIgICBTRVQgY29kX2Vycm8gICAgID0gPyxcbiIgKworICAgICAgICAgICAgIiAgICAgICBtc2dfcmVjZWJpZGEgPSA/LFxuIiArCisgICAgICAgICAgICAiICAgICAgIGR0X3Jlc3Bvc3RhICA9IFNZU0RBVEVcbiIgKworICAgICAgICAgICAgIiBXSEVSRSBpZF9sb2cgICAgICAgPSA/IjsKKworICAgICAgICB0ZW1wbGF0ZS51cGRhdGUoc3FsLCBuZXcgT2JqZWN0W117c3RhdHVzLCBtZW5zYWdlbSwgaWR9KTsKKyAgICB9CisKKyAgICBwcml2YXRlIGxvbmcgYnVzY2FyUHJveGltb0lEKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0ZW1wbGF0ZS5xdWVyeUZvckxvbmcoIlNFTEVDVCBzZXFfaWRfbG9nLm5leHR2YWwgRlJPTSBkdWFsIik7CisgICAgfQorCisgICAgLyoqCisgICAgICogQHBhcmFtIGRzIE8gRGF0YVNvdXJjZSB1dGlsaXphZG8gcGFyYSBhY2Vzc28gYW8gYmFuY28gZGUgZGFkb3MuCisgICAgICovCisgICAgcHVibGljIHZvaWQgc2V0RGF0YVNvdXJjZShEYXRhU291cmNlIGRzKQorICAgIHsKKyAgICAgICAgdGhpcy50ZW1wbGF0ZSA9IG5ldyBKZGJjVGVtcGxhdGUoZHMpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2Zvcm1hdHRlci9qYXZhL1NDUjExNzk5X2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2Zvcm1hdHRlci9qYXZhL1NDUjExNzk5X2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWRmZmZkMQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvZm9ybWF0dGVyL2phdmEvU0NSMTE3OTlfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDczIEBACitwYWNrYWdlIGJyLmNvbS52aXZvLnRvcnBlZGVpcm8ucHVsbC5pbXBsOworCitpbXBvcnQgYnIuY29tLnZpdm8udG9ycGVkZWlyby5wdWxsLk1lbnNhZ2VtUHVsbDsKK2ltcG9ydCBici5jb20udml2by50b3JwZWRlaXJvLnB1bGwuUHVsbERBTzsKK2ltcG9ydCBvcmcuc3ByaW5nZnJhbWV3b3JrLmpkYmMuY29yZS5KZGJjVGVtcGxhdGU7CisKK2ltcG9ydCBqYXZheC5zcWwuRGF0YVNvdXJjZTsKKworLyoqCisgKiBJbXBsZW1lbnRhPyBwYWRyP2RlIHtAbGluayBQdWxsREFPfSBxdWUgcmVhbGl6YSB0b2RhcyBhcyBvcGVyYT9zIHV0aWxpemFuZG8gU1FMIGF0cmF2P2RlIHVtIHtAbGluaworICogSmRiY1RlbXBsYXRlfSBkbyBTcHJpbmcgRnJhbWV3b3JrLgorICoKKyAqIEBhdXRob3IgTWFyY3VzIEJyaXRvCisgKi8KK3B1YmxpYyBjbGFzcyBQdWxsREFPSmRiY1RlbXBsYXRlIGltcGxlbWVudHMgUHVsbERBTworeworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBTVEFUVVNfSU5JQ0lBTCA9IC03OworCisgICAgcHJpdmF0ZSBKZGJjVGVtcGxhdGUgdGVtcGxhdGU7CisKKyAgICBwdWJsaWMgU3RyaW5nIGJ1c2NhclVSTFByb3ZlZG9yKFN0cmluZyBwcm92ZWRvcikKKyAgICB7CisgICAgICAgIFN0cmluZyBzcWwgPSAiU0VMRUNUIHVybCBGUk9NIHB1bGxfdXJsIFdIRVJFIHByb3ZlZG9yID0gPyI7CisgICAgICAgIHJldHVybiAoU3RyaW5nKSB0ZW1wbGF0ZS5xdWVyeUZvck9iamVjdChzcWwsIG5ldyBPYmplY3RbXXtwcm92ZWRvcn0sIFN0cmluZy5jbGFzcyk7CisgICAgfQorCisgICAgcHVibGljIExvbmcgaW5zZXJpck1lbnNhZ2VtSGlzdG9yaWNvKE1lbnNhZ2VtUHVsbCBtZW5zYWdlbSkKKyAgICB7CisgICAgICAgIFN0cmluZyBzcWwgPSAiIiArCisgICAgICAgICAgICAiSU5TRVJUIElOVE8gcHVsbF9oaXN0b3JpY28gKFxuIiArCisgICAgICAgICAgICAiICAgIGlkX2xvZyxcbiIgKworICAgICAgICAgICAgIiAgICBwcm92ZWRvcixcbiIgKworICAgICAgICAgICAgIiAgICBvcmlnZW0sXG4iICsKKyAgICAgICAgICAgICIgICAgZGVzdGlubyxcbiIgKworICAgICAgICAgICAgIiAgICBtc2dfb3JpZ2luYWRhLFxuIiArCisgICAgICAgICAgICAiICAgIGNvZF9lcnJvLFxuIiArCisgICAgICAgICAgICAiICAgIGR0X3JlY2VwY2FvXG4iICsKKyAgICAgICAgICAgICIpIFZBTFVFUyAoPywgPywgPywgPywgPywgPywgc3lzZGF0ZSkiOworCisgICAgICAgIExvbmcgaWQgPSBidXNjYXJQcm94aW1vSUQoKTsKKworICAgICAgICB0ZW1wbGF0ZS51cGRhdGUoc3FsLCBuZXcgT2JqZWN0W117aWQsIG1lbnNhZ2VtLmdldENvZGlnb1Byb3ZlZG9yKCksCisgICAgICAgICAgICBtZW5zYWdlbS5nZXRNZW5zYWdlbU9yaWdpbmFsKCkuZ2V0T3JpZ2VtKCksIG1lbnNhZ2VtLmdldE1lbnNhZ2VtT3JpZ2luYWwoKS5nZXREZXN0aW5vKCksCisgICAgICAgICAgICBtZW5zYWdlbS5nZXRNZW5zYWdlbU9yaWdpbmFsKCkuZ2V0TWVuc2FnZW0oKSwgU1RBVFVTX0lOSUNJQUx9KTsKKworICAgICAgICByZXR1cm4gaWQ7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgYXR1YWxpemFyTWVuc2FnZW1IaXN0b3JpY28oTG9uZyBpZCwgaW50IHN0YXR1cywgU3RyaW5nIG1lbnNhZ2VtKQorICAgIHsKKyAgICAgICAgU3RyaW5nIHNxbCA9ICIiICsKKyAgICAgICAgICAgICJVUERBVEUgcHVsbF9oaXN0b3JpY29cbiIgKworICAgICAgICAgICAgIiAgIFNFVCBjb2RfZXJybyAgICAgPSA/LFxuIiArCisgICAgICAgICAgICAiICAgICAgIG1zZ19yZWNlYmlkYSA9ID8sXG4iICsKKyAgICAgICAgICAgICIgICAgICAgZHRfcmVzcG9zdGEgID0gU1lTREFURVxuIiArCisgICAgICAgICAgICAiIFdIRVJFIGlkX2xvZyAgICAgICA9ID8iOworCisgICAgICAgIHRlbXBsYXRlLnVwZGF0ZShzcWwsIG5ldyBPYmplY3RbXXtzdGF0dXMsIG1lbnNhZ2VtLCBpZH0pOworICAgIH0KKworICAgIHByaXZhdGUgbG9uZyBidXNjYXJQcm94aW1vSUQoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRlbXBsYXRlLnF1ZXJ5Rm9yTG9uZygiU0VMRUNUIHNlcV9pZF9sb2cubmV4dHZhbCBGUk9NIGR1YWwiKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0gZHMgTyBEYXRhU291cmNlIHV0aWxpemFkbyBwYXJhIGFjZXNzbyBhbyBiYW5jbyBkZSBkYWRvcy4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBzZXREYXRhU291cmNlKERhdGFTb3VyY2UgZHMpCisgICAgeworICAgICAgICB0aGlzLnRlbXBsYXRlID0gbmV3IEpkYmNUZW1wbGF0ZShkcyk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvZm9ybWF0dGVyL2phdmEvU0NSMjU5LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2Zvcm1hdHRlci9qYXZhL1NDUjI1OS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIzNzY1MjYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2Zvcm1hdHRlci9qYXZhL1NDUjI1OS5qYXZhCkBAIC0wLDAgKzEsNiBAQAorY2xhc3MgRm9vIHsKKyAgICB2b2lkIGZvbygpeworICAgICAgaWYgKGEpCisgICAgICAgIGZvbygpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2Zvcm1hdHRlci9qYXZhL1NDUjI1OV9hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9mb3JtYXR0ZXIvamF2YS9TQ1IyNTlfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NmJlMzY3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9mb3JtYXR0ZXIvamF2YS9TQ1IyNTlfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDcgQEAKK2NsYXNzIEZvbyB7CisgICAgdm9pZCBmb28oKXsKKyAgICAgICAgaWYgKGEpIHsKKyAgICAgICAgICAgIGZvbygpOworICAgICAgICB9CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvZm9ybWF0dGVyL2phdmEvU0NSMjYwLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2Zvcm1hdHRlci9qYXZhL1NDUjI2MC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcxOWJkNTcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2Zvcm1hdHRlci9qYXZhL1NDUjI2MC5qYXZhCkBAIC0wLDAgKzEsMTYgQEAKK2NsYXNzIFRlc3RGb3JtYXQKK3sKKyAgcHVibGljIHZvaWQgdGVzdChib29sZWFuIGlzQSwgYm9vbGVhbiBpc0IsIGJvb2xlYW4gaXNDKSB7CisgICAgaWYgKGlzQSkKKyAgICAvLyBkb1NvbWV0aGluZ0Vsc2UoMSkKKyAgICAgIGRvU29tZXRoaW5nKDEpOworICAgIGVsc2UgaWYgKGlzQikKKyAgICAvLyBkb1NvbWV0aGluZ0Vsc2UoMikKKyAgICAgIGRvU29tZXRoaW5nKDIpOworICAgIGVsc2UgaWYgKGlzQykKKyAgICAvLyBkb1NvbWV0aGluZ0Vsc2UoMykKKyAgICAgIGRvU29tZXRoaW5nKDMpOworCisgIH0KKworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvZm9ybWF0dGVyL2phdmEvU0NSMjYwX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2Zvcm1hdHRlci9qYXZhL1NDUjI2MF9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjllMDdmZmMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2Zvcm1hdHRlci9qYXZhL1NDUjI2MF9hZnRlci5qYXZhCkBAIC0wLDAgKzEsMTkgQEAKK2NsYXNzIFRlc3RGb3JtYXQgeworICAgIHB1YmxpYyB2b2lkIHRlc3QoYm9vbGVhbiBpc0EsIGJvb2xlYW4gaXNCLCBib29sZWFuIGlzQykgeworICAgICAgICBpZiAoaXNBKQorICAgICAgICAvLyBkb1NvbWV0aGluZ0Vsc2UoMSkKKyAgICAgICAgeworICAgICAgICAgICAgZG9Tb21ldGhpbmcoMSk7CisgICAgICAgIH0gZWxzZSBpZiAoaXNCKQorICAgICAgICAvLyBkb1NvbWV0aGluZ0Vsc2UoMikKKyAgICAgICAgeworICAgICAgICAgICAgZG9Tb21ldGhpbmcoMik7CisgICAgICAgIH0gZWxzZSBpZiAoaXNDKQorICAgICAgICAvLyBkb1NvbWV0aGluZ0Vsc2UoMykKKyAgICAgICAgeworICAgICAgICAgICAgZG9Tb21ldGhpbmcoMyk7CisgICAgICAgIH0KKworICAgIH0KKworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvZm9ybWF0dGVyL2phdmEvU0NSMjc5LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2Zvcm1hdHRlci9qYXZhL1NDUjI3OS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU2ZjEwYmIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2Zvcm1hdHRlci9qYXZhL1NDUjI3OS5qYXZhCkBAIC0wLDAgKzEsNiBAQAorY2xhc3MgRm9vIHsKKyAgICB2b2lkIGZvbygpeworICAgICAgICBpZiAoQUFBID09IEJCQiB8fAorICAgICAgICAgICAgQ0NDKSBjb250aW51ZTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9mb3JtYXR0ZXIvamF2YS9TQ1IyNzlfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvZm9ybWF0dGVyL2phdmEvU0NSMjc5X2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGVlNDc3ZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvZm9ybWF0dGVyL2phdmEvU0NSMjc5X2FmdGVyLmphdmEKQEAgLTAsMCArMSw2IEBACitjbGFzcyBGb28geworICAgIHZvaWQgZm9vKCkgeworICAgICAgICBpZiAoQUFBID09IEJCQiB8fAorICAgICAgICAgICAgQ0NDKSBjb250aW51ZTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9mb3JtYXR0ZXIvamF2YS9TQ1IzOTUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvZm9ybWF0dGVyL2phdmEvU0NSMzk1LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDIwZjc1MwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvZm9ybWF0dGVyL2phdmEvU0NSMzk1LmphdmEKQEAgLTAsMCArMSw1IEBACitwdWJsaWMgY2xhc3MgWSBpbXBsZW1lbnRzIFggeworICAgIHB1YmxpYyB2b2lkIGRvU29tZXRoaW5nKCkgLy8gdGhpcyBkb2VzIHNvbWV0aGluZworICAgIHsgCisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvZm9ybWF0dGVyL2phdmEvU0NSMzk1X2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2Zvcm1hdHRlci9qYXZhL1NDUjM5NV9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhiNzhkYmYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2Zvcm1hdHRlci9qYXZhL1NDUjM5NV9hZnRlci5qYXZhCkBAIC0wLDAgKzEsNSBAQAorcHVibGljIGNsYXNzIFkgaW1wbGVtZW50cyBYIHsKKyAgICBwdWJsaWMgdm9pZCBkb1NvbWV0aGluZygpIC8vIHRoaXMgZG9lcyBzb21ldGhpbmcKKyAgICB7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvZm9ybWF0dGVyL2phdmEvU0NSNDI5LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2Zvcm1hdHRlci9qYXZhL1NDUjQyOS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY3ODM1ODUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2Zvcm1hdHRlci9qYXZhL1NDUjQyOS5qYXZhCkBAIC0wLDAgKzEsMzIgQEAKK2NsYXNzIEZvbyB7CisKKworCisKKworCisgICAgdm9pZCBmb28oKSB7CisKKworCisKKworICAgICAgICBpbnQgaSA9IDA7CisKKworCisKKworICAgICAgICBpbnQgaiA9IDA7CisKKworCisKKworICAgIH0KKworCisKKworCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9mb3JtYXR0ZXIvamF2YS9TQ1I0MjlfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvZm9ybWF0dGVyL2phdmEvU0NSNDI5X2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2ViNjJhZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvZm9ybWF0dGVyL2phdmEvU0NSNDI5X2FmdGVyLmphdmEKQEAgLTAsMCArMSwxNiBAQAorY2xhc3MgRm9vIHsKKworCisgICAgdm9pZCBmb28oKSB7CisKKworICAgICAgICBpbnQgaSA9IDA7CisKKworICAgICAgICBpbnQgaiA9IDA7CisKKworICAgIH0KKworCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9mb3JtYXR0ZXIvamF2YS9TQ1I1MDEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvZm9ybWF0dGVyL2phdmEvU0NSNTAxLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDFjYjdiOQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvZm9ybWF0dGVyL2phdmEvU0NSNTAxLmphdmEKQEAgLTAsMCArMSwxMyBAQAorY2xhc3MgQSB7CisvL2NvbW1lbnQxCit2b2lkIG1ldGhvZCgpCisvL2NvbW1lbnQyCit7CitpZiAoYSkKKy8vY29tbWVudDMKK3sKKy8vY29tbWVudDQKK30KKy8vY29tbWVudDUKK30KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2Zvcm1hdHRlci9qYXZhL1NDUjUwMV9hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9mb3JtYXR0ZXIvamF2YS9TQ1I1MDFfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZmNiZDk3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9mb3JtYXR0ZXIvamF2YS9TQ1I1MDFfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDEzIEBACitjbGFzcyBBIHsKKyAgICAvL2NvbW1lbnQxCisgICAgdm9pZCBtZXRob2QoKQorLy9jb21tZW50MgorICAgIHsKKyAgICAgICAgaWYgKGEpCisvL2NvbW1lbnQzCisgICAgICAgIHsKKy8vY29tbWVudDQKKyAgICAgICAgfQorLy9jb21tZW50NQorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2Zvcm1hdHRlci9qYXZhL1NDUjU0OC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9mb3JtYXR0ZXIvamF2YS9TQ1I1NDguamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYWNiZWQyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9mb3JtYXR0ZXIvamF2YS9TQ1I1NDguamF2YQpAQCAtMCwwICsxLDggQEAKK2NsYXNzIEZvbyB7CisgIHB1YmxpYyB2b2lkIGZvbygpeworICAgIHJldHVybiBfc3RhdHVzID09IEVuaGFuY2VkTWVtYmVyT3JkZXJTdGF0dXMuRURJVElORworfHwgX3N0YXR1cyA9PSBFbmhhbmNlZE1lbWJlck9yZGVyU3RhdHVzLlJFU1VNSU5HCit8fCBfc3RhdHVzID09IEVuaGFuY2VkTWVtYmVyT3JkZXJTdGF0dXMuT1BFTjsgCisKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvZm9ybWF0dGVyL2phdmEvU0NSNTQ4X2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2Zvcm1hdHRlci9qYXZhL1NDUjU0OF9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI3MDYzMTIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2Zvcm1hdHRlci9qYXZhL1NDUjU0OF9hZnRlci5qYXZhCkBAIC0wLDAgKzEsOCBAQAorY2xhc3MgRm9vIHsKKyAgICBwdWJsaWMgdm9pZCBmb28oKSB7CisgICAgICAgIHJldHVybiBfc3RhdHVzID09IEVuaGFuY2VkTWVtYmVyT3JkZXJTdGF0dXMuRURJVElORworICAgICAgICAgIHx8IF9zdGF0dXMgPT0gRW5oYW5jZWRNZW1iZXJPcmRlclN0YXR1cy5SRVNVTUlORworICAgICAgICAgIHx8IF9zdGF0dXMgPT0gRW5oYW5jZWRNZW1iZXJPcmRlclN0YXR1cy5PUEVOOworCisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvZm9ybWF0dGVyL2phdmEvU0NSODc5LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2Zvcm1hdHRlci9qYXZhL1NDUjg3OS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkxMTA4MWYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2Zvcm1hdHRlci9qYXZhL1NDUjg3OS5qYXZhCkBAIC0wLDAgKzEsMjMgQEAKK2NsYXNzIEEgewordm9pZCBmb28oKXsKK3N3aXRjaCAoeCkKK3sKKworY2FzZSAwOgoreyAvLyBkb24ndCB3YW50IHRoZSBicmFjZSBpbmRlbnRlZAorCiticmVhazsKK30KKworCitjYXNlIDE6Cit7CisKK2JyZWFrOworfQorCisKK30gCisKK30KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2Zvcm1hdHRlci9qYXZhL1NDUjg3OV9hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9mb3JtYXR0ZXIvamF2YS9TQ1I4NzlfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZjQyNzMwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9mb3JtYXR0ZXIvamF2YS9TQ1I4NzlfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDIzIEBACitjbGFzcyBBIHsKKyAgICB2b2lkIGZvbygpIHsKKyAgICAgICAgc3dpdGNoICh4KQorICAgICAgICB7CisKKyAgICAgICAgICAgIGNhc2UgMDoKKyAgICAgICAgICAgIHsgLy8gZG9uJ3Qgd2FudCB0aGUgYnJhY2UgaW5kZW50ZWQKKworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCisKKyAgICAgICAgICAgIGNhc2UgMToKKyAgICAgICAgICAgIHsKKworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCisKKyAgICAgICAgfQorCisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvZm9ybWF0dGVyL2phdmEvU0NSOTE1LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2Zvcm1hdHRlci9qYXZhL1NDUjkxNS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI5YTVkNjYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2Zvcm1hdHRlci9qYXZhL1NDUjkxNS5qYXZhCkBAIC0wLDAgKzEsNiBAQAorY2xhc3MgQXsKKyAgICB7CisgICAgICAgIHkgPSB4KysgKyA2OworICAgICAgICB5ID0gNiArICsreDsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9mb3JtYXR0ZXIvamF2YS9TQ1I5MTVfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvZm9ybWF0dGVyL2phdmEvU0NSOTE1X2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDc3M2EwMgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvZm9ybWF0dGVyL2phdmEvU0NSOTE1X2FmdGVyLmphdmEKQEAgLTAsMCArMSw2IEBACitjbGFzcyBBIHsKKyAgICB7CisgICAgICAgIHkgPSB4KysrNjsKKyAgICAgICAgeSA9IDYrICsreDsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9mb3JtYXR0ZXIvamF2YS9TQ1I5NzAuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvZm9ybWF0dGVyL2phdmEvU0NSOTcwLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGZiYmNlMQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvZm9ybWF0dGVyL2phdmEvU0NSOTcwLmphdmEKQEAgLTAsMCArMSw1IEBACitjbGFzcyBGb28geworICAgIHZvaWQgZm9vKGludCBhLCBpbnQgYiwgaW50IGMsIGludCBkKSB0aHJvd3MgRXhjZXB0aW9uLCBSdW50aW1lRXhjZXB0aW9ueworCisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvZm9ybWF0dGVyL2phdmEvU0NSOTcwX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2Zvcm1hdHRlci9qYXZhL1NDUjk3MF9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUzYzMzMDIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2Zvcm1hdHRlci9qYXZhL1NDUjk3MF9hZnRlci5qYXZhCkBAIC0wLDAgKzEsNiBAQAorY2xhc3MgRm9vIHsKKyAgICB2b2lkIGZvbyhpbnQgYSwgaW50IGIsIGludCBjLCBpbnQgZCkKKyAgICAgICAgICAgIHRocm93cyBFeGNlcHRpb24sIFJ1bnRpbWVFeGNlcHRpb24geworCisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvZm9ybWF0dGVyL2phdmEvU3BhY2VzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2Zvcm1hdHRlci9qYXZhL1NwYWNlcy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBiMDFjMzIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2Zvcm1hdHRlci9qYXZhL1NwYWNlcy5qYXZhCkBAIC0wLDAgKzEsOSBAQAorY2xhc3MgRm9veworICAgIHZvaWQgZm9vKGludCBpLGludCBqKXsKKyAgICAgICAgZm9yKGludCBpPTA7aTwxO2krKyl7CisKKyAgICAgICAgfQorICAgICAgICBpZihhKXt9CisgICAgICAgIGZvbygxLDIpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2Zvcm1hdHRlci9qYXZhL1NwYWNlc0JlZm9yZUxCcmFjZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9mb3JtYXR0ZXIvamF2YS9TcGFjZXNCZWZvcmVMQnJhY2UuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYjEyYzY0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9mb3JtYXR0ZXIvamF2YS9TcGFjZXNCZWZvcmVMQnJhY2UuamF2YQpAQCAtMCwwICsxLDM3IEBACitjbGFzcyBGb297CisgICAgdm9pZCBmb28oKXsKKyAgICAgICAgaWYgKGEpeworCisgICAgICAgIH0gZWxzZXsKKworICAgICAgICB9CisgICAgICAgIHdoaWxlIChhKXsKKworICAgICAgICB9CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgMTA7IGkrKyl7CisKKyAgICAgICAgfQorCisgICAgICAgIGRveworCisgICAgICAgIH0gd2hpbGUgKHRydWUpOworCisgICAgICAgIHN3aXRjaCAoYSl7CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICB0cnl7CisKKyAgICAgICAgfSBjYXRjaCAoRSBlKXsKKworICAgICAgICB9IGZpbmFsbHl7CisKKyAgICAgICAgfQorCisgICAgICAgIHN5bmNocm9uaXplZCAodGhpcyl7CisKKyAgICAgICAgfQorCisgICAgICAgIGludFtdIGkgPSBuZXcgaW50W117MSwgMiwgM307CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvZm9ybWF0dGVyL2phdmEvU3BhY2VzQmVmb3JlTEJyYWNlX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2Zvcm1hdHRlci9qYXZhL1NwYWNlc0JlZm9yZUxCcmFjZV9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQyODcwMWMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2Zvcm1hdHRlci9qYXZhL1NwYWNlc0JlZm9yZUxCcmFjZV9hZnRlci5qYXZhCkBAIC0wLDAgKzEsMzcgQEAKK2NsYXNzIEZvbyB7CisgICAgdm9pZCBmb28oKSB7CisgICAgICAgIGlmIChhKSB7CisKKyAgICAgICAgfSBlbHNlIHsKKworICAgICAgICB9CisgICAgICAgIHdoaWxlIChhKSB7CisKKyAgICAgICAgfQorICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IDEwOyBpKyspIHsKKworICAgICAgICB9CisKKyAgICAgICAgZG8geworCisgICAgICAgIH0gd2hpbGUgKHRydWUpOworCisgICAgICAgIHN3aXRjaCAoYSkgeworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgdHJ5IHsKKworICAgICAgICB9IGNhdGNoIChFIGUpIHsKKworICAgICAgICB9IGZpbmFsbHkgeworCisgICAgICAgIH0KKworICAgICAgICBzeW5jaHJvbml6ZWQgKHRoaXMpIHsKKworICAgICAgICB9CisKKyAgICAgICAgaW50W10gaSA9IG5ldyBpbnRbXSB7MSwgMiwgM307CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvZm9ybWF0dGVyL2phdmEvU3BhY2VzX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2Zvcm1hdHRlci9qYXZhL1NwYWNlc19hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI3NDQ5ZTQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2Zvcm1hdHRlci9qYXZhL1NwYWNlc19hZnRlci5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKK2NsYXNzIEZvbyB7CisgICAgdm9pZCBmb28gKCBpbnQgaSwgaW50IGogKSB7CisgICAgICAgIGZvciAoIGludCBpID0gMDsgaSA8IDE7IGkrKyApIHsKKworICAgICAgICB9CisgICAgICAgIGlmICggYSApIHsKKyAgICAgICAgfQorICAgICAgICBmb28gKCAxLCAyICk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvZm9ybWF0dGVyL2phdmEvU3dpdGNoLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2Zvcm1hdHRlci9qYXZhL1N3aXRjaC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI1NTdkMzYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2Zvcm1hdHRlci9qYXZhL1N3aXRjaC5qYXZhCkBAIC0wLDAgKzEsMTEgQEAKK2NsYXNzIEZvb3sKKyAgICB2b2lkIGZvbygpeworICAgICAgICAgICAgICAgIHN3aXRjaCAoYSkgeworICAgICAgICAgICAgICAgICAgICBjYXNlIDA6CisgICAgICAgICAgICAgICAgICAgICAgICAgICBkb0Nhc2UwKCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvRGVmYXVsdCgpOworICAgICAgICAgICAgICAgICAgICB9ICAgIAorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2Zvcm1hdHRlci9qYXZhL1N3aXRjaF9hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9mb3JtYXR0ZXIvamF2YS9Td2l0Y2hfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMTQ2NDhhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9mb3JtYXR0ZXIvamF2YS9Td2l0Y2hfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDExIEBACitjbGFzcyBGb28geworICAgIHZvaWQgZm9vKCkgeworICAgICAgICBzd2l0Y2ggKGEpIHsKKyAgICAgICAgICAgIGNhc2UgMDoKKyAgICAgICAgICAgICAgICBkb0Nhc2UwKCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIGRvRGVmYXVsdCgpOworICAgICAgICB9CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvZm9ybWF0dGVyL2phdmEvU3luY2hyb25pemVkQmxvY2suamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvZm9ybWF0dGVyL2phdmEvU3luY2hyb25pemVkQmxvY2suamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xODE5MWI5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9mb3JtYXR0ZXIvamF2YS9TeW5jaHJvbml6ZWRCbG9jay5qYXZhCkBAIC0wLDAgKzEsOSBAQAorY2xhc3MgRm9veworcHVibGljIHZvaWQgZm9vKCl7CitMT0cuYmFyKCk7CitzeW5jaHJvbml6ZWQgKHRoaXMpeworYmFyKCk7CitiYXIoKTsKK30KK30KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2Zvcm1hdHRlci9qYXZhL1N5bmNocm9uaXplZEJsb2NrX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2Zvcm1hdHRlci9qYXZhL1N5bmNocm9uaXplZEJsb2NrX2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2U3ZDY5NjcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2Zvcm1hdHRlci9qYXZhL1N5bmNocm9uaXplZEJsb2NrX2FmdGVyLmphdmEKQEAgLTAsMCArMSw5IEBACitjbGFzcyBGb28geworICAgIHB1YmxpYyB2b2lkIGZvbygpIHsKKyAgICAgICAgTE9HLmJhcigpOworICAgICAgICBzeW5jaHJvbml6ZWQodGhpcyl7CisgICAgICAgICAgICBiYXIoKTsKKyAgICAgICAgICAgIGJhcigpOworICAgICAgICB9CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvZm9ybWF0dGVyL2phdmEvVGVybmFyeUV4cHJlc3Npb24uamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvZm9ybWF0dGVyL2phdmEvVGVybmFyeUV4cHJlc3Npb24uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZmQwNGJjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9mb3JtYXR0ZXIvamF2YS9UZXJuYXJ5RXhwcmVzc2lvbi5qYXZhCkBAIC0wLDAgKzEsOCBAQAorY2xhc3MgRm9veworICAgIHZvaWQgZm9vKCl7CisgICAgICAgICAgICAgICAgICAgIGludCBzb21lVmFyaWFibGUgPSBhID8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeCA6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHk7CisKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9mb3JtYXR0ZXIvamF2YS9UZXJuYXJ5RXhwcmVzc2lvbl9Eb05vdEFsaWduX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2Zvcm1hdHRlci9qYXZhL1Rlcm5hcnlFeHByZXNzaW9uX0RvTm90QWxpZ25fYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYWEwYjUyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9mb3JtYXR0ZXIvamF2YS9UZXJuYXJ5RXhwcmVzc2lvbl9Eb05vdEFsaWduX2FmdGVyLmphdmEKQEAgLTAsMCArMSw4IEBACitjbGFzcyBGb28geworICAgIHZvaWQgZm9vKCkgeworICAgICAgICBpbnQgc29tZVZhcmlhYmxlID0gYSA/CisgICAgICAgICAgICAgICAgeCA6CisgICAgICAgICAgICAgICAgeTsKKworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2Zvcm1hdHRlci9qYXZhL1Rlcm5hcnlFeHByZXNzaW9uX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2Zvcm1hdHRlci9qYXZhL1Rlcm5hcnlFeHByZXNzaW9uX2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODEzNWJjOAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvZm9ybWF0dGVyL2phdmEvVGVybmFyeUV4cHJlc3Npb25fYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDggQEAKK2NsYXNzIEZvbyB7CisgICAgdm9pZCBmb28oKSB7CisgICAgICAgIGludCBzb21lVmFyaWFibGUgPSBhID8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHggOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgeTsKKworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2Zvcm1hdHRlci9qYXZhL1RyeUNhdGNoLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2Zvcm1hdHRlci9qYXZhL1RyeUNhdGNoLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODFkZTM0OQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvZm9ybWF0dGVyL2phdmEvVHJ5Q2F0Y2guamF2YQpAQCAtMCwwICsxLDE2IEBACisgY2xhc3MgQ3sKKyB2b2lkIG1ldGhvZCgpeworICB0cnkgeworICB9IGNhdGNoIChFeGNlcHRpb24gZSl7CisgIGludCBpPTA7CisgfSBjYXRjaCAoRXhjZXB0aW9uIGUpeworIGludCBpPTA7CisgfWNhdGNoIChFeGNlcHRpb24gZSl7CisgaW50IGk9MDsKKyB9Y2F0Y2ggKEV4Y2VwdGlvbiBlKXsKKyBpbnQgaT0wOworIH1jYXRjaCAoRXhjZXB0aW9uIGUpeworIGludCBpPTA7CisgfQorIH0KKyB9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9mb3JtYXR0ZXIvamF2YS9UcnlDYXRjaF9hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9mb3JtYXR0ZXIvamF2YS9UcnlDYXRjaF9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBjNWQ3MDEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2Zvcm1hdHRlci9qYXZhL1RyeUNhdGNoX2FmdGVyLmphdmEKQEAgLTAsMCArMSwxNiBAQAorIGNsYXNzIEN7Cisgdm9pZCBtZXRob2QoKXsKKyAgdHJ5IHsKKyAgfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKKyAgICAgIGludCBpID0gMDsKKyAgfSBjYXRjaCAoRXhjZXB0aW9uIGUpeworIGludCBpPTA7CisgfWNhdGNoIChFeGNlcHRpb24gZSl7CisgaW50IGk9MDsKKyB9Y2F0Y2ggKEV4Y2VwdGlvbiBlKXsKKyBpbnQgaT0wOworIH1jYXRjaCAoRXhjZXB0aW9uIGUpeworIGludCBpPTA7CisgfQorIH0KKyB9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9mb3JtYXR0ZXIvamF2YS9XcmFwQXNzZXJ0aW9uLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2Zvcm1hdHRlci9qYXZhL1dyYXBBc3NlcnRpb24uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZjdjZmQ5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9mb3JtYXR0ZXIvamF2YS9XcmFwQXNzZXJ0aW9uLmphdmEKQEAgLTAsMCArMSw1IEBACitjbGFzcyBGb297CisgICAgcHVibGljIHZvaWQgZm9vKCl7CisgICAgICAgIGFzc2VydEVxdWFscyhtYXAuZ2V0KG5ldyBGaWxlKCJDOlxcUGVyZm9yY2VUZXN0MVxcY3JlYXRlZDIudHh0IikpLCApOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2Zvcm1hdHRlci9qYXZhL1dyYXBBc3NlcnRpb25fYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvZm9ybWF0dGVyL2phdmEvV3JhcEFzc2VydGlvbl9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI5YzMzODgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2Zvcm1hdHRlci9qYXZhL1dyYXBBc3NlcnRpb25fYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDUgQEAKK2NsYXNzIEZvbyB7CisgICAgcHVibGljIHZvaWQgZm9vKCkgeworICAgICAgICBhc3NlcnRFcXVhbHMobWFwLmdldChuZXcgRmlsZSgiQzpcXFBlcmZvcmNlVGVzdDFcXGNyZWF0ZWQyLnR4dCIpKSwgKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9nZW5lcmljczIyL2NvbGxlY3QtMi4yLmphciBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvZ2VuZXJpY3MyMi9jb2xsZWN0LTIuMi5qYXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTQ1M2JiYQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvZ2VuZXJpY3MyMi9jb2xsZWN0LTIuMi5qYXIKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9pbXBsL2JpbmRUb0VsZW1lbnRUZXN0L1JlcGxhY2luZ1R5cGUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvaW1wbC9iaW5kVG9FbGVtZW50VGVzdC9SZXBsYWNpbmdUeXBlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWRiNzBjZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvaW1wbC9iaW5kVG9FbGVtZW50VGVzdC9SZXBsYWNpbmdUeXBlLmphdmEKQEAgLTAsMCArMSw1IEBACitpbXBvcnQgcDEuQTsKKworY2xhc3MgQyB7CisgIDxjYXJldD5JIGkgPSBudWxsOworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9pbXBsL2JpbmRUb0VsZW1lbnRUZXN0L1JlcGxhY2luZ1R5cGUuamF2YS5hZnRlciBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvaW1wbC9iaW5kVG9FbGVtZW50VGVzdC9SZXBsYWNpbmdUeXBlLmphdmEuYWZ0ZXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOThiOGY0NQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvaW1wbC9iaW5kVG9FbGVtZW50VGVzdC9SZXBsYWNpbmdUeXBlLmphdmEuYWZ0ZXIKQEAgLTAsMCArMSw1IEBACitpbXBvcnQgcDEuQTsKKworY2xhc3MgQyB7CisgIHAyLkEgaSA9IG51bGw7Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2ltcGwvYmluZFRvRWxlbWVudFRlc3QvU2luZ2xlQ2xhc3NJbXBvcnQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvaW1wbC9iaW5kVG9FbGVtZW50VGVzdC9TaW5nbGVDbGFzc0ltcG9ydC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFkYjcwY2YKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2ltcGwvYmluZFRvRWxlbWVudFRlc3QvU2luZ2xlQ2xhc3NJbXBvcnQuamF2YQpAQCAtMCwwICsxLDUgQEAKK2ltcG9ydCBwMS5BOworCitjbGFzcyBDIHsKKyAgPGNhcmV0PkkgaSA9IG51bGw7Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2ltcGwvYmluZFRvRWxlbWVudFRlc3QvU2luZ2xlQ2xhc3NJbXBvcnQuamF2YS5hZnRlciBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvaW1wbC9iaW5kVG9FbGVtZW50VGVzdC9TaW5nbGVDbGFzc0ltcG9ydC5qYXZhLmFmdGVyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk4YjhmNDUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2ltcGwvYmluZFRvRWxlbWVudFRlc3QvU2luZ2xlQ2xhc3NJbXBvcnQuamF2YS5hZnRlcgpAQCAtMCwwICsxLDUgQEAKK2ltcG9ydCBwMS5BOworCitjbGFzcyBDIHsKKyAgcDIuQSBpID0gbnVsbDsKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvaW1wbC9iaW5kVG9FbGVtZW50VGVzdC9wcmovcDEvQS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9pbXBsL2JpbmRUb0VsZW1lbnRUZXN0L3Byai9wMS9BLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWVjM2JmZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvaW1wbC9iaW5kVG9FbGVtZW50VGVzdC9wcmovcDEvQS5qYXZhCkBAIC0wLDAgKzEsNCBAQAorcGFja2FnZSBwMTsKKworY2xhc3MgQSB7Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2ltcGwvYmluZFRvRWxlbWVudFRlc3QvcHJqL3AyL0EuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvaW1wbC9iaW5kVG9FbGVtZW50VGVzdC9wcmovcDIvQS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJhOWRjZGEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2ltcGwvYmluZFRvRWxlbWVudFRlc3QvcHJqL3AyL0EuamF2YQpAQCAtMCwwICsxLDQgQEAKK3BhY2thZ2UgcDI7CisKK2NsYXNzIEEgeworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9pbXBsL2NhY2hlLzEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvaW1wbC9jYWNoZS8xLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2Q3MDg1OAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvaW1wbC9jYWNoZS8xLmphdmEKQEAgLTAsMCArMSBAQAorYSBiIGMgLy90b2RvClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9pbXBsL2NhY2hlLzIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvaW1wbC9jYWNoZS8yLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGQwNGE4MwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvaW1wbC9jYWNoZS8yLmphdmEKQEAgLTAsMCArMSwyIEBACitiIGMgZAorLy9uZXd0b2RvClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9pbXBsL2NhY2hlLzMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvaW1wbC9jYWNoZS8zLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTAzM2JlMwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvaW1wbC9jYWNoZS8zLmphdmEKQEAgLTAsMCArMSwzIEBACitjIGQgZQorLy90b2RvCisvL3RvZG8KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2ltcGwvZXh0ZW5kc0JvdW5kTGlzdC9hZGRCb3VuZC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9pbXBsL2V4dGVuZHNCb3VuZExpc3QvYWRkQm91bmQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNjUzZTNjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9pbXBsL2V4dGVuZHNCb3VuZExpc3QvYWRkQm91bmQuamF2YQpAQCAtMCwwICsxLDIgQEAKK2NsYXNzIFg8VD4geworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9pbXBsL2V4dGVuZHNCb3VuZExpc3QvYWRkQm91bmRJbkVuZC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9pbXBsL2V4dGVuZHNCb3VuZExpc3QvYWRkQm91bmRJbkVuZC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM2NDhmMDEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2ltcGwvZXh0ZW5kc0JvdW5kTGlzdC9hZGRCb3VuZEluRW5kLmphdmEKQEAgLTAsMCArMSwyIEBACitjbGFzcyBYIDxUIGV4dGVuZHMgUnVubmFibGUgJiBDb21wYXJlYWJsZT4geworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9pbXBsL2V4dGVuZHNCb3VuZExpc3QvYWRkQm91bmRJbkVuZF9hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9pbXBsL2V4dGVuZHNCb3VuZExpc3QvYWRkQm91bmRJbkVuZF9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAzNzQzM2IKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2ltcGwvZXh0ZW5kc0JvdW5kTGlzdC9hZGRCb3VuZEluRW5kX2FmdGVyLmphdmEKQEAgLTAsMCArMSwyIEBACitjbGFzcyBYIDxUIGV4dGVuZHMgUnVubmFibGUgJiBDb21wYXJlYWJsZSAmIENsb25lYWJsZT4geworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9pbXBsL2V4dGVuZHNCb3VuZExpc3QvYWRkQm91bmRJbkZyb250LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2ltcGwvZXh0ZW5kc0JvdW5kTGlzdC9hZGRCb3VuZEluRnJvbnQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNjQ4ZjAxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9pbXBsL2V4dGVuZHNCb3VuZExpc3QvYWRkQm91bmRJbkZyb250LmphdmEKQEAgLTAsMCArMSwyIEBACitjbGFzcyBYIDxUIGV4dGVuZHMgUnVubmFibGUgJiBDb21wYXJlYWJsZT4geworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9pbXBsL2V4dGVuZHNCb3VuZExpc3QvYWRkQm91bmRJbkZyb250X2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2ltcGwvZXh0ZW5kc0JvdW5kTGlzdC9hZGRCb3VuZEluRnJvbnRfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hOTZmZjY3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9pbXBsL2V4dGVuZHNCb3VuZExpc3QvYWRkQm91bmRJbkZyb250X2FmdGVyLmphdmEKQEAgLTAsMCArMSwyIEBACitjbGFzcyBYIDxUIGV4dGVuZHMgQ2xvbmVhYmxlICYgUnVubmFibGUgJiBDb21wYXJlYWJsZT4geworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9pbXBsL2V4dGVuZHNCb3VuZExpc3QvYWRkQm91bmRJblRoZU1pZGRsZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9pbXBsL2V4dGVuZHNCb3VuZExpc3QvYWRkQm91bmRJblRoZU1pZGRsZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM2NDhmMDEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2ltcGwvZXh0ZW5kc0JvdW5kTGlzdC9hZGRCb3VuZEluVGhlTWlkZGxlLmphdmEKQEAgLTAsMCArMSwyIEBACitjbGFzcyBYIDxUIGV4dGVuZHMgUnVubmFibGUgJiBDb21wYXJlYWJsZT4geworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9pbXBsL2V4dGVuZHNCb3VuZExpc3QvYWRkQm91bmRJblRoZU1pZGRsZV9hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9pbXBsL2V4dGVuZHNCb3VuZExpc3QvYWRkQm91bmRJblRoZU1pZGRsZV9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA2OGViYTIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2ltcGwvZXh0ZW5kc0JvdW5kTGlzdC9hZGRCb3VuZEluVGhlTWlkZGxlX2FmdGVyLmphdmEKQEAgLTAsMCArMSwyIEBACitjbGFzcyBYIDxUIGV4dGVuZHMgUnVubmFibGUgJiBDbG9uZWFibGUgJiBDb21wYXJlYWJsZT4geworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9pbXBsL2V4dGVuZHNCb3VuZExpc3QvYWRkQm91bmRfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvaW1wbC9leHRlbmRzQm91bmRMaXN0L2FkZEJvdW5kX2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWE2MTc1MwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvaW1wbC9leHRlbmRzQm91bmRMaXN0L2FkZEJvdW5kX2FmdGVyLmphdmEKQEAgLTAsMCArMSwyIEBACitjbGFzcyBYPFQgZXh0ZW5kcyBSdW5uYWJsZT4geworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9pbXBsL2V4dGVuZHNCb3VuZExpc3QvcmVtb3ZlQm91bmRGcm9tRW5kLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2ltcGwvZXh0ZW5kc0JvdW5kTGlzdC9yZW1vdmVCb3VuZEZyb21FbmQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYjlhYWZhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9pbXBsL2V4dGVuZHNCb3VuZExpc3QvcmVtb3ZlQm91bmRGcm9tRW5kLmphdmEKQEAgLTAsMCArMSwyIEBACitwdWJsaWMgY2xhc3MgWDxUIGV4dGVuZHMgUnVubmFibGUgJiBDb21wYXJlYWJsZT4geworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9pbXBsL2V4dGVuZHNCb3VuZExpc3QvcmVtb3ZlQm91bmRGcm9tRW5kX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2ltcGwvZXh0ZW5kc0JvdW5kTGlzdC9yZW1vdmVCb3VuZEZyb21FbmRfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40Mjc1NjRjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9pbXBsL2V4dGVuZHNCb3VuZExpc3QvcmVtb3ZlQm91bmRGcm9tRW5kX2FmdGVyLmphdmEKQEAgLTAsMCArMSwyIEBACitwdWJsaWMgY2xhc3MgWDxUIGV4dGVuZHMgUnVubmFibGU+IHsKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvaW1wbC9leHRlbmRzQm91bmRMaXN0L3JlbW92ZUJvdW5kRnJvbUZyb250LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2ltcGwvZXh0ZW5kc0JvdW5kTGlzdC9yZW1vdmVCb3VuZEZyb21Gcm9udC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFiOWFhZmEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2ltcGwvZXh0ZW5kc0JvdW5kTGlzdC9yZW1vdmVCb3VuZEZyb21Gcm9udC5qYXZhCkBAIC0wLDAgKzEsMiBAQAorcHVibGljIGNsYXNzIFg8VCBleHRlbmRzIFJ1bm5hYmxlICYgQ29tcGFyZWFibGU+IHsKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvaW1wbC9leHRlbmRzQm91bmRMaXN0L3JlbW92ZUJvdW5kRnJvbUZyb250X2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2ltcGwvZXh0ZW5kc0JvdW5kTGlzdC9yZW1vdmVCb3VuZEZyb21Gcm9udF9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM0OTYzYTIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2ltcGwvZXh0ZW5kc0JvdW5kTGlzdC9yZW1vdmVCb3VuZEZyb21Gcm9udF9hZnRlci5qYXZhCkBAIC0wLDAgKzEsMiBAQAorcHVibGljIGNsYXNzIFg8VCBleHRlbmRzIENvbXBhcmVhYmxlPiB7Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2ltcGwvZXh0ZW5kc0JvdW5kTGlzdC9yZW1vdmVCb3VuZEZyb21NaWRkbGUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvaW1wbC9leHRlbmRzQm91bmRMaXN0L3JlbW92ZUJvdW5kRnJvbU1pZGRsZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNhNmNlOTM1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9pbXBsL2V4dGVuZHNCb3VuZExpc3QvcmVtb3ZlQm91bmRGcm9tTWlkZGxlLmphdmEKQEAgLTAsMCArMSwyIEBACitwdWJsaWMgY2xhc3MgWDxUIGV4dGVuZHMgUnVubmFibGUgJiBDbG9uZWFibGUgJiBDb21wYXJlYWJsZT4geworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9pbXBsL2V4dGVuZHNCb3VuZExpc3QvcmVtb3ZlQm91bmRGcm9tTWlkZGxlX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2ltcGwvZXh0ZW5kc0JvdW5kTGlzdC9yZW1vdmVCb3VuZEZyb21NaWRkbGVfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYjlhYWZhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9pbXBsL2V4dGVuZHNCb3VuZExpc3QvcmVtb3ZlQm91bmRGcm9tTWlkZGxlX2FmdGVyLmphdmEKQEAgLTAsMCArMSwyIEBACitwdWJsaWMgY2xhc3MgWDxUIGV4dGVuZHMgUnVubmFibGUgJiBDb21wYXJlYWJsZT4geworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9qYXZhL2Nscy9DbGF6ei5jbGFzcyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvamF2YS9jbHMvQ2xhenouY2xhc3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTE3ZWZiZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvamF2YS9jbHMvQ2xhenouY2xhc3MKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9saWJyYXJ5T3JkZXIvbGliMS9jbGFzc2VzL3Rlc3QvQS5jbGFzcyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvbGlicmFyeU9yZGVyL2xpYjEvY2xhc3Nlcy90ZXN0L0EuY2xhc3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjdhYjAwNwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvbGlicmFyeU9yZGVyL2xpYjEvY2xhc3Nlcy90ZXN0L0EuY2xhc3MKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9saWJyYXJ5T3JkZXIvbGliMS9zcmMvdGVzdC9BLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2xpYnJhcnlPcmRlci9saWIxL3NyYy90ZXN0L0EuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42OTFmZTY1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9saWJyYXJ5T3JkZXIvbGliMS9zcmMvdGVzdC9BLmphdmEKQEAgLTAsMCArMSw1IEBACitwYWNrYWdlIHRlc3Q7CitjbGFzcyBBIHsKKyAgdm9pZCBtZXRob2RPZkNsYXNzRnJvbUxpYjEoKSB7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2xpYnJhcnlPcmRlci9saWIyL2NsYXNzZXMvdGVzdC9BLmNsYXNzIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9saWJyYXJ5T3JkZXIvbGliMi9jbGFzc2VzL3Rlc3QvQS5jbGFzcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMWE0NjQwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9saWJyYXJ5T3JkZXIvbGliMi9jbGFzc2VzL3Rlc3QvQS5jbGFzcwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2xpYnJhcnlPcmRlci9saWIyL3NyYy90ZXN0L0EuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvbGlicmFyeU9yZGVyL2xpYjIvc3JjL3Rlc3QvQS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlmNTQ4OTEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL2xpYnJhcnlPcmRlci9saWIyL3NyYy90ZXN0L0EuamF2YQpAQCAtMCwwICsxLDUgQEAKK3BhY2thZ2UgdGVzdDsKK2NsYXNzIEEgeworICB2b2lkIG1ldGhvZE9mQ2xhc3NGcm9tTGliMigpIHsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvbm9ybWFsaXplRGVjbGFyYXRpb24vMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9ub3JtYWxpemVEZWNsYXJhdGlvbi8xLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGUyOGQ0ZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvbm9ybWFsaXplRGVjbGFyYXRpb24vMS5qYXZhCkBAIC0wLDAgKzEsNSBAQAorY2xhc3MgQXsKKyAgICB7CisgICAgICAgIEFBQVtdIDx2YXI+eFtdLCB5LCB6OworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL25vcm1hbGl6ZURlY2xhcmF0aW9uLzFfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvbm9ybWFsaXplRGVjbGFyYXRpb24vMV9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFmMjAzMjgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL25vcm1hbGl6ZURlY2xhcmF0aW9uLzFfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDcgQEAKK2NsYXNzIEF7CisgICAgeworICAgICAgICBBQUFbXVtdIHg7CisgICAgICAgIEFBQVtdIHk7CisgICAgICAgIEFBQVtdIHo7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvbm9ybWFsaXplRGVjbGFyYXRpb24vMi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9ub3JtYWxpemVEZWNsYXJhdGlvbi8yLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzc4MDIwZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvbm9ybWFsaXplRGVjbGFyYXRpb24vMi5qYXZhCkBAIC0wLDAgKzEsNSBAQAorY2xhc3MgQXsKKyAgICB7CisgICAgICAgIEFBQVtdIDx2YXI+eCBbXVtdLCB5LCB6OworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL25vcm1hbGl6ZURlY2xhcmF0aW9uLzJfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvbm9ybWFsaXplRGVjbGFyYXRpb24vMl9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY3MTNkOTMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL25vcm1hbGl6ZURlY2xhcmF0aW9uLzJfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDcgQEAKK2NsYXNzIEF7CisgICAgeworICAgICAgICBBQUFbXVtdW10geCA7CisgICAgICAgIEFBQVtdIHk7CisgICAgICAgIEFBQVtdIHo7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvbm9ybWFsaXplRGVjbGFyYXRpb24vU0NSNjU0OS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9ub3JtYWxpemVEZWNsYXJhdGlvbi9TQ1I2NTQ5LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTQzNTA0ZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvbm9ybWFsaXplRGVjbGFyYXRpb24vU0NSNjU0OS5qYXZhCkBAIC0wLDAgKzEsNSBAQAorY2xhc3MgQXsKKyAgICB7CisgICAgICAgIGxvbmcgPHZhcj54LCB5OyAvLyBjb21tZW50CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvbm9ybWFsaXplRGVjbGFyYXRpb24vU0NSNjU0OV9hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9ub3JtYWxpemVEZWNsYXJhdGlvbi9TQ1I2NTQ5X2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzAyN2U5MwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvbm9ybWFsaXplRGVjbGFyYXRpb24vU0NSNjU0OV9hZnRlci5qYXZhCkBAIC0wLDAgKzEsNiBAQAorY2xhc3MgQXsKKyAgICB7CisgICAgICAgIGxvbmcgeDsgLy8gY29tbWVudAorICAgICAgICBsb25nIHk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvbm9ybWFsaXplRGVjbGFyYXRpb24vU0NSOTQ2Ny5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9ub3JtYWxpemVEZWNsYXJhdGlvbi9TQ1I5NDY3LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzM2NjQ4ZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvbm9ybWFsaXplRGVjbGFyYXRpb24vU0NSOTQ2Ny5qYXZhCkBAIC0wLDAgKzEsNSBAQAorY2xhc3MgQXsKKyAgICB7CisgICAgICAgIGZpbmFsIGludCA8dmFyPmEgPSAxLCBiID0gMiwgYyA9IDM7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvbm9ybWFsaXplRGVjbGFyYXRpb24vU0NSOTQ2N18xLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL25vcm1hbGl6ZURlY2xhcmF0aW9uL1NDUjk0NjdfMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcxOWU1M2QKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL25vcm1hbGl6ZURlY2xhcmF0aW9uL1NDUjk0NjdfMS5qYXZhCkBAIC0wLDAgKzEsMyBAQAorY2xhc3MgQXsKKyAgICBmaW5hbCBpbnQgPHZhcj5hID0gMSwgYiA9IDIsIGMgPSAzOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvbm9ybWFsaXplRGVjbGFyYXRpb24vU0NSOTQ2N18xX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL25vcm1hbGl6ZURlY2xhcmF0aW9uL1NDUjk0NjdfMV9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUxYjJkM2EKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL25vcm1hbGl6ZURlY2xhcmF0aW9uL1NDUjk0NjdfMV9hZnRlci5qYXZhCkBAIC0wLDAgKzEsNSBAQAorY2xhc3MgQXsKKyAgICBmaW5hbCBpbnQgYSA9IDE7CisgICAgZmluYWwgaW50IGIgPSAyOworICAgIGZpbmFsIGludCBjID0gMzsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL25vcm1hbGl6ZURlY2xhcmF0aW9uL1NDUjk0NjdfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvbm9ybWFsaXplRGVjbGFyYXRpb24vU0NSOTQ2N19hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFjYWNhYjYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL25vcm1hbGl6ZURlY2xhcmF0aW9uL1NDUjk0NjdfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDcgQEAKK2NsYXNzIEF7CisgICAgeworICAgICAgICBmaW5hbCBpbnQgYSA9IDE7CisgICAgICAgIGZpbmFsIGludCBiID0gMjsKKyAgICAgICAgZmluYWwgaW50IGMgPSAzOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL29wdGltaXplSW1wb3J0cy9FbXB0eUltcG9ydExpc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvb3B0aW1pemVJbXBvcnRzL0VtcHR5SW1wb3J0TGlzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVkMmU0N2QKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL29wdGltaXplSW1wb3J0cy9FbXB0eUltcG9ydExpc3QuamF2YQpAQCAtMCwwICsxLDUgQEAKK2ltcG9ydCBqYXZhLnV0aWwuTGlzdDsKK2ltcG9ydCBqYXZhLnV0aWwuQXJyYXlMaXN0OworCitjbGFzcyBBIHsKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvb3B0aW1pemVJbXBvcnRzL0VtcHR5SW1wb3J0TGlzdF9hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9vcHRpbWl6ZUltcG9ydHMvRW1wdHlJbXBvcnRMaXN0X2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmUyNDM5YwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvb3B0aW1pemVJbXBvcnRzL0VtcHR5SW1wb3J0TGlzdF9hZnRlci5qYXZhCkBAIC0wLDAgKzEsMiBAQAorY2xhc3MgQSB7Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL29wdGltaXplSW1wb3J0cy9JREVBREVWMTA3MTYuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvb3B0aW1pemVJbXBvcnRzL0lERUFERVYxMDcxNi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJhZjZlNDAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL29wdGltaXplSW1wb3J0cy9JREVBREVWMTA3MTYuamF2YQpAQCAtMCwwICsxLDkgQEAKK2ltcG9ydCBJZGVhQnVnLkFubm87CisKK2NsYXNzIElkZWFCdWcgeworICBAaW50ZXJmYWNlIEFubm8geyB9Cit9CisKK0BBbm5vCitwdWJsaWMgY2xhc3MgSWRlYUJ1Z1VzZXIgZXh0ZW5kcyBJZGVhQnVnIHsKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvb3B0aW1pemVJbXBvcnRzL0lERUFERVYxMDcxNl9hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9vcHRpbWl6ZUltcG9ydHMvSURFQURFVjEwNzE2X2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmFmNmU0MAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvb3B0aW1pemVJbXBvcnRzL0lERUFERVYxMDcxNl9hZnRlci5qYXZhCkBAIC0wLDAgKzEsOSBAQAoraW1wb3J0IElkZWFCdWcuQW5ubzsKKworY2xhc3MgSWRlYUJ1ZyB7CisgIEBpbnRlcmZhY2UgQW5ubyB7IH0KK30KKworQEFubm8KK3B1YmxpYyBjbGFzcyBJZGVhQnVnVXNlciBleHRlbmRzIElkZWFCdWcgeworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9vcHRpbWl6ZUltcG9ydHMvTmV3SW1wb3J0TGlzdElzRW1wdHlBbmRDb21tZW50UHJlc2VydmVkLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL29wdGltaXplSW1wb3J0cy9OZXdJbXBvcnRMaXN0SXNFbXB0eUFuZENvbW1lbnRQcmVzZXJ2ZWQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYmYwZWI4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9vcHRpbWl6ZUltcG9ydHMvTmV3SW1wb3J0TGlzdElzRW1wdHlBbmRDb21tZW50UHJlc2VydmVkLmphdmEKQEAgLTAsMCArMSw2IEBACitpbXBvcnQgamF2YS51dGlsLkxpc3Q7CisvLyBUaGlzIGlzIGEgY29tbWVudAoraW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7CisKK3B1YmxpYyBjbGFzcyBUZXN0IHsKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvb3B0aW1pemVJbXBvcnRzL05ld0ltcG9ydExpc3RJc0VtcHR5QW5kQ29tbWVudFByZXNlcnZlZF9hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9vcHRpbWl6ZUltcG9ydHMvTmV3SW1wb3J0TGlzdElzRW1wdHlBbmRDb21tZW50UHJlc2VydmVkX2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWQ3ZGFiNQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvb3B0aW1pemVJbXBvcnRzL05ld0ltcG9ydExpc3RJc0VtcHR5QW5kQ29tbWVudFByZXNlcnZlZF9hZnRlci5qYXZhCkBAIC0wLDAgKzEsNCBAQAorLy8gVGhpcyBpcyBhIGNvbW1lbnQKKworcHVibGljIGNsYXNzIFRlc3QgeworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9vcHRpbWl6ZUltcG9ydHMvTmV3SW1wb3J0TGlzdElzRW1wdHlBbmRKYXZhRG9jV2l0aEludmFsaWRDb2RlUHJlc2VydmVkLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL29wdGltaXplSW1wb3J0cy9OZXdJbXBvcnRMaXN0SXNFbXB0eUFuZEphdmFEb2NXaXRoSW52YWxpZENvZGVQcmVzZXJ2ZWQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YjU2ZWVmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9vcHRpbWl6ZUltcG9ydHMvTmV3SW1wb3J0TGlzdElzRW1wdHlBbmRKYXZhRG9jV2l0aEludmFsaWRDb2RlUHJlc2VydmVkLmphdmEKQEAgLTAsMCArMSw4IEBACitpbXBvcnQgamF2YS51dGlsLkxpc3Q7CisKKy8qKgorICogQGRlcHJlY2F0ZWQKKyAqLworLworcHVibGljIGNsYXNzIEZvbyAgeworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9vcHRpbWl6ZUltcG9ydHMvTmV3SW1wb3J0TGlzdElzRW1wdHlBbmRKYXZhRG9jV2l0aEludmFsaWRDb2RlUHJlc2VydmVkX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL29wdGltaXplSW1wb3J0cy9OZXdJbXBvcnRMaXN0SXNFbXB0eUFuZEphdmFEb2NXaXRoSW52YWxpZENvZGVQcmVzZXJ2ZWRfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNTQ4NDUzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9vcHRpbWl6ZUltcG9ydHMvTmV3SW1wb3J0TGlzdElzRW1wdHlBbmRKYXZhRG9jV2l0aEludmFsaWRDb2RlUHJlc2VydmVkX2FmdGVyLmphdmEKQEAgLTAsMCArMSw2IEBACisvKioKKyAqIEBkZXByZWNhdGVkCisgKi8KKy8KK3B1YmxpYyBjbGFzcyBGb28gIHsKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvb3B0aW1pemVJbXBvcnRzL1NDUjE4MzY0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL29wdGltaXplSW1wb3J0cy9TQ1IxODM2NC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI5ZGQ2NTgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL29wdGltaXplSW1wb3J0cy9TQ1IxODM2NC5qYXZhCkBAIC0wLDAgKzEsOCBAQAoraW1wb3J0IGphdmEudXRpbC5MaXN0OworCitjbGFzcyBBIHsKKyAgICBCPExpc3Q+IGNyZWF0ZTsKK30KKworaW50ZXJmYWNlIEI8VD4geworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9vcHRpbWl6ZUltcG9ydHMvU0NSMTgzNjRfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvb3B0aW1pemVJbXBvcnRzL1NDUjE4MzY0X2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjlkZDY1OAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvb3B0aW1pemVJbXBvcnRzL1NDUjE4MzY0X2FmdGVyLmphdmEKQEAgLTAsMCArMSw4IEBACitpbXBvcnQgamF2YS51dGlsLkxpc3Q7CisKK2NsYXNzIEEgeworICAgIEI8TGlzdD4gY3JlYXRlOworfQorCitpbnRlcmZhY2UgQjxUPiB7Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL29wdGltaXplSW1wb3J0cy9TQ1I2MTM4LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL29wdGltaXplSW1wb3J0cy9TQ1I2MTM4LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWI5MTliNgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvb3B0aW1pemVJbXBvcnRzL1NDUjYxMzguamF2YQpAQCAtMCwwICsxLDggQEAKK2ltcG9ydCBqYXZheC5zd2luZy4qOworCitjbGFzcyBGb297CisgIHsKKyAgICBKQ29tcG9uZW50IGNvbXBvbmVudDsKKyAgICBjb21wb25lbnQubmV3IEFjY2Vzc2libGVKQ29tcG9uZW50KCk7CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvb3B0aW1pemVJbXBvcnRzL1NDUjYxMzhfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvb3B0aW1pemVJbXBvcnRzL1NDUjYxMzhfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYjkxOWI2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9vcHRpbWl6ZUltcG9ydHMvU0NSNjEzOF9hZnRlci5qYXZhCkBAIC0wLDAgKzEsOCBAQAoraW1wb3J0IGphdmF4LnN3aW5nLio7CisKK2NsYXNzIEZvb3sKKyAgeworICAgIEpDb21wb25lbnQgY29tcG9uZW50OworICAgIGNvbXBvbmVudC5uZXcgQWNjZXNzaWJsZUpDb21wb25lbnQoKTsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9vcHRpbWl6ZUltcG9ydHMvU3RhdGljSW1wb3J0czEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvb3B0aW1pemVJbXBvcnRzL1N0YXRpY0ltcG9ydHMxLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmQzOTRlYQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvb3B0aW1pemVJbXBvcnRzL1N0YXRpY0ltcG9ydHMxLmphdmEKQEAgLTAsMCArMSw4IEBACitpbXBvcnQgamF2YS51dGlsLkxpc3Q7CitpbXBvcnQgc3RhdGljIGphdmEudXRpbC5BcnJheXMuc29ydDsKKworY2xhc3MgRm9vIHsKKyAgeworICAgIHNvcnQobmV3IEludGVnZXJbMF0pOworICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL29wdGltaXplSW1wb3J0cy9TdGF0aWNJbXBvcnRzMV9hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9vcHRpbWl6ZUltcG9ydHMvU3RhdGljSW1wb3J0czFfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZGRmZTYxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9vcHRpbWl6ZUltcG9ydHMvU3RhdGljSW1wb3J0czFfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDcgQEAKK2ltcG9ydCBzdGF0aWMgamF2YS51dGlsLkFycmF5cy5zb3J0OworCitjbGFzcyBGb28geworICB7CisgICAgc29ydChuZXcgSW50ZWdlclswXSk7CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvb3B0aW1pemVJbXBvcnRzL1N0YXRpY0ltcG9ydHNUb09wdGltaXplLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL29wdGltaXplSW1wb3J0cy9TdGF0aWNJbXBvcnRzVG9PcHRpbWl6ZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBmMTdiNGMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL29wdGltaXplSW1wb3J0cy9TdGF0aWNJbXBvcnRzVG9PcHRpbWl6ZS5qYXZhCkBAIC0wLDAgKzEsMTEgQEAKK2ltcG9ydCBqYXZhLnV0aWwuTGlzdDsKK2ltcG9ydCBzdGF0aWMgamF2YS51dGlsLkFycmF5cy5zb3J0OworaW1wb3J0IHN0YXRpYyBqYXZhLnV0aWwuQXJyYXlzLmFzTGlzdDsKK2ltcG9ydCBzdGF0aWMgamF2YS51dGlsLkFycmF5cy5pbnZhbGlkOworaW1wb3J0IHN0YXRpYyBpbnZhbGlkLio7CisKK2NsYXNzIEZvbyB7CisgIHsKKyAgICBzb3J0KG5ldyBJbnRlZ2VyWzBdKTsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9vcHRpbWl6ZUltcG9ydHMvU3RhdGljSW1wb3J0c1RvT3B0aW1pemUyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL29wdGltaXplSW1wb3J0cy9TdGF0aWNJbXBvcnRzVG9PcHRpbWl6ZTIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNTRkOTA3MgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvb3B0aW1pemVJbXBvcnRzL1N0YXRpY0ltcG9ydHNUb09wdGltaXplMi5qYXZhCkBAIC0wLDAgKzEsOSBAQAoraW1wb3J0IGphdmEudXRpbC5MaXN0OworaW1wb3J0IHN0YXRpYyBqYXZhLnV0aWwuQXJyYXlzLnNvcnQ7CitpbXBvcnQgc3RhdGljIGludmFsaWQuKjsKKworY2xhc3MgRm9vIHsKKyAgeworICAgIHNvcnQobmV3IGxvbmdbMF0pOworICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL29wdGltaXplSW1wb3J0cy9TdGF0aWNJbXBvcnRzVG9PcHRpbWl6ZTJfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvb3B0aW1pemVJbXBvcnRzL1N0YXRpY0ltcG9ydHNUb09wdGltaXplMl9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEwNWEzN2QKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL29wdGltaXplSW1wb3J0cy9TdGF0aWNJbXBvcnRzVG9PcHRpbWl6ZTJfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDcgQEAKK2ltcG9ydCBzdGF0aWMgamF2YS51dGlsLkFycmF5cy5zb3J0OworCitjbGFzcyBGb28geworICB7CisgICAgc29ydChuZXcgbG9uZ1swXSk7CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvb3B0aW1pemVJbXBvcnRzL1N0YXRpY0ltcG9ydHNUb09wdGltaXplTWl4ZWQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvb3B0aW1pemVJbXBvcnRzL1N0YXRpY0ltcG9ydHNUb09wdGltaXplTWl4ZWQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iOWYxYzc3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9vcHRpbWl6ZUltcG9ydHMvU3RhdGljSW1wb3J0c1RvT3B0aW1pemVNaXhlZC5qYXZhCkBAIC0wLDAgKzEsNDEgQEAKK3BhY2thZ2UgZXhhbXBsZTsKKworaW1wb3J0IHN0YXRpYyBqYXZhLmxhbmcuTWF0aC5jb3M7CitpbXBvcnQgc3RhdGljIGphdmEubGFuZy5NYXRoLnNpbjsKK2ltcG9ydCBleGFtcGxlLkltcG9ydGVkQ2xhc3MuSTE7CitpbXBvcnQgZXhhbXBsZS5JbXBvcnRlZENsYXNzLkkxQTsKK2ltcG9ydCBzdGF0aWMgZXhhbXBsZS5JbXBvcnRlZENsYXNzLkJBWlouRTE7CitpbXBvcnQgc3RhdGljIGV4YW1wbGUuSW1wb3J0ZWRDbGFzcy5WOworaW1wb3J0IHN0YXRpYyBleGFtcGxlLkltcG9ydGVkQ2xhc3MuRk9POworaW1wb3J0IGV4YW1wbGUuSW1wb3J0ZWRDbGFzcy5CQVI7CisKK3B1YmxpYyBjbGFzcyBNeVRlc3QgeworICAgIHByb3RlY3RlZCBNeVRlc3QoKSB7CisgICAgICAgIHN1cGVyKCk7CisgICAgICAgIFN0cmluZyBheiA9IEJBUi5BWiArIFY7CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihGT08pOworICAgIH0KK30KKworY2xhc3MgSW1wb3J0ZWRDbGFzcyB7CisgICAgcHVibGljIHN0YXRpYyBTdHJpbmcgViA9ICIiOworCisgICAgcHVibGljIHN0YXRpYyBlbnVtIEkxIHsKKyAgICAgICAgRTE7CisgICAgfQorICAgIHB1YmxpYyBzdGF0aWMgZW51bSBJMUEgeworICAgICAgICBFMTsKKyAgICB9CisKKyAgICBwdWJsaWMgc3RhdGljIGVudW0gQkFSIHsKKyAgICAgICAgRTEsIEFaOworICAgIH0KKworICAgIHB1YmxpYyBzdGF0aWMgU3RyaW5nIEZPTyA9ICIiOworCisgICAgcHVibGljIHN0YXRpYyBlbnVtIEJBWlogeworICAgICAgICBFMTsKKyAgICB9CisKKworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9vcHRpbWl6ZUltcG9ydHMvU3RhdGljSW1wb3J0c1RvT3B0aW1pemVNaXhlZF9hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9vcHRpbWl6ZUltcG9ydHMvU3RhdGljSW1wb3J0c1RvT3B0aW1pemVNaXhlZF9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQxOGEzNDQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL29wdGltaXplSW1wb3J0cy9TdGF0aWNJbXBvcnRzVG9PcHRpbWl6ZU1peGVkX2FmdGVyLmphdmEKQEAgLTAsMCArMSwzNyBAQAorcGFja2FnZSBleGFtcGxlOworCitpbXBvcnQgZXhhbXBsZS5JbXBvcnRlZENsYXNzLkJBUjsKKworaW1wb3J0IHN0YXRpYyBleGFtcGxlLkltcG9ydGVkQ2xhc3MuRk9POworaW1wb3J0IHN0YXRpYyBleGFtcGxlLkltcG9ydGVkQ2xhc3MuVjsKKworcHVibGljIGNsYXNzIE15VGVzdCB7CisgICAgcHJvdGVjdGVkIE15VGVzdCgpIHsKKyAgICAgICAgc3VwZXIoKTsKKyAgICAgICAgU3RyaW5nIGF6ID0gQkFSLkFaICsgVjsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKEZPTyk7CisgICAgfQorfQorCitjbGFzcyBJbXBvcnRlZENsYXNzIHsKKyAgICBwdWJsaWMgc3RhdGljIFN0cmluZyBWID0gIiI7CisKKyAgICBwdWJsaWMgc3RhdGljIGVudW0gSTEgeworICAgICAgICBFMTsKKyAgICB9CisgICAgcHVibGljIHN0YXRpYyBlbnVtIEkxQSB7CisgICAgICAgIEUxOworICAgIH0KKworICAgIHB1YmxpYyBzdGF0aWMgZW51bSBCQVIgeworICAgICAgICBFMSwgQVo7CisgICAgfQorCisgICAgcHVibGljIHN0YXRpYyBTdHJpbmcgRk9PID0gIiI7CisKKyAgICBwdWJsaWMgc3RhdGljIGVudW0gQkFaWiB7CisgICAgICAgIEUxOworICAgIH0KKworCit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL29wdGltaXplSW1wb3J0cy9TdGF0aWNJbXBvcnRzVG9PcHRpbWl6ZV9hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9vcHRpbWl6ZUltcG9ydHMvU3RhdGljSW1wb3J0c1RvT3B0aW1pemVfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZGRmZTYxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9vcHRpbWl6ZUltcG9ydHMvU3RhdGljSW1wb3J0c1RvT3B0aW1pemVfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDcgQEAKK2ltcG9ydCBzdGF0aWMgamF2YS51dGlsLkFycmF5cy5zb3J0OworCitjbGFzcyBGb28geworICB7CisgICAgc29ydChuZXcgSW50ZWdlclswXSk7CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvb3B0aW1pemVJbXBvcnRzL1VucmVzb2x2ZWRJbXBvcnRzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL29wdGltaXplSW1wb3J0cy9VbnJlc29sdmVkSW1wb3J0cy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMyMWVkOTcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL29wdGltaXplSW1wb3J0cy9VbnJlc29sdmVkSW1wb3J0cy5qYXZhCkBAIC0wLDAgKzEsMTEgQEAKK2ltcG9ydCB4eHh4LmRkZDsKK2ltcG9ydCBjb20uWFhYOworaW1wb3J0IHl5eS5jb20uKjsKK2ltcG9ydCBzdGF0aWMgenp6Lnl5eS5jb20uQUFBLio7CitpbXBvcnQgc3RhdGljIHp6ei55eXkuY29tLkJCQjsKKworY2xhc3MgRm9vIHsKKyAgeworCisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvb3B0aW1pemVJbXBvcnRzL1VucmVzb2x2ZWRJbXBvcnRzMi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9vcHRpbWl6ZUltcG9ydHMvVW5yZXNvbHZlZEltcG9ydHMyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWZmZTc0MAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvb3B0aW1pemVJbXBvcnRzL1VucmVzb2x2ZWRJbXBvcnRzMi5qYXZhCkBAIC0wLDAgKzEsMTIgQEAKK2ltcG9ydCB4eHh4LmRkZDsKK2ltcG9ydCBjb20uWFhYOworaW1wb3J0IHl5eS5jb20uKjsKK2ltcG9ydCBzdGF0aWMgenp6Lnl5eS5jb20uQUFBLio7CitpbXBvcnQgc3RhdGljIHp6ei55eXkuY29tLkJCQjsKKworY2xhc3MgRm9vIHsKKyAgeworICAgIC8vIG1heWJlIGl0J3MgZnJvbSB5eXkuY29tLioKKyAgICBaWlogeiA9IG51bGw7CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvb3B0aW1pemVJbXBvcnRzL1VucmVzb2x2ZWRJbXBvcnRzMl9hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9vcHRpbWl6ZUltcG9ydHMvVW5yZXNvbHZlZEltcG9ydHMyX2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGU5ODY2MwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvb3B0aW1pemVJbXBvcnRzL1VucmVzb2x2ZWRJbXBvcnRzMl9hZnRlci5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKK2ltcG9ydCB5eXkuY29tLio7CisKK2ltcG9ydCBzdGF0aWMgenp6Lnl5eS5jb20uQUFBLio7CisKK2NsYXNzIEZvbyB7CisgIHsKKyAgICAvLyBtYXliZSBpdCdzIGZyb20geXl5LmNvbS4qCisgICAgWlpaIHogPSBudWxsOworICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL29wdGltaXplSW1wb3J0cy9VbnJlc29sdmVkSW1wb3J0c19hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9vcHRpbWl6ZUltcG9ydHMvVW5yZXNvbHZlZEltcG9ydHNfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYTBjY2I4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9vcHRpbWl6ZUltcG9ydHMvVW5yZXNvbHZlZEltcG9ydHNfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDUgQEAKK2NsYXNzIEZvbyB7CisgIHsKKworICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2Fubm90YXRpb25QYXJzaW5nL2Fubm90YXRpb24vQXJyYXkuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvYW5ub3RhdGlvblBhcnNpbmcvYW5ub3RhdGlvbi9BcnJheS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjllMWUyOTUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2Fubm90YXRpb25QYXJzaW5nL2Fubm90YXRpb24vQXJyYXkuamF2YQpAQCAtMCwwICsxIEBACitARW5kb3JzZXJzKHsiQ2hpbGRyZW4iLCAiVW5zY3J1cHVsb3VzIGRlbnRpc2l0cyJ9KSBwdWJsaWMgY2xhc3MgTG9sbGlsb3Age30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2Fubm90YXRpb25QYXJzaW5nL2Fubm90YXRpb24vQXJyYXkudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9hbm5vdGF0aW9uUGFyc2luZy9hbm5vdGF0aW9uL0FycmF5LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45N2VlOGVlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9hbm5vdGF0aW9uUGFyc2luZy9hbm5vdGF0aW9uL0FycmF5LnR4dApAQCAtMCwwICsxLDM5IEBACitQc2lKYXZhRmlsZTpBcnJheS5qYXZhCisgIFBzaUltcG9ydExpc3QKKyAgICA8ZW1wdHkgbGlzdD4KKyAgUHNpQ2xhc3M6TG9sbGlsb3AKKyAgICBQc2lNb2RpZmllckxpc3Q6QEVuZG9yc2Vycyh7IkNoaWxkcmVuIiwgIlVuc2NydXB1bG91cyBkZW50aXNpdHMifSkgcHVibGljCisgICAgICBQc2lBbm5vdGF0aW9uCisgICAgICAgIFBzaUphdmFUb2tlbjpBVCgnQCcpCisgICAgICAgIFBzaUphdmFDb2RlUmVmZXJlbmNlRWxlbWVudDpFbmRvcnNlcnMKKyAgICAgICAgICBQc2lJZGVudGlmaWVyOkVuZG9yc2VycygnRW5kb3JzZXJzJykKKyAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgUHNpQW5ub3RhdGlvblBhcmFtZXRlckxpc3QKKyAgICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICAgIFBzaU5hbWVWYWx1ZVBhaXIKKyAgICAgICAgICAgIFBzaUFycmF5SW5pdGlhbGl6ZXJNZW1iZXJWYWx1ZTp7IkNoaWxkcmVuIiwgIlVuc2NydXB1bG91cyBkZW50aXNpdHMifQorICAgICAgICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgICAgICAgUHNpTGl0ZXJhbEV4cHJlc3Npb246IkNoaWxkcmVuIgorICAgICAgICAgICAgICAgIFBzaUphdmFUb2tlbjpTVFJJTkdfTElURVJBTCgnIkNoaWxkcmVuIicpCisgICAgICAgICAgICAgIFBzaUphdmFUb2tlbjpDT01NQSgnLCcpCisgICAgICAgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICAgICAgICBQc2lMaXRlcmFsRXhwcmVzc2lvbjoiVW5zY3J1cHVsb3VzIGRlbnRpc2l0cyIKKyAgICAgICAgICAgICAgICBQc2lKYXZhVG9rZW46U1RSSU5HX0xJVEVSQUwoJyJVbnNjcnVwdWxvdXMgZGVudGlzaXRzIicpCisgICAgICAgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUtleXdvcmQ6cHVibGljKCdwdWJsaWMnKQorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUtleXdvcmQ6Y2xhc3MoJ2NsYXNzJykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lJZGVudGlmaWVyOkxvbGxpbG9wKCdMb2xsaWxvcCcpCisgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvYW5ub3RhdGlvblBhcnNpbmcvYW5ub3RhdGlvbi9Db21wbGV4LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2Fubm90YXRpb25QYXJzaW5nL2Fubm90YXRpb24vQ29tcGxleC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg1MzA4MjgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2Fubm90YXRpb25QYXJzaW5nL2Fubm90YXRpb24vQ29tcGxleC5qYXZhCkBAIC0wLDAgKzEsMyBAQAorY2xhc3MgRmFudGFzeSB7CisgIEBBdXRob3IoZmlyc3Q9IkV1Z2VuZSIsIHNlY29uZD0iV2FtcGlyY2hpayIpIHZvaWQgY29tcG9zZSAoKSB7fSAKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2Fubm90YXRpb25QYXJzaW5nL2Fubm90YXRpb24vQ29tcGxleC50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2Fubm90YXRpb25QYXJzaW5nL2Fubm90YXRpb24vQ29tcGxleC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmZkYTRmYwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvYW5ub3RhdGlvblBhcnNpbmcvYW5ub3RhdGlvbi9Db21wbGV4LnR4dApAQCAtMCwwICsxLDYwIEBACitQc2lKYXZhRmlsZTpDb21wbGV4LmphdmEKKyAgUHNpSW1wb3J0TGlzdAorICAgIDxlbXB0eSBsaXN0PgorICBQc2lDbGFzczpGYW50YXN5CisgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpS2V5d29yZDpjbGFzcygnY2xhc3MnKQorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUlkZW50aWZpZXI6RmFudGFzeSgnRmFudGFzeScpCisgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAnKQorICAgIFBzaU1ldGhvZDpjb21wb3NlCisgICAgICBQc2lNb2RpZmllckxpc3Q6QEF1dGhvcihmaXJzdD0iRXVnZW5lIiwgc2Vjb25kPSJXYW1waXJjaGlrIikKKyAgICAgICAgUHNpQW5ub3RhdGlvbgorICAgICAgICAgIFBzaUphdmFUb2tlbjpBVCgnQCcpCisgICAgICAgICAgUHNpSmF2YUNvZGVSZWZlcmVuY2VFbGVtZW50OkF1dGhvcgorICAgICAgICAgICAgUHNpSWRlbnRpZmllcjpBdXRob3IoJ0F1dGhvcicpCisgICAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgIFBzaUFubm90YXRpb25QYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICAgICAgUHNpTmFtZVZhbHVlUGFpcgorICAgICAgICAgICAgICBQc2lJZGVudGlmaWVyOmZpcnN0KCdmaXJzdCcpCisgICAgICAgICAgICAgIFBzaUphdmFUb2tlbjpFUSgnPScpCisgICAgICAgICAgICAgIFBzaUxpdGVyYWxFeHByZXNzaW9uOiJFdWdlbmUiCisgICAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOlNUUklOR19MSVRFUkFMKCciRXVnZW5lIicpCisgICAgICAgICAgICBQc2lKYXZhVG9rZW46Q09NTUEoJywnKQorICAgICAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgICAgICBQc2lOYW1lVmFsdWVQYWlyCisgICAgICAgICAgICAgIFBzaUlkZW50aWZpZXI6c2Vjb25kKCdzZWNvbmQnKQorICAgICAgICAgICAgICBQc2lKYXZhVG9rZW46RVEoJz0nKQorICAgICAgICAgICAgICBQc2lMaXRlcmFsRXhwcmVzc2lvbjoiV2FtcGlyY2hpayIKKyAgICAgICAgICAgICAgICBQc2lKYXZhVG9rZW46U1RSSU5HX0xJVEVSQUwoJyJXYW1waXJjaGlrIicpCisgICAgICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpjb21wb3NlKCdjb21wb3NlJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgXG4nKQorICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvYW5ub3RhdGlvblBhcnNpbmcvYW5ub3RhdGlvbi9FbnVtU21hcnRUeXBlQ29tcGxldGlvbi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9hbm5vdGF0aW9uUGFyc2luZy9hbm5vdGF0aW9uL0VudW1TbWFydFR5cGVDb21wbGV0aW9uLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTdlMGNmMgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvYW5ub3RhdGlvblBhcnNpbmcvYW5ub3RhdGlvbi9FbnVtU21hcnRUeXBlQ29tcGxldGlvbi5qYXZhCkBAIC0wLDAgKzEsOCBAQAorQFByZWxpbWluYXJ5KEEuQgorIykgcHVibGljIGNsYXNzIFRpbWVUcmF2ZWwge30KKworQFByZWxpbWluYXJ5KGE9QS5CCisjKSBwdWJsaWMgY2xhc3MgVGltZVRyYXZlbCB7fQorCitAUHJlbGltaW5hcnkoYT1BLkIKKyMsIGI9YykgcHVibGljIGNsYXNzIFRpbWVUcmF2ZWwge30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2Fubm90YXRpb25QYXJzaW5nL2Fubm90YXRpb24vRW51bVNtYXJ0VHlwZUNvbXBsZXRpb24udHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9hbm5vdGF0aW9uUGFyc2luZy9hbm5vdGF0aW9uL0VudW1TbWFydFR5cGVDb21wbGV0aW9uLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45Y2RhNmIyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9hbm5vdGF0aW9uUGFyc2luZy9hbm5vdGF0aW9uL0VudW1TbWFydFR5cGVDb21wbGV0aW9uLnR4dApAQCAtMCwwICsxLDE0MSBAQAorUHNpSmF2YUZpbGU6RW51bVNtYXJ0VHlwZUNvbXBsZXRpb24uamF2YQorICBQc2lJbXBvcnRMaXN0CisgICAgPGVtcHR5IGxpc3Q+CisgIFBzaUNsYXNzOlRpbWVUcmF2ZWwKKyAgICBQc2lNb2RpZmllckxpc3Q6QFByZWxpbWluYXJ5KEEuQgorIykgcHVibGljCisgICAgICBQc2lBbm5vdGF0aW9uCisgICAgICAgIFBzaUphdmFUb2tlbjpBVCgnQCcpCisgICAgICAgIFBzaUphdmFDb2RlUmVmZXJlbmNlRWxlbWVudDpQcmVsaW1pbmFyeQorICAgICAgICAgIFBzaUlkZW50aWZpZXI6UHJlbGltaW5hcnkoJ1ByZWxpbWluYXJ5JykKKyAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgUHNpQW5ub3RhdGlvblBhcmFtZXRlckxpc3QKKyAgICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICAgIFBzaU5hbWVWYWx1ZVBhaXIKKyAgICAgICAgICAgIFBzaVJlZmVyZW5jZUV4cHJlc3Npb246QS5CCisgICAgICAgICAgICAgIFBzaVJlZmVyZW5jZUV4cHJlc3Npb246QQorICAgICAgICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgICAgICAgIFBzaUlkZW50aWZpZXI6QSgnQScpCisgICAgICAgICAgICAgIFBzaUphdmFUb2tlbjpET1QoJy4nKQorICAgICAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgICAgIFBzaUlkZW50aWZpZXI6QignQicpCisgICAgICAgICAgUHNpRXJyb3JFbGVtZW50OicsJyBvciAnKScgZXhwZWN0ZWQKKyAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuJykKKyAgICAgICAgICBQc2lFbGVtZW50KEJBRF9DSEFSQUNURVIpKCcjJykKKyAgICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lLZXl3b3JkOnB1YmxpYygncHVibGljJykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lLZXl3b3JkOmNsYXNzKCdjbGFzcycpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSWRlbnRpZmllcjpUaW1lVHJhdmVsKCdUaW1lVHJhdmVsJykKKyAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgIFBzaVdoaXRlU3BhY2UoJ1xuXG4nKQorICBQc2lDbGFzczpUaW1lVHJhdmVsCisgICAgUHNpTW9kaWZpZXJMaXN0OkBQcmVsaW1pbmFyeShhPUEuQgorIykgcHVibGljCisgICAgICBQc2lBbm5vdGF0aW9uCisgICAgICAgIFBzaUphdmFUb2tlbjpBVCgnQCcpCisgICAgICAgIFBzaUphdmFDb2RlUmVmZXJlbmNlRWxlbWVudDpQcmVsaW1pbmFyeQorICAgICAgICAgIFBzaUlkZW50aWZpZXI6UHJlbGltaW5hcnkoJ1ByZWxpbWluYXJ5JykKKyAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgUHNpQW5ub3RhdGlvblBhcmFtZXRlckxpc3QKKyAgICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICAgIFBzaU5hbWVWYWx1ZVBhaXIKKyAgICAgICAgICAgIFBzaUlkZW50aWZpZXI6YSgnYScpCisgICAgICAgICAgICBQc2lKYXZhVG9rZW46RVEoJz0nKQorICAgICAgICAgICAgUHNpUmVmZXJlbmNlRXhwcmVzc2lvbjpBLkIKKyAgICAgICAgICAgICAgUHNpUmVmZXJlbmNlRXhwcmVzc2lvbjpBCisgICAgICAgICAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgICAgICAgUHNpSWRlbnRpZmllcjpBKCdBJykKKyAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOkRPVCgnLicpCisgICAgICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICAgICAgUHNpSWRlbnRpZmllcjpCKCdCJykKKyAgICAgICAgICBQc2lFcnJvckVsZW1lbnQ6JywnIG9yICcpJyBleHBlY3RlZAorICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgUHNpV2hpdGVTcGFjZSgnXG4nKQorICAgICAgICAgIFBzaUVsZW1lbnQoQkFEX0NIQVJBQ1RFUikoJyMnKQorICAgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUtleXdvcmQ6cHVibGljKCdwdWJsaWMnKQorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUtleXdvcmQ6Y2xhc3MoJ2NsYXNzJykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lJZGVudGlmaWVyOlRpbWVUcmF2ZWwoJ1RpbWVUcmF2ZWwnKQorICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgUHNpV2hpdGVTcGFjZSgnXG5cbicpCisgIFBzaUNsYXNzOlRpbWVUcmF2ZWwKKyAgICBQc2lNb2RpZmllckxpc3Q6QFByZWxpbWluYXJ5KGE9QS5CCisjLCBiPWMpIHB1YmxpYworICAgICAgUHNpQW5ub3RhdGlvbgorICAgICAgICBQc2lKYXZhVG9rZW46QVQoJ0AnKQorICAgICAgICBQc2lKYXZhQ29kZVJlZmVyZW5jZUVsZW1lbnQ6UHJlbGltaW5hcnkKKyAgICAgICAgICBQc2lJZGVudGlmaWVyOlByZWxpbWluYXJ5KCdQcmVsaW1pbmFyeScpCisgICAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgIFBzaUFubm90YXRpb25QYXJhbWV0ZXJMaXN0CisgICAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgICBQc2lOYW1lVmFsdWVQYWlyCisgICAgICAgICAgICBQc2lJZGVudGlmaWVyOmEoJ2EnKQorICAgICAgICAgICAgUHNpSmF2YVRva2VuOkVRKCc9JykKKyAgICAgICAgICAgIFBzaVJlZmVyZW5jZUV4cHJlc3Npb246QS5CCisgICAgICAgICAgICAgIFBzaVJlZmVyZW5jZUV4cHJlc3Npb246QQorICAgICAgICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgICAgICAgIFBzaUlkZW50aWZpZXI6QSgnQScpCisgICAgICAgICAgICAgIFBzaUphdmFUb2tlbjpET1QoJy4nKQorICAgICAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgICAgIFBzaUlkZW50aWZpZXI6QignQicpCisgICAgICAgICAgUHNpRXJyb3JFbGVtZW50OicsJyBvciAnKScgZXhwZWN0ZWQKKyAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuJykKKyAgICAgICAgICBQc2lFbGVtZW50KEJBRF9DSEFSQUNURVIpKCcjJykKKyAgICAgICAgICBQc2lKYXZhVG9rZW46Q09NTUEoJywnKQorICAgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICAgIFBzaU5hbWVWYWx1ZVBhaXIKKyAgICAgICAgICAgIFBzaUlkZW50aWZpZXI6YignYicpCisgICAgICAgICAgICBQc2lKYXZhVG9rZW46RVEoJz0nKQorICAgICAgICAgICAgUHNpUmVmZXJlbmNlRXhwcmVzc2lvbjpjCisgICAgICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICAgICAgUHNpSWRlbnRpZmllcjpjKCdjJykKKyAgICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lLZXl3b3JkOnB1YmxpYygncHVibGljJykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lLZXl3b3JkOmNsYXNzKCdjbGFzcycpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSWRlbnRpZmllcjpUaW1lVHJhdmVsKCdUaW1lVHJhdmVsJykKKyAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9hbm5vdGF0aW9uUGFyc2luZy9hbm5vdGF0aW9uL0Vycm9ycy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9hbm5vdGF0aW9uUGFyc2luZy9hbm5vdGF0aW9uL0Vycm9ycy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIwMGMzN2UKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2Fubm90YXRpb25QYXJzaW5nL2Fubm90YXRpb24vRXJyb3JzLmphdmEKQEAgLTAsMCArMSwyIEBACitAQW5uKDxlcnJvciBkZXNjcj0iQ2Fubm90IGZpbmQgbWV0aG9kICd2YWx1ZSciPjA8L2Vycm9yPikgY2xhc3MgRCB7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9hbm5vdGF0aW9uUGFyc2luZy9hbm5vdGF0aW9uL0Vycm9ycy50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2Fubm90YXRpb25QYXJzaW5nL2Fubm90YXRpb24vRXJyb3JzLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZjFlZmRiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9hbm5vdGF0aW9uUGFyc2luZy9hbm5vdGF0aW9uL0Vycm9ycy50eHQKQEAgLTAsMCArMSw3MyBAQAorUHNpSmF2YUZpbGU6RXJyb3JzLmphdmEKKyAgUHNpSW1wb3J0TGlzdAorICAgIDxlbXB0eSBsaXN0PgorICBQc2lDbGFzczpECisgICAgUHNpTW9kaWZpZXJMaXN0OkBBbm4oPGVycm9yIGRlc2NyPSJDYW5ub3QgZmluZCBtZXRob2QgJ3ZhbHVlJyI+MDwvZXJyb3I+KQorICAgICAgUHNpQW5ub3RhdGlvbgorICAgICAgICBQc2lKYXZhVG9rZW46QVQoJ0AnKQorICAgICAgICBQc2lKYXZhQ29kZVJlZmVyZW5jZUVsZW1lbnQ6QW5uCisgICAgICAgICAgUHNpSWRlbnRpZmllcjpBbm4oJ0FubicpCisgICAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgIFBzaUFubm90YXRpb25QYXJhbWV0ZXJMaXN0CisgICAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgICBQc2lOYW1lVmFsdWVQYWlyCisgICAgICAgICAgICBQc2lFcnJvckVsZW1lbnQ6VmFsdWUgZXhwZWN0ZWQKKyAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgUHNpRXJyb3JFbGVtZW50OicsJyBvciAnKScgZXhwZWN0ZWQKKyAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgIFBzaUphdmFUb2tlbjpMVCgnPCcpCisgICAgICAgICAgUHNpTmFtZVZhbHVlUGFpcgorICAgICAgICAgICAgUHNpSWRlbnRpZmllcjplcnJvcignZXJyb3InKQorICAgICAgICAgICAgUHNpRXJyb3JFbGVtZW50Oic9JyBleHBlY3RlZAorICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICAgICAgUHNpUmVmZXJlbmNlRXhwcmVzc2lvbjpkZXNjcgorICAgICAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgICAgIFBzaUlkZW50aWZpZXI6ZGVzY3IoJ2Rlc2NyJykKKyAgICAgICAgICBQc2lFcnJvckVsZW1lbnQ6JywnIG9yICcpJyBleHBlY3RlZAorICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgUHNpSmF2YVRva2VuOkVRKCc9JykKKyAgICAgICAgICBQc2lOYW1lVmFsdWVQYWlyCisgICAgICAgICAgICBQc2lFcnJvckVsZW1lbnQ6SWRlbnRpZmllciBleHBlY3RlZAorICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICAgIFBzaUVycm9yRWxlbWVudDonPScgZXhwZWN0ZWQKKyAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgICBQc2lCaW5hcnlFeHByZXNzaW9uOiJDYW5ub3QgZmluZCBtZXRob2QgJ3ZhbHVlJyI+MDwKKyAgICAgICAgICAgICAgUHNpQmluYXJ5RXhwcmVzc2lvbjoiQ2Fubm90IGZpbmQgbWV0aG9kICd2YWx1ZSciPjAKKyAgICAgICAgICAgICAgICBQc2lMaXRlcmFsRXhwcmVzc2lvbjoiQ2Fubm90IGZpbmQgbWV0aG9kICd2YWx1ZSciCisgICAgICAgICAgICAgICAgICBQc2lKYXZhVG9rZW46U1RSSU5HX0xJVEVSQUwoJyJDYW5ub3QgZmluZCBtZXRob2QgJ3ZhbHVlJyInKQorICAgICAgICAgICAgICAgIFBzaUphdmFUb2tlbjpHVCgnPicpCisgICAgICAgICAgICAgICAgUHNpTGl0ZXJhbEV4cHJlc3Npb246MAorICAgICAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOklOVEVHRVJfTElURVJBTCgnMCcpCisgICAgICAgICAgICAgIFBzaUphdmFUb2tlbjpMVCgnPCcpCisgICAgICAgICAgICAgIFBzaUVycm9yRWxlbWVudDpFeHByZXNzaW9uIGV4cGVjdGVkCisgICAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgUHNpRXJyb3JFbGVtZW50OicsJyBvciAnKScgZXhwZWN0ZWQKKyAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgIFBzaUphdmFUb2tlbjpESVYoJy8nKQorICAgICAgICAgIFBzaU5hbWVWYWx1ZVBhaXIKKyAgICAgICAgICAgIFBzaUlkZW50aWZpZXI6ZXJyb3IoJ2Vycm9yJykKKyAgICAgICAgICAgIFBzaUVycm9yRWxlbWVudDonPScgZXhwZWN0ZWQKKyAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgICBQc2lFcnJvckVsZW1lbnQ6VmFsdWUgZXhwZWN0ZWQKKyAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgUHNpRXJyb3JFbGVtZW50OicsJyBvciAnKScgZXhwZWN0ZWQKKyAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgIFBzaUphdmFUb2tlbjpHVCgnPicpCisgICAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lLZXl3b3JkOmNsYXNzKCdjbGFzcycpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSWRlbnRpZmllcjpEKCdEJykKKyAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4nKQorICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvYW5ub3RhdGlvblBhcnNpbmcvYW5ub3RhdGlvbi9NYXJrZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvYW5ub3RhdGlvblBhcnNpbmcvYW5ub3RhdGlvbi9NYXJrZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZDg2Nzg2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9hbm5vdGF0aW9uUGFyc2luZy9hbm5vdGF0aW9uL01hcmtlci5qYXZhCkBAIC0wLDAgKzEgQEAKK0BQcmVsaW1pbmFyeSBwdWJsaWMgY2xhc3MgVGltZVRyYXZlbCB7fQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvYW5ub3RhdGlvblBhcnNpbmcvYW5ub3RhdGlvbi9NYXJrZXIudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9hbm5vdGF0aW9uUGFyc2luZy9hbm5vdGF0aW9uL01hcmtlci50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTQ4M2M2YwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvYW5ub3RhdGlvblBhcnNpbmcvYW5ub3RhdGlvbi9NYXJrZXIudHh0CkBAIC0wLDAgKzEsMjggQEAKK1BzaUphdmFGaWxlOk1hcmtlci5qYXZhCisgIFBzaUltcG9ydExpc3QKKyAgICA8ZW1wdHkgbGlzdD4KKyAgUHNpQ2xhc3M6VGltZVRyYXZlbAorICAgIFBzaU1vZGlmaWVyTGlzdDpAUHJlbGltaW5hcnkgcHVibGljCisgICAgICBQc2lBbm5vdGF0aW9uCisgICAgICAgIFBzaUphdmFUb2tlbjpBVCgnQCcpCisgICAgICAgIFBzaUphdmFDb2RlUmVmZXJlbmNlRWxlbWVudDpQcmVsaW1pbmFyeQorICAgICAgICAgIFBzaUlkZW50aWZpZXI6UHJlbGltaW5hcnkoJ1ByZWxpbWluYXJ5JykKKyAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgUHNpQW5ub3RhdGlvblBhcmFtZXRlckxpc3QKKyAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpS2V5d29yZDpwdWJsaWMoJ3B1YmxpYycpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpS2V5d29yZDpjbGFzcygnY2xhc3MnKQorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUlkZW50aWZpZXI6VGltZVRyYXZlbCgnVGltZVRyYXZlbCcpCisgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvYW5ub3RhdGlvblBhcnNpbmcvYW5ub3RhdGlvbi9NdWx0aXBsZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9hbm5vdGF0aW9uUGFyc2luZy9hbm5vdGF0aW9uL011bHRpcGxlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGY0N2Y1MjAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2Fubm90YXRpb25QYXJzaW5nL2Fubm90YXRpb24vTXVsdGlwbGUuamF2YQpAQCAtMCwwICsxIEBACitAUHJlbGltaW5hcnkgcHVibGljIEBPdGhlcihuYW1lPXZhbHVlKSBjbGFzcyBUaW1lVHJhdmVsIHt9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9hbm5vdGF0aW9uUGFyc2luZy9hbm5vdGF0aW9uL011bHRpcGxlLnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvYW5ub3RhdGlvblBhcnNpbmcvYW5ub3RhdGlvbi9NdWx0aXBsZS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTQyYTBkYwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvYW5ub3RhdGlvblBhcnNpbmcvYW5ub3RhdGlvbi9NdWx0aXBsZS50eHQKQEAgLTAsMCArMSw0NSBAQAorUHNpSmF2YUZpbGU6TXVsdGlwbGUuamF2YQorICBQc2lJbXBvcnRMaXN0CisgICAgPGVtcHR5IGxpc3Q+CisgIFBzaUNsYXNzOlRpbWVUcmF2ZWwKKyAgICBQc2lNb2RpZmllckxpc3Q6QFByZWxpbWluYXJ5IHB1YmxpYyBAT3RoZXIobmFtZT12YWx1ZSkKKyAgICAgIFBzaUFubm90YXRpb24KKyAgICAgICAgUHNpSmF2YVRva2VuOkFUKCdAJykKKyAgICAgICAgUHNpSmF2YUNvZGVSZWZlcmVuY2VFbGVtZW50OlByZWxpbWluYXJ5CisgICAgICAgICAgUHNpSWRlbnRpZmllcjpQcmVsaW1pbmFyeSgnUHJlbGltaW5hcnknKQorICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICBQc2lBbm5vdGF0aW9uUGFyYW1ldGVyTGlzdAorICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lLZXl3b3JkOnB1YmxpYygncHVibGljJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpQW5ub3RhdGlvbgorICAgICAgICBQc2lKYXZhVG9rZW46QVQoJ0AnKQorICAgICAgICBQc2lKYXZhQ29kZVJlZmVyZW5jZUVsZW1lbnQ6T3RoZXIKKyAgICAgICAgICBQc2lJZGVudGlmaWVyOk90aGVyKCdPdGhlcicpCisgICAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgIFBzaUFubm90YXRpb25QYXJhbWV0ZXJMaXN0CisgICAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgICBQc2lOYW1lVmFsdWVQYWlyCisgICAgICAgICAgICBQc2lJZGVudGlmaWVyOm5hbWUoJ25hbWUnKQorICAgICAgICAgICAgUHNpSmF2YVRva2VuOkVRKCc9JykKKyAgICAgICAgICAgIFBzaVJlZmVyZW5jZUV4cHJlc3Npb246dmFsdWUKKyAgICAgICAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgICAgICBQc2lJZGVudGlmaWVyOnZhbHVlKCd2YWx1ZScpCisgICAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lLZXl3b3JkOmNsYXNzKCdjbGFzcycpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSWRlbnRpZmllcjpUaW1lVHJhdmVsKCdUaW1lVHJhdmVsJykKKyAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9hbm5vdGF0aW9uUGFyc2luZy9hbm5vdGF0aW9uL05lc3RlZC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9hbm5vdGF0aW9uUGFyc2luZy9hbm5vdGF0aW9uL05lc3RlZC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ1MjNiYzMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2Fubm90YXRpb25QYXJzaW5nL2Fubm90YXRpb24vTmVzdGVkLmphdmEKQEAgLTAsMCArMSwzIEBACitjbGFzcyBGYW50YXN5IHsKKyAgQEF1dGhvcihATmFtZShmaXJzdD0iRXVnZW5lIiwgc2Vjb25kPSJXYW1waXJjaGlrIikpIHZvaWQgY29tcG9zZSAoKSB7fSAKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2Fubm90YXRpb25QYXJzaW5nL2Fubm90YXRpb24vTmVzdGVkLnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvYW5ub3RhdGlvblBhcnNpbmcvYW5ub3RhdGlvbi9OZXN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZiYjg5MjYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2Fubm90YXRpb25QYXJzaW5nL2Fubm90YXRpb24vTmVzdGVkLnR4dApAQCAtMCwwICsxLDcwIEBACitQc2lKYXZhRmlsZTpOZXN0ZWQuamF2YQorICBQc2lJbXBvcnRMaXN0CisgICAgPGVtcHR5IGxpc3Q+CisgIFBzaUNsYXNzOkZhbnRhc3kKKyAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lLZXl3b3JkOmNsYXNzKCdjbGFzcycpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSWRlbnRpZmllcjpGYW50YXN5KCdGYW50YXN5JykKKyAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4gICcpCisgICAgUHNpTWV0aG9kOmNvbXBvc2UKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDpAQXV0aG9yKEBOYW1lKGZpcnN0PSJFdWdlbmUiLCBzZWNvbmQ9IldhbXBpcmNoaWsiKSkKKyAgICAgICAgUHNpQW5ub3RhdGlvbgorICAgICAgICAgIFBzaUphdmFUb2tlbjpBVCgnQCcpCisgICAgICAgICAgUHNpSmF2YUNvZGVSZWZlcmVuY2VFbGVtZW50OkF1dGhvcgorICAgICAgICAgICAgUHNpSWRlbnRpZmllcjpBdXRob3IoJ0F1dGhvcicpCisgICAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgIFBzaUFubm90YXRpb25QYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICAgICAgUHNpTmFtZVZhbHVlUGFpcgorICAgICAgICAgICAgICBQc2lBbm5vdGF0aW9uCisgICAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOkFUKCdAJykKKyAgICAgICAgICAgICAgICBQc2lKYXZhQ29kZVJlZmVyZW5jZUVsZW1lbnQ6TmFtZQorICAgICAgICAgICAgICAgICAgUHNpSWRlbnRpZmllcjpOYW1lKCdOYW1lJykKKyAgICAgICAgICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgICAgICAgUHNpQW5ub3RhdGlvblBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgICAgICAgICAgICBQc2lOYW1lVmFsdWVQYWlyCisgICAgICAgICAgICAgICAgICAgIFBzaUlkZW50aWZpZXI6Zmlyc3QoJ2ZpcnN0JykKKyAgICAgICAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOkVRKCc9JykKKyAgICAgICAgICAgICAgICAgICAgUHNpTGl0ZXJhbEV4cHJlc3Npb246IkV1Z2VuZSIKKyAgICAgICAgICAgICAgICAgICAgICBQc2lKYXZhVG9rZW46U1RSSU5HX0xJVEVSQUwoJyJFdWdlbmUiJykKKyAgICAgICAgICAgICAgICAgIFBzaUphdmFUb2tlbjpDT01NQSgnLCcpCisgICAgICAgICAgICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgICAgICAgICAgICAgIFBzaU5hbWVWYWx1ZVBhaXIKKyAgICAgICAgICAgICAgICAgICAgUHNpSWRlbnRpZmllcjpzZWNvbmQoJ3NlY29uZCcpCisgICAgICAgICAgICAgICAgICAgIFBzaUphdmFUb2tlbjpFUSgnPScpCisgICAgICAgICAgICAgICAgICAgIFBzaUxpdGVyYWxFeHByZXNzaW9uOiJXYW1waXJjaGlrIgorICAgICAgICAgICAgICAgICAgICAgIFBzaUphdmFUb2tlbjpTVFJJTkdfTElURVJBTCgnIldhbXBpcmNoaWsiJykKKyAgICAgICAgICAgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpjb21wb3NlKCdjb21wb3NlJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgXG4nKQorICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvYW5ub3RhdGlvblBhcnNpbmcvYW5ub3RhdGlvbi9QYWNrYWdlQW5ub3RhdGlvbi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9hbm5vdGF0aW9uUGFyc2luZy9hbm5vdGF0aW9uL1BhY2thZ2VBbm5vdGF0aW9uLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTJlYzhmZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvYW5ub3RhdGlvblBhcnNpbmcvYW5ub3RhdGlvbi9QYWNrYWdlQW5ub3RhdGlvbi5qYXZhCkBAIC0wLDAgKzEgQEAKK0BBbm5vdGF0aW9uIHBhY2thZ2UgUDsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2Fubm90YXRpb25QYXJzaW5nL2Fubm90YXRpb24vUGFja2FnZUFubm90YXRpb24udHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9hbm5vdGF0aW9uUGFyc2luZy9hbm5vdGF0aW9uL1BhY2thZ2VBbm5vdGF0aW9uLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43Njg4NjJiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9hbm5vdGF0aW9uUGFyc2luZy9hbm5vdGF0aW9uL1BhY2thZ2VBbm5vdGF0aW9uLnR4dApAQCAtMCwwICsxLDIxIEBACitQc2lKYXZhRmlsZTpQYWNrYWdlQW5ub3RhdGlvbi5qYXZhCisgIFBzaVBhY2thZ2VTdGF0ZW1lbnQ6UAorICAgIFBzaU1vZGlmaWVyTGlzdDpAQW5ub3RhdGlvbgorICAgICAgUHNpQW5ub3RhdGlvbgorICAgICAgICBQc2lKYXZhVG9rZW46QVQoJ0AnKQorICAgICAgICBQc2lKYXZhQ29kZVJlZmVyZW5jZUVsZW1lbnQ6QW5ub3RhdGlvbgorICAgICAgICAgIFBzaUlkZW50aWZpZXI6QW5ub3RhdGlvbignQW5ub3RhdGlvbicpCisgICAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgIFBzaUFubm90YXRpb25QYXJhbWV0ZXJMaXN0CisgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpS2V5d29yZDpwYWNrYWdlKCdwYWNrYWdlJykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lKYXZhQ29kZVJlZmVyZW5jZUVsZW1lbnQ6UAorICAgICAgUHNpSWRlbnRpZmllcjpQKCdQJykKKyAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpSmF2YVRva2VuOlNFTUlDT0xPTignOycpCisgIFBzaUltcG9ydExpc3QKKyAgICA8ZW1wdHkgbGlzdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2Fubm90YXRpb25QYXJzaW5nL2Fubm90YXRpb24vUGFyYW1ldGVyQW5ub3RhdGlvbi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9hbm5vdGF0aW9uUGFyc2luZy9hbm5vdGF0aW9uL1BhcmFtZXRlckFubm90YXRpb24uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MTZkZDZkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9hbm5vdGF0aW9uUGFyc2luZy9hbm5vdGF0aW9uL1BhcmFtZXRlckFubm90YXRpb24uamF2YQpAQCAtMCwwICsxLDQgQEAKK3B1YmxpYyBjbGFzcyBBbm5vdGF0ZWQgeworICAgIHZvaWQgZm9vIChAQW5ub3RhdGlvbih2YWx1ZT03NykgaW50IHBhcmFtKSB7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9hbm5vdGF0aW9uUGFyc2luZy9hbm5vdGF0aW9uL1BhcmFtZXRlckFubm90YXRpb24udHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9hbm5vdGF0aW9uUGFyc2luZy9hbm5vdGF0aW9uL1BhcmFtZXRlckFubm90YXRpb24udHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEzNTAwNjIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2Fubm90YXRpb25QYXJzaW5nL2Fubm90YXRpb24vUGFyYW1ldGVyQW5ub3RhdGlvbi50eHQKQEAgLTAsMCArMSw2MiBAQAorUHNpSmF2YUZpbGU6UGFyYW1ldGVyQW5ub3RhdGlvbi5qYXZhCisgIFBzaUltcG9ydExpc3QKKyAgICA8ZW1wdHkgbGlzdD4KKyAgUHNpQ2xhc3M6QW5ub3RhdGVkCisgICAgUHNpTW9kaWZpZXJMaXN0OnB1YmxpYworICAgICAgUHNpS2V5d29yZDpwdWJsaWMoJ3B1YmxpYycpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpS2V5d29yZDpjbGFzcygnY2xhc3MnKQorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUlkZW50aWZpZXI6QW5ub3RhdGVkKCdBbm5vdGF0ZWQnKQorICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgICAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KEBBbm5vdGF0aW9uKHZhbHVlPTc3KSBpbnQgcGFyYW0pCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaVBhcmFtZXRlcjpwYXJhbQorICAgICAgICAgIFBzaU1vZGlmaWVyTGlzdDpAQW5ub3RhdGlvbih2YWx1ZT03NykKKyAgICAgICAgICAgIFBzaUFubm90YXRpb24KKyAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOkFUKCdAJykKKyAgICAgICAgICAgICAgUHNpSmF2YUNvZGVSZWZlcmVuY2VFbGVtZW50OkFubm90YXRpb24KKyAgICAgICAgICAgICAgICBQc2lJZGVudGlmaWVyOkFubm90YXRpb24oJ0Fubm90YXRpb24nKQorICAgICAgICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgICAgICBQc2lBbm5vdGF0aW9uUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgICAgICAgICAgUHNpTmFtZVZhbHVlUGFpcgorICAgICAgICAgICAgICAgICAgUHNpSWRlbnRpZmllcjp2YWx1ZSgndmFsdWUnKQorICAgICAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOkVRKCc9JykKKyAgICAgICAgICAgICAgICAgIFBzaUxpdGVyYWxFeHByZXNzaW9uOjc3CisgICAgICAgICAgICAgICAgICAgIFBzaUphdmFUb2tlbjpJTlRFR0VSX0xJVEVSQUwoJzc3JykKKyAgICAgICAgICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICAgIFBzaVR5cGVFbGVtZW50OmludAorICAgICAgICAgICAgUHNpS2V5d29yZDppbnQoJ2ludCcpCisgICAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgICAgUHNpSWRlbnRpZmllcjpwYXJhbSgncGFyYW0nKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgICAnKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcbicpCisgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9hbm5vdGF0aW9uUGFyc2luZy9hbm5vdGF0aW9uL1BhcmFtZXRlcml6ZWRNZXRob2QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvYW5ub3RhdGlvblBhcnNpbmcvYW5ub3RhdGlvbi9QYXJhbWV0ZXJpemVkTWV0aG9kLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWE1ZjM5MQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvYW5ub3RhdGlvblBhcnNpbmcvYW5ub3RhdGlvbi9QYXJhbWV0ZXJpemVkTWV0aG9kLmphdmEKQEAgLTAsMCArMSw1IEBACitjbGFzcyBUZXN0ZXIgeworICBATnVsbGFibGUgPFQ+IFQgYmFyKCkgeworICAgIHJldHVybiBudWxsOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9hbm5vdGF0aW9uUGFyc2luZy9hbm5vdGF0aW9uL1BhcmFtZXRlcml6ZWRNZXRob2QudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9hbm5vdGF0aW9uUGFyc2luZy9hbm5vdGF0aW9uL1BhcmFtZXRlcml6ZWRNZXRob2QudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU3NmQ3OGMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2Fubm90YXRpb25QYXJzaW5nL2Fubm90YXRpb24vUGFyYW1ldGVyaXplZE1ldGhvZC50eHQKQEAgLTAsMCArMSw2MyBAQAorUHNpSmF2YUZpbGU6UGFyYW1ldGVyaXplZE1ldGhvZC5qYXZhCisgIFBzaUltcG9ydExpc3QKKyAgICA8ZW1wdHkgbGlzdD4KKyAgUHNpQ2xhc3M6VGVzdGVyCisgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpS2V5d29yZDpjbGFzcygnY2xhc3MnKQorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUlkZW50aWZpZXI6VGVzdGVyKCdUZXN0ZXInKQorICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgJykKKyAgICBQc2lNZXRob2Q6YmFyCisgICAgICBQc2lNb2RpZmllckxpc3Q6QE51bGxhYmxlCisgICAgICAgIFBzaUFubm90YXRpb24KKyAgICAgICAgICBQc2lKYXZhVG9rZW46QVQoJ0AnKQorICAgICAgICAgIFBzaUphdmFDb2RlUmVmZXJlbmNlRWxlbWVudDpOdWxsYWJsZQorICAgICAgICAgICAgUHNpSWRlbnRpZmllcjpOdWxsYWJsZSgnTnVsbGFibGUnKQorICAgICAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICBQc2lBbm5vdGF0aW9uUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIFBzaUphdmFUb2tlbjpMVCgnPCcpCisgICAgICAgIFBzaVR5cGVQYXJhbWV0ZXI6VAorICAgICAgICAgIFBzaUlkZW50aWZpZXI6VCgnVCcpCisgICAgICAgICAgUHNpRWxlbWVudChFWFRFTkRTX0JPVU5EX0xJU1QpCisgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgUHNpSmF2YVRva2VuOkdUKCc+JykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpVHlwZUVsZW1lbnQ6VAorICAgICAgICBQc2lKYXZhQ29kZVJlZmVyZW5jZUVsZW1lbnQ6VAorICAgICAgICAgIFBzaUlkZW50aWZpZXI6VCgnVCcpCisgICAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6YmFyKCdiYXInKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgICAnKQorICAgICAgICBQc2lSZXR1cm5TdGF0ZW1lbnQKKyAgICAgICAgICBQc2lLZXl3b3JkOnJldHVybigncmV0dXJuJykKKyAgICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgICAgICBQc2lMaXRlcmFsRXhwcmVzc2lvbjpudWxsCisgICAgICAgICAgICBQc2lKYXZhVG9rZW46TlVMTF9LRVlXT1JEKCdudWxsJykKKyAgICAgICAgICBQc2lKYXZhVG9rZW46U0VNSUNPTE9OKCc7JykKKyAgICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gICcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuJykKKyAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2Fubm90YXRpb25QYXJzaW5nL2Fubm90YXRpb24vUXVhbGlmaWVkQW5ub3RhdGlvbi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9hbm5vdGF0aW9uUGFyc2luZy9hbm5vdGF0aW9uL1F1YWxpZmllZEFubm90YXRpb24uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZWU1ZjI2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9hbm5vdGF0aW9uUGFyc2luZy9hbm5vdGF0aW9uL1F1YWxpZmllZEFubm90YXRpb24uamF2YQpAQCAtMCwwICsxLDMgQEAKK2ludGVyZmFjZSBQc2lFbGVtZW50IHsKKyAgQG9yZy5qZXRicmFpbnMuYW5ub3RhdGlvbnMuTnVsbGFibGUgPFQ+IFQgZ2V0Q29weWFibGVVc2VyRGF0YShLZXk8VD4ga2V5KTsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2Fubm90YXRpb25QYXJzaW5nL2Fubm90YXRpb24vUXVhbGlmaWVkQW5ub3RhdGlvbi50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2Fubm90YXRpb25QYXJzaW5nL2Fubm90YXRpb24vUXVhbGlmaWVkQW5ub3RhdGlvbi50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjdjMTMwOAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvYW5ub3RhdGlvblBhcnNpbmcvYW5ub3RhdGlvbi9RdWFsaWZpZWRBbm5vdGF0aW9uLnR4dApAQCAtMCwwICsxLDgzIEBACitQc2lKYXZhRmlsZTpRdWFsaWZpZWRBbm5vdGF0aW9uLmphdmEKKyAgUHNpSW1wb3J0TGlzdAorICAgIDxlbXB0eSBsaXN0PgorICBQc2lDbGFzczpQc2lFbGVtZW50CisgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpS2V5d29yZDppbnRlcmZhY2UoJ2ludGVyZmFjZScpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSWRlbnRpZmllcjpQc2lFbGVtZW50KCdQc2lFbGVtZW50JykKKyAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4gICcpCisgICAgUHNpTWV0aG9kOmdldENvcHlhYmxlVXNlckRhdGEKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDpAb3JnLmpldGJyYWlucy5hbm5vdGF0aW9ucy5OdWxsYWJsZQorICAgICAgICBQc2lBbm5vdGF0aW9uCisgICAgICAgICAgUHNpSmF2YVRva2VuOkFUKCdAJykKKyAgICAgICAgICBQc2lKYXZhQ29kZVJlZmVyZW5jZUVsZW1lbnQ6b3JnLmpldGJyYWlucy5hbm5vdGF0aW9ucy5OdWxsYWJsZQorICAgICAgICAgICAgUHNpSmF2YUNvZGVSZWZlcmVuY2VFbGVtZW50Om9yZy5qZXRicmFpbnMuYW5ub3RhdGlvbnMKKyAgICAgICAgICAgICAgUHNpSmF2YUNvZGVSZWZlcmVuY2VFbGVtZW50Om9yZy5qZXRicmFpbnMKKyAgICAgICAgICAgICAgICBQc2lKYXZhQ29kZVJlZmVyZW5jZUVsZW1lbnQ6b3JnCisgICAgICAgICAgICAgICAgICBQc2lJZGVudGlmaWVyOm9yZygnb3JnJykKKyAgICAgICAgICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOkRPVCgnLicpCisgICAgICAgICAgICAgICAgUHNpSWRlbnRpZmllcjpqZXRicmFpbnMoJ2pldGJyYWlucycpCisgICAgICAgICAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgICAgIFBzaUphdmFUb2tlbjpET1QoJy4nKQorICAgICAgICAgICAgICBQc2lJZGVudGlmaWVyOmFubm90YXRpb25zKCdhbm5vdGF0aW9ucycpCisgICAgICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICAgIFBzaUphdmFUb2tlbjpET1QoJy4nKQorICAgICAgICAgICAgUHNpSWRlbnRpZmllcjpOdWxsYWJsZSgnTnVsbGFibGUnKQorICAgICAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICBQc2lBbm5vdGF0aW9uUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIFBzaUphdmFUb2tlbjpMVCgnPCcpCisgICAgICAgIFBzaVR5cGVQYXJhbWV0ZXI6VAorICAgICAgICAgIFBzaUlkZW50aWZpZXI6VCgnVCcpCisgICAgICAgICAgUHNpRWxlbWVudChFWFRFTkRTX0JPVU5EX0xJU1QpCisgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgUHNpSmF2YVRva2VuOkdUKCc+JykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpVHlwZUVsZW1lbnQ6VAorICAgICAgICBQc2lKYXZhQ29kZVJlZmVyZW5jZUVsZW1lbnQ6VAorICAgICAgICAgIFBzaUlkZW50aWZpZXI6VCgnVCcpCisgICAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Z2V0Q29weWFibGVVc2VyRGF0YSgnZ2V0Q29weWFibGVVc2VyRGF0YScpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OihLZXk8VD4ga2V5KQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lQYXJhbWV0ZXI6a2V5CisgICAgICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgUHNpVHlwZUVsZW1lbnQ6S2V5PFQ+CisgICAgICAgICAgICBQc2lKYXZhQ29kZVJlZmVyZW5jZUVsZW1lbnQ6S2V5PFQ+CisgICAgICAgICAgICAgIFBzaUlkZW50aWZpZXI6S2V5KCdLZXknKQorICAgICAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOkxUKCc8JykKKyAgICAgICAgICAgICAgICBQc2lUeXBlRWxlbWVudDpUCisgICAgICAgICAgICAgICAgICBQc2lKYXZhQ29kZVJlZmVyZW5jZUVsZW1lbnQ6VAorICAgICAgICAgICAgICAgICAgICBQc2lJZGVudGlmaWVyOlQoJ1QnKQorICAgICAgICAgICAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOkdUKCc+JykKKyAgICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgICAgICBQc2lJZGVudGlmaWVyOmtleSgna2V5JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lKYXZhVG9rZW46U0VNSUNPTE9OKCc7JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcbicpCisgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9hbm5vdGF0aW9uUGFyc2luZy9hbm5vdGF0aW9uL1NpbXBsZTEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvYW5ub3RhdGlvblBhcnNpbmcvYW5ub3RhdGlvbi9TaW1wbGUxLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmE5MGJmNgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvYW5ub3RhdGlvblBhcnNpbmcvYW5ub3RhdGlvbi9TaW1wbGUxLmphdmEKQEAgLTAsMCArMSBAQAorcHVibGljIEBDb3B5cmlnaHQoImJsYS1ibGEtYmxhIikgY2xhc3MgVGltZVRyYXZlbCB7fQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvYW5ub3RhdGlvblBhcnNpbmcvYW5ub3RhdGlvbi9TaW1wbGUxLnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvYW5ub3RhdGlvblBhcnNpbmcvYW5ub3RhdGlvbi9TaW1wbGUxLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MjEzMDE3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9hbm5vdGF0aW9uUGFyc2luZy9hbm5vdGF0aW9uL1NpbXBsZTEudHh0CkBAIC0wLDAgKzEsMzIgQEAKK1BzaUphdmFGaWxlOlNpbXBsZTEuamF2YQorICBQc2lJbXBvcnRMaXN0CisgICAgPGVtcHR5IGxpc3Q+CisgIFBzaUNsYXNzOlRpbWVUcmF2ZWwKKyAgICBQc2lNb2RpZmllckxpc3Q6cHVibGljIEBDb3B5cmlnaHQoImJsYS1ibGEtYmxhIikKKyAgICAgIFBzaUtleXdvcmQ6cHVibGljKCdwdWJsaWMnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lBbm5vdGF0aW9uCisgICAgICAgIFBzaUphdmFUb2tlbjpBVCgnQCcpCisgICAgICAgIFBzaUphdmFDb2RlUmVmZXJlbmNlRWxlbWVudDpDb3B5cmlnaHQKKyAgICAgICAgICBQc2lJZGVudGlmaWVyOkNvcHlyaWdodCgnQ29weXJpZ2h0JykKKyAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgUHNpQW5ub3RhdGlvblBhcmFtZXRlckxpc3QKKyAgICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICAgIFBzaU5hbWVWYWx1ZVBhaXIKKyAgICAgICAgICAgIFBzaUxpdGVyYWxFeHByZXNzaW9uOiJibGEtYmxhLWJsYSIKKyAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOlNUUklOR19MSVRFUkFMKCciYmxhLWJsYS1ibGEiJykKKyAgICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUtleXdvcmQ6Y2xhc3MoJ2NsYXNzJykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lJZGVudGlmaWVyOlRpbWVUcmF2ZWwoJ1RpbWVUcmF2ZWwnKQorICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2Fubm90YXRpb25QYXJzaW5nL2Fubm90YXRpb24vU2ltcGxlMi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9hbm5vdGF0aW9uUGFyc2luZy9hbm5vdGF0aW9uL1NpbXBsZTIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YjMxNmEyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9hbm5vdGF0aW9uUGFyc2luZy9hbm5vdGF0aW9uL1NpbXBsZTIuamF2YQpAQCAtMCwwICsxIEBACitwdWJsaWMgQENvcHlyaWdodCh0cmVhdGVkQXNWYWx1ZSkgY2xhc3MgVGltZVRyYXZlbCB7fQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvYW5ub3RhdGlvblBhcnNpbmcvYW5ub3RhdGlvbi9TaW1wbGUyLnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvYW5ub3RhdGlvblBhcnNpbmcvYW5ub3RhdGlvbi9TaW1wbGUyLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNDIyMTFhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9hbm5vdGF0aW9uUGFyc2luZy9hbm5vdGF0aW9uL1NpbXBsZTIudHh0CkBAIC0wLDAgKzEsMzQgQEAKK1BzaUphdmFGaWxlOlNpbXBsZTIuamF2YQorICBQc2lJbXBvcnRMaXN0CisgICAgPGVtcHR5IGxpc3Q+CisgIFBzaUNsYXNzOlRpbWVUcmF2ZWwKKyAgICBQc2lNb2RpZmllckxpc3Q6cHVibGljIEBDb3B5cmlnaHQodHJlYXRlZEFzVmFsdWUpCisgICAgICBQc2lLZXl3b3JkOnB1YmxpYygncHVibGljJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpQW5ub3RhdGlvbgorICAgICAgICBQc2lKYXZhVG9rZW46QVQoJ0AnKQorICAgICAgICBQc2lKYXZhQ29kZVJlZmVyZW5jZUVsZW1lbnQ6Q29weXJpZ2h0CisgICAgICAgICAgUHNpSWRlbnRpZmllcjpDb3B5cmlnaHQoJ0NvcHlyaWdodCcpCisgICAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgIFBzaUFubm90YXRpb25QYXJhbWV0ZXJMaXN0CisgICAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgICBQc2lOYW1lVmFsdWVQYWlyCisgICAgICAgICAgICBQc2lSZWZlcmVuY2VFeHByZXNzaW9uOnRyZWF0ZWRBc1ZhbHVlCisgICAgICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICAgICAgUHNpSWRlbnRpZmllcjp0cmVhdGVkQXNWYWx1ZSgndHJlYXRlZEFzVmFsdWUnKQorICAgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpS2V5d29yZDpjbGFzcygnY2xhc3MnKQorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUlkZW50aWZpZXI6VGltZVRyYXZlbCgnVGltZVRyYXZlbCcpCisgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvYW5ub3RhdGlvblBhcnNpbmcvYW5ub3RhdGlvbi9UeXBlQW5uby5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9hbm5vdGF0aW9uUGFyc2luZy9hbm5vdGF0aW9uL1R5cGVBbm5vLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2JkN2JmNgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvYW5ub3RhdGlvblBhcnNpbmcvYW5ub3RhdGlvbi9UeXBlQW5uby5qYXZhCkBAIC0wLDAgKzEsOSBAQAorY2xhc3MgQzxARCBUIGV4dGVuZHMgQEYgT2JqZWN0PiBleHRlbmRzIEBGIE9iamVjdCB7CisgIEBGIGludCBARltdIG1ldGhvZGYoKSB0aHJvd3MgQEYgRXhjZXB0aW9uIHsKKyAgICBhID0gdGhpcyBpbnN0YW5jZW9mIEBGIEM7CisgICAgQzxARiBARyBDPiBjID0gbmV3IEBRIEM8QEYgQz4oKTsKKyAgICBjID0gKEBGIE9iamVjdCljOworICAgIENsYXNzIGMgPSBAVEEgU3RyaW5nLmNsYXNzOworICAgIEBGIEMuZmllbGQrKzsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9hbm5vdGF0aW9uUGFyc2luZy9hbm5vdGF0aW9uL1R5cGVBbm5vLnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvYW5ub3RhdGlvblBhcnNpbmcvYW5ub3RhdGlvbi9UeXBlQW5uby50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjE2YTAzYQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvYW5ub3RhdGlvblBhcnNpbmcvYW5ub3RhdGlvbi9UeXBlQW5uby50eHQKQEAgLTAsMCArMSwzMTUgQEAKK1BzaUphdmFGaWxlOlR5cGVBbm5vLmphdmEKKyAgUHNpSW1wb3J0TGlzdAorICAgIDxlbXB0eSBsaXN0PgorICBQc2lDbGFzczpDCisgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpS2V5d29yZDpjbGFzcygnY2xhc3MnKQorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUlkZW50aWZpZXI6QygnQycpCisgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgIFBzaUphdmFUb2tlbjpMVCgnPCcpCisgICAgICBQc2lUeXBlUGFyYW1ldGVyOlQKKyAgICAgICAgUHNpQW5ub3RhdGlvbgorICAgICAgICAgIFBzaUphdmFUb2tlbjpBVCgnQCcpCisgICAgICAgICAgUHNpSmF2YUNvZGVSZWZlcmVuY2VFbGVtZW50OkQKKyAgICAgICAgICAgIFBzaUlkZW50aWZpZXI6RCgnRCcpCisgICAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgIFBzaUFubm90YXRpb25QYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgIFBzaUlkZW50aWZpZXI6VCgnVCcpCisgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICBQc2lFbGVtZW50KEVYVEVORFNfQk9VTkRfTElTVCkKKyAgICAgICAgICBQc2lLZXl3b3JkOmV4dGVuZHMoJ2V4dGVuZHMnKQorICAgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICAgIFBzaUphdmFDb2RlUmVmZXJlbmNlRWxlbWVudDpARiBPYmplY3QKKyAgICAgICAgICAgIFBzaUFubm90YXRpb24KKyAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOkFUKCdAJykKKyAgICAgICAgICAgICAgUHNpSmF2YUNvZGVSZWZlcmVuY2VFbGVtZW50OkYKKyAgICAgICAgICAgICAgICBQc2lJZGVudGlmaWVyOkYoJ0YnKQorICAgICAgICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgICAgICBQc2lBbm5vdGF0aW9uUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgICAgICBQc2lJZGVudGlmaWVyOk9iamVjdCgnT2JqZWN0JykKKyAgICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lKYXZhVG9rZW46R1QoJz4nKQorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIFBzaUtleXdvcmQ6ZXh0ZW5kcygnZXh0ZW5kcycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUphdmFDb2RlUmVmZXJlbmNlRWxlbWVudDpARiBPYmplY3QKKyAgICAgICAgUHNpQW5ub3RhdGlvbgorICAgICAgICAgIFBzaUphdmFUb2tlbjpBVCgnQCcpCisgICAgICAgICAgUHNpSmF2YUNvZGVSZWZlcmVuY2VFbGVtZW50OkYKKyAgICAgICAgICAgIFBzaUlkZW50aWZpZXI6RignRicpCisgICAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgIFBzaUFubm90YXRpb25QYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgIFBzaUlkZW50aWZpZXI6T2JqZWN0KCdPYmplY3QnKQorICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4gICcpCisgICAgUHNpTWV0aG9kOm1ldGhvZGYKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDpARgorICAgICAgICBQc2lBbm5vdGF0aW9uCisgICAgICAgICAgUHNpSmF2YVRva2VuOkFUKCdAJykKKyAgICAgICAgICBQc2lKYXZhQ29kZVJlZmVyZW5jZUVsZW1lbnQ6RgorICAgICAgICAgICAgUHNpSWRlbnRpZmllcjpGKCdGJykKKyAgICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgUHNpQW5ub3RhdGlvblBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaVR5cGVFbGVtZW50OmludCBARltdCisgICAgICAgIFBzaVR5cGVFbGVtZW50OmludAorICAgICAgICAgIFBzaUtleXdvcmQ6aW50KCdpbnQnKQorICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgICAgUHNpQW5ub3RhdGlvbgorICAgICAgICAgIFBzaUphdmFUb2tlbjpBVCgnQCcpCisgICAgICAgICAgUHNpSmF2YUNvZGVSZWZlcmVuY2VFbGVtZW50OkYKKyAgICAgICAgICAgIFBzaUlkZW50aWZpZXI6RignRicpCisgICAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgIFBzaUFubm90YXRpb25QYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDS0VUKCdbJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDS0VUKCddJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjptZXRob2RmKCdtZXRob2RmJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICBQc2lLZXl3b3JkOnRocm93cygndGhyb3dzJykKKyAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgIFBzaUphdmFDb2RlUmVmZXJlbmNlRWxlbWVudDpARiBFeGNlcHRpb24KKyAgICAgICAgICBQc2lBbm5vdGF0aW9uCisgICAgICAgICAgICBQc2lKYXZhVG9rZW46QVQoJ0AnKQorICAgICAgICAgICAgUHNpSmF2YUNvZGVSZWZlcmVuY2VFbGVtZW50OkYKKyAgICAgICAgICAgICAgUHNpSWRlbnRpZmllcjpGKCdGJykKKyAgICAgICAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgICAgUHNpQW5ub3RhdGlvblBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgICAgUHNpSWRlbnRpZmllcjpFeGNlcHRpb24oJ0V4Y2VwdGlvbicpCisgICAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gICAgJykKKyAgICAgICAgUHNpRXhwcmVzc2lvblN0YXRlbWVudAorICAgICAgICAgIFBzaUFzc2lnbm1lbnRFeHByZXNzaW9uOmEgPSB0aGlzIGluc3RhbmNlb2YgQEYgQworICAgICAgICAgICAgUHNpUmVmZXJlbmNlRXhwcmVzc2lvbjphCisgICAgICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICAgICAgUHNpSWRlbnRpZmllcjphKCdhJykKKyAgICAgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICAgICAgUHNpSmF2YVRva2VuOkVRKCc9JykKKyAgICAgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICAgICAgUHNpSW5zdGFuY2VvZkV4cHJlc3Npb246dGhpcyBpbnN0YW5jZW9mIEBGIEMKKyAgICAgICAgICAgICAgUHNpVGhpc0V4cHJlc3Npb246dGhpcworICAgICAgICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgICAgICAgIFBzaUtleXdvcmQ6dGhpcygndGhpcycpCisgICAgICAgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICAgICAgICBQc2lLZXl3b3JkOmluc3RhbmNlb2YoJ2luc3RhbmNlb2YnKQorICAgICAgICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgICAgICAgICAgUHNpVHlwZUVsZW1lbnQ6QEYgQworICAgICAgICAgICAgICAgIFBzaUFubm90YXRpb24KKyAgICAgICAgICAgICAgICAgIFBzaUphdmFUb2tlbjpBVCgnQCcpCisgICAgICAgICAgICAgICAgICBQc2lKYXZhQ29kZVJlZmVyZW5jZUVsZW1lbnQ6RgorICAgICAgICAgICAgICAgICAgICBQc2lJZGVudGlmaWVyOkYoJ0YnKQorICAgICAgICAgICAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgICAgICAgICBQc2lBbm5vdGF0aW9uUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgICAgICAgICAgICBQc2lKYXZhQ29kZVJlZmVyZW5jZUVsZW1lbnQ6QworICAgICAgICAgICAgICAgICAgUHNpSWRlbnRpZmllcjpDKCdDJykKKyAgICAgICAgICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgUHNpSmF2YVRva2VuOlNFTUlDT0xPTignOycpCisgICAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAgICcpCisgICAgICAgIFBzaURlY2xhcmF0aW9uU3RhdGVtZW50CisgICAgICAgICAgUHNpTG9jYWxWYXJpYWJsZTpjCisgICAgICAgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgICAgUHNpVHlwZUVsZW1lbnQ6QzxARiBARyBDPgorICAgICAgICAgICAgICBQc2lKYXZhQ29kZVJlZmVyZW5jZUVsZW1lbnQ6QzxARiBARyBDPgorICAgICAgICAgICAgICAgIFBzaUlkZW50aWZpZXI6QygnQycpCisgICAgICAgICAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOkxUKCc8JykKKyAgICAgICAgICAgICAgICAgIFBzaVR5cGVFbGVtZW50OkBGIEBHIEMKKyAgICAgICAgICAgICAgICAgICAgUHNpQW5ub3RhdGlvbgorICAgICAgICAgICAgICAgICAgICAgIFBzaUphdmFUb2tlbjpBVCgnQCcpCisgICAgICAgICAgICAgICAgICAgICAgUHNpSmF2YUNvZGVSZWZlcmVuY2VFbGVtZW50OkYKKyAgICAgICAgICAgICAgICAgICAgICAgIFBzaUlkZW50aWZpZXI6RignRicpCisgICAgICAgICAgICAgICAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgICAgICAgICAgICAgIFBzaUFubm90YXRpb25QYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgICAgICAgICAgICAgIFBzaUFubm90YXRpb24KKyAgICAgICAgICAgICAgICAgICAgICBQc2lKYXZhVG9rZW46QVQoJ0AnKQorICAgICAgICAgICAgICAgICAgICAgIFBzaUphdmFDb2RlUmVmZXJlbmNlRWxlbWVudDpHCisgICAgICAgICAgICAgICAgICAgICAgICBQc2lJZGVudGlmaWVyOkcoJ0cnKQorICAgICAgICAgICAgICAgICAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgICBQc2lBbm5vdGF0aW9uUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgICAgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICAgICAgICAgICAgICBQc2lKYXZhQ29kZVJlZmVyZW5jZUVsZW1lbnQ6QworICAgICAgICAgICAgICAgICAgICAgIFBzaUlkZW50aWZpZXI6QygnQycpCisgICAgICAgICAgICAgICAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgICAgICAgICBQc2lKYXZhVG9rZW46R1QoJz4nKQorICAgICAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgICAgICBQc2lJZGVudGlmaWVyOmMoJ2MnKQorICAgICAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgICAgICBQc2lKYXZhVG9rZW46RVEoJz0nKQorICAgICAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgICAgICBQc2lOZXdFeHByZXNzaW9uOm5ldyBAUSBDPEBGIEM+KCkKKyAgICAgICAgICAgICAgUHNpS2V5d29yZDpuZXcoJ25ldycpCisgICAgICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgICAgICAgIFBzaUphdmFDb2RlUmVmZXJlbmNlRWxlbWVudDpAUSBDPEBGIEM+CisgICAgICAgICAgICAgICAgUHNpQW5ub3RhdGlvbgorICAgICAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOkFUKCdAJykKKyAgICAgICAgICAgICAgICAgIFBzaUphdmFDb2RlUmVmZXJlbmNlRWxlbWVudDpRCisgICAgICAgICAgICAgICAgICAgIFBzaUlkZW50aWZpZXI6USgnUScpCisgICAgICAgICAgICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICAgICAgICAgIFBzaUFubm90YXRpb25QYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICAgICAgICAgIFBzaUlkZW50aWZpZXI6QygnQycpCisgICAgICAgICAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOkxUKCc8JykKKyAgICAgICAgICAgICAgICAgIFBzaVR5cGVFbGVtZW50OkBGIEMKKyAgICAgICAgICAgICAgICAgICAgUHNpQW5ub3RhdGlvbgorICAgICAgICAgICAgICAgICAgICAgIFBzaUphdmFUb2tlbjpBVCgnQCcpCisgICAgICAgICAgICAgICAgICAgICAgUHNpSmF2YUNvZGVSZWZlcmVuY2VFbGVtZW50OkYKKyAgICAgICAgICAgICAgICAgICAgICAgIFBzaUlkZW50aWZpZXI6RignRicpCisgICAgICAgICAgICAgICAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgICAgICAgICAgICAgIFBzaUFubm90YXRpb25QYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgICAgICAgICAgICAgIFBzaUphdmFDb2RlUmVmZXJlbmNlRWxlbWVudDpDCisgICAgICAgICAgICAgICAgICAgICAgUHNpSWRlbnRpZmllcjpDKCdDJykKKyAgICAgICAgICAgICAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICAgICAgICAgIFBzaUphdmFUb2tlbjpHVCgnPicpCisgICAgICAgICAgICAgIFBzaUV4cHJlc3Npb25MaXN0CisgICAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgICAgICAgUHNpSmF2YVRva2VuOlNFTUlDT0xPTignOycpCisgICAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAgICcpCisgICAgICAgIFBzaUV4cHJlc3Npb25TdGF0ZW1lbnQKKyAgICAgICAgICBQc2lBc3NpZ25tZW50RXhwcmVzc2lvbjpjID0gKEBGIE9iamVjdCljCisgICAgICAgICAgICBQc2lSZWZlcmVuY2VFeHByZXNzaW9uOmMKKyAgICAgICAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgICAgICBQc2lJZGVudGlmaWVyOmMoJ2MnKQorICAgICAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgICAgICBQc2lKYXZhVG9rZW46RVEoJz0nKQorICAgICAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgICAgICBQc2lUeXBlQ2FzdEV4cHJlc3Npb246KEBGIE9iamVjdCljCisgICAgICAgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgICAgICAgIFBzaVR5cGVFbGVtZW50OkBGIE9iamVjdAorICAgICAgICAgICAgICAgIFBzaUFubm90YXRpb24KKyAgICAgICAgICAgICAgICAgIFBzaUphdmFUb2tlbjpBVCgnQCcpCisgICAgICAgICAgICAgICAgICBQc2lKYXZhQ29kZVJlZmVyZW5jZUVsZW1lbnQ6RgorICAgICAgICAgICAgICAgICAgICBQc2lJZGVudGlmaWVyOkYoJ0YnKQorICAgICAgICAgICAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgICAgICAgICBQc2lBbm5vdGF0aW9uUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgICAgICAgICAgICBQc2lKYXZhQ29kZVJlZmVyZW5jZUVsZW1lbnQ6T2JqZWN0CisgICAgICAgICAgICAgICAgICBQc2lJZGVudGlmaWVyOk9iamVjdCgnT2JqZWN0JykKKyAgICAgICAgICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICAgICAgICAgIFBzaVJlZmVyZW5jZUV4cHJlc3Npb246YworICAgICAgICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgICAgICAgIFBzaUlkZW50aWZpZXI6YygnYycpCisgICAgICAgICAgUHNpSmF2YVRva2VuOlNFTUlDT0xPTignOycpCisgICAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAgICcpCisgICAgICAgIFBzaURlY2xhcmF0aW9uU3RhdGVtZW50CisgICAgICAgICAgUHNpTG9jYWxWYXJpYWJsZTpjCisgICAgICAgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgICAgUHNpVHlwZUVsZW1lbnQ6Q2xhc3MKKyAgICAgICAgICAgICAgUHNpSmF2YUNvZGVSZWZlcmVuY2VFbGVtZW50OkNsYXNzCisgICAgICAgICAgICAgICAgUHNpSWRlbnRpZmllcjpDbGFzcygnQ2xhc3MnKQorICAgICAgICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgICAgICBQc2lJZGVudGlmaWVyOmMoJ2MnKQorICAgICAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgICAgICBQc2lKYXZhVG9rZW46RVEoJz0nKQorICAgICAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgICAgICBQc2lDbGFzc09iamVjdEFjY2Vzc0V4cHJlc3Npb246QFRBIFN0cmluZy5jbGFzcworICAgICAgICAgICAgICBQc2lUeXBlRWxlbWVudDpAVEEgU3RyaW5nCisgICAgICAgICAgICAgICAgUHNpQW5ub3RhdGlvbgorICAgICAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOkFUKCdAJykKKyAgICAgICAgICAgICAgICAgIFBzaUphdmFDb2RlUmVmZXJlbmNlRWxlbWVudDpUQQorICAgICAgICAgICAgICAgICAgICBQc2lJZGVudGlmaWVyOlRBKCdUQScpCisgICAgICAgICAgICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICAgICAgICAgIFBzaUFubm90YXRpb25QYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICAgICAgICAgIFBzaUphdmFDb2RlUmVmZXJlbmNlRWxlbWVudDpTdHJpbmcKKyAgICAgICAgICAgICAgICAgIFBzaUlkZW50aWZpZXI6U3RyaW5nKCdTdHJpbmcnKQorICAgICAgICAgICAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOkRPVCgnLicpCisgICAgICAgICAgICAgIFBzaUtleXdvcmQ6Y2xhc3MoJ2NsYXNzJykKKyAgICAgICAgICAgIFBzaUphdmFUb2tlbjpTRU1JQ09MT04oJzsnKQorICAgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgICAnKQorICAgICAgICBQc2lFeHByZXNzaW9uU3RhdGVtZW50CisgICAgICAgICAgUHNpUG9zdGZpeEV4cHJlc3Npb246QEYgQy5maWVsZCsrCisgICAgICAgICAgICBQc2lSZWZlcmVuY2VFeHByZXNzaW9uOkBGIEMuZmllbGQKKyAgICAgICAgICAgICAgUHNpUmVmZXJlbmNlRXhwcmVzc2lvbjpARiBDCisgICAgICAgICAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgICAgICAgUHNpQW5ub3RhdGlvbgorICAgICAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOkFUKCdAJykKKyAgICAgICAgICAgICAgICAgIFBzaUphdmFDb2RlUmVmZXJlbmNlRWxlbWVudDpGCisgICAgICAgICAgICAgICAgICAgIFBzaUlkZW50aWZpZXI6RignRicpCisgICAgICAgICAgICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICAgICAgICAgIFBzaUFubm90YXRpb25QYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICAgICAgICAgIFBzaUlkZW50aWZpZXI6QygnQycpCisgICAgICAgICAgICAgIFBzaUphdmFUb2tlbjpET1QoJy4nKQorICAgICAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgICAgIFBzaUlkZW50aWZpZXI6ZmllbGQoJ2ZpZWxkJykKKyAgICAgICAgICAgIFBzaUphdmFUb2tlbjpQTFVTUExVUygnKysnKQorICAgICAgICAgIFBzaUphdmFUb2tlbjpTRU1JQ09MT04oJzsnKQorICAgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4nKQorICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9hbm5vdGF0aW9uUGFyc2luZy9kZWNsYXJhdGlvbi9EZWZhdWx0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2Fubm90YXRpb25QYXJzaW5nL2RlY2xhcmF0aW9uL0RlZmF1bHQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ODM3NzM1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9hbm5vdGF0aW9uUGFyc2luZy9kZWNsYXJhdGlvbi9EZWZhdWx0LmphdmEKQEAgLTAsMCArMSwzIEBACitAaW50ZXJmYWNlIEFubm90YXRpb24geworICBDbGFzcyBmb28gKCkgZGVmYXVsdCBTdHJpbmcuY2xhc3M7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9hbm5vdGF0aW9uUGFyc2luZy9kZWNsYXJhdGlvbi9EZWZhdWx0LnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvYW5ub3RhdGlvblBhcnNpbmcvZGVjbGFyYXRpb24vRGVmYXVsdC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTBjYWY4ZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvYW5ub3RhdGlvblBhcnNpbmcvZGVjbGFyYXRpb24vRGVmYXVsdC50eHQKQEAgLTAsMCArMSw1MSBAQAorUHNpSmF2YUZpbGU6RGVmYXVsdC5qYXZhCisgIFBzaUltcG9ydExpc3QKKyAgICA8ZW1wdHkgbGlzdD4KKyAgUHNpQ2xhc3M6QW5ub3RhdGlvbgorICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUphdmFUb2tlbjpBVCgnQCcpCisgICAgUHNpS2V5d29yZDppbnRlcmZhY2UoJ2ludGVyZmFjZScpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSWRlbnRpZmllcjpBbm5vdGF0aW9uKCdBbm5vdGF0aW9uJykKKyAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4gICcpCisgICAgUHNpQW5ub3RhdGlvbk1ldGhvZDpmb28KKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OkNsYXNzCisgICAgICAgIFBzaUphdmFDb2RlUmVmZXJlbmNlRWxlbWVudDpDbGFzcworICAgICAgICAgIFBzaUlkZW50aWZpZXI6Q2xhc3MoJ0NsYXNzJykKKyAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUtleXdvcmQ6ZGVmYXVsdCgnZGVmYXVsdCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUNsYXNzT2JqZWN0QWNjZXNzRXhwcmVzc2lvbjpTdHJpbmcuY2xhc3MKKyAgICAgICAgUHNpVHlwZUVsZW1lbnQ6U3RyaW5nCisgICAgICAgICAgUHNpSmF2YUNvZGVSZWZlcmVuY2VFbGVtZW50OlN0cmluZworICAgICAgICAgICAgUHNpSWRlbnRpZmllcjpTdHJpbmcoJ1N0cmluZycpCisgICAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICBQc2lKYXZhVG9rZW46RE9UKCcuJykKKyAgICAgICAgUHNpS2V5d29yZDpjbGFzcygnY2xhc3MnKQorICAgICAgUHNpSmF2YVRva2VuOlNFTUlDT0xPTignOycpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4nKQorICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvYW5ub3RhdGlvblBhcnNpbmcvZGVjbGFyYXRpb24vSW5uZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvYW5ub3RhdGlvblBhcnNpbmcvZGVjbGFyYXRpb24vSW5uZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMDg4MjEyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9hbm5vdGF0aW9uUGFyc2luZy9kZWNsYXJhdGlvbi9Jbm5lci5qYXZhCkBAIC0wLDAgKzEsNSBAQAorY2xhc3MgQW5ub3RhdGlvbiB7CisgIEBpbnRlcmZhY2UgSW5uZXIgeworICAgIGRvdWJsZSBiYXIgKCkgZGVmYXVsdCAwLjA7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2Fubm90YXRpb25QYXJzaW5nL2RlY2xhcmF0aW9uL0lubmVyLnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvYW5ub3RhdGlvblBhcnNpbmcvZGVjbGFyYXRpb24vSW5uZXIudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ4NGM4YTcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2Fubm90YXRpb25QYXJzaW5nL2RlY2xhcmF0aW9uL0lubmVyLnR4dApAQCAtMCwwICsxLDU5IEBACitQc2lKYXZhRmlsZTpJbm5lci5qYXZhCisgIFBzaUltcG9ydExpc3QKKyAgICA8ZW1wdHkgbGlzdD4KKyAgUHNpQ2xhc3M6QW5ub3RhdGlvbgorICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUtleXdvcmQ6Y2xhc3MoJ2NsYXNzJykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lJZGVudGlmaWVyOkFubm90YXRpb24oJ0Fubm90YXRpb24nKQorICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgJykKKyAgICBQc2lDbGFzczpJbm5lcgorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUphdmFUb2tlbjpBVCgnQCcpCisgICAgICBQc2lLZXl3b3JkOmludGVyZmFjZSgnaW50ZXJmYWNlJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpJbm5lcignSW5uZXInKQorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgICAnKQorICAgICAgUHNpQW5ub3RhdGlvbk1ldGhvZDpiYXIKKyAgICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICBQc2lUeXBlRWxlbWVudDpkb3VibGUKKyAgICAgICAgICBQc2lLZXl3b3JkOmRvdWJsZSgnZG91YmxlJykKKyAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgIFBzaUlkZW50aWZpZXI6YmFyKCdiYXInKQorICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgICAgUHNpS2V5d29yZDpkZWZhdWx0KCdkZWZhdWx0JykKKyAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgIFBzaUxpdGVyYWxFeHByZXNzaW9uOjAuMAorICAgICAgICAgIFBzaUphdmFUb2tlbjpET1VCTEVfTElURVJBTCgnMC4wJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlNFTUlDT0xPTignOycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgJykKKyAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuJykKKyAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2Fubm90YXRpb25QYXJzaW5nL2RlY2xhcmF0aW9uL05lc3RlZC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9hbm5vdGF0aW9uUGFyc2luZy9kZWNsYXJhdGlvbi9OZXN0ZWQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYTA2NjdjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9hbm5vdGF0aW9uUGFyc2luZy9kZWNsYXJhdGlvbi9OZXN0ZWQuamF2YQpAQCAtMCwwICsxLDcgQEAKK0BpbnRlcmZhY2UgQW5ub3RhdGlvbiB7CisgIENsYXNzIGZvbyAoKSBkZWZhdWx0IFN0cmluZy5jbGFzczsKKworICBAaW50ZXJmYWNlIElubmVyIHsKKyAgICBTdHJpbmcgYmFyICgpIGRlZmF1bHQgIjx1bnNwZWNpZmllZD4iOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9hbm5vdGF0aW9uUGFyc2luZy9kZWNsYXJhdGlvbi9OZXN0ZWQudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9hbm5vdGF0aW9uUGFyc2luZy9kZWNsYXJhdGlvbi9OZXN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEyMDMwZWEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2Fubm90YXRpb25QYXJzaW5nL2RlY2xhcmF0aW9uL05lc3RlZC50eHQKQEAgLTAsMCArMSw5NCBAQAorUHNpSmF2YUZpbGU6TmVzdGVkLmphdmEKKyAgUHNpSW1wb3J0TGlzdAorICAgIDxlbXB0eSBsaXN0PgorICBQc2lDbGFzczpBbm5vdGF0aW9uCisgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpSmF2YVRva2VuOkFUKCdAJykKKyAgICBQc2lLZXl3b3JkOmludGVyZmFjZSgnaW50ZXJmYWNlJykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lJZGVudGlmaWVyOkFubm90YXRpb24oJ0Fubm90YXRpb24nKQorICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgJykKKyAgICBQc2lBbm5vdGF0aW9uTWV0aG9kOmZvbworICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6Q2xhc3MKKyAgICAgICAgUHNpSmF2YUNvZGVSZWZlcmVuY2VFbGVtZW50OkNsYXNzCisgICAgICAgICAgUHNpSWRlbnRpZmllcjpDbGFzcygnQ2xhc3MnKQorICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpS2V5d29yZDpkZWZhdWx0KCdkZWZhdWx0JykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpQ2xhc3NPYmplY3RBY2Nlc3NFeHByZXNzaW9uOlN0cmluZy5jbGFzcworICAgICAgICBQc2lUeXBlRWxlbWVudDpTdHJpbmcKKyAgICAgICAgICBQc2lKYXZhQ29kZVJlZmVyZW5jZUVsZW1lbnQ6U3RyaW5nCisgICAgICAgICAgICBQc2lJZGVudGlmaWVyOlN0cmluZygnU3RyaW5nJykKKyAgICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgIFBzaUphdmFUb2tlbjpET1QoJy4nKQorICAgICAgICBQc2lLZXl3b3JkOmNsYXNzKCdjbGFzcycpCisgICAgICBQc2lKYXZhVG9rZW46U0VNSUNPTE9OKCc7JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICAnKQorICAgIFBzaUNsYXNzOklubmVyCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpSmF2YVRva2VuOkFUKCdAJykKKyAgICAgIFBzaUtleXdvcmQ6aW50ZXJmYWNlKCdpbnRlcmZhY2UnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOklubmVyKCdJbm5lcicpCisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAgICcpCisgICAgICBQc2lBbm5vdGF0aW9uTWV0aG9kOmJhcgorICAgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgIFBzaVR5cGVFbGVtZW50OlN0cmluZworICAgICAgICAgIFBzaUphdmFDb2RlUmVmZXJlbmNlRWxlbWVudDpTdHJpbmcKKyAgICAgICAgICAgIFBzaUlkZW50aWZpZXI6U3RyaW5nKCdTdHJpbmcnKQorICAgICAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgIFBzaUlkZW50aWZpZXI6YmFyKCdiYXInKQorICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgICAgUHNpS2V5d29yZDpkZWZhdWx0KCdkZWZhdWx0JykKKyAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgIFBzaUxpdGVyYWxFeHByZXNzaW9uOiI8dW5zcGVjaWZpZWQ+IgorICAgICAgICAgIFBzaUphdmFUb2tlbjpTVFJJTkdfTElURVJBTCgnIjx1bnNwZWNpZmllZD4iJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlNFTUlDT0xPTignOycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgJykKKyAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuJykKKyAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2Fubm90YXRpb25QYXJzaW5nL2RlY2xhcmF0aW9uL090aGVyTWVtYmVycy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9hbm5vdGF0aW9uUGFyc2luZy9kZWNsYXJhdGlvbi9PdGhlck1lbWJlcnMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNzI3NGIzZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvYW5ub3RhdGlvblBhcnNpbmcvZGVjbGFyYXRpb24vT3RoZXJNZW1iZXJzLmphdmEKQEAgLTAsMCArMSw3IEBACitAaW50ZXJmYWNlIEFubm90YXRpb24geworICBDbGFzcyBmb28gKCkgZGVmYXVsdCBTdHJpbmcuY2xhc3M7CisgIGludCBmaWVsZDsKKyAgdm9pZCBtKCkge30KKyAgY2xhc3MgQyB7fQorICBpbnRlcmZhY2UgSSB7fQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvYW5ub3RhdGlvblBhcnNpbmcvZGVjbGFyYXRpb24vT3RoZXJNZW1iZXJzLnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvYW5ub3RhdGlvblBhcnNpbmcvZGVjbGFyYXRpb24vT3RoZXJNZW1iZXJzLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xN2Q5ZGRkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9hbm5vdGF0aW9uUGFyc2luZy9kZWNsYXJhdGlvbi9PdGhlck1lbWJlcnMudHh0CkBAIC0wLDAgKzEsMTExIEBACitQc2lKYXZhRmlsZTpPdGhlck1lbWJlcnMuamF2YQorICBQc2lJbXBvcnRMaXN0CisgICAgPGVtcHR5IGxpc3Q+CisgIFBzaUNsYXNzOkFubm90YXRpb24KKyAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lKYXZhVG9rZW46QVQoJ0AnKQorICAgIFBzaUtleXdvcmQ6aW50ZXJmYWNlKCdpbnRlcmZhY2UnKQorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUlkZW50aWZpZXI6QW5ub3RhdGlvbignQW5ub3RhdGlvbicpCisgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAnKQorICAgIFBzaUFubm90YXRpb25NZXRob2Q6Zm9vCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDpDbGFzcworICAgICAgICBQc2lKYXZhQ29kZVJlZmVyZW5jZUVsZW1lbnQ6Q2xhc3MKKyAgICAgICAgICBQc2lJZGVudGlmaWVyOkNsYXNzKCdDbGFzcycpCisgICAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lLZXl3b3JkOmRlZmF1bHQoJ2RlZmF1bHQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lDbGFzc09iamVjdEFjY2Vzc0V4cHJlc3Npb246U3RyaW5nLmNsYXNzCisgICAgICAgIFBzaVR5cGVFbGVtZW50OlN0cmluZworICAgICAgICAgIFBzaUphdmFDb2RlUmVmZXJlbmNlRWxlbWVudDpTdHJpbmcKKyAgICAgICAgICAgIFBzaUlkZW50aWZpZXI6U3RyaW5nKCdTdHJpbmcnKQorICAgICAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgUHNpSmF2YVRva2VuOkRPVCgnLicpCisgICAgICAgIFBzaUtleXdvcmQ6Y2xhc3MoJ2NsYXNzJykKKyAgICAgIFBzaUphdmFUb2tlbjpTRU1JQ09MT04oJzsnKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAnKQorICAgIFBzaUZpZWxkOmZpZWxkCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6aW50CisgICAgICAgIFBzaUtleXdvcmQ6aW50KCdpbnQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZpZWxkKCdmaWVsZCcpCisgICAgICBQc2lKYXZhVG9rZW46U0VNSUNPTE9OKCc7JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgJykKKyAgICBQc2lBbm5vdGF0aW9uTWV0aG9kOm0KKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjptKCdtJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4gICcpCisgICAgUHNpQ2xhc3M6QworICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUtleXdvcmQ6Y2xhc3MoJ2NsYXNzJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpDKCdDJykKKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4gICcpCisgICAgUHNpQ2xhc3M6SQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUtleXdvcmQ6aW50ZXJmYWNlKCdpbnRlcmZhY2UnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOkkoJ0knKQorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcbicpCisgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9hbm5vdGF0aW9uUGFyc2luZy9kZWNsYXJhdGlvbi9TaW1wbGUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvYW5ub3RhdGlvblBhcnNpbmcvZGVjbGFyYXRpb24vU2ltcGxlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWMxNjQ4ZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvYW5ub3RhdGlvblBhcnNpbmcvZGVjbGFyYXRpb24vU2ltcGxlLmphdmEKQEAgLTAsMCArMSw1IEBACitpbXBvcnQgamF2YS51dGlsLio7CisKK3B1YmxpYyBAaW50ZXJmYWNlIEFubm90YXRpb24geworICBpbnQgZm9vICgpOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvYW5ub3RhdGlvblBhcnNpbmcvZGVjbGFyYXRpb24vU2ltcGxlLnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvYW5ub3RhdGlvblBhcnNpbmcvZGVjbGFyYXRpb24vU2ltcGxlLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZDg4NjJhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9hbm5vdGF0aW9uUGFyc2luZy9kZWNsYXJhdGlvbi9TaW1wbGUudHh0CkBAIC0wLDAgKzEsNTMgQEAKK1BzaUphdmFGaWxlOlNpbXBsZS5qYXZhCisgIFBzaUltcG9ydExpc3QKKyAgICBQc2lJbXBvcnRTdGF0ZW1lbnQKKyAgICAgIFBzaUtleXdvcmQ6aW1wb3J0KCdpbXBvcnQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lKYXZhQ29kZVJlZmVyZW5jZUVsZW1lbnQ6amF2YS51dGlsCisgICAgICAgIFBzaUphdmFDb2RlUmVmZXJlbmNlRWxlbWVudDpqYXZhCisgICAgICAgICAgUHNpSWRlbnRpZmllcjpqYXZhKCdqYXZhJykKKyAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgUHNpSmF2YVRva2VuOkRPVCgnLicpCisgICAgICAgIFBzaUlkZW50aWZpZXI6dXRpbCgndXRpbCcpCisgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUphdmFUb2tlbjpET1QoJy4nKQorICAgICAgUHNpSmF2YVRva2VuOkFTVEVSSVNLKCcqJykKKyAgICAgIFBzaUphdmFUb2tlbjpTRU1JQ09MT04oJzsnKQorICBQc2lXaGl0ZVNwYWNlKCdcblxuJykKKyAgUHNpQ2xhc3M6QW5ub3RhdGlvbgorICAgIFBzaU1vZGlmaWVyTGlzdDpwdWJsaWMKKyAgICAgIFBzaUtleXdvcmQ6cHVibGljKCdwdWJsaWMnKQorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUphdmFUb2tlbjpBVCgnQCcpCisgICAgUHNpS2V5d29yZDppbnRlcmZhY2UoJ2ludGVyZmFjZScpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSWRlbnRpZmllcjpBbm5vdGF0aW9uKCdBbm5vdGF0aW9uJykKKyAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4gICcpCisgICAgUHNpQW5ub3RhdGlvbk1ldGhvZDpmb28KKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OmludAorICAgICAgICBQc2lLZXl3b3JkOmludCgnaW50JykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lKYXZhVG9rZW46U0VNSUNPTE9OKCc7JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcbicpCisgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9jb21tb25QYXJzaW5nL0ltcG9ydExpc3RCdWcuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvY29tbW9uUGFyc2luZy9JbXBvcnRMaXN0QnVnLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzZiZjI4OQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvY29tbW9uUGFyc2luZy9JbXBvcnRMaXN0QnVnLmphdmEKQEAgLTAsMCArMSwyIEBACisvKiovLyoqKioqKi9jbGFzcyBBQ2xhc3N7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9jb21tb25QYXJzaW5nL0ltcG9ydExpc3RCdWcudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9jb21tb25QYXJzaW5nL0ltcG9ydExpc3RCdWcudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUxOGU5YTMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2NvbW1vblBhcnNpbmcvSW1wb3J0TGlzdEJ1Zy50eHQKQEAgLTAsMCArMSwyMiBAQAorUHNpSmF2YUZpbGU6SW1wb3J0TGlzdEJ1Zy5qYXZhCisgIFBzaUNvbW1lbnQoQ19TVFlMRV9DT01NRU5UKSgnLyoqLycpCisgIFBzaUltcG9ydExpc3QKKyAgICA8ZW1wdHkgbGlzdD4KKyAgUHNpQ2xhc3M6QUNsYXNzCisgICAgUHNpRG9jQ29tbWVudAorICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyoqKiovJykKKyAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lLZXl3b3JkOmNsYXNzKCdjbGFzcycpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSWRlbnRpZmllcjpBQ2xhc3MoJ0FDbGFzcycpCisgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuJykKKyAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvY29tbW9uUGFyc2luZy9JbmNvbXBsZXRlQ29kZUJsb2NrLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2NvbW1vblBhcnNpbmcvSW5jb21wbGV0ZUNvZGVCbG9jay5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYwMDYxYTgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2NvbW1vblBhcnNpbmcvSW5jb21wbGV0ZUNvZGVCbG9jay5qYXZhCkBAIC0wLDAgKzEsNSBAQAorY2xhc3MgQSB7CisgICAgdm9pZCBtZXRob2QoKSB7CisgICAgICAgIDxpZGVudGlmaWVyCisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvY29tbW9uUGFyc2luZy9JbmNvbXBsZXRlQ29kZUJsb2NrLnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvY29tbW9uUGFyc2luZy9JbmNvbXBsZXRlQ29kZUJsb2NrLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NGU3MzY5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9jb21tb25QYXJzaW5nL0luY29tcGxldGVDb2RlQmxvY2sudHh0CkBAIC0wLDAgKzEsNDkgQEAKK1BzaUphdmFGaWxlOkluY29tcGxldGVDb2RlQmxvY2suamF2YQorICBQc2lJbXBvcnRMaXN0CisgICAgPGVtcHR5IGxpc3Q+CisgIFBzaUNsYXNzOkEKKyAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lLZXl3b3JkOmNsYXNzKCdjbGFzcycpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSWRlbnRpZmllcjpBKCdBJykKKyAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4gICAgJykKKyAgICBQc2lNZXRob2Q6bWV0aG9kCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6bWV0aG9kKCdtZXRob2QnKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgICAgICAgJykKKyAgICAgICAgUHNpRXJyb3JFbGVtZW50OlVuZXhwZWN0ZWQgdG9rZW4KKyAgICAgICAgICBQc2lKYXZhVG9rZW46TFQoJzwnKQorICAgICAgICBQc2lFeHByZXNzaW9uU3RhdGVtZW50CisgICAgICAgICAgUHNpUmVmZXJlbmNlRXhwcmVzc2lvbjppZGVudGlmaWVyCisgICAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgICAgUHNpSWRlbnRpZmllcjppZGVudGlmaWVyKCdpZGVudGlmaWVyJykKKyAgICAgICAgICBQc2lFcnJvckVsZW1lbnQ6JzsnIGV4cGVjdGVkCisgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gICAgJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4nKQorICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9jb21tb25QYXJzaW5nL0luY29tcGxldGVGb3IuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvY29tbW9uUGFyc2luZy9JbmNvbXBsZXRlRm9yLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGE0OGQxZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvY29tbW9uUGFyc2luZy9JbmNvbXBsZXRlRm9yLmphdmEKQEAgLTAsMCArMSwxMiBAQAoraW1wb3J0IGphdmEudXRpbC4qOworCitjbGFzcyBCYXJHb28ge30KKworY2xhc3MgRm9vIHsKKyAgICB7CisgICAgICAgIExpc3Q8QmFyR29vPiBnb29zOworICAgICAgICBmb3IgKEJhckdvbyAgOiBnb29zKSB7CisKK30KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9jb21tb25QYXJzaW5nL0luY29tcGxldGVGb3IudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9jb21tb25QYXJzaW5nL0luY29tcGxldGVGb3IudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMyNWIzNzAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2NvbW1vblBhcnNpbmcvSW5jb21wbGV0ZUZvci50eHQKQEAgLTAsMCArMSwxMDMgQEAKK1BzaUphdmFGaWxlOkluY29tcGxldGVGb3IuamF2YQorICBQc2lJbXBvcnRMaXN0CisgICAgUHNpSW1wb3J0U3RhdGVtZW50CisgICAgICBQc2lLZXl3b3JkOmltcG9ydCgnaW1wb3J0JykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSmF2YUNvZGVSZWZlcmVuY2VFbGVtZW50OmphdmEudXRpbAorICAgICAgICBQc2lKYXZhQ29kZVJlZmVyZW5jZUVsZW1lbnQ6amF2YQorICAgICAgICAgIFBzaUlkZW50aWZpZXI6amF2YSgnamF2YScpCisgICAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgIFBzaUphdmFUb2tlbjpET1QoJy4nKQorICAgICAgICBQc2lJZGVudGlmaWVyOnV0aWwoJ3V0aWwnKQorICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lKYXZhVG9rZW46RE9UKCcuJykKKyAgICAgIFBzaUphdmFUb2tlbjpBU1RFUklTSygnKicpCisgICAgICBQc2lKYXZhVG9rZW46U0VNSUNPTE9OKCc7JykKKyAgUHNpV2hpdGVTcGFjZSgnXG5cbicpCisgIFBzaUNsYXNzOkJhckdvbworICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUtleXdvcmQ6Y2xhc3MoJ2NsYXNzJykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lJZGVudGlmaWVyOkJhckdvbygnQmFyR29vJykKKyAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgIFBzaVdoaXRlU3BhY2UoJ1xuXG4nKQorICBQc2lDbGFzczpGb28KKyAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lLZXl3b3JkOmNsYXNzKCdjbGFzcycpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSWRlbnRpZmllcjpGb28oJ0ZvbycpCisgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAgICcpCisgICAgUHNpQ2xhc3NJbml0aWFsaXplcgorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gICAgICAgICcpCisgICAgICAgIFBzaURlY2xhcmF0aW9uU3RhdGVtZW50CisgICAgICAgICAgUHNpTG9jYWxWYXJpYWJsZTpnb29zCisgICAgICAgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgICAgUHNpVHlwZUVsZW1lbnQ6TGlzdDxCYXJHb28+CisgICAgICAgICAgICAgIFBzaUphdmFDb2RlUmVmZXJlbmNlRWxlbWVudDpMaXN0PEJhckdvbz4KKyAgICAgICAgICAgICAgICBQc2lJZGVudGlmaWVyOkxpc3QoJ0xpc3QnKQorICAgICAgICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgICAgICAgIFBzaUphdmFUb2tlbjpMVCgnPCcpCisgICAgICAgICAgICAgICAgICBQc2lUeXBlRWxlbWVudDpCYXJHb28KKyAgICAgICAgICAgICAgICAgICAgUHNpSmF2YUNvZGVSZWZlcmVuY2VFbGVtZW50OkJhckdvbworICAgICAgICAgICAgICAgICAgICAgIFBzaUlkZW50aWZpZXI6QmFyR29vKCdCYXJHb28nKQorICAgICAgICAgICAgICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOkdUKCc+JykKKyAgICAgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICAgICAgUHNpSWRlbnRpZmllcjpnb29zKCdnb29zJykKKyAgICAgICAgICAgIFBzaUphdmFUb2tlbjpTRU1JQ09MT04oJzsnKQorICAgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgICAgICAgJykKKyAgICAgICAgUHNpRm9yU3RhdGVtZW50CisgICAgICAgICAgUHNpS2V5d29yZDpmb3IoJ2ZvcicpCisgICAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgICBQc2lMYWJlbGVkU3RhdGVtZW50CisgICAgICAgICAgICBQc2lJZGVudGlmaWVyOkJhckdvbygnQmFyR29vJykKKyAgICAgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAgJykKKyAgICAgICAgICAgIFBzaUphdmFUb2tlbjpDT0xPTignOicpCisgICAgICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgICAgICAgIFBzaUV4cHJlc3Npb25TdGF0ZW1lbnQKKyAgICAgICAgICAgICAgUHNpUmVmZXJlbmNlRXhwcmVzc2lvbjpnb29zCisgICAgICAgICAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgICAgICAgUHNpSWRlbnRpZmllcjpnb29zKCdnb29zJykKKyAgICAgICAgICAgICAgUHNpRXJyb3JFbGVtZW50Oic7JyBleHBlY3RlZAorICAgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgIFBzaUVycm9yRWxlbWVudDonOycgZXhwZWN0ZWQKKyAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgICAgUHNpQmxvY2tTdGF0ZW1lbnQKKyAgICAgICAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgICAgICAgUHNpV2hpdGVTcGFjZSgnXG5cbicpCisgICAgICAgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgICAnKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcbicpCisgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9jb21tb25QYXJzaW5nL1JlZlBhcmFtc0FmdGVyRXJyb3IuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvY29tbW9uUGFyc2luZy9SZWZQYXJhbXNBZnRlckVycm9yLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTMxZDEwMQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvY29tbW9uUGFyc2luZy9SZWZQYXJhbXNBZnRlckVycm9yLmphdmEKQEAgLTAsMCArMSwzIEBACitjbGFzcyBDIHsKKyAgQkNTU0NoaWxkLjxlcnJvciBkZXNjcj0iIj5CQ1NTQ1NlcnZpY2VDbGFzc1JlZjwvZXJyb3I+IGZkID0gbnVsbDsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2NvbW1vblBhcnNpbmcvUmVmUGFyYW1zQWZ0ZXJFcnJvci50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2NvbW1vblBhcnNpbmcvUmVmUGFyYW1zQWZ0ZXJFcnJvci50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmQzOTRhYQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvY29tbW9uUGFyc2luZy9SZWZQYXJhbXNBZnRlckVycm9yLnR4dApAQCAtMCwwICsxLDEwMCBAQAorUHNpSmF2YUZpbGU6UmVmUGFyYW1zQWZ0ZXJFcnJvci5qYXZhCisgIFBzaUltcG9ydExpc3QKKyAgICA8ZW1wdHkgbGlzdD4KKyAgUHNpQ2xhc3M6QworICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUtleXdvcmQ6Y2xhc3MoJ2NsYXNzJykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lJZGVudGlmaWVyOkMoJ0MnKQorICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgJykKKyAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lUeXBlRWxlbWVudDpCQ1NTQ2hpbGQuCisgICAgICBQc2lKYXZhQ29kZVJlZmVyZW5jZUVsZW1lbnQ6QkNTU0NoaWxkLgorICAgICAgICBQc2lKYXZhQ29kZVJlZmVyZW5jZUVsZW1lbnQ6QkNTU0NoaWxkCisgICAgICAgICAgUHNpSWRlbnRpZmllcjpCQ1NTQ2hpbGQoJ0JDU1NDaGlsZCcpCisgICAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgIFBzaUphdmFUb2tlbjpET1QoJy4nKQorICAgICAgICBQc2lFcnJvckVsZW1lbnQ6SWRlbnRpZmllciBleHBlY3RlZAorICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpRXJyb3JFbGVtZW50OklkZW50aWZpZXIgZXhwZWN0ZWQKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUVycm9yRWxlbWVudDpVbmV4cGVjdGVkIHRva2VuCisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICBQc2lKYXZhVG9rZW46TFQoJzwnKQorICAgICAgICBQc2lUeXBlUGFyYW1ldGVyOmVycm9yCisgICAgICAgICAgUHNpSWRlbnRpZmllcjplcnJvcignZXJyb3InKQorICAgICAgICAgIFBzaUVsZW1lbnQoRVhURU5EU19CT1VORF9MSVNUKQorICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgIFBzaUVycm9yRWxlbWVudDonPicgZXhwZWN0ZWQuCisgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpVHlwZUVsZW1lbnQ6ZGVzY3IKKyAgICAgIFBzaUphdmFDb2RlUmVmZXJlbmNlRWxlbWVudDpkZXNjcgorICAgICAgICBQc2lJZGVudGlmaWVyOmRlc2NyKCdkZXNjcicpCisgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lFcnJvckVsZW1lbnQ6SWRlbnRpZmllciBleHBlY3RlZAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpRXJyb3JFbGVtZW50OlVuZXhwZWN0ZWQgdG9rZW4KKyAgICAgIFBzaUphdmFUb2tlbjpFUSgnPScpCisgICAgICBQc2lKYXZhVG9rZW46U1RSSU5HX0xJVEVSQUwoJyIiJykKKyAgICAgIFBzaUphdmFUb2tlbjpHVCgnPicpCisgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpVHlwZUVsZW1lbnQ6QkNTU0NTZXJ2aWNlQ2xhc3NSZWY8CisgICAgICBQc2lKYXZhQ29kZVJlZmVyZW5jZUVsZW1lbnQ6QkNTU0NTZXJ2aWNlQ2xhc3NSZWY8CisgICAgICAgIFBzaUlkZW50aWZpZXI6QkNTU0NTZXJ2aWNlQ2xhc3NSZWYoJ0JDU1NDU2VydmljZUNsYXNzUmVmJykKKyAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgIFBzaUphdmFUb2tlbjpMVCgnPCcpCisgICAgICAgICAgUHNpRXJyb3JFbGVtZW50OklkZW50aWZpZXIgZXhwZWN0ZWQKKyAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgIFBzaUVycm9yRWxlbWVudDonPicgb3IgJywnIGV4cGVjdGVkLgorICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpRXJyb3JFbGVtZW50OklkZW50aWZpZXIgZXhwZWN0ZWQKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUVycm9yRWxlbWVudDpVbmV4cGVjdGVkIHRva2VuCisgICAgICBQc2lKYXZhVG9rZW46RElWKCcvJykKKyAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lUeXBlRWxlbWVudDplcnJvcgorICAgICAgUHNpSmF2YUNvZGVSZWZlcmVuY2VFbGVtZW50OmVycm9yCisgICAgICAgIFBzaUlkZW50aWZpZXI6ZXJyb3IoJ2Vycm9yJykKKyAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUVycm9yRWxlbWVudDpJZGVudGlmaWVyIGV4cGVjdGVkCisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lFcnJvckVsZW1lbnQ6VW5leHBlY3RlZCB0b2tlbgorICAgICAgUHNpSmF2YVRva2VuOkdUKCc+JykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lUeXBlRWxlbWVudDpmZAorICAgICAgUHNpSmF2YUNvZGVSZWZlcmVuY2VFbGVtZW50OmZkCisgICAgICAgIFBzaUlkZW50aWZpZXI6ZmQoJ2ZkJykKKyAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUVycm9yRWxlbWVudDpJZGVudGlmaWVyIGV4cGVjdGVkCisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lFcnJvckVsZW1lbnQ6VW5leHBlY3RlZCB0b2tlbgorICAgICAgUHNpSmF2YVRva2VuOkVRKCc9JykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSmF2YVRva2VuOk5VTExfS0VZV09SRCgnbnVsbCcpCisgICAgUHNpSmF2YVRva2VuOlNFTUlDT0xPTignOycpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4nKQorICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvY29tbW9uUGFyc2luZy9TQ1I1MjAyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2NvbW1vblBhcnNpbmcvU0NSNTIwMi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVkOTliYjUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2NvbW1vblBhcnNpbmcvU0NSNTIwMi5qYXZhCkBAIC0wLDAgKzEsNiBAQAorY2xhc3MgRnJlZXplVGVzdCB7CisJdm9pZCB0ZXN0KCkgeworCQlTdHJpbmcuY2xhc3MuCisJCVN0cmluZ1tdIHN0cmluZ3M7CisJfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9jb21tb25QYXJzaW5nL1NDUjUyMDIudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9jb21tb25QYXJzaW5nL1NDUjUyMDIudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUzNGQyYTcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2NvbW1vblBhcnNpbmcvU0NSNTIwMi50eHQKQEAgLTAsMCArMSw2OSBAQAorUHNpSmF2YUZpbGU6U0NSNTIwMi5qYXZhCisgIFBzaUltcG9ydExpc3QKKyAgICA8ZW1wdHkgbGlzdD4KKyAgUHNpQ2xhc3M6RnJlZXplVGVzdAorICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUtleXdvcmQ6Y2xhc3MoJ2NsYXNzJykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lJZGVudGlmaWVyOkZyZWV6ZVRlc3QoJ0ZyZWV6ZVRlc3QnKQorICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblx0JykKKyAgICBQc2lNZXRob2Q6dGVzdAorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOnRlc3QoJ3Rlc3QnKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lXaGl0ZVNwYWNlKCdcblx0XHQnKQorICAgICAgICBQc2lFeHByZXNzaW9uU3RhdGVtZW50CisgICAgICAgICAgUHNpUmVmZXJlbmNlRXhwcmVzc2lvbjpTdHJpbmcuY2xhc3MuCisJCVN0cmluZworICAgICAgICAgICAgUHNpQ2xhc3NPYmplY3RBY2Nlc3NFeHByZXNzaW9uOlN0cmluZy5jbGFzcworICAgICAgICAgICAgICBQc2lUeXBlRWxlbWVudDpTdHJpbmcKKyAgICAgICAgICAgICAgICBQc2lKYXZhQ29kZVJlZmVyZW5jZUVsZW1lbnQ6U3RyaW5nCisgICAgICAgICAgICAgICAgICBQc2lJZGVudGlmaWVyOlN0cmluZygnU3RyaW5nJykKKyAgICAgICAgICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgICAgIFBzaUphdmFUb2tlbjpET1QoJy4nKQorICAgICAgICAgICAgICBQc2lLZXl3b3JkOmNsYXNzKCdjbGFzcycpCisgICAgICAgICAgICBQc2lKYXZhVG9rZW46RE9UKCcuJykKKyAgICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgICBQc2lXaGl0ZVNwYWNlKCdcblx0XHQnKQorICAgICAgICAgICAgUHNpSWRlbnRpZmllcjpTdHJpbmcoJ1N0cmluZycpCisgICAgICAgICAgUHNpRXJyb3JFbGVtZW50Oic7JyBleHBlY3RlZAorICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgIFBzaUVycm9yRWxlbWVudDpVbmV4cGVjdGVkIHRva2VuCisgICAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDS0VUKCdbJykKKyAgICAgICAgUHNpRXJyb3JFbGVtZW50OlVuZXhwZWN0ZWQgdG9rZW4KKyAgICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNLRVQoJ10nKQorICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgICAgUHNpRXhwcmVzc2lvblN0YXRlbWVudAorICAgICAgICAgIFBzaVJlZmVyZW5jZUV4cHJlc3Npb246c3RyaW5ncworICAgICAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICAgIFBzaUlkZW50aWZpZXI6c3RyaW5ncygnc3RyaW5ncycpCisgICAgICAgICAgUHNpSmF2YVRva2VuOlNFTUlDT0xPTignOycpCisgICAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuXHQnKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcbicpCisgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9jb21tb25QYXJzaW5nL1VuY2xvc2VkQ29tbWVudC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9jb21tb25QYXJzaW5nL1VuY2xvc2VkQ29tbWVudC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQzMTQxYjkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2NvbW1vblBhcnNpbmcvVW5jbG9zZWRDb21tZW50LmphdmEKQEAgLTAsMCArMSw3IEBACisvLyB1bmNsb3NlZCBjb21tZW50CisvKgorCitpbXBvcnQgamF2YS5pby4qOworCitjbGFzcyBhIHsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2NvbW1vblBhcnNpbmcvVW5jbG9zZWRDb21tZW50LnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvY29tbW9uUGFyc2luZy9VbmNsb3NlZENvbW1lbnQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIyOTZkOGUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2NvbW1vblBhcnNpbmcvVW5jbG9zZWRDb21tZW50LnR4dApAQCAtMCwwICsxLDYgQEAKK1BzaUphdmFGaWxlOlVuY2xvc2VkQ29tbWVudC5qYXZhCisgIFBzaUNvbW1lbnQoRU5EX09GX0xJTkVfQ09NTUVOVCkoJy8vIHVuY2xvc2VkIGNvbW1lbnQnKQorICBQc2lXaGl0ZVNwYWNlKCdcbicpCisgIFBzaUNvbW1lbnQoQ19TVFlMRV9DT01NRU5UKSgnLypcblxuaW1wb3J0IGphdmEuaW8uKjtcblxuY2xhc3MgYSB7XG59JykKKyAgUHNpSW1wb3J0TGlzdAorICAgIDxlbXB0eSBsaXN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZGVjbGFyYXRpb25QYXJzaW5nL2NsYXNzL0VtcHR5SW1wb3J0TGlzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9kZWNsYXJhdGlvblBhcnNpbmcvY2xhc3MvRW1wdHlJbXBvcnRMaXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzRhZmFiYwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZGVjbGFyYXRpb25QYXJzaW5nL2NsYXNzL0VtcHR5SW1wb3J0TGlzdC5qYXZhCkBAIC0wLDAgKzEsNCBAQAorLyoqCisqLworcHVibGljIGFic3RyYWN0IGNsYXNzIFRlc3QgeworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZGVjbGFyYXRpb25QYXJzaW5nL2NsYXNzL0VtcHR5SW1wb3J0TGlzdC50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2RlY2xhcmF0aW9uUGFyc2luZy9jbGFzcy9FbXB0eUltcG9ydExpc3QudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmViZDIyMzkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2RlY2xhcmF0aW9uUGFyc2luZy9jbGFzcy9FbXB0eUltcG9ydExpc3QudHh0CkBAIC0wLDAgKzEsMjcgQEAKK1BzaUphdmFGaWxlOkVtcHR5SW1wb3J0TGlzdC5qYXZhCisgIFBzaUltcG9ydExpc3QKKyAgICA8ZW1wdHkgbGlzdD4KKyAgUHNpQ2xhc3M6VGVzdAorICAgIFBzaURvY0NvbW1lbnQKKyAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4nKQorICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4nKQorICAgIFBzaU1vZGlmaWVyTGlzdDpwdWJsaWMgYWJzdHJhY3QKKyAgICAgIFBzaUtleXdvcmQ6cHVibGljKCdwdWJsaWMnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lLZXl3b3JkOmFic3RyYWN0KCdhYnN0cmFjdCcpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpS2V5d29yZDpjbGFzcygnY2xhc3MnKQorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUlkZW50aWZpZXI6VGVzdCgnVGVzdCcpCisgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuJykKKyAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2RlY2xhcmF0aW9uUGFyc2luZy9jbGFzcy9FbnVtMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9kZWNsYXJhdGlvblBhcnNpbmcvY2xhc3MvRW51bTEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMWIxMTE4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9kZWNsYXJhdGlvblBhcnNpbmcvY2xhc3MvRW51bTEuamF2YQpAQCAtMCwwICsxLDIgQEAKK3B1YmxpYyBlbnVtIE91ckVudW0geworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZGVjbGFyYXRpb25QYXJzaW5nL2NsYXNzL0VudW0xLnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZGVjbGFyYXRpb25QYXJzaW5nL2NsYXNzL0VudW0xLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZDFlZDJjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9kZWNsYXJhdGlvblBhcnNpbmcvY2xhc3MvRW51bTEudHh0CkBAIC0wLDAgKzEsMjAgQEAKK1BzaUphdmFGaWxlOkVudW0xLmphdmEKKyAgUHNpSW1wb3J0TGlzdAorICAgIDxlbXB0eSBsaXN0PgorICBQc2lDbGFzczpPdXJFbnVtCisgICAgUHNpTW9kaWZpZXJMaXN0OnB1YmxpYworICAgICAgUHNpS2V5d29yZDpwdWJsaWMoJ3B1YmxpYycpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpS2V5d29yZDplbnVtKCdlbnVtJykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lJZGVudGlmaWVyOk91ckVudW0oJ091ckVudW0nKQorICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcbicpCisgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9kZWNsYXJhdGlvblBhcnNpbmcvY2xhc3MvRW51bTIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZGVjbGFyYXRpb25QYXJzaW5nL2NsYXNzL0VudW0yLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTkyNzNlOQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZGVjbGFyYXRpb25QYXJzaW5nL2NsYXNzL0VudW0yLmphdmEKQEAgLTAsMCArMSwyIEBACitlbnVtIE91ckVudW0geworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZGVjbGFyYXRpb25QYXJzaW5nL2NsYXNzL0VudW0yLnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZGVjbGFyYXRpb25QYXJzaW5nL2NsYXNzL0VudW0yLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZjIzODc2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9kZWNsYXJhdGlvblBhcnNpbmcvY2xhc3MvRW51bTIudHh0CkBAIC0wLDAgKzEsMTkgQEAKK1BzaUphdmFGaWxlOkVudW0yLmphdmEKKyAgUHNpSW1wb3J0TGlzdAorICAgIDxlbXB0eSBsaXN0PgorICBQc2lDbGFzczpPdXJFbnVtCisgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpS2V5d29yZDplbnVtKCdlbnVtJykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lJZGVudGlmaWVyOk91ckVudW0oJ091ckVudW0nKQorICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcbicpCisgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9kZWNsYXJhdGlvblBhcnNpbmcvY2xhc3MvRW51bVdpdGhBbm5vdGF0ZWRDb25zdGFudHMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZGVjbGFyYXRpb25QYXJzaW5nL2NsYXNzL0VudW1XaXRoQW5ub3RhdGVkQ29uc3RhbnRzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWFhOGUzYwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZGVjbGFyYXRpb25QYXJzaW5nL2NsYXNzL0VudW1XaXRoQW5ub3RhdGVkQ29uc3RhbnRzLmphdmEKQEAgLTAsMCArMSwzIEBACitlbnVtIE91ckVudW0geworICBAQU5OT1RBVElPTiBBKDEwKQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZGVjbGFyYXRpb25QYXJzaW5nL2NsYXNzL0VudW1XaXRoQW5ub3RhdGVkQ29uc3RhbnRzLnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZGVjbGFyYXRpb25QYXJzaW5nL2NsYXNzL0VudW1XaXRoQW5ub3RhdGVkQ29uc3RhbnRzLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZDZmNDJkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9kZWNsYXJhdGlvblBhcnNpbmcvY2xhc3MvRW51bVdpdGhBbm5vdGF0ZWRDb25zdGFudHMudHh0CkBAIC0wLDAgKzEsMzcgQEAKK1BzaUphdmFGaWxlOkVudW1XaXRoQW5ub3RhdGVkQ29uc3RhbnRzLmphdmEKKyAgUHNpSW1wb3J0TGlzdAorICAgIDxlbXB0eSBsaXN0PgorICBQc2lDbGFzczpPdXJFbnVtCisgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpS2V5d29yZDplbnVtKCdlbnVtJykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lJZGVudGlmaWVyOk91ckVudW0oJ091ckVudW0nKQorICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgJykKKyAgICBQc2lFbnVtQ29uc3RhbnQ6QQorICAgICAgUHNpTW9kaWZpZXJMaXN0OkBBTk5PVEFUSU9OCisgICAgICAgIFBzaUFubm90YXRpb24KKyAgICAgICAgICBQc2lKYXZhVG9rZW46QVQoJ0AnKQorICAgICAgICAgIFBzaUphdmFDb2RlUmVmZXJlbmNlRWxlbWVudDpBTk5PVEFUSU9OCisgICAgICAgICAgICBQc2lJZGVudGlmaWVyOkFOTk9UQVRJT04oJ0FOTk9UQVRJT04nKQorICAgICAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICBQc2lBbm5vdGF0aW9uUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6QSgnQScpCisgICAgICBQc2lFeHByZXNzaW9uTGlzdAorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lMaXRlcmFsRXhwcmVzc2lvbjoxMAorICAgICAgICAgIFBzaUphdmFUb2tlbjpJTlRFR0VSX0xJVEVSQUwoJzEwJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcbicpCisgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9kZWNsYXJhdGlvblBhcnNpbmcvY2xhc3MvRW51bVdpdGhDb25zdGFudHMxLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2RlY2xhcmF0aW9uUGFyc2luZy9jbGFzcy9FbnVtV2l0aENvbnN0YW50czEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZmM5NmZjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9kZWNsYXJhdGlvblBhcnNpbmcvY2xhc3MvRW51bVdpdGhDb25zdGFudHMxLmphdmEKQEAgLTAsMCArMSwzIEBACitwdWJsaWMgZW51bSBPdXJFbnVtIHsKKyAgOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZGVjbGFyYXRpb25QYXJzaW5nL2NsYXNzL0VudW1XaXRoQ29uc3RhbnRzMS50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2RlY2xhcmF0aW9uUGFyc2luZy9jbGFzcy9FbnVtV2l0aENvbnN0YW50czEudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRlOWMyY2QKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2RlY2xhcmF0aW9uUGFyc2luZy9jbGFzcy9FbnVtV2l0aENvbnN0YW50czEudHh0CkBAIC0wLDAgKzEsMjIgQEAKK1BzaUphdmFGaWxlOkVudW1XaXRoQ29uc3RhbnRzMS5qYXZhCisgIFBzaUltcG9ydExpc3QKKyAgICA8ZW1wdHkgbGlzdD4KKyAgUHNpQ2xhc3M6T3VyRW51bQorICAgIFBzaU1vZGlmaWVyTGlzdDpwdWJsaWMKKyAgICAgIFBzaUtleXdvcmQ6cHVibGljKCdwdWJsaWMnKQorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUtleXdvcmQ6ZW51bSgnZW51bScpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSWRlbnRpZmllcjpPdXJFbnVtKCdPdXJFbnVtJykKKyAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4gICcpCisgICAgUHNpSmF2YVRva2VuOlNFTUlDT0xPTignOycpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4nKQorICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZGVjbGFyYXRpb25QYXJzaW5nL2NsYXNzL0VudW1XaXRoQ29uc3RhbnRzMi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9kZWNsYXJhdGlvblBhcnNpbmcvY2xhc3MvRW51bVdpdGhDb25zdGFudHMyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzFlZmNkMwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZGVjbGFyYXRpb25QYXJzaW5nL2NsYXNzL0VudW1XaXRoQ29uc3RhbnRzMi5qYXZhCkBAIC0wLDAgKzEsMyBAQAorcHVibGljIGVudW0gT3VyRW51bSB7CisgIFJFRCwgR1JFRU4sIEJMVUU7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9kZWNsYXJhdGlvblBhcnNpbmcvY2xhc3MvRW51bVdpdGhDb25zdGFudHMyLnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZGVjbGFyYXRpb25QYXJzaW5nL2NsYXNzL0VudW1XaXRoQ29uc3RhbnRzMi50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmZhYTYwNAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZGVjbGFyYXRpb25QYXJzaW5nL2NsYXNzL0VudW1XaXRoQ29uc3RhbnRzMi50eHQKQEAgLTAsMCArMSw0NCBAQAorUHNpSmF2YUZpbGU6RW51bVdpdGhDb25zdGFudHMyLmphdmEKKyAgUHNpSW1wb3J0TGlzdAorICAgIDxlbXB0eSBsaXN0PgorICBQc2lDbGFzczpPdXJFbnVtCisgICAgUHNpTW9kaWZpZXJMaXN0OnB1YmxpYworICAgICAgUHNpS2V5d29yZDpwdWJsaWMoJ3B1YmxpYycpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpS2V5d29yZDplbnVtKCdlbnVtJykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lJZGVudGlmaWVyOk91ckVudW0oJ091ckVudW0nKQorICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgJykKKyAgICBQc2lFbnVtQ29uc3RhbnQ6UkVECisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpSWRlbnRpZmllcjpSRUQoJ1JFRCcpCisgICAgICBQc2lFeHByZXNzaW9uTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lKYXZhVG9rZW46Q09NTUEoJywnKQorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUVudW1Db25zdGFudDpHUkVFTgorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUlkZW50aWZpZXI6R1JFRU4oJ0dSRUVOJykKKyAgICAgIFBzaUV4cHJlc3Npb25MaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUphdmFUb2tlbjpDT01NQSgnLCcpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpRW51bUNvbnN0YW50OkJMVUUKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lJZGVudGlmaWVyOkJMVUUoJ0JMVUUnKQorICAgICAgUHNpRXhwcmVzc2lvbkxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpSmF2YVRva2VuOlNFTUlDT0xPTignOycpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4nKQorICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZGVjbGFyYXRpb25QYXJzaW5nL2NsYXNzL0VudW1XaXRoQ29uc3RhbnRzMy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9kZWNsYXJhdGlvblBhcnNpbmcvY2xhc3MvRW51bVdpdGhDb25zdGFudHMzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTk1MmIyZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZGVjbGFyYXRpb25QYXJzaW5nL2NsYXNzL0VudW1XaXRoQ29uc3RhbnRzMy5qYXZhCkBAIC0wLDAgKzEsMyBAQAorcHVibGljIGVudW0gT3VyRW51bSB7CisgIFJFRCwgR1JFRU4sIEJMVUUKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2RlY2xhcmF0aW9uUGFyc2luZy9jbGFzcy9FbnVtV2l0aENvbnN0YW50czMudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9kZWNsYXJhdGlvblBhcnNpbmcvY2xhc3MvRW51bVdpdGhDb25zdGFudHMzLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40Y2RhMDU4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9kZWNsYXJhdGlvblBhcnNpbmcvY2xhc3MvRW51bVdpdGhDb25zdGFudHMzLnR4dApAQCAtMCwwICsxLDQzIEBACitQc2lKYXZhRmlsZTpFbnVtV2l0aENvbnN0YW50czMuamF2YQorICBQc2lJbXBvcnRMaXN0CisgICAgPGVtcHR5IGxpc3Q+CisgIFBzaUNsYXNzOk91ckVudW0KKyAgICBQc2lNb2RpZmllckxpc3Q6cHVibGljCisgICAgICBQc2lLZXl3b3JkOnB1YmxpYygncHVibGljJykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lLZXl3b3JkOmVudW0oJ2VudW0nKQorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUlkZW50aWZpZXI6T3VyRW51bSgnT3VyRW51bScpCisgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAnKQorICAgIFBzaUVudW1Db25zdGFudDpSRUQKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lJZGVudGlmaWVyOlJFRCgnUkVEJykKKyAgICAgIFBzaUV4cHJlc3Npb25MaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUphdmFUb2tlbjpDT01NQSgnLCcpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpRW51bUNvbnN0YW50OkdSRUVOCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpSWRlbnRpZmllcjpHUkVFTignR1JFRU4nKQorICAgICAgUHNpRXhwcmVzc2lvbkxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpSmF2YVRva2VuOkNPTU1BKCcsJykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lFbnVtQ29uc3RhbnQ6QkxVRQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUlkZW50aWZpZXI6QkxVRSgnQkxVRScpCisgICAgICBQc2lFeHByZXNzaW9uTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lXaGl0ZVNwYWNlKCdcbicpCisgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9kZWNsYXJhdGlvblBhcnNpbmcvY2xhc3MvRW51bVdpdGhDb25zdGFudHM0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2RlY2xhcmF0aW9uUGFyc2luZy9jbGFzcy9FbnVtV2l0aENvbnN0YW50czQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNjdkMzVkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9kZWNsYXJhdGlvblBhcnNpbmcvY2xhc3MvRW51bVdpdGhDb25zdGFudHM0LmphdmEKQEAgLTAsMCArMSwzIEBACitwdWJsaWMgZW51bSBPdXJFbnVtIHsKKyAgUkVELCBHUkVFTiwgQkxVRSwKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2RlY2xhcmF0aW9uUGFyc2luZy9jbGFzcy9FbnVtV2l0aENvbnN0YW50czQudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9kZWNsYXJhdGlvblBhcnNpbmcvY2xhc3MvRW51bVdpdGhDb25zdGFudHM0LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMzM4Zjk2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9kZWNsYXJhdGlvblBhcnNpbmcvY2xhc3MvRW51bVdpdGhDb25zdGFudHM0LnR4dApAQCAtMCwwICsxLDQ0IEBACitQc2lKYXZhRmlsZTpFbnVtV2l0aENvbnN0YW50czQuamF2YQorICBQc2lJbXBvcnRMaXN0CisgICAgPGVtcHR5IGxpc3Q+CisgIFBzaUNsYXNzOk91ckVudW0KKyAgICBQc2lNb2RpZmllckxpc3Q6cHVibGljCisgICAgICBQc2lLZXl3b3JkOnB1YmxpYygncHVibGljJykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lLZXl3b3JkOmVudW0oJ2VudW0nKQorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUlkZW50aWZpZXI6T3VyRW51bSgnT3VyRW51bScpCisgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAnKQorICAgIFBzaUVudW1Db25zdGFudDpSRUQKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lJZGVudGlmaWVyOlJFRCgnUkVEJykKKyAgICAgIFBzaUV4cHJlc3Npb25MaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUphdmFUb2tlbjpDT01NQSgnLCcpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpRW51bUNvbnN0YW50OkdSRUVOCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpSWRlbnRpZmllcjpHUkVFTignR1JFRU4nKQorICAgICAgUHNpRXhwcmVzc2lvbkxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpSmF2YVRva2VuOkNPTU1BKCcsJykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lFbnVtQ29uc3RhbnQ6QkxVRQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUlkZW50aWZpZXI6QkxVRSgnQkxVRScpCisgICAgICBQc2lFeHByZXNzaW9uTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lKYXZhVG9rZW46Q09NTUEoJywnKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuJykKKyAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2RlY2xhcmF0aW9uUGFyc2luZy9jbGFzcy9FbnVtV2l0aENvbnN0YW50czUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZGVjbGFyYXRpb25QYXJzaW5nL2NsYXNzL0VudW1XaXRoQ29uc3RhbnRzNS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY3YjBjMjIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2RlY2xhcmF0aW9uUGFyc2luZy9jbGFzcy9FbnVtV2l0aENvbnN0YW50czUuamF2YQpAQCAtMCwwICsxLDYgQEAKK3B1YmxpYyBlbnVtIE91ckVudW0geworICBSRUQsIEdSRUVOLCBCTFVFCisKKyAgT3VyRW51bSgpIHsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZGVjbGFyYXRpb25QYXJzaW5nL2NsYXNzL0VudW1XaXRoQ29uc3RhbnRzNS50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2RlY2xhcmF0aW9uUGFyc2luZy9jbGFzcy9FbnVtV2l0aENvbnN0YW50czUudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE2MTI1MDAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2RlY2xhcmF0aW9uUGFyc2luZy9jbGFzcy9FbnVtV2l0aENvbnN0YW50czUudHh0CkBAIC0wLDAgKzEsNjIgQEAKK1BzaUphdmFGaWxlOkVudW1XaXRoQ29uc3RhbnRzNS5qYXZhCisgIFBzaUltcG9ydExpc3QKKyAgICA8ZW1wdHkgbGlzdD4KKyAgUHNpQ2xhc3M6T3VyRW51bQorICAgIFBzaU1vZGlmaWVyTGlzdDpwdWJsaWMKKyAgICAgIFBzaUtleXdvcmQ6cHVibGljKCdwdWJsaWMnKQorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUtleXdvcmQ6ZW51bSgnZW51bScpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSWRlbnRpZmllcjpPdXJFbnVtKCdPdXJFbnVtJykKKyAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4gICcpCisgICAgUHNpRW51bUNvbnN0YW50OlJFRAorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUlkZW50aWZpZXI6UkVEKCdSRUQnKQorICAgICAgUHNpRXhwcmVzc2lvbkxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpSmF2YVRva2VuOkNPTU1BKCcsJykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lFbnVtQ29uc3RhbnQ6R1JFRU4KKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lJZGVudGlmaWVyOkdSRUVOKCdHUkVFTicpCisgICAgICBQc2lFeHByZXNzaW9uTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lKYXZhVG9rZW46Q09NTUEoJywnKQorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUVudW1Db25zdGFudDpCTFVFCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpSWRlbnRpZmllcjpCTFVFKCdCTFVFJykKKyAgICAgIFBzaUV4cHJlc3Npb25MaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUVycm9yRWxlbWVudDonLCcgb3IgJzsnIGV4cGVjdGVkCisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICAnKQorICAgIFBzaU1ldGhvZDpPdXJFbnVtCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lJZGVudGlmaWVyOk91ckVudW0oJ091ckVudW0nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4nKQorICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZGVjbGFyYXRpb25QYXJzaW5nL2NsYXNzL0VudW1XaXRoQ29uc3RhbnRzNi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9kZWNsYXJhdGlvblBhcnNpbmcvY2xhc3MvRW51bVdpdGhDb25zdGFudHM2LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmRkMGMyYwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZGVjbGFyYXRpb25QYXJzaW5nL2NsYXNzL0VudW1XaXRoQ29uc3RhbnRzNi5qYXZhCkBAIC0wLDAgKzEsMyBAQAorcHVibGljIGVudW0gT3VyRW51bSB7CisgIFJFRCgwKSwgR1JFRU4oMSksIEJMVUUoMik7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9kZWNsYXJhdGlvblBhcnNpbmcvY2xhc3MvRW51bVdpdGhDb25zdGFudHM2LnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZGVjbGFyYXRpb25QYXJzaW5nL2NsYXNzL0VudW1XaXRoQ29uc3RhbnRzNi50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGY4NGVmMwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZGVjbGFyYXRpb25QYXJzaW5nL2NsYXNzL0VudW1XaXRoQ29uc3RhbnRzNi50eHQKQEAgLTAsMCArMSw1MyBAQAorUHNpSmF2YUZpbGU6RW51bVdpdGhDb25zdGFudHM2LmphdmEKKyAgUHNpSW1wb3J0TGlzdAorICAgIDxlbXB0eSBsaXN0PgorICBQc2lDbGFzczpPdXJFbnVtCisgICAgUHNpTW9kaWZpZXJMaXN0OnB1YmxpYworICAgICAgUHNpS2V5d29yZDpwdWJsaWMoJ3B1YmxpYycpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpS2V5d29yZDplbnVtKCdlbnVtJykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lJZGVudGlmaWVyOk91ckVudW0oJ091ckVudW0nKQorICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgJykKKyAgICBQc2lFbnVtQ29uc3RhbnQ6UkVECisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpSWRlbnRpZmllcjpSRUQoJ1JFRCcpCisgICAgICBQc2lFeHByZXNzaW9uTGlzdAorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lMaXRlcmFsRXhwcmVzc2lvbjowCisgICAgICAgICAgUHNpSmF2YVRva2VuOklOVEVHRVJfTElURVJBTCgnMCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgUHNpSmF2YVRva2VuOkNPTU1BKCcsJykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lFbnVtQ29uc3RhbnQ6R1JFRU4KKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lJZGVudGlmaWVyOkdSRUVOKCdHUkVFTicpCisgICAgICBQc2lFeHByZXNzaW9uTGlzdAorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lMaXRlcmFsRXhwcmVzc2lvbjoxCisgICAgICAgICAgUHNpSmF2YVRva2VuOklOVEVHRVJfTElURVJBTCgnMScpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgUHNpSmF2YVRva2VuOkNPTU1BKCcsJykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lFbnVtQ29uc3RhbnQ6QkxVRQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUlkZW50aWZpZXI6QkxVRSgnQkxVRScpCisgICAgICBQc2lFeHByZXNzaW9uTGlzdAorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lMaXRlcmFsRXhwcmVzc2lvbjoyCisgICAgICAgICAgUHNpSmF2YVRva2VuOklOVEVHRVJfTElURVJBTCgnMicpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgUHNpSmF2YVRva2VuOlNFTUlDT0xPTignOycpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4nKQorICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZGVjbGFyYXRpb25QYXJzaW5nL2NsYXNzL0VudW1XaXRoSW1wb3J0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2RlY2xhcmF0aW9uUGFyc2luZy9jbGFzcy9FbnVtV2l0aEltcG9ydC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNmYzk2ZmMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2RlY2xhcmF0aW9uUGFyc2luZy9jbGFzcy9FbnVtV2l0aEltcG9ydC5qYXZhCkBAIC0wLDAgKzEsMyBAQAorcHVibGljIGVudW0gT3VyRW51bSB7CisgIDsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2RlY2xhcmF0aW9uUGFyc2luZy9jbGFzcy9FbnVtV2l0aEltcG9ydC50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2RlY2xhcmF0aW9uUGFyc2luZy9jbGFzcy9FbnVtV2l0aEltcG9ydC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGZmOGExZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZGVjbGFyYXRpb25QYXJzaW5nL2NsYXNzL0VudW1XaXRoSW1wb3J0LnR4dApAQCAtMCwwICsxLDIyIEBACitQc2lKYXZhRmlsZTpFbnVtV2l0aEltcG9ydC5qYXZhCisgIFBzaUltcG9ydExpc3QKKyAgICA8ZW1wdHkgbGlzdD4KKyAgUHNpQ2xhc3M6T3VyRW51bQorICAgIFBzaU1vZGlmaWVyTGlzdDpwdWJsaWMKKyAgICAgIFBzaUtleXdvcmQ6cHVibGljKCdwdWJsaWMnKQorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUtleXdvcmQ6ZW51bSgnZW51bScpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSWRlbnRpZmllcjpPdXJFbnVtKCdPdXJFbnVtJykKKyAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4gICcpCisgICAgUHNpSmF2YVRva2VuOlNFTUlDT0xPTignOycpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4nKQorICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZGVjbGFyYXRpb25QYXJzaW5nL2NsYXNzL0VudW1XaXRoSW5pdGlhbGl6ZWRDb25zdGFudHMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZGVjbGFyYXRpb25QYXJzaW5nL2NsYXNzL0VudW1XaXRoSW5pdGlhbGl6ZWRDb25zdGFudHMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYThkMDdhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9kZWNsYXJhdGlvblBhcnNpbmcvY2xhc3MvRW51bVdpdGhJbml0aWFsaXplZENvbnN0YW50cy5qYXZhCkBAIC0wLDAgKzEsNiBAQAorZW51bSBPdXJFbnVtIHsKKyAgQSgxMCkgeyB9LAorICBCIHsKKyAgICB2b2lkIG1ldGhvZCgpIHt9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2RlY2xhcmF0aW9uUGFyc2luZy9jbGFzcy9FbnVtV2l0aEluaXRpYWxpemVkQ29uc3RhbnRzLnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZGVjbGFyYXRpb25QYXJzaW5nL2NsYXNzL0VudW1XaXRoSW5pdGlhbGl6ZWRDb25zdGFudHMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU1M2Y0YzIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2RlY2xhcmF0aW9uUGFyc2luZy9jbGFzcy9FbnVtV2l0aEluaXRpYWxpemVkQ29uc3RhbnRzLnR4dApAQCAtMCwwICsxLDY2IEBACitQc2lKYXZhRmlsZTpFbnVtV2l0aEluaXRpYWxpemVkQ29uc3RhbnRzLmphdmEKKyAgUHNpSW1wb3J0TGlzdAorICAgIDxlbXB0eSBsaXN0PgorICBQc2lDbGFzczpPdXJFbnVtCisgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpS2V5d29yZDplbnVtKCdlbnVtJykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lJZGVudGlmaWVyOk91ckVudW0oJ091ckVudW0nKQorICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgJykKKyAgICBQc2lFbnVtQ29uc3RhbnQ6QQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUlkZW50aWZpZXI6QSgnQScpCisgICAgICBQc2lFeHByZXNzaW9uTGlzdAorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lMaXRlcmFsRXhwcmVzc2lvbjoxMAorICAgICAgICAgIFBzaUphdmFUb2tlbjpJTlRFR0VSX0xJVEVSQUwoJzEwJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpQW5vbnltb3VzQ2xhc3MgKFBzaUVudW1Db25zdGFudEluaXRpYWxpemVySW1wbCkpOgorICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaUphdmFUb2tlbjpDT01NQSgnLCcpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4gICcpCisgICAgUHNpRW51bUNvbnN0YW50OkIKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lJZGVudGlmaWVyOkIoJ0InKQorICAgICAgUHNpRXhwcmVzc2lvbkxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUFub255bW91c0NsYXNzIChQc2lFbnVtQ29uc3RhbnRJbml0aWFsaXplckltcGwpKToKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAgICcpCisgICAgICAgIFBzaU1ldGhvZDptZXRob2QKKyAgICAgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgICAgICBQc2lJZGVudGlmaWVyOm1ldGhvZCgnbWV0aG9kJykKKyAgICAgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAnKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcbicpCisgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9kZWNsYXJhdGlvblBhcnNpbmcvY2xhc3MvRW51bVdpdGhvdXRDb25zdGFudHMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZGVjbGFyYXRpb25QYXJzaW5nL2NsYXNzL0VudW1XaXRob3V0Q29uc3RhbnRzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWZkYWQ4MwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZGVjbGFyYXRpb25QYXJzaW5nL2NsYXNzL0VudW1XaXRob3V0Q29uc3RhbnRzLmphdmEKQEAgLTAsMCArMSwzIEBACitwdWJsaWMgZW51bSBPdXJFbnVtIHsKKyAgcHJpdmF0ZSBBCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9kZWNsYXJhdGlvblBhcnNpbmcvY2xhc3MvRW51bVdpdGhvdXRDb25zdGFudHMudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9kZWNsYXJhdGlvblBhcnNpbmcvY2xhc3MvRW51bVdpdGhvdXRDb25zdGFudHMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVlNjFmM2IKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2RlY2xhcmF0aW9uUGFyc2luZy9jbGFzcy9FbnVtV2l0aG91dENvbnN0YW50cy50eHQKQEAgLTAsMCArMSwzMyBAQAorUHNpSmF2YUZpbGU6RW51bVdpdGhvdXRDb25zdGFudHMuamF2YQorICBQc2lJbXBvcnRMaXN0CisgICAgPGVtcHR5IGxpc3Q+CisgIFBzaUNsYXNzOk91ckVudW0KKyAgICBQc2lNb2RpZmllckxpc3Q6cHVibGljCisgICAgICBQc2lLZXl3b3JkOnB1YmxpYygncHVibGljJykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lLZXl3b3JkOmVudW0oJ2VudW0nKQorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUlkZW50aWZpZXI6T3VyRW51bSgnT3VyRW51bScpCisgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgIFBzaUVycm9yRWxlbWVudDonOycgZXhwZWN0ZWQKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAnKQorICAgIFBzaU1vZGlmaWVyTGlzdDpwcml2YXRlCisgICAgICBQc2lLZXl3b3JkOnByaXZhdGUoJ3ByaXZhdGUnKQorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaVR5cGVFbGVtZW50OkEKKyAgICAgIFBzaUphdmFDb2RlUmVmZXJlbmNlRWxlbWVudDpBCisgICAgICAgIFBzaUlkZW50aWZpZXI6QSgnQScpCisgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lFcnJvckVsZW1lbnQ6SWRlbnRpZmllciBleHBlY3RlZAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpV2hpdGVTcGFjZSgnXG4nKQorICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZGVjbGFyYXRpb25QYXJzaW5nL2NsYXNzL0Vycm9yczAuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZGVjbGFyYXRpb25QYXJzaW5nL2NsYXNzL0Vycm9yczAuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MTkxZTJiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9kZWNsYXJhdGlvblBhcnNpbmcvY2xhc3MvRXJyb3JzMC5qYXZhCkBAIC0wLDAgKzEgQEAKK3B1YmxpYyBjbGFzcyA8Y2FyZXQ+QiB7fQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZGVjbGFyYXRpb25QYXJzaW5nL2NsYXNzL0Vycm9yczAudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9kZWNsYXJhdGlvblBhcnNpbmcvY2xhc3MvRXJyb3JzMC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDk0YmJhZmQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2RlY2xhcmF0aW9uUGFyc2luZy9jbGFzcy9FcnJvcnMwLnR4dApAQCAtMCwwICsxLDI2IEBACitQc2lKYXZhRmlsZTpFcnJvcnMwLmphdmEKKyAgUHNpSW1wb3J0TGlzdAorICAgIDxlbXB0eSBsaXN0PgorICBQc2lNb2RpZmllckxpc3Q6cHVibGljCisgICAgUHNpS2V5d29yZDpwdWJsaWMoJ3B1YmxpYycpCisgIFBzaVdoaXRlU3BhY2UoJyAnKQorICBQc2lLZXl3b3JkOmNsYXNzKCdjbGFzcycpCisgIFBzaUVycm9yRWxlbWVudDpJZGVudGlmaWVyIGV4cGVjdGVkCisgICAgPGVtcHR5IGxpc3Q+CisgIFBzaVdoaXRlU3BhY2UoJyAnKQorICBQc2lNb2RpZmllckxpc3Q6CisgICAgPGVtcHR5IGxpc3Q+CisgIFBzaUVycm9yRWxlbWVudDonY2xhc3MnIG9yICdpbnRlcmZhY2UnIGV4cGVjdGVkCisgICAgPGVtcHR5IGxpc3Q+CisgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgUHNpSmF2YVRva2VuOkxUKCc8JykKKyAgICBQc2lUeXBlUGFyYW1ldGVyOmNhcmV0CisgICAgICBQc2lJZGVudGlmaWVyOmNhcmV0KCdjYXJldCcpCisgICAgICBQc2lFbGVtZW50KEVYVEVORFNfQk9VTkRfTElTVCkKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpSmF2YVRva2VuOkdUKCc+JykKKyAgUHNpRXJyb3JFbGVtZW50OidjbGFzcycgb3IgJ2ludGVyZmFjZScgZXhwZWN0ZWQKKyAgICBQc2lJZGVudGlmaWVyOkIoJ0InKQorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZGVjbGFyYXRpb25QYXJzaW5nL2NsYXNzL0Vycm9yczEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZGVjbGFyYXRpb25QYXJzaW5nL2NsYXNzL0Vycm9yczEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YjFkZTZmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9kZWNsYXJhdGlvblBhcnNpbmcvY2xhc3MvRXJyb3JzMS5qYXZhCkBAIC0wLDAgKzEsNCBAQAorLy8gIlJlcGxhY2UgSW1wbGVtZW50cyB3aXRoIFN0YXRpYyBJbXBvcnQiICJ0cnVlIgoraW50ZXJmYWNlIEk8Y2FyZXQ+biB7CisgICAgaW50IEZPTyA9IDA7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9kZWNsYXJhdGlvblBhcnNpbmcvY2xhc3MvRXJyb3JzMS50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2RlY2xhcmF0aW9uUGFyc2luZy9jbGFzcy9FcnJvcnMxLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mOThkYzBkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9kZWNsYXJhdGlvblBhcnNpbmcvY2xhc3MvRXJyb3JzMS50eHQKQEAgLTAsMCArMSw0MiBAQAorUHNpSmF2YUZpbGU6RXJyb3JzMS5qYXZhCisgIFBzaUltcG9ydExpc3QKKyAgICA8ZW1wdHkgbGlzdD4KKyAgUHNpQ2xhc3M6SQorICAgIFBzaUNvbW1lbnQoRU5EX09GX0xJTkVfQ09NTUVOVCkoJy8vICJSZXBsYWNlIEltcGxlbWVudHMgd2l0aCBTdGF0aWMgSW1wb3J0IiAidHJ1ZSInKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuJykKKyAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lLZXl3b3JkOmludGVyZmFjZSgnaW50ZXJmYWNlJykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lJZGVudGlmaWVyOkkoJ0knKQorICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICBQc2lKYXZhVG9rZW46TFQoJzwnKQorICAgICAgUHNpVHlwZVBhcmFtZXRlcjpjYXJldAorICAgICAgICBQc2lJZGVudGlmaWVyOmNhcmV0KCdjYXJldCcpCisgICAgICAgIFBzaUVsZW1lbnQoRVhURU5EU19CT1VORF9MSVNUKQorICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpSmF2YVRva2VuOkdUKCc+JykKKyAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lFcnJvckVsZW1lbnQ6J3snIGV4cGVjdGVkCisgICAgICBQc2lJZGVudGlmaWVyOm4oJ24nKQorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAgICcpCisgICAgUHNpRmllbGQ6Rk9PCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6aW50CisgICAgICAgIFBzaUtleXdvcmQ6aW50KCdpbnQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOkZPTygnRk9PJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSmF2YVRva2VuOkVRKCc9JykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpTGl0ZXJhbEV4cHJlc3Npb246MAorICAgICAgICBQc2lKYXZhVG9rZW46SU5URUdFUl9MSVRFUkFMKCcwJykKKyAgICAgIFBzaUphdmFUb2tlbjpTRU1JQ09MT04oJzsnKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuJykKKyAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2RlY2xhcmF0aW9uUGFyc2luZy9jbGFzcy9FcnJvcnMyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2RlY2xhcmF0aW9uUGFyc2luZy9jbGFzcy9FcnJvcnMyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjJjNGM4OQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZGVjbGFyYXRpb25QYXJzaW5nL2NsYXNzL0Vycm9yczIuamF2YQpAQCAtMCwwICsxLDMgQEAKK3B1YmxpYyBjbGFzcyBNYWluIHsKK0BpbnRlcmZhY2UgPGNhcmV0PgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZGVjbGFyYXRpb25QYXJzaW5nL2NsYXNzL0Vycm9yczIudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9kZWNsYXJhdGlvblBhcnNpbmcvY2xhc3MvRXJyb3JzMi50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjRmZjU3MwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZGVjbGFyYXRpb25QYXJzaW5nL2NsYXNzL0Vycm9yczIudHh0CkBAIC0wLDAgKzEsMzggQEAKK1BzaUphdmFGaWxlOkVycm9yczIuamF2YQorICBQc2lJbXBvcnRMaXN0CisgICAgPGVtcHR5IGxpc3Q+CisgIFBzaUNsYXNzOk1haW4KKyAgICBQc2lNb2RpZmllckxpc3Q6cHVibGljCisgICAgICBQc2lLZXl3b3JkOnB1YmxpYygncHVibGljJykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lLZXl3b3JkOmNsYXNzKCdjbGFzcycpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSWRlbnRpZmllcjpNYWluKCdNYWluJykKKyAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4nKQorICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUphdmFUb2tlbjpBVCgnQCcpCisgICAgUHNpS2V5d29yZDppbnRlcmZhY2UoJ2ludGVyZmFjZScpCisgICAgUHNpRXJyb3JFbGVtZW50OklkZW50aWZpZXIgZXhwZWN0ZWQKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUVycm9yRWxlbWVudDpJZGVudGlmaWVyIG9yIHR5cGUgZXhwZWN0ZWQKKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIFBzaUphdmFUb2tlbjpMVCgnPCcpCisgICAgICAgIFBzaVR5cGVQYXJhbWV0ZXI6Y2FyZXQKKyAgICAgICAgICBQc2lJZGVudGlmaWVyOmNhcmV0KCdjYXJldCcpCisgICAgICAgICAgUHNpRWxlbWVudChFWFRFTkRTX0JPVU5EX0xJU1QpCisgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgUHNpSmF2YVRva2VuOkdUKCc+JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcbicpCisgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9kZWNsYXJhdGlvblBhcnNpbmcvY2xhc3MvRXJyb3JzMy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9kZWNsYXJhdGlvblBhcnNpbmcvY2xhc3MvRXJyb3JzMy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMzZmUxY2MKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2RlY2xhcmF0aW9uUGFyc2luZy9jbGFzcy9FcnJvcnMzLmphdmEKQEAgLTAsMCArMSw1IEBACitjbGFzcyBDIHsKKyAgcHVibGljIE9iamVjdCBmYShpbnQgdG9EZWxldGUpIHNkZnNrZGxmYWJjZGF2Y2QgeworICAgIHJldHVybiBudWxsOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9kZWNsYXJhdGlvblBhcnNpbmcvY2xhc3MvRXJyb3JzMy50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2RlY2xhcmF0aW9uUGFyc2luZy9jbGFzcy9FcnJvcnMzLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNzFlYjMwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9kZWNsYXJhdGlvblBhcnNpbmcvY2xhc3MvRXJyb3JzMy50eHQKQEAgLTAsMCArMSw2MCBAQAorUHNpSmF2YUZpbGU6RXJyb3JzMy5qYXZhCisgIFBzaUltcG9ydExpc3QKKyAgICA8ZW1wdHkgbGlzdD4KKyAgUHNpQ2xhc3M6QworICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUtleXdvcmQ6Y2xhc3MoJ2NsYXNzJykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lJZGVudGlmaWVyOkMoJ0MnKQorICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgJykKKyAgICBQc2lNZXRob2Q6ZmEKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDpwdWJsaWMKKyAgICAgICAgUHNpS2V5d29yZDpwdWJsaWMoJ3B1YmxpYycpCisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpVHlwZUVsZW1lbnQ6T2JqZWN0CisgICAgICAgIFBzaUphdmFDb2RlUmVmZXJlbmNlRWxlbWVudDpPYmplY3QKKyAgICAgICAgICBQc2lJZGVudGlmaWVyOk9iamVjdCgnT2JqZWN0JykKKyAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmYSgnZmEnKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooaW50IHRvRGVsZXRlKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lQYXJhbWV0ZXI6dG9EZWxldGUKKyAgICAgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICBQc2lUeXBlRWxlbWVudDppbnQKKyAgICAgICAgICAgIFBzaUtleXdvcmQ6aW50KCdpbnQnKQorICAgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICAgIFBzaUlkZW50aWZpZXI6dG9EZWxldGUoJ3RvRGVsZXRlJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUVycm9yRWxlbWVudDoneycgb3IgJzsnIGV4cGVjdGVkCisgICAgICAgIFBzaUlkZW50aWZpZXI6c2Rmc2tkbGZhYmNkYXZjZCgnc2Rmc2tkbGZhYmNkYXZjZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gICAgJykKKyAgICAgICAgUHNpUmV0dXJuU3RhdGVtZW50CisgICAgICAgICAgUHNpS2V5d29yZDpyZXR1cm4oJ3JldHVybicpCisgICAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgICAgUHNpTGl0ZXJhbEV4cHJlc3Npb246bnVsbAorICAgICAgICAgICAgUHNpSmF2YVRva2VuOk5VTExfS0VZV09SRCgnbnVsbCcpCisgICAgICAgICAgUHNpSmF2YVRva2VuOlNFTUlDT0xPTignOycpCisgICAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAnKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcbicpCisgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9kZWNsYXJhdGlvblBhcnNpbmcvY2xhc3MvRXJyb3JzNC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9kZWNsYXJhdGlvblBhcnNpbmcvY2xhc3MvRXJyb3JzNC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjczZTMxOGUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2RlY2xhcmF0aW9uUGFyc2luZy9jbGFzcy9FcnJvcnM0LmphdmEKQEAgLTAsMCArMSw2IEBACitjbGFzcyBPdXRPZk1lbW9yeUV4Y2VwdGlvbkRlbW8geworICAgIHZvaWQgbWFpbigpIHsKKyAgICAgICAgTGlzdDxPYmplY3Q+IGxpc3QgPSBuZXcgTGlua2VkCisgICAgICAgIEBEZXByZWNhdGVkIExpc3Q8T2JqZWN0PigpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZGVjbGFyYXRpb25QYXJzaW5nL2NsYXNzL0Vycm9yczQudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9kZWNsYXJhdGlvblBhcnNpbmcvY2xhc3MvRXJyb3JzNC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODM4MDI1MwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZGVjbGFyYXRpb25QYXJzaW5nL2NsYXNzL0Vycm9yczQudHh0CkBAIC0wLDAgKzEsMTA0IEBACitQc2lKYXZhRmlsZTpFcnJvcnM0LmphdmEKKyAgUHNpSW1wb3J0TGlzdAorICAgIDxlbXB0eSBsaXN0PgorICBQc2lDbGFzczpPdXRPZk1lbW9yeUV4Y2VwdGlvbkRlbW8KKyAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lLZXl3b3JkOmNsYXNzKCdjbGFzcycpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSWRlbnRpZmllcjpPdXRPZk1lbW9yeUV4Y2VwdGlvbkRlbW8oJ091dE9mTWVtb3J5RXhjZXB0aW9uRGVtbycpCisgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAgICcpCisgICAgUHNpTWV0aG9kOm1haW4KKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjptYWluKCdtYWluJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gICAgICAgICcpCisgICAgICAgIFBzaURlY2xhcmF0aW9uU3RhdGVtZW50CisgICAgICAgICAgUHNpTG9jYWxWYXJpYWJsZTpsaXN0CisgICAgICAgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgICAgUHNpVHlwZUVsZW1lbnQ6TGlzdDxPYmplY3Q+CisgICAgICAgICAgICAgIFBzaUphdmFDb2RlUmVmZXJlbmNlRWxlbWVudDpMaXN0PE9iamVjdD4KKyAgICAgICAgICAgICAgICBQc2lJZGVudGlmaWVyOkxpc3QoJ0xpc3QnKQorICAgICAgICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgICAgICAgIFBzaUphdmFUb2tlbjpMVCgnPCcpCisgICAgICAgICAgICAgICAgICBQc2lUeXBlRWxlbWVudDpPYmplY3QKKyAgICAgICAgICAgICAgICAgICAgUHNpSmF2YUNvZGVSZWZlcmVuY2VFbGVtZW50Ok9iamVjdAorICAgICAgICAgICAgICAgICAgICAgIFBzaUlkZW50aWZpZXI6T2JqZWN0KCdPYmplY3QnKQorICAgICAgICAgICAgICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOkdUKCc+JykKKyAgICAgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICAgICAgUHNpSWRlbnRpZmllcjpsaXN0KCdsaXN0JykKKyAgICAgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICAgICAgUHNpSmF2YVRva2VuOkVRKCc9JykKKyAgICAgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICAgICAgUHNpTmV3RXhwcmVzc2lvbjpuZXcgTGlua2VkCisgICAgICAgICAgICAgIFBzaUtleXdvcmQ6bmV3KCduZXcnKQorICAgICAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICAgICAgICBQc2lKYXZhQ29kZVJlZmVyZW5jZUVsZW1lbnQ6TGlua2VkCisgICAgICAgICAgICAgICAgUHNpSWRlbnRpZmllcjpMaW5rZWQoJ0xpbmtlZCcpCisgICAgICAgICAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgICAgIFBzaUVycm9yRWxlbWVudDonKCcgb3IgJ1snIGV4cGVjdGVkCisgICAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgICBQc2lFcnJvckVsZW1lbnQ6JzsnIGV4cGVjdGVkCisgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgICAgICAgJykKKyAgICAgICAgUHNpRGVjbGFyYXRpb25TdGF0ZW1lbnQKKyAgICAgICAgICBQc2lUeXBlRWxlbWVudDpARGVwcmVjYXRlZCBMaXN0PE9iamVjdD4KKyAgICAgICAgICAgIFBzaUFubm90YXRpb24KKyAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOkFUKCdAJykKKyAgICAgICAgICAgICAgUHNpSmF2YUNvZGVSZWZlcmVuY2VFbGVtZW50OkRlcHJlY2F0ZWQKKyAgICAgICAgICAgICAgICBQc2lJZGVudGlmaWVyOkRlcHJlY2F0ZWQoJ0RlcHJlY2F0ZWQnKQorICAgICAgICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgICAgICBQc2lBbm5vdGF0aW9uUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgICAgICBQc2lKYXZhQ29kZVJlZmVyZW5jZUVsZW1lbnQ6TGlzdDxPYmplY3Q+CisgICAgICAgICAgICAgIFBzaUlkZW50aWZpZXI6TGlzdCgnTGlzdCcpCisgICAgICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgICAgICBQc2lKYXZhVG9rZW46TFQoJzwnKQorICAgICAgICAgICAgICAgIFBzaVR5cGVFbGVtZW50Ok9iamVjdAorICAgICAgICAgICAgICAgICAgUHNpSmF2YUNvZGVSZWZlcmVuY2VFbGVtZW50Ok9iamVjdAorICAgICAgICAgICAgICAgICAgICBQc2lJZGVudGlmaWVyOk9iamVjdCgnT2JqZWN0JykKKyAgICAgICAgICAgICAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgICAgICAgIFBzaUphdmFUb2tlbjpHVCgnPicpCisgICAgICAgICAgUHNpRXJyb3JFbGVtZW50OklkZW50aWZpZXIgZXhwZWN0ZWQKKyAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICBQc2lFeHByZXNzaW9uU3RhdGVtZW50CisgICAgICAgICAgUHNpUGFyZW50aGVzaXplZEV4cHJlc3Npb246KCkKKyAgICAgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgICAgICBQc2lFcnJvckVsZW1lbnQ6RXhwcmVzc2lvbiBleHBlY3RlZAorICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICAgICAgUHNpSmF2YVRva2VuOlNFTUlDT0xPTignOycpCisgICAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAgICcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuJykKKyAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2RlY2xhcmF0aW9uUGFyc2luZy9jbGFzcy9FcnJvcnM1LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2RlY2xhcmF0aW9uUGFyc2luZy9jbGFzcy9FcnJvcnM1LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTg4ZGI2YgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZGVjbGFyYXRpb25QYXJzaW5nL2NsYXNzL0Vycm9yczUuamF2YQpAQCAtMCwwICsxLDIyIEBACisvKgorICogQ29weXJpZ2h0IDIwMDAtMjAxMiBKZXRCcmFpbnMgcy5yLm8uCisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcHJpdmF0ZSBzdGF0aWMgY2xhc3MgTXkgZXh0ZW5kcyBKQ29tcG9uZW50IHsKKyAgcHJpdmF0ZSBNeShNYXA8U3RyaW5nLCBMaXN0PE9iamVjdD4+IHBhcmFtKSB7CisgICAgc2V0Qm9yZGVyKG51bGwpOworICAgIHBhcmFtCisgICAgbGlzdCgpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9kZWNsYXJhdGlvblBhcnNpbmcvY2xhc3MvRXJyb3JzNS50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2RlY2xhcmF0aW9uUGFyc2luZy9jbGFzcy9FcnJvcnM1LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45M2VlNTExCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9kZWNsYXJhdGlvblBhcnNpbmcvY2xhc3MvRXJyb3JzNS50eHQKQEAgLTAsMCArMSwxMDkgQEAKK1BzaUphdmFGaWxlOkVycm9yczUuamF2YQorICBQc2lJbXBvcnRMaXN0CisgICAgPGVtcHR5IGxpc3Q+CisgIFBzaUNsYXNzOk15CisgICAgUHNpQ29tbWVudChDX1NUWUxFX0NPTU1FTlQpKCcvKlxuICogQ29weXJpZ2h0IDIwMDAtMjAxMiBKZXRCcmFpbnMgcy5yLm8uXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqLycpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4nKQorICAgIFBzaU1vZGlmaWVyTGlzdDpwcml2YXRlIHN0YXRpYworICAgICAgUHNpS2V5d29yZDpwcml2YXRlKCdwcml2YXRlJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpS2V5d29yZDpzdGF0aWMoJ3N0YXRpYycpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpS2V5d29yZDpjbGFzcygnY2xhc3MnKQorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUlkZW50aWZpZXI6TXkoJ015JykKKyAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgUHNpS2V5d29yZDpleHRlbmRzKCdleHRlbmRzJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSmF2YUNvZGVSZWZlcmVuY2VFbGVtZW50OkpDb21wb25lbnQKKyAgICAgICAgUHNpSWRlbnRpZmllcjpKQ29tcG9uZW50KCdKQ29tcG9uZW50JykKKyAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAnKQorICAgIFBzaU1ldGhvZDpNeQorICAgICAgUHNpTW9kaWZpZXJMaXN0OnByaXZhdGUKKyAgICAgICAgUHNpS2V5d29yZDpwcml2YXRlKCdwcml2YXRlJykKKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOk15KCdNeScpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OihNYXA8U3RyaW5nLCBMaXN0PE9iamVjdD4+IHBhcmFtKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lQYXJhbWV0ZXI6cGFyYW0KKyAgICAgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICBQc2lUeXBlRWxlbWVudDpNYXA8U3RyaW5nLCBMaXN0PE9iamVjdD4+CisgICAgICAgICAgICBQc2lKYXZhQ29kZVJlZmVyZW5jZUVsZW1lbnQ6TWFwPFN0cmluZywgTGlzdDxPYmplY3Q+PgorICAgICAgICAgICAgICBQc2lJZGVudGlmaWVyOk1hcCgnTWFwJykKKyAgICAgICAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgICAgIFBzaUphdmFUb2tlbjpMVCgnPCcpCisgICAgICAgICAgICAgICAgUHNpVHlwZUVsZW1lbnQ6U3RyaW5nCisgICAgICAgICAgICAgICAgICBQc2lKYXZhQ29kZVJlZmVyZW5jZUVsZW1lbnQ6U3RyaW5nCisgICAgICAgICAgICAgICAgICAgIFBzaUlkZW50aWZpZXI6U3RyaW5nKCdTdHJpbmcnKQorICAgICAgICAgICAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOkNPTU1BKCcsJykKKyAgICAgICAgICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgICAgICAgICAgICBQc2lUeXBlRWxlbWVudDpMaXN0PE9iamVjdD4KKyAgICAgICAgICAgICAgICAgIFBzaUphdmFDb2RlUmVmZXJlbmNlRWxlbWVudDpMaXN0PE9iamVjdD4KKyAgICAgICAgICAgICAgICAgICAgUHNpSWRlbnRpZmllcjpMaXN0KCdMaXN0JykKKyAgICAgICAgICAgICAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgICAgICAgICAgIFBzaUphdmFUb2tlbjpMVCgnPCcpCisgICAgICAgICAgICAgICAgICAgICAgUHNpVHlwZUVsZW1lbnQ6T2JqZWN0CisgICAgICAgICAgICAgICAgICAgICAgICBQc2lKYXZhQ29kZVJlZmVyZW5jZUVsZW1lbnQ6T2JqZWN0CisgICAgICAgICAgICAgICAgICAgICAgICAgIFBzaUlkZW50aWZpZXI6T2JqZWN0KCdPYmplY3QnKQorICAgICAgICAgICAgICAgICAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOkdUKCc+JykKKyAgICAgICAgICAgICAgICBQc2lKYXZhVG9rZW46R1QoJz4nKQorICAgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICAgIFBzaUlkZW50aWZpZXI6cGFyYW0oJ3BhcmFtJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gICAgJykKKyAgICAgICAgUHNpRXhwcmVzc2lvblN0YXRlbWVudAorICAgICAgICAgIFBzaU1ldGhvZENhbGxFeHByZXNzaW9uOnNldEJvcmRlcihudWxsKQorICAgICAgICAgICAgUHNpUmVmZXJlbmNlRXhwcmVzc2lvbjpzZXRCb3JkZXIKKyAgICAgICAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgICAgICBQc2lJZGVudGlmaWVyOnNldEJvcmRlcignc2V0Qm9yZGVyJykKKyAgICAgICAgICAgIFBzaUV4cHJlc3Npb25MaXN0CisgICAgICAgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgICAgICAgIFBzaUxpdGVyYWxFeHByZXNzaW9uOm51bGwKKyAgICAgICAgICAgICAgICBQc2lKYXZhVG9rZW46TlVMTF9LRVlXT1JEKCdudWxsJykKKyAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgICAgICBQc2lKYXZhVG9rZW46U0VNSUNPTE9OKCc7JykKKyAgICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gICAgJykKKyAgICAgICAgUHNpRXhwcmVzc2lvblN0YXRlbWVudAorICAgICAgICAgIFBzaVJlZmVyZW5jZUV4cHJlc3Npb246cGFyYW0KKyAgICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgICBQc2lJZGVudGlmaWVyOnBhcmFtKCdwYXJhbScpCisgICAgICAgICAgUHNpRXJyb3JFbGVtZW50Oic7JyBleHBlY3RlZAorICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAgICcpCisgICAgICAgIFBzaUV4cHJlc3Npb25TdGF0ZW1lbnQKKyAgICAgICAgICBQc2lNZXRob2RDYWxsRXhwcmVzc2lvbjpsaXN0KCkKKyAgICAgICAgICAgIFBzaVJlZmVyZW5jZUV4cHJlc3Npb246bGlzdAorICAgICAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgICAgIFBzaUlkZW50aWZpZXI6bGlzdCgnbGlzdCcpCisgICAgICAgICAgICBQc2lFeHByZXNzaW9uTGlzdAorICAgICAgICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgICAgIFBzaUphdmFUb2tlbjpTRU1JQ09MT04oJzsnKQorICAgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4nKQorICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZGVjbGFyYXRpb25QYXJzaW5nL2NsYXNzL0V4dHJhQ2xvc2luZ0JyYWNlSW5NZXRob2QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZGVjbGFyYXRpb25QYXJzaW5nL2NsYXNzL0V4dHJhQ2xvc2luZ0JyYWNlSW5NZXRob2QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40Mzg1YjU1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9kZWNsYXJhdGlvblBhcnNpbmcvY2xhc3MvRXh0cmFDbG9zaW5nQnJhY2VJbk1ldGhvZC5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKK2NsYXNzIEZvbyB7CisgICBwdWJsaWMgdm9pZCB0ZXN0U29tZXRoaW5nKCkgeworICAgICB9CisgICB9CisKKyAgIHB1YmxpYyB2b2lkIHRlc3RTb21ldGhpbmcoKSB7CisKKyAgIH0KKworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZGVjbGFyYXRpb25QYXJzaW5nL2NsYXNzL0V4dHJhQ2xvc2luZ0JyYWNlSW5NZXRob2QudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9kZWNsYXJhdGlvblBhcnNpbmcvY2xhc3MvRXh0cmFDbG9zaW5nQnJhY2VJbk1ldGhvZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjQzYWVkYgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZGVjbGFyYXRpb25QYXJzaW5nL2NsYXNzL0V4dHJhQ2xvc2luZ0JyYWNlSW5NZXRob2QudHh0CkBAIC0wLDAgKzEsNjUgQEAKK1BzaUphdmFGaWxlOkV4dHJhQ2xvc2luZ0JyYWNlSW5NZXRob2QuamF2YQorICBQc2lJbXBvcnRMaXN0CisgICAgPGVtcHR5IGxpc3Q+CisgIFBzaUNsYXNzOkZvbworICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUtleXdvcmQ6Y2xhc3MoJ2NsYXNzJykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lJZGVudGlmaWVyOkZvbygnRm9vJykKKyAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4gICAnKQorICAgIFBzaU1ldGhvZDp0ZXN0U29tZXRoaW5nCisgICAgICBQc2lNb2RpZmllckxpc3Q6cHVibGljCisgICAgICAgIFBzaUtleXdvcmQ6cHVibGljKCdwdWJsaWMnKQorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjp0ZXN0U29tZXRoaW5nKCd0ZXN0U29tZXRoaW5nJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gICAgICcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAgJykKKyAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lFcnJvckVsZW1lbnQ6J2NsYXNzJyBvciAnaW50ZXJmYWNlJyBleHBlY3RlZAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAgICcpCisgICAgUHNpTWV0aG9kOnRlc3RTb21ldGhpbmcKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDpwdWJsaWMKKyAgICAgICAgUHNpS2V5d29yZDpwdWJsaWMoJ3B1YmxpYycpCisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOnRlc3RTb21ldGhpbmcoJ3Rlc3RTb21ldGhpbmcnKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICAgJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbicpCisgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9kZWNsYXJhdGlvblBhcnNpbmcvY2xhc3MvRXh0cmFPcGVuaW5nQnJhY2VJbk1ldGhvZC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9kZWNsYXJhdGlvblBhcnNpbmcvY2xhc3MvRXh0cmFPcGVuaW5nQnJhY2VJbk1ldGhvZC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRhMjdhZjcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2RlY2xhcmF0aW9uUGFyc2luZy9jbGFzcy9FeHRyYU9wZW5pbmdCcmFjZUluTWV0aG9kLmphdmEKQEAgLTAsMCArMSwxMiBAQAorcGFja2FnZSBmb287CisKK3B1YmxpYyBjbGFzcyBGb28geworICAgcHVibGljIHZvaWQgdGVzdFNvbWV0aGluZygpIHsKKyAgICAgeworICAgfQorCisgICBwdWJsaWMgdm9pZCB0ZXN0U29tZXRoaW5nKCkgeworCisgICB9CisKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2RlY2xhcmF0aW9uUGFyc2luZy9jbGFzcy9FeHRyYU9wZW5pbmdCcmFjZUluTWV0aG9kLnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZGVjbGFyYXRpb25QYXJzaW5nL2NsYXNzL0V4dHJhT3BlbmluZ0JyYWNlSW5NZXRob2QudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMwNzBkMWUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2RlY2xhcmF0aW9uUGFyc2luZy9jbGFzcy9FeHRyYU9wZW5pbmdCcmFjZUluTWV0aG9kLnR4dApAQCAtMCwwICsxLDc3IEBACitQc2lKYXZhRmlsZTpFeHRyYU9wZW5pbmdCcmFjZUluTWV0aG9kLmphdmEKKyAgUHNpUGFja2FnZVN0YXRlbWVudDpmb28KKyAgICBQc2lLZXl3b3JkOnBhY2thZ2UoJ3BhY2thZ2UnKQorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUphdmFDb2RlUmVmZXJlbmNlRWxlbWVudDpmb28KKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lKYXZhVG9rZW46U0VNSUNPTE9OKCc7JykKKyAgUHNpV2hpdGVTcGFjZSgnXG5cbicpCisgIFBzaUltcG9ydExpc3QKKyAgICA8ZW1wdHkgbGlzdD4KKyAgUHNpQ2xhc3M6Rm9vCisgICAgUHNpTW9kaWZpZXJMaXN0OnB1YmxpYworICAgICAgUHNpS2V5d29yZDpwdWJsaWMoJ3B1YmxpYycpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpS2V5d29yZDpjbGFzcygnY2xhc3MnKQorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUlkZW50aWZpZXI6Rm9vKCdGb28nKQorICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgICcpCisgICAgUHNpTWV0aG9kOnRlc3RTb21ldGhpbmcKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDpwdWJsaWMKKyAgICAgICAgUHNpS2V5d29yZDpwdWJsaWMoJ3B1YmxpYycpCisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOnRlc3RTb21ldGhpbmcoJ3Rlc3RTb21ldGhpbmcnKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgICAgJykKKyAgICAgICAgUHNpQmxvY2tTdGF0ZW1lbnQKKyAgICAgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gICAnKQorICAgICAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgICAgIFBzaUVycm9yRWxlbWVudDonfScgZXhwZWN0ZWQKKyAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAgICcpCisgICAgUHNpTWV0aG9kOnRlc3RTb21ldGhpbmcKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDpwdWJsaWMKKyAgICAgICAgUHNpS2V5d29yZDpwdWJsaWMoJ3B1YmxpYycpCisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOnRlc3RTb21ldGhpbmcoJ3Rlc3RTb21ldGhpbmcnKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICAgJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbicpCisgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9kZWNsYXJhdGlvblBhcnNpbmcvY2xhc3MvRm9yRXJyb3IuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZGVjbGFyYXRpb25QYXJzaW5nL2NsYXNzL0ZvckVycm9yLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzExNjVkNwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZGVjbGFyYXRpb25QYXJzaW5nL2NsYXNzL0ZvckVycm9yLmphdmEKQEAgLTAsMCArMSw1IEBACitjbGFzcyBUZXN0eworICB7CisgICAgZm9yKGludCBpID0gMDsgaSA8IDEwOzxFT0xFcnJvci8+CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2RlY2xhcmF0aW9uUGFyc2luZy9jbGFzcy9Gb3JFcnJvci50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2RlY2xhcmF0aW9uUGFyc2luZy9jbGFzcy9Gb3JFcnJvci50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDQ3MmY4ZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZGVjbGFyYXRpb25QYXJzaW5nL2NsYXNzL0ZvckVycm9yLnR4dApAQCAtMCwwICsxLDc1IEBACitQc2lKYXZhRmlsZTpGb3JFcnJvci5qYXZhCisgIFBzaUltcG9ydExpc3QKKyAgICA8ZW1wdHkgbGlzdD4KKyAgUHNpQ2xhc3M6VGVzdAorICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUtleXdvcmQ6Y2xhc3MoJ2NsYXNzJykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lJZGVudGlmaWVyOlRlc3QoJ1Rlc3QnKQorICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgJykKKyAgICBQc2lDbGFzc0luaXRpYWxpemVyCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgICAnKQorICAgICAgICBQc2lGb3JTdGF0ZW1lbnQKKyAgICAgICAgICBQc2lLZXl3b3JkOmZvcignZm9yJykKKyAgICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICAgIFBzaURlY2xhcmF0aW9uU3RhdGVtZW50CisgICAgICAgICAgICBQc2lMb2NhbFZhcmlhYmxlOmkKKyAgICAgICAgICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgICAgICBQc2lUeXBlRWxlbWVudDppbnQKKyAgICAgICAgICAgICAgICBQc2lLZXl3b3JkOmludCgnaW50JykKKyAgICAgICAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgICAgICAgIFBzaUlkZW50aWZpZXI6aSgnaScpCisgICAgICAgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICAgICAgICBQc2lKYXZhVG9rZW46RVEoJz0nKQorICAgICAgICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgICAgICAgICAgUHNpTGl0ZXJhbEV4cHJlc3Npb246MAorICAgICAgICAgICAgICAgIFBzaUphdmFUb2tlbjpJTlRFR0VSX0xJVEVSQUwoJzAnKQorICAgICAgICAgICAgICBQc2lKYXZhVG9rZW46U0VNSUNPTE9OKCc7JykKKyAgICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgICAgICBQc2lCaW5hcnlFeHByZXNzaW9uOmkgPCAxMAorICAgICAgICAgICAgUHNpUmVmZXJlbmNlRXhwcmVzc2lvbjppCisgICAgICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICAgICAgUHNpSWRlbnRpZmllcjppKCdpJykKKyAgICAgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICAgICAgUHNpSmF2YVRva2VuOkxUKCc8JykKKyAgICAgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICAgICAgUHNpTGl0ZXJhbEV4cHJlc3Npb246MTAKKyAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOklOVEVHRVJfTElURVJBTCgnMTAnKQorICAgICAgICAgIFBzaUphdmFUb2tlbjpTRU1JQ09MT04oJzsnKQorICAgICAgICAgIFBzaUVycm9yRWxlbWVudDonKScgZXhwZWN0ZWQKKyAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICBQc2lFcnJvckVsZW1lbnQ6VW5leHBlY3RlZCB0b2tlbgorICAgICAgICAgIFBzaUphdmFUb2tlbjpMVCgnPCcpCisgICAgICAgIFBzaUV4cHJlc3Npb25TdGF0ZW1lbnQKKyAgICAgICAgICBQc2lCaW5hcnlFeHByZXNzaW9uOkVPTEVycm9yLz4KKyAgICAgICAgICAgIFBzaUJpbmFyeUV4cHJlc3Npb246RU9MRXJyb3IvCisgICAgICAgICAgICAgIFBzaVJlZmVyZW5jZUV4cHJlc3Npb246RU9MRXJyb3IKKyAgICAgICAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICAgICAgICBQc2lJZGVudGlmaWVyOkVPTEVycm9yKCdFT0xFcnJvcicpCisgICAgICAgICAgICAgIFBzaUphdmFUb2tlbjpESVYoJy8nKQorICAgICAgICAgICAgICBQc2lFcnJvckVsZW1lbnQ6RXhwcmVzc2lvbiBleHBlY3RlZAorICAgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgICAgUHNpSmF2YVRva2VuOkdUKCc+JykKKyAgICAgICAgICAgIFBzaUVycm9yRWxlbWVudDpFeHByZXNzaW9uIGV4cGVjdGVkCisgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgIFBzaUVycm9yRWxlbWVudDonOycgZXhwZWN0ZWQKKyAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4nKQorICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9kZWNsYXJhdGlvblBhcnNpbmcvY2xhc3MvSW5jb21wbGV0ZUFubm90YXRpb24uamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZGVjbGFyYXRpb25QYXJzaW5nL2NsYXNzL0luY29tcGxldGVBbm5vdGF0aW9uLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDhkYmQ2NAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZGVjbGFyYXRpb25QYXJzaW5nL2NsYXNzL0luY29tcGxldGVBbm5vdGF0aW9uLmphdmEKQEAgLTAsMCArMSw3IEBACitwYWNrYWdlIGZvbzsKKworcHVibGljIGNsYXNzIEZvbyB7CisgICBwdWJsaWMgdm9pZCB0ZXN0U29tZXRoaW5nKCk7CisKKyAgIEBOdWxsCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9kZWNsYXJhdGlvblBhcnNpbmcvY2xhc3MvSW5jb21wbGV0ZUFubm90YXRpb24udHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9kZWNsYXJhdGlvblBhcnNpbmcvY2xhc3MvSW5jb21wbGV0ZUFubm90YXRpb24udHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU1ZGJhMzQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2RlY2xhcmF0aW9uUGFyc2luZy9jbGFzcy9JbmNvbXBsZXRlQW5ub3RhdGlvbi50eHQKQEAgLTAsMCArMSw1OCBAQAorUHNpSmF2YUZpbGU6SW5jb21wbGV0ZUFubm90YXRpb24uamF2YQorICBQc2lQYWNrYWdlU3RhdGVtZW50OmZvbworICAgIFBzaUtleXdvcmQ6cGFja2FnZSgncGFja2FnZScpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSmF2YUNvZGVSZWZlcmVuY2VFbGVtZW50OmZvbworICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUphdmFUb2tlbjpTRU1JQ09MT04oJzsnKQorICBQc2lXaGl0ZVNwYWNlKCdcblxuJykKKyAgUHNpSW1wb3J0TGlzdAorICAgIDxlbXB0eSBsaXN0PgorICBQc2lDbGFzczpGb28KKyAgICBQc2lNb2RpZmllckxpc3Q6cHVibGljCisgICAgICBQc2lLZXl3b3JkOnB1YmxpYygncHVibGljJykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lLZXl3b3JkOmNsYXNzKCdjbGFzcycpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSWRlbnRpZmllcjpGb28oJ0ZvbycpCisgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAgJykKKyAgICBQc2lNZXRob2Q6dGVzdFNvbWV0aGluZworICAgICAgUHNpTW9kaWZpZXJMaXN0OnB1YmxpYworICAgICAgICBQc2lLZXl3b3JkOnB1YmxpYygncHVibGljJykKKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6dGVzdFNvbWV0aGluZygndGVzdFNvbWV0aGluZycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpSmF2YVRva2VuOlNFTUlDT0xPTignOycpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAgICcpCisgICAgUHNpTW9kaWZpZXJMaXN0OkBOdWxsCisgICAgICBQc2lBbm5vdGF0aW9uCisgICAgICAgIFBzaUphdmFUb2tlbjpBVCgnQCcpCisgICAgICAgIFBzaUphdmFDb2RlUmVmZXJlbmNlRWxlbWVudDpOdWxsCisgICAgICAgICAgUHNpSWRlbnRpZmllcjpOdWxsKCdOdWxsJykKKyAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgUHNpQW5ub3RhdGlvblBhcmFtZXRlckxpc3QKKyAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lFcnJvckVsZW1lbnQ6SWRlbnRpZmllciBvciB0eXBlIGV4cGVjdGVkCisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lXaGl0ZVNwYWNlKCdcbicpCisgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9kZWNsYXJhdGlvblBhcnNpbmcvY2xhc3MvTG9uZ0NsYXNzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2RlY2xhcmF0aW9uUGFyc2luZy9jbGFzcy9Mb25nQ2xhc3MuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNDY3YzUzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9kZWNsYXJhdGlvblBhcnNpbmcvY2xhc3MvTG9uZ0NsYXNzLmphdmEKQEAgLTAsMCArMSwzMDQ1MSBAQAorY2xhc3MgQXsKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisgCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorCisgLyoqKi8KKyB2b2lkIGZvbygpe30KKworIC8qKiovCisgdm9pZCBmb28oKXt9CisKKyAvKioqLworIHZvaWQgZm9vKCl7fQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZGVjbGFyYXRpb25QYXJzaW5nL2NsYXNzL0xvbmdDbGFzcy50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2RlY2xhcmF0aW9uUGFyc2luZy9jbGFzcy9Mb25nQ2xhc3MudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg1MDc4NzgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2RlY2xhcmF0aW9uUGFyc2luZy9jbGFzcy9Mb25nQ2xhc3MudHh0CkBAIC0wLDAgKzEsMjIzNjI2IEBACitQc2lKYXZhRmlsZTpMb25nQ2xhc3MuamF2YQorICBQc2lJbXBvcnRMaXN0CisgICAgPGVtcHR5IGxpc3Q+CisgIFBzaUNsYXNzOkEKKyAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lLZXl3b3JkOmNsYXNzKCdjbGFzcycpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSWRlbnRpZmllcjpBKCdBJykKKyAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuIFxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcbicpCisgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9kZWNsYXJhdGlvblBhcnNpbmcvY2xhc3MvTm9DbGFzcy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9kZWNsYXJhdGlvblBhcnNpbmcvY2xhc3MvTm9DbGFzcy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkxZTk2NWEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2RlY2xhcmF0aW9uUGFyc2luZy9jbGFzcy9Ob0NsYXNzLmphdmEKQEAgLTAsMCArMSw0IEBACitpbXBvcnQgYS5iOworCitwdWJsaWMgQ2xhc3NOYW1leworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9kZWNsYXJhdGlvblBhcnNpbmcvY2xhc3MvTm9DbGFzcy50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2RlY2xhcmF0aW9uUGFyc2luZy9jbGFzcy9Ob0NsYXNzLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ODU5Mzg0ZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZGVjbGFyYXRpb25QYXJzaW5nL2NsYXNzL05vQ2xhc3MudHh0CkBAIC0wLDAgKzEsMjYgQEAKK1BzaUphdmFGaWxlOk5vQ2xhc3MuamF2YQorICBQc2lJbXBvcnRMaXN0CisgICAgUHNpSW1wb3J0U3RhdGVtZW50CisgICAgICBQc2lLZXl3b3JkOmltcG9ydCgnaW1wb3J0JykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSmF2YUNvZGVSZWZlcmVuY2VFbGVtZW50OmEuYgorICAgICAgICBQc2lKYXZhQ29kZVJlZmVyZW5jZUVsZW1lbnQ6YQorICAgICAgICAgIFBzaUlkZW50aWZpZXI6YSgnYScpCisgICAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgIFBzaUphdmFUb2tlbjpET1QoJy4nKQorICAgICAgICBQc2lJZGVudGlmaWVyOmIoJ2InKQorICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lKYXZhVG9rZW46U0VNSUNPTE9OKCc7JykKKyAgUHNpV2hpdGVTcGFjZSgnXG5cbicpCisgIFBzaU1vZGlmaWVyTGlzdDpwdWJsaWMKKyAgICBQc2lLZXl3b3JkOnB1YmxpYygncHVibGljJykKKyAgUHNpRXJyb3JFbGVtZW50OidjbGFzcycgb3IgJ2ludGVyZmFjZScgZXhwZWN0ZWQKKyAgICA8ZW1wdHkgbGlzdD4KKyAgUHNpV2hpdGVTcGFjZSgnICcpCisgIFBzaUVycm9yRWxlbWVudDonY2xhc3MnIG9yICdpbnRlcmZhY2UnIGV4cGVjdGVkCisgICAgUHNpSWRlbnRpZmllcjpDbGFzc05hbWUoJ0NsYXNzTmFtZScpCisgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4nKQorICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZGVjbGFyYXRpb25QYXJzaW5nL2NsYXNzL05vVHlwZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9kZWNsYXJhdGlvblBhcnNpbmcvY2xhc3MvTm9UeXBlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTExZGU0NQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZGVjbGFyYXRpb25QYXJzaW5nL2NsYXNzL05vVHlwZS5qYXZhCkBAIC0wLDAgKzEsMyBAQAorY2xhc3MgQ2xhc3NOYW1leworICBuZXcgWCgpOworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9kZWNsYXJhdGlvblBhcnNpbmcvY2xhc3MvTm9UeXBlLnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZGVjbGFyYXRpb25QYXJzaW5nL2NsYXNzL05vVHlwZS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTE0ZjRjNAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZGVjbGFyYXRpb25QYXJzaW5nL2NsYXNzL05vVHlwZS50eHQKQEAgLTAsMCArMSwzNCBAQAorUHNpSmF2YUZpbGU6Tm9UeXBlLmphdmEKKyAgUHNpSW1wb3J0TGlzdAorICAgIDxlbXB0eSBsaXN0PgorICBQc2lDbGFzczpDbGFzc05hbWUKKyAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lLZXl3b3JkOmNsYXNzKCdjbGFzcycpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSWRlbnRpZmllcjpDbGFzc05hbWUoJ0NsYXNzTmFtZScpCisgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAnKQorICAgIFBzaUVycm9yRWxlbWVudDpVbmV4cGVjdGVkIHRva2VuCisgICAgICBQc2lLZXl3b3JkOm5ldygnbmV3JykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lNZXRob2Q6WAorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpSWRlbnRpZmllcjpYKCdYJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lKYXZhVG9rZW46U0VNSUNPTE9OKCc7JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcbicpCisgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2RlY2xhcmF0aW9uUGFyc2luZy9jbGFzcy9QYXJhbWV0cml6ZWRDbGFzcy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9kZWNsYXJhdGlvblBhcnNpbmcvY2xhc3MvUGFyYW1ldHJpemVkQ2xhc3MuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZWRhYTM1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9kZWNsYXJhdGlvblBhcnNpbmcvY2xhc3MvUGFyYW1ldHJpemVkQ2xhc3MuamF2YQpAQCAtMCwwICsxLDMgQEAKK3B1YmxpYyBjbGFzcyBBIDxUIGV4dGVuZHMgamF2YS51dGlsLkxpc3Q+IHsKKyAgVCB4OworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZGVjbGFyYXRpb25QYXJzaW5nL2NsYXNzL1BhcmFtZXRyaXplZENsYXNzLnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZGVjbGFyYXRpb25QYXJzaW5nL2NsYXNzL1BhcmFtZXRyaXplZENsYXNzLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kN2U2YjI1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9kZWNsYXJhdGlvblBhcnNpbmcvY2xhc3MvUGFyYW1ldHJpemVkQ2xhc3MudHh0CkBAIC0wLDAgKzEsNTQgQEAKK1BzaUphdmFGaWxlOlBhcmFtZXRyaXplZENsYXNzLmphdmEKKyAgUHNpSW1wb3J0TGlzdAorICAgIDxlbXB0eSBsaXN0PgorICBQc2lDbGFzczpBCisgICAgUHNpTW9kaWZpZXJMaXN0OnB1YmxpYworICAgICAgUHNpS2V5d29yZDpwdWJsaWMoJ3B1YmxpYycpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpS2V5d29yZDpjbGFzcygnY2xhc3MnKQorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUlkZW50aWZpZXI6QSgnQScpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgIFBzaUphdmFUb2tlbjpMVCgnPCcpCisgICAgICBQc2lUeXBlUGFyYW1ldGVyOlQKKyAgICAgICAgUHNpSWRlbnRpZmllcjpUKCdUJykKKyAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgIFBzaUVsZW1lbnQoRVhURU5EU19CT1VORF9MSVNUKQorICAgICAgICAgIFBzaUtleXdvcmQ6ZXh0ZW5kcygnZXh0ZW5kcycpCisgICAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgICAgUHNpSmF2YUNvZGVSZWZlcmVuY2VFbGVtZW50OmphdmEudXRpbC5MaXN0CisgICAgICAgICAgICBQc2lKYXZhQ29kZVJlZmVyZW5jZUVsZW1lbnQ6amF2YS51dGlsCisgICAgICAgICAgICAgIFBzaUphdmFDb2RlUmVmZXJlbmNlRWxlbWVudDpqYXZhCisgICAgICAgICAgICAgICAgUHNpSWRlbnRpZmllcjpqYXZhKCdqYXZhJykKKyAgICAgICAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOkRPVCgnLicpCisgICAgICAgICAgICAgIFBzaUlkZW50aWZpZXI6dXRpbCgndXRpbCcpCisgICAgICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICAgIFBzaUphdmFUb2tlbjpET1QoJy4nKQorICAgICAgICAgICAgUHNpSWRlbnRpZmllcjpMaXN0KCdMaXN0JykKKyAgICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lKYXZhVG9rZW46R1QoJz4nKQorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAnKQorICAgIFBzaUZpZWxkOngKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDpUCisgICAgICAgIFBzaUphdmFDb2RlUmVmZXJlbmNlRWxlbWVudDpUCisgICAgICAgICAgUHNpSWRlbnRpZmllcjpUKCdUJykKKyAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjp4KCd4JykKKyAgICAgIFBzaUphdmFUb2tlbjpTRU1JQ09MT04oJzsnKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuJykKKyAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2RlY2xhcmF0aW9uUGFyc2luZy9jbGFzcy9QaW5lcy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9kZWNsYXJhdGlvblBhcnNpbmcvY2xhc3MvUGluZXMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNzkxZGYyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9kZWNsYXJhdGlvblBhcnNpbmcvY2xhc3MvUGluZXMuamF2YQpAQCAtMCwwICsxLDUgQEAKK2NsYXNzIEE8VCBleHRlbmRzIExpc3Q8U3RyaW5nPj4gZXh0ZW5kcyBMaXN0PExpc3Q8SW50ZWdlcj4+IHsKKyAgICBpbnQgbWV0aG9kKFQgeCkgIHsKKyAgICAgICAgcmV0dXJuIHguc2l6ZSgpID4+IDI7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZGVjbGFyYXRpb25QYXJzaW5nL2NsYXNzL1BpbmVzLnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZGVjbGFyYXRpb25QYXJzaW5nL2NsYXNzL1BpbmVzLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mOTBmZDI1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9kZWNsYXJhdGlvblBhcnNpbmcvY2xhc3MvUGluZXMudHh0CkBAIC0wLDAgKzEsMTA4IEBACitQc2lKYXZhRmlsZTpQaW5lcy5qYXZhCisgIFBzaUltcG9ydExpc3QKKyAgICA8ZW1wdHkgbGlzdD4KKyAgUHNpQ2xhc3M6QQorICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUtleXdvcmQ6Y2xhc3MoJ2NsYXNzJykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lJZGVudGlmaWVyOkEoJ0EnKQorICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICBQc2lKYXZhVG9rZW46TFQoJzwnKQorICAgICAgUHNpVHlwZVBhcmFtZXRlcjpUCisgICAgICAgIFBzaUlkZW50aWZpZXI6VCgnVCcpCisgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICBQc2lFbGVtZW50KEVYVEVORFNfQk9VTkRfTElTVCkKKyAgICAgICAgICBQc2lLZXl3b3JkOmV4dGVuZHMoJ2V4dGVuZHMnKQorICAgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICAgIFBzaUphdmFDb2RlUmVmZXJlbmNlRWxlbWVudDpMaXN0PFN0cmluZz4KKyAgICAgICAgICAgIFBzaUlkZW50aWZpZXI6TGlzdCgnTGlzdCcpCisgICAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICAgIFBzaUphdmFUb2tlbjpMVCgnPCcpCisgICAgICAgICAgICAgIFBzaVR5cGVFbGVtZW50OlN0cmluZworICAgICAgICAgICAgICAgIFBzaUphdmFDb2RlUmVmZXJlbmNlRWxlbWVudDpTdHJpbmcKKyAgICAgICAgICAgICAgICAgIFBzaUlkZW50aWZpZXI6U3RyaW5nKCdTdHJpbmcnKQorICAgICAgICAgICAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOkdUKCc+JykKKyAgICAgIFBzaUphdmFUb2tlbjpHVCgnPicpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgUHNpS2V5d29yZDpleHRlbmRzKCdleHRlbmRzJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSmF2YUNvZGVSZWZlcmVuY2VFbGVtZW50Okxpc3Q8TGlzdDxJbnRlZ2VyPj4KKyAgICAgICAgUHNpSWRlbnRpZmllcjpMaXN0KCdMaXN0JykKKyAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgIFBzaUphdmFUb2tlbjpMVCgnPCcpCisgICAgICAgICAgUHNpVHlwZUVsZW1lbnQ6TGlzdDxJbnRlZ2VyPgorICAgICAgICAgICAgUHNpSmF2YUNvZGVSZWZlcmVuY2VFbGVtZW50Okxpc3Q8SW50ZWdlcj4KKyAgICAgICAgICAgICAgUHNpSWRlbnRpZmllcjpMaXN0KCdMaXN0JykKKyAgICAgICAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgICAgIFBzaUphdmFUb2tlbjpMVCgnPCcpCisgICAgICAgICAgICAgICAgUHNpVHlwZUVsZW1lbnQ6SW50ZWdlcgorICAgICAgICAgICAgICAgICAgUHNpSmF2YUNvZGVSZWZlcmVuY2VFbGVtZW50OkludGVnZXIKKyAgICAgICAgICAgICAgICAgICAgUHNpSWRlbnRpZmllcjpJbnRlZ2VyKCdJbnRlZ2VyJykKKyAgICAgICAgICAgICAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgICAgICAgIFBzaUphdmFUb2tlbjpHVCgnPicpCisgICAgICAgICAgUHNpSmF2YVRva2VuOkdUKCc+JykKKyAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgICAnKQorICAgIFBzaU1ldGhvZDptZXRob2QKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OmludAorICAgICAgICBQc2lLZXl3b3JkOmludCgnaW50JykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjptZXRob2QoJ21ldGhvZCcpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OihUIHgpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaVBhcmFtZXRlcjp4CisgICAgICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgUHNpVHlwZUVsZW1lbnQ6VAorICAgICAgICAgICAgUHNpSmF2YUNvZGVSZWZlcmVuY2VFbGVtZW50OlQKKyAgICAgICAgICAgICAgUHNpSWRlbnRpZmllcjpUKCdUJykKKyAgICAgICAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICAgIFBzaUlkZW50aWZpZXI6eCgneCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpV2hpdGVTcGFjZSgnICAnKQorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgICAgICAgJykKKyAgICAgICAgUHNpUmV0dXJuU3RhdGVtZW50CisgICAgICAgICAgUHNpS2V5d29yZDpyZXR1cm4oJ3JldHVybicpCisgICAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgICAgUHNpQmluYXJ5RXhwcmVzc2lvbjp4LnNpemUoKSA+PiAyCisgICAgICAgICAgICBQc2lNZXRob2RDYWxsRXhwcmVzc2lvbjp4LnNpemUoKQorICAgICAgICAgICAgICBQc2lSZWZlcmVuY2VFeHByZXNzaW9uOnguc2l6ZQorICAgICAgICAgICAgICAgIFBzaVJlZmVyZW5jZUV4cHJlc3Npb246eAorICAgICAgICAgICAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICAgICAgICAgIFBzaUlkZW50aWZpZXI6eCgneCcpCisgICAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOkRPVCgnLicpCisgICAgICAgICAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgICAgICAgUHNpSWRlbnRpZmllcjpzaXplKCdzaXplJykKKyAgICAgICAgICAgICAgUHNpRXhwcmVzc2lvbkxpc3QKKyAgICAgICAgICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICAgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgICAgICAgIFBzaUphdmFUb2tlbjpHVEdUKCc+PicpCisgICAgICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgICAgICAgIFBzaUxpdGVyYWxFeHByZXNzaW9uOjIKKyAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOklOVEVHRVJfTElURVJBTCgnMicpCisgICAgICAgICAgUHNpSmF2YVRva2VuOlNFTUlDT0xPTignOycpCisgICAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAgICcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuJykKKyAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2RlY2xhcmF0aW9uUGFyc2luZy9jbGFzcy9TZW1pY29sb24uamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZGVjbGFyYXRpb25QYXJzaW5nL2NsYXNzL1NlbWljb2xvbi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdkZGNkYTEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2RlY2xhcmF0aW9uUGFyc2luZy9jbGFzcy9TZW1pY29sb24uamF2YQpAQCAtMCwwICsxLDYgQEAKK2NsYXNzIENsYXNzTmFtZXsKKyAgdm9pZCBmKCl7CisgIH07CisgIHZvaWQgZygpeworICB9OworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9kZWNsYXJhdGlvblBhcnNpbmcvY2xhc3MvU2VtaWNvbG9uLnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZGVjbGFyYXRpb25QYXJzaW5nL2NsYXNzL1NlbWljb2xvbi50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGQ4NjZiNAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZGVjbGFyYXRpb25QYXJzaW5nL2NsYXNzL1NlbWljb2xvbi50eHQKQEAgLTAsMCArMSw1OCBAQAorUHNpSmF2YUZpbGU6U2VtaWNvbG9uLmphdmEKKyAgUHNpSW1wb3J0TGlzdAorICAgIDxlbXB0eSBsaXN0PgorICBQc2lDbGFzczpDbGFzc05hbWUKKyAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lLZXl3b3JkOmNsYXNzKCdjbGFzcycpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSWRlbnRpZmllcjpDbGFzc05hbWUoJ0NsYXNzTmFtZScpCisgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAnKQorICAgIFBzaU1ldGhvZDpmCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6ZignZicpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpSmF2YVRva2VuOlNFTUlDT0xPTignOycpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4gICcpCisgICAgUHNpTWV0aG9kOmcKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpnKCdnJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAnKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lKYXZhVG9rZW46U0VNSUNPTE9OKCc7JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcbicpCisgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2RlY2xhcmF0aW9uUGFyc2luZy9jbGFzcy9TZW1pY29sb24yLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2RlY2xhcmF0aW9uUGFyc2luZy9jbGFzcy9TZW1pY29sb24yLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGFhOTkwOQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZGVjbGFyYXRpb25QYXJzaW5nL2NsYXNzL1NlbWljb2xvbjIuamF2YQpAQCAtMCwwICsxLDIgQEAKK2NsYXNzIENsYXNzTmFtZXsKK307CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2RlY2xhcmF0aW9uUGFyc2luZy9jbGFzcy9TZW1pY29sb24yLnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZGVjbGFyYXRpb25QYXJzaW5nL2NsYXNzL1NlbWljb2xvbjIudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFlYjRlZDAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2RlY2xhcmF0aW9uUGFyc2luZy9jbGFzcy9TZW1pY29sb24yLnR4dApAQCAtMCwwICsxLDE5IEBACitQc2lKYXZhRmlsZTpTZW1pY29sb24yLmphdmEKKyAgUHNpSW1wb3J0TGlzdAorICAgIDxlbXB0eSBsaXN0PgorICBQc2lDbGFzczpDbGFzc05hbWUKKyAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lLZXl3b3JkOmNsYXNzKCdjbGFzcycpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSWRlbnRpZmllcjpDbGFzc05hbWUoJ0NsYXNzTmFtZScpCisgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuJykKKyAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgUHNpSmF2YVRva2VuOlNFTUlDT0xPTignOycpCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2RlY2xhcmF0aW9uUGFyc2luZy9jb21tZW50QmluZGluZy9CaW5kQmVmb3JlMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9kZWNsYXJhdGlvblBhcnNpbmcvY29tbWVudEJpbmRpbmcvQmluZEJlZm9yZTEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYmI4ZTdkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9kZWNsYXJhdGlvblBhcnNpbmcvY29tbWVudEJpbmRpbmcvQmluZEJlZm9yZTEuamF2YQpAQCAtMCwwICsxLDQgQEAKK2NsYXNzIEF7CisgIC8vIGNvbW1lbnQKKyAgaW50IGZpZWxkOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZGVjbGFyYXRpb25QYXJzaW5nL2NvbW1lbnRCaW5kaW5nL0JpbmRCZWZvcmUxLnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZGVjbGFyYXRpb25QYXJzaW5nL2NvbW1lbnRCaW5kaW5nL0JpbmRCZWZvcmUxLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NDg5ZTViCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9kZWNsYXJhdGlvblBhcnNpbmcvY29tbWVudEJpbmRpbmcvQmluZEJlZm9yZTEudHh0CkBAIC0wLDAgKzEsMjkgQEAKK1BzaUphdmFGaWxlOkJpbmRCZWZvcmUxLmphdmEKKyAgUHNpSW1wb3J0TGlzdAorICAgIDxlbXB0eSBsaXN0PgorICBQc2lDbGFzczpBCisgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpS2V5d29yZDpjbGFzcygnY2xhc3MnKQorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUlkZW50aWZpZXI6QSgnQScpCisgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAnKQorICAgIFBzaUZpZWxkOmZpZWxkCisgICAgICBQc2lDb21tZW50KEVORF9PRl9MSU5FX0NPTU1FTlQpKCcvLyBjb21tZW50JykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OmludAorICAgICAgICBQc2lLZXl3b3JkOmludCgnaW50JykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmaWVsZCgnZmllbGQnKQorICAgICAgUHNpSmF2YVRva2VuOlNFTUlDT0xPTignOycpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4nKQorICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9kZWNsYXJhdGlvblBhcnNpbmcvY29tbWVudEJpbmRpbmcvQmluZEJlZm9yZTIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZGVjbGFyYXRpb25QYXJzaW5nL2NvbW1lbnRCaW5kaW5nL0JpbmRCZWZvcmUyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2E4YTkxMQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZGVjbGFyYXRpb25QYXJzaW5nL2NvbW1lbnRCaW5kaW5nL0JpbmRCZWZvcmUyLmphdmEKQEAgLTAsMCArMSw1IEBACitjbGFzcyBBeworICAvLyBjb21tZW50CisKKyAgaW50IGZpZWxkOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZGVjbGFyYXRpb25QYXJzaW5nL2NvbW1lbnRCaW5kaW5nL0JpbmRCZWZvcmUyLnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZGVjbGFyYXRpb25QYXJzaW5nL2NvbW1lbnRCaW5kaW5nL0JpbmRCZWZvcmUyLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yOTIyNGE2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9kZWNsYXJhdGlvblBhcnNpbmcvY29tbWVudEJpbmRpbmcvQmluZEJlZm9yZTIudHh0CkBAIC0wLDAgKzEsMjkgQEAKK1BzaUphdmFGaWxlOkJpbmRCZWZvcmUyLmphdmEKKyAgUHNpSW1wb3J0TGlzdAorICAgIDxlbXB0eSBsaXN0PgorICBQc2lDbGFzczpBCisgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpS2V5d29yZDpjbGFzcygnY2xhc3MnKQorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUlkZW50aWZpZXI6QSgnQScpCisgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAnKQorICAgIFBzaUNvbW1lbnQoRU5EX09GX0xJTkVfQ09NTUVOVCkoJy8vIGNvbW1lbnQnKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gICcpCisgICAgUHNpRmllbGQ6ZmllbGQKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDppbnQKKyAgICAgICAgUHNpS2V5d29yZDppbnQoJ2ludCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6ZmllbGQoJ2ZpZWxkJykKKyAgICAgIFBzaUphdmFUb2tlbjpTRU1JQ09MT04oJzsnKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuJykKKyAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZGVjbGFyYXRpb25QYXJzaW5nL2NvbW1lbnRCaW5kaW5nL0JpbmRCZWZvcmUzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2RlY2xhcmF0aW9uUGFyc2luZy9jb21tZW50QmluZGluZy9CaW5kQmVmb3JlMy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjExMDRiYmMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2RlY2xhcmF0aW9uUGFyc2luZy9jb21tZW50QmluZGluZy9CaW5kQmVmb3JlMy5qYXZhCkBAIC0wLDAgKzEsMyBAQAorY2xhc3MgQXsgLy8gY29tbWVudAorICBpbnQgZmllbGQ7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9kZWNsYXJhdGlvblBhcnNpbmcvY29tbWVudEJpbmRpbmcvQmluZEJlZm9yZTMudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9kZWNsYXJhdGlvblBhcnNpbmcvY29tbWVudEJpbmRpbmcvQmluZEJlZm9yZTMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkzODhhZjcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2RlY2xhcmF0aW9uUGFyc2luZy9jb21tZW50QmluZGluZy9CaW5kQmVmb3JlMy50eHQKQEAgLTAsMCArMSwyOSBAQAorUHNpSmF2YUZpbGU6QmluZEJlZm9yZTMuamF2YQorICBQc2lJbXBvcnRMaXN0CisgICAgPGVtcHR5IGxpc3Q+CisgIFBzaUNsYXNzOkEKKyAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lLZXl3b3JkOmNsYXNzKCdjbGFzcycpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSWRlbnRpZmllcjpBKCdBJykKKyAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpQ29tbWVudChFTkRfT0ZfTElORV9DT01NRU5UKSgnLy8gY29tbWVudCcpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4gICcpCisgICAgUHNpRmllbGQ6ZmllbGQKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDppbnQKKyAgICAgICAgUHNpS2V5d29yZDppbnQoJ2ludCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6ZmllbGQoJ2ZpZWxkJykKKyAgICAgIFBzaUphdmFUb2tlbjpTRU1JQ09MT04oJzsnKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuJykKKyAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZGVjbGFyYXRpb25QYXJzaW5nL2NvbW1lbnRCaW5kaW5nL0JpbmRCZWZvcmUzYS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9kZWNsYXJhdGlvblBhcnNpbmcvY29tbWVudEJpbmRpbmcvQmluZEJlZm9yZTNhLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2JhMTcwNgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZGVjbGFyYXRpb25QYXJzaW5nL2NvbW1lbnRCaW5kaW5nL0JpbmRCZWZvcmUzYS5qYXZhCkBAIC0wLDAgKzEsMyBAQAorY2xhc3MgQXsvLyBjb21tZW50CisgIGludCBmaWVsZDsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2RlY2xhcmF0aW9uUGFyc2luZy9jb21tZW50QmluZGluZy9CaW5kQmVmb3JlM2EudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9kZWNsYXJhdGlvblBhcnNpbmcvY29tbWVudEJpbmRpbmcvQmluZEJlZm9yZTNhLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NTI2MmJiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9kZWNsYXJhdGlvblBhcnNpbmcvY29tbWVudEJpbmRpbmcvQmluZEJlZm9yZTNhLnR4dApAQCAtMCwwICsxLDI4IEBACitQc2lKYXZhRmlsZTpCaW5kQmVmb3JlM2EuamF2YQorICBQc2lJbXBvcnRMaXN0CisgICAgPGVtcHR5IGxpc3Q+CisgIFBzaUNsYXNzOkEKKyAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lLZXl3b3JkOmNsYXNzKCdjbGFzcycpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSWRlbnRpZmllcjpBKCdBJykKKyAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgUHNpQ29tbWVudChFTkRfT0ZfTElORV9DT01NRU5UKSgnLy8gY29tbWVudCcpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4gICcpCisgICAgUHNpRmllbGQ6ZmllbGQKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDppbnQKKyAgICAgICAgUHNpS2V5d29yZDppbnQoJ2ludCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6ZmllbGQoJ2ZpZWxkJykKKyAgICAgIFBzaUphdmFUb2tlbjpTRU1JQ09MT04oJzsnKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuJykKKyAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZGVjbGFyYXRpb25QYXJzaW5nL2NvbW1lbnRCaW5kaW5nL0JpbmRCZWZvcmU0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2RlY2xhcmF0aW9uUGFyc2luZy9jb21tZW50QmluZGluZy9CaW5kQmVmb3JlNC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgyNDExZDcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2RlY2xhcmF0aW9uUGFyc2luZy9jb21tZW50QmluZGluZy9CaW5kQmVmb3JlNC5qYXZhCkBAIC0wLDAgKzEsNiBAQAorY2xhc3MgQXsKKyAgLy8gY29tbWVudCAxCisgIC8vIGNvbW1lbnQgMgorICAvLyBjb21tZW50IDMKKyAgaW50IGZpZWxkOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZGVjbGFyYXRpb25QYXJzaW5nL2NvbW1lbnRCaW5kaW5nL0JpbmRCZWZvcmU0LnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZGVjbGFyYXRpb25QYXJzaW5nL2NvbW1lbnRCaW5kaW5nL0JpbmRCZWZvcmU0LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMTdmMjYzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9kZWNsYXJhdGlvblBhcnNpbmcvY29tbWVudEJpbmRpbmcvQmluZEJlZm9yZTQudHh0CkBAIC0wLDAgKzEsMzMgQEAKK1BzaUphdmFGaWxlOkJpbmRCZWZvcmU0LmphdmEKKyAgUHNpSW1wb3J0TGlzdAorICAgIDxlbXB0eSBsaXN0PgorICBQc2lDbGFzczpBCisgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpS2V5d29yZDpjbGFzcygnY2xhc3MnKQorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUlkZW50aWZpZXI6QSgnQScpCisgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAnKQorICAgIFBzaUZpZWxkOmZpZWxkCisgICAgICBQc2lDb21tZW50KEVORF9PRl9MSU5FX0NPTU1FTlQpKCcvLyBjb21tZW50IDEnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gICcpCisgICAgICBQc2lDb21tZW50KEVORF9PRl9MSU5FX0NPTU1FTlQpKCcvLyBjb21tZW50IDInKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gICcpCisgICAgICBQc2lDb21tZW50KEVORF9PRl9MSU5FX0NPTU1FTlQpKCcvLyBjb21tZW50IDMnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6aW50CisgICAgICAgIFBzaUtleXdvcmQ6aW50KCdpbnQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZpZWxkKCdmaWVsZCcpCisgICAgICBQc2lKYXZhVG9rZW46U0VNSUNPTE9OKCc7JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcbicpCisgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2RlY2xhcmF0aW9uUGFyc2luZy9jb21tZW50QmluZGluZy9CaW5kQmVmb3JlNS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9kZWNsYXJhdGlvblBhcnNpbmcvY29tbWVudEJpbmRpbmcvQmluZEJlZm9yZTUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMTBkOTU2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9kZWNsYXJhdGlvblBhcnNpbmcvY29tbWVudEJpbmRpbmcvQmluZEJlZm9yZTUuamF2YQpAQCAtMCwwICsxLDUgQEAKKy8qKiBkb2MgKi8KK2NsYXNzIEMgeworICAvLyBwbGFpbgorICBpbnQgZjsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2RlY2xhcmF0aW9uUGFyc2luZy9jb21tZW50QmluZGluZy9CaW5kQmVmb3JlNS50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2RlY2xhcmF0aW9uUGFyc2luZy9jb21tZW50QmluZGluZy9CaW5kQmVmb3JlNS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjcyNDc3NgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZGVjbGFyYXRpb25QYXJzaW5nL2NvbW1lbnRCaW5kaW5nL0JpbmRCZWZvcmU1LnR4dApAQCAtMCwwICsxLDM2IEBACitQc2lKYXZhRmlsZTpCaW5kQmVmb3JlNS5qYXZhCisgIFBzaUltcG9ydExpc3QKKyAgICA8ZW1wdHkgbGlzdD4KKyAgUHNpQ2xhc3M6QworICAgIFBzaURvY0NvbW1lbnQKKyAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9EQVRBKCdkb2MgJykKKyAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuJykKKyAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lLZXl3b3JkOmNsYXNzKCdjbGFzcycpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSWRlbnRpZmllcjpDKCdDJykKKyAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4gICcpCisgICAgUHNpRmllbGQ6ZgorICAgICAgUHNpQ29tbWVudChFTkRfT0ZfTElORV9DT01NRU5UKSgnLy8gcGxhaW4nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6aW50CisgICAgICAgIFBzaUtleXdvcmQ6aW50KCdpbnQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmYoJ2YnKQorICAgICAgUHNpSmF2YVRva2VuOlNFTUlDT0xPTignOycpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4nKQorICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZGVjbGFyYXRpb25QYXJzaW5nL2NvbW1lbnRCaW5kaW5nL0JpbmRCZWZvcmVDbGFzczEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZGVjbGFyYXRpb25QYXJzaW5nL2NvbW1lbnRCaW5kaW5nL0JpbmRCZWZvcmVDbGFzczEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YzEwYjI5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9kZWNsYXJhdGlvblBhcnNpbmcvY29tbWVudEJpbmRpbmcvQmluZEJlZm9yZUNsYXNzMS5qYXZhCkBAIC0wLDAgKzEsNCBAQAorcGFja2FnZSBwOworCisvLyBjb21tZW50CitjbGFzcyBBIHsgfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZGVjbGFyYXRpb25QYXJzaW5nL2NvbW1lbnRCaW5kaW5nL0JpbmRCZWZvcmVDbGFzczEudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9kZWNsYXJhdGlvblBhcnNpbmcvY29tbWVudEJpbmRpbmcvQmluZEJlZm9yZUNsYXNzMS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzEzY2JiYQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZGVjbGFyYXRpb25QYXJzaW5nL2NvbW1lbnRCaW5kaW5nL0JpbmRCZWZvcmVDbGFzczEudHh0CkBAIC0wLDAgKzEsMzAgQEAKK1BzaUphdmFGaWxlOkJpbmRCZWZvcmVDbGFzczEuamF2YQorICBQc2lQYWNrYWdlU3RhdGVtZW50OnAKKyAgICBQc2lLZXl3b3JkOnBhY2thZ2UoJ3BhY2thZ2UnKQorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUphdmFDb2RlUmVmZXJlbmNlRWxlbWVudDpwCisgICAgICBQc2lJZGVudGlmaWVyOnAoJ3AnKQorICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lKYXZhVG9rZW46U0VNSUNPTE9OKCc7JykKKyAgUHNpV2hpdGVTcGFjZSgnXG5cbicpCisgIFBzaUltcG9ydExpc3QKKyAgICA8ZW1wdHkgbGlzdD4KKyAgUHNpQ2xhc3M6QQorICAgIFBzaUNvbW1lbnQoRU5EX09GX0xJTkVfQ09NTUVOVCkoJy8vIGNvbW1lbnQnKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuJykKKyAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lLZXl3b3JkOmNsYXNzKCdjbGFzcycpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSWRlbnRpZmllcjpBKCdBJykKKyAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9kZWNsYXJhdGlvblBhcnNpbmcvY29tbWVudEJpbmRpbmcvQmluZEJlZm9yZUNsYXNzMi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9kZWNsYXJhdGlvblBhcnNpbmcvY29tbWVudEJpbmRpbmcvQmluZEJlZm9yZUNsYXNzMi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNkNzQyYzkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2RlY2xhcmF0aW9uUGFyc2luZy9jb21tZW50QmluZGluZy9CaW5kQmVmb3JlQ2xhc3MyLmphdmEKQEAgLTAsMCArMSwyIEBACisvLyBjb21tZW50CitjbGFzcyBBIHsgfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZGVjbGFyYXRpb25QYXJzaW5nL2NvbW1lbnRCaW5kaW5nL0JpbmRCZWZvcmVDbGFzczIudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9kZWNsYXJhdGlvblBhcnNpbmcvY29tbWVudEJpbmRpbmcvQmluZEJlZm9yZUNsYXNzMi50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWZhYWRkMAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZGVjbGFyYXRpb25QYXJzaW5nL2NvbW1lbnRCaW5kaW5nL0JpbmRCZWZvcmVDbGFzczIudHh0CkBAIC0wLDAgKzEsMjEgQEAKK1BzaUphdmFGaWxlOkJpbmRCZWZvcmVDbGFzczIuamF2YQorICBQc2lJbXBvcnRMaXN0CisgICAgPGVtcHR5IGxpc3Q+CisgIFBzaUNsYXNzOkEKKyAgICBQc2lDb21tZW50KEVORF9PRl9MSU5FX0NPTU1FTlQpKCcvLyBjb21tZW50JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcbicpCisgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpS2V5d29yZDpjbGFzcygnY2xhc3MnKQorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUlkZW50aWZpZXI6QSgnQScpCisgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZGVjbGFyYXRpb25QYXJzaW5nL2NvbW1lbnRCaW5kaW5nL0JpbmRCZWZvcmVDbGFzczMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZGVjbGFyYXRpb25QYXJzaW5nL2NvbW1lbnRCaW5kaW5nL0JpbmRCZWZvcmVDbGFzczMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZGM1MGM2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9kZWNsYXJhdGlvblBhcnNpbmcvY29tbWVudEJpbmRpbmcvQmluZEJlZm9yZUNsYXNzMy5qYXZhCkBAIC0wLDAgKzEsMyBAQAorLy8gY29tbWVudAorCitjbGFzcyBBIHsgfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZGVjbGFyYXRpb25QYXJzaW5nL2NvbW1lbnRCaW5kaW5nL0JpbmRCZWZvcmVDbGFzczMudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9kZWNsYXJhdGlvblBhcnNpbmcvY29tbWVudEJpbmRpbmcvQmluZEJlZm9yZUNsYXNzMy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDgzODQ0ZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZGVjbGFyYXRpb25QYXJzaW5nL2NvbW1lbnRCaW5kaW5nL0JpbmRCZWZvcmVDbGFzczMudHh0CkBAIC0wLDAgKzEsMjEgQEAKK1BzaUphdmFGaWxlOkJpbmRCZWZvcmVDbGFzczMuamF2YQorICBQc2lDb21tZW50KEVORF9PRl9MSU5FX0NPTU1FTlQpKCcvLyBjb21tZW50JykKKyAgUHNpV2hpdGVTcGFjZSgnXG5cbicpCisgIFBzaUltcG9ydExpc3QKKyAgICA8ZW1wdHkgbGlzdD4KKyAgUHNpQ2xhc3M6QQorICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUtleXdvcmQ6Y2xhc3MoJ2NsYXNzJykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lJZGVudGlmaWVyOkEoJ0EnKQorICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2RlY2xhcmF0aW9uUGFyc2luZy9jb21tZW50QmluZGluZy9CaW5kQmVmb3JlQ2xhc3M0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2RlY2xhcmF0aW9uUGFyc2luZy9jb21tZW50QmluZGluZy9CaW5kQmVmb3JlQ2xhc3M0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWIwNWM5MAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZGVjbGFyYXRpb25QYXJzaW5nL2NvbW1lbnRCaW5kaW5nL0JpbmRCZWZvcmVDbGFzczQuamF2YQpAQCAtMCwwICsxLDIgQEAKK3BhY2thZ2UgcDsvLyBjb21tZW50CitjbGFzcyBBIHsgfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZGVjbGFyYXRpb25QYXJzaW5nL2NvbW1lbnRCaW5kaW5nL0JpbmRCZWZvcmVDbGFzczQudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9kZWNsYXJhdGlvblBhcnNpbmcvY29tbWVudEJpbmRpbmcvQmluZEJlZm9yZUNsYXNzNC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjEyZGQ2YQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZGVjbGFyYXRpb25QYXJzaW5nL2NvbW1lbnRCaW5kaW5nL0JpbmRCZWZvcmVDbGFzczQudHh0CkBAIC0wLDAgKzEsMjkgQEAKK1BzaUphdmFGaWxlOkJpbmRCZWZvcmVDbGFzczQuamF2YQorICBQc2lQYWNrYWdlU3RhdGVtZW50OnAKKyAgICBQc2lLZXl3b3JkOnBhY2thZ2UoJ3BhY2thZ2UnKQorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUphdmFDb2RlUmVmZXJlbmNlRWxlbWVudDpwCisgICAgICBQc2lJZGVudGlmaWVyOnAoJ3AnKQorICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lKYXZhVG9rZW46U0VNSUNPTE9OKCc7JykKKyAgICBQc2lDb21tZW50KEVORF9PRl9MSU5FX0NPTU1FTlQpKCcvLyBjb21tZW50JykKKyAgUHNpV2hpdGVTcGFjZSgnXG4nKQorICBQc2lJbXBvcnRMaXN0CisgICAgPGVtcHR5IGxpc3Q+CisgIFBzaUNsYXNzOkEKKyAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lLZXl3b3JkOmNsYXNzKCdjbGFzcycpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSWRlbnRpZmllcjpBKCdBJykKKyAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9kZWNsYXJhdGlvblBhcnNpbmcvY29tbWVudEJpbmRpbmcvQmluZEJlZm9yZUNsYXNzNS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9kZWNsYXJhdGlvblBhcnNpbmcvY29tbWVudEJpbmRpbmcvQmluZEJlZm9yZUNsYXNzNS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM2YmY3YmIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2RlY2xhcmF0aW9uUGFyc2luZy9jb21tZW50QmluZGluZy9CaW5kQmVmb3JlQ2xhc3M1LmphdmEKQEAgLTAsMCArMSwzIEBACisvLyBjb21tZW50IDEKKy8vIGNvbW1lbnQgMgorY2xhc3MgQSB7IH0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2RlY2xhcmF0aW9uUGFyc2luZy9jb21tZW50QmluZGluZy9CaW5kQmVmb3JlQ2xhc3M1LnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZGVjbGFyYXRpb25QYXJzaW5nL2NvbW1lbnRCaW5kaW5nL0JpbmRCZWZvcmVDbGFzczUudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmExODcxMGYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2RlY2xhcmF0aW9uUGFyc2luZy9jb21tZW50QmluZGluZy9CaW5kQmVmb3JlQ2xhc3M1LnR4dApAQCAtMCwwICsxLDIzIEBACitQc2lKYXZhRmlsZTpCaW5kQmVmb3JlQ2xhc3M1LmphdmEKKyAgUHNpSW1wb3J0TGlzdAorICAgIDxlbXB0eSBsaXN0PgorICBQc2lDbGFzczpBCisgICAgUHNpQ29tbWVudChFTkRfT0ZfTElORV9DT01NRU5UKSgnLy8gY29tbWVudCAxJykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcbicpCisgICAgUHNpQ29tbWVudChFTkRfT0ZfTElORV9DT01NRU5UKSgnLy8gY29tbWVudCAyJykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcbicpCisgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpS2V5d29yZDpjbGFzcygnY2xhc3MnKQorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUlkZW50aWZpZXI6QSgnQScpCisgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZGVjbGFyYXRpb25QYXJzaW5nL2NvbW1lbnRCaW5kaW5nL0JpbmRCZWZvcmVDbGFzczYuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZGVjbGFyYXRpb25QYXJzaW5nL2NvbW1lbnRCaW5kaW5nL0JpbmRCZWZvcmVDbGFzczYuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZmZhYzg2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9kZWNsYXJhdGlvblBhcnNpbmcvY29tbWVudEJpbmRpbmcvQmluZEJlZm9yZUNsYXNzNi5qYXZhCkBAIC0wLDAgKzEgQEAKKy8qIGNvbW1lbnQgKi9jbGFzcyBBIHsgfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZGVjbGFyYXRpb25QYXJzaW5nL2NvbW1lbnRCaW5kaW5nL0JpbmRCZWZvcmVDbGFzczYudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9kZWNsYXJhdGlvblBhcnNpbmcvY29tbWVudEJpbmRpbmcvQmluZEJlZm9yZUNsYXNzNi50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDMyNTAwMAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZGVjbGFyYXRpb25QYXJzaW5nL2NvbW1lbnRCaW5kaW5nL0JpbmRCZWZvcmVDbGFzczYudHh0CkBAIC0wLDAgKzEsMjAgQEAKK1BzaUphdmFGaWxlOkJpbmRCZWZvcmVDbGFzczYuamF2YQorICBQc2lJbXBvcnRMaXN0CisgICAgPGVtcHR5IGxpc3Q+CisgIFBzaUNsYXNzOkEKKyAgICBQc2lDb21tZW50KENfU1RZTEVfQ09NTUVOVCkoJy8qIGNvbW1lbnQgKi8nKQorICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUtleXdvcmQ6Y2xhc3MoJ2NsYXNzJykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lJZGVudGlmaWVyOkEoJ0EnKQorICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2RlY2xhcmF0aW9uUGFyc2luZy9maWVsZC9Db21wbGV4SW5pdGlhbGl6ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZGVjbGFyYXRpb25QYXJzaW5nL2ZpZWxkL0NvbXBsZXhJbml0aWFsaXplci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE5NTAyOGEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2RlY2xhcmF0aW9uUGFyc2luZy9maWVsZC9Db21wbGV4SW5pdGlhbGl6ZXIuamF2YQpAQCAtMCwwICsxLDMgQEAKK3B1YmxpYyBjbGFzcyBTeXN0ZW1JbmZvIHsKKyAgcHVibGljIHN0YXRpYyBmaW5hbCBib29sZWFuIGlzS0RFID0gU1VOX0RFU0tUT1AgIT0gbnVsbCAmJiBTVU5fREVTS1RPUC50b0xvd2VyQ2FzZSgpLmluZGV4T2YoImtkZSIpID49IDA7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9kZWNsYXJhdGlvblBhcnNpbmcvZmllbGQvQ29tcGxleEluaXRpYWxpemVyLnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZGVjbGFyYXRpb25QYXJzaW5nL2ZpZWxkL0NvbXBsZXhJbml0aWFsaXplci50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTMzZGU1NgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZGVjbGFyYXRpb25QYXJzaW5nL2ZpZWxkL0NvbXBsZXhJbml0aWFsaXplci50eHQKQEAgLTAsMCArMSw4MSBAQAorUHNpSmF2YUZpbGU6Q29tcGxleEluaXRpYWxpemVyLmphdmEKKyAgUHNpSW1wb3J0TGlzdAorICAgIDxlbXB0eSBsaXN0PgorICBQc2lDbGFzczpTeXN0ZW1JbmZvCisgICAgUHNpTW9kaWZpZXJMaXN0OnB1YmxpYworICAgICAgUHNpS2V5d29yZDpwdWJsaWMoJ3B1YmxpYycpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpS2V5d29yZDpjbGFzcygnY2xhc3MnKQorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUlkZW50aWZpZXI6U3lzdGVtSW5mbygnU3lzdGVtSW5mbycpCisgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAnKQorICAgIFBzaUZpZWxkOmlzS0RFCisgICAgICBQc2lNb2RpZmllckxpc3Q6cHVibGljIHN0YXRpYyBmaW5hbAorICAgICAgICBQc2lLZXl3b3JkOnB1YmxpYygncHVibGljJykKKyAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgIFBzaUtleXdvcmQ6c3RhdGljKCdzdGF0aWMnKQorICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgICAgUHNpS2V5d29yZDpmaW5hbCgnZmluYWwnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lUeXBlRWxlbWVudDpib29sZWFuCisgICAgICAgIFBzaUtleXdvcmQ6Ym9vbGVhbignYm9vbGVhbicpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6aXNLREUoJ2lzS0RFJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSmF2YVRva2VuOkVRKCc9JykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpQmluYXJ5RXhwcmVzc2lvbjpTVU5fREVTS1RPUCAhPSBudWxsICYmIFNVTl9ERVNLVE9QLnRvTG93ZXJDYXNlKCkuaW5kZXhPZigia2RlIikgPj0gMAorICAgICAgICBQc2lCaW5hcnlFeHByZXNzaW9uOlNVTl9ERVNLVE9QICE9IG51bGwKKyAgICAgICAgICBQc2lSZWZlcmVuY2VFeHByZXNzaW9uOlNVTl9ERVNLVE9QCisgICAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgICAgUHNpSWRlbnRpZmllcjpTVU5fREVTS1RPUCgnU1VOX0RFU0tUT1AnKQorICAgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICAgIFBzaUphdmFUb2tlbjpORSgnIT0nKQorICAgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICAgIFBzaUxpdGVyYWxFeHByZXNzaW9uOm51bGwKKyAgICAgICAgICAgIFBzaUphdmFUb2tlbjpOVUxMX0tFWVdPUkQoJ251bGwnKQorICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgICAgUHNpSmF2YVRva2VuOkFOREFORCgnJiYnKQorICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgICAgUHNpQmluYXJ5RXhwcmVzc2lvbjpTVU5fREVTS1RPUC50b0xvd2VyQ2FzZSgpLmluZGV4T2YoImtkZSIpID49IDAKKyAgICAgICAgICBQc2lNZXRob2RDYWxsRXhwcmVzc2lvbjpTVU5fREVTS1RPUC50b0xvd2VyQ2FzZSgpLmluZGV4T2YoImtkZSIpCisgICAgICAgICAgICBQc2lSZWZlcmVuY2VFeHByZXNzaW9uOlNVTl9ERVNLVE9QLnRvTG93ZXJDYXNlKCkuaW5kZXhPZgorICAgICAgICAgICAgICBQc2lNZXRob2RDYWxsRXhwcmVzc2lvbjpTVU5fREVTS1RPUC50b0xvd2VyQ2FzZSgpCisgICAgICAgICAgICAgICAgUHNpUmVmZXJlbmNlRXhwcmVzc2lvbjpTVU5fREVTS1RPUC50b0xvd2VyQ2FzZQorICAgICAgICAgICAgICAgICAgUHNpUmVmZXJlbmNlRXhwcmVzc2lvbjpTVU5fREVTS1RPUAorICAgICAgICAgICAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgICAgICAgICAgIFBzaUlkZW50aWZpZXI6U1VOX0RFU0tUT1AoJ1NVTl9ERVNLVE9QJykKKyAgICAgICAgICAgICAgICAgIFBzaUphdmFUb2tlbjpET1QoJy4nKQorICAgICAgICAgICAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICAgICAgICAgIFBzaUlkZW50aWZpZXI6dG9Mb3dlckNhc2UoJ3RvTG93ZXJDYXNlJykKKyAgICAgICAgICAgICAgICBQc2lFeHByZXNzaW9uTGlzdAorICAgICAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgICAgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICAgICAgICAgIFBzaUphdmFUb2tlbjpET1QoJy4nKQorICAgICAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgICAgIFBzaUlkZW50aWZpZXI6aW5kZXhPZignaW5kZXhPZicpCisgICAgICAgICAgICBQc2lFeHByZXNzaW9uTGlzdAorICAgICAgICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICAgICAgICBQc2lMaXRlcmFsRXhwcmVzc2lvbjoia2RlIgorICAgICAgICAgICAgICAgIFBzaUphdmFUb2tlbjpTVFJJTkdfTElURVJBTCgnImtkZSInKQorICAgICAgICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICAgIFBzaUphdmFUb2tlbjpHRSgnPj0nKQorICAgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICAgIFBzaUxpdGVyYWxFeHByZXNzaW9uOjAKKyAgICAgICAgICAgIFBzaUphdmFUb2tlbjpJTlRFR0VSX0xJVEVSQUwoJzAnKQorICAgICAgUHNpSmF2YVRva2VuOlNFTUlDT0xPTignOycpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4nKQorICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZGVjbGFyYXRpb25QYXJzaW5nL2ZpZWxkL0Vycm9ycy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9kZWNsYXJhdGlvblBhcnNpbmcvZmllbGQvRXJyb3JzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTMzYjBkZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZGVjbGFyYXRpb25QYXJzaW5nL2ZpZWxkL0Vycm9ycy5qYXZhCkBAIC0wLDAgKzEsMyBAQAorY2xhc3MgVGVzdCB7CisgIGludFswXTsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2RlY2xhcmF0aW9uUGFyc2luZy9maWVsZC9FcnJvcnMudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9kZWNsYXJhdGlvblBhcnNpbmcvZmllbGQvRXJyb3JzLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NDI0NDE2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9kZWNsYXJhdGlvblBhcnNpbmcvZmllbGQvRXJyb3JzLnR4dApAQCAtMCwwICsxLDMxIEBACitQc2lKYXZhRmlsZTpFcnJvcnMuamF2YQorICBQc2lJbXBvcnRMaXN0CisgICAgPGVtcHR5IGxpc3Q+CisgIFBzaUNsYXNzOlRlc3QKKyAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lLZXl3b3JkOmNsYXNzKCdjbGFzcycpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSWRlbnRpZmllcjpUZXN0KCdUZXN0JykKKyAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4gICcpCisgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpVHlwZUVsZW1lbnQ6aW50CisgICAgICBQc2lLZXl3b3JkOmludCgnaW50JykKKyAgICBQc2lFcnJvckVsZW1lbnQ6SWRlbnRpZmllciBleHBlY3RlZAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpRXJyb3JFbGVtZW50OlVuZXhwZWN0ZWQgdG9rZW4KKyAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0tFVCgnWycpCisgICAgICBQc2lKYXZhVG9rZW46SU5URUdFUl9MSVRFUkFMKCcwJykKKyAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0tFVCgnXScpCisgICAgUHNpSmF2YVRva2VuOlNFTUlDT0xPTignOycpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4nKQorICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZGVjbGFyYXRpb25QYXJzaW5nL2ZpZWxkL01pc3NpbmdJbml0aWFsaXplci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9kZWNsYXJhdGlvblBhcnNpbmcvZmllbGQvTWlzc2luZ0luaXRpYWxpemVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGEyMjZiYjUzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9kZWNsYXJhdGlvblBhcnNpbmcvZmllbGQvTWlzc2luZ0luaXRpYWxpemVyLmphdmEKQEAgLTAsMCArMSwzIEBACitjbGFzcyBUZXN0eworICBpbnQgZmllbGQgPQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZGVjbGFyYXRpb25QYXJzaW5nL2ZpZWxkL01pc3NpbmdJbml0aWFsaXplci50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2RlY2xhcmF0aW9uUGFyc2luZy9maWVsZC9NaXNzaW5nSW5pdGlhbGl6ZXIudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ3MDI2ZWQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2RlY2xhcmF0aW9uUGFyc2luZy9maWVsZC9NaXNzaW5nSW5pdGlhbGl6ZXIudHh0CkBAIC0wLDAgKzEsMzAgQEAKK1BzaUphdmFGaWxlOk1pc3NpbmdJbml0aWFsaXplci5qYXZhCisgIFBzaUltcG9ydExpc3QKKyAgICA8ZW1wdHkgbGlzdD4KKyAgUHNpQ2xhc3M6VGVzdAorICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUtleXdvcmQ6Y2xhc3MoJ2NsYXNzJykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lJZGVudGlmaWVyOlRlc3QoJ1Rlc3QnKQorICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgJykKKyAgICBQc2lGaWVsZDpmaWVsZAorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OmludAorICAgICAgICBQc2lLZXl3b3JkOmludCgnaW50JykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmaWVsZCgnZmllbGQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lKYXZhVG9rZW46RVEoJz0nKQorICAgICAgUHNpRXJyb3JFbGVtZW50OkV4cHJlc3Npb24gZXhwZWN0ZWQKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpV2hpdGVTcGFjZSgnXG4nKQorICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9kZWNsYXJhdGlvblBhcnNpbmcvZmllbGQvTWlzc2luZ0luaXRpYWxpemVyRXhwcmVzc2lvbi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9kZWNsYXJhdGlvblBhcnNpbmcvZmllbGQvTWlzc2luZ0luaXRpYWxpemVyRXhwcmVzc2lvbi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM1Y2UxMzIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2RlY2xhcmF0aW9uUGFyc2luZy9maWVsZC9NaXNzaW5nSW5pdGlhbGl6ZXJFeHByZXNzaW9uLmphdmEKQEAgLTAsMCArMSwzIEBACitjbGFzcyBUZXN0eworICBpbnQgZmllbGQ9OworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZGVjbGFyYXRpb25QYXJzaW5nL2ZpZWxkL01pc3NpbmdJbml0aWFsaXplckV4cHJlc3Npb24udHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9kZWNsYXJhdGlvblBhcnNpbmcvZmllbGQvTWlzc2luZ0luaXRpYWxpemVyRXhwcmVzc2lvbi50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjZiMzk3MQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZGVjbGFyYXRpb25QYXJzaW5nL2ZpZWxkL01pc3NpbmdJbml0aWFsaXplckV4cHJlc3Npb24udHh0CkBAIC0wLDAgKzEsMzAgQEAKK1BzaUphdmFGaWxlOk1pc3NpbmdJbml0aWFsaXplckV4cHJlc3Npb24uamF2YQorICBQc2lJbXBvcnRMaXN0CisgICAgPGVtcHR5IGxpc3Q+CisgIFBzaUNsYXNzOlRlc3QKKyAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lLZXl3b3JkOmNsYXNzKCdjbGFzcycpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSWRlbnRpZmllcjpUZXN0KCdUZXN0JykKKyAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4gICcpCisgICAgUHNpRmllbGQ6ZmllbGQKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDppbnQKKyAgICAgICAgUHNpS2V5d29yZDppbnQoJ2ludCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6ZmllbGQoJ2ZpZWxkJykKKyAgICAgIFBzaUphdmFUb2tlbjpFUSgnPScpCisgICAgICBQc2lFcnJvckVsZW1lbnQ6RXhwcmVzc2lvbiBleHBlY3RlZAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUphdmFUb2tlbjpTRU1JQ09MT04oJzsnKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuJykKKyAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2RlY2xhcmF0aW9uUGFyc2luZy9maWVsZC9NdWx0aS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9kZWNsYXJhdGlvblBhcnNpbmcvZmllbGQvTXVsdGkuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MWNmMmI4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9kZWNsYXJhdGlvblBhcnNpbmcvZmllbGQvTXVsdGkuamF2YQpAQCAtMCwwICsxLDMgQEAKK2NsYXNzIFRlc3R7CisgIGludCBmaWVsZDEgPSAwLCBmaWVsZDI7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9kZWNsYXJhdGlvblBhcnNpbmcvZmllbGQvTXVsdGkudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9kZWNsYXJhdGlvblBhcnNpbmcvZmllbGQvTXVsdGkudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJjNWY3M2IKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2RlY2xhcmF0aW9uUGFyc2luZy9maWVsZC9NdWx0aS50eHQKQEAgLTAsMCArMSwzNiBAQAorUHNpSmF2YUZpbGU6TXVsdGkuamF2YQorICBQc2lJbXBvcnRMaXN0CisgICAgPGVtcHR5IGxpc3Q+CisgIFBzaUNsYXNzOlRlc3QKKyAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lLZXl3b3JkOmNsYXNzKCdjbGFzcycpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSWRlbnRpZmllcjpUZXN0KCdUZXN0JykKKyAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4gICcpCisgICAgUHNpRmllbGQ6ZmllbGQxCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6aW50CisgICAgICAgIFBzaUtleXdvcmQ6aW50KCdpbnQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZpZWxkMSgnZmllbGQxJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSmF2YVRva2VuOkVRKCc9JykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpTGl0ZXJhbEV4cHJlc3Npb246MAorICAgICAgICBQc2lKYXZhVG9rZW46SU5URUdFUl9MSVRFUkFMKCcwJykKKyAgICBQc2lKYXZhVG9rZW46Q09NTUEoJywnKQorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUZpZWxkOmZpZWxkMgorICAgICAgUHNpSWRlbnRpZmllcjpmaWVsZDIoJ2ZpZWxkMicpCisgICAgICBQc2lKYXZhVG9rZW46U0VNSUNPTE9OKCc7JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcbicpCisgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2RlY2xhcmF0aW9uUGFyc2luZy9maWVsZC9NdWx0aUxpbmVVbmNsb3NlZDAuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZGVjbGFyYXRpb25QYXJzaW5nL2ZpZWxkL011bHRpTGluZVVuY2xvc2VkMC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUyN2I1MGYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2RlY2xhcmF0aW9uUGFyc2luZy9maWVsZC9NdWx0aUxpbmVVbmNsb3NlZDAuamF2YQpAQCAtMCwwICsxLDQgQEAKK2NsYXNzIFRlc3R7CisgIGludCAKKyAgT2JqZWN0IG1ldGhvZCgpe30KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2RlY2xhcmF0aW9uUGFyc2luZy9maWVsZC9NdWx0aUxpbmVVbmNsb3NlZDAudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9kZWNsYXJhdGlvblBhcnNpbmcvZmllbGQvTXVsdGlMaW5lVW5jbG9zZWQwLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kOWExMTI4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9kZWNsYXJhdGlvblBhcnNpbmcvZmllbGQvTXVsdGlMaW5lVW5jbG9zZWQwLnR4dApAQCAtMCwwICsxLDQ2IEBACitQc2lKYXZhRmlsZTpNdWx0aUxpbmVVbmNsb3NlZDAuamF2YQorICBQc2lJbXBvcnRMaXN0CisgICAgPGVtcHR5IGxpc3Q+CisgIFBzaUNsYXNzOlRlc3QKKyAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lLZXl3b3JkOmNsYXNzKCdjbGFzcycpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSWRlbnRpZmllcjpUZXN0KCdUZXN0JykKKyAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4gICcpCisgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpVHlwZUVsZW1lbnQ6aW50CisgICAgICBQc2lLZXl3b3JkOmludCgnaW50JykKKyAgICBQc2lFcnJvckVsZW1lbnQ6SWRlbnRpZmllciBleHBlY3RlZAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpV2hpdGVTcGFjZSgnIFxuICAnKQorICAgIFBzaU1ldGhvZDptZXRob2QKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50Ok9iamVjdAorICAgICAgICBQc2lKYXZhQ29kZVJlZmVyZW5jZUVsZW1lbnQ6T2JqZWN0CisgICAgICAgICAgUHNpSWRlbnRpZmllcjpPYmplY3QoJ09iamVjdCcpCisgICAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6bWV0aG9kKCdtZXRob2QnKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4nKQorICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZGVjbGFyYXRpb25QYXJzaW5nL2ZpZWxkL011bHRpTGluZVVuY2xvc2VkMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9kZWNsYXJhdGlvblBhcnNpbmcvZmllbGQvTXVsdGlMaW5lVW5jbG9zZWQxLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDg0MWY3NQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZGVjbGFyYXRpb25QYXJzaW5nL2ZpZWxkL011bHRpTGluZVVuY2xvc2VkMS5qYXZhCkBAIC0wLDAgKzEsNCBAQAorY2xhc3MgQyB7CisgIFN0cmluZyB1aVRlc3QxID0gbmV3IFN0cmluZygiVGVzdDEiKSwKKyAgICAgICAgIHVpVGVzdDI8Y2FyZXQ+ID0gbmV3IFN0cmluZygiVGVzdDIiKTsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2RlY2xhcmF0aW9uUGFyc2luZy9maWVsZC9NdWx0aUxpbmVVbmNsb3NlZDEudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9kZWNsYXJhdGlvblBhcnNpbmcvZmllbGQvTXVsdGlMaW5lVW5jbG9zZWQxLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZmU0NzA0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9kZWNsYXJhdGlvblBhcnNpbmcvZmllbGQvTXVsdGlMaW5lVW5jbG9zZWQxLnR4dApAQCAtMCwwICsxLDg2IEBACitQc2lKYXZhRmlsZTpNdWx0aUxpbmVVbmNsb3NlZDEuamF2YQorICBQc2lJbXBvcnRMaXN0CisgICAgPGVtcHR5IGxpc3Q+CisgIFBzaUNsYXNzOkMKKyAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lLZXl3b3JkOmNsYXNzKCdjbGFzcycpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSWRlbnRpZmllcjpDKCdDJykKKyAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4gICcpCisgICAgUHNpRmllbGQ6dWlUZXN0MQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OlN0cmluZworICAgICAgICBQc2lKYXZhQ29kZVJlZmVyZW5jZUVsZW1lbnQ6U3RyaW5nCisgICAgICAgICAgUHNpSWRlbnRpZmllcjpTdHJpbmcoJ1N0cmluZycpCisgICAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6dWlUZXN0MSgndWlUZXN0MScpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUphdmFUb2tlbjpFUSgnPScpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaU5ld0V4cHJlc3Npb246bmV3IFN0cmluZygiVGVzdDEiKQorICAgICAgICBQc2lLZXl3b3JkOm5ldygnbmV3JykKKyAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgICAgUHNpSmF2YUNvZGVSZWZlcmVuY2VFbGVtZW50OlN0cmluZworICAgICAgICAgIFBzaUlkZW50aWZpZXI6U3RyaW5nKCdTdHJpbmcnKQorICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICBQc2lFeHByZXNzaW9uTGlzdAorICAgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgICAgUHNpTGl0ZXJhbEV4cHJlc3Npb246IlRlc3QxIgorICAgICAgICAgICAgUHNpSmF2YVRva2VuOlNUUklOR19MSVRFUkFMKCciVGVzdDEiJykKKyAgICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgIFBzaUphdmFUb2tlbjpDT01NQSgnLCcpCisgICAgUHNpRXJyb3JFbGVtZW50OklkZW50aWZpZXIgZXhwZWN0ZWQKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAgICAgICAgJykKKyAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lUeXBlRWxlbWVudDp1aVRlc3QyPGNhcmV0PgorICAgICAgUHNpSmF2YUNvZGVSZWZlcmVuY2VFbGVtZW50OnVpVGVzdDI8Y2FyZXQ+CisgICAgICAgIFBzaUlkZW50aWZpZXI6dWlUZXN0MigndWlUZXN0MicpCisgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICBQc2lKYXZhVG9rZW46TFQoJzwnKQorICAgICAgICAgIFBzaVR5cGVFbGVtZW50OmNhcmV0CisgICAgICAgICAgICBQc2lKYXZhQ29kZVJlZmVyZW5jZUVsZW1lbnQ6Y2FyZXQKKyAgICAgICAgICAgICAgUHNpSWRlbnRpZmllcjpjYXJldCgnY2FyZXQnKQorICAgICAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgUHNpSmF2YVRva2VuOkdUKCc+JykKKyAgICBQc2lFcnJvckVsZW1lbnQ6SWRlbnRpZmllciBleHBlY3RlZAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpRXJyb3JFbGVtZW50OlVuZXhwZWN0ZWQgdG9rZW4KKyAgICAgIFBzaUphdmFUb2tlbjpFUSgnPScpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUtleXdvcmQ6bmV3KCduZXcnKQorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaU1ldGhvZDpTdHJpbmcKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUlkZW50aWZpZXI6U3RyaW5nKCdTdHJpbmcnKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooIlRlc3QyIikKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpRXJyb3JFbGVtZW50OlBhcmFtZXRlciBleHBlY3RlZAorICAgICAgICAgIFBzaUphdmFUb2tlbjpTVFJJTkdfTElURVJBTCgnIlRlc3QyIicpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpSmF2YVRva2VuOlNFTUlDT0xPTignOycpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4nKQorICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZGVjbGFyYXRpb25QYXJzaW5nL2ZpZWxkL1NpbXBsZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9kZWNsYXJhdGlvblBhcnNpbmcvZmllbGQvU2ltcGxlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTE2ODNhMgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZGVjbGFyYXRpb25QYXJzaW5nL2ZpZWxkL1NpbXBsZS5qYXZhCkBAIC0wLDAgKzEsMyBAQAorY2xhc3MgVGVzdHsKKyAgaW50IGZpZWxkID0gMDsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2RlY2xhcmF0aW9uUGFyc2luZy9maWVsZC9TaW1wbGUudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9kZWNsYXJhdGlvblBhcnNpbmcvZmllbGQvU2ltcGxlLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZTEyODA2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9kZWNsYXJhdGlvblBhcnNpbmcvZmllbGQvU2ltcGxlLnR4dApAQCAtMCwwICsxLDMyIEBACitQc2lKYXZhRmlsZTpTaW1wbGUuamF2YQorICBQc2lJbXBvcnRMaXN0CisgICAgPGVtcHR5IGxpc3Q+CisgIFBzaUNsYXNzOlRlc3QKKyAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lLZXl3b3JkOmNsYXNzKCdjbGFzcycpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSWRlbnRpZmllcjpUZXN0KCdUZXN0JykKKyAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4gICcpCisgICAgUHNpRmllbGQ6ZmllbGQKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDppbnQKKyAgICAgICAgUHNpS2V5d29yZDppbnQoJ2ludCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6ZmllbGQoJ2ZpZWxkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSmF2YVRva2VuOkVRKCc9JykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpTGl0ZXJhbEV4cHJlc3Npb246MAorICAgICAgICBQc2lKYXZhVG9rZW46SU5URUdFUl9MSVRFUkFMKCcwJykKKyAgICAgIFBzaUphdmFUb2tlbjpTRU1JQ09MT04oJzsnKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuJykKKyAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZGVjbGFyYXRpb25QYXJzaW5nL2ZpZWxkL1VuY2xvc2VkQnJhY2tldC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9kZWNsYXJhdGlvblBhcnNpbmcvZmllbGQvVW5jbG9zZWRCcmFja2V0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDc5NWViNQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZGVjbGFyYXRpb25QYXJzaW5nL2ZpZWxkL1VuY2xvc2VkQnJhY2tldC5qYXZhCkBAIC0wLDAgKzEsMyBAQAorY2xhc3MgVGVzdHsKKyAgaW50IGZpZWxkWworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZGVjbGFyYXRpb25QYXJzaW5nL2ZpZWxkL1VuY2xvc2VkQnJhY2tldC50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2RlY2xhcmF0aW9uUGFyc2luZy9maWVsZC9VbmNsb3NlZEJyYWNrZXQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNlYTM3NGNmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9kZWNsYXJhdGlvblBhcnNpbmcvZmllbGQvVW5jbG9zZWRCcmFja2V0LnR4dApAQCAtMCwwICsxLDI5IEBACitQc2lKYXZhRmlsZTpVbmNsb3NlZEJyYWNrZXQuamF2YQorICBQc2lJbXBvcnRMaXN0CisgICAgPGVtcHR5IGxpc3Q+CisgIFBzaUNsYXNzOlRlc3QKKyAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lLZXl3b3JkOmNsYXNzKCdjbGFzcycpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSWRlbnRpZmllcjpUZXN0KCdUZXN0JykKKyAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4gICcpCisgICAgUHNpRmllbGQ6ZmllbGQKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDppbnQKKyAgICAgICAgUHNpS2V5d29yZDppbnQoJ2ludCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6ZmllbGQoJ2ZpZWxkJykKKyAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0tFVCgnWycpCisgICAgICBQc2lFcnJvckVsZW1lbnQ6J10nIGV4cGVjdGVkCisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVdoaXRlU3BhY2UoJ1xuJykKKyAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZGVjbGFyYXRpb25QYXJzaW5nL2ZpZWxkL1VuY2xvc2VkQ29tbWEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZGVjbGFyYXRpb25QYXJzaW5nL2ZpZWxkL1VuY2xvc2VkQ29tbWEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45OGExNWYyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9kZWNsYXJhdGlvblBhcnNpbmcvZmllbGQvVW5jbG9zZWRDb21tYS5qYXZhCkBAIC0wLDAgKzEsMyBAQAorY2xhc3MgVGVzdHsKKyAgaW50IGZpZWxkLAorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZGVjbGFyYXRpb25QYXJzaW5nL2ZpZWxkL1VuY2xvc2VkQ29tbWEudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9kZWNsYXJhdGlvblBhcnNpbmcvZmllbGQvVW5jbG9zZWRDb21tYS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDZmNTJkOAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZGVjbGFyYXRpb25QYXJzaW5nL2ZpZWxkL1VuY2xvc2VkQ29tbWEudHh0CkBAIC0wLDAgKzEsMjkgQEAKK1BzaUphdmFGaWxlOlVuY2xvc2VkQ29tbWEuamF2YQorICBQc2lJbXBvcnRMaXN0CisgICAgPGVtcHR5IGxpc3Q+CisgIFBzaUNsYXNzOlRlc3QKKyAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lLZXl3b3JkOmNsYXNzKCdjbGFzcycpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSWRlbnRpZmllcjpUZXN0KCdUZXN0JykKKyAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4gICcpCisgICAgUHNpRmllbGQ6ZmllbGQKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDppbnQKKyAgICAgICAgUHNpS2V5d29yZDppbnQoJ2ludCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6ZmllbGQoJ2ZpZWxkJykKKyAgICBQc2lKYXZhVG9rZW46Q09NTUEoJywnKQorICAgIFBzaUVycm9yRWxlbWVudDpJZGVudGlmaWVyIGV4cGVjdGVkCisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lXaGl0ZVNwYWNlKCdcbicpCisgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2RlY2xhcmF0aW9uUGFyc2luZy9maWVsZC9VbmNsb3NlZFNlbWljb2xvbi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9kZWNsYXJhdGlvblBhcnNpbmcvZmllbGQvVW5jbG9zZWRTZW1pY29sb24uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNjQ1MzIxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9kZWNsYXJhdGlvblBhcnNpbmcvZmllbGQvVW5jbG9zZWRTZW1pY29sb24uamF2YQpAQCAtMCwwICsxLDMgQEAKK2NsYXNzIFRlc3R7CisgIGludCBmaWVsZAorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZGVjbGFyYXRpb25QYXJzaW5nL2ZpZWxkL1VuY2xvc2VkU2VtaWNvbG9uLnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZGVjbGFyYXRpb25QYXJzaW5nL2ZpZWxkL1VuY2xvc2VkU2VtaWNvbG9uLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYjE2MDQ4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9kZWNsYXJhdGlvblBhcnNpbmcvZmllbGQvVW5jbG9zZWRTZW1pY29sb24udHh0CkBAIC0wLDAgKzEsMjggQEAKK1BzaUphdmFGaWxlOlVuY2xvc2VkU2VtaWNvbG9uLmphdmEKKyAgUHNpSW1wb3J0TGlzdAorICAgIDxlbXB0eSBsaXN0PgorICBQc2lDbGFzczpUZXN0CisgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpS2V5d29yZDpjbGFzcygnY2xhc3MnKQorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUlkZW50aWZpZXI6VGVzdCgnVGVzdCcpCisgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAnKQorICAgIFBzaUZpZWxkOmZpZWxkCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6aW50CisgICAgICAgIFBzaUtleXdvcmQ6aW50KCdpbnQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZpZWxkKCdmaWVsZCcpCisgICAgICBQc2lFcnJvckVsZW1lbnQ6JzsnIGV4cGVjdGVkCisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVdoaXRlU3BhY2UoJ1xuJykKKyAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZGVjbGFyYXRpb25QYXJzaW5nL21ldGhvZC9Db21wbGV0aW9uSGFjay5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9kZWNsYXJhdGlvblBhcnNpbmcvbWV0aG9kL0NvbXBsZXRpb25IYWNrLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODk2MGUzOAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZGVjbGFyYXRpb25QYXJzaW5nL21ldGhvZC9Db21wbGV0aW9uSGFjay5qYXZhCkBAIC0wLDAgKzEsNCBAQAorY2xhc3MgQSB7CisgIDxYIEludGVsbGlKSWRlYVJ1bGV6ej4KKyAgU3RyaW5nIHMgPSAiIjsKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZGVjbGFyYXRpb25QYXJzaW5nL21ldGhvZC9Db21wbGV0aW9uSGFjay50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2RlY2xhcmF0aW9uUGFyc2luZy9tZXRob2QvQ29tcGxldGlvbkhhY2sudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNlNjAxZjMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2RlY2xhcmF0aW9uUGFyc2luZy9tZXRob2QvQ29tcGxldGlvbkhhY2sudHh0CkBAIC0wLDAgKzEsNDggQEAKK1BzaUphdmFGaWxlOkNvbXBsZXRpb25IYWNrLmphdmEKKyAgUHNpSW1wb3J0TGlzdAorICAgIDxlbXB0eSBsaXN0PgorICBQc2lDbGFzczpBCisgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpS2V5d29yZDpjbGFzcygnY2xhc3MnKQorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUlkZW50aWZpZXI6QSgnQScpCisgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAnKQorICAgIFBzaUZpZWxkOnMKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lFcnJvckVsZW1lbnQ6VW5leHBlY3RlZCB0b2tlbgorICAgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICAgIFBzaUphdmFUb2tlbjpMVCgnPCcpCisgICAgICAgICAgUHNpVHlwZVBhcmFtZXRlcjpYCisgICAgICAgICAgICBQc2lJZGVudGlmaWVyOlgoJ1gnKQorICAgICAgICAgICAgUHNpRWxlbWVudChFWFRFTkRTX0JPVU5EX0xJU1QpCisgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICAgIFBzaUVycm9yRWxlbWVudDpVbmV4cGVjdGVkIGlkZW50aWZpZXIKKyAgICAgICAgICAgIFBzaUlkZW50aWZpZXI6SW50ZWxsaUpJZGVhUnVsZXp6KCdJbnRlbGxpSklkZWFSdWxlenonKQorICAgICAgICAgIFBzaUphdmFUb2tlbjpHVCgnPicpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgJykKKyAgICAgIFBzaVR5cGVFbGVtZW50OlN0cmluZworICAgICAgICBQc2lKYXZhQ29kZVJlZmVyZW5jZUVsZW1lbnQ6U3RyaW5nCisgICAgICAgICAgUHNpSWRlbnRpZmllcjpTdHJpbmcoJ1N0cmluZycpCisgICAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6cygncycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUphdmFUb2tlbjpFUSgnPScpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUxpdGVyYWxFeHByZXNzaW9uOiIiCisgICAgICAgIFBzaUphdmFUb2tlbjpTVFJJTkdfTElURVJBTCgnIiInKQorICAgICAgUHNpSmF2YVRva2VuOlNFTUlDT0xPTignOycpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4nKQorICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZGVjbGFyYXRpb25QYXJzaW5nL21ldGhvZC9Db21wbGV0aW9uSGFjazEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZGVjbGFyYXRpb25QYXJzaW5nL21ldGhvZC9Db21wbGV0aW9uSGFjazEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mY2RkNTFhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9kZWNsYXJhdGlvblBhcnNpbmcvbWV0aG9kL0NvbXBsZXRpb25IYWNrMS5qYXZhCkBAIC0wLDAgKzEsNCBAQAorY2xhc3MgQSB7CisgIDxYCisgIFN0cmluZyBzID0gIiI7Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2RlY2xhcmF0aW9uUGFyc2luZy9tZXRob2QvQ29tcGxldGlvbkhhY2sxLnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZGVjbGFyYXRpb25QYXJzaW5nL21ldGhvZC9Db21wbGV0aW9uSGFjazEudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFlMjJlZTEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2RlY2xhcmF0aW9uUGFyc2luZy9tZXRob2QvQ29tcGxldGlvbkhhY2sxLnR4dApAQCAtMCwwICsxLDQ2IEBACitQc2lKYXZhRmlsZTpDb21wbGV0aW9uSGFjazEuamF2YQorICBQc2lJbXBvcnRMaXN0CisgICAgPGVtcHR5IGxpc3Q+CisgIFBzaUNsYXNzOkEKKyAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lLZXl3b3JkOmNsYXNzKCdjbGFzcycpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSWRlbnRpZmllcjpBKCdBJykKKyAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4gICcpCisgICAgUHNpRmllbGQ6cworICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUVycm9yRWxlbWVudDpVbmV4cGVjdGVkIHRva2VuCisgICAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgUHNpSmF2YVRva2VuOkxUKCc8JykKKyAgICAgICAgICBQc2lUeXBlUGFyYW1ldGVyOlgKKyAgICAgICAgICAgIFBzaUlkZW50aWZpZXI6WCgnWCcpCisgICAgICAgICAgICBQc2lFbGVtZW50KEVYVEVORFNfQk9VTkRfTElTVCkKKyAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgUHNpRXJyb3JFbGVtZW50Oic+JyBleHBlY3RlZC4KKyAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gICcpCisgICAgICBQc2lUeXBlRWxlbWVudDpTdHJpbmcKKyAgICAgICAgUHNpSmF2YUNvZGVSZWZlcmVuY2VFbGVtZW50OlN0cmluZworICAgICAgICAgIFBzaUlkZW50aWZpZXI6U3RyaW5nKCdTdHJpbmcnKQorICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOnMoJ3MnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lKYXZhVG9rZW46RVEoJz0nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lMaXRlcmFsRXhwcmVzc2lvbjoiIgorICAgICAgICBQc2lKYXZhVG9rZW46U1RSSU5HX0xJVEVSQUwoJyIiJykKKyAgICAgIFBzaUphdmFUb2tlbjpTRU1JQ09MT04oJzsnKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuJykKKyAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2RlY2xhcmF0aW9uUGFyc2luZy9tZXRob2QvRXJyb3JzMC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9kZWNsYXJhdGlvblBhcnNpbmcvbWV0aG9kL0Vycm9yczAuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MDJhMzUzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9kZWNsYXJhdGlvblBhcnNpbmcvbWV0aG9kL0Vycm9yczAuamF2YQpAQCAtMCwwICsxLDkgQEAKKy8vIGlsbGVnYWwgbW9kaWZpZXIgY29tYmluYXRpb25zCisKK2Fic3RyYWN0IHB1YmxpYyBjbGFzcyBhIHsKKyAgcHVibGljIHN0YXRpYyA8ZXJyb3IgZGVzY3I9IjIiPnByb3RlY3RlZCBpbnQgZjEgPSAwOyAKK30KKworY2xhc3MgZmYgeworIAorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZGVjbGFyYXRpb25QYXJzaW5nL21ldGhvZC9FcnJvcnMwLnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZGVjbGFyYXRpb25QYXJzaW5nL21ldGhvZC9FcnJvcnMwLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMThhNzA1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9kZWNsYXJhdGlvblBhcnNpbmcvbWV0aG9kL0Vycm9yczAudHh0CkBAIC0wLDAgKzEsODIgQEAKK1BzaUphdmFGaWxlOkVycm9yczAuamF2YQorICBQc2lDb21tZW50KEVORF9PRl9MSU5FX0NPTU1FTlQpKCcvLyBpbGxlZ2FsIG1vZGlmaWVyIGNvbWJpbmF0aW9ucycpCisgIFBzaVdoaXRlU3BhY2UoJ1xuXG4nKQorICBQc2lJbXBvcnRMaXN0CisgICAgPGVtcHR5IGxpc3Q+CisgIFBzaUNsYXNzOmEKKyAgICBQc2lNb2RpZmllckxpc3Q6YWJzdHJhY3QgcHVibGljCisgICAgICBQc2lLZXl3b3JkOmFic3RyYWN0KCdhYnN0cmFjdCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUtleXdvcmQ6cHVibGljKCdwdWJsaWMnKQorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUtleXdvcmQ6Y2xhc3MoJ2NsYXNzJykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lJZGVudGlmaWVyOmEoJ2EnKQorICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgJykKKyAgICBQc2lNb2RpZmllckxpc3Q6cHVibGljIHN0YXRpYworICAgICAgUHNpS2V5d29yZDpwdWJsaWMoJ3B1YmxpYycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUtleXdvcmQ6c3RhdGljKCdzdGF0aWMnKQorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUVycm9yRWxlbWVudDpVbmV4cGVjdGVkIHRva2VuCisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICBQc2lKYXZhVG9rZW46TFQoJzwnKQorICAgICAgICBQc2lUeXBlUGFyYW1ldGVyOmVycm9yCisgICAgICAgICAgUHNpSWRlbnRpZmllcjplcnJvcignZXJyb3InKQorICAgICAgICAgIFBzaUVsZW1lbnQoRVhURU5EU19CT1VORF9MSVNUKQorICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgIFBzaUVycm9yRWxlbWVudDonPicgZXhwZWN0ZWQuCisgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpVHlwZUVsZW1lbnQ6ZGVzY3IKKyAgICAgIFBzaUphdmFDb2RlUmVmZXJlbmNlRWxlbWVudDpkZXNjcgorICAgICAgICBQc2lJZGVudGlmaWVyOmRlc2NyKCdkZXNjcicpCisgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lFcnJvckVsZW1lbnQ6SWRlbnRpZmllciBleHBlY3RlZAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpRXJyb3JFbGVtZW50OlVuZXhwZWN0ZWQgdG9rZW4KKyAgICAgIFBzaUphdmFUb2tlbjpFUSgnPScpCisgICAgICBQc2lKYXZhVG9rZW46U1RSSU5HX0xJVEVSQUwoJyIyIicpCisgICAgICBQc2lKYXZhVG9rZW46R1QoJz4nKQorICAgIFBzaUZpZWxkOmYxCisgICAgICBQc2lNb2RpZmllckxpc3Q6cHJvdGVjdGVkCisgICAgICAgIFBzaUtleXdvcmQ6cHJvdGVjdGVkKCdwcm90ZWN0ZWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lUeXBlRWxlbWVudDppbnQKKyAgICAgICAgUHNpS2V5d29yZDppbnQoJ2ludCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6ZjEoJ2YxJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSmF2YVRva2VuOkVRKCc9JykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpTGl0ZXJhbEV4cHJlc3Npb246MAorICAgICAgICBQc2lKYXZhVG9rZW46SU5URUdFUl9MSVRFUkFMKCcwJykKKyAgICAgIFBzaUphdmFUb2tlbjpTRU1JQ09MT04oJzsnKQorICAgIFBzaVdoaXRlU3BhY2UoJyBcbicpCisgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgIFBzaVdoaXRlU3BhY2UoJ1xuXG4nKQorICBQc2lDbGFzczpmZgorICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUtleXdvcmQ6Y2xhc3MoJ2NsYXNzJykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lJZGVudGlmaWVyOmZmKCdmZicpCisgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuIFxuJykKKyAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZGVjbGFyYXRpb25QYXJzaW5nL21ldGhvZC9FcnJvcnMxLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2RlY2xhcmF0aW9uUGFyc2luZy9tZXRob2QvRXJyb3JzMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFlY2YxODQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2RlY2xhcmF0aW9uUGFyc2luZy9tZXRob2QvRXJyb3JzMS5qYXZhCkBAIC0wLDAgKzEsNiBAQAorCis8ZXJyb3IgZGVzY3I9Ik1vZGlmaWVyICdwcml2YXRlJyBub3QgYWxsb3dlZCBoZXJlIj5wcml2YXRlPC9lcnJvcj4gCis8ZXJyb3IgZGVzY3I9Ik1vZGlmaWVyICdzdGF0aWMnIG5vdCBhbGxvd2VkIGhlcmUiPnN0YXRpYzwvZXJyb3I+Cis8ZXJyb3IgZGVzY3I9Ik1vZGlmaWVyICd2b2xhdGlsZScgbm90IGFsbG93ZWQgaGVyZSI+dm9sYXRpbGU8L2Vycm9yPgorY2xhc3MgYSB7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9kZWNsYXJhdGlvblBhcnNpbmcvbWV0aG9kL0Vycm9yczEudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9kZWNsYXJhdGlvblBhcnNpbmcvbWV0aG9kL0Vycm9yczEudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgwNzVhOTgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2RlY2xhcmF0aW9uUGFyc2luZy9tZXRob2QvRXJyb3JzMS50eHQKQEAgLTAsMCArMSwxMTggQEAKK1BzaUphdmFGaWxlOkVycm9yczEuamF2YQorICBQc2lJbXBvcnRMaXN0CisgICAgPGVtcHR5IGxpc3Q+CisgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICA8ZW1wdHkgbGlzdD4KKyAgUHNpRXJyb3JFbGVtZW50OidjbGFzcycgb3IgJ2ludGVyZmFjZScgZXhwZWN0ZWQKKyAgICA8ZW1wdHkgbGlzdD4KKyAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICBQc2lKYXZhVG9rZW46TFQoJzwnKQorICAgIFBzaVR5cGVQYXJhbWV0ZXI6ZXJyb3IKKyAgICAgIFBzaUlkZW50aWZpZXI6ZXJyb3IoJ2Vycm9yJykKKyAgICAgIFBzaUVsZW1lbnQoRVhURU5EU19CT1VORF9MSVNUKQorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lFcnJvckVsZW1lbnQ6Jz4nIGV4cGVjdGVkLgorICAgICAgPGVtcHR5IGxpc3Q+CisgIFBzaVdoaXRlU3BhY2UoJyAnKQorICBQc2lFcnJvckVsZW1lbnQ6J2NsYXNzJyBvciAnaW50ZXJmYWNlJyBleHBlY3RlZAorICAgIFBzaUlkZW50aWZpZXI6ZGVzY3IoJ2Rlc2NyJykKKyAgICBQc2lKYXZhVG9rZW46RVEoJz0nKQorICAgIFBzaUphdmFUb2tlbjpTVFJJTkdfTElURVJBTCgnIk1vZGlmaWVyICdwcml2YXRlJyBub3QgYWxsb3dlZCBoZXJlIicpCisgICAgUHNpSmF2YVRva2VuOkdUKCc+JykKKyAgUHNpTW9kaWZpZXJMaXN0OnByaXZhdGUKKyAgICBQc2lLZXl3b3JkOnByaXZhdGUoJ3ByaXZhdGUnKQorICBQc2lFcnJvckVsZW1lbnQ6J2NsYXNzJyBvciAnaW50ZXJmYWNlJyBleHBlY3RlZAorICAgIDxlbXB0eSBsaXN0PgorICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgIFBzaUphdmFUb2tlbjpMVCgnPCcpCisgICAgUHNpRXJyb3JFbGVtZW50OlR5cGUgcGFyYW1ldGVyIGV4cGVjdGVkCisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lFcnJvckVsZW1lbnQ6Jz4nIGV4cGVjdGVkLgorICAgICAgPGVtcHR5IGxpc3Q+CisgIFBzaUVycm9yRWxlbWVudDonY2xhc3MnIG9yICdpbnRlcmZhY2UnIGV4cGVjdGVkCisgICAgUHNpSmF2YVRva2VuOkRJVignLycpCisgICAgUHNpSWRlbnRpZmllcjplcnJvcignZXJyb3InKQorICAgIFBzaUphdmFUb2tlbjpHVCgnPicpCisgIFBzaVdoaXRlU3BhY2UoJyBcbicpCisgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICA8ZW1wdHkgbGlzdD4KKyAgUHNpRXJyb3JFbGVtZW50OidjbGFzcycgb3IgJ2ludGVyZmFjZScgZXhwZWN0ZWQKKyAgICA8ZW1wdHkgbGlzdD4KKyAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICBQc2lKYXZhVG9rZW46TFQoJzwnKQorICAgIFBzaVR5cGVQYXJhbWV0ZXI6ZXJyb3IKKyAgICAgIFBzaUlkZW50aWZpZXI6ZXJyb3IoJ2Vycm9yJykKKyAgICAgIFBzaUVsZW1lbnQoRVhURU5EU19CT1VORF9MSVNUKQorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lFcnJvckVsZW1lbnQ6Jz4nIGV4cGVjdGVkLgorICAgICAgPGVtcHR5IGxpc3Q+CisgIFBzaVdoaXRlU3BhY2UoJyAnKQorICBQc2lFcnJvckVsZW1lbnQ6J2NsYXNzJyBvciAnaW50ZXJmYWNlJyBleHBlY3RlZAorICAgIFBzaUlkZW50aWZpZXI6ZGVzY3IoJ2Rlc2NyJykKKyAgICBQc2lKYXZhVG9rZW46RVEoJz0nKQorICAgIFBzaUphdmFUb2tlbjpTVFJJTkdfTElURVJBTCgnIk1vZGlmaWVyICdzdGF0aWMnIG5vdCBhbGxvd2VkIGhlcmUiJykKKyAgICBQc2lKYXZhVG9rZW46R1QoJz4nKQorICBQc2lNb2RpZmllckxpc3Q6c3RhdGljCisgICAgUHNpS2V5d29yZDpzdGF0aWMoJ3N0YXRpYycpCisgIFBzaUVycm9yRWxlbWVudDonY2xhc3MnIG9yICdpbnRlcmZhY2UnIGV4cGVjdGVkCisgICAgPGVtcHR5IGxpc3Q+CisgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgUHNpSmF2YVRva2VuOkxUKCc8JykKKyAgICBQc2lFcnJvckVsZW1lbnQ6VHlwZSBwYXJhbWV0ZXIgZXhwZWN0ZWQKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUVycm9yRWxlbWVudDonPicgZXhwZWN0ZWQuCisgICAgICA8ZW1wdHkgbGlzdD4KKyAgUHNpRXJyb3JFbGVtZW50OidjbGFzcycgb3IgJ2ludGVyZmFjZScgZXhwZWN0ZWQKKyAgICBQc2lKYXZhVG9rZW46RElWKCcvJykKKyAgICBQc2lJZGVudGlmaWVyOmVycm9yKCdlcnJvcicpCisgICAgUHNpSmF2YVRva2VuOkdUKCc+JykKKyAgUHNpV2hpdGVTcGFjZSgnXG4nKQorICBQc2lNb2RpZmllckxpc3Q6CisgICAgPGVtcHR5IGxpc3Q+CisgIFBzaUVycm9yRWxlbWVudDonY2xhc3MnIG9yICdpbnRlcmZhY2UnIGV4cGVjdGVkCisgICAgPGVtcHR5IGxpc3Q+CisgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgUHNpSmF2YVRva2VuOkxUKCc8JykKKyAgICBQc2lUeXBlUGFyYW1ldGVyOmVycm9yCisgICAgICBQc2lJZGVudGlmaWVyOmVycm9yKCdlcnJvcicpCisgICAgICBQc2lFbGVtZW50KEVYVEVORFNfQk9VTkRfTElTVCkKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpRXJyb3JFbGVtZW50Oic+JyBleHBlY3RlZC4KKyAgICAgIDxlbXB0eSBsaXN0PgorICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgUHNpRXJyb3JFbGVtZW50OidjbGFzcycgb3IgJ2ludGVyZmFjZScgZXhwZWN0ZWQKKyAgICBQc2lJZGVudGlmaWVyOmRlc2NyKCdkZXNjcicpCisgICAgUHNpSmF2YVRva2VuOkVRKCc9JykKKyAgICBQc2lKYXZhVG9rZW46U1RSSU5HX0xJVEVSQUwoJyJNb2RpZmllciAndm9sYXRpbGUnIG5vdCBhbGxvd2VkIGhlcmUiJykKKyAgICBQc2lKYXZhVG9rZW46R1QoJz4nKQorICBQc2lNb2RpZmllckxpc3Q6dm9sYXRpbGUKKyAgICBQc2lLZXl3b3JkOnZvbGF0aWxlKCd2b2xhdGlsZScpCisgIFBzaUVycm9yRWxlbWVudDonY2xhc3MnIG9yICdpbnRlcmZhY2UnIGV4cGVjdGVkCisgICAgPGVtcHR5IGxpc3Q+CisgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgUHNpSmF2YVRva2VuOkxUKCc8JykKKyAgICBQc2lFcnJvckVsZW1lbnQ6VHlwZSBwYXJhbWV0ZXIgZXhwZWN0ZWQKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUVycm9yRWxlbWVudDonPicgZXhwZWN0ZWQuCisgICAgICA8ZW1wdHkgbGlzdD4KKyAgUHNpRXJyb3JFbGVtZW50OidjbGFzcycgb3IgJ2ludGVyZmFjZScgZXhwZWN0ZWQKKyAgICBQc2lKYXZhVG9rZW46RElWKCcvJykKKyAgICBQc2lJZGVudGlmaWVyOmVycm9yKCdlcnJvcicpCisgICAgUHNpSmF2YVRva2VuOkdUKCc+JykKKyAgUHNpV2hpdGVTcGFjZSgnXG4nKQorICBQc2lDbGFzczphCisgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpS2V5d29yZDpjbGFzcygnY2xhc3MnKQorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUlkZW50aWZpZXI6YSgnYScpCisgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuJykKKyAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2RlY2xhcmF0aW9uUGFyc2luZy9tZXRob2QvRXJyb3JzMi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9kZWNsYXJhdGlvblBhcnNpbmcvbWV0aG9kL0Vycm9yczIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNWQ0Y2U2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9kZWNsYXJhdGlvblBhcnNpbmcvbWV0aG9kL0Vycm9yczIuamF2YQpAQCAtMCwwICsxLDUgQEAKK3B1YmxpYyBjbGFzcyBUZXN0dCB7CisgIEA8Y2FyZXQ+Q29uZmlndXJhdGlvbihhZnRlclRlc3RDbGFzcz10cnVlKQorICBwdWJsaWMgdm9pZCBhZnRlcjEoKSB7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2RlY2xhcmF0aW9uUGFyc2luZy9tZXRob2QvRXJyb3JzMi50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2RlY2xhcmF0aW9uUGFyc2luZy9tZXRob2QvRXJyb3JzMi50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmRkOTAxNQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZGVjbGFyYXRpb25QYXJzaW5nL21ldGhvZC9FcnJvcnMyLnR4dApAQCAtMCwwICsxLDc3IEBACitQc2lKYXZhRmlsZTpFcnJvcnMyLmphdmEKKyAgUHNpSW1wb3J0TGlzdAorICAgIDxlbXB0eSBsaXN0PgorICBQc2lDbGFzczpUZXN0dAorICAgIFBzaU1vZGlmaWVyTGlzdDpwdWJsaWMKKyAgICAgIFBzaUtleXdvcmQ6cHVibGljKCdwdWJsaWMnKQorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUtleXdvcmQ6Y2xhc3MoJ2NsYXNzJykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lJZGVudGlmaWVyOlRlc3R0KCdUZXN0dCcpCisgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAnKQorICAgIFBzaU1ldGhvZDpDb25maWd1cmF0aW9uCisgICAgICBQc2lNb2RpZmllckxpc3Q6QAorICAgICAgICBQc2lBbm5vdGF0aW9uCisgICAgICAgICAgUHNpSmF2YVRva2VuOkFUKCdAJykKKyAgICAgICAgICBQc2lFcnJvckVsZW1lbnQ6Q2xhc3MgcmVmZXJlbmNlIGV4cGVjdGVkCisgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICBQc2lBbm5vdGF0aW9uUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICBQc2lKYXZhVG9rZW46TFQoJzwnKQorICAgICAgICBQc2lUeXBlUGFyYW1ldGVyOmNhcmV0CisgICAgICAgICAgUHNpSWRlbnRpZmllcjpjYXJldCgnY2FyZXQnKQorICAgICAgICAgIFBzaUVsZW1lbnQoRVhURU5EU19CT1VORF9MSVNUKQorICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgIFBzaUphdmFUb2tlbjpHVCgnPicpCisgICAgICBQc2lJZGVudGlmaWVyOkNvbmZpZ3VyYXRpb24oJ0NvbmZpZ3VyYXRpb24nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooYWZ0ZXJUZXN0Q2xhc3M9dHJ1ZSkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICBQc2lUeXBlRWxlbWVudDphZnRlclRlc3RDbGFzcworICAgICAgICAgIFBzaUphdmFDb2RlUmVmZXJlbmNlRWxlbWVudDphZnRlclRlc3RDbGFzcworICAgICAgICAgICAgUHNpSWRlbnRpZmllcjphZnRlclRlc3RDbGFzcygnYWZ0ZXJUZXN0Q2xhc3MnKQorICAgICAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgUHNpRXJyb3JFbGVtZW50OklkZW50aWZpZXIgZXhwZWN0ZWQKKyAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgUHNpRXJyb3JFbGVtZW50OicsJyBleHBlY3RlZAorICAgICAgICAgIFBzaUphdmFUb2tlbjpFUSgnPScpCisgICAgICAgICAgUHNpSmF2YVRva2VuOlRSVUVfS0VZV09SRCgndHJ1ZScpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpRXJyb3JFbGVtZW50Oid7JyBvciAnOycgZXhwZWN0ZWQKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpV2hpdGVTcGFjZSgnXG4gICcpCisgICAgUHNpTWV0aG9kOmFmdGVyMQorICAgICAgUHNpTW9kaWZpZXJMaXN0OnB1YmxpYworICAgICAgICBQc2lLZXl3b3JkOnB1YmxpYygncHVibGljJykKKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6YWZ0ZXIxKCdhZnRlcjEnKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4nKQorICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZGVjbGFyYXRpb25QYXJzaW5nL21ldGhvZC9FcnJvcnMzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2RlY2xhcmF0aW9uUGFyc2luZy9tZXRob2QvRXJyb3JzMy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM4ZWFkYWIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2RlY2xhcmF0aW9uUGFyc2luZy9tZXRob2QvRXJyb3JzMy5qYXZhCkBAIC0wLDAgKzEsMyBAQAorcHVibGljIGNsYXNzIFRlc3QgeworICAgdm9pZCBmb28oPGNhcmV0PgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZGVjbGFyYXRpb25QYXJzaW5nL21ldGhvZC9FcnJvcnMzLnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZGVjbGFyYXRpb25QYXJzaW5nL21ldGhvZC9FcnJvcnMzLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYTBlMjY5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9kZWNsYXJhdGlvblBhcnNpbmcvbWV0aG9kL0Vycm9yczMudHh0CkBAIC0wLDAgKzEsNTEgQEAKK1BzaUphdmFGaWxlOkVycm9yczMuamF2YQorICBQc2lJbXBvcnRMaXN0CisgICAgPGVtcHR5IGxpc3Q+CisgIFBzaUNsYXNzOlRlc3QKKyAgICBQc2lNb2RpZmllckxpc3Q6cHVibGljCisgICAgICBQc2lLZXl3b3JkOnB1YmxpYygncHVibGljJykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lLZXl3b3JkOmNsYXNzKCdjbGFzcycpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSWRlbnRpZmllcjpUZXN0KCdUZXN0JykKKyAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4gICAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0Oig8Y2FyZXQ+CisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUVycm9yRWxlbWVudDpQYXJhbWV0ZXIgZXhwZWN0ZWQKKyAgICAgICAgICBQc2lKYXZhVG9rZW46TFQoJzwnKQorICAgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgIFBzaVR5cGVFbGVtZW50OmNhcmV0CisgICAgICAgICAgUHNpSmF2YUNvZGVSZWZlcmVuY2VFbGVtZW50OmNhcmV0CisgICAgICAgICAgICBQc2lJZGVudGlmaWVyOmNhcmV0KCdjYXJldCcpCisgICAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICBQc2lFcnJvckVsZW1lbnQ6SWRlbnRpZmllciBleHBlY3RlZAorICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICBQc2lFcnJvckVsZW1lbnQ6JywnIGV4cGVjdGVkCisgICAgICAgICAgUHNpSmF2YVRva2VuOkdUKCc+JykKKyAgICAgICAgUHNpRXJyb3JFbGVtZW50OicpJyBleHBlY3RlZAorICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUVycm9yRWxlbWVudDoneycgb3IgJzsnIGV4cGVjdGVkCisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVdoaXRlU3BhY2UoJ1xuJykKKyAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2RlY2xhcmF0aW9uUGFyc2luZy9tZXRob2QvR2VuZXJpY01ldGhvZC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9kZWNsYXJhdGlvblBhcnNpbmcvbWV0aG9kL0dlbmVyaWNNZXRob2QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZTNhYTlhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9kZWNsYXJhdGlvblBhcnNpbmcvbWV0aG9kL0dlbmVyaWNNZXRob2QuamF2YQpAQCAtMCwwICsxLDggQEAKK3B1YmxpYyBjbGFzcyBUZXN0IHsKKyAgICBwdWJsaWMgc3RhdGljIDxFPiB0ZXN0KCkgeworICAgIH0KKyAgICA8RT4gdm9pZCB0ZXN0MSgpIHsKKyAgICB9CisgICAgPEUxIGV4dGVuZHMgSW50ZWdlciwgRTIgZXh0ZW5kcyBSdW5uYWJsZT4gU3RyaW5nIHRlc3QyKCkgeworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2RlY2xhcmF0aW9uUGFyc2luZy9tZXRob2QvR2VuZXJpY01ldGhvZC50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2RlY2xhcmF0aW9uUGFyc2luZy9tZXRob2QvR2VuZXJpY01ldGhvZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGZjNGQ3MwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZGVjbGFyYXRpb25QYXJzaW5nL21ldGhvZC9HZW5lcmljTWV0aG9kLnR4dApAQCAtMCwwICsxLDExOSBAQAorUHNpSmF2YUZpbGU6R2VuZXJpY01ldGhvZC5qYXZhCisgIFBzaUltcG9ydExpc3QKKyAgICA8ZW1wdHkgbGlzdD4KKyAgUHNpQ2xhc3M6VGVzdAorICAgIFBzaU1vZGlmaWVyTGlzdDpwdWJsaWMKKyAgICAgIFBzaUtleXdvcmQ6cHVibGljKCdwdWJsaWMnKQorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUtleXdvcmQ6Y2xhc3MoJ2NsYXNzJykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lJZGVudGlmaWVyOlRlc3QoJ1Rlc3QnKQorICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgICAnKQorICAgIFBzaU1ldGhvZDp0ZXN0CisgICAgICBQc2lNb2RpZmllckxpc3Q6cHVibGljIHN0YXRpYworICAgICAgICBQc2lLZXl3b3JkOnB1YmxpYygncHVibGljJykKKyAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgIFBzaUtleXdvcmQ6c3RhdGljKCdzdGF0aWMnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICBQc2lKYXZhVG9rZW46TFQoJzwnKQorICAgICAgICBQc2lUeXBlUGFyYW1ldGVyOkUKKyAgICAgICAgICBQc2lJZGVudGlmaWVyOkUoJ0UnKQorICAgICAgICAgIFBzaUVsZW1lbnQoRVhURU5EU19CT1VORF9MSVNUKQorICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgIFBzaUphdmFUb2tlbjpHVCgnPicpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6dGVzdCgndGVzdCcpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAgICcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAgICcpCisgICAgUHNpTWV0aG9kOnRlc3QxCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgUHNpSmF2YVRva2VuOkxUKCc8JykKKyAgICAgICAgUHNpVHlwZVBhcmFtZXRlcjpFCisgICAgICAgICAgUHNpSWRlbnRpZmllcjpFKCdFJykKKyAgICAgICAgICBQc2lFbGVtZW50KEVYVEVORFNfQk9VTkRfTElTVCkKKyAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICBQc2lKYXZhVG9rZW46R1QoJz4nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6dGVzdDEoJ3Rlc3QxJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gICAgJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4gICAgJykKKyAgICBQc2lNZXRob2Q6dGVzdDIKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICBQc2lKYXZhVG9rZW46TFQoJzwnKQorICAgICAgICBQc2lUeXBlUGFyYW1ldGVyOkUxCisgICAgICAgICAgUHNpSWRlbnRpZmllcjpFMSgnRTEnKQorICAgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICAgIFBzaUVsZW1lbnQoRVhURU5EU19CT1VORF9MSVNUKQorICAgICAgICAgICAgUHNpS2V5d29yZDpleHRlbmRzKCdleHRlbmRzJykKKyAgICAgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICAgICAgUHNpSmF2YUNvZGVSZWZlcmVuY2VFbGVtZW50OkludGVnZXIKKyAgICAgICAgICAgICAgUHNpSWRlbnRpZmllcjpJbnRlZ2VyKCdJbnRlZ2VyJykKKyAgICAgICAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICBQc2lKYXZhVG9rZW46Q09NTUEoJywnKQorICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgICAgUHNpVHlwZVBhcmFtZXRlcjpFMgorICAgICAgICAgIFBzaUlkZW50aWZpZXI6RTIoJ0UyJykKKyAgICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgICAgICBQc2lFbGVtZW50KEVYVEVORFNfQk9VTkRfTElTVCkKKyAgICAgICAgICAgIFBzaUtleXdvcmQ6ZXh0ZW5kcygnZXh0ZW5kcycpCisgICAgICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgICAgICAgIFBzaUphdmFDb2RlUmVmZXJlbmNlRWxlbWVudDpSdW5uYWJsZQorICAgICAgICAgICAgICBQc2lJZGVudGlmaWVyOlJ1bm5hYmxlKCdSdW5uYWJsZScpCisgICAgICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgUHNpSmF2YVRva2VuOkdUKCc+JykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpVHlwZUVsZW1lbnQ6U3RyaW5nCisgICAgICAgIFBzaUphdmFDb2RlUmVmZXJlbmNlRWxlbWVudDpTdHJpbmcKKyAgICAgICAgICBQc2lJZGVudGlmaWVyOlN0cmluZygnU3RyaW5nJykKKyAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjp0ZXN0MigndGVzdDInKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgICAnKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcbicpCisgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2RlY2xhcmF0aW9uUGFyc2luZy9tZXRob2QvR2VuZXJpY01ldGhvZEVycm9ycy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9kZWNsYXJhdGlvblBhcnNpbmcvbWV0aG9kL0dlbmVyaWNNZXRob2RFcnJvcnMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45Zjg5YWY2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9kZWNsYXJhdGlvblBhcnNpbmcvbWV0aG9kL0dlbmVyaWNNZXRob2RFcnJvcnMuamF2YQpAQCAtMCwwICsxLDQgQEAKK3B1YmxpYyBjbGFzcyBUZXN0IHsKKyAgICA8RXJyb3Igc3NzIC8+IHRlc3QgPGVycm9yPigpIHsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9kZWNsYXJhdGlvblBhcnNpbmcvbWV0aG9kL0dlbmVyaWNNZXRob2RFcnJvcnMudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9kZWNsYXJhdGlvblBhcnNpbmcvbWV0aG9kL0dlbmVyaWNNZXRob2RFcnJvcnMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI4MDNlYzcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2RlY2xhcmF0aW9uUGFyc2luZy9tZXRob2QvR2VuZXJpY01ldGhvZEVycm9ycy50eHQKQEAgLTAsMCArMSw2NiBAQAorUHNpSmF2YUZpbGU6R2VuZXJpY01ldGhvZEVycm9ycy5qYXZhCisgIFBzaUltcG9ydExpc3QKKyAgICA8ZW1wdHkgbGlzdD4KKyAgUHNpQ2xhc3M6VGVzdAorICAgIFBzaU1vZGlmaWVyTGlzdDpwdWJsaWMKKyAgICAgIFBzaUtleXdvcmQ6cHVibGljKCdwdWJsaWMnKQorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUtleXdvcmQ6Y2xhc3MoJ2NsYXNzJykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lJZGVudGlmaWVyOlRlc3QoJ1Rlc3QnKQorICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgICAnKQorICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUVycm9yRWxlbWVudDpVbmV4cGVjdGVkIHRva2VuCisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICBQc2lKYXZhVG9rZW46TFQoJzwnKQorICAgICAgICBQc2lUeXBlUGFyYW1ldGVyOkVycm9yCisgICAgICAgICAgUHNpSWRlbnRpZmllcjpFcnJvcignRXJyb3InKQorICAgICAgICAgIFBzaUVsZW1lbnQoRVhURU5EU19CT1VORF9MSVNUKQorICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgIFBzaUVycm9yRWxlbWVudDonPicgZXhwZWN0ZWQuCisgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpVHlwZUVsZW1lbnQ6c3NzCisgICAgICBQc2lKYXZhQ29kZVJlZmVyZW5jZUVsZW1lbnQ6c3NzCisgICAgICAgIFBzaUlkZW50aWZpZXI6c3NzKCdzc3MnKQorICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpRXJyb3JFbGVtZW50OklkZW50aWZpZXIgZXhwZWN0ZWQKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUVycm9yRWxlbWVudDpVbmV4cGVjdGVkIHRva2VuCisgICAgICBQc2lKYXZhVG9rZW46RElWKCcvJykKKyAgICAgIFBzaUphdmFUb2tlbjpHVCgnPicpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUphdmFDb2RlUmVmZXJlbmNlRWxlbWVudDp0ZXN0IDxlcnJvcj4KKyAgICAgICAgUHNpSWRlbnRpZmllcjp0ZXN0KCd0ZXN0JykKKyAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICBQc2lKYXZhVG9rZW46TFQoJzwnKQorICAgICAgICAgIFBzaVR5cGVFbGVtZW50OmVycm9yCisgICAgICAgICAgICBQc2lKYXZhQ29kZVJlZmVyZW5jZUVsZW1lbnQ6ZXJyb3IKKyAgICAgICAgICAgICAgUHNpSWRlbnRpZmllcjplcnJvcignZXJyb3InKQorICAgICAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgUHNpSmF2YVRva2VuOkdUKCc+JykKKyAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUNsYXNzSW5pdGlhbGl6ZXIKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAgICcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuJykKKyAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2RlY2xhcmF0aW9uUGFyc2luZy9tZXRob2QvTm9Mb2NhbE1ldGhvZC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9kZWNsYXJhdGlvblBhcnNpbmcvbWV0aG9kL05vTG9jYWxNZXRob2QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MDQzOTkyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9kZWNsYXJhdGlvblBhcnNpbmcvbWV0aG9kL05vTG9jYWxNZXRob2QuamF2YQpAQCAtMCwwICsxLDYgQEAKK2NsYXNzIEF7CisgIHsKKyAgICBhLmIKKyAgICBmb28oKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZGVjbGFyYXRpb25QYXJzaW5nL21ldGhvZC9Ob0xvY2FsTWV0aG9kLnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZGVjbGFyYXRpb25QYXJzaW5nL21ldGhvZC9Ob0xvY2FsTWV0aG9kLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNDRiMmI1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9kZWNsYXJhdGlvblBhcnNpbmcvbWV0aG9kL05vTG9jYWxNZXRob2QudHh0CkBAIC0wLDAgKzEsNTAgQEAKK1BzaUphdmFGaWxlOk5vTG9jYWxNZXRob2QuamF2YQorICBQc2lJbXBvcnRMaXN0CisgICAgPGVtcHR5IGxpc3Q+CisgIFBzaUNsYXNzOkEKKyAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lLZXl3b3JkOmNsYXNzKCdjbGFzcycpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSWRlbnRpZmllcjpBKCdBJykKKyAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4gICcpCisgICAgUHNpQ2xhc3NJbml0aWFsaXplcgorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gICAgJykKKyAgICAgICAgUHNpRXhwcmVzc2lvblN0YXRlbWVudAorICAgICAgICAgIFBzaVJlZmVyZW5jZUV4cHJlc3Npb246YS5iCisgICAgICAgICAgICBQc2lSZWZlcmVuY2VFeHByZXNzaW9uOmEKKyAgICAgICAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgICAgICBQc2lJZGVudGlmaWVyOmEoJ2EnKQorICAgICAgICAgICAgUHNpSmF2YVRva2VuOkRPVCgnLicpCisgICAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgICAgUHNpSWRlbnRpZmllcjpiKCdiJykKKyAgICAgICAgICBQc2lFcnJvckVsZW1lbnQ6JzsnIGV4cGVjdGVkCisgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gICAgJykKKyAgICAgICAgUHNpRXhwcmVzc2lvblN0YXRlbWVudAorICAgICAgICAgIFBzaU1ldGhvZENhbGxFeHByZXNzaW9uOmZvbygpCisgICAgICAgICAgICBQc2lSZWZlcmVuY2VFeHByZXNzaW9uOmZvbworICAgICAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgICAgICAgUHNpRXhwcmVzc2lvbkxpc3QKKyAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgICAgICBQc2lKYXZhVG9rZW46U0VNSUNPTE9OKCc7JykKKyAgICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gICcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuJykKKyAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2RlY2xhcmF0aW9uUGFyc2luZy9tZXRob2QvTm9ybWFsMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9kZWNsYXJhdGlvblBhcnNpbmcvbWV0aG9kL05vcm1hbDEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZTRjYTA3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9kZWNsYXJhdGlvblBhcnNpbmcvbWV0aG9kL05vcm1hbDEuamF2YQpAQCAtMCwwICsxLDQgQEAKK2NsYXNzIEF7CisgIHZvaWQgZigpeworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9kZWNsYXJhdGlvblBhcnNpbmcvbWV0aG9kL05vcm1hbDEudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9kZWNsYXJhdGlvblBhcnNpbmcvbWV0aG9kL05vcm1hbDEudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg1ZWE1MWYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2RlY2xhcmF0aW9uUGFyc2luZy9tZXRob2QvTm9ybWFsMS50eHQKQEAgLTAsMCArMSwzNyBAQAorUHNpSmF2YUZpbGU6Tm9ybWFsMS5qYXZhCisgIFBzaUltcG9ydExpc3QKKyAgICA8ZW1wdHkgbGlzdD4KKyAgUHNpQ2xhc3M6QQorICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUtleXdvcmQ6Y2xhc3MoJ2NsYXNzJykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lJZGVudGlmaWVyOkEoJ0EnKQorICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgJykKKyAgICBQc2lNZXRob2Q6ZgorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmYoJ2YnKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gICcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuJykKKyAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZGVjbGFyYXRpb25QYXJzaW5nL21ldGhvZC9Ob3JtYWwyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2RlY2xhcmF0aW9uUGFyc2luZy9tZXRob2QvTm9ybWFsMi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMwYmMyOWYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2RlY2xhcmF0aW9uUGFyc2luZy9tZXRob2QvTm9ybWFsMi5qYXZhCkBAIC0wLDAgKzEsMyBAQAorY2xhc3MgQXsKKyAgdm9pZCBmKCk7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9kZWNsYXJhdGlvblBhcnNpbmcvbWV0aG9kL05vcm1hbDIudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9kZWNsYXJhdGlvblBhcnNpbmcvbWV0aG9kL05vcm1hbDIudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ4NjMzMGEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2RlY2xhcmF0aW9uUGFyc2luZy9tZXRob2QvTm9ybWFsMi50eHQKQEAgLTAsMCArMSwzNCBAQAorUHNpSmF2YUZpbGU6Tm9ybWFsMi5qYXZhCisgIFBzaUltcG9ydExpc3QKKyAgICA8ZW1wdHkgbGlzdD4KKyAgUHNpQ2xhc3M6QQorICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUtleXdvcmQ6Y2xhc3MoJ2NsYXNzJykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lJZGVudGlmaWVyOkEoJ0EnKQorICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgJykKKyAgICBQc2lNZXRob2Q6ZgorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmYoJ2YnKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUphdmFUb2tlbjpTRU1JQ09MT04oJzsnKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuJykKKyAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZGVjbGFyYXRpb25QYXJzaW5nL21ldGhvZC9VbmNsb3NlZDEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZGVjbGFyYXRpb25QYXJzaW5nL21ldGhvZC9VbmNsb3NlZDEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NTZmNTg2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9kZWNsYXJhdGlvblBhcnNpbmcvbWV0aG9kL1VuY2xvc2VkMS5qYXZhCkBAIC0wLDAgKzEsMyBAQAorY2xhc3MgQXsKKyAgdm9pZCBmKCkKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2RlY2xhcmF0aW9uUGFyc2luZy9tZXRob2QvVW5jbG9zZWQxLnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZGVjbGFyYXRpb25QYXJzaW5nL21ldGhvZC9VbmNsb3NlZDEudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJmYTBkODYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2RlY2xhcmF0aW9uUGFyc2luZy9tZXRob2QvVW5jbG9zZWQxLnR4dApAQCAtMCwwICsxLDM1IEBACitQc2lKYXZhRmlsZTpVbmNsb3NlZDEuamF2YQorICBQc2lJbXBvcnRMaXN0CisgICAgPGVtcHR5IGxpc3Q+CisgIFBzaUNsYXNzOkEKKyAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lLZXl3b3JkOmNsYXNzKCdjbGFzcycpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSWRlbnRpZmllcjpBKCdBJykKKyAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4gICcpCisgICAgUHNpTWV0aG9kOmYKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmKCdmJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lFcnJvckVsZW1lbnQ6J3snIG9yICc7JyBleHBlY3RlZAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lXaGl0ZVNwYWNlKCdcbicpCisgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2RlY2xhcmF0aW9uUGFyc2luZy9tZXRob2QvVW5jbG9zZWQyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2RlY2xhcmF0aW9uUGFyc2luZy9tZXRob2QvVW5jbG9zZWQyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDM3MGZlNAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZGVjbGFyYXRpb25QYXJzaW5nL21ldGhvZC9VbmNsb3NlZDIuamF2YQpAQCAtMCwwICsxLDMgQEAKK2NsYXNzIEF7CisgIHZvaWQgZigKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2RlY2xhcmF0aW9uUGFyc2luZy9tZXRob2QvVW5jbG9zZWQyLnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZGVjbGFyYXRpb25QYXJzaW5nL21ldGhvZC9VbmNsb3NlZDIudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc1ZmJhYTQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2RlY2xhcmF0aW9uUGFyc2luZy9tZXRob2QvVW5jbG9zZWQyLnR4dApAQCAtMCwwICsxLDM2IEBACitQc2lKYXZhRmlsZTpVbmNsb3NlZDIuamF2YQorICBQc2lJbXBvcnRMaXN0CisgICAgPGVtcHR5IGxpc3Q+CisgIFBzaUNsYXNzOkEKKyAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lLZXl3b3JkOmNsYXNzKCdjbGFzcycpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSWRlbnRpZmllcjpBKCdBJykKKyAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4gICcpCisgICAgUHNpTWV0aG9kOmYKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmKCdmJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KAorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lFcnJvckVsZW1lbnQ6JyknIGV4cGVjdGVkCisgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpRXJyb3JFbGVtZW50Oid7JyBvciAnOycgZXhwZWN0ZWQKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpV2hpdGVTcGFjZSgnXG4nKQorICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZGVjbGFyYXRpb25QYXJzaW5nL21ldGhvZC9VbmNsb3NlZDMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZGVjbGFyYXRpb25QYXJzaW5nL21ldGhvZC9VbmNsb3NlZDMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYzQwYTAxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9kZWNsYXJhdGlvblBhcnNpbmcvbWV0aG9kL1VuY2xvc2VkMy5qYXZhCkBAIC0wLDAgKzEsNCBAQAorY2xhc3MgQXsKKyAgdm9pZCBmKCkKKyAgdm9pZCBnKCk7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9kZWNsYXJhdGlvblBhcnNpbmcvbWV0aG9kL1VuY2xvc2VkMy50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2RlY2xhcmF0aW9uUGFyc2luZy9tZXRob2QvVW5jbG9zZWQzLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZDAzMzgxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9kZWNsYXJhdGlvblBhcnNpbmcvbWV0aG9kL1VuY2xvc2VkMy50eHQKQEAgLTAsMCArMSw1MSBAQAorUHNpSmF2YUZpbGU6VW5jbG9zZWQzLmphdmEKKyAgUHNpSW1wb3J0TGlzdAorICAgIDxlbXB0eSBsaXN0PgorICBQc2lDbGFzczpBCisgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpS2V5d29yZDpjbGFzcygnY2xhc3MnKQorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUlkZW50aWZpZXI6QSgnQScpCisgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAnKQorICAgIFBzaU1ldGhvZDpmCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6ZignZicpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpRXJyb3JFbGVtZW50Oid7JyBvciAnOycgZXhwZWN0ZWQKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpV2hpdGVTcGFjZSgnXG4gICcpCisgICAgUHNpTWV0aG9kOmcKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpnKCdnJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lKYXZhVG9rZW46U0VNSUNPTE9OKCc7JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcbicpCisgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2RlY2xhcmF0aW9uUGFyc2luZy9tZXRob2QvVW5jbG9zZWQ0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2RlY2xhcmF0aW9uUGFyc2luZy9tZXRob2QvVW5jbG9zZWQ0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjY3YTVjZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZGVjbGFyYXRpb25QYXJzaW5nL21ldGhvZC9VbmNsb3NlZDQuamF2YQpAQCAtMCwwICsxLDMgQEAKK2NsYXNzIEF7CisgIHZvaWQgZihpbnQgYQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZGVjbGFyYXRpb25QYXJzaW5nL21ldGhvZC9VbmNsb3NlZDQudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9kZWNsYXJhdGlvblBhcnNpbmcvbWV0aG9kL1VuY2xvc2VkNC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzExNDZhNTgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2RlY2xhcmF0aW9uUGFyc2luZy9tZXRob2QvVW5jbG9zZWQ0LnR4dApAQCAtMCwwICsxLDQzIEBACitQc2lKYXZhRmlsZTpVbmNsb3NlZDQuamF2YQorICBQc2lJbXBvcnRMaXN0CisgICAgPGVtcHR5IGxpc3Q+CisgIFBzaUNsYXNzOkEKKyAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lLZXl3b3JkOmNsYXNzKCdjbGFzcycpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSWRlbnRpZmllcjpBKCdBJykKKyAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4gICcpCisgICAgUHNpTWV0aG9kOmYKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmKCdmJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KGludCBhCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaVBhcmFtZXRlcjphCisgICAgICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgUHNpVHlwZUVsZW1lbnQ6aW50CisgICAgICAgICAgICBQc2lLZXl3b3JkOmludCgnaW50JykKKyAgICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgICAgICBQc2lJZGVudGlmaWVyOmEoJ2EnKQorICAgICAgICBQc2lFcnJvckVsZW1lbnQ6JyknIGV4cGVjdGVkCisgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpRXJyb3JFbGVtZW50Oid7JyBvciAnOycgZXhwZWN0ZWQKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpV2hpdGVTcGFjZSgnXG4nKQorICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZGVjbGFyYXRpb25QYXJzaW5nL21ldGhvZC9VbmNsb3NlZDUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZGVjbGFyYXRpb25QYXJzaW5nL21ldGhvZC9VbmNsb3NlZDUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYmZmOGQ4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9kZWNsYXJhdGlvblBhcnNpbmcvbWV0aG9kL1VuY2xvc2VkNS5qYXZhCkBAIC0wLDAgKzEsMyBAQAorY2xhc3MgQXsKKyAgdm9pZCBmKGludCBhLCwKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2RlY2xhcmF0aW9uUGFyc2luZy9tZXRob2QvVW5jbG9zZWQ1LnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZGVjbGFyYXRpb25QYXJzaW5nL21ldGhvZC9VbmNsb3NlZDUudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE3NzQ0NjgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2RlY2xhcmF0aW9uUGFyc2luZy9tZXRob2QvVW5jbG9zZWQ1LnR4dApAQCAtMCwwICsxLDQ3IEBACitQc2lKYXZhRmlsZTpVbmNsb3NlZDUuamF2YQorICBQc2lJbXBvcnRMaXN0CisgICAgPGVtcHR5IGxpc3Q+CisgIFBzaUNsYXNzOkEKKyAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lLZXl3b3JkOmNsYXNzKCdjbGFzcycpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSWRlbnRpZmllcjpBKCdBJykKKyAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4gICcpCisgICAgUHNpTWV0aG9kOmYKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmKCdmJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KGludCBhLCwKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpUGFyYW1ldGVyOmEKKyAgICAgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICBQc2lUeXBlRWxlbWVudDppbnQKKyAgICAgICAgICAgIFBzaUtleXdvcmQ6aW50KCdpbnQnKQorICAgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICAgIFBzaUlkZW50aWZpZXI6YSgnYScpCisgICAgICAgIFBzaUphdmFUb2tlbjpDT01NQSgnLCcpCisgICAgICAgIFBzaUVycm9yRWxlbWVudDpQYXJhbWV0ZXIgZXhwZWN0ZWQKKyAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgUHNpSmF2YVRva2VuOkNPTU1BKCcsJykKKyAgICAgICAgUHNpRXJyb3JFbGVtZW50OklkZW50aWZpZXIgb3IgdHlwZSBleHBlY3RlZAorICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUVycm9yRWxlbWVudDoneycgb3IgJzsnIGV4cGVjdGVkCisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVdoaXRlU3BhY2UoJ1xuJykKKyAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2RlY2xhcmF0aW9uUGFyc2luZy9tZXRob2QvVW5jbG9zZWQ2LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2RlY2xhcmF0aW9uUGFyc2luZy9tZXRob2QvVW5jbG9zZWQ2LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjU1NzIxNAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZGVjbGFyYXRpb25QYXJzaW5nL21ldGhvZC9VbmNsb3NlZDYuamF2YQpAQCAtMCwwICsxLDMgQEAKK2NsYXNzIEF7CisgIHZvaWQgZihpbnQgYSwpOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZGVjbGFyYXRpb25QYXJzaW5nL21ldGhvZC9VbmNsb3NlZDYudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9kZWNsYXJhdGlvblBhcnNpbmcvbWV0aG9kL1VuY2xvc2VkNi50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTY1M2JkNwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZGVjbGFyYXRpb25QYXJzaW5nL21ldGhvZC9VbmNsb3NlZDYudHh0CkBAIC0wLDAgKzEsNDQgQEAKK1BzaUphdmFGaWxlOlVuY2xvc2VkNi5qYXZhCisgIFBzaUltcG9ydExpc3QKKyAgICA8ZW1wdHkgbGlzdD4KKyAgUHNpQ2xhc3M6QQorICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUtleXdvcmQ6Y2xhc3MoJ2NsYXNzJykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lJZGVudGlmaWVyOkEoJ0EnKQorICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgJykKKyAgICBQc2lNZXRob2Q6ZgorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmYoJ2YnKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooaW50IGEsKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lQYXJhbWV0ZXI6YQorICAgICAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgIFBzaVR5cGVFbGVtZW50OmludAorICAgICAgICAgICAgUHNpS2V5d29yZDppbnQoJ2ludCcpCisgICAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgICAgUHNpSWRlbnRpZmllcjphKCdhJykKKyAgICAgICAgUHNpSmF2YVRva2VuOkNPTU1BKCcsJykKKyAgICAgICAgUHNpRXJyb3JFbGVtZW50OklkZW50aWZpZXIgb3IgdHlwZSBleHBlY3RlZAorICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUphdmFUb2tlbjpTRU1JQ09MT04oJzsnKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuJykKKyAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZGVjbGFyYXRpb25QYXJzaW5nL21ldGhvZC9XaWxkY2FyZFBhcnNpbmcuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZGVjbGFyYXRpb25QYXJzaW5nL21ldGhvZC9XaWxkY2FyZFBhcnNpbmcuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZTQ2ODZiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9kZWNsYXJhdGlvblBhcnNpbmcvbWV0aG9kL1dpbGRjYXJkUGFyc2luZy5qYXZhCkBAIC0wLDAgKzEsNiBAQAorY2xhc3MgQyB7CisgICAgTGlzdDw/IGV4dGVuZHMgQj4geChDb2xsZWN0aW9uPD8gc3VwZXIgQj4geCkgeworICAgICAgICBYPD8+IHggPSBuZXcgWDxCPigpOworICAgICAgICBYPD8gc3VwZXIgWjw/IGV4dGVuZHMgQj4+IGs7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZGVjbGFyYXRpb25QYXJzaW5nL21ldGhvZC9XaWxkY2FyZFBhcnNpbmcudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9kZWNsYXJhdGlvblBhcnNpbmcvbWV0aG9kL1dpbGRjYXJkUGFyc2luZy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2IyYzI0ZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZGVjbGFyYXRpb25QYXJzaW5nL21ldGhvZC9XaWxkY2FyZFBhcnNpbmcudHh0CkBAIC0wLDAgKzEsMTQ2IEBACitQc2lKYXZhRmlsZTpXaWxkY2FyZFBhcnNpbmcuamF2YQorICBQc2lJbXBvcnRMaXN0CisgICAgPGVtcHR5IGxpc3Q+CisgIFBzaUNsYXNzOkMKKyAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lLZXl3b3JkOmNsYXNzKCdjbGFzcycpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSWRlbnRpZmllcjpDKCdDJykKKyAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4gICAgJykKKyAgICBQc2lNZXRob2Q6eAorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6TGlzdDw/IGV4dGVuZHMgQj4KKyAgICAgICAgUHNpSmF2YUNvZGVSZWZlcmVuY2VFbGVtZW50Okxpc3Q8PyBleHRlbmRzIEI+CisgICAgICAgICAgUHNpSWRlbnRpZmllcjpMaXN0KCdMaXN0JykKKyAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICBQc2lKYXZhVG9rZW46TFQoJzwnKQorICAgICAgICAgICAgUHNpVHlwZUVsZW1lbnQ6PyBleHRlbmRzIEIKKyAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOlFVRVNUKCc/JykKKyAgICAgICAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgICAgICAgIFBzaUtleXdvcmQ6ZXh0ZW5kcygnZXh0ZW5kcycpCisgICAgICAgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICAgICAgICBQc2lUeXBlRWxlbWVudDpCCisgICAgICAgICAgICAgICAgUHNpSmF2YUNvZGVSZWZlcmVuY2VFbGVtZW50OkIKKyAgICAgICAgICAgICAgICAgIFBzaUlkZW50aWZpZXI6QignQicpCisgICAgICAgICAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgICAgUHNpSmF2YVRva2VuOkdUKCc+JykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjp4KCd4JykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KENvbGxlY3Rpb248PyBzdXBlciBCPiB4KQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lQYXJhbWV0ZXI6eAorICAgICAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgIFBzaVR5cGVFbGVtZW50OkNvbGxlY3Rpb248PyBzdXBlciBCPgorICAgICAgICAgICAgUHNpSmF2YUNvZGVSZWZlcmVuY2VFbGVtZW50OkNvbGxlY3Rpb248PyBzdXBlciBCPgorICAgICAgICAgICAgICBQc2lJZGVudGlmaWVyOkNvbGxlY3Rpb24oJ0NvbGxlY3Rpb24nKQorICAgICAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOkxUKCc8JykKKyAgICAgICAgICAgICAgICBQc2lUeXBlRWxlbWVudDo/IHN1cGVyIEIKKyAgICAgICAgICAgICAgICAgIFBzaUphdmFUb2tlbjpRVUVTVCgnPycpCisgICAgICAgICAgICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgICAgICAgICAgICAgIFBzaUtleXdvcmQ6c3VwZXIoJ3N1cGVyJykKKyAgICAgICAgICAgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICAgICAgICAgICAgUHNpVHlwZUVsZW1lbnQ6QgorICAgICAgICAgICAgICAgICAgICBQc2lKYXZhQ29kZVJlZmVyZW5jZUVsZW1lbnQ6QgorICAgICAgICAgICAgICAgICAgICAgIFBzaUlkZW50aWZpZXI6QignQicpCisgICAgICAgICAgICAgICAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOkdUKCc+JykKKyAgICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgICAgICBQc2lJZGVudGlmaWVyOngoJ3gnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgICAgICAgJykKKyAgICAgICAgUHNpRGVjbGFyYXRpb25TdGF0ZW1lbnQKKyAgICAgICAgICBQc2lMb2NhbFZhcmlhYmxlOngKKyAgICAgICAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgICBQc2lUeXBlRWxlbWVudDpYPD8+CisgICAgICAgICAgICAgIFBzaUphdmFDb2RlUmVmZXJlbmNlRWxlbWVudDpYPD8+CisgICAgICAgICAgICAgICAgUHNpSWRlbnRpZmllcjpYKCdYJykKKyAgICAgICAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICAgICAgICBQc2lKYXZhVG9rZW46TFQoJzwnKQorICAgICAgICAgICAgICAgICAgUHNpVHlwZUVsZW1lbnQ6PworICAgICAgICAgICAgICAgICAgICBQc2lKYXZhVG9rZW46UVVFU1QoJz8nKQorICAgICAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOkdUKCc+JykKKyAgICAgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICAgICAgUHNpSWRlbnRpZmllcjp4KCd4JykKKyAgICAgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICAgICAgUHNpSmF2YVRva2VuOkVRKCc9JykKKyAgICAgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICAgICAgUHNpTmV3RXhwcmVzc2lvbjpuZXcgWDxCPigpCisgICAgICAgICAgICAgIFBzaUtleXdvcmQ6bmV3KCduZXcnKQorICAgICAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICAgICAgICBQc2lKYXZhQ29kZVJlZmVyZW5jZUVsZW1lbnQ6WDxCPgorICAgICAgICAgICAgICAgIFBzaUlkZW50aWZpZXI6WCgnWCcpCisgICAgICAgICAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOkxUKCc8JykKKyAgICAgICAgICAgICAgICAgIFBzaVR5cGVFbGVtZW50OkIKKyAgICAgICAgICAgICAgICAgICAgUHNpSmF2YUNvZGVSZWZlcmVuY2VFbGVtZW50OkIKKyAgICAgICAgICAgICAgICAgICAgICBQc2lJZGVudGlmaWVyOkIoJ0InKQorICAgICAgICAgICAgICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOkdUKCc+JykKKyAgICAgICAgICAgICAgUHNpRXhwcmVzc2lvbkxpc3QKKyAgICAgICAgICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICAgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICAgICAgICBQc2lKYXZhVG9rZW46U0VNSUNPTE9OKCc7JykKKyAgICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gICAgICAgICcpCisgICAgICAgIFBzaURlY2xhcmF0aW9uU3RhdGVtZW50CisgICAgICAgICAgUHNpTG9jYWxWYXJpYWJsZTprCisgICAgICAgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgICAgUHNpVHlwZUVsZW1lbnQ6WDw/IHN1cGVyIFo8PyBleHRlbmRzIEI+PgorICAgICAgICAgICAgICBQc2lKYXZhQ29kZVJlZmVyZW5jZUVsZW1lbnQ6WDw/IHN1cGVyIFo8PyBleHRlbmRzIEI+PgorICAgICAgICAgICAgICAgIFBzaUlkZW50aWZpZXI6WCgnWCcpCisgICAgICAgICAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOkxUKCc8JykKKyAgICAgICAgICAgICAgICAgIFBzaVR5cGVFbGVtZW50Oj8gc3VwZXIgWjw/IGV4dGVuZHMgQj4KKyAgICAgICAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOlFVRVNUKCc/JykKKyAgICAgICAgICAgICAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgICAgICAgICAgICAgIFBzaUtleXdvcmQ6c3VwZXIoJ3N1cGVyJykKKyAgICAgICAgICAgICAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgICAgICAgICAgICAgIFBzaVR5cGVFbGVtZW50Olo8PyBleHRlbmRzIEI+CisgICAgICAgICAgICAgICAgICAgICAgUHNpSmF2YUNvZGVSZWZlcmVuY2VFbGVtZW50Olo8PyBleHRlbmRzIEI+CisgICAgICAgICAgICAgICAgICAgICAgICBQc2lJZGVudGlmaWVyOlooJ1onKQorICAgICAgICAgICAgICAgICAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgICAgICAgICAgICAgICBQc2lKYXZhVG9rZW46TFQoJzwnKQorICAgICAgICAgICAgICAgICAgICAgICAgICBQc2lUeXBlRWxlbWVudDo/IGV4dGVuZHMgQgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBzaUphdmFUb2tlbjpRVUVTVCgnPycpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHNpS2V5d29yZDpleHRlbmRzKCdleHRlbmRzJykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBQc2lUeXBlRWxlbWVudDpCCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQc2lKYXZhQ29kZVJlZmVyZW5jZUVsZW1lbnQ6QgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQc2lJZGVudGlmaWVyOkIoJ0InKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgICAgICAgICAgICAgICAgIFBzaUphdmFUb2tlbjpHVCgnPicpCisgICAgICAgICAgICAgICAgICBQc2lKYXZhVG9rZW46R1QoJz4nKQorICAgICAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgICAgICBQc2lJZGVudGlmaWVyOmsoJ2snKQorICAgICAgICAgICAgUHNpSmF2YVRva2VuOlNFTUlDT0xPTignOycpCisgICAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAgICcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuJykKKyAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZXhwcmVzc2lvblBhcnNpbmcvQW5kMC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9leHByZXNzaW9uUGFyc2luZy9BbmQwLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2NmMTAwYwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZXhwcmVzc2lvblBhcnNpbmcvQW5kMC5qYXZhCkBAIC0wLDAgKzEsNSBAQAorY2xhc3MgRm9veworICB7CisgICAgcmV0dXJuIGEgJiBiICYgYzsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZXhwcmVzc2lvblBhcnNpbmcvQW5kMC50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2V4cHJlc3Npb25QYXJzaW5nL0FuZDAudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI2Mzg4YTkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2V4cHJlc3Npb25QYXJzaW5nL0FuZDAudHh0CkBAIC0wLDAgKzEsNTAgQEAKK1BzaUphdmFGaWxlOkFuZDAuamF2YQorICBQc2lJbXBvcnRMaXN0CisgICAgPGVtcHR5IGxpc3Q+CisgIFBzaUNsYXNzOkZvbworICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUtleXdvcmQ6Y2xhc3MoJ2NsYXNzJykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lJZGVudGlmaWVyOkZvbygnRm9vJykKKyAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4gICcpCisgICAgUHNpQ2xhc3NJbml0aWFsaXplcgorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gICAgJykKKyAgICAgICAgUHNpUmV0dXJuU3RhdGVtZW50CisgICAgICAgICAgUHNpS2V5d29yZDpyZXR1cm4oJ3JldHVybicpCisgICAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgICAgUHNpUG9seWFkaWNFeHByZXNzaW9uOiBhICYgYiAmIGMKKyAgICAgICAgICAgIFBzaVJlZmVyZW5jZUV4cHJlc3Npb246YQorICAgICAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgICAgIFBzaUlkZW50aWZpZXI6YSgnYScpCisgICAgICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgICAgICAgIFBzaUphdmFUb2tlbjpBTkQoJyYnKQorICAgICAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgICAgICBQc2lSZWZlcmVuY2VFeHByZXNzaW9uOmIKKyAgICAgICAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgICAgICBQc2lJZGVudGlmaWVyOmIoJ2InKQorICAgICAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgICAgICBQc2lKYXZhVG9rZW46QU5EKCcmJykKKyAgICAgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICAgICAgUHNpUmVmZXJlbmNlRXhwcmVzc2lvbjpjCisgICAgICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICAgICAgUHNpSWRlbnRpZmllcjpjKCdjJykKKyAgICAgICAgICBQc2lKYXZhVG9rZW46U0VNSUNPTE9OKCc7JykKKyAgICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gICcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuJykKKyAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZXhwcmVzc2lvblBhcnNpbmcvQW5kMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9leHByZXNzaW9uUGFyc2luZy9BbmQxLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDYyZDk0ZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZXhwcmVzc2lvblBhcnNpbmcvQW5kMS5qYXZhCkBAIC0wLDAgKzEsNSBAQAorY2xhc3MgRm9veworICB7CisgICAgIGEgJgorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9leHByZXNzaW9uUGFyc2luZy9BbmQxLnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZXhwcmVzc2lvblBhcnNpbmcvQW5kMS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzdiMjBmZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZXhwcmVzc2lvblBhcnNpbmcvQW5kMS50eHQKQEAgLTAsMCArMSwzOSBAQAorUHNpSmF2YUZpbGU6QW5kMS5qYXZhCisgIFBzaUltcG9ydExpc3QKKyAgICA8ZW1wdHkgbGlzdD4KKyAgUHNpQ2xhc3M6Rm9vCisgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpS2V5d29yZDpjbGFzcygnY2xhc3MnKQorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUlkZW50aWZpZXI6Rm9vKCdGb28nKQorICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgJykKKyAgICBQc2lDbGFzc0luaXRpYWxpemVyCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgICAgJykKKyAgICAgICAgUHNpRXhwcmVzc2lvblN0YXRlbWVudAorICAgICAgICAgIFBzaUJpbmFyeUV4cHJlc3Npb246YSAmCisgICAgICAgICAgICBQc2lSZWZlcmVuY2VFeHByZXNzaW9uOmEKKyAgICAgICAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgICAgICBQc2lJZGVudGlmaWVyOmEoJ2EnKQorICAgICAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgICAgICBQc2lKYXZhVG9rZW46QU5EKCcmJykKKyAgICAgICAgICAgIFBzaUVycm9yRWxlbWVudDpFeHByZXNzaW9uIGV4cGVjdGVkCisgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgIFBzaUVycm9yRWxlbWVudDonOycgZXhwZWN0ZWQKKyAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4nKQorICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZXhwcmVzc2lvblBhcnNpbmcvQW5vbnltb3VzMi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9leHByZXNzaW9uUGFyc2luZy9Bbm9ueW1vdXMyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTAwYzJhZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZXhwcmVzc2lvblBhcnNpbmcvQW5vbnltb3VzMi5qYXZhCkBAIC0wLDAgKzEsMTcgQEAKKy8vICJDb3B5ICdhJyB0byB0ZW1wIGZpbmFsIHZhcmlhYmxlIiAidHJ1ZSIKK3B1YmxpYyBjbGFzcyBEb3VibGVUcm91YmxlIHsKKyAgICBwdWJsaWMgdm9pZCB0ZXN0KCkgeworICAgICAgICBpbnQgYSA9IDE7CisgICAgICAgIGEgPSAyOworICAgICAgICBjbGFzcyBzIHsKKyAgICAgICAgICBwdWJsaWMgdm9pZCBydW4oKSB7CisgICAgICAgICAgICBuZXcgUnVubmFibGUoKSB7CisgICAgICAgICAgICAgIHB1YmxpYyB2b2lkIHJ1bigpIHsKKyAgICAgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oYSk7CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0ucnVuKCk7CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZXhwcmVzc2lvblBhcnNpbmcvQW5vbnltb3VzMi50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2V4cHJlc3Npb25QYXJzaW5nL0Fub255bW91czIudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQzMWVkMDMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2V4cHJlc3Npb25QYXJzaW5nL0Fub255bW91czIudHh0CkBAIC0wLDAgKzEsMTk3IEBACitQc2lKYXZhRmlsZTpBbm9ueW1vdXMyLmphdmEKKyAgUHNpSW1wb3J0TGlzdAorICAgIDxlbXB0eSBsaXN0PgorICBQc2lDbGFzczpEb3VibGVUcm91YmxlCisgICAgUHNpQ29tbWVudChFTkRfT0ZfTElORV9DT01NRU5UKSgnLy8gIkNvcHkgJ2EnIHRvIHRlbXAgZmluYWwgdmFyaWFibGUiICJ0cnVlIicpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4nKQorICAgIFBzaU1vZGlmaWVyTGlzdDpwdWJsaWMKKyAgICAgIFBzaUtleXdvcmQ6cHVibGljKCdwdWJsaWMnKQorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUtleXdvcmQ6Y2xhc3MoJ2NsYXNzJykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lJZGVudGlmaWVyOkRvdWJsZVRyb3VibGUoJ0RvdWJsZVRyb3VibGUnKQorICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgICAnKQorICAgIFBzaU1ldGhvZDp0ZXN0CisgICAgICBQc2lNb2RpZmllckxpc3Q6cHVibGljCisgICAgICAgIFBzaUtleXdvcmQ6cHVibGljKCdwdWJsaWMnKQorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjp0ZXN0KCd0ZXN0JykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gICAgICAgICcpCisgICAgICAgIFBzaURlY2xhcmF0aW9uU3RhdGVtZW50CisgICAgICAgICAgUHNpTG9jYWxWYXJpYWJsZTphCisgICAgICAgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgICAgUHNpVHlwZUVsZW1lbnQ6aW50CisgICAgICAgICAgICAgIFBzaUtleXdvcmQ6aW50KCdpbnQnKQorICAgICAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgICAgICBQc2lJZGVudGlmaWVyOmEoJ2EnKQorICAgICAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgICAgICBQc2lKYXZhVG9rZW46RVEoJz0nKQorICAgICAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgICAgICBQc2lMaXRlcmFsRXhwcmVzc2lvbjoxCisgICAgICAgICAgICAgIFBzaUphdmFUb2tlbjpJTlRFR0VSX0xJVEVSQUwoJzEnKQorICAgICAgICAgICAgUHNpSmF2YVRva2VuOlNFTUlDT0xPTignOycpCisgICAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAgICAgICAnKQorICAgICAgICBQc2lFeHByZXNzaW9uU3RhdGVtZW50CisgICAgICAgICAgUHNpQXNzaWdubWVudEV4cHJlc3Npb246YSA9IDIKKyAgICAgICAgICAgIFBzaVJlZmVyZW5jZUV4cHJlc3Npb246YQorICAgICAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgICAgIFBzaUlkZW50aWZpZXI6YSgnYScpCisgICAgICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgICAgICAgIFBzaUphdmFUb2tlbjpFUSgnPScpCisgICAgICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgICAgICAgIFBzaUxpdGVyYWxFeHByZXNzaW9uOjIKKyAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOklOVEVHRVJfTElURVJBTCgnMicpCisgICAgICAgICAgUHNpSmF2YVRva2VuOlNFTUlDT0xPTignOycpCisgICAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAgICAgICAnKQorICAgICAgICBQc2lEZWNsYXJhdGlvblN0YXRlbWVudAorICAgICAgICAgIFBzaUNsYXNzOnMKKyAgICAgICAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgICBQc2lLZXl3b3JkOmNsYXNzKCdjbGFzcycpCisgICAgICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgICAgICAgIFBzaUlkZW50aWZpZXI6cygncycpCisgICAgICAgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAgICAgICAgICcpCisgICAgICAgICAgICBQc2lNZXRob2Q6cnVuCisgICAgICAgICAgICAgIFBzaU1vZGlmaWVyTGlzdDpwdWJsaWMKKyAgICAgICAgICAgICAgICBQc2lLZXl3b3JkOnB1YmxpYygncHVibGljJykKKyAgICAgICAgICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgICAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgICAgICAgICAgUHNpSWRlbnRpZmllcjpydW4oJ3J1bicpCisgICAgICAgICAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICAgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICAgICAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgICAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICAgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICAgICAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAgICAgICAgICAgJykKKyAgICAgICAgICAgICAgICBQc2lFeHByZXNzaW9uU3RhdGVtZW50CisgICAgICAgICAgICAgICAgICBQc2lNZXRob2RDYWxsRXhwcmVzc2lvbjpuZXcgUnVubmFibGUoKSB7CisgICAgICAgICAgICAgIHB1YmxpYyB2b2lkIHJ1bigpIHsKKyAgICAgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oYSk7CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0ucnVuKCkKKyAgICAgICAgICAgICAgICAgICAgUHNpUmVmZXJlbmNlRXhwcmVzc2lvbjpuZXcgUnVubmFibGUoKSB7CisgICAgICAgICAgICAgIHB1YmxpYyB2b2lkIHJ1bigpIHsKKyAgICAgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oYSk7CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0ucnVuCisgICAgICAgICAgICAgICAgICAgICAgUHNpTmV3RXhwcmVzc2lvbjpuZXcgUnVubmFibGUoKSB7CisgICAgICAgICAgICAgIHB1YmxpYyB2b2lkIHJ1bigpIHsKKyAgICAgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oYSk7CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIFBzaUtleXdvcmQ6bmV3KCduZXcnKQorICAgICAgICAgICAgICAgICAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICAgICAgICAgICAgICAgICAgUHNpQW5vbnltb3VzQ2xhc3MKKyAgICAgICAgICAgICAgICAgICAgICAgICAgUHNpSmF2YUNvZGVSZWZlcmVuY2VFbGVtZW50OlJ1bm5hYmxlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHNpSWRlbnRpZmllcjpSdW5uYWJsZSgnUnVubmFibGUnKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgICAgICAgICAgICAgICAgICBQc2lFeHByZXNzaW9uTGlzdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgICAgICAgICAgICAgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICAgICAgICAgICAgICAgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgICAgICAgICAgICAgJykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgUHNpTWV0aG9kOnJ1bgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBzaU1vZGlmaWVyTGlzdDpwdWJsaWMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBzaUtleXdvcmQ6cHVibGljKCdwdWJsaWMnKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBzaUlkZW50aWZpZXI6cnVuKCdydW4nKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgICAgICAgICAgICAgICAnKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHNpRXhwcmVzc2lvblN0YXRlbWVudAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQc2lNZXRob2RDYWxsRXhwcmVzc2lvbjpTeXN0ZW0ub3V0LnByaW50bG4oYSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQc2lSZWZlcmVuY2VFeHByZXNzaW9uOlN5c3RlbS5vdXQucHJpbnRsbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHNpUmVmZXJlbmNlRXhwcmVzc2lvbjpTeXN0ZW0ub3V0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBzaVJlZmVyZW5jZUV4cHJlc3Npb246U3lzdGVtCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHNpSWRlbnRpZmllcjpTeXN0ZW0oJ1N5c3RlbScpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBzaUphdmFUb2tlbjpET1QoJy4nKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBzaUlkZW50aWZpZXI6b3V0KCdvdXQnKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOkRPVCgnLicpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHNpSWRlbnRpZmllcjpwcmludGxuKCdwcmludGxuJykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQc2lFeHByZXNzaW9uTGlzdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBzaVJlZmVyZW5jZUV4cHJlc3Npb246YQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBzaUlkZW50aWZpZXI6YSgnYScpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQc2lKYXZhVG9rZW46U0VNSUNPTE9OKCc7JykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAgICAgICAgICAgICAnKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgICAgICAgICAgICAgICAgICAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAgICAgICAgICAgJykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgICAgICAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOkRPVCgnLicpCisgICAgICAgICAgICAgICAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgICAgICAgICAgICAgUHNpSWRlbnRpZmllcjpydW4oJ3J1bicpCisgICAgICAgICAgICAgICAgICAgIFBzaUV4cHJlc3Npb25MaXN0CisgICAgICAgICAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgICAgICAgICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOlNFTUlDT0xPTignOycpCisgICAgICAgICAgICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gICAgICAgICAgJykKKyAgICAgICAgICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICAgICAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAgICAgICAnKQorICAgICAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAgICAgJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbicpCisgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9leHByZXNzaW9uUGFyc2luZy9Bbm9ueW1vdXNFcnJvcnMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZXhwcmVzc2lvblBhcnNpbmcvQW5vbnltb3VzRXJyb3JzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTQ4OGY0ZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZXhwcmVzc2lvblBhcnNpbmcvQW5vbnltb3VzRXJyb3JzLmphdmEKQEAgLTAsMCArMSw1IEBACitjbGFzcyBUZXN0IHsKKyAgICB2b2lkIG1ldGhvZCgpIHsKKyAgICAgICAgbmV3IGEoKSB7IHN0YXRpYyA8ZXJyb3I+IGludCBpOyB9OworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2V4cHJlc3Npb25QYXJzaW5nL0Fub255bW91c0Vycm9ycy50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2V4cHJlc3Npb25QYXJzaW5nL0Fub255bW91c0Vycm9ycy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2UzNjc1MwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZXhwcmVzc2lvblBhcnNpbmcvQW5vbnltb3VzRXJyb3JzLnR4dApAQCAtMCwwICsxLDc4IEBACitQc2lKYXZhRmlsZTpBbm9ueW1vdXNFcnJvcnMuamF2YQorICBQc2lJbXBvcnRMaXN0CisgICAgPGVtcHR5IGxpc3Q+CisgIFBzaUNsYXNzOlRlc3QKKyAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lLZXl3b3JkOmNsYXNzKCdjbGFzcycpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSWRlbnRpZmllcjpUZXN0KCdUZXN0JykKKyAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4gICAgJykKKyAgICBQc2lNZXRob2Q6bWV0aG9kCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6bWV0aG9kKCdtZXRob2QnKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgICAgICAgJykKKyAgICAgICAgUHNpRXhwcmVzc2lvblN0YXRlbWVudAorICAgICAgICAgIFBzaU5ld0V4cHJlc3Npb246bmV3IGEoKSB7IHN0YXRpYyA8ZXJyb3I+IGludCBpOyB9CisgICAgICAgICAgICBQc2lLZXl3b3JkOm5ldygnbmV3JykKKyAgICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgICAgICAgIFBzaUFub255bW91c0NsYXNzCisgICAgICAgICAgICAgIFBzaUphdmFDb2RlUmVmZXJlbmNlRWxlbWVudDphCisgICAgICAgICAgICAgICAgUHNpSWRlbnRpZmllcjphKCdhJykKKyAgICAgICAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICAgICAgUHNpRXhwcmVzc2lvbkxpc3QKKyAgICAgICAgICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICAgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICAgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgICAgICAgIFBzaUZpZWxkOmkKKyAgICAgICAgICAgICAgICBQc2lNb2RpZmllckxpc3Q6c3RhdGljCisgICAgICAgICAgICAgICAgICBQc2lLZXl3b3JkOnN0YXRpYygnc3RhdGljJykKKyAgICAgICAgICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgICAgICAgICAgICBQc2lFcnJvckVsZW1lbnQ6VW5leHBlY3RlZCB0b2tlbgorICAgICAgICAgICAgICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOkxUKCc8JykKKyAgICAgICAgICAgICAgICAgICAgUHNpVHlwZVBhcmFtZXRlcjplcnJvcgorICAgICAgICAgICAgICAgICAgICAgIFBzaUlkZW50aWZpZXI6ZXJyb3IoJ2Vycm9yJykKKyAgICAgICAgICAgICAgICAgICAgICBQc2lFbGVtZW50KEVYVEVORFNfQk9VTkRfTElTVCkKKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgICAgICAgICAgICBQc2lKYXZhVG9rZW46R1QoJz4nKQorICAgICAgICAgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICAgICAgICAgIFBzaVR5cGVFbGVtZW50OmludAorICAgICAgICAgICAgICAgICAgUHNpS2V5d29yZDppbnQoJ2ludCcpCisgICAgICAgICAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgICAgICAgICAgUHNpSWRlbnRpZmllcjppKCdpJykKKyAgICAgICAgICAgICAgICBQc2lKYXZhVG9rZW46U0VNSUNPTE9OKCc7JykKKyAgICAgICAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgICAgICAgIFBzaUphdmFUb2tlbjpTRU1JQ09MT04oJzsnKQorICAgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgICAnKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcbicpCisgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9leHByZXNzaW9uUGFyc2luZy9Bbm9ueW1vdXNFcnJvcnMxLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2V4cHJlc3Npb25QYXJzaW5nL0Fub255bW91c0Vycm9yczEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNzM4MzI3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9leHByZXNzaW9uUGFyc2luZy9Bbm9ueW1vdXNFcnJvcnMxLmphdmEKQEAgLTAsMCArMSwyOSBAQAorcHVibGljIGNsYXNzIGEgeworICB2b2lkIGYxKCkgCisgIHsKKyAgICBuZXcgYSgpIHsKKyAgICA8ZXJyb3IgZGVzY3I9IklubmVyIGNsYXNzZXMgY2Fubm90IGhhdmUgc3RhdGljIGRlY2xhcmF0aW9ucyI+c3RhdGljPC9lcnJvcj4KKyAgICAgIGludCBpOworCisgICAgLy8gY29tcGlsZSB0aW1lIGNvbnN0YW50IGlzIE9LCisgICAgc3RhdGljIGZpbmFsIGludCBmMSA9IDMgPCA0ID8gKGEuaXg9PTUgPyAgMSA6IDMpIC8gNCArIDE4IDogMDsKKworICAgIC8vIGl0cyBub3QgYSBjb21waWxlIHRpbWUgY29uc3RhbnQKKyAgICA8ZXJyb3IgZGVzY3I9IklubmVyIGNsYXNzZXMgY2Fubm90IGhhdmUgc3RhdGljIGRlY2xhcmF0aW9ucyI+c3RhdGljPC9lcnJvcj4KKyAgICAgIGZpbmFsIE9iamVjdCBvID0gbnVsbDsKKworICAgIDxlcnJvciBkZXNjcj0iSW5uZXIgY2xhc3NlcyBjYW5ub3QgaGF2ZSBzdGF0aWMgZGVjbGFyYXRpb25zIj5zdGF0aWM8L2Vycm9yPgorICAgICAgZmluYWwgaW50IGYyID0geCBpbnN0YW5jZW9mIEludGVnZXIgPyAxIDogMDsKKworICAgIDxlcnJvciBkZXNjcj0iSW5uZXIgY2xhc3NlcyBjYW5ub3QgaGF2ZSBzdGF0aWMgZGVjbGFyYXRpb25zIj5zdGF0aWM8L2Vycm9yPgorICAgICAgY2xhc3MgYV9pY19jMiB7fQorCisgICAgPGVycm9yIGRlc2NyPSJJbm5lciBjbGFzc2VzIGNhbm5vdCBoYXZlIHN0YXRpYyBkZWNsYXJhdGlvbnMiPnN0YXRpYzwvZXJyb3I+CisgICAgICBpbnQgYV9pY19tMihTdHJpbmcgcykgeyByZXR1cm4gMDsgfQorICAgIC8vIHN0YXRpYyBpbml0aWFsaXplcgorICAgIDxlcnJvciBkZXNjcj0iSW5uZXIgY2xhc3NlcyBjYW5ub3QgaGF2ZSBzdGF0aWMgZGVjbGFyYXRpb25zIj5zdGF0aWM8L2Vycm9yPgorICAgIHt9CisgICAgfTsKKyAgfQorfQorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2V4cHJlc3Npb25QYXJzaW5nL0Fub255bW91c0Vycm9yczEudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9leHByZXNzaW9uUGFyc2luZy9Bbm9ueW1vdXNFcnJvcnMxLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZTFlMzQzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9leHByZXNzaW9uUGFyc2luZy9Bbm9ueW1vdXNFcnJvcnMxLnR4dApAQCAtMCwwICsxLDU1OSBAQAorUHNpSmF2YUZpbGU6QW5vbnltb3VzRXJyb3JzMS5qYXZhCisgIFBzaUltcG9ydExpc3QKKyAgICA8ZW1wdHkgbGlzdD4KKyAgUHNpQ2xhc3M6YQorICAgIFBzaU1vZGlmaWVyTGlzdDpwdWJsaWMKKyAgICAgIFBzaUtleXdvcmQ6cHVibGljKCdwdWJsaWMnKQorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUtleXdvcmQ6Y2xhc3MoJ2NsYXNzJykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lJZGVudGlmaWVyOmEoJ2EnKQorICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgJykKKyAgICBQc2lNZXRob2Q6ZjEKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmMSgnZjEnKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVdoaXRlU3BhY2UoJyBcbiAgJykKKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gICAgJykKKyAgICAgICAgUHNpRXhwcmVzc2lvblN0YXRlbWVudAorICAgICAgICAgIFBzaU5ld0V4cHJlc3Npb246bmV3IGEoKSB7CisgICAgPGVycm9yIGRlc2NyPSJJbm5lciBjbGFzc2VzIGNhbm5vdCBoYXZlIHN0YXRpYyBkZWNsYXJhdGlvbnMiPnN0YXRpYzwvZXJyb3I+CisgICAgICBpbnQgaTsKKworICAgIC8vIGNvbXBpbGUgdGltZSBjb25zdGFudCBpcyBPSworICAgIHN0YXRpYyBmaW5hbCBpbnQgZjEgPSAzIDwgNCA/IChhLml4PT01ID8gIDEgOiAzKSAvIDQgKyAxOCA6IDA7CisKKyAgICAvLyBpdHMgbm90IGEgY29tcGlsZSB0aW1lIGNvbnN0YW50CisgICAgPGVycm9yIGRlc2NyPSJJbm5lciBjbGFzc2VzIGNhbm5vdCBoYXZlIHN0YXRpYyBkZWNsYXJhdGlvbnMiPnN0YXRpYzwvZXJyb3I+CisgICAgICBmaW5hbCBPYmplY3QgbyA9IG51bGw7CisKKyAgICA8ZXJyb3IgZGVzY3I9IklubmVyIGNsYXNzZXMgY2Fubm90IGhhdmUgc3RhdGljIGRlY2xhcmF0aW9ucyI+c3RhdGljPC9lcnJvcj4KKyAgICAgIGZpbmFsIGludCBmMiA9IHggaW5zdGFuY2VvZiBJbnRlZ2VyID8gMSA6IDA7CisKKyAgICA8ZXJyb3IgZGVzY3I9IklubmVyIGNsYXNzZXMgY2Fubm90IGhhdmUgc3RhdGljIGRlY2xhcmF0aW9ucyI+c3RhdGljPC9lcnJvcj4KKyAgICAgIGNsYXNzIGFfaWNfYzIge30KKworICAgIDxlcnJvciBkZXNjcj0iSW5uZXIgY2xhc3NlcyBjYW5ub3QgaGF2ZSBzdGF0aWMgZGVjbGFyYXRpb25zIj5zdGF0aWM8L2Vycm9yPgorICAgICAgaW50IGFfaWNfbTIoU3RyaW5nIHMpIHsgcmV0dXJuIDA7IH0KKyAgICAvLyBzdGF0aWMgaW5pdGlhbGl6ZXIKKyAgICA8ZXJyb3IgZGVzY3I9IklubmVyIGNsYXNzZXMgY2Fubm90IGhhdmUgc3RhdGljIGRlY2xhcmF0aW9ucyI+c3RhdGljPC9lcnJvcj4KKyAgICB7fQorICAgIH0KKyAgICAgICAgICAgIFBzaUtleXdvcmQ6bmV3KCduZXcnKQorICAgICAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICAgICAgUHNpQW5vbnltb3VzQ2xhc3MKKyAgICAgICAgICAgICAgUHNpSmF2YUNvZGVSZWZlcmVuY2VFbGVtZW50OmEKKyAgICAgICAgICAgICAgICBQc2lJZGVudGlmaWVyOmEoJ2EnKQorICAgICAgICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgICAgICBQc2lFeHByZXNzaW9uTGlzdAorICAgICAgICAgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgICAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICAgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgICAnKQorICAgICAgICAgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgICAgIFBzaUVycm9yRWxlbWVudDpVbmV4cGVjdGVkIHRva2VuCisgICAgICAgICAgICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgICAgICAgIFBzaUphdmFUb2tlbjpMVCgnPCcpCisgICAgICAgICAgICAgICAgICBQc2lUeXBlUGFyYW1ldGVyOmVycm9yCisgICAgICAgICAgICAgICAgICAgIFBzaUlkZW50aWZpZXI6ZXJyb3IoJ2Vycm9yJykKKyAgICAgICAgICAgICAgICAgICAgUHNpRWxlbWVudChFWFRFTkRTX0JPVU5EX0xJU1QpCisgICAgICAgICAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgICAgICAgICBQc2lFcnJvckVsZW1lbnQ6Jz4nIGV4cGVjdGVkLgorICAgICAgICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgICAgICAgIFBzaVR5cGVFbGVtZW50OmRlc2NyCisgICAgICAgICAgICAgICAgUHNpSmF2YUNvZGVSZWZlcmVuY2VFbGVtZW50OmRlc2NyCisgICAgICAgICAgICAgICAgICBQc2lJZGVudGlmaWVyOmRlc2NyKCdkZXNjcicpCisgICAgICAgICAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgICAgICBQc2lFcnJvckVsZW1lbnQ6SWRlbnRpZmllciBleHBlY3RlZAorICAgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgICAgICBQc2lFcnJvckVsZW1lbnQ6VW5leHBlY3RlZCB0b2tlbgorICAgICAgICAgICAgICAgIFBzaUphdmFUb2tlbjpFUSgnPScpCisgICAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOlNUUklOR19MSVRFUkFMKCciSW5uZXIgY2xhc3NlcyBjYW5ub3QgaGF2ZSBzdGF0aWMgZGVjbGFyYXRpb25zIicpCisgICAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOkdUKCc+JykKKyAgICAgICAgICAgICAgUHNpTW9kaWZpZXJMaXN0OnN0YXRpYworICAgICAgICAgICAgICAgIFBzaUtleXdvcmQ6c3RhdGljKCdzdGF0aWMnKQorICAgICAgICAgICAgICBQc2lFcnJvckVsZW1lbnQ6SWRlbnRpZmllciBvciB0eXBlIGV4cGVjdGVkCisgICAgICAgICAgICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgICAgICAgIFBzaUphdmFUb2tlbjpMVCgnPCcpCisgICAgICAgICAgICAgICAgICBQc2lFcnJvckVsZW1lbnQ6VHlwZSBwYXJhbWV0ZXIgZXhwZWN0ZWQKKyAgICAgICAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgICAgICAgICBQc2lFcnJvckVsZW1lbnQ6Jz4nIGV4cGVjdGVkLgorICAgICAgICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICAgICAgUHNpRXJyb3JFbGVtZW50OlVuZXhwZWN0ZWQgdG9rZW4KKyAgICAgICAgICAgICAgICBQc2lKYXZhVG9rZW46RElWKCcvJykKKyAgICAgICAgICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgICAgICBQc2lUeXBlRWxlbWVudDplcnJvcgorICAgICAgICAgICAgICAgIFBzaUphdmFDb2RlUmVmZXJlbmNlRWxlbWVudDplcnJvcgorICAgICAgICAgICAgICAgICAgUHNpSWRlbnRpZmllcjplcnJvcignZXJyb3InKQorICAgICAgICAgICAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICAgICAgUHNpRXJyb3JFbGVtZW50OklkZW50aWZpZXIgZXhwZWN0ZWQKKyAgICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICAgICAgUHNpRXJyb3JFbGVtZW50OlVuZXhwZWN0ZWQgdG9rZW4KKyAgICAgICAgICAgICAgICBQc2lKYXZhVG9rZW46R1QoJz4nKQorICAgICAgICAgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgICAgICcpCisgICAgICAgICAgICAgIFBzaUZpZWxkOmkKKyAgICAgICAgICAgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICAgICAgICBQc2lUeXBlRWxlbWVudDppbnQKKyAgICAgICAgICAgICAgICAgIFBzaUtleXdvcmQ6aW50KCdpbnQnKQorICAgICAgICAgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICAgICAgICAgIFBzaUlkZW50aWZpZXI6aSgnaScpCisgICAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOlNFTUlDT0xPTignOycpCisgICAgICAgICAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gICAgJykKKyAgICAgICAgICAgICAgUHNpRmllbGQ6ZjEKKyAgICAgICAgICAgICAgICBQc2lDb21tZW50KEVORF9PRl9MSU5FX0NPTU1FTlQpKCcvLyBjb21waWxlIHRpbWUgY29uc3RhbnQgaXMgT0snKQorICAgICAgICAgICAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAgICcpCisgICAgICAgICAgICAgICAgUHNpTW9kaWZpZXJMaXN0OnN0YXRpYyBmaW5hbAorICAgICAgICAgICAgICAgICAgUHNpS2V5d29yZDpzdGF0aWMoJ3N0YXRpYycpCisgICAgICAgICAgICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgICAgICAgICAgICAgIFBzaUtleXdvcmQ6ZmluYWwoJ2ZpbmFsJykKKyAgICAgICAgICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgICAgICAgICAgICBQc2lUeXBlRWxlbWVudDppbnQKKyAgICAgICAgICAgICAgICAgIFBzaUtleXdvcmQ6aW50KCdpbnQnKQorICAgICAgICAgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICAgICAgICAgIFBzaUlkZW50aWZpZXI6ZjEoJ2YxJykKKyAgICAgICAgICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgICAgICAgICAgICBQc2lKYXZhVG9rZW46RVEoJz0nKQorICAgICAgICAgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICAgICAgICAgIFBzaUNvbmRpdGlvbmFsRXhwcmVzc2lvbjozIDwgNCA/IChhLml4PT01ID8gIDEgOiAzKSAvIDQgKyAxOCA6IDAKKyAgICAgICAgICAgICAgICAgIFBzaUJpbmFyeUV4cHJlc3Npb246MyA8IDQKKyAgICAgICAgICAgICAgICAgICAgUHNpTGl0ZXJhbEV4cHJlc3Npb246MworICAgICAgICAgICAgICAgICAgICAgIFBzaUphdmFUb2tlbjpJTlRFR0VSX0xJVEVSQUwoJzMnKQorICAgICAgICAgICAgICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgICAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOkxUKCc8JykKKyAgICAgICAgICAgICAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgICAgICAgICAgICAgIFBzaUxpdGVyYWxFeHByZXNzaW9uOjQKKyAgICAgICAgICAgICAgICAgICAgICBQc2lKYXZhVG9rZW46SU5URUdFUl9MSVRFUkFMKCc0JykKKyAgICAgICAgICAgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOlFVRVNUKCc/JykKKyAgICAgICAgICAgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICAgICAgICAgICAgUHNpQmluYXJ5RXhwcmVzc2lvbjooYS5peD09NSA/ICAxIDogMykgLyA0ICsgMTgKKyAgICAgICAgICAgICAgICAgICAgUHNpQmluYXJ5RXhwcmVzc2lvbjooYS5peD09NSA/ICAxIDogMykgLyA0CisgICAgICAgICAgICAgICAgICAgICAgUHNpUGFyZW50aGVzaXplZEV4cHJlc3Npb246KGEuaXg9PTUgPyAgMSA6IDMpCisgICAgICAgICAgICAgICAgICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICAgICAgICAgICAgICAgICAgUHNpQ29uZGl0aW9uYWxFeHByZXNzaW9uOmEuaXg9PTUgPyAgMSA6IDMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgUHNpQmluYXJ5RXhwcmVzc2lvbjphLml4PT01CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHNpUmVmZXJlbmNlRXhwcmVzc2lvbjphLml4CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQc2lSZWZlcmVuY2VFeHByZXNzaW9uOmEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQc2lJZGVudGlmaWVyOmEoJ2EnKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOkRPVCgnLicpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHNpSWRlbnRpZmllcjppeCgnaXgnKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBzaUphdmFUb2tlbjpFUUVRKCc9PScpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHNpTGl0ZXJhbEV4cHJlc3Npb246NQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOklOVEVHRVJfTElURVJBTCgnNScpCisgICAgICAgICAgICAgICAgICAgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICAgICAgICAgICAgICAgICAgICBQc2lKYXZhVG9rZW46UVVFU1QoJz8nKQorICAgICAgICAgICAgICAgICAgICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgICcpCisgICAgICAgICAgICAgICAgICAgICAgICAgIFBzaUxpdGVyYWxFeHByZXNzaW9uOjEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBQc2lKYXZhVG9rZW46SU5URUdFUl9MSVRFUkFMKCcxJykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgICAgICAgICAgICAgICAgICAgIFBzaUphdmFUb2tlbjpDT0xPTignOicpCisgICAgICAgICAgICAgICAgICAgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICAgICAgICAgICAgICAgICAgICBQc2lMaXRlcmFsRXhwcmVzc2lvbjozCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOklOVEVHRVJfTElURVJBTCgnMycpCisgICAgICAgICAgICAgICAgICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgICAgICAgICAgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICAgICAgICAgICAgICAgIFBzaUphdmFUb2tlbjpESVYoJy8nKQorICAgICAgICAgICAgICAgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICAgICAgICAgICAgICAgIFBzaUxpdGVyYWxFeHByZXNzaW9uOjQKKyAgICAgICAgICAgICAgICAgICAgICAgIFBzaUphdmFUb2tlbjpJTlRFR0VSX0xJVEVSQUwoJzQnKQorICAgICAgICAgICAgICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgICAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOlBMVVMoJysnKQorICAgICAgICAgICAgICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgICAgICAgICAgICAgICAgUHNpTGl0ZXJhbEV4cHJlc3Npb246MTgKKyAgICAgICAgICAgICAgICAgICAgICBQc2lKYXZhVG9rZW46SU5URUdFUl9MSVRFUkFMKCcxOCcpCisgICAgICAgICAgICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgICAgICAgICAgICAgIFBzaUphdmFUb2tlbjpDT0xPTignOicpCisgICAgICAgICAgICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgICAgICAgICAgICAgIFBzaUxpdGVyYWxFeHByZXNzaW9uOjAKKyAgICAgICAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOklOVEVHRVJfTElURVJBTCgnMCcpCisgICAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOlNFTUlDT0xPTignOycpCisgICAgICAgICAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gICAgJykKKyAgICAgICAgICAgICAgUHNpQ29tbWVudChFTkRfT0ZfTElORV9DT01NRU5UKSgnLy8gaXRzIG5vdCBhIGNvbXBpbGUgdGltZSBjb25zdGFudCcpCisgICAgICAgICAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAgICcpCisgICAgICAgICAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICAgICAgUHNpRXJyb3JFbGVtZW50OlVuZXhwZWN0ZWQgdG9rZW4KKyAgICAgICAgICAgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOkxUKCc8JykKKyAgICAgICAgICAgICAgICAgIFBzaVR5cGVQYXJhbWV0ZXI6ZXJyb3IKKyAgICAgICAgICAgICAgICAgICAgUHNpSWRlbnRpZmllcjplcnJvcignZXJyb3InKQorICAgICAgICAgICAgICAgICAgICBQc2lFbGVtZW50KEVYVEVORFNfQk9VTkRfTElTVCkKKyAgICAgICAgICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICAgICAgICAgIFBzaUVycm9yRWxlbWVudDonPicgZXhwZWN0ZWQuCisgICAgICAgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgICAgICAgICAgUHNpVHlwZUVsZW1lbnQ6ZGVzY3IKKyAgICAgICAgICAgICAgICBQc2lKYXZhQ29kZVJlZmVyZW5jZUVsZW1lbnQ6ZGVzY3IKKyAgICAgICAgICAgICAgICAgIFBzaUlkZW50aWZpZXI6ZGVzY3IoJ2Rlc2NyJykKKyAgICAgICAgICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgICAgIFBzaUVycm9yRWxlbWVudDpJZGVudGlmaWVyIGV4cGVjdGVkCisgICAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgICAgIFBzaUVycm9yRWxlbWVudDpVbmV4cGVjdGVkIHRva2VuCisgICAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOkVRKCc9JykKKyAgICAgICAgICAgICAgICBQc2lKYXZhVG9rZW46U1RSSU5HX0xJVEVSQUwoJyJJbm5lciBjbGFzc2VzIGNhbm5vdCBoYXZlIHN0YXRpYyBkZWNsYXJhdGlvbnMiJykKKyAgICAgICAgICAgICAgICBQc2lKYXZhVG9rZW46R1QoJz4nKQorICAgICAgICAgICAgICBQc2lNb2RpZmllckxpc3Q6c3RhdGljCisgICAgICAgICAgICAgICAgUHNpS2V5d29yZDpzdGF0aWMoJ3N0YXRpYycpCisgICAgICAgICAgICAgIFBzaUVycm9yRWxlbWVudDpJZGVudGlmaWVyIG9yIHR5cGUgZXhwZWN0ZWQKKyAgICAgICAgICAgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOkxUKCc8JykKKyAgICAgICAgICAgICAgICAgIFBzaUVycm9yRWxlbWVudDpUeXBlIHBhcmFtZXRlciBleHBlY3RlZAorICAgICAgICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICAgICAgICAgIFBzaUVycm9yRWxlbWVudDonPicgZXhwZWN0ZWQuCisgICAgICAgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgICAgICBQc2lFcnJvckVsZW1lbnQ6VW5leHBlY3RlZCB0b2tlbgorICAgICAgICAgICAgICAgIFBzaUphdmFUb2tlbjpESVYoJy8nKQorICAgICAgICAgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgICAgIFBzaVR5cGVFbGVtZW50OmVycm9yCisgICAgICAgICAgICAgICAgUHNpSmF2YUNvZGVSZWZlcmVuY2VFbGVtZW50OmVycm9yCisgICAgICAgICAgICAgICAgICBQc2lJZGVudGlmaWVyOmVycm9yKCdlcnJvcicpCisgICAgICAgICAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgICAgICBQc2lFcnJvckVsZW1lbnQ6SWRlbnRpZmllciBleHBlY3RlZAorICAgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgICAgICBQc2lFcnJvckVsZW1lbnQ6VW5leHBlY3RlZCB0b2tlbgorICAgICAgICAgICAgICAgIFBzaUphdmFUb2tlbjpHVCgnPicpCisgICAgICAgICAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAgICAgJykKKyAgICAgICAgICAgICAgUHNpRmllbGQ6bworICAgICAgICAgICAgICAgIFBzaU1vZGlmaWVyTGlzdDpmaW5hbAorICAgICAgICAgICAgICAgICAgUHNpS2V5d29yZDpmaW5hbCgnZmluYWwnKQorICAgICAgICAgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICAgICAgICAgIFBzaVR5cGVFbGVtZW50Ok9iamVjdAorICAgICAgICAgICAgICAgICAgUHNpSmF2YUNvZGVSZWZlcmVuY2VFbGVtZW50Ok9iamVjdAorICAgICAgICAgICAgICAgICAgICBQc2lJZGVudGlmaWVyOk9iamVjdCgnT2JqZWN0JykKKyAgICAgICAgICAgICAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICAgICAgICAgIFBzaUlkZW50aWZpZXI6bygnbycpCisgICAgICAgICAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOkVRKCc9JykKKyAgICAgICAgICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgICAgICAgICAgICBQc2lMaXRlcmFsRXhwcmVzc2lvbjpudWxsCisgICAgICAgICAgICAgICAgICBQc2lKYXZhVG9rZW46TlVMTF9LRVlXT1JEKCdudWxsJykKKyAgICAgICAgICAgICAgICBQc2lKYXZhVG9rZW46U0VNSUNPTE9OKCc7JykKKyAgICAgICAgICAgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAgICAnKQorICAgICAgICAgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgICAgIFBzaUVycm9yRWxlbWVudDpVbmV4cGVjdGVkIHRva2VuCisgICAgICAgICAgICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgICAgICAgIFBzaUphdmFUb2tlbjpMVCgnPCcpCisgICAgICAgICAgICAgICAgICBQc2lUeXBlUGFyYW1ldGVyOmVycm9yCisgICAgICAgICAgICAgICAgICAgIFBzaUlkZW50aWZpZXI6ZXJyb3IoJ2Vycm9yJykKKyAgICAgICAgICAgICAgICAgICAgUHNpRWxlbWVudChFWFRFTkRTX0JPVU5EX0xJU1QpCisgICAgICAgICAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgICAgICAgICBQc2lFcnJvckVsZW1lbnQ6Jz4nIGV4cGVjdGVkLgorICAgICAgICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgICAgICAgIFBzaVR5cGVFbGVtZW50OmRlc2NyCisgICAgICAgICAgICAgICAgUHNpSmF2YUNvZGVSZWZlcmVuY2VFbGVtZW50OmRlc2NyCisgICAgICAgICAgICAgICAgICBQc2lJZGVudGlmaWVyOmRlc2NyKCdkZXNjcicpCisgICAgICAgICAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgICAgICBQc2lFcnJvckVsZW1lbnQ6SWRlbnRpZmllciBleHBlY3RlZAorICAgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgICAgICBQc2lFcnJvckVsZW1lbnQ6VW5leHBlY3RlZCB0b2tlbgorICAgICAgICAgICAgICAgIFBzaUphdmFUb2tlbjpFUSgnPScpCisgICAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOlNUUklOR19MSVRFUkFMKCciSW5uZXIgY2xhc3NlcyBjYW5ub3QgaGF2ZSBzdGF0aWMgZGVjbGFyYXRpb25zIicpCisgICAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOkdUKCc+JykKKyAgICAgICAgICAgICAgUHNpTW9kaWZpZXJMaXN0OnN0YXRpYworICAgICAgICAgICAgICAgIFBzaUtleXdvcmQ6c3RhdGljKCdzdGF0aWMnKQorICAgICAgICAgICAgICBQc2lFcnJvckVsZW1lbnQ6SWRlbnRpZmllciBvciB0eXBlIGV4cGVjdGVkCisgICAgICAgICAgICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgICAgICAgIFBzaUphdmFUb2tlbjpMVCgnPCcpCisgICAgICAgICAgICAgICAgICBQc2lFcnJvckVsZW1lbnQ6VHlwZSBwYXJhbWV0ZXIgZXhwZWN0ZWQKKyAgICAgICAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgICAgICAgICBQc2lFcnJvckVsZW1lbnQ6Jz4nIGV4cGVjdGVkLgorICAgICAgICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICAgICAgUHNpRXJyb3JFbGVtZW50OlVuZXhwZWN0ZWQgdG9rZW4KKyAgICAgICAgICAgICAgICBQc2lKYXZhVG9rZW46RElWKCcvJykKKyAgICAgICAgICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgICAgICBQc2lUeXBlRWxlbWVudDplcnJvcgorICAgICAgICAgICAgICAgIFBzaUphdmFDb2RlUmVmZXJlbmNlRWxlbWVudDplcnJvcgorICAgICAgICAgICAgICAgICAgUHNpSWRlbnRpZmllcjplcnJvcignZXJyb3InKQorICAgICAgICAgICAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICAgICAgUHNpRXJyb3JFbGVtZW50OklkZW50aWZpZXIgZXhwZWN0ZWQKKyAgICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICAgICAgUHNpRXJyb3JFbGVtZW50OlVuZXhwZWN0ZWQgdG9rZW4KKyAgICAgICAgICAgICAgICBQc2lKYXZhVG9rZW46R1QoJz4nKQorICAgICAgICAgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgICAgICcpCisgICAgICAgICAgICAgIFBzaUZpZWxkOmYyCisgICAgICAgICAgICAgICAgUHNpTW9kaWZpZXJMaXN0OmZpbmFsCisgICAgICAgICAgICAgICAgICBQc2lLZXl3b3JkOmZpbmFsKCdmaW5hbCcpCisgICAgICAgICAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgICAgICAgICAgUHNpVHlwZUVsZW1lbnQ6aW50CisgICAgICAgICAgICAgICAgICBQc2lLZXl3b3JkOmludCgnaW50JykKKyAgICAgICAgICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgICAgICAgICAgICBQc2lJZGVudGlmaWVyOmYyKCdmMicpCisgICAgICAgICAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOkVRKCc9JykKKyAgICAgICAgICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgICAgICAgICAgICBQc2lDb25kaXRpb25hbEV4cHJlc3Npb246eCBpbnN0YW5jZW9mIEludGVnZXIgPyAxIDogMAorICAgICAgICAgICAgICAgICAgUHNpSW5zdGFuY2VvZkV4cHJlc3Npb246eCBpbnN0YW5jZW9mIEludGVnZXIKKyAgICAgICAgICAgICAgICAgICAgUHNpUmVmZXJlbmNlRXhwcmVzc2lvbjp4CisgICAgICAgICAgICAgICAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgICAgICAgICAgICAgUHNpSWRlbnRpZmllcjp4KCd4JykKKyAgICAgICAgICAgICAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgICAgICAgICAgICAgIFBzaUtleXdvcmQ6aW5zdGFuY2VvZignaW5zdGFuY2VvZicpCisgICAgICAgICAgICAgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICAgICAgICAgICAgICBQc2lUeXBlRWxlbWVudDpJbnRlZ2VyCisgICAgICAgICAgICAgICAgICAgICAgUHNpSmF2YUNvZGVSZWZlcmVuY2VFbGVtZW50OkludGVnZXIKKyAgICAgICAgICAgICAgICAgICAgICAgIFBzaUlkZW50aWZpZXI6SW50ZWdlcignSW50ZWdlcicpCisgICAgICAgICAgICAgICAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgICAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgICAgICAgICAgICBQc2lKYXZhVG9rZW46UVVFU1QoJz8nKQorICAgICAgICAgICAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgICAgICAgICAgICBQc2lMaXRlcmFsRXhwcmVzc2lvbjoxCisgICAgICAgICAgICAgICAgICAgIFBzaUphdmFUb2tlbjpJTlRFR0VSX0xJVEVSQUwoJzEnKQorICAgICAgICAgICAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgICAgICAgICAgICBQc2lKYXZhVG9rZW46Q09MT04oJzonKQorICAgICAgICAgICAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgICAgICAgICAgICBQc2lMaXRlcmFsRXhwcmVzc2lvbjowCisgICAgICAgICAgICAgICAgICAgIFBzaUphdmFUb2tlbjpJTlRFR0VSX0xJVEVSQUwoJzAnKQorICAgICAgICAgICAgICAgIFBzaUphdmFUb2tlbjpTRU1JQ09MT04oJzsnKQorICAgICAgICAgICAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICAgICcpCisgICAgICAgICAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICAgICAgUHNpRXJyb3JFbGVtZW50OlVuZXhwZWN0ZWQgdG9rZW4KKyAgICAgICAgICAgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOkxUKCc8JykKKyAgICAgICAgICAgICAgICAgIFBzaVR5cGVQYXJhbWV0ZXI6ZXJyb3IKKyAgICAgICAgICAgICAgICAgICAgUHNpSWRlbnRpZmllcjplcnJvcignZXJyb3InKQorICAgICAgICAgICAgICAgICAgICBQc2lFbGVtZW50KEVYVEVORFNfQk9VTkRfTElTVCkKKyAgICAgICAgICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICAgICAgICAgIFBzaUVycm9yRWxlbWVudDonPicgZXhwZWN0ZWQuCisgICAgICAgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgICAgICAgICAgUHNpVHlwZUVsZW1lbnQ6ZGVzY3IKKyAgICAgICAgICAgICAgICBQc2lKYXZhQ29kZVJlZmVyZW5jZUVsZW1lbnQ6ZGVzY3IKKyAgICAgICAgICAgICAgICAgIFBzaUlkZW50aWZpZXI6ZGVzY3IoJ2Rlc2NyJykKKyAgICAgICAgICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgICAgIFBzaUVycm9yRWxlbWVudDpJZGVudGlmaWVyIGV4cGVjdGVkCisgICAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgICAgIFBzaUVycm9yRWxlbWVudDpVbmV4cGVjdGVkIHRva2VuCisgICAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOkVRKCc9JykKKyAgICAgICAgICAgICAgICBQc2lKYXZhVG9rZW46U1RSSU5HX0xJVEVSQUwoJyJJbm5lciBjbGFzc2VzIGNhbm5vdCBoYXZlIHN0YXRpYyBkZWNsYXJhdGlvbnMiJykKKyAgICAgICAgICAgICAgICBQc2lKYXZhVG9rZW46R1QoJz4nKQorICAgICAgICAgICAgICBQc2lNb2RpZmllckxpc3Q6c3RhdGljCisgICAgICAgICAgICAgICAgUHNpS2V5d29yZDpzdGF0aWMoJ3N0YXRpYycpCisgICAgICAgICAgICAgIFBzaUVycm9yRWxlbWVudDpJZGVudGlmaWVyIG9yIHR5cGUgZXhwZWN0ZWQKKyAgICAgICAgICAgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOkxUKCc8JykKKyAgICAgICAgICAgICAgICAgIFBzaUVycm9yRWxlbWVudDpUeXBlIHBhcmFtZXRlciBleHBlY3RlZAorICAgICAgICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICAgICAgICAgIFBzaUVycm9yRWxlbWVudDonPicgZXhwZWN0ZWQuCisgICAgICAgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgICAgICBQc2lFcnJvckVsZW1lbnQ6VW5leHBlY3RlZCB0b2tlbgorICAgICAgICAgICAgICAgIFBzaUphdmFUb2tlbjpESVYoJy8nKQorICAgICAgICAgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgICAgIFBzaVR5cGVFbGVtZW50OmVycm9yCisgICAgICAgICAgICAgICAgUHNpSmF2YUNvZGVSZWZlcmVuY2VFbGVtZW50OmVycm9yCisgICAgICAgICAgICAgICAgICBQc2lJZGVudGlmaWVyOmVycm9yKCdlcnJvcicpCisgICAgICAgICAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgICAgICBQc2lFcnJvckVsZW1lbnQ6SWRlbnRpZmllciBleHBlY3RlZAorICAgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgICAgICBQc2lFcnJvckVsZW1lbnQ6VW5leHBlY3RlZCB0b2tlbgorICAgICAgICAgICAgICAgIFBzaUphdmFUb2tlbjpHVCgnPicpCisgICAgICAgICAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAgICAgJykKKyAgICAgICAgICAgICAgUHNpQ2xhc3M6YV9pY19jMgorICAgICAgICAgICAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgICAgICAgIFBzaUtleXdvcmQ6Y2xhc3MoJ2NsYXNzJykKKyAgICAgICAgICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgICAgICAgICAgICBQc2lJZGVudGlmaWVyOmFfaWNfYzIoJ2FfaWNfYzInKQorICAgICAgICAgICAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICAgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICAgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgICAgICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICAgICAgICAgICAgUHNpV2hpdGVTcGFjZSgnXG5cbiAgICAnKQorICAgICAgICAgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgICAgIFBzaUVycm9yRWxlbWVudDpVbmV4cGVjdGVkIHRva2VuCisgICAgICAgICAgICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgICAgICAgIFBzaUphdmFUb2tlbjpMVCgnPCcpCisgICAgICAgICAgICAgICAgICBQc2lUeXBlUGFyYW1ldGVyOmVycm9yCisgICAgICAgICAgICAgICAgICAgIFBzaUlkZW50aWZpZXI6ZXJyb3IoJ2Vycm9yJykKKyAgICAgICAgICAgICAgICAgICAgUHNpRWxlbWVudChFWFRFTkRTX0JPVU5EX0xJU1QpCisgICAgICAgICAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgICAgICAgICBQc2lFcnJvckVsZW1lbnQ6Jz4nIGV4cGVjdGVkLgorICAgICAgICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgICAgICAgIFBzaVR5cGVFbGVtZW50OmRlc2NyCisgICAgICAgICAgICAgICAgUHNpSmF2YUNvZGVSZWZlcmVuY2VFbGVtZW50OmRlc2NyCisgICAgICAgICAgICAgICAgICBQc2lJZGVudGlmaWVyOmRlc2NyKCdkZXNjcicpCisgICAgICAgICAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgICAgICBQc2lFcnJvckVsZW1lbnQ6SWRlbnRpZmllciBleHBlY3RlZAorICAgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgICAgICBQc2lFcnJvckVsZW1lbnQ6VW5leHBlY3RlZCB0b2tlbgorICAgICAgICAgICAgICAgIFBzaUphdmFUb2tlbjpFUSgnPScpCisgICAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOlNUUklOR19MSVRFUkFMKCciSW5uZXIgY2xhc3NlcyBjYW5ub3QgaGF2ZSBzdGF0aWMgZGVjbGFyYXRpb25zIicpCisgICAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOkdUKCc+JykKKyAgICAgICAgICAgICAgUHNpTW9kaWZpZXJMaXN0OnN0YXRpYworICAgICAgICAgICAgICAgIFBzaUtleXdvcmQ6c3RhdGljKCdzdGF0aWMnKQorICAgICAgICAgICAgICBQc2lFcnJvckVsZW1lbnQ6SWRlbnRpZmllciBvciB0eXBlIGV4cGVjdGVkCisgICAgICAgICAgICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgICAgICAgIFBzaUphdmFUb2tlbjpMVCgnPCcpCisgICAgICAgICAgICAgICAgICBQc2lFcnJvckVsZW1lbnQ6VHlwZSBwYXJhbWV0ZXIgZXhwZWN0ZWQKKyAgICAgICAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgICAgICAgICBQc2lFcnJvckVsZW1lbnQ6Jz4nIGV4cGVjdGVkLgorICAgICAgICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICAgICAgUHNpRXJyb3JFbGVtZW50OlVuZXhwZWN0ZWQgdG9rZW4KKyAgICAgICAgICAgICAgICBQc2lKYXZhVG9rZW46RElWKCcvJykKKyAgICAgICAgICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgICAgICBQc2lUeXBlRWxlbWVudDplcnJvcgorICAgICAgICAgICAgICAgIFBzaUphdmFDb2RlUmVmZXJlbmNlRWxlbWVudDplcnJvcgorICAgICAgICAgICAgICAgICAgUHNpSWRlbnRpZmllcjplcnJvcignZXJyb3InKQorICAgICAgICAgICAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICAgICAgUHNpRXJyb3JFbGVtZW50OklkZW50aWZpZXIgZXhwZWN0ZWQKKyAgICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICAgICAgUHNpRXJyb3JFbGVtZW50OlVuZXhwZWN0ZWQgdG9rZW4KKyAgICAgICAgICAgICAgICBQc2lKYXZhVG9rZW46R1QoJz4nKQorICAgICAgICAgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgICAgICcpCisgICAgICAgICAgICAgIFBzaU1ldGhvZDphX2ljX20yCisgICAgICAgICAgICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgICAgICAgIFBzaVR5cGVFbGVtZW50OmludAorICAgICAgICAgICAgICAgICAgUHNpS2V5d29yZDppbnQoJ2ludCcpCisgICAgICAgICAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgICAgICAgICAgUHNpSWRlbnRpZmllcjphX2ljX20yKCdhX2ljX20yJykKKyAgICAgICAgICAgICAgICBQc2lQYXJhbWV0ZXJMaXN0OihTdHJpbmcgcykKKyAgICAgICAgICAgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgICAgICAgICAgICBQc2lQYXJhbWV0ZXI6cworICAgICAgICAgICAgICAgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgICAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgICAgICAgICAgIFBzaVR5cGVFbGVtZW50OlN0cmluZworICAgICAgICAgICAgICAgICAgICAgIFBzaUphdmFDb2RlUmVmZXJlbmNlRWxlbWVudDpTdHJpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgIFBzaUlkZW50aWZpZXI6U3RyaW5nKCdTdHJpbmcnKQorICAgICAgICAgICAgICAgICAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgICAgICAgICAgICAgIFBzaUlkZW50aWZpZXI6cygncycpCisgICAgICAgICAgICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgICAgICAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICAgICAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgICAgICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgICAgICAgICAgICAgIFBzaVJldHVyblN0YXRlbWVudAorICAgICAgICAgICAgICAgICAgICBQc2lLZXl3b3JkOnJldHVybigncmV0dXJuJykKKyAgICAgICAgICAgICAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgICAgICAgICAgICAgIFBzaUxpdGVyYWxFeHByZXNzaW9uOjAKKyAgICAgICAgICAgICAgICAgICAgICBQc2lKYXZhVG9rZW46SU5URUdFUl9MSVRFUkFMKCcwJykKKyAgICAgICAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOlNFTUlDT0xPTignOycpCisgICAgICAgICAgICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgICAgICAgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgICAgICAgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgICAnKQorICAgICAgICAgICAgICBQc2lDb21tZW50KEVORF9PRl9MSU5FX0NPTU1FTlQpKCcvLyBzdGF0aWMgaW5pdGlhbGl6ZXInKQorICAgICAgICAgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgICAnKQorICAgICAgICAgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgICAgIFBzaUVycm9yRWxlbWVudDpVbmV4cGVjdGVkIHRva2VuCisgICAgICAgICAgICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgICAgICAgIFBzaUphdmFUb2tlbjpMVCgnPCcpCisgICAgICAgICAgICAgICAgICBQc2lUeXBlUGFyYW1ldGVyOmVycm9yCisgICAgICAgICAgICAgICAgICAgIFBzaUlkZW50aWZpZXI6ZXJyb3IoJ2Vycm9yJykKKyAgICAgICAgICAgICAgICAgICAgUHNpRWxlbWVudChFWFRFTkRTX0JPVU5EX0xJU1QpCisgICAgICAgICAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgICAgICAgICBQc2lFcnJvckVsZW1lbnQ6Jz4nIGV4cGVjdGVkLgorICAgICAgICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgICAgICAgIFBzaVR5cGVFbGVtZW50OmRlc2NyCisgICAgICAgICAgICAgICAgUHNpSmF2YUNvZGVSZWZlcmVuY2VFbGVtZW50OmRlc2NyCisgICAgICAgICAgICAgICAgICBQc2lJZGVudGlmaWVyOmRlc2NyKCdkZXNjcicpCisgICAgICAgICAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgICAgICBQc2lFcnJvckVsZW1lbnQ6SWRlbnRpZmllciBleHBlY3RlZAorICAgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgICAgICBQc2lFcnJvckVsZW1lbnQ6VW5leHBlY3RlZCB0b2tlbgorICAgICAgICAgICAgICAgIFBzaUphdmFUb2tlbjpFUSgnPScpCisgICAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOlNUUklOR19MSVRFUkFMKCciSW5uZXIgY2xhc3NlcyBjYW5ub3QgaGF2ZSBzdGF0aWMgZGVjbGFyYXRpb25zIicpCisgICAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOkdUKCc+JykKKyAgICAgICAgICAgICAgUHNpTW9kaWZpZXJMaXN0OnN0YXRpYworICAgICAgICAgICAgICAgIFBzaUtleXdvcmQ6c3RhdGljKCdzdGF0aWMnKQorICAgICAgICAgICAgICBQc2lFcnJvckVsZW1lbnQ6SWRlbnRpZmllciBvciB0eXBlIGV4cGVjdGVkCisgICAgICAgICAgICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgICAgICAgIFBzaUphdmFUb2tlbjpMVCgnPCcpCisgICAgICAgICAgICAgICAgICBQc2lFcnJvckVsZW1lbnQ6VHlwZSBwYXJhbWV0ZXIgZXhwZWN0ZWQKKyAgICAgICAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgICAgICAgICBQc2lFcnJvckVsZW1lbnQ6Jz4nIGV4cGVjdGVkLgorICAgICAgICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICAgICAgUHNpRXJyb3JFbGVtZW50OlVuZXhwZWN0ZWQgdG9rZW4KKyAgICAgICAgICAgICAgICBQc2lKYXZhVG9rZW46RElWKCcvJykKKyAgICAgICAgICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgICAgICBQc2lUeXBlRWxlbWVudDplcnJvcgorICAgICAgICAgICAgICAgIFBzaUphdmFDb2RlUmVmZXJlbmNlRWxlbWVudDplcnJvcgorICAgICAgICAgICAgICAgICAgUHNpSWRlbnRpZmllcjplcnJvcignZXJyb3InKQorICAgICAgICAgICAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICAgICAgUHNpRXJyb3JFbGVtZW50OklkZW50aWZpZXIgZXhwZWN0ZWQKKyAgICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICAgICAgUHNpRXJyb3JFbGVtZW50OlVuZXhwZWN0ZWQgdG9rZW4KKyAgICAgICAgICAgICAgICBQc2lKYXZhVG9rZW46R1QoJz4nKQorICAgICAgICAgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgICAnKQorICAgICAgICAgICAgICBQc2lDbGFzc0luaXRpYWxpemVyCisgICAgICAgICAgICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgICAgICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgICAgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgICAgICAgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgICAnKQorICAgICAgICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICAgICAgICBQc2lKYXZhVG9rZW46U0VNSUNPTE9OKCc7JykKKyAgICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gICcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuJykKKyAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2V4cHJlc3Npb25QYXJzaW5nL0Fub255bW91c1dpdGhUeXBlUGFyYW1zLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2V4cHJlc3Npb25QYXJzaW5nL0Fub255bW91c1dpdGhUeXBlUGFyYW1zLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODMwZjEyNQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZXhwcmVzc2lvblBhcnNpbmcvQW5vbnltb3VzV2l0aFR5cGVQYXJhbXMuamF2YQpAQCAtMCwwICsxLDcgQEAKK2NsYXNzIFRlc3QgeworICAgIHZvaWQgbWV0aG9kKCkgeworICAgICAgICBuZXcgYTxUPigpIHsKKyAgICAgICAgICB2b2lkIGEoKSB7fQorICAgICAgICB9OworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2V4cHJlc3Npb25QYXJzaW5nL0Fub255bW91c1dpdGhUeXBlUGFyYW1zLnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZXhwcmVzc2lvblBhcnNpbmcvQW5vbnltb3VzV2l0aFR5cGVQYXJhbXMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM3MThkYzAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2V4cHJlc3Npb25QYXJzaW5nL0Fub255bW91c1dpdGhUeXBlUGFyYW1zLnR4dApAQCAtMCwwICsxLDg2IEBACitQc2lKYXZhRmlsZTpBbm9ueW1vdXNXaXRoVHlwZVBhcmFtcy5qYXZhCisgIFBzaUltcG9ydExpc3QKKyAgICA8ZW1wdHkgbGlzdD4KKyAgUHNpQ2xhc3M6VGVzdAorICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUtleXdvcmQ6Y2xhc3MoJ2NsYXNzJykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lJZGVudGlmaWVyOlRlc3QoJ1Rlc3QnKQorICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgICAnKQorICAgIFBzaU1ldGhvZDptZXRob2QKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjptZXRob2QoJ21ldGhvZCcpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAgICAgICAnKQorICAgICAgICBQc2lFeHByZXNzaW9uU3RhdGVtZW50CisgICAgICAgICAgUHNpTmV3RXhwcmVzc2lvbjpuZXcgYTxUPigpIHsKKyAgICAgICAgICB2b2lkIGEoKSB7fQorICAgICAgICB9CisgICAgICAgICAgICBQc2lLZXl3b3JkOm5ldygnbmV3JykKKyAgICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgICAgICAgIFBzaUFub255bW91c0NsYXNzCisgICAgICAgICAgICAgIFBzaUphdmFDb2RlUmVmZXJlbmNlRWxlbWVudDphPFQ+CisgICAgICAgICAgICAgICAgUHNpSWRlbnRpZmllcjphKCdhJykKKyAgICAgICAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICAgICAgICBQc2lKYXZhVG9rZW46TFQoJzwnKQorICAgICAgICAgICAgICAgICAgUHNpVHlwZUVsZW1lbnQ6VAorICAgICAgICAgICAgICAgICAgICBQc2lKYXZhQ29kZVJlZmVyZW5jZUVsZW1lbnQ6VAorICAgICAgICAgICAgICAgICAgICAgIFBzaUlkZW50aWZpZXI6VCgnVCcpCisgICAgICAgICAgICAgICAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgICAgICAgICBQc2lKYXZhVG9rZW46R1QoJz4nKQorICAgICAgICAgICAgICBQc2lFeHByZXNzaW9uTGlzdAorICAgICAgICAgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgICAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICAgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgICAgICAgICAnKQorICAgICAgICAgICAgICBQc2lNZXRob2Q6YQorICAgICAgICAgICAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgICAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICAgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgICAgICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgICAgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICAgICAgICAgIFBzaUlkZW50aWZpZXI6YSgnYScpCisgICAgICAgICAgICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgICAgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICAgICAgICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgICAgICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgICAgICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgICAgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgICAgICAgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgICAgICAgJykKKyAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgICAgICAgUHNpSmF2YVRva2VuOlNFTUlDT0xPTignOycpCisgICAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAgICcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuJykKKyAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2V4cHJlc3Npb25QYXJzaW5nL0FycmF5SW5pdGlhbGl6ZXIwLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2V4cHJlc3Npb25QYXJzaW5nL0FycmF5SW5pdGlhbGl6ZXIwLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmNkMzI2ZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZXhwcmVzc2lvblBhcnNpbmcvQXJyYXlJbml0aWFsaXplcjAuamF2YQpAQCAtMCwwICsxLDMgQEAKK2NsYXNzIEF7CisgIGludCBhID0geyB9OworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZXhwcmVzc2lvblBhcnNpbmcvQXJyYXlJbml0aWFsaXplcjAudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9leHByZXNzaW9uUGFyc2luZy9BcnJheUluaXRpYWxpemVyMC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2Y3Yjg5NgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZXhwcmVzc2lvblBhcnNpbmcvQXJyYXlJbml0aWFsaXplcjAudHh0CkBAIC0wLDAgKzEsMzQgQEAKK1BzaUphdmFGaWxlOkFycmF5SW5pdGlhbGl6ZXIwLmphdmEKKyAgUHNpSW1wb3J0TGlzdAorICAgIDxlbXB0eSBsaXN0PgorICBQc2lDbGFzczpBCisgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpS2V5d29yZDpjbGFzcygnY2xhc3MnKQorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUlkZW50aWZpZXI6QSgnQScpCisgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAnKQorICAgIFBzaUZpZWxkOmEKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDppbnQKKyAgICAgICAgUHNpS2V5d29yZDppbnQoJ2ludCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6YSgnYScpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUphdmFUb2tlbjpFUSgnPScpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUFycmF5SW5pdGlhbGl6ZXJFeHByZXNzaW9uOnsgfQorICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgICAgUHNpSmF2YVRva2VuOlNFTUlDT0xPTignOycpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4nKQorICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9leHByZXNzaW9uUGFyc2luZy9BcnJheUluaXRpYWxpemVyMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9leHByZXNzaW9uUGFyc2luZy9BcnJheUluaXRpYWxpemVyMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRlMTdiZWFhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9leHByZXNzaW9uUGFyc2luZy9BcnJheUluaXRpYWxpemVyMS5qYXZhCkBAIC0wLDAgKzEsMyBAQAorY2xhc3MgQXsKKyAgaW50IGEgPSB7IDEgfTsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2V4cHJlc3Npb25QYXJzaW5nL0FycmF5SW5pdGlhbGl6ZXIxLnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZXhwcmVzc2lvblBhcnNpbmcvQXJyYXlJbml0aWFsaXplcjEudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM3MTY2NjcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2V4cHJlc3Npb25QYXJzaW5nL0FycmF5SW5pdGlhbGl6ZXIxLnR4dApAQCAtMCwwICsxLDM3IEBACitQc2lKYXZhRmlsZTpBcnJheUluaXRpYWxpemVyMS5qYXZhCisgIFBzaUltcG9ydExpc3QKKyAgICA8ZW1wdHkgbGlzdD4KKyAgUHNpQ2xhc3M6QQorICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUtleXdvcmQ6Y2xhc3MoJ2NsYXNzJykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lJZGVudGlmaWVyOkEoJ0EnKQorICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgJykKKyAgICBQc2lGaWVsZDphCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6aW50CisgICAgICAgIFBzaUtleXdvcmQ6aW50KCdpbnQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmEoJ2EnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lKYXZhVG9rZW46RVEoJz0nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lBcnJheUluaXRpYWxpemVyRXhwcmVzc2lvbjp7IDEgfQorICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgIFBzaUxpdGVyYWxFeHByZXNzaW9uOjEKKyAgICAgICAgICBQc2lKYXZhVG9rZW46SU5URUdFUl9MSVRFUkFMKCcxJykKKyAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgICAgUHNpSmF2YVRva2VuOlNFTUlDT0xPTignOycpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4nKQorICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9leHByZXNzaW9uUGFyc2luZy9BcnJheUluaXRpYWxpemVyMi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9leHByZXNzaW9uUGFyc2luZy9BcnJheUluaXRpYWxpemVyMi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZmMDhkYjEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2V4cHJlc3Npb25QYXJzaW5nL0FycmF5SW5pdGlhbGl6ZXIyLmphdmEKQEAgLTAsMCArMSwzIEBACitjbGFzcyBBeworICBpbnQgYSA9IHsgMSwgfTsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2V4cHJlc3Npb25QYXJzaW5nL0FycmF5SW5pdGlhbGl6ZXIyLnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZXhwcmVzc2lvblBhcnNpbmcvQXJyYXlJbml0aWFsaXplcjIudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZhNjA5MWYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2V4cHJlc3Npb25QYXJzaW5nL0FycmF5SW5pdGlhbGl6ZXIyLnR4dApAQCAtMCwwICsxLDM4IEBACitQc2lKYXZhRmlsZTpBcnJheUluaXRpYWxpemVyMi5qYXZhCisgIFBzaUltcG9ydExpc3QKKyAgICA8ZW1wdHkgbGlzdD4KKyAgUHNpQ2xhc3M6QQorICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUtleXdvcmQ6Y2xhc3MoJ2NsYXNzJykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lJZGVudGlmaWVyOkEoJ0EnKQorICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgJykKKyAgICBQc2lGaWVsZDphCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6aW50CisgICAgICAgIFBzaUtleXdvcmQ6aW50KCdpbnQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmEoJ2EnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lKYXZhVG9rZW46RVEoJz0nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lBcnJheUluaXRpYWxpemVyRXhwcmVzc2lvbjp7IDEsIH0KKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICBQc2lMaXRlcmFsRXhwcmVzc2lvbjoxCisgICAgICAgICAgUHNpSmF2YVRva2VuOklOVEVHRVJfTElURVJBTCgnMScpCisgICAgICAgIFBzaUphdmFUb2tlbjpDT01NQSgnLCcpCisgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICAgIFBzaUphdmFUb2tlbjpTRU1JQ09MT04oJzsnKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuJykKKyAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZXhwcmVzc2lvblBhcnNpbmcvQXJyYXlJbml0aWFsaXplcjMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZXhwcmVzc2lvblBhcnNpbmcvQXJyYXlJbml0aWFsaXplcjMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMDViMzg0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9leHByZXNzaW9uUGFyc2luZy9BcnJheUluaXRpYWxpemVyMy5qYXZhCkBAIC0wLDAgKzEsMyBAQAorY2xhc3MgQXsKKyAgaW50IGEgPSB7IDEsMiB9OworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZXhwcmVzc2lvblBhcnNpbmcvQXJyYXlJbml0aWFsaXplcjMudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9leHByZXNzaW9uUGFyc2luZy9BcnJheUluaXRpYWxpemVyMy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWRlYmZkYwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZXhwcmVzc2lvblBhcnNpbmcvQXJyYXlJbml0aWFsaXplcjMudHh0CkBAIC0wLDAgKzEsNDAgQEAKK1BzaUphdmFGaWxlOkFycmF5SW5pdGlhbGl6ZXIzLmphdmEKKyAgUHNpSW1wb3J0TGlzdAorICAgIDxlbXB0eSBsaXN0PgorICBQc2lDbGFzczpBCisgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpS2V5d29yZDpjbGFzcygnY2xhc3MnKQorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUlkZW50aWZpZXI6QSgnQScpCisgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAnKQorICAgIFBzaUZpZWxkOmEKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDppbnQKKyAgICAgICAgUHNpS2V5d29yZDppbnQoJ2ludCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6YSgnYScpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUphdmFUb2tlbjpFUSgnPScpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUFycmF5SW5pdGlhbGl6ZXJFeHByZXNzaW9uOnsgMSwyIH0KKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICBQc2lMaXRlcmFsRXhwcmVzc2lvbjoxCisgICAgICAgICAgUHNpSmF2YVRva2VuOklOVEVHRVJfTElURVJBTCgnMScpCisgICAgICAgIFBzaUphdmFUb2tlbjpDT01NQSgnLCcpCisgICAgICAgIFBzaUxpdGVyYWxFeHByZXNzaW9uOjIKKyAgICAgICAgICBQc2lKYXZhVG9rZW46SU5URUdFUl9MSVRFUkFMKCcyJykKKyAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgICAgUHNpSmF2YVRva2VuOlNFTUlDT0xPTignOycpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4nKQorICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9leHByZXNzaW9uUGFyc2luZy9BcnJheUluaXRpYWxpemVyNC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9leHByZXNzaW9uUGFyc2luZy9BcnJheUluaXRpYWxpemVyNC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBjNzI3ZDYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2V4cHJlc3Npb25QYXJzaW5nL0FycmF5SW5pdGlhbGl6ZXI0LmphdmEKQEAgLTAsMCArMSwzIEBACitjbGFzcyBBeworICBpbnQgYSA9IHsgMSAyIH07Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9leHByZXNzaW9uUGFyc2luZy9BcnJheUluaXRpYWxpemVyNC50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2V4cHJlc3Npb25QYXJzaW5nL0FycmF5SW5pdGlhbGl6ZXI0LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZGFkNWU4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9leHByZXNzaW9uUGFyc2luZy9BcnJheUluaXRpYWxpemVyNC50eHQKQEAgLTAsMCArMSw0MiBAQAorUHNpSmF2YUZpbGU6QXJyYXlJbml0aWFsaXplcjQuamF2YQorICBQc2lJbXBvcnRMaXN0CisgICAgPGVtcHR5IGxpc3Q+CisgIFBzaUNsYXNzOkEKKyAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lLZXl3b3JkOmNsYXNzKCdjbGFzcycpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSWRlbnRpZmllcjpBKCdBJykKKyAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4gICcpCisgICAgUHNpRmllbGQ6YQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OmludAorICAgICAgICBQc2lLZXl3b3JkOmludCgnaW50JykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjphKCdhJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSmF2YVRva2VuOkVRKCc9JykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpQXJyYXlJbml0aWFsaXplckV4cHJlc3Npb246eyAxIDIgfQorICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgIFBzaUxpdGVyYWxFeHByZXNzaW9uOjEKKyAgICAgICAgICBQc2lKYXZhVG9rZW46SU5URUdFUl9MSVRFUkFMKCcxJykKKyAgICAgICAgUHNpRXJyb3JFbGVtZW50OicsJyBleHBlY3RlZAorICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgICAgUHNpTGl0ZXJhbEV4cHJlc3Npb246MgorICAgICAgICAgIFBzaUphdmFUb2tlbjpJTlRFR0VSX0xJVEVSQUwoJzInKQorICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgICBQc2lKYXZhVG9rZW46U0VNSUNPTE9OKCc7JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcbicpCisgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2V4cHJlc3Npb25QYXJzaW5nL0FycmF5SW5pdGlhbGl6ZXI1LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2V4cHJlc3Npb25QYXJzaW5nL0FycmF5SW5pdGlhbGl6ZXI1LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGRlNzRiMgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZXhwcmVzc2lvblBhcnNpbmcvQXJyYXlJbml0aWFsaXplcjUuamF2YQpAQCAtMCwwICsxLDMgQEAKK2NsYXNzIEF7CisgIGludCBhID0geyB7IH07Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9leHByZXNzaW9uUGFyc2luZy9BcnJheUluaXRpYWxpemVyNS50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2V4cHJlc3Npb25QYXJzaW5nL0FycmF5SW5pdGlhbGl6ZXI1LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNzNmZmM3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9leHByZXNzaW9uUGFyc2luZy9BcnJheUluaXRpYWxpemVyNS50eHQKQEAgLTAsMCArMSw0MSBAQAorUHNpSmF2YUZpbGU6QXJyYXlJbml0aWFsaXplcjUuamF2YQorICBQc2lJbXBvcnRMaXN0CisgICAgPGVtcHR5IGxpc3Q+CisgIFBzaUNsYXNzOkEKKyAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lLZXl3b3JkOmNsYXNzKCdjbGFzcycpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSWRlbnRpZmllcjpBKCdBJykKKyAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4gICcpCisgICAgUHNpRmllbGQ6YQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OmludAorICAgICAgICBQc2lLZXl3b3JkOmludCgnaW50JykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjphKCdhJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSmF2YVRva2VuOkVRKCc9JykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpQXJyYXlJbml0aWFsaXplckV4cHJlc3Npb246eyB7IH0KKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICBQc2lBcnJheUluaXRpYWxpemVyRXhwcmVzc2lvbjp7IH0KKyAgICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICAgICAgUHNpRXJyb3JFbGVtZW50OicsJyBleHBlY3RlZAorICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICBQc2lFcnJvckVsZW1lbnQ6J30nIGV4cGVjdGVkCisgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lKYXZhVG9rZW46U0VNSUNPTE9OKCc7JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcbicpCisgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9leHByZXNzaW9uUGFyc2luZy9BcnJheUluaXRpYWxpemVyNi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9leHByZXNzaW9uUGFyc2luZy9BcnJheUluaXRpYWxpemVyNi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUwY2Q2NGYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2V4cHJlc3Npb25QYXJzaW5nL0FycmF5SW5pdGlhbGl6ZXI2LmphdmEKQEAgLTAsMCArMSwzIEBACitjbGFzcyBBeworICBpbnQgYSA9IHsgICwgIH07Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9leHByZXNzaW9uUGFyc2luZy9BcnJheUluaXRpYWxpemVyNi50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2V4cHJlc3Npb25QYXJzaW5nL0FycmF5SW5pdGlhbGl6ZXI2LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNTVkNzNjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9leHByZXNzaW9uUGFyc2luZy9BcnJheUluaXRpYWxpemVyNi50eHQKQEAgLTAsMCArMSwzNiBAQAorUHNpSmF2YUZpbGU6QXJyYXlJbml0aWFsaXplcjYuamF2YQorICBQc2lJbXBvcnRMaXN0CisgICAgPGVtcHR5IGxpc3Q+CisgIFBzaUNsYXNzOkEKKyAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lLZXl3b3JkOmNsYXNzKCdjbGFzcycpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSWRlbnRpZmllcjpBKCdBJykKKyAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4gICcpCisgICAgUHNpRmllbGQ6YQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OmludAorICAgICAgICBQc2lLZXl3b3JkOmludCgnaW50JykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjphKCdhJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSmF2YVRva2VuOkVRKCc9JykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpQXJyYXlJbml0aWFsaXplckV4cHJlc3Npb246eyAgLCAgfQorICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpV2hpdGVTcGFjZSgnICAnKQorICAgICAgICBQc2lKYXZhVG9rZW46Q09NTUEoJywnKQorICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgICcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgICAgUHNpSmF2YVRva2VuOlNFTUlDT0xPTignOycpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4nKQorICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZXhwcmVzc2lvblBhcnNpbmcvQXJyYXlJbml0aWFsaXplcjcuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZXhwcmVzc2lvblBhcnNpbmcvQXJyYXlJbml0aWFsaXplcjcuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMmNmZjgxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9leHByZXNzaW9uUGFyc2luZy9BcnJheUluaXRpYWxpemVyNy5qYXZhCkBAIC0wLDAgKzEsNCBAQAorY2xhc3MgQXsKKyAgaW50IGEgPSB7CisgICwgIDd9OworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZXhwcmVzc2lvblBhcnNpbmcvQXJyYXlJbml0aWFsaXplcjcudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9leHByZXNzaW9uUGFyc2luZy9BcnJheUluaXRpYWxpemVyNy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzBjMTJmYwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZXhwcmVzc2lvblBhcnNpbmcvQXJyYXlJbml0aWFsaXplcjcudHh0CkBAIC0wLDAgKzEsNDEgQEAKK1BzaUphdmFGaWxlOkFycmF5SW5pdGlhbGl6ZXI3LmphdmEKKyAgUHNpSW1wb3J0TGlzdAorICAgIDxlbXB0eSBsaXN0PgorICBQc2lDbGFzczpBCisgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpS2V5d29yZDpjbGFzcygnY2xhc3MnKQorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUlkZW50aWZpZXI6QSgnQScpCisgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAnKQorICAgIFBzaUZpZWxkOmEKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDppbnQKKyAgICAgICAgUHNpS2V5d29yZDppbnQoJ2ludCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6YSgnYScpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUphdmFUb2tlbjpFUSgnPScpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUFycmF5SW5pdGlhbGl6ZXJFeHByZXNzaW9uOnsKKyAgLCAgN30KKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUVycm9yRWxlbWVudDpFeHByZXNzaW9uIGV4cGVjdGVkCisgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAnKQorICAgICAgICBQc2lKYXZhVG9rZW46Q09NTUEoJywnKQorICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgICcpCisgICAgICAgIFBzaUxpdGVyYWxFeHByZXNzaW9uOjcKKyAgICAgICAgICBQc2lKYXZhVG9rZW46SU5URUdFUl9MSVRFUkFMKCc3JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgICBQc2lKYXZhVG9rZW46U0VNSUNPTE9OKCc7JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcbicpCisgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9leHByZXNzaW9uUGFyc2luZy9Bc3NpZ25tZW50MC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9leHByZXNzaW9uUGFyc2luZy9Bc3NpZ25tZW50MC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRiOWM2MTMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2V4cHJlc3Npb25QYXJzaW5nL0Fzc2lnbm1lbnQwLmphdmEKQEAgLTAsMCArMSw1IEBACitjbGFzcyBGb297CisgIHsKKyAgICBhID0gMDsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZXhwcmVzc2lvblBhcnNpbmcvQXNzaWdubWVudDAudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9leHByZXNzaW9uUGFyc2luZy9Bc3NpZ25tZW50MC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTI4OGVkNAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZXhwcmVzc2lvblBhcnNpbmcvQXNzaWdubWVudDAudHh0CkBAIC0wLDAgKzEsMzkgQEAKK1BzaUphdmFGaWxlOkFzc2lnbm1lbnQwLmphdmEKKyAgUHNpSW1wb3J0TGlzdAorICAgIDxlbXB0eSBsaXN0PgorICBQc2lDbGFzczpGb28KKyAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lLZXl3b3JkOmNsYXNzKCdjbGFzcycpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSWRlbnRpZmllcjpGb28oJ0ZvbycpCisgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAnKQorICAgIFBzaUNsYXNzSW5pdGlhbGl6ZXIKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAgICcpCisgICAgICAgIFBzaUV4cHJlc3Npb25TdGF0ZW1lbnQKKyAgICAgICAgICBQc2lBc3NpZ25tZW50RXhwcmVzc2lvbjphID0gMAorICAgICAgICAgICAgUHNpUmVmZXJlbmNlRXhwcmVzc2lvbjphCisgICAgICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICAgICAgUHNpSWRlbnRpZmllcjphKCdhJykKKyAgICAgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICAgICAgUHNpSmF2YVRva2VuOkVRKCc9JykKKyAgICAgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICAgICAgUHNpTGl0ZXJhbEV4cHJlc3Npb246MAorICAgICAgICAgICAgICBQc2lKYXZhVG9rZW46SU5URUdFUl9MSVRFUkFMKCcwJykKKyAgICAgICAgICBQc2lKYXZhVG9rZW46U0VNSUNPTE9OKCc7JykKKyAgICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gICcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuJykKKyAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2V4cHJlc3Npb25QYXJzaW5nL0Fzc2lnbm1lbnQxLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2V4cHJlc3Npb25QYXJzaW5nL0Fzc2lnbm1lbnQxLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjgzNTU3YgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZXhwcmVzc2lvblBhcnNpbmcvQXNzaWdubWVudDEuamF2YQpAQCAtMCwwICsxLDUgQEAKK2NsYXNzIEZvb3sKKyAgeworICAgIGEgPQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9leHByZXNzaW9uUGFyc2luZy9Bc3NpZ25tZW50MS50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2V4cHJlc3Npb25QYXJzaW5nL0Fzc2lnbm1lbnQxLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MGY4MWZhYwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZXhwcmVzc2lvblBhcnNpbmcvQXNzaWdubWVudDEudHh0CkBAIC0wLDAgKzEsMzkgQEAKK1BzaUphdmFGaWxlOkFzc2lnbm1lbnQxLmphdmEKKyAgUHNpSW1wb3J0TGlzdAorICAgIDxlbXB0eSBsaXN0PgorICBQc2lDbGFzczpGb28KKyAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lLZXl3b3JkOmNsYXNzKCdjbGFzcycpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSWRlbnRpZmllcjpGb28oJ0ZvbycpCisgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAnKQorICAgIFBzaUNsYXNzSW5pdGlhbGl6ZXIKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAgICcpCisgICAgICAgIFBzaUV4cHJlc3Npb25TdGF0ZW1lbnQKKyAgICAgICAgICBQc2lBc3NpZ25tZW50RXhwcmVzc2lvbjphID0KKyAgICAgICAgICAgIFBzaVJlZmVyZW5jZUV4cHJlc3Npb246YQorICAgICAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgICAgIFBzaUlkZW50aWZpZXI6YSgnYScpCisgICAgICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgICAgICAgIFBzaUphdmFUb2tlbjpFUSgnPScpCisgICAgICAgICAgICBQc2lFcnJvckVsZW1lbnQ6RXhwcmVzc2lvbiBleHBlY3RlZAorICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICBQc2lFcnJvckVsZW1lbnQ6JzsnIGV4cGVjdGVkCisgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gICcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuJykKKyAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2V4cHJlc3Npb25QYXJzaW5nL0Nhc3QwLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2V4cHJlc3Npb25QYXJzaW5nL0Nhc3QwLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWJkNzdiMwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZXhwcmVzc2lvblBhcnNpbmcvQ2FzdDAuamF2YQpAQCAtMCwwICsxLDUgQEAKK2NsYXNzIEZvb3sKKyAgeworICAgIHJldHVybiAoVHlwZSl2YXI7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2V4cHJlc3Npb25QYXJzaW5nL0Nhc3QwLnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZXhwcmVzc2lvblBhcnNpbmcvQ2FzdDAudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcxZjllODYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2V4cHJlc3Npb25QYXJzaW5nL0Nhc3QwLnR4dApAQCAtMCwwICsxLDQzIEBACitQc2lKYXZhRmlsZTpDYXN0MC5qYXZhCisgIFBzaUltcG9ydExpc3QKKyAgICA8ZW1wdHkgbGlzdD4KKyAgUHNpQ2xhc3M6Rm9vCisgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpS2V5d29yZDpjbGFzcygnY2xhc3MnKQorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUlkZW50aWZpZXI6Rm9vKCdGb28nKQorICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgJykKKyAgICBQc2lDbGFzc0luaXRpYWxpemVyCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgICAnKQorICAgICAgICBQc2lSZXR1cm5TdGF0ZW1lbnQKKyAgICAgICAgICBQc2lLZXl3b3JkOnJldHVybigncmV0dXJuJykKKyAgICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgICAgICBQc2lUeXBlQ2FzdEV4cHJlc3Npb246KFR5cGUpdmFyCisgICAgICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICAgICAgUHNpVHlwZUVsZW1lbnQ6VHlwZQorICAgICAgICAgICAgICBQc2lKYXZhQ29kZVJlZmVyZW5jZUVsZW1lbnQ6VHlwZQorICAgICAgICAgICAgICAgIFBzaUlkZW50aWZpZXI6VHlwZSgnVHlwZScpCisgICAgICAgICAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgICAgICAgUHNpUmVmZXJlbmNlRXhwcmVzc2lvbjp2YXIKKyAgICAgICAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgICAgICBQc2lJZGVudGlmaWVyOnZhcigndmFyJykKKyAgICAgICAgICBQc2lKYXZhVG9rZW46U0VNSUNPTE9OKCc7JykKKyAgICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gICcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuJykKKyAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2V4cHJlc3Npb25QYXJzaW5nL0NvbmQwLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2V4cHJlc3Npb25QYXJzaW5nL0NvbmQwLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTJjYzljNgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZXhwcmVzc2lvblBhcnNpbmcvQ29uZDAuamF2YQpAQCAtMCwwICsxLDUgQEAKK2NsYXNzIEZvb3sKKyAgeworICAgIHJldHVybiBjb25kID8gdHJ1ZSA6IGZhbHNlOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9leHByZXNzaW9uUGFyc2luZy9Db25kMC50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2V4cHJlc3Npb25QYXJzaW5nL0NvbmQwLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMDA4MzY1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9leHByZXNzaW9uUGFyc2luZy9Db25kMC50eHQKQEAgLTAsMCArMSw0NiBAQAorUHNpSmF2YUZpbGU6Q29uZDAuamF2YQorICBQc2lJbXBvcnRMaXN0CisgICAgPGVtcHR5IGxpc3Q+CisgIFBzaUNsYXNzOkZvbworICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUtleXdvcmQ6Y2xhc3MoJ2NsYXNzJykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lJZGVudGlmaWVyOkZvbygnRm9vJykKKyAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4gICcpCisgICAgUHNpQ2xhc3NJbml0aWFsaXplcgorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gICAgJykKKyAgICAgICAgUHNpUmV0dXJuU3RhdGVtZW50CisgICAgICAgICAgUHNpS2V5d29yZDpyZXR1cm4oJ3JldHVybicpCisgICAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgICAgUHNpQ29uZGl0aW9uYWxFeHByZXNzaW9uOmNvbmQgPyB0cnVlIDogZmFsc2UKKyAgICAgICAgICAgIFBzaVJlZmVyZW5jZUV4cHJlc3Npb246Y29uZAorICAgICAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgICAgIFBzaUlkZW50aWZpZXI6Y29uZCgnY29uZCcpCisgICAgICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgICAgICAgIFBzaUphdmFUb2tlbjpRVUVTVCgnPycpCisgICAgICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgICAgICAgIFBzaUxpdGVyYWxFeHByZXNzaW9uOnRydWUKKyAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOlRSVUVfS0VZV09SRCgndHJ1ZScpCisgICAgICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgICAgICAgIFBzaUphdmFUb2tlbjpDT0xPTignOicpCisgICAgICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgICAgICAgIFBzaUxpdGVyYWxFeHByZXNzaW9uOmZhbHNlCisgICAgICAgICAgICAgIFBzaUphdmFUb2tlbjpGQUxTRV9LRVlXT1JEKCdmYWxzZScpCisgICAgICAgICAgUHNpSmF2YVRva2VuOlNFTUlDT0xPTignOycpCisgICAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAnKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcbicpCisgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9leHByZXNzaW9uUGFyc2luZy9Db25kMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9leHByZXNzaW9uUGFyc2luZy9Db25kMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk3OTgyODkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2V4cHJlc3Npb25QYXJzaW5nL0NvbmQxLmphdmEKQEAgLTAsMCArMSw1IEBACitjbGFzcyBGb297CisgIHsKKyAgICByZXR1cm4gY29uZCA/CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2V4cHJlc3Npb25QYXJzaW5nL0NvbmQxLnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZXhwcmVzc2lvblBhcnNpbmcvQ29uZDEudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkyNDAwNTAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2V4cHJlc3Npb25QYXJzaW5nL0NvbmQxLnR4dApAQCAtMCwwICsxLDQxIEBACitQc2lKYXZhRmlsZTpDb25kMS5qYXZhCisgIFBzaUltcG9ydExpc3QKKyAgICA8ZW1wdHkgbGlzdD4KKyAgUHNpQ2xhc3M6Rm9vCisgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpS2V5d29yZDpjbGFzcygnY2xhc3MnKQorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUlkZW50aWZpZXI6Rm9vKCdGb28nKQorICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgJykKKyAgICBQc2lDbGFzc0luaXRpYWxpemVyCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgICAnKQorICAgICAgICBQc2lSZXR1cm5TdGF0ZW1lbnQKKyAgICAgICAgICBQc2lLZXl3b3JkOnJldHVybigncmV0dXJuJykKKyAgICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgICAgICBQc2lDb25kaXRpb25hbEV4cHJlc3Npb246Y29uZCA/CisgICAgICAgICAgICBQc2lSZWZlcmVuY2VFeHByZXNzaW9uOmNvbmQKKyAgICAgICAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgICAgICBQc2lJZGVudGlmaWVyOmNvbmQoJ2NvbmQnKQorICAgICAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgICAgICBQc2lKYXZhVG9rZW46UVVFU1QoJz8nKQorICAgICAgICAgICAgUHNpRXJyb3JFbGVtZW50OkV4cHJlc3Npb24gZXhwZWN0ZWQKKyAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgUHNpRXJyb3JFbGVtZW50Oic7JyBleHBlY3RlZAorICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAnKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcbicpCisgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9leHByZXNzaW9uUGFyc2luZy9Db25kMi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9leHByZXNzaW9uUGFyc2luZy9Db25kMi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJhOTdmMDgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2V4cHJlc3Npb25QYXJzaW5nL0NvbmQyLmphdmEKQEAgLTAsMCArMSw1IEBACitjbGFzcyBGb297CisgIHsKKyAgICByZXR1cm4gY29uZCA/IHRydWUKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZXhwcmVzc2lvblBhcnNpbmcvQ29uZDIudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9leHByZXNzaW9uUGFyc2luZy9Db25kMi50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2IzMjBlNwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZXhwcmVzc2lvblBhcnNpbmcvQ29uZDIudHh0CkBAIC0wLDAgKzEsNDQgQEAKK1BzaUphdmFGaWxlOkNvbmQyLmphdmEKKyAgUHNpSW1wb3J0TGlzdAorICAgIDxlbXB0eSBsaXN0PgorICBQc2lDbGFzczpGb28KKyAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lLZXl3b3JkOmNsYXNzKCdjbGFzcycpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSWRlbnRpZmllcjpGb28oJ0ZvbycpCisgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAnKQorICAgIFBzaUNsYXNzSW5pdGlhbGl6ZXIKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAgICcpCisgICAgICAgIFBzaVJldHVyblN0YXRlbWVudAorICAgICAgICAgIFBzaUtleXdvcmQ6cmV0dXJuKCdyZXR1cm4nKQorICAgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICAgIFBzaUNvbmRpdGlvbmFsRXhwcmVzc2lvbjpjb25kID8gdHJ1ZQorICAgICAgICAgICAgUHNpUmVmZXJlbmNlRXhwcmVzc2lvbjpjb25kCisgICAgICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICAgICAgUHNpSWRlbnRpZmllcjpjb25kKCdjb25kJykKKyAgICAgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICAgICAgUHNpSmF2YVRva2VuOlFVRVNUKCc/JykKKyAgICAgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICAgICAgUHNpTGl0ZXJhbEV4cHJlc3Npb246dHJ1ZQorICAgICAgICAgICAgICBQc2lKYXZhVG9rZW46VFJVRV9LRVlXT1JEKCd0cnVlJykKKyAgICAgICAgICAgIFBzaUVycm9yRWxlbWVudDonOicgZXhwZWN0ZWQKKyAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgUHNpRXJyb3JFbGVtZW50Oic7JyBleHBlY3RlZAorICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAnKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcbicpCisgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9leHByZXNzaW9uUGFyc2luZy9Db25kMy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9leHByZXNzaW9uUGFyc2luZy9Db25kMy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdhNWE0MzkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2V4cHJlc3Npb25QYXJzaW5nL0NvbmQzLmphdmEKQEAgLTAsMCArMSw1IEBACitjbGFzcyBGb297CisgIHsKKyAgICByZXR1cm4gY29uZCA/IHRydWUgOgorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9leHByZXNzaW9uUGFyc2luZy9Db25kMy50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2V4cHJlc3Npb25QYXJzaW5nL0NvbmQzLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zOGY3MmI5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9leHByZXNzaW9uUGFyc2luZy9Db25kMy50eHQKQEAgLTAsMCArMSw0NiBAQAorUHNpSmF2YUZpbGU6Q29uZDMuamF2YQorICBQc2lJbXBvcnRMaXN0CisgICAgPGVtcHR5IGxpc3Q+CisgIFBzaUNsYXNzOkZvbworICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUtleXdvcmQ6Y2xhc3MoJ2NsYXNzJykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lJZGVudGlmaWVyOkZvbygnRm9vJykKKyAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4gICcpCisgICAgUHNpQ2xhc3NJbml0aWFsaXplcgorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gICAgJykKKyAgICAgICAgUHNpUmV0dXJuU3RhdGVtZW50CisgICAgICAgICAgUHNpS2V5d29yZDpyZXR1cm4oJ3JldHVybicpCisgICAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgICAgUHNpQ29uZGl0aW9uYWxFeHByZXNzaW9uOmNvbmQgPyB0cnVlIDoKKyAgICAgICAgICAgIFBzaVJlZmVyZW5jZUV4cHJlc3Npb246Y29uZAorICAgICAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgICAgIFBzaUlkZW50aWZpZXI6Y29uZCgnY29uZCcpCisgICAgICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgICAgICAgIFBzaUphdmFUb2tlbjpRVUVTVCgnPycpCisgICAgICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgICAgICAgIFBzaUxpdGVyYWxFeHByZXNzaW9uOnRydWUKKyAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOlRSVUVfS0VZV09SRCgndHJ1ZScpCisgICAgICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgICAgICAgIFBzaUphdmFUb2tlbjpDT0xPTignOicpCisgICAgICAgICAgICBQc2lFcnJvckVsZW1lbnQ6RXhwcmVzc2lvbiBleHBlY3RlZAorICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICBQc2lFcnJvckVsZW1lbnQ6JzsnIGV4cGVjdGVkCisgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gICcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuJykKKyAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2V4cHJlc3Npb25QYXJzaW5nL0NvbmRBbmQwLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2V4cHJlc3Npb25QYXJzaW5nL0NvbmRBbmQwLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2Q2YjlkOAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZXhwcmVzc2lvblBhcnNpbmcvQ29uZEFuZDAuamF2YQpAQCAtMCwwICsxLDUgQEAKK2NsYXNzIEZvb3sKKyAgeworICAgIHJldHVybiBhICYmIGIgJiYgYzsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZXhwcmVzc2lvblBhcnNpbmcvQ29uZEFuZDAudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9leHByZXNzaW9uUGFyc2luZy9Db25kQW5kMC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzgzZTcxMAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZXhwcmVzc2lvblBhcnNpbmcvQ29uZEFuZDAudHh0CkBAIC0wLDAgKzEsNTAgQEAKK1BzaUphdmFGaWxlOkNvbmRBbmQwLmphdmEKKyAgUHNpSW1wb3J0TGlzdAorICAgIDxlbXB0eSBsaXN0PgorICBQc2lDbGFzczpGb28KKyAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lLZXl3b3JkOmNsYXNzKCdjbGFzcycpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSWRlbnRpZmllcjpGb28oJ0ZvbycpCisgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAnKQorICAgIFBzaUNsYXNzSW5pdGlhbGl6ZXIKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAgICcpCisgICAgICAgIFBzaVJldHVyblN0YXRlbWVudAorICAgICAgICAgIFBzaUtleXdvcmQ6cmV0dXJuKCdyZXR1cm4nKQorICAgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICAgIFBzaVBvbHlhZGljRXhwcmVzc2lvbjogYSAmJiBiICYmIGMKKyAgICAgICAgICAgIFBzaVJlZmVyZW5jZUV4cHJlc3Npb246YQorICAgICAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgICAgIFBzaUlkZW50aWZpZXI6YSgnYScpCisgICAgICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgICAgICAgIFBzaUphdmFUb2tlbjpBTkRBTkQoJyYmJykKKyAgICAgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICAgICAgUHNpUmVmZXJlbmNlRXhwcmVzc2lvbjpiCisgICAgICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICAgICAgUHNpSWRlbnRpZmllcjpiKCdiJykKKyAgICAgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICAgICAgUHNpSmF2YVRva2VuOkFOREFORCgnJiYnKQorICAgICAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgICAgICBQc2lSZWZlcmVuY2VFeHByZXNzaW9uOmMKKyAgICAgICAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgICAgICBQc2lJZGVudGlmaWVyOmMoJ2MnKQorICAgICAgICAgIFBzaUphdmFUb2tlbjpTRU1JQ09MT04oJzsnKQorICAgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4nKQorICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9leHByZXNzaW9uUGFyc2luZy9Db25kQW5kMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9leHByZXNzaW9uUGFyc2luZy9Db25kQW5kMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRmMDU4OTMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2V4cHJlc3Npb25QYXJzaW5nL0NvbmRBbmQxLmphdmEKQEAgLTAsMCArMSw1IEBACitjbGFzcyBGb297CisgIHsKKyAgICAgYSAmJgorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9leHByZXNzaW9uUGFyc2luZy9Db25kQW5kMS50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2V4cHJlc3Npb25QYXJzaW5nL0NvbmRBbmQxLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMTczNTVhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9leHByZXNzaW9uUGFyc2luZy9Db25kQW5kMS50eHQKQEAgLTAsMCArMSwzOSBAQAorUHNpSmF2YUZpbGU6Q29uZEFuZDEuamF2YQorICBQc2lJbXBvcnRMaXN0CisgICAgPGVtcHR5IGxpc3Q+CisgIFBzaUNsYXNzOkZvbworICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUtleXdvcmQ6Y2xhc3MoJ2NsYXNzJykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lJZGVudGlmaWVyOkZvbygnRm9vJykKKyAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4gICcpCisgICAgUHNpQ2xhc3NJbml0aWFsaXplcgorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gICAgICcpCisgICAgICAgIFBzaUV4cHJlc3Npb25TdGF0ZW1lbnQKKyAgICAgICAgICBQc2lCaW5hcnlFeHByZXNzaW9uOmEgJiYKKyAgICAgICAgICAgIFBzaVJlZmVyZW5jZUV4cHJlc3Npb246YQorICAgICAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgICAgIFBzaUlkZW50aWZpZXI6YSgnYScpCisgICAgICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgICAgICAgIFBzaUphdmFUb2tlbjpBTkRBTkQoJyYmJykKKyAgICAgICAgICAgIFBzaUVycm9yRWxlbWVudDpFeHByZXNzaW9uIGV4cGVjdGVkCisgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgIFBzaUVycm9yRWxlbWVudDonOycgZXhwZWN0ZWQKKyAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4nKQorICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZXhwcmVzc2lvblBhcnNpbmcvQ29uZE9yMC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9leHByZXNzaW9uUGFyc2luZy9Db25kT3IwLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzVhZGM2OAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZXhwcmVzc2lvblBhcnNpbmcvQ29uZE9yMC5qYXZhCkBAIC0wLDAgKzEsNSBAQAorY2xhc3MgRm9veworICB7CisgICAgcmV0dXJuIGEgfHwgYiB8fCBjOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9leHByZXNzaW9uUGFyc2luZy9Db25kT3IwLnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZXhwcmVzc2lvblBhcnNpbmcvQ29uZE9yMC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTI2YThiZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZXhwcmVzc2lvblBhcnNpbmcvQ29uZE9yMC50eHQKQEAgLTAsMCArMSw1MCBAQAorUHNpSmF2YUZpbGU6Q29uZE9yMC5qYXZhCisgIFBzaUltcG9ydExpc3QKKyAgICA8ZW1wdHkgbGlzdD4KKyAgUHNpQ2xhc3M6Rm9vCisgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpS2V5d29yZDpjbGFzcygnY2xhc3MnKQorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUlkZW50aWZpZXI6Rm9vKCdGb28nKQorICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgJykKKyAgICBQc2lDbGFzc0luaXRpYWxpemVyCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgICAnKQorICAgICAgICBQc2lSZXR1cm5TdGF0ZW1lbnQKKyAgICAgICAgICBQc2lLZXl3b3JkOnJldHVybigncmV0dXJuJykKKyAgICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgICAgICBQc2lQb2x5YWRpY0V4cHJlc3Npb246IGEgfHwgYiB8fCBjCisgICAgICAgICAgICBQc2lSZWZlcmVuY2VFeHByZXNzaW9uOmEKKyAgICAgICAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgICAgICBQc2lJZGVudGlmaWVyOmEoJ2EnKQorICAgICAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgICAgICBQc2lKYXZhVG9rZW46T1JPUignfHwnKQorICAgICAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgICAgICBQc2lSZWZlcmVuY2VFeHByZXNzaW9uOmIKKyAgICAgICAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgICAgICBQc2lJZGVudGlmaWVyOmIoJ2InKQorICAgICAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgICAgICBQc2lKYXZhVG9rZW46T1JPUignfHwnKQorICAgICAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgICAgICBQc2lSZWZlcmVuY2VFeHByZXNzaW9uOmMKKyAgICAgICAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgICAgICBQc2lJZGVudGlmaWVyOmMoJ2MnKQorICAgICAgICAgIFBzaUphdmFUb2tlbjpTRU1JQ09MT04oJzsnKQorICAgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4nKQorICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9leHByZXNzaW9uUGFyc2luZy9Db25kT3IxLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2V4cHJlc3Npb25QYXJzaW5nL0NvbmRPcjEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZWM3MmNlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9leHByZXNzaW9uUGFyc2luZy9Db25kT3IxLmphdmEKQEAgLTAsMCArMSw1IEBACitjbGFzcyBGb297CisgIHsKKyAgICAgYSB8fAorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9leHByZXNzaW9uUGFyc2luZy9Db25kT3IxLnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZXhwcmVzc2lvblBhcnNpbmcvQ29uZE9yMS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjg2ZTRjZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZXhwcmVzc2lvblBhcnNpbmcvQ29uZE9yMS50eHQKQEAgLTAsMCArMSwzOSBAQAorUHNpSmF2YUZpbGU6Q29uZE9yMS5qYXZhCisgIFBzaUltcG9ydExpc3QKKyAgICA8ZW1wdHkgbGlzdD4KKyAgUHNpQ2xhc3M6Rm9vCisgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpS2V5d29yZDpjbGFzcygnY2xhc3MnKQorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUlkZW50aWZpZXI6Rm9vKCdGb28nKQorICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgJykKKyAgICBQc2lDbGFzc0luaXRpYWxpemVyCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgICAgJykKKyAgICAgICAgUHNpRXhwcmVzc2lvblN0YXRlbWVudAorICAgICAgICAgIFBzaUJpbmFyeUV4cHJlc3Npb246YSB8fAorICAgICAgICAgICAgUHNpUmVmZXJlbmNlRXhwcmVzc2lvbjphCisgICAgICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICAgICAgUHNpSWRlbnRpZmllcjphKCdhJykKKyAgICAgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICAgICAgUHNpSmF2YVRva2VuOk9ST1IoJ3x8JykKKyAgICAgICAgICAgIFBzaUVycm9yRWxlbWVudDpFeHByZXNzaW9uIGV4cGVjdGVkCisgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgIFBzaUVycm9yRWxlbWVudDonOycgZXhwZWN0ZWQKKyAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4nKQorICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZXhwcmVzc2lvblBhcnNpbmcvRXhwckxpc3QwLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2V4cHJlc3Npb25QYXJzaW5nL0V4cHJMaXN0MC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIzODY5YjQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2V4cHJlc3Npb25QYXJzaW5nL0V4cHJMaXN0MC5qYXZhCkBAIC0wLDAgKzEsNSBAQAorY2xhc3MgRm9veworICB7CisgICAgZigxLDIpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9leHByZXNzaW9uUGFyc2luZy9FeHByTGlzdDAudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9leHByZXNzaW9uUGFyc2luZy9FeHByTGlzdDAudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg2MTgyMWYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2V4cHJlc3Npb25QYXJzaW5nL0V4cHJMaXN0MC50eHQKQEAgLTAsMCArMSw0MiBAQAorUHNpSmF2YUZpbGU6RXhwckxpc3QwLmphdmEKKyAgUHNpSW1wb3J0TGlzdAorICAgIDxlbXB0eSBsaXN0PgorICBQc2lDbGFzczpGb28KKyAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lLZXl3b3JkOmNsYXNzKCdjbGFzcycpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSWRlbnRpZmllcjpGb28oJ0ZvbycpCisgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAnKQorICAgIFBzaUNsYXNzSW5pdGlhbGl6ZXIKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAgICcpCisgICAgICAgIFBzaUV4cHJlc3Npb25TdGF0ZW1lbnQKKyAgICAgICAgICBQc2lNZXRob2RDYWxsRXhwcmVzc2lvbjpmKDEsMikKKyAgICAgICAgICAgIFBzaVJlZmVyZW5jZUV4cHJlc3Npb246ZgorICAgICAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgICAgIFBzaUlkZW50aWZpZXI6ZignZicpCisgICAgICAgICAgICBQc2lFeHByZXNzaW9uTGlzdAorICAgICAgICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICAgICAgICBQc2lMaXRlcmFsRXhwcmVzc2lvbjoxCisgICAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOklOVEVHRVJfTElURVJBTCgnMScpCisgICAgICAgICAgICAgIFBzaUphdmFUb2tlbjpDT01NQSgnLCcpCisgICAgICAgICAgICAgIFBzaUxpdGVyYWxFeHByZXNzaW9uOjIKKyAgICAgICAgICAgICAgICBQc2lKYXZhVG9rZW46SU5URUdFUl9MSVRFUkFMKCcyJykKKyAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgICAgICBQc2lKYXZhVG9rZW46U0VNSUNPTE9OKCc7JykKKyAgICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gICcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuJykKKyAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2V4cHJlc3Npb25QYXJzaW5nL0V4cHJMaXN0MS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9leHByZXNzaW9uUGFyc2luZy9FeHByTGlzdDEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44OGYwYjJlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9leHByZXNzaW9uUGFyc2luZy9FeHByTGlzdDEuamF2YQpAQCAtMCwwICsxLDUgQEAKK2NsYXNzIEZvb3sKKyAgeworICAgIGYoCisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2V4cHJlc3Npb25QYXJzaW5nL0V4cHJMaXN0MS50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2V4cHJlc3Npb25QYXJzaW5nL0V4cHJMaXN0MS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjE5YzlmNgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZXhwcmVzc2lvblBhcnNpbmcvRXhwckxpc3QxLnR4dApAQCAtMCwwICsxLDQwIEBACitQc2lKYXZhRmlsZTpFeHByTGlzdDEuamF2YQorICBQc2lJbXBvcnRMaXN0CisgICAgPGVtcHR5IGxpc3Q+CisgIFBzaUNsYXNzOkZvbworICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUtleXdvcmQ6Y2xhc3MoJ2NsYXNzJykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lJZGVudGlmaWVyOkZvbygnRm9vJykKKyAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4gICcpCisgICAgUHNpQ2xhc3NJbml0aWFsaXplcgorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gICAgJykKKyAgICAgICAgUHNpRXhwcmVzc2lvblN0YXRlbWVudAorICAgICAgICAgIFBzaU1ldGhvZENhbGxFeHByZXNzaW9uOmYoCisgIAorICAgICAgICAgICAgUHNpUmVmZXJlbmNlRXhwcmVzc2lvbjpmCisgICAgICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICAgICAgUHNpSWRlbnRpZmllcjpmKCdmJykKKyAgICAgICAgICAgIFBzaUV4cHJlc3Npb25MaXN0CisgICAgICAgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgICAgICAgIFBzaUVycm9yRWxlbWVudDonKScgZXhwZWN0ZWQKKyAgICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gICcpCisgICAgICAgICAgUHNpRXJyb3JFbGVtZW50Oic7JyBleHBlY3RlZAorICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuJykKKyAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2V4cHJlc3Npb25QYXJzaW5nL0V4cHJMaXN0Mi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9leHByZXNzaW9uUGFyc2luZy9FeHByTGlzdDIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYWU3YWJiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9leHByZXNzaW9uUGFyc2luZy9FeHByTGlzdDIuamF2YQpAQCAtMCwwICsxLDUgQEAKK2NsYXNzIEZvb3sKKyAgeworICAgIGYoMQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9leHByZXNzaW9uUGFyc2luZy9FeHByTGlzdDIudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9leHByZXNzaW9uUGFyc2luZy9FeHByTGlzdDIudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVmNDE4YWEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2V4cHJlc3Npb25QYXJzaW5nL0V4cHJMaXN0Mi50eHQKQEAgLTAsMCArMSw0MiBAQAorUHNpSmF2YUZpbGU6RXhwckxpc3QyLmphdmEKKyAgUHNpSW1wb3J0TGlzdAorICAgIDxlbXB0eSBsaXN0PgorICBQc2lDbGFzczpGb28KKyAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lLZXl3b3JkOmNsYXNzKCdjbGFzcycpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSWRlbnRpZmllcjpGb28oJ0ZvbycpCisgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAnKQorICAgIFBzaUNsYXNzSW5pdGlhbGl6ZXIKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAgICcpCisgICAgICAgIFBzaUV4cHJlc3Npb25TdGF0ZW1lbnQKKyAgICAgICAgICBQc2lNZXRob2RDYWxsRXhwcmVzc2lvbjpmKDEKKyAgCisgICAgICAgICAgICBQc2lSZWZlcmVuY2VFeHByZXNzaW9uOmYKKyAgICAgICAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgICAgICBQc2lJZGVudGlmaWVyOmYoJ2YnKQorICAgICAgICAgICAgUHNpRXhwcmVzc2lvbkxpc3QKKyAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgICAgICAgUHNpTGl0ZXJhbEV4cHJlc3Npb246MQorICAgICAgICAgICAgICAgIFBzaUphdmFUb2tlbjpJTlRFR0VSX0xJVEVSQUwoJzEnKQorICAgICAgICAgICAgICBQc2lFcnJvckVsZW1lbnQ6JyknIGV4cGVjdGVkCisgICAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAnKQorICAgICAgICAgIFBzaUVycm9yRWxlbWVudDonOycgZXhwZWN0ZWQKKyAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcbicpCisgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9leHByZXNzaW9uUGFyc2luZy9FeHByTGlzdDMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZXhwcmVzc2lvblBhcnNpbmcvRXhwckxpc3QzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmMyZjk2OQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZXhwcmVzc2lvblBhcnNpbmcvRXhwckxpc3QzLmphdmEKQEAgLTAsMCArMSw1IEBACitjbGFzcyBGb297CisgIHsKKyAgICBmKDEsCisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2V4cHJlc3Npb25QYXJzaW5nL0V4cHJMaXN0My50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2V4cHJlc3Npb25QYXJzaW5nL0V4cHJMaXN0My50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDNhYWY3OAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZXhwcmVzc2lvblBhcnNpbmcvRXhwckxpc3QzLnR4dApAQCAtMCwwICsxLDQ3IEBACitQc2lKYXZhRmlsZTpFeHByTGlzdDMuamF2YQorICBQc2lJbXBvcnRMaXN0CisgICAgPGVtcHR5IGxpc3Q+CisgIFBzaUNsYXNzOkZvbworICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUtleXdvcmQ6Y2xhc3MoJ2NsYXNzJykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lJZGVudGlmaWVyOkZvbygnRm9vJykKKyAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4gICcpCisgICAgUHNpQ2xhc3NJbml0aWFsaXplcgorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gICAgJykKKyAgICAgICAgUHNpRXhwcmVzc2lvblN0YXRlbWVudAorICAgICAgICAgIFBzaU1ldGhvZENhbGxFeHByZXNzaW9uOmYoMSwKKyAgCisgICAgICAgICAgICBQc2lSZWZlcmVuY2VFeHByZXNzaW9uOmYKKyAgICAgICAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgICAgICBQc2lJZGVudGlmaWVyOmYoJ2YnKQorICAgICAgICAgICAgUHNpRXhwcmVzc2lvbkxpc3QKKyAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgICAgICAgUHNpTGl0ZXJhbEV4cHJlc3Npb246MQorICAgICAgICAgICAgICAgIFBzaUphdmFUb2tlbjpJTlRFR0VSX0xJVEVSQUwoJzEnKQorICAgICAgICAgICAgICBQc2lKYXZhVG9rZW46Q09NTUEoJywnKQorICAgICAgICAgICAgICBQc2lFcnJvckVsZW1lbnQ6RXhwcmVzc2lvbiBleHBlY3RlZAorICAgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgICAgICBQc2lFeHByZXNzaW9uKGVtcHR5KQorICAgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgICAgICBQc2lFcnJvckVsZW1lbnQ6JyknIGV4cGVjdGVkCisgICAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAnKQorICAgICAgICAgIFBzaUVycm9yRWxlbWVudDonOycgZXhwZWN0ZWQKKyAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcbicpCisgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9leHByZXNzaW9uUGFyc2luZy9FeHByTGlzdDQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZXhwcmVzc2lvblBhcnNpbmcvRXhwckxpc3Q0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzE0ZTZiZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZXhwcmVzc2lvblBhcnNpbmcvRXhwckxpc3Q0LmphdmEKQEAgLTAsMCArMSw1IEBACitjbGFzcyBGb297CisgIHsKKyAgICBmKDEsKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZXhwcmVzc2lvblBhcnNpbmcvRXhwckxpc3Q0LnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZXhwcmVzc2lvblBhcnNpbmcvRXhwckxpc3Q0LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNzA1YTgyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9leHByZXNzaW9uUGFyc2luZy9FeHByTGlzdDQudHh0CkBAIC0wLDAgKzEsNDQgQEAKK1BzaUphdmFGaWxlOkV4cHJMaXN0NC5qYXZhCisgIFBzaUltcG9ydExpc3QKKyAgICA8ZW1wdHkgbGlzdD4KKyAgUHNpQ2xhc3M6Rm9vCisgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpS2V5d29yZDpjbGFzcygnY2xhc3MnKQorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUlkZW50aWZpZXI6Rm9vKCdGb28nKQorICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgJykKKyAgICBQc2lDbGFzc0luaXRpYWxpemVyCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgICAnKQorICAgICAgICBQc2lFeHByZXNzaW9uU3RhdGVtZW50CisgICAgICAgICAgUHNpTWV0aG9kQ2FsbEV4cHJlc3Npb246ZigxLCkKKyAgICAgICAgICAgIFBzaVJlZmVyZW5jZUV4cHJlc3Npb246ZgorICAgICAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgICAgIFBzaUlkZW50aWZpZXI6ZignZicpCisgICAgICAgICAgICBQc2lFeHByZXNzaW9uTGlzdAorICAgICAgICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICAgICAgICBQc2lMaXRlcmFsRXhwcmVzc2lvbjoxCisgICAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOklOVEVHRVJfTElURVJBTCgnMScpCisgICAgICAgICAgICAgIFBzaUphdmFUb2tlbjpDT01NQSgnLCcpCisgICAgICAgICAgICAgIFBzaUVycm9yRWxlbWVudDpFeHByZXNzaW9uIGV4cGVjdGVkCisgICAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgICAgIFBzaUV4cHJlc3Npb24oZW1wdHkpCisgICAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICAgICAgUHNpSmF2YVRva2VuOlNFTUlDT0xPTignOycpCisgICAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAnKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcbicpCisgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9leHByZXNzaW9uUGFyc2luZy9FeHByTGlzdDUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZXhwcmVzc2lvblBhcnNpbmcvRXhwckxpc3Q1LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjJhMDMyYQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZXhwcmVzc2lvblBhcnNpbmcvRXhwckxpc3Q1LmphdmEKQEAgLTAsMCArMSw1IEBACitjbGFzcyBGb297CisgIHsKKyAgICBmKDEsLDIpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9leHByZXNzaW9uUGFyc2luZy9FeHByTGlzdDUudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9leHByZXNzaW9uUGFyc2luZy9FeHByTGlzdDUudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZlY2IwMTUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2V4cHJlc3Npb25QYXJzaW5nL0V4cHJMaXN0NS50eHQKQEAgLTAsMCArMSw0NyBAQAorUHNpSmF2YUZpbGU6RXhwckxpc3Q1LmphdmEKKyAgUHNpSW1wb3J0TGlzdAorICAgIDxlbXB0eSBsaXN0PgorICBQc2lDbGFzczpGb28KKyAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lLZXl3b3JkOmNsYXNzKCdjbGFzcycpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSWRlbnRpZmllcjpGb28oJ0ZvbycpCisgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAnKQorICAgIFBzaUNsYXNzSW5pdGlhbGl6ZXIKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAgICcpCisgICAgICAgIFBzaUV4cHJlc3Npb25TdGF0ZW1lbnQKKyAgICAgICAgICBQc2lNZXRob2RDYWxsRXhwcmVzc2lvbjpmKDEsLDIpCisgICAgICAgICAgICBQc2lSZWZlcmVuY2VFeHByZXNzaW9uOmYKKyAgICAgICAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgICAgICBQc2lJZGVudGlmaWVyOmYoJ2YnKQorICAgICAgICAgICAgUHNpRXhwcmVzc2lvbkxpc3QKKyAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgICAgICAgUHNpTGl0ZXJhbEV4cHJlc3Npb246MQorICAgICAgICAgICAgICAgIFBzaUphdmFUb2tlbjpJTlRFR0VSX0xJVEVSQUwoJzEnKQorICAgICAgICAgICAgICBQc2lKYXZhVG9rZW46Q09NTUEoJywnKQorICAgICAgICAgICAgICBQc2lFcnJvckVsZW1lbnQ6RXhwcmVzc2lvbiBleHBlY3RlZAorICAgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgICAgICBQc2lFeHByZXNzaW9uKGVtcHR5KQorICAgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgICAgICBQc2lKYXZhVG9rZW46Q09NTUEoJywnKQorICAgICAgICAgICAgICBQc2lMaXRlcmFsRXhwcmVzc2lvbjoyCisgICAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOklOVEVHRVJfTElURVJBTCgnMicpCisgICAgICAgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICAgICAgUHNpSmF2YVRva2VuOlNFTUlDT0xPTignOycpCisgICAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAnKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcbicpCisgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9leHByZXNzaW9uUGFyc2luZy9FeHByTGlzdDYuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZXhwcmVzc2lvblBhcnNpbmcvRXhwckxpc3Q2LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGI2YmE0MAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZXhwcmVzc2lvblBhcnNpbmcvRXhwckxpc3Q2LmphdmEKQEAgLTAsMCArMSw1IEBACitjbGFzcyBGb297CisgIHsKKyAgICBmKCwyKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZXhwcmVzc2lvblBhcnNpbmcvRXhwckxpc3Q2LnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZXhwcmVzc2lvblBhcnNpbmcvRXhwckxpc3Q2LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NzdmZGIxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9leHByZXNzaW9uUGFyc2luZy9FeHByTGlzdDYudHh0CkBAIC0wLDAgKzEsNDQgQEAKK1BzaUphdmFGaWxlOkV4cHJMaXN0Ni5qYXZhCisgIFBzaUltcG9ydExpc3QKKyAgICA8ZW1wdHkgbGlzdD4KKyAgUHNpQ2xhc3M6Rm9vCisgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpS2V5d29yZDpjbGFzcygnY2xhc3MnKQorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUlkZW50aWZpZXI6Rm9vKCdGb28nKQorICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgJykKKyAgICBQc2lDbGFzc0luaXRpYWxpemVyCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgICAnKQorICAgICAgICBQc2lFeHByZXNzaW9uU3RhdGVtZW50CisgICAgICAgICAgUHNpTWV0aG9kQ2FsbEV4cHJlc3Npb246ZigsMikKKyAgICAgICAgICAgIFBzaVJlZmVyZW5jZUV4cHJlc3Npb246ZgorICAgICAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgICAgIFBzaUlkZW50aWZpZXI6ZignZicpCisgICAgICAgICAgICBQc2lFeHByZXNzaW9uTGlzdAorICAgICAgICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICAgICAgICBQc2lFcnJvckVsZW1lbnQ6RXhwcmVzc2lvbiBleHBlY3RlZAorICAgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgICAgICBQc2lFeHByZXNzaW9uKGVtcHR5KQorICAgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgICAgICBQc2lKYXZhVG9rZW46Q09NTUEoJywnKQorICAgICAgICAgICAgICBQc2lMaXRlcmFsRXhwcmVzc2lvbjoyCisgICAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOklOVEVHRVJfTElURVJBTCgnMicpCisgICAgICAgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICAgICAgUHNpSmF2YVRva2VuOlNFTUlDT0xPTignOycpCisgICAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAnKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcbicpCisgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9leHByZXNzaW9uUGFyc2luZy9HRS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9leHByZXNzaW9uUGFyc2luZy9HRS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgzZTI2ZjgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2V4cHJlc3Npb25QYXJzaW5nL0dFLmphdmEKQEAgLTAsMCArMSw3IEBACitjbGFzcyBUZXN0IHsKKyAgICBib29sZWFuIG1ldGhvZCgpIHsKKyAgICAgICAgaW50IHggPSA4OworICAgICAgICB4ID4+PSAyOworICAgICAgICByZXR1cm4gMSA+PSAyOworICAgIH0KK30gClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9leHByZXNzaW9uUGFyc2luZy9HRS50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2V4cHJlc3Npb25QYXJzaW5nL0dFLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MzdiZGMxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9leHByZXNzaW9uUGFyc2luZy9HRS50eHQKQEAgLTAsMCArMSw4MCBAQAorUHNpSmF2YUZpbGU6R0UuamF2YQorICBQc2lJbXBvcnRMaXN0CisgICAgPGVtcHR5IGxpc3Q+CisgIFBzaUNsYXNzOlRlc3QKKyAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lLZXl3b3JkOmNsYXNzKCdjbGFzcycpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSWRlbnRpZmllcjpUZXN0KCdUZXN0JykKKyAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4gICAgJykKKyAgICBQc2lNZXRob2Q6bWV0aG9kCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDpib29sZWFuCisgICAgICAgIFBzaUtleXdvcmQ6Ym9vbGVhbignYm9vbGVhbicpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6bWV0aG9kKCdtZXRob2QnKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgICAgICAgJykKKyAgICAgICAgUHNpRGVjbGFyYXRpb25TdGF0ZW1lbnQKKyAgICAgICAgICBQc2lMb2NhbFZhcmlhYmxlOngKKyAgICAgICAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgICBQc2lUeXBlRWxlbWVudDppbnQKKyAgICAgICAgICAgICAgUHNpS2V5d29yZDppbnQoJ2ludCcpCisgICAgICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgICAgICAgIFBzaUlkZW50aWZpZXI6eCgneCcpCisgICAgICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgICAgICAgIFBzaUphdmFUb2tlbjpFUSgnPScpCisgICAgICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgICAgICAgIFBzaUxpdGVyYWxFeHByZXNzaW9uOjgKKyAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOklOVEVHRVJfTElURVJBTCgnOCcpCisgICAgICAgICAgICBQc2lKYXZhVG9rZW46U0VNSUNPTE9OKCc7JykKKyAgICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gICAgICAgICcpCisgICAgICAgIFBzaUV4cHJlc3Npb25TdGF0ZW1lbnQKKyAgICAgICAgICBQc2lBc3NpZ25tZW50RXhwcmVzc2lvbjp4ID4+PSAyCisgICAgICAgICAgICBQc2lSZWZlcmVuY2VFeHByZXNzaW9uOngKKyAgICAgICAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgICAgICBQc2lJZGVudGlmaWVyOngoJ3gnKQorICAgICAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgICAgICBQc2lKYXZhVG9rZW46R1RHVEVRKCc+Pj0nKQorICAgICAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgICAgICBQc2lMaXRlcmFsRXhwcmVzc2lvbjoyCisgICAgICAgICAgICAgIFBzaUphdmFUb2tlbjpJTlRFR0VSX0xJVEVSQUwoJzInKQorICAgICAgICAgIFBzaUphdmFUb2tlbjpTRU1JQ09MT04oJzsnKQorICAgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgICAgICAgJykKKyAgICAgICAgUHNpUmV0dXJuU3RhdGVtZW50CisgICAgICAgICAgUHNpS2V5d29yZDpyZXR1cm4oJ3JldHVybicpCisgICAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgICAgUHNpQmluYXJ5RXhwcmVzc2lvbjoxID49IDIKKyAgICAgICAgICAgIFBzaUxpdGVyYWxFeHByZXNzaW9uOjEKKyAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOklOVEVHRVJfTElURVJBTCgnMScpCisgICAgICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgICAgICAgIFBzaUphdmFUb2tlbjpHRSgnPj0nKQorICAgICAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgICAgICBQc2lMaXRlcmFsRXhwcmVzc2lvbjoyCisgICAgICAgICAgICAgIFBzaUphdmFUb2tlbjpJTlRFR0VSX0xJVEVSQUwoJzInKQorICAgICAgICAgIFBzaUphdmFUb2tlbjpTRU1JQ09MT04oJzsnKQorICAgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgICAnKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcbicpCisgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9leHByZXNzaW9uUGFyc2luZy9JbGxlZ2FsV2lsZGNhcmQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZXhwcmVzc2lvblBhcnNpbmcvSWxsZWdhbFdpbGRjYXJkLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2Y0ZTBmNgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZXhwcmVzc2lvblBhcnNpbmcvSWxsZWdhbFdpbGRjYXJkLmphdmEKQEAgLTAsMCArMSw1IEBACitjbGFzcyBGb28geworICB7CisgICAgdGhpcy48Pz5mb28oKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZXhwcmVzc2lvblBhcnNpbmcvSWxsZWdhbFdpbGRjYXJkLnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZXhwcmVzc2lvblBhcnNpbmcvSWxsZWdhbFdpbGRjYXJkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNGU2ZDFlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9leHByZXNzaW9uUGFyc2luZy9JbGxlZ2FsV2lsZGNhcmQudHh0CkBAIC0wLDAgKzEsNDYgQEAKK1BzaUphdmFGaWxlOklsbGVnYWxXaWxkY2FyZC5qYXZhCisgIFBzaUltcG9ydExpc3QKKyAgICA8ZW1wdHkgbGlzdD4KKyAgUHNpQ2xhc3M6Rm9vCisgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpS2V5d29yZDpjbGFzcygnY2xhc3MnKQorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUlkZW50aWZpZXI6Rm9vKCdGb28nKQorICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgJykKKyAgICBQc2lDbGFzc0luaXRpYWxpemVyCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgICAnKQorICAgICAgICBQc2lFeHByZXNzaW9uU3RhdGVtZW50CisgICAgICAgICAgUHNpTWV0aG9kQ2FsbEV4cHJlc3Npb246dGhpcy48Pz5mb28oKQorICAgICAgICAgICAgUHNpUmVmZXJlbmNlRXhwcmVzc2lvbjp0aGlzLjw/PmZvbworICAgICAgICAgICAgICBQc2lUaGlzRXhwcmVzc2lvbjp0aGlzCisgICAgICAgICAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgICAgICAgUHNpS2V5d29yZDp0aGlzKCd0aGlzJykKKyAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOkRPVCgnLicpCisgICAgICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgICAgICBQc2lKYXZhVG9rZW46TFQoJzwnKQorICAgICAgICAgICAgICAgIFBzaUVycm9yRWxlbWVudDpVbmV4cGVjdGVkIHdpbGRjYXJkCisgICAgICAgICAgICAgICAgICBQc2lKYXZhVG9rZW46UVVFU1QoJz8nKQorICAgICAgICAgICAgICAgIFBzaUphdmFUb2tlbjpHVCgnPicpCisgICAgICAgICAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgICAgICAgUHNpRXhwcmVzc2lvbkxpc3QKKyAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgICAgICBQc2lKYXZhVG9rZW46U0VNSUNPTE9OKCc7JykKKyAgICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gICcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuJykKKyAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2V4cHJlc3Npb25QYXJzaW5nL0luY29tcGxldGVDYXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2V4cHJlc3Npb25QYXJzaW5nL0luY29tcGxldGVDYXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWJhNzk4MQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZXhwcmVzc2lvblBhcnNpbmcvSW5jb21wbGV0ZUNhc3QuamF2YQpAQCAtMCwwICsxLDUgQEAKK2NsYXNzIFRlc3QgeworICAgIGJvb2xlYW4gbWV0aG9kKCkgeworICAgICAgICBmKChBcnJheUxpc3Q8U3RyaW5nPikgKTsKKyAgICB9Cit9IApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZXhwcmVzc2lvblBhcnNpbmcvSW5jb21wbGV0ZUNhc3QudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9leHByZXNzaW9uUGFyc2luZy9JbmNvbXBsZXRlQ2FzdC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGVmNWI0YQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZXhwcmVzc2lvblBhcnNpbmcvSW5jb21wbGV0ZUNhc3QudHh0CkBAIC0wLDAgKzEsNjcgQEAKK1BzaUphdmFGaWxlOkluY29tcGxldGVDYXN0LmphdmEKKyAgUHNpSW1wb3J0TGlzdAorICAgIDxlbXB0eSBsaXN0PgorICBQc2lDbGFzczpUZXN0CisgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpS2V5d29yZDpjbGFzcygnY2xhc3MnKQorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUlkZW50aWZpZXI6VGVzdCgnVGVzdCcpCisgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAgICcpCisgICAgUHNpTWV0aG9kOm1ldGhvZAorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6Ym9vbGVhbgorICAgICAgICBQc2lLZXl3b3JkOmJvb2xlYW4oJ2Jvb2xlYW4nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOm1ldGhvZCgnbWV0aG9kJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gICAgICAgICcpCisgICAgICAgIFBzaUV4cHJlc3Npb25TdGF0ZW1lbnQKKyAgICAgICAgICBQc2lNZXRob2RDYWxsRXhwcmVzc2lvbjpmKChBcnJheUxpc3Q8U3RyaW5nPikgKQorICAgICAgICAgICAgUHNpUmVmZXJlbmNlRXhwcmVzc2lvbjpmCisgICAgICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICAgICAgUHNpSWRlbnRpZmllcjpmKCdmJykKKyAgICAgICAgICAgIFBzaUV4cHJlc3Npb25MaXN0CisgICAgICAgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgICAgICAgIFBzaVR5cGVDYXN0RXhwcmVzc2lvbjooQXJyYXlMaXN0PFN0cmluZz4pCisgICAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgICAgICAgICBQc2lUeXBlRWxlbWVudDpBcnJheUxpc3Q8U3RyaW5nPgorICAgICAgICAgICAgICAgICAgUHNpSmF2YUNvZGVSZWZlcmVuY2VFbGVtZW50OkFycmF5TGlzdDxTdHJpbmc+CisgICAgICAgICAgICAgICAgICAgIFBzaUlkZW50aWZpZXI6QXJyYXlMaXN0KCdBcnJheUxpc3QnKQorICAgICAgICAgICAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOkxUKCc8JykKKyAgICAgICAgICAgICAgICAgICAgICBQc2lUeXBlRWxlbWVudDpTdHJpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgIFBzaUphdmFDb2RlUmVmZXJlbmNlRWxlbWVudDpTdHJpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgUHNpSWRlbnRpZmllcjpTdHJpbmcoJ1N0cmluZycpCisgICAgICAgICAgICAgICAgICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgICBQc2lKYXZhVG9rZW46R1QoJz4nKQorICAgICAgICAgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICAgICAgICAgICAgUHNpRXJyb3JFbGVtZW50OkV4cHJlc3Npb24gZXhwZWN0ZWQKKyAgICAgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgICAgICBQc2lKYXZhVG9rZW46U0VNSUNPTE9OKCc7JykKKyAgICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gICAgJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4nKQorICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZXhwcmVzc2lvblBhcnNpbmcvSW5jb21wbGV0ZURlY2wuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZXhwcmVzc2lvblBhcnNpbmcvSW5jb21wbGV0ZURlY2wuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNmI3MGEzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9leHByZXNzaW9uUGFyc2luZy9JbmNvbXBsZXRlRGVjbC5qYXZhCkBAIC0wLDAgKzEsNSBAQAorY2xhc3MgWCB7CisgICAgdm9pZCBtZXRob2QoKSB7CisgICAgICAgIExpc3Q8SW50ZWdlcj4KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9leHByZXNzaW9uUGFyc2luZy9JbmNvbXBsZXRlRGVjbC50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2V4cHJlc3Npb25QYXJzaW5nL0luY29tcGxldGVEZWNsLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NmM5MDMxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9leHByZXNzaW9uUGFyc2luZy9JbmNvbXBsZXRlRGVjbC50eHQKQEAgLTAsMCArMSw1NCBAQAorUHNpSmF2YUZpbGU6SW5jb21wbGV0ZURlY2wuamF2YQorICBQc2lJbXBvcnRMaXN0CisgICAgPGVtcHR5IGxpc3Q+CisgIFBzaUNsYXNzOlgKKyAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lLZXl3b3JkOmNsYXNzKCdjbGFzcycpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSWRlbnRpZmllcjpYKCdYJykKKyAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4gICAgJykKKyAgICBQc2lNZXRob2Q6bWV0aG9kCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6bWV0aG9kKCdtZXRob2QnKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgICAgICAgJykKKyAgICAgICAgUHNpRGVjbGFyYXRpb25TdGF0ZW1lbnQKKyAgICAgICAgICBQc2lUeXBlRWxlbWVudDpMaXN0PEludGVnZXI+CisgICAgICAgICAgICBQc2lKYXZhQ29kZVJlZmVyZW5jZUVsZW1lbnQ6TGlzdDxJbnRlZ2VyPgorICAgICAgICAgICAgICBQc2lJZGVudGlmaWVyOkxpc3QoJ0xpc3QnKQorICAgICAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOkxUKCc8JykKKyAgICAgICAgICAgICAgICBQc2lUeXBlRWxlbWVudDpJbnRlZ2VyCisgICAgICAgICAgICAgICAgICBQc2lKYXZhQ29kZVJlZmVyZW5jZUVsZW1lbnQ6SW50ZWdlcgorICAgICAgICAgICAgICAgICAgICBQc2lJZGVudGlmaWVyOkludGVnZXIoJ0ludGVnZXInKQorICAgICAgICAgICAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOkdUKCc+JykKKyAgICAgICAgICBQc2lFcnJvckVsZW1lbnQ6SWRlbnRpZmllciBleHBlY3RlZAorICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAgICcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuJykKKyAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZXhwcmVzc2lvblBhcnNpbmcvSW5zdGFuY2VPZjAuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZXhwcmVzc2lvblBhcnNpbmcvSW5zdGFuY2VPZjAuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMjZjMWU2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9leHByZXNzaW9uUGFyc2luZy9JbnN0YW5jZU9mMC5qYXZhCkBAIC0wLDAgKzEsNSBAQAorY2xhc3MgRm9veworICB7CisgICAgcmV0dXJuIGEgaW5zdGFuY2VvZiBTdHJpbmc7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2V4cHJlc3Npb25QYXJzaW5nL0luc3RhbmNlT2YwLnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZXhwcmVzc2lvblBhcnNpbmcvSW5zdGFuY2VPZjAudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ1MzIzM2QKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2V4cHJlc3Npb25QYXJzaW5nL0luc3RhbmNlT2YwLnR4dApAQCAtMCwwICsxLDQ0IEBACitQc2lKYXZhRmlsZTpJbnN0YW5jZU9mMC5qYXZhCisgIFBzaUltcG9ydExpc3QKKyAgICA8ZW1wdHkgbGlzdD4KKyAgUHNpQ2xhc3M6Rm9vCisgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpS2V5d29yZDpjbGFzcygnY2xhc3MnKQorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUlkZW50aWZpZXI6Rm9vKCdGb28nKQorICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgJykKKyAgICBQc2lDbGFzc0luaXRpYWxpemVyCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgICAnKQorICAgICAgICBQc2lSZXR1cm5TdGF0ZW1lbnQKKyAgICAgICAgICBQc2lLZXl3b3JkOnJldHVybigncmV0dXJuJykKKyAgICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgICAgICBQc2lJbnN0YW5jZW9mRXhwcmVzc2lvbjphIGluc3RhbmNlb2YgU3RyaW5nCisgICAgICAgICAgICBQc2lSZWZlcmVuY2VFeHByZXNzaW9uOmEKKyAgICAgICAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgICAgICBQc2lJZGVudGlmaWVyOmEoJ2EnKQorICAgICAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgICAgICBQc2lLZXl3b3JkOmluc3RhbmNlb2YoJ2luc3RhbmNlb2YnKQorICAgICAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgICAgICBQc2lUeXBlRWxlbWVudDpTdHJpbmcKKyAgICAgICAgICAgICAgUHNpSmF2YUNvZGVSZWZlcmVuY2VFbGVtZW50OlN0cmluZworICAgICAgICAgICAgICAgIFBzaUlkZW50aWZpZXI6U3RyaW5nKCdTdHJpbmcnKQorICAgICAgICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgIFBzaUphdmFUb2tlbjpTRU1JQ09MT04oJzsnKQorICAgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4nKQorICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZXhwcmVzc2lvblBhcnNpbmcvSW5zdGFuY2VPZjEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZXhwcmVzc2lvblBhcnNpbmcvSW5zdGFuY2VPZjEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZmJlNDYyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9leHByZXNzaW9uUGFyc2luZy9JbnN0YW5jZU9mMS5qYXZhCkBAIC0wLDAgKzEsNSBAQAorY2xhc3MgRm9veworICB7CisgICAgcmV0dXJuIGEgaW5zdGFuY2VvZgorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9leHByZXNzaW9uUGFyc2luZy9JbnN0YW5jZU9mMS50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2V4cHJlc3Npb25QYXJzaW5nL0luc3RhbmNlT2YxLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZTI1OTgzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9leHByZXNzaW9uUGFyc2luZy9JbnN0YW5jZU9mMS50eHQKQEAgLTAsMCArMSw0MSBAQAorUHNpSmF2YUZpbGU6SW5zdGFuY2VPZjEuamF2YQorICBQc2lJbXBvcnRMaXN0CisgICAgPGVtcHR5IGxpc3Q+CisgIFBzaUNsYXNzOkZvbworICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUtleXdvcmQ6Y2xhc3MoJ2NsYXNzJykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lJZGVudGlmaWVyOkZvbygnRm9vJykKKyAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4gICcpCisgICAgUHNpQ2xhc3NJbml0aWFsaXplcgorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gICAgJykKKyAgICAgICAgUHNpUmV0dXJuU3RhdGVtZW50CisgICAgICAgICAgUHNpS2V5d29yZDpyZXR1cm4oJ3JldHVybicpCisgICAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgICAgUHNpSW5zdGFuY2VvZkV4cHJlc3Npb246YSBpbnN0YW5jZW9mCisgICAgICAgICAgICBQc2lSZWZlcmVuY2VFeHByZXNzaW9uOmEKKyAgICAgICAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgICAgICBQc2lJZGVudGlmaWVyOmEoJ2EnKQorICAgICAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgICAgICBQc2lLZXl3b3JkOmluc3RhbmNlb2YoJ2luc3RhbmNlb2YnKQorICAgICAgICAgICAgUHNpRXJyb3JFbGVtZW50OlR5cGUgZXhwZWN0ZWQKKyAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgUHNpRXJyb3JFbGVtZW50Oic7JyBleHBlY3RlZAorICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAnKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcbicpCisgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9leHByZXNzaW9uUGFyc2luZy9OZXcwLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2V4cHJlc3Npb25QYXJzaW5nL05ldzAuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZDQ1M2M4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9leHByZXNzaW9uUGFyc2luZy9OZXcwLmphdmEKQEAgLTAsMCArMSw1IEBACitjbGFzcyBGb297CisgIHsKKyAgICBuZXcgQSgpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9leHByZXNzaW9uUGFyc2luZy9OZXcwLnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZXhwcmVzc2lvblBhcnNpbmcvTmV3MC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWU1ZjViZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZXhwcmVzc2lvblBhcnNpbmcvTmV3MC50eHQKQEAgLTAsMCArMSw0MSBAQAorUHNpSmF2YUZpbGU6TmV3MC5qYXZhCisgIFBzaUltcG9ydExpc3QKKyAgICA8ZW1wdHkgbGlzdD4KKyAgUHNpQ2xhc3M6Rm9vCisgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpS2V5d29yZDpjbGFzcygnY2xhc3MnKQorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUlkZW50aWZpZXI6Rm9vKCdGb28nKQorICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgJykKKyAgICBQc2lDbGFzc0luaXRpYWxpemVyCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgICAnKQorICAgICAgICBQc2lFeHByZXNzaW9uU3RhdGVtZW50CisgICAgICAgICAgUHNpTmV3RXhwcmVzc2lvbjpuZXcgQSgpCisgICAgICAgICAgICBQc2lLZXl3b3JkOm5ldygnbmV3JykKKyAgICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgICAgICAgIFBzaUphdmFDb2RlUmVmZXJlbmNlRWxlbWVudDpBCisgICAgICAgICAgICAgIFBzaUlkZW50aWZpZXI6QSgnQScpCisgICAgICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICAgIFBzaUV4cHJlc3Npb25MaXN0CisgICAgICAgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICAgICAgUHNpSmF2YVRva2VuOlNFTUlDT0xPTignOycpCisgICAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAnKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcbicpCisgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2V4cHJlc3Npb25QYXJzaW5nL05ldzEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZXhwcmVzc2lvblBhcnNpbmcvTmV3MS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIzZTMxMDAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2V4cHJlc3Npb25QYXJzaW5nL05ldzEuamF2YQpAQCAtMCwwICsxLDUgQEAKK2NsYXNzIEZvb3sKKyAgeworICAgIG5ldyBBWzFdW107CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2V4cHJlc3Npb25QYXJzaW5nL05ldzEudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9leHByZXNzaW9uUGFyc2luZy9OZXcxLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZDg4NDc0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9leHByZXNzaW9uUGFyc2luZy9OZXcxLnR4dApAQCAtMCwwICsxLDQ0IEBACitQc2lKYXZhRmlsZTpOZXcxLmphdmEKKyAgUHNpSW1wb3J0TGlzdAorICAgIDxlbXB0eSBsaXN0PgorICBQc2lDbGFzczpGb28KKyAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lLZXl3b3JkOmNsYXNzKCdjbGFzcycpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSWRlbnRpZmllcjpGb28oJ0ZvbycpCisgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAnKQorICAgIFBzaUNsYXNzSW5pdGlhbGl6ZXIKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAgICcpCisgICAgICAgIFBzaUV4cHJlc3Npb25TdGF0ZW1lbnQKKyAgICAgICAgICBQc2lOZXdFeHByZXNzaW9uOm5ldyBBWzFdW10KKyAgICAgICAgICAgIFBzaUtleXdvcmQ6bmV3KCduZXcnKQorICAgICAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICAgICAgUHNpSmF2YUNvZGVSZWZlcmVuY2VFbGVtZW50OkEKKyAgICAgICAgICAgICAgUHNpSWRlbnRpZmllcjpBKCdBJykKKyAgICAgICAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDS0VUKCdbJykKKyAgICAgICAgICAgIFBzaUxpdGVyYWxFeHByZXNzaW9uOjEKKyAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOklOVEVHRVJfTElURVJBTCgnMScpCisgICAgICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNLRVQoJ10nKQorICAgICAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDS0VUKCdbJykKKyAgICAgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0tFVCgnXScpCisgICAgICAgICAgUHNpSmF2YVRva2VuOlNFTUlDT0xPTignOycpCisgICAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAnKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcbicpCisgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9leHByZXNzaW9uUGFyc2luZy9OZXcxMC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9leHByZXNzaW9uUGFyc2luZy9OZXcxMC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhiZGMwMzQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2V4cHJlc3Npb25QYXJzaW5nL05ldzEwLmphdmEKQEAgLTAsMCArMSw1IEBACitjbGFzcyBGb297CisgIHsKKyAgICBuZXcgaW50KCkKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZXhwcmVzc2lvblBhcnNpbmcvTmV3MTAudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9leHByZXNzaW9uUGFyc2luZy9OZXcxMC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTQ1YzA2NQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZXhwcmVzc2lvblBhcnNpbmcvTmV3MTAudHh0CkBAIC0wLDAgKzEsNDYgQEAKK1BzaUphdmFGaWxlOk5ldzEwLmphdmEKKyAgUHNpSW1wb3J0TGlzdAorICAgIDxlbXB0eSBsaXN0PgorICBQc2lDbGFzczpGb28KKyAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lLZXl3b3JkOmNsYXNzKCdjbGFzcycpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSWRlbnRpZmllcjpGb28oJ0ZvbycpCisgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAnKQorICAgIFBzaUNsYXNzSW5pdGlhbGl6ZXIKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAgICcpCisgICAgICAgIFBzaUV4cHJlc3Npb25TdGF0ZW1lbnQKKyAgICAgICAgICBQc2lOZXdFeHByZXNzaW9uOm5ldyBpbnQKKyAgICAgICAgICAgIFBzaUtleXdvcmQ6bmV3KCduZXcnKQorICAgICAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICAgICAgUHNpS2V5d29yZDppbnQoJ2ludCcpCisgICAgICAgICAgICBQc2lFcnJvckVsZW1lbnQ6J1snIGV4cGVjdGVkCisgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgIFBzaUVycm9yRWxlbWVudDonOycgZXhwZWN0ZWQKKyAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICBQc2lFeHByZXNzaW9uU3RhdGVtZW50CisgICAgICAgICAgUHNpUGFyZW50aGVzaXplZEV4cHJlc3Npb246KCkKKyAgICAgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgICAgICBQc2lFcnJvckVsZW1lbnQ6RXhwcmVzc2lvbiBleHBlY3RlZAorICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICAgICAgUHNpRXJyb3JFbGVtZW50Oic7JyBleHBlY3RlZAorICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAnKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcbicpCisgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9leHByZXNzaW9uUGFyc2luZy9OZXcxMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9leHByZXNzaW9uUGFyc2luZy9OZXcxMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYwMGQyMzcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2V4cHJlc3Npb25QYXJzaW5nL05ldzExLmphdmEKQEAgLTAsMCArMSw1IEBACitjbGFzcyBBeworICB7CisgICAgcmV0dXJuIG5ldyBTdHJpbmdbMDsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZXhwcmVzc2lvblBhcnNpbmcvTmV3MTEudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9leHByZXNzaW9uUGFyc2luZy9OZXcxMS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2M1YmY5MgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZXhwcmVzc2lvblBhcnNpbmcvTmV3MTEudHh0CkBAIC0wLDAgKzEsNDUgQEAKK1BzaUphdmFGaWxlOk5ldzExLmphdmEKKyAgUHNpSW1wb3J0TGlzdAorICAgIDxlbXB0eSBsaXN0PgorICBQc2lDbGFzczpBCisgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpS2V5d29yZDpjbGFzcygnY2xhc3MnKQorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUlkZW50aWZpZXI6QSgnQScpCisgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAnKQorICAgIFBzaUNsYXNzSW5pdGlhbGl6ZXIKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAgICcpCisgICAgICAgIFBzaVJldHVyblN0YXRlbWVudAorICAgICAgICAgIFBzaUtleXdvcmQ6cmV0dXJuKCdyZXR1cm4nKQorICAgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICAgIFBzaU5ld0V4cHJlc3Npb246bmV3IFN0cmluZ1swCisgICAgICAgICAgICBQc2lLZXl3b3JkOm5ldygnbmV3JykKKyAgICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgICAgICAgIFBzaUphdmFDb2RlUmVmZXJlbmNlRWxlbWVudDpTdHJpbmcKKyAgICAgICAgICAgICAgUHNpSWRlbnRpZmllcjpTdHJpbmcoJ1N0cmluZycpCisgICAgICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0tFVCgnWycpCisgICAgICAgICAgICBQc2lMaXRlcmFsRXhwcmVzc2lvbjowCisgICAgICAgICAgICAgIFBzaUphdmFUb2tlbjpJTlRFR0VSX0xJVEVSQUwoJzAnKQorICAgICAgICAgICAgUHNpRXJyb3JFbGVtZW50OiddJyBleHBlY3RlZAorICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICBQc2lKYXZhVG9rZW46U0VNSUNPTE9OKCc7JykKKyAgICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gICcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuJykKKyAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2V4cHJlc3Npb25QYXJzaW5nL05ldzEyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2V4cHJlc3Npb25QYXJzaW5nL05ldzEyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWUxMmJiZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZXhwcmVzc2lvblBhcnNpbmcvTmV3MTIuamF2YQpAQCAtMCwwICsxLDUgQEAKK2NsYXNzIEZvb3sKKyAgeworICAgIG5ldyBpbnRbMV1bMl07CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2V4cHJlc3Npb25QYXJzaW5nL05ldzEyLnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZXhwcmVzc2lvblBhcnNpbmcvTmV3MTIudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU2YTg0MjgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2V4cHJlc3Npb25QYXJzaW5nL05ldzEyLnR4dApAQCAtMCwwICsxLDQzIEBACitQc2lKYXZhRmlsZTpOZXcxMi5qYXZhCisgIFBzaUltcG9ydExpc3QKKyAgICA8ZW1wdHkgbGlzdD4KKyAgUHNpQ2xhc3M6Rm9vCisgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpS2V5d29yZDpjbGFzcygnY2xhc3MnKQorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUlkZW50aWZpZXI6Rm9vKCdGb28nKQorICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgJykKKyAgICBQc2lDbGFzc0luaXRpYWxpemVyCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgICAnKQorICAgICAgICBQc2lFeHByZXNzaW9uU3RhdGVtZW50CisgICAgICAgICAgUHNpTmV3RXhwcmVzc2lvbjpuZXcgaW50WzFdWzJdCisgICAgICAgICAgICBQc2lLZXl3b3JkOm5ldygnbmV3JykKKyAgICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgICAgICAgIFBzaUtleXdvcmQ6aW50KCdpbnQnKQorICAgICAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDS0VUKCdbJykKKyAgICAgICAgICAgIFBzaUxpdGVyYWxFeHByZXNzaW9uOjEKKyAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOklOVEVHRVJfTElURVJBTCgnMScpCisgICAgICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNLRVQoJ10nKQorICAgICAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDS0VUKCdbJykKKyAgICAgICAgICAgIFBzaUxpdGVyYWxFeHByZXNzaW9uOjIKKyAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOklOVEVHRVJfTElURVJBTCgnMicpCisgICAgICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNLRVQoJ10nKQorICAgICAgICAgIFBzaUphdmFUb2tlbjpTRU1JQ09MT04oJzsnKQorICAgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4nKQorICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZXhwcmVzc2lvblBhcnNpbmcvTmV3MTMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZXhwcmVzc2lvblBhcnNpbmcvTmV3MTMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42Zjg3MjhmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9leHByZXNzaW9uUGFyc2luZy9OZXcxMy5qYXZhCkBAIC0wLDAgKzEsNSBAQAorY2xhc3MgRm9veworICB7CisgICAgbmV3IGludFsxXVtdWzJdOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9leHByZXNzaW9uUGFyc2luZy9OZXcxMy50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2V4cHJlc3Npb25QYXJzaW5nL05ldzEzLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hODY1NzVlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9leHByZXNzaW9uUGFyc2luZy9OZXcxMy50eHQKQEAgLTAsMCArMSw1NCBAQAorUHNpSmF2YUZpbGU6TmV3MTMuamF2YQorICBQc2lJbXBvcnRMaXN0CisgICAgPGVtcHR5IGxpc3Q+CisgIFBzaUNsYXNzOkZvbworICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUtleXdvcmQ6Y2xhc3MoJ2NsYXNzJykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lJZGVudGlmaWVyOkZvbygnRm9vJykKKyAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4gICcpCisgICAgUHNpQ2xhc3NJbml0aWFsaXplcgorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gICAgJykKKyAgICAgICAgUHNpRXhwcmVzc2lvblN0YXRlbWVudAorICAgICAgICAgIFBzaU5ld0V4cHJlc3Npb246bmV3IGludFsxXVtdWworICAgICAgICAgICAgUHNpS2V5d29yZDpuZXcoJ25ldycpCisgICAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgICAgICBQc2lLZXl3b3JkOmludCgnaW50JykKKyAgICAgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0tFVCgnWycpCisgICAgICAgICAgICBQc2lMaXRlcmFsRXhwcmVzc2lvbjoxCisgICAgICAgICAgICAgIFBzaUphdmFUb2tlbjpJTlRFR0VSX0xJVEVSQUwoJzEnKQorICAgICAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDS0VUKCddJykKKyAgICAgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0tFVCgnWycpCisgICAgICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNLRVQoJ10nKQorICAgICAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDS0VUKCdbJykKKyAgICAgICAgICAgIFBzaUVycm9yRWxlbWVudDonXScgZXhwZWN0ZWQKKyAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgUHNpRXJyb3JFbGVtZW50Oic7JyBleHBlY3RlZAorICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgIFBzaUV4cHJlc3Npb25TdGF0ZW1lbnQKKyAgICAgICAgICBQc2lMaXRlcmFsRXhwcmVzc2lvbjoyCisgICAgICAgICAgICBQc2lKYXZhVG9rZW46SU5URUdFUl9MSVRFUkFMKCcyJykKKyAgICAgICAgICBQc2lFcnJvckVsZW1lbnQ6JzsnIGV4cGVjdGVkCisgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgUHNpRXJyb3JFbGVtZW50OlVuZXhwZWN0ZWQgdG9rZW4KKyAgICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNLRVQoJ10nKQorICAgICAgICBQc2lFbXB0eVN0YXRlbWVudAorICAgICAgICAgIFBzaUphdmFUb2tlbjpTRU1JQ09MT04oJzsnKQorICAgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4nKQorICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZXhwcmVzc2lvblBhcnNpbmcvTmV3MTQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZXhwcmVzc2lvblBhcnNpbmcvTmV3MTQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMWI2YzNhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9leHByZXNzaW9uUGFyc2luZy9OZXcxNC5qYXZhCkBAIC0wLDAgKzEsNSBAQAorY2xhc3MgRm9veworICB7CisgICAgUS5uZXcgQSgpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9leHByZXNzaW9uUGFyc2luZy9OZXcxNC50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2V4cHJlc3Npb25QYXJzaW5nL05ldzE0LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMzFiZWYyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9leHByZXNzaW9uUGFyc2luZy9OZXcxNC50eHQKQEAgLTAsMCArMSw0NiBAQAorUHNpSmF2YUZpbGU6TmV3MTQuamF2YQorICBQc2lJbXBvcnRMaXN0CisgICAgPGVtcHR5IGxpc3Q+CisgIFBzaUNsYXNzOkZvbworICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUtleXdvcmQ6Y2xhc3MoJ2NsYXNzJykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lJZGVudGlmaWVyOkZvbygnRm9vJykKKyAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4gICcpCisgICAgUHNpQ2xhc3NJbml0aWFsaXplcgorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gICAgJykKKyAgICAgICAgUHNpRXhwcmVzc2lvblN0YXRlbWVudAorICAgICAgICAgIFBzaU5ld0V4cHJlc3Npb246US5uZXcgQSgpCisgICAgICAgICAgICBQc2lSZWZlcmVuY2VFeHByZXNzaW9uOlEKKyAgICAgICAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgICAgICBQc2lJZGVudGlmaWVyOlEoJ1EnKQorICAgICAgICAgICAgUHNpSmF2YVRva2VuOkRPVCgnLicpCisgICAgICAgICAgICBQc2lLZXl3b3JkOm5ldygnbmV3JykKKyAgICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgICAgICAgIFBzaUphdmFDb2RlUmVmZXJlbmNlRWxlbWVudDpBCisgICAgICAgICAgICAgIFBzaUlkZW50aWZpZXI6QSgnQScpCisgICAgICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICAgIFBzaUV4cHJlc3Npb25MaXN0CisgICAgICAgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICAgICAgUHNpSmF2YVRva2VuOlNFTUlDT0xPTignOycpCisgICAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAnKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcbicpCisgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9leHByZXNzaW9uUGFyc2luZy9OZXcxNS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9leHByZXNzaW9uUGFyc2luZy9OZXcxNS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE3ZjNjNTkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2V4cHJlc3Npb25QYXJzaW5nL05ldzE1LmphdmEKQEAgLTAsMCArMSw1IEBACitjbGFzcyBGb28geworICB7CisgICAgbmV3IEE8PigpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9leHByZXNzaW9uUGFyc2luZy9OZXcxNS50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2V4cHJlc3Npb25QYXJzaW5nL05ldzE1LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYmNmMzBmOAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZXhwcmVzc2lvblBhcnNpbmcvTmV3MTUudHh0CkBAIC0wLDAgKzEsNDYgQEAKK1BzaUphdmFGaWxlOk5ldzE1LmphdmEKKyAgUHNpSW1wb3J0TGlzdAorICAgIDxlbXB0eSBsaXN0PgorICBQc2lDbGFzczpGb28KKyAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lLZXl3b3JkOmNsYXNzKCdjbGFzcycpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSWRlbnRpZmllcjpGb28oJ0ZvbycpCisgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAnKQorICAgIFBzaUNsYXNzSW5pdGlhbGl6ZXIKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAgICcpCisgICAgICAgIFBzaUV4cHJlc3Npb25TdGF0ZW1lbnQKKyAgICAgICAgICBQc2lOZXdFeHByZXNzaW9uOm5ldyBBPD4oKQorICAgICAgICAgICAgUHNpS2V5d29yZDpuZXcoJ25ldycpCisgICAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgICAgICBQc2lKYXZhQ29kZVJlZmVyZW5jZUVsZW1lbnQ6QTw+CisgICAgICAgICAgICAgIFBzaUlkZW50aWZpZXI6QSgnQScpCisgICAgICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgICAgICBQc2lKYXZhVG9rZW46TFQoJzwnKQorICAgICAgICAgICAgICAgIFBzaVR5cGVFbGVtZW50OgorICAgICAgICAgICAgICAgICAgUHNpVHlwZUVsZW1lbnQ6RElBTU9ORAorICAgICAgICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICAgICAgICBQc2lKYXZhVG9rZW46R1QoJz4nKQorICAgICAgICAgICAgUHNpRXhwcmVzc2lvbkxpc3QKKyAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgICAgICBQc2lKYXZhVG9rZW46U0VNSUNPTE9OKCc7JykKKyAgICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gICcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuJykKKyAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2V4cHJlc3Npb25QYXJzaW5nL05ldzIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZXhwcmVzc2lvblBhcnNpbmcvTmV3Mi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkzOTBhODcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2V4cHJlc3Npb25QYXJzaW5nL05ldzIuamF2YQpAQCAtMCwwICsxLDUgQEAKK2NsYXNzIEZvb3sKKyAgeworICAgIG5ldyBBW107CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2V4cHJlc3Npb25QYXJzaW5nL05ldzIudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9leHByZXNzaW9uUGFyc2luZy9OZXcyLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kN2U2MGE3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9leHByZXNzaW9uUGFyc2luZy9OZXcyLnR4dApAQCAtMCwwICsxLDQyIEBACitQc2lKYXZhRmlsZTpOZXcyLmphdmEKKyAgUHNpSW1wb3J0TGlzdAorICAgIDxlbXB0eSBsaXN0PgorICBQc2lDbGFzczpGb28KKyAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lLZXl3b3JkOmNsYXNzKCdjbGFzcycpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSWRlbnRpZmllcjpGb28oJ0ZvbycpCisgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAnKQorICAgIFBzaUNsYXNzSW5pdGlhbGl6ZXIKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAgICcpCisgICAgICAgIFBzaUV4cHJlc3Npb25TdGF0ZW1lbnQKKyAgICAgICAgICBQc2lOZXdFeHByZXNzaW9uOm5ldyBBW10KKyAgICAgICAgICAgIFBzaUtleXdvcmQ6bmV3KCduZXcnKQorICAgICAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICAgICAgUHNpSmF2YUNvZGVSZWZlcmVuY2VFbGVtZW50OkEKKyAgICAgICAgICAgICAgUHNpSWRlbnRpZmllcjpBKCdBJykKKyAgICAgICAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDS0VUKCdbJykKKyAgICAgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0tFVCgnXScpCisgICAgICAgICAgICBQc2lFcnJvckVsZW1lbnQ6QXJyYXkgaW5pdGlhbGl6ZXIgZXhwZWN0ZWQKKyAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgUHNpSmF2YVRva2VuOlNFTUlDT0xPTignOycpCisgICAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAnKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcbicpCisgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9leHByZXNzaW9uUGFyc2luZy9OZXczLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2V4cHJlc3Npb25QYXJzaW5nL05ldzMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZDM5MmE5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9leHByZXNzaW9uUGFyc2luZy9OZXczLmphdmEKQEAgLTAsMCArMSw1IEBACitjbGFzcyBGb297CisgIHsKKyAgICBuZXcgQVtdWzFdOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9leHByZXNzaW9uUGFyc2luZy9OZXczLnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZXhwcmVzc2lvblBhcnNpbmcvTmV3My50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzUzZmUxZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZXhwcmVzc2lvblBhcnNpbmcvTmV3My50eHQKQEAgLTAsMCArMSw1MyBAQAorUHNpSmF2YUZpbGU6TmV3My5qYXZhCisgIFBzaUltcG9ydExpc3QKKyAgICA8ZW1wdHkgbGlzdD4KKyAgUHNpQ2xhc3M6Rm9vCisgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpS2V5d29yZDpjbGFzcygnY2xhc3MnKQorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUlkZW50aWZpZXI6Rm9vKCdGb28nKQorICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgJykKKyAgICBQc2lDbGFzc0luaXRpYWxpemVyCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgICAnKQorICAgICAgICBQc2lFeHByZXNzaW9uU3RhdGVtZW50CisgICAgICAgICAgUHNpTmV3RXhwcmVzc2lvbjpuZXcgQVtdWworICAgICAgICAgICAgUHNpS2V5d29yZDpuZXcoJ25ldycpCisgICAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgICAgICBQc2lKYXZhQ29kZVJlZmVyZW5jZUVsZW1lbnQ6QQorICAgICAgICAgICAgICBQc2lJZGVudGlmaWVyOkEoJ0EnKQorICAgICAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNLRVQoJ1snKQorICAgICAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDS0VUKCddJykKKyAgICAgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0tFVCgnWycpCisgICAgICAgICAgICBQc2lFcnJvckVsZW1lbnQ6J10nIGV4cGVjdGVkCisgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgIFBzaUVycm9yRWxlbWVudDonOycgZXhwZWN0ZWQKKyAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICBQc2lFeHByZXNzaW9uU3RhdGVtZW50CisgICAgICAgICAgUHNpTGl0ZXJhbEV4cHJlc3Npb246MQorICAgICAgICAgICAgUHNpSmF2YVRva2VuOklOVEVHRVJfTElURVJBTCgnMScpCisgICAgICAgICAgUHNpRXJyb3JFbGVtZW50Oic7JyBleHBlY3RlZAorICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgIFBzaUVycm9yRWxlbWVudDpVbmV4cGVjdGVkIHRva2VuCisgICAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDS0VUKCddJykKKyAgICAgICAgUHNpRW1wdHlTdGF0ZW1lbnQKKyAgICAgICAgICBQc2lKYXZhVG9rZW46U0VNSUNPTE9OKCc7JykKKyAgICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gICcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuJykKKyAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2V4cHJlc3Npb25QYXJzaW5nL05ldzQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZXhwcmVzc2lvblBhcnNpbmcvTmV3NC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ4NjdlN2EKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2V4cHJlc3Npb25QYXJzaW5nL05ldzQuamF2YQpAQCAtMCwwICsxLDUgQEAKK2NsYXNzIEZvb3sKKyAgeworICAgIG5ldyBBW11bXXtudWxsfTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZXhwcmVzc2lvblBhcnNpbmcvTmV3NC50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2V4cHJlc3Npb25QYXJzaW5nL05ldzQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg2YjEzNDgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2V4cHJlc3Npb25QYXJzaW5nL05ldzQudHh0CkBAIC0wLDAgKzEsNDcgQEAKK1BzaUphdmFGaWxlOk5ldzQuamF2YQorICBQc2lJbXBvcnRMaXN0CisgICAgPGVtcHR5IGxpc3Q+CisgIFBzaUNsYXNzOkZvbworICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUtleXdvcmQ6Y2xhc3MoJ2NsYXNzJykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lJZGVudGlmaWVyOkZvbygnRm9vJykKKyAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4gICcpCisgICAgUHNpQ2xhc3NJbml0aWFsaXplcgorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gICAgJykKKyAgICAgICAgUHNpRXhwcmVzc2lvblN0YXRlbWVudAorICAgICAgICAgIFBzaU5ld0V4cHJlc3Npb246bmV3IEFbXVtde251bGx9CisgICAgICAgICAgICBQc2lLZXl3b3JkOm5ldygnbmV3JykKKyAgICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgICAgICAgIFBzaUphdmFDb2RlUmVmZXJlbmNlRWxlbWVudDpBCisgICAgICAgICAgICAgIFBzaUlkZW50aWZpZXI6QSgnQScpCisgICAgICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0tFVCgnWycpCisgICAgICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNLRVQoJ10nKQorICAgICAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDS0VUKCdbJykKKyAgICAgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0tFVCgnXScpCisgICAgICAgICAgICBQc2lBcnJheUluaXRpYWxpemVyRXhwcmVzc2lvbjp7bnVsbH0KKyAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgICAgICAgIFBzaUxpdGVyYWxFeHByZXNzaW9uOm51bGwKKyAgICAgICAgICAgICAgICBQc2lKYXZhVG9rZW46TlVMTF9LRVlXT1JEKCdudWxsJykKKyAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgICAgICAgUHNpSmF2YVRva2VuOlNFTUlDT0xPTignOycpCisgICAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAnKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcbicpCisgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9leHByZXNzaW9uUGFyc2luZy9OZXc1LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2V4cHJlc3Npb25QYXJzaW5nL05ldzUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41OTRjOTQ0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9leHByZXNzaW9uUGFyc2luZy9OZXc1LmphdmEKQEAgLTAsMCArMSw1IEBACitjbGFzcyBGb297CisgIHsKKyAgICBuZXcgQVsxXXtudWxsfTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZXhwcmVzc2lvblBhcnNpbmcvTmV3NS50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2V4cHJlc3Npb25QYXJzaW5nL05ldzUudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ1YTZiYTEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2V4cHJlc3Npb25QYXJzaW5nL05ldzUudHh0CkBAIC0wLDAgKzEsNTQgQEAKK1BzaUphdmFGaWxlOk5ldzUuamF2YQorICBQc2lJbXBvcnRMaXN0CisgICAgPGVtcHR5IGxpc3Q+CisgIFBzaUNsYXNzOkZvbworICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUtleXdvcmQ6Y2xhc3MoJ2NsYXNzJykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lJZGVudGlmaWVyOkZvbygnRm9vJykKKyAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4gICcpCisgICAgUHNpQ2xhc3NJbml0aWFsaXplcgorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gICAgJykKKyAgICAgICAgUHNpRXhwcmVzc2lvblN0YXRlbWVudAorICAgICAgICAgIFBzaU5ld0V4cHJlc3Npb246bmV3IEFbMV0KKyAgICAgICAgICAgIFBzaUtleXdvcmQ6bmV3KCduZXcnKQorICAgICAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICAgICAgUHNpSmF2YUNvZGVSZWZlcmVuY2VFbGVtZW50OkEKKyAgICAgICAgICAgICAgUHNpSWRlbnRpZmllcjpBKCdBJykKKyAgICAgICAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDS0VUKCdbJykKKyAgICAgICAgICAgIFBzaUxpdGVyYWxFeHByZXNzaW9uOjEKKyAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOklOVEVHRVJfTElURVJBTCgnMScpCisgICAgICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNLRVQoJ10nKQorICAgICAgICAgIFBzaUVycm9yRWxlbWVudDonOycgZXhwZWN0ZWQKKyAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICBQc2lCbG9ja1N0YXRlbWVudAorICAgICAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgICAgICBQc2lFeHByZXNzaW9uU3RhdGVtZW50CisgICAgICAgICAgICAgIFBzaUxpdGVyYWxFeHByZXNzaW9uOm51bGwKKyAgICAgICAgICAgICAgICBQc2lKYXZhVG9rZW46TlVMTF9LRVlXT1JEKCdudWxsJykKKyAgICAgICAgICAgICAgUHNpRXJyb3JFbGVtZW50Oic7JyBleHBlY3RlZAorICAgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgICAgIFBzaUVtcHR5U3RhdGVtZW50CisgICAgICAgICAgUHNpSmF2YVRva2VuOlNFTUlDT0xPTignOycpCisgICAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAnKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcbicpCisgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9leHByZXNzaW9uUGFyc2luZy9OZXc2LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2V4cHJlc3Npb25QYXJzaW5nL05ldzYuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZGIwMjZlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9leHByZXNzaW9uUGFyc2luZy9OZXc2LmphdmEKQEAgLTAsMCArMSw1IEBACitjbGFzcyBGb297CisgIHsKKyAgICBuZXcKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZXhwcmVzc2lvblBhcnNpbmcvTmV3Ni50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2V4cHJlc3Npb25QYXJzaW5nL05ldzYudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkyZmE1MDAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2V4cHJlc3Npb25QYXJzaW5nL05ldzYudHh0CkBAIC0wLDAgKzEsMzYgQEAKK1BzaUphdmFGaWxlOk5ldzYuamF2YQorICBQc2lJbXBvcnRMaXN0CisgICAgPGVtcHR5IGxpc3Q+CisgIFBzaUNsYXNzOkZvbworICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUtleXdvcmQ6Y2xhc3MoJ2NsYXNzJykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lJZGVudGlmaWVyOkZvbygnRm9vJykKKyAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4gICcpCisgICAgUHNpQ2xhc3NJbml0aWFsaXplcgorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gICAgJykKKyAgICAgICAgUHNpRXhwcmVzc2lvblN0YXRlbWVudAorICAgICAgICAgIFBzaU5ld0V4cHJlc3Npb246bmV3CisgICAgICAgICAgICBQc2lLZXl3b3JkOm5ldygnbmV3JykKKyAgICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgICBQc2lFcnJvckVsZW1lbnQ6SWRlbnRpZmllciBleHBlY3RlZAorICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICBQc2lFcnJvckVsZW1lbnQ6JzsnIGV4cGVjdGVkCisgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gICcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuJykKKyAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2V4cHJlc3Npb25QYXJzaW5nL05ldzcuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZXhwcmVzc2lvblBhcnNpbmcvTmV3Ny5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM1YmI2ZjUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2V4cHJlc3Npb25QYXJzaW5nL05ldzcuamF2YQpAQCAtMCwwICsxLDUgQEAKK2NsYXNzIEZvb3sKKyAgeworICAgIG5ldyBBCisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2V4cHJlc3Npb25QYXJzaW5nL05ldzcudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9leHByZXNzaW9uUGFyc2luZy9OZXc3LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZjZiYTE5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9leHByZXNzaW9uUGFyc2luZy9OZXc3LnR4dApAQCAtMCwwICsxLDQxIEBACitQc2lKYXZhRmlsZTpOZXc3LmphdmEKKyAgUHNpSW1wb3J0TGlzdAorICAgIDxlbXB0eSBsaXN0PgorICBQc2lDbGFzczpGb28KKyAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lLZXl3b3JkOmNsYXNzKCdjbGFzcycpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSWRlbnRpZmllcjpGb28oJ0ZvbycpCisgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAnKQorICAgIFBzaUNsYXNzSW5pdGlhbGl6ZXIKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAgICcpCisgICAgICAgIFBzaUV4cHJlc3Npb25TdGF0ZW1lbnQKKyAgICAgICAgICBQc2lOZXdFeHByZXNzaW9uOm5ldyBBCisgICAgICAgICAgICBQc2lLZXl3b3JkOm5ldygnbmV3JykKKyAgICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgICAgICAgIFBzaUphdmFDb2RlUmVmZXJlbmNlRWxlbWVudDpBCisgICAgICAgICAgICAgIFBzaUlkZW50aWZpZXI6QSgnQScpCisgICAgICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICAgIFBzaUVycm9yRWxlbWVudDonKCcgb3IgJ1snIGV4cGVjdGVkCisgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgIFBzaUVycm9yRWxlbWVudDonOycgZXhwZWN0ZWQKKyAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4nKQorICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZXhwcmVzc2lvblBhcnNpbmcvTmV3OC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9leHByZXNzaW9uUGFyc2luZy9OZXc4LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzllNjEyMAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZXhwcmVzc2lvblBhcnNpbmcvTmV3OC5qYXZhCkBAIC0wLDAgKzEsNSBAQAorY2xhc3MgRm9veworICB7CisgICAgbmV3IEFbCisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2V4cHJlc3Npb25QYXJzaW5nL05ldzgudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9leHByZXNzaW9uUGFyc2luZy9OZXc4LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZGQwNTQzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9leHByZXNzaW9uUGFyc2luZy9OZXc4LnR4dApAQCAtMCwwICsxLDQyIEBACitQc2lKYXZhRmlsZTpOZXc4LmphdmEKKyAgUHNpSW1wb3J0TGlzdAorICAgIDxlbXB0eSBsaXN0PgorICBQc2lDbGFzczpGb28KKyAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lLZXl3b3JkOmNsYXNzKCdjbGFzcycpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSWRlbnRpZmllcjpGb28oJ0ZvbycpCisgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAnKQorICAgIFBzaUNsYXNzSW5pdGlhbGl6ZXIKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAgICcpCisgICAgICAgIFBzaUV4cHJlc3Npb25TdGF0ZW1lbnQKKyAgICAgICAgICBQc2lOZXdFeHByZXNzaW9uOm5ldyBBWworICAgICAgICAgICAgUHNpS2V5d29yZDpuZXcoJ25ldycpCisgICAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgICAgICBQc2lKYXZhQ29kZVJlZmVyZW5jZUVsZW1lbnQ6QQorICAgICAgICAgICAgICBQc2lJZGVudGlmaWVyOkEoJ0EnKQorICAgICAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNLRVQoJ1snKQorICAgICAgICAgICAgUHNpRXJyb3JFbGVtZW50OiddJyBleHBlY3RlZAorICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICBQc2lFcnJvckVsZW1lbnQ6JzsnIGV4cGVjdGVkCisgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gICcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuJykKKyAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2V4cHJlc3Npb25QYXJzaW5nL05ldzkuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZXhwcmVzc2lvblBhcnNpbmcvTmV3OS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI0Yzc1ZDAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2V4cHJlc3Npb25QYXJzaW5nL05ldzkuamF2YQpAQCAtMCwwICsxLDUgQEAKK2NsYXNzIEZvb3sKKyAgeworICAgIG5ldyBpbnQKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZXhwcmVzc2lvblBhcnNpbmcvTmV3OS50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2V4cHJlc3Npb25QYXJzaW5nL05ldzkudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY2OTI0YzgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2V4cHJlc3Npb25QYXJzaW5nL05ldzkudHh0CkBAIC0wLDAgKzEsMzggQEAKK1BzaUphdmFGaWxlOk5ldzkuamF2YQorICBQc2lJbXBvcnRMaXN0CisgICAgPGVtcHR5IGxpc3Q+CisgIFBzaUNsYXNzOkZvbworICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUtleXdvcmQ6Y2xhc3MoJ2NsYXNzJykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lJZGVudGlmaWVyOkZvbygnRm9vJykKKyAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4gICcpCisgICAgUHNpQ2xhc3NJbml0aWFsaXplcgorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gICAgJykKKyAgICAgICAgUHNpRXhwcmVzc2lvblN0YXRlbWVudAorICAgICAgICAgIFBzaU5ld0V4cHJlc3Npb246bmV3IGludAorICAgICAgICAgICAgUHNpS2V5d29yZDpuZXcoJ25ldycpCisgICAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgICAgICBQc2lLZXl3b3JkOmludCgnaW50JykKKyAgICAgICAgICAgIFBzaUVycm9yRWxlbWVudDonWycgZXhwZWN0ZWQKKyAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgUHNpRXJyb3JFbGVtZW50Oic7JyBleHBlY3RlZAorICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAnKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcbicpCisgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9leHByZXNzaW9uUGFyc2luZy9OZXdJbkV4cHJMaXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2V4cHJlc3Npb25QYXJzaW5nL05ld0luRXhwckxpc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNmRjZDNhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9leHByZXNzaW9uUGFyc2luZy9OZXdJbkV4cHJMaXN0LmphdmEKQEAgLTAsMCArMSw1IEBACitjbGFzcyBGb297CisgIHsKKyAgICBjYWxsKG5ldyApOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9leHByZXNzaW9uUGFyc2luZy9OZXdJbkV4cHJMaXN0LnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZXhwcmVzc2lvblBhcnNpbmcvTmV3SW5FeHByTGlzdC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTJjZGI2OAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZXhwcmVzc2lvblBhcnNpbmcvTmV3SW5FeHByTGlzdC50eHQKQEAgLTAsMCArMSw0NSBAQAorUHNpSmF2YUZpbGU6TmV3SW5FeHByTGlzdC5qYXZhCisgIFBzaUltcG9ydExpc3QKKyAgICA8ZW1wdHkgbGlzdD4KKyAgUHNpQ2xhc3M6Rm9vCisgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpS2V5d29yZDpjbGFzcygnY2xhc3MnKQorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUlkZW50aWZpZXI6Rm9vKCdGb28nKQorICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgJykKKyAgICBQc2lDbGFzc0luaXRpYWxpemVyCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgICAnKQorICAgICAgICBQc2lFeHByZXNzaW9uU3RhdGVtZW50CisgICAgICAgICAgUHNpTWV0aG9kQ2FsbEV4cHJlc3Npb246Y2FsbChuZXcgKQorICAgICAgICAgICAgUHNpUmVmZXJlbmNlRXhwcmVzc2lvbjpjYWxsCisgICAgICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICAgICAgUHNpSWRlbnRpZmllcjpjYWxsKCdjYWxsJykKKyAgICAgICAgICAgIFBzaUV4cHJlc3Npb25MaXN0CisgICAgICAgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgICAgICAgIFBzaU5ld0V4cHJlc3Npb246bmV3CisgICAgICAgICAgICAgICAgUHNpS2V5d29yZDpuZXcoJ25ldycpCisgICAgICAgICAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgICAgICAgUHNpRXJyb3JFbGVtZW50OklkZW50aWZpZXIgZXhwZWN0ZWQKKyAgICAgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgICAgICBQc2lKYXZhVG9rZW46U0VNSUNPTE9OKCc7JykKKyAgICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gICcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuJykKKyAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICAKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2V4cHJlc3Npb25QYXJzaW5nL05vdDAuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZXhwcmVzc2lvblBhcnNpbmcvTm90MC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE5ZWU4M2UKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2V4cHJlc3Npb25QYXJzaW5nL05vdDAuamF2YQpAQCAtMCwwICsxLDUgQEAKK2NsYXNzIEZvb3sKKyAgeworICAgIHJldHVybiAhIWE7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2V4cHJlc3Npb25QYXJzaW5nL05vdDAudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9leHByZXNzaW9uUGFyc2luZy9Ob3QwLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYmI0MTkwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9leHByZXNzaW9uUGFyc2luZy9Ob3QwLnR4dApAQCAtMCwwICsxLDM5IEBACitQc2lKYXZhRmlsZTpOb3QwLmphdmEKKyAgUHNpSW1wb3J0TGlzdAorICAgIDxlbXB0eSBsaXN0PgorICBQc2lDbGFzczpGb28KKyAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lLZXl3b3JkOmNsYXNzKCdjbGFzcycpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSWRlbnRpZmllcjpGb28oJ0ZvbycpCisgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAnKQorICAgIFBzaUNsYXNzSW5pdGlhbGl6ZXIKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAgICcpCisgICAgICAgIFBzaVJldHVyblN0YXRlbWVudAorICAgICAgICAgIFBzaUtleXdvcmQ6cmV0dXJuKCdyZXR1cm4nKQorICAgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICAgIFBzaVByZWZpeEV4cHJlc3Npb246ISFhCisgICAgICAgICAgICBQc2lKYXZhVG9rZW46RVhDTCgnIScpCisgICAgICAgICAgICBQc2lQcmVmaXhFeHByZXNzaW9uOiFhCisgICAgICAgICAgICAgIFBzaUphdmFUb2tlbjpFWENMKCchJykKKyAgICAgICAgICAgICAgUHNpUmVmZXJlbmNlRXhwcmVzc2lvbjphCisgICAgICAgICAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgICAgICAgUHNpSWRlbnRpZmllcjphKCdhJykKKyAgICAgICAgICBQc2lKYXZhVG9rZW46U0VNSUNPTE9OKCc7JykKKyAgICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gICcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuJykKKyAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2V4cHJlc3Npb25QYXJzaW5nL05vdDEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZXhwcmVzc2lvblBhcnNpbmcvTm90MS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIyZGY3NjMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2V4cHJlc3Npb25QYXJzaW5nL05vdDEuamF2YQpAQCAtMCwwICsxLDUgQEAKK2NsYXNzIEZvb3sKKyAgeworICAgIHJldHVybiAhCisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2V4cHJlc3Npb25QYXJzaW5nL05vdDEudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9leHByZXNzaW9uUGFyc2luZy9Ob3QxLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZWNiMTg2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9leHByZXNzaW9uUGFyc2luZy9Ob3QxLnR4dApAQCAtMCwwICsxLDM2IEBACitQc2lKYXZhRmlsZTpOb3QxLmphdmEKKyAgUHNpSW1wb3J0TGlzdAorICAgIDxlbXB0eSBsaXN0PgorICBQc2lDbGFzczpGb28KKyAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lLZXl3b3JkOmNsYXNzKCdjbGFzcycpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSWRlbnRpZmllcjpGb28oJ0ZvbycpCisgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAnKQorICAgIFBzaUNsYXNzSW5pdGlhbGl6ZXIKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAgICcpCisgICAgICAgIFBzaVJldHVyblN0YXRlbWVudAorICAgICAgICAgIFBzaUtleXdvcmQ6cmV0dXJuKCdyZXR1cm4nKQorICAgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICAgIFBzaVByZWZpeEV4cHJlc3Npb246IQorICAgICAgICAgICAgUHNpSmF2YVRva2VuOkVYQ0woJyEnKQorICAgICAgICAgICAgUHNpRXJyb3JFbGVtZW50OkV4cHJlc3Npb24gZXhwZWN0ZWQKKyAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgUHNpRXJyb3JFbGVtZW50Oic7JyBleHBlY3RlZAorICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAnKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcbicpCisgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2V4cHJlc3Npb25QYXJzaW5nL09yMC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9leHByZXNzaW9uUGFyc2luZy9PcjAuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMjhlMTg2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9leHByZXNzaW9uUGFyc2luZy9PcjAuamF2YQpAQCAtMCwwICsxLDUgQEAKK2NsYXNzIEZvb3sKKyAgeworICAgIHJldHVybiBhIHwgYiB8IGM7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2V4cHJlc3Npb25QYXJzaW5nL09yMC50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2V4cHJlc3Npb25QYXJzaW5nL09yMC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDUzZWY4YQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZXhwcmVzc2lvblBhcnNpbmcvT3IwLnR4dApAQCAtMCwwICsxLDUwIEBACitQc2lKYXZhRmlsZTpPcjAuamF2YQorICBQc2lJbXBvcnRMaXN0CisgICAgPGVtcHR5IGxpc3Q+CisgIFBzaUNsYXNzOkZvbworICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUtleXdvcmQ6Y2xhc3MoJ2NsYXNzJykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lJZGVudGlmaWVyOkZvbygnRm9vJykKKyAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4gICcpCisgICAgUHNpQ2xhc3NJbml0aWFsaXplcgorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gICAgJykKKyAgICAgICAgUHNpUmV0dXJuU3RhdGVtZW50CisgICAgICAgICAgUHNpS2V5d29yZDpyZXR1cm4oJ3JldHVybicpCisgICAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgICAgUHNpUG9seWFkaWNFeHByZXNzaW9uOiBhIHwgYiB8IGMKKyAgICAgICAgICAgIFBzaVJlZmVyZW5jZUV4cHJlc3Npb246YQorICAgICAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgICAgIFBzaUlkZW50aWZpZXI6YSgnYScpCisgICAgICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgICAgICAgIFBzaUphdmFUb2tlbjpPUignfCcpCisgICAgICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgICAgICAgIFBzaVJlZmVyZW5jZUV4cHJlc3Npb246YgorICAgICAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgICAgIFBzaUlkZW50aWZpZXI6YignYicpCisgICAgICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgICAgICAgIFBzaUphdmFUb2tlbjpPUignfCcpCisgICAgICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgICAgICAgIFBzaVJlZmVyZW5jZUV4cHJlc3Npb246YworICAgICAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgICAgIFBzaUlkZW50aWZpZXI6YygnYycpCisgICAgICAgICAgUHNpSmF2YVRva2VuOlNFTUlDT0xPTignOycpCisgICAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAnKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcbicpCisgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2V4cHJlc3Npb25QYXJzaW5nL09yMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9leHByZXNzaW9uUGFyc2luZy9PcjEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZGMxNTMyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9leHByZXNzaW9uUGFyc2luZy9PcjEuamF2YQpAQCAtMCwwICsxLDUgQEAKK2NsYXNzIEZvb3sKKyAgeworICAgICBhIHwKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZXhwcmVzc2lvblBhcnNpbmcvT3IxLnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZXhwcmVzc2lvblBhcnNpbmcvT3IxLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMGE1NzNlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9leHByZXNzaW9uUGFyc2luZy9PcjEudHh0CkBAIC0wLDAgKzEsMzkgQEAKK1BzaUphdmFGaWxlOk9yMS5qYXZhCisgIFBzaUltcG9ydExpc3QKKyAgICA8ZW1wdHkgbGlzdD4KKyAgUHNpQ2xhc3M6Rm9vCisgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpS2V5d29yZDpjbGFzcygnY2xhc3MnKQorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUlkZW50aWZpZXI6Rm9vKCdGb28nKQorICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgJykKKyAgICBQc2lDbGFzc0luaXRpYWxpemVyCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgICAgJykKKyAgICAgICAgUHNpRXhwcmVzc2lvblN0YXRlbWVudAorICAgICAgICAgIFBzaUJpbmFyeUV4cHJlc3Npb246YSB8CisgICAgICAgICAgICBQc2lSZWZlcmVuY2VFeHByZXNzaW9uOmEKKyAgICAgICAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgICAgICBQc2lJZGVudGlmaWVyOmEoJ2EnKQorICAgICAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgICAgICBQc2lKYXZhVG9rZW46T1IoJ3wnKQorICAgICAgICAgICAgUHNpRXJyb3JFbGVtZW50OkV4cHJlc3Npb24gZXhwZWN0ZWQKKyAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgUHNpRXJyb3JFbGVtZW50Oic7JyBleHBlY3RlZAorICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAnKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcbicpCisgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9leHByZXNzaW9uUGFyc2luZy9QYXJlbnRoLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2V4cHJlc3Npb25QYXJzaW5nL1BhcmVudGguamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43YTMwMTA3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9leHByZXNzaW9uUGFyc2luZy9QYXJlbnRoLmphdmEKQEAgLTAsMCArMSw1IEBACitjbGFzcyBGb297CisgIHsKKyAgICBpbnQgaCA9IChjKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZXhwcmVzc2lvblBhcnNpbmcvUGFyZW50aC50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2V4cHJlc3Npb25QYXJzaW5nL1BhcmVudGgudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFhMzg1NWEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2V4cHJlc3Npb25QYXJzaW5nL1BhcmVudGgudHh0CkBAIC0wLDAgKzEsNDYgQEAKK1BzaUphdmFGaWxlOlBhcmVudGguamF2YQorICBQc2lJbXBvcnRMaXN0CisgICAgPGVtcHR5IGxpc3Q+CisgIFBzaUNsYXNzOkZvbworICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUtleXdvcmQ6Y2xhc3MoJ2NsYXNzJykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lJZGVudGlmaWVyOkZvbygnRm9vJykKKyAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4gICcpCisgICAgUHNpQ2xhc3NJbml0aWFsaXplcgorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gICAgJykKKyAgICAgICAgUHNpRGVjbGFyYXRpb25TdGF0ZW1lbnQKKyAgICAgICAgICBQc2lMb2NhbFZhcmlhYmxlOmgKKyAgICAgICAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgICBQc2lUeXBlRWxlbWVudDppbnQKKyAgICAgICAgICAgICAgUHNpS2V5d29yZDppbnQoJ2ludCcpCisgICAgICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgICAgICAgIFBzaUlkZW50aWZpZXI6aCgnaCcpCisgICAgICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgICAgICAgIFBzaUphdmFUb2tlbjpFUSgnPScpCisgICAgICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgICAgICAgIFBzaVBhcmVudGhlc2l6ZWRFeHByZXNzaW9uOihjKQorICAgICAgICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICAgICAgICBQc2lSZWZlcmVuY2VFeHByZXNzaW9uOmMKKyAgICAgICAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICAgICAgICBQc2lJZGVudGlmaWVyOmMoJ2MnKQorICAgICAgICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgICAgICAgUHNpSmF2YVRva2VuOlNFTUlDT0xPTignOycpCisgICAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAnKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcbicpCisgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9leHByZXNzaW9uUGFyc2luZy9QYXJlbnRoMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9leHByZXNzaW9uUGFyc2luZy9QYXJlbnRoMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRiOTFlNjUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2V4cHJlc3Npb25QYXJzaW5nL1BhcmVudGgxLmphdmEKQEAgLTAsMCArMSw1IEBACitjbGFzcyBGb297CisgIHsKKyAgICAodGhpcykuZi0tOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9leHByZXNzaW9uUGFyc2luZy9QYXJlbnRoMS50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2V4cHJlc3Npb25QYXJzaW5nL1BhcmVudGgxLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yY2NiZWQ2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9leHByZXNzaW9uUGFyc2luZy9QYXJlbnRoMS50eHQKQEAgLTAsMCArMSw0MyBAQAorUHNpSmF2YUZpbGU6UGFyZW50aDEuamF2YQorICBQc2lJbXBvcnRMaXN0CisgICAgPGVtcHR5IGxpc3Q+CisgIFBzaUNsYXNzOkZvbworICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUtleXdvcmQ6Y2xhc3MoJ2NsYXNzJykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lJZGVudGlmaWVyOkZvbygnRm9vJykKKyAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4gICcpCisgICAgUHNpQ2xhc3NJbml0aWFsaXplcgorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gICAgJykKKyAgICAgICAgUHNpRXhwcmVzc2lvblN0YXRlbWVudAorICAgICAgICAgIFBzaVBvc3RmaXhFeHByZXNzaW9uOih0aGlzKS5mLS0KKyAgICAgICAgICAgIFBzaVJlZmVyZW5jZUV4cHJlc3Npb246KHRoaXMpLmYKKyAgICAgICAgICAgICAgUHNpUGFyZW50aGVzaXplZEV4cHJlc3Npb246KHRoaXMpCisgICAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgICAgICAgICBQc2lUaGlzRXhwcmVzc2lvbjp0aGlzCisgICAgICAgICAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgICAgICAgICAgUHNpS2V5d29yZDp0aGlzKCd0aGlzJykKKyAgICAgICAgICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgICAgICAgICBQc2lKYXZhVG9rZW46RE9UKCcuJykKKyAgICAgICAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgICAgICBQc2lJZGVudGlmaWVyOmYoJ2YnKQorICAgICAgICAgICAgUHNpSmF2YVRva2VuOk1JTlVTTUlOVVMoJy0tJykKKyAgICAgICAgICBQc2lKYXZhVG9rZW46U0VNSUNPTE9OKCc7JykKKyAgICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gICcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuJykKKyAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2V4cHJlc3Npb25QYXJzaW5nL1BpbmVzSW5SZWZlcmVuY2VFeHByZXNzaW9uMC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9leHByZXNzaW9uUGFyc2luZy9QaW5lc0luUmVmZXJlbmNlRXhwcmVzc2lvbjAuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41N2I1ZDE4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9leHByZXNzaW9uUGFyc2luZy9QaW5lc0luUmVmZXJlbmNlRXhwcmVzc2lvbjAuamF2YQpAQCAtMCwwICsxLDUgQEAKK2NsYXNzIEZvbyB7CisgIHsKKyAgICBDb2xsZWN0aW9ucy48U3RyaW5nPnNvcnQobnVsbCk7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2V4cHJlc3Npb25QYXJzaW5nL1BpbmVzSW5SZWZlcmVuY2VFeHByZXNzaW9uMC50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2V4cHJlc3Npb25QYXJzaW5nL1BpbmVzSW5SZWZlcmVuY2VFeHByZXNzaW9uMC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTYyOWEzMgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZXhwcmVzc2lvblBhcnNpbmcvUGluZXNJblJlZmVyZW5jZUV4cHJlc3Npb24wLnR4dApAQCAtMCwwICsxLDUxIEBACitQc2lKYXZhRmlsZTpQaW5lc0luUmVmZXJlbmNlRXhwcmVzc2lvbjAuamF2YQorICBQc2lJbXBvcnRMaXN0CisgICAgPGVtcHR5IGxpc3Q+CisgIFBzaUNsYXNzOkZvbworICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUtleXdvcmQ6Y2xhc3MoJ2NsYXNzJykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lJZGVudGlmaWVyOkZvbygnRm9vJykKKyAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4gICcpCisgICAgUHNpQ2xhc3NJbml0aWFsaXplcgorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gICAgJykKKyAgICAgICAgUHNpRXhwcmVzc2lvblN0YXRlbWVudAorICAgICAgICAgIFBzaU1ldGhvZENhbGxFeHByZXNzaW9uOkNvbGxlY3Rpb25zLjxTdHJpbmc+c29ydChudWxsKQorICAgICAgICAgICAgUHNpUmVmZXJlbmNlRXhwcmVzc2lvbjpDb2xsZWN0aW9ucy48U3RyaW5nPnNvcnQKKyAgICAgICAgICAgICAgUHNpUmVmZXJlbmNlRXhwcmVzc2lvbjpDb2xsZWN0aW9ucworICAgICAgICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgICAgICAgIFBzaUlkZW50aWZpZXI6Q29sbGVjdGlvbnMoJ0NvbGxlY3Rpb25zJykKKyAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOkRPVCgnLicpCisgICAgICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgICAgICBQc2lKYXZhVG9rZW46TFQoJzwnKQorICAgICAgICAgICAgICAgIFBzaVR5cGVFbGVtZW50OlN0cmluZworICAgICAgICAgICAgICAgICAgUHNpSmF2YUNvZGVSZWZlcmVuY2VFbGVtZW50OlN0cmluZworICAgICAgICAgICAgICAgICAgICBQc2lJZGVudGlmaWVyOlN0cmluZygnU3RyaW5nJykKKyAgICAgICAgICAgICAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgICAgICAgIFBzaUphdmFUb2tlbjpHVCgnPicpCisgICAgICAgICAgICAgIFBzaUlkZW50aWZpZXI6c29ydCgnc29ydCcpCisgICAgICAgICAgICBQc2lFeHByZXNzaW9uTGlzdAorICAgICAgICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICAgICAgICBQc2lMaXRlcmFsRXhwcmVzc2lvbjpudWxsCisgICAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOk5VTExfS0VZV09SRCgnbnVsbCcpCisgICAgICAgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICAgICAgUHNpSmF2YVRva2VuOlNFTUlDT0xPTignOycpCisgICAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAnKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcbicpCisgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9leHByZXNzaW9uUGFyc2luZy9QaW5lc0luUmVmZXJlbmNlRXhwcmVzc2lvbjEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZXhwcmVzc2lvblBhcnNpbmcvUGluZXNJblJlZmVyZW5jZUV4cHJlc3Npb24xLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODlkNmY2NAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZXhwcmVzc2lvblBhcnNpbmcvUGluZXNJblJlZmVyZW5jZUV4cHJlc3Npb24xLmphdmEKQEAgLTAsMCArMSw1IEBACitjbGFzcyBGb28geworICB7CisgICAgdGhpcy48U3RyaW5nPnNvcnQobnVsbCk7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2V4cHJlc3Npb25QYXJzaW5nL1BpbmVzSW5SZWZlcmVuY2VFeHByZXNzaW9uMS50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2V4cHJlc3Npb25QYXJzaW5nL1BpbmVzSW5SZWZlcmVuY2VFeHByZXNzaW9uMS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDNhZTFjMwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZXhwcmVzc2lvblBhcnNpbmcvUGluZXNJblJlZmVyZW5jZUV4cHJlc3Npb24xLnR4dApAQCAtMCwwICsxLDUyIEBACitQc2lKYXZhRmlsZTpQaW5lc0luUmVmZXJlbmNlRXhwcmVzc2lvbjEuamF2YQorICBQc2lJbXBvcnRMaXN0CisgICAgPGVtcHR5IGxpc3Q+CisgIFBzaUNsYXNzOkZvbworICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUtleXdvcmQ6Y2xhc3MoJ2NsYXNzJykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lJZGVudGlmaWVyOkZvbygnRm9vJykKKyAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4gICcpCisgICAgUHNpQ2xhc3NJbml0aWFsaXplcgorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gICAgJykKKyAgICAgICAgUHNpRXhwcmVzc2lvblN0YXRlbWVudAorICAgICAgICAgIFBzaU1ldGhvZENhbGxFeHByZXNzaW9uOnRoaXMuPFN0cmluZz5zb3J0KG51bGwpCisgICAgICAgICAgICBQc2lSZWZlcmVuY2VFeHByZXNzaW9uOnRoaXMuPFN0cmluZz5zb3J0CisgICAgICAgICAgICAgIFBzaVRoaXNFeHByZXNzaW9uOnRoaXMKKyAgICAgICAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICAgICAgICBQc2lLZXl3b3JkOnRoaXMoJ3RoaXMnKQorICAgICAgICAgICAgICBQc2lKYXZhVG9rZW46RE9UKCcuJykKKyAgICAgICAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgICAgIFBzaUphdmFUb2tlbjpMVCgnPCcpCisgICAgICAgICAgICAgICAgUHNpVHlwZUVsZW1lbnQ6U3RyaW5nCisgICAgICAgICAgICAgICAgICBQc2lKYXZhQ29kZVJlZmVyZW5jZUVsZW1lbnQ6U3RyaW5nCisgICAgICAgICAgICAgICAgICAgIFBzaUlkZW50aWZpZXI6U3RyaW5nKCdTdHJpbmcnKQorICAgICAgICAgICAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOkdUKCc+JykKKyAgICAgICAgICAgICAgUHNpSWRlbnRpZmllcjpzb3J0KCdzb3J0JykKKyAgICAgICAgICAgIFBzaUV4cHJlc3Npb25MaXN0CisgICAgICAgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgICAgICAgIFBzaUxpdGVyYWxFeHByZXNzaW9uOm51bGwKKyAgICAgICAgICAgICAgICBQc2lKYXZhVG9rZW46TlVMTF9LRVlXT1JEKCdudWxsJykKKyAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgICAgICBQc2lKYXZhVG9rZW46U0VNSUNPTE9OKCc7JykKKyAgICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gICcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuJykKKyAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICAKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2V4cHJlc3Npb25QYXJzaW5nL1ByaW1pdGl2ZUFycmF5Q2xhc3NPYmplY3RBY2Nlc3NFcnJvci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9leHByZXNzaW9uUGFyc2luZy9QcmltaXRpdmVBcnJheUNsYXNzT2JqZWN0QWNjZXNzRXJyb3IuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYTQ2Y2YwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9leHByZXNzaW9uUGFyc2luZy9QcmltaXRpdmVBcnJheUNsYXNzT2JqZWN0QWNjZXNzRXJyb3IuamF2YQpAQCAtMCwwICsxLDUgQEAKK2NsYXNzIEMgeworICB7CisgICAgaW50W10uY2xhOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9leHByZXNzaW9uUGFyc2luZy9QcmltaXRpdmVBcnJheUNsYXNzT2JqZWN0QWNjZXNzRXJyb3IudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9leHByZXNzaW9uUGFyc2luZy9QcmltaXRpdmVBcnJheUNsYXNzT2JqZWN0QWNjZXNzRXJyb3IudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVjZTBkYzYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2V4cHJlc3Npb25QYXJzaW5nL1ByaW1pdGl2ZUFycmF5Q2xhc3NPYmplY3RBY2Nlc3NFcnJvci50eHQKQEAgLTAsMCArMSw0MyBAQAorUHNpSmF2YUZpbGU6UHJpbWl0aXZlQXJyYXlDbGFzc09iamVjdEFjY2Vzc0Vycm9yLmphdmEKKyAgUHNpSW1wb3J0TGlzdAorICAgIDxlbXB0eSBsaXN0PgorICBQc2lDbGFzczpDCisgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpS2V5d29yZDpjbGFzcygnY2xhc3MnKQorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUlkZW50aWZpZXI6QygnQycpCisgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAnKQorICAgIFBzaUNsYXNzSW5pdGlhbGl6ZXIKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAgICcpCisgICAgICAgIFBzaUV4cHJlc3Npb25TdGF0ZW1lbnQKKyAgICAgICAgICBQc2lSZWZlcmVuY2VFeHByZXNzaW9uOmludFtdLmNsYQorICAgICAgICAgICAgUHNpQ2xhc3NPYmplY3RBY2Nlc3NFeHByZXNzaW9uOmludFtdCisgICAgICAgICAgICAgIFBzaVR5cGVFbGVtZW50OmludFtdCisgICAgICAgICAgICAgICAgUHNpVHlwZUVsZW1lbnQ6aW50CisgICAgICAgICAgICAgICAgICBQc2lLZXl3b3JkOmludCgnaW50JykKKyAgICAgICAgICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNLRVQoJ1snKQorICAgICAgICAgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0tFVCgnXScpCisgICAgICAgICAgICAgIFBzaUVycm9yRWxlbWVudDouY2xhc3MgZXhwZWN0ZWQKKyAgICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICAgIFBzaUphdmFUb2tlbjpET1QoJy4nKQorICAgICAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICAgIFBzaUlkZW50aWZpZXI6Y2xhKCdjbGEnKQorICAgICAgICAgIFBzaUphdmFUb2tlbjpTRU1JQ09MT04oJzsnKQorICAgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4nKQorICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZXhwcmVzc2lvblBhcnNpbmcvUHJpbWl0aXZlQ2xhc3NPYmplY3RBY2Nlc3MuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZXhwcmVzc2lvblBhcnNpbmcvUHJpbWl0aXZlQ2xhc3NPYmplY3RBY2Nlc3MuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZDdkYzgzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9leHByZXNzaW9uUGFyc2luZy9QcmltaXRpdmVDbGFzc09iamVjdEFjY2Vzcy5qYXZhCkBAIC0wLDAgKzEsNSBAQAorY2xhc3MgQyB7CisgIHsKKyAgICBpbnQuY2xhc3M7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2V4cHJlc3Npb25QYXJzaW5nL1ByaW1pdGl2ZUNsYXNzT2JqZWN0QWNjZXNzLnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZXhwcmVzc2lvblBhcnNpbmcvUHJpbWl0aXZlQ2xhc3NPYmplY3RBY2Nlc3MudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM2NjRiYjAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2V4cHJlc3Npb25QYXJzaW5nL1ByaW1pdGl2ZUNsYXNzT2JqZWN0QWNjZXNzLnR4dApAQCAtMCwwICsxLDM1IEBACitQc2lKYXZhRmlsZTpQcmltaXRpdmVDbGFzc09iamVjdEFjY2Vzcy5qYXZhCisgIFBzaUltcG9ydExpc3QKKyAgICA8ZW1wdHkgbGlzdD4KKyAgUHNpQ2xhc3M6QworICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUtleXdvcmQ6Y2xhc3MoJ2NsYXNzJykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lJZGVudGlmaWVyOkMoJ0MnKQorICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgJykKKyAgICBQc2lDbGFzc0luaXRpYWxpemVyCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgICAnKQorICAgICAgICBQc2lFeHByZXNzaW9uU3RhdGVtZW50CisgICAgICAgICAgUHNpQ2xhc3NPYmplY3RBY2Nlc3NFeHByZXNzaW9uOmludC5jbGFzcworICAgICAgICAgICAgUHNpVHlwZUVsZW1lbnQ6aW50CisgICAgICAgICAgICAgIFBzaUtleXdvcmQ6aW50KCdpbnQnKQorICAgICAgICAgICAgUHNpSmF2YVRva2VuOkRPVCgnLicpCisgICAgICAgICAgICBQc2lLZXl3b3JkOmNsYXNzKCdjbGFzcycpCisgICAgICAgICAgUHNpSmF2YVRva2VuOlNFTUlDT0xPTignOycpCisgICAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAnKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcbicpCisgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9leHByZXNzaW9uUGFyc2luZy9QcmltaXRpdmVDbGFzc09iamVjdEFjY2Vzc0Vycm9yLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2V4cHJlc3Npb25QYXJzaW5nL1ByaW1pdGl2ZUNsYXNzT2JqZWN0QWNjZXNzRXJyb3IuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xOTZkNTg3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9leHByZXNzaW9uUGFyc2luZy9QcmltaXRpdmVDbGFzc09iamVjdEFjY2Vzc0Vycm9yLmphdmEKQEAgLTAsMCArMSw1IEBACitjbGFzcyBDIHsKKyAgeworICAgIGludC5jbGE7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2V4cHJlc3Npb25QYXJzaW5nL1ByaW1pdGl2ZUNsYXNzT2JqZWN0QWNjZXNzRXJyb3IudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9leHByZXNzaW9uUGFyc2luZy9QcmltaXRpdmVDbGFzc09iamVjdEFjY2Vzc0Vycm9yLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYzg2YmUyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9leHByZXNzaW9uUGFyc2luZy9QcmltaXRpdmVDbGFzc09iamVjdEFjY2Vzc0Vycm9yLnR4dApAQCAtMCwwICsxLDQwIEBACitQc2lKYXZhRmlsZTpQcmltaXRpdmVDbGFzc09iamVjdEFjY2Vzc0Vycm9yLmphdmEKKyAgUHNpSW1wb3J0TGlzdAorICAgIDxlbXB0eSBsaXN0PgorICBQc2lDbGFzczpDCisgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpS2V5d29yZDpjbGFzcygnY2xhc3MnKQorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUlkZW50aWZpZXI6QygnQycpCisgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAnKQorICAgIFBzaUNsYXNzSW5pdGlhbGl6ZXIKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAgICcpCisgICAgICAgIFBzaUV4cHJlc3Npb25TdGF0ZW1lbnQKKyAgICAgICAgICBQc2lSZWZlcmVuY2VFeHByZXNzaW9uOmludC5jbGEKKyAgICAgICAgICAgIFBzaUNsYXNzT2JqZWN0QWNjZXNzRXhwcmVzc2lvbjppbnQKKyAgICAgICAgICAgICAgUHNpVHlwZUVsZW1lbnQ6aW50CisgICAgICAgICAgICAgICAgUHNpS2V5d29yZDppbnQoJ2ludCcpCisgICAgICAgICAgICAgIFBzaUVycm9yRWxlbWVudDouY2xhc3MgZXhwZWN0ZWQKKyAgICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICAgIFBzaUphdmFUb2tlbjpET1QoJy4nKQorICAgICAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICAgIFBzaUlkZW50aWZpZXI6Y2xhKCdjbGEnKQorICAgICAgICAgIFBzaUphdmFUb2tlbjpTRU1JQ09MT04oJzsnKQorICAgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4nKQorICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZXhwcmVzc2lvblBhcnNpbmcvUXVhbGlmaWVkU3VwZXJNZXRob2RDYWxsLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2V4cHJlc3Npb25QYXJzaW5nL1F1YWxpZmllZFN1cGVyTWV0aG9kQ2FsbC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk3MTNhN2IKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2V4cHJlc3Npb25QYXJzaW5nL1F1YWxpZmllZFN1cGVyTWV0aG9kQ2FsbC5qYXZhCkBAIC0wLDAgKzEsNSBAQAorY2xhc3MgQyBleHRlbmRzIEQuRSB7CisgIEMoKSB7CisgICAgIG5ldyBEKCkuc3VwZXIoMCk7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2V4cHJlc3Npb25QYXJzaW5nL1F1YWxpZmllZFN1cGVyTWV0aG9kQ2FsbC50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2V4cHJlc3Npb25QYXJzaW5nL1F1YWxpZmllZFN1cGVyTWV0aG9kQ2FsbC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDJjYjExZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZXhwcmVzc2lvblBhcnNpbmcvUXVhbGlmaWVkU3VwZXJNZXRob2RDYWxsLnR4dApAQCAtMCwwICsxLDcxIEBACitQc2lKYXZhRmlsZTpRdWFsaWZpZWRTdXBlck1ldGhvZENhbGwuamF2YQorICBQc2lJbXBvcnRMaXN0CisgICAgPGVtcHR5IGxpc3Q+CisgIFBzaUNsYXNzOkMKKyAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lLZXl3b3JkOmNsYXNzKCdjbGFzcycpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSWRlbnRpZmllcjpDKCdDJykKKyAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgUHNpS2V5d29yZDpleHRlbmRzKCdleHRlbmRzJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSmF2YUNvZGVSZWZlcmVuY2VFbGVtZW50OkQuRQorICAgICAgICBQc2lKYXZhQ29kZVJlZmVyZW5jZUVsZW1lbnQ6RAorICAgICAgICAgIFBzaUlkZW50aWZpZXI6RCgnRCcpCisgICAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgIFBzaUphdmFUb2tlbjpET1QoJy4nKQorICAgICAgICBQc2lJZGVudGlmaWVyOkUoJ0UnKQorICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4gICcpCisgICAgUHNpTWV0aG9kOkMKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUlkZW50aWZpZXI6QygnQycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAgICAnKQorICAgICAgICBQc2lFeHByZXNzaW9uU3RhdGVtZW50CisgICAgICAgICAgUHNpTWV0aG9kQ2FsbEV4cHJlc3Npb246bmV3IEQoKS5zdXBlcigwKQorICAgICAgICAgICAgUHNpUmVmZXJlbmNlRXhwcmVzc2lvbjpuZXcgRCgpLnN1cGVyCisgICAgICAgICAgICAgIFBzaU5ld0V4cHJlc3Npb246bmV3IEQoKQorICAgICAgICAgICAgICAgIFBzaUtleXdvcmQ6bmV3KCduZXcnKQorICAgICAgICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICAgICAgICAgIFBzaUphdmFDb2RlUmVmZXJlbmNlRWxlbWVudDpECisgICAgICAgICAgICAgICAgICBQc2lJZGVudGlmaWVyOkQoJ0QnKQorICAgICAgICAgICAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICAgICAgICBQc2lFeHByZXNzaW9uTGlzdAorICAgICAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgICAgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICAgICAgICAgIFBzaUphdmFUb2tlbjpET1QoJy4nKQorICAgICAgICAgICAgICBQc2lLZXl3b3JkOnN1cGVyKCdzdXBlcicpCisgICAgICAgICAgICBQc2lFeHByZXNzaW9uTGlzdAorICAgICAgICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICAgICAgICBQc2lMaXRlcmFsRXhwcmVzc2lvbjowCisgICAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOklOVEVHRVJfTElURVJBTCgnMCcpCisgICAgICAgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICAgICAgUHNpSmF2YVRva2VuOlNFTUlDT0xPTignOycpCisgICAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAnKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcbicpCisgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9leHByZXNzaW9uUGFyc2luZy9RdWFsaWZpZWRTdXBlck1ldGhvZENhbGwxLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2V4cHJlc3Npb25QYXJzaW5nL1F1YWxpZmllZFN1cGVyTWV0aG9kQ2FsbDEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NTUzNDI1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9leHByZXNzaW9uUGFyc2luZy9RdWFsaWZpZWRTdXBlck1ldGhvZENhbGwxLmphdmEKQEAgLTAsMCArMSw1IEBACitjbGFzcyBDIGV4dGVuZHMgRC5FIHsKKyAgQyhEIGQpIHsKKyAgICAgZC5zdXBlcigwKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZXhwcmVzc2lvblBhcnNpbmcvUXVhbGlmaWVkU3VwZXJNZXRob2RDYWxsMS50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2V4cHJlc3Npb25QYXJzaW5nL1F1YWxpZmllZFN1cGVyTWV0aG9kQ2FsbDEudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZhYWMwZGUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2V4cHJlc3Npb25QYXJzaW5nL1F1YWxpZmllZFN1cGVyTWV0aG9kQ2FsbDEudHh0CkBAIC0wLDAgKzEsNzMgQEAKK1BzaUphdmFGaWxlOlF1YWxpZmllZFN1cGVyTWV0aG9kQ2FsbDEuamF2YQorICBQc2lJbXBvcnRMaXN0CisgICAgPGVtcHR5IGxpc3Q+CisgIFBzaUNsYXNzOkMKKyAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lLZXl3b3JkOmNsYXNzKCdjbGFzcycpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSWRlbnRpZmllcjpDKCdDJykKKyAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgUHNpS2V5d29yZDpleHRlbmRzKCdleHRlbmRzJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSmF2YUNvZGVSZWZlcmVuY2VFbGVtZW50OkQuRQorICAgICAgICBQc2lKYXZhQ29kZVJlZmVyZW5jZUVsZW1lbnQ6RAorICAgICAgICAgIFBzaUlkZW50aWZpZXI6RCgnRCcpCisgICAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgIFBzaUphdmFUb2tlbjpET1QoJy4nKQorICAgICAgICBQc2lJZGVudGlmaWVyOkUoJ0UnKQorICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4gICcpCisgICAgUHNpTWV0aG9kOkMKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUlkZW50aWZpZXI6QygnQycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OihEIGQpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaVBhcmFtZXRlcjpkCisgICAgICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgUHNpVHlwZUVsZW1lbnQ6RAorICAgICAgICAgICAgUHNpSmF2YUNvZGVSZWZlcmVuY2VFbGVtZW50OkQKKyAgICAgICAgICAgICAgUHNpSWRlbnRpZmllcjpEKCdEJykKKyAgICAgICAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICAgIFBzaUlkZW50aWZpZXI6ZCgnZCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAgICAnKQorICAgICAgICBQc2lFeHByZXNzaW9uU3RhdGVtZW50CisgICAgICAgICAgUHNpTWV0aG9kQ2FsbEV4cHJlc3Npb246ZC5zdXBlcigwKQorICAgICAgICAgICAgUHNpUmVmZXJlbmNlRXhwcmVzc2lvbjpkLnN1cGVyCisgICAgICAgICAgICAgIFBzaVJlZmVyZW5jZUV4cHJlc3Npb246ZAorICAgICAgICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgICAgICAgIFBzaUlkZW50aWZpZXI6ZCgnZCcpCisgICAgICAgICAgICAgIFBzaUphdmFUb2tlbjpET1QoJy4nKQorICAgICAgICAgICAgICBQc2lLZXl3b3JkOnN1cGVyKCdzdXBlcicpCisgICAgICAgICAgICBQc2lFeHByZXNzaW9uTGlzdAorICAgICAgICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICAgICAgICBQc2lMaXRlcmFsRXhwcmVzc2lvbjowCisgICAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOklOVEVHRVJfTElURVJBTCgnMCcpCisgICAgICAgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICAgICAgUHNpSmF2YVRva2VuOlNFTUlDT0xPTignOycpCisgICAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAnKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcbicpCisgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9leHByZXNzaW9uUGFyc2luZy9TaGlmdFJpZ2h0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2V4cHJlc3Npb25QYXJzaW5nL1NoaWZ0UmlnaHQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zOTM2NzNiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9leHByZXNzaW9uUGFyc2luZy9TaGlmdFJpZ2h0LmphdmEKQEAgLTAsMCArMSw1IEBACitjbGFzcyBUZXN0IHsKKyAgICBib29sZWFuIG1ldGhvZCgpIHsKKyAgICAgICAgeCA+Pj0gMjsKKyAgICB9Cit9IApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZXhwcmVzc2lvblBhcnNpbmcvU2hpZnRSaWdodC50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2V4cHJlc3Npb25QYXJzaW5nL1NoaWZ0UmlnaHQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmExZGY2ZjMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2V4cHJlc3Npb25QYXJzaW5nL1NoaWZ0UmlnaHQudHh0CkBAIC0wLDAgKzEsNTIgQEAKK1BzaUphdmFGaWxlOlNoaWZ0UmlnaHQuamF2YQorICBQc2lJbXBvcnRMaXN0CisgICAgPGVtcHR5IGxpc3Q+CisgIFBzaUNsYXNzOlRlc3QKKyAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lLZXl3b3JkOmNsYXNzKCdjbGFzcycpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSWRlbnRpZmllcjpUZXN0KCdUZXN0JykKKyAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4gICAgJykKKyAgICBQc2lNZXRob2Q6bWV0aG9kCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDpib29sZWFuCisgICAgICAgIFBzaUtleXdvcmQ6Ym9vbGVhbignYm9vbGVhbicpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6bWV0aG9kKCdtZXRob2QnKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgICAgICAgJykKKyAgICAgICAgUHNpRXhwcmVzc2lvblN0YXRlbWVudAorICAgICAgICAgIFBzaUFzc2lnbm1lbnRFeHByZXNzaW9uOnggPj49IDIKKyAgICAgICAgICAgIFBzaVJlZmVyZW5jZUV4cHJlc3Npb246eAorICAgICAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgICAgIFBzaUlkZW50aWZpZXI6eCgneCcpCisgICAgICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgICAgICAgIFBzaUphdmFUb2tlbjpHVEdURVEoJz4+PScpCisgICAgICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgICAgICAgIFBzaUxpdGVyYWxFeHByZXNzaW9uOjIKKyAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOklOVEVHRVJfTElURVJBTCgnMicpCisgICAgICAgICAgUHNpSmF2YVRva2VuOlNFTUlDT0xPTignOycpCisgICAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAgICcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuJykKKyAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2V4cHJlc3Npb25QYXJzaW5nL1N1cGVyTWV0aG9kQ2FsbFR5cGVQYXJhbWV0ZXJMaXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2V4cHJlc3Npb25QYXJzaW5nL1N1cGVyTWV0aG9kQ2FsbFR5cGVQYXJhbWV0ZXJMaXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWMxNWRkNAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZXhwcmVzc2lvblBhcnNpbmcvU3VwZXJNZXRob2RDYWxsVHlwZVBhcmFtZXRlckxpc3QuamF2YQpAQCAtMCwwICsxLDUgQEAKK2NsYXNzIEUgeworICAgIHZvaWQgZmZmKCkgeworICAgICAgICBzdXBlcigpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZXhwcmVzc2lvblBhcnNpbmcvU3VwZXJNZXRob2RDYWxsVHlwZVBhcmFtZXRlckxpc3QudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9leHByZXNzaW9uUGFyc2luZy9TdXBlck1ldGhvZENhbGxUeXBlUGFyYW1ldGVyTGlzdC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2ZkZjk2ZTkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2V4cHJlc3Npb25QYXJzaW5nL1N1cGVyTWV0aG9kQ2FsbFR5cGVQYXJhbWV0ZXJMaXN0LnR4dApAQCAtMCwwICsxLDUwIEBACitQc2lKYXZhRmlsZTpTdXBlck1ldGhvZENhbGxUeXBlUGFyYW1ldGVyTGlzdC5qYXZhCisgIFBzaUltcG9ydExpc3QKKyAgICA8ZW1wdHkgbGlzdD4KKyAgUHNpQ2xhc3M6RQorICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUtleXdvcmQ6Y2xhc3MoJ2NsYXNzJykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lJZGVudGlmaWVyOkUoJ0UnKQorICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgICAnKQorICAgIFBzaU1ldGhvZDpmZmYKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmZmYoJ2ZmZicpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAgICAgICAnKQorICAgICAgICBQc2lFeHByZXNzaW9uU3RhdGVtZW50CisgICAgICAgICAgUHNpTWV0aG9kQ2FsbEV4cHJlc3Npb246c3VwZXIoKQorICAgICAgICAgICAgUHNpUmVmZXJlbmNlRXhwcmVzc2lvbjpzdXBlcgorICAgICAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgICAgIFBzaUtleXdvcmQ6c3VwZXIoJ3N1cGVyJykKKyAgICAgICAgICAgIFBzaUV4cHJlc3Npb25MaXN0CisgICAgICAgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICAgICAgUHNpSmF2YVRva2VuOlNFTUlDT0xPTignOycpCisgICAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAgICcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuJykKKyAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2V4cHJlc3Npb25QYXJzaW5nL1hvcjAuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZXhwcmVzc2lvblBhcnNpbmcvWG9yMC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFjNzJlMmIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2V4cHJlc3Npb25QYXJzaW5nL1hvcjAuamF2YQpAQCAtMCwwICsxLDUgQEAKK2NsYXNzIEZvb3sKKyAgeworICAgIHJldHVybiBhIF4gYiBeIGM7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2V4cHJlc3Npb25QYXJzaW5nL1hvcjAudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9leHByZXNzaW9uUGFyc2luZy9Yb3IwLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZDkzMDM2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9leHByZXNzaW9uUGFyc2luZy9Yb3IwLnR4dApAQCAtMCwwICsxLDUwIEBACitQc2lKYXZhRmlsZTpYb3IwLmphdmEKKyAgUHNpSW1wb3J0TGlzdAorICAgIDxlbXB0eSBsaXN0PgorICBQc2lDbGFzczpGb28KKyAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lLZXl3b3JkOmNsYXNzKCdjbGFzcycpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSWRlbnRpZmllcjpGb28oJ0ZvbycpCisgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAnKQorICAgIFBzaUNsYXNzSW5pdGlhbGl6ZXIKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAgICcpCisgICAgICAgIFBzaVJldHVyblN0YXRlbWVudAorICAgICAgICAgIFBzaUtleXdvcmQ6cmV0dXJuKCdyZXR1cm4nKQorICAgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICAgIFBzaVBvbHlhZGljRXhwcmVzc2lvbjogYSBeIGIgXiBjCisgICAgICAgICAgICBQc2lSZWZlcmVuY2VFeHByZXNzaW9uOmEKKyAgICAgICAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgICAgICBQc2lJZGVudGlmaWVyOmEoJ2EnKQorICAgICAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgICAgICBQc2lKYXZhVG9rZW46WE9SKCdeJykKKyAgICAgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICAgICAgUHNpUmVmZXJlbmNlRXhwcmVzc2lvbjpiCisgICAgICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICAgICAgUHNpSWRlbnRpZmllcjpiKCdiJykKKyAgICAgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICAgICAgUHNpSmF2YVRva2VuOlhPUignXicpCisgICAgICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgICAgICAgIFBzaVJlZmVyZW5jZUV4cHJlc3Npb246YworICAgICAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgICAgIFBzaUlkZW50aWZpZXI6YygnYycpCisgICAgICAgICAgUHNpSmF2YVRva2VuOlNFTUlDT0xPTignOycpCisgICAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAnKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcbicpCisgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2V4cHJlc3Npb25QYXJzaW5nL1hvcjEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZXhwcmVzc2lvblBhcnNpbmcvWG9yMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZlZDkzYTkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2V4cHJlc3Npb25QYXJzaW5nL1hvcjEuamF2YQpAQCAtMCwwICsxLDUgQEAKK2NsYXNzIEZvb3sKKyAgeworICAgICBhIF4KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvZXhwcmVzc2lvblBhcnNpbmcvWG9yMS50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2V4cHJlc3Npb25QYXJzaW5nL1hvcjEudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZiNjgxMTIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2V4cHJlc3Npb25QYXJzaW5nL1hvcjEudHh0CkBAIC0wLDAgKzEsMzkgQEAKK1BzaUphdmFGaWxlOlhvcjEuamF2YQorICBQc2lJbXBvcnRMaXN0CisgICAgPGVtcHR5IGxpc3Q+CisgIFBzaUNsYXNzOkZvbworICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUtleXdvcmQ6Y2xhc3MoJ2NsYXNzJykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lJZGVudGlmaWVyOkZvbygnRm9vJykKKyAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4gICcpCisgICAgUHNpQ2xhc3NJbml0aWFsaXplcgorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gICAgICcpCisgICAgICAgIFBzaUV4cHJlc3Npb25TdGF0ZW1lbnQKKyAgICAgICAgICBQc2lCaW5hcnlFeHByZXNzaW9uOmEgXgorICAgICAgICAgICAgUHNpUmVmZXJlbmNlRXhwcmVzc2lvbjphCisgICAgICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICAgICAgUHNpSWRlbnRpZmllcjphKCdhJykKKyAgICAgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICAgICAgUHNpSmF2YVRva2VuOlhPUignXicpCisgICAgICAgICAgICBQc2lFcnJvckVsZW1lbnQ6RXhwcmVzc2lvbiBleHBlY3RlZAorICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICBQc2lFcnJvckVsZW1lbnQ6JzsnIGV4cGVjdGVkCisgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gICcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuJykKKyAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2ltcG9ydFBhcnNpbmcvU3RhdGljSW1wb3J0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2ltcG9ydFBhcnNpbmcvU3RhdGljSW1wb3J0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzg4YmVhYwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvaW1wb3J0UGFyc2luZy9TdGF0aWNJbXBvcnQuamF2YQpAQCAtMCwwICsxIEBACitpbXBvcnQgc3RhdGljIGphdmEudXRpbC5BcnJheXMuKjsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2ltcG9ydFBhcnNpbmcvU3RhdGljSW1wb3J0LnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvaW1wb3J0UGFyc2luZy9TdGF0aWNJbXBvcnQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlkYzM4NjIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2ltcG9ydFBhcnNpbmcvU3RhdGljSW1wb3J0LnR4dApAQCAtMCwwICsxLDI0IEBACitQc2lKYXZhRmlsZTpTdGF0aWNJbXBvcnQuamF2YQorICBQc2lJbXBvcnRMaXN0CisgICAgUHNpSW1wb3J0U3RhdGljU3RhdGVtZW50CisgICAgICBQc2lLZXl3b3JkOmltcG9ydCgnaW1wb3J0JykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpS2V5d29yZDpzdGF0aWMoJ3N0YXRpYycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUphdmFDb2RlUmVmZXJlbmNlRWxlbWVudDpqYXZhLnV0aWwuQXJyYXlzCisgICAgICAgIFBzaUphdmFDb2RlUmVmZXJlbmNlRWxlbWVudDpqYXZhLnV0aWwKKyAgICAgICAgICBQc2lKYXZhQ29kZVJlZmVyZW5jZUVsZW1lbnQ6amF2YQorICAgICAgICAgICAgUHNpSWRlbnRpZmllcjpqYXZhKCdqYXZhJykKKyAgICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgUHNpSmF2YVRva2VuOkRPVCgnLicpCisgICAgICAgICAgUHNpSWRlbnRpZmllcjp1dGlsKCd1dGlsJykKKyAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgUHNpSmF2YVRva2VuOkRPVCgnLicpCisgICAgICAgIFBzaUlkZW50aWZpZXI6QXJyYXlzKCdBcnJheXMnKQorICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lKYXZhVG9rZW46RE9UKCcuJykKKyAgICAgIFBzaUphdmFUb2tlbjpBU1RFUklTSygnKicpCisgICAgICBQc2lKYXZhVG9rZW46U0VNSUNPTE9OKCc7JykKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2ltcG9ydFBhcnNpbmcvU3RhdGljSW1wb3J0MS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9pbXBvcnRQYXJzaW5nL1N0YXRpY0ltcG9ydDEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNWE4MGE4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9pbXBvcnRQYXJzaW5nL1N0YXRpY0ltcG9ydDEuamF2YQpAQCAtMCwwICsxIEBACitpbXBvcnQgc3RhdGljIGphdmEudXRpbC5BcnJheXMuc29ydDsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2ltcG9ydFBhcnNpbmcvU3RhdGljSW1wb3J0MS50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2ltcG9ydFBhcnNpbmcvU3RhdGljSW1wb3J0MS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGU1YWVlOAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvaW1wb3J0UGFyc2luZy9TdGF0aWNJbXBvcnQxLnR4dApAQCAtMCwwICsxLDI3IEBACitQc2lKYXZhRmlsZTpTdGF0aWNJbXBvcnQxLmphdmEKKyAgUHNpSW1wb3J0TGlzdAorICAgIFBzaUltcG9ydFN0YXRpY1N0YXRlbWVudAorICAgICAgUHNpS2V5d29yZDppbXBvcnQoJ2ltcG9ydCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUtleXdvcmQ6c3RhdGljKCdzdGF0aWMnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJbXBvcnRTdGF0aWNSZWZlcmVuY2VFbGVtZW50OmphdmEudXRpbC5BcnJheXMuc29ydAorICAgICAgICBQc2lKYXZhQ29kZVJlZmVyZW5jZUVsZW1lbnQ6amF2YS51dGlsLkFycmF5cworICAgICAgICAgIFBzaUphdmFDb2RlUmVmZXJlbmNlRWxlbWVudDpqYXZhLnV0aWwKKyAgICAgICAgICAgIFBzaUphdmFDb2RlUmVmZXJlbmNlRWxlbWVudDpqYXZhCisgICAgICAgICAgICAgIFBzaUlkZW50aWZpZXI6amF2YSgnamF2YScpCisgICAgICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICAgIFBzaUphdmFUb2tlbjpET1QoJy4nKQorICAgICAgICAgICAgUHNpSWRlbnRpZmllcjp1dGlsKCd1dGlsJykKKyAgICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgUHNpSmF2YVRva2VuOkRPVCgnLicpCisgICAgICAgICAgUHNpSWRlbnRpZmllcjpBcnJheXMoJ0FycmF5cycpCisgICAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgIFBzaUphdmFUb2tlbjpET1QoJy4nKQorICAgICAgICBQc2lJZGVudGlmaWVyOnNvcnQoJ3NvcnQnKQorICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lKYXZhVG9rZW46U0VNSUNPTE9OKCc7JykKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2ltcG9ydFBhcnNpbmcvVW5jbG9zZWQwLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2ltcG9ydFBhcnNpbmcvVW5jbG9zZWQwLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWZjYTk5NgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvaW1wb3J0UGFyc2luZy9VbmNsb3NlZDAuamF2YQpAQCAtMCwwICsxIEBACitpbXBvcnQKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2ltcG9ydFBhcnNpbmcvVW5jbG9zZWQwLnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvaW1wb3J0UGFyc2luZy9VbmNsb3NlZDAudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlmOWE0MjcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2ltcG9ydFBhcnNpbmcvVW5jbG9zZWQwLnR4dApAQCAtMCwwICsxLDYgQEAKK1BzaUphdmFGaWxlOlVuY2xvc2VkMC5qYXZhCisgIFBzaUltcG9ydExpc3QKKyAgICBQc2lJbXBvcnRTdGF0ZW1lbnQKKyAgICAgIFBzaUtleXdvcmQ6aW1wb3J0KCdpbXBvcnQnKQorICAgICAgUHNpRXJyb3JFbGVtZW50OklkZW50aWZpZXIgZXhwZWN0ZWQKKyAgICAgICAgPGVtcHR5IGxpc3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9pbXBvcnRQYXJzaW5nL1VuY2xvc2VkMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9pbXBvcnRQYXJzaW5nL1VuY2xvc2VkMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE0NWUzZDEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2ltcG9ydFBhcnNpbmcvVW5jbG9zZWQxLmphdmEKQEAgLTAsMCArMSBAQAoraW1wb3J0IGphdmEuYXd0LioKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2ltcG9ydFBhcnNpbmcvVW5jbG9zZWQxLnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvaW1wb3J0UGFyc2luZy9VbmNsb3NlZDEudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJhMzI0NjYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2ltcG9ydFBhcnNpbmcvVW5jbG9zZWQxLnR4dApAQCAtMCwwICsxLDE4IEBACitQc2lKYXZhRmlsZTpVbmNsb3NlZDEuamF2YQorICBQc2lJbXBvcnRMaXN0CisgICAgUHNpSW1wb3J0U3RhdGVtZW50CisgICAgICBQc2lLZXl3b3JkOmltcG9ydCgnaW1wb3J0JykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSmF2YUNvZGVSZWZlcmVuY2VFbGVtZW50OmphdmEuYXd0CisgICAgICAgIFBzaUphdmFDb2RlUmVmZXJlbmNlRWxlbWVudDpqYXZhCisgICAgICAgICAgUHNpSWRlbnRpZmllcjpqYXZhKCdqYXZhJykKKyAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgUHNpSmF2YVRva2VuOkRPVCgnLicpCisgICAgICAgIFBzaUlkZW50aWZpZXI6YXd0KCdhd3QnKQorICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lKYXZhVG9rZW46RE9UKCcuJykKKyAgICAgIFBzaUphdmFUb2tlbjpBU1RFUklTSygnKicpCisgICAgICBQc2lFcnJvckVsZW1lbnQ6JzsnIGV4cGVjdGVkCisgICAgICAgIDxlbXB0eSBsaXN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvaW1wb3J0UGFyc2luZy9VbmNsb3NlZDIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvaW1wb3J0UGFyc2luZy9VbmNsb3NlZDIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jM2QyMDU2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9pbXBvcnRQYXJzaW5nL1VuY2xvc2VkMi5qYXZhCkBAIC0wLDAgKzEgQEAKK2ltcG9ydCBqYXZhLmF3dC4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2ltcG9ydFBhcnNpbmcvVW5jbG9zZWQyLnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvaW1wb3J0UGFyc2luZy9VbmNsb3NlZDIudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU1MGVhM2UKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2ltcG9ydFBhcnNpbmcvVW5jbG9zZWQyLnR4dApAQCAtMCwwICsxLDE3IEBACitQc2lKYXZhRmlsZTpVbmNsb3NlZDIuamF2YQorICBQc2lJbXBvcnRMaXN0CisgICAgUHNpSW1wb3J0U3RhdGVtZW50CisgICAgICBQc2lLZXl3b3JkOmltcG9ydCgnaW1wb3J0JykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSmF2YUNvZGVSZWZlcmVuY2VFbGVtZW50OmphdmEuYXd0CisgICAgICAgIFBzaUphdmFDb2RlUmVmZXJlbmNlRWxlbWVudDpqYXZhCisgICAgICAgICAgUHNpSWRlbnRpZmllcjpqYXZhKCdqYXZhJykKKyAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgUHNpSmF2YVRva2VuOkRPVCgnLicpCisgICAgICAgIFBzaUlkZW50aWZpZXI6YXd0KCdhd3QnKQorICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lKYXZhVG9rZW46RE9UKCcuJykKKyAgICAgIFBzaUVycm9yRWxlbWVudDpJZGVudGlmaWVyIG9yICcqJyBleHBlY3RlZAorICAgICAgICA8ZW1wdHkgbGlzdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2phdmFkb2NQYXJzaW5nL0FkamFjZW50MDEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvamF2YWRvY1BhcnNpbmcvQWRqYWNlbnQwMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU3MGE2ZjYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2phdmFkb2NQYXJzaW5nL0FkamFjZW50MDEuamF2YQpAQCAtMCwwICsxLDUgQEAKKy8qKgorICogbmFtZXtuYW1lfSBhYmN7fWRmZworICovCitjbGFzcyBYe30KKyAKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvamF2YWRvY1BhcnNpbmcvQWRqYWNlbnQwMS50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2phdmFkb2NQYXJzaW5nL0FkamFjZW50MDEudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA1MDIzMjIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2phdmFkb2NQYXJzaW5nL0FkamFjZW50MDEudHh0CkBAIC0wLDAgKzEsMzIgQEAKK1BzaUphdmFGaWxlOkFkamFjZW50MDEuamF2YQorICBQc2lJbXBvcnRMaXN0CisgICAgPGVtcHR5IGxpc3Q+CisgIFBzaUNsYXNzOlgKKyAgICBQc2lEb2NDb21tZW50CisgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9MRUFESU5HX0FTVEVSSVNLUygnKicpCisgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9EQVRBKCcgbmFtZScpCisgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9EQVRBKCd7JykKKyAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0RBVEEoJ25hbWUnKQorICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfREFUQSgnfScpCisgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9EQVRBKCcgYWJjJykKKyAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0RBVEEoJ3snKQorICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfREFUQSgnfScpCisgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9EQVRBKCdkZmcnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuJykKKyAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lLZXl3b3JkOmNsYXNzKCdjbGFzcycpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSWRlbnRpZmllcjpYKCdYJykKKyAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9qYXZhZG9jUGFyc2luZy9FeGNlcHRpb24wLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2phdmFkb2NQYXJzaW5nL0V4Y2VwdGlvbjAuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NWNhZWY3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9qYXZhZG9jUGFyc2luZy9FeGNlcHRpb24wLmphdmEKQEAgLTAsMCArMSw2IEBACitjbGFzcyBUZXN0IHsKKyAgICAvKioKKyAgICAgKiAgQHRocm93cyBqYXZhLmxhbmcuRXhjZXB0aW9uCisgICAgICovCisgICAgIHB1YmxpYyB2b2lkIGZvbygpIHt9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9qYXZhZG9jUGFyc2luZy9FeGNlcHRpb24wLnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvamF2YWRvY1BhcnNpbmcvRXhjZXB0aW9uMC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjM5MzU2NgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvamF2YWRvY1BhcnNpbmcvRXhjZXB0aW9uMC50eHQKQEAgLTAsMCArMSw2NiBAQAorUHNpSmF2YUZpbGU6RXhjZXB0aW9uMC5qYXZhCisgIFBzaUltcG9ydExpc3QKKyAgICA8ZW1wdHkgbGlzdD4KKyAgUHNpQ2xhc3M6VGVzdAorICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUtleXdvcmQ6Y2xhc3MoJ2NsYXNzJykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lJZGVudGlmaWVyOlRlc3QoJ1Rlc3QnKQorICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgICAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAgICAnKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9MRUFESU5HX0FTVEVSSVNLUygnKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0RBVEEoJyAgJykKKyAgICAgICAgUHNpRG9jVGFnOkB0aHJvd3MKKyAgICAgICAgICBQc2lEb2NUb2tlbjpET0NfVEFHX05BTUUoJ0B0aHJvd3MnKQorICAgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICAgIFBzaUVsZW1lbnQoRE9DX1RBR19WQUxVRV9FTEVNRU5UKQorICAgICAgICAgICAgUHNpRWxlbWVudChET0NfUkVGRVJFTkNFX0hPTERFUikKKyAgICAgICAgICAgICAgUHNpSmF2YUNvZGVSZWZlcmVuY2VFbGVtZW50OmphdmEubGFuZy5FeGNlcHRpb24KKyAgICAgICAgICAgICAgICBQc2lKYXZhQ29kZVJlZmVyZW5jZUVsZW1lbnQ6amF2YS5sYW5nCisgICAgICAgICAgICAgICAgICBQc2lKYXZhQ29kZVJlZmVyZW5jZUVsZW1lbnQ6amF2YQorICAgICAgICAgICAgICAgICAgICBQc2lJZGVudGlmaWVyOmphdmEoJ2phdmEnKQorICAgICAgICAgICAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgICAgICAgICBQc2lKYXZhVG9rZW46RE9UKCcuJykKKyAgICAgICAgICAgICAgICAgIFBzaUlkZW50aWZpZXI6bGFuZygnbGFuZycpCisgICAgICAgICAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgICAgICAgIFBzaUphdmFUb2tlbjpET1QoJy4nKQorICAgICAgICAgICAgICAgIFBzaUlkZW50aWZpZXI6RXhjZXB0aW9uKCdFeGNlcHRpb24nKQorICAgICAgICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgICAgJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgICAgJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDpwdWJsaWMKKyAgICAgICAgUHNpS2V5d29yZDpwdWJsaWMoJ3B1YmxpYycpCisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4nKQorICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvamF2YWRvY1BhcnNpbmcvSURFQURFVl80MTQwMy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9qYXZhZG9jUGFyc2luZy9JREVBREVWXzQxNDAzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2YxNTc2MwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvamF2YWRvY1BhcnNpbmcvSURFQURFVl80MTQwMy5qYXZhCkBAIC0wLDAgKzEsOCBAQAorcHVibGljIGNsYXNzIEJhciB7CisvLyBDb21tZW50CisvKioKK2phdmFkb2MKKyovCitwdWJsaWMgY2xhc3MgRm9vIHsKK30KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvamF2YWRvY1BhcnNpbmcvSURFQURFVl80MTQwMy50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2phdmFkb2NQYXJzaW5nL0lERUFERVZfNDE0MDMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE4NmVlMTEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2phdmFkb2NQYXJzaW5nL0lERUFERVZfNDE0MDMudHh0CkBAIC0wLDAgKzEsNDcgQEAKK1BzaUphdmFGaWxlOklERUFERVZfNDE0MDMuamF2YQorICBQc2lJbXBvcnRMaXN0CisgICAgPGVtcHR5IGxpc3Q+CisgIFBzaUNsYXNzOkJhcgorICAgIFBzaU1vZGlmaWVyTGlzdDpwdWJsaWMKKyAgICAgIFBzaUtleXdvcmQ6cHVibGljKCdwdWJsaWMnKQorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUtleXdvcmQ6Y2xhc3MoJ2NsYXNzJykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lJZGVudGlmaWVyOkJhcignQmFyJykKKyAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4nKQorICAgIFBzaUNvbW1lbnQoRU5EX09GX0xJTkVfQ09NTUVOVCkoJy8vIENvbW1lbnQnKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuJykKKyAgICBQc2lDbGFzczpGb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfREFUQSgnamF2YWRvYycpCisgICAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbicpCisgICAgICBQc2lNb2RpZmllckxpc3Q6cHVibGljCisgICAgICAgIFBzaUtleXdvcmQ6cHVibGljKCdwdWJsaWMnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lLZXl3b3JkOmNsYXNzKCdjbGFzcycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Rm9vKCdGb28nKQorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbicpCisgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcbicpCisgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9qYXZhZG9jUGFyc2luZy9JbmxpbmVUYWcwLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2phdmFkb2NQYXJzaW5nL0lubGluZVRhZzAuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NWE5MGIyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9qYXZhZG9jUGFyc2luZy9JbmxpbmVUYWcwLmphdmEKQEAgLTAsMCArMSw0IEBACisvKioKKyAqIFRleHQgVGV4dCB7QGxpbmsgc29tZSB0YWd9CisgKi8KK2NsYXNzIEN7fQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvamF2YWRvY1BhcnNpbmcvSW5saW5lVGFnMC50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2phdmFkb2NQYXJzaW5nL0lubGluZVRhZzAudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFiMWM5MGIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2phdmFkb2NQYXJzaW5nL0lubGluZVRhZzAudHh0CkBAIC0wLDAgKzEsMzcgQEAKK1BzaUphdmFGaWxlOklubGluZVRhZzAuamF2YQorICBQc2lJbXBvcnRMaXN0CisgICAgPGVtcHR5IGxpc3Q+CisgIFBzaUNsYXNzOkMKKyAgICBQc2lEb2NDb21tZW50CisgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9MRUFESU5HX0FTVEVSSVNLUygnKicpCisgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9EQVRBKCcgVGV4dCBUZXh0ICcpCisgICAgICBQc2lJbmxpbmVEb2NUYWc6QGxpbmsKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0lOTElORV9UQUdfU1RBUlQoJ3snKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfVEFHX05BTUUoJ0BsaW5rJykKKyAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgIFBzaUVsZW1lbnQoRE9DX1JFRkVSRU5DRV9IT0xERVIpCisgICAgICAgICAgUHNpSmF2YUNvZGVSZWZlcmVuY2VFbGVtZW50OnNvbWUKKyAgICAgICAgICAgIFBzaUlkZW50aWZpZXI6c29tZSgnc29tZScpCisgICAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfREFUQSgndGFnJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0lOTElORV9UQUdfRU5EKCd9JykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcbicpCisgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpS2V5d29yZDpjbGFzcygnY2xhc3MnKQorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUlkZW50aWZpZXI6QygnQycpCisgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvamF2YWRvY1BhcnNpbmcvSW5saW5lVGFnMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9qYXZhZG9jUGFyc2luZy9JbmxpbmVUYWcxLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmI0OGY3ZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvamF2YWRvY1BhcnNpbmcvSW5saW5lVGFnMS5qYXZhCkBAIC0wLDAgKzEsNSBAQAorLyoqCisgKiBUZXh0IFRleHQge0BsaW5rICNzb21lZnVuYyhTdHJpbmcsCisgKiBTdHJpbmcsIFN0cmluZyl9CisgKi8KK2NsYXNzIEN7fQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvamF2YWRvY1BhcnNpbmcvSW5saW5lVGFnMS50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2phdmFkb2NQYXJzaW5nL0lubGluZVRhZzEudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE5NzVkNmEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2phdmFkb2NQYXJzaW5nL0lubGluZVRhZzEudHh0CkBAIC0wLDAgKzEsNjAgQEAKK1BzaUphdmFGaWxlOklubGluZVRhZzEuamF2YQorICBQc2lJbXBvcnRMaXN0CisgICAgPGVtcHR5IGxpc3Q+CisgIFBzaUNsYXNzOkMKKyAgICBQc2lEb2NDb21tZW50CisgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9MRUFESU5HX0FTVEVSSVNLUygnKicpCisgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9EQVRBKCcgVGV4dCBUZXh0ICcpCisgICAgICBQc2lJbmxpbmVEb2NUYWc6QGxpbmsKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0lOTElORV9UQUdfU1RBUlQoJ3snKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfVEFHX05BTUUoJ0BsaW5rJykKKyAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgIFBzaUVsZW1lbnQoRE9DX01FVEhPRF9PUl9GSUVMRF9SRUYpCisgICAgICAgICAgUHNpRG9jVG9rZW46RE9DX1RBR19WQUxVRV9TSEFSUF9UT0tFTignIycpCisgICAgICAgICAgUHNpRG9jVG9rZW46RE9DX1RBR19WQUxVRV9UT0tFTignc29tZWZ1bmMnKQorICAgICAgICAgIFBzaURvY1Rva2VuOkRPQ19UQUdfVkFMVUVfTFBBUkVOKCcoJykKKyAgICAgICAgICBQc2lFbGVtZW50KERPQ19UQUdfVkFMVUVfRUxFTUVOVCkKKyAgICAgICAgICAgIFBzaUVsZW1lbnQoRE9DX1RZUEVfSE9MREVSKQorICAgICAgICAgICAgICBQc2lUeXBlRWxlbWVudDpTdHJpbmcKKyAgICAgICAgICAgICAgICBQc2lKYXZhQ29kZVJlZmVyZW5jZUVsZW1lbnQ6U3RyaW5nCisgICAgICAgICAgICAgICAgICBQc2lJZGVudGlmaWVyOlN0cmluZygnU3RyaW5nJykKKyAgICAgICAgICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgICBQc2lEb2NUb2tlbjpET0NfVEFHX1ZBTFVFX0NPTU1BKCcsJykKKyAgICAgICAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9MRUFESU5HX0FTVEVSSVNLUygnKicpCisgICAgICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgICAgICAgIFBzaUVsZW1lbnQoRE9DX1RZUEVfSE9MREVSKQorICAgICAgICAgICAgICBQc2lUeXBlRWxlbWVudDpTdHJpbmcKKyAgICAgICAgICAgICAgICBQc2lKYXZhQ29kZVJlZmVyZW5jZUVsZW1lbnQ6U3RyaW5nCisgICAgICAgICAgICAgICAgICBQc2lJZGVudGlmaWVyOlN0cmluZygnU3RyaW5nJykKKyAgICAgICAgICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgICBQc2lEb2NUb2tlbjpET0NfVEFHX1ZBTFVFX0NPTU1BKCcsJykKKyAgICAgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICAgICAgUHNpRWxlbWVudChET0NfVFlQRV9IT0xERVIpCisgICAgICAgICAgICAgIFBzaVR5cGVFbGVtZW50OlN0cmluZworICAgICAgICAgICAgICAgIFBzaUphdmFDb2RlUmVmZXJlbmNlRWxlbWVudDpTdHJpbmcKKyAgICAgICAgICAgICAgICAgIFBzaUlkZW50aWZpZXI6U3RyaW5nKCdTdHJpbmcnKQorICAgICAgICAgICAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICBQc2lEb2NUb2tlbjpET0NfVEFHX1ZBTFVFX1JQQVJFTignKScpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19JTkxJTkVfVEFHX0VORCgnfScpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4nKQorICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUtleXdvcmQ6Y2xhc3MoJ2NsYXNzJykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lJZGVudGlmaWVyOkMoJ0MnKQorICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2phdmFkb2NQYXJzaW5nL0lubGluZVRhZzIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvamF2YWRvY1BhcnNpbmcvSW5saW5lVGFnMi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU3MTVlYTkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2phdmFkb2NQYXJzaW5nL0lubGluZVRhZzIuamF2YQpAQCAtMCwwICsxLDQgQEAKKy8qKgorICogVGV4dCBUZXh0IHtAbGluayAjc29tZWZ1bmMoU3RyaW5nLCBTdHJpbmcsIFN0cmluZyl9CisgKi8KK2NsYXNzIEN7fQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvamF2YWRvY1BhcnNpbmcvSW5saW5lVGFnMi50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2phdmFkb2NQYXJzaW5nL0lubGluZVRhZzIudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkxNjViODkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2phdmFkb2NQYXJzaW5nL0lubGluZVRhZzIudHh0CkBAIC0wLDAgKzEsNTggQEAKK1BzaUphdmFGaWxlOklubGluZVRhZzIuamF2YQorICBQc2lJbXBvcnRMaXN0CisgICAgPGVtcHR5IGxpc3Q+CisgIFBzaUNsYXNzOkMKKyAgICBQc2lEb2NDb21tZW50CisgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9MRUFESU5HX0FTVEVSSVNLUygnKicpCisgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9EQVRBKCcgVGV4dCBUZXh0ICcpCisgICAgICBQc2lJbmxpbmVEb2NUYWc6QGxpbmsKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0lOTElORV9UQUdfU1RBUlQoJ3snKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfVEFHX05BTUUoJ0BsaW5rJykKKyAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgIFBzaUVsZW1lbnQoRE9DX01FVEhPRF9PUl9GSUVMRF9SRUYpCisgICAgICAgICAgUHNpRG9jVG9rZW46RE9DX1RBR19WQUxVRV9TSEFSUF9UT0tFTignIycpCisgICAgICAgICAgUHNpRG9jVG9rZW46RE9DX1RBR19WQUxVRV9UT0tFTignc29tZWZ1bmMnKQorICAgICAgICAgIFBzaURvY1Rva2VuOkRPQ19UQUdfVkFMVUVfTFBBUkVOKCcoJykKKyAgICAgICAgICBQc2lFbGVtZW50KERPQ19UQUdfVkFMVUVfRUxFTUVOVCkKKyAgICAgICAgICAgIFBzaUVsZW1lbnQoRE9DX1RZUEVfSE9MREVSKQorICAgICAgICAgICAgICBQc2lUeXBlRWxlbWVudDpTdHJpbmcKKyAgICAgICAgICAgICAgICBQc2lKYXZhQ29kZVJlZmVyZW5jZUVsZW1lbnQ6U3RyaW5nCisgICAgICAgICAgICAgICAgICBQc2lJZGVudGlmaWVyOlN0cmluZygnU3RyaW5nJykKKyAgICAgICAgICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgICBQc2lEb2NUb2tlbjpET0NfVEFHX1ZBTFVFX0NPTU1BKCcsJykKKyAgICAgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICAgICAgUHNpRWxlbWVudChET0NfVFlQRV9IT0xERVIpCisgICAgICAgICAgICAgIFBzaVR5cGVFbGVtZW50OlN0cmluZworICAgICAgICAgICAgICAgIFBzaUphdmFDb2RlUmVmZXJlbmNlRWxlbWVudDpTdHJpbmcKKyAgICAgICAgICAgICAgICAgIFBzaUlkZW50aWZpZXI6U3RyaW5nKCdTdHJpbmcnKQorICAgICAgICAgICAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICAgIFBzaURvY1Rva2VuOkRPQ19UQUdfVkFMVUVfQ09NTUEoJywnKQorICAgICAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgICAgICBQc2lFbGVtZW50KERPQ19UWVBFX0hPTERFUikKKyAgICAgICAgICAgICAgUHNpVHlwZUVsZW1lbnQ6U3RyaW5nCisgICAgICAgICAgICAgICAgUHNpSmF2YUNvZGVSZWZlcmVuY2VFbGVtZW50OlN0cmluZworICAgICAgICAgICAgICAgICAgUHNpSWRlbnRpZmllcjpTdHJpbmcoJ1N0cmluZycpCisgICAgICAgICAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgIFBzaURvY1Rva2VuOkRPQ19UQUdfVkFMVUVfUlBBUkVOKCcpJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0lOTElORV9UQUdfRU5EKCd9JykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcbicpCisgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpS2V5d29yZDpjbGFzcygnY2xhc3MnKQorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUlkZW50aWZpZXI6QygnQycpCisgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvamF2YWRvY1BhcnNpbmcvSW5saW5lVGFnMy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9qYXZhZG9jUGFyc2luZy9JbmxpbmVUYWczLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjAzYmVmMAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvamF2YWRvY1BhcnNpbmcvSW5saW5lVGFnMy5qYXZhCkBAIC0wLDAgKzEsNCBAQAorLyoqCisgKiBUZXh0IFRleHQge0BsaW5rICNzb21lZnVuYyhTdHJpbmcsIFN0cmluZywgU3RyaW5nKSB7fXt7e0lubmVyIGJyYWNlc319IH19CisgKi8KK2NsYXNzIEN7fQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9qYXZhZG9jUGFyc2luZy9JbmxpbmVUYWczLnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvamF2YWRvY1BhcnNpbmcvSW5saW5lVGFnMy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmI1OTFmNAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvamF2YWRvY1BhcnNpbmcvSW5saW5lVGFnMy50eHQKQEAgLTAsMCArMSw2OSBAQAorUHNpSmF2YUZpbGU6SW5saW5lVGFnMy5qYXZhCisgIFBzaUltcG9ydExpc3QKKyAgICA8ZW1wdHkgbGlzdD4KKyAgUHNpQ2xhc3M6QworICAgIFBzaURvY0NvbW1lbnQKKyAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0xFQURJTkdfQVNURVJJU0tTKCcqJykKKyAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0RBVEEoJyBUZXh0IFRleHQgJykKKyAgICAgIFBzaUlubGluZURvY1RhZzpAbGluaworICAgICAgICBQc2lEb2NUb2tlbjpET0NfSU5MSU5FX1RBR19TVEFSVCgneycpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19UQUdfTkFNRSgnQGxpbmsnKQorICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgICAgUHNpRWxlbWVudChET0NfTUVUSE9EX09SX0ZJRUxEX1JFRikKKyAgICAgICAgICBQc2lEb2NUb2tlbjpET0NfVEFHX1ZBTFVFX1NIQVJQX1RPS0VOKCcjJykKKyAgICAgICAgICBQc2lEb2NUb2tlbjpET0NfVEFHX1ZBTFVFX1RPS0VOKCdzb21lZnVuYycpCisgICAgICAgICAgUHNpRG9jVG9rZW46RE9DX1RBR19WQUxVRV9MUEFSRU4oJygnKQorICAgICAgICAgIFBzaUVsZW1lbnQoRE9DX1RBR19WQUxVRV9FTEVNRU5UKQorICAgICAgICAgICAgUHNpRWxlbWVudChET0NfVFlQRV9IT0xERVIpCisgICAgICAgICAgICAgIFBzaVR5cGVFbGVtZW50OlN0cmluZworICAgICAgICAgICAgICAgIFBzaUphdmFDb2RlUmVmZXJlbmNlRWxlbWVudDpTdHJpbmcKKyAgICAgICAgICAgICAgICAgIFBzaUlkZW50aWZpZXI6U3RyaW5nKCdTdHJpbmcnKQorICAgICAgICAgICAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICAgIFBzaURvY1Rva2VuOkRPQ19UQUdfVkFMVUVfQ09NTUEoJywnKQorICAgICAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgICAgICBQc2lFbGVtZW50KERPQ19UWVBFX0hPTERFUikKKyAgICAgICAgICAgICAgUHNpVHlwZUVsZW1lbnQ6U3RyaW5nCisgICAgICAgICAgICAgICAgUHNpSmF2YUNvZGVSZWZlcmVuY2VFbGVtZW50OlN0cmluZworICAgICAgICAgICAgICAgICAgUHNpSWRlbnRpZmllcjpTdHJpbmcoJ1N0cmluZycpCisgICAgICAgICAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgICAgUHNpRG9jVG9rZW46RE9DX1RBR19WQUxVRV9DT01NQSgnLCcpCisgICAgICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgICAgICAgIFBzaUVsZW1lbnQoRE9DX1RZUEVfSE9MREVSKQorICAgICAgICAgICAgICBQc2lUeXBlRWxlbWVudDpTdHJpbmcKKyAgICAgICAgICAgICAgICBQc2lKYXZhQ29kZVJlZmVyZW5jZUVsZW1lbnQ6U3RyaW5nCisgICAgICAgICAgICAgICAgICBQc2lJZGVudGlmaWVyOlN0cmluZygnU3RyaW5nJykKKyAgICAgICAgICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgUHNpRG9jVG9rZW46RE9DX1RBR19WQUxVRV9SUEFSRU4oJyknKQorICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfREFUQSgneycpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0RBVEEoJ30nKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9EQVRBKCd7JykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfREFUQSgneycpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0RBVEEoJ3snKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9EQVRBKCdJbm5lciBicmFjZXMnKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9EQVRBKCd9JykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfREFUQSgnfScpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0RBVEEoJyAnKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9EQVRBKCd9JykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0lOTElORV9UQUdfRU5EKCd9JykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcbicpCisgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpS2V5d29yZDpjbGFzcygnY2xhc3MnKQorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUlkZW50aWZpZXI6QygnQycpCisgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvamF2YWRvY1BhcnNpbmcvSmF2YWRvYzAuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvamF2YWRvY1BhcnNpbmcvSmF2YWRvYzAuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNGQwM2ZhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9qYXZhZG9jUGFyc2luZy9KYXZhZG9jMC5qYXZhCkBAIC0wLDAgKzEsNCBAQAorLyoqCisgKiBKYXZhZG9jCisgKi8KK2NsYXNzIEN7fQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvamF2YWRvY1BhcnNpbmcvSmF2YWRvYzAudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9qYXZhZG9jUGFyc2luZy9KYXZhZG9jMC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDFiY2RmMAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvamF2YWRvY1BhcnNpbmcvSmF2YWRvYzAudHh0CkBAIC0wLDAgKzEsMjUgQEAKK1BzaUphdmFGaWxlOkphdmFkb2MwLmphdmEKKyAgUHNpSW1wb3J0TGlzdAorICAgIDxlbXB0eSBsaXN0PgorICBQc2lDbGFzczpDCisgICAgUHNpRG9jQ29tbWVudAorICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfTEVBRElOR19BU1RFUklTS1MoJyonKQorICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfREFUQSgnIEphdmFkb2MnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuJykKKyAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lLZXl3b3JkOmNsYXNzKCdjbGFzcycpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSWRlbnRpZmllcjpDKCdDJykKKyAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2phdmFkb2NQYXJzaW5nL0phdmFkb2MxLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2phdmFkb2NQYXJzaW5nL0phdmFkb2MxLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzA2OGNkZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvamF2YWRvY1BhcnNpbmcvSmF2YWRvYzEuamF2YQpAQCAtMCwwICsxIEBACisvKiovClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9qYXZhZG9jUGFyc2luZy9KYXZhZG9jMS50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2phdmFkb2NQYXJzaW5nL0phdmFkb2MxLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYzZiMDM5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9qYXZhZG9jUGFyc2luZy9KYXZhZG9jMS50eHQKQEAgLTAsMCArMSw0IEBACitQc2lKYXZhRmlsZTpKYXZhZG9jMS5qYXZhCisgIFBzaUNvbW1lbnQoQ19TVFlMRV9DT01NRU5UKSgnLyoqLycpCisgIFBzaUltcG9ydExpc3QKKyAgICA8ZW1wdHkgbGlzdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2phdmFkb2NQYXJzaW5nL0xpbmtQbGFpblRhZzAuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvamF2YWRvY1BhcnNpbmcvTGlua1BsYWluVGFnMC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk4ZGNmYmUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2phdmFkb2NQYXJzaW5nL0xpbmtQbGFpblRhZzAuamF2YQpAQCAtMCwwICsxLDQgQEAKKy8qKgorICoge0BsaW5rcGxhaW4gamF2YS5sYW5nLlN0cmluZyB0ZXh0fQorICovCitjbGFzcyBDe30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2phdmFkb2NQYXJzaW5nL0xpbmtQbGFpblRhZzAudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9qYXZhZG9jUGFyc2luZy9MaW5rUGxhaW5UYWcwLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNDIxZDc4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9qYXZhZG9jUGFyc2luZy9MaW5rUGxhaW5UYWcwLnR4dApAQCAtMCwwICsxLDQ3IEBACitQc2lKYXZhRmlsZTpMaW5rUGxhaW5UYWcwLmphdmEKKyAgUHNpSW1wb3J0TGlzdAorICAgIDxlbXB0eSBsaXN0PgorICBQc2lDbGFzczpDCisgICAgUHNpRG9jQ29tbWVudAorICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfTEVBRElOR19BU1RFUklTS1MoJyonKQorICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfREFUQSgnICcpCisgICAgICBQc2lJbmxpbmVEb2NUYWc6QGxpbmtwbGFpbgorICAgICAgICBQc2lEb2NUb2tlbjpET0NfSU5MSU5FX1RBR19TVEFSVCgneycpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19UQUdfTkFNRSgnQGxpbmtwbGFpbicpCisgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICBQc2lFbGVtZW50KERPQ19SRUZFUkVOQ0VfSE9MREVSKQorICAgICAgICAgIFBzaUphdmFDb2RlUmVmZXJlbmNlRWxlbWVudDpqYXZhLmxhbmcuU3RyaW5nCisgICAgICAgICAgICBQc2lKYXZhQ29kZVJlZmVyZW5jZUVsZW1lbnQ6amF2YS5sYW5nCisgICAgICAgICAgICAgIFBzaUphdmFDb2RlUmVmZXJlbmNlRWxlbWVudDpqYXZhCisgICAgICAgICAgICAgICAgUHNpSWRlbnRpZmllcjpqYXZhKCdqYXZhJykKKyAgICAgICAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOkRPVCgnLicpCisgICAgICAgICAgICAgIFBzaUlkZW50aWZpZXI6bGFuZygnbGFuZycpCisgICAgICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICAgIFBzaUphdmFUb2tlbjpET1QoJy4nKQorICAgICAgICAgICAgUHNpSWRlbnRpZmllcjpTdHJpbmcoJ1N0cmluZycpCisgICAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfREFUQSgndGV4dCcpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19JTkxJTkVfVEFHX0VORCgnfScpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4nKQorICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUtleXdvcmQ6Y2xhc3MoJ2NsYXNzJykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lJZGVudGlmaWVyOkMoJ0MnKQorICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2phdmFkb2NQYXJzaW5nL0xpbmtQbGFpblRhZzEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvamF2YWRvY1BhcnNpbmcvTGlua1BsYWluVGFnMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE5NTY0OTQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2phdmFkb2NQYXJzaW5nL0xpbmtQbGFpblRhZzEuamF2YQpAQCAtMCwwICsxLDQgQEAKKy8qKgorICoge0BsaW5rcGxhaW4gamF2YS5sYW5nLlN0cmluZyNlcXVhbHMoamF2YS5sYW5nLk9iamVjdCkgdGV4dH0KKyAqLworY2xhc3MgQ3t9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9qYXZhZG9jUGFyc2luZy9MaW5rUGxhaW5UYWcxLnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvamF2YWRvY1BhcnNpbmcvTGlua1BsYWluVGFnMS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDdmNmEyMgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvamF2YWRvY1BhcnNpbmcvTGlua1BsYWluVGFnMS50eHQKQEAgLTAsMCArMSw2OSBAQAorUHNpSmF2YUZpbGU6TGlua1BsYWluVGFnMS5qYXZhCisgIFBzaUltcG9ydExpc3QKKyAgICA8ZW1wdHkgbGlzdD4KKyAgUHNpQ2xhc3M6QworICAgIFBzaURvY0NvbW1lbnQKKyAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0xFQURJTkdfQVNURVJJU0tTKCcqJykKKyAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0RBVEEoJyAnKQorICAgICAgUHNpSW5saW5lRG9jVGFnOkBsaW5rcGxhaW4KKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0lOTElORV9UQUdfU1RBUlQoJ3snKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfVEFHX05BTUUoJ0BsaW5rcGxhaW4nKQorICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgICAgUHNpRWxlbWVudChET0NfTUVUSE9EX09SX0ZJRUxEX1JFRikKKyAgICAgICAgICBQc2lFbGVtZW50KERPQ19SRUZFUkVOQ0VfSE9MREVSKQorICAgICAgICAgICAgUHNpSmF2YUNvZGVSZWZlcmVuY2VFbGVtZW50OmphdmEubGFuZy5TdHJpbmcKKyAgICAgICAgICAgICAgUHNpSmF2YUNvZGVSZWZlcmVuY2VFbGVtZW50OmphdmEubGFuZworICAgICAgICAgICAgICAgIFBzaUphdmFDb2RlUmVmZXJlbmNlRWxlbWVudDpqYXZhCisgICAgICAgICAgICAgICAgICBQc2lJZGVudGlmaWVyOmphdmEoJ2phdmEnKQorICAgICAgICAgICAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICAgICAgICBQc2lKYXZhVG9rZW46RE9UKCcuJykKKyAgICAgICAgICAgICAgICBQc2lJZGVudGlmaWVyOmxhbmcoJ2xhbmcnKQorICAgICAgICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgICAgICBQc2lKYXZhVG9rZW46RE9UKCcuJykKKyAgICAgICAgICAgICAgUHNpSWRlbnRpZmllcjpTdHJpbmcoJ1N0cmluZycpCisgICAgICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICBQc2lEb2NUb2tlbjpET0NfVEFHX1ZBTFVFX1NIQVJQX1RPS0VOKCcjJykKKyAgICAgICAgICBQc2lEb2NUb2tlbjpET0NfVEFHX1ZBTFVFX1RPS0VOKCdlcXVhbHMnKQorICAgICAgICAgIFBzaURvY1Rva2VuOkRPQ19UQUdfVkFMVUVfTFBBUkVOKCcoJykKKyAgICAgICAgICBQc2lFbGVtZW50KERPQ19UQUdfVkFMVUVfRUxFTUVOVCkKKyAgICAgICAgICAgIFBzaUVsZW1lbnQoRE9DX1RZUEVfSE9MREVSKQorICAgICAgICAgICAgICBQc2lUeXBlRWxlbWVudDpqYXZhLmxhbmcuT2JqZWN0CisgICAgICAgICAgICAgICAgUHNpSmF2YUNvZGVSZWZlcmVuY2VFbGVtZW50OmphdmEubGFuZy5PYmplY3QKKyAgICAgICAgICAgICAgICAgIFBzaUphdmFDb2RlUmVmZXJlbmNlRWxlbWVudDpqYXZhLmxhbmcKKyAgICAgICAgICAgICAgICAgICAgUHNpSmF2YUNvZGVSZWZlcmVuY2VFbGVtZW50OmphdmEKKyAgICAgICAgICAgICAgICAgICAgICBQc2lJZGVudGlmaWVyOmphdmEoJ2phdmEnKQorICAgICAgICAgICAgICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgICAgICAgICAgICBQc2lKYXZhVG9rZW46RE9UKCcuJykKKyAgICAgICAgICAgICAgICAgICAgUHNpSWRlbnRpZmllcjpsYW5nKCdsYW5nJykKKyAgICAgICAgICAgICAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOkRPVCgnLicpCisgICAgICAgICAgICAgICAgICBQc2lJZGVudGlmaWVyOk9iamVjdCgnT2JqZWN0JykKKyAgICAgICAgICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgUHNpRG9jVG9rZW46RE9DX1RBR19WQUxVRV9SUEFSRU4oJyknKQorICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfREFUQSgndGV4dCcpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19JTkxJTkVfVEFHX0VORCgnfScpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4nKQorICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUtleXdvcmQ6Y2xhc3MoJ2NsYXNzJykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lJZGVudGlmaWVyOkMoJ0MnKQorICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2phdmFkb2NQYXJzaW5nL0xpbmtQbGFpblRhZzIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvamF2YWRvY1BhcnNpbmcvTGlua1BsYWluVGFnMi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU1MmVhNDYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2phdmFkb2NQYXJzaW5nL0xpbmtQbGFpblRhZzIuamF2YQpAQCAtMCwwICsxLDQgQEAKKy8qKgorICogQGxpbmtwbGFpbiBqYXZhLmxhbmcuU3RyaW5nI2VxdWFscyhqYXZhLmxhbmcuT2JqZWN0KSB0ZXh0CisgKi8KK2NsYXNzIEN7fQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvamF2YWRvY1BhcnNpbmcvTGlua1BsYWluVGFnMi50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2phdmFkb2NQYXJzaW5nL0xpbmtQbGFpblRhZzIudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc5ZTJlYzMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2phdmFkb2NQYXJzaW5nL0xpbmtQbGFpblRhZzIudHh0CkBAIC0wLDAgKzEsMzcgQEAKK1BzaUphdmFGaWxlOkxpbmtQbGFpblRhZzIuamF2YQorICBQc2lJbXBvcnRMaXN0CisgICAgPGVtcHR5IGxpc3Q+CisgIFBzaUNsYXNzOkMKKyAgICBQc2lEb2NDb21tZW50CisgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9MRUFESU5HX0FTVEVSSVNLUygnKicpCisgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9EQVRBKCcgJykKKyAgICAgIFBzaURvY1RhZzpAbGlua3BsYWluCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19UQUdfTkFNRSgnQGxpbmtwbGFpbicpCisgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICBQc2lFbGVtZW50KERPQ19UQUdfVkFMVUVfRUxFTUVOVCkKKyAgICAgICAgICBQc2lEb2NUb2tlbjpET0NfVEFHX1ZBTFVFX1RPS0VOKCdqYXZhLmxhbmcuU3RyaW5nJykKKyAgICAgICAgICBQc2lEb2NUb2tlbjpET0NfVEFHX1ZBTFVFX1NIQVJQX1RPS0VOKCcjJykKKyAgICAgICAgICBQc2lEb2NUb2tlbjpET0NfVEFHX1ZBTFVFX1RPS0VOKCdlcXVhbHMnKQorICAgICAgICAgIFBzaURvY1Rva2VuOkRPQ19UQUdfVkFMVUVfTFBBUkVOKCcoJykKKyAgICAgICAgICBQc2lEb2NUb2tlbjpET0NfVEFHX1ZBTFVFX1RPS0VOKCdqYXZhLmxhbmcuT2JqZWN0JykKKyAgICAgICAgICBQc2lEb2NUb2tlbjpET0NfVEFHX1ZBTFVFX1JQQVJFTignKScpCisgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9EQVRBKCd0ZXh0JykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcbicpCisgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpS2V5d29yZDpjbGFzcygnY2xhc3MnKQorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUlkZW50aWZpZXI6QygnQycpCisgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9qYXZhZG9jUGFyc2luZy9MaW5rVGFnMC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9qYXZhZG9jUGFyc2luZy9MaW5rVGFnMC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ4Mzc4MzZmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9qYXZhZG9jUGFyc2luZy9MaW5rVGFnMC5qYXZhCkBAIC0wLDAgKzEsNCBAQAorLyoqCisgKiB7QGxpbmsgamF2YS5sYW5nLlN0cmluZyB0ZXh0fQorICovCitjbGFzcyBDe30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2phdmFkb2NQYXJzaW5nL0xpbmtUYWcwLnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvamF2YWRvY1BhcnNpbmcvTGlua1RhZzAudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg2NmNmNDQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2phdmFkb2NQYXJzaW5nL0xpbmtUYWcwLnR4dApAQCAtMCwwICsxLDQ3IEBACitQc2lKYXZhRmlsZTpMaW5rVGFnMC5qYXZhCisgIFBzaUltcG9ydExpc3QKKyAgICA8ZW1wdHkgbGlzdD4KKyAgUHNpQ2xhc3M6QworICAgIFBzaURvY0NvbW1lbnQKKyAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0xFQURJTkdfQVNURVJJU0tTKCcqJykKKyAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0RBVEEoJyAnKQorICAgICAgUHNpSW5saW5lRG9jVGFnOkBsaW5rCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19JTkxJTkVfVEFHX1NUQVJUKCd7JykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX1RBR19OQU1FKCdAbGluaycpCisgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICBQc2lFbGVtZW50KERPQ19SRUZFUkVOQ0VfSE9MREVSKQorICAgICAgICAgIFBzaUphdmFDb2RlUmVmZXJlbmNlRWxlbWVudDpqYXZhLmxhbmcuU3RyaW5nCisgICAgICAgICAgICBQc2lKYXZhQ29kZVJlZmVyZW5jZUVsZW1lbnQ6amF2YS5sYW5nCisgICAgICAgICAgICAgIFBzaUphdmFDb2RlUmVmZXJlbmNlRWxlbWVudDpqYXZhCisgICAgICAgICAgICAgICAgUHNpSWRlbnRpZmllcjpqYXZhKCdqYXZhJykKKyAgICAgICAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOkRPVCgnLicpCisgICAgICAgICAgICAgIFBzaUlkZW50aWZpZXI6bGFuZygnbGFuZycpCisgICAgICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICAgIFBzaUphdmFUb2tlbjpET1QoJy4nKQorICAgICAgICAgICAgUHNpSWRlbnRpZmllcjpTdHJpbmcoJ1N0cmluZycpCisgICAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfREFUQSgndGV4dCcpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19JTkxJTkVfVEFHX0VORCgnfScpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4nKQorICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUtleXdvcmQ6Y2xhc3MoJ2NsYXNzJykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lJZGVudGlmaWVyOkMoJ0MnKQorICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2phdmFkb2NQYXJzaW5nL0xpbmtUYWcxLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2phdmFkb2NQYXJzaW5nL0xpbmtUYWcxLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTFjOGVkOQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvamF2YWRvY1BhcnNpbmcvTGlua1RhZzEuamF2YQpAQCAtMCwwICsxLDQgQEAKKy8qKgorICoge0BsaW5rIGphdmEubGFuZy5TdHJpbmcjZXF1YWxzKGphdmEubGFuZy5PYmplY3QpIHRleHR9CisgKi8KK2NsYXNzIEN7fQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvamF2YWRvY1BhcnNpbmcvTGlua1RhZzEudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9qYXZhZG9jUGFyc2luZy9MaW5rVGFnMS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjVmZGU0ZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvamF2YWRvY1BhcnNpbmcvTGlua1RhZzEudHh0CkBAIC0wLDAgKzEsNjkgQEAKK1BzaUphdmFGaWxlOkxpbmtUYWcxLmphdmEKKyAgUHNpSW1wb3J0TGlzdAorICAgIDxlbXB0eSBsaXN0PgorICBQc2lDbGFzczpDCisgICAgUHNpRG9jQ29tbWVudAorICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfTEVBRElOR19BU1RFUklTS1MoJyonKQorICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfREFUQSgnICcpCisgICAgICBQc2lJbmxpbmVEb2NUYWc6QGxpbmsKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0lOTElORV9UQUdfU1RBUlQoJ3snKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfVEFHX05BTUUoJ0BsaW5rJykKKyAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgIFBzaUVsZW1lbnQoRE9DX01FVEhPRF9PUl9GSUVMRF9SRUYpCisgICAgICAgICAgUHNpRWxlbWVudChET0NfUkVGRVJFTkNFX0hPTERFUikKKyAgICAgICAgICAgIFBzaUphdmFDb2RlUmVmZXJlbmNlRWxlbWVudDpqYXZhLmxhbmcuU3RyaW5nCisgICAgICAgICAgICAgIFBzaUphdmFDb2RlUmVmZXJlbmNlRWxlbWVudDpqYXZhLmxhbmcKKyAgICAgICAgICAgICAgICBQc2lKYXZhQ29kZVJlZmVyZW5jZUVsZW1lbnQ6amF2YQorICAgICAgICAgICAgICAgICAgUHNpSWRlbnRpZmllcjpqYXZhKCdqYXZhJykKKyAgICAgICAgICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOkRPVCgnLicpCisgICAgICAgICAgICAgICAgUHNpSWRlbnRpZmllcjpsYW5nKCdsYW5nJykKKyAgICAgICAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOkRPVCgnLicpCisgICAgICAgICAgICAgIFBzaUlkZW50aWZpZXI6U3RyaW5nKCdTdHJpbmcnKQorICAgICAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgUHNpRG9jVG9rZW46RE9DX1RBR19WQUxVRV9TSEFSUF9UT0tFTignIycpCisgICAgICAgICAgUHNpRG9jVG9rZW46RE9DX1RBR19WQUxVRV9UT0tFTignZXF1YWxzJykKKyAgICAgICAgICBQc2lEb2NUb2tlbjpET0NfVEFHX1ZBTFVFX0xQQVJFTignKCcpCisgICAgICAgICAgUHNpRWxlbWVudChET0NfVEFHX1ZBTFVFX0VMRU1FTlQpCisgICAgICAgICAgICBQc2lFbGVtZW50KERPQ19UWVBFX0hPTERFUikKKyAgICAgICAgICAgICAgUHNpVHlwZUVsZW1lbnQ6amF2YS5sYW5nLk9iamVjdAorICAgICAgICAgICAgICAgIFBzaUphdmFDb2RlUmVmZXJlbmNlRWxlbWVudDpqYXZhLmxhbmcuT2JqZWN0CisgICAgICAgICAgICAgICAgICBQc2lKYXZhQ29kZVJlZmVyZW5jZUVsZW1lbnQ6amF2YS5sYW5nCisgICAgICAgICAgICAgICAgICAgIFBzaUphdmFDb2RlUmVmZXJlbmNlRWxlbWVudDpqYXZhCisgICAgICAgICAgICAgICAgICAgICAgUHNpSWRlbnRpZmllcjpqYXZhKCdqYXZhJykKKyAgICAgICAgICAgICAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOkRPVCgnLicpCisgICAgICAgICAgICAgICAgICAgIFBzaUlkZW50aWZpZXI6bGFuZygnbGFuZycpCisgICAgICAgICAgICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICAgICAgICAgIFBzaUphdmFUb2tlbjpET1QoJy4nKQorICAgICAgICAgICAgICAgICAgUHNpSWRlbnRpZmllcjpPYmplY3QoJ09iamVjdCcpCisgICAgICAgICAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgIFBzaURvY1Rva2VuOkRPQ19UQUdfVkFMVUVfUlBBUkVOKCcpJykKKyAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0RBVEEoJ3RleHQnKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfSU5MSU5FX1RBR19FTkQoJ30nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuJykKKyAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lLZXl3b3JkOmNsYXNzKCdjbGFzcycpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSWRlbnRpZmllcjpDKCdDJykKKyAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9qYXZhZG9jUGFyc2luZy9MaW5rVGFnMi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9qYXZhZG9jUGFyc2luZy9MaW5rVGFnMi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBhMWEyYzIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2phdmFkb2NQYXJzaW5nL0xpbmtUYWcyLmphdmEKQEAgLTAsMCArMSw0IEBACisvKioKKyAqIEBsaW5rIGphdmEubGFuZy5TdHJpbmcjZXF1YWxzKGphdmEubGFuZy5PYmplY3QpIHRleHQKKyAqLworY2xhc3MgQ3t9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9qYXZhZG9jUGFyc2luZy9MaW5rVGFnMi50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2phdmFkb2NQYXJzaW5nL0xpbmtUYWcyLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZjRjZjdkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9qYXZhZG9jUGFyc2luZy9MaW5rVGFnMi50eHQKQEAgLTAsMCArMSwzNyBAQAorUHNpSmF2YUZpbGU6TGlua1RhZzIuamF2YQorICBQc2lJbXBvcnRMaXN0CisgICAgPGVtcHR5IGxpc3Q+CisgIFBzaUNsYXNzOkMKKyAgICBQc2lEb2NDb21tZW50CisgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9MRUFESU5HX0FTVEVSSVNLUygnKicpCisgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9EQVRBKCcgJykKKyAgICAgIFBzaURvY1RhZzpAbGluaworICAgICAgICBQc2lEb2NUb2tlbjpET0NfVEFHX05BTUUoJ0BsaW5rJykKKyAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgIFBzaUVsZW1lbnQoRE9DX1RBR19WQUxVRV9FTEVNRU5UKQorICAgICAgICAgIFBzaURvY1Rva2VuOkRPQ19UQUdfVkFMVUVfVE9LRU4oJ2phdmEubGFuZy5TdHJpbmcnKQorICAgICAgICAgIFBzaURvY1Rva2VuOkRPQ19UQUdfVkFMVUVfU0hBUlBfVE9LRU4oJyMnKQorICAgICAgICAgIFBzaURvY1Rva2VuOkRPQ19UQUdfVkFMVUVfVE9LRU4oJ2VxdWFscycpCisgICAgICAgICAgUHNpRG9jVG9rZW46RE9DX1RBR19WQUxVRV9MUEFSRU4oJygnKQorICAgICAgICAgIFBzaURvY1Rva2VuOkRPQ19UQUdfVkFMVUVfVE9LRU4oJ2phdmEubGFuZy5PYmplY3QnKQorICAgICAgICAgIFBzaURvY1Rva2VuOkRPQ19UQUdfVkFMVUVfUlBBUkVOKCcpJykKKyAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0RBVEEoJ3RleHQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuJykKKyAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lLZXl3b3JkOmNsYXNzKCdjbGFzcycpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSWRlbnRpZmllcjpDKCdDJykKKyAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2phdmFkb2NQYXJzaW5nL0xpbmtUYWczLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2phdmFkb2NQYXJzaW5nL0xpbmtUYWczLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWViOWRkNAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvamF2YWRvY1BhcnNpbmcvTGlua1RhZzMuamF2YQpAQCAtMCwwICsxLDcgQEAKKy8qKgorICogSGVsbG8hIHtAbGluaworICogI2ZvbygpfSB0ZXh0CisgKi8KK3B1YmxpYyBjbGFzcyBDeworcHVibGljIHZvaWQgZm9vKCkge30KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2phdmFkb2NQYXJzaW5nL0xpbmtUYWczLnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvamF2YWRvY1BhcnNpbmcvTGlua1RhZzMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIxZWE1MWMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2phdmFkb2NQYXJzaW5nL0xpbmtUYWczLnR4dApAQCAtMCwwICsxLDYyIEBACitQc2lKYXZhRmlsZTpMaW5rVGFnMy5qYXZhCisgIFBzaUltcG9ydExpc3QKKyAgICA8ZW1wdHkgbGlzdD4KKyAgUHNpQ2xhc3M6QworICAgIFBzaURvY0NvbW1lbnQKKyAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0xFQURJTkdfQVNURVJJU0tTKCcqJykKKyAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0RBVEEoJyBIZWxsbyEgJykKKyAgICAgIFBzaUlubGluZURvY1RhZzpAbGluaworICAgICAgICBQc2lEb2NUb2tlbjpET0NfSU5MSU5FX1RBR19TVEFSVCgneycpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19UQUdfTkFNRSgnQGxpbmsnKQorICAgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9MRUFESU5HX0FTVEVSSVNLUygnKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0RBVEEoJyAnKQorICAgICAgICBQc2lFbGVtZW50KERPQ19NRVRIT0RfT1JfRklFTERfUkVGKQorICAgICAgICAgIFBzaURvY1Rva2VuOkRPQ19UQUdfVkFMVUVfU0hBUlBfVE9LRU4oJyMnKQorICAgICAgICAgIFBzaURvY1Rva2VuOkRPQ19UQUdfVkFMVUVfVE9LRU4oJ2ZvbycpCisgICAgICAgICAgUHNpRG9jVG9rZW46RE9DX1RBR19WQUxVRV9MUEFSRU4oJygnKQorICAgICAgICAgIFBzaUVsZW1lbnQoRE9DX1RBR19WQUxVRV9FTEVNRU5UKQorICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgUHNpRG9jVG9rZW46RE9DX1RBR19WQUxVRV9SUEFSRU4oJyknKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfSU5MSU5FX1RBR19FTkQoJ30nKQorICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfREFUQSgnIHRleHQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuJykKKyAgICBQc2lNb2RpZmllckxpc3Q6cHVibGljCisgICAgICBQc2lLZXl3b3JkOnB1YmxpYygncHVibGljJykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lLZXl3b3JkOmNsYXNzKCdjbGFzcycpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSWRlbnRpZmllcjpDKCdDJykKKyAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4nKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaU1vZGlmaWVyTGlzdDpwdWJsaWMKKyAgICAgICAgUHNpS2V5d29yZDpwdWJsaWMoJ3B1YmxpYycpCisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4nKQorICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvamF2YWRvY1BhcnNpbmcvTGlua1RhZzQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvamF2YWRvY1BhcnNpbmcvTGlua1RhZzQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMGFhZTBjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9qYXZhZG9jUGFyc2luZy9MaW5rVGFnNC5qYXZhCkBAIC0wLDAgKzEsNyBAQAorLyoqCisgKiBIZWxsbyEge0BsaW5rCisgKiNmb28oKX0gdGV4dAorICovCitwdWJsaWMgY2xhc3MgQ3sKK3B1YmxpYyB2b2lkIGZvbygpIHt9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9qYXZhZG9jUGFyc2luZy9MaW5rVGFnNC50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2phdmFkb2NQYXJzaW5nL0xpbmtUYWc0LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMDhkMDEyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9qYXZhZG9jUGFyc2luZy9MaW5rVGFnNC50eHQKQEAgLTAsMCArMSw2MSBAQAorUHNpSmF2YUZpbGU6TGlua1RhZzQuamF2YQorICBQc2lJbXBvcnRMaXN0CisgICAgPGVtcHR5IGxpc3Q+CisgIFBzaUNsYXNzOkMKKyAgICBQc2lEb2NDb21tZW50CisgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9MRUFESU5HX0FTVEVSSVNLUygnKicpCisgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9EQVRBKCcgSGVsbG8hICcpCisgICAgICBQc2lJbmxpbmVEb2NUYWc6QGxpbmsKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0lOTElORV9UQUdfU1RBUlQoJ3snKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfVEFHX05BTUUoJ0BsaW5rJykKKyAgICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfTEVBRElOR19BU1RFUklTS1MoJyonKQorICAgICAgICBQc2lFbGVtZW50KERPQ19NRVRIT0RfT1JfRklFTERfUkVGKQorICAgICAgICAgIFBzaURvY1Rva2VuOkRPQ19UQUdfVkFMVUVfU0hBUlBfVE9LRU4oJyMnKQorICAgICAgICAgIFBzaURvY1Rva2VuOkRPQ19UQUdfVkFMVUVfVE9LRU4oJ2ZvbycpCisgICAgICAgICAgUHNpRG9jVG9rZW46RE9DX1RBR19WQUxVRV9MUEFSRU4oJygnKQorICAgICAgICAgIFBzaUVsZW1lbnQoRE9DX1RBR19WQUxVRV9FTEVNRU5UKQorICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgUHNpRG9jVG9rZW46RE9DX1RBR19WQUxVRV9SUEFSRU4oJyknKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfSU5MSU5FX1RBR19FTkQoJ30nKQorICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfREFUQSgnIHRleHQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuJykKKyAgICBQc2lNb2RpZmllckxpc3Q6cHVibGljCisgICAgICBQc2lLZXl3b3JkOnB1YmxpYygncHVibGljJykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lLZXl3b3JkOmNsYXNzKCdjbGFzcycpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSWRlbnRpZmllcjpDKCdDJykKKyAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4nKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaU1vZGlmaWVyTGlzdDpwdWJsaWMKKyAgICAgICAgUHNpS2V5d29yZDpwdWJsaWMoJ3B1YmxpYycpCisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4nKQorICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvamF2YWRvY1BhcnNpbmcvTGlua1RhZzUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvamF2YWRvY1BhcnNpbmcvTGlua1RhZzUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jOTAwNjVhNAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvamF2YWRvY1BhcnNpbmcvTGlua1RhZzUuamF2YQpAQCAtMCwwICsxLDcgQEAKKy8qKgorICogSGVsbG8hIHtAbGluaworICNmb28oKX0gdGV4dAorICovCitwdWJsaWMgY2xhc3MgQ3sKK3B1YmxpYyB2b2lkIGZvbygpIHt9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9qYXZhZG9jUGFyc2luZy9MaW5rVGFnNS50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2phdmFkb2NQYXJzaW5nL0xpbmtUYWc1LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YWVlYmIxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9qYXZhZG9jUGFyc2luZy9MaW5rVGFnNS50eHQKQEAgLTAsMCArMSw2MCBAQAorUHNpSmF2YUZpbGU6TGlua1RhZzUuamF2YQorICBQc2lJbXBvcnRMaXN0CisgICAgPGVtcHR5IGxpc3Q+CisgIFBzaUNsYXNzOkMKKyAgICBQc2lEb2NDb21tZW50CisgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9MRUFESU5HX0FTVEVSSVNLUygnKicpCisgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9EQVRBKCcgSGVsbG8hICcpCisgICAgICBQc2lJbmxpbmVEb2NUYWc6QGxpbmsKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0lOTElORV9UQUdfU1RBUlQoJ3snKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfVEFHX05BTUUoJ0BsaW5rJykKKyAgICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgICAgUHNpRWxlbWVudChET0NfTUVUSE9EX09SX0ZJRUxEX1JFRikKKyAgICAgICAgICBQc2lEb2NUb2tlbjpET0NfVEFHX1ZBTFVFX1NIQVJQX1RPS0VOKCcjJykKKyAgICAgICAgICBQc2lEb2NUb2tlbjpET0NfVEFHX1ZBTFVFX1RPS0VOKCdmb28nKQorICAgICAgICAgIFBzaURvY1Rva2VuOkRPQ19UQUdfVkFMVUVfTFBBUkVOKCcoJykKKyAgICAgICAgICBQc2lFbGVtZW50KERPQ19UQUdfVkFMVUVfRUxFTUVOVCkKKyAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgIFBzaURvY1Rva2VuOkRPQ19UQUdfVkFMVUVfUlBBUkVOKCcpJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0lOTElORV9UQUdfRU5EKCd9JykKKyAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0RBVEEoJyB0ZXh0JykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcbicpCisgICAgUHNpTW9kaWZpZXJMaXN0OnB1YmxpYworICAgICAgUHNpS2V5d29yZDpwdWJsaWMoJ3B1YmxpYycpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpS2V5d29yZDpjbGFzcygnY2xhc3MnKQorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUlkZW50aWZpZXI6QygnQycpCisgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lNb2RpZmllckxpc3Q6cHVibGljCisgICAgICAgIFBzaUtleXdvcmQ6cHVibGljKCdwdWJsaWMnKQorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuJykKKyAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2phdmFkb2NQYXJzaW5nL0xpbmtUYWc2LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2phdmFkb2NQYXJzaW5nL0xpbmtUYWc2LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjc2Njc5NwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvamF2YWRvY1BhcnNpbmcvTGlua1RhZzYuamF2YQpAQCAtMCwwICsxLDcgQEAKKy8qKgorICogSGVsbG8hIHtAbGluaworI2ZvbygpfSB0ZXh0CisgKi8KK3B1YmxpYyBjbGFzcyBDeworcHVibGljIHZvaWQgZm9vKCkge30KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2phdmFkb2NQYXJzaW5nL0xpbmtUYWc2LnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvamF2YWRvY1BhcnNpbmcvTGlua1RhZzYudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFjYzE3NjQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2phdmFkb2NQYXJzaW5nL0xpbmtUYWc2LnR4dApAQCAtMCwwICsxLDYwIEBACitQc2lKYXZhRmlsZTpMaW5rVGFnNi5qYXZhCisgIFBzaUltcG9ydExpc3QKKyAgICA8ZW1wdHkgbGlzdD4KKyAgUHNpQ2xhc3M6QworICAgIFBzaURvY0NvbW1lbnQKKyAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0xFQURJTkdfQVNURVJJU0tTKCcqJykKKyAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0RBVEEoJyBIZWxsbyEgJykKKyAgICAgIFBzaUlubGluZURvY1RhZzpAbGluaworICAgICAgICBQc2lEb2NUb2tlbjpET0NfSU5MSU5FX1RBR19TVEFSVCgneycpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19UQUdfTkFNRSgnQGxpbmsnKQorICAgICAgICBQc2lXaGl0ZVNwYWNlKCdcbicpCisgICAgICAgIFBzaUVsZW1lbnQoRE9DX01FVEhPRF9PUl9GSUVMRF9SRUYpCisgICAgICAgICAgUHNpRG9jVG9rZW46RE9DX1RBR19WQUxVRV9TSEFSUF9UT0tFTignIycpCisgICAgICAgICAgUHNpRG9jVG9rZW46RE9DX1RBR19WQUxVRV9UT0tFTignZm9vJykKKyAgICAgICAgICBQc2lEb2NUb2tlbjpET0NfVEFHX1ZBTFVFX0xQQVJFTignKCcpCisgICAgICAgICAgUHNpRWxlbWVudChET0NfVEFHX1ZBTFVFX0VMRU1FTlQpCisgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICBQc2lEb2NUb2tlbjpET0NfVEFHX1ZBTFVFX1JQQVJFTignKScpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19JTkxJTkVfVEFHX0VORCgnfScpCisgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9EQVRBKCcgdGV4dCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4nKQorICAgIFBzaU1vZGlmaWVyTGlzdDpwdWJsaWMKKyAgICAgIFBzaUtleXdvcmQ6cHVibGljKCdwdWJsaWMnKQorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUtleXdvcmQ6Y2xhc3MoJ2NsYXNzJykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lJZGVudGlmaWVyOkMoJ0MnKQorICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcbicpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpTW9kaWZpZXJMaXN0OnB1YmxpYworICAgICAgICBQc2lLZXl3b3JkOnB1YmxpYygncHVibGljJykKKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcbicpCisgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9qYXZhZG9jUGFyc2luZy9QYXJhbVRhZzAuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvamF2YWRvY1BhcnNpbmcvUGFyYW1UYWcwLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGUzZWViMwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvamF2YWRvY1BhcnNpbmcvUGFyYW1UYWcwLmphdmEKQEAgLTAsMCArMSw4IEBACitjbGFzcyBDIHsKKyAgLyoqCisgICAqIEphdmFkb2MKKyAgICogQHBhcmFtIHAxCisgICAqIEBwYXJhbSBwMgorICAgKi8KKyAgdm9pZCBtKCkgeyB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9qYXZhZG9jUGFyc2luZy9QYXJhbVRhZzAudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9qYXZhZG9jUGFyc2luZy9QYXJhbVRhZzAudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYwNDI4NjcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2phdmFkb2NQYXJzaW5nL1BhcmFtVGFnMC50eHQKQEAgLTAsMCArMSw2MyBAQAorUHNpSmF2YUZpbGU6UGFyYW1UYWcwLmphdmEKKyAgUHNpSW1wb3J0TGlzdAorICAgIDxlbXB0eSBsaXN0PgorICBQc2lDbGFzczpDCisgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpS2V5d29yZDpjbGFzcygnY2xhc3MnKQorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUlkZW50aWZpZXI6QygnQycpCisgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAnKQorICAgIFBzaU1ldGhvZDptCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgICcpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0xFQURJTkdfQVNURVJJU0tTKCcqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfREFUQSgnIEphdmFkb2MnKQorICAgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgICcpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0xFQURJTkdfQVNURVJJU0tTKCcqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfREFUQSgnICcpCisgICAgICAgIFBzaURvY1RhZzpAcGFyYW0KKyAgICAgICAgICBQc2lEb2NUb2tlbjpET0NfVEFHX05BTUUoJ0BwYXJhbScpCisgICAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgICAgUHNpRWxlbWVudChET0NfUEFSQU1FVEVSX1JFRikKKyAgICAgICAgICAgIFBzaURvY1Rva2VuOkRPQ19UQUdfVkFMVUVfVE9LRU4oJ3AxJykKKyAgICAgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgICcpCisgICAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfTEVBRElOR19BU1RFUklTS1MoJyonKQorICAgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0RBVEEoJyAnKQorICAgICAgICBQc2lEb2NUYWc6QHBhcmFtCisgICAgICAgICAgUHNpRG9jVG9rZW46RE9DX1RBR19OQU1FKCdAcGFyYW0nKQorICAgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICAgIFBzaUVsZW1lbnQoRE9DX1BBUkFNRVRFUl9SRUYpCisgICAgICAgICAgICBQc2lEb2NUb2tlbjpET0NfVEFHX1ZBTFVFX1RPS0VOKCdwMicpCisgICAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAgJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjptKCdtJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuJykKKyAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2phdmFkb2NQYXJzaW5nL1BhcmFtVGFnMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9qYXZhZG9jUGFyc2luZy9QYXJhbVRhZzEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYzAyZDk1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9qYXZhZG9jUGFyc2luZy9QYXJhbVRhZzEuamF2YQpAQCAtMCwwICsxLDcgQEAKK2NsYXNzIEZvbyB7CisgICAgLyoqCisgICAgICoKKyAgICAgKiBAcGFyYW0geQorICAgICAqLworICAgICBwdWJsaWMgdm9pZCBmb28oU3RyaW5nIHkpIHt9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9qYXZhZG9jUGFyc2luZy9QYXJhbVRhZzEudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9qYXZhZG9jUGFyc2luZy9QYXJhbVRhZzEudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcwYjgxZGMyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9qYXZhZG9jUGFyc2luZy9QYXJhbVRhZzEudHh0CkBAIC0wLDAgKzEsNjQgQEAKK1BzaUphdmFGaWxlOlBhcmFtVGFnMS5qYXZhCisgIFBzaUltcG9ydExpc3QKKyAgICA8ZW1wdHkgbGlzdD4KKyAgUHNpQ2xhc3M6Rm9vCisgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpS2V5d29yZDpjbGFzcygnY2xhc3MnKQorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUlkZW50aWZpZXI6Rm9vKCdGb28nKQorICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgICAnKQorICAgIFBzaU1ldGhvZDpmb28KKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAgICAnKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9MRUFESU5HX0FTVEVSSVNLUygnKicpCisgICAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAgICAnKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9MRUFESU5HX0FTVEVSSVNLUygnKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0RBVEEoJyAnKQorICAgICAgICBQc2lEb2NUYWc6QHBhcmFtCisgICAgICAgICAgUHNpRG9jVG9rZW46RE9DX1RBR19OQU1FKCdAcGFyYW0nKQorICAgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICAgIFBzaUVsZW1lbnQoRE9DX1BBUkFNRVRFUl9SRUYpCisgICAgICAgICAgICBQc2lEb2NUb2tlbjpET0NfVEFHX1ZBTFVFX1RPS0VOKCd5JykKKyAgICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gICAgICcpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gICAgICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6cHVibGljCisgICAgICAgIFBzaUtleXdvcmQ6cHVibGljKCdwdWJsaWMnKQorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OihTdHJpbmcgeSkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpUGFyYW1ldGVyOnkKKyAgICAgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICBQc2lUeXBlRWxlbWVudDpTdHJpbmcKKyAgICAgICAgICAgIFBzaUphdmFDb2RlUmVmZXJlbmNlRWxlbWVudDpTdHJpbmcKKyAgICAgICAgICAgICAgUHNpSWRlbnRpZmllcjpTdHJpbmcoJ1N0cmluZycpCisgICAgICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgICAgICBQc2lJZGVudGlmaWVyOnkoJ3knKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcbicpCisgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9qYXZhZG9jUGFyc2luZy9QYXJhbWV0ZXJsZXNzVGFnLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2phdmFkb2NQYXJzaW5nL1BhcmFtZXRlcmxlc3NUYWcuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ODMyYTFlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9qYXZhZG9jUGFyc2luZy9QYXJhbWV0ZXJsZXNzVGFnLmphdmEKQEAgLTAsMCArMSw1IEBACisvKioKKyAqIEBzZXJpYWwKKyAqIEBzZWUgamF2YS5sYW5nLlN0cmluZyAKKyAqLworY2xhc3MgQ3t9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9qYXZhZG9jUGFyc2luZy9QYXJhbWV0ZXJsZXNzVGFnLnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvamF2YWRvY1BhcnNpbmcvUGFyYW1ldGVybGVzc1RhZy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWRhY2VlNgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvamF2YWRvY1BhcnNpbmcvUGFyYW1ldGVybGVzc1RhZy50eHQKQEAgLTAsMCArMSw0OCBAQAorUHNpSmF2YUZpbGU6UGFyYW1ldGVybGVzc1RhZy5qYXZhCisgIFBzaUltcG9ydExpc3QKKyAgICA8ZW1wdHkgbGlzdD4KKyAgUHNpQ2xhc3M6QworICAgIFBzaURvY0NvbW1lbnQKKyAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0xFQURJTkdfQVNURVJJU0tTKCcqJykKKyAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0RBVEEoJyAnKQorICAgICAgUHNpRG9jVGFnOkBzZXJpYWwKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX1RBR19OQU1FKCdAc2VyaWFsJykKKyAgICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfTEVBRElOR19BU1RFUklTS1MoJyonKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9EQVRBKCcgJykKKyAgICAgIFBzaURvY1RhZzpAc2VlCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19UQUdfTkFNRSgnQHNlZScpCisgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICBQc2lFbGVtZW50KERPQ19SRUZFUkVOQ0VfSE9MREVSKQorICAgICAgICAgIFBzaUphdmFDb2RlUmVmZXJlbmNlRWxlbWVudDpqYXZhLmxhbmcuU3RyaW5nCisgICAgICAgICAgICBQc2lKYXZhQ29kZVJlZmVyZW5jZUVsZW1lbnQ6amF2YS5sYW5nCisgICAgICAgICAgICAgIFBzaUphdmFDb2RlUmVmZXJlbmNlRWxlbWVudDpqYXZhCisgICAgICAgICAgICAgICAgUHNpSWRlbnRpZmllcjpqYXZhKCdqYXZhJykKKyAgICAgICAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOkRPVCgnLicpCisgICAgICAgICAgICAgIFBzaUlkZW50aWZpZXI6bGFuZygnbGFuZycpCisgICAgICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICAgIFBzaUphdmFUb2tlbjpET1QoJy4nKQorICAgICAgICAgICAgUHNpSWRlbnRpZmllcjpTdHJpbmcoJ1N0cmluZycpCisgICAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpV2hpdGVTcGFjZSgnIFxuICcpCisgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcbicpCisgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpS2V5d29yZDpjbGFzcygnY2xhc3MnKQorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUlkZW50aWZpZXI6QygnQycpCisgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvamF2YWRvY1BhcnNpbmcvU2VlVGFnMC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9qYXZhZG9jUGFyc2luZy9TZWVUYWcwLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2JjOWE1YgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvamF2YWRvY1BhcnNpbmcvU2VlVGFnMC5qYXZhCkBAIC0wLDAgKzEsNCBAQAorLyoqCisgKiBAc2VlIGphdmEubGFuZy5TdHJpbmcgCisgKi8KK2NsYXNzIEN7fQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvamF2YWRvY1BhcnNpbmcvU2VlVGFnMC50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2phdmFkb2NQYXJzaW5nL1NlZVRhZzAudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRhOGEzYzMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2phdmFkb2NQYXJzaW5nL1NlZVRhZzAudHh0CkBAIC0wLDAgKzEsNDMgQEAKK1BzaUphdmFGaWxlOlNlZVRhZzAuamF2YQorICBQc2lJbXBvcnRMaXN0CisgICAgPGVtcHR5IGxpc3Q+CisgIFBzaUNsYXNzOkMKKyAgICBQc2lEb2NDb21tZW50CisgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9MRUFESU5HX0FTVEVSSVNLUygnKicpCisgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9EQVRBKCcgJykKKyAgICAgIFBzaURvY1RhZzpAc2VlCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19UQUdfTkFNRSgnQHNlZScpCisgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICBQc2lFbGVtZW50KERPQ19SRUZFUkVOQ0VfSE9MREVSKQorICAgICAgICAgIFBzaUphdmFDb2RlUmVmZXJlbmNlRWxlbWVudDpqYXZhLmxhbmcuU3RyaW5nCisgICAgICAgICAgICBQc2lKYXZhQ29kZVJlZmVyZW5jZUVsZW1lbnQ6amF2YS5sYW5nCisgICAgICAgICAgICAgIFBzaUphdmFDb2RlUmVmZXJlbmNlRWxlbWVudDpqYXZhCisgICAgICAgICAgICAgICAgUHNpSWRlbnRpZmllcjpqYXZhKCdqYXZhJykKKyAgICAgICAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOkRPVCgnLicpCisgICAgICAgICAgICAgIFBzaUlkZW50aWZpZXI6bGFuZygnbGFuZycpCisgICAgICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICAgIFBzaUphdmFUb2tlbjpET1QoJy4nKQorICAgICAgICAgICAgUHNpSWRlbnRpZmllcjpTdHJpbmcoJ1N0cmluZycpCisgICAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpV2hpdGVTcGFjZSgnIFxuICcpCisgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcbicpCisgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpS2V5d29yZDpjbGFzcygnY2xhc3MnKQorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUlkZW50aWZpZXI6QygnQycpCisgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvamF2YWRvY1BhcnNpbmcvU2VlVGFnMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9qYXZhZG9jUGFyc2luZy9TZWVUYWcxLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2M1NWMyNQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvamF2YWRvY1BhcnNpbmcvU2VlVGFnMS5qYXZhCkBAIC0wLDAgKzEsNCBAQAorLyoqCisgKiBAc2VlIGphdmEubGFuZy5TdHJpbmcgVGhlIFN0cmluZyBjbGFzcyAgCisgKi8KK2NsYXNzIEN7fQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvamF2YWRvY1BhcnNpbmcvU2VlVGFnMS50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2phdmFkb2NQYXJzaW5nL1NlZVRhZzEudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI4NjMwZGQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2phdmFkb2NQYXJzaW5nL1NlZVRhZzEudHh0CkBAIC0wLDAgKzEsNDUgQEAKK1BzaUphdmFGaWxlOlNlZVRhZzEuamF2YQorICBQc2lJbXBvcnRMaXN0CisgICAgPGVtcHR5IGxpc3Q+CisgIFBzaUNsYXNzOkMKKyAgICBQc2lEb2NDb21tZW50CisgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9MRUFESU5HX0FTVEVSSVNLUygnKicpCisgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9EQVRBKCcgJykKKyAgICAgIFBzaURvY1RhZzpAc2VlCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19UQUdfTkFNRSgnQHNlZScpCisgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICBQc2lFbGVtZW50KERPQ19SRUZFUkVOQ0VfSE9MREVSKQorICAgICAgICAgIFBzaUphdmFDb2RlUmVmZXJlbmNlRWxlbWVudDpqYXZhLmxhbmcuU3RyaW5nCisgICAgICAgICAgICBQc2lKYXZhQ29kZVJlZmVyZW5jZUVsZW1lbnQ6amF2YS5sYW5nCisgICAgICAgICAgICAgIFBzaUphdmFDb2RlUmVmZXJlbmNlRWxlbWVudDpqYXZhCisgICAgICAgICAgICAgICAgUHNpSWRlbnRpZmllcjpqYXZhKCdqYXZhJykKKyAgICAgICAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOkRPVCgnLicpCisgICAgICAgICAgICAgIFBzaUlkZW50aWZpZXI6bGFuZygnbGFuZycpCisgICAgICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICAgIFBzaUphdmFUb2tlbjpET1QoJy4nKQorICAgICAgICAgICAgUHNpSWRlbnRpZmllcjpTdHJpbmcoJ1N0cmluZycpCisgICAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfREFUQSgnVGhlIFN0cmluZyBjbGFzcyAgJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcbicpCisgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpS2V5d29yZDpjbGFzcygnY2xhc3MnKQorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUlkZW50aWZpZXI6QygnQycpCisgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvamF2YWRvY1BhcnNpbmcvU2VlVGFnMTAuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvamF2YWRvY1BhcnNpbmcvU2VlVGFnMTAuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNmQ1YTgzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9qYXZhZG9jUGFyc2luZy9TZWVUYWcxMC5qYXZhCkBAIC0wLDAgKzEsNCBAQAorLyoqCisgKiBAc2VlIGNvbS5mb28uTXlDbGFzcyNlcXVhbHMoamF2YS5sYW5nLk9iamVjdCwgamF2YS5sYW5nLk9iamVjdCkKKyAqLworY2xhc3MgQ3t9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9qYXZhZG9jUGFyc2luZy9TZWVUYWcxMC50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2phdmFkb2NQYXJzaW5nL1NlZVRhZzEwLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NWIyZjdmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9qYXZhZG9jUGFyc2luZy9TZWVUYWcxMC50eHQKQEAgLTAsMCArMSw4MyBAQAorUHNpSmF2YUZpbGU6U2VlVGFnMTAuamF2YQorICBQc2lJbXBvcnRMaXN0CisgICAgPGVtcHR5IGxpc3Q+CisgIFBzaUNsYXNzOkMKKyAgICBQc2lEb2NDb21tZW50CisgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9MRUFESU5HX0FTVEVSSVNLUygnKicpCisgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9EQVRBKCcgJykKKyAgICAgIFBzaURvY1RhZzpAc2VlCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19UQUdfTkFNRSgnQHNlZScpCisgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICBQc2lFbGVtZW50KERPQ19NRVRIT0RfT1JfRklFTERfUkVGKQorICAgICAgICAgIFBzaUVsZW1lbnQoRE9DX1JFRkVSRU5DRV9IT0xERVIpCisgICAgICAgICAgICBQc2lKYXZhQ29kZVJlZmVyZW5jZUVsZW1lbnQ6Y29tLmZvby5NeUNsYXNzCisgICAgICAgICAgICAgIFBzaUphdmFDb2RlUmVmZXJlbmNlRWxlbWVudDpjb20uZm9vCisgICAgICAgICAgICAgICAgUHNpSmF2YUNvZGVSZWZlcmVuY2VFbGVtZW50OmNvbQorICAgICAgICAgICAgICAgICAgUHNpSWRlbnRpZmllcjpjb20oJ2NvbScpCisgICAgICAgICAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgICAgICAgIFBzaUphdmFUb2tlbjpET1QoJy4nKQorICAgICAgICAgICAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgICAgICBQc2lKYXZhVG9rZW46RE9UKCcuJykKKyAgICAgICAgICAgICAgUHNpSWRlbnRpZmllcjpNeUNsYXNzKCdNeUNsYXNzJykKKyAgICAgICAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgIFBzaURvY1Rva2VuOkRPQ19UQUdfVkFMVUVfU0hBUlBfVE9LRU4oJyMnKQorICAgICAgICAgIFBzaURvY1Rva2VuOkRPQ19UQUdfVkFMVUVfVE9LRU4oJ2VxdWFscycpCisgICAgICAgICAgUHNpRG9jVG9rZW46RE9DX1RBR19WQUxVRV9MUEFSRU4oJygnKQorICAgICAgICAgIFBzaUVsZW1lbnQoRE9DX1RBR19WQUxVRV9FTEVNRU5UKQorICAgICAgICAgICAgUHNpRWxlbWVudChET0NfVFlQRV9IT0xERVIpCisgICAgICAgICAgICAgIFBzaVR5cGVFbGVtZW50OmphdmEubGFuZy5PYmplY3QKKyAgICAgICAgICAgICAgICBQc2lKYXZhQ29kZVJlZmVyZW5jZUVsZW1lbnQ6amF2YS5sYW5nLk9iamVjdAorICAgICAgICAgICAgICAgICAgUHNpSmF2YUNvZGVSZWZlcmVuY2VFbGVtZW50OmphdmEubGFuZworICAgICAgICAgICAgICAgICAgICBQc2lKYXZhQ29kZVJlZmVyZW5jZUVsZW1lbnQ6amF2YQorICAgICAgICAgICAgICAgICAgICAgIFBzaUlkZW50aWZpZXI6amF2YSgnamF2YScpCisgICAgICAgICAgICAgICAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgICAgICAgICAgIFBzaUphdmFUb2tlbjpET1QoJy4nKQorICAgICAgICAgICAgICAgICAgICBQc2lJZGVudGlmaWVyOmxhbmcoJ2xhbmcnKQorICAgICAgICAgICAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgICAgICAgICBQc2lKYXZhVG9rZW46RE9UKCcuJykKKyAgICAgICAgICAgICAgICAgIFBzaUlkZW50aWZpZXI6T2JqZWN0KCdPYmplY3QnKQorICAgICAgICAgICAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICAgIFBzaURvY1Rva2VuOkRPQ19UQUdfVkFMVUVfQ09NTUEoJywnKQorICAgICAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgICAgICBQc2lFbGVtZW50KERPQ19UWVBFX0hPTERFUikKKyAgICAgICAgICAgICAgUHNpVHlwZUVsZW1lbnQ6amF2YS5sYW5nLk9iamVjdAorICAgICAgICAgICAgICAgIFBzaUphdmFDb2RlUmVmZXJlbmNlRWxlbWVudDpqYXZhLmxhbmcuT2JqZWN0CisgICAgICAgICAgICAgICAgICBQc2lKYXZhQ29kZVJlZmVyZW5jZUVsZW1lbnQ6amF2YS5sYW5nCisgICAgICAgICAgICAgICAgICAgIFBzaUphdmFDb2RlUmVmZXJlbmNlRWxlbWVudDpqYXZhCisgICAgICAgICAgICAgICAgICAgICAgUHNpSWRlbnRpZmllcjpqYXZhKCdqYXZhJykKKyAgICAgICAgICAgICAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOkRPVCgnLicpCisgICAgICAgICAgICAgICAgICAgIFBzaUlkZW50aWZpZXI6bGFuZygnbGFuZycpCisgICAgICAgICAgICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICAgICAgICAgIFBzaUphdmFUb2tlbjpET1QoJy4nKQorICAgICAgICAgICAgICAgICAgUHNpSWRlbnRpZmllcjpPYmplY3QoJ09iamVjdCcpCisgICAgICAgICAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgIFBzaURvY1Rva2VuOkRPQ19UQUdfVkFMVUVfUlBBUkVOKCcpJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcbicpCisgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpS2V5d29yZDpjbGFzcygnY2xhc3MnKQorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUlkZW50aWZpZXI6QygnQycpCisgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvamF2YWRvY1BhcnNpbmcvU2VlVGFnMTEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvamF2YWRvY1BhcnNpbmcvU2VlVGFnMTEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MTNkZWYyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9qYXZhZG9jUGFyc2luZy9TZWVUYWcxMS5qYXZhCkBAIC0wLDAgKzEsNCBAQAorLyoqCisgKiBAc2VlICAgICAgICBqYXZhLmxhbmcuT2JqZWN0I3dhaXQoKQorICovCitjbGFzcyBDe30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2phdmFkb2NQYXJzaW5nL1NlZVRhZzExLnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvamF2YWRvY1BhcnNpbmcvU2VlVGFnMTEudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY1OGQ3NmIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2phdmFkb2NQYXJzaW5nL1NlZVRhZzExLnR4dApAQCAtMCwwICsxLDUwIEBACitQc2lKYXZhRmlsZTpTZWVUYWcxMS5qYXZhCisgIFBzaUltcG9ydExpc3QKKyAgICA8ZW1wdHkgbGlzdD4KKyAgUHNpQ2xhc3M6QworICAgIFBzaURvY0NvbW1lbnQKKyAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0xFQURJTkdfQVNURVJJU0tTKCcqJykKKyAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0RBVEEoJyAnKQorICAgICAgUHNpRG9jVGFnOkBzZWUKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX1RBR19OQU1FKCdAc2VlJykKKyAgICAgICAgUHNpV2hpdGVTcGFjZSgnICAgICAgICAnKQorICAgICAgICBQc2lFbGVtZW50KERPQ19NRVRIT0RfT1JfRklFTERfUkVGKQorICAgICAgICAgIFBzaUVsZW1lbnQoRE9DX1JFRkVSRU5DRV9IT0xERVIpCisgICAgICAgICAgICBQc2lKYXZhQ29kZVJlZmVyZW5jZUVsZW1lbnQ6amF2YS5sYW5nLk9iamVjdAorICAgICAgICAgICAgICBQc2lKYXZhQ29kZVJlZmVyZW5jZUVsZW1lbnQ6amF2YS5sYW5nCisgICAgICAgICAgICAgICAgUHNpSmF2YUNvZGVSZWZlcmVuY2VFbGVtZW50OmphdmEKKyAgICAgICAgICAgICAgICAgIFBzaUlkZW50aWZpZXI6amF2YSgnamF2YScpCisgICAgICAgICAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgICAgICAgIFBzaUphdmFUb2tlbjpET1QoJy4nKQorICAgICAgICAgICAgICAgIFBzaUlkZW50aWZpZXI6bGFuZygnbGFuZycpCisgICAgICAgICAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgICAgIFBzaUphdmFUb2tlbjpET1QoJy4nKQorICAgICAgICAgICAgICBQc2lJZGVudGlmaWVyOk9iamVjdCgnT2JqZWN0JykKKyAgICAgICAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgIFBzaURvY1Rva2VuOkRPQ19UQUdfVkFMVUVfU0hBUlBfVE9LRU4oJyMnKQorICAgICAgICAgIFBzaURvY1Rva2VuOkRPQ19UQUdfVkFMVUVfVE9LRU4oJ3dhaXQnKQorICAgICAgICAgIFBzaURvY1Rva2VuOkRPQ19UQUdfVkFMVUVfTFBBUkVOKCcoJykKKyAgICAgICAgICBQc2lFbGVtZW50KERPQ19UQUdfVkFMVUVfRUxFTUVOVCkKKyAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgIFBzaURvY1Rva2VuOkRPQ19UQUdfVkFMVUVfUlBBUkVOKCcpJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcbicpCisgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpS2V5d29yZDpjbGFzcygnY2xhc3MnKQorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUlkZW50aWZpZXI6QygnQycpCisgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvamF2YWRvY1BhcnNpbmcvU2VlVGFnMTIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvamF2YWRvY1BhcnNpbmcvU2VlVGFnMTIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43Mjg4MDBiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9qYXZhZG9jUGFyc2luZy9TZWVUYWcxMi5qYXZhCkBAIC0wLDAgKzEsNCBAQAorLyoqCisgKiBAc2VlICN3YWl0KCkKKyAqLworY2xhc3MgQ3t9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9qYXZhZG9jUGFyc2luZy9TZWVUYWcxMi50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2phdmFkb2NQYXJzaW5nL1NlZVRhZzEyLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYzRkZDYyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9qYXZhZG9jUGFyc2luZy9TZWVUYWcxMi50eHQKQEAgLTAsMCArMSwzNSBAQAorUHNpSmF2YUZpbGU6U2VlVGFnMTIuamF2YQorICBQc2lJbXBvcnRMaXN0CisgICAgPGVtcHR5IGxpc3Q+CisgIFBzaUNsYXNzOkMKKyAgICBQc2lEb2NDb21tZW50CisgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9MRUFESU5HX0FTVEVSSVNLUygnKicpCisgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9EQVRBKCcgJykKKyAgICAgIFBzaURvY1RhZzpAc2VlCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19UQUdfTkFNRSgnQHNlZScpCisgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICBQc2lFbGVtZW50KERPQ19NRVRIT0RfT1JfRklFTERfUkVGKQorICAgICAgICAgIFBzaURvY1Rva2VuOkRPQ19UQUdfVkFMVUVfU0hBUlBfVE9LRU4oJyMnKQorICAgICAgICAgIFBzaURvY1Rva2VuOkRPQ19UQUdfVkFMVUVfVE9LRU4oJ3dhaXQnKQorICAgICAgICAgIFBzaURvY1Rva2VuOkRPQ19UQUdfVkFMVUVfTFBBUkVOKCcoJykKKyAgICAgICAgICBQc2lFbGVtZW50KERPQ19UQUdfVkFMVUVfRUxFTUVOVCkKKyAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgIFBzaURvY1Rva2VuOkRPQ19UQUdfVkFMVUVfUlBBUkVOKCcpJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcbicpCisgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpS2V5d29yZDpjbGFzcygnY2xhc3MnKQorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUlkZW50aWZpZXI6QygnQycpCisgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvamF2YWRvY1BhcnNpbmcvU2VlVGFnMTMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvamF2YWRvY1BhcnNpbmcvU2VlVGFnMTMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kY2RkYTFkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9qYXZhZG9jUGFyc2luZy9TZWVUYWcxMy5qYXZhCkBAIC0wLDAgKzEsNCBAQAorLyoqCisgKiBAc2VlIDxhIGhyZWY9InBhY2thZ2Utc3VtbWFyeS5odG1sI2NoYXJlbmMiPkNoYXJhY3RlciBlbmNvZGluZ3M8L2E+CisgKi8KK2NsYXNzIEN7fQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvamF2YWRvY1BhcnNpbmcvU2VlVGFnMTMudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9qYXZhZG9jUGFyc2luZy9TZWVUYWcxMy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWFiZmE3ZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvamF2YWRvY1BhcnNpbmcvU2VlVGFnMTMudHh0CkBAIC0wLDAgKzEsMjkgQEAKK1BzaUphdmFGaWxlOlNlZVRhZzEzLmphdmEKKyAgUHNpSW1wb3J0TGlzdAorICAgIDxlbXB0eSBsaXN0PgorICBQc2lDbGFzczpDCisgICAgUHNpRG9jQ29tbWVudAorICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfTEVBRElOR19BU1RFUklTS1MoJyonKQorICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfREFUQSgnICcpCisgICAgICBQc2lEb2NUYWc6QHNlZQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfVEFHX05BTUUoJ0BzZWUnKQorICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfREFUQSgnPGEgaHJlZj0icGFja2FnZS1zdW1tYXJ5Lmh0bWwjY2hhcmVuYyI+Q2hhcmFjdGVyIGVuY29kaW5nczwvYT4nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuJykKKyAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lLZXl3b3JkOmNsYXNzKCdjbGFzcycpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSWRlbnRpZmllcjpDKCdDJykKKyAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9qYXZhZG9jUGFyc2luZy9TZWVUYWcxNC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9qYXZhZG9jUGFyc2luZy9TZWVUYWcxNC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNiZjg1YTEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2phdmFkb2NQYXJzaW5nL1NlZVRhZzE0LmphdmEKQEAgLTAsMCArMSw0IEBACisvKioKKyAqIEBzZWUgamF2YS5sYW5nLlN0cmluZ0J1ZmZlciNhcHBlbmQoY2hhcltdKQorICovCitjbGFzcyBDe30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2phdmFkb2NQYXJzaW5nL1NlZVRhZzE0LnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvamF2YWRvY1BhcnNpbmcvU2VlVGFnMTQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA4ZjkwNDcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2phdmFkb2NQYXJzaW5nL1NlZVRhZzE0LnR4dApAQCAtMCwwICsxLDU1IEBACitQc2lKYXZhRmlsZTpTZWVUYWcxNC5qYXZhCisgIFBzaUltcG9ydExpc3QKKyAgICA8ZW1wdHkgbGlzdD4KKyAgUHNpQ2xhc3M6QworICAgIFBzaURvY0NvbW1lbnQKKyAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0xFQURJTkdfQVNURVJJU0tTKCcqJykKKyAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0RBVEEoJyAnKQorICAgICAgUHNpRG9jVGFnOkBzZWUKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX1RBR19OQU1FKCdAc2VlJykKKyAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgIFBzaUVsZW1lbnQoRE9DX01FVEhPRF9PUl9GSUVMRF9SRUYpCisgICAgICAgICAgUHNpRWxlbWVudChET0NfUkVGRVJFTkNFX0hPTERFUikKKyAgICAgICAgICAgIFBzaUphdmFDb2RlUmVmZXJlbmNlRWxlbWVudDpqYXZhLmxhbmcuU3RyaW5nQnVmZmVyCisgICAgICAgICAgICAgIFBzaUphdmFDb2RlUmVmZXJlbmNlRWxlbWVudDpqYXZhLmxhbmcKKyAgICAgICAgICAgICAgICBQc2lKYXZhQ29kZVJlZmVyZW5jZUVsZW1lbnQ6amF2YQorICAgICAgICAgICAgICAgICAgUHNpSWRlbnRpZmllcjpqYXZhKCdqYXZhJykKKyAgICAgICAgICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOkRPVCgnLicpCisgICAgICAgICAgICAgICAgUHNpSWRlbnRpZmllcjpsYW5nKCdsYW5nJykKKyAgICAgICAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOkRPVCgnLicpCisgICAgICAgICAgICAgIFBzaUlkZW50aWZpZXI6U3RyaW5nQnVmZmVyKCdTdHJpbmdCdWZmZXInKQorICAgICAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgUHNpRG9jVG9rZW46RE9DX1RBR19WQUxVRV9TSEFSUF9UT0tFTignIycpCisgICAgICAgICAgUHNpRG9jVG9rZW46RE9DX1RBR19WQUxVRV9UT0tFTignYXBwZW5kJykKKyAgICAgICAgICBQc2lEb2NUb2tlbjpET0NfVEFHX1ZBTFVFX0xQQVJFTignKCcpCisgICAgICAgICAgUHNpRWxlbWVudChET0NfVEFHX1ZBTFVFX0VMRU1FTlQpCisgICAgICAgICAgICBQc2lFbGVtZW50KERPQ19UWVBFX0hPTERFUikKKyAgICAgICAgICAgICAgUHNpVHlwZUVsZW1lbnQ6Y2hhcltdCisgICAgICAgICAgICAgICAgUHNpVHlwZUVsZW1lbnQ6Y2hhcgorICAgICAgICAgICAgICAgICAgUHNpS2V5d29yZDpjaGFyKCdjaGFyJykKKyAgICAgICAgICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNLRVQoJ1snKQorICAgICAgICAgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0tFVCgnXScpCisgICAgICAgICAgUHNpRG9jVG9rZW46RE9DX1RBR19WQUxVRV9SUEFSRU4oJyknKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuJykKKyAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lLZXl3b3JkOmNsYXNzKCdjbGFzcycpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSWRlbnRpZmllcjpDKCdDJykKKyAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9qYXZhZG9jUGFyc2luZy9TZWVUYWcxNS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9qYXZhZG9jUGFyc2luZy9TZWVUYWcxNS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUxNWZkNDEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2phdmFkb2NQYXJzaW5nL1NlZVRhZzE1LmphdmEKQEAgLTAsMCArMSw0IEBACisvKioKKyAqIEBzZWUgamF2YS5sYW5nLlN0cmluZ0J1ZmZlciNhcHBlbmQoamF2YS5sYW5nLk9iamVjdCBhcmcxLCBqYXZhLmxhbmcuU3RyaW5nIGFyZzIpCisgKi8KK2NsYXNzIEN7fQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvamF2YWRvY1BhcnNpbmcvU2VlVGFnMTUudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9qYXZhZG9jUGFyc2luZy9TZWVUYWcxNS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmE3OWI4NQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvamF2YWRvY1BhcnNpbmcvU2VlVGFnMTUudHh0CkBAIC0wLDAgKzEsODcgQEAKK1BzaUphdmFGaWxlOlNlZVRhZzE1LmphdmEKKyAgUHNpSW1wb3J0TGlzdAorICAgIDxlbXB0eSBsaXN0PgorICBQc2lDbGFzczpDCisgICAgUHNpRG9jQ29tbWVudAorICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfTEVBRElOR19BU1RFUklTS1MoJyonKQorICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfREFUQSgnICcpCisgICAgICBQc2lEb2NUYWc6QHNlZQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfVEFHX05BTUUoJ0BzZWUnKQorICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgICAgUHNpRWxlbWVudChET0NfTUVUSE9EX09SX0ZJRUxEX1JFRikKKyAgICAgICAgICBQc2lFbGVtZW50KERPQ19SRUZFUkVOQ0VfSE9MREVSKQorICAgICAgICAgICAgUHNpSmF2YUNvZGVSZWZlcmVuY2VFbGVtZW50OmphdmEubGFuZy5TdHJpbmdCdWZmZXIKKyAgICAgICAgICAgICAgUHNpSmF2YUNvZGVSZWZlcmVuY2VFbGVtZW50OmphdmEubGFuZworICAgICAgICAgICAgICAgIFBzaUphdmFDb2RlUmVmZXJlbmNlRWxlbWVudDpqYXZhCisgICAgICAgICAgICAgICAgICBQc2lJZGVudGlmaWVyOmphdmEoJ2phdmEnKQorICAgICAgICAgICAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICAgICAgICBQc2lKYXZhVG9rZW46RE9UKCcuJykKKyAgICAgICAgICAgICAgICBQc2lJZGVudGlmaWVyOmxhbmcoJ2xhbmcnKQorICAgICAgICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgICAgICBQc2lKYXZhVG9rZW46RE9UKCcuJykKKyAgICAgICAgICAgICAgUHNpSWRlbnRpZmllcjpTdHJpbmdCdWZmZXIoJ1N0cmluZ0J1ZmZlcicpCisgICAgICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICBQc2lEb2NUb2tlbjpET0NfVEFHX1ZBTFVFX1NIQVJQX1RPS0VOKCcjJykKKyAgICAgICAgICBQc2lEb2NUb2tlbjpET0NfVEFHX1ZBTFVFX1RPS0VOKCdhcHBlbmQnKQorICAgICAgICAgIFBzaURvY1Rva2VuOkRPQ19UQUdfVkFMVUVfTFBBUkVOKCcoJykKKyAgICAgICAgICBQc2lFbGVtZW50KERPQ19UQUdfVkFMVUVfRUxFTUVOVCkKKyAgICAgICAgICAgIFBzaUVsZW1lbnQoRE9DX1RZUEVfSE9MREVSKQorICAgICAgICAgICAgICBQc2lUeXBlRWxlbWVudDpqYXZhLmxhbmcuT2JqZWN0CisgICAgICAgICAgICAgICAgUHNpSmF2YUNvZGVSZWZlcmVuY2VFbGVtZW50OmphdmEubGFuZy5PYmplY3QKKyAgICAgICAgICAgICAgICAgIFBzaUphdmFDb2RlUmVmZXJlbmNlRWxlbWVudDpqYXZhLmxhbmcKKyAgICAgICAgICAgICAgICAgICAgUHNpSmF2YUNvZGVSZWZlcmVuY2VFbGVtZW50OmphdmEKKyAgICAgICAgICAgICAgICAgICAgICBQc2lJZGVudGlmaWVyOmphdmEoJ2phdmEnKQorICAgICAgICAgICAgICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgICAgICAgICAgICBQc2lKYXZhVG9rZW46RE9UKCcuJykKKyAgICAgICAgICAgICAgICAgICAgUHNpSWRlbnRpZmllcjpsYW5nKCdsYW5nJykKKyAgICAgICAgICAgICAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOkRPVCgnLicpCisgICAgICAgICAgICAgICAgICBQc2lJZGVudGlmaWVyOk9iamVjdCgnT2JqZWN0JykKKyAgICAgICAgICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgICAgICAgIFBzaURvY1Rva2VuOkRPQ19UQUdfVkFMVUVfVE9LRU4oJ2FyZzEnKQorICAgICAgICAgICAgUHNpRG9jVG9rZW46RE9DX1RBR19WQUxVRV9DT01NQSgnLCcpCisgICAgICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgICAgICAgIFBzaUVsZW1lbnQoRE9DX1RZUEVfSE9MREVSKQorICAgICAgICAgICAgICBQc2lUeXBlRWxlbWVudDpqYXZhLmxhbmcuU3RyaW5nCisgICAgICAgICAgICAgICAgUHNpSmF2YUNvZGVSZWZlcmVuY2VFbGVtZW50OmphdmEubGFuZy5TdHJpbmcKKyAgICAgICAgICAgICAgICAgIFBzaUphdmFDb2RlUmVmZXJlbmNlRWxlbWVudDpqYXZhLmxhbmcKKyAgICAgICAgICAgICAgICAgICAgUHNpSmF2YUNvZGVSZWZlcmVuY2VFbGVtZW50OmphdmEKKyAgICAgICAgICAgICAgICAgICAgICBQc2lJZGVudGlmaWVyOmphdmEoJ2phdmEnKQorICAgICAgICAgICAgICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgICAgICAgICAgICBQc2lKYXZhVG9rZW46RE9UKCcuJykKKyAgICAgICAgICAgICAgICAgICAgUHNpSWRlbnRpZmllcjpsYW5nKCdsYW5nJykKKyAgICAgICAgICAgICAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOkRPVCgnLicpCisgICAgICAgICAgICAgICAgICBQc2lJZGVudGlmaWVyOlN0cmluZygnU3RyaW5nJykKKyAgICAgICAgICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgICAgICAgIFBzaURvY1Rva2VuOkRPQ19UQUdfVkFMVUVfVE9LRU4oJ2FyZzInKQorICAgICAgICAgIFBzaURvY1Rva2VuOkRPQ19UQUdfVkFMVUVfUlBBUkVOKCcpJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcbicpCisgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpS2V5d29yZDpjbGFzcygnY2xhc3MnKQorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUlkZW50aWZpZXI6QygnQycpCisgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvamF2YWRvY1BhcnNpbmcvU2VlVGFnMTYuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvamF2YWRvY1BhcnNpbmcvU2VlVGFnMTYuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZDc0OGU2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9qYXZhZG9jUGFyc2luZy9TZWVUYWcxNi5qYXZhCkBAIC0wLDAgKzEsNCBAQAorLyoqCisgKiBAc2VlIFN0cmluZyNlcXVhbHMoaW50LCBpbnQsIGJ5dGVbXSwgaW50KQorICovCitjbGFzcyBDe30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2phdmFkb2NQYXJzaW5nL1NlZVRhZzE2LnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvamF2YWRvY1BhcnNpbmcvU2VlVGFnMTYudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNkMWZhMjYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2phdmFkb2NQYXJzaW5nL1NlZVRhZzE2LnR4dApAQCAtMCwwICsxLDYwIEBACitQc2lKYXZhRmlsZTpTZWVUYWcxNi5qYXZhCisgIFBzaUltcG9ydExpc3QKKyAgICA8ZW1wdHkgbGlzdD4KKyAgUHNpQ2xhc3M6QworICAgIFBzaURvY0NvbW1lbnQKKyAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0xFQURJTkdfQVNURVJJU0tTKCcqJykKKyAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0RBVEEoJyAnKQorICAgICAgUHNpRG9jVGFnOkBzZWUKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX1RBR19OQU1FKCdAc2VlJykKKyAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgIFBzaUVsZW1lbnQoRE9DX01FVEhPRF9PUl9GSUVMRF9SRUYpCisgICAgICAgICAgUHNpRWxlbWVudChET0NfUkVGRVJFTkNFX0hPTERFUikKKyAgICAgICAgICAgIFBzaUphdmFDb2RlUmVmZXJlbmNlRWxlbWVudDpTdHJpbmcKKyAgICAgICAgICAgICAgUHNpSWRlbnRpZmllcjpTdHJpbmcoJ1N0cmluZycpCisgICAgICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICBQc2lEb2NUb2tlbjpET0NfVEFHX1ZBTFVFX1NIQVJQX1RPS0VOKCcjJykKKyAgICAgICAgICBQc2lEb2NUb2tlbjpET0NfVEFHX1ZBTFVFX1RPS0VOKCdlcXVhbHMnKQorICAgICAgICAgIFBzaURvY1Rva2VuOkRPQ19UQUdfVkFMVUVfTFBBUkVOKCcoJykKKyAgICAgICAgICBQc2lFbGVtZW50KERPQ19UQUdfVkFMVUVfRUxFTUVOVCkKKyAgICAgICAgICAgIFBzaUVsZW1lbnQoRE9DX1RZUEVfSE9MREVSKQorICAgICAgICAgICAgICBQc2lUeXBlRWxlbWVudDppbnQKKyAgICAgICAgICAgICAgICBQc2lLZXl3b3JkOmludCgnaW50JykKKyAgICAgICAgICAgIFBzaURvY1Rva2VuOkRPQ19UQUdfVkFMVUVfQ09NTUEoJywnKQorICAgICAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgICAgICBQc2lFbGVtZW50KERPQ19UWVBFX0hPTERFUikKKyAgICAgICAgICAgICAgUHNpVHlwZUVsZW1lbnQ6aW50CisgICAgICAgICAgICAgICAgUHNpS2V5d29yZDppbnQoJ2ludCcpCisgICAgICAgICAgICBQc2lEb2NUb2tlbjpET0NfVEFHX1ZBTFVFX0NPTU1BKCcsJykKKyAgICAgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICAgICAgUHNpRWxlbWVudChET0NfVFlQRV9IT0xERVIpCisgICAgICAgICAgICAgIFBzaVR5cGVFbGVtZW50OmJ5dGVbXQorICAgICAgICAgICAgICAgIFBzaVR5cGVFbGVtZW50OmJ5dGUKKyAgICAgICAgICAgICAgICAgIFBzaUtleXdvcmQ6Ynl0ZSgnYnl0ZScpCisgICAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDS0VUKCdbJykKKyAgICAgICAgICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNLRVQoJ10nKQorICAgICAgICAgICAgUHNpRG9jVG9rZW46RE9DX1RBR19WQUxVRV9DT01NQSgnLCcpCisgICAgICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgICAgICAgIFBzaUVsZW1lbnQoRE9DX1RZUEVfSE9MREVSKQorICAgICAgICAgICAgICBQc2lUeXBlRWxlbWVudDppbnQKKyAgICAgICAgICAgICAgICBQc2lLZXl3b3JkOmludCgnaW50JykKKyAgICAgICAgICBQc2lEb2NUb2tlbjpET0NfVEFHX1ZBTFVFX1JQQVJFTignKScpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4nKQorICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUtleXdvcmQ6Y2xhc3MoJ2NsYXNzJykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lJZGVudGlmaWVyOkMoJ0MnKQorICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2phdmFkb2NQYXJzaW5nL1NlZVRhZzIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvamF2YWRvY1BhcnNpbmcvU2VlVGFnMi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjliNzg0MTgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2phdmFkb2NQYXJzaW5nL1NlZVRhZzIuamF2YQpAQCAtMCwwICsxLDQgQEAKKy8qKgorICogQHNlZSBTdHJpbmcgCisgKi8KK2NsYXNzIEN7fQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvamF2YWRvY1BhcnNpbmcvU2VlVGFnMi50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2phdmFkb2NQYXJzaW5nL1NlZVRhZzIudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRmMGY5ZjMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2phdmFkb2NQYXJzaW5nL1NlZVRhZzIudHh0CkBAIC0wLDAgKzEsMzMgQEAKK1BzaUphdmFGaWxlOlNlZVRhZzIuamF2YQorICBQc2lJbXBvcnRMaXN0CisgICAgPGVtcHR5IGxpc3Q+CisgIFBzaUNsYXNzOkMKKyAgICBQc2lEb2NDb21tZW50CisgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9MRUFESU5HX0FTVEVSSVNLUygnKicpCisgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9EQVRBKCcgJykKKyAgICAgIFBzaURvY1RhZzpAc2VlCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19UQUdfTkFNRSgnQHNlZScpCisgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICBQc2lFbGVtZW50KERPQ19SRUZFUkVOQ0VfSE9MREVSKQorICAgICAgICAgIFBzaUphdmFDb2RlUmVmZXJlbmNlRWxlbWVudDpTdHJpbmcKKyAgICAgICAgICAgIFBzaUlkZW50aWZpZXI6U3RyaW5nKCdTdHJpbmcnKQorICAgICAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVdoaXRlU3BhY2UoJyBcbiAnKQorICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4nKQorICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUtleXdvcmQ6Y2xhc3MoJ2NsYXNzJykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lJZGVudGlmaWVyOkMoJ0MnKQorICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2phdmFkb2NQYXJzaW5nL1NlZVRhZzMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvamF2YWRvY1BhcnNpbmcvU2VlVGFnMy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZlZDRmMDcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2phdmFkb2NQYXJzaW5nL1NlZVRhZzMuamF2YQpAQCAtMCwwICsxLDQgQEAKKy8qKgorICogQHNlZSBTdHJpbmcjZXF1YWxzKE9iamVjdCkKKyAqLworY2xhc3MgQ3t9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9qYXZhZG9jUGFyc2luZy9TZWVUYWczLnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvamF2YWRvY1BhcnNpbmcvU2VlVGFnMy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjAxOGM1YQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvamF2YWRvY1BhcnNpbmcvU2VlVGFnMy50eHQKQEAgLTAsMCArMSw0NSBAQAorUHNpSmF2YUZpbGU6U2VlVGFnMy5qYXZhCisgIFBzaUltcG9ydExpc3QKKyAgICA8ZW1wdHkgbGlzdD4KKyAgUHNpQ2xhc3M6QworICAgIFBzaURvY0NvbW1lbnQKKyAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0xFQURJTkdfQVNURVJJU0tTKCcqJykKKyAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0RBVEEoJyAnKQorICAgICAgUHNpRG9jVGFnOkBzZWUKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX1RBR19OQU1FKCdAc2VlJykKKyAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgIFBzaUVsZW1lbnQoRE9DX01FVEhPRF9PUl9GSUVMRF9SRUYpCisgICAgICAgICAgUHNpRWxlbWVudChET0NfUkVGRVJFTkNFX0hPTERFUikKKyAgICAgICAgICAgIFBzaUphdmFDb2RlUmVmZXJlbmNlRWxlbWVudDpTdHJpbmcKKyAgICAgICAgICAgICAgUHNpSWRlbnRpZmllcjpTdHJpbmcoJ1N0cmluZycpCisgICAgICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICBQc2lEb2NUb2tlbjpET0NfVEFHX1ZBTFVFX1NIQVJQX1RPS0VOKCcjJykKKyAgICAgICAgICBQc2lEb2NUb2tlbjpET0NfVEFHX1ZBTFVFX1RPS0VOKCdlcXVhbHMnKQorICAgICAgICAgIFBzaURvY1Rva2VuOkRPQ19UQUdfVkFMVUVfTFBBUkVOKCcoJykKKyAgICAgICAgICBQc2lFbGVtZW50KERPQ19UQUdfVkFMVUVfRUxFTUVOVCkKKyAgICAgICAgICAgIFBzaUVsZW1lbnQoRE9DX1RZUEVfSE9MREVSKQorICAgICAgICAgICAgICBQc2lUeXBlRWxlbWVudDpPYmplY3QKKyAgICAgICAgICAgICAgICBQc2lKYXZhQ29kZVJlZmVyZW5jZUVsZW1lbnQ6T2JqZWN0CisgICAgICAgICAgICAgICAgICBQc2lJZGVudGlmaWVyOk9iamVjdCgnT2JqZWN0JykKKyAgICAgICAgICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgUHNpRG9jVG9rZW46RE9DX1RBR19WQUxVRV9SUEFSRU4oJyknKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuJykKKyAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lLZXl3b3JkOmNsYXNzKCdjbGFzcycpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSWRlbnRpZmllcjpDKCdDJykKKyAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9qYXZhZG9jUGFyc2luZy9TZWVUYWc0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2phdmFkb2NQYXJzaW5nL1NlZVRhZzQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jODNlYjQ3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9qYXZhZG9jUGFyc2luZy9TZWVUYWc0LmphdmEKQEAgLTAsMCArMSw0IEBACisvKioKKyAqIEBzZWUgU3RyaW5nI2VxdWFscworICovCitjbGFzcyBDe30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2phdmFkb2NQYXJzaW5nL1NlZVRhZzQudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9qYXZhZG9jUGFyc2luZy9TZWVUYWc0LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iODNmZjE2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9qYXZhZG9jUGFyc2luZy9TZWVUYWc0LnR4dApAQCAtMCwwICsxLDM2IEBACitQc2lKYXZhRmlsZTpTZWVUYWc0LmphdmEKKyAgUHNpSW1wb3J0TGlzdAorICAgIDxlbXB0eSBsaXN0PgorICBQc2lDbGFzczpDCisgICAgUHNpRG9jQ29tbWVudAorICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfTEVBRElOR19BU1RFUklTS1MoJyonKQorICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfREFUQSgnICcpCisgICAgICBQc2lEb2NUYWc6QHNlZQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfVEFHX05BTUUoJ0BzZWUnKQorICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgICAgUHNpRWxlbWVudChET0NfTUVUSE9EX09SX0ZJRUxEX1JFRikKKyAgICAgICAgICBQc2lFbGVtZW50KERPQ19SRUZFUkVOQ0VfSE9MREVSKQorICAgICAgICAgICAgUHNpSmF2YUNvZGVSZWZlcmVuY2VFbGVtZW50OlN0cmluZworICAgICAgICAgICAgICBQc2lJZGVudGlmaWVyOlN0cmluZygnU3RyaW5nJykKKyAgICAgICAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgIFBzaURvY1Rva2VuOkRPQ19UQUdfVkFMVUVfU0hBUlBfVE9LRU4oJyMnKQorICAgICAgICAgIFBzaURvY1Rva2VuOkRPQ19UQUdfVkFMVUVfVE9LRU4oJ2VxdWFscycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4nKQorICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUtleXdvcmQ6Y2xhc3MoJ2NsYXNzJykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lJZGVudGlmaWVyOkMoJ0MnKQorICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2phdmFkb2NQYXJzaW5nL1NlZVRhZzUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvamF2YWRvY1BhcnNpbmcvU2VlVGFnNS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFjNDZmYTIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2phdmFkb2NQYXJzaW5nL1NlZVRhZzUuamF2YQpAQCAtMCwwICsxLDQgQEAKKy8qKgorICogQHNlZSBqYXZhLmxhbmcuT2JqZWN0I3dhaXQobG9uZykKKyAqLworY2xhc3MgQ3t9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9qYXZhZG9jUGFyc2luZy9TZWVUYWc1LnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvamF2YWRvY1BhcnNpbmcvU2VlVGFnNS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTkwM2U3YwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvamF2YWRvY1BhcnNpbmcvU2VlVGFnNS50eHQKQEAgLTAsMCArMSw1MiBAQAorUHNpSmF2YUZpbGU6U2VlVGFnNS5qYXZhCisgIFBzaUltcG9ydExpc3QKKyAgICA8ZW1wdHkgbGlzdD4KKyAgUHNpQ2xhc3M6QworICAgIFBzaURvY0NvbW1lbnQKKyAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0xFQURJTkdfQVNURVJJU0tTKCcqJykKKyAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0RBVEEoJyAnKQorICAgICAgUHNpRG9jVGFnOkBzZWUKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX1RBR19OQU1FKCdAc2VlJykKKyAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgIFBzaUVsZW1lbnQoRE9DX01FVEhPRF9PUl9GSUVMRF9SRUYpCisgICAgICAgICAgUHNpRWxlbWVudChET0NfUkVGRVJFTkNFX0hPTERFUikKKyAgICAgICAgICAgIFBzaUphdmFDb2RlUmVmZXJlbmNlRWxlbWVudDpqYXZhLmxhbmcuT2JqZWN0CisgICAgICAgICAgICAgIFBzaUphdmFDb2RlUmVmZXJlbmNlRWxlbWVudDpqYXZhLmxhbmcKKyAgICAgICAgICAgICAgICBQc2lKYXZhQ29kZVJlZmVyZW5jZUVsZW1lbnQ6amF2YQorICAgICAgICAgICAgICAgICAgUHNpSWRlbnRpZmllcjpqYXZhKCdqYXZhJykKKyAgICAgICAgICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOkRPVCgnLicpCisgICAgICAgICAgICAgICAgUHNpSWRlbnRpZmllcjpsYW5nKCdsYW5nJykKKyAgICAgICAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOkRPVCgnLicpCisgICAgICAgICAgICAgIFBzaUlkZW50aWZpZXI6T2JqZWN0KCdPYmplY3QnKQorICAgICAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgUHNpRG9jVG9rZW46RE9DX1RBR19WQUxVRV9TSEFSUF9UT0tFTignIycpCisgICAgICAgICAgUHNpRG9jVG9rZW46RE9DX1RBR19WQUxVRV9UT0tFTignd2FpdCcpCisgICAgICAgICAgUHNpRG9jVG9rZW46RE9DX1RBR19WQUxVRV9MUEFSRU4oJygnKQorICAgICAgICAgIFBzaUVsZW1lbnQoRE9DX1RBR19WQUxVRV9FTEVNRU5UKQorICAgICAgICAgICAgUHNpRWxlbWVudChET0NfVFlQRV9IT0xERVIpCisgICAgICAgICAgICAgIFBzaVR5cGVFbGVtZW50OmxvbmcKKyAgICAgICAgICAgICAgICBQc2lLZXl3b3JkOmxvbmcoJ2xvbmcnKQorICAgICAgICAgIFBzaURvY1Rva2VuOkRPQ19UQUdfVkFMVUVfUlBBUkVOKCcpJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcbicpCisgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpS2V5d29yZDpjbGFzcygnY2xhc3MnKQorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUlkZW50aWZpZXI6QygnQycpCisgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvamF2YWRvY1BhcnNpbmcvU2VlVGFnNi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9qYXZhZG9jUGFyc2luZy9TZWVUYWc2LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGE2NmUwOQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvamF2YWRvY1BhcnNpbmcvU2VlVGFnNi5qYXZhCkBAIC0wLDAgKzEsNCBAQAorLyoqCisgKiBAc2VlIENoYXJhY3RlciNNQVhfUkFESVgKKyAqLworY2xhc3MgQ3t9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9qYXZhZG9jUGFyc2luZy9TZWVUYWc2LnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvamF2YWRvY1BhcnNpbmcvU2VlVGFnNi50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2FjM2FlMAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvamF2YWRvY1BhcnNpbmcvU2VlVGFnNi50eHQKQEAgLTAsMCArMSwzNiBAQAorUHNpSmF2YUZpbGU6U2VlVGFnNi5qYXZhCisgIFBzaUltcG9ydExpc3QKKyAgICA8ZW1wdHkgbGlzdD4KKyAgUHNpQ2xhc3M6QworICAgIFBzaURvY0NvbW1lbnQKKyAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0xFQURJTkdfQVNURVJJU0tTKCcqJykKKyAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0RBVEEoJyAnKQorICAgICAgUHNpRG9jVGFnOkBzZWUKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX1RBR19OQU1FKCdAc2VlJykKKyAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgIFBzaUVsZW1lbnQoRE9DX01FVEhPRF9PUl9GSUVMRF9SRUYpCisgICAgICAgICAgUHNpRWxlbWVudChET0NfUkVGRVJFTkNFX0hPTERFUikKKyAgICAgICAgICAgIFBzaUphdmFDb2RlUmVmZXJlbmNlRWxlbWVudDpDaGFyYWN0ZXIKKyAgICAgICAgICAgICAgUHNpSWRlbnRpZmllcjpDaGFyYWN0ZXIoJ0NoYXJhY3RlcicpCisgICAgICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICBQc2lEb2NUb2tlbjpET0NfVEFHX1ZBTFVFX1NIQVJQX1RPS0VOKCcjJykKKyAgICAgICAgICBQc2lEb2NUb2tlbjpET0NfVEFHX1ZBTFVFX1RPS0VOKCdNQVhfUkFESVgnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuJykKKyAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lLZXl3b3JkOmNsYXNzKCdjbGFzcycpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSWRlbnRpZmllcjpDKCdDJykKKyAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9qYXZhZG9jUGFyc2luZy9TZWVUYWc3LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2phdmFkb2NQYXJzaW5nL1NlZVRhZzcuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYWEwOTdiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9qYXZhZG9jUGFyc2luZy9TZWVUYWc3LmphdmEKQEAgLTAsMCArMSw0IEBACisvKioKKyAqIEBzZWUgPGEgaHJlZj0ic3BlYy5odG1sIj5KYXZhIFNwZWM8L2E+CisgKi8KK2NsYXNzIEN7fQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvamF2YWRvY1BhcnNpbmcvU2VlVGFnNy50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2phdmFkb2NQYXJzaW5nL1NlZVRhZzcudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjljZDIxOGQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2phdmFkb2NQYXJzaW5nL1NlZVRhZzcudHh0CkBAIC0wLDAgKzEsMjkgQEAKK1BzaUphdmFGaWxlOlNlZVRhZzcuamF2YQorICBQc2lJbXBvcnRMaXN0CisgICAgPGVtcHR5IGxpc3Q+CisgIFBzaUNsYXNzOkMKKyAgICBQc2lEb2NDb21tZW50CisgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9MRUFESU5HX0FTVEVSSVNLUygnKicpCisgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9EQVRBKCcgJykKKyAgICAgIFBzaURvY1RhZzpAc2VlCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19UQUdfTkFNRSgnQHNlZScpCisgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9EQVRBKCc8YSBocmVmPSJzcGVjLmh0bWwiPkphdmEgU3BlYzwvYT4nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuJykKKyAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lLZXl3b3JkOmNsYXNzKCdjbGFzcycpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSWRlbnRpZmllcjpDKCdDJykKKyAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9qYXZhZG9jUGFyc2luZy9TZWVUYWc4LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2phdmFkb2NQYXJzaW5nL1NlZVRhZzguamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZmQ1MTcxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9qYXZhZG9jUGFyc2luZy9TZWVUYWc4LmphdmEKQEAgLTAsMCArMSw0IEBACisvKioKKyAqIEBzZWUgIlRoZSBKYXZhIFByb2dyYW1taW5nIExhbmd1YWdlIiAKKyAqLworY2xhc3MgQ3t9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9qYXZhZG9jUGFyc2luZy9TZWVUYWc4LnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvamF2YWRvY1BhcnNpbmcvU2VlVGFnOC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjYxNzVmNQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvamF2YWRvY1BhcnNpbmcvU2VlVGFnOC50eHQKQEAgLTAsMCArMSwyOSBAQAorUHNpSmF2YUZpbGU6U2VlVGFnOC5qYXZhCisgIFBzaUltcG9ydExpc3QKKyAgICA8ZW1wdHkgbGlzdD4KKyAgUHNpQ2xhc3M6QworICAgIFBzaURvY0NvbW1lbnQKKyAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0xFQURJTkdfQVNURVJJU0tTKCcqJykKKyAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0RBVEEoJyAnKQorICAgICAgUHNpRG9jVGFnOkBzZWUKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX1RBR19OQU1FKCdAc2VlJykKKyAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0RBVEEoJyJUaGUgSmF2YSBQcm9ncmFtbWluZyBMYW5ndWFnZSIgJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcbicpCisgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpS2V5d29yZDpjbGFzcygnY2xhc3MnKQorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUlkZW50aWZpZXI6QygnQycpCisgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvamF2YWRvY1BhcnNpbmcvU2VlVGFnOS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9qYXZhZG9jUGFyc2luZy9TZWVUYWc5LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWRlMDMwMgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvamF2YWRvY1BhcnNpbmcvU2VlVGFnOS5qYXZhCkBAIC0wLDAgKzEsNCBAQAorLyoqCisgKiBAc2VlIGVxdWFscyhsb25nLCBsb25nKQorICovCitjbGFzcyBDe30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2phdmFkb2NQYXJzaW5nL1NlZVRhZzkudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9qYXZhZG9jUGFyc2luZy9TZWVUYWc5LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43YjJiMTBhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9qYXZhZG9jUGFyc2luZy9TZWVUYWc5LnR4dApAQCAtMCwwICsxLDQ0IEBACitQc2lKYXZhRmlsZTpTZWVUYWc5LmphdmEKKyAgUHNpSW1wb3J0TGlzdAorICAgIDxlbXB0eSBsaXN0PgorICBQc2lDbGFzczpDCisgICAgUHNpRG9jQ29tbWVudAorICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfTEVBRElOR19BU1RFUklTS1MoJyonKQorICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfREFUQSgnICcpCisgICAgICBQc2lEb2NUYWc6QHNlZQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfVEFHX05BTUUoJ0BzZWUnKQorICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgICAgUHNpRWxlbWVudChET0NfUkVGRVJFTkNFX0hPTERFUikKKyAgICAgICAgICBQc2lKYXZhQ29kZVJlZmVyZW5jZUVsZW1lbnQ6ZXF1YWxzCisgICAgICAgICAgICBQc2lJZGVudGlmaWVyOmVxdWFscygnZXF1YWxzJykKKyAgICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgIFBzaUVsZW1lbnQoRE9DX1RBR19WQUxVRV9FTEVNRU5UKQorICAgICAgICAgIFBzaURvY1Rva2VuOkRPQ19UQUdfVkFMVUVfTFBBUkVOKCcoJykKKyAgICAgICAgUHNpRWxlbWVudChET0NfUkVGRVJFTkNFX0hPTERFUikKKyAgICAgICAgICBQc2lLZXl3b3JkOmxvbmcoJ2xvbmcnKQorICAgICAgICBQc2lFbGVtZW50KERPQ19UQUdfVkFMVUVfRUxFTUVOVCkKKyAgICAgICAgICBQc2lEb2NUb2tlbjpET0NfVEFHX1ZBTFVFX0NPTU1BKCcsJykKKyAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgIFBzaUVsZW1lbnQoRE9DX1JFRkVSRU5DRV9IT0xERVIpCisgICAgICAgICAgUHNpS2V5d29yZDpsb25nKCdsb25nJykKKyAgICAgICAgUHNpRWxlbWVudChET0NfVEFHX1ZBTFVFX0VMRU1FTlQpCisgICAgICAgICAgUHNpRG9jVG9rZW46RE9DX1RBR19WQUxVRV9SUEFSRU4oJyknKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuJykKKyAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lLZXl3b3JkOmNsYXNzKCdjbGFzcycpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSWRlbnRpZmllcjpDKCdDJykKKyAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9qYXZhZG9jUGFyc2luZy9TZXBhcmF0ZWQwMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9qYXZhZG9jUGFyc2luZy9TZXBhcmF0ZWQwMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIwMWVhN2IKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2phdmFkb2NQYXJzaW5nL1NlcGFyYXRlZDAxLmphdmEKQEAgLTAsMCArMSw4IEBACitjbGFzcyBYeworICAvKioKKyAgICogVGhlIG1ldGhvZC4KKyAgICovCisgIC8vIENvbW1lbnQKKyAgLyogQW5vdGhlciBjb21tZW50ICovCisgIHZvaWQgZigpe30KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvamF2YWRvY1BhcnNpbmcvU2VwYXJhdGVkMDEudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9qYXZhZG9jUGFyc2luZy9TZXBhcmF0ZWQwMS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTUzYzgwMAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvamF2YWRvY1BhcnNpbmcvU2VwYXJhdGVkMDEudHh0CkBAIC0wLDAgKzEsNDggQEAKK1BzaUphdmFGaWxlOlNlcGFyYXRlZDAxLmphdmEKKyAgUHNpSW1wb3J0TGlzdAorICAgIDxlbXB0eSBsaXN0PgorICBQc2lDbGFzczpYCisgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpS2V5d29yZDpjbGFzcygnY2xhc3MnKQorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUlkZW50aWZpZXI6WCgnWCcpCisgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAnKQorICAgIFBzaU1ldGhvZDpmCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgICcpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0xFQURJTkdfQVNURVJJU0tTKCcqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfREFUQSgnIFRoZSBtZXRob2QuJykKKyAgICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gICAnKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAnKQorICAgICAgUHNpQ29tbWVudChFTkRfT0ZfTElORV9DT01NRU5UKSgnLy8gQ29tbWVudCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgJykKKyAgICAgIFBzaUNvbW1lbnQoQ19TVFlMRV9DT01NRU5UKSgnLyogQW5vdGhlciBjb21tZW50ICovJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmYoJ2YnKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4nKQorICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvamF2YWRvY1BhcnNpbmcvU3ltYm9sczAxLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2phdmFkb2NQYXJzaW5nL1N5bWJvbHMwMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQxNzU3YjAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2phdmFkb2NQYXJzaW5nL1N5bWJvbHMwMS5qYXZhCkBAIC0wLDAgKzEsNSBAQAorLyoqCisgKiB+YCFAIyQlXiYqKClfK3xcPS19e1tdIjo7Jz8+PCwuLworICovCisKK2NsYXNzIFh7fQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9qYXZhZG9jUGFyc2luZy9TeW1ib2xzMDEudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9qYXZhZG9jUGFyc2luZy9TeW1ib2xzMDEudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY2MWNjMzcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2phdmFkb2NQYXJzaW5nL1N5bWJvbHMwMS50eHQKQEAgLTAsMCArMSwyOCBAQAorUHNpSmF2YUZpbGU6U3ltYm9sczAxLmphdmEKKyAgUHNpSW1wb3J0TGlzdAorICAgIDxlbXB0eSBsaXN0PgorICBQc2lDbGFzczpYCisgICAgUHNpRG9jQ29tbWVudAorICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfTEVBRElOR19BU1RFUklTS1MoJyonKQorICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfREFUQSgnIH5gIUAjJCVeJiooKV8rfFw9LScpCisgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9EQVRBKCd9JykKKyAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0RBVEEoJ3snKQorICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfREFUQSgnW10iOjsnPz48LC4vJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuJykKKyAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lLZXl3b3JkOmNsYXNzKCdjbGFzcycpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSWRlbnRpZmllcjpYKCdYJykKKyAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9qYXZhZG9jUGFyc2luZy9TeW1ib2xzMDIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvamF2YWRvY1BhcnNpbmcvU3ltYm9sczAyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzZhNmQzMgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvamF2YWRvY1BhcnNpbmcvU3ltYm9sczAyLmphdmEKQEAgLTAsMCArMSw1IEBACisvKioKKyAqIEBzZWUgT2JqZWN0IH5gIUAjJCVeJiooKV8rfFw9LX17W10iOjsnPz48LC4vCisgKi8KKworY2xhc3MgWHt9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2phdmFkb2NQYXJzaW5nL1N5bWJvbHMwMi50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2phdmFkb2NQYXJzaW5nL1N5bWJvbHMwMi50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzk2ZjRmNwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvamF2YWRvY1BhcnNpbmcvU3ltYm9sczAyLnR4dApAQCAtMCwwICsxLDM4IEBACitQc2lKYXZhRmlsZTpTeW1ib2xzMDIuamF2YQorICBQc2lJbXBvcnRMaXN0CisgICAgPGVtcHR5IGxpc3Q+CisgIFBzaUNsYXNzOlgKKyAgICBQc2lEb2NDb21tZW50CisgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9MRUFESU5HX0FTVEVSSVNLUygnKicpCisgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9EQVRBKCcgJykKKyAgICAgIFBzaURvY1RhZzpAc2VlCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19UQUdfTkFNRSgnQHNlZScpCisgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICBQc2lFbGVtZW50KERPQ19SRUZFUkVOQ0VfSE9MREVSKQorICAgICAgICAgIFBzaUphdmFDb2RlUmVmZXJlbmNlRWxlbWVudDpPYmplY3QKKyAgICAgICAgICAgIFBzaUlkZW50aWZpZXI6T2JqZWN0KCdPYmplY3QnKQorICAgICAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0RBVEEoJ35gIUAjJCVeJiooKV8rfFw9LScpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0RBVEEoJ30nKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9EQVRBKCd7JykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfREFUQSgnW10iOjsnPz48LC4vJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuJykKKyAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lLZXl3b3JkOmNsYXNzKCdjbGFzcycpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSWRlbnRpZmllcjpYKCdYJykKKyAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9qYXZhZG9jUGFyc2luZy9TeW1ib2xzMDMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvamF2YWRvY1BhcnNpbmcvU3ltYm9sczAzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzVjOGM5YQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvamF2YWRvY1BhcnNpbmcvU3ltYm9sczAzLmphdmEKQEAgLTAsMCArMSw1IEBACisvKioKKyAqIHtAbGluayBPYmplY3QgfmAhQCMkJV4mKigpXyt8XD0tfXtbXSI6Oyc/PjwsLi8KKyAqLworCitjbGFzcyBYe30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvamF2YWRvY1BhcnNpbmcvU3ltYm9sczAzLnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvamF2YWRvY1BhcnNpbmcvU3ltYm9sczAzLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NGViMDY2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9qYXZhZG9jUGFyc2luZy9TeW1ib2xzMDMudHh0CkBAIC0wLDAgKzEsMzkgQEAKK1BzaUphdmFGaWxlOlN5bWJvbHMwMy5qYXZhCisgIFBzaUltcG9ydExpc3QKKyAgICA8ZW1wdHkgbGlzdD4KKyAgUHNpQ2xhc3M6WAorICAgIFBzaURvY0NvbW1lbnQKKyAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0xFQURJTkdfQVNURVJJU0tTKCcqJykKKyAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0RBVEEoJyAnKQorICAgICAgUHNpSW5saW5lRG9jVGFnOkBsaW5rCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19JTkxJTkVfVEFHX1NUQVJUKCd7JykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX1RBR19OQU1FKCdAbGluaycpCisgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICBQc2lFbGVtZW50KERPQ19SRUZFUkVOQ0VfSE9MREVSKQorICAgICAgICAgIFBzaUphdmFDb2RlUmVmZXJlbmNlRWxlbWVudDpPYmplY3QKKyAgICAgICAgICAgIFBzaUlkZW50aWZpZXI6T2JqZWN0KCdPYmplY3QnKQorICAgICAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0RBVEEoJ35gIUAjJCVeJiooKV8rfFw9LScpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19JTkxJTkVfVEFHX0VORCgnfScpCisgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9EQVRBKCd7JykKKyAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0RBVEEoJ1tdIjo7Jz8+PCwuLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbicpCisgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpS2V5d29yZDpjbGFzcygnY2xhc3MnKQorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUlkZW50aWZpZXI6WCgnWCcpCisgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvamF2YWRvY1BhcnNpbmcvU3ltYm9sczA0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2phdmFkb2NQYXJzaW5nL1N5bWJvbHMwNC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZlZmM2NzkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2phdmFkb2NQYXJzaW5nL1N5bWJvbHMwNC5qYXZhCkBAIC0wLDAgKzEsNSBAQAorLyoqCisgKiB7QGxpbmsgT2JqZWN0IH5gIUAjJCVeJiooKV8rfFw9LXt9W10iOjsnPz48LC4vCisgKi8KKworY2xhc3MgWHt9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2phdmFkb2NQYXJzaW5nL1N5bWJvbHMwNC50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2phdmFkb2NQYXJzaW5nL1N5bWJvbHMwNC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjc1YzQwMwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvamF2YWRvY1BhcnNpbmcvU3ltYm9sczA0LnR4dApAQCAtMCwwICsxLDM5IEBACitQc2lKYXZhRmlsZTpTeW1ib2xzMDQuamF2YQorICBQc2lJbXBvcnRMaXN0CisgICAgPGVtcHR5IGxpc3Q+CisgIFBzaUNsYXNzOlgKKyAgICBQc2lEb2NDb21tZW50CisgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9MRUFESU5HX0FTVEVSSVNLUygnKicpCisgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9EQVRBKCcgJykKKyAgICAgIFBzaUlubGluZURvY1RhZzpAbGluaworICAgICAgICBQc2lEb2NUb2tlbjpET0NfSU5MSU5FX1RBR19TVEFSVCgneycpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19UQUdfTkFNRSgnQGxpbmsnKQorICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgICAgUHNpRWxlbWVudChET0NfUkVGRVJFTkNFX0hPTERFUikKKyAgICAgICAgICBQc2lKYXZhQ29kZVJlZmVyZW5jZUVsZW1lbnQ6T2JqZWN0CisgICAgICAgICAgICBQc2lJZGVudGlmaWVyOk9iamVjdCgnT2JqZWN0JykKKyAgICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9EQVRBKCd+YCFAIyQlXiYqKClfK3xcPS0nKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9EQVRBKCd7JykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfREFUQSgnfScpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0RBVEEoJ1tdIjo7Jz8+PCwuLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgUHNpV2hpdGVTcGFjZSgnXG5cbicpCisgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpS2V5d29yZDpjbGFzcygnY2xhc3MnKQorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUlkZW50aWZpZXI6WCgnWCcpCisgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvamF2YWRvY1BhcnNpbmcvU3ltYm9sczA1LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2phdmFkb2NQYXJzaW5nL1N5bWJvbHMwNS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM4M2UzNjY3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9qYXZhZG9jUGFyc2luZy9TeW1ib2xzMDUuamF2YQpAQCAtMCwwICsxLDUgQEAKKy8qKgorICoge0BsaW5rIE9iamVjdCB+YCFAIyQlXiYqKClfK3xcPS17fVtdIjo7Jz8+PCwuL30gWWVzIQorICovCisKK2NsYXNzIFh7fQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9qYXZhZG9jUGFyc2luZy9TeW1ib2xzMDUudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9qYXZhZG9jUGFyc2luZy9TeW1ib2xzMDUudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk1OWI5YjYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2phdmFkb2NQYXJzaW5nL1N5bWJvbHMwNS50eHQKQEAgLTAsMCArMSw0MSBAQAorUHNpSmF2YUZpbGU6U3ltYm9sczA1LmphdmEKKyAgUHNpSW1wb3J0TGlzdAorICAgIDxlbXB0eSBsaXN0PgorICBQc2lDbGFzczpYCisgICAgUHNpRG9jQ29tbWVudAorICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfTEVBRElOR19BU1RFUklTS1MoJyonKQorICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfREFUQSgnICcpCisgICAgICBQc2lJbmxpbmVEb2NUYWc6QGxpbmsKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0lOTElORV9UQUdfU1RBUlQoJ3snKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfVEFHX05BTUUoJ0BsaW5rJykKKyAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgIFBzaUVsZW1lbnQoRE9DX1JFRkVSRU5DRV9IT0xERVIpCisgICAgICAgICAgUHNpSmF2YUNvZGVSZWZlcmVuY2VFbGVtZW50Ok9iamVjdAorICAgICAgICAgICAgUHNpSWRlbnRpZmllcjpPYmplY3QoJ09iamVjdCcpCisgICAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfREFUQSgnfmAhQCMkJV4mKigpXyt8XD0tJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfREFUQSgneycpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0RBVEEoJ30nKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9EQVRBKCdbXSI6Oyc/PjwsLi8nKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfSU5MSU5FX1RBR19FTkQoJ30nKQorICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfREFUQSgnIFllcyEnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4nKQorICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUtleXdvcmQ6Y2xhc3MoJ2NsYXNzJykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lJZGVudGlmaWVyOlgoJ1gnKQorICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2phdmFkb2NQYXJzaW5nL1RhZzAuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvamF2YWRvY1BhcnNpbmcvVGFnMC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA1YTZkYjkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2phdmFkb2NQYXJzaW5nL1RhZzAuamF2YQpAQCAtMCwwICsxLDQgQEAKKy8qKgorICogQHBhcmFtIHBhcmFtCisgKi8KK2NsYXNzIEN7fQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvamF2YWRvY1BhcnNpbmcvVGFnMC50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2phdmFkb2NQYXJzaW5nL1RhZzAudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFmNmE0YjEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2phdmFkb2NQYXJzaW5nL1RhZzAudHh0CkBAIC0wLDAgKzEsMzAgQEAKK1BzaUphdmFGaWxlOlRhZzAuamF2YQorICBQc2lJbXBvcnRMaXN0CisgICAgPGVtcHR5IGxpc3Q+CisgIFBzaUNsYXNzOkMKKyAgICBQc2lEb2NDb21tZW50CisgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9MRUFESU5HX0FTVEVSSVNLUygnKicpCisgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9EQVRBKCcgJykKKyAgICAgIFBzaURvY1RhZzpAcGFyYW0KKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX1RBR19OQU1FKCdAcGFyYW0nKQorICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgICAgUHNpRWxlbWVudChET0NfUEFSQU1FVEVSX1JFRikKKyAgICAgICAgICBQc2lEb2NUb2tlbjpET0NfVEFHX1ZBTFVFX1RPS0VOKCdwYXJhbScpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4nKQorICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUtleXdvcmQ6Y2xhc3MoJ2NsYXNzJykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lJZGVudGlmaWVyOkMoJ0MnKQorICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvamF2YWRvY1BhcnNpbmcvVGFnMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9qYXZhZG9jUGFyc2luZy9UYWcxLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWMyMmI0ZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvamF2YWRvY1BhcnNpbmcvVGFnMS5qYXZhCkBAIC0wLDAgKzEsNCBAQAorLyoqCisgKiBAcGFyYW0KKyAqLworY2xhc3MgQ3t9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9qYXZhZG9jUGFyc2luZy9UYWcxLnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvamF2YWRvY1BhcnNpbmcvVGFnMS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTA1MWYyZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvamF2YWRvY1BhcnNpbmcvVGFnMS50eHQKQEAgLTAsMCArMSwyNyBAQAorUHNpSmF2YUZpbGU6VGFnMS5qYXZhCisgIFBzaUltcG9ydExpc3QKKyAgICA8ZW1wdHkgbGlzdD4KKyAgUHNpQ2xhc3M6QworICAgIFBzaURvY0NvbW1lbnQKKyAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0xFQURJTkdfQVNURVJJU0tTKCcqJykKKyAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0RBVEEoJyAnKQorICAgICAgUHNpRG9jVGFnOkBwYXJhbQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfVEFHX05BTUUoJ0BwYXJhbScpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4nKQorICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUtleXdvcmQ6Y2xhc3MoJ2NsYXNzJykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lJZGVudGlmaWVyOkMoJ0MnKQorICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvamF2YWRvY1BhcnNpbmcvVGFnMi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9qYXZhZG9jUGFyc2luZy9UYWcyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDc4MWVlYgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvamF2YWRvY1BhcnNpbmcvVGFnMi5qYXZhCkBAIC0wLDAgKzEsNiBAQAorLyoqCisgKiBAcGFyYW0gdmFsdWUgdmFsdWUgdmFsdWUKKyAqIAl2YWx1ZQl2YWx1ZQorICogQHJldHVybiB2YWx1ZSB2YWx1ZQorICovCitjbGFzcyBDe30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2phdmFkb2NQYXJzaW5nL1RhZzIudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9qYXZhZG9jUGFyc2luZy9UYWcyLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MzMwOGJjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9qYXZhZG9jUGFyc2luZy9UYWcyLnR4dApAQCAtMCwwICsxLDQ1IEBACitQc2lKYXZhRmlsZTpUYWcyLmphdmEKKyAgUHNpSW1wb3J0TGlzdAorICAgIDxlbXB0eSBsaXN0PgorICBQc2lDbGFzczpDCisgICAgUHNpRG9jQ29tbWVudAorICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfTEVBRElOR19BU1RFUklTS1MoJyonKQorICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfREFUQSgnICcpCisgICAgICBQc2lEb2NUYWc6QHBhcmFtCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19UQUdfTkFNRSgnQHBhcmFtJykKKyAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgIFBzaUVsZW1lbnQoRE9DX1BBUkFNRVRFUl9SRUYpCisgICAgICAgICAgUHNpRG9jVG9rZW46RE9DX1RBR19WQUxVRV9UT0tFTigndmFsdWUnKQorICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfREFUQSgndmFsdWUgdmFsdWUnKQorICAgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9MRUFESU5HX0FTVEVSSVNLUygnKicpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0RBVEEoJyBcdHZhbHVlXHR2YWx1ZScpCisgICAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0xFQURJTkdfQVNURVJJU0tTKCcqJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfREFUQSgnICcpCisgICAgICBQc2lEb2NUYWc6QHJldHVybgorICAgICAgICBQc2lEb2NUb2tlbjpET0NfVEFHX05BTUUoJ0ByZXR1cm4nKQorICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgICAgUHNpRWxlbWVudChET0NfVEFHX1ZBTFVFX0VMRU1FTlQpCisgICAgICAgICAgUHNpRG9jVG9rZW46RE9DX1RBR19WQUxVRV9UT0tFTigndmFsdWUnKQorICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfREFUQSgndmFsdWUnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuJykKKyAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lLZXl3b3JkOmNsYXNzKCdjbGFzcycpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSWRlbnRpZmllcjpDKCdDJykKKyAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2phdmFkb2NQYXJzaW5nL1RhZzMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvamF2YWRvY1BhcnNpbmcvVGFnMy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRhYzk0YWQxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9qYXZhZG9jUGFyc2luZy9UYWczLmphdmEKQEAgLTAsMCArMSw1IEBACisvKioKKyAqIFNlZSB7QGxpbmsgc29tZUxpbmt9CisgKiBAcGFyYW0gc2VlIHtAbGluayAuLi59CisgKi8KK2NsYXNzIEN7fQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvamF2YWRvY1BhcnNpbmcvVGFnMy50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2phdmFkb2NQYXJzaW5nL1RhZzMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJlMWY1NTEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2phdmFkb2NQYXJzaW5nL1RhZzMudHh0CkBAIC0wLDAgKzEsNTEgQEAKK1BzaUphdmFGaWxlOlRhZzMuamF2YQorICBQc2lJbXBvcnRMaXN0CisgICAgPGVtcHR5IGxpc3Q+CisgIFBzaUNsYXNzOkMKKyAgICBQc2lEb2NDb21tZW50CisgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9MRUFESU5HX0FTVEVSSVNLUygnKicpCisgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9EQVRBKCcgU2VlICcpCisgICAgICBQc2lJbmxpbmVEb2NUYWc6QGxpbmsKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0lOTElORV9UQUdfU1RBUlQoJ3snKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfVEFHX05BTUUoJ0BsaW5rJykKKyAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgIFBzaUVsZW1lbnQoRE9DX1JFRkVSRU5DRV9IT0xERVIpCisgICAgICAgICAgUHNpSmF2YUNvZGVSZWZlcmVuY2VFbGVtZW50OnNvbWVMaW5rCisgICAgICAgICAgICBQc2lJZGVudGlmaWVyOnNvbWVMaW5rKCdzb21lTGluaycpCisgICAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICBQc2lEb2NUb2tlbjpET0NfSU5MSU5FX1RBR19FTkQoJ30nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0xFQURJTkdfQVNURVJJU0tTKCcqJykKKyAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0RBVEEoJyAnKQorICAgICAgUHNpRG9jVGFnOkBwYXJhbQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfVEFHX05BTUUoJ0BwYXJhbScpCisgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICBQc2lFbGVtZW50KERPQ19QQVJBTUVURVJfUkVGKQorICAgICAgICAgIFBzaURvY1Rva2VuOkRPQ19UQUdfVkFMVUVfVE9LRU4oJ3NlZScpCisgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICBQc2lJbmxpbmVEb2NUYWc6QGxpbmsKKyAgICAgICAgICBQc2lEb2NUb2tlbjpET0NfSU5MSU5FX1RBR19TVEFSVCgneycpCisgICAgICAgICAgUHNpRG9jVG9rZW46RE9DX1RBR19OQU1FKCdAbGluaycpCisgICAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgICAgUHNpRWxlbWVudChET0NfUkVGRVJFTkNFX0hPTERFUikKKyAgICAgICAgICAgIFBzaUphdmFUb2tlbjpFTExJUFNJUygnLi4uJykKKyAgICAgICAgICBQc2lEb2NUb2tlbjpET0NfSU5MSU5FX1RBR19FTkQoJ30nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuJykKKyAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lLZXl3b3JkOmNsYXNzKCdjbGFzcycpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSWRlbnRpZmllcjpDKCdDJykKKyAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9qYXZhZG9jUGFyc2luZy9UYWc0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2phdmFkb2NQYXJzaW5nL1RhZzQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42Y2E0MDkzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9qYXZhZG9jUGFyc2luZy9UYWc0LmphdmEKQEAgLTAsMCArMSw3IEBACitjbGFzcyBUZXN0IHsKKyAgICAvKioKKyAgICAgKiAgQHBhcmFtIHBhcmFtIHNvbWUgcGFyYW0KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBmb28oaW50IHBhcmFtKSB7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvamF2YWRvY1BhcnNpbmcvVGFnNC50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2phdmFkb2NQYXJzaW5nL1RhZzQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVhNjFhZWIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2phdmFkb2NQYXJzaW5nL1RhZzQudHh0CkBAIC0wLDAgKzEsNjIgQEAKK1BzaUphdmFGaWxlOlRhZzQuamF2YQorICBQc2lJbXBvcnRMaXN0CisgICAgPGVtcHR5IGxpc3Q+CisgIFBzaUNsYXNzOlRlc3QKKyAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lLZXl3b3JkOmNsYXNzKCdjbGFzcycpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSWRlbnRpZmllcjpUZXN0KCdUZXN0JykKKyAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4gICAgJykKKyAgICBQc2lNZXRob2Q6Zm9vCisgICAgICBQc2lEb2NDb21tZW50CisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgICAgJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfTEVBRElOR19BU1RFUklTS1MoJyonKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9EQVRBKCcgICcpCisgICAgICAgIFBzaURvY1RhZzpAcGFyYW0KKyAgICAgICAgICBQc2lEb2NUb2tlbjpET0NfVEFHX05BTUUoJ0BwYXJhbScpCisgICAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgICAgUHNpRWxlbWVudChET0NfUEFSQU1FVEVSX1JFRikKKyAgICAgICAgICAgIFBzaURvY1Rva2VuOkRPQ19UQUdfVkFMVUVfVE9LRU4oJ3BhcmFtJykKKyAgICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9EQVRBKCdzb21lIHBhcmFtJykKKyAgICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gICAgICcpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gICAgJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDpwdWJsaWMKKyAgICAgICAgUHNpS2V5d29yZDpwdWJsaWMoJ3B1YmxpYycpCisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KGludCBwYXJhbSkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpUGFyYW1ldGVyOnBhcmFtCisgICAgICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgUHNpVHlwZUVsZW1lbnQ6aW50CisgICAgICAgICAgICBQc2lLZXl3b3JkOmludCgnaW50JykKKyAgICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgICAgICBQc2lJZGVudGlmaWVyOnBhcmFtKCdwYXJhbScpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAgICcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuJykKKyAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvamF2YWRvY1BhcnNpbmcvVGFnNS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9qYXZhZG9jUGFyc2luZy9UYWc1LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGVmNzkxZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvamF2YWRvY1BhcnNpbmcvVGFnNS5qYXZhCkBAIC0wLDAgKzEsNCBAQAorLyoqCisgKiAgQGVqYjpiZWFuIHRoaXMgaXMgYW4gRUpCICAKKyAqLworY2xhc3MgVGVzdCB7IH0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL2phdmFkb2NQYXJzaW5nL1RhZzUudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9qYXZhZG9jUGFyc2luZy9UYWc1LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNmE5YjgwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9qYXZhZG9jUGFyc2luZy9UYWc1LnR4dApAQCAtMCwwICsxLDM0IEBACitQc2lKYXZhRmlsZTpUYWc1LmphdmEKKyAgUHNpSW1wb3J0TGlzdAorICAgIDxlbXB0eSBsaXN0PgorICBQc2lDbGFzczpUZXN0CisgICAgUHNpRG9jQ29tbWVudAorICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfTEVBRElOR19BU1RFUklTS1MoJyonKQorICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfREFUQSgnICAnKQorICAgICAgUHNpRG9jVGFnOkBlamI6YmVhbgorICAgICAgICBQc2lEb2NUb2tlbjpET0NfVEFHX05BTUUoJ0BlamI6YmVhbicpCisgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICBQc2lFbGVtZW50KERPQ19UQUdfVkFMVUVfRUxFTUVOVCkKKyAgICAgICAgICBQc2lEb2NUb2tlbjpET0NfVEFHX1ZBTFVFX1RPS0VOKCd0aGlzJykKKyAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0RBVEEoJ2lzIGFuIEVKQiAgJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcbicpCisgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpS2V5d29yZDpjbGFzcygnY2xhc3MnKQorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUlkZW50aWZpZXI6VGVzdCgnVGVzdCcpCisgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9qYXZhZG9jUGFyc2luZy9UeXBlUGFyYW0uamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvamF2YWRvY1BhcnNpbmcvVHlwZVBhcmFtLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTdkZmExZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvamF2YWRvY1BhcnNpbmcvVHlwZVBhcmFtLmphdmEKQEAgLTAsMCArMSw1IEBACisvKioKKyAqIEBwYXJhbSA8Vj4KKyAqLworcHVibGljIGludGVyZmFjZSBGdXR1cmU8Vj4geworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvamF2YWRvY1BhcnNpbmcvVHlwZVBhcmFtLnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvamF2YWRvY1BhcnNpbmcvVHlwZVBhcmFtLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZDBhNGJmZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvamF2YWRvY1BhcnNpbmcvVHlwZVBhcmFtLnR4dApAQCAtMCwwICsxLDQwIEBACitQc2lKYXZhRmlsZTpUeXBlUGFyYW0uamF2YQorICBQc2lJbXBvcnRMaXN0CisgICAgPGVtcHR5IGxpc3Q+CisgIFBzaUNsYXNzOkZ1dHVyZQorICAgIFBzaURvY0NvbW1lbnQKKyAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0xFQURJTkdfQVNURVJJU0tTKCcqJykKKyAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0RBVEEoJyAnKQorICAgICAgUHNpRG9jVGFnOkBwYXJhbQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfVEFHX05BTUUoJ0BwYXJhbScpCisgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICBQc2lFbGVtZW50KERPQ19QQVJBTUVURVJfUkVGKQorICAgICAgICAgIFBzaURvY1Rva2VuOkRPQ19UQUdfVkFMVUVfTFQoJzwnKQorICAgICAgICAgIFBzaURvY1Rva2VuOkRPQ19UQUdfVkFMVUVfVE9LRU4oJ1YnKQorICAgICAgICAgIFBzaURvY1Rva2VuOkRPQ19UQUdfVkFMVUVfR1QoJz4nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuJykKKyAgICBQc2lNb2RpZmllckxpc3Q6cHVibGljCisgICAgICBQc2lLZXl3b3JkOnB1YmxpYygncHVibGljJykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lLZXl3b3JkOmludGVyZmFjZSgnaW50ZXJmYWNlJykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lJZGVudGlmaWVyOkZ1dHVyZSgnRnV0dXJlJykKKyAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgUHNpSmF2YVRva2VuOkxUKCc8JykKKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXI6VgorICAgICAgICBQc2lJZGVudGlmaWVyOlYoJ1YnKQorICAgICAgICBQc2lFbGVtZW50KEVYVEVORFNfQk9VTkRfTElTVCkKKyAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUphdmFUb2tlbjpHVCgnPicpCisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4nKQorICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvc3RhdGVtZW50UGFyc2luZy9hc3NlcnQvTm9ybWFsMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9zdGF0ZW1lbnRQYXJzaW5nL2Fzc2VydC9Ob3JtYWwxLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjMxMGM5ZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvc3RhdGVtZW50UGFyc2luZy9hc3NlcnQvTm9ybWFsMS5qYXZhCkBAIC0wLDAgKzEsNSBAQAorY2xhc3MgRm9veworICB7CisgICAgYXNzZXJ0IGNvbmQ7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL3N0YXRlbWVudFBhcnNpbmcvYXNzZXJ0L05vcm1hbDEudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9zdGF0ZW1lbnRQYXJzaW5nL2Fzc2VydC9Ob3JtYWwxLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NDA1N2ZmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9zdGF0ZW1lbnRQYXJzaW5nL2Fzc2VydC9Ob3JtYWwxLnR4dApAQCAtMCwwICsxLDM1IEBACitQc2lKYXZhRmlsZTpOb3JtYWwxLmphdmEKKyAgUHNpSW1wb3J0TGlzdAorICAgIDxlbXB0eSBsaXN0PgorICBQc2lDbGFzczpGb28KKyAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lLZXl3b3JkOmNsYXNzKCdjbGFzcycpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSWRlbnRpZmllcjpGb28oJ0ZvbycpCisgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAnKQorICAgIFBzaUNsYXNzSW5pdGlhbGl6ZXIKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAgICcpCisgICAgICAgIFBzaUFzc2VydFN0YXRlbWVudAorICAgICAgICAgIFBzaUtleXdvcmQ6YXNzZXJ0KCdhc3NlcnQnKQorICAgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICAgIFBzaVJlZmVyZW5jZUV4cHJlc3Npb246Y29uZAorICAgICAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICAgIFBzaUlkZW50aWZpZXI6Y29uZCgnY29uZCcpCisgICAgICAgICAgUHNpSmF2YVRva2VuOlNFTUlDT0xPTignOycpCisgICAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAnKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcbicpCisgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9zdGF0ZW1lbnRQYXJzaW5nL2Fzc2VydC9Ob3JtYWwyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL3N0YXRlbWVudFBhcnNpbmcvYXNzZXJ0L05vcm1hbDIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NzdmNjBlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9zdGF0ZW1lbnRQYXJzaW5nL2Fzc2VydC9Ob3JtYWwyLmphdmEKQEAgLTAsMCArMSw1IEBACitjbGFzcyBGb297CisgIHsKKyAgICBhc3NlcnQgY29uZCA6IG1lc3NhZ2U7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL3N0YXRlbWVudFBhcnNpbmcvYXNzZXJ0L05vcm1hbDIudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9zdGF0ZW1lbnRQYXJzaW5nL2Fzc2VydC9Ob3JtYWwyLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jOTY1Zjg2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9zdGF0ZW1lbnRQYXJzaW5nL2Fzc2VydC9Ob3JtYWwyLnR4dApAQCAtMCwwICsxLDQyIEBACitQc2lKYXZhRmlsZTpOb3JtYWwyLmphdmEKKyAgUHNpSW1wb3J0TGlzdAorICAgIDxlbXB0eSBsaXN0PgorICBQc2lDbGFzczpGb28KKyAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lLZXl3b3JkOmNsYXNzKCdjbGFzcycpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSWRlbnRpZmllcjpGb28oJ0ZvbycpCisgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAnKQorICAgIFBzaUNsYXNzSW5pdGlhbGl6ZXIKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAgICcpCisgICAgICAgIFBzaUFzc2VydFN0YXRlbWVudAorICAgICAgICAgIFBzaUtleXdvcmQ6YXNzZXJ0KCdhc3NlcnQnKQorICAgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICAgIFBzaVJlZmVyZW5jZUV4cHJlc3Npb246Y29uZAorICAgICAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICAgIFBzaUlkZW50aWZpZXI6Y29uZCgnY29uZCcpCisgICAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgICAgUHNpSmF2YVRva2VuOkNPTE9OKCc6JykKKyAgICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgICAgICBQc2lSZWZlcmVuY2VFeHByZXNzaW9uOm1lc3NhZ2UKKyAgICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgICBQc2lJZGVudGlmaWVyOm1lc3NhZ2UoJ21lc3NhZ2UnKQorICAgICAgICAgIFBzaUphdmFUb2tlbjpTRU1JQ09MT04oJzsnKQorICAgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4nKQorICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvc3RhdGVtZW50UGFyc2luZy9hc3NpZ25tZW50L1NpbXBsZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9zdGF0ZW1lbnRQYXJzaW5nL2Fzc2lnbm1lbnQvU2ltcGxlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmJiMDcwOQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvc3RhdGVtZW50UGFyc2luZy9hc3NpZ25tZW50L1NpbXBsZS5qYXZhCkBAIC0wLDAgKzEsNiBAQAorY2xhc3MgQXsKKyAgeworICAgIGludFtdIGE7CisgICAgYVswXSA9IDA7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL3N0YXRlbWVudFBhcnNpbmcvYXNzaWdubWVudC9TaW1wbGUudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9zdGF0ZW1lbnRQYXJzaW5nL2Fzc2lnbm1lbnQvU2ltcGxlLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MzM2NmY4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9zdGF0ZW1lbnRQYXJzaW5nL2Fzc2lnbm1lbnQvU2ltcGxlLnR4dApAQCAtMCwwICsxLDU3IEBACitQc2lKYXZhRmlsZTpTaW1wbGUuamF2YQorICBQc2lJbXBvcnRMaXN0CisgICAgPGVtcHR5IGxpc3Q+CisgIFBzaUNsYXNzOkEKKyAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lLZXl3b3JkOmNsYXNzKCdjbGFzcycpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSWRlbnRpZmllcjpBKCdBJykKKyAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4gICcpCisgICAgUHNpQ2xhc3NJbml0aWFsaXplcgorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gICAgJykKKyAgICAgICAgUHNpRGVjbGFyYXRpb25TdGF0ZW1lbnQKKyAgICAgICAgICBQc2lMb2NhbFZhcmlhYmxlOmEKKyAgICAgICAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgICBQc2lUeXBlRWxlbWVudDppbnRbXQorICAgICAgICAgICAgICBQc2lUeXBlRWxlbWVudDppbnQKKyAgICAgICAgICAgICAgICBQc2lLZXl3b3JkOmludCgnaW50JykKKyAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDS0VUKCdbJykKKyAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDS0VUKCddJykKKyAgICAgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICAgICAgUHNpSWRlbnRpZmllcjphKCdhJykKKyAgICAgICAgICAgIFBzaUphdmFUb2tlbjpTRU1JQ09MT04oJzsnKQorICAgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgICAnKQorICAgICAgICBQc2lFeHByZXNzaW9uU3RhdGVtZW50CisgICAgICAgICAgUHNpQXNzaWdubWVudEV4cHJlc3Npb246YVswXSA9IDAKKyAgICAgICAgICAgIFBzaUFycmF5QWNjZXNzRXhwcmVzc2lvbjphWzBdCisgICAgICAgICAgICAgIFBzaVJlZmVyZW5jZUV4cHJlc3Npb246YQorICAgICAgICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgICAgICAgIFBzaUlkZW50aWZpZXI6YSgnYScpCisgICAgICAgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0tFVCgnWycpCisgICAgICAgICAgICAgIFBzaUxpdGVyYWxFeHByZXNzaW9uOjAKKyAgICAgICAgICAgICAgICBQc2lKYXZhVG9rZW46SU5URUdFUl9MSVRFUkFMKCcwJykKKyAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDS0VUKCddJykKKyAgICAgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICAgICAgUHNpSmF2YVRva2VuOkVRKCc9JykKKyAgICAgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICAgICAgUHNpTGl0ZXJhbEV4cHJlc3Npb246MAorICAgICAgICAgICAgICBQc2lKYXZhVG9rZW46SU5URUdFUl9MSVRFUkFMKCcwJykKKyAgICAgICAgICBQc2lKYXZhVG9rZW46U0VNSUNPTE9OKCc7JykKKyAgICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gICcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuJykKKyAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL3N0YXRlbWVudFBhcnNpbmcvY29kZUJsb2NrL0Fub255bW91c0luU21hcnRDb21wbGV0aW9uLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL3N0YXRlbWVudFBhcnNpbmcvY29kZUJsb2NrL0Fub255bW91c0luU21hcnRDb21wbGV0aW9uLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzNhYjgxNwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvc3RhdGVtZW50UGFyc2luZy9jb2RlQmxvY2svQW5vbnltb3VzSW5TbWFydENvbXBsZXRpb24uamF2YQpAQCAtMCwwICsxLDE2IEBACitpbXBvcnQgcGtnLkZvbzsKKworY2xhc3MgQmFyIHsKKworICBwdWJsaWMgdm9pZCBmb28oKSB7CisgICAgbmV3IEZvbyhoYXNoCisjKSB7fTsKKworbmV3IEZvbyhoYXNoCisjLCBiYXIpIHt9OworIAorICBuZXcgRm9vKGhhc2gKKyN4KSB7fTsKKworfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvc3RhdGVtZW50UGFyc2luZy9jb2RlQmxvY2svQW5vbnltb3VzSW5TbWFydENvbXBsZXRpb24udHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9zdGF0ZW1lbnRQYXJzaW5nL2NvZGVCbG9jay9Bbm9ueW1vdXNJblNtYXJ0Q29tcGxldGlvbi50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzlhNjQ1MAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvc3RhdGVtZW50UGFyc2luZy9jb2RlQmxvY2svQW5vbnltb3VzSW5TbWFydENvbXBsZXRpb24udHh0CkBAIC0wLDAgKzEsMTU3IEBACitQc2lKYXZhRmlsZTpBbm9ueW1vdXNJblNtYXJ0Q29tcGxldGlvbi5qYXZhCisgIFBzaUltcG9ydExpc3QKKyAgICBQc2lJbXBvcnRTdGF0ZW1lbnQKKyAgICAgIFBzaUtleXdvcmQ6aW1wb3J0KCdpbXBvcnQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lKYXZhQ29kZVJlZmVyZW5jZUVsZW1lbnQ6cGtnLkZvbworICAgICAgICBQc2lKYXZhQ29kZVJlZmVyZW5jZUVsZW1lbnQ6cGtnCisgICAgICAgICAgUHNpSWRlbnRpZmllcjpwa2coJ3BrZycpCisgICAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgIFBzaUphdmFUb2tlbjpET1QoJy4nKQorICAgICAgICBQc2lJZGVudGlmaWVyOkZvbygnRm9vJykKKyAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpSmF2YVRva2VuOlNFTUlDT0xPTignOycpCisgIFBzaVdoaXRlU3BhY2UoJ1xuXG4nKQorICBQc2lDbGFzczpCYXIKKyAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lLZXl3b3JkOmNsYXNzKCdjbGFzcycpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSWRlbnRpZmllcjpCYXIoJ0JhcicpCisgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuXG4gICcpCisgICAgUHNpTWV0aG9kOmZvbworICAgICAgUHNpTW9kaWZpZXJMaXN0OnB1YmxpYworICAgICAgICBQc2lLZXl3b3JkOnB1YmxpYygncHVibGljJykKKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgICAnKQorICAgICAgICBQc2lFeHByZXNzaW9uU3RhdGVtZW50CisgICAgICAgICAgUHNpTmV3RXhwcmVzc2lvbjpuZXcgRm9vKGhhc2gKKyMpIHt9CisgICAgICAgICAgICBQc2lLZXl3b3JkOm5ldygnbmV3JykKKyAgICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgICAgICAgIFBzaUFub255bW91c0NsYXNzCisgICAgICAgICAgICAgIFBzaUphdmFDb2RlUmVmZXJlbmNlRWxlbWVudDpGb28KKyAgICAgICAgICAgICAgICBQc2lJZGVudGlmaWVyOkZvbygnRm9vJykKKyAgICAgICAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICAgICAgUHNpRXhwcmVzc2lvbkxpc3QKKyAgICAgICAgICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICAgICAgICAgIFBzaVJlZmVyZW5jZUV4cHJlc3Npb246aGFzaAorICAgICAgICAgICAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICAgICAgICAgIFBzaUlkZW50aWZpZXI6aGFzaCgnaGFzaCcpCisgICAgICAgICAgICAgICAgUHNpRXJyb3JFbGVtZW50OicsJyBvciAnKScgZXhwZWN0ZWQKKyAgICAgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgICAgICAgIFBzaUV4cHJlc3Npb24oZW1wdHkpCisgICAgICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICAgICAgICBQc2lXaGl0ZVNwYWNlKCdcbicpCisgICAgICAgICAgICAgICAgUHNpRWxlbWVudChCQURfQ0hBUkFDVEVSKSgnIycpCisgICAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgICAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICAgICAgICBQc2lKYXZhVG9rZW46U0VNSUNPTE9OKCc7JykKKyAgICAgICAgUHNpV2hpdGVTcGFjZSgnXG5cbicpCisgICAgICAgIFBzaUV4cHJlc3Npb25TdGF0ZW1lbnQKKyAgICAgICAgICBQc2lOZXdFeHByZXNzaW9uOm5ldyBGb28oaGFzaAorIywgYmFyKSB7fQorICAgICAgICAgICAgUHNpS2V5d29yZDpuZXcoJ25ldycpCisgICAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgICAgICBQc2lBbm9ueW1vdXNDbGFzcworICAgICAgICAgICAgICBQc2lKYXZhQ29kZVJlZmVyZW5jZUVsZW1lbnQ6Rm9vCisgICAgICAgICAgICAgICAgUHNpSWRlbnRpZmllcjpGb28oJ0ZvbycpCisgICAgICAgICAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgICAgIFBzaUV4cHJlc3Npb25MaXN0CisgICAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgICAgICAgICBQc2lSZWZlcmVuY2VFeHByZXNzaW9uOmhhc2gKKyAgICAgICAgICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgICAgICAgICBQc2lJZGVudGlmaWVyOmhhc2goJ2hhc2gnKQorICAgICAgICAgICAgICAgIFBzaUVycm9yRWxlbWVudDonLCcgb3IgJyknIGV4cGVjdGVkCisgICAgICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICAgICAgICBQc2lFeHByZXNzaW9uKGVtcHR5KQorICAgICAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgICAgICAgUHNpV2hpdGVTcGFjZSgnXG4nKQorICAgICAgICAgICAgICAgIFBzaUVsZW1lbnQoQkFEX0NIQVJBQ1RFUikoJyMnKQorICAgICAgICAgICAgICAgIFBzaUphdmFUb2tlbjpDT01NQSgnLCcpCisgICAgICAgICAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgICAgICAgICAgUHNpUmVmZXJlbmNlRXhwcmVzc2lvbjpiYXIKKyAgICAgICAgICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgICAgICAgICBQc2lJZGVudGlmaWVyOmJhcignYmFyJykKKyAgICAgICAgICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgICAgICAgIFBzaUphdmFUb2tlbjpTRU1JQ09MT04oJzsnKQorICAgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiBcbiAgJykKKyAgICAgICAgUHNpRXhwcmVzc2lvblN0YXRlbWVudAorICAgICAgICAgIFBzaU5ld0V4cHJlc3Npb246bmV3IEZvbyhoYXNoCisjeCkge30KKyAgICAgICAgICAgIFBzaUtleXdvcmQ6bmV3KCduZXcnKQorICAgICAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICAgICAgUHNpQW5vbnltb3VzQ2xhc3MKKyAgICAgICAgICAgICAgUHNpSmF2YUNvZGVSZWZlcmVuY2VFbGVtZW50OkZvbworICAgICAgICAgICAgICAgIFBzaUlkZW50aWZpZXI6Rm9vKCdGb28nKQorICAgICAgICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgICAgICBQc2lFeHByZXNzaW9uTGlzdAorICAgICAgICAgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgICAgICAgICAgUHNpUmVmZXJlbmNlRXhwcmVzc2lvbjpoYXNoCisgICAgICAgICAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgICAgICAgICAgUHNpSWRlbnRpZmllcjpoYXNoKCdoYXNoJykKKyAgICAgICAgICAgICAgICBQc2lFcnJvckVsZW1lbnQ6JywnIG9yICcpJyBleHBlY3RlZAorICAgICAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgICAgICAgUHNpRXhwcmVzc2lvbihlbXB0eSkKKyAgICAgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgICAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuJykKKyAgICAgICAgICAgICAgICBQc2lFbGVtZW50KEJBRF9DSEFSQUNURVIpKCcjJykKKyAgICAgICAgICAgICAgICBQc2lFcnJvckVsZW1lbnQ6JywnIG9yICcpJyBleHBlY3RlZAorICAgICAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgICAgICAgUHNpRXhwcmVzc2lvbihlbXB0eSkKKyAgICAgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgICAgICAgIFBzaVJlZmVyZW5jZUV4cHJlc3Npb246eAorICAgICAgICAgICAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICAgICAgICAgIFBzaUlkZW50aWZpZXI6eCgneCcpCisgICAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgICAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICAgICAgICBQc2lKYXZhVG9rZW46U0VNSUNPTE9OKCc7JykKKyAgICAgICAgUHNpV2hpdGVTcGFjZSgnXG5cbicpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuJykKKyAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL3N0YXRlbWVudFBhcnNpbmcvY29kZUJsb2NrL1NpbXBsZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9zdGF0ZW1lbnRQYXJzaW5nL2NvZGVCbG9jay9TaW1wbGUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNWVjMjIyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9zdGF0ZW1lbnRQYXJzaW5nL2NvZGVCbG9jay9TaW1wbGUuamF2YQpAQCAtMCwwICsxLDQgQEAKK2NsYXNzIEF7CisgIHsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvc3RhdGVtZW50UGFyc2luZy9jb2RlQmxvY2svU2ltcGxlLnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvc3RhdGVtZW50UGFyc2luZy9jb2RlQmxvY2svU2ltcGxlLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNGFmZjI5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9zdGF0ZW1lbnRQYXJzaW5nL2NvZGVCbG9jay9TaW1wbGUudHh0CkBAIC0wLDAgKzEsMjYgQEAKK1BzaUphdmFGaWxlOlNpbXBsZS5qYXZhCisgIFBzaUltcG9ydExpc3QKKyAgICA8ZW1wdHkgbGlzdD4KKyAgUHNpQ2xhc3M6QQorICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUtleXdvcmQ6Y2xhc3MoJ2NsYXNzJykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lJZGVudGlmaWVyOkEoJ0EnKQorICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgJykKKyAgICBQc2lDbGFzc0luaXRpYWxpemVyCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4nKQorICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9zdGF0ZW1lbnRQYXJzaW5nL2RvLXdoaWxlL05vcm1hbC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9zdGF0ZW1lbnRQYXJzaW5nL2RvLXdoaWxlL05vcm1hbC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg2YWQwNTEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL3N0YXRlbWVudFBhcnNpbmcvZG8td2hpbGUvTm9ybWFsLmphdmEKQEAgLTAsMCArMSw1IEBACitjbGFzcyBBeworICB7CisgICAgZG97fXdoaWxlKHRydWUpOworICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL3N0YXRlbWVudFBhcnNpbmcvZG8td2hpbGUvTm9ybWFsLnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvc3RhdGVtZW50UGFyc2luZy9kby13aGlsZS9Ob3JtYWwudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdkMDlhNjcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL3N0YXRlbWVudFBhcnNpbmcvZG8td2hpbGUvTm9ybWFsLnR4dApAQCAtMCwwICsxLDM5IEBACitQc2lKYXZhRmlsZTpOb3JtYWwuamF2YQorICBQc2lJbXBvcnRMaXN0CisgICAgPGVtcHR5IGxpc3Q+CisgIFBzaUNsYXNzOkEKKyAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lLZXl3b3JkOmNsYXNzKCdjbGFzcycpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSWRlbnRpZmllcjpBKCdBJykKKyAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4gICcpCisgICAgUHNpQ2xhc3NJbml0aWFsaXplcgorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gICAgJykKKyAgICAgICAgUHNpRG9XaGlsZVN0YXRlbWVudAorICAgICAgICAgIFBzaUtleXdvcmQ6ZG8oJ2RvJykKKyAgICAgICAgICBQc2lCbG9ja1N0YXRlbWVudAorICAgICAgICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICAgICAgICBQc2lLZXl3b3JkOndoaWxlKCd3aGlsZScpCisgICAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgICBQc2lMaXRlcmFsRXhwcmVzc2lvbjp0cnVlCisgICAgICAgICAgICBQc2lKYXZhVG9rZW46VFJVRV9LRVlXT1JEKCd0cnVlJykKKyAgICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgICAgIFBzaUphdmFUb2tlbjpTRU1JQ09MT04oJzsnKQorICAgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4nKQorICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9zdGF0ZW1lbnRQYXJzaW5nL2RvLXdoaWxlL1VuY29tcGxldGUxLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL3N0YXRlbWVudFBhcnNpbmcvZG8td2hpbGUvVW5jb21wbGV0ZTEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMDNjOTk5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9zdGF0ZW1lbnRQYXJzaW5nL2RvLXdoaWxlL1VuY29tcGxldGUxLmphdmEKQEAgLTAsMCArMSw1IEBACitjbGFzcyBBeworICB7CisgICAgZG8KKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9zdGF0ZW1lbnRQYXJzaW5nL2RvLXdoaWxlL1VuY29tcGxldGUxLnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvc3RhdGVtZW50UGFyc2luZy9kby13aGlsZS9VbmNvbXBsZXRlMS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTVjZjNkNAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvc3RhdGVtZW50UGFyc2luZy9kby13aGlsZS9VbmNvbXBsZXRlMS50eHQKQEAgLTAsMCArMSwzMSBAQAorUHNpSmF2YUZpbGU6VW5jb21wbGV0ZTEuamF2YQorICBQc2lJbXBvcnRMaXN0CisgICAgPGVtcHR5IGxpc3Q+CisgIFBzaUNsYXNzOkEKKyAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lLZXl3b3JkOmNsYXNzKCdjbGFzcycpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSWRlbnRpZmllcjpBKCdBJykKKyAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4gICcpCisgICAgUHNpQ2xhc3NJbml0aWFsaXplcgorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gICAgJykKKyAgICAgICAgUHNpRG9XaGlsZVN0YXRlbWVudAorICAgICAgICAgIFBzaUtleXdvcmQ6ZG8oJ2RvJykKKyAgICAgICAgICBQc2lFcnJvckVsZW1lbnQ6U3RhdGVtZW50IGV4cGVjdGVkCisgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gICcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuJykKKyAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvc3RhdGVtZW50UGFyc2luZy9kby13aGlsZS9VbmNvbXBsZXRlMi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9zdGF0ZW1lbnRQYXJzaW5nL2RvLXdoaWxlL1VuY29tcGxldGUyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTkzNWQwOAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvc3RhdGVtZW50UGFyc2luZy9kby13aGlsZS9VbmNvbXBsZXRlMi5qYXZhCkBAIC0wLDAgKzEsNSBAQAorY2xhc3MgQXsKKyAgeworICAgIGRvIGZvbygpOworICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL3N0YXRlbWVudFBhcnNpbmcvZG8td2hpbGUvVW5jb21wbGV0ZTIudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9zdGF0ZW1lbnRQYXJzaW5nL2RvLXdoaWxlL1VuY29tcGxldGUyLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZGMzNjYzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9zdGF0ZW1lbnRQYXJzaW5nL2RvLXdoaWxlL1VuY29tcGxldGUyLnR4dApAQCAtMCwwICsxLDQyIEBACitQc2lKYXZhRmlsZTpVbmNvbXBsZXRlMi5qYXZhCisgIFBzaUltcG9ydExpc3QKKyAgICA8ZW1wdHkgbGlzdD4KKyAgUHNpQ2xhc3M6QQorICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUtleXdvcmQ6Y2xhc3MoJ2NsYXNzJykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lJZGVudGlmaWVyOkEoJ0EnKQorICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgJykKKyAgICBQc2lDbGFzc0luaXRpYWxpemVyCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgICAnKQorICAgICAgICBQc2lEb1doaWxlU3RhdGVtZW50CisgICAgICAgICAgUHNpS2V5d29yZDpkbygnZG8nKQorICAgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICAgIFBzaUV4cHJlc3Npb25TdGF0ZW1lbnQKKyAgICAgICAgICAgIFBzaU1ldGhvZENhbGxFeHByZXNzaW9uOmZvbygpCisgICAgICAgICAgICAgIFBzaVJlZmVyZW5jZUV4cHJlc3Npb246Zm9vCisgICAgICAgICAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICAgICAgICAgIFBzaUV4cHJlc3Npb25MaXN0CisgICAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgICAgICAgUHNpSmF2YVRva2VuOlNFTUlDT0xPTignOycpCisgICAgICAgICAgUHNpRXJyb3JFbGVtZW50Oid3aGlsZScgZXhwZWN0ZWQKKyAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4nKQorICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvc3RhdGVtZW50UGFyc2luZy9kby13aGlsZS9VbmNvbXBsZXRlMy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9zdGF0ZW1lbnRQYXJzaW5nL2RvLXdoaWxlL1VuY29tcGxldGUzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGM1NDEyYQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvc3RhdGVtZW50UGFyc2luZy9kby13aGlsZS9VbmNvbXBsZXRlMy5qYXZhCkBAIC0wLDAgKzEsNSBAQAorY2xhc3MgQXsKKyAgeworICAgIGRvIGZvbygpOyB3aGlsZQorICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL3N0YXRlbWVudFBhcnNpbmcvZG8td2hpbGUvVW5jb21wbGV0ZTMudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9zdGF0ZW1lbnRQYXJzaW5nL2RvLXdoaWxlL1VuY29tcGxldGUzLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMjJhNDg0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9zdGF0ZW1lbnRQYXJzaW5nL2RvLXdoaWxlL1VuY29tcGxldGUzLnR4dApAQCAtMCwwICsxLDQ0IEBACitQc2lKYXZhRmlsZTpVbmNvbXBsZXRlMy5qYXZhCisgIFBzaUltcG9ydExpc3QKKyAgICA8ZW1wdHkgbGlzdD4KKyAgUHNpQ2xhc3M6QQorICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUtleXdvcmQ6Y2xhc3MoJ2NsYXNzJykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lJZGVudGlmaWVyOkEoJ0EnKQorICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgJykKKyAgICBQc2lDbGFzc0luaXRpYWxpemVyCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgICAnKQorICAgICAgICBQc2lEb1doaWxlU3RhdGVtZW50CisgICAgICAgICAgUHNpS2V5d29yZDpkbygnZG8nKQorICAgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICAgIFBzaUV4cHJlc3Npb25TdGF0ZW1lbnQKKyAgICAgICAgICAgIFBzaU1ldGhvZENhbGxFeHByZXNzaW9uOmZvbygpCisgICAgICAgICAgICAgIFBzaVJlZmVyZW5jZUV4cHJlc3Npb246Zm9vCisgICAgICAgICAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICAgICAgICAgIFBzaUV4cHJlc3Npb25MaXN0CisgICAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgICAgICAgUHNpSmF2YVRva2VuOlNFTUlDT0xPTignOycpCisgICAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgICAgUHNpS2V5d29yZDp3aGlsZSgnd2hpbGUnKQorICAgICAgICAgIFBzaUVycm9yRWxlbWVudDonKCcgZXhwZWN0ZWQKKyAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4nKQorICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvc3RhdGVtZW50UGFyc2luZy9kby13aGlsZS9VbmNvbXBsZXRlNC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9zdGF0ZW1lbnRQYXJzaW5nL2RvLXdoaWxlL1VuY29tcGxldGU0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWQ5ZjAyYQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvc3RhdGVtZW50UGFyc2luZy9kby13aGlsZS9VbmNvbXBsZXRlNC5qYXZhCkBAIC0wLDAgKzEsNSBAQAorY2xhc3MgQXsKKyAgeworICAgIGRvIGZvbygpOyB3aGlsZSgKKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9zdGF0ZW1lbnRQYXJzaW5nL2RvLXdoaWxlL1VuY29tcGxldGU0LnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvc3RhdGVtZW50UGFyc2luZy9kby13aGlsZS9VbmNvbXBsZXRlNC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTAwYTQyMQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvc3RhdGVtZW50UGFyc2luZy9kby13aGlsZS9VbmNvbXBsZXRlNC50eHQKQEAgLTAsMCArMSw0NSBAQAorUHNpSmF2YUZpbGU6VW5jb21wbGV0ZTQuamF2YQorICBQc2lJbXBvcnRMaXN0CisgICAgPGVtcHR5IGxpc3Q+CisgIFBzaUNsYXNzOkEKKyAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lLZXl3b3JkOmNsYXNzKCdjbGFzcycpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSWRlbnRpZmllcjpBKCdBJykKKyAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4gICcpCisgICAgUHNpQ2xhc3NJbml0aWFsaXplcgorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gICAgJykKKyAgICAgICAgUHNpRG9XaGlsZVN0YXRlbWVudAorICAgICAgICAgIFBzaUtleXdvcmQ6ZG8oJ2RvJykKKyAgICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgICAgICBQc2lFeHByZXNzaW9uU3RhdGVtZW50CisgICAgICAgICAgICBQc2lNZXRob2RDYWxsRXhwcmVzc2lvbjpmb28oKQorICAgICAgICAgICAgICBQc2lSZWZlcmVuY2VFeHByZXNzaW9uOmZvbworICAgICAgICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgICAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgICAgICAgICBQc2lFeHByZXNzaW9uTGlzdAorICAgICAgICAgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgICAgICAgIFBzaUphdmFUb2tlbjpTRU1JQ09MT04oJzsnKQorICAgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICAgIFBzaUtleXdvcmQ6d2hpbGUoJ3doaWxlJykKKyAgICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICAgIFBzaUVycm9yRWxlbWVudDpFeHByZXNzaW9uIGV4cGVjdGVkCisgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gICcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuJykKKyAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL3N0YXRlbWVudFBhcnNpbmcvZG8td2hpbGUvVW5jb21wbGV0ZTUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvc3RhdGVtZW50UGFyc2luZy9kby13aGlsZS9VbmNvbXBsZXRlNS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY5YTJjOWIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL3N0YXRlbWVudFBhcnNpbmcvZG8td2hpbGUvVW5jb21wbGV0ZTUuamF2YQpAQCAtMCwwICsxLDUgQEAKK2NsYXNzIEF7CisgIHsKKyAgICBkbyBmb28oKTsgd2hpbGUoKTsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9zdGF0ZW1lbnRQYXJzaW5nL2RvLXdoaWxlL1VuY29tcGxldGU1LnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvc3RhdGVtZW50UGFyc2luZy9kby13aGlsZS9VbmNvbXBsZXRlNS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzliZDI4NAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvc3RhdGVtZW50UGFyc2luZy9kby13aGlsZS9VbmNvbXBsZXRlNS50eHQKQEAgLTAsMCArMSw0NyBAQAorUHNpSmF2YUZpbGU6VW5jb21wbGV0ZTUuamF2YQorICBQc2lJbXBvcnRMaXN0CisgICAgPGVtcHR5IGxpc3Q+CisgIFBzaUNsYXNzOkEKKyAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lLZXl3b3JkOmNsYXNzKCdjbGFzcycpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSWRlbnRpZmllcjpBKCdBJykKKyAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4gICcpCisgICAgUHNpQ2xhc3NJbml0aWFsaXplcgorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gICAgJykKKyAgICAgICAgUHNpRG9XaGlsZVN0YXRlbWVudAorICAgICAgICAgIFBzaUtleXdvcmQ6ZG8oJ2RvJykKKyAgICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgICAgICBQc2lFeHByZXNzaW9uU3RhdGVtZW50CisgICAgICAgICAgICBQc2lNZXRob2RDYWxsRXhwcmVzc2lvbjpmb28oKQorICAgICAgICAgICAgICBQc2lSZWZlcmVuY2VFeHByZXNzaW9uOmZvbworICAgICAgICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgICAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgICAgICAgICBQc2lFeHByZXNzaW9uTGlzdAorICAgICAgICAgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgICAgICAgIFBzaUphdmFUb2tlbjpTRU1JQ09MT04oJzsnKQorICAgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICAgIFBzaUtleXdvcmQ6d2hpbGUoJ3doaWxlJykKKyAgICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICAgIFBzaUVycm9yRWxlbWVudDpFeHByZXNzaW9uIGV4cGVjdGVkCisgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgICAgIFBzaUphdmFUb2tlbjpTRU1JQ09MT04oJzsnKQorICAgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4nKQorICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvc3RhdGVtZW50UGFyc2luZy9kby13aGlsZS9VbmNvbXBsZXRlNi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9zdGF0ZW1lbnRQYXJzaW5nL2RvLXdoaWxlL1VuY29tcGxldGU2LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGMxOWI3NgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvc3RhdGVtZW50UGFyc2luZy9kby13aGlsZS9VbmNvbXBsZXRlNi5qYXZhCkBAIC0wLDAgKzEsNiBAQAorY2xhc3MgQXsKKyAgeworICAgIGRvIGZvbygpOyB3aGlsZSgKKyAgICBnKCk7CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvc3RhdGVtZW50UGFyc2luZy9kby13aGlsZS9VbmNvbXBsZXRlNi50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL3N0YXRlbWVudFBhcnNpbmcvZG8td2hpbGUvVW5jb21wbGV0ZTYudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY5OTA4YzYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL3N0YXRlbWVudFBhcnNpbmcvZG8td2hpbGUvVW5jb21wbGV0ZTYudHh0CkBAIC0wLDAgKzEsNTYgQEAKK1BzaUphdmFGaWxlOlVuY29tcGxldGU2LmphdmEKKyAgUHNpSW1wb3J0TGlzdAorICAgIDxlbXB0eSBsaXN0PgorICBQc2lDbGFzczpBCisgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpS2V5d29yZDpjbGFzcygnY2xhc3MnKQorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUlkZW50aWZpZXI6QSgnQScpCisgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAnKQorICAgIFBzaUNsYXNzSW5pdGlhbGl6ZXIKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAgICcpCisgICAgICAgIFBzaURvV2hpbGVTdGF0ZW1lbnQKKyAgICAgICAgICBQc2lLZXl3b3JkOmRvKCdkbycpCisgICAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgICAgUHNpRXhwcmVzc2lvblN0YXRlbWVudAorICAgICAgICAgICAgUHNpTWV0aG9kQ2FsbEV4cHJlc3Npb246Zm9vKCkKKyAgICAgICAgICAgICAgUHNpUmVmZXJlbmNlRXhwcmVzc2lvbjpmb28KKyAgICAgICAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICAgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgICAgICAgICAgUHNpRXhwcmVzc2lvbkxpc3QKKyAgICAgICAgICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICAgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICAgICAgICBQc2lKYXZhVG9rZW46U0VNSUNPTE9OKCc7JykKKyAgICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgICAgICBQc2lLZXl3b3JkOndoaWxlKCd3aGlsZScpCisgICAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgICBQc2lFcnJvckVsZW1lbnQ6RXhwcmVzc2lvbiBleHBlY3RlZAorICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAgICcpCisgICAgICAgIFBzaUV4cHJlc3Npb25TdGF0ZW1lbnQKKyAgICAgICAgICBQc2lNZXRob2RDYWxsRXhwcmVzc2lvbjpnKCkKKyAgICAgICAgICAgIFBzaVJlZmVyZW5jZUV4cHJlc3Npb246ZworICAgICAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgICAgIFBzaUlkZW50aWZpZXI6ZygnZycpCisgICAgICAgICAgICBQc2lFeHByZXNzaW9uTGlzdAorICAgICAgICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgICAgIFBzaUphdmFUb2tlbjpTRU1JQ09MT04oJzsnKQorICAgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4nKQorICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvc3RhdGVtZW50UGFyc2luZy9kby13aGlsZS9VbmNvbXBsZXRlNy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9zdGF0ZW1lbnRQYXJzaW5nL2RvLXdoaWxlL1VuY29tcGxldGU3LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODk0NDQ1MwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvc3RhdGVtZW50UGFyc2luZy9kby13aGlsZS9VbmNvbXBsZXRlNy5qYXZhCkBAIC0wLDAgKzEsNSBAQAorY2xhc3MgQXsKKyAgeworICAgIGRvIGZvbygpOyB3aGlsZShjb25kKQorICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL3N0YXRlbWVudFBhcnNpbmcvZG8td2hpbGUvVW5jb21wbGV0ZTcudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9zdGF0ZW1lbnRQYXJzaW5nL2RvLXdoaWxlL1VuY29tcGxldGU3LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NzA3YjlmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9zdGF0ZW1lbnRQYXJzaW5nL2RvLXdoaWxlL1VuY29tcGxldGU3LnR4dApAQCAtMCwwICsxLDUwIEBACitQc2lKYXZhRmlsZTpVbmNvbXBsZXRlNy5qYXZhCisgIFBzaUltcG9ydExpc3QKKyAgICA8ZW1wdHkgbGlzdD4KKyAgUHNpQ2xhc3M6QQorICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUtleXdvcmQ6Y2xhc3MoJ2NsYXNzJykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lJZGVudGlmaWVyOkEoJ0EnKQorICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgJykKKyAgICBQc2lDbGFzc0luaXRpYWxpemVyCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgICAnKQorICAgICAgICBQc2lEb1doaWxlU3RhdGVtZW50CisgICAgICAgICAgUHNpS2V5d29yZDpkbygnZG8nKQorICAgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICAgIFBzaUV4cHJlc3Npb25TdGF0ZW1lbnQKKyAgICAgICAgICAgIFBzaU1ldGhvZENhbGxFeHByZXNzaW9uOmZvbygpCisgICAgICAgICAgICAgIFBzaVJlZmVyZW5jZUV4cHJlc3Npb246Zm9vCisgICAgICAgICAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICAgICAgICAgIFBzaUV4cHJlc3Npb25MaXN0CisgICAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgICAgICAgUHNpSmF2YVRva2VuOlNFTUlDT0xPTignOycpCisgICAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgICAgUHNpS2V5d29yZDp3aGlsZSgnd2hpbGUnKQorICAgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgICAgUHNpUmVmZXJlbmNlRXhwcmVzc2lvbjpjb25kCisgICAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgICAgUHNpSWRlbnRpZmllcjpjb25kKCdjb25kJykKKyAgICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgICAgIFBzaUVycm9yRWxlbWVudDonOycgZXhwZWN0ZWQKKyAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4nKQorICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvc3RhdGVtZW50UGFyc2luZy9mb3IvRm9yRWFjaDEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvc3RhdGVtZW50UGFyc2luZy9mb3IvRm9yRWFjaDEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MjE0YmZjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9zdGF0ZW1lbnRQYXJzaW5nL2Zvci9Gb3JFYWNoMS5qYXZhCkBAIC0wLDAgKzEsNSBAQAorY2xhc3MgRm9vIHsKKyAgeworICAgIGZvcihPYmplY3QgbyA6IG1hcC5lbnRyeVNldCgpKSA7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL3N0YXRlbWVudFBhcnNpbmcvZm9yL0ZvckVhY2gxLnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvc3RhdGVtZW50UGFyc2luZy9mb3IvRm9yRWFjaDEudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA0ZGMzMzAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL3N0YXRlbWVudFBhcnNpbmcvZm9yL0ZvckVhY2gxLnR4dApAQCAtMCwwICsxLDYxIEBACitQc2lKYXZhRmlsZTpGb3JFYWNoMS5qYXZhCisgIFBzaUltcG9ydExpc3QKKyAgICA8ZW1wdHkgbGlzdD4KKyAgUHNpQ2xhc3M6Rm9vCisgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpS2V5d29yZDpjbGFzcygnY2xhc3MnKQorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUlkZW50aWZpZXI6Rm9vKCdGb28nKQorICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgJykKKyAgICBQc2lDbGFzc0luaXRpYWxpemVyCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgICAnKQorICAgICAgICBQc2lGb3JlYWNoU3RhdGVtZW50CisgICAgICAgICAgUHNpS2V5d29yZDpmb3IoJ2ZvcicpCisgICAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgICBQc2lQYXJhbWV0ZXI6bworICAgICAgICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICAgIFBzaVR5cGVFbGVtZW50Ok9iamVjdAorICAgICAgICAgICAgICBQc2lKYXZhQ29kZVJlZmVyZW5jZUVsZW1lbnQ6T2JqZWN0CisgICAgICAgICAgICAgICAgUHNpSWRlbnRpZmllcjpPYmplY3QoJ09iamVjdCcpCisgICAgICAgICAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgICAgICAgIFBzaUlkZW50aWZpZXI6bygnbycpCisgICAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgICAgUHNpSmF2YVRva2VuOkNPTE9OKCc6JykKKyAgICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgICAgICBQc2lNZXRob2RDYWxsRXhwcmVzc2lvbjptYXAuZW50cnlTZXQoKQorICAgICAgICAgICAgUHNpUmVmZXJlbmNlRXhwcmVzc2lvbjptYXAuZW50cnlTZXQKKyAgICAgICAgICAgICAgUHNpUmVmZXJlbmNlRXhwcmVzc2lvbjptYXAKKyAgICAgICAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICAgICAgICBQc2lJZGVudGlmaWVyOm1hcCgnbWFwJykKKyAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOkRPVCgnLicpCisgICAgICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICAgICAgUHNpSWRlbnRpZmllcjplbnRyeVNldCgnZW50cnlTZXQnKQorICAgICAgICAgICAgUHNpRXhwcmVzc2lvbkxpc3QKKyAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICAgIFBzaUVtcHR5U3RhdGVtZW50CisgICAgICAgICAgICBQc2lKYXZhVG9rZW46U0VNSUNPTE9OKCc7JykKKyAgICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gICcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuJykKKyAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL3N0YXRlbWVudFBhcnNpbmcvZm9yL05vcm1hbDEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvc3RhdGVtZW50UGFyc2luZy9mb3IvTm9ybWFsMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhjYjZmNDEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL3N0YXRlbWVudFBhcnNpbmcvZm9yL05vcm1hbDEuamF2YQpAQCAtMCwwICsxLDYgQEAKK2NsYXNzIEZvb3sKKyAgeworICAgIGZvcihpbnQgaSA9IDA7IGkgPCAxMDsgaSsrKQorICAgICAgOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9zdGF0ZW1lbnRQYXJzaW5nL2Zvci9Ob3JtYWwxLnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvc3RhdGVtZW50UGFyc2luZy9mb3IvTm9ybWFsMS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmU5YTJlNQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvc3RhdGVtZW50UGFyc2luZy9mb3IvTm9ybWFsMS50eHQKQEAgLTAsMCArMSw2OCBAQAorUHNpSmF2YUZpbGU6Tm9ybWFsMS5qYXZhCisgIFBzaUltcG9ydExpc3QKKyAgICA8ZW1wdHkgbGlzdD4KKyAgUHNpQ2xhc3M6Rm9vCisgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpS2V5d29yZDpjbGFzcygnY2xhc3MnKQorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUlkZW50aWZpZXI6Rm9vKCdGb28nKQorICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgJykKKyAgICBQc2lDbGFzc0luaXRpYWxpemVyCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgICAnKQorICAgICAgICBQc2lGb3JTdGF0ZW1lbnQKKyAgICAgICAgICBQc2lLZXl3b3JkOmZvcignZm9yJykKKyAgICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICAgIFBzaURlY2xhcmF0aW9uU3RhdGVtZW50CisgICAgICAgICAgICBQc2lMb2NhbFZhcmlhYmxlOmkKKyAgICAgICAgICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgICAgICBQc2lUeXBlRWxlbWVudDppbnQKKyAgICAgICAgICAgICAgICBQc2lLZXl3b3JkOmludCgnaW50JykKKyAgICAgICAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgICAgICAgIFBzaUlkZW50aWZpZXI6aSgnaScpCisgICAgICAgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICAgICAgICBQc2lKYXZhVG9rZW46RVEoJz0nKQorICAgICAgICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgICAgICAgICAgUHNpTGl0ZXJhbEV4cHJlc3Npb246MAorICAgICAgICAgICAgICAgIFBzaUphdmFUb2tlbjpJTlRFR0VSX0xJVEVSQUwoJzAnKQorICAgICAgICAgICAgICBQc2lKYXZhVG9rZW46U0VNSUNPTE9OKCc7JykKKyAgICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgICAgICBQc2lCaW5hcnlFeHByZXNzaW9uOmkgPCAxMAorICAgICAgICAgICAgUHNpUmVmZXJlbmNlRXhwcmVzc2lvbjppCisgICAgICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICAgICAgUHNpSWRlbnRpZmllcjppKCdpJykKKyAgICAgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICAgICAgUHNpSmF2YVRva2VuOkxUKCc8JykKKyAgICAgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICAgICAgUHNpTGl0ZXJhbEV4cHJlc3Npb246MTAKKyAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOklOVEVHRVJfTElURVJBTCgnMTAnKQorICAgICAgICAgIFBzaUphdmFUb2tlbjpTRU1JQ09MT04oJzsnKQorICAgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICAgIFBzaUV4cHJlc3Npb25TdGF0ZW1lbnQKKyAgICAgICAgICAgIFBzaVBvc3RmaXhFeHByZXNzaW9uOmkrKworICAgICAgICAgICAgICBQc2lSZWZlcmVuY2VFeHByZXNzaW9uOmkKKyAgICAgICAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICAgICAgICBQc2lJZGVudGlmaWVyOmkoJ2knKQorICAgICAgICAgICAgICBQc2lKYXZhVG9rZW46UExVU1BMVVMoJysrJykKKyAgICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAgICAgJykKKyAgICAgICAgICBQc2lFbXB0eVN0YXRlbWVudAorICAgICAgICAgICAgUHNpSmF2YVRva2VuOlNFTUlDT0xPTignOycpCisgICAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAnKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcbicpCisgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9zdGF0ZW1lbnRQYXJzaW5nL2Zvci9Ob3JtYWwyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL3N0YXRlbWVudFBhcnNpbmcvZm9yL05vcm1hbDIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZTQ4YmU2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9zdGF0ZW1lbnRQYXJzaW5nL2Zvci9Ob3JtYWwyLmphdmEKQEAgLTAsMCArMSw1IEBACitjbGFzcyBGb297CisgIHsKKyAgICBmb3IoIDsgOyApIGZvbygpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9zdGF0ZW1lbnRQYXJzaW5nL2Zvci9Ob3JtYWwyLnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvc3RhdGVtZW50UGFyc2luZy9mb3IvTm9ybWFsMi50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDI0YmQ1ZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvc3RhdGVtZW50UGFyc2luZy9mb3IvTm9ybWFsMi50eHQKQEAgLTAsMCArMSw0OCBAQAorUHNpSmF2YUZpbGU6Tm9ybWFsMi5qYXZhCisgIFBzaUltcG9ydExpc3QKKyAgICA8ZW1wdHkgbGlzdD4KKyAgUHNpQ2xhc3M6Rm9vCisgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpS2V5d29yZDpjbGFzcygnY2xhc3MnKQorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUlkZW50aWZpZXI6Rm9vKCdGb28nKQorICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgJykKKyAgICBQc2lDbGFzc0luaXRpYWxpemVyCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgICAnKQorICAgICAgICBQc2lGb3JTdGF0ZW1lbnQKKyAgICAgICAgICBQc2lLZXl3b3JkOmZvcignZm9yJykKKyAgICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICAgIFBzaUVtcHR5U3RhdGVtZW50CisgICAgICAgICAgICBQc2lKYXZhVG9rZW46U0VNSUNPTE9OKCc7JykKKyAgICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgICAgICBQc2lKYXZhVG9rZW46U0VNSUNPTE9OKCc7JykKKyAgICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICAgIFBzaUV4cHJlc3Npb25TdGF0ZW1lbnQKKyAgICAgICAgICAgIFBzaU1ldGhvZENhbGxFeHByZXNzaW9uOmZvbygpCisgICAgICAgICAgICAgIFBzaVJlZmVyZW5jZUV4cHJlc3Npb246Zm9vCisgICAgICAgICAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICAgICAgICAgIFBzaUV4cHJlc3Npb25MaXN0CisgICAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgICAgICAgUHNpSmF2YVRva2VuOlNFTUlDT0xPTignOycpCisgICAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAnKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcbicpCisgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9zdGF0ZW1lbnRQYXJzaW5nL2Zvci9VbmNvbXBsZXRlMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9zdGF0ZW1lbnRQYXJzaW5nL2Zvci9VbmNvbXBsZXRlMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlmZGQ1ZWEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL3N0YXRlbWVudFBhcnNpbmcvZm9yL1VuY29tcGxldGUxLmphdmEKQEAgLTAsMCArMSw1IEBACitjbGFzcyBGb297CisgIHsKKyAgICBmb3IKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvc3RhdGVtZW50UGFyc2luZy9mb3IvVW5jb21wbGV0ZTEudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9zdGF0ZW1lbnRQYXJzaW5nL2Zvci9VbmNvbXBsZXRlMS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTdhN2ZjNAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvc3RhdGVtZW50UGFyc2luZy9mb3IvVW5jb21wbGV0ZTEudHh0CkBAIC0wLDAgKzEsMzEgQEAKK1BzaUphdmFGaWxlOlVuY29tcGxldGUxLmphdmEKKyAgUHNpSW1wb3J0TGlzdAorICAgIDxlbXB0eSBsaXN0PgorICBQc2lDbGFzczpGb28KKyAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lLZXl3b3JkOmNsYXNzKCdjbGFzcycpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSWRlbnRpZmllcjpGb28oJ0ZvbycpCisgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAnKQorICAgIFBzaUNsYXNzSW5pdGlhbGl6ZXIKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAgICcpCisgICAgICAgIFBzaUZvclN0YXRlbWVudAorICAgICAgICAgIFBzaUtleXdvcmQ6Zm9yKCdmb3InKQorICAgICAgICAgIFBzaUVycm9yRWxlbWVudDonKCcgZXhwZWN0ZWQKKyAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4nKQorICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9zdGF0ZW1lbnRQYXJzaW5nL2Zvci9VbmNvbXBsZXRlMTAuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvc3RhdGVtZW50UGFyc2luZy9mb3IvVW5jb21wbGV0ZTEwLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDJlZWRiNQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvc3RhdGVtZW50UGFyc2luZy9mb3IvVW5jb21wbGV0ZTEwLmphdmEKQEAgLTAsMCArMSw1IEBACitjbGFzcyBGb297CisgIHsKKyAgICBmb3IoaW50IGkgPSAwOyBpIDwgMCkgZm9vKCk7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL3N0YXRlbWVudFBhcnNpbmcvZm9yL1VuY29tcGxldGUxMC50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL3N0YXRlbWVudFBhcnNpbmcvZm9yL1VuY29tcGxldGUxMC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODI5ZGIwOQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvc3RhdGVtZW50UGFyc2luZy9mb3IvVW5jb21wbGV0ZTEwLnR4dApAQCAtMCwwICsxLDY5IEBACitQc2lKYXZhRmlsZTpVbmNvbXBsZXRlMTAuamF2YQorICBQc2lJbXBvcnRMaXN0CisgICAgPGVtcHR5IGxpc3Q+CisgIFBzaUNsYXNzOkZvbworICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUtleXdvcmQ6Y2xhc3MoJ2NsYXNzJykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lJZGVudGlmaWVyOkZvbygnRm9vJykKKyAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4gICcpCisgICAgUHNpQ2xhc3NJbml0aWFsaXplcgorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gICAgJykKKyAgICAgICAgUHNpRm9yU3RhdGVtZW50CisgICAgICAgICAgUHNpS2V5d29yZDpmb3IoJ2ZvcicpCisgICAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgICBQc2lEZWNsYXJhdGlvblN0YXRlbWVudAorICAgICAgICAgICAgUHNpTG9jYWxWYXJpYWJsZTppCisgICAgICAgICAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICAgICAgUHNpVHlwZUVsZW1lbnQ6aW50CisgICAgICAgICAgICAgICAgUHNpS2V5d29yZDppbnQoJ2ludCcpCisgICAgICAgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICAgICAgICBQc2lJZGVudGlmaWVyOmkoJ2knKQorICAgICAgICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOkVRKCc9JykKKyAgICAgICAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgICAgICAgIFBzaUxpdGVyYWxFeHByZXNzaW9uOjAKKyAgICAgICAgICAgICAgICBQc2lKYXZhVG9rZW46SU5URUdFUl9MSVRFUkFMKCcwJykKKyAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOlNFTUlDT0xPTignOycpCisgICAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgICAgUHNpQmluYXJ5RXhwcmVzc2lvbjppIDwgMAorICAgICAgICAgICAgUHNpUmVmZXJlbmNlRXhwcmVzc2lvbjppCisgICAgICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICAgICAgUHNpSWRlbnRpZmllcjppKCdpJykKKyAgICAgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICAgICAgUHNpSmF2YVRva2VuOkxUKCc8JykKKyAgICAgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICAgICAgUHNpTGl0ZXJhbEV4cHJlc3Npb246MAorICAgICAgICAgICAgICBQc2lKYXZhVG9rZW46SU5URUdFUl9MSVRFUkFMKCcwJykKKyAgICAgICAgICBQc2lFcnJvckVsZW1lbnQ6JzsnIGV4cGVjdGVkCisgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICAgIFBzaUV4cHJlc3Npb25TdGF0ZW1lbnQKKyAgICAgICAgICAgIFBzaU1ldGhvZENhbGxFeHByZXNzaW9uOmZvbygpCisgICAgICAgICAgICAgIFBzaVJlZmVyZW5jZUV4cHJlc3Npb246Zm9vCisgICAgICAgICAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICAgICAgICAgIFBzaUV4cHJlc3Npb25MaXN0CisgICAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgICAgICAgUHNpSmF2YVRva2VuOlNFTUlDT0xPTignOycpCisgICAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAnKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcbicpCisgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9zdGF0ZW1lbnRQYXJzaW5nL2Zvci9VbmNvbXBsZXRlMi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9zdGF0ZW1lbnRQYXJzaW5nL2Zvci9VbmNvbXBsZXRlMi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJiNDRmMzEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL3N0YXRlbWVudFBhcnNpbmcvZm9yL1VuY29tcGxldGUyLmphdmEKQEAgLTAsMCArMSw1IEBACitjbGFzcyBGb297CisgIHsKKyAgICBmb3IoCisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL3N0YXRlbWVudFBhcnNpbmcvZm9yL1VuY29tcGxldGUyLnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvc3RhdGVtZW50UGFyc2luZy9mb3IvVW5jb21wbGV0ZTIudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFhYTk3ZGYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL3N0YXRlbWVudFBhcnNpbmcvZm9yL1VuY29tcGxldGUyLnR4dApAQCAtMCwwICsxLDMyIEBACitQc2lKYXZhRmlsZTpVbmNvbXBsZXRlMi5qYXZhCisgIFBzaUltcG9ydExpc3QKKyAgICA8ZW1wdHkgbGlzdD4KKyAgUHNpQ2xhc3M6Rm9vCisgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpS2V5d29yZDpjbGFzcygnY2xhc3MnKQorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUlkZW50aWZpZXI6Rm9vKCdGb28nKQorICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgJykKKyAgICBQc2lDbGFzc0luaXRpYWxpemVyCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgICAnKQorICAgICAgICBQc2lGb3JTdGF0ZW1lbnQKKyAgICAgICAgICBQc2lLZXl3b3JkOmZvcignZm9yJykKKyAgICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICAgIFBzaUVycm9yRWxlbWVudDpTdGF0ZW1lbnQgZXhwZWN0ZWQKKyAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4nKQorICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9zdGF0ZW1lbnRQYXJzaW5nL2Zvci9VbmNvbXBsZXRlMy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9zdGF0ZW1lbnRQYXJzaW5nL2Zvci9VbmNvbXBsZXRlMy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc2MDk0ZGMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL3N0YXRlbWVudFBhcnNpbmcvZm9yL1VuY29tcGxldGUzLmphdmEKQEAgLTAsMCArMSw1IEBACitjbGFzcyBGb297CisgIHsKKyAgICBmb3IoaW50IGkgPSAwOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9zdGF0ZW1lbnRQYXJzaW5nL2Zvci9VbmNvbXBsZXRlMy50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL3N0YXRlbWVudFBhcnNpbmcvZm9yL1VuY29tcGxldGUzLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YzIwMDA0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9zdGF0ZW1lbnRQYXJzaW5nL2Zvci9VbmNvbXBsZXRlMy50eHQKQEAgLTAsMCArMSw0NiBAQAorUHNpSmF2YUZpbGU6VW5jb21wbGV0ZTMuamF2YQorICBQc2lJbXBvcnRMaXN0CisgICAgPGVtcHR5IGxpc3Q+CisgIFBzaUNsYXNzOkZvbworICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUtleXdvcmQ6Y2xhc3MoJ2NsYXNzJykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lJZGVudGlmaWVyOkZvbygnRm9vJykKKyAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4gICcpCisgICAgUHNpQ2xhc3NJbml0aWFsaXplcgorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gICAgJykKKyAgICAgICAgUHNpRm9yU3RhdGVtZW50CisgICAgICAgICAgUHNpS2V5d29yZDpmb3IoJ2ZvcicpCisgICAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgICBQc2lEZWNsYXJhdGlvblN0YXRlbWVudAorICAgICAgICAgICAgUHNpTG9jYWxWYXJpYWJsZTppCisgICAgICAgICAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICAgICAgUHNpVHlwZUVsZW1lbnQ6aW50CisgICAgICAgICAgICAgICAgUHNpS2V5d29yZDppbnQoJ2ludCcpCisgICAgICAgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICAgICAgICBQc2lJZGVudGlmaWVyOmkoJ2knKQorICAgICAgICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOkVRKCc9JykKKyAgICAgICAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgICAgICAgIFBzaUxpdGVyYWxFeHByZXNzaW9uOjAKKyAgICAgICAgICAgICAgICBQc2lKYXZhVG9rZW46SU5URUdFUl9MSVRFUkFMKCcwJykKKyAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOlNFTUlDT0xPTignOycpCisgICAgICAgICAgUHNpRXJyb3JFbGVtZW50Oic7JyBleHBlY3RlZAorICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAnKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcbicpCisgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL3N0YXRlbWVudFBhcnNpbmcvZm9yL1VuY29tcGxldGU0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL3N0YXRlbWVudFBhcnNpbmcvZm9yL1VuY29tcGxldGU0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDBjYWUyMAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvc3RhdGVtZW50UGFyc2luZy9mb3IvVW5jb21wbGV0ZTQuamF2YQpAQCAtMCwwICsxLDUgQEAKK2NsYXNzIEZvb3sKKyAgeworICAgIGZvcihpbnQgaSA9IDA7IGkgPCAxMAorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9zdGF0ZW1lbnRQYXJzaW5nL2Zvci9VbmNvbXBsZXRlNC50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL3N0YXRlbWVudFBhcnNpbmcvZm9yL1VuY29tcGxldGU0LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44OTVkYTQwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9zdGF0ZW1lbnRQYXJzaW5nL2Zvci9VbmNvbXBsZXRlNC50eHQKQEAgLTAsMCArMSw1NyBAQAorUHNpSmF2YUZpbGU6VW5jb21wbGV0ZTQuamF2YQorICBQc2lJbXBvcnRMaXN0CisgICAgPGVtcHR5IGxpc3Q+CisgIFBzaUNsYXNzOkZvbworICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUtleXdvcmQ6Y2xhc3MoJ2NsYXNzJykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lJZGVudGlmaWVyOkZvbygnRm9vJykKKyAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4gICcpCisgICAgUHNpQ2xhc3NJbml0aWFsaXplcgorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gICAgJykKKyAgICAgICAgUHNpRm9yU3RhdGVtZW50CisgICAgICAgICAgUHNpS2V5d29yZDpmb3IoJ2ZvcicpCisgICAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgICBQc2lEZWNsYXJhdGlvblN0YXRlbWVudAorICAgICAgICAgICAgUHNpTG9jYWxWYXJpYWJsZTppCisgICAgICAgICAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICAgICAgUHNpVHlwZUVsZW1lbnQ6aW50CisgICAgICAgICAgICAgICAgUHNpS2V5d29yZDppbnQoJ2ludCcpCisgICAgICAgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICAgICAgICBQc2lJZGVudGlmaWVyOmkoJ2knKQorICAgICAgICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOkVRKCc9JykKKyAgICAgICAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgICAgICAgIFBzaUxpdGVyYWxFeHByZXNzaW9uOjAKKyAgICAgICAgICAgICAgICBQc2lKYXZhVG9rZW46SU5URUdFUl9MSVRFUkFMKCcwJykKKyAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOlNFTUlDT0xPTignOycpCisgICAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgICAgUHNpQmluYXJ5RXhwcmVzc2lvbjppIDwgMTAKKyAgICAgICAgICAgIFBzaVJlZmVyZW5jZUV4cHJlc3Npb246aQorICAgICAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgICAgIFBzaUlkZW50aWZpZXI6aSgnaScpCisgICAgICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgICAgICAgIFBzaUphdmFUb2tlbjpMVCgnPCcpCisgICAgICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgICAgICAgIFBzaUxpdGVyYWxFeHByZXNzaW9uOjEwCisgICAgICAgICAgICAgIFBzaUphdmFUb2tlbjpJTlRFR0VSX0xJVEVSQUwoJzEwJykKKyAgICAgICAgICBQc2lFcnJvckVsZW1lbnQ6JzsnIGV4cGVjdGVkCisgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gICcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuJykKKyAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL3N0YXRlbWVudFBhcnNpbmcvZm9yL1VuY29tcGxldGU1LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL3N0YXRlbWVudFBhcnNpbmcvZm9yL1VuY29tcGxldGU1LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDdiZWI4MAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvc3RhdGVtZW50UGFyc2luZy9mb3IvVW5jb21wbGV0ZTUuamF2YQpAQCAtMCwwICsxLDUgQEAKK2NsYXNzIEZvb3sKKyAgeworICAgIGZvcihpbnQgaSA9IDA7IGkgPCAxMDsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvc3RhdGVtZW50UGFyc2luZy9mb3IvVW5jb21wbGV0ZTUudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9zdGF0ZW1lbnRQYXJzaW5nL2Zvci9VbmNvbXBsZXRlNS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzllZWUwOAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvc3RhdGVtZW50UGFyc2luZy9mb3IvVW5jb21wbGV0ZTUudHh0CkBAIC0wLDAgKzEsNTggQEAKK1BzaUphdmFGaWxlOlVuY29tcGxldGU1LmphdmEKKyAgUHNpSW1wb3J0TGlzdAorICAgIDxlbXB0eSBsaXN0PgorICBQc2lDbGFzczpGb28KKyAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lLZXl3b3JkOmNsYXNzKCdjbGFzcycpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSWRlbnRpZmllcjpGb28oJ0ZvbycpCisgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAnKQorICAgIFBzaUNsYXNzSW5pdGlhbGl6ZXIKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAgICcpCisgICAgICAgIFBzaUZvclN0YXRlbWVudAorICAgICAgICAgIFBzaUtleXdvcmQ6Zm9yKCdmb3InKQorICAgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgICAgUHNpRGVjbGFyYXRpb25TdGF0ZW1lbnQKKyAgICAgICAgICAgIFBzaUxvY2FsVmFyaWFibGU6aQorICAgICAgICAgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgICAgIFBzaVR5cGVFbGVtZW50OmludAorICAgICAgICAgICAgICAgIFBzaUtleXdvcmQ6aW50KCdpbnQnKQorICAgICAgICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgICAgICAgICAgUHNpSWRlbnRpZmllcjppKCdpJykKKyAgICAgICAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgICAgICAgIFBzaUphdmFUb2tlbjpFUSgnPScpCisgICAgICAgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICAgICAgICBQc2lMaXRlcmFsRXhwcmVzc2lvbjowCisgICAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOklOVEVHRVJfTElURVJBTCgnMCcpCisgICAgICAgICAgICAgIFBzaUphdmFUb2tlbjpTRU1JQ09MT04oJzsnKQorICAgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICAgIFBzaUJpbmFyeUV4cHJlc3Npb246aSA8IDEwCisgICAgICAgICAgICBQc2lSZWZlcmVuY2VFeHByZXNzaW9uOmkKKyAgICAgICAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgICAgICBQc2lJZGVudGlmaWVyOmkoJ2knKQorICAgICAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgICAgICBQc2lKYXZhVG9rZW46TFQoJzwnKQorICAgICAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgICAgICBQc2lMaXRlcmFsRXhwcmVzc2lvbjoxMAorICAgICAgICAgICAgICBQc2lKYXZhVG9rZW46SU5URUdFUl9MSVRFUkFMKCcxMCcpCisgICAgICAgICAgUHNpSmF2YVRva2VuOlNFTUlDT0xPTignOycpCisgICAgICAgICAgUHNpRXJyb3JFbGVtZW50OicpJyBleHBlY3RlZAorICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAnKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcbicpCisgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9zdGF0ZW1lbnRQYXJzaW5nL2Zvci9VbmNvbXBsZXRlNi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9zdGF0ZW1lbnRQYXJzaW5nL2Zvci9VbmNvbXBsZXRlNi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFhZmVhZGIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL3N0YXRlbWVudFBhcnNpbmcvZm9yL1VuY29tcGxldGU2LmphdmEKQEAgLTAsMCArMSw1IEBACitjbGFzcyBGb297CisgIHsKKyAgICBmb3IoaW50IGkgPSAwOyBpIDwgMTA7IGkrKworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9zdGF0ZW1lbnRQYXJzaW5nL2Zvci9VbmNvbXBsZXRlNi50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL3N0YXRlbWVudFBhcnNpbmcvZm9yL1VuY29tcGxldGU2LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lOWRmMjMyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9zdGF0ZW1lbnRQYXJzaW5nL2Zvci9VbmNvbXBsZXRlNi50eHQKQEAgLTAsMCArMSw2NiBAQAorUHNpSmF2YUZpbGU6VW5jb21wbGV0ZTYuamF2YQorICBQc2lJbXBvcnRMaXN0CisgICAgPGVtcHR5IGxpc3Q+CisgIFBzaUNsYXNzOkZvbworICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUtleXdvcmQ6Y2xhc3MoJ2NsYXNzJykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lJZGVudGlmaWVyOkZvbygnRm9vJykKKyAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4gICcpCisgICAgUHNpQ2xhc3NJbml0aWFsaXplcgorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gICAgJykKKyAgICAgICAgUHNpRm9yU3RhdGVtZW50CisgICAgICAgICAgUHNpS2V5d29yZDpmb3IoJ2ZvcicpCisgICAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgICBQc2lEZWNsYXJhdGlvblN0YXRlbWVudAorICAgICAgICAgICAgUHNpTG9jYWxWYXJpYWJsZTppCisgICAgICAgICAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICAgICAgUHNpVHlwZUVsZW1lbnQ6aW50CisgICAgICAgICAgICAgICAgUHNpS2V5d29yZDppbnQoJ2ludCcpCisgICAgICAgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICAgICAgICBQc2lJZGVudGlmaWVyOmkoJ2knKQorICAgICAgICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOkVRKCc9JykKKyAgICAgICAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgICAgICAgIFBzaUxpdGVyYWxFeHByZXNzaW9uOjAKKyAgICAgICAgICAgICAgICBQc2lKYXZhVG9rZW46SU5URUdFUl9MSVRFUkFMKCcwJykKKyAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOlNFTUlDT0xPTignOycpCisgICAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgICAgUHNpQmluYXJ5RXhwcmVzc2lvbjppIDwgMTAKKyAgICAgICAgICAgIFBzaVJlZmVyZW5jZUV4cHJlc3Npb246aQorICAgICAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgICAgIFBzaUlkZW50aWZpZXI6aSgnaScpCisgICAgICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgICAgICAgIFBzaUphdmFUb2tlbjpMVCgnPCcpCisgICAgICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgICAgICAgIFBzaUxpdGVyYWxFeHByZXNzaW9uOjEwCisgICAgICAgICAgICAgIFBzaUphdmFUb2tlbjpJTlRFR0VSX0xJVEVSQUwoJzEwJykKKyAgICAgICAgICBQc2lKYXZhVG9rZW46U0VNSUNPTE9OKCc7JykKKyAgICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgICAgICBQc2lFeHByZXNzaW9uU3RhdGVtZW50CisgICAgICAgICAgICBQc2lQb3N0Zml4RXhwcmVzc2lvbjppKysKKyAgICAgICAgICAgICAgUHNpUmVmZXJlbmNlRXhwcmVzc2lvbjppCisgICAgICAgICAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgICAgICAgUHNpSWRlbnRpZmllcjppKCdpJykKKyAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOlBMVVNQTFVTKCcrKycpCisgICAgICAgICAgUHNpRXJyb3JFbGVtZW50OicpJyBleHBlY3RlZAorICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAnKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcbicpCisgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9zdGF0ZW1lbnRQYXJzaW5nL2Zvci9VbmNvbXBsZXRlNy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9zdGF0ZW1lbnRQYXJzaW5nL2Zvci9VbmNvbXBsZXRlNy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI4NDlkYTEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL3N0YXRlbWVudFBhcnNpbmcvZm9yL1VuY29tcGxldGU3LmphdmEKQEAgLTAsMCArMSw1IEBACitjbGFzcyBGb297CisgIHsKKyAgICBmb3IoaW50IGkgPSAwOyBpIDwgMTA7IGkrKykKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvc3RhdGVtZW50UGFyc2luZy9mb3IvVW5jb21wbGV0ZTcudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9zdGF0ZW1lbnRQYXJzaW5nL2Zvci9VbmNvbXBsZXRlNy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmExZTlhYwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvc3RhdGVtZW50UGFyc2luZy9mb3IvVW5jb21wbGV0ZTcudHh0CkBAIC0wLDAgKzEsNjcgQEAKK1BzaUphdmFGaWxlOlVuY29tcGxldGU3LmphdmEKKyAgUHNpSW1wb3J0TGlzdAorICAgIDxlbXB0eSBsaXN0PgorICBQc2lDbGFzczpGb28KKyAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lLZXl3b3JkOmNsYXNzKCdjbGFzcycpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSWRlbnRpZmllcjpGb28oJ0ZvbycpCisgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAnKQorICAgIFBzaUNsYXNzSW5pdGlhbGl6ZXIKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAgICcpCisgICAgICAgIFBzaUZvclN0YXRlbWVudAorICAgICAgICAgIFBzaUtleXdvcmQ6Zm9yKCdmb3InKQorICAgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgICAgUHNpRGVjbGFyYXRpb25TdGF0ZW1lbnQKKyAgICAgICAgICAgIFBzaUxvY2FsVmFyaWFibGU6aQorICAgICAgICAgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgICAgIFBzaVR5cGVFbGVtZW50OmludAorICAgICAgICAgICAgICAgIFBzaUtleXdvcmQ6aW50KCdpbnQnKQorICAgICAgICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgICAgICAgICAgUHNpSWRlbnRpZmllcjppKCdpJykKKyAgICAgICAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgICAgICAgIFBzaUphdmFUb2tlbjpFUSgnPScpCisgICAgICAgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICAgICAgICBQc2lMaXRlcmFsRXhwcmVzc2lvbjowCisgICAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOklOVEVHRVJfTElURVJBTCgnMCcpCisgICAgICAgICAgICAgIFBzaUphdmFUb2tlbjpTRU1JQ09MT04oJzsnKQorICAgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICAgIFBzaUJpbmFyeUV4cHJlc3Npb246aSA8IDEwCisgICAgICAgICAgICBQc2lSZWZlcmVuY2VFeHByZXNzaW9uOmkKKyAgICAgICAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgICAgICBQc2lJZGVudGlmaWVyOmkoJ2knKQorICAgICAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgICAgICBQc2lKYXZhVG9rZW46TFQoJzwnKQorICAgICAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgICAgICBQc2lMaXRlcmFsRXhwcmVzc2lvbjoxMAorICAgICAgICAgICAgICBQc2lKYXZhVG9rZW46SU5URUdFUl9MSVRFUkFMKCcxMCcpCisgICAgICAgICAgUHNpSmF2YVRva2VuOlNFTUlDT0xPTignOycpCisgICAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgICAgUHNpRXhwcmVzc2lvblN0YXRlbWVudAorICAgICAgICAgICAgUHNpUG9zdGZpeEV4cHJlc3Npb246aSsrCisgICAgICAgICAgICAgIFBzaVJlZmVyZW5jZUV4cHJlc3Npb246aQorICAgICAgICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgICAgICAgIFBzaUlkZW50aWZpZXI6aSgnaScpCisgICAgICAgICAgICAgIFBzaUphdmFUb2tlbjpQTFVTUExVUygnKysnKQorICAgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICAgICAgUHNpRXJyb3JFbGVtZW50OlN0YXRlbWVudCBleHBlY3RlZAorICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAnKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcbicpCisgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9zdGF0ZW1lbnRQYXJzaW5nL2Zvci9VbmNvbXBsZXRlOC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9zdGF0ZW1lbnRQYXJzaW5nL2Zvci9VbmNvbXBsZXRlOC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkyMTE3ODgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL3N0YXRlbWVudFBhcnNpbmcvZm9yL1VuY29tcGxldGU4LmphdmEKQEAgLTAsMCArMSw1IEBACitjbGFzcyBGb297CisgIHsKKyAgICBmb3IoKSBmb28oKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvc3RhdGVtZW50UGFyc2luZy9mb3IvVW5jb21wbGV0ZTgudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9zdGF0ZW1lbnRQYXJzaW5nL2Zvci9VbmNvbXBsZXRlOC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTM3MDQxNQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvc3RhdGVtZW50UGFyc2luZy9mb3IvVW5jb21wbGV0ZTgudHh0CkBAIC0wLDAgKzEsNDQgQEAKK1BzaUphdmFGaWxlOlVuY29tcGxldGU4LmphdmEKKyAgUHNpSW1wb3J0TGlzdAorICAgIDxlbXB0eSBsaXN0PgorICBQc2lDbGFzczpGb28KKyAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lLZXl3b3JkOmNsYXNzKCdjbGFzcycpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSWRlbnRpZmllcjpGb28oJ0ZvbycpCisgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAnKQorICAgIFBzaUNsYXNzSW5pdGlhbGl6ZXIKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAgICcpCisgICAgICAgIFBzaUZvclN0YXRlbWVudAorICAgICAgICAgIFBzaUtleXdvcmQ6Zm9yKCdmb3InKQorICAgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgICAgUHNpRXJyb3JFbGVtZW50OlN0YXRlbWVudCBleHBlY3RlZAorICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgICAgICBQc2lFeHByZXNzaW9uU3RhdGVtZW50CisgICAgICAgICAgICBQc2lNZXRob2RDYWxsRXhwcmVzc2lvbjpmb28oKQorICAgICAgICAgICAgICBQc2lSZWZlcmVuY2VFeHByZXNzaW9uOmZvbworICAgICAgICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgICAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgICAgICAgICBQc2lFeHByZXNzaW9uTGlzdAorICAgICAgICAgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgICAgICAgIFBzaUphdmFUb2tlbjpTRU1JQ09MT04oJzsnKQorICAgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4nKQorICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvc3RhdGVtZW50UGFyc2luZy9mb3IvVW5jb21wbGV0ZTkuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvc3RhdGVtZW50UGFyc2luZy9mb3IvVW5jb21wbGV0ZTkuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43Y2E3ZDJjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9zdGF0ZW1lbnRQYXJzaW5nL2Zvci9VbmNvbXBsZXRlOS5qYXZhCkBAIC0wLDAgKzEsNSBAQAorY2xhc3MgRm9veworICB7CisgICAgZm9yKGludCBpID0gMDspIGZvbygpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9zdGF0ZW1lbnRQYXJzaW5nL2Zvci9VbmNvbXBsZXRlOS50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL3N0YXRlbWVudFBhcnNpbmcvZm9yL1VuY29tcGxldGU5LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZWJjNjE2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9zdGF0ZW1lbnRQYXJzaW5nL2Zvci9VbmNvbXBsZXRlOS50eHQKQEAgLTAsMCArMSw1OCBAQAorUHNpSmF2YUZpbGU6VW5jb21wbGV0ZTkuamF2YQorICBQc2lJbXBvcnRMaXN0CisgICAgPGVtcHR5IGxpc3Q+CisgIFBzaUNsYXNzOkZvbworICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUtleXdvcmQ6Y2xhc3MoJ2NsYXNzJykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lJZGVudGlmaWVyOkZvbygnRm9vJykKKyAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4gICcpCisgICAgUHNpQ2xhc3NJbml0aWFsaXplcgorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gICAgJykKKyAgICAgICAgUHNpRm9yU3RhdGVtZW50CisgICAgICAgICAgUHNpS2V5d29yZDpmb3IoJ2ZvcicpCisgICAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgICBQc2lEZWNsYXJhdGlvblN0YXRlbWVudAorICAgICAgICAgICAgUHNpTG9jYWxWYXJpYWJsZTppCisgICAgICAgICAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICAgICAgUHNpVHlwZUVsZW1lbnQ6aW50CisgICAgICAgICAgICAgICAgUHNpS2V5d29yZDppbnQoJ2ludCcpCisgICAgICAgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICAgICAgICBQc2lJZGVudGlmaWVyOmkoJ2knKQorICAgICAgICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOkVRKCc9JykKKyAgICAgICAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgICAgICAgIFBzaUxpdGVyYWxFeHByZXNzaW9uOjAKKyAgICAgICAgICAgICAgICBQc2lKYXZhVG9rZW46SU5URUdFUl9MSVRFUkFMKCcwJykKKyAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOlNFTUlDT0xPTignOycpCisgICAgICAgICAgUHNpRXJyb3JFbGVtZW50Oic7JyBleHBlY3RlZAorICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgICAgICBQc2lFeHByZXNzaW9uU3RhdGVtZW50CisgICAgICAgICAgICBQc2lNZXRob2RDYWxsRXhwcmVzc2lvbjpmb28oKQorICAgICAgICAgICAgICBQc2lSZWZlcmVuY2VFeHByZXNzaW9uOmZvbworICAgICAgICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgICAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgICAgICAgICBQc2lFeHByZXNzaW9uTGlzdAorICAgICAgICAgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgICAgICAgIFBzaUphdmFUb2tlbjpTRU1JQ09MT04oJzsnKQorICAgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4nKQorICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvc3RhdGVtZW50UGFyc2luZy9nZW5lcmljc1BhcnNpbmcvRm9yLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL3N0YXRlbWVudFBhcnNpbmcvZ2VuZXJpY3NQYXJzaW5nL0Zvci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgxOWMwY2YKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL3N0YXRlbWVudFBhcnNpbmcvZ2VuZXJpY3NQYXJzaW5nL0Zvci5qYXZhCkBAIC0wLDAgKzEsNyBAQAorY2xhc3MgVGVzdCB7CisgICAgdm9pZCBtZXRob2QoKSB7CisgICAgICAgIGZvcihJdGVyYXRvcjxTdHJpbmc+IGl0ID0gbnVsbDsgaXQuaGFzTmV4dCgpOykgeworICAgICAgICAgICAgU3RyaW5nIHMgPSBpdC5uZXh0KCk7CisgICAgICAgIH0KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9zdGF0ZW1lbnRQYXJzaW5nL2dlbmVyaWNzUGFyc2luZy9Gb3IudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9zdGF0ZW1lbnRQYXJzaW5nL2dlbmVyaWNzUGFyc2luZy9Gb3IudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmExNmRjY2MKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL3N0YXRlbWVudFBhcnNpbmcvZ2VuZXJpY3NQYXJzaW5nL0Zvci50eHQKQEAgLTAsMCArMSwxMTcgQEAKK1BzaUphdmFGaWxlOkZvci5qYXZhCisgIFBzaUltcG9ydExpc3QKKyAgICA8ZW1wdHkgbGlzdD4KKyAgUHNpQ2xhc3M6VGVzdAorICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUtleXdvcmQ6Y2xhc3MoJ2NsYXNzJykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lJZGVudGlmaWVyOlRlc3QoJ1Rlc3QnKQorICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgICAnKQorICAgIFBzaU1ldGhvZDptZXRob2QKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjptZXRob2QoJ21ldGhvZCcpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAgICAgICAnKQorICAgICAgICBQc2lGb3JTdGF0ZW1lbnQKKyAgICAgICAgICBQc2lLZXl3b3JkOmZvcignZm9yJykKKyAgICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICAgIFBzaURlY2xhcmF0aW9uU3RhdGVtZW50CisgICAgICAgICAgICBQc2lMb2NhbFZhcmlhYmxlOml0CisgICAgICAgICAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICAgICAgUHNpVHlwZUVsZW1lbnQ6SXRlcmF0b3I8U3RyaW5nPgorICAgICAgICAgICAgICAgIFBzaUphdmFDb2RlUmVmZXJlbmNlRWxlbWVudDpJdGVyYXRvcjxTdHJpbmc+CisgICAgICAgICAgICAgICAgICBQc2lJZGVudGlmaWVyOkl0ZXJhdG9yKCdJdGVyYXRvcicpCisgICAgICAgICAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICAgICAgICAgIFBzaUphdmFUb2tlbjpMVCgnPCcpCisgICAgICAgICAgICAgICAgICAgIFBzaVR5cGVFbGVtZW50OlN0cmluZworICAgICAgICAgICAgICAgICAgICAgIFBzaUphdmFDb2RlUmVmZXJlbmNlRWxlbWVudDpTdHJpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgIFBzaUlkZW50aWZpZXI6U3RyaW5nKCdTdHJpbmcnKQorICAgICAgICAgICAgICAgICAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOkdUKCc+JykKKyAgICAgICAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgICAgICAgIFBzaUlkZW50aWZpZXI6aXQoJ2l0JykKKyAgICAgICAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgICAgICAgIFBzaUphdmFUb2tlbjpFUSgnPScpCisgICAgICAgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICAgICAgICBQc2lMaXRlcmFsRXhwcmVzc2lvbjpudWxsCisgICAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOk5VTExfS0VZV09SRCgnbnVsbCcpCisgICAgICAgICAgICAgIFBzaUphdmFUb2tlbjpTRU1JQ09MT04oJzsnKQorICAgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICAgIFBzaU1ldGhvZENhbGxFeHByZXNzaW9uOml0Lmhhc05leHQoKQorICAgICAgICAgICAgUHNpUmVmZXJlbmNlRXhwcmVzc2lvbjppdC5oYXNOZXh0CisgICAgICAgICAgICAgIFBzaVJlZmVyZW5jZUV4cHJlc3Npb246aXQKKyAgICAgICAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICAgICAgICBQc2lJZGVudGlmaWVyOml0KCdpdCcpCisgICAgICAgICAgICAgIFBzaUphdmFUb2tlbjpET1QoJy4nKQorICAgICAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgICAgIFBzaUlkZW50aWZpZXI6aGFzTmV4dCgnaGFzTmV4dCcpCisgICAgICAgICAgICBQc2lFeHByZXNzaW9uTGlzdAorICAgICAgICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgICAgIFBzaUphdmFUb2tlbjpTRU1JQ09MT04oJzsnKQorICAgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgICAgUHNpQmxvY2tTdGF0ZW1lbnQKKyAgICAgICAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gICAgICAgICAgICAnKQorICAgICAgICAgICAgICBQc2lEZWNsYXJhdGlvblN0YXRlbWVudAorICAgICAgICAgICAgICAgIFBzaUxvY2FsVmFyaWFibGU6cworICAgICAgICAgICAgICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICAgICAgICAgIFBzaVR5cGVFbGVtZW50OlN0cmluZworICAgICAgICAgICAgICAgICAgICBQc2lKYXZhQ29kZVJlZmVyZW5jZUVsZW1lbnQ6U3RyaW5nCisgICAgICAgICAgICAgICAgICAgICAgUHNpSWRlbnRpZmllcjpTdHJpbmcoJ1N0cmluZycpCisgICAgICAgICAgICAgICAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgICAgICAgICAgICAgIFBzaUlkZW50aWZpZXI6cygncycpCisgICAgICAgICAgICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgICAgICAgICAgICAgIFBzaUphdmFUb2tlbjpFUSgnPScpCisgICAgICAgICAgICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgICAgICAgICAgICAgIFBzaU1ldGhvZENhbGxFeHByZXNzaW9uOml0Lm5leHQoKQorICAgICAgICAgICAgICAgICAgICBQc2lSZWZlcmVuY2VFeHByZXNzaW9uOml0Lm5leHQKKyAgICAgICAgICAgICAgICAgICAgICBQc2lSZWZlcmVuY2VFeHByZXNzaW9uOml0CisgICAgICAgICAgICAgICAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgICAgICAgICAgICAgICAgUHNpSWRlbnRpZmllcjppdCgnaXQnKQorICAgICAgICAgICAgICAgICAgICAgIFBzaUphdmFUb2tlbjpET1QoJy4nKQorICAgICAgICAgICAgICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgICAgICAgICAgICAgIFBzaUlkZW50aWZpZXI6bmV4dCgnbmV4dCcpCisgICAgICAgICAgICAgICAgICAgIFBzaUV4cHJlc3Npb25MaXN0CisgICAgICAgICAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgICAgICAgICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOlNFTUlDT0xPTignOycpCisgICAgICAgICAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAgICAgICAnKQorICAgICAgICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gICAgJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4nKQorICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvc3RhdGVtZW50UGFyc2luZy9nZW5lcmljc1BhcnNpbmcvTG9jYWxWYXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvc3RhdGVtZW50UGFyc2luZy9nZW5lcmljc1BhcnNpbmcvTG9jYWxWYXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMDAzYzViCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9zdGF0ZW1lbnRQYXJzaW5nL2dlbmVyaWNzUGFyc2luZy9Mb2NhbFZhci5qYXZhCkBAIC0wLDAgKzEsNSBAQAorY2xhc3MgVGVzdCB7CisgICAgdm9pZCBtZXRob2QoKSB7CisgICAgICAgIExpc3Q8SW50ZWdlcj4gbGlzdDsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9zdGF0ZW1lbnRQYXJzaW5nL2dlbmVyaWNzUGFyc2luZy9Mb2NhbFZhci50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL3N0YXRlbWVudFBhcnNpbmcvZ2VuZXJpY3NQYXJzaW5nL0xvY2FsVmFyLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MjlkYjk3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9zdGF0ZW1lbnRQYXJzaW5nL2dlbmVyaWNzUGFyc2luZy9Mb2NhbFZhci50eHQKQEAgLTAsMCArMSw1OCBAQAorUHNpSmF2YUZpbGU6TG9jYWxWYXIuamF2YQorICBQc2lJbXBvcnRMaXN0CisgICAgPGVtcHR5IGxpc3Q+CisgIFBzaUNsYXNzOlRlc3QKKyAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lLZXl3b3JkOmNsYXNzKCdjbGFzcycpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSWRlbnRpZmllcjpUZXN0KCdUZXN0JykKKyAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4gICAgJykKKyAgICBQc2lNZXRob2Q6bWV0aG9kCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6bWV0aG9kKCdtZXRob2QnKQorICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgICAgICAgJykKKyAgICAgICAgUHNpRGVjbGFyYXRpb25TdGF0ZW1lbnQKKyAgICAgICAgICBQc2lMb2NhbFZhcmlhYmxlOmxpc3QKKyAgICAgICAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgICBQc2lUeXBlRWxlbWVudDpMaXN0PEludGVnZXI+CisgICAgICAgICAgICAgIFBzaUphdmFDb2RlUmVmZXJlbmNlRWxlbWVudDpMaXN0PEludGVnZXI+CisgICAgICAgICAgICAgICAgUHNpSWRlbnRpZmllcjpMaXN0KCdMaXN0JykKKyAgICAgICAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICAgICAgICBQc2lKYXZhVG9rZW46TFQoJzwnKQorICAgICAgICAgICAgICAgICAgUHNpVHlwZUVsZW1lbnQ6SW50ZWdlcgorICAgICAgICAgICAgICAgICAgICBQc2lKYXZhQ29kZVJlZmVyZW5jZUVsZW1lbnQ6SW50ZWdlcgorICAgICAgICAgICAgICAgICAgICAgIFBzaUlkZW50aWZpZXI6SW50ZWdlcignSW50ZWdlcicpCisgICAgICAgICAgICAgICAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgICAgICAgICBQc2lKYXZhVG9rZW46R1QoJz4nKQorICAgICAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgICAgICBQc2lJZGVudGlmaWVyOmxpc3QoJ2xpc3QnKQorICAgICAgICAgICAgUHNpSmF2YVRva2VuOlNFTUlDT0xPTignOycpCisgICAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAgICcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuJykKKyAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvc3RhdGVtZW50UGFyc2luZy9pZi9Ob3JtYWxOb0Vsc2UuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvc3RhdGVtZW50UGFyc2luZy9pZi9Ob3JtYWxOb0Vsc2UuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NDU3NjhiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9zdGF0ZW1lbnRQYXJzaW5nL2lmL05vcm1hbE5vRWxzZS5qYXZhCkBAIC0wLDAgKzEsNSBAQAorY2xhc3MgRm9veworICB7CisgICAgaWYgKGEpIGYxKCk7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL3N0YXRlbWVudFBhcnNpbmcvaWYvTm9ybWFsTm9FbHNlLnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvc3RhdGVtZW50UGFyc2luZy9pZi9Ob3JtYWxOb0Vsc2UudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRhMmVjZTIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL3N0YXRlbWVudFBhcnNpbmcvaWYvTm9ybWFsTm9FbHNlLnR4dApAQCAtMCwwICsxLDQ3IEBACitQc2lKYXZhRmlsZTpOb3JtYWxOb0Vsc2UuamF2YQorICBQc2lJbXBvcnRMaXN0CisgICAgPGVtcHR5IGxpc3Q+CisgIFBzaUNsYXNzOkZvbworICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUtleXdvcmQ6Y2xhc3MoJ2NsYXNzJykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lJZGVudGlmaWVyOkZvbygnRm9vJykKKyAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4gICcpCisgICAgUHNpQ2xhc3NJbml0aWFsaXplcgorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gICAgJykKKyAgICAgICAgUHNpSWZTdGF0ZW1lbnQKKyAgICAgICAgICBQc2lLZXl3b3JkOmlmKCdpZicpCisgICAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgICBQc2lSZWZlcmVuY2VFeHByZXNzaW9uOmEKKyAgICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgICBQc2lJZGVudGlmaWVyOmEoJ2EnKQorICAgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgICAgUHNpRXhwcmVzc2lvblN0YXRlbWVudAorICAgICAgICAgICAgUHNpTWV0aG9kQ2FsbEV4cHJlc3Npb246ZjEoKQorICAgICAgICAgICAgICBQc2lSZWZlcmVuY2VFeHByZXNzaW9uOmYxCisgICAgICAgICAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgICAgICAgUHNpSWRlbnRpZmllcjpmMSgnZjEnKQorICAgICAgICAgICAgICBQc2lFeHByZXNzaW9uTGlzdAorICAgICAgICAgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgICAgICAgIFBzaUphdmFUb2tlbjpTRU1JQ09MT04oJzsnKQorICAgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4nKQorICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvc3RhdGVtZW50UGFyc2luZy9pZi9Ob3JtYWxXaXRoRWxzZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9zdGF0ZW1lbnRQYXJzaW5nL2lmL05vcm1hbFdpdGhFbHNlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTg3M2VhZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvc3RhdGVtZW50UGFyc2luZy9pZi9Ob3JtYWxXaXRoRWxzZS5qYXZhCkBAIC0wLDAgKzEsNSBAQAorY2xhc3MgRm9veworICB7CisgICAgaWYgKGEpeyBmMSgpOyB9IGVsc2V7IGYyKCk7IH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvc3RhdGVtZW50UGFyc2luZy9pZi9Ob3JtYWxXaXRoRWxzZS50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL3N0YXRlbWVudFBhcnNpbmcvaWYvTm9ybWFsV2l0aEVsc2UudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI1YmY2MWMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL3N0YXRlbWVudFBhcnNpbmcvaWYvTm9ybWFsV2l0aEVsc2UudHh0CkBAIC0wLDAgKzEsNzAgQEAKK1BzaUphdmFGaWxlOk5vcm1hbFdpdGhFbHNlLmphdmEKKyAgUHNpSW1wb3J0TGlzdAorICAgIDxlbXB0eSBsaXN0PgorICBQc2lDbGFzczpGb28KKyAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lLZXl3b3JkOmNsYXNzKCdjbGFzcycpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSWRlbnRpZmllcjpGb28oJ0ZvbycpCisgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAnKQorICAgIFBzaUNsYXNzSW5pdGlhbGl6ZXIKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAgICcpCisgICAgICAgIFBzaUlmU3RhdGVtZW50CisgICAgICAgICAgUHNpS2V5d29yZDppZignaWYnKQorICAgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgICAgUHNpUmVmZXJlbmNlRXhwcmVzc2lvbjphCisgICAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgICAgUHNpSWRlbnRpZmllcjphKCdhJykKKyAgICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgICAgIFBzaUJsb2NrU3RhdGVtZW50CisgICAgICAgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICAgICAgICBQc2lFeHByZXNzaW9uU3RhdGVtZW50CisgICAgICAgICAgICAgICAgUHNpTWV0aG9kQ2FsbEV4cHJlc3Npb246ZjEoKQorICAgICAgICAgICAgICAgICAgUHNpUmVmZXJlbmNlRXhwcmVzc2lvbjpmMQorICAgICAgICAgICAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgICAgICAgICAgIFBzaUlkZW50aWZpZXI6ZjEoJ2YxJykKKyAgICAgICAgICAgICAgICAgIFBzaUV4cHJlc3Npb25MaXN0CisgICAgICAgICAgICAgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgICAgICAgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOlNFTUlDT0xPTignOycpCisgICAgICAgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgICAgICBQc2lLZXl3b3JkOmVsc2UoJ2Vsc2UnKQorICAgICAgICAgIFBzaUJsb2NrU3RhdGVtZW50CisgICAgICAgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICAgICAgICBQc2lFeHByZXNzaW9uU3RhdGVtZW50CisgICAgICAgICAgICAgICAgUHNpTWV0aG9kQ2FsbEV4cHJlc3Npb246ZjIoKQorICAgICAgICAgICAgICAgICAgUHNpUmVmZXJlbmNlRXhwcmVzc2lvbjpmMgorICAgICAgICAgICAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgICAgICAgICAgIFBzaUlkZW50aWZpZXI6ZjIoJ2YyJykKKyAgICAgICAgICAgICAgICAgIFBzaUV4cHJlc3Npb25MaXN0CisgICAgICAgICAgICAgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgICAgICAgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOlNFTUlDT0xPTignOycpCisgICAgICAgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gICcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuJykKKyAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL3N0YXRlbWVudFBhcnNpbmcvaWYvVW5jb21wbGV0ZTEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvc3RhdGVtZW50UGFyc2luZy9pZi9VbmNvbXBsZXRlMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI1NzNiNDkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL3N0YXRlbWVudFBhcnNpbmcvaWYvVW5jb21wbGV0ZTEuamF2YQpAQCAtMCwwICsxLDUgQEAKK2NsYXNzIEZvb3sKKyAgeworICAgIGlmCisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL3N0YXRlbWVudFBhcnNpbmcvaWYvVW5jb21wbGV0ZTEudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9zdGF0ZW1lbnRQYXJzaW5nL2lmL1VuY29tcGxldGUxLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNmNjNGZjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9zdGF0ZW1lbnRQYXJzaW5nL2lmL1VuY29tcGxldGUxLnR4dApAQCAtMCwwICsxLDMxIEBACitQc2lKYXZhRmlsZTpVbmNvbXBsZXRlMS5qYXZhCisgIFBzaUltcG9ydExpc3QKKyAgICA8ZW1wdHkgbGlzdD4KKyAgUHNpQ2xhc3M6Rm9vCisgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpS2V5d29yZDpjbGFzcygnY2xhc3MnKQorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUlkZW50aWZpZXI6Rm9vKCdGb28nKQorICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgJykKKyAgICBQc2lDbGFzc0luaXRpYWxpemVyCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgICAnKQorICAgICAgICBQc2lJZlN0YXRlbWVudAorICAgICAgICAgIFBzaUtleXdvcmQ6aWYoJ2lmJykKKyAgICAgICAgICBQc2lFcnJvckVsZW1lbnQ6JygnIGV4cGVjdGVkCisgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gICcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuJykKKyAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvc3RhdGVtZW50UGFyc2luZy9pZi9VbmNvbXBsZXRlMi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9zdGF0ZW1lbnRQYXJzaW5nL2lmL1VuY29tcGxldGUyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGQ2NGZmZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvc3RhdGVtZW50UGFyc2luZy9pZi9VbmNvbXBsZXRlMi5qYXZhCkBAIC0wLDAgKzEsNSBAQAorY2xhc3MgRm9veworICB7CisgICAgaWYgKAorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9zdGF0ZW1lbnRQYXJzaW5nL2lmL1VuY29tcGxldGUyLnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvc3RhdGVtZW50UGFyc2luZy9pZi9VbmNvbXBsZXRlMi50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDQ5ODM0MAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvc3RhdGVtZW50UGFyc2luZy9pZi9VbmNvbXBsZXRlMi50eHQKQEAgLTAsMCArMSwzMyBAQAorUHNpSmF2YUZpbGU6VW5jb21wbGV0ZTIuamF2YQorICBQc2lJbXBvcnRMaXN0CisgICAgPGVtcHR5IGxpc3Q+CisgIFBzaUNsYXNzOkZvbworICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUtleXdvcmQ6Y2xhc3MoJ2NsYXNzJykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lJZGVudGlmaWVyOkZvbygnRm9vJykKKyAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4gICcpCisgICAgUHNpQ2xhc3NJbml0aWFsaXplcgorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gICAgJykKKyAgICAgICAgUHNpSWZTdGF0ZW1lbnQKKyAgICAgICAgICBQc2lLZXl3b3JkOmlmKCdpZicpCisgICAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgICBQc2lFcnJvckVsZW1lbnQ6RXhwcmVzc2lvbiBleHBlY3RlZAorICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAnKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcbicpCisgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL3N0YXRlbWVudFBhcnNpbmcvaWYvVW5jb21wbGV0ZTMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvc3RhdGVtZW50UGFyc2luZy9pZi9VbmNvbXBsZXRlMy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJiOGEyODIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL3N0YXRlbWVudFBhcnNpbmcvaWYvVW5jb21wbGV0ZTMuamF2YQpAQCAtMCwwICsxLDYgQEAKK2NsYXNzIEZvb3sKKyAgeworICAgIGlmICgKKyAgICBmb28oKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvc3RhdGVtZW50UGFyc2luZy9pZi9VbmNvbXBsZXRlMy50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL3N0YXRlbWVudFBhcnNpbmcvaWYvVW5jb21wbGV0ZTMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI5ZmFiOGUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL3N0YXRlbWVudFBhcnNpbmcvaWYvVW5jb21wbGV0ZTMudHh0CkBAIC0wLDAgKzEsNDQgQEAKK1BzaUphdmFGaWxlOlVuY29tcGxldGUzLmphdmEKKyAgUHNpSW1wb3J0TGlzdAorICAgIDxlbXB0eSBsaXN0PgorICBQc2lDbGFzczpGb28KKyAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lLZXl3b3JkOmNsYXNzKCdjbGFzcycpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSWRlbnRpZmllcjpGb28oJ0ZvbycpCisgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAnKQorICAgIFBzaUNsYXNzSW5pdGlhbGl6ZXIKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAgICcpCisgICAgICAgIFBzaUlmU3RhdGVtZW50CisgICAgICAgICAgUHNpS2V5d29yZDppZignaWYnKQorICAgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgICAgUHNpRXJyb3JFbGVtZW50OkV4cHJlc3Npb24gZXhwZWN0ZWQKKyAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgICAnKQorICAgICAgICBQc2lFeHByZXNzaW9uU3RhdGVtZW50CisgICAgICAgICAgUHNpTWV0aG9kQ2FsbEV4cHJlc3Npb246Zm9vKCkKKyAgICAgICAgICAgIFBzaVJlZmVyZW5jZUV4cHJlc3Npb246Zm9vCisgICAgICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICAgICAgICBQc2lFeHByZXNzaW9uTGlzdAorICAgICAgICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgICAgIFBzaUphdmFUb2tlbjpTRU1JQ09MT04oJzsnKQorICAgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4nKQorICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvc3RhdGVtZW50UGFyc2luZy9pZi9VbmNvbXBsZXRlNC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9zdGF0ZW1lbnRQYXJzaW5nL2lmL1VuY29tcGxldGU0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzlmOWJiMgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvc3RhdGVtZW50UGFyc2luZy9pZi9VbmNvbXBsZXRlNC5qYXZhCkBAIC0wLDAgKzEsNSBAQAorY2xhc3MgRm9veworICB7CisgICAgaWYgKGNvbmQKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvc3RhdGVtZW50UGFyc2luZy9pZi9VbmNvbXBsZXRlNC50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL3N0YXRlbWVudFBhcnNpbmcvaWYvVW5jb21wbGV0ZTQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM1MTk0NDgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL3N0YXRlbWVudFBhcnNpbmcvaWYvVW5jb21wbGV0ZTQudHh0CkBAIC0wLDAgKzEsMzcgQEAKK1BzaUphdmFGaWxlOlVuY29tcGxldGU0LmphdmEKKyAgUHNpSW1wb3J0TGlzdAorICAgIDxlbXB0eSBsaXN0PgorICBQc2lDbGFzczpGb28KKyAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lLZXl3b3JkOmNsYXNzKCdjbGFzcycpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSWRlbnRpZmllcjpGb28oJ0ZvbycpCisgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAnKQorICAgIFBzaUNsYXNzSW5pdGlhbGl6ZXIKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAgICcpCisgICAgICAgIFBzaUlmU3RhdGVtZW50CisgICAgICAgICAgUHNpS2V5d29yZDppZignaWYnKQorICAgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgICAgUHNpUmVmZXJlbmNlRXhwcmVzc2lvbjpjb25kCisgICAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgICAgUHNpSWRlbnRpZmllcjpjb25kKCdjb25kJykKKyAgICAgICAgICBQc2lFcnJvckVsZW1lbnQ6JyknIGV4cGVjdGVkCisgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gICcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuJykKKyAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL3N0YXRlbWVudFBhcnNpbmcvaWYvVW5jb21wbGV0ZTUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvc3RhdGVtZW50UGFyc2luZy9pZi9VbmNvbXBsZXRlNS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjExOWU2MDEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL3N0YXRlbWVudFBhcnNpbmcvaWYvVW5jb21wbGV0ZTUuamF2YQpAQCAtMCwwICsxLDUgQEAKK2NsYXNzIEZvb3sKKyAgeworICAgIGlmIChjb25kKQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9zdGF0ZW1lbnRQYXJzaW5nL2lmL1VuY29tcGxldGU1LnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvc3RhdGVtZW50UGFyc2luZy9pZi9VbmNvbXBsZXRlNS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGFhOTI0YQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvc3RhdGVtZW50UGFyc2luZy9pZi9VbmNvbXBsZXRlNS50eHQKQEAgLTAsMCArMSwzOCBAQAorUHNpSmF2YUZpbGU6VW5jb21wbGV0ZTUuamF2YQorICBQc2lJbXBvcnRMaXN0CisgICAgPGVtcHR5IGxpc3Q+CisgIFBzaUNsYXNzOkZvbworICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUtleXdvcmQ6Y2xhc3MoJ2NsYXNzJykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lJZGVudGlmaWVyOkZvbygnRm9vJykKKyAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4gICcpCisgICAgUHNpQ2xhc3NJbml0aWFsaXplcgorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gICAgJykKKyAgICAgICAgUHNpSWZTdGF0ZW1lbnQKKyAgICAgICAgICBQc2lLZXl3b3JkOmlmKCdpZicpCisgICAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgICBQc2lSZWZlcmVuY2VFeHByZXNzaW9uOmNvbmQKKyAgICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgICBQc2lJZGVudGlmaWVyOmNvbmQoJ2NvbmQnKQorICAgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICAgICAgUHNpRXJyb3JFbGVtZW50OlN0YXRlbWVudCBleHBlY3RlZAorICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAnKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcbicpCisgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9zdGF0ZW1lbnRQYXJzaW5nL2lmL1VuY29tcGxldGU2LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL3N0YXRlbWVudFBhcnNpbmcvaWYvVW5jb21wbGV0ZTYuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNGEyNzgxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9zdGF0ZW1lbnRQYXJzaW5nL2lmL1VuY29tcGxldGU2LmphdmEKQEAgLTAsMCArMSw1IEBACitjbGFzcyBGb297CisgIHsKKyAgICBpZiAoKSBmb28oKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvc3RhdGVtZW50UGFyc2luZy9pZi9VbmNvbXBsZXRlNi50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL3N0YXRlbWVudFBhcnNpbmcvaWYvVW5jb21wbGV0ZTYudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ5MzY5YWEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL3N0YXRlbWVudFBhcnNpbmcvaWYvVW5jb21wbGV0ZTYudHh0CkBAIC0wLDAgKzEsNDUgQEAKK1BzaUphdmFGaWxlOlVuY29tcGxldGU2LmphdmEKKyAgUHNpSW1wb3J0TGlzdAorICAgIDxlbXB0eSBsaXN0PgorICBQc2lDbGFzczpGb28KKyAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lLZXl3b3JkOmNsYXNzKCdjbGFzcycpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSWRlbnRpZmllcjpGb28oJ0ZvbycpCisgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAnKQorICAgIFBzaUNsYXNzSW5pdGlhbGl6ZXIKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAgICcpCisgICAgICAgIFBzaUlmU3RhdGVtZW50CisgICAgICAgICAgUHNpS2V5d29yZDppZignaWYnKQorICAgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgICAgUHNpRXJyb3JFbGVtZW50OkV4cHJlc3Npb24gZXhwZWN0ZWQKKyAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgICAgUHNpRXhwcmVzc2lvblN0YXRlbWVudAorICAgICAgICAgICAgUHNpTWV0aG9kQ2FsbEV4cHJlc3Npb246Zm9vKCkKKyAgICAgICAgICAgICAgUHNpUmVmZXJlbmNlRXhwcmVzc2lvbjpmb28KKyAgICAgICAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICAgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgICAgICAgICAgUHNpRXhwcmVzc2lvbkxpc3QKKyAgICAgICAgICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICAgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICAgICAgICBQc2lKYXZhVG9rZW46U0VNSUNPTE9OKCc7JykKKyAgICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gICcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuJykKKyAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL3N0YXRlbWVudFBhcnNpbmcvaWYvVW5jb21wbGV0ZTcuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvc3RhdGVtZW50UGFyc2luZy9pZi9VbmNvbXBsZXRlNy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBkZGRiODQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL3N0YXRlbWVudFBhcnNpbmcvaWYvVW5jb21wbGV0ZTcuamF2YQpAQCAtMCwwICsxLDUgQEAKK2NsYXNzIEZvb3sKKyAgeworICAgIGlmIChjb25kKSBmb28oKTsgZWxzZQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9zdGF0ZW1lbnRQYXJzaW5nL2lmL1VuY29tcGxldGU3LnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvc3RhdGVtZW50UGFyc2luZy9pZi9VbmNvbXBsZXRlNy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDQyYmYyZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvc3RhdGVtZW50UGFyc2luZy9pZi9VbmNvbXBsZXRlNy50eHQKQEAgLTAsMCArMSw1MSBAQAorUHNpSmF2YUZpbGU6VW5jb21wbGV0ZTcuamF2YQorICBQc2lJbXBvcnRMaXN0CisgICAgPGVtcHR5IGxpc3Q+CisgIFBzaUNsYXNzOkZvbworICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUtleXdvcmQ6Y2xhc3MoJ2NsYXNzJykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lJZGVudGlmaWVyOkZvbygnRm9vJykKKyAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4gICcpCisgICAgUHNpQ2xhc3NJbml0aWFsaXplcgorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gICAgJykKKyAgICAgICAgUHNpSWZTdGF0ZW1lbnQKKyAgICAgICAgICBQc2lLZXl3b3JkOmlmKCdpZicpCisgICAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgICBQc2lSZWZlcmVuY2VFeHByZXNzaW9uOmNvbmQKKyAgICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgICBQc2lJZGVudGlmaWVyOmNvbmQoJ2NvbmQnKQorICAgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgICAgUHNpRXhwcmVzc2lvblN0YXRlbWVudAorICAgICAgICAgICAgUHNpTWV0aG9kQ2FsbEV4cHJlc3Npb246Zm9vKCkKKyAgICAgICAgICAgICAgUHNpUmVmZXJlbmNlRXhwcmVzc2lvbjpmb28KKyAgICAgICAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICAgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgICAgICAgICAgUHNpRXhwcmVzc2lvbkxpc3QKKyAgICAgICAgICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICAgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICAgICAgICBQc2lKYXZhVG9rZW46U0VNSUNPTE9OKCc7JykKKyAgICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgICAgICBQc2lLZXl3b3JkOmVsc2UoJ2Vsc2UnKQorICAgICAgICAgIFBzaUVycm9yRWxlbWVudDpTdGF0ZW1lbnQgZXhwZWN0ZWQKKyAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4nKQorICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvc3RhdGVtZW50UGFyc2luZy9sYWJlbC9TaW1wbGUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvc3RhdGVtZW50UGFyc2luZy9sYWJlbC9TaW1wbGUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMjg3OGRhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9zdGF0ZW1lbnRQYXJzaW5nL2xhYmVsL1NpbXBsZS5qYXZhCkBAIC0wLDAgKzEsNiBAQAorY2xhc3MgQXsKKyAgeworTG9vcDoKKyAgd2hpbGUodHJ1ZSkgOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9zdGF0ZW1lbnRQYXJzaW5nL2xhYmVsL1NpbXBsZS50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL3N0YXRlbWVudFBhcnNpbmcvbGFiZWwvU2ltcGxlLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ODUwOGQyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9zdGF0ZW1lbnRQYXJzaW5nL2xhYmVsL1NpbXBsZS50eHQKQEAgLTAsMCArMSw0MCBAQAorUHNpSmF2YUZpbGU6U2ltcGxlLmphdmEKKyAgUHNpSW1wb3J0TGlzdAorICAgIDxlbXB0eSBsaXN0PgorICBQc2lDbGFzczpBCisgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpS2V5d29yZDpjbGFzcygnY2xhc3MnKQorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUlkZW50aWZpZXI6QSgnQScpCisgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAnKQorICAgIFBzaUNsYXNzSW5pdGlhbGl6ZXIKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuJykKKyAgICAgICAgUHNpTGFiZWxlZFN0YXRlbWVudAorICAgICAgICAgIFBzaUlkZW50aWZpZXI6TG9vcCgnTG9vcCcpCisgICAgICAgICAgUHNpSmF2YVRva2VuOkNPTE9OKCc6JykKKyAgICAgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgJykKKyAgICAgICAgICBQc2lXaGlsZVN0YXRlbWVudAorICAgICAgICAgICAgUHNpS2V5d29yZDp3aGlsZSgnd2hpbGUnKQorICAgICAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgICAgIFBzaUxpdGVyYWxFeHByZXNzaW9uOnRydWUKKyAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOlRSVUVfS0VZV09SRCgndHJ1ZScpCisgICAgICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgICAgICBQc2lFbXB0eVN0YXRlbWVudAorICAgICAgICAgICAgICBQc2lKYXZhVG9rZW46U0VNSUNPTE9OKCc7JykKKyAgICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gICcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuJykKKyAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvc3RhdGVtZW50UGFyc2luZy9yZXR1cm4vTm9ybWFsTm9SZXN1bHQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvc3RhdGVtZW50UGFyc2luZy9yZXR1cm4vTm9ybWFsTm9SZXN1bHQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNmNjMmJiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9zdGF0ZW1lbnRQYXJzaW5nL3JldHVybi9Ob3JtYWxOb1Jlc3VsdC5qYXZhCkBAIC0wLDAgKzEsNSBAQAorY2xhc3MgRm9veworICB7CisgICAgcmV0dXJuOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9zdGF0ZW1lbnRQYXJzaW5nL3JldHVybi9Ob3JtYWxOb1Jlc3VsdC50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL3N0YXRlbWVudFBhcnNpbmcvcmV0dXJuL05vcm1hbE5vUmVzdWx0LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZjZkYjMyZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvc3RhdGVtZW50UGFyc2luZy9yZXR1cm4vTm9ybWFsTm9SZXN1bHQudHh0CkBAIC0wLDAgKzEsMzAgQEAKK1BzaUphdmFGaWxlOk5vcm1hbE5vUmVzdWx0LmphdmEKKyAgUHNpSW1wb3J0TGlzdAorICAgIDxlbXB0eSBsaXN0PgorICBQc2lDbGFzczpGb28KKyAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lLZXl3b3JkOmNsYXNzKCdjbGFzcycpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSWRlbnRpZmllcjpGb28oJ0ZvbycpCisgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAnKQorICAgIFBzaUNsYXNzSW5pdGlhbGl6ZXIKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAgICcpCisgICAgICAgIFBzaVJldHVyblN0YXRlbWVudAorICAgICAgICAgIFBzaUtleXdvcmQ6cmV0dXJuKCdyZXR1cm4nKQorICAgICAgICAgIFBzaUphdmFUb2tlbjpTRU1JQ09MT04oJzsnKQorICAgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4nKQorICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9zdGF0ZW1lbnRQYXJzaW5nL3JldHVybi9Ob3JtYWxXaXRoUmVzdWx0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL3N0YXRlbWVudFBhcnNpbmcvcmV0dXJuL05vcm1hbFdpdGhSZXN1bHQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNzZhYWY0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9zdGF0ZW1lbnRQYXJzaW5nL3JldHVybi9Ob3JtYWxXaXRoUmVzdWx0LmphdmEKQEAgLTAsMCArMSw1IEBACitjbGFzcyBGb297CisgIHsKKyAgICByZXR1cm4gMTA7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL3N0YXRlbWVudFBhcnNpbmcvcmV0dXJuL05vcm1hbFdpdGhSZXN1bHQudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9zdGF0ZW1lbnRQYXJzaW5nL3JldHVybi9Ob3JtYWxXaXRoUmVzdWx0LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MTMxYTQ0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9zdGF0ZW1lbnRQYXJzaW5nL3JldHVybi9Ob3JtYWxXaXRoUmVzdWx0LnR4dApAQCAtMCwwICsxLDMzIEBACitQc2lKYXZhRmlsZTpOb3JtYWxXaXRoUmVzdWx0LmphdmEKKyAgUHNpSW1wb3J0TGlzdAorICAgIDxlbXB0eSBsaXN0PgorICBQc2lDbGFzczpGb28KKyAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lLZXl3b3JkOmNsYXNzKCdjbGFzcycpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSWRlbnRpZmllcjpGb28oJ0ZvbycpCisgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAnKQorICAgIFBzaUNsYXNzSW5pdGlhbGl6ZXIKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAgICcpCisgICAgICAgIFBzaVJldHVyblN0YXRlbWVudAorICAgICAgICAgIFBzaUtleXdvcmQ6cmV0dXJuKCdyZXR1cm4nKQorICAgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICAgIFBzaUxpdGVyYWxFeHByZXNzaW9uOjEwCisgICAgICAgICAgICBQc2lKYXZhVG9rZW46SU5URUdFUl9MSVRFUkFMKCcxMCcpCisgICAgICAgICAgUHNpSmF2YVRva2VuOlNFTUlDT0xPTignOycpCisgICAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAnKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcbicpCisgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL3N0YXRlbWVudFBhcnNpbmcvcmV0dXJuL1VuY29tcGxldGUxLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL3N0YXRlbWVudFBhcnNpbmcvcmV0dXJuL1VuY29tcGxldGUxLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjE5YmIxOAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvc3RhdGVtZW50UGFyc2luZy9yZXR1cm4vVW5jb21wbGV0ZTEuamF2YQpAQCAtMCwwICsxLDUgQEAKK2NsYXNzIEZvb3sKKyAgeworICAgIHJldHVybgorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9zdGF0ZW1lbnRQYXJzaW5nL3JldHVybi9VbmNvbXBsZXRlMS50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL3N0YXRlbWVudFBhcnNpbmcvcmV0dXJuL1VuY29tcGxldGUxLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MjBiNzc3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9zdGF0ZW1lbnRQYXJzaW5nL3JldHVybi9VbmNvbXBsZXRlMS50eHQKQEAgLTAsMCArMSwzMSBAQAorUHNpSmF2YUZpbGU6VW5jb21wbGV0ZTEuamF2YQorICBQc2lJbXBvcnRMaXN0CisgICAgPGVtcHR5IGxpc3Q+CisgIFBzaUNsYXNzOkZvbworICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUtleXdvcmQ6Y2xhc3MoJ2NsYXNzJykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lJZGVudGlmaWVyOkZvbygnRm9vJykKKyAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4gICcpCisgICAgUHNpQ2xhc3NJbml0aWFsaXplcgorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gICAgJykKKyAgICAgICAgUHNpUmV0dXJuU3RhdGVtZW50CisgICAgICAgICAgUHNpS2V5d29yZDpyZXR1cm4oJ3JldHVybicpCisgICAgICAgICAgUHNpRXJyb3JFbGVtZW50Oic7JyBleHBlY3RlZAorICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAnKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcbicpCisgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL3N0YXRlbWVudFBhcnNpbmcvcmV0dXJuL1VuY29tcGxldGUyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL3N0YXRlbWVudFBhcnNpbmcvcmV0dXJuL1VuY29tcGxldGUyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDQ2ZTVlZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvc3RhdGVtZW50UGFyc2luZy9yZXR1cm4vVW5jb21wbGV0ZTIuamF2YQpAQCAtMCwwICsxLDUgQEAKK2NsYXNzIEZvb3sKKyAgeworICAgIHJldHVybiBhCisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL3N0YXRlbWVudFBhcnNpbmcvcmV0dXJuL1VuY29tcGxldGUyLnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvc3RhdGVtZW50UGFyc2luZy9yZXR1cm4vVW5jb21wbGV0ZTIudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI2YWNiMDkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL3N0YXRlbWVudFBhcnNpbmcvcmV0dXJuL1VuY29tcGxldGUyLnR4dApAQCAtMCwwICsxLDM2IEBACitQc2lKYXZhRmlsZTpVbmNvbXBsZXRlMi5qYXZhCisgIFBzaUltcG9ydExpc3QKKyAgICA8ZW1wdHkgbGlzdD4KKyAgUHNpQ2xhc3M6Rm9vCisgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpS2V5d29yZDpjbGFzcygnY2xhc3MnKQorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUlkZW50aWZpZXI6Rm9vKCdGb28nKQorICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgJykKKyAgICBQc2lDbGFzc0luaXRpYWxpemVyCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgICAnKQorICAgICAgICBQc2lSZXR1cm5TdGF0ZW1lbnQKKyAgICAgICAgICBQc2lLZXl3b3JkOnJldHVybigncmV0dXJuJykKKyAgICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgICAgICBQc2lSZWZlcmVuY2VFeHByZXNzaW9uOmEKKyAgICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgICBQc2lJZGVudGlmaWVyOmEoJ2EnKQorICAgICAgICAgIFBzaUVycm9yRWxlbWVudDonOycgZXhwZWN0ZWQKKyAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4nKQorICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvc3RhdGVtZW50UGFyc2luZy9zd2l0Y2gvTm9ybWFsLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL3N0YXRlbWVudFBhcnNpbmcvc3dpdGNoL05vcm1hbC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZmMDI0YTUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL3N0YXRlbWVudFBhcnNpbmcvc3dpdGNoL05vcm1hbC5qYXZhCkBAIC0wLDAgKzEsNSBAQAorY2xhc3MgQXsKKyAgeworICAgIHN3aXRjaChvKXt9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL3N0YXRlbWVudFBhcnNpbmcvc3dpdGNoL05vcm1hbC50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL3N0YXRlbWVudFBhcnNpbmcvc3dpdGNoL05vcm1hbC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjEzOGRkYwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvc3RhdGVtZW50UGFyc2luZy9zd2l0Y2gvTm9ybWFsLnR4dApAQCAtMCwwICsxLDM4IEBACitQc2lKYXZhRmlsZTpOb3JtYWwuamF2YQorICBQc2lJbXBvcnRMaXN0CisgICAgPGVtcHR5IGxpc3Q+CisgIFBzaUNsYXNzOkEKKyAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lLZXl3b3JkOmNsYXNzKCdjbGFzcycpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSWRlbnRpZmllcjpBKCdBJykKKyAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4gICcpCisgICAgUHNpQ2xhc3NJbml0aWFsaXplcgorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gICAgJykKKyAgICAgICAgUHNpU3dpdGNoU3RhdGVtZW50CisgICAgICAgICAgUHNpS2V5d29yZDpzd2l0Y2goJ3N3aXRjaCcpCisgICAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgICBQc2lSZWZlcmVuY2VFeHByZXNzaW9uOm8KKyAgICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgICBQc2lJZGVudGlmaWVyOm8oJ28nKQorICAgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4nKQorICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvc3RhdGVtZW50UGFyc2luZy9zd2l0Y2gvVW5jb21wbGV0ZTEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvc3RhdGVtZW50UGFyc2luZy9zd2l0Y2gvVW5jb21wbGV0ZTEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40OTkwNzE2YwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvc3RhdGVtZW50UGFyc2luZy9zd2l0Y2gvVW5jb21wbGV0ZTEuamF2YQpAQCAtMCwwICsxLDUgQEAKK2NsYXNzIEF7CisgIHsKKyAgICBzd2l0Y2gKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvc3RhdGVtZW50UGFyc2luZy9zd2l0Y2gvVW5jb21wbGV0ZTEudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9zdGF0ZW1lbnRQYXJzaW5nL3N3aXRjaC9VbmNvbXBsZXRlMS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWZkYWRmMQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvc3RhdGVtZW50UGFyc2luZy9zd2l0Y2gvVW5jb21wbGV0ZTEudHh0CkBAIC0wLDAgKzEsMzEgQEAKK1BzaUphdmFGaWxlOlVuY29tcGxldGUxLmphdmEKKyAgUHNpSW1wb3J0TGlzdAorICAgIDxlbXB0eSBsaXN0PgorICBQc2lDbGFzczpBCisgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpS2V5d29yZDpjbGFzcygnY2xhc3MnKQorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUlkZW50aWZpZXI6QSgnQScpCisgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAnKQorICAgIFBzaUNsYXNzSW5pdGlhbGl6ZXIKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAgICcpCisgICAgICAgIFBzaVN3aXRjaFN0YXRlbWVudAorICAgICAgICAgIFBzaUtleXdvcmQ6c3dpdGNoKCdzd2l0Y2gnKQorICAgICAgICAgIFBzaUVycm9yRWxlbWVudDonKCcgZXhwZWN0ZWQKKyAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4nKQorICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9zdGF0ZW1lbnRQYXJzaW5nL3N3aXRjaC9VbmNvbXBsZXRlMi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9zdGF0ZW1lbnRQYXJzaW5nL3N3aXRjaC9VbmNvbXBsZXRlMi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE4NTgzODUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL3N0YXRlbWVudFBhcnNpbmcvc3dpdGNoL1VuY29tcGxldGUyLmphdmEKQEAgLTAsMCArMSw1IEBACitjbGFzcyBBeworICB7CisgICAgc3dpdGNoKAorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9zdGF0ZW1lbnRQYXJzaW5nL3N3aXRjaC9VbmNvbXBsZXRlMi50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL3N0YXRlbWVudFBhcnNpbmcvc3dpdGNoL1VuY29tcGxldGUyLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ODJhZjgxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9zdGF0ZW1lbnRQYXJzaW5nL3N3aXRjaC9VbmNvbXBsZXRlMi50eHQKQEAgLTAsMCArMSwzMiBAQAorUHNpSmF2YUZpbGU6VW5jb21wbGV0ZTIuamF2YQorICBQc2lJbXBvcnRMaXN0CisgICAgPGVtcHR5IGxpc3Q+CisgIFBzaUNsYXNzOkEKKyAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lLZXl3b3JkOmNsYXNzKCdjbGFzcycpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSWRlbnRpZmllcjpBKCdBJykKKyAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4gICcpCisgICAgUHNpQ2xhc3NJbml0aWFsaXplcgorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gICAgJykKKyAgICAgICAgUHNpU3dpdGNoU3RhdGVtZW50CisgICAgICAgICAgUHNpS2V5d29yZDpzd2l0Y2goJ3N3aXRjaCcpCisgICAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgICBQc2lFcnJvckVsZW1lbnQ6RXhwcmVzc2lvbiBleHBlY3RlZAorICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAnKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcbicpCisgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL3N0YXRlbWVudFBhcnNpbmcvc3dpdGNoL1VuY29tcGxldGUzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL3N0YXRlbWVudFBhcnNpbmcvc3dpdGNoL1VuY29tcGxldGUzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzM4YjMxMgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvc3RhdGVtZW50UGFyc2luZy9zd2l0Y2gvVW5jb21wbGV0ZTMuamF2YQpAQCAtMCwwICsxLDUgQEAKK2NsYXNzIEF7CisgIHsKKyAgICBzd2l0Y2gobworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9zdGF0ZW1lbnRQYXJzaW5nL3N3aXRjaC9VbmNvbXBsZXRlMy50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL3N0YXRlbWVudFBhcnNpbmcvc3dpdGNoL1VuY29tcGxldGUzLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNTMyYWRkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9zdGF0ZW1lbnRQYXJzaW5nL3N3aXRjaC9VbmNvbXBsZXRlMy50eHQKQEAgLTAsMCArMSwzNiBAQAorUHNpSmF2YUZpbGU6VW5jb21wbGV0ZTMuamF2YQorICBQc2lJbXBvcnRMaXN0CisgICAgPGVtcHR5IGxpc3Q+CisgIFBzaUNsYXNzOkEKKyAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lLZXl3b3JkOmNsYXNzKCdjbGFzcycpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSWRlbnRpZmllcjpBKCdBJykKKyAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4gICcpCisgICAgUHNpQ2xhc3NJbml0aWFsaXplcgorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gICAgJykKKyAgICAgICAgUHNpU3dpdGNoU3RhdGVtZW50CisgICAgICAgICAgUHNpS2V5d29yZDpzd2l0Y2goJ3N3aXRjaCcpCisgICAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgICBQc2lSZWZlcmVuY2VFeHByZXNzaW9uOm8KKyAgICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgICBQc2lJZGVudGlmaWVyOm8oJ28nKQorICAgICAgICAgIFBzaUVycm9yRWxlbWVudDonKScgZXhwZWN0ZWQKKyAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4nKQorICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvc3RhdGVtZW50UGFyc2luZy9zd2l0Y2gvVW5jb21wbGV0ZTQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvc3RhdGVtZW50UGFyc2luZy9zd2l0Y2gvVW5jb21wbGV0ZTQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MzA1MmVlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9zdGF0ZW1lbnRQYXJzaW5nL3N3aXRjaC9VbmNvbXBsZXRlNC5qYXZhCkBAIC0wLDAgKzEsNSBAQAorY2xhc3MgQXsKKyAgeworICAgIHN3aXRjaChvKQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9zdGF0ZW1lbnRQYXJzaW5nL3N3aXRjaC9VbmNvbXBsZXRlNC50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL3N0YXRlbWVudFBhcnNpbmcvc3dpdGNoL1VuY29tcGxldGU0LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MDMxYzhmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9zdGF0ZW1lbnRQYXJzaW5nL3N3aXRjaC9VbmNvbXBsZXRlNC50eHQKQEAgLTAsMCArMSwzNyBAQAorUHNpSmF2YUZpbGU6VW5jb21wbGV0ZTQuamF2YQorICBQc2lJbXBvcnRMaXN0CisgICAgPGVtcHR5IGxpc3Q+CisgIFBzaUNsYXNzOkEKKyAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lLZXl3b3JkOmNsYXNzKCdjbGFzcycpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSWRlbnRpZmllcjpBKCdBJykKKyAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4gICcpCisgICAgUHNpQ2xhc3NJbml0aWFsaXplcgorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gICAgJykKKyAgICAgICAgUHNpU3dpdGNoU3RhdGVtZW50CisgICAgICAgICAgUHNpS2V5d29yZDpzd2l0Y2goJ3N3aXRjaCcpCisgICAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgICBQc2lSZWZlcmVuY2VFeHByZXNzaW9uOm8KKyAgICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgICBQc2lJZGVudGlmaWVyOm8oJ28nKQorICAgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICAgICAgUHNpRXJyb3JFbGVtZW50Oid7JyBleHBlY3RlZAorICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAnKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcbicpCisgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9zdGF0ZW1lbnRQYXJzaW5nL3N3aXRjaC9VbmNvbXBsZXRlNS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9zdGF0ZW1lbnRQYXJzaW5nL3N3aXRjaC9VbmNvbXBsZXRlNS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVhZGNjYzQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL3N0YXRlbWVudFBhcnNpbmcvc3dpdGNoL1VuY29tcGxldGU1LmphdmEKQEAgLTAsMCArMSw1IEBACitjbGFzcyBBeworICB7CisgICAgc3dpdGNoKCl7fQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9zdGF0ZW1lbnRQYXJzaW5nL3N3aXRjaC9VbmNvbXBsZXRlNS50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL3N0YXRlbWVudFBhcnNpbmcvc3dpdGNoL1VuY29tcGxldGU1LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jY2EzNDZiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9zdGF0ZW1lbnRQYXJzaW5nL3N3aXRjaC9VbmNvbXBsZXRlNS50eHQKQEAgLTAsMCArMSwzNiBAQAorUHNpSmF2YUZpbGU6VW5jb21wbGV0ZTUuamF2YQorICBQc2lJbXBvcnRMaXN0CisgICAgPGVtcHR5IGxpc3Q+CisgIFBzaUNsYXNzOkEKKyAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lLZXl3b3JkOmNsYXNzKCdjbGFzcycpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSWRlbnRpZmllcjpBKCdBJykKKyAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4gICcpCisgICAgUHNpQ2xhc3NJbml0aWFsaXplcgorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gICAgJykKKyAgICAgICAgUHNpU3dpdGNoU3RhdGVtZW50CisgICAgICAgICAgUHNpS2V5d29yZDpzd2l0Y2goJ3N3aXRjaCcpCisgICAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgICBQc2lFcnJvckVsZW1lbnQ6RXhwcmVzc2lvbiBleHBlY3RlZAorICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAnKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcbicpCisgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL3N0YXRlbWVudFBhcnNpbmcvc3dpdGNoL1VuY29tcGxldGU2LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL3N0YXRlbWVudFBhcnNpbmcvc3dpdGNoL1VuY29tcGxldGU2LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDQwNjcxNDAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL3N0YXRlbWVudFBhcnNpbmcvc3dpdGNoL1VuY29tcGxldGU2LmphdmEKQEAgLTAsMCArMSw2IEBACitjbGFzcyBBeworICB7CisgICAgc3dpdGNoKAorICAgIGZvbygpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9zdGF0ZW1lbnRQYXJzaW5nL3N3aXRjaC9VbmNvbXBsZXRlNi50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL3N0YXRlbWVudFBhcnNpbmcvc3dpdGNoL1VuY29tcGxldGU2LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZjMxZjU1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9zdGF0ZW1lbnRQYXJzaW5nL3N3aXRjaC9VbmNvbXBsZXRlNi50eHQKQEAgLTAsMCArMSw0MyBAQAorUHNpSmF2YUZpbGU6VW5jb21wbGV0ZTYuamF2YQorICBQc2lJbXBvcnRMaXN0CisgICAgPGVtcHR5IGxpc3Q+CisgIFBzaUNsYXNzOkEKKyAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lLZXl3b3JkOmNsYXNzKCdjbGFzcycpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSWRlbnRpZmllcjpBKCdBJykKKyAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4gICcpCisgICAgUHNpQ2xhc3NJbml0aWFsaXplcgorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gICAgJykKKyAgICAgICAgUHNpU3dpdGNoU3RhdGVtZW50CisgICAgICAgICAgUHNpS2V5d29yZDpzd2l0Y2goJ3N3aXRjaCcpCisgICAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgICBQc2lFcnJvckVsZW1lbnQ6RXhwcmVzc2lvbiBleHBlY3RlZAorICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAgICcpCisgICAgICAgIFBzaUV4cHJlc3Npb25TdGF0ZW1lbnQKKyAgICAgICAgICBQc2lNZXRob2RDYWxsRXhwcmVzc2lvbjpmb28oKQorICAgICAgICAgICAgUHNpUmVmZXJlbmNlRXhwcmVzc2lvbjpmb28KKyAgICAgICAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgICAgICAgIFBzaUV4cHJlc3Npb25MaXN0CisgICAgICAgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICAgICAgUHNpSmF2YVRva2VuOlNFTUlDT0xPTignOycpCisgICAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAnKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcbicpCisgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9zdGF0ZW1lbnRQYXJzaW5nL3N5bmNocm9uaXplZC9Ob3JtYWwuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvc3RhdGVtZW50UGFyc2luZy9zeW5jaHJvbml6ZWQvTm9ybWFsLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmExODk3MgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvc3RhdGVtZW50UGFyc2luZy9zeW5jaHJvbml6ZWQvTm9ybWFsLmphdmEKQEAgLTAsMCArMSw1IEBACitjbGFzcyBBeworICB7CisgICAgc3luY2hyb25pemVkKG8pe30KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvc3RhdGVtZW50UGFyc2luZy9zeW5jaHJvbml6ZWQvTm9ybWFsLnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvc3RhdGVtZW50UGFyc2luZy9zeW5jaHJvbml6ZWQvTm9ybWFsLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42Y2I5MDk4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9zdGF0ZW1lbnRQYXJzaW5nL3N5bmNocm9uaXplZC9Ob3JtYWwudHh0CkBAIC0wLDAgKzEsMzggQEAKK1BzaUphdmFGaWxlOk5vcm1hbC5qYXZhCisgIFBzaUltcG9ydExpc3QKKyAgICA8ZW1wdHkgbGlzdD4KKyAgUHNpQ2xhc3M6QQorICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUtleXdvcmQ6Y2xhc3MoJ2NsYXNzJykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lJZGVudGlmaWVyOkEoJ0EnKQorICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgJykKKyAgICBQc2lDbGFzc0luaXRpYWxpemVyCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgICAnKQorICAgICAgICBQc2lTeW5jaHJvbml6ZWRTdGF0ZW1lbnQKKyAgICAgICAgICBQc2lLZXl3b3JkOnN5bmNocm9uaXplZCgnc3luY2hyb25pemVkJykKKyAgICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICAgIFBzaVJlZmVyZW5jZUV4cHJlc3Npb246bworICAgICAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICAgIFBzaUlkZW50aWZpZXI6bygnbycpCisgICAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAnKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcbicpCisgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9zdGF0ZW1lbnRQYXJzaW5nL3N5bmNocm9uaXplZC9VbmNvbXBsZXRlMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9zdGF0ZW1lbnRQYXJzaW5nL3N5bmNocm9uaXplZC9VbmNvbXBsZXRlMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAxODMwYmMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL3N0YXRlbWVudFBhcnNpbmcvc3luY2hyb25pemVkL1VuY29tcGxldGUxLmphdmEKQEAgLTAsMCArMSw1IEBACitjbGFzcyBBeworICB7CisgICAgc3luY2hyb25pemVkCisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL3N0YXRlbWVudFBhcnNpbmcvc3luY2hyb25pemVkL1VuY29tcGxldGUxLnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvc3RhdGVtZW50UGFyc2luZy9zeW5jaHJvbml6ZWQvVW5jb21wbGV0ZTEudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmExY2UyMDQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL3N0YXRlbWVudFBhcnNpbmcvc3luY2hyb25pemVkL1VuY29tcGxldGUxLnR4dApAQCAtMCwwICsxLDMxIEBACitQc2lKYXZhRmlsZTpVbmNvbXBsZXRlMS5qYXZhCisgIFBzaUltcG9ydExpc3QKKyAgICA8ZW1wdHkgbGlzdD4KKyAgUHNpQ2xhc3M6QQorICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUtleXdvcmQ6Y2xhc3MoJ2NsYXNzJykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lJZGVudGlmaWVyOkEoJ0EnKQorICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgJykKKyAgICBQc2lDbGFzc0luaXRpYWxpemVyCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgICAnKQorICAgICAgICBQc2lTeW5jaHJvbml6ZWRTdGF0ZW1lbnQKKyAgICAgICAgICBQc2lLZXl3b3JkOnN5bmNocm9uaXplZCgnc3luY2hyb25pemVkJykKKyAgICAgICAgICBQc2lFcnJvckVsZW1lbnQ6JygnIGV4cGVjdGVkCisgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gICcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuJykKKyAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvc3RhdGVtZW50UGFyc2luZy9zeW5jaHJvbml6ZWQvVW5jb21wbGV0ZTIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvc3RhdGVtZW50UGFyc2luZy9zeW5jaHJvbml6ZWQvVW5jb21wbGV0ZTIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMTBlZmM4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9zdGF0ZW1lbnRQYXJzaW5nL3N5bmNocm9uaXplZC9VbmNvbXBsZXRlMi5qYXZhCkBAIC0wLDAgKzEsNSBAQAorY2xhc3MgQXsKKyAgeworICAgIHN5bmNocm9uaXplZCgKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvc3RhdGVtZW50UGFyc2luZy9zeW5jaHJvbml6ZWQvVW5jb21wbGV0ZTIudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9zdGF0ZW1lbnRQYXJzaW5nL3N5bmNocm9uaXplZC9VbmNvbXBsZXRlMi50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDQ0NGU5MQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvc3RhdGVtZW50UGFyc2luZy9zeW5jaHJvbml6ZWQvVW5jb21wbGV0ZTIudHh0CkBAIC0wLDAgKzEsMzIgQEAKK1BzaUphdmFGaWxlOlVuY29tcGxldGUyLmphdmEKKyAgUHNpSW1wb3J0TGlzdAorICAgIDxlbXB0eSBsaXN0PgorICBQc2lDbGFzczpBCisgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpS2V5d29yZDpjbGFzcygnY2xhc3MnKQorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUlkZW50aWZpZXI6QSgnQScpCisgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAnKQorICAgIFBzaUNsYXNzSW5pdGlhbGl6ZXIKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAgICcpCisgICAgICAgIFBzaVN5bmNocm9uaXplZFN0YXRlbWVudAorICAgICAgICAgIFBzaUtleXdvcmQ6c3luY2hyb25pemVkKCdzeW5jaHJvbml6ZWQnKQorICAgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgICAgUHNpRXJyb3JFbGVtZW50OkV4cHJlc3Npb24gZXhwZWN0ZWQKKyAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4nKQorICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9zdGF0ZW1lbnRQYXJzaW5nL3N5bmNocm9uaXplZC9VbmNvbXBsZXRlMy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9zdGF0ZW1lbnRQYXJzaW5nL3N5bmNocm9uaXplZC9VbmNvbXBsZXRlMy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJjNWNjOWMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL3N0YXRlbWVudFBhcnNpbmcvc3luY2hyb25pemVkL1VuY29tcGxldGUzLmphdmEKQEAgLTAsMCArMSw1IEBACitjbGFzcyBBeworICB7CisgICAgc3luY2hyb25pemVkKG8KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvc3RhdGVtZW50UGFyc2luZy9zeW5jaHJvbml6ZWQvVW5jb21wbGV0ZTMudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9zdGF0ZW1lbnRQYXJzaW5nL3N5bmNocm9uaXplZC9VbmNvbXBsZXRlMy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODNlMGNjZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvc3RhdGVtZW50UGFyc2luZy9zeW5jaHJvbml6ZWQvVW5jb21wbGV0ZTMudHh0CkBAIC0wLDAgKzEsMzYgQEAKK1BzaUphdmFGaWxlOlVuY29tcGxldGUzLmphdmEKKyAgUHNpSW1wb3J0TGlzdAorICAgIDxlbXB0eSBsaXN0PgorICBQc2lDbGFzczpBCisgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpS2V5d29yZDpjbGFzcygnY2xhc3MnKQorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUlkZW50aWZpZXI6QSgnQScpCisgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAnKQorICAgIFBzaUNsYXNzSW5pdGlhbGl6ZXIKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAgICcpCisgICAgICAgIFBzaVN5bmNocm9uaXplZFN0YXRlbWVudAorICAgICAgICAgIFBzaUtleXdvcmQ6c3luY2hyb25pemVkKCdzeW5jaHJvbml6ZWQnKQorICAgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgICAgUHNpUmVmZXJlbmNlRXhwcmVzc2lvbjpvCisgICAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgICAgUHNpSWRlbnRpZmllcjpvKCdvJykKKyAgICAgICAgICBQc2lFcnJvckVsZW1lbnQ6JyknIGV4cGVjdGVkCisgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gICcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuJykKKyAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL3N0YXRlbWVudFBhcnNpbmcvc3luY2hyb25pemVkL1VuY29tcGxldGU0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL3N0YXRlbWVudFBhcnNpbmcvc3luY2hyb25pemVkL1VuY29tcGxldGU0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjZmMjE1MQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvc3RhdGVtZW50UGFyc2luZy9zeW5jaHJvbml6ZWQvVW5jb21wbGV0ZTQuamF2YQpAQCAtMCwwICsxLDUgQEAKK2NsYXNzIEF7CisgIHsKKyAgICBzeW5jaHJvbml6ZWQobykKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvc3RhdGVtZW50UGFyc2luZy9zeW5jaHJvbml6ZWQvVW5jb21wbGV0ZTQudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9zdGF0ZW1lbnRQYXJzaW5nL3N5bmNocm9uaXplZC9VbmNvbXBsZXRlNC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzllZGNhZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvc3RhdGVtZW50UGFyc2luZy9zeW5jaHJvbml6ZWQvVW5jb21wbGV0ZTQudHh0CkBAIC0wLDAgKzEsMzcgQEAKK1BzaUphdmFGaWxlOlVuY29tcGxldGU0LmphdmEKKyAgUHNpSW1wb3J0TGlzdAorICAgIDxlbXB0eSBsaXN0PgorICBQc2lDbGFzczpBCisgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpS2V5d29yZDpjbGFzcygnY2xhc3MnKQorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUlkZW50aWZpZXI6QSgnQScpCisgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAnKQorICAgIFBzaUNsYXNzSW5pdGlhbGl6ZXIKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAgICcpCisgICAgICAgIFBzaVN5bmNocm9uaXplZFN0YXRlbWVudAorICAgICAgICAgIFBzaUtleXdvcmQ6c3luY2hyb25pemVkKCdzeW5jaHJvbml6ZWQnKQorICAgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgICAgUHNpUmVmZXJlbmNlRXhwcmVzc2lvbjpvCisgICAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgICAgUHNpSWRlbnRpZmllcjpvKCdvJykKKyAgICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgICAgIFBzaUVycm9yRWxlbWVudDoneycgZXhwZWN0ZWQKKyAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4nKQorICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvc3RhdGVtZW50UGFyc2luZy9zeW5jaHJvbml6ZWQvVW5jb21wbGV0ZTUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvc3RhdGVtZW50UGFyc2luZy9zeW5jaHJvbml6ZWQvVW5jb21wbGV0ZTUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNTQ0MWVmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9zdGF0ZW1lbnRQYXJzaW5nL3N5bmNocm9uaXplZC9VbmNvbXBsZXRlNS5qYXZhCkBAIC0wLDAgKzEsNSBAQAorY2xhc3MgQXsKKyAgeworICAgIHN5bmNocm9uaXplZCgpe30KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvc3RhdGVtZW50UGFyc2luZy9zeW5jaHJvbml6ZWQvVW5jb21wbGV0ZTUudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9zdGF0ZW1lbnRQYXJzaW5nL3N5bmNocm9uaXplZC9VbmNvbXBsZXRlNS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWQ4ODk5YwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvc3RhdGVtZW50UGFyc2luZy9zeW5jaHJvbml6ZWQvVW5jb21wbGV0ZTUudHh0CkBAIC0wLDAgKzEsMzYgQEAKK1BzaUphdmFGaWxlOlVuY29tcGxldGU1LmphdmEKKyAgUHNpSW1wb3J0TGlzdAorICAgIDxlbXB0eSBsaXN0PgorICBQc2lDbGFzczpBCisgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpS2V5d29yZDpjbGFzcygnY2xhc3MnKQorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUlkZW50aWZpZXI6QSgnQScpCisgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAnKQorICAgIFBzaUNsYXNzSW5pdGlhbGl6ZXIKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAgICcpCisgICAgICAgIFBzaVN5bmNocm9uaXplZFN0YXRlbWVudAorICAgICAgICAgIFBzaUtleXdvcmQ6c3luY2hyb25pemVkKCdzeW5jaHJvbml6ZWQnKQorICAgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgICAgUHNpRXJyb3JFbGVtZW50OkV4cHJlc3Npb24gZXhwZWN0ZWQKKyAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4nKQorICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9zdGF0ZW1lbnRQYXJzaW5nL3N5bmNocm9uaXplZC9VbmNvbXBsZXRlNi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9zdGF0ZW1lbnRQYXJzaW5nL3N5bmNocm9uaXplZC9VbmNvbXBsZXRlNi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEyNGY3NTkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL3N0YXRlbWVudFBhcnNpbmcvc3luY2hyb25pemVkL1VuY29tcGxldGU2LmphdmEKQEAgLTAsMCArMSw2IEBACitjbGFzcyBBeworICB7CisgICAgc3luY2hyb25pemVkKAorICAgIGZvbygpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9zdGF0ZW1lbnRQYXJzaW5nL3N5bmNocm9uaXplZC9VbmNvbXBsZXRlNi50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL3N0YXRlbWVudFBhcnNpbmcvc3luY2hyb25pemVkL1VuY29tcGxldGU2LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZGQ2MzFlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9zdGF0ZW1lbnRQYXJzaW5nL3N5bmNocm9uaXplZC9VbmNvbXBsZXRlNi50eHQKQEAgLTAsMCArMSw0MyBAQAorUHNpSmF2YUZpbGU6VW5jb21wbGV0ZTYuamF2YQorICBQc2lJbXBvcnRMaXN0CisgICAgPGVtcHR5IGxpc3Q+CisgIFBzaUNsYXNzOkEKKyAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lLZXl3b3JkOmNsYXNzKCdjbGFzcycpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSWRlbnRpZmllcjpBKCdBJykKKyAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4gICcpCisgICAgUHNpQ2xhc3NJbml0aWFsaXplcgorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gICAgJykKKyAgICAgICAgUHNpU3luY2hyb25pemVkU3RhdGVtZW50CisgICAgICAgICAgUHNpS2V5d29yZDpzeW5jaHJvbml6ZWQoJ3N5bmNocm9uaXplZCcpCisgICAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgICBQc2lFcnJvckVsZW1lbnQ6RXhwcmVzc2lvbiBleHBlY3RlZAorICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAgICcpCisgICAgICAgIFBzaUV4cHJlc3Npb25TdGF0ZW1lbnQKKyAgICAgICAgICBQc2lNZXRob2RDYWxsRXhwcmVzc2lvbjpmb28oKQorICAgICAgICAgICAgUHNpUmVmZXJlbmNlRXhwcmVzc2lvbjpmb28KKyAgICAgICAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgICAgICAgIFBzaUV4cHJlc3Npb25MaXN0CisgICAgICAgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICAgICAgUHNpSmF2YVRva2VuOlNFTUlDT0xPTignOycpCisgICAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAnKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcbicpCisgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9zdGF0ZW1lbnRQYXJzaW5nL3Rocm93L05vcm1hbC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9zdGF0ZW1lbnRQYXJzaW5nL3Rocm93L05vcm1hbC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRhMzY4MzcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL3N0YXRlbWVudFBhcnNpbmcvdGhyb3cvTm9ybWFsLmphdmEKQEAgLTAsMCArMSw1IEBACitjbGFzcyBBeworICB7CisgICAgdGhyb3cgZTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvc3RhdGVtZW50UGFyc2luZy90aHJvdy9Ob3JtYWwudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9zdGF0ZW1lbnRQYXJzaW5nL3Rocm93L05vcm1hbC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2Y4ZjM4YwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvc3RhdGVtZW50UGFyc2luZy90aHJvdy9Ob3JtYWwudHh0CkBAIC0wLDAgKzEsMzUgQEAKK1BzaUphdmFGaWxlOk5vcm1hbC5qYXZhCisgIFBzaUltcG9ydExpc3QKKyAgICA8ZW1wdHkgbGlzdD4KKyAgUHNpQ2xhc3M6QQorICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUtleXdvcmQ6Y2xhc3MoJ2NsYXNzJykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lJZGVudGlmaWVyOkEoJ0EnKQorICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgJykKKyAgICBQc2lDbGFzc0luaXRpYWxpemVyCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgICAnKQorICAgICAgICBQc2lUaHJvd1N0YXRlbWVudAorICAgICAgICAgIFBzaUtleXdvcmQ6dGhyb3coJ3Rocm93JykKKyAgICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgICAgICBQc2lSZWZlcmVuY2VFeHByZXNzaW9uOmUKKyAgICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgICBQc2lJZGVudGlmaWVyOmUoJ2UnKQorICAgICAgICAgIFBzaUphdmFUb2tlbjpTRU1JQ09MT04oJzsnKQorICAgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4nKQorICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvc3RhdGVtZW50UGFyc2luZy90aHJvdy9VbmNvbXBsZXRlMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9zdGF0ZW1lbnRQYXJzaW5nL3Rocm93L1VuY29tcGxldGUxLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDZiNTFlYwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvc3RhdGVtZW50UGFyc2luZy90aHJvdy9VbmNvbXBsZXRlMS5qYXZhCkBAIC0wLDAgKzEsNSBAQAorY2xhc3MgQXsKKyAgeworICAgIHRocm93CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL3N0YXRlbWVudFBhcnNpbmcvdGhyb3cvVW5jb21wbGV0ZTEudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9zdGF0ZW1lbnRQYXJzaW5nL3Rocm93L1VuY29tcGxldGUxLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jODViNGVjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9zdGF0ZW1lbnRQYXJzaW5nL3Rocm93L1VuY29tcGxldGUxLnR4dApAQCAtMCwwICsxLDMxIEBACitQc2lKYXZhRmlsZTpVbmNvbXBsZXRlMS5qYXZhCisgIFBzaUltcG9ydExpc3QKKyAgICA8ZW1wdHkgbGlzdD4KKyAgUHNpQ2xhc3M6QQorICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUtleXdvcmQ6Y2xhc3MoJ2NsYXNzJykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lJZGVudGlmaWVyOkEoJ0EnKQorICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgJykKKyAgICBQc2lDbGFzc0luaXRpYWxpemVyCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgICAnKQorICAgICAgICBQc2lUaHJvd1N0YXRlbWVudAorICAgICAgICAgIFBzaUtleXdvcmQ6dGhyb3coJ3Rocm93JykKKyAgICAgICAgICBQc2lFcnJvckVsZW1lbnQ6RXhwcmVzc2lvbiBleHBlY3RlZAorICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAnKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcbicpCisgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL3N0YXRlbWVudFBhcnNpbmcvdGhyb3cvVW5jb21wbGV0ZTIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvc3RhdGVtZW50UGFyc2luZy90aHJvdy9VbmNvbXBsZXRlMi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk3OTYxOWUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL3N0YXRlbWVudFBhcnNpbmcvdGhyb3cvVW5jb21wbGV0ZTIuamF2YQpAQCAtMCwwICsxLDUgQEAKK2NsYXNzIEF7CisgIHsKKyAgICB0aHJvdyBlCisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL3N0YXRlbWVudFBhcnNpbmcvdGhyb3cvVW5jb21wbGV0ZTIudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9zdGF0ZW1lbnRQYXJzaW5nL3Rocm93L1VuY29tcGxldGUyLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wOWUzY2E4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9zdGF0ZW1lbnRQYXJzaW5nL3Rocm93L1VuY29tcGxldGUyLnR4dApAQCAtMCwwICsxLDM2IEBACitQc2lKYXZhRmlsZTpVbmNvbXBsZXRlMi5qYXZhCisgIFBzaUltcG9ydExpc3QKKyAgICA8ZW1wdHkgbGlzdD4KKyAgUHNpQ2xhc3M6QQorICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUtleXdvcmQ6Y2xhc3MoJ2NsYXNzJykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lJZGVudGlmaWVyOkEoJ0EnKQorICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgJykKKyAgICBQc2lDbGFzc0luaXRpYWxpemVyCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgICAnKQorICAgICAgICBQc2lUaHJvd1N0YXRlbWVudAorICAgICAgICAgIFBzaUtleXdvcmQ6dGhyb3coJ3Rocm93JykKKyAgICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgICAgICBQc2lSZWZlcmVuY2VFeHByZXNzaW9uOmUKKyAgICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgICBQc2lJZGVudGlmaWVyOmUoJ2UnKQorICAgICAgICAgIFBzaUVycm9yRWxlbWVudDonOycgZXhwZWN0ZWQKKyAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4nKQorICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvc3RhdGVtZW50UGFyc2luZy90cnkvSW5jb21wbGV0ZTEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvc3RhdGVtZW50UGFyc2luZy90cnkvSW5jb21wbGV0ZTEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZDgwNjRiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9zdGF0ZW1lbnRQYXJzaW5nL3RyeS9JbmNvbXBsZXRlMS5qYXZhCkBAIC0wLDAgKzEsNSBAQAorY2xhc3MgQXsKKyAgeworICAgIHRyeQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9zdGF0ZW1lbnRQYXJzaW5nL3RyeS9JbmNvbXBsZXRlMS50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL3N0YXRlbWVudFBhcnNpbmcvdHJ5L0luY29tcGxldGUxLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YmQxNGNmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9zdGF0ZW1lbnRQYXJzaW5nL3RyeS9JbmNvbXBsZXRlMS50eHQKQEAgLTAsMCArMSwzMSBAQAorUHNpSmF2YUZpbGU6SW5jb21wbGV0ZTEuamF2YQorICBQc2lJbXBvcnRMaXN0CisgICAgPGVtcHR5IGxpc3Q+CisgIFBzaUNsYXNzOkEKKyAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lLZXl3b3JkOmNsYXNzKCdjbGFzcycpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSWRlbnRpZmllcjpBKCdBJykKKyAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4gICcpCisgICAgUHNpQ2xhc3NJbml0aWFsaXplcgorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gICAgJykKKyAgICAgICAgUHNpVHJ5U3RhdGVtZW50CisgICAgICAgICAgUHNpS2V5d29yZDp0cnkoJ3RyeScpCisgICAgICAgICAgUHNpRXJyb3JFbGVtZW50Oid7JyBleHBlY3RlZAorICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAnKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcbicpCisgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL3N0YXRlbWVudFBhcnNpbmcvdHJ5L0luY29tcGxldGUyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL3N0YXRlbWVudFBhcnNpbmcvdHJ5L0luY29tcGxldGUyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjYyYmJkYwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvc3RhdGVtZW50UGFyc2luZy90cnkvSW5jb21wbGV0ZTIuamF2YQpAQCAtMCwwICsxLDUgQEAKK2NsYXNzIEF7CisgIHsKKyAgICB0cnl7fQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9zdGF0ZW1lbnRQYXJzaW5nL3RyeS9JbmNvbXBsZXRlMi50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL3N0YXRlbWVudFBhcnNpbmcvdHJ5L0luY29tcGxldGUyLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NWM0YzU1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9zdGF0ZW1lbnRQYXJzaW5nL3RyeS9JbmNvbXBsZXRlMi50eHQKQEAgLTAsMCArMSwzNCBAQAorUHNpSmF2YUZpbGU6SW5jb21wbGV0ZTIuamF2YQorICBQc2lJbXBvcnRMaXN0CisgICAgPGVtcHR5IGxpc3Q+CisgIFBzaUNsYXNzOkEKKyAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lLZXl3b3JkOmNsYXNzKCdjbGFzcycpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSWRlbnRpZmllcjpBKCdBJykKKyAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4gICcpCisgICAgUHNpQ2xhc3NJbml0aWFsaXplcgorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gICAgJykKKyAgICAgICAgUHNpVHJ5U3RhdGVtZW50CisgICAgICAgICAgUHNpS2V5d29yZDp0cnkoJ3RyeScpCisgICAgICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgICAgICAgIFBzaUVycm9yRWxlbWVudDonY2F0Y2gnIG9yICdmaW5hbGx5JyBleHBlY3RlZAorICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAnKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcbicpCisgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL3N0YXRlbWVudFBhcnNpbmcvdHJ5L0luY29tcGxldGUzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL3N0YXRlbWVudFBhcnNpbmcvdHJ5L0luY29tcGxldGUzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGU3ZjM0MwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvc3RhdGVtZW50UGFyc2luZy90cnkvSW5jb21wbGV0ZTMuamF2YQpAQCAtMCwwICsxLDUgQEAKK2NsYXNzIEF7CisgIHsKKyAgICB0cnl7fWNhdGNoCisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL3N0YXRlbWVudFBhcnNpbmcvdHJ5L0luY29tcGxldGUzLnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvc3RhdGVtZW50UGFyc2luZy90cnkvSW5jb21wbGV0ZTMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJkNThkZDYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL3N0YXRlbWVudFBhcnNpbmcvdHJ5L0luY29tcGxldGUzLnR4dApAQCAtMCwwICsxLDM2IEBACitQc2lKYXZhRmlsZTpJbmNvbXBsZXRlMy5qYXZhCisgIFBzaUltcG9ydExpc3QKKyAgICA8ZW1wdHkgbGlzdD4KKyAgUHNpQ2xhc3M6QQorICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUtleXdvcmQ6Y2xhc3MoJ2NsYXNzJykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lJZGVudGlmaWVyOkEoJ0EnKQorICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgJykKKyAgICBQc2lDbGFzc0luaXRpYWxpemVyCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgICAnKQorICAgICAgICBQc2lUcnlTdGF0ZW1lbnQKKyAgICAgICAgICBQc2lLZXl3b3JkOnRyeSgndHJ5JykKKyAgICAgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgICAgICAgUHNpQ2F0Y2hTZWN0aW9uCisgICAgICAgICAgICBQc2lLZXl3b3JkOmNhdGNoKCdjYXRjaCcpCisgICAgICAgICAgICBQc2lFcnJvckVsZW1lbnQ6JygnIGV4cGVjdGVkCisgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4nKQorICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvc3RhdGVtZW50UGFyc2luZy90cnkvSW5jb21wbGV0ZTQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvc3RhdGVtZW50UGFyc2luZy90cnkvSW5jb21wbGV0ZTQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZDgzMDkxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9zdGF0ZW1lbnRQYXJzaW5nL3RyeS9JbmNvbXBsZXRlNC5qYXZhCkBAIC0wLDAgKzEsNSBAQAorY2xhc3MgQXsKKyAgeworICAgIHRyeXt9Y2F0Y2goCisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL3N0YXRlbWVudFBhcnNpbmcvdHJ5L0luY29tcGxldGU0LnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvc3RhdGVtZW50UGFyc2luZy90cnkvSW5jb21wbGV0ZTQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUyMTNhMjUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL3N0YXRlbWVudFBhcnNpbmcvdHJ5L0luY29tcGxldGU0LnR4dApAQCAtMCwwICsxLDM5IEBACitQc2lKYXZhRmlsZTpJbmNvbXBsZXRlNC5qYXZhCisgIFBzaUltcG9ydExpc3QKKyAgICA8ZW1wdHkgbGlzdD4KKyAgUHNpQ2xhc3M6QQorICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUtleXdvcmQ6Y2xhc3MoJ2NsYXNzJykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lJZGVudGlmaWVyOkEoJ0EnKQorICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgJykKKyAgICBQc2lDbGFzc0luaXRpYWxpemVyCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgICAnKQorICAgICAgICBQc2lUcnlTdGF0ZW1lbnQKKyAgICAgICAgICBQc2lLZXl3b3JkOnRyeSgndHJ5JykKKyAgICAgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgICAgICAgUHNpQ2F0Y2hTZWN0aW9uCisgICAgICAgICAgICBQc2lLZXl3b3JkOmNhdGNoKCdjYXRjaCcpCisgICAgICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICAgICAgUHNpRXJyb3JFbGVtZW50OlBhcmFtZXRlciBleHBlY3RlZAorICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICAgIFBzaUVycm9yRWxlbWVudDonKScgZXhwZWN0ZWQKKyAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAnKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcbicpCisgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9zdGF0ZW1lbnRQYXJzaW5nL3RyeS9JbmNvbXBsZXRlNS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9zdGF0ZW1lbnRQYXJzaW5nL3RyeS9JbmNvbXBsZXRlNS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYwMThiMWIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL3N0YXRlbWVudFBhcnNpbmcvdHJ5L0luY29tcGxldGU1LmphdmEKQEAgLTAsMCArMSw1IEBACitjbGFzcyBBeworICB7CisgICAgdHJ5e31jYXRjaChFCisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL3N0YXRlbWVudFBhcnNpbmcvdHJ5L0luY29tcGxldGU1LnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvc3RhdGVtZW50UGFyc2luZy90cnkvSW5jb21wbGV0ZTUudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZiMTNjNzMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL3N0YXRlbWVudFBhcnNpbmcvdHJ5L0luY29tcGxldGU1LnR4dApAQCAtMCwwICsxLDQ2IEBACitQc2lKYXZhRmlsZTpJbmNvbXBsZXRlNS5qYXZhCisgIFBzaUltcG9ydExpc3QKKyAgICA8ZW1wdHkgbGlzdD4KKyAgUHNpQ2xhc3M6QQorICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUtleXdvcmQ6Y2xhc3MoJ2NsYXNzJykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lJZGVudGlmaWVyOkEoJ0EnKQorICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgJykKKyAgICBQc2lDbGFzc0luaXRpYWxpemVyCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgICAnKQorICAgICAgICBQc2lUcnlTdGF0ZW1lbnQKKyAgICAgICAgICBQc2lLZXl3b3JkOnRyeSgndHJ5JykKKyAgICAgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgICAgICAgUHNpQ2F0Y2hTZWN0aW9uCisgICAgICAgICAgICBQc2lLZXl3b3JkOmNhdGNoKCdjYXRjaCcpCisgICAgICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICAgIFBzaVR5cGVFbGVtZW50OkUKKyAgICAgICAgICAgICAgUHNpSmF2YUNvZGVSZWZlcmVuY2VFbGVtZW50OkUKKyAgICAgICAgICAgICAgICBQc2lJZGVudGlmaWVyOkUoJ0UnKQorICAgICAgICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgICAgUHNpRXJyb3JFbGVtZW50OklkZW50aWZpZXIgZXhwZWN0ZWQKKyAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgICBQc2lFcnJvckVsZW1lbnQ6JyknIGV4cGVjdGVkCisgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4nKQorICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvc3RhdGVtZW50UGFyc2luZy90cnkvSW5jb21wbGV0ZTYuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvc3RhdGVtZW50UGFyc2luZy90cnkvSW5jb21wbGV0ZTYuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNTJlMTAwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9zdGF0ZW1lbnRQYXJzaW5nL3RyeS9JbmNvbXBsZXRlNi5qYXZhCkBAIC0wLDAgKzEsNSBAQAorY2xhc3MgQXsKKyAgeworICAgIHRyeXt9Y2F0Y2goRSBlCisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL3N0YXRlbWVudFBhcnNpbmcvdHJ5L0luY29tcGxldGU2LnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvc3RhdGVtZW50UGFyc2luZy90cnkvSW5jb21wbGV0ZTYudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJmZWNiMDAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL3N0YXRlbWVudFBhcnNpbmcvdHJ5L0luY29tcGxldGU2LnR4dApAQCAtMCwwICsxLDQ3IEBACitQc2lKYXZhRmlsZTpJbmNvbXBsZXRlNi5qYXZhCisgIFBzaUltcG9ydExpc3QKKyAgICA8ZW1wdHkgbGlzdD4KKyAgUHNpQ2xhc3M6QQorICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUtleXdvcmQ6Y2xhc3MoJ2NsYXNzJykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lJZGVudGlmaWVyOkEoJ0EnKQorICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgJykKKyAgICBQc2lDbGFzc0luaXRpYWxpemVyCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgICAnKQorICAgICAgICBQc2lUcnlTdGF0ZW1lbnQKKyAgICAgICAgICBQc2lLZXl3b3JkOnRyeSgndHJ5JykKKyAgICAgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgICAgICAgUHNpQ2F0Y2hTZWN0aW9uCisgICAgICAgICAgICBQc2lLZXl3b3JkOmNhdGNoKCdjYXRjaCcpCisgICAgICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICAgICAgUHNpUGFyYW1ldGVyOmUKKyAgICAgICAgICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgICAgICBQc2lUeXBlRWxlbWVudDpFCisgICAgICAgICAgICAgICAgUHNpSmF2YUNvZGVSZWZlcmVuY2VFbGVtZW50OkUKKyAgICAgICAgICAgICAgICAgIFBzaUlkZW50aWZpZXI6RSgnRScpCisgICAgICAgICAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgICAgICAgICAgUHNpSWRlbnRpZmllcjplKCdlJykKKyAgICAgICAgICAgIFBzaUVycm9yRWxlbWVudDonKScgZXhwZWN0ZWQKKyAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAnKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcbicpCisgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9zdGF0ZW1lbnRQYXJzaW5nL3RyeS9JbmNvbXBsZXRlNy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9zdGF0ZW1lbnRQYXJzaW5nL3RyeS9JbmNvbXBsZXRlNy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg1M2UzN2MKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL3N0YXRlbWVudFBhcnNpbmcvdHJ5L0luY29tcGxldGU3LmphdmEKQEAgLTAsMCArMSw1IEBACitjbGFzcyBBeworICB7CisgICAgdHJ5e31jYXRjaChFIGUpCisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL3N0YXRlbWVudFBhcnNpbmcvdHJ5L0luY29tcGxldGU3LnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvc3RhdGVtZW50UGFyc2luZy90cnkvSW5jb21wbGV0ZTcudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBhNjY4NzIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL3N0YXRlbWVudFBhcnNpbmcvdHJ5L0luY29tcGxldGU3LnR4dApAQCAtMCwwICsxLDQ4IEBACitQc2lKYXZhRmlsZTpJbmNvbXBsZXRlNy5qYXZhCisgIFBzaUltcG9ydExpc3QKKyAgICA8ZW1wdHkgbGlzdD4KKyAgUHNpQ2xhc3M6QQorICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUtleXdvcmQ6Y2xhc3MoJ2NsYXNzJykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lJZGVudGlmaWVyOkEoJ0EnKQorICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgJykKKyAgICBQc2lDbGFzc0luaXRpYWxpemVyCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgICAnKQorICAgICAgICBQc2lUcnlTdGF0ZW1lbnQKKyAgICAgICAgICBQc2lLZXl3b3JkOnRyeSgndHJ5JykKKyAgICAgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgICAgICAgUHNpQ2F0Y2hTZWN0aW9uCisgICAgICAgICAgICBQc2lLZXl3b3JkOmNhdGNoKCdjYXRjaCcpCisgICAgICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICAgICAgUHNpUGFyYW1ldGVyOmUKKyAgICAgICAgICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgICAgICBQc2lUeXBlRWxlbWVudDpFCisgICAgICAgICAgICAgICAgUHNpSmF2YUNvZGVSZWZlcmVuY2VFbGVtZW50OkUKKyAgICAgICAgICAgICAgICAgIFBzaUlkZW50aWZpZXI6RSgnRScpCisgICAgICAgICAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgICAgICAgICAgUHNpSWRlbnRpZmllcjplKCdlJykKKyAgICAgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICAgICAgICBQc2lFcnJvckVsZW1lbnQ6J3snIGV4cGVjdGVkCisgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4nKQorICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvc3RhdGVtZW50UGFyc2luZy90cnkvSW5jb21wbGV0ZTguamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvc3RhdGVtZW50UGFyc2luZy90cnkvSW5jb21wbGV0ZTguamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNDQxZTczCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9zdGF0ZW1lbnRQYXJzaW5nL3RyeS9JbmNvbXBsZXRlOC5qYXZhCkBAIC0wLDAgKzEsNSBAQAorY2xhc3MgQXsKKyAgeworICAgIHRyeXt9ZmluYWxseQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9zdGF0ZW1lbnRQYXJzaW5nL3RyeS9JbmNvbXBsZXRlOC50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL3N0YXRlbWVudFBhcnNpbmcvdHJ5L0luY29tcGxldGU4LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNDlhYjNiYwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvc3RhdGVtZW50UGFyc2luZy90cnkvSW5jb21wbGV0ZTgudHh0CkBAIC0wLDAgKzEsMzUgQEAKK1BzaUphdmFGaWxlOkluY29tcGxldGU4LmphdmEKKyAgUHNpSW1wb3J0TGlzdAorICAgIDxlbXB0eSBsaXN0PgorICBQc2lDbGFzczpBCisgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpS2V5d29yZDpjbGFzcygnY2xhc3MnKQorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUlkZW50aWZpZXI6QSgnQScpCisgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAnKQorICAgIFBzaUNsYXNzSW5pdGlhbGl6ZXIKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAgICcpCisgICAgICAgIFBzaVRyeVN0YXRlbWVudAorICAgICAgICAgIFBzaUtleXdvcmQ6dHJ5KCd0cnknKQorICAgICAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICAgICAgICBQc2lLZXl3b3JkOmZpbmFsbHkoJ2ZpbmFsbHknKQorICAgICAgICAgIFBzaUVycm9yRWxlbWVudDoneycgZXhwZWN0ZWQKKyAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4nKQorICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9zdGF0ZW1lbnRQYXJzaW5nL3RyeS9JbmNvbXBsZXRlOS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9zdGF0ZW1lbnRQYXJzaW5nL3RyeS9JbmNvbXBsZXRlOS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNkOTIzYTkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL3N0YXRlbWVudFBhcnNpbmcvdHJ5L0luY29tcGxldGU5LmphdmEKQEAgLTAsMCArMSw1IEBACitjbGFzcyBBeworICB7CisgICAgdHJ5e31jYXRjaChFfCBlKXt9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL3N0YXRlbWVudFBhcnNpbmcvdHJ5L0luY29tcGxldGU5LnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvc3RhdGVtZW50UGFyc2luZy90cnkvSW5jb21wbGV0ZTkudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZhOTBhMjgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL3N0YXRlbWVudFBhcnNpbmcvdHJ5L0luY29tcGxldGU5LnR4dApAQCAtMCwwICsxLDU2IEBACitQc2lKYXZhRmlsZTpJbmNvbXBsZXRlOS5qYXZhCisgIFBzaUltcG9ydExpc3QKKyAgICA8ZW1wdHkgbGlzdD4KKyAgUHNpQ2xhc3M6QQorICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUtleXdvcmQ6Y2xhc3MoJ2NsYXNzJykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lJZGVudGlmaWVyOkEoJ0EnKQorICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgJykKKyAgICBQc2lDbGFzc0luaXRpYWxpemVyCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgICAnKQorICAgICAgICBQc2lUcnlTdGF0ZW1lbnQKKyAgICAgICAgICBQc2lLZXl3b3JkOnRyeSgndHJ5JykKKyAgICAgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgICAgICAgUHNpQ2F0Y2hTZWN0aW9uCisgICAgICAgICAgICBQc2lLZXl3b3JkOmNhdGNoKCdjYXRjaCcpCisgICAgICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICAgIFBzaVR5cGVFbGVtZW50OkV8IGUKKyAgICAgICAgICAgICAgUHNpVHlwZUVsZW1lbnQ6RQorICAgICAgICAgICAgICAgIFBzaUphdmFDb2RlUmVmZXJlbmNlRWxlbWVudDpFCisgICAgICAgICAgICAgICAgICBQc2lJZGVudGlmaWVyOkUoJ0UnKQorICAgICAgICAgICAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOk9SKCd8JykKKyAgICAgICAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgICAgICAgIFBzaVR5cGVFbGVtZW50OmUKKyAgICAgICAgICAgICAgICBQc2lKYXZhQ29kZVJlZmVyZW5jZUVsZW1lbnQ6ZQorICAgICAgICAgICAgICAgICAgUHNpSWRlbnRpZmllcjplKCdlJykKKyAgICAgICAgICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgICBQc2lFcnJvckVsZW1lbnQ6SWRlbnRpZmllciBleHBlY3RlZAorICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICAgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4nKQorICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvc3RhdGVtZW50UGFyc2luZy90cnkvTm9ybWFsMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9zdGF0ZW1lbnRQYXJzaW5nL3RyeS9Ob3JtYWwxLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjM4MjAzMgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvc3RhdGVtZW50UGFyc2luZy90cnkvTm9ybWFsMS5qYXZhCkBAIC0wLDAgKzEsNSBAQAorY2xhc3MgQXsKKyAgeworICAgIHRyeXt9Y2F0Y2goRSBlKXt9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL3N0YXRlbWVudFBhcnNpbmcvdHJ5L05vcm1hbDEudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9zdGF0ZW1lbnRQYXJzaW5nL3RyeS9Ob3JtYWwxLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ODY3OTVmYwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvc3RhdGVtZW50UGFyc2luZy90cnkvTm9ybWFsMS50eHQKQEAgLTAsMCArMSw0OSBAQAorUHNpSmF2YUZpbGU6Tm9ybWFsMS5qYXZhCisgIFBzaUltcG9ydExpc3QKKyAgICA8ZW1wdHkgbGlzdD4KKyAgUHNpQ2xhc3M6QQorICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUtleXdvcmQ6Y2xhc3MoJ2NsYXNzJykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lJZGVudGlmaWVyOkEoJ0EnKQorICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgJykKKyAgICBQc2lDbGFzc0luaXRpYWxpemVyCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgICAnKQorICAgICAgICBQc2lUcnlTdGF0ZW1lbnQKKyAgICAgICAgICBQc2lLZXl3b3JkOnRyeSgndHJ5JykKKyAgICAgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgICAgICAgUHNpQ2F0Y2hTZWN0aW9uCisgICAgICAgICAgICBQc2lLZXl3b3JkOmNhdGNoKCdjYXRjaCcpCisgICAgICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICAgICAgUHNpUGFyYW1ldGVyOmUKKyAgICAgICAgICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgICAgICBQc2lUeXBlRWxlbWVudDpFCisgICAgICAgICAgICAgICAgUHNpSmF2YUNvZGVSZWZlcmVuY2VFbGVtZW50OkUKKyAgICAgICAgICAgICAgICAgIFBzaUlkZW50aWZpZXI6RSgnRScpCisgICAgICAgICAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgICAgICAgICAgUHNpSWRlbnRpZmllcjplKCdlJykKKyAgICAgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICAgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4nKQorICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvc3RhdGVtZW50UGFyc2luZy90cnkvTm9ybWFsMi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9zdGF0ZW1lbnRQYXJzaW5nL3RyeS9Ob3JtYWwyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGQ1ZWJkOAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvc3RhdGVtZW50UGFyc2luZy90cnkvTm9ybWFsMi5qYXZhCkBAIC0wLDAgKzEsNSBAQAorY2xhc3MgQXsKKyAgeworICAgIHRyeXt9Y2F0Y2goRSBlKXt9ZmluYWxseXt9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL3N0YXRlbWVudFBhcnNpbmcvdHJ5L05vcm1hbDIudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9zdGF0ZW1lbnRQYXJzaW5nL3RyeS9Ob3JtYWwyLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MWVlNzNkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9zdGF0ZW1lbnRQYXJzaW5nL3RyeS9Ob3JtYWwyLnR4dApAQCAtMCwwICsxLDUzIEBACitQc2lKYXZhRmlsZTpOb3JtYWwyLmphdmEKKyAgUHNpSW1wb3J0TGlzdAorICAgIDxlbXB0eSBsaXN0PgorICBQc2lDbGFzczpBCisgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpS2V5d29yZDpjbGFzcygnY2xhc3MnKQorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUlkZW50aWZpZXI6QSgnQScpCisgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAnKQorICAgIFBzaUNsYXNzSW5pdGlhbGl6ZXIKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAgICcpCisgICAgICAgIFBzaVRyeVN0YXRlbWVudAorICAgICAgICAgIFBzaUtleXdvcmQ6dHJ5KCd0cnknKQorICAgICAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICAgICAgICBQc2lDYXRjaFNlY3Rpb24KKyAgICAgICAgICAgIFBzaUtleXdvcmQ6Y2F0Y2goJ2NhdGNoJykKKyAgICAgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgICAgICBQc2lQYXJhbWV0ZXI6ZQorICAgICAgICAgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgICAgIFBzaVR5cGVFbGVtZW50OkUKKyAgICAgICAgICAgICAgICBQc2lKYXZhQ29kZVJlZmVyZW5jZUVsZW1lbnQ6RQorICAgICAgICAgICAgICAgICAgUHNpSWRlbnRpZmllcjpFKCdFJykKKyAgICAgICAgICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICAgICAgICBQc2lJZGVudGlmaWVyOmUoJ2UnKQorICAgICAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgICAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgICAgICAgUHNpS2V5d29yZDpmaW5hbGx5KCdmaW5hbGx5JykKKyAgICAgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAnKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcbicpCisgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9zdGF0ZW1lbnRQYXJzaW5nL3RyeS9Ob3JtYWwzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL3N0YXRlbWVudFBhcnNpbmcvdHJ5L05vcm1hbDMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MDg0YzdmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9zdGF0ZW1lbnRQYXJzaW5nL3RyeS9Ob3JtYWwzLmphdmEKQEAgLTAsMCArMSw1IEBACitjbGFzcyBBeworICB7CisgICAgdHJ5e31maW5hbGx5e30KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvc3RhdGVtZW50UGFyc2luZy90cnkvTm9ybWFsMy50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL3N0YXRlbWVudFBhcnNpbmcvdHJ5L05vcm1hbDMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg5MDdjMjYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL3N0YXRlbWVudFBhcnNpbmcvdHJ5L05vcm1hbDMudHh0CkBAIC0wLDAgKzEsMzYgQEAKK1BzaUphdmFGaWxlOk5vcm1hbDMuamF2YQorICBQc2lJbXBvcnRMaXN0CisgICAgPGVtcHR5IGxpc3Q+CisgIFBzaUNsYXNzOkEKKyAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lLZXl3b3JkOmNsYXNzKCdjbGFzcycpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSWRlbnRpZmllcjpBKCdBJykKKyAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4gICcpCisgICAgUHNpQ2xhc3NJbml0aWFsaXplcgorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gICAgJykKKyAgICAgICAgUHNpVHJ5U3RhdGVtZW50CisgICAgICAgICAgUHNpS2V5d29yZDp0cnkoJ3RyeScpCisgICAgICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgICAgICAgIFBzaUtleXdvcmQ6ZmluYWxseSgnZmluYWxseScpCisgICAgICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4nKQorICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9zdGF0ZW1lbnRQYXJzaW5nL3RyeS9Ob3JtYWw0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL3N0YXRlbWVudFBhcnNpbmcvdHJ5L05vcm1hbDQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NzVhODM1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9zdGF0ZW1lbnRQYXJzaW5nL3RyeS9Ob3JtYWw0LmphdmEKQEAgLTAsMCArMSw1IEBACitjbGFzcyBBeworICB7CisgICAgdHJ5e31jYXRjaChFMXxFMiBlKXt9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL3N0YXRlbWVudFBhcnNpbmcvdHJ5L05vcm1hbDQudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9zdGF0ZW1lbnRQYXJzaW5nL3RyeS9Ob3JtYWw0LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMWQ1YWE0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9zdGF0ZW1lbnRQYXJzaW5nL3RyeS9Ob3JtYWw0LnR4dApAQCAtMCwwICsxLDU2IEBACitQc2lKYXZhRmlsZTpOb3JtYWw0LmphdmEKKyAgUHNpSW1wb3J0TGlzdAorICAgIDxlbXB0eSBsaXN0PgorICBQc2lDbGFzczpBCisgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpS2V5d29yZDpjbGFzcygnY2xhc3MnKQorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUlkZW50aWZpZXI6QSgnQScpCisgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAnKQorICAgIFBzaUNsYXNzSW5pdGlhbGl6ZXIKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAgICcpCisgICAgICAgIFBzaVRyeVN0YXRlbWVudAorICAgICAgICAgIFBzaUtleXdvcmQ6dHJ5KCd0cnknKQorICAgICAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICAgICAgICBQc2lDYXRjaFNlY3Rpb24KKyAgICAgICAgICAgIFBzaUtleXdvcmQ6Y2F0Y2goJ2NhdGNoJykKKyAgICAgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgICAgICBQc2lQYXJhbWV0ZXI6ZQorICAgICAgICAgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgICAgIFBzaVR5cGVFbGVtZW50OkUxfEUyCisgICAgICAgICAgICAgICAgUHNpVHlwZUVsZW1lbnQ6RTEKKyAgICAgICAgICAgICAgICAgIFBzaUphdmFDb2RlUmVmZXJlbmNlRWxlbWVudDpFMQorICAgICAgICAgICAgICAgICAgICBQc2lJZGVudGlmaWVyOkUxKCdFMScpCisgICAgICAgICAgICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICAgICAgICBQc2lKYXZhVG9rZW46T1IoJ3wnKQorICAgICAgICAgICAgICAgIFBzaVR5cGVFbGVtZW50OkUyCisgICAgICAgICAgICAgICAgICBQc2lKYXZhQ29kZVJlZmVyZW5jZUVsZW1lbnQ6RTIKKyAgICAgICAgICAgICAgICAgICAgUHNpSWRlbnRpZmllcjpFMignRTInKQorICAgICAgICAgICAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICAgICAgICBQc2lJZGVudGlmaWVyOmUoJ2UnKQorICAgICAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgICAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAnKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcbicpCisgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9zdGF0ZW1lbnRQYXJzaW5nL3doaWxlL05vcm1hbC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9zdGF0ZW1lbnRQYXJzaW5nL3doaWxlL05vcm1hbC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNmYzhmODMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL3N0YXRlbWVudFBhcnNpbmcvd2hpbGUvTm9ybWFsLmphdmEKQEAgLTAsMCArMSw1IEBACitjbGFzcyBGb297CisgIHsKKyAgICB3aGlsZSAodHJ1ZSkgZm9vKCk7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL3N0YXRlbWVudFBhcnNpbmcvd2hpbGUvTm9ybWFsLnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvc3RhdGVtZW50UGFyc2luZy93aGlsZS9Ob3JtYWwudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNjNGJiY2YKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL3N0YXRlbWVudFBhcnNpbmcvd2hpbGUvTm9ybWFsLnR4dApAQCAtMCwwICsxLDQ1IEBACitQc2lKYXZhRmlsZTpOb3JtYWwuamF2YQorICBQc2lJbXBvcnRMaXN0CisgICAgPGVtcHR5IGxpc3Q+CisgIFBzaUNsYXNzOkZvbworICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUtleXdvcmQ6Y2xhc3MoJ2NsYXNzJykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lJZGVudGlmaWVyOkZvbygnRm9vJykKKyAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4gICcpCisgICAgUHNpQ2xhc3NJbml0aWFsaXplcgorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gICAgJykKKyAgICAgICAgUHNpV2hpbGVTdGF0ZW1lbnQKKyAgICAgICAgICBQc2lLZXl3b3JkOndoaWxlKCd3aGlsZScpCisgICAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgICBQc2lMaXRlcmFsRXhwcmVzc2lvbjp0cnVlCisgICAgICAgICAgICBQc2lKYXZhVG9rZW46VFJVRV9LRVlXT1JEKCd0cnVlJykKKyAgICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICAgIFBzaUV4cHJlc3Npb25TdGF0ZW1lbnQKKyAgICAgICAgICAgIFBzaU1ldGhvZENhbGxFeHByZXNzaW9uOmZvbygpCisgICAgICAgICAgICAgIFBzaVJlZmVyZW5jZUV4cHJlc3Npb246Zm9vCisgICAgICAgICAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICAgICAgICAgIFBzaUV4cHJlc3Npb25MaXN0CisgICAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgICAgICAgUHNpSmF2YVRva2VuOlNFTUlDT0xPTignOycpCisgICAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAnKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcbicpCisgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9zdGF0ZW1lbnRQYXJzaW5nL3doaWxlL1VuY29tcGxldGUxLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL3N0YXRlbWVudFBhcnNpbmcvd2hpbGUvVW5jb21wbGV0ZTEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NTVjZDdkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9zdGF0ZW1lbnRQYXJzaW5nL3doaWxlL1VuY29tcGxldGUxLmphdmEKQEAgLTAsMCArMSw1IEBACitjbGFzcyBGb297CisgIHsKKyAgICB3aGlsZQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9zdGF0ZW1lbnRQYXJzaW5nL3doaWxlL1VuY29tcGxldGUxLnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvc3RhdGVtZW50UGFyc2luZy93aGlsZS9VbmNvbXBsZXRlMS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWJmY2YwMgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvc3RhdGVtZW50UGFyc2luZy93aGlsZS9VbmNvbXBsZXRlMS50eHQKQEAgLTAsMCArMSwzMSBAQAorUHNpSmF2YUZpbGU6VW5jb21wbGV0ZTEuamF2YQorICBQc2lJbXBvcnRMaXN0CisgICAgPGVtcHR5IGxpc3Q+CisgIFBzaUNsYXNzOkZvbworICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUtleXdvcmQ6Y2xhc3MoJ2NsYXNzJykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lJZGVudGlmaWVyOkZvbygnRm9vJykKKyAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4gICcpCisgICAgUHNpQ2xhc3NJbml0aWFsaXplcgorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gICAgJykKKyAgICAgICAgUHNpV2hpbGVTdGF0ZW1lbnQKKyAgICAgICAgICBQc2lLZXl3b3JkOndoaWxlKCd3aGlsZScpCisgICAgICAgICAgUHNpRXJyb3JFbGVtZW50OicoJyBleHBlY3RlZAorICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAnKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcbicpCisgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL3N0YXRlbWVudFBhcnNpbmcvd2hpbGUvVW5jb21wbGV0ZTIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvc3RhdGVtZW50UGFyc2luZy93aGlsZS9VbmNvbXBsZXRlMi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEzN2U3NmEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL3N0YXRlbWVudFBhcnNpbmcvd2hpbGUvVW5jb21wbGV0ZTIuamF2YQpAQCAtMCwwICsxLDUgQEAKK2NsYXNzIEZvb3sKKyAgeworICAgIHdoaWxlICgKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvc3RhdGVtZW50UGFyc2luZy93aGlsZS9VbmNvbXBsZXRlMi50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL3N0YXRlbWVudFBhcnNpbmcvd2hpbGUvVW5jb21wbGV0ZTIudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI0OGJkZjEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL3N0YXRlbWVudFBhcnNpbmcvd2hpbGUvVW5jb21wbGV0ZTIudHh0CkBAIC0wLDAgKzEsMzMgQEAKK1BzaUphdmFGaWxlOlVuY29tcGxldGUyLmphdmEKKyAgUHNpSW1wb3J0TGlzdAorICAgIDxlbXB0eSBsaXN0PgorICBQc2lDbGFzczpGb28KKyAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lLZXl3b3JkOmNsYXNzKCdjbGFzcycpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSWRlbnRpZmllcjpGb28oJ0ZvbycpCisgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAnKQorICAgIFBzaUNsYXNzSW5pdGlhbGl6ZXIKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAgICcpCisgICAgICAgIFBzaVdoaWxlU3RhdGVtZW50CisgICAgICAgICAgUHNpS2V5d29yZDp3aGlsZSgnd2hpbGUnKQorICAgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgICAgUHNpRXJyb3JFbGVtZW50OkV4cHJlc3Npb24gZXhwZWN0ZWQKKyAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4nKQorICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9zdGF0ZW1lbnRQYXJzaW5nL3doaWxlL1VuY29tcGxldGUzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL3N0YXRlbWVudFBhcnNpbmcvd2hpbGUvVW5jb21wbGV0ZTMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43M2Q0ZTJlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9zdGF0ZW1lbnRQYXJzaW5nL3doaWxlL1VuY29tcGxldGUzLmphdmEKQEAgLTAsMCArMSw2IEBACitjbGFzcyBGb297CisgIHsKKyAgICB3aGlsZSgKKyAgICBmb28oKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvc3RhdGVtZW50UGFyc2luZy93aGlsZS9VbmNvbXBsZXRlMy50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL3N0YXRlbWVudFBhcnNpbmcvd2hpbGUvVW5jb21wbGV0ZTMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcyZmJjZDYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL3N0YXRlbWVudFBhcnNpbmcvd2hpbGUvVW5jb21wbGV0ZTMudHh0CkBAIC0wLDAgKzEsNDMgQEAKK1BzaUphdmFGaWxlOlVuY29tcGxldGUzLmphdmEKKyAgUHNpSW1wb3J0TGlzdAorICAgIDxlbXB0eSBsaXN0PgorICBQc2lDbGFzczpGb28KKyAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lLZXl3b3JkOmNsYXNzKCdjbGFzcycpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSWRlbnRpZmllcjpGb28oJ0ZvbycpCisgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAnKQorICAgIFBzaUNsYXNzSW5pdGlhbGl6ZXIKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAgICcpCisgICAgICAgIFBzaVdoaWxlU3RhdGVtZW50CisgICAgICAgICAgUHNpS2V5d29yZDp3aGlsZSgnd2hpbGUnKQorICAgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgICAgUHNpRXJyb3JFbGVtZW50OkV4cHJlc3Npb24gZXhwZWN0ZWQKKyAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgICAnKQorICAgICAgICBQc2lFeHByZXNzaW9uU3RhdGVtZW50CisgICAgICAgICAgUHNpTWV0aG9kQ2FsbEV4cHJlc3Npb246Zm9vKCkKKyAgICAgICAgICAgIFBzaVJlZmVyZW5jZUV4cHJlc3Npb246Zm9vCisgICAgICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICAgICAgICBQc2lFeHByZXNzaW9uTGlzdAorICAgICAgICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgICAgIFBzaUphdmFUb2tlbjpTRU1JQ09MT04oJzsnKQorICAgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4nKQorICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvc3RhdGVtZW50UGFyc2luZy93aGlsZS9VbmNvbXBsZXRlNC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9zdGF0ZW1lbnRQYXJzaW5nL3doaWxlL1VuY29tcGxldGU0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGZiZTczZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvc3RhdGVtZW50UGFyc2luZy93aGlsZS9VbmNvbXBsZXRlNC5qYXZhCkBAIC0wLDAgKzEsNSBAQAorY2xhc3MgRm9veworICB7CisgICAgd2hpbGUoY29uZAorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9zdGF0ZW1lbnRQYXJzaW5nL3doaWxlL1VuY29tcGxldGU0LnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvc3RhdGVtZW50UGFyc2luZy93aGlsZS9VbmNvbXBsZXRlNC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGViODQxOAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvc3RhdGVtZW50UGFyc2luZy93aGlsZS9VbmNvbXBsZXRlNC50eHQKQEAgLTAsMCArMSwzNiBAQAorUHNpSmF2YUZpbGU6VW5jb21wbGV0ZTQuamF2YQorICBQc2lJbXBvcnRMaXN0CisgICAgPGVtcHR5IGxpc3Q+CisgIFBzaUNsYXNzOkZvbworICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUtleXdvcmQ6Y2xhc3MoJ2NsYXNzJykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lJZGVudGlmaWVyOkZvbygnRm9vJykKKyAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4gICcpCisgICAgUHNpQ2xhc3NJbml0aWFsaXplcgorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gICAgJykKKyAgICAgICAgUHNpV2hpbGVTdGF0ZW1lbnQKKyAgICAgICAgICBQc2lLZXl3b3JkOndoaWxlKCd3aGlsZScpCisgICAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgICBQc2lSZWZlcmVuY2VFeHByZXNzaW9uOmNvbmQKKyAgICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgICBQc2lJZGVudGlmaWVyOmNvbmQoJ2NvbmQnKQorICAgICAgICAgIFBzaUVycm9yRWxlbWVudDonKScgZXhwZWN0ZWQKKyAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4nKQorICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvc3RhdGVtZW50UGFyc2luZy93aGlsZS9VbmNvbXBsZXRlNS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9zdGF0ZW1lbnRQYXJzaW5nL3doaWxlL1VuY29tcGxldGU1LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmU0MmJlMQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvc3RhdGVtZW50UGFyc2luZy93aGlsZS9VbmNvbXBsZXRlNS5qYXZhCkBAIC0wLDAgKzEsNSBAQAorY2xhc3MgRm9veworICB7CisgICAgd2hpbGUoY29uZCkKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvc3RhdGVtZW50UGFyc2luZy93aGlsZS9VbmNvbXBsZXRlNS50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL3N0YXRlbWVudFBhcnNpbmcvd2hpbGUvVW5jb21wbGV0ZTUudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYxZDc1ZjUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL3N0YXRlbWVudFBhcnNpbmcvd2hpbGUvVW5jb21wbGV0ZTUudHh0CkBAIC0wLDAgKzEsMzcgQEAKK1BzaUphdmFGaWxlOlVuY29tcGxldGU1LmphdmEKKyAgUHNpSW1wb3J0TGlzdAorICAgIDxlbXB0eSBsaXN0PgorICBQc2lDbGFzczpGb28KKyAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lLZXl3b3JkOmNsYXNzKCdjbGFzcycpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSWRlbnRpZmllcjpGb28oJ0ZvbycpCisgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAnKQorICAgIFBzaUNsYXNzSW5pdGlhbGl6ZXIKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAgICcpCisgICAgICAgIFBzaVdoaWxlU3RhdGVtZW50CisgICAgICAgICAgUHNpS2V5d29yZDp3aGlsZSgnd2hpbGUnKQorICAgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgICAgUHNpUmVmZXJlbmNlRXhwcmVzc2lvbjpjb25kCisgICAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgICAgUHNpSWRlbnRpZmllcjpjb25kKCdjb25kJykKKyAgICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgICAgIFBzaUVycm9yRWxlbWVudDpTdGF0ZW1lbnQgZXhwZWN0ZWQKKyAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4nKQorICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvc3RhdGVtZW50UGFyc2luZy93aGlsZS9VbmNvbXBsZXRlNi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItZnVsbC9zdGF0ZW1lbnRQYXJzaW5nL3doaWxlL1VuY29tcGxldGU2LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzE5ODEzZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvc3RhdGVtZW50UGFyc2luZy93aGlsZS9VbmNvbXBsZXRlNi5qYXZhCkBAIC0wLDAgKzEsNSBAQAorY2xhc3MgRm9veworICB7CisgICAgd2hpbGUoKSBmb28oKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLWZ1bGwvc3RhdGVtZW50UGFyc2luZy93aGlsZS9VbmNvbXBsZXRlNi50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL3N0YXRlbWVudFBhcnNpbmcvd2hpbGUvVW5jb21wbGV0ZTYudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJhN2IzYWYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1mdWxsL3N0YXRlbWVudFBhcnNpbmcvd2hpbGUvVW5jb21wbGV0ZTYudHh0CkBAIC0wLDAgKzEsNDQgQEAKK1BzaUphdmFGaWxlOlVuY29tcGxldGU2LmphdmEKKyAgUHNpSW1wb3J0TGlzdAorICAgIDxlbXB0eSBsaXN0PgorICBQc2lDbGFzczpGb28KKyAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lLZXl3b3JkOmNsYXNzKCdjbGFzcycpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSWRlbnRpZmllcjpGb28oJ0ZvbycpCisgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAnKQorICAgIFBzaUNsYXNzSW5pdGlhbGl6ZXIKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lDb2RlQmxvY2sKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAgICcpCisgICAgICAgIFBzaVdoaWxlU3RhdGVtZW50CisgICAgICAgICAgUHNpS2V5d29yZDp3aGlsZSgnd2hpbGUnKQorICAgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgICAgUHNpRXJyb3JFbGVtZW50OkV4cHJlc3Npb24gZXhwZWN0ZWQKKyAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgICAgUHNpRXhwcmVzc2lvblN0YXRlbWVudAorICAgICAgICAgICAgUHNpTWV0aG9kQ2FsbEV4cHJlc3Npb246Zm9vKCkKKyAgICAgICAgICAgICAgUHNpUmVmZXJlbmNlRXhwcmVzc2lvbjpmb28KKyAgICAgICAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICAgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgICAgICAgICAgUHNpRXhwcmVzc2lvbkxpc3QKKyAgICAgICAgICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICAgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICAgICAgICBQc2lKYXZhVG9rZW46U0VNSUNPTE9OKCc7JykKKyAgICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gICcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuJykKKyAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL2Fubm90YXRpb25zL0FycmF5LnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvYW5ub3RhdGlvbnMvQXJyYXkudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU1MjUyMTMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL2Fubm90YXRpb25zL0FycmF5LnR4dApAQCAtMCwwICsxLDIwIEBACitQc2lKYXZhRmlsZTpBcnJheS5qYXZhCisgIFBzaUFubm90YXRpb24KKyAgICBQc2lKYXZhVG9rZW46QVQoJ0AnKQorICAgIFBzaUphdmFDb2RlUmVmZXJlbmNlRWxlbWVudDpFbmRvcnNlcnMKKyAgICAgIFBzaUlkZW50aWZpZXI6RW5kb3JzZXJzKCdFbmRvcnNlcnMnKQorICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lBbm5vdGF0aW9uUGFyYW1ldGVyTGlzdAorICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgIFBzaU5hbWVWYWx1ZVBhaXIKKyAgICAgICAgUHNpQXJyYXlJbml0aWFsaXplck1lbWJlclZhbHVlOnsiQ2hpbGRyZW4iLCAiVW5zY3J1cHVsb3VzIGRlbnRpc3RzIn0KKyAgICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgICBQc2lMaXRlcmFsRXhwcmVzc2lvbjoiQ2hpbGRyZW4iCisgICAgICAgICAgICBQc2lKYXZhVG9rZW46U1RSSU5HX0xJVEVSQUwoJyJDaGlsZHJlbiInKQorICAgICAgICAgIFBzaUphdmFUb2tlbjpDT01NQSgnLCcpCisgICAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgICAgUHNpTGl0ZXJhbEV4cHJlc3Npb246IlVuc2NydXB1bG91cyBkZW50aXN0cyIKKyAgICAgICAgICAgIFBzaUphdmFUb2tlbjpTVFJJTkdfTElURVJBTCgnIlVuc2NydXB1bG91cyBkZW50aXN0cyInKQorICAgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvYW5ub3RhdGlvbnMvQ29tcGxleC50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL2Fubm90YXRpb25zL0NvbXBsZXgudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUyMTFjMGEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL2Fubm90YXRpb25zL0NvbXBsZXgudHh0CkBAIC0wLDAgKzEsMjIgQEAKK1BzaUphdmFGaWxlOkNvbXBsZXguamF2YQorICBQc2lBbm5vdGF0aW9uCisgICAgUHNpSmF2YVRva2VuOkFUKCdAJykKKyAgICBQc2lKYXZhQ29kZVJlZmVyZW5jZUVsZW1lbnQ6QXV0aG9yCisgICAgICBQc2lJZGVudGlmaWVyOkF1dGhvcignQXV0aG9yJykKKyAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpQW5ub3RhdGlvblBhcmFtZXRlckxpc3QKKyAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICBQc2lOYW1lVmFsdWVQYWlyCisgICAgICAgIFBzaUlkZW50aWZpZXI6Zmlyc3QoJ2ZpcnN0JykKKyAgICAgICAgUHNpSmF2YVRva2VuOkVRKCc9JykKKyAgICAgICAgUHNpTGl0ZXJhbEV4cHJlc3Npb246IkV1Z2VuZSIKKyAgICAgICAgICBQc2lKYXZhVG9rZW46U1RSSU5HX0xJVEVSQUwoJyJFdWdlbmUiJykKKyAgICAgIFBzaUphdmFUb2tlbjpDT01NQSgnLCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaU5hbWVWYWx1ZVBhaXIKKyAgICAgICAgUHNpSWRlbnRpZmllcjpzZWNvbmQoJ3NlY29uZCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpFUSgnPScpCisgICAgICAgIFBzaUxpdGVyYWxFeHByZXNzaW9uOiJXYW1waXJjaGlrIgorICAgICAgICAgIFBzaUphdmFUb2tlbjpTVFJJTkdfTElURVJBTCgnIldhbXBpcmNoaWsiJykKKyAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL2Fubm90YXRpb25zL0V4dHJhQ29tbWFJbkxpc3QudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9hbm5vdGF0aW9ucy9FeHRyYUNvbW1hSW5MaXN0LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNThmYzE5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9hbm5vdGF0aW9ucy9FeHRyYUNvbW1hSW5MaXN0LnR4dApAQCAtMCwwICsxLDIxIEBACitQc2lKYXZhRmlsZTpFeHRyYUNvbW1hSW5MaXN0LmphdmEKKyAgUHNpQW5ub3RhdGlvbgorICAgIFBzaUphdmFUb2tlbjpBVCgnQCcpCisgICAgUHNpSmF2YUNvZGVSZWZlcmVuY2VFbGVtZW50OkFubm8KKyAgICAgIFBzaUlkZW50aWZpZXI6QW5ubygnQW5ubycpCisgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUFubm90YXRpb25QYXJhbWV0ZXJMaXN0CisgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgUHNpTmFtZVZhbHVlUGFpcgorICAgICAgICBQc2lBcnJheUluaXRpYWxpemVyTWVtYmVyVmFsdWU6ezAsIDEsfQorICAgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICAgIFBzaUxpdGVyYWxFeHByZXNzaW9uOjAKKyAgICAgICAgICAgIFBzaUphdmFUb2tlbjpJTlRFR0VSX0xJVEVSQUwoJzAnKQorICAgICAgICAgIFBzaUphdmFUb2tlbjpDT01NQSgnLCcpCisgICAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgICAgUHNpTGl0ZXJhbEV4cHJlc3Npb246MQorICAgICAgICAgICAgUHNpSmF2YVRva2VuOklOVEVHRVJfTElURVJBTCgnMScpCisgICAgICAgICAgUHNpSmF2YVRva2VuOkNPTU1BKCcsJykKKyAgICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL2Fubm90YXRpb25zL0ZpcnN0TmFtZU1pc3NlZC50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL2Fubm90YXRpb25zL0ZpcnN0TmFtZU1pc3NlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzExYzJmYQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvYW5ub3RhdGlvbnMvRmlyc3ROYW1lTWlzc2VkLnR4dApAQCAtMCwwICsxLDI2IEBACitQc2lKYXZhRmlsZTpGaXJzdE5hbWVNaXNzZWQuamF2YQorICBQc2lBbm5vdGF0aW9uCisgICAgUHNpSmF2YVRva2VuOkFUKCdAJykKKyAgICBQc2lKYXZhQ29kZVJlZmVyZW5jZUVsZW1lbnQ6QW5ubworICAgICAgUHNpSWRlbnRpZmllcjpBbm5vKCdBbm5vJykKKyAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpQW5ub3RhdGlvblBhcmFtZXRlckxpc3QKKyAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICBQc2lOYW1lVmFsdWVQYWlyCisgICAgICAgIFBzaVJlZmVyZW5jZUV4cHJlc3Npb246dmFsdWUxCisgICAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgUHNpSWRlbnRpZmllcjp2YWx1ZTEoJ3ZhbHVlMScpCisgICAgICBQc2lFcnJvckVsZW1lbnQ6QW5ub3RhdGlvbiBhdHRyaWJ1dGUgbXVzdCBiZSBvZiB0aGUgZm9ybSAnbmFtZT12YWx1ZScKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lKYXZhVG9rZW46Q09NTUEoJywnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lOYW1lVmFsdWVQYWlyCisgICAgICAgIFBzaUlkZW50aWZpZXI6cGFyYW0yKCdwYXJhbTInKQorICAgICAgICBQc2lKYXZhVG9rZW46RVEoJz0nKQorICAgICAgICBQc2lSZWZlcmVuY2VFeHByZXNzaW9uOnZhbHVlMgorICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgIFBzaUlkZW50aWZpZXI6dmFsdWUyKCd2YWx1ZTInKQorICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvYW5ub3RhdGlvbnMvTWFya2VyLnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvYW5ub3RhdGlvbnMvTWFya2VyLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYTI4YmM0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9hbm5vdGF0aW9ucy9NYXJrZXIudHh0CkBAIC0wLDAgKzEsOSBAQAorUHNpSmF2YUZpbGU6TWFya2VyLmphdmEKKyAgUHNpQW5ub3RhdGlvbgorICAgIFBzaUphdmFUb2tlbjpBVCgnQCcpCisgICAgUHNpSmF2YUNvZGVSZWZlcmVuY2VFbGVtZW50OlByZWxpbWluYXJ5CisgICAgICBQc2lJZGVudGlmaWVyOlByZWxpbWluYXJ5KCdQcmVsaW1pbmFyeScpCisgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUFubm90YXRpb25QYXJhbWV0ZXJMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvYW5ub3RhdGlvbnMvTXVsdGlwbGUudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9hbm5vdGF0aW9ucy9NdWx0aXBsZS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWVmMmJhZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvYW5ub3RhdGlvbnMvTXVsdGlwbGUudHh0CkBAIC0wLDAgKzEsMjYgQEAKK1BzaUphdmFGaWxlOk11bHRpcGxlLmphdmEKKyAgUHNpQW5ub3RhdGlvbgorICAgIFBzaUphdmFUb2tlbjpBVCgnQCcpCisgICAgUHNpSmF2YUNvZGVSZWZlcmVuY2VFbGVtZW50OlByZWxpbWluYXJ5CisgICAgICBQc2lJZGVudGlmaWVyOlByZWxpbWluYXJ5KCdQcmVsaW1pbmFyeScpCisgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUFubm90YXRpb25QYXJhbWV0ZXJMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgUHNpV2hpdGVTcGFjZSgnICcpCisgIFBzaUFubm90YXRpb24KKyAgICBQc2lKYXZhVG9rZW46QVQoJ0AnKQorICAgIFBzaUphdmFDb2RlUmVmZXJlbmNlRWxlbWVudDpPdGhlcgorICAgICAgUHNpSWRlbnRpZmllcjpPdGhlcignT3RoZXInKQorICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lBbm5vdGF0aW9uUGFyYW1ldGVyTGlzdAorICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgIFBzaU5hbWVWYWx1ZVBhaXIKKyAgICAgICAgUHNpSWRlbnRpZmllcjpuYW1lKCduYW1lJykKKyAgICAgICAgUHNpSmF2YVRva2VuOkVRKCc9JykKKyAgICAgICAgUHNpUmVmZXJlbmNlRXhwcmVzc2lvbjp2YWx1ZQorICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgIFBzaUlkZW50aWZpZXI6dmFsdWUoJ3ZhbHVlJykKKyAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9hbm5vdGF0aW9ucy9OZXN0ZWQudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9hbm5vdGF0aW9ucy9OZXN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU4Y2ZlNDQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL2Fubm90YXRpb25zL05lc3RlZC50eHQKQEAgLTAsMCArMSwzMiBAQAorUHNpSmF2YUZpbGU6TmVzdGVkLmphdmEKKyAgUHNpQW5ub3RhdGlvbgorICAgIFBzaUphdmFUb2tlbjpBVCgnQCcpCisgICAgUHNpSmF2YUNvZGVSZWZlcmVuY2VFbGVtZW50OkF1dGhvcgorICAgICAgUHNpSWRlbnRpZmllcjpBdXRob3IoJ0F1dGhvcicpCisgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUFubm90YXRpb25QYXJhbWV0ZXJMaXN0CisgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgUHNpTmFtZVZhbHVlUGFpcgorICAgICAgICBQc2lBbm5vdGF0aW9uCisgICAgICAgICAgUHNpSmF2YVRva2VuOkFUKCdAJykKKyAgICAgICAgICBQc2lKYXZhQ29kZVJlZmVyZW5jZUVsZW1lbnQ6TmFtZQorICAgICAgICAgICAgUHNpSWRlbnRpZmllcjpOYW1lKCdOYW1lJykKKyAgICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgUHNpQW5ub3RhdGlvblBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgICAgICBQc2lOYW1lVmFsdWVQYWlyCisgICAgICAgICAgICAgIFBzaUlkZW50aWZpZXI6Zmlyc3QoJ2ZpcnN0JykKKyAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOkVRKCc9JykKKyAgICAgICAgICAgICAgUHNpTGl0ZXJhbEV4cHJlc3Npb246IkV1Z2VuZSIKKyAgICAgICAgICAgICAgICBQc2lKYXZhVG9rZW46U1RSSU5HX0xJVEVSQUwoJyJFdWdlbmUiJykKKyAgICAgICAgICAgIFBzaUphdmFUb2tlbjpDT01NQSgnLCcpCisgICAgICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgICAgICAgIFBzaU5hbWVWYWx1ZVBhaXIKKyAgICAgICAgICAgICAgUHNpSWRlbnRpZmllcjpzZWNvbmQoJ3NlY29uZCcpCisgICAgICAgICAgICAgIFBzaUphdmFUb2tlbjpFUSgnPScpCisgICAgICAgICAgICAgIFBzaUxpdGVyYWxFeHByZXNzaW9uOiJXYW1waXJjaGlrIgorICAgICAgICAgICAgICAgIFBzaUphdmFUb2tlbjpTVFJJTkdfTElURVJBTCgnIldhbXBpcmNoaWsiJykKKyAgICAgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9hbm5vdGF0aW9ucy9QYXJhbWV0ZXJpemVkQW5ub3RhdGlvbi50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL2Fubm90YXRpb25zL1BhcmFtZXRlcml6ZWRBbm5vdGF0aW9uLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMTg0MzEzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9hbm5vdGF0aW9ucy9QYXJhbWV0ZXJpemVkQW5ub3RhdGlvbi50eHQKQEAgLTAsMCArMSwxMyBAQAorUHNpSmF2YUZpbGU6UGFyYW1ldGVyaXplZEFubm90YXRpb24uamF2YQorICBQc2lBbm5vdGF0aW9uCisgICAgUHNpSmF2YVRva2VuOkFUKCdAJykKKyAgICBQc2lKYXZhQ29kZVJlZmVyZW5jZUVsZW1lbnQ6TnVsbGFibGUKKyAgICAgIFBzaUlkZW50aWZpZXI6TnVsbGFibGUoJ051bGxhYmxlJykKKyAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpQW5ub3RhdGlvblBhcmFtZXRlckxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICBQc2lFcnJvckVsZW1lbnQ6VW5wYXJzZWQgdG9rZW5zCisgICAgUHNpSmF2YVRva2VuOkxUKCc8JykKKyAgICBQc2lJZGVudGlmaWVyOlQoJ1QnKQorICAgIFBzaUphdmFUb2tlbjpHVCgnPicpCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL2Fubm90YXRpb25zL1F1YWxpZmllZEFubm90YXRpb24udHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9hbm5vdGF0aW9ucy9RdWFsaWZpZWRBbm5vdGF0aW9uLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNzNkZGZlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9hbm5vdGF0aW9ucy9RdWFsaWZpZWRBbm5vdGF0aW9uLnR4dApAQCAtMCwwICsxLDI0IEBACitQc2lKYXZhRmlsZTpRdWFsaWZpZWRBbm5vdGF0aW9uLmphdmEKKyAgUHNpQW5ub3RhdGlvbgorICAgIFBzaUphdmFUb2tlbjpBVCgnQCcpCisgICAgUHNpSmF2YUNvZGVSZWZlcmVuY2VFbGVtZW50Om9yZy5qZXRicmFpbnMuYW5ub3RhdGlvbnMuTnVsbGFibGUKKyAgICAgIFBzaUphdmFDb2RlUmVmZXJlbmNlRWxlbWVudDpvcmcuamV0YnJhaW5zLmFubm90YXRpb25zCisgICAgICAgIFBzaUphdmFDb2RlUmVmZXJlbmNlRWxlbWVudDpvcmcuamV0YnJhaW5zCisgICAgICAgICAgUHNpSmF2YUNvZGVSZWZlcmVuY2VFbGVtZW50Om9yZworICAgICAgICAgICAgUHNpSWRlbnRpZmllcjpvcmcoJ29yZycpCisgICAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgIFBzaUphdmFUb2tlbjpET1QoJy4nKQorICAgICAgICAgIFBzaUlkZW50aWZpZXI6amV0YnJhaW5zKCdqZXRicmFpbnMnKQorICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICBQc2lKYXZhVG9rZW46RE9UKCcuJykKKyAgICAgICAgUHNpSWRlbnRpZmllcjphbm5vdGF0aW9ucygnYW5ub3RhdGlvbnMnKQorICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lKYXZhVG9rZW46RE9UKCcuJykKKyAgICAgIFBzaUlkZW50aWZpZXI6TnVsbGFibGUoJ051bGxhYmxlJykKKyAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpQW5ub3RhdGlvblBhcmFtZXRlckxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9hbm5vdGF0aW9ucy9TaW1wbGUwLnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvYW5ub3RhdGlvbnMvU2ltcGxlMC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDg2NTQ5YgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvYW5ub3RhdGlvbnMvU2ltcGxlMC50eHQKQEAgLTAsMCArMSwxMyBAQAorUHNpSmF2YUZpbGU6U2ltcGxlMC5qYXZhCisgIFBzaUFubm90YXRpb24KKyAgICBQc2lKYXZhVG9rZW46QVQoJ0AnKQorICAgIFBzaUphdmFDb2RlUmVmZXJlbmNlRWxlbWVudDpDb3B5cmlnaHQKKyAgICAgIFBzaUlkZW50aWZpZXI6Q29weXJpZ2h0KCdDb3B5cmlnaHQnKQorICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lBbm5vdGF0aW9uUGFyYW1ldGVyTGlzdAorICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgIFBzaU5hbWVWYWx1ZVBhaXIKKyAgICAgICAgUHNpTGl0ZXJhbEV4cHJlc3Npb246ImJsYS1ibGEtYmxhIgorICAgICAgICAgIFBzaUphdmFUb2tlbjpTVFJJTkdfTElURVJBTCgnImJsYS1ibGEtYmxhIicpCisgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9hbm5vdGF0aW9ucy9TaW1wbGUxLnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvYW5ub3RhdGlvbnMvU2ltcGxlMS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDc4ZDA2OQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvYW5ub3RhdGlvbnMvU2ltcGxlMS50eHQKQEAgLTAsMCArMSwxNSBAQAorUHNpSmF2YUZpbGU6U2ltcGxlMS5qYXZhCisgIFBzaUFubm90YXRpb24KKyAgICBQc2lKYXZhVG9rZW46QVQoJ0AnKQorICAgIFBzaUphdmFDb2RlUmVmZXJlbmNlRWxlbWVudDpDb3B5cmlnaHQKKyAgICAgIFBzaUlkZW50aWZpZXI6Q29weXJpZ2h0KCdDb3B5cmlnaHQnKQorICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lBbm5vdGF0aW9uUGFyYW1ldGVyTGlzdAorICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgIFBzaU5hbWVWYWx1ZVBhaXIKKyAgICAgICAgUHNpUmVmZXJlbmNlRXhwcmVzc2lvbjp0cmVhdGVkQXNWYWx1ZQorICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgIFBzaUlkZW50aWZpZXI6dHJlYXRlZEFzVmFsdWUoJ3RyZWF0ZWRBc1ZhbHVlJykKKyAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL2RlY2xhcmF0aW9ucy9Bbm5vRGVjbGFyYXRpb24udHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9kZWNsYXJhdGlvbnMvQW5ub0RlY2xhcmF0aW9uLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ODc2MzMzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9kZWNsYXJhdGlvbnMvQW5ub0RlY2xhcmF0aW9uLnR4dApAQCAtMCwwICsxLDIyIEBACitQc2lKYXZhRmlsZTpBbm5vRGVjbGFyYXRpb24uamF2YQorICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgUHNpV2hpdGVTcGFjZSgnICcpCisgIFBzaUNsYXNzOkFubm90YXRpb24KKyAgICBQc2lNb2RpZmllckxpc3Q6cHVibGljCisgICAgICBQc2lLZXl3b3JkOnB1YmxpYygncHVibGljJykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lKYXZhVG9rZW46QVQoJ0AnKQorICAgIFBzaUtleXdvcmQ6aW50ZXJmYWNlKCdpbnRlcmZhY2UnKQorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUlkZW50aWZpZXI6QW5ub3RhdGlvbignQW5ub3RhdGlvbicpCisgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9kZWNsYXJhdGlvbnMvQW5ub0RlZmF1bHQudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9kZWNsYXJhdGlvbnMvQW5ub0RlZmF1bHQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVkOGU0MzUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL2RlY2xhcmF0aW9ucy9Bbm5vRGVmYXVsdC50eHQKQEAgLTAsMCArMSwzNSBAQAorUHNpSmF2YUZpbGU6QW5ub0RlZmF1bHQuamF2YQorICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgUHNpV2hpdGVTcGFjZSgnICcpCisgIFBzaUFubm90YXRpb25NZXRob2Q6Zm9vCisgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVR5cGVFbGVtZW50OkNsYXNzCisgICAgICBQc2lKYXZhQ29kZVJlZmVyZW5jZUVsZW1lbnQ6Q2xhc3MKKyAgICAgICAgUHNpSWRlbnRpZmllcjpDbGFzcygnQ2xhc3MnKQorICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpS2V5d29yZDpkZWZhdWx0KCdkZWZhdWx0JykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lDbGFzc09iamVjdEFjY2Vzc0V4cHJlc3Npb246U3RyaW5nLmNsYXNzCisgICAgICBQc2lUeXBlRWxlbWVudDpTdHJpbmcKKyAgICAgICAgUHNpSmF2YUNvZGVSZWZlcmVuY2VFbGVtZW50OlN0cmluZworICAgICAgICAgIFBzaUlkZW50aWZpZXI6U3RyaW5nKCdTdHJpbmcnKQorICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpSmF2YVRva2VuOkRPVCgnLicpCisgICAgICBQc2lLZXl3b3JkOmNsYXNzKCdjbGFzcycpCisgICAgUHNpSmF2YVRva2VuOlNFTUlDT0xPTignOycpCisgIFBzaVdoaXRlU3BhY2UoJyAnKQorICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL2RlY2xhcmF0aW9ucy9Bbm5vSW5uZXIudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9kZWNsYXJhdGlvbnMvQW5ub0lubmVyLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NWNkODU4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9kZWNsYXJhdGlvbnMvQW5ub0lubmVyLnR4dApAQCAtMCwwICsxLDQ0IEBACitQc2lKYXZhRmlsZTpBbm5vSW5uZXIuamF2YQorICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgUHNpV2hpdGVTcGFjZSgnICcpCisgIFBzaUNsYXNzOklubmVyCisgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpSmF2YVRva2VuOkFUKCdAJykKKyAgICBQc2lLZXl3b3JkOmludGVyZmFjZSgnaW50ZXJmYWNlJykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lJZGVudGlmaWVyOklubmVyKCdJbm5lcicpCisgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUFubm90YXRpb25NZXRob2Q6YmFyCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDpkb3VibGUKKyAgICAgICAgUHNpS2V5d29yZDpkb3VibGUoJ2RvdWJsZScpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6YmFyKCdiYXInKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lLZXl3b3JkOmRlZmF1bHQoJ2RlZmF1bHQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lMaXRlcmFsRXhwcmVzc2lvbjowLjAKKyAgICAgICAgUHNpSmF2YVRva2VuOkRPVUJMRV9MSVRFUkFMKCcwLjAnKQorICAgICAgUHNpSmF2YVRva2VuOlNFTUlDT0xPTignOycpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgIFBzaVdoaXRlU3BhY2UoJyAnKQorICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL2RlY2xhcmF0aW9ucy9Bbm5vTmVzdGVkLnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvZGVjbGFyYXRpb25zL0Fubm9OZXN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQwYWFiYTAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL2RlY2xhcmF0aW9ucy9Bbm5vTmVzdGVkLnR4dApAQCAtMCwwICsxLDQ3IEBACitQc2lKYXZhRmlsZTpBbm5vTmVzdGVkLmphdmEKKyAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgIFBzaVdoaXRlU3BhY2UoJyAnKQorICBQc2lDbGFzczpJbm5lcgorICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUphdmFUb2tlbjpBVCgnQCcpCisgICAgUHNpS2V5d29yZDppbnRlcmZhY2UoJ2ludGVyZmFjZScpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSWRlbnRpZmllcjpJbm5lcignSW5uZXInKQorICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lBbm5vdGF0aW9uTWV0aG9kOmJhcgorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6U3RyaW5nCisgICAgICAgIFBzaUphdmFDb2RlUmVmZXJlbmNlRWxlbWVudDpTdHJpbmcKKyAgICAgICAgICBQc2lJZGVudGlmaWVyOlN0cmluZygnU3RyaW5nJykKKyAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpiYXIoJ2JhcicpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUtleXdvcmQ6ZGVmYXVsdCgnZGVmYXVsdCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUxpdGVyYWxFeHByZXNzaW9uOiI8dW5zcGVjaWZpZWQ+IgorICAgICAgICBQc2lKYXZhVG9rZW46U1RSSU5HX0xJVEVSQUwoJyI8dW5zcGVjaWZpZWQ+IicpCisgICAgICBQc2lKYXZhVG9rZW46U0VNSUNPTE9OKCc7JykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgUHNpV2hpdGVTcGFjZSgnICcpCisgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvZGVjbGFyYXRpb25zL0Fubm9PdGhlck1lbWJlcnMudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9kZWNsYXJhdGlvbnMvQW5ub090aGVyTWVtYmVycy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjllYWI2YgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvZGVjbGFyYXRpb25zL0Fubm9PdGhlck1lbWJlcnMudHh0CkBAIC0wLDAgKzEsNjQgQEAKK1BzaUphdmFGaWxlOkFubm9PdGhlck1lbWJlcnMuamF2YQorICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgUHNpV2hpdGVTcGFjZSgnICcpCisgIFBzaUZpZWxkOmZpZWxkCisgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpVHlwZUVsZW1lbnQ6aW50CisgICAgICBQc2lLZXl3b3JkOmludCgnaW50JykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lJZGVudGlmaWVyOmZpZWxkKCdmaWVsZCcpCisgICAgUHNpSmF2YVRva2VuOlNFTUlDT0xPTignOycpCisgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgIFBzaUFubm90YXRpb25NZXRob2Q6bQorICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUlkZW50aWZpZXI6bSgnbScpCisgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpQ29kZUJsb2NrCisgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICBQc2lDbGFzczpDCisgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpS2V5d29yZDpjbGFzcygnY2xhc3MnKQorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUlkZW50aWZpZXI6QygnQycpCisgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICBQc2lDbGFzczpJCisgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpS2V5d29yZDppbnRlcmZhY2UoJ2ludGVyZmFjZScpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSWRlbnRpZmllcjpJKCdJJykKKyAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgIFBzaVdoaXRlU3BhY2UoJyAnKQorICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL2RlY2xhcmF0aW9ucy9Bbm5vU2ltcGxlLnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvZGVjbGFyYXRpb25zL0Fubm9TaW1wbGUudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZiYmUxY2UKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL2RlY2xhcmF0aW9ucy9Bbm5vU2ltcGxlLnR4dApAQCAtMCwwICsxLDIxIEBACitQc2lKYXZhRmlsZTpBbm5vU2ltcGxlLmphdmEKKyAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgIFBzaVdoaXRlU3BhY2UoJyAnKQorICBQc2lBbm5vdGF0aW9uTWV0aG9kOmZvbworICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lUeXBlRWxlbWVudDppbnQKKyAgICAgIFBzaUtleXdvcmQ6aW50KCdpbnQnKQorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUphdmFUb2tlbjpTRU1JQ09MT04oJzsnKQorICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9kZWNsYXJhdGlvbnMvQ2xhc3NJbml0LnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvZGVjbGFyYXRpb25zL0NsYXNzSW5pdC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDQzYTNmNAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvZGVjbGFyYXRpb25zL0NsYXNzSW5pdC50eHQKQEAgLTAsMCArMSwxNCBAQAorUHNpSmF2YUZpbGU6Q2xhc3NJbml0LmphdmEKKyAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgIFBzaVdoaXRlU3BhY2UoJyAnKQorICBQc2lDbGFzc0luaXRpYWxpemVyCisgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpQ29kZUJsb2NrCisgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpQ29tbWVudChDX1NUWUxFX0NPTU1FTlQpKCcvKmNvbW1lbnQqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9kZWNsYXJhdGlvbnMvQ29tcGxldGlvbkhhY2swLnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvZGVjbGFyYXRpb25zL0NvbXBsZXRpb25IYWNrMC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2I5Y2ZjYwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvZGVjbGFyYXRpb25zL0NvbXBsZXRpb25IYWNrMC50eHQKQEAgLTAsMCArMSwzMyBAQAorUHNpSmF2YUZpbGU6Q29tcGxldGlvbkhhY2swLmphdmEKKyAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgIFBzaVdoaXRlU3BhY2UoJyAnKQorICBQc2lGaWVsZDpzCisgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpRXJyb3JFbGVtZW50OlVuZXhwZWN0ZWQgdG9rZW4KKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICAgIFBzaUphdmFUb2tlbjpMVCgnPCcpCisgICAgICAgIFBzaVR5cGVQYXJhbWV0ZXI6WAorICAgICAgICAgIFBzaUlkZW50aWZpZXI6WCgnWCcpCisgICAgICAgICAgUHNpRWxlbWVudChFWFRFTkRTX0JPVU5EX0xJU1QpCisgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgIFBzaUVycm9yRWxlbWVudDpVbmV4cGVjdGVkIGlkZW50aWZpZXIKKyAgICAgICAgICBQc2lJZGVudGlmaWVyOkludGVsbGlKSWRlYVJ1bGV6eignSW50ZWxsaUpJZGVhUnVsZXp6JykKKyAgICAgICAgUHNpSmF2YVRva2VuOkdUKCc+JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgIFBzaVR5cGVFbGVtZW50OlN0cmluZworICAgICAgUHNpSmF2YUNvZGVSZWZlcmVuY2VFbGVtZW50OlN0cmluZworICAgICAgICBQc2lJZGVudGlmaWVyOlN0cmluZygnU3RyaW5nJykKKyAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUlkZW50aWZpZXI6cygncycpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSmF2YVRva2VuOkVRKCc9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lMaXRlcmFsRXhwcmVzc2lvbjoiIgorICAgICAgUHNpSmF2YVRva2VuOlNUUklOR19MSVRFUkFMKCciIicpCisgICAgUHNpSmF2YVRva2VuOlNFTUlDT0xPTignOycpCisgIFBzaVdoaXRlU3BhY2UoJyAnKQorICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL2RlY2xhcmF0aW9ucy9Db21wbGV0aW9uSGFjazEudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9kZWNsYXJhdGlvbnMvQ29tcGxldGlvbkhhY2sxLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMjc4Mjc3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9kZWNsYXJhdGlvbnMvQ29tcGxldGlvbkhhY2sxLnR4dApAQCAtMCwwICsxLDMxIEBACitQc2lKYXZhRmlsZTpDb21wbGV0aW9uSGFjazEuamF2YQorICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgUHNpV2hpdGVTcGFjZSgnICcpCisgIFBzaUZpZWxkOnMKKyAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lFcnJvckVsZW1lbnQ6VW5leHBlY3RlZCB0b2tlbgorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgUHNpSmF2YVRva2VuOkxUKCc8JykKKyAgICAgICAgUHNpVHlwZVBhcmFtZXRlcjpYCisgICAgICAgICAgUHNpSWRlbnRpZmllcjpYKCdYJykKKyAgICAgICAgICBQc2lFbGVtZW50KEVYVEVORFNfQk9VTkRfTElTVCkKKyAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICBQc2lFcnJvckVsZW1lbnQ6Jz4nIGV4cGVjdGVkLgorICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgUHNpVHlwZUVsZW1lbnQ6U3RyaW5nCisgICAgICBQc2lKYXZhQ29kZVJlZmVyZW5jZUVsZW1lbnQ6U3RyaW5nCisgICAgICAgIFBzaUlkZW50aWZpZXI6U3RyaW5nKCdTdHJpbmcnKQorICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSWRlbnRpZmllcjpzKCdzJykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lKYXZhVG9rZW46RVEoJz0nKQorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUxpdGVyYWxFeHByZXNzaW9uOiIiCisgICAgICBQc2lKYXZhVG9rZW46U1RSSU5HX0xJVEVSQUwoJyIiJykKKyAgICBQc2lKYXZhVG9rZW46U0VNSUNPTE9OKCc7JykKKyAgUHNpV2hpdGVTcGFjZSgnICcpCisgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvZGVjbGFyYXRpb25zL0NvbXBsZXRpb25IYWNrMi50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL2RlY2xhcmF0aW9ucy9Db21wbGV0aW9uSGFjazIudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjljNDNiNmIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL2RlY2xhcmF0aW9ucy9Db21wbGV0aW9uSGFjazIudHh0CkBAIC0wLDAgKzEsMjUgQEAKK1BzaUphdmFGaWxlOkNvbXBsZXRpb25IYWNrMi5qYXZhCisgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgUHNpQW5ub3RhdGlvbk1ldGhvZDpmb28KKyAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpVHlwZUVsZW1lbnQ6U3RyaW5nCisgICAgICBQc2lKYXZhQ29kZVJlZmVyZW5jZUVsZW1lbnQ6U3RyaW5nCisgICAgICAgIFBzaUlkZW50aWZpZXI6U3RyaW5nKCdTdHJpbmcnKQorICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpRXJyb3JFbGVtZW50Oid7JyBvciAnOycgZXhwZWN0ZWQKKyAgICAgIFBzaUlkZW50aWZpZXI6ZGVmKCdkZWYnKQorICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9kZWNsYXJhdGlvbnMvQ29uc3RydWN0b3JCcmFja2V0cy50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL2RlY2xhcmF0aW9ucy9Db25zdHJ1Y3RvckJyYWNrZXRzLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42OTgzN2NlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9kZWNsYXJhdGlvbnMvQ29uc3RydWN0b3JCcmFja2V0cy50eHQKQEAgLTAsMCArMSwyNSBAQAorUHNpSmF2YUZpbGU6Q29uc3RydWN0b3JCcmFja2V0cy5qYXZhCisgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgUHNpTWV0aG9kOkEKKyAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpSWRlbnRpZmllcjpBKCdBJykKKyAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lFcnJvckVsZW1lbnQ6JzsnIGV4cGVjdGVkCisgICAgICBQc2lKYXZhVG9rZW46TEJSQUNLRVQoJ1snKQorICAgICAgUHNpSmF2YVRva2VuOlJCUkFDS0VUKCddJykKKyAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lDb2RlQmxvY2sKKyAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgUHNpV2hpdGVTcGFjZSgnICcpCisgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvZGVjbGFyYXRpb25zL0VtcHR5Qm9keTAudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9kZWNsYXJhdGlvbnMvRW1wdHlCb2R5MC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTgzMTY2OTMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL2RlY2xhcmF0aW9ucy9FbXB0eUJvZHkwLnR4dApAQCAtMCwwICsxLDQgQEAKK1BzaUphdmFGaWxlOkVtcHR5Qm9keTAuamF2YQorICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgUHNpV2hpdGVTcGFjZSgnICcpCisgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9kZWNsYXJhdGlvbnMvRW1wdHlCb2R5MS50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL2RlY2xhcmF0aW9ucy9FbXB0eUJvZHkxLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MDk4OGFkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9kZWNsYXJhdGlvbnMvRW1wdHlCb2R5MS50eHQKQEAgLTAsMCArMSw1IEBACitQc2lKYXZhRmlsZTpFbXB0eUJvZHkxLmphdmEKKyAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgIFBzaUVycm9yRWxlbWVudDonfScgZXhwZWN0ZWQKKyAgICA8ZW1wdHkgbGlzdD4KKyAgUHNpV2hpdGVTcGFjZSgnICcpClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9kZWNsYXJhdGlvbnMvRW1wdHlCb2R5Mi50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL2RlY2xhcmF0aW9ucy9FbXB0eUJvZHkyLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42M2E2NjQxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9kZWNsYXJhdGlvbnMvRW1wdHlCb2R5Mi50eHQKQEAgLTAsMCArMSwxNiBAQAorUHNpSmF2YUZpbGU6RW1wdHlCb2R5Mi5qYXZhCisgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgUHNpTW9kaWZpZXJMaXN0OkBOdWxsCisgICAgUHNpQW5ub3RhdGlvbgorICAgICAgUHNpSmF2YVRva2VuOkFUKCdAJykKKyAgICAgIFBzaUphdmFDb2RlUmVmZXJlbmNlRWxlbWVudDpOdWxsCisgICAgICAgIFBzaUlkZW50aWZpZXI6TnVsbCgnTnVsbCcpCisgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUFubm90YXRpb25QYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICBQc2lFcnJvckVsZW1lbnQ6SWRlbnRpZmllciBvciB0eXBlIGV4cGVjdGVkCisgICAgPGVtcHR5IGxpc3Q+CisgIFBzaVdoaXRlU3BhY2UoJyAnKQorICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL2RlY2xhcmF0aW9ucy9FbnVtQm9keTAudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9kZWNsYXJhdGlvbnMvRW51bUJvZHkwLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMjIxZDY1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9kZWNsYXJhdGlvbnMvRW51bUJvZHkwLnR4dApAQCAtMCwwICsxLDYgQEAKK1BzaUphdmFGaWxlOkVudW1Cb2R5MC5qYXZhCisgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgUHNpSmF2YVRva2VuOlNFTUlDT0xPTignOycpCisgIFBzaVdoaXRlU3BhY2UoJyAnKQorICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvZGVjbGFyYXRpb25zL0VudW1Cb2R5MS50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL2RlY2xhcmF0aW9ucy9FbnVtQm9keTEudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA0YjE2YmMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL2RlY2xhcmF0aW9ucy9FbnVtQm9keTEudHh0CkBAIC0wLDAgKzEsMjggQEAKK1BzaUphdmFGaWxlOkVudW1Cb2R5MS5qYXZhCisgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgUHNpRW51bUNvbnN0YW50OlJFRAorICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUlkZW50aWZpZXI6UkVEKCdSRUQnKQorICAgIFBzaUV4cHJlc3Npb25MaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgUHNpSmF2YVRva2VuOkNPTU1BKCcsJykKKyAgUHNpV2hpdGVTcGFjZSgnICcpCisgIFBzaUVudW1Db25zdGFudDpHUkVFTgorICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUlkZW50aWZpZXI6R1JFRU4oJ0dSRUVOJykKKyAgICBQc2lFeHByZXNzaW9uTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgIFBzaUphdmFUb2tlbjpDT01NQSgnLCcpCisgIFBzaVdoaXRlU3BhY2UoJyAnKQorICBQc2lFbnVtQ29uc3RhbnQ6QkxVRQorICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUlkZW50aWZpZXI6QkxVRSgnQkxVRScpCisgICAgUHNpRXhwcmVzc2lvbkxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICBQc2lKYXZhVG9rZW46U0VNSUNPTE9OKCc7JykKKyAgUHNpV2hpdGVTcGFjZSgnICcpCisgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvZGVjbGFyYXRpb25zL0VudW1Cb2R5Mi50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL2RlY2xhcmF0aW9ucy9FbnVtQm9keTIudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBlNjQ3MTMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL2RlY2xhcmF0aW9ucy9FbnVtQm9keTIudHh0CkBAIC0wLDAgKzEsMjcgQEAKK1BzaUphdmFGaWxlOkVudW1Cb2R5Mi5qYXZhCisgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgUHNpRW51bUNvbnN0YW50OlJFRAorICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUlkZW50aWZpZXI6UkVEKCdSRUQnKQorICAgIFBzaUV4cHJlc3Npb25MaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgUHNpSmF2YVRva2VuOkNPTU1BKCcsJykKKyAgUHNpV2hpdGVTcGFjZSgnICcpCisgIFBzaUVudW1Db25zdGFudDpHUkVFTgorICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUlkZW50aWZpZXI6R1JFRU4oJ0dSRUVOJykKKyAgICBQc2lFeHByZXNzaW9uTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgIFBzaUphdmFUb2tlbjpDT01NQSgnLCcpCisgIFBzaVdoaXRlU3BhY2UoJyAnKQorICBQc2lFbnVtQ29uc3RhbnQ6QkxVRQorICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUlkZW50aWZpZXI6QkxVRSgnQkxVRScpCisgICAgUHNpRXhwcmVzc2lvbkxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9kZWNsYXJhdGlvbnMvRW51bUJvZHkzLnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvZGVjbGFyYXRpb25zL0VudW1Cb2R5My50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWEwZDQ1NgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvZGVjbGFyYXRpb25zL0VudW1Cb2R5My50eHQKQEAgLTAsMCArMSwyOCBAQAorUHNpSmF2YUZpbGU6RW51bUJvZHkzLmphdmEKKyAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgIFBzaVdoaXRlU3BhY2UoJyAnKQorICBQc2lFbnVtQ29uc3RhbnQ6UkVECisgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpSWRlbnRpZmllcjpSRUQoJ1JFRCcpCisgICAgUHNpRXhwcmVzc2lvbkxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICBQc2lKYXZhVG9rZW46Q09NTUEoJywnKQorICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgUHNpRW51bUNvbnN0YW50OkdSRUVOCisgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpSWRlbnRpZmllcjpHUkVFTignR1JFRU4nKQorICAgIFBzaUV4cHJlc3Npb25MaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgUHNpSmF2YVRva2VuOkNPTU1BKCcsJykKKyAgUHNpV2hpdGVTcGFjZSgnICcpCisgIFBzaUVudW1Db25zdGFudDpCTFVFCisgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpSWRlbnRpZmllcjpCTFVFKCdCTFVFJykKKyAgICBQc2lFeHByZXNzaW9uTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgIFBzaUphdmFUb2tlbjpDT01NQSgnLCcpCisgIFBzaVdoaXRlU3BhY2UoJyAnKQorICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL2RlY2xhcmF0aW9ucy9FbnVtQm9keTQudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9kZWNsYXJhdGlvbnMvRW51bUJvZHk0LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMjBlYzkwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9kZWNsYXJhdGlvbnMvRW51bUJvZHk0LnR4dApAQCAtMCwwICsxLDM3IEBACitQc2lKYXZhRmlsZTpFbnVtQm9keTQuamF2YQorICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgUHNpV2hpdGVTcGFjZSgnICcpCisgIFBzaUVudW1Db25zdGFudDpSRUQKKyAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lJZGVudGlmaWVyOlJFRCgnUkVEJykKKyAgICBQc2lFeHByZXNzaW9uTGlzdAorICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgIFBzaUxpdGVyYWxFeHByZXNzaW9uOjAKKyAgICAgICAgUHNpSmF2YVRva2VuOklOVEVHRVJfTElURVJBTCgnMCcpCisgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICBQc2lKYXZhVG9rZW46Q09NTUEoJywnKQorICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgUHNpRW51bUNvbnN0YW50OkdSRUVOCisgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpSWRlbnRpZmllcjpHUkVFTignR1JFRU4nKQorICAgIFBzaUV4cHJlc3Npb25MaXN0CisgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgUHNpTGl0ZXJhbEV4cHJlc3Npb246MQorICAgICAgICBQc2lKYXZhVG9rZW46SU5URUdFUl9MSVRFUkFMKCcxJykKKyAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgIFBzaUphdmFUb2tlbjpDT01NQSgnLCcpCisgIFBzaVdoaXRlU3BhY2UoJyAnKQorICBQc2lFbnVtQ29uc3RhbnQ6QkxVRQorICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUlkZW50aWZpZXI6QkxVRSgnQkxVRScpCisgICAgUHNpRXhwcmVzc2lvbkxpc3QKKyAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICBQc2lMaXRlcmFsRXhwcmVzc2lvbjoyCisgICAgICAgIFBzaUphdmFUb2tlbjpJTlRFR0VSX0xJVEVSQUwoJzInKQorICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgUHNpSmF2YVRva2VuOlNFTUlDT0xPTignOycpCisgIFBzaVdoaXRlU3BhY2UoJyAnKQorICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL2RlY2xhcmF0aW9ucy9FbnVtQm9keTUudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9kZWNsYXJhdGlvbnMvRW51bUJvZHk1LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NzNmMzQ3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9kZWNsYXJhdGlvbnMvRW51bUJvZHk1LnR4dApAQCAtMCwwICsxLDIyIEBACitQc2lKYXZhRmlsZTpFbnVtQm9keTUuamF2YQorICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgUHNpV2hpdGVTcGFjZSgnICcpCisgIFBzaUVudW1Db25zdGFudDpBCisgICAgUHNpTW9kaWZpZXJMaXN0OkBBTk5PVEFUSU9OCisgICAgICBQc2lBbm5vdGF0aW9uCisgICAgICAgIFBzaUphdmFUb2tlbjpBVCgnQCcpCisgICAgICAgIFBzaUphdmFDb2RlUmVmZXJlbmNlRWxlbWVudDpBTk5PVEFUSU9OCisgICAgICAgICAgUHNpSWRlbnRpZmllcjpBTk5PVEFUSU9OKCdBTk5PVEFUSU9OJykKKyAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgUHNpQW5ub3RhdGlvblBhcmFtZXRlckxpc3QKKyAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lJZGVudGlmaWVyOkEoJ0EnKQorICAgIFBzaUV4cHJlc3Npb25MaXN0CisgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgUHNpTGl0ZXJhbEV4cHJlc3Npb246MTAKKyAgICAgICAgUHNpSmF2YVRva2VuOklOVEVHRVJfTElURVJBTCgnMTAnKQorICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgUHNpV2hpdGVTcGFjZSgnICcpCisgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvZGVjbGFyYXRpb25zL0VudW1Cb2R5Ni50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL2RlY2xhcmF0aW9ucy9FbnVtQm9keTYudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQwMTk5ZDUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL2RlY2xhcmF0aW9ucy9FbnVtQm9keTYudHh0CkBAIC0wLDAgKzEsNDUgQEAKK1BzaUphdmFGaWxlOkVudW1Cb2R5Ni5qYXZhCisgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgUHNpRW51bUNvbnN0YW50OlJFRAorICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUlkZW50aWZpZXI6UkVEKCdSRUQnKQorICAgIFBzaUV4cHJlc3Npb25MaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgUHNpSmF2YVRva2VuOkNPTU1BKCcsJykKKyAgUHNpV2hpdGVTcGFjZSgnICcpCisgIFBzaUVudW1Db25zdGFudDpHUkVFTgorICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUlkZW50aWZpZXI6R1JFRU4oJ0dSRUVOJykKKyAgICBQc2lFeHByZXNzaW9uTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgIFBzaUphdmFUb2tlbjpDT01NQSgnLCcpCisgIFBzaVdoaXRlU3BhY2UoJyAnKQorICBQc2lFbnVtQ29uc3RhbnQ6QkxVRQorICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUlkZW50aWZpZXI6QkxVRSgnQkxVRScpCisgICAgUHNpRXhwcmVzc2lvbkxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICBQc2lFcnJvckVsZW1lbnQ6JywnIG9yICc7JyBleHBlY3RlZAorICAgIDxlbXB0eSBsaXN0PgorICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICBQc2lNZXRob2Q6T3VyRW51bQorICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lJZGVudGlmaWVyOk91ckVudW0oJ091ckVudW0nKQorICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUNvZGVCbG9jaworICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgUHNpV2hpdGVTcGFjZSgnICcpCisgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvZGVjbGFyYXRpb25zL0VudW1TbWFydFR5cGVDb21wbGV0aW9uLnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvZGVjbGFyYXRpb25zL0VudW1TbWFydFR5cGVDb21wbGV0aW9uLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMDJmNjRkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9kZWNsYXJhdGlvbnMvRW51bVNtYXJ0VHlwZUNvbXBsZXRpb24udHh0CkBAIC0wLDAgKzEsMTQzIEBACitQc2lKYXZhRmlsZTpFbnVtU21hcnRUeXBlQ29tcGxldGlvbi5qYXZhCisgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgUHNpQ2xhc3M6VGltZVRyYXZlbAorICAgIFBzaU1vZGlmaWVyTGlzdDpAUHJlbGltaW5hcnkoQS5CCisjKSBwdWJsaWMKKyAgICAgIFBzaUFubm90YXRpb24KKyAgICAgICAgUHNpSmF2YVRva2VuOkFUKCdAJykKKyAgICAgICAgUHNpSmF2YUNvZGVSZWZlcmVuY2VFbGVtZW50OlByZWxpbWluYXJ5CisgICAgICAgICAgUHNpSWRlbnRpZmllcjpQcmVsaW1pbmFyeSgnUHJlbGltaW5hcnknKQorICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICBQc2lBbm5vdGF0aW9uUGFyYW1ldGVyTGlzdAorICAgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgICAgUHNpTmFtZVZhbHVlUGFpcgorICAgICAgICAgICAgUHNpUmVmZXJlbmNlRXhwcmVzc2lvbjpBLkIKKyAgICAgICAgICAgICAgUHNpUmVmZXJlbmNlRXhwcmVzc2lvbjpBCisgICAgICAgICAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgICAgICAgUHNpSWRlbnRpZmllcjpBKCdBJykKKyAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOkRPVCgnLicpCisgICAgICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICAgICAgUHNpSWRlbnRpZmllcjpCKCdCJykKKyAgICAgICAgICBQc2lFcnJvckVsZW1lbnQ6JywnIG9yICcpJyBleHBlY3RlZAorICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgUHNpV2hpdGVTcGFjZSgnXG4nKQorICAgICAgICAgIFBzaUVsZW1lbnQoQkFEX0NIQVJBQ1RFUikoJyMnKQorICAgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUtleXdvcmQ6cHVibGljKCdwdWJsaWMnKQorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUtleXdvcmQ6Y2xhc3MoJ2NsYXNzJykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lJZGVudGlmaWVyOlRpbWVUcmF2ZWwoJ1RpbWVUcmF2ZWwnKQorICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgUHNpV2hpdGVTcGFjZSgnXG4gICcpCisgIFBzaUNsYXNzOlRpbWVUcmF2ZWwKKyAgICBQc2lNb2RpZmllckxpc3Q6QFByZWxpbWluYXJ5KGE9QS5CCisjKSBwdWJsaWMKKyAgICAgIFBzaUFubm90YXRpb24KKyAgICAgICAgUHNpSmF2YVRva2VuOkFUKCdAJykKKyAgICAgICAgUHNpSmF2YUNvZGVSZWZlcmVuY2VFbGVtZW50OlByZWxpbWluYXJ5CisgICAgICAgICAgUHNpSWRlbnRpZmllcjpQcmVsaW1pbmFyeSgnUHJlbGltaW5hcnknKQorICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICBQc2lBbm5vdGF0aW9uUGFyYW1ldGVyTGlzdAorICAgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgICAgUHNpTmFtZVZhbHVlUGFpcgorICAgICAgICAgICAgUHNpSWRlbnRpZmllcjphKCdhJykKKyAgICAgICAgICAgIFBzaUphdmFUb2tlbjpFUSgnPScpCisgICAgICAgICAgICBQc2lSZWZlcmVuY2VFeHByZXNzaW9uOkEuQgorICAgICAgICAgICAgICBQc2lSZWZlcmVuY2VFeHByZXNzaW9uOkEKKyAgICAgICAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICAgICAgICBQc2lJZGVudGlmaWVyOkEoJ0EnKQorICAgICAgICAgICAgICBQc2lKYXZhVG9rZW46RE9UKCcuJykKKyAgICAgICAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgICAgICBQc2lJZGVudGlmaWVyOkIoJ0InKQorICAgICAgICAgIFBzaUVycm9yRWxlbWVudDonLCcgb3IgJyknIGV4cGVjdGVkCisgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICBQc2lXaGl0ZVNwYWNlKCdcbicpCisgICAgICAgICAgUHNpRWxlbWVudChCQURfQ0hBUkFDVEVSKSgnIycpCisgICAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpS2V5d29yZDpwdWJsaWMoJ3B1YmxpYycpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpS2V5d29yZDpjbGFzcygnY2xhc3MnKQorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUlkZW50aWZpZXI6VGltZVRyYXZlbCgnVGltZVRyYXZlbCcpCisgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICBQc2lXaGl0ZVNwYWNlKCdcbiAgJykKKyAgUHNpQ2xhc3M6VGltZVRyYXZlbAorICAgIFBzaU1vZGlmaWVyTGlzdDpAUHJlbGltaW5hcnkoYT1BLkIKKyMsIGI9YykgcHVibGljCisgICAgICBQc2lBbm5vdGF0aW9uCisgICAgICAgIFBzaUphdmFUb2tlbjpBVCgnQCcpCisgICAgICAgIFBzaUphdmFDb2RlUmVmZXJlbmNlRWxlbWVudDpQcmVsaW1pbmFyeQorICAgICAgICAgIFBzaUlkZW50aWZpZXI6UHJlbGltaW5hcnkoJ1ByZWxpbWluYXJ5JykKKyAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgUHNpQW5ub3RhdGlvblBhcmFtZXRlckxpc3QKKyAgICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICAgIFBzaU5hbWVWYWx1ZVBhaXIKKyAgICAgICAgICAgIFBzaUlkZW50aWZpZXI6YSgnYScpCisgICAgICAgICAgICBQc2lKYXZhVG9rZW46RVEoJz0nKQorICAgICAgICAgICAgUHNpUmVmZXJlbmNlRXhwcmVzc2lvbjpBLkIKKyAgICAgICAgICAgICAgUHNpUmVmZXJlbmNlRXhwcmVzc2lvbjpBCisgICAgICAgICAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgICAgICAgUHNpSWRlbnRpZmllcjpBKCdBJykKKyAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOkRPVCgnLicpCisgICAgICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICAgICAgUHNpSWRlbnRpZmllcjpCKCdCJykKKyAgICAgICAgICBQc2lFcnJvckVsZW1lbnQ6JywnIG9yICcpJyBleHBlY3RlZAorICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgUHNpV2hpdGVTcGFjZSgnXG4nKQorICAgICAgICAgIFBzaUVsZW1lbnQoQkFEX0NIQVJBQ1RFUikoJyMnKQorICAgICAgICAgIFBzaUphdmFUb2tlbjpDT01NQSgnLCcpCisgICAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgICAgUHNpTmFtZVZhbHVlUGFpcgorICAgICAgICAgICAgUHNpSWRlbnRpZmllcjpiKCdiJykKKyAgICAgICAgICAgIFBzaUphdmFUb2tlbjpFUSgnPScpCisgICAgICAgICAgICBQc2lSZWZlcmVuY2VFeHByZXNzaW9uOmMKKyAgICAgICAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgICAgICBQc2lJZGVudGlmaWVyOmMoJ2MnKQorICAgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUtleXdvcmQ6cHVibGljKCdwdWJsaWMnKQorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUtleXdvcmQ6Y2xhc3MoJ2NsYXNzJykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lJZGVudGlmaWVyOlRpbWVUcmF2ZWwoJ1RpbWVUcmF2ZWwnKQorICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgUHNpV2hpdGVTcGFjZSgnICcpCisgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvZGVjbGFyYXRpb25zL0VudW1XaXRoSW5pdGlhbGl6ZWRDb25zdGFudHMudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9kZWNsYXJhdGlvbnMvRW51bVdpdGhJbml0aWFsaXplZENvbnN0YW50cy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjg3YjU1MgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvZGVjbGFyYXRpb25zL0VudW1XaXRoSW5pdGlhbGl6ZWRDb25zdGFudHMudHh0CkBAIC0wLDAgKzEsNTEgQEAKK1BzaUphdmFGaWxlOkVudW1XaXRoSW5pdGlhbGl6ZWRDb25zdGFudHMuamF2YQorICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgUHNpV2hpdGVTcGFjZSgnICcpCisgIFBzaUVudW1Db25zdGFudDpBCisgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpSWRlbnRpZmllcjpBKCdBJykKKyAgICBQc2lFeHByZXNzaW9uTGlzdAorICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgIFBzaUxpdGVyYWxFeHByZXNzaW9uOjEwCisgICAgICAgIFBzaUphdmFUb2tlbjpJTlRFR0VSX0xJVEVSQUwoJzEwJykKKyAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpQW5vbnltb3VzQ2xhc3MgKFBzaUVudW1Db25zdGFudEluaXRpYWxpemVySW1wbCkpOgorICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICBQc2lKYXZhVG9rZW46Q09NTUEoJywnKQorICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICBQc2lFbnVtQ29uc3RhbnQ6QgorICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUlkZW50aWZpZXI6QignQicpCisgICAgUHNpRXhwcmVzc2lvbkxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUFub255bW91c0NsYXNzIChQc2lFbnVtQ29uc3RhbnRJbml0aWFsaXplckltcGwpKToKKyAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lNZXRob2Q6bWV0aG9kCisgICAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICBQc2lJZGVudGlmaWVyOm1ldGhvZCgnbWV0aG9kJykKKyAgICAgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9kZWNsYXJhdGlvbnMvRW51bVdpdGhvdXRDb25zdGFudHMudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9kZWNsYXJhdGlvbnMvRW51bVdpdGhvdXRDb25zdGFudHMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc1YjBhNjYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL2RlY2xhcmF0aW9ucy9FbnVtV2l0aG91dENvbnN0YW50cy50eHQKQEAgLTAsMCArMSwxNyBAQAorUHNpSmF2YUZpbGU6RW51bVdpdGhvdXRDb25zdGFudHMuamF2YQorICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgUHNpRXJyb3JFbGVtZW50Oic7JyBleHBlY3RlZAorICAgIDxlbXB0eSBsaXN0PgorICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgUHNpTW9kaWZpZXJMaXN0OnByaXZhdGUKKyAgICBQc2lLZXl3b3JkOnByaXZhdGUoJ3ByaXZhdGUnKQorICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgUHNpVHlwZUVsZW1lbnQ6QQorICAgIFBzaUphdmFDb2RlUmVmZXJlbmNlRWxlbWVudDpBCisgICAgICBQc2lJZGVudGlmaWVyOkEoJ0EnKQorICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgUHNpRXJyb3JFbGVtZW50OklkZW50aWZpZXIgZXhwZWN0ZWQKKyAgICA8ZW1wdHkgbGlzdD4KKyAgUHNpV2hpdGVTcGFjZSgnICcpCisgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvZGVjbGFyYXRpb25zL0Vycm9ycy50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL2RlY2xhcmF0aW9ucy9FcnJvcnMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYwOTM3OWYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL2RlY2xhcmF0aW9ucy9FcnJvcnMudHh0CkBAIC0wLDAgKzEsNDUgQEAKK1BzaUphdmFGaWxlOkVycm9ycy5qYXZhCisgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgUHNpTW9kaWZpZXJMaXN0OnB1YmxpYyBzdGF0aWMKKyAgICBQc2lLZXl3b3JkOnB1YmxpYygncHVibGljJykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lLZXl3b3JkOnN0YXRpYygnc3RhdGljJykKKyAgUHNpV2hpdGVTcGFjZSgnICcpCisgIFBzaUVycm9yRWxlbWVudDpVbmV4cGVjdGVkIHRva2VuCisgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgIFBzaUphdmFUb2tlbjpMVCgnPCcpCisgICAgICBQc2lUeXBlUGFyYW1ldGVyOmVycm9yCisgICAgICAgIFBzaUlkZW50aWZpZXI6ZXJyb3IoJ2Vycm9yJykKKyAgICAgICAgUHNpRWxlbWVudChFWFRFTkRTX0JPVU5EX0xJU1QpCisgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lFcnJvckVsZW1lbnQ6Jz4nIGV4cGVjdGVkLgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgUHNpV2hpdGVTcGFjZSgnICcpCisgIFBzaVR5cGVFbGVtZW50OmRlc2NyCisgICAgUHNpSmF2YUNvZGVSZWZlcmVuY2VFbGVtZW50OmRlc2NyCisgICAgICBQc2lJZGVudGlmaWVyOmRlc2NyKCdkZXNjcicpCisgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICBQc2lFcnJvckVsZW1lbnQ6SWRlbnRpZmllciBleHBlY3RlZAorICAgIDxlbXB0eSBsaXN0PgorICBQc2lFcnJvckVsZW1lbnQ6VW5leHBlY3RlZCB0b2tlbgorICAgIFBzaUphdmFUb2tlbjpFUSgnPScpCisgICAgUHNpSmF2YVRva2VuOlNUUklOR19MSVRFUkFMKCciMiInKQorICAgIFBzaUphdmFUb2tlbjpHVCgnPicpCisgIFBzaUZpZWxkOmYxCisgICAgUHNpTW9kaWZpZXJMaXN0OnByb3RlY3RlZAorICAgICAgUHNpS2V5d29yZDpwcm90ZWN0ZWQoJ3Byb3RlY3RlZCcpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpVHlwZUVsZW1lbnQ6aW50CisgICAgICBQc2lLZXl3b3JkOmludCgnaW50JykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lJZGVudGlmaWVyOmYxKCdmMScpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSmF2YVRva2VuOkVRKCc9JykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lMaXRlcmFsRXhwcmVzc2lvbjowCisgICAgICBQc2lKYXZhVG9rZW46SU5URUdFUl9MSVRFUkFMKCcwJykKKyAgICBQc2lKYXZhVG9rZW46U0VNSUNPTE9OKCc7JykKKyAgUHNpV2hpdGVTcGFjZSgnICcpCisgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9kZWNsYXJhdGlvbnMvRXh0ZW5zaW9uLnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvZGVjbGFyYXRpb25zL0V4dGVuc2lvbi50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGU4NzZhNAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvZGVjbGFyYXRpb25zL0V4dGVuc2lvbi50eHQKQEAgLTAsMCArMSwzOSBAQAorUHNpSmF2YUZpbGU6RXh0ZW5zaW9uLmphdmEKKyAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgIFBzaVdoaXRlU3BhY2UoJyAnKQorICBQc2lNZXRob2Q6ZgorICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lUeXBlRWxlbWVudDppbnQKKyAgICAgIFBzaUtleXdvcmQ6aW50KCdpbnQnKQorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUlkZW50aWZpZXI6ZignZicpCisgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgUHNpS2V5d29yZDp0aHJvd3MoJ3Rocm93cycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUphdmFDb2RlUmVmZXJlbmNlRWxlbWVudDpFCisgICAgICAgIFBzaUlkZW50aWZpZXI6RSgnRScpCisgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lLZXl3b3JkOmRlZmF1bHQoJ2RlZmF1bHQnKQorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUNvZGVCbG9jaworICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaVJldHVyblN0YXRlbWVudAorICAgICAgICBQc2lLZXl3b3JkOnJldHVybigncmV0dXJuJykKKyAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgIFBzaUxpdGVyYWxFeHByZXNzaW9uOjQyCisgICAgICAgICAgUHNpSmF2YVRva2VuOklOVEVHRVJfTElURVJBTCgnNDInKQorICAgICAgICBQc2lKYXZhVG9rZW46U0VNSUNPTE9OKCc7JykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgIFBzaVdoaXRlU3BhY2UoJyAnKQorICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvZGVjbGFyYXRpb25zL0V4dHJhU2VtaWNvbG9uLnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvZGVjbGFyYXRpb25zL0V4dHJhU2VtaWNvbG9uLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNDQ0ZGI1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9kZWNsYXJhdGlvbnMvRXh0cmFTZW1pY29sb24udHh0CkBAIC0wLDAgKzEsMjIgQEAKK1BzaUphdmFGaWxlOkV4dHJhU2VtaWNvbG9uLmphdmEKKyAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgIFBzaVdoaXRlU3BhY2UoJyAnKQorICBQc2lDbGFzczpDCisgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpS2V5d29yZDpjbGFzcygnY2xhc3MnKQorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUlkZW50aWZpZXI6QygnQycpCisgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICBQc2lKYXZhVG9rZW46U0VNSUNPTE9OKCc7JykKKyAgUHNpV2hpdGVTcGFjZSgnICcpCisgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9kZWNsYXJhdGlvbnMvRmllbGRNdWx0aS50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL2RlY2xhcmF0aW9ucy9GaWVsZE11bHRpLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMjEzOGQ2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9kZWNsYXJhdGlvbnMvRmllbGRNdWx0aS50eHQKQEAgLTAsMCArMSwyMiBAQAorUHNpSmF2YUZpbGU6RmllbGRNdWx0aS5qYXZhCisgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgUHNpRmllbGQ6ZmllbGQxCisgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpVHlwZUVsZW1lbnQ6aW50CisgICAgICBQc2lLZXl3b3JkOmludCgnaW50JykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lJZGVudGlmaWVyOmZpZWxkMSgnZmllbGQxJykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lKYXZhVG9rZW46RVEoJz0nKQorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUxpdGVyYWxFeHByZXNzaW9uOjAKKyAgICAgIFBzaUphdmFUb2tlbjpJTlRFR0VSX0xJVEVSQUwoJzAnKQorICBQc2lKYXZhVG9rZW46Q09NTUEoJywnKQorICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgUHNpRmllbGQ6ZmllbGQyCisgICAgUHNpSWRlbnRpZmllcjpmaWVsZDIoJ2ZpZWxkMicpCisgICAgUHNpSmF2YVRva2VuOlNFTUlDT0xPTignOycpCisgIFBzaVdoaXRlU3BhY2UoJyAnKQorICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvZGVjbGFyYXRpb25zL0ZpZWxkU2ltcGxlLnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvZGVjbGFyYXRpb25zL0ZpZWxkU2ltcGxlLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41OWRjMjhmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9kZWNsYXJhdGlvbnMvRmllbGRTaW1wbGUudHh0CkBAIC0wLDAgKzEsMTggQEAKK1BzaUphdmFGaWxlOkZpZWxkU2ltcGxlLmphdmEKKyAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgIFBzaVdoaXRlU3BhY2UoJyAnKQorICBQc2lGaWVsZDpmaWVsZAorICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVR5cGVFbGVtZW50OmludAorICAgICAgUHNpS2V5d29yZDppbnQoJ2ludCcpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSWRlbnRpZmllcjpmaWVsZCgnZmllbGQnKQorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUphdmFUb2tlbjpFUSgnPScpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpTGl0ZXJhbEV4cHJlc3Npb246MAorICAgICAgUHNpSmF2YVRva2VuOklOVEVHRVJfTElURVJBTCgnMCcpCisgICAgUHNpSmF2YVRva2VuOlNFTUlDT0xPTignOycpCisgIFBzaVdoaXRlU3BhY2UoJyAnKQorICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvZGVjbGFyYXRpb25zL0dlbmVyaWNNZXRob2QudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9kZWNsYXJhdGlvbnMvR2VuZXJpY01ldGhvZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzUwNGYzNgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvZGVjbGFyYXRpb25zL0dlbmVyaWNNZXRob2QudHh0CkBAIC0wLDAgKzEsOTEgQEAKK1BzaUphdmFGaWxlOkdlbmVyaWNNZXRob2QuamF2YQorICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgUHNpV2hpdGVTcGFjZSgnICcpCisgIFBzaU1ldGhvZDp0ZXN0CisgICAgUHNpTW9kaWZpZXJMaXN0OnB1YmxpYyBzdGF0aWMKKyAgICAgIFBzaUtleXdvcmQ6cHVibGljKCdwdWJsaWMnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lLZXl3b3JkOnN0YXRpYygnc3RhdGljJykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgUHNpSmF2YVRva2VuOkxUKCc8JykKKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXI6RQorICAgICAgICBQc2lJZGVudGlmaWVyOkUoJ0UnKQorICAgICAgICBQc2lFbGVtZW50KEVYVEVORFNfQk9VTkRfTElTVCkKKyAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUphdmFUb2tlbjpHVCgnPicpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSWRlbnRpZmllcjp0ZXN0KCd0ZXN0JykKKyAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lKYXZhVG9rZW46U0VNSUNPTE9OKCc7JykKKyAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgUHNpTWV0aG9kOnRlc3QxCisgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgIFBzaUphdmFUb2tlbjpMVCgnPCcpCisgICAgICBQc2lUeXBlUGFyYW1ldGVyOkUKKyAgICAgICAgUHNpSWRlbnRpZmllcjpFKCdFJykKKyAgICAgICAgUHNpRWxlbWVudChFWFRFTkRTX0JPVU5EX0xJU1QpCisgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lKYXZhVG9rZW46R1QoJz4nKQorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSWRlbnRpZmllcjp0ZXN0MSgndGVzdDEnKQorICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUphdmFUb2tlbjpTRU1JQ09MT04oJzsnKQorICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICBQc2lNZXRob2Q6dGVzdDIKKyAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgUHNpSmF2YVRva2VuOkxUKCc8JykKKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXI6RTEKKyAgICAgICAgUHNpSWRlbnRpZmllcjpFMSgnRTEnKQorICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgICAgUHNpRWxlbWVudChFWFRFTkRTX0JPVU5EX0xJU1QpCisgICAgICAgICAgUHNpS2V5d29yZDpleHRlbmRzKCdleHRlbmRzJykKKyAgICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgICAgICBQc2lKYXZhQ29kZVJlZmVyZW5jZUVsZW1lbnQ6SW50ZWdlcgorICAgICAgICAgICAgUHNpSWRlbnRpZmllcjpJbnRlZ2VyKCdJbnRlZ2VyJykKKyAgICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lKYXZhVG9rZW46Q09NTUEoJywnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lUeXBlUGFyYW1ldGVyOkUyCisgICAgICAgIFBzaUlkZW50aWZpZXI6RTIoJ0UyJykKKyAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgIFBzaUVsZW1lbnQoRVhURU5EU19CT1VORF9MSVNUKQorICAgICAgICAgIFBzaUtleXdvcmQ6ZXh0ZW5kcygnZXh0ZW5kcycpCisgICAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgICAgUHNpSmF2YUNvZGVSZWZlcmVuY2VFbGVtZW50OlJ1bm5hYmxlCisgICAgICAgICAgICBQc2lJZGVudGlmaWVyOlJ1bm5hYmxlKCdSdW5uYWJsZScpCisgICAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpSmF2YVRva2VuOkdUKCc+JykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lUeXBlRWxlbWVudDpTdHJpbmcKKyAgICAgIFBzaUphdmFDb2RlUmVmZXJlbmNlRWxlbWVudDpTdHJpbmcKKyAgICAgICAgUHNpSWRlbnRpZmllcjpTdHJpbmcoJ1N0cmluZycpCisgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lJZGVudGlmaWVyOnRlc3QyKCd0ZXN0MicpCisgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpSmF2YVRva2VuOlNFTUlDT0xPTignOycpCisgIFBzaVdoaXRlU3BhY2UoJyAnKQorICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvZGVjbGFyYXRpb25zL0dlbmVyaWNNZXRob2RFcnJvcnMudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9kZWNsYXJhdGlvbnMvR2VuZXJpY01ldGhvZEVycm9ycy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWJlNTA0NwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvZGVjbGFyYXRpb25zL0dlbmVyaWNNZXRob2RFcnJvcnMudHh0CkBAIC0wLDAgKzEsNDMgQEAKK1BzaUphdmFGaWxlOkdlbmVyaWNNZXRob2RFcnJvcnMuamF2YQorICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgUHNpV2hpdGVTcGFjZSgnICcpCisgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICA8ZW1wdHkgbGlzdD4KKyAgUHNpRXJyb3JFbGVtZW50OlVuZXhwZWN0ZWQgdG9rZW4KKyAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgUHNpSmF2YVRva2VuOkxUKCc8JykKKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXI6RXJyb3IKKyAgICAgICAgUHNpSWRlbnRpZmllcjpFcnJvcignRXJyb3InKQorICAgICAgICBQc2lFbGVtZW50KEVYVEVORFNfQk9VTkRfTElTVCkKKyAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUVycm9yRWxlbWVudDonPicgZXhwZWN0ZWQuCisgICAgICAgIDxlbXB0eSBsaXN0PgorICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgUHNpVHlwZUVsZW1lbnQ6c3NzCisgICAgUHNpSmF2YUNvZGVSZWZlcmVuY2VFbGVtZW50OnNzcworICAgICAgUHNpSWRlbnRpZmllcjpzc3MoJ3NzcycpCisgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICBQc2lFcnJvckVsZW1lbnQ6SWRlbnRpZmllciBleHBlY3RlZAorICAgIDxlbXB0eSBsaXN0PgorICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgUHNpRXJyb3JFbGVtZW50OlVuZXhwZWN0ZWQgdG9rZW4KKyAgICBQc2lKYXZhVG9rZW46RElWKCcvJykKKyAgICBQc2lKYXZhVG9rZW46R1QoJz4nKQorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUphdmFDb2RlUmVmZXJlbmNlRWxlbWVudDp0ZXN0IDxlcnJvcj4KKyAgICAgIFBzaUlkZW50aWZpZXI6dGVzdCgndGVzdCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgUHNpSmF2YVRva2VuOkxUKCc8JykKKyAgICAgICAgUHNpVHlwZUVsZW1lbnQ6ZXJyb3IKKyAgICAgICAgICBQc2lKYXZhQ29kZVJlZmVyZW5jZUVsZW1lbnQ6ZXJyb3IKKyAgICAgICAgICAgIFBzaUlkZW50aWZpZXI6ZXJyb3IoJ2Vycm9yJykKKyAgICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgIFBzaUphdmFUb2tlbjpHVCgnPicpCisgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICBQc2lKYXZhVG9rZW46U0VNSUNPTE9OKCc7JykKKyAgUHNpV2hpdGVTcGFjZSgnICcpCisgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvZGVjbGFyYXRpb25zL0luY29tcGxldGVBbm5vdGF0aW9uLnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvZGVjbGFyYXRpb25zL0luY29tcGxldGVBbm5vdGF0aW9uLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NTY3YWFiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9kZWNsYXJhdGlvbnMvSW5jb21wbGV0ZUFubm90YXRpb24udHh0CkBAIC0wLDAgKzEsNTEgQEAKK1BzaUphdmFGaWxlOkluY29tcGxldGVBbm5vdGF0aW9uLmphdmEKKyAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgIFBzaVdoaXRlU3BhY2UoJyAnKQorICBQc2lDbGFzczpGb28KKyAgICBQc2lNb2RpZmllckxpc3Q6cHVibGljCisgICAgICBQc2lLZXl3b3JkOnB1YmxpYygncHVibGljJykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lLZXl3b3JkOmNsYXNzKCdjbGFzcycpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSWRlbnRpZmllcjpGb28oJ0ZvbycpCisgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaU1ldGhvZDp0ZXN0U29tZXRoaW5nCisgICAgICBQc2lNb2RpZmllckxpc3Q6cHVibGljCisgICAgICAgIFBzaUtleXdvcmQ6cHVibGljKCdwdWJsaWMnKQorICAgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjp0ZXN0U29tZXRoaW5nKCd0ZXN0U29tZXRoaW5nJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lKYXZhVG9rZW46U0VNSUNPTE9OKCc7JykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lNb2RpZmllckxpc3Q6QE51bGwKKyAgICAgIFBzaUFubm90YXRpb24KKyAgICAgICAgUHNpSmF2YVRva2VuOkFUKCdAJykKKyAgICAgICAgUHNpSmF2YUNvZGVSZWZlcmVuY2VFbGVtZW50Ok51bGwKKyAgICAgICAgICBQc2lJZGVudGlmaWVyOk51bGwoJ051bGwnKQorICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICBQc2lBbm5vdGF0aW9uUGFyYW1ldGVyTGlzdAorICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUVycm9yRWxlbWVudDpJZGVudGlmaWVyIG9yIHR5cGUgZXhwZWN0ZWQKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9kZWNsYXJhdGlvbnMvTWV0aG9kTm9ybWFsMC50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL2RlY2xhcmF0aW9ucy9NZXRob2ROb3JtYWwwLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jOWY5YWQ1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9kZWNsYXJhdGlvbnMvTWV0aG9kTm9ybWFsMC50eHQKQEAgLTAsMCArMSwyMyBAQAorUHNpSmF2YUZpbGU6TWV0aG9kTm9ybWFsMC5qYXZhCisgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgUHNpTWV0aG9kOmYKKyAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lJZGVudGlmaWVyOmYoJ2YnKQorICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUNvZGVCbG9jaworICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgUHNpV2hpdGVTcGFjZSgnICcpCisgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvZGVjbGFyYXRpb25zL01ldGhvZE5vcm1hbDEudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9kZWNsYXJhdGlvbnMvTWV0aG9kTm9ybWFsMS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjE0NmI5YgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvZGVjbGFyYXRpb25zL01ldGhvZE5vcm1hbDEudHh0CkBAIC0wLDAgKzEsMjAgQEAKK1BzaUphdmFGaWxlOk1ldGhvZE5vcm1hbDEuamF2YQorICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgUHNpV2hpdGVTcGFjZSgnICcpCisgIFBzaU1ldGhvZDpmCisgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSWRlbnRpZmllcjpmKCdmJykKKyAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lKYXZhVG9rZW46U0VNSUNPTE9OKCc7JykKKyAgUHNpV2hpdGVTcGFjZSgnICcpCisgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvZGVjbGFyYXRpb25zL01ldGhvZE5vcm1hbDIudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9kZWNsYXJhdGlvbnMvTWV0aG9kTm9ybWFsMi50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWEzYWI0OAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvZGVjbGFyYXRpb25zL01ldGhvZE5vcm1hbDIudHh0CkBAIC0wLDAgKzEsMjcgQEAKK1BzaUphdmFGaWxlOk1ldGhvZE5vcm1hbDIuamF2YQorICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgUHNpV2hpdGVTcGFjZSgnICcpCisgIFBzaU1ldGhvZDpmCisgICAgUHNpTW9kaWZpZXJMaXN0OmRlZmF1bHQgcHVibGljCisgICAgICBQc2lLZXl3b3JkOmRlZmF1bHQoJ2RlZmF1bHQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lLZXl3b3JkOnB1YmxpYygncHVibGljJykKKyAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lJZGVudGlmaWVyOmYoJ2YnKQorICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUNvZGVCbG9jaworICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL2RlY2xhcmF0aW9ucy9NaXNzaW5nSW5pdGlhbGl6ZXIudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9kZWNsYXJhdGlvbnMvTWlzc2luZ0luaXRpYWxpemVyLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZDliM2IyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9kZWNsYXJhdGlvbnMvTWlzc2luZ0luaXRpYWxpemVyLnR4dApAQCAtMCwwICsxLDE2IEBACitQc2lKYXZhRmlsZTpNaXNzaW5nSW5pdGlhbGl6ZXIuamF2YQorICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgUHNpV2hpdGVTcGFjZSgnICcpCisgIFBzaUZpZWxkOmZpZWxkCisgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpVHlwZUVsZW1lbnQ6aW50CisgICAgICBQc2lLZXl3b3JkOmludCgnaW50JykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lJZGVudGlmaWVyOmZpZWxkKCdmaWVsZCcpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSmF2YVRva2VuOkVRKCc9JykKKyAgICBQc2lFcnJvckVsZW1lbnQ6RXhwcmVzc2lvbiBleHBlY3RlZAorICAgICAgPGVtcHR5IGxpc3Q+CisgIFBzaVdoaXRlU3BhY2UoJyAnKQorICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvZGVjbGFyYXRpb25zL01pc3NpbmdJbml0aWFsaXplckV4cHJlc3Npb24udHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9kZWNsYXJhdGlvbnMvTWlzc2luZ0luaXRpYWxpemVyRXhwcmVzc2lvbi50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTdkYWM2NQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvZGVjbGFyYXRpb25zL01pc3NpbmdJbml0aWFsaXplckV4cHJlc3Npb24udHh0CkBAIC0wLDAgKzEsMTYgQEAKK1BzaUphdmFGaWxlOk1pc3NpbmdJbml0aWFsaXplckV4cHJlc3Npb24uamF2YQorICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgUHNpV2hpdGVTcGFjZSgnICcpCisgIFBzaUZpZWxkOmZpZWxkCisgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpVHlwZUVsZW1lbnQ6aW50CisgICAgICBQc2lLZXl3b3JkOmludCgnaW50JykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lJZGVudGlmaWVyOmZpZWxkKCdmaWVsZCcpCisgICAgUHNpSmF2YVRva2VuOkVRKCc9JykKKyAgICBQc2lFcnJvckVsZW1lbnQ6RXhwcmVzc2lvbiBleHBlY3RlZAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpSmF2YVRva2VuOlNFTUlDT0xPTignOycpCisgIFBzaVdoaXRlU3BhY2UoJyAnKQorICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL2RlY2xhcmF0aW9ucy9NdWx0aUxpbmVVbmNsb3NlZC50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL2RlY2xhcmF0aW9ucy9NdWx0aUxpbmVVbmNsb3NlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGYzNTk4NgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvZGVjbGFyYXRpb25zL011bHRpTGluZVVuY2xvc2VkLnR4dApAQCAtMCwwICsxLDIzIEBACitQc2lKYXZhRmlsZTpNdWx0aUxpbmVVbmNsb3NlZC5qYXZhCisgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgUHNpTW9kaWZpZXJMaXN0OgorICAgIDxlbXB0eSBsaXN0PgorICBQc2lUeXBlRWxlbWVudDppbnQKKyAgICBQc2lLZXl3b3JkOmludCgnaW50JykKKyAgUHNpRXJyb3JFbGVtZW50OklkZW50aWZpZXIgZXhwZWN0ZWQKKyAgICA8ZW1wdHkgbGlzdD4KKyAgUHNpV2hpdGVTcGFjZSgnIFxuICcpCisgIFBzaUZpZWxkOm8KKyAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lUeXBlRWxlbWVudDpPYmplY3QKKyAgICAgIFBzaUphdmFDb2RlUmVmZXJlbmNlRWxlbWVudDpPYmplY3QKKyAgICAgICAgUHNpSWRlbnRpZmllcjpPYmplY3QoJ09iamVjdCcpCisgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lJZGVudGlmaWVyOm8oJ28nKQorICAgIFBzaUphdmFUb2tlbjpTRU1JQ09MT04oJzsnKQorICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9kZWNsYXJhdGlvbnMvTm9UeXBlLnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvZGVjbGFyYXRpb25zL05vVHlwZS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTUwN2MzNmIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL2RlY2xhcmF0aW9ucy9Ob1R5cGUudHh0CkBAIC0wLDAgKzEsMjAgQEAKK1BzaUphdmFGaWxlOk5vVHlwZS5qYXZhCisgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgUHNpRXJyb3JFbGVtZW50OlVuZXhwZWN0ZWQgdG9rZW4KKyAgICBQc2lLZXl3b3JkOm5ldygnbmV3JykKKyAgUHNpV2hpdGVTcGFjZSgnICcpCisgIFBzaU1ldGhvZDpYCisgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUlkZW50aWZpZXI6WCgnWCcpCisgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpSmF2YVRva2VuOlNFTUlDT0xPTignOycpCisgIFBzaVdoaXRlU3BhY2UoJyAnKQorICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvZGVjbGFyYXRpb25zL1BhcmFtZXRlckFubm90YXRpb24udHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9kZWNsYXJhdGlvbnMvUGFyYW1ldGVyQW5ub3RhdGlvbi50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzI4M2NhNAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvZGVjbGFyYXRpb25zL1BhcmFtZXRlckFubm90YXRpb24udHh0CkBAIC0wLDAgKzEsNDUgQEAKK1BzaUphdmFGaWxlOlBhcmFtZXRlckFubm90YXRpb24uamF2YQorICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgUHNpV2hpdGVTcGFjZSgnICcpCisgIFBzaU1ldGhvZDpmb28KKyAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lQYXJhbWV0ZXJMaXN0OihAQW5ub3RhdGlvbih2YWx1ZT03NykgaW50IHBhcmFtKQorICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgIFBzaVBhcmFtZXRlcjpwYXJhbQorICAgICAgICBQc2lNb2RpZmllckxpc3Q6QEFubm90YXRpb24odmFsdWU9NzcpCisgICAgICAgICAgUHNpQW5ub3RhdGlvbgorICAgICAgICAgICAgUHNpSmF2YVRva2VuOkFUKCdAJykKKyAgICAgICAgICAgIFBzaUphdmFDb2RlUmVmZXJlbmNlRWxlbWVudDpBbm5vdGF0aW9uCisgICAgICAgICAgICAgIFBzaUlkZW50aWZpZXI6QW5ub3RhdGlvbignQW5ub3RhdGlvbicpCisgICAgICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICAgIFBzaUFubm90YXRpb25QYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgICAgICAgIFBzaU5hbWVWYWx1ZVBhaXIKKyAgICAgICAgICAgICAgICBQc2lJZGVudGlmaWVyOnZhbHVlKCd2YWx1ZScpCisgICAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOkVRKCc9JykKKyAgICAgICAgICAgICAgICBQc2lMaXRlcmFsRXhwcmVzc2lvbjo3NworICAgICAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOklOVEVHRVJfTElURVJBTCgnNzcnKQorICAgICAgICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgICAgUHNpVHlwZUVsZW1lbnQ6aW50CisgICAgICAgICAgUHNpS2V5d29yZDppbnQoJ2ludCcpCisgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICBQc2lJZGVudGlmaWVyOnBhcmFtKCdwYXJhbScpCisgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUNvZGVCbG9jaworICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgUHNpV2hpdGVTcGFjZSgnICcpCisgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvZGVjbGFyYXRpb25zL1BhcmFtZXRlcml6ZWRDbGFzcy50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL2RlY2xhcmF0aW9ucy9QYXJhbWV0ZXJpemVkQ2xhc3MudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI2MmMwYzgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL2RlY2xhcmF0aW9ucy9QYXJhbWV0ZXJpemVkQ2xhc3MudHh0CkBAIC0wLDAgKzEsNDQgQEAKK1BzaUphdmFGaWxlOlBhcmFtZXRlcml6ZWRDbGFzcy5qYXZhCisgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgUHNpQ2xhc3M6QQorICAgIFBzaU1vZGlmaWVyTGlzdDpwdWJsaWMKKyAgICAgIFBzaUtleXdvcmQ6cHVibGljKCdwdWJsaWMnKQorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUtleXdvcmQ6Y2xhc3MoJ2NsYXNzJykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lJZGVudGlmaWVyOkEoJ0EnKQorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICBQc2lKYXZhVG9rZW46TFQoJzwnKQorICAgICAgUHNpVHlwZVBhcmFtZXRlcjpUCisgICAgICAgIFBzaUlkZW50aWZpZXI6VCgnVCcpCisgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICBQc2lFbGVtZW50KEVYVEVORFNfQk9VTkRfTElTVCkKKyAgICAgICAgICBQc2lLZXl3b3JkOmV4dGVuZHMoJ2V4dGVuZHMnKQorICAgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICAgIFBzaUphdmFDb2RlUmVmZXJlbmNlRWxlbWVudDpqYXZhLnV0aWwuTGlzdAorICAgICAgICAgICAgUHNpSmF2YUNvZGVSZWZlcmVuY2VFbGVtZW50OmphdmEudXRpbAorICAgICAgICAgICAgICBQc2lKYXZhQ29kZVJlZmVyZW5jZUVsZW1lbnQ6amF2YQorICAgICAgICAgICAgICAgIFBzaUlkZW50aWZpZXI6amF2YSgnamF2YScpCisgICAgICAgICAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgICAgIFBzaUphdmFUb2tlbjpET1QoJy4nKQorICAgICAgICAgICAgICBQc2lJZGVudGlmaWVyOnV0aWwoJ3V0aWwnKQorICAgICAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgICBQc2lKYXZhVG9rZW46RE9UKCcuJykKKyAgICAgICAgICAgIFBzaUlkZW50aWZpZXI6TGlzdCgnTGlzdCcpCisgICAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpSmF2YVRva2VuOkdUKCc+JykKKyAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgUHNpV2hpdGVTcGFjZSgnICcpCisgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvZGVjbGFyYXRpb25zL1BhcmFtZXRlcml6ZWRNZXRob2QudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9kZWNsYXJhdGlvbnMvUGFyYW1ldGVyaXplZE1ldGhvZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDEyODI2NAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvZGVjbGFyYXRpb25zL1BhcmFtZXRlcml6ZWRNZXRob2QudHh0CkBAIC0wLDAgKzEsNDAgQEAKK1BzaUphdmFGaWxlOlBhcmFtZXRlcml6ZWRNZXRob2QuamF2YQorICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgUHNpV2hpdGVTcGFjZSgnICcpCisgIFBzaU1ldGhvZDpiYXIKKyAgICBQc2lNb2RpZmllckxpc3Q6QE51bGxhYmxlCisgICAgICBQc2lBbm5vdGF0aW9uCisgICAgICAgIFBzaUphdmFUb2tlbjpBVCgnQCcpCisgICAgICAgIFBzaUphdmFDb2RlUmVmZXJlbmNlRWxlbWVudDpOdWxsYWJsZQorICAgICAgICAgIFBzaUlkZW50aWZpZXI6TnVsbGFibGUoJ051bGxhYmxlJykKKyAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgUHNpQW5ub3RhdGlvblBhcmFtZXRlckxpc3QKKyAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgUHNpSmF2YVRva2VuOkxUKCc8JykKKyAgICAgIFBzaVR5cGVQYXJhbWV0ZXI6VAorICAgICAgICBQc2lJZGVudGlmaWVyOlQoJ1QnKQorICAgICAgICBQc2lFbGVtZW50KEVYVEVORFNfQk9VTkRfTElTVCkKKyAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUphdmFUb2tlbjpHVCgnPicpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpVHlwZUVsZW1lbnQ6VAorICAgICAgUHNpSmF2YUNvZGVSZWZlcmVuY2VFbGVtZW50OlQKKyAgICAgICAgUHNpSWRlbnRpZmllcjpUKCdUJykKKyAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUlkZW50aWZpZXI6YmFyKCdiYXInKQorICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUNvZGVCbG9jaworICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgUHNpV2hpdGVTcGFjZSgnICcpCisgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvZGVjbGFyYXRpb25zL1BpbmVzLnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvZGVjbGFyYXRpb25zL1BpbmVzLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZmJlNDBlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9kZWNsYXJhdGlvbnMvUGluZXMudHh0CkBAIC0wLDAgKzEsNTYgQEAKK1BzaUphdmFGaWxlOlBpbmVzLmphdmEKKyAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgIFBzaVdoaXRlU3BhY2UoJyAnKQorICBQc2lDbGFzczpBCisgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpS2V5d29yZDpjbGFzcygnY2xhc3MnKQorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUlkZW50aWZpZXI6QSgnQScpCisgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgIFBzaUphdmFUb2tlbjpMVCgnPCcpCisgICAgICBQc2lUeXBlUGFyYW1ldGVyOlQKKyAgICAgICAgUHNpSWRlbnRpZmllcjpUKCdUJykKKyAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgIFBzaUVsZW1lbnQoRVhURU5EU19CT1VORF9MSVNUKQorICAgICAgICAgIFBzaUtleXdvcmQ6ZXh0ZW5kcygnZXh0ZW5kcycpCisgICAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgICAgUHNpSmF2YUNvZGVSZWZlcmVuY2VFbGVtZW50Okxpc3Q8U3RyaW5nPgorICAgICAgICAgICAgUHNpSWRlbnRpZmllcjpMaXN0KCdMaXN0JykKKyAgICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOkxUKCc8JykKKyAgICAgICAgICAgICAgUHNpVHlwZUVsZW1lbnQ6U3RyaW5nCisgICAgICAgICAgICAgICAgUHNpSmF2YUNvZGVSZWZlcmVuY2VFbGVtZW50OlN0cmluZworICAgICAgICAgICAgICAgICAgUHNpSWRlbnRpZmllcjpTdHJpbmcoJ1N0cmluZycpCisgICAgICAgICAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgICAgICBQc2lKYXZhVG9rZW46R1QoJz4nKQorICAgICAgUHNpSmF2YVRva2VuOkdUKCc+JykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICBQc2lLZXl3b3JkOmV4dGVuZHMoJ2V4dGVuZHMnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lKYXZhQ29kZVJlZmVyZW5jZUVsZW1lbnQ6TGlzdDxMaXN0PEludGVnZXI+PgorICAgICAgICBQc2lJZGVudGlmaWVyOkxpc3QoJ0xpc3QnKQorICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgUHNpSmF2YVRva2VuOkxUKCc8JykKKyAgICAgICAgICBQc2lUeXBlRWxlbWVudDpMaXN0PEludGVnZXI+CisgICAgICAgICAgICBQc2lKYXZhQ29kZVJlZmVyZW5jZUVsZW1lbnQ6TGlzdDxJbnRlZ2VyPgorICAgICAgICAgICAgICBQc2lJZGVudGlmaWVyOkxpc3QoJ0xpc3QnKQorICAgICAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOkxUKCc8JykKKyAgICAgICAgICAgICAgICBQc2lUeXBlRWxlbWVudDpJbnRlZ2VyCisgICAgICAgICAgICAgICAgICBQc2lKYXZhQ29kZVJlZmVyZW5jZUVsZW1lbnQ6SW50ZWdlcgorICAgICAgICAgICAgICAgICAgICBQc2lJZGVudGlmaWVyOkludGVnZXIoJ0ludGVnZXInKQorICAgICAgICAgICAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOkdUKCc+JykKKyAgICAgICAgICBQc2lKYXZhVG9rZW46R1QoJz4nKQorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9kZWNsYXJhdGlvbnMvU2VtaWNvbG9ucy50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL2RlY2xhcmF0aW9ucy9TZW1pY29sb25zLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMzI3YzAxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9kZWNsYXJhdGlvbnMvU2VtaWNvbG9ucy50eHQKQEAgLTAsMCArMSw0NCBAQAorUHNpSmF2YUZpbGU6U2VtaWNvbG9ucy5qYXZhCisgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgUHNpTWV0aG9kOmYKKyAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lJZGVudGlmaWVyOmYoJ2YnKQorICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUNvZGVCbG9jaworICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgUHNpSmF2YVRva2VuOlNFTUlDT0xPTignOycpCisgIFBzaVdoaXRlU3BhY2UoJyAnKQorICBQc2lNZXRob2Q6ZworICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUlkZW50aWZpZXI6ZygnZycpCisgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpQ29kZUJsb2NrCisgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICBQc2lKYXZhVG9rZW46U0VNSUNPTE9OKCc7JykKKyAgUHNpV2hpdGVTcGFjZSgnICcpCisgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9kZWNsYXJhdGlvbnMvVHlwZUFubm8udHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9kZWNsYXJhdGlvbnMvVHlwZUFubm8udHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI0NGNlYTcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL2RlY2xhcmF0aW9ucy9UeXBlQW5uby50eHQKQEAgLTAsMCArMSwzMTcgQEAKK1BzaUphdmFGaWxlOlR5cGVBbm5vLmphdmEKKyAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgIFBzaVdoaXRlU3BhY2UoJyAnKQorICBQc2lDbGFzczpDCisgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpS2V5d29yZDpjbGFzcygnY2xhc3MnKQorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUlkZW50aWZpZXI6QygnQycpCisgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgIFBzaUphdmFUb2tlbjpMVCgnPCcpCisgICAgICBQc2lUeXBlUGFyYW1ldGVyOlQKKyAgICAgICAgUHNpQW5ub3RhdGlvbgorICAgICAgICAgIFBzaUphdmFUb2tlbjpBVCgnQCcpCisgICAgICAgICAgUHNpSmF2YUNvZGVSZWZlcmVuY2VFbGVtZW50OkQKKyAgICAgICAgICAgIFBzaUlkZW50aWZpZXI6RCgnRCcpCisgICAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgIFBzaUFubm90YXRpb25QYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgIFBzaUlkZW50aWZpZXI6VCgnVCcpCisgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICBQc2lFbGVtZW50KEVYVEVORFNfQk9VTkRfTElTVCkKKyAgICAgICAgICBQc2lLZXl3b3JkOmV4dGVuZHMoJ2V4dGVuZHMnKQorICAgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICAgIFBzaUphdmFDb2RlUmVmZXJlbmNlRWxlbWVudDpARiBPYmplY3QKKyAgICAgICAgICAgIFBzaUFubm90YXRpb24KKyAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOkFUKCdAJykKKyAgICAgICAgICAgICAgUHNpSmF2YUNvZGVSZWZlcmVuY2VFbGVtZW50OkYKKyAgICAgICAgICAgICAgICBQc2lJZGVudGlmaWVyOkYoJ0YnKQorICAgICAgICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgICAgICBQc2lBbm5vdGF0aW9uUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgICAgICBQc2lJZGVudGlmaWVyOk9iamVjdCgnT2JqZWN0JykKKyAgICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lKYXZhVG9rZW46R1QoJz4nKQorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIFBzaUtleXdvcmQ6ZXh0ZW5kcygnZXh0ZW5kcycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUphdmFDb2RlUmVmZXJlbmNlRWxlbWVudDpARiBPYmplY3QKKyAgICAgICAgUHNpQW5ub3RhdGlvbgorICAgICAgICAgIFBzaUphdmFUb2tlbjpBVCgnQCcpCisgICAgICAgICAgUHNpSmF2YUNvZGVSZWZlcmVuY2VFbGVtZW50OkYKKyAgICAgICAgICAgIFBzaUlkZW50aWZpZXI6RignRicpCisgICAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgIFBzaUFubm90YXRpb25QYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgIFBzaUlkZW50aWZpZXI6T2JqZWN0KCdPYmplY3QnKQorICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4gICcpCisgICAgUHNpTWV0aG9kOm1ldGhvZAorICAgICAgUHNpTW9kaWZpZXJMaXN0OkBGCisgICAgICAgIFBzaUFubm90YXRpb24KKyAgICAgICAgICBQc2lKYXZhVG9rZW46QVQoJ0AnKQorICAgICAgICAgIFBzaUphdmFDb2RlUmVmZXJlbmNlRWxlbWVudDpGCisgICAgICAgICAgICBQc2lJZGVudGlmaWVyOkYoJ0YnKQorICAgICAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICBQc2lBbm5vdGF0aW9uUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpVHlwZUVsZW1lbnQ6aW50IEBGW10KKyAgICAgICAgUHNpVHlwZUVsZW1lbnQ6aW50CisgICAgICAgICAgUHNpS2V5d29yZDppbnQoJ2ludCcpCisgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICBQc2lBbm5vdGF0aW9uCisgICAgICAgICAgUHNpSmF2YVRva2VuOkFUKCdAJykKKyAgICAgICAgICBQc2lKYXZhQ29kZVJlZmVyZW5jZUVsZW1lbnQ6RgorICAgICAgICAgICAgUHNpSWRlbnRpZmllcjpGKCdGJykKKyAgICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgUHNpQW5ub3RhdGlvblBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNLRVQoJ1snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNLRVQoJ10nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOm1ldGhvZCgnbWV0aG9kJykKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgICBQc2lLZXl3b3JkOnRocm93cygndGhyb3dzJykKKyAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgIFBzaUphdmFDb2RlUmVmZXJlbmNlRWxlbWVudDpARiBFeGNlcHRpb24KKyAgICAgICAgICBQc2lBbm5vdGF0aW9uCisgICAgICAgICAgICBQc2lKYXZhVG9rZW46QVQoJ0AnKQorICAgICAgICAgICAgUHNpSmF2YUNvZGVSZWZlcmVuY2VFbGVtZW50OkYKKyAgICAgICAgICAgICAgUHNpSWRlbnRpZmllcjpGKCdGJykKKyAgICAgICAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgICAgUHNpQW5ub3RhdGlvblBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgICAgUHNpSWRlbnRpZmllcjpFeGNlcHRpb24oJ0V4Y2VwdGlvbicpCisgICAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gICAgJykKKyAgICAgICAgUHNpRXhwcmVzc2lvblN0YXRlbWVudAorICAgICAgICAgIFBzaUFzc2lnbm1lbnRFeHByZXNzaW9uOmEgPSB0aGlzIGluc3RhbmNlb2YgQEYgQworICAgICAgICAgICAgUHNpUmVmZXJlbmNlRXhwcmVzc2lvbjphCisgICAgICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICAgICAgUHNpSWRlbnRpZmllcjphKCdhJykKKyAgICAgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICAgICAgUHNpSmF2YVRva2VuOkVRKCc9JykKKyAgICAgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICAgICAgUHNpSW5zdGFuY2VvZkV4cHJlc3Npb246dGhpcyBpbnN0YW5jZW9mIEBGIEMKKyAgICAgICAgICAgICAgUHNpVGhpc0V4cHJlc3Npb246dGhpcworICAgICAgICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgICAgICAgIFBzaUtleXdvcmQ6dGhpcygndGhpcycpCisgICAgICAgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICAgICAgICBQc2lLZXl3b3JkOmluc3RhbmNlb2YoJ2luc3RhbmNlb2YnKQorICAgICAgICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgICAgICAgICAgUHNpVHlwZUVsZW1lbnQ6QEYgQworICAgICAgICAgICAgICAgIFBzaUFubm90YXRpb24KKyAgICAgICAgICAgICAgICAgIFBzaUphdmFUb2tlbjpBVCgnQCcpCisgICAgICAgICAgICAgICAgICBQc2lKYXZhQ29kZVJlZmVyZW5jZUVsZW1lbnQ6RgorICAgICAgICAgICAgICAgICAgICBQc2lJZGVudGlmaWVyOkYoJ0YnKQorICAgICAgICAgICAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgICAgICAgICBQc2lBbm5vdGF0aW9uUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgICAgICAgICAgICBQc2lKYXZhQ29kZVJlZmVyZW5jZUVsZW1lbnQ6QworICAgICAgICAgICAgICAgICAgUHNpSWRlbnRpZmllcjpDKCdDJykKKyAgICAgICAgICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgUHNpSmF2YVRva2VuOlNFTUlDT0xPTignOycpCisgICAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAgICcpCisgICAgICAgIFBzaURlY2xhcmF0aW9uU3RhdGVtZW50CisgICAgICAgICAgUHNpTG9jYWxWYXJpYWJsZTpjCisgICAgICAgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgICAgUHNpVHlwZUVsZW1lbnQ6QzxARiBARyBDPgorICAgICAgICAgICAgICBQc2lKYXZhQ29kZVJlZmVyZW5jZUVsZW1lbnQ6QzxARiBARyBDPgorICAgICAgICAgICAgICAgIFBzaUlkZW50aWZpZXI6QygnQycpCisgICAgICAgICAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOkxUKCc8JykKKyAgICAgICAgICAgICAgICAgIFBzaVR5cGVFbGVtZW50OkBGIEBHIEMKKyAgICAgICAgICAgICAgICAgICAgUHNpQW5ub3RhdGlvbgorICAgICAgICAgICAgICAgICAgICAgIFBzaUphdmFUb2tlbjpBVCgnQCcpCisgICAgICAgICAgICAgICAgICAgICAgUHNpSmF2YUNvZGVSZWZlcmVuY2VFbGVtZW50OkYKKyAgICAgICAgICAgICAgICAgICAgICAgIFBzaUlkZW50aWZpZXI6RignRicpCisgICAgICAgICAgICAgICAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgICAgICAgICAgICAgIFBzaUFubm90YXRpb25QYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgICAgICAgICAgICAgIFBzaUFubm90YXRpb24KKyAgICAgICAgICAgICAgICAgICAgICBQc2lKYXZhVG9rZW46QVQoJ0AnKQorICAgICAgICAgICAgICAgICAgICAgIFBzaUphdmFDb2RlUmVmZXJlbmNlRWxlbWVudDpHCisgICAgICAgICAgICAgICAgICAgICAgICBQc2lJZGVudGlmaWVyOkcoJ0cnKQorICAgICAgICAgICAgICAgICAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgICBQc2lBbm5vdGF0aW9uUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgICAgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICAgICAgICAgICAgICBQc2lKYXZhQ29kZVJlZmVyZW5jZUVsZW1lbnQ6QworICAgICAgICAgICAgICAgICAgICAgIFBzaUlkZW50aWZpZXI6QygnQycpCisgICAgICAgICAgICAgICAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgICAgICAgICBQc2lKYXZhVG9rZW46R1QoJz4nKQorICAgICAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgICAgICBQc2lJZGVudGlmaWVyOmMoJ2MnKQorICAgICAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgICAgICBQc2lKYXZhVG9rZW46RVEoJz0nKQorICAgICAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgICAgICBQc2lOZXdFeHByZXNzaW9uOm5ldyBAUSBDPEBGIEM+KCkKKyAgICAgICAgICAgICAgUHNpS2V5d29yZDpuZXcoJ25ldycpCisgICAgICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgICAgICAgIFBzaUphdmFDb2RlUmVmZXJlbmNlRWxlbWVudDpAUSBDPEBGIEM+CisgICAgICAgICAgICAgICAgUHNpQW5ub3RhdGlvbgorICAgICAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOkFUKCdAJykKKyAgICAgICAgICAgICAgICAgIFBzaUphdmFDb2RlUmVmZXJlbmNlRWxlbWVudDpRCisgICAgICAgICAgICAgICAgICAgIFBzaUlkZW50aWZpZXI6USgnUScpCisgICAgICAgICAgICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICAgICAgICAgIFBzaUFubm90YXRpb25QYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICAgICAgICAgIFBzaUlkZW50aWZpZXI6QygnQycpCisgICAgICAgICAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOkxUKCc8JykKKyAgICAgICAgICAgICAgICAgIFBzaVR5cGVFbGVtZW50OkBGIEMKKyAgICAgICAgICAgICAgICAgICAgUHNpQW5ub3RhdGlvbgorICAgICAgICAgICAgICAgICAgICAgIFBzaUphdmFUb2tlbjpBVCgnQCcpCisgICAgICAgICAgICAgICAgICAgICAgUHNpSmF2YUNvZGVSZWZlcmVuY2VFbGVtZW50OkYKKyAgICAgICAgICAgICAgICAgICAgICAgIFBzaUlkZW50aWZpZXI6RignRicpCisgICAgICAgICAgICAgICAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgICAgICAgICAgICAgIFBzaUFubm90YXRpb25QYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgICAgICAgICAgICAgIFBzaUphdmFDb2RlUmVmZXJlbmNlRWxlbWVudDpDCisgICAgICAgICAgICAgICAgICAgICAgUHNpSWRlbnRpZmllcjpDKCdDJykKKyAgICAgICAgICAgICAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICAgICAgICAgIFBzaUphdmFUb2tlbjpHVCgnPicpCisgICAgICAgICAgICAgIFBzaUV4cHJlc3Npb25MaXN0CisgICAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgICAgICAgUHNpSmF2YVRva2VuOlNFTUlDT0xPTignOycpCisgICAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAgICcpCisgICAgICAgIFBzaUV4cHJlc3Npb25TdGF0ZW1lbnQKKyAgICAgICAgICBQc2lBc3NpZ25tZW50RXhwcmVzc2lvbjpjID0gKEBGIE9iamVjdCljCisgICAgICAgICAgICBQc2lSZWZlcmVuY2VFeHByZXNzaW9uOmMKKyAgICAgICAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgICAgICBQc2lJZGVudGlmaWVyOmMoJ2MnKQorICAgICAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgICAgICBQc2lKYXZhVG9rZW46RVEoJz0nKQorICAgICAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgICAgICBQc2lUeXBlQ2FzdEV4cHJlc3Npb246KEBGIE9iamVjdCljCisgICAgICAgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgICAgICAgIFBzaVR5cGVFbGVtZW50OkBGIE9iamVjdAorICAgICAgICAgICAgICAgIFBzaUFubm90YXRpb24KKyAgICAgICAgICAgICAgICAgIFBzaUphdmFUb2tlbjpBVCgnQCcpCisgICAgICAgICAgICAgICAgICBQc2lKYXZhQ29kZVJlZmVyZW5jZUVsZW1lbnQ6RgorICAgICAgICAgICAgICAgICAgICBQc2lJZGVudGlmaWVyOkYoJ0YnKQorICAgICAgICAgICAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgICAgICAgICBQc2lBbm5vdGF0aW9uUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgICAgICAgICAgICBQc2lKYXZhQ29kZVJlZmVyZW5jZUVsZW1lbnQ6T2JqZWN0CisgICAgICAgICAgICAgICAgICBQc2lJZGVudGlmaWVyOk9iamVjdCgnT2JqZWN0JykKKyAgICAgICAgICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICAgICAgICAgIFBzaVJlZmVyZW5jZUV4cHJlc3Npb246YworICAgICAgICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgICAgICAgIFBzaUlkZW50aWZpZXI6YygnYycpCisgICAgICAgICAgUHNpSmF2YVRva2VuOlNFTUlDT0xPTignOycpCisgICAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAgICcpCisgICAgICAgIFBzaURlY2xhcmF0aW9uU3RhdGVtZW50CisgICAgICAgICAgUHNpTG9jYWxWYXJpYWJsZTpjCisgICAgICAgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgICAgUHNpVHlwZUVsZW1lbnQ6Q2xhc3MKKyAgICAgICAgICAgICAgUHNpSmF2YUNvZGVSZWZlcmVuY2VFbGVtZW50OkNsYXNzCisgICAgICAgICAgICAgICAgUHNpSWRlbnRpZmllcjpDbGFzcygnQ2xhc3MnKQorICAgICAgICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgICAgICBQc2lJZGVudGlmaWVyOmMoJ2MnKQorICAgICAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgICAgICBQc2lKYXZhVG9rZW46RVEoJz0nKQorICAgICAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgICAgICBQc2lDbGFzc09iamVjdEFjY2Vzc0V4cHJlc3Npb246QFRBIFN0cmluZy5jbGFzcworICAgICAgICAgICAgICBQc2lUeXBlRWxlbWVudDpAVEEgU3RyaW5nCisgICAgICAgICAgICAgICAgUHNpQW5ub3RhdGlvbgorICAgICAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOkFUKCdAJykKKyAgICAgICAgICAgICAgICAgIFBzaUphdmFDb2RlUmVmZXJlbmNlRWxlbWVudDpUQQorICAgICAgICAgICAgICAgICAgICBQc2lJZGVudGlmaWVyOlRBKCdUQScpCisgICAgICAgICAgICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICAgICAgICAgIFBzaUFubm90YXRpb25QYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICAgICAgICAgIFBzaUphdmFDb2RlUmVmZXJlbmNlRWxlbWVudDpTdHJpbmcKKyAgICAgICAgICAgICAgICAgIFBzaUlkZW50aWZpZXI6U3RyaW5nKCdTdHJpbmcnKQorICAgICAgICAgICAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOkRPVCgnLicpCisgICAgICAgICAgICAgIFBzaUtleXdvcmQ6Y2xhc3MoJ2NsYXNzJykKKyAgICAgICAgICAgIFBzaUphdmFUb2tlbjpTRU1JQ09MT04oJzsnKQorICAgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgICAnKQorICAgICAgICBQc2lFeHByZXNzaW9uU3RhdGVtZW50CisgICAgICAgICAgUHNpUG9zdGZpeEV4cHJlc3Npb246QEYgQy5maWVsZCsrCisgICAgICAgICAgICBQc2lSZWZlcmVuY2VFeHByZXNzaW9uOkBGIEMuZmllbGQKKyAgICAgICAgICAgICAgUHNpUmVmZXJlbmNlRXhwcmVzc2lvbjpARiBDCisgICAgICAgICAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgICAgICAgUHNpQW5ub3RhdGlvbgorICAgICAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOkFUKCdAJykKKyAgICAgICAgICAgICAgICAgIFBzaUphdmFDb2RlUmVmZXJlbmNlRWxlbWVudDpGCisgICAgICAgICAgICAgICAgICAgIFBzaUlkZW50aWZpZXI6RignRicpCisgICAgICAgICAgICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICAgICAgICAgIFBzaUFubm90YXRpb25QYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICAgICAgICAgIFBzaUlkZW50aWZpZXI6QygnQycpCisgICAgICAgICAgICAgIFBzaUphdmFUb2tlbjpET1QoJy4nKQorICAgICAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgICAgIFBzaUlkZW50aWZpZXI6ZmllbGQoJ2ZpZWxkJykKKyAgICAgICAgICAgIFBzaUphdmFUb2tlbjpQTFVTUExVUygnKysnKQorICAgICAgICAgIFBzaUphdmFUb2tlbjpTRU1JQ09MT04oJzsnKQorICAgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4nKQorICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9kZWNsYXJhdGlvbnMvVW5jbG9zZWQwLnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvZGVjbGFyYXRpb25zL1VuY2xvc2VkMC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTM1M2YwNQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvZGVjbGFyYXRpb25zL1VuY2xvc2VkMC50eHQKQEAgLTAsMCArMSwyMSBAQAorUHNpSmF2YUZpbGU6VW5jbG9zZWQwLmphdmEKKyAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgIFBzaVdoaXRlU3BhY2UoJyAnKQorICBQc2lNZXRob2Q6ZgorICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lUeXBlRWxlbWVudDp2b2lkCisgICAgICBQc2lLZXl3b3JkOnZvaWQoJ3ZvaWQnKQorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUlkZW50aWZpZXI6ZignZicpCisgICAgUHNpUGFyYW1ldGVyTGlzdDooKQorICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpRXJyb3JFbGVtZW50Oid7JyBvciAnOycgZXhwZWN0ZWQKKyAgICAgIDxlbXB0eSBsaXN0PgorICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL2RlY2xhcmF0aW9ucy9VbmNsb3NlZDEudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9kZWNsYXJhdGlvbnMvVW5jbG9zZWQxLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jN2I0MTU5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9kZWNsYXJhdGlvbnMvVW5jbG9zZWQxLnR4dApAQCAtMCwwICsxLDIyIEBACitQc2lKYXZhRmlsZTpVbmNsb3NlZDEuamF2YQorICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgUHNpV2hpdGVTcGFjZSgnICcpCisgIFBzaU1ldGhvZDpmCisgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSWRlbnRpZmllcjpmKCdmJykKKyAgICBQc2lQYXJhbWV0ZXJMaXN0OigKKyAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICBQc2lFcnJvckVsZW1lbnQ6JyknIGV4cGVjdGVkCisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUVycm9yRWxlbWVudDoneycgb3IgJzsnIGV4cGVjdGVkCisgICAgICA8ZW1wdHkgbGlzdD4KKyAgUHNpV2hpdGVTcGFjZSgnICcpCisgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvZGVjbGFyYXRpb25zL1VuY2xvc2VkMi50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL2RlY2xhcmF0aW9ucy9VbmNsb3NlZDIudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIyYTBkZmUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL2RlY2xhcmF0aW9ucy9VbmNsb3NlZDIudHh0CkBAIC0wLDAgKzEsMzcgQEAKK1BzaUphdmFGaWxlOlVuY2xvc2VkMi5qYXZhCisgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgUHNpTWV0aG9kOmYKKyAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lJZGVudGlmaWVyOmYoJ2YnKQorICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUVycm9yRWxlbWVudDoneycgb3IgJzsnIGV4cGVjdGVkCisgICAgICA8ZW1wdHkgbGlzdD4KKyAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgUHNpTWV0aG9kOmcKKyAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lJZGVudGlmaWVyOmcoJ2cnKQorICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUphdmFUb2tlbjpTRU1JQ09MT04oJzsnKQorICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL2RlY2xhcmF0aW9ucy9VbmNsb3NlZDMudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9kZWNsYXJhdGlvbnMvVW5jbG9zZWQzLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MmNhYTFjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9kZWNsYXJhdGlvbnMvVW5jbG9zZWQzLnR4dApAQCAtMCwwICsxLDI5IEBACitQc2lKYXZhRmlsZTpVbmNsb3NlZDMuamF2YQorICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgUHNpV2hpdGVTcGFjZSgnICcpCisgIFBzaU1ldGhvZDpmCisgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSWRlbnRpZmllcjpmKCdmJykKKyAgICBQc2lQYXJhbWV0ZXJMaXN0OihpbnQgYQorICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgIFBzaVBhcmFtZXRlcjphCisgICAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgUHNpVHlwZUVsZW1lbnQ6aW50CisgICAgICAgICAgUHNpS2V5d29yZDppbnQoJ2ludCcpCisgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICBQc2lJZGVudGlmaWVyOmEoJ2EnKQorICAgICAgUHNpRXJyb3JFbGVtZW50OicpJyBleHBlY3RlZAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lFcnJvckVsZW1lbnQ6J3snIG9yICc7JyBleHBlY3RlZAorICAgICAgPGVtcHR5IGxpc3Q+CisgIFBzaVdoaXRlU3BhY2UoJyAnKQorICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL2RlY2xhcmF0aW9ucy9VbmNsb3NlZDQudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9kZWNsYXJhdGlvbnMvVW5jbG9zZWQ0LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kN2ZmZWVhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9kZWNsYXJhdGlvbnMvVW5jbG9zZWQ0LnR4dApAQCAtMCwwICsxLDMzIEBACitQc2lKYXZhRmlsZTpVbmNsb3NlZDQuamF2YQorICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgUHNpV2hpdGVTcGFjZSgnICcpCisgIFBzaU1ldGhvZDpmCisgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSWRlbnRpZmllcjpmKCdmJykKKyAgICBQc2lQYXJhbWV0ZXJMaXN0OihpbnQgYSwsCisgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgUHNpUGFyYW1ldGVyOmEKKyAgICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICBQc2lUeXBlRWxlbWVudDppbnQKKyAgICAgICAgICBQc2lLZXl3b3JkOmludCgnaW50JykKKyAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgIFBzaUlkZW50aWZpZXI6YSgnYScpCisgICAgICBQc2lKYXZhVG9rZW46Q09NTUEoJywnKQorICAgICAgUHNpRXJyb3JFbGVtZW50OlBhcmFtZXRlciBleHBlY3RlZAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUphdmFUb2tlbjpDT01NQSgnLCcpCisgICAgICBQc2lFcnJvckVsZW1lbnQ6SWRlbnRpZmllciBvciB0eXBlIGV4cGVjdGVkCisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUVycm9yRWxlbWVudDoneycgb3IgJzsnIGV4cGVjdGVkCisgICAgICA8ZW1wdHkgbGlzdD4KKyAgUHNpV2hpdGVTcGFjZSgnICcpCisgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvZGVjbGFyYXRpb25zL1VuY2xvc2VkNS50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL2RlY2xhcmF0aW9ucy9VbmNsb3NlZDUudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEwMTY2ZDgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL2RlY2xhcmF0aW9ucy9VbmNsb3NlZDUudHh0CkBAIC0wLDAgKzEsMzAgQEAKK1BzaUphdmFGaWxlOlVuY2xvc2VkNS5qYXZhCisgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgUHNpTWV0aG9kOmYKKyAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lJZGVudGlmaWVyOmYoJ2YnKQorICAgIFBzaVBhcmFtZXRlckxpc3Q6KGludCBhLCkKKyAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICBQc2lQYXJhbWV0ZXI6YQorICAgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgIFBzaVR5cGVFbGVtZW50OmludAorICAgICAgICAgIFBzaUtleXdvcmQ6aW50KCdpbnQnKQorICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgICAgUHNpSWRlbnRpZmllcjphKCdhJykKKyAgICAgIFBzaUphdmFUb2tlbjpDT01NQSgnLCcpCisgICAgICBQc2lFcnJvckVsZW1lbnQ6SWRlbnRpZmllciBvciB0eXBlIGV4cGVjdGVkCisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lKYXZhVG9rZW46U0VNSUNPTE9OKCc7JykKKyAgUHNpV2hpdGVTcGFjZSgnICcpCisgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9kZWNsYXJhdGlvbnMvVW5jbG9zZWQ2LnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvZGVjbGFyYXRpb25zL1VuY2xvc2VkNi50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTFlMWI2NQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvZGVjbGFyYXRpb25zL1VuY2xvc2VkNi50eHQKQEAgLTAsMCArMSwyNSBAQAorUHNpSmF2YUZpbGU6VW5jbG9zZWQ2LmphdmEKKyAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgIFBzaVdoaXRlU3BhY2UoJyAnKQorICBQc2lBbm5vdGF0aW9uTWV0aG9kOmYKKyAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lJZGVudGlmaWVyOmYoJ2YnKQorICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUtleXdvcmQ6ZGVmYXVsdCgnZGVmYXVsdCcpCisgICAgUHNpRXJyb3JFbGVtZW50OlZhbHVlIGV4cGVjdGVkCisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lKYXZhVG9rZW46U0VNSUNPTE9OKCc7JykKKyAgUHNpV2hpdGVTcGFjZSgnICcpCisgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9kZWNsYXJhdGlvbnMvVW5jbG9zZWQ3LnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvZGVjbGFyYXRpb25zL1VuY2xvc2VkNy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTI4YzA3MQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvZGVjbGFyYXRpb25zL1VuY2xvc2VkNy50eHQKQEAgLTAsMCArMSwzNyBAQAorUHNpSmF2YUZpbGU6VW5jbG9zZWQ3LmphdmEKKyAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgIFBzaVdoaXRlU3BhY2UoJyAnKQorICBQc2lBbm5vdGF0aW9uTWV0aG9kOmYKKyAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lJZGVudGlmaWVyOmYoJ2YnKQorICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUtleXdvcmQ6ZGVmYXVsdCgnZGVmYXVsdCcpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpQXJyYXlJbml0aWFsaXplck1lbWJlclZhbHVlOnsKKyAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgUHNpRXJyb3JFbGVtZW50OlZhbHVlIGV4cGVjdGVkCisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpRXJyb3JFbGVtZW50Oid9JyBleHBlY3RlZAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lFcnJvckVsZW1lbnQ6J3snIG9yICc7JyBleHBlY3RlZAorICAgICAgPGVtcHR5IGxpc3Q+CisgIFBzaUVycm9yRWxlbWVudDpVbmV4cGVjdGVkIHRva2VuCisgICAgUHNpS2V5d29yZDpyZXR1cm4oJ3JldHVybicpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSmF2YVRva2VuOklOVEVHRVJfTElURVJBTCgnNDInKQorICBQc2lKYXZhVG9rZW46U0VNSUNPTE9OKCc7JykKKyAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgIFBzaVdoaXRlU3BhY2UoJyAnKQorICBQc2lFcnJvckVsZW1lbnQ6VW5wYXJzZWQgdG9rZW5zCisgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL2RlY2xhcmF0aW9ucy9VbmNsb3NlZDgudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9kZWNsYXJhdGlvbnMvVW5jbG9zZWQ4LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NTA1YjgzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9kZWNsYXJhdGlvbnMvVW5jbG9zZWQ4LnR4dApAQCAtMCwwICsxLDIzIEBACitQc2lKYXZhRmlsZTpVbmNsb3NlZDguamF2YQorICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgUHNpV2hpdGVTcGFjZSgnICcpCisgIFBzaU1ldGhvZDpmCisgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSWRlbnRpZmllcjpmKCdmJykKKyAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lLZXl3b3JkOmRlZmF1bHQoJ2RlZmF1bHQnKQorICAgIFBzaUVycm9yRWxlbWVudDoneycgb3IgJzsnIGV4cGVjdGVkCisgICAgICA8ZW1wdHkgbGlzdD4KKyAgUHNpV2hpdGVTcGFjZSgnICcpCisgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9kZWNsYXJhdGlvbnMvVW5jbG9zZWQ5LnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvZGVjbGFyYXRpb25zL1VuY2xvc2VkOS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTFkZjU4ZjUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL2RlY2xhcmF0aW9ucy9VbmNsb3NlZDkudHh0CkBAIC0wLDAgKzEsMjUgQEAKK1BzaUphdmFGaWxlOlVuY2xvc2VkOS5qYXZhCisgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgUHNpTWV0aG9kOmYKKyAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpVHlwZUVsZW1lbnQ6dm9pZAorICAgICAgUHNpS2V5d29yZDp2b2lkKCd2b2lkJykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lJZGVudGlmaWVyOmYoJ2YnKQorICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUtleXdvcmQ6ZGVmYXVsdCgnZGVmYXVsdCcpCisgICAgUHNpRXJyb3JFbGVtZW50Oid7JyBleHBlY3RlZAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSmF2YVRva2VuOlNFTUlDT0xPTignOycpCisgIFBzaVdoaXRlU3BhY2UoJyAnKQorICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvZGVjbGFyYXRpb25zL1VuY2xvc2VkQnJhY2tldC50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL2RlY2xhcmF0aW9ucy9VbmNsb3NlZEJyYWNrZXQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUxNzExOWMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL2RlY2xhcmF0aW9ucy9VbmNsb3NlZEJyYWNrZXQudHh0CkBAIC0wLDAgKzEsMTUgQEAKK1BzaUphdmFGaWxlOlVuY2xvc2VkQnJhY2tldC5qYXZhCisgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgUHNpRmllbGQ6ZmllbGQKKyAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lUeXBlRWxlbWVudDppbnQKKyAgICAgIFBzaUtleXdvcmQ6aW50KCdpbnQnKQorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUlkZW50aWZpZXI6ZmllbGQoJ2ZpZWxkJykKKyAgICBQc2lKYXZhVG9rZW46TEJSQUNLRVQoJ1snKQorICAgIFBzaUVycm9yRWxlbWVudDonXScgZXhwZWN0ZWQKKyAgICAgIDxlbXB0eSBsaXN0PgorICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL2RlY2xhcmF0aW9ucy9VbmNsb3NlZENvbW1hLnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvZGVjbGFyYXRpb25zL1VuY2xvc2VkQ29tbWEudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgzZjllMzIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL2RlY2xhcmF0aW9ucy9VbmNsb3NlZENvbW1hLnR4dApAQCAtMCwwICsxLDE1IEBACitQc2lKYXZhRmlsZTpVbmNsb3NlZENvbW1hLmphdmEKKyAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgIFBzaVdoaXRlU3BhY2UoJyAnKQorICBQc2lGaWVsZDpmaWVsZAorICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVR5cGVFbGVtZW50OmludAorICAgICAgUHNpS2V5d29yZDppbnQoJ2ludCcpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSWRlbnRpZmllcjpmaWVsZCgnZmllbGQnKQorICBQc2lKYXZhVG9rZW46Q09NTUEoJywnKQorICBQc2lFcnJvckVsZW1lbnQ6SWRlbnRpZmllciBleHBlY3RlZAorICAgIDxlbXB0eSBsaXN0PgorICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9kZWNsYXJhdGlvbnMvVW5jbG9zZWRTZW1pY29sb24udHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9kZWNsYXJhdGlvbnMvVW5jbG9zZWRTZW1pY29sb24udHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYxODVlOTgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL2RlY2xhcmF0aW9ucy9VbmNsb3NlZFNlbWljb2xvbi50eHQKQEAgLTAsMCArMSwxNCBAQAorUHNpSmF2YUZpbGU6VW5jbG9zZWRTZW1pY29sb24uamF2YQorICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgUHNpV2hpdGVTcGFjZSgnICcpCisgIFBzaUZpZWxkOmZpZWxkCisgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpVHlwZUVsZW1lbnQ6aW50CisgICAgICBQc2lLZXl3b3JkOmludCgnaW50JykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lJZGVudGlmaWVyOmZpZWxkKCdmaWVsZCcpCisgICAgUHNpRXJyb3JFbGVtZW50Oic7JyBleHBlY3RlZAorICAgICAgPGVtcHR5IGxpc3Q+CisgIFBzaVdoaXRlU3BhY2UoJyAnKQorICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvZGVjbGFyYXRpb25zL1ZhckFyZ0JyYWNrZXRzLnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvZGVjbGFyYXRpb25zL1ZhckFyZ0JyYWNrZXRzLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYTExNzY3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9kZWNsYXJhdGlvbnMvVmFyQXJnQnJhY2tldHMudHh0CkBAIC0wLDAgKzEsMzIgQEAKK1BzaUphdmFGaWxlOlZhckFyZ0JyYWNrZXRzLmphdmEKKyAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgIFBzaVdoaXRlU3BhY2UoJyAnKQorICBQc2lNZXRob2Q6Zm9vCisgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVR5cGVFbGVtZW50OnZvaWQKKyAgICAgIFBzaUtleXdvcmQ6dm9pZCgndm9pZCcpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgUHNpUGFyYW1ldGVyTGlzdDooaW50Li4uIHhbXSkKKyAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICBQc2lQYXJhbWV0ZXI6eAorICAgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgIFBzaVR5cGVFbGVtZW50OmludC4uLgorICAgICAgICAgIFBzaVR5cGVFbGVtZW50OmludAorICAgICAgICAgICAgUHNpS2V5d29yZDppbnQoJ2ludCcpCisgICAgICAgICAgUHNpSmF2YVRva2VuOkVMTElQU0lTKCcuLi4nKQorICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgICAgUHNpSWRlbnRpZmllcjp4KCd4JykKKyAgICAgICAgUHNpRXJyb3JFbGVtZW50OicpJyBleHBlY3RlZAorICAgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0tFVCgnWycpCisgICAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDS0VUKCddJykKKyAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpSmF2YVRva2VuOlNFTUlDT0xPTignOycpCisgIFBzaVdoaXRlU3BhY2UoJyAnKQorICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL2RlY2xhcmF0aW9ucy9XaWxkY2FyZFBhcnNpbmcudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9kZWNsYXJhdGlvbnMvV2lsZGNhcmRQYXJzaW5nLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNDMzODk2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9kZWNsYXJhdGlvbnMvV2lsZGNhcmRQYXJzaW5nLnR4dApAQCAtMCwwICsxLDU1IEBACitQc2lKYXZhRmlsZTpXaWxkY2FyZFBhcnNpbmcuamF2YQorICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgUHNpV2hpdGVTcGFjZSgnICcpCisgIFBzaU1ldGhvZDp4CisgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVR5cGVFbGVtZW50Okxpc3Q8PyBleHRlbmRzIEI+CisgICAgICBQc2lKYXZhQ29kZVJlZmVyZW5jZUVsZW1lbnQ6TGlzdDw/IGV4dGVuZHMgQj4KKyAgICAgICAgUHNpSWRlbnRpZmllcjpMaXN0KCdMaXN0JykKKyAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgIFBzaUphdmFUb2tlbjpMVCgnPCcpCisgICAgICAgICAgUHNpVHlwZUVsZW1lbnQ6PyBleHRlbmRzIEIKKyAgICAgICAgICAgIFBzaUphdmFUb2tlbjpRVUVTVCgnPycpCisgICAgICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgICAgICAgIFBzaUtleXdvcmQ6ZXh0ZW5kcygnZXh0ZW5kcycpCisgICAgICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgICAgICAgIFBzaVR5cGVFbGVtZW50OkIKKyAgICAgICAgICAgICAgUHNpSmF2YUNvZGVSZWZlcmVuY2VFbGVtZW50OkIKKyAgICAgICAgICAgICAgICBQc2lJZGVudGlmaWVyOkIoJ0InKQorICAgICAgICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgIFBzaUphdmFUb2tlbjpHVCgnPicpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSWRlbnRpZmllcjp4KCd4JykKKyAgICBQc2lQYXJhbWV0ZXJMaXN0OihDb2xsZWN0aW9uPD8gc3VwZXIgQj4geCkKKyAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICBQc2lQYXJhbWV0ZXI6eAorICAgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgIFBzaVR5cGVFbGVtZW50OkNvbGxlY3Rpb248PyBzdXBlciBCPgorICAgICAgICAgIFBzaUphdmFDb2RlUmVmZXJlbmNlRWxlbWVudDpDb2xsZWN0aW9uPD8gc3VwZXIgQj4KKyAgICAgICAgICAgIFBzaUlkZW50aWZpZXI6Q29sbGVjdGlvbignQ29sbGVjdGlvbicpCisgICAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICAgIFBzaUphdmFUb2tlbjpMVCgnPCcpCisgICAgICAgICAgICAgIFBzaVR5cGVFbGVtZW50Oj8gc3VwZXIgQgorICAgICAgICAgICAgICAgIFBzaUphdmFUb2tlbjpRVUVTVCgnPycpCisgICAgICAgICAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgICAgICAgICAgUHNpS2V5d29yZDpzdXBlcignc3VwZXInKQorICAgICAgICAgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICAgICAgICAgIFBzaVR5cGVFbGVtZW50OkIKKyAgICAgICAgICAgICAgICAgIFBzaUphdmFDb2RlUmVmZXJlbmNlRWxlbWVudDpCCisgICAgICAgICAgICAgICAgICAgIFBzaUlkZW50aWZpZXI6QignQicpCisgICAgICAgICAgICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOkdUKCc+JykKKyAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgIFBzaUlkZW50aWZpZXI6eCgneCcpCisgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUphdmFUb2tlbjpTRU1JQ09MT04oJzsnKQorICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9leHByZXNzaW9ucy9BbWJpZ3VvdXNMYW1iZGFFeHByZXNzaW9uLnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvZXhwcmVzc2lvbnMvQW1iaWd1b3VzTGFtYmRhRXhwcmVzc2lvbi50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWQ5ZGVjNwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvZXhwcmVzc2lvbnMvQW1iaWd1b3VzTGFtYmRhRXhwcmVzc2lvbi50eHQKQEAgLTAsMCArMSw1MiBAQAorUHNpSmF2YUZpbGU6QW1iaWd1b3VzTGFtYmRhRXhwcmVzc2lvbi5qYXZhCisgIFBzaU1ldGhvZENhbGxFeHByZXNzaW9uOmYoICh4KSA8IHkgLCB6ID4gKHcpIC0+IHYgKQorICAgIFBzaVJlZmVyZW5jZUV4cHJlc3Npb246ZgorICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUlkZW50aWZpZXI6ZignZicpCisgICAgUHNpRXhwcmVzc2lvbkxpc3QKKyAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUJpbmFyeUV4cHJlc3Npb246KHgpIDwgeQorICAgICAgICBQc2lQYXJlbnRoZXNpemVkRXhwcmVzc2lvbjooeCkKKyAgICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICAgIFBzaVJlZmVyZW5jZUV4cHJlc3Npb246eAorICAgICAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICAgIFBzaUlkZW50aWZpZXI6eCgneCcpCisgICAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgIFBzaUphdmFUb2tlbjpMVCgnPCcpCisgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICBQc2lSZWZlcmVuY2VFeHByZXNzaW9uOnkKKyAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICBQc2lJZGVudGlmaWVyOnkoJ3knKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lKYXZhVG9rZW46Q09NTUEoJywnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lCaW5hcnlFeHByZXNzaW9uOnogPiAodykgLT4gdgorICAgICAgICBQc2lSZWZlcmVuY2VFeHByZXNzaW9uOnoKKyAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICBQc2lJZGVudGlmaWVyOnooJ3onKQorICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgICAgUHNpSmF2YVRva2VuOkdUKCc+JykKKyAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgIFBzaUxhbWJkYUV4cHJlc3Npb246KHcpIC0+IHYKKyAgICAgICAgICBQc2lQYXJhbWV0ZXJMaXN0Oih3KQorICAgICAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgICAgIFBzaVBhcmFtZXRlcjp3CisgICAgICAgICAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICAgICAgUHNpSWRlbnRpZmllcjp3KCd3JykKKyAgICAgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgICAgUHNpSmF2YVRva2VuOkFSUk9XKCctPicpCisgICAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgICAgUHNpUmVmZXJlbmNlRXhwcmVzc2lvbjp2CisgICAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgICAgUHNpSWRlbnRpZmllcjp2KCd2JykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL2V4cHJlc3Npb25zL0FycmF5SW5pdGlhbGl6ZXIwLnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvZXhwcmVzc2lvbnMvQXJyYXlJbml0aWFsaXplcjAudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUwOGQwZGEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL2V4cHJlc3Npb25zL0FycmF5SW5pdGlhbGl6ZXIwLnR4dApAQCAtMCwwICsxLDUgQEAKK1BzaUphdmFGaWxlOkFycmF5SW5pdGlhbGl6ZXIwLmphdmEKKyAgUHNpQXJyYXlJbml0aWFsaXplckV4cHJlc3Npb246eyB9CisgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL2V4cHJlc3Npb25zL0FycmF5SW5pdGlhbGl6ZXIxLnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvZXhwcmVzc2lvbnMvQXJyYXlJbml0aWFsaXplcjEudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIzYTcxNDMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL2V4cHJlc3Npb25zL0FycmF5SW5pdGlhbGl6ZXIxLnR4dApAQCAtMCwwICsxLDggQEAKK1BzaUphdmFGaWxlOkFycmF5SW5pdGlhbGl6ZXIxLmphdmEKKyAgUHNpQXJyYXlJbml0aWFsaXplckV4cHJlc3Npb246eyAxIH0KKyAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lMaXRlcmFsRXhwcmVzc2lvbjoxCisgICAgICBQc2lKYXZhVG9rZW46SU5URUdFUl9MSVRFUkFMKCcxJykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvZXhwcmVzc2lvbnMvQXJyYXlJbml0aWFsaXplcjIudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9leHByZXNzaW9ucy9BcnJheUluaXRpYWxpemVyMi50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzVhNDBhZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvZXhwcmVzc2lvbnMvQXJyYXlJbml0aWFsaXplcjIudHh0CkBAIC0wLDAgKzEsOSBAQAorUHNpSmF2YUZpbGU6QXJyYXlJbml0aWFsaXplcjIuamF2YQorICBQc2lBcnJheUluaXRpYWxpemVyRXhwcmVzc2lvbjp7IDEsIH0KKyAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lMaXRlcmFsRXhwcmVzc2lvbjoxCisgICAgICBQc2lKYXZhVG9rZW46SU5URUdFUl9MSVRFUkFMKCcxJykKKyAgICBQc2lKYXZhVG9rZW46Q09NTUEoJywnKQorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9leHByZXNzaW9ucy9BcnJheUluaXRpYWxpemVyMy50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL2V4cHJlc3Npb25zL0FycmF5SW5pdGlhbGl6ZXIzLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MWFmNDlkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9leHByZXNzaW9ucy9BcnJheUluaXRpYWxpemVyMy50eHQKQEAgLTAsMCArMSwxMSBAQAorUHNpSmF2YUZpbGU6QXJyYXlJbml0aWFsaXplcjMuamF2YQorICBQc2lBcnJheUluaXRpYWxpemVyRXhwcmVzc2lvbjp7IDEsMiB9CisgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpTGl0ZXJhbEV4cHJlc3Npb246MQorICAgICAgUHNpSmF2YVRva2VuOklOVEVHRVJfTElURVJBTCgnMScpCisgICAgUHNpSmF2YVRva2VuOkNPTU1BKCcsJykKKyAgICBQc2lMaXRlcmFsRXhwcmVzc2lvbjoyCisgICAgICBQc2lKYXZhVG9rZW46SU5URUdFUl9MSVRFUkFMKCcyJykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvZXhwcmVzc2lvbnMvQXJyYXlJbml0aWFsaXplcjQudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9leHByZXNzaW9ucy9BcnJheUluaXRpYWxpemVyNC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZThiMzRlYgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvZXhwcmVzc2lvbnMvQXJyYXlJbml0aWFsaXplcjQudHh0CkBAIC0wLDAgKzEsMTMgQEAKK1BzaUphdmFGaWxlOkFycmF5SW5pdGlhbGl6ZXI0LmphdmEKKyAgUHNpQXJyYXlJbml0aWFsaXplckV4cHJlc3Npb246eyAxIDIgfQorICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUxpdGVyYWxFeHByZXNzaW9uOjEKKyAgICAgIFBzaUphdmFUb2tlbjpJTlRFR0VSX0xJVEVSQUwoJzEnKQorICAgIFBzaUVycm9yRWxlbWVudDonLCcgZXhwZWN0ZWQKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUxpdGVyYWxFeHByZXNzaW9uOjIKKyAgICAgIFBzaUphdmFUb2tlbjpJTlRFR0VSX0xJVEVSQUwoJzInKQorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9leHByZXNzaW9ucy9BcnJheUluaXRpYWxpemVyNS50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL2V4cHJlc3Npb25zL0FycmF5SW5pdGlhbGl6ZXI1LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NjEzZWNjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9leHByZXNzaW9ucy9BcnJheUluaXRpYWxpemVyNS50eHQKQEAgLTAsMCArMSwxMiBAQAorUHNpSmF2YUZpbGU6QXJyYXlJbml0aWFsaXplcjUuamF2YQorICBQc2lBcnJheUluaXRpYWxpemVyRXhwcmVzc2lvbjp7IHsgfQorICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUFycmF5SW5pdGlhbGl6ZXJFeHByZXNzaW9uOnsgfQorICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaUVycm9yRWxlbWVudDonLCcgZXhwZWN0ZWQKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUVycm9yRWxlbWVudDonfScgZXhwZWN0ZWQKKyAgICAgIDxlbXB0eSBsaXN0PgpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9leHByZXNzaW9ucy9BcnJheUluaXRpYWxpemVyNi50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL2V4cHJlc3Npb25zL0FycmF5SW5pdGlhbGl6ZXI2LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZGJhMWE2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9leHByZXNzaW9ucy9BcnJheUluaXRpYWxpemVyNi50eHQKQEAgLTAsMCArMSw3IEBACitQc2lKYXZhRmlsZTpBcnJheUluaXRpYWxpemVyNi5qYXZhCisgIFBzaUFycmF5SW5pdGlhbGl6ZXJFeHByZXNzaW9uOnsgICwgIH0KKyAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgICcpCisgICAgUHNpSmF2YVRva2VuOkNPTU1BKCcsJykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgICcpCisgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL2V4cHJlc3Npb25zL0FycmF5SW5pdGlhbGl6ZXI3LnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvZXhwcmVzc2lvbnMvQXJyYXlJbml0aWFsaXplcjcudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMzMzEzMmIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL2V4cHJlc3Npb25zL0FycmF5SW5pdGlhbGl6ZXI3LnR4dApAQCAtMCwwICsxLDE2IEBACitQc2lKYXZhRmlsZTpBcnJheUluaXRpYWxpemVyNy5qYXZhCisgIFBzaUFycmF5SW5pdGlhbGl6ZXJFeHByZXNzaW9uOnsgICwgICwgNyB9CisgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgUHNpRXJyb3JFbGVtZW50OkV4cHJlc3Npb24gZXhwZWN0ZWQKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVdoaXRlU3BhY2UoJyAgJykKKyAgICBQc2lKYXZhVG9rZW46Q09NTUEoJywnKQorICAgIFBzaUVycm9yRWxlbWVudDpFeHByZXNzaW9uIGV4cGVjdGVkCisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lXaGl0ZVNwYWNlKCcgICcpCisgICAgUHNpSmF2YVRva2VuOkNPTU1BKCcsJykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lMaXRlcmFsRXhwcmVzc2lvbjo3CisgICAgICBQc2lKYXZhVG9rZW46SU5URUdFUl9MSVRFUkFMKCc3JykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvZXhwcmVzc2lvbnMvQXNzaWdubWVudDAudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9leHByZXNzaW9ucy9Bc3NpZ25tZW50MC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTJhOGU3MAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvZXhwcmVzc2lvbnMvQXNzaWdubWVudDAudHh0CkBAIC0wLDAgKzEsMTEgQEAKK1BzaUphdmFGaWxlOkFzc2lnbm1lbnQwLmphdmEKKyAgUHNpQXNzaWdubWVudEV4cHJlc3Npb246YSA9IDAKKyAgICBQc2lSZWZlcmVuY2VFeHByZXNzaW9uOmEKKyAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lJZGVudGlmaWVyOmEoJ2EnKQorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUphdmFUb2tlbjpFUSgnPScpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpTGl0ZXJhbEV4cHJlc3Npb246MAorICAgICAgUHNpSmF2YVRva2VuOklOVEVHRVJfTElURVJBTCgnMCcpCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL2V4cHJlc3Npb25zL0Fzc2lnbm1lbnQxLnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvZXhwcmVzc2lvbnMvQXNzaWdubWVudDEudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJlNDAwMWUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL2V4cHJlc3Npb25zL0Fzc2lnbm1lbnQxLnR4dApAQCAtMCwwICsxLDEwIEBACitQc2lKYXZhRmlsZTpBc3NpZ25tZW50MS5qYXZhCisgIFBzaUFzc2lnbm1lbnRFeHByZXNzaW9uOmEgPQorICAgIFBzaVJlZmVyZW5jZUV4cHJlc3Npb246YQorICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUlkZW50aWZpZXI6YSgnYScpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSmF2YVRva2VuOkVRKCc9JykKKyAgICBQc2lFcnJvckVsZW1lbnQ6RXhwcmVzc2lvbiBleHBlY3RlZAorICAgICAgPGVtcHR5IGxpc3Q+CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL2V4cHJlc3Npb25zL0JpbmFyeTAudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9leHByZXNzaW9ucy9CaW5hcnkwLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iODVmNWU2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9leHByZXNzaW9ucy9CaW5hcnkwLnR4dApAQCAtMCwwICsxLDEzIEBACitQc2lKYXZhRmlsZTpCaW5hcnkwLmphdmEKKyAgUHNpQmluYXJ5RXhwcmVzc2lvbjphICsgYgorICAgIFBzaVJlZmVyZW5jZUV4cHJlc3Npb246YQorICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUlkZW50aWZpZXI6YSgnYScpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSmF2YVRva2VuOlBMVVMoJysnKQorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaVJlZmVyZW5jZUV4cHJlc3Npb246YgorICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUlkZW50aWZpZXI6YignYicpCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL2V4cHJlc3Npb25zL0JpbmFyeTEudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9leHByZXNzaW9ucy9CaW5hcnkxLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMWJkY2NjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9leHByZXNzaW9ucy9CaW5hcnkxLnR4dApAQCAtMCwwICsxLDEzIEBACitQc2lKYXZhRmlsZTpCaW5hcnkxLmphdmEKKyAgUHNpQmluYXJ5RXhwcmVzc2lvbjphIDwgYgorICAgIFBzaVJlZmVyZW5jZUV4cHJlc3Npb246YQorICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUlkZW50aWZpZXI6YSgnYScpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSmF2YVRva2VuOkxUKCc8JykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lSZWZlcmVuY2VFeHByZXNzaW9uOmIKKyAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lJZGVudGlmaWVyOmIoJ2InKQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9leHByZXNzaW9ucy9CaW5hcnkyLnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvZXhwcmVzc2lvbnMvQmluYXJ5Mi50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjllNjAzOAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvZXhwcmVzc2lvbnMvQmluYXJ5Mi50eHQKQEAgLTAsMCArMSwxOCBAQAorUHNpSmF2YUZpbGU6QmluYXJ5Mi5qYXZhCisgIFBzaUFzc2lnbm1lbnRFeHByZXNzaW9uOmEgPiA9IGIKKyAgICBQc2lCaW5hcnlFeHByZXNzaW9uOmEgPgorICAgICAgUHNpUmVmZXJlbmNlRXhwcmVzc2lvbjphCisgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgUHNpSWRlbnRpZmllcjphKCdhJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSmF2YVRva2VuOkdUKCc+JykKKyAgICAgIFBzaUVycm9yRWxlbWVudDpFeHByZXNzaW9uIGV4cGVjdGVkCisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUphdmFUb2tlbjpFUSgnPScpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpUmVmZXJlbmNlRXhwcmVzc2lvbjpiCisgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpSWRlbnRpZmllcjpiKCdiJykKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL2V4cHJlc3Npb25zL0JpbmFyeTMudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9leHByZXNzaW9ucy9CaW5hcnkzLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZTVhMDcxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9leHByZXNzaW9ucy9CaW5hcnkzLnR4dApAQCAtMCwwICsxLDE4IEBACitQc2lKYXZhRmlsZTpCaW5hcnkzLmphdmEKKyAgUHNpQXNzaWdubWVudEV4cHJlc3Npb246YSA+LyoqLz0gYgorICAgIFBzaUJpbmFyeUV4cHJlc3Npb246YSA+CisgICAgICBQc2lSZWZlcmVuY2VFeHByZXNzaW9uOmEKKyAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICBQc2lJZGVudGlmaWVyOmEoJ2EnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lKYXZhVG9rZW46R1QoJz4nKQorICAgICAgUHNpRXJyb3JFbGVtZW50OkV4cHJlc3Npb24gZXhwZWN0ZWQKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpQ29tbWVudChDX1NUWUxFX0NPTU1FTlQpKCcvKiovJykKKyAgICBQc2lKYXZhVG9rZW46RVEoJz0nKQorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaVJlZmVyZW5jZUV4cHJlc3Npb246YgorICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUlkZW50aWZpZXI6YignYicpClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9leHByZXNzaW9ucy9DYXN0LnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvZXhwcmVzc2lvbnMvQ2FzdC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGJjYmU3OQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvZXhwcmVzc2lvbnMvQ2FzdC50eHQKQEAgLTAsMCArMSwxMyBAQAorUHNpSmF2YUZpbGU6Q2FzdC5qYXZhCisgIFBzaVR5cGVDYXN0RXhwcmVzc2lvbjooVHlwZSl2YXIKKyAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgIFBzaVR5cGVFbGVtZW50OlR5cGUKKyAgICAgIFBzaUphdmFDb2RlUmVmZXJlbmNlRWxlbWVudDpUeXBlCisgICAgICAgIFBzaUlkZW50aWZpZXI6VHlwZSgnVHlwZScpCisgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgIFBzaVJlZmVyZW5jZUV4cHJlc3Npb246dmFyCisgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpSWRlbnRpZmllcjp2YXIoJ3ZhcicpCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL2V4cHJlc3Npb25zL0NoYWluZWRDbGFzc09iamVjdEFjY2Vzcy50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL2V4cHJlc3Npb25zL0NoYWluZWRDbGFzc09iamVjdEFjY2Vzcy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2ZjN2MyZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvZXhwcmVzc2lvbnMvQ2hhaW5lZENsYXNzT2JqZWN0QWNjZXNzLnR4dApAQCAtMCwwICsxLDE5IEBACitQc2lKYXZhRmlsZTpDaGFpbmVkQ2xhc3NPYmplY3RBY2Nlc3MuamF2YQorICBQc2lSZWZlcmVuY2VFeHByZXNzaW9uOkEuY2xhc3MuQgorICAgIFBzaUNsYXNzT2JqZWN0QWNjZXNzRXhwcmVzc2lvbjpBLmNsYXNzCisgICAgICBQc2lUeXBlRWxlbWVudDpBCisgICAgICAgIFBzaUphdmFDb2RlUmVmZXJlbmNlRWxlbWVudDpBCisgICAgICAgICAgUHNpSWRlbnRpZmllcjpBKCdBJykKKyAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUphdmFUb2tlbjpET1QoJy4nKQorICAgICAgUHNpS2V5d29yZDpjbGFzcygnY2xhc3MnKQorICAgIFBzaUphdmFUb2tlbjpET1QoJy4nKQorICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUlkZW50aWZpZXI6QignQicpCisgIFBzaUphdmFUb2tlbjpET1QoJy4nKQorICBQc2lFcnJvckVsZW1lbnQ6SWRlbnRpZmllciBleHBlY3RlZAorICAgIDxlbXB0eSBsaXN0PgorICBQc2lFcnJvckVsZW1lbnQ6VW5wYXJzZWQgdG9rZW5zCisgICAgUHNpS2V5d29yZDpjbGFzcygnY2xhc3MnKQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvZXhwcmVzc2lvbnMvQ2hhaW5lZFRoaXNPYmplY3RBY2Nlc3MudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9leHByZXNzaW9ucy9DaGFpbmVkVGhpc09iamVjdEFjY2Vzcy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmY2YjU2MAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvZXhwcmVzc2lvbnMvQ2hhaW5lZFRoaXNPYmplY3RBY2Nlc3MudHh0CkBAIC0wLDAgKzEsMTYgQEAKK1BzaUphdmFGaWxlOkNoYWluZWRUaGlzT2JqZWN0QWNjZXNzLmphdmEKKyAgUHNpUmVmZXJlbmNlRXhwcmVzc2lvbjpBLnRoaXMuQgorICAgIFBzaVRoaXNFeHByZXNzaW9uOkEudGhpcworICAgICAgUHNpSmF2YUNvZGVSZWZlcmVuY2VFbGVtZW50OkEKKyAgICAgICAgUHNpSWRlbnRpZmllcjpBKCdBJykKKyAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpSmF2YVRva2VuOkRPVCgnLicpCisgICAgICBQc2lLZXl3b3JkOnRoaXMoJ3RoaXMnKQorICAgIFBzaUphdmFUb2tlbjpET1QoJy4nKQorICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUlkZW50aWZpZXI6QignQicpCisgIFBzaUVycm9yRWxlbWVudDpVbnBhcnNlZCB0b2tlbnMKKyAgICBQc2lKYXZhVG9rZW46RE9UKCcuJykKKyAgICBQc2lLZXl3b3JkOnRoaXMoJ3RoaXMnKQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvZXhwcmVzc2lvbnMvQ29uZDAudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9leHByZXNzaW9ucy9Db25kMC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjkxYWMzMQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvZXhwcmVzc2lvbnMvQ29uZDAudHh0CkBAIC0wLDAgKzEsMTYgQEAKK1BzaUphdmFGaWxlOkNvbmQwLmphdmEKKyAgUHNpQ29uZGl0aW9uYWxFeHByZXNzaW9uOmNvbmQgPyB0cnVlIDogZmFsc2UKKyAgICBQc2lSZWZlcmVuY2VFeHByZXNzaW9uOmNvbmQKKyAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lJZGVudGlmaWVyOmNvbmQoJ2NvbmQnKQorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUphdmFUb2tlbjpRVUVTVCgnPycpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpTGl0ZXJhbEV4cHJlc3Npb246dHJ1ZQorICAgICAgUHNpSmF2YVRva2VuOlRSVUVfS0VZV09SRCgndHJ1ZScpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSmF2YVRva2VuOkNPTE9OKCc6JykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lMaXRlcmFsRXhwcmVzc2lvbjpmYWxzZQorICAgICAgUHNpSmF2YVRva2VuOkZBTFNFX0tFWVdPUkQoJ2ZhbHNlJykKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvZXhwcmVzc2lvbnMvQ29uZDEudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9leHByZXNzaW9ucy9Db25kMS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTQ0ZGRjZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvZXhwcmVzc2lvbnMvQ29uZDEudHh0CkBAIC0wLDAgKzEsMTAgQEAKK1BzaUphdmFGaWxlOkNvbmQxLmphdmEKKyAgUHNpQ29uZGl0aW9uYWxFeHByZXNzaW9uOmNvbmQgPworICAgIFBzaVJlZmVyZW5jZUV4cHJlc3Npb246Y29uZAorICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUlkZW50aWZpZXI6Y29uZCgnY29uZCcpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSmF2YVRva2VuOlFVRVNUKCc/JykKKyAgICBQc2lFcnJvckVsZW1lbnQ6RXhwcmVzc2lvbiBleHBlY3RlZAorICAgICAgPGVtcHR5IGxpc3Q+CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL2V4cHJlc3Npb25zL0NvbmQyLnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvZXhwcmVzc2lvbnMvQ29uZDIudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk1ZTdlNjgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL2V4cHJlc3Npb25zL0NvbmQyLnR4dApAQCAtMCwwICsxLDEzIEBACitQc2lKYXZhRmlsZTpDb25kMi5qYXZhCisgIFBzaUNvbmRpdGlvbmFsRXhwcmVzc2lvbjpjb25kID8gdHJ1ZQorICAgIFBzaVJlZmVyZW5jZUV4cHJlc3Npb246Y29uZAorICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUlkZW50aWZpZXI6Y29uZCgnY29uZCcpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSmF2YVRva2VuOlFVRVNUKCc/JykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lMaXRlcmFsRXhwcmVzc2lvbjp0cnVlCisgICAgICBQc2lKYXZhVG9rZW46VFJVRV9LRVlXT1JEKCd0cnVlJykKKyAgICBQc2lFcnJvckVsZW1lbnQ6JzonIGV4cGVjdGVkCisgICAgICA8ZW1wdHkgbGlzdD4KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvZXhwcmVzc2lvbnMvQ29uZDMudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9leHByZXNzaW9ucy9Db25kMy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTBmOWQ4MgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvZXhwcmVzc2lvbnMvQ29uZDMudHh0CkBAIC0wLDAgKzEsMTUgQEAKK1BzaUphdmFGaWxlOkNvbmQzLmphdmEKKyAgUHNpQ29uZGl0aW9uYWxFeHByZXNzaW9uOmNvbmQgPyB0cnVlIDoKKyAgICBQc2lSZWZlcmVuY2VFeHByZXNzaW9uOmNvbmQKKyAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lJZGVudGlmaWVyOmNvbmQoJ2NvbmQnKQorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUphdmFUb2tlbjpRVUVTVCgnPycpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpTGl0ZXJhbEV4cHJlc3Npb246dHJ1ZQorICAgICAgUHNpSmF2YVRva2VuOlRSVUVfS0VZV09SRCgndHJ1ZScpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSmF2YVRva2VuOkNPTE9OKCc6JykKKyAgICBQc2lFcnJvckVsZW1lbnQ6RXhwcmVzc2lvbiBleHBlY3RlZAorICAgICAgPGVtcHR5IGxpc3Q+CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL2V4cHJlc3Npb25zL0NvbmRPcjAudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9leHByZXNzaW9ucy9Db25kT3IwLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NWRmODlkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9leHByZXNzaW9ucy9Db25kT3IwLnR4dApAQCAtMCwwICsxLDIwIEBACitQc2lKYXZhRmlsZTpDb25kT3IwLmphdmEKKyAgUHNpUG9seWFkaWNFeHByZXNzaW9uOiBhIHx8IGIgfHwgYworICAgIFBzaVJlZmVyZW5jZUV4cHJlc3Npb246YQorICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUlkZW50aWZpZXI6YSgnYScpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSmF2YVRva2VuOk9ST1IoJ3x8JykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lSZWZlcmVuY2VFeHByZXNzaW9uOmIKKyAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lJZGVudGlmaWVyOmIoJ2InKQorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUphdmFUb2tlbjpPUk9SKCd8fCcpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpUmVmZXJlbmNlRXhwcmVzc2lvbjpjCisgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpSWRlbnRpZmllcjpjKCdjJykKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL2V4cHJlc3Npb25zL0NvbmRPcjEudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9leHByZXNzaW9ucy9Db25kT3IxLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZDE3YmQ5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9leHByZXNzaW9ucy9Db25kT3IxLnR4dApAQCAtMCwwICsxLDEwIEBACitQc2lKYXZhRmlsZTpDb25kT3IxLmphdmEKKyAgUHNpQmluYXJ5RXhwcmVzc2lvbjphIHx8CisgICAgUHNpUmVmZXJlbmNlRXhwcmVzc2lvbjphCisgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpSWRlbnRpZmllcjphKCdhJykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lKYXZhVG9rZW46T1JPUignfHwnKQorICAgIFBzaUVycm9yRWxlbWVudDpFeHByZXNzaW9uIGV4cGVjdGVkCisgICAgICA8ZW1wdHkgbGlzdD4KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvZXhwcmVzc2lvbnMvRXhwckxpc3QwLnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvZXhwcmVzc2lvbnMvRXhwckxpc3QwLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xOWRmZTM5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9leHByZXNzaW9ucy9FeHByTGlzdDAudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1BzaUphdmFGaWxlOkV4cHJMaXN0MC5qYXZhCisgIFBzaU1ldGhvZENhbGxFeHByZXNzaW9uOmYoMSwyKQorICAgIFBzaVJlZmVyZW5jZUV4cHJlc3Npb246ZgorICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUlkZW50aWZpZXI6ZignZicpCisgICAgUHNpRXhwcmVzc2lvbkxpc3QKKyAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICBQc2lMaXRlcmFsRXhwcmVzc2lvbjoxCisgICAgICAgIFBzaUphdmFUb2tlbjpJTlRFR0VSX0xJVEVSQUwoJzEnKQorICAgICAgUHNpSmF2YVRva2VuOkNPTU1BKCcsJykKKyAgICAgIFBzaUxpdGVyYWxFeHByZXNzaW9uOjIKKyAgICAgICAgUHNpSmF2YVRva2VuOklOVEVHRVJfTElURVJBTCgnMicpCisgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9leHByZXNzaW9ucy9FeHByTGlzdDEudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9leHByZXNzaW9ucy9FeHByTGlzdDEudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFiMjcxNjUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL2V4cHJlc3Npb25zL0V4cHJMaXN0MS50eHQKQEAgLTAsMCArMSwxMCBAQAorUHNpSmF2YUZpbGU6RXhwckxpc3QxLmphdmEKKyAgUHNpTWV0aG9kQ2FsbEV4cHJlc3Npb246ZigKKyAgICBQc2lSZWZlcmVuY2VFeHByZXNzaW9uOmYKKyAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lJZGVudGlmaWVyOmYoJ2YnKQorICAgIFBzaUV4cHJlc3Npb25MaXN0CisgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgUHNpRXJyb3JFbGVtZW50OicpJyBleHBlY3RlZAorICAgICAgICA8ZW1wdHkgbGlzdD4KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvZXhwcmVzc2lvbnMvRXhwckxpc3QyLnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvZXhwcmVzc2lvbnMvRXhwckxpc3QyLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYzVhMTNiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9leHByZXNzaW9ucy9FeHByTGlzdDIudHh0CkBAIC0wLDAgKzEsMTIgQEAKK1BzaUphdmFGaWxlOkV4cHJMaXN0Mi5qYXZhCisgIFBzaU1ldGhvZENhbGxFeHByZXNzaW9uOmYoMQorICAgIFBzaVJlZmVyZW5jZUV4cHJlc3Npb246ZgorICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUlkZW50aWZpZXI6ZignZicpCisgICAgUHNpRXhwcmVzc2lvbkxpc3QKKyAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICBQc2lMaXRlcmFsRXhwcmVzc2lvbjoxCisgICAgICAgIFBzaUphdmFUb2tlbjpJTlRFR0VSX0xJVEVSQUwoJzEnKQorICAgICAgUHNpRXJyb3JFbGVtZW50OicpJyBleHBlY3RlZAorICAgICAgICA8ZW1wdHkgbGlzdD4KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvZXhwcmVzc2lvbnMvRXhwckxpc3QzLnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvZXhwcmVzc2lvbnMvRXhwckxpc3QzLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YWIzY2JkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9leHByZXNzaW9ucy9FeHByTGlzdDMudHh0CkBAIC0wLDAgKzEsMTcgQEAKK1BzaUphdmFGaWxlOkV4cHJMaXN0My5qYXZhCisgIFBzaU1ldGhvZENhbGxFeHByZXNzaW9uOmYoMSwKKyAgICBQc2lSZWZlcmVuY2VFeHByZXNzaW9uOmYKKyAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lJZGVudGlmaWVyOmYoJ2YnKQorICAgIFBzaUV4cHJlc3Npb25MaXN0CisgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgUHNpTGl0ZXJhbEV4cHJlc3Npb246MQorICAgICAgICBQc2lKYXZhVG9rZW46SU5URUdFUl9MSVRFUkFMKCcxJykKKyAgICAgIFBzaUphdmFUb2tlbjpDT01NQSgnLCcpCisgICAgICBQc2lFcnJvckVsZW1lbnQ6RXhwcmVzc2lvbiBleHBlY3RlZAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUV4cHJlc3Npb24oZW1wdHkpCisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpRXJyb3JFbGVtZW50OicpJyBleHBlY3RlZAorICAgICAgICA8ZW1wdHkgbGlzdD4KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvZXhwcmVzc2lvbnMvRXhwckxpc3Q0LnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvZXhwcmVzc2lvbnMvRXhwckxpc3Q0LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZjFkNTMzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9leHByZXNzaW9ucy9FeHByTGlzdDQudHh0CkBAIC0wLDAgKzEsMTYgQEAKK1BzaUphdmFGaWxlOkV4cHJMaXN0NC5qYXZhCisgIFBzaU1ldGhvZENhbGxFeHByZXNzaW9uOmYoMSwpCisgICAgUHNpUmVmZXJlbmNlRXhwcmVzc2lvbjpmCisgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpSWRlbnRpZmllcjpmKCdmJykKKyAgICBQc2lFeHByZXNzaW9uTGlzdAorICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgIFBzaUxpdGVyYWxFeHByZXNzaW9uOjEKKyAgICAgICAgUHNpSmF2YVRva2VuOklOVEVHRVJfTElURVJBTCgnMScpCisgICAgICBQc2lKYXZhVG9rZW46Q09NTUEoJywnKQorICAgICAgUHNpRXJyb3JFbGVtZW50OkV4cHJlc3Npb24gZXhwZWN0ZWQKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lFeHByZXNzaW9uKGVtcHR5KQorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL2V4cHJlc3Npb25zL0V4cHJMaXN0NS50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL2V4cHJlc3Npb25zL0V4cHJMaXN0NS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzlkYjc2YgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvZXhwcmVzc2lvbnMvRXhwckxpc3Q1LnR4dApAQCAtMCwwICsxLDE5IEBACitQc2lKYXZhRmlsZTpFeHByTGlzdDUuamF2YQorICBQc2lNZXRob2RDYWxsRXhwcmVzc2lvbjpmKDEsLDIpCisgICAgUHNpUmVmZXJlbmNlRXhwcmVzc2lvbjpmCisgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpSWRlbnRpZmllcjpmKCdmJykKKyAgICBQc2lFeHByZXNzaW9uTGlzdAorICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgIFBzaUxpdGVyYWxFeHByZXNzaW9uOjEKKyAgICAgICAgUHNpSmF2YVRva2VuOklOVEVHRVJfTElURVJBTCgnMScpCisgICAgICBQc2lKYXZhVG9rZW46Q09NTUEoJywnKQorICAgICAgUHNpRXJyb3JFbGVtZW50OkV4cHJlc3Npb24gZXhwZWN0ZWQKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lFeHByZXNzaW9uKGVtcHR5KQorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUphdmFUb2tlbjpDT01NQSgnLCcpCisgICAgICBQc2lMaXRlcmFsRXhwcmVzc2lvbjoyCisgICAgICAgIFBzaUphdmFUb2tlbjpJTlRFR0VSX0xJVEVSQUwoJzInKQorICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvZXhwcmVzc2lvbnMvRXhwckxpc3Q2LnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvZXhwcmVzc2lvbnMvRXhwckxpc3Q2LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YWZhMDgyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9leHByZXNzaW9ucy9FeHByTGlzdDYudHh0CkBAIC0wLDAgKzEsMTYgQEAKK1BzaUphdmFGaWxlOkV4cHJMaXN0Ni5qYXZhCisgIFBzaU1ldGhvZENhbGxFeHByZXNzaW9uOmYoLDIpCisgICAgUHNpUmVmZXJlbmNlRXhwcmVzc2lvbjpmCisgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpSWRlbnRpZmllcjpmKCdmJykKKyAgICBQc2lFeHByZXNzaW9uTGlzdAorICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgIFBzaUVycm9yRWxlbWVudDpFeHByZXNzaW9uIGV4cGVjdGVkCisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpRXhwcmVzc2lvbihlbXB0eSkKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lKYXZhVG9rZW46Q09NTUEoJywnKQorICAgICAgUHNpTGl0ZXJhbEV4cHJlc3Npb246MgorICAgICAgICBQc2lKYXZhVG9rZW46SU5URUdFUl9MSVRFUkFMKCcyJykKKyAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL2V4cHJlc3Npb25zL0dFMC50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL2V4cHJlc3Npb25zL0dFMC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjQ0NWVkMgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvZXhwcmVzc2lvbnMvR0UwLnR4dApAQCAtMCwwICsxLDE3IEBACitQc2lKYXZhRmlsZTpHRTAuamF2YQorICBQc2lBc3NpZ25tZW50RXhwcmVzc2lvbjp4ID4+Pj0gOCA+PiAyCisgICAgUHNpUmVmZXJlbmNlRXhwcmVzc2lvbjp4CisgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpSWRlbnRpZmllcjp4KCd4JykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lKYXZhVG9rZW46R1RHVEdURVEoJz4+Pj0nKQorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUJpbmFyeUV4cHJlc3Npb246OCA+PiAyCisgICAgICBQc2lMaXRlcmFsRXhwcmVzc2lvbjo4CisgICAgICAgIFBzaUphdmFUb2tlbjpJTlRFR0VSX0xJVEVSQUwoJzgnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lKYXZhVG9rZW46R1RHVCgnPj4nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lMaXRlcmFsRXhwcmVzc2lvbjoyCisgICAgICAgIFBzaUphdmFUb2tlbjpJTlRFR0VSX0xJVEVSQUwoJzInKQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9leHByZXNzaW9ucy9HRTEudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9leHByZXNzaW9ucy9HRTEudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY5MzFiNGUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL2V4cHJlc3Npb25zL0dFMS50eHQKQEAgLTAsMCArMSwxMSBAQAorUHNpSmF2YUZpbGU6R0UxLmphdmEKKyAgUHNpQmluYXJ5RXhwcmVzc2lvbjp4ID49IDIKKyAgICBQc2lSZWZlcmVuY2VFeHByZXNzaW9uOngKKyAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lJZGVudGlmaWVyOngoJ3gnKQorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUphdmFUb2tlbjpHRSgnPj0nKQorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUxpdGVyYWxFeHByZXNzaW9uOjIKKyAgICAgIFBzaUphdmFUb2tlbjpJTlRFR0VSX0xJVEVSQUwoJzInKQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvZXhwcmVzc2lvbnMvSWxsZWdhbEJvdW5kLnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvZXhwcmVzc2lvbnMvSWxsZWdhbEJvdW5kLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42Nzk5ZTM3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9leHByZXNzaW9ucy9JbGxlZ2FsQm91bmQudHh0CkBAIC0wLDAgKzEsMjggQEAKK1BzaUphdmFGaWxlOklsbGVnYWxCb3VuZC5qYXZhCisgIFBzaU1ldGhvZENhbGxFeHByZXNzaW9uOkMuPFQgZXh0ZW5kcyBTPmZvbygpCisgICAgUHNpUmVmZXJlbmNlRXhwcmVzc2lvbjpDLjxUIGV4dGVuZHMgUz5mb28KKyAgICAgIFBzaVJlZmVyZW5jZUV4cHJlc3Npb246QworICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgIFBzaUlkZW50aWZpZXI6QygnQycpCisgICAgICBQc2lKYXZhVG9rZW46RE9UKCcuJykKKyAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgUHNpSmF2YVRva2VuOkxUKCc8JykKKyAgICAgICAgUHNpVHlwZUVsZW1lbnQ6VAorICAgICAgICAgIFBzaUphdmFDb2RlUmVmZXJlbmNlRWxlbWVudDpUCisgICAgICAgICAgICBQc2lJZGVudGlmaWVyOlQoJ1QnKQorICAgICAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgIFBzaUVycm9yRWxlbWVudDpVbmV4cGVjdGVkIGJvdW5kCisgICAgICAgICAgUHNpS2V5d29yZDpleHRlbmRzKCdleHRlbmRzJykKKyAgICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgICAgICBQc2lKYXZhQ29kZVJlZmVyZW5jZUVsZW1lbnQ6UworICAgICAgICAgICAgUHNpSWRlbnRpZmllcjpTKCdTJykKKyAgICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgIFBzaUphdmFUb2tlbjpHVCgnPicpCisgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICBQc2lFeHByZXNzaW9uTGlzdAorICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL2V4cHJlc3Npb25zL0lsbGVnYWxXaWxkY2FyZC50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL2V4cHJlc3Npb25zL0lsbGVnYWxXaWxkY2FyZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmRjMjIwNwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvZXhwcmVzc2lvbnMvSWxsZWdhbFdpbGRjYXJkLnR4dApAQCAtMCwwICsxLDE3IEBACitQc2lKYXZhRmlsZTpJbGxlZ2FsV2lsZGNhcmQuamF2YQorICBQc2lNZXRob2RDYWxsRXhwcmVzc2lvbjp0aGlzLjw/PmZvbygpCisgICAgUHNpUmVmZXJlbmNlRXhwcmVzc2lvbjp0aGlzLjw/PmZvbworICAgICAgUHNpVGhpc0V4cHJlc3Npb246dGhpcworICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgIFBzaUtleXdvcmQ6dGhpcygndGhpcycpCisgICAgICBQc2lKYXZhVG9rZW46RE9UKCcuJykKKyAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgUHNpSmF2YVRva2VuOkxUKCc8JykKKyAgICAgICAgUHNpRXJyb3JFbGVtZW50OlVuZXhwZWN0ZWQgd2lsZGNhcmQKKyAgICAgICAgICBQc2lKYXZhVG9rZW46UVVFU1QoJz8nKQorICAgICAgICBQc2lKYXZhVG9rZW46R1QoJz4nKQorICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgUHNpRXhwcmVzc2lvbkxpc3QKKyAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvZXhwcmVzc2lvbnMvSW5jb21wbGV0ZUNhc3QudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9leHByZXNzaW9ucy9JbmNvbXBsZXRlQ2FzdC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTM0NmRlMQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvZXhwcmVzc2lvbnMvSW5jb21wbGV0ZUNhc3QudHh0CkBAIC0wLDAgKzEsMjYgQEAKK1BzaUphdmFGaWxlOkluY29tcGxldGVDYXN0LmphdmEKKyAgUHNpTWV0aG9kQ2FsbEV4cHJlc3Npb246ZigoQXJyYXlMaXN0PFN0cmluZz4pICkKKyAgICBQc2lSZWZlcmVuY2VFeHByZXNzaW9uOmYKKyAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lJZGVudGlmaWVyOmYoJ2YnKQorICAgIFBzaUV4cHJlc3Npb25MaXN0CisgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgUHNpVHlwZUNhc3RFeHByZXNzaW9uOihBcnJheUxpc3Q8U3RyaW5nPikKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpVHlwZUVsZW1lbnQ6QXJyYXlMaXN0PFN0cmluZz4KKyAgICAgICAgICBQc2lKYXZhQ29kZVJlZmVyZW5jZUVsZW1lbnQ6QXJyYXlMaXN0PFN0cmluZz4KKyAgICAgICAgICAgIFBzaUlkZW50aWZpZXI6QXJyYXlMaXN0KCdBcnJheUxpc3QnKQorICAgICAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgICBQc2lKYXZhVG9rZW46TFQoJzwnKQorICAgICAgICAgICAgICBQc2lUeXBlRWxlbWVudDpTdHJpbmcKKyAgICAgICAgICAgICAgICBQc2lKYXZhQ29kZVJlZmVyZW5jZUVsZW1lbnQ6U3RyaW5nCisgICAgICAgICAgICAgICAgICBQc2lJZGVudGlmaWVyOlN0cmluZygnU3RyaW5nJykKKyAgICAgICAgICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgICAgIFBzaUphdmFUb2tlbjpHVCgnPicpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICAgIFBzaUVycm9yRWxlbWVudDpFeHByZXNzaW9uIGV4cGVjdGVkCisgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL2V4cHJlc3Npb25zL0luc3RhbmNlT2YwLnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvZXhwcmVzc2lvbnMvSW5zdGFuY2VPZjAudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAyYmJiYTEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL2V4cHJlc3Npb25zL0luc3RhbmNlT2YwLnR4dApAQCAtMCwwICsxLDE0IEBACitQc2lKYXZhRmlsZTpJbnN0YW5jZU9mMC5qYXZhCisgIFBzaUluc3RhbmNlb2ZFeHByZXNzaW9uOmEgaW5zdGFuY2VvZiBTdHJpbmcKKyAgICBQc2lSZWZlcmVuY2VFeHByZXNzaW9uOmEKKyAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lJZGVudGlmaWVyOmEoJ2EnKQorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUtleXdvcmQ6aW5zdGFuY2VvZignaW5zdGFuY2VvZicpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpVHlwZUVsZW1lbnQ6U3RyaW5nCisgICAgICBQc2lKYXZhQ29kZVJlZmVyZW5jZUVsZW1lbnQ6U3RyaW5nCisgICAgICAgIFBzaUlkZW50aWZpZXI6U3RyaW5nKCdTdHJpbmcnKQorICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgPGVtcHR5IGxpc3Q+CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL2V4cHJlc3Npb25zL0luc3RhbmNlT2YxLnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvZXhwcmVzc2lvbnMvSW5zdGFuY2VPZjEudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQyYWMzZjEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL2V4cHJlc3Npb25zL0luc3RhbmNlT2YxLnR4dApAQCAtMCwwICsxLDEwIEBACitQc2lKYXZhRmlsZTpJbnN0YW5jZU9mMS5qYXZhCisgIFBzaUluc3RhbmNlb2ZFeHByZXNzaW9uOmEgaW5zdGFuY2VvZgorICAgIFBzaVJlZmVyZW5jZUV4cHJlc3Npb246YQorICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUlkZW50aWZpZXI6YSgnYScpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpS2V5d29yZDppbnN0YW5jZW9mKCdpbnN0YW5jZW9mJykKKyAgICBQc2lFcnJvckVsZW1lbnQ6VHlwZSBleHBlY3RlZAorICAgICAgPGVtcHR5IGxpc3Q+CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL2V4cHJlc3Npb25zL0xhbWJkYUV4cHJlc3Npb24wLnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvZXhwcmVzc2lvbnMvTGFtYmRhRXhwcmVzc2lvbjAudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM2ZDA4ZWEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL2V4cHJlc3Npb25zL0xhbWJkYUV4cHJlc3Npb24wLnR4dApAQCAtMCwwICsxLDEyIEBACitQc2lKYXZhRmlsZTpMYW1iZGFFeHByZXNzaW9uMC5qYXZhCisgIFBzaUxhbWJkYUV4cHJlc3Npb246cCAtPiA0MgorICAgIFBzaVBhcmFtZXRlckxpc3Q6cAorICAgICAgUHNpUGFyYW1ldGVyOnAKKyAgICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICBQc2lJZGVudGlmaWVyOnAoJ3AnKQorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUphdmFUb2tlbjpBUlJPVygnLT4nKQorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUxpdGVyYWxFeHByZXNzaW9uOjQyCisgICAgICBQc2lKYXZhVG9rZW46SU5URUdFUl9MSVRFUkFMKCc0MicpClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9leHByZXNzaW9ucy9MYW1iZGFFeHByZXNzaW9uMS50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL2V4cHJlc3Npb25zL0xhbWJkYUV4cHJlc3Npb24xLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YTcxOTBmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9leHByZXNzaW9ucy9MYW1iZGFFeHByZXNzaW9uMS50eHQKQEAgLTAsMCArMSwxMiBAQAorUHNpSmF2YUZpbGU6TGFtYmRhRXhwcmVzc2lvbjEuamF2YQorICBQc2lMYW1iZGFFeHByZXNzaW9uOnAgLT4KKyAgICBQc2lQYXJhbWV0ZXJMaXN0OnAKKyAgICAgIFBzaVBhcmFtZXRlcjpwCisgICAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgUHNpSWRlbnRpZmllcjpwKCdwJykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lKYXZhVG9rZW46QVJST1coJy0+JykKKyAgICBQc2lFcnJvckVsZW1lbnQ6J3snIGV4cGVjdGVkCisgICAgICA8ZW1wdHkgbGlzdD4KKyAgUHNpV2hpdGVTcGFjZSgnICcpClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9leHByZXNzaW9ucy9MYW1iZGFFeHByZXNzaW9uMTAudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9leHByZXNzaW9ucy9MYW1iZGFFeHByZXNzaW9uMTAudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZkNTYzNzAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL2V4cHJlc3Npb25zL0xhbWJkYUV4cHJlc3Npb24xMC50eHQKQEAgLTAsMCArMSwyMyBAQAorUHNpSmF2YUZpbGU6TGFtYmRhRXhwcmVzc2lvbjEwLmphdmEKKyAgUHNpVHlwZUNhc3RFeHByZXNzaW9uOihJKShwIC0+IG51bGwpCisgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICBQc2lUeXBlRWxlbWVudDpJCisgICAgICBQc2lKYXZhQ29kZVJlZmVyZW5jZUVsZW1lbnQ6SQorICAgICAgICBQc2lJZGVudGlmaWVyOkkoJ0knKQorICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICBQc2lQYXJlbnRoZXNpemVkRXhwcmVzc2lvbjoocCAtPiBudWxsKQorICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgIFBzaUxhbWJkYUV4cHJlc3Npb246cCAtPiBudWxsCisgICAgICAgIFBzaVBhcmFtZXRlckxpc3Q6cAorICAgICAgICAgIFBzaVBhcmFtZXRlcjpwCisgICAgICAgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgICAgUHNpSWRlbnRpZmllcjpwKCdwJykKKyAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgIFBzaUphdmFUb2tlbjpBUlJPVygnLT4nKQorICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgICAgUHNpTGl0ZXJhbEV4cHJlc3Npb246bnVsbAorICAgICAgICAgIFBzaUphdmFUb2tlbjpOVUxMX0tFWVdPUkQoJ251bGwnKQorICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL2V4cHJlc3Npb25zL0xhbWJkYUV4cHJlc3Npb24xMS50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL2V4cHJlc3Npb25zL0xhbWJkYUV4cHJlc3Npb24xMS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmFhMWNlZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvZXhwcmVzc2lvbnMvTGFtYmRhRXhwcmVzc2lvbjExLnR4dApAQCAtMCwwICsxLDEyIEBACitQc2lKYXZhRmlsZTpMYW1iZGFFeHByZXNzaW9uMTEuamF2YQorICBQc2lMYW1iZGFFeHByZXNzaW9uOigpIC0+IHsgfQorICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUphdmFUb2tlbjpBUlJPVygnLT4nKQorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUNvZGVCbG9jaworICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvZXhwcmVzc2lvbnMvTGFtYmRhRXhwcmVzc2lvbjEyLnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvZXhwcmVzc2lvbnMvTGFtYmRhRXhwcmVzc2lvbjEyLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MjMwYmM3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9leHByZXNzaW9ucy9MYW1iZGFFeHByZXNzaW9uMTIudHh0CkBAIC0wLDAgKzEsMjggQEAKK1BzaUphdmFGaWxlOkxhbWJkYUV4cHJlc3Npb24xMi5qYXZhCisgIFBzaVR5cGVDYXN0RXhwcmVzc2lvbjooSTEgJiBJMikgKCkgLT4gbnVsbAorICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgUHNpVHlwZUVsZW1lbnQ6STEgJiBJMgorICAgICAgUHNpVHlwZUVsZW1lbnQ6STEKKyAgICAgICAgUHNpSmF2YUNvZGVSZWZlcmVuY2VFbGVtZW50OkkxCisgICAgICAgICAgUHNpSWRlbnRpZmllcjpJMSgnSTEnKQorICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lKYXZhVG9rZW46QU5EKCcmJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpVHlwZUVsZW1lbnQ6STIKKyAgICAgICAgUHNpSmF2YUNvZGVSZWZlcmVuY2VFbGVtZW50OkkyCisgICAgICAgICAgUHNpSWRlbnRpZmllcjpJMignSTInKQorICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpTGFtYmRhRXhwcmVzc2lvbjooKSAtPiBudWxsCisgICAgICBQc2lQYXJhbWV0ZXJMaXN0OigpCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUphdmFUb2tlbjpBUlJPVygnLT4nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lMaXRlcmFsRXhwcmVzc2lvbjpudWxsCisgICAgICAgIFBzaUphdmFUb2tlbjpOVUxMX0tFWVdPUkQoJ251bGwnKQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvZXhwcmVzc2lvbnMvTGFtYmRhRXhwcmVzc2lvbjEzLnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvZXhwcmVzc2lvbnMvTGFtYmRhRXhwcmVzc2lvbjEzLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZDM1NzQ5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9leHByZXNzaW9ucy9MYW1iZGFFeHByZXNzaW9uMTMudHh0CkBAIC0wLDAgKzEsMjkgQEAKK1BzaUphdmFGaWxlOkxhbWJkYUV4cHJlc3Npb24xMy5qYXZhCisgIFBzaVR5cGVDYXN0RXhwcmVzc2lvbjooSTEgJiBJMikgKCkgLT4ge30KKyAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgIFBzaVR5cGVFbGVtZW50OkkxICYgSTIKKyAgICAgIFBzaVR5cGVFbGVtZW50OkkxCisgICAgICAgIFBzaUphdmFDb2RlUmVmZXJlbmNlRWxlbWVudDpJMQorICAgICAgICAgIFBzaUlkZW50aWZpZXI6STEoJ0kxJykKKyAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSmF2YVRva2VuOkFORCgnJicpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaVR5cGVFbGVtZW50OkkyCisgICAgICAgIFBzaUphdmFDb2RlUmVmZXJlbmNlRWxlbWVudDpJMgorICAgICAgICAgIFBzaUlkZW50aWZpZXI6STIoJ0kyJykKKyAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUxhbWJkYUV4cHJlc3Npb246KCkgLT4ge30KKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KCkKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSmF2YVRva2VuOkFSUk9XKCctPicpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9leHByZXNzaW9ucy9MYW1iZGFFeHByZXNzaW9uMTQudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9leHByZXNzaW9ucy9MYW1iZGFFeHByZXNzaW9uMTQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY5M2EwMWUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL2V4cHJlc3Npb25zL0xhbWJkYUV4cHJlc3Npb24xNC50eHQKQEAgLTAsMCArMSwyMiBAQAorUHNpSmF2YUZpbGU6TGFtYmRhRXhwcmVzc2lvbjE0LmphdmEKKyAgUHNpTGFtYmRhRXhwcmVzc2lvbjooU3RyaW5nIHQpIC0+IHQKKyAgICBQc2lQYXJhbWV0ZXJMaXN0OihTdHJpbmcgdCkKKyAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICBQc2lQYXJhbWV0ZXI6dAorICAgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgIFBzaVR5cGVFbGVtZW50OlN0cmluZworICAgICAgICAgIFBzaUphdmFDb2RlUmVmZXJlbmNlRWxlbWVudDpTdHJpbmcKKyAgICAgICAgICAgIFBzaUlkZW50aWZpZXI6U3RyaW5nKCdTdHJpbmcnKQorICAgICAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgIFBzaUlkZW50aWZpZXI6dCgndCcpCisgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUphdmFUb2tlbjpBUlJPVygnLT4nKQorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaVJlZmVyZW5jZUV4cHJlc3Npb246dAorICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUlkZW50aWZpZXI6dCgndCcpClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9leHByZXNzaW9ucy9MYW1iZGFFeHByZXNzaW9uMTUudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9leHByZXNzaW9ucy9MYW1iZGFFeHByZXNzaW9uMTUudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI4MjMwNjYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL2V4cHJlc3Npb25zL0xhbWJkYUV4cHJlc3Npb24xNS50eHQKQEAgLTAsMCArMSwzNiBAQAorUHNpSmF2YUZpbGU6TGFtYmRhRXhwcmVzc2lvbjE1LmphdmEKKyAgUHNpTGFtYmRhRXhwcmVzc2lvbjooaW50IGEsIGludCBiKSAtPiBhICsgYgorICAgIFBzaVBhcmFtZXRlckxpc3Q6KGludCBhLCBpbnQgYikKKyAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICBQc2lQYXJhbWV0ZXI6YQorICAgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgIFBzaVR5cGVFbGVtZW50OmludAorICAgICAgICAgIFBzaUtleXdvcmQ6aW50KCdpbnQnKQorICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgICAgUHNpSWRlbnRpZmllcjphKCdhJykKKyAgICAgIFBzaUphdmFUb2tlbjpDT01NQSgnLCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaVBhcmFtZXRlcjpiCisgICAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgUHNpVHlwZUVsZW1lbnQ6aW50CisgICAgICAgICAgUHNpS2V5d29yZDppbnQoJ2ludCcpCisgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICBQc2lJZGVudGlmaWVyOmIoJ2InKQorICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lKYXZhVG9rZW46QVJST1coJy0+JykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lCaW5hcnlFeHByZXNzaW9uOmEgKyBiCisgICAgICBQc2lSZWZlcmVuY2VFeHByZXNzaW9uOmEKKyAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICBQc2lJZGVudGlmaWVyOmEoJ2EnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lKYXZhVG9rZW46UExVUygnKycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaVJlZmVyZW5jZUV4cHJlc3Npb246YgorICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgIFBzaUlkZW50aWZpZXI6YignYicpClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9leHByZXNzaW9ucy9MYW1iZGFFeHByZXNzaW9uMTYudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9leHByZXNzaW9ucy9MYW1iZGFFeHByZXNzaW9uMTYudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU5Yjc0NjEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL2V4cHJlc3Npb25zL0xhbWJkYUV4cHJlc3Npb24xNi50eHQKQEAgLTAsMCArMSwyMCBAQAorUHNpSmF2YUZpbGU6TGFtYmRhRXhwcmVzc2lvbjE2LmphdmEKKyAgUHNpTGFtYmRhRXhwcmVzc2lvbjooZmluYWwgaW50IHgpIC0+IHgKKyAgICBQc2lQYXJhbWV0ZXJMaXN0OihmaW5hbCBpbnQgeCkKKyAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICBQc2lQYXJhbWV0ZXI6eAorICAgICAgICBQc2lNb2RpZmllckxpc3Q6ZmluYWwKKyAgICAgICAgICBQc2lLZXl3b3JkOmZpbmFsKCdmaW5hbCcpCisgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICBQc2lUeXBlRWxlbWVudDppbnQKKyAgICAgICAgICBQc2lLZXl3b3JkOmludCgnaW50JykKKyAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgIFBzaUlkZW50aWZpZXI6eCgneCcpCisgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUphdmFUb2tlbjpBUlJPVygnLT4nKQorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaVJlZmVyZW5jZUV4cHJlc3Npb246eAorICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUlkZW50aWZpZXI6eCgneCcpClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9leHByZXNzaW9ucy9MYW1iZGFFeHByZXNzaW9uMTcudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9leHByZXNzaW9ucy9MYW1iZGFFeHByZXNzaW9uMTcudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYwYmU1MWYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL2V4cHJlc3Npb25zL0xhbWJkYUV4cHJlc3Npb24xNy50eHQKQEAgLTAsMCArMSwyMyBAQAorUHNpSmF2YUZpbGU6TGFtYmRhRXhwcmVzc2lvbjE3LmphdmEKKyAgUHNpTGFtYmRhRXhwcmVzc2lvbjooU3RyaW5nIHMgLT4gcworICAgIFBzaVBhcmFtZXRlckxpc3Q6KFN0cmluZyBzCisgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgUHNpUGFyYW1ldGVyOnMKKyAgICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICBQc2lUeXBlRWxlbWVudDpTdHJpbmcKKyAgICAgICAgICBQc2lKYXZhQ29kZVJlZmVyZW5jZUVsZW1lbnQ6U3RyaW5nCisgICAgICAgICAgICBQc2lJZGVudGlmaWVyOlN0cmluZygnU3RyaW5nJykKKyAgICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICBQc2lJZGVudGlmaWVyOnMoJ3MnKQorICAgICAgUHNpRXJyb3JFbGVtZW50OicpJyBleHBlY3RlZAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lKYXZhVG9rZW46QVJST1coJy0+JykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lSZWZlcmVuY2VFeHByZXNzaW9uOnMKKyAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lJZGVudGlmaWVyOnMoJ3MnKQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvZXhwcmVzc2lvbnMvTGFtYmRhRXhwcmVzc2lvbjE4LnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvZXhwcmVzc2lvbnMvTGFtYmRhRXhwcmVzc2lvbjE4LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41OTZiZjFiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9leHByZXNzaW9ucy9MYW1iZGFFeHByZXNzaW9uMTgudHh0CkBAIC0wLDAgKzEsMzQgQEAKK1BzaUphdmFGaWxlOkxhbWJkYUV4cHJlc3Npb24xOC5qYXZhCisgIFBzaUxhbWJkYUV4cHJlc3Npb246KGphdmEubGFuZy5TdHJpbmcgcywgLT4gcworICAgIFBzaVBhcmFtZXRlckxpc3Q6KGphdmEubGFuZy5TdHJpbmcgcywKKyAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICBQc2lQYXJhbWV0ZXI6cworICAgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgIFBzaVR5cGVFbGVtZW50OmphdmEubGFuZy5TdHJpbmcKKyAgICAgICAgICBQc2lKYXZhQ29kZVJlZmVyZW5jZUVsZW1lbnQ6amF2YS5sYW5nLlN0cmluZworICAgICAgICAgICAgUHNpSmF2YUNvZGVSZWZlcmVuY2VFbGVtZW50OmphdmEubGFuZworICAgICAgICAgICAgICBQc2lKYXZhQ29kZVJlZmVyZW5jZUVsZW1lbnQ6amF2YQorICAgICAgICAgICAgICAgIFBzaUlkZW50aWZpZXI6amF2YSgnamF2YScpCisgICAgICAgICAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgICAgIFBzaUphdmFUb2tlbjpET1QoJy4nKQorICAgICAgICAgICAgICBQc2lJZGVudGlmaWVyOmxhbmcoJ2xhbmcnKQorICAgICAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgICBQc2lKYXZhVG9rZW46RE9UKCcuJykKKyAgICAgICAgICAgIFBzaUlkZW50aWZpZXI6U3RyaW5nKCdTdHJpbmcnKQorICAgICAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgIFBzaUlkZW50aWZpZXI6cygncycpCisgICAgICBQc2lKYXZhVG9rZW46Q09NTUEoJywnKQorICAgICAgUHNpRXJyb3JFbGVtZW50OlBhcmFtZXRlciBleHBlY3RlZAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lKYXZhVG9rZW46QVJST1coJy0+JykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lSZWZlcmVuY2VFeHByZXNzaW9uOnMKKyAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lJZGVudGlmaWVyOnMoJ3MnKQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvZXhwcmVzc2lvbnMvTGFtYmRhRXhwcmVzc2lvbjE5LnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvZXhwcmVzc2lvbnMvTGFtYmRhRXhwcmVzc2lvbjE5LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNzZjMzliCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9leHByZXNzaW9ucy9MYW1iZGFFeHByZXNzaW9uMTkudHh0CkBAIC0wLDAgKzEsMzEgQEAKK1BzaUphdmFGaWxlOkxhbWJkYUV4cHJlc3Npb24xOS5qYXZhCisgIFBzaUxhbWJkYUV4cHJlc3Npb246KEBBIFQgdCkgLT4gKG51bGwpCisgICAgUHNpUGFyYW1ldGVyTGlzdDooQEEgVCB0KQorICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgIFBzaVBhcmFtZXRlcjp0CisgICAgICAgIFBzaU1vZGlmaWVyTGlzdDpAQQorICAgICAgICAgIFBzaUFubm90YXRpb24KKyAgICAgICAgICAgIFBzaUphdmFUb2tlbjpBVCgnQCcpCisgICAgICAgICAgICBQc2lKYXZhQ29kZVJlZmVyZW5jZUVsZW1lbnQ6QQorICAgICAgICAgICAgICBQc2lJZGVudGlmaWVyOkEoJ0EnKQorICAgICAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgICBQc2lBbm5vdGF0aW9uUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgIFBzaVR5cGVFbGVtZW50OlQKKyAgICAgICAgICBQc2lKYXZhQ29kZVJlZmVyZW5jZUVsZW1lbnQ6VAorICAgICAgICAgICAgUHNpSWRlbnRpZmllcjpUKCdUJykKKyAgICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICBQc2lJZGVudGlmaWVyOnQoJ3QnKQorICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lKYXZhVG9rZW46QVJST1coJy0+JykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lQYXJlbnRoZXNpemVkRXhwcmVzc2lvbjoobnVsbCkKKyAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICBQc2lMaXRlcmFsRXhwcmVzc2lvbjpudWxsCisgICAgICAgIFBzaUphdmFUb2tlbjpOVUxMX0tFWVdPUkQoJ251bGwnKQorICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL2V4cHJlc3Npb25zL0xhbWJkYUV4cHJlc3Npb24yLnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvZXhwcmVzc2lvbnMvTGFtYmRhRXhwcmVzc2lvbjIudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY0ZTg5ODEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL2V4cHJlc3Npb25zL0xhbWJkYUV4cHJlc3Npb24yLnR4dApAQCAtMCwwICsxLDE0IEBACitQc2lKYXZhRmlsZTpMYW1iZGFFeHByZXNzaW9uMi5qYXZhCisgIFBzaUxhbWJkYUV4cHJlc3Npb246cCAtPiB7CisgICAgUHNpUGFyYW1ldGVyTGlzdDpwCisgICAgICBQc2lQYXJhbWV0ZXI6cAorICAgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgIFBzaUlkZW50aWZpZXI6cCgncCcpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSmF2YVRva2VuOkFSUk9XKCctPicpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpQ29kZUJsb2NrCisgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgIFBzaUVycm9yRWxlbWVudDonfScgZXhwZWN0ZWQKKyAgICAgICAgPGVtcHR5IGxpc3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9leHByZXNzaW9ucy9MYW1iZGFFeHByZXNzaW9uMy50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL2V4cHJlc3Npb25zL0xhbWJkYUV4cHJlc3Npb24zLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMDNmMGVlYwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvZXhwcmVzc2lvbnMvTGFtYmRhRXhwcmVzc2lvbjMudHh0CkBAIC0wLDAgKzEsMTYgQEAKK1BzaUphdmFGaWxlOkxhbWJkYUV4cHJlc3Npb24zLmphdmEKKyAgUHNpTGFtYmRhRXhwcmVzc2lvbjoocCkgLT4geyB9CisgICAgUHNpUGFyYW1ldGVyTGlzdDoocCkKKyAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICBQc2lQYXJhbWV0ZXI6cAorICAgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgIFBzaUlkZW50aWZpZXI6cCgncCcpCisgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUphdmFUb2tlbjpBUlJPVygnLT4nKQorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUNvZGVCbG9jaworICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvZXhwcmVzc2lvbnMvTGFtYmRhRXhwcmVzc2lvbjQudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9leHByZXNzaW9ucy9MYW1iZGFFeHByZXNzaW9uNC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjU1MGI3ZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvZXhwcmVzc2lvbnMvTGFtYmRhRXhwcmVzc2lvbjQudHh0CkBAIC0wLDAgKzEsMjAgQEAKK1BzaUphdmFGaWxlOkxhbWJkYUV4cHJlc3Npb240LmphdmEKKyAgUHNpTGFtYmRhRXhwcmVzc2lvbjoocCwgdikgLT4gbnVsbAorICAgIFBzaVBhcmFtZXRlckxpc3Q6KHAsIHYpCisgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgUHNpUGFyYW1ldGVyOnAKKyAgICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICBQc2lJZGVudGlmaWVyOnAoJ3AnKQorICAgICAgUHNpSmF2YVRva2VuOkNPTU1BKCcsJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpUGFyYW1ldGVyOnYKKyAgICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICBQc2lJZGVudGlmaWVyOnYoJ3YnKQorICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lKYXZhVG9rZW46QVJST1coJy0+JykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lMaXRlcmFsRXhwcmVzc2lvbjpudWxsCisgICAgICBQc2lKYXZhVG9rZW46TlVMTF9LRVlXT1JEKCdudWxsJykKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL2V4cHJlc3Npb25zL0xhbWJkYUV4cHJlc3Npb241LnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvZXhwcmVzc2lvbnMvTGFtYmRhRXhwcmVzc2lvbjUudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNkZjE2NDgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL2V4cHJlc3Npb25zL0xhbWJkYUV4cHJlc3Npb241LnR4dApAQCAtMCwwICsxLDIxIEBACitQc2lKYXZhRmlsZTpMYW1iZGFFeHByZXNzaW9uNS5qYXZhCisgIFBzaUxhbWJkYUV4cHJlc3Npb246KHAsIHYgLT4gbnVsbAorICAgIFBzaVBhcmFtZXRlckxpc3Q6KHAsIHYKKyAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICBQc2lQYXJhbWV0ZXI6cAorICAgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgIFBzaUlkZW50aWZpZXI6cCgncCcpCisgICAgICBQc2lKYXZhVG9rZW46Q09NTUEoJywnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lQYXJhbWV0ZXI6dgorICAgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgIFBzaUlkZW50aWZpZXI6digndicpCisgICAgICBQc2lFcnJvckVsZW1lbnQ6JyknIGV4cGVjdGVkCisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUphdmFUb2tlbjpBUlJPVygnLT4nKQorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUxpdGVyYWxFeHByZXNzaW9uOm51bGwKKyAgICAgIFBzaUphdmFUb2tlbjpOVUxMX0tFWVdPUkQoJ251bGwnKQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvZXhwcmVzc2lvbnMvTGFtYmRhRXhwcmVzc2lvbjYudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9leHByZXNzaW9ucy9MYW1iZGFFeHByZXNzaW9uNi50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWMzYWM2MQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvZXhwcmVzc2lvbnMvTGFtYmRhRXhwcmVzc2lvbjYudHh0CkBAIC0wLDAgKzEsMjIgQEAKK1BzaUphdmFGaWxlOkxhbWJkYUV4cHJlc3Npb242LmphdmEKKyAgUHNpTGFtYmRhRXhwcmVzc2lvbjoocCwgdiwgLT4gbnVsbAorICAgIFBzaVBhcmFtZXRlckxpc3Q6KHAsIHYsCisgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgUHNpUGFyYW1ldGVyOnAKKyAgICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICBQc2lJZGVudGlmaWVyOnAoJ3AnKQorICAgICAgUHNpSmF2YVRva2VuOkNPTU1BKCcsJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpUGFyYW1ldGVyOnYKKyAgICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICBQc2lJZGVudGlmaWVyOnYoJ3YnKQorICAgICAgUHNpSmF2YVRva2VuOkNPTU1BKCcsJykKKyAgICAgIFBzaUVycm9yRWxlbWVudDpQYXJhbWV0ZXIgZXhwZWN0ZWQKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSmF2YVRva2VuOkFSUk9XKCctPicpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpTGl0ZXJhbEV4cHJlc3Npb246bnVsbAorICAgICAgUHNpSmF2YVRva2VuOk5VTExfS0VZV09SRCgnbnVsbCcpClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9leHByZXNzaW9ucy9MYW1iZGFFeHByZXNzaW9uNy50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL2V4cHJlc3Npb25zL0xhbWJkYUV4cHJlc3Npb243LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NmViM2NlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9leHByZXNzaW9ucy9MYW1iZGFFeHByZXNzaW9uNy50eHQKQEAgLTAsMCArMSwxNSBAQAorUHNpSmF2YUZpbGU6TGFtYmRhRXhwcmVzc2lvbjcuamF2YQorICBQc2lQYXJlbnRoZXNpemVkRXhwcmVzc2lvbjoocCAtPiBudWxsKQorICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgUHNpTGFtYmRhRXhwcmVzc2lvbjpwIC0+IG51bGwKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6cAorICAgICAgICBQc2lQYXJhbWV0ZXI6cAorICAgICAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgIFBzaUlkZW50aWZpZXI6cCgncCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUphdmFUb2tlbjpBUlJPVygnLT4nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lMaXRlcmFsRXhwcmVzc2lvbjpudWxsCisgICAgICAgIFBzaUphdmFUb2tlbjpOVUxMX0tFWVdPUkQoJ251bGwnKQorICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9leHByZXNzaW9ucy9MYW1iZGFFeHByZXNzaW9uOC50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL2V4cHJlc3Npb25zL0xhbWJkYUV4cHJlc3Npb244LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYWY2YTAyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9leHByZXNzaW9ucy9MYW1iZGFFeHByZXNzaW9uOC50eHQKQEAgLTAsMCArMSwyMiBAQAorUHNpSmF2YUZpbGU6TGFtYmRhRXhwcmVzc2lvbjguamF2YQorICBQc2lUeXBlQ2FzdEV4cHJlc3Npb246KEkpKHApIC0+IG51bGwKKyAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgIFBzaVR5cGVFbGVtZW50OkkKKyAgICAgIFBzaUphdmFDb2RlUmVmZXJlbmNlRWxlbWVudDpJCisgICAgICAgIFBzaUlkZW50aWZpZXI6SSgnSScpCisgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgIFBzaUxhbWJkYUV4cHJlc3Npb246KHApIC0+IG51bGwKKyAgICAgIFBzaVBhcmFtZXRlckxpc3Q6KHApCisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaVBhcmFtZXRlcjpwCisgICAgICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgUHNpSWRlbnRpZmllcjpwKCdwJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSmF2YVRva2VuOkFSUk9XKCctPicpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUxpdGVyYWxFeHByZXNzaW9uOm51bGwKKyAgICAgICAgUHNpSmF2YVRva2VuOk5VTExfS0VZV09SRCgnbnVsbCcpClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9leHByZXNzaW9ucy9MYW1iZGFFeHByZXNzaW9uOS50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL2V4cHJlc3Npb25zL0xhbWJkYUV4cHJlc3Npb245LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMGFjNGE5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9leHByZXNzaW9ucy9MYW1iZGFFeHByZXNzaW9uOS50eHQKQEAgLTAsMCArMSwyMCBAQAorUHNpSmF2YUZpbGU6TGFtYmRhRXhwcmVzc2lvbjkuamF2YQorICBQc2lUeXBlQ2FzdEV4cHJlc3Npb246KEkpcCAtPiBudWxsCisgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICBQc2lUeXBlRWxlbWVudDpJCisgICAgICBQc2lKYXZhQ29kZVJlZmVyZW5jZUVsZW1lbnQ6SQorICAgICAgICBQc2lJZGVudGlmaWVyOkkoJ0knKQorICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICBQc2lMYW1iZGFFeHByZXNzaW9uOnAgLT4gbnVsbAorICAgICAgUHNpUGFyYW1ldGVyTGlzdDpwCisgICAgICAgIFBzaVBhcmFtZXRlcjpwCisgICAgICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgUHNpSWRlbnRpZmllcjpwKCdwJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSmF2YVRva2VuOkFSUk9XKCctPicpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUxpdGVyYWxFeHByZXNzaW9uOm51bGwKKyAgICAgICAgUHNpSmF2YVRva2VuOk5VTExfS0VZV09SRCgnbnVsbCcpClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9leHByZXNzaW9ucy9NZXRob2RSZWYwLnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvZXhwcmVzc2lvbnMvTWV0aG9kUmVmMC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjhkOTQzZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvZXhwcmVzc2lvbnMvTWV0aG9kUmVmMC50eHQKQEAgLTAsMCArMSwyMCBAQAorUHNpSmF2YUZpbGU6TWV0aG9kUmVmMC5qYXZhCisgIFBzaU1ldGhvZFJlZmVyZW5jZUV4cHJlc3Npb246YS5iLkM6Om0KKyAgICBQc2lSZWZlcmVuY2VFeHByZXNzaW9uOmEuYi5DCisgICAgICBQc2lSZWZlcmVuY2VFeHByZXNzaW9uOmEuYgorICAgICAgICBQc2lSZWZlcmVuY2VFeHByZXNzaW9uOmEKKyAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICBQc2lJZGVudGlmaWVyOmEoJ2EnKQorICAgICAgICBQc2lKYXZhVG9rZW46RE9UKCcuJykKKyAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICBQc2lJZGVudGlmaWVyOmIoJ2InKQorICAgICAgUHNpSmF2YVRva2VuOkRPVCgnLicpCisgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpSWRlbnRpZmllcjpDKCdDJykKKyAgICBQc2lKYXZhVG9rZW46RE9VQkxFX0NPTE9OKCc6OicpCisgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpSWRlbnRpZmllcjptKCdtJykKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL2V4cHJlc3Npb25zL01ldGhvZFJlZjEudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9leHByZXNzaW9ucy9NZXRob2RSZWYxLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNmRlNDdiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9leHByZXNzaW9ucy9NZXRob2RSZWYxLnR4dApAQCAtMCwwICsxLDI3IEBACitQc2lKYXZhRmlsZTpNZXRob2RSZWYxLmphdmEKKyAgUHNpTWV0aG9kUmVmZXJlbmNlRXhwcmVzc2lvbjphLmIuQzxUPjo6bmV3CisgICAgUHNpVHlwZUVsZW1lbnQ6YS5iLkM8VD4KKyAgICAgIFBzaUphdmFDb2RlUmVmZXJlbmNlRWxlbWVudDphLmIuQzxUPgorICAgICAgICBQc2lKYXZhQ29kZVJlZmVyZW5jZUVsZW1lbnQ6YS5iCisgICAgICAgICAgUHNpSmF2YUNvZGVSZWZlcmVuY2VFbGVtZW50OmEKKyAgICAgICAgICAgIFBzaUlkZW50aWZpZXI6YSgnYScpCisgICAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgIFBzaUphdmFUb2tlbjpET1QoJy4nKQorICAgICAgICAgIFBzaUlkZW50aWZpZXI6YignYicpCisgICAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgIFBzaUphdmFUb2tlbjpET1QoJy4nKQorICAgICAgICBQc2lJZGVudGlmaWVyOkMoJ0MnKQorICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgUHNpSmF2YVRva2VuOkxUKCc8JykKKyAgICAgICAgICBQc2lUeXBlRWxlbWVudDpUCisgICAgICAgICAgICBQc2lKYXZhQ29kZVJlZmVyZW5jZUVsZW1lbnQ6VAorICAgICAgICAgICAgICBQc2lJZGVudGlmaWVyOlQoJ1QnKQorICAgICAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgUHNpSmF2YVRva2VuOkdUKCc+JykKKyAgICBQc2lKYXZhVG9rZW46RE9VQkxFX0NPTE9OKCc6OicpCisgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpS2V5d29yZDpuZXcoJ25ldycpClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9leHByZXNzaW9ucy9NZXRob2RSZWYyLnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvZXhwcmVzc2lvbnMvTWV0aG9kUmVmMi50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzc2M2FhNQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvZXhwcmVzc2lvbnMvTWV0aG9kUmVmMi50eHQKQEAgLTAsMCArMSwxNiBAQAorUHNpSmF2YUZpbGU6TWV0aG9kUmVmMi5qYXZhCisgIFBzaU1ldGhvZFJlZmVyZW5jZUV4cHJlc3Npb246Qzo6PFQ+bQorICAgIFBzaVJlZmVyZW5jZUV4cHJlc3Npb246QworICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUlkZW50aWZpZXI6QygnQycpCisgICAgUHNpSmF2YVRva2VuOkRPVUJMRV9DT0xPTignOjonKQorICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgIFBzaUphdmFUb2tlbjpMVCgnPCcpCisgICAgICBQc2lUeXBlRWxlbWVudDpUCisgICAgICAgIFBzaUphdmFDb2RlUmVmZXJlbmNlRWxlbWVudDpUCisgICAgICAgICAgUHNpSWRlbnRpZmllcjpUKCdUJykKKyAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUphdmFUb2tlbjpHVCgnPicpCisgICAgUHNpSWRlbnRpZmllcjptKCdtJykKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvZXhwcmVzc2lvbnMvTWV0aG9kUmVmMy50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL2V4cHJlc3Npb25zL01ldGhvZFJlZjMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYxM2NjMzQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL2V4cHJlc3Npb25zL01ldGhvZFJlZjMudHh0CkBAIC0wLDAgKzEsMTcgQEAKK1BzaUphdmFGaWxlOk1ldGhvZFJlZjMuamF2YQorICBQc2lNZXRob2RSZWZlcmVuY2VFeHByZXNzaW9uOmFbaV06Om0KKyAgICBQc2lBcnJheUFjY2Vzc0V4cHJlc3Npb246YVtpXQorICAgICAgUHNpUmVmZXJlbmNlRXhwcmVzc2lvbjphCisgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgUHNpSWRlbnRpZmllcjphKCdhJykKKyAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0tFVCgnWycpCisgICAgICBQc2lSZWZlcmVuY2VFeHByZXNzaW9uOmkKKyAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICBQc2lJZGVudGlmaWVyOmkoJ2knKQorICAgICAgUHNpSmF2YVRva2VuOlJCUkFDS0VUKCddJykKKyAgICBQc2lKYXZhVG9rZW46RE9VQkxFX0NPTE9OKCc6OicpCisgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpSWRlbnRpZmllcjptKCdtJykKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvZXhwcmVzc2lvbnMvTWV0aG9kUmVmNC50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL2V4cHJlc3Npb25zL01ldGhvZFJlZjQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMxY2YyNGIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL2V4cHJlc3Npb25zL01ldGhvZFJlZjQudHh0CkBAIC0wLDAgKzEsMTEgQEAKK1BzaUphdmFGaWxlOk1ldGhvZFJlZjQuamF2YQorICBQc2lNZXRob2RSZWZlcmVuY2VFeHByZXNzaW9uOmludFtdOjpjbG9uZQorICAgIFBzaVR5cGVFbGVtZW50OmludFtdCisgICAgICBQc2lUeXBlRWxlbWVudDppbnQKKyAgICAgICAgUHNpS2V5d29yZDppbnQoJ2ludCcpCisgICAgICBQc2lKYXZhVG9rZW46TEJSQUNLRVQoJ1snKQorICAgICAgUHNpSmF2YVRva2VuOlJCUkFDS0VUKCddJykKKyAgICBQc2lKYXZhVG9rZW46RE9VQkxFX0NPTE9OKCc6OicpCisgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpSWRlbnRpZmllcjpjbG9uZSgnY2xvbmUnKQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvZXhwcmVzc2lvbnMvTWV0aG9kUmVmNS50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL2V4cHJlc3Npb25zL01ldGhvZFJlZjUudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRhODIwNzAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL2V4cHJlc3Npb25zL01ldGhvZFJlZjUudHh0CkBAIC0wLDAgKzEsNTUgQEAKK1BzaUphdmFGaWxlOk1ldGhvZFJlZjUuamF2YQorICBQc2lNZXRob2RSZWZlcmVuY2VFeHByZXNzaW9uOihmID8gbGlzdC5tYXAoU3RyaW5nOjpsZW5ndGgpIDogQ29sbGVjdGlvbnMuZW1wdHlMaXN0KCkpOjppdGVyYXRvcgorICAgIFBzaVBhcmVudGhlc2l6ZWRFeHByZXNzaW9uOihmID8gbGlzdC5tYXAoU3RyaW5nOjpsZW5ndGgpIDogQ29sbGVjdGlvbnMuZW1wdHlMaXN0KCkpCisgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgUHNpQ29uZGl0aW9uYWxFeHByZXNzaW9uOmYgPyBsaXN0Lm1hcChTdHJpbmc6Omxlbmd0aCkgOiBDb2xsZWN0aW9ucy5lbXB0eUxpc3QoKQorICAgICAgICBQc2lSZWZlcmVuY2VFeHByZXNzaW9uOmYKKyAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICBQc2lJZGVudGlmaWVyOmYoJ2YnKQorICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlFVRVNUKCc/JykKKyAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgIFBzaU1ldGhvZENhbGxFeHByZXNzaW9uOmxpc3QubWFwKFN0cmluZzo6bGVuZ3RoKQorICAgICAgICAgIFBzaVJlZmVyZW5jZUV4cHJlc3Npb246bGlzdC5tYXAKKyAgICAgICAgICAgIFBzaVJlZmVyZW5jZUV4cHJlc3Npb246bGlzdAorICAgICAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgICAgIFBzaUlkZW50aWZpZXI6bGlzdCgnbGlzdCcpCisgICAgICAgICAgICBQc2lKYXZhVG9rZW46RE9UKCcuJykKKyAgICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgICBQc2lJZGVudGlmaWVyOm1hcCgnbWFwJykKKyAgICAgICAgICBQc2lFeHByZXNzaW9uTGlzdAorICAgICAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgICAgIFBzaU1ldGhvZFJlZmVyZW5jZUV4cHJlc3Npb246U3RyaW5nOjpsZW5ndGgKKyAgICAgICAgICAgICAgUHNpUmVmZXJlbmNlRXhwcmVzc2lvbjpTdHJpbmcKKyAgICAgICAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICAgICAgICBQc2lJZGVudGlmaWVyOlN0cmluZygnU3RyaW5nJykKKyAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOkRPVUJMRV9DT0xPTignOjonKQorICAgICAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgICAgIFBzaUlkZW50aWZpZXI6bGVuZ3RoKCdsZW5ndGgnKQorICAgICAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgIFBzaUphdmFUb2tlbjpDT0xPTignOicpCisgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICBQc2lNZXRob2RDYWxsRXhwcmVzc2lvbjpDb2xsZWN0aW9ucy5lbXB0eUxpc3QoKQorICAgICAgICAgIFBzaVJlZmVyZW5jZUV4cHJlc3Npb246Q29sbGVjdGlvbnMuZW1wdHlMaXN0CisgICAgICAgICAgICBQc2lSZWZlcmVuY2VFeHByZXNzaW9uOkNvbGxlY3Rpb25zCisgICAgICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICAgICAgUHNpSWRlbnRpZmllcjpDb2xsZWN0aW9ucygnQ29sbGVjdGlvbnMnKQorICAgICAgICAgICAgUHNpSmF2YVRva2VuOkRPVCgnLicpCisgICAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgICAgUHNpSWRlbnRpZmllcjplbXB0eUxpc3QoJ2VtcHR5TGlzdCcpCisgICAgICAgICAgUHNpRXhwcmVzc2lvbkxpc3QKKyAgICAgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICBQc2lKYXZhVG9rZW46RE9VQkxFX0NPTE9OKCc6OicpCisgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpSWRlbnRpZmllcjppdGVyYXRvcignaXRlcmF0b3InKQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9leHByZXNzaW9ucy9OZXcwLnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvZXhwcmVzc2lvbnMvTmV3MC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2VmOWU5YwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvZXhwcmVzc2lvbnMvTmV3MC50eHQKQEAgLTAsMCArMSwxMyBAQAorUHNpSmF2YUZpbGU6TmV3MC5qYXZhCisgIFBzaU5ld0V4cHJlc3Npb246bmV3IEEoKQorICAgIFBzaUtleXdvcmQ6bmV3KCduZXcnKQorICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUphdmFDb2RlUmVmZXJlbmNlRWxlbWVudDpBCisgICAgICBQc2lJZGVudGlmaWVyOkEoJ0EnKQorICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lFeHByZXNzaW9uTGlzdAorICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9leHByZXNzaW9ucy9OZXcxLnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvZXhwcmVzc2lvbnMvTmV3MS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzZhYTliNwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvZXhwcmVzc2lvbnMvTmV3MS50eHQKQEAgLTAsMCArMSwxNiBAQAorUHNpSmF2YUZpbGU6TmV3MS5qYXZhCisgIFBzaU5ld0V4cHJlc3Npb246bmV3IEFbMV1bXQorICAgIFBzaUtleXdvcmQ6bmV3KCduZXcnKQorICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUphdmFDb2RlUmVmZXJlbmNlRWxlbWVudDpBCisgICAgICBQc2lJZGVudGlmaWVyOkEoJ0EnKQorICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lKYXZhVG9rZW46TEJSQUNLRVQoJ1snKQorICAgIFBzaUxpdGVyYWxFeHByZXNzaW9uOjEKKyAgICAgIFBzaUphdmFUb2tlbjpJTlRFR0VSX0xJVEVSQUwoJzEnKQorICAgIFBzaUphdmFUb2tlbjpSQlJBQ0tFVCgnXScpCisgICAgUHNpSmF2YVRva2VuOkxCUkFDS0VUKCdbJykKKyAgICBQc2lKYXZhVG9rZW46UkJSQUNLRVQoJ10nKQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvZXhwcmVzc2lvbnMvTmV3MTAudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9leHByZXNzaW9ucy9OZXcxMC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjcyMDY1OAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvZXhwcmVzc2lvbnMvTmV3MTAudHh0CkBAIC0wLDAgKzEsMTIgQEAKK1BzaUphdmFGaWxlOk5ldzEwLmphdmEKKyAgUHNpTmV3RXhwcmVzc2lvbjpuZXcgaW50CisgICAgUHNpS2V5d29yZDpuZXcoJ25ldycpCisgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpS2V5d29yZDppbnQoJ2ludCcpCisgICAgUHNpRXJyb3JFbGVtZW50OidbJyBleHBlY3RlZAorICAgICAgPGVtcHR5IGxpc3Q+CisgIFBzaUVycm9yRWxlbWVudDpVbnBhcnNlZCB0b2tlbnMKKyAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL2V4cHJlc3Npb25zL05ldzExLnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvZXhwcmVzc2lvbnMvTmV3MTEudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU5YTQ2ODViCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9leHByZXNzaW9ucy9OZXcxMS50eHQKQEAgLTAsMCArMSwxNSBAQAorUHNpSmF2YUZpbGU6TmV3MTEuamF2YQorICBQc2lOZXdFeHByZXNzaW9uOm5ldyBTdHJpbmdbMAorICAgIFBzaUtleXdvcmQ6bmV3KCduZXcnKQorICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUphdmFDb2RlUmVmZXJlbmNlRWxlbWVudDpTdHJpbmcKKyAgICAgIFBzaUlkZW50aWZpZXI6U3RyaW5nKCdTdHJpbmcnKQorICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lKYXZhVG9rZW46TEJSQUNLRVQoJ1snKQorICAgIFBzaUxpdGVyYWxFeHByZXNzaW9uOjAKKyAgICAgIFBzaUphdmFUb2tlbjpJTlRFR0VSX0xJVEVSQUwoJzAnKQorICAgIFBzaUVycm9yRWxlbWVudDonXScgZXhwZWN0ZWQKKyAgICAgIDxlbXB0eSBsaXN0PgpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9leHByZXNzaW9ucy9OZXcxMi50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL2V4cHJlc3Npb25zL05ldzEyLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMGU2NjlhYwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvZXhwcmVzc2lvbnMvTmV3MTIudHh0CkBAIC0wLDAgKzEsMTUgQEAKK1BzaUphdmFGaWxlOk5ldzEyLmphdmEKKyAgUHNpTmV3RXhwcmVzc2lvbjpuZXcgaW50WzFdWzJdCisgICAgUHNpS2V5d29yZDpuZXcoJ25ldycpCisgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpS2V5d29yZDppbnQoJ2ludCcpCisgICAgUHNpSmF2YVRva2VuOkxCUkFDS0VUKCdbJykKKyAgICBQc2lMaXRlcmFsRXhwcmVzc2lvbjoxCisgICAgICBQc2lKYXZhVG9rZW46SU5URUdFUl9MSVRFUkFMKCcxJykKKyAgICBQc2lKYXZhVG9rZW46UkJSQUNLRVQoJ10nKQorICAgIFBzaUphdmFUb2tlbjpMQlJBQ0tFVCgnWycpCisgICAgUHNpTGl0ZXJhbEV4cHJlc3Npb246MgorICAgICAgUHNpSmF2YVRva2VuOklOVEVHRVJfTElURVJBTCgnMicpCisgICAgUHNpSmF2YVRva2VuOlJCUkFDS0VUKCddJykKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvZXhwcmVzc2lvbnMvTmV3MTMudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9leHByZXNzaW9ucy9OZXcxMy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzAwY2NhMgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvZXhwcmVzc2lvbnMvTmV3MTMudHh0CkBAIC0wLDAgKzEsMTkgQEAKK1BzaUphdmFGaWxlOk5ldzEzLmphdmEKKyAgUHNpTmV3RXhwcmVzc2lvbjpuZXcgaW50WzFdW11bCisgICAgUHNpS2V5d29yZDpuZXcoJ25ldycpCisgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpS2V5d29yZDppbnQoJ2ludCcpCisgICAgUHNpSmF2YVRva2VuOkxCUkFDS0VUKCdbJykKKyAgICBQc2lMaXRlcmFsRXhwcmVzc2lvbjoxCisgICAgICBQc2lKYXZhVG9rZW46SU5URUdFUl9MSVRFUkFMKCcxJykKKyAgICBQc2lKYXZhVG9rZW46UkJSQUNLRVQoJ10nKQorICAgIFBzaUphdmFUb2tlbjpMQlJBQ0tFVCgnWycpCisgICAgUHNpSmF2YVRva2VuOlJCUkFDS0VUKCddJykKKyAgICBQc2lKYXZhVG9rZW46TEJSQUNLRVQoJ1snKQorICAgIFBzaUVycm9yRWxlbWVudDonXScgZXhwZWN0ZWQKKyAgICAgIDxlbXB0eSBsaXN0PgorICBQc2lFcnJvckVsZW1lbnQ6VW5wYXJzZWQgdG9rZW5zCisgICAgUHNpSmF2YVRva2VuOklOVEVHRVJfTElURVJBTCgnMicpCisgICAgUHNpSmF2YVRva2VuOlJCUkFDS0VUKCddJykKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvZXhwcmVzc2lvbnMvTmV3MTQudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9leHByZXNzaW9ucy9OZXcxNC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTc2MWQ3OQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvZXhwcmVzc2lvbnMvTmV3MTQudHh0CkBAIC0wLDAgKzEsMTggQEAKK1BzaUphdmFGaWxlOk5ldzE0LmphdmEKKyAgUHNpTmV3RXhwcmVzc2lvbjpRLm5ldyBBKCkKKyAgICBQc2lSZWZlcmVuY2VFeHByZXNzaW9uOlEKKyAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lJZGVudGlmaWVyOlEoJ1EnKQorICAgIFBzaUphdmFUb2tlbjpET1QoJy4nKQorICAgIFBzaUtleXdvcmQ6bmV3KCduZXcnKQorICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUphdmFDb2RlUmVmZXJlbmNlRWxlbWVudDpBCisgICAgICBQc2lJZGVudGlmaWVyOkEoJ0EnKQorICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lFeHByZXNzaW9uTGlzdAorICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL2V4cHJlc3Npb25zL05ldzE1LnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvZXhwcmVzc2lvbnMvTmV3MTUudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJhMWNlYTMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL2V4cHJlc3Npb25zL05ldzE1LnR4dApAQCAtMCwwICsxLDIxIEBACitQc2lKYXZhRmlsZTpOZXcxNS5qYXZhCisgIFBzaU5ld0V4cHJlc3Npb246bmV3IEM8Pz4uQigpCisgICAgUHNpS2V5d29yZDpuZXcoJ25ldycpCisgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSmF2YUNvZGVSZWZlcmVuY2VFbGVtZW50OkM8Pz4uQgorICAgICAgUHNpSmF2YUNvZGVSZWZlcmVuY2VFbGVtZW50OkM8Pz4KKyAgICAgICAgUHNpSWRlbnRpZmllcjpDKCdDJykKKyAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgIFBzaUphdmFUb2tlbjpMVCgnPCcpCisgICAgICAgICAgUHNpVHlwZUVsZW1lbnQ6PworICAgICAgICAgICAgUHNpSmF2YVRva2VuOlFVRVNUKCc/JykKKyAgICAgICAgICBQc2lKYXZhVG9rZW46R1QoJz4nKQorICAgICAgUHNpSmF2YVRva2VuOkRPVCgnLicpCisgICAgICBQc2lJZGVudGlmaWVyOkIoJ0InKQorICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lFeHByZXNzaW9uTGlzdAorICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9leHByZXNzaW9ucy9OZXcxNi50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL2V4cHJlc3Npb25zL05ldzE2LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMGJlMGIyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9leHByZXNzaW9ucy9OZXcxNi50eHQKQEAgLTAsMCArMSwxNyBAQAorUHNpSmF2YUZpbGU6TmV3MTYuamF2YQorICBQc2lOZXdFeHByZXNzaW9uOm5ldyBDPD4oKQorICAgIFBzaUtleXdvcmQ6bmV3KCduZXcnKQorICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUphdmFDb2RlUmVmZXJlbmNlRWxlbWVudDpDPD4KKyAgICAgIFBzaUlkZW50aWZpZXI6QygnQycpCisgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgIFBzaUphdmFUb2tlbjpMVCgnPCcpCisgICAgICAgIFBzaVR5cGVFbGVtZW50OgorICAgICAgICAgIFBzaVR5cGVFbGVtZW50OkRJQU1PTkQKKyAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICBQc2lKYXZhVG9rZW46R1QoJz4nKQorICAgIFBzaUV4cHJlc3Npb25MaXN0CisgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL2V4cHJlc3Npb25zL05ldzIudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9leHByZXNzaW9ucy9OZXcyLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNWIwNzVkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9leHByZXNzaW9ucy9OZXcyLnR4dApAQCAtMCwwICsxLDE0IEBACitQc2lKYXZhRmlsZTpOZXcyLmphdmEKKyAgUHNpTmV3RXhwcmVzc2lvbjpuZXcgQVtdCisgICAgUHNpS2V5d29yZDpuZXcoJ25ldycpCisgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSmF2YUNvZGVSZWZlcmVuY2VFbGVtZW50OkEKKyAgICAgIFBzaUlkZW50aWZpZXI6QSgnQScpCisgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUphdmFUb2tlbjpMQlJBQ0tFVCgnWycpCisgICAgUHNpSmF2YVRva2VuOlJCUkFDS0VUKCddJykKKyAgICBQc2lFcnJvckVsZW1lbnQ6QXJyYXkgaW5pdGlhbGl6ZXIgZXhwZWN0ZWQKKyAgICAgIDxlbXB0eSBsaXN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvZXhwcmVzc2lvbnMvTmV3My50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL2V4cHJlc3Npb25zL05ldzMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU1NDVjZGIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL2V4cHJlc3Npb25zL05ldzMudHh0CkBAIC0wLDAgKzEsMTggQEAKK1BzaUphdmFGaWxlOk5ldzMuamF2YQorICBQc2lOZXdFeHByZXNzaW9uOm5ldyBBW11bCisgICAgUHNpS2V5d29yZDpuZXcoJ25ldycpCisgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSmF2YUNvZGVSZWZlcmVuY2VFbGVtZW50OkEKKyAgICAgIFBzaUlkZW50aWZpZXI6QSgnQScpCisgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUphdmFUb2tlbjpMQlJBQ0tFVCgnWycpCisgICAgUHNpSmF2YVRva2VuOlJCUkFDS0VUKCddJykKKyAgICBQc2lKYXZhVG9rZW46TEJSQUNLRVQoJ1snKQorICAgIFBzaUVycm9yRWxlbWVudDonXScgZXhwZWN0ZWQKKyAgICAgIDxlbXB0eSBsaXN0PgorICBQc2lFcnJvckVsZW1lbnQ6VW5wYXJzZWQgdG9rZW5zCisgICAgUHNpSmF2YVRva2VuOklOVEVHRVJfTElURVJBTCgnMScpCisgICAgUHNpSmF2YVRva2VuOlJCUkFDS0VUKCddJykKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvZXhwcmVzc2lvbnMvTmV3NC50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL2V4cHJlc3Npb25zL05ldzQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEyZmY1MWUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL2V4cHJlc3Npb25zL05ldzQudHh0CkBAIC0wLDAgKzEsMTkgQEAKK1BzaUphdmFGaWxlOk5ldzQuamF2YQorICBQc2lOZXdFeHByZXNzaW9uOm5ldyBBW11bXXtudWxsfQorICAgIFBzaUtleXdvcmQ6bmV3KCduZXcnKQorICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUphdmFDb2RlUmVmZXJlbmNlRWxlbWVudDpBCisgICAgICBQc2lJZGVudGlmaWVyOkEoJ0EnKQorICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lKYXZhVG9rZW46TEJSQUNLRVQoJ1snKQorICAgIFBzaUphdmFUb2tlbjpSQlJBQ0tFVCgnXScpCisgICAgUHNpSmF2YVRva2VuOkxCUkFDS0VUKCdbJykKKyAgICBQc2lKYXZhVG9rZW46UkJSQUNLRVQoJ10nKQorICAgIFBzaUFycmF5SW5pdGlhbGl6ZXJFeHByZXNzaW9uOntudWxsfQorICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICBQc2lMaXRlcmFsRXhwcmVzc2lvbjpudWxsCisgICAgICAgIFBzaUphdmFUb2tlbjpOVUxMX0tFWVdPUkQoJ251bGwnKQorICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL2V4cHJlc3Npb25zL05ldzUudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9leHByZXNzaW9ucy9OZXc1LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNzcwNjEzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9leHByZXNzaW9ucy9OZXc1LnR4dApAQCAtMCwwICsxLDE4IEBACitQc2lKYXZhRmlsZTpOZXc1LmphdmEKKyAgUHNpTmV3RXhwcmVzc2lvbjpuZXcgQVsxXQorICAgIFBzaUtleXdvcmQ6bmV3KCduZXcnKQorICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUphdmFDb2RlUmVmZXJlbmNlRWxlbWVudDpBCisgICAgICBQc2lJZGVudGlmaWVyOkEoJ0EnKQorICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lKYXZhVG9rZW46TEJSQUNLRVQoJ1snKQorICAgIFBzaUxpdGVyYWxFeHByZXNzaW9uOjEKKyAgICAgIFBzaUphdmFUb2tlbjpJTlRFR0VSX0xJVEVSQUwoJzEnKQorICAgIFBzaUphdmFUb2tlbjpSQlJBQ0tFVCgnXScpCisgIFBzaUVycm9yRWxlbWVudDpVbnBhcnNlZCB0b2tlbnMKKyAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICBQc2lKYXZhVG9rZW46TlVMTF9LRVlXT1JEKCdudWxsJykKKyAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvZXhwcmVzc2lvbnMvTmV3Ni50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL2V4cHJlc3Npb25zL05ldzYudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ3NjdjOTAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL2V4cHJlc3Npb25zL05ldzYudHh0CkBAIC0wLDAgKzEsNyBAQAorUHNpSmF2YUZpbGU6TmV3Ni5qYXZhCisgIFBzaU5ld0V4cHJlc3Npb246bmV3CisgICAgUHNpS2V5d29yZDpuZXcoJ25ldycpCisgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpRXJyb3JFbGVtZW50OklkZW50aWZpZXIgZXhwZWN0ZWQKKyAgICAgIDxlbXB0eSBsaXN0PgpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9leHByZXNzaW9ucy9OZXc3LnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvZXhwcmVzc2lvbnMvTmV3Ny50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODVlNGJiMwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvZXhwcmVzc2lvbnMvTmV3Ny50eHQKQEAgLTAsMCArMSwxMiBAQAorUHNpSmF2YUZpbGU6TmV3Ny5qYXZhCisgIFBzaU5ld0V4cHJlc3Npb246bmV3IEEKKyAgICBQc2lLZXl3b3JkOm5ldygnbmV3JykKKyAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lKYXZhQ29kZVJlZmVyZW5jZUVsZW1lbnQ6QQorICAgICAgUHNpSWRlbnRpZmllcjpBKCdBJykKKyAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpRXJyb3JFbGVtZW50OicoJyBvciAnWycgZXhwZWN0ZWQKKyAgICAgIDxlbXB0eSBsaXN0PgpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9leHByZXNzaW9ucy9OZXc4LnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvZXhwcmVzc2lvbnMvTmV3OC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmEwMmZkNAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvZXhwcmVzc2lvbnMvTmV3OC50eHQKQEAgLTAsMCArMSwxMyBAQAorUHNpSmF2YUZpbGU6TmV3OC5qYXZhCisgIFBzaU5ld0V4cHJlc3Npb246bmV3IEFbCisgICAgUHNpS2V5d29yZDpuZXcoJ25ldycpCisgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSmF2YUNvZGVSZWZlcmVuY2VFbGVtZW50OkEKKyAgICAgIFBzaUlkZW50aWZpZXI6QSgnQScpCisgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUphdmFUb2tlbjpMQlJBQ0tFVCgnWycpCisgICAgUHNpRXJyb3JFbGVtZW50OiddJyBleHBlY3RlZAorICAgICAgPGVtcHR5IGxpc3Q+CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL2V4cHJlc3Npb25zL05ldzkudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9leHByZXNzaW9ucy9OZXc5LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41OGVkZTViCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9leHByZXNzaW9ucy9OZXc5LnR4dApAQCAtMCwwICsxLDkgQEAKK1BzaUphdmFGaWxlOk5ldzkuamF2YQorICBQc2lOZXdFeHByZXNzaW9uOm5ldyBpbnQKKyAgICBQc2lLZXl3b3JkOm5ldygnbmV3JykKKyAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lLZXl3b3JkOmludCgnaW50JykKKyAgICBQc2lFcnJvckVsZW1lbnQ6J1snIGV4cGVjdGVkCisgICAgICA8ZW1wdHkgbGlzdD4KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvZXhwcmVzc2lvbnMvTmV3SW5FeHByTGlzdC50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL2V4cHJlc3Npb25zL05ld0luRXhwckxpc3QudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ5YjlmYjYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL2V4cHJlc3Npb25zL05ld0luRXhwckxpc3QudHh0CkBAIC0wLDAgKzEsMTUgQEAKK1BzaUphdmFGaWxlOk5ld0luRXhwckxpc3QuamF2YQorICBQc2lNZXRob2RDYWxsRXhwcmVzc2lvbjpjYWxsKG5ldykKKyAgICBQc2lSZWZlcmVuY2VFeHByZXNzaW9uOmNhbGwKKyAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lJZGVudGlmaWVyOmNhbGwoJ2NhbGwnKQorICAgIFBzaUV4cHJlc3Npb25MaXN0CisgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgUHNpTmV3RXhwcmVzc2lvbjpuZXcKKyAgICAgICAgUHNpS2V5d29yZDpuZXcoJ25ldycpCisgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgUHNpRXJyb3JFbGVtZW50OklkZW50aWZpZXIgZXhwZWN0ZWQKKyAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL2V4cHJlc3Npb25zL05vdDAudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9leHByZXNzaW9ucy9Ob3QwLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YzZiNmNhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9leHByZXNzaW9ucy9Ob3QwLnR4dApAQCAtMCwwICsxLDkgQEAKK1BzaUphdmFGaWxlOk5vdDAuamF2YQorICBQc2lQcmVmaXhFeHByZXNzaW9uOiEhYQorICAgIFBzaUphdmFUb2tlbjpFWENMKCchJykKKyAgICBQc2lQcmVmaXhFeHByZXNzaW9uOiFhCisgICAgICBQc2lKYXZhVG9rZW46RVhDTCgnIScpCisgICAgICBQc2lSZWZlcmVuY2VFeHByZXNzaW9uOmEKKyAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICBQc2lJZGVudGlmaWVyOmEoJ2EnKQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9leHByZXNzaW9ucy9Ob3QxLnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvZXhwcmVzc2lvbnMvTm90MS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2FkNWRiYQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvZXhwcmVzc2lvbnMvTm90MS50eHQKQEAgLTAsMCArMSw1IEBACitQc2lKYXZhRmlsZTpOb3QxLmphdmEKKyAgUHNpUHJlZml4RXhwcmVzc2lvbjohCisgICAgUHNpSmF2YVRva2VuOkVYQ0woJyEnKQorICAgIFBzaUVycm9yRWxlbWVudDpFeHByZXNzaW9uIGV4cGVjdGVkCisgICAgICA8ZW1wdHkgbGlzdD4KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvZXhwcmVzc2lvbnMvT3IwLnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvZXhwcmVzc2lvbnMvT3IwLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NmNmNGUwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9leHByZXNzaW9ucy9PcjAudHh0CkBAIC0wLDAgKzEsMjAgQEAKK1BzaUphdmFGaWxlOk9yMC5qYXZhCisgIFBzaVBvbHlhZGljRXhwcmVzc2lvbjogYSB8IGIgfCBjCisgICAgUHNpUmVmZXJlbmNlRXhwcmVzc2lvbjphCisgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpSWRlbnRpZmllcjphKCdhJykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lKYXZhVG9rZW46T1IoJ3wnKQorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaVJlZmVyZW5jZUV4cHJlc3Npb246YgorICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUlkZW50aWZpZXI6YignYicpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSmF2YVRva2VuOk9SKCd8JykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lSZWZlcmVuY2VFeHByZXNzaW9uOmMKKyAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lJZGVudGlmaWVyOmMoJ2MnKQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvZXhwcmVzc2lvbnMvT3IxLnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvZXhwcmVzc2lvbnMvT3IxLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ODg5NGVhYQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvZXhwcmVzc2lvbnMvT3IxLnR4dApAQCAtMCwwICsxLDEwIEBACitQc2lKYXZhRmlsZTpPcjEuamF2YQorICBQc2lCaW5hcnlFeHByZXNzaW9uOmEgfAorICAgIFBzaVJlZmVyZW5jZUV4cHJlc3Npb246YQorICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUlkZW50aWZpZXI6YSgnYScpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSmF2YVRva2VuOk9SKCd8JykKKyAgICBQc2lFcnJvckVsZW1lbnQ6RXhwcmVzc2lvbiBleHBlY3RlZAorICAgICAgPGVtcHR5IGxpc3Q+CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL2V4cHJlc3Npb25zL1BhcmVudGgwLnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvZXhwcmVzc2lvbnMvUGFyZW50aDAudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMzYmVmYzYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL2V4cHJlc3Npb25zL1BhcmVudGgwLnR4dApAQCAtMCwwICsxLDggQEAKK1BzaUphdmFGaWxlOlBhcmVudGgwLmphdmEKKyAgUHNpUGFyZW50aGVzaXplZEV4cHJlc3Npb246KGMpCisgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICBQc2lSZWZlcmVuY2VFeHByZXNzaW9uOmMKKyAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lJZGVudGlmaWVyOmMoJ2MnKQorICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL2V4cHJlc3Npb25zL1BhcmVudGgxLnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvZXhwcmVzc2lvbnMvUGFyZW50aDEudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNlZWZjOTMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL2V4cHJlc3Npb25zL1BhcmVudGgxLnR4dApAQCAtMCwwICsxLDE1IEBACitQc2lKYXZhRmlsZTpQYXJlbnRoMS5qYXZhCisgIFBzaVBvc3RmaXhFeHByZXNzaW9uOih0aGlzKS5mLS0KKyAgICBQc2lSZWZlcmVuY2VFeHByZXNzaW9uOih0aGlzKS5mCisgICAgICBQc2lQYXJlbnRoZXNpemVkRXhwcmVzc2lvbjoodGhpcykKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpVGhpc0V4cHJlc3Npb246dGhpcworICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgIFBzaUtleXdvcmQ6dGhpcygndGhpcycpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lKYXZhVG9rZW46RE9UKCcuJykKKyAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lJZGVudGlmaWVyOmYoJ2YnKQorICAgIFBzaUphdmFUb2tlbjpNSU5VU01JTlVTKCctLScpCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL2V4cHJlc3Npb25zL1BhcmVudGgyLnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvZXhwcmVzc2lvbnMvUGFyZW50aDIudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlhMWEzNWIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL2V4cHJlc3Npb25zL1BhcmVudGgyLnR4dApAQCAtMCwwICsxLDUgQEAKK1BzaUphdmFGaWxlOlBhcmVudGgyLmphdmEKKyAgUHNpUGFyZW50aGVzaXplZEV4cHJlc3Npb246KAorICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgUHNpRXJyb3JFbGVtZW50OkV4cHJlc3Npb24gZXhwZWN0ZWQKKyAgICAgIDxlbXB0eSBsaXN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvZXhwcmVzc2lvbnMvUGFyZW50aDMudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9leHByZXNzaW9ucy9QYXJlbnRoMy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzg2Y2JlZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvZXhwcmVzc2lvbnMvUGFyZW50aDMudHh0CkBAIC0wLDAgKzEsMTYgQEAKK1BzaUphdmFGaWxlOlBhcmVudGgzLmphdmEKKyAgUHNpUGFyZW50aGVzaXplZEV4cHJlc3Npb246KGEgPCBiKQorICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgUHNpQmluYXJ5RXhwcmVzc2lvbjphIDwgYgorICAgICAgUHNpUmVmZXJlbmNlRXhwcmVzc2lvbjphCisgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgUHNpSWRlbnRpZmllcjphKCdhJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSmF2YVRva2VuOkxUKCc8JykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpUmVmZXJlbmNlRXhwcmVzc2lvbjpiCisgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgUHNpSWRlbnRpZmllcjpiKCdiJykKKyAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9leHByZXNzaW9ucy9QaW5lc0luUmVmZXJlbmNlRXhwcmVzc2lvbjAudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9leHByZXNzaW9ucy9QaW5lc0luUmVmZXJlbmNlRXhwcmVzc2lvbjAudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI4MjRlZTEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL2V4cHJlc3Npb25zL1BpbmVzSW5SZWZlcmVuY2VFeHByZXNzaW9uMC50eHQKQEAgLTAsMCArMSwyMiBAQAorUHNpSmF2YUZpbGU6UGluZXNJblJlZmVyZW5jZUV4cHJlc3Npb24wLmphdmEKKyAgUHNpTWV0aG9kQ2FsbEV4cHJlc3Npb246Q29sbGVjdGlvbnMuPFN0cmluZz5zb3J0KG51bGwpCisgICAgUHNpUmVmZXJlbmNlRXhwcmVzc2lvbjpDb2xsZWN0aW9ucy48U3RyaW5nPnNvcnQKKyAgICAgIFBzaVJlZmVyZW5jZUV4cHJlc3Npb246Q29sbGVjdGlvbnMKKyAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICBQc2lJZGVudGlmaWVyOkNvbGxlY3Rpb25zKCdDb2xsZWN0aW9ucycpCisgICAgICBQc2lKYXZhVG9rZW46RE9UKCcuJykKKyAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgUHNpSmF2YVRva2VuOkxUKCc8JykKKyAgICAgICAgUHNpVHlwZUVsZW1lbnQ6U3RyaW5nCisgICAgICAgICAgUHNpSmF2YUNvZGVSZWZlcmVuY2VFbGVtZW50OlN0cmluZworICAgICAgICAgICAgUHNpSWRlbnRpZmllcjpTdHJpbmcoJ1N0cmluZycpCisgICAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICBQc2lKYXZhVG9rZW46R1QoJz4nKQorICAgICAgUHNpSWRlbnRpZmllcjpzb3J0KCdzb3J0JykKKyAgICBQc2lFeHByZXNzaW9uTGlzdAorICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgIFBzaUxpdGVyYWxFeHByZXNzaW9uOm51bGwKKyAgICAgICAgUHNpSmF2YVRva2VuOk5VTExfS0VZV09SRCgnbnVsbCcpCisgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9leHByZXNzaW9ucy9QaW5lc0luUmVmZXJlbmNlRXhwcmVzc2lvbjEudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9leHByZXNzaW9ucy9QaW5lc0luUmVmZXJlbmNlRXhwcmVzc2lvbjEudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjViODIxZmQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL2V4cHJlc3Npb25zL1BpbmVzSW5SZWZlcmVuY2VFeHByZXNzaW9uMS50eHQKQEAgLTAsMCArMSwyMiBAQAorUHNpSmF2YUZpbGU6UGluZXNJblJlZmVyZW5jZUV4cHJlc3Npb24xLmphdmEKKyAgUHNpTWV0aG9kQ2FsbEV4cHJlc3Npb246dGhpcy48U3RyaW5nPnNvcnQobnVsbCkKKyAgICBQc2lSZWZlcmVuY2VFeHByZXNzaW9uOnRoaXMuPFN0cmluZz5zb3J0CisgICAgICBQc2lUaGlzRXhwcmVzc2lvbjp0aGlzCisgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgUHNpS2V5d29yZDp0aGlzKCd0aGlzJykKKyAgICAgIFBzaUphdmFUb2tlbjpET1QoJy4nKQorICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICBQc2lKYXZhVG9rZW46TFQoJzwnKQorICAgICAgICBQc2lUeXBlRWxlbWVudDpTdHJpbmcKKyAgICAgICAgICBQc2lKYXZhQ29kZVJlZmVyZW5jZUVsZW1lbnQ6U3RyaW5nCisgICAgICAgICAgICBQc2lJZGVudGlmaWVyOlN0cmluZygnU3RyaW5nJykKKyAgICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgIFBzaUphdmFUb2tlbjpHVCgnPicpCisgICAgICBQc2lJZGVudGlmaWVyOnNvcnQoJ3NvcnQnKQorICAgIFBzaUV4cHJlc3Npb25MaXN0CisgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgUHNpTGl0ZXJhbEV4cHJlc3Npb246bnVsbAorICAgICAgICBQc2lKYXZhVG9rZW46TlVMTF9LRVlXT1JEKCdudWxsJykKKyAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL2V4cHJlc3Npb25zL1BpbmVzSW5SZWZlcmVuY2VFeHByZXNzaW9uMi50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL2V4cHJlc3Npb25zL1BpbmVzSW5SZWZlcmVuY2VFeHByZXNzaW9uMi50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTJiMzdkMwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvZXhwcmVzc2lvbnMvUGluZXNJblJlZmVyZW5jZUV4cHJlc3Npb24yLnR4dApAQCAtMCwwICsxLDE3IEBACitQc2lKYXZhRmlsZTpQaW5lc0luUmVmZXJlbmNlRXhwcmVzc2lvbjIuamF2YQorICBQc2lNZXRob2RDYWxsRXhwcmVzc2lvbjo8U3RyaW5nPnN1cGVyKG51bGwpCisgICAgUHNpUmVmZXJlbmNlRXhwcmVzc2lvbjo8U3RyaW5nPnN1cGVyCisgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgIFBzaUphdmFUb2tlbjpMVCgnPCcpCisgICAgICAgIFBzaVR5cGVFbGVtZW50OlN0cmluZworICAgICAgICAgIFBzaUphdmFDb2RlUmVmZXJlbmNlRWxlbWVudDpTdHJpbmcKKyAgICAgICAgICAgIFBzaUlkZW50aWZpZXI6U3RyaW5nKCdTdHJpbmcnKQorICAgICAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgUHNpSmF2YVRva2VuOkdUKCc+JykKKyAgICAgIFBzaUtleXdvcmQ6c3VwZXIoJ3N1cGVyJykKKyAgICBQc2lFeHByZXNzaW9uTGlzdAorICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgIFBzaUxpdGVyYWxFeHByZXNzaW9uOm51bGwKKyAgICAgICAgUHNpSmF2YVRva2VuOk5VTExfS0VZV09SRCgnbnVsbCcpCisgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvZXhwcmVzc2lvbnMvUHJpbWl0aXZlQ2xhc3NPYmplY3RBY2Nlc3MudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9leHByZXNzaW9ucy9QcmltaXRpdmVDbGFzc09iamVjdEFjY2Vzcy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDhiZGJhZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvZXhwcmVzc2lvbnMvUHJpbWl0aXZlQ2xhc3NPYmplY3RBY2Nlc3MudHh0CkBAIC0wLDAgKzEsNiBAQAorUHNpSmF2YUZpbGU6UHJpbWl0aXZlQ2xhc3NPYmplY3RBY2Nlc3MuamF2YQorICBQc2lDbGFzc09iamVjdEFjY2Vzc0V4cHJlc3Npb246aW50LmNsYXNzCisgICAgUHNpVHlwZUVsZW1lbnQ6aW50CisgICAgICBQc2lLZXl3b3JkOmludCgnaW50JykKKyAgICBQc2lKYXZhVG9rZW46RE9UKCcuJykKKyAgICBQc2lLZXl3b3JkOmNsYXNzKCdjbGFzcycpCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL2V4cHJlc3Npb25zL1ByaW1pdGl2ZUZpZWxkQWNjZXNzLnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvZXhwcmVzc2lvbnMvUHJpbWl0aXZlRmllbGRBY2Nlc3MudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEzZTM1YWIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL2V4cHJlc3Npb25zL1ByaW1pdGl2ZUZpZWxkQWNjZXNzLnR4dApAQCAtMCwwICsxLDExIEBACitQc2lKYXZhRmlsZTpQcmltaXRpdmVGaWVsZEFjY2Vzcy5qYXZhCisgIFBzaVJlZmVyZW5jZUV4cHJlc3Npb246aW50LngKKyAgICBQc2lDbGFzc09iamVjdEFjY2Vzc0V4cHJlc3Npb246aW50CisgICAgICBQc2lUeXBlRWxlbWVudDppbnQKKyAgICAgICAgUHNpS2V5d29yZDppbnQoJ2ludCcpCisgICAgICBQc2lFcnJvckVsZW1lbnQ6LmNsYXNzIGV4cGVjdGVkCisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUphdmFUb2tlbjpET1QoJy4nKQorICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUlkZW50aWZpZXI6eCgneCcpClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9leHByZXNzaW9ucy9RdWFsaWZpZWRTdXBlck1ldGhvZENhbGwwLnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvZXhwcmVzc2lvbnMvUXVhbGlmaWVkU3VwZXJNZXRob2RDYWxsMC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmIyMjcwMAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvZXhwcmVzc2lvbnMvUXVhbGlmaWVkU3VwZXJNZXRob2RDYWxsMC50eHQKQEAgLTAsMCArMSwyMiBAQAorUHNpSmF2YUZpbGU6UXVhbGlmaWVkU3VwZXJNZXRob2RDYWxsMC5qYXZhCisgIFBzaU1ldGhvZENhbGxFeHByZXNzaW9uOm5ldyBEKCkuc3VwZXIoMCkKKyAgICBQc2lSZWZlcmVuY2VFeHByZXNzaW9uOm5ldyBEKCkuc3VwZXIKKyAgICAgIFBzaU5ld0V4cHJlc3Npb246bmV3IEQoKQorICAgICAgICBQc2lLZXl3b3JkOm5ldygnbmV3JykKKyAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgICAgUHNpSmF2YUNvZGVSZWZlcmVuY2VFbGVtZW50OkQKKyAgICAgICAgICBQc2lJZGVudGlmaWVyOkQoJ0QnKQorICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICBQc2lFeHByZXNzaW9uTGlzdAorICAgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaUphdmFUb2tlbjpET1QoJy4nKQorICAgICAgUHNpS2V5d29yZDpzdXBlcignc3VwZXInKQorICAgIFBzaUV4cHJlc3Npb25MaXN0CisgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgUHNpTGl0ZXJhbEV4cHJlc3Npb246MAorICAgICAgICBQc2lKYXZhVG9rZW46SU5URUdFUl9MSVRFUkFMKCcwJykKKyAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL2V4cHJlc3Npb25zL1F1YWxpZmllZFN1cGVyTWV0aG9kQ2FsbDEudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9leHByZXNzaW9ucy9RdWFsaWZpZWRTdXBlck1ldGhvZENhbGwxLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMDhlYjcxYwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvZXhwcmVzc2lvbnMvUXVhbGlmaWVkU3VwZXJNZXRob2RDYWxsMS50eHQKQEAgLTAsMCArMSwxNCBAQAorUHNpSmF2YUZpbGU6UXVhbGlmaWVkU3VwZXJNZXRob2RDYWxsMS5qYXZhCisgIFBzaU1ldGhvZENhbGxFeHByZXNzaW9uOmQuc3VwZXIoMCkKKyAgICBQc2lSZWZlcmVuY2VFeHByZXNzaW9uOmQuc3VwZXIKKyAgICAgIFBzaVJlZmVyZW5jZUV4cHJlc3Npb246ZAorICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgIFBzaUlkZW50aWZpZXI6ZCgnZCcpCisgICAgICBQc2lKYXZhVG9rZW46RE9UKCcuJykKKyAgICAgIFBzaUtleXdvcmQ6c3VwZXIoJ3N1cGVyJykKKyAgICBQc2lFeHByZXNzaW9uTGlzdAorICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgIFBzaUxpdGVyYWxFeHByZXNzaW9uOjAKKyAgICAgICAgUHNpSmF2YVRva2VuOklOVEVHRVJfTElURVJBTCgnMCcpCisgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9leHByZXNzaW9ucy9RdWFsaWZpZWRTdXBlck1ldGhvZENhbGwyLnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvZXhwcmVzc2lvbnMvUXVhbGlmaWVkU3VwZXJNZXRob2RDYWxsMi50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODUzYWMzZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvZXhwcmVzc2lvbnMvUXVhbGlmaWVkU3VwZXJNZXRob2RDYWxsMi50eHQKQEAgLTAsMCArMSwzMSBAQAorUHNpSmF2YUZpbGU6UXVhbGlmaWVkU3VwZXJNZXRob2RDYWxsMi5qYXZhCisgIFBzaU1ldGhvZENhbGxFeHByZXNzaW9uOihuZXcgTygpKS48VD5zdXBlcigpCisgICAgUHNpUmVmZXJlbmNlRXhwcmVzc2lvbjoobmV3IE8oKSkuPFQ+c3VwZXIKKyAgICAgIFBzaVBhcmVudGhlc2l6ZWRFeHByZXNzaW9uOihuZXcgTygpKQorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lOZXdFeHByZXNzaW9uOm5ldyBPKCkKKyAgICAgICAgICBQc2lLZXl3b3JkOm5ldygnbmV3JykKKyAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgICAgICBQc2lKYXZhQ29kZVJlZmVyZW5jZUVsZW1lbnQ6TworICAgICAgICAgICAgUHNpSWRlbnRpZmllcjpPKCdPJykKKyAgICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgUHNpRXhwcmVzc2lvbkxpc3QKKyAgICAgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpSmF2YVRva2VuOkRPVCgnLicpCisgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgIFBzaUphdmFUb2tlbjpMVCgnPCcpCisgICAgICAgIFBzaVR5cGVFbGVtZW50OlQKKyAgICAgICAgICBQc2lKYXZhQ29kZVJlZmVyZW5jZUVsZW1lbnQ6VAorICAgICAgICAgICAgUHNpSWRlbnRpZmllcjpUKCdUJykKKyAgICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgIFBzaUphdmFUb2tlbjpHVCgnPicpCisgICAgICBQc2lLZXl3b3JkOnN1cGVyKCdzdXBlcicpCisgICAgUHNpRXhwcmVzc2lvbkxpc3QKKyAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9leHByZXNzaW9ucy9TaGlmdFJpZ2h0LnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvZXhwcmVzc2lvbnMvU2hpZnRSaWdodC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODZkOWZjNjgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL2V4cHJlc3Npb25zL1NoaWZ0UmlnaHQudHh0CkBAIC0wLDAgKzEsMTEgQEAKK1BzaUphdmFGaWxlOlNoaWZ0UmlnaHQuamF2YQorICBQc2lBc3NpZ25tZW50RXhwcmVzc2lvbjp4ID4+PSAyCisgICAgUHNpUmVmZXJlbmNlRXhwcmVzc2lvbjp4CisgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpSWRlbnRpZmllcjp4KCd4JykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lKYXZhVG9rZW46R1RHVEVRKCc+Pj0nKQorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUxpdGVyYWxFeHByZXNzaW9uOjIKKyAgICAgIFBzaUphdmFUb2tlbjpJTlRFR0VSX0xJVEVSQUwoJzInKQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9leHByZXNzaW9ucy9TdXBlck1ldGhvZENhbGxUeXBlUGFyYW1ldGVyTGlzdC50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL2V4cHJlc3Npb25zL1N1cGVyTWV0aG9kQ2FsbFR5cGVQYXJhbWV0ZXJMaXN0LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMTdhNzU3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9leHByZXNzaW9ucy9TdXBlck1ldGhvZENhbGxUeXBlUGFyYW1ldGVyTGlzdC50eHQKQEAgLTAsMCArMSw5IEBACitQc2lKYXZhRmlsZTpTdXBlck1ldGhvZENhbGxUeXBlUGFyYW1ldGVyTGlzdC5qYXZhCisgIFBzaU1ldGhvZENhbGxFeHByZXNzaW9uOnN1cGVyKCkKKyAgICBQc2lSZWZlcmVuY2VFeHByZXNzaW9uOnN1cGVyCisgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpS2V5d29yZDpzdXBlcignc3VwZXInKQorICAgIFBzaUV4cHJlc3Npb25MaXN0CisgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvZmlsZXMvQW5ub3RhdGVkUGFja2FnZS50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL2ZpbGVzL0Fubm90YXRlZFBhY2thZ2UudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU2MGMyZWIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL2ZpbGVzL0Fubm90YXRlZFBhY2thZ2UudHh0CkBAIC0wLDAgKzEsMzEgQEAKK1BzaUphdmFGaWxlOkFubm90YXRlZFBhY2thZ2UuamF2YQorICBQc2lQYWNrYWdlU3RhdGVtZW50OmEuYi5jCisgICAgUHNpTW9kaWZpZXJMaXN0OkBBbm5vCisgICAgICBQc2lBbm5vdGF0aW9uCisgICAgICAgIFBzaUphdmFUb2tlbjpBVCgnQCcpCisgICAgICAgIFBzaUphdmFDb2RlUmVmZXJlbmNlRWxlbWVudDpBbm5vCisgICAgICAgICAgUHNpSWRlbnRpZmllcjpBbm5vKCdBbm5vJykKKyAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgUHNpQW5ub3RhdGlvblBhcmFtZXRlckxpc3QKKyAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lLZXl3b3JkOnBhY2thZ2UoJ3BhY2thZ2UnKQorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUphdmFDb2RlUmVmZXJlbmNlRWxlbWVudDphLmIuYworICAgICAgUHNpSmF2YUNvZGVSZWZlcmVuY2VFbGVtZW50OmEuYgorICAgICAgICBQc2lKYXZhQ29kZVJlZmVyZW5jZUVsZW1lbnQ6YQorICAgICAgICAgIFBzaUlkZW50aWZpZXI6YSgnYScpCisgICAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgIFBzaUphdmFUb2tlbjpET1QoJy4nKQorICAgICAgICBQc2lJZGVudGlmaWVyOmIoJ2InKQorICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lKYXZhVG9rZW46RE9UKCcuJykKKyAgICAgIFBzaUlkZW50aWZpZXI6YygnYycpCisgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUphdmFUb2tlbjpTRU1JQ09MT04oJzsnKQorICBQc2lJbXBvcnRMaXN0CisgICAgPGVtcHR5IGxpc3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9maWxlcy9CaW5kQmVmb3JlMC50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL2ZpbGVzL0JpbmRCZWZvcmUwLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MzRlNDlhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9maWxlcy9CaW5kQmVmb3JlMC50eHQKQEAgLTAsMCArMSwyOSBAQAorUHNpSmF2YUZpbGU6QmluZEJlZm9yZTAuamF2YQorICBQc2lJbXBvcnRMaXN0CisgICAgPGVtcHR5IGxpc3Q+CisgIFBzaUNsYXNzOkEKKyAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lLZXl3b3JkOmNsYXNzKCdjbGFzcycpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSWRlbnRpZmllcjpBKCdBJykKKyAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4gICcpCisgICAgUHNpRmllbGQ6ZmllbGQKKyAgICAgIFBzaUNvbW1lbnQoRU5EX09GX0xJTkVfQ09NTUVOVCkoJy8vIGNvbW1lbnQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6aW50CisgICAgICAgIFBzaUtleXdvcmQ6aW50KCdpbnQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZpZWxkKCdmaWVsZCcpCisgICAgICBQc2lKYXZhVG9rZW46U0VNSUNPTE9OKCc7JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcbicpCisgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL2ZpbGVzL0JpbmRCZWZvcmUxLnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvZmlsZXMvQmluZEJlZm9yZTEudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI1OTM2NzAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL2ZpbGVzL0JpbmRCZWZvcmUxLnR4dApAQCAtMCwwICsxLDI5IEBACitQc2lKYXZhRmlsZTpCaW5kQmVmb3JlMS5qYXZhCisgIFBzaUltcG9ydExpc3QKKyAgICA8ZW1wdHkgbGlzdD4KKyAgUHNpQ2xhc3M6QQorICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUtleXdvcmQ6Y2xhc3MoJ2NsYXNzJykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lJZGVudGlmaWVyOkEoJ0EnKQorICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgJykKKyAgICBQc2lDb21tZW50KEVORF9PRl9MSU5FX0NPTU1FTlQpKCcvLyBjb21tZW50JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcblxuICAnKQorICAgIFBzaUZpZWxkOmZpZWxkCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6aW50CisgICAgICAgIFBzaUtleXdvcmQ6aW50KCdpbnQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZpZWxkKCdmaWVsZCcpCisgICAgICBQc2lKYXZhVG9rZW46U0VNSUNPTE9OKCc7JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcbicpCisgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL2ZpbGVzL0JpbmRCZWZvcmUyLnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvZmlsZXMvQmluZEJlZm9yZTIudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBiNjE3NGMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL2ZpbGVzL0JpbmRCZWZvcmUyLnR4dApAQCAtMCwwICsxLDI5IEBACitQc2lKYXZhRmlsZTpCaW5kQmVmb3JlMi5qYXZhCisgIFBzaUltcG9ydExpc3QKKyAgICA8ZW1wdHkgbGlzdD4KKyAgUHNpQ2xhc3M6QQorICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUtleXdvcmQ6Y2xhc3MoJ2NsYXNzJykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lJZGVudGlmaWVyOkEoJ0EnKQorICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lDb21tZW50KEVORF9PRl9MSU5FX0NPTU1FTlQpKCcvLyBjb21tZW50JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcbiAgJykKKyAgICBQc2lGaWVsZDpmaWVsZAorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OmludAorICAgICAgICBQc2lLZXl3b3JkOmludCgnaW50JykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmaWVsZCgnZmllbGQnKQorICAgICAgUHNpSmF2YVRva2VuOlNFTUlDT0xPTignOycpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4nKQorICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9maWxlcy9CaW5kQmVmb3JlMy50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL2ZpbGVzL0JpbmRCZWZvcmUzLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZGUyZWZmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9maWxlcy9CaW5kQmVmb3JlMy50eHQKQEAgLTAsMCArMSwyOCBAQAorUHNpSmF2YUZpbGU6QmluZEJlZm9yZTMuamF2YQorICBQc2lJbXBvcnRMaXN0CisgICAgPGVtcHR5IGxpc3Q+CisgIFBzaUNsYXNzOkEKKyAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lLZXl3b3JkOmNsYXNzKCdjbGFzcycpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSWRlbnRpZmllcjpBKCdBJykKKyAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgUHNpQ29tbWVudChFTkRfT0ZfTElORV9DT01NRU5UKSgnLy8gY29tbWVudCcpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4gICcpCisgICAgUHNpRmllbGQ6ZmllbGQKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDppbnQKKyAgICAgICAgUHNpS2V5d29yZDppbnQoJ2ludCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6ZmllbGQoJ2ZpZWxkJykKKyAgICAgIFBzaUphdmFUb2tlbjpTRU1JQ09MT04oJzsnKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuJykKKyAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvZmlsZXMvQmluZEJlZm9yZTQudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9maWxlcy9CaW5kQmVmb3JlNC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTE3ZjI2MwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvZmlsZXMvQmluZEJlZm9yZTQudHh0CkBAIC0wLDAgKzEsMzMgQEAKK1BzaUphdmFGaWxlOkJpbmRCZWZvcmU0LmphdmEKKyAgUHNpSW1wb3J0TGlzdAorICAgIDxlbXB0eSBsaXN0PgorICBQc2lDbGFzczpBCisgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpS2V5d29yZDpjbGFzcygnY2xhc3MnKQorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUlkZW50aWZpZXI6QSgnQScpCisgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuICAnKQorICAgIFBzaUZpZWxkOmZpZWxkCisgICAgICBQc2lDb21tZW50KEVORF9PRl9MSU5FX0NPTU1FTlQpKCcvLyBjb21tZW50IDEnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gICcpCisgICAgICBQc2lDb21tZW50KEVORF9PRl9MSU5FX0NPTU1FTlQpKCcvLyBjb21tZW50IDInKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gICcpCisgICAgICBQc2lDb21tZW50KEVORF9PRl9MSU5FX0NPTU1FTlQpKCcvLyBjb21tZW50IDMnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gICcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpVHlwZUVsZW1lbnQ6aW50CisgICAgICAgIFBzaUtleXdvcmQ6aW50KCdpbnQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmZpZWxkKCdmaWVsZCcpCisgICAgICBQc2lKYXZhVG9rZW46U0VNSUNPTE9OKCc7JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcbicpCisgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL2ZpbGVzL0JpbmREb2NDb21tZW50MC50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL2ZpbGVzL0JpbmREb2NDb21tZW50MC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWI3YmY1OAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvZmlsZXMvQmluZERvY0NvbW1lbnQwLnR4dApAQCAtMCwwICsxLDI1IEBACitQc2lKYXZhRmlsZTpCaW5kRG9jQ29tbWVudDAuamF2YQorICBQc2lJbXBvcnRMaXN0CisgICAgPGVtcHR5IGxpc3Q+CisgIFBzaUNsYXNzOkEKKyAgICBQc2lEb2NDb21tZW50CisgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfREFUQSgnY2xhc3MgY29tbWVudCAnKQorICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4nKQorICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUtleXdvcmQ6Y2xhc3MoJ2NsYXNzJykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lJZGVudGlmaWVyOkEoJ0EnKQorICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvZmlsZXMvQmluZERvY0NvbW1lbnQxLnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvZmlsZXMvQmluZERvY0NvbW1lbnQxLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NDkzOWNhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9maWxlcy9CaW5kRG9jQ29tbWVudDEudHh0CkBAIC0wLDAgKzEsMzQgQEAKK1BzaUphdmFGaWxlOkJpbmREb2NDb21tZW50MS5qYXZhCisgIFBzaURvY0NvbW1lbnQKKyAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9EQVRBKCdmaWxlIGNvbW1lbnQgJykKKyAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9FTkQoJyovJykKKyAgUHNpV2hpdGVTcGFjZSgnXG4nKQorICBQc2lQYWNrYWdlU3RhdGVtZW50OmEKKyAgICBQc2lLZXl3b3JkOnBhY2thZ2UoJ3BhY2thZ2UnKQorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUphdmFDb2RlUmVmZXJlbmNlRWxlbWVudDphCisgICAgICBQc2lJZGVudGlmaWVyOmEoJ2EnKQorICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lKYXZhVG9rZW46U0VNSUNPTE9OKCc7JykKKyAgUHNpV2hpdGVTcGFjZSgnXG4nKQorICBQc2lJbXBvcnRMaXN0CisgICAgPGVtcHR5IGxpc3Q+CisgIFBzaUNsYXNzOkEKKyAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lLZXl3b3JkOmNsYXNzKCdjbGFzcycpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSWRlbnRpZmllcjpBKCdBJykKKyAgICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpUmVmZXJlbmNlTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9maWxlcy9CaW5kRG9jQ29tbWVudDIudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9maWxlcy9CaW5kRG9jQ29tbWVudDIudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUxZTgxY2UKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL2ZpbGVzL0JpbmREb2NDb21tZW50Mi50eHQKQEAgLTAsMCArMSwzMyBAQAorUHNpSmF2YUZpbGU6QmluZERvY0NvbW1lbnQyLmphdmEKKyAgUHNpRG9jQ29tbWVudAorICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX1NUQVJUKCcvKionKQorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0RBVEEoJ2ZpbGUgY29tbWVudCAnKQorICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICBQc2lXaGl0ZVNwYWNlKCdcbicpCisgIFBzaUltcG9ydExpc3QKKyAgICBQc2lJbXBvcnRTdGF0ZW1lbnQKKyAgICAgIFBzaUtleXdvcmQ6aW1wb3J0KCdpbXBvcnQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lKYXZhQ29kZVJlZmVyZW5jZUVsZW1lbnQ6YQorICAgICAgICBQc2lJZGVudGlmaWVyOmEoJ2EnKQorICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lKYXZhVG9rZW46U0VNSUNPTE9OKCc7JykKKyAgUHNpV2hpdGVTcGFjZSgnXG4nKQorICBQc2lDbGFzczpBCisgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpS2V5d29yZDpjbGFzcygnY2xhc3MnKQorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUlkZW50aWZpZXI6QSgnQScpCisgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9maWxlcy9CaW5kRG9jQ29tbWVudDMudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9maWxlcy9CaW5kRG9jQ29tbWVudDMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg4MDA5NjIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL2ZpbGVzL0JpbmREb2NDb21tZW50My50eHQKQEAgLTAsMCArMSwzNCBAQAorUHNpSmF2YUZpbGU6QmluZERvY0NvbW1lbnQzLmphdmEKKyAgUHNpSW1wb3J0TGlzdAorICAgIDxlbXB0eSBsaXN0PgorICBQc2lDbGFzczpBCisgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpS2V5d29yZDpjbGFzcygnY2xhc3MnKQorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUlkZW50aWZpZXI6QSgnQScpCisgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgUHNpRmllbGQ6ZgorICAgICAgUHNpRG9jQ29tbWVudAorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9TVEFSVCgnLyoqJykKKyAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0RBVEEoJ2ZpZWxkIGNvbW1lbnQgJykKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfRU5EKCcqLycpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OmludAorICAgICAgICBQc2lLZXl3b3JkOmludCgnaW50JykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmKCdmJykKKyAgICAgIFBzaUphdmFUb2tlbjpTRU1JQ09MT04oJzsnKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuJykKKyAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvZmlsZXMvQmluZERvY0NvbW1lbnQ0LnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvZmlsZXMvQmluZERvY0NvbW1lbnQ0LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYmVlZmNjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9maWxlcy9CaW5kRG9jQ29tbWVudDQudHh0CkBAIC0wLDAgKzEsMzYgQEAKK1BzaUphdmFGaWxlOkJpbmREb2NDb21tZW50NC5qYXZhCisgIFBzaUltcG9ydExpc3QKKyAgICA8ZW1wdHkgbGlzdD4KKyAgUHNpQ2xhc3M6QQorICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUtleXdvcmQ6Y2xhc3MoJ2NsYXNzJykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lJZGVudGlmaWVyOkEoJ0EnKQorICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgIFBzaUZpZWxkOmYKKyAgICAgIFBzaURvY0NvbW1lbnQKKyAgICAgICAgUHNpRG9jVG9rZW46RE9DX0NPTU1FTlRfU1RBUlQoJy8qKicpCisgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICBQc2lEb2NUb2tlbjpET0NfQ09NTUVOVF9EQVRBKCdmaWVsZCBjb21tZW50ICcpCisgICAgICAgIFBzaURvY1Rva2VuOkRPQ19DT01NRU5UX0VORCgnKi8nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnXG4nKQorICAgICAgUHNpQ29tbWVudChFTkRfT0ZfTElORV9DT01NRU5UKSgnLy8gZmllbGQgY29tbWVudCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OmludAorICAgICAgICBQc2lLZXl3b3JkOmludCgnaW50JykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSWRlbnRpZmllcjpmKCdmJykKKyAgICAgIFBzaUphdmFUb2tlbjpTRU1JQ09MT04oJzsnKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuJykKKyAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvZmlsZXMvRW1wdHlGaWxlLnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvZmlsZXMvRW1wdHlGaWxlLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMDM0NTI0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9maWxlcy9FbXB0eUZpbGUudHh0CkBAIC0wLDAgKzEsMyBAQAorUHNpSmF2YUZpbGU6RW1wdHlGaWxlLmphdmEKKyAgUHNpSW1wb3J0TGlzdAorICAgIDxlbXB0eSBsaXN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvZmlsZXMvRmlsZVdpdGhDbGFzcy50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL2ZpbGVzL0ZpbGVXaXRoQ2xhc3MudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNmNzFhZWEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL2ZpbGVzL0ZpbGVXaXRoQ2xhc3MudHh0CkBAIC0wLDAgKzEsNTQgQEAKK1BzaUphdmFGaWxlOkZpbGVXaXRoQ2xhc3MuamF2YQorICBQc2lQYWNrYWdlU3RhdGVtZW50OmEKKyAgICBQc2lLZXl3b3JkOnBhY2thZ2UoJ3BhY2thZ2UnKQorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUphdmFDb2RlUmVmZXJlbmNlRWxlbWVudDphCisgICAgICBQc2lJZGVudGlmaWVyOmEoJ2EnKQorICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lKYXZhVG9rZW46U0VNSUNPTE9OKCc7JykKKyAgUHNpV2hpdGVTcGFjZSgnXG4nKQorICBQc2lJbXBvcnRMaXN0CisgICAgUHNpSW1wb3J0U3RhdGVtZW50CisgICAgICBQc2lLZXl3b3JkOmltcG9ydCgnaW1wb3J0JykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSmF2YUNvZGVSZWZlcmVuY2VFbGVtZW50OmIKKyAgICAgICAgUHNpSWRlbnRpZmllcjpiKCdiJykKKyAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpSmF2YVRva2VuOlNFTUlDT0xPTignOycpCisgIFBzaVdoaXRlU3BhY2UoJ1xuJykKKyAgUHNpQ2xhc3M6QworICAgIFBzaU1vZGlmaWVyTGlzdDpwdWJsaWMKKyAgICAgIFBzaUtleXdvcmQ6cHVibGljKCdwdWJsaWMnKQorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUtleXdvcmQ6Y2xhc3MoJ2NsYXNzJykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lJZGVudGlmaWVyOkMoJ0MnKQorICAgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lSZWZlcmVuY2VMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgUHNpV2hpdGVTcGFjZSgnXG4nKQorICBQc2lDbGFzczpECisgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpS2V5d29yZDpjbGFzcygnY2xhc3MnKQorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUlkZW50aWZpZXI6RCgnRCcpCisgICAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZUxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvZmlsZXMvSW1wb3J0MC50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL2ZpbGVzL0ltcG9ydDAudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk0MzM0NzIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL2ZpbGVzL0ltcG9ydDAudHh0CkBAIC0wLDAgKzEsMTcgQEAKK1BzaUphdmFGaWxlOkltcG9ydDAuamF2YQorICBQc2lJbXBvcnRMaXN0CisgICAgUHNpSW1wb3J0U3RhdGVtZW50CisgICAgICBQc2lLZXl3b3JkOmltcG9ydCgnaW1wb3J0JykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSmF2YUNvZGVSZWZlcmVuY2VFbGVtZW50OmphdmEudXRpbAorICAgICAgICBQc2lKYXZhQ29kZVJlZmVyZW5jZUVsZW1lbnQ6amF2YQorICAgICAgICAgIFBzaUlkZW50aWZpZXI6amF2YSgnamF2YScpCisgICAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgIFBzaUphdmFUb2tlbjpET1QoJy4nKQorICAgICAgICBQc2lJZGVudGlmaWVyOnV0aWwoJ3V0aWwnKQorICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lKYXZhVG9rZW46RE9UKCcuJykKKyAgICAgIFBzaUphdmFUb2tlbjpBU1RFUklTSygnKicpCisgICAgICBQc2lKYXZhVG9rZW46U0VNSUNPTE9OKCc7JykKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL2ZpbGVzL0ltcG9ydDEudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9maWxlcy9JbXBvcnQxLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xODMxMTA3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9maWxlcy9JbXBvcnQxLnR4dApAQCAtMCwwICsxLDIwIEBACitQc2lKYXZhRmlsZTpJbXBvcnQxLmphdmEKKyAgUHNpSW1wb3J0TGlzdAorICAgIFBzaUltcG9ydFN0YXRlbWVudAorICAgICAgUHNpS2V5d29yZDppbXBvcnQoJ2ltcG9ydCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUphdmFDb2RlUmVmZXJlbmNlRWxlbWVudDpqYXZhLnV0aWwuQXJyYXlzCisgICAgICAgIFBzaUphdmFDb2RlUmVmZXJlbmNlRWxlbWVudDpqYXZhLnV0aWwKKyAgICAgICAgICBQc2lKYXZhQ29kZVJlZmVyZW5jZUVsZW1lbnQ6amF2YQorICAgICAgICAgICAgUHNpSWRlbnRpZmllcjpqYXZhKCdqYXZhJykKKyAgICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgUHNpSmF2YVRva2VuOkRPVCgnLicpCisgICAgICAgICAgUHNpSWRlbnRpZmllcjp1dGlsKCd1dGlsJykKKyAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgUHNpSmF2YVRva2VuOkRPVCgnLicpCisgICAgICAgIFBzaUlkZW50aWZpZXI6QXJyYXlzKCdBcnJheXMnKQorICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lKYXZhVG9rZW46U0VNSUNPTE9OKCc7JykKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL2ZpbGVzL1BhY2thZ2UudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9maWxlcy9QYWNrYWdlLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hM2ZlZGVmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9maWxlcy9QYWNrYWdlLnR4dApAQCAtMCwwICsxLDIxIEBACitQc2lKYXZhRmlsZTpQYWNrYWdlLmphdmEKKyAgUHNpUGFja2FnZVN0YXRlbWVudDphLmIuYworICAgIFBzaUtleXdvcmQ6cGFja2FnZSgncGFja2FnZScpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSmF2YUNvZGVSZWZlcmVuY2VFbGVtZW50OmEuYi5jCisgICAgICBQc2lKYXZhQ29kZVJlZmVyZW5jZUVsZW1lbnQ6YS5iCisgICAgICAgIFBzaUphdmFDb2RlUmVmZXJlbmNlRWxlbWVudDphCisgICAgICAgICAgUHNpSWRlbnRpZmllcjphKCdhJykKKyAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgUHNpSmF2YVRva2VuOkRPVCgnLicpCisgICAgICAgIFBzaUlkZW50aWZpZXI6YignYicpCisgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUphdmFUb2tlbjpET1QoJy4nKQorICAgICAgUHNpSWRlbnRpZmllcjpjKCdjJykKKyAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpSmF2YVRva2VuOlNFTUlDT0xPTignOycpCisgIFBzaUltcG9ydExpc3QKKyAgICA8ZW1wdHkgbGlzdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL2ZpbGVzL1N0YXRpY0ltcG9ydDAudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9maWxlcy9TdGF0aWNJbXBvcnQwLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMTRmMWE5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9maWxlcy9TdGF0aWNJbXBvcnQwLnR4dApAQCAtMCwwICsxLDI0IEBACitQc2lKYXZhRmlsZTpTdGF0aWNJbXBvcnQwLmphdmEKKyAgUHNpSW1wb3J0TGlzdAorICAgIFBzaUltcG9ydFN0YXRpY1N0YXRlbWVudAorICAgICAgUHNpS2V5d29yZDppbXBvcnQoJ2ltcG9ydCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUtleXdvcmQ6c3RhdGljKCdzdGF0aWMnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lKYXZhQ29kZVJlZmVyZW5jZUVsZW1lbnQ6amF2YS51dGlsLkFycmF5cworICAgICAgICBQc2lKYXZhQ29kZVJlZmVyZW5jZUVsZW1lbnQ6amF2YS51dGlsCisgICAgICAgICAgUHNpSmF2YUNvZGVSZWZlcmVuY2VFbGVtZW50OmphdmEKKyAgICAgICAgICAgIFBzaUlkZW50aWZpZXI6amF2YSgnamF2YScpCisgICAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgIFBzaUphdmFUb2tlbjpET1QoJy4nKQorICAgICAgICAgIFBzaUlkZW50aWZpZXI6dXRpbCgndXRpbCcpCisgICAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgIFBzaUphdmFUb2tlbjpET1QoJy4nKQorICAgICAgICBQc2lJZGVudGlmaWVyOkFycmF5cygnQXJyYXlzJykKKyAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpSmF2YVRva2VuOkRPVCgnLicpCisgICAgICBQc2lKYXZhVG9rZW46QVNURVJJU0soJyonKQorICAgICAgUHNpSmF2YVRva2VuOlNFTUlDT0xPTignOycpClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9maWxlcy9TdGF0aWNJbXBvcnQxLnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvZmlsZXMvU3RhdGljSW1wb3J0MS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGU1YWVlOAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvZmlsZXMvU3RhdGljSW1wb3J0MS50eHQKQEAgLTAsMCArMSwyNyBAQAorUHNpSmF2YUZpbGU6U3RhdGljSW1wb3J0MS5qYXZhCisgIFBzaUltcG9ydExpc3QKKyAgICBQc2lJbXBvcnRTdGF0aWNTdGF0ZW1lbnQKKyAgICAgIFBzaUtleXdvcmQ6aW1wb3J0KCdpbXBvcnQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lLZXl3b3JkOnN0YXRpYygnc3RhdGljJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSW1wb3J0U3RhdGljUmVmZXJlbmNlRWxlbWVudDpqYXZhLnV0aWwuQXJyYXlzLnNvcnQKKyAgICAgICAgUHNpSmF2YUNvZGVSZWZlcmVuY2VFbGVtZW50OmphdmEudXRpbC5BcnJheXMKKyAgICAgICAgICBQc2lKYXZhQ29kZVJlZmVyZW5jZUVsZW1lbnQ6amF2YS51dGlsCisgICAgICAgICAgICBQc2lKYXZhQ29kZVJlZmVyZW5jZUVsZW1lbnQ6amF2YQorICAgICAgICAgICAgICBQc2lJZGVudGlmaWVyOmphdmEoJ2phdmEnKQorICAgICAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgICBQc2lKYXZhVG9rZW46RE9UKCcuJykKKyAgICAgICAgICAgIFBzaUlkZW50aWZpZXI6dXRpbCgndXRpbCcpCisgICAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgIFBzaUphdmFUb2tlbjpET1QoJy4nKQorICAgICAgICAgIFBzaUlkZW50aWZpZXI6QXJyYXlzKCdBcnJheXMnKQorICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICBQc2lKYXZhVG9rZW46RE9UKCcuJykKKyAgICAgICAgUHNpSWRlbnRpZmllcjpzb3J0KCdzb3J0JykKKyAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpSmF2YVRva2VuOlNFTUlDT0xPTignOycpClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9maWxlcy9VbmNsb3NlZEltcG9ydDAudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9maWxlcy9VbmNsb3NlZEltcG9ydDAudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIzMGMxMjAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL2ZpbGVzL1VuY2xvc2VkSW1wb3J0MC50eHQKQEAgLTAsMCArMSw2IEBACitQc2lKYXZhRmlsZTpVbmNsb3NlZEltcG9ydDAuamF2YQorICBQc2lJbXBvcnRMaXN0CisgICAgUHNpSW1wb3J0U3RhdGVtZW50CisgICAgICBQc2lLZXl3b3JkOmltcG9ydCgnaW1wb3J0JykKKyAgICAgIFBzaUVycm9yRWxlbWVudDpJZGVudGlmaWVyIGV4cGVjdGVkCisgICAgICAgIDxlbXB0eSBsaXN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvZmlsZXMvVW5jbG9zZWRJbXBvcnQxLnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvZmlsZXMvVW5jbG9zZWRJbXBvcnQxLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZjJiNjdmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9maWxlcy9VbmNsb3NlZEltcG9ydDEudHh0CkBAIC0wLDAgKzEsMTggQEAKK1BzaUphdmFGaWxlOlVuY2xvc2VkSW1wb3J0MS5qYXZhCisgIFBzaUltcG9ydExpc3QKKyAgICBQc2lJbXBvcnRTdGF0ZW1lbnQKKyAgICAgIFBzaUtleXdvcmQ6aW1wb3J0KCdpbXBvcnQnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lKYXZhQ29kZVJlZmVyZW5jZUVsZW1lbnQ6amF2YS5hd3QKKyAgICAgICAgUHNpSmF2YUNvZGVSZWZlcmVuY2VFbGVtZW50OmphdmEKKyAgICAgICAgICBQc2lJZGVudGlmaWVyOmphdmEoJ2phdmEnKQorICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICBQc2lKYXZhVG9rZW46RE9UKCcuJykKKyAgICAgICAgUHNpSWRlbnRpZmllcjphd3QoJ2F3dCcpCisgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUphdmFUb2tlbjpET1QoJy4nKQorICAgICAgUHNpSmF2YVRva2VuOkFTVEVSSVNLKCcqJykKKyAgICAgIFBzaUVycm9yRWxlbWVudDonOycgZXhwZWN0ZWQKKyAgICAgICAgPGVtcHR5IGxpc3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9maWxlcy9VbmNsb3NlZEltcG9ydDIudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9maWxlcy9VbmNsb3NlZEltcG9ydDIudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFhNDljOTIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL2ZpbGVzL1VuY2xvc2VkSW1wb3J0Mi50eHQKQEAgLTAsMCArMSwxNyBAQAorUHNpSmF2YUZpbGU6VW5jbG9zZWRJbXBvcnQyLmphdmEKKyAgUHNpSW1wb3J0TGlzdAorICAgIFBzaUltcG9ydFN0YXRlbWVudAorICAgICAgUHNpS2V5d29yZDppbXBvcnQoJ2ltcG9ydCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUphdmFDb2RlUmVmZXJlbmNlRWxlbWVudDpqYXZhLmF3dAorICAgICAgICBQc2lKYXZhQ29kZVJlZmVyZW5jZUVsZW1lbnQ6amF2YQorICAgICAgICAgIFBzaUlkZW50aWZpZXI6amF2YSgnamF2YScpCisgICAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgIFBzaUphdmFUb2tlbjpET1QoJy4nKQorICAgICAgICBQc2lJZGVudGlmaWVyOmF3dCgnYXd0JykKKyAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpSmF2YVRva2VuOkRPVCgnLicpCisgICAgICBQc2lFcnJvckVsZW1lbnQ6SWRlbnRpZmllciBvciAnKicgZXhwZWN0ZWQKKyAgICAgICAgPGVtcHR5IGxpc3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9maWxlcy9VbmNsb3NlZEltcG9ydDMudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9maWxlcy9VbmNsb3NlZEltcG9ydDMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI3MTUwMzgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL2ZpbGVzL1VuY2xvc2VkSW1wb3J0My50eHQKQEAgLTAsMCArMSwxMyBAQAorUHNpSmF2YUZpbGU6VW5jbG9zZWRJbXBvcnQzLmphdmEKKyAgUHNpSW1wb3J0TGlzdAorICAgIFBzaUltcG9ydFN0YXRpY1N0YXRlbWVudAorICAgICAgUHNpS2V5d29yZDppbXBvcnQoJ2ltcG9ydCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUtleXdvcmQ6c3RhdGljKCdzdGF0aWMnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJbXBvcnRTdGF0aWNSZWZlcmVuY2VFbGVtZW50OmEKKyAgICAgICAgUHNpSWRlbnRpZmllcjphKCdhJykKKyAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpRXJyb3JFbGVtZW50Oic7JyBleHBlY3RlZAorICAgICAgICA8ZW1wdHkgbGlzdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL2ZpbGVzL1VuY2xvc2VkUGFja2FnZTAudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9maWxlcy9VbmNsb3NlZFBhY2thZ2UwLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYzk4NjZiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9maWxlcy9VbmNsb3NlZFBhY2thZ2UwLnR4dApAQCAtMCwwICsxLDUgQEAKK1BzaUphdmFGaWxlOlVuY2xvc2VkUGFja2FnZTAuamF2YQorICBQc2lJbXBvcnRMaXN0CisgICAgPGVtcHR5IGxpc3Q+CisgIFBzaUVycm9yRWxlbWVudDonY2xhc3MnIG9yICdpbnRlcmZhY2UnIGV4cGVjdGVkCisgICAgUHNpS2V5d29yZDpwYWNrYWdlKCdwYWNrYWdlJykKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL2ZpbGVzL1VuY2xvc2VkUGFja2FnZTEudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9maWxlcy9VbmNsb3NlZFBhY2thZ2UxLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZjM2M2E2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9maWxlcy9VbmNsb3NlZFBhY2thZ2UxLnR4dApAQCAtMCwwICsxLDE4IEBACitQc2lKYXZhRmlsZTpVbmNsb3NlZFBhY2thZ2UxLmphdmEKKyAgUHNpUGFja2FnZVN0YXRlbWVudDphLgorICAgIFBzaUtleXdvcmQ6cGFja2FnZSgncGFja2FnZScpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSmF2YUNvZGVSZWZlcmVuY2VFbGVtZW50OmEuCisgICAgICBQc2lKYXZhQ29kZVJlZmVyZW5jZUVsZW1lbnQ6YQorICAgICAgICBQc2lJZGVudGlmaWVyOmEoJ2EnKQorICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lKYXZhVG9rZW46RE9UKCcuJykKKyAgICAgIFBzaUVycm9yRWxlbWVudDpJZGVudGlmaWVyIGV4cGVjdGVkCisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lFcnJvckVsZW1lbnQ6JzsnIGV4cGVjdGVkCisgICAgICA8ZW1wdHkgbGlzdD4KKyAgUHNpSW1wb3J0TGlzdAorICAgIDxlbXB0eSBsaXN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvcmVmZXJlbmNlcy9SZWZlcmVuY2UwLnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvcmVmZXJlbmNlcy9SZWZlcmVuY2UwLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNzY4YjlmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9yZWZlcmVuY2VzL1JlZmVyZW5jZTAudHh0CkBAIC0wLDAgKzEsNSBAQAorUHNpSmF2YUZpbGU6UmVmZXJlbmNlMC5qYXZhCisgIFBzaUphdmFDb2RlUmVmZXJlbmNlRWxlbWVudDphCisgICAgUHNpSWRlbnRpZmllcjphKCdhJykKKyAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICA8ZW1wdHkgbGlzdD4KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvcmVmZXJlbmNlcy9SZWZlcmVuY2UxLnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvcmVmZXJlbmNlcy9SZWZlcmVuY2UxLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xOWJlNjA1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9yZWZlcmVuY2VzL1JlZmVyZW5jZTEudHh0CkBAIC0wLDAgKzEsMTEgQEAKK1BzaUphdmFGaWxlOlJlZmVyZW5jZTEuamF2YQorICBQc2lKYXZhQ29kZVJlZmVyZW5jZUVsZW1lbnQ6YS4KKyAgICBQc2lKYXZhQ29kZVJlZmVyZW5jZUVsZW1lbnQ6YQorICAgICAgUHNpSWRlbnRpZmllcjphKCdhJykKKyAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpSmF2YVRva2VuOkRPVCgnLicpCisgICAgUHNpRXJyb3JFbGVtZW50OklkZW50aWZpZXIgZXhwZWN0ZWQKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgIDxlbXB0eSBsaXN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvcmVmZXJlbmNlcy9SZWZlcmVuY2UyLnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvcmVmZXJlbmNlcy9SZWZlcmVuY2UyLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMzJjNWJjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9yZWZlcmVuY2VzL1JlZmVyZW5jZTIudHh0CkBAIC0wLDAgKzEsMTAgQEAKK1BzaUphdmFGaWxlOlJlZmVyZW5jZTIuamF2YQorICBQc2lKYXZhQ29kZVJlZmVyZW5jZUVsZW1lbnQ6YS5iCisgICAgUHNpSmF2YUNvZGVSZWZlcmVuY2VFbGVtZW50OmEKKyAgICAgIFBzaUlkZW50aWZpZXI6YSgnYScpCisgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUphdmFUb2tlbjpET1QoJy4nKQorICAgIFBzaUlkZW50aWZpZXI6YignYicpCisgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgPGVtcHR5IGxpc3Q+CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL3JlZmVyZW5jZXMvVHlwZTAudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9yZWZlcmVuY2VzL1R5cGUwLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hOWI5ZThiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9yZWZlcmVuY2VzL1R5cGUwLnR4dApAQCAtMCwwICsxLDMgQEAKK1BzaUphdmFGaWxlOlR5cGUwLmphdmEKKyAgUHNpVHlwZUVsZW1lbnQ6aW50CisgICAgUHNpS2V5d29yZDppbnQoJ2ludCcpCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL3JlZmVyZW5jZXMvVHlwZTEudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9yZWZlcmVuY2VzL1R5cGUxLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yODZlOWYxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9yZWZlcmVuY2VzL1R5cGUxLnR4dApAQCAtMCwwICsxLDExIEBACitQc2lKYXZhRmlsZTpUeXBlMS5qYXZhCisgIFBzaVR5cGVFbGVtZW50OmEuYgorICAgIFBzaUphdmFDb2RlUmVmZXJlbmNlRWxlbWVudDphLmIKKyAgICAgIFBzaUphdmFDb2RlUmVmZXJlbmNlRWxlbWVudDphCisgICAgICAgIFBzaUlkZW50aWZpZXI6YSgnYScpCisgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUphdmFUb2tlbjpET1QoJy4nKQorICAgICAgUHNpSWRlbnRpZmllcjpiKCdiJykKKyAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL3JlZmVyZW5jZXMvVHlwZTIudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9yZWZlcmVuY2VzL1R5cGUyLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MjM0ZGJiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9yZWZlcmVuY2VzL1R5cGUyLnR4dApAQCAtMCwwICsxLDYgQEAKK1BzaUphdmFGaWxlOlR5cGUyLmphdmEKKyAgUHNpVHlwZUVsZW1lbnQ6aW50W10KKyAgICBQc2lUeXBlRWxlbWVudDppbnQKKyAgICAgIFBzaUtleXdvcmQ6aW50KCdpbnQnKQorICAgIFBzaUphdmFUb2tlbjpMQlJBQ0tFVCgnWycpCisgICAgUHNpSmF2YVRva2VuOlJCUkFDS0VUKCddJykKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvcmVmZXJlbmNlcy9UeXBlMy50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL3JlZmVyZW5jZXMvVHlwZTMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJhOTcwNWQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL3JlZmVyZW5jZXMvVHlwZTMudHh0CkBAIC0wLDAgKzEsOCBAQAorUHNpSmF2YUZpbGU6VHlwZTMuamF2YQorICBQc2lUeXBlRWxlbWVudDppbnRbXQorICAgIFBzaVR5cGVFbGVtZW50OmludAorICAgICAgUHNpS2V5d29yZDppbnQoJ2ludCcpCisgICAgUHNpSmF2YVRva2VuOkxCUkFDS0VUKCdbJykKKyAgICBQc2lKYXZhVG9rZW46UkJSQUNLRVQoJ10nKQorICBQc2lFcnJvckVsZW1lbnQ6VW5wYXJzZWQgdG9rZW5zCisgICAgUHNpSmF2YVRva2VuOkxCUkFDS0VUKCdbJykKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL3JlZmVyZW5jZXMvVHlwZTQudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9yZWZlcmVuY2VzL1R5cGU0LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MTU5ZjU3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9yZWZlcmVuY2VzL1R5cGU0LnR4dApAQCAtMCwwICsxLDI0IEBACitQc2lKYXZhRmlsZTpUeXBlNC5qYXZhCisgIFBzaVR5cGVFbGVtZW50Ok1hcDxTdHJpbmcsTGlzdDxTdHJpbmc+PgorICAgIFBzaUphdmFDb2RlUmVmZXJlbmNlRWxlbWVudDpNYXA8U3RyaW5nLExpc3Q8U3RyaW5nPj4KKyAgICAgIFBzaUlkZW50aWZpZXI6TWFwKCdNYXAnKQorICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICBQc2lKYXZhVG9rZW46TFQoJzwnKQorICAgICAgICBQc2lUeXBlRWxlbWVudDpTdHJpbmcKKyAgICAgICAgICBQc2lKYXZhQ29kZVJlZmVyZW5jZUVsZW1lbnQ6U3RyaW5nCisgICAgICAgICAgICBQc2lJZGVudGlmaWVyOlN0cmluZygnU3RyaW5nJykKKyAgICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgIFBzaUphdmFUb2tlbjpDT01NQSgnLCcpCisgICAgICAgIFBzaVR5cGVFbGVtZW50Okxpc3Q8U3RyaW5nPgorICAgICAgICAgIFBzaUphdmFDb2RlUmVmZXJlbmNlRWxlbWVudDpMaXN0PFN0cmluZz4KKyAgICAgICAgICAgIFBzaUlkZW50aWZpZXI6TGlzdCgnTGlzdCcpCisgICAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICAgIFBzaUphdmFUb2tlbjpMVCgnPCcpCisgICAgICAgICAgICAgIFBzaVR5cGVFbGVtZW50OlN0cmluZworICAgICAgICAgICAgICAgIFBzaUphdmFDb2RlUmVmZXJlbmNlRWxlbWVudDpTdHJpbmcKKyAgICAgICAgICAgICAgICAgIFBzaUlkZW50aWZpZXI6U3RyaW5nKCdTdHJpbmcnKQorICAgICAgICAgICAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOkdUKCc+JykKKyAgICAgICAgUHNpSmF2YVRva2VuOkdUKCc+JykKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvcmVmZXJlbmNlcy9UeXBlNS50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL3JlZmVyZW5jZXMvVHlwZTUudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc0YTQzZmMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL3JlZmVyZW5jZXMvVHlwZTUudHh0CkBAIC0wLDAgKzEsMTEgQEAKK1BzaUphdmFGaWxlOlR5cGU1LmphdmEKKyAgUHNpVHlwZUVsZW1lbnQ6T2JqZWN0W10uLi4KKyAgICBQc2lUeXBlRWxlbWVudDpPYmplY3RbXQorICAgICAgUHNpVHlwZUVsZW1lbnQ6T2JqZWN0CisgICAgICAgIFBzaUphdmFDb2RlUmVmZXJlbmNlRWxlbWVudDpPYmplY3QKKyAgICAgICAgICBQc2lJZGVudGlmaWVyOk9iamVjdCgnT2JqZWN0JykKKyAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0tFVCgnWycpCisgICAgICBQc2lKYXZhVG9rZW46UkJSQUNLRVQoJ10nKQorICAgIFBzaUphdmFUb2tlbjpFTExJUFNJUygnLi4uJykKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL3JlZmVyZW5jZXMvVHlwZTYudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9yZWZlcmVuY2VzL1R5cGU2LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zY2VkNjUwYgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvcmVmZXJlbmNlcy9UeXBlNi50eHQKQEAgLTAsMCArMSwyOCBAQAorUHNpSmF2YUZpbGU6VHlwZTYuamF2YQorICBQc2lUeXBlRWxlbWVudDpARW5nbGlzaCBTdHJpbmcgQE5vbkVtcHR5IFtdCisgICAgUHNpVHlwZUVsZW1lbnQ6QEVuZ2xpc2ggU3RyaW5nCisgICAgICBQc2lBbm5vdGF0aW9uCisgICAgICAgIFBzaUphdmFUb2tlbjpBVCgnQCcpCisgICAgICAgIFBzaUphdmFDb2RlUmVmZXJlbmNlRWxlbWVudDpFbmdsaXNoCisgICAgICAgICAgUHNpSWRlbnRpZmllcjpFbmdsaXNoKCdFbmdsaXNoJykKKyAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgUHNpQW5ub3RhdGlvblBhcmFtZXRlckxpc3QKKyAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSmF2YUNvZGVSZWZlcmVuY2VFbGVtZW50OlN0cmluZworICAgICAgICBQc2lJZGVudGlmaWVyOlN0cmluZygnU3RyaW5nJykKKyAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUFubm90YXRpb24KKyAgICAgIFBzaUphdmFUb2tlbjpBVCgnQCcpCisgICAgICBQc2lKYXZhQ29kZVJlZmVyZW5jZUVsZW1lbnQ6Tm9uRW1wdHkKKyAgICAgICAgUHNpSWRlbnRpZmllcjpOb25FbXB0eSgnTm9uRW1wdHknKQorICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lBbm5vdGF0aW9uUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lKYXZhVG9rZW46TEJSQUNLRVQoJ1snKQorICAgIFBzaUphdmFUb2tlbjpSQlJBQ0tFVCgnXScpClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9yZWZlcmVuY2VzL1R5cGU3LnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvcmVmZXJlbmNlcy9UeXBlNy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjMzMzk0MQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvcmVmZXJlbmNlcy9UeXBlNy50eHQKQEAgLTAsMCArMSwxMCBAQAorUHNpSmF2YUZpbGU6VHlwZTcuamF2YQorICBQc2lUeXBlRWxlbWVudDpEaWFtb25kPD4KKyAgICBQc2lKYXZhQ29kZVJlZmVyZW5jZUVsZW1lbnQ6RGlhbW9uZDw+CisgICAgICBQc2lJZGVudGlmaWVyOkRpYW1vbmQoJ0RpYW1vbmQnKQorICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICBQc2lKYXZhVG9rZW46TFQoJzwnKQorICAgICAgICBQc2lUeXBlRWxlbWVudDoKKyAgICAgICAgICBQc2lUeXBlRWxlbWVudDpESUFNT05ECisgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgUHNpSmF2YVRva2VuOkdUKCc+JykKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL3JlZmVyZW5jZXMvVHlwZTgudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9yZWZlcmVuY2VzL1R5cGU4LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYzA3NWFkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9yZWZlcmVuY2VzL1R5cGU4LnR4dApAQCAtMCwwICsxLDEwIEBACitQc2lKYXZhRmlsZTpUeXBlOC5qYXZhCisgIFBzaVR5cGVFbGVtZW50OkF8CisgICAgUHNpVHlwZUVsZW1lbnQ6QQorICAgICAgUHNpSmF2YUNvZGVSZWZlcmVuY2VFbGVtZW50OkEKKyAgICAgICAgUHNpSWRlbnRpZmllcjpBKCdBJykKKyAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUphdmFUb2tlbjpPUignfCcpCisgICAgUHNpRXJyb3JFbGVtZW50OklkZW50aWZpZXIgZXhwZWN0ZWQKKyAgICAgIDxlbXB0eSBsaXN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvcmVmZXJlbmNlcy9UeXBlOS50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL3JlZmVyZW5jZXMvVHlwZTkudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgzOTA2ODMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL3JlZmVyZW5jZXMvVHlwZTkudHh0CkBAIC0wLDAgKzEsMTMgQEAKK1BzaUphdmFGaWxlOlR5cGU5LmphdmEKKyAgUHNpVHlwZUVsZW1lbnQ6QXxCCisgICAgUHNpVHlwZUVsZW1lbnQ6QQorICAgICAgUHNpSmF2YUNvZGVSZWZlcmVuY2VFbGVtZW50OkEKKyAgICAgICAgUHNpSWRlbnRpZmllcjpBKCdBJykKKyAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUphdmFUb2tlbjpPUignfCcpCisgICAgUHNpVHlwZUVsZW1lbnQ6QgorICAgICAgUHNpSmF2YUNvZGVSZWZlcmVuY2VFbGVtZW50OkIKKyAgICAgICAgUHNpSWRlbnRpZmllcjpCKCdCJykKKyAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgIDxlbXB0eSBsaXN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvcmVmZXJlbmNlcy9UeXBlUGFyYW1zMC50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL3JlZmVyZW5jZXMvVHlwZVBhcmFtczAudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUwOGQ4Y2QKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL3JlZmVyZW5jZXMvVHlwZVBhcmFtczAudHh0CkBAIC0wLDAgKzEsOCBAQAorUHNpSmF2YUZpbGU6VHlwZVBhcmFtczAuamF2YQorICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgIFBzaUphdmFUb2tlbjpMVCgnPCcpCisgICAgUHNpVHlwZVBhcmFtZXRlcjpUCisgICAgICBQc2lJZGVudGlmaWVyOlQoJ1QnKQorICAgICAgUHNpRWxlbWVudChFWFRFTkRTX0JPVU5EX0xJU1QpCisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUphdmFUb2tlbjpHVCgnPicpClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9yZWZlcmVuY2VzL1R5cGVQYXJhbXMxLnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvcmVmZXJlbmNlcy9UeXBlUGFyYW1zMS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGRkNDIwOWQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL3JlZmVyZW5jZXMvVHlwZVBhcmFtczEudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1BzaUphdmFGaWxlOlR5cGVQYXJhbXMxLmphdmEKKyAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICBQc2lKYXZhVG9rZW46TFQoJzwnKQorICAgIFBzaVR5cGVQYXJhbWV0ZXI6VAorICAgICAgUHNpSWRlbnRpZmllcjpUKCdUJykKKyAgICAgIFBzaUVsZW1lbnQoRVhURU5EU19CT1VORF9MSVNUKQorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lKYXZhVG9rZW46Q09NTUEoJywnKQorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaVR5cGVQYXJhbWV0ZXI6VQorICAgICAgUHNpSWRlbnRpZmllcjpVKCdVJykKKyAgICAgIFBzaUVsZW1lbnQoRVhURU5EU19CT1VORF9MSVNUKQorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lKYXZhVG9rZW46R1QoJz4nKQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvcmVmZXJlbmNlcy9UeXBlUGFyYW1zMi50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL3JlZmVyZW5jZXMvVHlwZVBhcmFtczIudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE2YWM4YmUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL3JlZmVyZW5jZXMvVHlwZVBhcmFtczIudHh0CkBAIC0wLDAgKzEsOSBAQAorUHNpSmF2YUZpbGU6VHlwZVBhcmFtczIuamF2YQorICBQc2lUeXBlUGFyYW1ldGVyTGlzdAorICAgIFBzaUphdmFUb2tlbjpMVCgnPCcpCisgICAgUHNpVHlwZVBhcmFtZXRlcjpUCisgICAgICBQc2lJZGVudGlmaWVyOlQoJ1QnKQorICAgICAgUHNpRWxlbWVudChFWFRFTkRTX0JPVU5EX0xJU1QpCisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUVycm9yRWxlbWVudDonPicgZXhwZWN0ZWQuCisgICAgICA8ZW1wdHkgbGlzdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL3JlZmVyZW5jZXMvVHlwZVBhcmFtczMudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9yZWZlcmVuY2VzL1R5cGVQYXJhbXMzLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMjRlMzY2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9yZWZlcmVuY2VzL1R5cGVQYXJhbXMzLnR4dApAQCAtMCwwICsxLDExIEBACitQc2lKYXZhRmlsZTpUeXBlUGFyYW1zMy5qYXZhCisgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgUHNpSmF2YVRva2VuOkxUKCc8JykKKyAgICBQc2lUeXBlUGFyYW1ldGVyOlQKKyAgICAgIFBzaUlkZW50aWZpZXI6VCgnVCcpCisgICAgICBQc2lFbGVtZW50KEVYVEVORFNfQk9VTkRfTElTVCkKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpRXJyb3JFbGVtZW50OlVuZXhwZWN0ZWQgaWRlbnRpZmllcgorICAgICAgUHNpSWRlbnRpZmllcjpoYWNrKCdoYWNrJykKKyAgICBQc2lKYXZhVG9rZW46R1QoJz4nKQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvcmVmZXJlbmNlcy9UeXBlUGFyYW1zNC50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL3JlZmVyZW5jZXMvVHlwZVBhcmFtczQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNmNjBkYTQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL3JlZmVyZW5jZXMvVHlwZVBhcmFtczQudHh0CkBAIC0wLDAgKzEsMTIgQEAKK1BzaUphdmFGaWxlOlR5cGVQYXJhbXM0LmphdmEKKyAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICBQc2lKYXZhVG9rZW46TFQoJzwnKQorICAgIFBzaVR5cGVQYXJhbWV0ZXI6VAorICAgICAgUHNpSWRlbnRpZmllcjpUKCdUJykKKyAgICAgIFBzaUVsZW1lbnQoRVhURU5EU19CT1VORF9MSVNUKQorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lFcnJvckVsZW1lbnQ6Jz4nIGV4cGVjdGVkLgorICAgICAgPGVtcHR5IGxpc3Q+CisgIFBzaVdoaXRlU3BhY2UoJyAnKQorICBQc2lFcnJvckVsZW1lbnQ6VW5wYXJzZWQgdG9rZW5zCisgICAgUHNpSWRlbnRpZmllcjpoYWNrKCdoYWNrJykKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL3JlZmVyZW5jZXMvVHlwZVBhcmFtczUudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9yZWZlcmVuY2VzL1R5cGVQYXJhbXM1LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNzMyOWRhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9yZWZlcmVuY2VzL1R5cGVQYXJhbXM1LnR4dApAQCAtMCwwICsxLDI3IEBACitQc2lKYXZhRmlsZTpUeXBlUGFyYW1zNS5qYXZhCisgIFBzaVR5cGVQYXJhbWV0ZXJMaXN0CisgICAgUHNpSmF2YVRva2VuOkxUKCc8JykKKyAgICBQc2lUeXBlUGFyYW1ldGVyOlQKKyAgICAgIFBzaUlkZW50aWZpZXI6VCgnVCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUVsZW1lbnQoRVhURU5EU19CT1VORF9MSVNUKQorICAgICAgICBQc2lLZXl3b3JkOmV4dGVuZHMoJ2V4dGVuZHMnKQorICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgICAgUHNpSmF2YUNvZGVSZWZlcmVuY2VFbGVtZW50OlgKKyAgICAgICAgICBQc2lJZGVudGlmaWVyOlgoJ1gnKQorICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgICAgUHNpSmF2YVRva2VuOkFORCgnJicpCisgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICBQc2lKYXZhQ29kZVJlZmVyZW5jZUVsZW1lbnQ6WTxaPgorICAgICAgICAgIFBzaUlkZW50aWZpZXI6WSgnWScpCisgICAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgUHNpSmF2YVRva2VuOkxUKCc8JykKKyAgICAgICAgICAgIFBzaVR5cGVFbGVtZW50OloKKyAgICAgICAgICAgICAgUHNpSmF2YUNvZGVSZWZlcmVuY2VFbGVtZW50OloKKyAgICAgICAgICAgICAgICBQc2lJZGVudGlmaWVyOlooJ1onKQorICAgICAgICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgICAgUHNpSmF2YVRva2VuOkdUKCc+JykKKyAgICBQc2lKYXZhVG9rZW46R1QoJz4nKQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvcmVmZXJlbmNlcy9UeXBlUGFyYW1zNi50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL3JlZmVyZW5jZXMvVHlwZVBhcmFtczYudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE1YjQ2YjkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL3JlZmVyZW5jZXMvVHlwZVBhcmFtczYudHh0CkBAIC0wLDAgKzEsMTUgQEAKK1BzaUphdmFGaWxlOlR5cGVQYXJhbXM2LmphdmEKKyAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICBQc2lKYXZhVG9rZW46TFQoJzwnKQorICAgIFBzaVR5cGVQYXJhbWV0ZXI6VAorICAgICAgUHNpSWRlbnRpZmllcjpUKCdUJykKKyAgICAgIFBzaUVsZW1lbnQoRVhURU5EU19CT1VORF9MSVNUKQorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lFcnJvckVsZW1lbnQ6Jz4nIGV4cGVjdGVkLgorICAgICAgPGVtcHR5IGxpc3Q+CisgIFBzaVdoaXRlU3BhY2UoJyAnKQorICBQc2lFcnJvckVsZW1lbnQ6VW5wYXJzZWQgdG9rZW5zCisgICAgUHNpSWRlbnRpZmllcjpzdXBlcnMoJ3N1cGVycycpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSWRlbnRpZmllcjpYKCdYJykKKyAgICBQc2lKYXZhVG9rZW46R1QoJz4nKQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvcmVmZXJlbmNlcy9UeXBlUGFyYW1zNy50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL3JlZmVyZW5jZXMvVHlwZVBhcmFtczcudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFhZWE3YjgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL3JlZmVyZW5jZXMvVHlwZVBhcmFtczcudHh0CkBAIC0wLDAgKzEsMjAgQEAKK1BzaUphdmFGaWxlOlR5cGVQYXJhbXM3LmphdmEKKyAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICBQc2lKYXZhVG9rZW46TFQoJzwnKQorICAgIFBzaVR5cGVQYXJhbWV0ZXI6VAorICAgICAgUHNpSWRlbnRpZmllcjpUKCdUJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpRWxlbWVudChFWFRFTkRTX0JPVU5EX0xJU1QpCisgICAgICAgIFBzaUtleXdvcmQ6ZXh0ZW5kcygnZXh0ZW5kcycpCisgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICBQc2lKYXZhQ29kZVJlZmVyZW5jZUVsZW1lbnQ6WAorICAgICAgICAgIFBzaUlkZW50aWZpZXI6WCgnWCcpCisgICAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpSmF2YVRva2VuOkNPTU1BKCcsJykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lUeXBlUGFyYW1ldGVyOlkKKyAgICAgIFBzaUlkZW50aWZpZXI6WSgnWScpCisgICAgICBQc2lFbGVtZW50KEVYVEVORFNfQk9VTkRfTElTVCkKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpSmF2YVRva2VuOkdUKCc+JykKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL3JlZmVyZW5jZXMvVHlwZVBhcmFtczgudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9yZWZlcmVuY2VzL1R5cGVQYXJhbXM4LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45Mzg5ODk4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9yZWZlcmVuY2VzL1R5cGVQYXJhbXM4LnR4dApAQCAtMCwwICsxLDggQEAKK1BzaUphdmFGaWxlOlR5cGVQYXJhbXM4LmphdmEKKyAgUHNpVHlwZVBhcmFtZXRlckxpc3QKKyAgICBQc2lKYXZhVG9rZW46TFQoJzwnKQorICAgIFBzaUVycm9yRWxlbWVudDpVbmV4cGVjdGVkIHdpbGRjYXJkCisgICAgICBQc2lKYXZhVG9rZW46UVVFU1QoJz8nKQorICAgICAgUHNpRWxlbWVudChFWFRFTkRTX0JPVU5EX0xJU1QpCisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUphdmFUb2tlbjpHVCgnPicpCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL3N0YXRlbWVudHMvQW5vbnltb3VzSW5TbWFydENvbXBsZXRpb24udHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9zdGF0ZW1lbnRzL0Fub255bW91c0luU21hcnRDb21wbGV0aW9uLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43M2E4NDYxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9zdGF0ZW1lbnRzL0Fub255bW91c0luU21hcnRDb21wbGV0aW9uLnR4dApAQCAtMCwwICsxLDEwOSBAQAorUHNpSmF2YUZpbGU6QW5vbnltb3VzSW5TbWFydENvbXBsZXRpb24uamF2YQorICBQc2lDb2RlQmxvY2sKKyAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lFeHByZXNzaW9uU3RhdGVtZW50CisgICAgICBQc2lOZXdFeHByZXNzaW9uOm5ldyBGb28oaGFzaAorIykge30KKyAgICAgICAgUHNpS2V5d29yZDpuZXcoJ25ldycpCisgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgIFBzaUFub255bW91c0NsYXNzCisgICAgICAgICAgUHNpSmF2YUNvZGVSZWZlcmVuY2VFbGVtZW50OkZvbworICAgICAgICAgICAgUHNpSWRlbnRpZmllcjpGb28oJ0ZvbycpCisgICAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgIFBzaUV4cHJlc3Npb25MaXN0CisgICAgICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICAgICAgUHNpUmVmZXJlbmNlRXhwcmVzc2lvbjpoYXNoCisgICAgICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICAgICAgUHNpSWRlbnRpZmllcjpoYXNoKCdoYXNoJykKKyAgICAgICAgICAgIFBzaUVycm9yRWxlbWVudDonLCcgb3IgJyknIGV4cGVjdGVkCisgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgICAgUHNpRXhwcmVzc2lvbihlbXB0eSkKKyAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgICBQc2lXaGl0ZVNwYWNlKCdcbicpCisgICAgICAgICAgICBQc2lFbGVtZW50KEJBRF9DSEFSQUNURVIpKCcjJykKKyAgICAgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgICBQc2lKYXZhVG9rZW46U0VNSUNPTE9OKCc7JykKKyAgICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICAgIFBzaUV4cHJlc3Npb25TdGF0ZW1lbnQKKyAgICAgIFBzaU5ld0V4cHJlc3Npb246bmV3IEZvbyhoYXNoCisjLCBiYXIpIHt9CisgICAgICAgIFBzaUtleXdvcmQ6bmV3KCduZXcnKQorICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICBQc2lBbm9ueW1vdXNDbGFzcworICAgICAgICAgIFBzaUphdmFDb2RlUmVmZXJlbmNlRWxlbWVudDpGb28KKyAgICAgICAgICAgIFBzaUlkZW50aWZpZXI6Rm9vKCdGb28nKQorICAgICAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICBQc2lFeHByZXNzaW9uTGlzdAorICAgICAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgICAgIFBzaVJlZmVyZW5jZUV4cHJlc3Npb246aGFzaAorICAgICAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgICAgIFBzaUlkZW50aWZpZXI6aGFzaCgnaGFzaCcpCisgICAgICAgICAgICBQc2lFcnJvckVsZW1lbnQ6JywnIG9yICcpJyBleHBlY3RlZAorICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICAgIFBzaUV4cHJlc3Npb24oZW1wdHkpCisgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgICAgUHNpV2hpdGVTcGFjZSgnXG4nKQorICAgICAgICAgICAgUHNpRWxlbWVudChCQURfQ0hBUkFDVEVSKSgnIycpCisgICAgICAgICAgICBQc2lKYXZhVG9rZW46Q09NTUEoJywnKQorICAgICAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgICAgICBQc2lSZWZlcmVuY2VFeHByZXNzaW9uOmJhcgorICAgICAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgICAgIFBzaUlkZW50aWZpZXI6YmFyKCdiYXInKQorICAgICAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICAgIFBzaUphdmFUb2tlbjpTRU1JQ09MT04oJzsnKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgUHNpRXhwcmVzc2lvblN0YXRlbWVudAorICAgICAgUHNpTmV3RXhwcmVzc2lvbjpuZXcgRm9vKGhhc2gKKyN4KSB7fQorICAgICAgICBQc2lLZXl3b3JkOm5ldygnbmV3JykKKyAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgICAgUHNpQW5vbnltb3VzQ2xhc3MKKyAgICAgICAgICBQc2lKYXZhQ29kZVJlZmVyZW5jZUVsZW1lbnQ6Rm9vCisgICAgICAgICAgICBQc2lJZGVudGlmaWVyOkZvbygnRm9vJykKKyAgICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgUHNpRXhwcmVzc2lvbkxpc3QKKyAgICAgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgICAgICBQc2lSZWZlcmVuY2VFeHByZXNzaW9uOmhhc2gKKyAgICAgICAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgICAgICBQc2lJZGVudGlmaWVyOmhhc2goJ2hhc2gnKQorICAgICAgICAgICAgUHNpRXJyb3JFbGVtZW50OicsJyBvciAnKScgZXhwZWN0ZWQKKyAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgICBQc2lFeHByZXNzaW9uKGVtcHR5KQorICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICAgIFBzaVdoaXRlU3BhY2UoJ1xuJykKKyAgICAgICAgICAgIFBzaUVsZW1lbnQoQkFEX0NIQVJBQ1RFUikoJyMnKQorICAgICAgICAgICAgUHNpRXJyb3JFbGVtZW50OicsJyBvciAnKScgZXhwZWN0ZWQKKyAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgICBQc2lFeHByZXNzaW9uKGVtcHR5KQorICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICAgIFBzaVJlZmVyZW5jZUV4cHJlc3Npb246eAorICAgICAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgICAgIFBzaUlkZW50aWZpZXI6eCgneCcpCisgICAgICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgICAgUHNpSmF2YVRva2VuOlNFTUlDT0xPTignOycpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9zdGF0ZW1lbnRzL0Fzc2VydE5vcm1hbDAudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9zdGF0ZW1lbnRzL0Fzc2VydE5vcm1hbDAudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIzMGE3YWMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL3N0YXRlbWVudHMvQXNzZXJ0Tm9ybWFsMC50eHQKQEAgLTAsMCArMSw5IEBACitQc2lKYXZhRmlsZTpBc3NlcnROb3JtYWwwLmphdmEKKyAgUHNpQXNzZXJ0U3RhdGVtZW50CisgICAgUHNpS2V5d29yZDphc3NlcnQoJ2Fzc2VydCcpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpUmVmZXJlbmNlRXhwcmVzc2lvbjpjb25kCisgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpSWRlbnRpZmllcjpjb25kKCdjb25kJykKKyAgICBQc2lKYXZhVG9rZW46U0VNSUNPTE9OKCc7JykKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL3N0YXRlbWVudHMvQXNzZXJ0Tm9ybWFsMS50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL3N0YXRlbWVudHMvQXNzZXJ0Tm9ybWFsMS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2I4NjM3NgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvc3RhdGVtZW50cy9Bc3NlcnROb3JtYWwxLnR4dApAQCAtMCwwICsxLDE2IEBACitQc2lKYXZhRmlsZTpBc3NlcnROb3JtYWwxLmphdmEKKyAgUHNpQXNzZXJ0U3RhdGVtZW50CisgICAgUHNpS2V5d29yZDphc3NlcnQoJ2Fzc2VydCcpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpUmVmZXJlbmNlRXhwcmVzc2lvbjpjb25kCisgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpSWRlbnRpZmllcjpjb25kKCdjb25kJykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lKYXZhVG9rZW46Q09MT04oJzonKQorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaVJlZmVyZW5jZUV4cHJlc3Npb246bWVzc2FnZQorICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUlkZW50aWZpZXI6bWVzc2FnZSgnbWVzc2FnZScpCisgICAgUHNpSmF2YVRva2VuOlNFTUlDT0xPTignOycpClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9zdGF0ZW1lbnRzL0Fzc2lnbm1lbnRTaW1wbGUwLnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvc3RhdGVtZW50cy9Bc3NpZ25tZW50U2ltcGxlMC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2UzNzA0NgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvc3RhdGVtZW50cy9Bc3NpZ25tZW50U2ltcGxlMC50eHQKQEAgLTAsMCArMSwzMSBAQAorUHNpSmF2YUZpbGU6QXNzaWdubWVudFNpbXBsZTAuamF2YQorICBQc2lEZWNsYXJhdGlvblN0YXRlbWVudAorICAgIFBzaUxvY2FsVmFyaWFibGU6YQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OmludFtdCisgICAgICAgIFBzaVR5cGVFbGVtZW50OmludAorICAgICAgICAgIFBzaUtleXdvcmQ6aW50KCdpbnQnKQorICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNLRVQoJ1snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNLRVQoJ10nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lJZGVudGlmaWVyOmEoJ2EnKQorICAgICAgUHNpSmF2YVRva2VuOlNFTUlDT0xPTignOycpCisgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgIFBzaUV4cHJlc3Npb25TdGF0ZW1lbnQKKyAgICBQc2lBc3NpZ25tZW50RXhwcmVzc2lvbjphWzBdID0gMAorICAgICAgUHNpQXJyYXlBY2Nlc3NFeHByZXNzaW9uOmFbMF0KKyAgICAgICAgUHNpUmVmZXJlbmNlRXhwcmVzc2lvbjphCisgICAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgUHNpSWRlbnRpZmllcjphKCdhJykKKyAgICAgICAgUHNpSmF2YVRva2VuOkxCUkFDS0VUKCdbJykKKyAgICAgICAgUHNpTGl0ZXJhbEV4cHJlc3Npb246MAorICAgICAgICAgIFBzaUphdmFUb2tlbjpJTlRFR0VSX0xJVEVSQUwoJzAnKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNLRVQoJ10nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lKYXZhVG9rZW46RVEoJz0nKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lMaXRlcmFsRXhwcmVzc2lvbjowCisgICAgICAgIFBzaUphdmFUb2tlbjpJTlRFR0VSX0xJVEVSQUwoJzAnKQorICAgIFBzaUphdmFUb2tlbjpTRU1JQ09MT04oJzsnKQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvc3RhdGVtZW50cy9Bc3NpZ25tZW50U2ltcGxlMS50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL3N0YXRlbWVudHMvQXNzaWdubWVudFNpbXBsZTEudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNlZDAwZGIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL3N0YXRlbWVudHMvQXNzaWdubWVudFNpbXBsZTEudHh0CkBAIC0wLDAgKzEsMjQgQEAKK1BzaUphdmFGaWxlOkFzc2lnbm1lbnRTaW1wbGUxLmphdmEKKyAgUHNpRXhwcmVzc2lvblN0YXRlbWVudAorICAgIFBzaUFzc2lnbm1lbnRFeHByZXNzaW9uOmE9MQorICAgICAgUHNpUmVmZXJlbmNlRXhwcmVzc2lvbjphCisgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgUHNpSWRlbnRpZmllcjphKCdhJykKKyAgICAgIFBzaUphdmFUb2tlbjpFUSgnPScpCisgICAgICBQc2lMaXRlcmFsRXhwcmVzc2lvbjoxCisgICAgICAgIFBzaUphdmFUb2tlbjpJTlRFR0VSX0xJVEVSQUwoJzEnKQorICAgIFBzaUphdmFUb2tlbjpTRU1JQ09MT04oJzsnKQorICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgUHNpRGVjbGFyYXRpb25TdGF0ZW1lbnQKKyAgICBQc2lMb2NhbFZhcmlhYmxlOmIKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDppbnQKKyAgICAgICAgUHNpS2V5d29yZDppbnQoJ2ludCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6YignYicpCisgICAgICBQc2lKYXZhVG9rZW46RVEoJz0nKQorICAgICAgUHNpTGl0ZXJhbEV4cHJlc3Npb246MgorICAgICAgICBQc2lKYXZhVG9rZW46SU5URUdFUl9MSVRFUkFMKCcyJykKKyAgICAgIFBzaUphdmFUb2tlbjpTRU1JQ09MT04oJzsnKQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvc3RhdGVtZW50cy9CbG9ja0VtcHR5LnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvc3RhdGVtZW50cy9CbG9ja0VtcHR5LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YzJhMDAzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9zdGF0ZW1lbnRzL0Jsb2NrRW1wdHkudHh0CkBAIC0wLDAgKzEsOCBAQAorUHNpSmF2YUZpbGU6QmxvY2tFbXB0eS5qYXZhCisgIFBzaUNvZGVCbG9jaworICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUVtcHR5U3RhdGVtZW50CisgICAgICBQc2lKYXZhVG9rZW46U0VNSUNPTE9OKCc7JykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvc3RhdGVtZW50cy9CbG9ja0luY29tcGxldGUwLnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvc3RhdGVtZW50cy9CbG9ja0luY29tcGxldGUwLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yY2RkOTA2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9zdGF0ZW1lbnRzL0Jsb2NrSW5jb21wbGV0ZTAudHh0CkBAIC0wLDAgKzEsNyBAQAorUHNpSmF2YUZpbGU6QmxvY2tJbmNvbXBsZXRlMC5qYXZhCisgIFBzaUNvZGVCbG9jaworICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgIFBzaUVycm9yRWxlbWVudDonfScgZXhwZWN0ZWQKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUNvbW1lbnQoQ19TVFlMRV9DT01NRU5UKSgnLyp9JykKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL3N0YXRlbWVudHMvQmxvY2tJbmNvbXBsZXRlMS50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL3N0YXRlbWVudHMvQmxvY2tJbmNvbXBsZXRlMS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGVjMjBjNgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvc3RhdGVtZW50cy9CbG9ja0luY29tcGxldGUxLnR4dApAQCAtMCwwICsxLDExIEBACitQc2lKYXZhRmlsZTpCbG9ja0luY29tcGxldGUxLmphdmEKKyAgUHNpQ29kZUJsb2NrCisgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpQmxvY2tTdGF0ZW1lbnQKKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaUVycm9yRWxlbWVudDonfScgZXhwZWN0ZWQKKyAgICAgIDxlbXB0eSBsaXN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvc3RhdGVtZW50cy9CbG9ja0luY29tcGxldGUyLnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvc3RhdGVtZW50cy9CbG9ja0luY29tcGxldGUyLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yN2EyMTc0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9zdGF0ZW1lbnRzL0Jsb2NrSW5jb21wbGV0ZTIudHh0CkBAIC0wLDAgKzEsMjAgQEAKK1BzaUphdmFGaWxlOkJsb2NrSW5jb21wbGV0ZTIuamF2YQorICBQc2lDb2RlQmxvY2sKKyAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lFcnJvckVsZW1lbnQ6J2Vsc2UnIHdpdGhvdXQgJ2lmJworICAgICAgUHNpS2V5d29yZDplbHNlKCdlbHNlJykKKyAgICBQc2lFbXB0eVN0YXRlbWVudAorICAgICAgUHNpSmF2YVRva2VuOlNFTUlDT0xPTignOycpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpRXJyb3JFbGVtZW50OidjYXRjaCcgd2l0aG91dCAndHJ5JworICAgICAgUHNpS2V5d29yZDpjYXRjaCgnY2F0Y2gnKQorICAgIFBzaUVtcHR5U3RhdGVtZW50CisgICAgICBQc2lKYXZhVG9rZW46U0VNSUNPTE9OKCc7JykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lFcnJvckVsZW1lbnQ6J2ZpbmFsbHknIHdpdGhvdXQgJ3RyeScKKyAgICAgIFBzaUtleXdvcmQ6ZmluYWxseSgnZmluYWxseScpCisgICAgUHNpRW1wdHlTdGF0ZW1lbnQKKyAgICAgIFBzaUphdmFUb2tlbjpTRU1JQ09MT04oJzsnKQorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvc3RhdGVtZW50cy9CbG9ja1NpbXBsZS50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL3N0YXRlbWVudHMvQmxvY2tTaW1wbGUudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYyNThkMjEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL3N0YXRlbWVudHMvQmxvY2tTaW1wbGUudHh0CkBAIC0wLDAgKzEsMTAgQEAKK1BzaUphdmFGaWxlOkJsb2NrU2ltcGxlLmphdmEKKyAgUHNpQ29kZUJsb2NrCisgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpQmxvY2tTdGF0ZW1lbnQKKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL3N0YXRlbWVudHMvQnJlYWtOb3JtYWwwLnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvc3RhdGVtZW50cy9CcmVha05vcm1hbDAudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI5ZDc3NmUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL3N0YXRlbWVudHMvQnJlYWtOb3JtYWwwLnR4dApAQCAtMCwwICsxLDQgQEAKK1BzaUphdmFGaWxlOkJyZWFrTm9ybWFsMC5qYXZhCisgIFBzaUJyZWFrU3RhdGVtZW50CisgICAgUHNpS2V5d29yZDpicmVhaygnYnJlYWsnKQorICAgIFBzaUphdmFUb2tlbjpTRU1JQ09MT04oJzsnKQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvc3RhdGVtZW50cy9CcmVha05vcm1hbDEudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9zdGF0ZW1lbnRzL0JyZWFrTm9ybWFsMS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmQ1OTAxOAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvc3RhdGVtZW50cy9CcmVha05vcm1hbDEudHh0CkBAIC0wLDAgKzEsNiBAQAorUHNpSmF2YUZpbGU6QnJlYWtOb3JtYWwxLmphdmEKKyAgUHNpQnJlYWtTdGF0ZW1lbnQKKyAgICBQc2lLZXl3b3JkOmJyZWFrKCdicmVhaycpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSWRlbnRpZmllcjpMQUJFTCgnTEFCRUwnKQorICAgIFBzaUphdmFUb2tlbjpTRU1JQ09MT04oJzsnKQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvc3RhdGVtZW50cy9Db250aW51ZU5vcm1hbDAudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9zdGF0ZW1lbnRzL0NvbnRpbnVlTm9ybWFsMC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzJmOWM4YQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvc3RhdGVtZW50cy9Db250aW51ZU5vcm1hbDAudHh0CkBAIC0wLDAgKzEsNCBAQAorUHNpSmF2YUZpbGU6Q29udGludWVOb3JtYWwwLmphdmEKKyAgUHNpQ29udGludWVTdGF0ZW1lbnQKKyAgICBQc2lLZXl3b3JkOmNvbnRpbnVlKCdjb250aW51ZScpCisgICAgUHNpSmF2YVRva2VuOlNFTUlDT0xPTignOycpClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9zdGF0ZW1lbnRzL0NvbnRpbnVlTm9ybWFsMS50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL3N0YXRlbWVudHMvQ29udGludWVOb3JtYWwxLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNzEyNGIzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9zdGF0ZW1lbnRzL0NvbnRpbnVlTm9ybWFsMS50eHQKQEAgLTAsMCArMSw2IEBACitQc2lKYXZhRmlsZTpDb250aW51ZU5vcm1hbDEuamF2YQorICBQc2lDb250aW51ZVN0YXRlbWVudAorICAgIFBzaUtleXdvcmQ6Y29udGludWUoJ2NvbnRpbnVlJykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lJZGVudGlmaWVyOkxBQkVMKCdMQUJFTCcpCisgICAgUHNpSmF2YVRva2VuOlNFTUlDT0xPTignOycpClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9zdGF0ZW1lbnRzL0RvSW5jb21wbGV0ZTAudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9zdGF0ZW1lbnRzL0RvSW5jb21wbGV0ZTAudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkyZDIzODkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL3N0YXRlbWVudHMvRG9JbmNvbXBsZXRlMC50eHQKQEAgLTAsMCArMSw1IEBACitQc2lKYXZhRmlsZTpEb0luY29tcGxldGUwLmphdmEKKyAgUHNpRG9XaGlsZVN0YXRlbWVudAorICAgIFBzaUtleXdvcmQ6ZG8oJ2RvJykKKyAgICBQc2lFcnJvckVsZW1lbnQ6U3RhdGVtZW50IGV4cGVjdGVkCisgICAgICA8ZW1wdHkgbGlzdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL3N0YXRlbWVudHMvRG9JbmNvbXBsZXRlMS50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL3N0YXRlbWVudHMvRG9JbmNvbXBsZXRlMS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzdhYzA4MAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvc3RhdGVtZW50cy9Eb0luY29tcGxldGUxLnR4dApAQCAtMCwwICsxLDE2IEBACitQc2lKYXZhRmlsZTpEb0luY29tcGxldGUxLmphdmEKKyAgUHNpRG9XaGlsZVN0YXRlbWVudAorICAgIFBzaUtleXdvcmQ6ZG8oJ2RvJykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lFeHByZXNzaW9uU3RhdGVtZW50CisgICAgICBQc2lNZXRob2RDYWxsRXhwcmVzc2lvbjpmb28oKQorICAgICAgICBQc2lSZWZlcmVuY2VFeHByZXNzaW9uOmZvbworICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgICBQc2lFeHByZXNzaW9uTGlzdAorICAgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaUphdmFUb2tlbjpTRU1JQ09MT04oJzsnKQorICAgIFBzaUVycm9yRWxlbWVudDond2hpbGUnIGV4cGVjdGVkCisgICAgICA8ZW1wdHkgbGlzdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL3N0YXRlbWVudHMvRG9JbmNvbXBsZXRlMi50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL3N0YXRlbWVudHMvRG9JbmNvbXBsZXRlMi50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTIyNjVlYwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvc3RhdGVtZW50cy9Eb0luY29tcGxldGUyLnR4dApAQCAtMCwwICsxLDE4IEBACitQc2lKYXZhRmlsZTpEb0luY29tcGxldGUyLmphdmEKKyAgUHNpRG9XaGlsZVN0YXRlbWVudAorICAgIFBzaUtleXdvcmQ6ZG8oJ2RvJykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lFeHByZXNzaW9uU3RhdGVtZW50CisgICAgICBQc2lNZXRob2RDYWxsRXhwcmVzc2lvbjpmb28oKQorICAgICAgICBQc2lSZWZlcmVuY2VFeHByZXNzaW9uOmZvbworICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgICBQc2lFeHByZXNzaW9uTGlzdAorICAgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaUphdmFUb2tlbjpTRU1JQ09MT04oJzsnKQorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUtleXdvcmQ6d2hpbGUoJ3doaWxlJykKKyAgICBQc2lFcnJvckVsZW1lbnQ6JygnIGV4cGVjdGVkCisgICAgICA8ZW1wdHkgbGlzdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL3N0YXRlbWVudHMvRG9JbmNvbXBsZXRlMy50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL3N0YXRlbWVudHMvRG9JbmNvbXBsZXRlMy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGIzMWIxNgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvc3RhdGVtZW50cy9Eb0luY29tcGxldGUzLnR4dApAQCAtMCwwICsxLDE5IEBACitQc2lKYXZhRmlsZTpEb0luY29tcGxldGUzLmphdmEKKyAgUHNpRG9XaGlsZVN0YXRlbWVudAorICAgIFBzaUtleXdvcmQ6ZG8oJ2RvJykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lFeHByZXNzaW9uU3RhdGVtZW50CisgICAgICBQc2lNZXRob2RDYWxsRXhwcmVzc2lvbjpmb28oKQorICAgICAgICBQc2lSZWZlcmVuY2VFeHByZXNzaW9uOmZvbworICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgICBQc2lFeHByZXNzaW9uTGlzdAorICAgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaUphdmFUb2tlbjpTRU1JQ09MT04oJzsnKQorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUtleXdvcmQ6d2hpbGUoJ3doaWxlJykKKyAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgIFBzaUVycm9yRWxlbWVudDpFeHByZXNzaW9uIGV4cGVjdGVkCisgICAgICA8ZW1wdHkgbGlzdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL3N0YXRlbWVudHMvRG9JbmNvbXBsZXRlNC50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL3N0YXRlbWVudHMvRG9JbmNvbXBsZXRlNC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2U5NGU2MgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvc3RhdGVtZW50cy9Eb0luY29tcGxldGU0LnR4dApAQCAtMCwwICsxLDIxIEBACitQc2lKYXZhRmlsZTpEb0luY29tcGxldGU0LmphdmEKKyAgUHNpRG9XaGlsZVN0YXRlbWVudAorICAgIFBzaUtleXdvcmQ6ZG8oJ2RvJykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lFeHByZXNzaW9uU3RhdGVtZW50CisgICAgICBQc2lNZXRob2RDYWxsRXhwcmVzc2lvbjpmb28oKQorICAgICAgICBQc2lSZWZlcmVuY2VFeHByZXNzaW9uOmZvbworICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgICBQc2lFeHByZXNzaW9uTGlzdAorICAgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaUphdmFUb2tlbjpTRU1JQ09MT04oJzsnKQorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUtleXdvcmQ6d2hpbGUoJ3doaWxlJykKKyAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgIFBzaUVycm9yRWxlbWVudDpFeHByZXNzaW9uIGV4cGVjdGVkCisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgIFBzaUphdmFUb2tlbjpTRU1JQ09MT04oJzsnKQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvc3RhdGVtZW50cy9Eb0luY29tcGxldGU1LnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvc3RhdGVtZW50cy9Eb0luY29tcGxldGU1LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMTJlNmFlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9zdGF0ZW1lbnRzL0RvSW5jb21wbGV0ZTUudHh0CkBAIC0wLDAgKzEsMzAgQEAKK1BzaUphdmFGaWxlOkRvSW5jb21wbGV0ZTUuamF2YQorICBQc2lEb1doaWxlU3RhdGVtZW50CisgICAgUHNpS2V5d29yZDpkbygnZG8nKQorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUV4cHJlc3Npb25TdGF0ZW1lbnQKKyAgICAgIFBzaU1ldGhvZENhbGxFeHByZXNzaW9uOmZvbygpCisgICAgICAgIFBzaVJlZmVyZW5jZUV4cHJlc3Npb246Zm9vCisgICAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICAgIFBzaUV4cHJlc3Npb25MaXN0CisgICAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpSmF2YVRva2VuOlNFTUlDT0xPTignOycpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpS2V5d29yZDp3aGlsZSgnd2hpbGUnKQorICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgUHNpRXJyb3JFbGVtZW50OkV4cHJlc3Npb24gZXhwZWN0ZWQKKyAgICAgIDxlbXB0eSBsaXN0PgorICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICBQc2lFeHByZXNzaW9uU3RhdGVtZW50CisgICAgUHNpTWV0aG9kQ2FsbEV4cHJlc3Npb246ZygpCisgICAgICBQc2lSZWZlcmVuY2VFeHByZXNzaW9uOmcKKyAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICBQc2lJZGVudGlmaWVyOmcoJ2cnKQorICAgICAgUHNpRXhwcmVzc2lvbkxpc3QKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICBQc2lKYXZhVG9rZW46U0VNSUNPTE9OKCc7JykKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL3N0YXRlbWVudHMvRG9JbmNvbXBsZXRlNi50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL3N0YXRlbWVudHMvRG9JbmNvbXBsZXRlNi50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2ViYWVkZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvc3RhdGVtZW50cy9Eb0luY29tcGxldGU2LnR4dApAQCAtMCwwICsxLDI0IEBACitQc2lKYXZhRmlsZTpEb0luY29tcGxldGU2LmphdmEKKyAgUHNpRG9XaGlsZVN0YXRlbWVudAorICAgIFBzaUtleXdvcmQ6ZG8oJ2RvJykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lFeHByZXNzaW9uU3RhdGVtZW50CisgICAgICBQc2lNZXRob2RDYWxsRXhwcmVzc2lvbjpmb28oKQorICAgICAgICBQc2lSZWZlcmVuY2VFeHByZXNzaW9uOmZvbworICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgICBQc2lFeHByZXNzaW9uTGlzdAorICAgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaUphdmFUb2tlbjpTRU1JQ09MT04oJzsnKQorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUtleXdvcmQ6d2hpbGUoJ3doaWxlJykKKyAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgIFBzaVJlZmVyZW5jZUV4cHJlc3Npb246Y29uZAorICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUlkZW50aWZpZXI6Y29uZCgnY29uZCcpCisgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICBQc2lFcnJvckVsZW1lbnQ6JzsnIGV4cGVjdGVkCisgICAgICA8ZW1wdHkgbGlzdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL3N0YXRlbWVudHMvRG9Ob3JtYWwudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9zdGF0ZW1lbnRzL0RvTm9ybWFsLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMjMxYzA3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9zdGF0ZW1lbnRzL0RvTm9ybWFsLnR4dApAQCAtMCwwICsxLDEzIEBACitQc2lKYXZhRmlsZTpEb05vcm1hbC5qYXZhCisgIFBzaURvV2hpbGVTdGF0ZW1lbnQKKyAgICBQc2lLZXl3b3JkOmRvKCdkbycpCisgICAgUHNpQmxvY2tTdGF0ZW1lbnQKKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpS2V5d29yZDp3aGlsZSgnd2hpbGUnKQorICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgUHNpTGl0ZXJhbEV4cHJlc3Npb246dHJ1ZQorICAgICAgUHNpSmF2YVRva2VuOlRSVUVfS0VZV09SRCgndHJ1ZScpCisgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICBQc2lKYXZhVG9rZW46U0VNSUNPTE9OKCc7JykKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL3N0YXRlbWVudHMvRm9yLnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvc3RhdGVtZW50cy9Gb3IudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE0ZDMxNDgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL3N0YXRlbWVudHMvRm9yLnR4dApAQCAtMCwwICsxLDc4IEBACitQc2lKYXZhRmlsZTpGb3IuamF2YQorICBQc2lGb3JTdGF0ZW1lbnQKKyAgICBQc2lLZXl3b3JkOmZvcignZm9yJykKKyAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgIFBzaURlY2xhcmF0aW9uU3RhdGVtZW50CisgICAgICBQc2lMb2NhbFZhcmlhYmxlOml0CisgICAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgUHNpVHlwZUVsZW1lbnQ6SXRlcmF0b3I8U3RyaW5nPgorICAgICAgICAgIFBzaUphdmFDb2RlUmVmZXJlbmNlRWxlbWVudDpJdGVyYXRvcjxTdHJpbmc+CisgICAgICAgICAgICBQc2lJZGVudGlmaWVyOkl0ZXJhdG9yKCdJdGVyYXRvcicpCisgICAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICAgIFBzaUphdmFUb2tlbjpMVCgnPCcpCisgICAgICAgICAgICAgIFBzaVR5cGVFbGVtZW50OlN0cmluZworICAgICAgICAgICAgICAgIFBzaUphdmFDb2RlUmVmZXJlbmNlRWxlbWVudDpTdHJpbmcKKyAgICAgICAgICAgICAgICAgIFBzaUlkZW50aWZpZXI6U3RyaW5nKCdTdHJpbmcnKQorICAgICAgICAgICAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOkdUKCc+JykKKyAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgIFBzaUlkZW50aWZpZXI6aXQoJ2l0JykKKyAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgIFBzaUphdmFUb2tlbjpFUSgnPScpCisgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICBQc2lMaXRlcmFsRXhwcmVzc2lvbjpudWxsCisgICAgICAgICAgUHNpSmF2YVRva2VuOk5VTExfS0VZV09SRCgnbnVsbCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpTRU1JQ09MT04oJzsnKQorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaU1ldGhvZENhbGxFeHByZXNzaW9uOml0Lmhhc05leHQoKQorICAgICAgUHNpUmVmZXJlbmNlRXhwcmVzc2lvbjppdC5oYXNOZXh0CisgICAgICAgIFBzaVJlZmVyZW5jZUV4cHJlc3Npb246aXQKKyAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICBQc2lJZGVudGlmaWVyOml0KCdpdCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpET1QoJy4nKQorICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgIFBzaUlkZW50aWZpZXI6aGFzTmV4dCgnaGFzTmV4dCcpCisgICAgICBQc2lFeHByZXNzaW9uTGlzdAorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgIFBzaUphdmFUb2tlbjpTRU1JQ09MT04oJzsnKQorICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpQmxvY2tTdGF0ZW1lbnQKKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgIFBzaURlY2xhcmF0aW9uU3RhdGVtZW50CisgICAgICAgICAgUHNpTG9jYWxWYXJpYWJsZTpzCisgICAgICAgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgICAgUHNpVHlwZUVsZW1lbnQ6U3RyaW5nCisgICAgICAgICAgICAgIFBzaUphdmFDb2RlUmVmZXJlbmNlRWxlbWVudDpTdHJpbmcKKyAgICAgICAgICAgICAgICBQc2lJZGVudGlmaWVyOlN0cmluZygnU3RyaW5nJykKKyAgICAgICAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICAgICAgUHNpSWRlbnRpZmllcjpzKCdzJykKKyAgICAgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICAgICAgUHNpSmF2YVRva2VuOkVRKCc9JykKKyAgICAgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICAgICAgUHNpTWV0aG9kQ2FsbEV4cHJlc3Npb246aXQubmV4dCgpCisgICAgICAgICAgICAgIFBzaVJlZmVyZW5jZUV4cHJlc3Npb246aXQubmV4dAorICAgICAgICAgICAgICAgIFBzaVJlZmVyZW5jZUV4cHJlc3Npb246aXQKKyAgICAgICAgICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgICAgICAgICBQc2lJZGVudGlmaWVyOml0KCdpdCcpCisgICAgICAgICAgICAgICAgUHNpSmF2YVRva2VuOkRPVCgnLicpCisgICAgICAgICAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgICAgICAgUHNpSWRlbnRpZmllcjpuZXh0KCduZXh0JykKKyAgICAgICAgICAgICAgUHNpRXhwcmVzc2lvbkxpc3QKKyAgICAgICAgICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICAgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICAgICAgICBQc2lKYXZhVG9rZW46U0VNSUNPTE9OKCc7JykKKyAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvc3RhdGVtZW50cy9Gb3JFYWNoLnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvc3RhdGVtZW50cy9Gb3JFYWNoLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZTNkZmU0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9zdGF0ZW1lbnRzL0ZvckVhY2gudHh0CkBAIC0wLDAgKzEsMzQgQEAKK1BzaUphdmFGaWxlOkZvckVhY2guamF2YQorICBQc2lGb3JlYWNoU3RhdGVtZW50CisgICAgUHNpS2V5d29yZDpmb3IoJ2ZvcicpCisgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICBQc2lQYXJhbWV0ZXI6bworICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50Ok9iamVjdAorICAgICAgICBQc2lKYXZhQ29kZVJlZmVyZW5jZUVsZW1lbnQ6T2JqZWN0CisgICAgICAgICAgUHNpSWRlbnRpZmllcjpPYmplY3QoJ09iamVjdCcpCisgICAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6bygnbycpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSmF2YVRva2VuOkNPTE9OKCc6JykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lNZXRob2RDYWxsRXhwcmVzc2lvbjptYXAuZW50cnlTZXQoKQorICAgICAgUHNpUmVmZXJlbmNlRXhwcmVzc2lvbjptYXAuZW50cnlTZXQKKyAgICAgICAgUHNpUmVmZXJlbmNlRXhwcmVzc2lvbjptYXAKKyAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICBQc2lJZGVudGlmaWVyOm1hcCgnbWFwJykKKyAgICAgICAgUHNpSmF2YVRva2VuOkRPVCgnLicpCisgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgUHNpSWRlbnRpZmllcjplbnRyeVNldCgnZW50cnlTZXQnKQorICAgICAgUHNpRXhwcmVzc2lvbkxpc3QKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUVtcHR5U3RhdGVtZW50CisgICAgICBQc2lKYXZhVG9rZW46U0VNSUNPTE9OKCc7JykKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL3N0YXRlbWVudHMvRm9yRWFjaEluY29tcGxldGUwLnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvc3RhdGVtZW50cy9Gb3JFYWNoSW5jb21wbGV0ZTAudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ5MWVjYWYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL3N0YXRlbWVudHMvRm9yRWFjaEluY29tcGxldGUwLnR4dApAQCAtMCwwICsxLDIyIEBACitQc2lKYXZhRmlsZTpGb3JFYWNoSW5jb21wbGV0ZTAuamF2YQorICBQc2lGb3JTdGF0ZW1lbnQKKyAgICBQc2lLZXl3b3JkOmZvcignZm9yJykKKyAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgIFBzaUxhYmVsZWRTdGF0ZW1lbnQKKyAgICAgIFBzaUlkZW50aWZpZXI6T2JqZWN0KCdPYmplY3QnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICAnKQorICAgICAgUHNpSmF2YVRva2VuOkNPTE9OKCc6JykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpRXhwcmVzc2lvblN0YXRlbWVudAorICAgICAgICBQc2lSZWZlcmVuY2VFeHByZXNzaW9uOmxpc3QKKyAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICBQc2lJZGVudGlmaWVyOmxpc3QoJ2xpc3QnKQorICAgICAgICBQc2lFcnJvckVsZW1lbnQ6JzsnIGV4cGVjdGVkCisgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpRXJyb3JFbGVtZW50Oic7JyBleHBlY3RlZAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lFbXB0eVN0YXRlbWVudAorICAgICAgUHNpSmF2YVRva2VuOlNFTUlDT0xPTignOycpClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9zdGF0ZW1lbnRzL0ZvckluY29tcGxldGUwLnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvc3RhdGVtZW50cy9Gb3JJbmNvbXBsZXRlMC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODcwZDA2MQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvc3RhdGVtZW50cy9Gb3JJbmNvbXBsZXRlMC50eHQKQEAgLTAsMCArMSw1IEBACitQc2lKYXZhRmlsZTpGb3JJbmNvbXBsZXRlMC5qYXZhCisgIFBzaUZvclN0YXRlbWVudAorICAgIFBzaUtleXdvcmQ6Zm9yKCdmb3InKQorICAgIFBzaUVycm9yRWxlbWVudDonKCcgZXhwZWN0ZWQKKyAgICAgIDxlbXB0eSBsaXN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvc3RhdGVtZW50cy9Gb3JJbmNvbXBsZXRlMS50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL3N0YXRlbWVudHMvRm9ySW5jb21wbGV0ZTEudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhmZDU0NWUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL3N0YXRlbWVudHMvRm9ySW5jb21wbGV0ZTEudHh0CkBAIC0wLDAgKzEsNiBAQAorUHNpSmF2YUZpbGU6Rm9ySW5jb21wbGV0ZTEuamF2YQorICBQc2lGb3JTdGF0ZW1lbnQKKyAgICBQc2lLZXl3b3JkOmZvcignZm9yJykKKyAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgIFBzaUVycm9yRWxlbWVudDpTdGF0ZW1lbnQgZXhwZWN0ZWQKKyAgICAgIDxlbXB0eSBsaXN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvc3RhdGVtZW50cy9Gb3JJbmNvbXBsZXRlMi50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL3N0YXRlbWVudHMvRm9ySW5jb21wbGV0ZTIudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRiMmQxOGYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL3N0YXRlbWVudHMvRm9ySW5jb21wbGV0ZTIudHh0CkBAIC0wLDAgKzEsMjAgQEAKK1BzaUphdmFGaWxlOkZvckluY29tcGxldGUyLmphdmEKKyAgUHNpRm9yU3RhdGVtZW50CisgICAgUHNpS2V5d29yZDpmb3IoJ2ZvcicpCisgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICBQc2lEZWNsYXJhdGlvblN0YXRlbWVudAorICAgICAgUHNpTG9jYWxWYXJpYWJsZTppCisgICAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgUHNpVHlwZUVsZW1lbnQ6aW50CisgICAgICAgICAgUHNpS2V5d29yZDppbnQoJ2ludCcpCisgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICBQc2lJZGVudGlmaWVyOmkoJ2knKQorICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgICAgUHNpSmF2YVRva2VuOkVRKCc9JykKKyAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgIFBzaUxpdGVyYWxFeHByZXNzaW9uOjAKKyAgICAgICAgICBQc2lKYXZhVG9rZW46SU5URUdFUl9MSVRFUkFMKCcwJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlNFTUlDT0xPTignOycpCisgICAgUHNpRXJyb3JFbGVtZW50Oic7JyBleHBlY3RlZAorICAgICAgPGVtcHR5IGxpc3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9zdGF0ZW1lbnRzL0ZvckluY29tcGxldGUzLnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvc3RhdGVtZW50cy9Gb3JJbmNvbXBsZXRlMy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGE3NGEyNQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvc3RhdGVtZW50cy9Gb3JJbmNvbXBsZXRlMy50eHQKQEAgLTAsMCArMSwzMSBAQAorUHNpSmF2YUZpbGU6Rm9ySW5jb21wbGV0ZTMuamF2YQorICBQc2lGb3JTdGF0ZW1lbnQKKyAgICBQc2lLZXl3b3JkOmZvcignZm9yJykKKyAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgIFBzaURlY2xhcmF0aW9uU3RhdGVtZW50CisgICAgICBQc2lMb2NhbFZhcmlhYmxlOmkKKyAgICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICBQc2lUeXBlRWxlbWVudDppbnQKKyAgICAgICAgICBQc2lLZXl3b3JkOmludCgnaW50JykKKyAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgIFBzaUlkZW50aWZpZXI6aSgnaScpCisgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICBQc2lKYXZhVG9rZW46RVEoJz0nKQorICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgICAgUHNpTGl0ZXJhbEV4cHJlc3Npb246MAorICAgICAgICAgIFBzaUphdmFUb2tlbjpJTlRFR0VSX0xJVEVSQUwoJzAnKQorICAgICAgICBQc2lKYXZhVG9rZW46U0VNSUNPTE9OKCc7JykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lCaW5hcnlFeHByZXNzaW9uOmkgPCAxMAorICAgICAgUHNpUmVmZXJlbmNlRXhwcmVzc2lvbjppCisgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgUHNpSWRlbnRpZmllcjppKCdpJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSmF2YVRva2VuOkxUKCc8JykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpTGl0ZXJhbEV4cHJlc3Npb246MTAKKyAgICAgICAgUHNpSmF2YVRva2VuOklOVEVHRVJfTElURVJBTCgnMTAnKQorICAgIFBzaUVycm9yRWxlbWVudDonOycgZXhwZWN0ZWQKKyAgICAgIDxlbXB0eSBsaXN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvc3RhdGVtZW50cy9Gb3JJbmNvbXBsZXRlNC50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL3N0YXRlbWVudHMvRm9ySW5jb21wbGV0ZTQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUyNjgwY2MKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL3N0YXRlbWVudHMvRm9ySW5jb21wbGV0ZTQudHh0CkBAIC0wLDAgKzEsMzIgQEAKK1BzaUphdmFGaWxlOkZvckluY29tcGxldGU0LmphdmEKKyAgUHNpRm9yU3RhdGVtZW50CisgICAgUHNpS2V5d29yZDpmb3IoJ2ZvcicpCisgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICBQc2lEZWNsYXJhdGlvblN0YXRlbWVudAorICAgICAgUHNpTG9jYWxWYXJpYWJsZTppCisgICAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgUHNpVHlwZUVsZW1lbnQ6aW50CisgICAgICAgICAgUHNpS2V5d29yZDppbnQoJ2ludCcpCisgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICBQc2lJZGVudGlmaWVyOmkoJ2knKQorICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgICAgUHNpSmF2YVRva2VuOkVRKCc9JykKKyAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgIFBzaUxpdGVyYWxFeHByZXNzaW9uOjAKKyAgICAgICAgICBQc2lKYXZhVG9rZW46SU5URUdFUl9MSVRFUkFMKCcwJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlNFTUlDT0xPTignOycpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpQmluYXJ5RXhwcmVzc2lvbjppIDwgMTAKKyAgICAgIFBzaVJlZmVyZW5jZUV4cHJlc3Npb246aQorICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgIFBzaUlkZW50aWZpZXI6aSgnaScpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUphdmFUb2tlbjpMVCgnPCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUxpdGVyYWxFeHByZXNzaW9uOjEwCisgICAgICAgIFBzaUphdmFUb2tlbjpJTlRFR0VSX0xJVEVSQUwoJzEwJykKKyAgICBQc2lKYXZhVG9rZW46U0VNSUNPTE9OKCc7JykKKyAgICBQc2lFcnJvckVsZW1lbnQ6JyknIGV4cGVjdGVkCisgICAgICA8ZW1wdHkgbGlzdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL3N0YXRlbWVudHMvRm9ySW5jb21wbGV0ZTUudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9zdGF0ZW1lbnRzL0ZvckluY29tcGxldGU1LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMGU4NGE2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9zdGF0ZW1lbnRzL0ZvckluY29tcGxldGU1LnR4dApAQCAtMCwwICsxLDQwIEBACitQc2lKYXZhRmlsZTpGb3JJbmNvbXBsZXRlNS5qYXZhCisgIFBzaUZvclN0YXRlbWVudAorICAgIFBzaUtleXdvcmQ6Zm9yKCdmb3InKQorICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgUHNpRGVjbGFyYXRpb25TdGF0ZW1lbnQKKyAgICAgIFBzaUxvY2FsVmFyaWFibGU6aQorICAgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgIFBzaVR5cGVFbGVtZW50OmludAorICAgICAgICAgIFBzaUtleXdvcmQ6aW50KCdpbnQnKQorICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgICAgUHNpSWRlbnRpZmllcjppKCdpJykKKyAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgIFBzaUphdmFUb2tlbjpFUSgnPScpCisgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICBQc2lMaXRlcmFsRXhwcmVzc2lvbjowCisgICAgICAgICAgUHNpSmF2YVRva2VuOklOVEVHRVJfTElURVJBTCgnMCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpTRU1JQ09MT04oJzsnKQorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUJpbmFyeUV4cHJlc3Npb246aSA8IDEwCisgICAgICBQc2lSZWZlcmVuY2VFeHByZXNzaW9uOmkKKyAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICBQc2lJZGVudGlmaWVyOmkoJ2knKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lKYXZhVG9rZW46TFQoJzwnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lMaXRlcmFsRXhwcmVzc2lvbjoxMAorICAgICAgICBQc2lKYXZhVG9rZW46SU5URUdFUl9MSVRFUkFMKCcxMCcpCisgICAgUHNpSmF2YVRva2VuOlNFTUlDT0xPTignOycpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpRXhwcmVzc2lvblN0YXRlbWVudAorICAgICAgUHNpUG9zdGZpeEV4cHJlc3Npb246aSsrCisgICAgICAgIFBzaVJlZmVyZW5jZUV4cHJlc3Npb246aQorICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgIFBzaUlkZW50aWZpZXI6aSgnaScpCisgICAgICAgIFBzaUphdmFUb2tlbjpQTFVTUExVUygnKysnKQorICAgIFBzaUVycm9yRWxlbWVudDonKScgZXhwZWN0ZWQKKyAgICAgIDxlbXB0eSBsaXN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvc3RhdGVtZW50cy9Gb3JJbmNvbXBsZXRlNi50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL3N0YXRlbWVudHMvRm9ySW5jb21wbGV0ZTYudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIxMDAxMmUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL3N0YXRlbWVudHMvRm9ySW5jb21wbGV0ZTYudHh0CkBAIC0wLDAgKzEsNDEgQEAKK1BzaUphdmFGaWxlOkZvckluY29tcGxldGU2LmphdmEKKyAgUHNpRm9yU3RhdGVtZW50CisgICAgUHNpS2V5d29yZDpmb3IoJ2ZvcicpCisgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICBQc2lEZWNsYXJhdGlvblN0YXRlbWVudAorICAgICAgUHNpTG9jYWxWYXJpYWJsZTppCisgICAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgUHNpVHlwZUVsZW1lbnQ6aW50CisgICAgICAgICAgUHNpS2V5d29yZDppbnQoJ2ludCcpCisgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICBQc2lJZGVudGlmaWVyOmkoJ2knKQorICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgICAgUHNpSmF2YVRva2VuOkVRKCc9JykKKyAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgIFBzaUxpdGVyYWxFeHByZXNzaW9uOjAKKyAgICAgICAgICBQc2lKYXZhVG9rZW46SU5URUdFUl9MSVRFUkFMKCcwJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlNFTUlDT0xPTignOycpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpQmluYXJ5RXhwcmVzc2lvbjppIDwgMTAKKyAgICAgIFBzaVJlZmVyZW5jZUV4cHJlc3Npb246aQorICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgIFBzaUlkZW50aWZpZXI6aSgnaScpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUphdmFUb2tlbjpMVCgnPCcpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUxpdGVyYWxFeHByZXNzaW9uOjEwCisgICAgICAgIFBzaUphdmFUb2tlbjpJTlRFR0VSX0xJVEVSQUwoJzEwJykKKyAgICBQc2lKYXZhVG9rZW46U0VNSUNPTE9OKCc7JykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lFeHByZXNzaW9uU3RhdGVtZW50CisgICAgICBQc2lQb3N0Zml4RXhwcmVzc2lvbjppKysKKyAgICAgICAgUHNpUmVmZXJlbmNlRXhwcmVzc2lvbjppCisgICAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgUHNpSWRlbnRpZmllcjppKCdpJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlBMVVNQTFVTKCcrKycpCisgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICBQc2lFcnJvckVsZW1lbnQ6U3RhdGVtZW50IGV4cGVjdGVkCisgICAgICA8ZW1wdHkgbGlzdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL3N0YXRlbWVudHMvRm9ySW5jb21wbGV0ZTcudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9zdGF0ZW1lbnRzL0ZvckluY29tcGxldGU3LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZjU3YjhjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9zdGF0ZW1lbnRzL0ZvckluY29tcGxldGU3LnR4dApAQCAtMCwwICsxLDE4IEBACitQc2lKYXZhRmlsZTpGb3JJbmNvbXBsZXRlNy5qYXZhCisgIFBzaUZvclN0YXRlbWVudAorICAgIFBzaUtleXdvcmQ6Zm9yKCdmb3InKQorICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgUHNpRXJyb3JFbGVtZW50OlN0YXRlbWVudCBleHBlY3RlZAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lFeHByZXNzaW9uU3RhdGVtZW50CisgICAgICBQc2lNZXRob2RDYWxsRXhwcmVzc2lvbjpmb28oKQorICAgICAgICBQc2lSZWZlcmVuY2VFeHByZXNzaW9uOmZvbworICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgICBQc2lFeHByZXNzaW9uTGlzdAorICAgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaUphdmFUb2tlbjpTRU1JQ09MT04oJzsnKQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvc3RhdGVtZW50cy9Gb3JJbmNvbXBsZXRlOC50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL3N0YXRlbWVudHMvRm9ySW5jb21wbGV0ZTgudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY4NGQ4MTYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL3N0YXRlbWVudHMvRm9ySW5jb21wbGV0ZTgudHh0CkBAIC0wLDAgKzEsMzIgQEAKK1BzaUphdmFGaWxlOkZvckluY29tcGxldGU4LmphdmEKKyAgUHNpRm9yU3RhdGVtZW50CisgICAgUHNpS2V5d29yZDpmb3IoJ2ZvcicpCisgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICBQc2lEZWNsYXJhdGlvblN0YXRlbWVudAorICAgICAgUHNpTG9jYWxWYXJpYWJsZTppCisgICAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgUHNpVHlwZUVsZW1lbnQ6aW50CisgICAgICAgICAgUHNpS2V5d29yZDppbnQoJ2ludCcpCisgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICBQc2lJZGVudGlmaWVyOmkoJ2knKQorICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgICAgUHNpSmF2YVRva2VuOkVRKCc9JykKKyAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgIFBzaUxpdGVyYWxFeHByZXNzaW9uOjAKKyAgICAgICAgICBQc2lKYXZhVG9rZW46SU5URUdFUl9MSVRFUkFMKCcwJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlNFTUlDT0xPTignOycpCisgICAgUHNpRXJyb3JFbGVtZW50Oic7JyBleHBlY3RlZAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lFeHByZXNzaW9uU3RhdGVtZW50CisgICAgICBQc2lNZXRob2RDYWxsRXhwcmVzc2lvbjpmb28oKQorICAgICAgICBQc2lSZWZlcmVuY2VFeHByZXNzaW9uOmZvbworICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgICBQc2lFeHByZXNzaW9uTGlzdAorICAgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaUphdmFUb2tlbjpTRU1JQ09MT04oJzsnKQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvc3RhdGVtZW50cy9Gb3JJbmNvbXBsZXRlOS50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL3N0YXRlbWVudHMvRm9ySW5jb21wbGV0ZTkudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk5NDc4NGMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL3N0YXRlbWVudHMvRm9ySW5jb21wbGV0ZTkudHh0CkBAIC0wLDAgKzEsNDMgQEAKK1BzaUphdmFGaWxlOkZvckluY29tcGxldGU5LmphdmEKKyAgUHNpRm9yU3RhdGVtZW50CisgICAgUHNpS2V5d29yZDpmb3IoJ2ZvcicpCisgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICBQc2lEZWNsYXJhdGlvblN0YXRlbWVudAorICAgICAgUHNpTG9jYWxWYXJpYWJsZTppCisgICAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgUHNpVHlwZUVsZW1lbnQ6aW50CisgICAgICAgICAgUHNpS2V5d29yZDppbnQoJ2ludCcpCisgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICBQc2lJZGVudGlmaWVyOmkoJ2knKQorICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgICAgUHNpSmF2YVRva2VuOkVRKCc9JykKKyAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgIFBzaUxpdGVyYWxFeHByZXNzaW9uOjAKKyAgICAgICAgICBQc2lKYXZhVG9rZW46SU5URUdFUl9MSVRFUkFMKCcwJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlNFTUlDT0xPTignOycpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpQmluYXJ5RXhwcmVzc2lvbjppIDwgMAorICAgICAgUHNpUmVmZXJlbmNlRXhwcmVzc2lvbjppCisgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgUHNpSWRlbnRpZmllcjppKCdpJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpSmF2YVRva2VuOkxUKCc8JykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpTGl0ZXJhbEV4cHJlc3Npb246MAorICAgICAgICBQc2lKYXZhVG9rZW46SU5URUdFUl9MSVRFUkFMKCcwJykKKyAgICBQc2lFcnJvckVsZW1lbnQ6JzsnIGV4cGVjdGVkCisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUV4cHJlc3Npb25TdGF0ZW1lbnQKKyAgICAgIFBzaU1ldGhvZENhbGxFeHByZXNzaW9uOmZvbygpCisgICAgICAgIFBzaVJlZmVyZW5jZUV4cHJlc3Npb246Zm9vCisgICAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICAgIFBzaUV4cHJlc3Npb25MaXN0CisgICAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpSmF2YVRva2VuOlNFTUlDT0xPTignOycpClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9zdGF0ZW1lbnRzL0Zvck5vcm1hbDAudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9zdGF0ZW1lbnRzL0Zvck5vcm1hbDAudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM4NWJmMTMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL3N0YXRlbWVudHMvRm9yTm9ybWFsMC50eHQKQEAgLTAsMCArMSw0MiBAQAorUHNpSmF2YUZpbGU6Rm9yTm9ybWFsMC5qYXZhCisgIFBzaUZvclN0YXRlbWVudAorICAgIFBzaUtleXdvcmQ6Zm9yKCdmb3InKQorICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgUHNpRGVjbGFyYXRpb25TdGF0ZW1lbnQKKyAgICAgIFBzaUxvY2FsVmFyaWFibGU6aQorICAgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgIFBzaVR5cGVFbGVtZW50OmludAorICAgICAgICAgIFBzaUtleXdvcmQ6aW50KCdpbnQnKQorICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgICAgUHNpSWRlbnRpZmllcjppKCdpJykKKyAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgIFBzaUphdmFUb2tlbjpFUSgnPScpCisgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICBQc2lMaXRlcmFsRXhwcmVzc2lvbjowCisgICAgICAgICAgUHNpSmF2YVRva2VuOklOVEVHRVJfTElURVJBTCgnMCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpTRU1JQ09MT04oJzsnKQorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUJpbmFyeUV4cHJlc3Npb246aSA8IDEwCisgICAgICBQc2lSZWZlcmVuY2VFeHByZXNzaW9uOmkKKyAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICBQc2lJZGVudGlmaWVyOmkoJ2knKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lKYXZhVG9rZW46TFQoJzwnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lMaXRlcmFsRXhwcmVzc2lvbjoxMAorICAgICAgICBQc2lKYXZhVG9rZW46SU5URUdFUl9MSVRFUkFMKCcxMCcpCisgICAgUHNpSmF2YVRva2VuOlNFTUlDT0xPTignOycpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpRXhwcmVzc2lvblN0YXRlbWVudAorICAgICAgUHNpUG9zdGZpeEV4cHJlc3Npb246aSsrCisgICAgICAgIFBzaVJlZmVyZW5jZUV4cHJlc3Npb246aQorICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgIFBzaUlkZW50aWZpZXI6aSgnaScpCisgICAgICAgIFBzaUphdmFUb2tlbjpQTFVTUExVUygnKysnKQorICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICBQc2lFbXB0eVN0YXRlbWVudAorICAgICAgUHNpSmF2YVRva2VuOlNFTUlDT0xPTignOycpClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9zdGF0ZW1lbnRzL0Zvck5vcm1hbDEudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9zdGF0ZW1lbnRzL0Zvck5vcm1hbDEudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI2YzIzM2IKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL3N0YXRlbWVudHMvRm9yTm9ybWFsMS50eHQKQEAgLTAsMCArMSwyMiBAQAorUHNpSmF2YUZpbGU6Rm9yTm9ybWFsMS5qYXZhCisgIFBzaUZvclN0YXRlbWVudAorICAgIFBzaUtleXdvcmQ6Zm9yKCdmb3InKQorICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpRW1wdHlTdGF0ZW1lbnQKKyAgICAgIFBzaUphdmFUb2tlbjpTRU1JQ09MT04oJzsnKQorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUphdmFUb2tlbjpTRU1JQ09MT04oJzsnKQorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpRXhwcmVzc2lvblN0YXRlbWVudAorICAgICAgUHNpTWV0aG9kQ2FsbEV4cHJlc3Npb246Zm9vKCkKKyAgICAgICAgUHNpUmVmZXJlbmNlRXhwcmVzc2lvbjpmb28KKyAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgICAgUHNpRXhwcmVzc2lvbkxpc3QKKyAgICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lKYXZhVG9rZW46U0VNSUNPTE9OKCc7JykKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL3N0YXRlbWVudHMvSWZJbmNvbXBsZXRlMC50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL3N0YXRlbWVudHMvSWZJbmNvbXBsZXRlMC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDhiYmYzOAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvc3RhdGVtZW50cy9JZkluY29tcGxldGUwLnR4dApAQCAtMCwwICsxLDUgQEAKK1BzaUphdmFGaWxlOklmSW5jb21wbGV0ZTAuamF2YQorICBQc2lJZlN0YXRlbWVudAorICAgIFBzaUtleXdvcmQ6aWYoJ2lmJykKKyAgICBQc2lFcnJvckVsZW1lbnQ6JygnIGV4cGVjdGVkCisgICAgICA8ZW1wdHkgbGlzdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL3N0YXRlbWVudHMvSWZJbmNvbXBsZXRlMS50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL3N0YXRlbWVudHMvSWZJbmNvbXBsZXRlMS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzAyNjdkYgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvc3RhdGVtZW50cy9JZkluY29tcGxldGUxLnR4dApAQCAtMCwwICsxLDcgQEAKK1BzaUphdmFGaWxlOklmSW5jb21wbGV0ZTEuamF2YQorICBQc2lJZlN0YXRlbWVudAorICAgIFBzaUtleXdvcmQ6aWYoJ2lmJykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgIFBzaUVycm9yRWxlbWVudDpFeHByZXNzaW9uIGV4cGVjdGVkCisgICAgICA8ZW1wdHkgbGlzdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL3N0YXRlbWVudHMvSWZJbmNvbXBsZXRlMi50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL3N0YXRlbWVudHMvSWZJbmNvbXBsZXRlMi50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWE2MmVmYwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvc3RhdGVtZW50cy9JZkluY29tcGxldGUyLnR4dApAQCAtMCwwICsxLDE4IEBACitQc2lKYXZhRmlsZTpJZkluY29tcGxldGUyLmphdmEKKyAgUHNpSWZTdGF0ZW1lbnQKKyAgICBQc2lLZXl3b3JkOmlmKCdpZicpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICBQc2lFcnJvckVsZW1lbnQ6RXhwcmVzc2lvbiBleHBlY3RlZAorICAgICAgPGVtcHR5IGxpc3Q+CisgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgIFBzaUV4cHJlc3Npb25TdGF0ZW1lbnQKKyAgICBQc2lNZXRob2RDYWxsRXhwcmVzc2lvbjpmb28oKQorICAgICAgUHNpUmVmZXJlbmNlRXhwcmVzc2lvbjpmb28KKyAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaUV4cHJlc3Npb25MaXN0CisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgUHNpSmF2YVRva2VuOlNFTUlDT0xPTignOycpClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9zdGF0ZW1lbnRzL0lmSW5jb21wbGV0ZTMudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9zdGF0ZW1lbnRzL0lmSW5jb21wbGV0ZTMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJkODM5MDYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL3N0YXRlbWVudHMvSWZJbmNvbXBsZXRlMy50eHQKQEAgLTAsMCArMSwxMSBAQAorUHNpSmF2YUZpbGU6SWZJbmNvbXBsZXRlMy5qYXZhCisgIFBzaUlmU3RhdGVtZW50CisgICAgUHNpS2V5d29yZDppZignaWYnKQorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgUHNpUmVmZXJlbmNlRXhwcmVzc2lvbjpjb25kCisgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpSWRlbnRpZmllcjpjb25kKCdjb25kJykKKyAgICBQc2lFcnJvckVsZW1lbnQ6JyknIGV4cGVjdGVkCisgICAgICA8ZW1wdHkgbGlzdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL3N0YXRlbWVudHMvSWZJbmNvbXBsZXRlNC50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL3N0YXRlbWVudHMvSWZJbmNvbXBsZXRlNC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmMwOTAxZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvc3RhdGVtZW50cy9JZkluY29tcGxldGU0LnR4dApAQCAtMCwwICsxLDEyIEBACitQc2lKYXZhRmlsZTpJZkluY29tcGxldGU0LmphdmEKKyAgUHNpSWZTdGF0ZW1lbnQKKyAgICBQc2lLZXl3b3JkOmlmKCdpZicpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICBQc2lSZWZlcmVuY2VFeHByZXNzaW9uOmNvbmQKKyAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lJZGVudGlmaWVyOmNvbmQoJ2NvbmQnKQorICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgUHNpRXJyb3JFbGVtZW50OlN0YXRlbWVudCBleHBlY3RlZAorICAgICAgPGVtcHR5IGxpc3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9zdGF0ZW1lbnRzL0lmSW5jb21wbGV0ZTUudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9zdGF0ZW1lbnRzL0lmSW5jb21wbGV0ZTUudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVlNmE0YWUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL3N0YXRlbWVudHMvSWZJbmNvbXBsZXRlNS50eHQKQEAgLTAsMCArMSwxOSBAQAorUHNpSmF2YUZpbGU6SWZJbmNvbXBsZXRlNS5qYXZhCisgIFBzaUlmU3RhdGVtZW50CisgICAgUHNpS2V5d29yZDppZignaWYnKQorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgUHNpRXJyb3JFbGVtZW50OkV4cHJlc3Npb24gZXhwZWN0ZWQKKyAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpRXhwcmVzc2lvblN0YXRlbWVudAorICAgICAgUHNpTWV0aG9kQ2FsbEV4cHJlc3Npb246Zm9vKCkKKyAgICAgICAgUHNpUmVmZXJlbmNlRXhwcmVzc2lvbjpmb28KKyAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgICAgUHNpRXhwcmVzc2lvbkxpc3QKKyAgICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lKYXZhVG9rZW46U0VNSUNPTE9OKCc7JykKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL3N0YXRlbWVudHMvSWZJbmNvbXBsZXRlNi50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL3N0YXRlbWVudHMvSWZJbmNvbXBsZXRlNi50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjVhYjNkMwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvc3RhdGVtZW50cy9JZkluY29tcGxldGU2LnR4dApAQCAtMCwwICsxLDI1IEBACitQc2lKYXZhRmlsZTpJZkluY29tcGxldGU2LmphdmEKKyAgUHNpSWZTdGF0ZW1lbnQKKyAgICBQc2lLZXl3b3JkOmlmKCdpZicpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICBQc2lSZWZlcmVuY2VFeHByZXNzaW9uOmNvbmQKKyAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lJZGVudGlmaWVyOmNvbmQoJ2NvbmQnKQorICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpRXhwcmVzc2lvblN0YXRlbWVudAorICAgICAgUHNpTWV0aG9kQ2FsbEV4cHJlc3Npb246Zm9vKCkKKyAgICAgICAgUHNpUmVmZXJlbmNlRXhwcmVzc2lvbjpmb28KKyAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgICAgUHNpRXhwcmVzc2lvbkxpc3QKKyAgICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgICBQc2lKYXZhVG9rZW46U0VNSUNPTE9OKCc7JykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lLZXl3b3JkOmVsc2UoJ2Vsc2UnKQorICAgIFBzaUVycm9yRWxlbWVudDpTdGF0ZW1lbnQgZXhwZWN0ZWQKKyAgICAgIDxlbXB0eSBsaXN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvc3RhdGVtZW50cy9JZk5vcm1hbE5vRWxzZS50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL3N0YXRlbWVudHMvSWZOb3JtYWxOb0Vsc2UudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUzMTFiZDAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL3N0YXRlbWVudHMvSWZOb3JtYWxOb0Vsc2UudHh0CkBAIC0wLDAgKzEsMjEgQEAKK1BzaUphdmFGaWxlOklmTm9ybWFsTm9FbHNlLmphdmEKKyAgUHNpSWZTdGF0ZW1lbnQKKyAgICBQc2lLZXl3b3JkOmlmKCdpZicpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICBQc2lSZWZlcmVuY2VFeHByZXNzaW9uOmEKKyAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lJZGVudGlmaWVyOmEoJ2EnKQorICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpRXhwcmVzc2lvblN0YXRlbWVudAorICAgICAgUHNpTWV0aG9kQ2FsbEV4cHJlc3Npb246ZjEoKQorICAgICAgICBQc2lSZWZlcmVuY2VFeHByZXNzaW9uOmYxCisgICAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgUHNpSWRlbnRpZmllcjpmMSgnZjEnKQorICAgICAgICBQc2lFeHByZXNzaW9uTGlzdAorICAgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaUphdmFUb2tlbjpTRU1JQ09MT04oJzsnKQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvc3RhdGVtZW50cy9JZk5vcm1hbFdpdGhFbHNlLnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvc3RhdGVtZW50cy9JZk5vcm1hbFdpdGhFbHNlLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MjEyOTA1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9zdGF0ZW1lbnRzL0lmTm9ybWFsV2l0aEVsc2UudHh0CkBAIC0wLDAgKzEsNDQgQEAKK1BzaUphdmFGaWxlOklmTm9ybWFsV2l0aEVsc2UuamF2YQorICBQc2lJZlN0YXRlbWVudAorICAgIFBzaUtleXdvcmQ6aWYoJ2lmJykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgIFBzaVJlZmVyZW5jZUV4cHJlc3Npb246YQorICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUlkZW50aWZpZXI6YSgnYScpCisgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICBQc2lCbG9ja1N0YXRlbWVudAorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgICAgUHNpRXhwcmVzc2lvblN0YXRlbWVudAorICAgICAgICAgIFBzaU1ldGhvZENhbGxFeHByZXNzaW9uOmYxKCkKKyAgICAgICAgICAgIFBzaVJlZmVyZW5jZUV4cHJlc3Npb246ZjEKKyAgICAgICAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgICAgICBQc2lJZGVudGlmaWVyOmYxKCdmMScpCisgICAgICAgICAgICBQc2lFeHByZXNzaW9uTGlzdAorICAgICAgICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgICAgIFBzaUphdmFUb2tlbjpTRU1JQ09MT04oJzsnKQorICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpS2V5d29yZDplbHNlKCdlbHNlJykKKyAgICBQc2lCbG9ja1N0YXRlbWVudAorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgICAgUHNpRXhwcmVzc2lvblN0YXRlbWVudAorICAgICAgICAgIFBzaU1ldGhvZENhbGxFeHByZXNzaW9uOmYyKCkKKyAgICAgICAgICAgIFBzaVJlZmVyZW5jZUV4cHJlc3Npb246ZjIKKyAgICAgICAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgICAgICBQc2lJZGVudGlmaWVyOmYyKCdmMicpCisgICAgICAgICAgICBQc2lFeHByZXNzaW9uTGlzdAorICAgICAgICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgICAgIFBzaUphdmFUb2tlbjpTRU1JQ09MT04oJzsnKQorICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9zdGF0ZW1lbnRzL0xhYmVsU2ltcGxlLnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvc3RhdGVtZW50cy9MYWJlbFNpbXBsZS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWRhY2JhYwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvc3RhdGVtZW50cy9MYWJlbFNpbXBsZS50eHQKQEAgLTAsMCArMSwxNCBAQAorUHNpSmF2YUZpbGU6TGFiZWxTaW1wbGUuamF2YQorICBQc2lMYWJlbGVkU3RhdGVtZW50CisgICAgUHNpSWRlbnRpZmllcjpMb29wKCdMb29wJykKKyAgICBQc2lKYXZhVG9rZW46Q09MT04oJzonKQorICAgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgICAgUHNpV2hpbGVTdGF0ZW1lbnQKKyAgICAgIFBzaUtleXdvcmQ6d2hpbGUoJ3doaWxlJykKKyAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICBQc2lMaXRlcmFsRXhwcmVzc2lvbjp0cnVlCisgICAgICAgIFBzaUphdmFUb2tlbjpUUlVFX0tFWVdPUkQoJ3RydWUnKQorICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgUHNpRW1wdHlTdGF0ZW1lbnQKKyAgICAgICAgUHNpSmF2YVRva2VuOlNFTUlDT0xPTignOycpClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9zdGF0ZW1lbnRzL0xvY2FsVmFyLnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvc3RhdGVtZW50cy9Mb2NhbFZhci50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTM2NjE0ZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvc3RhdGVtZW50cy9Mb2NhbFZhci50eHQKQEAgLTAsMCArMSwxOSBAQAorUHNpSmF2YUZpbGU6TG9jYWxWYXIuamF2YQorICBQc2lEZWNsYXJhdGlvblN0YXRlbWVudAorICAgIFBzaUxvY2FsVmFyaWFibGU6bGlzdAorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50Okxpc3Q8SW50ZWdlcj4KKyAgICAgICAgUHNpSmF2YUNvZGVSZWZlcmVuY2VFbGVtZW50Okxpc3Q8SW50ZWdlcj4KKyAgICAgICAgICBQc2lJZGVudGlmaWVyOkxpc3QoJ0xpc3QnKQorICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgIFBzaUphdmFUb2tlbjpMVCgnPCcpCisgICAgICAgICAgICBQc2lUeXBlRWxlbWVudDpJbnRlZ2VyCisgICAgICAgICAgICAgIFBzaUphdmFDb2RlUmVmZXJlbmNlRWxlbWVudDpJbnRlZ2VyCisgICAgICAgICAgICAgICAgUHNpSWRlbnRpZmllcjpJbnRlZ2VyKCdJbnRlZ2VyJykKKyAgICAgICAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgICAgIFBzaUphdmFUb2tlbjpHVCgnPicpCisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaUlkZW50aWZpZXI6bGlzdCgnbGlzdCcpCisgICAgICBQc2lKYXZhVG9rZW46U0VNSUNPTE9OKCc7JykKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL3N0YXRlbWVudHMvUmV0dXJuSW5jb21wbGV0ZTAudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9zdGF0ZW1lbnRzL1JldHVybkluY29tcGxldGUwLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MTNjNzBmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9zdGF0ZW1lbnRzL1JldHVybkluY29tcGxldGUwLnR4dApAQCAtMCwwICsxLDUgQEAKK1BzaUphdmFGaWxlOlJldHVybkluY29tcGxldGUwLmphdmEKKyAgUHNpUmV0dXJuU3RhdGVtZW50CisgICAgUHNpS2V5d29yZDpyZXR1cm4oJ3JldHVybicpCisgICAgUHNpRXJyb3JFbGVtZW50Oic7JyBleHBlY3RlZAorICAgICAgPGVtcHR5IGxpc3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9zdGF0ZW1lbnRzL1JldHVybkluY29tcGxldGUxLnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvc3RhdGVtZW50cy9SZXR1cm5JbmNvbXBsZXRlMS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjQ5OTc4NwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvc3RhdGVtZW50cy9SZXR1cm5JbmNvbXBsZXRlMS50eHQKQEAgLTAsMCArMSwxMCBAQAorUHNpSmF2YUZpbGU6UmV0dXJuSW5jb21wbGV0ZTEuamF2YQorICBQc2lSZXR1cm5TdGF0ZW1lbnQKKyAgICBQc2lLZXl3b3JkOnJldHVybigncmV0dXJuJykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lSZWZlcmVuY2VFeHByZXNzaW9uOmEKKyAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lJZGVudGlmaWVyOmEoJ2EnKQorICAgIFBzaUVycm9yRWxlbWVudDonOycgZXhwZWN0ZWQKKyAgICAgIDxlbXB0eSBsaXN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvc3RhdGVtZW50cy9SZXR1cm5Ob1Jlc3VsdC50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL3N0YXRlbWVudHMvUmV0dXJuTm9SZXN1bHQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI4YzUyNjcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL3N0YXRlbWVudHMvUmV0dXJuTm9SZXN1bHQudHh0CkBAIC0wLDAgKzEsNCBAQAorUHNpSmF2YUZpbGU6UmV0dXJuTm9SZXN1bHQuamF2YQorICBQc2lSZXR1cm5TdGF0ZW1lbnQKKyAgICBQc2lLZXl3b3JkOnJldHVybigncmV0dXJuJykKKyAgICBQc2lKYXZhVG9rZW46U0VNSUNPTE9OKCc7JykKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL3N0YXRlbWVudHMvUmV0dXJuV2l0aFJlc3VsdC50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL3N0YXRlbWVudHMvUmV0dXJuV2l0aFJlc3VsdC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjViN2MxOQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvc3RhdGVtZW50cy9SZXR1cm5XaXRoUmVzdWx0LnR4dApAQCAtMCwwICsxLDcgQEAKK1BzaUphdmFGaWxlOlJldHVybldpdGhSZXN1bHQuamF2YQorICBQc2lSZXR1cm5TdGF0ZW1lbnQKKyAgICBQc2lLZXl3b3JkOnJldHVybigncmV0dXJuJykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lMaXRlcmFsRXhwcmVzc2lvbjoxMAorICAgICAgUHNpSmF2YVRva2VuOklOVEVHRVJfTElURVJBTCgnMTAnKQorICAgIFBzaUphdmFUb2tlbjpTRU1JQ09MT04oJzsnKQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvc3RhdGVtZW50cy9TQ1I1MjAyLnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvc3RhdGVtZW50cy9TQ1I1MjAyLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZjg5N2ExCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9zdGF0ZW1lbnRzL1NDUjUyMDIudHh0CkBAIC0wLDAgKzEsMzUgQEAKK1BzaUphdmFGaWxlOlNDUjUyMDIuamF2YQorICBQc2lDb2RlQmxvY2sKKyAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lFeHByZXNzaW9uU3RhdGVtZW50CisgICAgICBQc2lSZWZlcmVuY2VFeHByZXNzaW9uOlN0cmluZy5jbGFzcy4KKyBTdHJpbmcKKyAgICAgICAgUHNpQ2xhc3NPYmplY3RBY2Nlc3NFeHByZXNzaW9uOlN0cmluZy5jbGFzcworICAgICAgICAgIFBzaVR5cGVFbGVtZW50OlN0cmluZworICAgICAgICAgICAgUHNpSmF2YUNvZGVSZWZlcmVuY2VFbGVtZW50OlN0cmluZworICAgICAgICAgICAgICBQc2lJZGVudGlmaWVyOlN0cmluZygnU3RyaW5nJykKKyAgICAgICAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgIFBzaUphdmFUb2tlbjpET1QoJy4nKQorICAgICAgICAgIFBzaUtleXdvcmQ6Y2xhc3MoJ2NsYXNzJykKKyAgICAgICAgUHNpSmF2YVRva2VuOkRPVCgnLicpCisgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgICAgICAgUHNpSWRlbnRpZmllcjpTdHJpbmcoJ1N0cmluZycpCisgICAgICBQc2lFcnJvckVsZW1lbnQ6JzsnIGV4cGVjdGVkCisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUVycm9yRWxlbWVudDpVbmV4cGVjdGVkIHRva2VuCisgICAgICBQc2lKYXZhVG9rZW46TEJSQUNLRVQoJ1snKQorICAgIFBzaUVycm9yRWxlbWVudDpVbmV4cGVjdGVkIHRva2VuCisgICAgICBQc2lKYXZhVG9rZW46UkJSQUNLRVQoJ10nKQorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUV4cHJlc3Npb25TdGF0ZW1lbnQKKyAgICAgIFBzaVJlZmVyZW5jZUV4cHJlc3Npb246c3RyaW5ncworICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgIFBzaUlkZW50aWZpZXI6c3RyaW5ncygnc3RyaW5ncycpCisgICAgICBQc2lKYXZhVG9rZW46U0VNSUNPTE9OKCc7JykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL3N0YXRlbWVudHMvU3dpdGNoSW5jb21wbGV0ZTAudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9zdGF0ZW1lbnRzL1N3aXRjaEluY29tcGxldGUwLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNzAyN2I2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9zdGF0ZW1lbnRzL1N3aXRjaEluY29tcGxldGUwLnR4dApAQCAtMCwwICsxLDUgQEAKK1BzaUphdmFGaWxlOlN3aXRjaEluY29tcGxldGUwLmphdmEKKyAgUHNpU3dpdGNoU3RhdGVtZW50CisgICAgUHNpS2V5d29yZDpzd2l0Y2goJ3N3aXRjaCcpCisgICAgUHNpRXJyb3JFbGVtZW50OicoJyBleHBlY3RlZAorICAgICAgPGVtcHR5IGxpc3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9zdGF0ZW1lbnRzL1N3aXRjaEluY29tcGxldGUxLnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvc3RhdGVtZW50cy9Td2l0Y2hJbmNvbXBsZXRlMS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2E5NjFkOQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvc3RhdGVtZW50cy9Td2l0Y2hJbmNvbXBsZXRlMS50eHQKQEAgLTAsMCArMSw2IEBACitQc2lKYXZhRmlsZTpTd2l0Y2hJbmNvbXBsZXRlMS5qYXZhCisgIFBzaVN3aXRjaFN0YXRlbWVudAorICAgIFBzaUtleXdvcmQ6c3dpdGNoKCdzd2l0Y2gnKQorICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgUHNpRXJyb3JFbGVtZW50OkV4cHJlc3Npb24gZXhwZWN0ZWQKKyAgICAgIDxlbXB0eSBsaXN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvc3RhdGVtZW50cy9Td2l0Y2hJbmNvbXBsZXRlMi50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL3N0YXRlbWVudHMvU3dpdGNoSW5jb21wbGV0ZTIudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM4MjJkY2EKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL3N0YXRlbWVudHMvU3dpdGNoSW5jb21wbGV0ZTIudHh0CkBAIC0wLDAgKzEsMTAgQEAKK1BzaUphdmFGaWxlOlN3aXRjaEluY29tcGxldGUyLmphdmEKKyAgUHNpU3dpdGNoU3RhdGVtZW50CisgICAgUHNpS2V5d29yZDpzd2l0Y2goJ3N3aXRjaCcpCisgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICBQc2lSZWZlcmVuY2VFeHByZXNzaW9uOm8KKyAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lJZGVudGlmaWVyOm8oJ28nKQorICAgIFBzaUVycm9yRWxlbWVudDonKScgZXhwZWN0ZWQKKyAgICAgIDxlbXB0eSBsaXN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvc3RhdGVtZW50cy9Td2l0Y2hJbmNvbXBsZXRlMy50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL3N0YXRlbWVudHMvU3dpdGNoSW5jb21wbGV0ZTMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc0N2M5MTIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL3N0YXRlbWVudHMvU3dpdGNoSW5jb21wbGV0ZTMudHh0CkBAIC0wLDAgKzEsMTEgQEAKK1BzaUphdmFGaWxlOlN3aXRjaEluY29tcGxldGUzLmphdmEKKyAgUHNpU3dpdGNoU3RhdGVtZW50CisgICAgUHNpS2V5d29yZDpzd2l0Y2goJ3N3aXRjaCcpCisgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICBQc2lSZWZlcmVuY2VFeHByZXNzaW9uOm8KKyAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lJZGVudGlmaWVyOm8oJ28nKQorICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgUHNpRXJyb3JFbGVtZW50Oid7JyBleHBlY3RlZAorICAgICAgPGVtcHR5IGxpc3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9zdGF0ZW1lbnRzL1N3aXRjaEluY29tcGxldGU0LnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvc3RhdGVtZW50cy9Td2l0Y2hJbmNvbXBsZXRlNC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmI3OTdjZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvc3RhdGVtZW50cy9Td2l0Y2hJbmNvbXBsZXRlNC50eHQKQEAgLTAsMCArMSwxMCBAQAorUHNpSmF2YUZpbGU6U3dpdGNoSW5jb21wbGV0ZTQuamF2YQorICBQc2lTd2l0Y2hTdGF0ZW1lbnQKKyAgICBQc2lLZXl3b3JkOnN3aXRjaCgnc3dpdGNoJykKKyAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgIFBzaUVycm9yRWxlbWVudDpFeHByZXNzaW9uIGV4cGVjdGVkCisgICAgICA8ZW1wdHkgbGlzdD4KKyAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgIFBzaUNvZGVCbG9jaworICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL3N0YXRlbWVudHMvU3dpdGNoSW5jb21wbGV0ZTUudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9zdGF0ZW1lbnRzL1N3aXRjaEluY29tcGxldGU1LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYTkwZWY4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9zdGF0ZW1lbnRzL1N3aXRjaEluY29tcGxldGU1LnR4dApAQCAtMCwwICsxLDE3IEBACitQc2lKYXZhRmlsZTpTd2l0Y2hJbmNvbXBsZXRlNS5qYXZhCisgIFBzaVN3aXRjaFN0YXRlbWVudAorICAgIFBzaUtleXdvcmQ6c3dpdGNoKCdzd2l0Y2gnKQorICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgUHNpRXJyb3JFbGVtZW50OkV4cHJlc3Npb24gZXhwZWN0ZWQKKyAgICAgIDxlbXB0eSBsaXN0PgorICBQc2lXaGl0ZVNwYWNlKCdcbiAnKQorICBQc2lFeHByZXNzaW9uU3RhdGVtZW50CisgICAgUHNpTWV0aG9kQ2FsbEV4cHJlc3Npb246Zm9vKCkKKyAgICAgIFBzaVJlZmVyZW5jZUV4cHJlc3Npb246Zm9vCisgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICBQc2lFeHByZXNzaW9uTGlzdAorICAgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgIFBzaUphdmFUb2tlbjpTRU1JQ09MT04oJzsnKQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvc3RhdGVtZW50cy9Td2l0Y2hMYWJlbHNJbmNvbXBsZXRlMC50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL3N0YXRlbWVudHMvU3dpdGNoTGFiZWxzSW5jb21wbGV0ZTAudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk4ZDE3ZDUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL3N0YXRlbWVudHMvU3dpdGNoTGFiZWxzSW5jb21wbGV0ZTAudHh0CkBAIC0wLDAgKzEsMyBAQAorUHNpSmF2YUZpbGU6U3dpdGNoTGFiZWxzSW5jb21wbGV0ZTAuamF2YQorICBQc2lFcnJvckVsZW1lbnQ6VW5leHBlY3RlZCB0b2tlbgorICAgIFBzaUtleXdvcmQ6Y2FzZSgnY2FzZScpClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9zdGF0ZW1lbnRzL1N3aXRjaExhYmVsc0luY29tcGxldGUxLnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvc3RhdGVtZW50cy9Td2l0Y2hMYWJlbHNJbmNvbXBsZXRlMS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzJlNGU5NAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvc3RhdGVtZW50cy9Td2l0Y2hMYWJlbHNJbmNvbXBsZXRlMS50eHQKQEAgLTAsMCArMSw4IEBACitQc2lKYXZhRmlsZTpTd2l0Y2hMYWJlbHNJbmNvbXBsZXRlMS5qYXZhCisgIFBzaVN3aXRjaExhYmVsU3RhdGVtZW50CisgICAgUHNpS2V5d29yZDpjYXNlKCdjYXNlJykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lMaXRlcmFsRXhwcmVzc2lvbjoyCisgICAgICBQc2lKYXZhVG9rZW46SU5URUdFUl9MSVRFUkFMKCcyJykKKyAgICBQc2lFcnJvckVsZW1lbnQ6JzonIGV4cGVjdGVkCisgICAgICA8ZW1wdHkgbGlzdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL3N0YXRlbWVudHMvU3dpdGNoTGFiZWxzSW5jb21wbGV0ZTIudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9zdGF0ZW1lbnRzL1N3aXRjaExhYmVsc0luY29tcGxldGUyLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYTI3YWJiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9zdGF0ZW1lbnRzL1N3aXRjaExhYmVsc0luY29tcGxldGUyLnR4dApAQCAtMCwwICsxLDUgQEAKK1BzaUphdmFGaWxlOlN3aXRjaExhYmVsc0luY29tcGxldGUyLmphdmEKKyAgUHNpU3dpdGNoTGFiZWxTdGF0ZW1lbnQKKyAgICBQc2lLZXl3b3JkOmRlZmF1bHQoJ2RlZmF1bHQnKQorICAgIFBzaUVycm9yRWxlbWVudDonOicgZXhwZWN0ZWQKKyAgICAgIDxlbXB0eSBsaXN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvc3RhdGVtZW50cy9Td2l0Y2hMYWJlbHNJbmNvbXBsZXRlMy50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL3N0YXRlbWVudHMvU3dpdGNoTGFiZWxzSW5jb21wbGV0ZTMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE1NjA0MjcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL3N0YXRlbWVudHMvU3dpdGNoTGFiZWxzSW5jb21wbGV0ZTMudHh0CkBAIC0wLDAgKzEsMTMgQEAKK1BzaUphdmFGaWxlOlN3aXRjaExhYmVsc0luY29tcGxldGUzLmphdmEKKyAgUHNpU3dpdGNoTGFiZWxTdGF0ZW1lbnQKKyAgICBQc2lLZXl3b3JkOmRlZmF1bHQoJ2RlZmF1bHQnKQorICAgIFBzaUVycm9yRWxlbWVudDonOicgZXhwZWN0ZWQKKyAgICAgIDxlbXB0eSBsaXN0PgorICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgUHNpRXhwcmVzc2lvblN0YXRlbWVudAorICAgIFBzaUxpdGVyYWxFeHByZXNzaW9uOjMKKyAgICAgIFBzaUphdmFUb2tlbjpJTlRFR0VSX0xJVEVSQUwoJzMnKQorICAgIFBzaUVycm9yRWxlbWVudDonOycgZXhwZWN0ZWQKKyAgICAgIDxlbXB0eSBsaXN0PgorICBQc2lFcnJvckVsZW1lbnQ6VW5leHBlY3RlZCB0b2tlbgorICAgIFBzaUphdmFUb2tlbjpDT0xPTignOicpClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9zdGF0ZW1lbnRzL1N3aXRjaExhYmVsc05vcm1hbC50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL3N0YXRlbWVudHMvU3dpdGNoTGFiZWxzTm9ybWFsLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYTUwZjE4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9zdGF0ZW1lbnRzL1N3aXRjaExhYmVsc05vcm1hbC50eHQKQEAgLTAsMCArMSwxOSBAQAorUHNpSmF2YUZpbGU6U3dpdGNoTGFiZWxzTm9ybWFsLmphdmEKKyAgUHNpU3dpdGNoTGFiZWxTdGF0ZW1lbnQKKyAgICBQc2lLZXl3b3JkOmNhc2UoJ2Nhc2UnKQorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUxpdGVyYWxFeHByZXNzaW9uOjEKKyAgICAgIFBzaUphdmFUb2tlbjpJTlRFR0VSX0xJVEVSQUwoJzEnKQorICAgIFBzaUphdmFUb2tlbjpDT0xPTignOicpCisgIFBzaVdoaXRlU3BhY2UoJyAnKQorICBQc2lCcmVha1N0YXRlbWVudAorICAgIFBzaUtleXdvcmQ6YnJlYWsoJ2JyZWFrJykKKyAgICBQc2lKYXZhVG9rZW46U0VNSUNPTE9OKCc7JykKKyAgUHNpV2hpdGVTcGFjZSgnICcpCisgIFBzaVN3aXRjaExhYmVsU3RhdGVtZW50CisgICAgUHNpS2V5d29yZDpkZWZhdWx0KCdkZWZhdWx0JykKKyAgICBQc2lKYXZhVG9rZW46Q09MT04oJzonKQorICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgUHNpQnJlYWtTdGF0ZW1lbnQKKyAgICBQc2lLZXl3b3JkOmJyZWFrKCdicmVhaycpCisgICAgUHNpSmF2YVRva2VuOlNFTUlDT0xPTignOycpClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9zdGF0ZW1lbnRzL1N3aXRjaE5vcm1hbC50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL3N0YXRlbWVudHMvU3dpdGNoTm9ybWFsLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jOGM1MjcxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9zdGF0ZW1lbnRzL1N3aXRjaE5vcm1hbC50eHQKQEAgLTAsMCArMSwxMiBAQAorUHNpSmF2YUZpbGU6U3dpdGNoTm9ybWFsLmphdmEKKyAgUHNpU3dpdGNoU3RhdGVtZW50CisgICAgUHNpS2V5d29yZDpzd2l0Y2goJ3N3aXRjaCcpCisgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICBQc2lSZWZlcmVuY2VFeHByZXNzaW9uOm8KKyAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lJZGVudGlmaWVyOm8oJ28nKQorICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgUHNpQ29kZUJsb2NrCisgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvc3RhdGVtZW50cy9TeW5jSW5jb21wbGV0ZTAudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9zdGF0ZW1lbnRzL1N5bmNJbmNvbXBsZXRlMC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2Q4ZWI3NwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvc3RhdGVtZW50cy9TeW5jSW5jb21wbGV0ZTAudHh0CkBAIC0wLDAgKzEsNSBAQAorUHNpSmF2YUZpbGU6U3luY0luY29tcGxldGUwLmphdmEKKyAgUHNpU3luY2hyb25pemVkU3RhdGVtZW50CisgICAgUHNpS2V5d29yZDpzeW5jaHJvbml6ZWQoJ3N5bmNocm9uaXplZCcpCisgICAgUHNpRXJyb3JFbGVtZW50OicoJyBleHBlY3RlZAorICAgICAgPGVtcHR5IGxpc3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9zdGF0ZW1lbnRzL1N5bmNJbmNvbXBsZXRlMS50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL3N0YXRlbWVudHMvU3luY0luY29tcGxldGUxLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mOTFlYzE4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9zdGF0ZW1lbnRzL1N5bmNJbmNvbXBsZXRlMS50eHQKQEAgLTAsMCArMSw2IEBACitQc2lKYXZhRmlsZTpTeW5jSW5jb21wbGV0ZTEuamF2YQorICBQc2lTeW5jaHJvbml6ZWRTdGF0ZW1lbnQKKyAgICBQc2lLZXl3b3JkOnN5bmNocm9uaXplZCgnc3luY2hyb25pemVkJykKKyAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgIFBzaUVycm9yRWxlbWVudDpFeHByZXNzaW9uIGV4cGVjdGVkCisgICAgICA8ZW1wdHkgbGlzdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL3N0YXRlbWVudHMvU3luY0luY29tcGxldGUyLnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvc3RhdGVtZW50cy9TeW5jSW5jb21wbGV0ZTIudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQzZjc0NzQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL3N0YXRlbWVudHMvU3luY0luY29tcGxldGUyLnR4dApAQCAtMCwwICsxLDEwIEBACitQc2lKYXZhRmlsZTpTeW5jSW5jb21wbGV0ZTIuamF2YQorICBQc2lTeW5jaHJvbml6ZWRTdGF0ZW1lbnQKKyAgICBQc2lLZXl3b3JkOnN5bmNocm9uaXplZCgnc3luY2hyb25pemVkJykKKyAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgIFBzaVJlZmVyZW5jZUV4cHJlc3Npb246bworICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUlkZW50aWZpZXI6bygnbycpCisgICAgUHNpRXJyb3JFbGVtZW50OicpJyBleHBlY3RlZAorICAgICAgPGVtcHR5IGxpc3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9zdGF0ZW1lbnRzL1N5bmNJbmNvbXBsZXRlMy50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL3N0YXRlbWVudHMvU3luY0luY29tcGxldGUzLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZGVkZDIzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9zdGF0ZW1lbnRzL1N5bmNJbmNvbXBsZXRlMy50eHQKQEAgLTAsMCArMSwxMSBAQAorUHNpSmF2YUZpbGU6U3luY0luY29tcGxldGUzLmphdmEKKyAgUHNpU3luY2hyb25pemVkU3RhdGVtZW50CisgICAgUHNpS2V5d29yZDpzeW5jaHJvbml6ZWQoJ3N5bmNocm9uaXplZCcpCisgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICBQc2lSZWZlcmVuY2VFeHByZXNzaW9uOm8KKyAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lJZGVudGlmaWVyOm8oJ28nKQorICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgUHNpRXJyb3JFbGVtZW50Oid7JyBleHBlY3RlZAorICAgICAgPGVtcHR5IGxpc3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9zdGF0ZW1lbnRzL1N5bmNJbmNvbXBsZXRlNC50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL3N0YXRlbWVudHMvU3luY0luY29tcGxldGU0LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MmY0MmY4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9zdGF0ZW1lbnRzL1N5bmNJbmNvbXBsZXRlNC50eHQKQEAgLTAsMCArMSwxMCBAQAorUHNpSmF2YUZpbGU6U3luY0luY29tcGxldGU0LmphdmEKKyAgUHNpU3luY2hyb25pemVkU3RhdGVtZW50CisgICAgUHNpS2V5d29yZDpzeW5jaHJvbml6ZWQoJ3N5bmNocm9uaXplZCcpCisgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICBQc2lFcnJvckVsZW1lbnQ6RXhwcmVzc2lvbiBleHBlY3RlZAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICBQc2lDb2RlQmxvY2sKKyAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9zdGF0ZW1lbnRzL1N5bmNJbmNvbXBsZXRlNS50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL3N0YXRlbWVudHMvU3luY0luY29tcGxldGU1LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NzE5OTdkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9zdGF0ZW1lbnRzL1N5bmNJbmNvbXBsZXRlNS50eHQKQEAgLTAsMCArMSwxNyBAQAorUHNpSmF2YUZpbGU6U3luY0luY29tcGxldGU1LmphdmEKKyAgUHNpU3luY2hyb25pemVkU3RhdGVtZW50CisgICAgUHNpS2V5d29yZDpzeW5jaHJvbml6ZWQoJ3N5bmNocm9uaXplZCcpCisgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICBQc2lFcnJvckVsZW1lbnQ6RXhwcmVzc2lvbiBleHBlY3RlZAorICAgICAgPGVtcHR5IGxpc3Q+CisgIFBzaVdoaXRlU3BhY2UoJ1xuICcpCisgIFBzaUV4cHJlc3Npb25TdGF0ZW1lbnQKKyAgICBQc2lNZXRob2RDYWxsRXhwcmVzc2lvbjpmb28oKQorICAgICAgUHNpUmVmZXJlbmNlRXhwcmVzc2lvbjpmb28KKyAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICBQc2lJZGVudGlmaWVyOmZvbygnZm9vJykKKyAgICAgIFBzaUV4cHJlc3Npb25MaXN0CisgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgUHNpSmF2YVRva2VuOlNFTUlDT0xPTignOycpClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9zdGF0ZW1lbnRzL1N5bmNOb3JtYWwudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9zdGF0ZW1lbnRzL1N5bmNOb3JtYWwudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU2ZjgyYWIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL3N0YXRlbWVudHMvU3luY05vcm1hbC50eHQKQEAgLTAsMCArMSwxMiBAQAorUHNpSmF2YUZpbGU6U3luY05vcm1hbC5qYXZhCisgIFBzaVN5bmNocm9uaXplZFN0YXRlbWVudAorICAgIFBzaUtleXdvcmQ6c3luY2hyb25pemVkKCdzeW5jaHJvbml6ZWQnKQorICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgUHNpUmVmZXJlbmNlRXhwcmVzc2lvbjpvCisgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpSWRlbnRpZmllcjpvKCdvJykKKyAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgIFBzaUNvZGVCbG9jaworICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL3N0YXRlbWVudHMvVGhyb3dJbmNvbXBsZXRlMC50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL3N0YXRlbWVudHMvVGhyb3dJbmNvbXBsZXRlMC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTFiZmI0YQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvc3RhdGVtZW50cy9UaHJvd0luY29tcGxldGUwLnR4dApAQCAtMCwwICsxLDUgQEAKK1BzaUphdmFGaWxlOlRocm93SW5jb21wbGV0ZTAuamF2YQorICBQc2lUaHJvd1N0YXRlbWVudAorICAgIFBzaUtleXdvcmQ6dGhyb3coJ3Rocm93JykKKyAgICBQc2lFcnJvckVsZW1lbnQ6RXhwcmVzc2lvbiBleHBlY3RlZAorICAgICAgPGVtcHR5IGxpc3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9zdGF0ZW1lbnRzL1Rocm93SW5jb21wbGV0ZTEudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9zdGF0ZW1lbnRzL1Rocm93SW5jb21wbGV0ZTEudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlkMjI5MTIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL3N0YXRlbWVudHMvVGhyb3dJbmNvbXBsZXRlMS50eHQKQEAgLTAsMCArMSwxMCBAQAorUHNpSmF2YUZpbGU6VGhyb3dJbmNvbXBsZXRlMS5qYXZhCisgIFBzaVRocm93U3RhdGVtZW50CisgICAgUHNpS2V5d29yZDp0aHJvdygndGhyb3cnKQorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaVJlZmVyZW5jZUV4cHJlc3Npb246ZQorICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUlkZW50aWZpZXI6ZSgnZScpCisgICAgUHNpRXJyb3JFbGVtZW50Oic7JyBleHBlY3RlZAorICAgICAgPGVtcHR5IGxpc3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9zdGF0ZW1lbnRzL1Rocm93Tm9ybWFsLnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvc3RhdGVtZW50cy9UaHJvd05vcm1hbC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGVlOWQ2YgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvc3RhdGVtZW50cy9UaHJvd05vcm1hbC50eHQKQEAgLTAsMCArMSw5IEBACitQc2lKYXZhRmlsZTpUaHJvd05vcm1hbC5qYXZhCisgIFBzaVRocm93U3RhdGVtZW50CisgICAgUHNpS2V5d29yZDp0aHJvdygndGhyb3cnKQorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaVJlZmVyZW5jZUV4cHJlc3Npb246ZQorICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUlkZW50aWZpZXI6ZSgnZScpCisgICAgUHNpSmF2YVRva2VuOlNFTUlDT0xPTignOycpClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9zdGF0ZW1lbnRzL1RyeUluY29tcGxldGUwLnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvc3RhdGVtZW50cy9UcnlJbmNvbXBsZXRlMC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzA4NjgxMQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvc3RhdGVtZW50cy9UcnlJbmNvbXBsZXRlMC50eHQKQEAgLTAsMCArMSw1IEBACitQc2lKYXZhRmlsZTpUcnlJbmNvbXBsZXRlMC5qYXZhCisgIFBzaVRyeVN0YXRlbWVudAorICAgIFBzaUtleXdvcmQ6dHJ5KCd0cnknKQorICAgIFBzaUVycm9yRWxlbWVudDoneycgZXhwZWN0ZWQKKyAgICAgIDxlbXB0eSBsaXN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvc3RhdGVtZW50cy9UcnlJbmNvbXBsZXRlMS50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL3N0YXRlbWVudHMvVHJ5SW5jb21wbGV0ZTEudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIxMTYyM2YKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL3N0YXRlbWVudHMvVHJ5SW5jb21wbGV0ZTEudHh0CkBAIC0wLDAgKzEsOCBAQAorUHNpSmF2YUZpbGU6VHJ5SW5jb21wbGV0ZTEuamF2YQorICBQc2lUcnlTdGF0ZW1lbnQKKyAgICBQc2lLZXl3b3JkOnRyeSgndHJ5JykKKyAgICBQc2lDb2RlQmxvY2sKKyAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpRXJyb3JFbGVtZW50OidjYXRjaCcgb3IgJ2ZpbmFsbHknIGV4cGVjdGVkCisgICAgICA8ZW1wdHkgbGlzdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL3N0YXRlbWVudHMvVHJ5SW5jb21wbGV0ZTEwLnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvc3RhdGVtZW50cy9UcnlJbmNvbXBsZXRlMTAudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA3NDYxZmYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL3N0YXRlbWVudHMvVHJ5SW5jb21wbGV0ZTEwLnR4dApAQCAtMCwwICsxLDEyIEBACitQc2lKYXZhRmlsZTpUcnlJbmNvbXBsZXRlMTAuamF2YQorICBQc2lUcnlTdGF0ZW1lbnQKKyAgICBQc2lLZXl3b3JkOnRyeSgndHJ5JykKKyAgICBQc2lSZXNvdXJjZUxpc3Q6KAorICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgIFBzaUVycm9yRWxlbWVudDpJZGVudGlmaWVyIG9yIHR5cGUgZXhwZWN0ZWQKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lFcnJvckVsZW1lbnQ6JyknIGV4cGVjdGVkCisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgIFBzaUNvZGVCbG9jaworICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvc3RhdGVtZW50cy9UcnlJbmNvbXBsZXRlMTEudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9zdGF0ZW1lbnRzL1RyeUluY29tcGxldGUxMS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmRhNmViNAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvc3RhdGVtZW50cy9UcnlJbmNvbXBsZXRlMTEudHh0CkBAIC0wLDAgKzEsMTEgQEAKK1BzaUphdmFGaWxlOlRyeUluY29tcGxldGUxMS5qYXZhCisgIFBzaVRyeVN0YXRlbWVudAorICAgIFBzaUtleXdvcmQ6dHJ5KCd0cnknKQorICAgIFBzaVJlc291cmNlTGlzdDooKQorICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgIFBzaUVycm9yRWxlbWVudDpJZGVudGlmaWVyIG9yIHR5cGUgZXhwZWN0ZWQKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgIFBzaUNvZGVCbG9jaworICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvc3RhdGVtZW50cy9UcnlJbmNvbXBsZXRlMTIudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9zdGF0ZW1lbnRzL1RyeUluY29tcGxldGUxMi50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjM3YzU5ZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvc3RhdGVtZW50cy9UcnlJbmNvbXBsZXRlMTIudHh0CkBAIC0wLDAgKzEsMTIgQEAKK1BzaUphdmFGaWxlOlRyeUluY29tcGxldGUxMi5qYXZhCisgIFBzaVRyeVN0YXRlbWVudAorICAgIFBzaUtleXdvcmQ6dHJ5KCd0cnknKQorICAgIFBzaVJlc291cmNlTGlzdDooOykKKyAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICBQc2lFcnJvckVsZW1lbnQ6UmVzb3VyY2UgZGVmaW5pdGlvbiBleHBlY3RlZAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUphdmFUb2tlbjpTRU1JQ09MT04oJzsnKQorICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICBQc2lDb2RlQmxvY2sKKyAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL3N0YXRlbWVudHMvVHJ5SW5jb21wbGV0ZTEzLnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvc3RhdGVtZW50cy9UcnlJbmNvbXBsZXRlMTMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI0MzAxZjYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL3N0YXRlbWVudHMvVHJ5SW5jb21wbGV0ZTEzLnR4dApAQCAtMCwwICsxLDE4IEBACitQc2lKYXZhRmlsZTpUcnlJbmNvbXBsZXRlMTMuamF2YQorICBQc2lUcnlTdGF0ZW1lbnQKKyAgICBQc2lLZXl3b3JkOnRyeSgndHJ5JykKKyAgICBQc2lSZXNvdXJjZUxpc3Q6KGZpbmFsICkKKyAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICBQc2lNb2RpZmllckxpc3Q6ZmluYWwKKyAgICAgICAgUHNpS2V5d29yZDpmaW5hbCgnZmluYWwnKQorICAgICAgUHNpRXJyb3JFbGVtZW50OlR5cGUgZXhwZWN0ZWQKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgIFBzaVR5cGVFbGVtZW50OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUVycm9yRWxlbWVudDpJZGVudGlmaWVyIGV4cGVjdGVkCisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICBQc2lDb2RlQmxvY2sKKyAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9zdGF0ZW1lbnRzL1RyeUluY29tcGxldGUxNC50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL3N0YXRlbWVudHMvVHJ5SW5jb21wbGV0ZTE0LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NzQ4MmM1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9zdGF0ZW1lbnRzL1RyeUluY29tcGxldGUxNC50eHQKQEAgLTAsMCArMSwxNSBAQAorUHNpSmF2YUZpbGU6VHJ5SW5jb21wbGV0ZTE0LmphdmEKKyAgUHNpVHJ5U3RhdGVtZW50CisgICAgUHNpS2V5d29yZDp0cnkoJ3RyeScpCisgICAgUHNpUmVzb3VyY2VMaXN0OihpbnQpCisgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaVR5cGVFbGVtZW50OmludAorICAgICAgICBQc2lLZXl3b3JkOmludCgnaW50JykKKyAgICAgIFBzaUVycm9yRWxlbWVudDpJZGVudGlmaWVyIGV4cGVjdGVkCisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICBQc2lDb2RlQmxvY2sKKyAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9zdGF0ZW1lbnRzL1RyeUluY29tcGxldGUxNS50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL3N0YXRlbWVudHMvVHJ5SW5jb21wbGV0ZTE1LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZGEyYzVhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9zdGF0ZW1lbnRzL1RyeUluY29tcGxldGUxNS50eHQKQEAgLTAsMCArMSwyMSBAQAorUHNpSmF2YUZpbGU6VHJ5SW5jb21wbGV0ZTE1LmphdmEKKyAgUHNpVHJ5U3RhdGVtZW50CisgICAgUHNpS2V5d29yZDp0cnkoJ3RyeScpCisgICAgUHNpUmVzb3VyY2VMaXN0OihSIHIpCisgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgUHNpUmVzb3VyY2VWYXJpYWJsZTpyCisgICAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgUHNpVHlwZUVsZW1lbnQ6UgorICAgICAgICAgIFBzaUphdmFDb2RlUmVmZXJlbmNlRWxlbWVudDpSCisgICAgICAgICAgICBQc2lJZGVudGlmaWVyOlIoJ1InKQorICAgICAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgIFBzaUlkZW50aWZpZXI6cigncicpCisgICAgICAgIFBzaUVycm9yRWxlbWVudDonPScgZXhwZWN0ZWQKKyAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgUHNpQ29kZUJsb2NrCisgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9zdGF0ZW1lbnRzL1RyeUluY29tcGxldGUxNi50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL3N0YXRlbWVudHMvVHJ5SW5jb21wbGV0ZTE2LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MzdlMzU0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9zdGF0ZW1lbnRzL1RyeUluY29tcGxldGUxNi50eHQKQEAgLTAsMCArMSwyMyBAQAorUHNpSmF2YUZpbGU6VHJ5SW5jb21wbGV0ZTE2LmphdmEKKyAgUHNpVHJ5U3RhdGVtZW50CisgICAgUHNpS2V5d29yZDp0cnkoJ3RyeScpCisgICAgUHNpUmVzb3VyY2VMaXN0OihSIHIgPSkKKyAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICBQc2lSZXNvdXJjZVZhcmlhYmxlOnIKKyAgICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICBQc2lUeXBlRWxlbWVudDpSCisgICAgICAgICAgUHNpSmF2YUNvZGVSZWZlcmVuY2VFbGVtZW50OlIKKyAgICAgICAgICAgIFBzaUlkZW50aWZpZXI6UignUicpCisgICAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgICAgUHNpSWRlbnRpZmllcjpyKCdyJykKKyAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgIFBzaUphdmFUb2tlbjpFUSgnPScpCisgICAgICAgIFBzaUVycm9yRWxlbWVudDpFeHByZXNzaW9uIGV4cGVjdGVkCisgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgIFBzaUNvZGVCbG9jaworICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvc3RhdGVtZW50cy9UcnlJbmNvbXBsZXRlMTcudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9zdGF0ZW1lbnRzL1RyeUluY29tcGxldGUxNy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2YxOWQ4YwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvc3RhdGVtZW50cy9UcnlJbmNvbXBsZXRlMTcudHh0CkBAIC0wLDAgKzEsMjggQEAKK1BzaUphdmFGaWxlOlRyeUluY29tcGxldGUxNy5qYXZhCisgIFBzaVRyeVN0YXRlbWVudAorICAgIFBzaUtleXdvcmQ6dHJ5KCd0cnknKQorICAgIFBzaVJlc291cmNlTGlzdDooUiByID0gMDs7KQorICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgIFBzaVJlc291cmNlVmFyaWFibGU6cgorICAgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgIFBzaVR5cGVFbGVtZW50OlIKKyAgICAgICAgICBQc2lKYXZhQ29kZVJlZmVyZW5jZUVsZW1lbnQ6UgorICAgICAgICAgICAgUHNpSWRlbnRpZmllcjpSKCdSJykKKyAgICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICBQc2lJZGVudGlmaWVyOnIoJ3InKQorICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgICAgUHNpSmF2YVRva2VuOkVRKCc9JykKKyAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgIFBzaUxpdGVyYWxFeHByZXNzaW9uOjAKKyAgICAgICAgICBQc2lKYXZhVG9rZW46SU5URUdFUl9MSVRFUkFMKCcwJykKKyAgICAgIFBzaUphdmFUb2tlbjpTRU1JQ09MT04oJzsnKQorICAgICAgUHNpRXJyb3JFbGVtZW50OlJlc291cmNlIGRlZmluaXRpb24gZXhwZWN0ZWQKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lKYXZhVG9rZW46U0VNSUNPTE9OKCc7JykKKyAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgUHNpQ29kZUJsb2NrCisgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9zdGF0ZW1lbnRzL1RyeUluY29tcGxldGUyLnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvc3RhdGVtZW50cy9UcnlJbmNvbXBsZXRlMi50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWM2YWJhMAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvc3RhdGVtZW50cy9UcnlJbmNvbXBsZXRlMi50eHQKQEAgLTAsMCArMSwxMCBAQAorUHNpSmF2YUZpbGU6VHJ5SW5jb21wbGV0ZTIuamF2YQorICBQc2lUcnlTdGF0ZW1lbnQKKyAgICBQc2lLZXl3b3JkOnRyeSgndHJ5JykKKyAgICBQc2lDb2RlQmxvY2sKKyAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpQ2F0Y2hTZWN0aW9uCisgICAgICBQc2lLZXl3b3JkOmNhdGNoKCdjYXRjaCcpCisgICAgICBQc2lFcnJvckVsZW1lbnQ6JygnIGV4cGVjdGVkCisgICAgICAgIDxlbXB0eSBsaXN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvc3RhdGVtZW50cy9UcnlJbmNvbXBsZXRlMy50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL3N0YXRlbWVudHMvVHJ5SW5jb21wbGV0ZTMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE1YWQ3YjkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL3N0YXRlbWVudHMvVHJ5SW5jb21wbGV0ZTMudHh0CkBAIC0wLDAgKzEsMTMgQEAKK1BzaUphdmFGaWxlOlRyeUluY29tcGxldGUzLmphdmEKKyAgUHNpVHJ5U3RhdGVtZW50CisgICAgUHNpS2V5d29yZDp0cnkoJ3RyeScpCisgICAgUHNpQ29kZUJsb2NrCisgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaUNhdGNoU2VjdGlvbgorICAgICAgUHNpS2V5d29yZDpjYXRjaCgnY2F0Y2gnKQorICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgIFBzaUVycm9yRWxlbWVudDpQYXJhbWV0ZXIgZXhwZWN0ZWQKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lFcnJvckVsZW1lbnQ6JyknIGV4cGVjdGVkCisgICAgICAgIDxlbXB0eSBsaXN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvc3RhdGVtZW50cy9UcnlJbmNvbXBsZXRlNC50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL3N0YXRlbWVudHMvVHJ5SW5jb21wbGV0ZTQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE2MTM5N2IKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL3N0YXRlbWVudHMvVHJ5SW5jb21wbGV0ZTQudHh0CkBAIC0wLDAgKzEsMjAgQEAKK1BzaUphdmFGaWxlOlRyeUluY29tcGxldGU0LmphdmEKKyAgUHNpVHJ5U3RhdGVtZW50CisgICAgUHNpS2V5d29yZDp0cnkoJ3RyeScpCisgICAgUHNpQ29kZUJsb2NrCisgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaUNhdGNoU2VjdGlvbgorICAgICAgUHNpS2V5d29yZDpjYXRjaCgnY2F0Y2gnKQorICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDpFCisgICAgICAgIFBzaUphdmFDb2RlUmVmZXJlbmNlRWxlbWVudDpFCisgICAgICAgICAgUHNpSWRlbnRpZmllcjpFKCdFJykKKyAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUVycm9yRWxlbWVudDpJZGVudGlmaWVyIGV4cGVjdGVkCisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpRXJyb3JFbGVtZW50OicpJyBleHBlY3RlZAorICAgICAgICA8ZW1wdHkgbGlzdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL3N0YXRlbWVudHMvVHJ5SW5jb21wbGV0ZTUudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9zdGF0ZW1lbnRzL1RyeUluY29tcGxldGU1LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNTYwNWE4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9zdGF0ZW1lbnRzL1RyeUluY29tcGxldGU1LnR4dApAQCAtMCwwICsxLDIxIEBACitQc2lKYXZhRmlsZTpUcnlJbmNvbXBsZXRlNS5qYXZhCisgIFBzaVRyeVN0YXRlbWVudAorICAgIFBzaUtleXdvcmQ6dHJ5KCd0cnknKQorICAgIFBzaUNvZGVCbG9jaworICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lDYXRjaFNlY3Rpb24KKyAgICAgIFBzaUtleXdvcmQ6Y2F0Y2goJ2NhdGNoJykKKyAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICBQc2lQYXJhbWV0ZXI6ZQorICAgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgIFBzaVR5cGVFbGVtZW50OkUKKyAgICAgICAgICBQc2lKYXZhQ29kZVJlZmVyZW5jZUVsZW1lbnQ6RQorICAgICAgICAgICAgUHNpSWRlbnRpZmllcjpFKCdFJykKKyAgICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICBQc2lJZGVudGlmaWVyOmUoJ2UnKQorICAgICAgUHNpRXJyb3JFbGVtZW50OicpJyBleHBlY3RlZAorICAgICAgICA8ZW1wdHkgbGlzdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL3N0YXRlbWVudHMvVHJ5SW5jb21wbGV0ZTYudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9zdGF0ZW1lbnRzL1RyeUluY29tcGxldGU2LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yODNhNGY5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9zdGF0ZW1lbnRzL1RyeUluY29tcGxldGU2LnR4dApAQCAtMCwwICsxLDIyIEBACitQc2lKYXZhRmlsZTpUcnlJbmNvbXBsZXRlNi5qYXZhCisgIFBzaVRyeVN0YXRlbWVudAorICAgIFBzaUtleXdvcmQ6dHJ5KCd0cnknKQorICAgIFBzaUNvZGVCbG9jaworICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lDYXRjaFNlY3Rpb24KKyAgICAgIFBzaUtleXdvcmQ6Y2F0Y2goJ2NhdGNoJykKKyAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICBQc2lQYXJhbWV0ZXI6ZQorICAgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgIFBzaVR5cGVFbGVtZW50OkUKKyAgICAgICAgICBQc2lKYXZhQ29kZVJlZmVyZW5jZUVsZW1lbnQ6RQorICAgICAgICAgICAgUHNpSWRlbnRpZmllcjpFKCdFJykKKyAgICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICBQc2lJZGVudGlmaWVyOmUoJ2UnKQorICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaUVycm9yRWxlbWVudDoneycgZXhwZWN0ZWQKKyAgICAgICAgPGVtcHR5IGxpc3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9zdGF0ZW1lbnRzL1RyeUluY29tcGxldGU3LnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvc3RhdGVtZW50cy9UcnlJbmNvbXBsZXRlNy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDI4YjFhNgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvc3RhdGVtZW50cy9UcnlJbmNvbXBsZXRlNy50eHQKQEAgLTAsMCArMSw5IEBACitQc2lKYXZhRmlsZTpUcnlJbmNvbXBsZXRlNy5qYXZhCisgIFBzaVRyeVN0YXRlbWVudAorICAgIFBzaUtleXdvcmQ6dHJ5KCd0cnknKQorICAgIFBzaUNvZGVCbG9jaworICAgICAgUHNpSmF2YVRva2VuOkxCUkFDRSgneycpCisgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKKyAgICBQc2lLZXl3b3JkOmZpbmFsbHkoJ2ZpbmFsbHknKQorICAgIFBzaUVycm9yRWxlbWVudDoneycgZXhwZWN0ZWQKKyAgICAgIDxlbXB0eSBsaXN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvc3RhdGVtZW50cy9UcnlJbmNvbXBsZXRlOC50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL3N0YXRlbWVudHMvVHJ5SW5jb21wbGV0ZTgudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRhMGIxZjQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL3N0YXRlbWVudHMvVHJ5SW5jb21wbGV0ZTgudHh0CkBAIC0wLDAgKzEsMjUgQEAKK1BzaUphdmFGaWxlOlRyeUluY29tcGxldGU4LmphdmEKKyAgUHNpVHJ5U3RhdGVtZW50CisgICAgUHNpS2V5d29yZDp0cnkoJ3RyeScpCisgICAgUHNpQ29kZUJsb2NrCisgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaUNhdGNoU2VjdGlvbgorICAgICAgUHNpS2V5d29yZDpjYXRjaCgnY2F0Y2gnKQorICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDpBfAorICAgICAgICBQc2lUeXBlRWxlbWVudDpBCisgICAgICAgICAgUHNpSmF2YUNvZGVSZWZlcmVuY2VFbGVtZW50OkEKKyAgICAgICAgICAgIFBzaUlkZW50aWZpZXI6QSgnQScpCisgICAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICBQc2lKYXZhVG9rZW46T1IoJ3wnKQorICAgICAgICBQc2lFcnJvckVsZW1lbnQ6SWRlbnRpZmllciBleHBlY3RlZAorICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpRXJyb3JFbGVtZW50OklkZW50aWZpZXIgZXhwZWN0ZWQKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpRXJyb3JFbGVtZW50Oid7JyBleHBlY3RlZAorICAgICAgICA8ZW1wdHkgbGlzdD4KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvc3RhdGVtZW50cy9UcnlJbmNvbXBsZXRlOS50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL3N0YXRlbWVudHMvVHJ5SW5jb21wbGV0ZTkudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhjYTU3YWEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL3N0YXRlbWVudHMvVHJ5SW5jb21wbGV0ZTkudHh0CkBAIC0wLDAgKzEsMjggQEAKK1BzaUphdmFGaWxlOlRyeUluY29tcGxldGU5LmphdmEKKyAgUHNpVHJ5U3RhdGVtZW50CisgICAgUHNpS2V5d29yZDp0cnkoJ3RyeScpCisgICAgUHNpQ29kZUJsb2NrCisgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaUNhdGNoU2VjdGlvbgorICAgICAgUHNpS2V5d29yZDpjYXRjaCgnY2F0Y2gnKQorICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lUeXBlRWxlbWVudDpBfEIKKyAgICAgICAgUHNpVHlwZUVsZW1lbnQ6QQorICAgICAgICAgIFBzaUphdmFDb2RlUmVmZXJlbmNlRWxlbWVudDpBCisgICAgICAgICAgICBQc2lJZGVudGlmaWVyOkEoJ0EnKQorICAgICAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgUHNpSmF2YVRva2VuOk9SKCd8JykKKyAgICAgICAgUHNpVHlwZUVsZW1lbnQ6QgorICAgICAgICAgIFBzaUphdmFDb2RlUmVmZXJlbmNlRWxlbWVudDpCCisgICAgICAgICAgICBQc2lJZGVudGlmaWVyOkIoJ0InKQorICAgICAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUVycm9yRWxlbWVudDpJZGVudGlmaWVyIGV4cGVjdGVkCisgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaUVycm9yRWxlbWVudDoneycgZXhwZWN0ZWQKKyAgICAgICAgPGVtcHR5IGxpc3Q+CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL3N0YXRlbWVudHMvVHJ5Tm9ybWFsMC50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL3N0YXRlbWVudHMvVHJ5Tm9ybWFsMC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTNkMTVlOAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvc3RhdGVtZW50cy9UcnlOb3JtYWwwLnR4dApAQCAtMCwwICsxLDIzIEBACitQc2lKYXZhRmlsZTpUcnlOb3JtYWwwLmphdmEKKyAgUHNpVHJ5U3RhdGVtZW50CisgICAgUHNpS2V5d29yZDp0cnkoJ3RyeScpCisgICAgUHNpQ29kZUJsb2NrCisgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaUNhdGNoU2VjdGlvbgorICAgICAgUHNpS2V5d29yZDpjYXRjaCgnY2F0Y2gnKQorICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgIFBzaVBhcmFtZXRlcjplCisgICAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgUHNpVHlwZUVsZW1lbnQ6RQorICAgICAgICAgIFBzaUphdmFDb2RlUmVmZXJlbmNlRWxlbWVudDpFCisgICAgICAgICAgICBQc2lJZGVudGlmaWVyOkUoJ0UnKQorICAgICAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgIFBzaUlkZW50aWZpZXI6ZSgnZScpCisgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpQ29kZUJsb2NrCisgICAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgICBQc2lKYXZhVG9rZW46UkJSQUNFKCd9JykKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL3N0YXRlbWVudHMvVHJ5Tm9ybWFsMS50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL3N0YXRlbWVudHMvVHJ5Tm9ybWFsMS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWJmNGRjNgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvc3RhdGVtZW50cy9UcnlOb3JtYWwxLnR4dApAQCAtMCwwICsxLDI4IEBACitQc2lKYXZhRmlsZTpUcnlOb3JtYWwxLmphdmEKKyAgUHNpVHJ5U3RhdGVtZW50CisgICAgUHNpS2V5d29yZDp0cnkoJ3RyeScpCisgICAgUHNpQ29kZUJsb2NrCisgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaUNhdGNoU2VjdGlvbgorICAgICAgUHNpS2V5d29yZDpjYXRjaCgnY2F0Y2gnKQorICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgIFBzaVBhcmFtZXRlcjplCisgICAgICAgIFBzaU1vZGlmaWVyTGlzdDpmaW5hbAorICAgICAgICAgIFBzaUtleXdvcmQ6ZmluYWwoJ2ZpbmFsJykKKyAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgIFBzaVR5cGVFbGVtZW50OkUKKyAgICAgICAgICBQc2lKYXZhQ29kZVJlZmVyZW5jZUVsZW1lbnQ6RQorICAgICAgICAgICAgUHNpSWRlbnRpZmllcjpFKCdFJykKKyAgICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICBQc2lJZGVudGlmaWVyOmUoJ2UnKQorICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpS2V5d29yZDpmaW5hbGx5KCdmaW5hbGx5JykKKyAgICBQc2lDb2RlQmxvY2sKKyAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL3N0YXRlbWVudHMvVHJ5Tm9ybWFsMi50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL3N0YXRlbWVudHMvVHJ5Tm9ybWFsMi50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWFiODM3MgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvc3RhdGVtZW50cy9UcnlOb3JtYWwyLnR4dApAQCAtMCwwICsxLDEwIEBACitQc2lKYXZhRmlsZTpUcnlOb3JtYWwyLmphdmEKKyAgUHNpVHJ5U3RhdGVtZW50CisgICAgUHNpS2V5d29yZDp0cnkoJ3RyeScpCisgICAgUHNpQ29kZUJsb2NrCisgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQorICAgIFBzaUtleXdvcmQ6ZmluYWxseSgnZmluYWxseScpCisgICAgUHNpQ29kZUJsb2NrCisgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvc3RhdGVtZW50cy9UcnlOb3JtYWwzLnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvc3RhdGVtZW50cy9UcnlOb3JtYWwzLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NmEwNmFkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9zdGF0ZW1lbnRzL1RyeU5vcm1hbDMudHh0CkBAIC0wLDAgKzEsMzAgQEAKK1BzaUphdmFGaWxlOlRyeU5vcm1hbDMuamF2YQorICBQc2lUcnlTdGF0ZW1lbnQKKyAgICBQc2lLZXl3b3JkOnRyeSgndHJ5JykKKyAgICBQc2lDb2RlQmxvY2sKKyAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCisgICAgUHNpQ2F0Y2hTZWN0aW9uCisgICAgICBQc2lLZXl3b3JkOmNhdGNoKCdjYXRjaCcpCisgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgUHNpUGFyYW1ldGVyOmUKKyAgICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICBQc2lUeXBlRWxlbWVudDpBfEIKKyAgICAgICAgICBQc2lUeXBlRWxlbWVudDpBCisgICAgICAgICAgICBQc2lKYXZhQ29kZVJlZmVyZW5jZUVsZW1lbnQ6QQorICAgICAgICAgICAgICBQc2lJZGVudGlmaWVyOkEoJ0EnKQorICAgICAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgUHNpSmF2YVRva2VuOk9SKCd8JykKKyAgICAgICAgICBQc2lUeXBlRWxlbWVudDpCCisgICAgICAgICAgICBQc2lKYXZhQ29kZVJlZmVyZW5jZUVsZW1lbnQ6QgorICAgICAgICAgICAgICBQc2lJZGVudGlmaWVyOkIoJ0InKQorICAgICAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICBQc2lJZGVudGlmaWVyOmUoJ2UnKQorICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaUNvZGVCbG9jaworICAgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL3N0YXRlbWVudHMvVHJ5Tm9ybWFsNC50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL3N0YXRlbWVudHMvVHJ5Tm9ybWFsNC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzVhOGY1ZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvc3RhdGVtZW50cy9UcnlOb3JtYWw0LnR4dApAQCAtMCwwICsxLDI0IEBACitQc2lKYXZhRmlsZTpUcnlOb3JtYWw0LmphdmEKKyAgUHNpVHJ5U3RhdGVtZW50CisgICAgUHNpS2V5d29yZDp0cnkoJ3RyeScpCisgICAgUHNpUmVzb3VyY2VMaXN0OihSIHIgPSAwKQorICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgIFBzaVJlc291cmNlVmFyaWFibGU6cgorICAgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgIFBzaVR5cGVFbGVtZW50OlIKKyAgICAgICAgICBQc2lKYXZhQ29kZVJlZmVyZW5jZUVsZW1lbnQ6UgorICAgICAgICAgICAgUHNpSWRlbnRpZmllcjpSKCdSJykKKyAgICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICBQc2lJZGVudGlmaWVyOnIoJ3InKQorICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgICAgUHNpSmF2YVRva2VuOkVRKCc9JykKKyAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgIFBzaUxpdGVyYWxFeHByZXNzaW9uOjAKKyAgICAgICAgICBQc2lKYXZhVG9rZW46SU5URUdFUl9MSVRFUkFMKCcwJykKKyAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgUHNpQ29kZUJsb2NrCisgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9zdGF0ZW1lbnRzL1RyeU5vcm1hbDUudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9zdGF0ZW1lbnRzL1RyeU5vcm1hbDUudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdhMDlmNzEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL3N0YXRlbWVudHMvVHJ5Tm9ybWFsNS50eHQKQEAgLTAsMCArMSw0MSBAQAorUHNpSmF2YUZpbGU6VHJ5Tm9ybWFsNS5qYXZhCisgIFBzaVRyeVN0YXRlbWVudAorICAgIFBzaUtleXdvcmQ6dHJ5KCd0cnknKQorICAgIFBzaVJlc291cmNlTGlzdDooUjEgcjEgPSAxOyBSMiByMiA9IDIpCisgICAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgICAgUHNpUmVzb3VyY2VWYXJpYWJsZTpyMQorICAgICAgICBQc2lNb2RpZmllckxpc3Q6CisgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgIFBzaVR5cGVFbGVtZW50OlIxCisgICAgICAgICAgUHNpSmF2YUNvZGVSZWZlcmVuY2VFbGVtZW50OlIxCisgICAgICAgICAgICBQc2lJZGVudGlmaWVyOlIxKCdSMScpCisgICAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgICAgUHNpSWRlbnRpZmllcjpyMSgncjEnKQorICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgICAgUHNpSmF2YVRva2VuOkVRKCc9JykKKyAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgIFBzaUxpdGVyYWxFeHByZXNzaW9uOjEKKyAgICAgICAgICBQc2lKYXZhVG9rZW46SU5URUdFUl9MSVRFUkFMKCcxJykKKyAgICAgIFBzaUphdmFUb2tlbjpTRU1JQ09MT04oJzsnKQorICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICBQc2lSZXNvdXJjZVZhcmlhYmxlOnIyCisgICAgICAgIFBzaU1vZGlmaWVyTGlzdDoKKyAgICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgICAgUHNpVHlwZUVsZW1lbnQ6UjIKKyAgICAgICAgICBQc2lKYXZhQ29kZVJlZmVyZW5jZUVsZW1lbnQ6UjIKKyAgICAgICAgICAgIFBzaUlkZW50aWZpZXI6UjIoJ1IyJykKKyAgICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICBQc2lJZGVudGlmaWVyOnIyKCdyMicpCisgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICBQc2lKYXZhVG9rZW46RVEoJz0nKQorICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgICAgUHNpTGl0ZXJhbEV4cHJlc3Npb246MgorICAgICAgICAgIFBzaUphdmFUb2tlbjpJTlRFR0VSX0xJVEVSQUwoJzInKQorICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICBQc2lDb2RlQmxvY2sKKyAgICAgIFBzaUphdmFUb2tlbjpMQlJBQ0UoJ3snKQorICAgICAgUHNpSmF2YVRva2VuOlJCUkFDRSgnfScpCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL3N0YXRlbWVudHMvVHJ5Tm9ybWFsNi50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL3N0YXRlbWVudHMvVHJ5Tm9ybWFsNi50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjcyNjUyZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvc3RhdGVtZW50cy9UcnlOb3JtYWw2LnR4dApAQCAtMCwwICsxLDI1IEBACitQc2lKYXZhRmlsZTpUcnlOb3JtYWw2LmphdmEKKyAgUHNpVHJ5U3RhdGVtZW50CisgICAgUHNpS2V5d29yZDp0cnkoJ3RyeScpCisgICAgUHNpUmVzb3VyY2VMaXN0OihSIHIgPSAwOykKKyAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICBQc2lSZXNvdXJjZVZhcmlhYmxlOnIKKyAgICAgICAgUHNpTW9kaWZpZXJMaXN0OgorICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICBQc2lUeXBlRWxlbWVudDpSCisgICAgICAgICAgUHNpSmF2YUNvZGVSZWZlcmVuY2VFbGVtZW50OlIKKyAgICAgICAgICAgIFBzaUlkZW50aWZpZXI6UignUicpCisgICAgICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICAgICAgUHNpSWRlbnRpZmllcjpyKCdyJykKKyAgICAgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgICAgIFBzaUphdmFUb2tlbjpFUSgnPScpCisgICAgICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgICAgICBQc2lMaXRlcmFsRXhwcmVzc2lvbjowCisgICAgICAgICAgUHNpSmF2YVRva2VuOklOVEVHRVJfTElURVJBTCgnMCcpCisgICAgICBQc2lKYXZhVG9rZW46U0VNSUNPTE9OKCc7JykKKyAgICAgIFBzaUphdmFUb2tlbjpSUEFSRU5USCgnKScpCisgICAgUHNpQ29kZUJsb2NrCisgICAgICBQc2lKYXZhVG9rZW46TEJSQUNFKCd7JykKKyAgICAgIFBzaUphdmFUb2tlbjpSQlJBQ0UoJ30nKQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvc3RhdGVtZW50cy9XaGlsZUluY29tcGxldGUwLnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvc3RhdGVtZW50cy9XaGlsZUluY29tcGxldGUwLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNWQwM2JlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9zdGF0ZW1lbnRzL1doaWxlSW5jb21wbGV0ZTAudHh0CkBAIC0wLDAgKzEsNSBAQAorUHNpSmF2YUZpbGU6V2hpbGVJbmNvbXBsZXRlMC5qYXZhCisgIFBzaVdoaWxlU3RhdGVtZW50CisgICAgUHNpS2V5d29yZDp3aGlsZSgnd2hpbGUnKQorICAgIFBzaUVycm9yRWxlbWVudDonKCcgZXhwZWN0ZWQKKyAgICAgIDxlbXB0eSBsaXN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvc3RhdGVtZW50cy9XaGlsZUluY29tcGxldGUxLnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvc3RhdGVtZW50cy9XaGlsZUluY29tcGxldGUxLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNzcyYzYxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9zdGF0ZW1lbnRzL1doaWxlSW5jb21wbGV0ZTEudHh0CkBAIC0wLDAgKzEsNyBAQAorUHNpSmF2YUZpbGU6V2hpbGVJbmNvbXBsZXRlMS5qYXZhCisgIFBzaVdoaWxlU3RhdGVtZW50CisgICAgUHNpS2V5d29yZDp3aGlsZSgnd2hpbGUnKQorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgUHNpRXJyb3JFbGVtZW50OkV4cHJlc3Npb24gZXhwZWN0ZWQKKyAgICAgIDxlbXB0eSBsaXN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvc3RhdGVtZW50cy9XaGlsZUluY29tcGxldGUyLnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvc3RhdGVtZW50cy9XaGlsZUluY29tcGxldGUyLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNjA0N2Q5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9zdGF0ZW1lbnRzL1doaWxlSW5jb21wbGV0ZTIudHh0CkBAIC0wLDAgKzEsMTcgQEAKK1BzaUphdmFGaWxlOldoaWxlSW5jb21wbGV0ZTIuamF2YQorICBQc2lXaGlsZVN0YXRlbWVudAorICAgIFBzaUtleXdvcmQ6d2hpbGUoJ3doaWxlJykKKyAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgIFBzaUVycm9yRWxlbWVudDpFeHByZXNzaW9uIGV4cGVjdGVkCisgICAgICA8ZW1wdHkgbGlzdD4KKyAgUHNpV2hpdGVTcGFjZSgnXG4gJykKKyAgUHNpRXhwcmVzc2lvblN0YXRlbWVudAorICAgIFBzaU1ldGhvZENhbGxFeHByZXNzaW9uOmZvbygpCisgICAgICBQc2lSZWZlcmVuY2VFeHByZXNzaW9uOmZvbworICAgICAgICBQc2lSZWZlcmVuY2VQYXJhbWV0ZXJMaXN0CisgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgUHNpRXhwcmVzc2lvbkxpc3QKKyAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICBQc2lKYXZhVG9rZW46U0VNSUNPTE9OKCc7JykKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL3N0YXRlbWVudHMvV2hpbGVJbmNvbXBsZXRlMy50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL3N0YXRlbWVudHMvV2hpbGVJbmNvbXBsZXRlMy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDJlNTk1YgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvc3RhdGVtZW50cy9XaGlsZUluY29tcGxldGUzLnR4dApAQCAtMCwwICsxLDEwIEBACitQc2lKYXZhRmlsZTpXaGlsZUluY29tcGxldGUzLmphdmEKKyAgUHNpV2hpbGVTdGF0ZW1lbnQKKyAgICBQc2lLZXl3b3JkOndoaWxlKCd3aGlsZScpCisgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICBQc2lSZWZlcmVuY2VFeHByZXNzaW9uOmNvbmQKKyAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICBQc2lJZGVudGlmaWVyOmNvbmQoJ2NvbmQnKQorICAgIFBzaUVycm9yRWxlbWVudDonKScgZXhwZWN0ZWQKKyAgICAgIDxlbXB0eSBsaXN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvc3RhdGVtZW50cy9XaGlsZUluY29tcGxldGU0LnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvc3RhdGVtZW50cy9XaGlsZUluY29tcGxldGU0LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYzEyZjcyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9wYXJzZXItcGFydGlhbC9zdGF0ZW1lbnRzL1doaWxlSW5jb21wbGV0ZTQudHh0CkBAIC0wLDAgKzEsMTEgQEAKK1BzaUphdmFGaWxlOldoaWxlSW5jb21wbGV0ZTQuamF2YQorICBQc2lXaGlsZVN0YXRlbWVudAorICAgIFBzaUtleXdvcmQ6d2hpbGUoJ3doaWxlJykKKyAgICBQc2lKYXZhVG9rZW46TFBBUkVOVEgoJygnKQorICAgIFBzaVJlZmVyZW5jZUV4cHJlc3Npb246Y29uZAorICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICA8ZW1wdHkgbGlzdD4KKyAgICAgIFBzaUlkZW50aWZpZXI6Y29uZCgnY29uZCcpCisgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICBQc2lFcnJvckVsZW1lbnQ6U3RhdGVtZW50IGV4cGVjdGVkCisgICAgICA8ZW1wdHkgbGlzdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL3N0YXRlbWVudHMvV2hpbGVJbmNvbXBsZXRlNS50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL3N0YXRlbWVudHMvV2hpbGVJbmNvbXBsZXRlNS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTI2NTQ2MgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvc3RhdGVtZW50cy9XaGlsZUluY29tcGxldGU1LnR4dApAQCAtMCwwICsxLDE4IEBACitQc2lKYXZhRmlsZTpXaGlsZUluY29tcGxldGU1LmphdmEKKyAgUHNpV2hpbGVTdGF0ZW1lbnQKKyAgICBQc2lLZXl3b3JkOndoaWxlKCd3aGlsZScpCisgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICBQc2lFcnJvckVsZW1lbnQ6RXhwcmVzc2lvbiBleHBlY3RlZAorICAgICAgPGVtcHR5IGxpc3Q+CisgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICBQc2lXaGl0ZVNwYWNlKCcgJykKKyAgICBQc2lFeHByZXNzaW9uU3RhdGVtZW50CisgICAgICBQc2lNZXRob2RDYWxsRXhwcmVzc2lvbjpmb28oKQorICAgICAgICBQc2lSZWZlcmVuY2VFeHByZXNzaW9uOmZvbworICAgICAgICAgIFBzaVJlZmVyZW5jZVBhcmFtZXRlckxpc3QKKyAgICAgICAgICAgIDxlbXB0eSBsaXN0PgorICAgICAgICAgIFBzaUlkZW50aWZpZXI6Zm9vKCdmb28nKQorICAgICAgICBQc2lFeHByZXNzaW9uTGlzdAorICAgICAgICAgIFBzaUphdmFUb2tlbjpMUEFSRU5USCgnKCcpCisgICAgICAgICAgUHNpSmF2YVRva2VuOlJQQVJFTlRIKCcpJykKKyAgICAgIFBzaUphdmFUb2tlbjpTRU1JQ09MT04oJzsnKQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcGFyc2VyLXBhcnRpYWwvc3RhdGVtZW50cy9XaGlsZU5vcm1hbC50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL3N0YXRlbWVudHMvV2hpbGVOb3JtYWwudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMwYWVhYmMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3BhcnNlci1wYXJ0aWFsL3N0YXRlbWVudHMvV2hpbGVOb3JtYWwudHh0CkBAIC0wLDAgKzEsMTkgQEAKK1BzaUphdmFGaWxlOldoaWxlTm9ybWFsLmphdmEKKyAgUHNpV2hpbGVTdGF0ZW1lbnQKKyAgICBQc2lLZXl3b3JkOndoaWxlKCd3aGlsZScpCisgICAgUHNpV2hpdGVTcGFjZSgnICcpCisgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICBQc2lMaXRlcmFsRXhwcmVzc2lvbjp0cnVlCisgICAgICBQc2lKYXZhVG9rZW46VFJVRV9LRVlXT1JEKCd0cnVlJykKKyAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgIFBzaVdoaXRlU3BhY2UoJyAnKQorICAgIFBzaUV4cHJlc3Npb25TdGF0ZW1lbnQKKyAgICAgIFBzaU1ldGhvZENhbGxFeHByZXNzaW9uOmZvbygpCisgICAgICAgIFBzaVJlZmVyZW5jZUV4cHJlc3Npb246Zm9vCisgICAgICAgICAgUHNpUmVmZXJlbmNlUGFyYW1ldGVyTGlzdAorICAgICAgICAgICAgPGVtcHR5IGxpc3Q+CisgICAgICAgICAgUHNpSWRlbnRpZmllcjpmb28oJ2ZvbycpCisgICAgICAgIFBzaUV4cHJlc3Npb25MaXN0CisgICAgICAgICAgUHNpSmF2YVRva2VuOkxQQVJFTlRIKCcoJykKKyAgICAgICAgICBQc2lKYXZhVG9rZW46UlBBUkVOVEgoJyknKQorICAgICAgUHNpSmF2YVRva2VuOlNFTUlDT0xPTignOycpClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXBvc2l0b3J5VXNlL2Nscy9qYXZhL2xhbmcvQm9vbGVhbi5jbGFzcyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVwb3NpdG9yeVVzZS9jbHMvamF2YS9sYW5nL0Jvb2xlYW4uY2xhc3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDVkMjdiMAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVwb3NpdG9yeVVzZS9jbHMvamF2YS9sYW5nL0Jvb2xlYW4uY2xhc3MKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXBvc2l0b3J5VXNlL2Nscy9qYXZhL2xhbmcvQnl0ZS5jbGFzcyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVwb3NpdG9yeVVzZS9jbHMvamF2YS9sYW5nL0J5dGUuY2xhc3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmEzMGQyNQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVwb3NpdG9yeVVzZS9jbHMvamF2YS9sYW5nL0J5dGUuY2xhc3MKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXBvc2l0b3J5VXNlL2Nscy9qYXZhL2xhbmcvQ2hhcmFjdGVyJFN1YnNldC5jbGFzcyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVwb3NpdG9yeVVzZS9jbHMvamF2YS9sYW5nL0NoYXJhY3RlciRTdWJzZXQuY2xhc3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjRjMDMxMAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVwb3NpdG9yeVVzZS9jbHMvamF2YS9sYW5nL0NoYXJhY3RlciRTdWJzZXQuY2xhc3MKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXBvc2l0b3J5VXNlL2Nscy9qYXZhL2xhbmcvQ2hhcmFjdGVyJFVuaWNvZGVCbG9jay5jbGFzcyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVwb3NpdG9yeVVzZS9jbHMvamF2YS9sYW5nL0NoYXJhY3RlciRVbmljb2RlQmxvY2suY2xhc3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2RlMTBjZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVwb3NpdG9yeVVzZS9jbHMvamF2YS9sYW5nL0NoYXJhY3RlciRVbmljb2RlQmxvY2suY2xhc3MKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXBvc2l0b3J5VXNlL2Nscy9qYXZhL2xhbmcvQ2hhcmFjdGVyLmNsYXNzIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXBvc2l0b3J5VXNlL2Nscy9qYXZhL2xhbmcvQ2hhcmFjdGVyLmNsYXNzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE1NTA2N2MKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3JlcG9zaXRvcnlVc2UvY2xzL2phdmEvbGFuZy9DaGFyYWN0ZXIuY2xhc3MKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXBvc2l0b3J5VXNlL2Nscy9qYXZhL2xhbmcvQ2xhc3MuY2xhc3MgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3JlcG9zaXRvcnlVc2UvY2xzL2phdmEvbGFuZy9DbGFzcy5jbGFzcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNWQ5NGFkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXBvc2l0b3J5VXNlL2Nscy9qYXZhL2xhbmcvQ2xhc3MuY2xhc3MKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXBvc2l0b3J5VXNlL2Nscy9qYXZhL2xhbmcvQ2xhc3NMb2FkZXIuY2xhc3MgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3JlcG9zaXRvcnlVc2UvY2xzL2phdmEvbGFuZy9DbGFzc0xvYWRlci5jbGFzcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMDYzMjQzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXBvc2l0b3J5VXNlL2Nscy9qYXZhL2xhbmcvQ2xhc3NMb2FkZXIuY2xhc3MKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXBvc2l0b3J5VXNlL2Nscy9qYXZhL2xhbmcvQ29tcGFyYWJsZS5jbGFzcyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVwb3NpdG9yeVVzZS9jbHMvamF2YS9sYW5nL0NvbXBhcmFibGUuY2xhc3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTg1MzllYwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVwb3NpdG9yeVVzZS9jbHMvamF2YS9sYW5nL0NvbXBhcmFibGUuY2xhc3MKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXBvc2l0b3J5VXNlL2Nscy9qYXZhL2xhbmcvRG91YmxlLmNsYXNzIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXBvc2l0b3J5VXNlL2Nscy9qYXZhL2xhbmcvRG91YmxlLmNsYXNzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjllMWVjYmUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3JlcG9zaXRvcnlVc2UvY2xzL2phdmEvbGFuZy9Eb3VibGUuY2xhc3MKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXBvc2l0b3J5VXNlL2Nscy9qYXZhL2xhbmcvRW51bS5jbGFzcyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVwb3NpdG9yeVVzZS9jbHMvamF2YS9sYW5nL0VudW0uY2xhc3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2M4NTIzNgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVwb3NpdG9yeVVzZS9jbHMvamF2YS9sYW5nL0VudW0uY2xhc3MKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXBvc2l0b3J5VXNlL2Nscy9qYXZhL2xhbmcvRmxvYXQuY2xhc3MgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3JlcG9zaXRvcnlVc2UvY2xzL2phdmEvbGFuZy9GbG9hdC5jbGFzcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zODE5MDIwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXBvc2l0b3J5VXNlL2Nscy9qYXZhL2xhbmcvRmxvYXQuY2xhc3MKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXBvc2l0b3J5VXNlL2Nscy9qYXZhL2xhbmcvSW50ZWdlci5jbGFzcyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVwb3NpdG9yeVVzZS9jbHMvamF2YS9sYW5nL0ludGVnZXIuY2xhc3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDgxNDQyYwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVwb3NpdG9yeVVzZS9jbHMvamF2YS9sYW5nL0ludGVnZXIuY2xhc3MKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXBvc2l0b3J5VXNlL2Nscy9qYXZhL2xhbmcvSXRlcmFibGUuY2xhc3MgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3JlcG9zaXRvcnlVc2UvY2xzL2phdmEvbGFuZy9JdGVyYWJsZS5jbGFzcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZmE3YmU0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXBvc2l0b3J5VXNlL2Nscy9qYXZhL2xhbmcvSXRlcmFibGUuY2xhc3MKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXBvc2l0b3J5VXNlL2Nscy9qYXZhL2xhbmcvTG9uZy5jbGFzcyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVwb3NpdG9yeVVzZS9jbHMvamF2YS9sYW5nL0xvbmcuY2xhc3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTNjZmQ5OQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVwb3NpdG9yeVVzZS9jbHMvamF2YS9sYW5nL0xvbmcuY2xhc3MKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXBvc2l0b3J5VXNlL2Nscy9qYXZhL2xhbmcvT2JqZWN0LmNsYXNzIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXBvc2l0b3J5VXNlL2Nscy9qYXZhL2xhbmcvT2JqZWN0LmNsYXNzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVmMDA5MTYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3JlcG9zaXRvcnlVc2UvY2xzL2phdmEvbGFuZy9PYmplY3QuY2xhc3MKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXBvc2l0b3J5VXNlL2Nscy9qYXZhL2xhbmcvU2hvcnQuY2xhc3MgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3JlcG9zaXRvcnlVc2UvY2xzL2phdmEvbGFuZy9TaG9ydC5jbGFzcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZmIyZDlkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXBvc2l0b3J5VXNlL2Nscy9qYXZhL2xhbmcvU2hvcnQuY2xhc3MKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXBvc2l0b3J5VXNlL2Nscy9qYXZhL2xhbmcvU2ltcGxlSXRlcmF0b3IuY2xhc3MgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3JlcG9zaXRvcnlVc2UvY2xzL2phdmEvbGFuZy9TaW1wbGVJdGVyYXRvci5jbGFzcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYTdhZDNkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXBvc2l0b3J5VXNlL2Nscy9qYXZhL2xhbmcvU2ltcGxlSXRlcmF0b3IuY2xhc3MKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXBvc2l0b3J5VXNlL2Nscy9qYXZhL2xhbmcvU3RyaW5nLmNsYXNzIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXBvc2l0b3J5VXNlL2Nscy9qYXZhL2xhbmcvU3RyaW5nLmNsYXNzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA4YmQwZDMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3JlcG9zaXRvcnlVc2UvY2xzL2phdmEvbGFuZy9TdHJpbmcuY2xhc3MKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXBvc2l0b3J5VXNlL2Nscy9qYXZhL2xhbmcvVGhyZWFkTG9jYWwuY2xhc3MgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3JlcG9zaXRvcnlVc2UvY2xzL2phdmEvbGFuZy9UaHJlYWRMb2NhbC5jbGFzcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZWM4ZmM0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXBvc2l0b3J5VXNlL2Nscy9qYXZhL2xhbmcvVGhyZWFkTG9jYWwuY2xhc3MKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXBvc2l0b3J5VXNlL2Nscy9qYXZhL2xhbmcvVm9pZC5jbGFzcyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVwb3NpdG9yeVVzZS9jbHMvamF2YS9sYW5nL1ZvaWQuY2xhc3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzg5YTgzZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVwb3NpdG9yeVVzZS9jbHMvamF2YS9sYW5nL1ZvaWQuY2xhc3MKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXBvc2l0b3J5VXNlL2Nscy9qYXZhL2xhbmcvcmVmL1BoYW50b21SZWZlcmVuY2UuY2xhc3MgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3JlcG9zaXRvcnlVc2UvY2xzL2phdmEvbGFuZy9yZWYvUGhhbnRvbVJlZmVyZW5jZS5jbGFzcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zM2FiZDEyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXBvc2l0b3J5VXNlL2Nscy9qYXZhL2xhbmcvcmVmL1BoYW50b21SZWZlcmVuY2UuY2xhc3MKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXBvc2l0b3J5VXNlL2Nscy9qYXZhL2xhbmcvcmVmL1JlZmVyZW5jZS5jbGFzcyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVwb3NpdG9yeVVzZS9jbHMvamF2YS9sYW5nL3JlZi9SZWZlcmVuY2UuY2xhc3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTdmZjA5NwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVwb3NpdG9yeVVzZS9jbHMvamF2YS9sYW5nL3JlZi9SZWZlcmVuY2UuY2xhc3MKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXBvc2l0b3J5VXNlL2Nscy9qYXZhL2xhbmcvcmVmL1JlZmVyZW5jZVF1ZXVlLmNsYXNzIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXBvc2l0b3J5VXNlL2Nscy9qYXZhL2xhbmcvcmVmL1JlZmVyZW5jZVF1ZXVlLmNsYXNzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAzZTQyYjkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3JlcG9zaXRvcnlVc2UvY2xzL2phdmEvbGFuZy9yZWYvUmVmZXJlbmNlUXVldWUuY2xhc3MKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXBvc2l0b3J5VXNlL2Nscy9qYXZhL2xhbmcvcmVmL1NvZnRSZWZlcmVuY2UuY2xhc3MgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3JlcG9zaXRvcnlVc2UvY2xzL2phdmEvbGFuZy9yZWYvU29mdFJlZmVyZW5jZS5jbGFzcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wODdlYzI0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXBvc2l0b3J5VXNlL2Nscy9qYXZhL2xhbmcvcmVmL1NvZnRSZWZlcmVuY2UuY2xhc3MKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXBvc2l0b3J5VXNlL2Nscy9qYXZhL2xhbmcvcmVmL1dlYWtSZWZlcmVuY2UuY2xhc3MgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3JlcG9zaXRvcnlVc2UvY2xzL2phdmEvbGFuZy9yZWYvV2Vha1JlZmVyZW5jZS5jbGFzcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYWIwZmU5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXBvc2l0b3J5VXNlL2Nscy9qYXZhL2xhbmcvcmVmL1dlYWtSZWZlcmVuY2UuY2xhc3MKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXBvc2l0b3J5VXNlL2Nscy9qYXZhL2xhbmcvcmVmbGVjdC9BY2Nlc3NpYmxlT2JqZWN0LmNsYXNzIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXBvc2l0b3J5VXNlL2Nscy9qYXZhL2xhbmcvcmVmbGVjdC9BY2Nlc3NpYmxlT2JqZWN0LmNsYXNzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ3ZGUzMjMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3JlcG9zaXRvcnlVc2UvY2xzL2phdmEvbGFuZy9yZWZsZWN0L0FjY2Vzc2libGVPYmplY3QuY2xhc3MKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXBvc2l0b3J5VXNlL2Nscy9qYXZhL2xhbmcvcmVmbGVjdC9BcnJheS5jbGFzcyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVwb3NpdG9yeVVzZS9jbHMvamF2YS9sYW5nL3JlZmxlY3QvQXJyYXkuY2xhc3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDI0Y2E3MQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVwb3NpdG9yeVVzZS9jbHMvamF2YS9sYW5nL3JlZmxlY3QvQXJyYXkuY2xhc3MKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXBvc2l0b3J5VXNlL2Nscy9qYXZhL2xhbmcvcmVmbGVjdC9Db25zdHJ1Y3Rvci5jbGFzcyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVwb3NpdG9yeVVzZS9jbHMvamF2YS9sYW5nL3JlZmxlY3QvQ29uc3RydWN0b3IuY2xhc3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGU2NjFlYgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVwb3NpdG9yeVVzZS9jbHMvamF2YS9sYW5nL3JlZmxlY3QvQ29uc3RydWN0b3IuY2xhc3MKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXBvc2l0b3J5VXNlL2Nscy9qYXZhL2xhbmcvcmVmbGVjdC9GaWVsZC5jbGFzcyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVwb3NpdG9yeVVzZS9jbHMvamF2YS9sYW5nL3JlZmxlY3QvRmllbGQuY2xhc3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzRlOTZjZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVwb3NpdG9yeVVzZS9jbHMvamF2YS9sYW5nL3JlZmxlY3QvRmllbGQuY2xhc3MKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXBvc2l0b3J5VXNlL2Nscy9qYXZhL2xhbmcvcmVmbGVjdC9JbnZvY2F0aW9uSGFuZGxlci5jbGFzcyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVwb3NpdG9yeVVzZS9jbHMvamF2YS9sYW5nL3JlZmxlY3QvSW52b2NhdGlvbkhhbmRsZXIuY2xhc3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDYyNzY5MQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVwb3NpdG9yeVVzZS9jbHMvamF2YS9sYW5nL3JlZmxlY3QvSW52b2NhdGlvbkhhbmRsZXIuY2xhc3MKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXBvc2l0b3J5VXNlL2Nscy9qYXZhL2xhbmcvcmVmbGVjdC9JbnZvY2F0aW9uVGFyZ2V0RXhjZXB0aW9uLmNsYXNzIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXBvc2l0b3J5VXNlL2Nscy9qYXZhL2xhbmcvcmVmbGVjdC9JbnZvY2F0aW9uVGFyZ2V0RXhjZXB0aW9uLmNsYXNzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEwY2QxYmQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3JlcG9zaXRvcnlVc2UvY2xzL2phdmEvbGFuZy9yZWZsZWN0L0ludm9jYXRpb25UYXJnZXRFeGNlcHRpb24uY2xhc3MKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXBvc2l0b3J5VXNlL2Nscy9qYXZhL2xhbmcvcmVmbGVjdC9NZW1iZXIuY2xhc3MgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3JlcG9zaXRvcnlVc2UvY2xzL2phdmEvbGFuZy9yZWZsZWN0L01lbWJlci5jbGFzcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMjQ5YTM5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXBvc2l0b3J5VXNlL2Nscy9qYXZhL2xhbmcvcmVmbGVjdC9NZW1iZXIuY2xhc3MKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXBvc2l0b3J5VXNlL2Nscy9qYXZhL2xhbmcvcmVmbGVjdC9NZXRob2QuY2xhc3MgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3JlcG9zaXRvcnlVc2UvY2xzL2phdmEvbGFuZy9yZWZsZWN0L01ldGhvZC5jbGFzcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yM2Y0NjRkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXBvc2l0b3J5VXNlL2Nscy9qYXZhL2xhbmcvcmVmbGVjdC9NZXRob2QuY2xhc3MKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXBvc2l0b3J5VXNlL2Nscy9qYXZhL2xhbmcvcmVmbGVjdC9Nb2RpZmllci5jbGFzcyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVwb3NpdG9yeVVzZS9jbHMvamF2YS9sYW5nL3JlZmxlY3QvTW9kaWZpZXIuY2xhc3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDRlMGZhMAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVwb3NpdG9yeVVzZS9jbHMvamF2YS9sYW5nL3JlZmxlY3QvTW9kaWZpZXIuY2xhc3MKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXBvc2l0b3J5VXNlL2Nscy9qYXZhL2xhbmcvcmVmbGVjdC9Qcm94eS5jbGFzcyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVwb3NpdG9yeVVzZS9jbHMvamF2YS9sYW5nL3JlZmxlY3QvUHJveHkuY2xhc3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTcxYTY2OQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVwb3NpdG9yeVVzZS9jbHMvamF2YS9sYW5nL3JlZmxlY3QvUHJveHkuY2xhc3MKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXBvc2l0b3J5VXNlL2Nscy9qYXZhL2xhbmcvcmVmbGVjdC9SZWZsZWN0UGVybWlzc2lvbi5jbGFzcyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVwb3NpdG9yeVVzZS9jbHMvamF2YS9sYW5nL3JlZmxlY3QvUmVmbGVjdFBlcm1pc3Npb24uY2xhc3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDc4ZDBmZTEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3JlcG9zaXRvcnlVc2UvY2xzL2phdmEvbGFuZy9yZWZsZWN0L1JlZmxlY3RQZXJtaXNzaW9uLmNsYXNzCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVwb3NpdG9yeVVzZS9jbHMvamF2YS9sYW5nL3JlZmxlY3QvVW5kZWNsYXJlZFRocm93YWJsZUV4Y2VwdGlvbi5jbGFzcyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVwb3NpdG9yeVVzZS9jbHMvamF2YS9sYW5nL3JlZmxlY3QvVW5kZWNsYXJlZFRocm93YWJsZUV4Y2VwdGlvbi5jbGFzcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YjM5NGQzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXBvc2l0b3J5VXNlL2Nscy9qYXZhL2xhbmcvcmVmbGVjdC9VbmRlY2xhcmVkVGhyb3dhYmxlRXhjZXB0aW9uLmNsYXNzCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVwb3NpdG9yeVVzZS9jbHMvamF2YS90ZXh0L01lc3NhZ2VGb3JtYXQkRmllbGQuY2xhc3MgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3JlcG9zaXRvcnlVc2UvY2xzL2phdmEvdGV4dC9NZXNzYWdlRm9ybWF0JEZpZWxkLmNsYXNzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZhOGM0ZjIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3JlcG9zaXRvcnlVc2UvY2xzL2phdmEvdGV4dC9NZXNzYWdlRm9ybWF0JEZpZWxkLmNsYXNzCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVwb3NpdG9yeVVzZS9jbHMvamF2YS90ZXh0L01lc3NhZ2VGb3JtYXQuY2xhc3MgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3JlcG9zaXRvcnlVc2UvY2xzL2phdmEvdGV4dC9NZXNzYWdlRm9ybWF0LmNsYXNzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMzMzFlNmQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3JlcG9zaXRvcnlVc2UvY2xzL2phdmEvdGV4dC9NZXNzYWdlRm9ybWF0LmNsYXNzCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVwb3NpdG9yeVVzZS9jbHMvamF2YS91dGlsL0Fic3RyYWN0Q29sbGVjdGlvbi5jbGFzcyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVwb3NpdG9yeVVzZS9jbHMvamF2YS91dGlsL0Fic3RyYWN0Q29sbGVjdGlvbi5jbGFzcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NTMyOWYxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXBvc2l0b3J5VXNlL2Nscy9qYXZhL3V0aWwvQWJzdHJhY3RDb2xsZWN0aW9uLmNsYXNzCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVwb3NpdG9yeVVzZS9jbHMvamF2YS91dGlsL0Fic3RyYWN0TGlzdC5jbGFzcyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVwb3NpdG9yeVVzZS9jbHMvamF2YS91dGlsL0Fic3RyYWN0TGlzdC5jbGFzcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZmU1YjM4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXBvc2l0b3J5VXNlL2Nscy9qYXZhL3V0aWwvQWJzdHJhY3RMaXN0LmNsYXNzCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVwb3NpdG9yeVVzZS9jbHMvamF2YS91dGlsL0Fic3RyYWN0TWFwLmNsYXNzIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXBvc2l0b3J5VXNlL2Nscy9qYXZhL3V0aWwvQWJzdHJhY3RNYXAuY2xhc3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWM1MDhhYgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVwb3NpdG9yeVVzZS9jbHMvamF2YS91dGlsL0Fic3RyYWN0TWFwLmNsYXNzCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVwb3NpdG9yeVVzZS9jbHMvamF2YS91dGlsL0Fic3RyYWN0U2VxdWVudGlhbExpc3QuY2xhc3MgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3JlcG9zaXRvcnlVc2UvY2xzL2phdmEvdXRpbC9BYnN0cmFjdFNlcXVlbnRpYWxMaXN0LmNsYXNzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFhZTk0YjEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3JlcG9zaXRvcnlVc2UvY2xzL2phdmEvdXRpbC9BYnN0cmFjdFNlcXVlbnRpYWxMaXN0LmNsYXNzCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVwb3NpdG9yeVVzZS9jbHMvamF2YS91dGlsL0Fic3RyYWN0U2V0LmNsYXNzIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXBvc2l0b3J5VXNlL2Nscy9qYXZhL3V0aWwvQWJzdHJhY3RTZXQuY2xhc3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzM0OTU5YwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVwb3NpdG9yeVVzZS9jbHMvamF2YS91dGlsL0Fic3RyYWN0U2V0LmNsYXNzCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVwb3NpdG9yeVVzZS9jbHMvamF2YS91dGlsL0FycmF5TGlzdC5jbGFzcyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVwb3NpdG9yeVVzZS9jbHMvamF2YS91dGlsL0FycmF5TGlzdC5jbGFzcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNmZkODlkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXBvc2l0b3J5VXNlL2Nscy9qYXZhL3V0aWwvQXJyYXlMaXN0LmNsYXNzCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVwb3NpdG9yeVVzZS9jbHMvamF2YS91dGlsL0FycmF5cy5jbGFzcyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVwb3NpdG9yeVVzZS9jbHMvamF2YS91dGlsL0FycmF5cy5jbGFzcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jODlhN2EzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXBvc2l0b3J5VXNlL2Nscy9qYXZhL3V0aWwvQXJyYXlzLmNsYXNzCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVwb3NpdG9yeVVzZS9jbHMvamF2YS91dGlsL0NvbGxlY3Rpb24uY2xhc3MgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3JlcG9zaXRvcnlVc2UvY2xzL2phdmEvdXRpbC9Db2xsZWN0aW9uLmNsYXNzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ3NjU2MjQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3JlcG9zaXRvcnlVc2UvY2xzL2phdmEvdXRpbC9Db2xsZWN0aW9uLmNsYXNzCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVwb3NpdG9yeVVzZS9jbHMvamF2YS91dGlsL0NvbGxlY3Rpb25zLmNsYXNzIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXBvc2l0b3J5VXNlL2Nscy9qYXZhL3V0aWwvQ29sbGVjdGlvbnMuY2xhc3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDYyYjM1NAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVwb3NpdG9yeVVzZS9jbHMvamF2YS91dGlsL0NvbGxlY3Rpb25zLmNsYXNzCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVwb3NpdG9yeVVzZS9jbHMvamF2YS91dGlsL0NvbXBhcmF0b3IuY2xhc3MgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3JlcG9zaXRvcnlVc2UvY2xzL2phdmEvdXRpbC9Db21wYXJhdG9yLmNsYXNzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlmMDNiN2IKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3JlcG9zaXRvcnlVc2UvY2xzL2phdmEvdXRpbC9Db21wYXJhdG9yLmNsYXNzCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVwb3NpdG9yeVVzZS9jbHMvamF2YS91dGlsL0RpY3Rpb25hcnkuY2xhc3MgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3JlcG9zaXRvcnlVc2UvY2xzL2phdmEvdXRpbC9EaWN0aW9uYXJ5LmNsYXNzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJkZWZkNDNlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXBvc2l0b3J5VXNlL2Nscy9qYXZhL3V0aWwvRGljdGlvbmFyeS5jbGFzcwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3JlcG9zaXRvcnlVc2UvY2xzL2phdmEvdXRpbC9FbnVtZXJhdGlvbi5jbGFzcyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVwb3NpdG9yeVVzZS9jbHMvamF2YS91dGlsL0VudW1lcmF0aW9uLmNsYXNzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM4NTQzOGIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3JlcG9zaXRvcnlVc2UvY2xzL2phdmEvdXRpbC9FbnVtZXJhdGlvbi5jbGFzcwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3JlcG9zaXRvcnlVc2UvY2xzL2phdmEvdXRpbC9IYXNoTWFwLmNsYXNzIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXBvc2l0b3J5VXNlL2Nscy9qYXZhL3V0aWwvSGFzaE1hcC5jbGFzcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZWQ3ZjM1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXBvc2l0b3J5VXNlL2Nscy9qYXZhL3V0aWwvSGFzaE1hcC5jbGFzcwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3JlcG9zaXRvcnlVc2UvY2xzL2phdmEvdXRpbC9IYXNoU2V0LmNsYXNzIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXBvc2l0b3J5VXNlL2Nscy9qYXZhL3V0aWwvSGFzaFNldC5jbGFzcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NzljNDRiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXBvc2l0b3J5VXNlL2Nscy9qYXZhL3V0aWwvSGFzaFNldC5jbGFzcwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3JlcG9zaXRvcnlVc2UvY2xzL2phdmEvdXRpbC9IYXNodGFibGUuY2xhc3MgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3JlcG9zaXRvcnlVc2UvY2xzL2phdmEvdXRpbC9IYXNodGFibGUuY2xhc3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjNhYzAyMgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVwb3NpdG9yeVVzZS9jbHMvamF2YS91dGlsL0hhc2h0YWJsZS5jbGFzcwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3JlcG9zaXRvcnlVc2UvY2xzL2phdmEvdXRpbC9JZGVudGl0eUhhc2hNYXAuY2xhc3MgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3JlcG9zaXRvcnlVc2UvY2xzL2phdmEvdXRpbC9JZGVudGl0eUhhc2hNYXAuY2xhc3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2MzZTRkMAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVwb3NpdG9yeVVzZS9jbHMvamF2YS91dGlsL0lkZW50aXR5SGFzaE1hcC5jbGFzcwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3JlcG9zaXRvcnlVc2UvY2xzL2phdmEvdXRpbC9JdGVyYXRvci5jbGFzcyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVwb3NpdG9yeVVzZS9jbHMvamF2YS91dGlsL0l0ZXJhdG9yLmNsYXNzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZhZTBiOTYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3JlcG9zaXRvcnlVc2UvY2xzL2phdmEvdXRpbC9JdGVyYXRvci5jbGFzcwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3JlcG9zaXRvcnlVc2UvY2xzL2phdmEvdXRpbC9MaW5rZWRIYXNoTWFwLmNsYXNzIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXBvc2l0b3J5VXNlL2Nscy9qYXZhL3V0aWwvTGlua2VkSGFzaE1hcC5jbGFzcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yN2QxN2Q4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXBvc2l0b3J5VXNlL2Nscy9qYXZhL3V0aWwvTGlua2VkSGFzaE1hcC5jbGFzcwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3JlcG9zaXRvcnlVc2UvY2xzL2phdmEvdXRpbC9MaW5rZWRIYXNoU2V0LmNsYXNzIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXBvc2l0b3J5VXNlL2Nscy9qYXZhL3V0aWwvTGlua2VkSGFzaFNldC5jbGFzcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YWFhYWYxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXBvc2l0b3J5VXNlL2Nscy9qYXZhL3V0aWwvTGlua2VkSGFzaFNldC5jbGFzcwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3JlcG9zaXRvcnlVc2UvY2xzL2phdmEvdXRpbC9MaW5rZWRMaXN0LmNsYXNzIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXBvc2l0b3J5VXNlL2Nscy9qYXZhL3V0aWwvTGlua2VkTGlzdC5jbGFzcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zOWYxMjM1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXBvc2l0b3J5VXNlL2Nscy9qYXZhL3V0aWwvTGlua2VkTGlzdC5jbGFzcwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3JlcG9zaXRvcnlVc2UvY2xzL2phdmEvdXRpbC9MaXN0LmNsYXNzIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXBvc2l0b3J5VXNlL2Nscy9qYXZhL3V0aWwvTGlzdC5jbGFzcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYTkyYmY1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXBvc2l0b3J5VXNlL2Nscy9qYXZhL3V0aWwvTGlzdC5jbGFzcwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3JlcG9zaXRvcnlVc2UvY2xzL2phdmEvdXRpbC9MaXN0SXRlcmF0b3IuY2xhc3MgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3JlcG9zaXRvcnlVc2UvY2xzL2phdmEvdXRpbC9MaXN0SXRlcmF0b3IuY2xhc3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTkxNjg0MgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVwb3NpdG9yeVVzZS9jbHMvamF2YS91dGlsL0xpc3RJdGVyYXRvci5jbGFzcwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3JlcG9zaXRvcnlVc2UvY2xzL2phdmEvdXRpbC9NYXAkRW50cnkuY2xhc3MgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3JlcG9zaXRvcnlVc2UvY2xzL2phdmEvdXRpbC9NYXAkRW50cnkuY2xhc3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDkxYjMxMAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVwb3NpdG9yeVVzZS9jbHMvamF2YS91dGlsL01hcCRFbnRyeS5jbGFzcwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3JlcG9zaXRvcnlVc2UvY2xzL2phdmEvdXRpbC9NYXAuY2xhc3MgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3JlcG9zaXRvcnlVc2UvY2xzL2phdmEvdXRpbC9NYXAuY2xhc3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDljMmJmYwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVwb3NpdG9yeVVzZS9jbHMvamF2YS91dGlsL01hcC5jbGFzcwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3JlcG9zaXRvcnlVc2UvY2xzL2phdmEvdXRpbC9TZXQuY2xhc3MgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3JlcG9zaXRvcnlVc2UvY2xzL2phdmEvdXRpbC9TZXQuY2xhc3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjdiYmIwNAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVwb3NpdG9yeVVzZS9jbHMvamF2YS91dGlsL1NldC5jbGFzcwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3JlcG9zaXRvcnlVc2UvY2xzL2phdmEvdXRpbC9Tb3J0ZWRNYXAuY2xhc3MgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3JlcG9zaXRvcnlVc2UvY2xzL2phdmEvdXRpbC9Tb3J0ZWRNYXAuY2xhc3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTY3M2M2OAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVwb3NpdG9yeVVzZS9jbHMvamF2YS91dGlsL1NvcnRlZE1hcC5jbGFzcwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3JlcG9zaXRvcnlVc2UvY2xzL2phdmEvdXRpbC9Tb3J0ZWRTZXQuY2xhc3MgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3JlcG9zaXRvcnlVc2UvY2xzL2phdmEvdXRpbC9Tb3J0ZWRTZXQuY2xhc3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmRkZTRiYwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVwb3NpdG9yeVVzZS9jbHMvamF2YS91dGlsL1NvcnRlZFNldC5jbGFzcwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3JlcG9zaXRvcnlVc2UvY2xzL2phdmEvdXRpbC9TdGFjay5jbGFzcyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVwb3NpdG9yeVVzZS9jbHMvamF2YS91dGlsL1N0YWNrLmNsYXNzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE2YzFmYmUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3JlcG9zaXRvcnlVc2UvY2xzL2phdmEvdXRpbC9TdGFjay5jbGFzcwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3JlcG9zaXRvcnlVc2UvY2xzL2phdmEvdXRpbC9UcmVlTWFwLmNsYXNzIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXBvc2l0b3J5VXNlL2Nscy9qYXZhL3V0aWwvVHJlZU1hcC5jbGFzcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MjZiZWIzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXBvc2l0b3J5VXNlL2Nscy9qYXZhL3V0aWwvVHJlZU1hcC5jbGFzcwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3JlcG9zaXRvcnlVc2UvY2xzL2phdmEvdXRpbC9UcmVlU2V0LmNsYXNzIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXBvc2l0b3J5VXNlL2Nscy9qYXZhL3V0aWwvVHJlZVNldC5jbGFzcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNjRkODU1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXBvc2l0b3J5VXNlL2Nscy9qYXZhL3V0aWwvVHJlZVNldC5jbGFzcwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3JlcG9zaXRvcnlVc2UvY2xzL2phdmEvdXRpbC9WZWN0b3IuY2xhc3MgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3JlcG9zaXRvcnlVc2UvY2xzL2phdmEvdXRpbC9WZWN0b3IuY2xhc3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDQxMjg2ZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVwb3NpdG9yeVVzZS9jbHMvamF2YS91dGlsL1ZlY3Rvci5jbGFzcwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3JlcG9zaXRvcnlVc2UvY2xzL2phdmEvdXRpbC9XZWFrSGFzaE1hcC5jbGFzcyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVwb3NpdG9yeVVzZS9jbHMvamF2YS91dGlsL1dlYWtIYXNoTWFwLmNsYXNzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg1ODQ2ZjgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3JlcG9zaXRvcnlVc2UvY2xzL2phdmEvdXRpbC9XZWFrSGFzaE1hcC5jbGFzcwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3JlcG9zaXRvcnlVc2UvY2xzL2phdmEvdXRpbC9qYXIvSmFyRmlsZS5jbGFzcyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVwb3NpdG9yeVVzZS9jbHMvamF2YS91dGlsL2phci9KYXJGaWxlLmNsYXNzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAzMDlmY2UKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3JlcG9zaXRvcnlVc2UvY2xzL2phdmEvdXRpbC9qYXIvSmFyRmlsZS5jbGFzcwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3JlcG9zaXRvcnlVc2UvY2xzL2phdmEvdXRpbC9sb2dnaW5nL0xvZ01hbmFnZXIuY2xhc3MgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3JlcG9zaXRvcnlVc2UvY2xzL2phdmEvdXRpbC9sb2dnaW5nL0xvZ01hbmFnZXIuY2xhc3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzQ5YmM2MgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVwb3NpdG9yeVVzZS9jbHMvamF2YS91dGlsL2xvZ2dpbmcvTG9nTWFuYWdlci5jbGFzcwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3JlcG9zaXRvcnlVc2UvY2xzL3BhY2svQW5ub3RhdGVkLmNsYXNzIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXBvc2l0b3J5VXNlL2Nscy9wYWNrL0Fubm90YXRlZC5jbGFzcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMjBlZjk3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXBvc2l0b3J5VXNlL2Nscy9wYWNrL0Fubm90YXRlZC5jbGFzcwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3JlcG9zaXRvcnlVc2UvY2xzL3BhY2svQW5ub3RhdGlvbi5jbGFzcyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVwb3NpdG9yeVVzZS9jbHMvcGFjay9Bbm5vdGF0aW9uLmNsYXNzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVhY2JkOWEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3JlcG9zaXRvcnlVc2UvY2xzL3BhY2svQW5ub3RhdGlvbi5jbGFzcwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3JlcG9zaXRvcnlVc2UvY2xzL3BhY2svQW5ub3RhdGlvbjIuY2xhc3MgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3JlcG9zaXRvcnlVc2UvY2xzL3BhY2svQW5ub3RhdGlvbjIuY2xhc3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTJlMjNkNgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVwb3NpdG9yeVVzZS9jbHMvcGFjay9Bbm5vdGF0aW9uMi5jbGFzcwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3JlcG9zaXRvcnlVc2UvY2xzL3BhY2svTW9kaWZpZXJzLmNsYXNzIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXBvc2l0b3J5VXNlL2Nscy9wYWNrL01vZGlmaWVycy5jbGFzcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZWE4Nzk0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXBvc2l0b3J5VXNlL2Nscy9wYWNrL01vZGlmaWVycy5jbGFzcwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3JlcG9zaXRvcnlVc2UvY2xzL3BhY2svTXlDbGFzcyRJbm5lci5jbGFzcyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVwb3NpdG9yeVVzZS9jbHMvcGFjay9NeUNsYXNzJElubmVyLmNsYXNzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ3NWI4N2MKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3JlcG9zaXRvcnlVc2UvY2xzL3BhY2svTXlDbGFzcyRJbm5lci5jbGFzcwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3JlcG9zaXRvcnlVc2UvY2xzL3BhY2svTXlDbGFzcy5jbGFzcyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVwb3NpdG9yeVVzZS9jbHMvcGFjay9NeUNsYXNzLmNsYXNzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM5NGY4MzMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3JlcG9zaXRvcnlVc2UvY2xzL3BhY2svTXlDbGFzcy5jbGFzcwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3JlcG9zaXRvcnlVc2UvY2xzL3BhY2svTXlFbnVtLmNsYXNzIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXBvc2l0b3J5VXNlL2Nscy9wYWNrL015RW51bS5jbGFzcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMjExMjg4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXBvc2l0b3J5VXNlL2Nscy9wYWNrL015RW51bS5jbGFzcwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3JlcG9zaXRvcnlVc2UvY2xzL3BhY2svUGFyYW1ldHJpemVkLmNsYXNzIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXBvc2l0b3J5VXNlL2Nscy9wYWNrL1BhcmFtZXRyaXplZC5jbGFzcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZGZkZWQwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXBvc2l0b3J5VXNlL2Nscy9wYWNrL1BhcmFtZXRyaXplZC5jbGFzcwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3JlcG9zaXRvcnlVc2UvY2xzL3BhY2svVmFyaWFuY2UuY2xhc3MgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3JlcG9zaXRvcnlVc2UvY2xzL3BhY2svVmFyaWFuY2UuY2xhc3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWQzNjkzNQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVwb3NpdG9yeVVzZS9jbHMvcGFjay9WYXJpYW5jZS5jbGFzcwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3JlcG9zaXRvcnlVc2UvY2xzL3NyYy9wYWNrL0Fubm90YXRpb24yLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3JlcG9zaXRvcnlVc2UvY2xzL3NyYy9wYWNrL0Fubm90YXRpb24yLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmNhMWRjYgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVwb3NpdG9yeVVzZS9jbHMvc3JjL3BhY2svQW5ub3RhdGlvbjIuamF2YQpAQCAtMCwwICsxLDExIEBACitwYWNrYWdlIHBhY2s7CisKK3B1YmxpYyBAaW50ZXJmYWNlIEFubm90YXRpb24yIHsKKyAgZmxvYXQgZjEoKSBkZWZhdWx0IEZsb2F0Lk5FR0FUSVZFX0lORklOSVRZOworICBmbG9hdCBmMigpIGRlZmF1bHQgRmxvYXQuTmFOOworICBmbG9hdCBmMygpIGRlZmF1bHQgRmxvYXQuUE9TSVRJVkVfSU5GSU5JVFk7CisKKyAgZG91YmxlIGQxKCkgZGVmYXVsdCBEb3VibGUuTkVHQVRJVkVfSU5GSU5JVFk7CisgIGRvdWJsZSBkMigpIGRlZmF1bHQgRG91YmxlLk5hTjsKKyAgZG91YmxlIGQzKCkgZGVmYXVsdCBEb3VibGUuUE9TSVRJVkVfSU5GSU5JVFk7Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3JlcG9zaXRvcnlVc2UvY2xzL3NyYy9wYWNrL015Q2xhc3MuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVwb3NpdG9yeVVzZS9jbHMvc3JjL3BhY2svTXlDbGFzcy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQxMTY3MDQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3JlcG9zaXRvcnlVc2UvY2xzL3NyYy9wYWNrL015Q2xhc3MuamF2YQpAQCAtMCwwICsxLDIzIEBACitwYWNrYWdlIHBhY2s7CisKK2ltcG9ydCBqYXZhLnV0aWwuQXJyYXlMaXN0OworCitwdWJsaWMgY2xhc3MgTXlDbGFzcyBleHRlbmRzIEFycmF5TGlzdCBpbXBsZW1lbnRzIENsb25lYWJsZXsKKyAgLyoqCisgICAqIEBkZXByZWNhdGVkCisgICAqLworICBzdGF0aWMgZmluYWwgaW50IGZpZWxkMSA9IDEyMzsKKworICBPYmplY3RbXSBmaWVsZDI7CisKKyAgdm9pZCBtZXRob2QxKGludFtdIHAxLCBPYmplY3QgcDIpIHRocm93cyBFeGNlcHRpb24sIGphdmEuaW8uSU9FeGNlcHRpb257CisgIH0KKworICBJbnRlZ2VyIG1ldGhvZDIoKVtdeworICAgIHJldHVybiBudWxsOworICB9CisKKyAgTXlDbGFzcygpe30KKworICBzdGF0aWMgY2xhc3MgSW5uZXJ7fQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXBvc2l0b3J5VXNlL2Nscy9zcmMvcGFjay9QYXJhbWV0cml6ZWQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVwb3NpdG9yeVVzZS9jbHMvc3JjL3BhY2svUGFyYW1ldHJpemVkLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGFjMDA5ZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVwb3NpdG9yeVVzZS9jbHMvc3JjL3BhY2svUGFyYW1ldHJpemVkLmphdmEKQEAgLTAsMCArMSw3IEBACitwYWNrYWdlIHBhY2s7CisKKy8qKgorICogQGF1dGhvciBkc2wKKyAqLworcHVibGljIGNsYXNzIFBhcmFtZXRyaXplZDxUPiB7Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3JlcG9zaXRvcnlVc2UvY2xzL3NyYy9wYWNrL1ZhcmlhbmNlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3JlcG9zaXRvcnlVc2UvY2xzL3NyYy9wYWNrL1ZhcmlhbmNlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzZlYWFlNwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVwb3NpdG9yeVVzZS9jbHMvc3JjL3BhY2svVmFyaWFuY2UuamF2YQpAQCAtMCwwICsxLDEyIEBACitwYWNrYWdlIHBhY2s7CisKK2ltcG9ydCBqYXZhLnV0aWwuTGlzdDsKKworLyoqCisgKiBAYXV0aG9yIGRzbAorICovCitwdWJsaWMgY2xhc3MgVmFyaWFuY2U8VD4geworICBwdWJsaWMgUGFyYW1ldHJpemVkPD8gZXh0ZW5kcyBUPiBtZXRob2QoKSB7IHJldHVybiBudWxsOyB9CisgIHB1YmxpYyA8Vj4gUGFyYW1ldHJpemVkPD8gZXh0ZW5kcyBWPm1ldGhvZFdpdGhUeXBlUGFyYW1ldGVyKCkgeyByZXR1cm4gbnVsbDsgfTsKKyAgcHVibGljIHZvaWQgcmVtb3ZlQWxsKFZhcmlhbmNlPD8+IHBhcmFtZXRlcikge30gOyAKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVwb3NpdG9yeVVzZS9jbHMvc3VuL3JlZmxlY3QvTGFuZ1JlZmxlY3RBY2Nlc3MuY2xhc3MgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3JlcG9zaXRvcnlVc2UvY2xzL3N1bi9yZWZsZWN0L0xhbmdSZWZsZWN0QWNjZXNzLmNsYXNzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY3MmVhNWMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3JlcG9zaXRvcnlVc2UvY2xzL3N1bi9yZWZsZWN0L0xhbmdSZWZsZWN0QWNjZXNzLmNsYXNzCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVwb3NpdG9yeVVzZS9jbHMvc3VuL3NlY3VyaXR5L3V0aWwvU2VjdXJpdHlDb25zdGFudHMuY2xhc3MgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3JlcG9zaXRvcnlVc2UvY2xzL3N1bi9zZWN1cml0eS91dGlsL1NlY3VyaXR5Q29uc3RhbnRzLmNsYXNzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNkZWQ4N2YKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3JlcG9zaXRvcnlVc2UvY2xzL3N1bi9zZWN1cml0eS91dGlsL1NlY3VyaXR5Q29uc3RhbnRzLmNsYXNzCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVwb3NpdG9yeVVzZS9pbm5lckNsYXNzZXNTY2FubmVyL0NsYXNzV2l0aEdlbmVyaWNQYXJhbWV0ZXJzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3JlcG9zaXRvcnlVc2UvaW5uZXJDbGFzc2VzU2Nhbm5lci9DbGFzc1dpdGhHZW5lcmljUGFyYW1ldGVycy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA3YTNkYTEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3JlcG9zaXRvcnlVc2UvaW5uZXJDbGFzc2VzU2Nhbm5lci9DbGFzc1dpdGhHZW5lcmljUGFyYW1ldGVycy5qYXZhCkBAIC0wLDAgKzEsNiBAQAorY2xhc3MgWCB7CisgIHB1YmxpYyB2b2lkIG1ldGhvZCgpIHsKKyAgICBPYmplY3QgbyA9IG5ldyBDb21wdXRhYmxlPFN0cmluZ1tdPigpIHsKKyAgICB9CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVwb3NpdG9yeVVzZS9pbm5lckNsYXNzZXNTY2FubmVyL05ld0luc2lkZU5ldy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXBvc2l0b3J5VXNlL2lubmVyQ2xhc3Nlc1NjYW5uZXIvTmV3SW5zaWRlTmV3LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzI2YjIzMzYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3JlcG9zaXRvcnlVc2UvaW5uZXJDbGFzc2VzU2Nhbm5lci9OZXdJbnNpZGVOZXcuamF2YQpAQCAtMCwwICsxLDYgQEAKK2NsYXNzIFggeworICBwdWJsaWMgdm9pZCBtZXRob2QoKSB7CisgICAgT2JqZWN0IG8gPSBuZXcgQ29tcHV0YWJsZShuZXcgTGlzdDxTdHJpbmc+KCkpIHsKKyAgICB9CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVwb3NpdG9yeVVzZS9tb2RpZnlBbm5vdGF0aW9ucy9UZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3JlcG9zaXRvcnlVc2UvbW9kaWZ5QW5ub3RhdGlvbnMvVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUwYzJiMTcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3JlcG9zaXRvcnlVc2UvbW9kaWZ5QW5ub3RhdGlvbnMvVGVzdC5qYXZhCkBAIC0wLDAgKzEgQEAKK0BBIGNsYXNzIFRlc3Qge30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3JlcG9zaXRvcnlVc2Uvc2NyMTcwOTQvY2xhc3Nlcy9hL2EvYS9hL2UvZi9pLmNsYXNzIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXBvc2l0b3J5VXNlL3NjcjE3MDk0L2NsYXNzZXMvYS9hL2EvYS9lL2YvaS5jbGFzcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYjY0ZWI4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXBvc2l0b3J5VXNlL3NjcjE3MDk0L2NsYXNzZXMvYS9hL2EvYS9lL2YvaS5jbGFzcwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3JlcG9zaXRvcnlVc2Uvc2NyMTcwOTQvY2xhc3NlczEvY29tL2ludGVsbGlqL3V0aWwvZC9idy5jbGFzcyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVwb3NpdG9yeVVzZS9zY3IxNzA5NC9jbGFzc2VzMS9jb20vaW50ZWxsaWovdXRpbC9kL2J3LmNsYXNzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ2YjgyMzgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3JlcG9zaXRvcnlVc2Uvc2NyMTcwOTQvY2xhc3NlczEvY29tL2ludGVsbGlqL3V0aWwvZC9idy5jbGFzcwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3JlcG9zaXRvcnlVc2Uvc2NyMTcwOTQvY2xhc3NlczIvY29tL2ludGVsbGlqL2ludGVybmFsL2EvYi9hL2kuY2xhc3MgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3JlcG9zaXRvcnlVc2Uvc2NyMTcwOTQvY2xhc3NlczIvY29tL2ludGVsbGlqL2ludGVybmFsL2EvYi9hL2kuY2xhc3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjZiZjQzMwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVwb3NpdG9yeVVzZS9zY3IxNzA5NC9jbGFzc2VzMi9jb20vaW50ZWxsaWovaW50ZXJuYWwvYS9iL2EvaS5jbGFzcwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3JlcG9zaXRvcnlVc2Uvc3JjL015Q2xhc3MxLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3JlcG9zaXRvcnlVc2Uvc3JjL015Q2xhc3MxLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWQ5NmE0NQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVwb3NpdG9yeVVzZS9zcmMvTXlDbGFzczEuamF2YQpAQCAtMCwwICsxLDIxIEBACitpbXBvcnQgYSAuIGI7CitpbXBvcnQgYy4qOworaW1wb3J0CisKK2NsYXNzIE15Q2xhc3MxeworICB7CisgICAgY2xhc3MgTG9jYWx7CisgICAgICBwdWJsaWMgdm9pZCBmb28oKXsKKyAgICAgICAgbmV3IFJ1bm5hYmxlKHJ1bkxvZ05hbWUsIGdvbGRlblJ1bkxvZ05hbWUsIHRoaXMpeworICAgICAgICAgIHB1YmxpYyB2b2lkIHJ1bigpeworICAgICAgICAgICAgbmV3IFRocm93YWJsZSgpeworICAgICAgICAgICAgfTsKKyAgICAgICAgICB9LnJ1bigpOworICAgICAgICB9CisgICAgICB9CisgICAgfTsKKyAgfQorfQorCitjbGFzcyBDbGFzczI8QSBleHRlbmRzIFN0cmluZywgQj57Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3JlcG9zaXRvcnlVc2Uvc3JjL1N0cmVzc0NsYXNzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3JlcG9zaXRvcnlVc2Uvc3JjL1N0cmVzc0NsYXNzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGMxMTMwZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVwb3NpdG9yeVVzZS9zcmMvU3RyZXNzQ2xhc3MuamF2YQpAQCAtMCwwICsxLDI3ODkgQEAKKy8qCisgKiBAKCMpU3RyaW5nLmphdmEJMS4xODkgMDUvMTAvMjEKKyAqCisgKiBDb3B5cmlnaHQgMjAwNCBTdW4gTWljcm9zeXN0ZW1zLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBTVU4gUFJPUFJJRVRBUlkvQ09ORklERU5USUFMLiBVc2UgaXMgc3ViamVjdCB0byBsaWNlbnNlIHRlcm1zLgorICovCisKK2ltcG9ydCBqYXZhLmlvLk9iamVjdFN0cmVhbUNsYXNzOworaW1wb3J0IGphdmEuaW8uT2JqZWN0U3RyZWFtRmllbGQ7CitpbXBvcnQgamF2YS5pby5VbnN1cHBvcnRlZEVuY29kaW5nRXhjZXB0aW9uOworaW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7CitpbXBvcnQgamF2YS51dGlsLkNvbXBhcmF0b3I7CitpbXBvcnQgamF2YS51dGlsLkZvcm1hdHRlcjsKK2ltcG9ydCBqYXZhLnV0aWwuTG9jYWxlOworaW1wb3J0IGphdmEudXRpbC5yZWdleC5NYXRjaGVyOworaW1wb3J0IGphdmEudXRpbC5yZWdleC5QYXR0ZXJuOworaW1wb3J0IGphdmEudXRpbC5yZWdleC5QYXR0ZXJuU3ludGF4RXhjZXB0aW9uOworCisKKy8qKgorICogVGhlIDxjb2RlPlN0cmluZzwvY29kZT4gY2xhc3MgcmVwcmVzZW50cyBjaGFyYWN0ZXIgc3RyaW5ncy4gQWxsCisgKiBzdHJpbmcgbGl0ZXJhbHMgaW4gSmF2YSBwcm9ncmFtcywgc3VjaCBhcyA8Y29kZT4iYWJjIjwvY29kZT4sIGFyZQorICogaW1wbGVtZW50ZWQgYXMgaW5zdGFuY2VzIG9mIHRoaXMgY2xhc3MuCisgKiA8cD4KKyAqIFN0cmluZ3MgYXJlIGNvbnN0YW50OyB0aGVpciB2YWx1ZXMgY2Fubm90IGJlIGNoYW5nZWQgYWZ0ZXIgdGhleQorICogYXJlIGNyZWF0ZWQuIFN0cmluZyBidWZmZXJzIHN1cHBvcnQgbXV0YWJsZSBzdHJpbmdzLgorICogQmVjYXVzZSBTdHJpbmcgb2JqZWN0cyBhcmUgaW1tdXRhYmxlIHRoZXkgY2FuIGJlIHNoYXJlZC4gRm9yIGV4YW1wbGU6CisgKiA8cD48YmxvY2txdW90ZT48cHJlPgorICogICAgIFN0cmluZyBzdHIgPSAiYWJjIjsKKyAqIDwvcHJlPjwvYmxvY2txdW90ZT48cD4KKyAqIGlzIGVxdWl2YWxlbnQgdG86CisgKiA8cD48YmxvY2txdW90ZT48cHJlPgorICogICAgIGNoYXIgZGF0YVtdID0geydhJywgJ2InLCAnYyd9OworICogICAgIFN0cmluZyBzdHIgPSBuZXcgU3RyaW5nKGRhdGEpOworICogPC9wcmU+PC9ibG9ja3F1b3RlPjxwPgorICogSGVyZSBhcmUgc29tZSBtb3JlIGV4YW1wbGVzIG9mIGhvdyBzdHJpbmdzIGNhbiBiZSB1c2VkOgorICogPHA+PGJsb2NrcXVvdGU+PHByZT4KKyAqICAgICBTeXN0ZW0ub3V0LnByaW50bG4oImFiYyIpOworICogICAgIFN0cmluZyBjZGUgPSAiY2RlIjsKKyAqICAgICBTeXN0ZW0ub3V0LnByaW50bG4oImFiYyIgKyBjZGUpOworICogICAgIFN0cmluZyBjID0gImFiYyIuc3Vic3RyaW5nKDIsMyk7CisgKiAgICAgU3RyaW5nIGQgPSBjZGUuc3Vic3RyaW5nKDEsIDIpOworICogPC9wcmU+PC9ibG9ja3F1b3RlPgorICogPHA+CisgKiBUaGUgY2xhc3MgPGNvZGU+U3RyaW5nPC9jb2RlPiBpbmNsdWRlcyBtZXRob2RzIGZvciBleGFtaW5pbmcKKyAqIGluZGl2aWR1YWwgY2hhcmFjdGVycyBvZiB0aGUgc2VxdWVuY2UsIGZvciBjb21wYXJpbmcgc3RyaW5ncywgZm9yCisgKiBzZWFyY2hpbmcgc3RyaW5ncywgZm9yIGV4dHJhY3Rpbmcgc3Vic3RyaW5ncywgYW5kIGZvciBjcmVhdGluZyBhCisgKiBjb3B5IG9mIGEgc3RyaW5nIHdpdGggYWxsIGNoYXJhY3RlcnMgdHJhbnNsYXRlZCB0byB1cHBlcmNhc2Ugb3IgdG8KKyAqIGxvd2VyY2FzZS4gQ2FzZSBtYXBwaW5nIGlzIGJhc2VkIG9uIHRoZSBVbmljb2RlIFN0YW5kYXJkIHZlcnNpb24KKyAqIHNwZWNpZmllZCBieSB0aGUge0BsaW5rIGphdmEubGFuZy5DaGFyYWN0ZXIgQ2hhcmFjdGVyfSBjbGFzcy4KKyAqIDxwPgorICogVGhlIEphdmEgbGFuZ3VhZ2UgcHJvdmlkZXMgc3BlY2lhbCBzdXBwb3J0IGZvciB0aGUgc3RyaW5nCisgKiBjb25jYXRlbmF0aW9uIG9wZXJhdG9yICgmbmJzcDsrJm5ic3A7KSwgYW5kIGZvciBjb252ZXJzaW9uIG9mCisgKiBvdGhlciBvYmplY3RzIHRvIHN0cmluZ3MuIFN0cmluZyBjb25jYXRlbmF0aW9uIGlzIGltcGxlbWVudGVkCisgKiB0aHJvdWdoIHRoZSA8Y29kZT5TdHJpbmdCdWlsZGVyPC9jb2RlPihvciA8Y29kZT5TdHJpbmdCdWZmZXI8L2NvZGU+KQorICogY2xhc3MgYW5kIGl0cyA8Y29kZT5hcHBlbmQ8L2NvZGU+IG1ldGhvZC4KKyAqIFN0cmluZyBjb252ZXJzaW9ucyBhcmUgaW1wbGVtZW50ZWQgdGhyb3VnaCB0aGUgbWV0aG9kCisgKiA8Y29kZT50b1N0cmluZzwvY29kZT4sIGRlZmluZWQgYnkgPGNvZGU+T2JqZWN0PC9jb2RlPiBhbmQKKyAqIGluaGVyaXRlZCBieSBhbGwgY2xhc3NlcyBpbiBKYXZhLiBGb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBvbgorICogc3RyaW5nIGNvbmNhdGVuYXRpb24gYW5kIGNvbnZlcnNpb24sIHNlZSBHb3NsaW5nLCBKb3ksIGFuZCBTdGVlbGUsCisgKiA8aT5UaGUgSmF2YSBMYW5ndWFnZSBTcGVjaWZpY2F0aW9uPC9pPi4KKyAqCisgKiA8cD4gVW5sZXNzIG90aGVyd2lzZSBub3RlZCwgcGFzc2luZyBhIDx0dD5udWxsPC90dD4gYXJndW1lbnQgdG8gYSBjb25zdHJ1Y3RvcgorICogb3IgbWV0aG9kIGluIHRoaXMgY2xhc3Mgd2lsbCBjYXVzZSBhIHtAbGluayBOdWxsUG9pbnRlckV4Y2VwdGlvbn0gdG8gYmUKKyAqIHRocm93bi4KKyAqCisgKiA8cD5BIDxjb2RlPlN0cmluZzwvY29kZT4gcmVwcmVzZW50cyBhIHN0cmluZyBpbiB0aGUgVVRGLTE2IGZvcm1hdAorICogaW4gd2hpY2ggPGVtPnN1cHBsZW1lbnRhcnkgY2hhcmFjdGVyczwvZW0+IGFyZSByZXByZXNlbnRlZCBieSA8ZW0+c3Vycm9nYXRlCisgKiBwYWlyczwvZW0+IChzZWUgdGhlIHNlY3Rpb24gPGEgaHJlZj0iQ2hhcmFjdGVyLmh0bWwjdW5pY29kZSI+VW5pY29kZQorICogQ2hhcmFjdGVyIFJlcHJlc2VudGF0aW9uczwvYT4gaW4gdGhlIDxjb2RlPkNoYXJhY3RlcjwvY29kZT4gY2xhc3MgZm9yCisgKiBtb3JlIGluZm9ybWF0aW9uKS4KKyAqIEluZGV4IHZhbHVlcyByZWZlciB0byA8Y29kZT5jaGFyPC9jb2RlPiBjb2RlIHVuaXRzLCBzbyBhIHN1cHBsZW1lbnRhcnkKKyAqIGNoYXJhY3RlciB1c2VzIHR3byBwb3NpdGlvbnMgaW4gYSA8Y29kZT5TdHJpbmc8L2NvZGU+LgorICogPHA+VGhlIDxjb2RlPlN0cmluZzwvY29kZT4gY2xhc3MgcHJvdmlkZXMgbWV0aG9kcyBmb3IgZGVhbGluZyB3aXRoCisgKiBVbmljb2RlIGNvZGUgcG9pbnRzIChpLmUuLCBjaGFyYWN0ZXJzKSwgaW4gYWRkaXRpb24gdG8gdGhvc2UgZm9yCisgKiBkZWFsaW5nIHdpdGggVW5pY29kZSBjb2RlIHVuaXRzIChpLmUuLCA8Y29kZT5jaGFyPC9jb2RlPiB2YWx1ZXMpLgorICoKKyAqIEBhdXRob3IgIExlZSBCb3ludG9uCisgKiBAYXV0aG9yICBBcnRodXIgdmFuIEhvZmYKKyAqIEB2ZXJzaW9uIDEuMTg5LCAxMC8yMS8wNQorICogQHNlZSAgICAgamF2YS5sYW5nLk9iamVjdCN0b1N0cmluZygpCisgKiBAc2VlICAgICBqYXZhLmxhbmcuU3RyaW5nQnVmZmVyCisgKiBAc2VlICAgICBqYXZhLmxhbmcuU3RyaW5nQnVpbGRlcgorICogQHNlZSAgICAgamF2YS5uaW8uY2hhcnNldC5DaGFyc2V0CisgKiBAc2luY2UgICBKREsxLjAKKyAqLworCitwdWJsaWMgZmluYWwgY2xhc3MgU3RyZXNzQ2xhc3MKKyAgICBpbXBsZW1lbnRzIGphdmEuaW8uU2VyaWFsaXphYmxlLCBDb21wYXJhYmxlPFN0cmluZz4sIENoYXJTZXF1ZW5jZQoreworICAgIC8qKiBUaGUgdmFsdWUgaXMgdXNlZCBmb3IgY2hhcmFjdGVyIHN0b3JhZ2UuICovCisgICAgcHJpdmF0ZSBmaW5hbCBjaGFyIHZhbHVlW107CisKKyAgICAvKiogVGhlIG9mZnNldCBpcyB0aGUgZmlyc3QgaW5kZXggb2YgdGhlIHN0b3JhZ2UgdGhhdCBpcyB1c2VkLiAqLworICAgIHByaXZhdGUgZmluYWwgaW50IG9mZnNldDsKKworICAgIC8qKiBUaGUgY291bnQgaXMgdGhlIG51bWJlciBvZiBjaGFyYWN0ZXJzIGluIHRoZSBTdHJpbmcuICovCisgICAgcHJpdmF0ZSBmaW5hbCBpbnQgY291bnQ7CisKKyAgICAvKiogQ2FjaGUgdGhlIGhhc2ggY29kZSBmb3IgdGhlIHN0cmluZyAqLworICAgIHByaXZhdGUgaW50IGhhc2g7IC8vIERlZmF1bHQgdG8gMAorCisgICAgLyoqIHVzZSBzZXJpYWxWZXJzaW9uVUlEIGZyb20gSkRLIDEuMC4yIGZvciBpbnRlcm9wZXJhYmlsaXR5ICovCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgbG9uZyBzZXJpYWxWZXJzaW9uVUlEID0gLTY4NDk3OTQ0NzA3NTQ2Njc3MTBMOworCisgICAgLyoqCisgICAgICogQ2xhc3MgU3RyaW5nIGlzIHNwZWNpYWwgY2FzZWQgd2l0aGluIHRoZSBTZXJpYWxpemF0aW9uIFN0cmVhbSBQcm90b2NvbC4KKyAgICAgKgorICAgICAqIEEgU3RyaW5nIGluc3RhbmNlIGlzIHdyaXR0ZW4gaW5pdGlhbGx5IGludG8gYW4gT2JqZWN0T3V0cHV0U3RyZWFtIGluIHRoZQorICAgICAqIGZvbGxvd2luZyBmb3JtYXQ6CisgICAgICogPHByZT4KKyAgICAgKiAgICAgIDxjb2RlPlRDX1NUUklORzwvY29kZT4gKHV0ZiBTdHJpbmcpCisgICAgICogPC9wcmU+CisgICAgICogVGhlIFN0cmluZyBpcyB3cml0dGVuIGJ5IG1ldGhvZCA8Y29kZT5EYXRhT3V0cHV0LndyaXRlVVRGPC9jb2RlPi4KKyAgICAgKiBBIG5ldyBoYW5kbGUgaXMgZ2VuZXJhdGVkIHRvICByZWZlciB0byBhbGwgZnV0dXJlIHJlZmVyZW5jZXMgdG8gdGhlCisgICAgICogc3RyaW5nIGluc3RhbmNlIHdpdGhpbiB0aGUgc3RyZWFtLgorICAgICAqLworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIE9iamVjdFN0cmVhbUZpZWxkW10gc2VyaWFsUGVyc2lzdGVudEZpZWxkcyA9CisgICAgICAgIG5ldyBPYmplY3RTdHJlYW1GaWVsZFswXTsKKworICAgIC8qKgorICAgICAqIEluaXRpYWxpemVzIGEgbmV3bHkgY3JlYXRlZCA8Y29kZT5TdHJpbmc8L2NvZGU+IG9iamVjdCBzbyB0aGF0IGl0CisgICAgICogcmVwcmVzZW50cyBhbiBlbXB0eSBjaGFyYWN0ZXIgc2VxdWVuY2UuICBOb3RlIHRoYXQgdXNlIG9mIHRoaXMKKyAgICAgKiBjb25zdHJ1Y3RvciBpcyB1bm5lY2Vzc2FyeSBzaW5jZSBTdHJpbmdzIGFyZSBpbW11dGFibGUuCisgICAgICovCisgICAgcHVibGljIFN0cmluZygpIHsKKwl0aGlzLm9mZnNldCA9IDA7CisJdGhpcy5jb3VudCA9IDA7CisJdGhpcy52YWx1ZSA9IG5ldyBjaGFyWzBdOworICAgIH0KKworICAgIC8qKgorICAgICAqIEluaXRpYWxpemVzIGEgbmV3bHkgY3JlYXRlZCA8Y29kZT5TdHJpbmc8L2NvZGU+IG9iamVjdCBzbyB0aGF0IGl0CisgICAgICogcmVwcmVzZW50cyB0aGUgc2FtZSBzZXF1ZW5jZSBvZiBjaGFyYWN0ZXJzIGFzIHRoZSBhcmd1bWVudDsgaW4gb3RoZXIKKyAgICAgKiB3b3JkcywgdGhlIG5ld2x5IGNyZWF0ZWQgc3RyaW5nIGlzIGEgY29weSBvZiB0aGUgYXJndW1lbnQgc3RyaW5nLiBVbmxlc3MKKyAgICAgKiBhbiBleHBsaWNpdCBjb3B5IG9mIDxjb2RlPm9yaWdpbmFsPC9jb2RlPiBpcyBuZWVkZWQsIHVzZSBvZiB0aGlzCisgICAgICogY29uc3RydWN0b3IgaXMgdW5uZWNlc3Nhcnkgc2luY2UgU3RyaW5ncyBhcmUgaW1tdXRhYmxlLgorICAgICAqCisgICAgICogQHBhcmFtICAgb3JpZ2luYWwgICBhIDxjb2RlPlN0cmluZzwvY29kZT4uCisgICAgICovCisgICAgcHVibGljIFN0cmluZyhTdHJpbmcgb3JpZ2luYWwpIHsKKwlpbnQgc2l6ZSA9IG9yaWdpbmFsLmNvdW50OworCWNoYXJbXSBvcmlnaW5hbFZhbHVlID0gb3JpZ2luYWwudmFsdWU7CisJY2hhcltdIHY7CisgIAlpZiAob3JpZ2luYWxWYWx1ZS5sZW5ndGggPiBzaXplKSB7CisgCSAgICAvLyBUaGUgYXJyYXkgcmVwcmVzZW50aW5nIHRoZSBTdHJpbmcgaXMgYmlnZ2VyIHRoYW4gdGhlIG5ldworIAkgICAgLy8gU3RyaW5nIGl0c2VsZi4gIFBlcmhhcHMgdGhpcyBjb25zdHJ1Y3RvciBpcyBiZWluZyBjYWxsZWQKKyAJICAgIC8vIGluIG9yZGVyIHRvIHRyaW0gdGhlIGJhZ2dhZ2UsIHNvIG1ha2UgYSBjb3B5IG9mIHRoZSBhcnJheS4KKwkgICAgdiA9IG5ldyBjaGFyW3NpemVdOworIAkgICAgU3lzdGVtLmFycmF5Y29weShvcmlnaW5hbFZhbHVlLCBvcmlnaW5hbC5vZmZzZXQsIHYsIDAsIHNpemUpOworIAl9IGVsc2UgeworIAkgICAgLy8gVGhlIGFycmF5IHJlcHJlc2VudGluZyB0aGUgU3RyaW5nIGlzIHRoZSBzYW1lCisgCSAgICAvLyBzaXplIGFzIHRoZSBTdHJpbmcsIHNvIG5vIHBvaW50IGluIG1ha2luZyBhIGNvcHkuCisJICAgIHYgPSBvcmlnaW5hbFZhbHVlOworIAl9CisJdGhpcy5vZmZzZXQgPSAwOworCXRoaXMuY291bnQgPSBzaXplOworCXRoaXMudmFsdWUgPSB2OworICAgIH0KKworICAgIC8qKgorICAgICAqIEFsbG9jYXRlcyBhIG5ldyA8Y29kZT5TdHJpbmc8L2NvZGU+IHNvIHRoYXQgaXQgcmVwcmVzZW50cyB0aGUKKyAgICAgKiBzZXF1ZW5jZSBvZiBjaGFyYWN0ZXJzIGN1cnJlbnRseSBjb250YWluZWQgaW4gdGhlIGNoYXJhY3RlciBhcnJheQorICAgICAqIGFyZ3VtZW50LiBUaGUgY29udGVudHMgb2YgdGhlIGNoYXJhY3RlciBhcnJheSBhcmUgY29waWVkOyBzdWJzZXF1ZW50CisgICAgICogbW9kaWZpY2F0aW9uIG9mIHRoZSBjaGFyYWN0ZXIgYXJyYXkgZG9lcyBub3QgYWZmZWN0IHRoZSBuZXdseSBjcmVhdGVkCisgICAgICogc3RyaW5nLgorICAgICAqCisgICAgICogQHBhcmFtICB2YWx1ZSAgIHRoZSBpbml0aWFsIHZhbHVlIG9mIHRoZSBzdHJpbmcuCisgICAgICovCisgICAgcHVibGljIFN0cmluZyhjaGFyIHZhbHVlW10pIHsKKwlpbnQgc2l6ZSA9IHZhbHVlLmxlbmd0aDsKKwljaGFyW10gdiA9IG5ldyBjaGFyW3NpemVdOworCVN5c3RlbS5hcnJheWNvcHkodmFsdWUsIDAsIHYsIDAsIHNpemUpOworCXRoaXMub2Zmc2V0ID0gMDsKKwl0aGlzLmNvdW50ID0gc2l6ZTsKKwl0aGlzLnZhbHVlID0gdjsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBBbGxvY2F0ZXMgYSBuZXcgPGNvZGU+U3RyaW5nPC9jb2RlPiB0aGF0IGNvbnRhaW5zIGNoYXJhY3RlcnMgZnJvbQorICAgICAqIGEgc3ViYXJyYXkgb2YgdGhlIGNoYXJhY3RlciBhcnJheSBhcmd1bWVudC4gVGhlIDxjb2RlPm9mZnNldDwvY29kZT4KKyAgICAgKiBhcmd1bWVudCBpcyB0aGUgaW5kZXggb2YgdGhlIGZpcnN0IGNoYXJhY3RlciBvZiB0aGUgc3ViYXJyYXkgYW5kCisgICAgICogdGhlIDxjb2RlPmNvdW50PC9jb2RlPiBhcmd1bWVudCBzcGVjaWZpZXMgdGhlIGxlbmd0aCBvZiB0aGUKKyAgICAgKiBzdWJhcnJheS4gVGhlIGNvbnRlbnRzIG9mIHRoZSBzdWJhcnJheSBhcmUgY29waWVkOyBzdWJzZXF1ZW50CisgICAgICogbW9kaWZpY2F0aW9uIG9mIHRoZSBjaGFyYWN0ZXIgYXJyYXkgZG9lcyBub3QgYWZmZWN0IHRoZSBuZXdseQorICAgICAqIGNyZWF0ZWQgc3RyaW5nLgorICAgICAqCisgICAgICogQHBhcmFtICAgICAgdmFsdWUgICAgYXJyYXkgdGhhdCBpcyB0aGUgc291cmNlIG9mIGNoYXJhY3RlcnMuCisgICAgICogQHBhcmFtICAgICAgb2Zmc2V0ICAgdGhlIGluaXRpYWwgb2Zmc2V0LgorICAgICAqIEBwYXJhbSAgICAgIGNvdW50ICAgIHRoZSBsZW5ndGguCisgICAgICogQGV4Y2VwdGlvbiAgSW5kZXhPdXRPZkJvdW5kc0V4Y2VwdGlvbiAgaWYgdGhlIDxjb2RlPm9mZnNldDwvY29kZT4KKyAgICAgKiAgICAgICAgICAgICAgIGFuZCA8Y29kZT5jb3VudDwvY29kZT4gYXJndW1lbnRzIGluZGV4IGNoYXJhY3RlcnMgb3V0c2lkZQorICAgICAqICAgICAgICAgICAgICAgdGhlIGJvdW5kcyBvZiB0aGUgPGNvZGU+dmFsdWU8L2NvZGU+IGFycmF5LgorICAgICAqLworICAgIHB1YmxpYyBTdHJpbmcoY2hhciB2YWx1ZVtdLCBpbnQgb2Zmc2V0LCBpbnQgY291bnQpIHsKKyAgICAgICAgaWYgKG9mZnNldCA8IDApIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBTdHJpbmdJbmRleE91dE9mQm91bmRzRXhjZXB0aW9uKG9mZnNldCk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGNvdW50IDwgMCkgeworICAgICAgICAgICAgdGhyb3cgbmV3IFN0cmluZ0luZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb24oY291bnQpOworICAgICAgICB9CisgICAgICAgIC8vIE5vdGU6IG9mZnNldCBvciBjb3VudCBtaWdodCBiZSBuZWFyIC0xPj4+MS4KKyAgICAgICAgaWYgKG9mZnNldCA+IHZhbHVlLmxlbmd0aCAtIGNvdW50KSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgU3RyaW5nSW5kZXhPdXRPZkJvdW5kc0V4Y2VwdGlvbihvZmZzZXQgKyBjb3VudCk7CisgICAgICAgIH0KKyAgICAgICAgY2hhcltdIHYgPSBuZXcgY2hhcltjb3VudF07CisgICAgICAgIFN5c3RlbS5hcnJheWNvcHkodmFsdWUsIG9mZnNldCwgdiwgMCwgY291bnQpOworICAgICAgICB0aGlzLm9mZnNldCA9IDA7CisgICAgICAgIHRoaXMuY291bnQgPSBjb3VudDsKKyAgICAgICAgdGhpcy52YWx1ZSA9IHY7CisgICAgfQorCisgICAgLyoqCisgICAgICogQWxsb2NhdGVzIGEgbmV3IDxjb2RlPlN0cmluZzwvY29kZT4gdGhhdCBjb250YWlucyBjaGFyYWN0ZXJzCisgICAgICogZnJvbSBhIHN1YmFycmF5IG9mIHRoZSBVbmljb2RlIGNvZGUgcG9pbnQgYXJyYXkgYXJndW1lbnQuIFRoZQorICAgICAqIDxjb2RlPm9mZnNldDwvY29kZT4gYXJndW1lbnQgaXMgdGhlIGluZGV4IG9mIHRoZSBmaXJzdCBjb2RlCisgICAgICogcG9pbnQgb2YgdGhlIHN1YmFycmF5IGFuZCB0aGUgPGNvZGU+Y291bnQ8L2NvZGU+IGFyZ3VtZW50CisgICAgICogc3BlY2lmaWVzIHRoZSBsZW5ndGggb2YgdGhlIHN1YmFycmF5LiBUaGUgY29udGVudHMgb2YgdGhlCisgICAgICogc3ViYXJyYXkgYXJlIGNvbnZlcnRlZCB0byA8Y29kZT5jaGFyPC9jb2RlPnM7IHN1YnNlcXVlbnQKKyAgICAgKiBtb2RpZmljYXRpb24gb2YgdGhlIDxjb2RlPmludDwvY29kZT4gYXJyYXkgZG9lcyBub3QgYWZmZWN0IHRoZQorICAgICAqIG5ld2x5IGNyZWF0ZWQgc3RyaW5nLgorICAgICAqCisgICAgICogQHBhcmFtIGNvZGVQb2ludHMgYXJyYXkgdGhhdCBpcyB0aGUgc291cmNlIG9mIFVuaWNvZGUgY29kZSBwb2ludHMuCisgICAgICogQHBhcmFtIG9mZnNldCAgICAgdGhlIGluaXRpYWwgb2Zmc2V0LgorICAgICAqIEBwYXJhbSBjb3VudCAgICAgIHRoZSBsZW5ndGguCisgICAgICogQGV4Y2VwdGlvbiBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gaWYgYW55IGludmFsaWQgVW5pY29kZSBjb2RlIHBvaW50CisgICAgICogaXMgZm91bmQgaW4gPGNvZGU+Y29kZVBvaW50czwvY29kZT4KKyAgICAgKiBAZXhjZXB0aW9uICBJbmRleE91dE9mQm91bmRzRXhjZXB0aW9uICBpZiB0aGUgPGNvZGU+b2Zmc2V0PC9jb2RlPgorICAgICAqICAgICAgICAgICAgICAgYW5kIDxjb2RlPmNvdW50PC9jb2RlPiBhcmd1bWVudHMgaW5kZXggY2hhcmFjdGVycyBvdXRzaWRlCisgICAgICogICAgICAgICAgICAgICB0aGUgYm91bmRzIG9mIHRoZSA8Y29kZT5jb2RlUG9pbnRzPC9jb2RlPiBhcnJheS4KKyAgICAgKiBAc2luY2UgMS41CisgICAgICovCisgICAgcHVibGljIFN0cmluZyhpbnRbXSBjb2RlUG9pbnRzLCBpbnQgb2Zmc2V0LCBpbnQgY291bnQpIHsKKyAgICAgICAgaWYgKG9mZnNldCA8IDApIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBTdHJpbmdJbmRleE91dE9mQm91bmRzRXhjZXB0aW9uKG9mZnNldCk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGNvdW50IDwgMCkgeworICAgICAgICAgICAgdGhyb3cgbmV3IFN0cmluZ0luZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb24oY291bnQpOworICAgICAgICB9CisgICAgICAgIC8vIE5vdGU6IG9mZnNldCBvciBjb3VudCBtaWdodCBiZSBuZWFyIC0xPj4+MS4KKyAgICAgICAgaWYgKG9mZnNldCA+IGNvZGVQb2ludHMubGVuZ3RoIC0gY291bnQpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBTdHJpbmdJbmRleE91dE9mQm91bmRzRXhjZXB0aW9uKG9mZnNldCArIGNvdW50KTsKKyAgICAgICAgfQorCisJaW50IGV4cGFuc2lvbiA9IDA7CisJaW50IG1hcmdpbiA9IDE7CisJY2hhcltdIHYgPSBuZXcgY2hhcltjb3VudCArIG1hcmdpbl07CisJaW50IHggPSBvZmZzZXQ7CisJaW50IGogPSAwOworCWZvciAoaW50IGkgPSAwOyBpIDwgY291bnQ7IGkrKykgeworCSAgICBpbnQgYyA9IGNvZGVQb2ludHNbeCsrXTsKKwkgICAgaWYgKGMgPCAwKSB7CisJCXRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oKTsKKwkgICAgfQorCSAgICBpZiAobWFyZ2luIDw9IDAgJiYgKGorMSkgPj0gdi5sZW5ndGgpIHsKKwkJaWYgKGV4cGFuc2lvbiA9PSAwKSB7CisJCSAgICBleHBhbnNpb24gPSAoKCgtbWFyZ2luICsgMSkgKiBjb3VudCkgPDwgMTApIC8gaTsKKwkJICAgIGV4cGFuc2lvbiA+Pj0gMTA7CisJCSAgICBpZiAoZXhwYW5zaW9uIDw9IDApIHsKKwkJCWV4cGFuc2lvbiA9IDE7CisJCSAgICB9CisJCX0gZWxzZSB7CisJCSAgICBleHBhbnNpb24gKj0gMjsKKwkJfQorCQljaGFyW10gdG1wID0gbmV3IGNoYXJbTWF0aC5taW4odi5sZW5ndGgrZXhwYW5zaW9uLCBjb3VudCoyKV07CisJCW1hcmdpbiA9ICh0bXAubGVuZ3RoIC0gdi5sZW5ndGgpIC0gKGNvdW50IC0gaSk7CisJCVN5c3RlbS5hcnJheWNvcHkodiwgMCwgdG1wLCAwLCBqKTsKKwkJdiA9IHRtcDsKKwkgICAgfQorCSAgICBpZiAoYyA8IENoYXJhY3Rlci5NSU5fU1VQUExFTUVOVEFSWV9DT0RFX1BPSU5UKSB7CisJCXZbaisrXSA9IChjaGFyKSBjOworCSAgICB9IGVsc2UgaWYgKGMgPD0gQ2hhcmFjdGVyLk1BWF9DT0RFX1BPSU5UKSB7CisJCUNoYXJhY3Rlci50b1N1cnJvZ2F0ZXMoYywgdiwgaik7CisJCWogKz0gMjsKKwkJbWFyZ2luLS07CisJICAgIH0gZWxzZSB7CisJCXRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oKTsKKwkgICAgfQorCX0KKwl0aGlzLm9mZnNldCA9IDA7CisJdGhpcy52YWx1ZSA9IHY7CisJdGhpcy5jb3VudCA9IGo7CisgICAgfQorCisgICAgLyoqCisgICAgICogQWxsb2NhdGVzIGEgbmV3IDxjb2RlPlN0cmluZzwvY29kZT4gY29uc3RydWN0ZWQgZnJvbSBhIHN1YmFycmF5CisgICAgICogb2YgYW4gYXJyYXkgb2YgOC1iaXQgaW50ZWdlciB2YWx1ZXMuCisgICAgICogPHA+CisgICAgICogVGhlIDxjb2RlPm9mZnNldDwvY29kZT4gYXJndW1lbnQgaXMgdGhlIGluZGV4IG9mIHRoZSBmaXJzdCBieXRlCisgICAgICogb2YgdGhlIHN1YmFycmF5LCBhbmQgdGhlIDxjb2RlPmNvdW50PC9jb2RlPiBhcmd1bWVudCBzcGVjaWZpZXMgdGhlCisgICAgICogbGVuZ3RoIG9mIHRoZSBzdWJhcnJheS4KKyAgICAgKiA8cD4KKyAgICAgKiBFYWNoIDxjb2RlPmJ5dGU8L2NvZGU+IGluIHRoZSBzdWJhcnJheSBpcyBjb252ZXJ0ZWQgdG8gYQorICAgICAqIDxjb2RlPmNoYXI8L2NvZGU+IGFzIHNwZWNpZmllZCBpbiB0aGUgbWV0aG9kIGFib3ZlLgorICAgICAqCisgICAgICogQGRlcHJlY2F0ZWQgVGhpcyBtZXRob2QgZG9lcyBub3QgcHJvcGVybHkgY29udmVydCBieXRlcyBpbnRvIGNoYXJhY3RlcnMuCisgICAgICogQXMgb2YgSkRLJm5ic3A7MS4xLCB0aGUgcHJlZmVycmVkIHdheSB0byBkbyB0aGlzIGlzIHZpYSB0aGUKKyAgICAgKiA8Y29kZT5TdHJpbmc8L2NvZGU+IGNvbnN0cnVjdG9ycyB0aGF0IHRha2UgYSBjaGFyc2V0IG5hbWUgb3IgdGhhdCB1c2UKKyAgICAgKiB0aGUgcGxhdGZvcm0ncyBkZWZhdWx0IGNoYXJzZXQuCisgICAgICoKKyAgICAgKiBAcGFyYW0gICAgICBhc2NpaSAgICAgdGhlIGJ5dGVzIHRvIGJlIGNvbnZlcnRlZCB0byBjaGFyYWN0ZXJzLgorICAgICAqIEBwYXJhbSAgICAgIGhpYnl0ZSAgICB0aGUgdG9wIDggYml0cyBvZiBlYWNoIDE2LWJpdCBVbmljb2RlIGNoYXJhY3Rlci4KKyAgICAgKiBAcGFyYW0gICAgICBvZmZzZXQgICAgdGhlIGluaXRpYWwgb2Zmc2V0LgorICAgICAqIEBwYXJhbSAgICAgIGNvdW50ICAgICB0aGUgbGVuZ3RoLgorICAgICAqIEBleGNlcHRpb24gIEluZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb24gIGlmIHRoZSA8Y29kZT5vZmZzZXQ8L2NvZGU+CisgICAgICogICAgICAgICAgICAgICBvciA8Y29kZT5jb3VudDwvY29kZT4gYXJndW1lbnQgaXMgaW52YWxpZC4KKyAgICAgKiBAc2VlICAgICAgICBqYXZhLmxhbmcuU3RyaW5nI1N0cmluZyhieXRlW10sIGludCkKKyAgICAgKiBAc2VlICAgICAgICBqYXZhLmxhbmcuU3RyaW5nI1N0cmluZyhieXRlW10sIGludCwgaW50LCBqYXZhLmxhbmcuU3RyaW5nKQorICAgICAqIEBzZWUgICAgICAgIGphdmEubGFuZy5TdHJpbmcjU3RyaW5nKGJ5dGVbXSwgaW50LCBpbnQpCisgICAgICogQHNlZSAgICAgICAgamF2YS5sYW5nLlN0cmluZyNTdHJpbmcoYnl0ZVtdLCBqYXZhLmxhbmcuU3RyaW5nKQorICAgICAqIEBzZWUgICAgICAgIGphdmEubGFuZy5TdHJpbmcjU3RyaW5nKGJ5dGVbXSkKKyAgICAgKi8KKyAgICBARGVwcmVjYXRlZAorICAgIHB1YmxpYyBTdHJpbmcoYnl0ZSBhc2NpaVtdLCBpbnQgaGlieXRlLCBpbnQgb2Zmc2V0LCBpbnQgY291bnQpIHsKKwljaGVja0JvdW5kcyhhc2NpaSwgb2Zmc2V0LCBjb3VudCk7CisgICAgICAgIGNoYXIgdmFsdWVbXSA9IG5ldyBjaGFyW2NvdW50XTsKKworICAgICAgICBpZiAoaGlieXRlID09IDApIHsKKyAgICAgICAgICAgIGZvciAoaW50IGkgPSBjb3VudCA7IGktLSA+IDAgOykgeworICAgICAgICAgICAgICAgIHZhbHVlW2ldID0gKGNoYXIpIChhc2NpaVtpICsgb2Zmc2V0XSAmIDB4ZmYpOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgaGlieXRlIDw8PSA4OworICAgICAgICAgICAgZm9yIChpbnQgaSA9IGNvdW50IDsgaS0tID4gMCA7KSB7CisgICAgICAgICAgICAgICAgdmFsdWVbaV0gPSAoY2hhcikgKGhpYnl0ZSB8IChhc2NpaVtpICsgb2Zmc2V0XSAmIDB4ZmYpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCXRoaXMub2Zmc2V0ID0gMDsKKwl0aGlzLmNvdW50ID0gY291bnQ7CisJdGhpcy52YWx1ZSA9IHZhbHVlOworICAgIH0KKworICAgIC8qKgorICAgICAqIEFsbG9jYXRlcyBhIG5ldyA8Y29kZT5TdHJpbmc8L2NvZGU+IGNvbnRhaW5pbmcgY2hhcmFjdGVycworICAgICAqIGNvbnN0cnVjdGVkIGZyb20gYW4gYXJyYXkgb2YgOC1iaXQgaW50ZWdlciB2YWx1ZXMuIEVhY2ggY2hhcmFjdGVyCisgICAgICogPGk+YzwvaT5pbiB0aGUgcmVzdWx0aW5nIHN0cmluZyBpcyBjb25zdHJ1Y3RlZCBmcm9tIHRoZQorICAgICAqIGNvcnJlc3BvbmRpbmcgY29tcG9uZW50IDxpPmI8L2k+IGluIHRoZSBieXRlIGFycmF5IHN1Y2ggdGhhdDoKKyAgICAgKiA8cD48YmxvY2txdW90ZT48cHJlPgorICAgICAqICAgICA8Yj48aT5jPC9pPjwvYj4gPT0gKGNoYXIpKCgoaGlieXRlICZhbXA7IDB4ZmYpICZsdDsmbHQ7IDgpCisgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgfCAoPGI+PGk+YjwvaT48L2I+ICZhbXA7IDB4ZmYpKQorICAgICAqIDwvcHJlPjwvYmxvY2txdW90ZT4KKyAgICAgKgorICAgICAqIEBkZXByZWNhdGVkIFRoaXMgbWV0aG9kIGRvZXMgbm90IHByb3Blcmx5IGNvbnZlcnQgYnl0ZXMgaW50byBjaGFyYWN0ZXJzLgorICAgICAqIEFzIG9mIEpESyZuYnNwOzEuMSwgdGhlIHByZWZlcnJlZCB3YXkgdG8gZG8gdGhpcyBpcyB2aWEgdGhlCisgICAgICogPGNvZGU+U3RyaW5nPC9jb2RlPiBjb25zdHJ1Y3RvcnMgdGhhdCB0YWtlIGEgY2hhcnNldCBuYW1lIG9yCisgICAgICogdGhhdCB1c2UgdGhlIHBsYXRmb3JtJ3MgZGVmYXVsdCBjaGFyc2V0LgorICAgICAqCisgICAgICogQHBhcmFtICAgICAgYXNjaWkgICAgdGhlIGJ5dGVzIHRvIGJlIGNvbnZlcnRlZCB0byBjaGFyYWN0ZXJzLgorICAgICAqIEBwYXJhbSAgICAgIGhpYnl0ZSAgIHRoZSB0b3AgOCBiaXRzIG9mIGVhY2ggMTYtYml0IFVuaWNvZGUgY2hhcmFjdGVyLgorICAgICAqIEBzZWUgICAgICAgIGphdmEubGFuZy5TdHJpbmcjU3RyaW5nKGJ5dGVbXSwgaW50LCBpbnQsIGphdmEubGFuZy5TdHJpbmcpCisgICAgICogQHNlZSAgICAgICAgamF2YS5sYW5nLlN0cmluZyNTdHJpbmcoYnl0ZVtdLCBpbnQsIGludCkKKyAgICAgKiBAc2VlICAgICAgICBqYXZhLmxhbmcuU3RyaW5nI1N0cmluZyhieXRlW10sIGphdmEubGFuZy5TdHJpbmcpCisgICAgICogQHNlZSAgICAgICAgamF2YS5sYW5nLlN0cmluZyNTdHJpbmcoYnl0ZVtdKQorICAgICAqLworICAgIEBEZXByZWNhdGVkCisgICAgcHVibGljIFN0cmluZyhieXRlIGFzY2lpW10sIGludCBoaWJ5dGUpIHsKKyAgICAgICAgdGhpcyhhc2NpaSwgaGlieXRlLCAwLCBhc2NpaS5sZW5ndGgpOworICAgIH0KKworICAgIC8qIENvbW1vbiBwcml2YXRlIHV0aWxpdHkgbWV0aG9kIHVzZWQgdG8gYm91bmRzIGNoZWNrIHRoZSBieXRlIGFycmF5CisgICAgICogYW5kIHJlcXVlc3RlZCBvZmZzZXQgJiBsZW5ndGggdmFsdWVzIHVzZWQgYnkgdGhlIFN0cmluZyhieXRlW10sLi4pCisgICAgICogY29uc3RydWN0b3JzLgorICAgICAqLworICAgIHByaXZhdGUgc3RhdGljIHZvaWQgY2hlY2tCb3VuZHMoYnl0ZVtdIGJ5dGVzLCBpbnQgb2Zmc2V0LCBpbnQgbGVuZ3RoKSB7CisJaWYgKGxlbmd0aCA8IDApCisJICAgIHRocm93IG5ldyBTdHJpbmdJbmRleE91dE9mQm91bmRzRXhjZXB0aW9uKGxlbmd0aCk7CisJaWYgKG9mZnNldCA8IDApCisJICAgIHRocm93IG5ldyBTdHJpbmdJbmRleE91dE9mQm91bmRzRXhjZXB0aW9uKG9mZnNldCk7CisJaWYgKG9mZnNldCA+IGJ5dGVzLmxlbmd0aCAtIGxlbmd0aCkKKwkgICAgdGhyb3cgbmV3IFN0cmluZ0luZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb24ob2Zmc2V0ICsgbGVuZ3RoKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDb25zdHJ1Y3RzIGEgbmV3IDx0dD5TdHJpbmc8L3R0PiBieSBkZWNvZGluZyB0aGUgc3BlY2lmaWVkIHN1YmFycmF5IG9mCisgICAgICogYnl0ZXMgdXNpbmcgdGhlIHNwZWNpZmllZCBjaGFyc2V0LiAgVGhlIGxlbmd0aCBvZiB0aGUgbmV3CisgICAgICogPHR0PlN0cmluZzwvdHQ+IGlzIGEgZnVuY3Rpb24gb2YgdGhlIGNoYXJzZXQsIGFuZCBoZW5jZSBtYXkgbm90IGJlIGVxdWFsCisgICAgICogdG8gdGhlIGxlbmd0aCBvZiB0aGUgc3ViYXJyYXkuCisgICAgICoKKyAgICAgKiA8cD4gVGhlIGJlaGF2aW9yIG9mIHRoaXMgY29uc3RydWN0b3Igd2hlbiB0aGUgZ2l2ZW4gYnl0ZXMgYXJlIG5vdCB2YWxpZAorICAgICAqIGluIHRoZSBnaXZlbiBjaGFyc2V0IGlzIHVuc3BlY2lmaWVkLiAgVGhlIHtAbGluaworICAgICAqIGphdmEubmlvLmNoYXJzZXQuQ2hhcnNldERlY29kZXJ9IGNsYXNzIHNob3VsZCBiZSB1c2VkIHdoZW4gbW9yZSBjb250cm9sCisgICAgICogb3ZlciB0aGUgZGVjb2RpbmcgcHJvY2VzcyBpcyByZXF1aXJlZC4KKyAgICAgKgorICAgICAqIEBwYXJhbSAgYnl0ZXMgICB0aGUgYnl0ZXMgdG8gYmUgZGVjb2RlZCBpbnRvIGNoYXJhY3RlcnMKKyAgICAgKiBAcGFyYW0gIG9mZnNldCAgdGhlIGluZGV4IG9mIHRoZSBmaXJzdCBieXRlIHRvIGRlY29kZQorICAgICAqIEBwYXJhbSAgbGVuZ3RoICB0aGUgbnVtYmVyIG9mIGJ5dGVzIHRvIGRlY29kZQorICAgICAqIEBwYXJhbSAgY2hhcnNldE5hbWUgIHRoZSBuYW1lIG9mIGEgc3VwcG9ydGVkCisgICAgICogICAgICAgICAgICAgICAgIHtAbGluayBqYXZhLm5pby5jaGFyc2V0LkNoYXJzZXQgPC9jb2RlPmNoYXJzZXQ8Y29kZT59CisgICAgICogQHRocm93cyAgVW5zdXBwb3J0ZWRFbmNvZGluZ0V4Y2VwdGlvbgorICAgICAqICAgICAgICAgIGlmIHRoZSBuYW1lZCBjaGFyc2V0IGlzIG5vdCBzdXBwb3J0ZWQKKyAgICAgKiBAdGhyb3dzICBJbmRleE91dE9mQm91bmRzRXhjZXB0aW9uCisgICAgICogICAgICAgICAgaWYgdGhlIDx0dD5vZmZzZXQ8L3R0PiBhbmQgPHR0Pmxlbmd0aDwvdHQ+IGFyZ3VtZW50cworICAgICAqICAgICAgICAgIGluZGV4IGNoYXJhY3RlcnMgb3V0c2lkZSB0aGUgYm91bmRzIG9mIHRoZSA8dHQ+Ynl0ZXM8L3R0PgorICAgICAqICAgICAgICAgIGFycmF5CisgICAgICogQHNpbmNlIEpESzEuMQorICAgICAqLworICAgIHB1YmxpYyBTdHJpbmcoYnl0ZSBieXRlc1tdLCBpbnQgb2Zmc2V0LCBpbnQgbGVuZ3RoLCBTdHJpbmcgY2hhcnNldE5hbWUpCisJdGhyb3dzIFVuc3VwcG9ydGVkRW5jb2RpbmdFeGNlcHRpb24KKyAgICB7CisJaWYgKGNoYXJzZXROYW1lID09IG51bGwpCisJICAgIHRocm93IG5ldyBOdWxsUG9pbnRlckV4Y2VwdGlvbigiY2hhcnNldE5hbWUiKTsKKwljaGVja0JvdW5kcyhieXRlcywgb2Zmc2V0LCBsZW5ndGgpOworCWNoYXJbXSB2ID0gU3RyaW5nQ29kaW5nLmRlY29kZShjaGFyc2V0TmFtZSwgYnl0ZXMsIG9mZnNldCwgbGVuZ3RoKTsKKwl0aGlzLm9mZnNldCA9IDA7CisJdGhpcy5jb3VudCA9IHYubGVuZ3RoOworCXRoaXMudmFsdWUgPSB2OworICAgIH0KKworICAgIC8qKgorICAgICAqIENvbnN0cnVjdHMgYSBuZXcgPHR0PlN0cmluZzwvdHQ+IGJ5IGRlY29kaW5nIHRoZSBzcGVjaWZpZWQgYXJyYXkgb2YKKyAgICAgKiBieXRlcyB1c2luZyB0aGUgc3BlY2lmaWVkIGNoYXJzZXQuICBUaGUgbGVuZ3RoIG9mIHRoZSBuZXcKKyAgICAgKiA8dHQ+U3RyaW5nPC90dD4gaXMgYSBmdW5jdGlvbiBvZiB0aGUgY2hhcnNldCwgYW5kIGhlbmNlIG1heSBub3QgYmUgZXF1YWwKKyAgICAgKiB0byB0aGUgbGVuZ3RoIG9mIHRoZSBieXRlIGFycmF5LgorICAgICAqCisgICAgICogPHA+IFRoZSBiZWhhdmlvciBvZiB0aGlzIGNvbnN0cnVjdG9yIHdoZW4gdGhlIGdpdmVuIGJ5dGVzIGFyZSBub3QgdmFsaWQKKyAgICAgKiBpbiB0aGUgZ2l2ZW4gY2hhcnNldCBpcyB1bnNwZWNpZmllZC4gIFRoZSB7QGxpbmsKKyAgICAgKiBqYXZhLm5pby5jaGFyc2V0LkNoYXJzZXREZWNvZGVyfSBjbGFzcyBzaG91bGQgYmUgdXNlZCB3aGVuIG1vcmUgY29udHJvbAorICAgICAqIG92ZXIgdGhlIGRlY29kaW5nIHByb2Nlc3MgaXMgcmVxdWlyZWQuCisgICAgICoKKyAgICAgKiBAcGFyYW0gIGJ5dGVzICAgdGhlIGJ5dGVzIHRvIGJlIGRlY29kZWQgaW50byBjaGFyYWN0ZXJzCisgICAgICogQHBhcmFtICBjaGFyc2V0TmFtZSAgdGhlIG5hbWUgb2YgYSBzdXBwb3J0ZWQKKyAgICAgKiAgICAgICAgICAgICAgICAge0BsaW5rIGphdmEubmlvLmNoYXJzZXQuQ2hhcnNldCA8L2NvZGU+Y2hhcnNldDxjb2RlPn0KKyAgICAgKgorICAgICAqIEBleGNlcHRpb24gIFVuc3VwcG9ydGVkRW5jb2RpbmdFeGNlcHRpb24KKyAgICAgKiAgICAgICAgICAgICBJZiB0aGUgbmFtZWQgY2hhcnNldCBpcyBub3Qgc3VwcG9ydGVkCisgICAgICogQHNpbmNlICAgICAgSkRLMS4xCisgICAgICovCisgICAgcHVibGljIFN0cmluZyhieXRlIGJ5dGVzW10sIFN0cmluZyBjaGFyc2V0TmFtZSkKKwl0aHJvd3MgVW5zdXBwb3J0ZWRFbmNvZGluZ0V4Y2VwdGlvbgorICAgIHsKKwl0aGlzKGJ5dGVzLCAwLCBieXRlcy5sZW5ndGgsIGNoYXJzZXROYW1lKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDb25zdHJ1Y3RzIGEgbmV3IDx0dD5TdHJpbmc8L3R0PiBieSBkZWNvZGluZyB0aGUgc3BlY2lmaWVkIHN1YmFycmF5IG9mCisgICAgICogYnl0ZXMgdXNpbmcgdGhlIHBsYXRmb3JtJ3MgZGVmYXVsdCBjaGFyc2V0LiAgVGhlIGxlbmd0aCBvZiB0aGUgbmV3CisgICAgICogPHR0PlN0cmluZzwvdHQ+IGlzIGEgZnVuY3Rpb24gb2YgdGhlIGNoYXJzZXQsIGFuZCBoZW5jZSBtYXkgbm90IGJlIGVxdWFsCisgICAgICogdG8gdGhlIGxlbmd0aCBvZiB0aGUgc3ViYXJyYXkuCisgICAgICoKKyAgICAgKiA8cD4gVGhlIGJlaGF2aW9yIG9mIHRoaXMgY29uc3RydWN0b3Igd2hlbiB0aGUgZ2l2ZW4gYnl0ZXMgYXJlIG5vdCB2YWxpZAorICAgICAqIGluIHRoZSBkZWZhdWx0IGNoYXJzZXQgaXMgdW5zcGVjaWZpZWQuICBUaGUge0BsaW5rCisgICAgICogamF2YS5uaW8uY2hhcnNldC5DaGFyc2V0RGVjb2Rlcn0gY2xhc3Mgc2hvdWxkIGJlIHVzZWQgd2hlbiBtb3JlIGNvbnRyb2wKKyAgICAgKiBvdmVyIHRoZSBkZWNvZGluZyBwcm9jZXNzIGlzIHJlcXVpcmVkLgorICAgICAqCisgICAgICogQHBhcmFtICBieXRlcyAgIHRoZSBieXRlcyB0byBiZSBkZWNvZGVkIGludG8gY2hhcmFjdGVycworICAgICAqIEBwYXJhbSAgb2Zmc2V0ICB0aGUgaW5kZXggb2YgdGhlIGZpcnN0IGJ5dGUgdG8gZGVjb2RlCisgICAgICogQHBhcmFtICBsZW5ndGggIHRoZSBudW1iZXIgb2YgYnl0ZXMgdG8gZGVjb2RlCisgICAgICogQHRocm93cyBJbmRleE91dE9mQm91bmRzRXhjZXB0aW9uCisgICAgICogICAgICAgICBpZiB0aGUgPGNvZGU+b2Zmc2V0PC9jb2RlPiBhbmQgdGhlIDxjb2RlPmxlbmd0aDwvY29kZT4KKyAgICAgKiAgICAgICAgIGFyZ3VtZW50cyBpbmRleCBjaGFyYWN0ZXJzIG91dHNpZGUgdGhlIGJvdW5kcyBvZiB0aGUKKyAgICAgKiAgICAgICAgIDxjb2RlPmJ5dGVzPC9jb2RlPiBhcnJheQorICAgICAqIEBzaW5jZSAgSkRLMS4xCisgICAgICovCisgICAgcHVibGljIFN0cmluZyhieXRlIGJ5dGVzW10sIGludCBvZmZzZXQsIGludCBsZW5ndGgpIHsKKwljaGVja0JvdW5kcyhieXRlcywgb2Zmc2V0LCBsZW5ndGgpOworCWNoYXJbXSB2ICA9IFN0cmluZ0NvZGluZy5kZWNvZGUoYnl0ZXMsIG9mZnNldCwgbGVuZ3RoKTsKKwl0aGlzLm9mZnNldCA9IDA7CisJdGhpcy5jb3VudCA9IHYubGVuZ3RoOworCXRoaXMudmFsdWUgPSB2OworICAgIH0KKworICAgIC8qKgorICAgICAqIENvbnN0cnVjdHMgYSBuZXcgPHR0PlN0cmluZzwvdHQ+IGJ5IGRlY29kaW5nIHRoZSBzcGVjaWZpZWQgYXJyYXkgb2YKKyAgICAgKiBieXRlcyB1c2luZyB0aGUgcGxhdGZvcm0ncyBkZWZhdWx0IGNoYXJzZXQuICBUaGUgbGVuZ3RoIG9mIHRoZSBuZXcKKyAgICAgKiA8dHQ+U3RyaW5nPC90dD4gaXMgYSBmdW5jdGlvbiBvZiB0aGUgY2hhcnNldCwgYW5kIGhlbmNlIG1heSBub3QgYmUgZXF1YWwKKyAgICAgKiB0byB0aGUgbGVuZ3RoIG9mIHRoZSBieXRlIGFycmF5LgorICAgICAqCisgICAgICogPHA+IFRoZSBiZWhhdmlvciBvZiB0aGlzIGNvbnN0cnVjdG9yIHdoZW4gdGhlIGdpdmVuIGJ5dGVzIGFyZSBub3QgdmFsaWQKKyAgICAgKiBpbiB0aGUgZGVmYXVsdCBjaGFyc2V0IGlzIHVuc3BlY2lmaWVkLiAgVGhlIHtAbGluaworICAgICAqIGphdmEubmlvLmNoYXJzZXQuQ2hhcnNldERlY29kZXJ9IGNsYXNzIHNob3VsZCBiZSB1c2VkIHdoZW4gbW9yZSBjb250cm9sCisgICAgICogb3ZlciB0aGUgZGVjb2RpbmcgcHJvY2VzcyBpcyByZXF1aXJlZC4KKyAgICAgKgorICAgICAqIEBwYXJhbSAgYnl0ZXMgICB0aGUgYnl0ZXMgdG8gYmUgZGVjb2RlZCBpbnRvIGNoYXJhY3RlcnMKKyAgICAgKiBAc2luY2UgIEpESzEuMQorICAgICAqLworICAgIHB1YmxpYyBTdHJpbmcoYnl0ZSBieXRlc1tdKSB7CisJdGhpcyhieXRlcywgMCwgYnl0ZXMubGVuZ3RoKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBBbGxvY2F0ZXMgYSBuZXcgc3RyaW5nIHRoYXQgY29udGFpbnMgdGhlIHNlcXVlbmNlIG9mIGNoYXJhY3RlcnMKKyAgICAgKiBjdXJyZW50bHkgY29udGFpbmVkIGluIHRoZSBzdHJpbmcgYnVmZmVyIGFyZ3VtZW50LiBUaGUgY29udGVudHMgb2YKKyAgICAgKiB0aGUgc3RyaW5nIGJ1ZmZlciBhcmUgY29waWVkOyBzdWJzZXF1ZW50IG1vZGlmaWNhdGlvbiBvZiB0aGUgc3RyaW5nCisgICAgICogYnVmZmVyIGRvZXMgbm90IGFmZmVjdCB0aGUgbmV3bHkgY3JlYXRlZCBzdHJpbmcuCisgICAgICoKKyAgICAgKiBAcGFyYW0gICBidWZmZXIgICBhIDxjb2RlPlN0cmluZ0J1ZmZlcjwvY29kZT4uCisgICAgICovCisgICAgcHVibGljIFN0cmluZyhTdHJpbmdCdWZmZXIgYnVmZmVyKSB7CisgICAgICAgIFN0cmluZyByZXN1bHQgPSBidWZmZXIudG9TdHJpbmcoKTsKKyAgICAgICAgdGhpcy52YWx1ZSA9IHJlc3VsdC52YWx1ZTsKKyAgICAgICAgdGhpcy5jb3VudCA9IHJlc3VsdC5jb3VudDsKKyAgICAgICAgdGhpcy5vZmZzZXQgPSByZXN1bHQub2Zmc2V0OworICAgIH0KKworICAgIC8qKgorICAgICAqIEFsbG9jYXRlcyBhIG5ldyBzdHJpbmcgdGhhdCBjb250YWlucyB0aGUgc2VxdWVuY2Ugb2YgY2hhcmFjdGVycworICAgICAqIGN1cnJlbnRseSBjb250YWluZWQgaW4gdGhlIHN0cmluZyBidWlsZGVyIGFyZ3VtZW50LiBUaGUgY29udGVudHMgb2YKKyAgICAgKiB0aGUgc3RyaW5nIGJ1aWxkZXIgYXJlIGNvcGllZDsgc3Vic2VxdWVudCBtb2RpZmljYXRpb24gb2YgdGhlIHN0cmluZworICAgICAqIGJ1aWxkZXIgZG9lcyBub3QgYWZmZWN0IHRoZSBuZXdseSBjcmVhdGVkIHN0cmluZy4KKyAgICAgKgorICAgICAqIDxwPlRoaXMgY29uc3RydWN0b3IgaXMgcHJvdmlkZWQgdG8gZWFzZSBtaWdyYXRpb24gdG8KKyAgICAgKiA8Y29kZT5TdHJpbmdCdWlsZGVyPC9jb2RlPi4gT2J0YWluaW5nIGEgc3RyaW5nIGZyb20gYSBzdHJpbmcgYnVpbGRlcgorICAgICAqIHZpYSB0aGUgPGNvZGU+dG9TdHJpbmc8L2NvZGU+IG1ldGhvZCBpcyBsaWtlbHkgdG8gcnVuIGZhc3RlciBhbmQgaXMKKyAgICAgKiBnZW5lcmFsbHkgcHJlZmVycmVkLgorICAgICAqCisgICAgICogQHBhcmFtICAgYnVpbGRlciAgIGEgPGNvZGU+U3RyaW5nQnVpbGRlcjwvY29kZT4KKyAgICAgKiBAc2luY2UgMS41CisgICAgICovCisgICAgcHVibGljIFN0cmluZyhTdHJpbmdCdWlsZGVyIGJ1aWxkZXIpIHsKKyAgICAgICAgU3RyaW5nIHJlc3VsdCA9IGJ1aWxkZXIudG9TdHJpbmcoKTsKKyAgICAgICAgdGhpcy52YWx1ZSA9IHJlc3VsdC52YWx1ZTsKKyAgICAgICAgdGhpcy5jb3VudCA9IHJlc3VsdC5jb3VudDsKKyAgICAgICAgdGhpcy5vZmZzZXQgPSByZXN1bHQub2Zmc2V0OworICAgIH0KKworCisgICAgLy8gUGFja2FnZSBwcml2YXRlIGNvbnN0cnVjdG9yIHdoaWNoIHNoYXJlcyB2YWx1ZSBhcnJheSBmb3Igc3BlZWQuCisgICAgU3RyaW5nKGludCBvZmZzZXQsIGludCBjb3VudCwgY2hhciB2YWx1ZVtdKSB7CisJdGhpcy52YWx1ZSA9IHZhbHVlOworCXRoaXMub2Zmc2V0ID0gb2Zmc2V0OworCXRoaXMuY291bnQgPSBjb3VudDsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIHRoZSBsZW5ndGggb2YgdGhpcyBzdHJpbmcuCisgICAgICogVGhlIGxlbmd0aCBpcyBlcXVhbCB0byB0aGUgbnVtYmVyIG9mIDE2LWJpdAorICAgICAqIFVuaWNvZGUgY2hhcmFjdGVycyBpbiB0aGUgc3RyaW5nLgorICAgICAqCisgICAgICogQHJldHVybiAgdGhlIGxlbmd0aCBvZiB0aGUgc2VxdWVuY2Ugb2YgY2hhcmFjdGVycyByZXByZXNlbnRlZCBieSB0aGlzCisgICAgICogICAgICAgICAgb2JqZWN0LgorICAgICAqLworICAgIHB1YmxpYyBpbnQgbGVuZ3RoKCkgeworICAgICAgICByZXR1cm4gY291bnQ7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJucyB0aGUgPGNvZGU+Y2hhcjwvY29kZT4gdmFsdWUgYXQgdGhlCisgICAgICogc3BlY2lmaWVkIGluZGV4LiBBbiBpbmRleCByYW5nZXMgZnJvbSA8Y29kZT4wPC9jb2RlPiB0bworICAgICAqIDxjb2RlPmxlbmd0aCgpIC0gMTwvY29kZT4uIFRoZSBmaXJzdCA8Y29kZT5jaGFyPC9jb2RlPiB2YWx1ZSBvZiB0aGUgc2VxdWVuY2UKKyAgICAgKiBpcyBhdCBpbmRleCA8Y29kZT4wPC9jb2RlPiwgdGhlIG5leHQgYXQgaW5kZXggPGNvZGU+MTwvY29kZT4sCisgICAgICogYW5kIHNvIG9uLCBhcyBmb3IgYXJyYXkgaW5kZXhpbmcuCisgICAgICoKKyAgICAgKiA8cD5JZiB0aGUgPGNvZGU+Y2hhcjwvY29kZT4gdmFsdWUgc3BlY2lmaWVkIGJ5IHRoZSBpbmRleCBpcyBhCisgICAgICogPGEgaHJlZj0iQ2hhcmFjdGVyLmh0bWwjdW5pY29kZSI+c3Vycm9nYXRlPC9hPiwgdGhlIHN1cnJvZ2F0ZQorICAgICAqIHZhbHVlIGlzIHJldHVybmVkLgorICAgICAqCisgICAgICogQHBhcmFtICAgICAgaW5kZXggICB0aGUgaW5kZXggb2YgdGhlIDxjb2RlPmNoYXI8L2NvZGU+IHZhbHVlLgorICAgICAqIEByZXR1cm4gICAgIHRoZSA8Y29kZT5jaGFyPC9jb2RlPiB2YWx1ZSBhdCB0aGUgc3BlY2lmaWVkIGluZGV4IG9mIHRoaXMgc3RyaW5nLgorICAgICAqICAgICAgICAgICAgIFRoZSBmaXJzdCA8Y29kZT5jaGFyPC9jb2RlPiB2YWx1ZSBpcyBhdCBpbmRleCA8Y29kZT4wPC9jb2RlPi4KKyAgICAgKiBAZXhjZXB0aW9uICBJbmRleE91dE9mQm91bmRzRXhjZXB0aW9uICBpZiB0aGUgPGNvZGU+aW5kZXg8L2NvZGU+CisgICAgICogICAgICAgICAgICAgYXJndW1lbnQgaXMgbmVnYXRpdmUgb3Igbm90IGxlc3MgdGhhbiB0aGUgbGVuZ3RoIG9mIHRoaXMKKyAgICAgKiAgICAgICAgICAgICBzdHJpbmcuCisgICAgICovCisgICAgcHVibGljIGNoYXIgY2hhckF0KGludCBpbmRleCkgeworICAgICAgICBpZiAoKGluZGV4IDwgMCkgfHwgKGluZGV4ID49IGNvdW50KSkgeworICAgICAgICAgICAgdGhyb3cgbmV3IFN0cmluZ0luZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb24oaW5kZXgpOworICAgICAgICB9CisgICAgICAgIHJldHVybiB2YWx1ZVtpbmRleCArIG9mZnNldF07CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJucyB0aGUgY2hhcmFjdGVyIChVbmljb2RlIGNvZGUgcG9pbnQpIGF0IHRoZSBzcGVjaWZpZWQKKyAgICAgKiBpbmRleC4gVGhlIGluZGV4IHJlZmVycyB0byA8Y29kZT5jaGFyPC9jb2RlPiB2YWx1ZXMKKyAgICAgKiAoVW5pY29kZSBjb2RlIHVuaXRzKSBhbmQgcmFuZ2VzIGZyb20gPGNvZGU+MDwvY29kZT4gdG8KKyAgICAgKiB7QGxpbmsgI2xlbmd0aCgpfTxjb2RlPiAtIDE8L2NvZGU+LgorICAgICAqCisgICAgICogPHA+IElmIHRoZSA8Y29kZT5jaGFyPC9jb2RlPiB2YWx1ZSBzcGVjaWZpZWQgYXQgdGhlIGdpdmVuIGluZGV4CisgICAgICogaXMgaW4gdGhlIGhpZ2gtc3Vycm9nYXRlIHJhbmdlLCB0aGUgZm9sbG93aW5nIGluZGV4IGlzIGxlc3MKKyAgICAgKiB0aGFuIHRoZSBsZW5ndGggb2YgdGhpcyA8Y29kZT5TdHJpbmc8L2NvZGU+LCBhbmQgdGhlCisgICAgICogPGNvZGU+Y2hhcjwvY29kZT4gdmFsdWUgYXQgdGhlIGZvbGxvd2luZyBpbmRleCBpcyBpbiB0aGUKKyAgICAgKiBsb3ctc3Vycm9nYXRlIHJhbmdlLCB0aGVuIHRoZSBzdXBwbGVtZW50YXJ5IGNvZGUgcG9pbnQKKyAgICAgKiBjb3JyZXNwb25kaW5nIHRvIHRoaXMgc3Vycm9nYXRlIHBhaXIgaXMgcmV0dXJuZWQuIE90aGVyd2lzZSwKKyAgICAgKiB0aGUgPGNvZGU+Y2hhcjwvY29kZT4gdmFsdWUgYXQgdGhlIGdpdmVuIGluZGV4IGlzIHJldHVybmVkLgorICAgICAqCisgICAgICogQHBhcmFtICAgICAgaW5kZXggdGhlIGluZGV4IHRvIHRoZSA8Y29kZT5jaGFyPC9jb2RlPiB2YWx1ZXMKKyAgICAgKiBAcmV0dXJuICAgICB0aGUgY29kZSBwb2ludCB2YWx1ZSBvZiB0aGUgY2hhcmFjdGVyIGF0IHRoZQorICAgICAqICAgICAgICAgICAgIDxjb2RlPmluZGV4PC9jb2RlPgorICAgICAqIEBleGNlcHRpb24gIEluZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb24gIGlmIHRoZSA8Y29kZT5pbmRleDwvY29kZT4KKyAgICAgKiAgICAgICAgICAgICBhcmd1bWVudCBpcyBuZWdhdGl2ZSBvciBub3QgbGVzcyB0aGFuIHRoZSBsZW5ndGggb2YgdGhpcworICAgICAqICAgICAgICAgICAgIHN0cmluZy4KKyAgICAgKiBAc2luY2UgICAgICAxLjUKKyAgICAgKi8KKyAgICBwdWJsaWMgaW50IGNvZGVQb2ludEF0KGludCBpbmRleCkgeworICAgICAgICBpZiAoKGluZGV4IDwgMCkgfHwgKGluZGV4ID49IGNvdW50KSkgeworICAgICAgICAgICAgdGhyb3cgbmV3IFN0cmluZ0luZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb24oaW5kZXgpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBDaGFyYWN0ZXIuY29kZVBvaW50QXRJbXBsKHZhbHVlLCBvZmZzZXQgKyBpbmRleCwgb2Zmc2V0ICsgY291bnQpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybnMgdGhlIGNoYXJhY3RlciAoVW5pY29kZSBjb2RlIHBvaW50KSBiZWZvcmUgdGhlIHNwZWNpZmllZAorICAgICAqIGluZGV4LiBUaGUgaW5kZXggcmVmZXJzIHRvIDxjb2RlPmNoYXI8L2NvZGU+IHZhbHVlcworICAgICAqIChVbmljb2RlIGNvZGUgdW5pdHMpIGFuZCByYW5nZXMgZnJvbSA8Y29kZT4xPC9jb2RlPiB0byB7QGxpbmsKKyAgICAgKiBDaGFyU2VxdWVuY2UjbGVuZ3RoKCkgbGVuZ3RofS4KKyAgICAgKgorICAgICAqIDxwPiBJZiB0aGUgPGNvZGU+Y2hhcjwvY29kZT4gdmFsdWUgYXQgPGNvZGU+KGluZGV4IC0gMSk8L2NvZGU+CisgICAgICogaXMgaW4gdGhlIGxvdy1zdXJyb2dhdGUgcmFuZ2UsIDxjb2RlPihpbmRleCAtIDIpPC9jb2RlPiBpcyBub3QKKyAgICAgKiBuZWdhdGl2ZSwgYW5kIHRoZSA8Y29kZT5jaGFyPC9jb2RlPiB2YWx1ZSBhdCA8Y29kZT4oaW5kZXggLQorICAgICAqIDIpPC9jb2RlPiBpcyBpbiB0aGUgaGlnaC1zdXJyb2dhdGUgcmFuZ2UsIHRoZW4gdGhlCisgICAgICogc3VwcGxlbWVudGFyeSBjb2RlIHBvaW50IHZhbHVlIG9mIHRoZSBzdXJyb2dhdGUgcGFpciBpcworICAgICAqIHJldHVybmVkLiBJZiB0aGUgPGNvZGU+Y2hhcjwvY29kZT4gdmFsdWUgYXQgPGNvZGU+aW5kZXggLQorICAgICAqIDE8L2NvZGU+IGlzIGFuIHVucGFpcmVkIGxvdy1zdXJyb2dhdGUgb3IgYSBoaWdoLXN1cnJvZ2F0ZSwgdGhlCisgICAgICogc3Vycm9nYXRlIHZhbHVlIGlzIHJldHVybmVkLgorICAgICAqCisgICAgICogQHBhcmFtICAgICBpbmRleCB0aGUgaW5kZXggZm9sbG93aW5nIHRoZSBjb2RlIHBvaW50IHRoYXQgc2hvdWxkIGJlIHJldHVybmVkCisgICAgICogQHJldHVybiAgICB0aGUgVW5pY29kZSBjb2RlIHBvaW50IHZhbHVlIGJlZm9yZSB0aGUgZ2l2ZW4gaW5kZXguCisgICAgICogQGV4Y2VwdGlvbiBJbmRleE91dE9mQm91bmRzRXhjZXB0aW9uIGlmIHRoZSA8Y29kZT5pbmRleDwvY29kZT4KKyAgICAgKiAgICAgICAgICAgIGFyZ3VtZW50IGlzIGxlc3MgdGhhbiAxIG9yIGdyZWF0ZXIgdGhhbiB0aGUgbGVuZ3RoCisgICAgICogICAgICAgICAgICBvZiB0aGlzIHN0cmluZy4KKyAgICAgKiBAc2luY2UgICAgIDEuNQorICAgICAqLworICAgIHB1YmxpYyBpbnQgY29kZVBvaW50QmVmb3JlKGludCBpbmRleCkgeworCWludCBpID0gaW5kZXggLSAxOworICAgICAgICBpZiAoKGkgPCAwKSB8fCAoaSA+PSBjb3VudCkpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBTdHJpbmdJbmRleE91dE9mQm91bmRzRXhjZXB0aW9uKGluZGV4KTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gQ2hhcmFjdGVyLmNvZGVQb2ludEJlZm9yZUltcGwodmFsdWUsIG9mZnNldCArIGluZGV4LCBvZmZzZXQpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybnMgdGhlIG51bWJlciBvZiBVbmljb2RlIGNvZGUgcG9pbnRzIGluIHRoZSBzcGVjaWZpZWQgdGV4dAorICAgICAqIHJhbmdlIG9mIHRoaXMgPGNvZGU+U3RyaW5nPC9jb2RlPi4gVGhlIHRleHQgcmFuZ2UgYmVnaW5zIGF0IHRoZQorICAgICAqIHNwZWNpZmllZCA8Y29kZT5iZWdpbkluZGV4PC9jb2RlPiBhbmQgZXh0ZW5kcyB0byB0aGUKKyAgICAgKiA8Y29kZT5jaGFyPC9jb2RlPiBhdCBpbmRleCA8Y29kZT5lbmRJbmRleCAtIDE8L2NvZGU+LiBUaHVzIHRoZQorICAgICAqIGxlbmd0aCAoaW4gPGNvZGU+Y2hhcjwvY29kZT5zKSBvZiB0aGUgdGV4dCByYW5nZSBpcworICAgICAqIDxjb2RlPmVuZEluZGV4LWJlZ2luSW5kZXg8L2NvZGU+LiBVbnBhaXJlZCBzdXJyb2dhdGVzIHdpdGhpbgorICAgICAqIHRoZSB0ZXh0IHJhbmdlIGNvdW50IGFzIG9uZSBjb2RlIHBvaW50IGVhY2guCisgICAgICoKKyAgICAgKiBAcGFyYW0gYmVnaW5JbmRleCB0aGUgaW5kZXggdG8gdGhlIGZpcnN0IDxjb2RlPmNoYXI8L2NvZGU+IG9mCisgICAgICogdGhlIHRleHQgcmFuZ2UuCisgICAgICogQHBhcmFtIGVuZEluZGV4IHRoZSBpbmRleCBhZnRlciB0aGUgbGFzdCA8Y29kZT5jaGFyPC9jb2RlPiBvZgorICAgICAqIHRoZSB0ZXh0IHJhbmdlLgorICAgICAqIEByZXR1cm4gdGhlIG51bWJlciBvZiBVbmljb2RlIGNvZGUgcG9pbnRzIGluIHRoZSBzcGVjaWZpZWQgdGV4dAorICAgICAqIHJhbmdlCisgICAgICogQGV4Y2VwdGlvbiBJbmRleE91dE9mQm91bmRzRXhjZXB0aW9uIGlmIHRoZQorICAgICAqIDxjb2RlPmJlZ2luSW5kZXg8L2NvZGU+IGlzIG5lZ2F0aXZlLCBvciA8Y29kZT5lbmRJbmRleDwvY29kZT4KKyAgICAgKiBpcyBsYXJnZXIgdGhhbiB0aGUgbGVuZ3RoIG9mIHRoaXMgPGNvZGU+U3RyaW5nPC9jb2RlPiwgb3IKKyAgICAgKiA8Y29kZT5iZWdpbkluZGV4PC9jb2RlPiBpcyBsYXJnZXIgdGhhbiA8Y29kZT5lbmRJbmRleDwvY29kZT4uCisgICAgICogQHNpbmNlICAxLjUKKyAgICAgKi8KKyAgICBwdWJsaWMgaW50IGNvZGVQb2ludENvdW50KGludCBiZWdpbkluZGV4LCBpbnQgZW5kSW5kZXgpIHsKKwlpZiAoYmVnaW5JbmRleCA8IDAgfHwgZW5kSW5kZXggPiBjb3VudCB8fCBiZWdpbkluZGV4ID4gZW5kSW5kZXgpIHsKKwkgICAgdGhyb3cgbmV3IEluZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb24oKTsKKwl9CisJcmV0dXJuIENoYXJhY3Rlci5jb2RlUG9pbnRDb3VudEltcGwodmFsdWUsIG9mZnNldCtiZWdpbkluZGV4LCBlbmRJbmRleC1iZWdpbkluZGV4KTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIHRoZSBpbmRleCB3aXRoaW4gdGhpcyA8Y29kZT5TdHJpbmc8L2NvZGU+IHRoYXQgaXMKKyAgICAgKiBvZmZzZXQgZnJvbSB0aGUgZ2l2ZW4gPGNvZGU+aW5kZXg8L2NvZGU+IGJ5CisgICAgICogPGNvZGU+Y29kZVBvaW50T2Zmc2V0PC9jb2RlPiBjb2RlIHBvaW50cy4gVW5wYWlyZWQgc3Vycm9nYXRlcworICAgICAqIHdpdGhpbiB0aGUgdGV4dCByYW5nZSBnaXZlbiBieSA8Y29kZT5pbmRleDwvY29kZT4gYW5kCisgICAgICogPGNvZGU+Y29kZVBvaW50T2Zmc2V0PC9jb2RlPiBjb3VudCBhcyBvbmUgY29kZSBwb2ludCBlYWNoLgorICAgICAqCisgICAgICogQHBhcmFtIGluZGV4IHRoZSBpbmRleCB0byBiZSBvZmZzZXQKKyAgICAgKiBAcGFyYW0gY29kZVBvaW50T2Zmc2V0IHRoZSBvZmZzZXQgaW4gY29kZSBwb2ludHMKKyAgICAgKiBAcmV0dXJuIHRoZSBpbmRleCB3aXRoaW4gdGhpcyA8Y29kZT5TdHJpbmc8L2NvZGU+CisgICAgICogQGV4Y2VwdGlvbiBJbmRleE91dE9mQm91bmRzRXhjZXB0aW9uIGlmIDxjb2RlPmluZGV4PC9jb2RlPgorICAgICAqICAgaXMgbmVnYXRpdmUgb3IgbGFyZ2VyIHRoZW4gdGhlIGxlbmd0aCBvZiB0aGlzCisgICAgICogICA8Y29kZT5TdHJpbmc8L2NvZGU+LCBvciBpZiA8Y29kZT5jb2RlUG9pbnRPZmZzZXQ8L2NvZGU+IGlzIHBvc2l0aXZlCisgICAgICogICBhbmQgdGhlIHN1YnN0cmluZyBzdGFydGluZyB3aXRoIDxjb2RlPmluZGV4PC9jb2RlPiBoYXMgZmV3ZXIKKyAgICAgKiAgIHRoYW4gPGNvZGU+Y29kZVBvaW50T2Zmc2V0PC9jb2RlPiBjb2RlIHBvaW50cywKKyAgICAgKiAgIG9yIGlmIDxjb2RlPmNvZGVQb2ludE9mZnNldDwvY29kZT4gaXMgbmVnYXRpdmUgYW5kIHRoZSBzdWJzdHJpbmcKKyAgICAgKiAgIGJlZm9yZSA8Y29kZT5pbmRleDwvY29kZT4gaGFzIGZld2VyIHRoYW4gdGhlIGFic29sdXRlIHZhbHVlCisgICAgICogICBvZiA8Y29kZT5jb2RlUG9pbnRPZmZzZXQ8L2NvZGU+IGNvZGUgcG9pbnRzLgorICAgICAqIEBzaW5jZSAxLjUKKyAgICAgKi8KKyAgICBwdWJsaWMgaW50IG9mZnNldEJ5Q29kZVBvaW50cyhpbnQgaW5kZXgsIGludCBjb2RlUG9pbnRPZmZzZXQpIHsKKwlpZiAoaW5kZXggPCAwIHx8IGluZGV4ID4gY291bnQpIHsKKwkgICAgdGhyb3cgbmV3IEluZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb24oKTsKKwl9CisJcmV0dXJuIENoYXJhY3Rlci5vZmZzZXRCeUNvZGVQb2ludHNJbXBsKHZhbHVlLCBvZmZzZXQsIGNvdW50LAorCQkJCQkJb2Zmc2V0K2luZGV4LCBjb2RlUG9pbnRPZmZzZXQpOworICAgIH0KKworICAgIC8qKgorICAgICAqIENvcHkgY2hhcmFjdGVycyBmcm9tIHRoaXMgc3RyaW5nIGludG8gZHN0IHN0YXJ0aW5nIGF0IGRzdEJlZ2luLgorICAgICAqIFRoaXMgbWV0aG9kIGRvZXNuJ3QgcGVyZm9ybSBhbnkgcmFuZ2UgY2hlY2tpbmcuCisgICAgICovCisgICAgdm9pZCBnZXRDaGFycyhjaGFyIGRzdFtdLCBpbnQgZHN0QmVnaW4pIHsKKyAgICAgICAgU3lzdGVtLmFycmF5Y29weSh2YWx1ZSwgb2Zmc2V0LCBkc3QsIGRzdEJlZ2luLCBjb3VudCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogQ29waWVzIGNoYXJhY3RlcnMgZnJvbSB0aGlzIHN0cmluZyBpbnRvIHRoZSBkZXN0aW5hdGlvbiBjaGFyYWN0ZXIKKyAgICAgKiBhcnJheS4KKyAgICAgKiA8cD4KKyAgICAgKiBUaGUgZmlyc3QgY2hhcmFjdGVyIHRvIGJlIGNvcGllZCBpcyBhdCBpbmRleCA8Y29kZT5zcmNCZWdpbjwvY29kZT47CisgICAgICogdGhlIGxhc3QgY2hhcmFjdGVyIHRvIGJlIGNvcGllZCBpcyBhdCBpbmRleCA8Y29kZT5zcmNFbmQtMTwvY29kZT4KKyAgICAgKiAodGh1cyB0aGUgdG90YWwgbnVtYmVyIG9mIGNoYXJhY3RlcnMgdG8gYmUgY29waWVkIGlzCisgICAgICogPGNvZGU+c3JjRW5kLXNyY0JlZ2luPC9jb2RlPikuIFRoZSBjaGFyYWN0ZXJzIGFyZSBjb3BpZWQgaW50byB0aGUKKyAgICAgKiBzdWJhcnJheSBvZiA8Y29kZT5kc3Q8L2NvZGU+IHN0YXJ0aW5nIGF0IGluZGV4IDxjb2RlPmRzdEJlZ2luPC9jb2RlPgorICAgICAqIGFuZCBlbmRpbmcgYXQgaW5kZXg6CisgICAgICogPHA+PGJsb2NrcXVvdGU+PHByZT4KKyAgICAgKiAgICAgZHN0YmVnaW4gKyAoc3JjRW5kLXNyY0JlZ2luKSAtIDEKKyAgICAgKiA8L3ByZT48L2Jsb2NrcXVvdGU+CisgICAgICoKKyAgICAgKiBAcGFyYW0gICAgICBzcmNCZWdpbiAgIGluZGV4IG9mIHRoZSBmaXJzdCBjaGFyYWN0ZXIgaW4gdGhlIHN0cmluZworICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgdG8gY29weS4KKyAgICAgKiBAcGFyYW0gICAgICBzcmNFbmQgICAgIGluZGV4IGFmdGVyIHRoZSBsYXN0IGNoYXJhY3RlciBpbiB0aGUgc3RyaW5nCisgICAgICogICAgICAgICAgICAgICAgICAgICAgICB0byBjb3B5LgorICAgICAqIEBwYXJhbSAgICAgIGRzdCAgICAgICAgdGhlIGRlc3RpbmF0aW9uIGFycmF5LgorICAgICAqIEBwYXJhbSAgICAgIGRzdEJlZ2luICAgdGhlIHN0YXJ0IG9mZnNldCBpbiB0aGUgZGVzdGluYXRpb24gYXJyYXkuCisgICAgICogQGV4Y2VwdGlvbiBJbmRleE91dE9mQm91bmRzRXhjZXB0aW9uIElmIGFueSBvZiB0aGUgZm9sbG93aW5nCisgICAgICogICAgICAgICAgICBpcyB0cnVlOgorICAgICAqICAgICAgICAgICAgPHVsPjxsaT48Y29kZT5zcmNCZWdpbjwvY29kZT4gaXMgbmVnYXRpdmUuCisgICAgICogICAgICAgICAgICA8bGk+PGNvZGU+c3JjQmVnaW48L2NvZGU+IGlzIGdyZWF0ZXIgdGhhbiA8Y29kZT5zcmNFbmQ8L2NvZGU+CisgICAgICogICAgICAgICAgICA8bGk+PGNvZGU+c3JjRW5kPC9jb2RlPiBpcyBncmVhdGVyIHRoYW4gdGhlIGxlbmd0aCBvZiB0aGlzCisgICAgICogICAgICAgICAgICAgICAgc3RyaW5nCisgICAgICogICAgICAgICAgICA8bGk+PGNvZGU+ZHN0QmVnaW48L2NvZGU+IGlzIG5lZ2F0aXZlCisgICAgICogICAgICAgICAgICA8bGk+PGNvZGU+ZHN0QmVnaW4rKHNyY0VuZC1zcmNCZWdpbik8L2NvZGU+IGlzIGxhcmdlciB0aGFuCisgICAgICogICAgICAgICAgICAgICAgPGNvZGU+ZHN0Lmxlbmd0aDwvY29kZT48L3VsPgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIGdldENoYXJzKGludCBzcmNCZWdpbiwgaW50IHNyY0VuZCwgY2hhciBkc3RbXSwgaW50IGRzdEJlZ2luKSB7CisgICAgICAgIGlmIChzcmNCZWdpbiA8IDApIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBTdHJpbmdJbmRleE91dE9mQm91bmRzRXhjZXB0aW9uKHNyY0JlZ2luKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoc3JjRW5kID4gY291bnQpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBTdHJpbmdJbmRleE91dE9mQm91bmRzRXhjZXB0aW9uKHNyY0VuZCk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHNyY0JlZ2luID4gc3JjRW5kKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgU3RyaW5nSW5kZXhPdXRPZkJvdW5kc0V4Y2VwdGlvbihzcmNFbmQgLSBzcmNCZWdpbik7CisgICAgICAgIH0KKyAgICAgICAgU3lzdGVtLmFycmF5Y29weSh2YWx1ZSwgb2Zmc2V0ICsgc3JjQmVnaW4sIGRzdCwgZHN0QmVnaW4sCisgICAgICAgICAgICAgc3JjRW5kIC0gc3JjQmVnaW4pOworICAgIH0KKworICAgIC8qKgorICAgICAqIENvcGllcyBjaGFyYWN0ZXJzIGZyb20gdGhpcyBzdHJpbmcgaW50byB0aGUgZGVzdGluYXRpb24gYnl0ZQorICAgICAqIGFycmF5LiBFYWNoIGJ5dGUgcmVjZWl2ZXMgdGhlIDggbG93LW9yZGVyIGJpdHMgb2YgdGhlCisgICAgICogY29ycmVzcG9uZGluZyBjaGFyYWN0ZXIuIFRoZSBlaWdodCBoaWdoLW9yZGVyIGJpdHMgb2YgZWFjaCBjaGFyYWN0ZXIKKyAgICAgKiBhcmUgbm90IGNvcGllZCBhbmQgZG8gbm90IHBhcnRpY2lwYXRlIGluIHRoZSB0cmFuc2ZlciBpbiBhbnkgd2F5LgorICAgICAqIDxwPgorICAgICAqIFRoZSBmaXJzdCBjaGFyYWN0ZXIgdG8gYmUgY29waWVkIGlzIGF0IGluZGV4IDxjb2RlPnNyY0JlZ2luPC9jb2RlPjsKKyAgICAgKiB0aGUgbGFzdCBjaGFyYWN0ZXIgdG8gYmUgY29waWVkIGlzIGF0IGluZGV4IDxjb2RlPnNyY0VuZC0xPC9jb2RlPi4KKyAgICAgKiBUaGUgdG90YWwgbnVtYmVyIG9mIGNoYXJhY3RlcnMgdG8gYmUgY29waWVkIGlzCisgICAgICogPGNvZGU+c3JjRW5kLXNyY0JlZ2luPC9jb2RlPi4gVGhlIGNoYXJhY3RlcnMsIGNvbnZlcnRlZCB0byBieXRlcywKKyAgICAgKiBhcmUgY29waWVkIGludG8gdGhlIHN1YmFycmF5IG9mIDxjb2RlPmRzdDwvY29kZT4gc3RhcnRpbmcgYXQgaW5kZXgKKyAgICAgKiA8Y29kZT5kc3RCZWdpbjwvY29kZT4gYW5kIGVuZGluZyBhdCBpbmRleDoKKyAgICAgKiA8cD48YmxvY2txdW90ZT48cHJlPgorICAgICAqICAgICBkc3RiZWdpbiArIChzcmNFbmQtc3JjQmVnaW4pIC0gMQorICAgICAqIDwvcHJlPjwvYmxvY2txdW90ZT4KKyAgICAgKgorICAgICAqIEBkZXByZWNhdGVkIFRoaXMgbWV0aG9kIGRvZXMgbm90IHByb3Blcmx5IGNvbnZlcnQgY2hhcmFjdGVycyBpbnRvIGJ5dGVzLgorICAgICAqIEFzIG9mIEpESyZuYnNwOzEuMSwgdGhlIHByZWZlcnJlZCB3YXkgdG8gZG8gdGhpcyBpcyB2aWEgdGhlCisgICAgICogPGNvZGU+Z2V0Qnl0ZXMoKTwvY29kZT4gbWV0aG9kLCB3aGljaCB1c2VzIHRoZSBwbGF0Zm9ybSdzIGRlZmF1bHQKKyAgICAgKiBjaGFyc2V0LgorICAgICAqCisgICAgICogQHBhcmFtICAgICAgc3JjQmVnaW4gICBpbmRleCBvZiB0aGUgZmlyc3QgY2hhcmFjdGVyIGluIHRoZSBzdHJpbmcKKyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgIHRvIGNvcHkuCisgICAgICogQHBhcmFtICAgICAgc3JjRW5kICAgICBpbmRleCBhZnRlciB0aGUgbGFzdCBjaGFyYWN0ZXIgaW4gdGhlIHN0cmluZworICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgdG8gY29weS4KKyAgICAgKiBAcGFyYW0gICAgICBkc3QgICAgICAgIHRoZSBkZXN0aW5hdGlvbiBhcnJheS4KKyAgICAgKiBAcGFyYW0gICAgICBkc3RCZWdpbiAgIHRoZSBzdGFydCBvZmZzZXQgaW4gdGhlIGRlc3RpbmF0aW9uIGFycmF5LgorICAgICAqIEBleGNlcHRpb24gSW5kZXhPdXRPZkJvdW5kc0V4Y2VwdGlvbiBpZiBhbnkgb2YgdGhlIGZvbGxvd2luZworICAgICAqICAgICAgICAgICAgaXMgdHJ1ZToKKyAgICAgKiAgICAgICAgICAgPHVsPjxsaT48Y29kZT5zcmNCZWdpbjwvY29kZT4gaXMgbmVnYXRpdmUKKyAgICAgKiAgICAgICAgICAgPGxpPjxjb2RlPnNyY0JlZ2luPC9jb2RlPiBpcyBncmVhdGVyIHRoYW4gPGNvZGU+c3JjRW5kPC9jb2RlPgorICAgICAqICAgICAgICAgICA8bGk+PGNvZGU+c3JjRW5kPC9jb2RlPiBpcyBncmVhdGVyIHRoYW4gdGhlIGxlbmd0aCBvZiB0aGlzCisgICAgICogICAgICAgICAgICBTdHJpbmcKKyAgICAgKiAgICAgICAgICAgPGxpPjxjb2RlPmRzdEJlZ2luPC9jb2RlPiBpcyBuZWdhdGl2ZQorICAgICAqICAgICAgICAgICA8bGk+PGNvZGU+ZHN0QmVnaW4rKHNyY0VuZC1zcmNCZWdpbik8L2NvZGU+IGlzIGxhcmdlciB0aGFuCisgICAgICogICAgICAgICAgICA8Y29kZT5kc3QubGVuZ3RoPC9jb2RlPjwvdWw+CisgICAgICovCisgICAgQERlcHJlY2F0ZWQKKyAgICBwdWJsaWMgdm9pZCBnZXRCeXRlcyhpbnQgc3JjQmVnaW4sIGludCBzcmNFbmQsIGJ5dGUgZHN0W10sIGludCBkc3RCZWdpbikgeworICAgICAgICBpZiAoc3JjQmVnaW4gPCAwKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgU3RyaW5nSW5kZXhPdXRPZkJvdW5kc0V4Y2VwdGlvbihzcmNCZWdpbik7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHNyY0VuZCA+IGNvdW50KSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgU3RyaW5nSW5kZXhPdXRPZkJvdW5kc0V4Y2VwdGlvbihzcmNFbmQpOworICAgICAgICB9CisgICAgICAgIGlmIChzcmNCZWdpbiA+IHNyY0VuZCkgeworICAgICAgICAgICAgdGhyb3cgbmV3IFN0cmluZ0luZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb24oc3JjRW5kIC0gc3JjQmVnaW4pOworICAgICAgICB9CisgICAgICAgIGludCBqID0gZHN0QmVnaW47CisgICAgICAgIGludCBuID0gb2Zmc2V0ICsgc3JjRW5kOworICAgICAgICBpbnQgaSA9IG9mZnNldCArIHNyY0JlZ2luOworICAgICAgICBjaGFyW10gdmFsID0gdmFsdWU7ICAgLyogYXZvaWQgZ2V0ZmllbGQgb3Bjb2RlICovCisKKyAgICAgICAgd2hpbGUgKGkgPCBuKSB7CisgICAgICAgICAgICBkc3RbaisrXSA9IChieXRlKXZhbFtpKytdOworICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogRW5jb2RlcyB0aGlzIDx0dD5TdHJpbmc8L3R0PiBpbnRvIGEgc2VxdWVuY2Ugb2YgYnl0ZXMgdXNpbmcgdGhlCisgICAgICogbmFtZWQgY2hhcnNldCwgc3RvcmluZyB0aGUgcmVzdWx0IGludG8gYSBuZXcgYnl0ZSBhcnJheS4KKyAgICAgKgorICAgICAqIDxwPiBUaGUgYmVoYXZpb3Igb2YgdGhpcyBtZXRob2Qgd2hlbiB0aGlzIHN0cmluZyBjYW5ub3QgYmUgZW5jb2RlZCBpbgorICAgICAqIHRoZSBnaXZlbiBjaGFyc2V0IGlzIHVuc3BlY2lmaWVkLiAgVGhlIHtAbGluaworICAgICAqIGphdmEubmlvLmNoYXJzZXQuQ2hhcnNldEVuY29kZXJ9IGNsYXNzIHNob3VsZCBiZSB1c2VkIHdoZW4gbW9yZSBjb250cm9sCisgICAgICogb3ZlciB0aGUgZW5jb2RpbmcgcHJvY2VzcyBpcyByZXF1aXJlZC4KKyAgICAgKgorICAgICAqIEBwYXJhbSAgY2hhcnNldE5hbWUKKyAgICAgKiAgICAgICAgIHRoZSBuYW1lIG9mIGEgc3VwcG9ydGVkCisgICAgICogICAgICAgICB7QGxpbmsgamF2YS5uaW8uY2hhcnNldC5DaGFyc2V0IDwvY29kZT5jaGFyc2V0PGNvZGU+fQorICAgICAqCisgICAgICogQHJldHVybiAgVGhlIHJlc3VsdGFudCBieXRlIGFycmF5CisgICAgICoKKyAgICAgKiBAZXhjZXB0aW9uICBVbnN1cHBvcnRlZEVuY29kaW5nRXhjZXB0aW9uCisgICAgICogICAgICAgICAgICAgSWYgdGhlIG5hbWVkIGNoYXJzZXQgaXMgbm90IHN1cHBvcnRlZAorICAgICAqCisgICAgICogQHNpbmNlICAgICAgSkRLMS4xCisgICAgICovCisgICAgcHVibGljIGJ5dGVbXSBnZXRCeXRlcyhTdHJpbmcgY2hhcnNldE5hbWUpCisJdGhyb3dzIFVuc3VwcG9ydGVkRW5jb2RpbmdFeGNlcHRpb24KKyAgICB7CisJaWYgKGNoYXJzZXROYW1lID09IG51bGwpIHRocm93IG5ldyBOdWxsUG9pbnRlckV4Y2VwdGlvbigpOworCXJldHVybiBTdHJpbmdDb2RpbmcuZW5jb2RlKGNoYXJzZXROYW1lLCB2YWx1ZSwgb2Zmc2V0LCBjb3VudCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogRW5jb2RlcyB0aGlzIDx0dD5TdHJpbmc8L3R0PiBpbnRvIGEgc2VxdWVuY2Ugb2YgYnl0ZXMgdXNpbmcgdGhlCisgICAgICogcGxhdGZvcm0ncyBkZWZhdWx0IGNoYXJzZXQsIHN0b3JpbmcgdGhlIHJlc3VsdCBpbnRvIGEgbmV3IGJ5dGUgYXJyYXkuCisgICAgICoKKyAgICAgKiA8cD4gVGhlIGJlaGF2aW9yIG9mIHRoaXMgbWV0aG9kIHdoZW4gdGhpcyBzdHJpbmcgY2Fubm90IGJlIGVuY29kZWQgaW4KKyAgICAgKiB0aGUgZGVmYXVsdCBjaGFyc2V0IGlzIHVuc3BlY2lmaWVkLiAgVGhlIHtAbGluaworICAgICAqIGphdmEubmlvLmNoYXJzZXQuQ2hhcnNldEVuY29kZXJ9IGNsYXNzIHNob3VsZCBiZSB1c2VkIHdoZW4gbW9yZSBjb250cm9sCisgICAgICogb3ZlciB0aGUgZW5jb2RpbmcgcHJvY2VzcyBpcyByZXF1aXJlZC4KKyAgICAgKgorICAgICAqIEByZXR1cm4gIFRoZSByZXN1bHRhbnQgYnl0ZSBhcnJheQorICAgICAqCisgICAgICogQHNpbmNlICAgICAgSkRLMS4xCisgICAgICovCisgICAgcHVibGljIGJ5dGVbXSBnZXRCeXRlcygpIHsKKwlyZXR1cm4gU3RyaW5nQ29kaW5nLmVuY29kZSh2YWx1ZSwgb2Zmc2V0LCBjb3VudCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogQ29tcGFyZXMgdGhpcyBzdHJpbmcgdG8gdGhlIHNwZWNpZmllZCBvYmplY3QuCisgICAgICogVGhlIHJlc3VsdCBpcyA8Y29kZT50cnVlPC9jb2RlPiBpZiBhbmQgb25seSBpZiB0aGUgYXJndW1lbnQgaXMgbm90CisgICAgICogPGNvZGU+bnVsbDwvY29kZT4gYW5kIGlzIGEgPGNvZGU+U3RyaW5nPC9jb2RlPiBvYmplY3QgdGhhdCByZXByZXNlbnRzCisgICAgICogdGhlIHNhbWUgc2VxdWVuY2Ugb2YgY2hhcmFjdGVycyBhcyB0aGlzIG9iamVjdC4KKyAgICAgKgorICAgICAqIEBwYXJhbSAgIGFuT2JqZWN0ICAgdGhlIG9iamVjdCB0byBjb21wYXJlIHRoaXMgPGNvZGU+U3RyaW5nPC9jb2RlPgorICAgICAqICAgICAgICAgICAgICAgICAgICAgYWdhaW5zdC4KKyAgICAgKiBAcmV0dXJuICA8Y29kZT50cnVlPC9jb2RlPiBpZiB0aGUgPGNvZGU+U3RyaW5nIDwvY29kZT5hcmUgZXF1YWw7CisgICAgICogICAgICAgICAgPGNvZGU+ZmFsc2U8L2NvZGU+IG90aGVyd2lzZS4KKyAgICAgKiBAc2VlICAgICBqYXZhLmxhbmcuU3RyaW5nI2NvbXBhcmVUbyhqYXZhLmxhbmcuU3RyaW5nKQorICAgICAqIEBzZWUgICAgIGphdmEubGFuZy5TdHJpbmcjZXF1YWxzSWdub3JlQ2FzZShqYXZhLmxhbmcuU3RyaW5nKQorICAgICAqLworICAgIHB1YmxpYyBib29sZWFuIGVxdWFscyhPYmplY3QgYW5PYmplY3QpIHsKKwlpZiAodGhpcyA9PSBhbk9iamVjdCkgeworCSAgICByZXR1cm4gdHJ1ZTsKKwl9CisJaWYgKGFuT2JqZWN0IGluc3RhbmNlb2YgU3RyaW5nKSB7CisJICAgIFN0cmluZyBhbm90aGVyU3RyaW5nID0gKFN0cmluZylhbk9iamVjdDsKKwkgICAgaW50IG4gPSBjb3VudDsKKwkgICAgaWYgKG4gPT0gYW5vdGhlclN0cmluZy5jb3VudCkgeworCQljaGFyIHYxW10gPSB2YWx1ZTsKKwkJY2hhciB2MltdID0gYW5vdGhlclN0cmluZy52YWx1ZTsKKwkJaW50IGkgPSBvZmZzZXQ7CisJCWludCBqID0gYW5vdGhlclN0cmluZy5vZmZzZXQ7CisJCXdoaWxlIChuLS0gIT0gMCkgeworCQkgICAgaWYgKHYxW2krK10gIT0gdjJbaisrXSkKKwkJCXJldHVybiBmYWxzZTsKKwkJfQorCQlyZXR1cm4gdHJ1ZTsKKwkgICAgfQorCX0KKwlyZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJucyA8dHQ+dHJ1ZTwvdHQ+IGlmIGFuZCBvbmx5IGlmIHRoaXMgPHR0PlN0cmluZzwvdHQ+IHJlcHJlc2VudHMKKyAgICAgKiB0aGUgc2FtZSBzZXF1ZW5jZSBvZiBjaGFyYWN0ZXJzIGFzIHRoZSBzcGVjaWZpZWQgPHR0PlN0cmluZ0J1ZmZlcjwvdHQ+LgorICAgICAqCisgICAgICogQHBhcmFtICAgc2IgICAgICAgICB0aGUgPHR0PlN0cmluZ0J1ZmZlcjwvdHQ+IHRvIGNvbXBhcmUgdG8uCisgICAgICogQHJldHVybiAgPHR0PnRydWU8L3R0PiBpZiBhbmQgb25seSBpZiB0aGlzIDx0dD5TdHJpbmc8L3R0PiByZXByZXNlbnRzCisgICAgICogICAgICAgICAgdGhlIHNhbWUgc2VxdWVuY2Ugb2YgY2hhcmFjdGVycyBhcyB0aGUgc3BlY2lmaWVkCisgICAgICogICAgICAgICAgPHR0PlN0cmluZ0J1ZmZlcjwvdHQ+LCBvdGhlcndpc2UgPHR0PmZhbHNlPC90dD4uCisgICAgICogQHRocm93cyBOdWxsUG9pbnRlckV4Y2VwdGlvbiBpZiA8Y29kZT5zYjwvY29kZT4gaXMgPGNvZGU+bnVsbDwvY29kZT4KKyAgICAgKiBAc2luY2UgMS40CisgICAgICovCisgICAgcHVibGljIGJvb2xlYW4gY29udGVudEVxdWFscyhTdHJpbmdCdWZmZXIgc2IpIHsKKyAgICAgICAgc3luY2hyb25pemVkKHNiKSB7CisgICAgICAgICAgICByZXR1cm4gY29udGVudEVxdWFscygoQ2hhclNlcXVlbmNlKXNiKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybnMgPHR0PnRydWU8L3R0PiBpZiBhbmQgb25seSBpZiB0aGlzIDx0dD5TdHJpbmc8L3R0PiByZXByZXNlbnRzCisgICAgICogdGhlIHNhbWUgc2VxdWVuY2Ugb2YgY2hhciB2YWx1ZXMgYXMgdGhlIHNwZWNpZmllZCBzZXF1ZW5jZS4KKyAgICAgKgorICAgICAqIEBwYXJhbSAgIGNzICAgICAgICAgdGhlIHNlcXVlbmNlIHRvIGNvbXBhcmUgdG8uCisgICAgICogQHJldHVybiAgPHR0PnRydWU8L3R0PiBpZiBhbmQgb25seSBpZiB0aGlzIDx0dD5TdHJpbmc8L3R0PiByZXByZXNlbnRzCisgICAgICogICAgICAgICAgdGhlIHNhbWUgc2VxdWVuY2Ugb2YgY2hhciB2YWx1ZXMgYXMgdGhlIHNwZWNpZmllZAorICAgICAqICAgICAgICAgIHNlcXVlbmNlLCBvdGhlcndpc2UgPHR0PmZhbHNlPC90dD4uCisgICAgICogQHRocm93cyBOdWxsUG9pbnRlckV4Y2VwdGlvbiBpZiA8Y29kZT5jczwvY29kZT4gaXMgPGNvZGU+bnVsbDwvY29kZT4KKyAgICAgKiBAc2luY2UgMS41CisgICAgICovCisgICAgcHVibGljIGJvb2xlYW4gY29udGVudEVxdWFscyhDaGFyU2VxdWVuY2UgY3MpIHsKKyAgICAgICAgaWYgKGNvdW50ICE9IGNzLmxlbmd0aCgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAvLyBBcmd1bWVudCBpcyBhIFN0cmluZ0J1ZmZlciwgU3RyaW5nQnVpbGRlcgorICAgICAgICBpZiAoY3MgaW5zdGFuY2VvZiBBYnN0cmFjdFN0cmluZ0J1aWxkZXIpIHsKKyAgICAgICAgICAgIGNoYXIgdjFbXSA9IHZhbHVlOworICAgICAgICAgICAgY2hhciB2MltdID0gKChBYnN0cmFjdFN0cmluZ0J1aWxkZXIpY3MpLmdldFZhbHVlKCk7CisgICAgICAgICAgICBpbnQgaSA9IG9mZnNldDsKKyAgICAgICAgICAgIGludCBqID0gMDsKKyAgICAgICAgICAgIGludCBuID0gY291bnQ7CisgICAgICAgICAgICB3aGlsZSAobi0tICE9IDApIHsKKyAgICAgICAgICAgICAgICBpZiAodjFbaSsrXSAhPSB2MltqKytdKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgLy8gQXJndW1lbnQgaXMgYSBTdHJpbmcKKyAgICAgICAgaWYgKGNzLmVxdWFscyh0aGlzKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAvLyBBcmd1bWVudCBpcyBhIGdlbmVyaWMgQ2hhclNlcXVlbmNlCisgICAgICAgIGNoYXIgdjFbXSA9IHZhbHVlOworICAgICAgICBpbnQgaSA9IG9mZnNldDsKKyAgICAgICAgaW50IGogPSAwOworICAgICAgICBpbnQgbiA9IGNvdW50OworICAgICAgICB3aGlsZSAobi0tICE9IDApIHsKKyAgICAgICAgICAgIGlmICh2MVtpKytdICE9IGNzLmNoYXJBdChqKyspKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDb21wYXJlcyB0aGlzIDxjb2RlPlN0cmluZzwvY29kZT4gdG8gYW5vdGhlciA8Y29kZT5TdHJpbmc8L2NvZGU+LAorICAgICAqIGlnbm9yaW5nIGNhc2UgY29uc2lkZXJhdGlvbnMuICBUd28gc3RyaW5ncyBhcmUgY29uc2lkZXJlZCBlcXVhbAorICAgICAqIGlnbm9yaW5nIGNhc2UgaWYgdGhleSBhcmUgb2YgdGhlIHNhbWUgbGVuZ3RoLCBhbmQgY29ycmVzcG9uZGluZworICAgICAqIGNoYXJhY3RlcnMgaW4gdGhlIHR3byBzdHJpbmdzIGFyZSBlcXVhbCBpZ25vcmluZyBjYXNlLgorICAgICAqIDxwPgorICAgICAqIFR3byBjaGFyYWN0ZXJzIDxjb2RlPmMxPC9jb2RlPiBhbmQgPGNvZGU+YzI8L2NvZGU+IGFyZSBjb25zaWRlcmVkCisgICAgICogdGhlIHNhbWUsIGlnbm9yaW5nIGNhc2UgaWYgYXQgbGVhc3Qgb25lIG9mIHRoZSBmb2xsb3dpbmcgaXMgdHJ1ZToKKyAgICAgKiA8dWw+PGxpPlRoZSB0d28gY2hhcmFjdGVycyBhcmUgdGhlIHNhbWUgKGFzIGNvbXBhcmVkIGJ5IHRoZQorICAgICAqIDxjb2RlPj09PC9jb2RlPiBvcGVyYXRvcikuCisgICAgICogPGxpPkFwcGx5aW5nIHRoZSBtZXRob2Qge0BsaW5rIGphdmEubGFuZy5DaGFyYWN0ZXIjdG9VcHBlckNhc2UoY2hhcil9CisgICAgICogdG8gZWFjaCBjaGFyYWN0ZXIgcHJvZHVjZXMgdGhlIHNhbWUgcmVzdWx0LgorICAgICAqIDxsaT5BcHBseWluZyB0aGUgbWV0aG9kIHtAbGluayBqYXZhLmxhbmcuQ2hhcmFjdGVyI3RvTG93ZXJDYXNlKGNoYXIpfQorICAgICAqIHRvIGVhY2ggY2hhcmFjdGVyIHByb2R1Y2VzIHRoZSBzYW1lIHJlc3VsdC48L3VsPgorICAgICAqCisgICAgICogQHBhcmFtICAgYW5vdGhlclN0cmluZyAgIHRoZSA8Y29kZT5TdHJpbmc8L2NvZGU+IHRvIGNvbXBhcmUgdGhpcworICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICA8Y29kZT5TdHJpbmc8L2NvZGU+IGFnYWluc3QuCisgICAgICogQHJldHVybiAgPGNvZGU+dHJ1ZTwvY29kZT4gaWYgdGhlIGFyZ3VtZW50IGlzIG5vdCA8Y29kZT5udWxsPC9jb2RlPgorICAgICAqICAgICAgICAgIGFuZCB0aGUgPGNvZGU+U3RyaW5nPC9jb2RlPnMgYXJlIGVxdWFsLAorICAgICAqICAgICAgICAgIGlnbm9yaW5nIGNhc2U7IDxjb2RlPmZhbHNlPC9jb2RlPiBvdGhlcndpc2UuCisgICAgICogQHNlZSAgICAgI2VxdWFscyhPYmplY3QpCisgICAgICogQHNlZSAgICAgamF2YS5sYW5nLkNoYXJhY3RlciN0b0xvd2VyQ2FzZShjaGFyKQorICAgICAqIEBzZWUgamF2YS5sYW5nLkNoYXJhY3RlciN0b1VwcGVyQ2FzZShjaGFyKQorICAgICAqLworICAgIHB1YmxpYyBib29sZWFuIGVxdWFsc0lnbm9yZUNhc2UoU3RyaW5nIGFub3RoZXJTdHJpbmcpIHsKKyAgICAgICAgcmV0dXJuICh0aGlzID09IGFub3RoZXJTdHJpbmcpID8gdHJ1ZSA6CisgICAgICAgICAgICAgICAoYW5vdGhlclN0cmluZyAhPSBudWxsKSAmJiAoYW5vdGhlclN0cmluZy5jb3VudCA9PSBjb3VudCkgJiYKKwkgICAgICAgcmVnaW9uTWF0Y2hlcyh0cnVlLCAwLCBhbm90aGVyU3RyaW5nLCAwLCBjb3VudCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogQ29tcGFyZXMgdHdvIHN0cmluZ3MgbGV4aWNvZ3JhcGhpY2FsbHkuCisgICAgICogVGhlIGNvbXBhcmlzb24gaXMgYmFzZWQgb24gdGhlIFVuaWNvZGUgdmFsdWUgb2YgZWFjaCBjaGFyYWN0ZXIgaW4KKyAgICAgKiB0aGUgc3RyaW5ncy4gVGhlIGNoYXJhY3RlciBzZXF1ZW5jZSByZXByZXNlbnRlZCBieSB0aGlzCisgICAgICogPGNvZGU+U3RyaW5nPC9jb2RlPiBvYmplY3QgaXMgY29tcGFyZWQgbGV4aWNvZ3JhcGhpY2FsbHkgdG8gdGhlCisgICAgICogY2hhcmFjdGVyIHNlcXVlbmNlIHJlcHJlc2VudGVkIGJ5IHRoZSBhcmd1bWVudCBzdHJpbmcuIFRoZSByZXN1bHQgaXMKKyAgICAgKiBhIG5lZ2F0aXZlIGludGVnZXIgaWYgdGhpcyA8Y29kZT5TdHJpbmc8L2NvZGU+IG9iamVjdAorICAgICAqIGxleGljb2dyYXBoaWNhbGx5IHByZWNlZGVzIHRoZSBhcmd1bWVudCBzdHJpbmcuIFRoZSByZXN1bHQgaXMgYQorICAgICAqIHBvc2l0aXZlIGludGVnZXIgaWYgdGhpcyA8Y29kZT5TdHJpbmc8L2NvZGU+IG9iamVjdCBsZXhpY29ncmFwaGljYWxseQorICAgICAqIGZvbGxvd3MgdGhlIGFyZ3VtZW50IHN0cmluZy4gVGhlIHJlc3VsdCBpcyB6ZXJvIGlmIHRoZSBzdHJpbmdzCisgICAgICogYXJlIGVxdWFsOyA8Y29kZT5jb21wYXJlVG88L2NvZGU+IHJldHVybnMgPGNvZGU+MDwvY29kZT4gZXhhY3RseSB3aGVuCisgICAgICogdGhlIHtAbGluayAjZXF1YWxzKE9iamVjdCl9IG1ldGhvZCB3b3VsZCByZXR1cm4gPGNvZGU+dHJ1ZTwvY29kZT4uCisgICAgICogPHA+CisgICAgICogVGhpcyBpcyB0aGUgZGVmaW5pdGlvbiBvZiBsZXhpY29ncmFwaGljIG9yZGVyaW5nLiBJZiB0d28gc3RyaW5ncyBhcmUKKyAgICAgKiBkaWZmZXJlbnQsIHRoZW4gZWl0aGVyIHRoZXkgaGF2ZSBkaWZmZXJlbnQgY2hhcmFjdGVycyBhdCBzb21lIGluZGV4CisgICAgICogdGhhdCBpcyBhIHZhbGlkIGluZGV4IGZvciBib3RoIHN0cmluZ3MsIG9yIHRoZWlyIGxlbmd0aHMgYXJlIGRpZmZlcmVudCwKKyAgICAgKiBvciBib3RoLiBJZiB0aGV5IGhhdmUgZGlmZmVyZW50IGNoYXJhY3RlcnMgYXQgb25lIG9yIG1vcmUgaW5kZXgKKyAgICAgKiBwb3NpdGlvbnMsIGxldCA8aT5rPC9pPiBiZSB0aGUgc21hbGxlc3Qgc3VjaCBpbmRleDsgdGhlbiB0aGUgc3RyaW5nCisgICAgICogd2hvc2UgY2hhcmFjdGVyIGF0IHBvc2l0aW9uIDxpPms8L2k+IGhhcyB0aGUgc21hbGxlciB2YWx1ZSwgYXMKKyAgICAgKiBkZXRlcm1pbmVkIGJ5IHVzaW5nIHRoZSAmbHQ7IG9wZXJhdG9yLCBsZXhpY29ncmFwaGljYWxseSBwcmVjZWRlcyB0aGUKKyAgICAgKiBvdGhlciBzdHJpbmcuIEluIHRoaXMgY2FzZSwgPGNvZGU+Y29tcGFyZVRvPC9jb2RlPiByZXR1cm5zIHRoZQorICAgICAqIGRpZmZlcmVuY2Ugb2YgdGhlIHR3byBjaGFyYWN0ZXIgdmFsdWVzIGF0IHBvc2l0aW9uIDxjb2RlPms8L2NvZGU+IGluCisgICAgICogdGhlIHR3byBzdHJpbmcgLS0gdGhhdCBpcywgdGhlIHZhbHVlOgorICAgICAqIDxibG9ja3F1b3RlPjxwcmU+CisgICAgICogdGhpcy5jaGFyQXQoayktYW5vdGhlclN0cmluZy5jaGFyQXQoaykKKyAgICAgKiA8L3ByZT48L2Jsb2NrcXVvdGU+CisgICAgICogSWYgdGhlcmUgaXMgbm8gaW5kZXggcG9zaXRpb24gYXQgd2hpY2ggdGhleSBkaWZmZXIsIHRoZW4gdGhlIHNob3J0ZXIKKyAgICAgKiBzdHJpbmcgbGV4aWNvZ3JhcGhpY2FsbHkgcHJlY2VkZXMgdGhlIGxvbmdlciBzdHJpbmcuIEluIHRoaXMgY2FzZSwKKyAgICAgKiA8Y29kZT5jb21wYXJlVG88L2NvZGU+IHJldHVybnMgdGhlIGRpZmZlcmVuY2Ugb2YgdGhlIGxlbmd0aHMgb2YgdGhlCisgICAgICogc3RyaW5ncyAtLSB0aGF0IGlzLCB0aGUgdmFsdWU6CisgICAgICogPGJsb2NrcXVvdGU+PHByZT4KKyAgICAgKiB0aGlzLmxlbmd0aCgpLWFub3RoZXJTdHJpbmcubGVuZ3RoKCkKKyAgICAgKiA8L3ByZT48L2Jsb2NrcXVvdGU+CisgICAgICoKKyAgICAgKiBAcGFyYW0gICBhbm90aGVyU3RyaW5nICAgdGhlIDxjb2RlPlN0cmluZzwvY29kZT4gdG8gYmUgY29tcGFyZWQuCisgICAgICogQHJldHVybiAgdGhlIHZhbHVlIDxjb2RlPjA8L2NvZGU+IGlmIHRoZSBhcmd1bWVudCBzdHJpbmcgaXMgZXF1YWwgdG8KKyAgICAgKiAgICAgICAgICB0aGlzIHN0cmluZzsgYSB2YWx1ZSBsZXNzIHRoYW4gPGNvZGU+MDwvY29kZT4gaWYgdGhpcyBzdHJpbmcKKyAgICAgKiAgICAgICAgICBpcyBsZXhpY29ncmFwaGljYWxseSBsZXNzIHRoYW4gdGhlIHN0cmluZyBhcmd1bWVudDsgYW5kIGEKKyAgICAgKiAgICAgICAgICB2YWx1ZSBncmVhdGVyIHRoYW4gPGNvZGU+MDwvY29kZT4gaWYgdGhpcyBzdHJpbmcgaXMKKyAgICAgKiAgICAgICAgICBsZXhpY29ncmFwaGljYWxseSBncmVhdGVyIHRoYW4gdGhlIHN0cmluZyBhcmd1bWVudC4KKyAgICAgKi8KKyAgICBwdWJsaWMgaW50IGNvbXBhcmVUbyhTdHJpbmcgYW5vdGhlclN0cmluZykgeworCWludCBsZW4xID0gY291bnQ7CisJaW50IGxlbjIgPSBhbm90aGVyU3RyaW5nLmNvdW50OworCWludCBuID0gTWF0aC5taW4obGVuMSwgbGVuMik7CisJY2hhciB2MVtdID0gdmFsdWU7CisJY2hhciB2MltdID0gYW5vdGhlclN0cmluZy52YWx1ZTsKKwlpbnQgaSA9IG9mZnNldDsKKwlpbnQgaiA9IGFub3RoZXJTdHJpbmcub2Zmc2V0OworCisJaWYgKGkgPT0gaikgeworCSAgICBpbnQgayA9IGk7CisJICAgIGludCBsaW0gPSBuICsgaTsKKwkgICAgd2hpbGUgKGsgPCBsaW0pIHsKKwkJY2hhciBjMSA9IHYxW2tdOworCQljaGFyIGMyID0gdjJba107CisJCWlmIChjMSAhPSBjMikgeworCQkgICAgcmV0dXJuIGMxIC0gYzI7CisJCX0KKwkJaysrOworCSAgICB9CisJfSBlbHNlIHsKKwkgICAgd2hpbGUgKG4tLSAhPSAwKSB7CisJCWNoYXIgYzEgPSB2MVtpKytdOworCQljaGFyIGMyID0gdjJbaisrXTsKKwkJaWYgKGMxICE9IGMyKSB7CisJCSAgICByZXR1cm4gYzEgLSBjMjsKKwkJfQorCSAgICB9CisJfQorCXJldHVybiBsZW4xIC0gbGVuMjsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBBIENvbXBhcmF0b3IgdGhhdCBvcmRlcnMgPGNvZGU+U3RyaW5nPC9jb2RlPiBvYmplY3RzIGFzIGJ5CisgICAgICogPGNvZGU+Y29tcGFyZVRvSWdub3JlQ2FzZTwvY29kZT4uIFRoaXMgY29tcGFyYXRvciBpcyBzZXJpYWxpemFibGUuCisgICAgICogPHA+CisgICAgICogTm90ZSB0aGF0IHRoaXMgQ29tcGFyYXRvciBkb2VzIDxlbT5ub3Q8L2VtPiB0YWtlIGxvY2FsZSBpbnRvIGFjY291bnQsCisgICAgICogYW5kIHdpbGwgcmVzdWx0IGluIGFuIHVuc2F0aXNmYWN0b3J5IG9yZGVyaW5nIGZvciBjZXJ0YWluIGxvY2FsZXMuCisgICAgICogVGhlIGphdmEudGV4dCBwYWNrYWdlIHByb3ZpZGVzIDxlbT5Db2xsYXRvcnM8L2VtPiB0byBhbGxvdworICAgICAqIGxvY2FsZS1zZW5zaXRpdmUgb3JkZXJpbmcuCisgICAgICoKKyAgICAgKiBAc2VlICAgICBqYXZhLnRleHQuQ29sbGF0b3IjY29tcGFyZShTdHJpbmcsIFN0cmluZykKKyAgICAgKiBAc2luY2UgICAxLjIKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIENvbXBhcmF0b3I8U3RyaW5nPiBDQVNFX0lOU0VOU0lUSVZFX09SREVSCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gbmV3IENhc2VJbnNlbnNpdGl2ZUNvbXBhcmF0b3IoKTsKKyAgICBwcml2YXRlIHN0YXRpYyBjbGFzcyBDYXNlSW5zZW5zaXRpdmVDb21wYXJhdG9yCisgICAgICAgICAgICAgICAgICAgICAgICAgaW1wbGVtZW50cyBDb21wYXJhdG9yPFN0cmluZz4sIGphdmEuaW8uU2VyaWFsaXphYmxlIHsKKwkvLyB1c2Ugc2VyaWFsVmVyc2lvblVJRCBmcm9tIEpESyAxLjIuMiBmb3IgaW50ZXJvcGVyYWJpbGl0eQorCXByaXZhdGUgc3RhdGljIGZpbmFsIGxvbmcgc2VyaWFsVmVyc2lvblVJRCA9IDg1NzU3OTk4MDg5MzMwMjkzMjZMOworCisgICAgICAgIHB1YmxpYyBpbnQgY29tcGFyZShTdHJpbmcgczEsIFN0cmluZyBzMikgeworICAgICAgICAgICAgaW50IG4xPXMxLmxlbmd0aCgpLCBuMj1zMi5sZW5ndGgoKTsKKyAgICAgICAgICAgIGZvciAoaW50IGkxPTAsIGkyPTA7IGkxPG4xICYmIGkyPG4yOyBpMSsrLCBpMisrKSB7CisgICAgICAgICAgICAgICAgY2hhciBjMSA9IHMxLmNoYXJBdChpMSk7CisgICAgICAgICAgICAgICAgY2hhciBjMiA9IHMyLmNoYXJBdChpMik7CisgICAgICAgICAgICAgICAgaWYgKGMxICE9IGMyKSB7CisgICAgICAgICAgICAgICAgICAgIGMxID0gQ2hhcmFjdGVyLnRvVXBwZXJDYXNlKGMxKTsKKyAgICAgICAgICAgICAgICAgICAgYzIgPSBDaGFyYWN0ZXIudG9VcHBlckNhc2UoYzIpOworICAgICAgICAgICAgICAgICAgICBpZiAoYzEgIT0gYzIpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGMxID0gQ2hhcmFjdGVyLnRvTG93ZXJDYXNlKGMxKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGMyID0gQ2hhcmFjdGVyLnRvTG93ZXJDYXNlKGMyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjMSAhPSBjMikgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjMSAtIGMyOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIG4xIC0gbjI7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDb21wYXJlcyB0d28gc3RyaW5ncyBsZXhpY29ncmFwaGljYWxseSwgaWdub3JpbmcgY2FzZQorICAgICAqIGRpZmZlcmVuY2VzLiBUaGlzIG1ldGhvZCByZXR1cm5zIGFuIGludGVnZXIgd2hvc2Ugc2lnbiBpcyB0aGF0IG9mCisgICAgICogY2FsbGluZyA8Y29kZT5jb21wYXJlVG88L2NvZGU+IHdpdGggbm9ybWFsaXplZCB2ZXJzaW9ucyBvZiB0aGUgc3RyaW5ncworICAgICAqIHdoZXJlIGNhc2UgZGlmZmVyZW5jZXMgaGF2ZSBiZWVuIGVsaW1pbmF0ZWQgYnkgY2FsbGluZworICAgICAqIDxjb2RlPkNoYXJhY3Rlci50b0xvd2VyQ2FzZShDaGFyYWN0ZXIudG9VcHBlckNhc2UoY2hhcmFjdGVyKSk8L2NvZGU+IG9uCisgICAgICogZWFjaCBjaGFyYWN0ZXIuCisgICAgICogPHA+CisgICAgICogTm90ZSB0aGF0IHRoaXMgbWV0aG9kIGRvZXMgPGVtPm5vdDwvZW0+IHRha2UgbG9jYWxlIGludG8gYWNjb3VudCwKKyAgICAgKiBhbmQgd2lsbCByZXN1bHQgaW4gYW4gdW5zYXRpc2ZhY3Rvcnkgb3JkZXJpbmcgZm9yIGNlcnRhaW4gbG9jYWxlcy4KKyAgICAgKiBUaGUgamF2YS50ZXh0IHBhY2thZ2UgcHJvdmlkZXMgPGVtPmNvbGxhdG9yczwvZW0+IHRvIGFsbG93CisgICAgICogbG9jYWxlLXNlbnNpdGl2ZSBvcmRlcmluZy4KKyAgICAgKgorICAgICAqIEBwYXJhbSAgIHN0ciAgIHRoZSA8Y29kZT5TdHJpbmc8L2NvZGU+IHRvIGJlIGNvbXBhcmVkLgorICAgICAqIEByZXR1cm4gIGEgbmVnYXRpdmUgaW50ZWdlciwgemVybywgb3IgYSBwb3NpdGl2ZSBpbnRlZ2VyIGFzIHRoZQorICAgICAqCQlzcGVjaWZpZWQgU3RyaW5nIGlzIGdyZWF0ZXIgdGhhbiwgZXF1YWwgdG8sIG9yIGxlc3MKKyAgICAgKgkJdGhhbiB0aGlzIFN0cmluZywgaWdub3JpbmcgY2FzZSBjb25zaWRlcmF0aW9ucy4KKyAgICAgKiBAc2VlICAgICBqYXZhLnRleHQuQ29sbGF0b3IjY29tcGFyZShTdHJpbmcsIFN0cmluZykKKyAgICAgKiBAc2luY2UgICAxLjIKKyAgICAgKi8KKyAgICBwdWJsaWMgaW50IGNvbXBhcmVUb0lnbm9yZUNhc2UoU3RyaW5nIHN0cikgeworICAgICAgICByZXR1cm4gQ0FTRV9JTlNFTlNJVElWRV9PUkRFUi5jb21wYXJlKHRoaXMsIHN0cik7CisgICAgfQorCisgICAgLyoqCisgICAgICogVGVzdHMgaWYgdHdvIHN0cmluZyByZWdpb25zIGFyZSBlcXVhbC4KKyAgICAgKiA8cD4KKyAgICAgKiBBIHN1YnN0cmluZyBvZiB0aGlzIDx0dD5TdHJpbmc8L3R0PiBvYmplY3QgaXMgY29tcGFyZWQgdG8gYSBzdWJzdHJpbmcKKyAgICAgKiBvZiB0aGUgYXJndW1lbnQgb3RoZXIuIFRoZSByZXN1bHQgaXMgdHJ1ZSBpZiB0aGVzZSBzdWJzdHJpbmdzCisgICAgICogcmVwcmVzZW50IGlkZW50aWNhbCBjaGFyYWN0ZXIgc2VxdWVuY2VzLiBUaGUgc3Vic3RyaW5nIG9mIHRoaXMKKyAgICAgKiA8dHQ+U3RyaW5nPC90dD4gb2JqZWN0IHRvIGJlIGNvbXBhcmVkIGJlZ2lucyBhdCBpbmRleCA8dHQ+dG9mZnNldDwvdHQ+CisgICAgICogYW5kIGhhcyBsZW5ndGggPHR0PmxlbjwvdHQ+LiBUaGUgc3Vic3RyaW5nIG9mIG90aGVyIHRvIGJlIGNvbXBhcmVkCisgICAgICogYmVnaW5zIGF0IGluZGV4IDx0dD5vb2Zmc2V0PC90dD4gYW5kIGhhcyBsZW5ndGggPHR0PmxlbjwvdHQ+LiBUaGUKKyAgICAgKiByZXN1bHQgaXMgPHR0PmZhbHNlPC90dD4gaWYgYW5kIG9ubHkgaWYgYXQgbGVhc3Qgb25lIG9mIHRoZSBmb2xsb3dpbmcKKyAgICAgKiBpcyB0cnVlOgorICAgICAqIDx1bD48bGk+PHR0PnRvZmZzZXQ8L3R0PiBpcyBuZWdhdGl2ZS4KKyAgICAgKiA8bGk+PHR0Pm9vZmZzZXQ8L3R0PiBpcyBuZWdhdGl2ZS4KKyAgICAgKiA8bGk+PHR0PnRvZmZzZXQrbGVuPC90dD4gaXMgZ3JlYXRlciB0aGFuIHRoZSBsZW5ndGggb2YgdGhpcworICAgICAqIDx0dD5TdHJpbmc8L3R0PiBvYmplY3QuCisgICAgICogPGxpPjx0dD5vb2Zmc2V0K2xlbjwvdHQ+IGlzIGdyZWF0ZXIgdGhhbiB0aGUgbGVuZ3RoIG9mIHRoZSBvdGhlcgorICAgICAqIGFyZ3VtZW50LgorICAgICAqIDxsaT5UaGVyZSBpcyBzb21lIG5vbm5lZ2F0aXZlIGludGVnZXIgPGk+azwvaT4gbGVzcyB0aGFuIDx0dD5sZW48L3R0PgorICAgICAqIHN1Y2ggdGhhdDoKKyAgICAgKiA8dHQ+dGhpcy5jaGFyQXQodG9mZnNldCs8aT5rPC9pPikmbmJzcDshPSZuYnNwO290aGVyLmNoYXJBdChvb2Zmc2V0KzxpPms8L2k+KTwvdHQ+CisgICAgICogPC91bD4KKyAgICAgKgorICAgICAqIEBwYXJhbSAgIHRvZmZzZXQgICB0aGUgc3RhcnRpbmcgb2Zmc2V0IG9mIHRoZSBzdWJyZWdpb24gaW4gdGhpcyBzdHJpbmcuCisgICAgICogQHBhcmFtICAgb3RoZXIgICAgIHRoZSBzdHJpbmcgYXJndW1lbnQuCisgICAgICogQHBhcmFtICAgb29mZnNldCAgIHRoZSBzdGFydGluZyBvZmZzZXQgb2YgdGhlIHN1YnJlZ2lvbiBpbiB0aGUgc3RyaW5nCisgICAgICogICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50LgorICAgICAqIEBwYXJhbSAgIGxlbiAgICAgICB0aGUgbnVtYmVyIG9mIGNoYXJhY3RlcnMgdG8gY29tcGFyZS4KKyAgICAgKiBAcmV0dXJuICA8Y29kZT50cnVlPC9jb2RlPiBpZiB0aGUgc3BlY2lmaWVkIHN1YnJlZ2lvbiBvZiB0aGlzIHN0cmluZworICAgICAqICAgICAgICAgIGV4YWN0bHkgbWF0Y2hlcyB0aGUgc3BlY2lmaWVkIHN1YnJlZ2lvbiBvZiB0aGUgc3RyaW5nIGFyZ3VtZW50OworICAgICAqICAgICAgICAgIDxjb2RlPmZhbHNlPC9jb2RlPiBvdGhlcndpc2UuCisgICAgICovCisgICAgcHVibGljIGJvb2xlYW4gcmVnaW9uTWF0Y2hlcyhpbnQgdG9mZnNldCwgU3RyaW5nIG90aGVyLCBpbnQgb29mZnNldCwKKwkJCQkgaW50IGxlbikgeworCWNoYXIgdGFbXSA9IHZhbHVlOworCWludCB0byA9IG9mZnNldCArIHRvZmZzZXQ7CisJY2hhciBwYVtdID0gb3RoZXIudmFsdWU7CisJaW50IHBvID0gb3RoZXIub2Zmc2V0ICsgb29mZnNldDsKKwkvLyBOb3RlOiB0b2Zmc2V0LCBvb2Zmc2V0LCBvciBsZW4gbWlnaHQgYmUgbmVhciAtMT4+PjEuCisJaWYgKChvb2Zmc2V0IDwgMCkgfHwgKHRvZmZzZXQgPCAwKSB8fCAodG9mZnNldCA+IChsb25nKWNvdW50IC0gbGVuKQorCSAgICB8fCAob29mZnNldCA+IChsb25nKW90aGVyLmNvdW50IC0gbGVuKSkgeworCSAgICByZXR1cm4gZmFsc2U7CisJfQorCXdoaWxlIChsZW4tLSA+IDApIHsKKwkgICAgaWYgKHRhW3RvKytdICE9IHBhW3BvKytdKSB7CisJICAgICAgICByZXR1cm4gZmFsc2U7CisJICAgIH0KKwl9CisJcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgLyoqCisgICAgICogVGVzdHMgaWYgdHdvIHN0cmluZyByZWdpb25zIGFyZSBlcXVhbC4KKyAgICAgKiA8cD4KKyAgICAgKiBBIHN1YnN0cmluZyBvZiB0aGlzIDx0dD5TdHJpbmc8L3R0PiBvYmplY3QgaXMgY29tcGFyZWQgdG8gYSBzdWJzdHJpbmcKKyAgICAgKiBvZiB0aGUgYXJndW1lbnQgPHR0Pm90aGVyPC90dD4uIFRoZSByZXN1bHQgaXMgPHR0PnRydWU8L3R0PiBpZiB0aGVzZQorICAgICAqIHN1YnN0cmluZ3MgcmVwcmVzZW50IGNoYXJhY3RlciBzZXF1ZW5jZXMgdGhhdCBhcmUgdGhlIHNhbWUsIGlnbm9yaW5nCisgICAgICogY2FzZSBpZiBhbmQgb25seSBpZiA8dHQ+aWdub3JlQ2FzZTwvdHQ+IGlzIHRydWUuIFRoZSBzdWJzdHJpbmcgb2YKKyAgICAgKiB0aGlzIDx0dD5TdHJpbmc8L3R0PiBvYmplY3QgdG8gYmUgY29tcGFyZWQgYmVnaW5zIGF0IGluZGV4CisgICAgICogPHR0PnRvZmZzZXQ8L3R0PiBhbmQgaGFzIGxlbmd0aCA8dHQ+bGVuPC90dD4uIFRoZSBzdWJzdHJpbmcgb2YKKyAgICAgKiA8dHQ+b3RoZXI8L3R0PiB0byBiZSBjb21wYXJlZCBiZWdpbnMgYXQgaW5kZXggPHR0Pm9vZmZzZXQ8L3R0PiBhbmQKKyAgICAgKiBoYXMgbGVuZ3RoIDx0dD5sZW48L3R0Pi4gVGhlIHJlc3VsdCBpcyA8dHQ+ZmFsc2U8L3R0PiBpZiBhbmQgb25seSBpZgorICAgICAqIGF0IGxlYXN0IG9uZSBvZiB0aGUgZm9sbG93aW5nIGlzIHRydWU6CisgICAgICogPHVsPjxsaT48dHQ+dG9mZnNldDwvdHQ+IGlzIG5lZ2F0aXZlLgorICAgICAqIDxsaT48dHQ+b29mZnNldDwvdHQ+IGlzIG5lZ2F0aXZlLgorICAgICAqIDxsaT48dHQ+dG9mZnNldCtsZW48L3R0PiBpcyBncmVhdGVyIHRoYW4gdGhlIGxlbmd0aCBvZiB0aGlzCisgICAgICogPHR0PlN0cmluZzwvdHQ+IG9iamVjdC4KKyAgICAgKiA8bGk+PHR0Pm9vZmZzZXQrbGVuPC90dD4gaXMgZ3JlYXRlciB0aGFuIHRoZSBsZW5ndGggb2YgdGhlIG90aGVyCisgICAgICogYXJndW1lbnQuCisgICAgICogPGxpPjx0dD5pZ25vcmVDYXNlPC90dD4gaXMgPHR0PmZhbHNlPC90dD4gYW5kIHRoZXJlIGlzIHNvbWUgbm9ubmVnYXRpdmUKKyAgICAgKiBpbnRlZ2VyIDxpPms8L2k+IGxlc3MgdGhhbiA8dHQ+bGVuPC90dD4gc3VjaCB0aGF0OgorICAgICAqIDxibG9ja3F1b3RlPjxwcmU+CisgICAgICogdGhpcy5jaGFyQXQodG9mZnNldCtrKSAhPSBvdGhlci5jaGFyQXQob29mZnNldCtrKQorICAgICAqIDwvcHJlPjwvYmxvY2txdW90ZT4KKyAgICAgKiA8bGk+PHR0Pmlnbm9yZUNhc2U8L3R0PiBpcyA8dHQ+dHJ1ZTwvdHQ+IGFuZCB0aGVyZSBpcyBzb21lIG5vbm5lZ2F0aXZlCisgICAgICogaW50ZWdlciA8aT5rPC9pPiBsZXNzIHRoYW4gPHR0PmxlbjwvdHQ+IHN1Y2ggdGhhdDoKKyAgICAgKiA8YmxvY2txdW90ZT48cHJlPgorICAgICAqIENoYXJhY3Rlci50b0xvd2VyQ2FzZSh0aGlzLmNoYXJBdCh0b2Zmc2V0K2spKSAhPQorICAgICAgICAgICAgICAgQ2hhcmFjdGVyLnRvTG93ZXJDYXNlKG90aGVyLmNoYXJBdChvb2Zmc2V0K2spKQorICAgICAqIDwvcHJlPjwvYmxvY2txdW90ZT4KKyAgICAgKiBhbmQ6CisgICAgICogPGJsb2NrcXVvdGU+PHByZT4KKyAgICAgKiBDaGFyYWN0ZXIudG9VcHBlckNhc2UodGhpcy5jaGFyQXQodG9mZnNldCtrKSkgIT0KKyAgICAgKiAgICAgICAgIENoYXJhY3Rlci50b1VwcGVyQ2FzZShvdGhlci5jaGFyQXQob29mZnNldCtrKSkKKyAgICAgKiA8L3ByZT48L2Jsb2NrcXVvdGU+CisgICAgICogPC91bD4KKyAgICAgKgorICAgICAqIEBwYXJhbSAgIGlnbm9yZUNhc2UgICBpZiA8Y29kZT50cnVlPC9jb2RlPiwgaWdub3JlIGNhc2Ugd2hlbiBjb21wYXJpbmcKKyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgY2hhcmFjdGVycy4KKyAgICAgKiBAcGFyYW0gICB0b2Zmc2V0ICAgICAgdGhlIHN0YXJ0aW5nIG9mZnNldCBvZiB0aGUgc3VicmVnaW9uIGluIHRoaXMKKyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgc3RyaW5nLgorICAgICAqIEBwYXJhbSAgIG90aGVyICAgICAgICB0aGUgc3RyaW5nIGFyZ3VtZW50LgorICAgICAqIEBwYXJhbSAgIG9vZmZzZXQgICAgICB0aGUgc3RhcnRpbmcgb2Zmc2V0IG9mIHRoZSBzdWJyZWdpb24gaW4gdGhlIHN0cmluZworICAgICAqICAgICAgICAgICAgICAgICAgICAgICBhcmd1bWVudC4KKyAgICAgKiBAcGFyYW0gICBsZW4gICAgICAgICAgdGhlIG51bWJlciBvZiBjaGFyYWN0ZXJzIHRvIGNvbXBhcmUuCisgICAgICogQHJldHVybiAgPGNvZGU+dHJ1ZTwvY29kZT4gaWYgdGhlIHNwZWNpZmllZCBzdWJyZWdpb24gb2YgdGhpcyBzdHJpbmcKKyAgICAgKiAgICAgICAgICBtYXRjaGVzIHRoZSBzcGVjaWZpZWQgc3VicmVnaW9uIG9mIHRoZSBzdHJpbmcgYXJndW1lbnQ7CisgICAgICogICAgICAgICAgPGNvZGU+ZmFsc2U8L2NvZGU+IG90aGVyd2lzZS4gV2hldGhlciB0aGUgbWF0Y2hpbmcgaXMgZXhhY3QKKyAgICAgKiAgICAgICAgICBvciBjYXNlIGluc2Vuc2l0aXZlIGRlcGVuZHMgb24gdGhlIDxjb2RlPmlnbm9yZUNhc2U8L2NvZGU+CisgICAgICogICAgICAgICAgYXJndW1lbnQuCisgICAgICovCisgICAgcHVibGljIGJvb2xlYW4gcmVnaW9uTWF0Y2hlcyhib29sZWFuIGlnbm9yZUNhc2UsIGludCB0b2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nIG90aGVyLCBpbnQgb29mZnNldCwgaW50IGxlbikgeworICAgICAgICBjaGFyIHRhW10gPSB2YWx1ZTsKKyAgICAgICAgaW50IHRvID0gb2Zmc2V0ICsgdG9mZnNldDsKKyAgICAgICAgY2hhciBwYVtdID0gb3RoZXIudmFsdWU7CisgICAgICAgIGludCBwbyA9IG90aGVyLm9mZnNldCArIG9vZmZzZXQ7CisgICAgICAgIC8vIE5vdGU6IHRvZmZzZXQsIG9vZmZzZXQsIG9yIGxlbiBtaWdodCBiZSBuZWFyIC0xPj4+MS4KKyAgICAgICAgaWYgKChvb2Zmc2V0IDwgMCkgfHwgKHRvZmZzZXQgPCAwKSB8fCAodG9mZnNldCA+IChsb25nKWNvdW50IC0gbGVuKSB8fAorICAgICAgICAgICAgICAgIChvb2Zmc2V0ID4gKGxvbmcpb3RoZXIuY291bnQgLSBsZW4pKSB7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgd2hpbGUgKGxlbi0tID4gMCkgeworICAgICAgICAgICAgY2hhciBjMSA9IHRhW3RvKytdOworICAgICAgICAgICAgY2hhciBjMiA9IHBhW3BvKytdOworICAgICAgICAgICAgaWYgKGMxID09IGMyKSB7CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoaWdub3JlQ2FzZSkgeworICAgICAgICAgICAgICAgIC8vIElmIGNoYXJhY3RlcnMgZG9uJ3QgbWF0Y2ggYnV0IGNhc2UgbWF5IGJlIGlnbm9yZWQsCisgICAgICAgICAgICAgICAgLy8gdHJ5IGNvbnZlcnRpbmcgYm90aCBjaGFyYWN0ZXJzIHRvIHVwcGVyY2FzZS4KKyAgICAgICAgICAgICAgICAvLyBJZiB0aGUgcmVzdWx0cyBtYXRjaCwgdGhlbiB0aGUgY29tcGFyaXNvbiBzY2FuIHNob3VsZAorICAgICAgICAgICAgICAgIC8vIGNvbnRpbnVlLgorICAgICAgICAgICAgICAgIGNoYXIgdTEgPSBDaGFyYWN0ZXIudG9VcHBlckNhc2UoYzEpOworICAgICAgICAgICAgICAgIGNoYXIgdTIgPSBDaGFyYWN0ZXIudG9VcHBlckNhc2UoYzIpOworICAgICAgICAgICAgICAgIGlmICh1MSA9PSB1MikgeworICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgLy8gVW5mb3J0dW5hdGVseSwgY29udmVyc2lvbiB0byB1cHBlcmNhc2UgZG9lcyBub3Qgd29yayBwcm9wZXJseQorICAgICAgICAgICAgICAgIC8vIGZvciB0aGUgR2VvcmdpYW4gYWxwaGFiZXQsIHdoaWNoIGhhcyBzdHJhbmdlIHJ1bGVzIGFib3V0IGNhc2UKKyAgICAgICAgICAgICAgICAvLyBjb252ZXJzaW9uLiAgU28gd2UgbmVlZCB0byBtYWtlIG9uZSBsYXN0IGNoZWNrIGJlZm9yZQorICAgICAgICAgICAgICAgIC8vIGV4aXRpbmcuCisgICAgICAgICAgICAgICAgaWYgKENoYXJhY3Rlci50b0xvd2VyQ2FzZSh1MSkgPT0gQ2hhcmFjdGVyLnRvTG93ZXJDYXNlKHUyKSkgeworICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgLyoqCisgICAgICogVGVzdHMgaWYgdGhpcyBzdHJpbmcgc3RhcnRzIHdpdGggdGhlIHNwZWNpZmllZCBwcmVmaXggYmVnaW5uaW5nCisgICAgICogYSBzcGVjaWZpZWQgaW5kZXguCisgICAgICoKKyAgICAgKiBAcGFyYW0gICBwcmVmaXggICAgdGhlIHByZWZpeC4KKyAgICAgKiBAcGFyYW0gICB0b2Zmc2V0ICAgd2hlcmUgdG8gYmVnaW4gbG9va2luZyBpbiB0aGUgc3RyaW5nLgorICAgICAqIEByZXR1cm4gIDxjb2RlPnRydWU8L2NvZGU+IGlmIHRoZSBjaGFyYWN0ZXIgc2VxdWVuY2UgcmVwcmVzZW50ZWQgYnkgdGhlCisgICAgICogICAgICAgICAgYXJndW1lbnQgaXMgYSBwcmVmaXggb2YgdGhlIHN1YnN0cmluZyBvZiB0aGlzIG9iamVjdCBzdGFydGluZworICAgICAqICAgICAgICAgIGF0IGluZGV4IDxjb2RlPnRvZmZzZXQ8L2NvZGU+OyA8Y29kZT5mYWxzZTwvY29kZT4gb3RoZXJ3aXNlLgorICAgICAqICAgICAgICAgIFRoZSByZXN1bHQgaXMgPGNvZGU+ZmFsc2U8L2NvZGU+IGlmIDxjb2RlPnRvZmZzZXQ8L2NvZGU+IGlzCisgICAgICogICAgICAgICAgbmVnYXRpdmUgb3IgZ3JlYXRlciB0aGFuIHRoZSBsZW5ndGggb2YgdGhpcworICAgICAqICAgICAgICAgIDxjb2RlPlN0cmluZzwvY29kZT4gb2JqZWN0OyBvdGhlcndpc2UgdGhlIHJlc3VsdCBpcyB0aGUgc2FtZQorICAgICAqICAgICAgICAgIGFzIHRoZSByZXN1bHQgb2YgdGhlIGV4cHJlc3Npb24KKyAgICAgKiAgICAgICAgICA8cHJlPgorICAgICAqICAgICAgICAgIHRoaXMuc3Vic3RyaW5nKHRvZmZzZXQpLnN0YXJ0c1dpdGgocHJlZml4KQorICAgICAqICAgICAgICAgIDwvcHJlPgorICAgICAqLworICAgIHB1YmxpYyBib29sZWFuIHN0YXJ0c1dpdGgoU3RyaW5nIHByZWZpeCwgaW50IHRvZmZzZXQpIHsKKwljaGFyIHRhW10gPSB2YWx1ZTsKKwlpbnQgdG8gPSBvZmZzZXQgKyB0b2Zmc2V0OworCWNoYXIgcGFbXSA9IHByZWZpeC52YWx1ZTsKKwlpbnQgcG8gPSBwcmVmaXgub2Zmc2V0OworCWludCBwYyA9IHByZWZpeC5jb3VudDsKKwkvLyBOb3RlOiB0b2Zmc2V0IG1pZ2h0IGJlIG5lYXIgLTE+Pj4xLgorCWlmICgodG9mZnNldCA8IDApIHx8ICh0b2Zmc2V0ID4gY291bnQgLSBwYykpIHsKKwkgICAgcmV0dXJuIGZhbHNlOworCX0KKwl3aGlsZSAoLS1wYyA+PSAwKSB7CisJICAgIGlmICh0YVt0bysrXSAhPSBwYVtwbysrXSkgeworCSAgICAgICAgcmV0dXJuIGZhbHNlOworCSAgICB9CisJfQorCXJldHVybiB0cnVlOworICAgIH0KKworICAgIC8qKgorICAgICAqIFRlc3RzIGlmIHRoaXMgc3RyaW5nIHN0YXJ0cyB3aXRoIHRoZSBzcGVjaWZpZWQgcHJlZml4LgorICAgICAqCisgICAgICogQHBhcmFtICAgcHJlZml4ICAgdGhlIHByZWZpeC4KKyAgICAgKiBAcmV0dXJuICA8Y29kZT50cnVlPC9jb2RlPiBpZiB0aGUgY2hhcmFjdGVyIHNlcXVlbmNlIHJlcHJlc2VudGVkIGJ5IHRoZQorICAgICAqICAgICAgICAgIGFyZ3VtZW50IGlzIGEgcHJlZml4IG9mIHRoZSBjaGFyYWN0ZXIgc2VxdWVuY2UgcmVwcmVzZW50ZWQgYnkKKyAgICAgKiAgICAgICAgICB0aGlzIHN0cmluZzsgPGNvZGU+ZmFsc2U8L2NvZGU+IG90aGVyd2lzZS4KKyAgICAgKiAgICAgICAgICBOb3RlIGFsc28gdGhhdCA8Y29kZT50cnVlPC9jb2RlPiB3aWxsIGJlIHJldHVybmVkIGlmIHRoZQorICAgICAqICAgICAgICAgIGFyZ3VtZW50IGlzIGFuIGVtcHR5IHN0cmluZyBvciBpcyBlcXVhbCB0byB0aGlzCisgICAgICogICAgICAgICAgPGNvZGU+U3RyaW5nPC9jb2RlPiBvYmplY3QgYXMgZGV0ZXJtaW5lZCBieSB0aGUKKyAgICAgKiAgICAgICAgICB7QGxpbmsgI2VxdWFscyhPYmplY3QpfSBtZXRob2QuCisgICAgICogQHNpbmNlICAgMS4gMAorICAgICAqLworICAgIHB1YmxpYyBib29sZWFuIHN0YXJ0c1dpdGgoU3RyaW5nIHByZWZpeCkgeworCXJldHVybiBzdGFydHNXaXRoKHByZWZpeCwgMCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogVGVzdHMgaWYgdGhpcyBzdHJpbmcgZW5kcyB3aXRoIHRoZSBzcGVjaWZpZWQgc3VmZml4LgorICAgICAqCisgICAgICogQHBhcmFtICAgc3VmZml4ICAgdGhlIHN1ZmZpeC4KKyAgICAgKiBAcmV0dXJuICA8Y29kZT50cnVlPC9jb2RlPiBpZiB0aGUgY2hhcmFjdGVyIHNlcXVlbmNlIHJlcHJlc2VudGVkIGJ5IHRoZQorICAgICAqICAgICAgICAgIGFyZ3VtZW50IGlzIGEgc3VmZml4IG9mIHRoZSBjaGFyYWN0ZXIgc2VxdWVuY2UgcmVwcmVzZW50ZWQgYnkKKyAgICAgKiAgICAgICAgICB0aGlzIG9iamVjdDsgPGNvZGU+ZmFsc2U8L2NvZGU+IG90aGVyd2lzZS4gTm90ZSB0aGF0IHRoZQorICAgICAqICAgICAgICAgIHJlc3VsdCB3aWxsIGJlIDxjb2RlPnRydWU8L2NvZGU+IGlmIHRoZSBhcmd1bWVudCBpcyB0aGUKKyAgICAgKiAgICAgICAgICBlbXB0eSBzdHJpbmcgb3IgaXMgZXF1YWwgdG8gdGhpcyA8Y29kZT5TdHJpbmc8L2NvZGU+IG9iamVjdAorICAgICAqICAgICAgICAgIGFzIGRldGVybWluZWQgYnkgdGhlIHtAbGluayAjZXF1YWxzKE9iamVjdCl9IG1ldGhvZC4KKyAgICAgKi8KKyAgICBwdWJsaWMgYm9vbGVhbiBlbmRzV2l0aChTdHJpbmcgc3VmZml4KSB7CisJcmV0dXJuIHN0YXJ0c1dpdGgoc3VmZml4LCBjb3VudCAtIHN1ZmZpeC5jb3VudCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJucyBhIGhhc2ggY29kZSBmb3IgdGhpcyBzdHJpbmcuIFRoZSBoYXNoIGNvZGUgZm9yIGEKKyAgICAgKiA8Y29kZT5TdHJpbmc8L2NvZGU+IG9iamVjdCBpcyBjb21wdXRlZCBhcworICAgICAqIDxibG9ja3F1b3RlPjxwcmU+CisgICAgICogc1swXSozMV4obi0xKSArIHNbMV0qMzFeKG4tMikgKyAuLi4gKyBzW24tMV0KKyAgICAgKiA8L3ByZT48L2Jsb2NrcXVvdGU+CisgICAgICogdXNpbmcgPGNvZGU+aW50PC9jb2RlPiBhcml0aG1ldGljLCB3aGVyZSA8Y29kZT5zW2ldPC9jb2RlPiBpcyB0aGUKKyAgICAgKiA8aT5pPC9pPnRoIGNoYXJhY3RlciBvZiB0aGUgc3RyaW5nLCA8Y29kZT5uPC9jb2RlPiBpcyB0aGUgbGVuZ3RoIG9mCisgICAgICogdGhlIHN0cmluZywgYW5kIDxjb2RlPl48L2NvZGU+IGluZGljYXRlcyBleHBvbmVudGlhdGlvbi4KKyAgICAgKiAoVGhlIGhhc2ggdmFsdWUgb2YgdGhlIGVtcHR5IHN0cmluZyBpcyB6ZXJvLikKKyAgICAgKgorICAgICAqIEByZXR1cm4gIGEgaGFzaCBjb2RlIHZhbHVlIGZvciB0aGlzIG9iamVjdC4KKyAgICAgKi8KKyAgICBwdWJsaWMgaW50IGhhc2hDb2RlKCkgeworCWludCBoID0gaGFzaDsKKwlpZiAoaCA9PSAwKSB7CisJICAgIGludCBvZmYgPSBvZmZzZXQ7CisJICAgIGNoYXIgdmFsW10gPSB2YWx1ZTsKKwkgICAgaW50IGxlbiA9IGNvdW50OworCisgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGxlbjsgaSsrKSB7CisgICAgICAgICAgICAgICAgaCA9IDMxKmggKyB2YWxbb2ZmKytdOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaGFzaCA9IGg7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGg7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJucyB0aGUgaW5kZXggd2l0aGluIHRoaXMgc3RyaW5nIG9mIHRoZSBmaXJzdCBvY2N1cnJlbmNlIG9mCisgICAgICogdGhlIHNwZWNpZmllZCBjaGFyYWN0ZXIuIElmIGEgY2hhcmFjdGVyIHdpdGggdmFsdWUKKyAgICAgKiA8Y29kZT5jaDwvY29kZT4gb2NjdXJzIGluIHRoZSBjaGFyYWN0ZXIgc2VxdWVuY2UgcmVwcmVzZW50ZWQgYnkKKyAgICAgKiB0aGlzIDxjb2RlPlN0cmluZzwvY29kZT4gb2JqZWN0LCB0aGVuIHRoZSBpbmRleCAoaW4gVW5pY29kZQorICAgICAqIGNvZGUgdW5pdHMpIG9mIHRoZSBmaXJzdCBzdWNoIG9jY3VycmVuY2UgaXMgcmV0dXJuZWQuIEZvcgorICAgICAqIHZhbHVlcyBvZiA8Y29kZT5jaDwvY29kZT4gaW4gdGhlIHJhbmdlIGZyb20gMCB0byAweEZGRkYKKyAgICAgKiAoaW5jbHVzaXZlKSwgdGhpcyBpcyB0aGUgc21hbGxlc3QgdmFsdWUgPGk+azwvaT4gc3VjaCB0aGF0OgorICAgICAqIDxibG9ja3F1b3RlPjxwcmU+CisgICAgICogdGhpcy5jaGFyQXQoPGk+azwvaT4pID09IGNoCisgICAgICogPC9wcmU+PC9ibG9ja3F1b3RlPgorICAgICAqIGlzIHRydWUuIEZvciBvdGhlciB2YWx1ZXMgb2YgPGNvZGU+Y2g8L2NvZGU+LCBpdCBpcyB0aGUKKyAgICAgKiBzbWFsbGVzdCB2YWx1ZSA8aT5rPC9pPiBzdWNoIHRoYXQ6CisgICAgICogPGJsb2NrcXVvdGU+PHByZT4KKyAgICAgKiB0aGlzLmNvZGVQb2ludEF0KDxpPms8L2k+KSA9PSBjaAorICAgICAqIDwvcHJlPjwvYmxvY2txdW90ZT4KKyAgICAgKiBpcyB0cnVlLiBJbiBlaXRoZXIgY2FzZSwgaWYgbm8gc3VjaCBjaGFyYWN0ZXIgb2NjdXJzIGluIHRoaXMKKyAgICAgKiBzdHJpbmcsIHRoZW4gPGNvZGU+LTE8L2NvZGU+IGlzIHJldHVybmVkLgorICAgICAqCisgICAgICogQHBhcmFtICAgY2ggICBhIGNoYXJhY3RlciAoVW5pY29kZSBjb2RlIHBvaW50KS4KKyAgICAgKiBAcmV0dXJuICB0aGUgaW5kZXggb2YgdGhlIGZpcnN0IG9jY3VycmVuY2Ugb2YgdGhlIGNoYXJhY3RlciBpbiB0aGUKKyAgICAgKiAgICAgICAgICBjaGFyYWN0ZXIgc2VxdWVuY2UgcmVwcmVzZW50ZWQgYnkgdGhpcyBvYmplY3QsIG9yCisgICAgICogICAgICAgICAgPGNvZGU+LTE8L2NvZGU+IGlmIHRoZSBjaGFyYWN0ZXIgZG9lcyBub3Qgb2NjdXIuCisgICAgICovCisgICAgcHVibGljIGludCBpbmRleE9mKGludCBjaCkgeworCXJldHVybiBpbmRleE9mKGNoLCAwKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIHRoZSBpbmRleCB3aXRoaW4gdGhpcyBzdHJpbmcgb2YgdGhlIGZpcnN0IG9jY3VycmVuY2Ugb2YgdGhlCisgICAgICogc3BlY2lmaWVkIGNoYXJhY3Rlciwgc3RhcnRpbmcgdGhlIHNlYXJjaCBhdCB0aGUgc3BlY2lmaWVkIGluZGV4LgorICAgICAqIDxwPgorICAgICAqIElmIGEgY2hhcmFjdGVyIHdpdGggdmFsdWUgPGNvZGU+Y2g8L2NvZGU+IG9jY3VycyBpbiB0aGUKKyAgICAgKiBjaGFyYWN0ZXIgc2VxdWVuY2UgcmVwcmVzZW50ZWQgYnkgdGhpcyA8Y29kZT5TdHJpbmc8L2NvZGU+CisgICAgICogb2JqZWN0IGF0IGFuIGluZGV4IG5vIHNtYWxsZXIgdGhhbiA8Y29kZT5mcm9tSW5kZXg8L2NvZGU+LCB0aGVuCisgICAgICogdGhlIGluZGV4IG9mIHRoZSBmaXJzdCBzdWNoIG9jY3VycmVuY2UgaXMgcmV0dXJuZWQuIEZvciB2YWx1ZXMKKyAgICAgKiBvZiA8Y29kZT5jaDwvY29kZT4gaW4gdGhlIHJhbmdlIGZyb20gMCB0byAweEZGRkYgKGluY2x1c2l2ZSksCisgICAgICogdGhpcyBpcyB0aGUgc21hbGxlc3QgdmFsdWUgPGk+azwvaT4gc3VjaCB0aGF0OgorICAgICAqIDxibG9ja3F1b3RlPjxwcmU+CisgICAgICogKHRoaXMuY2hhckF0KDxpPms8L2k+KSA9PSBjaCkgJiYgKDxpPms8L2k+ICZndDs9IGZyb21JbmRleCkKKyAgICAgKiA8L3ByZT48L2Jsb2NrcXVvdGU+CisgICAgICogaXMgdHJ1ZS4gRm9yIG90aGVyIHZhbHVlcyBvZiA8Y29kZT5jaDwvY29kZT4sIGl0IGlzIHRoZQorICAgICAqIHNtYWxsZXN0IHZhbHVlIDxpPms8L2k+IHN1Y2ggdGhhdDoKKyAgICAgKiA8YmxvY2txdW90ZT48cHJlPgorICAgICAqICh0aGlzLmNvZGVQb2ludEF0KDxpPms8L2k+KSA9PSBjaCkgJiYgKDxpPms8L2k+ICZndDs9IGZyb21JbmRleCkKKyAgICAgKiA8L3ByZT48L2Jsb2NrcXVvdGU+CisgICAgICogaXMgdHJ1ZS4gSW4gZWl0aGVyIGNhc2UsIGlmIG5vIHN1Y2ggY2hhcmFjdGVyIG9jY3VycyBpbiB0aGlzCisgICAgICogc3RyaW5nIGF0IG9yIGFmdGVyIHBvc2l0aW9uIDxjb2RlPmZyb21JbmRleDwvY29kZT4sIHRoZW4KKyAgICAgKiA8Y29kZT4tMTwvY29kZT4gaXMgcmV0dXJuZWQuCisgICAgICoKKyAgICAgKiA8cD4KKyAgICAgKiBUaGVyZSBpcyBubyByZXN0cmljdGlvbiBvbiB0aGUgdmFsdWUgb2YgPGNvZGU+ZnJvbUluZGV4PC9jb2RlPi4gSWYgaXQKKyAgICAgKiBpcyBuZWdhdGl2ZSwgaXQgaGFzIHRoZSBzYW1lIGVmZmVjdCBhcyBpZiBpdCB3ZXJlIHplcm86IHRoaXMgZW50aXJlCisgICAgICogc3RyaW5nIG1heSBiZSBzZWFyY2hlZC4gSWYgaXQgaXMgZ3JlYXRlciB0aGFuIHRoZSBsZW5ndGggb2YgdGhpcworICAgICAqIHN0cmluZywgaXQgaGFzIHRoZSBzYW1lIGVmZmVjdCBhcyBpZiBpdCB3ZXJlIGVxdWFsIHRvIHRoZSBsZW5ndGggb2YKKyAgICAgKiB0aGlzIHN0cmluZzogPGNvZGU+LTE8L2NvZGU+IGlzIHJldHVybmVkLgorICAgICAqCisgICAgICogPHA+QWxsIGluZGljZXMgYXJlIHNwZWNpZmllZCBpbiA8Y29kZT5jaGFyPC9jb2RlPiB2YWx1ZXMKKyAgICAgKiAoVW5pY29kZSBjb2RlIHVuaXRzKS4KKyAgICAgKgorICAgICAqIEBwYXJhbSAgIGNoICAgICAgICAgIGEgY2hhcmFjdGVyIChVbmljb2RlIGNvZGUgcG9pbnQpLgorICAgICAqIEBwYXJhbSAgIGZyb21JbmRleCAgIHRoZSBpbmRleCB0byBzdGFydCB0aGUgc2VhcmNoIGZyb20uCisgICAgICogQHJldHVybiAgdGhlIGluZGV4IG9mIHRoZSBmaXJzdCBvY2N1cnJlbmNlIG9mIHRoZSBjaGFyYWN0ZXIgaW4gdGhlCisgICAgICogICAgICAgICAgY2hhcmFjdGVyIHNlcXVlbmNlIHJlcHJlc2VudGVkIGJ5IHRoaXMgb2JqZWN0IHRoYXQgaXMgZ3JlYXRlcgorICAgICAqICAgICAgICAgIHRoYW4gb3IgZXF1YWwgdG8gPGNvZGU+ZnJvbUluZGV4PC9jb2RlPiwgb3IgPGNvZGU+LTE8L2NvZGU+CisgICAgICogICAgICAgICAgaWYgdGhlIGNoYXJhY3RlciBkb2VzIG5vdCBvY2N1ci4KKyAgICAgKi8KKyAgICBwdWJsaWMgaW50IGluZGV4T2YoaW50IGNoLCBpbnQgZnJvbUluZGV4KSB7CisJaW50IG1heCA9IG9mZnNldCArIGNvdW50OworCWNoYXIgdltdID0gdmFsdWU7CisKKwlpZiAoZnJvbUluZGV4IDwgMCkgeworCSAgICBmcm9tSW5kZXggPSAwOworCX0gZWxzZSBpZiAoZnJvbUluZGV4ID49IGNvdW50KSB7CisJICAgIC8vIE5vdGU6IGZyb21JbmRleCBtaWdodCBiZSBuZWFyIC0xPj4+MS4KKwkgICAgcmV0dXJuIC0xOworCX0KKworCWludCBpID0gb2Zmc2V0ICsgZnJvbUluZGV4OworCWlmIChjaCA8IENoYXJhY3Rlci5NSU5fU1VQUExFTUVOVEFSWV9DT0RFX1BPSU5UKSB7CisJICAgIC8vIGhhbmRsZSBtb3N0IGNhc2VzIGhlcmUgKGNoIGlzIGEgQk1QIGNvZGUgcG9pbnQgb3IgYQorCSAgICAvLyBuZWdhdGl2ZSB2YWx1ZSAoaW52YWxpZCBjb2RlIHBvaW50KSkKKwkgICAgZm9yICg7IGkgPCBtYXggOyBpKyspIHsKKwkJaWYgKHZbaV0gPT0gY2gpIHsKKwkJICAgIHJldHVybiBpIC0gb2Zmc2V0OworCQl9CisJICAgIH0KKwkgICAgcmV0dXJuIC0xOworCX0KKworCWlmIChjaCA8PSBDaGFyYWN0ZXIuTUFYX0NPREVfUE9JTlQpIHsKKwkgICAgLy8gaGFuZGxlIHN1cHBsZW1lbnRhcnkgY2hhcmFjdGVycyBoZXJlCisJICAgIGNoYXJbXSBzdXJyb2dhdGVzID0gQ2hhcmFjdGVyLnRvQ2hhcnMoY2gpOworCSAgICBmb3IgKDsgaSA8IG1heDsgaSsrKSB7CisJCWlmICh2W2ldID09IHN1cnJvZ2F0ZXNbMF0pIHsKKwkJICAgIGlmIChpICsgMSA9PSBtYXgpIHsKKwkJCWJyZWFrOworCQkgICAgfQorCQkgICAgaWYgKHZbaSsxXSA9PSBzdXJyb2dhdGVzWzFdKSB7CisJCQlyZXR1cm4gaSAtIG9mZnNldDsKKwkJICAgIH0KKwkJfQorCSAgICB9CisJfQorCXJldHVybiAtMTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIHRoZSBpbmRleCB3aXRoaW4gdGhpcyBzdHJpbmcgb2YgdGhlIGxhc3Qgb2NjdXJyZW5jZSBvZgorICAgICAqIHRoZSBzcGVjaWZpZWQgY2hhcmFjdGVyLiBGb3IgdmFsdWVzIG9mIDxjb2RlPmNoPC9jb2RlPiBpbiB0aGUKKyAgICAgKiByYW5nZSBmcm9tIDAgdG8gMHhGRkZGIChpbmNsdXNpdmUpLCB0aGUgaW5kZXggKGluIFVuaWNvZGUgY29kZQorICAgICAqIHVuaXRzKSByZXR1cm5lZCBpcyB0aGUgbGFyZ2VzdCB2YWx1ZSA8aT5rPC9pPiBzdWNoIHRoYXQ6CisgICAgICogPGJsb2NrcXVvdGU+PHByZT4KKyAgICAgKiB0aGlzLmNoYXJBdCg8aT5rPC9pPikgPT0gY2gKKyAgICAgKiA8L3ByZT48L2Jsb2NrcXVvdGU+CisgICAgICogaXMgdHJ1ZS4gRm9yIG90aGVyIHZhbHVlcyBvZiA8Y29kZT5jaDwvY29kZT4sIGl0IGlzIHRoZQorICAgICAqIGxhcmdlc3QgdmFsdWUgPGk+azwvaT4gc3VjaCB0aGF0OgorICAgICAqIDxibG9ja3F1b3RlPjxwcmU+CisgICAgICogdGhpcy5jb2RlUG9pbnRBdCg8aT5rPC9pPikgPT0gY2gKKyAgICAgKiA8L3ByZT48L2Jsb2NrcXVvdGU+CisgICAgICogaXMgdHJ1ZS4gIEluIGVpdGhlciBjYXNlLCBpZiBubyBzdWNoIGNoYXJhY3RlciBvY2N1cnMgaW4gdGhpcworICAgICAqIHN0cmluZywgdGhlbiA8Y29kZT4tMTwvY29kZT4gaXMgcmV0dXJuZWQuICBUaGUKKyAgICAgKiA8Y29kZT5TdHJpbmc8L2NvZGU+IGlzIHNlYXJjaGVkIGJhY2t3YXJkcyBzdGFydGluZyBhdCB0aGUgbGFzdAorICAgICAqIGNoYXJhY3Rlci4KKyAgICAgKgorICAgICAqIEBwYXJhbSAgIGNoICAgYSBjaGFyYWN0ZXIgKFVuaWNvZGUgY29kZSBwb2ludCkuCisgICAgICogQHJldHVybiAgdGhlIGluZGV4IG9mIHRoZSBsYXN0IG9jY3VycmVuY2Ugb2YgdGhlIGNoYXJhY3RlciBpbiB0aGUKKyAgICAgKiAgICAgICAgICBjaGFyYWN0ZXIgc2VxdWVuY2UgcmVwcmVzZW50ZWQgYnkgdGhpcyBvYmplY3QsIG9yCisgICAgICogICAgICAgICAgPGNvZGU+LTE8L2NvZGU+IGlmIHRoZSBjaGFyYWN0ZXIgZG9lcyBub3Qgb2NjdXIuCisgICAgICovCisgICAgcHVibGljIGludCBsYXN0SW5kZXhPZihpbnQgY2gpIHsKKwlyZXR1cm4gbGFzdEluZGV4T2YoY2gsIGNvdW50IC0gMSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJucyB0aGUgaW5kZXggd2l0aGluIHRoaXMgc3RyaW5nIG9mIHRoZSBsYXN0IG9jY3VycmVuY2Ugb2YKKyAgICAgKiB0aGUgc3BlY2lmaWVkIGNoYXJhY3Rlciwgc2VhcmNoaW5nIGJhY2t3YXJkIHN0YXJ0aW5nIGF0IHRoZQorICAgICAqIHNwZWNpZmllZCBpbmRleC4gRm9yIHZhbHVlcyBvZiA8Y29kZT5jaDwvY29kZT4gaW4gdGhlIHJhbmdlCisgICAgICogZnJvbSAwIHRvIDB4RkZGRiAoaW5jbHVzaXZlKSwgdGhlIGluZGV4IHJldHVybmVkIGlzIHRoZSBsYXJnZXN0CisgICAgICogdmFsdWUgPGk+azwvaT4gc3VjaCB0aGF0OgorICAgICAqIDxibG9ja3F1b3RlPjxwcmU+CisgICAgICogKHRoaXMuY2hhckF0KDxpPms8L2k+KSA9PSBjaCkgJiYgKDxpPms8L2k+ICZsdDs9IGZyb21JbmRleCkKKyAgICAgKiA8L3ByZT48L2Jsb2NrcXVvdGU+CisgICAgICogaXMgdHJ1ZS4gRm9yIG90aGVyIHZhbHVlcyBvZiA8Y29kZT5jaDwvY29kZT4sIGl0IGlzIHRoZQorICAgICAqIGxhcmdlc3QgdmFsdWUgPGk+azwvaT4gc3VjaCB0aGF0OgorICAgICAqIDxibG9ja3F1b3RlPjxwcmU+CisgICAgICogKHRoaXMuY29kZVBvaW50QXQoPGk+azwvaT4pID09IGNoKSAmJiAoPGk+azwvaT4gJmx0Oz0gZnJvbUluZGV4KQorICAgICAqIDwvcHJlPjwvYmxvY2txdW90ZT4KKyAgICAgKiBpcyB0cnVlLiBJbiBlaXRoZXIgY2FzZSwgaWYgbm8gc3VjaCBjaGFyYWN0ZXIgb2NjdXJzIGluIHRoaXMKKyAgICAgKiBzdHJpbmcgYXQgb3IgYmVmb3JlIHBvc2l0aW9uIDxjb2RlPmZyb21JbmRleDwvY29kZT4sIHRoZW4KKyAgICAgKiA8Y29kZT4tMTwvY29kZT4gaXMgcmV0dXJuZWQuCisgICAgICoKKyAgICAgKiA8cD5BbGwgaW5kaWNlcyBhcmUgc3BlY2lmaWVkIGluIDxjb2RlPmNoYXI8L2NvZGU+IHZhbHVlcworICAgICAqIChVbmljb2RlIGNvZGUgdW5pdHMpLgorICAgICAqCisgICAgICogQHBhcmFtICAgY2ggICAgICAgICAgYSBjaGFyYWN0ZXIgKFVuaWNvZGUgY29kZSBwb2ludCkuCisgICAgICogQHBhcmFtICAgZnJvbUluZGV4ICAgdGhlIGluZGV4IHRvIHN0YXJ0IHRoZSBzZWFyY2ggZnJvbS4gVGhlcmUgaXMgbm8KKyAgICAgKiAgICAgICAgICByZXN0cmljdGlvbiBvbiB0aGUgdmFsdWUgb2YgPGNvZGU+ZnJvbUluZGV4PC9jb2RlPi4gSWYgaXQgaXMKKyAgICAgKiAgICAgICAgICBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gdGhlIGxlbmd0aCBvZiB0aGlzIHN0cmluZywgaXQgaGFzCisgICAgICogICAgICAgICAgdGhlIHNhbWUgZWZmZWN0IGFzIGlmIGl0IHdlcmUgZXF1YWwgdG8gb25lIGxlc3MgdGhhbiB0aGUKKyAgICAgKiAgICAgICAgICBsZW5ndGggb2YgdGhpcyBzdHJpbmc6IHRoaXMgZW50aXJlIHN0cmluZyBtYXkgYmUgc2VhcmNoZWQuCisgICAgICogICAgICAgICAgSWYgaXQgaXMgbmVnYXRpdmUsIGl0IGhhcyB0aGUgc2FtZSBlZmZlY3QgYXMgaWYgaXQgd2VyZSAtMToKKyAgICAgKiAgICAgICAgICAtMSBpcyByZXR1cm5lZC4KKyAgICAgKiBAcmV0dXJuICB0aGUgaW5kZXggb2YgdGhlIGxhc3Qgb2NjdXJyZW5jZSBvZiB0aGUgY2hhcmFjdGVyIGluIHRoZQorICAgICAqICAgICAgICAgIGNoYXJhY3RlciBzZXF1ZW5jZSByZXByZXNlbnRlZCBieSB0aGlzIG9iamVjdCB0aGF0IGlzIGxlc3MKKyAgICAgKiAgICAgICAgICB0aGFuIG9yIGVxdWFsIHRvIDxjb2RlPmZyb21JbmRleDwvY29kZT4sIG9yIDxjb2RlPi0xPC9jb2RlPgorICAgICAqICAgICAgICAgIGlmIHRoZSBjaGFyYWN0ZXIgZG9lcyBub3Qgb2NjdXIgYmVmb3JlIHRoYXQgcG9pbnQuCisgICAgICovCisgICAgcHVibGljIGludCBsYXN0SW5kZXhPZihpbnQgY2gsIGludCBmcm9tSW5kZXgpIHsKKwlpbnQgbWluID0gb2Zmc2V0OworCWNoYXIgdltdID0gdmFsdWU7CisKKwlpbnQgaSA9IG9mZnNldCArICgoZnJvbUluZGV4ID49IGNvdW50KSA/IGNvdW50IC0gMSA6IGZyb21JbmRleCk7CisKKwlpZiAoY2ggPCBDaGFyYWN0ZXIuTUlOX1NVUFBMRU1FTlRBUllfQ09ERV9QT0lOVCkgeworCSAgICAvLyBoYW5kbGUgbW9zdCBjYXNlcyBoZXJlIChjaCBpcyBhIEJNUCBjb2RlIHBvaW50IG9yIGEKKwkgICAgLy8gbmVnYXRpdmUgdmFsdWUgKGludmFsaWQgY29kZSBwb2ludCkpCisJICAgIGZvciAoOyBpID49IG1pbiA7IGktLSkgeworCQlpZiAodltpXSA9PSBjaCkgeworCQkgICAgcmV0dXJuIGkgLSBvZmZzZXQ7CisJCX0KKwkgICAgfQorCSAgICByZXR1cm4gLTE7CisJfQorCisJaW50IG1heCA9IG9mZnNldCArIGNvdW50OworCWlmIChjaCA8PSBDaGFyYWN0ZXIuTUFYX0NPREVfUE9JTlQpIHsKKwkgICAgLy8gaGFuZGxlIHN1cHBsZW1lbnRhcnkgY2hhcmFjdGVycyBoZXJlCisJICAgIGNoYXJbXSBzdXJyb2dhdGVzID0gQ2hhcmFjdGVyLnRvQ2hhcnMoY2gpOworCSAgICBmb3IgKDsgaSA+PSBtaW47IGktLSkgeworCQlpZiAodltpXSA9PSBzdXJyb2dhdGVzWzBdKSB7CisJCSAgICBpZiAoaSArIDEgPT0gbWF4KSB7CisJCQlicmVhazsKKwkJICAgIH0KKwkJICAgIGlmICh2W2krMV0gPT0gc3Vycm9nYXRlc1sxXSkgeworCQkJcmV0dXJuIGkgLSBvZmZzZXQ7CisJCSAgICB9CisJCX0KKwkgICAgfQorCX0KKwlyZXR1cm4gLTE7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJucyB0aGUgaW5kZXggd2l0aGluIHRoaXMgc3RyaW5nIG9mIHRoZSBmaXJzdCBvY2N1cnJlbmNlIG9mIHRoZQorICAgICAqIHNwZWNpZmllZCBzdWJzdHJpbmcuIFRoZSBpbnRlZ2VyIHJldHVybmVkIGlzIHRoZSBzbWFsbGVzdCB2YWx1ZQorICAgICAqIDxpPms8L2k+IHN1Y2ggdGhhdDoKKyAgICAgKiA8YmxvY2txdW90ZT48cHJlPgorICAgICAqIHRoaXMuc3RhcnRzV2l0aChzdHIsIDxpPms8L2k+KQorICAgICAqIDwvcHJlPjwvYmxvY2txdW90ZT4KKyAgICAgKiBpcyA8Y29kZT50cnVlPC9jb2RlPi4KKyAgICAgKgorICAgICAqIEBwYXJhbSAgIHN0ciAgIGFueSBzdHJpbmcuCisgICAgICogQHJldHVybiAgaWYgdGhlIHN0cmluZyBhcmd1bWVudCBvY2N1cnMgYXMgYSBzdWJzdHJpbmcgd2l0aGluIHRoaXMKKyAgICAgKiAgICAgICAgICBvYmplY3QsIHRoZW4gdGhlIGluZGV4IG9mIHRoZSBmaXJzdCBjaGFyYWN0ZXIgb2YgdGhlIGZpcnN0CisgICAgICogICAgICAgICAgc3VjaCBzdWJzdHJpbmcgaXMgcmV0dXJuZWQ7IGlmIGl0IGRvZXMgbm90IG9jY3VyIGFzIGEKKyAgICAgKiAgICAgICAgICBzdWJzdHJpbmcsIDxjb2RlPi0xPC9jb2RlPiBpcyByZXR1cm5lZC4KKyAgICAgKi8KKyAgICBwdWJsaWMgaW50IGluZGV4T2YoU3RyaW5nIHN0cikgeworCXJldHVybiBpbmRleE9mKHN0ciwgMCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJucyB0aGUgaW5kZXggd2l0aGluIHRoaXMgc3RyaW5nIG9mIHRoZSBmaXJzdCBvY2N1cnJlbmNlIG9mIHRoZQorICAgICAqIHNwZWNpZmllZCBzdWJzdHJpbmcsIHN0YXJ0aW5nIGF0IHRoZSBzcGVjaWZpZWQgaW5kZXguICBUaGUgaW50ZWdlcgorICAgICAqIHJldHVybmVkIGlzIHRoZSBzbWFsbGVzdCB2YWx1ZSA8dHQ+azwvdHQ+IGZvciB3aGljaDoKKyAgICAgKiA8YmxvY2txdW90ZT48cHJlPgorICAgICAqICAgICBrICZndDs9IE1hdGgubWluKGZyb21JbmRleCwgc3RyLmxlbmd0aCgpKSAmJiB0aGlzLnN0YXJ0c1dpdGgoc3RyLCBrKQorICAgICAqIDwvcHJlPjwvYmxvY2txdW90ZT4KKyAgICAgKiBJZiBubyBzdWNoIHZhbHVlIG9mIDxpPms8L2k+IGV4aXN0cywgdGhlbiAtMSBpcyByZXR1cm5lZC4KKyAgICAgKgorICAgICAqIEBwYXJhbSAgIHN0ciAgICAgICAgIHRoZSBzdWJzdHJpbmcgZm9yIHdoaWNoIHRvIHNlYXJjaC4KKyAgICAgKiBAcGFyYW0gICBmcm9tSW5kZXggICB0aGUgaW5kZXggZnJvbSB3aGljaCB0byBzdGFydCB0aGUgc2VhcmNoLgorICAgICAqIEByZXR1cm4gIHRoZSBpbmRleCB3aXRoaW4gdGhpcyBzdHJpbmcgb2YgdGhlIGZpcnN0IG9jY3VycmVuY2Ugb2YgdGhlCisgICAgICogICAgICAgICAgc3BlY2lmaWVkIHN1YnN0cmluZywgc3RhcnRpbmcgYXQgdGhlIHNwZWNpZmllZCBpbmRleC4KKyAgICAgKi8KKyAgICBwdWJsaWMgaW50IGluZGV4T2YoU3RyaW5nIHN0ciwgaW50IGZyb21JbmRleCkgeworICAgICAgICByZXR1cm4gaW5kZXhPZih2YWx1ZSwgb2Zmc2V0LCBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgc3RyLnZhbHVlLCBzdHIub2Zmc2V0LCBzdHIuY291bnQsIGZyb21JbmRleCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogQ29kZSBzaGFyZWQgYnkgU3RyaW5nIGFuZCBTdHJpbmdCdWZmZXIgdG8gZG8gc2VhcmNoZXMuIFRoZQorICAgICAqIHNvdXJjZSBpcyB0aGUgY2hhcmFjdGVyIGFycmF5IGJlaW5nIHNlYXJjaGVkLCBhbmQgdGhlIHRhcmdldAorICAgICAqIGlzIHRoZSBzdHJpbmcgYmVpbmcgc2VhcmNoZWQgZm9yLgorICAgICAqCisgICAgICogQHBhcmFtICAgc291cmNlICAgICAgIHRoZSBjaGFyYWN0ZXJzIGJlaW5nIHNlYXJjaGVkLgorICAgICAqIEBwYXJhbSAgIHNvdXJjZU9mZnNldCBvZmZzZXQgb2YgdGhlIHNvdXJjZSBzdHJpbmcuCisgICAgICogQHBhcmFtICAgc291cmNlQ291bnQgIGNvdW50IG9mIHRoZSBzb3VyY2Ugc3RyaW5nLgorICAgICAqIEBwYXJhbSAgIHRhcmdldCAgICAgICB0aGUgY2hhcmFjdGVycyBiZWluZyBzZWFyY2hlZCBmb3IuCisgICAgICogQHBhcmFtICAgdGFyZ2V0T2Zmc2V0IG9mZnNldCBvZiB0aGUgdGFyZ2V0IHN0cmluZy4KKyAgICAgKiBAcGFyYW0gICB0YXJnZXRDb3VudCAgY291bnQgb2YgdGhlIHRhcmdldCBzdHJpbmcuCisgICAgICogQHBhcmFtICAgZnJvbUluZGV4ICAgIHRoZSBpbmRleCB0byBiZWdpbiBzZWFyY2hpbmcgZnJvbS4KKyAgICAgKi8KKyAgICBzdGF0aWMgaW50IGluZGV4T2YoY2hhcltdIHNvdXJjZSwgaW50IHNvdXJjZU9mZnNldCwgaW50IHNvdXJjZUNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICBjaGFyW10gdGFyZ2V0LCBpbnQgdGFyZ2V0T2Zmc2V0LCBpbnQgdGFyZ2V0Q291bnQsCisgICAgICAgICAgICAgICAgICAgICAgIGludCBmcm9tSW5kZXgpIHsKKwlpZiAoZnJvbUluZGV4ID49IHNvdXJjZUNvdW50KSB7CisgICAgICAgICAgICByZXR1cm4gKHRhcmdldENvdW50ID09IDAgPyBzb3VyY2VDb3VudCA6IC0xKTsKKwl9CisgICAgCWlmIChmcm9tSW5kZXggPCAwKSB7CisgICAgCSAgICBmcm9tSW5kZXggPSAwOworICAgIAl9CisJaWYgKHRhcmdldENvdW50ID09IDApIHsKKwkgICAgcmV0dXJuIGZyb21JbmRleDsKKwl9CisKKyAgICAgICAgY2hhciBmaXJzdCAgPSB0YXJnZXRbdGFyZ2V0T2Zmc2V0XTsKKyAgICAgICAgaW50IG1heCA9IHNvdXJjZU9mZnNldCArIChzb3VyY2VDb3VudCAtIHRhcmdldENvdW50KTsKKworICAgICAgICBmb3IgKGludCBpID0gc291cmNlT2Zmc2V0ICsgZnJvbUluZGV4OyBpIDw9IG1heDsgaSsrKSB7CisgICAgICAgICAgICAvKiBMb29rIGZvciBmaXJzdCBjaGFyYWN0ZXIuICovCisgICAgICAgICAgICBpZiAoc291cmNlW2ldICE9IGZpcnN0KSB7CisgICAgICAgICAgICAgICAgd2hpbGUgKCsraSA8PSBtYXggJiYgc291cmNlW2ldICE9IGZpcnN0KTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLyogRm91bmQgZmlyc3QgY2hhcmFjdGVyLCBub3cgbG9vayBhdCB0aGUgcmVzdCBvZiB2MiAqLworICAgICAgICAgICAgaWYgKGkgPD0gbWF4KSB7CisgICAgICAgICAgICAgICAgaW50IGogPSBpICsgMTsKKyAgICAgICAgICAgICAgICBpbnQgZW5kID0gaiArIHRhcmdldENvdW50IC0gMTsKKyAgICAgICAgICAgICAgICBmb3IgKGludCBrID0gdGFyZ2V0T2Zmc2V0ICsgMTsgaiA8IGVuZCAmJiBzb3VyY2Vbal0gPT0KKyAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRba107IGorKywgaysrKTsKKworICAgICAgICAgICAgICAgIGlmIChqID09IGVuZCkgeworICAgICAgICAgICAgICAgICAgICAvKiBGb3VuZCB3aG9sZSBzdHJpbmcuICovCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBpIC0gc291cmNlT2Zmc2V0OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJucyB0aGUgaW5kZXggd2l0aGluIHRoaXMgc3RyaW5nIG9mIHRoZSByaWdodG1vc3Qgb2NjdXJyZW5jZQorICAgICAqIG9mIHRoZSBzcGVjaWZpZWQgc3Vic3RyaW5nLiAgVGhlIHJpZ2h0bW9zdCBlbXB0eSBzdHJpbmcgIiIgaXMKKyAgICAgKiBjb25zaWRlcmVkIHRvIG9jY3VyIGF0IHRoZSBpbmRleCB2YWx1ZSA8Y29kZT50aGlzLmxlbmd0aCgpPC9jb2RlPi4KKyAgICAgKiBUaGUgcmV0dXJuZWQgaW5kZXggaXMgdGhlIGxhcmdlc3QgdmFsdWUgPGk+azwvaT4gc3VjaCB0aGF0CisgICAgICogPGJsb2NrcXVvdGU+PHByZT4KKyAgICAgKiB0aGlzLnN0YXJ0c1dpdGgoc3RyLCBrKQorICAgICAqIDwvcHJlPjwvYmxvY2txdW90ZT4KKyAgICAgKiBpcyB0cnVlLgorICAgICAqCisgICAgICogQHBhcmFtICAgc3RyICAgdGhlIHN1YnN0cmluZyB0byBzZWFyY2ggZm9yLgorICAgICAqIEByZXR1cm4gIGlmIHRoZSBzdHJpbmcgYXJndW1lbnQgb2NjdXJzIG9uZSBvciBtb3JlIHRpbWVzIGFzIGEgc3Vic3RyaW5nCisgICAgICogICAgICAgICAgd2l0aGluIHRoaXMgb2JqZWN0LCB0aGVuIHRoZSBpbmRleCBvZiB0aGUgZmlyc3QgY2hhcmFjdGVyIG9mCisgICAgICogICAgICAgICAgdGhlIGxhc3Qgc3VjaCBzdWJzdHJpbmcgaXMgcmV0dXJuZWQuIElmIGl0IGRvZXMgbm90IG9jY3VyIGFzCisgICAgICogICAgICAgICAgYSBzdWJzdHJpbmcsIDxjb2RlPi0xPC9jb2RlPiBpcyByZXR1cm5lZC4KKyAgICAgKi8KKyAgICBwdWJsaWMgaW50IGxhc3RJbmRleE9mKFN0cmluZyBzdHIpIHsKKwlyZXR1cm4gbGFzdEluZGV4T2Yoc3RyLCBjb3VudCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJucyB0aGUgaW5kZXggd2l0aGluIHRoaXMgc3RyaW5nIG9mIHRoZSBsYXN0IG9jY3VycmVuY2Ugb2YgdGhlCisgICAgICogc3BlY2lmaWVkIHN1YnN0cmluZywgc2VhcmNoaW5nIGJhY2t3YXJkIHN0YXJ0aW5nIGF0IHRoZSBzcGVjaWZpZWQgaW5kZXguCisgICAgICogVGhlIGludGVnZXIgcmV0dXJuZWQgaXMgdGhlIGxhcmdlc3QgdmFsdWUgPGk+azwvaT4gc3VjaCB0aGF0OgorICAgICAqIDxibG9ja3F1b3RlPjxwcmU+CisgICAgICogICAgIGsgJmx0Oz0gTWF0aC5taW4oZnJvbUluZGV4LCBzdHIubGVuZ3RoKCkpICYmIHRoaXMuc3RhcnRzV2l0aChzdHIsIGspCisgICAgICogPC9wcmU+PC9ibG9ja3F1b3RlPgorICAgICAqIElmIG5vIHN1Y2ggdmFsdWUgb2YgPGk+azwvaT4gZXhpc3RzLCB0aGVuIC0xIGlzIHJldHVybmVkLgorICAgICAqCisgICAgICogQHBhcmFtICAgc3RyICAgICAgICAgdGhlIHN1YnN0cmluZyB0byBzZWFyY2ggZm9yLgorICAgICAqIEBwYXJhbSAgIGZyb21JbmRleCAgIHRoZSBpbmRleCB0byBzdGFydCB0aGUgc2VhcmNoIGZyb20uCisgICAgICogQHJldHVybiAgdGhlIGluZGV4IHdpdGhpbiB0aGlzIHN0cmluZyBvZiB0aGUgbGFzdCBvY2N1cnJlbmNlIG9mIHRoZQorICAgICAqICAgICAgICAgIHNwZWNpZmllZCBzdWJzdHJpbmcuCisgICAgICovCisgICAgcHVibGljIGludCBsYXN0SW5kZXhPZihTdHJpbmcgc3RyLCBpbnQgZnJvbUluZGV4KSB7CisgICAgICAgIHJldHVybiBsYXN0SW5kZXhPZih2YWx1ZSwgb2Zmc2V0LCBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ci52YWx1ZSwgc3RyLm9mZnNldCwgc3RyLmNvdW50LCBmcm9tSW5kZXgpOworICAgIH0KKworICAgIC8qKgorICAgICAqIENvZGUgc2hhcmVkIGJ5IFN0cmluZyBhbmQgU3RyaW5nQnVmZmVyIHRvIGRvIHNlYXJjaGVzLiBUaGUKKyAgICAgKiBzb3VyY2UgaXMgdGhlIGNoYXJhY3RlciBhcnJheSBiZWluZyBzZWFyY2hlZCwgYW5kIHRoZSB0YXJnZXQKKyAgICAgKiBpcyB0aGUgc3RyaW5nIGJlaW5nIHNlYXJjaGVkIGZvci4KKyAgICAgKgorICAgICAqIEBwYXJhbSAgIHNvdXJjZSAgICAgICB0aGUgY2hhcmFjdGVycyBiZWluZyBzZWFyY2hlZC4KKyAgICAgKiBAcGFyYW0gICBzb3VyY2VPZmZzZXQgb2Zmc2V0IG9mIHRoZSBzb3VyY2Ugc3RyaW5nLgorICAgICAqIEBwYXJhbSAgIHNvdXJjZUNvdW50ICBjb3VudCBvZiB0aGUgc291cmNlIHN0cmluZy4KKyAgICAgKiBAcGFyYW0gICB0YXJnZXQgICAgICAgdGhlIGNoYXJhY3RlcnMgYmVpbmcgc2VhcmNoZWQgZm9yLgorICAgICAqIEBwYXJhbSAgIHRhcmdldE9mZnNldCBvZmZzZXQgb2YgdGhlIHRhcmdldCBzdHJpbmcuCisgICAgICogQHBhcmFtICAgdGFyZ2V0Q291bnQgIGNvdW50IG9mIHRoZSB0YXJnZXQgc3RyaW5nLgorICAgICAqIEBwYXJhbSAgIGZyb21JbmRleCAgICB0aGUgaW5kZXggdG8gYmVnaW4gc2VhcmNoaW5nIGZyb20uCisgICAgICovCisgICAgc3RhdGljIGludCBsYXN0SW5kZXhPZihjaGFyW10gc291cmNlLCBpbnQgc291cmNlT2Zmc2V0LCBpbnQgc291cmNlQ291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyW10gdGFyZ2V0LCBpbnQgdGFyZ2V0T2Zmc2V0LCBpbnQgdGFyZ2V0Q291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZnJvbUluZGV4KSB7CisgICAgICAgIC8qCisJICogQ2hlY2sgYXJndW1lbnRzOyByZXR1cm4gaW1tZWRpYXRlbHkgd2hlcmUgcG9zc2libGUuIEZvcgorCSAqIGNvbnNpc3RlbmN5LCBkb24ndCBjaGVjayBmb3IgbnVsbCBzdHIuCisJICovCisgICAgICAgIGludCByaWdodEluZGV4ID0gc291cmNlQ291bnQgLSB0YXJnZXRDb3VudDsKKwlpZiAoZnJvbUluZGV4IDwgMCkgeworCSAgICByZXR1cm4gLTE7CisJfQorCWlmIChmcm9tSW5kZXggPiByaWdodEluZGV4KSB7CisJICAgIGZyb21JbmRleCA9IHJpZ2h0SW5kZXg7CisJfQorCS8qIEVtcHR5IHN0cmluZyBhbHdheXMgbWF0Y2hlcy4gKi8KKwlpZiAodGFyZ2V0Q291bnQgPT0gMCkgeworCSAgICByZXR1cm4gZnJvbUluZGV4OworCX0KKworICAgICAgICBpbnQgc3RyTGFzdEluZGV4ID0gdGFyZ2V0T2Zmc2V0ICsgdGFyZ2V0Q291bnQgLSAxOworCWNoYXIgc3RyTGFzdENoYXIgPSB0YXJnZXRbc3RyTGFzdEluZGV4XTsKKwlpbnQgbWluID0gc291cmNlT2Zmc2V0ICsgdGFyZ2V0Q291bnQgLSAxOworCWludCBpID0gbWluICsgZnJvbUluZGV4OworCisgICAgc3RhcnRTZWFyY2hGb3JMYXN0Q2hhcjoKKwl3aGlsZSAodHJ1ZSkgeworCSAgICB3aGlsZSAoaSA+PSBtaW4gJiYgc291cmNlW2ldICE9IHN0ckxhc3RDaGFyKSB7CisJCWktLTsKKwkgICAgfQorCSAgICBpZiAoaSA8IG1pbikgeworCQlyZXR1cm4gLTE7CisJICAgIH0KKwkgICAgaW50IGogPSBpIC0gMTsKKwkgICAgaW50IHN0YXJ0ID0gaiAtICh0YXJnZXRDb3VudCAtIDEpOworCSAgICBpbnQgayA9IHN0ckxhc3RJbmRleCAtIDE7CisKKwkgICAgd2hpbGUgKGogPiBzdGFydCkgeworCSAgICAgICAgaWYgKHNvdXJjZVtqLS1dICE9IHRhcmdldFtrLS1dKSB7CisJCSAgICBpLS07CisJCSAgICBjb250aW51ZSBzdGFydFNlYXJjaEZvckxhc3RDaGFyOworCQl9CisJICAgIH0KKwkgICAgcmV0dXJuIHN0YXJ0IC0gc291cmNlT2Zmc2V0ICsgMTsKKwl9CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJucyBhIG5ldyBzdHJpbmcgdGhhdCBpcyBhIHN1YnN0cmluZyBvZiB0aGlzIHN0cmluZy4gVGhlCisgICAgICogc3Vic3RyaW5nIGJlZ2lucyB3aXRoIHRoZSBjaGFyYWN0ZXIgYXQgdGhlIHNwZWNpZmllZCBpbmRleCBhbmQKKyAgICAgKiBleHRlbmRzIHRvIHRoZSBlbmQgb2YgdGhpcyBzdHJpbmcuIDxwPgorICAgICAqIEV4YW1wbGVzOgorICAgICAqIDxibG9ja3F1b3RlPjxwcmU+CisgICAgICogInVuaGFwcHkiLnN1YnN0cmluZygyKSByZXR1cm5zICJoYXBweSIKKyAgICAgKiAiSGFyYmlzb24iLnN1YnN0cmluZygzKSByZXR1cm5zICJiaXNvbiIKKyAgICAgKiAiZW1wdGluZXNzIi5zdWJzdHJpbmcoOSkgcmV0dXJucyAiIiAoYW4gZW1wdHkgc3RyaW5nKQorICAgICAqIDwvcHJlPjwvYmxvY2txdW90ZT4KKyAgICAgKgorICAgICAqIEBwYXJhbSAgICAgIGJlZ2luSW5kZXggICB0aGUgYmVnaW5uaW5nIGluZGV4LCBpbmNsdXNpdmUuCisgICAgICogQHJldHVybiAgICAgdGhlIHNwZWNpZmllZCBzdWJzdHJpbmcuCisgICAgICogQGV4Y2VwdGlvbiAgSW5kZXhPdXRPZkJvdW5kc0V4Y2VwdGlvbiAgaWYKKyAgICAgKiAgICAgICAgICAgICA8Y29kZT5iZWdpbkluZGV4PC9jb2RlPiBpcyBuZWdhdGl2ZSBvciBsYXJnZXIgdGhhbiB0aGUKKyAgICAgKiAgICAgICAgICAgICBsZW5ndGggb2YgdGhpcyA8Y29kZT5TdHJpbmc8L2NvZGU+IG9iamVjdC4KKyAgICAgKi8KKyAgICBwdWJsaWMgU3RyaW5nIHN1YnN0cmluZyhpbnQgYmVnaW5JbmRleCkgeworCXJldHVybiBzdWJzdHJpbmcoYmVnaW5JbmRleCwgY291bnQpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybnMgYSBuZXcgc3RyaW5nIHRoYXQgaXMgYSBzdWJzdHJpbmcgb2YgdGhpcyBzdHJpbmcuIFRoZQorICAgICAqIHN1YnN0cmluZyBiZWdpbnMgYXQgdGhlIHNwZWNpZmllZCA8Y29kZT5iZWdpbkluZGV4PC9jb2RlPiBhbmQKKyAgICAgKiBleHRlbmRzIHRvIHRoZSBjaGFyYWN0ZXIgYXQgaW5kZXggPGNvZGU+ZW5kSW5kZXggLSAxPC9jb2RlPi4KKyAgICAgKiBUaHVzIHRoZSBsZW5ndGggb2YgdGhlIHN1YnN0cmluZyBpcyA8Y29kZT5lbmRJbmRleC1iZWdpbkluZGV4PC9jb2RlPi4KKyAgICAgKiA8cD4KKyAgICAgKiBFeGFtcGxlczoKKyAgICAgKiA8YmxvY2txdW90ZT48cHJlPgorICAgICAqICJoYW1idXJnZXIiLnN1YnN0cmluZyg0LCA4KSByZXR1cm5zICJ1cmdlIgorICAgICAqICJzbWlsZXMiLnN1YnN0cmluZygxLCA1KSByZXR1cm5zICJtaWxlIgorICAgICAqIDwvcHJlPjwvYmxvY2txdW90ZT4KKyAgICAgKgorICAgICAqIEBwYXJhbSAgICAgIGJlZ2luSW5kZXggICB0aGUgYmVnaW5uaW5nIGluZGV4LCBpbmNsdXNpdmUuCisgICAgICogQHBhcmFtICAgICAgZW5kSW5kZXggICAgIHRoZSBlbmRpbmcgaW5kZXgsIGV4Y2x1c2l2ZS4KKyAgICAgKiBAcmV0dXJuICAgICB0aGUgc3BlY2lmaWVkIHN1YnN0cmluZy4KKyAgICAgKiBAZXhjZXB0aW9uICBJbmRleE91dE9mQm91bmRzRXhjZXB0aW9uICBpZiB0aGUKKyAgICAgKiAgICAgICAgICAgICA8Y29kZT5iZWdpbkluZGV4PC9jb2RlPiBpcyBuZWdhdGl2ZSwgb3IKKyAgICAgKiAgICAgICAgICAgICA8Y29kZT5lbmRJbmRleDwvY29kZT4gaXMgbGFyZ2VyIHRoYW4gdGhlIGxlbmd0aCBvZgorICAgICAqICAgICAgICAgICAgIHRoaXMgPGNvZGU+U3RyaW5nPC9jb2RlPiBvYmplY3QsIG9yCisgICAgICogICAgICAgICAgICAgPGNvZGU+YmVnaW5JbmRleDwvY29kZT4gaXMgbGFyZ2VyIHRoYW4KKyAgICAgKiAgICAgICAgICAgICA8Y29kZT5lbmRJbmRleDwvY29kZT4uCisgICAgICovCisgICAgcHVibGljIFN0cmluZyBzdWJzdHJpbmcoaW50IGJlZ2luSW5kZXgsIGludCBlbmRJbmRleCkgeworCWlmIChiZWdpbkluZGV4IDwgMCkgeworCSAgICB0aHJvdyBuZXcgU3RyaW5nSW5kZXhPdXRPZkJvdW5kc0V4Y2VwdGlvbihiZWdpbkluZGV4KTsKKwl9CisJaWYgKGVuZEluZGV4ID4gY291bnQpIHsKKwkgICAgdGhyb3cgbmV3IFN0cmluZ0luZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb24oZW5kSW5kZXgpOworCX0KKwlpZiAoYmVnaW5JbmRleCA+IGVuZEluZGV4KSB7CisJICAgIHRocm93IG5ldyBTdHJpbmdJbmRleE91dE9mQm91bmRzRXhjZXB0aW9uKGVuZEluZGV4IC0gYmVnaW5JbmRleCk7CisJfQorCXJldHVybiAoKGJlZ2luSW5kZXggPT0gMCkgJiYgKGVuZEluZGV4ID09IGNvdW50KSkgPyB0aGlzIDoKKwkgICAgbmV3IFN0cmluZyhvZmZzZXQgKyBiZWdpbkluZGV4LCBlbmRJbmRleCAtIGJlZ2luSW5kZXgsIHZhbHVlKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIGEgbmV3IGNoYXJhY3RlciBzZXF1ZW5jZSB0aGF0IGlzIGEgc3Vic2VxdWVuY2Ugb2YgdGhpcyBzZXF1ZW5jZS4KKyAgICAgKgorICAgICAqIDxwPiBBbiBpbnZvY2F0aW9uIG9mIHRoaXMgbWV0aG9kIG9mIHRoZSBmb3JtCisgICAgICoKKyAgICAgKiA8YmxvY2txdW90ZT48cHJlPgorICAgICAqIHN0ci5zdWJTZXF1ZW5jZShiZWdpbiwmbmJzcDtlbmQpPC9wcmU+PC9ibG9ja3F1b3RlPgorICAgICAqCisgICAgICogYmVoYXZlcyBpbiBleGFjdGx5IHRoZSBzYW1lIHdheSBhcyB0aGUgaW52b2NhdGlvbgorICAgICAqCisgICAgICogPGJsb2NrcXVvdGU+PHByZT4KKyAgICAgKiBzdHIuc3Vic3RyaW5nKGJlZ2luLCZuYnNwO2VuZCk8L3ByZT48L2Jsb2NrcXVvdGU+CisgICAgICoKKyAgICAgKiBUaGlzIG1ldGhvZCBpcyBkZWZpbmVkIHNvIHRoYXQgdGhlIDx0dD5TdHJpbmc8L3R0PiBjbGFzcyBjYW4gaW1wbGVtZW50CisgICAgICogdGhlIHtAbGluayBDaGFyU2VxdWVuY2V9IGludGVyZmFjZS4gPC9wPgorICAgICAqCisgICAgICogQHBhcmFtICAgICAgYmVnaW5JbmRleCAgIHRoZSBiZWdpbiBpbmRleCwgaW5jbHVzaXZlLgorICAgICAqIEBwYXJhbSAgICAgIGVuZEluZGV4ICAgICB0aGUgZW5kIGluZGV4LCBleGNsdXNpdmUuCisgICAgICogQHJldHVybiAgICAgdGhlIHNwZWNpZmllZCBzdWJzZXF1ZW5jZS4KKyAgICAgKgorICAgICAqIEB0aHJvd3MgIEluZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb24KKyAgICAgKiAgICAgICAgICBpZiA8dHQ+YmVnaW5JbmRleDwvdHQ+IG9yIDx0dD5lbmRJbmRleDwvdHQ+IGFyZSBuZWdhdGl2ZSwKKyAgICAgKiAgICAgICAgICBpZiA8dHQ+ZW5kSW5kZXg8L3R0PiBpcyBncmVhdGVyIHRoYW4gPHR0Pmxlbmd0aCgpPC90dD4sCisgICAgICogICAgICAgICAgb3IgaWYgPHR0PmJlZ2luSW5kZXg8L3R0PiBpcyBncmVhdGVyIHRoYW4gPHR0PnN0YXJ0SW5kZXg8L3R0PgorICAgICAqCisgICAgICogQHNpbmNlIDEuNAorICAgICAqIEBzcGVjIEpTUi01MQorICAgICAqLworICAgIHB1YmxpYyBDaGFyU2VxdWVuY2Ugc3ViU2VxdWVuY2UoaW50IGJlZ2luSW5kZXgsIGludCBlbmRJbmRleCkgeworICAgICAgICByZXR1cm4gdGhpcy5zdWJzdHJpbmcoYmVnaW5JbmRleCwgZW5kSW5kZXgpOworICAgIH0KKworICAgIC8qKgorICAgICAqIENvbmNhdGVuYXRlcyB0aGUgc3BlY2lmaWVkIHN0cmluZyB0byB0aGUgZW5kIG9mIHRoaXMgc3RyaW5nLgorICAgICAqIDxwPgorICAgICAqIElmIHRoZSBsZW5ndGggb2YgdGhlIGFyZ3VtZW50IHN0cmluZyBpcyA8Y29kZT4wPC9jb2RlPiwgdGhlbiB0aGlzCisgICAgICogPGNvZGU+U3RyaW5nPC9jb2RlPiBvYmplY3QgaXMgcmV0dXJuZWQuIE90aGVyd2lzZSwgYSBuZXcKKyAgICAgKiA8Y29kZT5TdHJpbmc8L2NvZGU+IG9iamVjdCBpcyBjcmVhdGVkLCByZXByZXNlbnRpbmcgYSBjaGFyYWN0ZXIKKyAgICAgKiBzZXF1ZW5jZSB0aGF0IGlzIHRoZSBjb25jYXRlbmF0aW9uIG9mIHRoZSBjaGFyYWN0ZXIgc2VxdWVuY2UKKyAgICAgKiByZXByZXNlbnRlZCBieSB0aGlzIDxjb2RlPlN0cmluZzwvY29kZT4gb2JqZWN0IGFuZCB0aGUgY2hhcmFjdGVyCisgICAgICogc2VxdWVuY2UgcmVwcmVzZW50ZWQgYnkgdGhlIGFyZ3VtZW50IHN0cmluZy48cD4KKyAgICAgKiBFeGFtcGxlczoKKyAgICAgKiA8YmxvY2txdW90ZT48cHJlPgorICAgICAqICJjYXJlcyIuY29uY2F0KCJzIikgcmV0dXJucyAiY2FyZXNzIgorICAgICAqICJ0byIuY29uY2F0KCJnZXQiKS5jb25jYXQoImhlciIpIHJldHVybnMgInRvZ2V0aGVyIgorICAgICAqIDwvcHJlPjwvYmxvY2txdW90ZT4KKyAgICAgKgorICAgICAqIEBwYXJhbSAgIHN0ciAgIHRoZSA8Y29kZT5TdHJpbmc8L2NvZGU+IHRoYXQgaXMgY29uY2F0ZW5hdGVkIHRvIHRoZSBlbmQKKyAgICAgKiAgICAgICAgICAgICAgICBvZiB0aGlzIDxjb2RlPlN0cmluZzwvY29kZT4uCisgICAgICogQHJldHVybiAgYSBzdHJpbmcgdGhhdCByZXByZXNlbnRzIHRoZSBjb25jYXRlbmF0aW9uIG9mIHRoaXMgb2JqZWN0J3MKKyAgICAgKiAgICAgICAgICBjaGFyYWN0ZXJzIGZvbGxvd2VkIGJ5IHRoZSBzdHJpbmcgYXJndW1lbnQncyBjaGFyYWN0ZXJzLgorICAgICAqLworICAgIHB1YmxpYyBTdHJpbmcgY29uY2F0KFN0cmluZyBzdHIpIHsKKwlpbnQgb3RoZXJMZW4gPSBzdHIubGVuZ3RoKCk7CisJaWYgKG90aGVyTGVuID09IDApIHsKKwkgICAgcmV0dXJuIHRoaXM7CisJfQorCWNoYXIgYnVmW10gPSBuZXcgY2hhcltjb3VudCArIG90aGVyTGVuXTsKKwlnZXRDaGFycygwLCBjb3VudCwgYnVmLCAwKTsKKwlzdHIuZ2V0Q2hhcnMoMCwgb3RoZXJMZW4sIGJ1ZiwgY291bnQpOworCXJldHVybiBuZXcgU3RyaW5nKDAsIGNvdW50ICsgb3RoZXJMZW4sIGJ1Zik7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJucyBhIG5ldyBzdHJpbmcgcmVzdWx0aW5nIGZyb20gcmVwbGFjaW5nIGFsbCBvY2N1cnJlbmNlcyBvZgorICAgICAqIDxjb2RlPm9sZENoYXI8L2NvZGU+IGluIHRoaXMgc3RyaW5nIHdpdGggPGNvZGU+bmV3Q2hhcjwvY29kZT4uCisgICAgICogPHA+CisgICAgICogSWYgdGhlIGNoYXJhY3RlciA8Y29kZT5vbGRDaGFyPC9jb2RlPiBkb2VzIG5vdCBvY2N1ciBpbiB0aGUKKyAgICAgKiBjaGFyYWN0ZXIgc2VxdWVuY2UgcmVwcmVzZW50ZWQgYnkgdGhpcyA8Y29kZT5TdHJpbmc8L2NvZGU+IG9iamVjdCwKKyAgICAgKiB0aGVuIGEgcmVmZXJlbmNlIHRvIHRoaXMgPGNvZGU+U3RyaW5nPC9jb2RlPiBvYmplY3QgaXMgcmV0dXJuZWQuCisgICAgICogT3RoZXJ3aXNlLCBhIG5ldyA8Y29kZT5TdHJpbmc8L2NvZGU+IG9iamVjdCBpcyBjcmVhdGVkIHRoYXQKKyAgICAgKiByZXByZXNlbnRzIGEgY2hhcmFjdGVyIHNlcXVlbmNlIGlkZW50aWNhbCB0byB0aGUgY2hhcmFjdGVyIHNlcXVlbmNlCisgICAgICogcmVwcmVzZW50ZWQgYnkgdGhpcyA8Y29kZT5TdHJpbmc8L2NvZGU+IG9iamVjdCwgZXhjZXB0IHRoYXQgZXZlcnkKKyAgICAgKiBvY2N1cnJlbmNlIG9mIDxjb2RlPm9sZENoYXI8L2NvZGU+IGlzIHJlcGxhY2VkIGJ5IGFuIG9jY3VycmVuY2UKKyAgICAgKiBvZiA8Y29kZT5uZXdDaGFyPC9jb2RlPi4KKyAgICAgKiA8cD4KKyAgICAgKiBFeGFtcGxlczoKKyAgICAgKiA8YmxvY2txdW90ZT48cHJlPgorICAgICAqICJtZXNxdWl0ZSBpbiB5b3VyIGNlbGxhciIucmVwbGFjZSgnZScsICdvJykKKyAgICAgKiAgICAgICAgIHJldHVybnMgIm1vc3F1aXRvIGluIHlvdXIgY29sbGFyIgorICAgICAqICJ0aGUgd2FyIG9mIGJhcm9uZXRzIi5yZXBsYWNlKCdyJywgJ3knKQorICAgICAqICAgICAgICAgcmV0dXJucyAidGhlIHdheSBvZiBiYXlvbmV0cyIKKyAgICAgKiAic3BhcnJpbmcgd2l0aCBhIHB1cnBsZSBwb3Jwb2lzZSIucmVwbGFjZSgncCcsICd0JykKKyAgICAgKiAgICAgICAgIHJldHVybnMgInN0YXJyaW5nIHdpdGggYSB0dXJ0bGUgdG9ydG9pc2UiCisgICAgICogIkpvbkwiLnJlcGxhY2UoJ3EnLCAneCcpIHJldHVybnMgIkpvbkwiIChubyBjaGFuZ2UpCisgICAgICogPC9wcmU+PC9ibG9ja3F1b3RlPgorICAgICAqCisgICAgICogQHBhcmFtICAgb2xkQ2hhciAgIHRoZSBvbGQgY2hhcmFjdGVyLgorICAgICAqIEBwYXJhbSAgIG5ld0NoYXIgICB0aGUgbmV3IGNoYXJhY3Rlci4KKyAgICAgKiBAcmV0dXJuICBhIHN0cmluZyBkZXJpdmVkIGZyb20gdGhpcyBzdHJpbmcgYnkgcmVwbGFjaW5nIGV2ZXJ5CisgICAgICogICAgICAgICAgb2NjdXJyZW5jZSBvZiA8Y29kZT5vbGRDaGFyPC9jb2RlPiB3aXRoIDxjb2RlPm5ld0NoYXI8L2NvZGU+LgorICAgICAqLworICAgIHB1YmxpYyBTdHJpbmcgcmVwbGFjZShjaGFyIG9sZENoYXIsIGNoYXIgbmV3Q2hhcikgeworCWlmIChvbGRDaGFyICE9IG5ld0NoYXIpIHsKKwkgICAgaW50IGxlbiA9IGNvdW50OworCSAgICBpbnQgaSA9IC0xOworCSAgICBjaGFyW10gdmFsID0gdmFsdWU7IC8qIGF2b2lkIGdldGZpZWxkIG9wY29kZSAqLworCSAgICBpbnQgb2ZmID0gb2Zmc2V0OyAgIC8qIGF2b2lkIGdldGZpZWxkIG9wY29kZSAqLworCisJICAgIHdoaWxlICgrK2kgPCBsZW4pIHsKKwkJaWYgKHZhbFtvZmYgKyBpXSA9PSBvbGRDaGFyKSB7CisJCSAgICBicmVhazsKKwkJfQorCSAgICB9CisJICAgIGlmIChpIDwgbGVuKSB7CisJCWNoYXIgYnVmW10gPSBuZXcgY2hhcltsZW5dOworCQlmb3IgKGludCBqID0gMCA7IGogPCBpIDsgaisrKSB7CisJCSAgICBidWZbal0gPSB2YWxbb2ZmK2pdOworCQl9CisJCXdoaWxlIChpIDwgbGVuKSB7CisJCSAgICBjaGFyIGMgPSB2YWxbb2ZmICsgaV07CisJCSAgICBidWZbaV0gPSAoYyA9PSBvbGRDaGFyKSA/IG5ld0NoYXIgOiBjOworCQkgICAgaSsrOworCQl9CisJCXJldHVybiBuZXcgU3RyaW5nKDAsIGxlbiwgYnVmKTsKKwkgICAgfQorCX0KKwlyZXR1cm4gdGhpczsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBUZWxscyB3aGV0aGVyIG9yIG5vdCB0aGlzIHN0cmluZyBtYXRjaGVzIHRoZSBnaXZlbiA8YQorICAgICAqIGhyZWY9Ii4uL3V0aWwvcmVnZXgvUGF0dGVybi5odG1sI3N1bSI+cmVndWxhciBleHByZXNzaW9uPC9hPi4KKyAgICAgKgorICAgICAqIDxwPiBBbiBpbnZvY2F0aW9uIG9mIHRoaXMgbWV0aG9kIG9mIHRoZSBmb3JtCisgICAgICogPGk+c3RyPC9pPjx0dD4ubWF0Y2hlcyg8L3R0PjxpPnJlZ2V4PC9pPjx0dD4pPC90dD4geWllbGRzIGV4YWN0bHkgdGhlCisgICAgICogc2FtZSByZXN1bHQgYXMgdGhlIGV4cHJlc3Npb24KKyAgICAgKgorICAgICAqIDxibG9ja3F1b3RlPjx0dD4ge0BsaW5rIGphdmEudXRpbC5yZWdleC5QYXR0ZXJufS57QGxpbmsKKyAgICAgKiBqYXZhLnV0aWwucmVnZXguUGF0dGVybiNtYXRjaGVzKFN0cmluZyxDaGFyU2VxdWVuY2UpCisgICAgICogbWF0Y2hlc30oPC90dD48aT5yZWdleDwvaT48dHQ+LDwvdHQ+IDxpPnN0cjwvaT48dHQ+KTwvdHQ+PC9ibG9ja3F1b3RlPgorICAgICAqCisgICAgICogQHBhcmFtICAgcmVnZXgKKyAgICAgKiAgICAgICAgICB0aGUgcmVndWxhciBleHByZXNzaW9uIHRvIHdoaWNoIHRoaXMgc3RyaW5nIGlzIHRvIGJlIG1hdGNoZWQKKyAgICAgKgorICAgICAqIEByZXR1cm4gIDx0dD50cnVlPC90dD4gaWYsIGFuZCBvbmx5IGlmLCB0aGlzIHN0cmluZyBtYXRjaGVzIHRoZQorICAgICAqICAgICAgICAgIGdpdmVuIHJlZ3VsYXIgZXhwcmVzc2lvbgorICAgICAqCisgICAgICogQHRocm93cyAgUGF0dGVyblN5bnRheEV4Y2VwdGlvbgorICAgICAqICAgICAgICAgIGlmIHRoZSByZWd1bGFyIGV4cHJlc3Npb24ncyBzeW50YXggaXMgaW52YWxpZAorICAgICAqCisgICAgICogQHNlZSBqYXZhLnV0aWwucmVnZXguUGF0dGVybgorICAgICAqCisgICAgICogQHNpbmNlIDEuNAorICAgICAqIEBzcGVjIEpTUi01MQorICAgICAqLworICAgIHB1YmxpYyBib29sZWFuIG1hdGNoZXMoU3RyaW5nIHJlZ2V4KSB7CisgICAgICAgIHJldHVybiBQYXR0ZXJuLm1hdGNoZXMocmVnZXgsIHRoaXMpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybnMgdHJ1ZSBpZiBhbmQgb25seSBpZiB0aGlzIHN0cmluZyBjb250YWlucyB0aGUgc3BlY2lmaWVkCisgICAgICogc2VxdWVuY2Ugb2YgY2hhciB2YWx1ZXMuCisgICAgICoKKyAgICAgKiBAcGFyYW0gcyB0aGUgc2VxdWVuY2UgdG8gc2VhcmNoIGZvcgorICAgICAqIEByZXR1cm4gdHJ1ZSBpZiB0aGlzIHN0cmluZyBjb250YWlucyA8Y29kZT5zPC9jb2RlPiwgZmFsc2Ugb3RoZXJ3aXNlCisgICAgICogQHRocm93cyBOdWxsUG9pbnRlckV4Y2VwdGlvbiBpZiA8Y29kZT5zPC9jb2RlPiBpcyA8Y29kZT5udWxsPC9jb2RlPgorICAgICAqIEBzaW5jZSAxLjUKKyAgICAgKi8KKyAgICBwdWJsaWMgYm9vbGVhbiBjb250YWlucyhDaGFyU2VxdWVuY2UgcykgeworICAgICAgICByZXR1cm4gaW5kZXhPZihzLnRvU3RyaW5nKCkpID4gLTE7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmVwbGFjZXMgdGhlIGZpcnN0IHN1YnN0cmluZyBvZiB0aGlzIHN0cmluZyB0aGF0IG1hdGNoZXMgdGhlIGdpdmVuIDxhCisgICAgICogaHJlZj0iLi4vdXRpbC9yZWdleC9QYXR0ZXJuLmh0bWwjc3VtIj5yZWd1bGFyIGV4cHJlc3Npb248L2E+IHdpdGggdGhlCisgICAgICogZ2l2ZW4gcmVwbGFjZW1lbnQuCisgICAgICoKKyAgICAgKiA8cD4gQW4gaW52b2NhdGlvbiBvZiB0aGlzIG1ldGhvZCBvZiB0aGUgZm9ybQorICAgICAqIDxpPnN0cjwvaT48dHQ+LnJlcGxhY2VGaXJzdCg8L3R0PjxpPnJlZ2V4PC9pPjx0dD4sPC90dD4gPGk+cmVwbDwvaT48dHQ+KTwvdHQ+CisgICAgICogeWllbGRzIGV4YWN0bHkgdGhlIHNhbWUgcmVzdWx0IGFzIHRoZSBleHByZXNzaW9uCisgICAgICoKKyAgICAgKiA8YmxvY2txdW90ZT48dHQ+CisgICAgICoge0BsaW5rIGphdmEudXRpbC5yZWdleC5QYXR0ZXJufS57QGxpbmsgamF2YS51dGlsLnJlZ2V4LlBhdHRlcm4jY29tcGlsZQorICAgICAqIGNvbXBpbGV9KDwvdHQ+PGk+cmVnZXg8L2k+PHR0Pikue0BsaW5rCisgICAgICogamF2YS51dGlsLnJlZ2V4LlBhdHRlcm4jbWF0Y2hlcihqYXZhLmxhbmcuQ2hhclNlcXVlbmNlKQorICAgICAqIG1hdGNoZXJ9KDwvdHQ+PGk+c3RyPC9pPjx0dD4pLntAbGluayBqYXZhLnV0aWwucmVnZXguTWF0Y2hlciNyZXBsYWNlRmlyc3QKKyAgICAgKiByZXBsYWNlRmlyc3R9KDwvdHQ+PGk+cmVwbDwvaT48dHQ+KTwvdHQ+PC9ibG9ja3F1b3RlPgorICAgICAqCisgICAgICogQHBhcmFtICAgcmVnZXgKKyAgICAgKiAgICAgICAgICB0aGUgcmVndWxhciBleHByZXNzaW9uIHRvIHdoaWNoIHRoaXMgc3RyaW5nIGlzIHRvIGJlIG1hdGNoZWQKKyAgICAgKgorICAgICAqIEByZXR1cm4gIFRoZSByZXN1bHRpbmcgPHR0PlN0cmluZzwvdHQ+CisgICAgICoKKyAgICAgKiBAdGhyb3dzICBQYXR0ZXJuU3ludGF4RXhjZXB0aW9uCisgICAgICogICAgICAgICAgaWYgdGhlIHJlZ3VsYXIgZXhwcmVzc2lvbidzIHN5bnRheCBpcyBpbnZhbGlkCisgICAgICoKKyAgICAgKiBAc2VlIGphdmEudXRpbC5yZWdleC5QYXR0ZXJuCisgICAgICoKKyAgICAgKiBAc2luY2UgMS40CisgICAgICogQHNwZWMgSlNSLTUxCisgICAgICovCisgICAgcHVibGljIFN0cmluZyByZXBsYWNlRmlyc3QoU3RyaW5nIHJlZ2V4LCBTdHJpbmcgcmVwbGFjZW1lbnQpIHsKKwlyZXR1cm4gUGF0dGVybi5jb21waWxlKHJlZ2V4KS5tYXRjaGVyKHRoaXMpLnJlcGxhY2VGaXJzdChyZXBsYWNlbWVudCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmVwbGFjZXMgZWFjaCBzdWJzdHJpbmcgb2YgdGhpcyBzdHJpbmcgdGhhdCBtYXRjaGVzIHRoZSBnaXZlbiA8YQorICAgICAqIGhyZWY9Ii4uL3V0aWwvcmVnZXgvUGF0dGVybi5odG1sI3N1bSI+cmVndWxhciBleHByZXNzaW9uPC9hPiB3aXRoIHRoZQorICAgICAqIGdpdmVuIHJlcGxhY2VtZW50LgorICAgICAqCisgICAgICogPHA+IEFuIGludm9jYXRpb24gb2YgdGhpcyBtZXRob2Qgb2YgdGhlIGZvcm0KKyAgICAgKiA8aT5zdHI8L2k+PHR0Pi5yZXBsYWNlQWxsKDwvdHQ+PGk+cmVnZXg8L2k+PHR0Piw8L3R0PiA8aT5yZXBsPC9pPjx0dD4pPC90dD4KKyAgICAgKiB5aWVsZHMgZXhhY3RseSB0aGUgc2FtZSByZXN1bHQgYXMgdGhlIGV4cHJlc3Npb24KKyAgICAgKgorICAgICAqIDxibG9ja3F1b3RlPjx0dD4KKyAgICAgKiB7QGxpbmsgamF2YS51dGlsLnJlZ2V4LlBhdHRlcm59LntAbGluayBqYXZhLnV0aWwucmVnZXguUGF0dGVybiNjb21waWxlCisgICAgICogY29tcGlsZX0oPC90dD48aT5yZWdleDwvaT48dHQ+KS57QGxpbmsKKyAgICAgKiBqYXZhLnV0aWwucmVnZXguUGF0dGVybiNtYXRjaGVyKGphdmEubGFuZy5DaGFyU2VxdWVuY2UpCisgICAgICogbWF0Y2hlcn0oPC90dD48aT5zdHI8L2k+PHR0Pikue0BsaW5rIGphdmEudXRpbC5yZWdleC5NYXRjaGVyI3JlcGxhY2VBbGwKKyAgICAgKiByZXBsYWNlQWxsfSg8L3R0PjxpPnJlcGw8L2k+PHR0Pik8L3R0PjwvYmxvY2txdW90ZT4KKyAgICAgKgorICAgICAqIEBwYXJhbSAgIHJlZ2V4CisgICAgICogICAgICAgICAgdGhlIHJlZ3VsYXIgZXhwcmVzc2lvbiB0byB3aGljaCB0aGlzIHN0cmluZyBpcyB0byBiZSBtYXRjaGVkCisgICAgICoKKyAgICAgKiBAcmV0dXJuICBUaGUgcmVzdWx0aW5nIDx0dD5TdHJpbmc8L3R0PgorICAgICAqCisgICAgICogQHRocm93cyAgUGF0dGVyblN5bnRheEV4Y2VwdGlvbgorICAgICAqICAgICAgICAgIGlmIHRoZSByZWd1bGFyIGV4cHJlc3Npb24ncyBzeW50YXggaXMgaW52YWxpZAorICAgICAqCisgICAgICogQHNlZSBqYXZhLnV0aWwucmVnZXguUGF0dGVybgorICAgICAqCisgICAgICogQHNpbmNlIDEuNAorICAgICAqIEBzcGVjIEpTUi01MQorICAgICAqLworICAgIHB1YmxpYyBTdHJpbmcgcmVwbGFjZUFsbChTdHJpbmcgcmVnZXgsIFN0cmluZyByZXBsYWNlbWVudCkgeworCXJldHVybiBQYXR0ZXJuLmNvbXBpbGUocmVnZXgpLm1hdGNoZXIodGhpcykucmVwbGFjZUFsbChyZXBsYWNlbWVudCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmVwbGFjZXMgZWFjaCBzdWJzdHJpbmcgb2YgdGhpcyBzdHJpbmcgdGhhdCBtYXRjaGVzIHRoZSBsaXRlcmFsIHRhcmdldAorICAgICAqIHNlcXVlbmNlIHdpdGggdGhlIHNwZWNpZmllZCBsaXRlcmFsIHJlcGxhY2VtZW50IHNlcXVlbmNlLiBUaGUKKyAgICAgKiByZXBsYWNlbWVudCBwcm9jZWVkcyBmcm9tIHRoZSBiZWdpbm5pbmcgb2YgdGhlIHN0cmluZyB0byB0aGUgZW5kLCBmb3IKKyAgICAgKiBleGFtcGxlLCByZXBsYWNpbmcgImFhIiB3aXRoICJiIiBpbiB0aGUgc3RyaW5nICJhYWEiIHdpbGwgcmVzdWx0IGluCisgICAgICogImJhIiByYXRoZXIgdGhhbiAiYWIiLgorICAgICAqCisgICAgICogQHBhcmFtICB0YXJnZXQgVGhlIHNlcXVlbmNlIG9mIGNoYXIgdmFsdWVzIHRvIGJlIHJlcGxhY2VkCisgICAgICogQHBhcmFtICByZXBsYWNlbWVudCBUaGUgcmVwbGFjZW1lbnQgc2VxdWVuY2Ugb2YgY2hhciB2YWx1ZXMKKyAgICAgKiBAcmV0dXJuICBUaGUgcmVzdWx0aW5nIHN0cmluZworICAgICAqIEB0aHJvd3MgTnVsbFBvaW50ZXJFeGNlcHRpb24gaWYgPGNvZGU+dGFyZ2V0PC9jb2RlPiBvcgorICAgICAqICAgICAgICAgPGNvZGU+cmVwbGFjZW1lbnQ8L2NvZGU+IGlzIDxjb2RlPm51bGw8L2NvZGU+LgorICAgICAqIEBzaW5jZSAxLjUKKyAgICAgKi8KKyAgICBwdWJsaWMgU3RyaW5nIHJlcGxhY2UoQ2hhclNlcXVlbmNlIHRhcmdldCwgQ2hhclNlcXVlbmNlIHJlcGxhY2VtZW50KSB7CisgICAgICAgIHJldHVybiBQYXR0ZXJuLmNvbXBpbGUodGFyZ2V0LnRvU3RyaW5nKCksIFBhdHRlcm4uTElURVJBTCkubWF0Y2hlcigKKyAgICAgICAgICAgIHRoaXMpLnJlcGxhY2VBbGwoTWF0Y2hlci5xdW90ZVJlcGxhY2VtZW50KHJlcGxhY2VtZW50LnRvU3RyaW5nKCkpKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBTcGxpdHMgdGhpcyBzdHJpbmcgYXJvdW5kIG1hdGNoZXMgb2YgdGhlIGdpdmVuCisgICAgICogPGEgaHJlZj0iLi4vdXRpbC9yZWdleC9QYXR0ZXJuLmh0bWwjc3VtIj5yZWd1bGFyIGV4cHJlc3Npb248L2E+LgorICAgICAqCisgICAgICogPHA+IFRoZSBhcnJheSByZXR1cm5lZCBieSB0aGlzIG1ldGhvZCBjb250YWlucyBlYWNoIHN1YnN0cmluZyBvZiB0aGlzCisgICAgICogc3RyaW5nIHRoYXQgaXMgdGVybWluYXRlZCBieSBhbm90aGVyIHN1YnN0cmluZyB0aGF0IG1hdGNoZXMgdGhlIGdpdmVuCisgICAgICogZXhwcmVzc2lvbiBvciBpcyB0ZXJtaW5hdGVkIGJ5IHRoZSBlbmQgb2YgdGhlIHN0cmluZy4gIFRoZSBzdWJzdHJpbmdzIGluCisgICAgICogdGhlIGFycmF5IGFyZSBpbiB0aGUgb3JkZXIgaW4gd2hpY2ggdGhleSBvY2N1ciBpbiB0aGlzIHN0cmluZy4gIElmIHRoZQorICAgICAqIGV4cHJlc3Npb24gZG9lcyBub3QgbWF0Y2ggYW55IHBhcnQgb2YgdGhlIGlucHV0IHRoZW4gdGhlIHJlc3VsdGluZyBhcnJheQorICAgICAqIGhhcyBqdXN0IG9uZSBlbGVtZW50LCBuYW1lbHkgdGhpcyBzdHJpbmcuCisgICAgICoKKyAgICAgKiA8cD4gVGhlIDx0dD5saW1pdDwvdHQ+IHBhcmFtZXRlciBjb250cm9scyB0aGUgbnVtYmVyIG9mIHRpbWVzIHRoZQorICAgICAqIHBhdHRlcm4gaXMgYXBwbGllZCBhbmQgdGhlcmVmb3JlIGFmZmVjdHMgdGhlIGxlbmd0aCBvZiB0aGUgcmVzdWx0aW5nCisgICAgICogYXJyYXkuICBJZiB0aGUgbGltaXQgPGk+bjwvaT4gaXMgZ3JlYXRlciB0aGFuIHplcm8gdGhlbiB0aGUgcGF0dGVybgorICAgICAqIHdpbGwgYmUgYXBwbGllZCBhdCBtb3N0IDxpPm48L2k+Jm5ic3A7LSZuYnNwOzEgdGltZXMsIHRoZSBhcnJheSdzCisgICAgICogbGVuZ3RoIHdpbGwgYmUgbm8gZ3JlYXRlciB0aGFuIDxpPm48L2k+LCBhbmQgdGhlIGFycmF5J3MgbGFzdCBlbnRyeQorICAgICAqIHdpbGwgY29udGFpbiBhbGwgaW5wdXQgYmV5b25kIHRoZSBsYXN0IG1hdGNoZWQgZGVsaW1pdGVyLiAgSWYgPGk+bjwvaT4KKyAgICAgKiBpcyBub24tcG9zaXRpdmUgdGhlbiB0aGUgcGF0dGVybiB3aWxsIGJlIGFwcGxpZWQgYXMgbWFueSB0aW1lcyBhcworICAgICAqIHBvc3NpYmxlIGFuZCB0aGUgYXJyYXkgY2FuIGhhdmUgYW55IGxlbmd0aC4gIElmIDxpPm48L2k+IGlzIHplcm8gdGhlbgorICAgICAqIHRoZSBwYXR0ZXJuIHdpbGwgYmUgYXBwbGllZCBhcyBtYW55IHRpbWVzIGFzIHBvc3NpYmxlLCB0aGUgYXJyYXkgY2FuCisgICAgICogaGF2ZSBhbnkgbGVuZ3RoLCBhbmQgdHJhaWxpbmcgZW1wdHkgc3RyaW5ncyB3aWxsIGJlIGRpc2NhcmRlZC4KKyAgICAgKgorICAgICAqIDxwPiBUaGUgc3RyaW5nIDx0dD4iYm9vOmFuZDpmb28iPC90dD4sIGZvciBleGFtcGxlLCB5aWVsZHMgdGhlCisgICAgICogZm9sbG93aW5nIHJlc3VsdHMgd2l0aCB0aGVzZSBwYXJhbWV0ZXJzOgorICAgICAqCisgICAgICogPGJsb2NrcXVvdGU+PHRhYmxlIGNlbGxwYWRkaW5nPTEgY2VsbHNwYWNpbmc9MCBzdW1tYXJ5PSJTcGxpdCBleGFtcGxlIHNob3dpbmcgcmVnZXgsIGxpbWl0LCBhbmQgcmVzdWx0Ij4KKyAgICAgKiA8dHI+CisgICAgICogICAgIDx0aD5SZWdleDwvdGg+CisgICAgICogICAgIDx0aD5MaW1pdDwvdGg+CisgICAgICogICAgIDx0aD5SZXN1bHQ8L3RoPgorICAgICAqIDwvdHI+CisgICAgICogPHRyPjx0ZCBhbGlnbj1jZW50ZXI+OjwvdGQ+CisgICAgICogICAgIDx0ZCBhbGlnbj1jZW50ZXI+MjwvdGQ+CisgICAgICogICAgIDx0ZD48dHQ+eyAiYm9vIiwgImFuZDpmb28iIH08L3R0PjwvdGQ+PC90cj4KKyAgICAgKiA8dHI+PHRkIGFsaWduPWNlbnRlcj46PC90ZD4KKyAgICAgKiAgICAgPHRkIGFsaWduPWNlbnRlcj41PC90ZD4KKyAgICAgKiAgICAgPHRkPjx0dD57ICJib28iLCAiYW5kIiwgImZvbyIgfTwvdHQ+PC90ZD48L3RyPgorICAgICAqIDx0cj48dGQgYWxpZ249Y2VudGVyPjo8L3RkPgorICAgICAqICAgICA8dGQgYWxpZ249Y2VudGVyPi0yPC90ZD4KKyAgICAgKiAgICAgPHRkPjx0dD57ICJib28iLCAiYW5kIiwgImZvbyIgfTwvdHQ+PC90ZD48L3RyPgorICAgICAqIDx0cj48dGQgYWxpZ249Y2VudGVyPm88L3RkPgorICAgICAqICAgICA8dGQgYWxpZ249Y2VudGVyPjU8L3RkPgorICAgICAqICAgICA8dGQ+PHR0PnsgImIiLCAiIiwgIjphbmQ6ZiIsICIiLCAiIiB9PC90dD48L3RkPjwvdHI+CisgICAgICogPHRyPjx0ZCBhbGlnbj1jZW50ZXI+bzwvdGQ+CisgICAgICogICAgIDx0ZCBhbGlnbj1jZW50ZXI+LTI8L3RkPgorICAgICAqICAgICA8dGQ+PHR0PnsgImIiLCAiIiwgIjphbmQ6ZiIsICIiLCAiIiB9PC90dD48L3RkPjwvdHI+CisgICAgICogPHRyPjx0ZCBhbGlnbj1jZW50ZXI+bzwvdGQ+CisgICAgICogICAgIDx0ZCBhbGlnbj1jZW50ZXI+MDwvdGQ+CisgICAgICogICAgIDx0ZD48dHQ+eyAiYiIsICIiLCAiOmFuZDpmIiB9PC90dD48L3RkPjwvdHI+CisgICAgICogPC90YWJsZT48L2Jsb2NrcXVvdGU+CisgICAgICoKKyAgICAgKiA8cD4gQW4gaW52b2NhdGlvbiBvZiB0aGlzIG1ldGhvZCBvZiB0aGUgZm9ybQorICAgICAqIDxpPnN0ci48L2k+PHR0PnNwbGl0KDwvdHQ+PGk+cmVnZXg8L2k+PHR0Piw8L3R0PiZuYnNwOzxpPm48L2k+PHR0Pik8L3R0PgorICAgICAqIHlpZWxkcyB0aGUgc2FtZSByZXN1bHQgYXMgdGhlIGV4cHJlc3Npb24KKyAgICAgKgorICAgICAqIDxibG9ja3F1b3RlPgorICAgICAqIHtAbGluayBqYXZhLnV0aWwucmVnZXguUGF0dGVybn0ue0BsaW5rIGphdmEudXRpbC5yZWdleC5QYXR0ZXJuI2NvbXBpbGUKKyAgICAgKiBjb21waWxlfTx0dD4oPC90dD48aT5yZWdleDwvaT48dHQ+KTwvdHQ+LntAbGluaworICAgICAqIGphdmEudXRpbC5yZWdleC5QYXR0ZXJuI3NwbGl0KGphdmEubGFuZy5DaGFyU2VxdWVuY2UsaW50KQorICAgICAqIHNwbGl0fTx0dD4oPC90dD48aT5zdHI8L2k+PHR0Piw8L3R0PiZuYnNwOzxpPm48L2k+PHR0Pik8L3R0PgorICAgICAqIDwvYmxvY2txdW90ZT4KKyAgICAgKgorICAgICAqCisgICAgICogQHBhcmFtICByZWdleAorICAgICAqICAgICAgICAgdGhlIGRlbGltaXRpbmcgcmVndWxhciBleHByZXNzaW9uCisgICAgICoKKyAgICAgKiBAcGFyYW0gIGxpbWl0CisgICAgICogICAgICAgICB0aGUgcmVzdWx0IHRocmVzaG9sZCwgYXMgZGVzY3JpYmVkIGFib3ZlCisgICAgICoKKyAgICAgKiBAcmV0dXJuICB0aGUgYXJyYXkgb2Ygc3RyaW5ncyBjb21wdXRlZCBieSBzcGxpdHRpbmcgdGhpcyBzdHJpbmcKKyAgICAgKiAgICAgICAgICBhcm91bmQgbWF0Y2hlcyBvZiB0aGUgZ2l2ZW4gcmVndWxhciBleHByZXNzaW9uCisgICAgICoKKyAgICAgKiBAdGhyb3dzICBQYXR0ZXJuU3ludGF4RXhjZXB0aW9uCisgICAgICogICAgICAgICAgaWYgdGhlIHJlZ3VsYXIgZXhwcmVzc2lvbidzIHN5bnRheCBpcyBpbnZhbGlkCisgICAgICoKKyAgICAgKiBAc2VlIGphdmEudXRpbC5yZWdleC5QYXR0ZXJuCisgICAgICoKKyAgICAgKiBAc2luY2UgMS40CisgICAgICogQHNwZWMgSlNSLTUxCisgICAgICovCisgICAgcHVibGljIFN0cmluZ1tdIHNwbGl0KFN0cmluZyByZWdleCwgaW50IGxpbWl0KSB7CisJcmV0dXJuIFBhdHRlcm4uY29tcGlsZShyZWdleCkuc3BsaXQodGhpcywgbGltaXQpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFNwbGl0cyB0aGlzIHN0cmluZyBhcm91bmQgbWF0Y2hlcyBvZiB0aGUgZ2l2ZW4KKyAgICAgKiB7QGxpbmtwbGFpbiBqYXZhLnV0aWwucmVnZXguUGF0dGVybiNzdW0gcmVndWxhciBleHByZXNzaW9ufS4KKyAgICAgKgorICAgICAqIDxwPiBUaGlzIG1ldGhvZCB3b3JrcyBhcyBpZiBieSBpbnZva2luZyB0aGUgdHdvLWFyZ3VtZW50IHtAbGluaworICAgICAqICNzcGxpdChTdHJpbmcsIGludCkgc3BsaXR9IG1ldGhvZCB3aXRoIHRoZSBnaXZlbiBleHByZXNzaW9uIGFuZCBhIGxpbWl0CisgICAgICogYXJndW1lbnQgb2YgemVyby4gIFRyYWlsaW5nIGVtcHR5IHN0cmluZ3MgYXJlIHRoZXJlZm9yZSBub3QgaW5jbHVkZWQgaW4KKyAgICAgKiB0aGUgcmVzdWx0aW5nIGFycmF5LgorICAgICAqCisgICAgICogPHA+IFRoZSBzdHJpbmcgPHR0PiJib286YW5kOmZvbyI8L3R0PiwgZm9yIGV4YW1wbGUsIHlpZWxkcyB0aGUgZm9sbG93aW5nCisgICAgICogcmVzdWx0cyB3aXRoIHRoZXNlIGV4cHJlc3Npb25zOgorICAgICAqCisgICAgICogPGJsb2NrcXVvdGU+PHRhYmxlIGNlbGxwYWRkaW5nPTEgY2VsbHNwYWNpbmc9MCBzdW1tYXJ5PSJTcGxpdCBleGFtcGxlcyBzaG93aW5nIHJlZ2V4IGFuZCByZXN1bHQiPgorICAgICAqIDx0cj4KKyAgICAgKiAgPHRoPlJlZ2V4PC90aD4KKyAgICAgKiAgPHRoPlJlc3VsdDwvdGg+CisgICAgICogPC90cj4KKyAgICAgKiA8dHI+PHRkIGFsaWduPWNlbnRlcj46PC90ZD4KKyAgICAgKiAgICAgPHRkPjx0dD57ICJib28iLCAiYW5kIiwgImZvbyIgfTwvdHQ+PC90ZD48L3RyPgorICAgICAqIDx0cj48dGQgYWxpZ249Y2VudGVyPm88L3RkPgorICAgICAqICAgICA8dGQ+PHR0PnsgImIiLCAiIiwgIjphbmQ6ZiIgfTwvdHQ+PC90ZD48L3RyPgorICAgICAqIDwvdGFibGU+PC9ibG9ja3F1b3RlPgorICAgICAqCisgICAgICoKKyAgICAgKiBAcGFyYW0gIHJlZ2V4CisgICAgICogICAgICAgICB0aGUgZGVsaW1pdGluZyByZWd1bGFyIGV4cHJlc3Npb24KKyAgICAgKgorICAgICAqIEByZXR1cm4gIHRoZSBhcnJheSBvZiBzdHJpbmdzIGNvbXB1dGVkIGJ5IHNwbGl0dGluZyB0aGlzIHN0cmluZworICAgICAqICAgICAgICAgIGFyb3VuZCBtYXRjaGVzIG9mIHRoZSBnaXZlbiByZWd1bGFyIGV4cHJlc3Npb24KKyAgICAgKgorICAgICAqIEB0aHJvd3MgIFBhdHRlcm5TeW50YXhFeGNlcHRpb24KKyAgICAgKiAgICAgICAgICBpZiB0aGUgcmVndWxhciBleHByZXNzaW9uJ3Mgc3ludGF4IGlzIGludmFsaWQKKyAgICAgKgorICAgICAqIEBzZWUgamF2YS51dGlsLnJlZ2V4LlBhdHRlcm4KKyAgICAgKgorICAgICAqIEBzaW5jZSAxLjQKKyAgICAgKiBAc3BlYyBKU1ItNTEKKyAgICAgKi8KKyAgICBwdWJsaWMgU3RyaW5nW10gc3BsaXQoU3RyaW5nIHJlZ2V4KSB7CisgICAgICAgIHJldHVybiBzcGxpdChyZWdleCwgMCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogQ29udmVydHMgYWxsIG9mIHRoZSBjaGFyYWN0ZXJzIGluIHRoaXMgPGNvZGU+U3RyaW5nPC9jb2RlPiB0byBsb3dlcgorICAgICAqIGNhc2UgdXNpbmcgdGhlIHJ1bGVzIG9mIHRoZSBnaXZlbiA8Y29kZT5Mb2NhbGU8L2NvZGU+LiAgQ2FzZSBtYXBwaW5nIGlzIGJhc2VkCisgICAgICogb24gdGhlIFVuaWNvZGUgU3RhbmRhcmQgdmVyc2lvbiBzcGVjaWZpZWQgYnkgdGhlIHtAbGluayBqYXZhLmxhbmcuQ2hhcmFjdGVyIENoYXJhY3Rlcn0KKyAgICAgKiBjbGFzcy4gU2luY2UgY2FzZSBtYXBwaW5ncyBhcmUgbm90IGFsd2F5cyAxOjEgY2hhciBtYXBwaW5ncywgdGhlIHJlc3VsdGluZworICAgICAqIDxjb2RlPlN0cmluZzwvY29kZT4gbWF5IGJlIGEgZGlmZmVyZW50IGxlbmd0aCB0aGFuIHRoZSBvcmlnaW5hbCA8Y29kZT5TdHJpbmc8L2NvZGU+LgorICAgICAqIDxwPgorICAgICAqIEV4YW1wbGVzIG9mIGxvd2VyY2FzZSAgbWFwcGluZ3MgYXJlIGluIHRoZSBmb2xsb3dpbmcgdGFibGU6CisgICAgICogPHRhYmxlIGJvcmRlcj0iMSIgc3VtbWFyeT0iTG93ZXJjYXNlIG1hcHBpbmcgZXhhbXBsZXMgc2hvd2luZyBsYW5ndWFnZSBjb2RlIG9mIGxvY2FsZSwgdXBwZXIgY2FzZSwgbG93ZXIgY2FzZSwgYW5kIGRlc2NyaXB0aW9uIj4KKyAgICAgKiA8dHI+CisgICAgICogICA8dGg+TGFuZ3VhZ2UgQ29kZSBvZiBMb2NhbGU8L3RoPgorICAgICAqICAgPHRoPlVwcGVyIENhc2U8L3RoPgorICAgICAqICAgPHRoPkxvd2VyIENhc2U8L3RoPgorICAgICAqICAgPHRoPkRlc2NyaXB0aW9uPC90aD4KKyAgICAgKiA8L3RyPgorICAgICAqIDx0cj4KKyAgICAgKiAgIDx0ZD50ciAoVHVya2lzaCk8L3RkPgorICAgICAqICAgPHRkPiYjOTI7dTAxMzA8L3RkPgorICAgICAqICAgPHRkPiYjOTI7dTAwNjk8L3RkPgorICAgICAqICAgPHRkPmNhcGl0YWwgbGV0dGVyIEkgd2l0aCBkb3QgYWJvdmUgLSZndDsgc21hbGwgbGV0dGVyIGk8L3RkPgorICAgICAqIDwvdHI+CisgICAgICogPHRyPgorICAgICAqICAgPHRkPnRyIChUdXJraXNoKTwvdGQ+CisgICAgICogICA8dGQ+JiM5Mjt1MDA0OTwvdGQ+CisgICAgICogICA8dGQ+JiM5Mjt1MDEzMTwvdGQ+CisgICAgICogICA8dGQ+Y2FwaXRhbCBsZXR0ZXIgSSAtJmd0OyBzbWFsbCBsZXR0ZXIgZG90bGVzcyBpIDwvdGQ+CisgICAgICogPC90cj4KKyAgICAgKiA8dHI+CisgICAgICogICA8dGQ+KGFsbCk8L3RkPgorICAgICAqICAgPHRkPkZyZW5jaCBGcmllczwvdGQ+CisgICAgICogICA8dGQ+ZnJlbmNoIGZyaWVzPC90ZD4KKyAgICAgKiAgIDx0ZD5sb3dlcmNhc2VkIGFsbCBjaGFycyBpbiBTdHJpbmc8L3RkPgorICAgICAqIDwvdHI+CisgICAgICogPHRyPgorICAgICAqICAgPHRkPihhbGwpPC90ZD4KKyAgICAgKiAgIDx0ZD48aW1nIHNyYz0iZG9jLWZpbGVzL2NhcGlvdGEuZ2lmIiBhbHQ9ImNhcGlvdGEiPjxpbWcgc3JjPSJkb2MtZmlsZXMvY2FwY2hpLmdpZiIgYWx0PSJjYXBjaGkiPgorICAgICAqICAgICAgIDxpbWcgc3JjPSJkb2MtZmlsZXMvY2FwdGhldGEuZ2lmIiBhbHQ9ImNhcHRoZXRhIj48aW1nIHNyYz0iZG9jLWZpbGVzL2NhcHVwc2lsLmdpZiIgYWx0PSJjYXB1cHNpbCI+CisgICAgICogICAgICAgPGltZyBzcmM9ImRvYy1maWxlcy9jYXBzaWdtYS5naWYiIGFsdD0iY2Fwc2lnbWEiPjwvdGQ+CisgICAgICogICA8dGQ+PGltZyBzcmM9ImRvYy1maWxlcy9pb3RhLmdpZiIgYWx0PSJpb3RhIj48aW1nIHNyYz0iZG9jLWZpbGVzL2NoaS5naWYiIGFsdD0iY2hpIj4KKyAgICAgKiAgICAgICA8aW1nIHNyYz0iZG9jLWZpbGVzL3RoZXRhLmdpZiIgYWx0PSJ0aGV0YSI+PGltZyBzcmM9ImRvYy1maWxlcy91cHNpbG9uLmdpZiIgYWx0PSJ1cHNpbG9uIj4KKyAgICAgKiAgICAgICA8aW1nIHNyYz0iZG9jLWZpbGVzL3NpZ21hMS5naWYiIGFsdD0ic2lnbWEiPjwvdGQ+CisgICAgICogICA8dGQ+bG93ZXJjYXNlZCBhbGwgY2hhcnMgaW4gU3RyaW5nPC90ZD4KKyAgICAgKiA8L3RyPgorICAgICAqIDwvdGFibGU+CisgICAgICoKKyAgICAgKiBAcGFyYW0gbG9jYWxlIHVzZSB0aGUgY2FzZSB0cmFuc2Zvcm1hdGlvbiBydWxlcyBmb3IgdGhpcyBsb2NhbGUKKyAgICAgKiBAcmV0dXJuIHRoZSA8Y29kZT5TdHJpbmc8L2NvZGU+LCBjb252ZXJ0ZWQgdG8gbG93ZXJjYXNlLgorICAgICAqIEBzZWUgICAgIGphdmEubGFuZy5TdHJpbmcjdG9Mb3dlckNhc2UoKQorICAgICAqIEBzZWUgICAgIGphdmEubGFuZy5TdHJpbmcjdG9VcHBlckNhc2UoKQorICAgICAqIEBzZWUgICAgIGphdmEubGFuZy5TdHJpbmcjdG9VcHBlckNhc2UoTG9jYWxlKQorICAgICAqIEBzaW5jZSAgIDEuMQorICAgICAqLworICAgIHB1YmxpYyBTdHJpbmcgdG9Mb3dlckNhc2UoTG9jYWxlIGxvY2FsZSkgeworCWlmIChsb2NhbGUgPT0gbnVsbCkgeworCSAgICB0aHJvdyBuZXcgTnVsbFBvaW50ZXJFeGNlcHRpb24oKTsKKyAgICAgICAgfQorCisgICAgICAgIGludCAgICAgZmlyc3RVcHBlcjsKKworCS8qIE5vdyBjaGVjayBpZiB0aGVyZSBhcmUgYW55IGNoYXJhY3RlcnMgdGhhdCBuZWVkIHRvIGJlIGNoYW5nZWQuICovCisJc2NhbjogeworCSAgICBmb3IgKGZpcnN0VXBwZXIgPSAwIDsgZmlyc3RVcHBlciA8IGNvdW50OyApIHsKKwkJY2hhciBjID0gdmFsdWVbb2Zmc2V0K2ZpcnN0VXBwZXJdOworCQlpZiAoKGMgPj0gQ2hhcmFjdGVyLk1JTl9ISUdIX1NVUlJPR0FURSkgJiYKKwkJICAgIChjIDw9IENoYXJhY3Rlci5NQVhfSElHSF9TVVJST0dBVEUpKSB7CisJCSAgICBpbnQgc3VwcGxDaGFyID0gY29kZVBvaW50QXQoZmlyc3RVcHBlcik7CisJCSAgICBpZiAoc3VwcGxDaGFyICE9IENoYXJhY3Rlci50b0xvd2VyQ2FzZShzdXBwbENoYXIpKSB7CisJCSAgICAgICAgYnJlYWsgc2NhbjsKKwkJICAgIH0KKwkJICAgIGZpcnN0VXBwZXIgKz0gQ2hhcmFjdGVyLmNoYXJDb3VudChzdXBwbENoYXIpOworCQl9IGVsc2UgeworCQkgICAgaWYgKGMgIT0gQ2hhcmFjdGVyLnRvTG93ZXJDYXNlKGMpKSB7CisJCSAgICAgICAgYnJlYWsgc2NhbjsKKwkJICAgIH0KKwkJICAgIGZpcnN0VXBwZXIrKzsKKwkJfQorCSAgICB9CisJICAgIHJldHVybiB0aGlzOworCX0KKworICAgICAgICBjaGFyW10gIHJlc3VsdCA9IG5ldyBjaGFyW2NvdW50XTsKKwlpbnQgICAgIHJlc3VsdE9mZnNldCA9IDA7ICAvKiByZXN1bHQgbWF5IGdyb3csIHNvIGkrcmVzdWx0T2Zmc2V0CisJCQkJICAgICogaXMgdGhlIHdyaXRlIGxvY2F0aW9uIGluIHJlc3VsdCAqLworCisgICAgICAgIC8qIEp1c3QgY29weSB0aGUgZmlyc3QgZmV3IGxvd2VyQ2FzZSBjaGFyYWN0ZXJzLiAqLworICAgICAgICBTeXN0ZW0uYXJyYXljb3B5KHZhbHVlLCBvZmZzZXQsIHJlc3VsdCwgMCwgZmlyc3RVcHBlcik7CisKKwlTdHJpbmcgbGFuZyA9IGxvY2FsZS5nZXRMYW5ndWFnZSgpOworCWJvb2xlYW4gbG9jYWxlRGVwZW5kZW50ID0KKyAgICAgICAgICAgIChsYW5nID09ICJ0ciIgfHwgbGFuZyA9PSAiYXoiIHx8IGxhbmcgPT0gImx0Iik7CisgICAgICAgIGNoYXJbXSBsb3dlckNoYXJBcnJheTsKKyAgICAgICAgaW50IGxvd2VyQ2hhcjsKKyAgICAgICAgaW50IHNyY0NoYXI7CisgICAgICAgIGludCBzcmNDb3VudDsKKyAgICAgICAgZm9yIChpbnQgaSA9IGZpcnN0VXBwZXI7IGkgPCBjb3VudDsgaSArPSBzcmNDb3VudCkgeworCSAgICBzcmNDaGFyID0gKGludCl2YWx1ZVtvZmZzZXQraV07CisJICAgIGlmICgoY2hhcilzcmNDaGFyID49IENoYXJhY3Rlci5NSU5fSElHSF9TVVJST0dBVEUgJiYKKwkgICAgICAgIChjaGFyKXNyY0NoYXIgPD0gQ2hhcmFjdGVyLk1BWF9ISUdIX1NVUlJPR0FURSkgeworCQlzcmNDaGFyID0gY29kZVBvaW50QXQoaSk7CisJCXNyY0NvdW50ID0gQ2hhcmFjdGVyLmNoYXJDb3VudChzcmNDaGFyKTsKKwkgICAgfSBlbHNlIHsKKwkgICAgICAgIHNyY0NvdW50ID0gMTsKKwkgICAgfQorICAgICAgICAgICAgaWYgKGxvY2FsZURlcGVuZGVudCB8fCBzcmNDaGFyID09ICdcdTAzQTMnKSB7IC8vIEdSRUVLIENBUElUQUwgTEVUVEVSIFNJR01BCisgICAgICAgICAgICAgICAgbG93ZXJDaGFyID0gQ29uZGl0aW9uYWxTcGVjaWFsQ2FzaW5nLnRvTG93ZXJDYXNlRXgodGhpcywgaSwgbG9jYWxlKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgbG93ZXJDaGFyID0gQ2hhcmFjdGVyLnRvTG93ZXJDYXNlKHNyY0NoYXIpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKChsb3dlckNoYXIgPT0gQ2hhcmFjdGVyLkVSUk9SKSB8fAorICAgICAgICAgICAgICAgIChsb3dlckNoYXIgPj0gQ2hhcmFjdGVyLk1JTl9TVVBQTEVNRU5UQVJZX0NPREVfUE9JTlQpKSB7CisgICAgICAgICAgICAgICAgaWYgKGxvd2VyQ2hhciA9PSBDaGFyYWN0ZXIuRVJST1IpIHsKKyAgICAgICAgICAgICAgICAgICAgbG93ZXJDaGFyQXJyYXkgPQorICAgICAgICAgICAgICAgICAgICAgICAgQ29uZGl0aW9uYWxTcGVjaWFsQ2FzaW5nLnRvTG93ZXJDYXNlQ2hhckFycmF5KHRoaXMsIGksIGxvY2FsZSk7CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChzcmNDb3VudCA9PSAyKSB7CisJCSAgICByZXN1bHRPZmZzZXQgKz0gQ2hhcmFjdGVyLnRvQ2hhcnMobG93ZXJDaGFyLCByZXN1bHQsIGkgKyByZXN1bHRPZmZzZXQpIC0gc3JjQ291bnQ7CisJCSAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworCQkgICAgbG93ZXJDaGFyQXJyYXkgPSBDaGFyYWN0ZXIudG9DaGFycyhsb3dlckNoYXIpOworCQl9CisKKyAgICAgICAgICAgICAgICAvKiBHcm93IHJlc3VsdCBpZiBuZWVkZWQgKi8KKyAgICAgICAgICAgICAgICBpbnQgbWFwTGVuID0gbG93ZXJDaGFyQXJyYXkubGVuZ3RoOworCQlpZiAobWFwTGVuID4gc3JjQ291bnQpIHsKKyAgICAgICAgICAgICAgICAgICAgY2hhcltdIHJlc3VsdDIgPSBuZXcgY2hhcltyZXN1bHQubGVuZ3RoICsgbWFwTGVuIC0gc3JjQ291bnRdOworICAgICAgICAgICAgICAgICAgICBTeXN0ZW0uYXJyYXljb3B5KHJlc3VsdCwgMCwgcmVzdWx0MiwgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgIGkgKyByZXN1bHRPZmZzZXQpOworICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSByZXN1bHQyOworCQl9CisgICAgICAgICAgICAgICAgZm9yIChpbnQgeD0wOyB4PG1hcExlbjsgKyt4KSB7CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdFtpK3Jlc3VsdE9mZnNldCt4XSA9IGxvd2VyQ2hhckFycmF5W3hdOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICByZXN1bHRPZmZzZXQgKz0gKG1hcExlbiAtIHNyY0NvdW50KTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgcmVzdWx0W2krcmVzdWx0T2Zmc2V0XSA9IChjaGFyKWxvd2VyQ2hhcjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICByZXR1cm4gbmV3IFN0cmluZygwLCBjb3VudCtyZXN1bHRPZmZzZXQsIHJlc3VsdCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogQ29udmVydHMgYWxsIG9mIHRoZSBjaGFyYWN0ZXJzIGluIHRoaXMgPGNvZGU+U3RyaW5nPC9jb2RlPiB0byBsb3dlcgorICAgICAqIGNhc2UgdXNpbmcgdGhlIHJ1bGVzIG9mIHRoZSBkZWZhdWx0IGxvY2FsZS4gVGhpcyBpcyBlcXVpdmFsZW50IHRvIGNhbGxpbmcKKyAgICAgKiA8Y29kZT50b0xvd2VyQ2FzZShMb2NhbGUuZ2V0RGVmYXVsdCgpKTwvY29kZT4uCisgICAgICogPHA+CisgICAgICogQHJldHVybiAgdGhlIDxjb2RlPlN0cmluZzwvY29kZT4sIGNvbnZlcnRlZCB0byBsb3dlcmNhc2UuCisgICAgICogQHNlZSAgICAgamF2YS5sYW5nLlN0cmluZyN0b0xvd2VyQ2FzZShMb2NhbGUpCisgICAgICovCisgICAgcHVibGljIFN0cmluZyB0b0xvd2VyQ2FzZSgpIHsKKyAgICAgICAgcmV0dXJuIHRvTG93ZXJDYXNlKExvY2FsZS5nZXREZWZhdWx0KCkpOworICAgIH0KKworICAgIC8qKgorICAgICAqIENvbnZlcnRzIGFsbCBvZiB0aGUgY2hhcmFjdGVycyBpbiB0aGlzIDxjb2RlPlN0cmluZzwvY29kZT4gdG8gdXBwZXIKKyAgICAgKiBjYXNlIHVzaW5nIHRoZSBydWxlcyBvZiB0aGUgZ2l2ZW4gPGNvZGU+TG9jYWxlPC9jb2RlPi4gQ2FzZSBtYXBwaW5nIGlzIGJhc2VkCisgICAgICogb24gdGhlIFVuaWNvZGUgU3RhbmRhcmQgdmVyc2lvbiBzcGVjaWZpZWQgYnkgdGhlIHtAbGluayBqYXZhLmxhbmcuQ2hhcmFjdGVyIENoYXJhY3Rlcn0KKyAgICAgKiBjbGFzcy4gU2luY2UgY2FzZSBtYXBwaW5ncyBhcmUgbm90IGFsd2F5cyAxOjEgY2hhciBtYXBwaW5ncywgdGhlIHJlc3VsdGluZworICAgICAqIDxjb2RlPlN0cmluZzwvY29kZT4gbWF5IGJlIGEgZGlmZmVyZW50IGxlbmd0aCB0aGFuIHRoZSBvcmlnaW5hbCA8Y29kZT5TdHJpbmc8L2NvZGU+LgorICAgICAqIDxwPgorICAgICAqIEV4YW1wbGVzIG9mIGxvY2FsZS1zZW5zaXRpdmUgYW5kIDE6TSBjYXNlIG1hcHBpbmdzIGFyZSBpbiB0aGUgZm9sbG93aW5nIHRhYmxlLgorICAgICAqIDxwPgorICAgICAqIDx0YWJsZSBib3JkZXI9IjEiIHN1bW1hcnk9IkV4YW1wbGVzIG9mIGxvY2FsZS1zZW5zaXRpdmUgYW5kIDE6TSBjYXNlIG1hcHBpbmdzLiBTaG93cyBMYW5ndWFnZSBjb2RlIG9mIGxvY2FsZSwgbG93ZXIgY2FzZSwgdXBwZXIgY2FzZSwgYW5kIGRlc2NyaXB0aW9uLiI+CisgICAgICogPHRyPgorICAgICAqICAgPHRoPkxhbmd1YWdlIENvZGUgb2YgTG9jYWxlPC90aD4KKyAgICAgKiAgIDx0aD5Mb3dlciBDYXNlPC90aD4KKyAgICAgKiAgIDx0aD5VcHBlciBDYXNlPC90aD4KKyAgICAgKiAgIDx0aD5EZXNjcmlwdGlvbjwvdGg+CisgICAgICogPC90cj4KKyAgICAgKiA8dHI+CisgICAgICogICA8dGQ+dHIgKFR1cmtpc2gpPC90ZD4KKyAgICAgKiAgIDx0ZD4mIzkyO3UwMDY5PC90ZD4KKyAgICAgKiAgIDx0ZD4mIzkyO3UwMTMwPC90ZD4KKyAgICAgKiAgIDx0ZD5zbWFsbCBsZXR0ZXIgaSAtJmd0OyBjYXBpdGFsIGxldHRlciBJIHdpdGggZG90IGFib3ZlPC90ZD4KKyAgICAgKiA8L3RyPgorICAgICAqIDx0cj4KKyAgICAgKiAgIDx0ZD50ciAoVHVya2lzaCk8L3RkPgorICAgICAqICAgPHRkPiYjOTI7dTAxMzE8L3RkPgorICAgICAqICAgPHRkPiYjOTI7dTAwNDk8L3RkPgorICAgICAqICAgPHRkPnNtYWxsIGxldHRlciBkb3RsZXNzIGkgLSZndDsgY2FwaXRhbCBsZXR0ZXIgSTwvdGQ+CisgICAgICogPC90cj4KKyAgICAgKiA8dHI+CisgICAgICogICA8dGQ+KGFsbCk8L3RkPgorICAgICAqICAgPHRkPiYjOTI7dTAwZGY8L3RkPgorICAgICAqICAgPHRkPiYjOTI7dTAwNTMgJiM5Mjt1MDA1MzwvdGQ+CisgICAgICogICA8dGQ+c21hbGwgbGV0dGVyIHNoYXJwIHMgLSZndDsgdHdvIGxldHRlcnM6IFNTPC90ZD4KKyAgICAgKiA8L3RyPgorICAgICAqIDx0cj4KKyAgICAgKiAgIDx0ZD4oYWxsKTwvdGQ+CisgICAgICogICA8dGQ+RmFocnZlcmduJnV1bWw7Z2VuPC90ZD4KKyAgICAgKiAgIDx0ZD5GQUhSVkVSR04mVXVtbDtHRU48L3RkPgorICAgICAqICAgPHRkPjwvdGQ+CisgICAgICogPC90cj4KKyAgICAgKiA8L3RhYmxlPgorICAgICAqIEBwYXJhbSBsb2NhbGUgdXNlIHRoZSBjYXNlIHRyYW5zZm9ybWF0aW9uIHJ1bGVzIGZvciB0aGlzIGxvY2FsZQorICAgICAqIEByZXR1cm4gdGhlIDxjb2RlPlN0cmluZzwvY29kZT4sIGNvbnZlcnRlZCB0byB1cHBlcmNhc2UuCisgICAgICogQHNlZSAgICAgamF2YS5sYW5nLlN0cmluZyN0b1VwcGVyQ2FzZSgpCisgICAgICogQHNlZSAgICAgamF2YS5sYW5nLlN0cmluZyN0b0xvd2VyQ2FzZSgpCisgICAgICogQHNlZSAgICAgamF2YS5sYW5nLlN0cmluZyN0b0xvd2VyQ2FzZShMb2NhbGUpCisgICAgICogQHNpbmNlICAgMS4xCisgICAgICovCisgICAgcHVibGljIFN0cmluZyB0b1VwcGVyQ2FzZShMb2NhbGUgbG9jYWxlKSB7CisJaWYgKGxvY2FsZSA9PSBudWxsKSB7CisJICAgIHRocm93IG5ldyBOdWxsUG9pbnRlckV4Y2VwdGlvbigpOworICAgICAgICB9CisKKyAgICAgICAgaW50ICAgICBmaXJzdExvd2VyOworCisJLyogTm93IGNoZWNrIGlmIHRoZXJlIGFyZSBhbnkgY2hhcmFjdGVycyB0aGF0IG5lZWQgdG8gYmUgY2hhbmdlZC4gKi8KKwlzY2FuOiB7CisJICAgIGZvciAoZmlyc3RMb3dlciA9IDAgOyBmaXJzdExvd2VyIDwgY291bnQ7ICkgeworCQlpbnQgYyA9IChpbnQpdmFsdWVbb2Zmc2V0K2ZpcnN0TG93ZXJdOworCQlpbnQgc3JjQ291bnQ7CisJCWlmICgoYyA+PSBDaGFyYWN0ZXIuTUlOX0hJR0hfU1VSUk9HQVRFKSAmJgorCQkgICAgKGMgPD0gQ2hhcmFjdGVyLk1BWF9ISUdIX1NVUlJPR0FURSkpIHsKKwkJICAgIGMgPSBjb2RlUG9pbnRBdChmaXJzdExvd2VyKTsKKwkJICAgIHNyY0NvdW50ID0gQ2hhcmFjdGVyLmNoYXJDb3VudChjKTsKKwkJfSBlbHNlIHsKKwkJICAgIHNyY0NvdW50ID0gMTsKKwkJfQorCQlpbnQgdXBwZXJDYXNlQ2hhciA9IENoYXJhY3Rlci50b1VwcGVyQ2FzZUV4KGMpOworCQlpZiAoKHVwcGVyQ2FzZUNoYXIgPT0gQ2hhcmFjdGVyLkVSUk9SKSB8fAorCQkgICAgKGMgIT0gdXBwZXJDYXNlQ2hhcikpIHsKKwkJICAgIGJyZWFrIHNjYW47CisJCX0KKwkJZmlyc3RMb3dlciArPSBzcmNDb3VudDsKKwkgICAgfQorCSAgICByZXR1cm4gdGhpczsKKwl9CisKKyAgICAgICAgY2hhcltdICByZXN1bHQgICAgICAgPSBuZXcgY2hhcltjb3VudF07IC8qIG1heSBncm93ICovCisJaW50ICAgICByZXN1bHRPZmZzZXQgPSAwOyAgLyogcmVzdWx0IG1heSBncm93LCBzbyBpK3Jlc3VsdE9mZnNldAorCQkJCSAgICAqIGlzIHRoZSB3cml0ZSBsb2NhdGlvbiBpbiByZXN1bHQgKi8KKworCS8qIEp1c3QgY29weSB0aGUgZmlyc3QgZmV3IHVwcGVyQ2FzZSBjaGFyYWN0ZXJzLiAqLworCVN5c3RlbS5hcnJheWNvcHkodmFsdWUsIG9mZnNldCwgcmVzdWx0LCAwLCBmaXJzdExvd2VyKTsKKworCVN0cmluZyBsYW5nID0gbG9jYWxlLmdldExhbmd1YWdlKCk7CisJYm9vbGVhbiBsb2NhbGVEZXBlbmRlbnQgPQorICAgICAgICAgICAgKGxhbmcgPT0gInRyIiB8fCBsYW5nID09ICJheiIgfHwgbGFuZyA9PSAibHQiKTsKKyAgICAgICAgY2hhcltdIHVwcGVyQ2hhckFycmF5OworICAgICAgICBpbnQgdXBwZXJDaGFyOworICAgICAgICBpbnQgc3JjQ2hhcjsKKyAgICAgICAgaW50IHNyY0NvdW50OworICAgICAgICBmb3IgKGludCBpID0gZmlyc3RMb3dlcjsgaSA8IGNvdW50OyBpICs9IHNyY0NvdW50KSB7CisJICAgIHNyY0NoYXIgPSAoaW50KXZhbHVlW29mZnNldCtpXTsKKwkgICAgaWYgKChjaGFyKXNyY0NoYXIgPj0gQ2hhcmFjdGVyLk1JTl9ISUdIX1NVUlJPR0FURSAmJgorCSAgICAgICAgKGNoYXIpc3JjQ2hhciA8PSBDaGFyYWN0ZXIuTUFYX0hJR0hfU1VSUk9HQVRFKSB7CisJCXNyY0NoYXIgPSBjb2RlUG9pbnRBdChpKTsKKwkJc3JjQ291bnQgPSBDaGFyYWN0ZXIuY2hhckNvdW50KHNyY0NoYXIpOworCSAgICB9IGVsc2UgeworCSAgICAgICAgc3JjQ291bnQgPSAxOworCSAgICB9CisgICAgICAgICAgICBpZiAobG9jYWxlRGVwZW5kZW50KSB7CisgICAgICAgICAgICAgICAgdXBwZXJDaGFyID0gQ29uZGl0aW9uYWxTcGVjaWFsQ2FzaW5nLnRvVXBwZXJDYXNlRXgodGhpcywgaSwgbG9jYWxlKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgdXBwZXJDaGFyID0gQ2hhcmFjdGVyLnRvVXBwZXJDYXNlRXgoc3JjQ2hhcik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoKHVwcGVyQ2hhciA9PSBDaGFyYWN0ZXIuRVJST1IpIHx8CisgICAgICAgICAgICAgICAgKHVwcGVyQ2hhciA+PSBDaGFyYWN0ZXIuTUlOX1NVUFBMRU1FTlRBUllfQ09ERV9QT0lOVCkpIHsKKyAgICAgICAgICAgICAgICBpZiAodXBwZXJDaGFyID09IENoYXJhY3Rlci5FUlJPUikgeworICAgICAgICAgICAgICAgICAgICBpZiAobG9jYWxlRGVwZW5kZW50KSB7CisgICAgICAgICAgICAgICAgICAgICAgICB1cHBlckNoYXJBcnJheSA9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29uZGl0aW9uYWxTcGVjaWFsQ2FzaW5nLnRvVXBwZXJDYXNlQ2hhckFycmF5KHRoaXMsIGksIGxvY2FsZSk7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICB1cHBlckNoYXJBcnJheSA9IENoYXJhY3Rlci50b1VwcGVyQ2FzZUNoYXJBcnJheShzcmNDaGFyKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoc3JjQ291bnQgPT0gMikgeworCQkgICAgcmVzdWx0T2Zmc2V0ICs9IENoYXJhY3Rlci50b0NoYXJzKHVwcGVyQ2hhciwgcmVzdWx0LCBpICsgcmVzdWx0T2Zmc2V0KSAtIHNyY0NvdW50OworCQkgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgdXBwZXJDaGFyQXJyYXkgPSBDaGFyYWN0ZXIudG9DaGFycyh1cHBlckNoYXIpOworCQl9CisKKyAgICAgICAgICAgICAgICAvKiBHcm93IHJlc3VsdCBpZiBuZWVkZWQgKi8KKyAgICAgICAgICAgICAgICBpbnQgbWFwTGVuID0gdXBwZXJDaGFyQXJyYXkubGVuZ3RoOworCQlpZiAobWFwTGVuID4gc3JjQ291bnQpIHsKKyAgICAgICAgICAgICAgICAgICAgY2hhcltdIHJlc3VsdDIgPSBuZXcgY2hhcltyZXN1bHQubGVuZ3RoICsgbWFwTGVuIC0gc3JjQ291bnRdOworICAgICAgICAgICAgICAgICAgICBTeXN0ZW0uYXJyYXljb3B5KHJlc3VsdCwgMCwgcmVzdWx0MiwgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgIGkgKyByZXN1bHRPZmZzZXQpOworICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSByZXN1bHQyOworCQl9CisgICAgICAgICAgICAgICAgZm9yIChpbnQgeD0wOyB4PG1hcExlbjsgKyt4KSB7CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdFtpK3Jlc3VsdE9mZnNldCt4XSA9IHVwcGVyQ2hhckFycmF5W3hdOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICByZXN1bHRPZmZzZXQgKz0gKG1hcExlbiAtIHNyY0NvdW50KTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgcmVzdWx0W2krcmVzdWx0T2Zmc2V0XSA9IChjaGFyKXVwcGVyQ2hhcjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICByZXR1cm4gbmV3IFN0cmluZygwLCBjb3VudCtyZXN1bHRPZmZzZXQsIHJlc3VsdCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogQ29udmVydHMgYWxsIG9mIHRoZSBjaGFyYWN0ZXJzIGluIHRoaXMgPGNvZGU+U3RyaW5nPC9jb2RlPiB0byB1cHBlcgorICAgICAqIGNhc2UgdXNpbmcgdGhlIHJ1bGVzIG9mIHRoZSBkZWZhdWx0IGxvY2FsZS4gVGhpcyBtZXRob2QgaXMgZXF1aXZhbGVudCB0bworICAgICAqIDxjb2RlPnRvVXBwZXJDYXNlKExvY2FsZS5nZXREZWZhdWx0KCkpPC9jb2RlPi4KKyAgICAgKiA8cD4KKyAgICAgKiBAcmV0dXJuICB0aGUgPGNvZGU+U3RyaW5nPC9jb2RlPiwgY29udmVydGVkIHRvIHVwcGVyY2FzZS4KKyAgICAgKiBAc2VlICAgICBqYXZhLmxhbmcuU3RyaW5nI3RvVXBwZXJDYXNlKExvY2FsZSkKKyAgICAgKi8KKyAgICBwdWJsaWMgU3RyaW5nIHRvVXBwZXJDYXNlKCkgeworICAgICAgICByZXR1cm4gdG9VcHBlckNhc2UoTG9jYWxlLmdldERlZmF1bHQoKSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJucyBhIGNvcHkgb2YgdGhlIHN0cmluZywgd2l0aCBsZWFkaW5nIGFuZCB0cmFpbGluZyB3aGl0ZXNwYWNlCisgICAgICogb21pdHRlZC4KKyAgICAgKiA8cD4KKyAgICAgKiBJZiB0aGlzIDxjb2RlPlN0cmluZzwvY29kZT4gb2JqZWN0IHJlcHJlc2VudHMgYW4gZW1wdHkgY2hhcmFjdGVyCisgICAgICogc2VxdWVuY2UsIG9yIHRoZSBmaXJzdCBhbmQgbGFzdCBjaGFyYWN0ZXJzIG9mIGNoYXJhY3RlciBzZXF1ZW5jZQorICAgICAqIHJlcHJlc2VudGVkIGJ5IHRoaXMgPGNvZGU+U3RyaW5nPC9jb2RlPiBvYmplY3QgYm90aCBoYXZlIGNvZGVzCisgICAgICogZ3JlYXRlciB0aGFuIDxjb2RlPicmIzkyO3UwMDIwJzwvY29kZT4gKHRoZSBzcGFjZSBjaGFyYWN0ZXIpLCB0aGVuIGEKKyAgICAgKiByZWZlcmVuY2UgdG8gdGhpcyA8Y29kZT5TdHJpbmc8L2NvZGU+IG9iamVjdCBpcyByZXR1cm5lZC4KKyAgICAgKiA8cD4KKyAgICAgKiBPdGhlcndpc2UsIGlmIHRoZXJlIGlzIG5vIGNoYXJhY3RlciB3aXRoIGEgY29kZSBncmVhdGVyIHRoYW4KKyAgICAgKiA8Y29kZT4nJiM5Mjt1MDAyMCc8L2NvZGU+IGluIHRoZSBzdHJpbmcsIHRoZW4gYSBuZXcKKyAgICAgKiA8Y29kZT5TdHJpbmc8L2NvZGU+IG9iamVjdCByZXByZXNlbnRpbmcgYW4gZW1wdHkgc3RyaW5nIGlzIGNyZWF0ZWQKKyAgICAgKiBhbmQgcmV0dXJuZWQuCisgICAgICogPHA+CisgICAgICogT3RoZXJ3aXNlLCBsZXQgPGk+azwvaT4gYmUgdGhlIGluZGV4IG9mIHRoZSBmaXJzdCBjaGFyYWN0ZXIgaW4gdGhlCisgICAgICogc3RyaW5nIHdob3NlIGNvZGUgaXMgZ3JlYXRlciB0aGFuIDxjb2RlPicmIzkyO3UwMDIwJzwvY29kZT4sIGFuZCBsZXQKKyAgICAgKiA8aT5tPC9pPiBiZSB0aGUgaW5kZXggb2YgdGhlIGxhc3QgY2hhcmFjdGVyIGluIHRoZSBzdHJpbmcgd2hvc2UgY29kZQorICAgICAqIGlzIGdyZWF0ZXIgdGhhbiA8Y29kZT4nJiM5Mjt1MDAyMCc8L2NvZGU+LiBBIG5ldyA8Y29kZT5TdHJpbmc8L2NvZGU+CisgICAgICogb2JqZWN0IGlzIGNyZWF0ZWQsIHJlcHJlc2VudGluZyB0aGUgc3Vic3RyaW5nIG9mIHRoaXMgc3RyaW5nIHRoYXQKKyAgICAgKiBiZWdpbnMgd2l0aCB0aGUgY2hhcmFjdGVyIGF0IGluZGV4IDxpPms8L2k+IGFuZCBlbmRzIHdpdGggdGhlCisgICAgICogY2hhcmFjdGVyIGF0IGluZGV4IDxpPm08L2k+LXRoYXQgaXMsIHRoZSByZXN1bHQgb2YKKyAgICAgKiA8Y29kZT50aGlzLnN1YnN0cmluZyg8aT5rPC9pPiwmbmJzcDs8aT5tPC9pPisxKTwvY29kZT4uCisgICAgICogPHA+CisgICAgICogVGhpcyBtZXRob2QgbWF5IGJlIHVzZWQgdG8gdHJpbSB3aGl0ZXNwYWNlIChhcyBkZWZpbmVkIGFib3ZlKSBmcm9tCisgICAgICogdGhlIGJlZ2lubmluZyBhbmQgZW5kIG9mIGEgc3RyaW5nLgorICAgICAqCisgICAgICogQHJldHVybiAgQSBjb3B5IG9mIHRoaXMgc3RyaW5nIHdpdGggbGVhZGluZyBhbmQgdHJhaWxpbmcgd2hpdGUKKyAgICAgKiAgICAgICAgICBzcGFjZSByZW1vdmVkLCBvciB0aGlzIHN0cmluZyBpZiBpdCBoYXMgbm8gbGVhZGluZyBvcgorICAgICAqICAgICAgICAgIHRyYWlsaW5nIHdoaXRlIHNwYWNlLgorICAgICAqLworICAgIHB1YmxpYyBTdHJpbmcgdHJpbSgpIHsKKwlpbnQgbGVuID0gY291bnQ7CisJaW50IHN0ID0gMDsKKwlpbnQgb2ZmID0gb2Zmc2V0OyAgICAgIC8qIGF2b2lkIGdldGZpZWxkIG9wY29kZSAqLworCWNoYXJbXSB2YWwgPSB2YWx1ZTsgICAgLyogYXZvaWQgZ2V0ZmllbGQgb3Bjb2RlICovCisKKwl3aGlsZSAoKHN0IDwgbGVuKSAmJiAodmFsW29mZiArIHN0XSA8PSAnICcpKSB7CisJICAgIHN0Kys7CisJfQorCXdoaWxlICgoc3QgPCBsZW4pICYmICh2YWxbb2ZmICsgbGVuIC0gMV0gPD0gJyAnKSkgeworCSAgICBsZW4tLTsKKwl9CisJcmV0dXJuICgoc3QgPiAwKSB8fCAobGVuIDwgY291bnQpKSA/IHN1YnN0cmluZyhzdCwgbGVuKSA6IHRoaXM7CisgICAgfQorCisgICAgLyoqCisgICAgICogVGhpcyBvYmplY3QgKHdoaWNoIGlzIGFscmVhZHkgYSBzdHJpbmchKSBpcyBpdHNlbGYgcmV0dXJuZWQuCisgICAgICoKKyAgICAgKiBAcmV0dXJuICB0aGUgc3RyaW5nIGl0c2VsZi4KKyAgICAgKi8KKyAgICBwdWJsaWMgU3RyaW5nIHRvU3RyaW5nKCkgeworCXJldHVybiB0aGlzOworICAgIH0KKworICAgIC8qKgorICAgICAqIENvbnZlcnRzIHRoaXMgc3RyaW5nIHRvIGEgbmV3IGNoYXJhY3RlciBhcnJheS4KKyAgICAgKgorICAgICAqIEByZXR1cm4gIGEgbmV3bHkgYWxsb2NhdGVkIGNoYXJhY3RlciBhcnJheSB3aG9zZSBsZW5ndGggaXMgdGhlIGxlbmd0aAorICAgICAqICAgICAgICAgIG9mIHRoaXMgc3RyaW5nIGFuZCB3aG9zZSBjb250ZW50cyBhcmUgaW5pdGlhbGl6ZWQgdG8gY29udGFpbgorICAgICAqICAgICAgICAgIHRoZSBjaGFyYWN0ZXIgc2VxdWVuY2UgcmVwcmVzZW50ZWQgYnkgdGhpcyBzdHJpbmcuCisgICAgICovCisgICAgcHVibGljIGNoYXJbXSB0b0NoYXJBcnJheSgpIHsKKwljaGFyIHJlc3VsdFtdID0gbmV3IGNoYXJbY291bnRdOworCWdldENoYXJzKDAsIGNvdW50LCByZXN1bHQsIDApOworCXJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJucyBhIGZvcm1hdHRlZCBzdHJpbmcgdXNpbmcgdGhlIHNwZWNpZmllZCBmb3JtYXQgc3RyaW5nIGFuZAorICAgICAqIGFyZ3VtZW50cy4KKyAgICAgKgorICAgICAqIDxwPiBUaGUgbG9jYWxlIGFsd2F5cyB1c2VkIGlzIHRoZSBvbmUgcmV0dXJuZWQgYnkge0BsaW5rCisgICAgICogamF2YS51dGlsLkxvY2FsZSNnZXREZWZhdWx0KCkgTG9jYWxlLmdldERlZmF1bHQoKX0uCisgICAgICoKKyAgICAgKiBAcGFyYW0gIGZvcm1hdAorICAgICAqICAgICAgICAgQSA8YSBocmVmPSIuLi91dGlsL0Zvcm1hdHRlci5odG1sI3N5bnRheCI+Zm9ybWF0IHN0cmluZzwvYT4KKyAgICAgKgorICAgICAqIEBwYXJhbSAgYXJncworICAgICAqICAgICAgICAgQXJndW1lbnRzIHJlZmVyZW5jZWQgYnkgdGhlIGZvcm1hdCBzcGVjaWZpZXJzIGluIHRoZSBmb3JtYXQKKyAgICAgKiAgICAgICAgIHN0cmluZy4gIElmIHRoZXJlIGFyZSBtb3JlIGFyZ3VtZW50cyB0aGFuIGZvcm1hdCBzcGVjaWZpZXJzLCB0aGUKKyAgICAgKiAgICAgICAgIGV4dHJhIGFyZ3VtZW50cyBhcmUgaWdub3JlZC4gIFRoZSBudW1iZXIgb2YgYXJndW1lbnRzIGlzCisgICAgICogICAgICAgICB2YXJpYWJsZSBhbmQgbWF5IGJlIHplcm8uICBUaGUgbWF4aW11bSBudW1iZXIgb2YgYXJndW1lbnRzIGlzCisgICAgICogICAgICAgICBsaW1pdGVkIGJ5IHRoZSBtYXhpbXVtIGRpbWVuc2lvbiBvZiBhIEphdmEgYXJyYXkgYXMgZGVmaW5lZCBieQorICAgICAqICAgICAgICAgdGhlIDxhIGhyZWY9Imh0dHA6Ly9qYXZhLnN1bi5jb20vZG9jcy9ib29rcy92bXNwZWMvIj5KYXZhCisgICAgICogICAgICAgICBWaXJ0dWFsIE1hY2hpbmUgU3BlY2lmaWNhdGlvbjwvYT4uICBUaGUgYmVoYXZpb3VyIG9uIGEKKyAgICAgKiAgICAgICAgIDx0dD5udWxsPC90dD4gYXJndW1lbnQgZGVwZW5kcyBvbiB0aGUgPGEKKyAgICAgKiAgICAgICAgIGhyZWY9Ii4uL3V0aWwvRm9ybWF0dGVyLmh0bWwjc3ludGF4Ij5jb252ZXJzaW9uPC9hPi4KKyAgICAgKgorICAgICAqIEB0aHJvd3MgIElsbGVnYWxGb3JtYXRFeGNlcHRpb24KKyAgICAgKiAgICAgICAgICBJZiBhIGZvcm1hdCBzdHJpbmcgY29udGFpbnMgYW4gaWxsZWdhbCBzeW50YXgsIGEgZm9ybWF0CisgICAgICogICAgICAgICAgc3BlY2lmaWVyIHRoYXQgaXMgaW5jb21wYXRpYmxlIHdpdGggdGhlIGdpdmVuIGFyZ3VtZW50cywKKyAgICAgKiAgICAgICAgICBpbnN1ZmZpY2llbnQgYXJndW1lbnRzIGdpdmVuIHRoZSBmb3JtYXQgc3RyaW5nLCBvciBvdGhlcgorICAgICAqICAgICAgICAgIGlsbGVnYWwgY29uZGl0aW9ucy4gIEZvciBzcGVjaWZpY2F0aW9uIG9mIGFsbCBwb3NzaWJsZQorICAgICAqICAgICAgICAgIGZvcm1hdHRpbmcgZXJyb3JzLCBzZWUgdGhlIDxhCisgICAgICogICAgICAgICAgaHJlZj0iLi4vdXRpbC9Gb3JtYXR0ZXIuaHRtbCNkZXRhaWwiPkRldGFpbHM8L2E+IHNlY3Rpb24gb2YgdGhlCisgICAgICogICAgICAgICAgZm9ybWF0dGVyIGNsYXNzIHNwZWNpZmljYXRpb24uCisgICAgICoKKyAgICAgKiBAdGhyb3dzICBOdWxsUG9pbnRlckV4Y2VwdGlvbgorICAgICAqICAgICAgICAgIElmIHRoZSA8dHQ+Zm9ybWF0PC90dD4gaXMgPHR0Pm51bGw8L3R0PgorICAgICAqCisgICAgICogQHJldHVybiAgQSBmb3JtYXR0ZWQgc3RyaW5nCisgICAgICoKKyAgICAgKiBAc2VlICBqYXZhLnV0aWwuRm9ybWF0dGVyCisgICAgICogQHNpbmNlICAxLjUKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIFN0cmluZyBmb3JtYXQoU3RyaW5nIGZvcm1hdCwgT2JqZWN0IC4uLiBhcmdzKSB7CisJcmV0dXJuIG5ldyBGb3JtYXR0ZXIoKS5mb3JtYXQoZm9ybWF0LCBhcmdzKS50b1N0cmluZygpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybnMgYSBmb3JtYXR0ZWQgc3RyaW5nIHVzaW5nIHRoZSBzcGVjaWZpZWQgbG9jYWxlLCBmb3JtYXQgc3RyaW5nLAorICAgICAqIGFuZCBhcmd1bWVudHMuCisgICAgICoKKyAgICAgKiBAcGFyYW0gIGwKKyAgICAgKiAgICAgICAgIFRoZSB7QGxpbmtwbGFpbiBqYXZhLnV0aWwuTG9jYWxlIGxvY2FsZX0gdG8gYXBwbHkgZHVyaW5nCisgICAgICogICAgICAgICBmb3JtYXR0aW5nLiAgSWYgPHR0Pmw8L3R0PiBpcyA8dHQ+bnVsbDwvdHQ+IHRoZW4gbm8gbG9jYWxpemF0aW9uCisgICAgICogICAgICAgICBpcyBhcHBsaWVkLgorICAgICAqCisgICAgICogQHBhcmFtICBmb3JtYXQKKyAgICAgKiAgICAgICAgIEEgPGEgaHJlZj0iLi4vdXRpbC9Gb3JtYXR0ZXIuaHRtbCNzeW50YXgiPmZvcm1hdCBzdHJpbmc8L2E+CisgICAgICoKKyAgICAgKiBAcGFyYW0gIGFyZ3MKKyAgICAgKiAgICAgICAgIEFyZ3VtZW50cyByZWZlcmVuY2VkIGJ5IHRoZSBmb3JtYXQgc3BlY2lmaWVycyBpbiB0aGUgZm9ybWF0CisgICAgICogICAgICAgICBzdHJpbmcuICBJZiB0aGVyZSBhcmUgbW9yZSBhcmd1bWVudHMgdGhhbiBmb3JtYXQgc3BlY2lmaWVycywgdGhlCisgICAgICogICAgICAgICBleHRyYSBhcmd1bWVudHMgYXJlIGlnbm9yZWQuICBUaGUgbnVtYmVyIG9mIGFyZ3VtZW50cyBpcworICAgICAqICAgICAgICAgdmFyaWFibGUgYW5kIG1heSBiZSB6ZXJvLiAgVGhlIG1heGltdW0gbnVtYmVyIG9mIGFyZ3VtZW50cyBpcworICAgICAqICAgICAgICAgbGltaXRlZCBieSB0aGUgbWF4aW11bSBkaW1lbnNpb24gb2YgYSBKYXZhIGFycmF5IGFzIGRlZmluZWQgYnkKKyAgICAgKiAgICAgICAgIHRoZSA8YSBocmVmPSJodHRwOi8vamF2YS5zdW4uY29tL2RvY3MvYm9va3Mvdm1zcGVjLyI+SmF2YQorICAgICAqICAgICAgICAgVmlydHVhbCBNYWNoaW5lIFNwZWNpZmljYXRpb248L2E+LiAgVGhlIGJlaGF2aW91ciBvbiBhCisgICAgICogICAgICAgICA8dHQ+bnVsbDwvdHQ+IGFyZ3VtZW50IGRlcGVuZHMgb24gdGhlIDxhCisgICAgICogICAgICAgICBocmVmPSIuLi91dGlsL0Zvcm1hdHRlci5odG1sI3N5bnRheCI+Y29udmVyc2lvbjwvYT4uCisgICAgICoKKyAgICAgKiBAdGhyb3dzICBJbGxlZ2FsRm9ybWF0RXhjZXB0aW9uCisgICAgICogICAgICAgICAgSWYgYSBmb3JtYXQgc3RyaW5nIGNvbnRhaW5zIGFuIGlsbGVnYWwgc3ludGF4LCBhIGZvcm1hdAorICAgICAqICAgICAgICAgIHNwZWNpZmllciB0aGF0IGlzIGluY29tcGF0aWJsZSB3aXRoIHRoZSBnaXZlbiBhcmd1bWVudHMsCisgICAgICogICAgICAgICAgaW5zdWZmaWNpZW50IGFyZ3VtZW50cyBnaXZlbiB0aGUgZm9ybWF0IHN0cmluZywgb3Igb3RoZXIKKyAgICAgKiAgICAgICAgICBpbGxlZ2FsIGNvbmRpdGlvbnMuICBGb3Igc3BlY2lmaWNhdGlvbiBvZiBhbGwgcG9zc2libGUKKyAgICAgKiAgICAgICAgICBmb3JtYXR0aW5nIGVycm9ycywgc2VlIHRoZSA8YQorICAgICAqICAgICAgICAgIGhyZWY9Ii4uL3V0aWwvRm9ybWF0dGVyLmh0bWwjZGV0YWlsIj5EZXRhaWxzPC9hPiBzZWN0aW9uIG9mIHRoZQorICAgICAqICAgICAgICAgIGZvcm1hdHRlciBjbGFzcyBzcGVjaWZpY2F0aW9uCisgICAgICoKKyAgICAgKiBAdGhyb3dzICBOdWxsUG9pbnRlckV4Y2VwdGlvbgorICAgICAqICAgICAgICAgIElmIHRoZSA8dHQ+Zm9ybWF0PC90dD4gaXMgPHR0Pm51bGw8L3R0PgorICAgICAqCisgICAgICogQHJldHVybiAgQSBmb3JtYXR0ZWQgc3RyaW5nCisgICAgICoKKyAgICAgKiBAc2VlICBqYXZhLnV0aWwuRm9ybWF0dGVyCisgICAgICogQHNpbmNlICAxLjUKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIFN0cmluZyBmb3JtYXQoTG9jYWxlIGwsIFN0cmluZyBmb3JtYXQsIE9iamVjdCAuLi4gYXJncykgeworCXJldHVybiBuZXcgRm9ybWF0dGVyKGwpLmZvcm1hdChmb3JtYXQsIGFyZ3MpLnRvU3RyaW5nKCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJucyB0aGUgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSA8Y29kZT5PYmplY3Q8L2NvZGU+IGFyZ3VtZW50LgorICAgICAqCisgICAgICogQHBhcmFtICAgb2JqICAgYW4gPGNvZGU+T2JqZWN0PC9jb2RlPi4KKyAgICAgKiBAcmV0dXJuICBpZiB0aGUgYXJndW1lbnQgaXMgPGNvZGU+bnVsbDwvY29kZT4sIHRoZW4gYSBzdHJpbmcgZXF1YWwgdG8KKyAgICAgKiAgICAgICAgICA8Y29kZT4ibnVsbCI8L2NvZGU+OyBvdGhlcndpc2UsIHRoZSB2YWx1ZSBvZgorICAgICAqICAgICAgICAgIDxjb2RlPm9iai50b1N0cmluZygpPC9jb2RlPiBpcyByZXR1cm5lZC4KKyAgICAgKiBAc2VlICAgICBqYXZhLmxhbmcuT2JqZWN0I3RvU3RyaW5nKCkKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIFN0cmluZyB2YWx1ZU9mKE9iamVjdCBvYmopIHsKKwlyZXR1cm4gKG9iaiA9PSBudWxsKSA/ICJudWxsIiA6IG9iai50b1N0cmluZygpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybnMgdGhlIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGUgPGNvZGU+Y2hhcjwvY29kZT4gYXJyYXkKKyAgICAgKiBhcmd1bWVudC4gVGhlIGNvbnRlbnRzIG9mIHRoZSBjaGFyYWN0ZXIgYXJyYXkgYXJlIGNvcGllZDsgc3Vic2VxdWVudAorICAgICAqIG1vZGlmaWNhdGlvbiBvZiB0aGUgY2hhcmFjdGVyIGFycmF5IGRvZXMgbm90IGFmZmVjdCB0aGUgbmV3bHkKKyAgICAgKiBjcmVhdGVkIHN0cmluZy4KKyAgICAgKgorICAgICAqIEBwYXJhbSAgIGRhdGEgICBhIDxjb2RlPmNoYXI8L2NvZGU+IGFycmF5LgorICAgICAqIEByZXR1cm4gIGEgbmV3bHkgYWxsb2NhdGVkIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIHNhbWUgc2VxdWVuY2Ugb2YKKyAgICAgKiAgICAgICAgICBjaGFyYWN0ZXJzIGNvbnRhaW5lZCBpbiB0aGUgY2hhcmFjdGVyIGFycmF5IGFyZ3VtZW50LgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgU3RyaW5nIHZhbHVlT2YoY2hhciBkYXRhW10pIHsKKwlyZXR1cm4gbmV3IFN0cmluZyhkYXRhKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIHRoZSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYSBzcGVjaWZpYyBzdWJhcnJheSBvZiB0aGUKKyAgICAgKiA8Y29kZT5jaGFyPC9jb2RlPiBhcnJheSBhcmd1bWVudC4KKyAgICAgKiA8cD4KKyAgICAgKiBUaGUgPGNvZGU+b2Zmc2V0PC9jb2RlPiBhcmd1bWVudCBpcyB0aGUgaW5kZXggb2YgdGhlIGZpcnN0CisgICAgICogY2hhcmFjdGVyIG9mIHRoZSBzdWJhcnJheS4gVGhlIDxjb2RlPmNvdW50PC9jb2RlPiBhcmd1bWVudAorICAgICAqIHNwZWNpZmllcyB0aGUgbGVuZ3RoIG9mIHRoZSBzdWJhcnJheS4gVGhlIGNvbnRlbnRzIG9mIHRoZSBzdWJhcnJheQorICAgICAqIGFyZSBjb3BpZWQ7IHN1YnNlcXVlbnQgbW9kaWZpY2F0aW9uIG9mIHRoZSBjaGFyYWN0ZXIgYXJyYXkgZG9lcyBub3QKKyAgICAgKiBhZmZlY3QgdGhlIG5ld2x5IGNyZWF0ZWQgc3RyaW5nLgorICAgICAqCisgICAgICogQHBhcmFtICAgZGF0YSAgICAgdGhlIGNoYXJhY3RlciBhcnJheS4KKyAgICAgKiBAcGFyYW0gICBvZmZzZXQgICB0aGUgaW5pdGlhbCBvZmZzZXQgaW50byB0aGUgdmFsdWUgb2YgdGhlCisgICAgICogICAgICAgICAgICAgICAgICA8Y29kZT5TdHJpbmc8L2NvZGU+LgorICAgICAqIEBwYXJhbSAgIGNvdW50ICAgIHRoZSBsZW5ndGggb2YgdGhlIHZhbHVlIG9mIHRoZSA8Y29kZT5TdHJpbmc8L2NvZGU+LgorICAgICAqIEByZXR1cm4gIGEgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgc2VxdWVuY2Ugb2YgY2hhcmFjdGVycyBjb250YWluZWQKKyAgICAgKiAgICAgICAgICBpbiB0aGUgc3ViYXJyYXkgb2YgdGhlIGNoYXJhY3RlciBhcnJheSBhcmd1bWVudC4KKyAgICAgKiBAZXhjZXB0aW9uIEluZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb24gaWYgPGNvZGU+b2Zmc2V0PC9jb2RlPiBpcworICAgICAqICAgICAgICAgIG5lZ2F0aXZlLCBvciA8Y29kZT5jb3VudDwvY29kZT4gaXMgbmVnYXRpdmUsIG9yCisgICAgICogICAgICAgICAgPGNvZGU+b2Zmc2V0K2NvdW50PC9jb2RlPiBpcyBsYXJnZXIgdGhhbgorICAgICAqICAgICAgICAgIDxjb2RlPmRhdGEubGVuZ3RoPC9jb2RlPi4KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIFN0cmluZyB2YWx1ZU9mKGNoYXIgZGF0YVtdLCBpbnQgb2Zmc2V0LCBpbnQgY291bnQpIHsKKwlyZXR1cm4gbmV3IFN0cmluZyhkYXRhLCBvZmZzZXQsIGNvdW50KTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIGEgU3RyaW5nIHRoYXQgcmVwcmVzZW50cyB0aGUgY2hhcmFjdGVyIHNlcXVlbmNlIGluIHRoZQorICAgICAqIGFycmF5IHNwZWNpZmllZC4KKyAgICAgKgorICAgICAqIEBwYXJhbSAgIGRhdGEgICAgIHRoZSBjaGFyYWN0ZXIgYXJyYXkuCisgICAgICogQHBhcmFtICAgb2Zmc2V0ICAgaW5pdGlhbCBvZmZzZXQgb2YgdGhlIHN1YmFycmF5LgorICAgICAqIEBwYXJhbSAgIGNvdW50ICAgIGxlbmd0aCBvZiB0aGUgc3ViYXJyYXkuCisgICAgICogQHJldHVybiAgYSA8Y29kZT5TdHJpbmc8L2NvZGU+IHRoYXQgY29udGFpbnMgdGhlIGNoYXJhY3RlcnMgb2YgdGhlCisgICAgICogICAgICAgICAgc3BlY2lmaWVkIHN1YmFycmF5IG9mIHRoZSBjaGFyYWN0ZXIgYXJyYXkuCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBTdHJpbmcgY29weVZhbHVlT2YoY2hhciBkYXRhW10sIGludCBvZmZzZXQsIGludCBjb3VudCkgeworCS8vIEFsbCBwdWJsaWMgU3RyaW5nIGNvbnN0cnVjdG9ycyBub3cgY29weSB0aGUgZGF0YS4KKwlyZXR1cm4gbmV3IFN0cmluZyhkYXRhLCBvZmZzZXQsIGNvdW50KTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIGEgU3RyaW5nIHRoYXQgcmVwcmVzZW50cyB0aGUgY2hhcmFjdGVyIHNlcXVlbmNlIGluIHRoZQorICAgICAqIGFycmF5IHNwZWNpZmllZC4KKyAgICAgKgorICAgICAqIEBwYXJhbSAgIGRhdGEgICB0aGUgY2hhcmFjdGVyIGFycmF5LgorICAgICAqIEByZXR1cm4gIGEgPGNvZGU+U3RyaW5nPC9jb2RlPiB0aGF0IGNvbnRhaW5zIHRoZSBjaGFyYWN0ZXJzIG9mIHRoZQorICAgICAqICAgICAgICAgIGNoYXJhY3RlciBhcnJheS4KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIFN0cmluZyBjb3B5VmFsdWVPZihjaGFyIGRhdGFbXSkgeworCXJldHVybiBjb3B5VmFsdWVPZihkYXRhLCAwLCBkYXRhLmxlbmd0aCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJucyB0aGUgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSA8Y29kZT5ib29sZWFuPC9jb2RlPiBhcmd1bWVudC4KKyAgICAgKgorICAgICAqIEBwYXJhbSAgIGIgICBhIDxjb2RlPmJvb2xlYW48L2NvZGU+LgorICAgICAqIEByZXR1cm4gIGlmIHRoZSBhcmd1bWVudCBpcyA8Y29kZT50cnVlPC9jb2RlPiwgYSBzdHJpbmcgZXF1YWwgdG8KKyAgICAgKiAgICAgICAgICA8Y29kZT4idHJ1ZSI8L2NvZGU+IGlzIHJldHVybmVkOyBvdGhlcndpc2UsIGEgc3RyaW5nIGVxdWFsIHRvCisgICAgICogICAgICAgICAgPGNvZGU+ImZhbHNlIjwvY29kZT4gaXMgcmV0dXJuZWQuCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBTdHJpbmcgdmFsdWVPZihib29sZWFuIGIpIHsKKwlyZXR1cm4gYiA/ICJ0cnVlIiA6ICJmYWxzZSI7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJucyB0aGUgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSA8Y29kZT5jaGFyPC9jb2RlPgorICAgICAqIGFyZ3VtZW50LgorICAgICAqCisgICAgICogQHBhcmFtICAgYyAgIGEgPGNvZGU+Y2hhcjwvY29kZT4uCisgICAgICogQHJldHVybiAgYSBzdHJpbmcgb2YgbGVuZ3RoIDxjb2RlPjE8L2NvZGU+IGNvbnRhaW5pbmcKKyAgICAgKiAgICAgICAgICBhcyBpdHMgc2luZ2xlIGNoYXJhY3RlciB0aGUgYXJndW1lbnQgPGNvZGU+YzwvY29kZT4uCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBTdHJpbmcgdmFsdWVPZihjaGFyIGMpIHsKKwljaGFyIGRhdGFbXSA9IHtjfTsKKwlyZXR1cm4gbmV3IFN0cmluZygwLCAxLCBkYXRhKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIHRoZSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhlIDxjb2RlPmludDwvY29kZT4gYXJndW1lbnQuCisgICAgICogPHA+CisgICAgICogVGhlIHJlcHJlc2VudGF0aW9uIGlzIGV4YWN0bHkgdGhlIG9uZSByZXR1cm5lZCBieSB0aGUKKyAgICAgKiA8Y29kZT5JbnRlZ2VyLnRvU3RyaW5nPC9jb2RlPiBtZXRob2Qgb2Ygb25lIGFyZ3VtZW50LgorICAgICAqCisgICAgICogQHBhcmFtICAgaSAgIGFuIDxjb2RlPmludDwvY29kZT4uCisgICAgICogQHJldHVybiAgYSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhlIDxjb2RlPmludDwvY29kZT4gYXJndW1lbnQuCisgICAgICogQHNlZSAgICAgamF2YS5sYW5nLkludGVnZXIjdG9TdHJpbmcoaW50LCBpbnQpCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBTdHJpbmcgdmFsdWVPZihpbnQgaSkgeworICAgICAgICByZXR1cm4gSW50ZWdlci50b1N0cmluZyhpLCAxMCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJucyB0aGUgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSA8Y29kZT5sb25nPC9jb2RlPiBhcmd1bWVudC4KKyAgICAgKiA8cD4KKyAgICAgKiBUaGUgcmVwcmVzZW50YXRpb24gaXMgZXhhY3RseSB0aGUgb25lIHJldHVybmVkIGJ5IHRoZQorICAgICAqIDxjb2RlPkxvbmcudG9TdHJpbmc8L2NvZGU+IG1ldGhvZCBvZiBvbmUgYXJndW1lbnQuCisgICAgICoKKyAgICAgKiBAcGFyYW0gICBsICAgYSA8Y29kZT5sb25nPC9jb2RlPi4KKyAgICAgKiBAcmV0dXJuICBhIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGUgPGNvZGU+bG9uZzwvY29kZT4gYXJndW1lbnQuCisgICAgICogQHNlZSAgICAgamF2YS5sYW5nLkxvbmcjdG9TdHJpbmcobG9uZykKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIFN0cmluZyB2YWx1ZU9mKGxvbmcgbCkgeworICAgICAgICByZXR1cm4gTG9uZy50b1N0cmluZyhsLCAxMCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJucyB0aGUgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSA8Y29kZT5mbG9hdDwvY29kZT4gYXJndW1lbnQuCisgICAgICogPHA+CisgICAgICogVGhlIHJlcHJlc2VudGF0aW9uIGlzIGV4YWN0bHkgdGhlIG9uZSByZXR1cm5lZCBieSB0aGUKKyAgICAgKiA8Y29kZT5GbG9hdC50b1N0cmluZzwvY29kZT4gbWV0aG9kIG9mIG9uZSBhcmd1bWVudC4KKyAgICAgKgorICAgICAqIEBwYXJhbSAgIGYgICBhIDxjb2RlPmZsb2F0PC9jb2RlPi4KKyAgICAgKiBAcmV0dXJuICBhIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGUgPGNvZGU+ZmxvYXQ8L2NvZGU+IGFyZ3VtZW50LgorICAgICAqIEBzZWUgICAgIGphdmEubGFuZy5GbG9hdCN0b1N0cmluZyhmbG9hdCkKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIFN0cmluZyB2YWx1ZU9mKGZsb2F0IGYpIHsKKwlyZXR1cm4gRmxvYXQudG9TdHJpbmcoZik7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJucyB0aGUgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSA8Y29kZT5kb3VibGU8L2NvZGU+IGFyZ3VtZW50LgorICAgICAqIDxwPgorICAgICAqIFRoZSByZXByZXNlbnRhdGlvbiBpcyBleGFjdGx5IHRoZSBvbmUgcmV0dXJuZWQgYnkgdGhlCisgICAgICogPGNvZGU+RG91YmxlLnRvU3RyaW5nPC9jb2RlPiBtZXRob2Qgb2Ygb25lIGFyZ3VtZW50LgorICAgICAqCisgICAgICogQHBhcmFtICAgZCAgIGEgPGNvZGU+ZG91YmxlPC9jb2RlPi4KKyAgICAgKiBAcmV0dXJuICBhICBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhlIDxjb2RlPmRvdWJsZTwvY29kZT4gYXJndW1lbnQuCisgICAgICogQHNlZSAgICAgamF2YS5sYW5nLkRvdWJsZSN0b1N0cmluZyhkb3VibGUpCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBTdHJpbmcgdmFsdWVPZihkb3VibGUgZCkgeworCXJldHVybiBEb3VibGUudG9TdHJpbmcoZCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJucyBhIGNhbm9uaWNhbCByZXByZXNlbnRhdGlvbiBmb3IgdGhlIHN0cmluZyBvYmplY3QuCisgICAgICogPHA+CisgICAgICogQSBwb29sIG9mIHN0cmluZ3MsIGluaXRpYWxseSBlbXB0eSwgaXMgbWFpbnRhaW5lZCBwcml2YXRlbHkgYnkgdGhlCisgICAgICogY2xhc3MgPGNvZGU+U3RyaW5nPC9jb2RlPi4KKyAgICAgKiA8cD4KKyAgICAgKiBXaGVuIHRoZSBpbnRlcm4gbWV0aG9kIGlzIGludm9rZWQsIGlmIHRoZSBwb29sIGFscmVhZHkgY29udGFpbnMgYQorICAgICAqIHN0cmluZyBlcXVhbCB0byB0aGlzIDxjb2RlPlN0cmluZzwvY29kZT4gb2JqZWN0IGFzIGRldGVybWluZWQgYnkKKyAgICAgKiB0aGUge0BsaW5rICNlcXVhbHMoT2JqZWN0KX0gbWV0aG9kLCB0aGVuIHRoZSBzdHJpbmcgZnJvbSB0aGUgcG9vbCBpcworICAgICAqIHJldHVybmVkLiBPdGhlcndpc2UsIHRoaXMgPGNvZGU+U3RyaW5nPC9jb2RlPiBvYmplY3QgaXMgYWRkZWQgdG8gdGhlCisgICAgICogcG9vbCBhbmQgYSByZWZlcmVuY2UgdG8gdGhpcyA8Y29kZT5TdHJpbmc8L2NvZGU+IG9iamVjdCBpcyByZXR1cm5lZC4KKyAgICAgKiA8cD4KKyAgICAgKiBJdCBmb2xsb3dzIHRoYXQgZm9yIGFueSB0d28gc3RyaW5ncyA8Y29kZT5zPC9jb2RlPiBhbmQgPGNvZGU+dDwvY29kZT4sCisgICAgICogPGNvZGU+cy5pbnRlcm4oKSZuYnNwOz09Jm5ic3A7dC5pbnRlcm4oKTwvY29kZT4gaXMgPGNvZGU+dHJ1ZTwvY29kZT4KKyAgICAgKiBpZiBhbmQgb25seSBpZiA8Y29kZT5zLmVxdWFscyh0KTwvY29kZT4gaXMgPGNvZGU+dHJ1ZTwvY29kZT4uCisgICAgICogPHA+CisgICAgICogQWxsIGxpdGVyYWwgc3RyaW5ncyBhbmQgc3RyaW5nLXZhbHVlZCBjb25zdGFudCBleHByZXNzaW9ucyBhcmUKKyAgICAgKiBpbnRlcm5lZC4gU3RyaW5nIGxpdGVyYWxzIGFyZSBkZWZpbmVkIGluICZzZWN0OzMuMTAuNSBvZiB0aGUKKyAgICAgKiA8YSBocmVmPSJodHRwOi8vamF2YS5zdW4uY29tL2RvY3MvYm9va3MvamxzL2h0bWwvIj5KYXZhIExhbmd1YWdlCisgICAgICogU3BlY2lmaWNhdGlvbjwvYT4KKyAgICAgKgorICAgICAqIEByZXR1cm4gIGEgc3RyaW5nIHRoYXQgaGFzIHRoZSBzYW1lIGNvbnRlbnRzIGFzIHRoaXMgc3RyaW5nLCBidXQgaXMKKyAgICAgKiAgICAgICAgICBndWFyYW50ZWVkIHRvIGJlIGZyb20gYSBwb29sIG9mIHVuaXF1ZSBzdHJpbmdzLgorICAgICAqLworICAgIHB1YmxpYyBuYXRpdmUgU3RyaW5nIGludGVybigpOworCit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3JlcG9zaXRvcnlVc2Uvc3JjL3BhY2svQXNzZXJ0UGFyZW50SWQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVwb3NpdG9yeVVzZS9zcmMvcGFjay9Bc3NlcnRQYXJlbnRJZC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVkZTk1ZmEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3JlcG9zaXRvcnlVc2Uvc3JjL3BhY2svQXNzZXJ0UGFyZW50SWQuamF2YQpAQCAtMCwwICsxLDEwIEBACitwYWNrYWdlIHBhY2s7CisKK2ltcG9ydCBqYXZheC5zd2luZy4qOworCitwdWJsaWMgY2xhc3MgQXNzZXJ0UGFyZW50SWQgZXh0ZW5kcyBKUGFuZWx7CisgIGludCBmb28oKXt9CisKKyAgT2JqZWN0IFRFU1QgPSBuZXcgSlBhbmVsKCl7ICB9OworfQorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3JlcG9zaXRvcnlVc2Uvc3JjL3BhY2svTXlDbGFzczIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVwb3NpdG9yeVVzZS9zcmMvcGFjay9NeUNsYXNzMi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJlYjRiY2IKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3JlcG9zaXRvcnlVc2Uvc3JjL3BhY2svTXlDbGFzczIuamF2YQpAQCAtMCwwICsxLDI5IEBACitwYWNrYWdlIHBhY2s7CisKK3B1YmxpYyBjbGFzcyBNeUNsYXNzMiBleHRlbmRzIFN0cmluZyBpbXBsZW1lbnRzIFJ1bm5hYmxleworICAvKioKKyAgICogQGRlcHJlY2F0ZWQKKyAgICovCisgIGludCBmaWVsZDEgPSAwOworCisgIE9iamVjdCBmaWVsZDJbXTsKKworICBqYXZhLmxhbmcuT2JqZWN0W10gZmllbGQzOworCisgIHZvaWQgbWV0aG9kMShpbnRbXSBwMSwgT2JqZWN0IHAyLCBwYWNrIC4gQUFBIHAzLAorCXBhY2sgLiAvKiBjb21tZW50ICovIEFBQSBwNCwKKwlwYWNrIC4gLy8gY29tbWVudAorCUFBQSBwNQorCSkgdGhyb3dzIEV4Y2VwdGlvbiwgamF2YS5pby4gSU9FeGNlcHRpb257CisgIH0KKworICBJbnRlZ2VyIG1ldGhvZDIoKVtdeworICAgIG5ldyBDbG9uZWFibGUoKXsKKyAgICB9OworICAgIGNsYXNzIExvY2FsIGltcGxlbWVudHMgQ2xvbmVhYmxle30KKyAgfQorCisgIE15Q2xhc3MyKCl7fQorCisgIHN0YXRpYyBjbGFzcyBJbm5lcnt9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3JlcG9zaXRvcnlVc2Uvc3JjL3BhY2svTXlJbnRlcmZhY2UxLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3JlcG9zaXRvcnlVc2Uvc3JjL3BhY2svTXlJbnRlcmZhY2UxLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDY1ZDU2MAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVwb3NpdG9yeVVzZS9zcmMvcGFjay9NeUludGVyZmFjZTEuamF2YQpAQCAtMCwwICsxLDYgQEAKK3BhY2thZ2UgcGFjazsKKworaW1wb3J0IGphdmF4LnN3aW5nLio7CisKK3B1YmxpYyBpbnRlcmZhY2UgTXlJbnRlcmZhY2UxeworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXBvc2l0b3J5VXNlL3NyYzE1L2Fubm90YXRlZC9Bbm5vdGF0ZWRDbGFzcy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXBvc2l0b3J5VXNlL3NyYzE1L2Fubm90YXRlZC9Bbm5vdGF0ZWRDbGFzcy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI3Yzg1MjQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3JlcG9zaXRvcnlVc2Uvc3JjMTUvYW5ub3RhdGVkL0Fubm90YXRlZENsYXNzLmphdmEKQEAgLTAsMCArMSw5IEBACitwYWNrYWdlIGFubm90YXRlZDsKKworaW1wb3J0IGFubm90YXRpb25zLio7CisKK0Bhbm5vdGF0aW9ucy5Bbm5vdGF0aW9uVHlwZQorcHVibGljIGNsYXNzIEFubm90YXRlZENsYXNzIHsKKyAgIEBBbm5vdGF0aW9uVHlwZSgiPCIpIHB1YmxpYyB2b2lkIGNvcnJlY3RNZXRob2QoKSB7fQorICAgQHdyb25ncGtnLkFubm90YXRpb25UeXBlIHB1YmxpYyB2b2lkIHdyb25nTWV0aG9kKCkge30KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVwb3NpdG9yeVVzZS9zcmMxNS9hbm5vdGF0ZWQvcGFja2FnZS1pbmZvLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3JlcG9zaXRvcnlVc2Uvc3JjMTUvYW5ub3RhdGVkL3BhY2thZ2UtaW5mby5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQxYmIwNjcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3JlcG9zaXRvcnlVc2Uvc3JjMTUvYW5ub3RhdGVkL3BhY2thZ2UtaW5mby5qYXZhCkBAIC0wLDAgKzEsNCBAQAorQEFubm90YXRpb25UeXBlCitwYWNrYWdlIGFubm90YXRlZDsKKworaW1wb3J0IGFubm90YXRpb25zLio7CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3JlcG9zaXRvcnlVc2Uvc3JjMTUvYW5ub3RhdGlvbnMvQW5ub3RhdGlvblR5cGUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVwb3NpdG9yeVVzZS9zcmMxNS9hbm5vdGF0aW9ucy9Bbm5vdGF0aW9uVHlwZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM0YmZmOWEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3JlcG9zaXRvcnlVc2Uvc3JjMTUvYW5ub3RhdGlvbnMvQW5ub3RhdGlvblR5cGUuamF2YQpAQCAtMCwwICsxLDMgQEAKK3BhY2thZ2UgYW5ub3RhdGlvbnM7CitwdWJsaWMgQGludGVyZmFjZSBBbm5vdGF0aW9uVHlwZSB7Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3JlcG9zaXRvcnlVc2Uvc3JjMTUvYW5ub3RhdGlvbnMvRGVwcmVjYXRlZEFubm90YXRpb24uamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVwb3NpdG9yeVVzZS9zcmMxNS9hbm5vdGF0aW9ucy9EZXByZWNhdGVkQW5ub3RhdGlvbi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBmYTM3ZGMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3JlcG9zaXRvcnlVc2Uvc3JjMTUvYW5ub3RhdGlvbnMvRGVwcmVjYXRlZEFubm90YXRpb24uamF2YQpAQCAtMCwwICsxLDUgQEAKK3BhY2thZ2UgYW5ub3RhdGlvbnM7CitARGVwcmVjYXRlZCBjbGFzcyBEZXByZWNhdGVkQW5ub3RhdGlvbiB7CisgIEBEZXByZWNhdGVkIHZvaWQgZm9vKCkge30KKyAgQERlcHJlY2F0ZWQgaW50IGk7Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3JlcG9zaXRvcnlVc2Uvc3JjMTUvZW51bUltcGxlbWVudHMvTXlFbnVtLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3JlcG9zaXRvcnlVc2Uvc3JjMTUvZW51bUltcGxlbWVudHMvTXlFbnVtLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTY1ODM0ZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVwb3NpdG9yeVVzZS9zcmMxNS9lbnVtSW1wbGVtZW50cy9NeUVudW0uamF2YQpAQCAtMCwwICsxLDUgQEAKK3BhY2thZ2UgZW51bUltcGxlbWVudHM7CisKK2ludGVyZmFjZSBJIHt9CisKK2VudW0gTXlFbnVtIGltcGxlbWVudHMgSSB7fQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXBvc2l0b3J5VXNlL3NyYzE1L2VudW1zL091ckJhc2VJbnRlcmZhY2UuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVwb3NpdG9yeVVzZS9zcmMxNS9lbnVtcy9PdXJCYXNlSW50ZXJmYWNlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWNkZDJmZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVwb3NpdG9yeVVzZS9zcmMxNS9lbnVtcy9PdXJCYXNlSW50ZXJmYWNlLmphdmEKQEAgLTAsMCArMSw0IEBACitwYWNrYWdlIGVudW1zOworCitpbnRlcmZhY2UgT3VyQmFzZUludGVyZmFjZSB7Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3JlcG9zaXRvcnlVc2Uvc3JjMTUvZW51bXMvT3VyRW51bS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXBvc2l0b3J5VXNlL3NyYzE1L2VudW1zL091ckVudW0uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYTQ1YmNkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXBvc2l0b3J5VXNlL3NyYzE1L2VudW1zL091ckVudW0uamF2YQpAQCAtMCwwICsxLDQgQEAKK3BhY2thZ2UgZW51bXM7CisKK2VudW0gT3VyRW51bSB7Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3JlcG9zaXRvcnlVc2Uvc3JjMTUvZW51bXMvT3VyRW51bVdpdGhDb25zdGFudHMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVwb3NpdG9yeVVzZS9zcmMxNS9lbnVtcy9PdXJFbnVtV2l0aENvbnN0YW50cy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFlNTRlMWQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3JlcG9zaXRvcnlVc2Uvc3JjMTUvZW51bXMvT3VyRW51bVdpdGhDb25zdGFudHMuamF2YQpAQCAtMCwwICsxLDUgQEAKK3BhY2thZ2UgZW51bXM7CisKK3B1YmxpYyBlbnVtIE91ckVudW1XaXRoQ29uc3RhbnRzIHsKKyAgQSwgQiwgQzsKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVwb3NpdG9yeVVzZS9zcmMxNS9lbnVtcy9PdXJFbnVtV2l0aENvbnN0YW50c0FuZFN0YXRpY0ZpZWxkcy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXBvc2l0b3J5VXNlL3NyYzE1L2VudW1zL091ckVudW1XaXRoQ29uc3RhbnRzQW5kU3RhdGljRmllbGRzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmIzZGUzZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVwb3NpdG9yeVVzZS9zcmMxNS9lbnVtcy9PdXJFbnVtV2l0aENvbnN0YW50c0FuZFN0YXRpY0ZpZWxkcy5qYXZhCkBAIC0wLDAgKzEsNyBAQAorcGFja2FnZSBlbnVtczsKKworZW51bSBPdXJFbnVtV2l0aENvbnN0YW50c0FuZFN0YXRpY0ZpZWxkcyB7CisgIEEsIEIsIEM7CisKKyAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgQTEgPSAxOworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXBvc2l0b3J5VXNlL3NyYzE1L2VudW1zL091ckVudW1XaXRoQ29uc3RhbnRzQW5kU3RhdGljRmllbGRzMi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXBvc2l0b3J5VXNlL3NyYzE1L2VudW1zL091ckVudW1XaXRoQ29uc3RhbnRzQW5kU3RhdGljRmllbGRzMi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY0MTFmN2YKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3JlcG9zaXRvcnlVc2Uvc3JjMTUvZW51bXMvT3VyRW51bVdpdGhDb25zdGFudHNBbmRTdGF0aWNGaWVsZHMyLmphdmEKQEAgLTAsMCArMSwzOSBAQAorcGFja2FnZSBlbnVtczsKKworcHVibGljIGFic3RyYWN0IGVudW0gT3VyRW51bVdpdGhDb25zdGFudHNBbmRTdGF0aWNGaWVsZHMyIHsKKyAgICBBIHsKKyAgICAgICAgdm9pZCBmb28oKSB7CisgICAgICAgICAgICAvL1RvIGNoYW5nZSBib2R5IG9mIGltcGxlbWVudGVkIG1ldGhvZHMgdXNlIEZpbGUgfCBTZXR0aW5ncyB8IEZpbGUgVGVtcGxhdGVzLgorICAgICAgICB9CisgICAgfSwKKyAgICBCIHsKKyAgICAgICAgdm9pZCBmb28oKSB7CisgICAgICAgICAgICAvL1RvIGNoYW5nZSBib2R5IG9mIGltcGxlbWVudGVkIG1ldGhvZHMgdXNlIEZpbGUgfCBTZXR0aW5ncyB8IEZpbGUgVGVtcGxhdGVzLgorICAgICAgICB9CisKKyAgICB9LAorICAgIEMoMTApCisgICAgOworCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgQTEgPSAxMDsKKyAgICB2b2lkIGZvbygpIHt9CisKKyAgICBwdWJsaWMgT3VyRW51bSgpIHsKKworICAgIH0KKyAgICB7CisgICAgICAgIEVudW08T3VyRW51bT4gYSA9IEE7CisgICAgICAgIE91ckVudW0gdmFsdWUgPSBBOworICAgICAgICBzd2l0Y2godmFsdWUpIHsKKyAgICAgICAgICAgIGNhc2UgQToKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UKKyAgICAgICAgfQorCisgICAgICAgIGludCBpID0gMTA7CisgICAgICAgIHN3aXRjaChpKSB7CisgICAgICAgICAgICBjYXNlIEExCisgICAgICAgIH0KKyAgICB9Cit9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3JlcG9zaXRvcnlVc2Uvc3JjMTUvZW51bXMvT3VyRW51bVdpdGhJbml0aWFsaXplZENvbnN0YW50cy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXBvc2l0b3J5VXNlL3NyYzE1L2VudW1zL091ckVudW1XaXRoSW5pdGlhbGl6ZWRDb25zdGFudHMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZmU0M2FiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXBvc2l0b3J5VXNlL3NyYzE1L2VudW1zL091ckVudW1XaXRoSW5pdGlhbGl6ZWRDb25zdGFudHMuamF2YQpAQCAtMCwwICsxLDEyIEBACitwYWNrYWdlIGVudW1zOworCitwdWJsaWMgZW51bSBPdXJFbnVtV2l0aEluaXRpYWxpemVkQ29uc3RhbnRzIHsKKyAgQSgwKSB7CisgIH0sCisgIEIoMSkgeworICAgICB2b2lkIGZvbyAoKXt9CisgIH0sCisgIEMobmV3IE91ckJhc2VJbnRlcmZhY2UoKSB7fSkgeworICAgICB2b2lkIGZvbyAoKSB7fQorICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3JlcG9zaXRvcnlVc2Uvc3JjMTUvc3RhdGljSW1wb3J0cy9TdGF0aWNJbXBvcnRzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3JlcG9zaXRvcnlVc2Uvc3JjMTUvc3RhdGljSW1wb3J0cy9TdGF0aWNJbXBvcnRzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzA3NzI2OQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVwb3NpdG9yeVVzZS9zcmMxNS9zdGF0aWNJbXBvcnRzL1N0YXRpY0ltcG9ydHMuamF2YQpAQCAtMCwwICsxLDIwIEBACitwYWNrYWdlIHN0YXRpY0ltcG9ydHM7CisKK2ltcG9ydCBqYXZhLnV0aWwuQXJyYXlzOworaW1wb3J0IHN0YXRpYyBqYXZhLnV0aWwuQ29sbGVjdGlvbnMuKjsKK2ltcG9ydCBqYXZhLnV0aWwuQ29sbGVjdGlvbnM7CitpbXBvcnQgc3RhdGljIGphdmEudXRpbC5BcnJheXMuKjsKK2ltcG9ydCBzdGF0aWMgamF2YS51dGlsLkNvbGxlY3Rpb25zLnNvcnQ7CitpbXBvcnQgc3RhdGljIGphdmEudXRpbC5BcnJheXMuc29ydDsKKworcHVibGljIGNsYXNzIFN0YXRpY0ltcG9ydHMgeworICB7CisgICAgc29ydChuZXcgTGlzdCgpKTsKKyAgICBzb3J0KG5ldyBMaXN0PFN0cmluZz4oKSk7CisgICAgc29ydChuZXcgaW50WzI1Nl0pOworICAgIEludGVnZXJbXSB2ID0gbmV3IEludGVnZXJbMjU2XTsKKyAgICBzb3J0KHYpCisgICAgc29ydChhc0xpc3QodikpOworICB9Cit9CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVzb2x2ZS9jbGFzcy9DbGFzc0V4dGVuZHNJdHNJbm5lci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL2NsYXNzL0NsYXNzRXh0ZW5kc0l0c0lubmVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDM5YzU1OQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVzb2x2ZS9jbGFzcy9DbGFzc0V4dGVuZHNJdHNJbm5lci5qYXZhCkBAIC0wLDAgKzEsNyBAQAorY2xhc3MgQSBleHRlbmRzIEEuPHJlZj5Gb28sIEJ7Cit9CisKK2ludGVyZmFjZSBCeworICBzdGF0aWMgY2xhc3MgRm9veworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL2NsYXNzL0NsYXNzRXh0ZW5kc0l0c0lubmVyMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL2NsYXNzL0NsYXNzRXh0ZW5kc0l0c0lubmVyMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM1ZTBmNGYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvY2xhc3MvQ2xhc3NFeHRlbmRzSXRzSW5uZXIxLmphdmEKQEAgLTAsMCArMSw3IEBACitjbGFzcyBBIGV4dGVuZHMgQi48cmVmPkZvbyBpbXBsZW1lbnRzIEJ7Cit9CisKK2ludGVyZmFjZSBCeworICBzdGF0aWMgY2xhc3MgRm9veworICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvY2xhc3MvQ2xhc3NFeHRlbmRzSXRzSW5uZXIyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvY2xhc3MvQ2xhc3NFeHRlbmRzSXRzSW5uZXIyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDI1MjQwMwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVzb2x2ZS9jbGFzcy9DbGFzc0V4dGVuZHNJdHNJbm5lcjIuamF2YQpAQCAtMCwwICsxLDMgQEAKK3B1YmxpYyBjbGFzcyBUVFQgaW1wbGVtZW50cyA8cmVmPkJhcnsKKyAgc3RhdGljIGludGVyZmFjZSBCYXJ7fQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL2NsYXNzL0ZRTmFtZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL2NsYXNzL0ZRTmFtZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJhM2JjMWQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvY2xhc3MvRlFOYW1lLmphdmEKQEAgLTAsMCArMSwzIEBACitjbGFzcyBUZXN0eworICB2b2lkIGZvbygpIHRocm93cyBqYXZhLmlvLjxyZWY+SU9FeGNlcHRpb257fQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVzb2x2ZS9jbGFzcy9JbXBvcnRDb25mbGljdDEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVzb2x2ZS9jbGFzcy9JbXBvcnRDb25mbGljdDEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43M2VhNjdkNAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVzb2x2ZS9jbGFzcy9JbXBvcnRDb25mbGljdDEuamF2YQpAQCAtMCwwICsxLDggQEAKK2ltcG9ydCBqYXZhLnNxbC4qOworaW1wb3J0IGphdmEudXRpbC4qOworCitwdWJsaWMgY2xhc3MgSW1wbW9ydENvbmZsaWN0MXsKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKXsKKyAgICAgICAgPHJlZj5EYXRlIGQgPSBuZXcgRGF0ZSgpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVzb2x2ZS9jbGFzcy9JbXBvcnRDb25mbGljdDIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVzb2x2ZS9jbGFzcy9JbXBvcnRDb25mbGljdDIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NTNjZjEzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL2NsYXNzL0ltcG9ydENvbmZsaWN0Mi5qYXZhCkBAIC0wLDAgKzEsOCBAQAoraW1wb3J0IGphdmEuc3FsLio7CitpbXBvcnQgamF2YS51dGlsLkRhdGU7CisKK3B1YmxpYyBjbGFzcyBJbXBvcnRDb25mbGljdDJ7CisgICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncyl7CisgICAgICAgIDxyZWY+RGF0ZSBkID0gbmV3IERhdGUoKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvY2xhc3MvSW5uZXJQcml2YXRlTWVtYmVyMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL2NsYXNzL0lubmVyUHJpdmF0ZU1lbWJlcjEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZDg3MjgxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL2NsYXNzL0lubmVyUHJpdmF0ZU1lbWJlcjEuamF2YQpAQCAtMCwwICsxLDggQEAKK2NsYXNzIEN7CisgIHZvaWQgZm9vKCl7CisgICAgY2xhc3MgQXsKKyAgICAgIDxyZWY+QiBiID0gbnVsbDsKKyAgICAgIHByaXZhdGUgY2xhc3MgQnt9OworICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVzb2x2ZS9jbGFzcy9Mb2NhbHMxLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvY2xhc3MvTG9jYWxzMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUzZjUzZDUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvY2xhc3MvTG9jYWxzMS5qYXZhCkBAIC0wLDAgKzEsNyBAQAorY2xhc3MgQXsKKyB7CisgIGNsYXNzIEJ7fQorCisgIG5ldyA8cmVmPkIoKTsKKyB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL2NsYXNzL0xvY2FsczIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVzb2x2ZS9jbGFzcy9Mb2NhbHMyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTMwMGYzMQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVzb2x2ZS9jbGFzcy9Mb2NhbHMyLmphdmEKQEAgLTAsMCArMSw5IEBACitjbGFzcyBBeworIHsKKyAgY2xhc3MgQnsKKyAgICA8cmVmPkIgYjsKKyAgfQorCisgIG5ldyBCKCk7CisgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVzb2x2ZS9jbGFzcy9Nb2R1bGVTb3VyY2VBc0xpYnJhcnlDbGFzc2VzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvY2xhc3MvTW9kdWxlU291cmNlQXNMaWJyYXJ5Q2xhc3Nlcy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhjMzc5YWUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvY2xhc3MvTW9kdWxlU291cmNlQXNMaWJyYXJ5Q2xhc3Nlcy5qYXZhCkBAIC0wLDAgKzEsMyBAQAorcHVibGljIGNsYXNzIE1vZHVsZVNvdXJjZUFzTGlicmFyeUNsYXNzZXMgeworICA8cmVmPk1vZHVsZVNvdXJjZUFzTGlicmFyeUNsYXNzZXNEZXAgZmllbGQ7Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvY2xhc3MvTW9kdWxlU291cmNlQXNMaWJyYXJ5Q2xhc3Nlc0RlcC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL2NsYXNzL01vZHVsZVNvdXJjZUFzTGlicmFyeUNsYXNzZXNEZXAuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZjZiMGNhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL2NsYXNzL01vZHVsZVNvdXJjZUFzTGlicmFyeUNsYXNzZXNEZXAuamF2YQpAQCAtMCwwICsxLDE2IEBACisvKgorICogQ29weXJpZ2h0IDIwMDAtMjAxMiBKZXRCcmFpbnMgcy5yLm8uCisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcHVibGljIGNsYXNzIE1vZHVsZVNvdXJjZUFzTGlicmFyeUNsYXNzZXNEZXAge30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVzb2x2ZS9jbGFzcy9Nb2R1bGVTb3VyY2VBc0xpYnJhcnlTb3VyY2UuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVzb2x2ZS9jbGFzcy9Nb2R1bGVTb3VyY2VBc0xpYnJhcnlTb3VyY2UuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZTc0ODJjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL2NsYXNzL01vZHVsZVNvdXJjZUFzTGlicmFyeVNvdXJjZS5qYXZhCkBAIC0wLDAgKzEsMyBAQAorcHVibGljIGNsYXNzIE1vZHVsZVNvdXJjZUFzTGlicmFyeVNvdXJjZSB7CisgIDxyZWY+TW9kdWxlU291cmNlQXNMaWJyYXJ5U291cmNlRGVwIGZpZWxkOworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL2NsYXNzL01vZHVsZVNvdXJjZUFzTGlicmFyeVNvdXJjZURlcC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL2NsYXNzL01vZHVsZVNvdXJjZUFzTGlicmFyeVNvdXJjZURlcC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc4YThiMDgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvY2xhc3MvTW9kdWxlU291cmNlQXNMaWJyYXJ5U291cmNlRGVwLmphdmEKQEAgLTAsMCArMSBAQAorcHVibGljIGNsYXNzIE1vZHVsZVNvdXJjZUFzTGlicmFyeVNvdXJjZURlcCB7fQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL2NsYXNzL1ByaXZhdGVJbkV4dGVuZHMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVzb2x2ZS9jbGFzcy9Qcml2YXRlSW5FeHRlbmRzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWE5ZTg2OAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVzb2x2ZS9jbGFzcy9Qcml2YXRlSW5FeHRlbmRzLmphdmEKQEAgLTAsMCArMSw1IEBACitjbGFzcyBBeworcHJpdmF0ZSBzdGF0aWMgY2xhc3MgQnt9Cit9CisKK2NsYXNzIEMgZXh0ZW5kcyBBLjxyZWY+Qnt9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL2NsYXNzL1FOZXcxLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvY2xhc3MvUU5ldzEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNzk3ODRhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL2NsYXNzL1FOZXcxLmphdmEKQEAgLTAsMCArMSwxMCBAQAorY2xhc3MgQSB7CisgIHsKKyAgICBPdXRlciBvdXRlcjsKKyAgICBvdXRlci5uZXcgPHJlZj5Jbm5lcigpOworICB9Cit9CisKK2NsYXNzIE91dGVyeworICBjbGFzcyBJbm5lcnt9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL2NsYXNzL1FOZXcyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvY2xhc3MvUU5ldzIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MzdiYzEyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL2NsYXNzL1FOZXcyLmphdmEKQEAgLTAsMCArMSwxMCBAQAorY2xhc3MgQSB7CisgIHsKKyAgICBPdXRlciBvdXRlcjsKKyAgICBvdXRlci5uZXcgPHJlZj5Jbm5lcigpe307CisgIH0KK30KKworY2xhc3MgT3V0ZXJ7CisgIGNsYXNzIElubmVye30KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvY2xhc3MvU0NSNDAzMzIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVzb2x2ZS9jbGFzcy9TQ1I0MDMzMi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAzNDI3NWIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvY2xhc3MvU0NSNDAzMzIuamF2YQpAQCAtMCwwICsxLDQgQEAKK2NsYXNzIEM8VD4ge30KK2NsYXNzIENDIGV4dGVuZHMgQzw8cmVmPklubmVyPiB7CisgICAgc3RhdGljIGNsYXNzIElubmVyIHsgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVzb2x2ZS9jbGFzcy9TaGFkb3dpbmcuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVzb2x2ZS9jbGFzcy9TaGFkb3dpbmcuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MzFkZTIwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL2NsYXNzL1NoYWRvd2luZy5qYXZhCkBAIC0wLDAgKzEsMTMgQEAKK2ludGVyZmFjZSBBIHsKKyAgIGNsYXNzIEVudHJ5IHt9Cit9CisKK2NsYXNzIEIgaW1wbGVtZW50cyBBIHsKKyAgICBwcml2YXRlIGNsYXNzIEVudHJ5IHt9Cit9CisKKworY2xhc3MgQyBleHRlbmRzIEIgeworICAgIHN0YXRpYyB2b2lkIGZvbyg8cmVmPkVudHJ5IGUpeworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvY2xhc3MvU3RhdGljSW1wb3J0SW5UaGVTYW1lQ2xhc3MuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVzb2x2ZS9jbGFzcy9TdGF0aWNJbXBvcnRJblRoZVNhbWVDbGFzcy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFiNDBkN2QKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvY2xhc3MvU3RhdGljSW1wb3J0SW5UaGVTYW1lQ2xhc3MuamF2YQpAQCAtMCwwICsxLDUgQEAKK2ltcG9ydCBzdGF0aWMgRm9vLio7CisKK2NsYXNzIEZvbyBpbXBsZW1lbnRzIDxyZWY+QmFyMSwgQmFyMiwgQmFyMywgQmFyNCwgQmFyNSwgQmFyNiwgQmFyNywgQmFyOCwgQmFyOSwgQmFyMTAsIEJhcjExLCBCYXIxMiwgQmFyMTMsIEJhcjE0IHsKKworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVzb2x2ZS9jbGFzcy9TdGF0aWNJbXBvcnROZXR3b3JrLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvY2xhc3MvU3RhdGljSW1wb3J0TmV0d29yay5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcxOWJmODMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvY2xhc3MvU3RhdGljSW1wb3J0TmV0d29yay5qYXZhCkBAIC0wLDAgKzEsNiBAQAoraW1wb3J0IHN0YXRpYyBGb28xLio7CitpbXBvcnQgc3RhdGljIEZvbzAuKjsKK2ltcG9ydCBzdGF0aWMgRm9vMy4qOworaW1wb3J0IHN0YXRpYyBGb28uKjsKKworY2xhc3MgRm9vIGV4dGVuZHMgPHJlZj5CYXIge30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvY2xhc3MvU3RhdGljSW1wb3J0VnNJbXBsaWNpdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL2NsYXNzL1N0YXRpY0ltcG9ydFZzSW1wbGljaXQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MmFhY2YxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL2NsYXNzL1N0YXRpY0ltcG9ydFZzSW1wbGljaXQuamF2YQpAQCAtMCwwICsxLDEyIEBACitpbXBvcnQgc3RhdGljIE91dGVyLkRvdWJsZTsKKworY2xhc3MgT3V0ZXIgeworICAgIHN0YXRpYyBjbGFzcyBEb3VibGUgeworICAgIH0KK30KKworY2xhc3MgU3RhdGljSW1wb3J0VGVzdCB7CisgICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgeworICAgICAgICA8cmVmPkRvdWJsZSBkOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvY2xhc3MvVHdvTW9kdWxlcy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL2NsYXNzL1R3b01vZHVsZXMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NzQyNTEyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL2NsYXNzL1R3b01vZHVsZXMuamF2YQpAQCAtMCwwICsxLDQgQEAKK2NsYXNzIFR3b01vZHVsZXMgeworCisgIDxyZWY+U3JjIHNyYzsKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVzb2x2ZS9jbGFzcy9Ud29Nb2R1bGVzMi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL2NsYXNzL1R3b01vZHVsZXMyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTFkMmVkMQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVzb2x2ZS9jbGFzcy9Ud29Nb2R1bGVzMi5qYXZhCkBAIC0wLDAgKzEsNCBAQAorY2xhc3MgVHdvTW9kdWxlczIgeworCisgIDxyZWY+VGVzdCB0ZXN0OworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL2NsYXNzL1ZhckluTmV3LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvY2xhc3MvVmFySW5OZXcuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45N2U1N2E0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL2NsYXNzL1ZhckluTmV3LmphdmEKQEAgLTAsMCArMSw1IEBACitjbGFzcyBzIHsKKyAgcHVibGljIHN0YXRpYyBmaW5hbCByZXBlYXQgUkVQRUFUID0gbmV3IDxyZWY+cmVwZWF0KCk7CisgIGJvb2xlYW4gcmVwZWF0ID0gZmFsc2U7CisgIHN0YXRpYyBjbGFzcyByZXBlYXQge30KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvY2xhc3MvVmFySW5OZXcxLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvY2xhc3MvVmFySW5OZXcxLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDNkNDU4MgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVzb2x2ZS9jbGFzcy9WYXJJbk5ldzEuamF2YQpAQCAtMCwwICsxLDUgQEAKK2NsYXNzIHMgeworICBwdWJsaWMgc3RhdGljIGZpbmFsIHJlcGVhdCBSRVBFQVQgPSBuZXcgPHJlZj5yZXBlYXQoKXt9OworICBib29sZWFuIHJlcGVhdCA9IGZhbHNlOworICBzdGF0aWMgY2xhc3MgcmVwZWF0IHt9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL2NsYXNzL2RlcGVuZGVudE1vZHVsZS9zcmMvU3JjLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvY2xhc3MvZGVwZW5kZW50TW9kdWxlL3NyYy9TcmMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZTBiNDhlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL2NsYXNzL2RlcGVuZGVudE1vZHVsZS9zcmMvU3JjLmphdmEKQEAgLTAsMCArMSBAQAorY2xhc3MgU3JjIHt9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvY2xhc3MvZGVwZW5kZW50TW9kdWxlL3Rlc3QvVGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL2NsYXNzL2RlcGVuZGVudE1vZHVsZS90ZXN0L1Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZjIyYTY5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL2NsYXNzL2RlcGVuZGVudE1vZHVsZS90ZXN0L1Rlc3QuamF2YQpAQCAtMCwwICsxIEBACitjbGFzcyBUZXN0IHt9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvY29kZUZyYWdtZW50L0xvY2FsVmFyaWFibGUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVzb2x2ZS9jb2RlRnJhZ21lbnQvTG9jYWxWYXJpYWJsZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEyZWU3MmIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvY29kZUZyYWdtZW50L0xvY2FsVmFyaWFibGUuamF2YQpAQCAtMCwwICsxLDYgQEAKK3B1YmxpYyBjbGFzcyBUZXN0IHsKKyAgcHVibGljIHZvaWQgZm9vKCkgeworICAgIGludCBpID0gMDsKKyAgICBTeXN0ZW0ub3V0LnByaW50bG4oPHJlZj5pKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVzb2x2ZS9maWxlUGF0aC9DLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvZmlsZVBhdGgvQy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY5Mjk3NGQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvZmlsZVBhdGgvQy5qYXZhCkBAIC0wLDAgKzEsMyBAQAorY2xhc3MgQyB7CisgIFN0cmluZyBzID0gIi94L3kvTXlDbGFzcy5qYXZhPGNhcmV0PiI7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL2ZpbGVQYXRoL0MyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvZmlsZVBhdGgvQzIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ODQwZGRjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL2ZpbGVQYXRoL0MyLmphdmEKQEAgLTAsMCArMSwzIEBACitjbGFzcyBDIHsKKyAgU3RyaW5nIHMgPSAieC88Y2FyZXQ+TXlGaWxlLnR4dCI7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL2ZpbGVQYXRoL3gvTXlGaWxlLnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVzb2x2ZS9maWxlUGF0aC94L015RmlsZS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmRkMmY3MwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVzb2x2ZS9maWxlUGF0aC94L015RmlsZS50eHQKQEAgLTAsMCArMSBAQAoreHh4eHh4eHh4eHh4eApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVzb2x2ZS9maWxlUGF0aC94L3kvTXlDbGFzcy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL2ZpbGVQYXRoL3gveS9NeUNsYXNzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTJkM2E2MQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVzb2x2ZS9maWxlUGF0aC94L3kvTXlDbGFzcy5qYXZhCkBAIC0wLDAgKzEgQEAKKy8veHh4eHh4eHh4ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL2luZmVyZW5jZS9Cb3VuZENvbXBvc2l0aW9uLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvaW5mZXJlbmNlL0JvdW5kQ29tcG9zaXRpb24uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYjUwNGU1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL2luZmVyZW5jZS9Cb3VuZENvbXBvc2l0aW9uLmphdmEKQEAgLTAsMCArMSw3IEBACisKK2NsYXNzIFRlc3QgIHsKKyBwcml2YXRlIHN0YXRpYyB2b2lkIHAoIENsYXNzPD8gZXh0ZW5kcyBPYmplY3Q+IGNsICkKKyB7CisgICAgY2wuPHJlZj5nZXRTdXBlcmNsYXNzKCk7CisgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVzb2x2ZS9pbmZlcmVuY2UvSW5mZXJBdXRvYm94ZWQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVzb2x2ZS9pbmZlcmVuY2UvSW5mZXJBdXRvYm94ZWQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZWMwOTE0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL2luZmVyZW5jZS9JbmZlckF1dG9ib3hlZC5qYXZhCkBAIC0wLDAgKzEsOSBAQAorY2xhc3MgQyB7CisgIDxWPiBWIG0oViB2KSB7CisgICAgICByZXR1cm4gbnVsbDsKKyAgfQorCisgICAgdm9pZCBuICgpIHsKKyAgICAgICA8cmVmPm0oMTApOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvaW5mZXJlbmNlL0luZmVySW5Bc3NpZ24xLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvaW5mZXJlbmNlL0luZmVySW5Bc3NpZ24xLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzFkYTQxYQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVzb2x2ZS9pbmZlcmVuY2UvSW5mZXJJbkFzc2lnbjEuamF2YQpAQCAtMCwwICsxLDE4IEBACitwdWJsaWMgY2xhc3MgU2VxPFQ+IHsKKyAgICBwdWJsaWMgU2VxKCkge30KKworICAgIHB1YmxpYyBTZXEoVCB4LCBTZXE8VD4geHMpIHsKKyAgICB9CisKKyAgICBzdGF0aWMgPFQ+IFNlcTxUPiBuaWwgKCkgeworICAgICAgICByZXR1cm4gbmV3IFNlcTxUPiAoKTsKKyAgICB9CisKKyAgICBzdGF0aWMgPFY+IFNlcTxWPiBjb25zIChWIHgsIFNlcTxWPiB4cykgeworICAgICAgICByZXR1cm4gbmV3IFNlcTxWPiAoeCwgeHMpOworICAgIH0KKworICAgIHN0YXRpYyB2b2lkIGZvbygpIHsKKyAgICAgICAgU2VxPFN0cmluZz4gbiA9IDxyZWY+bmlsKCk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVzb2x2ZS9pbmZlcmVuY2UvSW5mZXJJbkFzc2lnbjIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVzb2x2ZS9pbmZlcmVuY2UvSW5mZXJJbkFzc2lnbjIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNGJjNzQwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL2luZmVyZW5jZS9JbmZlckluQXNzaWduMi5qYXZhCkBAIC0wLDAgKzEsMTggQEAKK3B1YmxpYyBjbGFzcyBTZXE8VD4geworICAgIHB1YmxpYyBTZXEoKSB7fQorCisgICAgcHVibGljIFNlcShUIHgsIFNlcTxUPiB4cykgeworICAgIH0KKworICAgIHN0YXRpYyA8VD4gU2VxPFQ+IG5pbCAoKSB7CisgICAgICAgIHJldHVybiBuZXcgU2VxPFQ+ICgpOworICAgIH0KKworICAgIHN0YXRpYyA8Vj4gU2VxPFY+IGNvbnMgKFYgeCwgU2VxPFY+IHhzKSB7CisgICAgICAgIHJldHVybiBuZXcgU2VxPFY+ICh4LCB4cyk7CisgICAgfQorCisgICAgc3RhdGljIHZvaWQgZm9vKCkgeworICAgICAgICBTZXE8U3RyaW5nPiBzID0gPHJlZj5jb25zKCJhYmMiLCBuaWwoKSk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVzb2x2ZS9pbmZlcmVuY2UvSW5mZXJJbkNhbGwxLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvaW5mZXJlbmNlL0luZmVySW5DYWxsMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhlZTA3MGYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvaW5mZXJlbmNlL0luZmVySW5DYWxsMS5qYXZhCkBAIC0wLDAgKzEsMjAgQEAKK3B1YmxpYyBjbGFzcyBTZXE8VD4geworICAgIHB1YmxpYyBTZXEoKSB7fQorCisgICAgcHVibGljIFNlcShUIHgsIFNlcTxUPiB4cykgeworICAgIH0KKworICAgIHN0YXRpYyA8VD4gU2VxPFQ+IG5pbCAoKSB7CisgICAgICAgIHJldHVybiBuZXcgU2VxPFQ+ICgpOworICAgIH0KKworICAgIHN0YXRpYyA8Vj4gU2VxPFY+IGNvbnMgKFYgeCwgU2VxPFY+IHhzKSB7CisgICAgICAgIHJldHVybiBuZXcgU2VxPFY+ICh4LCB4cyk7CisgICAgfQorCisgICAgc3RhdGljIHZvaWQgZm9vIChTZXE8U3RyaW5nPiBzZXEpIHt9CisKKyAgICBzdGF0aWMgdm9pZCBmb28oKSB7CisgICAgICAgIGZvbyg8cmVmPm5pbCgpKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL2luZmVyZW5jZS9JbmZlckluQ2FzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL2luZmVyZW5jZS9JbmZlckluQ2FzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUwZjc3MGMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvaW5mZXJlbmNlL0luZmVySW5DYXN0LmphdmEKQEAgLTAsMCArMSwxOCBAQAorcHVibGljIGNsYXNzIFNlcTxUPiB7CisgICAgcHVibGljIFNlcSgpIHt9CisKKyAgICBwdWJsaWMgU2VxKFQgeCwgU2VxPFQ+IHhzKSB7CisgICAgfQorCisgICAgc3RhdGljIDxUPiBTZXE8VD4gbmlsICgpIHsKKyAgICAgICAgcmV0dXJuIG5ldyBTZXE8VD4gKCk7CisgICAgfQorCisgICAgc3RhdGljIDxWPiBTZXE8Vj4gY29ucyAoViB4LCBTZXE8Vj4geHMpIHsKKyAgICAgICAgcmV0dXJuIG5ldyBTZXE8Vj4gKHgsIHhzKTsKKyAgICB9CisKKyAgICBzdGF0aWMgdm9pZCBmb28oKSB7CisgICAgICAgIChTZXE8U3RyaW5nPik8cmVmPm5pbCgpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvaW5mZXJlbmNlL0luZmVySW5QYXJhbXNPbmx5LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvaW5mZXJlbmNlL0luZmVySW5QYXJhbXNPbmx5LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGMyZGRhMwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVzb2x2ZS9pbmZlcmVuY2UvSW5mZXJJblBhcmFtc09ubHkuamF2YQpAQCAtMCwwICsxLDExIEBACitjbGFzcyBDIHsKKyAgICBjbGFzcyBJIHt9CisgICAgY2xhc3MgQSBleHRlbmRzIEkge30KKyAgICBjbGFzcyBCIGV4dGVuZHMgSSB7fQorCisgICAgPFQ+IFQgZihUIHQxLCBUIHQyKSB7cmV0dXJuIG51bGw7fQorCisgICAgdm9pZCBmb28gKCkgeworICAgICAgICBPYmplY3QgbyA9IDxyZWY+ZiAobmV3IEEoKSwgbmV3IEIgKCkpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvaW5mZXJlbmNlL0luZmVySW5SZXR1cm4uamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVzb2x2ZS9pbmZlcmVuY2UvSW5mZXJJblJldHVybi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRhOTA5OGQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvaW5mZXJlbmNlL0luZmVySW5SZXR1cm4uamF2YQpAQCAtMCwwICsxLDkgQEAKK3B1YmxpYyBjbGFzcyBDIDxUPiB7CisgIDxUPiBUIGZvbyAoKSB7cmV0dXJuIG51bGw7fQorCisgIGNsYXNzIFN1YiB7CisgICAgVCBmb28gKCkgeworICAgICAgcmV0dXJuIEMudGhpcy48cmVmPmZvbygpOworICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVzb2x2ZS9pbmZlcmVuY2UvSW5mZXJJblN1cGVyQXNzaWdubWVudC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL2luZmVyZW5jZS9JbmZlckluU3VwZXJBc3NpZ25tZW50LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzc5YmM3NwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVzb2x2ZS9pbmZlcmVuY2UvSW5mZXJJblN1cGVyQXNzaWdubWVudC5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKK2NsYXNzIEE8VD4ge30KK2NsYXNzIEI8VD4gZXh0ZW5kcyBBPFQ+IHt9CisKK2NsYXNzIEMgeworICAgIDxUPiBCPFQ+IGYoKSB7cmV0dXJuIG51bGw7fQorCisgICAgdm9pZCBiYXIgKCkgeworICAgICAgICBBPFN0cmluZz4gYSA9IDxyZWY+ZigpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvaW5mZXJlbmNlL0luZmVyTm90TnVsbC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL2luZmVyZW5jZS9JbmZlck5vdE51bGwuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZTRjYmFlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL2luZmVyZW5jZS9JbmZlck5vdE51bGwuamF2YQpAQCAtMCwwICsxLDEzIEBACitpbXBvcnQgamF2YS51dGlsLio7CisKKworY2xhc3MgU29ydGVkTGlzdDxFIGV4dGVuZHMgQ29tcGFyYWJsZT4gZXh0ZW5kcyBBcnJheUxpc3Q8RT4KK3sKKyAgcHVibGljIHN0YXRpYyA8VD4gVCBiaW5hcnlTZWFyY2goTGlzdDw/IGV4dGVuZHMgQ29tcGFyYWJsZTw/IHN1cGVyIFQ+PiBsaXN0LCBUIGtleSkgeworICAgIHJldHVybiBudWxsOworICB9CisKKyAgcHVibGljIGJvb2xlYW4gYWRkKEUgZSl7CisgICAgICA8cmVmPmJpbmFyeVNlYXJjaCh0aGlzLGUpOyAvL2luZmVyIEUKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVzb2x2ZS9pbmZlcmVuY2UvSW5mZXJQcmltaXRpdmVBcnJheS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL2luZmVyZW5jZS9JbmZlclByaW1pdGl2ZUFycmF5LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmMyZmM2NgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVzb2x2ZS9pbmZlcmVuY2UvSW5mZXJQcmltaXRpdmVBcnJheS5qYXZhCkBAIC0wLDAgKzEsMTIgQEAKK2NsYXNzIExpc3Q8VD4ge30KKworY2xhc3MgVGVzdCB7CisgICAgPFQ+IFQgZXh0cmFjdChMaXN0PFQ+IGwpIHsKKyAgICAgICAgcmV0dXJuIG51bGw7CisgICAgfQorICAgIAorICAgIHZvaWQgZm9vIChMaXN0PGRvdWJsZVtdPiBsKSB7CisgICAgICAgPHJlZj5leHRyYWN0KGwpOworICAgIH0KK30KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL2luZmVyZW5jZS9JbmZlclJhd1R5cGUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVzb2x2ZS9pbmZlcmVuY2UvSW5mZXJSYXdUeXBlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzI1MmU4MQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVzb2x2ZS9pbmZlcmVuY2UvSW5mZXJSYXdUeXBlLmphdmEKQEAgLTAsMCArMSwxMCBAQAorY2xhc3MgRzxUPiB7fQorCitwdWJsaWMgY2xhc3MgQyB7CisKKyAgICA8VD4gVCBmIChHPFQ+IGwpIHsgcmV0dXJuIG51bGw7fQorCisgICAgdm9pZCBmb28gKEcgbCkgeworICAgICAgICBTdHJpbmcgcyA9IDxyZWY+ZihsKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvaW5mZXJlbmNlL0luZmVyVW5jaGVja2VkLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvaW5mZXJlbmNlL0luZmVyVW5jaGVja2VkLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjEzZmJhNQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVzb2x2ZS9pbmZlcmVuY2UvSW5mZXJVbmNoZWNrZWQuamF2YQpAQCAtMCwwICsxLDE0IEBACitjbGFzcyBMaXN0PFQ+IHt9CitjbGFzcyBBcnJheUxpc3Q8VD4gZXh0ZW5kcyBMaXN0PFQ+IHt9CitjbGFzcyBDb21wYXJhdG9yPFQ+IHt9CisKK3B1YmxpYyBjbGFzcyBUb2tlblN0cmVhbVJld3JpdGVFbmdpbmUgeworICAgIHB1YmxpYyBzdGF0aWMgPFQ+IFQgYmluYXJ5U2VhcmNoKExpc3Q8PyBleHRlbmRzIFQ+IGxpc3QsIFQga2V5LCBDb21wYXJhdG9yPD8gc3VwZXIgVD4gYykgeworICAgICAgICByZXR1cm4gbnVsbDsKKyAgICB9CisKKyAgICBwcm90ZWN0ZWQgdm9pZCBhZGRUb1NvcnRlZFJld3JpdGVMaXN0KFN0cmluZyBwcm9ncmFtTmFtZSwgU3RyaW5nIG9wLCBDb21wYXJhdG9yIGNvbXBhcmF0b3IpIHsKKyAgICAgICAgTGlzdCByZXdyaXRlcyA9IG5ldyBBcnJheUxpc3QoKTsKKyAgICAgICAgPHJlZj5iaW5hcnlTZWFyY2gocmV3cml0ZXMsIG9wLCBjb21wYXJhdG9yKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL2luZmVyZW5jZS9JbmZlcldpdGhCb3VuZHMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVzb2x2ZS9pbmZlcmVuY2UvSW5mZXJXaXRoQm91bmRzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODZjNzBiNAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVzb2x2ZS9pbmZlcmVuY2UvSW5mZXJXaXRoQm91bmRzLmphdmEKQEAgLTAsMCArMSw4IEBACitjbGFzcyBDIHsKKyAgICBjbGFzcyBJbm5lciB7fQorICAgIDxUIGV4dGVuZHMgSW5uZXI+IFQgZigpIHtyZXR1cm4gbnVsbDt9CisKKyAgICB2b2lkIGJhciAoKSB7CisgICAgICAgIE9iamVjdCBvID0gPHJlZj5mKCk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVzb2x2ZS9pbmZlcmVuY2UvSW5mZXJXaXRoQm91bmRzMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL2luZmVyZW5jZS9JbmZlcldpdGhCb3VuZHMxLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGExODIyMQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVzb2x2ZS9pbmZlcmVuY2UvSW5mZXJXaXRoQm91bmRzMS5qYXZhCkBAIC0wLDAgKzEsOSBAQAorY2xhc3MgVGVzdCB7CisgICAgIDxUIGV4dGVuZHMgU3RyaW5nPiBpbnQgZ2V0VmFsdWUoKSB7CisgICAgICAgICAgcmV0dXJuIDM7CisgICAgIH0KKworICAgICB2b2lkIGNjKCkgeworICAgICAgICAgIDxyZWY+Z2V0VmFsdWUoKTsKKyAgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVzb2x2ZS9pbmZlcmVuY2UvSW5mZXJXaXRoVmFyYXJnczEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVzb2x2ZS9pbmZlcmVuY2UvSW5mZXJXaXRoVmFyYXJnczEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNmE0NWZjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL2luZmVyZW5jZS9JbmZlcldpdGhWYXJhcmdzMS5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKK2NsYXNzIEMxIHt9CitjbGFzcyBDMiBleHRlbmRzIEMxIHt9CisKK2NsYXNzIEMgeworICA8VD4gVCBmb28gKFQuLi4gdHMpIHsgcmV0dXJuIG51bGw7IH0KKworICB2b2lkIGJhciAoKSB7CisgICAgPHJlZj5mb28obmV3IEMyKCkpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL2luZmVyZW5jZS9JbmZlcldpdGhWYXJhcmdzMi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL2luZmVyZW5jZS9JbmZlcldpdGhWYXJhcmdzMi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA0ZmIyMmUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvaW5mZXJlbmNlL0luZmVyV2l0aFZhcmFyZ3MyLmphdmEKQEAgLTAsMCArMSwxMCBAQAorY2xhc3MgQzEge30KK2NsYXNzIEMyIGV4dGVuZHMgQzEge30KKworY2xhc3MgQyB7CisgIDxUPiBUIGZvbyAoVC4uLiB0cykgeyByZXR1cm4gbnVsbDsgfQorCisgIHZvaWQgYmFyICgpIHsKKyAgICA8cmVmPmZvbyhuZXcgQzIoKSwgbmV3IEMxKCkpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL2luZmVyZW5jZS9JbmZlcldpdGhWYXJhcmdzMy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL2luZmVyZW5jZS9JbmZlcldpdGhWYXJhcmdzMy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFlNzdhN2QKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvaW5mZXJlbmNlL0luZmVyV2l0aFZhcmFyZ3MzLmphdmEKQEAgLTAsMCArMSwxMCBAQAorY2xhc3MgTGlzdDxUPiB7fQorCitjbGFzcyBUZXN0IHsKKyAgICA8VD4gTGlzdDxUPiBhc0xpc3QoVC4uLiB0cykgeworICAgICAgICByZXR1cm4gbnVsbDsKKyAgICB9CisgICAgdm9pZCBmb28gKCkgeworICAgICAgICA8cmVmPmFzTGlzdChuZXcgaW50WzBdKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvaW5mZXJlbmNlL0luZmVyV2l0aFZhcmFyZ3M0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvaW5mZXJlbmNlL0luZmVyV2l0aFZhcmFyZ3M0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmIxNDRiNgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVzb2x2ZS9pbmZlcmVuY2UvSW5mZXJXaXRoVmFyYXJnczQuamF2YQpAQCAtMCwwICsxLDEwIEBACitjbGFzcyBMaXN0PFQ+IHt9CisKK2NsYXNzIFRlc3QgeworICAgIDxUPiBMaXN0PFQ+IGFzTGlzdChULi4uIHRzKSB7CisgICAgICAgIHJldHVybiBudWxsOworICAgIH0KKyAgICB2b2lkIGZvbyAoKSB7CisgICAgICAgIDxyZWY+YXNMaXN0KG5ldyBpbnRbMF0sIG5ldyBpbnRbMF0pOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVzb2x2ZS9pbmZlcmVuY2UvSW5mZXJXaXRoVmFyYXJnczUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVzb2x2ZS9pbmZlcmVuY2UvSW5mZXJXaXRoVmFyYXJnczUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYTgwMWQ3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL2luZmVyZW5jZS9JbmZlcldpdGhWYXJhcmdzNS5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKK2NsYXNzIExpc3Q8VD4ge30KKworY2xhc3MgVGVzdCB7CisgICAgPFQ+IExpc3Q8VD4gYXNMaXN0KFQuLi4gdHMpIHsKKyAgICAgICAgcmV0dXJuIG51bGw7CisgICAgfQorICAgIHZvaWQgZm9vICgpIHsKKyAgICAgICAgPHJlZj5hc0xpc3QobmV3IEludGVnZXJbMF0pOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVzb2x2ZS9pbmZlcmVuY2UvSW5mZXJXaXRoVmFyYXJnczYuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVzb2x2ZS9pbmZlcmVuY2UvSW5mZXJXaXRoVmFyYXJnczYuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZWVkMTBhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL2luZmVyZW5jZS9JbmZlcldpdGhWYXJhcmdzNi5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKK2NsYXNzIExpc3Q8VD4ge30KKworY2xhc3MgVGVzdCB7CisgICAgPFQ+IExpc3Q8VD4gYXNMaXN0KFQuLi4gdHMpIHsKKyAgICAgICAgcmV0dXJuIG51bGw7CisgICAgfQorICAgIHZvaWQgZm9vICgpIHsKKyAgICAgICAgPHJlZj5hc0xpc3QobmV3IEludGVnZXJbMF0sIG5ldyBJbnRlZ2VyWzBdKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvaW5mZXJlbmNlL0luZmVyV2l0aFdpbGRjYXJkcy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL2luZmVyZW5jZS9JbmZlcldpdGhXaWxkY2FyZHMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYmM4ZjhmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL2luZmVyZW5jZS9JbmZlcldpdGhXaWxkY2FyZHMuamF2YQpAQCAtMCwwICsxLDE3IEBACitjbGFzcyBDb2xsZWN0aW9uPFQ+IHt9CitjbGFzcyBDb21wYXJhdG9yPFQ+IHt9CisKK3B1YmxpYyBjbGFzcyBDb2xsZWN0aW9ucyB7CisgICAgcHVibGljIHN0YXRpYyA8VD4gVCBtaW4oQ29sbGVjdGlvbjw/IGV4dGVuZHMgVD4gY29sbCwgQ29tcGFyYXRvcjw/IHN1cGVyIFQ+IGNvbXApIHsKKyAgICAgICAgaWYgKGNvbXA9PW51bGwpCisgICAgICAgICAgICAgcmV0dXJuIChUKTxyZWY+bWluKChDb2xsZWN0aW9uPFNlbGZDb21wYXJhYmxlPikgKENvbGxlY3Rpb24pIGNvbGwpOworCisgICAgICAgIHJldHVybiBudWxsOworICAgIH0KKworICAgIHB1YmxpYyBzdGF0aWMgPFQgZXh0ZW5kcyBPYmplY3QgJiBDb21wYXJhYmxlPD8gc3VwZXIgVD4+IFQgbWluKENvbGxlY3Rpb248PyBleHRlbmRzIFQ+IGNvbGwpIHsKKyAgICAgICAgcmV0dXJuIG51bGw7CisgICAgfQorCisgICAgcHJpdmF0ZSBpbnRlcmZhY2UgU2VsZkNvbXBhcmFibGUgZXh0ZW5kcyBDb21wYXJhYmxlPFNlbGZDb21wYXJhYmxlPiB7fQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL2luZmVyZW5jZS9JbmZlcldpdGhXaWxkY2FyZHMxLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvaW5mZXJlbmNlL0luZmVyV2l0aFdpbGRjYXJkczEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMTNmNmNhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL2luZmVyZW5jZS9JbmZlcldpdGhXaWxkY2FyZHMxLmphdmEKQEAgLTAsMCArMSw3IEBACitjbGFzcyBDPFQ+IHsKKyAgIDxUPiBUIGZvbyAoQzw/IGV4dGVuZHMgVD4gYykge3JldHVybiBudWxsO30KKworICAgdm9pZCBiYXIgKEM8PyBleHRlbmRzIFN0cmluZz4gYykgeworICAgICA8cmVmPmZvbyhjKTsKKyAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvaW5mZXJlbmNlL0luZmVyV2l0aFdpbGRjYXJkczIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVzb2x2ZS9pbmZlcmVuY2UvSW5mZXJXaXRoV2lsZGNhcmRzMi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhlMzE2ZjAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvaW5mZXJlbmNlL0luZmVyV2l0aFdpbGRjYXJkczIuamF2YQpAQCAtMCwwICsxLDI1IEBACitjbGFzcyBDb2xsZWN0aW9uPFQ+IHt9CisKK2ludGVyZmFjZSBCYXIge30KKworY2xhc3MgQmFySW1wbCBpbXBsZW1lbnRzIEJhciB7fQorCitpbnRlcmZhY2UgRm9vPEUgZXh0ZW5kcyBCYXI+IHsKKyAgQ29sbGVjdGlvbjxFPiBnZXRFbGVtZW50cygpOworfQorCitjbGFzcyBGb29JbXBsIGltcGxlbWVudHMgRm9vPEJhckltcGw+IHsKKyAgcHVibGljIENvbGxlY3Rpb248QmFySW1wbD4gZ2V0RWxlbWVudHMoKSB7CisgICAgcmV0dXJuIG51bGw7CisgIH0KK30KKworcHVibGljIGNsYXNzIEJhenogeworICBwdWJsaWMgc3RhdGljIDxFIGV4dGVuZHMgQmFyPiBDb2xsZWN0aW9uPEU+IGdldEVsZW1lbnRzKENvbGxlY3Rpb248PyBleHRlbmRzIEZvbzxFPj4gZm9vcykgeworICAgIHJldHVybiBudWxsOworICB9CisKKyAgcHVibGljIHN0YXRpYyB2b2lkIGZhaWx1cmUoZmluYWwgQ29sbGVjdGlvbjxGb29JbXBsPiBmb29zKSB7CisgICAgPHJlZj5nZXRFbGVtZW50cyhmb29zKTsKKyB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL2luZmVyZW5jZS9JbmZlcldpdGhXaWxkY2FyZHMzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvaW5mZXJlbmNlL0luZmVyV2l0aFdpbGRjYXJkczMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMTYzODE0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL2luZmVyZW5jZS9JbmZlcldpdGhXaWxkY2FyZHMzLmphdmEKQEAgLTAsMCArMSwxNSBAQAorY2xhc3MgWCB7CisgICAgc3RhdGljIGNsYXNzIFk8VD4geworICAgIH0KKworICAgIHN0YXRpYyA8VD4gWTxUPiB4KFk8PyBzdXBlciBUPiB5KSB7CisgICAgICAgIHJldHVybiBudWxsOworICAgIH0KKworCisgICAgeworICAgICAgWTxMb25nPiB5MSA9IG51bGw7CisgICAgICBYLjxyZWY+eCh5MSk7CisgICAgfQorfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL2luZmVyZW5jZS9JbmZlcldpdGhXaWxkY2FyZHM0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvaW5mZXJlbmNlL0luZmVyV2l0aFdpbGRjYXJkczQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NjkxZDY3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL2luZmVyZW5jZS9JbmZlcldpdGhXaWxkY2FyZHM0LmphdmEKQEAgLTAsMCArMSwxNSBAQAorY2xhc3MgWCB7CisgICAgc3RhdGljIGNsYXNzIFk8VD4geworICAgIH0KKworICAgIHN0YXRpYyA8VD4gWTxUPiB4KFk8PyBzdXBlciBUW10+IHkpIHsKKyAgICAgICAgcmV0dXJuIG51bGw7CisgICAgfQorCisKKyAgICB7CisgICAgICBZPExvbmdbXT4geTEgPSBudWxsOworICAgICAgWC48cmVmPngoeTEpOworICAgIH0KK30KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVzb2x2ZS9pbmZlcmVuY2UvSW5mZXJXaXRoV2lsZGNhcmRzNS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL2luZmVyZW5jZS9JbmZlcldpdGhXaWxkY2FyZHM1LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzRiNjc2MAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVzb2x2ZS9pbmZlcmVuY2UvSW5mZXJXaXRoV2lsZGNhcmRzNS5qYXZhCkBAIC0wLDAgKzEsMTUgQEAKK2NsYXNzIFggeworICAgIHN0YXRpYyBjbGFzcyBZPFQ+IHsKKyAgICB9CisKKyAgICBzdGF0aWMgPFQ+IFk8VD4geChZPD8gc3VwZXIgWTxUPj4geSkgeworICAgICAgICByZXR1cm4gbnVsbDsKKyAgICB9CisKKworICAgIHsKKyAgICAgIFk8WTxMb25nPj4geTEgPSBudWxsOworICAgICAgWC48cmVmPngoeTEpOworICAgIH0KK30KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVzb2x2ZS9pbmZlcmVuY2UvU0NSNDEwMzEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVzb2x2ZS9pbmZlcmVuY2UvU0NSNDEwMzEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xM2VjOTIzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL2luZmVyZW5jZS9TQ1I0MTAzMS5qYXZhCkBAIC0wLDAgKzEsMTUgQEAKK2NsYXNzIExpc3Q8VD57CisgICAgVCBnZXQgKCkge3JldHVybiBudWxsO30KK30KKworY2xhc3MgQ2FwdHVyZVRlc3QgPFQ+IHsKKyAgICBwcml2YXRlIExpc3Q8PyBleHRlbmRzIExpc3Q8VD4+IGxpc3RPZlNldHM7CisKKyAgICBwcml2YXRlIHZvaWQgZm9vKCkgeworICAgICAgICA8cmVmPmRvR2VuZXJpY1RoaW5nKGxpc3RPZlNldHMuZ2V0KDApKTsKKyAgICB9CisKKyAgICBwdWJsaWMgPFU+IExpc3Q8VT4gZG9HZW5lcmljVGhpbmcoTGlzdDxVPiBzZXQpIHsKKyAgICAgICAgcmV0dXJuIG51bGw7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVzb2x2ZS9tZXRob2QvQW5vbnltb3VzU3VwZXIxLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvbWV0aG9kL0Fub255bW91c1N1cGVyMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRkYWVmOWYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvbWV0aG9kL0Fub255bW91c1N1cGVyMS5qYXZhCkBAIC0wLDAgKzEsMjAgQEAKKy8qKgorICogQ3JlYXRlZCBieSBJbnRlbGxpSiBJREVBLgorICogVXNlcjogaWsKKyAqIERhdGU6IDIyLjAxLjIwMDMKKyAqIFRpbWU6IDExOjE1OjE5CisgKiBUbyBjaGFuZ2UgdGhpcyB0ZW1wbGF0ZSB1c2UgT3B0aW9ucyB8IEZpbGUgVGVtcGxhdGVzLgorICovCitwdWJsaWMgY2xhc3MgVGVzdDEgeworICAgIHB1YmxpYyBzdGF0aWMgY2xhc3MgQXsKKyAgICAgICAgcHJvdGVjdGVkIHZvaWQgZm9vKCl7fQorICAgIH0KKworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpeworICAgICAgICBuZXcgQSgpeworICAgICAgICAgICAgcHJvdGVjdGVkIHZvaWQgZm9vKCl7CisgICAgICAgICAgICAgICAgc3VwZXIuPHJlZj5mb28oKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvbWV0aG9kL0FycmF5MS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL21ldGhvZC9BcnJheTEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hN2U4Mjg5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL21ldGhvZC9BcnJheTEuamF2YQpAQCAtMCwwICsxLDYgQEAKK2NsYXNzIEFycmF5eworIHZvaWQgZm9vKCl7CisgIGludFtdIGFycmF5OworICBhcnJheS48cmVmPmNsb25lKCk7CisgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVzb2x2ZS9tZXRob2QvQnVnNzk2OC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL21ldGhvZC9CdWc3OTY4LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2UyYWY4YQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVzb2x2ZS9tZXRob2QvQnVnNzk2OC5qYXZhCkBAIC0wLDAgKzEsMjEgQEAKKworLyoqCisgKiBDcmVhdGVkIGJ5IEludGVsbGlKIElERUEuCisgKiBVc2VyOiBpaworICogRGF0ZTogMjIuMDEuMjAwMworICogVGltZTogMTQ6NDY6MDkKKyAqIFRvIGNoYW5nZSB0aGlzIHRlbXBsYXRlIHVzZSBPcHRpb25zIHwgRmlsZSBUZW1wbGF0ZXMuCisgKi8KK3B1YmxpYyBjbGFzcyBCdWc3OTY4IHsKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgZm9vIChTdHJpbmcgcywgU3RyaW5nIHMxLCBTdHJpbmcgczIsIE9iamVjdFtdIG9hKQorICAgIHsKKyAgICAgICAgQmFyLjxyZWY+YmFyIChzLCBzMSwgczIsIG9hKTsKKyAgICB9CisgICAgY2xhc3MgQmFyCisgICAgeworICAgICAgICBwdWJsaWMgc3RhdGljIHZvaWQgYmFyIChPYmplY3QgbywgU3RyaW5nIHMxLCBTdHJpbmcgczIsIE9iamVjdFtdIGFvKSB7fQorICAgICAgICBwdWJsaWMgc3RhdGljIHZvaWQgYmFyIChTdHJpbmcgcywgU3RyaW5nIHMxLCBTdHJpbmcgczIsIE9iamVjdCAgIG8pICB7fQorICAgICAgICBwdWJsaWMgc3RhdGljIHZvaWQgYmFyIChTdHJpbmcgcywgU3RyaW5nIHMxLCBTdHJpbmcgczIsIE9iamVjdFtdIGFvKSB7fQorICAgIH0KKworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL21ldGhvZC9DbG9uZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL21ldGhvZC9DbG9uZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZmNzdjMjMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvbWV0aG9kL0Nsb25lLmphdmEKQEAgLTAsMCArMSwxNyBAQAorY2xhc3MgWnsKKyAgcHVibGljIGludGVyZmFjZSBBIHsgT2JqZWN0IGNsb25lKCk7IH0KKworICBpbnRlcmZhY2UgQiBleHRlbmRzIEEgeyB9CisKKworCisKKyAgY2xhc3MgQyBpbXBsZW1lbnRzIEIgeworICAgIE9iamVjdCBjbG9uZSgpIHsKKyAgICAgIEMgYyA9IG5ldyBDKCk7CisgICAgICAoKEEpIGMpLmNsb25lKCk7CisgICAgICAoKEIpIGMpLjxyZWY+Y2xvbmUoKTsKKyAgICAgIHJldHVybiBjLmNsb25lKCk7CisgICAgfQorICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvbWV0aG9kL0N5Y2xlMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL21ldGhvZC9DeWNsZTEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYWE1NGUxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL21ldGhvZC9DeWNsZTEuamF2YQpAQCAtMCwwICsxLDIzIEBACitwdWJsaWMgY2xhc3MgQ3ljbGUxeworICAgIHB1YmxpYyBpbnRlcmZhY2UgQXsKKyAgICAgICAgdm9pZCBmb28oKTsKKyAgICB9CisKKyAgICBwdWJsaWMgaW50ZXJmYWNlIEJ7CisgICAgICAgIHZvaWQgZm9vKCk7CisgICAgfQorCisgICAgcHVibGljIHN0YXRpYyBjbGFzcyBDCisgICAgICAgIGltcGxlbWVudHMgQXsKKyAgICAgICAgdm9pZCBmb28oKXt9CisgICAgfQorCisgICAgcHVibGljIHN0YXRpYyBjbGFzcyBEIGV4dGVuZHMgQworICAgICAgICBpbXBsZW1lbnRzIEJ7CisgICAgICAgIHZvaWQgZm9vKGludCBnZ2cpe30KKyAgICAgICAgCisgICAgICAgIHZvaWQgZm9vMSgpeworICAgICAgICAgICAgPHJlZj5mb28oKTsKKyAgICAgICAgfQorICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVzb2x2ZS9tZXRob2QvRW1wdHlDb25zdHJ1Y3Rvci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL21ldGhvZC9FbXB0eUNvbnN0cnVjdG9yLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjUyMDcwZWUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvbWV0aG9kL0VtcHR5Q29uc3RydWN0b3IuamF2YQpAQCAtMCwwICsxLDUgQEAKK2NsYXNzIEF7CisgQSgpeworICA8cmVmPnN1cGVyKCk7CisgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVzb2x2ZS9tZXRob2QvSW1wbGVtZW50T3JkZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVzb2x2ZS9tZXRob2QvSW1wbGVtZW50T3JkZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZDYxZjA2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL21ldGhvZC9JbXBsZW1lbnRPcmRlci5qYXZhCkBAIC0wLDAgKzEsMTEgQEAKK2Fic3RyYWN0IHB1YmxpYyBjbGFzcyBZWVkgaW1wbGVtZW50cyBJLElJeworICAgIHByaXZhdGUgdm9pZCBmKFlZWSB5KSB7CisgICAgICAgIElJIGkgPSB5LjxyZWY+Zm9vKCk7CisgICAgfQorfQoraW50ZXJmYWNlIEkgeworICAgIEkgZm9vKCk7Cit9CitpbnRlcmZhY2UgSUkgZXh0ZW5kcyBJIHsKKyAgICBJSSBmb28oKTsKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVzb2x2ZS9tZXRob2QvSW5kZXhPZi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL21ldGhvZC9JbmRleE9mLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2IwOTVkZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVzb2x2ZS9tZXRob2QvSW5kZXhPZi5qYXZhCkBAIC0wLDAgKzEsNSBAQAorY2xhc3MgQXsKKyAgeworICAgICJhYWEiLjxyZWY+aW5kZXhPZignYScpOworICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvbWV0aG9kL0luaGVyYW5jZVdpdGhFeHRlbmRzQ29uZmxpY3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVzb2x2ZS9tZXRob2QvSW5oZXJhbmNlV2l0aEV4dGVuZHNDb25mbGljdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQzYmQwZDQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvbWV0aG9kL0luaGVyYW5jZVdpdGhFeHRlbmRzQ29uZmxpY3QuamF2YQpAQCAtMCwwICsxLDI0IEBACisvKioKKyAqIENyZWF0ZWQgYnkgSW50ZWxsaUogSURFQS4KKyAqIFVzZXI6IGlrCisgKiBEYXRlOiAyMy4wMS4yMDAzCisgKiBUaW1lOiAxODo0NDozNAorICogVG8gY2hhbmdlIHRoaXMgdGVtcGxhdGUgdXNlIE9wdGlvbnMgfCBGaWxlIFRlbXBsYXRlcy4KKyAqLworcHVibGljIGNsYXNzIElubmVyMSB7CisgICAgcHJpdmF0ZSBpbnQgYSgpeworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBwcml2YXRlIGNsYXNzIEEgZXh0ZW5kcyBCeworICAgICAgICB7CisgICAgICAgICAgICBpbnQgaiA9IDxyZWY+YSgpOworICAgICAgICB9CisgICAgfQorfQorCitjbGFzcyBCIHsKKyAgICBwdWJsaWMgaW50IGEoKXsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL21ldGhvZC9Jbmhlcml0MS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL21ldGhvZC9Jbmhlcml0MS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE2OGRiOTgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvbWV0aG9kL0luaGVyaXQxLmphdmEKQEAgLTAsMCArMSwxNyBAQAorY2xhc3MgQXsKKyBwdWJsaWMgaW50IGFza2RoKCl7CisgIHJldHVybiAxOworIH0KK30KKworY2xhc3MgQiBleHRlbmRzIEF7CisgcHVibGljIHZvaWQgYXNrZGgoKXsKKyAgcmV0dXJuIDI7CisgfQorfQorCitjbGFzcyBTdXBlcjEgZXh0ZW5kcyBCeworIHsKKyAgc3VwZXIuPHJlZj5hc2tkaCgpOworIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvbWV0aG9kL0lubmVyQ2xhc3MuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVzb2x2ZS9tZXRob2QvSW5uZXJDbGFzcy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU4NDZkZWQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvbWV0aG9kL0lubmVyQ2xhc3MuamF2YQpAQCAtMCwwICsxLDEyIEBACitwdWJsaWMgY2xhc3MgSW5uZXJDbGFzcyB7CisgICAgdm9pZCBmb28oKSB7fQorCisgICAgY2xhc3MgSW5uZXIgeworICAgICAgICB2b2lkIGZvbyhpbnQgaSkge30KKworICAgICAgICB2b2lkIGJhcigpIHsKKyAgICAgICAgICAgIDxyZWY+Zm9vKCk7CisgICAgICAgIH0KKyAgICB9CisKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvbWV0aG9kL01ldGhvZENvbmZsaWN0MS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL21ldGhvZC9NZXRob2RDb25mbGljdDEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wN2VhZWNhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL21ldGhvZC9NZXRob2RDb25mbGljdDEuamF2YQpAQCAtMCwwICsxLDEyIEBACitjbGFzcyBBeworCWludGVyZmFjZSBBe30KKwlpbnRlcmZhY2UgQnt9CisKKwljbGFzcyBDIGltcGxlbWVudHMgQSwgQnsKKwkJdm9pZCBmb28oQSBhKXt9CisJCXZvaWQgZm9vKEIgYil7fQorCX0KKwl7CisJCW5ldyBDKCkuPHJlZj5mb28obmV3IEMoKSkKKwl9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvbWV0aG9kL01ldGhvZEZyb21Bbm9uQmFzZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL21ldGhvZC9NZXRob2RGcm9tQW5vbkJhc2UuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45YWI5OWQ1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL21ldGhvZC9NZXRob2RGcm9tQW5vbkJhc2UuamF2YQpAQCAtMCwwICsxLDkgQEAKK2NsYXNzIFRlc3R7CisgIHsKKyAgICBuZXcgUnVubmFibGUoKXsKKyAgICAgIHsKKyAgICAgICAgPHJlZj5ydW4oKTsKKyAgICAgIH0KKyAgICB9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvbWV0aG9kL011bHRpcGxlSW5oZXJpdGFuY2VQYXRoc1RvTWV0aG9kLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvbWV0aG9kL011bHRpcGxlSW5oZXJpdGFuY2VQYXRoc1RvTWV0aG9kLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2ZlYTc2ZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVzb2x2ZS9tZXRob2QvTXVsdGlwbGVJbmhlcml0YW5jZVBhdGhzVG9NZXRob2QuamF2YQpAQCAtMCwwICsxLDIwIEBACitpbnRlcmZhY2UgTjEgeworICBTdHJpbmcgZ2V0TmFtZSgpOworfQoraW50ZXJmYWNlIE4yIHsKKyAgU3RyaW5nIGdldE5hbWUoKTsKK30KK2ludGVyZmFjZSBOTiBleHRlbmRzIE4xIHt9CisKK2ludGVyZmFjZSBOMyB7CisgICAgU3RyaW5nIGdldE5hbWUoKTsKK30KK2ludGVyZmFjZSBWZXJ5TmFtZWQgZXh0ZW5kcyBOTiwgTjIsIE4zLCBOMSB7fQorCitjbGFzcyBNeUNsYXNzIHsKKworICB2b2lkIGZvbyhWZXJ5TmFtZWQgZikgeworICAgIGYuZ2V0TmE8cmVmPm1lKCk7CisgIH0KKworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL21ldGhvZC9OZXh0TWV0aG9kLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvbWV0aG9kL05leHRNZXRob2QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NTcxMWYyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL21ldGhvZC9OZXh0TWV0aG9kLmphdmEKQEAgLTAsMCArMSwxMSBAQAorY2xhc3MgQXsKKyB2b2lkIGZvbyhPYmplY3QgYSwgU3RyaW5nIGIpeworIH0KKworIHZvaWQgZm9vKCl7CisgIDxyZWY+Zm9vKCJhYWEiLCB0cnVlKTsKKyB9CisKKyB2b2lkIGZvbyhTdHJpbmcgYSwgYm9vbGVhbiBiKXsKKyB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL21ldGhvZC9Ob3RBY2Nlc3NpYmxlQWNjZXNzQ2xhc3MuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVzb2x2ZS9tZXRob2QvTm90QWNjZXNzaWJsZUFjY2Vzc0NsYXNzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzQ3ZTUxOQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVzb2x2ZS9tZXRob2QvTm90QWNjZXNzaWJsZUFjY2Vzc0NsYXNzLmphdmEKQEAgLTAsMCArMSwxNyBAQAorY2xhc3MgQSB7CisgIEIgYjE7CisgIHN0YXRpYyBCIGIyOworICBwdWJsaWMgY2xhc3MgWiBleHRlbmRzIEJ7CisgICAgcHVibGljIHZvaWQgYWtzaGRramFzZGgoKXt9CisgIH0KKyAgcHJpdmF0ZSBjbGFzcyBCeworICAgIHB1YmxpYyB2b2lkIGYoKSB7fQorICB9Cit9CisKKworY2xhc3MgQyBleHRlbmRzIEEgeworICB7CisgICAgYjEuPHJlZj5mKCk7CisgIH0KKyAgfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVzb2x2ZS9tZXRob2QvT2JqZWN0VnNJbnRlcmZhY2UuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVzb2x2ZS9tZXRob2QvT2JqZWN0VnNJbnRlcmZhY2UuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYTVkMjZiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL21ldGhvZC9PYmplY3RWc0ludGVyZmFjZS5qYXZhCkBAIC0wLDAgKzEsMTEgQEAKK2ltcG9ydCBqYXZhLmlvLlNlcmlhbGl6YWJsZTsKKworaW50ZXJmYWNlIFB1YmxpY0Nsb25lYWJsZSB7CisJT2JqZWN0IGNsb25lKCk7Cit9CitpbnRlcmZhY2UgRXh0ZW5zaW9uIGV4dGVuZHMgU2VyaWFsaXphYmxlLCBQdWJsaWNDbG9uZWFibGUge30KK2NsYXNzIFRlc3QgeworCXZvaWQgZm9vKEV4dGVuc2lvbiBiYXIpIHsKKwkJYmFyLjxyZWY+Y2xvbmUoKTsKKwl9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL21ldGhvZC9QYXJ0bHlJbXBsZW1lbnQxLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvbWV0aG9kL1BhcnRseUltcGxlbWVudDEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZGM2MjA5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL21ldGhvZC9QYXJ0bHlJbXBsZW1lbnQxLmphdmEKQEAgLTAsMCArMSwxMyBAQAorY2xhc3MgQXsKK3B1YmxpYyBhYnN0cmFjdCBjbGFzcyBJbnRlZ2VyUHJlZGljYXRlQmFzZSBpbXBsZW1lbnRzIFByZWRpY2F0ZXsKKyBwdWJsaWMgYm9vbGVhbiBhcHBsaWVzKE9iamVjdCBvYmopeworICByZXR1cm4gPHJlZj5hcHBsaWVzKChJbnRlZ2VyKW9iaik7ICAKKyB9Cit9CitwdWJsaWMgaW50ZXJmYWNlIFByZWRpY2F0ZXsKKyBib29sZWFuIGFwcGxpZXMoT2JqZWN0IG9iaik7CisgYm9vbGVhbiBhcHBsaWVzKEludGVnZXIgbXlPYmopOworfQorIAorfQorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvbWV0aG9kL1ByZWZlclB1YmxpYy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL21ldGhvZC9QcmVmZXJQdWJsaWMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNDA4ZGNmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL21ldGhvZC9QcmVmZXJQdWJsaWMuamF2YQpAQCAtMCwwICsxLDEwIEBACitjbGFzcyBBeworICBwcml2YXRlIHZvaWQgZm9vKFN0cmluZyBzKXt9CisgIHB1YmxpYyB2b2lkIGZvbyhPYmplY3Qgbyl7fQorfQorCitjbGFzcyBCeworICB7CisgICAgbmV3IEEoKS48cmVmPmZvbygiYSIpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL21ldGhvZC9Qcml2YXRlSW5TdXBlcklubmVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvbWV0aG9kL1ByaXZhdGVJblN1cGVySW5uZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MzlhZjBjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL21ldGhvZC9Qcml2YXRlSW5TdXBlcklubmVyLmphdmEKQEAgLTAsMCArMSwxMCBAQAorY2xhc3MgT3V0ZXIgeworICAgIHByaXZhdGUgdm9pZCBmb28oKSB7fQorCisgICAgc3RhdGljIGNsYXNzIElubmVyIGV4dGVuZHMgT3V0ZXIgeworICAgICAgICB2b2lkIGJhcigpIHsKKyAgICAgICAgICAgIDxyZWY+Zm9vKCk7CisgICAgICAgIH0KKyAgICB9CisKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvbWV0aG9kL1ByaXZhdGVJblN1cGVySW5uZXIxLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvbWV0aG9kL1ByaXZhdGVJblN1cGVySW5uZXIxLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmMwZmQ1ZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVzb2x2ZS9tZXRob2QvUHJpdmF0ZUluU3VwZXJJbm5lcjEuamF2YQpAQCAtMCwwICsxLDEwIEBACitjbGFzcyBPdXRlciB7CisgICAgcHJpdmF0ZSB2b2lkIGZvbygpIHt9CisKKyAgICBjbGFzcyBJbm5lciBleHRlbmRzIE91dGVyIHsKKyAgICAgICAgdm9pZCBiYXIoKSB7CisgICAgICAgICAgICA8cmVmPmZvbygpOworICAgICAgICB9CisgICAgfQorCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL21ldGhvZC9Qcm90ZWN0ZWRNLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvbWV0aG9kL1Byb3RlY3RlZE0uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iOTVmMmFjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL21ldGhvZC9Qcm90ZWN0ZWRNLmphdmEKQEAgLTAsMCArMSwxMCBAQAoraW1wb3J0IGphdmF4LnN3aW5nLio7CitpbXBvcnQgamF2YS5hd3QuKjsKKworY2xhc3MgWGMgZXh0ZW5kcyBKQ29tcG9uZW50IHsKKyAgICBKQ29tcG9uZW50IGNvbXBvbmVudDsKKworICAgIHByb3RlY3RlZCB2b2lkIHBhaW50Q29tcG9uZW50KGZpbmFsIEdyYXBoaWNzIGcpIHsKKyAgICAgICAgY29tcG9uZW50LjxyZWY+cGFpbnRDb21wb25lbnQoZyk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL21ldGhvZC9SZW1vdmUxLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvbWV0aG9kL1JlbW92ZTEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNDZhZTEzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL21ldGhvZC9SZW1vdmUxLmphdmEKQEAgLTAsMCArMSwxNCBAQAorcHVibGljIGNsYXNzIFJlbW92ZTF7CisgIHZvaWQgZm9vKE9iamVjdCBvKXt9CisgIHZvaWQgZm9vKFN0cmluZyBvKXt9CisgIHB1YmxpYyBzdGF0aWMgY2xhc3MgQSBleHRlbmRzIFJlbW92ZXsKKyAgIHZvaWQgZm9vKE9iamVjdCBvKXsKKyAgIH0KKyAgIHZvaWQgZm9vKFN0cmluZyBvKXsKKyAgIH0KKyAgfQorCisgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKCl7CisgICAgbmV3IEEoKS48cmVmPmZvbygiYWFhIik7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvbWV0aG9kL1JlbW92ZTIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVzb2x2ZS9tZXRob2QvUmVtb3ZlMi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRhY2E2OGUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvbWV0aG9kL1JlbW92ZTIuamF2YQpAQCAtMCwwICsxLDcgQEAKK2ltcG9ydCBqYXZhLnV0aWwuQXJyYXlMaXN0OworcHVibGljIGNsYXNzIFJlbW92ZTJ7CisgIHByaXZhdGUgc3RhdGljIEFycmF5TGlzdCBsc3QgPSBuZXcgQXJyYXlMaXN0KCk7CisgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKCl7CisgICAgbHN0LjxyZWY+cmVtb3ZlKCJhYWEiKTsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL21ldGhvZC9SZW1vdmUzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvbWV0aG9kL1JlbW92ZTMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NDJiY2Y3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL21ldGhvZC9SZW1vdmUzLmphdmEKQEAgLTAsMCArMSwxOCBAQAorcGFja2FnZSBwc2kucmVzb2x2ZS5tZXRob2Q7CisKK2ltcG9ydCBjb20uaW50ZWxsaWoudXRpbC5jb250YWluZXJzLnRyb3ZlLlRIYXNoTWFwOworCisvKioKKyAqIENyZWF0ZWQgYnkgSW50ZWxsaUogSURFQS4KKyAqIFVzZXI6IGlrCisgKiBEYXRlOiAxNy4wMS4yMDAzCisgKiBUaW1lOiAxNTowODoyNgorICogVG8gY2hhbmdlIHRoaXMgdGVtcGxhdGUgdXNlIE9wdGlvbnMgfCBGaWxlIFRlbXBsYXRlcy4KKyAqLworcHVibGljIGNsYXNzIFJlbW92ZTN7CisgICAgVEhhc2hNYXAgbWFwID0gbmV3IFRIYXNoTWFwKCk7CisgICAgCisgICAgdm9pZCBmb28oKXsKKyAgICAgICAgbWFwLjxyZWY+c2l6ZSgpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVzb2x2ZS9tZXRob2QvUmVtb3ZlNC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL21ldGhvZC9SZW1vdmU0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjk4MWM3ZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVzb2x2ZS9tZXRob2QvUmVtb3ZlNC5qYXZhCkBAIC0wLDAgKzEsMTEgQEAKK3BhY2thZ2UgOworCisvKioKKyAqIENyZWF0ZWQgYnkgSW50ZWxsaUogSURFQS4KKyAqIFVzZXI6IGlrCisgKiBEYXRlOiAxNy4wMS4yMDAzCisgKiBUaW1lOiAxOToxMTo1NgorICogVG8gY2hhbmdlIHRoaXMgdGVtcGxhdGUgdXNlIE9wdGlvbnMgfCBGaWxlIFRlbXBsYXRlcy4KKyAqLworcHVibGljIGNsYXNzIFJlbW92ZTQgeworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL21ldGhvZC9TQ1I1MTM0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvbWV0aG9kL1NDUjUxMzQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMTgwYjZlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL21ldGhvZC9TQ1I1MTM0LmphdmEKQEAgLTAsMCArMSwxMSBAQAoraW50ZXJmYWNlIEkgeworICBib29sZWFuIGZvbyhPYmplY3Qgb2JqKTsKKworICBib29sZWFuIGZvbyhJbnRlZ2VyIG15T2JqKTsKK30KKworYWJzdHJhY3QgY2xhc3MgQyBpbXBsZW1lbnRzIEkgeworICBwdWJsaWMgYm9vbGVhbiBmb28oT2JqZWN0IG9iaikgeworICAgIHJldHVybiA8cmVmPmZvbygoSW50ZWdlcilvYmopOworICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvbWV0aG9kL1NDUjU4NTkuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVzb2x2ZS9tZXRob2QvU0NSNTg1OS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNmZTUwNmUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvbWV0aG9kL1NDUjU4NTkuamF2YQpAQCAtMCwwICsxLDI3IEBACisKK2NsYXNzIEJhc2UgeworfQorCitjbGFzcyBEZXJpdmVkIGV4dGVuZHMgQmFzZSB7Cit9CisKK2NsYXNzIFNlcnZlciB7CisgIHN0YXRpYyBCYXNlIHN1YihCYXNlIHAxLCBCYXNlIHAyKSB7CisgIH0KKworICBzdGF0aWMgRGVyaXZlZCBzdWIoRGVyaXZlZCBwMSwgQmFzZSBwMikgeworICB9CisKKyAgc3RhdGljIERlcml2ZWQgc3ViKEJhc2UgcDEsIERlcml2ZWQgcDIpIHsKKyAgfQorCisgIHN0YXRpYyBEZXJpdmVkIHN1YihEZXJpdmVkIHAxLCBEZXJpdmVkIHAyKSB7CisgIH0KK30KKworY2xhc3MgQ2xpZW50IHsKKyAgeworICAgIERlcml2ZWQgYXJnID0gbnVsbDsKKyAgICBTZXJ2ZXIuPHJlZj5zdWIoYXJnLCBhcmcpOworICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvbWV0aG9kL1Nob3J0VnNJbnQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVzb2x2ZS9tZXRob2QvU2hvcnRWc0ludC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFhYmY2NGIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvbWV0aG9kL1Nob3J0VnNJbnQuamF2YQpAQCAtMCwwICsxLDggQEAKK2NsYXNzIEF7CisgIFN0cmluZyB0b0hleChpbnQgaSkge30gCisgIFN0cmluZyB0b0hleChzaG9ydCBpKSB7fQorCisgIHZvaWQgZigpeworICAgIDxyZWY+dG9IZXgoJ2knKTsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL21ldGhvZC9TaW1wbGUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVzb2x2ZS9tZXRob2QvU2ltcGxlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODEwOWZmOQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVzb2x2ZS9tZXRob2QvU2ltcGxlLmphdmEKQEAgLTAsMCArMSw5IEBACitwdWJsaWMgY2xhc3MgU2ltcGxlIHsKKyAgICBwdWJsaWMgdm9pZCBtZXRob2QoU3RyaW5nIHMpIHsKKyAgICB9CisKKyAgICBzdGF0aWMgeworICAgICAgICBTaW1wbGUgYSA9IG5ldyBTaW1wbGUoKTsKKyAgICAgICAgYS48cmVmPm1ldGhvZCgiYmxhaCIpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvbWV0aG9kL1NvdXQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVzb2x2ZS9tZXRob2QvU291dC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU5Zjg3OTkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvbWV0aG9kL1NvdXQuamF2YQpAQCAtMCwwICsxLDUgQEAKK2NsYXNzIFNvdXQgeworICAgIHN0YXRpYyB7CisgICAgICAgIFN5c3RlbS5vdXQuPHJlZj5wcmludGxuKCk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVzb2x2ZS9tZXRob2QvU3RhdGljVlNOb25TdGF0aWMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVzb2x2ZS9tZXRob2QvU3RhdGljVlNOb25TdGF0aWMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NWM5NjZkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL21ldGhvZC9TdGF0aWNWU05vblN0YXRpYy5qYXZhCkBAIC0wLDAgKzEsMTEgQEAKKyBwdWJsaWMgY2xhc3MgRm9vIHsKKyAgcHVibGljIHZvaWQgZm9vKCkge30KKworICBwdWJsaWMgc3RhdGljIHZvaWQgZm9vKGNoYXIgYyl7fQorfQorCitjbGFzcyBBeworICB7CisgICAgRm9vLjxyZWY+Zm9vKCk7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvbWV0aG9kL1N1cGVyMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL21ldGhvZC9TdXBlcjEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZWEzMTdhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL21ldGhvZC9TdXBlcjEuamF2YQpAQCAtMCwwICsxLDEwIEBACitjbGFzcyBBeworIHB1YmxpYyB2b2lkIGFza2RoKCl7CisgfQorfQorCitjbGFzcyBTdXBlcjEgZXh0ZW5kcyBBeworIHsKKyAgc3VwZXIuPHJlZj5hc2tkaCgpOworIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvbWV0aG9kL1N1cGVyT2ZPYmplY3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVzb2x2ZS9tZXRob2QvU3VwZXJPZk9iamVjdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM3OTNhOWIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvbWV0aG9kL1N1cGVyT2ZPYmplY3QuamF2YQpAQCAtMCwwICsxLDE1IEBACitpbnRlcmZhY2UgSSB7CisgICAgT2JqZWN0IGNsb25lKCk7Cit9CisKK2ludGVyZmFjZSBKIGV4dGVuZHMgSSB7Cit9CisKK2NsYXNzIENCYXNlIGltcGxlbWVudHMgSSB7Cit9CisKK2NsYXNzIEMgZXh0ZW5kcyBDQmFzZSBpbXBsZW1lbnRzIEogeworICAgIHsKKyAgICAgICAgc3VwZXIuPHJlZj5jbG9uZSgpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvbWV0aG9kL1Rlc3RPdmVybG9hZGluZzEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVzb2x2ZS9tZXRob2QvVGVzdE92ZXJsb2FkaW5nMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg1OTA0MDcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvbWV0aG9kL1Rlc3RPdmVybG9hZGluZzEuamF2YQpAQCAtMCwwICsxLDIwIEBACisKKy8qKgorICogQ3JlYXRlZCBieSBJbnRlbGxpSiBJREVBLgorICogVXNlcjogaWsKKyAqIERhdGU6IDI4LjA1LjIwMDMKKyAqIFRpbWU6IDE2OjI0OjAzCisgKiBUbyBjaGFuZ2UgdGhpcyB0ZW1wbGF0ZSB1c2UgT3B0aW9ucyB8IEZpbGUgVGVtcGxhdGVzLgorICovCitwdWJsaWMgY2xhc3MgVGVzdE92ZXJsb2FkaW5nMSB7CisgICAgY2xhc3MgQXsKKyAgICAgICAgdm9pZCBmb28oKXt9CisgICAgfQorICAgIGNsYXNzIEIgZXh0ZW5kcyBBeworICAgICAgICB2b2lkIGZvbygpe30KKyAgICB9CisKKyAgICB7CisgICAgICAgIG5ldyBCKCkuPHJlZj5mb28oMSk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL21ldGhvZC9UaHJvd1dpdGhvdXROZXcuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVzb2x2ZS9tZXRob2QvVGhyb3dXaXRob3V0TmV3LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzFiYWY3OQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVzb2x2ZS9tZXRob2QvVGhyb3dXaXRob3V0TmV3LmphdmEKQEAgLTAsMCArMSw1IEBACitjbGFzcyBBeworIHZvaWQgZm9vKCkgdGhyb3dzIEV4Y2VwdGlvbnsKKyAgdGhyb3cgPHJlZj5FeGNlcHRpb24oKTsKKyB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL21ldGhvZC9UaHJvd1dpdGhvdXROZXcyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvbWV0aG9kL1Rocm93V2l0aG91dE5ldzIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MWJhZjc5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL21ldGhvZC9UaHJvd1dpdGhvdXROZXcyLmphdmEKQEAgLTAsMCArMSw1IEBACitjbGFzcyBBeworIHZvaWQgZm9vKCkgdGhyb3dzIEV4Y2VwdGlvbnsKKyAgdGhyb3cgPHJlZj5FeGNlcHRpb24oKTsKKyB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL21ldGhvZC9WYWx1ZU9mLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvbWV0aG9kL1ZhbHVlT2YuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMjkyYjU4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL21ldGhvZC9WYWx1ZU9mLmphdmEKQEAgLTAsMCArMSw1IEBACitjbGFzcyBBeworIHZvaWQgZm9vKCl7CisgIFN0cmluZy48cmVmPnZhbHVlT2YoMSk7CisgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVzb2x2ZS9tZXRob2QvZ2VuZXJpY3MvQW1iaWd1b3VzQm94aW5nLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvbWV0aG9kL2dlbmVyaWNzL0FtYmlndW91c0JveGluZy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJiNTY1ZjcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvbWV0aG9kL2dlbmVyaWNzL0FtYmlndW91c0JveGluZy5qYXZhCkBAIC0wLDAgKzEsOSBAQAorcHVibGljIGNsYXNzIEFtYmlndW91cyB7CisgICAgdm9pZCBmKE9iamVjdCBvMSwgT2JqZWN0IG8yKSB7fQorICAgIHZvaWQgZihpbnQgbzEsIGludCBvMikge30KKworICAgIHZvaWQgZyhJbnRlZ2VyIGkpCisgICAgeworICAgICAgICA8cmVmPmYoMSwgaSk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVzb2x2ZS9tZXRob2QvZ2VuZXJpY3MvQXV0b2JveGluZ0FuZFdpZGVuaW5nLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvbWV0aG9kL2dlbmVyaWNzL0F1dG9ib3hpbmdBbmRXaWRlbmluZy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJkMGZkNWUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvbWV0aG9kL2dlbmVyaWNzL0F1dG9ib3hpbmdBbmRXaWRlbmluZy5qYXZhCkBAIC0wLDAgKzEsMTEgQEAKK3B1YmxpYyBjbGFzcyBGb28geworCisgICAgcHVibGljIHZvaWQgZm9vKENvbXBhcmFibGUgYykgeworICAgIH0KKworCisgICAgeworICAgICAgIDxyZWY+Zm9vKDFMKTsKKyAgICB9CisKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVzb2x2ZS9tZXRob2QvZ2VuZXJpY3MvQ29uc3RydWN0b3JFeHBsaWNpdFBhcmFtcy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL21ldGhvZC9nZW5lcmljcy9Db25zdHJ1Y3RvckV4cGxpY2l0UGFyYW1zLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmRlODE4NQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVzb2x2ZS9tZXRob2QvZ2VuZXJpY3MvQ29uc3RydWN0b3JFeHBsaWNpdFBhcmFtcy5qYXZhCkBAIC0wLDAgKzEsOSBAQAorY2xhc3MgRm9vIHsKKyAgICA8VD4gRm9vKFQgdCkgeworCisgICAgfQorCisgICAgc3RhdGljIHsKKyAgICAgICAgRm9vIGYgPSA8U3RyaW5nPm5ldyA8cmVmPkZvbygpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvbWV0aG9kL2dlbmVyaWNzL0NvdmFyaWFudFJldHVyblR5cGVzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvbWV0aG9kL2dlbmVyaWNzL0NvdmFyaWFudFJldHVyblR5cGVzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDk1ZjkwOAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVzb2x2ZS9tZXRob2QvZ2VuZXJpY3MvQ292YXJpYW50UmV0dXJuVHlwZXMuamF2YQpAQCAtMCwwICsxLDEzIEBACitpbnRlcmZhY2UgRiB7CisgICAgT2JqZWN0IG8oKTsKK30KK2ludGVyZmFjZSBFIGV4dGVuZHMgRiB7CisgICAgU3RyaW5nIG8oKTsKK30KK2ludGVyZmFjZSBCIGV4dGVuZHMgRSxGIHsgfQorCitjbGFzcyBVc2VyIHsKKyAgICB2b2lkIHgoQiBhKSB7CisgICAgICAgIFN0cmluZyBvICA9IGEuPHJlZj5vKCk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVzb2x2ZS9tZXRob2QvZ2VuZXJpY3MvRGVwZW5kaW5nUGFyYW1zMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL21ldGhvZC9nZW5lcmljcy9EZXBlbmRpbmdQYXJhbXMxLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGYwNDc1YwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVzb2x2ZS9tZXRob2QvZ2VuZXJpY3MvRGVwZW5kaW5nUGFyYW1zMS5qYXZhCkBAIC0wLDAgKzEsNiBAQAorIGNsYXNzIFg8VD4geworICBjbGFzcyBYWCBleHRlbmRzIFg8WD4ge30KKyAgdm9pZCA8VD4gZihYPFQ+IHgsIFQgdCkgeworICAgICAgZihuZXcgWFgoKSwgbmV3IFgoKSk7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvbWV0aG9kL2dlbmVyaWNzL0RlcGVuZGluZ1BhcmFtczIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVzb2x2ZS9tZXRob2QvZ2VuZXJpY3MvRGVwZW5kaW5nUGFyYW1zMi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNjZmYxZmY0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL21ldGhvZC9nZW5lcmljcy9EZXBlbmRpbmdQYXJhbXMyLmphdmEKQEAgLTAsMCArMSwxNCBAQAoraW50ZXJmYWNlIFJ1bm5hYmxle30KK2ludGVyZmFjZSBDbGFzczxUPnt9CisKK3B1YmxpYyBjbGFzcyBGb28gaW1wbGVtZW50cyBSdW5uYWJsZXsKKyAgc3RhdGljIDxUPiB2b2lkIGZvbyhDbGFzczxUPiBhQ2xhc3MsIFQgdCkgeyB9CisKKyAgQ2xhc3M8Rm9vPiBnZXRDKCl7IHJldHVybiBuZXcgQ2xhc3M8Rm9vPigpe307fQorICBwdWJsaWMgdm9pZCBydW4oKSB7CisgIH0KKworICB7CisgICAgPHJlZj5mb28obmV3IENsYXNzPFJ1bm5hYmxlPigpe30sIHRoaXMpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL21ldGhvZC9nZW5lcmljcy9FeHBsaWNpdFBhcmFtczEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVzb2x2ZS9tZXRob2QvZ2VuZXJpY3MvRXhwbGljaXRQYXJhbXMxLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjljMDIyZWIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvbWV0aG9kL2dlbmVyaWNzL0V4cGxpY2l0UGFyYW1zMS5qYXZhCkBAIC0wLDAgKzEsOCBAQAorY2xhc3MgRm9vIHsKKyAgICA8VD4gVCBmKCkgeworICAgIH0KKworICAgIHsKKyAgICAgIHRoaXMuPFN0cmluZz48cmVmPmYoKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL21ldGhvZC9nZW5lcmljcy9FeHBsaWNpdFBhcmFtczIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVzb2x2ZS9tZXRob2QvZ2VuZXJpY3MvRXhwbGljaXRQYXJhbXMyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzNhOWNmNgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVzb2x2ZS9tZXRob2QvZ2VuZXJpY3MvRXhwbGljaXRQYXJhbXMyLmphdmEKQEAgLTAsMCArMSw4IEBACitjbGFzcyBGb28geworICAgIDxUPiBGb288VD4gZigpIHsKKyAgICB9CisKKyAgICBzdGF0aWMgeworICAgICAgbmV3IEZvbygpLjxJbnRlZ2VyPjxyZWY+ZigpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvbWV0aG9kL2dlbmVyaWNzL0V4dGVuZHMxLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvbWV0aG9kL2dlbmVyaWNzL0V4dGVuZHMxLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGRmNDVhOAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVzb2x2ZS9tZXRob2QvZ2VuZXJpY3MvRXh0ZW5kczEuamF2YQpAQCAtMCwwICsxLDE0IEBACisKK2NsYXNzIFRlc3R7CisgICAgaW50ZXJmYWNlIE1hcDxLLCBWPnsKKyAgICAgICAgSyBwdXQoSyBrLCBWIHYpOworICAgIH0KKworICAgIGNsYXNzIEhhc2hNYXAgaW1wbGVtZW50cyBNYXA8SW50ZWdlciwgSW50ZWdlcj57CisgICAgfQorCisgICAgeworICAgICAgICBIYXNoTWFwIG1hcCA9IG5ldyBIYXNoTWFwKCk7CisgICAgICAgIG1hcC5wdXQobmV3IEludGVnZXIoMSksIG5ldyBJbnRlZ2VyKDEpKS48cmVmPmJ5dGVWYWx1ZSgpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvbWV0aG9kL2dlbmVyaWNzL0ZpbHRlckJveGluZzEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVzb2x2ZS9tZXRob2QvZ2VuZXJpY3MvRmlsdGVyQm94aW5nMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNiNDUxN2YKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvbWV0aG9kL2dlbmVyaWNzL0ZpbHRlckJveGluZzEuamF2YQpAQCAtMCwwICsxLDE0IEBACitjbGFzcyBUZXN0MSB7CisgICAgcHVibGljIHN0YXRpYyB2b2lkIG1ldGhvZChPYmplY3QgbywgYm9vbGVhbiBiKSB7CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiT2JqZWN0Iik7CisgICAgfQorCisgICAgcHVibGljIHN0YXRpYyB2b2lkIG1ldGhvZChTdHJpbmcgcywgT2JqZWN0IG8pIHsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJTdHJpbmciKTsKKyAgICB9CisKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CisgICAgICAgIDxyZWY+bWV0aG9kKCJIZWxsbywgV29ybGQiLCBmYWxzZSk7CisgICAgfQorCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL21ldGhvZC9nZW5lcmljcy9GaWx0ZXJGaXhlZFZzVmFyYXJnczEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVzb2x2ZS9tZXRob2QvZ2VuZXJpY3MvRmlsdGVyRml4ZWRWc1ZhcmFyZ3MxLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTg3NWIyZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVzb2x2ZS9tZXRob2QvZ2VuZXJpY3MvRmlsdGVyRml4ZWRWc1ZhcmFyZ3MxLmphdmEKQEAgLTAsMCArMSwxNCBAQAorIGNsYXNzIENhc3QgeworICAgIHB1YmxpYyB2b2lkIGYoT2JqZWN0IG8xLCBTdHJpbmcgLi4uIG8pIHsKKworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIGYoU3RyaW5nIHMsIEludGVnZXIgbykgeworCisgICAgfQorCisgICAgcHVibGljIHZvaWQgZygpIHsKKy8vIENvZGUgaXMgZ3JlZW4gLSBidXQgd2UgbmVlZCBhIGNhc3QgaGVyZQorICAgICAgICA8cmVmPmYobnVsbCwgbnVsbCk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVzb2x2ZS9tZXRob2QvZ2VuZXJpY3MvRmlsdGVyRml4ZWRWc1ZhcmFyZ3MyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvbWV0aG9kL2dlbmVyaWNzL0ZpbHRlckZpeGVkVnNWYXJhcmdzMi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmViMzhhMDkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvbWV0aG9kL2dlbmVyaWNzL0ZpbHRlckZpeGVkVnNWYXJhcmdzMi5qYXZhCkBAIC0wLDAgKzEsMTQgQEAKKyBjbGFzcyBDYXN0IHsKKyAgICBwdWJsaWMgdm9pZCBmKFN0cmluZyAuLi4gbykgeworCisgICAgfQorCisgICAgcHVibGljIHZvaWQgZihJbnRlZ2VyIG8pIHsKKworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIGcoKSB7CisvLyBDb2RlIGlzIGdyZWVuIC0gYnV0IHdlIG5lZWQgYSBjYXN0IGhlcmUKKyAgICAgICAgPHJlZj5mKG51bGwpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvbWV0aG9kL2dlbmVyaWNzL0ZpbHRlckZpeGVkVnNWYXJhcmdzMy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL21ldGhvZC9nZW5lcmljcy9GaWx0ZXJGaXhlZFZzVmFyYXJnczMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MTU2ZjY5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL21ldGhvZC9nZW5lcmljcy9GaWx0ZXJGaXhlZFZzVmFyYXJnczMuamF2YQpAQCAtMCwwICsxLDE2IEBACitjbGFzcyBBIHt9CitjbGFzcyBCIGV4dGVuZHMgQXt9CitjbGFzcyBDYXN0IHsKKyAgICBwdWJsaWMgdm9pZCBmKEEuLi4gbykgeworCisgICAgfQorCisgICAgcHVibGljIHZvaWQgZihBIG8pIHsKKworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIGcoKSB7CisvLyBDb2RlIGlzIGdyZWVuIC0gYnV0IHdlIG5lZWQgYSBjYXN0IGhlcmUKKyAgICAgICAgPHJlZj5mKG51bGwpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvbWV0aG9kL2dlbmVyaWNzL0ZpbHRlckZpeGVkVnNWYXJhcmdzNC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL21ldGhvZC9nZW5lcmljcy9GaWx0ZXJGaXhlZFZzVmFyYXJnczQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44N2Q1MWYwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL21ldGhvZC9nZW5lcmljcy9GaWx0ZXJGaXhlZFZzVmFyYXJnczQuamF2YQpAQCAtMCwwICsxLDE2IEBACitjbGFzcyBBIHt9CitjbGFzcyBCIGV4dGVuZHMgQXt9CitjbGFzcyBDYXN0IHsKKyAgICBwdWJsaWMgdm9pZCBmKEEuLi4gbykgeworCisgICAgfQorCisgICAgcHVibGljIHZvaWQgZihBIG8pIHsKKworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIGcoKSB7CisvLyBDYXN0cyBlbnN1cmVzIGNvcnJlY3QgY2FuZGlkYXRlcyBmaWx0ZXJpbmcKKyAgICAgICAgPHJlZj5mKChBKSBudWxsKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL21ldGhvZC9nZW5lcmljcy9GaWx0ZXJGaXhlZFZzVmFyYXJnczUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVzb2x2ZS9tZXRob2QvZ2VuZXJpY3MvRmlsdGVyRml4ZWRWc1ZhcmFyZ3M1LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2NiODM5ZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVzb2x2ZS9tZXRob2QvZ2VuZXJpY3MvRmlsdGVyRml4ZWRWc1ZhcmFyZ3M1LmphdmEKQEAgLTAsMCArMSwxOCBAQAoraW1wb3J0IGphdmEudXRpbC5MaXN0OworCitjbGFzcyBBIHsKKyAgICBzdGF0aWMgTGlzdDxTdHJpbmc+IGxpc3RPZihTdHJpbmcuLi4gZWxlbWVudHMpIHsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJpbiB2YXJhcmdzIik7CisgICAgICAgIHJldHVybiBudWxsOworICAgIH0KKworICAgIHN0YXRpYyBMaXN0PFN0cmluZz4gbGlzdE9mKE9iamVjdCBlbGVtZW50cykgeworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oImluIG5vbnZhcmFyZ3MiKTsKKyAgICAgICAgcmV0dXJuIG51bGw7CisgICAgfQorCisgICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgeworICAgICAgICAvL3Jlc29sdmVzIHRvIG5vbnZhcmFyZ3MgbWV0aG9kCisgICAgICAgIExpc3Q8U3RyaW5nPiB1aG9oID0gICA8cmVmPmxpc3RPZigiIik7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVzb2x2ZS9tZXRob2QvZ2VuZXJpY3MvRmlsdGVyRml4ZWRWc1ZhcmFyZ3M2LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvbWV0aG9kL2dlbmVyaWNzL0ZpbHRlckZpeGVkVnNWYXJhcmdzNi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhkMGViNGYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvbWV0aG9kL2dlbmVyaWNzL0ZpbHRlckZpeGVkVnNWYXJhcmdzNi5qYXZhCkBAIC0wLDAgKzEsMTkgQEAKK2ltcG9ydCBqYXZhLnV0aWwuTGlzdDsKKworY2xhc3MgQSB7CisgICAgc3RhdGljIDxUPiBMaXN0PFQ+IGxpc3RPZihULi4uIGVsZW1lbnRzKSB7CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiaW4gdmFyYXJncyIpOworICAgICAgICByZXR1cm4gbnVsbDsKKyAgICB9CisKKyAgICBzdGF0aWMgPFQ+IExpc3Q8VD4gbGlzdE9mKFQgZWxlbWVudHMpIHsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJpbiBub252YXJhcmdzIik7CisgICAgICAgIHJldHVybiBudWxsOworICAgIH0KKworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKKyAgICAgICAgU3RyaW5nW10gYXJyYXkgPSB7ImZvbyIsICJiYXIifTsKKyAgICAgICAgLy9yZXNvbHZlcyB0byB2YXJhcmdzIG1ldGhvZAorICAgICAgICBMaXN0PFN0cmluZz4gdWhvaCA9ICAgPHJlZj5saXN0T2YoYXJyYXkpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvbWV0aG9kL2dlbmVyaWNzL0ZpbHRlckZpeGVkVnNWYXJhcmdzNy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL21ldGhvZC9nZW5lcmljcy9GaWx0ZXJGaXhlZFZzVmFyYXJnczcuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNDkyYzQ2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL21ldGhvZC9nZW5lcmljcy9GaWx0ZXJGaXhlZFZzVmFyYXJnczcuamF2YQpAQCAtMCwwICsxLDE5IEBACitpbXBvcnQgamF2YS51dGlsLkxpc3Q7CisKKyBjbGFzcyBBIHsKKyAgICAgc3RhdGljIDxUPiBMaXN0PFRbXT4gbGlzdE9mKFRbXS4uLiBlbGVtZW50cykgeworICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJpbiBtdWx0aXBsZSIpOworICAgICAgICAgcmV0dXJuIEFycmF5cy5hc0xpc3QoZWxlbWVudHMpOworICAgICB9CisKKyAgICAgc3RhdGljIDxUPiBMaXN0PFRbXT4gbGlzdE9mKFRbXSBlbGVtZW50cykgeworICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJpbiBzaW5nbGUiKTsKKyAgICAgICAgIHJldHVybiBDb2xsZWN0aW9ucy5zaW5nbGV0b25MaXN0KGVsZW1lbnRzKTsKKyAgICAgfQorCisgICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKKyAgICAgICAgIFN0cmluZ1tdIGFycmF5ID0geyJmb28iLCAiYmFyIn07CisgICAgICAgICAvL3Jlc29sdmVzIHRvIG5vbnZhcmFyZ3MgbWV0aG9kCisgICAgICAgICBMaXN0PFN0cmluZ1tdPiBsaXN0T2ZTdHJpbmcgPSAgPHJlZj5saXN0T2YoYXJyYXkpOworICAgICB9CisgfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL21ldGhvZC9nZW5lcmljcy9GaWx0ZXJGaXhlZFZzVmFyYXJnczguamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVzb2x2ZS9tZXRob2QvZ2VuZXJpY3MvRmlsdGVyRml4ZWRWc1ZhcmFyZ3M4LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTA5ZTZmZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVzb2x2ZS9tZXRob2QvZ2VuZXJpY3MvRmlsdGVyRml4ZWRWc1ZhcmFyZ3M4LmphdmEKQEAgLTAsMCArMSw4IEBACitjbGFzcyBISCB7CisgICAgSEgoT2JqZWN0IG8xLCBPYmplY3QgbzIpIHsKKyAgICAgICAgPHJlZj50aGlzKG8xLCBvMik7CisgICAgfQorCisKKyAgICBISChPYmplY3QuLi4gb3MpIHt9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL21ldGhvZC9nZW5lcmljcy9GaWx0ZXJGaXhlZFZzVmFyYXJnczkuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVzb2x2ZS9tZXRob2QvZ2VuZXJpY3MvRmlsdGVyRml4ZWRWc1ZhcmFyZ3M5LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTBkODNmYQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVzb2x2ZS9tZXRob2QvZ2VuZXJpY3MvRmlsdGVyRml4ZWRWc1ZhcmFyZ3M5LmphdmEKQEAgLTAsMCArMSwxNCBAQAorIGNsYXNzIFBhcmVudE9mIHsKKyAgICAgcHVibGljIHN0YXRpYyA8VCBleHRlbmRzIFBzaUVsZW1lbnQ+IFQgZ2V0UGFyZW50T2ZUeXBlKFBzaUVsZW1lbnQgZWxlbWVudCwgQ2xhc3M8VD4gYUNsYXNzLCBib29sZWFuIHN0cmljdCkgeworICAgICAgIHJldHVybiBudWxsOworICAgICB9CisgICAgIHB1YmxpYyBzdGF0aWMgPFQgZXh0ZW5kcyBQc2lFbGVtZW50PiBUIGdldFBhcmVudE9mVHlwZShQc2lFbGVtZW50IGVsZW1lbnQsIENsYXNzPD8gZXh0ZW5kcyBUPi4uLiBjbGFzc2VzKSB7CisgICAgICAgcmV0dXJuIG51bGw7CisgICAgIH0KKworICAgICB2b2lkIGYoUHNpRWxlbWVudCBlKSB7CisgICAgICAgICA8cmVmPmdldFBhcmVudE9mVHlwZShlLCBQc2lFbGVtZW50LmNsYXNzLCBQc2lFbGVtZW50LmNsYXNzKTsKKyAgICAgfQorCisgICAgIHN0YXRpYyBjbGFzcyBQc2lFbGVtZW50IHt9CisgfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL21ldGhvZC9nZW5lcmljcy9GaWx0ZXJWYXJhcmdzVnNWYXJhcmdzMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL21ldGhvZC9nZW5lcmljcy9GaWx0ZXJWYXJhcmdzVnNWYXJhcmdzMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY3Yzg1NGIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvbWV0aG9kL2dlbmVyaWNzL0ZpbHRlclZhcmFyZ3NWc1ZhcmFyZ3MxLmphdmEKQEAgLTAsMCArMSwxNSBAQAorY2xhc3MgWFkgeworICAgIHB1YmxpYyBzdGF0aWMgT2JqZWN0IGdldExvY2FsaXplZE9iamVjdChPYmplY3QuLi4gb2JqZWN0cykgeworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oImluIGZpcnN0Iik7CisgICAgICAgIHJldHVybiBudWxsOworICAgIH0KKworICAgIHB1YmxpYyBzdGF0aWMgT2JqZWN0IGdldExvY2FsaXplZE9iamVjdChJbnRlZ2VyIGksIFN0cmluZyBzdHJpbmcsIE9iamVjdC4uLiBvYmplY3RzKSB7CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiaW4gc2Vjb25kIik7CisgICAgICAgIHJldHVybiBudWxsOworICAgIH0KKworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKKyAgICAgICAgICAgIDxyZWY+Z2V0TG9jYWxpemVkT2JqZWN0KG51bGwsICAgIiIpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvbWV0aG9kL2dlbmVyaWNzL0ZpbHRlclZhcmFyZ3NWc1ZhcmFyZ3MyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvbWV0aG9kL2dlbmVyaWNzL0ZpbHRlclZhcmFyZ3NWc1ZhcmFyZ3MyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGMxOWEyYQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVzb2x2ZS9tZXRob2QvZ2VuZXJpY3MvRmlsdGVyVmFyYXJnc1ZzVmFyYXJnczIuamF2YQpAQCAtMCwwICsxLDkgQEAKK2NsYXNzIFhZIHsKKyAgICBwcml2YXRlIHZvaWQgZihieXRlLi4uIGJzKSB7fQorCisgICAgcHJpdmF0ZSB2b2lkIGYoaW50Li4uIGlzKSB7fQorCisgICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgeworICAgICAgICAgICAgPHJlZj5mKChieXRlKTAsIChieXRlKTEpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvbWV0aG9kL2dlbmVyaWNzL0ZpbHRlclZhcmFyZ3NWc1ZhcmFyZ3MzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvbWV0aG9kL2dlbmVyaWNzL0ZpbHRlclZhcmFyZ3NWc1ZhcmFyZ3MzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTMwNjZmYgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVzb2x2ZS9tZXRob2QvZ2VuZXJpY3MvRmlsdGVyVmFyYXJnc1ZzVmFyYXJnczMuamF2YQpAQCAtMCwwICsxLDkgQEAKK2NsYXNzIFhZIHsKKyAgICBwcml2YXRlIHZvaWQgZihPYmplY3QuLi4gYnMpIHt9CisKKyAgICBwcml2YXRlIHZvaWQgZihpbnQuLi4gaXMpIHt9CisKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CisgICAgICAgICAgICA8cmVmPmYoKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL21ldGhvZC9nZW5lcmljcy9GaWx0ZXJWYXJhcmdzVnNWYXJhcmdzNC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL21ldGhvZC9nZW5lcmljcy9GaWx0ZXJWYXJhcmdzVnNWYXJhcmdzNC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYwMGZiM2QKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvbWV0aG9kL2dlbmVyaWNzL0ZpbHRlclZhcmFyZ3NWc1ZhcmFyZ3M0LmphdmEKQEAgLTAsMCArMSw5IEBACitjbGFzcyBYWSB7CisgICAgcHJpdmF0ZSB2b2lkIGYoU3RyaW5nLi4uIGJzKSB7fQorCisgICAgcHJpdmF0ZSB2b2lkIGYoaW50Li4uIGlzKSB7fQorCisgICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgeworICAgICAgICAgICAgPHJlZj5mKCk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVzb2x2ZS9tZXRob2QvZ2VuZXJpY3MvR2VuZXJpY0NsYXNzMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL21ldGhvZC9nZW5lcmljcy9HZW5lcmljQ2xhc3MxLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDIxODAzYgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVzb2x2ZS9tZXRob2QvZ2VuZXJpY3MvR2VuZXJpY0NsYXNzMS5qYXZhCkBAIC0wLDAgKzEsOSBAQAoraW50ZXJmYWNlIEZvbyBleHRlbmRzIENvbXBhcmFibGUgeworICAgIHZvaWQgY29tcGFyZVRvKEZvbyBmb28pOworfQorCitjbGFzcyBVc2VyIHsKKyAgICB2b2lkIGZvbyAoRm9vIGZvbykgeworICAgICAgICBmb28uPHJlZj5jb21wYXJlVG8oZm9vKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL21ldGhvZC9nZW5lcmljcy9HZW5lcmljQ2xhc3MyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvbWV0aG9kL2dlbmVyaWNzL0dlbmVyaWNDbGFzczIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMjk3Nzg3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL21ldGhvZC9nZW5lcmljcy9HZW5lcmljQ2xhc3MyLmphdmEKQEAgLTAsMCArMSwxMiBAQAoraW1wb3J0IGphdmEudXRpbC4qOworCitjbGFzcyBGb288VD4geworICAgIHZvaWQgZihBcnJheUxpc3Q8VD4gdCkge30KKyAgICA8Vj4gdm9pZCBmKExpc3Q8Vj4gdCkge30KK30KKworY2xhc3MgVXNlciB7CisgICAgdm9pZCBmb28gKEZvbzxTdHJpbmc+IGZvbykgeworICAgICAgIGZvby48cmVmPmYobmV3IEFycmF5TGlzdDxTdHJpbmc+KCkpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvbWV0aG9kL2dlbmVyaWNzL0dlbmVyaWNNZXRob2RzMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL21ldGhvZC9nZW5lcmljcy9HZW5lcmljTWV0aG9kczEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMzJjMjQzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL21ldGhvZC9nZW5lcmljcy9HZW5lcmljTWV0aG9kczEuamF2YQpAQCAtMCwwICsxLDEzIEBACitpbXBvcnQgamF2YS51dGlsLio7CisKK3B1YmxpYyBjbGFzcyBBQUEgeworICAgIDxUPiB2b2lkIGYoamF2YS51dGlsLkxpc3Q8VD4gdCkgeworICAgIH0KKworICAgIHZvaWQgZihDb2xsZWN0aW9uPFN0cmluZz4gcykgeworICAgIH0KKworICAgIHZvaWQgeShMaXN0PFN0cmluZz4gc3RyaW5ncykgeworICAgICAgICA8cmVmPmYoc3RyaW5ncyk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL21ldGhvZC9nZW5lcmljcy9HZW5lcmljTWV0aG9kczIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVzb2x2ZS9tZXRob2QvZ2VuZXJpY3MvR2VuZXJpY01ldGhvZHMyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODM5M2FhMQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVzb2x2ZS9tZXRob2QvZ2VuZXJpY3MvR2VuZXJpY01ldGhvZHMyLmphdmEKQEAgLTAsMCArMSwxMyBAQAoraW1wb3J0IGphdmEudXRpbC4qOworCitwdWJsaWMgY2xhc3MgQUFBIHsKKyAgICA8VD4gdm9pZCBmKENvbGxlY3Rpb248VD4gdCkgeworICAgIH0KKworICAgIHZvaWQgZihqYXZhLnV0aWwuTGlzdDxTdHJpbmc+IHMpIHsKKyAgICB9CisKKyAgICB2b2lkIHkoTGlzdDxTdHJpbmc+IHN0cmluZ3MpIHsKKyAgICAgICAgPHJlZj5mKHN0cmluZ3MpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVzb2x2ZS9tZXRob2QvZ2VuZXJpY3MvR2VuZXJpY01ldGhvZHMzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvbWV0aG9kL2dlbmVyaWNzL0dlbmVyaWNNZXRob2RzMy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZlZjAxMDIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvbWV0aG9kL2dlbmVyaWNzL0dlbmVyaWNNZXRob2RzMy5qYXZhCkBAIC0wLDAgKzEsMTEgQEAKK3B1YmxpYyBjbGFzcyBBQUEgeworICAgIDxUPiB2b2lkIGcoVCB0KSB7CisgICAgfQorCisgICAgdm9pZCBnKFN0cmluZyBzKSB7CisgICAgfQorCisgICAgeworICAgICAgICA8cmVmPmcoIiIpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVzb2x2ZS9tZXRob2QvZ2VuZXJpY3MvR2VuZXJpY01ldGhvZHM0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvbWV0aG9kL2dlbmVyaWNzL0dlbmVyaWNNZXRob2RzNC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRlZTZjYmYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvbWV0aG9kL2dlbmVyaWNzL0dlbmVyaWNNZXRob2RzNC5qYXZhCkBAIC0wLDAgKzEsMTEgQEAKK3B1YmxpYyBjbGFzcyBBQUEgeworICAgIDxUPiB2b2lkIGcoVC4uLiB0KSB7CisgICAgfQorCisgICAgdm9pZCBnKFN0cmluZy4uLiBzKSB7CisgICAgfQorCisgICAgeworICAgICAgICA8cmVmPmcoIiIpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVzb2x2ZS9tZXRob2QvZ2VuZXJpY3MvR2VuZXJpY01ldGhvZHM1LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvbWV0aG9kL2dlbmVyaWNzL0dlbmVyaWNNZXRob2RzNS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJlYzg2YmUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvbWV0aG9kL2dlbmVyaWNzL0dlbmVyaWNNZXRob2RzNS5qYXZhCkBAIC0wLDAgKzEsMTkgQEAKK2NsYXNzIEtleTxUPiB7IFQgdDsgfQorCitjbGFzcyBXS2V5PFcsIFQ+IGV4dGVuZHMgS2V5PFQ+IHsgVyB3OyB9CisKK2NsYXNzIEl0ZW1zIHsKKyAgICA8VD4gdm9pZCBhZGRJdGVtKEtleTxUPiBrZXksIFQgdmFsdWUpIHt9CisKKyAgICA8VCwgVz4gdm9pZCBhZGRJdGVtKFdLZXk8VywgVD4ga2V5LCBUIHZhbHVlKSB7fQorfQorCitjbGFzcyBJQnVnIHsKKyAgICBwdWJsaWMgSUJ1ZygpIHsKKyAgICAgICAgSXRlbXMgaXRlbXMgPSBuZXcgSXRlbXMoKTsKKworICAgICAgICBXS2V5PE9iamVjdCwgU3RyaW5nPiBzayA9IG5ldyBXS2V5PE9iamVjdCwgU3RyaW5nPigpOworCisgICAgICAgIGl0ZW1zLjxyZWY+YWRkSXRlbShzaywgICIiKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL21ldGhvZC9nZW5lcmljcy9HZW5lcmljTWV0aG9kczYuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVzb2x2ZS9tZXRob2QvZ2VuZXJpY3MvR2VuZXJpY01ldGhvZHM2LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2I5N2JjOAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVzb2x2ZS9tZXRob2QvZ2VuZXJpY3MvR2VuZXJpY01ldGhvZHM2LmphdmEKQEAgLTAsMCArMSwxOCBAQAorY2xhc3MgQ29udGFpbmVyVXRpbCB7CisgICAgaW50ZXJmYWNlIENvbmRpdGlvbjxUPiB7CisgICAgICAgIGJvb2xlYW4gdmFsdWUoVCBvYmplY3QpOworICAgIH0KKworICAgIHB1YmxpYyBzdGF0aWMgPFQ+IFQgZmluZChJdGVyYWJsZTw/IGV4dGVuZHMgVD4gaXRlcmFibGUsIGZpbmFsIFQgZXF1YWxUbykgeworICAgICAgICByZXR1cm4gPHJlZj5maW5kKGl0ZXJhYmxlLCBuZXcgQ29uZGl0aW9uPFQ+KCkgeworICAgICAgICAgICAgcHVibGljIGJvb2xlYW4gdmFsdWUoZmluYWwgVCBvYmplY3QpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gZXF1YWxUbyA9PSBvYmplY3QgfHwgZXF1YWxUby5lcXVhbHMob2JqZWN0KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSk7CisgICAgfQorCisgICAgcHVibGljIHN0YXRpYyA8VD4gVCBmaW5kKEl0ZXJhYmxlPD8gZXh0ZW5kcyBUPiBpdGVyYWJsZSwgQ29uZGl0aW9uPFQ+IGNvbmRpdGlvbikgeworICAgICAgICByZXR1cm4gbnVsbDsKKyAgICB9CisKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVzb2x2ZS9tZXRob2QvZ2VuZXJpY3MvR2VuZXJpY3NBbmRWYXJhcmdzTm9Db25mbGljdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL21ldGhvZC9nZW5lcmljcy9HZW5lcmljc0FuZFZhcmFyZ3NOb0NvbmZsaWN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTUxM2QzOAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVzb2x2ZS9tZXRob2QvZ2VuZXJpY3MvR2VuZXJpY3NBbmRWYXJhcmdzTm9Db25mbGljdC5qYXZhCkBAIC0wLDAgKzEsMTIgQEAKK2NsYXNzIFRlc3QgeworCisgICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgeworICAgICAgIDxyZWY+bWV0aG9kKCJhIiwgImIiLCAiYyIpOworICAgIH0KKworICAgIHB1YmxpYyBzdGF0aWMgPFQ+IFQgbWV0aG9kKFQuLi4gYSkgeworICAgICAgICByZXR1cm4gbnVsbDsKKyAgICB9CisKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWV0aG9kKFN0cmluZy4uLiBhKSB7fQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVzb2x2ZS9tZXRob2QvZ2VuZXJpY3MvR2V0Q2xhc3MuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVzb2x2ZS9tZXRob2QvZ2VuZXJpY3MvR2V0Q2xhc3MuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMDE4NDk0NjkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvbWV0aG9kL2dlbmVyaWNzL0dldENsYXNzLmphdmEKQEAgLTAsMCArMSw1IEBACitjbGFzcyBUZXN0IHsKKyAgICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgeworICAgICAgICAic3NzIi48cmVmPmdldENsYXNzKCk7CisgICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvbWV0aG9kL2dlbmVyaWNzL0hpZGluZ1N1cGVyUHJpdmF0ZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL21ldGhvZC9nZW5lcmljcy9IaWRpbmdTdXBlclByaXZhdGUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZTNhYTFmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL21ldGhvZC9nZW5lcmljcy9IaWRpbmdTdXBlclByaXZhdGUuamF2YQpAQCAtMCwwICsxLDE4IEBACisgcHVibGljIGFic3RyYWN0IGNsYXNzIEJhc2VUZXN0CisgeworICAgICBwcml2YXRlIE9iamVjdCBmKCkgeworICAgICAgICAgcmV0dXJuIG51bGw7CisgICAgIH0KKworIH0KKyBjbGFzcyBTIHsKKyAgICAgcHJpdmF0ZSBPYmplY3QgZigpIHsKKyAgICAgICAgIG5ldyBCYXNlVGVzdCgpIHsKKyAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgIDxyZWY+ZigpOyAKKyAgICAgICAgICAgICB9CisgICAgICAgICB9OworCisgICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgfQorIH0KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVzb2x2ZS9tZXRob2QvZ2VuZXJpY3MvSW5oZXJpdGFuY2UxLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvbWV0aG9kL2dlbmVyaWNzL0luaGVyaXRhbmNlMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM1YjRlNGIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvbWV0aG9kL2dlbmVyaWNzL0luaGVyaXRhbmNlMS5qYXZhCkBAIC0wLDAgKzEsMTYgQEAKKworY2xhc3MgVGVzdHsKKworICAgIGNsYXNzIEEgPFQ+eworICAgICAgICBCPFQ+IHg7CisgICAgICAgIGNsYXNzIEIgPFo+eworICAgICAgICAgICAgcHVibGljIHZvaWQgcHV0KFQgeCwgWiB5KXt9CisgICAgICAgICAgICBwdWJsaWMgWiBnZXRaKCl7fQorICAgICAgICAgICAgcHVibGljIFQgZ2V0VCgpe30KKyAgICAgICAgfQorICAgIH0KKworICAgIHsKKyAgICAgICAgbmV3IEE8SW50ZWdlcj4oKS54LmdldFQoKS48cmVmPmJ5dGVWYWx1ZSgpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvbWV0aG9kL2dlbmVyaWNzL0luaGVyaXRhbmNlMi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL21ldGhvZC9nZW5lcmljcy9Jbmhlcml0YW5jZTIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NzRiMWZkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL21ldGhvZC9nZW5lcmljcy9Jbmhlcml0YW5jZTIuamF2YQpAQCAtMCwwICsxLDE2IEBACisKK2NsYXNzIFRlc3R7CisKKyAgICBjbGFzcyBBIDxUPnsKKyAgICAgICAgQiB4OworICAgICAgICBjbGFzcyBCIDxaPnsKKyAgICAgICAgICAgIHB1YmxpYyB2b2lkIHB1dChUIHgsIFogeSl7fQorICAgICAgICAgICAgcHVibGljIFogZ2V0Wigpe30KKyAgICAgICAgICAgIHB1YmxpYyBUIGdldFQoKXt9CisgICAgICAgIH0KKyAgICB9CisKKyAgICB7CisgICAgICAgIG5ldyBBPEludGVnZXI+KCkubmV3IEI8Qm9vbGVhbj4oKS5nZXRaKCkuPHJlZj5ib29sZWFuVmFsdWUoKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL21ldGhvZC9nZW5lcmljcy9Jbmhlcml0YW5jZTMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVzb2x2ZS9tZXRob2QvZ2VuZXJpY3MvSW5oZXJpdGFuY2UzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDhhYzY1ZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVzb2x2ZS9tZXRob2QvZ2VuZXJpY3MvSW5oZXJpdGFuY2UzLmphdmEKQEAgLTAsMCArMSwxNiBAQAorCitjbGFzcyBUZXN0eworCisgICAgY2xhc3MgQSA8VD57CisgICAgICAgIEIgeDsKKyAgICAgICAgY2xhc3MgQiA8Wj57CisgICAgICAgICAgICBwdWJsaWMgdm9pZCBwdXQoVCB4LCBaIHkpe30KKyAgICAgICAgICAgIHB1YmxpYyBaIGdldFooKXt9CisgICAgICAgICAgICBwdWJsaWMgVCBnZXRUKCl7fQorICAgICAgICB9CisgICAgfQorCisgICAgeworICAgICAgICBuZXcgQTxJbnRlZ2VyPigpLm5ldyBCPEJvb2xlYW4+KCkuZ2V0VCgpLjxyZWY+Ynl0ZVZhbHVlKCk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVzb2x2ZS9tZXRob2QvZ2VuZXJpY3MvSW5oZXJpdGFuY2U0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvbWV0aG9kL2dlbmVyaWNzL0luaGVyaXRhbmNlNC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBiODFjYTkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvbWV0aG9kL2dlbmVyaWNzL0luaGVyaXRhbmNlNC5qYXZhCkBAIC0wLDAgKzEsMTggQEAKKworY2xhc3MgVGVzdHsKKworICAgIGNsYXNzIEEgPFQ+eworICAgICAgICBCIHg7CisgICAgICAgIGNsYXNzIEIgPFo+eworICAgICAgICAgICAgcHVibGljIHZvaWQgcHV0KFQgeCwgWiB5KXt9CisgICAgICAgICAgICBwdWJsaWMgWiBnZXRaKCl7fQorICAgICAgICAgICAgcHVibGljIFQgZ2V0VCgpe30KKyAgICAgICAgfQorICAgIH0KKworICAgIGNsYXNzIEMgZXh0ZW5kcyBBPEludGVnZXI+e30KKworICAgIHsKKyAgICAgICAgbmV3IEMoKS5uZXcgQjxCb29sZWFuPigpLmdldFQoKS48cmVmPmJ5dGVWYWx1ZSgpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvbWV0aG9kL2dlbmVyaWNzL01lcmdlMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL21ldGhvZC9nZW5lcmljcy9NZXJnZTEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MDI5YzMwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL21ldGhvZC9nZW5lcmljcy9NZXJnZTEuamF2YQpAQCAtMCwwICsxLDE0IEBACitjbGFzcyBUZXN0IDxUPnsKKyAgICB7CisgICAgICAgIFRlc3Q8VGVzdDxUZXN0Pj4gdGVzdCA9IG5ldyBUZXN0PFRlc3Q+KCk7CisgICAgICAgIHsKKyAgICAgICAgICAgICB0ZXN0LnB1dCgiIik7CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgdGVzdC5nZXQoKS5nZXQoKS5nZXQoKS48cmVmPmdldCgpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgVCBnZXQoKXsgcmV0dXJuIG51bGw7IH0KKyAgICB2b2lkIHB1dChUIHgpe30KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVzb2x2ZS9tZXRob2QvZ2VuZXJpY3MvTW9yZVNwZWNpZmljU2FtZUVyYXN1cmUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVzb2x2ZS9tZXRob2QvZ2VuZXJpY3MvTW9yZVNwZWNpZmljU2FtZUVyYXN1cmUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MTY5NGIxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL21ldGhvZC9nZW5lcmljcy9Nb3JlU3BlY2lmaWNTYW1lRXJhc3VyZS5qYXZhCkBAIC0wLDAgKzEsMjAgQEAKK2ltcG9ydCBqYXZhLnV0aWwuKjsKKworY2xhc3MgU1NTIHsKKyAgICBwdWJsaWMgPFQ+IHZvaWQgeChMaXN0PFQ+IG1hdGNoZXIpIHsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCI8VD4iKTsKKyAgICB9CisKKyAgICBwdWJsaWMgaW50IHgoTGlzdDxMb25nPiBtYXRjaGVyKSB7CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigibG9uZyIpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBwdWJsaWMgc3RhdGljIDxUPiBMaXN0PFQ+IGFueShDbGFzczxUPiB0eXBlKSB7CisgICAgICAgIHJldHVybiBudWxsOworICAgIH0KKyAgICB2b2lkIGYoKSB7CisgICAgICAgIDxyZWY+eChhbnkoTG9uZy5jbGFzcykpOworICAgIH0KKworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL21ldGhvZC9nZW5lcmljcy9OZXN0ZWRUeXBlUGFyYW1zLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvbWV0aG9kL2dlbmVyaWNzL05lc3RlZFR5cGVQYXJhbXMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yN2VjN2JkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL21ldGhvZC9nZW5lcmljcy9OZXN0ZWRUeXBlUGFyYW1zLmphdmEKQEAgLTAsMCArMSwyMiBAQAoraW50ZXJmYWNlIFRlc3RJbnRlcmZhY2UgeworCisgICAgPEUgZXh0ZW5kcyBFbnVtPEU+PiB2b2lkIGRvU3R1ZmYoRSB0aGluZyk7Cit9CisKK2NsYXNzICBUZXN0SW1wbCBpbXBsZW1lbnRzIFRlc3RJbnRlcmZhY2UgeworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyA8SSBleHRlbmRzIEVudW08ST4+IHZvaWQgZG9TdHVmZihJIHRoaW5nKXsKKworICAgIH0KK30KKworZW51bSBUZXN0RW51bSB7CisgICAgVEhJTkcKK30KKworY2xhc3MgVGVzdHggeworICAgIHB1YmxpYyB2b2lkIGRvVGVzdCgpeworICAgICAgICBUZXN0SW1wbCBpbXBsID0gbmV3IFRlc3RJbXBsKCk7CisgICAgICAgIGltcGwuPHJlZj5kb1N0dWZmKFRlc3RFbnVtLlRISU5HKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvbWV0aG9kL2dlbmVyaWNzL1ByZWZlckFycmF5VHlwZVRvT2JqZWN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvbWV0aG9kL2dlbmVyaWNzL1ByZWZlckFycmF5VHlwZVRvT2JqZWN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzRhODQ0ZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVzb2x2ZS9tZXRob2QvZ2VuZXJpY3MvUHJlZmVyQXJyYXlUeXBlVG9PYmplY3QuamF2YQpAQCAtMCwwICsxLDIxIEBACitpbXBvcnQgamF2YS51dGlsLkFycmF5czsKKworcHVibGljIGNsYXNzIE15Q2xhc3MKK3sKKyAgcHVibGljIHN0YXRpYyA8VD4gdm9pZCBwcm9jZXNzKFQgb2JqKQorICB7CisgICAgU3lzdGVtLm91dC5wcmludGxuKCJQcm9jZXNzaW5nIG9iamVjdDogIiArIG9iaik7CisgIH0KKworICBwdWJsaWMgc3RhdGljIDxUPiB2b2lkIHByb2Nlc3MoVFtdIGFycikKKyAgeworICAgIFN5c3RlbS5vdXQucHJpbnRsbigiUHJvY2Vzc2luZyBhcnJheTogIiArIEFycmF5cy50b1N0cmluZyhhcnIpKTsKKyAgfQorCisgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpCisgIHsKKyAgICBTdHJpbmdbXSBteUFycmF5ID0gbmV3IFN0cmluZ1tdIHsgImEiLCAiYiIsICJjIiB9OworCisgICAgcHJvYzxyZWY+ZXNzKG15QXJyYXkpOyAgLy8gQ3RyLUxlZnQtQ2xpY2sgb24gInByb2Nlc3MiIHRha2VzIG1lIHRvIHRoZSB3cm9uZyBtZXRob2QhISEKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVzb2x2ZS9tZXRob2QvZ2VuZXJpY3MvUmF3SW5oZXJpdGFuY2VDb25mbGljdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL21ldGhvZC9nZW5lcmljcy9SYXdJbmhlcml0YW5jZUNvbmZsaWN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGE2ZGUwNAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVzb2x2ZS9tZXRob2QvZ2VuZXJpY3MvUmF3SW5oZXJpdGFuY2VDb25mbGljdC5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKK2NsYXNzIFhYIHsKKyAgcHVibGljIHN0YXRpYyBTdHJpbmcgZm9vKFByb3BlcnRpZXMgcCwgU3RyaW5nIHMsIGJvb2xlYW4gYil7cmV0dXJuIG51bGw7fQorICBwdWJsaWMgc3RhdGljIFN0cmluZyBmb28oTWFwIHAsIFN0cmluZyBzLCBib29sZWFuIGIpe3JldHVybiBudWxsO30KK30KK2NsYXNzIFVVIHsKKyAgdm9pZCBiYXIoKSB7CisgICAgICBQcm9wZXJ0aWVzIHAgPSBuZXcgUHJvcGVydGllcygpOworICAgICAgWFguZm88cmVmPm8ocCwgInh4eCIsIGZhbHNlKTsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL21ldGhvZC9nZW5lcmljcy9SYXdNZXRob2QxLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvbWV0aG9kL2dlbmVyaWNzL1Jhd01ldGhvZDEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MjFiNTM3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL21ldGhvZC9nZW5lcmljcy9SYXdNZXRob2QxLmphdmEKQEAgLTAsMCArMSw4IEBACitjbGFzcyBBeworIGNsYXNzIEI8VD57fQorIDxUPiB2b2lkIGZvbyhUIGEsIEI8VD4gYil7fQorCisgeworICA8cmVmPmZvbygiIiwgbmV3IEIoKSk7CisgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVzb2x2ZS9tZXRob2QvZ2VuZXJpY3MvUmF3VnNHZW5lcmljQ29uZmxpY3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVzb2x2ZS9tZXRob2QvZ2VuZXJpY3MvUmF3VnNHZW5lcmljQ29uZmxpY3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMzk2NTllCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL21ldGhvZC9nZW5lcmljcy9SYXdWc0dlbmVyaWNDb25mbGljdC5qYXZhCkBAIC0wLDAgKzEsMTYgQEAKK2NsYXNzIFRlc3RDbGFzc1QgeworICAgIHN0YXRpYyB7CisgICAgICAgIEIuPHJlZj5mb28oVGVzdENsYXNzVC5jbGFzcyk7CisgICAgfQorCisgICAgcHVibGljIHN0YXRpYyBjbGFzcyBBIHsKKyAgICAgICAgcHVibGljIHN0YXRpYyBBIGZvbyhDbGFzczw/PiB0eXBlKSB7CisgICAgICAgICAgICByZXR1cm4gbmV3IEEoKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBwdWJsaWMgc3RhdGljIGNsYXNzIEIgZXh0ZW5kcyBBIHsKKyAgICAgICAgcHVibGljIHN0YXRpYyBCIGZvbyhDbGFzcyB0eXBlKSB7CisgICAgICAgICAgICByZXR1cm4gbmV3IEIoKTsKKyAgICAgICAgfQorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvbWV0aG9kL2dlbmVyaWNzL1Jhd1ZzR2VuZXJpY0NvbmZsaWN0SW5DYXNlT2ZPdmVycmlkZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL21ldGhvZC9nZW5lcmljcy9SYXdWc0dlbmVyaWNDb25mbGljdEluQ2FzZU9mT3ZlcnJpZGUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40N2VlZDg3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL21ldGhvZC9nZW5lcmljcy9SYXdWc0dlbmVyaWNDb25mbGljdEluQ2FzZU9mT3ZlcnJpZGUuamF2YQpAQCAtMCwwICsxLDE3IEBACitjbGFzcyBUZXN0Q2xhc3NUIHsKKyAgICBzdGF0aWMgeworICAgICAgICBuZXcgQigpLjxyZWY+Zm9vKFRlc3RDbGFzc1QuY2xhc3MpOworICAgIH0KKworICAgIHB1YmxpYyBzdGF0aWMgY2xhc3MgQSB7CisgICAgICAgIHB1YmxpYyBBIGZvbyhDbGFzczw/PiB0eXBlKSB7CisgICAgICAgICAgICByZXR1cm4gbmV3IEEoKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBwdWJsaWMgc3RhdGljIGNsYXNzIEIgZXh0ZW5kcyBBIHsKKyAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgQiBmb28oQ2xhc3MgdHlwZSkgeworICAgICAgICAgICAgcmV0dXJuIG5ldyBCKCk7CisgICAgICAgIH0KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL21ldGhvZC9nZW5lcmljcy9SYXdWc0dlbmVyaWNDb25mbGljdEluQ2FzZU9mT3ZlcnJpZGUyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvbWV0aG9kL2dlbmVyaWNzL1Jhd1ZzR2VuZXJpY0NvbmZsaWN0SW5DYXNlT2ZPdmVycmlkZTIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kOTJhYjlhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL21ldGhvZC9nZW5lcmljcy9SYXdWc0dlbmVyaWNDb25mbGljdEluQ2FzZU9mT3ZlcnJpZGUyLmphdmEKQEAgLTAsMCArMSwyMSBAQAoraW1wb3J0IGphdmEudXRpbC4qOworCitjbGFzcyBDIHsKKyAgcHVibGljIHN0YXRpYyBpbnRlcmZhY2UgR2VuZXJpY0Fnbm9zdGljUHJvY2Vzc29yIHsKKyAgICB2b2lkIHByb2Nlc3NNYXAoTWFwIG1hcCk7CisgIH0KKworICBwdWJsaWMgc3RhdGljIGludGVyZmFjZSBHZW5lcmljQXdhcmVQcm9jZXNzb3IgeworICAgIHZvaWQgcHJvY2Vzc01hcChNYXA8U3RyaW5nLCBTdHJpbmc+IG1hcCk7CisgIH0KKworICBwdWJsaWMgc3RhdGljIGNsYXNzIFRlc3RQcm9jZXNzb3IgaW1wbGVtZW50cyBHZW5lcmljQXdhcmVQcm9jZXNzb3IsIEdlbmVyaWNBZ25vc3RpY1Byb2Nlc3NvciB7CisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIHZvaWQgcHJvY2Vzc01hcChNYXAgbWFwKSB7IH0KKyAgfQorCisgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKKyAgICBmaW5hbCBUZXN0UHJvY2Vzc29yIHRlc3RQcm9jZXNzb3IgPSBuZXcgVGVzdFByb2Nlc3NvcigpOworICAgIHRlc3RQcm9jZXNzb3IuPHJlZj5wcm9jZXNzTWFwKG5ldyBIYXNoTWFwKCkpOworICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvbWV0aG9kL2dlbmVyaWNzL1NPRS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL21ldGhvZC9nZW5lcmljcy9TT0UuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZDMwNGZmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL21ldGhvZC9nZW5lcmljcy9TT0UuamF2YQpAQCAtMCwwICsxLDYgQEAKK2ltcG9ydCBqYXZhLnV0aWwuQ29tcGFyYXRvcjsKKworYWJzdHJhY3QgY2xhc3MgWjxUIGV4dGVuZHMgWi5OYW1lUmVmPiBpbXBsZW1lbnRzIENvbXBhcmF0b3I8VD4geworICAgc3RhdGljIGFic3RyYWN0IGNsYXNzIE5hbWVSZWYgaW1wbGVtZW50cyBqYXZhLmxhbmcuQ29tcGFyYWJsZTxULjxyZWY+TmFtZVJlZj4geworICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL21ldGhvZC9nZW5lcmljcy9TdGF0aWNJbXBvcnRDb25mbGljdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL21ldGhvZC9nZW5lcmljcy9TdGF0aWNJbXBvcnRDb25mbGljdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQzZDg3Y2IKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvbWV0aG9kL2dlbmVyaWNzL1N0YXRpY0ltcG9ydENvbmZsaWN0LmphdmEKQEAgLTAsMCArMSw5IEBACitpbXBvcnQgc3RhdGljIGphdmEudXRpbC5BcnJheXMuKjsKK2ltcG9ydCBzdGF0aWMgamF2YS51dGlsLkNvbGxlY3Rpb25zLnNvcnQ7CisKK2NsYXNzIEMgeworICB7CisgICAgaW50W10gYXJyYXkgPSBudWxsOworICAgIDxyZWY+c29ydChhcnJheSk7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvbWV0aG9kL2dlbmVyaWNzL1N0YXRpY0ltcG9ydENvbmZsaWN0MS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL21ldGhvZC9nZW5lcmljcy9TdGF0aWNJbXBvcnRDb25mbGljdDEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNzY5OTRlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL21ldGhvZC9nZW5lcmljcy9TdGF0aWNJbXBvcnRDb25mbGljdDEuamF2YQpAQCAtMCwwICsxLDIxIEBACitpbXBvcnQgc3RhdGljIGphdmEubGFuZy5JbnRlZ2VyLnBhcnNlSW50OworCitwdWJsaWMgY2xhc3MgWCB7CisKKyAgICBwcml2YXRlIFN0cmluZyBzdHI7CisKKyAgICBwdWJsaWMgWChTdHJpbmcgc3RyKSB7CisgICAgICAgIHRoaXMuc3RyID0gc3RyOworICAgIH0KKworICAgIHB1YmxpYyBpbnQgcGFyc2VJbnQoKXsKKyAgICAgICAgLy9UaGUgZm9sbG93aW5nIGxpbmUgaXMgcmVqZWN0ZWQgYnkgdGhlIGNvbXBpbGVyIGJ1dCBub3QgYnkgSW50ZWxsaUouCisgICAgICAgIHJldHVybiA8cmVmPnBhcnNlSW50KHN0cik7CisgICAgfQorCisgICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgeworICAgICAgICBYIHg9bmV3IFgoIjEyMyIpOworICAgICAgICBpbnQgaT14LnBhcnNlSW50KCk7CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihpKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL21ldGhvZC9nZW5lcmljcy9TdGF0aWNJbXBvcnRDb25mbGljdDMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVzb2x2ZS9tZXRob2QvZ2VuZXJpY3MvU3RhdGljSW1wb3J0Q29uZmxpY3QzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmMwOGQxNQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVzb2x2ZS9tZXRob2QvZ2VuZXJpY3MvU3RhdGljSW1wb3J0Q29uZmxpY3QzLmphdmEKQEAgLTAsMCArMSwyMyBAQAorcGFja2FnZSBwOworCitpbXBvcnQgc3RhdGljIHAuVG9JbXBvcnRYLmZmZjsKK2ltcG9ydCBzdGF0aWMgcC5Ub0ltcG9ydFgyLmZmZjsKKworLy9JREVBLTY0OTI2CitwdWJsaWMgY2xhc3MgQXBwVGVzdCB7CisgICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgeworICAgICAgICA8cmVmPmZmZigpOworICAgIH0KK30KKworY2xhc3MgVG9JbXBvcnRYIHsKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgZmZmKCkgeworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIlRvSW1wb3J0Iik7CisgICAgfQorfQorCitjbGFzcyBUb0ltcG9ydFgyIGV4dGVuZHMgVG9JbXBvcnRYIHsKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgZmZmKCkgeworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIlRvSW1wb3J0MiIpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVzb2x2ZS9tZXRob2QvZ2VuZXJpY3MvU3RhdGljSW1wb3J0RGlyZWN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvbWV0aG9kL2dlbmVyaWNzL1N0YXRpY0ltcG9ydERpcmVjdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhjN2RiMjEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvbWV0aG9kL2dlbmVyaWNzL1N0YXRpY0ltcG9ydERpcmVjdC5qYXZhCkBAIC0wLDAgKzEsOCBAQAoraW1wb3J0IHN0YXRpYyBqYXZhLnV0aWwuQXJyYXlzLmFzTGlzdDsKK2ltcG9ydCBqYXZhLnV0aWwuKjsKKworY2xhc3MgQyB7CisgIHsKKyAgICBMaXN0PFN0cmluZz4gcyA9IDxyZWY+YXNMaXN0KG5ldyBTdHJpbmdbMF0pOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL21ldGhvZC9nZW5lcmljcy9TdGF0aWNJbXBvcnRIaWRkZW4uamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVzb2x2ZS9tZXRob2QvZ2VuZXJpY3MvU3RhdGljSW1wb3J0SGlkZGVuLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmI4ODI4MAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVzb2x2ZS9tZXRob2QvZ2VuZXJpY3MvU3RhdGljSW1wb3J0SGlkZGVuLmphdmEKQEAgLTAsMCArMSwxMSBAQAoraW1wb3J0IHN0YXRpYyBqYXZhLnV0aWwuQXJyYXlzLnRvU3RyaW5nOworCitjbGFzcyBJbXBvcnREdXR5IHsKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CisgICAgICAgIG5ldyBJbXBvcnREdXR5KCkucHJpbnRBcmdzKDEsIDIsIDMsIDQsIDUpOworICAgIH0KKworICAgIHZvaWQgcHJpbnRBcmdzKE9iamVjdC4uLiBhcmdzKSB7CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbig8cmVmPnRvU3RyaW5nKGFyZ3MpKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvbWV0aG9kL2dlbmVyaWNzL1N0YXRpY0ltcG9ydE9uRGVtYW5kLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvbWV0aG9kL2dlbmVyaWNzL1N0YXRpY0ltcG9ydE9uRGVtYW5kLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmRjYzEwMAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVzb2x2ZS9tZXRob2QvZ2VuZXJpY3MvU3RhdGljSW1wb3J0T25EZW1hbmQuamF2YQpAQCAtMCwwICsxLDggQEAKK2ltcG9ydCBzdGF0aWMgamF2YS51dGlsLkFycmF5cy4qOworaW1wb3J0IGphdmEudXRpbC4qOworCitjbGFzcyBDIHsKKyAgeworICAgIExpc3Q8U3RyaW5nPiBzID0gPHJlZj5hc0xpc3QobmV3IFN0cmluZ1swXSk7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvbWV0aG9kL2dlbmVyaWNzL1N0YXRpY01ldGhvZEluU3ViY2xhc3MuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVzb2x2ZS9tZXRob2QvZ2VuZXJpY3MvU3RhdGljTWV0aG9kSW5TdWJjbGFzcy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEyNTI5NTAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvbWV0aG9kL2dlbmVyaWNzL1N0YXRpY01ldGhvZEluU3ViY2xhc3MuamF2YQpAQCAtMCwwICsxLDIzIEBACitpbXBvcnQgamF2YS51dGlsLkNvbGxlY3Rpb247CisKK3B1YmxpYyBjbGFzcyBTb21lQ2xhc3MgeworICAgIHB1YmxpYyBzdGF0aWMgT2JqZWN0IGZpbmQoQ29sbGVjdGlvbiBjb2xsZWN0aW9uLCBPYmplY3QgY3JpdGVyaWEpIHsKKyAgICAgICAgcmV0dXJuIGNyaXRlcmlhOworICAgIH0KKyAgICBzdGF0aWMgY2xhc3MgU29tZVN1YkNsYXNzIGV4dGVuZHMgU29tZUNsYXNzIHsKKyAgICAgICAgcHVibGljIHN0YXRpYyA8VD4gVCBmaW5kKENvbGxlY3Rpb248VD4gY29sbGVjdGlvbiwgT2JqZWN0IGNyaXRlcmlhKSB7CisgICAgICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAgfQorICAgIH0KKworCisgICAgPFQ+dm9pZCBmKCkKKyAgICB7CisgICAgICAgIENvbGxlY3Rpb248VD4gYyA9IG51bGw7CisgICAgICAgIE9iamVjdCBjcml0ZXJpYSA9IG51bGw7CisKKy8vIEludGVsbGlKIGZpbmRzIHRoZSBmaW5kKENvbGxlY3Rpb24sIE9iamVjdCkgbWV0aG9kLCBhbmQgcmVwb3J0cyBhIG5vbi1leGlzdGVudCBjb21waWxlIGVycm9yLgorICAgICAgICBUIHNvbWVJbnN0YW5jZSA9IFNvbWVTdWJDbGFzcy48cmVmPmZpbmQoYywgY3JpdGVyaWEpOworICAgIH0KKworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL21ldGhvZC9nZW5lcmljcy9UZXN0R2VuZXJpY01ldGhvZE92ZXJsb2FkaW5nMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL21ldGhvZC9nZW5lcmljcy9UZXN0R2VuZXJpY01ldGhvZE92ZXJsb2FkaW5nMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU5M2M2NzcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvbWV0aG9kL2dlbmVyaWNzL1Rlc3RHZW5lcmljTWV0aG9kT3ZlcmxvYWRpbmcxLmphdmEKQEAgLTAsMCArMSwyMCBAQAorCitpbXBvcnQgamF2YS51dGlsLkxpc3Q7CisKKy8qKgorICogQ3JlYXRlZCBieSBJbnRlbGxpSiBJREVBLgorICogVXNlcjogaWsKKyAqIERhdGU6IDI4LjA1LjIwMDMKKyAqIFRpbWU6IDE2OjUwOjUxCisgKiBUbyBjaGFuZ2UgdGhpcyB0ZW1wbGF0ZSB1c2UgT3B0aW9ucyB8IEZpbGUgVGVtcGxhdGVzLgorICovCitwdWJsaWMgY2xhc3MgVGVzdEdlbmVyaWNNZXRob2RPdmVybG9hZGluZzEgeworICAgIGNsYXNzIEE8VCBleHRlbmRzIExpc3Q+eworICAgICAgICBwdWJsaWMgYm9vbGVhbiBlcXVhbHMoVCB0KXsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKyAgICB7CisgICAgICAgIG5ldyBBKCkuPHJlZj5lcXVhbHMobmV3IE9iamVjdCgpKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvbWV0aG9kL2dlbmVyaWNzL1Rlc3RHZW5lcmljTWV0aG9kT3ZlcmxvYWRpbmcyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvbWV0aG9kL2dlbmVyaWNzL1Rlc3RHZW5lcmljTWV0aG9kT3ZlcmxvYWRpbmcyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODk3OGI4MQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVzb2x2ZS9tZXRob2QvZ2VuZXJpY3MvVGVzdEdlbmVyaWNNZXRob2RPdmVybG9hZGluZzIuamF2YQpAQCAtMCwwICsxLDE3IEBACisvKioKKyAqIENyZWF0ZWQgYnkgSW50ZWxsaUogSURFQS4KKyAqIFVzZXI6IGlrCisgKiBEYXRlOiAyOC4wNS4yMDAzCisgKiBUaW1lOiAxNjo1MDo1MQorICogVG8gY2hhbmdlIHRoaXMgdGVtcGxhdGUgdXNlIE9wdGlvbnMgfCBGaWxlIFRlbXBsYXRlcy4KKyAqLworcHVibGljIGNsYXNzIFRlc3RHZW5lcmljTWV0aG9kT3ZlcmxvYWRpbmcyIHsKKyAgICBjbGFzcyBBPFQ+eworICAgICAgICBwdWJsaWMgYm9vbGVhbiBlcXVhbHMoVCB0KXsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKyAgICB7CisgICAgICAgIG5ldyBBKCkuPHJlZj5lcXVhbHMobmV3IE9iamVjdCgpKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvbWV0aG9kL2dlbmVyaWNzL1Rlc3RHZW5lcmljTWV0aG9kT3ZlcmxvYWRpbmczLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvbWV0aG9kL2dlbmVyaWNzL1Rlc3RHZW5lcmljTWV0aG9kT3ZlcmxvYWRpbmczLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2IwMTgwNgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVzb2x2ZS9tZXRob2QvZ2VuZXJpY3MvVGVzdEdlbmVyaWNNZXRob2RPdmVybG9hZGluZzMuamF2YQpAQCAtMCwwICsxLDE3IEBACisvKioKKyAqIENyZWF0ZWQgYnkgSW50ZWxsaUogSURFQS4KKyAqIFVzZXI6IGlrCisgKiBEYXRlOiAyOC4wNS4yMDAzCisgKiBUaW1lOiAxNjo1MDo1MQorICogVG8gY2hhbmdlIHRoaXMgdGVtcGxhdGUgdXNlIE9wdGlvbnMgfCBGaWxlIFRlbXBsYXRlcy4KKyAqLworcHVibGljIGNsYXNzIFRlc3RHZW5lcmljTWV0aG9kT3ZlcmxvYWRpbmczIHsKKyAgICBjbGFzcyBBPFQ+eworICAgICAgICBwdWJsaWMgYm9vbGVhbiBlcXVhbHMoVCB0KXsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKyAgICB7CisgICAgICAgIG5ldyBBPFN0cmluZz4oKS48cmVmPmVxdWFscyhuZXcgT2JqZWN0KCkpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVzb2x2ZS9tZXRob2QvZ2VuZXJpY3MvVGVzdEdlbmVyaWNNZXRob2RPdmVybG9hZGluZzQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVzb2x2ZS9tZXRob2QvZ2VuZXJpY3MvVGVzdEdlbmVyaWNNZXRob2RPdmVybG9hZGluZzQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZTliYzdhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL21ldGhvZC9nZW5lcmljcy9UZXN0R2VuZXJpY01ldGhvZE92ZXJsb2FkaW5nNC5qYXZhCkBAIC0wLDAgKzEsMTcgQEAKKy8qKgorICogQ3JlYXRlZCBieSBJbnRlbGxpSiBJREVBLgorICogVXNlcjogaWsKKyAqIERhdGU6IDI4LjA1LjIwMDMKKyAqIFRpbWU6IDE2OjUwOjUxCisgKiBUbyBjaGFuZ2UgdGhpcyB0ZW1wbGF0ZSB1c2UgT3B0aW9ucyB8IEZpbGUgVGVtcGxhdGVzLgorICovCitwdWJsaWMgY2xhc3MgVGVzdEdlbmVyaWNNZXRob2RPdmVybG9hZGluZzQgeworICAgIGNsYXNzIEE8VD57CisgICAgICAgIHB1YmxpYyBib29sZWFuIGVxdWFscyhUIHQpeworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgfQorICAgIHsKKyAgICAgICAgbmV3IEE8U3RyaW5nPigpLjxyZWY+ZXF1YWxzKG5ldyBTdHJpbmcoKSk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL21ldGhvZC9nZW5lcmljcy9UZXN0UmV0dXJuVHlwZTEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVzb2x2ZS9tZXRob2QvZ2VuZXJpY3MvVGVzdFJldHVyblR5cGUxLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmE4NzBiMAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVzb2x2ZS9tZXRob2QvZ2VuZXJpY3MvVGVzdFJldHVyblR5cGUxLmphdmEKQEAgLTAsMCArMSwxNyBAQAorLyoqCisgKiBDcmVhdGVkIGJ5IEludGVsbGlKIElERUEuCisgKiBVc2VyOiBpaworICogRGF0ZTogMjguMDUuMjAwMworICogVGltZTogMTY6NTA6NTEKKyAqIFRvIGNoYW5nZSB0aGlzIHRlbXBsYXRlIHVzZSBPcHRpb25zIHwgRmlsZSBUZW1wbGF0ZXMuCisgKi8KK3B1YmxpYyBjbGFzcyBUZXN0UmV0dXJuVHlwZTEgeworICAgIGNsYXNzIEE8VCBleHRlbmRzIFJ1bm5hYmxlPnsKKyAgICAgICAgcHVibGljIFQgZm9vKFQgdCl7CisgICAgICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAgfQorICAgIH0KKyAgICB7CisgICAgICAgIG5ldyBBPFN0cmluZz4oKS5mb28obmV3IFN0cmluZygpKS48cmVmPnRvQ2hhckFycmF5KCk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL21ldGhvZC9nZW5lcmljcy9UZXN0UmV0dXJuVHlwZTIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVzb2x2ZS9tZXRob2QvZ2VuZXJpY3MvVGVzdFJldHVyblR5cGUyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjgxYmNlMQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVzb2x2ZS9tZXRob2QvZ2VuZXJpY3MvVGVzdFJldHVyblR5cGUyLmphdmEKQEAgLTAsMCArMSwxNyBAQAorLyoqCisgKiBDcmVhdGVkIGJ5IEludGVsbGlKIElERUEuCisgKiBVc2VyOiBpaworICogRGF0ZTogMjguMDUuMjAwMworICogVGltZTogMTY6NTA6NTEKKyAqIFRvIGNoYW5nZSB0aGlzIHRlbXBsYXRlIHVzZSBPcHRpb25zIHwgRmlsZSBUZW1wbGF0ZXMuCisgKi8KK3B1YmxpYyBjbGFzcyBUZXN0UmV0dXJuVHlwZTIgeworICAgIGNsYXNzIEE8VCBleHRlbmRzIFJ1bm5hYmxlPnsKKyAgICAgICAgcHVibGljIFQgZm9vKFQgdCl7CisgICAgICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAgfQorICAgIH0KKyAgICB7CisgICAgICAgIG5ldyBBKCkuZm9vKG5ldyBTdHJpbmcoKSkuPHJlZj50b0NoYXJBcnJheSgpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVzb2x2ZS9tZXRob2QvZ2VuZXJpY3MvVGVzdFRoaXNFeHByZXNzaW9uLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvbWV0aG9kL2dlbmVyaWNzL1Rlc3RUaGlzRXhwcmVzc2lvbi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhhZTkyMmEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvbWV0aG9kL2dlbmVyaWNzL1Rlc3RUaGlzRXhwcmVzc2lvbi5qYXZhCkBAIC0wLDAgKzEsMTIgQEAKK3B1YmxpYyBjbGFzcyBXaXRoSW5uZXI8VD4geworICAgIFQgZm9vICgpIHsKKyAgICAgICAgcmV0dXJuIG51bGw7CisgICAgfQorCisgICAgY2xhc3MgSW5uZXIgeworICAgICAgICBUIGZvbyAoKSB7CisgICAgICAgICAgICByZXR1cm4gIDxyZWY+V2l0aElubmVyLnRoaXMuZm9vKCk7CisgICAgICAgIH0KKyAgICB9CisKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVzb2x2ZS9tZXRob2QvZ2VuZXJpY3MvVHlwZUluZmVyZW5jZTEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVzb2x2ZS9tZXRob2QvZ2VuZXJpY3MvVHlwZUluZmVyZW5jZTEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MDM5NTlkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL21ldGhvZC9nZW5lcmljcy9UeXBlSW5mZXJlbmNlMS5qYXZhCkBAIC0wLDAgKzEsMjUgQEAKK2NsYXNzIEJ7Cisgdm9pZCBiKCl7fTsKK30KKworaW50ZXJmYWNlIEV7Cisgdm9pZCBlKCk7Cit9CisKK2NsYXNzIEMgZXh0ZW5kcyBCeworIHZvaWQgYygpe30KK30KKworY2xhc3MgRCBleHRlbmRzIEIgaW1wbGVtZW50cyBFeworIHZvaWQgZCgpe30KKyB2b2lkIGUoKXt9Cit9CisKKworY2xhc3MgQTxaPnsKKyA8VD4gVCBmb28oVCB0LCBBPFQ+IGEpeyByZXR1cm4gbnVsbDsgfQorCisgeworICBmb28obmV3IEMoKSwgbmV3IEE8RD4oKSkuPHJlZj5iKCk7CisgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVzb2x2ZS9tZXRob2QvZ2VuZXJpY3MvVHlwZVBhcmFtQm91bmRDb25mbGljdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL21ldGhvZC9nZW5lcmljcy9UeXBlUGFyYW1Cb3VuZENvbmZsaWN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTM1NzdlOQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVzb2x2ZS9tZXRob2QvZ2VuZXJpY3MvVHlwZVBhcmFtQm91bmRDb25mbGljdC5qYXZhCkBAIC0wLDAgKzEsMjIgQEAKK2ltcG9ydCBqYXZhLnV0aWwuKjsKKworY2xhc3MgVGhpbmcgeworfQorY2xhc3MgVGVzdGVyZ2VuIHsKKyAgICA8VCBleHRlbmRzIFRoaW5nPiBUIHgoVCB0aGluZykgeworICAgICAgICByZXR1cm4gbnVsbDsKKyAgICB9CisKKyAgICA8VCBleHRlbmRzIFRoaW5nPiBUIHgoQ29sbGVjdGlvbjxUPiB0aGluZykgeworICAgICAgICByZXR1cm4gbnVsbDsKKyAgICB9Cit9CitjbGFzcyBUZXN0ZXJnZW5Vc2VyIHsKKyAgICBwdWJsaWMgdm9pZCBjb250ZXh0KFRlc3RlcmdlbiB0ZXN0KSB7CisgICAgICAgIC8vIHRoZSBlcnJvciBpcyBzaG93biB3aGVuIHggaXMgY2FsbGVkOgorICAgICAgICBDb2xsZWN0aW9uPFRoaW5nPiB0ID0gbnVsbDsKKyAgICAgICAgdGVzdC48cmVmPngodCk7CisgICAgfQorCit9CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVzb2x2ZS9tZXRob2QvdmFyYXJncy9PYmplY3RPYmplY3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVzb2x2ZS9tZXRob2QvdmFyYXJncy9PYmplY3RPYmplY3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NWQ2ZjU2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL21ldGhvZC92YXJhcmdzL09iamVjdE9iamVjdC5qYXZhCkBAIC0wLDAgKzEsOCBAQAorY2xhc3MgWFkgeworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBmb28oT2JqZWN0Li4uIHgpIHsgfQorICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBmb28oT2JqZWN0IGEsIE9iamVjdC4uLiB4KSB7IH0KKworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKKyAgICAgICAgPHJlZj5mb28oImEiKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvbWV0aG9kL3ZhcmFyZ3MvT2JqZWN0T2JqZWN0T2JqZWN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvbWV0aG9kL3ZhcmFyZ3MvT2JqZWN0T2JqZWN0T2JqZWN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2E0YWViNwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVzb2x2ZS9tZXRob2QvdmFyYXJncy9PYmplY3RPYmplY3RPYmplY3QuamF2YQpAQCAtMCwwICsxLDggQEAKK2NsYXNzIFhZIHsKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgZm9vKE9iamVjdC4uLiB4KSB7IH0KKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgZm9vKE9iamVjdCBhLCBPYmplY3QgbywgT2JqZWN0Li4uIHgpIHsgfQorCisgICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgeworICAgICAgICA8cmVmPmZvbygiYSIsICJiIik7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL21ldGhvZC92YXJhcmdzL1ByaW1pdGl2ZU9iamVjdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL21ldGhvZC92YXJhcmdzL1ByaW1pdGl2ZU9iamVjdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAyNWY2YTcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvbWV0aG9kL3ZhcmFyZ3MvUHJpbWl0aXZlT2JqZWN0LmphdmEKQEAgLTAsMCArMSw5IEBACitjbGFzcyBYWSB7CisgICAgcHJpdmF0ZSB2b2lkIGYoT2JqZWN0Li4uIGJzKSB7fQorCisgICAgcHJpdmF0ZSB2b2lkIGYoaW50Li4uIGlzKSB7fQorCisgICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgeworICAgICAgICAgICAgPHJlZj5mKCk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL21ldGhvZC92YXJhcmdzL1ByaW1pdGl2ZVN0cmluZy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL21ldGhvZC92YXJhcmdzL1ByaW1pdGl2ZVN0cmluZy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNhNzRiODAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvbWV0aG9kL3ZhcmFyZ3MvUHJpbWl0aXZlU3RyaW5nLmphdmEKQEAgLTAsMCArMSw5IEBACitjbGFzcyBYWSB7CisgICAgcHJpdmF0ZSB2b2lkIGYoU3RyaW5nLi4uIGJzKSB7fQorCisgICAgcHJpdmF0ZSB2b2lkIGYoaW50Li4uIGlzKSB7fQorCisgICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgeworICAgICAgICAgICAgPHJlZj5mKCk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL21ldGhvZC92YXJhcmdzL1N0cmluZ09iamVjdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL21ldGhvZC92YXJhcmdzL1N0cmluZ09iamVjdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkxYzA5MzAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvbWV0aG9kL3ZhcmFyZ3MvU3RyaW5nT2JqZWN0LmphdmEKQEAgLTAsMCArMSw5IEBACisKK2NsYXNzIFhZIHsKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgZm9vKFN0cmluZy4uLiB4KSB7IH0KKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgZm9vKE9iamVjdCBhLCBPYmplY3QuLi4geCkgeyB9CisKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CisgICAgICAgIDxyZWY+Zm9vKCJhIik7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL21ldGhvZC92YXJhcmdzL1N0cmluZ09iamVjdFN0cmluZy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL21ldGhvZC92YXJhcmdzL1N0cmluZ09iamVjdFN0cmluZy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZjODAyZDkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvbWV0aG9kL3ZhcmFyZ3MvU3RyaW5nT2JqZWN0U3RyaW5nLmphdmEKQEAgLTAsMCArMSw4IEBACitjbGFzcyBYWSB7CisgICAgcHVibGljIHN0YXRpYyB2b2lkIGZvbyhTdHJpbmcuLi4geCkgeyB9CisgICAgcHVibGljIHN0YXRpYyB2b2lkIGZvbyhPYmplY3QgYSwgU3RyaW5nLi4uIHgpIHsgfQorCisgICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgeworICAgICAgICA8cmVmPmZvbygiYSIpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVzb2x2ZS9tZXRob2QvdmFyYXJncy9TdHJpbmdTdHJpbmdTdHJpbmcuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVzb2x2ZS9tZXRob2QvdmFyYXJncy9TdHJpbmdTdHJpbmdTdHJpbmcuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMDBlYzY5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL21ldGhvZC92YXJhcmdzL1N0cmluZ1N0cmluZ1N0cmluZy5qYXZhCkBAIC0wLDAgKzEsOCBAQAorY2xhc3MgWFkgeworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBmb28oU3RyaW5nLi4uIHgpIHsgfQorICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBmb28oU3RyaW5nIGEsIFN0cmluZy4uLiB4KSB7IH0KKworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKKyAgICAgICAgPHJlZj5mb28oImEiKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvdmFyL0Fub255bW91c0NvbnN0cnVjdG9yQXJnLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvdmFyL0Fub255bW91c0NvbnN0cnVjdG9yQXJnLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjVhMzI1ZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVzb2x2ZS92YXIvQW5vbnltb3VzQ29uc3RydWN0b3JBcmcuamF2YQpAQCAtMCwwICsxLDEwIEBACitjbGFzcyBUZXN0IHsKKyAgc3RhdGljIFRlc3QgY3JlYXRlVGVzdChpbnQgdmFsdWUpIHsKKyAgICByZXR1cm4gbmV3IFRlc3QoPHJlZj52YWx1ZSkge307CisgIH0KKworICBpbnQgdmFsdWU7CisKKyAgVGVzdChpbnQgdmFsdWUpIHsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL3Zhci9BcnJheTEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVzb2x2ZS92YXIvQXJyYXkxLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmFjYmFkNgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVzb2x2ZS92YXIvQXJyYXkxLmphdmEKQEAgLTAsMCArMSw2IEBACitwdWJsaWMgY2xhc3MgQXJyYXkxIHsKKyAgdm9pZCBmb28oKXsKKyAgICBpbnQgdmFsdWVbXSA9IHt9OworICAgIGludCB2YWwgPSB2YWx1ZS48cmVmPmxlbmd0aDsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL3Zhci9CdWc3ODY5LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvdmFyL0J1Zzc4NjkuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYjBjZjk5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL3Zhci9CdWc3ODY5LmphdmEKQEAgLTAsMCArMSwxMiBAQAorLyoqCisgKiBDcmVhdGVkIGJ5IEludGVsbGlKIElERUEuCisgKiBVc2VyOiBpaworICogRGF0ZTogMjIuMDEuMjAwMworICogVGltZTogMTQ6NTA6MzUKKyAqIFRvIGNoYW5nZSB0aGlzIHRlbXBsYXRlIHVzZSBPcHRpb25zIHwgRmlsZSBUZW1wbGF0ZXMuCisgKi8KK3B1YmxpYyBjbGFzcyBCdWc3ODY5IHsKKyAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncyl7CisgICAgU3RyaW5nIHN0ciA9ICg8cmVmPnN0ciA9IFN0cmluZy52YWx1ZU9mKDEyMy40NTZkKSkgIT0gbnVsbCA/IHN0ciA6ICJkZWZhdWx0IjsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL3Zhci9GaWVsZENvbmZsaWN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvdmFyL0ZpZWxkQ29uZmxpY3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZTlmMjhhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL3Zhci9GaWVsZENvbmZsaWN0LmphdmEKQEAgLTAsMCArMSwxNiBAQAoraW50ZXJmYWNlIEJhc2UgeworICBCYXNlW10gRU1QVFlfQVJSQVkgPSBuZXcgQmFzZVswXTsKK30KKworaW50ZXJmYWNlIERlcml2ZWQxIGV4dGVuZHMgQmFzZSB7fQorCitpbnRlcmZhY2UgRGVyaXZlZDIgZXh0ZW5kcyBCYXNlIHsKKyAgRGVyaXZlZDJbXSBFTVBUWV9BUlJBWSA9IG5ldyBEZXJpdmVkMlswXTsKK30KKworY2xhc3MgSW1wbGVtZW50b3IgaW1wbGVtZW50cyBEZXJpdmVkMSwgRGVyaXZlZDIgeworICAvL0ltcGxlbWVudG9yW10gRU1QVFlfQVJSQVkgPSBuZXcgSW1wbGVtZW50b3JbMF07CisgIERlcml2ZWQyW10gZigpICB7CisgICAgcmV0dXJuIDxyZWY+RU1QVFlfQVJSQVk7ICAvL2NvbmZsaWN0CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVzb2x2ZS92YXIvRmllbGRGcm9tSW50ZXJmYWNlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvdmFyL0ZpZWxkRnJvbUludGVyZmFjZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkxNTg5ZjUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvdmFyL0ZpZWxkRnJvbUludGVyZmFjZS5qYXZhCkBAIC0wLDAgKzEsMTIgQEAKK2NsYXNzIENsaWVudCB7CisgIGludCBmb28oKXsKKyAgICByZXR1cm4gQS48cmVmPkZJRUxEOworICB9Cit9CisKK2NsYXNzIEEgaW1wbGVtZW50cyBJeworfQorCitpbnRlcmZhY2UgSSB7CisgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEZJRUxEID0gMTsKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVzb2x2ZS92YXIvRmllbGRzQW5kTG9jYWxzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvdmFyL0ZpZWxkc0FuZExvY2Fscy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY4YWJjZjIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvdmFyL0ZpZWxkc0FuZExvY2Fscy5qYXZhCkBAIC0wLDAgKzEsMjMgQEAKKy8qKgorICogQ3JlYXRlZCBieSBJbnRlbGxpSiBJREVBLgorICogVXNlcjogaWsKKyAqIERhdGU6IDIzLjAxLjIwMDMKKyAqIFRpbWU6IDE3OjU5OjQ1CisgKiBUbyBjaGFuZ2UgdGhpcyB0ZW1wbGF0ZSB1c2UgT3B0aW9ucyB8IEZpbGUgVGVtcGxhdGVzLgorICovCitwdWJsaWMgY2xhc3MgRmllbGRzQW5kTG9jYWxzIHsKKyAgICBwcml2YXRlIGludCBhID0gMDsKKyAgICB7CisgICAgICAgIGludCBhID0gLTE7CisgICAgICAgIG5ldyBCKCl7CisgICAgICAgICAgICBwdWJsaWMgdm9pZCBydW4oKXsKKyAgICAgICAgICAgICAgICBpbnQgYiA9IDxyZWY+YQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorfQorCithYnN0cmFjdCBjbGFzcyBCIGltcGxlbWVudHMgUnVubmFibGUgeworICAgIHByaXZhdGUgaW50IGEgPSAwOworfQorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvdmFyL0ZvcmVhY2hQYXJhbWV0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVzb2x2ZS92YXIvRm9yZWFjaFBhcmFtZXRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE5N2RmYjUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvdmFyL0ZvcmVhY2hQYXJhbWV0ZXIuamF2YQpAQCAtMCwwICsxLDcgQEAKK2NsYXNzIEZvbyB7CisgIHsKKyAgICBmb3IoT2JqZWN0IG8gOiBjb2xsZWN0aW9uKSB7CisgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oPHJlZj5vKTsKKyAgICB9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvdmFyL0luaGVyaXRlZE91dGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvdmFyL0luaGVyaXRlZE91dGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTE4ZGVhMwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVzb2x2ZS92YXIvSW5oZXJpdGVkT3V0ZXIuamF2YQpAQCAtMCwwICsxLDkgQEAKK2NsYXNzIE91dGVyIHsKKyAgcHJpdmF0ZSBTdHJpbmcgc3RyaW5nOworCisgIGNsYXNzIElubmVyIGV4dGVuZHMgT3V0ZXIgeworICAgIHZvaWQgdGVzdCgpIHsKKyAgICAgIFN5c3RlbS5vdXQucHJpbnRsbig8cmVmPnN0cmluZyk7IAorICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVzb2x2ZS92YXIvSW5uZXIxLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvdmFyL0lubmVyMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY0OGM2ZjcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvdmFyL0lubmVyMS5qYXZhCkBAIC0wLDAgKzEsMjAgQEAKKy8qKgorICogQ3JlYXRlZCBieSBJbnRlbGxpSiBJREVBLgorICogVXNlcjogaWsKKyAqIERhdGU6IDIzLjAxLjIwMDMKKyAqIFRpbWU6IDE3OjU5OjQ1CisgKiBUbyBjaGFuZ2UgdGhpcyB0ZW1wbGF0ZSB1c2UgT3B0aW9ucyB8IEZpbGUgVGVtcGxhdGVzLgorICovCitwdWJsaWMgY2xhc3MgSW5uZXIxIHsKKyAgICBwcml2YXRlIGludCBhID0gMDsKKyAgICBwcml2YXRlIGNsYXNzIEEgZXh0ZW5kcyBCeworICAgICAgICB7CisgICAgICAgICAgICBpbnQgaiA9IDxyZWY+YTsKKyAgICAgICAgfQorICAgIH0KK30KKworY2xhc3MgQiB7CisgICAgcHJpdmF0ZSBpbnQgYSA9IDA7Cit9CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVzb2x2ZS92YXIvSW5uZXJQcml2YXRlczEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVzb2x2ZS92YXIvSW5uZXJQcml2YXRlczEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MDBiNWVlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL3Zhci9Jbm5lclByaXZhdGVzMS5qYXZhCkBAIC0wLDAgKzEsOSBAQAorY2xhc3MgQXsKKyB7CisgIG5ldyBCKCkuPHJlZj5iID0gMDsKKyB9CisKKyBjbGFzcyBCeworICBwcml2YXRlIGludCBiOworIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvdmFyL0ludGVyZmFjZUNvbmZsaWN0MS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL3Zhci9JbnRlcmZhY2VDb25mbGljdDEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yM2UyZmQzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL3Zhci9JbnRlcmZhY2VDb25mbGljdDEuamF2YQpAQCAtMCwwICsxLDE2IEBACitwdWJsaWMgY2xhc3MgSW50ZXJmYWNlQ29uZmxpY3QxeworICBwdWJsaWMgaW50ZXJmYWNlIEF7CisgICAgaW50IGEgPSAwOworICB9CisKKyAgcHVibGljIGludGVyZmFjZSBCeworICAgIGludCBhID0gMDsKKyAgfQorCisgIHB1YmxpYyBzdGF0aWMgY2xhc3MgQworICBpbXBsZW1lbnRzIEEsIEJ7CisgICAgc3RhdGljeworICAgICAgU3lzdGVtLm91dC5wcmludGxuKCIiICsgPHJlZj5hKTsKKyAgICB9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvdmFyL0ludGVyZmFjZUNvbmZsaWN0MTAuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVzb2x2ZS92YXIvSW50ZXJmYWNlQ29uZmxpY3QxMC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRjM2U2YTMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvdmFyL0ludGVyZmFjZUNvbmZsaWN0MTAuamF2YQpAQCAtMCwwICsxLDIwIEBACitwdWJsaWMgY2xhc3MgSW50ZXJmYWNlQ29uZmxpY3QxMHsKKyAgcHVibGljIGludGVyZmFjZSBBeworICAgIGludCBhID0gMDsKKyAgfQorCisgIHB1YmxpYyBzdGF0aWMgY2xhc3MgQgorICBpbXBsZW1lbnRzIEF7CisgIH0KKworICBwdWJsaWMgaW50ZXJmYWNlIEN7CisgICAgaW50IGEgPSAwOworICB9CisKKyAgcHVibGljIHN0YXRpYyBjbGFzcyBEIGV4dGVuZHMgQQorICBpbXBsZW1lbnRzIEEsIEN7CisgICAgdm9pZCBmb28oKXsKKyAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiIiArIDxyZWY+YSk7CisgICAgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL3Zhci9JbnRlcmZhY2VDb25mbGljdDExLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvdmFyL0ludGVyZmFjZUNvbmZsaWN0MTEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45OWIwYTAyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL3Zhci9JbnRlcmZhY2VDb25mbGljdDExLmphdmEKQEAgLTAsMCArMSwxNSBAQAorcHVibGljIGNsYXNzIEludGVyZmFjZUNvbmZsaWN0MTF7CisgIHB1YmxpYyBzdGF0aWMgY2xhc3MgQXsKKyAgICBzdGF0aWMgaW50IGEgPSAwOworICB9CisKKyAgcHVibGljIHN0YXRpYyBjbGFzcyBCIGV4dGVuZHMgQXsKKyAgICBpbnQgYSA9IDA7CisgIH0KKworICBwdWJsaWMgc3RhdGljIGNsYXNzIEMgZXh0ZW5kcyBCeworICAgIHN0YXRpYyB2b2lkIGZvbygpeworICAgICAgU3lzdGVtLm91dC5wcmludGxuKCIiICsgPHJlZj5hKTsKKyAgICB9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvdmFyL0ludGVyZmFjZUNvbmZsaWN0Mi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL3Zhci9JbnRlcmZhY2VDb25mbGljdDIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43Yjk3OGMxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL3Zhci9JbnRlcmZhY2VDb25mbGljdDIuamF2YQpAQCAtMCwwICsxLDE5IEBACitwdWJsaWMgY2xhc3MgSW50ZXJmYWNlQ29uZmxpY3QyeworICBwdWJsaWMgaW50ZXJmYWNlIEF7CisgICAgaW50IGEgPSAwOworICB9CisKKyAgcHVibGljIGludGVyZmFjZSBCeworICAgIGludCBhID0gMDsKKyAgfQorCisgIHB1YmxpYyBpbnRlcmZhY2UgRSBleHRlbmRzIEF7CisgIH0KKworICBwdWJsaWMgc3RhdGljIGNsYXNzIEMKKyAgaW1wbGVtZW50cyBFLCBCeworICAgIHN0YXRpY3sKKyAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiIiArIDxyZWY+YSk7CisgICAgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL3Zhci9JbnRlcmZhY2VDb25mbGljdDMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVzb2x2ZS92YXIvSW50ZXJmYWNlQ29uZmxpY3QzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmE1NmUzZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVzb2x2ZS92YXIvSW50ZXJmYWNlQ29uZmxpY3QzLmphdmEKQEAgLTAsMCArMSwxOSBAQAorcHVibGljIGNsYXNzIEludGVyZmFjZUNvbmZsaWN0M3sKKyAgcHVibGljIGludGVyZmFjZSBBeworICAgIGludCBhID0gMDsKKyAgfQorCisgIHB1YmxpYyBpbnRlcmZhY2UgQnsKKyAgICBpbnQgYSA9IDA7CisgIH0KKworICBwdWJsaWMgY2xhc3MgRSBpbXBsZW1lbnRzIEF7CisgIH0KKworICBwdWJsaWMgc3RhdGljIGNsYXNzIEMgZXh0ZW5kcyBFCisgIGltcGxlbWVudHMgQnsKKyAgICBzdGF0aWN7CisgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIiIgKyA8cmVmPmEpOworICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVzb2x2ZS92YXIvSW50ZXJmYWNlQ29uZmxpY3Q0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvdmFyL0ludGVyZmFjZUNvbmZsaWN0NC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMzMzkyYjMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvdmFyL0ludGVyZmFjZUNvbmZsaWN0NC5qYXZhCkBAIC0wLDAgKzEsMTcgQEAKK3B1YmxpYyBjbGFzcyBJbnRlcmZhY2VDb25mbGljdDR7CisgIHB1YmxpYyBpbnRlcmZhY2UgQXsKKyAgICBpbnQgYSA9IDA7CisgIH0KKworCisgIHB1YmxpYyBjbGFzcyBCeworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IGEgPSAwOworICB9CisKKyAgcHVibGljIHN0YXRpYyBjbGFzcyBDIGV4dGVuZHMgQgorICBpbXBsZW1lbnRzIEF7CisgICAgc3RhdGljeworICAgICAgU3lzdGVtLm91dC5wcmludGxuKCIiICsgPHJlZj5hKTsKKyAgICB9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvdmFyL0ludGVyZmFjZUNvbmZsaWN0NS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL3Zhci9JbnRlcmZhY2VDb25mbGljdDUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xN2IzOWU4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL3Zhci9JbnRlcmZhY2VDb25mbGljdDUuamF2YQpAQCAtMCwwICsxLDE3IEBACitwdWJsaWMgY2xhc3MgSW50ZXJmYWNlQ29uZmxpY3Q1eworICBwdWJsaWMgaW50ZXJmYWNlIEF7CisgICAgaW50IGEgPSAwOworICB9CisKKworICBwdWJsaWMgY2xhc3MgQiBpbXBsZW1lbnRzIEF7CisgICAgcHVibGljIGludCBhID0gMDsKKyAgfQorCisgIHB1YmxpYyBzdGF0aWMgY2xhc3MgQyBleHRlbmRzIEIKKyAgaW1wbGVtZW50cyBBeworICAgIHZvaWQgZm9vKCl7CisgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIiIgKyA8cmVmPmEpOworICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVzb2x2ZS92YXIvSW50ZXJmYWNlQ29uZmxpY3Q2LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvdmFyL0ludGVyZmFjZUNvbmZsaWN0Ni5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVhZWM4ZjkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvdmFyL0ludGVyZmFjZUNvbmZsaWN0Ni5qYXZhCkBAIC0wLDAgKzEsMTcgQEAKK3B1YmxpYyBjbGFzcyBJbnRlcmZhY2VDb25mbGljdDZ7CisgIHB1YmxpYyBpbnRlcmZhY2UgQXsKKyAgICBpbnQgYSA9IDA7CisgIH0KKworCisgIHB1YmxpYyBjbGFzcyBCeworICAgIHB1YmxpYyBpbnQgYSA9IDA7CisgIH0KKworICBwdWJsaWMgc3RhdGljIGNsYXNzIEMgZXh0ZW5kcyBCCisgIGltcGxlbWVudHMgQXsKKyAgICB2b2lkIGZvbygpeworICAgICAgU3lzdGVtLm91dC5wcmludGxuKCIiICsgPHJlZj5hKTsKKyAgICB9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvdmFyL0ludGVyZmFjZUNvbmZsaWN0Ny5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL3Zhci9JbnRlcmZhY2VDb25mbGljdDcuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NGExNjc2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL3Zhci9JbnRlcmZhY2VDb25mbGljdDcuamF2YQpAQCAtMCwwICsxLDE2IEBACitwdWJsaWMgY2xhc3MgSW50ZXJmYWNlQ29uZmxpY3Q3eworICBwdWJsaWMgaW50ZXJmYWNlIEF7CisgICAgaW50IGEgPSAwOworICB9CisKKworICBwdWJsaWMgY2xhc3MgQiBpbXBsZW1lbnRzIEF7CisgICAgcHVibGljIGludCBhID0gMDsKKyAgfQorCisgIHB1YmxpYyBzdGF0aWMgY2xhc3MgQyBleHRlbmRzIEJ7CisgICAgdm9pZCBmb28oKXsKKyAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiIiArIDxyZWY+YSk7CisgICAgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL3Zhci9JbnRlcmZhY2VDb25mbGljdDguamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVzb2x2ZS92YXIvSW50ZXJmYWNlQ29uZmxpY3Q4LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzAwNTFjNwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVzb2x2ZS92YXIvSW50ZXJmYWNlQ29uZmxpY3Q4LmphdmEKQEAgLTAsMCArMSwxNiBAQAorcHVibGljIGNsYXNzIEludGVyZmFjZUNvbmZsaWN0OHsKKyAgcHVibGljIGludGVyZmFjZSBBeworICAgIGludCBhID0gMDsKKyAgfQorCisKKyAgcHVibGljIHN0YXRpYyBjbGFzcyBCIGltcGxlbWVudHMgQXsKKyAgfQorCisgIHB1YmxpYyBzdGF0aWMgY2xhc3MgQyBleHRlbmRzIEIKKyAgaW1wbGVtZW50cyBBeworICAgIHZvaWQgZm9vKCl7CisgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIiIgKyA8cmVmPmEpOworICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVzb2x2ZS92YXIvSW50ZXJmYWNlQ29uZmxpY3Q5LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvdmFyL0ludGVyZmFjZUNvbmZsaWN0OS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE3ZDJkZjUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvdmFyL0ludGVyZmFjZUNvbmZsaWN0OS5qYXZhCkBAIC0wLDAgKzEsMjAgQEAKK3B1YmxpYyBjbGFzcyBJbnRlcmZhY2VDb25mbGljdDl7CisgIHB1YmxpYyBpbnRlcmZhY2UgQXsKKyAgICBpbnQgYSA9IDA7CisgIH0KKworICBwdWJsaWMgaW50ZXJmYWNlIEJ7CisgICAgaW50IGEgPSAwOworICB9CisKKyAgcHVibGljIGludGVyZmFjZSBDeworICAgIGludCBhID0gMDsKKyAgfQorCisgIHB1YmxpYyBzdGF0aWMgY2xhc3MgRAorICBpbXBsZW1lbnRzIEEsIEIsIEN7CisgICAgdm9pZCBmb28oKXsKKyAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiIiArIDxyZWY+YSk7CisgICAgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL3Zhci9Mb2NhbFZhcmlhYmxlMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL3Zhci9Mb2NhbFZhcmlhYmxlMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZjYzFmM2IKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvdmFyL0xvY2FsVmFyaWFibGUxLmphdmEKQEAgLTAsMCArMSw2IEBACitjbGFzcyBUZXN0IHsKKyAgdm9pZCBmb28oKXsKKyAgICBpbnQgdmFsdWU7CisgICAgaW50IHZhbDEgPSA8cmVmPnZhbHVlOworICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvdmFyL1ByaXZhdGVPdmVybG9hZGluZy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL3Zhci9Qcml2YXRlT3ZlcmxvYWRpbmcuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43YjY2MTJhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL3Zhci9Qcml2YXRlT3ZlcmxvYWRpbmcuamF2YQpAQCAtMCwwICsxLDIwIEBACitjbGFzcyBBIHsKKyAgICBpbnQgaTsKKworICAgIHB1YmxpYyB2b2lkIG1ldGhvZCgpIHsKKyAgICB9CisgIH0KKworICBjbGFzcyBCIGV4dGVuZHMgQSB7CisgICAgcHJpdmF0ZSBpbnQgaTsKKworICAgIHB1YmxpYyB2b2lkIG1ldGhvZCgpIHsKKyAgICB9CisgIH0KKworICBjbGFzcyBDIGV4dGVuZHMgQiB7CisKKyAgICBwdWJsaWMgdm9pZCBtZXRob2QoKSB7CisgICAgICA8cmVmPmkgPSAxMDsKKyAgICB9CisgIH0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvdmFyL1F1YWxpZmllZDEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVzb2x2ZS92YXIvUXVhbGlmaWVkMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ4OTIwZmEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvdmFyL1F1YWxpZmllZDEuamF2YQpAQCAtMCwwICsxLDEwIEBACitwdWJsaWMgY2xhc3MgVGVzdHsKKyAgaW50IGEgPSAwOworfQorCitjbGFzcyBUZXN0MSB7CisgIHN0YXRpYyBUZXN0IHRlc3QgPSBuZXcgVGVzdCgpOworICBzdGF0aWMgeworICAgIFN5c3RlbS5vdXQucHJpbnRsbigiIiArIHRlc3QuPHJlZj5hKTsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL3Zhci9RdWFsaWZpZWQyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvdmFyL1F1YWxpZmllZDIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44OThiOTMzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL3Zhci9RdWFsaWZpZWQyLmphdmEKQEAgLTAsMCArMSw3IEBACitwdWJsaWMgY2xhc3MgVGVzdHsKKyAgc3RhdGljIGludCBhID0gMDsKKworICBwdWJsaWMgaW50IGZvbygpeworICAgIHJldHVybiBUZXN0LjxyZWY+YTsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL3Zhci9RdWFsaWZpZWQzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvdmFyL1F1YWxpZmllZDMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMmZlNzI2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL3Zhci9RdWFsaWZpZWQzLmphdmEKQEAgLTAsMCArMSw3IEBACitwdWJsaWMgY2xhc3MgVGVzdHsKKyAgc3RhdGljIGludCBhID0gMDsKKworICBwdWJsaWMgaW50IGZvbygpeworICAgIHJldHVybiBuZXcgVGVzdCgpLjxyZWY+YTsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL3Zhci9RdWFsaWZpZWQ0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvdmFyL1F1YWxpZmllZDQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZmEwYTMyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL3Zhci9RdWFsaWZpZWQ0LmphdmEKQEAgLTAsMCArMSw5IEBACitjbGFzcyBBeworCXN0YXRpYyBjbGFzcyBCeworCQlzdGF0aWMgaW50IGEgPSAwOworCX0KKworCXsKKwkJU3lzdGVtLm91dC5wcmludGxuKCIiICsgQS5CLjxyZWY+YSk7CisJfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL3Zhci9SZWZJbk91dGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvdmFyL1JlZkluT3V0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNDAyOWM1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL3Zhci9SZWZJbk91dGVyLmphdmEKQEAgLTAsMCArMSw4IEBACitjbGFzcyBPdXRlciB7CisgIGludCBpOworICBjbGFzcyBJbm5lciB7CisgICAgeworICAgICAgaW50IGogPSA8cmVmPmk7CisgICAgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL3Zhci9SZWZJblN1cGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvdmFyL1JlZkluU3VwZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZjdjZTY1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL3Zhci9SZWZJblN1cGVyLmphdmEKQEAgLTAsMCArMSw4IEBACitjbGFzcyBPdXRlciB7CisgIGludCBpOworICBjbGFzcyBJbm5lciBleHRlbmRzIE91dGVyIHsKKyAgICB7CisgICAgICBpbnQgaiA9IDxyZWY+aTsKKyAgICB9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvdmFyL1NoYWRvd0ZpZWxkc0luSGllcmFyY2h5LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvdmFyL1NoYWRvd0ZpZWxkc0luSGllcmFyY2h5LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDc3ZjRkYQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVzb2x2ZS92YXIvU2hhZG93RmllbGRzSW5IaWVyYXJjaHkuamF2YQpAQCAtMCwwICsxLDIwIEBACitjbGFzcyBUZXN0UGFnZSBleHRlbmRzIFdXVyB7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgT2JqZWN0IGxvZyA9IG51bGw7CisKKyAgICBzdGF0aWMgY2xhc3MgQiBleHRlbmRzIFczIHsKKyAgICAgICAgcHVibGljIEIoKSB7CisgICAgICAgICAgICA8cmVmPmxvZy5oYXNoQ29kZSgpOworICAgICAgICB9CisgICAgfQorfQorCitjbGFzcyBXV1cgZXh0ZW5kcyBXM3sKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBPYmplY3QgbG9nID0gbmV3IE9iamVjdCgpOworICAgIHByb3RlY3RlZCB2b2lkIHJ1bihPYmplY3QgcnVubmFibGUpe30KK30KK2NsYXNzIFczIGV4dGVuZHMgVzQgeworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIE9iamVjdCBsb2cgPSBuZXcgT2JqZWN0KCk7Cit9CitjbGFzcyBXNCB7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgT2JqZWN0IGxvZyA9IG5ldyBPYmplY3QoKTsKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVzb2x2ZS92YXIvU2hhZG93RmllbGRzSW5IaWVyYXJjaHkyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvdmFyL1NoYWRvd0ZpZWxkc0luSGllcmFyY2h5Mi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEyM2NmMDkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvdmFyL1NoYWRvd0ZpZWxkc0luSGllcmFyY2h5Mi5qYXZhCkBAIC0wLDAgKzEsMTggQEAKKworaW50ZXJmYWNlIEJhc2UgeworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEVYSVRfT05fQ0xPU0UgPSAzOworCit9CitjbGFzcyBFIGltcGxlbWVudHMgQmFzZSB7CisgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBFWElUX09OX0NMT1NFID0gMzsKKyAgIHZvaWQgc2hvdygpe30KK30KK2NsYXNzIFMgeworICAgIHByaXZhdGUgdm9pZCBoKCkgeworICAgICAgICBuZXcgRSgpIHsKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBpbnQgbyA9IDxyZWY+RVhJVF9PTl9DTE9TRTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfS5zaG93KCk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL3Zhci9VbnJlc29sdmVkMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL3Zhci9VbnJlc29sdmVkMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjViMWYwZWYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvdmFyL1VucmVzb2x2ZWQxLmphdmEKQEAgLTAsMCArMSw1IEBACitwdWJsaWMgY2xhc3MgVGVzdHsKKyAgcHVibGljIHN0YXRpYyB2b2lkIGZvbygpIHt9CisgIGludCBhID0gMDsKKyAgaW50IGIgPSA8cmVmPmZvbzsKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVzb2x2ZS92YXIvVmlzaWJpbGl0eTEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVzb2x2ZS92YXIvVmlzaWJpbGl0eTEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYTg2NDZmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL3Zhci9WaXNpYmlsaXR5MS5qYXZhCkBAIC0wLDAgKzEsOSBAQAorY2xhc3MgVGVzdCB7CisgIHN0YXRpYyBpbnQgdmFyaWFibGUgPSAxOworICBzdGF0aWMgY2xhc3MgSW5uZXJ7CisgICAgaW50IHZhcmlhYmxlID0gMDsKKyAgICBzdGF0aWMgdm9pZCBmb28oKXsKKyAgICAgIGludCB2YWwxID0gPHJlZj52YXJpYWJsZTsKKyAgICB9CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVzb2x2ZS92YXIvVmlzaWJpbGl0eTIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVzb2x2ZS92YXIvVmlzaWJpbGl0eTIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMjVlMmM3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL3Zhci9WaXNpYmlsaXR5Mi5qYXZhCkBAIC0wLDAgKzEsMyBAQAorY2xhc3MgVGVzdCB7CisgIGludCBhID0gMSArIDxyZWY+YTsKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVzb2x2ZS92YXIvVmlzaWJpbGl0eTMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVzb2x2ZS92YXIvVmlzaWJpbGl0eTMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kOWI4NWJhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL3Zhci9WaXNpYmlsaXR5My5qYXZhCkBAIC0wLDAgKzEsMTIgQEAKK2NsYXNzIFRlc3QgeworICBzdGF0aWMgY2xhc3MgQUJDeworICAgIHB1YmxpYyBpbnQgaSA9IDA7CisgIH0KKyAgc3RhdGljIHsKKyAgICBTeXN0ZW0ub3V0LnByaW50bG4oIiIgKyBnZXRBQkMoKS48cmVmPmkpOworICB9CisKKyAgc3RhdGljIEFCQyBnZXRBQkMoKXsKKyAgICByZXR1cm4gbmV3IEFCQygpOworICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvdmFyL1Zpc2liaWxpdHk0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvdmFyL1Zpc2liaWxpdHk0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTU4YTYyOAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVzb2x2ZS92YXIvVmlzaWJpbGl0eTQuamF2YQpAQCAtMCwwICsxLDUgQEAKK2NsYXNzIFRlc3QgeworICBzdGF0aWMgeworICAgIGludCBhID0gMSArIDxyZWY+YTsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL3Zhci9WaXNpYmlsaXR5NS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL3Zhci9WaXNpYmlsaXR5NS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk1OGE2MjgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Jlc29sdmUvdmFyL1Zpc2liaWxpdHk1LmphdmEKQEAgLTAsMCArMSw1IEBACitjbGFzcyBUZXN0IHsKKyAgc3RhdGljIHsKKyAgICBpbnQgYSA9IDEgKyA8cmVmPmE7CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVzb2x2ZS92YXIvVmlzaWJpbGl0eTYuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVzb2x2ZS92YXIvVmlzaWJpbGl0eTYuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMmVkN2E1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL3Zhci9WaXNpYmlsaXR5Ni5qYXZhCkBAIC0wLDAgKzEsMTEgQEAKKyAgY2xhc3MgRm9vIHsKKyAgICAgIHByaXZhdGUgdm9pZCBmKCkgeworICAgICAgICAgIEJhciBiYXI9bnVsbDsKKyAgICAgICAgICBiYXIuPHJlZj5mKCk7CisgICAgICB9CisgICAgICB2b2lkIGcoKSB7CisgICAgICAgICAgZigpOworICAgICAgfQorICB9CisgIGNsYXNzIEJhciBleHRlbmRzIEZvbyB7CisgIH0KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVzb2x2ZS92YXIxNS9EdXBsaWNhdGVTdGF0aWNJbXBvcnQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVzb2x2ZS92YXIxNS9EdXBsaWNhdGVTdGF0aWNJbXBvcnQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42Yzc0MDA1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL3ZhcjE1L0R1cGxpY2F0ZVN0YXRpY0ltcG9ydC5qYXZhCkBAIC0wLDAgKzEsOCBAQAoraW1wb3J0IHN0YXRpYyBqYXZhLmxhbmcuU3lzdGVtLm91dDsKK2ltcG9ydCBzdGF0aWMgamF2YS5sYW5nLlN5c3RlbS5vdXQ7CisKK2NsYXNzIER1cGxpY2F0ZVN0YXRpY0ltcG9ydCB7CisgICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgeworICAgICAgICA8cmVmPm91dC5wcmludGxuKCIiKTsgLy8gY2Fubm90IHJlc29sdmUgc3ltYm9sICdvdXQnCisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVzb2x2ZS92YXIxNS9SaG9tYkV4dGVuZGluZy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9yZXNvbHZlL3ZhcjE1L1Job21iRXh0ZW5kaW5nLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2ExZDQ5OQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvcmVzb2x2ZS92YXIxNS9SaG9tYkV4dGVuZGluZy5qYXZhCkBAIC0wLDAgKzEsMTUgQEAKKy8qKiBAbm9pbnNwZWN0aW9uIFVudXNlZERlY2xhcmF0aW9uKi8KK2ludGVyZmFjZSBJPFQ+IHsKKyAgICBTdHJpbmcgU1NTID0gIlNTUyI7Cit9CisKK2ludGVyZmFjZSBJSTxUPiBleHRlbmRzIEk8VD4ge30KKworY2xhc3MgQSBpbXBsZW1lbnRzIEkge30KKworLyoqIEBub2luc3BlY3Rpb24gVW51c2VkRGVjbGFyYXRpb24qLworY2xhc3MgQUEgZXh0ZW5kcyBBIGltcGxlbWVudHMgSUkgeworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBmKCkgeworICAgICAgICBTdHJpbmcgcyA9IDxyZWY+U1NTOyAgLy90aGlzIGlzIG5vdCBhbWJpZ291cyByZWZlcmVuY2UKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3NlYXJjaC9maW5kVXNhZ2VzL2ZpZWxkSW5KYXZhZG9jL0EuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvc2VhcmNoL2ZpbmRVc2FnZXMvZmllbGRJbkphdmFkb2MvQS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI1ODdkMjIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3NlYXJjaC9maW5kVXNhZ2VzL2ZpZWxkSW5KYXZhZG9jL0EuamF2YQpAQCAtMCwwICsxLDggQEAKK2NsYXNzIEF7CisgIHN0YXRpYyBpbnQgRklFTEQ7CisKKyAgLyoqCisgICAqIEBzZWUgI0ZJRUxECisgICAqLworICB2b2lkIGZvbygpe30KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3NlYXJjaC9maW5kVXNhZ2VzL2ltcGxpY2l0Q29uc3RydWN0b3JVc2FnZS9BLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3NlYXJjaC9maW5kVXNhZ2VzL2ltcGxpY2l0Q29uc3RydWN0b3JVc2FnZS9BLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2Q5ZGI4MAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvc2VhcmNoL2ZpbmRVc2FnZXMvaW1wbGljaXRDb25zdHJ1Y3RvclVzYWdlL0EuamF2YQpAQCAtMCwwICsxLDEzIEBACitjbGFzcyBGb28geworCXB1YmxpYyA8Y2FyZXQ+Rm9vKCkgeworCX0KKworCXB1YmxpYyBGb28oU3RyaW5nIHRleHQpIHsKKwl9Cit9CitjbGFzcyBCYXIgZXh0ZW5kcyBGb28geworCisJcHVibGljIEJhcigpIHsKKwkJc3VwZXIoImhlbGxvIik7CisJfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvc2VhcmNoL2ZpbmRVc2FnZXMvbGlicmFyeUNsYXNzVXNhZ2VGcm9tRGVjb21waWxlZFNvdXJjZS9Vc2FnZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9zZWFyY2gvZmluZFVzYWdlcy9saWJyYXJ5Q2xhc3NVc2FnZUZyb21EZWNvbXBpbGVkU291cmNlL1VzYWdlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDA0NDBiZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvc2VhcmNoL2ZpbmRVc2FnZXMvbGlicmFyeUNsYXNzVXNhZ2VGcm9tRGVjb21waWxlZFNvdXJjZS9Vc2FnZS5qYXZhCkBAIC0wLDAgKzEsNSBAQAoraW1wb3J0IGphdmF4LnN3aW5nLkpMYWJlbDsKKworcHVibGljIGNsYXNzIFVzYWdlIHsKKyAgSkxhYmVsIHM7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9zZWFyY2gvZmluZFVzYWdlcy9ub25Db2RlQ2xhc3NVc2FnZXMvY29tL0Zvby5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9zZWFyY2gvZmluZFVzYWdlcy9ub25Db2RlQ2xhc3NVc2FnZXMvY29tL0Zvby5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg1NzFjN2YKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3NlYXJjaC9maW5kVXNhZ2VzL25vbkNvZGVDbGFzc1VzYWdlcy9jb20vRm9vLmphdmEKQEAgLTAsMCArMSw0IEBACitwYWNrYWdlIGNvbTsKK3B1YmxpYyBjbGFzcyBGb28geworICBwdWJsaWMgc3RhdGljIGNsYXNzIEJhciB7fQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvc2VhcmNoL2ZpbmRVc2FnZXMvb3ZlcmxvYWRDb25zdHJ1Y3RvcnMvQS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9zZWFyY2gvZmluZFVzYWdlcy9vdmVybG9hZENvbnN0cnVjdG9ycy9BLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2U2NGU2MgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvc2VhcmNoL2ZpbmRVc2FnZXMvb3ZlcmxvYWRDb25zdHJ1Y3RvcnMvQS5qYXZhCkBAIC0wLDAgKzEsOSBAQAorcHVibGljIGNsYXNzIEEgeworICBBICgpIHt9CisgIEEgKGludCBpKSB7CisgICAgdGhpcyAoKTsKKyAgfQorICBBIChTdHJpbmcgcykgeworICAgIHRoaXMgKDApOworICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3NlYXJjaC9maW5kVXNhZ2VzL292ZXJsb2FkQ29uc3RydWN0b3JzL0IuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvc2VhcmNoL2ZpbmRVc2FnZXMvb3ZlcmxvYWRDb25zdHJ1Y3RvcnMvQi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBlYzYyMzUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3NlYXJjaC9maW5kVXNhZ2VzL292ZXJsb2FkQ29uc3RydWN0b3JzL0IuamF2YQpAQCAtMCwwICsxLDggQEAKK3B1YmxpYyBjbGFzcyBCIGV4dGVuZHMgQSB7CisgIEIgKCkgeworICAgc3VwZXIgKDEpOworICB9CisgIHZvaWQgZm9vICgpIHsKKyAgIEEgYSA9IG5ldyBBICgiIik7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3NlYXJjaC9maW5kVXNhZ2VzL3Byb3RlY3RlZE1ldGhvZEluUGFja2FnZUxvY2FsQ2xhc3MvYmFyL0Jhci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9zZWFyY2gvZmluZFVzYWdlcy9wcm90ZWN0ZWRNZXRob2RJblBhY2thZ2VMb2NhbENsYXNzL2Jhci9CYXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMzdkMjk2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9zZWFyY2gvZmluZFVzYWdlcy9wcm90ZWN0ZWRNZXRob2RJblBhY2thZ2VMb2NhbENsYXNzL2Jhci9CYXIuamF2YQpAQCAtMCwwICsxLDExIEBACitpbXBvcnQgZm9vLio7CisKK2NsYXNzIEJhciBleHRlbmRzIEZvbyB7CisgIHByb3RlY3RlZCB2b2lkIGZvbygpOworfQorCitjbGFzcyBHb28gZXh0ZW5kcyBGb28geworICB7CisgICAgZm9vKCk7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3NlYXJjaC9maW5kVXNhZ2VzL3Byb3RlY3RlZE1ldGhvZEluUGFja2FnZUxvY2FsQ2xhc3MvZm9vL0Zvby5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9zZWFyY2gvZmluZFVzYWdlcy9wcm90ZWN0ZWRNZXRob2RJblBhY2thZ2VMb2NhbENsYXNzL2Zvby9Gb28uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MmVlNmU1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9zZWFyY2gvZmluZFVzYWdlcy9wcm90ZWN0ZWRNZXRob2RJblBhY2thZ2VMb2NhbENsYXNzL2Zvby9Gb28uamF2YQpAQCAtMCwwICsxLDcgQEAKK3BhY2thZ2UgZm9vOworCitjbGFzcyBQYWNrYWdlTG9jYWwgeworICBwcm90ZWN0ZWQgdm9pZCBmb28oKSB7fQorfQorCitwdWJsaWMgY2xhc3MgRm9vIGV4dGVuZHMgUGFja2FnZUxvY2FsIHt9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9zZWFyY2gvZmluZFVzYWdlcy9zaWJsaW5nSW1wbGVtZW50L0EuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvc2VhcmNoL2ZpbmRVc2FnZXMvc2libGluZ0ltcGxlbWVudC9BLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjk2NDQyNwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvc2VhcmNoL2ZpbmRVc2FnZXMvc2libGluZ0ltcGxlbWVudC9BLmphdmEKQEAgLTAsMCArMSwxMiBAQAorY2xhc3MgQSB7CisgICAgcHVibGljIHZvaWQgZm9vKE9iamVjdCBvKSB7CisgICAgfQorCisgICAgaW50ZXJmYWNlIEkgeworICAgICAgICAgcHVibGljIHZvaWQgZm9vKE9iamVjdCBvKTsgIC8vVGhpcyBzaG91bGQgYmUgY29uc2lkZXJlZGQgaW1wbGVtZW50ZWQgaW4gQQorICAgIH0KKworfQorCitjbGFzcyBCIGV4dGVuZHMgQSBpbXBsZW1lbnRzIEEuSSB7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9zZWFyY2gvZmluZFVzYWdlcy94bWwvVGVzdC54bWwgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3NlYXJjaC9maW5kVXNhZ2VzL3htbC9UZXN0LnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMzZhYTlmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9zZWFyY2gvZmluZFVzYWdlcy94bWwvVGVzdC54bWwKQEAgLTAsMCArMSwzIEBACis8ZG9jdW1lbnQ+CisgIDxhY3Rpb24gY2xhc3M9ImNvbS5Gb28iIC8+Cis8L2RvY3VtZW50PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvc2VhcmNoL2ZpbmRVc2FnZXMveG1sL2NvbS9Gb28uamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvc2VhcmNoL2ZpbmRVc2FnZXMveG1sL2NvbS9Gb28uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45Njg5MDc3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9zZWFyY2gvZmluZFVzYWdlcy94bWwvY29tL0Zvby5qYXZhCkBAIC0wLDAgKzEsMiBAQAorcGFja2FnZSBjb207CitwdWJsaWMgY2xhc3MgRm9vIHt9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9zZWFyY2gvZmluZFVzYWdlczE1L2VudW1Db25zdHJ1Y3Rvci9wYWNrL091ckVudW0uamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvc2VhcmNoL2ZpbmRVc2FnZXMxNS9lbnVtQ29uc3RydWN0b3IvcGFjay9PdXJFbnVtLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmJkMjVlNwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvc2VhcmNoL2ZpbmRVc2FnZXMxNS9lbnVtQ29uc3RydWN0b3IvcGFjay9PdXJFbnVtLmphdmEKQEAgLTAsMCArMSw3IEBACitwYWNrYWdlIHBhY2s7CitlbnVtIE91ckVudW0geworICBBKDEwKSwgQiwgQygyNyk7CisKKyAgT3VyRW51bShpbnQgaSkge30KKyAgT3VyRW51bSgpIHt9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9zZWFyY2gvZmluZFVzYWdlczE1L2ZpbmRSYXdPdmVycmlkZGVuVXNhZ2VzL3BhY2svUmF3T3ZlcnJpZGRlbi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9zZWFyY2gvZmluZFVzYWdlczE1L2ZpbmRSYXdPdmVycmlkZGVuVXNhZ2VzL3BhY2svUmF3T3ZlcnJpZGRlbi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNhNmZjN2UKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3NlYXJjaC9maW5kVXNhZ2VzMTUvZmluZFJhd092ZXJyaWRkZW5Vc2FnZXMvcGFjay9SYXdPdmVycmlkZGVuLmphdmEKQEAgLTAsMCArMSwxMCBAQAorcGFja2FnZSBwYWNrOworCitjbGFzcyBCYXNlIHsKKyAgICB2b2lkIGZvbyhMaXN0PFN0cmluZz4gbCkge30KK30KKworY2xhc3MgRGVyaXZlZCBleHRlbmRzIEJhc2UgeworICAgIHZvaWQgZm9vKExpc3QgbCkgeworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3NlYXJjaC9maW5kVXNhZ2VzMTUvZ2VuZXJpY01ldGhvZE92ZXJyaWRlclVzYWdlcy9wYWNrL0dlbmVyaWNDbGFzcy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9zZWFyY2gvZmluZFVzYWdlczE1L2dlbmVyaWNNZXRob2RPdmVycmlkZXJVc2FnZXMvcGFjay9HZW5lcmljQ2xhc3MuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZDVlMTk4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9zZWFyY2gvZmluZFVzYWdlczE1L2dlbmVyaWNNZXRob2RPdmVycmlkZXJVc2FnZXMvcGFjay9HZW5lcmljQ2xhc3MuamF2YQpAQCAtMCwwICsxLDEzIEBACitwYWNrYWdlIHBhY2s7CisKK2NsYXNzIEdlbmVyaWNDbGFzczxUPiB7CisgIHZvaWQgZm9vIChUIHQpIHt9Cit9CisKK2NsYXNzIEdlbmVyaWNDbGFzc0Rlcml2ZWQgZXh0ZW5kcyBHZW5lcmljQ2xhc3M8U3RyaW5nPiB7CisgIHZvaWQgZm9vIChTdHJpbmcgcykge30KKworICB2b2lkIGJhciAoKSB7CisgICAgZm9vICgiIik7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3NlYXJjaC9maW5kVXNhZ2VzMTUvZ2VuZXJpY092ZXJyaWRlL3BhY2svR2VuLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3NlYXJjaC9maW5kVXNhZ2VzMTUvZ2VuZXJpY092ZXJyaWRlL3BhY2svR2VuLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjkzYzY0ZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvc2VhcmNoL2ZpbmRVc2FnZXMxNS9nZW5lcmljT3ZlcnJpZGUvcGFjay9HZW4uamF2YQpAQCAtMCwwICsxLDE4IEBACitwYWNrYWdlIHBhY2s7CitpbXBvcnQgamF2YS51dGlsLk1hcDsKKworY2xhc3MgQmVmb3JlUnVuVGFzayB7fQorY2xhc3MgUnVuQ29uZmlndXJhdGlvbnt9CitjbGFzcyBLZXk8VD4ge30KK3B1YmxpYyBhYnN0cmFjdCBjbGFzcyBHZW4geworICAgIHB1YmxpYyBhYnN0cmFjdCA8VCBleHRlbmRzIEJlZm9yZVJ1blRhc2s+IE1hcDxLZXk8VD4sIEJlZm9yZVJ1blRhc2s+IGdldEJlZm9yZVJ1blRhc2tzKFJ1bkNvbmZpZ3VyYXRpb24gc2V0dGluZ3MpOworfQorCitjbGFzcyBYMiBleHRlbmRzIEdlbiB7CisgICAgT2JqZWN0IG8gPSBnZXRCZWZvcmVSdW5UYXNrcyhudWxsKTsKKworICAgIHB1YmxpYyBNYXA8S2V5PD8gZXh0ZW5kcyBCZWZvcmVSdW5UYXNrPiwgQmVmb3JlUnVuVGFzaz4gZ2V0QmVmb3JlUnVuVGFza3MoUnVuQ29uZmlndXJhdGlvbiBzZXR0aW5ncykgeworCisgICAgICAgIHJldHVybiBudWxsOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3NlYXJjaC9pbmhlcml0b3JzL25vU2Nhbkpkay9lbXB0eS50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3NlYXJjaC9pbmhlcml0b3JzL25vU2Nhbkpkay9lbXB0eS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTY5ZGUyOQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvc2VhcmNoL2luaGVyaXRvcnMvbm9TY2FuSmRrL2VtcHR5LnR4dApkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9zZWFyY2gvaW5oZXJpdG9ycy9zYW1lTmFtZWRDbGFzc2VzL3gvVGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9zZWFyY2gvaW5oZXJpdG9ycy9zYW1lTmFtZWRDbGFzc2VzL3gvVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJjNDY5MWYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3NlYXJjaC9pbmhlcml0b3JzL3NhbWVOYW1lZENsYXNzZXMveC9UZXN0LmphdmEKQEAgLTAsMCArMSwxOCBAQAorcGFja2FnZSB4OworCitwdWJsaWMgY2xhc3MgVGVzdDxUPiB7CisgIHB1YmxpYyB2b2lkIGZvbyhUIHQpIHsKKyAgICAgIC8vVHJhY2tlZCBmOworICB9Cit9CisKK2NsYXNzIEdvbzxUPiBleHRlbmRzIFRlc3Q8VD4geworICAgIHB1YmxpYyB2b2lkIGZvbyhUIHQpIHt9Cit9CitjbGFzcyBHb28gIHsKKworfQorCitjbGFzcyBab28gZXh0ZW5kcyBHb28geworICAgIHB1YmxpYyB2b2lkIGZvbyhPYmplY3QgdCkge30KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvc2VhcmNoL2luaGVyaXRvcnMvc2NvcGUvRGVyaXZlZDIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvc2VhcmNoL2luaGVyaXRvcnMvc2NvcGUvRGVyaXZlZDIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NDMxODFiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9zZWFyY2gvaW5oZXJpdG9ycy9zY29wZS9EZXJpdmVkMi5qYXZhCkBAIC0wLDAgKzEsNiBAQAorCitpbXBvcnQgcGFjazEuRGVyaXZlZDE7CitpbXBvcnQgcGFjazEuQmFzZTsKKworcHVibGljIGNsYXNzIERlcml2ZWQyIGV4dGVuZHMgQmFzZXsKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvc2VhcmNoL2luaGVyaXRvcnMvc2NvcGUvcGFjazEvQmFzZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9zZWFyY2gvaW5oZXJpdG9ycy9zY29wZS9wYWNrMS9CYXNlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTAxMDRmYwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvc2VhcmNoL2luaGVyaXRvcnMvc2NvcGUvcGFjazEvQmFzZS5qYXZhCkBAIC0wLDAgKzEsNCBAQAorcGFja2FnZSBwYWNrMTsKKworcHVibGljIGNsYXNzIEJhc2UgeworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9zZWFyY2gvaW5oZXJpdG9ycy9zY29wZS9wYWNrMS9EZXJpdmVkMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9zZWFyY2gvaW5oZXJpdG9ycy9zY29wZS9wYWNrMS9EZXJpdmVkMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIwNWEzZDkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3NlYXJjaC9pbmhlcml0b3JzL3Njb3BlL3BhY2sxL0Rlcml2ZWQxLmphdmEKQEAgLTAsMCArMSw0IEBACitwYWNrYWdlIHBhY2sxOworCitwdWJsaWMgY2xhc3MgRGVyaXZlZDEgZXh0ZW5kcyBCYXNleworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9zZWFyY2gvaW5oZXJpdG9ycy9zY29wZS9wYWNrMS9EZXJpdmVkMy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9zZWFyY2gvaW5oZXJpdG9ycy9zY29wZS9wYWNrMS9EZXJpdmVkMy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUxYzIxNzAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3NlYXJjaC9pbmhlcml0b3JzL3Njb3BlL3BhY2sxL0Rlcml2ZWQzLmphdmEKQEAgLTAsMCArMSw2IEBACitwYWNrYWdlIHBhY2sxOworCitpbXBvcnQgRGVyaXZlZDI7CisKK3B1YmxpYyBjbGFzcyBEZXJpdmVkMyBleHRlbmRzIERlcml2ZWQyeworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9zZWFyY2gvcGxhaW5UZXh0VXNhZ2VzL3NpbXBsZS9UZXN0LnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvc2VhcmNoL3BsYWluVGV4dFVzYWdlcy9zaW1wbGUvVGVzdC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGIzM2FhMAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvc2VhcmNoL3BsYWluVGV4dFVzYWdlcy9zaW1wbGUvVGVzdC50eHQKQEAgLTAsMCArMSwzIEBACithYWEgY29tLkZvbyBiYmIKK2FhYWNvbS5Gb28KK2FhYSBjb20uRm9vYmJiCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3NlYXJjaC9wbGFpblRleHRVc2FnZXMveG1sT3V0T2ZTY29wZS9jb20vRm9vLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3NlYXJjaC9wbGFpblRleHRVc2FnZXMveG1sT3V0T2ZTY29wZS9jb20vRm9vLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWQwYzNmNAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvc2VhcmNoL3BsYWluVGV4dFVzYWdlcy94bWxPdXRPZlNjb3BlL2NvbS9Gb28uamF2YQpAQCAtMCwwICsxLDMgQEAKK3BhY2thZ2UgY29tOworCitwdWJsaWMgY2xhc3MgRm9vIHt9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9zZWFyY2gvcGxhaW5UZXh0VXNhZ2VzL3htbE91dE9mU2NvcGUvcmVzb3VyY2VzL1Rlc3QueG1sIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9zZWFyY2gvcGxhaW5UZXh0VXNhZ2VzL3htbE91dE9mU2NvcGUvcmVzb3VyY2VzL1Rlc3QueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEzNmFhOWYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3NlYXJjaC9wbGFpblRleHRVc2FnZXMveG1sT3V0T2ZTY29wZS9yZXNvdXJjZXMvVGVzdC54bWwKQEAgLTAsMCArMSwzIEBACis8ZG9jdW1lbnQ+CisgIDxhY3Rpb24gY2xhc3M9ImNvbS5Gb28iIC8+Cis8L2RvY3VtZW50PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvc2VhcmNoL3NlYXJjaEluTGlicy9saWIvY2xhc3Nlcy9MaWJyYXJ5Q2xhc3MxLmNsYXNzIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9zZWFyY2gvc2VhcmNoSW5MaWJzL2xpYi9jbGFzc2VzL0xpYnJhcnlDbGFzczEuY2xhc3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzExNDhiMAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvc2VhcmNoL3NlYXJjaEluTGlicy9saWIvY2xhc3Nlcy9MaWJyYXJ5Q2xhc3MxLmNsYXNzCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvc2VhcmNoL3NlYXJjaEluTGlicy9saWIvY2xhc3Nlcy9MaWJyYXJ5Q2xhc3MyLmNsYXNzIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9zZWFyY2gvc2VhcmNoSW5MaWJzL2xpYi9jbGFzc2VzL0xpYnJhcnlDbGFzczIuY2xhc3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmJmOTNkMAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvc2VhcmNoL3NlYXJjaEluTGlicy9saWIvY2xhc3Nlcy9MaWJyYXJ5Q2xhc3MyLmNsYXNzCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvc2VhcmNoL3NlYXJjaEluTGlicy9saWIvc3JjL0xpYnJhcnlDbGFzczEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvc2VhcmNoL3NlYXJjaEluTGlicy9saWIvc3JjL0xpYnJhcnlDbGFzczEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMmJiNWYzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9zZWFyY2gvc2VhcmNoSW5MaWJzL2xpYi9zcmMvTGlicmFyeUNsYXNzMS5qYXZhCkBAIC0wLDAgKzEsNCBAQAorY2xhc3MgTGlicmFyeUNsYXNzMXsKKyAgTGlicmFyeUNsYXNzMiBsaWJDbGFzczI7CisgIFByb2plY3RDbGFzcyBwcm9qZWN0Q2xhc3M7IC8vIHNob3VsZCBub3QgZmluZCB0aGlzIQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvc2VhcmNoL3NlYXJjaEluTGlicy9saWIvc3JjL0xpYnJhcnlDbGFzczIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvc2VhcmNoL3NlYXJjaEluTGlicy9saWIvc3JjL0xpYnJhcnlDbGFzczIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMTM2ZWYyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9zZWFyY2gvc2VhcmNoSW5MaWJzL2xpYi9zcmMvTGlicmFyeUNsYXNzMi5qYXZhCkBAIC0wLDAgKzEsMyBAQAorY2xhc3MgTGlicmFyeUNsYXNzMnsKKyAgTGlicmFyeUNsYXNzMSBsaWJDbGFzczE7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9zZWFyY2gvc2VhcmNoSW5MaWJzL3Byb2plY3QvUHJvamVjdENsYXNzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3NlYXJjaC9zZWFyY2hJbkxpYnMvcHJvamVjdC9Qcm9qZWN0Q2xhc3MuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZThlMDdlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9zZWFyY2gvc2VhcmNoSW5MaWJzL3Byb2plY3QvUHJvamVjdENsYXNzLmphdmEKQEAgLTAsMCArMSw0IEBACitjbGFzcyBQcm9qZWN0Q2xhc3N7CisgIFByb2plY3RDbGFzcyBhQ2xhc3M7CisgIExpYnJhcnlDbGFzczEgbGliQ2xhc3MxOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvc2VhcmNoL3NlYXJjaEluTGlicy9wcm9qZWN0L3NyYzIvUHJvamVjdENsYXNzMi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9zZWFyY2gvc2VhcmNoSW5MaWJzL3Byb2plY3Qvc3JjMi9Qcm9qZWN0Q2xhc3MyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjdhOTI4NQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvc2VhcmNoL3NlYXJjaEluTGlicy9wcm9qZWN0L3NyYzIvUHJvamVjdENsYXNzMi5qYXZhCkBAIC0wLDAgKzEsMyBAQAorY2xhc3MgUHJvamVjdENsYXNzMnsKKyAgUHJvamVjdENsYXNzMiBhQ2xhc3M7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9zZWFyY2gvdXBkYXRlQ2FjaGUvMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9zZWFyY2gvdXBkYXRlQ2FjaGUvMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZlYTIwNjEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3NlYXJjaC91cGRhdGVDYWNoZS8xLmphdmEKQEAgLTAsMCArMSw0IEBACitjbGFzcyBDbGFzczF7CisgIEV4Y2VwdGlvbiBlOworICBTdHJpbmcgczsgLy9uZXd0b2RvCit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3NlYXJjaC91cGRhdGVDYWNoZS9hRGlyLzIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvc2VhcmNoL3VwZGF0ZUNhY2hlL2FEaXIvMi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRmMjNhZjIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3NlYXJjaC91cGRhdGVDYWNoZS9hRGlyLzIuamF2YQpAQCAtMCwwICsxLDQgQEAKK2NsYXNzIEJ7CisgIEV4Y2VwdGlvbiBlOworICBUaHJlYWQgdGhyZWFkOyAvL3RvZG8KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvc2hvcnRlbkNsYXNzUmVmcy9TQ1IyMjM2OC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9zaG9ydGVuQ2xhc3NSZWZzL1NDUjIyMzY4LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTI1YTNkNwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvc2hvcnRlbkNsYXNzUmVmcy9TQ1IyMjM2OC5qYXZhCkBAIC0wLDAgKzEsNSBAQAorY2xhc3MgWCB7CisgIHZvaWQgbWV0aG9kKCkgeworICAgIGphdmEudXRpbC5MaXN0PAorICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Nob3J0ZW5DbGFzc1JlZnMvU0NSMjIzNjhfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvc2hvcnRlbkNsYXNzUmVmcy9TQ1IyMjM2OF9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYzZTYzMzgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3Nob3J0ZW5DbGFzc1JlZnMvU0NSMjIzNjhfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDcgQEAKK2ltcG9ydCBqYXZhLnV0aWwuTGlzdDsKKworY2xhc3MgWCB7CisgIHZvaWQgbWV0aG9kKCkgeworICAgIExpc3Q8CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvc2hvcnRlbkNsYXNzUmVmcy9TQ1IzNzI1NC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9zaG9ydGVuQ2xhc3NSZWZzL1NDUjM3MjU0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGE0OTI5NwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvc2hvcnRlbkNsYXNzUmVmcy9TQ1IzNzI1NC5qYXZhCkBAIC0wLDAgKzEsMTggQEAKK2NsYXNzIFBhcmVudHsKKworICAgIHByb3RlY3RlZCBDaGlsZCBjcmVhdGVDaGlsZCgpIHsKKyAgICAgICAgcmV0dXJuIG51bGw7CisgICAgfQorCisgICAgc3RhdGljIGNsYXNzIENoaWxkIHsKKyAgICB9Cit9CisKK2NsYXNzIFN1YkNsYXNzIGV4dGVuZHMgUGFyZW50IHsKKyAgICAgLy9EbyBub3Qgc2hvcnRlbiBQYXJlbnQuQ2hpbGQgdG8gQ2hpbGQKKyAgICAgcHJvdGVjdGVkIFBhcmVudC5DaGlsZCBjcmVhdGVDaGlsZCgpIHsKKyAgICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgfQorCisgICAgY2xhc3MgQ2hpbGQgZXh0ZW5kcyBQYXJlbnQuQ2hpbGQge30KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvc2hvcnRlbkNsYXNzUmVmcy9TQ1IzNzI1NF9hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS9zaG9ydGVuQ2xhc3NSZWZzL1NDUjM3MjU0X2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGE0OTI5NwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvc2hvcnRlbkNsYXNzUmVmcy9TQ1IzNzI1NF9hZnRlci5qYXZhCkBAIC0wLDAgKzEsMTggQEAKK2NsYXNzIFBhcmVudHsKKworICAgIHByb3RlY3RlZCBDaGlsZCBjcmVhdGVDaGlsZCgpIHsKKyAgICAgICAgcmV0dXJuIG51bGw7CisgICAgfQorCisgICAgc3RhdGljIGNsYXNzIENoaWxkIHsKKyAgICB9Cit9CisKK2NsYXNzIFN1YkNsYXNzIGV4dGVuZHMgUGFyZW50IHsKKyAgICAgLy9EbyBub3Qgc2hvcnRlbiBQYXJlbnQuQ2hpbGQgdG8gQ2hpbGQKKyAgICAgcHJvdGVjdGVkIFBhcmVudC5DaGlsZCBjcmVhdGVDaGlsZCgpIHsKKyAgICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgfQorCisgICAgY2xhc3MgQ2hpbGQgZXh0ZW5kcyBQYXJlbnQuQ2hpbGQge30KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvc3R1Yi9TdHViUGVyZm9ybWFuY2VUZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3N0dWIvU3R1YlBlcmZvcm1hbmNlVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBmZDg3ZTgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3N0dWIvU3R1YlBlcmZvcm1hbmNlVGVzdC5qYXZhCkBAIC0wLDAgKzEsNTc3IEBACisvLyBHRU5FUkFURUQgQVVUT01BVElDQUxMWS4gRE8gTk9UIEFMVEVSIFBMRUFTRQorcHVibGljIGNsYXNzIExldmVsMk5ld0dlbmVyYXRpb24geworICAgcHVibGljIHN0YXRpYyBjbGFzcyBOb2RlIHsgfQorICAgcHVibGljIHN0YXRpYyBjbGFzcyBOb2RlTGV2ZWwxXzAwMDAgZXh0ZW5kcyBOb2RleyB9CisgICBwdWJsaWMgc3RhdGljIGNsYXNzIE5vZGVMZXZlbDFfMDAwMSBleHRlbmRzIE5vZGV7IH0KKyAgIHB1YmxpYyBzdGF0aWMgY2xhc3MgTm9kZUxldmVsMV8wMDEwIGV4dGVuZHMgTm9kZXsgfQorICAgcHVibGljIHN0YXRpYyBjbGFzcyBOb2RlTGV2ZWwxXzAwMTEgZXh0ZW5kcyBOb2RleyB9CisgICBwdWJsaWMgc3RhdGljIGNsYXNzIE5vZGVMZXZlbDFfMDEwMCBleHRlbmRzIE5vZGV7IH0KKyAgIHB1YmxpYyBzdGF0aWMgY2xhc3MgTm9kZUxldmVsMV8wMTAxIGV4dGVuZHMgTm9kZXsgfQorICAgcHVibGljIHN0YXRpYyBjbGFzcyBOb2RlTGV2ZWwxXzAxMTAgZXh0ZW5kcyBOb2RleyB9CisgICBwdWJsaWMgc3RhdGljIGNsYXNzIE5vZGVMZXZlbDFfMDExMSBleHRlbmRzIE5vZGV7IH0KKyAgIHB1YmxpYyBzdGF0aWMgY2xhc3MgTm9kZUxldmVsMV8xMDAwIGV4dGVuZHMgTm9kZXsgfQorICAgcHVibGljIHN0YXRpYyBjbGFzcyBOb2RlTGV2ZWwxXzEwMDEgZXh0ZW5kcyBOb2RleyB9CisgICBwdWJsaWMgc3RhdGljIGNsYXNzIE5vZGVMZXZlbDFfMTAxMCBleHRlbmRzIE5vZGV7IH0KKyAgIHB1YmxpYyBzdGF0aWMgY2xhc3MgTm9kZUxldmVsMV8xMDExIGV4dGVuZHMgTm9kZXsgfQorICAgcHVibGljIHN0YXRpYyBjbGFzcyBOb2RlTGV2ZWwxXzExMDAgZXh0ZW5kcyBOb2RleyB9CisgICBwdWJsaWMgc3RhdGljIGNsYXNzIE5vZGVMZXZlbDFfMTEwMSBleHRlbmRzIE5vZGV7IH0KKyAgIHB1YmxpYyBzdGF0aWMgY2xhc3MgTm9kZUxldmVsMV8xMTEwIGV4dGVuZHMgTm9kZXsgfQorICAgcHVibGljIHN0YXRpYyBjbGFzcyBOb2RlTGV2ZWwxXzExMTEgZXh0ZW5kcyBOb2RleyB9CisKKyAgIHB1YmxpYyBzdGF0aWMgaW50IGdldE51bWVyaWMoTm9kZSBhTm9kZSkgeworICAgICAgICAgICAgaWYgKGFOb2RlIGluc3RhbmNlb2YgTm9kZUxldmVsMV8wMDAwKSByZXR1cm4gMDsKKyAgICAgICBlbHNlIGlmIChhTm9kZSBpbnN0YW5jZW9mIE5vZGVMZXZlbDFfMDAwMSkgcmV0dXJuIDE7CisgICAgICAgZWxzZSBpZiAoYU5vZGUgaW5zdGFuY2VvZiBOb2RlTGV2ZWwxXzAwMTApIHJldHVybiAyOworICAgICAgIGVsc2UgaWYgKGFOb2RlIGluc3RhbmNlb2YgTm9kZUxldmVsMV8wMDExKSByZXR1cm4gMzsKKyAgICAgICBlbHNlIGlmIChhTm9kZSBpbnN0YW5jZW9mIE5vZGVMZXZlbDFfMDEwMCkgcmV0dXJuIDQ7CisgICAgICAgZWxzZSBpZiAoYU5vZGUgaW5zdGFuY2VvZiBOb2RlTGV2ZWwxXzAxMDEpIHJldHVybiA1OworICAgICAgIGVsc2UgaWYgKGFOb2RlIGluc3RhbmNlb2YgTm9kZUxldmVsMV8wMTEwKSByZXR1cm4gNjsKKyAgICAgICBlbHNlIGlmIChhTm9kZSBpbnN0YW5jZW9mIE5vZGVMZXZlbDFfMDExMSkgcmV0dXJuIDc7CisgICAgICAgZWxzZSBpZiAoYU5vZGUgaW5zdGFuY2VvZiBOb2RlTGV2ZWwxXzEwMDApIHJldHVybiA4OworICAgICAgIGVsc2UgaWYgKGFOb2RlIGluc3RhbmNlb2YgTm9kZUxldmVsMV8xMDAxKSByZXR1cm4gOTsKKyAgICAgICBlbHNlIGlmIChhTm9kZSBpbnN0YW5jZW9mIE5vZGVMZXZlbDFfMTAxMCkgcmV0dXJuIDEwOworICAgICAgIGVsc2UgaWYgKGFOb2RlIGluc3RhbmNlb2YgTm9kZUxldmVsMV8xMDExKSByZXR1cm4gMTE7CisgICAgICAgZWxzZSBpZiAoYU5vZGUgaW5zdGFuY2VvZiBOb2RlTGV2ZWwxXzExMDApIHJldHVybiAxMjsKKyAgICAgICBlbHNlIGlmIChhTm9kZSBpbnN0YW5jZW9mIE5vZGVMZXZlbDFfMTEwMSkgcmV0dXJuIDEzOworICAgICAgIGVsc2UgaWYgKGFOb2RlIGluc3RhbmNlb2YgTm9kZUxldmVsMV8xMTEwKSByZXR1cm4gMTQ7CisgICAgICAgZWxzZSBpZiAoYU5vZGUgaW5zdGFuY2VvZiBOb2RlTGV2ZWwxXzExMTEpIHJldHVybiAxNTsKKyAgICAgICBlbHNlIHJldHVybiAtMTsKKyAgIH0KKworICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgTm9kZSBfMCA9IG5ldyBOb2RlTGV2ZWwxXzAwMDAoKTsKKyAgIHByaXZhdGUgc3RhdGljIGZpbmFsIE5vZGUgXzEgPSBuZXcgTm9kZUxldmVsMV8wMDAxKCk7CisgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBOb2RlIF8yID0gbmV3IE5vZGVMZXZlbDFfMDAxMCgpOworICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgTm9kZSBfMyA9IG5ldyBOb2RlTGV2ZWwxXzAwMTEoKTsKKyAgIHByaXZhdGUgc3RhdGljIGZpbmFsIE5vZGUgXzQgPSBuZXcgTm9kZUxldmVsMV8wMTAwKCk7CisgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBOb2RlIF81ID0gbmV3IE5vZGVMZXZlbDFfMDEwMSgpOworICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgTm9kZSBfNiA9IG5ldyBOb2RlTGV2ZWwxXzAxMTAoKTsKKyAgIHByaXZhdGUgc3RhdGljIGZpbmFsIE5vZGUgXzcgPSBuZXcgTm9kZUxldmVsMV8wMTExKCk7CisgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBOb2RlIF84ID0gbmV3IE5vZGVMZXZlbDFfMTAwMCgpOworICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgTm9kZSBfOSA9IG5ldyBOb2RlTGV2ZWwxXzEwMDEoKTsKKyAgIHByaXZhdGUgc3RhdGljIGZpbmFsIE5vZGUgX2EgPSBuZXcgTm9kZUxldmVsMV8xMDEwKCk7CisgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBOb2RlIF9iID0gbmV3IE5vZGVMZXZlbDFfMTAxMSgpOworICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgTm9kZSBfYyA9IG5ldyBOb2RlTGV2ZWwxXzExMDAoKTsKKyAgIHByaXZhdGUgc3RhdGljIGZpbmFsIE5vZGUgX2QgPSBuZXcgTm9kZUxldmVsMV8xMTAxKCk7CisgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBOb2RlIF9lID0gbmV3IE5vZGVMZXZlbDFfMTExMCgpOworICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgTm9kZSBfZiA9IG5ldyBOb2RlTGV2ZWwxXzExMTEoKTsKKworICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgTm9kZVtdIFBSRUNBTENVTEFURUQgPSB7CisgICAgICBfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMSxfMCxfMCxfMCxfMSxfMCxfMSxfMSxfMSxfMCxfMCxfMCxfMCxfMCxfMixfMCxfMyxfMCxfMCxfMCxfMSxfMCxfMyxfMSxfMyxfMCxfMCxfMCxfMSxfMCxfMyxfMSxfMyxfMCxfMSxfMSxfMCxfMSxfMyxfMSxfMixfMCxfMixfMCxfMyxfMixfMSxfMyxfMSxfMCxfMyxfMSxfMixfMyxfMSxfMyxfMCxfMCxfMCxfMCxfMCxfMCxfMixfMCxfMyxfMCxfMCxfMCxfMSxfMCxfMyxfMSxfMyxfMCxfMixfMCxfMixfMixfMCxfMixfMSxfMCxfMixfMCxfMyxfMixfMSxfMyxfMSxfMCxfMixfMCxfMyxfMixfMSxfMyxfMSxfMCxfMyxfMSxfMixfMyxfMSxfMyxfMCxfMixfMCxfMixfMSxfMCxfMSxfMSxfMSxfMixfMSxfMyxfMCxfMSxfMSxfMSxfMCwKKyAgICAgIF8wLF8wLF8wLF8xLF8wLF8zLF8xLF8zLF8wLF8xLF8xLF8wLF85LF9iLF85LF9hLF8wLF8yLF8wLF8zLF8yLF8zLF8zLF8zLF8wLF8zLF8xLF8yLF9iLF9iLF9iLF9hLF8wLF8zLF8xLF8yLF8zLF8zLF8zLF8yLF8xLF8yLF8wLF8yLF9iLF9hLF9hLF9hLF8yLF8zLF8zLF8yLF8zLF8xLF8zLF8wLF8zLF8yLF8yLF8yLF9iLF84LF9hLF84LF8wLF8yLF8wLF8zLF82LF83LF83LF83LF8wLF8zLF8xLF8yLF9mLF9mLF9mLF9lLF8yLF8yLF8yLF8zLF82LF81LF83LF81LF8yLF8zLF8zLF8yLF9mLF9kLF9mLF9jLF8yLF8zLF8zLF8yLF83LF81LF83LF80LF8zLF8yLF8yLF8yLF9mLF9jLF9lLF9jLF8yLF8xLF8zLF8wLF81LF81LF81LF80LF8zLF8wLF8yLF8wLF9kLF9jLF9jLF9jLAorICAgICAgXzAsXzAsXzAsXzAsXzAsXzIsXzAsXzMsXzAsXzAsXzAsXzEsXzAsXzMsXzEsXzMsXzAsXzIsXzAsXzIsXzIsXzAsXzIsXzEsXzAsXzIsXzAsXzMsXzIsXzEsXzMsXzEsXzAsXzIsXzAsXzMsXzIsXzEsXzMsXzEsXzAsXzMsXzEsXzIsXzMsXzEsXzMsXzAsXzIsXzAsXzIsXzEsXzAsXzEsXzEsXzEsXzIsXzEsXzMsXzAsXzEsXzEsXzEsXzAsXzAsXzIsXzAsXzIsXzYsXzQsXzYsXzUsXzAsXzIsXzAsXzMsXzYsXzUsXzcsXzUsXzIsXzAsXzIsXzAsXzQsXzQsXzQsXzUsXzIsXzAsXzIsXzEsXzQsXzUsXzUsXzUsXzIsXzAsXzIsXzEsXzQsXzUsXzUsXzUsXzIsXzEsXzMsXzAsXzUsXzUsXzUsXzQsXzAsXzAsXzAsXzEsXzQsXzUsXzUsXzUsXzAsXzEsXzEsXzAsXzUsXzUsXzUsXzQsCisgICAgICBfMCxfMixfMCxfMyxfNixfNyxfNyxfNyxfMCxfMyxfMSxfMixfZixfZixfZixfZSxfMixfMixfMixfMyxfNixfNSxfNyxfNSxfMixfMyxfMyxfMixfZixfZCxfZixfYyxfMixfMyxfMyxfMixfNyxfNSxfNyxfNCxfMyxfMixfMixfMixfZixfYyxfZSxfYyxfMixfMSxfMyxfMCxfNSxfNSxfNSxfNCxfMyxfMCxfMixfMCxfZCxfYyxfYyxfYyxfNixfNixfNixfNyxfMixfMSxfMyxfMSxfNixfNyxfNyxfNixfYixfOSxfYixfOCxfNixfNCxfNixfNSxfMCxfMSxfMSxfMSxfNixfNSxfNyxfNCxfOSxfOSxfOSxfOCxfNixfNSxfNyxfNCxfMSxfMSxfMSxfMCxfNyxfNCxfNixfNCxfOSxfOCxfOCxfOCxfNCxfNSxfNSxfNCxfMSxfMSxfMSxfMCxfNSxfNCxfNCxfNCxfOSxfOCxfOCxfOCwKKyAgICAgIF8wLF8wLF8wLF8xLF8wLF8zLF8xLF8zLF8wLF8xLF8xLF8wLF85LF9iLF85LF9hLF8wLF8yLF8wLF8zLF8yLF8xLF8zLF8xLF8wLF8zLF8xLF8yLF9iLF85LF9iLF84LF8wLF8zLF8xLF8yLF8zLF8xLF8zLF8wLF8xLF8yLF8wLF8yLF9iLF84LF9hLF84LF8yLF8xLF8zLF8wLF8xLF8xLF8xLF8wLF8zLF8wLF8yLF8wLF85LF84LF84LF84LF8wLF8yLF8wLF8zLF82LF81LF83LF81LF8wLF8zLF8xLF8yLF9mLF9kLF9mLF9jLF8yLF8wLF8yLF8xLF80LF81LF81LF81LF8yLF8xLF8zLF8wLF9kLF9kLF9kLF9jLF8yLF8xLF8zLF8wLF81LF81LF81LF80LF8zLF8wLF8yLF8wLF9kLF9jLF9jLF9jLF8wLF8xLF8xLF8wLF81LF81LF81LF80LF8xLF8wLF8wLF8wLF9kLF9jLF9jLF9jLAorICAgICAgXzAsXzMsXzEsXzIsX2YsX2YsX2YsX2UsXzksX2EsXzgsX2EsXzcsXzYsXzYsXzYsXzIsXzMsXzMsXzIsX2YsX2QsX2YsX2MsX2IsX2EsX2EsX2EsXzcsXzQsXzYsXzQsXzMsXzIsXzIsXzIsX2YsX2MsX2UsX2MsX2EsX2EsX2EsX2EsXzYsXzQsXzYsXzQsXzMsXzAsXzIsXzAsX2QsX2MsX2MsX2MsX2EsXzgsX2EsXzgsXzQsXzQsXzQsXzQsXzYsXzcsXzcsXzYsX2YsX2QsX2YsX2MsX2YsX2UsX2UsX2UsXzcsXzQsXzYsXzQsXzYsXzUsXzcsXzQsX2QsX2QsX2QsX2MsX2YsX2MsX2UsX2MsXzUsXzQsXzQsXzQsXzcsXzQsXzYsXzQsX2QsX2MsX2MsX2MsX2UsX2MsX2UsX2MsXzQsXzQsXzQsXzQsXzUsXzQsXzQsXzQsX2QsX2MsX2MsX2MsX2MsX2MsX2MsX2MsXzQsXzQsXzQsXzQsCisgICAgICBfMCxfMixfMCxfMyxfNixfNSxfNyxfNSxfMCxfMyxfMSxfMixfZixfZCxfZixfYyxfMixfMCxfMixfMSxfNCxfNSxfNSxfNSxfMixfMSxfMyxfMCxfZCxfZCxfZCxfYyxfMixfMSxfMyxfMCxfNSxfNSxfNSxfNCxfMyxfMCxfMixfMCxfZCxfYyxfYyxfYyxfMCxfMSxfMSxfMCxfNSxfNSxfNSxfNCxfMSxfMCxfMCxfMCxfZCxfYyxfYyxfYyxfNixfNCxfNixfNSxfNCxfNSxfNSxfNSxfNixfNSxfNyxfNCxfZCxfZCxfZCxfYyxfNCxfNCxfNCxfNSxfNCxfNSxfNSxfNSxfNCxfNSxfNSxfNCxfZCxfZCxfZCxfYyxfNCxfNSxfNSxfNCxfNSxfNSxfNSxfNCxfNSxfNCxfNCxfNCxfZCxfYyxfYyxfYyxfNCxfNSxfNSxfNCxfNSxfNSxfNSxfNCxfNSxfNCxfNCxfNCxfZCxfYyxfYyxfYywKKyAgICAgIF82LF83LF83LF82LF9mLF9kLF9mLF9jLF9mLF9lLF9lLF9lLF83LF80LF82LF80LF82LF81LF83LF80LF9kLF9kLF9kLF9jLF9mLF9jLF9lLF9jLF81LF80LF80LF80LF83LF80LF82LF80LF9kLF9jLF9jLF9jLF9lLF9jLF9lLF9jLF80LF80LF80LF80LF81LF80LF80LF80LF9kLF9jLF9jLF9jLF9jLF9jLF9jLF9jLF80LF80LF80LF80LF82LF81LF83LF80LF85LF85LF85LF84LF9mLF9jLF9lLF9jLF8xLF8wLF8wLF8wLF80LF81LF81LF80LF85LF85LF85LF84LF9kLF9jLF9jLF9jLF8xLF8wLF8wLF8wLF81LF80LF80LF80LF85LF84LF84LF84LF9jLF9jLF9jLF9jLF8wLF8wLF8wLF8wLF81LF80LF80LF80LF85LF84LF84LF84LF9jLF9jLF9jLF9jLF8wLF8wLF8wLF8wLAorICAgICAgXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzEsXzAsXzAsXzAsXzEsXzAsXzEsXzEsXzEsXzAsXzAsXzAsXzAsXzAsXzIsXzAsXzMsXzAsXzAsXzAsXzEsXzAsXzMsXzEsXzMsXzAsXzAsXzAsXzEsXzAsXzMsXzEsXzMsXzAsXzEsXzEsXzAsXzEsXzMsXzEsXzIsXzAsXzIsXzAsXzMsXzIsXzEsXzMsXzEsXzAsXzMsXzEsXzIsXzMsXzEsXzMsXzAsXzAsXzAsXzAsXzAsXzQsXzYsXzQsXzcsXzAsXzAsXzAsXzEsXzQsXzcsXzUsXzcsXzAsXzIsXzAsXzIsXzYsXzQsXzYsXzUsXzAsXzIsXzAsXzMsXzYsXzUsXzcsXzUsXzAsXzIsXzAsXzMsXzYsXzUsXzcsXzUsXzAsXzMsXzEsXzIsXzcsXzUsXzcsXzQsXzIsXzAsXzIsXzEsXzQsXzUsXzUsXzUsXzIsXzEsXzMsXzAsXzUsXzUsXzUsXzQsCisgICAgICBfMCxfMCxfMCxfMSxfNCxfNyxfNSxfNyxfMCxfMSxfMSxfMCxfZCxfZixfZCxfZSxfMCxfMixfMCxfMyxfNixfNyxfNyxfNyxfMCxfMyxfMSxfMixfZixfZixfZixfZSxfMCxfMyxfMSxfMixfNyxfNyxfNyxfNixfMSxfMixfMCxfMixfZixfZSxfZSxfZSxfMixfMyxfMyxfMixfNyxfNSxfNyxfNCxfMyxfMixfMixfMixfZixfYyxfZSxfYyxfNCxfNixfNCxfNyxfMixfMyxfMyxfMyxfNCxfNyxfNSxfNixfYixfYixfYixfYSxfNixfNixfNixfNyxfMixfMSxfMyxfMSxfNixfNyxfNyxfNixfYixfOSxfYixfOCxfNixfNyxfNyxfNixfMyxfMSxfMyxfMCxfNyxfNixfNixfNixfYixfOCxfYSxfOCxfNixfNSxfNyxfNCxfMSxfMSxfMSxfMCxfNyxfNCxfNixfNCxfOSxfOCxfOCxfOCwKKyAgICAgIF8wLF8wLF8wLF8wLF80LF82LF80LF83LF8wLF8wLF8wLF8xLF80LF83LF81LF83LF8wLF8yLF8wLF8yLF82LF80LF82LF81LF8wLF8yLF8wLF8zLF82LF81LF83LF81LF8wLF8yLF8wLF8zLF82LF81LF83LF81LF8wLF8zLF8xLF8yLF83LF81LF83LF80LF8yLF8wLF8yLF8xLF80LF81LF81LF81LF8yLF8xLF8zLF8wLF81LF81LF81LF80LF80LF82LF80LF82LF8yLF8wLF8yLF8xLF80LF82LF80LF83LF8yLF8xLF8zLF8xLF82LF80LF82LF80LF8wLF8wLF8wLF8xLF82LF80LF82LF81LF8wLF8xLF8xLF8xLF82LF80LF82LF81LF8wLF8xLF8xLF8xLF82LF81LF83LF80LF8xLF8xLF8xLF8wLF80LF80LF80LF81LF8wLF8xLF8xLF8xLF80LF81LF81LF80LF8xLF8xLF8xLF8wLAorICAgICAgXzQsXzYsXzQsXzcsXzIsXzMsXzMsXzMsXzQsXzcsXzUsXzYsX2IsX2IsX2IsX2EsXzYsXzYsXzYsXzcsXzIsXzEsXzMsXzEsXzYsXzcsXzcsXzYsX2IsXzksX2IsXzgsXzYsXzcsXzcsXzYsXzMsXzEsXzMsXzAsXzcsXzYsXzYsXzYsX2IsXzgsX2EsXzgsXzYsXzUsXzcsXzQsXzEsXzEsXzEsXzAsXzcsXzQsXzYsXzQsXzksXzgsXzgsXzgsXzIsXzIsXzIsXzMsXzIsXzEsXzMsXzEsXzIsXzMsXzMsXzIsX2IsXzksX2IsXzgsXzIsXzAsXzIsXzEsXzAsXzEsXzEsXzEsXzIsXzEsXzMsXzAsXzksXzksXzksXzgsXzIsXzEsXzMsXzAsXzEsXzEsXzEsXzAsXzMsXzAsXzIsXzAsXzksXzgsXzgsXzgsXzAsXzEsXzEsXzAsXzEsXzEsXzEsXzAsXzEsXzAsXzAsXzAsXzksXzgsXzgsXzgsCisgICAgICBfMCxfMCxfMCxfMSxfNCxfNyxfNSxfNyxfMCxfMSxfMSxfMCxfZCxfZixfZCxfZSxfMCxfMixfMCxfMyxfNixfNSxfNyxfNSxfMCxfMyxfMSxfMixfZixfZCxfZixfYyxfMCxfMyxfMSxfMixfNyxfNSxfNyxfNCxfMSxfMixfMCxfMixfZixfYyxfZSxfYyxfMixfMSxfMyxfMCxfNSxfNSxfNSxfNCxfMyxfMCxfMixfMCxfZCxfYyxfYyxfYyxfNCxfNixfNCxfNyxfNixfNSxfNyxfNSxfNCxfNyxfNSxfNixfZixfZCxfZixfYyxfNixfNCxfNixfNSxfNCxfNSxfNSxfNSxfNixfNSxfNyxfNCxfZCxfZCxfZCxfYyxfNixfNSxfNyxfNCxfNSxfNSxfNSxfNCxfNyxfNCxfNixfNCxfZCxfYyxfYyxfYyxfNCxfNSxfNSxfNCxfNSxfNSxfNSxfNCxfNSxfNCxfNCxfNCxfZCxfYyxfYyxfYywKKyAgICAgIF80LF83LF81LF82LF9mLF9mLF9mLF9lLF9kLF9lLF9jLF9lLF83LF82LF82LF82LF82LF83LF83LF82LF9mLF9kLF9mLF9jLF9mLF9lLF9lLF9lLF83LF80LF82LF80LF83LF82LF82LF82LF9mLF9jLF9lLF9jLF9lLF9lLF9lLF9lLF82LF80LF82LF80LF83LF80LF82LF80LF9kLF9jLF9jLF9jLF9lLF9jLF9lLF9jLF80LF80LF80LF80LF82LF83LF83LF82LF9iLF85LF9iLF84LF9mLF9lLF9lLF9lLF8zLF8wLF8yLF8wLF82LF81LF83LF80LF85LF85LF85LF84LF9mLF9jLF9lLF9jLF8xLF8wLF8wLF8wLF83LF80LF82LF80LF85LF84LF84LF84LF9lLF9jLF9lLF9jLF8wLF8wLF8wLF8wLF81LF80LF80LF80LF85LF84LF84LF84LF9jLF9jLF9jLF9jLF8wLF8wLF8wLF8wLAorICAgICAgXzQsXzYsXzQsXzcsXzYsXzUsXzcsXzUsXzQsXzcsXzUsXzYsX2YsX2QsX2YsX2MsXzYsXzQsXzYsXzUsXzQsXzUsXzUsXzUsXzYsXzUsXzcsXzQsX2QsX2QsX2QsX2MsXzYsXzUsXzcsXzQsXzUsXzUsXzUsXzQsXzcsXzQsXzYsXzQsX2QsX2MsX2MsX2MsXzQsXzUsXzUsXzQsXzUsXzUsXzUsXzQsXzUsXzQsXzQsXzQsX2QsX2MsX2MsX2MsXzYsXzQsXzYsXzUsXzAsXzEsXzEsXzEsXzYsXzUsXzcsXzQsXzksXzksXzksXzgsXzQsXzQsXzQsXzUsXzAsXzEsXzEsXzEsXzQsXzUsXzUsXzQsXzksXzksXzksXzgsXzQsXzUsXzUsXzQsXzEsXzEsXzEsXzAsXzUsXzQsXzQsXzQsXzksXzgsXzgsXzgsXzQsXzUsXzUsXzQsXzEsXzEsXzEsXzAsXzUsXzQsXzQsXzQsXzksXzgsXzgsXzgsCisgICAgICBfNixfNyxfNyxfNixfYixfOSxfYixfOCxfZixfZSxfZSxfZSxfMyxfMCxfMixfMCxfNixfNSxfNyxfNCxfOSxfOSxfOSxfOCxfZixfYyxfZSxfYyxfMSxfMCxfMCxfMCxfNyxfNCxfNixfNCxfOSxfOCxfOCxfOCxfZSxfYyxfZSxfYyxfMCxfMCxfMCxfMCxfNSxfNCxfNCxfNCxfOSxfOCxfOCxfOCxfYyxfYyxfYyxfYyxfMCxfMCxfMCxfMCxfMixfMSxfMyxfMCxfOSxfOSxfOSxfOCxfYixfOCxfYSxfOCxfMSxfMCxfMCxfMCxfMCxfMSxfMSxfMCxfOSxfOSxfOSxfOCxfOSxfOCxfOCxfOCxfMSxfMCxfMCxfMCxfMSxfMCxfMCxfMCxfOSxfOCxfOCxfOCxfOCxfOCxfOCxfOCxfMCxfMCxfMCxfMCxfMSxfMCxfMCxfMCxfOSxfOCxfOCxfOCxfOCxfOCxfOCxfOCxfMCxfMCxfMCxfMCwKKyAgICAgIF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8xLF8wLF8wLF8wLF8xLF84LF85LF85LF85LF8wLF8wLF8wLF8wLF8wLF8yLF8wLF8zLF8wLF8wLF8wLF8xLF84LF9iLF85LF9iLF8wLF8wLF8wLF8xLF8wLF8zLF8xLF8zLF8wLF8xLF8xLF8wLF85LF9iLF85LF9hLF8wLF8yLF8wLF8zLF8yLF8xLF8zLF8xLF8wLF8zLF8xLF8yLF9iLF85LF9iLF84LF8wLF8wLF8wLF8wLF80LF82LF80LF83LF8wLF8wLF8wLF8xLF9jLF9mLF9kLF9mLF8wLF8yLF8wLF8yLF82LF80LF82LF81LF8wLF8yLF8wLF8zLF9lLF9kLF9mLF9kLF8wLF8yLF8wLF8zLF82LF81LF83LF81LF8wLF8zLF8xLF8yLF9mLF9kLF9mLF9jLF8yLF8wLF8yLF8xLF80LF81LF81LF81LF8yLF8xLF8zLF8wLF9kLF9kLF9kLF9jLAorICAgICAgXzAsXzAsXzAsXzEsX2MsX2YsX2QsX2YsXzgsXzksXzksXzgsXzUsXzcsXzUsXzYsXzAsXzIsXzAsXzMsX2UsX2YsX2YsX2YsXzgsX2IsXzksX2EsXzcsXzcsXzcsXzYsXzAsXzMsXzEsXzIsX2YsX2YsX2YsX2UsXzksX2EsXzgsX2EsXzcsXzYsXzYsXzYsXzIsXzMsXzMsXzIsX2YsX2QsX2YsX2MsX2IsX2EsX2EsX2EsXzcsXzQsXzYsXzQsXzQsXzYsXzQsXzcsX2EsX2IsX2IsX2IsX2MsX2YsX2QsX2UsXzMsXzMsXzMsXzIsXzYsXzYsXzYsXzcsX2EsXzksX2IsXzksX2UsX2YsX2YsX2UsXzMsXzEsXzMsXzAsXzYsXzcsXzcsXzYsX2IsXzksX2IsXzgsX2YsX2UsX2UsX2UsXzMsXzAsXzIsXzAsXzYsXzUsXzcsXzQsXzksXzksXzksXzgsX2YsX2MsX2UsX2MsXzEsXzAsXzAsXzAsCisgICAgICBfMCxfMCxfMCxfMCxfNCxfNixfNCxfNyxfMCxfMCxfMCxfMSxfYyxfZixfZCxfZixfMCxfMixfMCxfMixfNixfNCxfNixfNSxfMCxfMixfMCxfMyxfZSxfZCxfZixfZCxfMCxfMixfMCxfMyxfNixfNSxfNyxfNSxfMCxfMyxfMSxfMixfZixfZCxfZixfYyxfMixfMCxfMixfMSxfNCxfNSxfNSxfNSxfMixfMSxfMyxfMCxfZCxfZCxfZCxfYyxfNCxfNixfNCxfNixfMixfMCxfMixfMSxfNCxfNixfNCxfNyxfYSxfOSxfYixfOSxfNixfNCxfNixfNCxfMCxfMCxfMCxfMSxfNixfNCxfNixfNSxfOCxfOSxfOSxfOSxfNixfNCxfNixfNSxfMCxfMSxfMSxfMSxfNixfNSxfNyxfNCxfOSxfOSxfOSxfOCxfNCxfNCxfNCxfNSxfMCxfMSxfMSxfMSxfNCxfNSxfNSxfNCxfOSxfOSxfOSxfOCwKKyAgICAgIF80LF82LF80LF83LF9hLF9iLF9iLF9iLF9jLF9mLF9kLF9lLF8zLF8zLF8zLF8yLF82LF82LF82LF83LF9hLF85LF9iLF85LF9lLF9mLF9mLF9lLF8zLF8xLF8zLF8wLF82LF83LF83LF82LF9iLF85LF9iLF84LF9mLF9lLF9lLF9lLF8zLF8wLF8yLF8wLF82LF81LF83LF80LF85LF85LF85LF84LF9mLF9jLF9lLF9jLF8xLF8wLF8wLF8wLF8yLF8yLF8yLF8zLF9hLF85LF9iLF85LF9hLF9iLF9iLF9hLF8zLF8xLF8zLF8wLF8yLF8wLF8yLF8xLF84LF85LF85LF85LF9hLF85LF9iLF84LF8xLF8xLF8xLF8wLF8yLF8xLF8zLF8wLF85LF85LF85LF84LF9iLF84LF9hLF84LF8xLF8wLF8wLF8wLF8wLF8xLF8xLF8wLF85LF85LF85LF84LF85LF84LF84LF84LF8xLF8wLF8wLF8wLAorICAgICAgXzAsXzAsXzAsXzEsX2MsX2YsX2QsX2YsXzgsXzksXzksXzgsXzUsXzcsXzUsXzYsXzAsXzIsXzAsXzMsX2UsX2QsX2YsX2QsXzgsX2IsXzksX2EsXzcsXzUsXzcsXzQsXzAsXzMsXzEsXzIsX2YsX2QsX2YsX2MsXzksX2EsXzgsX2EsXzcsXzQsXzYsXzQsXzIsXzEsXzMsXzAsX2QsX2QsX2QsX2MsX2IsXzgsX2EsXzgsXzUsXzQsXzQsXzQsXzQsXzYsXzQsXzcsX2UsX2QsX2YsX2QsX2MsX2YsX2QsX2UsXzcsXzUsXzcsXzQsXzYsXzQsXzYsXzUsX2MsX2QsX2QsX2QsX2UsX2QsX2YsX2MsXzUsXzUsXzUsXzQsXzYsXzUsXzcsXzQsX2QsX2QsX2QsX2MsX2YsX2MsX2UsX2MsXzUsXzQsXzQsXzQsXzQsXzUsXzUsXzQsX2QsX2QsX2QsX2MsX2QsX2MsX2MsX2MsXzUsXzQsXzQsXzQsCisgICAgICBfYyxfZixfZCxfZSxfNyxfNyxfNyxfNixfNSxfNixfNCxfNixfNyxfNixfNixfNixfZSxfZixfZixfZSxfNyxfNSxfNyxfNCxfNyxfNixfNixfNixfNyxfNCxfNixfNCxfZixfZSxfZSxfZSxfNyxfNCxfNixfNCxfNixfNixfNixfNixfNixfNCxfNixfNCxfZixfYyxfZSxfYyxfNSxfNCxfNCxfNCxfNixfNCxfNixfNCxfNCxfNCxfNCxfNCxfZSxfZixfZixfZSxfMyxfMSxfMyxfMCxfNyxfNixfNixfNixfMyxfMCxfMixfMCxfZSxfZCxfZixfYyxfMSxfMSxfMSxfMCxfNyxfNCxfNixfNCxfMSxfMCxfMCxfMCxfZixfYyxfZSxfYyxfMSxfMCxfMCxfMCxfNixfNCxfNixfNCxfMCxfMCxfMCxfMCxfZCxfYyxfYyxfYyxfMSxfMCxfMCxfMCxfNCxfNCxfNCxfNCxfMCxfMCxfMCxfMCwKKyAgICAgIF80LF82LF80LF83LF9lLF9kLF9mLF9kLF9jLF9mLF9kLF9lLF83LF81LF83LF80LF82LF80LF82LF81LF9jLF9kLF9kLF9kLF9lLF9kLF9mLF9jLF81LF81LF81LF80LF82LF81LF83LF80LF9kLF9kLF9kLF9jLF9mLF9jLF9lLF9jLF81LF80LF80LF80LF80LF81LF81LF80LF9kLF9kLF9kLF9jLF9kLF9jLF9jLF9jLF81LF80LF80LF80LF82LF80LF82LF81LF84LF85LF85LF85LF9lLF9kLF9mLF9jLF8xLF8xLF8xLF8wLF80LF80LF80LF81LF84LF85LF85LF85LF9jLF9kLF9kLF9jLF8xLF8xLF8xLF8wLF80LF81LF81LF80LF85LF85LF85LF84LF9kLF9jLF9jLF9jLF8xLF8wLF8wLF8wLF80LF81LF81LF80LF85LF85LF85LF84LF9kLF9jLF9jLF9jLF8xLF8wLF8wLF8wLAorICAgICAgX2UsX2YsX2YsX2UsXzMsXzEsXzMsXzAsXzcsXzYsXzYsXzYsXzMsXzAsXzIsXzAsX2UsX2QsX2YsX2MsXzEsXzEsXzEsXzAsXzcsXzQsXzYsXzQsXzEsXzAsXzAsXzAsX2YsX2MsX2UsX2MsXzEsXzAsXzAsXzAsXzYsXzQsXzYsXzQsXzAsXzAsXzAsXzAsX2QsX2MsX2MsX2MsXzEsXzAsXzAsXzAsXzQsXzQsXzQsXzQsXzAsXzAsXzAsXzAsX2EsXzksX2IsXzgsXzEsXzEsXzEsXzAsXzMsXzAsXzIsXzAsXzEsXzAsXzAsXzAsXzgsXzksXzksXzgsXzEsXzEsXzEsXzAsXzEsXzAsXzAsXzAsXzEsXzAsXzAsXzAsXzksXzgsXzgsXzgsXzEsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzksXzgsXzgsXzgsXzEsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsCisgICAgICBfMCxfMCxfMCxfMCxfNCxfNCxfNCxfNSxfMCxfMCxfMCxfMSxfYyxfZCxfZCxfZCxfMCxfMCxfMCxfMCxfNCxfNixfNCxfNyxfMCxfMCxfMCxfMSxfYyxfZixfZCxfZixfMCxfMCxfMCxfMSxfNCxfNyxfNSxfNyxfMCxfMSxfMSxfMCxfZCxfZixfZCxfZSxfMCxfMixfMCxfMyxfNixfNSxfNyxfNSxfMCxfMyxfMSxfMixfZixfZCxfZixfYyxfNCxfNCxfNCxfNCxfMCxfMixfMCxfMyxfNCxfNCxfNCxfNSxfOCxfYixfOSxfYixfNCxfNixfNCxfNixfMixfMCxfMixfMSxfNCxfNixfNCxfNyxfYSxfOSxfYixfOSxfNCxfNixfNCxfNyxfMixfMSxfMyxfMSxfNCxfNyxfNSxfNixfYixfOSxfYixfOCxfNixfNCxfNixfNSxfMCxfMSxfMSxfMSxfNixfNSxfNyxfNCxfOSxfOSxfOSxfOCwKKyAgICAgIF80LF80LF80LF81LF84LF9iLF85LF9iLF9jLF9kLF9kLF9jLF8xLF8zLF8xLF8yLF80LF82LF80LF83LF9hLF9iLF9iLF9iLF9jLF9mLF9kLF9lLF8zLF8zLF8zLF8yLF80LF83LF81LF82LF9iLF9iLF9iLF9hLF9kLF9lLF9jLF9lLF8zLF8yLF8yLF8yLF82LF83LF83LF82LF9iLF85LF9iLF84LF9mLF9lLF9lLF9lLF8zLF8wLF8yLF8wLF8wLF8yLF8wLF8zLF9hLF9iLF9iLF9iLF84LF9iLF85LF9hLF8zLF8zLF8zLF8yLF8yLF8yLF8yLF8zLF9hLF85LF9iLF85LF9hLF9iLF9iLF9hLF8zLF8xLF8zLF8wLF8yLF8zLF8zLF8yLF9iLF85LF9iLF84LF9iLF9hLF9hLF9hLF8zLF8wLF8yLF8wLF8yLF8xLF8zLF8wLF85LF85LF85LF84LF9iLF84LF9hLF84LF8xLF8wLF8wLF8wLAorICAgICAgXzQsXzQsXzQsXzQsXzAsXzIsXzAsXzMsXzQsXzQsXzQsXzUsXzgsX2IsXzksX2IsXzQsXzYsXzQsXzYsXzIsXzAsXzIsXzEsXzQsXzYsXzQsXzcsX2EsXzksX2IsXzksXzQsXzYsXzQsXzcsXzIsXzEsXzMsXzEsXzQsXzcsXzUsXzYsX2IsXzksX2IsXzgsXzYsXzQsXzYsXzUsXzAsXzEsXzEsXzEsXzYsXzUsXzcsXzQsXzksXzksXzksXzgsXzAsXzIsXzAsXzIsXzIsXzAsXzIsXzEsXzAsXzIsXzAsXzMsX2EsXzksX2IsXzksXzIsXzAsXzIsXzAsXzAsXzAsXzAsXzEsXzIsXzAsXzIsXzEsXzgsXzksXzksXzksXzIsXzAsXzIsXzEsXzAsXzEsXzEsXzEsXzIsXzEsXzMsXzAsXzksXzksXzksXzgsXzAsXzAsXzAsXzEsXzAsXzEsXzEsXzEsXzAsXzEsXzEsXzAsXzksXzksXzksXzgsCisgICAgICBfMCxfMixfMCxfMyxfYSxfYixfYixfYixfOCxfYixfOSxfYSxfMyxfMyxfMyxfMixfMixfMixfMixfMyxfYSxfOSxfYixfOSxfYSxfYixfYixfYSxfMyxfMSxfMyxfMCxfMixfMyxfMyxfMixfYixfOSxfYixfOCxfYixfYSxfYSxfYSxfMyxfMCxfMixfMCxfMixfMSxfMyxfMCxfOSxfOSxfOSxfOCxfYixfOCxfYSxfOCxfMSxfMCxfMCxfMCxfMixfMixfMixfMyxfYSxfOSxfYixfOSxfYSxfYixfYixfYSxfMyxfMSxfMyxfMCxfMixfMCxfMixfMSxfOCxfOSxfOSxfOSxfYSxfOSxfYixfOCxfMSxfMSxfMSxfMCxfMixfMSxfMyxfMCxfOSxfOSxfOSxfOCxfYixfOCxfYSxfOCxfMSxfMCxfMCxfMCxfMCxfMSxfMSxfMCxfOSxfOSxfOSxfOCxfOSxfOCxfOCxfOCxfMSxfMCxfMCxfMCwKKyAgICAgIF80LF80LF80LF81LF9jLF9mLF9kLF9mLF9jLF9kLF9kLF9jLF81LF83LF81LF82LF80LF82LF80LF83LF9lLF9kLF9mLF9kLF9jLF9mLF9kLF9lLF83LF81LF83LF80LF80LF83LF81LF82LF9mLF9kLF9mLF9jLF9kLF9lLF9jLF9lLF83LF80LF82LF80LF82LF81LF83LF80LF9kLF9kLF9kLF9jLF9mLF9jLF9lLF9jLF81LF80LF80LF80LF80LF82LF80LF83LF9hLF85LF9iLF85LF9jLF9mLF9kLF9lLF8zLF8xLF8zLF8wLF82LF80LF82LF81LF84LF85LF85LF85LF9lLF9kLF9mLF9jLF8xLF8xLF8xLF8wLF82LF81LF83LF80LF85LF85LF85LF84LF9mLF9jLF9lLF9jLF8xLF8wLF8wLF8wLF80LF81LF81LF80LF85LF85LF85LF84LF9kLF9jLF9jLF9jLF8xLF8wLF8wLF8wLAorICAgICAgX2MsX2YsX2QsX2UsXzMsXzMsXzMsXzIsXzUsXzYsXzQsXzYsXzMsXzIsXzIsXzIsX2UsX2YsX2YsX2UsXzMsXzEsXzMsXzAsXzcsXzYsXzYsXzYsXzMsXzAsXzIsXzAsX2YsX2UsX2UsX2UsXzMsXzAsXzIsXzAsXzYsXzYsXzYsXzYsXzIsXzAsXzIsXzAsX2YsX2MsX2UsX2MsXzEsXzAsXzAsXzAsXzYsXzQsXzYsXzQsXzAsXzAsXzAsXzAsX2EsX2IsX2IsX2EsXzMsXzEsXzMsXzAsXzMsXzIsXzIsXzIsXzMsXzAsXzIsXzAsX2EsXzksX2IsXzgsXzEsXzEsXzEsXzAsXzMsXzAsXzIsXzAsXzEsXzAsXzAsXzAsX2IsXzgsX2EsXzgsXzEsXzAsXzAsXzAsXzIsXzAsXzIsXzAsXzAsXzAsXzAsXzAsXzksXzgsXzgsXzgsXzEsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsCisgICAgICBfNCxfNixfNCxfNyxfYSxfOSxfYixfOSxfYyxfZixfZCxfZSxfMyxfMSxfMyxfMCxfNixfNCxfNixfNSxfOCxfOSxfOSxfOSxfZSxfZCxfZixfYyxfMSxfMSxfMSxfMCxfNixfNSxfNyxfNCxfOSxfOSxfOSxfOCxfZixfYyxfZSxfYyxfMSxfMCxfMCxfMCxfNCxfNSxfNSxfNCxfOSxfOSxfOSxfOCxfZCxfYyxfYyxfYyxfMSxfMCxfMCxfMCxfMixfMCxfMixfMSxfOCxfOSxfOSxfOSxfYSxfOSxfYixfOCxfMSxfMSxfMSxfMCxfMCxfMCxfMCxfMSxfOCxfOSxfOSxfOSxfOCxfOSxfOSxfOCxfMSxfMSxfMSxfMCxfMCxfMSxfMSxfMCxfOSxfOSxfOSxfOCxfOSxfOCxfOCxfOCxfMSxfMCxfMCxfMCxfMCxfMSxfMSxfMCxfOSxfOSxfOSxfOCxfOSxfOCxfOCxfOCxfMSxfMCxfMCxfMCwKKyAgICAgIF9hLF9iLF9iLF9hLF8zLF8xLF8zLF8wLF8zLF8yLF8yLF8yLF8zLF8wLF8yLF8wLF9hLF85LF9iLF84LF8xLF8xLF8xLF8wLF8zLF8wLF8yLF8wLF8xLF8wLF8wLF8wLF9iLF84LF9hLF84LF8xLF8wLF8wLF8wLF8yLF8wLF8yLF8wLF8wLF8wLF8wLF8wLF85LF84LF84LF84LF8xLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF9hLF85LF9iLF84LF8xLF8xLF8xLF8wLF8zLF8wLF8yLF8wLF8xLF8wLF8wLF8wLF84LF85LF85LF84LF8xLF8xLF8xLF8wLF8xLF8wLF8wLF8wLF8xLF8wLF8wLF8wLF85LF84LF84LF84LF8xLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF85LF84LF84LF84LF8xLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLAorICAgICAgXzAsXzAsXzAsXzEsXzAsXzMsXzEsXzMsXzAsXzEsXzEsXzAsXzksX2IsXzksX2EsXzAsXzIsXzAsXzMsXzIsXzEsXzMsXzEsXzAsXzMsXzEsXzIsX2IsXzksX2IsXzgsXzAsXzMsXzEsXzIsXzMsXzEsXzMsXzAsXzEsXzIsXzAsXzIsX2IsXzgsX2EsXzgsXzIsXzEsXzMsXzAsXzEsXzEsXzEsXzAsXzMsXzAsXzIsXzAsXzksXzgsXzgsXzgsXzAsXzIsXzAsXzMsXzYsXzUsXzcsXzUsXzAsXzMsXzEsXzIsX2YsX2QsX2YsX2MsXzIsXzAsXzIsXzEsXzQsXzUsXzUsXzUsXzIsXzEsXzMsXzAsX2QsX2QsX2QsX2MsXzIsXzEsXzMsXzAsXzUsXzUsXzUsXzQsXzMsXzAsXzIsXzAsX2QsX2MsX2MsX2MsXzAsXzEsXzEsXzAsXzUsXzUsXzUsXzQsXzEsXzAsXzAsXzAsX2QsX2MsX2MsX2MsCisgICAgICBfMCxfMyxfMSxfMixfZixfZixfZixfZSxfOSxfYSxfOCxfYSxfZixfZSxfZSxfZSxfMixfMyxfMyxfMixfZixfZCxfZixfYyxfYixfYSxfYSxfYSxfZixfYyxfZSxfYyxfMyxfMixfMixfMixfZixfYyxfZSxfYyxfYSxfYSxfYSxfYSxfZSxfYyxfZSxfYyxfMyxfMCxfMixfMCxfZCxfYyxfYyxfYyxfYSxfOCxfYSxfOCxfYyxfYyxfYyxfYyxfNixfNyxfNyxfNixfYixfOSxfYixfOCxfZixfZSxfZSxfZSxfYixfOCxfYSxfOCxfNixfNSxfNyxfNCxfOSxfOSxfOSxfOCxfZixfYyxfZSxfYyxfOSxfOCxfOCxfOCxfNyxfNCxfNixfNCxfOSxfOCxfOCxfOCxfZSxfYyxfZSxfYyxfOCxfOCxfOCxfOCxfNSxfNCxfNCxfNCxfOSxfOCxfOCxfOCxfYyxfYyxfYyxfYyxfOCxfOCxfOCxfOCwKKyAgICAgIF8wLF8yLF8wLF8zLF82LF81LF83LF81LF8wLF8zLF8xLF8yLF9mLF9kLF9mLF9jLF8yLF8wLF8yLF8xLF80LF81LF81LF81LF8yLF8xLF8zLF8wLF9kLF9kLF9kLF9jLF8yLF8xLF8zLF8wLF81LF81LF81LF80LF8zLF8wLF8yLF8wLF9kLF9jLF9jLF9jLF8wLF8xLF8xLF8wLF81LF81LF81LF80LF8xLF8wLF8wLF8wLF9kLF9jLF9jLF9jLF82LF80LF82LF81LF8wLF8xLF8xLF8xLF82LF81LF83LF80LF85LF85LF85LF84LF80LF80LF80LF81LF8wLF8xLF8xLF8xLF80LF81LF81LF80LF85LF85LF85LF84LF80LF81LF81LF80LF8xLF8xLF8xLF8wLF81LF80LF80LF80LF85LF84LF84LF84LF80LF81LF81LF80LF8xLF8xLF8xLF8wLF81LF80LF80LF80LF85LF84LF84LF84LAorICAgICAgXzYsXzcsXzcsXzYsX2IsXzksX2IsXzgsX2YsX2UsX2UsX2UsX2IsXzgsX2EsXzgsXzYsXzUsXzcsXzQsXzksXzksXzksXzgsX2YsX2MsX2UsX2MsXzksXzgsXzgsXzgsXzcsXzQsXzYsXzQsXzksXzgsXzgsXzgsX2UsX2MsX2UsX2MsXzgsXzgsXzgsXzgsXzUsXzQsXzQsXzQsXzksXzgsXzgsXzgsX2MsX2MsX2MsX2MsXzgsXzgsXzgsXzgsXzIsXzEsXzMsXzAsXzksXzksXzksXzgsX2IsXzgsX2EsXzgsXzksXzgsXzgsXzgsXzAsXzEsXzEsXzAsXzksXzksXzksXzgsXzksXzgsXzgsXzgsXzksXzgsXzgsXzgsXzEsXzAsXzAsXzAsXzksXzgsXzgsXzgsXzgsXzgsXzgsXzgsXzgsXzgsXzgsXzgsXzEsXzAsXzAsXzAsXzksXzgsXzgsXzgsXzgsXzgsXzgsXzgsXzgsXzgsXzgsXzgsCisgICAgICBfMCxfMyxfMSxfMixfZixfZCxfZixfYyxfOSxfYSxfOCxfYSxfZixfYyxfZSxfYyxfMixfMSxfMyxfMCxfZCxfZCxfZCxfYyxfYixfOCxfYSxfOCxfZCxfYyxfYyxfYyxfMyxfMCxfMixfMCxfZCxfYyxfYyxfYyxfYSxfOCxfYSxfOCxfYyxfYyxfYyxfYyxfMSxfMCxfMCxfMCxfZCxfYyxfYyxfYyxfOCxfOCxfOCxfOCxfYyxfYyxfYyxfYyxfNixfNSxfNyxfNCxfZCxfZCxfZCxfYyxfZixfYyxfZSxfYyxfZCxfYyxfYyxfYyxfNCxfNSxfNSxfNCxfZCxfZCxfZCxfYyxfZCxfYyxfYyxfYyxfZCxfYyxfYyxfYyxfNSxfNCxfNCxfNCxfZCxfYyxfYyxfYyxfYyxfYyxfYyxfYyxfYyxfYyxfYyxfYyxfNSxfNCxfNCxfNCxfZCxfYyxfYyxfYyxfYyxfYyxfYyxfYyxfYyxfYyxfYyxfYywKKyAgICAgIF9mLF9lLF9lLF9lLF9mLF9jLF9lLF9jLF9lLF9lLF9lLF9lLF82LF80LF82LF80LF9mLF9jLF9lLF9jLF9kLF9jLF9jLF9jLF9lLF9jLF9lLF9jLF80LF80LF80LF80LF9lLF9jLF9lLF9jLF9jLF9jLF9jLF9jLF9lLF9jLF9lLF9jLF80LF80LF80LF80LF9jLF9jLF9jLF9jLF9jLF9jLF9jLF9jLF9jLF9jLF9jLF9jLF80LF80LF80LF80LF9mLF9jLF9lLF9jLF85LF84LF84LF84LF9lLF9jLF9lLF9jLF8wLF8wLF8wLF8wLF9kLF9jLF9jLF9jLF85LF84LF84LF84LF9jLF9jLF9jLF9jLF8wLF8wLF8wLF8wLF9jLF9jLF9jLF9jLF84LF84LF84LF84LF9jLF9jLF9jLF9jLF8wLF8wLF8wLF8wLF9jLF9jLF9jLF9jLF84LF84LF84LF84LF9jLF9jLF9jLF9jLF8wLF8wLF8wLF8wLAorICAgICAgXzYsXzUsXzcsXzQsX2QsX2QsX2QsX2MsX2YsX2MsX2UsX2MsX2QsX2MsX2MsX2MsXzQsXzUsXzUsXzQsX2QsX2QsX2QsX2MsX2QsX2MsX2MsX2MsX2QsX2MsX2MsX2MsXzUsXzQsXzQsXzQsX2QsX2MsX2MsX2MsX2MsX2MsX2MsX2MsX2MsX2MsX2MsX2MsXzUsXzQsXzQsXzQsX2QsX2MsX2MsX2MsX2MsX2MsX2MsX2MsX2MsX2MsX2MsX2MsXzQsXzUsXzUsXzQsXzksXzksXzksXzgsX2QsX2MsX2MsX2MsXzksXzgsXzgsXzgsXzQsXzUsXzUsXzQsXzksXzksXzksXzgsX2QsX2MsX2MsX2MsXzksXzgsXzgsXzgsXzUsXzQsXzQsXzQsXzksXzgsXzgsXzgsX2MsX2MsX2MsX2MsXzgsXzgsXzgsXzgsXzUsXzQsXzQsXzQsXzksXzgsXzgsXzgsX2MsX2MsX2MsX2MsXzgsXzgsXzgsXzgsCisgICAgICBfZixfYyxfZSxfYyxfOSxfOCxfOCxfOCxfZSxfYyxfZSxfYyxfMCxfMCxfMCxfMCxfZCxfYyxfYyxfYyxfOSxfOCxfOCxfOCxfYyxfYyxfYyxfYyxfMCxfMCxfMCxfMCxfYyxfYyxfYyxfYyxfOCxfOCxfOCxfOCxfYyxfYyxfYyxfYyxfMCxfMCxfMCxfMCxfYyxfYyxfYyxfYyxfOCxfOCxfOCxfOCxfYyxfYyxfYyxfYyxfMCxfMCxfMCxfMCxfOSxfOCxfOCxfOCxfOSxfOCxfOCxfOCxfOCxfOCxfOCxfOCxfMCxfMCxfMCxfMCxfOSxfOCxfOCxfOCxfOSxfOCxfOCxfOCxfOCxfOCxfOCxfOCxfMCxfMCxfMCxfMCxfOCxfOCxfOCxfOCxfOCxfOCxfOCxfOCxfOCxfOCxfOCxfOCxfMCxfMCxfMCxfMCxfOCxfOCxfOCxfOCxfOCxfOCxfOCxfOCxfOCxfOCxfOCxfOCxfMCxfMCxfMCxfMCwKKyAgICAgIF8wLF8wLF8wLF8xLF80LF83LF81LF83LF8wLF8xLF8xLF8wLF9kLF9mLF9kLF9lLF8wLF8yLF8wLF8zLF82LF81LF83LF81LF8wLF8zLF8xLF8yLF9mLF9kLF9mLF9jLF8wLF8zLF8xLF8yLF83LF81LF83LF80LF8xLF8yLF8wLF8yLF9mLF9jLF9lLF9jLF8yLF8xLF8zLF8wLF81LF81LF81LF80LF8zLF8wLF8yLF8wLF9kLF9jLF9jLF9jLF80LF82LF80LF83LF8yLF8xLF8zLF8xLF80LF83LF81LF82LF9iLF85LF9iLF84LF82LF80LF82LF81LF8wLF8xLF8xLF8xLF82LF81LF83LF80LF85LF85LF85LF84LF82LF81LF83LF80LF8xLF8xLF8xLF8wLF83LF80LF82LF80LF85LF84LF84LF84LF80LF81LF81LF80LF8xLF8xLF8xLF8wLF81LF80LF80LF80LF85LF84LF84LF84LAorICAgICAgXzQsXzcsXzUsXzYsX2IsX2IsX2IsX2EsX2QsX2UsX2MsX2UsX2IsX2EsX2EsX2EsXzYsXzcsXzcsXzYsX2IsXzksX2IsXzgsX2YsX2UsX2UsX2UsX2IsXzgsX2EsXzgsXzcsXzYsXzYsXzYsX2IsXzgsX2EsXzgsX2UsX2UsX2UsX2UsX2EsXzgsX2EsXzgsXzcsXzQsXzYsXzQsXzksXzgsXzgsXzgsX2UsX2MsX2UsX2MsXzgsXzgsXzgsXzgsXzIsXzMsXzMsXzIsX2IsXzksX2IsXzgsX2IsX2EsX2EsX2EsX2IsXzgsX2EsXzgsXzIsXzEsXzMsXzAsXzksXzksXzksXzgsX2IsXzgsX2EsXzgsXzksXzgsXzgsXzgsXzMsXzAsXzIsXzAsXzksXzgsXzgsXzgsX2EsXzgsX2EsXzgsXzgsXzgsXzgsXzgsXzEsXzAsXzAsXzAsXzksXzgsXzgsXzgsXzgsXzgsXzgsXzgsXzgsXzgsXzgsXzgsCisgICAgICBfNCxfNixfNCxfNyxfMixfMSxfMyxfMSxfNCxfNyxfNSxfNixfYixfOSxfYixfOCxfNixfNCxfNixfNSxfMCxfMSxfMSxfMSxfNixfNSxfNyxfNCxfOSxfOSxfOSxfOCxfNixfNSxfNyxfNCxfMSxfMSxfMSxfMCxfNyxfNCxfNixfNCxfOSxfOCxfOCxfOCxfNCxfNSxfNSxfNCxfMSxfMSxfMSxfMCxfNSxfNCxfNCxfNCxfOSxfOCxfOCxfOCxfMixfMCxfMixfMSxfMCxfMSxfMSxfMSxfMixfMSxfMyxfMCxfOSxfOSxfOSxfOCxfMCxfMCxfMCxfMSxfMCxfMSxfMSxfMSxfMCxfMSxfMSxfMCxfOSxfOSxfOSxfOCxfMCxfMSxfMSxfMCxfMSxfMSxfMSxfMCxfMSxfMCxfMCxfMCxfOSxfOCxfOCxfOCxfMCxfMSxfMSxfMCxfMSxfMSxfMSxfMCxfMSxfMCxfMCxfMCxfOSxfOCxfOCxfOCwKKyAgICAgIF8yLF8zLF8zLF8yLF9iLF85LF9iLF84LF9iLF9hLF9hLF9hLF9iLF84LF9hLF84LF8yLF8xLF8zLF8wLF85LF85LF85LF84LF9iLF84LF9hLF84LF85LF84LF84LF84LF8zLF8wLF8yLF8wLF85LF84LF84LF84LF9hLF84LF9hLF84LF84LF84LF84LF84LF8xLF8wLF8wLF8wLF85LF84LF84LF84LF84LF84LF84LF84LF84LF84LF84LF84LF8yLF8xLF8zLF8wLF85LF85LF85LF84LF9iLF84LF9hLF84LF85LF84LF84LF84LF8wLF8xLF8xLF8wLF85LF85LF85LF84LF85LF84LF84LF84LF85LF84LF84LF84LF8xLF8wLF8wLF8wLF85LF84LF84LF84LF84LF84LF84LF84LF84LF84LF84LF84LF8xLF8wLF8wLF8wLF85LF84LF84LF84LF84LF84LF84LF84LF84LF84LF84LF84LAorICAgICAgXzQsXzcsXzUsXzYsX2YsX2QsX2YsX2MsX2QsX2UsX2MsX2UsX2YsX2MsX2UsX2MsXzYsXzUsXzcsXzQsX2QsX2QsX2QsX2MsX2YsX2MsX2UsX2MsX2QsX2MsX2MsX2MsXzcsXzQsXzYsXzQsX2QsX2MsX2MsX2MsX2UsX2MsX2UsX2MsX2MsX2MsX2MsX2MsXzUsXzQsXzQsXzQsX2QsX2MsX2MsX2MsX2MsX2MsX2MsX2MsX2MsX2MsX2MsX2MsXzYsXzUsXzcsXzQsXzksXzksXzksXzgsX2YsX2MsX2UsX2MsXzksXzgsXzgsXzgsXzQsXzUsXzUsXzQsXzksXzksXzksXzgsX2QsX2MsX2MsX2MsXzksXzgsXzgsXzgsXzUsXzQsXzQsXzQsXzksXzgsXzgsXzgsX2MsX2MsX2MsX2MsXzgsXzgsXzgsXzgsXzUsXzQsXzQsXzQsXzksXzgsXzgsXzgsX2MsX2MsX2MsX2MsXzgsXzgsXzgsXzgsCisgICAgICBfZixfZSxfZSxfZSxfYixfOCxfYSxfOCxfZSxfZSxfZSxfZSxfMixfMCxfMixfMCxfZixfYyxfZSxfYyxfOSxfOCxfOCxfOCxfZSxfYyxfZSxfYyxfMCxfMCxfMCxfMCxfZSxfYyxfZSxfYyxfOCxfOCxfOCxfOCxfZSxfYyxfZSxfYyxfMCxfMCxfMCxfMCxfYyxfYyxfYyxfYyxfOCxfOCxfOCxfOCxfYyxfYyxfYyxfYyxfMCxfMCxfMCxfMCxfYixfOCxfYSxfOCxfOSxfOCxfOCxfOCxfYSxfOCxfYSxfOCxfMCxfMCxfMCxfMCxfOSxfOCxfOCxfOCxfOSxfOCxfOCxfOCxfOCxfOCxfOCxfOCxfMCxfMCxfMCxfMCxfOCxfOCxfOCxfOCxfOCxfOCxfOCxfOCxfOCxfOCxfOCxfOCxfMCxfMCxfMCxfMCxfOCxfOCxfOCxfOCxfOCxfOCxfOCxfOCxfOCxfOCxfOCxfOCxfMCxfMCxfMCxfMCwKKyAgICAgIF82LF81LF83LF80LF85LF85LF85LF84LF9mLF9jLF9lLF9jLF85LF84LF84LF84LF80LF81LF81LF80LF85LF85LF85LF84LF9kLF9jLF9jLF9jLF85LF84LF84LF84LF81LF80LF80LF80LF85LF84LF84LF84LF9jLF9jLF9jLF9jLF84LF84LF84LF84LF81LF80LF80LF80LF85LF84LF84LF84LF9jLF9jLF9jLF9jLF84LF84LF84LF84LF8wLF8xLF8xLF8wLF85LF85LF85LF84LF85LF84LF84LF84LF85LF84LF84LF84LF8wLF8xLF8xLF8wLF85LF85LF85LF84LF85LF84LF84LF84LF85LF84LF84LF84LF8xLF8wLF8wLF8wLF85LF84LF84LF84LF84LF84LF84LF84LF84LF84LF84LF84LF8xLF8wLF8wLF8wLF85LF84LF84LF84LF84LF84LF84LF84LF84LF84LF84LF84LAorICAgICAgX2IsXzgsX2EsXzgsXzksXzgsXzgsXzgsX2EsXzgsX2EsXzgsXzAsXzAsXzAsXzAsXzksXzgsXzgsXzgsXzksXzgsXzgsXzgsXzgsXzgsXzgsXzgsXzAsXzAsXzAsXzAsXzgsXzgsXzgsXzgsXzgsXzgsXzgsXzgsXzgsXzgsXzgsXzgsXzAsXzAsXzAsXzAsXzgsXzgsXzgsXzgsXzgsXzgsXzgsXzgsXzgsXzgsXzgsXzgsXzAsXzAsXzAsXzAsXzksXzgsXzgsXzgsXzksXzgsXzgsXzgsXzgsXzgsXzgsXzgsXzAsXzAsXzAsXzAsXzksXzgsXzgsXzgsXzksXzgsXzgsXzgsXzgsXzgsXzgsXzgsXzAsXzAsXzAsXzAsXzgsXzgsXzgsXzgsXzgsXzgsXzgsXzgsXzgsXzgsXzgsXzgsXzAsXzAsXzAsXzAsXzgsXzgsXzgsXzgsXzgsXzgsXzgsXzgsXzgsXzgsXzgsXzgsXzAsXzAsXzAsXzAsCisgICAgICBfMCxfMCxfMCxfMSxfYyxfZixfZCxfZixfOCxfOSxfOSxfOCxfZCxfZixfZCxfZSxfMCxfMixfMCxfMyxfZSxfZCxfZixfZCxfOCxfYixfOSxfYSxfZixfZCxfZixfYyxfMCxfMyxfMSxfMixfZixfZCxfZixfYyxfOSxfYSxfOCxfYSxfZixfYyxfZSxfYyxfMixfMSxfMyxfMCxfZCxfZCxfZCxfYyxfYixfOCxfYSxfOCxfZCxfYyxfYyxfYyxfNCxfNixfNCxfNyxfYSxfOSxfYixfOSxfYyxfZixfZCxfZSxfYixfOSxfYixfOCxfNixfNCxfNixfNSxfOCxfOSxfOSxfOSxfZSxfZCxfZixfYyxfOSxfOSxfOSxfOCxfNixfNSxfNyxfNCxfOSxfOSxfOSxfOCxfZixfYyxfZSxfYyxfOSxfOCxfOCxfOCxfNCxfNSxfNSxfNCxfOSxfOSxfOSxfOCxfZCxfYyxfYyxfYyxfOSxfOCxfOCxfOCwKKyAgICAgIF9jLF9mLF9kLF9lLF9iLF9iLF9iLF9hLF9kLF9lLF9jLF9lLF8zLF8yLF8yLF8yLF9lLF9mLF9mLF9lLF9iLF85LF9iLF84LF9mLF9lLF9lLF9lLF8zLF8wLF8yLF8wLF9mLF9lLF9lLF9lLF9iLF84LF9hLF84LF9lLF9lLF9lLF9lLF8yLF8wLF8yLF8wLF9mLF9jLF9lLF9jLF85LF84LF84LF84LF9lLF9jLF9lLF9jLF8wLF8wLF8wLF8wLF9hLF9iLF9iLF9hLF9iLF85LF9iLF84LF9iLF9hLF9hLF9hLF8zLF8wLF8yLF8wLF9hLF85LF9iLF84LF85LF85LF85LF84LF9iLF84LF9hLF84LF8xLF8wLF8wLF8wLF9iLF84LF9hLF84LF85LF84LF84LF84LF9hLF84LF9hLF84LF8wLF8wLF8wLF8wLF85LF84LF84LF84LF85LF84LF84LF84LF84LF84LF84LF84LF8wLF8wLF8wLF8wLAorICAgICAgXzQsXzYsXzQsXzcsX2EsXzksX2IsXzksX2MsX2YsX2QsX2UsX2IsXzksX2IsXzgsXzYsXzQsXzYsXzUsXzgsXzksXzksXzksX2UsX2QsX2YsX2MsXzksXzksXzksXzgsXzYsXzUsXzcsXzQsXzksXzksXzksXzgsX2YsX2MsX2UsX2MsXzksXzgsXzgsXzgsXzQsXzUsXzUsXzQsXzksXzksXzksXzgsX2QsX2MsX2MsX2MsXzksXzgsXzgsXzgsXzIsXzAsXzIsXzEsXzgsXzksXzksXzksX2EsXzksX2IsXzgsXzksXzksXzksXzgsXzAsXzAsXzAsXzEsXzgsXzksXzksXzksXzgsXzksXzksXzgsXzksXzksXzksXzgsXzAsXzEsXzEsXzAsXzksXzksXzksXzgsXzksXzgsXzgsXzgsXzksXzgsXzgsXzgsXzAsXzEsXzEsXzAsXzksXzksXzksXzgsXzksXzgsXzgsXzgsXzksXzgsXzgsXzgsCisgICAgICBfYSxfYixfYixfYSxfYixfOSxfYixfOCxfYixfYSxfYSxfYSxfMyxfMCxfMixfMCxfYSxfOSxfYixfOCxfOSxfOSxfOSxfOCxfYixfOCxfYSxfOCxfMSxfMCxfMCxfMCxfYixfOCxfYSxfOCxfOSxfOCxfOCxfOCxfYSxfOCxfYSxfOCxfMCxfMCxfMCxfMCxfOSxfOCxfOCxfOCxfOSxfOCxfOCxfOCxfOCxfOCxfOCxfOCxfMCxfMCxfMCxfMCxfYSxfOSxfYixfOCxfOSxfOSxfOSxfOCxfYixfOCxfYSxfOCxfMSxfMCxfMCxfMCxfOCxfOSxfOSxfOCxfOSxfOSxfOSxfOCxfOSxfOCxfOCxfOCxfMSxfMCxfMCxfMCxfOSxfOCxfOCxfOCxfOSxfOCxfOCxfOCxfOCxfOCxfOCxfOCxfMCxfMCxfMCxfMCxfOSxfOCxfOCxfOCxfOSxfOCxfOCxfOCxfOCxfOCxfOCxfOCxfMCxfMCxfMCxfMCwKKyAgICAgIF9jLF9mLF9kLF9lLF9mLF9kLF9mLF9jLF9kLF9lLF9jLF9lLF83LF80LF82LF80LF9lLF9kLF9mLF9jLF9kLF9kLF9kLF9jLF9mLF9jLF9lLF9jLF81LF80LF80LF80LF9mLF9jLF9lLF9jLF9kLF9jLF9jLF9jLF9lLF9jLF9lLF9jLF80LF80LF80LF80LF9kLF9jLF9jLF9jLF9kLF9jLF9jLF9jLF9jLF9jLF9jLF9jLF80LF80LF80LF80LF9lLF9kLF9mLF9jLF85LF85LF85LF84LF9mLF9jLF9lLF9jLF8xLF8wLF8wLF8wLF9jLF9kLF9kLF9jLF85LF85LF85LF84LF9kLF9jLF9jLF9jLF8xLF8wLF8wLF8wLF9kLF9jLF9jLF9jLF85LF84LF84LF84LF9jLF9jLF9jLF9jLF8wLF8wLF8wLF8wLF9kLF9jLF9jLF9jLF85LF84LF84LF84LF9jLF9jLF9jLF9jLF8wLF8wLF8wLF8wLAorICAgICAgX2YsX2UsX2UsX2UsXzMsXzAsXzIsXzAsXzYsXzYsXzYsXzYsXzIsXzAsXzIsXzAsX2YsX2MsX2UsX2MsXzEsXzAsXzAsXzAsXzYsXzQsXzYsXzQsXzAsXzAsXzAsXzAsX2UsX2MsX2UsX2MsXzAsXzAsXzAsXzAsXzYsXzQsXzYsXzQsXzAsXzAsXzAsXzAsX2MsX2MsX2MsX2MsXzAsXzAsXzAsXzAsXzQsXzQsXzQsXzQsXzAsXzAsXzAsXzAsX2IsXzgsX2EsXzgsXzEsXzAsXzAsXzAsXzIsXzAsXzIsXzAsXzAsXzAsXzAsXzAsXzksXzgsXzgsXzgsXzEsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzgsXzgsXzgsXzgsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzgsXzgsXzgsXzgsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsCisgICAgICBfZSxfZCxfZixfYyxfOSxfOSxfOSxfOCxfZixfYyxfZSxfYyxfMSxfMCxfMCxfMCxfYyxfZCxfZCxfYyxfOSxfOSxfOSxfOCxfZCxfYyxfYyxfYyxfMSxfMCxfMCxfMCxfZCxfYyxfYyxfYyxfOSxfOCxfOCxfOCxfYyxfYyxfYyxfYyxfMCxfMCxfMCxfMCxfZCxfYyxfYyxfYyxfOSxfOCxfOCxfOCxfYyxfYyxfYyxfYyxfMCxfMCxfMCxfMCxfOCxfOSxfOSxfOCxfOSxfOSxfOSxfOCxfOSxfOCxfOCxfOCxfMSxfMCxfMCxfMCxfOCxfOSxfOSxfOCxfOSxfOSxfOSxfOCxfOSxfOCxfOCxfOCxfMSxfMCxfMCxfMCxfOSxfOCxfOCxfOCxfOSxfOCxfOCxfOCxfOCxfOCxfOCxfOCxfMCxfMCxfMCxfMCxfOSxfOCxfOCxfOCxfOSxfOCxfOCxfOCxfOCxfOCxfOCxfOCxfMCxfMCxfMCxfMCwKKyAgICAgIF9iLF84LF9hLF84LF8xLF8wLF8wLF8wLF8yLF8wLF8yLF8wLF8wLF8wLF8wLF8wLF85LF84LF84LF84LF8xLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF84LF84LF84LF84LF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF84LF84LF84LF84LF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF85LF84LF84LF84LF8xLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF85LF84LF84LF84LF8xLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF84LF84LF84LF84LF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF84LF84LF84LF84LF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLAorICAgICAgXzQsXzQsXzQsXzUsXzgsX2IsXzksX2IsX2MsX2QsX2QsX2MsXzksX2IsXzksX2EsXzQsXzYsXzQsXzcsX2EsXzksX2IsXzksX2MsX2YsX2QsX2UsX2IsXzksX2IsXzgsXzQsXzcsXzUsXzYsX2IsXzksX2IsXzgsX2QsX2UsX2MsX2UsX2IsXzgsX2EsXzgsXzYsXzUsXzcsXzQsXzksXzksXzksXzgsX2YsX2MsX2UsX2MsXzksXzgsXzgsXzgsXzAsXzIsXzAsXzMsX2EsXzksX2IsXzksXzgsX2IsXzksX2EsX2IsXzksX2IsXzgsXzIsXzAsXzIsXzEsXzgsXzksXzksXzksX2EsXzksX2IsXzgsXzksXzksXzksXzgsXzIsXzEsXzMsXzAsXzksXzksXzksXzgsX2IsXzgsX2EsXzgsXzksXzgsXzgsXzgsXzAsXzEsXzEsXzAsXzksXzksXzksXzgsXzksXzgsXzgsXzgsXzksXzgsXzgsXzgsCisgICAgICBfOCxfYixfOSxfYSxfYixfYixfYixfYSxfOSxfYSxfOCxfYSxfMyxfMixfMixfMixfYSxfYixfYixfYSxfYixfOSxfYixfOCxfYixfYSxfYSxfYSxfMyxfMCxfMixfMCxfYixfYSxfYSxfYSxfYixfOCxfYSxfOCxfYSxfYSxfYSxfYSxfMixfMCxfMixfMCxfYixfOCxfYSxfOCxfOSxfOCxfOCxfOCxfYSxfOCxfYSxfOCxfMCxfMCxfMCxfMCxfYSxfYixfYixfYSxfYixfOSxfYixfOCxfYixfYSxfYSxfYSxfMyxfMCxfMixfMCxfYSxfOSxfYixfOCxfOSxfOSxfOSxfOCxfYixfOCxfYSxfOCxfMSxfMCxfMCxfMCxfYixfOCxfYSxfOCxfOSxfOCxfOCxfOCxfYSxfOCxfYSxfOCxfMCxfMCxfMCxfMCxfOSxfOCxfOCxfOCxfOSxfOCxfOCxfOCxfOCxfOCxfOCxfOCxfMCxfMCxfMCxfMCwKKyAgICAgIF8wLF8yLF8wLF8zLF9hLF85LF9iLF85LF84LF9iLF85LF9hLF9iLF85LF9iLF84LF8yLF8wLF8yLF8xLF84LF85LF85LF85LF9hLF85LF9iLF84LF85LF85LF85LF84LF8yLF8xLF8zLF8wLF85LF85LF85LF84LF9iLF84LF9hLF84LF85LF84LF84LF84LF8wLF8xLF8xLF8wLF85LF85LF85LF84LF85LF84LF84LF84LF85LF84LF84LF84LF8yLF8wLF8yLF8xLF84LF85LF85LF85LF9hLF85LF9iLF84LF85LF85LF85LF84LF8wLF8wLF8wLF8xLF84LF85LF85LF85LF84LF85LF85LF84LF85LF85LF85LF84LF8wLF8xLF8xLF8wLF85LF85LF85LF84LF85LF84LF84LF84LF85LF84LF84LF84LF8wLF8xLF8xLF8wLF85LF85LF85LF84LF85LF84LF84LF84LF85LF84LF84LF84LAorICAgICAgX2EsX2IsX2IsX2EsX2IsXzksX2IsXzgsX2IsX2EsX2EsX2EsXzMsXzAsXzIsXzAsX2EsXzksX2IsXzgsXzksXzksXzksXzgsX2IsXzgsX2EsXzgsXzEsXzAsXzAsXzAsX2IsXzgsX2EsXzgsXzksXzgsXzgsXzgsX2EsXzgsX2EsXzgsXzAsXzAsXzAsXzAsXzksXzgsXzgsXzgsXzksXzgsXzgsXzgsXzgsXzgsXzgsXzgsXzAsXzAsXzAsXzAsX2EsXzksX2IsXzgsXzksXzksXzksXzgsX2IsXzgsX2EsXzgsXzEsXzAsXzAsXzAsXzgsXzksXzksXzgsXzksXzksXzksXzgsXzksXzgsXzgsXzgsXzEsXzAsXzAsXzAsXzksXzgsXzgsXzgsXzksXzgsXzgsXzgsXzgsXzgsXzgsXzgsXzAsXzAsXzAsXzAsXzksXzgsXzgsXzgsXzksXzgsXzgsXzgsXzgsXzgsXzgsXzgsXzAsXzAsXzAsXzAsCisgICAgICBfYyxfZixfZCxfZSxfYixfOSxfYixfOCxfZCxfZSxfYyxfZSxfMyxfMCxfMixfMCxfZSxfZCxfZixfYyxfOSxfOSxfOSxfOCxfZixfYyxfZSxfYyxfMSxfMCxfMCxfMCxfZixfYyxfZSxfYyxfOSxfOCxfOCxfOCxfZSxfYyxfZSxfYyxfMCxfMCxfMCxfMCxfZCxfYyxfYyxfYyxfOSxfOCxfOCxfOCxfYyxfYyxfYyxfYyxfMCxfMCxfMCxfMCxfYSxfOSxfYixfOCxfOSxfOSxfOSxfOCxfYixfOCxfYSxfOCxfMSxfMCxfMCxfMCxfOCxfOSxfOSxfOCxfOSxfOSxfOSxfOCxfOSxfOCxfOCxfOCxfMSxfMCxfMCxfMCxfOSxfOCxfOCxfOCxfOSxfOCxfOCxfOCxfOCxfOCxfOCxfOCxfMCxfMCxfMCxfMCxfOSxfOCxfOCxfOCxfOSxfOCxfOCxfOCxfOCxfOCxfOCxfOCxfMCxfMCxfMCxfMCwKKyAgICAgIF9iLF9hLF9hLF9hLF8zLF8wLF8yLF8wLF8yLF8yLF8yLF8yLF8yLF8wLF8yLF8wLF9iLF84LF9hLF84LF8xLF8wLF8wLF8wLF8yLF8wLF8yLF8wLF8wLF8wLF8wLF8wLF9hLF84LF9hLF84LF8wLF8wLF8wLF8wLF8yLF8wLF8yLF8wLF8wLF8wLF8wLF8wLF84LF84LF84LF84LF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF9iLF84LF9hLF84LF8xLF8wLF8wLF8wLF8yLF8wLF8yLF8wLF8wLF8wLF8wLF8wLF85LF84LF84LF84LF8xLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF84LF84LF84LF84LF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF84LF84LF84LF84LF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLAorICAgICAgX2EsXzksX2IsXzgsXzksXzksXzksXzgsX2IsXzgsX2EsXzgsXzEsXzAsXzAsXzAsXzgsXzksXzksXzgsXzksXzksXzksXzgsXzksXzgsXzgsXzgsXzEsXzAsXzAsXzAsXzksXzgsXzgsXzgsXzksXzgsXzgsXzgsXzgsXzgsXzgsXzgsXzAsXzAsXzAsXzAsXzksXzgsXzgsXzgsXzksXzgsXzgsXzgsXzgsXzgsXzgsXzgsXzAsXzAsXzAsXzAsXzgsXzksXzksXzgsXzksXzksXzksXzgsXzksXzgsXzgsXzgsXzEsXzAsXzAsXzAsXzgsXzksXzksXzgsXzksXzksXzksXzgsXzksXzgsXzgsXzgsXzEsXzAsXzAsXzAsXzksXzgsXzgsXzgsXzksXzgsXzgsXzgsXzgsXzgsXzgsXzgsXzAsXzAsXzAsXzAsXzksXzgsXzgsXzgsXzksXzgsXzgsXzgsXzgsXzgsXzgsXzgsXzAsXzAsXzAsXzAsCisgICAgICBfYixfOCxfYSxfOCxfMSxfMCxfMCxfMCxfMixfMCxfMixfMCxfMCxfMCxfMCxfMCxfOSxfOCxfOCxfOCxfMSxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfOCxfOCxfOCxfOCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfOCxfOCxfOCxfOCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfOSxfOCxfOCxfOCxfMSxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfOSxfOCxfOCxfOCxfMSxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfOCxfOCxfOCxfOCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfOCxfOCxfOCxfOCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCwKKyAgICAgIF8wLF8wLF8wLF8xLF8wLF8xLF8xLF8xLF8wLF8xLF8xLF8wLF85LF85LF85LF84LF8wLF8wLF8wLF8xLF8wLF8zLF8xLF8zLF8wLF8xLF8xLF8wLF85LF9iLF85LF9hLF8wLF8xLF8xLF8wLF8xLF8zLF8xLF8yLF8xLF8wLF8wLF8wLF85LF9hLF84LF9hLF8wLF8zLF8xLF8yLF8zLF8xLF8zLF8wLF8xLF8yLF8wLF8yLF9iLF84LF9hLF84LF8wLF8wLF8wLF8xLF8wLF8zLF8xLF8zLF8wLF8xLF8xLF8wLF85LF9iLF85LF9hLF8wLF8yLF8wLF8zLF8yLF8xLF8zLF8xLF8wLF8zLF8xLF8yLF9iLF85LF9iLF84LF8wLF8zLF8xLF8yLF8zLF8xLF8zLF8wLF8xLF8yLF8wLF8yLF9iLF84LF9hLF84LF8yLF8xLF8zLF8wLF8xLF8xLF8xLF8wLF8zLF8wLF8yLF8wLF85LF84LF84LF84LAorICAgICAgXzAsXzEsXzEsXzAsXzksX2IsXzksX2EsXzksXzgsXzgsXzgsXzEsXzIsXzAsXzIsXzAsXzMsXzEsXzIsX2IsX2IsX2IsX2EsXzksX2EsXzgsX2EsXzMsXzIsXzIsXzIsXzEsXzIsXzAsXzIsX2IsX2EsX2EsX2EsXzgsX2EsXzgsX2EsXzIsXzIsXzIsXzIsXzMsXzIsXzIsXzIsX2IsXzgsX2EsXzgsX2EsX2EsX2EsX2EsXzIsXzAsXzIsXzAsXzAsXzMsXzEsXzIsX2YsX2YsX2YsX2UsXzksX2EsXzgsX2EsXzcsXzYsXzYsXzYsXzIsXzMsXzMsXzIsX2YsX2QsX2YsX2MsX2IsX2EsX2EsX2EsXzcsXzQsXzYsXzQsXzMsXzIsXzIsXzIsX2YsX2MsX2UsX2MsX2EsX2EsX2EsX2EsXzYsXzQsXzYsXzQsXzMsXzAsXzIsXzAsX2QsX2MsX2MsX2MsX2EsXzgsX2EsXzgsXzQsXzQsXzQsXzQsCisgICAgICBfMCxfMCxfMCxfMSxfMCxfMyxfMSxfMyxfMCxfMSxfMSxfMCxfOSxfYixfOSxfYSxfMCxfMixfMCxfMyxfMixfMSxfMyxfMSxfMCxfMyxfMSxfMixfYixfOSxfYixfOCxfMCxfMyxfMSxfMixfMyxfMSxfMyxfMCxfMSxfMixfMCxfMixfYixfOCxfYSxfOCxfMixfMSxfMyxfMCxfMSxfMSxfMSxfMCxfMyxfMCxfMixfMCxfOSxfOCxfOCxfOCxfMCxfMixfMCxfMyxfNixfNSxfNyxfNSxfMCxfMyxfMSxfMixfZixfZCxfZixfYyxfMixfMCxfMixfMSxfNCxfNSxfNSxfNSxfMixfMSxfMyxfMCxfZCxfZCxfZCxfYyxfMixfMSxfMyxfMCxfNSxfNSxfNSxfNCxfMyxfMCxfMixfMCxfZCxfYyxfYyxfYyxfMCxfMSxfMSxfMCxfNSxfNSxfNSxfNCxfMSxfMCxfMCxfMCxfZCxfYyxfYyxfYywKKyAgICAgIF8wLF8zLF8xLF8yLF9mLF9mLF9mLF9lLF85LF9hLF84LF9hLF83LF82LF82LF82LF8yLF8zLF8zLF8yLF9mLF9kLF9mLF9jLF9iLF9hLF9hLF9hLF83LF80LF82LF80LF8zLF8yLF8yLF8yLF9mLF9jLF9lLF9jLF9hLF9hLF9hLF9hLF82LF80LF82LF80LF8zLF8wLF8yLF8wLF9kLF9jLF9jLF9jLF9hLF84LF9hLF84LF80LF80LF80LF80LF82LF83LF83LF82LF9iLF85LF9iLF84LF9mLF9lLF9lLF9lLF8zLF8wLF8yLF8wLF82LF81LF83LF80LF85LF85LF85LF84LF9mLF9jLF9lLF9jLF8xLF8wLF8wLF8wLF83LF80LF82LF80LF85LF84LF84LF84LF9lLF9jLF9lLF9jLF8wLF8wLF8wLF8wLF81LF80LF80LF80LF85LF84LF84LF84LF9jLF9jLF9jLF9jLF8wLF8wLF8wLF8wLAorICAgICAgXzAsXzEsXzEsXzAsXzksX2IsXzksX2EsXzksXzgsXzgsXzgsXzEsXzIsXzAsXzIsXzAsXzMsXzEsXzIsX2IsXzksX2IsXzgsXzksX2EsXzgsX2EsXzMsXzAsXzIsXzAsXzEsXzIsXzAsXzIsX2IsXzgsX2EsXzgsXzgsX2EsXzgsX2EsXzIsXzAsXzIsXzAsXzMsXzAsXzIsXzAsXzksXzgsXzgsXzgsX2EsXzgsX2EsXzgsXzAsXzAsXzAsXzAsXzAsXzMsXzEsXzIsX2YsX2QsX2YsX2MsXzksX2EsXzgsX2EsXzcsXzQsXzYsXzQsXzIsXzEsXzMsXzAsX2QsX2QsX2QsX2MsX2IsXzgsX2EsXzgsXzUsXzQsXzQsXzQsXzMsXzAsXzIsXzAsX2QsX2MsX2MsX2MsX2EsXzgsX2EsXzgsXzQsXzQsXzQsXzQsXzEsXzAsXzAsXzAsX2QsX2MsX2MsX2MsXzgsXzgsXzgsXzgsXzQsXzQsXzQsXzQsCisgICAgICBfOSxfYSxfOCxfYSxfNyxfNixfNixfNixfMCxfMixfMCxfMixfNixfNixfNixfNixfYixfYSxfYSxfYSxfNyxfNCxfNixfNCxfMixfMixfMixfMixfNixfNCxfNixfNCxfYSxfYSxfYSxfYSxfNixfNCxfNixfNCxfMixfMixfMixfMixfNixfNCxfNixfNCxfYSxfOCxfYSxfOCxfNCxfNCxfNCxfNCxfMixfMCxfMixfMCxfNCxfNCxfNCxfNCxfZixfZSxfZSxfZSxfNyxfNCxfNixfNCxfNixfNixfNixfNixfNixfNCxfNixfNCxfZixfYyxfZSxfYyxfNSxfNCxfNCxfNCxfNixfNCxfNixfNCxfNCxfNCxfNCxfNCxfZSxfYyxfZSxfYyxfNCxfNCxfNCxfNCxfNixfNCxfNixfNCxfNCxfNCxfNCxfNCxfYyxfYyxfYyxfYyxfNCxfNCxfNCxfNCxfNCxfNCxfNCxfNCxfNCxfNCxfNCxfNCwKKyAgICAgIF8wLF8zLF8xLF8yLF9mLF9kLF9mLF9jLF85LF9hLF84LF9hLF83LF80LF82LF80LF8yLF8xLF8zLF8wLF9kLF9kLF9kLF9jLF9iLF84LF9hLF84LF81LF80LF80LF80LF8zLF8wLF8yLF8wLF9kLF9jLF9jLF9jLF9hLF84LF9hLF84LF80LF80LF80LF80LF8xLF8wLF8wLF8wLF9kLF9jLF9jLF9jLF84LF84LF84LF84LF80LF80LF80LF80LF82LF81LF83LF80LF9kLF9kLF9kLF9jLF9mLF9jLF9lLF9jLF81LF80LF80LF80LF80LF81LF81LF80LF9kLF9kLF9kLF9jLF9kLF9jLF9jLF9jLF81LF80LF80LF80LF81LF80LF80LF80LF9kLF9jLF9jLF9jLF9jLF9jLF9jLF9jLF80LF80LF80LF80LF81LF80LF80LF80LF9kLF9jLF9jLF9jLF9jLF9jLF9jLF9jLF80LF80LF80LF80LAorICAgICAgX2YsX2UsX2UsX2UsXzcsXzQsXzYsXzQsXzYsXzYsXzYsXzYsXzYsXzQsXzYsXzQsX2YsX2MsX2UsX2MsXzUsXzQsXzQsXzQsXzYsXzQsXzYsXzQsXzQsXzQsXzQsXzQsX2UsX2MsX2UsX2MsXzQsXzQsXzQsXzQsXzYsXzQsXzYsXzQsXzQsXzQsXzQsXzQsX2MsX2MsX2MsX2MsXzQsXzQsXzQsXzQsXzQsXzQsXzQsXzQsXzQsXzQsXzQsXzQsX2YsX2MsX2UsX2MsXzEsXzAsXzAsXzAsXzYsXzQsXzYsXzQsXzAsXzAsXzAsXzAsX2QsX2MsX2MsX2MsXzEsXzAsXzAsXzAsXzQsXzQsXzQsXzQsXzAsXzAsXzAsXzAsX2MsX2MsX2MsX2MsXzAsXzAsXzAsXzAsXzQsXzQsXzQsXzQsXzAsXzAsXzAsXzAsX2MsX2MsX2MsX2MsXzAsXzAsXzAsXzAsXzQsXzQsXzQsXzQsXzAsXzAsXzAsXzAsCisgICAgICBfMCxfMCxfMCxfMSxfMCxfMSxfMSxfMSxfMCxfMSxfMSxfMCxfOSxfOSxfOSxfOCxfMCxfMCxfMCxfMSxfMCxfMyxfMSxfMyxfMCxfMSxfMSxfMCxfOSxfYixfOSxfYSxfMCxfMSxfMSxfMCxfMSxfMyxfMSxfMixfMSxfMCxfMCxfMCxfOSxfYSxfOCxfYSxfMCxfMyxfMSxfMixfMyxfMSxfMyxfMCxfMSxfMixfMCxfMixfYixfOCxfYSxfOCxfMCxfMCxfMCxfMSxfNCxfNyxfNSxfNyxfMCxfMSxfMSxfMCxfZCxfZixfZCxfZSxfMCxfMixfMCxfMyxfNixfNSxfNyxfNSxfMCxfMyxfMSxfMixfZixfZCxfZixfYyxfMCxfMyxfMSxfMixfNyxfNSxfNyxfNCxfMSxfMixfMCxfMixfZixfYyxfZSxfYyxfMixfMSxfMyxfMCxfNSxfNSxfNSxfNCxfMyxfMCxfMixfMCxfZCxfYyxfYyxfYywKKyAgICAgIF8wLF8xLF8xLF8wLF9kLF9mLF9kLF9lLF85LF84LF84LF84LF81LF82LF80LF82LF8wLF8zLF8xLF8yLF9mLF9mLF9mLF9lLF85LF9hLF84LF9hLF83LF82LF82LF82LF8xLF8yLF8wLF8yLF9mLF9lLF9lLF9lLF84LF9hLF84LF9hLF82LF82LF82LF82LF8zLF8yLF8yLF8yLF9mLF9jLF9lLF9jLF9hLF9hLF9hLF9hLF82LF80LF82LF80LF80LF83LF81LF82LF9iLF9iLF9iLF9hLF9kLF9lLF9jLF9lLF8zLF8yLF8yLF8yLF82LF83LF83LF82LF9iLF85LF9iLF84LF9mLF9lLF9lLF9lLF8zLF8wLF8yLF8wLF83LF82LF82LF82LF9iLF84LF9hLF84LF9lLF9lLF9lLF9lLF8yLF8wLF8yLF8wLF83LF80LF82LF80LF85LF84LF84LF84LF9lLF9jLF9lLF9jLF8wLF8wLF8wLF8wLAorICAgICAgXzAsXzAsXzAsXzEsXzQsXzcsXzUsXzcsXzAsXzEsXzEsXzAsX2QsX2YsX2QsX2UsXzAsXzIsXzAsXzMsXzYsXzUsXzcsXzUsXzAsXzMsXzEsXzIsX2YsX2QsX2YsX2MsXzAsXzMsXzEsXzIsXzcsXzUsXzcsXzQsXzEsXzIsXzAsXzIsX2YsX2MsX2UsX2MsXzIsXzEsXzMsXzAsXzUsXzUsXzUsXzQsXzMsXzAsXzIsXzAsX2QsX2MsX2MsX2MsXzQsXzYsXzQsXzcsXzIsXzEsXzMsXzEsXzQsXzcsXzUsXzYsX2IsXzksX2IsXzgsXzYsXzQsXzYsXzUsXzAsXzEsXzEsXzEsXzYsXzUsXzcsXzQsXzksXzksXzksXzgsXzYsXzUsXzcsXzQsXzEsXzEsXzEsXzAsXzcsXzQsXzYsXzQsXzksXzgsXzgsXzgsXzQsXzUsXzUsXzQsXzEsXzEsXzEsXzAsXzUsXzQsXzQsXzQsXzksXzgsXzgsXzgsCisgICAgICBfNCxfNyxfNSxfNixfYixfYixfYixfYSxfZCxfZSxfYyxfZSxfMyxfMixfMixfMixfNixfNyxfNyxfNixfYixfOSxfYixfOCxfZixfZSxfZSxfZSxfMyxfMCxfMixfMCxfNyxfNixfNixfNixfYixfOCxfYSxfOCxfZSxfZSxfZSxfZSxfMixfMCxfMixfMCxfNyxfNCxfNixfNCxfOSxfOCxfOCxfOCxfZSxfYyxfZSxfYyxfMCxfMCxfMCxfMCxfMixfMyxfMyxfMixfYixfOSxfYixfOCxfYixfYSxfYSxfYSxfMyxfMCxfMixfMCxfMixfMSxfMyxfMCxfOSxfOSxfOSxfOCxfYixfOCxfYSxfOCxfMSxfMCxfMCxfMCxfMyxfMCxfMixfMCxfOSxfOCxfOCxfOCxfYSxfOCxfYSxfOCxfMCxfMCxfMCxfMCxfMSxfMCxfMCxfMCxfOSxfOCxfOCxfOCxfOCxfOCxfOCxfOCxfMCxfMCxfMCxfMCwKKyAgICAgIF8wLF8xLF8xLF8wLF9kLF9mLF9kLF9lLF85LF84LF84LF84LF81LF82LF80LF82LF8wLF8zLF8xLF8yLF9mLF9kLF9mLF9jLF85LF9hLF84LF9hLF83LF80LF82LF80LF8xLF8yLF8wLF8yLF9mLF9jLF9lLF9jLF84LF9hLF84LF9hLF82LF80LF82LF80LF8zLF8wLF8yLF8wLF9kLF9jLF9jLF9jLF9hLF84LF9hLF84LF80LF80LF80LF80LF80LF83LF81LF82LF9mLF9kLF9mLF9jLF9kLF9lLF9jLF9lLF83LF80LF82LF80LF82LF81LF83LF80LF9kLF9kLF9kLF9jLF9mLF9jLF9lLF9jLF81LF80LF80LF80LF83LF80LF82LF80LF9kLF9jLF9jLF9jLF9lLF9jLF9lLF9jLF80LF80LF80LF80LF81LF80LF80LF80LF9kLF9jLF9jLF9jLF9jLF9jLF9jLF9jLF80LF80LF80LF80LAorICAgICAgX2QsX2UsX2MsX2UsXzcsXzYsXzYsXzYsXzQsXzYsXzQsXzYsXzYsXzYsXzYsXzYsX2YsX2UsX2UsX2UsXzcsXzQsXzYsXzQsXzYsXzYsXzYsXzYsXzYsXzQsXzYsXzQsX2UsX2UsX2UsX2UsXzYsXzQsXzYsXzQsXzYsXzYsXzYsXzYsXzYsXzQsXzYsXzQsX2UsX2MsX2UsX2MsXzQsXzQsXzQsXzQsXzYsXzQsXzYsXzQsXzQsXzQsXzQsXzQsX2YsX2UsX2UsX2UsXzMsXzAsXzIsXzAsXzYsXzYsXzYsXzYsXzIsXzAsXzIsXzAsX2YsX2MsX2UsX2MsXzEsXzAsXzAsXzAsXzYsXzQsXzYsXzQsXzAsXzAsXzAsXzAsX2UsX2MsX2UsX2MsXzAsXzAsXzAsXzAsXzYsXzQsXzYsXzQsXzAsXzAsXzAsXzAsX2MsX2MsX2MsX2MsXzAsXzAsXzAsXzAsXzQsXzQsXzQsXzQsXzAsXzAsXzAsXzAsCisgICAgICBfNCxfNyxfNSxfNixfZixfZCxfZixfYyxfZCxfZSxfYyxfZSxfNyxfNCxfNixfNCxfNixfNSxfNyxfNCxfZCxfZCxfZCxfYyxfZixfYyxfZSxfYyxfNSxfNCxfNCxfNCxfNyxfNCxfNixfNCxfZCxfYyxfYyxfYyxfZSxfYyxfZSxfYyxfNCxfNCxfNCxfNCxfNSxfNCxfNCxfNCxfZCxfYyxfYyxfYyxfYyxfYyxfYyxfYyxfNCxfNCxfNCxfNCxfNixfNSxfNyxfNCxfOSxfOSxfOSxfOCxfZixfYyxfZSxfYyxfMSxfMCxfMCxfMCxfNCxfNSxfNSxfNCxfOSxfOSxfOSxfOCxfZCxfYyxfYyxfYyxfMSxfMCxfMCxfMCxfNSxfNCxfNCxfNCxfOSxfOCxfOCxfOCxfYyxfYyxfYyxfYyxfMCxfMCxfMCxfMCxfNSxfNCxfNCxfNCxfOSxfOCxfOCxfOCxfYyxfYyxfYyxfYyxfMCxfMCxfMCxfMCwKKyAgICAgIF9mLF9lLF9lLF9lLF8zLF8wLF8yLF8wLF82LF82LF82LF82LF8yLF8wLF8yLF8wLF9mLF9jLF9lLF9jLF8xLF8wLF8wLF8wLF82LF80LF82LF80LF8wLF8wLF8wLF8wLF9lLF9jLF9lLF9jLF8wLF8wLF8wLF8wLF82LF80LF82LF80LF8wLF8wLF8wLF8wLF9jLF9jLF9jLF9jLF8wLF8wLF8wLF8wLF80LF80LF80LF80LF8wLF8wLF8wLF8wLF9iLF84LF9hLF84LF8xLF8wLF8wLF8wLF8yLF8wLF8yLF8wLF8wLF8wLF8wLF8wLF85LF84LF84LF84LF8xLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF84LF84LF84LF84LF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF84LF84LF84LF84LF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLAorICAgICAgXzAsXzAsXzAsXzEsXzgsXzksXzksXzksXzgsXzksXzksXzgsXzEsXzEsXzEsXzAsXzAsXzAsXzAsXzEsXzgsX2IsXzksX2IsXzgsXzksXzksXzgsXzEsXzMsXzEsXzIsXzAsXzEsXzEsXzAsXzksX2IsXzksX2EsXzksXzgsXzgsXzgsXzEsXzIsXzAsXzIsXzAsXzMsXzEsXzIsX2IsXzksX2IsXzgsXzksX2EsXzgsX2EsXzMsXzAsXzIsXzAsXzAsXzAsXzAsXzEsX2MsX2YsX2QsX2YsXzgsXzksXzksXzgsXzUsXzcsXzUsXzYsXzAsXzIsXzAsXzMsX2UsX2QsX2YsX2QsXzgsX2IsXzksX2EsXzcsXzUsXzcsXzQsXzAsXzMsXzEsXzIsX2YsX2QsX2YsX2MsXzksX2EsXzgsX2EsXzcsXzQsXzYsXzQsXzIsXzEsXzMsXzAsX2QsX2QsX2QsX2MsX2IsXzgsX2EsXzgsXzUsXzQsXzQsXzQsCisgICAgICBfOCxfOSxfOSxfOCxfNSxfNyxfNSxfNixfMSxfMCxfMCxfMCxfNSxfNixfNCxfNixfOCxfYixfOSxfYSxfNyxfNyxfNyxfNixfMSxfMixfMCxfMixfNyxfNixfNixfNixfOSxfYSxfOCxfYSxfNyxfNixfNixfNixfMCxfMixfMCxfMixfNixfNixfNixfNixfYixfYSxfYSxfYSxfNyxfNCxfNixfNCxfMixfMixfMixfMixfNixfNCxfNixfNCxfYyxfZixfZCxfZSxfMyxfMyxfMyxfMixfNSxfNixfNCxfNixfMyxfMixfMixfMixfZSxfZixfZixfZSxfMyxfMSxfMyxfMCxfNyxfNixfNixfNixfMyxfMCxfMixfMCxfZixfZSxfZSxfZSxfMyxfMCxfMixfMCxfNixfNixfNixfNixfMixfMCxfMixfMCxfZixfYyxfZSxfYyxfMSxfMCxfMCxfMCxfNixfNCxfNixfNCxfMCxfMCxfMCxfMCwKKyAgICAgIF8wLF8wLF8wLF8xLF9jLF9mLF9kLF9mLF84LF85LF85LF84LF81LF83LF81LF82LF8wLF8yLF8wLF8zLF9lLF9kLF9mLF9kLF84LF9iLF85LF9hLF83LF81LF83LF80LF8wLF8zLF8xLF8yLF9mLF9kLF9mLF9jLF85LF9hLF84LF9hLF83LF80LF82LF80LF8yLF8xLF8zLF8wLF9kLF9kLF9kLF9jLF9iLF84LF9hLF84LF81LF80LF80LF80LF80LF82LF80LF83LF9hLF85LF9iLF85LF9jLF9mLF9kLF9lLF8zLF8xLF8zLF8wLF82LF80LF82LF81LF84LF85LF85LF85LF9lLF9kLF9mLF9jLF8xLF8xLF8xLF8wLF82LF81LF83LF80LF85LF85LF85LF84LF9mLF9jLF9lLF9jLF8xLF8wLF8wLF8wLF80LF81LF81LF80LF85LF85LF85LF84LF9kLF9jLF9jLF9jLF8xLF8wLF8wLF8wLAorICAgICAgX2MsX2YsX2QsX2UsXzMsXzMsXzMsXzIsXzUsXzYsXzQsXzYsXzMsXzIsXzIsXzIsX2UsX2YsX2YsX2UsXzMsXzEsXzMsXzAsXzcsXzYsXzYsXzYsXzMsXzAsXzIsXzAsX2YsX2UsX2UsX2UsXzMsXzAsXzIsXzAsXzYsXzYsXzYsXzYsXzIsXzAsXzIsXzAsX2YsX2MsX2UsX2MsXzEsXzAsXzAsXzAsXzYsXzQsXzYsXzQsXzAsXzAsXzAsXzAsX2EsX2IsX2IsX2EsXzMsXzEsXzMsXzAsXzMsXzIsXzIsXzIsXzMsXzAsXzIsXzAsX2EsXzksX2IsXzgsXzEsXzEsXzEsXzAsXzMsXzAsXzIsXzAsXzEsXzAsXzAsXzAsX2IsXzgsX2EsXzgsXzEsXzAsXzAsXzAsXzIsXzAsXzIsXzAsXzAsXzAsXzAsXzAsXzksXzgsXzgsXzgsXzEsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsCisgICAgICBfOCxfOSxfOSxfOCxfNSxfNyxfNSxfNixfMSxfMCxfMCxfMCxfNSxfNixfNCxfNixfOCxfYixfOSxfYSxfNyxfNSxfNyxfNCxfMSxfMixfMCxfMixfNyxfNCxfNixfNCxfOSxfYSxfOCxfYSxfNyxfNCxfNixfNCxfMCxfMixfMCxfMixfNixfNCxfNixfNCxfYixfOCxfYSxfOCxfNSxfNCxfNCxfNCxfMixfMCxfMixfMCxfNCxfNCxfNCxfNCxfYyxfZixfZCxfZSxfNyxfNSxfNyxfNCxfNSxfNixfNCxfNixfNyxfNCxfNixfNCxfZSxfZCxfZixfYyxfNSxfNSxfNSxfNCxfNyxfNCxfNixfNCxfNSxfNCxfNCxfNCxfZixfYyxfZSxfYyxfNSxfNCxfNCxfNCxfNixfNCxfNixfNCxfNCxfNCxfNCxfNCxfZCxfYyxfYyxfYyxfNSxfNCxfNCxfNCxfNCxfNCxfNCxfNCxfNCxfNCxfNCxfNCwKKyAgICAgIF81LF82LF80LF82LF83LF82LF82LF82LF80LF82LF80LF82LF82LF82LF82LF82LF83LF82LF82LF82LF83LF80LF82LF80LF82LF82LF82LF82LF82LF80LF82LF80LF82LF82LF82LF82LF82LF80LF82LF80LF82LF82LF82LF82LF82LF80LF82LF80LF82LF80LF82LF80LF80LF80LF80LF80LF82LF80LF82LF80LF80LF80LF80LF80LF83LF82LF82LF82LF8zLF8wLF8yLF8wLF82LF82LF82LF82LF8yLF8wLF8yLF8wLF83LF80LF82LF80LF8xLF8wLF8wLF8wLF82LF80LF82LF80LF8wLF8wLF8wLF8wLF82LF80LF82LF80LF8wLF8wLF8wLF8wLF82LF80LF82LF80LF8wLF8wLF8wLF8wLF80LF80LF80LF80LF8wLF8wLF8wLF8wLF80LF80LF80LF80LF8wLF8wLF8wLF8wLAorICAgICAgX2MsX2YsX2QsX2UsXzcsXzUsXzcsXzQsXzUsXzYsXzQsXzYsXzcsXzQsXzYsXzQsX2UsX2QsX2YsX2MsXzUsXzUsXzUsXzQsXzcsXzQsXzYsXzQsXzUsXzQsXzQsXzQsX2YsX2MsX2UsX2MsXzUsXzQsXzQsXzQsXzYsXzQsXzYsXzQsXzQsXzQsXzQsXzQsX2QsX2MsX2MsX2MsXzUsXzQsXzQsXzQsXzQsXzQsXzQsXzQsXzQsXzQsXzQsXzQsX2UsX2QsX2YsX2MsXzEsXzEsXzEsXzAsXzcsXzQsXzYsXzQsXzEsXzAsXzAsXzAsX2MsX2QsX2QsX2MsXzEsXzEsXzEsXzAsXzUsXzQsXzQsXzQsXzEsXzAsXzAsXzAsX2QsX2MsX2MsX2MsXzEsXzAsXzAsXzAsXzQsXzQsXzQsXzQsXzAsXzAsXzAsXzAsX2QsX2MsX2MsX2MsXzEsXzAsXzAsXzAsXzQsXzQsXzQsXzQsXzAsXzAsXzAsXzAsCisgICAgICBfNyxfNixfNixfNixfMyxfMCxfMixfMCxfNixfNixfNixfNixfMixfMCxfMixfMCxfNyxfNCxfNixfNCxfMSxfMCxfMCxfMCxfNixfNCxfNixfNCxfMCxfMCxfMCxfMCxfNixfNCxfNixfNCxfMCxfMCxfMCxfMCxfNixfNCxfNixfNCxfMCxfMCxfMCxfMCxfNCxfNCxfNCxfNCxfMCxfMCxfMCxfMCxfNCxfNCxfNCxfNCxfMCxfMCxfMCxfMCxfMyxfMCxfMixfMCxfMSxfMCxfMCxfMCxfMixfMCxfMixfMCxfMCxfMCxfMCxfMCxfMSxfMCxfMCxfMCxfMSxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCwKKyAgICAgIF8wLF8wLF8wLF8xLF9jLF9kLF9kLF9kLF84LF85LF85LF84LF81LF81LF81LF80LF8wLF8wLF8wLF8xLF9jLF9mLF9kLF9mLF84LF85LF85LF84LF81LF83LF81LF82LF8wLF8xLF8xLF8wLF9kLF9mLF9kLF9lLF85LF84LF84LF84LF81LF82LF80LF82LF8wLF8zLF8xLF8yLF9mLF9kLF9mLF9jLF85LF9hLF84LF9hLF83LF80LF82LF80LF80LF80LF80LF81LF84LF9iLF85LF9iLF9jLF9kLF9kLF9jLF8xLF8zLF8xLF8yLF80LF82LF80LF83LF9hLF85LF9iLF85LF9jLF9mLF9kLF9lLF8zLF8xLF8zLF8wLF80LF83LF81LF82LF9iLF85LF9iLF84LF9kLF9lLF9jLF9lLF8zLF8wLF8yLF8wLF82LF81LF83LF80LF85LF85LF85LF84LF9mLF9jLF9lLF9jLF8xLF8wLF8wLF8wLAorICAgICAgX2MsX2QsX2QsX2MsXzEsXzMsXzEsXzIsXzUsXzQsXzQsXzQsXzEsXzIsXzAsXzIsX2MsX2YsX2QsX2UsXzMsXzMsXzMsXzIsXzUsXzYsXzQsXzYsXzMsXzIsXzIsXzIsX2QsX2UsX2MsX2UsXzMsXzIsXzIsXzIsXzQsXzYsXzQsXzYsXzIsXzIsXzIsXzIsX2YsX2UsX2UsX2UsXzMsXzAsXzIsXzAsXzYsXzYsXzYsXzYsXzIsXzAsXzIsXzAsXzgsX2IsXzksX2EsXzMsXzMsXzMsXzIsXzEsXzIsXzAsXzIsXzMsXzIsXzIsXzIsX2EsX2IsX2IsX2EsXzMsXzEsXzMsXzAsXzMsXzIsXzIsXzIsXzMsXzAsXzIsXzAsX2IsX2EsX2EsX2EsXzMsXzAsXzIsXzAsXzIsXzIsXzIsXzIsXzIsXzAsXzIsXzAsX2IsXzgsX2EsXzgsXzEsXzAsXzAsXzAsXzIsXzAsXzIsXzAsXzAsXzAsXzAsXzAsCisgICAgICBfNCxfNCxfNCxfNSxfOCxfYixfOSxfYixfYyxfZCxfZCxfYyxfMSxfMyxfMSxfMixfNCxfNixfNCxfNyxfYSxfOSxfYixfOSxfYyxfZixfZCxfZSxfMyxfMSxfMyxfMCxfNCxfNyxfNSxfNixfYixfOSxfYixfOCxfZCxfZSxfYyxfZSxfMyxfMCxfMixfMCxfNixfNSxfNyxfNCxfOSxfOSxfOSxfOCxfZixfYyxfZSxfYyxfMSxfMCxfMCxfMCxfMCxfMixfMCxfMyxfYSxfOSxfYixfOSxfOCxfYixfOSxfYSxfMyxfMSxfMyxfMCxfMixfMCxfMixfMSxfOCxfOSxfOSxfOSxfYSxfOSxfYixfOCxfMSxfMSxfMSxfMCxfMixfMSxfMyxfMCxfOSxfOSxfOSxfOCxfYixfOCxfYSxfOCxfMSxfMCxfMCxfMCxfMCxfMSxfMSxfMCxfOSxfOSxfOSxfOCxfOSxfOCxfOCxfOCxfMSxfMCxfMCxfMCwKKyAgICAgIF84LF9iLF85LF9hLF8zLF8zLF8zLF8yLF8xLF8yLF8wLF8yLF8zLF8yLF8yLF8yLF9hLF9iLF9iLF9hLF8zLF8xLF8zLF8wLF8zLF8yLF8yLF8yLF8zLF8wLF8yLF8wLF9iLF9hLF9hLF9hLF8zLF8wLF8yLF8wLF8yLF8yLF8yLF8yLF8yLF8wLF8yLF8wLF9iLF84LF9hLF84LF8xLF8wLF8wLF8wLF8yLF8wLF8yLF8wLF8wLF8wLF8wLF8wLF9hLF9iLF9iLF9hLF8zLF8xLF8zLF8wLF8zLF8yLF8yLF8yLF8zLF8wLF8yLF8wLF9hLF85LF9iLF84LF8xLF8xLF8xLF8wLF8zLF8wLF8yLF8wLF8xLF8wLF8wLF8wLF9iLF84LF9hLF84LF8xLF8wLF8wLF8wLF8yLF8wLF8yLF8wLF8wLF8wLF8wLF8wLF85LF84LF84LF84LF8xLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLAorICAgICAgX2MsX2QsX2QsX2MsXzUsXzcsXzUsXzYsXzUsXzQsXzQsXzQsXzUsXzYsXzQsXzYsX2MsX2YsX2QsX2UsXzcsXzUsXzcsXzQsXzUsXzYsXzQsXzYsXzcsXzQsXzYsXzQsX2QsX2UsX2MsX2UsXzcsXzQsXzYsXzQsXzQsXzYsXzQsXzYsXzYsXzQsXzYsXzQsX2YsX2MsX2UsX2MsXzUsXzQsXzQsXzQsXzYsXzQsXzYsXzQsXzQsXzQsXzQsXzQsX2MsX2YsX2QsX2UsXzMsXzEsXzMsXzAsXzUsXzYsXzQsXzYsXzMsXzAsXzIsXzAsX2UsX2QsX2YsX2MsXzEsXzEsXzEsXzAsXzcsXzQsXzYsXzQsXzEsXzAsXzAsXzAsX2YsX2MsX2UsX2MsXzEsXzAsXzAsXzAsXzYsXzQsXzYsXzQsXzAsXzAsXzAsXzAsX2QsX2MsX2MsX2MsXzEsXzAsXzAsXzAsXzQsXzQsXzQsXzQsXzAsXzAsXzAsXzAsCisgICAgICBfNSxfNixfNCxfNixfMyxfMixfMixfMixfNCxfNixfNCxfNixfMixfMixfMixfMixfNyxfNixfNixfNixfMyxfMCxfMixfMCxfNixfNixfNixfNixfMixfMCxfMixfMCxfNixfNixfNixfNixfMixfMCxfMixfMCxfNixfNixfNixfNixfMixfMCxfMixfMCxfNixfNCxfNixfNCxfMCxfMCxfMCxfMCxfNixfNCxfNixfNCxfMCxfMCxfMCxfMCxfMyxfMixfMixfMixfMyxfMCxfMixfMCxfMixfMixfMixfMixfMixfMCxfMixfMCxfMyxfMCxfMixfMCxfMSxfMCxfMCxfMCxfMixfMCxfMixfMCxfMCxfMCxfMCxfMCxfMixfMCxfMixfMCxfMCxfMCxfMCxfMCxfMixfMCxfMixfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCwKKyAgICAgIF9jLF9mLF9kLF9lLF8zLF8xLF8zLF8wLF81LF82LF80LF82LF8zLF8wLF8yLF8wLF9lLF9kLF9mLF9jLF8xLF8xLF8xLF8wLF83LF80LF82LF80LF8xLF8wLF8wLF8wLF9mLF9jLF9lLF9jLF8xLF8wLF8wLF8wLF82LF80LF82LF80LF8wLF8wLF8wLF8wLF9kLF9jLF9jLF9jLF8xLF8wLF8wLF8wLF80LF80LF80LF80LF8wLF8wLF8wLF8wLF9hLF85LF9iLF84LF8xLF8xLF8xLF8wLF8zLF8wLF8yLF8wLF8xLF8wLF8wLF8wLF84LF85LF85LF84LF8xLF8xLF8xLF8wLF8xLF8wLF8wLF8wLF8xLF8wLF8wLF8wLF85LF84LF84LF84LF8xLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF85LF84LF84LF84LF8xLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLAorICAgICAgXzMsXzIsXzIsXzIsXzMsXzAsXzIsXzAsXzIsXzIsXzIsXzIsXzIsXzAsXzIsXzAsXzMsXzAsXzIsXzAsXzEsXzAsXzAsXzAsXzIsXzAsXzIsXzAsXzAsXzAsXzAsXzAsXzIsXzAsXzIsXzAsXzAsXzAsXzAsXzAsXzIsXzAsXzIsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzMsXzAsXzIsXzAsXzEsXzAsXzAsXzAsXzIsXzAsXzIsXzAsXzAsXzAsXzAsXzAsXzEsXzAsXzAsXzAsXzEsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsCisgICAgICBfMCxfMSxfMSxfMCxfOSxfYixfOSxfYSxfOSxfOCxfOCxfOCxfOSxfYSxfOCxfYSxfMCxfMyxfMSxfMixfYixfOSxfYixfOCxfOSxfYSxfOCxfYSxfYixfOCxfYSxfOCxfMSxfMixfMCxfMixfYixfOCxfYSxfOCxfOCxfYSxfOCxfYSxfYSxfOCxfYSxfOCxfMyxfMCxfMixfMCxfOSxfOCxfOCxfOCxfYSxfOCxfYSxfOCxfOCxfOCxfOCxfOCxfMCxfMyxfMSxfMixfZixfZCxfZixfYyxfOSxfYSxfOCxfYSxfZixfYyxfZSxfYyxfMixfMSxfMyxfMCxfZCxfZCxfZCxfYyxfYixfOCxfYSxfOCxfZCxfYyxfYyxfYyxfMyxfMCxfMixfMCxfZCxfYyxfYyxfYyxfYSxfOCxfYSxfOCxfYyxfYyxfYyxfYyxfMSxfMCxfMCxfMCxfZCxfYyxfYyxfYyxfOCxfOCxfOCxfOCxfYyxfYyxfYyxfYywKKyAgICAgIF85LF9hLF84LF9hLF9mLF9lLF9lLF9lLF84LF9hLF84LF9hLF82LF82LF82LF82LF9iLF9hLF9hLF9hLF9mLF9jLF9lLF9jLF9hLF9hLF9hLF9hLF82LF80LF82LF80LF9hLF9hLF9hLF9hLF9lLF9jLF9lLF9jLF9hLF9hLF9hLF9hLF82LF80LF82LF80LF9hLF84LF9hLF84LF9jLF9jLF9jLF9jLF9hLF84LF9hLF84LF80LF80LF80LF80LF9mLF9lLF9lLF9lLF9iLF84LF9hLF84LF9lLF9lLF9lLF9lLF8yLF8wLF8yLF8wLF9mLF9jLF9lLF9jLF85LF84LF84LF84LF9lLF9jLF9lLF9jLF8wLF8wLF8wLF8wLF9lLF9jLF9lLF9jLF84LF84LF84LF84LF9lLF9jLF9lLF9jLF8wLF8wLF8wLF8wLF9jLF9jLF9jLF9jLF84LF84LF84LF84LF9jLF9jLF9jLF9jLF8wLF8wLF8wLF8wLAorICAgICAgXzAsXzMsXzEsXzIsX2YsX2QsX2YsX2MsXzksX2EsXzgsX2EsX2YsX2MsX2UsX2MsXzIsXzEsXzMsXzAsX2QsX2QsX2QsX2MsX2IsXzgsX2EsXzgsX2QsX2MsX2MsX2MsXzMsXzAsXzIsXzAsX2QsX2MsX2MsX2MsX2EsXzgsX2EsXzgsX2MsX2MsX2MsX2MsXzEsXzAsXzAsXzAsX2QsX2MsX2MsX2MsXzgsXzgsXzgsXzgsX2MsX2MsX2MsX2MsXzYsXzUsXzcsXzQsXzksXzksXzksXzgsX2YsX2MsX2UsX2MsXzksXzgsXzgsXzgsXzQsXzUsXzUsXzQsXzksXzksXzksXzgsX2QsX2MsX2MsX2MsXzksXzgsXzgsXzgsXzUsXzQsXzQsXzQsXzksXzgsXzgsXzgsX2MsX2MsX2MsX2MsXzgsXzgsXzgsXzgsXzUsXzQsXzQsXzQsXzksXzgsXzgsXzgsX2MsX2MsX2MsX2MsXzgsXzgsXzgsXzgsCisgICAgICBfZixfZSxfZSxfZSxfYixfOCxfYSxfOCxfZSxfZSxfZSxfZSxfMixfMCxfMixfMCxfZixfYyxfZSxfYyxfOSxfOCxfOCxfOCxfZSxfYyxfZSxfYyxfMCxfMCxfMCxfMCxfZSxfYyxfZSxfYyxfOCxfOCxfOCxfOCxfZSxfYyxfZSxfYyxfMCxfMCxfMCxfMCxfYyxfYyxfYyxfYyxfOCxfOCxfOCxfOCxfYyxfYyxfYyxfYyxfMCxfMCxfMCxfMCxfYixfOCxfYSxfOCxfOSxfOCxfOCxfOCxfYSxfOCxfYSxfOCxfMCxfMCxfMCxfMCxfOSxfOCxfOCxfOCxfOSxfOCxfOCxfOCxfOCxfOCxfOCxfOCxfMCxfMCxfMCxfMCxfOCxfOCxfOCxfOCxfOCxfOCxfOCxfOCxfOCxfOCxfOCxfOCxfMCxfMCxfMCxfMCxfOCxfOCxfOCxfOCxfOCxfOCxfOCxfOCxfOCxfOCxfOCxfOCxfMCxfMCxfMCxfMCwKKyAgICAgIF85LF9hLF84LF9hLF9mLF9jLF9lLF9jLF84LF9hLF84LF9hLF82LF80LF82LF80LF9iLF84LF9hLF84LF9kLF9jLF9jLF9jLF9hLF84LF9hLF84LF80LF80LF80LF80LF9hLF84LF9hLF84LF9jLF9jLF9jLF9jLF9hLF84LF9hLF84LF80LF80LF80LF80LF84LF84LF84LF84LF9jLF9jLF9jLF9jLF84LF84LF84LF84LF80LF80LF80LF80LF9mLF9jLF9lLF9jLF9kLF9jLF9jLF9jLF9lLF9jLF9lLF9jLF80LF80LF80LF80LF9kLF9jLF9jLF9jLF9kLF9jLF9jLF9jLF9jLF9jLF9jLF9jLF80LF80LF80LF80LF9jLF9jLF9jLF9jLF9jLF9jLF9jLF9jLF9jLF9jLF9jLF9jLF80LF80LF80LF80LF9jLF9jLF9jLF9jLF9jLF9jLF9jLF9jLF9jLF9jLF9jLF9jLF80LF80LF80LF80LAorICAgICAgX2UsX2UsX2UsX2UsXzYsXzQsXzYsXzQsXzYsXzYsXzYsXzYsXzYsXzQsXzYsXzQsX2UsX2MsX2UsX2MsXzQsXzQsXzQsXzQsXzYsXzQsXzYsXzQsXzQsXzQsXzQsXzQsX2UsX2MsX2UsX2MsXzQsXzQsXzQsXzQsXzYsXzQsXzYsXzQsXzQsXzQsXzQsXzQsX2MsX2MsX2MsX2MsXzQsXzQsXzQsXzQsXzQsXzQsXzQsXzQsXzQsXzQsXzQsXzQsX2UsX2MsX2UsX2MsXzAsXzAsXzAsXzAsXzYsXzQsXzYsXzQsXzAsXzAsXzAsXzAsX2MsX2MsX2MsX2MsXzAsXzAsXzAsXzAsXzQsXzQsXzQsXzQsXzAsXzAsXzAsXzAsX2MsX2MsX2MsX2MsXzAsXzAsXzAsXzAsXzQsXzQsXzQsXzQsXzAsXzAsXzAsXzAsX2MsX2MsX2MsX2MsXzAsXzAsXzAsXzAsXzQsXzQsXzQsXzQsXzAsXzAsXzAsXzAsCisgICAgICBfZixfYyxfZSxfYyxfZCxfYyxfYyxfYyxfZSxfYyxfZSxfYyxfNCxfNCxfNCxfNCxfZCxfYyxfYyxfYyxfZCxfYyxfYyxfYyxfYyxfYyxfYyxfYyxfNCxfNCxfNCxfNCxfYyxfYyxfYyxfYyxfYyxfYyxfYyxfYyxfYyxfYyxfYyxfYyxfNCxfNCxfNCxfNCxfYyxfYyxfYyxfYyxfYyxfYyxfYyxfYyxfYyxfYyxfYyxfYyxfNCxfNCxfNCxfNCxfZCxfYyxfYyxfYyxfOSxfOCxfOCxfOCxfYyxfYyxfYyxfYyxfMCxfMCxfMCxfMCxfZCxfYyxfYyxfYyxfOSxfOCxfOCxfOCxfYyxfYyxfYyxfYyxfMCxfMCxfMCxfMCxfYyxfYyxfYyxfYyxfOCxfOCxfOCxfOCxfYyxfYyxfYyxfYyxfMCxfMCxfMCxfMCxfYyxfYyxfYyxfYyxfOCxfOCxfOCxfOCxfYyxfYyxfYyxfYyxfMCxfMCxfMCxfMCwKKyAgICAgIF9lLF9jLF9lLF9jLF8wLF8wLF8wLF8wLF82LF80LF82LF80LF8wLF8wLF8wLF8wLF9jLF9jLF9jLF9jLF8wLF8wLF8wLF8wLF80LF80LF80LF80LF8wLF8wLF8wLF8wLF9jLF9jLF9jLF9jLF8wLF8wLF8wLF8wLF80LF80LF80LF80LF8wLF8wLF8wLF8wLF9jLF9jLF9jLF9jLF8wLF8wLF8wLF8wLF80LF80LF80LF80LF8wLF8wLF8wLF8wLF84LF84LF84LF84LF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF84LF84LF84LF84LF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF84LF84LF84LF84LF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF84LF84LF84LF84LF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLAorICAgICAgXzAsXzEsXzEsXzAsX2QsX2YsX2QsX2UsXzksXzgsXzgsXzgsX2QsX2UsX2MsX2UsXzAsXzMsXzEsXzIsX2YsX2QsX2YsX2MsXzksX2EsXzgsX2EsX2YsX2MsX2UsX2MsXzEsXzIsXzAsXzIsX2YsX2MsX2UsX2MsXzgsX2EsXzgsX2EsX2UsX2MsX2UsX2MsXzMsXzAsXzIsXzAsX2QsX2MsX2MsX2MsX2EsXzgsX2EsXzgsX2MsX2MsX2MsX2MsXzQsXzcsXzUsXzYsX2IsXzksX2IsXzgsX2QsX2UsX2MsX2UsX2IsXzgsX2EsXzgsXzYsXzUsXzcsXzQsXzksXzksXzksXzgsX2YsX2MsX2UsX2MsXzksXzgsXzgsXzgsXzcsXzQsXzYsXzQsXzksXzgsXzgsXzgsX2UsX2MsX2UsX2MsXzgsXzgsXzgsXzgsXzUsXzQsXzQsXzQsXzksXzgsXzgsXzgsX2MsX2MsX2MsX2MsXzgsXzgsXzgsXzgsCisgICAgICBfZCxfZSxfYyxfZSxfYixfYSxfYSxfYSxfYyxfZSxfYyxfZSxfMixfMixfMixfMixfZixfZSxfZSxfZSxfYixfOCxfYSxfOCxfZSxfZSxfZSxfZSxfMixfMCxfMixfMCxfZSxfZSxfZSxfZSxfYSxfOCxfYSxfOCxfZSxfZSxfZSxfZSxfMixfMCxfMixfMCxfZSxfYyxfZSxfYyxfOCxfOCxfOCxfOCxfZSxfYyxfZSxfYyxfMCxfMCxfMCxfMCxfYixfYSxfYSxfYSxfYixfOCxfYSxfOCxfYSxfYSxfYSxfYSxfMixfMCxfMixfMCxfYixfOCxfYSxfOCxfOSxfOCxfOCxfOCxfYSxfOCxfYSxfOCxfMCxfMCxfMCxfMCxfYSxfOCxfYSxfOCxfOCxfOCxfOCxfOCxfYSxfOCxfYSxfOCxfMCxfMCxfMCxfMCxfOCxfOCxfOCxfOCxfOCxfOCxfOCxfOCxfOCxfOCxfOCxfOCxfMCxfMCxfMCxfMCwKKyAgICAgIF80LF83LF81LF82LF9iLF85LF9iLF84LF9kLF9lLF9jLF9lLF9iLF84LF9hLF84LF82LF81LF83LF80LF85LF85LF85LF84LF9mLF9jLF9lLF9jLF85LF84LF84LF84LF83LF80LF82LF80LF85LF84LF84LF84LF9lLF9jLF9lLF9jLF84LF84LF84LF84LF81LF80LF80LF80LF85LF84LF84LF84LF9jLF9jLF9jLF9jLF84LF84LF84LF84LF8yLF8xLF8zLF8wLF85LF85LF85LF84LF9iLF84LF9hLF84LF85LF84LF84LF84LF8wLF8xLF8xLF8wLF85LF85LF85LF84LF85LF84LF84LF84LF85LF84LF84LF84LF8xLF8wLF8wLF8wLF85LF84LF84LF84LF84LF84LF84LF84LF84LF84LF84LF84LF8xLF8wLF8wLF8wLF85LF84LF84LF84LF84LF84LF84LF84LF84LF84LF84LF84LAorICAgICAgX2IsX2EsX2EsX2EsX2IsXzgsX2EsXzgsX2EsX2EsX2EsX2EsXzIsXzAsXzIsXzAsX2IsXzgsX2EsXzgsXzksXzgsXzgsXzgsX2EsXzgsX2EsXzgsXzAsXzAsXzAsXzAsX2EsXzgsX2EsXzgsXzgsXzgsXzgsXzgsX2EsXzgsX2EsXzgsXzAsXzAsXzAsXzAsXzgsXzgsXzgsXzgsXzgsXzgsXzgsXzgsXzgsXzgsXzgsXzgsXzAsXzAsXzAsXzAsX2IsXzgsX2EsXzgsXzksXzgsXzgsXzgsX2EsXzgsX2EsXzgsXzAsXzAsXzAsXzAsXzksXzgsXzgsXzgsXzksXzgsXzgsXzgsXzgsXzgsXzgsXzgsXzAsXzAsXzAsXzAsXzgsXzgsXzgsXzgsXzgsXzgsXzgsXzgsXzgsXzgsXzgsXzgsXzAsXzAsXzAsXzAsXzgsXzgsXzgsXzgsXzgsXzgsXzgsXzgsXzgsXzgsXzgsXzgsXzAsXzAsXzAsXzAsCisgICAgICBfZCxfZSxfYyxfZSxfZixfYyxfZSxfYyxfYyxfZSxfYyxfZSxfNixfNCxfNixfNCxfZixfYyxfZSxfYyxfZCxfYyxfYyxfYyxfZSxfYyxfZSxfYyxfNCxfNCxfNCxfNCxfZSxfYyxfZSxfYyxfYyxfYyxfYyxfYyxfZSxfYyxfZSxfYyxfNCxfNCxfNCxfNCxfYyxfYyxfYyxfYyxfYyxfYyxfYyxfYyxfYyxfYyxfYyxfYyxfNCxfNCxfNCxfNCxfZixfYyxfZSxfYyxfOSxfOCxfOCxfOCxfZSxfYyxfZSxfYyxfMCxfMCxfMCxfMCxfZCxfYyxfYyxfYyxfOSxfOCxfOCxfOCxfYyxfYyxfYyxfYyxfMCxfMCxfMCxfMCxfYyxfYyxfYyxfYyxfOCxfOCxfOCxfOCxfYyxfYyxfYyxfYyxfMCxfMCxfMCxfMCxfYyxfYyxfYyxfYyxfOCxfOCxfOCxfOCxfYyxfYyxfYyxfYyxfMCxfMCxfMCxfMCwKKyAgICAgIF9lLF9lLF9lLF9lLF8yLF8wLF8yLF8wLF82LF82LF82LF82LF8yLF8wLF8yLF8wLF9lLF9jLF9lLF9jLF8wLF8wLF8wLF8wLF82LF80LF82LF80LF8wLF8wLF8wLF8wLF9lLF9jLF9lLF9jLF8wLF8wLF8wLF8wLF82LF80LF82LF80LF8wLF8wLF8wLF8wLF9jLF9jLF9jLF9jLF8wLF8wLF8wLF8wLF80LF80LF80LF80LF8wLF8wLF8wLF8wLF9hLF84LF9hLF84LF8wLF8wLF8wLF8wLF8yLF8wLF8yLF8wLF8wLF8wLF8wLF8wLF84LF84LF84LF84LF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF84LF84LF84LF84LF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF84LF84LF84LF84LF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLAorICAgICAgX2YsX2MsX2UsX2MsXzksXzgsXzgsXzgsX2UsX2MsX2UsX2MsXzAsXzAsXzAsXzAsX2QsX2MsX2MsX2MsXzksXzgsXzgsXzgsX2MsX2MsX2MsX2MsXzAsXzAsXzAsXzAsX2MsX2MsX2MsX2MsXzgsXzgsXzgsXzgsX2MsX2MsX2MsX2MsXzAsXzAsXzAsXzAsX2MsX2MsX2MsX2MsXzgsXzgsXzgsXzgsX2MsX2MsX2MsX2MsXzAsXzAsXzAsXzAsXzksXzgsXzgsXzgsXzksXzgsXzgsXzgsXzgsXzgsXzgsXzgsXzAsXzAsXzAsXzAsXzksXzgsXzgsXzgsXzksXzgsXzgsXzgsXzgsXzgsXzgsXzgsXzAsXzAsXzAsXzAsXzgsXzgsXzgsXzgsXzgsXzgsXzgsXzgsXzgsXzgsXzgsXzgsXzAsXzAsXzAsXzAsXzgsXzgsXzgsXzgsXzgsXzgsXzgsXzgsXzgsXzgsXzgsXzgsXzAsXzAsXzAsXzAsCisgICAgICBfYSxfOCxfYSxfOCxfMCxfMCxfMCxfMCxfMixfMCxfMixfMCxfMCxfMCxfMCxfMCxfOCxfOCxfOCxfOCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfOCxfOCxfOCxfOCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfOCxfOCxfOCxfOCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfOCxfOCxfOCxfOCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfOCxfOCxfOCxfOCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfOCxfOCxfOCxfOCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfOCxfOCxfOCxfOCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCwKKyAgICAgIF84LF85LF85LF84LF9kLF9mLF9kLF9lLF85LF84LF84LF84LF81LF82LF80LF82LF84LF9iLF85LF9hLF9mLF9kLF9mLF9jLF85LF9hLF84LF9hLF83LF80LF82LF80LF85LF9hLF84LF9hLF9mLF9jLF9lLF9jLF84LF9hLF84LF9hLF82LF80LF82LF80LF9iLF84LF9hLF84LF9kLF9jLF9jLF9jLF9hLF84LF9hLF84LF80LF80LF80LF80LF9jLF9mLF9kLF9lLF9iLF85LF9iLF84LF9kLF9lLF9jLF9lLF8zLF8wLF8yLF8wLF9lLF9kLF9mLF9jLF85LF85LF85LF84LF9mLF9jLF9lLF9jLF8xLF8wLF8wLF8wLF9mLF9jLF9lLF9jLF85LF84LF84LF84LF9lLF9jLF9lLF9jLF8wLF8wLF8wLF8wLF9kLF9jLF9jLF9jLF85LF84LF84LF84LF9jLF9jLF9jLF9jLF8wLF8wLF8wLF8wLAorICAgICAgX2QsX2UsX2MsX2UsXzMsXzIsXzIsXzIsXzQsXzYsXzQsXzYsXzIsXzIsXzIsXzIsX2YsX2UsX2UsX2UsXzMsXzAsXzIsXzAsXzYsXzYsXzYsXzYsXzIsXzAsXzIsXzAsX2UsX2UsX2UsX2UsXzIsXzAsXzIsXzAsXzYsXzYsXzYsXzYsXzIsXzAsXzIsXzAsX2UsX2MsX2UsX2MsXzAsXzAsXzAsXzAsXzYsXzQsXzYsXzQsXzAsXzAsXzAsXzAsX2IsX2EsX2EsX2EsXzMsXzAsXzIsXzAsXzIsXzIsXzIsXzIsXzIsXzAsXzIsXzAsX2IsXzgsX2EsXzgsXzEsXzAsXzAsXzAsXzIsXzAsXzIsXzAsXzAsXzAsXzAsXzAsX2EsXzgsX2EsXzgsXzAsXzAsXzAsXzAsXzIsXzAsXzIsXzAsXzAsXzAsXzAsXzAsXzgsXzgsXzgsXzgsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsCisgICAgICBfYyxfZixfZCxfZSxfYixfOSxfYixfOCxfZCxfZSxfYyxfZSxfMyxfMCxfMixfMCxfZSxfZCxfZixfYyxfOSxfOSxfOSxfOCxfZixfYyxfZSxfYyxfMSxfMCxfMCxfMCxfZixfYyxfZSxfYyxfOSxfOCxfOCxfOCxfZSxfYyxfZSxfYyxfMCxfMCxfMCxfMCxfZCxfYyxfYyxfYyxfOSxfOCxfOCxfOCxfYyxfYyxfYyxfYyxfMCxfMCxfMCxfMCxfYSxfOSxfYixfOCxfOSxfOSxfOSxfOCxfYixfOCxfYSxfOCxfMSxfMCxfMCxfMCxfOCxfOSxfOSxfOCxfOSxfOSxfOSxfOCxfOSxfOCxfOCxfOCxfMSxfMCxfMCxfMCxfOSxfOCxfOCxfOCxfOSxfOCxfOCxfOCxfOCxfOCxfOCxfOCxfMCxfMCxfMCxfMCxfOSxfOCxfOCxfOCxfOSxfOCxfOCxfOCxfOCxfOCxfOCxfOCxfMCxfMCxfMCxfMCwKKyAgICAgIF9iLF9hLF9hLF9hLF8zLF8wLF8yLF8wLF8yLF8yLF8yLF8yLF8yLF8wLF8yLF8wLF9iLF84LF9hLF84LF8xLF8wLF8wLF8wLF8yLF8wLF8yLF8wLF8wLF8wLF8wLF8wLF9hLF84LF9hLF84LF8wLF8wLF8wLF8wLF8yLF8wLF8yLF8wLF8wLF8wLF8wLF8wLF84LF84LF84LF84LF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF9iLF84LF9hLF84LF8xLF8wLF8wLF8wLF8yLF8wLF8yLF8wLF8wLF8wLF8wLF8wLF85LF84LF84LF84LF8xLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF84LF84LF84LF84LF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF84LF84LF84LF84LF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLAorICAgICAgX2QsX2UsX2MsX2UsXzcsXzQsXzYsXzQsXzQsXzYsXzQsXzYsXzYsXzQsXzYsXzQsX2YsX2MsX2UsX2MsXzUsXzQsXzQsXzQsXzYsXzQsXzYsXzQsXzQsXzQsXzQsXzQsX2UsX2MsX2UsX2MsXzQsXzQsXzQsXzQsXzYsXzQsXzYsXzQsXzQsXzQsXzQsXzQsX2MsX2MsX2MsX2MsXzQsXzQsXzQsXzQsXzQsXzQsXzQsXzQsXzQsXzQsXzQsXzQsX2YsX2MsX2UsX2MsXzEsXzAsXzAsXzAsXzYsXzQsXzYsXzQsXzAsXzAsXzAsXzAsX2QsX2MsX2MsX2MsXzEsXzAsXzAsXzAsXzQsXzQsXzQsXzQsXzAsXzAsXzAsXzAsX2MsX2MsX2MsX2MsXzAsXzAsXzAsXzAsXzQsXzQsXzQsXzQsXzAsXzAsXzAsXzAsX2MsX2MsX2MsX2MsXzAsXzAsXzAsXzAsXzQsXzQsXzQsXzQsXzAsXzAsXzAsXzAsCisgICAgICBfNixfNixfNixfNixfMixfMCxfMixfMCxfNixfNixfNixfNixfMixfMCxfMixfMCxfNixfNCxfNixfNCxfMCxfMCxfMCxfMCxfNixfNCxfNixfNCxfMCxfMCxfMCxfMCxfNixfNCxfNixfNCxfMCxfMCxfMCxfMCxfNixfNCxfNixfNCxfMCxfMCxfMCxfMCxfNCxfNCxfNCxfNCxfMCxfMCxfMCxfMCxfNCxfNCxfNCxfNCxfMCxfMCxfMCxfMCxfMixfMCxfMixfMCxfMCxfMCxfMCxfMCxfMixfMCxfMixfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCwKKyAgICAgIF9mLF9jLF9lLF9jLF8xLF8wLF8wLF8wLF82LF80LF82LF80LF8wLF8wLF8wLF8wLF9kLF9jLF9jLF9jLF8xLF8wLF8wLF8wLF80LF80LF80LF80LF8wLF8wLF8wLF8wLF9jLF9jLF9jLF9jLF8wLF8wLF8wLF8wLF80LF80LF80LF80LF8wLF8wLF8wLF8wLF9jLF9jLF9jLF9jLF8wLF8wLF8wLF8wLF80LF80LF80LF80LF8wLF8wLF8wLF8wLF85LF84LF84LF84LF8xLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF85LF84LF84LF84LF8xLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF84LF84LF84LF84LF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF84LF84LF84LF84LF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLAorICAgICAgXzIsXzAsXzIsXzAsXzAsXzAsXzAsXzAsXzIsXzAsXzIsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsCisgICAgICBfYyxfZCxfZCxfYyxfOSxfYixfOSxfYSxfZCxfYyxfYyxfYyxfMSxfMixfMCxfMixfYyxfZixfZCxfZSxfYixfOSxfYixfOCxfZCxfZSxfYyxfZSxfMyxfMCxfMixfMCxfZCxfZSxfYyxfZSxfYixfOCxfYSxfOCxfYyxfZSxfYyxfZSxfMixfMCxfMixfMCxfZixfYyxfZSxfYyxfOSxfOCxfOCxfOCxfZSxfYyxfZSxfYyxfMCxfMCxfMCxfMCxfOCxfYixfOSxfYSxfYixfOSxfYixfOCxfOSxfYSxfOCxfYSxfMyxfMCxfMixfMCxfYSxfOSxfYixfOCxfOSxfOSxfOSxfOCxfYixfOCxfYSxfOCxfMSxfMCxfMCxfMCxfYixfOCxfYSxfOCxfOSxfOCxfOCxfOCxfYSxfOCxfYSxfOCxfMCxfMCxfMCxfMCxfOSxfOCxfOCxfOCxfOSxfOCxfOCxfOCxfOCxfOCxfOCxfOCxfMCxfMCxfMCxfMCwKKyAgICAgIF85LF9hLF84LF9hLF8zLF8yLF8yLF8yLF8wLF8yLF8wLF8yLF8yLF8yLF8yLF8yLF9iLF9hLF9hLF9hLF8zLF8wLF8yLF8wLF8yLF8yLF8yLF8yLF8yLF8wLF8yLF8wLF9hLF9hLF9hLF9hLF8yLF8wLF8yLF8wLF8yLF8yLF8yLF8yLF8yLF8wLF8yLF8wLF9hLF84LF9hLF84LF8wLF8wLF8wLF8wLF8yLF8wLF8yLF8wLF8wLF8wLF8wLF8wLF9iLF9hLF9hLF9hLF8zLF8wLF8yLF8wLF8yLF8yLF8yLF8yLF8yLF8wLF8yLF8wLF9iLF84LF9hLF84LF8xLF8wLF8wLF8wLF8yLF8wLF8yLF8wLF8wLF8wLF8wLF8wLF9hLF84LF9hLF84LF8wLF8wLF8wLF8wLF8yLF8wLF8yLF8wLF8wLF8wLF8wLF8wLF84LF84LF84LF84LF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLAorICAgICAgXzgsX2IsXzksX2EsX2IsXzksX2IsXzgsXzksX2EsXzgsX2EsXzMsXzAsXzIsXzAsX2EsXzksX2IsXzgsXzksXzksXzksXzgsX2IsXzgsX2EsXzgsXzEsXzAsXzAsXzAsX2IsXzgsX2EsXzgsXzksXzgsXzgsXzgsX2EsXzgsX2EsXzgsXzAsXzAsXzAsXzAsXzksXzgsXzgsXzgsXzksXzgsXzgsXzgsXzgsXzgsXzgsXzgsXzAsXzAsXzAsXzAsX2EsXzksX2IsXzgsXzksXzksXzksXzgsX2IsXzgsX2EsXzgsXzEsXzAsXzAsXzAsXzgsXzksXzksXzgsXzksXzksXzksXzgsXzksXzgsXzgsXzgsXzEsXzAsXzAsXzAsXzksXzgsXzgsXzgsXzksXzgsXzgsXzgsXzgsXzgsXzgsXzgsXzAsXzAsXzAsXzAsXzksXzgsXzgsXzgsXzksXzgsXzgsXzgsXzgsXzgsXzgsXzgsXzAsXzAsXzAsXzAsCisgICAgICBfYixfYSxfYSxfYSxfMyxfMCxfMixfMCxfMixfMixfMixfMixfMixfMCxfMixfMCxfYixfOCxfYSxfOCxfMSxfMCxfMCxfMCxfMixfMCxfMixfMCxfMCxfMCxfMCxfMCxfYSxfOCxfYSxfOCxfMCxfMCxfMCxfMCxfMixfMCxfMixfMCxfMCxfMCxfMCxfMCxfOCxfOCxfOCxfOCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfYixfOCxfYSxfOCxfMSxfMCxfMCxfMCxfMixfMCxfMixfMCxfMCxfMCxfMCxfMCxfOSxfOCxfOCxfOCxfMSxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfOCxfOCxfOCxfOCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfOCxfOCxfOCxfOCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCwKKyAgICAgIF9kLF9lLF9jLF9lLF8zLF8wLF8yLF8wLF80LF82LF80LF82LF8yLF8wLF8yLF8wLF9mLF9jLF9lLF9jLF8xLF8wLF8wLF8wLF82LF80LF82LF80LF8wLF8wLF8wLF8wLF9lLF9jLF9lLF9jLF8wLF8wLF8wLF8wLF82LF80LF82LF80LF8wLF8wLF8wLF8wLF9jLF9jLF9jLF9jLF8wLF8wLF8wLF8wLF80LF80LF80LF80LF8wLF8wLF8wLF8wLF9iLF84LF9hLF84LF8xLF8wLF8wLF8wLF8yLF8wLF8yLF8wLF8wLF8wLF8wLF8wLF85LF84LF84LF84LF8xLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF84LF84LF84LF84LF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF84LF84LF84LF84LF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLAorICAgICAgXzIsXzIsXzIsXzIsXzIsXzAsXzIsXzAsXzIsXzIsXzIsXzIsXzIsXzAsXzIsXzAsXzIsXzAsXzIsXzAsXzAsXzAsXzAsXzAsXzIsXzAsXzIsXzAsXzAsXzAsXzAsXzAsXzIsXzAsXzIsXzAsXzAsXzAsXzAsXzAsXzIsXzAsXzIsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzIsXzAsXzIsXzAsXzAsXzAsXzAsXzAsXzIsXzAsXzIsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsCisgICAgICBfYixfOCxfYSxfOCxfMSxfMCxfMCxfMCxfMixfMCxfMixfMCxfMCxfMCxfMCxfMCxfOSxfOCxfOCxfOCxfMSxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfOCxfOCxfOCxfOCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfOCxfOCxfOCxfOCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfOSxfOCxfOCxfOCxfMSxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfOSxfOCxfOCxfOCxfMSxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfOCxfOCxfOCxfOCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfOCxfOCxfOCxfOCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCwKKyAgICAgIF8yLF8wLF8yLF8wLF8wLF8wLF8wLF8wLF8yLF8wLF8yLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLAorICAgICAgXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzEsXzAsXzAsXzAsXzEsXzgsXzksXzksXzksXzAsXzAsXzAsXzAsXzAsXzIsXzAsXzMsXzAsXzAsXzAsXzEsXzgsX2IsXzksX2IsXzAsXzAsXzAsXzEsXzAsXzMsXzEsXzMsXzAsXzEsXzEsXzAsXzksX2IsXzksX2EsXzAsXzIsXzAsXzMsXzIsXzEsXzMsXzEsXzAsXzMsXzEsXzIsX2IsXzksX2IsXzgsXzAsXzAsXzAsXzAsXzQsXzYsXzQsXzcsXzAsXzAsXzAsXzEsX2MsX2YsX2QsX2YsXzAsXzIsXzAsXzIsXzYsXzQsXzYsXzUsXzAsXzIsXzAsXzMsX2UsX2QsX2YsX2QsXzAsXzIsXzAsXzMsXzYsXzUsXzcsXzUsXzAsXzMsXzEsXzIsX2YsX2QsX2YsX2MsXzIsXzAsXzIsXzEsXzQsXzUsXzUsXzUsXzIsXzEsXzMsXzAsX2QsX2QsX2QsX2MsCisgICAgICBfMCxfMCxfMCxfMSxfYyxfZixfZCxfZixfOCxfOSxfOSxfOCxfNSxfNyxfNSxfNixfMCxfMixfMCxfMyxfZSxfZixfZixfZixfOCxfYixfOSxfYSxfNyxfNyxfNyxfNixfMCxfMyxfMSxfMixfZixfZixfZixfZSxfOSxfYSxfOCxfYSxfNyxfNixfNixfNixfMixfMyxfMyxfMixfZixfZCxfZixfYyxfYixfYSxfYSxfYSxfNyxfNCxfNixfNCxfNCxfNixfNCxfNyxfYSxfYixfYixfYixfYyxfZixfZCxfZSxfMyxfMyxfMyxfMixfNixfNixfNixfNyxfYSxfOSxfYixfOSxfZSxfZixfZixfZSxfMyxfMSxfMyxfMCxfNixfNyxfNyxfNixfYixfOSxfYixfOCxfZixfZSxfZSxfZSxfMyxfMCxfMixfMCxfNixfNSxfNyxfNCxfOSxfOSxfOSxfOCxfZixfYyxfZSxfYyxfMSxfMCxfMCxfMCwKKyAgICAgIF8wLF8wLF8wLF8wLF80LF82LF80LF83LF8wLF8wLF8wLF8xLF9jLF9mLF9kLF9mLF8wLF8yLF8wLF8yLF82LF80LF82LF81LF8wLF8yLF8wLF8zLF9lLF9kLF9mLF9kLF8wLF8yLF8wLF8zLF82LF81LF83LF81LF8wLF8zLF8xLF8yLF9mLF9kLF9mLF9jLF8yLF8wLF8yLF8xLF80LF81LF81LF81LF8yLF8xLF8zLF8wLF9kLF9kLF9kLF9jLF80LF82LF80LF82LF8yLF8wLF8yLF8xLF80LF82LF80LF83LF9hLF85LF9iLF85LF82LF80LF82LF80LF8wLF8wLF8wLF8xLF82LF80LF82LF81LF84LF85LF85LF85LF82LF80LF82LF81LF8wLF8xLF8xLF8xLF82LF81LF83LF80LF85LF85LF85LF84LF80LF80LF80LF81LF8wLF8xLF8xLF8xLF80LF81LF81LF80LF85LF85LF85LF84LAorICAgICAgXzQsXzYsXzQsXzcsX2EsX2IsX2IsX2IsX2MsX2YsX2QsX2UsXzMsXzMsXzMsXzIsXzYsXzYsXzYsXzcsX2EsXzksX2IsXzksX2UsX2YsX2YsX2UsXzMsXzEsXzMsXzAsXzYsXzcsXzcsXzYsX2IsXzksX2IsXzgsX2YsX2UsX2UsX2UsXzMsXzAsXzIsXzAsXzYsXzUsXzcsXzQsXzksXzksXzksXzgsX2YsX2MsX2UsX2MsXzEsXzAsXzAsXzAsXzIsXzIsXzIsXzMsX2EsXzksX2IsXzksX2EsX2IsX2IsX2EsXzMsXzEsXzMsXzAsXzIsXzAsXzIsXzEsXzgsXzksXzksXzksX2EsXzksX2IsXzgsXzEsXzEsXzEsXzAsXzIsXzEsXzMsXzAsXzksXzksXzksXzgsX2IsXzgsX2EsXzgsXzEsXzAsXzAsXzAsXzAsXzEsXzEsXzAsXzksXzksXzksXzgsXzksXzgsXzgsXzgsXzEsXzAsXzAsXzAsCisgICAgICBfMCxfMCxfMCxfMSxfYyxfZixfZCxfZixfOCxfOSxfOSxfOCxfNSxfNyxfNSxfNixfMCxfMixfMCxfMyxfZSxfZCxfZixfZCxfOCxfYixfOSxfYSxfNyxfNSxfNyxfNCxfMCxfMyxfMSxfMixfZixfZCxfZixfYyxfOSxfYSxfOCxfYSxfNyxfNCxfNixfNCxfMixfMSxfMyxfMCxfZCxfZCxfZCxfYyxfYixfOCxfYSxfOCxfNSxfNCxfNCxfNCxfNCxfNixfNCxfNyxfZSxfZCxfZixfZCxfYyxfZixfZCxfZSxfNyxfNSxfNyxfNCxfNixfNCxfNixfNSxfYyxfZCxfZCxfZCxfZSxfZCxfZixfYyxfNSxfNSxfNSxfNCxfNixfNSxfNyxfNCxfZCxfZCxfZCxfYyxfZixfYyxfZSxfYyxfNSxfNCxfNCxfNCxfNCxfNSxfNSxfNCxfZCxfZCxfZCxfYyxfZCxfYyxfYyxfYyxfNSxfNCxfNCxfNCwKKyAgICAgIF9jLF9mLF9kLF9lLF83LF83LF83LF82LF81LF82LF80LF82LF83LF82LF82LF82LF9lLF9mLF9mLF9lLF83LF81LF83LF80LF83LF82LF82LF82LF83LF80LF82LF80LF9mLF9lLF9lLF9lLF83LF80LF82LF80LF82LF82LF82LF82LF82LF80LF82LF80LF9mLF9jLF9lLF9jLF81LF80LF80LF80LF82LF80LF82LF80LF80LF80LF80LF80LF9lLF9mLF9mLF9lLF8zLF8xLF8zLF8wLF83LF82LF82LF82LF8zLF8wLF8yLF8wLF9lLF9kLF9mLF9jLF8xLF8xLF8xLF8wLF83LF80LF82LF80LF8xLF8wLF8wLF8wLF9mLF9jLF9lLF9jLF8xLF8wLF8wLF8wLF82LF80LF82LF80LF8wLF8wLF8wLF8wLF9kLF9jLF9jLF9jLF8xLF8wLF8wLF8wLF80LF80LF80LF80LF8wLF8wLF8wLF8wLAorICAgICAgXzQsXzYsXzQsXzcsX2UsX2QsX2YsX2QsX2MsX2YsX2QsX2UsXzcsXzUsXzcsXzQsXzYsXzQsXzYsXzUsX2MsX2QsX2QsX2QsX2UsX2QsX2YsX2MsXzUsXzUsXzUsXzQsXzYsXzUsXzcsXzQsX2QsX2QsX2QsX2MsX2YsX2MsX2UsX2MsXzUsXzQsXzQsXzQsXzQsXzUsXzUsXzQsX2QsX2QsX2QsX2MsX2QsX2MsX2MsX2MsXzUsXzQsXzQsXzQsXzYsXzQsXzYsXzUsXzgsXzksXzksXzksX2UsX2QsX2YsX2MsXzEsXzEsXzEsXzAsXzQsXzQsXzQsXzUsXzgsXzksXzksXzksX2MsX2QsX2QsX2MsXzEsXzEsXzEsXzAsXzQsXzUsXzUsXzQsXzksXzksXzksXzgsX2QsX2MsX2MsX2MsXzEsXzAsXzAsXzAsXzQsXzUsXzUsXzQsXzksXzksXzksXzgsX2QsX2MsX2MsX2MsXzEsXzAsXzAsXzAsCisgICAgICBfZSxfZixfZixfZSxfMyxfMSxfMyxfMCxfNyxfNixfNixfNixfMyxfMCxfMixfMCxfZSxfZCxfZixfYyxfMSxfMSxfMSxfMCxfNyxfNCxfNixfNCxfMSxfMCxfMCxfMCxfZixfYyxfZSxfYyxfMSxfMCxfMCxfMCxfNixfNCxfNixfNCxfMCxfMCxfMCxfMCxfZCxfYyxfYyxfYyxfMSxfMCxfMCxfMCxfNCxfNCxfNCxfNCxfMCxfMCxfMCxfMCxfYSxfOSxfYixfOCxfMSxfMSxfMSxfMCxfMyxfMCxfMixfMCxfMSxfMCxfMCxfMCxfOCxfOSxfOSxfOCxfMSxfMSxfMSxfMCxfMSxfMCxfMCxfMCxfMSxfMCxfMCxfMCxfOSxfOCxfOCxfOCxfMSxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfOSxfOCxfOCxfOCxfMSxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCwKKyAgICAgIF8wLF8wLF8wLF8wLF80LF80LF80LF81LF8wLF8wLF8wLF8xLF9jLF9kLF9kLF9kLF8wLF8wLF8wLF8wLF80LF82LF80LF83LF8wLF8wLF8wLF8xLF9jLF9mLF9kLF9mLF8wLF8wLF8wLF8xLF80LF83LF81LF83LF8wLF8xLF8xLF8wLF9kLF9mLF9kLF9lLF8wLF8yLF8wLF8zLF82LF81LF83LF81LF8wLF8zLF8xLF8yLF9mLF9kLF9mLF9jLF80LF80LF80LF80LF8wLF8yLF8wLF8zLF80LF80LF80LF81LF84LF9iLF85LF9iLF80LF82LF80LF82LF8yLF8wLF8yLF8xLF80LF82LF80LF83LF9hLF85LF9iLF85LF80LF82LF80LF83LF8yLF8xLF8zLF8xLF80LF83LF81LF82LF9iLF85LF9iLF84LF82LF80LF82LF81LF8wLF8xLF8xLF8xLF82LF81LF83LF80LF85LF85LF85LF84LAorICAgICAgXzQsXzQsXzQsXzUsXzgsX2IsXzksX2IsX2MsX2QsX2QsX2MsXzEsXzMsXzEsXzIsXzQsXzYsXzQsXzcsX2EsX2IsX2IsX2IsX2MsX2YsX2QsX2UsXzMsXzMsXzMsXzIsXzQsXzcsXzUsXzYsX2IsX2IsX2IsX2EsX2QsX2UsX2MsX2UsXzMsXzIsXzIsXzIsXzYsXzcsXzcsXzYsX2IsXzksX2IsXzgsX2YsX2UsX2UsX2UsXzMsXzAsXzIsXzAsXzAsXzIsXzAsXzMsX2EsX2IsX2IsX2IsXzgsX2IsXzksX2EsXzMsXzMsXzMsXzIsXzIsXzIsXzIsXzMsX2EsXzksX2IsXzksX2EsX2IsX2IsX2EsXzMsXzEsXzMsXzAsXzIsXzMsXzMsXzIsX2IsXzksX2IsXzgsX2IsX2EsX2EsX2EsXzMsXzAsXzIsXzAsXzIsXzEsXzMsXzAsXzksXzksXzksXzgsX2IsXzgsX2EsXzgsXzEsXzAsXzAsXzAsCisgICAgICBfNCxfNCxfNCxfNCxfMCxfMixfMCxfMyxfNCxfNCxfNCxfNSxfOCxfYixfOSxfYixfNCxfNixfNCxfNixfMixfMCxfMixfMSxfNCxfNixfNCxfNyxfYSxfOSxfYixfOSxfNCxfNixfNCxfNyxfMixfMSxfMyxfMSxfNCxfNyxfNSxfNixfYixfOSxfYixfOCxfNixfNCxfNixfNSxfMCxfMSxfMSxfMSxfNixfNSxfNyxfNCxfOSxfOSxfOSxfOCxfMCxfMixfMCxfMixfMixfMCxfMixfMSxfMCxfMixfMCxfMyxfYSxfOSxfYixfOSxfMixfMCxfMixfMCxfMCxfMCxfMCxfMSxfMixfMCxfMixfMSxfOCxfOSxfOSxfOSxfMixfMCxfMixfMSxfMCxfMSxfMSxfMSxfMixfMSxfMyxfMCxfOSxfOSxfOSxfOCxfMCxfMCxfMCxfMSxfMCxfMSxfMSxfMSxfMCxfMSxfMSxfMCxfOSxfOSxfOSxfOCwKKyAgICAgIF8wLF8yLF8wLF8zLF9hLF9iLF9iLF9iLF84LF9iLF85LF9hLF8zLF8zLF8zLF8yLF8yLF8yLF8yLF8zLF9hLF85LF9iLF85LF9hLF9iLF9iLF9hLF8zLF8xLF8zLF8wLF8yLF8zLF8zLF8yLF9iLF85LF9iLF84LF9iLF9hLF9hLF9hLF8zLF8wLF8yLF8wLF8yLF8xLF8zLF8wLF85LF85LF85LF84LF9iLF84LF9hLF84LF8xLF8wLF8wLF8wLF8yLF8yLF8yLF8zLF9hLF85LF9iLF85LF9hLF9iLF9iLF9hLF8zLF8xLF8zLF8wLF8yLF8wLF8yLF8xLF84LF85LF85LF85LF9hLF85LF9iLF84LF8xLF8xLF8xLF8wLF8yLF8xLF8zLF8wLF85LF85LF85LF84LF9iLF84LF9hLF84LF8xLF8wLF8wLF8wLF8wLF8xLF8xLF8wLF85LF85LF85LF84LF85LF84LF84LF84LF8xLF8wLF8wLF8wLAorICAgICAgXzQsXzQsXzQsXzUsX2MsX2YsX2QsX2YsX2MsX2QsX2QsX2MsXzUsXzcsXzUsXzYsXzQsXzYsXzQsXzcsX2UsX2QsX2YsX2QsX2MsX2YsX2QsX2UsXzcsXzUsXzcsXzQsXzQsXzcsXzUsXzYsX2YsX2QsX2YsX2MsX2QsX2UsX2MsX2UsXzcsXzQsXzYsXzQsXzYsXzUsXzcsXzQsX2QsX2QsX2QsX2MsX2YsX2MsX2UsX2MsXzUsXzQsXzQsXzQsXzQsXzYsXzQsXzcsX2EsXzksX2IsXzksX2MsX2YsX2QsX2UsXzMsXzEsXzMsXzAsXzYsXzQsXzYsXzUsXzgsXzksXzksXzksX2UsX2QsX2YsX2MsXzEsXzEsXzEsXzAsXzYsXzUsXzcsXzQsXzksXzksXzksXzgsX2YsX2MsX2UsX2MsXzEsXzAsXzAsXzAsXzQsXzUsXzUsXzQsXzksXzksXzksXzgsX2QsX2MsX2MsX2MsXzEsXzAsXzAsXzAsCisgICAgICBfYyxfZixfZCxfZSxfMyxfMyxfMyxfMixfNSxfNixfNCxfNixfMyxfMixfMixfMixfZSxfZixfZixfZSxfMyxfMSxfMyxfMCxfNyxfNixfNixfNixfMyxfMCxfMixfMCxfZixfZSxfZSxfZSxfMyxfMCxfMixfMCxfNixfNixfNixfNixfMixfMCxfMixfMCxfZixfYyxfZSxfYyxfMSxfMCxfMCxfMCxfNixfNCxfNixfNCxfMCxfMCxfMCxfMCxfYSxfYixfYixfYSxfMyxfMSxfMyxfMCxfMyxfMixfMixfMixfMyxfMCxfMixfMCxfYSxfOSxfYixfOCxfMSxfMSxfMSxfMCxfMyxfMCxfMixfMCxfMSxfMCxfMCxfMCxfYixfOCxfYSxfOCxfMSxfMCxfMCxfMCxfMixfMCxfMixfMCxfMCxfMCxfMCxfMCxfOSxfOCxfOCxfOCxfMSxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCwKKyAgICAgIF80LF82LF80LF83LF9hLF85LF9iLF85LF9jLF9mLF9kLF9lLF8zLF8xLF8zLF8wLF82LF80LF82LF81LF84LF85LF85LF85LF9lLF9kLF9mLF9jLF8xLF8xLF8xLF8wLF82LF81LF83LF80LF85LF85LF85LF84LF9mLF9jLF9lLF9jLF8xLF8wLF8wLF8wLF80LF81LF81LF80LF85LF85LF85LF84LF9kLF9jLF9jLF9jLF8xLF8wLF8wLF8wLF8yLF8wLF8yLF8xLF84LF85LF85LF85LF9hLF85LF9iLF84LF8xLF8xLF8xLF8wLF8wLF8wLF8wLF8xLF84LF85LF85LF85LF84LF85LF85LF84LF8xLF8xLF8xLF8wLF8wLF8xLF8xLF8wLF85LF85LF85LF84LF85LF84LF84LF84LF8xLF8wLF8wLF8wLF8wLF8xLF8xLF8wLF85LF85LF85LF84LF85LF84LF84LF84LF8xLF8wLF8wLF8wLAorICAgICAgX2EsX2IsX2IsX2EsXzMsXzEsXzMsXzAsXzMsXzIsXzIsXzIsXzMsXzAsXzIsXzAsX2EsXzksX2IsXzgsXzEsXzEsXzEsXzAsXzMsXzAsXzIsXzAsXzEsXzAsXzAsXzAsX2IsXzgsX2EsXzgsXzEsXzAsXzAsXzAsXzIsXzAsXzIsXzAsXzAsXzAsXzAsXzAsXzksXzgsXzgsXzgsXzEsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsX2EsXzksX2IsXzgsXzEsXzEsXzEsXzAsXzMsXzAsXzIsXzAsXzEsXzAsXzAsXzAsXzgsXzksXzksXzgsXzEsXzEsXzEsXzAsXzEsXzAsXzAsXzAsXzEsXzAsXzAsXzAsXzksXzgsXzgsXzgsXzEsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzksXzgsXzgsXzgsXzEsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsCisgICAgICBfMCxfMCxfMCxfMCxfYyxfYyxfYyxfZCxfOCxfOCxfOCxfOSxfNCxfNSxfNSxfNSxfMCxfMCxfMCxfMCxfYyxfZSxfYyxfZixfOCxfOCxfOCxfOSxfNCxfNyxfNSxfNyxfMCxfMCxfMCxfMSxfYyxfZixfZCxfZixfOCxfOSxfOSxfOCxfNSxfNyxfNSxfNixfMCxfMixfMCxfMyxfZSxfZCxfZixfZCxfOCxfYixfOSxfYSxfNyxfNSxfNyxfNCxfNCxfNCxfNCxfNCxfOCxfYSxfOCxfYixfYyxfYyxfYyxfZCxfMCxfMyxfMSxfMyxfNCxfNixfNCxfNixfYSxfOCxfYSxfOSxfYyxfZSxfYyxfZixfMixfMSxfMyxfMSxfNCxfNixfNCxfNyxfYSxfOSxfYixfOSxfYyxfZixfZCxfZSxfMyxfMSxfMyxfMCxfNixfNCxfNixfNSxfOCxfOSxfOSxfOSxfZSxfZCxfZixfYyxfMSxfMSxfMSxfMCwKKyAgICAgIF9jLF9jLF9jLF9kLF8wLF8zLF8xLF8zLF80LF81LF81LF80LF8xLF8zLF8xLF8yLF9jLF9lLF9jLF9mLF8yLF8zLF8zLF8zLF80LF83LF81LF82LF8zLF8zLF8zLF8yLF9jLF9mLF9kLF9lLF8zLF8zLF8zLF8yLF81LF82LF80LF82LF8zLF8yLF8yLF8yLF9lLF9mLF9mLF9lLF8zLF8xLF8zLF8wLF83LF82LF82LF82LF8zLF8wLF8yLF8wLF84LF9hLF84LF9iLF8yLF8zLF8zLF8zLF8wLF8zLF8xLF8yLF8zLF8zLF8zLF8yLF9hLF9hLF9hLF9iLF8yLF8xLF8zLF8xLF8yLF8zLF8zLF8yLF8zLF8xLF8zLF8wLF9hLF9iLF9iLF9hLF8zLF8xLF8zLF8wLF8zLF8yLF8yLF8yLF8zLF8wLF8yLF8wLF9hLF85LF9iLF84LF8xLF8xLF8xLF8wLF8zLF8wLF8yLF8wLF8xLF8wLF8wLF8wLAorICAgICAgXzQsXzQsXzQsXzQsXzgsX2EsXzgsX2IsX2MsX2MsX2MsX2QsXzAsXzMsXzEsXzMsXzQsXzYsXzQsXzYsX2EsXzgsX2EsXzksX2MsX2UsX2MsX2YsXzIsXzEsXzMsXzEsXzQsXzYsXzQsXzcsX2EsXzksX2IsXzksX2MsX2YsX2QsX2UsXzMsXzEsXzMsXzAsXzYsXzQsXzYsXzUsXzgsXzksXzksXzksX2UsX2QsX2YsX2MsXzEsXzEsXzEsXzAsXzAsXzIsXzAsXzIsX2EsXzgsX2EsXzksXzgsX2EsXzgsX2IsXzIsXzEsXzMsXzEsXzIsXzAsXzIsXzAsXzgsXzgsXzgsXzksX2EsXzgsX2EsXzksXzAsXzEsXzEsXzEsXzIsXzAsXzIsXzEsXzgsXzksXzksXzksX2EsXzksX2IsXzgsXzEsXzEsXzEsXzAsXzAsXzAsXzAsXzEsXzgsXzksXzksXzksXzgsXzksXzksXzgsXzEsXzEsXzEsXzAsCisgICAgICBfOCxfYSxfOCxfYixfMixfMyxfMyxfMyxfMCxfMyxfMSxfMixfMyxfMyxfMyxfMixfYSxfYSxfYSxfYixfMixfMSxfMyxfMSxfMixfMyxfMyxfMixfMyxfMSxfMyxfMCxfYSxfYixfYixfYSxfMyxfMSxfMyxfMCxfMyxfMixfMixfMixfMyxfMCxfMixfMCxfYSxfOSxfYixfOCxfMSxfMSxfMSxfMCxfMyxfMCxfMixfMCxfMSxfMCxfMCxfMCxfYSxfYSxfYSxfYixfMixfMSxfMyxfMSxfMixfMyxfMyxfMixfMyxfMSxfMyxfMCxfYSxfOCxfYSxfOSxfMCxfMSxfMSxfMSxfMixfMSxfMyxfMCxfMSxfMSxfMSxfMCxfYSxfOSxfYixfOCxfMSxfMSxfMSxfMCxfMyxfMCxfMixfMCxfMSxfMCxfMCxfMCxfOCxfOSxfOSxfOCxfMSxfMSxfMSxfMCxfMSxfMCxfMCxfMCxfMSxfMCxfMCxfMCwKKyAgICAgIF9jLF9jLF9jLF9kLF80LF83LF81LF83LF80LF81LF81LF80LF81LF83LF81LF82LF9jLF9lLF9jLF9mLF82LF81LF83LF81LF80LF83LF81LF82LF83LF81LF83LF80LF9jLF9mLF9kLF9lLF83LF81LF83LF80LF81LF82LF80LF82LF83LF80LF82LF80LF9lLF9kLF9mLF9jLF81LF81LF81LF80LF83LF80LF82LF80LF81LF80LF80LF80LF9jLF9lLF9jLF9mLF8yLF8xLF8zLF8xLF80LF83LF81LF82LF8zLF8xLF8zLF8wLF9lLF9jLF9lLF9kLF8wLF8xLF8xLF8xLF82LF81LF83LF80LF8xLF8xLF8xLF8wLF9lLF9kLF9mLF9jLF8xLF8xLF8xLF8wLF83LF80LF82LF80LF8xLF8wLF8wLF8wLF9jLF9kLF9kLF9jLF8xLF8xLF8xLF8wLF81LF80LF80LF80LF8xLF8wLF8wLF8wLAorICAgICAgXzQsXzcsXzUsXzYsXzMsXzMsXzMsXzIsXzUsXzYsXzQsXzYsXzMsXzIsXzIsXzIsXzYsXzcsXzcsXzYsXzMsXzEsXzMsXzAsXzcsXzYsXzYsXzYsXzMsXzAsXzIsXzAsXzcsXzYsXzYsXzYsXzMsXzAsXzIsXzAsXzYsXzYsXzYsXzYsXzIsXzAsXzIsXzAsXzcsXzQsXzYsXzQsXzEsXzAsXzAsXzAsXzYsXzQsXzYsXzQsXzAsXzAsXzAsXzAsXzIsXzMsXzMsXzIsXzMsXzEsXzMsXzAsXzMsXzIsXzIsXzIsXzMsXzAsXzIsXzAsXzIsXzEsXzMsXzAsXzEsXzEsXzEsXzAsXzMsXzAsXzIsXzAsXzEsXzAsXzAsXzAsXzMsXzAsXzIsXzAsXzEsXzAsXzAsXzAsXzIsXzAsXzIsXzAsXzAsXzAsXzAsXzAsXzEsXzAsXzAsXzAsXzEsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsCisgICAgICBfYyxfZSxfYyxfZixfMixfMSxfMyxfMSxfNCxfNyxfNSxfNixfMyxfMSxfMyxfMCxfZSxfYyxfZSxfZCxfMCxfMSxfMSxfMSxfNixfNSxfNyxfNCxfMSxfMSxfMSxfMCxfZSxfZCxfZixfYyxfMSxfMSxfMSxfMCxfNyxfNCxfNixfNCxfMSxfMCxfMCxfMCxfYyxfZCxfZCxfYyxfMSxfMSxfMSxfMCxfNSxfNCxfNCxfNCxfMSxfMCxfMCxfMCxfYSxfOCxfYSxfOSxfMCxfMSxfMSxfMSxfMixfMSxfMyxfMCxfMSxfMSxfMSxfMCxfOCxfOCxfOCxfOSxfMCxfMSxfMSxfMSxfMCxfMSxfMSxfMCxfMSxfMSxfMSxfMCxfOCxfOSxfOSxfOCxfMSxfMSxfMSxfMCxfMSxfMCxfMCxfMCxfMSxfMCxfMCxfMCxfOCxfOSxfOSxfOCxfMSxfMSxfMSxfMCxfMSxfMCxfMCxfMCxfMSxfMCxfMCxfMCwKKyAgICAgIF8yLF8zLF8zLF8yLF8zLF8xLF8zLF8wLF8zLF8yLF8yLF8yLF8zLF8wLF8yLF8wLF8yLF8xLF8zLF8wLF8xLF8xLF8xLF8wLF8zLF8wLF8yLF8wLF8xLF8wLF8wLF8wLF8zLF8wLF8yLF8wLF8xLF8wLF8wLF8wLF8yLF8wLF8yLF8wLF8wLF8wLF8wLF8wLF8xLF8wLF8wLF8wLF8xLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8yLF8xLF8zLF8wLF8xLF8xLF8xLF8wLF8zLF8wLF8yLF8wLF8xLF8wLF8wLF8wLF8wLF8xLF8xLF8wLF8xLF8xLF8xLF8wLF8xLF8wLF8wLF8wLF8xLF8wLF8wLF8wLF8xLF8wLF8wLF8wLF8xLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8xLF8wLF8wLF8wLF8xLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLAorICAgICAgXzQsXzQsXzQsXzQsXzgsXzgsXzgsXzksX2MsX2MsX2MsX2QsXzAsXzEsXzEsXzEsXzQsXzQsXzQsXzQsXzgsX2EsXzgsX2IsX2MsX2MsX2MsX2QsXzAsXzMsXzEsXzMsXzQsXzQsXzQsXzUsXzgsX2IsXzksX2IsX2MsX2QsX2QsX2MsXzEsXzMsXzEsXzIsXzQsXzYsXzQsXzcsX2EsXzksX2IsXzksX2MsX2YsX2QsX2UsXzMsXzEsXzMsXzAsXzAsXzAsXzAsXzAsXzgsX2EsXzgsX2IsXzgsXzgsXzgsXzksXzAsXzMsXzEsXzMsXzAsXzIsXzAsXzIsX2EsXzgsX2EsXzksXzgsX2EsXzgsX2IsXzIsXzEsXzMsXzEsXzAsXzIsXzAsXzMsX2EsXzksX2IsXzksXzgsX2IsXzksX2EsXzMsXzEsXzMsXzAsXzIsXzAsXzIsXzEsXzgsXzksXzksXzksX2EsXzksX2IsXzgsXzEsXzEsXzEsXzAsCisgICAgICBfOCxfOCxfOCxfOSxfMCxfMyxfMSxfMyxfMCxfMSxfMSxfMCxfMSxfMyxfMSxfMixfOCxfYSxfOCxfYixfMixfMyxfMyxfMyxfMCxfMyxfMSxfMixfMyxfMyxfMyxfMixfOCxfYixfOSxfYSxfMyxfMyxfMyxfMixfMSxfMixfMCxfMixfMyxfMixfMixfMixfYSxfYixfYixfYSxfMyxfMSxfMyxfMCxfMyxfMixfMixfMixfMyxfMCxfMixfMCxfOCxfYSxfOCxfYixfMixfMyxfMyxfMyxfMCxfMyxfMSxfMixfMyxfMyxfMyxfMixfYSxfYSxfYSxfYixfMixfMSxfMyxfMSxfMixfMyxfMyxfMixfMyxfMSxfMyxfMCxfYSxfYixfYixfYSxfMyxfMSxfMyxfMCxfMyxfMixfMixfMixfMyxfMCxfMixfMCxfYSxfOSxfYixfOCxfMSxfMSxfMSxfMCxfMyxfMCxfMixfMCxfMSxfMCxfMCxfMCwKKyAgICAgIF8wLF8wLF8wLF8wLF84LF9hLF84LF9iLF84LF84LF84LF85LF8wLF8zLF8xLF8zLF8wLF8yLF8wLF8yLF9hLF84LF9hLF85LF84LF9hLF84LF9iLF8yLF8xLF8zLF8xLF8wLF8yLF8wLF8zLF9hLF85LF9iLF85LF84LF9iLF85LF9hLF8zLF8xLF8zLF8wLF8yLF8wLF8yLF8xLF84LF85LF85LF85LF9hLF85LF9iLF84LF8xLF8xLF8xLF8wLF8wLF8yLF8wLF8yLF9hLF84LF9hLF85LF84LF9hLF84LF9iLF8yLF8xLF8zLF8xLF8yLF8wLF8yLF8wLF84LF84LF84LF85LF9hLF84LF9hLF85LF8wLF8xLF8xLF8xLF8yLF8wLF8yLF8xLF84LF85LF85LF85LF9hLF85LF9iLF84LF8xLF8xLF8xLF8wLF8wLF8wLF8wLF8xLF84LF85LF85LF85LF84LF85LF85LF84LF8xLF8xLF8xLF8wLAorICAgICAgXzgsX2EsXzgsX2IsXzIsXzMsXzMsXzMsXzAsXzMsXzEsXzIsXzMsXzMsXzMsXzIsX2EsX2EsX2EsX2IsXzIsXzEsXzMsXzEsXzIsXzMsXzMsXzIsXzMsXzEsXzMsXzAsX2EsX2IsX2IsX2EsXzMsXzEsXzMsXzAsXzMsXzIsXzIsXzIsXzMsXzAsXzIsXzAsX2EsXzksX2IsXzgsXzEsXzEsXzEsXzAsXzMsXzAsXzIsXzAsXzEsXzAsXzAsXzAsX2EsX2EsX2EsX2IsXzIsXzEsXzMsXzEsXzIsXzMsXzMsXzIsXzMsXzEsXzMsXzAsX2EsXzgsX2EsXzksXzAsXzEsXzEsXzEsXzIsXzEsXzMsXzAsXzEsXzEsXzEsXzAsX2EsXzksX2IsXzgsXzEsXzEsXzEsXzAsXzMsXzAsXzIsXzAsXzEsXzAsXzAsXzAsXzgsXzksXzksXzgsXzEsXzEsXzEsXzAsXzEsXzAsXzAsXzAsXzEsXzAsXzAsXzAsCisgICAgICBfYyxfYyxfYyxfZCxfMCxfMyxfMSxfMyxfNCxfNSxfNSxfNCxfMSxfMyxfMSxfMixfYyxfZSxfYyxfZixfMixfMSxfMyxfMSxfNCxfNyxfNSxfNixfMyxfMSxfMyxfMCxfYyxfZixfZCxfZSxfMyxfMSxfMyxfMCxfNSxfNixfNCxfNixfMyxfMCxfMixfMCxfZSxfZCxfZixfYyxfMSxfMSxfMSxfMCxfNyxfNCxfNixfNCxfMSxfMCxfMCxfMCxfOCxfYSxfOCxfYixfMixfMSxfMyxfMSxfMCxfMyxfMSxfMixfMyxfMSxfMyxfMCxfYSxfOCxfYSxfOSxfMCxfMSxfMSxfMSxfMixfMSxfMyxfMCxfMSxfMSxfMSxfMCxfYSxfOSxfYixfOCxfMSxfMSxfMSxfMCxfMyxfMCxfMixfMCxfMSxfMCxfMCxfMCxfOCxfOSxfOSxfOCxfMSxfMSxfMSxfMCxfMSxfMCxfMCxfMCxfMSxfMCxfMCxfMCwKKyAgICAgIF8wLF8zLF8xLF8yLF8zLF8zLF8zLF8yLF8xLF8yLF8wLF8yLF8zLF8yLF8yLF8yLF8yLF8zLF8zLF8yLF8zLF8xLF8zLF8wLF8zLF8yLF8yLF8yLF8zLF8wLF8yLF8wLF8zLF8yLF8yLF8yLF8zLF8wLF8yLF8wLF8yLF8yLF8yLF8yLF8yLF8wLF8yLF8wLF8zLF8wLF8yLF8wLF8xLF8wLF8wLF8wLF8yLF8wLF8yLF8wLF8wLF8wLF8wLF8wLF8yLF8zLF8zLF8yLF8zLF8xLF8zLF8wLF8zLF8yLF8yLF8yLF8zLF8wLF8yLF8wLF8yLF8xLF8zLF8wLF8xLF8xLF8xLF8wLF8zLF8wLF8yLF8wLF8xLF8wLF8wLF8wLF8zLF8wLF8yLF8wLF8xLF8wLF8wLF8wLF8yLF8wLF8yLF8wLF8wLF8wLF8wLF8wLF8xLF8wLF8wLF8wLF8xLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLAorICAgICAgXzgsX2EsXzgsX2IsXzIsXzEsXzMsXzEsXzAsXzMsXzEsXzIsXzMsXzEsXzMsXzAsX2EsXzgsX2EsXzksXzAsXzEsXzEsXzEsXzIsXzEsXzMsXzAsXzEsXzEsXzEsXzAsX2EsXzksX2IsXzgsXzEsXzEsXzEsXzAsXzMsXzAsXzIsXzAsXzEsXzAsXzAsXzAsXzgsXzksXzksXzgsXzEsXzEsXzEsXzAsXzEsXzAsXzAsXzAsXzEsXzAsXzAsXzAsX2EsXzgsX2EsXzksXzAsXzEsXzEsXzEsXzIsXzEsXzMsXzAsXzEsXzEsXzEsXzAsXzgsXzgsXzgsXzksXzAsXzEsXzEsXzEsXzAsXzEsXzEsXzAsXzEsXzEsXzEsXzAsXzgsXzksXzksXzgsXzEsXzEsXzEsXzAsXzEsXzAsXzAsXzAsXzEsXzAsXzAsXzAsXzgsXzksXzksXzgsXzEsXzEsXzEsXzAsXzEsXzAsXzAsXzAsXzEsXzAsXzAsXzAsCisgICAgICBfMixfMyxfMyxfMixfMyxfMSxfMyxfMCxfMyxfMixfMixfMixfMyxfMCxfMixfMCxfMixfMSxfMyxfMCxfMSxfMSxfMSxfMCxfMyxfMCxfMixfMCxfMSxfMCxfMCxfMCxfMyxfMCxfMixfMCxfMSxfMCxfMCxfMCxfMixfMCxfMixfMCxfMCxfMCxfMCxfMCxfMSxfMCxfMCxfMCxfMSxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMixfMSxfMyxfMCxfMSxfMSxfMSxfMCxfMyxfMCxfMixfMCxfMSxfMCxfMCxfMCxfMCxfMSxfMSxfMCxfMSxfMSxfMSxfMCxfMSxfMCxfMCxfMCxfMSxfMCxfMCxfMCxfMSxfMCxfMCxfMCxfMSxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMSxfMCxfMCxfMCxfMSxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCwKKyAgICAgIF8wLF8wLF8wLF8xLF9jLF9mLF9kLF9mLF84LF85LF85LF84LF9kLF9mLF9kLF9lLF8wLF8yLF8wLF8zLF9lLF9kLF9mLF9kLF84LF9iLF85LF9hLF9mLF9kLF9mLF9jLF8wLF8zLF8xLF8yLF9mLF9kLF9mLF9jLF85LF9hLF84LF9hLF9mLF9jLF9lLF9jLF8yLF8xLF8zLF8wLF9kLF9kLF9kLF9jLF9iLF84LF9hLF84LF9kLF9jLF9jLF9jLF80LF82LF80LF83LF9hLF85LF9iLF85LF9jLF9mLF9kLF9lLF9iLF85LF9iLF84LF82LF80LF82LF81LF84LF85LF85LF85LF9lLF9kLF9mLF9jLF85LF85LF85LF84LF82LF81LF83LF80LF85LF85LF85LF84LF9mLF9jLF9lLF9jLF85LF84LF84LF84LF80LF81LF81LF80LF85LF85LF85LF84LF9kLF9jLF9jLF9jLF85LF84LF84LF84LAorICAgICAgX2MsX2YsX2QsX2UsX2IsX2IsX2IsX2EsX2QsX2UsX2MsX2UsXzMsXzIsXzIsXzIsX2UsX2YsX2YsX2UsX2IsXzksX2IsXzgsX2YsX2UsX2UsX2UsXzMsXzAsXzIsXzAsX2YsX2UsX2UsX2UsX2IsXzgsX2EsXzgsX2UsX2UsX2UsX2UsXzIsXzAsXzIsXzAsX2YsX2MsX2UsX2MsXzksXzgsXzgsXzgsX2UsX2MsX2UsX2MsXzAsXzAsXzAsXzAsX2EsX2IsX2IsX2EsX2IsXzksX2IsXzgsX2IsX2EsX2EsX2EsXzMsXzAsXzIsXzAsX2EsXzksX2IsXzgsXzksXzksXzksXzgsX2IsXzgsX2EsXzgsXzEsXzAsXzAsXzAsX2IsXzgsX2EsXzgsXzksXzgsXzgsXzgsX2EsXzgsX2EsXzgsXzAsXzAsXzAsXzAsXzksXzgsXzgsXzgsXzksXzgsXzgsXzgsXzgsXzgsXzgsXzgsXzAsXzAsXzAsXzAsCisgICAgICBfNCxfNixfNCxfNyxfYSxfOSxfYixfOSxfYyxfZixfZCxfZSxfYixfOSxfYixfOCxfNixfNCxfNixfNSxfOCxfOSxfOSxfOSxfZSxfZCxfZixfYyxfOSxfOSxfOSxfOCxfNixfNSxfNyxfNCxfOSxfOSxfOSxfOCxfZixfYyxfZSxfYyxfOSxfOCxfOCxfOCxfNCxfNSxfNSxfNCxfOSxfOSxfOSxfOCxfZCxfYyxfYyxfYyxfOSxfOCxfOCxfOCxfMixfMCxfMixfMSxfOCxfOSxfOSxfOSxfYSxfOSxfYixfOCxfOSxfOSxfOSxfOCxfMCxfMCxfMCxfMSxfOCxfOSxfOSxfOSxfOCxfOSxfOSxfOCxfOSxfOSxfOSxfOCxfMCxfMSxfMSxfMCxfOSxfOSxfOSxfOCxfOSxfOCxfOCxfOCxfOSxfOCxfOCxfOCxfMCxfMSxfMSxfMCxfOSxfOSxfOSxfOCxfOSxfOCxfOCxfOCxfOSxfOCxfOCxfOCwKKyAgICAgIF9hLF9iLF9iLF9hLF9iLF85LF9iLF84LF9iLF9hLF9hLF9hLF8zLF8wLF8yLF8wLF9hLF85LF9iLF84LF85LF85LF85LF84LF9iLF84LF9hLF84LF8xLF8wLF8wLF8wLF9iLF84LF9hLF84LF85LF84LF84LF84LF9hLF84LF9hLF84LF8wLF8wLF8wLF8wLF85LF84LF84LF84LF85LF84LF84LF84LF84LF84LF84LF84LF8wLF8wLF8wLF8wLF9hLF85LF9iLF84LF85LF85LF85LF84LF9iLF84LF9hLF84LF8xLF8wLF8wLF8wLF84LF85LF85LF84LF85LF85LF85LF84LF85LF84LF84LF84LF8xLF8wLF8wLF8wLF85LF84LF84LF84LF85LF84LF84LF84LF84LF84LF84LF84LF8wLF8wLF8wLF8wLF85LF84LF84LF84LF85LF84LF84LF84LF84LF84LF84LF84LF8wLF8wLF8wLF8wLAorICAgICAgX2MsX2YsX2QsX2UsX2YsX2QsX2YsX2MsX2QsX2UsX2MsX2UsXzcsXzQsXzYsXzQsX2UsX2QsX2YsX2MsX2QsX2QsX2QsX2MsX2YsX2MsX2UsX2MsXzUsXzQsXzQsXzQsX2YsX2MsX2UsX2MsX2QsX2MsX2MsX2MsX2UsX2MsX2UsX2MsXzQsXzQsXzQsXzQsX2QsX2MsX2MsX2MsX2QsX2MsX2MsX2MsX2MsX2MsX2MsX2MsXzQsXzQsXzQsXzQsX2UsX2QsX2YsX2MsXzksXzksXzksXzgsX2YsX2MsX2UsX2MsXzEsXzAsXzAsXzAsX2MsX2QsX2QsX2MsXzksXzksXzksXzgsX2QsX2MsX2MsX2MsXzEsXzAsXzAsXzAsX2QsX2MsX2MsX2MsXzksXzgsXzgsXzgsX2MsX2MsX2MsX2MsXzAsXzAsXzAsXzAsX2QsX2MsX2MsX2MsXzksXzgsXzgsXzgsX2MsX2MsX2MsX2MsXzAsXzAsXzAsXzAsCisgICAgICBfZixfZSxfZSxfZSxfMyxfMCxfMixfMCxfNixfNixfNixfNixfMixfMCxfMixfMCxfZixfYyxfZSxfYyxfMSxfMCxfMCxfMCxfNixfNCxfNixfNCxfMCxfMCxfMCxfMCxfZSxfYyxfZSxfYyxfMCxfMCxfMCxfMCxfNixfNCxfNixfNCxfMCxfMCxfMCxfMCxfYyxfYyxfYyxfYyxfMCxfMCxfMCxfMCxfNCxfNCxfNCxfNCxfMCxfMCxfMCxfMCxfYixfOCxfYSxfOCxfMSxfMCxfMCxfMCxfMixfMCxfMixfMCxfMCxfMCxfMCxfMCxfOSxfOCxfOCxfOCxfMSxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfOCxfOCxfOCxfOCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfOCxfOCxfOCxfOCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCwKKyAgICAgIF9lLF9kLF9mLF9jLF85LF85LF85LF84LF9mLF9jLF9lLF9jLF8xLF8wLF8wLF8wLF9jLF9kLF9kLF9jLF85LF85LF85LF84LF9kLF9jLF9jLF9jLF8xLF8wLF8wLF8wLF9kLF9jLF9jLF9jLF85LF84LF84LF84LF9jLF9jLF9jLF9jLF8wLF8wLF8wLF8wLF9kLF9jLF9jLF9jLF85LF84LF84LF84LF9jLF9jLF9jLF9jLF8wLF8wLF8wLF8wLF84LF85LF85LF84LF85LF85LF85LF84LF85LF84LF84LF84LF8xLF8wLF8wLF8wLF84LF85LF85LF84LF85LF85LF85LF84LF85LF84LF84LF84LF8xLF8wLF8wLF8wLF85LF84LF84LF84LF85LF84LF84LF84LF84LF84LF84LF84LF8wLF8wLF8wLF8wLF85LF84LF84LF84LF85LF84LF84LF84LF84LF84LF84LF84LF8wLF8wLF8wLF8wLAorICAgICAgX2IsXzgsX2EsXzgsXzEsXzAsXzAsXzAsXzIsXzAsXzIsXzAsXzAsXzAsXzAsXzAsXzksXzgsXzgsXzgsXzEsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzgsXzgsXzgsXzgsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzgsXzgsXzgsXzgsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzksXzgsXzgsXzgsXzEsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzksXzgsXzgsXzgsXzEsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzgsXzgsXzgsXzgsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzgsXzgsXzgsXzgsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsCisgICAgICBfNCxfNCxfNCxfNSxfOCxfYixfOSxfYixfYyxfZCxfZCxfYyxfOSxfYixfOSxfYSxfNCxfNixfNCxfNyxfYSxfOSxfYixfOSxfYyxfZixfZCxfZSxfYixfOSxfYixfOCxfNCxfNyxfNSxfNixfYixfOSxfYixfOCxfZCxfZSxfYyxfZSxfYixfOCxfYSxfOCxfNixfNSxfNyxfNCxfOSxfOSxfOSxfOCxfZixfYyxfZSxfYyxfOSxfOCxfOCxfOCxfMCxfMixfMCxfMyxfYSxfOSxfYixfOSxfOCxfYixfOSxfYSxfYixfOSxfYixfOCxfMixfMCxfMixfMSxfOCxfOSxfOSxfOSxfYSxfOSxfYixfOCxfOSxfOSxfOSxfOCxfMixfMSxfMyxfMCxfOSxfOSxfOSxfOCxfYixfOCxfYSxfOCxfOSxfOCxfOCxfOCxfMCxfMSxfMSxfMCxfOSxfOSxfOSxfOCxfOSxfOCxfOCxfOCxfOSxfOCxfOCxfOCwKKyAgICAgIF84LF9iLF85LF9hLF9iLF9iLF9iLF9hLF85LF9hLF84LF9hLF8zLF8yLF8yLF8yLF9hLF9iLF9iLF9hLF9iLF85LF9iLF84LF9iLF9hLF9hLF9hLF8zLF8wLF8yLF8wLF9iLF9hLF9hLF9hLF9iLF84LF9hLF84LF9hLF9hLF9hLF9hLF8yLF8wLF8yLF8wLF9iLF84LF9hLF84LF85LF84LF84LF84LF9hLF84LF9hLF84LF8wLF8wLF8wLF8wLF9hLF9iLF9iLF9hLF9iLF85LF9iLF84LF9iLF9hLF9hLF9hLF8zLF8wLF8yLF8wLF9hLF85LF9iLF84LF85LF85LF85LF84LF9iLF84LF9hLF84LF8xLF8wLF8wLF8wLF9iLF84LF9hLF84LF85LF84LF84LF84LF9hLF84LF9hLF84LF8wLF8wLF8wLF8wLF85LF84LF84LF84LF85LF84LF84LF84LF84LF84LF84LF84LF8wLF8wLF8wLF8wLAorICAgICAgXzAsXzIsXzAsXzMsX2EsXzksX2IsXzksXzgsX2IsXzksX2EsX2IsXzksX2IsXzgsXzIsXzAsXzIsXzEsXzgsXzksXzksXzksX2EsXzksX2IsXzgsXzksXzksXzksXzgsXzIsXzEsXzMsXzAsXzksXzksXzksXzgsX2IsXzgsX2EsXzgsXzksXzgsXzgsXzgsXzAsXzEsXzEsXzAsXzksXzksXzksXzgsXzksXzgsXzgsXzgsXzksXzgsXzgsXzgsXzIsXzAsXzIsXzEsXzgsXzksXzksXzksX2EsXzksX2IsXzgsXzksXzksXzksXzgsXzAsXzAsXzAsXzEsXzgsXzksXzksXzksXzgsXzksXzksXzgsXzksXzksXzksXzgsXzAsXzEsXzEsXzAsXzksXzksXzksXzgsXzksXzgsXzgsXzgsXzksXzgsXzgsXzgsXzAsXzEsXzEsXzAsXzksXzksXzksXzgsXzksXzgsXzgsXzgsXzksXzgsXzgsXzgsCisgICAgICBfYSxfYixfYixfYSxfYixfOSxfYixfOCxfYixfYSxfYSxfYSxfMyxfMCxfMixfMCxfYSxfOSxfYixfOCxfOSxfOSxfOSxfOCxfYixfOCxfYSxfOCxfMSxfMCxfMCxfMCxfYixfOCxfYSxfOCxfOSxfOCxfOCxfOCxfYSxfOCxfYSxfOCxfMCxfMCxfMCxfMCxfOSxfOCxfOCxfOCxfOSxfOCxfOCxfOCxfOCxfOCxfOCxfOCxfMCxfMCxfMCxfMCxfYSxfOSxfYixfOCxfOSxfOSxfOSxfOCxfYixfOCxfYSxfOCxfMSxfMCxfMCxfMCxfOCxfOSxfOSxfOCxfOSxfOSxfOSxfOCxfOSxfOCxfOCxfOCxfMSxfMCxfMCxfMCxfOSxfOCxfOCxfOCxfOSxfOCxfOCxfOCxfOCxfOCxfOCxfOCxfMCxfMCxfMCxfMCxfOSxfOCxfOCxfOCxfOSxfOCxfOCxfOCxfOCxfOCxfOCxfOCxfMCxfMCxfMCxfMCwKKyAgICAgIF9jLF9mLF9kLF9lLF9iLF85LF9iLF84LF9kLF9lLF9jLF9lLF8zLF8wLF8yLF8wLF9lLF9kLF9mLF9jLF85LF85LF85LF84LF9mLF9jLF9lLF9jLF8xLF8wLF8wLF8wLF9mLF9jLF9lLF9jLF85LF84LF84LF84LF9lLF9jLF9lLF9jLF8wLF8wLF8wLF8wLF9kLF9jLF9jLF9jLF85LF84LF84LF84LF9jLF9jLF9jLF9jLF8wLF8wLF8wLF8wLF9hLF85LF9iLF84LF85LF85LF85LF84LF9iLF84LF9hLF84LF8xLF8wLF8wLF8wLF84LF85LF85LF84LF85LF85LF85LF84LF85LF84LF84LF84LF8xLF8wLF8wLF8wLF85LF84LF84LF84LF85LF84LF84LF84LF84LF84LF84LF84LF8wLF8wLF8wLF8wLF85LF84LF84LF84LF85LF84LF84LF84LF84LF84LF84LF84LF8wLF8wLF8wLF8wLAorICAgICAgX2IsX2EsX2EsX2EsXzMsXzAsXzIsXzAsXzIsXzIsXzIsXzIsXzIsXzAsXzIsXzAsX2IsXzgsX2EsXzgsXzEsXzAsXzAsXzAsXzIsXzAsXzIsXzAsXzAsXzAsXzAsXzAsX2EsXzgsX2EsXzgsXzAsXzAsXzAsXzAsXzIsXzAsXzIsXzAsXzAsXzAsXzAsXzAsXzgsXzgsXzgsXzgsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsX2IsXzgsX2EsXzgsXzEsXzAsXzAsXzAsXzIsXzAsXzIsXzAsXzAsXzAsXzAsXzAsXzksXzgsXzgsXzgsXzEsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzgsXzgsXzgsXzgsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzgsXzgsXzgsXzgsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsCisgICAgICBfYSxfOSxfYixfOCxfOSxfOSxfOSxfOCxfYixfOCxfYSxfOCxfMSxfMCxfMCxfMCxfOCxfOSxfOSxfOCxfOSxfOSxfOSxfOCxfOSxfOCxfOCxfOCxfMSxfMCxfMCxfMCxfOSxfOCxfOCxfOCxfOSxfOCxfOCxfOCxfOCxfOCxfOCxfOCxfMCxfMCxfMCxfMCxfOSxfOCxfOCxfOCxfOSxfOCxfOCxfOCxfOCxfOCxfOCxfOCxfMCxfMCxfMCxfMCxfOCxfOSxfOSxfOCxfOSxfOSxfOSxfOCxfOSxfOCxfOCxfOCxfMSxfMCxfMCxfMCxfOCxfOSxfOSxfOCxfOSxfOSxfOSxfOCxfOSxfOCxfOCxfOCxfMSxfMCxfMCxfMCxfOSxfOCxfOCxfOCxfOSxfOCxfOCxfOCxfOCxfOCxfOCxfOCxfMCxfMCxfMCxfMCxfOSxfOCxfOCxfOCxfOSxfOCxfOCxfOCxfOCxfOCxfOCxfOCxfMCxfMCxfMCxfMCwKKyAgICAgIF9iLF84LF9hLF84LF8xLF8wLF8wLF8wLF8yLF8wLF8yLF8wLF8wLF8wLF8wLF8wLF85LF84LF84LF84LF8xLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF84LF84LF84LF84LF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF84LF84LF84LF84LF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF85LF84LF84LF84LF8xLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF85LF84LF84LF84LF8xLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF84LF84LF84LF84LF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF84LF84LF84LF84LF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLAorICAgICAgX2MsX2MsX2MsX2QsXzgsX2IsXzksX2IsX2MsX2QsX2QsX2MsXzEsXzMsXzEsXzIsX2MsX2UsX2MsX2YsX2EsXzksX2IsXzksX2MsX2YsX2QsX2UsXzMsXzEsXzMsXzAsX2MsX2YsX2QsX2UsX2IsXzksX2IsXzgsX2QsX2UsX2MsX2UsXzMsXzAsXzIsXzAsX2UsX2QsX2YsX2MsXzksXzksXzksXzgsX2YsX2MsX2UsX2MsXzEsXzAsXzAsXzAsXzgsX2EsXzgsX2IsX2EsXzksX2IsXzksXzgsX2IsXzksX2EsXzMsXzEsXzMsXzAsX2EsXzgsX2EsXzksXzgsXzksXzksXzksX2EsXzksX2IsXzgsXzEsXzEsXzEsXzAsX2EsXzksX2IsXzgsXzksXzksXzksXzgsX2IsXzgsX2EsXzgsXzEsXzAsXzAsXzAsXzgsXzksXzksXzgsXzksXzksXzksXzgsXzksXzgsXzgsXzgsXzEsXzAsXzAsXzAsCisgICAgICBfOCxfYixfOSxfYSxfMyxfMyxfMyxfMixfMSxfMixfMCxfMixfMyxfMixfMixfMixfYSxfYixfYixfYSxfMyxfMSxfMyxfMCxfMyxfMixfMixfMixfMyxfMCxfMixfMCxfYixfYSxfYSxfYSxfMyxfMCxfMixfMCxfMixfMixfMixfMixfMixfMCxfMixfMCxfYixfOCxfYSxfOCxfMSxfMCxfMCxfMCxfMixfMCxfMixfMCxfMCxfMCxfMCxfMCxfYSxfYixfYixfYSxfMyxfMSxfMyxfMCxfMyxfMixfMixfMixfMyxfMCxfMixfMCxfYSxfOSxfYixfOCxfMSxfMSxfMSxfMCxfMyxfMCxfMixfMCxfMSxfMCxfMCxfMCxfYixfOCxfYSxfOCxfMSxfMCxfMCxfMCxfMixfMCxfMixfMCxfMCxfMCxfMCxfMCxfOSxfOCxfOCxfOCxfMSxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCwKKyAgICAgIF84LF9hLF84LF9iLF9hLF85LF9iLF85LF84LF9iLF85LF9hLF8zLF8xLF8zLF8wLF9hLF84LF9hLF85LF84LF85LF85LF85LF9hLF85LF9iLF84LF8xLF8xLF8xLF8wLF9hLF85LF9iLF84LF85LF85LF85LF84LF9iLF84LF9hLF84LF8xLF8wLF8wLF8wLF84LF85LF85LF84LF85LF85LF85LF84LF85LF84LF84LF84LF8xLF8wLF8wLF8wLF9hLF84LF9hLF85LF84LF85LF85LF85LF9hLF85LF9iLF84LF8xLF8xLF8xLF8wLF84LF84LF84LF85LF84LF85LF85LF85LF84LF85LF85LF84LF8xLF8xLF8xLF8wLF84LF85LF85LF84LF85LF85LF85LF84LF85LF84LF84LF84LF8xLF8wLF8wLF8wLF84LF85LF85LF84LF85LF85LF85LF84LF85LF84LF84LF84LF8xLF8wLF8wLF8wLAorICAgICAgX2EsX2IsX2IsX2EsXzMsXzEsXzMsXzAsXzMsXzIsXzIsXzIsXzMsXzAsXzIsXzAsX2EsXzksX2IsXzgsXzEsXzEsXzEsXzAsXzMsXzAsXzIsXzAsXzEsXzAsXzAsXzAsX2IsXzgsX2EsXzgsXzEsXzAsXzAsXzAsXzIsXzAsXzIsXzAsXzAsXzAsXzAsXzAsXzksXzgsXzgsXzgsXzEsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsX2EsXzksX2IsXzgsXzEsXzEsXzEsXzAsXzMsXzAsXzIsXzAsXzEsXzAsXzAsXzAsXzgsXzksXzksXzgsXzEsXzEsXzEsXzAsXzEsXzAsXzAsXzAsXzEsXzAsXzAsXzAsXzksXzgsXzgsXzgsXzEsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzksXzgsXzgsXzgsXzEsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsCisgICAgICBfYyxfZixfZCxfZSxfMyxfMSxfMyxfMCxfNSxfNixfNCxfNixfMyxfMCxfMixfMCxfZSxfZCxfZixfYyxfMSxfMSxfMSxfMCxfNyxfNCxfNixfNCxfMSxfMCxfMCxfMCxfZixfYyxfZSxfYyxfMSxfMCxfMCxfMCxfNixfNCxfNixfNCxfMCxfMCxfMCxfMCxfZCxfYyxfYyxfYyxfMSxfMCxfMCxfMCxfNCxfNCxfNCxfNCxfMCxfMCxfMCxfMCxfYSxfOSxfYixfOCxfMSxfMSxfMSxfMCxfMyxfMCxfMixfMCxfMSxfMCxfMCxfMCxfOCxfOSxfOSxfOCxfMSxfMSxfMSxfMCxfMSxfMCxfMCxfMCxfMSxfMCxfMCxfMCxfOSxfOCxfOCxfOCxfMSxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfOSxfOCxfOCxfOCxfMSxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCwKKyAgICAgIF8zLF8yLF8yLF8yLF8zLF8wLF8yLF8wLF8yLF8yLF8yLF8yLF8yLF8wLF8yLF8wLF8zLF8wLF8yLF8wLF8xLF8wLF8wLF8wLF8yLF8wLF8yLF8wLF8wLF8wLF8wLF8wLF8yLF8wLF8yLF8wLF8wLF8wLF8wLF8wLF8yLF8wLF8yLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8zLF8wLF8yLF8wLF8xLF8wLF8wLF8wLF8yLF8wLF8yLF8wLF8wLF8wLF8wLF8wLF8xLF8wLF8wLF8wLF8xLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLAorICAgICAgX2EsXzksX2IsXzgsXzEsXzEsXzEsXzAsXzMsXzAsXzIsXzAsXzEsXzAsXzAsXzAsXzgsXzksXzksXzgsXzEsXzEsXzEsXzAsXzEsXzAsXzAsXzAsXzEsXzAsXzAsXzAsXzksXzgsXzgsXzgsXzEsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzksXzgsXzgsXzgsXzEsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzgsXzksXzksXzgsXzEsXzEsXzEsXzAsXzEsXzAsXzAsXzAsXzEsXzAsXzAsXzAsXzgsXzksXzksXzgsXzEsXzEsXzEsXzAsXzEsXzAsXzAsXzAsXzEsXzAsXzAsXzAsXzksXzgsXzgsXzgsXzEsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzksXzgsXzgsXzgsXzEsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsCisgICAgICBfMyxfMCxfMixfMCxfMSxfMCxfMCxfMCxfMixfMCxfMixfMCxfMCxfMCxfMCxfMCxfMSxfMCxfMCxfMCxfMSxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMSxfMCxfMCxfMCxfMSxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMSxfMCxfMCxfMCxfMSxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCwKKyAgICAgIF84LF84LF84LF85LF84LF9iLF85LF9iLF84LF85LF85LF84LF8xLF8zLF8xLF8yLF84LF9hLF84LF9iLF9hLF85LF9iLF85LF84LF9iLF85LF9hLF8zLF8xLF8zLF8wLF84LF9iLF85LF9hLF9iLF85LF9iLF84LF85LF9hLF84LF9hLF8zLF8wLF8yLF8wLF9hLF85LF9iLF84LF85LF85LF85LF84LF9iLF84LF9hLF84LF8xLF8wLF8wLF8wLF84LF9hLF84LF9iLF9hLF85LF9iLF85LF84LF9iLF85LF9hLF8zLF8xLF8zLF8wLF9hLF84LF9hLF85LF84LF85LF85LF85LF9hLF85LF9iLF84LF8xLF8xLF8xLF8wLF9hLF85LF9iLF84LF85LF85LF85LF84LF9iLF84LF9hLF84LF8xLF8wLF8wLF8wLF84LF85LF85LF84LF85LF85LF85LF84LF85LF84LF84LF84LF8xLF8wLF8wLF8wLAorICAgICAgXzgsX2IsXzksX2EsXzMsXzMsXzMsXzIsXzEsXzIsXzAsXzIsXzMsXzIsXzIsXzIsX2EsX2IsX2IsX2EsXzMsXzEsXzMsXzAsXzMsXzIsXzIsXzIsXzMsXzAsXzIsXzAsX2IsX2EsX2EsX2EsXzMsXzAsXzIsXzAsXzIsXzIsXzIsXzIsXzIsXzAsXzIsXzAsX2IsXzgsX2EsXzgsXzEsXzAsXzAsXzAsXzIsXzAsXzIsXzAsXzAsXzAsXzAsXzAsX2EsX2IsX2IsX2EsXzMsXzEsXzMsXzAsXzMsXzIsXzIsXzIsXzMsXzAsXzIsXzAsX2EsXzksX2IsXzgsXzEsXzEsXzEsXzAsXzMsXzAsXzIsXzAsXzEsXzAsXzAsXzAsX2IsXzgsX2EsXzgsXzEsXzAsXzAsXzAsXzIsXzAsXzIsXzAsXzAsXzAsXzAsXzAsXzksXzgsXzgsXzgsXzEsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsCisgICAgICBfOCxfYSxfOCxfYixfYSxfOSxfYixfOSxfOCxfYixfOSxfYSxfMyxfMSxfMyxfMCxfYSxfOCxfYSxfOSxfOCxfOSxfOSxfOSxfYSxfOSxfYixfOCxfMSxfMSxfMSxfMCxfYSxfOSxfYixfOCxfOSxfOSxfOSxfOCxfYixfOCxfYSxfOCxfMSxfMCxfMCxfMCxfOCxfOSxfOSxfOCxfOSxfOSxfOSxfOCxfOSxfOCxfOCxfOCxfMSxfMCxfMCxfMCxfYSxfOCxfYSxfOSxfOCxfOSxfOSxfOSxfYSxfOSxfYixfOCxfMSxfMSxfMSxfMCxfOCxfOCxfOCxfOSxfOCxfOSxfOSxfOSxfOCxfOSxfOSxfOCxfMSxfMSxfMSxfMCxfOCxfOSxfOSxfOCxfOSxfOSxfOSxfOCxfOSxfOCxfOCxfOCxfMSxfMCxfMCxfMCxfOCxfOSxfOSxfOCxfOSxfOSxfOSxfOCxfOSxfOCxfOCxfOCxfMSxfMCxfMCxfMCwKKyAgICAgIF9hLF9iLF9iLF9hLF8zLF8xLF8zLF8wLF8zLF8yLF8yLF8yLF8zLF8wLF8yLF8wLF9hLF85LF9iLF84LF8xLF8xLF8xLF8wLF8zLF8wLF8yLF8wLF8xLF8wLF8wLF8wLF9iLF84LF9hLF84LF8xLF8wLF8wLF8wLF8yLF8wLF8yLF8wLF8wLF8wLF8wLF8wLF85LF84LF84LF84LF8xLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF9hLF85LF9iLF84LF8xLF8xLF8xLF8wLF8zLF8wLF8yLF8wLF8xLF8wLF8wLF8wLF84LF85LF85LF84LF8xLF8xLF8xLF8wLF8xLF8wLF8wLF8wLF8xLF8wLF8wLF8wLF85LF84LF84LF84LF8xLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF85LF84LF84LF84LF8xLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLAorICAgICAgXzgsX2IsXzksX2EsXzMsXzEsXzMsXzAsXzEsXzIsXzAsXzIsXzMsXzAsXzIsXzAsX2EsXzksX2IsXzgsXzEsXzEsXzEsXzAsXzMsXzAsXzIsXzAsXzEsXzAsXzAsXzAsX2IsXzgsX2EsXzgsXzEsXzAsXzAsXzAsXzIsXzAsXzIsXzAsXzAsXzAsXzAsXzAsXzksXzgsXzgsXzgsXzEsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsX2EsXzksX2IsXzgsXzEsXzEsXzEsXzAsXzMsXzAsXzIsXzAsXzEsXzAsXzAsXzAsXzgsXzksXzksXzgsXzEsXzEsXzEsXzAsXzEsXzAsXzAsXzAsXzEsXzAsXzAsXzAsXzksXzgsXzgsXzgsXzEsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzksXzgsXzgsXzgsXzEsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsCisgICAgICBfMyxfMixfMixfMixfMyxfMCxfMixfMCxfMixfMixfMixfMixfMixfMCxfMixfMCxfMyxfMCxfMixfMCxfMSxfMCxfMCxfMCxfMixfMCxfMixfMCxfMCxfMCxfMCxfMCxfMixfMCxfMixfMCxfMCxfMCxfMCxfMCxfMixfMCxfMixfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMyxfMCxfMixfMCxfMSxfMCxfMCxfMCxfMixfMCxfMixfMCxfMCxfMCxfMCxfMCxfMSxfMCxfMCxfMCxfMSxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCwKKyAgICAgIF9hLF85LF9iLF84LF8xLF8xLF8xLF8wLF8zLF8wLF8yLF8wLF8xLF8wLF8wLF8wLF84LF85LF85LF84LF8xLF8xLF8xLF8wLF8xLF8wLF8wLF8wLF8xLF8wLF8wLF8wLF85LF84LF84LF84LF8xLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF85LF84LF84LF84LF8xLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF84LF85LF85LF84LF8xLF8xLF8xLF8wLF8xLF8wLF8wLF8wLF8xLF8wLF8wLF8wLF84LF85LF85LF84LF8xLF8xLF8xLF8wLF8xLF8wLF8wLF8wLF8xLF8wLF8wLF8wLF85LF84LF84LF84LF8xLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF85LF84LF84LF84LF8xLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLAorICAgICAgXzMsXzAsXzIsXzAsXzEsXzAsXzAsXzAsXzIsXzAsXzIsXzAsXzAsXzAsXzAsXzAsXzEsXzAsXzAsXzAsXzEsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzEsXzAsXzAsXzAsXzEsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzEsXzAsXzAsXzAsXzEsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsCisgICAgICBfMCxfMCxfMCxfMSxfOCxfOSxfOSxfOSxfOCxfOSxfOSxfOCxfMSxfMSxfMSxfMCxfMCxfMCxfMCxfMSxfOCxfYixfOSxfYixfOCxfOSxfOSxfOCxfMSxfMyxfMSxfMixfMCxfMSxfMSxfMCxfOSxfYixfOSxfYSxfOSxfOCxfOCxfOCxfMSxfMixfMCxfMixfMCxfMyxfMSxfMixfYixfOSxfYixfOCxfOSxfYSxfOCxfYSxfMyxfMCxfMixfMCxfMCxfMCxfMCxfMSxfYyxfZixfZCxfZixfOCxfOSxfOSxfOCxfNSxfNyxfNSxfNixfMCxfMixfMCxfMyxfZSxfZCxfZixfZCxfOCxfYixfOSxfYSxfNyxfNSxfNyxfNCxfMCxfMyxfMSxfMixfZixfZCxfZixfYyxfOSxfYSxfOCxfYSxfNyxfNCxfNixfNCxfMixfMSxfMyxfMCxfZCxfZCxfZCxfYyxfYixfOCxfYSxfOCxfNSxfNCxfNCxfNCwKKyAgICAgIF84LF85LF85LF84LF81LF83LF81LF82LF8xLF8wLF8wLF8wLF81LF82LF80LF82LF84LF9iLF85LF9hLF83LF83LF83LF82LF8xLF8yLF8wLF8yLF83LF82LF82LF82LF85LF9hLF84LF9hLF83LF82LF82LF82LF8wLF8yLF8wLF8yLF82LF82LF82LF82LF9iLF9hLF9hLF9hLF83LF80LF82LF80LF8yLF8yLF8yLF8yLF82LF80LF82LF80LF9jLF9mLF9kLF9lLF8zLF8zLF8zLF8yLF81LF82LF80LF82LF8zLF8yLF8yLF8yLF9lLF9mLF9mLF9lLF8zLF8xLF8zLF8wLF83LF82LF82LF82LF8zLF8wLF8yLF8wLF9mLF9lLF9lLF9lLF8zLF8wLF8yLF8wLF82LF82LF82LF82LF8yLF8wLF8yLF8wLF9mLF9jLF9lLF9jLF8xLF8wLF8wLF8wLF82LF80LF82LF80LF8wLF8wLF8wLF8wLAorICAgICAgXzAsXzAsXzAsXzEsX2MsX2YsX2QsX2YsXzgsXzksXzksXzgsXzUsXzcsXzUsXzYsXzAsXzIsXzAsXzMsX2UsX2QsX2YsX2QsXzgsX2IsXzksX2EsXzcsXzUsXzcsXzQsXzAsXzMsXzEsXzIsX2YsX2QsX2YsX2MsXzksX2EsXzgsX2EsXzcsXzQsXzYsXzQsXzIsXzEsXzMsXzAsX2QsX2QsX2QsX2MsX2IsXzgsX2EsXzgsXzUsXzQsXzQsXzQsXzQsXzYsXzQsXzcsX2EsXzksX2IsXzksX2MsX2YsX2QsX2UsXzMsXzEsXzMsXzAsXzYsXzQsXzYsXzUsXzgsXzksXzksXzksX2UsX2QsX2YsX2MsXzEsXzEsXzEsXzAsXzYsXzUsXzcsXzQsXzksXzksXzksXzgsX2YsX2MsX2UsX2MsXzEsXzAsXzAsXzAsXzQsXzUsXzUsXzQsXzksXzksXzksXzgsX2QsX2MsX2MsX2MsXzEsXzAsXzAsXzAsCisgICAgICBfYyxfZixfZCxfZSxfMyxfMyxfMyxfMixfNSxfNixfNCxfNixfMyxfMixfMixfMixfZSxfZixfZixfZSxfMyxfMSxfMyxfMCxfNyxfNixfNixfNixfMyxfMCxfMixfMCxfZixfZSxfZSxfZSxfMyxfMCxfMixfMCxfNixfNixfNixfNixfMixfMCxfMixfMCxfZixfYyxfZSxfYyxfMSxfMCxfMCxfMCxfNixfNCxfNixfNCxfMCxfMCxfMCxfMCxfYSxfYixfYixfYSxfMyxfMSxfMyxfMCxfMyxfMixfMixfMixfMyxfMCxfMixfMCxfYSxfOSxfYixfOCxfMSxfMSxfMSxfMCxfMyxfMCxfMixfMCxfMSxfMCxfMCxfMCxfYixfOCxfYSxfOCxfMSxfMCxfMCxfMCxfMixfMCxfMixfMCxfMCxfMCxfMCxfMCxfOSxfOCxfOCxfOCxfMSxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCwKKyAgICAgIF84LF85LF85LF84LF81LF83LF81LF82LF8xLF8wLF8wLF8wLF81LF82LF80LF82LF84LF9iLF85LF9hLF83LF81LF83LF80LF8xLF8yLF8wLF8yLF83LF80LF82LF80LF85LF9hLF84LF9hLF83LF80LF82LF80LF8wLF8yLF8wLF8yLF82LF80LF82LF80LF9iLF84LF9hLF84LF81LF80LF80LF80LF8yLF8wLF8yLF8wLF80LF80LF80LF80LF9jLF9mLF9kLF9lLF83LF81LF83LF80LF81LF82LF80LF82LF83LF80LF82LF80LF9lLF9kLF9mLF9jLF81LF81LF81LF80LF83LF80LF82LF80LF81LF80LF80LF80LF9mLF9jLF9lLF9jLF81LF80LF80LF80LF82LF80LF82LF80LF80LF80LF80LF80LF9kLF9jLF9jLF9jLF81LF80LF80LF80LF80LF80LF80LF80LF80LF80LF80LF80LAorICAgICAgXzUsXzYsXzQsXzYsXzcsXzYsXzYsXzYsXzQsXzYsXzQsXzYsXzYsXzYsXzYsXzYsXzcsXzYsXzYsXzYsXzcsXzQsXzYsXzQsXzYsXzYsXzYsXzYsXzYsXzQsXzYsXzQsXzYsXzYsXzYsXzYsXzYsXzQsXzYsXzQsXzYsXzYsXzYsXzYsXzYsXzQsXzYsXzQsXzYsXzQsXzYsXzQsXzQsXzQsXzQsXzQsXzYsXzQsXzYsXzQsXzQsXzQsXzQsXzQsXzcsXzYsXzYsXzYsXzMsXzAsXzIsXzAsXzYsXzYsXzYsXzYsXzIsXzAsXzIsXzAsXzcsXzQsXzYsXzQsXzEsXzAsXzAsXzAsXzYsXzQsXzYsXzQsXzAsXzAsXzAsXzAsXzYsXzQsXzYsXzQsXzAsXzAsXzAsXzAsXzYsXzQsXzYsXzQsXzAsXzAsXzAsXzAsXzQsXzQsXzQsXzQsXzAsXzAsXzAsXzAsXzQsXzQsXzQsXzQsXzAsXzAsXzAsXzAsCisgICAgICBfYyxfZixfZCxfZSxfNyxfNSxfNyxfNCxfNSxfNixfNCxfNixfNyxfNCxfNixfNCxfZSxfZCxfZixfYyxfNSxfNSxfNSxfNCxfNyxfNCxfNixfNCxfNSxfNCxfNCxfNCxfZixfYyxfZSxfYyxfNSxfNCxfNCxfNCxfNixfNCxfNixfNCxfNCxfNCxfNCxfNCxfZCxfYyxfYyxfYyxfNSxfNCxfNCxfNCxfNCxfNCxfNCxfNCxfNCxfNCxfNCxfNCxfZSxfZCxfZixfYyxfMSxfMSxfMSxfMCxfNyxfNCxfNixfNCxfMSxfMCxfMCxfMCxfYyxfZCxfZCxfYyxfMSxfMSxfMSxfMCxfNSxfNCxfNCxfNCxfMSxfMCxfMCxfMCxfZCxfYyxfYyxfYyxfMSxfMCxfMCxfMCxfNCxfNCxfNCxfNCxfMCxfMCxfMCxfMCxfZCxfYyxfYyxfYyxfMSxfMCxfMCxfMCxfNCxfNCxfNCxfNCxfMCxfMCxfMCxfMCwKKyAgICAgIF83LF82LF82LF82LF8zLF8wLF8yLF8wLF82LF82LF82LF82LF8yLF8wLF8yLF8wLF83LF80LF82LF80LF8xLF8wLF8wLF8wLF82LF80LF82LF80LF8wLF8wLF8wLF8wLF82LF80LF82LF80LF8wLF8wLF8wLF8wLF82LF80LF82LF80LF8wLF8wLF8wLF8wLF80LF80LF80LF80LF8wLF8wLF8wLF8wLF80LF80LF80LF80LF8wLF8wLF8wLF8wLF8zLF8wLF8yLF8wLF8xLF8wLF8wLF8wLF8yLF8wLF8yLF8wLF8wLF8wLF8wLF8wLF8xLF8wLF8wLF8wLF8xLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLAorICAgICAgXzAsXzAsXzAsXzEsX2MsX2QsX2QsX2QsXzgsXzksXzksXzgsXzUsXzUsXzUsXzQsXzAsXzAsXzAsXzEsX2MsX2YsX2QsX2YsXzgsXzksXzksXzgsXzUsXzcsXzUsXzYsXzAsXzEsXzEsXzAsX2QsX2YsX2QsX2UsXzksXzgsXzgsXzgsXzUsXzYsXzQsXzYsXzAsXzMsXzEsXzIsX2YsX2QsX2YsX2MsXzksX2EsXzgsX2EsXzcsXzQsXzYsXzQsXzQsXzQsXzQsXzUsXzgsX2IsXzksX2IsX2MsX2QsX2QsX2MsXzEsXzMsXzEsXzIsXzQsXzYsXzQsXzcsX2EsXzksX2IsXzksX2MsX2YsX2QsX2UsXzMsXzEsXzMsXzAsXzQsXzcsXzUsXzYsX2IsXzksX2IsXzgsX2QsX2UsX2MsX2UsXzMsXzAsXzIsXzAsXzYsXzUsXzcsXzQsXzksXzksXzksXzgsX2YsX2MsX2UsX2MsXzEsXzAsXzAsXzAsCisgICAgICBfYyxfZCxfZCxfYyxfMSxfMyxfMSxfMixfNSxfNCxfNCxfNCxfMSxfMixfMCxfMixfYyxfZixfZCxfZSxfMyxfMyxfMyxfMixfNSxfNixfNCxfNixfMyxfMixfMixfMixfZCxfZSxfYyxfZSxfMyxfMixfMixfMixfNCxfNixfNCxfNixfMixfMixfMixfMixfZixfZSxfZSxfZSxfMyxfMCxfMixfMCxfNixfNixfNixfNixfMixfMCxfMixfMCxfOCxfYixfOSxfYSxfMyxfMyxfMyxfMixfMSxfMixfMCxfMixfMyxfMixfMixfMixfYSxfYixfYixfYSxfMyxfMSxfMyxfMCxfMyxfMixfMixfMixfMyxfMCxfMixfMCxfYixfYSxfYSxfYSxfMyxfMCxfMixfMCxfMixfMixfMixfMixfMixfMCxfMixfMCxfYixfOCxfYSxfOCxfMSxfMCxfMCxfMCxfMixfMCxfMixfMCxfMCxfMCxfMCxfMCwKKyAgICAgIF80LF80LF80LF81LF84LF9iLF85LF9iLF9jLF9kLF9kLF9jLF8xLF8zLF8xLF8yLF80LF82LF80LF83LF9hLF85LF9iLF85LF9jLF9mLF9kLF9lLF8zLF8xLF8zLF8wLF80LF83LF81LF82LF9iLF85LF9iLF84LF9kLF9lLF9jLF9lLF8zLF8wLF8yLF8wLF82LF81LF83LF80LF85LF85LF85LF84LF9mLF9jLF9lLF9jLF8xLF8wLF8wLF8wLF8wLF8yLF8wLF8zLF9hLF85LF9iLF85LF84LF9iLF85LF9hLF8zLF8xLF8zLF8wLF8yLF8wLF8yLF8xLF84LF85LF85LF85LF9hLF85LF9iLF84LF8xLF8xLF8xLF8wLF8yLF8xLF8zLF8wLF85LF85LF85LF84LF9iLF84LF9hLF84LF8xLF8wLF8wLF8wLF8wLF8xLF8xLF8wLF85LF85LF85LF84LF85LF84LF84LF84LF8xLF8wLF8wLF8wLAorICAgICAgXzgsX2IsXzksX2EsXzMsXzMsXzMsXzIsXzEsXzIsXzAsXzIsXzMsXzIsXzIsXzIsX2EsX2IsX2IsX2EsXzMsXzEsXzMsXzAsXzMsXzIsXzIsXzIsXzMsXzAsXzIsXzAsX2IsX2EsX2EsX2EsXzMsXzAsXzIsXzAsXzIsXzIsXzIsXzIsXzIsXzAsXzIsXzAsX2IsXzgsX2EsXzgsXzEsXzAsXzAsXzAsXzIsXzAsXzIsXzAsXzAsXzAsXzAsXzAsX2EsX2IsX2IsX2EsXzMsXzEsXzMsXzAsXzMsXzIsXzIsXzIsXzMsXzAsXzIsXzAsX2EsXzksX2IsXzgsXzEsXzEsXzEsXzAsXzMsXzAsXzIsXzAsXzEsXzAsXzAsXzAsX2IsXzgsX2EsXzgsXzEsXzAsXzAsXzAsXzIsXzAsXzIsXzAsXzAsXzAsXzAsXzAsXzksXzgsXzgsXzgsXzEsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsCisgICAgICBfYyxfZCxfZCxfYyxfNSxfNyxfNSxfNixfNSxfNCxfNCxfNCxfNSxfNixfNCxfNixfYyxfZixfZCxfZSxfNyxfNSxfNyxfNCxfNSxfNixfNCxfNixfNyxfNCxfNixfNCxfZCxfZSxfYyxfZSxfNyxfNCxfNixfNCxfNCxfNixfNCxfNixfNixfNCxfNixfNCxfZixfYyxfZSxfYyxfNSxfNCxfNCxfNCxfNixfNCxfNixfNCxfNCxfNCxfNCxfNCxfYyxfZixfZCxfZSxfMyxfMSxfMyxfMCxfNSxfNixfNCxfNixfMyxfMCxfMixfMCxfZSxfZCxfZixfYyxfMSxfMSxfMSxfMCxfNyxfNCxfNixfNCxfMSxfMCxfMCxfMCxfZixfYyxfZSxfYyxfMSxfMCxfMCxfMCxfNixfNCxfNixfNCxfMCxfMCxfMCxfMCxfZCxfYyxfYyxfYyxfMSxfMCxfMCxfMCxfNCxfNCxfNCxfNCxfMCxfMCxfMCxfMCwKKyAgICAgIF81LF82LF80LF82LF8zLF8yLF8yLF8yLF80LF82LF80LF82LF8yLF8yLF8yLF8yLF83LF82LF82LF82LF8zLF8wLF8yLF8wLF82LF82LF82LF82LF8yLF8wLF8yLF8wLF82LF82LF82LF82LF8yLF8wLF8yLF8wLF82LF82LF82LF82LF8yLF8wLF8yLF8wLF82LF80LF82LF80LF8wLF8wLF8wLF8wLF82LF80LF82LF80LF8wLF8wLF8wLF8wLF8zLF8yLF8yLF8yLF8zLF8wLF8yLF8wLF8yLF8yLF8yLF8yLF8yLF8wLF8yLF8wLF8zLF8wLF8yLF8wLF8xLF8wLF8wLF8wLF8yLF8wLF8yLF8wLF8wLF8wLF8wLF8wLF8yLF8wLF8yLF8wLF8wLF8wLF8wLF8wLF8yLF8wLF8yLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLAorICAgICAgX2MsX2YsX2QsX2UsXzMsXzEsXzMsXzAsXzUsXzYsXzQsXzYsXzMsXzAsXzIsXzAsX2UsX2QsX2YsX2MsXzEsXzEsXzEsXzAsXzcsXzQsXzYsXzQsXzEsXzAsXzAsXzAsX2YsX2MsX2UsX2MsXzEsXzAsXzAsXzAsXzYsXzQsXzYsXzQsXzAsXzAsXzAsXzAsX2QsX2MsX2MsX2MsXzEsXzAsXzAsXzAsXzQsXzQsXzQsXzQsXzAsXzAsXzAsXzAsX2EsXzksX2IsXzgsXzEsXzEsXzEsXzAsXzMsXzAsXzIsXzAsXzEsXzAsXzAsXzAsXzgsXzksXzksXzgsXzEsXzEsXzEsXzAsXzEsXzAsXzAsXzAsXzEsXzAsXzAsXzAsXzksXzgsXzgsXzgsXzEsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzksXzgsXzgsXzgsXzEsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsCisgICAgICBfMyxfMixfMixfMixfMyxfMCxfMixfMCxfMixfMixfMixfMixfMixfMCxfMixfMCxfMyxfMCxfMixfMCxfMSxfMCxfMCxfMCxfMixfMCxfMixfMCxfMCxfMCxfMCxfMCxfMixfMCxfMixfMCxfMCxfMCxfMCxfMCxfMixfMCxfMixfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMyxfMCxfMixfMCxfMSxfMCxfMCxfMCxfMixfMCxfMixfMCxfMCxfMCxfMCxfMCxfMSxfMCxfMCxfMCxfMSxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCwKKyAgICAgIF84LF84LF84LF85LF80LF81LF81LF81LF8wLF8xLF8xLF8wLF81LF81LF81LF80LF84LF84LF84LF85LF80LF83LF81LF83LF8wLF8xLF8xLF8wLF81LF83LF81LF82LF84LF85LF85LF84LF81LF83LF81LF82LF8xLF8wLF8wLF8wLF81LF82LF80LF82LF84LF9iLF85LF9hLF83LF81LF83LF80LF8xLF8yLF8wLF8yLF83LF80LF82LF80LF9jLF9jLF9jLF9kLF8wLF8zLF8xLF8zLF80LF81LF81LF80LF8xLF8zLF8xLF8yLF9jLF9lLF9jLF9mLF8yLF8xLF8zLF8xLF80LF83LF81LF82LF8zLF8xLF8zLF8wLF9jLF9mLF9kLF9lLF8zLF8xLF8zLF8wLF81LF82LF80LF82LF8zLF8wLF8yLF8wLF9lLF9kLF9mLF9jLF8xLF8xLF8xLF8wLF83LF80LF82LF80LF8xLF8wLF8wLF8wLAorICAgICAgXzQsXzUsXzUsXzQsXzEsXzMsXzEsXzIsXzUsXzQsXzQsXzQsXzEsXzIsXzAsXzIsXzQsXzcsXzUsXzYsXzMsXzMsXzMsXzIsXzUsXzYsXzQsXzYsXzMsXzIsXzIsXzIsXzUsXzYsXzQsXzYsXzMsXzIsXzIsXzIsXzQsXzYsXzQsXzYsXzIsXzIsXzIsXzIsXzcsXzYsXzYsXzYsXzMsXzAsXzIsXzAsXzYsXzYsXzYsXzYsXzIsXzAsXzIsXzAsXzAsXzMsXzEsXzIsXzMsXzMsXzMsXzIsXzEsXzIsXzAsXzIsXzMsXzIsXzIsXzIsXzIsXzMsXzMsXzIsXzMsXzEsXzMsXzAsXzMsXzIsXzIsXzIsXzMsXzAsXzIsXzAsXzMsXzIsXzIsXzIsXzMsXzAsXzIsXzAsXzIsXzIsXzIsXzIsXzIsXzAsXzIsXzAsXzMsXzAsXzIsXzAsXzEsXzAsXzAsXzAsXzIsXzAsXzIsXzAsXzAsXzAsXzAsXzAsCisgICAgICBfYyxfYyxfYyxfZCxfMCxfMyxfMSxfMyxfNCxfNSxfNSxfNCxfMSxfMyxfMSxfMixfYyxfZSxfYyxfZixfMixfMSxfMyxfMSxfNCxfNyxfNSxfNixfMyxfMSxfMyxfMCxfYyxfZixfZCxfZSxfMyxfMSxfMyxfMCxfNSxfNixfNCxfNixfMyxfMCxfMixfMCxfZSxfZCxfZixfYyxfMSxfMSxfMSxfMCxfNyxfNCxfNixfNCxfMSxfMCxfMCxfMCxfOCxfYSxfOCxfYixfMixfMSxfMyxfMSxfMCxfMyxfMSxfMixfMyxfMSxfMyxfMCxfYSxfOCxfYSxfOSxfMCxfMSxfMSxfMSxfMixfMSxfMyxfMCxfMSxfMSxfMSxfMCxfYSxfOSxfYixfOCxfMSxfMSxfMSxfMCxfMyxfMCxfMixfMCxfMSxfMCxfMCxfMCxfOCxfOSxfOSxfOCxfMSxfMSxfMSxfMCxfMSxfMCxfMCxfMCxfMSxfMCxfMCxfMCwKKyAgICAgIF8wLF8zLF8xLF8yLF8zLF8zLF8zLF8yLF8xLF8yLF8wLF8yLF8zLF8yLF8yLF8yLF8yLF8zLF8zLF8yLF8zLF8xLF8zLF8wLF8zLF8yLF8yLF8yLF8zLF8wLF8yLF8wLF8zLF8yLF8yLF8yLF8zLF8wLF8yLF8wLF8yLF8yLF8yLF8yLF8yLF8wLF8yLF8wLF8zLF8wLF8yLF8wLF8xLF8wLF8wLF8wLF8yLF8wLF8yLF8wLF8wLF8wLF8wLF8wLF8yLF8zLF8zLF8yLF8zLF8xLF8zLF8wLF8zLF8yLF8yLF8yLF8zLF8wLF8yLF8wLF8yLF8xLF8zLF8wLF8xLF8xLF8xLF8wLF8zLF8wLF8yLF8wLF8xLF8wLF8wLF8wLF8zLF8wLF8yLF8wLF8xLF8wLF8wLF8wLF8yLF8wLF8yLF8wLF8wLF8wLF8wLF8wLF8xLF8wLF8wLF8wLF8xLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLAorICAgICAgXzQsXzUsXzUsXzQsXzUsXzcsXzUsXzYsXzUsXzQsXzQsXzQsXzUsXzYsXzQsXzYsXzQsXzcsXzUsXzYsXzcsXzUsXzcsXzQsXzUsXzYsXzQsXzYsXzcsXzQsXzYsXzQsXzUsXzYsXzQsXzYsXzcsXzQsXzYsXzQsXzQsXzYsXzQsXzYsXzYsXzQsXzYsXzQsXzcsXzQsXzYsXzQsXzUsXzQsXzQsXzQsXzYsXzQsXzYsXzQsXzQsXzQsXzQsXzQsXzQsXzcsXzUsXzYsXzMsXzEsXzMsXzAsXzUsXzYsXzQsXzYsXzMsXzAsXzIsXzAsXzYsXzUsXzcsXzQsXzEsXzEsXzEsXzAsXzcsXzQsXzYsXzQsXzEsXzAsXzAsXzAsXzcsXzQsXzYsXzQsXzEsXzAsXzAsXzAsXzYsXzQsXzYsXzQsXzAsXzAsXzAsXzAsXzUsXzQsXzQsXzQsXzEsXzAsXzAsXzAsXzQsXzQsXzQsXzQsXzAsXzAsXzAsXzAsCisgICAgICBfNSxfNixfNCxfNixfMyxfMixfMixfMixfNCxfNixfNCxfNixfMixfMixfMixfMixfNyxfNixfNixfNixfMyxfMCxfMixfMCxfNixfNixfNixfNixfMixfMCxfMixfMCxfNixfNixfNixfNixfMixfMCxfMixfMCxfNixfNixfNixfNixfMixfMCxfMixfMCxfNixfNCxfNixfNCxfMCxfMCxfMCxfMCxfNixfNCxfNixfNCxfMCxfMCxfMCxfMCxfMyxfMixfMixfMixfMyxfMCxfMixfMCxfMixfMixfMixfMixfMixfMCxfMixfMCxfMyxfMCxfMixfMCxfMSxfMCxfMCxfMCxfMixfMCxfMixfMCxfMCxfMCxfMCxfMCxfMixfMCxfMixfMCxfMCxfMCxfMCxfMCxfMixfMCxfMixfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCwKKyAgICAgIF80LF83LF81LF82LF8zLF8xLF8zLF8wLF81LF82LF80LF82LF8zLF8wLF8yLF8wLF82LF81LF83LF80LF8xLF8xLF8xLF8wLF83LF80LF82LF80LF8xLF8wLF8wLF8wLF83LF80LF82LF80LF8xLF8wLF8wLF8wLF82LF80LF82LF80LF8wLF8wLF8wLF8wLF81LF80LF80LF80LF8xLF8wLF8wLF8wLF80LF80LF80LF80LF8wLF8wLF8wLF8wLF8yLF8xLF8zLF8wLF8xLF8xLF8xLF8wLF8zLF8wLF8yLF8wLF8xLF8wLF8wLF8wLF8wLF8xLF8xLF8wLF8xLF8xLF8xLF8wLF8xLF8wLF8wLF8wLF8xLF8wLF8wLF8wLF8xLF8wLF8wLF8wLF8xLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8xLF8wLF8wLF8wLF8xLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLAorICAgICAgXzMsXzIsXzIsXzIsXzMsXzAsXzIsXzAsXzIsXzIsXzIsXzIsXzIsXzAsXzIsXzAsXzMsXzAsXzIsXzAsXzEsXzAsXzAsXzAsXzIsXzAsXzIsXzAsXzAsXzAsXzAsXzAsXzIsXzAsXzIsXzAsXzAsXzAsXzAsXzAsXzIsXzAsXzIsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzMsXzAsXzIsXzAsXzEsXzAsXzAsXzAsXzIsXzAsXzIsXzAsXzAsXzAsXzAsXzAsXzEsXzAsXzAsXzAsXzEsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsCisgICAgICBfYyxfYyxfYyxfZCxfMCxfMSxfMSxfMSxfNCxfNSxfNSxfNCxfMSxfMSxfMSxfMCxfYyxfYyxfYyxfZCxfMCxfMyxfMSxfMyxfNCxfNSxfNSxfNCxfMSxfMyxfMSxfMixfYyxfZCxfZCxfYyxfMSxfMyxfMSxfMixfNSxfNCxfNCxfNCxfMSxfMixfMCxfMixfYyxfZixfZCxfZSxfMyxfMSxfMyxfMCxfNSxfNixfNCxfNixfMyxfMCxfMixfMCxfOCxfOCxfOCxfOSxfMCxfMyxfMSxfMyxfMCxfMSxfMSxfMCxfMSxfMyxfMSxfMixfOCxfYSxfOCxfYixfMixfMSxfMyxfMSxfMCxfMyxfMSxfMixfMyxfMSxfMyxfMCxfOCxfYixfOSxfYSxfMyxfMSxfMyxfMCxfMSxfMixfMCxfMixfMyxfMCxfMixfMCxfYSxfOSxfYixfOCxfMSxfMSxfMSxfMCxfMyxfMCxfMixfMCxfMSxfMCxfMCxfMCwKKyAgICAgIF8wLF8xLF8xLF8wLF8xLF8zLF8xLF8yLF8xLF8wLF8wLF8wLF8xLF8yLF8wLF8yLF8wLF8zLF8xLF8yLF8zLF8zLF8zLF8yLF8xLF8yLF8wLF8yLF8zLF8yLF8yLF8yLF8xLF8yLF8wLF8yLF8zLF8yLF8yLF8yLF8wLF8yLF8wLF8yLF8yLF8yLF8yLF8yLF8zLF8yLF8yLF8yLF8zLF8wLF8yLF8wLF8yLF8yLF8yLF8yLF8yLF8wLF8yLF8wLF8wLF8zLF8xLF8yLF8zLF8zLF8zLF8yLF8xLF8yLF8wLF8yLF8zLF8yLF8yLF8yLF8yLF8zLF8zLF8yLF8zLF8xLF8zLF8wLF8zLF8yLF8yLF8yLF8zLF8wLF8yLF8wLF8zLF8yLF8yLF8yLF8zLF8wLF8yLF8wLF8yLF8yLF8yLF8yLF8yLF8wLF8yLF8wLF8zLF8wLF8yLF8wLF8xLF8wLF8wLF8wLF8yLF8wLF8yLF8wLF8wLF8wLF8wLF8wLAorICAgICAgXzgsXzgsXzgsXzksXzAsXzMsXzEsXzMsXzAsXzEsXzEsXzAsXzEsXzMsXzEsXzIsXzgsX2EsXzgsX2IsXzIsXzEsXzMsXzEsXzAsXzMsXzEsXzIsXzMsXzEsXzMsXzAsXzgsX2IsXzksX2EsXzMsXzEsXzMsXzAsXzEsXzIsXzAsXzIsXzMsXzAsXzIsXzAsX2EsXzksX2IsXzgsXzEsXzEsXzEsXzAsXzMsXzAsXzIsXzAsXzEsXzAsXzAsXzAsXzgsX2EsXzgsX2IsXzIsXzEsXzMsXzEsXzAsXzMsXzEsXzIsXzMsXzEsXzMsXzAsX2EsXzgsX2EsXzksXzAsXzEsXzEsXzEsXzIsXzEsXzMsXzAsXzEsXzEsXzEsXzAsX2EsXzksX2IsXzgsXzEsXzEsXzEsXzAsXzMsXzAsXzIsXzAsXzEsXzAsXzAsXzAsXzgsXzksXzksXzgsXzEsXzEsXzEsXzAsXzEsXzAsXzAsXzAsXzEsXzAsXzAsXzAsCisgICAgICBfMCxfMyxfMSxfMixfMyxfMyxfMyxfMixfMSxfMixfMCxfMixfMyxfMixfMixfMixfMixfMyxfMyxfMixfMyxfMSxfMyxfMCxfMyxfMixfMixfMixfMyxfMCxfMixfMCxfMyxfMixfMixfMixfMyxfMCxfMixfMCxfMixfMixfMixfMixfMixfMCxfMixfMCxfMyxfMCxfMixfMCxfMSxfMCxfMCxfMCxfMixfMCxfMixfMCxfMCxfMCxfMCxfMCxfMixfMyxfMyxfMixfMyxfMSxfMyxfMCxfMyxfMixfMixfMixfMyxfMCxfMixfMCxfMixfMSxfMyxfMCxfMSxfMSxfMSxfMCxfMyxfMCxfMixfMCxfMSxfMCxfMCxfMCxfMyxfMCxfMixfMCxfMSxfMCxfMCxfMCxfMixfMCxfMixfMCxfMCxfMCxfMCxfMCxfMSxfMCxfMCxfMCxfMSxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCwKKyAgICAgIF80LF81LF81LF80LF8xLF8zLF8xLF8yLF81LF80LF80LF80LF8xLF8yLF8wLF8yLF80LF83LF81LF82LF8zLF8xLF8zLF8wLF81LF82LF80LF82LF8zLF8wLF8yLF8wLF81LF82LF80LF82LF8zLF8wLF8yLF8wLF80LF82LF80LF82LF8yLF8wLF8yLF8wLF83LF80LF82LF80LF8xLF8wLF8wLF8wLF82LF80LF82LF80LF8wLF8wLF8wLF8wLF8wLF8zLF8xLF8yLF8zLF8xLF8zLF8wLF8xLF8yLF8wLF8yLF8zLF8wLF8yLF8wLF8yLF8xLF8zLF8wLF8xLF8xLF8xLF8wLF8zLF8wLF8yLF8wLF8xLF8wLF8wLF8wLF8zLF8wLF8yLF8wLF8xLF8wLF8wLF8wLF8yLF8wLF8yLF8wLF8wLF8wLF8wLF8wLF8xLF8wLF8wLF8wLF8xLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLAorICAgICAgXzEsXzIsXzAsXzIsXzMsXzIsXzIsXzIsXzAsXzIsXzAsXzIsXzIsXzIsXzIsXzIsXzMsXzIsXzIsXzIsXzMsXzAsXzIsXzAsXzIsXzIsXzIsXzIsXzIsXzAsXzIsXzAsXzIsXzIsXzIsXzIsXzIsXzAsXzIsXzAsXzIsXzIsXzIsXzIsXzIsXzAsXzIsXzAsXzIsXzAsXzIsXzAsXzAsXzAsXzAsXzAsXzIsXzAsXzIsXzAsXzAsXzAsXzAsXzAsXzMsXzIsXzIsXzIsXzMsXzAsXzIsXzAsXzIsXzIsXzIsXzIsXzIsXzAsXzIsXzAsXzMsXzAsXzIsXzAsXzEsXzAsXzAsXzAsXzIsXzAsXzIsXzAsXzAsXzAsXzAsXzAsXzIsXzAsXzIsXzAsXzAsXzAsXzAsXzAsXzIsXzAsXzIsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsCisgICAgICBfMCxfMyxfMSxfMixfMyxfMSxfMyxfMCxfMSxfMixfMCxfMixfMyxfMCxfMixfMCxfMixfMSxfMyxfMCxfMSxfMSxfMSxfMCxfMyxfMCxfMixfMCxfMSxfMCxfMCxfMCxfMyxfMCxfMixfMCxfMSxfMCxfMCxfMCxfMixfMCxfMixfMCxfMCxfMCxfMCxfMCxfMSxfMCxfMCxfMCxfMSxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMixfMSxfMyxfMCxfMSxfMSxfMSxfMCxfMyxfMCxfMixfMCxfMSxfMCxfMCxfMCxfMCxfMSxfMSxfMCxfMSxfMSxfMSxfMCxfMSxfMCxfMCxfMCxfMSxfMCxfMCxfMCxfMSxfMCxfMCxfMCxfMSxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMSxfMCxfMCxfMCxfMSxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCwKKyAgICAgIF8zLF8yLF8yLF8yLF8zLF8wLF8yLF8wLF8yLF8yLF8yLF8yLF8yLF8wLF8yLF8wLF8zLF8wLF8yLF8wLF8xLF8wLF8wLF8wLF8yLF8wLF8yLF8wLF8wLF8wLF8wLF8wLF8yLF8wLF8yLF8wLF8wLF8wLF8wLF8wLF8yLF8wLF8yLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8zLF8wLF8yLF8wLF8xLF8wLF8wLF8wLF8yLF8wLF8yLF8wLF8wLF8wLF8wLF8wLF8xLF8wLF8wLF8wLF8xLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLAorICAgICAgXzgsXzksXzksXzgsX2QsX2YsX2QsX2UsXzksXzgsXzgsXzgsXzUsXzYsXzQsXzYsXzgsX2IsXzksX2EsX2YsX2QsX2YsX2MsXzksX2EsXzgsX2EsXzcsXzQsXzYsXzQsXzksX2EsXzgsX2EsX2YsX2MsX2UsX2MsXzgsX2EsXzgsX2EsXzYsXzQsXzYsXzQsX2IsXzgsX2EsXzgsX2QsX2MsX2MsX2MsX2EsXzgsX2EsXzgsXzQsXzQsXzQsXzQsX2MsX2YsX2QsX2UsX2IsXzksX2IsXzgsX2QsX2UsX2MsX2UsXzMsXzAsXzIsXzAsX2UsX2QsX2YsX2MsXzksXzksXzksXzgsX2YsX2MsX2UsX2MsXzEsXzAsXzAsXzAsX2YsX2MsX2UsX2MsXzksXzgsXzgsXzgsX2UsX2MsX2UsX2MsXzAsXzAsXzAsXzAsX2QsX2MsX2MsX2MsXzksXzgsXzgsXzgsX2MsX2MsX2MsX2MsXzAsXzAsXzAsXzAsCisgICAgICBfZCxfZSxfYyxfZSxfMyxfMixfMixfMixfNCxfNixfNCxfNixfMixfMixfMixfMixfZixfZSxfZSxfZSxfMyxfMCxfMixfMCxfNixfNixfNixfNixfMixfMCxfMixfMCxfZSxfZSxfZSxfZSxfMixfMCxfMixfMCxfNixfNixfNixfNixfMixfMCxfMixfMCxfZSxfYyxfZSxfYyxfMCxfMCxfMCxfMCxfNixfNCxfNixfNCxfMCxfMCxfMCxfMCxfYixfYSxfYSxfYSxfMyxfMCxfMixfMCxfMixfMixfMixfMixfMixfMCxfMixfMCxfYixfOCxfYSxfOCxfMSxfMCxfMCxfMCxfMixfMCxfMixfMCxfMCxfMCxfMCxfMCxfYSxfOCxfYSxfOCxfMCxfMCxfMCxfMCxfMixfMCxfMixfMCxfMCxfMCxfMCxfMCxfOCxfOCxfOCxfOCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCwKKyAgICAgIF9jLF9mLF9kLF9lLF9iLF85LF9iLF84LF9kLF9lLF9jLF9lLF8zLF8wLF8yLF8wLF9lLF9kLF9mLF9jLF85LF85LF85LF84LF9mLF9jLF9lLF9jLF8xLF8wLF8wLF8wLF9mLF9jLF9lLF9jLF85LF84LF84LF84LF9lLF9jLF9lLF9jLF8wLF8wLF8wLF8wLF9kLF9jLF9jLF9jLF85LF84LF84LF84LF9jLF9jLF9jLF9jLF8wLF8wLF8wLF8wLF9hLF85LF9iLF84LF85LF85LF85LF84LF9iLF84LF9hLF84LF8xLF8wLF8wLF8wLF84LF85LF85LF84LF85LF85LF85LF84LF85LF84LF84LF84LF8xLF8wLF8wLF8wLF85LF84LF84LF84LF85LF84LF84LF84LF84LF84LF84LF84LF8wLF8wLF8wLF8wLF85LF84LF84LF84LF85LF84LF84LF84LF84LF84LF84LF84LF8wLF8wLF8wLF8wLAorICAgICAgX2IsX2EsX2EsX2EsXzMsXzAsXzIsXzAsXzIsXzIsXzIsXzIsXzIsXzAsXzIsXzAsX2IsXzgsX2EsXzgsXzEsXzAsXzAsXzAsXzIsXzAsXzIsXzAsXzAsXzAsXzAsXzAsX2EsXzgsX2EsXzgsXzAsXzAsXzAsXzAsXzIsXzAsXzIsXzAsXzAsXzAsXzAsXzAsXzgsXzgsXzgsXzgsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsX2IsXzgsX2EsXzgsXzEsXzAsXzAsXzAsXzIsXzAsXzIsXzAsXzAsXzAsXzAsXzAsXzksXzgsXzgsXzgsXzEsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzgsXzgsXzgsXzgsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzgsXzgsXzgsXzgsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsCisgICAgICBfZCxfZSxfYyxfZSxfNyxfNCxfNixfNCxfNCxfNixfNCxfNixfNixfNCxfNixfNCxfZixfYyxfZSxfYyxfNSxfNCxfNCxfNCxfNixfNCxfNixfNCxfNCxfNCxfNCxfNCxfZSxfYyxfZSxfYyxfNCxfNCxfNCxfNCxfNixfNCxfNixfNCxfNCxfNCxfNCxfNCxfYyxfYyxfYyxfYyxfNCxfNCxfNCxfNCxfNCxfNCxfNCxfNCxfNCxfNCxfNCxfNCxfZixfYyxfZSxfYyxfMSxfMCxfMCxfMCxfNixfNCxfNixfNCxfMCxfMCxfMCxfMCxfZCxfYyxfYyxfYyxfMSxfMCxfMCxfMCxfNCxfNCxfNCxfNCxfMCxfMCxfMCxfMCxfYyxfYyxfYyxfYyxfMCxfMCxfMCxfMCxfNCxfNCxfNCxfNCxfMCxfMCxfMCxfMCxfYyxfYyxfYyxfYyxfMCxfMCxfMCxfMCxfNCxfNCxfNCxfNCxfMCxfMCxfMCxfMCwKKyAgICAgIF82LF82LF82LF82LF8yLF8wLF8yLF8wLF82LF82LF82LF82LF8yLF8wLF8yLF8wLF82LF80LF82LF80LF8wLF8wLF8wLF8wLF82LF80LF82LF80LF8wLF8wLF8wLF8wLF82LF80LF82LF80LF8wLF8wLF8wLF8wLF82LF80LF82LF80LF8wLF8wLF8wLF8wLF80LF80LF80LF80LF8wLF8wLF8wLF8wLF80LF80LF80LF80LF8wLF8wLF8wLF8wLF8yLF8wLF8yLF8wLF8wLF8wLF8wLF8wLF8yLF8wLF8yLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLAorICAgICAgX2YsX2MsX2UsX2MsXzEsXzAsXzAsXzAsXzYsXzQsXzYsXzQsXzAsXzAsXzAsXzAsX2QsX2MsX2MsX2MsXzEsXzAsXzAsXzAsXzQsXzQsXzQsXzQsXzAsXzAsXzAsXzAsX2MsX2MsX2MsX2MsXzAsXzAsXzAsXzAsXzQsXzQsXzQsXzQsXzAsXzAsXzAsXzAsX2MsX2MsX2MsX2MsXzAsXzAsXzAsXzAsXzQsXzQsXzQsXzQsXzAsXzAsXzAsXzAsXzksXzgsXzgsXzgsXzEsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzksXzgsXzgsXzgsXzEsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzgsXzgsXzgsXzgsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzgsXzgsXzgsXzgsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsCisgICAgICBfMixfMCxfMixfMCxfMCxfMCxfMCxfMCxfMixfMCxfMixfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCwKKyAgICAgIF9jLF9kLF9kLF9jLF85LF9iLF85LF9hLF9kLF9jLF9jLF9jLF8xLF8yLF8wLF8yLF9jLF9mLF9kLF9lLF9iLF85LF9iLF84LF9kLF9lLF9jLF9lLF8zLF8wLF8yLF8wLF9kLF9lLF9jLF9lLF9iLF84LF9hLF84LF9jLF9lLF9jLF9lLF8yLF8wLF8yLF8wLF9mLF9jLF9lLF9jLF85LF84LF84LF84LF9lLF9jLF9lLF9jLF8wLF8wLF8wLF8wLF84LF9iLF85LF9hLF9iLF85LF9iLF84LF85LF9hLF84LF9hLF8zLF8wLF8yLF8wLF9hLF85LF9iLF84LF85LF85LF85LF84LF9iLF84LF9hLF84LF8xLF8wLF8wLF8wLF9iLF84LF9hLF84LF85LF84LF84LF84LF9hLF84LF9hLF84LF8wLF8wLF8wLF8wLF85LF84LF84LF84LF85LF84LF84LF84LF84LF84LF84LF84LF8wLF8wLF8wLF8wLAorICAgICAgXzksX2EsXzgsX2EsXzMsXzIsXzIsXzIsXzAsXzIsXzAsXzIsXzIsXzIsXzIsXzIsX2IsX2EsX2EsX2EsXzMsXzAsXzIsXzAsXzIsXzIsXzIsXzIsXzIsXzAsXzIsXzAsX2EsX2EsX2EsX2EsXzIsXzAsXzIsXzAsXzIsXzIsXzIsXzIsXzIsXzAsXzIsXzAsX2EsXzgsX2EsXzgsXzAsXzAsXzAsXzAsXzIsXzAsXzIsXzAsXzAsXzAsXzAsXzAsX2IsX2EsX2EsX2EsXzMsXzAsXzIsXzAsXzIsXzIsXzIsXzIsXzIsXzAsXzIsXzAsX2IsXzgsX2EsXzgsXzEsXzAsXzAsXzAsXzIsXzAsXzIsXzAsXzAsXzAsXzAsXzAsX2EsXzgsX2EsXzgsXzAsXzAsXzAsXzAsXzIsXzAsXzIsXzAsXzAsXzAsXzAsXzAsXzgsXzgsXzgsXzgsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsCisgICAgICBfOCxfYixfOSxfYSxfYixfOSxfYixfOCxfOSxfYSxfOCxfYSxfMyxfMCxfMixfMCxfYSxfOSxfYixfOCxfOSxfOSxfOSxfOCxfYixfOCxfYSxfOCxfMSxfMCxfMCxfMCxfYixfOCxfYSxfOCxfOSxfOCxfOCxfOCxfYSxfOCxfYSxfOCxfMCxfMCxfMCxfMCxfOSxfOCxfOCxfOCxfOSxfOCxfOCxfOCxfOCxfOCxfOCxfOCxfMCxfMCxfMCxfMCxfYSxfOSxfYixfOCxfOSxfOSxfOSxfOCxfYixfOCxfYSxfOCxfMSxfMCxfMCxfMCxfOCxfOSxfOSxfOCxfOSxfOSxfOSxfOCxfOSxfOCxfOCxfOCxfMSxfMCxfMCxfMCxfOSxfOCxfOCxfOCxfOSxfOCxfOCxfOCxfOCxfOCxfOCxfOCxfMCxfMCxfMCxfMCxfOSxfOCxfOCxfOCxfOSxfOCxfOCxfOCxfOCxfOCxfOCxfOCxfMCxfMCxfMCxfMCwKKyAgICAgIF9iLF9hLF9hLF9hLF8zLF8wLF8yLF8wLF8yLF8yLF8yLF8yLF8yLF8wLF8yLF8wLF9iLF84LF9hLF84LF8xLF8wLF8wLF8wLF8yLF8wLF8yLF8wLF8wLF8wLF8wLF8wLF9hLF84LF9hLF84LF8wLF8wLF8wLF8wLF8yLF8wLF8yLF8wLF8wLF8wLF8wLF8wLF84LF84LF84LF84LF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF9iLF84LF9hLF84LF8xLF8wLF8wLF8wLF8yLF8wLF8yLF8wLF8wLF8wLF8wLF8wLF85LF84LF84LF84LF8xLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF84LF84LF84LF84LF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF84LF84LF84LF84LF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLAorICAgICAgX2QsX2UsX2MsX2UsXzMsXzAsXzIsXzAsXzQsXzYsXzQsXzYsXzIsXzAsXzIsXzAsX2YsX2MsX2UsX2MsXzEsXzAsXzAsXzAsXzYsXzQsXzYsXzQsXzAsXzAsXzAsXzAsX2UsX2MsX2UsX2MsXzAsXzAsXzAsXzAsXzYsXzQsXzYsXzQsXzAsXzAsXzAsXzAsX2MsX2MsX2MsX2MsXzAsXzAsXzAsXzAsXzQsXzQsXzQsXzQsXzAsXzAsXzAsXzAsX2IsXzgsX2EsXzgsXzEsXzAsXzAsXzAsXzIsXzAsXzIsXzAsXzAsXzAsXzAsXzAsXzksXzgsXzgsXzgsXzEsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzgsXzgsXzgsXzgsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzgsXzgsXzgsXzgsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsCisgICAgICBfMixfMixfMixfMixfMixfMCxfMixfMCxfMixfMixfMixfMixfMixfMCxfMixfMCxfMixfMCxfMixfMCxfMCxfMCxfMCxfMCxfMixfMCxfMixfMCxfMCxfMCxfMCxfMCxfMixfMCxfMixfMCxfMCxfMCxfMCxfMCxfMixfMCxfMixfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMixfMCxfMixfMCxfMCxfMCxfMCxfMCxfMixfMCxfMixfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCwKKyAgICAgIF9iLF84LF9hLF84LF8xLF8wLF8wLF8wLF8yLF8wLF8yLF8wLF8wLF8wLF8wLF8wLF85LF84LF84LF84LF8xLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF84LF84LF84LF84LF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF84LF84LF84LF84LF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF85LF84LF84LF84LF8xLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF85LF84LF84LF84LF8xLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF84LF84LF84LF84LF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF84LF84LF84LF84LF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLAorICAgICAgXzIsXzAsXzIsXzAsXzAsXzAsXzAsXzAsXzIsXzAsXzIsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsCisgICAgICBfYyxfZCxfZCxfYyxfMSxfMyxfMSxfMixfNSxfNCxfNCxfNCxfMSxfMixfMCxfMixfYyxfZixfZCxfZSxfMyxfMSxfMyxfMCxfNSxfNixfNCxfNixfMyxfMCxfMixfMCxfZCxfZSxfYyxfZSxfMyxfMCxfMixfMCxfNCxfNixfNCxfNixfMixfMCxfMixfMCxfZixfYyxfZSxfYyxfMSxfMCxfMCxfMCxfNixfNCxfNixfNCxfMCxfMCxfMCxfMCxfOCxfYixfOSxfYSxfMyxfMSxfMyxfMCxfMSxfMixfMCxfMixfMyxfMCxfMixfMCxfYSxfOSxfYixfOCxfMSxfMSxfMSxfMCxfMyxfMCxfMixfMCxfMSxfMCxfMCxfMCxfYixfOCxfYSxfOCxfMSxfMCxfMCxfMCxfMixfMCxfMixfMCxfMCxfMCxfMCxfMCxfOSxfOCxfOCxfOCxfMSxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCwKKyAgICAgIF8xLF8yLF8wLF8yLF8zLF8yLF8yLF8yLF8wLF8yLF8wLF8yLF8yLF8yLF8yLF8yLF8zLF8yLF8yLF8yLF8zLF8wLF8yLF8wLF8yLF8yLF8yLF8yLF8yLF8wLF8yLF8wLF8yLF8yLF8yLF8yLF8yLF8wLF8yLF8wLF8yLF8yLF8yLF8yLF8yLF8wLF8yLF8wLF8yLF8wLF8yLF8wLF8wLF8wLF8wLF8wLF8yLF8wLF8yLF8wLF8wLF8wLF8wLF8wLF8zLF8yLF8yLF8yLF8zLF8wLF8yLF8wLF8yLF8yLF8yLF8yLF8yLF8wLF8yLF8wLF8zLF8wLF8yLF8wLF8xLF8wLF8wLF8wLF8yLF8wLF8yLF8wLF8wLF8wLF8wLF8wLF8yLF8wLF8yLF8wLF8wLF8wLF8wLF8wLF8yLF8wLF8yLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLAorICAgICAgXzgsX2IsXzksX2EsXzMsXzEsXzMsXzAsXzEsXzIsXzAsXzIsXzMsXzAsXzIsXzAsX2EsXzksX2IsXzgsXzEsXzEsXzEsXzAsXzMsXzAsXzIsXzAsXzEsXzAsXzAsXzAsX2IsXzgsX2EsXzgsXzEsXzAsXzAsXzAsXzIsXzAsXzIsXzAsXzAsXzAsXzAsXzAsXzksXzgsXzgsXzgsXzEsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsX2EsXzksX2IsXzgsXzEsXzEsXzEsXzAsXzMsXzAsXzIsXzAsXzEsXzAsXzAsXzAsXzgsXzksXzksXzgsXzEsXzEsXzEsXzAsXzEsXzAsXzAsXzAsXzEsXzAsXzAsXzAsXzksXzgsXzgsXzgsXzEsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzksXzgsXzgsXzgsXzEsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsCisgICAgICBfMyxfMixfMixfMixfMyxfMCxfMixfMCxfMixfMixfMixfMixfMixfMCxfMixfMCxfMyxfMCxfMixfMCxfMSxfMCxfMCxfMCxfMixfMCxfMixfMCxfMCxfMCxfMCxfMCxfMixfMCxfMixfMCxfMCxfMCxfMCxfMCxfMixfMCxfMixfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMyxfMCxfMixfMCxfMSxfMCxfMCxfMCxfMixfMCxfMixfMCxfMCxfMCxfMCxfMCxfMSxfMCxfMCxfMCxfMSxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCwKKyAgICAgIF81LF82LF80LF82LF8zLF8wLF8yLF8wLF80LF82LF80LF82LF8yLF8wLF8yLF8wLF83LF80LF82LF80LF8xLF8wLF8wLF8wLF82LF80LF82LF80LF8wLF8wLF8wLF8wLF82LF80LF82LF80LF8wLF8wLF8wLF8wLF82LF80LF82LF80LF8wLF8wLF8wLF8wLF80LF80LF80LF80LF8wLF8wLF8wLF8wLF80LF80LF80LF80LF8wLF8wLF8wLF8wLF8zLF8wLF8yLF8wLF8xLF8wLF8wLF8wLF8yLF8wLF8yLF8wLF8wLF8wLF8wLF8wLF8xLF8wLF8wLF8wLF8xLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLAorICAgICAgXzIsXzIsXzIsXzIsXzIsXzAsXzIsXzAsXzIsXzIsXzIsXzIsXzIsXzAsXzIsXzAsXzIsXzAsXzIsXzAsXzAsXzAsXzAsXzAsXzIsXzAsXzIsXzAsXzAsXzAsXzAsXzAsXzIsXzAsXzIsXzAsXzAsXzAsXzAsXzAsXzIsXzAsXzIsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzIsXzAsXzIsXzAsXzAsXzAsXzAsXzAsXzIsXzAsXzIsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsCisgICAgICBfMyxfMCxfMixfMCxfMSxfMCxfMCxfMCxfMixfMCxfMixfMCxfMCxfMCxfMCxfMCxfMSxfMCxfMCxfMCxfMSxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMSxfMCxfMCxfMCxfMSxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMSxfMCxfMCxfMCxfMSxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCwKKyAgICAgIF8yLF8wLF8yLF8wLF8wLF8wLF8wLF8wLF8yLF8wLF8yLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLAorICAgICAgXzgsXzksXzksXzgsXzEsXzMsXzEsXzIsXzEsXzAsXzAsXzAsXzEsXzIsXzAsXzIsXzgsX2IsXzksX2EsXzMsXzEsXzMsXzAsXzEsXzIsXzAsXzIsXzMsXzAsXzIsXzAsXzksX2EsXzgsX2EsXzMsXzAsXzIsXzAsXzAsXzIsXzAsXzIsXzIsXzAsXzIsXzAsX2IsXzgsX2EsXzgsXzEsXzAsXzAsXzAsXzIsXzAsXzIsXzAsXzAsXzAsXzAsXzAsXzgsX2IsXzksX2EsXzMsXzEsXzMsXzAsXzEsXzIsXzAsXzIsXzMsXzAsXzIsXzAsX2EsXzksX2IsXzgsXzEsXzEsXzEsXzAsXzMsXzAsXzIsXzAsXzEsXzAsXzAsXzAsX2IsXzgsX2EsXzgsXzEsXzAsXzAsXzAsXzIsXzAsXzIsXzAsXzAsXzAsXzAsXzAsXzksXzgsXzgsXzgsXzEsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsCisgICAgICBfMSxfMixfMCxfMixfMyxfMixfMixfMixfMCxfMixfMCxfMixfMixfMixfMixfMixfMyxfMixfMixfMixfMyxfMCxfMixfMCxfMixfMixfMixfMixfMixfMCxfMixfMCxfMixfMixfMixfMixfMixfMCxfMixfMCxfMixfMixfMixfMixfMixfMCxfMixfMCxfMixfMCxfMixfMCxfMCxfMCxfMCxfMCxfMixfMCxfMixfMCxfMCxfMCxfMCxfMCxfMyxfMixfMixfMixfMyxfMCxfMixfMCxfMixfMixfMixfMixfMixfMCxfMixfMCxfMyxfMCxfMixfMCxfMSxfMCxfMCxfMCxfMixfMCxfMixfMCxfMCxfMCxfMCxfMCxfMixfMCxfMixfMCxfMCxfMCxfMCxfMCxfMixfMCxfMixfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCwKKyAgICAgIF84LF9iLF85LF9hLF8zLF8xLF8zLF8wLF8xLF8yLF8wLF8yLF8zLF8wLF8yLF8wLF9hLF85LF9iLF84LF8xLF8xLF8xLF8wLF8zLF8wLF8yLF8wLF8xLF8wLF8wLF8wLF9iLF84LF9hLF84LF8xLF8wLF8wLF8wLF8yLF8wLF8yLF8wLF8wLF8wLF8wLF8wLF85LF84LF84LF84LF8xLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF9hLF85LF9iLF84LF8xLF8xLF8xLF8wLF8zLF8wLF8yLF8wLF8xLF8wLF8wLF8wLF84LF85LF85LF84LF8xLF8xLF8xLF8wLF8xLF8wLF8wLF8wLF8xLF8wLF8wLF8wLF85LF84LF84LF84LF8xLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF85LF84LF84LF84LF8xLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLAorICAgICAgXzMsXzIsXzIsXzIsXzMsXzAsXzIsXzAsXzIsXzIsXzIsXzIsXzIsXzAsXzIsXzAsXzMsXzAsXzIsXzAsXzEsXzAsXzAsXzAsXzIsXzAsXzIsXzAsXzAsXzAsXzAsXzAsXzIsXzAsXzIsXzAsXzAsXzAsXzAsXzAsXzIsXzAsXzIsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzMsXzAsXzIsXzAsXzEsXzAsXzAsXzAsXzIsXzAsXzIsXzAsXzAsXzAsXzAsXzAsXzEsXzAsXzAsXzAsXzEsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsCisgICAgICBfMSxfMixfMCxfMixfMyxfMCxfMixfMCxfMCxfMixfMCxfMixfMixfMCxfMixfMCxfMyxfMCxfMixfMCxfMSxfMCxfMCxfMCxfMixfMCxfMixfMCxfMCxfMCxfMCxfMCxfMixfMCxfMixfMCxfMCxfMCxfMCxfMCxfMixfMCxfMixfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMyxfMCxfMixfMCxfMSxfMCxfMCxfMCxfMixfMCxfMixfMCxfMCxfMCxfMCxfMCxfMSxfMCxfMCxfMCxfMSxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCwKKyAgICAgIF8yLF8yLF8yLF8yLF8yLF8wLF8yLF8wLF8yLF8yLF8yLF8yLF8yLF8wLF8yLF8wLF8yLF8wLF8yLF8wLF8wLF8wLF8wLF8wLF8yLF8wLF8yLF8wLF8wLF8wLF8wLF8wLF8yLF8wLF8yLF8wLF8wLF8wLF8wLF8wLF8yLF8wLF8yLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8yLF8wLF8yLF8wLF8wLF8wLF8wLF8wLF8yLF8wLF8yLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLAorICAgICAgXzMsXzAsXzIsXzAsXzEsXzAsXzAsXzAsXzIsXzAsXzIsXzAsXzAsXzAsXzAsXzAsXzEsXzAsXzAsXzAsXzEsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzEsXzAsXzAsXzAsXzEsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzEsXzAsXzAsXzAsXzEsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsCisgICAgICBfMixfMCxfMixfMCxfMCxfMCxfMCxfMCxfMixfMCxfMixfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCwKKyAgICAgIF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8xLF8wLF8wLF8wLF8xLF84LF85LF85LF85LF8wLF8wLF8wLF8wLF8wLF8yLF8wLF8zLF8wLF8wLF8wLF8xLF84LF9iLF85LF9iLF8wLF8wLF8wLF8xLF8wLF8zLF8xLF8zLF8wLF8xLF8xLF8wLF85LF9iLF85LF9hLF8wLF8yLF8wLF8zLF8yLF8xLF8zLF8xLF8wLF8zLF8xLF8yLF9iLF85LF9iLF84LF8wLF8wLF8wLF8wLF8wLF8yLF8wLF8zLF8wLF8wLF8wLF8xLF84LF9iLF85LF9iLF8wLF8yLF8wLF8yLF8yLF8wLF8yLF8xLF8wLF8yLF8wLF8zLF9hLF85LF9iLF85LF8wLF8yLF8wLF8zLF8yLF8xLF8zLF8xLF8wLF8zLF8xLF8yLF9iLF85LF9iLF84LF8yLF8wLF8yLF8xLF8wLF8xLF8xLF8xLF8yLF8xLF8zLF8wLF85LF85LF85LF84LAorICAgICAgXzAsXzAsXzAsXzEsXzgsX2IsXzksX2IsXzgsXzksXzksXzgsXzEsXzMsXzEsXzIsXzAsXzIsXzAsXzMsX2EsX2IsX2IsX2IsXzgsX2IsXzksX2EsXzMsXzMsXzMsXzIsXzAsXzMsXzEsXzIsX2IsX2IsX2IsX2EsXzksX2EsXzgsX2EsXzMsXzIsXzIsXzIsXzIsXzMsXzMsXzIsX2IsXzksX2IsXzgsX2IsX2EsX2EsX2EsXzMsXzAsXzIsXzAsXzAsXzIsXzAsXzMsX2UsX2YsX2YsX2YsXzgsX2IsXzksX2EsXzcsXzcsXzcsXzYsXzIsXzIsXzIsXzMsX2UsX2QsX2YsX2QsX2EsX2IsX2IsX2EsXzcsXzUsXzcsXzQsXzIsXzMsXzMsXzIsX2YsX2QsX2YsX2MsX2IsX2EsX2EsX2EsXzcsXzQsXzYsXzQsXzIsXzEsXzMsXzAsX2QsX2QsX2QsX2MsX2IsXzgsX2EsXzgsXzUsXzQsXzQsXzQsCisgICAgICBfMCxfMCxfMCxfMCxfMCxfMixfMCxfMyxfMCxfMCxfMCxfMSxfOCxfYixfOSxfYixfMCxfMixfMCxfMixfMixfMCxfMixfMSxfMCxfMixfMCxfMyxfYSxfOSxfYixfOSxfMCxfMixfMCxfMyxfMixfMSxfMyxfMSxfMCxfMyxfMSxfMixfYixfOSxfYixfOCxfMixfMCxfMixfMSxfMCxfMSxfMSxfMSxfMixfMSxfMyxfMCxfOSxfOSxfOSxfOCxfMCxfMixfMCxfMixfNixfNCxfNixfNSxfMCxfMixfMCxfMyxfZSxfZCxfZixfZCxfMixfMCxfMixfMCxfNCxfNCxfNCxfNSxfMixfMCxfMixfMSxfYyxfZCxfZCxfZCxfMixfMCxfMixfMSxfNCxfNSxfNSxfNSxfMixfMSxfMyxfMCxfZCxfZCxfZCxfYyxfMCxfMCxfMCxfMSxfNCxfNSxfNSxfNSxfMCxfMSxfMSxfMCxfZCxfZCxfZCxfYywKKyAgICAgIF8wLF8yLF8wLF8zLF9lLF9mLF9mLF9mLF84LF9iLF85LF9hLF83LF83LF83LF82LF8yLF8yLF8yLF8zLF9lLF9kLF9mLF9kLF9hLF9iLF9iLF9hLF83LF81LF83LF80LF8yLF8zLF8zLF8yLF9mLF9kLF9mLF9jLF9iLF9hLF9hLF9hLF83LF80LF82LF80LF8yLF8xLF8zLF8wLF9kLF9kLF9kLF9jLF9iLF84LF9hLF84LF81LF80LF80LF80LF82LF82LF82LF83LF9hLF85LF9iLF85LF9lLF9mLF9mLF9lLF8zLF8xLF8zLF8wLF82LF80LF82LF81LF84LF85LF85LF85LF9lLF9kLF9mLF9jLF8xLF8xLF8xLF8wLF82LF81LF83LF80LF85LF85LF85LF84LF9mLF9jLF9lLF9jLF8xLF8wLF8wLF8wLF80LF81LF81LF80LF85LF85LF85LF84LF9kLF9jLF9jLF9jLF8xLF8wLF8wLF8wLAorICAgICAgXzAsXzAsXzAsXzEsXzgsX2IsXzksX2IsXzgsXzksXzksXzgsXzEsXzMsXzEsXzIsXzAsXzIsXzAsXzMsX2EsXzksX2IsXzksXzgsX2IsXzksX2EsXzMsXzEsXzMsXzAsXzAsXzMsXzEsXzIsX2IsXzksX2IsXzgsXzksX2EsXzgsX2EsXzMsXzAsXzIsXzAsXzIsXzEsXzMsXzAsXzksXzksXzksXzgsX2IsXzgsX2EsXzgsXzEsXzAsXzAsXzAsXzAsXzIsXzAsXzMsX2UsX2QsX2YsX2QsXzgsX2IsXzksX2EsXzcsXzUsXzcsXzQsXzIsXzAsXzIsXzEsX2MsX2QsX2QsX2QsX2EsXzksX2IsXzgsXzUsXzUsXzUsXzQsXzIsXzEsXzMsXzAsX2QsX2QsX2QsX2MsX2IsXzgsX2EsXzgsXzUsXzQsXzQsXzQsXzAsXzEsXzEsXzAsX2QsX2QsX2QsX2MsXzksXzgsXzgsXzgsXzUsXzQsXzQsXzQsCisgICAgICBfOCxfYixfOSxfYSxfNyxfNyxfNyxfNixfMSxfMixfMCxfMixfNyxfNixfNixfNixfYSxfYixfYixfYSxfNyxfNSxfNyxfNCxfMyxfMixfMixfMixfNyxfNCxfNixfNCxfYixfYSxfYSxfYSxfNyxfNCxfNixfNCxfMixfMixfMixfMixfNixfNCxfNixfNCxfYixfOCxfYSxfOCxfNSxfNCxfNCxfNCxfMixfMCxfMixfMCxfNCxfNCxfNCxfNCxfZSxfZixfZixfZSxfNyxfNSxfNyxfNCxfNyxfNixfNixfNixfNyxfNCxfNixfNCxfZSxfZCxfZixfYyxfNSxfNSxfNSxfNCxfNyxfNCxfNixfNCxfNSxfNCxfNCxfNCxfZixfYyxfZSxfYyxfNSxfNCxfNCxfNCxfNixfNCxfNixfNCxfNCxfNCxfNCxfNCxfZCxfYyxfYyxfYyxfNSxfNCxfNCxfNCxfNCxfNCxfNCxfNCxfNCxfNCxfNCxfNCwKKyAgICAgIF8wLF8yLF8wLF8zLF9lLF9kLF9mLF9kLF84LF9iLF85LF9hLF83LF81LF83LF80LF8yLF8wLF8yLF8xLF9jLF9kLF9kLF9kLF9hLF85LF9iLF84LF81LF81LF81LF80LF8yLF8xLF8zLF8wLF9kLF9kLF9kLF9jLF9iLF84LF9hLF84LF81LF80LF80LF80LF8wLF8xLF8xLF8wLF9kLF9kLF9kLF9jLF85LF84LF84LF84LF81LF80LF80LF80LF82LF80LF82LF81LF9jLF9kLF9kLF9kLF9lLF9kLF9mLF9jLF81LF81LF81LF80LF80LF80LF80LF81LF9jLF9kLF9kLF9kLF9jLF9kLF9kLF9jLF81LF81LF81LF80LF80LF81LF81LF80LF9kLF9kLF9kLF9jLF9kLF9jLF9jLF9jLF81LF80LF80LF80LF80LF81LF81LF80LF9kLF9kLF9kLF9jLF9kLF9jLF9jLF9jLF81LF80LF80LF80LAorICAgICAgX2UsX2YsX2YsX2UsXzcsXzUsXzcsXzQsXzcsXzYsXzYsXzYsXzcsXzQsXzYsXzQsX2UsX2QsX2YsX2MsXzUsXzUsXzUsXzQsXzcsXzQsXzYsXzQsXzUsXzQsXzQsXzQsX2YsX2MsX2UsX2MsXzUsXzQsXzQsXzQsXzYsXzQsXzYsXzQsXzQsXzQsXzQsXzQsX2QsX2MsX2MsX2MsXzUsXzQsXzQsXzQsXzQsXzQsXzQsXzQsXzQsXzQsXzQsXzQsX2UsX2QsX2YsX2MsXzEsXzEsXzEsXzAsXzcsXzQsXzYsXzQsXzEsXzAsXzAsXzAsX2MsX2QsX2QsX2MsXzEsXzEsXzEsXzAsXzUsXzQsXzQsXzQsXzEsXzAsXzAsXzAsX2QsX2MsX2MsX2MsXzEsXzAsXzAsXzAsXzQsXzQsXzQsXzQsXzAsXzAsXzAsXzAsX2QsX2MsX2MsX2MsXzEsXzAsXzAsXzAsXzQsXzQsXzQsXzQsXzAsXzAsXzAsXzAsCisgICAgICBfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMSxfMCxfMCxfMCxfMSxfOCxfOSxfOSxfOSxfMCxfMCxfMCxfMCxfMCxfMixfMCxfMyxfMCxfMCxfMCxfMSxfOCxfYixfOSxfYixfMCxfMCxfMCxfMSxfMCxfMyxfMSxfMyxfMCxfMSxfMSxfMCxfOSxfYixfOSxfYSxfMCxfMixfMCxfMyxfMixfMSxfMyxfMSxfMCxfMyxfMSxfMixfYixfOSxfYixfOCxfMCxfMCxfMCxfMCxfNCxfNixfNCxfNyxfMCxfMCxfMCxfMSxfYyxfZixfZCxfZixfMCxfMixfMCxfMixfNixfNCxfNixfNSxfMCxfMixfMCxfMyxfZSxfZCxfZixfZCxfMCxfMixfMCxfMyxfNixfNSxfNyxfNSxfMCxfMyxfMSxfMixfZixfZCxfZixfYyxfMixfMCxfMixfMSxfNCxfNSxfNSxfNSxfMixfMSxfMyxfMCxfZCxfZCxfZCxfYywKKyAgICAgIF8wLF8wLF8wLF8xLF9jLF9mLF9kLF9mLF84LF85LF85LF84LF81LF83LF81LF82LF8wLF8yLF8wLF8zLF9lLF9mLF9mLF9mLF84LF9iLF85LF9hLF83LF83LF83LF82LF8wLF8zLF8xLF8yLF9mLF9mLF9mLF9lLF85LF9hLF84LF9hLF83LF82LF82LF82LF8yLF8zLF8zLF8yLF9mLF9kLF9mLF9jLF9iLF9hLF9hLF9hLF83LF80LF82LF80LF80LF82LF80LF83LF9hLF9iLF9iLF9iLF9jLF9mLF9kLF9lLF8zLF8zLF8zLF8yLF82LF82LF82LF83LF9hLF85LF9iLF85LF9lLF9mLF9mLF9lLF8zLF8xLF8zLF8wLF82LF83LF83LF82LF9iLF85LF9iLF84LF9mLF9lLF9lLF9lLF8zLF8wLF8yLF8wLF82LF81LF83LF80LF85LF85LF85LF84LF9mLF9jLF9lLF9jLF8xLF8wLF8wLF8wLAorICAgICAgXzAsXzAsXzAsXzAsXzQsXzYsXzQsXzcsXzAsXzAsXzAsXzEsX2MsX2YsX2QsX2YsXzAsXzIsXzAsXzIsXzYsXzQsXzYsXzUsXzAsXzIsXzAsXzMsX2UsX2QsX2YsX2QsXzAsXzIsXzAsXzMsXzYsXzUsXzcsXzUsXzAsXzMsXzEsXzIsX2YsX2QsX2YsX2MsXzIsXzAsXzIsXzEsXzQsXzUsXzUsXzUsXzIsXzEsXzMsXzAsX2QsX2QsX2QsX2MsXzQsXzYsXzQsXzYsXzIsXzAsXzIsXzEsXzQsXzYsXzQsXzcsX2EsXzksX2IsXzksXzYsXzQsXzYsXzQsXzAsXzAsXzAsXzEsXzYsXzQsXzYsXzUsXzgsXzksXzksXzksXzYsXzQsXzYsXzUsXzAsXzEsXzEsXzEsXzYsXzUsXzcsXzQsXzksXzksXzksXzgsXzQsXzQsXzQsXzUsXzAsXzEsXzEsXzEsXzQsXzUsXzUsXzQsXzksXzksXzksXzgsCisgICAgICBfNCxfNixfNCxfNyxfYSxfYixfYixfYixfYyxfZixfZCxfZSxfMyxfMyxfMyxfMixfNixfNixfNixfNyxfYSxfOSxfYixfOSxfZSxfZixfZixfZSxfMyxfMSxfMyxfMCxfNixfNyxfNyxfNixfYixfOSxfYixfOCxfZixfZSxfZSxfZSxfMyxfMCxfMixfMCxfNixfNSxfNyxfNCxfOSxfOSxfOSxfOCxfZixfYyxfZSxfYyxfMSxfMCxfMCxfMCxfMixfMixfMixfMyxfYSxfOSxfYixfOSxfYSxfYixfYixfYSxfMyxfMSxfMyxfMCxfMixfMCxfMixfMSxfOCxfOSxfOSxfOSxfYSxfOSxfYixfOCxfMSxfMSxfMSxfMCxfMixfMSxfMyxfMCxfOSxfOSxfOSxfOCxfYixfOCxfYSxfOCxfMSxfMCxfMCxfMCxfMCxfMSxfMSxfMCxfOSxfOSxfOSxfOCxfOSxfOCxfOCxfOCxfMSxfMCxfMCxfMCwKKyAgICAgIF8wLF8wLF8wLF8xLF9jLF9mLF9kLF9mLF84LF85LF85LF84LF81LF83LF81LF82LF8wLF8yLF8wLF8zLF9lLF9kLF9mLF9kLF84LF9iLF85LF9hLF83LF81LF83LF80LF8wLF8zLF8xLF8yLF9mLF9kLF9mLF9jLF85LF9hLF84LF9hLF83LF80LF82LF80LF8yLF8xLF8zLF8wLF9kLF9kLF9kLF9jLF9iLF84LF9hLF84LF81LF80LF80LF80LF80LF82LF80LF83LF9lLF9kLF9mLF9kLF9jLF9mLF9kLF9lLF83LF81LF83LF80LF82LF80LF82LF81LF9jLF9kLF9kLF9kLF9lLF9kLF9mLF9jLF81LF81LF81LF80LF82LF81LF83LF80LF9kLF9kLF9kLF9jLF9mLF9jLF9lLF9jLF81LF80LF80LF80LF80LF81LF81LF80LF9kLF9kLF9kLF9jLF9kLF9jLF9jLF9jLF81LF80LF80LF80LAorICAgICAgX2MsX2YsX2QsX2UsXzcsXzcsXzcsXzYsXzUsXzYsXzQsXzYsXzcsXzYsXzYsXzYsX2UsX2YsX2YsX2UsXzcsXzUsXzcsXzQsXzcsXzYsXzYsXzYsXzcsXzQsXzYsXzQsX2YsX2UsX2UsX2UsXzcsXzQsXzYsXzQsXzYsXzYsXzYsXzYsXzYsXzQsXzYsXzQsX2YsX2MsX2UsX2MsXzUsXzQsXzQsXzQsXzYsXzQsXzYsXzQsXzQsXzQsXzQsXzQsX2UsX2YsX2YsX2UsXzMsXzEsXzMsXzAsXzcsXzYsXzYsXzYsXzMsXzAsXzIsXzAsX2UsX2QsX2YsX2MsXzEsXzEsXzEsXzAsXzcsXzQsXzYsXzQsXzEsXzAsXzAsXzAsX2YsX2MsX2UsX2MsXzEsXzAsXzAsXzAsXzYsXzQsXzYsXzQsXzAsXzAsXzAsXzAsX2QsX2MsX2MsX2MsXzEsXzAsXzAsXzAsXzQsXzQsXzQsXzQsXzAsXzAsXzAsXzAsCisgICAgICBfNCxfNixfNCxfNyxfZSxfZCxfZixfZCxfYyxfZixfZCxfZSxfNyxfNSxfNyxfNCxfNixfNCxfNixfNSxfYyxfZCxfZCxfZCxfZSxfZCxfZixfYyxfNSxfNSxfNSxfNCxfNixfNSxfNyxfNCxfZCxfZCxfZCxfYyxfZixfYyxfZSxfYyxfNSxfNCxfNCxfNCxfNCxfNSxfNSxfNCxfZCxfZCxfZCxfYyxfZCxfYyxfYyxfYyxfNSxfNCxfNCxfNCxfNixfNCxfNixfNSxfOCxfOSxfOSxfOSxfZSxfZCxfZixfYyxfMSxfMSxfMSxfMCxfNCxfNCxfNCxfNSxfOCxfOSxfOSxfOSxfYyxfZCxfZCxfYyxfMSxfMSxfMSxfMCxfNCxfNSxfNSxfNCxfOSxfOSxfOSxfOCxfZCxfYyxfYyxfYyxfMSxfMCxfMCxfMCxfNCxfNSxfNSxfNCxfOSxfOSxfOSxfOCxfZCxfYyxfYyxfYyxfMSxfMCxfMCxfMCwKKyAgICAgIF9lLF9mLF9mLF9lLF8zLF8xLF8zLF8wLF83LF82LF82LF82LF8zLF8wLF8yLF8wLF9lLF9kLF9mLF9jLF8xLF8xLF8xLF8wLF83LF80LF82LF80LF8xLF8wLF8wLF8wLF9mLF9jLF9lLF9jLF8xLF8wLF8wLF8wLF82LF80LF82LF80LF8wLF8wLF8wLF8wLF9kLF9jLF9jLF9jLF8xLF8wLF8wLF8wLF80LF80LF80LF80LF8wLF8wLF8wLF8wLF9hLF85LF9iLF84LF8xLF8xLF8xLF8wLF8zLF8wLF8yLF8wLF8xLF8wLF8wLF8wLF84LF85LF85LF84LF8xLF8xLF8xLF8wLF8xLF8wLF8wLF8wLF8xLF8wLF8wLF8wLF85LF84LF84LF84LF8xLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF85LF84LF84LF84LF8xLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLAorICAgICAgXzAsXzAsXzAsXzAsXzgsXzgsXzgsXzksXzgsXzgsXzgsXzksXzAsXzEsXzEsXzEsXzAsXzAsXzAsXzAsXzgsX2EsXzgsX2IsXzgsXzgsXzgsXzksXzAsXzMsXzEsXzMsXzAsXzAsXzAsXzEsXzgsX2IsXzksX2IsXzgsXzksXzksXzgsXzEsXzMsXzEsXzIsXzAsXzIsXzAsXzMsX2EsXzksX2IsXzksXzgsX2IsXzksX2EsXzMsXzEsXzMsXzAsXzAsXzAsXzAsXzAsX2MsX2UsX2MsX2YsXzgsXzgsXzgsXzksXzQsXzcsXzUsXzcsXzAsXzIsXzAsXzIsX2UsX2MsX2UsX2QsXzgsX2EsXzgsX2IsXzYsXzUsXzcsXzUsXzAsXzIsXzAsXzMsX2UsX2QsX2YsX2QsXzgsX2IsXzksX2EsXzcsXzUsXzcsXzQsXzIsXzAsXzIsXzEsX2MsX2QsX2QsX2QsX2EsXzksX2IsXzgsXzUsXzUsXzUsXzQsCisgICAgICBfOCxfOCxfOCxfOSxfNCxfNyxfNSxfNyxfMCxfMSxfMSxfMCxfNSxfNyxfNSxfNixfOCxfYSxfOCxfYixfNixfNyxfNyxfNyxfMCxfMyxfMSxfMixfNyxfNyxfNyxfNixfOCxfYixfOSxfYSxfNyxfNyxfNyxfNixfMSxfMixfMCxfMixfNyxfNixfNixfNixfYSxfYixfYixfYSxfNyxfNSxfNyxfNCxfMyxfMixfMixfMixfNyxfNCxfNixfNCxfYyxfZSxfYyxfZixfMixfMyxfMyxfMyxfNCxfNyxfNSxfNixfMyxfMyxfMyxfMixfZSxfZSxfZSxfZixfMixfMSxfMyxfMSxfNixfNyxfNyxfNixfMyxfMSxfMyxfMCxfZSxfZixfZixfZSxfMyxfMSxfMyxfMCxfNyxfNixfNixfNixfMyxfMCxfMixfMCxfZSxfZCxfZixfYyxfMSxfMSxfMSxfMCxfNyxfNCxfNixfNCxfMSxfMCxfMCxfMCwKKyAgICAgIF8wLF8wLF8wLF8wLF9jLF9lLF9jLF9mLF84LF84LF84LF85LF80LF83LF81LF83LF8wLF8yLF8wLF8yLF9lLF9jLF9lLF9kLF84LF9hLF84LF9iLF82LF81LF83LF81LF8wLF8yLF8wLF8zLF9lLF9kLF9mLF9kLF84LF9iLF85LF9hLF83LF81LF83LF80LF8yLF8wLF8yLF8xLF9jLF9kLF9kLF9kLF9hLF85LF9iLF84LF81LF81LF81LF80LF80LF82LF80LF82LF9hLF84LF9hLF85LF9jLF9lLF9jLF9mLF8yLF8xLF8zLF8xLF82LF80LF82LF80LF84LF84LF84LF85LF9lLF9jLF9lLF9kLF8wLF8xLF8xLF8xLF82LF80LF82LF81LF84LF85LF85LF85LF9lLF9kLF9mLF9jLF8xLF8xLF8xLF8wLF80LF80LF80LF81LF84LF85LF85LF85LF9jLF9kLF9kLF9jLF8xLF8xLF8xLF8wLAorICAgICAgX2MsX2UsX2MsX2YsXzIsXzMsXzMsXzMsXzQsXzcsXzUsXzYsXzMsXzMsXzMsXzIsX2UsX2UsX2UsX2YsXzIsXzEsXzMsXzEsXzYsXzcsXzcsXzYsXzMsXzEsXzMsXzAsX2UsX2YsX2YsX2UsXzMsXzEsXzMsXzAsXzcsXzYsXzYsXzYsXzMsXzAsXzIsXzAsX2UsX2QsX2YsX2MsXzEsXzEsXzEsXzAsXzcsXzQsXzYsXzQsXzEsXzAsXzAsXzAsX2EsX2EsX2EsX2IsXzIsXzEsXzMsXzEsXzIsXzMsXzMsXzIsXzMsXzEsXzMsXzAsX2EsXzgsX2EsXzksXzAsXzEsXzEsXzEsXzIsXzEsXzMsXzAsXzEsXzEsXzEsXzAsX2EsXzksX2IsXzgsXzEsXzEsXzEsXzAsXzMsXzAsXzIsXzAsXzEsXzAsXzAsXzAsXzgsXzksXzksXzgsXzEsXzEsXzEsXzAsXzEsXzAsXzAsXzAsXzEsXzAsXzAsXzAsCisgICAgICBfOCxfOCxfOCxfOSxfNCxfNyxfNSxfNyxfMCxfMSxfMSxfMCxfNSxfNyxfNSxfNixfOCxfYSxfOCxfYixfNixfNSxfNyxfNSxfMCxfMyxfMSxfMixfNyxfNSxfNyxfNCxfOCxfYixfOSxfYSxfNyxfNSxfNyxfNCxfMSxfMixfMCxfMixfNyxfNCxfNixfNCxfYSxfOSxfYixfOCxfNSxfNSxfNSxfNCxfMyxfMCxfMixfMCxfNSxfNCxfNCxfNCxfYyxfZSxfYyxfZixfNixfNSxfNyxfNSxfNCxfNyxfNSxfNixfNyxfNSxfNyxfNCxfZSxfYyxfZSxfZCxfNCxfNSxfNSxfNSxfNixfNSxfNyxfNCxfNSxfNSxfNSxfNCxfZSxfZCxfZixfYyxfNSxfNSxfNSxfNCxfNyxfNCxfNixfNCxfNSxfNCxfNCxfNCxfYyxfZCxfZCxfYyxfNSxfNSxfNSxfNCxfNSxfNCxfNCxfNCxfNSxfNCxfNCxfNCwKKyAgICAgIF80LF83LF81LF82LF83LF83LF83LF82LF81LF82LF80LF82LF83LF82LF82LF82LF82LF83LF83LF82LF83LF81LF83LF80LF83LF82LF82LF82LF83LF80LF82LF80LF83LF82LF82LF82LF83LF80LF82LF80LF82LF82LF82LF82LF82LF80LF82LF80LF83LF80LF82LF80LF81LF80LF80LF80LF82LF80LF82LF80LF80LF80LF80LF80LF82LF83LF83LF82LF8zLF8xLF8zLF8wLF83LF82LF82LF82LF8zLF8wLF8yLF8wLF82LF81LF83LF80LF8xLF8xLF8xLF8wLF83LF80LF82LF80LF8xLF8wLF8wLF8wLF83LF80LF82LF80LF8xLF8wLF8wLF8wLF82LF80LF82LF80LF8wLF8wLF8wLF8wLF81LF80LF80LF80LF8xLF8wLF8wLF8wLF80LF80LF80LF80LF8wLF8wLF8wLF8wLAorICAgICAgX2MsX2UsX2MsX2YsXzYsXzUsXzcsXzUsXzQsXzcsXzUsXzYsXzcsXzUsXzcsXzQsX2UsX2MsX2UsX2QsXzQsXzUsXzUsXzUsXzYsXzUsXzcsXzQsXzUsXzUsXzUsXzQsX2UsX2QsX2YsX2MsXzUsXzUsXzUsXzQsXzcsXzQsXzYsXzQsXzUsXzQsXzQsXzQsX2MsX2QsX2QsX2MsXzUsXzUsXzUsXzQsXzUsXzQsXzQsXzQsXzUsXzQsXzQsXzQsX2UsX2MsX2UsX2QsXzAsXzEsXzEsXzEsXzYsXzUsXzcsXzQsXzEsXzEsXzEsXzAsX2MsX2MsX2MsX2QsXzAsXzEsXzEsXzEsXzQsXzUsXzUsXzQsXzEsXzEsXzEsXzAsX2MsX2QsX2QsX2MsXzEsXzEsXzEsXzAsXzUsXzQsXzQsXzQsXzEsXzAsXzAsXzAsX2MsX2QsX2QsX2MsXzEsXzEsXzEsXzAsXzUsXzQsXzQsXzQsXzEsXzAsXzAsXzAsCisgICAgICBfNixfNyxfNyxfNixfMyxfMSxfMyxfMCxfNyxfNixfNixfNixfMyxfMCxfMixfMCxfNixfNSxfNyxfNCxfMSxfMSxfMSxfMCxfNyxfNCxfNixfNCxfMSxfMCxfMCxfMCxfNyxfNCxfNixfNCxfMSxfMCxfMCxfMCxfNixfNCxfNixfNCxfMCxfMCxfMCxfMCxfNSxfNCxfNCxfNCxfMSxfMCxfMCxfMCxfNCxfNCxfNCxfNCxfMCxfMCxfMCxfMCxfMixfMSxfMyxfMCxfMSxfMSxfMSxfMCxfMyxfMCxfMixfMCxfMSxfMCxfMCxfMCxfMCxfMSxfMSxfMCxfMSxfMSxfMSxfMCxfMSxfMCxfMCxfMCxfMSxfMCxfMCxfMCxfMSxfMCxfMCxfMCxfMSxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMSxfMCxfMCxfMCxfMSxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCwKKyAgICAgIF8wLF8wLF8wLF8wLF9jLF9jLF9jLF9kLF84LF84LF84LF85LF80LF81LF81LF81LF8wLF8wLF8wLF8wLF9jLF9lLF9jLF9mLF84LF84LF84LF85LF80LF83LF81LF83LF8wLF8wLF8wLF8xLF9jLF9mLF9kLF9mLF84LF85LF85LF84LF81LF83LF81LF82LF8wLF8yLF8wLF8zLF9lLF9kLF9mLF9kLF84LF9iLF85LF9hLF83LF81LF83LF80LF80LF80LF80LF80LF84LF9hLF84LF9iLF9jLF9jLF9jLF9kLF8wLF8zLF8xLF8zLF80LF82LF80LF82LF9hLF84LF9hLF85LF9jLF9lLF9jLF9mLF8yLF8xLF8zLF8xLF80LF82LF80LF83LF9hLF85LF9iLF85LF9jLF9mLF9kLF9lLF8zLF8xLF8zLF8wLF82LF80LF82LF81LF84LF85LF85LF85LF9lLF9kLF9mLF9jLF8xLF8xLF8xLF8wLAorICAgICAgX2MsX2MsX2MsX2QsXzAsXzMsXzEsXzMsXzQsXzUsXzUsXzQsXzEsXzMsXzEsXzIsX2MsX2UsX2MsX2YsXzIsXzMsXzMsXzMsXzQsXzcsXzUsXzYsXzMsXzMsXzMsXzIsX2MsX2YsX2QsX2UsXzMsXzMsXzMsXzIsXzUsXzYsXzQsXzYsXzMsXzIsXzIsXzIsX2UsX2YsX2YsX2UsXzMsXzEsXzMsXzAsXzcsXzYsXzYsXzYsXzMsXzAsXzIsXzAsXzgsX2EsXzgsX2IsXzIsXzMsXzMsXzMsXzAsXzMsXzEsXzIsXzMsXzMsXzMsXzIsX2EsX2EsX2EsX2IsXzIsXzEsXzMsXzEsXzIsXzMsXzMsXzIsXzMsXzEsXzMsXzAsX2EsX2IsX2IsX2EsXzMsXzEsXzMsXzAsXzMsXzIsXzIsXzIsXzMsXzAsXzIsXzAsX2EsXzksX2IsXzgsXzEsXzEsXzEsXzAsXzMsXzAsXzIsXzAsXzEsXzAsXzAsXzAsCisgICAgICBfNCxfNCxfNCxfNCxfOCxfYSxfOCxfYixfYyxfYyxfYyxfZCxfMCxfMyxfMSxfMyxfNCxfNixfNCxfNixfYSxfOCxfYSxfOSxfYyxfZSxfYyxfZixfMixfMSxfMyxfMSxfNCxfNixfNCxfNyxfYSxfOSxfYixfOSxfYyxfZixfZCxfZSxfMyxfMSxfMyxfMCxfNixfNCxfNixfNSxfOCxfOSxfOSxfOSxfZSxfZCxfZixfYyxfMSxfMSxfMSxfMCxfMCxfMixfMCxfMixfYSxfOCxfYSxfOSxfOCxfYSxfOCxfYixfMixfMSxfMyxfMSxfMixfMCxfMixfMCxfOCxfOCxfOCxfOSxfYSxfOCxfYSxfOSxfMCxfMSxfMSxfMSxfMixfMCxfMixfMSxfOCxfOSxfOSxfOSxfYSxfOSxfYixfOCxfMSxfMSxfMSxfMCxfMCxfMCxfMCxfMSxfOCxfOSxfOSxfOSxfOCxfOSxfOSxfOCxfMSxfMSxfMSxfMCwKKyAgICAgIF84LF9hLF84LF9iLF8yLF8zLF8zLF8zLF8wLF8zLF8xLF8yLF8zLF8zLF8zLF8yLF9hLF9hLF9hLF9iLF8yLF8xLF8zLF8xLF8yLF8zLF8zLF8yLF8zLF8xLF8zLF8wLF9hLF9iLF9iLF9hLF8zLF8xLF8zLF8wLF8zLF8yLF8yLF8yLF8zLF8wLF8yLF8wLF9hLF85LF9iLF84LF8xLF8xLF8xLF8wLF8zLF8wLF8yLF8wLF8xLF8wLF8wLF8wLF9hLF9hLF9hLF9iLF8yLF8xLF8zLF8xLF8yLF8zLF8zLF8yLF8zLF8xLF8zLF8wLF9hLF84LF9hLF85LF8wLF8xLF8xLF8xLF8yLF8xLF8zLF8wLF8xLF8xLF8xLF8wLF9hLF85LF9iLF84LF8xLF8xLF8xLF8wLF8zLF8wLF8yLF8wLF8xLF8wLF8wLF8wLF84LF85LF85LF84LF8xLF8xLF8xLF8wLF8xLF8wLF8wLF8wLF8xLF8wLF8wLF8wLAorICAgICAgX2MsX2MsX2MsX2QsXzQsXzcsXzUsXzcsXzQsXzUsXzUsXzQsXzUsXzcsXzUsXzYsX2MsX2UsX2MsX2YsXzYsXzUsXzcsXzUsXzQsXzcsXzUsXzYsXzcsXzUsXzcsXzQsX2MsX2YsX2QsX2UsXzcsXzUsXzcsXzQsXzUsXzYsXzQsXzYsXzcsXzQsXzYsXzQsX2UsX2QsX2YsX2MsXzUsXzUsXzUsXzQsXzcsXzQsXzYsXzQsXzUsXzQsXzQsXzQsX2MsX2UsX2MsX2YsXzIsXzEsXzMsXzEsXzQsXzcsXzUsXzYsXzMsXzEsXzMsXzAsX2UsX2MsX2UsX2QsXzAsXzEsXzEsXzEsXzYsXzUsXzcsXzQsXzEsXzEsXzEsXzAsX2UsX2QsX2YsX2MsXzEsXzEsXzEsXzAsXzcsXzQsXzYsXzQsXzEsXzAsXzAsXzAsX2MsX2QsX2QsX2MsXzEsXzEsXzEsXzAsXzUsXzQsXzQsXzQsXzEsXzAsXzAsXzAsCisgICAgICBfNCxfNyxfNSxfNixfMyxfMyxfMyxfMixfNSxfNixfNCxfNixfMyxfMixfMixfMixfNixfNyxfNyxfNixfMyxfMSxfMyxfMCxfNyxfNixfNixfNixfMyxfMCxfMixfMCxfNyxfNixfNixfNixfMyxfMCxfMixfMCxfNixfNixfNixfNixfMixfMCxfMixfMCxfNyxfNCxfNixfNCxfMSxfMCxfMCxfMCxfNixfNCxfNixfNCxfMCxfMCxfMCxfMCxfMixfMyxfMyxfMixfMyxfMSxfMyxfMCxfMyxfMixfMixfMixfMyxfMCxfMixfMCxfMixfMSxfMyxfMCxfMSxfMSxfMSxfMCxfMyxfMCxfMixfMCxfMSxfMCxfMCxfMCxfMyxfMCxfMixfMCxfMSxfMCxfMCxfMCxfMixfMCxfMixfMCxfMCxfMCxfMCxfMCxfMSxfMCxfMCxfMCxfMSxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCwKKyAgICAgIF9jLF9lLF9jLF9mLF8yLF8xLF8zLF8xLF80LF83LF81LF82LF8zLF8xLF8zLF8wLF9lLF9jLF9lLF9kLF8wLF8xLF8xLF8xLF82LF81LF83LF80LF8xLF8xLF8xLF8wLF9lLF9kLF9mLF9jLF8xLF8xLF8xLF8wLF83LF80LF82LF80LF8xLF8wLF8wLF8wLF9jLF9kLF9kLF9jLF8xLF8xLF8xLF8wLF81LF80LF80LF80LF8xLF8wLF8wLF8wLF9hLF84LF9hLF85LF8wLF8xLF8xLF8xLF8yLF8xLF8zLF8wLF8xLF8xLF8xLF8wLF84LF84LF84LF85LF8wLF8xLF8xLF8xLF8wLF8xLF8xLF8wLF8xLF8xLF8xLF8wLF84LF85LF85LF84LF8xLF8xLF8xLF8wLF8xLF8wLF8wLF8wLF8xLF8wLF8wLF8wLF84LF85LF85LF84LF8xLF8xLF8xLF8wLF8xLF8wLF8wLF8wLF8xLF8wLF8wLF8wLAorICAgICAgXzIsXzMsXzMsXzIsXzMsXzEsXzMsXzAsXzMsXzIsXzIsXzIsXzMsXzAsXzIsXzAsXzIsXzEsXzMsXzAsXzEsXzEsXzEsXzAsXzMsXzAsXzIsXzAsXzEsXzAsXzAsXzAsXzMsXzAsXzIsXzAsXzEsXzAsXzAsXzAsXzIsXzAsXzIsXzAsXzAsXzAsXzAsXzAsXzEsXzAsXzAsXzAsXzEsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzIsXzEsXzMsXzAsXzEsXzEsXzEsXzAsXzMsXzAsXzIsXzAsXzEsXzAsXzAsXzAsXzAsXzEsXzEsXzAsXzEsXzEsXzEsXzAsXzEsXzAsXzAsXzAsXzEsXzAsXzAsXzAsXzEsXzAsXzAsXzAsXzEsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzEsXzAsXzAsXzAsXzEsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsCisgICAgICBfMCxfMCxfMCxfMSxfOCxfYixfOSxfYixfOCxfOSxfOSxfOCxfOSxfYixfOSxfYSxfMCxfMixfMCxfMyxfYSxfOSxfYixfOSxfOCxfYixfOSxfYSxfYixfOSxfYixfOCxfMCxfMyxfMSxfMixfYixfOSxfYixfOCxfOSxfYSxfOCxfYSxfYixfOCxfYSxfOCxfMixfMSxfMyxfMCxfOSxfOSxfOSxfOCxfYixfOCxfYSxfOCxfOSxfOCxfOCxfOCxfMCxfMixfMCxfMyxfZSxfZCxfZixfZCxfOCxfYixfOSxfYSxfZixfZCxfZixfYyxfMixfMCxfMixfMSxfYyxfZCxfZCxfZCxfYSxfOSxfYixfOCxfZCxfZCxfZCxfYyxfMixfMSxfMyxfMCxfZCxfZCxfZCxfYyxfYixfOCxfYSxfOCxfZCxfYyxfYyxfYyxfMCxfMSxfMSxfMCxfZCxfZCxfZCxfYyxfOSxfOCxfOCxfOCxfZCxfYyxfYyxfYywKKyAgICAgIF84LF9iLF85LF9hLF9mLF9mLF9mLF9lLF85LF9hLF84LF9hLF83LF82LF82LF82LF9hLF9iLF9iLF9hLF9mLF9kLF9mLF9jLF9iLF9hLF9hLF9hLF83LF80LF82LF80LF9iLF9hLF9hLF9hLF9mLF9jLF9lLF9jLF9hLF9hLF9hLF9hLF82LF80LF82LF80LF9iLF84LF9hLF84LF9kLF9jLF9jLF9jLF9hLF84LF9hLF84LF80LF80LF80LF80LF9lLF9mLF9mLF9lLF9iLF85LF9iLF84LF9mLF9lLF9lLF9lLF8zLF8wLF8yLF8wLF9lLF9kLF9mLF9jLF85LF85LF85LF84LF9mLF9jLF9lLF9jLF8xLF8wLF8wLF8wLF9mLF9jLF9lLF9jLF85LF84LF84LF84LF9lLF9jLF9lLF9jLF8wLF8wLF8wLF8wLF9kLF9jLF9jLF9jLF85LF84LF84LF84LF9jLF9jLF9jLF9jLF8wLF8wLF8wLF8wLAorICAgICAgXzAsXzIsXzAsXzMsX2UsX2QsX2YsX2QsXzgsX2IsXzksX2EsX2YsX2QsX2YsX2MsXzIsXzAsXzIsXzEsX2MsX2QsX2QsX2QsX2EsXzksX2IsXzgsX2QsX2QsX2QsX2MsXzIsXzEsXzMsXzAsX2QsX2QsX2QsX2MsX2IsXzgsX2EsXzgsX2QsX2MsX2MsX2MsXzAsXzEsXzEsXzAsX2QsX2QsX2QsX2MsXzksXzgsXzgsXzgsX2QsX2MsX2MsX2MsXzYsXzQsXzYsXzUsXzgsXzksXzksXzksX2UsX2QsX2YsX2MsXzksXzksXzksXzgsXzQsXzQsXzQsXzUsXzgsXzksXzksXzksX2MsX2QsX2QsX2MsXzksXzksXzksXzgsXzQsXzUsXzUsXzQsXzksXzksXzksXzgsX2QsX2MsX2MsX2MsXzksXzgsXzgsXzgsXzQsXzUsXzUsXzQsXzksXzksXzksXzgsX2QsX2MsX2MsX2MsXzksXzgsXzgsXzgsCisgICAgICBfZSxfZixfZixfZSxfYixfOSxfYixfOCxfZixfZSxfZSxfZSxfMyxfMCxfMixfMCxfZSxfZCxfZixfYyxfOSxfOSxfOSxfOCxfZixfYyxfZSxfYyxfMSxfMCxfMCxfMCxfZixfYyxfZSxfYyxfOSxfOCxfOCxfOCxfZSxfYyxfZSxfYyxfMCxfMCxfMCxfMCxfZCxfYyxfYyxfYyxfOSxfOCxfOCxfOCxfYyxfYyxfYyxfYyxfMCxfMCxfMCxfMCxfYSxfOSxfYixfOCxfOSxfOSxfOSxfOCxfYixfOCxfYSxfOCxfMSxfMCxfMCxfMCxfOCxfOSxfOSxfOCxfOSxfOSxfOSxfOCxfOSxfOCxfOCxfOCxfMSxfMCxfMCxfMCxfOSxfOCxfOCxfOCxfOSxfOCxfOCxfOCxfOCxfOCxfOCxfOCxfMCxfMCxfMCxfMCxfOSxfOCxfOCxfOCxfOSxfOCxfOCxfOCxfOCxfOCxfOCxfOCxfMCxfMCxfMCxfMCwKKyAgICAgIF84LF9iLF85LF9hLF9mLF9kLF9mLF9jLF85LF9hLF84LF9hLF83LF80LF82LF80LF9hLF85LF9iLF84LF9kLF9kLF9kLF9jLF9iLF84LF9hLF84LF81LF80LF80LF80LF9iLF84LF9hLF84LF9kLF9jLF9jLF9jLF9hLF84LF9hLF84LF80LF80LF80LF80LF85LF84LF84LF84LF9kLF9jLF9jLF9jLF84LF84LF84LF84LF80LF80LF80LF80LF9lLF9kLF9mLF9jLF9kLF9kLF9kLF9jLF9mLF9jLF9lLF9jLF81LF80LF80LF80LF9jLF9kLF9kLF9jLF9kLF9kLF9kLF9jLF9kLF9jLF9jLF9jLF81LF80LF80LF80LF9kLF9jLF9jLF9jLF9kLF9jLF9jLF9jLF9jLF9jLF9jLF9jLF80LF80LF80LF80LF9kLF9jLF9jLF9jLF9kLF9jLF9jLF9jLF9jLF9jLF9jLF9jLF80LF80LF80LF80LAorICAgICAgX2YsX2UsX2UsX2UsXzcsXzQsXzYsXzQsXzYsXzYsXzYsXzYsXzYsXzQsXzYsXzQsX2YsX2MsX2UsX2MsXzUsXzQsXzQsXzQsXzYsXzQsXzYsXzQsXzQsXzQsXzQsXzQsX2UsX2MsX2UsX2MsXzQsXzQsXzQsXzQsXzYsXzQsXzYsXzQsXzQsXzQsXzQsXzQsX2MsX2MsX2MsX2MsXzQsXzQsXzQsXzQsXzQsXzQsXzQsXzQsXzQsXzQsXzQsXzQsX2YsX2MsX2UsX2MsXzEsXzAsXzAsXzAsXzYsXzQsXzYsXzQsXzAsXzAsXzAsXzAsX2QsX2MsX2MsX2MsXzEsXzAsXzAsXzAsXzQsXzQsXzQsXzQsXzAsXzAsXzAsXzAsX2MsX2MsX2MsX2MsXzAsXzAsXzAsXzAsXzQsXzQsXzQsXzQsXzAsXzAsXzAsXzAsX2MsX2MsX2MsX2MsXzAsXzAsXzAsXzAsXzQsXzQsXzQsXzQsXzAsXzAsXzAsXzAsCisgICAgICBfZSxfZCxfZixfYyxfZCxfZCxfZCxfYyxfZixfYyxfZSxfYyxfNSxfNCxfNCxfNCxfYyxfZCxfZCxfYyxfZCxfZCxfZCxfYyxfZCxfYyxfYyxfYyxfNSxfNCxfNCxfNCxfZCxfYyxfYyxfYyxfZCxfYyxfYyxfYyxfYyxfYyxfYyxfYyxfNCxfNCxfNCxfNCxfZCxfYyxfYyxfYyxfZCxfYyxfYyxfYyxfYyxfYyxfYyxfYyxfNCxfNCxfNCxfNCxfYyxfZCxfZCxfYyxfOSxfOSxfOSxfOCxfZCxfYyxfYyxfYyxfMSxfMCxfMCxfMCxfYyxfZCxfZCxfYyxfOSxfOSxfOSxfOCxfZCxfYyxfYyxfYyxfMSxfMCxfMCxfMCxfZCxfYyxfYyxfYyxfOSxfOCxfOCxfOCxfYyxfYyxfYyxfYyxfMCxfMCxfMCxfMCxfZCxfYyxfYyxfYyxfOSxfOCxfOCxfOCxfYyxfYyxfYyxfYyxfMCxfMCxfMCxfMCwKKyAgICAgIF9mLF9jLF9lLF9jLF8xLF8wLF8wLF8wLF82LF80LF82LF80LF8wLF8wLF8wLF8wLF9kLF9jLF9jLF9jLF8xLF8wLF8wLF8wLF80LF80LF80LF80LF8wLF8wLF8wLF8wLF9jLF9jLF9jLF9jLF8wLF8wLF8wLF8wLF80LF80LF80LF80LF8wLF8wLF8wLF8wLF9jLF9jLF9jLF9jLF8wLF8wLF8wLF8wLF80LF80LF80LF80LF8wLF8wLF8wLF8wLF85LF84LF84LF84LF8xLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF85LF84LF84LF84LF8xLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF84LF84LF84LF84LF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF84LF84LF84LF84LF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLAorICAgICAgXzAsXzAsXzAsXzEsX2MsX2YsX2QsX2YsXzgsXzksXzksXzgsX2QsX2YsX2QsX2UsXzAsXzIsXzAsXzMsX2UsX2QsX2YsX2QsXzgsX2IsXzksX2EsX2YsX2QsX2YsX2MsXzAsXzMsXzEsXzIsX2YsX2QsX2YsX2MsXzksX2EsXzgsX2EsX2YsX2MsX2UsX2MsXzIsXzEsXzMsXzAsX2QsX2QsX2QsX2MsX2IsXzgsX2EsXzgsX2QsX2MsX2MsX2MsXzQsXzYsXzQsXzcsX2EsXzksX2IsXzksX2MsX2YsX2QsX2UsX2IsXzksX2IsXzgsXzYsXzQsXzYsXzUsXzgsXzksXzksXzksX2UsX2QsX2YsX2MsXzksXzksXzksXzgsXzYsXzUsXzcsXzQsXzksXzksXzksXzgsX2YsX2MsX2UsX2MsXzksXzgsXzgsXzgsXzQsXzUsXzUsXzQsXzksXzksXzksXzgsX2QsX2MsX2MsX2MsXzksXzgsXzgsXzgsCisgICAgICBfYyxfZixfZCxfZSxfYixfYixfYixfYSxfZCxfZSxfYyxfZSxfMyxfMixfMixfMixfZSxfZixfZixfZSxfYixfOSxfYixfOCxfZixfZSxfZSxfZSxfMyxfMCxfMixfMCxfZixfZSxfZSxfZSxfYixfOCxfYSxfOCxfZSxfZSxfZSxfZSxfMixfMCxfMixfMCxfZixfYyxfZSxfYyxfOSxfOCxfOCxfOCxfZSxfYyxfZSxfYyxfMCxfMCxfMCxfMCxfYSxfYixfYixfYSxfYixfOSxfYixfOCxfYixfYSxfYSxfYSxfMyxfMCxfMixfMCxfYSxfOSxfYixfOCxfOSxfOSxfOSxfOCxfYixfOCxfYSxfOCxfMSxfMCxfMCxfMCxfYixfOCxfYSxfOCxfOSxfOCxfOCxfOCxfYSxfOCxfYSxfOCxfMCxfMCxfMCxfMCxfOSxfOCxfOCxfOCxfOSxfOCxfOCxfOCxfOCxfOCxfOCxfOCxfMCxfMCxfMCxfMCwKKyAgICAgIF80LF82LF80LF83LF9hLF85LF9iLF85LF9jLF9mLF9kLF9lLF9iLF85LF9iLF84LF82LF80LF82LF81LF84LF85LF85LF85LF9lLF9kLF9mLF9jLF85LF85LF85LF84LF82LF81LF83LF80LF85LF85LF85LF84LF9mLF9jLF9lLF9jLF85LF84LF84LF84LF80LF81LF81LF80LF85LF85LF85LF84LF9kLF9jLF9jLF9jLF85LF84LF84LF84LF8yLF8wLF8yLF8xLF84LF85LF85LF85LF9hLF85LF9iLF84LF85LF85LF85LF84LF8wLF8wLF8wLF8xLF84LF85LF85LF85LF84LF85LF85LF84LF85LF85LF85LF84LF8wLF8xLF8xLF8wLF85LF85LF85LF84LF85LF84LF84LF84LF85LF84LF84LF84LF8wLF8xLF8xLF8wLF85LF85LF85LF84LF85LF84LF84LF84LF85LF84LF84LF84LAorICAgICAgX2EsX2IsX2IsX2EsX2IsXzksX2IsXzgsX2IsX2EsX2EsX2EsXzMsXzAsXzIsXzAsX2EsXzksX2IsXzgsXzksXzksXzksXzgsX2IsXzgsX2EsXzgsXzEsXzAsXzAsXzAsX2IsXzgsX2EsXzgsXzksXzgsXzgsXzgsX2EsXzgsX2EsXzgsXzAsXzAsXzAsXzAsXzksXzgsXzgsXzgsXzksXzgsXzgsXzgsXzgsXzgsXzgsXzgsXzAsXzAsXzAsXzAsX2EsXzksX2IsXzgsXzksXzksXzksXzgsX2IsXzgsX2EsXzgsXzEsXzAsXzAsXzAsXzgsXzksXzksXzgsXzksXzksXzksXzgsXzksXzgsXzgsXzgsXzEsXzAsXzAsXzAsXzksXzgsXzgsXzgsXzksXzgsXzgsXzgsXzgsXzgsXzgsXzgsXzAsXzAsXzAsXzAsXzksXzgsXzgsXzgsXzksXzgsXzgsXzgsXzgsXzgsXzgsXzgsXzAsXzAsXzAsXzAsCisgICAgICBfYyxfZixfZCxfZSxfZixfZCxfZixfYyxfZCxfZSxfYyxfZSxfNyxfNCxfNixfNCxfZSxfZCxfZixfYyxfZCxfZCxfZCxfYyxfZixfYyxfZSxfYyxfNSxfNCxfNCxfNCxfZixfYyxfZSxfYyxfZCxfYyxfYyxfYyxfZSxfYyxfZSxfYyxfNCxfNCxfNCxfNCxfZCxfYyxfYyxfYyxfZCxfYyxfYyxfYyxfYyxfYyxfYyxfYyxfNCxfNCxfNCxfNCxfZSxfZCxfZixfYyxfOSxfOSxfOSxfOCxfZixfYyxfZSxfYyxfMSxfMCxfMCxfMCxfYyxfZCxfZCxfYyxfOSxfOSxfOSxfOCxfZCxfYyxfYyxfYyxfMSxfMCxfMCxfMCxfZCxfYyxfYyxfYyxfOSxfOCxfOCxfOCxfYyxfYyxfYyxfYyxfMCxfMCxfMCxfMCxfZCxfYyxfYyxfYyxfOSxfOCxfOCxfOCxfYyxfYyxfYyxfYyxfMCxfMCxfMCxfMCwKKyAgICAgIF9mLF9lLF9lLF9lLF8zLF8wLF8yLF8wLF82LF82LF82LF82LF8yLF8wLF8yLF8wLF9mLF9jLF9lLF9jLF8xLF8wLF8wLF8wLF82LF80LF82LF80LF8wLF8wLF8wLF8wLF9lLF9jLF9lLF9jLF8wLF8wLF8wLF8wLF82LF80LF82LF80LF8wLF8wLF8wLF8wLF9jLF9jLF9jLF9jLF8wLF8wLF8wLF8wLF80LF80LF80LF80LF8wLF8wLF8wLF8wLF9iLF84LF9hLF84LF8xLF8wLF8wLF8wLF8yLF8wLF8yLF8wLF8wLF8wLF8wLF8wLF85LF84LF84LF84LF8xLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF84LF84LF84LF84LF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF84LF84LF84LF84LF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLAorICAgICAgX2UsX2QsX2YsX2MsXzksXzksXzksXzgsX2YsX2MsX2UsX2MsXzEsXzAsXzAsXzAsX2MsX2QsX2QsX2MsXzksXzksXzksXzgsX2QsX2MsX2MsX2MsXzEsXzAsXzAsXzAsX2QsX2MsX2MsX2MsXzksXzgsXzgsXzgsX2MsX2MsX2MsX2MsXzAsXzAsXzAsXzAsX2QsX2MsX2MsX2MsXzksXzgsXzgsXzgsX2MsX2MsX2MsX2MsXzAsXzAsXzAsXzAsXzgsXzksXzksXzgsXzksXzksXzksXzgsXzksXzgsXzgsXzgsXzEsXzAsXzAsXzAsXzgsXzksXzksXzgsXzksXzksXzksXzgsXzksXzgsXzgsXzgsXzEsXzAsXzAsXzAsXzksXzgsXzgsXzgsXzksXzgsXzgsXzgsXzgsXzgsXzgsXzgsXzAsXzAsXzAsXzAsXzksXzgsXzgsXzgsXzksXzgsXzgsXzgsXzgsXzgsXzgsXzgsXzAsXzAsXzAsXzAsCisgICAgICBfYixfOCxfYSxfOCxfMSxfMCxfMCxfMCxfMixfMCxfMixfMCxfMCxfMCxfMCxfMCxfOSxfOCxfOCxfOCxfMSxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfOCxfOCxfOCxfOCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfOCxfOCxfOCxfOCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfOSxfOCxfOCxfOCxfMSxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfOSxfOCxfOCxfOCxfMSxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfOCxfOCxfOCxfOCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfOCxfOCxfOCxfOCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCwKKyAgICAgIF84LF84LF84LF85LF9jLF9mLF9kLF9mLF84LF85LF85LF84LF81LF83LF81LF82LF84LF9hLF84LF9iLF9lLF9kLF9mLF9kLF84LF9iLF85LF9hLF83LF81LF83LF80LF84LF9iLF85LF9hLF9mLF9kLF9mLF9jLF85LF9hLF84LF9hLF83LF80LF82LF80LF9hLF85LF9iLF84LF9kLF9kLF9kLF9jLF9iLF84LF9hLF84LF81LF80LF80LF80LF9jLF9lLF9jLF9mLF9hLF85LF9iLF85LF9jLF9mLF9kLF9lLF8zLF8xLF8zLF8wLF9lLF9jLF9lLF9kLF84LF85LF85LF85LF9lLF9kLF9mLF9jLF8xLF8xLF8xLF8wLF9lLF9kLF9mLF9jLF85LF85LF85LF84LF9mLF9jLF9lLF9jLF8xLF8wLF8wLF8wLF9jLF9kLF9kLF9jLF85LF85LF85LF84LF9kLF9jLF9jLF9jLF8xLF8wLF8wLF8wLAorICAgICAgX2MsX2YsX2QsX2UsXzMsXzMsXzMsXzIsXzUsXzYsXzQsXzYsXzMsXzIsXzIsXzIsX2UsX2YsX2YsX2UsXzMsXzEsXzMsXzAsXzcsXzYsXzYsXzYsXzMsXzAsXzIsXzAsX2YsX2UsX2UsX2UsXzMsXzAsXzIsXzAsXzYsXzYsXzYsXzYsXzIsXzAsXzIsXzAsX2YsX2MsX2UsX2MsXzEsXzAsXzAsXzAsXzYsXzQsXzYsXzQsXzAsXzAsXzAsXzAsX2EsX2IsX2IsX2EsXzMsXzEsXzMsXzAsXzMsXzIsXzIsXzIsXzMsXzAsXzIsXzAsX2EsXzksX2IsXzgsXzEsXzEsXzEsXzAsXzMsXzAsXzIsXzAsXzEsXzAsXzAsXzAsX2IsXzgsX2EsXzgsXzEsXzAsXzAsXzAsXzIsXzAsXzIsXzAsXzAsXzAsXzAsXzAsXzksXzgsXzgsXzgsXzEsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsCisgICAgICBfYyxfZSxfYyxfZixfYSxfOSxfYixfOSxfYyxfZixfZCxfZSxfMyxfMSxfMyxfMCxfZSxfYyxfZSxfZCxfOCxfOSxfOSxfOSxfZSxfZCxfZixfYyxfMSxfMSxfMSxfMCxfZSxfZCxfZixfYyxfOSxfOSxfOSxfOCxfZixfYyxfZSxfYyxfMSxfMCxfMCxfMCxfYyxfZCxfZCxfYyxfOSxfOSxfOSxfOCxfZCxfYyxfYyxfYyxfMSxfMCxfMCxfMCxfYSxfOCxfYSxfOSxfOCxfOSxfOSxfOSxfYSxfOSxfYixfOCxfMSxfMSxfMSxfMCxfOCxfOCxfOCxfOSxfOCxfOSxfOSxfOSxfOCxfOSxfOSxfOCxfMSxfMSxfMSxfMCxfOCxfOSxfOSxfOCxfOSxfOSxfOSxfOCxfOSxfOCxfOCxfOCxfMSxfMCxfMCxfMCxfOCxfOSxfOSxfOCxfOSxfOSxfOSxfOCxfOSxfOCxfOCxfOCxfMSxfMCxfMCxfMCwKKyAgICAgIF9hLF9iLF9iLF9hLF8zLF8xLF8zLF8wLF8zLF8yLF8yLF8yLF8zLF8wLF8yLF8wLF9hLF85LF9iLF84LF8xLF8xLF8xLF8wLF8zLF8wLF8yLF8wLF8xLF8wLF8wLF8wLF9iLF84LF9hLF84LF8xLF8wLF8wLF8wLF8yLF8wLF8yLF8wLF8wLF8wLF8wLF8wLF85LF84LF84LF84LF8xLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF9hLF85LF9iLF84LF8xLF8xLF8xLF8wLF8zLF8wLF8yLF8wLF8xLF8wLF8wLF8wLF84LF85LF85LF84LF8xLF8xLF8xLF8wLF8xLF8wLF8wLF8wLF8xLF8wLF8wLF8wLF85LF84LF84LF84LF8xLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF85LF84LF84LF84LF8xLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLAorICAgICAgX2MsX2YsX2QsX2UsXzcsXzUsXzcsXzQsXzUsXzYsXzQsXzYsXzcsXzQsXzYsXzQsX2UsX2QsX2YsX2MsXzUsXzUsXzUsXzQsXzcsXzQsXzYsXzQsXzUsXzQsXzQsXzQsX2YsX2MsX2UsX2MsXzUsXzQsXzQsXzQsXzYsXzQsXzYsXzQsXzQsXzQsXzQsXzQsX2QsX2MsX2MsX2MsXzUsXzQsXzQsXzQsXzQsXzQsXzQsXzQsXzQsXzQsXzQsXzQsX2UsX2QsX2YsX2MsXzEsXzEsXzEsXzAsXzcsXzQsXzYsXzQsXzEsXzAsXzAsXzAsX2MsX2QsX2QsX2MsXzEsXzEsXzEsXzAsXzUsXzQsXzQsXzQsXzEsXzAsXzAsXzAsX2QsX2MsX2MsX2MsXzEsXzAsXzAsXzAsXzQsXzQsXzQsXzQsXzAsXzAsXzAsXzAsX2QsX2MsX2MsX2MsXzEsXzAsXzAsXzAsXzQsXzQsXzQsXzQsXzAsXzAsXzAsXzAsCisgICAgICBfNyxfNixfNixfNixfMyxfMCxfMixfMCxfNixfNixfNixfNixfMixfMCxfMixfMCxfNyxfNCxfNixfNCxfMSxfMCxfMCxfMCxfNixfNCxfNixfNCxfMCxfMCxfMCxfMCxfNixfNCxfNixfNCxfMCxfMCxfMCxfMCxfNixfNCxfNixfNCxfMCxfMCxfMCxfMCxfNCxfNCxfNCxfNCxfMCxfMCxfMCxfMCxfNCxfNCxfNCxfNCxfMCxfMCxfMCxfMCxfMyxfMCxfMixfMCxfMSxfMCxfMCxfMCxfMixfMCxfMixfMCxfMCxfMCxfMCxfMCxfMSxfMCxfMCxfMCxfMSxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCwKKyAgICAgIF9lLF9kLF9mLF9jLF8xLF8xLF8xLF8wLF83LF80LF82LF80LF8xLF8wLF8wLF8wLF9jLF9kLF9kLF9jLF8xLF8xLF8xLF8wLF81LF80LF80LF80LF8xLF8wLF8wLF8wLF9kLF9jLF9jLF9jLF8xLF8wLF8wLF8wLF80LF80LF80LF80LF8wLF8wLF8wLF8wLF9kLF9jLF9jLF9jLF8xLF8wLF8wLF8wLF80LF80LF80LF80LF8wLF8wLF8wLF8wLF84LF85LF85LF84LF8xLF8xLF8xLF8wLF8xLF8wLF8wLF8wLF8xLF8wLF8wLF8wLF84LF85LF85LF84LF8xLF8xLF8xLF8wLF8xLF8wLF8wLF8wLF8xLF8wLF8wLF8wLF85LF84LF84LF84LF8xLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF85LF84LF84LF84LF8xLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLAorICAgICAgXzMsXzAsXzIsXzAsXzEsXzAsXzAsXzAsXzIsXzAsXzIsXzAsXzAsXzAsXzAsXzAsXzEsXzAsXzAsXzAsXzEsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzEsXzAsXzAsXzAsXzEsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzEsXzAsXzAsXzAsXzEsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsCisgICAgICBfYyxfYyxfYyxfZCxfOCxfYixfOSxfYixfYyxfZCxfZCxfYyxfMSxfMyxfMSxfMixfYyxfZSxfYyxfZixfYSxfOSxfYixfOSxfYyxfZixfZCxfZSxfMyxfMSxfMyxfMCxfYyxfZixfZCxfZSxfYixfOSxfYixfOCxfZCxfZSxfYyxfZSxfMyxfMCxfMixfMCxfZSxfZCxfZixfYyxfOSxfOSxfOSxfOCxfZixfYyxfZSxfYyxfMSxfMCxfMCxfMCxfOCxfYSxfOCxfYixfYSxfOSxfYixfOSxfOCxfYixfOSxfYSxfMyxfMSxfMyxfMCxfYSxfOCxfYSxfOSxfOCxfOSxfOSxfOSxfYSxfOSxfYixfOCxfMSxfMSxfMSxfMCxfYSxfOSxfYixfOCxfOSxfOSxfOSxfOCxfYixfOCxfYSxfOCxfMSxfMCxfMCxfMCxfOCxfOSxfOSxfOCxfOSxfOSxfOSxfOCxfOSxfOCxfOCxfOCxfMSxfMCxfMCxfMCwKKyAgICAgIF84LF9iLF85LF9hLF8zLF8zLF8zLF8yLF8xLF8yLF8wLF8yLF8zLF8yLF8yLF8yLF9hLF9iLF9iLF9hLF8zLF8xLF8zLF8wLF8zLF8yLF8yLF8yLF8zLF8wLF8yLF8wLF9iLF9hLF9hLF9hLF8zLF8wLF8yLF8wLF8yLF8yLF8yLF8yLF8yLF8wLF8yLF8wLF9iLF84LF9hLF84LF8xLF8wLF8wLF8wLF8yLF8wLF8yLF8wLF8wLF8wLF8wLF8wLF9hLF9iLF9iLF9hLF8zLF8xLF8zLF8wLF8zLF8yLF8yLF8yLF8zLF8wLF8yLF8wLF9hLF85LF9iLF84LF8xLF8xLF8xLF8wLF8zLF8wLF8yLF8wLF8xLF8wLF8wLF8wLF9iLF84LF9hLF84LF8xLF8wLF8wLF8wLF8yLF8wLF8yLF8wLF8wLF8wLF8wLF8wLF85LF84LF84LF84LF8xLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLAorICAgICAgXzgsX2EsXzgsX2IsX2EsXzksX2IsXzksXzgsX2IsXzksX2EsXzMsXzEsXzMsXzAsX2EsXzgsX2EsXzksXzgsXzksXzksXzksX2EsXzksX2IsXzgsXzEsXzEsXzEsXzAsX2EsXzksX2IsXzgsXzksXzksXzksXzgsX2IsXzgsX2EsXzgsXzEsXzAsXzAsXzAsXzgsXzksXzksXzgsXzksXzksXzksXzgsXzksXzgsXzgsXzgsXzEsXzAsXzAsXzAsX2EsXzgsX2EsXzksXzgsXzksXzksXzksX2EsXzksX2IsXzgsXzEsXzEsXzEsXzAsXzgsXzgsXzgsXzksXzgsXzksXzksXzksXzgsXzksXzksXzgsXzEsXzEsXzEsXzAsXzgsXzksXzksXzgsXzksXzksXzksXzgsXzksXzgsXzgsXzgsXzEsXzAsXzAsXzAsXzgsXzksXzksXzgsXzksXzksXzksXzgsXzksXzgsXzgsXzgsXzEsXzAsXzAsXzAsCisgICAgICBfYSxfYixfYixfYSxfMyxfMSxfMyxfMCxfMyxfMixfMixfMixfMyxfMCxfMixfMCxfYSxfOSxfYixfOCxfMSxfMSxfMSxfMCxfMyxfMCxfMixfMCxfMSxfMCxfMCxfMCxfYixfOCxfYSxfOCxfMSxfMCxfMCxfMCxfMixfMCxfMixfMCxfMCxfMCxfMCxfMCxfOSxfOCxfOCxfOCxfMSxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfYSxfOSxfYixfOCxfMSxfMSxfMSxfMCxfMyxfMCxfMixfMCxfMSxfMCxfMCxfMCxfOCxfOSxfOSxfOCxfMSxfMSxfMSxfMCxfMSxfMCxfMCxfMCxfMSxfMCxfMCxfMCxfOSxfOCxfOCxfOCxfMSxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfOSxfOCxfOCxfOCxfMSxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCwKKyAgICAgIF9jLF9mLF9kLF9lLF8zLF8xLF8zLF8wLF81LF82LF80LF82LF8zLF8wLF8yLF8wLF9lLF9kLF9mLF9jLF8xLF8xLF8xLF8wLF83LF80LF82LF80LF8xLF8wLF8wLF8wLF9mLF9jLF9lLF9jLF8xLF8wLF8wLF8wLF82LF80LF82LF80LF8wLF8wLF8wLF8wLF9kLF9jLF9jLF9jLF8xLF8wLF8wLF8wLF80LF80LF80LF80LF8wLF8wLF8wLF8wLF9hLF85LF9iLF84LF8xLF8xLF8xLF8wLF8zLF8wLF8yLF8wLF8xLF8wLF8wLF8wLF84LF85LF85LF84LF8xLF8xLF8xLF8wLF8xLF8wLF8wLF8wLF8xLF8wLF8wLF8wLF85LF84LF84LF84LF8xLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF85LF84LF84LF84LF8xLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLAorICAgICAgXzMsXzIsXzIsXzIsXzMsXzAsXzIsXzAsXzIsXzIsXzIsXzIsXzIsXzAsXzIsXzAsXzMsXzAsXzIsXzAsXzEsXzAsXzAsXzAsXzIsXzAsXzIsXzAsXzAsXzAsXzAsXzAsXzIsXzAsXzIsXzAsXzAsXzAsXzAsXzAsXzIsXzAsXzIsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzMsXzAsXzIsXzAsXzEsXzAsXzAsXzAsXzIsXzAsXzIsXzAsXzAsXzAsXzAsXzAsXzEsXzAsXzAsXzAsXzEsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsCisgICAgICBfYSxfOSxfYixfOCxfMSxfMSxfMSxfMCxfMyxfMCxfMixfMCxfMSxfMCxfMCxfMCxfOCxfOSxfOSxfOCxfMSxfMSxfMSxfMCxfMSxfMCxfMCxfMCxfMSxfMCxfMCxfMCxfOSxfOCxfOCxfOCxfMSxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfOSxfOCxfOCxfOCxfMSxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfOCxfOSxfOSxfOCxfMSxfMSxfMSxfMCxfMSxfMCxfMCxfMCxfMSxfMCxfMCxfMCxfOCxfOSxfOSxfOCxfMSxfMSxfMSxfMCxfMSxfMCxfMCxfMCxfMSxfMCxfMCxfMCxfOSxfOCxfOCxfOCxfMSxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfOSxfOCxfOCxfOCxfMSxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCwKKyAgICAgIF8zLF8wLF8yLF8wLF8xLF8wLF8wLF8wLF8yLF8wLF8yLF8wLF8wLF8wLF8wLF8wLF8xLF8wLF8wLF8wLF8xLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8xLF8wLF8wLF8wLF8xLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8xLF8wLF8wLF8wLF8xLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLAorICAgICAgXzAsXzAsXzAsXzEsXzgsXzksXzksXzksXzgsXzksXzksXzgsXzEsXzEsXzEsXzAsXzAsXzAsXzAsXzEsXzgsX2IsXzksX2IsXzgsXzksXzksXzgsXzEsXzMsXzEsXzIsXzAsXzEsXzEsXzAsXzksX2IsXzksX2EsXzksXzgsXzgsXzgsXzEsXzIsXzAsXzIsXzAsXzMsXzEsXzIsX2IsXzksX2IsXzgsXzksX2EsXzgsX2EsXzMsXzAsXzIsXzAsXzAsXzAsXzAsXzEsXzgsX2IsXzksX2IsXzgsXzksXzksXzgsXzEsXzMsXzEsXzIsXzAsXzIsXzAsXzMsX2EsXzksX2IsXzksXzgsX2IsXzksX2EsXzMsXzEsXzMsXzAsXzAsXzMsXzEsXzIsX2IsXzksX2IsXzgsXzksX2EsXzgsX2EsXzMsXzAsXzIsXzAsXzIsXzEsXzMsXzAsXzksXzksXzksXzgsX2IsXzgsX2EsXzgsXzEsXzAsXzAsXzAsCisgICAgICBfOCxfOSxfOSxfOCxfMSxfMyxfMSxfMixfMSxfMCxfMCxfMCxfMSxfMixfMCxfMixfOCxfYixfOSxfYSxfMyxfMyxfMyxfMixfMSxfMixfMCxfMixfMyxfMixfMixfMixfOSxfYSxfOCxfYSxfMyxfMixfMixfMixfMCxfMixfMCxfMixfMixfMixfMixfMixfYixfYSxfYSxfYSxfMyxfMCxfMixfMCxfMixfMixfMixfMixfMixfMCxfMixfMCxfOCxfYixfOSxfYSxfNyxfNyxfNyxfNixfMSxfMixfMCxfMixfNyxfNixfNixfNixfYSxfYixfYixfYSxfNyxfNSxfNyxfNCxfMyxfMixfMixfMixfNyxfNCxfNixfNCxfYixfYSxfYSxfYSxfNyxfNCxfNixfNCxfMixfMixfMixfMixfNixfNCxfNixfNCxfYixfOCxfYSxfOCxfNSxfNCxfNCxfNCxfMixfMCxfMixfMCxfNCxfNCxfNCxfNCwKKyAgICAgIF8wLF8wLF8wLF8xLF84LF9iLF85LF9iLF84LF85LF85LF84LF8xLF8zLF8xLF8yLF8wLF8yLF8wLF8zLF9hLF85LF9iLF85LF84LF9iLF85LF9hLF8zLF8xLF8zLF8wLF8wLF8zLF8xLF8yLF9iLF85LF9iLF84LF85LF9hLF84LF9hLF8zLF8wLF8yLF8wLF8yLF8xLF8zLF8wLF85LF85LF85LF84LF9iLF84LF9hLF84LF8xLF8wLF8wLF8wLF8wLF8yLF8wLF8zLF9lLF9kLF9mLF9kLF84LF9iLF85LF9hLF83LF81LF83LF80LF8yLF8wLF8yLF8xLF9jLF9kLF9kLF9kLF9hLF85LF9iLF84LF81LF81LF81LF80LF8yLF8xLF8zLF8wLF9kLF9kLF9kLF9jLF9iLF84LF9hLF84LF81LF80LF80LF80LF8wLF8xLF8xLF8wLF9kLF9kLF9kLF9jLF85LF84LF84LF84LF81LF80LF80LF80LAorICAgICAgXzgsX2IsXzksX2EsXzcsXzcsXzcsXzYsXzEsXzIsXzAsXzIsXzcsXzYsXzYsXzYsX2EsX2IsX2IsX2EsXzcsXzUsXzcsXzQsXzMsXzIsXzIsXzIsXzcsXzQsXzYsXzQsX2IsX2EsX2EsX2EsXzcsXzQsXzYsXzQsXzIsXzIsXzIsXzIsXzYsXzQsXzYsXzQsX2IsXzgsX2EsXzgsXzUsXzQsXzQsXzQsXzIsXzAsXzIsXzAsXzQsXzQsXzQsXzQsX2UsX2YsX2YsX2UsXzMsXzEsXzMsXzAsXzcsXzYsXzYsXzYsXzMsXzAsXzIsXzAsX2UsX2QsX2YsX2MsXzEsXzEsXzEsXzAsXzcsXzQsXzYsXzQsXzEsXzAsXzAsXzAsX2YsX2MsX2UsX2MsXzEsXzAsXzAsXzAsXzYsXzQsXzYsXzQsXzAsXzAsXzAsXzAsX2QsX2MsX2MsX2MsXzEsXzAsXzAsXzAsXzQsXzQsXzQsXzQsXzAsXzAsXzAsXzAsCisgICAgICBfOCxfOSxfOSxfOCxfMSxfMyxfMSxfMixfMSxfMCxfMCxfMCxfMSxfMixfMCxfMixfOCxfYixfOSxfYSxfMyxfMSxfMyxfMCxfMSxfMixfMCxfMixfMyxfMCxfMixfMCxfOSxfYSxfOCxfYSxfMyxfMCxfMixfMCxfMCxfMixfMCxfMixfMixfMCxfMixfMCxfYixfOCxfYSxfOCxfMSxfMCxfMCxfMCxfMixfMCxfMixfMCxfMCxfMCxfMCxfMCxfOCxfYixfOSxfYSxfNyxfNSxfNyxfNCxfMSxfMixfMCxfMixfNyxfNCxfNixfNCxfYSxfOSxfYixfOCxfNSxfNSxfNSxfNCxfMyxfMCxfMixfMCxfNSxfNCxfNCxfNCxfYixfOCxfYSxfOCxfNSxfNCxfNCxfNCxfMixfMCxfMixfMCxfNCxfNCxfNCxfNCxfOSxfOCxfOCxfOCxfNSxfNCxfNCxfNCxfMCxfMCxfMCxfMCxfNCxfNCxfNCxfNCwKKyAgICAgIF8xLF8yLF8wLF8yLF83LF82LF82LF82LF8wLF8yLF8wLF8yLF82LF82LF82LF82LF8zLF8yLF8yLF8yLF83LF80LF82LF80LF8yLF8yLF8yLF8yLF82LF80LF82LF80LF8yLF8yLF8yLF8yLF82LF80LF82LF80LF8yLF8yLF8yLF8yLF82LF80LF82LF80LF8yLF8wLF8yLF8wLF80LF80LF80LF80LF8yLF8wLF8yLF8wLF80LF80LF80LF80LF83LF82LF82LF82LF83LF80LF82LF80LF82LF82LF82LF82LF82LF80LF82LF80LF83LF80LF82LF80LF81LF80LF80LF80LF82LF80LF82LF80LF80LF80LF80LF80LF82LF80LF82LF80LF80LF80LF80LF80LF82LF80LF82LF80LF80LF80LF80LF80LF80LF80LF80LF80LF80LF80LF80LF80LF80LF80LF80LF80LF80LF80LF80LF80LAorICAgICAgXzgsX2IsXzksX2EsXzcsXzUsXzcsXzQsXzEsXzIsXzAsXzIsXzcsXzQsXzYsXzQsX2EsXzksX2IsXzgsXzUsXzUsXzUsXzQsXzMsXzAsXzIsXzAsXzUsXzQsXzQsXzQsX2IsXzgsX2EsXzgsXzUsXzQsXzQsXzQsXzIsXzAsXzIsXzAsXzQsXzQsXzQsXzQsXzksXzgsXzgsXzgsXzUsXzQsXzQsXzQsXzAsXzAsXzAsXzAsXzQsXzQsXzQsXzQsX2UsX2QsX2YsX2MsXzUsXzUsXzUsXzQsXzcsXzQsXzYsXzQsXzUsXzQsXzQsXzQsX2MsX2QsX2QsX2MsXzUsXzUsXzUsXzQsXzUsXzQsXzQsXzQsXzUsXzQsXzQsXzQsX2QsX2MsX2MsX2MsXzUsXzQsXzQsXzQsXzQsXzQsXzQsXzQsXzQsXzQsXzQsXzQsX2QsX2MsX2MsX2MsXzUsXzQsXzQsXzQsXzQsXzQsXzQsXzQsXzQsXzQsXzQsXzQsCisgICAgICBfNyxfNixfNixfNixfNyxfNCxfNixfNCxfNixfNixfNixfNixfNixfNCxfNixfNCxfNyxfNCxfNixfNCxfNSxfNCxfNCxfNCxfNixfNCxfNixfNCxfNCxfNCxfNCxfNCxfNixfNCxfNixfNCxfNCxfNCxfNCxfNCxfNixfNCxfNixfNCxfNCxfNCxfNCxfNCxfNCxfNCxfNCxfNCxfNCxfNCxfNCxfNCxfNCxfNCxfNCxfNCxfNCxfNCxfNCxfNCxfNyxfNCxfNixfNCxfMSxfMCxfMCxfMCxfNixfNCxfNixfNCxfMCxfMCxfMCxfMCxfNSxfNCxfNCxfNCxfMSxfMCxfMCxfMCxfNCxfNCxfNCxfNCxfMCxfMCxfMCxfMCxfNCxfNCxfNCxfNCxfMCxfMCxfMCxfMCxfNCxfNCxfNCxfNCxfMCxfMCxfMCxfMCxfNCxfNCxfNCxfNCxfMCxfMCxfMCxfMCxfNCxfNCxfNCxfNCxfMCxfMCxfMCxfMCwKKyAgICAgIF8wLF8wLF8wLF8xLF84LF85LF85LF85LF84LF85LF85LF84LF8xLF8xLF8xLF8wLF8wLF8wLF8wLF8xLF84LF9iLF85LF9iLF84LF85LF85LF84LF8xLF8zLF8xLF8yLF8wLF8xLF8xLF8wLF85LF9iLF85LF9hLF85LF84LF84LF84LF8xLF8yLF8wLF8yLF8wLF8zLF8xLF8yLF9iLF85LF9iLF84LF85LF9hLF84LF9hLF8zLF8wLF8yLF8wLF8wLF8wLF8wLF8xLF9jLF9mLF9kLF9mLF84LF85LF85LF84LF81LF83LF81LF82LF8wLF8yLF8wLF8zLF9lLF9kLF9mLF9kLF84LF9iLF85LF9hLF83LF81LF83LF80LF8wLF8zLF8xLF8yLF9mLF9kLF9mLF9jLF85LF9hLF84LF9hLF83LF80LF82LF80LF8yLF8xLF8zLF8wLF9kLF9kLF9kLF9jLF9iLF84LF9hLF84LF81LF80LF80LF80LAorICAgICAgXzgsXzksXzksXzgsXzUsXzcsXzUsXzYsXzEsXzAsXzAsXzAsXzUsXzYsXzQsXzYsXzgsX2IsXzksX2EsXzcsXzcsXzcsXzYsXzEsXzIsXzAsXzIsXzcsXzYsXzYsXzYsXzksX2EsXzgsX2EsXzcsXzYsXzYsXzYsXzAsXzIsXzAsXzIsXzYsXzYsXzYsXzYsX2IsX2EsX2EsX2EsXzcsXzQsXzYsXzQsXzIsXzIsXzIsXzIsXzYsXzQsXzYsXzQsX2MsX2YsX2QsX2UsXzMsXzMsXzMsXzIsXzUsXzYsXzQsXzYsXzMsXzIsXzIsXzIsX2UsX2YsX2YsX2UsXzMsXzEsXzMsXzAsXzcsXzYsXzYsXzYsXzMsXzAsXzIsXzAsX2YsX2UsX2UsX2UsXzMsXzAsXzIsXzAsXzYsXzYsXzYsXzYsXzIsXzAsXzIsXzAsX2YsX2MsX2UsX2MsXzEsXzAsXzAsXzAsXzYsXzQsXzYsXzQsXzAsXzAsXzAsXzAsCisgICAgICBfMCxfMCxfMCxfMSxfYyxfZixfZCxfZixfOCxfOSxfOSxfOCxfNSxfNyxfNSxfNixfMCxfMixfMCxfMyxfZSxfZCxfZixfZCxfOCxfYixfOSxfYSxfNyxfNSxfNyxfNCxfMCxfMyxfMSxfMixfZixfZCxfZixfYyxfOSxfYSxfOCxfYSxfNyxfNCxfNixfNCxfMixfMSxfMyxfMCxfZCxfZCxfZCxfYyxfYixfOCxfYSxfOCxfNSxfNCxfNCxfNCxfNCxfNixfNCxfNyxfYSxfOSxfYixfOSxfYyxfZixfZCxfZSxfMyxfMSxfMyxfMCxfNixfNCxfNixfNSxfOCxfOSxfOSxfOSxfZSxfZCxfZixfYyxfMSxfMSxfMSxfMCxfNixfNSxfNyxfNCxfOSxfOSxfOSxfOCxfZixfYyxfZSxfYyxfMSxfMCxfMCxfMCxfNCxfNSxfNSxfNCxfOSxfOSxfOSxfOCxfZCxfYyxfYyxfYyxfMSxfMCxfMCxfMCwKKyAgICAgIF9jLF9mLF9kLF9lLF8zLF8zLF8zLF8yLF81LF82LF80LF82LF8zLF8yLF8yLF8yLF9lLF9mLF9mLF9lLF8zLF8xLF8zLF8wLF83LF82LF82LF82LF8zLF8wLF8yLF8wLF9mLF9lLF9lLF9lLF8zLF8wLF8yLF8wLF82LF82LF82LF82LF8yLF8wLF8yLF8wLF9mLF9jLF9lLF9jLF8xLF8wLF8wLF8wLF82LF80LF82LF80LF8wLF8wLF8wLF8wLF9hLF9iLF9iLF9hLF8zLF8xLF8zLF8wLF8zLF8yLF8yLF8yLF8zLF8wLF8yLF8wLF9hLF85LF9iLF84LF8xLF8xLF8xLF8wLF8zLF8wLF8yLF8wLF8xLF8wLF8wLF8wLF9iLF84LF9hLF84LF8xLF8wLF8wLF8wLF8yLF8wLF8yLF8wLF8wLF8wLF8wLF8wLF85LF84LF84LF84LF8xLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLAorICAgICAgXzgsXzksXzksXzgsXzUsXzcsXzUsXzYsXzEsXzAsXzAsXzAsXzUsXzYsXzQsXzYsXzgsX2IsXzksX2EsXzcsXzUsXzcsXzQsXzEsXzIsXzAsXzIsXzcsXzQsXzYsXzQsXzksX2EsXzgsX2EsXzcsXzQsXzYsXzQsXzAsXzIsXzAsXzIsXzYsXzQsXzYsXzQsX2IsXzgsX2EsXzgsXzUsXzQsXzQsXzQsXzIsXzAsXzIsXzAsXzQsXzQsXzQsXzQsX2MsX2YsX2QsX2UsXzcsXzUsXzcsXzQsXzUsXzYsXzQsXzYsXzcsXzQsXzYsXzQsX2UsX2QsX2YsX2MsXzUsXzUsXzUsXzQsXzcsXzQsXzYsXzQsXzUsXzQsXzQsXzQsX2YsX2MsX2UsX2MsXzUsXzQsXzQsXzQsXzYsXzQsXzYsXzQsXzQsXzQsXzQsXzQsX2QsX2MsX2MsX2MsXzUsXzQsXzQsXzQsXzQsXzQsXzQsXzQsXzQsXzQsXzQsXzQsCisgICAgICBfNSxfNixfNCxfNixfNyxfNixfNixfNixfNCxfNixfNCxfNixfNixfNixfNixfNixfNyxfNixfNixfNixfNyxfNCxfNixfNCxfNixfNixfNixfNixfNixfNCxfNixfNCxfNixfNixfNixfNixfNixfNCxfNixfNCxfNixfNixfNixfNixfNixfNCxfNixfNCxfNixfNCxfNixfNCxfNCxfNCxfNCxfNCxfNixfNCxfNixfNCxfNCxfNCxfNCxfNCxfNyxfNixfNixfNixfMyxfMCxfMixfMCxfNixfNixfNixfNixfMixfMCxfMixfMCxfNyxfNCxfNixfNCxfMSxfMCxfMCxfMCxfNixfNCxfNixfNCxfMCxfMCxfMCxfMCxfNixfNCxfNixfNCxfMCxfMCxfMCxfMCxfNixfNCxfNixfNCxfMCxfMCxfMCxfMCxfNCxfNCxfNCxfNCxfMCxfMCxfMCxfMCxfNCxfNCxfNCxfNCxfMCxfMCxfMCxfMCwKKyAgICAgIF9jLF9mLF9kLF9lLF83LF81LF83LF80LF81LF82LF80LF82LF83LF80LF82LF80LF9lLF9kLF9mLF9jLF81LF81LF81LF80LF83LF80LF82LF80LF81LF80LF80LF80LF9mLF9jLF9lLF9jLF81LF80LF80LF80LF82LF80LF82LF80LF80LF80LF80LF80LF9kLF9jLF9jLF9jLF81LF80LF80LF80LF80LF80LF80LF80LF80LF80LF80LF80LF9lLF9kLF9mLF9jLF8xLF8xLF8xLF8wLF83LF80LF82LF80LF8xLF8wLF8wLF8wLF9jLF9kLF9kLF9jLF8xLF8xLF8xLF8wLF81LF80LF80LF80LF8xLF8wLF8wLF8wLF9kLF9jLF9jLF9jLF8xLF8wLF8wLF8wLF80LF80LF80LF80LF8wLF8wLF8wLF8wLF9kLF9jLF9jLF9jLF8xLF8wLF8wLF8wLF80LF80LF80LF80LF8wLF8wLF8wLF8wLAorICAgICAgXzcsXzYsXzYsXzYsXzMsXzAsXzIsXzAsXzYsXzYsXzYsXzYsXzIsXzAsXzIsXzAsXzcsXzQsXzYsXzQsXzEsXzAsXzAsXzAsXzYsXzQsXzYsXzQsXzAsXzAsXzAsXzAsXzYsXzQsXzYsXzQsXzAsXzAsXzAsXzAsXzYsXzQsXzYsXzQsXzAsXzAsXzAsXzAsXzQsXzQsXzQsXzQsXzAsXzAsXzAsXzAsXzQsXzQsXzQsXzQsXzAsXzAsXzAsXzAsXzMsXzAsXzIsXzAsXzEsXzAsXzAsXzAsXzIsXzAsXzIsXzAsXzAsXzAsXzAsXzAsXzEsXzAsXzAsXzAsXzEsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsCisgICAgICBfOCxfOCxfOCxfOSxfMCxfMSxfMSxfMSxfMCxfMSxfMSxfMCxfMSxfMSxfMSxfMCxfOCxfOCxfOCxfOSxfMCxfMyxfMSxfMyxfMCxfMSxfMSxfMCxfMSxfMyxfMSxfMixfOCxfOSxfOSxfOCxfMSxfMyxfMSxfMixfMSxfMCxfMCxfMCxfMSxfMixfMCxfMixfOCxfYixfOSxfYSxfMyxfMSxfMyxfMCxfMSxfMixfMCxfMixfMyxfMCxfMixfMCxfOCxfOCxfOCxfOSxfNCxfNyxfNSxfNyxfMCxfMSxfMSxfMCxfNSxfNyxfNSxfNixfOCxfYSxfOCxfYixfNixfNSxfNyxfNSxfMCxfMyxfMSxfMixfNyxfNSxfNyxfNCxfOCxfYixfOSxfYSxfNyxfNSxfNyxfNCxfMSxfMixfMCxfMixfNyxfNCxfNixfNCxfYSxfOSxfYixfOCxfNSxfNSxfNSxfNCxfMyxfMCxfMixfMCxfNSxfNCxfNCxfNCwKKyAgICAgIF8wLF8xLF8xLF8wLF81LF83LF81LF82LF8xLF8wLF8wLF8wLF81LF82LF80LF82LF8wLF8zLF8xLF8yLF83LF83LF83LF82LF8xLF8yLF8wLF8yLF83LF82LF82LF82LF8xLF8yLF8wLF8yLF83LF82LF82LF82LF8wLF8yLF8wLF8yLF82LF82LF82LF82LF8zLF8yLF8yLF8yLF83LF80LF82LF80LF8yLF8yLF8yLF8yLF82LF80LF82LF80LF80LF83LF81LF82LF8zLF8zLF8zLF8yLF81LF82LF80LF82LF8zLF8yLF8yLF8yLF82LF83LF83LF82LF8zLF8xLF8zLF8wLF83LF82LF82LF82LF8zLF8wLF8yLF8wLF83LF82LF82LF82LF8zLF8wLF8yLF8wLF82LF82LF82LF82LF8yLF8wLF8yLF8wLF83LF80LF82LF80LF8xLF8wLF8wLF8wLF82LF80LF82LF80LF8wLF8wLF8wLF8wLAorICAgICAgXzgsXzgsXzgsXzksXzQsXzcsXzUsXzcsXzAsXzEsXzEsXzAsXzUsXzcsXzUsXzYsXzgsX2EsXzgsX2IsXzYsXzUsXzcsXzUsXzAsXzMsXzEsXzIsXzcsXzUsXzcsXzQsXzgsX2IsXzksX2EsXzcsXzUsXzcsXzQsXzEsXzIsXzAsXzIsXzcsXzQsXzYsXzQsX2EsXzksX2IsXzgsXzUsXzUsXzUsXzQsXzMsXzAsXzIsXzAsXzUsXzQsXzQsXzQsX2MsX2UsX2MsX2YsXzIsXzEsXzMsXzEsXzQsXzcsXzUsXzYsXzMsXzEsXzMsXzAsX2UsX2MsX2UsX2QsXzAsXzEsXzEsXzEsXzYsXzUsXzcsXzQsXzEsXzEsXzEsXzAsX2UsX2QsX2YsX2MsXzEsXzEsXzEsXzAsXzcsXzQsXzYsXzQsXzEsXzAsXzAsXzAsX2MsX2QsX2QsX2MsXzEsXzEsXzEsXzAsXzUsXzQsXzQsXzQsXzEsXzAsXzAsXzAsCisgICAgICBfNCxfNyxfNSxfNixfMyxfMyxfMyxfMixfNSxfNixfNCxfNixfMyxfMixfMixfMixfNixfNyxfNyxfNixfMyxfMSxfMyxfMCxfNyxfNixfNixfNixfMyxfMCxfMixfMCxfNyxfNixfNixfNixfMyxfMCxfMixfMCxfNixfNixfNixfNixfMixfMCxfMixfMCxfNyxfNCxfNixfNCxfMSxfMCxfMCxfMCxfNixfNCxfNixfNCxfMCxfMCxfMCxfMCxfMixfMyxfMyxfMixfMyxfMSxfMyxfMCxfMyxfMixfMixfMixfMyxfMCxfMixfMCxfMixfMSxfMyxfMCxfMSxfMSxfMSxfMCxfMyxfMCxfMixfMCxfMSxfMCxfMCxfMCxfMyxfMCxfMixfMCxfMSxfMCxfMCxfMCxfMixfMCxfMixfMCxfMCxfMCxfMCxfMCxfMSxfMCxfMCxfMCxfMSxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCwKKyAgICAgIF8wLF8xLF8xLF8wLF81LF83LF81LF82LF8xLF8wLF8wLF8wLF81LF82LF80LF82LF8wLF8zLF8xLF8yLF83LF81LF83LF80LF8xLF8yLF8wLF8yLF83LF80LF82LF80LF8xLF8yLF8wLF8yLF83LF80LF82LF80LF8wLF8yLF8wLF8yLF82LF80LF82LF80LF8zLF8wLF8yLF8wLF81LF80LF80LF80LF8yLF8wLF8yLF8wLF80LF80LF80LF80LF80LF83LF81LF82LF83LF81LF83LF80LF81LF82LF80LF82LF83LF80LF82LF80LF82LF81LF83LF80LF81LF81LF81LF80LF83LF80LF82LF80LF81LF80LF80LF80LF83LF80LF82LF80LF81LF80LF80LF80LF82LF80LF82LF80LF80LF80LF80LF80LF81LF80LF80LF80LF81LF80LF80LF80LF80LF80LF80LF80LF80LF80LF80LF80LAorICAgICAgXzUsXzYsXzQsXzYsXzcsXzYsXzYsXzYsXzQsXzYsXzQsXzYsXzYsXzYsXzYsXzYsXzcsXzYsXzYsXzYsXzcsXzQsXzYsXzQsXzYsXzYsXzYsXzYsXzYsXzQsXzYsXzQsXzYsXzYsXzYsXzYsXzYsXzQsXzYsXzQsXzYsXzYsXzYsXzYsXzYsXzQsXzYsXzQsXzYsXzQsXzYsXzQsXzQsXzQsXzQsXzQsXzYsXzQsXzYsXzQsXzQsXzQsXzQsXzQsXzcsXzYsXzYsXzYsXzMsXzAsXzIsXzAsXzYsXzYsXzYsXzYsXzIsXzAsXzIsXzAsXzcsXzQsXzYsXzQsXzEsXzAsXzAsXzAsXzYsXzQsXzYsXzQsXzAsXzAsXzAsXzAsXzYsXzQsXzYsXzQsXzAsXzAsXzAsXzAsXzYsXzQsXzYsXzQsXzAsXzAsXzAsXzAsXzQsXzQsXzQsXzQsXzAsXzAsXzAsXzAsXzQsXzQsXzQsXzQsXzAsXzAsXzAsXzAsCisgICAgICBfNCxfNyxfNSxfNixfNyxfNSxfNyxfNCxfNSxfNixfNCxfNixfNyxfNCxfNixfNCxfNixfNSxfNyxfNCxfNSxfNSxfNSxfNCxfNyxfNCxfNixfNCxfNSxfNCxfNCxfNCxfNyxfNCxfNixfNCxfNSxfNCxfNCxfNCxfNixfNCxfNixfNCxfNCxfNCxfNCxfNCxfNSxfNCxfNCxfNCxfNSxfNCxfNCxfNCxfNCxfNCxfNCxfNCxfNCxfNCxfNCxfNCxfNixfNSxfNyxfNCxfMSxfMSxfMSxfMCxfNyxfNCxfNixfNCxfMSxfMCxfMCxfMCxfNCxfNSxfNSxfNCxfMSxfMSxfMSxfMCxfNSxfNCxfNCxfNCxfMSxfMCxfMCxfMCxfNSxfNCxfNCxfNCxfMSxfMCxfMCxfMCxfNCxfNCxfNCxfNCxfMCxfMCxfMCxfMCxfNSxfNCxfNCxfNCxfMSxfMCxfMCxfMCxfNCxfNCxfNCxfNCxfMCxfMCxfMCxfMCwKKyAgICAgIF83LF82LF82LF82LF8zLF8wLF8yLF8wLF82LF82LF82LF82LF8yLF8wLF8yLF8wLF83LF80LF82LF80LF8xLF8wLF8wLF8wLF82LF80LF82LF80LF8wLF8wLF8wLF8wLF82LF80LF82LF80LF8wLF8wLF8wLF8wLF82LF80LF82LF80LF8wLF8wLF8wLF8wLF80LF80LF80LF80LF8wLF8wLF8wLF8wLF80LF80LF80LF80LF8wLF8wLF8wLF8wLF8zLF8wLF8yLF8wLF8xLF8wLF8wLF8wLF8yLF8wLF8yLF8wLF8wLF8wLF8wLF8wLF8xLF8wLF8wLF8wLF8xLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLAorICAgICAgXzgsXzgsXzgsXzksXzQsXzUsXzUsXzUsXzAsXzEsXzEsXzAsXzUsXzUsXzUsXzQsXzgsXzgsXzgsXzksXzQsXzcsXzUsXzcsXzAsXzEsXzEsXzAsXzUsXzcsXzUsXzYsXzgsXzksXzksXzgsXzUsXzcsXzUsXzYsXzEsXzAsXzAsXzAsXzUsXzYsXzQsXzYsXzgsX2IsXzksX2EsXzcsXzUsXzcsXzQsXzEsXzIsXzAsXzIsXzcsXzQsXzYsXzQsX2MsX2MsX2MsX2QsXzAsXzMsXzEsXzMsXzQsXzUsXzUsXzQsXzEsXzMsXzEsXzIsX2MsX2UsX2MsX2YsXzIsXzEsXzMsXzEsXzQsXzcsXzUsXzYsXzMsXzEsXzMsXzAsX2MsX2YsX2QsX2UsXzMsXzEsXzMsXzAsXzUsXzYsXzQsXzYsXzMsXzAsXzIsXzAsX2UsX2QsX2YsX2MsXzEsXzEsXzEsXzAsXzcsXzQsXzYsXzQsXzEsXzAsXzAsXzAsCisgICAgICBfNCxfNSxfNSxfNCxfMSxfMyxfMSxfMixfNSxfNCxfNCxfNCxfMSxfMixfMCxfMixfNCxfNyxfNSxfNixfMyxfMyxfMyxfMixfNSxfNixfNCxfNixfMyxfMixfMixfMixfNSxfNixfNCxfNixfMyxfMixfMixfMixfNCxfNixfNCxfNixfMixfMixfMixfMixfNyxfNixfNixfNixfMyxfMCxfMixfMCxfNixfNixfNixfNixfMixfMCxfMixfMCxfMCxfMyxfMSxfMixfMyxfMyxfMyxfMixfMSxfMixfMCxfMixfMyxfMixfMixfMixfMixfMyxfMyxfMixfMyxfMSxfMyxfMCxfMyxfMixfMixfMixfMyxfMCxfMixfMCxfMyxfMixfMixfMixfMyxfMCxfMixfMCxfMixfMixfMixfMixfMixfMCxfMixfMCxfMyxfMCxfMixfMCxfMSxfMCxfMCxfMCxfMixfMCxfMixfMCxfMCxfMCxfMCxfMCwKKyAgICAgIF9jLF9jLF9jLF9kLF8wLF8zLF8xLF8zLF80LF81LF81LF80LF8xLF8zLF8xLF8yLF9jLF9lLF9jLF9mLF8yLF8xLF8zLF8xLF80LF83LF81LF82LF8zLF8xLF8zLF8wLF9jLF9mLF9kLF9lLF8zLF8xLF8zLF8wLF81LF82LF80LF82LF8zLF8wLF8yLF8wLF9lLF9kLF9mLF9jLF8xLF8xLF8xLF8wLF83LF80LF82LF80LF8xLF8wLF8wLF8wLF84LF9hLF84LF9iLF8yLF8xLF8zLF8xLF8wLF8zLF8xLF8yLF8zLF8xLF8zLF8wLF9hLF84LF9hLF85LF8wLF8xLF8xLF8xLF8yLF8xLF8zLF8wLF8xLF8xLF8xLF8wLF9hLF85LF9iLF84LF8xLF8xLF8xLF8wLF8zLF8wLF8yLF8wLF8xLF8wLF8wLF8wLF84LF85LF85LF84LF8xLF8xLF8xLF8wLF8xLF8wLF8wLF8wLF8xLF8wLF8wLF8wLAorICAgICAgXzAsXzMsXzEsXzIsXzMsXzMsXzMsXzIsXzEsXzIsXzAsXzIsXzMsXzIsXzIsXzIsXzIsXzMsXzMsXzIsXzMsXzEsXzMsXzAsXzMsXzIsXzIsXzIsXzMsXzAsXzIsXzAsXzMsXzIsXzIsXzIsXzMsXzAsXzIsXzAsXzIsXzIsXzIsXzIsXzIsXzAsXzIsXzAsXzMsXzAsXzIsXzAsXzEsXzAsXzAsXzAsXzIsXzAsXzIsXzAsXzAsXzAsXzAsXzAsXzIsXzMsXzMsXzIsXzMsXzEsXzMsXzAsXzMsXzIsXzIsXzIsXzMsXzAsXzIsXzAsXzIsXzEsXzMsXzAsXzEsXzEsXzEsXzAsXzMsXzAsXzIsXzAsXzEsXzAsXzAsXzAsXzMsXzAsXzIsXzAsXzEsXzAsXzAsXzAsXzIsXzAsXzIsXzAsXzAsXzAsXzAsXzAsXzEsXzAsXzAsXzAsXzEsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsCisgICAgICBfNCxfNSxfNSxfNCxfNSxfNyxfNSxfNixfNSxfNCxfNCxfNCxfNSxfNixfNCxfNixfNCxfNyxfNSxfNixfNyxfNSxfNyxfNCxfNSxfNixfNCxfNixfNyxfNCxfNixfNCxfNSxfNixfNCxfNixfNyxfNCxfNixfNCxfNCxfNixfNCxfNixfNixfNCxfNixfNCxfNyxfNCxfNixfNCxfNSxfNCxfNCxfNCxfNixfNCxfNixfNCxfNCxfNCxfNCxfNCxfNCxfNyxfNSxfNixfMyxfMSxfMyxfMCxfNSxfNixfNCxfNixfMyxfMCxfMixfMCxfNixfNSxfNyxfNCxfMSxfMSxfMSxfMCxfNyxfNCxfNixfNCxfMSxfMCxfMCxfMCxfNyxfNCxfNixfNCxfMSxfMCxfMCxfMCxfNixfNCxfNixfNCxfMCxfMCxfMCxfMCxfNSxfNCxfNCxfNCxfMSxfMCxfMCxfMCxfNCxfNCxfNCxfNCxfMCxfMCxfMCxfMCwKKyAgICAgIF81LF82LF80LF82LF8zLF8yLF8yLF8yLF80LF82LF80LF82LF8yLF8yLF8yLF8yLF83LF82LF82LF82LF8zLF8wLF8yLF8wLF82LF82LF82LF82LF8yLF8wLF8yLF8wLF82LF82LF82LF82LF8yLF8wLF8yLF8wLF82LF82LF82LF82LF8yLF8wLF8yLF8wLF82LF80LF82LF80LF8wLF8wLF8wLF8wLF82LF80LF82LF80LF8wLF8wLF8wLF8wLF8zLF8yLF8yLF8yLF8zLF8wLF8yLF8wLF8yLF8yLF8yLF8yLF8yLF8wLF8yLF8wLF8zLF8wLF8yLF8wLF8xLF8wLF8wLF8wLF8yLF8wLF8yLF8wLF8wLF8wLF8wLF8wLF8yLF8wLF8yLF8wLF8wLF8wLF8wLF8wLF8yLF8wLF8yLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLAorICAgICAgXzQsXzcsXzUsXzYsXzMsXzEsXzMsXzAsXzUsXzYsXzQsXzYsXzMsXzAsXzIsXzAsXzYsXzUsXzcsXzQsXzEsXzEsXzEsXzAsXzcsXzQsXzYsXzQsXzEsXzAsXzAsXzAsXzcsXzQsXzYsXzQsXzEsXzAsXzAsXzAsXzYsXzQsXzYsXzQsXzAsXzAsXzAsXzAsXzUsXzQsXzQsXzQsXzEsXzAsXzAsXzAsXzQsXzQsXzQsXzQsXzAsXzAsXzAsXzAsXzIsXzEsXzMsXzAsXzEsXzEsXzEsXzAsXzMsXzAsXzIsXzAsXzEsXzAsXzAsXzAsXzAsXzEsXzEsXzAsXzEsXzEsXzEsXzAsXzEsXzAsXzAsXzAsXzEsXzAsXzAsXzAsXzEsXzAsXzAsXzAsXzEsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzEsXzAsXzAsXzAsXzEsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsCisgICAgICBfMyxfMixfMixfMixfMyxfMCxfMixfMCxfMixfMixfMixfMixfMixfMCxfMixfMCxfMyxfMCxfMixfMCxfMSxfMCxfMCxfMCxfMixfMCxfMixfMCxfMCxfMCxfMCxfMCxfMixfMCxfMixfMCxfMCxfMCxfMCxfMCxfMixfMCxfMixfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMyxfMCxfMixfMCxfMSxfMCxfMCxfMCxfMixfMCxfMixfMCxfMCxfMCxfMCxfMCxfMSxfMCxfMCxfMCxfMSxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCwKKyAgICAgIF84LF85LF85LF84LF85LF9iLF85LF9hLF85LF84LF84LF84LF8xLF8yLF8wLF8yLF84LF9iLF85LF9hLF9iLF85LF9iLF84LF85LF9hLF84LF9hLF8zLF8wLF8yLF8wLF85LF9hLF84LF9hLF9iLF84LF9hLF84LF84LF9hLF84LF9hLF8yLF8wLF8yLF8wLF9iLF84LF9hLF84LF85LF84LF84LF84LF9hLF84LF9hLF84LF8wLF8wLF8wLF8wLF84LF9iLF85LF9hLF9mLF9kLF9mLF9jLF85LF9hLF84LF9hLF83LF80LF82LF80LF9hLF85LF9iLF84LF9kLF9kLF9kLF9jLF9iLF84LF9hLF84LF81LF80LF80LF80LF9iLF84LF9hLF84LF9kLF9jLF9jLF9jLF9hLF84LF9hLF84LF80LF80LF80LF80LF85LF84LF84LF84LF9kLF9jLF9jLF9jLF84LF84LF84LF84LF80LF80LF80LF80LAorICAgICAgXzksX2EsXzgsX2EsXzcsXzYsXzYsXzYsXzAsXzIsXzAsXzIsXzYsXzYsXzYsXzYsX2IsX2EsX2EsX2EsXzcsXzQsXzYsXzQsXzIsXzIsXzIsXzIsXzYsXzQsXzYsXzQsX2EsX2EsX2EsX2EsXzYsXzQsXzYsXzQsXzIsXzIsXzIsXzIsXzYsXzQsXzYsXzQsX2EsXzgsX2EsXzgsXzQsXzQsXzQsXzQsXzIsXzAsXzIsXzAsXzQsXzQsXzQsXzQsX2YsX2UsX2UsX2UsXzMsXzAsXzIsXzAsXzYsXzYsXzYsXzYsXzIsXzAsXzIsXzAsX2YsX2MsX2UsX2MsXzEsXzAsXzAsXzAsXzYsXzQsXzYsXzQsXzAsXzAsXzAsXzAsX2UsX2MsX2UsX2MsXzAsXzAsXzAsXzAsXzYsXzQsXzYsXzQsXzAsXzAsXzAsXzAsX2MsX2MsX2MsX2MsXzAsXzAsXzAsXzAsXzQsXzQsXzQsXzQsXzAsXzAsXzAsXzAsCisgICAgICBfOCxfYixfOSxfYSxfZixfZCxfZixfYyxfOSxfYSxfOCxfYSxfNyxfNCxfNixfNCxfYSxfOSxfYixfOCxfZCxfZCxfZCxfYyxfYixfOCxfYSxfOCxfNSxfNCxfNCxfNCxfYixfOCxfYSxfOCxfZCxfYyxfYyxfYyxfYSxfOCxfYSxfOCxfNCxfNCxfNCxfNCxfOSxfOCxfOCxfOCxfZCxfYyxfYyxfYyxfOCxfOCxfOCxfOCxfNCxfNCxfNCxfNCxfZSxfZCxfZixfYyxfOSxfOSxfOSxfOCxfZixfYyxfZSxfYyxfMSxfMCxfMCxfMCxfYyxfZCxfZCxfYyxfOSxfOSxfOSxfOCxfZCxfYyxfYyxfYyxfMSxfMCxfMCxfMCxfZCxfYyxfYyxfYyxfOSxfOCxfOCxfOCxfYyxfYyxfYyxfYyxfMCxfMCxfMCxfMCxfZCxfYyxfYyxfYyxfOSxfOCxfOCxfOCxfYyxfYyxfYyxfYyxfMCxfMCxfMCxfMCwKKyAgICAgIF9mLF9lLF9lLF9lLF8zLF8wLF8yLF8wLF82LF82LF82LF82LF8yLF8wLF8yLF8wLF9mLF9jLF9lLF9jLF8xLF8wLF8wLF8wLF82LF80LF82LF80LF8wLF8wLF8wLF8wLF9lLF9jLF9lLF9jLF8wLF8wLF8wLF8wLF82LF80LF82LF80LF8wLF8wLF8wLF8wLF9jLF9jLF9jLF9jLF8wLF8wLF8wLF8wLF80LF80LF80LF80LF8wLF8wLF8wLF8wLF9iLF84LF9hLF84LF8xLF8wLF8wLF8wLF8yLF8wLF8yLF8wLF8wLF8wLF8wLF8wLF85LF84LF84LF84LF8xLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF84LF84LF84LF84LF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF84LF84LF84LF84LF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLAorICAgICAgXzksX2EsXzgsX2EsXzcsXzQsXzYsXzQsXzAsXzIsXzAsXzIsXzYsXzQsXzYsXzQsX2IsXzgsX2EsXzgsXzUsXzQsXzQsXzQsXzIsXzAsXzIsXzAsXzQsXzQsXzQsXzQsX2EsXzgsX2EsXzgsXzQsXzQsXzQsXzQsXzIsXzAsXzIsXzAsXzQsXzQsXzQsXzQsXzgsXzgsXzgsXzgsXzQsXzQsXzQsXzQsXzAsXzAsXzAsXzAsXzQsXzQsXzQsXzQsX2YsX2MsX2UsX2MsXzUsXzQsXzQsXzQsXzYsXzQsXzYsXzQsXzQsXzQsXzQsXzQsX2QsX2MsX2MsX2MsXzUsXzQsXzQsXzQsXzQsXzQsXzQsXzQsXzQsXzQsXzQsXzQsX2MsX2MsX2MsX2MsXzQsXzQsXzQsXzQsXzQsXzQsXzQsXzQsXzQsXzQsXzQsXzQsX2MsX2MsX2MsX2MsXzQsXzQsXzQsXzQsXzQsXzQsXzQsXzQsXzQsXzQsXzQsXzQsCisgICAgICBfNixfNixfNixfNixfNixfNCxfNixfNCxfNixfNixfNixfNixfNixfNCxfNixfNCxfNixfNCxfNixfNCxfNCxfNCxfNCxfNCxfNixfNCxfNixfNCxfNCxfNCxfNCxfNCxfNixfNCxfNixfNCxfNCxfNCxfNCxfNCxfNixfNCxfNixfNCxfNCxfNCxfNCxfNCxfNCxfNCxfNCxfNCxfNCxfNCxfNCxfNCxfNCxfNCxfNCxfNCxfNCxfNCxfNCxfNCxfNixfNCxfNixfNCxfMCxfMCxfMCxfMCxfNixfNCxfNixfNCxfMCxfMCxfMCxfMCxfNCxfNCxfNCxfNCxfMCxfMCxfMCxfMCxfNCxfNCxfNCxfNCxfMCxfMCxfMCxfMCxfNCxfNCxfNCxfNCxfMCxfMCxfMCxfMCxfNCxfNCxfNCxfNCxfMCxfMCxfMCxfMCxfNCxfNCxfNCxfNCxfMCxfMCxfMCxfMCxfNCxfNCxfNCxfNCxfMCxfMCxfMCxfMCwKKyAgICAgIF9mLF9jLF9lLF9jLF81LF80LF80LF80LF82LF80LF82LF80LF80LF80LF80LF80LF9kLF9jLF9jLF9jLF81LF80LF80LF80LF80LF80LF80LF80LF80LF80LF80LF80LF9jLF9jLF9jLF9jLF80LF80LF80LF80LF80LF80LF80LF80LF80LF80LF80LF80LF9jLF9jLF9jLF9jLF80LF80LF80LF80LF80LF80LF80LF80LF80LF80LF80LF80LF9kLF9jLF9jLF9jLF8xLF8wLF8wLF8wLF80LF80LF80LF80LF8wLF8wLF8wLF8wLF9kLF9jLF9jLF9jLF8xLF8wLF8wLF8wLF80LF80LF80LF80LF8wLF8wLF8wLF8wLF9jLF9jLF9jLF9jLF8wLF8wLF8wLF8wLF80LF80LF80LF80LF8wLF8wLF8wLF8wLF9jLF9jLF9jLF9jLF8wLF8wLF8wLF8wLF80LF80LF80LF80LF8wLF8wLF8wLF8wLAorICAgICAgXzYsXzQsXzYsXzQsXzAsXzAsXzAsXzAsXzYsXzQsXzYsXzQsXzAsXzAsXzAsXzAsXzQsXzQsXzQsXzQsXzAsXzAsXzAsXzAsXzQsXzQsXzQsXzQsXzAsXzAsXzAsXzAsXzQsXzQsXzQsXzQsXzAsXzAsXzAsXzAsXzQsXzQsXzQsXzQsXzAsXzAsXzAsXzAsXzQsXzQsXzQsXzQsXzAsXzAsXzAsXzAsXzQsXzQsXzQsXzQsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsCisgICAgICBfOCxfOSxfOSxfOCxfZCxfZixfZCxfZSxfOSxfOCxfOCxfOCxfNSxfNixfNCxfNixfOCxfYixfOSxfYSxfZixfZCxfZixfYyxfOSxfYSxfOCxfYSxfNyxfNCxfNixfNCxfOSxfYSxfOCxfYSxfZixfYyxfZSxfYyxfOCxfYSxfOCxfYSxfNixfNCxfNixfNCxfYixfOCxfYSxfOCxfZCxfYyxfYyxfYyxfYSxfOCxfYSxfOCxfNCxfNCxfNCxfNCxfYyxfZixfZCxfZSxfYixfOSxfYixfOCxfZCxfZSxfYyxfZSxfMyxfMCxfMixfMCxfZSxfZCxfZixfYyxfOSxfOSxfOSxfOCxfZixfYyxfZSxfYyxfMSxfMCxfMCxfMCxfZixfYyxfZSxfYyxfOSxfOCxfOCxfOCxfZSxfYyxfZSxfYyxfMCxfMCxfMCxfMCxfZCxfYyxfYyxfYyxfOSxfOCxfOCxfOCxfYyxfYyxfYyxfYyxfMCxfMCxfMCxfMCwKKyAgICAgIF9kLF9lLF9jLF9lLF8zLF8yLF8yLF8yLF80LF82LF80LF82LF8yLF8yLF8yLF8yLF9mLF9lLF9lLF9lLF8zLF8wLF8yLF8wLF82LF82LF82LF82LF8yLF8wLF8yLF8wLF9lLF9lLF9lLF9lLF8yLF8wLF8yLF8wLF82LF82LF82LF82LF8yLF8wLF8yLF8wLF9lLF9jLF9lLF9jLF8wLF8wLF8wLF8wLF82LF80LF82LF80LF8wLF8wLF8wLF8wLF9iLF9hLF9hLF9hLF8zLF8wLF8yLF8wLF8yLF8yLF8yLF8yLF8yLF8wLF8yLF8wLF9iLF84LF9hLF84LF8xLF8wLF8wLF8wLF8yLF8wLF8yLF8wLF8wLF8wLF8wLF8wLF9hLF84LF9hLF84LF8wLF8wLF8wLF8wLF8yLF8wLF8yLF8wLF8wLF8wLF8wLF8wLF84LF84LF84LF84LF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLAorICAgICAgX2MsX2YsX2QsX2UsX2IsXzksX2IsXzgsX2QsX2UsX2MsX2UsXzMsXzAsXzIsXzAsX2UsX2QsX2YsX2MsXzksXzksXzksXzgsX2YsX2MsX2UsX2MsXzEsXzAsXzAsXzAsX2YsX2MsX2UsX2MsXzksXzgsXzgsXzgsX2UsX2MsX2UsX2MsXzAsXzAsXzAsXzAsX2QsX2MsX2MsX2MsXzksXzgsXzgsXzgsX2MsX2MsX2MsX2MsXzAsXzAsXzAsXzAsX2EsXzksX2IsXzgsXzksXzksXzksXzgsX2IsXzgsX2EsXzgsXzEsXzAsXzAsXzAsXzgsXzksXzksXzgsXzksXzksXzksXzgsXzksXzgsXzgsXzgsXzEsXzAsXzAsXzAsXzksXzgsXzgsXzgsXzksXzgsXzgsXzgsXzgsXzgsXzgsXzgsXzAsXzAsXzAsXzAsXzksXzgsXzgsXzgsXzksXzgsXzgsXzgsXzgsXzgsXzgsXzgsXzAsXzAsXzAsXzAsCisgICAgICBfYixfYSxfYSxfYSxfMyxfMCxfMixfMCxfMixfMixfMixfMixfMixfMCxfMixfMCxfYixfOCxfYSxfOCxfMSxfMCxfMCxfMCxfMixfMCxfMixfMCxfMCxfMCxfMCxfMCxfYSxfOCxfYSxfOCxfMCxfMCxfMCxfMCxfMixfMCxfMixfMCxfMCxfMCxfMCxfMCxfOCxfOCxfOCxfOCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfYixfOCxfYSxfOCxfMSxfMCxfMCxfMCxfMixfMCxfMixfMCxfMCxfMCxfMCxfMCxfOSxfOCxfOCxfOCxfMSxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfOCxfOCxfOCxfOCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfOCxfOCxfOCxfOCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCwKKyAgICAgIF9kLF9lLF9jLF9lLF83LF80LF82LF80LF80LF82LF80LF82LF82LF80LF82LF80LF9mLF9jLF9lLF9jLF81LF80LF80LF80LF82LF80LF82LF80LF80LF80LF80LF80LF9lLF9jLF9lLF9jLF80LF80LF80LF80LF82LF80LF82LF80LF80LF80LF80LF80LF9jLF9jLF9jLF9jLF80LF80LF80LF80LF80LF80LF80LF80LF80LF80LF80LF80LF9mLF9jLF9lLF9jLF8xLF8wLF8wLF8wLF82LF80LF82LF80LF8wLF8wLF8wLF8wLF9kLF9jLF9jLF9jLF8xLF8wLF8wLF8wLF80LF80LF80LF80LF8wLF8wLF8wLF8wLF9jLF9jLF9jLF9jLF8wLF8wLF8wLF8wLF80LF80LF80LF80LF8wLF8wLF8wLF8wLF9jLF9jLF9jLF9jLF8wLF8wLF8wLF8wLF80LF80LF80LF80LF8wLF8wLF8wLF8wLAorICAgICAgXzYsXzYsXzYsXzYsXzIsXzAsXzIsXzAsXzYsXzYsXzYsXzYsXzIsXzAsXzIsXzAsXzYsXzQsXzYsXzQsXzAsXzAsXzAsXzAsXzYsXzQsXzYsXzQsXzAsXzAsXzAsXzAsXzYsXzQsXzYsXzQsXzAsXzAsXzAsXzAsXzYsXzQsXzYsXzQsXzAsXzAsXzAsXzAsXzQsXzQsXzQsXzQsXzAsXzAsXzAsXzAsXzQsXzQsXzQsXzQsXzAsXzAsXzAsXzAsXzIsXzAsXzIsXzAsXzAsXzAsXzAsXzAsXzIsXzAsXzIsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsCisgICAgICBfZixfYyxfZSxfYyxfMSxfMCxfMCxfMCxfNixfNCxfNixfNCxfMCxfMCxfMCxfMCxfZCxfYyxfYyxfYyxfMSxfMCxfMCxfMCxfNCxfNCxfNCxfNCxfMCxfMCxfMCxfMCxfYyxfYyxfYyxfYyxfMCxfMCxfMCxfMCxfNCxfNCxfNCxfNCxfMCxfMCxfMCxfMCxfYyxfYyxfYyxfYyxfMCxfMCxfMCxfMCxfNCxfNCxfNCxfNCxfMCxfMCxfMCxfMCxfOSxfOCxfOCxfOCxfMSxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfOSxfOCxfOCxfOCxfMSxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfOCxfOCxfOCxfOCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfOCxfOCxfOCxfOCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCwKKyAgICAgIF8yLF8wLF8yLF8wLF8wLF8wLF8wLF8wLF8yLF8wLF8yLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLAorICAgICAgXzgsXzksXzksXzgsXzUsXzcsXzUsXzYsXzEsXzAsXzAsXzAsXzUsXzYsXzQsXzYsXzgsX2IsXzksX2EsXzcsXzUsXzcsXzQsXzEsXzIsXzAsXzIsXzcsXzQsXzYsXzQsXzksX2EsXzgsX2EsXzcsXzQsXzYsXzQsXzAsXzIsXzAsXzIsXzYsXzQsXzYsXzQsX2IsXzgsX2EsXzgsXzUsXzQsXzQsXzQsXzIsXzAsXzIsXzAsXzQsXzQsXzQsXzQsX2MsX2YsX2QsX2UsXzMsXzEsXzMsXzAsXzUsXzYsXzQsXzYsXzMsXzAsXzIsXzAsX2UsX2QsX2YsX2MsXzEsXzEsXzEsXzAsXzcsXzQsXzYsXzQsXzEsXzAsXzAsXzAsX2YsX2MsX2UsX2MsXzEsXzAsXzAsXzAsXzYsXzQsXzYsXzQsXzAsXzAsXzAsXzAsX2QsX2MsX2MsX2MsXzEsXzAsXzAsXzAsXzQsXzQsXzQsXzQsXzAsXzAsXzAsXzAsCisgICAgICBfNSxfNixfNCxfNixfMyxfMixfMixfMixfNCxfNixfNCxfNixfMixfMixfMixfMixfNyxfNixfNixfNixfMyxfMCxfMixfMCxfNixfNixfNixfNixfMixfMCxfMixfMCxfNixfNixfNixfNixfMixfMCxfMixfMCxfNixfNixfNixfNixfMixfMCxfMixfMCxfNixfNCxfNixfNCxfMCxfMCxfMCxfMCxfNixfNCxfNixfNCxfMCxfMCxfMCxfMCxfMyxfMixfMixfMixfMyxfMCxfMixfMCxfMixfMixfMixfMixfMixfMCxfMixfMCxfMyxfMCxfMixfMCxfMSxfMCxfMCxfMCxfMixfMCxfMixfMCxfMCxfMCxfMCxfMCxfMixfMCxfMixfMCxfMCxfMCxfMCxfMCxfMixfMCxfMixfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCwKKyAgICAgIF9jLF9mLF9kLF9lLF8zLF8xLF8zLF8wLF81LF82LF80LF82LF8zLF8wLF8yLF8wLF9lLF9kLF9mLF9jLF8xLF8xLF8xLF8wLF83LF80LF82LF80LF8xLF8wLF8wLF8wLF9mLF9jLF9lLF9jLF8xLF8wLF8wLF8wLF82LF80LF82LF80LF8wLF8wLF8wLF8wLF9kLF9jLF9jLF9jLF8xLF8wLF8wLF8wLF80LF80LF80LF80LF8wLF8wLF8wLF8wLF9hLF85LF9iLF84LF8xLF8xLF8xLF8wLF8zLF8wLF8yLF8wLF8xLF8wLF8wLF8wLF84LF85LF85LF84LF8xLF8xLF8xLF8wLF8xLF8wLF8wLF8wLF8xLF8wLF8wLF8wLF85LF84LF84LF84LF8xLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF85LF84LF84LF84LF8xLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLAorICAgICAgXzMsXzIsXzIsXzIsXzMsXzAsXzIsXzAsXzIsXzIsXzIsXzIsXzIsXzAsXzIsXzAsXzMsXzAsXzIsXzAsXzEsXzAsXzAsXzAsXzIsXzAsXzIsXzAsXzAsXzAsXzAsXzAsXzIsXzAsXzIsXzAsXzAsXzAsXzAsXzAsXzIsXzAsXzIsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzMsXzAsXzIsXzAsXzEsXzAsXzAsXzAsXzIsXzAsXzIsXzAsXzAsXzAsXzAsXzAsXzEsXzAsXzAsXzAsXzEsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsCisgICAgICBfNSxfNixfNCxfNixfNyxfNCxfNixfNCxfNCxfNixfNCxfNixfNixfNCxfNixfNCxfNyxfNCxfNixfNCxfNSxfNCxfNCxfNCxfNixfNCxfNixfNCxfNCxfNCxfNCxfNCxfNixfNCxfNixfNCxfNCxfNCxfNCxfNCxfNixfNCxfNixfNCxfNCxfNCxfNCxfNCxfNCxfNCxfNCxfNCxfNCxfNCxfNCxfNCxfNCxfNCxfNCxfNCxfNCxfNCxfNCxfNCxfNyxfNCxfNixfNCxfMSxfMCxfMCxfMCxfNixfNCxfNixfNCxfMCxfMCxfMCxfMCxfNSxfNCxfNCxfNCxfMSxfMCxfMCxfMCxfNCxfNCxfNCxfNCxfMCxfMCxfMCxfMCxfNCxfNCxfNCxfNCxfMCxfMCxfMCxfMCxfNCxfNCxfNCxfNCxfMCxfMCxfMCxfMCxfNCxfNCxfNCxfNCxfMCxfMCxfMCxfMCxfNCxfNCxfNCxfNCxfMCxfMCxfMCxfMCwKKyAgICAgIF82LF82LF82LF82LF8yLF8wLF8yLF8wLF82LF82LF82LF82LF8yLF8wLF8yLF8wLF82LF80LF82LF80LF8wLF8wLF8wLF8wLF82LF80LF82LF80LF8wLF8wLF8wLF8wLF82LF80LF82LF80LF8wLF8wLF8wLF8wLF82LF80LF82LF80LF8wLF8wLF8wLF8wLF80LF80LF80LF80LF8wLF8wLF8wLF8wLF80LF80LF80LF80LF8wLF8wLF8wLF8wLF8yLF8wLF8yLF8wLF8wLF8wLF8wLF8wLF8yLF8wLF8yLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLAorICAgICAgXzcsXzQsXzYsXzQsXzEsXzAsXzAsXzAsXzYsXzQsXzYsXzQsXzAsXzAsXzAsXzAsXzUsXzQsXzQsXzQsXzEsXzAsXzAsXzAsXzQsXzQsXzQsXzQsXzAsXzAsXzAsXzAsXzQsXzQsXzQsXzQsXzAsXzAsXzAsXzAsXzQsXzQsXzQsXzQsXzAsXzAsXzAsXzAsXzQsXzQsXzQsXzQsXzAsXzAsXzAsXzAsXzQsXzQsXzQsXzQsXzAsXzAsXzAsXzAsXzEsXzAsXzAsXzAsXzEsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzEsXzAsXzAsXzAsXzEsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsCisgICAgICBfMixfMCxfMixfMCxfMCxfMCxfMCxfMCxfMixfMCxfMixfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCwKKyAgICAgIF9jLF9kLF9kLF9jLF8xLF8zLF8xLF8yLF81LF80LF80LF80LF8xLF8yLF8wLF8yLF9jLF9mLF9kLF9lLF8zLF8xLF8zLF8wLF81LF82LF80LF82LF8zLF8wLF8yLF8wLF9kLF9lLF9jLF9lLF8zLF8wLF8yLF8wLF80LF82LF80LF82LF8yLF8wLF8yLF8wLF9mLF9jLF9lLF9jLF8xLF8wLF8wLF8wLF82LF80LF82LF80LF8wLF8wLF8wLF8wLF84LF9iLF85LF9hLF8zLF8xLF8zLF8wLF8xLF8yLF8wLF8yLF8zLF8wLF8yLF8wLF9hLF85LF9iLF84LF8xLF8xLF8xLF8wLF8zLF8wLF8yLF8wLF8xLF8wLF8wLF8wLF9iLF84LF9hLF84LF8xLF8wLF8wLF8wLF8yLF8wLF8yLF8wLF8wLF8wLF8wLF8wLF85LF84LF84LF84LF8xLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLAorICAgICAgXzEsXzIsXzAsXzIsXzMsXzIsXzIsXzIsXzAsXzIsXzAsXzIsXzIsXzIsXzIsXzIsXzMsXzIsXzIsXzIsXzMsXzAsXzIsXzAsXzIsXzIsXzIsXzIsXzIsXzAsXzIsXzAsXzIsXzIsXzIsXzIsXzIsXzAsXzIsXzAsXzIsXzIsXzIsXzIsXzIsXzAsXzIsXzAsXzIsXzAsXzIsXzAsXzAsXzAsXzAsXzAsXzIsXzAsXzIsXzAsXzAsXzAsXzAsXzAsXzMsXzIsXzIsXzIsXzMsXzAsXzIsXzAsXzIsXzIsXzIsXzIsXzIsXzAsXzIsXzAsXzMsXzAsXzIsXzAsXzEsXzAsXzAsXzAsXzIsXzAsXzIsXzAsXzAsXzAsXzAsXzAsXzIsXzAsXzIsXzAsXzAsXzAsXzAsXzAsXzIsXzAsXzIsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsCisgICAgICBfOCxfYixfOSxfYSxfMyxfMSxfMyxfMCxfMSxfMixfMCxfMixfMyxfMCxfMixfMCxfYSxfOSxfYixfOCxfMSxfMSxfMSxfMCxfMyxfMCxfMixfMCxfMSxfMCxfMCxfMCxfYixfOCxfYSxfOCxfMSxfMCxfMCxfMCxfMixfMCxfMixfMCxfMCxfMCxfMCxfMCxfOSxfOCxfOCxfOCxfMSxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfYSxfOSxfYixfOCxfMSxfMSxfMSxfMCxfMyxfMCxfMixfMCxfMSxfMCxfMCxfMCxfOCxfOSxfOSxfOCxfMSxfMSxfMSxfMCxfMSxfMCxfMCxfMCxfMSxfMCxfMCxfMCxfOSxfOCxfOCxfOCxfMSxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfOSxfOCxfOCxfOCxfMSxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCwKKyAgICAgIF8zLF8yLF8yLF8yLF8zLF8wLF8yLF8wLF8yLF8yLF8yLF8yLF8yLF8wLF8yLF8wLF8zLF8wLF8yLF8wLF8xLF8wLF8wLF8wLF8yLF8wLF8yLF8wLF8wLF8wLF8wLF8wLF8yLF8wLF8yLF8wLF8wLF8wLF8wLF8wLF8yLF8wLF8yLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8zLF8wLF8yLF8wLF8xLF8wLF8wLF8wLF8yLF8wLF8yLF8wLF8wLF8wLF8wLF8wLF8xLF8wLF8wLF8wLF8xLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLAorICAgICAgXzUsXzYsXzQsXzYsXzMsXzAsXzIsXzAsXzQsXzYsXzQsXzYsXzIsXzAsXzIsXzAsXzcsXzQsXzYsXzQsXzEsXzAsXzAsXzAsXzYsXzQsXzYsXzQsXzAsXzAsXzAsXzAsXzYsXzQsXzYsXzQsXzAsXzAsXzAsXzAsXzYsXzQsXzYsXzQsXzAsXzAsXzAsXzAsXzQsXzQsXzQsXzQsXzAsXzAsXzAsXzAsXzQsXzQsXzQsXzQsXzAsXzAsXzAsXzAsXzMsXzAsXzIsXzAsXzEsXzAsXzAsXzAsXzIsXzAsXzIsXzAsXzAsXzAsXzAsXzAsXzEsXzAsXzAsXzAsXzEsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsCisgICAgICBfMixfMixfMixfMixfMixfMCxfMixfMCxfMixfMixfMixfMixfMixfMCxfMixfMCxfMixfMCxfMixfMCxfMCxfMCxfMCxfMCxfMixfMCxfMixfMCxfMCxfMCxfMCxfMCxfMixfMCxfMixfMCxfMCxfMCxfMCxfMCxfMixfMCxfMixfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMixfMCxfMixfMCxfMCxfMCxfMCxfMCxfMixfMCxfMixfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCwKKyAgICAgIF8zLF8wLF8yLF8wLF8xLF8wLF8wLF8wLF8yLF8wLF8yLF8wLF8wLF8wLF8wLF8wLF8xLF8wLF8wLF8wLF8xLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8xLF8wLF8wLF8wLF8xLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8xLF8wLF8wLF8wLF8xLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLAorICAgICAgXzIsXzAsXzIsXzAsXzAsXzAsXzAsXzAsXzIsXzAsXzIsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsCisgICAgICBfMCxfMCxfMCxfMCxfOCxfOCxfOCxfOSxfOCxfOCxfOCxfOSxfMCxfMSxfMSxfMSxfMCxfMCxfMCxfMCxfOCxfYSxfOCxfYixfOCxfOCxfOCxfOSxfMCxfMyxfMSxfMyxfMCxfMCxfMCxfMSxfOCxfYixfOSxfYixfOCxfOSxfOSxfOCxfMSxfMyxfMSxfMixfMCxfMixfMCxfMyxfYSxfOSxfYixfOSxfOCxfYixfOSxfYSxfMyxfMSxfMyxfMCxfMCxfMCxfMCxfMCxfYyxfZSxfYyxfZixfOCxfOCxfOCxfOSxfNCxfNyxfNSxfNyxfMCxfMixfMCxfMixfZSxfYyxfZSxfZCxfOCxfYSxfOCxfYixfNixfNSxfNyxfNSxfMCxfMixfMCxfMyxfZSxfZCxfZixfZCxfOCxfYixfOSxfYSxfNyxfNSxfNyxfNCxfMixfMCxfMixfMSxfYyxfZCxfZCxfZCxfYSxfOSxfYixfOCxfNSxfNSxfNSxfNCwKKyAgICAgIF84LF84LF84LF85LF80LF83LF81LF83LF8wLF8xLF8xLF8wLF81LF83LF81LF82LF84LF9hLF84LF9iLF82LF83LF83LF83LF8wLF8zLF8xLF8yLF83LF83LF83LF82LF84LF9iLF85LF9hLF83LF83LF83LF82LF8xLF8yLF8wLF8yLF83LF82LF82LF82LF9hLF9iLF9iLF9hLF83LF81LF83LF80LF8zLF8yLF8yLF8yLF83LF80LF82LF80LF9jLF9lLF9jLF9mLF8yLF8zLF8zLF8zLF80LF83LF81LF82LF8zLF8zLF8zLF8yLF9lLF9lLF9lLF9mLF8yLF8xLF8zLF8xLF82LF83LF83LF82LF8zLF8xLF8zLF8wLF9lLF9mLF9mLF9lLF8zLF8xLF8zLF8wLF83LF82LF82LF82LF8zLF8wLF8yLF8wLF9lLF9kLF9mLF9jLF8xLF8xLF8xLF8wLF83LF80LF82LF80LF8xLF8wLF8wLF8wLAorICAgICAgXzAsXzAsXzAsXzAsX2MsX2UsX2MsX2YsXzgsXzgsXzgsXzksXzQsXzcsXzUsXzcsXzAsXzIsXzAsXzIsX2UsX2MsX2UsX2QsXzgsX2EsXzgsX2IsXzYsXzUsXzcsXzUsXzAsXzIsXzAsXzMsX2UsX2QsX2YsX2QsXzgsX2IsXzksX2EsXzcsXzUsXzcsXzQsXzIsXzAsXzIsXzEsX2MsX2QsX2QsX2QsX2EsXzksX2IsXzgsXzUsXzUsXzUsXzQsXzQsXzYsXzQsXzYsX2EsXzgsX2EsXzksX2MsX2UsX2MsX2YsXzIsXzEsXzMsXzEsXzYsXzQsXzYsXzQsXzgsXzgsXzgsXzksX2UsX2MsX2UsX2QsXzAsXzEsXzEsXzEsXzYsXzQsXzYsXzUsXzgsXzksXzksXzksX2UsX2QsX2YsX2MsXzEsXzEsXzEsXzAsXzQsXzQsXzQsXzUsXzgsXzksXzksXzksX2MsX2QsX2QsX2MsXzEsXzEsXzEsXzAsCisgICAgICBfYyxfZSxfYyxfZixfMixfMyxfMyxfMyxfNCxfNyxfNSxfNixfMyxfMyxfMyxfMixfZSxfZSxfZSxfZixfMixfMSxfMyxfMSxfNixfNyxfNyxfNixfMyxfMSxfMyxfMCxfZSxfZixfZixfZSxfMyxfMSxfMyxfMCxfNyxfNixfNixfNixfMyxfMCxfMixfMCxfZSxfZCxfZixfYyxfMSxfMSxfMSxfMCxfNyxfNCxfNixfNCxfMSxfMCxfMCxfMCxfYSxfYSxfYSxfYixfMixfMSxfMyxfMSxfMixfMyxfMyxfMixfMyxfMSxfMyxfMCxfYSxfOCxfYSxfOSxfMCxfMSxfMSxfMSxfMixfMSxfMyxfMCxfMSxfMSxfMSxfMCxfYSxfOSxfYixfOCxfMSxfMSxfMSxfMCxfMyxfMCxfMixfMCxfMSxfMCxfMCxfMCxfOCxfOSxfOSxfOCxfMSxfMSxfMSxfMCxfMSxfMCxfMCxfMCxfMSxfMCxfMCxfMCwKKyAgICAgIF84LF84LF84LF85LF80LF83LF81LF83LF8wLF8xLF8xLF8wLF81LF83LF81LF82LF84LF9hLF84LF9iLF82LF81LF83LF81LF8wLF8zLF8xLF8yLF83LF81LF83LF80LF84LF9iLF85LF9hLF83LF81LF83LF80LF8xLF8yLF8wLF8yLF83LF80LF82LF80LF9hLF85LF9iLF84LF81LF81LF81LF80LF8zLF8wLF8yLF8wLF81LF80LF80LF80LF9jLF9lLF9jLF9mLF82LF81LF83LF81LF80LF83LF81LF82LF83LF81LF83LF80LF9lLF9jLF9lLF9kLF80LF81LF81LF81LF82LF81LF83LF80LF81LF81LF81LF80LF9lLF9kLF9mLF9jLF81LF81LF81LF80LF83LF80LF82LF80LF81LF80LF80LF80LF9jLF9kLF9kLF9jLF81LF81LF81LF80LF81LF80LF80LF80LF81LF80LF80LF80LAorICAgICAgXzQsXzcsXzUsXzYsXzcsXzcsXzcsXzYsXzUsXzYsXzQsXzYsXzcsXzYsXzYsXzYsXzYsXzcsXzcsXzYsXzcsXzUsXzcsXzQsXzcsXzYsXzYsXzYsXzcsXzQsXzYsXzQsXzcsXzYsXzYsXzYsXzcsXzQsXzYsXzQsXzYsXzYsXzYsXzYsXzYsXzQsXzYsXzQsXzcsXzQsXzYsXzQsXzUsXzQsXzQsXzQsXzYsXzQsXzYsXzQsXzQsXzQsXzQsXzQsXzYsXzcsXzcsXzYsXzMsXzEsXzMsXzAsXzcsXzYsXzYsXzYsXzMsXzAsXzIsXzAsXzYsXzUsXzcsXzQsXzEsXzEsXzEsXzAsXzcsXzQsXzYsXzQsXzEsXzAsXzAsXzAsXzcsXzQsXzYsXzQsXzEsXzAsXzAsXzAsXzYsXzQsXzYsXzQsXzAsXzAsXzAsXzAsXzUsXzQsXzQsXzQsXzEsXzAsXzAsXzAsXzQsXzQsXzQsXzQsXzAsXzAsXzAsXzAsCisgICAgICBfYyxfZSxfYyxfZixfNixfNSxfNyxfNSxfNCxfNyxfNSxfNixfNyxfNSxfNyxfNCxfZSxfYyxfZSxfZCxfNCxfNSxfNSxfNSxfNixfNSxfNyxfNCxfNSxfNSxfNSxfNCxfZSxfZCxfZixfYyxfNSxfNSxfNSxfNCxfNyxfNCxfNixfNCxfNSxfNCxfNCxfNCxfYyxfZCxfZCxfYyxfNSxfNSxfNSxfNCxfNSxfNCxfNCxfNCxfNSxfNCxfNCxfNCxfZSxfYyxfZSxfZCxfMCxfMSxfMSxfMSxfNixfNSxfNyxfNCxfMSxfMSxfMSxfMCxfYyxfYyxfYyxfZCxfMCxfMSxfMSxfMSxfNCxfNSxfNSxfNCxfMSxfMSxfMSxfMCxfYyxfZCxfZCxfYyxfMSxfMSxfMSxfMCxfNSxfNCxfNCxfNCxfMSxfMCxfMCxfMCxfYyxfZCxfZCxfYyxfMSxfMSxfMSxfMCxfNSxfNCxfNCxfNCxfMSxfMCxfMCxfMCwKKyAgICAgIF82LF83LF83LF82LF8zLF8xLF8zLF8wLF83LF82LF82LF82LF8zLF8wLF8yLF8wLF82LF81LF83LF80LF8xLF8xLF8xLF8wLF83LF80LF82LF80LF8xLF8wLF8wLF8wLF83LF80LF82LF80LF8xLF8wLF8wLF8wLF82LF80LF82LF80LF8wLF8wLF8wLF8wLF81LF80LF80LF80LF8xLF8wLF8wLF8wLF80LF80LF80LF80LF8wLF8wLF8wLF8wLF8yLF8xLF8zLF8wLF8xLF8xLF8xLF8wLF8zLF8wLF8yLF8wLF8xLF8wLF8wLF8wLF8wLF8xLF8xLF8wLF8xLF8xLF8xLF8wLF8xLF8wLF8wLF8wLF8xLF8wLF8wLF8wLF8xLF8wLF8wLF8wLF8xLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8xLF8wLF8wLF8wLF8xLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLAorICAgICAgXzAsXzAsXzAsXzAsX2MsX2MsX2MsX2QsXzgsXzgsXzgsXzksXzQsXzUsXzUsXzUsXzAsXzAsXzAsXzAsX2MsX2UsX2MsX2YsXzgsXzgsXzgsXzksXzQsXzcsXzUsXzcsXzAsXzAsXzAsXzEsX2MsX2YsX2QsX2YsXzgsXzksXzksXzgsXzUsXzcsXzUsXzYsXzAsXzIsXzAsXzMsX2UsX2QsX2YsX2QsXzgsX2IsXzksX2EsXzcsXzUsXzcsXzQsXzQsXzQsXzQsXzQsXzgsX2EsXzgsX2IsX2MsX2MsX2MsX2QsXzAsXzMsXzEsXzMsXzQsXzYsXzQsXzYsX2EsXzgsX2EsXzksX2MsX2UsX2MsX2YsXzIsXzEsXzMsXzEsXzQsXzYsXzQsXzcsX2EsXzksX2IsXzksX2MsX2YsX2QsX2UsXzMsXzEsXzMsXzAsXzYsXzQsXzYsXzUsXzgsXzksXzksXzksX2UsX2QsX2YsX2MsXzEsXzEsXzEsXzAsCisgICAgICBfYyxfYyxfYyxfZCxfMCxfMyxfMSxfMyxfNCxfNSxfNSxfNCxfMSxfMyxfMSxfMixfYyxfZSxfYyxfZixfMixfMyxfMyxfMyxfNCxfNyxfNSxfNixfMyxfMyxfMyxfMixfYyxfZixfZCxfZSxfMyxfMyxfMyxfMixfNSxfNixfNCxfNixfMyxfMixfMixfMixfZSxfZixfZixfZSxfMyxfMSxfMyxfMCxfNyxfNixfNixfNixfMyxfMCxfMixfMCxfOCxfYSxfOCxfYixfMixfMyxfMyxfMyxfMCxfMyxfMSxfMixfMyxfMyxfMyxfMixfYSxfYSxfYSxfYixfMixfMSxfMyxfMSxfMixfMyxfMyxfMixfMyxfMSxfMyxfMCxfYSxfYixfYixfYSxfMyxfMSxfMyxfMCxfMyxfMixfMixfMixfMyxfMCxfMixfMCxfYSxfOSxfYixfOCxfMSxfMSxfMSxfMCxfMyxfMCxfMixfMCxfMSxfMCxfMCxfMCwKKyAgICAgIF80LF80LF80LF80LF84LF9hLF84LF9iLF9jLF9jLF9jLF9kLF8wLF8zLF8xLF8zLF80LF82LF80LF82LF9hLF84LF9hLF85LF9jLF9lLF9jLF9mLF8yLF8xLF8zLF8xLF80LF82LF80LF83LF9hLF85LF9iLF85LF9jLF9mLF9kLF9lLF8zLF8xLF8zLF8wLF82LF80LF82LF81LF84LF85LF85LF85LF9lLF9kLF9mLF9jLF8xLF8xLF8xLF8wLF8wLF8yLF8wLF8yLF9hLF84LF9hLF85LF84LF9hLF84LF9iLF8yLF8xLF8zLF8xLF8yLF8wLF8yLF8wLF84LF84LF84LF85LF9hLF84LF9hLF85LF8wLF8xLF8xLF8xLF8yLF8wLF8yLF8xLF84LF85LF85LF85LF9hLF85LF9iLF84LF8xLF8xLF8xLF8wLF8wLF8wLF8wLF8xLF84LF85LF85LF85LF84LF85LF85LF84LF8xLF8xLF8xLF8wLAorICAgICAgXzgsX2EsXzgsX2IsXzIsXzMsXzMsXzMsXzAsXzMsXzEsXzIsXzMsXzMsXzMsXzIsX2EsX2EsX2EsX2IsXzIsXzEsXzMsXzEsXzIsXzMsXzMsXzIsXzMsXzEsXzMsXzAsX2EsX2IsX2IsX2EsXzMsXzEsXzMsXzAsXzMsXzIsXzIsXzIsXzMsXzAsXzIsXzAsX2EsXzksX2IsXzgsXzEsXzEsXzEsXzAsXzMsXzAsXzIsXzAsXzEsXzAsXzAsXzAsX2EsX2EsX2EsX2IsXzIsXzEsXzMsXzEsXzIsXzMsXzMsXzIsXzMsXzEsXzMsXzAsX2EsXzgsX2EsXzksXzAsXzEsXzEsXzEsXzIsXzEsXzMsXzAsXzEsXzEsXzEsXzAsX2EsXzksX2IsXzgsXzEsXzEsXzEsXzAsXzMsXzAsXzIsXzAsXzEsXzAsXzAsXzAsXzgsXzksXzksXzgsXzEsXzEsXzEsXzAsXzEsXzAsXzAsXzAsXzEsXzAsXzAsXzAsCisgICAgICBfYyxfYyxfYyxfZCxfNCxfNyxfNSxfNyxfNCxfNSxfNSxfNCxfNSxfNyxfNSxfNixfYyxfZSxfYyxfZixfNixfNSxfNyxfNSxfNCxfNyxfNSxfNixfNyxfNSxfNyxfNCxfYyxfZixfZCxfZSxfNyxfNSxfNyxfNCxfNSxfNixfNCxfNixfNyxfNCxfNixfNCxfZSxfZCxfZixfYyxfNSxfNSxfNSxfNCxfNyxfNCxfNixfNCxfNSxfNCxfNCxfNCxfYyxfZSxfYyxfZixfMixfMSxfMyxfMSxfNCxfNyxfNSxfNixfMyxfMSxfMyxfMCxfZSxfYyxfZSxfZCxfMCxfMSxfMSxfMSxfNixfNSxfNyxfNCxfMSxfMSxfMSxfMCxfZSxfZCxfZixfYyxfMSxfMSxfMSxfMCxfNyxfNCxfNixfNCxfMSxfMCxfMCxfMCxfYyxfZCxfZCxfYyxfMSxfMSxfMSxfMCxfNSxfNCxfNCxfNCxfMSxfMCxfMCxfMCwKKyAgICAgIF80LF83LF81LF82LF8zLF8zLF8zLF8yLF81LF82LF80LF82LF8zLF8yLF8yLF8yLF82LF83LF83LF82LF8zLF8xLF8zLF8wLF83LF82LF82LF82LF8zLF8wLF8yLF8wLF83LF82LF82LF82LF8zLF8wLF8yLF8wLF82LF82LF82LF82LF8yLF8wLF8yLF8wLF83LF80LF82LF80LF8xLF8wLF8wLF8wLF82LF80LF82LF80LF8wLF8wLF8wLF8wLF8yLF8zLF8zLF8yLF8zLF8xLF8zLF8wLF8zLF8yLF8yLF8yLF8zLF8wLF8yLF8wLF8yLF8xLF8zLF8wLF8xLF8xLF8xLF8wLF8zLF8wLF8yLF8wLF8xLF8wLF8wLF8wLF8zLF8wLF8yLF8wLF8xLF8wLF8wLF8wLF8yLF8wLF8yLF8wLF8wLF8wLF8wLF8wLF8xLF8wLF8wLF8wLF8xLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLAorICAgICAgX2MsX2UsX2MsX2YsXzIsXzEsXzMsXzEsXzQsXzcsXzUsXzYsXzMsXzEsXzMsXzAsX2UsX2MsX2UsX2QsXzAsXzEsXzEsXzEsXzYsXzUsXzcsXzQsXzEsXzEsXzEsXzAsX2UsX2QsX2YsX2MsXzEsXzEsXzEsXzAsXzcsXzQsXzYsXzQsXzEsXzAsXzAsXzAsX2MsX2QsX2QsX2MsXzEsXzEsXzEsXzAsXzUsXzQsXzQsXzQsXzEsXzAsXzAsXzAsX2EsXzgsX2EsXzksXzAsXzEsXzEsXzEsXzIsXzEsXzMsXzAsXzEsXzEsXzEsXzAsXzgsXzgsXzgsXzksXzAsXzEsXzEsXzEsXzAsXzEsXzEsXzAsXzEsXzEsXzEsXzAsXzgsXzksXzksXzgsXzEsXzEsXzEsXzAsXzEsXzAsXzAsXzAsXzEsXzAsXzAsXzAsXzgsXzksXzksXzgsXzEsXzEsXzEsXzAsXzEsXzAsXzAsXzAsXzEsXzAsXzAsXzAsCisgICAgICBfMixfMyxfMyxfMixfMyxfMSxfMyxfMCxfMyxfMixfMixfMixfMyxfMCxfMixfMCxfMixfMSxfMyxfMCxfMSxfMSxfMSxfMCxfMyxfMCxfMixfMCxfMSxfMCxfMCxfMCxfMyxfMCxfMixfMCxfMSxfMCxfMCxfMCxfMixfMCxfMixfMCxfMCxfMCxfMCxfMCxfMSxfMCxfMCxfMCxfMSxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMixfMSxfMyxfMCxfMSxfMSxfMSxfMCxfMyxfMCxfMixfMCxfMSxfMCxfMCxfMCxfMCxfMSxfMSxfMCxfMSxfMSxfMSxfMCxfMSxfMCxfMCxfMCxfMSxfMCxfMCxfMCxfMSxfMCxfMCxfMCxfMSxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMSxfMCxfMCxfMCxfMSxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCwKKyAgICAgIF84LF84LF84LF84LF80LF80LF80LF81LF8wLF8wLF8wLF8xLF80LF81LF81LF81LF84LF84LF84LF84LF80LF82LF80LF83LF8wLF8wLF8wLF8xLF80LF83LF81LF83LF84LF84LF84LF85LF80LF83LF81LF83LF8wLF8xLF8xLF8wLF81LF83LF81LF82LF84LF9hLF84LF9iLF82LF81LF83LF81LF8wLF8zLF8xLF8yLF83LF81LF83LF80LF9jLF9jLF9jLF9jLF8wLF8yLF8wLF8zLF80LF80LF80LF81LF8wLF8zLF8xLF8zLF9jLF9lLF9jLF9lLF8yLF8wLF8yLF8xLF80LF82LF80LF83LF8yLF8xLF8zLF8xLF9jLF9lLF9jLF9mLF8yLF8xLF8zLF8xLF80LF83LF81LF82LF8zLF8xLF8zLF8wLF9lLF9jLF9lLF9kLF8wLF8xLF8xLF8xLF82LF81LF83LF80LF8xLF8xLF8xLF8wLAorICAgICAgXzQsXzQsXzQsXzUsXzAsXzMsXzEsXzMsXzQsXzUsXzUsXzQsXzEsXzMsXzEsXzIsXzQsXzYsXzQsXzcsXzIsXzMsXzMsXzMsXzQsXzcsXzUsXzYsXzMsXzMsXzMsXzIsXzQsXzcsXzUsXzYsXzMsXzMsXzMsXzIsXzUsXzYsXzQsXzYsXzMsXzIsXzIsXzIsXzYsXzcsXzcsXzYsXzMsXzEsXzMsXzAsXzcsXzYsXzYsXzYsXzMsXzAsXzIsXzAsXzAsXzIsXzAsXzMsXzIsXzMsXzMsXzMsXzAsXzMsXzEsXzIsXzMsXzMsXzMsXzIsXzIsXzIsXzIsXzMsXzIsXzEsXzMsXzEsXzIsXzMsXzMsXzIsXzMsXzEsXzMsXzAsXzIsXzMsXzMsXzIsXzMsXzEsXzMsXzAsXzMsXzIsXzIsXzIsXzMsXzAsXzIsXzAsXzIsXzEsXzMsXzAsXzEsXzEsXzEsXzAsXzMsXzAsXzIsXzAsXzEsXzAsXzAsXzAsCisgICAgICBfYyxfYyxfYyxfYyxfMCxfMixfMCxfMyxfNCxfNCxfNCxfNSxfMCxfMyxfMSxfMyxfYyxfZSxfYyxfZSxfMixfMCxfMixfMSxfNCxfNixfNCxfNyxfMixfMSxfMyxfMSxfYyxfZSxfYyxfZixfMixfMSxfMyxfMSxfNCxfNyxfNSxfNixfMyxfMSxfMyxfMCxfZSxfYyxfZSxfZCxfMCxfMSxfMSxfMSxfNixfNSxfNyxfNCxfMSxfMSxfMSxfMCxfOCxfYSxfOCxfYSxfMixfMCxfMixfMSxfMCxfMixfMCxfMyxfMixfMSxfMyxfMSxfYSxfOCxfYSxfOCxfMCxfMCxfMCxfMSxfMixfMCxfMixfMSxfMCxfMSxfMSxfMSxfYSxfOCxfYSxfOSxfMCxfMSxfMSxfMSxfMixfMSxfMyxfMCxfMSxfMSxfMSxfMCxfOCxfOCxfOCxfOSxfMCxfMSxfMSxfMSxfMCxfMSxfMSxfMCxfMSxfMSxfMSxfMCwKKyAgICAgIF8wLF8yLF8wLF8zLF8yLF8zLF8zLF8zLF8wLF8zLF8xLF8yLF8zLF8zLF8zLF8yLF8yLF8yLF8yLF8zLF8yLF8xLF8zLF8xLF8yLF8zLF8zLF8yLF8zLF8xLF8zLF8wLF8yLF8zLF8zLF8yLF8zLF8xLF8zLF8wLF8zLF8yLF8yLF8yLF8zLF8wLF8yLF8wLF8yLF8xLF8zLF8wLF8xLF8xLF8xLF8wLF8zLF8wLF8yLF8wLF8xLF8wLF8wLF8wLF8yLF8yLF8yLF8zLF8yLF8xLF8zLF8xLF8yLF8zLF8zLF8yLF8zLF8xLF8zLF8wLF8yLF8wLF8yLF8xLF8wLF8xLF8xLF8xLF8yLF8xLF8zLF8wLF8xLF8xLF8xLF8wLF8yLF8xLF8zLF8wLF8xLF8xLF8xLF8wLF8zLF8wLF8yLF8wLF8xLF8wLF8wLF8wLF8wLF8xLF8xLF8wLF8xLF8xLF8xLF8wLF8xLF8wLF8wLF8wLF8xLF8wLF8wLF8wLAorICAgICAgXzQsXzQsXzQsXzUsXzQsXzcsXzUsXzcsXzQsXzUsXzUsXzQsXzUsXzcsXzUsXzYsXzQsXzYsXzQsXzcsXzYsXzUsXzcsXzUsXzQsXzcsXzUsXzYsXzcsXzUsXzcsXzQsXzQsXzcsXzUsXzYsXzcsXzUsXzcsXzQsXzUsXzYsXzQsXzYsXzcsXzQsXzYsXzQsXzYsXzUsXzcsXzQsXzUsXzUsXzUsXzQsXzcsXzQsXzYsXzQsXzUsXzQsXzQsXzQsXzQsXzYsXzQsXzcsXzIsXzEsXzMsXzEsXzQsXzcsXzUsXzYsXzMsXzEsXzMsXzAsXzYsXzQsXzYsXzUsXzAsXzEsXzEsXzEsXzYsXzUsXzcsXzQsXzEsXzEsXzEsXzAsXzYsXzUsXzcsXzQsXzEsXzEsXzEsXzAsXzcsXzQsXzYsXzQsXzEsXzAsXzAsXzAsXzQsXzUsXzUsXzQsXzEsXzEsXzEsXzAsXzUsXzQsXzQsXzQsXzEsXzAsXzAsXzAsCisgICAgICBfNCxfNyxfNSxfNixfMyxfMyxfMyxfMixfNSxfNixfNCxfNixfMyxfMixfMixfMixfNixfNyxfNyxfNixfMyxfMSxfMyxfMCxfNyxfNixfNixfNixfMyxfMCxfMixfMCxfNyxfNixfNixfNixfMyxfMCxfMixfMCxfNixfNixfNixfNixfMixfMCxfMixfMCxfNyxfNCxfNixfNCxfMSxfMCxfMCxfMCxfNixfNCxfNixfNCxfMCxfMCxfMCxfMCxfMixfMyxfMyxfMixfMyxfMSxfMyxfMCxfMyxfMixfMixfMixfMyxfMCxfMixfMCxfMixfMSxfMyxfMCxfMSxfMSxfMSxfMCxfMyxfMCxfMixfMCxfMSxfMCxfMCxfMCxfMyxfMCxfMixfMCxfMSxfMCxfMCxfMCxfMixfMCxfMixfMCxfMCxfMCxfMCxfMCxfMSxfMCxfMCxfMCxfMSxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCwKKyAgICAgIF80LF82LF80LF83LF8yLF8xLF8zLF8xLF80LF83LF81LF82LF8zLF8xLF8zLF8wLF82LF80LF82LF81LF8wLF8xLF8xLF8xLF82LF81LF83LF80LF8xLF8xLF8xLF8wLF82LF81LF83LF80LF8xLF8xLF8xLF8wLF83LF80LF82LF80LF8xLF8wLF8wLF8wLF80LF81LF81LF80LF8xLF8xLF8xLF8wLF81LF80LF80LF80LF8xLF8wLF8wLF8wLF8yLF8wLF8yLF8xLF8wLF8xLF8xLF8xLF8yLF8xLF8zLF8wLF8xLF8xLF8xLF8wLF8wLF8wLF8wLF8xLF8wLF8xLF8xLF8xLF8wLF8xLF8xLF8wLF8xLF8xLF8xLF8wLF8wLF8xLF8xLF8wLF8xLF8xLF8xLF8wLF8xLF8wLF8wLF8wLF8xLF8wLF8wLF8wLF8wLF8xLF8xLF8wLF8xLF8xLF8xLF8wLF8xLF8wLF8wLF8wLF8xLF8wLF8wLF8wLAorICAgICAgXzIsXzMsXzMsXzIsXzMsXzEsXzMsXzAsXzMsXzIsXzIsXzIsXzMsXzAsXzIsXzAsXzIsXzEsXzMsXzAsXzEsXzEsXzEsXzAsXzMsXzAsXzIsXzAsXzEsXzAsXzAsXzAsXzMsXzAsXzIsXzAsXzEsXzAsXzAsXzAsXzIsXzAsXzIsXzAsXzAsXzAsXzAsXzAsXzEsXzAsXzAsXzAsXzEsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzIsXzEsXzMsXzAsXzEsXzEsXzEsXzAsXzMsXzAsXzIsXzAsXzEsXzAsXzAsXzAsXzAsXzEsXzEsXzAsXzEsXzEsXzEsXzAsXzEsXzAsXzAsXzAsXzEsXzAsXzAsXzAsXzEsXzAsXzAsXzAsXzEsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzEsXzAsXzAsXzAsXzEsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsCisgICAgICBfYyxfYyxfYyxfYyxfMCxfMCxfMCxfMSxfNCxfNCxfNCxfNSxfMCxfMSxfMSxfMSxfYyxfYyxfYyxfYyxfMCxfMixfMCxfMyxfNCxfNCxfNCxfNSxfMCxfMyxfMSxfMyxfYyxfYyxfYyxfZCxfMCxfMyxfMSxfMyxfNCxfNSxfNSxfNCxfMSxfMyxfMSxfMixfYyxfZSxfYyxfZixfMixfMSxfMyxfMSxfNCxfNyxfNSxfNixfMyxfMSxfMyxfMCxfOCxfOCxfOCxfOCxfMCxfMixfMCxfMyxfMCxfMCxfMCxfMSxfMCxfMyxfMSxfMyxfOCxfYSxfOCxfYSxfMixfMCxfMixfMSxfMCxfMixfMCxfMyxfMixfMSxfMyxfMSxfOCxfYSxfOCxfYixfMixfMSxfMyxfMSxfMCxfMyxfMSxfMixfMyxfMSxfMyxfMCxfYSxfOCxfYSxfOSxfMCxfMSxfMSxfMSxfMixfMSxfMyxfMCxfMSxfMSxfMSxfMCwKKyAgICAgIF8wLF8wLF8wLF8xLF8wLF8zLF8xLF8zLF8wLF8xLF8xLF8wLF8xLF8zLF8xLF8yLF8wLF8yLF8wLF8zLF8yLF8zLF8zLF8zLF8wLF8zLF8xLF8yLF8zLF8zLF8zLF8yLF8wLF8zLF8xLF8yLF8zLF8zLF8zLF8yLF8xLF8yLF8wLF8yLF8zLF8yLF8yLF8yLF8yLF8zLF8zLF8yLF8zLF8xLF8zLF8wLF8zLF8yLF8yLF8yLF8zLF8wLF8yLF8wLF8wLF8yLF8wLF8zLF8yLF8zLF8zLF8zLF8wLF8zLF8xLF8yLF8zLF8zLF8zLF8yLF8yLF8yLF8yLF8zLF8yLF8xLF8zLF8xLF8yLF8zLF8zLF8yLF8zLF8xLF8zLF8wLF8yLF8zLF8zLF8yLF8zLF8xLF8zLF8wLF8zLF8yLF8yLF8yLF8zLF8wLF8yLF8wLF8yLF8xLF8zLF8wLF8xLF8xLF8xLF8wLF8zLF8wLF8yLF8wLF8xLF8wLF8wLF8wLAorICAgICAgXzgsXzgsXzgsXzgsXzAsXzIsXzAsXzMsXzAsXzAsXzAsXzEsXzAsXzMsXzEsXzMsXzgsX2EsXzgsX2EsXzIsXzAsXzIsXzEsXzAsXzIsXzAsXzMsXzIsXzEsXzMsXzEsXzgsX2EsXzgsX2IsXzIsXzEsXzMsXzEsXzAsXzMsXzEsXzIsXzMsXzEsXzMsXzAsX2EsXzgsX2EsXzksXzAsXzEsXzEsXzEsXzIsXzEsXzMsXzAsXzEsXzEsXzEsXzAsXzgsX2EsXzgsX2EsXzIsXzAsXzIsXzEsXzAsXzIsXzAsXzMsXzIsXzEsXzMsXzEsX2EsXzgsX2EsXzgsXzAsXzAsXzAsXzEsXzIsXzAsXzIsXzEsXzAsXzEsXzEsXzEsX2EsXzgsX2EsXzksXzAsXzEsXzEsXzEsXzIsXzEsXzMsXzAsXzEsXzEsXzEsXzAsXzgsXzgsXzgsXzksXzAsXzEsXzEsXzEsXzAsXzEsXzEsXzAsXzEsXzEsXzEsXzAsCisgICAgICBfMCxfMixfMCxfMyxfMixfMyxfMyxfMyxfMCxfMyxfMSxfMixfMyxfMyxfMyxfMixfMixfMixfMixfMyxfMixfMSxfMyxfMSxfMixfMyxfMyxfMixfMyxfMSxfMyxfMCxfMixfMyxfMyxfMixfMyxfMSxfMyxfMCxfMyxfMixfMixfMixfMyxfMCxfMixfMCxfMixfMSxfMyxfMCxfMSxfMSxfMSxfMCxfMyxfMCxfMixfMCxfMSxfMCxfMCxfMCxfMixfMixfMixfMyxfMixfMSxfMyxfMSxfMixfMyxfMyxfMixfMyxfMSxfMyxfMCxfMixfMCxfMixfMSxfMCxfMSxfMSxfMSxfMixfMSxfMyxfMCxfMSxfMSxfMSxfMCxfMixfMSxfMyxfMCxfMSxfMSxfMSxfMCxfMyxfMCxfMixfMCxfMSxfMCxfMCxfMCxfMCxfMSxfMSxfMCxfMSxfMSxfMSxfMCxfMSxfMCxfMCxfMCxfMSxfMCxfMCxfMCwKKyAgICAgIF80LF80LF80LF81LF8wLF8zLF8xLF8zLF80LF81LF81LF80LF8xLF8zLF8xLF8yLF80LF82LF80LF83LF8yLF8xLF8zLF8xLF80LF83LF81LF82LF8zLF8xLF8zLF8wLF80LF83LF81LF82LF8zLF8xLF8zLF8wLF81LF82LF80LF82LF8zLF8wLF8yLF8wLF82LF81LF83LF80LF8xLF8xLF8xLF8wLF83LF80LF82LF80LF8xLF8wLF8wLF8wLF8wLF8yLF8wLF8zLF8yLF8xLF8zLF8xLF8wLF8zLF8xLF8yLF8zLF8xLF8zLF8wLF8yLF8wLF8yLF8xLF8wLF8xLF8xLF8xLF8yLF8xLF8zLF8wLF8xLF8xLF8xLF8wLF8yLF8xLF8zLF8wLF8xLF8xLF8xLF8wLF8zLF8wLF8yLF8wLF8xLF8wLF8wLF8wLF8wLF8xLF8xLF8wLF8xLF8xLF8xLF8wLF8xLF8wLF8wLF8wLF8xLF8wLF8wLF8wLAorICAgICAgXzAsXzMsXzEsXzIsXzMsXzMsXzMsXzIsXzEsXzIsXzAsXzIsXzMsXzIsXzIsXzIsXzIsXzMsXzMsXzIsXzMsXzEsXzMsXzAsXzMsXzIsXzIsXzIsXzMsXzAsXzIsXzAsXzMsXzIsXzIsXzIsXzMsXzAsXzIsXzAsXzIsXzIsXzIsXzIsXzIsXzAsXzIsXzAsXzMsXzAsXzIsXzAsXzEsXzAsXzAsXzAsXzIsXzAsXzIsXzAsXzAsXzAsXzAsXzAsXzIsXzMsXzMsXzIsXzMsXzEsXzMsXzAsXzMsXzIsXzIsXzIsXzMsXzAsXzIsXzAsXzIsXzEsXzMsXzAsXzEsXzEsXzEsXzAsXzMsXzAsXzIsXzAsXzEsXzAsXzAsXzAsXzMsXzAsXzIsXzAsXzEsXzAsXzAsXzAsXzIsXzAsXzIsXzAsXzAsXzAsXzAsXzAsXzEsXzAsXzAsXzAsXzEsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsCisgICAgICBfMCxfMixfMCxfMyxfMixfMSxfMyxfMSxfMCxfMyxfMSxfMixfMyxfMSxfMyxfMCxfMixfMCxfMixfMSxfMCxfMSxfMSxfMSxfMixfMSxfMyxfMCxfMSxfMSxfMSxfMCxfMixfMSxfMyxfMCxfMSxfMSxfMSxfMCxfMyxfMCxfMixfMCxfMSxfMCxfMCxfMCxfMCxfMSxfMSxfMCxfMSxfMSxfMSxfMCxfMSxfMCxfMCxfMCxfMSxfMCxfMCxfMCxfMixfMCxfMixfMSxfMCxfMSxfMSxfMSxfMixfMSxfMyxfMCxfMSxfMSxfMSxfMCxfMCxfMCxfMCxfMSxfMCxfMSxfMSxfMSxfMCxfMSxfMSxfMCxfMSxfMSxfMSxfMCxfMCxfMSxfMSxfMCxfMSxfMSxfMSxfMCxfMSxfMCxfMCxfMCxfMSxfMCxfMCxfMCxfMCxfMSxfMSxfMCxfMSxfMSxfMSxfMCxfMSxfMCxfMCxfMCxfMSxfMCxfMCxfMCwKKyAgICAgIF8yLF8zLF8zLF8yLF8zLF8xLF8zLF8wLF8zLF8yLF8yLF8yLF8zLF8wLF8yLF8wLF8yLF8xLF8zLF8wLF8xLF8xLF8xLF8wLF8zLF8wLF8yLF8wLF8xLF8wLF8wLF8wLF8zLF8wLF8yLF8wLF8xLF8wLF8wLF8wLF8yLF8wLF8yLF8wLF8wLF8wLF8wLF8wLF8xLF8wLF8wLF8wLF8xLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8yLF8xLF8zLF8wLF8xLF8xLF8xLF8wLF8zLF8wLF8yLF8wLF8xLF8wLF8wLF8wLF8wLF8xLF8xLF8wLF8xLF8xLF8xLF8wLF8xLF8wLF8wLF8wLF8xLF8wLF8wLF8wLF8xLF8wLF8wLF8wLF8xLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8xLF8wLF8wLF8wLF8xLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLAorICAgICAgXzgsXzgsXzgsXzksX2MsX2YsX2QsX2YsXzgsXzksXzksXzgsXzUsXzcsXzUsXzYsXzgsX2EsXzgsX2IsX2UsX2QsX2YsX2QsXzgsX2IsXzksX2EsXzcsXzUsXzcsXzQsXzgsX2IsXzksX2EsX2YsX2QsX2YsX2MsXzksX2EsXzgsX2EsXzcsXzQsXzYsXzQsX2EsXzksX2IsXzgsX2QsX2QsX2QsX2MsX2IsXzgsX2EsXzgsXzUsXzQsXzQsXzQsX2MsX2UsX2MsX2YsX2EsXzksX2IsXzksX2MsX2YsX2QsX2UsXzMsXzEsXzMsXzAsX2UsX2MsX2UsX2QsXzgsXzksXzksXzksX2UsX2QsX2YsX2MsXzEsXzEsXzEsXzAsX2UsX2QsX2YsX2MsXzksXzksXzksXzgsX2YsX2MsX2UsX2MsXzEsXzAsXzAsXzAsX2MsX2QsX2QsX2MsXzksXzksXzksXzgsX2QsX2MsX2MsX2MsXzEsXzAsXzAsXzAsCisgICAgICBfYyxfZixfZCxfZSxfMyxfMyxfMyxfMixfNSxfNixfNCxfNixfMyxfMixfMixfMixfZSxfZixfZixfZSxfMyxfMSxfMyxfMCxfNyxfNixfNixfNixfMyxfMCxfMixfMCxfZixfZSxfZSxfZSxfMyxfMCxfMixfMCxfNixfNixfNixfNixfMixfMCxfMixfMCxfZixfYyxfZSxfYyxfMSxfMCxfMCxfMCxfNixfNCxfNixfNCxfMCxfMCxfMCxfMCxfYSxfYixfYixfYSxfMyxfMSxfMyxfMCxfMyxfMixfMixfMixfMyxfMCxfMixfMCxfYSxfOSxfYixfOCxfMSxfMSxfMSxfMCxfMyxfMCxfMixfMCxfMSxfMCxfMCxfMCxfYixfOCxfYSxfOCxfMSxfMCxfMCxfMCxfMixfMCxfMixfMCxfMCxfMCxfMCxfMCxfOSxfOCxfOCxfOCxfMSxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCwKKyAgICAgIF9jLF9lLF9jLF9mLF9hLF85LF9iLF85LF9jLF9mLF9kLF9lLF8zLF8xLF8zLF8wLF9lLF9jLF9lLF9kLF84LF85LF85LF85LF9lLF9kLF9mLF9jLF8xLF8xLF8xLF8wLF9lLF9kLF9mLF9jLF85LF85LF85LF84LF9mLF9jLF9lLF9jLF8xLF8wLF8wLF8wLF9jLF9kLF9kLF9jLF85LF85LF85LF84LF9kLF9jLF9jLF9jLF8xLF8wLF8wLF8wLF9hLF84LF9hLF85LF84LF85LF85LF85LF9hLF85LF9iLF84LF8xLF8xLF8xLF8wLF84LF84LF84LF85LF84LF85LF85LF85LF84LF85LF85LF84LF8xLF8xLF8xLF8wLF84LF85LF85LF84LF85LF85LF85LF84LF85LF84LF84LF84LF8xLF8wLF8wLF8wLF84LF85LF85LF84LF85LF85LF85LF84LF85LF84LF84LF84LF8xLF8wLF8wLF8wLAorICAgICAgX2EsX2IsX2IsX2EsXzMsXzEsXzMsXzAsXzMsXzIsXzIsXzIsXzMsXzAsXzIsXzAsX2EsXzksX2IsXzgsXzEsXzEsXzEsXzAsXzMsXzAsXzIsXzAsXzEsXzAsXzAsXzAsX2IsXzgsX2EsXzgsXzEsXzAsXzAsXzAsXzIsXzAsXzIsXzAsXzAsXzAsXzAsXzAsXzksXzgsXzgsXzgsXzEsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsX2EsXzksX2IsXzgsXzEsXzEsXzEsXzAsXzMsXzAsXzIsXzAsXzEsXzAsXzAsXzAsXzgsXzksXzksXzgsXzEsXzEsXzEsXzAsXzEsXzAsXzAsXzAsXzEsXzAsXzAsXzAsXzksXzgsXzgsXzgsXzEsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzksXzgsXzgsXzgsXzEsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsCisgICAgICBfYyxfZixfZCxfZSxfNyxfNSxfNyxfNCxfNSxfNixfNCxfNixfNyxfNCxfNixfNCxfZSxfZCxfZixfYyxfNSxfNSxfNSxfNCxfNyxfNCxfNixfNCxfNSxfNCxfNCxfNCxfZixfYyxfZSxfYyxfNSxfNCxfNCxfNCxfNixfNCxfNixfNCxfNCxfNCxfNCxfNCxfZCxfYyxfYyxfYyxfNSxfNCxfNCxfNCxfNCxfNCxfNCxfNCxfNCxfNCxfNCxfNCxfZSxfZCxfZixfYyxfMSxfMSxfMSxfMCxfNyxfNCxfNixfNCxfMSxfMCxfMCxfMCxfYyxfZCxfZCxfYyxfMSxfMSxfMSxfMCxfNSxfNCxfNCxfNCxfMSxfMCxfMCxfMCxfZCxfYyxfYyxfYyxfMSxfMCxfMCxfMCxfNCxfNCxfNCxfNCxfMCxfMCxfMCxfMCxfZCxfYyxfYyxfYyxfMSxfMCxfMCxfMCxfNCxfNCxfNCxfNCxfMCxfMCxfMCxfMCwKKyAgICAgIF83LF82LF82LF82LF8zLF8wLF8yLF8wLF82LF82LF82LF82LF8yLF8wLF8yLF8wLF83LF80LF82LF80LF8xLF8wLF8wLF8wLF82LF80LF82LF80LF8wLF8wLF8wLF8wLF82LF80LF82LF80LF8wLF8wLF8wLF8wLF82LF80LF82LF80LF8wLF8wLF8wLF8wLF80LF80LF80LF80LF8wLF8wLF8wLF8wLF80LF80LF80LF80LF8wLF8wLF8wLF8wLF8zLF8wLF8yLF8wLF8xLF8wLF8wLF8wLF8yLF8wLF8yLF8wLF8wLF8wLF8wLF8wLF8xLF8wLF8wLF8wLF8xLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLAorICAgICAgX2UsX2QsX2YsX2MsXzEsXzEsXzEsXzAsXzcsXzQsXzYsXzQsXzEsXzAsXzAsXzAsX2MsX2QsX2QsX2MsXzEsXzEsXzEsXzAsXzUsXzQsXzQsXzQsXzEsXzAsXzAsXzAsX2QsX2MsX2MsX2MsXzEsXzAsXzAsXzAsXzQsXzQsXzQsXzQsXzAsXzAsXzAsXzAsX2QsX2MsX2MsX2MsXzEsXzAsXzAsXzAsXzQsXzQsXzQsXzQsXzAsXzAsXzAsXzAsXzgsXzksXzksXzgsXzEsXzEsXzEsXzAsXzEsXzAsXzAsXzAsXzEsXzAsXzAsXzAsXzgsXzksXzksXzgsXzEsXzEsXzEsXzAsXzEsXzAsXzAsXzAsXzEsXzAsXzAsXzAsXzksXzgsXzgsXzgsXzEsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzksXzgsXzgsXzgsXzEsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsCisgICAgICBfMyxfMCxfMixfMCxfMSxfMCxfMCxfMCxfMixfMCxfMixfMCxfMCxfMCxfMCxfMCxfMSxfMCxfMCxfMCxfMSxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMSxfMCxfMCxfMCxfMSxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMSxfMCxfMCxfMCxfMSxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCwKKyAgICAgIF9jLF9jLF9jLF9kLF84LF9iLF85LF9iLF9jLF9kLF9kLF9jLF8xLF8zLF8xLF8yLF9jLF9lLF9jLF9mLF9hLF85LF9iLF85LF9jLF9mLF9kLF9lLF8zLF8xLF8zLF8wLF9jLF9mLF9kLF9lLF9iLF85LF9iLF84LF9kLF9lLF9jLF9lLF8zLF8wLF8yLF8wLF9lLF9kLF9mLF9jLF85LF85LF85LF84LF9mLF9jLF9lLF9jLF8xLF8wLF8wLF8wLF84LF9hLF84LF9iLF9hLF85LF9iLF85LF84LF9iLF85LF9hLF8zLF8xLF8zLF8wLF9hLF84LF9hLF85LF84LF85LF85LF85LF9hLF85LF9iLF84LF8xLF8xLF8xLF8wLF9hLF85LF9iLF84LF85LF85LF85LF84LF9iLF84LF9hLF84LF8xLF8wLF8wLF8wLF84LF85LF85LF84LF85LF85LF85LF84LF85LF84LF84LF84LF8xLF8wLF8wLF8wLAorICAgICAgXzgsX2IsXzksX2EsXzMsXzMsXzMsXzIsXzEsXzIsXzAsXzIsXzMsXzIsXzIsXzIsX2EsX2IsX2IsX2EsXzMsXzEsXzMsXzAsXzMsXzIsXzIsXzIsXzMsXzAsXzIsXzAsX2IsX2EsX2EsX2EsXzMsXzAsXzIsXzAsXzIsXzIsXzIsXzIsXzIsXzAsXzIsXzAsX2IsXzgsX2EsXzgsXzEsXzAsXzAsXzAsXzIsXzAsXzIsXzAsXzAsXzAsXzAsXzAsX2EsX2IsX2IsX2EsXzMsXzEsXzMsXzAsXzMsXzIsXzIsXzIsXzMsXzAsXzIsXzAsX2EsXzksX2IsXzgsXzEsXzEsXzEsXzAsXzMsXzAsXzIsXzAsXzEsXzAsXzAsXzAsX2IsXzgsX2EsXzgsXzEsXzAsXzAsXzAsXzIsXzAsXzIsXzAsXzAsXzAsXzAsXzAsXzksXzgsXzgsXzgsXzEsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsCisgICAgICBfOCxfYSxfOCxfYixfYSxfOSxfYixfOSxfOCxfYixfOSxfYSxfMyxfMSxfMyxfMCxfYSxfOCxfYSxfOSxfOCxfOSxfOSxfOSxfYSxfOSxfYixfOCxfMSxfMSxfMSxfMCxfYSxfOSxfYixfOCxfOSxfOSxfOSxfOCxfYixfOCxfYSxfOCxfMSxfMCxfMCxfMCxfOCxfOSxfOSxfOCxfOSxfOSxfOSxfOCxfOSxfOCxfOCxfOCxfMSxfMCxfMCxfMCxfYSxfOCxfYSxfOSxfOCxfOSxfOSxfOSxfYSxfOSxfYixfOCxfMSxfMSxfMSxfMCxfOCxfOCxfOCxfOSxfOCxfOSxfOSxfOSxfOCxfOSxfOSxfOCxfMSxfMSxfMSxfMCxfOCxfOSxfOSxfOCxfOSxfOSxfOSxfOCxfOSxfOCxfOCxfOCxfMSxfMCxfMCxfMCxfOCxfOSxfOSxfOCxfOSxfOSxfOSxfOCxfOSxfOCxfOCxfOCxfMSxfMCxfMCxfMCwKKyAgICAgIF9hLF9iLF9iLF9hLF8zLF8xLF8zLF8wLF8zLF8yLF8yLF8yLF8zLF8wLF8yLF8wLF9hLF85LF9iLF84LF8xLF8xLF8xLF8wLF8zLF8wLF8yLF8wLF8xLF8wLF8wLF8wLF9iLF84LF9hLF84LF8xLF8wLF8wLF8wLF8yLF8wLF8yLF8wLF8wLF8wLF8wLF8wLF85LF84LF84LF84LF8xLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF9hLF85LF9iLF84LF8xLF8xLF8xLF8wLF8zLF8wLF8yLF8wLF8xLF8wLF8wLF8wLF84LF85LF85LF84LF8xLF8xLF8xLF8wLF8xLF8wLF8wLF8wLF8xLF8wLF8wLF8wLF85LF84LF84LF84LF8xLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF85LF84LF84LF84LF8xLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLAorICAgICAgX2MsX2YsX2QsX2UsXzMsXzEsXzMsXzAsXzUsXzYsXzQsXzYsXzMsXzAsXzIsXzAsX2UsX2QsX2YsX2MsXzEsXzEsXzEsXzAsXzcsXzQsXzYsXzQsXzEsXzAsXzAsXzAsX2YsX2MsX2UsX2MsXzEsXzAsXzAsXzAsXzYsXzQsXzYsXzQsXzAsXzAsXzAsXzAsX2QsX2MsX2MsX2MsXzEsXzAsXzAsXzAsXzQsXzQsXzQsXzQsXzAsXzAsXzAsXzAsX2EsXzksX2IsXzgsXzEsXzEsXzEsXzAsXzMsXzAsXzIsXzAsXzEsXzAsXzAsXzAsXzgsXzksXzksXzgsXzEsXzEsXzEsXzAsXzEsXzAsXzAsXzAsXzEsXzAsXzAsXzAsXzksXzgsXzgsXzgsXzEsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzksXzgsXzgsXzgsXzEsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsCisgICAgICBfMyxfMixfMixfMixfMyxfMCxfMixfMCxfMixfMixfMixfMixfMixfMCxfMixfMCxfMyxfMCxfMixfMCxfMSxfMCxfMCxfMCxfMixfMCxfMixfMCxfMCxfMCxfMCxfMCxfMixfMCxfMixfMCxfMCxfMCxfMCxfMCxfMixfMCxfMixfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMyxfMCxfMixfMCxfMSxfMCxfMCxfMCxfMixfMCxfMixfMCxfMCxfMCxfMCxfMCxfMSxfMCxfMCxfMCxfMSxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCwKKyAgICAgIF9hLF85LF9iLF84LF8xLF8xLF8xLF8wLF8zLF8wLF8yLF8wLF8xLF8wLF8wLF8wLF84LF85LF85LF84LF8xLF8xLF8xLF8wLF8xLF8wLF8wLF8wLF8xLF8wLF8wLF8wLF85LF84LF84LF84LF8xLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF85LF84LF84LF84LF8xLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF84LF85LF85LF84LF8xLF8xLF8xLF8wLF8xLF8wLF8wLF8wLF8xLF8wLF8wLF8wLF84LF85LF85LF84LF8xLF8xLF8xLF8wLF8xLF8wLF8wLF8wLF8xLF8wLF8wLF8wLF85LF84LF84LF84LF8xLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF85LF84LF84LF84LF8xLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLAorICAgICAgXzMsXzAsXzIsXzAsXzEsXzAsXzAsXzAsXzIsXzAsXzIsXzAsXzAsXzAsXzAsXzAsXzEsXzAsXzAsXzAsXzEsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzEsXzAsXzAsXzAsXzEsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzEsXzAsXzAsXzAsXzEsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsCisgICAgICBfYyxfYyxfYyxfZCxfMCxfMyxfMSxfMyxfNCxfNSxfNSxfNCxfMSxfMyxfMSxfMixfYyxfZSxfYyxfZixfMixfMSxfMyxfMSxfNCxfNyxfNSxfNixfMyxfMSxfMyxfMCxfYyxfZixfZCxfZSxfMyxfMSxfMyxfMCxfNSxfNixfNCxfNixfMyxfMCxfMixfMCxfZSxfZCxfZixfYyxfMSxfMSxfMSxfMCxfNyxfNCxfNixfNCxfMSxfMCxfMCxfMCxfOCxfYSxfOCxfYixfMixfMSxfMyxfMSxfMCxfMyxfMSxfMixfMyxfMSxfMyxfMCxfYSxfOCxfYSxfOSxfMCxfMSxfMSxfMSxfMixfMSxfMyxfMCxfMSxfMSxfMSxfMCxfYSxfOSxfYixfOCxfMSxfMSxfMSxfMCxfMyxfMCxfMixfMCxfMSxfMCxfMCxfMCxfOCxfOSxfOSxfOCxfMSxfMSxfMSxfMCxfMSxfMCxfMCxfMCxfMSxfMCxfMCxfMCwKKyAgICAgIF8wLF8zLF8xLF8yLF8zLF8zLF8zLF8yLF8xLF8yLF8wLF8yLF8zLF8yLF8yLF8yLF8yLF8zLF8zLF8yLF8zLF8xLF8zLF8wLF8zLF8yLF8yLF8yLF8zLF8wLF8yLF8wLF8zLF8yLF8yLF8yLF8zLF8wLF8yLF8wLF8yLF8yLF8yLF8yLF8yLF8wLF8yLF8wLF8zLF8wLF8yLF8wLF8xLF8wLF8wLF8wLF8yLF8wLF8yLF8wLF8wLF8wLF8wLF8wLF8yLF8zLF8zLF8yLF8zLF8xLF8zLF8wLF8zLF8yLF8yLF8yLF8zLF8wLF8yLF8wLF8yLF8xLF8zLF8wLF8xLF8xLF8xLF8wLF8zLF8wLF8yLF8wLF8xLF8wLF8wLF8wLF8zLF8wLF8yLF8wLF8xLF8wLF8wLF8wLF8yLF8wLF8yLF8wLF8wLF8wLF8wLF8wLF8xLF8wLF8wLF8wLF8xLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLAorICAgICAgXzgsX2EsXzgsX2IsXzIsXzEsXzMsXzEsXzAsXzMsXzEsXzIsXzMsXzEsXzMsXzAsX2EsXzgsX2EsXzksXzAsXzEsXzEsXzEsXzIsXzEsXzMsXzAsXzEsXzEsXzEsXzAsX2EsXzksX2IsXzgsXzEsXzEsXzEsXzAsXzMsXzAsXzIsXzAsXzEsXzAsXzAsXzAsXzgsXzksXzksXzgsXzEsXzEsXzEsXzAsXzEsXzAsXzAsXzAsXzEsXzAsXzAsXzAsX2EsXzgsX2EsXzksXzAsXzEsXzEsXzEsXzIsXzEsXzMsXzAsXzEsXzEsXzEsXzAsXzgsXzgsXzgsXzksXzAsXzEsXzEsXzEsXzAsXzEsXzEsXzAsXzEsXzEsXzEsXzAsXzgsXzksXzksXzgsXzEsXzEsXzEsXzAsXzEsXzAsXzAsXzAsXzEsXzAsXzAsXzAsXzgsXzksXzksXzgsXzEsXzEsXzEsXzAsXzEsXzAsXzAsXzAsXzEsXzAsXzAsXzAsCisgICAgICBfMixfMyxfMyxfMixfMyxfMSxfMyxfMCxfMyxfMixfMixfMixfMyxfMCxfMixfMCxfMixfMSxfMyxfMCxfMSxfMSxfMSxfMCxfMyxfMCxfMixfMCxfMSxfMCxfMCxfMCxfMyxfMCxfMixfMCxfMSxfMCxfMCxfMCxfMixfMCxfMixfMCxfMCxfMCxfMCxfMCxfMSxfMCxfMCxfMCxfMSxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMixfMSxfMyxfMCxfMSxfMSxfMSxfMCxfMyxfMCxfMixfMCxfMSxfMCxfMCxfMCxfMCxfMSxfMSxfMCxfMSxfMSxfMSxfMCxfMSxfMCxfMCxfMCxfMSxfMCxfMCxfMCxfMSxfMCxfMCxfMCxfMSxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMSxfMCxfMCxfMCxfMSxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCwKKyAgICAgIF80LF83LF81LF82LF8zLF8xLF8zLF8wLF81LF82LF80LF82LF8zLF8wLF8yLF8wLF82LF81LF83LF80LF8xLF8xLF8xLF8wLF83LF80LF82LF80LF8xLF8wLF8wLF8wLF83LF80LF82LF80LF8xLF8wLF8wLF8wLF82LF80LF82LF80LF8wLF8wLF8wLF8wLF81LF80LF80LF80LF8xLF8wLF8wLF8wLF80LF80LF80LF80LF8wLF8wLF8wLF8wLF8yLF8xLF8zLF8wLF8xLF8xLF8xLF8wLF8zLF8wLF8yLF8wLF8xLF8wLF8wLF8wLF8wLF8xLF8xLF8wLF8xLF8xLF8xLF8wLF8xLF8wLF8wLF8wLF8xLF8wLF8wLF8wLF8xLF8wLF8wLF8wLF8xLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8xLF8wLF8wLF8wLF8xLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLAorICAgICAgXzMsXzIsXzIsXzIsXzMsXzAsXzIsXzAsXzIsXzIsXzIsXzIsXzIsXzAsXzIsXzAsXzMsXzAsXzIsXzAsXzEsXzAsXzAsXzAsXzIsXzAsXzIsXzAsXzAsXzAsXzAsXzAsXzIsXzAsXzIsXzAsXzAsXzAsXzAsXzAsXzIsXzAsXzIsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzMsXzAsXzIsXzAsXzEsXzAsXzAsXzAsXzIsXzAsXzIsXzAsXzAsXzAsXzAsXzAsXzEsXzAsXzAsXzAsXzEsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsCisgICAgICBfMixfMSxfMyxfMCxfMSxfMSxfMSxfMCxfMyxfMCxfMixfMCxfMSxfMCxfMCxfMCxfMCxfMSxfMSxfMCxfMSxfMSxfMSxfMCxfMSxfMCxfMCxfMCxfMSxfMCxfMCxfMCxfMSxfMCxfMCxfMCxfMSxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMSxfMCxfMCxfMCxfMSxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMSxfMSxfMCxfMSxfMSxfMSxfMCxfMSxfMCxfMCxfMCxfMSxfMCxfMCxfMCxfMCxfMSxfMSxfMCxfMSxfMSxfMSxfMCxfMSxfMCxfMCxfMCxfMSxfMCxfMCxfMCxfMSxfMCxfMCxfMCxfMSxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMSxfMCxfMCxfMCxfMSxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCwKKyAgICAgIF8zLF8wLF8yLF8wLF8xLF8wLF8wLF8wLF8yLF8wLF8yLF8wLF8wLF8wLF8wLF8wLF8xLF8wLF8wLF8wLF8xLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8xLF8wLF8wLF8wLF8xLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8xLF8wLF8wLF8wLF8xLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLAorICAgICAgXzgsXzgsXzgsXzksXzAsXzMsXzEsXzMsXzAsXzEsXzEsXzAsXzEsXzMsXzEsXzIsXzgsX2EsXzgsX2IsXzIsXzEsXzMsXzEsXzAsXzMsXzEsXzIsXzMsXzEsXzMsXzAsXzgsX2IsXzksX2EsXzMsXzEsXzMsXzAsXzEsXzIsXzAsXzIsXzMsXzAsXzIsXzAsX2EsXzksX2IsXzgsXzEsXzEsXzEsXzAsXzMsXzAsXzIsXzAsXzEsXzAsXzAsXzAsXzgsX2EsXzgsX2IsXzIsXzEsXzMsXzEsXzAsXzMsXzEsXzIsXzMsXzEsXzMsXzAsX2EsXzgsX2EsXzksXzAsXzEsXzEsXzEsXzIsXzEsXzMsXzAsXzEsXzEsXzEsXzAsX2EsXzksX2IsXzgsXzEsXzEsXzEsXzAsXzMsXzAsXzIsXzAsXzEsXzAsXzAsXzAsXzgsXzksXzksXzgsXzEsXzEsXzEsXzAsXzEsXzAsXzAsXzAsXzEsXzAsXzAsXzAsCisgICAgICBfMCxfMyxfMSxfMixfMyxfMyxfMyxfMixfMSxfMixfMCxfMixfMyxfMixfMixfMixfMixfMyxfMyxfMixfMyxfMSxfMyxfMCxfMyxfMixfMixfMixfMyxfMCxfMixfMCxfMyxfMixfMixfMixfMyxfMCxfMixfMCxfMixfMixfMixfMixfMixfMCxfMixfMCxfMyxfMCxfMixfMCxfMSxfMCxfMCxfMCxfMixfMCxfMixfMCxfMCxfMCxfMCxfMCxfMixfMyxfMyxfMixfMyxfMSxfMyxfMCxfMyxfMixfMixfMixfMyxfMCxfMixfMCxfMixfMSxfMyxfMCxfMSxfMSxfMSxfMCxfMyxfMCxfMixfMCxfMSxfMCxfMCxfMCxfMyxfMCxfMixfMCxfMSxfMCxfMCxfMCxfMixfMCxfMixfMCxfMCxfMCxfMCxfMCxfMSxfMCxfMCxfMCxfMSxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCwKKyAgICAgIF84LF9hLF84LF9iLF8yLF8xLF8zLF8xLF8wLF8zLF8xLF8yLF8zLF8xLF8zLF8wLF9hLF84LF9hLF85LF8wLF8xLF8xLF8xLF8yLF8xLF8zLF8wLF8xLF8xLF8xLF8wLF9hLF85LF9iLF84LF8xLF8xLF8xLF8wLF8zLF8wLF8yLF8wLF8xLF8wLF8wLF8wLF84LF85LF85LF84LF8xLF8xLF8xLF8wLF8xLF8wLF8wLF8wLF8xLF8wLF8wLF8wLF9hLF84LF9hLF85LF8wLF8xLF8xLF8xLF8yLF8xLF8zLF8wLF8xLF8xLF8xLF8wLF84LF84LF84LF85LF8wLF8xLF8xLF8xLF8wLF8xLF8xLF8wLF8xLF8xLF8xLF8wLF84LF85LF85LF84LF8xLF8xLF8xLF8wLF8xLF8wLF8wLF8wLF8xLF8wLF8wLF8wLF84LF85LF85LF84LF8xLF8xLF8xLF8wLF8xLF8wLF8wLF8wLF8xLF8wLF8wLF8wLAorICAgICAgXzIsXzMsXzMsXzIsXzMsXzEsXzMsXzAsXzMsXzIsXzIsXzIsXzMsXzAsXzIsXzAsXzIsXzEsXzMsXzAsXzEsXzEsXzEsXzAsXzMsXzAsXzIsXzAsXzEsXzAsXzAsXzAsXzMsXzAsXzIsXzAsXzEsXzAsXzAsXzAsXzIsXzAsXzIsXzAsXzAsXzAsXzAsXzAsXzEsXzAsXzAsXzAsXzEsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzIsXzEsXzMsXzAsXzEsXzEsXzEsXzAsXzMsXzAsXzIsXzAsXzEsXzAsXzAsXzAsXzAsXzEsXzEsXzAsXzEsXzEsXzEsXzAsXzEsXzAsXzAsXzAsXzEsXzAsXzAsXzAsXzEsXzAsXzAsXzAsXzEsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzEsXzAsXzAsXzAsXzEsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsCisgICAgICBfMCxfMyxfMSxfMixfMyxfMSxfMyxfMCxfMSxfMixfMCxfMixfMyxfMCxfMixfMCxfMixfMSxfMyxfMCxfMSxfMSxfMSxfMCxfMyxfMCxfMixfMCxfMSxfMCxfMCxfMCxfMyxfMCxfMixfMCxfMSxfMCxfMCxfMCxfMixfMCxfMixfMCxfMCxfMCxfMCxfMCxfMSxfMCxfMCxfMCxfMSxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMixfMSxfMyxfMCxfMSxfMSxfMSxfMCxfMyxfMCxfMixfMCxfMSxfMCxfMCxfMCxfMCxfMSxfMSxfMCxfMSxfMSxfMSxfMCxfMSxfMCxfMCxfMCxfMSxfMCxfMCxfMCxfMSxfMCxfMCxfMCxfMSxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMSxfMCxfMCxfMCxfMSxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCwKKyAgICAgIF8zLF8yLF8yLF8yLF8zLF8wLF8yLF8wLF8yLF8yLF8yLF8yLF8yLF8wLF8yLF8wLF8zLF8wLF8yLF8wLF8xLF8wLF8wLF8wLF8yLF8wLF8yLF8wLF8wLF8wLF8wLF8wLF8yLF8wLF8yLF8wLF8wLF8wLF8wLF8wLF8yLF8wLF8yLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8zLF8wLF8yLF8wLF8xLF8wLF8wLF8wLF8yLF8wLF8yLF8wLF8wLF8wLF8wLF8wLF8xLF8wLF8wLF8wLF8xLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLAorICAgICAgXzIsXzEsXzMsXzAsXzEsXzEsXzEsXzAsXzMsXzAsXzIsXzAsXzEsXzAsXzAsXzAsXzAsXzEsXzEsXzAsXzEsXzEsXzEsXzAsXzEsXzAsXzAsXzAsXzEsXzAsXzAsXzAsXzEsXzAsXzAsXzAsXzEsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzEsXzAsXzAsXzAsXzEsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzEsXzEsXzAsXzEsXzEsXzEsXzAsXzEsXzAsXzAsXzAsXzEsXzAsXzAsXzAsXzAsXzEsXzEsXzAsXzEsXzEsXzEsXzAsXzEsXzAsXzAsXzAsXzEsXzAsXzAsXzAsXzEsXzAsXzAsXzAsXzEsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzEsXzAsXzAsXzAsXzEsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsCisgICAgICBfMyxfMCxfMixfMCxfMSxfMCxfMCxfMCxfMixfMCxfMixfMCxfMCxfMCxfMCxfMCxfMSxfMCxfMCxfMCxfMSxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMSxfMCxfMCxfMCxfMSxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMSxfMCxfMCxfMCxfMSxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCwKKyAgICAgIF84LF84LF84LF85LF8wLF8xLF8xLF8xLF8wLF8xLF8xLF8wLF8xLF8xLF8xLF8wLF84LF84LF84LF85LF8wLF8zLF8xLF8zLF8wLF8xLF8xLF8wLF8xLF8zLF8xLF8yLF84LF85LF85LF84LF8xLF8zLF8xLF8yLF8xLF8wLF8wLF8wLF8xLF8yLF8wLF8yLF84LF9iLF85LF9hLF8zLF8xLF8zLF8wLF8xLF8yLF8wLF8yLF8zLF8wLF8yLF8wLF84LF84LF84LF85LF80LF83LF81LF83LF8wLF8xLF8xLF8wLF81LF83LF81LF82LF84LF9hLF84LF9iLF82LF81LF83LF81LF8wLF8zLF8xLF8yLF83LF81LF83LF80LF84LF9iLF85LF9hLF83LF81LF83LF80LF8xLF8yLF8wLF8yLF83LF80LF82LF80LF9hLF85LF9iLF84LF81LF81LF81LF80LF8zLF8wLF8yLF8wLF81LF80LF80LF80LAorICAgICAgXzAsXzEsXzEsXzAsXzUsXzcsXzUsXzYsXzEsXzAsXzAsXzAsXzUsXzYsXzQsXzYsXzAsXzMsXzEsXzIsXzcsXzcsXzcsXzYsXzEsXzIsXzAsXzIsXzcsXzYsXzYsXzYsXzEsXzIsXzAsXzIsXzcsXzYsXzYsXzYsXzAsXzIsXzAsXzIsXzYsXzYsXzYsXzYsXzMsXzIsXzIsXzIsXzcsXzQsXzYsXzQsXzIsXzIsXzIsXzIsXzYsXzQsXzYsXzQsXzQsXzcsXzUsXzYsXzMsXzMsXzMsXzIsXzUsXzYsXzQsXzYsXzMsXzIsXzIsXzIsXzYsXzcsXzcsXzYsXzMsXzEsXzMsXzAsXzcsXzYsXzYsXzYsXzMsXzAsXzIsXzAsXzcsXzYsXzYsXzYsXzMsXzAsXzIsXzAsXzYsXzYsXzYsXzYsXzIsXzAsXzIsXzAsXzcsXzQsXzYsXzQsXzEsXzAsXzAsXzAsXzYsXzQsXzYsXzQsXzAsXzAsXzAsXzAsCisgICAgICBfOCxfOCxfOCxfOSxfNCxfNyxfNSxfNyxfMCxfMSxfMSxfMCxfNSxfNyxfNSxfNixfOCxfYSxfOCxfYixfNixfNSxfNyxfNSxfMCxfMyxfMSxfMixfNyxfNSxfNyxfNCxfOCxfYixfOSxfYSxfNyxfNSxfNyxfNCxfMSxfMixfMCxfMixfNyxfNCxfNixfNCxfYSxfOSxfYixfOCxfNSxfNSxfNSxfNCxfMyxfMCxfMixfMCxfNSxfNCxfNCxfNCxfYyxfZSxfYyxfZixfMixfMSxfMyxfMSxfNCxfNyxfNSxfNixfMyxfMSxfMyxfMCxfZSxfYyxfZSxfZCxfMCxfMSxfMSxfMSxfNixfNSxfNyxfNCxfMSxfMSxfMSxfMCxfZSxfZCxfZixfYyxfMSxfMSxfMSxfMCxfNyxfNCxfNixfNCxfMSxfMCxfMCxfMCxfYyxfZCxfZCxfYyxfMSxfMSxfMSxfMCxfNSxfNCxfNCxfNCxfMSxfMCxfMCxfMCwKKyAgICAgIF80LF83LF81LF82LF8zLF8zLF8zLF8yLF81LF82LF80LF82LF8zLF8yLF8yLF8yLF82LF83LF83LF82LF8zLF8xLF8zLF8wLF83LF82LF82LF82LF8zLF8wLF8yLF8wLF83LF82LF82LF82LF8zLF8wLF8yLF8wLF82LF82LF82LF82LF8yLF8wLF8yLF8wLF83LF80LF82LF80LF8xLF8wLF8wLF8wLF82LF80LF82LF80LF8wLF8wLF8wLF8wLF8yLF8zLF8zLF8yLF8zLF8xLF8zLF8wLF8zLF8yLF8yLF8yLF8zLF8wLF8yLF8wLF8yLF8xLF8zLF8wLF8xLF8xLF8xLF8wLF8zLF8wLF8yLF8wLF8xLF8wLF8wLF8wLF8zLF8wLF8yLF8wLF8xLF8wLF8wLF8wLF8yLF8wLF8yLF8wLF8wLF8wLF8wLF8wLF8xLF8wLF8wLF8wLF8xLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLAorICAgICAgXzAsXzEsXzEsXzAsXzUsXzcsXzUsXzYsXzEsXzAsXzAsXzAsXzUsXzYsXzQsXzYsXzAsXzMsXzEsXzIsXzcsXzUsXzcsXzQsXzEsXzIsXzAsXzIsXzcsXzQsXzYsXzQsXzEsXzIsXzAsXzIsXzcsXzQsXzYsXzQsXzAsXzIsXzAsXzIsXzYsXzQsXzYsXzQsXzMsXzAsXzIsXzAsXzUsXzQsXzQsXzQsXzIsXzAsXzIsXzAsXzQsXzQsXzQsXzQsXzQsXzcsXzUsXzYsXzcsXzUsXzcsXzQsXzUsXzYsXzQsXzYsXzcsXzQsXzYsXzQsXzYsXzUsXzcsXzQsXzUsXzUsXzUsXzQsXzcsXzQsXzYsXzQsXzUsXzQsXzQsXzQsXzcsXzQsXzYsXzQsXzUsXzQsXzQsXzQsXzYsXzQsXzYsXzQsXzQsXzQsXzQsXzQsXzUsXzQsXzQsXzQsXzUsXzQsXzQsXzQsXzQsXzQsXzQsXzQsXzQsXzQsXzQsXzQsCisgICAgICBfNSxfNixfNCxfNixfNyxfNixfNixfNixfNCxfNixfNCxfNixfNixfNixfNixfNixfNyxfNixfNixfNixfNyxfNCxfNixfNCxfNixfNixfNixfNixfNixfNCxfNixfNCxfNixfNixfNixfNixfNixfNCxfNixfNCxfNixfNixfNixfNixfNixfNCxfNixfNCxfNixfNCxfNixfNCxfNCxfNCxfNCxfNCxfNixfNCxfNixfNCxfNCxfNCxfNCxfNCxfNyxfNixfNixfNixfMyxfMCxfMixfMCxfNixfNixfNixfNixfMixfMCxfMixfMCxfNyxfNCxfNixfNCxfMSxfMCxfMCxfMCxfNixfNCxfNixfNCxfMCxfMCxfMCxfMCxfNixfNCxfNixfNCxfMCxfMCxfMCxfMCxfNixfNCxfNixfNCxfMCxfMCxfMCxfMCxfNCxfNCxfNCxfNCxfMCxfMCxfMCxfMCxfNCxfNCxfNCxfNCxfMCxfMCxfMCxfMCwKKyAgICAgIF80LF83LF81LF82LF83LF81LF83LF80LF81LF82LF80LF82LF83LF80LF82LF80LF82LF81LF83LF80LF81LF81LF81LF80LF83LF80LF82LF80LF81LF80LF80LF80LF83LF80LF82LF80LF81LF80LF80LF80LF82LF80LF82LF80LF80LF80LF80LF80LF81LF80LF80LF80LF81LF80LF80LF80LF80LF80LF80LF80LF80LF80LF80LF80LF82LF81LF83LF80LF8xLF8xLF8xLF8wLF83LF80LF82LF80LF8xLF8wLF8wLF8wLF80LF81LF81LF80LF8xLF8xLF8xLF8wLF81LF80LF80LF80LF8xLF8wLF8wLF8wLF81LF80LF80LF80LF8xLF8wLF8wLF8wLF80LF80LF80LF80LF8wLF8wLF8wLF8wLF81LF80LF80LF80LF8xLF8wLF8wLF8wLF80LF80LF80LF80LF8wLF8wLF8wLF8wLAorICAgICAgXzcsXzYsXzYsXzYsXzMsXzAsXzIsXzAsXzYsXzYsXzYsXzYsXzIsXzAsXzIsXzAsXzcsXzQsXzYsXzQsXzEsXzAsXzAsXzAsXzYsXzQsXzYsXzQsXzAsXzAsXzAsXzAsXzYsXzQsXzYsXzQsXzAsXzAsXzAsXzAsXzYsXzQsXzYsXzQsXzAsXzAsXzAsXzAsXzQsXzQsXzQsXzQsXzAsXzAsXzAsXzAsXzQsXzQsXzQsXzQsXzAsXzAsXzAsXzAsXzMsXzAsXzIsXzAsXzEsXzAsXzAsXzAsXzIsXzAsXzIsXzAsXzAsXzAsXzAsXzAsXzEsXzAsXzAsXzAsXzEsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsCisgICAgICBfOCxfOCxfOCxfOSxfNCxfNSxfNSxfNSxfMCxfMSxfMSxfMCxfNSxfNSxfNSxfNCxfOCxfOCxfOCxfOSxfNCxfNyxfNSxfNyxfMCxfMSxfMSxfMCxfNSxfNyxfNSxfNixfOCxfOSxfOSxfOCxfNSxfNyxfNSxfNixfMSxfMCxfMCxfMCxfNSxfNixfNCxfNixfOCxfYixfOSxfYSxfNyxfNSxfNyxfNCxfMSxfMixfMCxfMixfNyxfNCxfNixfNCxfYyxfYyxfYyxfZCxfMCxfMyxfMSxfMyxfNCxfNSxfNSxfNCxfMSxfMyxfMSxfMixfYyxfZSxfYyxfZixfMixfMSxfMyxfMSxfNCxfNyxfNSxfNixfMyxfMSxfMyxfMCxfYyxfZixfZCxfZSxfMyxfMSxfMyxfMCxfNSxfNixfNCxfNixfMyxfMCxfMixfMCxfZSxfZCxfZixfYyxfMSxfMSxfMSxfMCxfNyxfNCxfNixfNCxfMSxfMCxfMCxfMCwKKyAgICAgIF80LF81LF81LF80LF8xLF8zLF8xLF8yLF81LF80LF80LF80LF8xLF8yLF8wLF8yLF80LF83LF81LF82LF8zLF8zLF8zLF8yLF81LF82LF80LF82LF8zLF8yLF8yLF8yLF81LF82LF80LF82LF8zLF8yLF8yLF8yLF80LF82LF80LF82LF8yLF8yLF8yLF8yLF83LF82LF82LF82LF8zLF8wLF8yLF8wLF82LF82LF82LF82LF8yLF8wLF8yLF8wLF8wLF8zLF8xLF8yLF8zLF8zLF8zLF8yLF8xLF8yLF8wLF8yLF8zLF8yLF8yLF8yLF8yLF8zLF8zLF8yLF8zLF8xLF8zLF8wLF8zLF8yLF8yLF8yLF8zLF8wLF8yLF8wLF8zLF8yLF8yLF8yLF8zLF8wLF8yLF8wLF8yLF8yLF8yLF8yLF8yLF8wLF8yLF8wLF8zLF8wLF8yLF8wLF8xLF8wLF8wLF8wLF8yLF8wLF8yLF8wLF8wLF8wLF8wLF8wLAorICAgICAgX2MsX2MsX2MsX2QsXzAsXzMsXzEsXzMsXzQsXzUsXzUsXzQsXzEsXzMsXzEsXzIsX2MsX2UsX2MsX2YsXzIsXzEsXzMsXzEsXzQsXzcsXzUsXzYsXzMsXzEsXzMsXzAsX2MsX2YsX2QsX2UsXzMsXzEsXzMsXzAsXzUsXzYsXzQsXzYsXzMsXzAsXzIsXzAsX2UsX2QsX2YsX2MsXzEsXzEsXzEsXzAsXzcsXzQsXzYsXzQsXzEsXzAsXzAsXzAsXzgsX2EsXzgsX2IsXzIsXzEsXzMsXzEsXzAsXzMsXzEsXzIsXzMsXzEsXzMsXzAsX2EsXzgsX2EsXzksXzAsXzEsXzEsXzEsXzIsXzEsXzMsXzAsXzEsXzEsXzEsXzAsX2EsXzksX2IsXzgsXzEsXzEsXzEsXzAsXzMsXzAsXzIsXzAsXzEsXzAsXzAsXzAsXzgsXzksXzksXzgsXzEsXzEsXzEsXzAsXzEsXzAsXzAsXzAsXzEsXzAsXzAsXzAsCisgICAgICBfMCxfMyxfMSxfMixfMyxfMyxfMyxfMixfMSxfMixfMCxfMixfMyxfMixfMixfMixfMixfMyxfMyxfMixfMyxfMSxfMyxfMCxfMyxfMixfMixfMixfMyxfMCxfMixfMCxfMyxfMixfMixfMixfMyxfMCxfMixfMCxfMixfMixfMixfMixfMixfMCxfMixfMCxfMyxfMCxfMixfMCxfMSxfMCxfMCxfMCxfMixfMCxfMixfMCxfMCxfMCxfMCxfMCxfMixfMyxfMyxfMixfMyxfMSxfMyxfMCxfMyxfMixfMixfMixfMyxfMCxfMixfMCxfMixfMSxfMyxfMCxfMSxfMSxfMSxfMCxfMyxfMCxfMixfMCxfMSxfMCxfMCxfMCxfMyxfMCxfMixfMCxfMSxfMCxfMCxfMCxfMixfMCxfMixfMCxfMCxfMCxfMCxfMCxfMSxfMCxfMCxfMCxfMSxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCwKKyAgICAgIF80LF81LF81LF80LF81LF83LF81LF82LF81LF80LF80LF80LF81LF82LF80LF82LF80LF83LF81LF82LF83LF81LF83LF80LF81LF82LF80LF82LF83LF80LF82LF80LF81LF82LF80LF82LF83LF80LF82LF80LF80LF82LF80LF82LF82LF80LF82LF80LF83LF80LF82LF80LF81LF80LF80LF80LF82LF80LF82LF80LF80LF80LF80LF80LF80LF83LF81LF82LF8zLF8xLF8zLF8wLF81LF82LF80LF82LF8zLF8wLF8yLF8wLF82LF81LF83LF80LF8xLF8xLF8xLF8wLF83LF80LF82LF80LF8xLF8wLF8wLF8wLF83LF80LF82LF80LF8xLF8wLF8wLF8wLF82LF80LF82LF80LF8wLF8wLF8wLF8wLF81LF80LF80LF80LF8xLF8wLF8wLF8wLF80LF80LF80LF80LF8wLF8wLF8wLF8wLAorICAgICAgXzUsXzYsXzQsXzYsXzMsXzIsXzIsXzIsXzQsXzYsXzQsXzYsXzIsXzIsXzIsXzIsXzcsXzYsXzYsXzYsXzMsXzAsXzIsXzAsXzYsXzYsXzYsXzYsXzIsXzAsXzIsXzAsXzYsXzYsXzYsXzYsXzIsXzAsXzIsXzAsXzYsXzYsXzYsXzYsXzIsXzAsXzIsXzAsXzYsXzQsXzYsXzQsXzAsXzAsXzAsXzAsXzYsXzQsXzYsXzQsXzAsXzAsXzAsXzAsXzMsXzIsXzIsXzIsXzMsXzAsXzIsXzAsXzIsXzIsXzIsXzIsXzIsXzAsXzIsXzAsXzMsXzAsXzIsXzAsXzEsXzAsXzAsXzAsXzIsXzAsXzIsXzAsXzAsXzAsXzAsXzAsXzIsXzAsXzIsXzAsXzAsXzAsXzAsXzAsXzIsXzAsXzIsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsCisgICAgICBfNCxfNyxfNSxfNixfMyxfMSxfMyxfMCxfNSxfNixfNCxfNixfMyxfMCxfMixfMCxfNixfNSxfNyxfNCxfMSxfMSxfMSxfMCxfNyxfNCxfNixfNCxfMSxfMCxfMCxfMCxfNyxfNCxfNixfNCxfMSxfMCxfMCxfMCxfNixfNCxfNixfNCxfMCxfMCxfMCxfMCxfNSxfNCxfNCxfNCxfMSxfMCxfMCxfMCxfNCxfNCxfNCxfNCxfMCxfMCxfMCxfMCxfMixfMSxfMyxfMCxfMSxfMSxfMSxfMCxfMyxfMCxfMixfMCxfMSxfMCxfMCxfMCxfMCxfMSxfMSxfMCxfMSxfMSxfMSxfMCxfMSxfMCxfMCxfMCxfMSxfMCxfMCxfMCxfMSxfMCxfMCxfMCxfMSxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMSxfMCxfMCxfMCxfMSxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCwKKyAgICAgIF8zLF8yLF8yLF8yLF8zLF8wLF8yLF8wLF8yLF8yLF8yLF8yLF8yLF8wLF8yLF8wLF8zLF8wLF8yLF8wLF8xLF8wLF8wLF8wLF8yLF8wLF8yLF8wLF8wLF8wLF8wLF8wLF8yLF8wLF8yLF8wLF8wLF8wLF8wLF8wLF8yLF8wLF8yLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8zLF8wLF8yLF8wLF8xLF8wLF8wLF8wLF8yLF8wLF8yLF8wLF8wLF8wLF8wLF8wLF8xLF8wLF8wLF8wLF8xLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLAorICAgICAgXzAsXzAsXzAsXzEsXzQsXzUsXzUsXzUsXzAsXzEsXzEsXzAsXzUsXzUsXzUsXzQsXzAsXzAsXzAsXzEsXzQsXzcsXzUsXzcsXzAsXzEsXzEsXzAsXzUsXzcsXzUsXzYsXzAsXzEsXzEsXzAsXzUsXzcsXzUsXzYsXzEsXzAsXzAsXzAsXzUsXzYsXzQsXzYsXzAsXzMsXzEsXzIsXzcsXzUsXzcsXzQsXzEsXzIsXzAsXzIsXzcsXzQsXzYsXzQsXzQsXzQsXzQsXzUsXzAsXzMsXzEsXzMsXzQsXzUsXzUsXzQsXzEsXzMsXzEsXzIsXzQsXzYsXzQsXzcsXzIsXzEsXzMsXzEsXzQsXzcsXzUsXzYsXzMsXzEsXzMsXzAsXzQsXzcsXzUsXzYsXzMsXzEsXzMsXzAsXzUsXzYsXzQsXzYsXzMsXzAsXzIsXzAsXzYsXzUsXzcsXzQsXzEsXzEsXzEsXzAsXzcsXzQsXzYsXzQsXzEsXzAsXzAsXzAsCisgICAgICBfNCxfNSxfNSxfNCxfMSxfMyxfMSxfMixfNSxfNCxfNCxfNCxfMSxfMixfMCxfMixfNCxfNyxfNSxfNixfMyxfMyxfMyxfMixfNSxfNixfNCxfNixfMyxfMixfMixfMixfNSxfNixfNCxfNixfMyxfMixfMixfMixfNCxfNixfNCxfNixfMixfMixfMixfMixfNyxfNixfNixfNixfMyxfMCxfMixfMCxfNixfNixfNixfNixfMixfMCxfMixfMCxfMCxfMyxfMSxfMixfMyxfMyxfMyxfMixfMSxfMixfMCxfMixfMyxfMixfMixfMixfMixfMyxfMyxfMixfMyxfMSxfMyxfMCxfMyxfMixfMixfMixfMyxfMCxfMixfMCxfMyxfMixfMixfMixfMyxfMCxfMixfMCxfMixfMixfMixfMixfMixfMCxfMixfMCxfMyxfMCxfMixfMCxfMSxfMCxfMCxfMCxfMixfMCxfMixfMCxfMCxfMCxfMCxfMCwKKyAgICAgIF80LF80LF80LF81LF8wLF8zLF8xLF8zLF80LF81LF81LF80LF8xLF8zLF8xLF8yLF80LF82LF80LF83LF8yLF8xLF8zLF8xLF80LF83LF81LF82LF8zLF8xLF8zLF8wLF80LF83LF81LF82LF8zLF8xLF8zLF8wLF81LF82LF80LF82LF8zLF8wLF8yLF8wLF82LF81LF83LF80LF8xLF8xLF8xLF8wLF83LF80LF82LF80LF8xLF8wLF8wLF8wLF8wLF8yLF8wLF8zLF8yLF8xLF8zLF8xLF8wLF8zLF8xLF8yLF8zLF8xLF8zLF8wLF8yLF8wLF8yLF8xLF8wLF8xLF8xLF8xLF8yLF8xLF8zLF8wLF8xLF8xLF8xLF8wLF8yLF8xLF8zLF8wLF8xLF8xLF8xLF8wLF8zLF8wLF8yLF8wLF8xLF8wLF8wLF8wLF8wLF8xLF8xLF8wLF8xLF8xLF8xLF8wLF8xLF8wLF8wLF8wLF8xLF8wLF8wLF8wLAorICAgICAgXzAsXzMsXzEsXzIsXzMsXzMsXzMsXzIsXzEsXzIsXzAsXzIsXzMsXzIsXzIsXzIsXzIsXzMsXzMsXzIsXzMsXzEsXzMsXzAsXzMsXzIsXzIsXzIsXzMsXzAsXzIsXzAsXzMsXzIsXzIsXzIsXzMsXzAsXzIsXzAsXzIsXzIsXzIsXzIsXzIsXzAsXzIsXzAsXzMsXzAsXzIsXzAsXzEsXzAsXzAsXzAsXzIsXzAsXzIsXzAsXzAsXzAsXzAsXzAsXzIsXzMsXzMsXzIsXzMsXzEsXzMsXzAsXzMsXzIsXzIsXzIsXzMsXzAsXzIsXzAsXzIsXzEsXzMsXzAsXzEsXzEsXzEsXzAsXzMsXzAsXzIsXzAsXzEsXzAsXzAsXzAsXzMsXzAsXzIsXzAsXzEsXzAsXzAsXzAsXzIsXzAsXzIsXzAsXzAsXzAsXzAsXzAsXzEsXzAsXzAsXzAsXzEsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsCisgICAgICBfNCxfNSxfNSxfNCxfNSxfNyxfNSxfNixfNSxfNCxfNCxfNCxfNSxfNixfNCxfNixfNCxfNyxfNSxfNixfNyxfNSxfNyxfNCxfNSxfNixfNCxfNixfNyxfNCxfNixfNCxfNSxfNixfNCxfNixfNyxfNCxfNixfNCxfNCxfNixfNCxfNixfNixfNCxfNixfNCxfNyxfNCxfNixfNCxfNSxfNCxfNCxfNCxfNixfNCxfNixfNCxfNCxfNCxfNCxfNCxfNCxfNyxfNSxfNixfMyxfMSxfMyxfMCxfNSxfNixfNCxfNixfMyxfMCxfMixfMCxfNixfNSxfNyxfNCxfMSxfMSxfMSxfMCxfNyxfNCxfNixfNCxfMSxfMCxfMCxfMCxfNyxfNCxfNixfNCxfMSxfMCxfMCxfMCxfNixfNCxfNixfNCxfMCxfMCxfMCxfMCxfNSxfNCxfNCxfNCxfMSxfMCxfMCxfMCxfNCxfNCxfNCxfNCxfMCxfMCxfMCxfMCwKKyAgICAgIF81LF82LF80LF82LF8zLF8yLF8yLF8yLF80LF82LF80LF82LF8yLF8yLF8yLF8yLF83LF82LF82LF82LF8zLF8wLF8yLF8wLF82LF82LF82LF82LF8yLF8wLF8yLF8wLF82LF82LF82LF82LF8yLF8wLF8yLF8wLF82LF82LF82LF82LF8yLF8wLF8yLF8wLF82LF80LF82LF80LF8wLF8wLF8wLF8wLF82LF80LF82LF80LF8wLF8wLF8wLF8wLF8zLF8yLF8yLF8yLF8zLF8wLF8yLF8wLF8yLF8yLF8yLF8yLF8yLF8wLF8yLF8wLF8zLF8wLF8yLF8wLF8xLF8wLF8wLF8wLF8yLF8wLF8yLF8wLF8wLF8wLF8wLF8wLF8yLF8wLF8yLF8wLF8wLF8wLF8wLF8wLF8yLF8wLF8yLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLAorICAgICAgXzQsXzcsXzUsXzYsXzMsXzEsXzMsXzAsXzUsXzYsXzQsXzYsXzMsXzAsXzIsXzAsXzYsXzUsXzcsXzQsXzEsXzEsXzEsXzAsXzcsXzQsXzYsXzQsXzEsXzAsXzAsXzAsXzcsXzQsXzYsXzQsXzEsXzAsXzAsXzAsXzYsXzQsXzYsXzQsXzAsXzAsXzAsXzAsXzUsXzQsXzQsXzQsXzEsXzAsXzAsXzAsXzQsXzQsXzQsXzQsXzAsXzAsXzAsXzAsXzIsXzEsXzMsXzAsXzEsXzEsXzEsXzAsXzMsXzAsXzIsXzAsXzEsXzAsXzAsXzAsXzAsXzEsXzEsXzAsXzEsXzEsXzEsXzAsXzEsXzAsXzAsXzAsXzEsXzAsXzAsXzAsXzEsXzAsXzAsXzAsXzEsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzEsXzAsXzAsXzAsXzEsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsCisgICAgICBfMyxfMixfMixfMixfMyxfMCxfMixfMCxfMixfMixfMixfMixfMixfMCxfMixfMCxfMyxfMCxfMixfMCxfMSxfMCxfMCxfMCxfMixfMCxfMixfMCxfMCxfMCxfMCxfMCxfMixfMCxfMixfMCxfMCxfMCxfMCxfMCxfMixfMCxfMixfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMyxfMCxfMixfMCxfMSxfMCxfMCxfMCxfMixfMCxfMixfMCxfMCxfMCxfMCxfMCxfMSxfMCxfMCxfMCxfMSxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCwKKyAgICAgIF80LF80LF80LF81LF8wLF8xLF8xLF8xLF80LF81LF81LF80LF8xLF8xLF8xLF8wLF80LF80LF80LF81LF8wLF8zLF8xLF8zLF80LF81LF81LF80LF8xLF8zLF8xLF8yLF80LF81LF81LF80LF8xLF8zLF8xLF8yLF81LF80LF80LF80LF8xLF8yLF8wLF8yLF80LF83LF81LF82LF8zLF8xLF8zLF8wLF81LF82LF80LF82LF8zLF8wLF8yLF8wLF8wLF8wLF8wLF8xLF8wLF8zLF8xLF8zLF8wLF8xLF8xLF8wLF8xLF8zLF8xLF8yLF8wLF8yLF8wLF8zLF8yLF8xLF8zLF8xLF8wLF8zLF8xLF8yLF8zLF8xLF8zLF8wLF8wLF8zLF8xLF8yLF8zLF8xLF8zLF8wLF8xLF8yLF8wLF8yLF8zLF8wLF8yLF8wLF8yLF8xLF8zLF8wLF8xLF8xLF8xLF8wLF8zLF8wLF8yLF8wLF8xLF8wLF8wLF8wLAorICAgICAgXzAsXzEsXzEsXzAsXzEsXzMsXzEsXzIsXzEsXzAsXzAsXzAsXzEsXzIsXzAsXzIsXzAsXzMsXzEsXzIsXzMsXzMsXzMsXzIsXzEsXzIsXzAsXzIsXzMsXzIsXzIsXzIsXzEsXzIsXzAsXzIsXzMsXzIsXzIsXzIsXzAsXzIsXzAsXzIsXzIsXzIsXzIsXzIsXzMsXzIsXzIsXzIsXzMsXzAsXzIsXzAsXzIsXzIsXzIsXzIsXzIsXzAsXzIsXzAsXzAsXzMsXzEsXzIsXzMsXzMsXzMsXzIsXzEsXzIsXzAsXzIsXzMsXzIsXzIsXzIsXzIsXzMsXzMsXzIsXzMsXzEsXzMsXzAsXzMsXzIsXzIsXzIsXzMsXzAsXzIsXzAsXzMsXzIsXzIsXzIsXzMsXzAsXzIsXzAsXzIsXzIsXzIsXzIsXzIsXzAsXzIsXzAsXzMsXzAsXzIsXzAsXzEsXzAsXzAsXzAsXzIsXzAsXzIsXzAsXzAsXzAsXzAsXzAsCisgICAgICBfMCxfMCxfMCxfMSxfMCxfMyxfMSxfMyxfMCxfMSxfMSxfMCxfMSxfMyxfMSxfMixfMCxfMixfMCxfMyxfMixfMSxfMyxfMSxfMCxfMyxfMSxfMixfMyxfMSxfMyxfMCxfMCxfMyxfMSxfMixfMyxfMSxfMyxfMCxfMSxfMixfMCxfMixfMyxfMCxfMixfMCxfMixfMSxfMyxfMCxfMSxfMSxfMSxfMCxfMyxfMCxfMixfMCxfMSxfMCxfMCxfMCxfMCxfMixfMCxfMyxfMixfMSxfMyxfMSxfMCxfMyxfMSxfMixfMyxfMSxfMyxfMCxfMixfMCxfMixfMSxfMCxfMSxfMSxfMSxfMixfMSxfMyxfMCxfMSxfMSxfMSxfMCxfMixfMSxfMyxfMCxfMSxfMSxfMSxfMCxfMyxfMCxfMixfMCxfMSxfMCxfMCxfMCxfMCxfMSxfMSxfMCxfMSxfMSxfMSxfMCxfMSxfMCxfMCxfMCxfMSxfMCxfMCxfMCwKKyAgICAgIF8wLF8zLF8xLF8yLF8zLF8zLF8zLF8yLF8xLF8yLF8wLF8yLF8zLF8yLF8yLF8yLF8yLF8zLF8zLF8yLF8zLF8xLF8zLF8wLF8zLF8yLF8yLF8yLF8zLF8wLF8yLF8wLF8zLF8yLF8yLF8yLF8zLF8wLF8yLF8wLF8yLF8yLF8yLF8yLF8yLF8wLF8yLF8wLF8zLF8wLF8yLF8wLF8xLF8wLF8wLF8wLF8yLF8wLF8yLF8wLF8wLF8wLF8wLF8wLF8yLF8zLF8zLF8yLF8zLF8xLF8zLF8wLF8zLF8yLF8yLF8yLF8zLF8wLF8yLF8wLF8yLF8xLF8zLF8wLF8xLF8xLF8xLF8wLF8zLF8wLF8yLF8wLF8xLF8wLF8wLF8wLF8zLF8wLF8yLF8wLF8xLF8wLF8wLF8wLF8yLF8wLF8yLF8wLF8wLF8wLF8wLF8wLF8xLF8wLF8wLF8wLF8xLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLAorICAgICAgXzQsXzUsXzUsXzQsXzEsXzMsXzEsXzIsXzUsXzQsXzQsXzQsXzEsXzIsXzAsXzIsXzQsXzcsXzUsXzYsXzMsXzEsXzMsXzAsXzUsXzYsXzQsXzYsXzMsXzAsXzIsXzAsXzUsXzYsXzQsXzYsXzMsXzAsXzIsXzAsXzQsXzYsXzQsXzYsXzIsXzAsXzIsXzAsXzcsXzQsXzYsXzQsXzEsXzAsXzAsXzAsXzYsXzQsXzYsXzQsXzAsXzAsXzAsXzAsXzAsXzMsXzEsXzIsXzMsXzEsXzMsXzAsXzEsXzIsXzAsXzIsXzMsXzAsXzIsXzAsXzIsXzEsXzMsXzAsXzEsXzEsXzEsXzAsXzMsXzAsXzIsXzAsXzEsXzAsXzAsXzAsXzMsXzAsXzIsXzAsXzEsXzAsXzAsXzAsXzIsXzAsXzIsXzAsXzAsXzAsXzAsXzAsXzEsXzAsXzAsXzAsXzEsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsCisgICAgICBfMSxfMixfMCxfMixfMyxfMixfMixfMixfMCxfMixfMCxfMixfMixfMixfMixfMixfMyxfMixfMixfMixfMyxfMCxfMixfMCxfMixfMixfMixfMixfMixfMCxfMixfMCxfMixfMixfMixfMixfMixfMCxfMixfMCxfMixfMixfMixfMixfMixfMCxfMixfMCxfMixfMCxfMixfMCxfMCxfMCxfMCxfMCxfMixfMCxfMixfMCxfMCxfMCxfMCxfMCxfMyxfMixfMixfMixfMyxfMCxfMixfMCxfMixfMixfMixfMixfMixfMCxfMixfMCxfMyxfMCxfMixfMCxfMSxfMCxfMCxfMCxfMixfMCxfMixfMCxfMCxfMCxfMCxfMCxfMixfMCxfMixfMCxfMCxfMCxfMCxfMCxfMixfMCxfMixfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCwKKyAgICAgIF8wLF8zLF8xLF8yLF8zLF8xLF8zLF8wLF8xLF8yLF8wLF8yLF8zLF8wLF8yLF8wLF8yLF8xLF8zLF8wLF8xLF8xLF8xLF8wLF8zLF8wLF8yLF8wLF8xLF8wLF8wLF8wLF8zLF8wLF8yLF8wLF8xLF8wLF8wLF8wLF8yLF8wLF8yLF8wLF8wLF8wLF8wLF8wLF8xLF8wLF8wLF8wLF8xLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8yLF8xLF8zLF8wLF8xLF8xLF8xLF8wLF8zLF8wLF8yLF8wLF8xLF8wLF8wLF8wLF8wLF8xLF8xLF8wLF8xLF8xLF8xLF8wLF8xLF8wLF8wLF8wLF8xLF8wLF8wLF8wLF8xLF8wLF8wLF8wLF8xLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8xLF8wLF8wLF8wLF8xLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLAorICAgICAgXzMsXzIsXzIsXzIsXzMsXzAsXzIsXzAsXzIsXzIsXzIsXzIsXzIsXzAsXzIsXzAsXzMsXzAsXzIsXzAsXzEsXzAsXzAsXzAsXzIsXzAsXzIsXzAsXzAsXzAsXzAsXzAsXzIsXzAsXzIsXzAsXzAsXzAsXzAsXzAsXzIsXzAsXzIsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzMsXzAsXzIsXzAsXzEsXzAsXzAsXzAsXzIsXzAsXzIsXzAsXzAsXzAsXzAsXzAsXzEsXzAsXzAsXzAsXzEsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsCisgICAgICBfOCxfOSxfOSxfOCxfNSxfNyxfNSxfNixfMSxfMCxfMCxfMCxfNSxfNixfNCxfNixfOCxfYixfOSxfYSxfNyxfNSxfNyxfNCxfMSxfMixfMCxfMixfNyxfNCxfNixfNCxfOSxfYSxfOCxfYSxfNyxfNCxfNixfNCxfMCxfMixfMCxfMixfNixfNCxfNixfNCxfYixfOCxfYSxfOCxfNSxfNCxfNCxfNCxfMixfMCxfMixfMCxfNCxfNCxfNCxfNCxfYyxfZixfZCxfZSxfMyxfMSxfMyxfMCxfNSxfNixfNCxfNixfMyxfMCxfMixfMCxfZSxfZCxfZixfYyxfMSxfMSxfMSxfMCxfNyxfNCxfNixfNCxfMSxfMCxfMCxfMCxfZixfYyxfZSxfYyxfMSxfMCxfMCxfMCxfNixfNCxfNixfNCxfMCxfMCxfMCxfMCxfZCxfYyxfYyxfYyxfMSxfMCxfMCxfMCxfNCxfNCxfNCxfNCxfMCxfMCxfMCxfMCwKKyAgICAgIF81LF82LF80LF82LF8zLF8yLF8yLF8yLF80LF82LF80LF82LF8yLF8yLF8yLF8yLF83LF82LF82LF82LF8zLF8wLF8yLF8wLF82LF82LF82LF82LF8yLF8wLF8yLF8wLF82LF82LF82LF82LF8yLF8wLF8yLF8wLF82LF82LF82LF82LF8yLF8wLF8yLF8wLF82LF80LF82LF80LF8wLF8wLF8wLF8wLF82LF80LF82LF80LF8wLF8wLF8wLF8wLF8zLF8yLF8yLF8yLF8zLF8wLF8yLF8wLF8yLF8yLF8yLF8yLF8yLF8wLF8yLF8wLF8zLF8wLF8yLF8wLF8xLF8wLF8wLF8wLF8yLF8wLF8yLF8wLF8wLF8wLF8wLF8wLF8yLF8wLF8yLF8wLF8wLF8wLF8wLF8wLF8yLF8wLF8yLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLAorICAgICAgX2MsX2YsX2QsX2UsXzMsXzEsXzMsXzAsXzUsXzYsXzQsXzYsXzMsXzAsXzIsXzAsX2UsX2QsX2YsX2MsXzEsXzEsXzEsXzAsXzcsXzQsXzYsXzQsXzEsXzAsXzAsXzAsX2YsX2MsX2UsX2MsXzEsXzAsXzAsXzAsXzYsXzQsXzYsXzQsXzAsXzAsXzAsXzAsX2QsX2MsX2MsX2MsXzEsXzAsXzAsXzAsXzQsXzQsXzQsXzQsXzAsXzAsXzAsXzAsX2EsXzksX2IsXzgsXzEsXzEsXzEsXzAsXzMsXzAsXzIsXzAsXzEsXzAsXzAsXzAsXzgsXzksXzksXzgsXzEsXzEsXzEsXzAsXzEsXzAsXzAsXzAsXzEsXzAsXzAsXzAsXzksXzgsXzgsXzgsXzEsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzksXzgsXzgsXzgsXzEsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsCisgICAgICBfMyxfMixfMixfMixfMyxfMCxfMixfMCxfMixfMixfMixfMixfMixfMCxfMixfMCxfMyxfMCxfMixfMCxfMSxfMCxfMCxfMCxfMixfMCxfMixfMCxfMCxfMCxfMCxfMCxfMixfMCxfMixfMCxfMCxfMCxfMCxfMCxfMixfMCxfMixfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMyxfMCxfMixfMCxfMSxfMCxfMCxfMCxfMixfMCxfMixfMCxfMCxfMCxfMCxfMCxfMSxfMCxfMCxfMCxfMSxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCwKKyAgICAgIF81LF82LF80LF82LF83LF80LF82LF80LF80LF82LF80LF82LF82LF80LF82LF80LF83LF80LF82LF80LF81LF80LF80LF80LF82LF80LF82LF80LF80LF80LF80LF80LF82LF80LF82LF80LF80LF80LF80LF80LF82LF80LF82LF80LF80LF80LF80LF80LF80LF80LF80LF80LF80LF80LF80LF80LF80LF80LF80LF80LF80LF80LF80LF80LF83LF80LF82LF80LF8xLF8wLF8wLF8wLF82LF80LF82LF80LF8wLF8wLF8wLF8wLF81LF80LF80LF80LF8xLF8wLF8wLF8wLF80LF80LF80LF80LF8wLF8wLF8wLF8wLF80LF80LF80LF80LF8wLF8wLF8wLF8wLF80LF80LF80LF80LF8wLF8wLF8wLF8wLF80LF80LF80LF80LF8wLF8wLF8wLF8wLF80LF80LF80LF80LF8wLF8wLF8wLF8wLAorICAgICAgXzYsXzYsXzYsXzYsXzIsXzAsXzIsXzAsXzYsXzYsXzYsXzYsXzIsXzAsXzIsXzAsXzYsXzQsXzYsXzQsXzAsXzAsXzAsXzAsXzYsXzQsXzYsXzQsXzAsXzAsXzAsXzAsXzYsXzQsXzYsXzQsXzAsXzAsXzAsXzAsXzYsXzQsXzYsXzQsXzAsXzAsXzAsXzAsXzQsXzQsXzQsXzQsXzAsXzAsXzAsXzAsXzQsXzQsXzQsXzQsXzAsXzAsXzAsXzAsXzIsXzAsXzIsXzAsXzAsXzAsXzAsXzAsXzIsXzAsXzIsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsCisgICAgICBfNyxfNCxfNixfNCxfMSxfMCxfMCxfMCxfNixfNCxfNixfNCxfMCxfMCxfMCxfMCxfNSxfNCxfNCxfNCxfMSxfMCxfMCxfMCxfNCxfNCxfNCxfNCxfMCxfMCxfMCxfMCxfNCxfNCxfNCxfNCxfMCxfMCxfMCxfMCxfNCxfNCxfNCxfNCxfMCxfMCxfMCxfMCxfNCxfNCxfNCxfNCxfMCxfMCxfMCxfMCxfNCxfNCxfNCxfNCxfMCxfMCxfMCxfMCxfMSxfMCxfMCxfMCxfMSxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMSxfMCxfMCxfMCxfMSxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCwKKyAgICAgIF8yLF8wLF8yLF8wLF8wLF8wLF8wLF8wLF8yLF8wLF8yLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLAorICAgICAgX2MsX2QsX2QsX2MsXzEsXzMsXzEsXzIsXzUsXzQsXzQsXzQsXzEsXzIsXzAsXzIsX2MsX2YsX2QsX2UsXzMsXzEsXzMsXzAsXzUsXzYsXzQsXzYsXzMsXzAsXzIsXzAsX2QsX2UsX2MsX2UsXzMsXzAsXzIsXzAsXzQsXzYsXzQsXzYsXzIsXzAsXzIsXzAsX2YsX2MsX2UsX2MsXzEsXzAsXzAsXzAsXzYsXzQsXzYsXzQsXzAsXzAsXzAsXzAsXzgsX2IsXzksX2EsXzMsXzEsXzMsXzAsXzEsXzIsXzAsXzIsXzMsXzAsXzIsXzAsX2EsXzksX2IsXzgsXzEsXzEsXzEsXzAsXzMsXzAsXzIsXzAsXzEsXzAsXzAsXzAsX2IsXzgsX2EsXzgsXzEsXzAsXzAsXzAsXzIsXzAsXzIsXzAsXzAsXzAsXzAsXzAsXzksXzgsXzgsXzgsXzEsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsCisgICAgICBfMSxfMixfMCxfMixfMyxfMixfMixfMixfMCxfMixfMCxfMixfMixfMixfMixfMixfMyxfMixfMixfMixfMyxfMCxfMixfMCxfMixfMixfMixfMixfMixfMCxfMixfMCxfMixfMixfMixfMixfMixfMCxfMixfMCxfMixfMixfMixfMixfMixfMCxfMixfMCxfMixfMCxfMixfMCxfMCxfMCxfMCxfMCxfMixfMCxfMixfMCxfMCxfMCxfMCxfMCxfMyxfMixfMixfMixfMyxfMCxfMixfMCxfMixfMixfMixfMixfMixfMCxfMixfMCxfMyxfMCxfMixfMCxfMSxfMCxfMCxfMCxfMixfMCxfMixfMCxfMCxfMCxfMCxfMCxfMixfMCxfMixfMCxfMCxfMCxfMCxfMCxfMixfMCxfMixfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCwKKyAgICAgIF84LF9iLF85LF9hLF8zLF8xLF8zLF8wLF8xLF8yLF8wLF8yLF8zLF8wLF8yLF8wLF9hLF85LF9iLF84LF8xLF8xLF8xLF8wLF8zLF8wLF8yLF8wLF8xLF8wLF8wLF8wLF9iLF84LF9hLF84LF8xLF8wLF8wLF8wLF8yLF8wLF8yLF8wLF8wLF8wLF8wLF8wLF85LF84LF84LF84LF8xLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF9hLF85LF9iLF84LF8xLF8xLF8xLF8wLF8zLF8wLF8yLF8wLF8xLF8wLF8wLF8wLF84LF85LF85LF84LF8xLF8xLF8xLF8wLF8xLF8wLF8wLF8wLF8xLF8wLF8wLF8wLF85LF84LF84LF84LF8xLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF85LF84LF84LF84LF8xLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLAorICAgICAgXzMsXzIsXzIsXzIsXzMsXzAsXzIsXzAsXzIsXzIsXzIsXzIsXzIsXzAsXzIsXzAsXzMsXzAsXzIsXzAsXzEsXzAsXzAsXzAsXzIsXzAsXzIsXzAsXzAsXzAsXzAsXzAsXzIsXzAsXzIsXzAsXzAsXzAsXzAsXzAsXzIsXzAsXzIsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzMsXzAsXzIsXzAsXzEsXzAsXzAsXzAsXzIsXzAsXzIsXzAsXzAsXzAsXzAsXzAsXzEsXzAsXzAsXzAsXzEsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsCisgICAgICBfNSxfNixfNCxfNixfMyxfMCxfMixfMCxfNCxfNixfNCxfNixfMixfMCxfMixfMCxfNyxfNCxfNixfNCxfMSxfMCxfMCxfMCxfNixfNCxfNixfNCxfMCxfMCxfMCxfMCxfNixfNCxfNixfNCxfMCxfMCxfMCxfMCxfNixfNCxfNixfNCxfMCxfMCxfMCxfMCxfNCxfNCxfNCxfNCxfMCxfMCxfMCxfMCxfNCxfNCxfNCxfNCxfMCxfMCxfMCxfMCxfMyxfMCxfMixfMCxfMSxfMCxfMCxfMCxfMixfMCxfMixfMCxfMCxfMCxfMCxfMCxfMSxfMCxfMCxfMCxfMSxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCwKKyAgICAgIF8yLF8yLF8yLF8yLF8yLF8wLF8yLF8wLF8yLF8yLF8yLF8yLF8yLF8wLF8yLF8wLF8yLF8wLF8yLF8wLF8wLF8wLF8wLF8wLF8yLF8wLF8yLF8wLF8wLF8wLF8wLF8wLF8yLF8wLF8yLF8wLF8wLF8wLF8wLF8wLF8yLF8wLF8yLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8yLF8wLF8yLF8wLF8wLF8wLF8wLF8wLF8yLF8wLF8yLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLAorICAgICAgXzMsXzAsXzIsXzAsXzEsXzAsXzAsXzAsXzIsXzAsXzIsXzAsXzAsXzAsXzAsXzAsXzEsXzAsXzAsXzAsXzEsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzEsXzAsXzAsXzAsXzEsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzEsXzAsXzAsXzAsXzEsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsCisgICAgICBfMixfMCxfMixfMCxfMCxfMCxfMCxfMCxfMixfMCxfMixfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCwKKyAgICAgIF80LF81LF81LF80LF8xLF8zLF8xLF8yLF81LF80LF80LF80LF8xLF8yLF8wLF8yLF80LF83LF81LF82LF8zLF8xLF8zLF8wLF81LF82LF80LF82LF8zLF8wLF8yLF8wLF81LF82LF80LF82LF8zLF8wLF8yLF8wLF80LF82LF80LF82LF8yLF8wLF8yLF8wLF83LF80LF82LF80LF8xLF8wLF8wLF8wLF82LF80LF82LF80LF8wLF8wLF8wLF8wLF8wLF8zLF8xLF8yLF8zLF8xLF8zLF8wLF8xLF8yLF8wLF8yLF8zLF8wLF8yLF8wLF8yLF8xLF8zLF8wLF8xLF8xLF8xLF8wLF8zLF8wLF8yLF8wLF8xLF8wLF8wLF8wLF8zLF8wLF8yLF8wLF8xLF8wLF8wLF8wLF8yLF8wLF8yLF8wLF8wLF8wLF8wLF8wLF8xLF8wLF8wLF8wLF8xLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLAorICAgICAgXzEsXzIsXzAsXzIsXzMsXzIsXzIsXzIsXzAsXzIsXzAsXzIsXzIsXzIsXzIsXzIsXzMsXzIsXzIsXzIsXzMsXzAsXzIsXzAsXzIsXzIsXzIsXzIsXzIsXzAsXzIsXzAsXzIsXzIsXzIsXzIsXzIsXzAsXzIsXzAsXzIsXzIsXzIsXzIsXzIsXzAsXzIsXzAsXzIsXzAsXzIsXzAsXzAsXzAsXzAsXzAsXzIsXzAsXzIsXzAsXzAsXzAsXzAsXzAsXzMsXzIsXzIsXzIsXzMsXzAsXzIsXzAsXzIsXzIsXzIsXzIsXzIsXzAsXzIsXzAsXzMsXzAsXzIsXzAsXzEsXzAsXzAsXzAsXzIsXzAsXzIsXzAsXzAsXzAsXzAsXzAsXzIsXzAsXzIsXzAsXzAsXzAsXzAsXzAsXzIsXzAsXzIsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsCisgICAgICBfMCxfMyxfMSxfMixfMyxfMSxfMyxfMCxfMSxfMixfMCxfMixfMyxfMCxfMixfMCxfMixfMSxfMyxfMCxfMSxfMSxfMSxfMCxfMyxfMCxfMixfMCxfMSxfMCxfMCxfMCxfMyxfMCxfMixfMCxfMSxfMCxfMCxfMCxfMixfMCxfMixfMCxfMCxfMCxfMCxfMCxfMSxfMCxfMCxfMCxfMSxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMixfMSxfMyxfMCxfMSxfMSxfMSxfMCxfMyxfMCxfMixfMCxfMSxfMCxfMCxfMCxfMCxfMSxfMSxfMCxfMSxfMSxfMSxfMCxfMSxfMCxfMCxfMCxfMSxfMCxfMCxfMCxfMSxfMCxfMCxfMCxfMSxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMSxfMCxfMCxfMCxfMSxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCwKKyAgICAgIF8zLF8yLF8yLF8yLF8zLF8wLF8yLF8wLF8yLF8yLF8yLF8yLF8yLF8wLF8yLF8wLF8zLF8wLF8yLF8wLF8xLF8wLF8wLF8wLF8yLF8wLF8yLF8wLF8wLF8wLF8wLF8wLF8yLF8wLF8yLF8wLF8wLF8wLF8wLF8wLF8yLF8wLF8yLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8zLF8wLF8yLF8wLF8xLF8wLF8wLF8wLF8yLF8wLF8yLF8wLF8wLF8wLF8wLF8wLF8xLF8wLF8wLF8wLF8xLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLAorICAgICAgXzUsXzYsXzQsXzYsXzMsXzAsXzIsXzAsXzQsXzYsXzQsXzYsXzIsXzAsXzIsXzAsXzcsXzQsXzYsXzQsXzEsXzAsXzAsXzAsXzYsXzQsXzYsXzQsXzAsXzAsXzAsXzAsXzYsXzQsXzYsXzQsXzAsXzAsXzAsXzAsXzYsXzQsXzYsXzQsXzAsXzAsXzAsXzAsXzQsXzQsXzQsXzQsXzAsXzAsXzAsXzAsXzQsXzQsXzQsXzQsXzAsXzAsXzAsXzAsXzMsXzAsXzIsXzAsXzEsXzAsXzAsXzAsXzIsXzAsXzIsXzAsXzAsXzAsXzAsXzAsXzEsXzAsXzAsXzAsXzEsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsCisgICAgICBfMixfMixfMixfMixfMixfMCxfMixfMCxfMixfMixfMixfMixfMixfMCxfMixfMCxfMixfMCxfMixfMCxfMCxfMCxfMCxfMCxfMixfMCxfMixfMCxfMCxfMCxfMCxfMCxfMixfMCxfMixfMCxfMCxfMCxfMCxfMCxfMixfMCxfMixfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMixfMCxfMixfMCxfMCxfMCxfMCxfMCxfMixfMCxfMixfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCwKKyAgICAgIF8zLF8wLF8yLF8wLF8xLF8wLF8wLF8wLF8yLF8wLF8yLF8wLF8wLF8wLF8wLF8wLF8xLF8wLF8wLF8wLF8xLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8xLF8wLF8wLF8wLF8xLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8xLF8wLF8wLF8wLF8xLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLAorICAgICAgXzIsXzAsXzIsXzAsXzAsXzAsXzAsXzAsXzIsXzAsXzIsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsCisgICAgICBfMCxfMSxfMSxfMCxfMSxfMyxfMSxfMixfMSxfMCxfMCxfMCxfMSxfMixfMCxfMixfMCxfMyxfMSxfMixfMyxfMSxfMyxfMCxfMSxfMixfMCxfMixfMyxfMCxfMixfMCxfMSxfMixfMCxfMixfMyxfMCxfMixfMCxfMCxfMixfMCxfMixfMixfMCxfMixfMCxfMyxfMCxfMixfMCxfMSxfMCxfMCxfMCxfMixfMCxfMixfMCxfMCxfMCxfMCxfMCxfMCxfMyxfMSxfMixfMyxfMSxfMyxfMCxfMSxfMixfMCxfMixfMyxfMCxfMixfMCxfMixfMSxfMyxfMCxfMSxfMSxfMSxfMCxfMyxfMCxfMixfMCxfMSxfMCxfMCxfMCxfMyxfMCxfMixfMCxfMSxfMCxfMCxfMCxfMixfMCxfMixfMCxfMCxfMCxfMCxfMCxfMSxfMCxfMCxfMCxfMSxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCwKKyAgICAgIF8xLF8yLF8wLF8yLF8zLF8yLF8yLF8yLF8wLF8yLF8wLF8yLF8yLF8yLF8yLF8yLF8zLF8yLF8yLF8yLF8zLF8wLF8yLF8wLF8yLF8yLF8yLF8yLF8yLF8wLF8yLF8wLF8yLF8yLF8yLF8yLF8yLF8wLF8yLF8wLF8yLF8yLF8yLF8yLF8yLF8wLF8yLF8wLF8yLF8wLF8yLF8wLF8wLF8wLF8wLF8wLF8yLF8wLF8yLF8wLF8wLF8wLF8wLF8wLF8zLF8yLF8yLF8yLF8zLF8wLF8yLF8wLF8yLF8yLF8yLF8yLF8yLF8wLF8yLF8wLF8zLF8wLF8yLF8wLF8xLF8wLF8wLF8wLF8yLF8wLF8yLF8wLF8wLF8wLF8wLF8wLF8yLF8wLF8yLF8wLF8wLF8wLF8wLF8wLF8yLF8wLF8yLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLAorICAgICAgXzAsXzMsXzEsXzIsXzMsXzEsXzMsXzAsXzEsXzIsXzAsXzIsXzMsXzAsXzIsXzAsXzIsXzEsXzMsXzAsXzEsXzEsXzEsXzAsXzMsXzAsXzIsXzAsXzEsXzAsXzAsXzAsXzMsXzAsXzIsXzAsXzEsXzAsXzAsXzAsXzIsXzAsXzIsXzAsXzAsXzAsXzAsXzAsXzEsXzAsXzAsXzAsXzEsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzIsXzEsXzMsXzAsXzEsXzEsXzEsXzAsXzMsXzAsXzIsXzAsXzEsXzAsXzAsXzAsXzAsXzEsXzEsXzAsXzEsXzEsXzEsXzAsXzEsXzAsXzAsXzAsXzEsXzAsXzAsXzAsXzEsXzAsXzAsXzAsXzEsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzEsXzAsXzAsXzAsXzEsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsCisgICAgICBfMyxfMixfMixfMixfMyxfMCxfMixfMCxfMixfMixfMixfMixfMixfMCxfMixfMCxfMyxfMCxfMixfMCxfMSxfMCxfMCxfMCxfMixfMCxfMixfMCxfMCxfMCxfMCxfMCxfMixfMCxfMixfMCxfMCxfMCxfMCxfMCxfMixfMCxfMixfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMyxfMCxfMixfMCxfMSxfMCxfMCxfMCxfMixfMCxfMixfMCxfMCxfMCxfMCxfMCxfMSxfMCxfMCxfMCxfMSxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCwKKyAgICAgIF8xLF8yLF8wLF8yLF8zLF8wLF8yLF8wLF8wLF8yLF8wLF8yLF8yLF8wLF8yLF8wLF8zLF8wLF8yLF8wLF8xLF8wLF8wLF8wLF8yLF8wLF8yLF8wLF8wLF8wLF8wLF8wLF8yLF8wLF8yLF8wLF8wLF8wLF8wLF8wLF8yLF8wLF8yLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8zLF8wLF8yLF8wLF8xLF8wLF8wLF8wLF8yLF8wLF8yLF8wLF8wLF8wLF8wLF8wLF8xLF8wLF8wLF8wLF8xLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLAorICAgICAgXzIsXzIsXzIsXzIsXzIsXzAsXzIsXzAsXzIsXzIsXzIsXzIsXzIsXzAsXzIsXzAsXzIsXzAsXzIsXzAsXzAsXzAsXzAsXzAsXzIsXzAsXzIsXzAsXzAsXzAsXzAsXzAsXzIsXzAsXzIsXzAsXzAsXzAsXzAsXzAsXzIsXzAsXzIsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzIsXzAsXzIsXzAsXzAsXzAsXzAsXzAsXzIsXzAsXzIsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsXzAsCisgICAgICBfMyxfMCxfMixfMCxfMSxfMCxfMCxfMCxfMixfMCxfMixfMCxfMCxfMCxfMCxfMCxfMSxfMCxfMCxfMCxfMSxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMSxfMCxfMCxfMCxfMSxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMSxfMCxfMCxfMCxfMSxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCxfMCwKKyAgICAgIF8yLF8wLF8yLF8wLF8wLF8wLF8wLF8wLF8yLF8wLF8yLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wLF8wCisgICB9OworCisgICBwdWJsaWMgc3RhdGljIE5vZGUgY2FsY3VsYXRlKE5vZGUgbHQsIE5vZGUgcnQsIE5vZGUgcmIsIE5vZGUgbGIpIHsKKyAgICAgICBpbnQgdmFsdWUgPSBnZXROdW1lcmljKGx0KSA8PCAxMiB8IGdldE51bWVyaWMocnQpIDw8IDggfCBnZXROdW1lcmljKHJiKSA8PCA0IHwgZ2V0TnVtZXJpYyhsYik7CisgICAgICAgcmV0dXJuIFBSRUNBTENVTEFURURbdmFsdWVdOworICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS90eXBlcy9hc3NpZ25hYmxlU3ViaW5oZXJpdG9yL2VtcHR5LnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvdHlwZXMvYXNzaWduYWJsZVN1YmluaGVyaXRvci9lbXB0eS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTY5ZGUyOQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvdHlwZXMvYXNzaWduYWJsZVN1YmluaGVyaXRvci9lbXB0eS50eHQKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvdHlwZXMvYm91bmRlZFBhcmFtcy9BLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3R5cGVzL2JvdW5kZWRQYXJhbXMvQS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRlOWRjNWUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3R5cGVzL2JvdW5kZWRQYXJhbXMvQS5qYXZhCkBAIC0wLDAgKzEsNyBAQAoraW1wb3J0IHRlc3QuKjsKKworY2xhc3MgQTxUIGV4dGVuZHMgQ29sbGVjdGlvbj4geworICAgIHZvaWQgbWV0aG9kKFQgcGFyYW0pIHsKKwlJdGVyYXRvciBpdCA9IHBhcmFtLml0ZXJhdG9yKCk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS90eXBlcy9jb21wbGV4SW5oZXJpdGFuY2UvQS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS90eXBlcy9jb21wbGV4SW5oZXJpdGFuY2UvQS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUxY2M0YWEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3R5cGVzL2NvbXBsZXhJbmhlcml0YW5jZS9BLmphdmEKQEAgLTAsMCArMSw5IEBACitpbXBvcnQgdGVzdC4qOworCitwdWJsaWMgY2xhc3MgQSB7CisgICAgdm9pZCBtZXRob2QoKSB7CisgICAgICAgIEludExpc3RMaXN0IGwgPSBuZXcgSW50TGlzdExpc3QoKTsKKyAgICAgICAgbC5nZXQoMCk7CisgICAgfQorfQorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3R5cGVzL2xpc3RMaXN0SW5oZXJpdGFuY2UvQS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS90eXBlcy9saXN0TGlzdEluaGVyaXRhbmNlL0EuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZWZmN2UyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS90eXBlcy9saXN0TGlzdEluaGVyaXRhbmNlL0EuamF2YQpAQCAtMCwwICsxLDE1IEBACitpbXBvcnQgdGVzdC4qOworCitwdWJsaWMgY2xhc3MgQSB7CisgICAgcHVibGljIHN0YXRpYyBjbGFzcyBCIGV4dGVuZHMgTGlzdExpc3Q8SW50ZWdlcj4geworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIG1ldGhvZCgpIHsKKyAgICAgICAgTGlzdExpc3Q8SW50ZWdlcj4gbCA9IG5ldyBMaXN0TGlzdDxJbnRlZ2VyPigpOworICAgICAgICBsLmdldCgwKTsKKyAgICAgICAgQiBiID0gbmV3IEIoKTsKKyAgICAgICAgYi5nZXQoMCk7CisgICAgICAgIGwuYWRkKGIuZ2V0KDApKTsKKyAgICAgICAgYi5hZGQobC5nZXQoMCkpCisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS90eXBlcy9tZXRob2RUeXBlUGFyYW1ldGVyL0EuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvdHlwZXMvbWV0aG9kVHlwZVBhcmFtZXRlci9BLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWEzM2U1NwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvdHlwZXMvbWV0aG9kVHlwZVBhcmFtZXRlci9BLmphdmEKQEAgLTAsMCArMSwxMCBAQAoraW1wb3J0IHRlc3QuKjsKKworcHVibGljIGNsYXNzIEEgeworICAgIHB1YmxpYyB2b2lkIG1ldGhvZCgpIHsKKyAgICAgICAgTGlzdDxJbnRlZ2VyPiBsID0gbmV3IExpc3Q8SW50ZWdlcj4oKTsKKyAgICAgICAgQ29sbGVjdGlvblV0aWwuc29ydChsKTsKKyAgICAgICAgTGlzdCBsMSA9IG5ldyBMaXN0KCk7CisgICAgICAgIENvbGxlY3Rpb25VdGlsLnNvcnQobDEpCisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS90eXBlcy9yYXdBcnJheVR5cGVzL0EuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvdHlwZXMvcmF3QXJyYXlUeXBlcy9BLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTUyYTBiYQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvdHlwZXMvcmF3QXJyYXlUeXBlcy9BLmphdmEKQEAgLTAsMCArMSw5IEBACitpbXBvcnQgdGVzdC4qOworCitjbGFzcyBBIHsKKyAgICB2b2lkIG1ldGhvZCgpIHsKKyAgICAgICAgTGlzdCBsOworICAgICAgICBsLmdldEFycmF5KCk7CisgICAgICAgIGwuZ2V0TGlzdE9mQXJyYXlzKCk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS90eXBlcy9yYXdUeXBlRXh0ZW5zaW9uL0EuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvdHlwZXMvcmF3VHlwZUV4dGVuc2lvbi9BLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmIwOWYzNQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvdHlwZXMvcmF3VHlwZUV4dGVuc2lvbi9BLmphdmEKQEAgLTAsMCArMSw3IEBACitpbXBvcnQgdGVzdC4qOworCitjbGFzcyBBIGV4dGVuZHMgTGlzdCB7CisgICAgdm9pZCBtZXRob2QoKSB7CisJSXRlcmF0b3IgaXQgPSBpdGVyYXRvcigpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvdHlwZXMvcmF3VHlwZUluTWV0aG9kQXJnL0EuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvdHlwZXMvcmF3VHlwZUluTWV0aG9kQXJnL0EuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMjc5YTJhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS90eXBlcy9yYXdUeXBlSW5NZXRob2RBcmcvQS5qYXZhCkBAIC0wLDAgKzEsOSBAQAoraW1wb3J0IHRlc3QuKjsKKworY2xhc3MgQSB7CisgICAgcHVibGljIHZvaWQgbWV0aG9kKCkgeworICAgICAgICBMaXN0PFN0cmluZz4gbCA9IG5ldyBMaXN0PFN0cmluZz4oKTsKKyAgICAgICAgTGlzdCBsMSA9IG5ldyBMaXN0KCk7CisgICAgICAgIGwxLnB1dEFsbChsKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3R5cGVzL3Jhd1R5cGVzL0EuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvdHlwZXMvcmF3VHlwZXMvQS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgxYmI0N2YKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3R5cGVzL3Jhd1R5cGVzL0EuamF2YQpAQCAtMCwwICsxLDkgQEAKK2ltcG9ydCB0ZXN0Lio7CisKK2NsYXNzIEEgeworICAgIHB1YmxpYyB2b2lkIG1ldGhvZCgpIHsKKwlMaXN0IGxpc3QgPSBuZXcgTGlzdCgpOworICAgICAgICBsaXN0LmFkZChuZXcgQSgpKTsKKyAgICAgICAgbGlzdC5pdGVyYXRvcigpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvdHlwZXMvc2ltcGxlUmF3VHlwZUluTWV0aG9kQXJnL0EuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvdHlwZXMvc2ltcGxlUmF3VHlwZUluTWV0aG9kQXJnL0EuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNDQxNWYyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS90eXBlcy9zaW1wbGVSYXdUeXBlSW5NZXRob2RBcmcvQS5qYXZhCkBAIC0wLDAgKzEsOSBAQAoraW1wb3J0IHRlc3QuKjsKKworcHVibGljIGNsYXNzIEEgeworICAgIHZvaWQgbWV0aG9kKCkgeworICAgICAgICBPYmplY3QgbyA9IG51bGw7CisgICAgICAgIExpc3QgbCA9IG5ldyBMaXN0KCk7ICAgICAgIAorICAgICAgICBsLmFkZChvKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3R5cGVzL3NpbXBsZVN0dWZmL0EuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvdHlwZXMvc2ltcGxlU3R1ZmYvQS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI0MDM5YWMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3R5cGVzL3NpbXBsZVN0dWZmL0EuamF2YQpAQCAtMCwwICsxLDkgQEAKK2ltcG9ydCB0ZXN0Lio7CisKK2NsYXNzIEEgeworICAgIHB1YmxpYyB2b2lkIG1ldGhvZCgpIHsKKwlMaXN0PFN0cmluZz4gbGlzdCA9IG5ldyBMaXN0PFN0cmluZz4oKTsKKyAgICAgICAgbGlzdC5hZGQoImFiY2QiKTsKKwlsaXN0Lml0ZXJhdG9yKCk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS90eXBlcy9zcGFjZUluVHlwZVBhcmFtZXRlckxpc3QvQS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS90eXBlcy9zcGFjZUluVHlwZVBhcmFtZXRlckxpc3QvQS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY1OTY1MmQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3R5cGVzL3NwYWNlSW5UeXBlUGFyYW1ldGVyTGlzdC9BLmphdmEKQEAgLTAsMCArMSw3IEBACitpbXBvcnQgdGVzdC4qOworCitwdWJsaWMgY2xhc3MgQSB7CisgICAgcHVibGljIHZvaWQgbWV0aG9kKCkgeworICAgICAgICBMaXN0PExpc3QgPEludGVnZXI+PiBsID0gbnVsbDsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3R5cGVzL3NyYy90ZXN0L0Fic3RyYWN0Q29sbGVjdGlvbi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS90eXBlcy9zcmMvdGVzdC9BYnN0cmFjdENvbGxlY3Rpb24uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YzJiNGNkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS90eXBlcy9zcmMvdGVzdC9BYnN0cmFjdENvbGxlY3Rpb24uamF2YQpAQCAtMCwwICsxLDIgQEAKK3B1YmxpYyBjbGFzcyBTdWJMaXN0PEU+IGV4dGVuZHMgTGlzdDxFPiB7Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3R5cGVzL3NyYy90ZXN0L0NvbGxlY3Rpb24uamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvdHlwZXMvc3JjL3Rlc3QvQ29sbGVjdGlvbi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY3YzEzM2IxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS90eXBlcy9zcmMvdGVzdC9Db2xsZWN0aW9uLmphdmEKQEAgLTAsMCArMSw5IEBACitwYWNrYWdlIHRlc3Q7CisKK3B1YmxpYyBpbnRlcmZhY2UgQ29sbGVjdGlvbjxFPiB7CisgICAgdm9pZCBhZGQoRSBlKTsKKyAgICB2b2lkIHJlbW92ZShFIGUpOworICAgIGJvb2xlYW4gY29udGFpbnMoRSBlKTsKKyAgICBJdGVyYXRvcjxFPiBpdGVyYXRvcigpOworICAgIHZvaWQgcHV0QWxsKENvbGxlY3Rpb248RT4gbCk7Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3R5cGVzL3NyYy90ZXN0L0NvbGxlY3Rpb25VdGlsLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3R5cGVzL3NyYy90ZXN0L0NvbGxlY3Rpb25VdGlsLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGJhNjc5MQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvdHlwZXMvc3JjL3Rlc3QvQ29sbGVjdGlvblV0aWwuamF2YQpAQCAtMCwwICsxLDYgQEAKK3BhY2thZ2UgdGVzdDsKKworcHVibGljIGFic3RyYWN0IGNsYXNzIENvbGxlY3Rpb25VdGlsIHsKKyAgICBwdWJsaWMgc3RhdGljIDxUPiB2b2lkIHNvcnQoQ29sbGVjdGlvbjxUPiBjb2xsZWN0aW9uKSB7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS90eXBlcy9zcmMvdGVzdC9JbnRMaXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3R5cGVzL3NyYy90ZXN0L0ludExpc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMzcxYjViCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS90eXBlcy9zcmMvdGVzdC9JbnRMaXN0LmphdmEKQEAgLTAsMCArMSw1IEBACitwYWNrYWdlIHRlc3Q7CisKK3B1YmxpYyBjbGFzcyBJbnRMaXN0IGV4dGVuZHMgTGlzdDxJbnRlZ2VyPiB7CisKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvdHlwZXMvc3JjL3Rlc3QvSW50TGlzdExpc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvdHlwZXMvc3JjL3Rlc3QvSW50TGlzdExpc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZDJjMjJiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS90eXBlcy9zcmMvdGVzdC9JbnRMaXN0TGlzdC5qYXZhCkBAIC0wLDAgKzEsNCBAQAorcGFja2FnZSB0ZXN0OworCitwdWJsaWMgY2xhc3MgSW50TGlzdExpc3QgZXh0ZW5kcyBMaXN0PExpc3Q8SW50ZWdlcj4+IHsKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvdHlwZXMvc3JjL3Rlc3QvSXRlcmF0b3IuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvdHlwZXMvc3JjL3Rlc3QvSXRlcmF0b3IuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNmJhMTliCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS90eXBlcy9zcmMvdGVzdC9JdGVyYXRvci5qYXZhCkBAIC0wLDAgKzEsNSBAQAorcGFja2FnZSB0ZXN0OworcHVibGljIGludGVyZmFjZSBJdGVyYXRvcjxFPiB7CisgICAgRSBuZXh0KCk7CisgICAgYm9vbGVhbiBoYXNOZXh0KCk7Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3R5cGVzL3NyYy90ZXN0L0xpc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvdHlwZXMvc3JjL3Rlc3QvTGlzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBhOWI3YTYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3R5cGVzL3NyYy90ZXN0L0xpc3QuamF2YQpAQCAtMCwwICsxLDIzIEBACitwYWNrYWdlIHRlc3Q7CisKK3B1YmxpYyBjbGFzcyBMaXN0PFQ+IGltcGxlbWVudHMgQ29sbGVjdGlvbjxUPiB7CisgICBwdWJsaWMgdm9pZCBhZGQoVCBlKSB7CisgICB9CisgICBwdWJsaWMgdm9pZCByZW1vdmUoVCBlKSB7CisgICB9CisgICBwdWJsaWMgSXRlcmF0b3I8VD4gaXRlcmF0b3IoKSB7CisgICAgICAgcmV0dXJuIG51bGw7CisgICB9CisgICBwdWJsaWMgYm9vbGVhbiBjb250YWlucyhUIGUpIHsKKyAgICAgICByZXR1cm4gZmFsc2U7CisgICB9CisgICBwdWJsaWMgVCBnZXQoaW50IGkpIHsKKyAgICAgICByZXR1cm4gbnVsbDsKKyAgIH0KKyAgIHB1YmxpYyB2b2lkIHB1dEFsbChDb2xsZWN0aW9uPFQ+IGUpIHsKKyAgIH0KKyAgIHB1YmxpYyBUW10gZ2V0QXJyYXkoKSB7CisgICB9CisgICBwdWJsaWMgTGlzdDxUW10+IGdldExpc3RPZkFycmF5cygpIHsKKyAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvdHlwZXMvc3JjL3Rlc3QvTGlzdExpc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvdHlwZXMvc3JjL3Rlc3QvTGlzdExpc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZmNmNzdjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS90eXBlcy9zcmMvdGVzdC9MaXN0TGlzdC5qYXZhCkBAIC0wLDAgKzEsNCBAQAorcGFja2FnZSB0ZXN0OworCitwdWJsaWMgY2xhc3MgTGlzdExpc3Q8VD4gZXh0ZW5kcyBMaXN0PExpc3Q8VD4+IHsKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvdHlwZXMvc3JjL3Rlc3QvU3ViTGlzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS90eXBlcy9zcmMvdGVzdC9TdWJMaXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGEwY2JlZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvdHlwZXMvc3JjL3Rlc3QvU3ViTGlzdC5qYXZhCkBAIC0wLDAgKzEsNCBAQAorcGFja2FnZSB0ZXN0OworCitwdWJsaWMgY2xhc3MgU3ViTGlzdDxMPiBleHRlbmRzIExpc3Q8TD4geworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS90eXBlcy9zdWJzdFdpdGhJbmhlcml0b3IvQS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS90eXBlcy9zdWJzdFdpdGhJbmhlcml0b3IvQS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZkZGJhNWEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3R5cGVzL3N1YnN0V2l0aEluaGVyaXRvci9BLmphdmEKQEAgLTAsMCArMSw5IEBACitpbXBvcnQgdGVzdC4qOworCitjbGFzcyBBIHsKKyAgICBwdWJsaWMgdm9pZCBtZXRob2QoKSB7CisgICAgICAgIEludExpc3QgbGlzdCA9IG5ldyBJbnRMaXN0KCk7CisgICAgICAgIGxpc3QuYWRkKG5ldyBJbnRlZ2VyKDEpKTsKKyAgICAgICAgbGlzdC5pdGVyYXRvcigpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvdHlwZXMvdHlwZXNJbkdlbmVyaWNDbGFzcy9BLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3R5cGVzL3R5cGVzSW5HZW5lcmljQ2xhc3MvQS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBmMDJhZGMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3R5cGVzL3R5cGVzSW5HZW5lcmljQ2xhc3MvQS5qYXZhCkBAIC0wLDAgKzEsOSBAQAorcHVibGljIGNsYXNzIEE8VD4geworICAgIFQgZ2V0KCkgeworICAgICAgICByZXR1cm4gbnVsbDsKKyAgICB9CisKKyAgICB2b2lkIG1ldGhvZCgpIHsKKyAgICAgICAgZ2V0KCk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS90eXBlcy93aWxkY2FyZFR5cGVzQXNzaWduYWJsZS91c2FnZXMvQmFzZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS90eXBlcy93aWxkY2FyZFR5cGVzQXNzaWduYWJsZS91c2FnZXMvQmFzZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU1YzM1OWQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3R5cGVzL3dpbGRjYXJkVHlwZXNBc3NpZ25hYmxlL3VzYWdlcy9CYXNlLmphdmEKQEAgLTAsMCArMSw0IEBACitwYWNrYWdlIHVzYWdlczsKKworcHVibGljIGNsYXNzIEJhc2UgeworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS90eXBlcy93aWxkY2FyZFR5cGVzQXNzaWduYWJsZS91c2FnZXMvSW50ZXJtZWRpYXRlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcHNpL3R5cGVzL3dpbGRjYXJkVHlwZXNBc3NpZ25hYmxlL3VzYWdlcy9JbnRlcm1lZGlhdGUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kOTM5YWFjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS90eXBlcy93aWxkY2FyZFR5cGVzQXNzaWduYWJsZS91c2FnZXMvSW50ZXJtZWRpYXRlLmphdmEKQEAgLTAsMCArMSw0IEBACitwYWNrYWdlIHVzYWdlczsKKworcHVibGljIGNsYXNzIEludGVybWVkaWF0ZSBleHRlbmRzIEJhc2UsIFJ1bm5hYmxlIHsKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvdHlwZXMvd2lsZGNhcmRUeXBlc0Fzc2lnbmFibGUvdXNhZ2VzL0xlYWYuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9wc2kvdHlwZXMvd2lsZGNhcmRUeXBlc0Fzc2lnbmFibGUvdXNhZ2VzL0xlYWYuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZjkzYjY1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3BzaS90eXBlcy93aWxkY2FyZFR5cGVzQXNzaWduYWJsZS91c2FnZXMvTGVhZi5qYXZhCkBAIC0wLDAgKzEsNCBAQAorcGFja2FnZSB1c2FnZXM7CisKK3B1YmxpYyBjbGFzcyBMZWFmIGV4dGVuZHMgSW50ZXJtZWRpYXRlIHsKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9hbm9ueW1vdXNUb0lubmVyL2NhbkJlU3RhdGljLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvYW5vbnltb3VzVG9Jbm5lci9jYW5CZVN0YXRpYy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRkN2NhNDkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvYW5vbnltb3VzVG9Jbm5lci9jYW5CZVN0YXRpYy5qYXZhCkBAIC0wLDAgKzEsMTQgQEAKK3B1YmxpYyBjbGFzcyBGb28geworICAgIHB1YmxpYzxUPiB2b2lkIGZvbygpIHsKKyAgICAgICAgUHJlZGljYXRlPFQ+IHByZWRpY2F0ZSA9IG5lPGNhcmV0PncgUHJlZGljYXRlPFQ+KCkgeworICAgICAgICAgICAgQE92ZXJyaWRlCisgICAgICAgICAgICBwdWJsaWMgYm9vbGVhbiB0ZXN0KFQgdCkgeworICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKyAgICB9CisKKyAgICBwcml2YXRlIGludGVyZmFjZSBQcmVkaWNhdGU8Sz4geworICAgICAgICBib29sZWFuIHRlc3QoSyB0KTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2Fub255bW91c1RvSW5uZXIvY2FuQmVTdGF0aWNfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9hbm9ueW1vdXNUb0lubmVyL2NhbkJlU3RhdGljX2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGJjZmFiMQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9hbm9ueW1vdXNUb0lubmVyL2NhbkJlU3RhdGljX2FmdGVyLmphdmEKQEAgLTAsMCArMSwxNiBAQAorcHVibGljIGNsYXNzIEZvbyB7CisgICAgcHVibGljPFQ+IHZvaWQgZm9vKCkgeworICAgICAgICBQcmVkaWNhdGU8VD4gcHJlZGljYXRlID0gbmV3IE15UHJlZGljYXRlPD4oKTsKKyAgICB9CisKKyAgICBwcml2YXRlIGludGVyZmFjZSBQcmVkaWNhdGU8Sz4geworICAgICAgICBib29sZWFuIHRlc3QoSyB0KTsKKyAgICB9CisKKyAgICBwcml2YXRlIHN0YXRpYyBjbGFzcyBNeVByZWRpY2F0ZTxUPiBpbXBsZW1lbnRzIFByZWRpY2F0ZTxUPiB7CisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgYm9vbGVhbiB0ZXN0KFQgdCkgeworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9hbm9ueW1vdXNUb0lubmVyL2NvbGxhcHNlRGlhbW9uZHMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9hbm9ueW1vdXNUb0lubmVyL2NvbGxhcHNlRGlhbW9uZHMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZDdjYTQ5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2Fub255bW91c1RvSW5uZXIvY29sbGFwc2VEaWFtb25kcy5qYXZhCkBAIC0wLDAgKzEsMTQgQEAKK3B1YmxpYyBjbGFzcyBGb28geworICAgIHB1YmxpYzxUPiB2b2lkIGZvbygpIHsKKyAgICAgICAgUHJlZGljYXRlPFQ+IHByZWRpY2F0ZSA9IG5lPGNhcmV0PncgUHJlZGljYXRlPFQ+KCkgeworICAgICAgICAgICAgQE92ZXJyaWRlCisgICAgICAgICAgICBwdWJsaWMgYm9vbGVhbiB0ZXN0KFQgdCkgeworICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKyAgICB9CisKKyAgICBwcml2YXRlIGludGVyZmFjZSBQcmVkaWNhdGU8Sz4geworICAgICAgICBib29sZWFuIHRlc3QoSyB0KTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2Fub255bW91c1RvSW5uZXIvY29sbGFwc2VEaWFtb25kc19hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2Fub255bW91c1RvSW5uZXIvY29sbGFwc2VEaWFtb25kc19hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRiY2ZhYjEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvYW5vbnltb3VzVG9Jbm5lci9jb2xsYXBzZURpYW1vbmRzX2FmdGVyLmphdmEKQEAgLTAsMCArMSwxNiBAQAorcHVibGljIGNsYXNzIEZvbyB7CisgICAgcHVibGljPFQ+IHZvaWQgZm9vKCkgeworICAgICAgICBQcmVkaWNhdGU8VD4gcHJlZGljYXRlID0gbmV3IE15UHJlZGljYXRlPD4oKTsKKyAgICB9CisKKyAgICBwcml2YXRlIGludGVyZmFjZSBQcmVkaWNhdGU8Sz4geworICAgICAgICBib29sZWFuIHRlc3QoSyB0KTsKKyAgICB9CisKKyAgICBwcml2YXRlIHN0YXRpYyBjbGFzcyBNeVByZWRpY2F0ZTxUPiBpbXBsZW1lbnRzIFByZWRpY2F0ZTxUPiB7CisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgYm9vbGVhbiB0ZXN0KFQgdCkgeworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9hbm9ueW1vdXNUb0lubmVyL2dlbmVyaWNUeXBlUGFyYW1ldGVycy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2Fub255bW91c1RvSW5uZXIvZ2VuZXJpY1R5cGVQYXJhbWV0ZXJzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDBjMGFhYwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9hbm9ueW1vdXNUb0lubmVyL2dlbmVyaWNUeXBlUGFyYW1ldGVycy5qYXZhCkBAIC0wLDAgKzEsMTggQEAKK2ltcG9ydCBqYXZhLnV0aWwuKjsKKworY2xhc3MgQTxLLCBWPiB7CisgICAgcHVibGljIEl0ZXJhdG9yPE1hcC5FbnRyeTxLLCBWPj4gaXRlcmF0b3IobG9uZyByZXZpc2lvbikgeworICAgICAgICByZXR1cm4gbmV3IDxjYXJldD5JdGVyYXRvcjxNYXAuRW50cnk8SywgVj4+KCkgeworICAgICAgICAgICAgcHVibGljIGJvb2xlYW4gaGFzTmV4dCgpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHB1YmxpYyBNYXAuRW50cnk8SywgVj4gbmV4dCgpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcHVibGljIHZvaWQgcmVtb3ZlKCkgeworICAgICAgICAgICAgfQorICAgICAgICB9OworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvYW5vbnltb3VzVG9Jbm5lci9nZW5lcmljVHlwZVBhcmFtZXRlcnNfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9hbm9ueW1vdXNUb0lubmVyL2dlbmVyaWNUeXBlUGFyYW1ldGVyc19hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjllZTM1Njg3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2Fub255bW91c1RvSW5uZXIvZ2VuZXJpY1R5cGVQYXJhbWV0ZXJzX2FmdGVyLmphdmEKQEAgLTAsMCArMSwyMCBAQAoraW1wb3J0IGphdmEudXRpbC4qOworCitjbGFzcyBBPEssIFY+IHsKKyAgICBwdWJsaWMgSXRlcmF0b3I8TWFwLkVudHJ5PEssIFY+PiBpdGVyYXRvcihsb25nIHJldmlzaW9uKSB7CisgICAgICAgIHJldHVybiBuZXcgTXlJdGVyYXRvcjw+KCk7CisgICAgfQorCisgICAgcHJpdmF0ZSBzdGF0aWMgY2xhc3MgTXlJdGVyYXRvcjxLLCBWPiBpbXBsZW1lbnRzIEl0ZXJhdG9yPE1hcC5FbnRyeTxLLCBWPj4geworICAgICAgICBwdWJsaWMgYm9vbGVhbiBoYXNOZXh0KCkgeworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIE1hcC5FbnRyeTxLLCBWPiBuZXh0KCkgeworICAgICAgICAgICAgcmV0dXJuIG51bGw7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgdm9pZCByZW1vdmUoKSB7CisgICAgICAgIH0KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2Fub255bW91c1RvSW5uZXIvaW5zaWRlSW50ZXJmYWNlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvYW5vbnltb3VzVG9Jbm5lci9pbnNpZGVJbnRlcmZhY2UuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NmRhNTA1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2Fub255bW91c1RvSW5uZXIvaW5zaWRlSW50ZXJmYWNlLmphdmEKQEAgLTAsMCArMSw4IEBACitpbnRlcmZhY2UgTSB7CisgIFJ1bm5hYmxlIHIgPSBuZXcgUnVubmFibGUoKSB7PGNhcmV0PgorICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyB2b2lkIHJ1bigpIHsKKworICAgIH0KKyAgfTsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvYW5vbnltb3VzVG9Jbm5lci9pbnNpZGVJbnRlcmZhY2VfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9hbm9ueW1vdXNUb0lubmVyL2luc2lkZUludGVyZmFjZV9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRjYTY0NDUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvYW5vbnltb3VzVG9Jbm5lci9pbnNpZGVJbnRlcmZhY2VfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDEwIEBACitpbnRlcmZhY2UgTSB7CisgIFJ1bm5hYmxlIHIgPSBuZXcgTXlSdW5uYWJsZSgpOworCisgICAgY2xhc3MgTXlSdW5uYWJsZSBpbXBsZW1lbnRzIFJ1bm5hYmxlIHsKKyAgICAgICAgQE92ZXJyaWRlCisgICAgICAgIHB1YmxpYyB2b2lkIHJ1bigpIHsKKyAgICAKKyAgICAgICAgfQorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY2hhbmdlQ2xhc3NTaWduYXR1cmUvQWRkUGFyYW0uamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jaGFuZ2VDbGFzc1NpZ25hdHVyZS9BZGRQYXJhbS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdhZGZjZjAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY2hhbmdlQ2xhc3NTaWduYXR1cmUvQWRkUGFyYW0uamF2YQpAQCAtMCwwICsxLDkgQEAKK2NsYXNzIEw8RT4ge30KK2NsYXNzIDxjYXJldD5DPFQ+IHsKK30KKworY2xhc3MgVXNhZ2UgZXh0ZW5kcyBDPFN0cmluZz4geworICB7CisgICAgQzw/IGV4dGVuZHMgSW50ZWdlcj4gYyA9IG5ldyBDPEludGVnZXI+KCk7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY2hhbmdlQ2xhc3NTaWduYXR1cmUvQWRkUGFyYW0uamF2YS5hZnRlciBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jaGFuZ2VDbGFzc1NpZ25hdHVyZS9BZGRQYXJhbS5qYXZhLmFmdGVyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg0MjExYTEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY2hhbmdlQ2xhc3NTaWduYXR1cmUvQWRkUGFyYW0uamF2YS5hZnRlcgpAQCAtMCwwICsxLDkgQEAKK2NsYXNzIEw8RT4ge30KK2NsYXNzIDxjYXJldD5DPFQsIEU+IHsKK30KKworY2xhc3MgVXNhZ2UgZXh0ZW5kcyBDPFN0cmluZywgTDxTdHJpbmc+PiB7CisgIHsKKyAgICBDPD8gZXh0ZW5kcyBJbnRlZ2VyLCBMPD8gZXh0ZW5kcyBJbnRlZ2VyPj4gYyA9IG5ldyBDPEludGVnZXIsIEw8SW50ZWdlcj4+KCk7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY2hhbmdlQ2xhc3NTaWduYXR1cmUvSW5zdGFuY2VPZi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NoYW5nZUNsYXNzU2lnbmF0dXJlL0luc3RhbmNlT2YuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zN2U3Njk0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NoYW5nZUNsYXNzU2lnbmF0dXJlL0luc3RhbmNlT2YuamF2YQpAQCAtMCwwICsxLDExIEBACitwdWJsaWMgY2xhc3MgQ2hhbmdlQ2xhc3NTaWduYXR1cmVBZGRQYXJhbWV0ZXIgeworCisgIHB1YmxpYyB2b2lkIHRlc3QoT2JqZWN0IG9iamVjdCkgeworICAgIGlmIChvYmplY3QgaW5zdGFuY2VvZiBNeUNsYXNzKSB7CisgICAgICBNeUNsYXNzIG15Q2xhc3MgPSAoTXlDbGFzcylvYmplY3Q7CisgICAgfQorICB9Cit9CisKK2NsYXNzIE15PGNhcmV0PkNsYXNzIHsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY2hhbmdlQ2xhc3NTaWduYXR1cmUvSW5zdGFuY2VPZi5qYXZhLmFmdGVyIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NoYW5nZUNsYXNzU2lnbmF0dXJlL0luc3RhbmNlT2YuamF2YS5hZnRlcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMjFiODZhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NoYW5nZUNsYXNzU2lnbmF0dXJlL0luc3RhbmNlT2YuamF2YS5hZnRlcgpAQCAtMCwwICsxLDExIEBACitwdWJsaWMgY2xhc3MgQ2hhbmdlQ2xhc3NTaWduYXR1cmVBZGRQYXJhbWV0ZXIgeworCisgIHB1YmxpYyB2b2lkIHRlc3QoT2JqZWN0IG9iamVjdCkgeworICAgIGlmIChvYmplY3QgaW5zdGFuY2VvZiBNeUNsYXNzKSB7CisgICAgICBNeUNsYXNzPFN0cmluZz4gbXlDbGFzcyA9IChNeUNsYXNzPFN0cmluZz4pb2JqZWN0OworICAgIH0KKyAgfQorfQorCitjbGFzcyBNeUNsYXNzPFQ+IHsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY2hhbmdlQ2xhc3NTaWduYXR1cmUvTm9QYXJhbXMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jaGFuZ2VDbGFzc1NpZ25hdHVyZS9Ob1BhcmFtcy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg0MDcxYWIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY2hhbmdlQ2xhc3NTaWduYXR1cmUvTm9QYXJhbXMuamF2YQpAQCAtMCwwICsxLDEwIEBACitjbGFzcyA8Y2FyZXQ+QyB7Cit9CisKK2NsYXNzIFVzYWdlIGV4dGVuZHMgQyB7CisgIHsKKyAgICBDIGMgPSBuZXcgQygpOworCisgICAgQyBjID0gbmV3IEMoKSB7IH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jaGFuZ2VDbGFzc1NpZ25hdHVyZS9Ob1BhcmFtcy5qYXZhLmFmdGVyIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NoYW5nZUNsYXNzU2lnbmF0dXJlL05vUGFyYW1zLmphdmEuYWZ0ZXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTkyNWRkZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jaGFuZ2VDbGFzc1NpZ25hdHVyZS9Ob1BhcmFtcy5qYXZhLmFmdGVyCkBAIC0wLDAgKzEsMTAgQEAKK2NsYXNzIEM8VD4geworfQorCitjbGFzcyBVc2FnZSBleHRlbmRzIEM8U3RyaW5nPiB7CisgIHsKKyAgICBDPFN0cmluZz4gYyA9IG5ldyBDPFN0cmluZz4oKTsKKworICAgIEM8U3RyaW5nPiBjID0gbmV3IEM8U3RyaW5nPigpIHsgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NoYW5nZUNsYXNzU2lnbmF0dXJlL09uZVN0cmluZy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NoYW5nZUNsYXNzU2lnbmF0dXJlL09uZVN0cmluZy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ2YzMxOWIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY2hhbmdlQ2xhc3NTaWduYXR1cmUvT25lU3RyaW5nLmphdmEKQEAgLTAsMCArMSwyMSBAQAorY2xhc3MgPGNhcmV0PlN1YmplY3Q8VD4geworfQorCitpbnRlcmZhY2UgU3ViamVjdEZhY2UgeworfQorCitwdWJsaWMgY2xhc3MgQ2xpZW50IGV4dGVuZHMgU3ViamVjdDxTdHJpbmc+IGltcGxlbWVudHMgU3ViamVjdEZhY2UgeworCXByaXZhdGUgU3ViamVjdDxTdHJpbmc+IG15U3ViamVjdCA9IG5ldyBTdWJqZWN0PFN0cmluZz4oKTsKKwlwcml2YXRlIFN1YmplY3RGYWNlIG15U3ViamVjdEZhY2UgPSBuZXcgU3ViamVjdEZhY2UoKSB7CisJfTsKKworCXB1YmxpYyBTdWJqZWN0PFN0cmluZz4gc3ViamVjdE1ldGhvZChTdWJqZWN0PFN0cmluZz4gc3ViamVjdCkgeworCQlTdWJqZWN0PFN0cmluZz4gdmFyU3ViamVjdCA9IG5ldyBTdWJqZWN0PFN0cmluZz4oKTsKKwkJcmV0dXJuIHZhclN1YmplY3Q7CisJfQorCXB1YmxpYyBTdWJqZWN0RmFjZSBzdWJqZWN0RmFjZU1ldGhvZChTdWJqZWN0RmFjZSBzdWJqZWN0RmFjZSkgeworCQlTdWJqZWN0RmFjZSB2YXJTdWJqZWN0RmFjZSA9IG5ldyBTdWJqZWN0RmFjZSgpIHsKKwkJfTsKKwkJcmV0dXJuIHZhclN1YmplY3RGYWNlOworCX0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jaGFuZ2VDbGFzc1NpZ25hdHVyZS9SZW1vdmVBbGxQYXJhbXMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jaGFuZ2VDbGFzc1NpZ25hdHVyZS9SZW1vdmVBbGxQYXJhbXMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYTRlNmEwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NoYW5nZUNsYXNzU2lnbmF0dXJlL1JlbW92ZUFsbFBhcmFtcy5qYXZhCkBAIC0wLDAgKzEsNSBAQAorY2xhc3MgPGNhcmV0PkM8WCwgWSwgWj4geworICB7CisgICAgQyBjID0gbmV3IEM8U3RyaW5nLCBTdHJpbmcsIEludGVnZXI+KCk7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY2hhbmdlQ2xhc3NTaWduYXR1cmUvUmVtb3ZlQWxsUGFyYW1zLmphdmEuYWZ0ZXIgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY2hhbmdlQ2xhc3NTaWduYXR1cmUvUmVtb3ZlQWxsUGFyYW1zLmphdmEuYWZ0ZXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjhlZjVmNQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jaGFuZ2VDbGFzc1NpZ25hdHVyZS9SZW1vdmVBbGxQYXJhbXMuamF2YS5hZnRlcgpAQCAtMCwwICsxLDUgQEAKK2NsYXNzIEMgeworICB7CisgICAgQyBjID0gbmV3IEMoKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jaGFuZ2VDbGFzc1NpZ25hdHVyZS9SZW9yZGVyUGFyYW1zLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY2hhbmdlQ2xhc3NTaWduYXR1cmUvUmVvcmRlclBhcmFtcy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVlZGM1YmMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY2hhbmdlQ2xhc3NTaWduYXR1cmUvUmVvcmRlclBhcmFtcy5qYXZhCkBAIC0wLDAgKzEsOCBAQAorY2xhc3MgPGNhcmV0PkM8WCxZPiB7Cit9CisKK2NsYXNzIFVzYWdlIGV4dGVuZHMgQzxTdHJpbmcsSW50ZWdlcj4geworICB7CisgICAgQzxCb29sZWFuLFN0cmluZz4gPSBuZXcgQygpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NoYW5nZUNsYXNzU2lnbmF0dXJlL1Jlb3JkZXJQYXJhbXMuamF2YS5hZnRlciBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jaGFuZ2VDbGFzc1NpZ25hdHVyZS9SZW9yZGVyUGFyYW1zLmphdmEuYWZ0ZXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzExZGZhYgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jaGFuZ2VDbGFzc1NpZ25hdHVyZS9SZW9yZGVyUGFyYW1zLmphdmEuYWZ0ZXIKQEAgLTAsMCArMSw4IEBACitjbGFzcyBDPFksIFg+IHsKK30KKworY2xhc3MgVXNhZ2UgZXh0ZW5kcyBDPEludGVnZXIsIFN0cmluZz4geworICB7CisgICAgQzxTdHJpbmcsIEJvb2xlYW4+ID0gbmV3IEMoKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jaGFuZ2VDbGFzc1NpZ25hdHVyZS9TdWJqZWN0SW5DbGllbnQuamF2YS5ibGFuayBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jaGFuZ2VDbGFzc1NpZ25hdHVyZS9TdWJqZWN0SW5DbGllbnQuamF2YS5ibGFuawpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZDZkZDg5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NoYW5nZUNsYXNzU2lnbmF0dXJlL1N1YmplY3RJbkNsaWVudC5qYXZhLmJsYW5rCkBAIC0wLDAgKzEsMjEgQEAKK2NsYXNzIFN1YmplY3QgeworfQorCitpbnRlcmZhY2UgU3ViamVjdEZhY2UgeworfQorCitwdWJsaWMgY2xhc3MgQ2xpZW50IGV4dGVuZHMgU3ViamVjdCBpbXBsZW1lbnRzIFN1YmplY3RGYWNlIHsKKwlwcml2YXRlIFN1YmplY3QgbXlTdWJqZWN0ID0gbmV3IFN1YmplY3QoKTsKKwlwcml2YXRlIFN1YmplY3RGYWNlIG15U3ViamVjdEZhY2UgPSBuZXcgU3ViamVjdEZhY2UoKSB7CisJfTsKKworCXB1YmxpYyBTdWJqZWN0IHN1YmplY3RNZXRob2QoU3ViamVjdCBzdWJqZWN0KSB7CisJCVN1YmplY3QgdmFyU3ViamVjdCA9IG5ldyBTdWJqZWN0KCk7CisJCXJldHVybiB2YXJTdWJqZWN0OworCX0KKwlwdWJsaWMgU3ViamVjdEZhY2Ugc3ViamVjdEZhY2VNZXRob2QoU3ViamVjdEZhY2Ugc3ViamVjdEZhY2UpIHsKKwkJU3ViamVjdEZhY2UgdmFyU3ViamVjdEZhY2UgPSBuZXcgU3ViamVjdEZhY2UoKSB7CisJCX07CisJCXJldHVybiB2YXJTdWJqZWN0RmFjZTsKKwl9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY2hhbmdlQ2xhc3NTaWduYXR1cmUvU3Vic3RpdHV0ZVBhcmFtSW5zaWRlQ2xhc3MuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jaGFuZ2VDbGFzc1NpZ25hdHVyZS9TdWJzdGl0dXRlUGFyYW1JbnNpZGVDbGFzcy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI4NDliYjcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY2hhbmdlQ2xhc3NTaWduYXR1cmUvU3Vic3RpdHV0ZVBhcmFtSW5zaWRlQ2xhc3MuamF2YQpAQCAtMCwwICsxLDYgQEAKK3B1YmxpYyBjbGFzcyBGPGNhcmV0Pm9vPFQgZXh0ZW5kcyBSdW5uYWJsZT4geworCisgICAgVCBnZXRGb28oKSB7CisgICAgICAgIHJldHVybiBudWxsOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jaGFuZ2VDbGFzc1NpZ25hdHVyZS9TdWJzdGl0dXRlUGFyYW1JbnNpZGVDbGFzcy5qYXZhLmFmdGVyIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NoYW5nZUNsYXNzU2lnbmF0dXJlL1N1YnN0aXR1dGVQYXJhbUluc2lkZUNsYXNzLmphdmEuYWZ0ZXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTRlMzJkYTEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY2hhbmdlQ2xhc3NTaWduYXR1cmUvU3Vic3RpdHV0ZVBhcmFtSW5zaWRlQ2xhc3MuamF2YS5hZnRlcgpAQCAtMCwwICsxLDYgQEAKK3B1YmxpYyBjbGFzcyBGb28geworCisgICAgUnVubmFibGUgZ2V0Rm9vKCkgeworICAgICAgICByZXR1cm4gbnVsbDsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY2hhbmdlQ2xhc3NTaWduYXR1cmUvVHdvU3ViamVjdEZhY2VTZXRPYmplY3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jaGFuZ2VDbGFzc1NpZ25hdHVyZS9Ud29TdWJqZWN0RmFjZVNldE9iamVjdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU4NDJhZTMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY2hhbmdlQ2xhc3NTaWduYXR1cmUvVHdvU3ViamVjdEZhY2VTZXRPYmplY3QuamF2YQpAQCAtMCwwICsxLDIzIEBACitpbXBvcnQgamF2YS51dGlsLlNldDsKKworY2xhc3MgPGNhcmV0PlN1YmplY3Q8VSwgVj4geworfQorCitpbnRlcmZhY2UgU3ViamVjdEZhY2UgeworfQorCitwdWJsaWMgY2xhc3MgQ2xpZW50IGV4dGVuZHMgU3ViamVjdDxTdWJqZWN0RmFjZSwgU2V0PE9iamVjdD4+IGltcGxlbWVudHMgU3ViamVjdEZhY2UgeworCXByaXZhdGUgU3ViamVjdDxTdWJqZWN0RmFjZSwgU2V0PE9iamVjdD4+IG15U3ViamVjdCA9IG5ldyBTdWJqZWN0PFN1YmplY3RGYWNlLCBTZXQ8T2JqZWN0Pj4oKTsKKwlwcml2YXRlIFN1YmplY3RGYWNlIG15U3ViamVjdEZhY2UgPSBuZXcgU3ViamVjdEZhY2UoKSB7CisJfTsKKworCXB1YmxpYyBTdWJqZWN0PFN1YmplY3RGYWNlLCBTZXQ8T2JqZWN0Pj4gc3ViamVjdE1ldGhvZChTdWJqZWN0PFN1YmplY3RGYWNlLCBTZXQ8T2JqZWN0Pj4gc3ViamVjdCkgeworCQlTdWJqZWN0PFN1YmplY3RGYWNlLCBTZXQ8T2JqZWN0Pj4gdmFyU3ViamVjdCA9IG5ldyBTdWJqZWN0PFN1YmplY3RGYWNlLCBTZXQ8T2JqZWN0Pj4oKTsKKwkJcmV0dXJuIHZhclN1YmplY3Q7CisJfQorCXB1YmxpYyBTdWJqZWN0RmFjZSBzdWJqZWN0RmFjZU1ldGhvZChTdWJqZWN0RmFjZSBzdWJqZWN0RmFjZSkgeworCQlTdWJqZWN0RmFjZSB2YXJTdWJqZWN0RmFjZSA9IG5ldyBTdWJqZWN0RmFjZSgpIHsKKwkJfTsKKwkJcmV0dXJuIHZhclN1YmplY3RGYWNlOworCX0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jaGFuZ2VDbGFzc1NpZ25hdHVyZS9aZXJvLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY2hhbmdlQ2xhc3NTaWduYXR1cmUvWmVyby5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNkMWIwZWYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY2hhbmdlQ2xhc3NTaWduYXR1cmUvWmVyby5qYXZhCkBAIC0wLDAgKzEsMjEgQEAKK2NsYXNzIDxjYXJldD5TdWJqZWN0IHsKK30KKworaW50ZXJmYWNlIFN1YmplY3RGYWNlIHsKK30KKworcHVibGljIGNsYXNzIENsaWVudCBleHRlbmRzIFN1YmplY3QgaW1wbGVtZW50cyBTdWJqZWN0RmFjZSB7CisJcHJpdmF0ZSBTdWJqZWN0IG15U3ViamVjdCA9IG5ldyBTdWJqZWN0KCk7CisJcHJpdmF0ZSBTdWJqZWN0RmFjZSBteVN1YmplY3RGYWNlID0gbmV3IFN1YmplY3RGYWNlKCkgeworCX07CisKKwlwdWJsaWMgU3ViamVjdCBzdWJqZWN0TWV0aG9kKFN1YmplY3Qgc3ViamVjdCkgeworCQlTdWJqZWN0IHZhclN1YmplY3QgPSBuZXcgU3ViamVjdCgpOworCQlyZXR1cm4gdmFyU3ViamVjdDsKKwl9CisJcHVibGljIFN1YmplY3RGYWNlIHN1YmplY3RGYWNlTWV0aG9kKFN1YmplY3RGYWNlIHN1YmplY3RGYWNlKSB7CisJCVN1YmplY3RGYWNlIHZhclN1YmplY3RGYWNlID0gbmV3IFN1YmplY3RGYWNlKCkgeworCQl9OworCQlyZXR1cm4gdmFyU3ViamVjdEZhY2U7CisJfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NoYW5nZVNpZ25hdHVyZS9BZGRFeGNlcHRpb24uamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jaGFuZ2VTaWduYXR1cmUvQWRkRXhjZXB0aW9uLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2Y1OTU0MgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jaGFuZ2VTaWduYXR1cmUvQWRkRXhjZXB0aW9uLmphdmEKQEAgLTAsMCArMSw4IEBACitjbGFzcyBUZXN0IHsKKyAgICB2b2lkIGZvbzxjYXJldD4gKCkgeworICAgIH0KKworICAgIHZvaWQgYmFyICgpIHsKKyAgICAgICAgZm9vKCk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NoYW5nZVNpZ25hdHVyZS9BZGRFeGNlcHRpb25fYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jaGFuZ2VTaWduYXR1cmUvQWRkRXhjZXB0aW9uX2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTdlYTg1NAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jaGFuZ2VTaWduYXR1cmUvQWRkRXhjZXB0aW9uX2FmdGVyLmphdmEKQEAgLTAsMCArMSwxMiBAQAorY2xhc3MgVGVzdCB7CisgICAgdm9pZCBmb28gKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgfQorCisgICAgdm9pZCBiYXIgKCkgeworICAgICAgICB0cnkgeworICAgICAgICAgICAgZm9vKCk7CisgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICBlLnByaW50U3RhY2tUcmFjZSgpOyAgLy9UbyBjaGFuZ2UgYm9keSBvZiBjYXRjaCBzdGF0ZW1lbnQgdXNlIEZpbGUgfCBTZXR0aW5ncyB8IEZpbGUgVGVtcGxhdGVzLgorICAgICAgICB9CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NoYW5nZVNpZ25hdHVyZS9BZGRSdW50aW1lRXhjZXB0aW9uLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY2hhbmdlU2lnbmF0dXJlL0FkZFJ1bnRpbWVFeGNlcHRpb24uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZjU5NTQyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NoYW5nZVNpZ25hdHVyZS9BZGRSdW50aW1lRXhjZXB0aW9uLmphdmEKQEAgLTAsMCArMSw4IEBACitjbGFzcyBUZXN0IHsKKyAgICB2b2lkIGZvbzxjYXJldD4gKCkgeworICAgIH0KKworICAgIHZvaWQgYmFyICgpIHsKKyAgICAgICAgZm9vKCk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NoYW5nZVNpZ25hdHVyZS9BZGRSdW50aW1lRXhjZXB0aW9uX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY2hhbmdlU2lnbmF0dXJlL0FkZFJ1bnRpbWVFeGNlcHRpb25fYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZWM4NDYwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NoYW5nZVNpZ25hdHVyZS9BZGRSdW50aW1lRXhjZXB0aW9uX2FmdGVyLmphdmEKQEAgLTAsMCArMSw4IEBACitjbGFzcyBUZXN0IHsKKyAgICB2b2lkIGZvbyAoKSB0aHJvd3MgUnVudGltZUV4Y2VwdGlvbiB7CisgICAgfQorCisgICAgdm9pZCBiYXIgKCkgeworICAgICAgICBmb28oKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY2hhbmdlU2lnbmF0dXJlL0FscmVhZHlIYW5kbGVkLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY2hhbmdlU2lnbmF0dXJlL0FscmVhZHlIYW5kbGVkLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDNlY2RkYQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jaGFuZ2VTaWduYXR1cmUvQWxyZWFkeUhhbmRsZWQuamF2YQpAQCAtMCwwICsxLDggQEAKK2NsYXNzIFRlc3QgeworICAgIHZvaWQgZm9vPGNhcmV0PiAoKSB7CisgICAgfQorCisgICAgdm9pZCBiYXIgKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgICAgIGZvbygpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jaGFuZ2VTaWduYXR1cmUvQWxyZWFkeUhhbmRsZWRfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jaGFuZ2VTaWduYXR1cmUvQWxyZWFkeUhhbmRsZWRfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMmYxYTc1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NoYW5nZVNpZ25hdHVyZS9BbHJlYWR5SGFuZGxlZF9hZnRlci5qYXZhCkBAIC0wLDAgKzEsOCBAQAorY2xhc3MgVGVzdCB7CisgICAgdm9pZCBmb28gKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgfQorCisgICAgdm9pZCBiYXIgKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgICAgIGZvbygpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jaGFuZ2VTaWduYXR1cmUvQ29uc3RydWN0b3JFeGNlcHRpb24uamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jaGFuZ2VTaWduYXR1cmUvQ29uc3RydWN0b3JFeGNlcHRpb24uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42OTBmYjM4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NoYW5nZVNpZ25hdHVyZS9Db25zdHJ1Y3RvckV4Y2VwdGlvbi5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKK2NsYXNzIEJhc2UgeworICBwdWJsaWMgQjxjYXJldD5hc2UoKSB7CisgIH0KK30KKworY2xhc3MgQUFBIGV4dGVuZHMgQmFzZSB7CisgIHB1YmxpYyBBQUEoKSB7CisgICAgc3VwZXIoKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jaGFuZ2VTaWduYXR1cmUvQ29uc3RydWN0b3JFeGNlcHRpb25fYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jaGFuZ2VTaWduYXR1cmUvQ29uc3RydWN0b3JFeGNlcHRpb25fYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MjI0MDNjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NoYW5nZVNpZ25hdHVyZS9Db25zdHJ1Y3RvckV4Y2VwdGlvbl9hZnRlci5qYXZhCkBAIC0wLDAgKzEsMTIgQEAKK2ltcG9ydCBqYXZhLmlvLklPRXhjZXB0aW9uOworCitjbGFzcyBCYXNlIHsKKyAgcHVibGljIEJhc2UoKSB0aHJvd3MgSU9FeGNlcHRpb24geworICB9Cit9CisKK2NsYXNzIEFBQSBleHRlbmRzIEJhc2UgeworICBwdWJsaWMgQUFBKCkgeworICAgIHN1cGVyKCk7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY2hhbmdlU2lnbmF0dXJlL0NvdmFyaWFudFJldHVyblR5cGUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jaGFuZ2VTaWduYXR1cmUvQ292YXJpYW50UmV0dXJuVHlwZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ0OTg3NTUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY2hhbmdlU2lnbmF0dXJlL0NvdmFyaWFudFJldHVyblR5cGUuamF2YQpAQCAtMCwwICsxLDE5IEBACitpbXBvcnQgamF2YS51dGlsLio7CisKK2NsYXNzIEEgeworICAgIExpc3QgPGNhcmV0Pm1ldGhvZCgpIHsgfQorfQorCitjbGFzcyBRIGltcGxlbWVudHMgTGlzdCwgUnVubmFibGUgIHsKK30KKworY2xhc3MgWiBpbXBsZW1lbnRzIExpc3QgeworfQorCitjbGFzcyBCIGV4dGVuZHMgQSB7CisgICAgUSBtZXRob2QoKSB7IH0KK30KKworY2xhc3MgQyBleHRlbmRzIEEgeworICAgIFogbWV0aG9kKCkgeyB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NoYW5nZVNpZ25hdHVyZS9Db3ZhcmlhbnRSZXR1cm5UeXBlX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY2hhbmdlU2lnbmF0dXJlL0NvdmFyaWFudFJldHVyblR5cGVfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yODlmYzk5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NoYW5nZVNpZ25hdHVyZS9Db3ZhcmlhbnRSZXR1cm5UeXBlX2FmdGVyLmphdmEKQEAgLTAsMCArMSwxOSBAQAoraW1wb3J0IGphdmEudXRpbC4qOworCitjbGFzcyBBIHsKKyAgICBSdW5uYWJsZSBtZXRob2QoKSB7IH0KK30KKworY2xhc3MgUSBpbXBsZW1lbnRzIExpc3QsIFJ1bm5hYmxlICB7Cit9CisKK2NsYXNzIFogaW1wbGVtZW50cyBMaXN0IHsKK30KKworY2xhc3MgQiBleHRlbmRzIEEgeworICAgIFEgbWV0aG9kKCkgeyB9Cit9CisKK2NsYXNzIEMgZXh0ZW5kcyBBIHsKKyAgICBSdW5uYWJsZSBtZXRob2QoKSB7IH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY2hhbmdlU2lnbmF0dXJlL0RlZmF1bHRDb25zdHJ1Y3Rvci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NoYW5nZVNpZ25hdHVyZS9EZWZhdWx0Q29uc3RydWN0b3IuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMzMwNmJkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NoYW5nZVNpZ25hdHVyZS9EZWZhdWx0Q29uc3RydWN0b3IuamF2YQpAQCAtMCwwICsxLDExIEBACitjbGFzcyBDIHsKKyAgICBDPGNhcmV0PigpIHsKKyAgICB9Cit9CisKK2NsYXNzIEMxIGV4dGVuZHMgQyB7CisgICAgaW50IGk7CisgICAgQzEoaW50IGksIGludCBrKSB7CisgICAgICAgIHRoaXMuaSA9IGk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jaGFuZ2VTaWduYXR1cmUvRGVmYXVsdENvbnN0cnVjdG9yX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY2hhbmdlU2lnbmF0dXJlL0RlZmF1bHRDb25zdHJ1Y3Rvcl9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVhY2M4NmMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY2hhbmdlU2lnbmF0dXJlL0RlZmF1bHRDb25zdHJ1Y3Rvcl9hZnRlci5qYXZhCkBAIC0wLDAgKzEsMTIgQEAKK2NsYXNzIEMgeworICAgIEMoaW50IGopIHsKKyAgICB9Cit9CisKK2NsYXNzIEMxIGV4dGVuZHMgQyB7CisgICAgaW50IGk7CisgICAgQzEoaW50IGksIGludCBrKSB7CisgICAgICAgIHN1cGVyKDI3KTsKKyAgICAgICAgdGhpcy5pID0gaTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NoYW5nZVNpZ25hdHVyZS9FbnVtQ29uc3RydWN0b3IuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jaGFuZ2VTaWduYXR1cmUvRW51bUNvbnN0cnVjdG9yLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTA0N2YzMwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jaGFuZ2VTaWduYXR1cmUvRW51bUNvbnN0cnVjdG9yLmphdmEKQEAgLTAsMCArMSw3IEBACitlbnVtIEVuIHsKKyAgICBBIHt9LAorICAgIEIge30sCisgICAgQzsKKworICAgIDxjYXJldD5FbigpIHsgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jaGFuZ2VTaWduYXR1cmUvRW51bUNvbnN0cnVjdG9yX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY2hhbmdlU2lnbmF0dXJlL0VudW1Db25zdHJ1Y3Rvcl9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk2ZWMwY2EKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY2hhbmdlU2lnbmF0dXJlL0VudW1Db25zdHJ1Y3Rvcl9hZnRlci5qYXZhCkBAIC0wLDAgKzEsNyBAQAorZW51bSBFbiB7CisgICAgQSgxMCkge30sCisgICAgQigxMCkge30sCisgICAgQygxMCk7CisKKyAgICBFbihpbnQgaSkgeyB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NoYW5nZVNpZ25hdHVyZS9HZW5lcmF0ZURlbGVnYXRlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY2hhbmdlU2lnbmF0dXJlL0dlbmVyYXRlRGVsZWdhdGUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40OGIzZTRiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NoYW5nZVNpZ25hdHVyZS9HZW5lcmF0ZURlbGVnYXRlLmphdmEKQEAgLTAsMCArMSwxNiBAQAorY2xhc3MgQyB7CisgICAgdm9pZCA8Y2FyZXQ+bWV0aG9kKCkgeworICAgIH0KK30KKworY2xhc3MgQzEgZXh0ZW5kcyBDIHsKKyAgICB2b2lkIG1ldGhvZCgpIHsKKyAgICB9Cit9CisKK2NsYXNzIFVzYWdlIHsKKyAgICB7CisgICAgICAgIG5ldyBDKCkubWV0aG9kKCk7CisgICAgICAgIG5ldyBDMSgpLm1ldGhvZCgpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY2hhbmdlU2lnbmF0dXJlL0dlbmVyYXRlRGVsZWdhdGVDb25zdHJ1Y3Rvci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NoYW5nZVNpZ25hdHVyZS9HZW5lcmF0ZURlbGVnYXRlQ29uc3RydWN0b3IuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40OGNmYWEwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NoYW5nZVNpZ25hdHVyZS9HZW5lcmF0ZURlbGVnYXRlQ29uc3RydWN0b3IuamF2YQpAQCAtMCwwICsxLDEwIEBACitwdWJsaWMgY2xhc3MgQyB7CisgICAgcHVibGljIDxjYXJldD5DKGludCBpKSB7CisgICAgfQorfQorCitjbGFzcyBVc2FnZSB7CisgICAgeworICAgICAgICBDIGMgPSBuZXcgQygxMCk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jaGFuZ2VTaWduYXR1cmUvR2VuZXJhdGVEZWxlZ2F0ZUNvbnN0cnVjdG9yX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY2hhbmdlU2lnbmF0dXJlL0dlbmVyYXRlRGVsZWdhdGVDb25zdHJ1Y3Rvcl9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIyOTk3MDkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY2hhbmdlU2lnbmF0dXJlL0dlbmVyYXRlRGVsZWdhdGVDb25zdHJ1Y3Rvcl9hZnRlci5qYXZhCkBAIC0wLDAgKzEsMTQgQEAKK3B1YmxpYyBjbGFzcyBDIHsKKyAgICBwdWJsaWMgQyhpbnQgaSkgeworICAgICAgICB0aGlzKCk7CisgICAgfQorCisgICAgcHVibGljIEMoKSB7CisgICAgfQorfQorCitjbGFzcyBVc2FnZSB7CisgICAgeworICAgICAgICBDIGMgPSBuZXcgQygxMCk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jaGFuZ2VTaWduYXR1cmUvR2VuZXJhdGVEZWxlZ2F0ZURlZmF1bHRDb25zdHJ1Y3Rvci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NoYW5nZVNpZ25hdHVyZS9HZW5lcmF0ZURlbGVnYXRlRGVmYXVsdENvbnN0cnVjdG9yLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmMxNjBlZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jaGFuZ2VTaWduYXR1cmUvR2VuZXJhdGVEZWxlZ2F0ZURlZmF1bHRDb25zdHJ1Y3Rvci5qYXZhCkBAIC0wLDAgKzEsMTUgQEAKK3B1YmxpYyBjbGFzcyBDIHsKKyAgICBwdWJsaWMgPGNhcmV0PkMoKSB7CisgICAgfQorfQorCitwdWJsaWMgY2xhc3MgQzEgZXh0ZW5kcyBDIHsKKyAgICBwdWJsaWMgQzEoU3RyaW5nIHMpIHsKKyAgICB9Cit9CisKK2NsYXNzIFVzYWdlIHsKKyAgICB7CisgICAgICAgIEMgYyA9IG5ldyBDKCk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jaGFuZ2VTaWduYXR1cmUvR2VuZXJhdGVEZWxlZ2F0ZURlZmF1bHRDb25zdHJ1Y3Rvcl9hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NoYW5nZVNpZ25hdHVyZS9HZW5lcmF0ZURlbGVnYXRlRGVmYXVsdENvbnN0cnVjdG9yX2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzM1MmI4MQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jaGFuZ2VTaWduYXR1cmUvR2VuZXJhdGVEZWxlZ2F0ZURlZmF1bHRDb25zdHJ1Y3Rvcl9hZnRlci5qYXZhCkBAIC0wLDAgKzEsMTkgQEAKK3B1YmxpYyBjbGFzcyBDIHsKKyAgICBwdWJsaWMgQygpIHsKKyAgICAgICAgdGhpcygyNyk7CisgICAgfQorCisgICAgcHVibGljIEMoaW50IGkpIHsKKyAgICB9Cit9CisKK3B1YmxpYyBjbGFzcyBDMSBleHRlbmRzIEMgeworICAgIHB1YmxpYyBDMShTdHJpbmcgcykgeworICAgIH0KK30KKworY2xhc3MgVXNhZ2UgeworICAgIHsKKyAgICAgICAgQyBjID0gbmV3IEMoKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NoYW5nZVNpZ25hdHVyZS9HZW5lcmF0ZURlbGVnYXRlRm9yQWJzdHJhY3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jaGFuZ2VTaWduYXR1cmUvR2VuZXJhdGVEZWxlZ2F0ZUZvckFic3RyYWN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDZiNDhmNQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jaGFuZ2VTaWduYXR1cmUvR2VuZXJhdGVEZWxlZ2F0ZUZvckFic3RyYWN0LmphdmEKQEAgLTAsMCArMSw4IEBACithYnN0cmFjdCBjbGFzcyBDIHsKKyAgICBhYnN0cmFjdCB2b2lkIDxjYXJldD5tZXRob2QoKTsKK30KKworY2xhc3MgQzEgZXh0ZW5kcyBDIHsKKyAgICB2b2lkIG1ldGhvZCgpIHsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NoYW5nZVNpZ25hdHVyZS9HZW5lcmF0ZURlbGVnYXRlRm9yQWJzdHJhY3RfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jaGFuZ2VTaWduYXR1cmUvR2VuZXJhdGVEZWxlZ2F0ZUZvckFic3RyYWN0X2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzIzZTc1NgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jaGFuZ2VTaWduYXR1cmUvR2VuZXJhdGVEZWxlZ2F0ZUZvckFic3RyYWN0X2FmdGVyLmphdmEKQEAgLTAsMCArMSwxMiBAQAorYWJzdHJhY3QgY2xhc3MgQyB7CisgICAgdm9pZCBtZXRob2QoKSB7CisgICAgICAgIG1ldGhvZCgyNyk7CisgICAgfQorCisgICAgYWJzdHJhY3Qgdm9pZCA8Y2FyZXQ+bWV0aG9kKGludCBpKTsKK30KKworY2xhc3MgQzEgZXh0ZW5kcyBDIHsKKyAgICB2b2lkIG1ldGhvZChpbnQgaSkgeworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY2hhbmdlU2lnbmF0dXJlL0dlbmVyYXRlRGVsZWdhdGVXaXRoUGFyYW1ldGVyc1Jlb3JkZXJpbmcuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jaGFuZ2VTaWduYXR1cmUvR2VuZXJhdGVEZWxlZ2F0ZVdpdGhQYXJhbWV0ZXJzUmVvcmRlcmluZy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlkYWEzMWQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY2hhbmdlU2lnbmF0dXJlL0dlbmVyYXRlRGVsZWdhdGVXaXRoUGFyYW1ldGVyc1Jlb3JkZXJpbmcuamF2YQpAQCAtMCwwICsxLDE4IEBACitjbGFzcyBDIHsKKyAgICB2b2lkIDxjYXJldD5tZXRob2QoaW50IGksIFN0cmluZyBzKSB7CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiaSA9ICIgKyBpICsgIiBzID0gIiArIHMpOworICAgIH0KK30KKworY2xhc3MgQzEgZXh0ZW5kcyBDIHsKKyAgICB2b2lkIG1ldGhvZChpbnQgaSwgU3RyaW5nIHMpIHsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJpID0gIiArIGkgKyAiIHMgPSAiICsgcyk7CisgICAgfQorfQorCitjbGFzcyBVc2FnZSB7CisgICAgeworICAgICAgICBuZXcgQygpLm1ldGhvZCgxLCBudWxsKTsKKyAgICAgICAgbmV3IEMxKCkubWV0aG9kKDEsIG51bGwpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY2hhbmdlU2lnbmF0dXJlL0dlbmVyYXRlRGVsZWdhdGVXaXRoUGFyYW1ldGVyc1Jlb3JkZXJpbmdfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jaGFuZ2VTaWduYXR1cmUvR2VuZXJhdGVEZWxlZ2F0ZVdpdGhQYXJhbWV0ZXJzUmVvcmRlcmluZ19hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZhYjlkYzIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY2hhbmdlU2lnbmF0dXJlL0dlbmVyYXRlRGVsZWdhdGVXaXRoUGFyYW1ldGVyc1Jlb3JkZXJpbmdfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDIyIEBACitjbGFzcyBDIHsKKyAgICB2b2lkIG1ldGhvZChpbnQgaSwgU3RyaW5nIHMpIHsKKyAgICAgICAgbWV0aG9kKHMsICdhJywgaSk7CisgICAgfQorCisgICAgdm9pZCBtZXRob2QoU3RyaW5nIHMsIGNoYXIgYywgaW50IGopIHsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJpID0gIiArIGogKyAiIHMgPSAiICsgcyk7CisgICAgfQorfQorCitjbGFzcyBDMSBleHRlbmRzIEMgeworICAgIHZvaWQgbWV0aG9kKFN0cmluZyBzLCBjaGFyIGMsIGludCBqKSB7CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiaSA9ICIgKyBqICsgIiBzID0gIiArIHMpOworICAgIH0KK30KKworY2xhc3MgVXNhZ2UgeworICAgIHsKKyAgICAgICAgbmV3IEMoKS5tZXRob2QoMSwgbnVsbCk7CisgICAgICAgIG5ldyBDMSgpLm1ldGhvZCgxLCBudWxsKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NoYW5nZVNpZ25hdHVyZS9HZW5lcmF0ZURlbGVnYXRlV2l0aFJldHVybi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NoYW5nZVNpZ25hdHVyZS9HZW5lcmF0ZURlbGVnYXRlV2l0aFJldHVybi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVjZjk0YWQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY2hhbmdlU2lnbmF0dXJlL0dlbmVyYXRlRGVsZWdhdGVXaXRoUmV0dXJuLmphdmEKQEAgLTAsMCArMSw5IEBACitjbGFzcyBDIHsKKyAgICBTdHJpbmcgPGNhcmV0Pm1ldGhvZCgpIHsKKyAgICB9Cit9CisKK2NsYXNzIEMxIGV4dGVuZHMgQyB7CisgICAgU3RyaW5nIG1ldGhvZCgpIHsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NoYW5nZVNpZ25hdHVyZS9HZW5lcmF0ZURlbGVnYXRlV2l0aFJldHVybl9hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NoYW5nZVNpZ25hdHVyZS9HZW5lcmF0ZURlbGVnYXRlV2l0aFJldHVybl9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg2ZWQ5YzcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY2hhbmdlU2lnbmF0dXJlL0dlbmVyYXRlRGVsZWdhdGVXaXRoUmV0dXJuX2FmdGVyLmphdmEKQEAgLTAsMCArMSwxMyBAQAorY2xhc3MgQyB7CisgICAgU3RyaW5nIG1ldGhvZCgpIHsKKyAgICAgICAgcmV0dXJuIG1ldGhvZCgyNyk7CisgICAgfQorCisgICAgU3RyaW5nIDxjYXJldD5tZXRob2QoaW50IGkpIHsKKyAgICB9Cit9CisKK2NsYXNzIEMxIGV4dGVuZHMgQyB7CisgICAgU3RyaW5nIG1ldGhvZChpbnQgaSkgeworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY2hhbmdlU2lnbmF0dXJlL0dlbmVyYXRlRGVsZWdhdGVfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jaGFuZ2VTaWduYXR1cmUvR2VuZXJhdGVEZWxlZ2F0ZV9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE4ZmJhNjgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY2hhbmdlU2lnbmF0dXJlL0dlbmVyYXRlRGVsZWdhdGVfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDIwIEBACitjbGFzcyBDIHsKKyAgICB2b2lkIG1ldGhvZCgpIHsKKyAgICAgICAgbWV0aG9kKDI3KTsKKyAgICB9CisKKyAgICB2b2lkIG1ldGhvZChpbnQgaSkgeworICAgIH0KK30KKworY2xhc3MgQzEgZXh0ZW5kcyBDIHsKKyAgICB2b2lkIG1ldGhvZChpbnQgaSkgeworICAgIH0KK30KKworY2xhc3MgVXNhZ2UgeworICAgIHsKKyAgICAgICAgbmV3IEMoKS5tZXRob2QoKTsKKyAgICAgICAgbmV3IEMxKCkubWV0aG9kKCk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jaGFuZ2VTaWduYXR1cmUvR2VuZXJpY1R5cGVzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY2hhbmdlU2lnbmF0dXJlL0dlbmVyaWNUeXBlcy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc3OTdjYjcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY2hhbmdlU2lnbmF0dXJlL0dlbmVyaWNUeXBlcy5qYXZhCkBAIC0wLDAgKzEsNyBAQAorY2xhc3MgQzxUPiB7CisgICAgdm9pZCBtZXRob2Q8Y2FyZXQ+KCk7Cit9CisKK2NsYXNzIEMxIGV4dGVuZHMgQzxTdHJpbmc+IHsKKyAgICB2b2lkIG1ldGhvZCgpOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jaGFuZ2VTaWduYXR1cmUvR2VuZXJpY1R5cGVzSW5PbGRQYXJhbWV0ZXJzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY2hhbmdlU2lnbmF0dXJlL0dlbmVyaWNUeXBlc0luT2xkUGFyYW1ldGVycy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZiZGRmMTIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY2hhbmdlU2lnbmF0dXJlL0dlbmVyaWNUeXBlc0luT2xkUGFyYW1ldGVycy5qYXZhCkBAIC0wLDAgKzEsMTEgQEAKK2NsYXNzIEM8VD4geworICAgIHZvaWQgcHV0PGNhcmV0PihPYmplY3QgbykgeworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4obyk7CisgICAgfQorfQorCitjbGFzcyBDU3RyaW5nIGV4dGVuZHMgQzxTdHJpbmc+IHsKKyAgICB2b2lkIHB1dChPYmplY3QgbykgeworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4obysiVGV4dCIpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY2hhbmdlU2lnbmF0dXJlL0dlbmVyaWNUeXBlc0luT2xkUGFyYW1ldGVyc19hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NoYW5nZVNpZ25hdHVyZS9HZW5lcmljVHlwZXNJbk9sZFBhcmFtZXRlcnNfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45OTI5MDhhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NoYW5nZVNpZ25hdHVyZS9HZW5lcmljVHlwZXNJbk9sZFBhcmFtZXRlcnNfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDExIEBACitjbGFzcyBDPFQ+IHsKKyAgICB2b2lkIHB1dChUIHQpIHsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKHQpOworICAgIH0KK30KKworY2xhc3MgQ1N0cmluZyBleHRlbmRzIEM8U3RyaW5nPiB7CisgICAgdm9pZCBwdXQoU3RyaW5nIHQpIHsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKHQgKyJUZXh0Iik7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jaGFuZ2VTaWduYXR1cmUvR2VuZXJpY1R5cGVzX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY2hhbmdlU2lnbmF0dXJlL0dlbmVyaWNUeXBlc19hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdhNjFlMzYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY2hhbmdlU2lnbmF0dXJlL0dlbmVyaWNUeXBlc19hZnRlci5qYXZhCkBAIC0wLDAgKzEsNyBAQAorY2xhc3MgQzxUPiB7CisgICAgVCBtZXRob2QoVCB4LCBDPFQ+IHkpOworfQorCitjbGFzcyBDMSBleHRlbmRzIEM8U3RyaW5nPiB7CisgICAgU3RyaW5nIG1ldGhvZChTdHJpbmcgeCwgQzxTdHJpbmc+IHkpOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jaGFuZ2VTaWduYXR1cmUvSW50cm9kdWNlUGFyYW1ldGVyV2l0aERlZmF1bHRWYWx1ZUluSGllcmFyY2h5LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY2hhbmdlU2lnbmF0dXJlL0ludHJvZHVjZVBhcmFtZXRlcldpdGhEZWZhdWx0VmFsdWVJbkhpZXJhcmNoeS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIzMzJjZTcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY2hhbmdlU2lnbmF0dXJlL0ludHJvZHVjZVBhcmFtZXRlcldpdGhEZWZhdWx0VmFsdWVJbkhpZXJhcmNoeS5qYXZhCkBAIC0wLDAgKzEsOSBAQAorY2xhc3MgRm9vIHsKKyAgIHZvaWQgZjxjYXJldD5vbygpe30KKworICAgY2xhc3MgQSBleHRlbmRzIEZvbyB7CisgICAgIHZvaWQgZm9vKCl7CisgICAgICAgc3VwZXIuZm9vKCk7CisgICAgIH0KKyAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY2hhbmdlU2lnbmF0dXJlL0ludHJvZHVjZVBhcmFtZXRlcldpdGhEZWZhdWx0VmFsdWVJbkhpZXJhcmNoeV9hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NoYW5nZVNpZ25hdHVyZS9JbnRyb2R1Y2VQYXJhbWV0ZXJXaXRoRGVmYXVsdFZhbHVlSW5IaWVyYXJjaHlfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wOGNmNDZmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NoYW5nZVNpZ25hdHVyZS9JbnRyb2R1Y2VQYXJhbWV0ZXJXaXRoRGVmYXVsdFZhbHVlSW5IaWVyYXJjaHlfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDkgQEAKK2NsYXNzIEZvbyB7CisgICB2b2lkIGZvbyhpbnQgaSl7fQorCisgICBjbGFzcyBBIGV4dGVuZHMgRm9vIHsKKyAgICAgdm9pZCBmb28oaW50IGkpeworICAgICAgIHN1cGVyLmZvbyhpKTsKKyAgICAgfQorICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jaGFuZ2VTaWduYXR1cmUvTWV0aG9kUGFyYW1ldGVyc0FsaWdubWVudEFmdGVyTWV0aG9kTmFtZUNoYW5nZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NoYW5nZVNpZ25hdHVyZS9NZXRob2RQYXJhbWV0ZXJzQWxpZ25tZW50QWZ0ZXJNZXRob2ROYW1lQ2hhbmdlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGUxYjRmMgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jaGFuZ2VTaWduYXR1cmUvTWV0aG9kUGFyYW1ldGVyc0FsaWdubWVudEFmdGVyTWV0aG9kTmFtZUNoYW5nZS5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKK3B1YmxpYyBjbGFzcyBUZXN0IHsKKyAgcHVibGljIHZvaWQgPGNhcmV0PnRlc3QxMjMoaW50IGksCisgICAgICAgICAgICAgICAgICAgICAgaW50IGopIHsKKyAgfQorCisgIHB1YmxpYyB2b2lkIGZvbygpIHsKKyAgICB0ZXN0MTIzKDEsCisgICAgICAgICAgICAyKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jaGFuZ2VTaWduYXR1cmUvTWV0aG9kUGFyYW1ldGVyc0FsaWdubWVudEFmdGVyTWV0aG9kTmFtZUNoYW5nZV9hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NoYW5nZVNpZ25hdHVyZS9NZXRob2RQYXJhbWV0ZXJzQWxpZ25tZW50QWZ0ZXJNZXRob2ROYW1lQ2hhbmdlX2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDllNjI0NmMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY2hhbmdlU2lnbmF0dXJlL01ldGhvZFBhcmFtZXRlcnNBbGlnbm1lbnRBZnRlck1ldGhvZE5hbWVDaGFuZ2VfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDEwIEBACitwdWJsaWMgY2xhc3MgVGVzdCB7CisgIHB1YmxpYyB2b2lkIHRlc3QxMjNhc2QoaW50IGksCisgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGopIHsKKyAgfQorCisgIHB1YmxpYyB2b2lkIGZvbygpIHsKKyAgICB0ZXN0MTIzYXNkKDEsCisgICAgICAgICAgICAgICAyKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jaGFuZ2VTaWduYXR1cmUvTWV0aG9kUGFyYW1ldGVyc0FsaWdubWVudEFmdGVyTWV0aG9kUmV0dXJuVHlwZUNoYW5nZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NoYW5nZVNpZ25hdHVyZS9NZXRob2RQYXJhbWV0ZXJzQWxpZ25tZW50QWZ0ZXJNZXRob2RSZXR1cm5UeXBlQ2hhbmdlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzM0ZDg3MQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jaGFuZ2VTaWduYXR1cmUvTWV0aG9kUGFyYW1ldGVyc0FsaWdubWVudEFmdGVyTWV0aG9kUmV0dXJuVHlwZUNoYW5nZS5qYXZhCkBAIC0wLDAgKzEsNiBAQAorcHVibGljIGNsYXNzIFRlc3QgeworICBwdWJsaWMgU3RyaW5nIDxjYXJldD50ZXN0MTIzKGludCBpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBqKSB7CisgICAgcmV0dXJuIG51bGw7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY2hhbmdlU2lnbmF0dXJlL01ldGhvZFBhcmFtZXRlcnNBbGlnbm1lbnRBZnRlck1ldGhvZFJldHVyblR5cGVDaGFuZ2VfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jaGFuZ2VTaWduYXR1cmUvTWV0aG9kUGFyYW1ldGVyc0FsaWdubWVudEFmdGVyTWV0aG9kUmV0dXJuVHlwZUNoYW5nZV9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYzY2ViOTkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY2hhbmdlU2lnbmF0dXJlL01ldGhvZFBhcmFtZXRlcnNBbGlnbm1lbnRBZnRlck1ldGhvZFJldHVyblR5cGVDaGFuZ2VfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDYgQEAKK3B1YmxpYyBjbGFzcyBUZXN0IHsKKyAgcHVibGljIEV4Y2VwdGlvbiB0ZXN0MTIzKGludCBpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGopIHsKKyAgICByZXR1cm4gbnVsbDsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jaGFuZ2VTaWduYXR1cmUvTWV0aG9kUGFyYW1ldGVyc0FsaWdubWVudEFmdGVyTWV0aG9kVmlzaWJpbGl0eUNoYW5nZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NoYW5nZVNpZ25hdHVyZS9NZXRob2RQYXJhbWV0ZXJzQWxpZ25tZW50QWZ0ZXJNZXRob2RWaXNpYmlsaXR5Q2hhbmdlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzkyZjJhOAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jaGFuZ2VTaWduYXR1cmUvTWV0aG9kUGFyYW1ldGVyc0FsaWdubWVudEFmdGVyTWV0aG9kVmlzaWJpbGl0eUNoYW5nZS5qYXZhCkBAIC0wLDAgKzEsNSBAQAorcHVibGljIGNsYXNzIFRlc3QgeworICBwdWJsaWMgdm9pZCA8Y2FyZXQ+dGVzdDEyMyhpbnQgaSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGopIHsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jaGFuZ2VTaWduYXR1cmUvTWV0aG9kUGFyYW1ldGVyc0FsaWdubWVudEFmdGVyTWV0aG9kVmlzaWJpbGl0eUNoYW5nZV9hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NoYW5nZVNpZ25hdHVyZS9NZXRob2RQYXJhbWV0ZXJzQWxpZ25tZW50QWZ0ZXJNZXRob2RWaXNpYmlsaXR5Q2hhbmdlX2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzcwNDA0MwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jaGFuZ2VTaWduYXR1cmUvTWV0aG9kUGFyYW1ldGVyc0FsaWdubWVudEFmdGVyTWV0aG9kVmlzaWJpbGl0eUNoYW5nZV9hZnRlci5qYXZhCkBAIC0wLDAgKzEsNSBAQAorcHVibGljIGNsYXNzIFRlc3QgeworICBwcm90ZWN0ZWQgdm9pZCB0ZXN0MTIzKGludCBpLAorICAgICAgICAgICAgICAgICAgICAgICAgIGludCBqKSB7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY2hhbmdlU2lnbmF0dXJlL1BhcmFtSmF2YWRvYy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NoYW5nZVNpZ25hdHVyZS9QYXJhbUphdmFkb2MuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMWU1Njg4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NoYW5nZVNpZ25hdHVyZS9QYXJhbUphdmFkb2MuamF2YQpAQCAtMCwwICsxLDE0IEBACitjbGFzcyBYIHsKKworICAgIC8qKgorICAgICAqIEhhcyBhIG1ldGhvZCBjYWxsZWQge0BsaW5rICNteW1ldGhvZChpbnQsIGludCl9LgorICAgICAqLworICAgIHB1YmxpYyBjbGFzcyBUZXN0UmVmYWN0b3JMaW5rIHsKKyAgICAgIC8qKgorICAgICAgICogQHJldHVybiBub3RoaW5nCisgICAgICAgKiBAcGFyYW0geSB5cGFyYW0KKyAgICAgICAqIEBwYXJhbSB6IHpwYXJhbQorICAgICAgICovCisgICAgICAgIHB1YmxpYyB2b2lkIDxjYXJldD5teW1ldGhvZChpbnQgeSwgaW50IHopIHsgfQorICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jaGFuZ2VTaWduYXR1cmUvUGFyYW1KYXZhZG9jMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NoYW5nZVNpZ25hdHVyZS9QYXJhbUphdmFkb2MxLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODk0MzI1YgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jaGFuZ2VTaWduYXR1cmUvUGFyYW1KYXZhZG9jMS5qYXZhCkBAIC0wLDAgKzEsMTMgQEAKK2NsYXNzIFggeworCisgICAgLyoqCisgICAgICogSGFzIGEgbWV0aG9kIGNhbGxlZCB7QGxpbmsgI215bWV0aG9kKGludCl9LgorICAgICAqLworICAgIHB1YmxpYyBjbGFzcyBUZXN0UmVmYWN0b3JMaW5rIHsKKyAgICAgIC8qKgorICAgICAgICogQHJldHVybiBub3RoaW5nCisgICAgICAgKiBAcGFyYW0geSB5cGFyYW0KKyAgICAgICAqLworICAgICAgICBwdWJsaWMgdm9pZCA8Y2FyZXQ+bXltZXRob2QoaW50IHkpIHsgfQorICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jaGFuZ2VTaWduYXR1cmUvUGFyYW1KYXZhZG9jMV9hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NoYW5nZVNpZ25hdHVyZS9QYXJhbUphdmFkb2MxX2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzE0ZmZkNgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jaGFuZ2VTaWduYXR1cmUvUGFyYW1KYXZhZG9jMV9hZnRlci5qYXZhCkBAIC0wLDAgKzEsMTMgQEAKK2NsYXNzIFggeworCisgICAgLyoqCisgICAgICogSGFzIGEgbWV0aG9kIGNhbGxlZCB7QGxpbmsgI215bWV0aG9kKGJvb2xlYW4pfS4KKyAgICAgKi8KKyAgICBwdWJsaWMgY2xhc3MgVGVzdFJlZmFjdG9yTGluayB7CisgICAgICAvKioKKyAgICAgICAqIEByZXR1cm4gbm90aGluZworICAgICAgICogQHBhcmFtIHogeXBhcmFtCisgICAgICAgKi8KKyAgICAgICAgcHVibGljIHZvaWQgbXltZXRob2QoYm9vbGVhbiB6KSB7IH0KKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY2hhbmdlU2lnbmF0dXJlL1BhcmFtSmF2YWRvYzIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jaGFuZ2VTaWduYXR1cmUvUGFyYW1KYXZhZG9jMi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNlNDU5YWIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY2hhbmdlU2lnbmF0dXJlL1BhcmFtSmF2YWRvYzIuamF2YQpAQCAtMCwwICsxLDEyIEBACitjbGFzcyBYIHsKKworICAgIC8qKgorICAgICAqIEhhcyBhIG1ldGhvZCBjYWxsZWQge0BsaW5rICNteW1ldGhvZChib29sZWFuKX0uCisgICAgICovCisgICAgcHVibGljIGNsYXNzIFRlc3RSZWZhY3RvckxpbmsgeworICAgICAgLyoqCisgICAgICAgKiBAcGFyYW0gYSBhcGFyYW0KKyAgICAgICAqLworICAgICAgICBwdWJsaWMgdm9pZCA8Y2FyZXQ+bXltZXRob2QoYm9vbGVhbiBhKSB7IH0KKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY2hhbmdlU2lnbmF0dXJlL1BhcmFtSmF2YWRvYzJfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jaGFuZ2VTaWduYXR1cmUvUGFyYW1KYXZhZG9jMl9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAwMjgwODgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY2hhbmdlU2lnbmF0dXJlL1BhcmFtSmF2YWRvYzJfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDEzIEBACitjbGFzcyBYIHsKKworICAgIC8qKgorICAgICAqIEhhcyBhIG1ldGhvZCBjYWxsZWQge0BsaW5rICNteW1ldGhvZChib29sZWFuLCBib29sZWFuKX0uCisgICAgICovCisgICAgcHVibGljIGNsYXNzIFRlc3RSZWZhY3RvckxpbmsgeworICAgICAgLyoqCisgICAgICAgKiBAcGFyYW0gegorICAgICAgICogQHBhcmFtIGEgYXBhcmFtCisgICAgICAgKi8KKyAgICAgICAgcHVibGljIHZvaWQgbXltZXRob2QoYm9vbGVhbiB6LCBib29sZWFuIGEpIHsgfQorICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jaGFuZ2VTaWduYXR1cmUvUGFyYW1KYXZhZG9jX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY2hhbmdlU2lnbmF0dXJlL1BhcmFtSmF2YWRvY19hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZlOTdkODAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY2hhbmdlU2lnbmF0dXJlL1BhcmFtSmF2YWRvY19hZnRlci5qYXZhCkBAIC0wLDAgKzEsMTQgQEAKK2NsYXNzIFggeworCisgICAgLyoqCisgICAgICogSGFzIGEgbWV0aG9kIGNhbGxlZCB7QGxpbmsgI215bWV0aG9kKGludCwgaW50KX0uCisgICAgICovCisgICAgcHVibGljIGNsYXNzIFRlc3RSZWZhY3RvckxpbmsgeworICAgICAgLyoqCisgICAgICAgKiBAcmV0dXJuIG5vdGhpbmcKKyAgICAgICAqIEBwYXJhbSB6IHpwYXJhbQorICAgICAgICogQHBhcmFtIHkgeXBhcmFtCisgICAgICAgKi8KKyAgICAgICAgcHVibGljIHZvaWQgbXltZXRob2QoaW50IHosIGludCB5KSB7IH0KKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY2hhbmdlU2lnbmF0dXJlL1BhcmFtTmFtZU5vQ29uZmxpY3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jaGFuZ2VTaWduYXR1cmUvUGFyYW1OYW1lTm9Db25mbGljdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE5OGUzNzYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY2hhbmdlU2lnbmF0dXJlL1BhcmFtTmFtZU5vQ29uZmxpY3QuamF2YQpAQCAtMCwwICsxLDExIEBACitjbGFzcyBEIHsKKyAgICB2b2lkIGY8Y2FyZXQ+b28oT2JqZWN0IG8pe30KK30KKworY2xhc3MgREltcGwgZXh0ZW5kcyBEIHsKKyAgICB2b2lkIGZvbyhPYmplY3QgbzEpIHsKKyAgICAgICAgc3VwZXIuZm9vKG8xKTsKKyAgICAgICAgaW50IG8gPSAwOworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4obyk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jaGFuZ2VTaWduYXR1cmUvUGFyYW1OYW1lTm9Db25mbGljdF9hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NoYW5nZVNpZ25hdHVyZS9QYXJhbU5hbWVOb0NvbmZsaWN0X2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmIyOTQ2NgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jaGFuZ2VTaWduYXR1cmUvUGFyYW1OYW1lTm9Db25mbGljdF9hZnRlci5qYXZhCkBAIC0wLDAgKzEsMTEgQEAKK2NsYXNzIEQgeworICAgIHZvaWQgZm9vKE9iamVjdCBvLCBib29sZWFuIGIpe30KK30KKworY2xhc3MgREltcGwgZXh0ZW5kcyBEIHsKKyAgICB2b2lkIGZvbyhPYmplY3QgbzEsIGJvb2xlYW4gYikgeworICAgICAgICBzdXBlci5mb28obzEsIGIpOworICAgICAgICBpbnQgbyA9IDA7CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihvKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NoYW5nZVNpZ25hdHVyZS9QYXJhbU5hbWVTYW1lQXNGaWVsZE5hbWUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jaGFuZ2VTaWduYXR1cmUvUGFyYW1OYW1lU2FtZUFzRmllbGROYW1lLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjA2NGQxYQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jaGFuZ2VTaWduYXR1cmUvUGFyYW1OYW1lU2FtZUFzRmllbGROYW1lLmphdmEKQEAgLTAsMCArMSwxMyBAQAorY2xhc3MgVGVzdCB7CisgICAgaW50IGZpZWxkTmFtZTsKKworICAgIHZvaWQgZm88Y2FyZXQ+byhpbnQgbmFtZSkgeworICAgICAgICBmaWVsZE5hbWUgPSBuYW1lOworICAgIH0KK30KKworY2xhc3MgVGVzdEltcGwgZXh0ZW5kcyBUZXN0IHsKKyAgdm9pZCBmb28oaW50IG5hbWUpIHsKKyAgICBmaWVsZE5hbWUgPSBuYW1lOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NoYW5nZVNpZ25hdHVyZS9QYXJhbU5hbWVTYW1lQXNGaWVsZE5hbWVfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jaGFuZ2VTaWduYXR1cmUvUGFyYW1OYW1lU2FtZUFzRmllbGROYW1lX2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGE3YTFhYwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jaGFuZ2VTaWduYXR1cmUvUGFyYW1OYW1lU2FtZUFzRmllbGROYW1lX2FmdGVyLmphdmEKQEAgLTAsMCArMSwxMyBAQAorY2xhc3MgVGVzdCB7CisgICAgaW50IGZpZWxkTmFtZTsKKworICAgIHZvaWQgZm9vKGludCBmaWVsZE5hbWUpIHsKKyAgICAgICAgdGhpcy5maWVsZE5hbWUgPSBmaWVsZE5hbWU7CisgICAgfQorfQorCitjbGFzcyBUZXN0SW1wbCBleHRlbmRzIFRlc3QgeworICB2b2lkIGZvbyhpbnQgZmllbGROYW1lKSB7CisgICAgdGhpcy5maWVsZE5hbWUgPSBmaWVsZE5hbWU7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY2hhbmdlU2lnbmF0dXJlL1BhcmFtZXRlclJlb3JkZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jaGFuZ2VTaWduYXR1cmUvUGFyYW1ldGVyUmVvcmRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ0ODFhMzUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY2hhbmdlU2lnbmF0dXJlL1BhcmFtZXRlclJlb3JkZXIuamF2YQpAQCAtMCwwICsxLDExIEBACitjbGFzcyBBIHsKKyAgICBwdWJsaWMgaW50IG1ldGhvZDxjYXJldD4oaW50IGksIGludCBqKSB7CisgICAgICAgIHJldHVybiBpIC0gajsKKyAgICB9Cit9CisKK2NsYXNzIEIgZXh0ZW5kcyBBIHsKKyAgICBwdWJsaWMgdm9pZCBtZXRob2QoaW50IGosIGludCBpKSB7CisgICAgICAgIHJldHVybiBpIC0gajsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NoYW5nZVNpZ25hdHVyZS9QYXJhbWV0ZXJSZW9yZGVyX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY2hhbmdlU2lnbmF0dXJlL1BhcmFtZXRlclJlb3JkZXJfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZWY5YWJhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NoYW5nZVNpZ25hdHVyZS9QYXJhbWV0ZXJSZW9yZGVyX2FmdGVyLmphdmEKQEAgLTAsMCArMSwxMSBAQAorY2xhc3MgQSB7CisgICAgcHVibGljIGludCBtZXRob2Q8Y2FyZXQ+KGludCBqLCBpbnQgaSkgeworICAgICAgICByZXR1cm4gaSAtIGo7CisgICAgfQorfQorCitjbGFzcyBCIGV4dGVuZHMgQSB7CisgICAgcHVibGljIHZvaWQgbWV0aG9kKGludCBpLCBpbnQgaikgeworICAgICAgICByZXR1cm4gaSAtIGo7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jaGFuZ2VTaWduYXR1cmUvUHJvcGFnYXRlUGFyYW1ldGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY2hhbmdlU2lnbmF0dXJlL1Byb3BhZ2F0ZVBhcmFtZXRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYzYTg1ZDIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY2hhbmdlU2lnbmF0dXJlL1Byb3BhZ2F0ZVBhcmFtZXRlci5qYXZhCkBAIC0wLDAgKzEsOSBAQAorcHVibGljIGNsYXNzIEMgeworICAgIHZvaWQgc3U8Y2FyZXQ+YmplY3QoU3RyaW5nIHMpIHsKKyAgICB9CisKKyAgICB2b2lkIGNhbGxlcigpIHsKKyAgICAgICAgaW50IHM7CisgICAgICAgIHN1YmplY3QobnVsbCk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NoYW5nZVNpZ25hdHVyZS9Qcm9wYWdhdGVQYXJhbWV0ZXJfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jaGFuZ2VTaWduYXR1cmUvUHJvcGFnYXRlUGFyYW1ldGVyX2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmYwY2YwOAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jaGFuZ2VTaWduYXR1cmUvUHJvcGFnYXRlUGFyYW1ldGVyX2FmdGVyLmphdmEKQEAgLTAsMCArMSw5IEBACitwdWJsaWMgY2xhc3MgQyB7CisgICAgdm9pZCBzdWJqZWN0KFN0cmluZyBzLCBib29sZWFuIGIpIHsKKyAgICB9CisKKyAgICB2b2lkIGNhbGxlcihib29sZWFuIGIpIHsKKyAgICAgICAgaW50IHM7CisgICAgICAgIHN1YmplY3QobnVsbCwgYik7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NoYW5nZVNpZ25hdHVyZS9SZW1vdmVFeGNlcHRpb25zLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY2hhbmdlU2lnbmF0dXJlL1JlbW92ZUV4Y2VwdGlvbnMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZTAzYWQyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NoYW5nZVNpZ25hdHVyZS9SZW1vdmVFeGNlcHRpb25zLmphdmEKQEAgLTAsMCArMSw0IEBACitjbGFzcyBUZXN0IHsKKyAgdm9pZCBmbzxjYXJldD5vKCkgdGhyb3dzIFJ1bnRpbWVFeGNlcHRpb24geworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NoYW5nZVNpZ25hdHVyZS9SZW1vdmVFeGNlcHRpb25zX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY2hhbmdlU2lnbmF0dXJlL1JlbW92ZUV4Y2VwdGlvbnNfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iOTBjMTZkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NoYW5nZVNpZ25hdHVyZS9SZW1vdmVFeGNlcHRpb25zX2FmdGVyLmphdmEKQEAgLTAsMCArMSw0IEBACitjbGFzcyBUZXN0IHsKKyAgdm9pZCBmb28oKSB7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY2hhbmdlU2lnbmF0dXJlL1JlbW92ZUZpcnN0UGFyYW1ldGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY2hhbmdlU2lnbmF0dXJlL1JlbW92ZUZpcnN0UGFyYW1ldGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWI3MmQ2OAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jaGFuZ2VTaWduYXR1cmUvUmVtb3ZlRmlyc3RQYXJhbWV0ZXIuamF2YQpAQCAtMCwwICsxLDUgQEAKK2NsYXNzIFRlc3QgeworICAgIHZvaWQgPGNhcmV0PmZvbyhib29sZWFuIGIsCisgICAgICAgICAgICAgaW50IGkpIHsgLy8gRG9uJ3QgZXhwZWN0IGxpbmUgYnJlYWsgdG8gYmUgaW5zZXJ0ZWQgYmVmb3JlIGNsb3NpbmcgbWV0aG9kIGFyZ3MgYnJhY2tldAorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY2hhbmdlU2lnbmF0dXJlL1JlbW92ZUZpcnN0UGFyYW1ldGVyX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY2hhbmdlU2lnbmF0dXJlL1JlbW92ZUZpcnN0UGFyYW1ldGVyX2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTRjMTM3MQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jaGFuZ2VTaWduYXR1cmUvUmVtb3ZlRmlyc3RQYXJhbWV0ZXJfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDQgQEAKK2NsYXNzIFRlc3QgeworICAgIHZvaWQgPGNhcmV0PmZvbyhpbnQgaSkgeyAvLyBEb24ndCBleHBlY3QgbGluZSBicmVhayB0byBiZSBpbnNlcnRlZCBiZWZvcmUgY2xvc2luZyBtZXRob2QgYXJncyBicmFja2V0CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jaGFuZ2VTaWduYXR1cmUvUmVtb3ZlVmFyYXJnUGFyYW1ldGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY2hhbmdlU2lnbmF0dXJlL1JlbW92ZVZhcmFyZ1BhcmFtZXRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ5YTM4ZGYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY2hhbmdlU2lnbmF0dXJlL1JlbW92ZVZhcmFyZ1BhcmFtZXRlci5qYXZhCkBAIC0wLDAgKzEsMTIgQEAKK2NsYXNzIFRlc3QgeworICAgdm9pZCBmbzxjYXJldD5vKGludCBpLCBpbnQgLi4uIGphKXsKKyAgICB9CisKKyAgICB2b2lkIGJhcigpIHsKKyAgICAgIGZvbygwKTsKKyAgICAgIGZvbygwLCAxKTsKKyAgICAgIGZvbygwLCAxLCAyKTsKKyAgICAgIGZvbygwLCBuZXcgaW50W117MywgNH0pOworICAgICAgZm9vKDAsIG5ldyBpbnRbMF0pOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY2hhbmdlU2lnbmF0dXJlL1JlbW92ZVZhcmFyZ1BhcmFtZXRlcl9hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NoYW5nZVNpZ25hdHVyZS9SZW1vdmVWYXJhcmdQYXJhbWV0ZXJfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNDRkZDQwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NoYW5nZVNpZ25hdHVyZS9SZW1vdmVWYXJhcmdQYXJhbWV0ZXJfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDEyIEBACitjbGFzcyBUZXN0IHsKKyAgIHZvaWQgZm9vKGludCBpKXsKKyAgICB9CisKKyAgICB2b2lkIGJhcigpIHsKKyAgICAgIGZvbygwKTsKKyAgICAgIGZvbygwKTsKKyAgICAgIGZvbygwKTsKKyAgICAgIGZvbygwKTsKKyAgICAgIGZvbygwKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NoYW5nZVNpZ25hdHVyZS9SZW9yZGVyRXhjZXB0aW9ucy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NoYW5nZVNpZ25hdHVyZS9SZW9yZGVyRXhjZXB0aW9ucy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ0OTJiNTQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY2hhbmdlU2lnbmF0dXJlL1Jlb3JkZXJFeGNlcHRpb25zLmphdmEKQEAgLTAsMCArMSwzNCBAQAorY2xhc3MgTXlFeGNlcHRpb24gZXh0ZW5kcyBFeGNlcHRpb257Cit9CisKK2NsYXNzIE15RXhjZXB0aW9uMSBleHRlbmRzIEV4Y2VwdGlvbnsKK30KKworY2xhc3MgVGVzdCB7CisgICAgdm9pZCBmb288Y2FyZXQ+ICgpIHRocm93cyBNeUV4Y2VwdGlvbiwKKyAgICAgICBNeUV4Y2VwdGlvbjEgeworICAgIH0KKworICAgIHZvaWQgYmFyICgpIHsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGZvbygpOworICAgICAgICB9CisgICAgICAgIGNhdGNoIChNeUV4Y2VwdGlvbiBlKSB7fQorICAgICAgICBjYXRjaCAoTXlFeGNlcHRpb24xIG15RXhjZXB0aW9uMSkge30KKyAgICB9Cit9CisKK2NsYXNzIERlcml2ZWQgZXh0ZW5kcyBUZXN0IHsKKyAgICB2b2lkIGZvbygpIHRocm93cyBNeUV4Y2VwdGlvbiwKKyAgICAgICBNeUV4Y2VwdGlvbjEgeworCisgICAgfQorCisgICAgdm9pZCBiYXIgKCkgeworICAgICAgICB0cnkgeworICAgICAgICAgICAgZm9vKCk7CisgICAgICAgIH0KKyAgICAgICAgY2F0Y2ggKE15RXhjZXB0aW9uIGUpIHt9CisgICAgICAgIGNhdGNoIChNeUV4Y2VwdGlvbjEgbXlFeGNlcHRpb24xKSB7fQorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY2hhbmdlU2lnbmF0dXJlL1Jlb3JkZXJFeGNlcHRpb25zX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY2hhbmdlU2lnbmF0dXJlL1Jlb3JkZXJFeGNlcHRpb25zX2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzkxYWJjZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jaGFuZ2VTaWduYXR1cmUvUmVvcmRlckV4Y2VwdGlvbnNfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDMyIEBACitjbGFzcyBNeUV4Y2VwdGlvbiBleHRlbmRzIEV4Y2VwdGlvbnsKK30KKworY2xhc3MgTXlFeGNlcHRpb24xIGV4dGVuZHMgRXhjZXB0aW9ueworfQorCitjbGFzcyBUZXN0IHsKKyAgICB2b2lkIGZvbyAoKSB0aHJvd3MgTXlFeGNlcHRpb24xLCBNeUV4Y2VwdGlvbiB7CisgICAgfQorCisgICAgdm9pZCBiYXIgKCkgeworICAgICAgICB0cnkgeworICAgICAgICAgICAgZm9vKCk7CisgICAgICAgIH0KKyAgICAgICAgY2F0Y2ggKE15RXhjZXB0aW9uIGUpIHt9CisgICAgICAgIGNhdGNoIChNeUV4Y2VwdGlvbjEgbXlFeGNlcHRpb24xKSB7fQorICAgIH0KK30KKworY2xhc3MgRGVyaXZlZCBleHRlbmRzIFRlc3QgeworICAgIHZvaWQgZm9vKCkgdGhyb3dzIE15RXhjZXB0aW9uMSwgTXlFeGNlcHRpb24geworCisgICAgfQorCisgICAgdm9pZCBiYXIgKCkgeworICAgICAgICB0cnkgeworICAgICAgICAgICAgZm9vKCk7CisgICAgICAgIH0KKyAgICAgICAgY2F0Y2ggKE15RXhjZXB0aW9uIGUpIHt9CisgICAgICAgIGNhdGNoIChNeUV4Y2VwdGlvbjEgbXlFeGNlcHRpb24xKSB7fQorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY2hhbmdlU2lnbmF0dXJlL1Jlb3JkZXJNdWx0aWxpbmVNZXRob2RQYXJhbWV0ZXJzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY2hhbmdlU2lnbmF0dXJlL1Jlb3JkZXJNdWx0aWxpbmVNZXRob2RQYXJhbWV0ZXJzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWI3MmQ2OAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jaGFuZ2VTaWduYXR1cmUvUmVvcmRlck11bHRpbGluZU1ldGhvZFBhcmFtZXRlcnMuamF2YQpAQCAtMCwwICsxLDUgQEAKK2NsYXNzIFRlc3QgeworICAgIHZvaWQgPGNhcmV0PmZvbyhib29sZWFuIGIsCisgICAgICAgICAgICAgaW50IGkpIHsgLy8gRG9uJ3QgZXhwZWN0IGxpbmUgYnJlYWsgdG8gYmUgaW5zZXJ0ZWQgYmVmb3JlIGNsb3NpbmcgbWV0aG9kIGFyZ3MgYnJhY2tldAorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY2hhbmdlU2lnbmF0dXJlL1Jlb3JkZXJNdWx0aWxpbmVNZXRob2RQYXJhbWV0ZXJzX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY2hhbmdlU2lnbmF0dXJlL1Jlb3JkZXJNdWx0aWxpbmVNZXRob2RQYXJhbWV0ZXJzX2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGRjZWMxZGUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY2hhbmdlU2lnbmF0dXJlL1Jlb3JkZXJNdWx0aWxpbmVNZXRob2RQYXJhbWV0ZXJzX2FmdGVyLmphdmEKQEAgLTAsMCArMSw0IEBACitjbGFzcyBUZXN0IHsKKyAgICB2b2lkIGZvbyhpbnQgaSwgYm9vbGVhbiBiKSB7IC8vIERvbid0IGV4cGVjdCBsaW5lIGJyZWFrIHRvIGJlIGluc2VydGVkIGJlZm9yZSBjbG9zaW5nIG1ldGhvZCBhcmdzIGJyYWNrZXQKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NoYW5nZVNpZ25hdHVyZS9SZW9yZGVyV2l0aFZhcmFyZ3MuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jaGFuZ2VTaWduYXR1cmUvUmVvcmRlcldpdGhWYXJhcmdzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDEwMDI5NAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jaGFuZ2VTaWduYXR1cmUvUmVvcmRlcldpdGhWYXJhcmdzLmphdmEKQEAgLTAsMCArMSw3IEBACitjbGFzcyBUZXN0IHsKKyAgICB2b2lkIDxjYXJldD5mb28oU3RyaW5nW10gcywgaW50IGEpIHt9CisKKyAgICB7CisgICAgICAgIGZvbyhuZXcgU3RyaW5nW117ImEiLCAiYmJiIn0sIDEpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY2hhbmdlU2lnbmF0dXJlL1Jlb3JkZXJXaXRoVmFyYXJnczIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jaGFuZ2VTaWduYXR1cmUvUmVvcmRlcldpdGhWYXJhcmdzMi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQwZWFkNmMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY2hhbmdlU2lnbmF0dXJlL1Jlb3JkZXJXaXRoVmFyYXJnczIuamF2YQpAQCAtMCwwICsxLDkgQEAKK2NsYXNzIFRlc3QgeworICAgIHN0YXRpYyBmaW5hbCBTdHJpbmdbXSBzdHJzID0gbmV3IFN0cmluZ1tdIHsgImEiIH07CisKKyAgICB2b2lkIDxjYXJldD5mb28oU3RyaW5nW10gcywgaW50IGEpIHt9CisKKyAgICB7CisgICAgICAgIGZvbyhzdHJzLCAxKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NoYW5nZVNpZ25hdHVyZS9SZW9yZGVyV2l0aFZhcmFyZ3MyX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY2hhbmdlU2lnbmF0dXJlL1Jlb3JkZXJXaXRoVmFyYXJnczJfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MTA3YWYyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NoYW5nZVNpZ25hdHVyZS9SZW9yZGVyV2l0aFZhcmFyZ3MyX2FmdGVyLmphdmEKQEAgLTAsMCArMSw5IEBACitjbGFzcyBUZXN0IHsKKyAgICBzdGF0aWMgZmluYWwgU3RyaW5nW10gc3RycyA9IG5ldyBTdHJpbmdbXSB7ICJhIiB9OworCisgICAgdm9pZCA8Y2FyZXQ+Zm9vKGludCBhLCBTdHJpbmcuLi4gcykge30KKworICAgIHsKKyAgICAgICAgZm9vKDEsIHN0cnMpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY2hhbmdlU2lnbmF0dXJlL1Jlb3JkZXJXaXRoVmFyYXJnc19hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NoYW5nZVNpZ25hdHVyZS9SZW9yZGVyV2l0aFZhcmFyZ3NfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMTdkODA2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NoYW5nZVNpZ25hdHVyZS9SZW9yZGVyV2l0aFZhcmFyZ3NfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDcgQEAKK2NsYXNzIFRlc3QgeworICAgIHZvaWQgZm9vKGludCBhLCBTdHJpbmcuLi4gcykge30KKworICAgIHsKKyAgICAgICAgZm9vKDEsICJhIiwgImJiYiIpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY2hhbmdlU2lnbmF0dXJlL1JlcGxhY2VWYXJhcmdXaXRoQXJyYXkuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jaGFuZ2VTaWduYXR1cmUvUmVwbGFjZVZhcmFyZ1dpdGhBcnJheS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIwZjliNDAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY2hhbmdlU2lnbmF0dXJlL1JlcGxhY2VWYXJhcmdXaXRoQXJyYXkuamF2YQpAQCAtMCwwICsxLDE0IEBACitjbGFzcyBMaXN0PFQ+IHt9CisKK2NsYXNzIEJhc2U8VD4geworICB2b2lkIGZvPGNhcmV0Pm8oU3RyaW5nIHMsIExpc3Q8VD4uLi4gbCkge30KK30KKworY2xhc3MgSW5oZXJpdG9yIGV4dGVuZHMgQmFzZTxJbnRlZ2VyPiB7CisgIHZvaWQgZm9vKFN0cmluZyBzLCBMaXN0PEludGVnZXI+Li4uIGwpIHt9CisgIAorICB7CisgICAgbmV3IEluaGVyaXRvcigpLmZvbygiYSIsIG5ldyBMaXN0PEludGVnZXI+KCkpOworICB9Cit9CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jaGFuZ2VTaWduYXR1cmUvUmVwbGFjZVZhcmFyZ1dpdGhBcnJheV9hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NoYW5nZVNpZ25hdHVyZS9SZXBsYWNlVmFyYXJnV2l0aEFycmF5X2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTJhMDM4OAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jaGFuZ2VTaWduYXR1cmUvUmVwbGFjZVZhcmFyZ1dpdGhBcnJheV9hZnRlci5qYXZhCkBAIC0wLDAgKzEsMTQgQEAKK2NsYXNzIExpc3Q8VD4ge30KKworY2xhc3MgQmFzZTxUPiB7CisgIHZvaWQgZm9vKExpc3Q8VD5bXSBsLCBTdHJpbmcgcykge30KK30KKworY2xhc3MgSW5oZXJpdG9yIGV4dGVuZHMgQmFzZTxJbnRlZ2VyPiB7CisgIHZvaWQgZm9vKExpc3Q8SW50ZWdlcj5bXSBsLCBTdHJpbmcgcykge30KKyAgCisgIHsKKyAgICBuZXcgSW5oZXJpdG9yKCkuZm9vKG5ldyBMaXN0W117bmV3IExpc3Q8SW50ZWdlcj4oKX0sICJhIik7CisgIH0KK30KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NoYW5nZVNpZ25hdHVyZS9TQ1I0MDg5NS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NoYW5nZVNpZ25hdHVyZS9TQ1I0MDg5NS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYyZTE4ODkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY2hhbmdlU2lnbmF0dXJlL1NDUjQwODk1LmphdmEKQEAgLTAsMCArMSw5IEBACitjbGFzcyBYIHsKKworICAgIC8qKgorICAgICAqIEhhcyBhIG1ldGhvZCBjYWxsZWQge0BsaW5rICNteW1ldGhvZChpbnQsIGludCl9LgorICAgICAqLworICAgIHB1YmxpYyBjbGFzcyBUZXN0UmVmYWN0b3JMaW5rIHsKKyAgICAgICAgcHVibGljIHZvaWQgPGNhcmV0Pm15bWV0aG9kKGludCB5LCBpbnQgeikgeyB9CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NoYW5nZVNpZ25hdHVyZS9TQ1I0MDg5NV9hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NoYW5nZVNpZ25hdHVyZS9TQ1I0MDg5NV9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNjODM4OGYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY2hhbmdlU2lnbmF0dXJlL1NDUjQwODk1X2FmdGVyLmphdmEKQEAgLTAsMCArMSw5IEBACitjbGFzcyBYIHsKKworICAgIC8qKgorICAgICAqIEhhcyBhIG1ldGhvZCBjYWxsZWQge0BsaW5rICNteW1ldGhvZChpbnQsIGJvb2xlYW4pfS4KKyAgICAgKi8KKyAgICBwdWJsaWMgY2xhc3MgVGVzdFJlZmFjdG9yTGluayB7CisgICAgICAgIHB1YmxpYyB2b2lkIG15bWV0aG9kKGludCB5LCBib29sZWFuIGIpIHsgfQorICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jaGFuZ2VTaWduYXR1cmUvU2ltcGxlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY2hhbmdlU2lnbmF0dXJlL1NpbXBsZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdjNjQ0ZTQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY2hhbmdlU2lnbmF0dXJlL1NpbXBsZS5qYXZhCkBAIC0wLDAgKzEsNyBAQAorY2xhc3MgQSB7CisgICAgdm9pZCBtZXRob2Q8Y2FyZXQ+KGludCBpKTsKK30KKworY2xhc3MgQiBleHRlbmRzIEEgeworICAgIHZvaWQgbWV0aG9kKGludCBrKTsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY2hhbmdlU2lnbmF0dXJlL1NpbXBsZV9hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NoYW5nZVNpZ25hdHVyZS9TaW1wbGVfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMzEyNDdhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NoYW5nZVNpZ25hdHVyZS9TaW1wbGVfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDcgQEAKK2NsYXNzIEEgeworICAgIHZvaWQgbWV0aG9kKCk7Cit9CisKK2NsYXNzIEIgZXh0ZW5kcyBBIHsKKyAgICB2b2lkIG1ldGhvZCgpOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jaGFuZ2VTaWduYXR1cmUvU3VwZXJDYWxsRnJvbU90aGVyTWV0aG9kLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY2hhbmdlU2lnbmF0dXJlL1N1cGVyQ2FsbEZyb21PdGhlck1ldGhvZC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgxZDM4OWEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY2hhbmdlU2lnbmF0dXJlL1N1cGVyQ2FsbEZyb21PdGhlck1ldGhvZC5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKK2NsYXNzIEEgeworICAgIHZvaWQgPGNhcmV0PmZvbygpIHsKKyAgICB9Cit9CisKK2NsYXNzIEIgZXh0ZW5kcyBBIHsKKyAgICB2b2lkIGJvbygpIHsKKyAgICAgICAgc3VwZXIuZm9vKCk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NoYW5nZVNpZ25hdHVyZS9TdXBlckNhbGxGcm9tT3RoZXJNZXRob2RfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jaGFuZ2VTaWduYXR1cmUvU3VwZXJDYWxsRnJvbU90aGVyTWV0aG9kX2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmU3OTA5OQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jaGFuZ2VTaWduYXR1cmUvU3VwZXJDYWxsRnJvbU90aGVyTWV0aG9kX2FmdGVyLmphdmEKQEAgLTAsMCArMSwxMCBAQAorY2xhc3MgQSB7CisgICAgdm9pZCA8Y2FyZXQ+Zm9vKGludCBubm4pIHsKKyAgICB9Cit9CisKK2NsYXNzIEIgZXh0ZW5kcyBBIHsKKyAgICB2b2lkIGJvbygpIHsKKyAgICAgICAgc3VwZXIuZm9vKC0yMjIpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jaGFuZ2VTaWduYXR1cmUvVHlwZVBhcmFtZXRlcnNJbk1ldGhvZC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NoYW5nZVNpZ25hdHVyZS9UeXBlUGFyYW1ldGVyc0luTWV0aG9kLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDkxZDk4ZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jaGFuZ2VTaWduYXR1cmUvVHlwZVBhcmFtZXRlcnNJbk1ldGhvZC5qYXZhCkBAIC0wLDAgKzEsOSBAQAorY2xhc3MgQzxUPiB7CisgICAgcHJvdGVjdGVkIDxVPiBVIG1ldGhvZDxjYXJldD4oKXsKKyAgICB9Cit9CisKK2NsYXNzIEMxIGV4dGVuZHMgQzxTdHJpbmc+IHsKKyAgICBwcm90ZWN0ZWQgPFY+IFYgbWV0aG9kKCl7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jaGFuZ2VTaWduYXR1cmUvVHlwZVBhcmFtZXRlcnNJbk1ldGhvZF9hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NoYW5nZVNpZ25hdHVyZS9UeXBlUGFyYW1ldGVyc0luTWV0aG9kX2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGE1OWYwMQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jaGFuZ2VTaWduYXR1cmUvVHlwZVBhcmFtZXRlcnNJbk1ldGhvZF9hZnRlci5qYXZhCkBAIC0wLDAgKzEsOSBAQAorY2xhc3MgQzxUPiB7CisgICAgcHJvdGVjdGVkIDxVPiBVIG1ldGhvZChUIHQsIFUgdSwgQzxVPiBjdSl7CisgICAgfQorfQorCitjbGFzcyBDMSBleHRlbmRzIEM8U3RyaW5nPiB7CisgICAgcHJvdGVjdGVkIDxWPiBWIG1ldGhvZChTdHJpbmcgdCwgViB1LCBDPFY+IGN1KXsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NoYW5nZVNpZ25hdHVyZS9Vc2VBbnlWYXJpYWJsZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NoYW5nZVNpZ25hdHVyZS9Vc2VBbnlWYXJpYWJsZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI4NjI4NGUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY2hhbmdlU2lnbmF0dXJlL1VzZUFueVZhcmlhYmxlLmphdmEKQEAgLTAsMCArMSwxNCBAQAoraW1wb3J0IGphdmEudXRpbC5MaXN0OworCitjbGFzcyBDIHsKKyAgICB2b2lkIDxjYXJldD5tZXRob2QoKSB7CisgICAgfQorfQorCitjbGFzcyBVc2FnZSB7CisgICAgTGlzdCBteUxpc3Q7CisgICAgeworICAgICAgICBDIGMgPSBuZXcgQygpOworICAgICAgICBjLm1ldGhvZCgpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY2hhbmdlU2lnbmF0dXJlL1VzZUFueVZhcmlhYmxlQW5kRGVmYXVsdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NoYW5nZVNpZ25hdHVyZS9Vc2VBbnlWYXJpYWJsZUFuZERlZmF1bHQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iOGFmYTYyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NoYW5nZVNpZ25hdHVyZS9Vc2VBbnlWYXJpYWJsZUFuZERlZmF1bHQuamF2YQpAQCAtMCwwICsxLDE0IEBACitjbGFzcyBDIHsKKyAgICA8Y2FyZXQ+QyhTdHJpbmcgbmFtZSl7fQorfQorCitjbGFzcyBVc2FnZSB7CisgICAgdm9pZCBmb28oKSB7CisgICAgICBDIGMxID0gbmV3IEMoIjEiKTsKKyAgICAgIEMgYzIgPSBuZXcgQygiMiIpOworICAgIH0KKworICAgIHZvaWQgYmFyKCkgeworICAgICAgQyBjMSA9IG5ldyBDKCIxIiksIGMyID0gbmV3IEMoIjIiKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NoYW5nZVNpZ25hdHVyZS9Vc2VBbnlWYXJpYWJsZUFuZERlZmF1bHRfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jaGFuZ2VTaWduYXR1cmUvVXNlQW55VmFyaWFibGVBbmREZWZhdWx0X2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTUyZGFlMgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jaGFuZ2VTaWduYXR1cmUvVXNlQW55VmFyaWFibGVBbmREZWZhdWx0X2FmdGVyLmphdmEKQEAgLTAsMCArMSwxNCBAQAorY2xhc3MgQyB7CisgICAgQyhDIGMpe30KK30KKworY2xhc3MgVXNhZ2UgeworICAgIHZvaWQgZm9vKCkgeworICAgICAgQyBjMSA9IG5ldyBDKG51bGwpOworICAgICAgQyBjMiA9IG5ldyBDKGMxKTsKKyAgICB9CisKKyAgICB2b2lkIGJhcigpIHsKKyAgICAgIEMgYzEgPSBuZXcgQyhudWxsKSwgYzIgPSBuZXcgQyhjMSk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jaGFuZ2VTaWduYXR1cmUvVXNlQW55VmFyaWFibGVfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jaGFuZ2VTaWduYXR1cmUvVXNlQW55VmFyaWFibGVfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMmI2ZjQ0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NoYW5nZVNpZ25hdHVyZS9Vc2VBbnlWYXJpYWJsZV9hZnRlci5qYXZhCkBAIC0wLDAgKzEsMTQgQEAKK2ltcG9ydCBqYXZhLnV0aWwuTGlzdDsKKworY2xhc3MgQyB7CisgICAgdm9pZCBtZXRob2QoTGlzdCBsKSB7CisgICAgfQorfQorCitjbGFzcyBVc2FnZSB7CisgICAgTGlzdCBteUxpc3Q7CisgICAgeworICAgICAgICBDIGMgPSBuZXcgQygpOworICAgICAgICBjLm1ldGhvZChteUxpc3QpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY2hhbmdlU2lnbmF0dXJlL1VzZVRoaXNBc0FueVZhcmlhYmxlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY2hhbmdlU2lnbmF0dXJlL1VzZVRoaXNBc0FueVZhcmlhYmxlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODhjMGUxMQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jaGFuZ2VTaWduYXR1cmUvVXNlVGhpc0FzQW55VmFyaWFibGUuamF2YQpAQCAtMCwwICsxLDE4IEBACitpbXBvcnQgamF2YS51dGlsLkxpc3Q7CisKK2NsYXNzIEMgeworICAgIHZvaWQgPGNhcmV0Pm1ldGhvZCgpIHsKKyAgICB9Cit9CisKK2NsYXNzIFVzYWdlIGltcGxlbWVudHMgTGlzdCB7CisgICAgeworICAgICAgICBmaW5hbCBDIGMgPSBuZXcgQygpOworICAgICAgICBjLm1ldGhvZCgpOworICAgICAgICBuZXcgUnVubmFibGUoKSB7CisgICAgICAgICAgcHVibGljIHZvaWQgcnVuKCkgeworICAgICAgICAgICAgYy5tZXRob2QoKTsKKyAgICAgICAgICB9CisgICAgICAgIH0ucnVuKCk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jaGFuZ2VTaWduYXR1cmUvVXNlVGhpc0FzQW55VmFyaWFibGVfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jaGFuZ2VTaWduYXR1cmUvVXNlVGhpc0FzQW55VmFyaWFibGVfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MDQ0ZWQ2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NoYW5nZVNpZ25hdHVyZS9Vc2VUaGlzQXNBbnlWYXJpYWJsZV9hZnRlci5qYXZhCkBAIC0wLDAgKzEsMTggQEAKK2ltcG9ydCBqYXZhLnV0aWwuTGlzdDsKKworY2xhc3MgQyB7CisgICAgdm9pZCBtZXRob2QoTGlzdCBsKSB7CisgICAgfQorfQorCitjbGFzcyBVc2FnZSBpbXBsZW1lbnRzIExpc3QgeworICAgIHsKKyAgICAgICAgZmluYWwgQyBjID0gbmV3IEMoKTsKKyAgICAgICAgYy5tZXRob2QodGhpcyk7CisgICAgICAgIG5ldyBSdW5uYWJsZSgpIHsKKyAgICAgICAgICBwdWJsaWMgdm9pZCBydW4oKSB7CisgICAgICAgICAgICBjLm1ldGhvZChVc2FnZS50aGlzKTsKKyAgICAgICAgICB9CisgICAgICAgIH0ucnVuKCk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jaGFuZ2VTaWduYXR1cmUvVmFyYXJnczEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jaGFuZ2VTaWduYXR1cmUvVmFyYXJnczEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMjZmZDI1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NoYW5nZVNpZ25hdHVyZS9WYXJhcmdzMS5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKK2NsYXNzIEMgeworICAgIHZvaWQgPGNhcmV0Pm1ldGhvZChpbnQuLi4gYXJncykgeworICAgIH0KKworICAgIHsKKyAgICAgICAgbWV0aG9kKDEsMik7CisgICAgICAgIG1ldGhvZCgxLDIsMyk7CisgICAgICAgIG1ldGhvZCgpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY2hhbmdlU2lnbmF0dXJlL1ZhcmFyZ3MxX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY2hhbmdlU2lnbmF0dXJlL1ZhcmFyZ3MxX2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDI0MWQ3YgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jaGFuZ2VTaWduYXR1cmUvVmFyYXJnczFfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDEwIEBACitjbGFzcyBDIHsKKyAgICB2b2lkIDxjYXJldD5tZXRob2QoYm9vbGVhbiBiLCBpbnQuLi4gYXJncykgeworICAgIH0KKworICAgIHsKKyAgICAgICAgbWV0aG9kKHRydWUsIDEsMik7CisgICAgICAgIG1ldGhvZCh0cnVlLCAxLDIsMyk7CisgICAgICAgIG1ldGhvZCh0cnVlKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NoYW5nZVNpZ25hdHVyZS9WYXJhcmdzMi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NoYW5nZVNpZ25hdHVyZS9WYXJhcmdzMi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI5NTAyZTQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY2hhbmdlU2lnbmF0dXJlL1ZhcmFyZ3MyLmphdmEKQEAgLTAsMCArMSwyMyBAQAorLyoKKyAqIENvcHlyaWdodCAyMDAwLTIwMTEgSmV0QnJhaW5zIHMuci5vLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK2NsYXNzIEMgeworICAgIHZvaWQgZG88Y2FyZXQ+U210aChib29sZWFuIGIsIGludC4uLiBpKSB7CisgICAgfQorCisgICAgdm9pZCBtKCkgeworICAgICAgICBkb1NtdGgodHJ1ZSwgMSk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jaGFuZ2VTaWduYXR1cmUvVmFyYXJnczJfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jaGFuZ2VTaWduYXR1cmUvVmFyYXJnczJfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYWFmMGJkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NoYW5nZVNpZ25hdHVyZS9WYXJhcmdzMl9hZnRlci5qYXZhCkBAIC0wLDAgKzEsMjMgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwMC0yMDExIEpldEJyYWlucyBzLnIuby4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitjbGFzcyBDIHsKKyAgICB2b2lkIGRvU210aChpbnQgaSwgYm9vbGVhbi4uLiBiKSB7CisgICAgfQorCisgICAgdm9pZCBtKCkgeworICAgICAgICBkb1NtdGgoMSwgdHJ1ZSk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jaGFuZ2VTaWduYXR1cmVHZXN0dXJlL0FkZFBhcmFtQ2hhbmdlUmV0dXJuVHlwZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NoYW5nZVNpZ25hdHVyZUdlc3R1cmUvQWRkUGFyYW1DaGFuZ2VSZXR1cm5UeXBlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTgxZDA4MQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jaGFuZ2VTaWduYXR1cmVHZXN0dXJlL0FkZFBhcmFtQ2hhbmdlUmV0dXJuVHlwZS5qYXZhCkBAIC0wLDAgKzEsOCBAQAorY2xhc3MgVGVzdCB7CisgIHZvaWQgZm9vKCkgeworICAgIGJhcigpOworICB9CisKKyAgdm9pZCBiYXIoPGNhcmV0Pil7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY2hhbmdlU2lnbmF0dXJlR2VzdHVyZS9BZGRQYXJhbUNoYW5nZVJldHVyblR5cGVfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jaGFuZ2VTaWduYXR1cmVHZXN0dXJlL0FkZFBhcmFtQ2hhbmdlUmV0dXJuVHlwZV9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBiZjEwNGIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY2hhbmdlU2lnbmF0dXJlR2VzdHVyZS9BZGRQYXJhbUNoYW5nZVJldHVyblR5cGVfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDggQEAKK2NsYXNzIFRlc3QgeworICB2b2lkIGZvbygpIHsKKyAgICBiYXIoKTsKKyAgfQorCisgIGJvb2xlYW4gYmFyKGludCBwYXJhbSl7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY2hhbmdlU2lnbmF0dXJlR2VzdHVyZS9BZGRQYXJhbWV0ZXIyQ29uc3RydWN0b3IuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jaGFuZ2VTaWduYXR1cmVHZXN0dXJlL0FkZFBhcmFtZXRlcjJDb25zdHJ1Y3Rvci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMxYWU5MjkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY2hhbmdlU2lnbmF0dXJlR2VzdHVyZS9BZGRQYXJhbWV0ZXIyQ29uc3RydWN0b3IuamF2YQpAQCAtMCwwICsxLDkgQEAKK3BhY2thZ2UgcmVmYWN0b3JpbmcuY2hhbmdlU2lnbmF0dXJlR2VzdHVyZTsKK2NsYXNzIFRlc3RNZWFicmFjYWRhYnJhIHsKKyAgVGVzdE1lYWJyYWNhZGFicmEoPGNhcmV0Pil7CisgIH0KKworICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CisgICAgVGVzdE1lYWJyYWNhZGFicmEgdCA9IG5ldyBUZXN0TWVhYnJhY2FkYWJyYSgpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NoYW5nZVNpZ25hdHVyZUdlc3R1cmUvQWRkUGFyYW1ldGVyMkNvbnN0cnVjdG9yX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY2hhbmdlU2lnbmF0dXJlR2VzdHVyZS9BZGRQYXJhbWV0ZXIyQ29uc3RydWN0b3JfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYjhiZGEwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NoYW5nZVNpZ25hdHVyZUdlc3R1cmUvQWRkUGFyYW1ldGVyMkNvbnN0cnVjdG9yX2FmdGVyLmphdmEKQEAgLTAsMCArMSw5IEBACitwYWNrYWdlIHJlZmFjdG9yaW5nLmNoYW5nZVNpZ25hdHVyZUdlc3R1cmU7CitjbGFzcyBUZXN0TWVhYnJhY2FkYWJyYSB7CisgIFRlc3RNZWFicmFjYWRhYnJhKGludCBwYXJhbSl7CisgIH0KKworICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CisgICAgVGVzdE1lYWJyYWNhZGFicmEgdCA9IG5ldyBUZXN0TWVhYnJhY2FkYWJyYSgpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NoYW5nZVNpZ25hdHVyZUdlc3R1cmUvQWRkUGFyYW1ldGVyMlVudXNlZENvbnN0cnVjdG9yLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY2hhbmdlU2lnbmF0dXJlR2VzdHVyZS9BZGRQYXJhbWV0ZXIyVW51c2VkQ29uc3RydWN0b3IuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMTRmNzA5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NoYW5nZVNpZ25hdHVyZUdlc3R1cmUvQWRkUGFyYW1ldGVyMlVudXNlZENvbnN0cnVjdG9yLmphdmEKQEAgLTAsMCArMSw1IEBACitwYWNrYWdlIHJlZmFjdG9yaW5nLmNoYW5nZVNpZ25hdHVyZUdlc3R1cmU7CitjbGFzcyBUZXN0TWVhYnJhY2FkYWJyYSB7CisgIHByaXZhdGUgVGVzdE1lYWJyYWNhZGFicmEoPGNhcmV0Pil7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY2hhbmdlU2lnbmF0dXJlR2VzdHVyZS9BZGRQYXJhbWV0ZXJGaW5hbC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NoYW5nZVNpZ25hdHVyZUdlc3R1cmUvQWRkUGFyYW1ldGVyRmluYWwuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zN2Q5ZjAzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NoYW5nZVNpZ25hdHVyZUdlc3R1cmUvQWRkUGFyYW1ldGVyRmluYWwuamF2YQpAQCAtMCwwICsxLDggQEAKK3B1YmxpYyBjbGFzcyBUZXN0IHsKKyAgcHVibGljIHZvaWQgZm9vKDxjYXJldD4pIHsKKyAgfQorCisgIHZvaWQgYmFyKCkgeworICAgIGZvbygpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NoYW5nZVNpZ25hdHVyZUdlc3R1cmUvQWRkUGFyYW1ldGVyRmluYWxfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jaGFuZ2VTaWduYXR1cmVHZXN0dXJlL0FkZFBhcmFtZXRlckZpbmFsX2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYThkMGI3YQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jaGFuZ2VTaWduYXR1cmVHZXN0dXJlL0FkZFBhcmFtZXRlckZpbmFsX2FmdGVyLmphdmEKQEAgLTAsMCArMSw4IEBACitwdWJsaWMgY2xhc3MgVGVzdCB7CisgIHB1YmxpYyB2b2lkIGZvbyhmaW5hbCBpbnQgcGFyYW0pIHsKKyAgfQorCisgIHZvaWQgYmFyKCkgeworICAgIGZvbygpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NoYW5nZVNpZ25hdHVyZUdlc3R1cmUvRGVsZXRlUGFyYW1JblN1cGVyVXNlZC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NoYW5nZVNpZ25hdHVyZUdlc3R1cmUvRGVsZXRlUGFyYW1JblN1cGVyVXNlZC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA4MGUyOGUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY2hhbmdlU2lnbmF0dXJlR2VzdHVyZS9EZWxldGVQYXJhbUluU3VwZXJVc2VkLmphdmEKQEAgLTAsMCArMSwxNCBAQAorcHVibGljIGNsYXNzIFBhcmVudCB7CisgIHB1YmxpYyB2b2lkIGZvbyhmbG9hdCBqLCBpbnQgaSwgU3RyaW5nIHMpIHsKKyAgICBTeXN0ZW0ub3V0LnByaW50bG4oaiArIHMgKyBpKTsKKyAgfQorfQorCitjbGFzcyBDaGlsZCBleHRlbmRzIFBhcmVudCB7CisgIHB1YmxpYyB2b2lkIGZvbyhmbG9hdCBqLCA8c2VsZWN0aW9uPiBpbnQgaSw8L3NlbGVjdGlvbj4gU3RyaW5nIHMgKSB7CisgIH0KKworICB2b2lkIGJhcigpIHsKKyAgICBmb28oMS4wLCAxLCAiYWFhIik7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY2hhbmdlU2lnbmF0dXJlR2VzdHVyZS9EZWxldGVQYXJhbUluU3VwZXJVc2VkX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY2hhbmdlU2lnbmF0dXJlR2VzdHVyZS9EZWxldGVQYXJhbUluU3VwZXJVc2VkX2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODFiOTNmZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jaGFuZ2VTaWduYXR1cmVHZXN0dXJlL0RlbGV0ZVBhcmFtSW5TdXBlclVzZWRfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDE0IEBACitwdWJsaWMgY2xhc3MgUGFyZW50IHsKKyAgcHVibGljIHZvaWQgZm9vKGZsb2F0IGosIFN0cmluZyBzKSB7CisgICAgU3lzdGVtLm91dC5wcmludGxuKGogKyBzICsgaSk7CisgIH0KK30KKworY2xhc3MgQ2hpbGQgZXh0ZW5kcyBQYXJlbnQgeworICBwdWJsaWMgdm9pZCBmb28oZmxvYXQgaiwgIFN0cmluZyBzICkgeworICB9CisKKyAgdm9pZCBiYXIoKSB7CisgICAgZm9vKDEuMCwgImFhYSIpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NoYW5nZVNpZ25hdHVyZUdlc3R1cmUvTW9kaWZpZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jaGFuZ2VTaWduYXR1cmVHZXN0dXJlL01vZGlmaWVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGZlN2Y0OAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jaGFuZ2VTaWduYXR1cmVHZXN0dXJlL01vZGlmaWVyLmphdmEKQEAgLTAsMCArMSw0IEBACitjbGFzcyBUZXN0IHsKKyAgPGNhcmV0PiB2b2lkIGZvbygpIHsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jaGFuZ2VTaWduYXR1cmVHZXN0dXJlL011bHRpUGFyYW1zLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY2hhbmdlU2lnbmF0dXJlR2VzdHVyZS9NdWx0aVBhcmFtcy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNjZTU4OTkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY2hhbmdlU2lnbmF0dXJlR2VzdHVyZS9NdWx0aVBhcmFtcy5qYXZhCkBAIC0wLDAgKzEsMjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwMC0yMDEyIEpldEJyYWlucyBzLnIuby4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIHJlZmFjdG9yaW5nLmNoYW5nZVNpZ25hdHVyZUdlc3R1cmU7CitpbnRlcmZhY2UgSSB7CisgIHZvaWQgYWRkKDxjYXJldD4pOworfQorCitwdWJsaWMgY2xhc3MgSUltcGwgaW1wbGVtZW50cyBJIHsKKyAgcHVibGljIHZvaWQgYWRkKCl7fQorICAKKyAgdm9pZCBmb28oKSB7CisgICAgYWRkKCk7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY2hhbmdlU2lnbmF0dXJlR2VzdHVyZS9NdWx0aVBhcmFtc19hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NoYW5nZVNpZ25hdHVyZUdlc3R1cmUvTXVsdGlQYXJhbXNfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lOThhZjVmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NoYW5nZVNpZ25hdHVyZUdlc3R1cmUvTXVsdGlQYXJhbXNfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDI3IEBACisvKgorICogQ29weXJpZ2h0IDIwMDAtMjAxMiBKZXRCcmFpbnMgcy5yLm8uCisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcGFja2FnZSByZWZhY3RvcmluZy5jaGFuZ2VTaWduYXR1cmVHZXN0dXJlOworaW50ZXJmYWNlIEkgeworICB2b2lkIGFkZChpbnQgeCwgaW50IHkpOworfQorCitwdWJsaWMgY2xhc3MgSUltcGwgaW1wbGVtZW50cyBJIHsKKyAgcHVibGljIHZvaWQgYWRkKGludCB4LCBpbnQgeSl7fQorICAKKyAgdm9pZCBmb28oKSB7CisgICAgYWRkKCwgKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jaGFuZ2VTaWduYXR1cmVHZXN0dXJlL05ld1BhcmFtLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY2hhbmdlU2lnbmF0dXJlR2VzdHVyZS9OZXdQYXJhbS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk3ZDhmOTcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY2hhbmdlU2lnbmF0dXJlR2VzdHVyZS9OZXdQYXJhbS5qYXZhCkBAIC0wLDAgKzEsNiBAQAorY2xhc3MgVGVzdCB7CisgIHZvaWQgZm9vKGludCBpPGNhcmV0PikgeworICAgIFN5c3RlbS5vdXQucHJpbnRsbihpKTsKKyAgfQorICB2b2lkIGJhcigpe2ZvbygxKTt9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NoYW5nZVNpZ25hdHVyZUdlc3R1cmUvTmV3UGFyYW1JblN1cGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY2hhbmdlU2lnbmF0dXJlR2VzdHVyZS9OZXdQYXJhbUluU3VwZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYTRjZmI0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NoYW5nZVNpZ25hdHVyZUdlc3R1cmUvTmV3UGFyYW1JblN1cGVyLmphdmEKQEAgLTAsMCArMSwxMCBAQAorcHVibGljIGNsYXNzIFBhcmVudCB7CisgIHB1YmxpYyB2b2lkIGZvbyhpbnQgaSkgeworICAgIFN5c3RlbS5vdXQucHJpbnRsbihpKTsKKyAgfQorfQorCitjbGFzcyBDaGlsZCBleHRlbmRzIFBhcmVudCB7CisgIHB1YmxpYyB2b2lkIGZvbyhpbnQgaTxjYXJldD4pIHsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jaGFuZ2VTaWduYXR1cmVHZXN0dXJlL05ld1BhcmFtSW5TdXBlclVzZWQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jaGFuZ2VTaWduYXR1cmVHZXN0dXJlL05ld1BhcmFtSW5TdXBlclVzZWQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZDE2YjVjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NoYW5nZVNpZ25hdHVyZUdlc3R1cmUvTmV3UGFyYW1JblN1cGVyVXNlZC5qYXZhCkBAIC0wLDAgKzEsMTQgQEAKK3B1YmxpYyBjbGFzcyBQYXJlbnQgeworICBwdWJsaWMgdm9pZCBmb28oaW50IGkpIHsKKyAgICBTeXN0ZW0ub3V0LnByaW50bG4oaSk7CisgIH0KK30KKworY2xhc3MgQ2hpbGQgZXh0ZW5kcyBQYXJlbnQgeworICBwdWJsaWMgdm9pZCBmb28oaW50IGk8Y2FyZXQ+KSB7CisgIH0KKworICB2b2lkIGJhcigpIHsKKyAgICBmb28oMSk7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY2hhbmdlU2lnbmF0dXJlR2VzdHVyZS9OZXdQYXJhbUluU3VwZXJVc2VkX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY2hhbmdlU2lnbmF0dXJlR2VzdHVyZS9OZXdQYXJhbUluU3VwZXJVc2VkX2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTYzMzA4NAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jaGFuZ2VTaWduYXR1cmVHZXN0dXJlL05ld1BhcmFtSW5TdXBlclVzZWRfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDE0IEBACitwdWJsaWMgY2xhc3MgUGFyZW50IHsKKyAgcHVibGljIHZvaWQgZm9vKGludCBpLCBpbnQgcGFyYW0pIHsKKyAgICBTeXN0ZW0ub3V0LnByaW50bG4oaSk7CisgIH0KK30KKworY2xhc3MgQ2hpbGQgZXh0ZW5kcyBQYXJlbnQgeworICBwdWJsaWMgdm9pZCBmb28oaW50IGksIGludCBwYXJhbSkgeworICB9CisKKyAgdm9pZCBiYXIoKSB7CisgICAgZm9vKDEsICk7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY2hhbmdlU2lnbmF0dXJlR2VzdHVyZS9OZXdQYXJhbUluU3VwZXJfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jaGFuZ2VTaWduYXR1cmVHZXN0dXJlL05ld1BhcmFtSW5TdXBlcl9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE2Y2FjYjMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY2hhbmdlU2lnbmF0dXJlR2VzdHVyZS9OZXdQYXJhbUluU3VwZXJfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDEwIEBACitwdWJsaWMgY2xhc3MgUGFyZW50IHsKKyAgcHVibGljIHZvaWQgZm9vKGludCBpLCBpbnQgcGFyYW0pIHsKKyAgICBTeXN0ZW0ub3V0LnByaW50bG4oaSk7CisgIH0KK30KKworY2xhc3MgQ2hpbGQgZXh0ZW5kcyBQYXJlbnQgeworICBwdWJsaWMgdm9pZCBmb28oaW50IGksIGludCBwYXJhbSkgeworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NoYW5nZVNpZ25hdHVyZUdlc3R1cmUvTmV3UGFyYW1fYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jaGFuZ2VTaWduYXR1cmVHZXN0dXJlL05ld1BhcmFtX2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTQ5ZGE5MAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jaGFuZ2VTaWduYXR1cmVHZXN0dXJlL05ld1BhcmFtX2FmdGVyLmphdmEKQEAgLTAsMCArMSw2IEBACitjbGFzcyBUZXN0IHsKKyAgdm9pZCBmb28oaW50IGksIGludCBwYXJhbSkgeworICAgIFN5c3RlbS5vdXQucHJpbnRsbihpKTsKKyAgfQorICB2b2lkIGJhcigpe2ZvbygxKTt9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NoYW5nZVNpZ25hdHVyZUdlc3R1cmUvTm9Vc2FnZXMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jaGFuZ2VTaWduYXR1cmVHZXN0dXJlL05vVXNhZ2VzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmRjYTdjMgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jaGFuZ2VTaWduYXR1cmVHZXN0dXJlL05vVXNhZ2VzLmphdmEKQEAgLTAsMCArMSw0IEBACitwYWNrYWdlIHJlZmFjdG9yaW5nLmNoYW5nZVNpZ25hdHVyZUdlc3R1cmU7CitjbGFzcyBUZXN0IHsKKyAgcHJpdmF0ZSB2b2lkIG15dmVyeWxvbmFnbmFtZSg8Y2FyZXQ+KXt9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NoYW5nZVNpZ25hdHVyZUdlc3R1cmUvT2NjdXJyZW5jZXNJblNhbWVGaWxlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY2hhbmdlU2lnbmF0dXJlR2VzdHVyZS9PY2N1cnJlbmNlc0luU2FtZUZpbGUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZjA5YWVkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NoYW5nZVNpZ25hdHVyZUdlc3R1cmUvT2NjdXJyZW5jZXNJblNhbWVGaWxlLmphdmEKQEAgLTAsMCArMSw4IEBACitwYWNrYWdlIHJlZmFjdG9yaW5nLmNoYW5nZVNpZ25hdHVyZUdlc3R1cmU7CitpbnRlcmZhY2UgSSB7CisgIHZvaWQgYWRkKDxjYXJldD4pOworfQorCitwdWJsaWMgY2xhc3MgSUltcGwgaW1wbGVtZW50cyBJIHsKKyAgcHVibGljIHZvaWQgYWRkKCl7fQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jaGFuZ2VTaWduYXR1cmVHZXN0dXJlL09jY3VycmVuY2VzSW5TYW1lRmlsZV9hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NoYW5nZVNpZ25hdHVyZUdlc3R1cmUvT2NjdXJyZW5jZXNJblNhbWVGaWxlX2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjZlNGM5YgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jaGFuZ2VTaWduYXR1cmVHZXN0dXJlL09jY3VycmVuY2VzSW5TYW1lRmlsZV9hZnRlci5qYXZhCkBAIC0wLDAgKzEsOCBAQAorcGFja2FnZSByZWZhY3RvcmluZy5jaGFuZ2VTaWduYXR1cmVHZXN0dXJlOworaW50ZXJmYWNlIEkgeworICB2b2lkIGFkZChpbnQgcGFyYW0pOworfQorCitwdWJsaWMgY2xhc3MgSUltcGwgaW1wbGVtZW50cyBJIHsKKyAgcHVibGljIHZvaWQgYWRkKGludCBwYXJhbSl7fQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jaGFuZ2VTaWduYXR1cmVHZXN0dXJlL09uQW5vdGhlck1ldGhvZC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NoYW5nZVNpZ25hdHVyZUdlc3R1cmUvT25Bbm90aGVyTWV0aG9kLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjg2M2EzNgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jaGFuZ2VTaWduYXR1cmVHZXN0dXJlL09uQW5vdGhlck1ldGhvZC5qYXZhCkBAIC0wLDAgKzEsNSBAQAorY2xhc3MgVGVzdCB7CisgIHZvaWQgZm9vKDxjYXJldD4pIHsKKyAgfQorICB2b2lkIGJhcigpe2ZvbygpO30KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY2hhbmdlU2lnbmF0dXJlR2VzdHVyZS9SZW5hbWVMb2NhbFZhcmlhYmxlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY2hhbmdlU2lnbmF0dXJlR2VzdHVyZS9SZW5hbWVMb2NhbFZhcmlhYmxlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTMwMjBiMgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jaGFuZ2VTaWduYXR1cmVHZXN0dXJlL1JlbmFtZUxvY2FsVmFyaWFibGUuamF2YQpAQCAtMCwwICsxLDIwIEBACisvKgorICogQ29weXJpZ2h0IDIwMDAtMjAxMCBKZXRCcmFpbnMgcy5yLm8uCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcHVibGljIGNsYXNzIFRlc3QgeworICB2b2lkIGZvbygpIHsKKyAgICBpbnQgbXk8Y2FyZXQ+aSA9IDA7CisgICAgaWYgKG15aSA+IDApIHsKKyAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihteWkpOworICAgIH0KKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NoYW5nZVNpZ25hdHVyZUdlc3R1cmUvUmVuYW1lTG9jYWxWYXJpYWJsZV9hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NoYW5nZVNpZ25hdHVyZUdlc3R1cmUvUmVuYW1lTG9jYWxWYXJpYWJsZV9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZhMjU3OGQxMAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jaGFuZ2VTaWduYXR1cmVHZXN0dXJlL1JlbmFtZUxvY2FsVmFyaWFibGVfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDIwIEBACisvKgorICogQ29weXJpZ2h0IDIwMDAtMjAxMCBKZXRCcmFpbnMgcy5yLm8uCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcHVibGljIGNsYXNzIFRlc3QgeworICB2b2lkIGZvbygpIHsKKyAgICBpbnQgbXkxaSA9IDA7CisgICAgaWYgKG15MWkgPiAwKSB7CisgICAgICBTeXN0ZW0ub3V0LnByaW50bG4obXkxaSk7CisgICAgfQorICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY2hhbmdlU2lnbmF0dXJlR2VzdHVyZS9SZXR1cm5WYWx1ZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NoYW5nZVNpZ25hdHVyZUdlc3R1cmUvUmV0dXJuVmFsdWUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYWRjMDBhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NoYW5nZVNpZ25hdHVyZUdlc3R1cmUvUmV0dXJuVmFsdWUuamF2YQpAQCAtMCwwICsxLDQgQEAKK2NsYXNzIFRlc3QgeworICBwcml2YXRlIDxjYXJldD4gZm9vKCkgeworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NoYW5nZVNpZ25hdHVyZUdlc3R1cmUvU2ltcGxlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY2hhbmdlU2lnbmF0dXJlR2VzdHVyZS9TaW1wbGUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YjMwN2VjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NoYW5nZVNpZ25hdHVyZUdlc3R1cmUvU2ltcGxlLmphdmEKQEAgLTAsMCArMSw2IEBACitjbGFzcyBUZXN0IHsKKyAgdm9pZCBmb28oaW50IGk8Y2FyZXQ+KSB7CisgICAgU3lzdGVtLm91dC5wcmludGxuKGkpOworICB9CisgIHZvaWQgYmFyKCl7Zm9vKCk7fQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jaGFuZ2VTaWduYXR1cmVHZXN0dXJlL1NpbXBsZV9hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NoYW5nZVNpZ25hdHVyZUdlc3R1cmUvU2ltcGxlX2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWNiYjdkYgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jaGFuZ2VTaWduYXR1cmVHZXN0dXJlL1NpbXBsZV9hZnRlci5qYXZhCkBAIC0wLDAgKzEsNiBAQAorY2xhc3MgVGVzdCB7CisgIHZvaWQgZm9vKGludCBpcGFyYW0pIHsKKyAgICBTeXN0ZW0ub3V0LnByaW50bG4oaXBhcmFtKTsKKyAgfQorICB2b2lkIGJhcigpe2ZvbygpO30KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY2hhbmdlU2lnbmF0dXJlR2VzdHVyZS9TcGFjZXMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jaGFuZ2VTaWduYXR1cmVHZXN0dXJlL1NwYWNlcy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYyNGY2ZGYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY2hhbmdlU2lnbmF0dXJlR2VzdHVyZS9TcGFjZXMuamF2YQpAQCAtMCwwICsxLDYgQEAKK3B1YmxpYyBjbGFzcyBUZXN0IHsKKyAgdm9pZCBmb28oPGNhcmV0Pil7fQorICB2b2lkIGJhcigpIHsKKyAgICBmb28oKTsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NoYW5nZVNpZ25hdHVyZVByb3BhZ2F0aW9uL0V4Y2VwdGlvblNpbXBsZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NoYW5nZVNpZ25hdHVyZVByb3BhZ2F0aW9uL0V4Y2VwdGlvblNpbXBsZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZhYzc2MDIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY2hhbmdlU2lnbmF0dXJlUHJvcGFnYXRpb24vRXhjZXB0aW9uU2ltcGxlLmphdmEKQEAgLTAsMCArMSwxMiBAQAorY2xhc3MgQ2hhbmdlU2lnbmF0dXJlVGVzdCB7CisgICAgdm9pZCA8Y2FyZXQ+Zm9vKCkgeworICAgIH0KKworICAgIHZvaWQgYmFyKCkgeworICAgICAgZm9vKCk7CisgICAgfQorCisgICAgeworICAgICAgICBiYXIoKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NoYW5nZVNpZ25hdHVyZVByb3BhZ2F0aW9uL0V4Y2VwdGlvblNpbXBsZS5qYXZhLmFmdGVyIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NoYW5nZVNpZ25hdHVyZVByb3BhZ2F0aW9uL0V4Y2VwdGlvblNpbXBsZS5qYXZhLmFmdGVyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFjODY3MzgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY2hhbmdlU2lnbmF0dXJlUHJvcGFnYXRpb24vRXhjZXB0aW9uU2ltcGxlLmphdmEuYWZ0ZXIKQEAgLTAsMCArMSwxNiBAQAorY2xhc3MgQ2hhbmdlU2lnbmF0dXJlVGVzdCB7CisgICAgdm9pZCBmb28oKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICB9CisKKyAgICB2b2lkIGJhcigpIHRocm93cyBFeGNlcHRpb24geworICAgICAgZm9vKCk7CisgICAgfQorCisgICAgeworICAgICAgICB0cnkgeworICAgICAgICAgICAgYmFyKCk7CisgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICBlLnByaW50U3RhY2tUcmFjZSgpOyAgLy9UbyBjaGFuZ2UgYm9keSBvZiBjYXRjaCBzdGF0ZW1lbnQgdXNlIEZpbGUgfCBTZXR0aW5ncyB8IEZpbGUgVGVtcGxhdGVzLgorICAgICAgICB9CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jaGFuZ2VTaWduYXR1cmVQcm9wYWdhdGlvbi9FeGNlcHRpb25XaXRoSW1wbGljaXRDb25zdHJ1Y3Rvci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NoYW5nZVNpZ25hdHVyZVByb3BhZ2F0aW9uL0V4Y2VwdGlvbldpdGhJbXBsaWNpdENvbnN0cnVjdG9yLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmQ4ZmQxMgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jaGFuZ2VTaWduYXR1cmVQcm9wYWdhdGlvbi9FeGNlcHRpb25XaXRoSW1wbGljaXRDb25zdHJ1Y3Rvci5qYXZhCkBAIC0wLDAgKzEsOSBAQAorcHVibGljIGNsYXNzIFAgeworICBwdWJsaWMgUDxjYXJldD4oKSB7CisgIH0KK30KKworY2xhc3MgUFAgZXh0ZW5kcyBQIHsKKyAgcHVibGljIFBQKCl7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY2hhbmdlU2lnbmF0dXJlUHJvcGFnYXRpb24vRXhjZXB0aW9uV2l0aEltcGxpY2l0Q29uc3RydWN0b3IuamF2YS5hZnRlciBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jaGFuZ2VTaWduYXR1cmVQcm9wYWdhdGlvbi9FeGNlcHRpb25XaXRoSW1wbGljaXRDb25zdHJ1Y3Rvci5qYXZhLmFmdGVyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmExOWRiYjQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY2hhbmdlU2lnbmF0dXJlUHJvcGFnYXRpb24vRXhjZXB0aW9uV2l0aEltcGxpY2l0Q29uc3RydWN0b3IuamF2YS5hZnRlcgpAQCAtMCwwICsxLDEwIEBACitwdWJsaWMgY2xhc3MgUCB7CisgIHB1YmxpYyBQKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisgIH0KK30KKworY2xhc3MgUFAgZXh0ZW5kcyBQIHsKKyAgcHVibGljIFBQKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgICBzdXBlcigpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NoYW5nZVNpZ25hdHVyZVByb3BhZ2F0aW9uL0V4Y2VwdGlvbldpdGhOb0NvbnN0cnVjdG9yLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY2hhbmdlU2lnbmF0dXJlUHJvcGFnYXRpb24vRXhjZXB0aW9uV2l0aE5vQ29uc3RydWN0b3IuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NzljZDU2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NoYW5nZVNpZ25hdHVyZVByb3BhZ2F0aW9uL0V4Y2VwdGlvbldpdGhOb0NvbnN0cnVjdG9yLmphdmEKQEAgLTAsMCArMSw3IEBACitwdWJsaWMgY2xhc3MgUCB7CisgIHB1YmxpYyBQPGNhcmV0PigpIHsKKyAgfQorfQorCitjbGFzcyBQUCBleHRlbmRzIFAgeworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jaGFuZ2VTaWduYXR1cmVQcm9wYWdhdGlvbi9FeGNlcHRpb25XaXRoTm9Db25zdHJ1Y3Rvci5qYXZhLmFmdGVyIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NoYW5nZVNpZ25hdHVyZVByb3BhZ2F0aW9uL0V4Y2VwdGlvbldpdGhOb0NvbnN0cnVjdG9yLmphdmEuYWZ0ZXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzVkODQyZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jaGFuZ2VTaWduYXR1cmVQcm9wYWdhdGlvbi9FeGNlcHRpb25XaXRoTm9Db25zdHJ1Y3Rvci5qYXZhLmFmdGVyCkBAIC0wLDAgKzEsMTAgQEAKK3B1YmxpYyBjbGFzcyBQIHsKKyAgcHVibGljIFAoKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgfQorfQorCitjbGFzcyBQUCBleHRlbmRzIFAgeworICAgIFBQKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgICAgIHN1cGVyKCk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jaGFuZ2VTaWduYXR1cmVQcm9wYWdhdGlvbi9FeGNlcHRpb25XaXRoT3ZlcnJpZGluZy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NoYW5nZVNpZ25hdHVyZVByb3BhZ2F0aW9uL0V4Y2VwdGlvbldpdGhPdmVycmlkaW5nLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmYzZmIyZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jaGFuZ2VTaWduYXR1cmVQcm9wYWdhdGlvbi9FeGNlcHRpb25XaXRoT3ZlcnJpZGluZy5qYXZhCkBAIC0wLDAgKzEsMTggQEAKK2NsYXNzIENoYW5nZVNpZ25hdHVyZVRlc3QgeworICAgIHZvaWQgPGNhcmV0PmZvbygpIHsKKyAgICB9CisKKyAgICB2b2lkIGJhcigpIHsKKyAgICAgIGZvbygpOworICAgIH0KKworICAgIHsKKyAgICAgICAgYmFyKCk7CisgICAgfQorfQorCitjbGFzcyBEZXJpdmVkIGV4dGVuZHMgQ2hhbmdlU2lnbmF0dXJlVGVzdCB7CisgIHZvaWQgYmFyICgpIHsKKyAgICBzdXBlci5iYXIoKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jaGFuZ2VTaWduYXR1cmVQcm9wYWdhdGlvbi9FeGNlcHRpb25XaXRoT3ZlcnJpZGluZy5qYXZhLmFmdGVyIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NoYW5nZVNpZ25hdHVyZVByb3BhZ2F0aW9uL0V4Y2VwdGlvbldpdGhPdmVycmlkaW5nLmphdmEuYWZ0ZXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmIzM2UyNAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jaGFuZ2VTaWduYXR1cmVQcm9wYWdhdGlvbi9FeGNlcHRpb25XaXRoT3ZlcnJpZGluZy5qYXZhLmFmdGVyCkBAIC0wLDAgKzEsMjIgQEAKK2NsYXNzIENoYW5nZVNpZ25hdHVyZVRlc3QgeworICAgIHZvaWQgZm9vKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgfQorCisgICAgdm9pZCBiYXIoKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgIGZvbygpOworICAgIH0KKworICAgIHsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGJhcigpOworICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgZS5wcmludFN0YWNrVHJhY2UoKTsgIC8vVG8gY2hhbmdlIGJvZHkgb2YgY2F0Y2ggc3RhdGVtZW50IHVzZSBGaWxlIHwgU2V0dGluZ3MgfCBGaWxlIFRlbXBsYXRlcy4KKyAgICAgICAgfQorICAgIH0KK30KKworY2xhc3MgRGVyaXZlZCBleHRlbmRzIENoYW5nZVNpZ25hdHVyZVRlc3QgeworICB2b2lkIGJhciAoKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICBzdXBlci5iYXIoKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jaGFuZ2VTaWduYXR1cmVQcm9wYWdhdGlvbi9QYXJhbVNpbXBsZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NoYW5nZVNpZ25hdHVyZVByb3BhZ2F0aW9uL1BhcmFtU2ltcGxlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzVmMGZjZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jaGFuZ2VTaWduYXR1cmVQcm9wYWdhdGlvbi9QYXJhbVNpbXBsZS5qYXZhCkBAIC0wLDAgKzEsMTIgQEAKK2NsYXNzIENoYW5nZVNpZ25hdHVyZVRlc3QgeworICAgIHB1YmxpYyA8Y2FyZXQ+Q2hhbmdlU2lnbmF0dXJlVGVzdCgpIHsKKyAgICB9CisKKyAgICB2b2lkIGZvbygpIHsKKyAgICAgICAgbmV3IENoYW5nZVNpZ25hdHVyZVRlc3QoKTsKKyAgICB9CisKKyAgICB7CisgICAgICBmb28oKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY2hhbmdlU2lnbmF0dXJlUHJvcGFnYXRpb24vUGFyYW1TaW1wbGUuamF2YS5hZnRlciBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jaGFuZ2VTaWduYXR1cmVQcm9wYWdhdGlvbi9QYXJhbVNpbXBsZS5qYXZhLmFmdGVyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY1NmM5NDUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY2hhbmdlU2lnbmF0dXJlUHJvcGFnYXRpb24vUGFyYW1TaW1wbGUuamF2YS5hZnRlcgpAQCAtMCwwICsxLDEyIEBACitjbGFzcyBDaGFuZ2VTaWduYXR1cmVUZXN0IHsKKyAgICBwdWJsaWMgQ2hhbmdlU2lnbmF0dXJlVGVzdChDbGFzcyBjbGF6eikgeworICAgIH0KKworICAgIHZvaWQgZm9vKENsYXNzIGNsYXp6KSB7CisgICAgICAgIG5ldyBDaGFuZ2VTaWduYXR1cmVUZXN0KGNsYXp6KTsKKyAgICB9CisKKyAgICB7CisgICAgICBmb28obnVsbCk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NoYW5nZVNpZ25hdHVyZVByb3BhZ2F0aW9uL1BhcmFtVHlwZVN1YnN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY2hhbmdlU2lnbmF0dXJlUHJvcGFnYXRpb24vUGFyYW1UeXBlU3Vic3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNzRmM2NjYwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jaGFuZ2VTaWduYXR1cmVQcm9wYWdhdGlvbi9QYXJhbVR5cGVTdWJzdC5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKK2NsYXNzIEJhc2U8VD4geworICB2b2lkIG08Y2FyZXQ+KCkgeworICB9Cit9CisKK2NsYXNzIEEgZXh0ZW5kcyBCYXNlPFN0cmluZz4geworICB2b2lkIHgoKSB7CisgICAgbSgpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NoYW5nZVNpZ25hdHVyZVByb3BhZ2F0aW9uL1BhcmFtVHlwZVN1YnN0LmphdmEuYWZ0ZXIgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY2hhbmdlU2lnbmF0dXJlUHJvcGFnYXRpb24vUGFyYW1UeXBlU3Vic3QuamF2YS5hZnRlcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNzA2OThhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NoYW5nZVNpZ25hdHVyZVByb3BhZ2F0aW9uL1BhcmFtVHlwZVN1YnN0LmphdmEuYWZ0ZXIKQEAgLTAsMCArMSwxMCBAQAorY2xhc3MgQmFzZTxUPiB7CisgIHZvaWQgbShUIGNsYXp6KSB7CisgIH0KK30KKworY2xhc3MgQSBleHRlbmRzIEJhc2U8U3RyaW5nPiB7CisgIHZvaWQgeChTdHJpbmcgY2xhenopIHsKKyAgICBtKGNsYXp6KTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jaGFuZ2VTaWduYXR1cmVQcm9wYWdhdGlvbi9QYXJhbVdpdGhJbXBsaWNpdENvbnN0cnVjdG9yLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY2hhbmdlU2lnbmF0dXJlUHJvcGFnYXRpb24vUGFyYW1XaXRoSW1wbGljaXRDb25zdHJ1Y3Rvci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZkOGZkMTIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY2hhbmdlU2lnbmF0dXJlUHJvcGFnYXRpb24vUGFyYW1XaXRoSW1wbGljaXRDb25zdHJ1Y3Rvci5qYXZhCkBAIC0wLDAgKzEsOSBAQAorcHVibGljIGNsYXNzIFAgeworICBwdWJsaWMgUDxjYXJldD4oKSB7CisgIH0KK30KKworY2xhc3MgUFAgZXh0ZW5kcyBQIHsKKyAgcHVibGljIFBQKCl7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY2hhbmdlU2lnbmF0dXJlUHJvcGFnYXRpb24vUGFyYW1XaXRoSW1wbGljaXRDb25zdHJ1Y3Rvci5qYXZhLmFmdGVyIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NoYW5nZVNpZ25hdHVyZVByb3BhZ2F0aW9uL1BhcmFtV2l0aEltcGxpY2l0Q29uc3RydWN0b3IuamF2YS5hZnRlcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MWRiNDExCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NoYW5nZVNpZ25hdHVyZVByb3BhZ2F0aW9uL1BhcmFtV2l0aEltcGxpY2l0Q29uc3RydWN0b3IuamF2YS5hZnRlcgpAQCAtMCwwICsxLDEwIEBACitwdWJsaWMgY2xhc3MgUCB7CisgIHB1YmxpYyBQKENsYXNzIGNsYXp6KSB7CisgIH0KK30KKworY2xhc3MgUFAgZXh0ZW5kcyBQIHsKKyAgcHVibGljIFBQKENsYXNzIGNsYXp6KXsKKyAgICAgIHN1cGVyKGNsYXp6KTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jaGFuZ2VTaWduYXR1cmVQcm9wYWdhdGlvbi9QYXJhbVdpdGhJbXBsaWNpdENvbnN0cnVjdG9ycy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NoYW5nZVNpZ25hdHVyZVByb3BhZ2F0aW9uL1BhcmFtV2l0aEltcGxpY2l0Q29uc3RydWN0b3JzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzdiNTIzNgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jaGFuZ2VTaWduYXR1cmVQcm9wYWdhdGlvbi9QYXJhbVdpdGhJbXBsaWNpdENvbnN0cnVjdG9ycy5qYXZhCkBAIC0wLDAgKzEsMTQgQEAKK3B1YmxpYyBjbGFzcyBQIHsKKyAgcHVibGljIFA8Y2FyZXQ+KCkgeworICB9Cit9CisKK2NsYXNzIFBQIGV4dGVuZHMgUCB7CisgIHB1YmxpYyBQUCgpeworICB9Cit9CisKK2NsYXNzIFBQUCBleHRlbmRzIFAgeworICBwdWJsaWMgUFBQKCl7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY2hhbmdlU2lnbmF0dXJlUHJvcGFnYXRpb24vUGFyYW1XaXRoSW1wbGljaXRDb25zdHJ1Y3RvcnMuamF2YS5hZnRlciBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jaGFuZ2VTaWduYXR1cmVQcm9wYWdhdGlvbi9QYXJhbVdpdGhJbXBsaWNpdENvbnN0cnVjdG9ycy5qYXZhLmFmdGVyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ3ZmQ0NDAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY2hhbmdlU2lnbmF0dXJlUHJvcGFnYXRpb24vUGFyYW1XaXRoSW1wbGljaXRDb25zdHJ1Y3RvcnMuamF2YS5hZnRlcgpAQCAtMCwwICsxLDE2IEBACitwdWJsaWMgY2xhc3MgUCB7CisgIHB1YmxpYyBQKENsYXNzIGNsYXp6KSB7CisgIH0KK30KKworY2xhc3MgUFAgZXh0ZW5kcyBQIHsKKyAgcHVibGljIFBQKENsYXNzIGNsYXp6KXsKKyAgICAgIHN1cGVyKGNsYXp6KTsKKyAgfQorfQorCitjbGFzcyBQUFAgZXh0ZW5kcyBQIHsKKyAgcHVibGljIFBQUChDbGFzcyBjbGF6eil7CisgICAgICBzdXBlcihjbGF6eik7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY2hhbmdlU2lnbmF0dXJlUHJvcGFnYXRpb24vUGFyYW1XaXRoTm9Db25zdHJ1Y3Rvci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NoYW5nZVNpZ25hdHVyZVByb3BhZ2F0aW9uL1BhcmFtV2l0aE5vQ29uc3RydWN0b3IuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NzljZDU2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NoYW5nZVNpZ25hdHVyZVByb3BhZ2F0aW9uL1BhcmFtV2l0aE5vQ29uc3RydWN0b3IuamF2YQpAQCAtMCwwICsxLDcgQEAKK3B1YmxpYyBjbGFzcyBQIHsKKyAgcHVibGljIFA8Y2FyZXQ+KCkgeworICB9Cit9CisKK2NsYXNzIFBQIGV4dGVuZHMgUCB7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NoYW5nZVNpZ25hdHVyZVByb3BhZ2F0aW9uL1BhcmFtV2l0aE5vQ29uc3RydWN0b3IuamF2YS5hZnRlciBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jaGFuZ2VTaWduYXR1cmVQcm9wYWdhdGlvbi9QYXJhbVdpdGhOb0NvbnN0cnVjdG9yLmphdmEuYWZ0ZXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTFlMmYwYQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jaGFuZ2VTaWduYXR1cmVQcm9wYWdhdGlvbi9QYXJhbVdpdGhOb0NvbnN0cnVjdG9yLmphdmEuYWZ0ZXIKQEAgLTAsMCArMSwxMCBAQAorcHVibGljIGNsYXNzIFAgeworICBwdWJsaWMgUChDbGFzcyBjbGF6eikgeworICB9Cit9CisKK2NsYXNzIFBQIGV4dGVuZHMgUCB7CisgICAgUFAoQ2xhc3MgY2xhenopIHsKKyAgICAgICAgc3VwZXIoY2xhenopOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY2hhbmdlU2lnbmF0dXJlUHJvcGFnYXRpb24vUGFyYW1XaXRoT3ZlcnJpZGluZy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NoYW5nZVNpZ25hdHVyZVByb3BhZ2F0aW9uL1BhcmFtV2l0aE92ZXJyaWRpbmcuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZWE4OWQ3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NoYW5nZVNpZ25hdHVyZVByb3BhZ2F0aW9uL1BhcmFtV2l0aE92ZXJyaWRpbmcuamF2YQpAQCAtMCwwICsxLDE2IEBACitjbGFzcyBDaGFuZ2VTaWduYXR1cmVUZXN0IHsKKyAgICBwdWJsaWMgPGNhcmV0PkNoYW5nZVNpZ25hdHVyZVRlc3QoKSB7CisgICAgfQorCisgICAgdm9pZCBmb28oKSB7CisgICAgICAgIG5ldyBDaGFuZ2VTaWduYXR1cmVUZXN0KCk7CisgICAgfQorCisgICAgeworICAgICAgZm9vKCk7CisgICAgfQorfQorCitjbGFzcyBEZXJpdmVkIGV4dGVuZHMgQ2hhbmdlU2lnbmF0dXJlVGVzdCB7CisgIHZvaWQgZm9vICgpIHt9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NoYW5nZVNpZ25hdHVyZVByb3BhZ2F0aW9uL1BhcmFtV2l0aE92ZXJyaWRpbmcuamF2YS5hZnRlciBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jaGFuZ2VTaWduYXR1cmVQcm9wYWdhdGlvbi9QYXJhbVdpdGhPdmVycmlkaW5nLmphdmEuYWZ0ZXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDg3ZWIzYQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jaGFuZ2VTaWduYXR1cmVQcm9wYWdhdGlvbi9QYXJhbVdpdGhPdmVycmlkaW5nLmphdmEuYWZ0ZXIKQEAgLTAsMCArMSwyMCBAQAorY2xhc3MgQ2hhbmdlU2lnbmF0dXJlVGVzdCB7CisgICAgcHVibGljIENoYW5nZVNpZ25hdHVyZVRlc3QoQ2xhc3MgY2xhenopIHsKKyAgICB9CisKKyAgICB2b2lkIGZvbyhDbGFzcyBjbGF6eikgeworICAgICAgICBuZXcgQ2hhbmdlU2lnbmF0dXJlVGVzdChjbGF6eik7CisgICAgfQorCisgICAgeworICAgICAgZm9vKG51bGwpOworICAgIH0KK30KKworY2xhc3MgRGVyaXZlZCBleHRlbmRzIENoYW5nZVNpZ25hdHVyZVRlc3QgeworICAgIERlcml2ZWQoKSB7CisgICAgICAgIHN1cGVyKG51bGwpOworICAgIH0KKworICAgIHZvaWQgZm9vKENsYXNzIGNsYXp6KSB7fQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jaGFuZ2VTaWduYXR1cmVUYXJnZXQvaW5DbGFzc1R5cGVQYXJhbWV0ZXJzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY2hhbmdlU2lnbmF0dXJlVGFyZ2V0L2luQ2xhc3NUeXBlUGFyYW1ldGVycy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNkODE2YmYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY2hhbmdlU2lnbmF0dXJlVGFyZ2V0L2luQ2xhc3NUeXBlUGFyYW1ldGVycy5qYXZhCkBAIC0wLDAgKzEsMyBAQAoraW1wb3J0IGphdmEudXRpbC4qOworY2xhc3MgQTE8PGNhcmV0PlQ+IHsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY2hhbmdlU2lnbmF0dXJlVGFyZ2V0L2luTWV0aG9kQXJndW1lbnRzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY2hhbmdlU2lnbmF0dXJlVGFyZ2V0L2luTWV0aG9kQXJndW1lbnRzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2I1NmU1ZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jaGFuZ2VTaWduYXR1cmVUYXJnZXQvaW5NZXRob2RBcmd1bWVudHMuamF2YQpAQCAtMCwwICsxLDEyIEBACitpbXBvcnQgamF2YS51dGlsLio7CitjbGFzcyBCeworCisgICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgeworICAgICAgQiBiID0gbnVsbDsKKyAgICAgIGIuYmFyKGIuPFN0cjxjYXJldD5pbmc+Zm9vKCIiLCAiIikpOworICAgIH0KKworICAgIDxUPiBTdHJpbmcgZm9vKFQgdCwgU3RyaW5nIHMpe3JldHVybiBudWxsO30KKyAgICBTdHJpbmcgIGJhcihTdHJpbmcgcykge3JldHVybiBudWxsO30KKworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jaGFuZ2VTaWduYXR1cmVUYXJnZXQvaW5NZXRob2RQYXJhbWV0ZXJzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY2hhbmdlU2lnbmF0dXJlVGFyZ2V0L2luTWV0aG9kUGFyYW1ldGVycy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE2NjMzM2IKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY2hhbmdlU2lnbmF0dXJlVGFyZ2V0L2luTWV0aG9kUGFyYW1ldGVycy5qYXZhCkBAIC0wLDAgKzEsNCBAQAoraW1wb3J0IGphdmEudXRpbC4qOworY2xhc3MgQiB7CisgICAgPFQ+IFN0cmluZyAgZm9vKFQgdCwgU3Q8Y2FyZXQ+cmluZyBzKXtyZXR1cm4gbnVsbDt9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NoYW5nZVNpZ25hdHVyZVRhcmdldC9pblR5cGVBcmd1bWVudHMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jaGFuZ2VTaWduYXR1cmVUYXJnZXQvaW5UeXBlQXJndW1lbnRzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjczMzJjZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jaGFuZ2VTaWduYXR1cmVUYXJnZXQvaW5UeXBlQXJndW1lbnRzLmphdmEKQEAgLTAsMCArMSwyNCBAQAorY2xhc3MgQTE8VD4geworICBBMSgpe30KKworICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CisKKyAgICBDYWxsYWJsZTxPYmplY3Q+IGNhbGxhYmxlID0gbmV3IENhbGxhYmxlPE9iamVjdD4oKSB7CisgICAgICBwdWJsaWMgT2JqZWN0IGNhbGwoKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgICAgcmV0dXJuIG5ldyBBMTxTdHI8Y2FyZXQ+aW5nPigpLnRvU3RyaW5nKCk7CisKKyAgICAgIH0KKyAgICB9OworICAgIEIgYiA9IG51bGw7CisgICAgYi5iYXIoYi48U3RyaW5nPmZvbygiIiwgIiIpKTsKKyAgfQorCisKKyAgPFQ+IFN0cmluZyBmb28oVCB0LCBTdHJpbmcgcykgeworICAgIHJldHVybiBudWxsOworICB9CisKKyAgU3RyaW5nIGJhcihTdHJpbmcgcykgeworICAgIHJldHVybiBudWxsOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NvbnZlcnRUb0luc3RhbmNlTWV0aG9kL0ludGVyZmFjZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NvbnZlcnRUb0luc3RhbmNlTWV0aG9kL0ludGVyZmFjZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA3ZjQ1YWUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY29udmVydFRvSW5zdGFuY2VNZXRob2QvSW50ZXJmYWNlLmphdmEKQEAgLTAsMCArMSwyMiBAQAoraW50ZXJmYWNlIEkgeworfQorCitpbnRlcmZhY2UgSiBleHRlbmRzIEkgeworfQorCitjbGFzcyBJSW1wbCBpbXBsZW1lbnRzIEkgeworfQorCitjbGFzcyBKSW1wbCBpbXBsZW1lbnRzIEogeworfQorCitjbGFzcyBYIHsKKyAgICBzdGF0aWMgdm9pZCA8Y2FyZXQ+bWV0aG9kKGludCBpLCBJIGludGYpIHsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJpID0gIiArIGkgKyAiLCBpbnRmID0gIiArIGludGYpOworICAgIH0KKworICAgIHsKKyAgICAgICAgSiBqID0gbmV3IEpJbXBsKCk7CisgICAgICAgIG1ldGhvZCgwLCBqKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NvbnZlcnRUb0luc3RhbmNlTWV0aG9kL0ludGVyZmFjZS5qYXZhLmFmdGVyIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NvbnZlcnRUb0luc3RhbmNlTWV0aG9kL0ludGVyZmFjZS5qYXZhLmFmdGVyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU1ZTU2ZTgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY29udmVydFRvSW5zdGFuY2VNZXRob2QvSW50ZXJmYWNlLmphdmEuYWZ0ZXIKQEAgLTAsMCArMSwyNiBAQAoraW50ZXJmYWNlIEkgeworICAgIHZvaWQgbWV0aG9kKGludCBpKTsKK30KKworaW50ZXJmYWNlIEogZXh0ZW5kcyBJIHsKK30KKworY2xhc3MgSUltcGwgaW1wbGVtZW50cyBJIHsKKyAgICBwdWJsaWMgdm9pZCBtZXRob2QoaW50IGkpIHsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJpID0gIiArIGkgKyAiLCBpbnRmID0gIiArIHRoaXMpOworICAgIH0KK30KKworY2xhc3MgSkltcGwgaW1wbGVtZW50cyBKIHsKKyAgICBwdWJsaWMgdm9pZCBtZXRob2QoaW50IGkpIHsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJpID0gIiArIGkgKyAiLCBpbnRmID0gIiArIHRoaXMpOworICAgIH0KK30KKworY2xhc3MgWCB7CisKKyAgICB7CisgICAgICAgIEogaiA9IG5ldyBKSW1wbCgpOworICAgICAgICBqLm1ldGhvZCgwKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NvbnZlcnRUb0luc3RhbmNlTWV0aG9kL0ludGVyZmFjZTIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jb252ZXJ0VG9JbnN0YW5jZU1ldGhvZC9JbnRlcmZhY2UyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTkxNWI4OAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jb252ZXJ0VG9JbnN0YW5jZU1ldGhvZC9JbnRlcmZhY2UyLmphdmEKQEAgLTAsMCArMSwxNiBAQAoraW50ZXJmYWNlIEkgeworfQorCitjbGFzcyBDIGltcGxlbWVudHMgSSB7Cit9CisKK2ludGVyZmFjZSBKIGV4dGVuZHMgSSB7Cit9CisKK2NsYXNzIEQgZXh0ZW5kcyBDIGltcGxlbWVudHMgSiB7Cit9CisKK2NsYXNzIFggeworICAgIHN0YXRpYyB2b2lkIDxjYXJldD5tKEkgaSkgeworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY29udmVydFRvSW5zdGFuY2VNZXRob2QvSW50ZXJmYWNlMi5qYXZhLmFmdGVyIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NvbnZlcnRUb0luc3RhbmNlTWV0aG9kL0ludGVyZmFjZTIuamF2YS5hZnRlcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NDBlNzhiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NvbnZlcnRUb0luc3RhbmNlTWV0aG9kL0ludGVyZmFjZTIuamF2YS5hZnRlcgpAQCAtMCwwICsxLDE3IEBACitpbnRlcmZhY2UgSSB7CisgICAgdm9pZCBtKCk7Cit9CisKK2NsYXNzIEMgaW1wbGVtZW50cyBJIHsKKyAgICBwdWJsaWMgdm9pZCBtKCkgeworICAgIH0KK30KKworaW50ZXJmYWNlIEogZXh0ZW5kcyBJIHsKK30KKworY2xhc3MgRCBleHRlbmRzIEMgaW1wbGVtZW50cyBKIHsKK30KKworY2xhc3MgWCB7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NvbnZlcnRUb0luc3RhbmNlTWV0aG9kL0ludGVyZmFjZTMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jb252ZXJ0VG9JbnN0YW5jZU1ldGhvZC9JbnRlcmZhY2UzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODhkN2EzMgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jb252ZXJ0VG9JbnN0YW5jZU1ldGhvZC9JbnRlcmZhY2UzLmphdmEKQEAgLTAsMCArMSwzNyBAQAoraW50ZXJmYWNlIFBzaUFudEVsZW1lbnQgeworfQorCitpbnRlcmZhY2UgQW50RWxlbWVudCBleHRlbmRzIFBzaUFudEVsZW1lbnQgeworfQorCitjbGFzcyBBbnRFbGVtZW50SW1wbCBpbXBsZW1lbnRzIEFudEVsZW1lbnQgeworfQorCitpbnRlcmZhY2UgQW50TmFtZUlkZW50aWZpZXIgZXh0ZW5kcyBBbnRFbGVtZW50IHsKK30KKworY2xhc3MgQW50TmFtZUlkZW50aWZpZXJJbXBsIGV4dGVuZHMgQW50RWxlbWVudEltcGwgaW1wbGVtZW50cyBBbnROYW1lSWRlbnRpZmllciB7Cit9CisKK2ludGVyZmFjZSBBbnRTdHJ1Y3R1cmVkRWxlbWVudCBleHRlbmRzIEFudEVsZW1lbnQgeworfQorCitjbGFzcyBBbnRTdHJ1Y3R1cmVkRWxlbWVudEltcGwgZXh0ZW5kcyBBbnRFbGVtZW50SW1wbCBpbXBsZW1lbnRzIEFudFN0cnVjdHVyZWRFbGVtZW50IHsKK30KKworaW50ZXJmYWNlIEFudFRhc2sgZXh0ZW5kcyBBbnRTdHJ1Y3R1cmVkRWxlbWVudCB7Cit9CisKK2NsYXNzIEFudFRhc2tJbXBsIGV4dGVuZHMgQW50U3RydWN0dXJlZEVsZW1lbnRJbXBsIGltcGxlbWVudHMgQW50VGFzayB7Cit9CisKK2ludGVyZmFjZSBBbnRNYWNyb0RlZiBleHRlbmRzIEFudFRhc2sgeworfQorCitjbGFzcyBBbnRNYWNyb0RlZkltcGwgZXh0ZW5kcyBBbnRUYXNrSW1wbCBpbXBsZW1lbnRzIEFudE1hY3JvRGVmIHsKK30KKworY2xhc3MgWCB7CisgICAgc3RhdGljIHZvaWQgPGNhcmV0Pm0oUHNpQW50RWxlbWVudCBpKSB7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jb252ZXJ0VG9JbnN0YW5jZU1ldGhvZC9JbnRlcmZhY2UzLmphdmEuYWZ0ZXIgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY29udmVydFRvSW5zdGFuY2VNZXRob2QvSW50ZXJmYWNlMy5qYXZhLmFmdGVyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNlZjU5M2EKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY29udmVydFRvSW5zdGFuY2VNZXRob2QvSW50ZXJmYWNlMy5qYXZhLmFmdGVyCkBAIC0wLDAgKzEsMzggQEAKK2ludGVyZmFjZSBQc2lBbnRFbGVtZW50IHsKKyAgICB2b2lkIG0oKTsKK30KKworaW50ZXJmYWNlIEFudEVsZW1lbnQgZXh0ZW5kcyBQc2lBbnRFbGVtZW50IHsKK30KKworY2xhc3MgQW50RWxlbWVudEltcGwgaW1wbGVtZW50cyBBbnRFbGVtZW50IHsKKyAgICBwdWJsaWMgdm9pZCBtKCkgeworICAgIH0KK30KKworaW50ZXJmYWNlIEFudE5hbWVJZGVudGlmaWVyIGV4dGVuZHMgQW50RWxlbWVudCB7Cit9CisKK2NsYXNzIEFudE5hbWVJZGVudGlmaWVySW1wbCBleHRlbmRzIEFudEVsZW1lbnRJbXBsIGltcGxlbWVudHMgQW50TmFtZUlkZW50aWZpZXIgeworfQorCitpbnRlcmZhY2UgQW50U3RydWN0dXJlZEVsZW1lbnQgZXh0ZW5kcyBBbnRFbGVtZW50IHsKK30KKworY2xhc3MgQW50U3RydWN0dXJlZEVsZW1lbnRJbXBsIGV4dGVuZHMgQW50RWxlbWVudEltcGwgaW1wbGVtZW50cyBBbnRTdHJ1Y3R1cmVkRWxlbWVudCB7Cit9CisKK2ludGVyZmFjZSBBbnRUYXNrIGV4dGVuZHMgQW50U3RydWN0dXJlZEVsZW1lbnQgeworfQorCitjbGFzcyBBbnRUYXNrSW1wbCBleHRlbmRzIEFudFN0cnVjdHVyZWRFbGVtZW50SW1wbCBpbXBsZW1lbnRzIEFudFRhc2sgeworfQorCitpbnRlcmZhY2UgQW50TWFjcm9EZWYgZXh0ZW5kcyBBbnRUYXNrIHsKK30KKworY2xhc3MgQW50TWFjcm9EZWZJbXBsIGV4dGVuZHMgQW50VGFza0ltcGwgaW1wbGVtZW50cyBBbnRNYWNyb0RlZiB7Cit9CisKK2NsYXNzIFggeworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jb252ZXJ0VG9JbnN0YW5jZU1ldGhvZC9JbnRlcmZhY2VQcml2YXRlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY29udmVydFRvSW5zdGFuY2VNZXRob2QvSW50ZXJmYWNlUHJpdmF0ZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZjMjQ3ZjYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY29udmVydFRvSW5zdGFuY2VNZXRob2QvSW50ZXJmYWNlUHJpdmF0ZS5qYXZhCkBAIC0wLDAgKzEsMjIgQEAKK2ludGVyZmFjZSBJIHsKK30KKworaW50ZXJmYWNlIEogZXh0ZW5kcyBJIHsKK30KKworY2xhc3MgSUltcGwgaW1wbGVtZW50cyBJIHsKK30KKworY2xhc3MgSkltcGwgaW1wbGVtZW50cyBKIHsKK30KKworY2xhc3MgWCB7CisgICAgcHJpdmF0ZSBzdGF0aWMgdm9pZCA8Y2FyZXQ+bWV0aG9kKGludCBpLCBJIGludGYpIHsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJpID0gIiArIGkgKyAiLCBpbnRmID0gIiArIGludGYpOworICAgIH0KKworICAgIHsKKyAgICAgICAgSiBqID0gbmV3IEpJbXBsKCk7CisgICAgICAgIG1ldGhvZCgwLCBqKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NvbnZlcnRUb0luc3RhbmNlTWV0aG9kL0ludGVyZmFjZVByaXZhdGUuamF2YS5hZnRlciBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jb252ZXJ0VG9JbnN0YW5jZU1ldGhvZC9JbnRlcmZhY2VQcml2YXRlLmphdmEuYWZ0ZXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTVlNTZlOAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jb252ZXJ0VG9JbnN0YW5jZU1ldGhvZC9JbnRlcmZhY2VQcml2YXRlLmphdmEuYWZ0ZXIKQEAgLTAsMCArMSwyNiBAQAoraW50ZXJmYWNlIEkgeworICAgIHZvaWQgbWV0aG9kKGludCBpKTsKK30KKworaW50ZXJmYWNlIEogZXh0ZW5kcyBJIHsKK30KKworY2xhc3MgSUltcGwgaW1wbGVtZW50cyBJIHsKKyAgICBwdWJsaWMgdm9pZCBtZXRob2QoaW50IGkpIHsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJpID0gIiArIGkgKyAiLCBpbnRmID0gIiArIHRoaXMpOworICAgIH0KK30KKworY2xhc3MgSkltcGwgaW1wbGVtZW50cyBKIHsKKyAgICBwdWJsaWMgdm9pZCBtZXRob2QoaW50IGkpIHsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJpID0gIiArIGkgKyAiLCBpbnRmID0gIiArIHRoaXMpOworICAgIH0KK30KKworY2xhc3MgWCB7CisKKyAgICB7CisgICAgICAgIEogaiA9IG5ldyBKSW1wbCgpOworICAgICAgICBqLm1ldGhvZCgwKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NvbnZlcnRUb0luc3RhbmNlTWV0aG9kL0ludGVyZmFjZVR5cGVQYXJhbWV0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jb252ZXJ0VG9JbnN0YW5jZU1ldGhvZC9JbnRlcmZhY2VUeXBlUGFyYW1ldGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzIyYWY1NwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jb252ZXJ0VG9JbnN0YW5jZU1ldGhvZC9JbnRlcmZhY2VUeXBlUGFyYW1ldGVyLmphdmEKQEAgLTAsMCArMSwxMyBAQAoraW50ZXJmYWNlIEludGY8VD4geworICAgIFQgZ2V0KCk7Cit9CisKK2NsYXNzIEltcGw8Vj4gaW1wbGVtZW50cyBJbnRmPFY+IHsKK30KKworY2xhc3MgWCB7CisgICAgc3RhdGljIDxVPiBYPFU+IDxjYXJldD5tZXRob2QoSW50ZjxVPiBwLCBVIHZhbHVlKSB7CisgICAgICAgIFUgdiA9IHAuZ2V0KCk7CisgICAgICAgIHJldHVybiBuZXcgWDxVPih2LHZhbHVlKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NvbnZlcnRUb0luc3RhbmNlTWV0aG9kL0ludGVyZmFjZVR5cGVQYXJhbWV0ZXIuamF2YS5hZnRlciBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jb252ZXJ0VG9JbnN0YW5jZU1ldGhvZC9JbnRlcmZhY2VUeXBlUGFyYW1ldGVyLmphdmEuYWZ0ZXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGQxOWQ4OTEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY29udmVydFRvSW5zdGFuY2VNZXRob2QvSW50ZXJmYWNlVHlwZVBhcmFtZXRlci5qYXZhLmFmdGVyCkBAIC0wLDAgKzEsMTUgQEAKK2ludGVyZmFjZSBJbnRmPFQ+IHsKKyAgICBYPFQ+IG1ldGhvZChUIHZhbHVlKTsKKworICAgIFQgZ2V0KCk7Cit9CisKK2NsYXNzIEltcGw8Vj4gaW1wbGVtZW50cyBJbnRmPFY+IHsKKyAgICBwdWJsaWMgWDxWPiBtZXRob2QoViB2YWx1ZSkgeworICAgICAgICBWIHYgPSBnZXQoKTsKKyAgICAgICAgcmV0dXJuIG5ldyBYPFY+KHYsdmFsdWUpOworICAgIH0KK30KKworY2xhc3MgWCB7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NvbnZlcnRUb0luc3RhbmNlTWV0aG9kL0phdmFkb2NQYXJhbWV0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jb252ZXJ0VG9JbnN0YW5jZU1ldGhvZC9KYXZhZG9jUGFyYW1ldGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDEzZTc1NgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jb252ZXJ0VG9JbnN0YW5jZU1ldGhvZC9KYXZhZG9jUGFyYW1ldGVyLmphdmEKQEAgLTAsMCArMSwxMCBAQAorY2xhc3MgVGVzdCB7CisgIC8qKgorICAgKiBtZXRob2QgZGVzY3JpcHRpb24KKyAgICogQHBhcmFtIGEgZGVzY3JpcHRpb24KKyAgICovCisgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYTxjYXJldD5pbihBIGEpIHsKKyAgfQorfQorCitjbGFzcyBBIHt9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NvbnZlcnRUb0luc3RhbmNlTWV0aG9kL0phdmFkb2NQYXJhbWV0ZXIuamF2YS5hZnRlciBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jb252ZXJ0VG9JbnN0YW5jZU1ldGhvZC9KYXZhZG9jUGFyYW1ldGVyLmphdmEuYWZ0ZXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzQ0OTFmYQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jb252ZXJ0VG9JbnN0YW5jZU1ldGhvZC9KYXZhZG9jUGFyYW1ldGVyLmphdmEuYWZ0ZXIKQEAgLTAsMCArMSwxMCBAQAorY2xhc3MgVGVzdCB7Cit9CisKK2NsYXNzIEEgeworICAgIC8qKgorICAgICAqIG1ldGhvZCBkZXNjcmlwdGlvbiAgCisgICAgICovCisgICAgcHVibGljIHZvaWQgbWFpbigpIHsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NvbnZlcnRUb0luc3RhbmNlTWV0aG9kL1NpbXBsZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NvbnZlcnRUb0luc3RhbmNlTWV0aG9kL1NpbXBsZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYwMzg2NzIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY29udmVydFRvSW5zdGFuY2VNZXRob2QvU2ltcGxlLmphdmEKQEAgLTAsMCArMSwxNiBAQAorcHVibGljIGNsYXNzIFkgeworICAgIHB1YmxpYyB2b2lkIGZvbygpIHsKKyAgICB9Cit9CitwdWJsaWMgY2xhc3MgWCB7CisgICAgc3RhdGljIHZvaWQgPGNhcmV0Pm1ldGhvZChZIHkpIHsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKHkpOworICAgICAgICB5LmZvbygpOworICAgIH0KKworICAgIHsKKyAgICAgIFkgeSA9IG5ldyBZKCk7CisgICAgICBtZXRob2QoeSk7CisgICAgICBtZXRob2QobmV3IFkoKSk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jb252ZXJ0VG9JbnN0YW5jZU1ldGhvZC9TaW1wbGUuamF2YS5hZnRlciBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jb252ZXJ0VG9JbnN0YW5jZU1ldGhvZC9TaW1wbGUuamF2YS5hZnRlcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42OTQ0OWFlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NvbnZlcnRUb0luc3RhbmNlTWV0aG9kL1NpbXBsZS5qYXZhLmFmdGVyCkBAIC0wLDAgKzEsMTcgQEAKK3B1YmxpYyBjbGFzcyBZIHsKKyAgICB2b2lkIG1ldGhvZCgpIHsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKHRoaXMpOworICAgICAgICBmb28oKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBmb28oKSB7CisgICAgfQorfQorcHVibGljIGNsYXNzIFggeworCisgICAgeworICAgICAgWSB5ID0gbmV3IFkoKTsKKyAgICAgIHkubWV0aG9kKCk7CisgICAgICBuZXcgWSgpLm1ldGhvZCgpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY29udmVydFRvSW5zdGFuY2VNZXRob2QvVHlwZVBhcmFtZXRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NvbnZlcnRUb0luc3RhbmNlTWV0aG9kL1R5cGVQYXJhbWV0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NDVmMDllCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NvbnZlcnRUb0luc3RhbmNlTWV0aG9kL1R5cGVQYXJhbWV0ZXIuamF2YQpAQCAtMCwwICsxLDcgQEAKK2NsYXNzIEM8VD4geworICAgIFQgZ2V0KCkgeyByZXR1cm4gbnVsbDsgfQorICAgIHN0YXRpYyA8Vj4gdm9pZCA8Y2FyZXQ+bWV0aG9kKEM8Vj4gYywgViB2YWx1ZSwgWDxWPiB4KSB7CisgICAgICAgIFYgdiA9IGMuZ2V0KCk7CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbih2ICsgIiAiICsgdmFsdWUpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY29udmVydFRvSW5zdGFuY2VNZXRob2QvVHlwZVBhcmFtZXRlci5qYXZhLmFmdGVyIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NvbnZlcnRUb0luc3RhbmNlTWV0aG9kL1R5cGVQYXJhbWV0ZXIuamF2YS5hZnRlcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNzMzOGUyYQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jb252ZXJ0VG9JbnN0YW5jZU1ldGhvZC9UeXBlUGFyYW1ldGVyLmphdmEuYWZ0ZXIKQEAgLTAsMCArMSw4IEBACitjbGFzcyBDPFQ+IHsKKyAgICB2b2lkIG1ldGhvZChUIHZhbHVlLCBYPFQ+IHgpIHsKKyAgICAgICAgVCB2ID0gZ2V0KCk7CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbih2ICsgIiAiICsgdmFsdWUpOworICAgIH0KKworICAgIFQgZ2V0KCkgeyByZXR1cm4gbnVsbDsgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jb252ZXJ0VG9JbnN0YW5jZU1ldGhvZC9WaXNpYmlsaXR5Q29uZmxpY3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jb252ZXJ0VG9JbnN0YW5jZU1ldGhvZC9WaXNpYmlsaXR5Q29uZmxpY3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45N2U5OTQ5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NvbnZlcnRUb0luc3RhbmNlTWV0aG9kL1Zpc2liaWxpdHlDb25mbGljdC5qYXZhCkBAIC0wLDAgKzEsMTEgQEAKK2NsYXNzIFRlc3QgeworICB7CisgICAgZm9vKG5ldyBCYXIoKSk7CisgIH0KKyAgcHJpdmF0ZSBzdGF0aWMgdm9pZCA8Y2FyZXQ+Zm9vKEJhciBiKXt9CisKK30KKworY2xhc3MgQmFyIHsKKworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NvcHkvbXVsdGlmaWxlL2NvcHlBdmFpbGFibGUvcGFjazEvcDEudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NvcHkvbXVsdGlmaWxlL2NvcHlBdmFpbGFibGUvcGFjazEvcDEudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU2OWRlMjkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY29weS9tdWx0aWZpbGUvY29weUF2YWlsYWJsZS9wYWNrMS9wMS50eHQKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jb3B5L211bHRpZmlsZS9jb3B5QXZhaWxhYmxlL3BhY2syL3BhY2syLnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jb3B5L211bHRpZmlsZS9jb3B5QXZhaWxhYmxlL3BhY2syL3BhY2syLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNjlkZTI5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NvcHkvbXVsdGlmaWxlL2NvcHlBdmFpbGFibGUvcGFjazIvcGFjazIudHh0CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY29weS9tdWx0aWZpbGUvamF2YUFuZFR4dC9wYWNrMS9DbGFzczEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jb3B5L211bHRpZmlsZS9qYXZhQW5kVHh0L3BhY2sxL0NsYXNzMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE5NjQwYjUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY29weS9tdWx0aWZpbGUvamF2YUFuZFR4dC9wYWNrMS9DbGFzczEuamF2YQpAQCAtMCwwICsxLDIgQEAKK3BhY2thZ2UgcGFjazE7CitwdWJsaWMgY2xhc3MgQ2xhc3MxIHt9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NvcHkvbXVsdGlmaWxlL2phdmFBbmRUeHQvcGFjazEvcDEudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NvcHkvbXVsdGlmaWxlL2phdmFBbmRUeHQvcGFjazEvcDEudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU2OWRlMjkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY29weS9tdWx0aWZpbGUvamF2YUFuZFR4dC9wYWNrMS9wMS50eHQKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jb3B5L211bHRpZmlsZS9qYXZhQW5kVHh0L3BhY2syL0NsYXNzMi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NvcHkvbXVsdGlmaWxlL2phdmFBbmRUeHQvcGFjazIvQ2xhc3MyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjk0NDU3MAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jb3B5L211bHRpZmlsZS9qYXZhQW5kVHh0L3BhY2syL0NsYXNzMi5qYXZhCkBAIC0wLDAgKzEsMiBAQAorcGFja2FnZSBwYWNrMjsKK3B1YmxpYyBDbGFzczJ7fQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jb3B5L211bHRpZmlsZS9qYXZhQW5kVHh0L3BhY2syL3AyLnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jb3B5L211bHRpZmlsZS9qYXZhQW5kVHh0L3BhY2syL3AyLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNjlkZTI5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NvcHkvbXVsdGlmaWxlL2phdmFBbmRUeHQvcGFjazIvcDIudHh0CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY29weS9tdWx0aWZpbGUvbXVsdGlwbGVDbGFzc2VzL3BhY2sxL0tsYXNzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY29weS9tdWx0aWZpbGUvbXVsdGlwbGVDbGFzc2VzL3BhY2sxL0tsYXNzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTViNzRiZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jb3B5L211bHRpZmlsZS9tdWx0aXBsZUNsYXNzZXMvcGFjazEvS2xhc3MuamF2YQpAQCAtMCwwICsxLDYgQEAKK3BhY2thZ2UgcGFjazE7CitjbGFzcyBLbGFzcyB7Cit9CisKK2NsYXNzIEFub3RoZXJLbGFzcyB7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NvcHkvbXVsdGlmaWxlL211bHRpcGxlQ2xhc3Nlcy9wYWNrMi9LbGFzcy5leHBlY3RlZC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NvcHkvbXVsdGlmaWxlL211bHRpcGxlQ2xhc3Nlcy9wYWNrMi9LbGFzcy5leHBlY3RlZC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYxMWMyYjgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY29weS9tdWx0aWZpbGUvbXVsdGlwbGVDbGFzc2VzL3BhY2syL0tsYXNzLmV4cGVjdGVkLmphdmEKQEAgLTAsMCArMSw2IEBACitwYWNrYWdlIHBhY2syOworY2xhc3MgS2xhc3MgeworfQorCitjbGFzcyBBbm90aGVyS2xhc3MgeworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jb3B5L211bHRpZmlsZS9tdWx0aXBsZUZpbGVzL2Zyb20vMS50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY29weS9tdWx0aWZpbGUvbXVsdGlwbGVGaWxlcy9mcm9tLzEudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU2OWRlMjkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY29weS9tdWx0aWZpbGUvbXVsdGlwbGVGaWxlcy9mcm9tLzEudHh0CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY29weS9tdWx0aWZpbGUvbXVsdGlwbGVGaWxlcy9mcm9tLzIudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NvcHkvbXVsdGlmaWxlL211bHRpcGxlRmlsZXMvZnJvbS8yLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNjlkZTI5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NvcHkvbXVsdGlmaWxlL211bHRpcGxlRmlsZXMvZnJvbS8yLnR4dApkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NvcHkvbXVsdGlmaWxlL211bHRpcGxlRmlsZXMvdG8vZW1wdHkudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NvcHkvbXVsdGlmaWxlL211bHRpcGxlRmlsZXMvdG8vZW1wdHkudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU2OWRlMjkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY29weS9tdWx0aWZpbGUvbXVsdGlwbGVGaWxlcy90by9lbXB0eS50eHQKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jb3B5L211bHRpZmlsZS9wYWNrYWdlSW5mby9mcm9tL3BhY2thZ2UtaW5mby5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NvcHkvbXVsdGlmaWxlL3BhY2thZ2VJbmZvL2Zyb20vcGFja2FnZS1pbmZvLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjEzNWZmMgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jb3B5L211bHRpZmlsZS9wYWNrYWdlSW5mby9mcm9tL3BhY2thZ2UtaW5mby5qYXZhCkBAIC0wLDAgKzEsMyBAQAorQGphdmF4LnhtbC5iaW5kLmFubm90YXRpb24uWG1sU2NoZW1hKGVsZW1lbnRGb3JtRGVmYXVsdCA9IGphdmF4LnhtbC5iaW5kLmFubm90YXRpb24uWG1sTnNGb3JtLlFVQUxJRklFRCwKKyAgICAgICAgbmFtZXNwYWNlID0gImh0dHA6Ly93d3cubXluYW1lc3BhY2V1cmwuY29tL215SGl0cyIpCitwYWNrYWdlIGZyb207CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY29weS9tdWx0aWZpbGUvcGFja2FnZUluZm8vdG8vcGFja2FnZS1pbmZvLmV4cGVjdGVkLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY29weS9tdWx0aWZpbGUvcGFja2FnZUluZm8vdG8vcGFja2FnZS1pbmZvLmV4cGVjdGVkLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGVkYzUyMQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jb3B5L211bHRpZmlsZS9wYWNrYWdlSW5mby90by9wYWNrYWdlLWluZm8uZXhwZWN0ZWQuamF2YQpAQCAtMCwwICsxLDMgQEAKK0BqYXZheC54bWwuYmluZC5hbm5vdGF0aW9uLlhtbFNjaGVtYShlbGVtZW50Rm9ybURlZmF1bHQgPSBqYXZheC54bWwuYmluZC5hbm5vdGF0aW9uLlhtbE5zRm9ybS5RVUFMSUZJRUQsCisgICAgICAgIG5hbWVzcGFjZSA9ICJodHRwOi8vd3d3Lm15bmFtZXNwYWNldXJsLmNvbS9teUhpdHMiKQorcGFja2FnZSB0bzsKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jb3B5Q2xhc3MvbGlicmFyeUNsYXNzL0Jhci5leHBlY3RlZC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NvcHlDbGFzcy9saWJyYXJ5Q2xhc3MvQmFyLmV4cGVjdGVkLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTkyZjk2NQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jb3B5Q2xhc3MvbGlicmFyeUNsYXNzL0Jhci5leHBlY3RlZC5qYXZhCkBAIC0wLDAgKzEsNTkyIEBACisvKgorICogQCgjKUFycmF5TGlzdC5qYXZhCTEuNDYgMDMvMDYvMjIKKyAqCisgKiBDb3B5cmlnaHQgMjAwMyBTdW4gTWljcm9zeXN0ZW1zLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBTVU4gUFJPUFJJRVRBUlkvQ09ORklERU5USUFMLiBVc2UgaXMgc3ViamVjdCB0byBsaWNlbnNlIHRlcm1zLgorICovCisKK2ltcG9ydCBqYXZhLnV0aWwuQWJzdHJhY3RMaXN0OworaW1wb3J0IGphdmEudXRpbC5Db2xsZWN0aW9uOworaW1wb3J0IGphdmEudXRpbC5MaXN0OworaW1wb3J0IGphdmEudXRpbC5SYW5kb21BY2Nlc3M7CisKKy8qKgorICogUmVzaXphYmxlLWFycmF5IGltcGxlbWVudGF0aW9uIG9mIHRoZSA8dHQ+TGlzdDwvdHQ+IGludGVyZmFjZS4gIEltcGxlbWVudHMKKyAqIGFsbCBvcHRpb25hbCBsaXN0IG9wZXJhdGlvbnMsIGFuZCBwZXJtaXRzIGFsbCBlbGVtZW50cywgaW5jbHVkaW5nCisgKiA8dHQ+bnVsbDwvdHQ+LiAgSW4gYWRkaXRpb24gdG8gaW1wbGVtZW50aW5nIHRoZSA8dHQ+TGlzdDwvdHQ+IGludGVyZmFjZSwKKyAqIHRoaXMgY2xhc3MgcHJvdmlkZXMgbWV0aG9kcyB0byBtYW5pcHVsYXRlIHRoZSBzaXplIG9mIHRoZSBhcnJheSB0aGF0IGlzCisgKiB1c2VkIGludGVybmFsbHkgdG8gc3RvcmUgdGhlIGxpc3QuICAoVGhpcyBjbGFzcyBpcyByb3VnaGx5IGVxdWl2YWxlbnQgdG8KKyAqIDx0dD5WZWN0b3I8L3R0PiwgZXhjZXB0IHRoYXQgaXQgaXMgdW5zeW5jaHJvbml6ZWQuKTxwPgorICoKKyAqIFRoZSA8dHQ+c2l6ZTwvdHQ+LCA8dHQ+aXNFbXB0eTwvdHQ+LCA8dHQ+Z2V0PC90dD4sIDx0dD5zZXQ8L3R0PiwKKyAqIDx0dD5pdGVyYXRvcjwvdHQ+LCBhbmQgPHR0Pmxpc3RJdGVyYXRvcjwvdHQ+IG9wZXJhdGlvbnMgcnVuIGluIGNvbnN0YW50CisgKiB0aW1lLiAgVGhlIDx0dD5hZGQ8L3R0PiBvcGVyYXRpb24gcnVucyBpbiA8aT5hbW9ydGl6ZWQgY29uc3RhbnQgdGltZTwvaT4sCisgKiB0aGF0IGlzLCBhZGRpbmcgbiBlbGVtZW50cyByZXF1aXJlcyBPKG4pIHRpbWUuICBBbGwgb2YgdGhlIG90aGVyIG9wZXJhdGlvbnMKKyAqIHJ1biBpbiBsaW5lYXIgdGltZSAocm91Z2hseSBzcGVha2luZykuICBUaGUgY29uc3RhbnQgZmFjdG9yIGlzIGxvdyBjb21wYXJlZAorICogdG8gdGhhdCBmb3IgdGhlIDx0dD5MaW5rZWRMaXN0PC90dD4gaW1wbGVtZW50YXRpb24uPHA+CisgKgorICogRWFjaCA8dHQ+QXJyYXlMaXN0PC90dD4gaW5zdGFuY2UgaGFzIGEgPGk+Y2FwYWNpdHk8L2k+LiAgVGhlIGNhcGFjaXR5IGlzCisgKiB0aGUgc2l6ZSBvZiB0aGUgYXJyYXkgdXNlZCB0byBzdG9yZSB0aGUgZWxlbWVudHMgaW4gdGhlIGxpc3QuICBJdCBpcyBhbHdheXMKKyAqIGF0IGxlYXN0IGFzIGxhcmdlIGFzIHRoZSBsaXN0IHNpemUuICBBcyBlbGVtZW50cyBhcmUgYWRkZWQgdG8gYW4gQXJyYXlMaXN0LAorICogaXRzIGNhcGFjaXR5IGdyb3dzIGF1dG9tYXRpY2FsbHkuICBUaGUgZGV0YWlscyBvZiB0aGUgZ3Jvd3RoIHBvbGljeSBhcmUgbm90CisgKiBzcGVjaWZpZWQgYmV5b25kIHRoZSBmYWN0IHRoYXQgYWRkaW5nIGFuIGVsZW1lbnQgaGFzIGNvbnN0YW50IGFtb3J0aXplZAorICogdGltZSBjb3N0LjxwPiAKKyAqCisgKiBBbiBhcHBsaWNhdGlvbiBjYW4gaW5jcmVhc2UgdGhlIGNhcGFjaXR5IG9mIGFuIDx0dD5BcnJheUxpc3Q8L3R0PiBpbnN0YW5jZQorICogYmVmb3JlIGFkZGluZyBhIGxhcmdlIG51bWJlciBvZiBlbGVtZW50cyB1c2luZyB0aGUgPHR0PmVuc3VyZUNhcGFjaXR5PC90dD4KKyAqIG9wZXJhdGlvbi4gIFRoaXMgbWF5IHJlZHVjZSB0aGUgYW1vdW50IG9mIGluY3JlbWVudGFsIHJlYWxsb2NhdGlvbi48cD4KKyAqCisgKiA8c3Ryb25nPk5vdGUgdGhhdCB0aGlzIGltcGxlbWVudGF0aW9uIGlzIG5vdCBzeW5jaHJvbml6ZWQuPC9zdHJvbmc+IElmCisgKiBtdWx0aXBsZSB0aHJlYWRzIGFjY2VzcyBhbiA8dHQ+QXJyYXlMaXN0PC90dD4gaW5zdGFuY2UgY29uY3VycmVudGx5LCBhbmQgYXQKKyAqIGxlYXN0IG9uZSBvZiB0aGUgdGhyZWFkcyBtb2RpZmllcyB0aGUgbGlzdCBzdHJ1Y3R1cmFsbHksIGl0IDxpPm11c3Q8L2k+IGJlCisgKiBzeW5jaHJvbml6ZWQgZXh0ZXJuYWxseS4gIChBIHN0cnVjdHVyYWwgbW9kaWZpY2F0aW9uIGlzIGFueSBvcGVyYXRpb24gdGhhdAorICogYWRkcyBvciBkZWxldGVzIG9uZSBvciBtb3JlIGVsZW1lbnRzLCBvciBleHBsaWNpdGx5IHJlc2l6ZXMgdGhlIGJhY2tpbmcKKyAqIGFycmF5OyBtZXJlbHkgc2V0dGluZyB0aGUgdmFsdWUgb2YgYW4gZWxlbWVudCBpcyBub3QgYSBzdHJ1Y3R1cmFsCisgKiBtb2RpZmljYXRpb24uKSAgVGhpcyBpcyB0eXBpY2FsbHkgYWNjb21wbGlzaGVkIGJ5IHN5bmNocm9uaXppbmcgb24gc29tZQorICogb2JqZWN0IHRoYXQgbmF0dXJhbGx5IGVuY2Fwc3VsYXRlcyB0aGUgbGlzdC4gIElmIG5vIHN1Y2ggb2JqZWN0IGV4aXN0cywgdGhlCisgKiBsaXN0IHNob3VsZCBiZSAid3JhcHBlZCIgdXNpbmcgdGhlIDx0dD5Db2xsZWN0aW9ucy5zeW5jaHJvbml6ZWRMaXN0PC90dD4KKyAqIG1ldGhvZC4gIFRoaXMgaXMgYmVzdCBkb25lIGF0IGNyZWF0aW9uIHRpbWUsIHRvIHByZXZlbnQgYWNjaWRlbnRhbAorICogdW5zeW5jaHJvbml6ZWQgYWNjZXNzIHRvIHRoZSBsaXN0OgorICogPHByZT4KKyAqCUxpc3QgbGlzdCA9IENvbGxlY3Rpb25zLnN5bmNocm9uaXplZExpc3QobmV3IEFycmF5TGlzdCguLi4pKTsKKyAqIDwvcHJlPjxwPgorICoKKyAqIFRoZSBpdGVyYXRvcnMgcmV0dXJuZWQgYnkgdGhpcyBjbGFzcydzIDx0dD5pdGVyYXRvcjwvdHQ+IGFuZAorICogPHR0Pmxpc3RJdGVyYXRvcjwvdHQ+IG1ldGhvZHMgYXJlIDxpPmZhaWwtZmFzdDwvaT46IGlmIGxpc3QgaXMgc3RydWN0dXJhbGx5CisgKiBtb2RpZmllZCBhdCBhbnkgdGltZSBhZnRlciB0aGUgaXRlcmF0b3IgaXMgY3JlYXRlZCwgaW4gYW55IHdheSBleGNlcHQKKyAqIHRocm91Z2ggdGhlIGl0ZXJhdG9yJ3Mgb3duIHJlbW92ZSBvciBhZGQgbWV0aG9kcywgdGhlIGl0ZXJhdG9yIHdpbGwgdGhyb3cgYQorICogQ29uY3VycmVudE1vZGlmaWNhdGlvbkV4Y2VwdGlvbi4gIFRodXMsIGluIHRoZSBmYWNlIG9mIGNvbmN1cnJlbnQKKyAqIG1vZGlmaWNhdGlvbiwgdGhlIGl0ZXJhdG9yIGZhaWxzIHF1aWNrbHkgYW5kIGNsZWFubHksIHJhdGhlciB0aGFuIHJpc2tpbmcKKyAqIGFyYml0cmFyeSwgbm9uLWRldGVybWluaXN0aWMgYmVoYXZpb3IgYXQgYW4gdW5kZXRlcm1pbmVkIHRpbWUgaW4gdGhlCisgKiBmdXR1cmUuPHA+CisgKgorICogTm90ZSB0aGF0IHRoZSBmYWlsLWZhc3QgYmVoYXZpb3Igb2YgYW4gaXRlcmF0b3IgY2Fubm90IGJlIGd1YXJhbnRlZWQKKyAqIGFzIGl0IGlzLCBnZW5lcmFsbHkgc3BlYWtpbmcsIGltcG9zc2libGUgdG8gbWFrZSBhbnkgaGFyZCBndWFyYW50ZWVzIGluIHRoZQorICogcHJlc2VuY2Ugb2YgdW5zeW5jaHJvbml6ZWQgY29uY3VycmVudCBtb2RpZmljYXRpb24uICBGYWlsLWZhc3QgaXRlcmF0b3JzCisgKiB0aHJvdyA8dHQ+Q29uY3VycmVudE1vZGlmaWNhdGlvbkV4Y2VwdGlvbjwvdHQ+IG9uIGEgYmVzdC1lZmZvcnQgYmFzaXMuIAorICogVGhlcmVmb3JlLCBpdCB3b3VsZCBiZSB3cm9uZyB0byB3cml0ZSBhIHByb2dyYW0gdGhhdCBkZXBlbmRlZCBvbiB0aGlzCisgKiBleGNlcHRpb24gZm9yIGl0cyBjb3JyZWN0bmVzczogPGk+dGhlIGZhaWwtZmFzdCBiZWhhdmlvciBvZiBpdGVyYXRvcnMKKyAqIHNob3VsZCBiZSB1c2VkIG9ubHkgdG8gZGV0ZWN0IGJ1Z3MuPC9pPjxwPgorICoKKyAqIFRoaXMgY2xhc3MgaXMgYSBtZW1iZXIgb2YgdGhlIAorICogPGEgaHJlZj0ie0Bkb2NSb290fS8uLi9ndWlkZS9jb2xsZWN0aW9ucy9pbmRleC5odG1sIj4KKyAqIEphdmEgQ29sbGVjdGlvbnMgRnJhbWV3b3JrPC9hPi4KKyAqCisgKiBAYXV0aG9yICBKb3NoIEJsb2NoCisgKiBAYXV0aG9yICBOZWFsIEdhZnRlcgorICogQHZlcnNpb24gMS40NiwgMDYvMjIvMDMKKyAqIEBzZWUJICAgIGphdmEudXRpbC5Db2xsZWN0aW9uCisgKiBAc2VlCSAgICBqYXZhLnV0aWwuTGlzdAorICogQHNlZQkgICAgTGlua2VkTGlzdAorICogQHNlZQkgICAgVmVjdG9yCisgKiBAc2VlCSAgICBqYXZhLnV0aWwuQ29sbGVjdGlvbnMjc3luY2hyb25pemVkTGlzdChqYXZhLnV0aWwuTGlzdCkKKyAqIEBzaW5jZSAgIDEuMgorICovCisKK3B1YmxpYyBjbGFzcyBCYXI8RT4gZXh0ZW5kcyBBYnN0cmFjdExpc3Q8RT4KKyAgICAgICAgaW1wbGVtZW50cyBMaXN0PEU+LCBSYW5kb21BY2Nlc3MsIENsb25lYWJsZSwgamF2YS5pby5TZXJpYWxpemFibGUKK3sKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBsb25nIHNlcmlhbFZlcnNpb25VSUQgPSA4NjgzNDUyNTgxMTIyODkyMTg5TDsKKworICAgIC8qKgorICAgICAqIFRoZSBhcnJheSBidWZmZXIgaW50byB3aGljaCB0aGUgZWxlbWVudHMgb2YgdGhlIEFycmF5TGlzdCBhcmUgc3RvcmVkLgorICAgICAqIFRoZSBjYXBhY2l0eSBvZiB0aGUgQXJyYXlMaXN0IGlzIHRoZSBsZW5ndGggb2YgdGhpcyBhcnJheSBidWZmZXIuCisgICAgICovCisgICAgcHJpdmF0ZSB0cmFuc2llbnQgRVtdIGVsZW1lbnREYXRhOworCisgICAgLyoqCisgICAgICogVGhlIHNpemUgb2YgdGhlIEFycmF5TGlzdCAodGhlIG51bWJlciBvZiBlbGVtZW50cyBpdCBjb250YWlucykuCisgICAgICoKKyAgICAgKiBAc2VyaWFsCisgICAgICovCisgICAgcHJpdmF0ZSBpbnQgc2l6ZTsKKworICAgIC8qKgorICAgICAqIENvbnN0cnVjdHMgYW4gZW1wdHkgbGlzdCB3aXRoIHRoZSBzcGVjaWZpZWQgaW5pdGlhbCBjYXBhY2l0eS4KKyAgICAgKgorICAgICAqIEBwYXJhbSAgIGluaXRpYWxDYXBhY2l0eSAgIHRoZSBpbml0aWFsIGNhcGFjaXR5IG9mIHRoZSBsaXN0LgorICAgICAqIEBleGNlcHRpb24gSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIGlmIHRoZSBzcGVjaWZpZWQgaW5pdGlhbCBjYXBhY2l0eQorICAgICAqICAgICAgICAgICAgaXMgbmVnYXRpdmUKKyAgICAgKi8KKyAgICBwdWJsaWMgQmFyKGludCBpbml0aWFsQ2FwYWNpdHkpIHsKKwlzdXBlcigpOworICAgICAgICBpZiAoaW5pdGlhbENhcGFjaXR5IDwgMCkKKyAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIklsbGVnYWwgQ2FwYWNpdHk6ICIrCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluaXRpYWxDYXBhY2l0eSk7CisJdGhpcy5lbGVtZW50RGF0YSA9IChFW10pbmV3IE9iamVjdFtpbml0aWFsQ2FwYWNpdHldOworICAgIH0KKworICAgIC8qKgorICAgICAqIENvbnN0cnVjdHMgYW4gZW1wdHkgbGlzdCB3aXRoIGFuIGluaXRpYWwgY2FwYWNpdHkgb2YgdGVuLgorICAgICAqLworICAgIHB1YmxpYyBCYXIoKSB7CisJdGhpcygxMCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogQ29uc3RydWN0cyBhIGxpc3QgY29udGFpbmluZyB0aGUgZWxlbWVudHMgb2YgdGhlIHNwZWNpZmllZAorICAgICAqIGNvbGxlY3Rpb24sIGluIHRoZSBvcmRlciB0aGV5IGFyZSByZXR1cm5lZCBieSB0aGUgY29sbGVjdGlvbidzCisgICAgICogaXRlcmF0b3IuICBUaGUgPHR0PkFycmF5TGlzdDwvdHQ+IGluc3RhbmNlIGhhcyBhbiBpbml0aWFsIGNhcGFjaXR5IG9mCisgICAgICogMTEwJSB0aGUgc2l6ZSBvZiB0aGUgc3BlY2lmaWVkIGNvbGxlY3Rpb24uCisgICAgICoKKyAgICAgKiBAcGFyYW0gYyB0aGUgY29sbGVjdGlvbiB3aG9zZSBlbGVtZW50cyBhcmUgdG8gYmUgcGxhY2VkIGludG8gdGhpcyBsaXN0LgorICAgICAqIEB0aHJvd3MgTnVsbFBvaW50ZXJFeGNlcHRpb24gaWYgdGhlIHNwZWNpZmllZCBjb2xsZWN0aW9uIGlzIG51bGwuCisgICAgICovCisgICAgcHVibGljIEJhcihDb2xsZWN0aW9uPD8gZXh0ZW5kcyBFPiBjKSB7CisgICAgICAgIHNpemUgPSBjLnNpemUoKTsKKyAgICAgICAgLy8gQWxsb3cgMTAlIHJvb20gZm9yIGdyb3d0aAorICAgICAgICBlbGVtZW50RGF0YSA9IChFW10pbmV3IE9iamVjdFsKKyAgICAgICAgICAgICAgICAgICAgICAoaW50KU1hdGgubWluKChzaXplKjExMEwpLzEwMCxJbnRlZ2VyLk1BWF9WQUxVRSldOyAKKyAgICAgICAgYy50b0FycmF5KGVsZW1lbnREYXRhKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBUcmltcyB0aGUgY2FwYWNpdHkgb2YgdGhpcyA8dHQ+QXJyYXlMaXN0PC90dD4gaW5zdGFuY2UgdG8gYmUgdGhlCisgICAgICogbGlzdCdzIGN1cnJlbnQgc2l6ZS4gIEFuIGFwcGxpY2F0aW9uIGNhbiB1c2UgdGhpcyBvcGVyYXRpb24gdG8gbWluaW1pemUKKyAgICAgKiB0aGUgc3RvcmFnZSBvZiBhbiA8dHQ+QXJyYXlMaXN0PC90dD4gaW5zdGFuY2UuCisgICAgICovCisgICAgcHVibGljIHZvaWQgdHJpbVRvU2l6ZSgpIHsKKwltb2RDb3VudCsrOworCWludCBvbGRDYXBhY2l0eSA9IGVsZW1lbnREYXRhLmxlbmd0aDsKKwlpZiAoc2l6ZSA8IG9sZENhcGFjaXR5KSB7CisJICAgIE9iamVjdCBvbGREYXRhW10gPSBlbGVtZW50RGF0YTsKKwkgICAgZWxlbWVudERhdGEgPSAoRVtdKW5ldyBPYmplY3Rbc2l6ZV07CisJICAgIFN5c3RlbS5hcnJheWNvcHkob2xkRGF0YSwgMCwgZWxlbWVudERhdGEsIDAsIHNpemUpOworCX0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBJbmNyZWFzZXMgdGhlIGNhcGFjaXR5IG9mIHRoaXMgPHR0PkFycmF5TGlzdDwvdHQ+IGluc3RhbmNlLCBpZgorICAgICAqIG5lY2Vzc2FyeSwgdG8gZW5zdXJlICB0aGF0IGl0IGNhbiBob2xkIGF0IGxlYXN0IHRoZSBudW1iZXIgb2YgZWxlbWVudHMKKyAgICAgKiBzcGVjaWZpZWQgYnkgdGhlIG1pbmltdW0gY2FwYWNpdHkgYXJndW1lbnQuIAorICAgICAqCisgICAgICogQHBhcmFtICAgbWluQ2FwYWNpdHkgICB0aGUgZGVzaXJlZCBtaW5pbXVtIGNhcGFjaXR5LgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIGVuc3VyZUNhcGFjaXR5KGludCBtaW5DYXBhY2l0eSkgeworCW1vZENvdW50Kys7CisJaW50IG9sZENhcGFjaXR5ID0gZWxlbWVudERhdGEubGVuZ3RoOworCWlmIChtaW5DYXBhY2l0eSA+IG9sZENhcGFjaXR5KSB7CisJICAgIE9iamVjdCBvbGREYXRhW10gPSBlbGVtZW50RGF0YTsKKwkgICAgaW50IG5ld0NhcGFjaXR5ID0gKG9sZENhcGFjaXR5ICogMykvMiArIDE7CisgICAgCSAgICBpZiAobmV3Q2FwYWNpdHkgPCBtaW5DYXBhY2l0eSkKKwkJbmV3Q2FwYWNpdHkgPSBtaW5DYXBhY2l0eTsKKwkgICAgZWxlbWVudERhdGEgPSAoRVtdKW5ldyBPYmplY3RbbmV3Q2FwYWNpdHldOworCSAgICBTeXN0ZW0uYXJyYXljb3B5KG9sZERhdGEsIDAsIGVsZW1lbnREYXRhLCAwLCBzaXplKTsKKwl9CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJucyB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIGluIHRoaXMgbGlzdC4KKyAgICAgKgorICAgICAqIEByZXR1cm4gIHRoZSBudW1iZXIgb2YgZWxlbWVudHMgaW4gdGhpcyBsaXN0LgorICAgICAqLworICAgIHB1YmxpYyBpbnQgc2l6ZSgpIHsKKwlyZXR1cm4gc2l6ZTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBUZXN0cyBpZiB0aGlzIGxpc3QgaGFzIG5vIGVsZW1lbnRzLgorICAgICAqCisgICAgICogQHJldHVybiAgPHR0PnRydWU8L3R0PiBpZiB0aGlzIGxpc3QgaGFzIG5vIGVsZW1lbnRzOworICAgICAqICAgICAgICAgIDx0dD5mYWxzZTwvdHQ+IG90aGVyd2lzZS4KKyAgICAgKi8KKyAgICBwdWJsaWMgYm9vbGVhbiBpc0VtcHR5KCkgeworCXJldHVybiBzaXplID09IDA7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJucyA8dHQ+dHJ1ZTwvdHQ+IGlmIHRoaXMgbGlzdCBjb250YWlucyB0aGUgc3BlY2lmaWVkIGVsZW1lbnQuCisgICAgICoKKyAgICAgKiBAcGFyYW0gZWxlbSBlbGVtZW50IHdob3NlIHByZXNlbmNlIGluIHRoaXMgTGlzdCBpcyB0byBiZSB0ZXN0ZWQuCisgICAgICogQHJldHVybiAgPGNvZGU+dHJ1ZTwvY29kZT4gaWYgdGhlIHNwZWNpZmllZCBlbGVtZW50IGlzIHByZXNlbnQ7CisgICAgICoJCTxjb2RlPmZhbHNlPC9jb2RlPiBvdGhlcndpc2UuCisgICAgICovCisgICAgcHVibGljIGJvb2xlYW4gY29udGFpbnMoT2JqZWN0IGVsZW0pIHsKKwlyZXR1cm4gaW5kZXhPZihlbGVtKSA+PSAwOworICAgIH0KKworICAgIC8qKgorICAgICAqIFNlYXJjaGVzIGZvciB0aGUgZmlyc3Qgb2NjdXJlbmNlIG9mIHRoZSBnaXZlbiBhcmd1bWVudCwgdGVzdGluZyAKKyAgICAgKiBmb3IgZXF1YWxpdHkgdXNpbmcgdGhlIDx0dD5lcXVhbHM8L3R0PiBtZXRob2QuIAorICAgICAqCisgICAgICogQHBhcmFtICAgZWxlbSAgIGFuIG9iamVjdC4KKyAgICAgKiBAcmV0dXJuICB0aGUgaW5kZXggb2YgdGhlIGZpcnN0IG9jY3VycmVuY2Ugb2YgdGhlIGFyZ3VtZW50IGluIHRoaXMKKyAgICAgKiAgICAgICAgICBsaXN0OyByZXR1cm5zIDx0dD4tMTwvdHQ+IGlmIHRoZSBvYmplY3QgaXMgbm90IGZvdW5kLgorICAgICAqIEBzZWUgICAgIE9iamVjdCNlcXVhbHMoT2JqZWN0KQorICAgICAqLworICAgIHB1YmxpYyBpbnQgaW5kZXhPZihPYmplY3QgZWxlbSkgeworCWlmIChlbGVtID09IG51bGwpIHsKKwkgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzaXplOyBpKyspCisJCWlmIChlbGVtZW50RGF0YVtpXT09bnVsbCkKKwkJICAgIHJldHVybiBpOworCX0gZWxzZSB7CisJICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc2l6ZTsgaSsrKQorCQlpZiAoZWxlbS5lcXVhbHMoZWxlbWVudERhdGFbaV0pKQorCQkgICAgcmV0dXJuIGk7CisJfQorCXJldHVybiAtMTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIHRoZSBpbmRleCBvZiB0aGUgbGFzdCBvY2N1cnJlbmNlIG9mIHRoZSBzcGVjaWZpZWQgb2JqZWN0IGluCisgICAgICogdGhpcyBsaXN0LgorICAgICAqCisgICAgICogQHBhcmFtICAgZWxlbSAgIHRoZSBkZXNpcmVkIGVsZW1lbnQuCisgICAgICogQHJldHVybiAgdGhlIGluZGV4IG9mIHRoZSBsYXN0IG9jY3VycmVuY2Ugb2YgdGhlIHNwZWNpZmllZCBvYmplY3QgaW4KKyAgICAgKiAgICAgICAgICB0aGlzIGxpc3Q7IHJldHVybnMgLTEgaWYgdGhlIG9iamVjdCBpcyBub3QgZm91bmQuCisgICAgICovCisgICAgcHVibGljIGludCBsYXN0SW5kZXhPZihPYmplY3QgZWxlbSkgeworCWlmIChlbGVtID09IG51bGwpIHsKKwkgICAgZm9yIChpbnQgaSA9IHNpemUtMTsgaSA+PSAwOyBpLS0pCisJCWlmIChlbGVtZW50RGF0YVtpXT09bnVsbCkKKwkJICAgIHJldHVybiBpOworCX0gZWxzZSB7CisJICAgIGZvciAoaW50IGkgPSBzaXplLTE7IGkgPj0gMDsgaS0tKQorCQlpZiAoZWxlbS5lcXVhbHMoZWxlbWVudERhdGFbaV0pKQorCQkgICAgcmV0dXJuIGk7CisJfQorCXJldHVybiAtMTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIGEgc2hhbGxvdyBjb3B5IG9mIHRoaXMgPHR0PkFycmF5TGlzdDwvdHQ+IGluc3RhbmNlLiAgKFRoZQorICAgICAqIGVsZW1lbnRzIHRoZW1zZWx2ZXMgYXJlIG5vdCBjb3BpZWQuKQorICAgICAqCisgICAgICogQHJldHVybiAgYSBjbG9uZSBvZiB0aGlzIDx0dD5BcnJheUxpc3Q8L3R0PiBpbnN0YW5jZS4KKyAgICAgKi8KKyAgICBwdWJsaWMgT2JqZWN0IGNsb25lKCkgeworCXRyeSB7IAorCSAgICBCYXI8RT4gdiA9IChCYXI8RT4pIHN1cGVyLmNsb25lKCk7CisJICAgIHYuZWxlbWVudERhdGEgPSAoRVtdKW5ldyBPYmplY3Rbc2l6ZV07CisJICAgIFN5c3RlbS5hcnJheWNvcHkoZWxlbWVudERhdGEsIDAsIHYuZWxlbWVudERhdGEsIDAsIHNpemUpOworCSAgICB2Lm1vZENvdW50ID0gMDsKKwkgICAgcmV0dXJuIHY7CisJfSBjYXRjaCAoQ2xvbmVOb3RTdXBwb3J0ZWRFeGNlcHRpb24gZSkgeyAKKwkgICAgLy8gdGhpcyBzaG91bGRuJ3QgaGFwcGVuLCBzaW5jZSB3ZSBhcmUgQ2xvbmVhYmxlCisJICAgIHRocm93IG5ldyBJbnRlcm5hbEVycm9yKCk7CisJfQorICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybnMgYW4gYXJyYXkgY29udGFpbmluZyBhbGwgb2YgdGhlIGVsZW1lbnRzIGluIHRoaXMgbGlzdAorICAgICAqIGluIHRoZSBjb3JyZWN0IG9yZGVyLgorICAgICAqCisgICAgICogQHJldHVybiBhbiBhcnJheSBjb250YWluaW5nIGFsbCBvZiB0aGUgZWxlbWVudHMgaW4gdGhpcyBsaXN0CisgICAgICogCSAgICAgICBpbiB0aGUgY29ycmVjdCBvcmRlci4KKyAgICAgKi8KKyAgICBwdWJsaWMgT2JqZWN0W10gdG9BcnJheSgpIHsKKwlPYmplY3RbXSByZXN1bHQgPSBuZXcgT2JqZWN0W3NpemVdOworCVN5c3RlbS5hcnJheWNvcHkoZWxlbWVudERhdGEsIDAsIHJlc3VsdCwgMCwgc2l6ZSk7CisJcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIGFuIGFycmF5IGNvbnRhaW5pbmcgYWxsIG9mIHRoZSBlbGVtZW50cyBpbiB0aGlzIGxpc3QgaW4gdGhlCisgICAgICogY29ycmVjdCBvcmRlcjsgdGhlIHJ1bnRpbWUgdHlwZSBvZiB0aGUgcmV0dXJuZWQgYXJyYXkgaXMgdGhhdCBvZiB0aGUKKyAgICAgKiBzcGVjaWZpZWQgYXJyYXkuICBJZiB0aGUgbGlzdCBmaXRzIGluIHRoZSBzcGVjaWZpZWQgYXJyYXksIGl0IGlzCisgICAgICogcmV0dXJuZWQgdGhlcmVpbi4gIE90aGVyd2lzZSwgYSBuZXcgYXJyYXkgaXMgYWxsb2NhdGVkIHdpdGggdGhlIHJ1bnRpbWUKKyAgICAgKiB0eXBlIG9mIHRoZSBzcGVjaWZpZWQgYXJyYXkgYW5kIHRoZSBzaXplIG9mIHRoaXMgbGlzdC48cD4KKyAgICAgKgorICAgICAqIElmIHRoZSBsaXN0IGZpdHMgaW4gdGhlIHNwZWNpZmllZCBhcnJheSB3aXRoIHJvb20gdG8gc3BhcmUgKGkuZS4sIHRoZQorICAgICAqIGFycmF5IGhhcyBtb3JlIGVsZW1lbnRzIHRoYW4gdGhlIGxpc3QpLCB0aGUgZWxlbWVudCBpbiB0aGUgYXJyYXkKKyAgICAgKiBpbW1lZGlhdGVseSBmb2xsb3dpbmcgdGhlIGVuZCBvZiB0aGUgY29sbGVjdGlvbiBpcyBzZXQgdG8KKyAgICAgKiA8dHQ+bnVsbDwvdHQ+LiAgVGhpcyBpcyB1c2VmdWwgaW4gZGV0ZXJtaW5pbmcgdGhlIGxlbmd0aCBvZiB0aGUgbGlzdAorICAgICAqIDxpPm9ubHk8L2k+IGlmIHRoZSBjYWxsZXIga25vd3MgdGhhdCB0aGUgbGlzdCBkb2VzIG5vdCBjb250YWluIGFueQorICAgICAqIDx0dD5udWxsPC90dD4gZWxlbWVudHMuCisgICAgICoKKyAgICAgKiBAcGFyYW0gYSB0aGUgYXJyYXkgaW50byB3aGljaCB0aGUgZWxlbWVudHMgb2YgdGhlIGxpc3QgYXJlIHRvCisgICAgICoJCWJlIHN0b3JlZCwgaWYgaXQgaXMgYmlnIGVub3VnaDsgb3RoZXJ3aXNlLCBhIG5ldyBhcnJheSBvZiB0aGUKKyAgICAgKiAJCXNhbWUgcnVudGltZSB0eXBlIGlzIGFsbG9jYXRlZCBmb3IgdGhpcyBwdXJwb3NlLgorICAgICAqIEByZXR1cm4gYW4gYXJyYXkgY29udGFpbmluZyB0aGUgZWxlbWVudHMgb2YgdGhlIGxpc3QuCisgICAgICogQHRocm93cyBBcnJheVN0b3JlRXhjZXB0aW9uIGlmIHRoZSBydW50aW1lIHR5cGUgb2YgYSBpcyBub3QgYSBzdXBlcnR5cGUKKyAgICAgKiAgICAgICAgIG9mIHRoZSBydW50aW1lIHR5cGUgb2YgZXZlcnkgZWxlbWVudCBpbiB0aGlzIGxpc3QuCisgICAgICovCisgICAgcHVibGljIDxUPiBUW10gdG9BcnJheShUW10gYSkgeworICAgICAgICBpZiAoYS5sZW5ndGggPCBzaXplKQorICAgICAgICAgICAgYSA9IChUW10pamF2YS5sYW5nLnJlZmxlY3QuQXJyYXkuCisJCW5ld0luc3RhbmNlKGEuZ2V0Q2xhc3MoKS5nZXRDb21wb25lbnRUeXBlKCksIHNpemUpOworCVN5c3RlbS5hcnJheWNvcHkoZWxlbWVudERhdGEsIDAsIGEsIDAsIHNpemUpOworICAgICAgICBpZiAoYS5sZW5ndGggPiBzaXplKQorICAgICAgICAgICAgYVtzaXplXSA9IG51bGw7CisgICAgICAgIHJldHVybiBhOworICAgIH0KKworICAgIC8vIFBvc2l0aW9uYWwgQWNjZXNzIE9wZXJhdGlvbnMKKworICAgIC8qKgorICAgICAqIFJldHVybnMgdGhlIGVsZW1lbnQgYXQgdGhlIHNwZWNpZmllZCBwb3NpdGlvbiBpbiB0aGlzIGxpc3QuCisgICAgICoKKyAgICAgKiBAcGFyYW0gIGluZGV4IGluZGV4IG9mIGVsZW1lbnQgdG8gcmV0dXJuLgorICAgICAqIEByZXR1cm4gdGhlIGVsZW1lbnQgYXQgdGhlIHNwZWNpZmllZCBwb3NpdGlvbiBpbiB0aGlzIGxpc3QuCisgICAgICogQHRocm93cyAgICBJbmRleE91dE9mQm91bmRzRXhjZXB0aW9uIGlmIGluZGV4IGlzIG91dCBvZiByYW5nZSA8dHQ+KGluZGV4CisgICAgICogCQkgICZsdDsgMCB8fCBpbmRleCAmZ3Q7PSBzaXplKCkpPC90dD4uCisgICAgICovCisgICAgcHVibGljIEUgZ2V0KGludCBpbmRleCkgeworCVJhbmdlQ2hlY2soaW5kZXgpOworCisJcmV0dXJuIGVsZW1lbnREYXRhW2luZGV4XTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXBsYWNlcyB0aGUgZWxlbWVudCBhdCB0aGUgc3BlY2lmaWVkIHBvc2l0aW9uIGluIHRoaXMgbGlzdCB3aXRoCisgICAgICogdGhlIHNwZWNpZmllZCBlbGVtZW50LgorICAgICAqCisgICAgICogQHBhcmFtIGluZGV4IGluZGV4IG9mIGVsZW1lbnQgdG8gcmVwbGFjZS4KKyAgICAgKiBAcGFyYW0gZWxlbWVudCBlbGVtZW50IHRvIGJlIHN0b3JlZCBhdCB0aGUgc3BlY2lmaWVkIHBvc2l0aW9uLgorICAgICAqIEByZXR1cm4gdGhlIGVsZW1lbnQgcHJldmlvdXNseSBhdCB0aGUgc3BlY2lmaWVkIHBvc2l0aW9uLgorICAgICAqIEB0aHJvd3MgICAgSW5kZXhPdXRPZkJvdW5kc0V4Y2VwdGlvbiBpZiBpbmRleCBvdXQgb2YgcmFuZ2UKKyAgICAgKgkJICA8dHQ+KGluZGV4ICZsdDsgMCB8fCBpbmRleCAmZ3Q7PSBzaXplKCkpPC90dD4uCisgICAgICovCisgICAgcHVibGljIEUgc2V0KGludCBpbmRleCwgRSBlbGVtZW50KSB7CisJUmFuZ2VDaGVjayhpbmRleCk7CisKKwlFIG9sZFZhbHVlID0gZWxlbWVudERhdGFbaW5kZXhdOworCWVsZW1lbnREYXRhW2luZGV4XSA9IGVsZW1lbnQ7CisJcmV0dXJuIG9sZFZhbHVlOworICAgIH0KKworICAgIC8qKgorICAgICAqIEFwcGVuZHMgdGhlIHNwZWNpZmllZCBlbGVtZW50IHRvIHRoZSBlbmQgb2YgdGhpcyBsaXN0LgorICAgICAqCisgICAgICogQHBhcmFtIG8gZWxlbWVudCB0byBiZSBhcHBlbmRlZCB0byB0aGlzIGxpc3QuCisgICAgICogQHJldHVybiA8dHQ+dHJ1ZTwvdHQ+IChhcyBwZXIgdGhlIGdlbmVyYWwgY29udHJhY3Qgb2YgQ29sbGVjdGlvbi5hZGQpLgorICAgICAqLworICAgIHB1YmxpYyBib29sZWFuIGFkZChFIG8pIHsKKwllbnN1cmVDYXBhY2l0eShzaXplICsgMSk7ICAvLyBJbmNyZW1lbnRzIG1vZENvdW50ISEKKwllbGVtZW50RGF0YVtzaXplKytdID0gbzsKKwlyZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBJbnNlcnRzIHRoZSBzcGVjaWZpZWQgZWxlbWVudCBhdCB0aGUgc3BlY2lmaWVkIHBvc2l0aW9uIGluIHRoaXMKKyAgICAgKiBsaXN0LiBTaGlmdHMgdGhlIGVsZW1lbnQgY3VycmVudGx5IGF0IHRoYXQgcG9zaXRpb24gKGlmIGFueSkgYW5kCisgICAgICogYW55IHN1YnNlcXVlbnQgZWxlbWVudHMgdG8gdGhlIHJpZ2h0IChhZGRzIG9uZSB0byB0aGVpciBpbmRpY2VzKS4KKyAgICAgKgorICAgICAqIEBwYXJhbSBpbmRleCBpbmRleCBhdCB3aGljaCB0aGUgc3BlY2lmaWVkIGVsZW1lbnQgaXMgdG8gYmUgaW5zZXJ0ZWQuCisgICAgICogQHBhcmFtIGVsZW1lbnQgZWxlbWVudCB0byBiZSBpbnNlcnRlZC4KKyAgICAgKiBAdGhyb3dzICAgIEluZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb24gaWYgaW5kZXggaXMgb3V0IG9mIHJhbmdlCisgICAgICoJCSAgPHR0PihpbmRleCAmbHQ7IDAgfHwgaW5kZXggJmd0OyBzaXplKCkpPC90dD4uCisgICAgICovCisgICAgcHVibGljIHZvaWQgYWRkKGludCBpbmRleCwgRSBlbGVtZW50KSB7CisJaWYgKGluZGV4ID4gc2l6ZSB8fCBpbmRleCA8IDApCisJICAgIHRocm93IG5ldyBJbmRleE91dE9mQm91bmRzRXhjZXB0aW9uKAorCQkiSW5kZXg6ICIraW5kZXgrIiwgU2l6ZTogIitzaXplKTsKKworCWVuc3VyZUNhcGFjaXR5KHNpemUrMSk7ICAvLyBJbmNyZW1lbnRzIG1vZENvdW50ISEKKwlTeXN0ZW0uYXJyYXljb3B5KGVsZW1lbnREYXRhLCBpbmRleCwgZWxlbWVudERhdGEsIGluZGV4ICsgMSwKKwkJCSBzaXplIC0gaW5kZXgpOworCWVsZW1lbnREYXRhW2luZGV4XSA9IGVsZW1lbnQ7CisJc2l6ZSsrOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJlbW92ZXMgdGhlIGVsZW1lbnQgYXQgdGhlIHNwZWNpZmllZCBwb3NpdGlvbiBpbiB0aGlzIGxpc3QuCisgICAgICogU2hpZnRzIGFueSBzdWJzZXF1ZW50IGVsZW1lbnRzIHRvIHRoZSBsZWZ0IChzdWJ0cmFjdHMgb25lIGZyb20gdGhlaXIKKyAgICAgKiBpbmRpY2VzKS4KKyAgICAgKgorICAgICAqIEBwYXJhbSBpbmRleCB0aGUgaW5kZXggb2YgdGhlIGVsZW1lbnQgdG8gcmVtb3ZlZC4KKyAgICAgKiBAcmV0dXJuIHRoZSBlbGVtZW50IHRoYXQgd2FzIHJlbW92ZWQgZnJvbSB0aGUgbGlzdC4KKyAgICAgKiBAdGhyb3dzICAgIEluZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb24gaWYgaW5kZXggb3V0IG9mIHJhbmdlIDx0dD4oaW5kZXgKKyAgICAgKiAJCSAgJmx0OyAwIHx8IGluZGV4ICZndDs9IHNpemUoKSk8L3R0Pi4KKyAgICAgKi8KKyAgICBwdWJsaWMgRSByZW1vdmUoaW50IGluZGV4KSB7CisJUmFuZ2VDaGVjayhpbmRleCk7CisKKwltb2RDb3VudCsrOworCUUgb2xkVmFsdWUgPSBlbGVtZW50RGF0YVtpbmRleF07CisKKwlpbnQgbnVtTW92ZWQgPSBzaXplIC0gaW5kZXggLSAxOworCWlmIChudW1Nb3ZlZCA+IDApCisJICAgIFN5c3RlbS5hcnJheWNvcHkoZWxlbWVudERhdGEsIGluZGV4KzEsIGVsZW1lbnREYXRhLCBpbmRleCwKKwkJCSAgICAgbnVtTW92ZWQpOworCWVsZW1lbnREYXRhWy0tc2l6ZV0gPSBudWxsOyAvLyBMZXQgZ2MgZG8gaXRzIHdvcmsKKworCXJldHVybiBvbGRWYWx1ZTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZW1vdmVzIGEgc2luZ2xlIGluc3RhbmNlIG9mIHRoZSBzcGVjaWZpZWQgZWxlbWVudCBmcm9tIHRoaXMKKyAgICAgKiBsaXN0LCBpZiBpdCBpcyBwcmVzZW50IChvcHRpb25hbCBvcGVyYXRpb24pLiAgTW9yZSBmb3JtYWxseSwKKyAgICAgKiByZW1vdmVzIGFuIGVsZW1lbnQgPHR0PmU8L3R0PiBzdWNoIHRoYXQgPHR0PihvPT1udWxsID8gZT09bnVsbCA6CisgICAgICogby5lcXVhbHMoZSkpPC90dD4sIGlmIHRoZSBsaXN0IGNvbnRhaW5zIG9uZSBvciBtb3JlIHN1Y2gKKyAgICAgKiBlbGVtZW50cy4gIFJldHVybnMgPHR0PnRydWU8L3R0PiBpZiB0aGUgbGlzdCBjb250YWluZWQgdGhlCisgICAgICogc3BlY2lmaWVkIGVsZW1lbnQgKG9yIGVxdWl2YWxlbnRseSwgaWYgdGhlIGxpc3QgY2hhbmdlZCBhcyBhCisgICAgICogcmVzdWx0IG9mIHRoZSBjYWxsKS48cD4KKyAgICAgKgorICAgICAqIEBwYXJhbSBvIGVsZW1lbnQgdG8gYmUgcmVtb3ZlZCBmcm9tIHRoaXMgbGlzdCwgaWYgcHJlc2VudC4KKyAgICAgKiBAcmV0dXJuIDx0dD50cnVlPC90dD4gaWYgdGhlIGxpc3QgY29udGFpbmVkIHRoZSBzcGVjaWZpZWQgZWxlbWVudC4KKyAgICAgKi8KKyAgICBwdWJsaWMgYm9vbGVhbiByZW1vdmUoT2JqZWN0IG8pIHsKKwlpZiAobyA9PSBudWxsKSB7CisgICAgICAgICAgICBmb3IgKGludCBpbmRleCA9IDA7IGluZGV4IDwgc2l6ZTsgaW5kZXgrKykKKwkJaWYgKGVsZW1lbnREYXRhW2luZGV4XSA9PSBudWxsKSB7CisJCSAgICBmYXN0UmVtb3ZlKGluZGV4KTsKKwkJICAgIHJldHVybiB0cnVlOworCQl9CisJfSBlbHNlIHsKKwkgICAgZm9yIChpbnQgaW5kZXggPSAwOyBpbmRleCA8IHNpemU7IGluZGV4KyspCisJCWlmIChvLmVxdWFscyhlbGVtZW50RGF0YVtpbmRleF0pKSB7CisJCSAgICBmYXN0UmVtb3ZlKGluZGV4KTsKKwkJICAgIHJldHVybiB0cnVlOworCQl9CisgICAgICAgIH0KKwlyZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgLyoKKyAgICAgKiBQcml2YXRlIHJlbW92ZSBtZXRob2QgdGhhdCBza2lwcyBib3VuZHMgY2hlY2tpbmcgYW5kIGRvZXMgbm90CisgICAgICogcmV0dXJuIHRoZSB2YWx1ZSByZW1vdmVkLgorICAgICAqLworICAgIHByaXZhdGUgdm9pZCBmYXN0UmVtb3ZlKGludCBpbmRleCkgeworICAgICAgICBtb2RDb3VudCsrOworICAgICAgICBpbnQgbnVtTW92ZWQgPSBzaXplIC0gaW5kZXggLSAxOworICAgICAgICBpZiAobnVtTW92ZWQgPiAwKQorICAgICAgICAgICAgU3lzdGVtLmFycmF5Y29weShlbGVtZW50RGF0YSwgaW5kZXgrMSwgZWxlbWVudERhdGEsIGluZGV4LCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVtTW92ZWQpOworICAgICAgICBlbGVtZW50RGF0YVstLXNpemVdID0gbnVsbDsgLy8gTGV0IGdjIGRvIGl0cyB3b3JrCisgICAgfQorCisgICAgLyoqCisgICAgICogUmVtb3ZlcyBhbGwgb2YgdGhlIGVsZW1lbnRzIGZyb20gdGhpcyBsaXN0LiAgVGhlIGxpc3Qgd2lsbAorICAgICAqIGJlIGVtcHR5IGFmdGVyIHRoaXMgY2FsbCByZXR1cm5zLgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIGNsZWFyKCkgeworCW1vZENvdW50Kys7CisKKwkvLyBMZXQgZ2MgZG8gaXRzIHdvcmsKKwlmb3IgKGludCBpID0gMDsgaSA8IHNpemU7IGkrKykKKwkgICAgZWxlbWVudERhdGFbaV0gPSBudWxsOworCisJc2l6ZSA9IDA7CisgICAgfQorCisgICAgLyoqCisgICAgICogQXBwZW5kcyBhbGwgb2YgdGhlIGVsZW1lbnRzIGluIHRoZSBzcGVjaWZpZWQgQ29sbGVjdGlvbiB0byB0aGUgZW5kIG9mCisgICAgICogdGhpcyBsaXN0LCBpbiB0aGUgb3JkZXIgdGhhdCB0aGV5IGFyZSByZXR1cm5lZCBieSB0aGUKKyAgICAgKiBzcGVjaWZpZWQgQ29sbGVjdGlvbidzIEl0ZXJhdG9yLiAgVGhlIGJlaGF2aW9yIG9mIHRoaXMgb3BlcmF0aW9uIGlzCisgICAgICogdW5kZWZpbmVkIGlmIHRoZSBzcGVjaWZpZWQgQ29sbGVjdGlvbiBpcyBtb2RpZmllZCB3aGlsZSB0aGUgb3BlcmF0aW9uCisgICAgICogaXMgaW4gcHJvZ3Jlc3MuICAoVGhpcyBpbXBsaWVzIHRoYXQgdGhlIGJlaGF2aW9yIG9mIHRoaXMgY2FsbCBpcworICAgICAqIHVuZGVmaW5lZCBpZiB0aGUgc3BlY2lmaWVkIENvbGxlY3Rpb24gaXMgdGhpcyBsaXN0LCBhbmQgdGhpcworICAgICAqIGxpc3QgaXMgbm9uZW1wdHkuKQorICAgICAqCisgICAgICogQHBhcmFtIGMgdGhlIGVsZW1lbnRzIHRvIGJlIGluc2VydGVkIGludG8gdGhpcyBsaXN0LgorICAgICAqIEByZXR1cm4gPHR0PnRydWU8L3R0PiBpZiB0aGlzIGxpc3QgY2hhbmdlZCBhcyBhIHJlc3VsdCBvZiB0aGUgY2FsbC4KKyAgICAgKiBAdGhyb3dzICAgIE51bGxQb2ludGVyRXhjZXB0aW9uIGlmIHRoZSBzcGVjaWZpZWQgY29sbGVjdGlvbiBpcyBudWxsLgorICAgICAqLworICAgIHB1YmxpYyBib29sZWFuIGFkZEFsbChDb2xsZWN0aW9uPD8gZXh0ZW5kcyBFPiBjKSB7CisJT2JqZWN0W10gYSA9IGMudG9BcnJheSgpOworICAgICAgICBpbnQgbnVtTmV3ID0gYS5sZW5ndGg7CisJZW5zdXJlQ2FwYWNpdHkoc2l6ZSArIG51bU5ldyk7ICAvLyBJbmNyZW1lbnRzIG1vZENvdW50CisgICAgICAgIFN5c3RlbS5hcnJheWNvcHkoYSwgMCwgZWxlbWVudERhdGEsIHNpemUsIG51bU5ldyk7CisgICAgICAgIHNpemUgKz0gbnVtTmV3OworCXJldHVybiBudW1OZXcgIT0gMDsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBJbnNlcnRzIGFsbCBvZiB0aGUgZWxlbWVudHMgaW4gdGhlIHNwZWNpZmllZCBDb2xsZWN0aW9uIGludG8gdGhpcworICAgICAqIGxpc3QsIHN0YXJ0aW5nIGF0IHRoZSBzcGVjaWZpZWQgcG9zaXRpb24uICBTaGlmdHMgdGhlIGVsZW1lbnQKKyAgICAgKiBjdXJyZW50bHkgYXQgdGhhdCBwb3NpdGlvbiAoaWYgYW55KSBhbmQgYW55IHN1YnNlcXVlbnQgZWxlbWVudHMgdG8KKyAgICAgKiB0aGUgcmlnaHQgKGluY3JlYXNlcyB0aGVpciBpbmRpY2VzKS4gIFRoZSBuZXcgZWxlbWVudHMgd2lsbCBhcHBlYXIKKyAgICAgKiBpbiB0aGUgbGlzdCBpbiB0aGUgb3JkZXIgdGhhdCB0aGV5IGFyZSByZXR1cm5lZCBieSB0aGUKKyAgICAgKiBzcGVjaWZpZWQgQ29sbGVjdGlvbidzIGl0ZXJhdG9yLgorICAgICAqCisgICAgICogQHBhcmFtIGluZGV4IGluZGV4IGF0IHdoaWNoIHRvIGluc2VydCBmaXJzdCBlbGVtZW50CisgICAgICoJCSAgICBmcm9tIHRoZSBzcGVjaWZpZWQgY29sbGVjdGlvbi4KKyAgICAgKiBAcGFyYW0gYyBlbGVtZW50cyB0byBiZSBpbnNlcnRlZCBpbnRvIHRoaXMgbGlzdC4KKyAgICAgKiBAcmV0dXJuIDx0dD50cnVlPC90dD4gaWYgdGhpcyBsaXN0IGNoYW5nZWQgYXMgYSByZXN1bHQgb2YgdGhlIGNhbGwuCisgICAgICogQHRocm93cyAgICBJbmRleE91dE9mQm91bmRzRXhjZXB0aW9uIGlmIGluZGV4IG91dCBvZiByYW5nZSA8dHQ+KGluZGV4CisgICAgICoJCSAgJmx0OyAwIHx8IGluZGV4ICZndDsgc2l6ZSgpKTwvdHQ+LgorICAgICAqIEB0aHJvd3MgICAgTnVsbFBvaW50ZXJFeGNlcHRpb24gaWYgdGhlIHNwZWNpZmllZCBDb2xsZWN0aW9uIGlzIG51bGwuCisgICAgICovCisgICAgcHVibGljIGJvb2xlYW4gYWRkQWxsKGludCBpbmRleCwgQ29sbGVjdGlvbjw/IGV4dGVuZHMgRT4gYykgeworCWlmIChpbmRleCA+IHNpemUgfHwgaW5kZXggPCAwKQorCSAgICB0aHJvdyBuZXcgSW5kZXhPdXRPZkJvdW5kc0V4Y2VwdGlvbigKKwkJIkluZGV4OiAiICsgaW5kZXggKyAiLCBTaXplOiAiICsgc2l6ZSk7CisKKwlPYmplY3RbXSBhID0gYy50b0FycmF5KCk7CisJaW50IG51bU5ldyA9IGEubGVuZ3RoOworCWVuc3VyZUNhcGFjaXR5KHNpemUgKyBudW1OZXcpOyAgLy8gSW5jcmVtZW50cyBtb2RDb3VudAorCisJaW50IG51bU1vdmVkID0gc2l6ZSAtIGluZGV4OworCWlmIChudW1Nb3ZlZCA+IDApCisJICAgIFN5c3RlbS5hcnJheWNvcHkoZWxlbWVudERhdGEsIGluZGV4LCBlbGVtZW50RGF0YSwgaW5kZXggKyBudW1OZXcsCisJCQkgICAgIG51bU1vdmVkKTsKKworICAgICAgICBTeXN0ZW0uYXJyYXljb3B5KGEsIDAsIGVsZW1lbnREYXRhLCBpbmRleCwgbnVtTmV3KTsKKwlzaXplICs9IG51bU5ldzsKKwlyZXR1cm4gbnVtTmV3ICE9IDA7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmVtb3ZlcyBmcm9tIHRoaXMgTGlzdCBhbGwgb2YgdGhlIGVsZW1lbnRzIHdob3NlIGluZGV4IGlzIGJldHdlZW4KKyAgICAgKiBmcm9tSW5kZXgsIGluY2x1c2l2ZSBhbmQgdG9JbmRleCwgZXhjbHVzaXZlLiAgU2hpZnRzIGFueSBzdWNjZWVkaW5nCisgICAgICogZWxlbWVudHMgdG8gdGhlIGxlZnQgKHJlZHVjZXMgdGhlaXIgaW5kZXgpLgorICAgICAqIFRoaXMgY2FsbCBzaG9ydGVucyB0aGUgbGlzdCBieSA8dHQ+KHRvSW5kZXggLSBmcm9tSW5kZXgpPC90dD4gZWxlbWVudHMuCisgICAgICogKElmIDx0dD50b0luZGV4PT1mcm9tSW5kZXg8L3R0PiwgdGhpcyBvcGVyYXRpb24gaGFzIG5vIGVmZmVjdC4pCisgICAgICoKKyAgICAgKiBAcGFyYW0gZnJvbUluZGV4IGluZGV4IG9mIGZpcnN0IGVsZW1lbnQgdG8gYmUgcmVtb3ZlZC4KKyAgICAgKiBAcGFyYW0gdG9JbmRleCBpbmRleCBhZnRlciBsYXN0IGVsZW1lbnQgdG8gYmUgcmVtb3ZlZC4KKyAgICAgKi8KKyAgICBwcm90ZWN0ZWQgdm9pZCByZW1vdmVSYW5nZShpbnQgZnJvbUluZGV4LCBpbnQgdG9JbmRleCkgeworCW1vZENvdW50Kys7CisJaW50IG51bU1vdmVkID0gc2l6ZSAtIHRvSW5kZXg7CisgICAgICAgIFN5c3RlbS5hcnJheWNvcHkoZWxlbWVudERhdGEsIHRvSW5kZXgsIGVsZW1lbnREYXRhLCBmcm9tSW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgbnVtTW92ZWQpOworCisJLy8gTGV0IGdjIGRvIGl0cyB3b3JrCisJaW50IG5ld1NpemUgPSBzaXplIC0gKHRvSW5kZXgtZnJvbUluZGV4KTsKKwl3aGlsZSAoc2l6ZSAhPSBuZXdTaXplKQorCSAgICBlbGVtZW50RGF0YVstLXNpemVdID0gbnVsbDsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDaGVjayBpZiB0aGUgZ2l2ZW4gaW5kZXggaXMgaW4gcmFuZ2UuICBJZiBub3QsIHRocm93IGFuIGFwcHJvcHJpYXRlCisgICAgICogcnVudGltZSBleGNlcHRpb24uICBUaGlzIG1ldGhvZCBkb2VzICpub3QqIGNoZWNrIGlmIHRoZSBpbmRleCBpcworICAgICAqIG5lZ2F0aXZlOiBJdCBpcyBhbHdheXMgdXNlZCBpbW1lZGlhdGVseSBwcmlvciB0byBhbiBhcnJheSBhY2Nlc3MsCisgICAgICogd2hpY2ggdGhyb3dzIGFuIEFycmF5SW5kZXhPdXRPZkJvdW5kc0V4Y2VwdGlvbiBpZiBpbmRleCBpcyBuZWdhdGl2ZS4KKyAgICAgKi8KKyAgICBwcml2YXRlIHZvaWQgUmFuZ2VDaGVjayhpbnQgaW5kZXgpIHsKKwlpZiAoaW5kZXggPj0gc2l6ZSkKKwkgICAgdGhyb3cgbmV3IEluZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb24oCisJCSJJbmRleDogIitpbmRleCsiLCBTaXplOiAiK3NpemUpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFNhdmUgdGhlIHN0YXRlIG9mIHRoZSA8dHQ+QXJyYXlMaXN0PC90dD4gaW5zdGFuY2UgdG8gYSBzdHJlYW0gKHRoYXQKKyAgICAgKiBpcywgc2VyaWFsaXplIGl0KS4KKyAgICAgKgorICAgICAqIEBzZXJpYWxEYXRhIFRoZSBsZW5ndGggb2YgdGhlIGFycmF5IGJhY2tpbmcgdGhlIDx0dD5BcnJheUxpc3Q8L3R0PgorICAgICAqICAgICAgICAgICAgIGluc3RhbmNlIGlzIGVtaXR0ZWQgKGludCksIGZvbGxvd2VkIGJ5IGFsbCBvZiBpdHMgZWxlbWVudHMKKyAgICAgKiAgICAgICAgICAgICAoZWFjaCBhbiA8dHQ+T2JqZWN0PC90dD4pIGluIHRoZSBwcm9wZXIgb3JkZXIuCisgICAgICovCisgICAgcHJpdmF0ZSB2b2lkIHdyaXRlT2JqZWN0KGphdmEuaW8uT2JqZWN0T3V0cHV0U3RyZWFtIHMpCisgICAgICAgIHRocm93cyBqYXZhLmlvLklPRXhjZXB0aW9ueworCS8vIFdyaXRlIG91dCBlbGVtZW50IGNvdW50LCBhbmQgYW55IGhpZGRlbiBzdHVmZgorCXMuZGVmYXVsdFdyaXRlT2JqZWN0KCk7CisKKyAgICAgICAgLy8gV3JpdGUgb3V0IGFycmF5IGxlbmd0aAorICAgICAgICBzLndyaXRlSW50KGVsZW1lbnREYXRhLmxlbmd0aCk7CisKKwkvLyBXcml0ZSBvdXQgYWxsIGVsZW1lbnRzIGluIHRoZSBwcm9wZXIgb3JkZXIuCisJZm9yIChpbnQgaT0wOyBpPHNpemU7IGkrKykKKyAgICAgICAgICAgIHMud3JpdGVPYmplY3QoZWxlbWVudERhdGFbaV0pOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJlY29uc3RpdHV0ZSB0aGUgPHR0PkFycmF5TGlzdDwvdHQ+IGluc3RhbmNlIGZyb20gYSBzdHJlYW0gKHRoYXQgaXMsCisgICAgICogZGVzZXJpYWxpemUgaXQpLgorICAgICAqLworICAgIHByaXZhdGUgdm9pZCByZWFkT2JqZWN0KGphdmEuaW8uT2JqZWN0SW5wdXRTdHJlYW0gcykKKyAgICAgICAgdGhyb3dzIGphdmEuaW8uSU9FeGNlcHRpb24sIENsYXNzTm90Rm91bmRFeGNlcHRpb24geworCS8vIFJlYWQgaW4gc2l6ZSwgYW5kIGFueSBoaWRkZW4gc3R1ZmYKKwlzLmRlZmF1bHRSZWFkT2JqZWN0KCk7CisKKyAgICAgICAgLy8gUmVhZCBpbiBhcnJheSBsZW5ndGggYW5kIGFsbG9jYXRlIGFycmF5CisgICAgICAgIGludCBhcnJheUxlbmd0aCA9IHMucmVhZEludCgpOworICAgICAgICBPYmplY3RbXSBhID0gZWxlbWVudERhdGEgPSAoRVtdKW5ldyBPYmplY3RbYXJyYXlMZW5ndGhdOworCisJLy8gUmVhZCBpbiBhbGwgZWxlbWVudHMgaW4gdGhlIHByb3BlciBvcmRlci4KKwlmb3IgKGludCBpPTA7IGk8c2l6ZTsgaSsrKQorICAgICAgICAgICAgYVtpXSA9IHMucmVhZE9iamVjdCgpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jb3B5Q2xhc3MvbXVsdGlmaWxlL3BhY2thZ2VIaWVyYXJjaHkvYWZ0ZXIvcDEvUzEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jb3B5Q2xhc3MvbXVsdGlmaWxlL3BhY2thZ2VIaWVyYXJjaHkvYWZ0ZXIvcDEvUzEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YWY1NGQ3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NvcHlDbGFzcy9tdWx0aWZpbGUvcGFja2FnZUhpZXJhcmNoeS9hZnRlci9wMS9TMS5qYXZhCkBAIC0wLDAgKzEsNyBAQAorcGFja2FnZSBwMTsKK3B1YmxpYyBjbGFzcyBTMSB7CisgIFMyIHMyOworICB2b2lkIGZvbygpIHsKKyAgICBzMi5mb28oKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jb3B5Q2xhc3MvbXVsdGlmaWxlL3BhY2thZ2VIaWVyYXJjaHkvYWZ0ZXIvcDEvUzIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jb3B5Q2xhc3MvbXVsdGlmaWxlL3BhY2thZ2VIaWVyYXJjaHkvYWZ0ZXIvcDEvUzIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMmQwNWI3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NvcHlDbGFzcy9tdWx0aWZpbGUvcGFja2FnZUhpZXJhcmNoeS9hZnRlci9wMS9TMi5qYXZhCkBAIC0wLDAgKzEsNyBAQAorcGFja2FnZSBwMTsKK3B1YmxpYyBjbGFzcyBTMiB7CisgIFMxIHMxOworICB2b2lkIGZvbygpIHsKKyAgICBzMS5mb28oKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jb3B5Q2xhc3MvbXVsdGlmaWxlL3BhY2thZ2VIaWVyYXJjaHkvYWZ0ZXIvcDEvcDExL1MxMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NvcHlDbGFzcy9tdWx0aWZpbGUvcGFja2FnZUhpZXJhcmNoeS9hZnRlci9wMS9wMTEvUzExLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmViZWNhNAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jb3B5Q2xhc3MvbXVsdGlmaWxlL3BhY2thZ2VIaWVyYXJjaHkvYWZ0ZXIvcDEvcDExL1MxMS5qYXZhCkBAIC0wLDAgKzEsMiBAQAorcGFja2FnZSBwMS5wMTE7CitjbGFzcyBTMTEge30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY29weUNsYXNzL211bHRpZmlsZS9wYWNrYWdlSGllcmFyY2h5L2FmdGVyL3AyL2VtcHR5LnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jb3B5Q2xhc3MvbXVsdGlmaWxlL3BhY2thZ2VIaWVyYXJjaHkvYWZ0ZXIvcDIvZW1wdHkudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU2OWRlMjkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY29weUNsYXNzL211bHRpZmlsZS9wYWNrYWdlSGllcmFyY2h5L2FmdGVyL3AyL2VtcHR5LnR4dApkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NvcHlDbGFzcy9tdWx0aWZpbGUvcGFja2FnZUhpZXJhcmNoeS9hZnRlci9wMi9wMS9TMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NvcHlDbGFzcy9tdWx0aWZpbGUvcGFja2FnZUhpZXJhcmNoeS9hZnRlci9wMi9wMS9TMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmViZTQyYzMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY29weUNsYXNzL211bHRpZmlsZS9wYWNrYWdlSGllcmFyY2h5L2FmdGVyL3AyL3AxL1MxLmphdmEKQEAgLTAsMCArMSw4IEBACitwYWNrYWdlIHAyLnAxOworCitwdWJsaWMgY2xhc3MgUzEgeworICBTMiBzMjsKKyAgdm9pZCBmb28oKSB7CisgICAgczIuZm9vKCk7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY29weUNsYXNzL211bHRpZmlsZS9wYWNrYWdlSGllcmFyY2h5L2FmdGVyL3AyL3AxL1MyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY29weUNsYXNzL211bHRpZmlsZS9wYWNrYWdlSGllcmFyY2h5L2FmdGVyL3AyL3AxL1MyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTc1YjU3OQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jb3B5Q2xhc3MvbXVsdGlmaWxlL3BhY2thZ2VIaWVyYXJjaHkvYWZ0ZXIvcDIvcDEvUzIuamF2YQpAQCAtMCwwICsxLDggQEAKK3BhY2thZ2UgcDIucDE7CisKK3B1YmxpYyBjbGFzcyBTMiB7CisgIFMxIHMxOworICB2b2lkIGZvbygpIHsKKyAgICBzMS5mb28oKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jb3B5Q2xhc3MvbXVsdGlmaWxlL3BhY2thZ2VIaWVyYXJjaHkvYWZ0ZXIvcDIvcDEvcDExL1MxMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NvcHlDbGFzcy9tdWx0aWZpbGUvcGFja2FnZUhpZXJhcmNoeS9hZnRlci9wMi9wMS9wMTEvUzExLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWU1OWIwMgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jb3B5Q2xhc3MvbXVsdGlmaWxlL3BhY2thZ2VIaWVyYXJjaHkvYWZ0ZXIvcDIvcDEvcDExL1MxMS5qYXZhCkBAIC0wLDAgKzEsMiBAQAorcGFja2FnZSBwMi5wMS5wMTE7CitjbGFzcyBTMTEge30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY29weUNsYXNzL211bHRpZmlsZS9wYWNrYWdlSGllcmFyY2h5L2JlZm9yZS9wMS9TMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NvcHlDbGFzcy9tdWx0aWZpbGUvcGFja2FnZUhpZXJhcmNoeS9iZWZvcmUvcDEvUzEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YWY1NGQ3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NvcHlDbGFzcy9tdWx0aWZpbGUvcGFja2FnZUhpZXJhcmNoeS9iZWZvcmUvcDEvUzEuamF2YQpAQCAtMCwwICsxLDcgQEAKK3BhY2thZ2UgcDE7CitwdWJsaWMgY2xhc3MgUzEgeworICBTMiBzMjsKKyAgdm9pZCBmb28oKSB7CisgICAgczIuZm9vKCk7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY29weUNsYXNzL211bHRpZmlsZS9wYWNrYWdlSGllcmFyY2h5L2JlZm9yZS9wMS9TMi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NvcHlDbGFzcy9tdWx0aWZpbGUvcGFja2FnZUhpZXJhcmNoeS9iZWZvcmUvcDEvUzIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMmQwNWI3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NvcHlDbGFzcy9tdWx0aWZpbGUvcGFja2FnZUhpZXJhcmNoeS9iZWZvcmUvcDEvUzIuamF2YQpAQCAtMCwwICsxLDcgQEAKK3BhY2thZ2UgcDE7CitwdWJsaWMgY2xhc3MgUzIgeworICBTMSBzMTsKKyAgdm9pZCBmb28oKSB7CisgICAgczEuZm9vKCk7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY29weUNsYXNzL211bHRpZmlsZS9wYWNrYWdlSGllcmFyY2h5L2JlZm9yZS9wMS9wMTEvUzExLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY29weUNsYXNzL211bHRpZmlsZS9wYWNrYWdlSGllcmFyY2h5L2JlZm9yZS9wMS9wMTEvUzExLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmViZWNhNAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jb3B5Q2xhc3MvbXVsdGlmaWxlL3BhY2thZ2VIaWVyYXJjaHkvYmVmb3JlL3AxL3AxMS9TMTEuamF2YQpAQCAtMCwwICsxLDIgQEAKK3BhY2thZ2UgcDEucDExOworY2xhc3MgUzExIHt9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NvcHlDbGFzcy9tdWx0aWZpbGUvcGFja2FnZUhpZXJhcmNoeS9iZWZvcmUvcDIvZW1wdHkudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NvcHlDbGFzcy9tdWx0aWZpbGUvcGFja2FnZUhpZXJhcmNoeS9iZWZvcmUvcDIvZW1wdHkudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU2OWRlMjkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY29weUNsYXNzL211bHRpZmlsZS9wYWNrYWdlSGllcmFyY2h5L2JlZm9yZS9wMi9lbXB0eS50eHQKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jb3B5Q2xhc3MvbXVsdGlmaWxlL3BhY2thZ2VMb2NhbENsYXNzZXMvYWZ0ZXIvcDEvUzEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jb3B5Q2xhc3MvbXVsdGlmaWxlL3BhY2thZ2VMb2NhbENsYXNzZXMvYWZ0ZXIvcDEvUzEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MmJmNmU3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NvcHlDbGFzcy9tdWx0aWZpbGUvcGFja2FnZUxvY2FsQ2xhc3Nlcy9hZnRlci9wMS9TMS5qYXZhCkBAIC0wLDAgKzEsNCBAQAorcGFja2FnZSBwMTsKK2NsYXNzIFMxIHsKKyAgUzIgczI7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NvcHlDbGFzcy9tdWx0aWZpbGUvcGFja2FnZUxvY2FsQ2xhc3Nlcy9hZnRlci9wMS9TMi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NvcHlDbGFzcy9tdWx0aWZpbGUvcGFja2FnZUxvY2FsQ2xhc3Nlcy9hZnRlci9wMS9TMi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjExNjAyMjcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY29weUNsYXNzL211bHRpZmlsZS9wYWNrYWdlTG9jYWxDbGFzc2VzL2FmdGVyL3AxL1MyLmphdmEKQEAgLTAsMCArMSw0IEBACitwYWNrYWdlIHAxOworY2xhc3MgUzIgeworICBTMSBzMTsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY29weUNsYXNzL211bHRpZmlsZS9wYWNrYWdlTG9jYWxDbGFzc2VzL2FmdGVyL3AxL2VtcHR5LnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jb3B5Q2xhc3MvbXVsdGlmaWxlL3BhY2thZ2VMb2NhbENsYXNzZXMvYWZ0ZXIvcDEvZW1wdHkudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU2OWRlMjkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY29weUNsYXNzL211bHRpZmlsZS9wYWNrYWdlTG9jYWxDbGFzc2VzL2FmdGVyL3AxL2VtcHR5LnR4dApkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NvcHlDbGFzcy9tdWx0aWZpbGUvcGFja2FnZUxvY2FsQ2xhc3Nlcy9hZnRlci9wMi9TMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NvcHlDbGFzcy9tdWx0aWZpbGUvcGFja2FnZUxvY2FsQ2xhc3Nlcy9hZnRlci9wMi9TMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUyMDFmNDYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY29weUNsYXNzL211bHRpZmlsZS9wYWNrYWdlTG9jYWxDbGFzc2VzL2FmdGVyL3AyL1MxLmphdmEKQEAgLTAsMCArMSw1IEBACitwYWNrYWdlIHAyOworCitjbGFzcyBTMSB7CisgIFMyIHMyOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jb3B5Q2xhc3MvbXVsdGlmaWxlL3BhY2thZ2VMb2NhbENsYXNzZXMvYWZ0ZXIvcDIvUzIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jb3B5Q2xhc3MvbXVsdGlmaWxlL3BhY2thZ2VMb2NhbENsYXNzZXMvYWZ0ZXIvcDIvUzIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yOTJiNjQ5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NvcHlDbGFzcy9tdWx0aWZpbGUvcGFja2FnZUxvY2FsQ2xhc3Nlcy9hZnRlci9wMi9TMi5qYXZhCkBAIC0wLDAgKzEsNSBAQAorcGFja2FnZSBwMjsKKworY2xhc3MgUzIgeworICBTMSBzMTsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY29weUNsYXNzL211bHRpZmlsZS9wYWNrYWdlTG9jYWxDbGFzc2VzL2FmdGVyL3AyL2VtcHR5LnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jb3B5Q2xhc3MvbXVsdGlmaWxlL3BhY2thZ2VMb2NhbENsYXNzZXMvYWZ0ZXIvcDIvZW1wdHkudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU2OWRlMjkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY29weUNsYXNzL211bHRpZmlsZS9wYWNrYWdlTG9jYWxDbGFzc2VzL2FmdGVyL3AyL2VtcHR5LnR4dApkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NvcHlDbGFzcy9tdWx0aWZpbGUvcGFja2FnZUxvY2FsQ2xhc3Nlcy9iZWZvcmUvcDEvUzEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jb3B5Q2xhc3MvbXVsdGlmaWxlL3BhY2thZ2VMb2NhbENsYXNzZXMvYmVmb3JlL3AxL1MxLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzJiZjZlNwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jb3B5Q2xhc3MvbXVsdGlmaWxlL3BhY2thZ2VMb2NhbENsYXNzZXMvYmVmb3JlL3AxL1MxLmphdmEKQEAgLTAsMCArMSw0IEBACitwYWNrYWdlIHAxOworY2xhc3MgUzEgeworICBTMiBzMjsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY29weUNsYXNzL211bHRpZmlsZS9wYWNrYWdlTG9jYWxDbGFzc2VzL2JlZm9yZS9wMS9TMi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NvcHlDbGFzcy9tdWx0aWZpbGUvcGFja2FnZUxvY2FsQ2xhc3Nlcy9iZWZvcmUvcDEvUzIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMTYwMjI3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NvcHlDbGFzcy9tdWx0aWZpbGUvcGFja2FnZUxvY2FsQ2xhc3Nlcy9iZWZvcmUvcDEvUzIuamF2YQpAQCAtMCwwICsxLDQgQEAKK3BhY2thZ2UgcDE7CitjbGFzcyBTMiB7CisgIFMxIHMxOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jb3B5Q2xhc3MvbXVsdGlmaWxlL3BhY2thZ2VMb2NhbENsYXNzZXMvYmVmb3JlL3AxL2VtcHR5LnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jb3B5Q2xhc3MvbXVsdGlmaWxlL3BhY2thZ2VMb2NhbENsYXNzZXMvYmVmb3JlL3AxL2VtcHR5LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNjlkZTI5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NvcHlDbGFzcy9tdWx0aWZpbGUvcGFja2FnZUxvY2FsQ2xhc3Nlcy9iZWZvcmUvcDEvZW1wdHkudHh0CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY29weUNsYXNzL211bHRpZmlsZS9wYWNrYWdlTG9jYWxDbGFzc2VzL2JlZm9yZS9wMi9lbXB0eS50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY29weUNsYXNzL211bHRpZmlsZS9wYWNrYWdlTG9jYWxDbGFzc2VzL2JlZm9yZS9wMi9lbXB0eS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTY5ZGUyOQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jb3B5Q2xhc3MvbXVsdGlmaWxlL3BhY2thZ2VMb2NhbENsYXNzZXMvYmVmb3JlL3AyL2VtcHR5LnR4dApkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NvcHlDbGFzcy9tdWx0aWZpbGUvcGFja2FnZUxvY2FsTWV0aG9kcy9hZnRlci9wMS9TMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NvcHlDbGFzcy9tdWx0aWZpbGUvcGFja2FnZUxvY2FsTWV0aG9kcy9hZnRlci9wMS9TMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZhZjU0ZDcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY29weUNsYXNzL211bHRpZmlsZS9wYWNrYWdlTG9jYWxNZXRob2RzL2FmdGVyL3AxL1MxLmphdmEKQEAgLTAsMCArMSw3IEBACitwYWNrYWdlIHAxOworcHVibGljIGNsYXNzIFMxIHsKKyAgUzIgczI7CisgIHZvaWQgZm9vKCkgeworICAgIHMyLmZvbygpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NvcHlDbGFzcy9tdWx0aWZpbGUvcGFja2FnZUxvY2FsTWV0aG9kcy9hZnRlci9wMS9TMi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NvcHlDbGFzcy9tdWx0aWZpbGUvcGFja2FnZUxvY2FsTWV0aG9kcy9hZnRlci9wMS9TMi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAyZDA1YjcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY29weUNsYXNzL211bHRpZmlsZS9wYWNrYWdlTG9jYWxNZXRob2RzL2FmdGVyL3AxL1MyLmphdmEKQEAgLTAsMCArMSw3IEBACitwYWNrYWdlIHAxOworcHVibGljIGNsYXNzIFMyIHsKKyAgUzEgczE7CisgIHZvaWQgZm9vKCkgeworICAgIHMxLmZvbygpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NvcHlDbGFzcy9tdWx0aWZpbGUvcGFja2FnZUxvY2FsTWV0aG9kcy9hZnRlci9wMS9lbXB0eS50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY29weUNsYXNzL211bHRpZmlsZS9wYWNrYWdlTG9jYWxNZXRob2RzL2FmdGVyL3AxL2VtcHR5LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNjlkZTI5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NvcHlDbGFzcy9tdWx0aWZpbGUvcGFja2FnZUxvY2FsTWV0aG9kcy9hZnRlci9wMS9lbXB0eS50eHQKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jb3B5Q2xhc3MvbXVsdGlmaWxlL3BhY2thZ2VMb2NhbE1ldGhvZHMvYWZ0ZXIvcDIvUzEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jb3B5Q2xhc3MvbXVsdGlmaWxlL3BhY2thZ2VMb2NhbE1ldGhvZHMvYWZ0ZXIvcDIvUzEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MjkyNTdhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NvcHlDbGFzcy9tdWx0aWZpbGUvcGFja2FnZUxvY2FsTWV0aG9kcy9hZnRlci9wMi9TMS5qYXZhCkBAIC0wLDAgKzEsOCBAQAorcGFja2FnZSBwMjsKKworcHVibGljIGNsYXNzIFMxIHsKKyAgUzIgczI7CisgIHZvaWQgZm9vKCkgeworICAgIHMyLmZvbygpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NvcHlDbGFzcy9tdWx0aWZpbGUvcGFja2FnZUxvY2FsTWV0aG9kcy9hZnRlci9wMi9TMi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NvcHlDbGFzcy9tdWx0aWZpbGUvcGFja2FnZUxvY2FsTWV0aG9kcy9hZnRlci9wMi9TMi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJjYzg0MWYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY29weUNsYXNzL211bHRpZmlsZS9wYWNrYWdlTG9jYWxNZXRob2RzL2FmdGVyL3AyL1MyLmphdmEKQEAgLTAsMCArMSw4IEBACitwYWNrYWdlIHAyOworCitwdWJsaWMgY2xhc3MgUzIgeworICBTMSBzMTsKKyAgdm9pZCBmb28oKSB7CisgICAgczEuZm9vKCk7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY29weUNsYXNzL211bHRpZmlsZS9wYWNrYWdlTG9jYWxNZXRob2RzL2FmdGVyL3AyL2VtcHR5LnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jb3B5Q2xhc3MvbXVsdGlmaWxlL3BhY2thZ2VMb2NhbE1ldGhvZHMvYWZ0ZXIvcDIvZW1wdHkudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU2OWRlMjkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY29weUNsYXNzL211bHRpZmlsZS9wYWNrYWdlTG9jYWxNZXRob2RzL2FmdGVyL3AyL2VtcHR5LnR4dApkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NvcHlDbGFzcy9tdWx0aWZpbGUvcGFja2FnZUxvY2FsTWV0aG9kcy9iZWZvcmUvcDEvUzEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jb3B5Q2xhc3MvbXVsdGlmaWxlL3BhY2thZ2VMb2NhbE1ldGhvZHMvYmVmb3JlL3AxL1MxLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmFmNTRkNwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jb3B5Q2xhc3MvbXVsdGlmaWxlL3BhY2thZ2VMb2NhbE1ldGhvZHMvYmVmb3JlL3AxL1MxLmphdmEKQEAgLTAsMCArMSw3IEBACitwYWNrYWdlIHAxOworcHVibGljIGNsYXNzIFMxIHsKKyAgUzIgczI7CisgIHZvaWQgZm9vKCkgeworICAgIHMyLmZvbygpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NvcHlDbGFzcy9tdWx0aWZpbGUvcGFja2FnZUxvY2FsTWV0aG9kcy9iZWZvcmUvcDEvUzIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jb3B5Q2xhc3MvbXVsdGlmaWxlL3BhY2thZ2VMb2NhbE1ldGhvZHMvYmVmb3JlL3AxL1MyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDJkMDViNwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jb3B5Q2xhc3MvbXVsdGlmaWxlL3BhY2thZ2VMb2NhbE1ldGhvZHMvYmVmb3JlL3AxL1MyLmphdmEKQEAgLTAsMCArMSw3IEBACitwYWNrYWdlIHAxOworcHVibGljIGNsYXNzIFMyIHsKKyAgUzEgczE7CisgIHZvaWQgZm9vKCkgeworICAgIHMxLmZvbygpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NvcHlDbGFzcy9tdWx0aWZpbGUvcGFja2FnZUxvY2FsTWV0aG9kcy9iZWZvcmUvcDEvZW1wdHkudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NvcHlDbGFzcy9tdWx0aWZpbGUvcGFja2FnZUxvY2FsTWV0aG9kcy9iZWZvcmUvcDEvZW1wdHkudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU2OWRlMjkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY29weUNsYXNzL211bHRpZmlsZS9wYWNrYWdlTG9jYWxNZXRob2RzL2JlZm9yZS9wMS9lbXB0eS50eHQKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jb3B5Q2xhc3MvbXVsdGlmaWxlL3BhY2thZ2VMb2NhbE1ldGhvZHMvYmVmb3JlL3AyL2VtcHR5LnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jb3B5Q2xhc3MvbXVsdGlmaWxlL3BhY2thZ2VMb2NhbE1ldGhvZHMvYmVmb3JlL3AyL2VtcHR5LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNjlkZTI5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NvcHlDbGFzcy9tdWx0aWZpbGUvcGFja2FnZUxvY2FsTWV0aG9kcy9iZWZvcmUvcDIvZW1wdHkudHh0CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY29weUNsYXNzL211bHRpZmlsZS9wYWNrYWdlT25lTGV2ZWxIaWVyYXJjaHkvYWZ0ZXIvcDEvUzEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jb3B5Q2xhc3MvbXVsdGlmaWxlL3BhY2thZ2VPbmVMZXZlbEhpZXJhcmNoeS9hZnRlci9wMS9TMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZhZjU0ZDcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY29weUNsYXNzL211bHRpZmlsZS9wYWNrYWdlT25lTGV2ZWxIaWVyYXJjaHkvYWZ0ZXIvcDEvUzEuamF2YQpAQCAtMCwwICsxLDcgQEAKK3BhY2thZ2UgcDE7CitwdWJsaWMgY2xhc3MgUzEgeworICBTMiBzMjsKKyAgdm9pZCBmb28oKSB7CisgICAgczIuZm9vKCk7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY29weUNsYXNzL211bHRpZmlsZS9wYWNrYWdlT25lTGV2ZWxIaWVyYXJjaHkvYWZ0ZXIvcDEvUzIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jb3B5Q2xhc3MvbXVsdGlmaWxlL3BhY2thZ2VPbmVMZXZlbEhpZXJhcmNoeS9hZnRlci9wMS9TMi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAyZDA1YjcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY29weUNsYXNzL211bHRpZmlsZS9wYWNrYWdlT25lTGV2ZWxIaWVyYXJjaHkvYWZ0ZXIvcDEvUzIuamF2YQpAQCAtMCwwICsxLDcgQEAKK3BhY2thZ2UgcDE7CitwdWJsaWMgY2xhc3MgUzIgeworICBTMSBzMTsKKyAgdm9pZCBmb28oKSB7CisgICAgczEuZm9vKCk7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY29weUNsYXNzL211bHRpZmlsZS9wYWNrYWdlT25lTGV2ZWxIaWVyYXJjaHkvYWZ0ZXIvcDIvZW1wdHkudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NvcHlDbGFzcy9tdWx0aWZpbGUvcGFja2FnZU9uZUxldmVsSGllcmFyY2h5L2FmdGVyL3AyL2VtcHR5LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNjlkZTI5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NvcHlDbGFzcy9tdWx0aWZpbGUvcGFja2FnZU9uZUxldmVsSGllcmFyY2h5L2FmdGVyL3AyL2VtcHR5LnR4dApkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NvcHlDbGFzcy9tdWx0aWZpbGUvcGFja2FnZU9uZUxldmVsSGllcmFyY2h5L2FmdGVyL3AyL3AxL1MxLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY29weUNsYXNzL211bHRpZmlsZS9wYWNrYWdlT25lTGV2ZWxIaWVyYXJjaHkvYWZ0ZXIvcDIvcDEvUzEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYmU0MmMzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NvcHlDbGFzcy9tdWx0aWZpbGUvcGFja2FnZU9uZUxldmVsSGllcmFyY2h5L2FmdGVyL3AyL3AxL1MxLmphdmEKQEAgLTAsMCArMSw4IEBACitwYWNrYWdlIHAyLnAxOworCitwdWJsaWMgY2xhc3MgUzEgeworICBTMiBzMjsKKyAgdm9pZCBmb28oKSB7CisgICAgczIuZm9vKCk7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY29weUNsYXNzL211bHRpZmlsZS9wYWNrYWdlT25lTGV2ZWxIaWVyYXJjaHkvYWZ0ZXIvcDIvcDEvUzIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jb3B5Q2xhc3MvbXVsdGlmaWxlL3BhY2thZ2VPbmVMZXZlbEhpZXJhcmNoeS9hZnRlci9wMi9wMS9TMi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU3NWI1NzkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY29weUNsYXNzL211bHRpZmlsZS9wYWNrYWdlT25lTGV2ZWxIaWVyYXJjaHkvYWZ0ZXIvcDIvcDEvUzIuamF2YQpAQCAtMCwwICsxLDggQEAKK3BhY2thZ2UgcDIucDE7CisKK3B1YmxpYyBjbGFzcyBTMiB7CisgIFMxIHMxOworICB2b2lkIGZvbygpIHsKKyAgICBzMS5mb28oKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jb3B5Q2xhc3MvbXVsdGlmaWxlL3BhY2thZ2VPbmVMZXZlbEhpZXJhcmNoeS9iZWZvcmUvcDEvUzEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jb3B5Q2xhc3MvbXVsdGlmaWxlL3BhY2thZ2VPbmVMZXZlbEhpZXJhcmNoeS9iZWZvcmUvcDEvUzEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YWY1NGQ3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NvcHlDbGFzcy9tdWx0aWZpbGUvcGFja2FnZU9uZUxldmVsSGllcmFyY2h5L2JlZm9yZS9wMS9TMS5qYXZhCkBAIC0wLDAgKzEsNyBAQAorcGFja2FnZSBwMTsKK3B1YmxpYyBjbGFzcyBTMSB7CisgIFMyIHMyOworICB2b2lkIGZvbygpIHsKKyAgICBzMi5mb28oKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jb3B5Q2xhc3MvbXVsdGlmaWxlL3BhY2thZ2VPbmVMZXZlbEhpZXJhcmNoeS9iZWZvcmUvcDEvUzIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jb3B5Q2xhc3MvbXVsdGlmaWxlL3BhY2thZ2VPbmVMZXZlbEhpZXJhcmNoeS9iZWZvcmUvcDEvUzIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMmQwNWI3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NvcHlDbGFzcy9tdWx0aWZpbGUvcGFja2FnZU9uZUxldmVsSGllcmFyY2h5L2JlZm9yZS9wMS9TMi5qYXZhCkBAIC0wLDAgKzEsNyBAQAorcGFja2FnZSBwMTsKK3B1YmxpYyBjbGFzcyBTMiB7CisgIFMxIHMxOworICB2b2lkIGZvbygpIHsKKyAgICBzMS5mb28oKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jb3B5Q2xhc3MvbXVsdGlmaWxlL3BhY2thZ2VPbmVMZXZlbEhpZXJhcmNoeS9iZWZvcmUvcDIvZW1wdHkudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NvcHlDbGFzcy9tdWx0aWZpbGUvcGFja2FnZU9uZUxldmVsSGllcmFyY2h5L2JlZm9yZS9wMi9lbXB0eS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTY5ZGUyOQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jb3B5Q2xhc3MvbXVsdGlmaWxlL3BhY2thZ2VPbmVMZXZlbEhpZXJhcmNoeS9iZWZvcmUvcDIvZW1wdHkudHh0CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY29weUNsYXNzL3JlcGxhY2VBbGxPY2N1cnJlbmNlcy9CYXIuZXhwZWN0ZWQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jb3B5Q2xhc3MvcmVwbGFjZUFsbE9jY3VycmVuY2VzL0Jhci5leHBlY3RlZC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBhNDc5YzMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvY29weUNsYXNzL3JlcGxhY2VBbGxPY2N1cnJlbmNlcy9CYXIuZXhwZWN0ZWQuamF2YQpAQCAtMCwwICsxLDkgQEAKK3B1YmxpYyBjbGFzcyBCYXIgeworCisgICAgcHVibGljIHN0YXRpYyBCYXIgY3JlYXRlSW5zdGFuY2UoKSB7CisgICAgICAgIHJldHVybiBuZXcgQmFyKCk7CisgICAgfQorCisgICAgcHJpdmF0ZSBCYXIoKSB7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jb3B5Q2xhc3MvcmVwbGFjZUFsbE9jY3VycmVuY2VzL0Zvby5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2NvcHlDbGFzcy9yZXBsYWNlQWxsT2NjdXJyZW5jZXMvRm9vLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzg1YmQ1YwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9jb3B5Q2xhc3MvcmVwbGFjZUFsbE9jY3VycmVuY2VzL0Zvby5qYXZhCkBAIC0wLDAgKzEsOSBAQAorcHVibGljIGNsYXNzIEZvbyB7CisKKyAgICBwdWJsaWMgc3RhdGljIEZvbyBjcmVhdGVJbnN0YW5jZSgpIHsKKyAgICAgICAgcmV0dXJuIG5ldyBGb28oKTsKKyAgICB9CisKKyAgICBwcml2YXRlIEZvbygpIHsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2RuZE1vdmUvcHVibGljSmF2YUNsYXNzL2QvTXlDbGFzcy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2RuZE1vdmUvcHVibGljSmF2YUNsYXNzL2QvTXlDbGFzcy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkwZjQyYzMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZG5kTW92ZS9wdWJsaWNKYXZhQ2xhc3MvZC9NeUNsYXNzLmphdmEKQEAgLTAsMCArMSwyIEBACitwYWNrYWdlIGQ7CitwdWJsaWMgY2xhc3MgTXlDbGFzc3t9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2RuZE1vdmUvc2Vjb25kSmF2YUNsYXNzL2QvTXlDbGFzcy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2RuZE1vdmUvc2Vjb25kSmF2YUNsYXNzL2QvTXlDbGFzcy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc4YWQ3M2EKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZG5kTW92ZS9zZWNvbmRKYXZhQ2xhc3MvZC9NeUNsYXNzLmphdmEKQEAgLTAsMCArMSw1IEBACitwYWNrYWdlIGQ7CisKK3B1YmxpYyBjbGFzcyBNeUNsYXNze30KKworY2xhc3MgU2Vjb25ke30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZW5jYXBzdWxhdGVGaWVsZHMvYWxyZWFkeUV4aXN0L2FmdGVyL1Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9lbmNhcHN1bGF0ZUZpZWxkcy9hbHJlYWR5RXhpc3QvYWZ0ZXIvVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ1N2Q3ZjMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZW5jYXBzdWxhdGVGaWVsZHMvYWxyZWFkeUV4aXN0L2FmdGVyL1Rlc3QuamF2YQpAQCAtMCwwICsxLDE4IEBACitjbGFzcyBUZXN0IHsKKyAgaW50IGk7CisgIGludCBnZXRJKCkgeworICAgIHJldHVybiBpOworICB9CisKKyAgdm9pZCBmb28oKSB7CisgICAgc2V0SShnZXRJKCkgKyAxKTsKKyAgICBTeXN0ZW0ub3V0LnByaW50bG4oZ2V0SSgpKTsKKworICAgIFRlc3QgdDsKKyAgICBzZXRJKHQuZ2V0SSgpKTsKKyAgfQorCisgICAgcHVibGljIHZvaWQgc2V0SShpbnQgaSkgeworICAgICAgICB0aGlzLmkgPSBpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9lbmNhcHN1bGF0ZUZpZWxkcy9hbHJlYWR5RXhpc3QvYmVmb3JlL1Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9lbmNhcHN1bGF0ZUZpZWxkcy9hbHJlYWR5RXhpc3QvYmVmb3JlL1Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMGFmYzU1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2VuY2Fwc3VsYXRlRmllbGRzL2FscmVhZHlFeGlzdC9iZWZvcmUvVGVzdC5qYXZhCkBAIC0wLDAgKzEsMTQgQEAKK2NsYXNzIFRlc3QgeworICBpbnQgaTsKKyAgaW50IGdldEkoKSB7CisgICAgcmV0dXJuIGk7CisgIH0KKworICB2b2lkIGZvbygpIHsKKyAgICBpKys7CisgICAgU3lzdGVtLm91dC5wcmludGxuKGdldEkoKSk7CisKKyAgICBUZXN0IHQ7CisgICAgaSA9IHQuaTsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2VuY2Fwc3VsYXRlRmllbGRzL2RpZmZXaXRoUmV0dXJuVHlwZU9ubHkvYWZ0ZXIvVGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2VuY2Fwc3VsYXRlRmllbGRzL2RpZmZXaXRoUmV0dXJuVHlwZU9ubHkvYWZ0ZXIvVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRjMjI4ZDcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZW5jYXBzdWxhdGVGaWVsZHMvZGlmZldpdGhSZXR1cm5UeXBlT25seS9hZnRlci9UZXN0LmphdmEKQEAgLTAsMCArMSwxMSBAQAorY2xhc3MgVGVzdCB7CisgIGludCBpOworICBpbnQgZ2V0SSgpIHsKKyAgICByZXR1cm4gaTsKKyAgfQorCisgIFRlc3Qgc2V0SShpbnQgaSkgeworICAgIHRoaXMuaSA9IGk7CisgICAgcmV0dXJuIHRoaXM7CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9lbmNhcHN1bGF0ZUZpZWxkcy9kaWZmV2l0aFJldHVyblR5cGVPbmx5L2JlZm9yZS9UZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZW5jYXBzdWxhdGVGaWVsZHMvZGlmZldpdGhSZXR1cm5UeXBlT25seS9iZWZvcmUvVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRjMjI4ZDcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZW5jYXBzdWxhdGVGaWVsZHMvZGlmZldpdGhSZXR1cm5UeXBlT25seS9iZWZvcmUvVGVzdC5qYXZhCkBAIC0wLDAgKzEsMTEgQEAKK2NsYXNzIFRlc3QgeworICBpbnQgaTsKKyAgaW50IGdldEkoKSB7CisgICAgcmV0dXJuIGk7CisgIH0KKworICBUZXN0IHNldEkoaW50IGkpIHsKKyAgICB0aGlzLmkgPSBpOworICAgIHJldHVybiB0aGlzOworICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZW5jYXBzdWxhdGVGaWVsZHMvZGlmZldpdGhSZXR1cm5UeXBlT25seUluSGllcmFyY2h5L2FmdGVyL1Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9lbmNhcHN1bGF0ZUZpZWxkcy9kaWZmV2l0aFJldHVyblR5cGVPbmx5SW5IaWVyYXJjaHkvYWZ0ZXIvVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBlNTNkZWEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZW5jYXBzdWxhdGVGaWVsZHMvZGlmZldpdGhSZXR1cm5UeXBlT25seUluSGllcmFyY2h5L2FmdGVyL1Rlc3QuamF2YQpAQCAtMCwwICsxLDEyIEBACitwdWJsaWMgY2xhc3MgVGVzdCBleHRlbmRzIFN1cGVyeworICBpbnQgaTsKKyAgaW50IGdldEkoKSB7CisgICAgcmV0dXJuIGk7CisgIH0KK30KKworY2xhc3MgU3VwZXIgeworICBTdXBlciBzZXRJKGludCBpKSB7CisgICAgcmV0dXJuIHRoaXM7CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9lbmNhcHN1bGF0ZUZpZWxkcy9kaWZmV2l0aFJldHVyblR5cGVPbmx5SW5IaWVyYXJjaHkvYmVmb3JlL1Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9lbmNhcHN1bGF0ZUZpZWxkcy9kaWZmV2l0aFJldHVyblR5cGVPbmx5SW5IaWVyYXJjaHkvYmVmb3JlL1Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZTUzZGVhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2VuY2Fwc3VsYXRlRmllbGRzL2RpZmZXaXRoUmV0dXJuVHlwZU9ubHlJbkhpZXJhcmNoeS9iZWZvcmUvVGVzdC5qYXZhCkBAIC0wLDAgKzEsMTIgQEAKK3B1YmxpYyBjbGFzcyBUZXN0IGV4dGVuZHMgU3VwZXJ7CisgIGludCBpOworICBpbnQgZ2V0SSgpIHsKKyAgICByZXR1cm4gaTsKKyAgfQorfQorCitjbGFzcyBTdXBlciB7CisgIFN1cGVyIHNldEkoaW50IGkpIHsKKyAgICByZXR1cm4gdGhpczsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2VuY2Fwc3VsYXRlRmllbGRzL2hpZGVPdXRlcmNsYXNzTWV0aG9kL2FmdGVyL1Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9lbmNhcHN1bGF0ZUZpZWxkcy9oaWRlT3V0ZXJjbGFzc01ldGhvZC9hZnRlci9UZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWQ0YjdmNQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9lbmNhcHN1bGF0ZUZpZWxkcy9oaWRlT3V0ZXJjbGFzc01ldGhvZC9hZnRlci9UZXN0LmphdmEKQEAgLTAsMCArMSwxNyBAQAorcHVibGljIGNsYXNzIEEgeworICBzdGF0aWMgaW50IGdldEkoKSB7CisgICAgcmV0dXJuIDIzOworICB9CisKKyAgc3RhdGljIGNsYXNzIEIgeworICAgIHN0YXRpYyBwcml2YXRlIGludCBpID0gNDI7CisKKyAgICBzdGF0aWMgaW50IG0oKSB7CisgICAgICByZXR1cm4gZ2V0SSgpOworICAgIH0KKyAgfQorCisgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKKyAgICBTeXN0ZW0ub3V0LnByaW50bG4oQi5tKCkpOworICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZW5jYXBzdWxhdGVGaWVsZHMvaGlkZU91dGVyY2xhc3NNZXRob2QvYmVmb3JlL1Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9lbmNhcHN1bGF0ZUZpZWxkcy9oaWRlT3V0ZXJjbGFzc01ldGhvZC9iZWZvcmUvVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFkNGI3ZjUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZW5jYXBzdWxhdGVGaWVsZHMvaGlkZU91dGVyY2xhc3NNZXRob2QvYmVmb3JlL1Rlc3QuamF2YQpAQCAtMCwwICsxLDE3IEBACitwdWJsaWMgY2xhc3MgQSB7CisgIHN0YXRpYyBpbnQgZ2V0SSgpIHsKKyAgICByZXR1cm4gMjM7CisgIH0KKworICBzdGF0aWMgY2xhc3MgQiB7CisgICAgc3RhdGljIHByaXZhdGUgaW50IGkgPSA0MjsKKworICAgIHN0YXRpYyBpbnQgbSgpIHsKKyAgICAgIHJldHVybiBnZXRJKCk7CisgICAgfQorICB9CisKKyAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgeworICAgIFN5c3RlbS5vdXQucHJpbnRsbihCLm0oKSk7CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9lbmNhcHN1bGF0ZUZpZWxkcy9oaWRlT3ZlcnJpZGVyTWV0aG9kL2FmdGVyL1Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9lbmNhcHN1bGF0ZUZpZWxkcy9oaWRlT3ZlcnJpZGVyTWV0aG9kL2FmdGVyL1Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZDc3ZTliCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2VuY2Fwc3VsYXRlRmllbGRzL2hpZGVPdmVycmlkZXJNZXRob2QvYWZ0ZXIvVGVzdC5qYXZhCkBAIC0wLDAgKzEsMTUgQEAKK3B1YmxpYyBjbGFzcyBBIHsKKyAgcHVibGljIGludCBpOworfQorCitjbGFzcyBCIGV4dGVuZHMgQSB7CisgIHB1YmxpYyBpbnQgZ2V0SSgpIHsKKyAgICByZXR1cm4gNDI7CisgIH0KKworICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CisgICAgQSBhID0gbmV3IEIoKTsKKyAgICBhLmkgPSAyMzsKKyAgICBTeXN0ZW0ub3V0LnByaW50bG4oYS5pKTsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2VuY2Fwc3VsYXRlRmllbGRzL2hpZGVPdmVycmlkZXJNZXRob2QvYmVmb3JlL1Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9lbmNhcHN1bGF0ZUZpZWxkcy9oaWRlT3ZlcnJpZGVyTWV0aG9kL2JlZm9yZS9UZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGQ3N2U5YgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9lbmNhcHN1bGF0ZUZpZWxkcy9oaWRlT3ZlcnJpZGVyTWV0aG9kL2JlZm9yZS9UZXN0LmphdmEKQEAgLTAsMCArMSwxNSBAQAorcHVibGljIGNsYXNzIEEgeworICBwdWJsaWMgaW50IGk7Cit9CisKK2NsYXNzIEIgZXh0ZW5kcyBBIHsKKyAgcHVibGljIGludCBnZXRJKCkgeworICAgIHJldHVybiA0MjsKKyAgfQorCisgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKKyAgICBBIGEgPSBuZXcgQigpOworICAgIGEuaSA9IDIzOworICAgIFN5c3RlbS5vdXQucHJpbnRsbihhLmkpOworICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZW5jYXBzdWxhdGVGaWVsZHMvbW92ZUphdmFkb2NUb0dldHRlci9hZnRlci9UZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZW5jYXBzdWxhdGVGaWVsZHMvbW92ZUphdmFkb2NUb0dldHRlci9hZnRlci9UZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2E1MDE4OAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9lbmNhcHN1bGF0ZUZpZWxkcy9tb3ZlSmF2YWRvY1RvR2V0dGVyL2FmdGVyL1Rlc3QuamF2YQpAQCAtMCwwICsxLDIxIEBACitwdWJsaWMgY2xhc3MgQSB7CisgIHB1YmxpYyBpbnQgaTsKKworCisgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKKyAgICBBIGEgPSBuZXcgQigpOworICAgIGEuc2V0SSgyMyk7CisgICAgU3lzdGVtLm91dC5wcmludGxuKGEuZ2V0SSgpKTsKKyAgfQorCisgICAgLyoqCisgICAgICogbXkgamF2YWRvYyBmb3IgZmllbGQKKyAgICAgKi8KKyAgICBwdWJsaWMgaW50IGdldEkoKSB7CisgICAgICAgIHJldHVybiBpOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNldEkoaW50IGkpIHsKKyAgICAgICAgdGhpcy5pID0gaTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZW5jYXBzdWxhdGVGaWVsZHMvbW92ZUphdmFkb2NUb0dldHRlci9iZWZvcmUvVGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2VuY2Fwc3VsYXRlRmllbGRzL21vdmVKYXZhZG9jVG9HZXR0ZXIvYmVmb3JlL1Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YTYzNDUxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2VuY2Fwc3VsYXRlRmllbGRzL21vdmVKYXZhZG9jVG9HZXR0ZXIvYmVmb3JlL1Rlc3QuamF2YQpAQCAtMCwwICsxLDEzIEBACitwdWJsaWMgY2xhc3MgQSB7CisgIC8qKgorICAgKiBteSBqYXZhZG9jIGZvciBmaWVsZAorICAgKi8KKyAgcHVibGljIGludCBpOworCisKKyAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgeworICAgIEEgYSA9IG5ldyBCKCk7CisgICAgYS5pID0gMjM7CisgICAgU3lzdGVtLm91dC5wcmludGxuKGEuaSk7CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0Q2xhc3MvY29uc3RydWN0b3JQYXJhbXMvYWZ0ZXIvRXh0cmFjdGVkLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdENsYXNzL2NvbnN0cnVjdG9yUGFyYW1zL2FmdGVyL0V4dHJhY3RlZC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNkOTExNzUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdENsYXNzL2NvbnN0cnVjdG9yUGFyYW1zL2FmdGVyL0V4dHJhY3RlZC5qYXZhCkBAIC0wLDAgKzEsMTMgQEAKK3B1YmxpYyBjbGFzcyBFeHRyYWN0ZWQgeworICAgIHByaXZhdGUgZmluYWwgVGVzdCB0ZXN0OworICAgIFN0cmluZyBteVQ7CisKKyAgICBwdWJsaWMgRXh0cmFjdGVkKFRlc3QgdGVzdCkgeworICAgICAgICB0aGlzLnRlc3QgPSB0ZXN0OworICAgICAgICB0aGlzLm15VCA9IHRlc3QuZm9vKCk7CisgICAgfQorCisgICAgdm9pZCBiYXIoKSB7CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihteVQpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdENsYXNzL2NvbnN0cnVjdG9yUGFyYW1zL2FmdGVyL1Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0Q2xhc3MvY29uc3RydWN0b3JQYXJhbXMvYWZ0ZXIvVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ5NWY4OTUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdENsYXNzL2NvbnN0cnVjdG9yUGFyYW1zL2FmdGVyL1Rlc3QuamF2YQpAQCAtMCwwICsxLDE1IEBACitjbGFzcyBUZXN0IHsKKyAgICBmaW5hbCBFeHRyYWN0ZWQgZXh0cmFjdGVkID0gbmV3IEV4dHJhY3RlZCh0aGlzKTsKKworICAgIHZvaWQgYmFyKCl7CisgICAgICAgIGV4dHJhY3RlZC5iYXIoKTsKKyAgICB9CisKKyAgU3RyaW5nIGZvbygpIHsKKyAgICByZXR1cm4gIiI7CisgIH0KKworICB2b2lkIGJhenooKSB7CisgICAgICBleHRyYWN0ZWQuYmFyKCk7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdENsYXNzL2NvbnN0cnVjdG9yUGFyYW1zL2JlZm9yZS9UZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdENsYXNzL2NvbnN0cnVjdG9yUGFyYW1zL2JlZm9yZS9UZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzMxMTI4MAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0Q2xhc3MvY29uc3RydWN0b3JQYXJhbXMvYmVmb3JlL1Rlc3QuamF2YQpAQCAtMCwwICsxLDE1IEBACitjbGFzcyBUZXN0IHsKKyAgU3RyaW5nIG15VCA9IGZvbygpOworCisgIHZvaWQgYmFyKCl7CisgICAgU3lzdGVtLm91dC5wcmludGxuKG15VCk7CisgIH0KKworICBTdHJpbmcgZm9vKCkgeworICAgIHJldHVybiAiIjsKKyAgfQorCisgIHZvaWQgYmF6eigpIHsKKyAgICBiYXIoKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0Q2xhc3MvZGVwZW5kYW50RmllbGRJbml0aWFsaXplcnMvYWZ0ZXIvRXh0cmFjdGVkLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdENsYXNzL2RlcGVuZGFudEZpZWxkSW5pdGlhbGl6ZXJzL2FmdGVyL0V4dHJhY3RlZC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcwODg5YTYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdENsYXNzL2RlcGVuZGFudEZpZWxkSW5pdGlhbGl6ZXJzL2FmdGVyL0V4dHJhY3RlZC5qYXZhCkBAIC0wLDAgKzEsNyBAQAorcHVibGljIGNsYXNzIEV4dHJhY3RlZCB7CisgICAgc3RhdGljIGZpbmFsIGludFtdIG15VDsKKworICAgIHB1YmxpYyBFeHRyYWN0ZWQoKSB7CisgICAgICAgIHRoaXMubXlUID0gbmV3IGludFtde1Rlc3QuaWl9OworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdENsYXNzL2RlcGVuZGFudEZpZWxkSW5pdGlhbGl6ZXJzL2FmdGVyL1Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0Q2xhc3MvZGVwZW5kYW50RmllbGRJbml0aWFsaXplcnMvYWZ0ZXIvVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA4YWIxYzAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdENsYXNzL2RlcGVuZGFudEZpZWxkSW5pdGlhbGl6ZXJzL2FmdGVyL1Rlc3QuamF2YQpAQCAtMCwwICsxLDMgQEAKK2NsYXNzIFRlc3QgeworICBzdGF0aWMgZmluYWwgaW50IGlpID0gMTsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdENsYXNzL2RlcGVuZGFudEZpZWxkSW5pdGlhbGl6ZXJzL2JlZm9yZS9UZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdENsYXNzL2RlcGVuZGFudEZpZWxkSW5pdGlhbGl6ZXJzL2JlZm9yZS9UZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWMxMTU1MQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0Q2xhc3MvZGVwZW5kYW50RmllbGRJbml0aWFsaXplcnMvYmVmb3JlL1Rlc3QuamF2YQpAQCAtMCwwICsxLDQgQEAKK2NsYXNzIFRlc3QgeworICBzdGF0aWMgZmluYWwgaW50IGlpID0gMTsKKyAgc3RhdGljIGZpbmFsIGludFtdIG15VCA9IHtpaX07Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RDbGFzcy9kZXBlbmRhbnROb25TdGF0aWNGaWVsZEluaXRpYWxpemVycy9hZnRlci9FeHRyYWN0ZWQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0Q2xhc3MvZGVwZW5kYW50Tm9uU3RhdGljRmllbGRJbml0aWFsaXplcnMvYWZ0ZXIvRXh0cmFjdGVkLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWFkYmU4ZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0Q2xhc3MvZGVwZW5kYW50Tm9uU3RhdGljRmllbGRJbml0aWFsaXplcnMvYWZ0ZXIvRXh0cmFjdGVkLmphdmEKQEAgLTAsMCArMSw5IEBACitwdWJsaWMgY2xhc3MgRXh0cmFjdGVkIHsKKyAgICBwcml2YXRlIGZpbmFsIFRlc3QgdGVzdDsKKyAgICBpbnRbXSBteVQ7CisKKyAgICBwdWJsaWMgRXh0cmFjdGVkKFRlc3QgdGVzdCkgeworICAgICAgICB0aGlzLnRlc3QgPSB0ZXN0OworICAgICAgICB0aGlzLm15VCA9IG5ldyBpbnRbXXt0ZXN0LmdldElpKCl9OworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdENsYXNzL2RlcGVuZGFudE5vblN0YXRpY0ZpZWxkSW5pdGlhbGl6ZXJzL2FmdGVyL1Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0Q2xhc3MvZGVwZW5kYW50Tm9uU3RhdGljRmllbGRJbml0aWFsaXplcnMvYWZ0ZXIvVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc0M2ZmY2UKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdENsYXNzL2RlcGVuZGFudE5vblN0YXRpY0ZpZWxkSW5pdGlhbGl6ZXJzL2FmdGVyL1Rlc3QuamF2YQpAQCAtMCwwICsxLDcgQEAKK2NsYXNzIFRlc3QgeworICBpbnQgaWkgPSAxOworCisgICAgcHVibGljIGludCBnZXRJaSgpIHsKKyAgICAgICAgcmV0dXJuIGlpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdENsYXNzL2RlcGVuZGFudE5vblN0YXRpY0ZpZWxkSW5pdGlhbGl6ZXJzL2JlZm9yZS9UZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdENsYXNzL2RlcGVuZGFudE5vblN0YXRpY0ZpZWxkSW5pdGlhbGl6ZXJzL2JlZm9yZS9UZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjI0YTRhMAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0Q2xhc3MvZGVwZW5kYW50Tm9uU3RhdGljRmllbGRJbml0aWFsaXplcnMvYmVmb3JlL1Rlc3QuamF2YQpAQCAtMCwwICsxLDQgQEAKK2NsYXNzIFRlc3QgeworICBpbnQgaWkgPSAxOworICBpbnRbXSBteVQgPSB7aWl9OworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0Q2xhc3MvZW51bVN3aXRjaC9hZnRlci9FeHRyYWN0ZWQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0Q2xhc3MvZW51bVN3aXRjaC9hZnRlci9FeHRyYWN0ZWQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ODZlMWI2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RDbGFzcy9lbnVtU3dpdGNoL2FmdGVyL0V4dHJhY3RlZC5qYXZhCkBAIC0wLDAgKzEsMTEgQEAKK3B1YmxpYyBjbGFzcyBFeHRyYWN0ZWQgeworICAgIHN0YXRpYyB2b2lkIGZvbyhUZXN0IHQpIHsKKyAgICAgICAgc3dpdGNoIChwKSB7CisgICAgICAgICAgICBjYXNlIEZSRUQ6CisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgIGNhc2UgR0VPUkdFOgorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0Q2xhc3MvZW51bVN3aXRjaC9hZnRlci9UZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdENsYXNzL2VudW1Td2l0Y2gvYWZ0ZXIvVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZmOGI5ZDkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdENsYXNzL2VudW1Td2l0Y2gvYWZ0ZXIvVGVzdC5qYXZhCkBAIC0wLDAgKzEsNyBAQAorcHVibGljIGNsYXNzIFRlc3QgeworCit9CisKK2VudW0gUGVyc29uIHsKKyAgRlJFRCwgR0VPUkdFOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0Q2xhc3MvZW51bVN3aXRjaC9iZWZvcmUvVGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RDbGFzcy9lbnVtU3dpdGNoL2JlZm9yZS9UZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODliNmNhYQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0Q2xhc3MvZW51bVN3aXRjaC9iZWZvcmUvVGVzdC5qYXZhCkBAIC0wLDAgKzEsMTYgQEAKK3B1YmxpYyBjbGFzcyBUZXN0IHsKKworICBzdGF0aWMgdm9pZCBmb28oVGVzdCB0KSB7CisgICAgc3dpdGNoIChwKSB7CisgICAgICBjYXNlIEZSRUQ6CisgICAgICAgIGJyZWFrOworCisgICAgICBjYXNlIEdFT1JHRToKKyAgICAgICAgYnJlYWs7CisgICAgfQorICB9Cit9CisKK2VudW0gUGVyc29uIHsKKyAgRlJFRCwgR0VPUkdFOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0Q2xhc3MvZmllbGRJbml0aWFsaXplcnMvYWZ0ZXIvRXh0cmFjdGVkLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdENsYXNzL2ZpZWxkSW5pdGlhbGl6ZXJzL2FmdGVyL0V4dHJhY3RlZC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJkNjc5NGQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdENsYXNzL2ZpZWxkSW5pdGlhbGl6ZXJzL2FmdGVyL0V4dHJhY3RlZC5qYXZhCkBAIC0wLDAgKzEsMyBAQAorcHVibGljIGNsYXNzIEV4dHJhY3RlZCB7CisgICAgc3RhdGljIGZpbmFsIGludFtdIG15VCA9IHsxLCAyfTsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdENsYXNzL2ZpZWxkSW5pdGlhbGl6ZXJzL2FmdGVyL1Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0Q2xhc3MvZmllbGRJbml0aWFsaXplcnMvYWZ0ZXIvVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk2ZDgzZTBjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RDbGFzcy9maWVsZEluaXRpYWxpemVycy9hZnRlci9UZXN0LmphdmEKQEAgLTAsMCArMSwyIEBACitjbGFzcyBUZXN0IHsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdENsYXNzL2ZpZWxkSW5pdGlhbGl6ZXJzL2JlZm9yZS9UZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdENsYXNzL2ZpZWxkSW5pdGlhbGl6ZXJzL2JlZm9yZS9UZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWU0OWE0ZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0Q2xhc3MvZmllbGRJbml0aWFsaXplcnMvYmVmb3JlL1Rlc3QuamF2YQpAQCAtMCwwICsxLDMgQEAKK2NsYXNzIFRlc3QgeworICBzdGF0aWMgZmluYWwgaW50W10gIG15VCA9IHsxLDJ9OworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0Q2xhc3MvZmllbGRSZWZlcmVuY2UvYWZ0ZXIvVGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RDbGFzcy9maWVsZFJlZmVyZW5jZS9hZnRlci9UZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmE1NDg1ZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0Q2xhc3MvZmllbGRSZWZlcmVuY2UvYWZ0ZXIvVGVzdC5qYXZhCkBAIC0wLDAgKzEsMTQgQEAKK2NsYXNzIFRlc3QgeworICBpbnQgbXlGaWVsZDsKKyAgVGVzdCgpeworICAgIG15RmllbGQgPSA3OworICB9CisKKyAgdm9pZCBmb28oKSB7CisgICAgaWYgKG15RmllbGQgPT0gNyl7fQorICB9CisKKyAgdm9pZCBiYXIoKSB7CisgICAgZm9vKCk7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdENsYXNzL2ZpZWxkUmVmZXJlbmNlL2JlZm9yZS9UZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdENsYXNzL2ZpZWxkUmVmZXJlbmNlL2JlZm9yZS9UZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmE1NDg1ZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0Q2xhc3MvZmllbGRSZWZlcmVuY2UvYmVmb3JlL1Rlc3QuamF2YQpAQCAtMCwwICsxLDE0IEBACitjbGFzcyBUZXN0IHsKKyAgaW50IG15RmllbGQ7CisgIFRlc3QoKXsKKyAgICBteUZpZWxkID0gNzsKKyAgfQorCisgIHZvaWQgZm9vKCkgeworICAgIGlmIChteUZpZWxkID09IDcpe30KKyAgfQorCisgIHZvaWQgYmFyKCkgeworICAgIGZvbygpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RDbGFzcy9nZW5lcmF0ZUdldHRlcnMvYWZ0ZXIvRXh0cmFjdGVkLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdENsYXNzL2dlbmVyYXRlR2V0dGVycy9hZnRlci9FeHRyYWN0ZWQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MmQwYzFmMwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0Q2xhc3MvZ2VuZXJhdGVHZXR0ZXJzL2FmdGVyL0V4dHJhY3RlZC5qYXZhCkBAIC0wLDAgKzEsMTQgQEAKK3B1YmxpYyBjbGFzcyBFeHRyYWN0ZWQgeworICAgIGludCBteVQ7CisKKyAgICBwdWJsaWMgaW50IGdldE15VCgpIHsKKyAgICAgICAgcmV0dXJuIG15VDsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXRNeVQoaW50IG15VCkgeworICAgICAgICB0aGlzLm15VCA9IG15VDsKKyAgICB9CisKKyAgICBwdWJsaWMgRXh0cmFjdGVkKCkgeworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdENsYXNzL2dlbmVyYXRlR2V0dGVycy9hZnRlci9UZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdENsYXNzL2dlbmVyYXRlR2V0dGVycy9hZnRlci9UZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWZkMjk3OQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0Q2xhc3MvZ2VuZXJhdGVHZXR0ZXJzL2FmdGVyL1Rlc3QuamF2YQpAQCAtMCwwICsxLDExIEBACitjbGFzcyBUZXN0IHsKKyAgICBmaW5hbCBFeHRyYWN0ZWQgZXh0cmFjdGVkID0gbmV3IEV4dHJhY3RlZCgpOworCisgICAgeworICAgICAgICBleHRyYWN0ZWQuc2V0TXlUKDApOworICB9CisgIAorICB2b2lkIGJhcigpeworICAgIGludCBpID0gZXh0cmFjdGVkLmdldE15VCgpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RDbGFzcy9nZW5lcmF0ZUdldHRlcnMvYmVmb3JlL1Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0Q2xhc3MvZ2VuZXJhdGVHZXR0ZXJzL2JlZm9yZS9UZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTgyOGRjMQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0Q2xhc3MvZ2VuZXJhdGVHZXR0ZXJzL2JlZm9yZS9UZXN0LmphdmEKQEAgLTAsMCArMSwxMCBAQAorY2xhc3MgVGVzdCB7CisgIGludCBteVQ7CisgIHsKKyAgICBteVQgPSAwOworICB9CisgIAorICB2b2lkIGJhcigpeworICAgIGludCBpID0gbXlUOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RDbGFzcy9nZXR0ZXJzL2FmdGVyL0V4dHJhY3RlZC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RDbGFzcy9nZXR0ZXJzL2FmdGVyL0V4dHJhY3RlZC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE2YjdkNDgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdENsYXNzL2dldHRlcnMvYWZ0ZXIvRXh0cmFjdGVkLmphdmEKQEAgLTAsMCArMSwxMCBAQAorcHVibGljIGNsYXNzIEV4dHJhY3RlZCB7CisgICAgaW50IG15VDsKKworICAgIHB1YmxpYyBFeHRyYWN0ZWQoKSB7CisgICAgfQorCisgICAgcHVibGljIGludCBnZXRNeVQoKSB7CisgICAgICAgIHJldHVybiBteVQ7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0Q2xhc3MvZ2V0dGVycy9hZnRlci9UZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdENsYXNzL2dldHRlcnMvYWZ0ZXIvVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRlNzQ3ZmEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdENsYXNzL2dldHRlcnMvYWZ0ZXIvVGVzdC5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKK2NsYXNzIFRlc3QgeworICAgIGZpbmFsIEV4dHJhY3RlZCBleHRyYWN0ZWQgPSBuZXcgRXh0cmFjdGVkKCk7CisKKyAgICBwdWJsaWMgaW50IGdldE15VCgpIHsKKyAgICAgICAgcmV0dXJuIGV4dHJhY3RlZC5nZXRNeVQoKTsKKyAgICB9CisgIHZvaWQgYmFyKCl7CisgICAgaW50IGkgPSBleHRyYWN0ZWQuZ2V0TXlUKCk7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdENsYXNzL2dldHRlcnMvYmVmb3JlL1Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0Q2xhc3MvZ2V0dGVycy9iZWZvcmUvVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdhZTg1YzgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdENsYXNzL2dldHRlcnMvYmVmb3JlL1Rlc3QuamF2YQpAQCAtMCwwICsxLDkgQEAKK2NsYXNzIFRlc3QgeworICBpbnQgbXlUOworICBwdWJsaWMgaW50IGdldE15VCgpIHsKKyAgICByZXR1cm4gbXlUOworICB9CisgIHZvaWQgYmFyKCl7CisgICAgaW50IGkgPSBteVQ7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdENsYXNzL2hpZXJhcmNoeS9hZnRlci9BLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdENsYXNzL2hpZXJhcmNoeS9hZnRlci9BLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjZlY2JmNAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0Q2xhc3MvaGllcmFyY2h5L2FmdGVyL0EuamF2YQpAQCAtMCwwICsxLDMgQEAKK2NsYXNzIEE8VD57CisgIHZvaWQgZm9vKFQgdCl7fQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0Q2xhc3MvaGllcmFyY2h5L2FmdGVyL0V4dHJhY3RlZC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RDbGFzcy9oaWVyYXJjaHkvYWZ0ZXIvRXh0cmFjdGVkLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTc4NTdiMQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0Q2xhc3MvaGllcmFyY2h5L2FmdGVyL0V4dHJhY3RlZC5qYXZhCkBAIC0wLDAgKzEsMTIgQEAKK3B1YmxpYyBjbGFzcyBFeHRyYWN0ZWQ8Uj4geworICAgIHByaXZhdGUgZmluYWwgVGVzdDxSPiB0ZXN0OworICAgIHB1YmxpYyBSIG15VDsKKworICAgIHB1YmxpYyBFeHRyYWN0ZWQoVGVzdDxSPiB0ZXN0KSB7CisgICAgICAgIHRoaXMudGVzdCA9IHRlc3Q7CisgICAgfQorCisgICAgdm9pZCBiYXIoKSB7CisgICAgICAgIHRlc3QuZm9vKG15VCk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0Q2xhc3MvaGllcmFyY2h5L2FmdGVyL1Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0Q2xhc3MvaGllcmFyY2h5L2FmdGVyL1Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YzdiZjY4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RDbGFzcy9oaWVyYXJjaHkvYWZ0ZXIvVGVzdC5qYXZhCkBAIC0wLDAgKzEsNSBAQAorY2xhc3MgVGVzdDxSPiAgZXh0ZW5kcyBBIDxSPnsKKworICAgIHZvaWQgZm9vKFIgdCl7fQorCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RDbGFzcy9oaWVyYXJjaHkvYmVmb3JlL0EuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0Q2xhc3MvaGllcmFyY2h5L2JlZm9yZS9BLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjZlY2JmNAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0Q2xhc3MvaGllcmFyY2h5L2JlZm9yZS9BLmphdmEKQEAgLTAsMCArMSwzIEBACitjbGFzcyBBPFQ+eworICB2b2lkIGZvbyhUIHQpe30KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdENsYXNzL2hpZXJhcmNoeS9iZWZvcmUvVGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RDbGFzcy9oaWVyYXJjaHkvYmVmb3JlL1Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMzRmZDIwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RDbGFzcy9oaWVyYXJjaHkvYmVmb3JlL1Rlc3QuamF2YQpAQCAtMCwwICsxLDkgQEAKK2NsYXNzIFRlc3Q8Uj4gIGV4dGVuZHMgQSA8Uj57CisgIHB1YmxpYyBSIG15VDsKKworICB2b2lkIGZvbyhSIHQpe30KKworICB2b2lkIGJhcigpeworICAgIGZvbyhteVQpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RDbGFzcy9pbmNyZW1lbnREZWNyZW1lbnQvYWZ0ZXIvRXh0cmFjdGVkLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdENsYXNzL2luY3JlbWVudERlY3JlbWVudC9hZnRlci9FeHRyYWN0ZWQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MmQwYzFmMwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0Q2xhc3MvaW5jcmVtZW50RGVjcmVtZW50L2FmdGVyL0V4dHJhY3RlZC5qYXZhCkBAIC0wLDAgKzEsMTQgQEAKK3B1YmxpYyBjbGFzcyBFeHRyYWN0ZWQgeworICAgIGludCBteVQ7CisKKyAgICBwdWJsaWMgaW50IGdldE15VCgpIHsKKyAgICAgICAgcmV0dXJuIG15VDsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXRNeVQoaW50IG15VCkgeworICAgICAgICB0aGlzLm15VCA9IG15VDsKKyAgICB9CisKKyAgICBwdWJsaWMgRXh0cmFjdGVkKCkgeworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdENsYXNzL2luY3JlbWVudERlY3JlbWVudC9hZnRlci9UZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdENsYXNzL2luY3JlbWVudERlY3JlbWVudC9hZnRlci9UZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTVhNGU4YQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0Q2xhc3MvaW5jcmVtZW50RGVjcmVtZW50L2FmdGVyL1Rlc3QuamF2YQpAQCAtMCwwICsxLDExIEBACitjbGFzcyBUZXN0IHsKKyAgICBmaW5hbCBFeHRyYWN0ZWQgZXh0cmFjdGVkID0gbmV3IEV4dHJhY3RlZCgpOworCisgICAgeworICAgICAgICBleHRyYWN0ZWQuc2V0TXlUKDApOworICB9CisgIAorICB2b2lkIGJhcigpeworICAgIGludCBpID0gZXh0cmFjdGVkLnNldE15VChleHRyYWN0ZWQuZ2V0TXlUKCkgKyAxKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0Q2xhc3MvaW5jcmVtZW50RGVjcmVtZW50L2JlZm9yZS9UZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdENsYXNzL2luY3JlbWVudERlY3JlbWVudC9iZWZvcmUvVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJjZGM1YjgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdENsYXNzL2luY3JlbWVudERlY3JlbWVudC9iZWZvcmUvVGVzdC5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKK2NsYXNzIFRlc3QgeworICBpbnQgbXlUOworICB7CisgICAgbXlUID0gMDsKKyAgfQorICAKKyAgdm9pZCBiYXIoKXsKKyAgICBpbnQgaSA9IG15VCsrOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RDbGFzcy9pbmhlcml0YW5jZURlbGVnYXRpb24vYWZ0ZXIvRXh0cmFjdGVkLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdENsYXNzL2luaGVyaXRhbmNlRGVsZWdhdGlvbi9hZnRlci9FeHRyYWN0ZWQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYTA5YmQxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RDbGFzcy9pbmhlcml0YW5jZURlbGVnYXRpb24vYWZ0ZXIvRXh0cmFjdGVkLmphdmEKQEAgLTAsMCArMSw4IEBACitwdWJsaWMgY2xhc3MgRXh0cmFjdGVkIGltcGxlbWVudHMgSSB7CisgICAgcHVibGljIEV4dHJhY3RlZCgpIHsKKyAgICB9CisKKyAgICB2b2lkIGZvbygpIHsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCIiKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RDbGFzcy9pbmhlcml0YW5jZURlbGVnYXRpb24vYWZ0ZXIvSS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RDbGFzcy9pbmhlcml0YW5jZURlbGVnYXRpb24vYWZ0ZXIvSS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU4ZDNmZTUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdENsYXNzL2luaGVyaXRhbmNlRGVsZWdhdGlvbi9hZnRlci9JLmphdmEKQEAgLTAsMCArMSwzIEBACitpbnRlcmZhY2UgSSB7CisgIHZvaWQgZm9vKCk7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RDbGFzcy9pbmhlcml0YW5jZURlbGVnYXRpb24vYWZ0ZXIvVGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RDbGFzcy9pbmhlcml0YW5jZURlbGVnYXRpb24vYWZ0ZXIvVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYxNGVmMjEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdENsYXNzL2luaGVyaXRhbmNlRGVsZWdhdGlvbi9hZnRlci9UZXN0LmphdmEKQEAgLTAsMCArMSw3IEBACitjbGFzcyBUZXN0IGltcGxlbWVudHMgSSB7CisgICAgcHJpdmF0ZSBmaW5hbCBFeHRyYWN0ZWQgZXh0cmFjdGVkID0gbmV3IEV4dHJhY3RlZCgpOworCisgICAgdm9pZCBmb28oKSB7CisgICAgICAgIGV4dHJhY3RlZC5mb28oKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RDbGFzcy9pbmhlcml0YW5jZURlbGVnYXRpb24vYmVmb3JlL0kuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0Q2xhc3MvaW5oZXJpdGFuY2VEZWxlZ2F0aW9uL2JlZm9yZS9JLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZThkM2ZlNQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0Q2xhc3MvaW5oZXJpdGFuY2VEZWxlZ2F0aW9uL2JlZm9yZS9JLmphdmEKQEAgLTAsMCArMSwzIEBACitpbnRlcmZhY2UgSSB7CisgIHZvaWQgZm9vKCk7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RDbGFzcy9pbmhlcml0YW5jZURlbGVnYXRpb24vYmVmb3JlL1Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0Q2xhc3MvaW5oZXJpdGFuY2VEZWxlZ2F0aW9uL2JlZm9yZS9UZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDA3NmYxMQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0Q2xhc3MvaW5oZXJpdGFuY2VEZWxlZ2F0aW9uL2JlZm9yZS9UZXN0LmphdmEKQEAgLTAsMCArMSw1IEBACitjbGFzcyBUZXN0IGltcGxlbWVudHMgSSB7CisgIHZvaWQgZm9vKCkgeworICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIiIpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RDbGFzcy9pbm5lci9hZnRlci9FeHRyYWN0ZWQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0Q2xhc3MvaW5uZXIvYWZ0ZXIvRXh0cmFjdGVkLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjNkYmFiZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0Q2xhc3MvaW5uZXIvYWZ0ZXIvRXh0cmFjdGVkLmphdmEKQEAgLTAsMCArMSw2IEBACitwdWJsaWMgY2xhc3MgRXh0cmFjdGVkIHsKKyAgICBzdGF0aWMgY2xhc3MgSW5uZXIgeworICAgICAgICB2b2lkIGZvbygpIHsKKyAgICAgICAgfQorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdENsYXNzL2lubmVyL2FmdGVyL1Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0Q2xhc3MvaW5uZXIvYWZ0ZXIvVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhmNTM3YWUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdENsYXNzL2lubmVyL2FmdGVyL1Rlc3QuamF2YQpAQCAtMCwwICsxLDYgQEAKK2NsYXNzIFRlc3QgeworICB2b2lkIGJhcigpIHsKKyAgICAgbmV3IEV4dHJhY3RlZC5Jbm5lcigpLmZvbygpOworICB9CisKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdENsYXNzL2lubmVyL2JlZm9yZS9UZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdENsYXNzL2lubmVyL2JlZm9yZS9UZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDRkMGI1YgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0Q2xhc3MvaW5uZXIvYmVmb3JlL1Rlc3QuamF2YQpAQCAtMCwwICsxLDkgQEAKK2NsYXNzIFRlc3QgeworICB2b2lkIGJhcigpIHsKKyAgICAgbmV3IElubmVyKCkuZm9vKCk7CisgIH0KKworICBzdGF0aWMgY2xhc3MgSW5uZXIgeworICAgIHZvaWQgZm9vKCl7fQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RDbGFzcy9pbm5lckNsYXNzUmVmcy9hZnRlci9FeHRyYWN0ZWQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0Q2xhc3MvaW5uZXJDbGFzc1JlZnMvYWZ0ZXIvRXh0cmFjdGVkLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2E1YTIwMgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0Q2xhc3MvaW5uZXJDbGFzc1JlZnMvYWZ0ZXIvRXh0cmFjdGVkLmphdmEKQEAgLTAsMCArMSw2IEBACitwdWJsaWMgY2xhc3MgRXh0cmFjdGVkIHsKKyAgICBzdGF0aWMgY2xhc3MgSW5uZXIgeworICAgICAgICBwdWJsaWMgc3RhdGljIHZvaWQgZ2V0KCkgeworICAgICAgICB9CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0Q2xhc3MvaW5uZXJDbGFzc1JlZnMvYWZ0ZXIvVGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RDbGFzcy9pbm5lckNsYXNzUmVmcy9hZnRlci9UZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmQ1MGFhMQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0Q2xhc3MvaW5uZXJDbGFzc1JlZnMvYWZ0ZXIvVGVzdC5qYXZhCkBAIC0wLDAgKzEsOCBAQAorY2xhc3MgVGVzdCB7CisKKyAgICBFeHRyYWN0ZWQuSW5uZXIgcDsKKworICAgIHsKKyAgICAgICAgRXh0cmFjdGVkLklubmVyLmdldCgpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0Q2xhc3MvaW5uZXJDbGFzc1JlZnMvYmVmb3JlL1Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0Q2xhc3MvaW5uZXJDbGFzc1JlZnMvYmVmb3JlL1Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNTUwYWE3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RDbGFzcy9pbm5lckNsYXNzUmVmcy9iZWZvcmUvVGVzdC5qYXZhCkBAIC0wLDAgKzEsMTIgQEAKK2NsYXNzIFRlc3QgeworCisgICAgc3RhdGljIGNsYXNzIElubmVyIHsKKyAgICAgICAgICBwdWJsaWMgc3RhdGljIHZvaWQgZ2V0KCkgeworICAgICAgICAgIH0KKyAgICAgIH0KKyAgICBJbm5lciBwOworCisgICAgeworICAgICAgICBJbm5lci5nZXQoKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdENsYXNzL21ldGhvZFR5cGVQYXJhbWV0ZXJzL2FmdGVyL0V4dHJhY3RlZC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RDbGFzcy9tZXRob2RUeXBlUGFyYW1ldGVycy9hZnRlci9FeHRyYWN0ZWQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYjk3OWRjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RDbGFzcy9tZXRob2RUeXBlUGFyYW1ldGVycy9hZnRlci9FeHRyYWN0ZWQuamF2YQpAQCAtMCwwICsxLDggQEAKK3B1YmxpYyBjbGFzcyBFeHRyYWN0ZWQgeworICAgIHB1YmxpYyBFeHRyYWN0ZWQoKSB7CisgICAgfQorCisgICAgcHVibGljIDxUPiB2b2lkIGZvbyhUIHApIHsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKHAuZ2V0Q2xhc3MoKS5nZXROYW1lKCkpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdENsYXNzL21ldGhvZFR5cGVQYXJhbWV0ZXJzL2FmdGVyL1Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0Q2xhc3MvbWV0aG9kVHlwZVBhcmFtZXRlcnMvYWZ0ZXIvVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU0ODI2ZjgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdENsYXNzL21ldGhvZFR5cGVQYXJhbWV0ZXJzL2FmdGVyL1Rlc3QuamF2YQpAQCAtMCwwICsxLDEyIEBACitjbGFzcyBUZXN0IHsKKyAgICBwcml2YXRlIGZpbmFsIEV4dHJhY3RlZCBleHRyYWN0ZWQgPSBuZXcgRXh0cmFjdGVkKCk7CisKKyAgICBwdWJsaWMgPFQ+IHZvaWQgZm9vKFQgcCkgeworICAgICAgICBleHRyYWN0ZWQuZm9vKHApOworICAgIH0KKworICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CisgICAgbmV3IFRlc3QoKS5mb28oMTBmKTsKKyAgfQorCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RDbGFzcy9tZXRob2RUeXBlUGFyYW1ldGVycy9iZWZvcmUvVGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RDbGFzcy9tZXRob2RUeXBlUGFyYW1ldGVycy9iZWZvcmUvVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU3NzcxMGIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdENsYXNzL21ldGhvZFR5cGVQYXJhbWV0ZXJzL2JlZm9yZS9UZXN0LmphdmEKQEAgLTAsMCArMSwxMCBAQAorY2xhc3MgVGVzdCB7CisgIHB1YmxpYyA8VD4gdm9pZCBmb28oVCBwKSB7CisgICAgU3lzdGVtLm91dC5wcmludGxuKHAuZ2V0Q2xhc3MoKS5nZXROYW1lKCkpOworICB9CisKKyAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgeworICAgIG5ldyBUZXN0KCkuZm9vKDEwZik7CisgIH0KKworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0Q2xhc3MvbXVsdGlwbGVHZXR0ZXJzL2FmdGVyL1Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0Q2xhc3MvbXVsdGlwbGVHZXR0ZXJzL2FmdGVyL1Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43YWU4NWM4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RDbGFzcy9tdWx0aXBsZUdldHRlcnMvYWZ0ZXIvVGVzdC5qYXZhCkBAIC0wLDAgKzEsOSBAQAorY2xhc3MgVGVzdCB7CisgIGludCBteVQ7CisgIHB1YmxpYyBpbnQgZ2V0TXlUKCkgeworICAgIHJldHVybiBteVQ7CisgIH0KKyAgdm9pZCBiYXIoKXsKKyAgICBpbnQgaSA9IG15VDsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0Q2xhc3MvbXVsdGlwbGVHZXR0ZXJzL2JlZm9yZS9UZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdENsYXNzL211bHRpcGxlR2V0dGVycy9iZWZvcmUvVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdhZTg1YzgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdENsYXNzL211bHRpcGxlR2V0dGVycy9iZWZvcmUvVGVzdC5qYXZhCkBAIC0wLDAgKzEsOSBAQAorY2xhc3MgVGVzdCB7CisgIGludCBteVQ7CisgIHB1YmxpYyBpbnQgZ2V0TXlUKCkgeworICAgIHJldHVybiBteVQ7CisgIH0KKyAgdm9pZCBiYXIoKXsKKyAgICBpbnQgaSA9IG15VDsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0Q2xhc3MvbXVsdGlwbGVHZXR0ZXJzMS9hZnRlci9UZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdENsYXNzL211bHRpcGxlR2V0dGVyczEvYWZ0ZXIvVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdjYzg2N2QKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdENsYXNzL211bHRpcGxlR2V0dGVyczEvYWZ0ZXIvVGVzdC5qYXZhCkBAIC0wLDAgKzEsNiBAQAorY2xhc3MgVGVzdCB7CisgIGludCBteVQ7CisgIHB1YmxpYyBpbnQgZ2V0TXlUKCkgeworICAgIHJldHVybiBteVQ7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdENsYXNzL211bHRpcGxlR2V0dGVyczEvYmVmb3JlL1Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0Q2xhc3MvbXVsdGlwbGVHZXR0ZXJzMS9iZWZvcmUvVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdjYzg2N2QKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdENsYXNzL211bHRpcGxlR2V0dGVyczEvYmVmb3JlL1Rlc3QuamF2YQpAQCAtMCwwICsxLDYgQEAKK2NsYXNzIFRlc3QgeworICBpbnQgbXlUOworICBwdWJsaWMgaW50IGdldE15VCgpIHsKKyAgICByZXR1cm4gbXlUOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RDbGFzcy9ub0NvbnN0cnVjdG9yUGFyYW1zL2FmdGVyL0V4dHJhY3RlZC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RDbGFzcy9ub0NvbnN0cnVjdG9yUGFyYW1zL2FmdGVyL0V4dHJhY3RlZC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE0OTYwM2QKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdENsYXNzL25vQ29uc3RydWN0b3JQYXJhbXMvYWZ0ZXIvRXh0cmFjdGVkLmphdmEKQEAgLTAsMCArMSwxMCBAQAorcHVibGljIGNsYXNzIEV4dHJhY3RlZCB7CisgICAgU3RyaW5nIG15VCA9ICIiOworCisgICAgcHVibGljIEV4dHJhY3RlZCgpIHsKKyAgICB9CisKKyAgICB2b2lkIGJhcigpIHsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKG15VCk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0Q2xhc3Mvbm9Db25zdHJ1Y3RvclBhcmFtcy9hZnRlci9UZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdENsYXNzL25vQ29uc3RydWN0b3JQYXJhbXMvYWZ0ZXIvVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRlYTkyZWMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdENsYXNzL25vQ29uc3RydWN0b3JQYXJhbXMvYWZ0ZXIvVGVzdC5qYXZhCkBAIC0wLDAgKzEsMTEgQEAKK2NsYXNzIFRlc3QgeworICAgIGZpbmFsIEV4dHJhY3RlZCBleHRyYWN0ZWQgPSBuZXcgRXh0cmFjdGVkKCk7CisKKyAgICB2b2lkIGJhcigpeworICAgICAgICBleHRyYWN0ZWQuYmFyKCk7CisgICAgfQorCisgIHZvaWQgZm9vKCkgeworICAgICAgZXh0cmFjdGVkLmJhcigpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RDbGFzcy9ub0NvbnN0cnVjdG9yUGFyYW1zL2JlZm9yZS9UZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdENsYXNzL25vQ29uc3RydWN0b3JQYXJhbXMvYmVmb3JlL1Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNzI1ZjA3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RDbGFzcy9ub0NvbnN0cnVjdG9yUGFyYW1zL2JlZm9yZS9UZXN0LmphdmEKQEAgLTAsMCArMSwxMSBAQAorY2xhc3MgVGVzdCB7CisgIFN0cmluZyBteVQgPSAiIjsKKworICB2b2lkIGJhcigpeworICAgIFN5c3RlbS5vdXQucHJpbnRsbihteVQpOworICB9CisKKyAgdm9pZCBmb28oKSB7CisgICAgYmFyKCk7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdENsYXNzL25vRGVsZWdhdGlvbi9hZnRlci9FeHRyYWN0ZWQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0Q2xhc3Mvbm9EZWxlZ2F0aW9uL2FmdGVyL0V4dHJhY3RlZC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc0MmM3MjYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdENsYXNzL25vRGVsZWdhdGlvbi9hZnRlci9FeHRyYWN0ZWQuamF2YQpAQCAtMCwwICsxLDcgQEAKK3B1YmxpYyBjbGFzcyBFeHRyYWN0ZWQgeworICAgIHB1YmxpYyBFeHRyYWN0ZWQoKSB7CisgICAgfQorCisgICAgdm9pZCBmb28oKSB7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0Q2xhc3Mvbm9EZWxlZ2F0aW9uL2FmdGVyL1Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0Q2xhc3Mvbm9EZWxlZ2F0aW9uL2FmdGVyL1Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NmQ4M2UwYwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0Q2xhc3Mvbm9EZWxlZ2F0aW9uL2FmdGVyL1Rlc3QuamF2YQpAQCAtMCwwICsxLDIgQEAKK2NsYXNzIFRlc3QgeworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0Q2xhc3Mvbm9EZWxlZ2F0aW9uL2JlZm9yZS9UZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdENsYXNzL25vRGVsZWdhdGlvbi9iZWZvcmUvVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlhNmQzOTQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdENsYXNzL25vRGVsZWdhdGlvbi9iZWZvcmUvVGVzdC5qYXZhCkBAIC0wLDAgKzEsMyBAQAorY2xhc3MgVGVzdCB7CisgIHZvaWQgZm9vKCl7fQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0Q2xhc3Mvbm9GaWVsZERlbGVnYXRpb24vYWZ0ZXIvRXh0cmFjdGVkLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdENsYXNzL25vRmllbGREZWxlZ2F0aW9uL2FmdGVyL0V4dHJhY3RlZC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdhYjEyZTEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdENsYXNzL25vRmllbGREZWxlZ2F0aW9uL2FmdGVyL0V4dHJhY3RlZC5qYXZhCkBAIC0wLDAgKzEsMTIgQEAKK3B1YmxpYyBjbGFzcyBFeHRyYWN0ZWQ8VD4geworICAgIHByaXZhdGUgZmluYWwgVGVzdDxUPiB0ZXN0OworICAgIFQgbXlUOworCisgICAgcHVibGljIEV4dHJhY3RlZChUZXN0PFQ+IHRlc3QpIHsKKyAgICAgICAgdGhpcy50ZXN0ID0gdGVzdDsKKyAgICB9CisKKyAgICB2b2lkIGJhcigpIHsKKyAgICAgICAgdGVzdC5mb28obXlUKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RDbGFzcy9ub0ZpZWxkRGVsZWdhdGlvbi9hZnRlci9UZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdENsYXNzL25vRmllbGREZWxlZ2F0aW9uL2FmdGVyL1Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hOWQzZWUyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RDbGFzcy9ub0ZpZWxkRGVsZWdhdGlvbi9hZnRlci9UZXN0LmphdmEKQEAgLTAsMCArMSwzIEBACitjbGFzcyBUZXN0PFQ+IHsKKyAgICB2b2lkIGZvbyhUIHQpe30KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdENsYXNzL25vRmllbGREZWxlZ2F0aW9uL2JlZm9yZS9UZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdENsYXNzL25vRmllbGREZWxlZ2F0aW9uL2JlZm9yZS9UZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTk4MzQyZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0Q2xhc3Mvbm9GaWVsZERlbGVnYXRpb24vYmVmb3JlL1Rlc3QuamF2YQpAQCAtMCwwICsxLDcgQEAKK2NsYXNzIFRlc3Q8VD4geworICBUIG15VDsKKyAgdm9pZCBmb28oVCB0KXt9CisgIHZvaWQgYmFyKCl7CisgICAgZm9vKG15VCk7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdENsYXNzL3B1YmxpY0ZpZWxkRGVsZWdhdGlvbi9hZnRlci9FeHRyYWN0ZWQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0Q2xhc3MvcHVibGljRmllbGREZWxlZ2F0aW9uL2FmdGVyL0V4dHJhY3RlZC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA2MjM4MWMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdENsYXNzL3B1YmxpY0ZpZWxkRGVsZWdhdGlvbi9hZnRlci9FeHRyYWN0ZWQuamF2YQpAQCAtMCwwICsxLDYgQEAKK3B1YmxpYyBjbGFzcyBFeHRyYWN0ZWQ8VD4geworICAgIHB1YmxpYyBUIG15VDsKKworICAgIHB1YmxpYyBFeHRyYWN0ZWQoKSB7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0Q2xhc3MvcHVibGljRmllbGREZWxlZ2F0aW9uL2FmdGVyL1Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0Q2xhc3MvcHVibGljRmllbGREZWxlZ2F0aW9uL2FmdGVyL1Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MWM1OWZjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RDbGFzcy9wdWJsaWNGaWVsZERlbGVnYXRpb24vYWZ0ZXIvVGVzdC5qYXZhCkBAIC0wLDAgKzEsOCBAQAorY2xhc3MgVGVzdDxUPiB7CisgICAgcHVibGljIGZpbmFsIEV4dHJhY3RlZDxUPiBleHRyYWN0ZWQgPSBuZXcgRXh0cmFjdGVkPFQ+KCk7CisKKyAgICB2b2lkIGZvbyhUIHQpe30KKyAgdm9pZCBiYXIoKXsKKyAgICBmb28oZXh0cmFjdGVkLm15VCk7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdENsYXNzL3B1YmxpY0ZpZWxkRGVsZWdhdGlvbi9iZWZvcmUvVGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RDbGFzcy9wdWJsaWNGaWVsZERlbGVnYXRpb24vYmVmb3JlL1Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNmMzY2EzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RDbGFzcy9wdWJsaWNGaWVsZERlbGVnYXRpb24vYmVmb3JlL1Rlc3QuamF2YQpAQCAtMCwwICsxLDcgQEAKK2NsYXNzIFRlc3Q8VD4geworICBwdWJsaWMgVCBteVQ7CisgIHZvaWQgZm9vKFQgdCl7fQorICB2b2lkIGJhcigpeworICAgIGZvbyhteVQpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RDbGFzcy9wdWJsaWNWaXNpYmlsaXR5L2FmdGVyL0V4dHJhY3RlZC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RDbGFzcy9wdWJsaWNWaXNpYmlsaXR5L2FmdGVyL0V4dHJhY3RlZC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNmNDRjZmUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdENsYXNzL3B1YmxpY1Zpc2liaWxpdHkvYWZ0ZXIvRXh0cmFjdGVkLmphdmEKQEAgLTAsMCArMSw5IEBACitwdWJsaWMgY2xhc3MgRXh0cmFjdGVkPFQ+IHsKKyAgICBwdWJsaWMgVCBteVQ7CisKKyAgICBwdWJsaWMgRXh0cmFjdGVkKCkgeworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIGZvb3MoKSB7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0Q2xhc3MvcHVibGljVmlzaWJpbGl0eS9hZnRlci9UZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdENsYXNzL3B1YmxpY1Zpc2liaWxpdHkvYWZ0ZXIvVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRjMzBkNGMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdENsYXNzL3B1YmxpY1Zpc2liaWxpdHkvYWZ0ZXIvVGVzdC5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKK2NsYXNzIFRlc3Q8VD4geworICAgIGZpbmFsIEV4dHJhY3RlZDxUPiBleHRyYWN0ZWQgPSBuZXcgRXh0cmFjdGVkPFQ+KCk7CisKKyAgICB2b2lkIGJhcigpeworICAgICAgICBleHRyYWN0ZWQuZm9vcygpOworICB9CisgIHZvaWQgZm9vcygpeworICAgICAgZXh0cmFjdGVkLmZvb3MoKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0Q2xhc3MvcHVibGljVmlzaWJpbGl0eS9iZWZvcmUvVGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RDbGFzcy9wdWJsaWNWaXNpYmlsaXR5L2JlZm9yZS9UZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzIwMjBkMwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0Q2xhc3MvcHVibGljVmlzaWJpbGl0eS9iZWZvcmUvVGVzdC5qYXZhCkBAIC0wLDAgKzEsNyBAQAorY2xhc3MgVGVzdDxUPiB7CisgIFQgbXlUOworICB2b2lkIGJhcigpeworICAgIGZvb3MoKTsKKyAgfQorICB2b2lkIGZvb3MoKXt9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RDbGFzcy9yZWZJbkphdmFkb2MvYWZ0ZXIvRXh0cmFjdGVkLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdENsYXNzL3JlZkluSmF2YWRvYy9hZnRlci9FeHRyYWN0ZWQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMjAwMmE0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RDbGFzcy9yZWZJbkphdmFkb2MvYWZ0ZXIvRXh0cmFjdGVkLmphdmEKQEAgLTAsMCArMSw2IEBACitwdWJsaWMgY2xhc3MgRXh0cmFjdGVkPFQ+IHsKKyAgICBUIG15VDsKKworICAgIHB1YmxpYyBFeHRyYWN0ZWQoKSB7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0Q2xhc3MvcmVmSW5KYXZhZG9jL2FmdGVyL1Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0Q2xhc3MvcmVmSW5KYXZhZG9jL2FmdGVyL1Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45YzgyMWRkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RDbGFzcy9yZWZJbkphdmFkb2MvYWZ0ZXIvVGVzdC5qYXZhCkBAIC0wLDAgKzEsOCBAQAorY2xhc3MgVGVzdDxUPiB7CisKKyAgICAvKioKKyAgKiB7QGxpbmsgRXh0cmFjdGVkI215VH0KKyAgKi8KKyAgdm9pZCBiYXIoKXsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0Q2xhc3MvcmVmSW5KYXZhZG9jL2JlZm9yZS9UZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdENsYXNzL3JlZkluSmF2YWRvYy9iZWZvcmUvVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUwNGQyMzIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdENsYXNzL3JlZkluSmF2YWRvYy9iZWZvcmUvVGVzdC5qYXZhCkBAIC0wLDAgKzEsOSBAQAorY2xhc3MgVGVzdDxUPiB7CisgIFQgbXlUOworCisgIC8qKgorICAqIHtAbGluayBUZXN0I215VH0KKyAgKi8KKyAgdm9pZCBiYXIoKXsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0Q2xhc3Mvc3RhdGljL2FmdGVyL0V4dHJhY3RlZC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RDbGFzcy9zdGF0aWMvYWZ0ZXIvRXh0cmFjdGVkLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2JkZDhjZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0Q2xhc3Mvc3RhdGljL2FmdGVyL0V4dHJhY3RlZC5qYXZhCkBAIC0wLDAgKzEsNSBAQAorcHVibGljIGNsYXNzIEV4dHJhY3RlZCB7CisgICAgc3RhdGljIHZvaWQgZm9vKCkgeworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIiIpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdENsYXNzL3N0YXRpYy9hZnRlci9UZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdENsYXNzL3N0YXRpYy9hZnRlci9UZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzlkMTI5MAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0Q2xhc3Mvc3RhdGljL2FmdGVyL1Rlc3QuamF2YQpAQCAtMCwwICsxLDYgQEAKK2NsYXNzIFRlc3QgeworCisgICAgc3RhdGljIHZvaWQgYmFyKCl7CisgICAgICAgIEV4dHJhY3RlZC5mb28oKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0Q2xhc3Mvc3RhdGljL2JlZm9yZS9UZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdENsYXNzL3N0YXRpYy9iZWZvcmUvVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI4NmYxZWQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdENsYXNzL3N0YXRpYy9iZWZvcmUvVGVzdC5qYXZhCkBAIC0wLDAgKzEsOSBAQAorY2xhc3MgVGVzdCB7CisgIHN0YXRpYyB2b2lkIGZvbygpIHsKKyAgICAgU3lzdGVtLm91dC5wcmludGxuKCIiKTsKKyAgfQorCisgIHN0YXRpYyB2b2lkIGJhcigpeworICAgICBmb28oKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0Q2xhc3Mvc3RhdGljSW1wb3J0L2FmdGVyL0V4dHJhY3RlZC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RDbGFzcy9zdGF0aWNJbXBvcnQvYWZ0ZXIvRXh0cmFjdGVkLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDRjMjJhOQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0Q2xhc3Mvc3RhdGljSW1wb3J0L2FmdGVyL0V4dHJhY3RlZC5qYXZhCkBAIC0wLDAgKzEsNyBAQAoraW1wb3J0IGphdmEudXRpbC5Db2xsZWN0aW9uczsKKworcHVibGljIGNsYXNzIEV4dHJhY3RlZCB7CisgICAgc3RhdGljIHZvaWQgZm9vKCkgeworICAgICAgICBDb2xsZWN0aW9ucy5zaW5nbGV0b25MaXN0KCk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0Q2xhc3Mvc3RhdGljSW1wb3J0L2FmdGVyL1Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0Q2xhc3Mvc3RhdGljSW1wb3J0L2FmdGVyL1Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NmQ4M2UwYwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0Q2xhc3Mvc3RhdGljSW1wb3J0L2FmdGVyL1Rlc3QuamF2YQpAQCAtMCwwICsxLDIgQEAKK2NsYXNzIFRlc3QgeworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0Q2xhc3Mvc3RhdGljSW1wb3J0L2JlZm9yZS9UZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdENsYXNzL3N0YXRpY0ltcG9ydC9iZWZvcmUvVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY2NzZkYzcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdENsYXNzL3N0YXRpY0ltcG9ydC9iZWZvcmUvVGVzdC5qYXZhCkBAIC0wLDAgKzEsNiBAQAoraW1wb3J0IHN0YXRpYyBqYXZhLnV0aWwuQ29sbGVjdGlvbnMuc2luZ2xldG9uTGlzdDsKK2NsYXNzIFRlc3QgeworICBzdGF0aWMgdm9pZCBmb28oKXsKKyAgICAgc2luZ2xldG9uTGlzdCgpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RDbGFzcy91c2VkSW5Db25zdHJ1Y3Rvci9hZnRlci9UZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdENsYXNzL3VzZWRJbkNvbnN0cnVjdG9yL2FmdGVyL1Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NjI2NzhmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RDbGFzcy91c2VkSW5Db25zdHJ1Y3Rvci9hZnRlci9UZXN0LmphdmEKQEAgLTAsMCArMSwxMyBAQAorY2xhc3MgVGVzdCB7CisgIGludCBteVQ7CisgIFRlc3QoKXsKKyAgICBteVQgPSAwOworICB9CisgIAorICBwdWJsaWMgaW50IGdldE15VCgpIHsKKyAgICByZXR1cm4gbXlUOworICB9CisgIHZvaWQgYmFyKCl7CisgICAgaW50IGkgPSBteVQ7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdENsYXNzL3VzZWRJbkNvbnN0cnVjdG9yL2JlZm9yZS9UZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdENsYXNzL3VzZWRJbkNvbnN0cnVjdG9yL2JlZm9yZS9UZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTYyNjc4ZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0Q2xhc3MvdXNlZEluQ29uc3RydWN0b3IvYmVmb3JlL1Rlc3QuamF2YQpAQCAtMCwwICsxLDEzIEBACitjbGFzcyBUZXN0IHsKKyAgaW50IG15VDsKKyAgVGVzdCgpeworICAgIG15VCA9IDA7CisgIH0KKyAgCisgIHB1YmxpYyBpbnQgZ2V0TXlUKCkgeworICAgIHJldHVybiBteVQ7CisgIH0KKyAgdm9pZCBiYXIoKXsKKyAgICBpbnQgaSA9IG15VDsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0Q2xhc3MvdXNlZEluSW5pdGlhbGl6ZXIvYWZ0ZXIvVGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RDbGFzcy91c2VkSW5Jbml0aWFsaXplci9hZnRlci9UZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODg4NjU2OAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0Q2xhc3MvdXNlZEluSW5pdGlhbGl6ZXIvYWZ0ZXIvVGVzdC5qYXZhCkBAIC0wLDAgKzEsMTMgQEAKK2NsYXNzIFRlc3QgeworICBpbnQgbXlUOworICB7CisgICAgbXlUID0gMDsKKyAgfQorICAKKyAgcHVibGljIGludCBnZXRNeVQoKSB7CisgICAgcmV0dXJuIG15VDsKKyAgfQorICB2b2lkIGJhcigpeworICAgIGludCBpID0gbXlUOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RDbGFzcy91c2VkSW5Jbml0aWFsaXplci9iZWZvcmUvVGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RDbGFzcy91c2VkSW5Jbml0aWFsaXplci9iZWZvcmUvVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg4ODY1NjgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdENsYXNzL3VzZWRJbkluaXRpYWxpemVyL2JlZm9yZS9UZXN0LmphdmEKQEAgLTAsMCArMSwxMyBAQAorY2xhc3MgVGVzdCB7CisgIGludCBteVQ7CisgIHsKKyAgICBteVQgPSAwOworICB9CisgIAorICBwdWJsaWMgaW50IGdldE15VCgpIHsKKyAgICByZXR1cm4gbXlUOworICB9CisgIHZvaWQgYmFyKCl7CisgICAgaW50IGkgPSBteVQ7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdENsYXNzL3ZhcmFyZ3MvYWZ0ZXIvRXh0cmFjdGVkLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdENsYXNzL3ZhcmFyZ3MvYWZ0ZXIvRXh0cmFjdGVkLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDFhMzllMQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0Q2xhc3MvdmFyYXJncy9hZnRlci9FeHRyYWN0ZWQuamF2YQpAQCAtMCwwICsxLDcgQEAKK3B1YmxpYyBjbGFzcyBFeHRyYWN0ZWQgeworICAgIHB1YmxpYyBFeHRyYWN0ZWQoKSB7CisgICAgfQorCisgICAgdm9pZCBmb28oaW50Li4uIGYpIHsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RDbGFzcy92YXJhcmdzL2FmdGVyL1Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0Q2xhc3MvdmFyYXJncy9hZnRlci9UZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjZkOTBiYwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0Q2xhc3MvdmFyYXJncy9hZnRlci9UZXN0LmphdmEKQEAgLTAsMCArMSwxMyBAQAorY2xhc3MgVGVzdCB7CisgICAgcHJpdmF0ZSBmaW5hbCBFeHRyYWN0ZWQgZXh0cmFjdGVkID0gbmV3IEV4dHJhY3RlZCgpOworCisgICAgVGVzdCgpe30KKworICB2b2lkIGZvbyhpbnQuLi4gZikgeworICAgICAgZXh0cmFjdGVkLmZvbyhmKTsKKyAgfQorCisgIHZvaWQgYmFyKCkgeworICAgICAgZXh0cmFjdGVkLmZvbygxLCAyKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0Q2xhc3MvdmFyYXJncy9iZWZvcmUvVGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RDbGFzcy92YXJhcmdzL2JlZm9yZS9UZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjEwYTM3NQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0Q2xhc3MvdmFyYXJncy9iZWZvcmUvVGVzdC5qYXZhCkBAIC0wLDAgKzEsOSBAQAorY2xhc3MgVGVzdCB7CisgIFRlc3QoKXt9CisKKyAgdm9pZCBmb28oaW50Li4uIGYpIHt9CisKKyAgdm9pZCBiYXIoKSB7CisgICAgZm9vKDEsIDIpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RFbnVtL2NhbnRDaGFuZ2VNZXRob2RQYXJhbWV0ZXIvYWZ0ZXIvVGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RFbnVtL2NhbnRDaGFuZ2VNZXRob2RQYXJhbWV0ZXIvYWZ0ZXIvVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU4NWE0ODgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdEVudW0vY2FudENoYW5nZU1ldGhvZFBhcmFtZXRlci9hZnRlci9UZXN0LmphdmEKQEAgLTAsMCArMSwxOCBAQAorcHVibGljIGNsYXNzIFRlc3QgeworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEZPTyA9IDA7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgQkFSID0gMTsKKworICAgIHZvaWQgZm9vKGludCBpKSB7CisgICAgICAgIHN3aXRjaCAoaSkgeworICAgICAgICAgICAgY2FzZSBGT086CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEJBUjoKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKworICAgIHZvaWQgZm9vYmFyKCkgeworICAgICAgICBpbnQgbWF4ID0gTWF0aC5tYXgoRk9PLCBCQVIpOworICAgICAgICBmb28obWF4KTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RFbnVtL2NhbnRDaGFuZ2VNZXRob2RQYXJhbWV0ZXIvYmVmb3JlL1Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0RW51bS9jYW50Q2hhbmdlTWV0aG9kUGFyYW1ldGVyL2JlZm9yZS9UZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTg1YTQ4OAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0RW51bS9jYW50Q2hhbmdlTWV0aG9kUGFyYW1ldGVyL2JlZm9yZS9UZXN0LmphdmEKQEAgLTAsMCArMSwxOCBAQAorcHVibGljIGNsYXNzIFRlc3QgeworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEZPTyA9IDA7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgQkFSID0gMTsKKworICAgIHZvaWQgZm9vKGludCBpKSB7CisgICAgICAgIHN3aXRjaCAoaSkgeworICAgICAgICAgICAgY2FzZSBGT086CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEJBUjoKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKworICAgIHZvaWQgZm9vYmFyKCkgeworICAgICAgICBpbnQgbWF4ID0gTWF0aC5tYXgoRk9PLCBCQVIpOworICAgICAgICBmb28obWF4KTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RFbnVtL2NhbnRDaGFuZ2VNZXRob2RQYXJhbWV0ZXIxL2FmdGVyL1Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0RW51bS9jYW50Q2hhbmdlTWV0aG9kUGFyYW1ldGVyMS9hZnRlci9UZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDU3YjJkMgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0RW51bS9jYW50Q2hhbmdlTWV0aG9kUGFyYW1ldGVyMS9hZnRlci9UZXN0LmphdmEKQEAgLTAsMCArMSwyMCBAQAorcHVibGljIGNsYXNzIFRlc3QgeworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEZPTyA9IDA7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgQkFSID0gMTsKKworICAgIHZvaWQgZm9vKGludCBpKSB7CisgICAgICAgIHN3aXRjaCAoaSkgeworICAgICAgICAgICAgY2FzZSBGT086CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEJBUjoKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBpbnQgayA9IE1hdGgubWF4KGkgKiBpLCBpICsgaSk7CisgICAgICAgIHN3aXRjaCAoaykgeworICAgICAgICAgICAgY2FzZSBGT086CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEJBUjoKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdEVudW0vY2FudENoYW5nZU1ldGhvZFBhcmFtZXRlcjEvYmVmb3JlL1Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0RW51bS9jYW50Q2hhbmdlTWV0aG9kUGFyYW1ldGVyMS9iZWZvcmUvVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ1N2IyZDIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdEVudW0vY2FudENoYW5nZU1ldGhvZFBhcmFtZXRlcjEvYmVmb3JlL1Rlc3QuamF2YQpAQCAtMCwwICsxLDIwIEBACitwdWJsaWMgY2xhc3MgVGVzdCB7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgRk9PID0gMDsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBCQVIgPSAxOworCisgICAgdm9pZCBmb28oaW50IGkpIHsKKyAgICAgICAgc3dpdGNoIChpKSB7CisgICAgICAgICAgICBjYXNlIEZPTzoKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgQkFSOgorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGludCBrID0gTWF0aC5tYXgoaSAqIGksIGkgKyBpKTsKKyAgICAgICAgc3dpdGNoIChrKSB7CisgICAgICAgICAgICBjYXNlIEZPTzoKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgQkFSOgorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0RW51bS9jYW50Q2hhbmdlUmV0dXJuVHlwZS9hZnRlci9UZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdEVudW0vY2FudENoYW5nZVJldHVyblR5cGUvYWZ0ZXIvVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU3N2Q1MGUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdEVudW0vY2FudENoYW5nZVJldHVyblR5cGUvYWZ0ZXIvVGVzdC5qYXZhCkBAIC0wLDAgKzEsMTMgQEAKK3B1YmxpYyBjbGFzcyBUZXN0IHsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBGT08gPSAwOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEJBUiA9IDI7CisKKyAgICB2b2lkIGZvbyhTdHJpbmdbXSBhcmdzKSB7CisgICAgICAgIHN3aXRjaCAoYXJncy5sZW5ndGgpIHsKKyAgICAgICAgICAgIGNhc2UgRk9POgorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBCQVI6CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdEVudW0vY2FudENoYW5nZVJldHVyblR5cGUvYmVmb3JlL1Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0RW51bS9jYW50Q2hhbmdlUmV0dXJuVHlwZS9iZWZvcmUvVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU3N2Q1MGUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdEVudW0vY2FudENoYW5nZVJldHVyblR5cGUvYmVmb3JlL1Rlc3QuamF2YQpAQCAtMCwwICsxLDEzIEBACitwdWJsaWMgY2xhc3MgVGVzdCB7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgRk9PID0gMDsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBCQVIgPSAyOworCisgICAgdm9pZCBmb28oU3RyaW5nW10gYXJncykgeworICAgICAgICBzd2l0Y2ggKGFyZ3MubGVuZ3RoKSB7CisgICAgICAgICAgICBjYXNlIEZPTzoKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgQkFSOgorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RFbnVtL2NhbnRDaGFuZ2VSZXR1cm5UeXBlMS9hZnRlci9UZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdEVudW0vY2FudENoYW5nZVJldHVyblR5cGUxL2FmdGVyL1Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yOGE3NWQzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RFbnVtL2NhbnRDaGFuZ2VSZXR1cm5UeXBlMS9hZnRlci9UZXN0LmphdmEKQEAgLTAsMCArMSwxNyBAQAorcHVibGljIGNsYXNzIFRlc3QgeworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEZPTyA9IDA7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgQkFSID0gMjsKKworICAgIHZvaWQgZm9vKFN0cmluZ1tdIGFyZ3MpIHsKKyAgICAgICAgc3dpdGNoIChib28oYXJncykpIHsKKyAgICAgICAgICAgIGNhc2UgRk9POgorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBCQVI6CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpbnQgYm9vKFN0cmluZ1tdIGFyZ3MpIHsKKyAgICAgICAgcmV0dXJuIGFyZ3MubGVuZ3RoOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdEVudW0vY2FudENoYW5nZVJldHVyblR5cGUxL2JlZm9yZS9UZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdEVudW0vY2FudENoYW5nZVJldHVyblR5cGUxL2JlZm9yZS9UZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjhhNzVkMwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0RW51bS9jYW50Q2hhbmdlUmV0dXJuVHlwZTEvYmVmb3JlL1Rlc3QuamF2YQpAQCAtMCwwICsxLDE3IEBACitwdWJsaWMgY2xhc3MgVGVzdCB7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgRk9PID0gMDsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBCQVIgPSAyOworCisgICAgdm9pZCBmb28oU3RyaW5nW10gYXJncykgeworICAgICAgICBzd2l0Y2ggKGJvbyhhcmdzKSkgeworICAgICAgICAgICAgY2FzZSBGT086CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEJBUjoKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKworICAgIGludCBib28oU3RyaW5nW10gYXJncykgeworICAgICAgICByZXR1cm4gYXJncy5sZW5ndGg7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0RW51bS9jaGFuZ2VNZXRob2RQYXJhbWV0ZXIvYWZ0ZXIvRUVudW0uamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0RW51bS9jaGFuZ2VNZXRob2RQYXJhbWV0ZXIvYWZ0ZXIvRUVudW0uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYzg4YTNiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RFbnVtL2NoYW5nZU1ldGhvZFBhcmFtZXRlci9hZnRlci9FRW51bS5qYXZhCkBAIC0wLDAgKzEsMTIgQEAKK3B1YmxpYyBlbnVtIEVFbnVtIHsKKyAgICBGT08oMCksIEJBUigxKTsKKyAgICBwcml2YXRlIGludCB2YWx1ZTsKKworICAgIHB1YmxpYyBpbnQgZ2V0VmFsdWUoKSB7CisgICAgICAgIHJldHVybiB2YWx1ZTsKKyAgICB9CisKKyAgICBFRW51bShpbnQgdmFsdWUpIHsKKyAgICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdEVudW0vY2hhbmdlTWV0aG9kUGFyYW1ldGVyL2FmdGVyL1Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0RW51bS9jaGFuZ2VNZXRob2RQYXJhbWV0ZXIvYWZ0ZXIvVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJjMDgxOGYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdEVudW0vY2hhbmdlTWV0aG9kUGFyYW1ldGVyL2FmdGVyL1Rlc3QuamF2YQpAQCAtMCwwICsxLDE2IEBACitwdWJsaWMgY2xhc3MgVGVzdCB7CisKKyAgICB2b2lkIGZvbyhFRW51bSBpKSB7CisgICAgICAgIHN3aXRjaCAoaSkgeworICAgICAgICAgICAgY2FzZSBGT086CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEJBUjoKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKworICAgIHZvaWQgZm9vYmFyKCkgeworICAgICAgICBmb28oRUVudW0uRk9PKTsKKyAgICAgICAgZm9vKEVFbnVtLkJBUik7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0RW51bS9jaGFuZ2VNZXRob2RQYXJhbWV0ZXIvYmVmb3JlL1Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0RW51bS9jaGFuZ2VNZXRob2RQYXJhbWV0ZXIvYmVmb3JlL1Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iOWZhNzI2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RFbnVtL2NoYW5nZU1ldGhvZFBhcmFtZXRlci9iZWZvcmUvVGVzdC5qYXZhCkBAIC0wLDAgKzEsMTggQEAKK3B1YmxpYyBjbGFzcyBUZXN0IHsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBGT08gPSAwOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEJBUiA9IDE7CisKKyAgICB2b2lkIGZvbyhpbnQgaSkgeworICAgICAgICBzd2l0Y2ggKGkpIHsKKyAgICAgICAgICAgIGNhc2UgRk9POgorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBCQVI6CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisKKyAgICB2b2lkIGZvb2JhcigpIHsKKyAgICAgICAgZm9vKEZPTyk7CisgICAgICAgIGZvbyhCQVIpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdEVudW0vY2hhbmdlTWV0aG9kUGFyYW1ldGVyQW5kUmVwbGFjZU90aGVyVXNhZ2VzL2FmdGVyL0VFbnVtLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdEVudW0vY2hhbmdlTWV0aG9kUGFyYW1ldGVyQW5kUmVwbGFjZU90aGVyVXNhZ2VzL2FmdGVyL0VFbnVtLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGM4OGEzYgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0RW51bS9jaGFuZ2VNZXRob2RQYXJhbWV0ZXJBbmRSZXBsYWNlT3RoZXJVc2FnZXMvYWZ0ZXIvRUVudW0uamF2YQpAQCAtMCwwICsxLDEyIEBACitwdWJsaWMgZW51bSBFRW51bSB7CisgICAgRk9PKDApLCBCQVIoMSk7CisgICAgcHJpdmF0ZSBpbnQgdmFsdWU7CisKKyAgICBwdWJsaWMgaW50IGdldFZhbHVlKCkgeworICAgICAgICByZXR1cm4gdmFsdWU7CisgICAgfQorCisgICAgRUVudW0oaW50IHZhbHVlKSB7CisgICAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RFbnVtL2NoYW5nZU1ldGhvZFBhcmFtZXRlckFuZFJlcGxhY2VPdGhlclVzYWdlcy9hZnRlci9UZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdEVudW0vY2hhbmdlTWV0aG9kUGFyYW1ldGVyQW5kUmVwbGFjZU90aGVyVXNhZ2VzL2FmdGVyL1Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MGI1YjU5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RFbnVtL2NoYW5nZU1ldGhvZFBhcmFtZXRlckFuZFJlcGxhY2VPdGhlclVzYWdlcy9hZnRlci9UZXN0LmphdmEKQEAgLTAsMCArMSwxMiBAQAorcHVibGljIGNsYXNzIFRlc3QgeworCisgICAgdm9pZCBmb28oRUVudW0gaSkgeworICAgICAgICBzd2l0Y2ggKGkpIHsKKyAgICAgICAgICAgIGNhc2UgRk9POgorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBCQVI6CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgaW50IGsgPSBNYXRoLm1heChpLmdldFZhbHVlKCkgKiBpLmdldFZhbHVlKCksIGkuZ2V0VmFsdWUoKSArIGkuZ2V0VmFsdWUoKSk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0RW51bS9jaGFuZ2VNZXRob2RQYXJhbWV0ZXJBbmRSZXBsYWNlT3RoZXJVc2FnZXMvYmVmb3JlL1Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0RW51bS9jaGFuZ2VNZXRob2RQYXJhbWV0ZXJBbmRSZXBsYWNlT3RoZXJVc2FnZXMvYmVmb3JlL1Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40OGMzY2VhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RFbnVtL2NoYW5nZU1ldGhvZFBhcmFtZXRlckFuZFJlcGxhY2VPdGhlclVzYWdlcy9iZWZvcmUvVGVzdC5qYXZhCkBAIC0wLDAgKzEsMTQgQEAKK3B1YmxpYyBjbGFzcyBUZXN0IHsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBGT08gPSAwOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEJBUiA9IDE7CisKKyAgICB2b2lkIGZvbyhpbnQgaSkgeworICAgICAgICBzd2l0Y2ggKGkpIHsKKyAgICAgICAgICAgIGNhc2UgRk9POgorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBCQVI6CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgaW50IGsgPSBNYXRoLm1heChpICogaSwgaSArIGkpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdEVudW0vY2hhbmdlUmV0dXJuVHlwZS9hZnRlci9FRW51bS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RFbnVtL2NoYW5nZVJldHVyblR5cGUvYWZ0ZXIvRUVudW0uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYzg4YTNiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RFbnVtL2NoYW5nZVJldHVyblR5cGUvYWZ0ZXIvRUVudW0uamF2YQpAQCAtMCwwICsxLDEyIEBACitwdWJsaWMgZW51bSBFRW51bSB7CisgICAgRk9PKDApLCBCQVIoMSk7CisgICAgcHJpdmF0ZSBpbnQgdmFsdWU7CisKKyAgICBwdWJsaWMgaW50IGdldFZhbHVlKCkgeworICAgICAgICByZXR1cm4gdmFsdWU7CisgICAgfQorCisgICAgRUVudW0oaW50IHZhbHVlKSB7CisgICAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RFbnVtL2NoYW5nZVJldHVyblR5cGUvYWZ0ZXIvVGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RFbnVtL2NoYW5nZVJldHVyblR5cGUvYWZ0ZXIvVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM2NThmMWEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdEVudW0vY2hhbmdlUmV0dXJuVHlwZS9hZnRlci9UZXN0LmphdmEKQEAgLTAsMCArMSwxOSBAQAorcHVibGljIGNsYXNzIFRlc3QgeworCisgICAgdm9pZCBmb28oKSB7CisgICAgICAgIEVFbnVtIGkgPSBmb29iYXIoZmFsc2UpOworICAgICAgICBzd2l0Y2ggKGkpIHsKKyAgICAgICAgICAgIGNhc2UgRk9POgorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBCQVI6CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBFRW51bSBmb29iYXIoYm9vbGVhbiBmbGFnKSB7CisgICAgICAgIGlmIChmbGFnKSB7CisgICAgICAgICAgICByZXR1cm4gRUVudW0uRk9POworICAgICAgICB9CisgICAgICAgIHJldHVybiBFRW51bS5CQVI7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0RW51bS9jaGFuZ2VSZXR1cm5UeXBlL2JlZm9yZS9UZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdEVudW0vY2hhbmdlUmV0dXJuVHlwZS9iZWZvcmUvVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRhNDNkNzkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdEVudW0vY2hhbmdlUmV0dXJuVHlwZS9iZWZvcmUvVGVzdC5qYXZhCkBAIC0wLDAgKzEsMjEgQEAKK3B1YmxpYyBjbGFzcyBUZXN0IHsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBGT08gPSAwOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEJBUiA9IDE7CisKKyAgICB2b2lkIGZvbygpIHsKKyAgICAgICAgaW50IGkgPSBmb29iYXIoZmFsc2UpOworICAgICAgICBzd2l0Y2ggKGkpIHsKKyAgICAgICAgICAgIGNhc2UgRk9POgorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBCQVI6CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpbnQgZm9vYmFyKGJvb2xlYW4gZmxhZykgeworICAgICAgICBpZiAoZmxhZykgeworICAgICAgICAgICAgcmV0dXJuIEZPTzsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gQkFSOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdEVudW0vZGVwZW5kYW50Q29uc3RhbnRzL2FmdGVyL0VFbnVtLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdEVudW0vZGVwZW5kYW50Q29uc3RhbnRzL2FmdGVyL0VFbnVtLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTYwOTg1MQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0RW51bS9kZXBlbmRhbnRDb25zdGFudHMvYWZ0ZXIvRUVudW0uamF2YQpAQCAtMCwwICsxLDEyIEBACitwdWJsaWMgZW51bSBFRW51bSB7CisgICAgRk9PKCJmb28iKSwgQkFSKEZPTy5nZXRWYWx1ZSgpKTsKKyAgICBwcml2YXRlIFN0cmluZyB2YWx1ZTsKKworICAgIHB1YmxpYyBTdHJpbmcgZ2V0VmFsdWUoKSB7CisgICAgICAgIHJldHVybiB2YWx1ZTsKKyAgICB9CisKKyAgICBFRW51bShTdHJpbmcgdmFsdWUpIHsKKyAgICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdEVudW0vZGVwZW5kYW50Q29uc3RhbnRzL2FmdGVyL1Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0RW51bS9kZXBlbmRhbnRDb25zdGFudHMvYWZ0ZXIvVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk2ZDgzZTBjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RFbnVtL2RlcGVuZGFudENvbnN0YW50cy9hZnRlci9UZXN0LmphdmEKQEAgLTAsMCArMSwyIEBACitjbGFzcyBUZXN0IHsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdEVudW0vZGVwZW5kYW50Q29uc3RhbnRzL2JlZm9yZS9UZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdEVudW0vZGVwZW5kYW50Q29uc3RhbnRzL2JlZm9yZS9UZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGFkNDI4ZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0RW51bS9kZXBlbmRhbnRDb25zdGFudHMvYmVmb3JlL1Rlc3QuamF2YQpAQCAtMCwwICsxLDQgQEAKK2NsYXNzIFRlc3QgeworICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBGT08gPSAiZm9vIjsKKyAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgQkFSID0gRk9POworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0RW51bS9kb250Q2hhbmdlT3RoZXJDb25zdGFudHMvYWZ0ZXIvVGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RFbnVtL2RvbnRDaGFuZ2VPdGhlckNvbnN0YW50cy9hZnRlci9UZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTczMTQzZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0RW51bS9kb250Q2hhbmdlT3RoZXJDb25zdGFudHMvYWZ0ZXIvVGVzdC5qYXZhCkBAIC0wLDAgKzEsMTkgQEAKK3B1YmxpYyBjbGFzcyBUZXN0IHsKKyAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgT0sgPSAwOworICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBFUlJPUiA9IDE7CisKKyAgdm9pZCBmb28oaW50IHN0YXR1cykgeworICAgIHN3aXRjaCAoc3RhdHVzKSB7CisgICAgICBjYXNlIE9LOgorICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgRVJST1I6CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBOb2RlLldBUk5JTkc6CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgfQorfQorCitpbnRlcmZhY2UgTm9kZSB7CisgIGludCBXQVJOSU5HID0gMjsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdEVudW0vZG9udENoYW5nZU90aGVyQ29uc3RhbnRzL2JlZm9yZS9UZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdEVudW0vZG9udENoYW5nZU90aGVyQ29uc3RhbnRzL2JlZm9yZS9UZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTczMTQzZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0RW51bS9kb250Q2hhbmdlT3RoZXJDb25zdGFudHMvYmVmb3JlL1Rlc3QuamF2YQpAQCAtMCwwICsxLDE5IEBACitwdWJsaWMgY2xhc3MgVGVzdCB7CisgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IE9LID0gMDsKKyAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgRVJST1IgPSAxOworCisgIHZvaWQgZm9vKGludCBzdGF0dXMpIHsKKyAgICBzd2l0Y2ggKHN0YXR1cykgeworICAgICAgY2FzZSBPSzoKKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIEVSUk9SOgorICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgTm9kZS5XQVJOSU5HOgorICAgICAgICBicmVhazsKKyAgICB9CisgIH0KK30KKworaW50ZXJmYWNlIE5vZGUgeworICBpbnQgV0FSTklORyA9IDI7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RFbnVtL2ZvcndhcmRSZWZlcmVuY2VDb25mbGljdC9hZnRlci9UZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdEVudW0vZm9yd2FyZFJlZmVyZW5jZUNvbmZsaWN0L2FmdGVyL1Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYWQ0MjhkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RFbnVtL2ZvcndhcmRSZWZlcmVuY2VDb25mbGljdC9hZnRlci9UZXN0LmphdmEKQEAgLTAsMCArMSw0IEBACitjbGFzcyBUZXN0IHsKKyAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgRk9PID0gImZvbyI7CisgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEJBUiA9IEZPTzsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdEVudW0vZm9yd2FyZFJlZmVyZW5jZUNvbmZsaWN0L2JlZm9yZS9UZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdEVudW0vZm9yd2FyZFJlZmVyZW5jZUNvbmZsaWN0L2JlZm9yZS9UZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGFkNDI4ZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0RW51bS9mb3J3YXJkUmVmZXJlbmNlQ29uZmxpY3QvYmVmb3JlL1Rlc3QuamF2YQpAQCAtMCwwICsxLDQgQEAKK2NsYXNzIFRlc3QgeworICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBGT08gPSAiZm9vIjsKKyAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgQkFSID0gRk9POworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0RW51bS9vbmVDb25zdGFudC9hZnRlci9FRW51bS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RFbnVtL29uZUNvbnN0YW50L2FmdGVyL0VFbnVtLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTgzMjgzYgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0RW51bS9vbmVDb25zdGFudC9hZnRlci9FRW51bS5qYXZhCkBAIC0wLDAgKzEsMTIgQEAKK3B1YmxpYyBlbnVtIEVFbnVtIHsKKyAgICBGT08oImZvbyIpOworICAgIHByaXZhdGUgU3RyaW5nIHZhbHVlOworCisgICAgcHVibGljIFN0cmluZyBnZXRWYWx1ZSgpIHsKKyAgICAgICAgcmV0dXJuIHZhbHVlOworICAgIH0KKworICAgIEVFbnVtKFN0cmluZyB2YWx1ZSkgeworICAgICAgICB0aGlzLnZhbHVlID0gdmFsdWU7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0RW51bS9vbmVDb25zdGFudC9hZnRlci9UZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdEVudW0vb25lQ29uc3RhbnQvYWZ0ZXIvVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk2ZDgzZTBjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RFbnVtL29uZUNvbnN0YW50L2FmdGVyL1Rlc3QuamF2YQpAQCAtMCwwICsxLDIgQEAKK2NsYXNzIFRlc3QgeworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0RW51bS9vbmVDb25zdGFudC9iZWZvcmUvVGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RFbnVtL29uZUNvbnN0YW50L2JlZm9yZS9UZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNThkNmY2NmMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdEVudW0vb25lQ29uc3RhbnQvYmVmb3JlL1Rlc3QuamF2YQpAQCAtMCwwICsxLDMgQEAKK2NsYXNzIFRlc3QgeworICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBGT08gPSAiZm9vIjsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdEVudW0vcmVmZXJlbmNlc09uRW51bUNvbnN0YW50RWxzZXdoZXJlL2FmdGVyL0VFbnVtLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdEVudW0vcmVmZXJlbmNlc09uRW51bUNvbnN0YW50RWxzZXdoZXJlL2FmdGVyL0VFbnVtLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWE2OTQ2NgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0RW51bS9yZWZlcmVuY2VzT25FbnVtQ29uc3RhbnRFbHNld2hlcmUvYWZ0ZXIvRUVudW0uamF2YQpAQCAtMCwwICsxLDEyIEBACitwdWJsaWMgZW51bSBFRW51bSB7CisgICAgRk9PKDApLCBCQVIoMik7CisgICAgcHJpdmF0ZSBpbnQgdmFsdWU7CisKKyAgICBwdWJsaWMgaW50IGdldFZhbHVlKCkgeworICAgICAgICByZXR1cm4gdmFsdWU7CisgICAgfQorCisgICAgRUVudW0oaW50IHZhbHVlKSB7CisgICAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RFbnVtL3JlZmVyZW5jZXNPbkVudW1Db25zdGFudEVsc2V3aGVyZS9hZnRlci9UZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdEVudW0vcmVmZXJlbmNlc09uRW51bUNvbnN0YW50RWxzZXdoZXJlL2FmdGVyL1Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMzg0NDhiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RFbnVtL3JlZmVyZW5jZXNPbkVudW1Db25zdGFudEVsc2V3aGVyZS9hZnRlci9UZXN0LmphdmEKQEAgLTAsMCArMSw1IEBACitjbGFzcyBUZXN0IHsKKyAgICB2b2lkIGZvbygpIHsKKyAgICBTeXN0ZW0ub3V0LnByaW50bG4oRUVudW0uRk9PLmdldFZhbHVlKCkpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RFbnVtL3JlZmVyZW5jZXNPbkVudW1Db25zdGFudEVsc2V3aGVyZS9hZnRlci9Vc2FnZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RFbnVtL3JlZmVyZW5jZXNPbkVudW1Db25zdGFudEVsc2V3aGVyZS9hZnRlci9Vc2FnZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMxMGZkZWUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdEVudW0vcmVmZXJlbmNlc09uRW51bUNvbnN0YW50RWxzZXdoZXJlL2FmdGVyL1VzYWdlLmphdmEKQEAgLTAsMCArMSwxNSBAQAorY2xhc3MgVXNhZ2UgeworICB2b2lkIGZvbyhFRW51bSBpKSB7CisgICAgICAgIHN3aXRjaCAoaSkgeworICAgICAgICAgICAgY2FzZSBGT086CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEJBUjoKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKworICAgIHZvaWQgZm9vYmFyKCkgeworICAgICAgICBmb28oRUVudW0uRk9PKTsKKyAgICAgICAgZm9vKEVFbnVtLkJBUik7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0RW51bS9yZWZlcmVuY2VzT25FbnVtQ29uc3RhbnRFbHNld2hlcmUvYmVmb3JlL1Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0RW51bS9yZWZlcmVuY2VzT25FbnVtQ29uc3RhbnRFbHNld2hlcmUvYmVmb3JlL1Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYzYxMmRhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RFbnVtL3JlZmVyZW5jZXNPbkVudW1Db25zdGFudEVsc2V3aGVyZS9iZWZvcmUvVGVzdC5qYXZhCkBAIC0wLDAgKzEsNyBAQAorY2xhc3MgVGVzdCB7CisgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEZPTyA9IDA7CisgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEJBUiA9IDI7CisgIHZvaWQgZm9vKCkgeworICAgIFN5c3RlbS5vdXQucHJpbnRsbihGT08pOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RFbnVtL3JlZmVyZW5jZXNPbkVudW1Db25zdGFudEVsc2V3aGVyZS9iZWZvcmUvVXNhZ2UuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0RW51bS9yZWZlcmVuY2VzT25FbnVtQ29uc3RhbnRFbHNld2hlcmUvYmVmb3JlL1VzYWdlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzU2M2M2NAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0RW51bS9yZWZlcmVuY2VzT25FbnVtQ29uc3RhbnRFbHNld2hlcmUvYmVmb3JlL1VzYWdlLmphdmEKQEAgLTAsMCArMSwxNSBAQAorY2xhc3MgVXNhZ2UgeworICB2b2lkIGZvbyhpbnQgaSkgeworICAgICAgICBzd2l0Y2ggKGkpIHsKKyAgICAgICAgICAgIGNhc2UgVGVzdC5GT086CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIFRlc3QuQkFSOgorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorCisgICAgdm9pZCBmb29iYXIoKSB7CisgICAgICAgIGZvbyhUZXN0LkZPTyk7CisgICAgICAgIGZvbyhUZXN0LkJBUik7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0RW51bS9yZWZlcmVuY2VzT25FbnVtQ29uc3RhbnRJbkVudW0vYWZ0ZXIvRUVudW0uamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0RW51bS9yZWZlcmVuY2VzT25FbnVtQ29uc3RhbnRJbkVudW0vYWZ0ZXIvRUVudW0uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNGZhNWI2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RFbnVtL3JlZmVyZW5jZXNPbkVudW1Db25zdGFudEluRW51bS9hZnRlci9FRW51bS5qYXZhCkBAIC0wLDAgKzEsMTYgQEAKK3B1YmxpYyBlbnVtIEVFbnVtIHsKKyAgICBGT08oImZvbyIpOworICAgIHByaXZhdGUgU3RyaW5nIHZhbHVlOworCisgICAgcHVibGljIFN0cmluZyBnZXRWYWx1ZSgpIHsKKyAgICAgICAgcmV0dXJuIHZhbHVlOworICAgIH0KKworICAgIEVFbnVtKFN0cmluZyB2YWx1ZSkgeworICAgICAgICB0aGlzLnZhbHVlID0gdmFsdWU7CisgICAgfQorCisgICAgdm9pZCBmb28oKSB7CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihGT08uZ2V0VmFsdWUoKSk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0RW51bS9yZWZlcmVuY2VzT25FbnVtQ29uc3RhbnRJbkVudW0vYWZ0ZXIvVGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RFbnVtL3JlZmVyZW5jZXNPbkVudW1Db25zdGFudEluRW51bS9hZnRlci9UZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTZkODNlMGMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdEVudW0vcmVmZXJlbmNlc09uRW51bUNvbnN0YW50SW5FbnVtL2FmdGVyL1Rlc3QuamF2YQpAQCAtMCwwICsxLDIgQEAKK2NsYXNzIFRlc3QgeworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0RW51bS9yZWZlcmVuY2VzT25FbnVtQ29uc3RhbnRJbkVudW0vYmVmb3JlL1Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0RW51bS9yZWZlcmVuY2VzT25FbnVtQ29uc3RhbnRJbkVudW0vYmVmb3JlL1Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNDRmNTEyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RFbnVtL3JlZmVyZW5jZXNPbkVudW1Db25zdGFudEluRW51bS9iZWZvcmUvVGVzdC5qYXZhCkBAIC0wLDAgKzEsNiBAQAorY2xhc3MgVGVzdCB7CisgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEZPTyA9ICJmb28iOworICB2b2lkIGZvbygpIHsKKyAgICBTeXN0ZW0ub3V0LnByaW50bG4oRk9PKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0RW51bS9yZWZlcmVuY2VzT25FbnVtQ29uc3RhbnRJbk9yaWdpbmFsL2FmdGVyL0VFbnVtLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdEVudW0vcmVmZXJlbmNlc09uRW51bUNvbnN0YW50SW5PcmlnaW5hbC9hZnRlci9FRW51bS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE4MzI4M2IKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdEVudW0vcmVmZXJlbmNlc09uRW51bUNvbnN0YW50SW5PcmlnaW5hbC9hZnRlci9FRW51bS5qYXZhCkBAIC0wLDAgKzEsMTIgQEAKK3B1YmxpYyBlbnVtIEVFbnVtIHsKKyAgICBGT08oImZvbyIpOworICAgIHByaXZhdGUgU3RyaW5nIHZhbHVlOworCisgICAgcHVibGljIFN0cmluZyBnZXRWYWx1ZSgpIHsKKyAgICAgICAgcmV0dXJuIHZhbHVlOworICAgIH0KKworICAgIEVFbnVtKFN0cmluZyB2YWx1ZSkgeworICAgICAgICB0aGlzLnZhbHVlID0gdmFsdWU7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0RW51bS9yZWZlcmVuY2VzT25FbnVtQ29uc3RhbnRJbk9yaWdpbmFsL2FmdGVyL1Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0RW51bS9yZWZlcmVuY2VzT25FbnVtQ29uc3RhbnRJbk9yaWdpbmFsL2FmdGVyL1Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMzg0NDhiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RFbnVtL3JlZmVyZW5jZXNPbkVudW1Db25zdGFudEluT3JpZ2luYWwvYWZ0ZXIvVGVzdC5qYXZhCkBAIC0wLDAgKzEsNSBAQAorY2xhc3MgVGVzdCB7CisgICAgdm9pZCBmb28oKSB7CisgICAgU3lzdGVtLm91dC5wcmludGxuKEVFbnVtLkZPTy5nZXRWYWx1ZSgpKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0RW51bS9yZWZlcmVuY2VzT25FbnVtQ29uc3RhbnRJbk9yaWdpbmFsL2JlZm9yZS9UZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdEVudW0vcmVmZXJlbmNlc09uRW51bUNvbnN0YW50SW5PcmlnaW5hbC9iZWZvcmUvVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM0NGY1MTIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdEVudW0vcmVmZXJlbmNlc09uRW51bUNvbnN0YW50SW5PcmlnaW5hbC9iZWZvcmUvVGVzdC5qYXZhCkBAIC0wLDAgKzEsNiBAQAorY2xhc3MgVGVzdCB7CisgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEZPTyA9ICJmb28iOworICB2b2lkIGZvbygpIHsKKyAgICBTeXN0ZW0ub3V0LnByaW50bG4oRk9PKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0RW51bS91bmtub3duU3dpdGNoTGFiZWwvYWZ0ZXIvVGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RFbnVtL3Vua25vd25Td2l0Y2hMYWJlbC9hZnRlci9UZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWVlOGYwZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0RW51bS91bmtub3duU3dpdGNoTGFiZWwvYWZ0ZXIvVGVzdC5qYXZhCkBAIC0wLDAgKzEsMjAgQEAKK3B1YmxpYyBjbGFzcyBUZXN0IHsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBGT08gPSAwOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEJBUiA9IDE7CisKKyAgICB2b2lkIGZvbyhpbnQgaSkgeworICAgICAgICBzd2l0Y2ggKGkpIHsKKyAgICAgICAgICAgIGNhc2UgRk9POgorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBCQVI6CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDg6CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisKKyAgICB2b2lkIGZvb2JhcigpIHsKKyAgICAgICAgZm9vKEZPTyk7CisgICAgICAgIGZvbyhCQVIpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdEVudW0vdW5rbm93blN3aXRjaExhYmVsL2JlZm9yZS9UZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdEVudW0vdW5rbm93blN3aXRjaExhYmVsL2JlZm9yZS9UZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWVlOGYwZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0RW51bS91bmtub3duU3dpdGNoTGFiZWwvYmVmb3JlL1Rlc3QuamF2YQpAQCAtMCwwICsxLDIwIEBACitwdWJsaWMgY2xhc3MgVGVzdCB7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgRk9PID0gMDsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBCQVIgPSAxOworCisgICAgdm9pZCBmb28oaW50IGkpIHsKKyAgICAgICAgc3dpdGNoIChpKSB7CisgICAgICAgICAgICBjYXNlIEZPTzoKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgQkFSOgorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSA4OgorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorCisgICAgdm9pZCBmb29iYXIoKSB7CisgICAgICAgIGZvbyhGT08pOworICAgICAgICBmb28oQkFSKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RFbnVtL3ZhbHVlTmFtZUNvbmZsaWN0L2FmdGVyL0VFbnVtLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdEVudW0vdmFsdWVOYW1lQ29uZmxpY3QvYWZ0ZXIvRUVudW0uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMGI4ZmRlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RFbnVtL3ZhbHVlTmFtZUNvbmZsaWN0L2FmdGVyL0VFbnVtLmphdmEKQEAgLTAsMCArMSwxMyBAQAorcHVibGljIGVudW0gRUVudW0geworICAgIEZPTygiZm9vIik7CisgICAgcHVibGljIGludCB2YWx1ZSA9IDA7CisgICAgcHJpdmF0ZSBTdHJpbmcgdmFsdWUxOworCisgICAgcHVibGljIFN0cmluZyBnZXRWYWx1ZSgpIHsKKyAgICAgICAgcmV0dXJuIHZhbHVlMTsKKyAgICB9CisKKyAgICBFRW51bShTdHJpbmcgdmFsdWUpIHsKKyAgICAgICAgdmFsdWUxID0gdmFsdWU7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0RW51bS92YWx1ZU5hbWVDb25mbGljdC9hZnRlci9UZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdEVudW0vdmFsdWVOYW1lQ29uZmxpY3QvYWZ0ZXIvVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk2ZDgzZTBjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RFbnVtL3ZhbHVlTmFtZUNvbmZsaWN0L2FmdGVyL1Rlc3QuamF2YQpAQCAtMCwwICsxLDIgQEAKK2NsYXNzIFRlc3QgeworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0RW51bS92YWx1ZU5hbWVDb25mbGljdC9iZWZvcmUvVGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RFbnVtL3ZhbHVlTmFtZUNvbmZsaWN0L2JlZm9yZS9UZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWI5OGZjOAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0RW51bS92YWx1ZU5hbWVDb25mbGljdC9iZWZvcmUvVGVzdC5qYXZhCkBAIC0wLDAgKzEsNCBAQAorY2xhc3MgVGVzdCB7CisgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEZPTyA9ICJmb28iOworICBwdWJsaWMgaW50IHZhbHVlID0gMDsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9Bbm9uSW5uZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL0Fub25Jbm5lci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM0YTMyNDYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9Bbm9uSW5uZXIuamF2YQpAQCAtMCwwICsxLDIxIEBACisKK2ltcG9ydCBqYXZheC5zd2luZy4qOworaW1wb3J0IGphdmEuYXd0LmV2ZW50LkFjdGlvbkV2ZW50OworCitwdWJsaWMgY2xhc3MgRXh0cmFjdE1ldGhvZHMgeyB9CithYnN0cmFjdCBjbGFzcyBNeUJ1dHRvbgorICAgICAgICBleHRlbmRzIEpCdXR0b24KKyAgICAgICAgeworICAgIHByb3RlY3RlZCBNeUJ1dHRvbiggU3RyaW5nIHRleHQgKSB7CisgICAgICAgIHN1cGVyKCB0ZXh0ICk7CisgICAgfQorfQorY2xhc3MgRm9vIHsKKyAgICBwcml2YXRlIEpCdXR0b24gY3JlYXRlT0tCdXR0b24oKSB7CisgICAgICAgIHJldHVybiBuZXcgTXlCdXR0b24oICJPSyIgKSB7CisgICAgICAgICAgICBwdWJsaWMgdm9pZCBhY3Rpb25QZXJmb3JtZWQoIEFjdGlvbkV2ZW50IGUgKSB7CisgICAgICAgICAgICA8c2VsZWN0aW9uPiAgICBzZXRWaXNpYmxlKCBmYWxzZSApOyA8L3NlbGVjdGlvbj4KKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9Bbm9uSW5uZXJfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL0Fub25Jbm5lcl9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM2MzM0MWYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9Bbm9uSW5uZXJfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDI1IEBACisKK2ltcG9ydCBqYXZheC5zd2luZy4qOworaW1wb3J0IGphdmEuYXd0LmV2ZW50LkFjdGlvbkV2ZW50OworCitwdWJsaWMgY2xhc3MgRXh0cmFjdE1ldGhvZHMgeyB9CithYnN0cmFjdCBjbGFzcyBNeUJ1dHRvbgorICAgICAgICBleHRlbmRzIEpCdXR0b24KKyAgICAgICAgeworICAgIHByb3RlY3RlZCBNeUJ1dHRvbiggU3RyaW5nIHRleHQgKSB7CisgICAgICAgIHN1cGVyKCB0ZXh0ICk7CisgICAgfQorfQorY2xhc3MgRm9vIHsKKyAgICBwcml2YXRlIEpCdXR0b24gY3JlYXRlT0tCdXR0b24oKSB7CisgICAgICAgIHJldHVybiBuZXcgTXlCdXR0b24oICJPSyIgKSB7CisgICAgICAgICAgICBwdWJsaWMgdm9pZCBhY3Rpb25QZXJmb3JtZWQoIEFjdGlvbkV2ZW50IGUgKSB7CisgICAgICAgICAgICAgICAgbmV3TWV0aG9kKCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHByaXZhdGUgdm9pZCBuZXdNZXRob2QoKSB7CisgICAgICAgICAgICAgICAgc2V0VmlzaWJsZSggZmFsc2UgKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9BcnJheUFjY2Vzcy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvQXJyYXlBY2Nlc3MuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZDFmZDg4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvQXJyYXlBY2Nlc3MuamF2YQpAQCAtMCwwICsxLDggQEAKK2NsYXNzIFRlc3QgeworICB2b2lkIGZvbyhTdHJpbmdbXSBzcykgeworICAgICBmb3IoaW50IGkgPSAwOyBpIDwgc3MubGVuZ3RoOyBpKyspIHsKKyAgICAgICA8c2VsZWN0aW9uPlN5c3RlbS5vdXQucHJpbnRsbihzc1tpXSk7CisgICAgICAgU3lzdGVtLm91dC5wcmludGxuKHNzW2ldICsgc3NbaV0pOzwvc2VsZWN0aW9uPgorICAgICB9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9BcnJheUFjY2VzczEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL0FycmF5QWNjZXNzMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdlYzUwMzMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9BcnJheUFjY2VzczEuamF2YQpAQCAtMCwwICsxLDEwIEBACitjbGFzcyBUZXN0IHsKKyAgdm9pZCBmb28oU3RyaW5nW10gc3MsIFN0cmluZ1tdIGJiKSB7CisgICAgIGZvcihpbnQgaSA9IDA7IGkgPCBzcy5sZW5ndGg7IGkrKykgeworICAgICAgIDxzZWxlY3Rpb24+CisgICAgICAgU3lzdGVtLm91dC5wcmludGxuKHNzW2ldKTsKKyAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oYmJbaV0pOworICAgICAgIDwvc2VsZWN0aW9uPgorICAgICB9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9BcnJheUFjY2VzczFfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL0FycmF5QWNjZXNzMV9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEyMDNiYzkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9BcnJheUFjY2VzczFfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDE0IEBACitjbGFzcyBUZXN0IHsKKyAgdm9pZCBmb28oU3RyaW5nW10gc3MsIFN0cmluZ1tdIGJiKSB7CisgICAgIGZvcihpbnQgaSA9IDA7IGkgPCBzcy5sZW5ndGg7IGkrKykgeworCisgICAgICAgICBuZXdNZXRob2Qoc3NbaV0sIGJiW2ldKTsKKyAgICAgICAKKyAgICAgfQorICB9CisKKyAgICBwcml2YXRlIHZvaWQgbmV3TWV0aG9kKFN0cmluZyBzLCBTdHJpbmcgeCkgeworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4ocyk7CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbih4KTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvQXJyYXlBY2Nlc3NXaXRoRHVwbGljYXRlcy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvQXJyYXlBY2Nlc3NXaXRoRHVwbGljYXRlcy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg1MjQ4ZmIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9BcnJheUFjY2Vzc1dpdGhEdXBsaWNhdGVzLmphdmEKQEAgLTAsMCArMSw2IEBACitjbGFzcyBUZXN0IHsKKyAgdm9pZCBmb28oU3RyaW5nW10gc3MpIHsKKyAgICA8c2VsZWN0aW9uPlN5c3RlbS5vdXQucHJpbnRsbihzc1swXSk7PC9zZWxlY3Rpb24+CisgICAgU3lzdGVtLm91dC5wcmludGxuKHNzWzBdKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL0FycmF5QWNjZXNzV2l0aER1cGxpY2F0ZXNfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL0FycmF5QWNjZXNzV2l0aER1cGxpY2F0ZXNfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NDQ5NmJlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvQXJyYXlBY2Nlc3NXaXRoRHVwbGljYXRlc19hZnRlci5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKK2NsYXNzIFRlc3QgeworICB2b2lkIGZvbyhTdHJpbmdbXSBzcykgeworICAgICAgbmV3TWV0aG9kKHNzWzBdKTsKKyAgICAgIG5ld01ldGhvZChzc1swXSk7CisgIH0KKworICAgIHByaXZhdGUgdm9pZCBuZXdNZXRob2QoU3RyaW5nIHMpIHsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKHMpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9BcnJheUFjY2Vzc1dpdGhMb2NhbEluZGV4LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9BcnJheUFjY2Vzc1dpdGhMb2NhbEluZGV4LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2I4NTBiZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL0FycmF5QWNjZXNzV2l0aExvY2FsSW5kZXguamF2YQpAQCAtMCwwICsxLDkgQEAKK2NsYXNzIFRlc3QgeworICB2b2lkIGZvbyhTdHJpbmdbXSBzcykgeworICAgIEludGVnZXJbXSBsZXZlbHMgPSBuZXcgSW50ZWdlcltde0ludGVnZXIudmFsdWVPZigxKSwgSW50ZWdlci52YWx1ZU9mKDIpLCBJbnRlZ2VyLnZhbHVlT2YoMyksfTsKKyAgICBJbnRlZ2VyW10gbmV4dFdpbk51bWJlciA9IG5ldyBJbnRlZ2VyWzZdOworICAgIDxzZWxlY3Rpb24+Zm9yIChJbnRlZ2VyIGxldmVsIDogbGV2ZWxzKSB7CisgICAgICBJbnRlZ2VyIG5leHRXaW5OdW0gPSBuZXh0V2luTnVtYmVyW2xldmVsIC0gMV07CisgICAgfTwvc2VsZWN0aW9uPgorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvQXJyYXlBY2Nlc3NXaXRoTG9jYWxJbmRleF9hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvQXJyYXlBY2Nlc3NXaXRoTG9jYWxJbmRleF9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ5NzQwMGMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9BcnJheUFjY2Vzc1dpdGhMb2NhbEluZGV4X2FmdGVyLmphdmEKQEAgLTAsMCArMSwxMyBAQAorY2xhc3MgVGVzdCB7CisgIHZvaWQgZm9vKFN0cmluZ1tdIHNzKSB7CisgICAgSW50ZWdlcltdIGxldmVscyA9IG5ldyBJbnRlZ2VyW117SW50ZWdlci52YWx1ZU9mKDEpLCBJbnRlZ2VyLnZhbHVlT2YoMiksIEludGVnZXIudmFsdWVPZigzKSx9OworICAgIEludGVnZXJbXSBuZXh0V2luTnVtYmVyID0gbmV3IEludGVnZXJbNl07CisgICAgICBuZXdNZXRob2QobGV2ZWxzLCBuZXh0V2luTnVtYmVyKTsKKyAgfQorCisgICAgcHJpdmF0ZSB2b2lkIG5ld01ldGhvZChJbnRlZ2VyW10gbGV2ZWxzLCBJbnRlZ2VyW10gbmV4dFdpbk51bWJlcikgeworICAgICAgICBmb3IgKEludGVnZXIgbGV2ZWwgOiBsZXZlbHMpIHsKKyAgICAgICAgICBJbnRlZ2VyIG5leHRXaW5OdW0gPSBuZXh0V2luTnVtYmVyW2xldmVsIC0gMV07CisgICAgICAgIH0KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvQXJyYXlBY2Nlc3NfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL0FycmF5QWNjZXNzX2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDhiNGQxNgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL0FycmF5QWNjZXNzX2FmdGVyLmphdmEKQEAgLTAsMCArMSwxMiBAQAorY2xhc3MgVGVzdCB7CisgIHZvaWQgZm9vKFN0cmluZ1tdIHNzKSB7CisgICAgIGZvcihpbnQgaSA9IDA7IGkgPCBzcy5sZW5ndGg7IGkrKykgeworICAgICAgICAgbmV3TWV0aG9kKHNzW2ldKTsKKyAgICAgfQorICB9CisKKyAgICBwcml2YXRlIHZvaWQgbmV3TWV0aG9kKFN0cmluZyBzKSB7CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihzKTsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKHMgKyBzKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvQm9vbGVhbkV4cHJlc3Npb24uamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL0Jvb2xlYW5FeHByZXNzaW9uLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTAzOTE1MgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL0Jvb2xlYW5FeHByZXNzaW9uLmphdmEKQEAgLTAsMCArMSw1IEBACitjbGFzcyBUZXN0IHsKKyAgICB2b2lkIG1ldGhvZChpbnQgaSkgeworICAgICAgICBib29sZWFuIGlzRGlydHkgPSA8c2VsZWN0aW9uPmkgPT0gMDwvc2VsZWN0aW9uPiB8fCBvdGhlclRlc3RzKCk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL0Jvb2xlYW5FeHByZXNzaW9uX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9Cb29sZWFuRXhwcmVzc2lvbl9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg1OWQxMmMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9Cb29sZWFuRXhwcmVzc2lvbl9hZnRlci5qYXZhCkBAIC0wLDAgKzEsOSBAQAorY2xhc3MgVGVzdCB7CisgICAgdm9pZCBtZXRob2QoaW50IGkpIHsKKyAgICAgICAgYm9vbGVhbiBpc0RpcnR5ID0gbmV3TWV0aG9kKGkpIHx8IG90aGVyVGVzdHMoKTsKKyAgICB9CisKKyAgICBwcml2YXRlIGJvb2xlYW4gbmV3TWV0aG9kKGludCBpKSB7CisgICAgICAgIHJldHVybiBpID09IDA7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL0Nhc3Q0UGFyYW1HZW5lcmF0aW9uLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9DYXN0NFBhcmFtR2VuZXJhdGlvbi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEzNmM2NWQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9DYXN0NFBhcmFtR2VuZXJhdGlvbi5qYXZhCkBAIC0wLDAgKzEsMTEgQEAKK3B1YmxpYyBjbGFzcyBUZXN0IHsKKyAgdm9pZCBmb28oT2JqZWN0IG8pIHsKKyAgICBpZiAobyBpbnN0YW5jZW9mIEEpIHsKKyAgICAgIDxzZWxlY3Rpb24+KChBKW8pLmJhcigpOzwvc2VsZWN0aW9uPgorICAgIH0KKyAgfQorfQorCitjbGFzcyBBIHsKKyAgdm9pZCBiYXIoKXt9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvQ2FzdDRQYXJhbUdlbmVyYXRpb25fYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL0Nhc3Q0UGFyYW1HZW5lcmF0aW9uX2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGY4ZTk3OQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL0Nhc3Q0UGFyYW1HZW5lcmF0aW9uX2FmdGVyLmphdmEKQEAgLTAsMCArMSwxNSBAQAorcHVibGljIGNsYXNzIFRlc3QgeworICB2b2lkIGZvbyhPYmplY3QgbykgeworICAgIGlmIChvIGluc3RhbmNlb2YgQSkgeworICAgICAgICBuZXdNZXRob2QoKEEpIG8pOworICAgIH0KKyAgfQorCisgICAgcHJpdmF0ZSB2b2lkIG5ld01ldGhvZChBIG8pIHsKKyAgICAgICAgKChBKW8pLmJhcigpOworICAgIH0KK30KKworY2xhc3MgQSB7CisgIHZvaWQgYmFyKCl7fQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL0Nhc3RXaGVuRHVwbGljYXRlUmVwbGFjZW1lbnQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL0Nhc3RXaGVuRHVwbGljYXRlUmVwbGFjZW1lbnQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42OGE5MWZkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvQ2FzdFdoZW5EdXBsaWNhdGVSZXBsYWNlbWVudC5qYXZhCkBAIC0wLDAgKzEsNyBAQAorY2xhc3MgVGVzdCB7CisKKyAgICB2b2lkIGZvbyhPYmplY3QgeCkgeworICAgICAgICBpZiAoeCBpbnN0YW5jZW9mIFN0cmluZykgeCA9ICgoU3RyaW5nKXgpLnN1YnN0cmluZygxKTsKKyAgICAgICAgaWYgKHggaW5zdGFuY2VvZiBTdHJpbmcpIHggPSA8c2VsZWN0aW9uPigoU3RyaW5nKXgpLnN1YnN0cmluZygxKTwvc2VsZWN0aW9uPjsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvQ2FzdFdoZW5EdXBsaWNhdGVSZXBsYWNlbWVudF9hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvQ2FzdFdoZW5EdXBsaWNhdGVSZXBsYWNlbWVudF9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUwYTE0ZWU0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvQ2FzdFdoZW5EdXBsaWNhdGVSZXBsYWNlbWVudF9hZnRlci5qYXZhCkBAIC0wLDAgKzEsMTEgQEAKK2NsYXNzIFRlc3QgeworCisgICAgdm9pZCBmb28oT2JqZWN0IHgpIHsKKyAgICAgICAgaWYgKHggaW5zdGFuY2VvZiBTdHJpbmcpIHggPSBuZXdNZXRob2QoKFN0cmluZykgeCk7CisgICAgICAgIGlmICh4IGluc3RhbmNlb2YgU3RyaW5nKSB4ID0gbmV3TWV0aG9kKChTdHJpbmcpIHgpOworICAgIH0KKworICAgIHByaXZhdGUgU3RyaW5nIG5ld01ldGhvZChTdHJpbmcgeCkgeworICAgICAgICByZXR1cm4gKChTdHJpbmcpeCkuc3Vic3RyaW5nKDEpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9DaGFpbmVkQ29uc3RydWN0b3IuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL0NoYWluZWRDb25zdHJ1Y3Rvci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM2OWMyZjYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9DaGFpbmVkQ29uc3RydWN0b3IuamF2YQpAQCAtMCwwICsxLDkgQEAKK2NsYXNzIEEgeworICAgIHByaXZhdGUgaW50IGk7CisgICAgcHJpdmF0ZSBpbnQgajsKKworICAgIHB1YmxpYyBBKGludCBpLCBpbnQgaikgeworICAgICAgICA8c2VsZWN0aW9uPnRoaXMuaSA9IGk7PC9zZWxlY3Rpb24+CisgICAgICAgIHRoaXMuaiA9IGo7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL0NoYWluZWRDb25zdHJ1Y3RvckR1cGxpY2F0ZXMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL0NoYWluZWRDb25zdHJ1Y3RvckR1cGxpY2F0ZXMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMGNjZjVhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvQ2hhaW5lZENvbnN0cnVjdG9yRHVwbGljYXRlcy5qYXZhCkBAIC0wLDAgKzEsMTUgQEAKK2NsYXNzIEEgeworICAgIHByaXZhdGUgaW50IGk7CisgICAgcHJpdmF0ZSBpbnQgajsKKyAgICBwcml2YXRlIGludCBzOworCisgICAgcHVibGljIEEoaW50IGksIGludCBqKSB7CisgICAgICAgIDxzZWxlY3Rpb24+dGhpcy5pID0gaTs8L3NlbGVjdGlvbj4KKyAgICAgICAgdGhpcy5qID0gajsKKyAgICB9CisKKyAgICBwdWJsaWMgQShpbnQgaSwgU3RyaW5nIHMpIHsKKyAgICAgICAgdGhpcy5pID0gaTsKKyAgICAgICAgdGhpcy5zID0gczsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvQ2hhaW5lZENvbnN0cnVjdG9yRHVwbGljYXRlc19hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvQ2hhaW5lZENvbnN0cnVjdG9yRHVwbGljYXRlc19hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcwZjlmYTEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9DaGFpbmVkQ29uc3RydWN0b3JEdXBsaWNhdGVzX2FmdGVyLmphdmEKQEAgLTAsMCArMSwxOSBAQAorY2xhc3MgQSB7CisgICAgcHJpdmF0ZSBpbnQgaTsKKyAgICBwcml2YXRlIGludCBqOworICAgIHByaXZhdGUgaW50IHM7CisKKyAgICBwdWJsaWMgQShpbnQgaSwgaW50IGopIHsKKyAgICAgICAgdGhpcyhpKTsKKyAgICAgICAgdGhpcy5qID0gajsKKyAgICB9CisKKyAgICBwcml2YXRlIEEoaW50IGkpIHsKKyAgICAgICAgdGhpcy5pID0gaTsKKyAgICB9CisKKyAgICBwdWJsaWMgQShpbnQgaSwgU3RyaW5nIHMpIHsKKyAgICAgICAgdGhpcyhpKTsKKyAgICAgICAgdGhpcy5zID0gczsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvQ2hhaW5lZENvbnN0cnVjdG9ySW52YWxpZER1cGxpY2F0ZXMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL0NoYWluZWRDb25zdHJ1Y3RvckludmFsaWREdXBsaWNhdGVzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjk2MDkwZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL0NoYWluZWRDb25zdHJ1Y3RvckludmFsaWREdXBsaWNhdGVzLmphdmEKQEAgLTAsMCArMSwxNSBAQAorY2xhc3MgQSB7CisgICAgcHJpdmF0ZSBpbnQgaTsKKyAgICBwcml2YXRlIGludCBqOworICAgIHByaXZhdGUgaW50IHM7CisKKyAgICBwdWJsaWMgQShpbnQgaSwgaW50IGopIHsKKyAgICAgICAgPHNlbGVjdGlvbj50aGlzLmkgPSBpOzwvc2VsZWN0aW9uPgorICAgICAgICB0aGlzLmogPSBqOworICAgIH0KKworICAgIHB1YmxpYyBBKGludCBpLCBTdHJpbmcgcykgeworICAgICAgICB0aGlzLnMgPSBzOworICAgICAgICB0aGlzLmkgPSBpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9DaGFpbmVkQ29uc3RydWN0b3JJbnZhbGlkRHVwbGljYXRlc19hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvQ2hhaW5lZENvbnN0cnVjdG9ySW52YWxpZER1cGxpY2F0ZXNfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41M2I3OGVjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvQ2hhaW5lZENvbnN0cnVjdG9ySW52YWxpZER1cGxpY2F0ZXNfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDE5IEBACitjbGFzcyBBIHsKKyAgICBwcml2YXRlIGludCBpOworICAgIHByaXZhdGUgaW50IGo7CisgICAgcHJpdmF0ZSBpbnQgczsKKworICAgIHB1YmxpYyBBKGludCBpLCBpbnQgaikgeworICAgICAgICB0aGlzKGkpOworICAgICAgICB0aGlzLmogPSBqOworICAgIH0KKworICAgIHByaXZhdGUgQShpbnQgaSkgeworICAgICAgICB0aGlzLmkgPSBpOworICAgIH0KKworICAgIHB1YmxpYyBBKGludCBpLCBTdHJpbmcgcykgeworICAgICAgICB0aGlzLnMgPSBzOworICAgICAgICB0aGlzLmkgPSBpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9DaGFpbmVkQ29uc3RydWN0b3JfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL0NoYWluZWRDb25zdHJ1Y3Rvcl9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJiNDVlMGIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9DaGFpbmVkQ29uc3RydWN0b3JfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDEzIEBACitjbGFzcyBBIHsKKyAgICBwcml2YXRlIGludCBpOworICAgIHByaXZhdGUgaW50IGo7CisKKyAgICBwdWJsaWMgQShpbnQgaSwgaW50IGopIHsKKyAgICAgICAgdGhpcyhpKTsKKyAgICAgICAgdGhpcy5qID0gajsKKyAgICB9CisKKyAgICBwcml2YXRlIEEoaW50IGkpIHsKKyAgICAgICAgdGhpcy5pID0gaTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvQ2hlY2tRdWFsaWZpZXJNYXBwaW5nLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9DaGVja1F1YWxpZmllck1hcHBpbmcuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NmVhOGEzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvQ2hlY2tRdWFsaWZpZXJNYXBwaW5nLmphdmEKQEAgLTAsMCArMSwxNCBAQAoraW1wb3J0IGphdmEudXRpbC4qOworY2xhc3MgVGVzdCB7CisKKyAgcHVibGljIHZvaWQgbWV0aG9kKCkgeworICAgIFN0cmluZyBhID0gIkEiOworICAgIDxzZWxlY3Rpb24+QXJyYXlMaXN0PFN0cmluZz4gbGlzdEEgPSBuZXcgQXJyYXlMaXN0PFN0cmluZz4oKTsKKyAgICBsaXN0QS5hZGQoYSk7PC9zZWxlY3Rpb24+CisKKyAgICBBcnJheUxpc3Q8U3RyaW5nPiBsaXN0QiA9IG5ldyBBcnJheUxpc3Q8U3RyaW5nPigpOworICAgIEFycmF5TGlzdDxTdHJpbmc+IGxpc3RDID0gbmV3IEFycmF5TGlzdDxTdHJpbmc+KCk7CisgICAgbGlzdEIuYWRkKCJCIik7CisgICAgbGlzdEMuYWRkKCJDIik7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9DaGVja1F1YWxpZmllck1hcHBpbmdfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL0NoZWNrUXVhbGlmaWVyTWFwcGluZ19hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE4MjYwNWIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9DaGVja1F1YWxpZmllck1hcHBpbmdfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDE4IEBACitpbXBvcnQgamF2YS51dGlsLio7CitjbGFzcyBUZXN0IHsKKworICBwdWJsaWMgdm9pZCBtZXRob2QoKSB7CisgICAgU3RyaW5nIGEgPSAiQSI7CisgICAgICBuZXdNZXRob2QoYSk7CisKKyAgICBBcnJheUxpc3Q8U3RyaW5nPiBsaXN0QiA9IG5ldyBBcnJheUxpc3Q8U3RyaW5nPigpOworICAgIEFycmF5TGlzdDxTdHJpbmc+IGxpc3RDID0gbmV3IEFycmF5TGlzdDxTdHJpbmc+KCk7CisgICAgbGlzdEIuYWRkKCJCIik7CisgICAgbGlzdEMuYWRkKCJDIik7CisgIH0KKworICAgIHByaXZhdGUgdm9pZCBuZXdNZXRob2QoU3RyaW5nIGEpIHsKKyAgICAgICAgQXJyYXlMaXN0PFN0cmluZz4gbGlzdEEgPSBuZXcgQXJyYXlMaXN0PFN0cmluZz4oKTsKKyAgICAgICAgbGlzdEEuYWRkKGEpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9Db2RlRHVwbGljYXRlcy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvQ29kZUR1cGxpY2F0ZXMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yOTFlNjIzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvQ29kZUR1cGxpY2F0ZXMuamF2YQpAQCAtMCwwICsxLDggQEAKK2NsYXNzIEMgeworICAgIHsKKyAgICAgICAgaW50IGk7CisKKyAgICAgICAgPHNlbGVjdGlvbj5TeXN0ZW0ub3V0LnByaW50bG4oaSk7PC9zZWxlY3Rpb24+CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigxMjgpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9Db2RlRHVwbGljYXRlczIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL0NvZGVEdXBsaWNhdGVzMi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBhYzgxYTIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9Db2RlRHVwbGljYXRlczIuamF2YQpAQCAtMCwwICsxLDE1IEBACitjbGFzcyBDIHsKKyAgICB7CisgICAgICAgIE9iamVjdFtdIGFycmF5OworCisgICAgICAgIDxzZWxlY3Rpb24+Zm9yIChpbnQgaSA9IDA7IGkgPCBhcnJheS5sZW5ndGg7IGkrKykgeworICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKGFycmF5W2ldKTsKKyAgICAgICAgfTwvc2VsZWN0aW9uPgorCisKKyAgICAgICAgT2JqZWN0W10gYXJyYXkxOworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGFycmF5MS5sZW5ndGg7IGkrKykgeworICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKGFycmF5W2ldKTsKKyAgICAgICAgfQorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9Db2RlRHVwbGljYXRlczJfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL0NvZGVEdXBsaWNhdGVzMl9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU0YTFiMzkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9Db2RlRHVwbGljYXRlczJfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDE5IEBACitjbGFzcyBDIHsKKyAgICB7CisgICAgICAgIE9iamVjdFtdIGFycmF5OworCisgICAgICAgIG5ld01ldGhvZChhcnJheSk7CisKKworICAgICAgICBPYmplY3RbXSBhcnJheTE7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgYXJyYXkxLmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oYXJyYXlbaV0pOworICAgICAgICB9CisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIG5ld01ldGhvZChPYmplY3RbXSBhcnJheSkgeworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGFycmF5Lmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oYXJyYXlbaV0pOworICAgICAgICB9CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL0NvZGVEdXBsaWNhdGVzMy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvQ29kZUR1cGxpY2F0ZXMzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzA1MzhjNgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL0NvZGVEdXBsaWNhdGVzMy5qYXZhCkBAIC0wLDAgKzEsMTUgQEAKK2NsYXNzIEMgeworICAgIHsKKyAgICAgICAgT2JqZWN0W10gYXJyYXk7CisKKyAgICAgICAgPHNlbGVjdGlvbj5mb3IgKGludCBpID0gMDsgaSA8IGFycmF5Lmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oYXJyYXlbaV0pOworICAgICAgICB9PC9zZWxlY3Rpb24+CisKKworICAgICAgICBPYmplY3RbXSBhcnJheTE7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgYXJyYXkxLmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oYXJyYXkxW2ldKTsKKyAgICAgICAgfQorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9Db2RlRHVwbGljYXRlczNfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL0NvZGVEdXBsaWNhdGVzM19hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYyYjU5ZDEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9Db2RlRHVwbGljYXRlczNfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDE3IEBACitjbGFzcyBDIHsKKyAgICB7CisgICAgICAgIE9iamVjdFtdIGFycmF5OworCisgICAgICAgIG5ld01ldGhvZChhcnJheSk7CisKKworICAgICAgICBPYmplY3RbXSBhcnJheTE7CisgICAgICAgIG5ld01ldGhvZChhcnJheTEpOworICAgIH0KKworICAgIHByaXZhdGUgdm9pZCBuZXdNZXRob2QoT2JqZWN0W10gYXJyYXkpIHsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBhcnJheS5sZW5ndGg7IGkrKykgeworICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKGFycmF5W2ldKTsKKyAgICAgICAgfQorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9Db2RlRHVwbGljYXRlczQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL0NvZGVEdXBsaWNhdGVzNC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYyMmJhZjYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9Db2RlRHVwbGljYXRlczQuamF2YQpAQCAtMCwwICsxLDE1IEBACitjbGFzcyBDIHsKKyAgICB7CisgICAgICAgIE9iamVjdFtdIGFycmF5OworCisgICAgICAgIDxzZWxlY3Rpb24+Zm9yIChpbnQgaSA9IDA7IGkgPCBhcnJheS5sZW5ndGg7IGkrKykgeworICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKGFycmF5W2ldKTsKKyAgICAgICAgfTwvc2VsZWN0aW9uPgorCisKKyAgICAgICAgT2JqZWN0W10gYXJyYXkxOworICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IGFycmF5MS5sZW5ndGg7IGorKykgeworICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKGFycmF5MVtqXSk7CisgICAgICAgIH0KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvQ29kZUR1cGxpY2F0ZXM0X2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9Db2RlRHVwbGljYXRlczRfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMmI1OWQxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvQ29kZUR1cGxpY2F0ZXM0X2FmdGVyLmphdmEKQEAgLTAsMCArMSwxNyBAQAorY2xhc3MgQyB7CisgICAgeworICAgICAgICBPYmplY3RbXSBhcnJheTsKKworICAgICAgICBuZXdNZXRob2QoYXJyYXkpOworCisKKyAgICAgICAgT2JqZWN0W10gYXJyYXkxOworICAgICAgICBuZXdNZXRob2QoYXJyYXkxKTsKKyAgICB9CisKKyAgICBwcml2YXRlIHZvaWQgbmV3TWV0aG9kKE9iamVjdFtdIGFycmF5KSB7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgYXJyYXkubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihhcnJheVtpXSk7CisgICAgICAgIH0KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvQ29kZUR1cGxpY2F0ZXM1LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9Db2RlRHVwbGljYXRlczUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNTE5N2FkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvQ29kZUR1cGxpY2F0ZXM1LmphdmEKQEAgLTAsMCArMSwzMCBAQAorY2xhc3MgRCB7fQorY2xhc3MgQyBleHRlbmRzIEQgeworICAgIGludCBteUZpZWxkID0gMTA7CisgICAgaW50IG15T3RoZXJGaWVsZCA9IDEwOworCisgICAgeworICAgICAgICBpbnQgaSA9IDU7CisgICAgICAgIDxzZWxlY3Rpb24+bXlGaWVsZCA9IGk7CisgICAgICAgIG15T3RoZXJGaWVsZCA9IGk7PC9zZWxlY3Rpb24+CisKKyAgICAgICAgQyBjID0gbmV3IEMoKTsKKworICAgICAgICBjLm15RmllbGQgPSAxMjsKKyAgICAgICAgYy5teU90aGVyRmllbGQgPSAxMjsKKworICAgICAgICBDIGMxID0gbmV3IEMoKTsKKyAgICAgICAgYzEubXlGaWVsZCA9IDEyOworICAgICAgICBteU90aGVyRmllbGQgPSAxMjsKKworCisgICAgICAgIC8vbm90IGEgZHVwbGljYXRlOiBtZXRob2QgaXMgbm90IHZpc2libGUgd2l0aCBxdWFsaWZlciBjbGFzcworICAgICAgICBEIGQxID0gbmV3IEQoKTsKKyAgICAgICAgZDEubXlGaWVsZCA9IDEyOworICAgICAgICBkMS5teU90aGVyRmllbGQgPSAxMjsKKworCisgICAgICAgIGMubXlGaWVsZCA9IDE1OworICAgICAgICBjMS5teU90aGVyRmllbGQgPSAxNTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvQ29kZUR1cGxpY2F0ZXM1X2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9Db2RlRHVwbGljYXRlczVfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNjAzYzNkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvQ29kZUR1cGxpY2F0ZXM1X2FmdGVyLmphdmEKQEAgLTAsMCArMSwzMyBAQAorY2xhc3MgRCB7fQorY2xhc3MgQyBleHRlbmRzIEQgeworICAgIGludCBteUZpZWxkID0gMTA7CisgICAgaW50IG15T3RoZXJGaWVsZCA9IDEwOworCisgICAgeworICAgICAgICBpbnQgaSA9IDU7CisgICAgICAgIG5ld01ldGhvZChpKTsKKworICAgICAgICBDIGMgPSBuZXcgQygpOworCisgICAgICAgIGMubmV3TWV0aG9kKDEyKTsKKworICAgICAgICBDIGMxID0gbmV3IEMoKTsKKyAgICAgICAgYzEubXlGaWVsZCA9IDEyOworICAgICAgICBteU90aGVyRmllbGQgPSAxMjsKKworCisgICAgICAgIC8vbm90IGEgZHVwbGljYXRlOiBtZXRob2QgaXMgbm90IHZpc2libGUgd2l0aCBxdWFsaWZlciBjbGFzcworICAgICAgICBEIGQxID0gbmV3IEQoKTsKKyAgICAgICAgZDEubXlGaWVsZCA9IDEyOworICAgICAgICBkMS5teU90aGVyRmllbGQgPSAxMjsKKworCisgICAgICAgIGMubXlGaWVsZCA9IDE1OworICAgICAgICBjMS5teU90aGVyRmllbGQgPSAxNTsKKyAgICB9CisKKyAgICBwcml2YXRlIHZvaWQgbmV3TWV0aG9kKGludCBpKSB7CisgICAgICAgIG15RmllbGQgPSBpOworICAgICAgICBteU90aGVyRmllbGQgPSBpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9Db2RlRHVwbGljYXRlc1ZhcmFyZ3NTaG91bGROb3RDaGFuZ2VSZXR1cm5UeXBlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9Db2RlRHVwbGljYXRlc1ZhcmFyZ3NTaG91bGROb3RDaGFuZ2VSZXR1cm5UeXBlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDgyODc1YgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL0NvZGVEdXBsaWNhdGVzVmFyYXJnc1Nob3VsZE5vdENoYW5nZVJldHVyblR5cGUuamF2YQpAQCAtMCwwICsxLDEyIEBACitjbGFzcyBUZXN0IHsKKyAgICB2b2lkIGZvbygpIHsKKyAgICAgICAgYmFyKDxzZWxlY3Rpb24+U3RyaW5nLnZhbHVlT2YoMSk8L3NlbGVjdGlvbj4pOworICAgICAgICBiYXooU3RyaW5nLnZhbHVlT2YoMSkpOworICAgIH0KKworICAgIHByaXZhdGUgdm9pZCBiYXIoU3RyaW5nIHMpIHsKKyAgICB9CisKKyAgICBwcml2YXRlIHZvaWQgYmF6KFN0cmluZy4uLiBzKSB7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL0NvZGVEdXBsaWNhdGVzVmFyYXJnc1Nob3VsZE5vdENoYW5nZVJldHVyblR5cGVfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL0NvZGVEdXBsaWNhdGVzVmFyYXJnc1Nob3VsZE5vdENoYW5nZVJldHVyblR5cGVfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NzY1MmM3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvQ29kZUR1cGxpY2F0ZXNWYXJhcmdzU2hvdWxkTm90Q2hhbmdlUmV0dXJuVHlwZV9hZnRlci5qYXZhCkBAIC0wLDAgKzEsMTYgQEAKK2NsYXNzIFRlc3QgeworICAgIHZvaWQgZm9vKCkgeworICAgICAgICBiYXIobmV3TWV0aG9kKCkpOworICAgICAgICBiYXoobmV3TWV0aG9kKCkpOworICAgIH0KKworICAgIHByaXZhdGUgU3RyaW5nIG5ld01ldGhvZCgpIHsKKyAgICAgICAgcmV0dXJuIFN0cmluZy52YWx1ZU9mKDEpOworICAgIH0KKworICAgIHByaXZhdGUgdm9pZCBiYXIoU3RyaW5nIHMpIHsKKyAgICB9CisKKyAgICBwcml2YXRlIHZvaWQgYmF6KFN0cmluZy4uLiBzKSB7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL0NvZGVEdXBsaWNhdGVzV2l0aENvbW1lbnRzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9Db2RlRHVwbGljYXRlc1dpdGhDb21tZW50cy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE4N2VhZDkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9Db2RlRHVwbGljYXRlc1dpdGhDb21tZW50cy5qYXZhCkBAIC0wLDAgKzEsMTkgQEAKK2NsYXNzIFRlc3QgeworICAgIHByaXZhdGUgTGlzdDxPYmplY3Q+IGxpc3QxID0gbmV3IEFycmF5TGlzdDxPYmplY3Q+KCk7CisKKyAgICBwcml2YXRlIExpc3Q8T2JqZWN0PiBsaXN0MiA9IG5ldyBBcnJheUxpc3Q8T2JqZWN0PigpOworCisgICAgcHVibGljIHZvaWQgbWV0aG9kMSgpCisgICAgeworICAgICAgICBsaXN0MS5hZGQobnVsbCk7CisgICAgICAgIC8vIGFkZCB0byBsaXN0MgorICAgICAgICBsaXN0Mi5hZGQodHJ1ZSk7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgbWV0aG9kMigpCisgICAgeworICAgICAgICA8c2VsZWN0aW9uPmxpc3QxLmFkZChudWxsKTsKKyAgICAgICAgLy8gYWRkIHRvIGxpc3QyCisgICAgICAgIGxpc3QyLmFkZCh0cnVlKTs8L3NlbGVjdGlvbj4KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvQ29kZUR1cGxpY2F0ZXNXaXRoQ29tbWVudHNfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL0NvZGVEdXBsaWNhdGVzV2l0aENvbW1lbnRzX2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGYyNjE2NAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL0NvZGVEdXBsaWNhdGVzV2l0aENvbW1lbnRzX2FmdGVyLmphdmEKQEAgLTAsMCArMSwyMSBAQAorY2xhc3MgVGVzdCB7CisgICAgcHJpdmF0ZSBMaXN0PE9iamVjdD4gbGlzdDEgPSBuZXcgQXJyYXlMaXN0PE9iamVjdD4oKTsKKworICAgIHByaXZhdGUgTGlzdDxPYmplY3Q+IGxpc3QyID0gbmV3IEFycmF5TGlzdDxPYmplY3Q+KCk7CisKKyAgICBwdWJsaWMgdm9pZCBtZXRob2QxKCkKKyAgICB7CisgICAgICAgIG5ld01ldGhvZCgpOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIG1ldGhvZDIoKQorICAgIHsKKyAgICAgICAgbmV3TWV0aG9kKCk7CisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIG5ld01ldGhvZCgpIHsKKyAgICAgICAgbGlzdDEuYWRkKG51bGwpOworICAgICAgICAvLyBhZGQgdG8gbGlzdDIKKyAgICAgICAgbGlzdDIuYWRkKHRydWUpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9Db2RlRHVwbGljYXRlc1dpdGhDb250aW51ZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvQ29kZUR1cGxpY2F0ZXNXaXRoQ29udGludWUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNzJhZDg3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvQ29kZUR1cGxpY2F0ZXNXaXRoQ29udGludWUuamF2YQpAQCAtMCwwICsxLDE0IEBACitjbGFzcyBDIHsKKyAgICB2b2lkIGZvbygpIHsKKyAgICAgICAgZm9yKGludCBpID0gMDsgaSA8IDEwOyBpKyspeworICAgICAgICA8c2VsZWN0aW9uPmlmIChpIDwgMTApeyBjb250aW51ZTt9PC9zZWxlY3Rpb24+CisgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIiIpOworICAgICAgICB9CisgICAgfQorCisgICAgeworICAgICAgICBmb3IoaW50IGkgPSAwOyBpIDwgMTA7IGkrKyl7CisgICAgICAgICAgaWYgKGkgPCAxMCl7IGNvbnRpbnVlO30KKyAgICAgICAgfQorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9Db2RlRHVwbGljYXRlc1dpdGhDb250aW51ZU5vUmV0dXJuLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9Db2RlRHVwbGljYXRlc1dpdGhDb250aW51ZU5vUmV0dXJuLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTZjMzM5OQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL0NvZGVEdXBsaWNhdGVzV2l0aENvbnRpbnVlTm9SZXR1cm4uamF2YQpAQCAtMCwwICsxLDEzIEBACitjbGFzcyBDIHsKKyAgICB2b2lkIGZvbygpIHsKKyAgICAgICAgZm9yKGludCBpID0gMDsgaSA8IDEwOyBpKyspeworICAgICAgICA8c2VsZWN0aW9uPmlmIChpIDwgMTApeyBjb250aW51ZTt9PC9zZWxlY3Rpb24+CisgICAgICAgIH0KKyAgICB9CisKKyAgICB7CisgICAgICAgIGZvcihpbnQgaSA9IDA7IGkgPCAxMDsgaSsrKXsKKyAgICAgICAgICBpZiAoaSA8IDEwKXsgY29udGludWU7fQorICAgICAgICB9CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL0NvZGVEdXBsaWNhdGVzV2l0aENvbnRpbnVlTm9SZXR1cm5fYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL0NvZGVEdXBsaWNhdGVzV2l0aENvbnRpbnVlTm9SZXR1cm5fYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNDUwZDk0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvQ29kZUR1cGxpY2F0ZXNXaXRoQ29udGludWVOb1JldHVybl9hZnRlci5qYXZhCkBAIC0wLDAgKzEsMTkgQEAKK2NsYXNzIEMgeworICAgIHZvaWQgZm9vKCkgeworICAgICAgICBmb3IoaW50IGkgPSAwOyBpIDwgMTA7IGkrKyl7CisgICAgICAgICAgICBuZXdNZXRob2QoaSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwcml2YXRlIHZvaWQgbmV3TWV0aG9kKGludCBpKSB7CisgICAgICAgIGlmIChpIDwgMTApeworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQorCisgICAgeworICAgICAgICBmb3IoaW50IGkgPSAwOyBpIDwgMTA7IGkrKyl7CisgICAgICAgICAgICBuZXdNZXRob2QoaSk7CisgICAgICAgIH0KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvQ29kZUR1cGxpY2F0ZXNXaXRoQ29udGludWVfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL0NvZGVEdXBsaWNhdGVzV2l0aENvbnRpbnVlX2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWM3ZmMzNQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL0NvZGVEdXBsaWNhdGVzV2l0aENvbnRpbnVlX2FmdGVyLmphdmEKQEAgLTAsMCArMSwyMSBAQAorY2xhc3MgQyB7CisgICAgdm9pZCBmb28oKSB7CisgICAgICAgIGZvcihpbnQgaSA9IDA7IGkgPCAxMDsgaSsrKXsKKyAgICAgICAgICAgIGlmIChuZXdNZXRob2QoaSkpIGNvbnRpbnVlOworICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCIiKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHByaXZhdGUgYm9vbGVhbiBuZXdNZXRob2QoaW50IGkpIHsKKyAgICAgICAgaWYgKGkgPCAxMCl7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgeworICAgICAgICBmb3IoaW50IGkgPSAwOyBpIDwgMTA7IGkrKyl7CisgICAgICAgICAgICBpZiAobmV3TWV0aG9kKGkpKSBjb250aW51ZTsKKyAgICAgICAgfQorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9Db2RlRHVwbGljYXRlc1dpdGhNdWx0RXhpdFBvaW50cy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvQ29kZUR1cGxpY2F0ZXNXaXRoTXVsdEV4aXRQb2ludHMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMTExZjQ5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvQ29kZUR1cGxpY2F0ZXNXaXRoTXVsdEV4aXRQb2ludHMuamF2YQpAQCAtMCwwICsxLDcgQEAKK2NsYXNzIEEgeworICAgaW50IGZvbyAoT2JqZWN0IG8pIHsKKyAgICAgPHNlbGVjdGlvbj5pZiAobyA9PSBudWxsKSByZXR1cm4gMDs8L3NlbGVjdGlvbj4gIAorICAgICBpZiAobyA9PSBudWxsKSByZXR1cm4gMDsKKyAgICAgcmV0dXJuIDE7CisgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvQ29kZUR1cGxpY2F0ZXNXaXRoTXVsdEV4aXRQb2ludHNfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL0NvZGVEdXBsaWNhdGVzV2l0aE11bHRFeGl0UG9pbnRzX2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTY3OGE5MAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL0NvZGVEdXBsaWNhdGVzV2l0aE11bHRFeGl0UG9pbnRzX2FmdGVyLmphdmEKQEAgLTAsMCArMSwxMiBAQAorY2xhc3MgQSB7CisgICBpbnQgZm9vIChPYmplY3QgbykgeworICAgICAgIGlmIChuZXdNZXRob2QobykpIHJldHVybiAwOworICAgICAgIGlmIChuZXdNZXRob2QobykpIHJldHVybiAwOworICAgICAgIHJldHVybiAxOworICAgfQorCisgICAgcHJpdmF0ZSBib29sZWFuIG5ld01ldGhvZChPYmplY3QgbykgeworICAgICAgICBpZiAobyA9PSBudWxsKSByZXR1cm4gdHJ1ZTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9Db2RlRHVwbGljYXRlc1dpdGhPdXRwdXRWYWx1ZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvQ29kZUR1cGxpY2F0ZXNXaXRoT3V0cHV0VmFsdWUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NGEyZGZhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvQ29kZUR1cGxpY2F0ZXNXaXRoT3V0cHV0VmFsdWUuamF2YQpAQCAtMCwwICsxLDE2IEBACitpbXBvcnQgamF2YS51dGlsLio7CisKK2NsYXNzIEMgeworICAgIHsKKyAgICAgICAgT2JqZWN0W10gYXJyYXk7CisKKyAgICAgICAgPHNlbGVjdGlvbj5MaXN0IGwxID0gbmV3IEFycmF5TGlzdChBcnJheXMuYXNMaXN0KGFycmF5KSk7PC9zZWxlY3Rpb24+CisKKyAgICAgICAgTGlzdCBsMiA9IG5ldyBBcnJheUxpc3QoQXJyYXlzLmFzTGlzdChnZXRPYmplY3RzKCkpKTsKKworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oImwxID0gIiArIGwxICsgIiwgbDIgPSAiICsgbDIpOworICAgIH0KKworICAgIFN0cmluZ1tdIGdldE9iamVjdHMoKSB7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL0NvZGVEdXBsaWNhdGVzV2l0aE91dHB1dFZhbHVlMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvQ29kZUR1cGxpY2F0ZXNXaXRoT3V0cHV0VmFsdWUxLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTQ5YWFmZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL0NvZGVEdXBsaWNhdGVzV2l0aE91dHB1dFZhbHVlMS5qYXZhCkBAIC0wLDAgKzEsMTkgQEAKK2ltcG9ydCBqYXZhLnV0aWwuKjsKKworY2xhc3MgQyB7CisgICAgeworICAgICAgICBPYmplY3RbXSBhcnJheTsKKworICAgICAgICA8c2VsZWN0aW9uPkxpc3QgbDEgPSBudWxsOworICAgICAgICBsMSA9IG5ldyBBcnJheUxpc3QoQXJyYXlzLmFzTGlzdChhcnJheSkpOzwvc2VsZWN0aW9uPgorCisgICAgICAgIExpc3QgbDIgPSBudWxsOworICAgICAgICBsMiA9IG5ldyBBcnJheUxpc3QoQXJyYXlzLmFzTGlzdChnZXRPYmplY3RzKCkpKTsKKworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oImwxID0gIiArIGwxICsgIiwgbDIgPSAiICsgbDIpOworICAgIH0KKworCisgICAgU3RyaW5nW10gZ2V0T2JqZWN0cygpIHsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvQ29kZUR1cGxpY2F0ZXNXaXRoT3V0cHV0VmFsdWUxX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9Db2RlRHVwbGljYXRlc1dpdGhPdXRwdXRWYWx1ZTFfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MWViYzY4MAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL0NvZGVEdXBsaWNhdGVzV2l0aE91dHB1dFZhbHVlMV9hZnRlci5qYXZhCkBAIC0wLDAgKzEsMjMgQEAKK2ltcG9ydCBqYXZhLnV0aWwuKjsKKworY2xhc3MgQyB7CisgICAgeworICAgICAgICBPYmplY3RbXSBhcnJheTsKKworICAgICAgICBMaXN0IGwxID0gbmV3TWV0aG9kKGFycmF5KTsKKworICAgICAgICBMaXN0IGwyID0gbmV3TWV0aG9kKGdldE9iamVjdHMoKSk7CisKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJsMSA9ICIgKyBsMSArICIsIGwyID0gIiArIGwyKTsKKyAgICB9CisKKyAgICBwcml2YXRlIExpc3QgbmV3TWV0aG9kKE9iamVjdFtdIGFycmF5KSB7CisgICAgICAgIExpc3QgbDEgPSBudWxsOworICAgICAgICBsMSA9IG5ldyBBcnJheUxpc3QoQXJyYXlzLmFzTGlzdChhcnJheSkpOworICAgICAgICByZXR1cm4gbDE7CisgICAgfQorCisKKyAgICBTdHJpbmdbXSBnZXRPYmplY3RzKCkgeworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9Db2RlRHVwbGljYXRlc1dpdGhPdXRwdXRWYWx1ZV9hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvQ29kZUR1cGxpY2F0ZXNXaXRoT3V0cHV0VmFsdWVfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45YjBkY2ExCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvQ29kZUR1cGxpY2F0ZXNXaXRoT3V0cHV0VmFsdWVfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDIwIEBACitpbXBvcnQgamF2YS51dGlsLio7CisKK2NsYXNzIEMgeworICAgIHsKKyAgICAgICAgT2JqZWN0W10gYXJyYXk7CisKKyAgICAgICAgTGlzdCBsMSA9IG5ld01ldGhvZChhcnJheSk7CisKKyAgICAgICAgTGlzdCBsMiA9IG5ld01ldGhvZChnZXRPYmplY3RzKCkpOworCisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigibDEgPSAiICsgbDEgKyAiLCBsMiA9ICIgKyBsMik7CisgICAgfQorCisgICAgcHJpdmF0ZSBMaXN0IG5ld01ldGhvZChPYmplY3RbXSBhcnJheSkgeworICAgICAgICByZXR1cm4gbmV3IEFycmF5TGlzdChBcnJheXMuYXNMaXN0KGFycmF5KSk7CisgICAgfQorCisgICAgU3RyaW5nW10gZ2V0T2JqZWN0cygpIHsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvQ29kZUR1cGxpY2F0ZXNXaXRoUmV0dXJuLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9Db2RlRHVwbGljYXRlc1dpdGhSZXR1cm4uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NTE5NjBkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvQ29kZUR1cGxpY2F0ZXNXaXRoUmV0dXJuLmphdmEKQEAgLTAsMCArMSwxMyBAQAorY2xhc3MgQyB7CisgICAgU3RyaW5nIG1ldGhvZChPYmplY3QgbykgeworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4obyk7CisgICAgICAgIDxzZWxlY3Rpb24+SW50ZWdlciBpID0gbmV3IEludGVnZXIoby5oYXNoQ29kZSgpKTsKKyAgICAgICAgcmV0dXJuIGkudG9TdHJpbmcoKTs8L3NlbGVjdGlvbj4KKyAgICB9CisKKyAgICB7CisgICAgICAgIFN0cmluZyBrOworICAgICAgICBJbnRlZ2VyIGogPSBuZXcgSW50ZWdlcihCb29sZWFuLlRSVUUuaGFzaENvZGUoKSk7CisgICAgICAgIGsgPSBqLnRvU3RyaW5nKCk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL0NvZGVEdXBsaWNhdGVzV2l0aFJldHVybjIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL0NvZGVEdXBsaWNhdGVzV2l0aFJldHVybjIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MWI5OTE3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvQ29kZUR1cGxpY2F0ZXNXaXRoUmV0dXJuMi5qYXZhCkBAIC0wLDAgKzEsMTIgQEAKK2NsYXNzIEMgeworICAgIFN0cmluZyBtZXRob2QoT2JqZWN0IG8pIHsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKG8pOworICAgICAgICA8c2VsZWN0aW9uPkludGVnZXIgaSA9IG5ldyBJbnRlZ2VyKG8uaGFzaENvZGUoKSk7CisgICAgICAgIHJldHVybiBpLnRvU3RyaW5nKCk7PC9zZWxlY3Rpb24+CisgICAgfQorCisgICAgeworICAgICAgICBJbnRlZ2VyIGogPSBuZXcgSW50ZWdlcihCb29sZWFuLlRSVUUuaGFzaENvZGUoKSk7CisgICAgICAgIFN0cmluZyBrID0gai50b1N0cmluZygpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9Db2RlRHVwbGljYXRlc1dpdGhSZXR1cm4yX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9Db2RlRHVwbGljYXRlc1dpdGhSZXR1cm4yX2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2NjYzIzOAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL0NvZGVEdXBsaWNhdGVzV2l0aFJldHVybjJfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDE1IEBACitjbGFzcyBDIHsKKyAgICBTdHJpbmcgbWV0aG9kKE9iamVjdCBvKSB7CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihvKTsKKyAgICAgICAgcmV0dXJuIG5ld01ldGhvZChvKTsKKyAgICB9CisKKyAgICBwcml2YXRlIFN0cmluZyBuZXdNZXRob2QoT2JqZWN0IG8pIHsKKyAgICAgICAgSW50ZWdlciBpID0gbmV3IEludGVnZXIoby5oYXNoQ29kZSgpKTsKKyAgICAgICAgcmV0dXJuIGkudG9TdHJpbmcoKTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIFN0cmluZyBrID0gbmV3TWV0aG9kKEJvb2xlYW4uVFJVRSk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL0NvZGVEdXBsaWNhdGVzV2l0aFJldHVybkluQW5vbnltb3VzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9Db2RlRHVwbGljYXRlc1dpdGhSZXR1cm5JbkFub255bW91cy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY4ODEzODIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9Db2RlRHVwbGljYXRlc1dpdGhSZXR1cm5JbkFub255bW91cy5qYXZhCkBAIC0wLDAgKzEsMTUgQEAKK2NsYXNzIFRlc3QxMCB7CisgIHZvaWQgdGVzdCgpIHsKKyAgICA8c2VsZWN0aW9uPm5ldyBPYmplY3QoKSB7CisgICAgICBpbnQgZ2V0KCkgeworICAgICAgICByZXR1cm4gMDsKKyAgICAgIH0KKyAgICB9Ozwvc2VsZWN0aW9uPgorCisgICAgbmV3IE9iamVjdCgpIHsKKyAgICAgIGludCBnZXQoKSB7CisgICAgICAgIHJldHVybiAwOworICAgICAgfQorICAgIH07CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9Db2RlRHVwbGljYXRlc1dpdGhSZXR1cm5JbkFub255bW91c19hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvQ29kZUR1cGxpY2F0ZXNXaXRoUmV0dXJuSW5Bbm9ueW1vdXNfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNjgzYjdhZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL0NvZGVEdXBsaWNhdGVzV2l0aFJldHVybkluQW5vbnltb3VzX2FmdGVyLmphdmEKQEAgLTAsMCArMSwxNSBAQAorY2xhc3MgVGVzdDEwIHsKKyAgdm9pZCB0ZXN0KCkgeworICAgICAgbmV3TWV0aG9kKCk7CisKKyAgICAgIG5ld01ldGhvZCgpOworICB9CisKKyAgICBwcml2YXRlIHZvaWQgbmV3TWV0aG9kKCkgeworICAgICAgICBuZXcgT2JqZWN0KCkgeworICAgICAgICAgIGludCBnZXQoKSB7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICB9CisgICAgICAgIH07CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL0NvZGVEdXBsaWNhdGVzV2l0aFJldHVybl9hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvQ29kZUR1cGxpY2F0ZXNXaXRoUmV0dXJuX2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTkwMWYzYgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL0NvZGVEdXBsaWNhdGVzV2l0aFJldHVybl9hZnRlci5qYXZhCkBAIC0wLDAgKzEsMTYgQEAKK2NsYXNzIEMgeworICAgIFN0cmluZyBtZXRob2QoT2JqZWN0IG8pIHsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKG8pOworICAgICAgICByZXR1cm4gbmV3TWV0aG9kKG8pOworICAgIH0KKworICAgIHByaXZhdGUgU3RyaW5nIG5ld01ldGhvZChPYmplY3QgbykgeworICAgICAgICBJbnRlZ2VyIGkgPSBuZXcgSW50ZWdlcihvLmhhc2hDb2RlKCkpOworICAgICAgICByZXR1cm4gaS50b1N0cmluZygpOworICAgIH0KKworICAgIHsKKyAgICAgICAgU3RyaW5nIGs7CisgICAgICAgIGsgPSBuZXdNZXRob2QoQm9vbGVhbi5UUlVFKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvQ29kZUR1cGxpY2F0ZXNXaXRoU3RhdGljSW5pdGlhbGl6ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL0NvZGVEdXBsaWNhdGVzV2l0aFN0YXRpY0luaXRpYWxpemVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGZiYTU4NQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL0NvZGVEdXBsaWNhdGVzV2l0aFN0YXRpY0luaXRpYWxpemVyLmphdmEKQEAgLTAsMCArMSwxMSBAQAorY2xhc3MgQyB7CisgICBzdGF0aWMgQyBjOworICAgc3RhdGljIHsKKyAgICAgICAgamF2YS51dGlsLkFycmF5TGlzdDxDPiBsID0gbnVsbDsKKyAgICAgICAgbC5hZGQoYyk7CisgICAgfQorCisgICAgdm9pZCBmb28oKSB7CisgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oPHNlbGVjdGlvbj5jPC9zZWxlY3Rpb24+KTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvQ29kZUR1cGxpY2F0ZXNXaXRoU3RhdGljSW5pdGlhbGl6ZXJfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL0NvZGVEdXBsaWNhdGVzV2l0aFN0YXRpY0luaXRpYWxpemVyX2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDdmY2Y0OAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL0NvZGVEdXBsaWNhdGVzV2l0aFN0YXRpY0luaXRpYWxpemVyX2FmdGVyLmphdmEKQEAgLTAsMCArMSwxNSBAQAorY2xhc3MgQyB7CisgICBzdGF0aWMgQyBjOworICAgc3RhdGljIHsKKyAgICAgICAgamF2YS51dGlsLkFycmF5TGlzdDxDPiBsID0gbnVsbDsKKyAgICAgICAgbC5hZGQobmV3TWV0aG9kKCkpOworICAgIH0KKworICAgIHZvaWQgZm9vKCkgeworICAgICAgU3lzdGVtLm91dC5wcmludGxuKG5ld01ldGhvZCgpKTsKKyAgICB9CisKKyAgICBwcml2YXRlIHN0YXRpYyBDIG5ld01ldGhvZCgpIHsKKyAgICAgICAgcmV0dXJuIGM7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL0NvZGVEdXBsaWNhdGVzX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9Db2RlRHVwbGljYXRlc19hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU2YjQ4MWQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9Db2RlRHVwbGljYXRlc19hZnRlci5qYXZhCkBAIC0wLDAgKzEsMTIgQEAKK2NsYXNzIEMgeworICAgIHsKKyAgICAgICAgaW50IGk7CisKKyAgICAgICAgbmV3TWV0aG9kKGkpOworICAgICAgICBuZXdNZXRob2QoMTI4KTsKKyAgICB9CisKKyAgICBwcml2YXRlIHZvaWQgbmV3TWV0aG9kKGludCBpKSB7CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihpKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvQ29tcGxleFR5cGVQYXJhbXMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL0NvbXBsZXhUeXBlUGFyYW1zLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzQyZjIyNgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL0NvbXBsZXhUeXBlUGFyYW1zLmphdmEKQEAgLTAsMCArMSw5IEBACitpbXBvcnQgamF2YS51dGlsLkxpc3Q7CisKK3B1YmxpYyBjbGFzcyBUZXN0Cit7CisgICA8VD4gdm9pZCBmb28oTGlzdDw/IGV4dGVuZHMgTGlzdDxUPj4gdHIpeworICAgICAgPHNlbGVjdGlvbj4gdHIuYWRkKG51bGwpOzwvc2VsZWN0aW9uPgorICAgfQorCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvQ29tcGxleFR5cGVQYXJhbXNfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL0NvbXBsZXhUeXBlUGFyYW1zX2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTI1MzQxOQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL0NvbXBsZXhUeXBlUGFyYW1zX2FmdGVyLmphdmEKQEAgLTAsMCArMSwxMyBAQAoraW1wb3J0IGphdmEudXRpbC5MaXN0OworCitwdWJsaWMgY2xhc3MgVGVzdAoreworICAgPFQ+IHZvaWQgZm9vKExpc3Q8PyBleHRlbmRzIExpc3Q8VD4+IHRyKXsKKyAgICAgICBuZXdNZXRob2QodHIpOworICAgfQorCisgICAgcHJpdmF0ZSA8VD4gdm9pZCBuZXdNZXRob2QoTGlzdDw/IGV4dGVuZHMgTGlzdDxUPj4gdHIpIHsKKyAgICAgICAgdHIuYWRkKG51bGwpOworICAgIH0KKworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL0NvbmZsaWN0aW5nQW5vbnltb3VzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9Db25mbGljdGluZ0Fub255bW91cy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjliOWY0ZTIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9Db25mbGljdGluZ0Fub255bW91cy5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKK3B1YmxpYyBjbGFzcyBUZXN0IHsKKyAgdm9pZCBmb28oKSB7CisgICAgbmV3IEEoKSB7CisgICAgICB2b2lkIGZlKCkgezxzZWxlY3Rpb24+U3lzdGVtLm91dC5wcmludGxuKCIiKTs8L3NlbGVjdGlvbj59CisgICAgfQorICB9Cit9CitjbGFzcyBBIHsKKyAgdm9pZCBuZXdNZXRob2QoKXt9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvQ29uZmxpY3RpbmdBbm9ueW1vdXNfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL0NvbmZsaWN0aW5nQW5vbnltb3VzX2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGIyMDYwMAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL0NvbmZsaWN0aW5nQW5vbnltb3VzX2FmdGVyLmphdmEKQEAgLTAsMCArMSwxNiBAQAorcHVibGljIGNsYXNzIFRlc3QgeworICB2b2lkIGZvbygpIHsKKyAgICBuZXcgQSgpIHsKKyAgICAgIHZvaWQgZmUoKSB7CisgICAgICAgICAgVGVzdC50aGlzLm5ld01ldGhvZCgpOworICAgICAgfQorICAgIH0KKyAgfQorCisgICAgcHJpdmF0ZSB2b2lkIG5ld01ldGhvZCgpIHsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCIiKTsKKyAgICB9Cit9CitjbGFzcyBBIHsKKyAgdm9pZCBuZXdNZXRob2QoKXt9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvQ29uc3RhbnRDb25kaXRpb25zQWZmZWN0aW5nQ29udHJvbEZsb3cuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL0NvbnN0YW50Q29uZGl0aW9uc0FmZmVjdGluZ0NvbnRyb2xGbG93LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjAwZTg0YgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL0NvbnN0YW50Q29uZGl0aW9uc0FmZmVjdGluZ0NvbnRyb2xGbG93LmphdmEKQEAgLTAsMCArMSw5IEBACitwdWJsaWMgLyphYnN0cmFjdCovIGNsYXNzIFdpbGxXb3JrVGVzdCB7CisgICAgaW50IG9wZXJhKCkgeworICAgICAgICBpbnQgaSA9IDA7CisgICAgICAgIDxzZWxlY3Rpb24+CisgICAgICAgIGludCBrOworICAgICAgICBpZiAodHJ1ZSkgayA9IGk7CisgICAgICAgIHJldHVybiBrOzwvc2VsZWN0aW9uPgorICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL0NvbnN0YW50Q29uZGl0aW9uc0FmZmVjdGluZ0NvbnRyb2xGbG93MS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvQ29uc3RhbnRDb25kaXRpb25zQWZmZWN0aW5nQ29udHJvbEZsb3cxLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjAzZmI1NgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL0NvbnN0YW50Q29uZGl0aW9uc0FmZmVjdGluZ0NvbnRyb2xGbG93MS5qYXZhCkBAIC0wLDAgKzEsMTMgQEAKK2NsYXNzIFRlc3QgeworCisgICAgcHVibGljIHZvaWQgdGVzdChib29sZWFuIGIpIHsKKyAgICAgICAgaW50IGEgPSAxOworICAgICAgICBpZiAodHJ1ZSkgeworICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKGEpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgPHNlbGVjdGlvbj5TeXN0ZW0ub3V0LnByaW50bG4oYSk7PC9zZWxlY3Rpb24+CisgICAgICAgIH0KKyAgICB9CisKKworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL0NvbnN0YW50Q29uZGl0aW9uc0FmZmVjdGluZ0NvbnRyb2xGbG93MV9hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvQ29uc3RhbnRDb25kaXRpb25zQWZmZWN0aW5nQ29udHJvbEZsb3cxX2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWQ1N2QxMjUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9Db25zdGFudENvbmRpdGlvbnNBZmZlY3RpbmdDb250cm9sRmxvdzFfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDE3IEBACitjbGFzcyBUZXN0IHsKKworICAgIHB1YmxpYyB2b2lkIHRlc3QoYm9vbGVhbiBiKSB7CisgICAgICAgIGludCBhID0gMTsKKyAgICAgICAgaWYgKHRydWUpIHsKKyAgICAgICAgICAgIG5ld01ldGhvZChhKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG5ld01ldGhvZChhKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHByaXZhdGUgdm9pZCBuZXdNZXRob2QoaW50IGEpIHsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKGEpOworICAgIH0KKworCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvQ29uc3RhbnRDb25kaXRpb25zQWZmZWN0aW5nQ29udHJvbEZsb3dfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL0NvbnN0YW50Q29uZGl0aW9uc0FmZmVjdGluZ0NvbnRyb2xGbG93X2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjg3NjIyNQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL0NvbnN0YW50Q29uZGl0aW9uc0FmZmVjdGluZ0NvbnRyb2xGbG93X2FmdGVyLmphdmEKQEAgLTAsMCArMSwxMyBAQAorcHVibGljIC8qYWJzdHJhY3QqLyBjbGFzcyBXaWxsV29ya1Rlc3QgeworICAgIGludCBvcGVyYSgpIHsKKyAgICAgICAgaW50IGkgPSAwOworCisgICAgICAgIHJldHVybiBuZXdNZXRob2QoaSk7CisgICAgfQorCisgICAgcHJpdmF0ZSBpbnQgbmV3TWV0aG9kKGludCBpKSB7CisgICAgICAgIGludCBrOworICAgICAgICBpZiAodHJ1ZSkgayA9IGk7CisgICAgICAgIHJldHVybiBrOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL0NvbnRpbnVlSW5zaWRlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9Db250aW51ZUluc2lkZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg5MmUyMmQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9Db250aW51ZUluc2lkZS5qYXZhCkBAIC0wLDAgKzEsMTIgQEAKK2NsYXNzIFRlc3QgeworICBTdHJpbmcgZm9vKFN0cmluZ1tdIGFyZ3MpIHsKKyAgICA8c2VsZWN0aW9uPgorICAgIGZvcihTdHJpbmcgYXJnIDogYXJncykgeworICAgICAgaWYgKGFyZyA9PSBudWxsKSBjb250aW51ZTsKKyAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihhcmcpOworICAgIH0KKyAgICBpZiAoYXJncy5sZW5ndGggPT0gMCkgcmV0dXJuIG51bGw7CisgICAgPC9zZWxlY3Rpb24+CisgICAgcmV0dXJuIG51bGw7CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL0NvbnRpbnVlSW5zaWRlX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9Db250aW51ZUluc2lkZV9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE4ZTE3ZjcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9Db250aW51ZUluc2lkZV9hZnRlci5qYXZhCkBAIC0wLDAgKzEsMTcgQEAKK2NsYXNzIFRlc3QgeworICBTdHJpbmcgZm9vKFN0cmluZ1tdIGFyZ3MpIHsKKworICAgICAgaWYgKG5ld01ldGhvZChhcmdzKSkgcmV0dXJuIG51bGw7CisKKyAgICAgIHJldHVybiBudWxsOworICB9CisKKyAgICBwcml2YXRlIGJvb2xlYW4gbmV3TWV0aG9kKFN0cmluZ1tdIGFyZ3MpIHsKKyAgICAgICAgZm9yKFN0cmluZyBhcmcgOiBhcmdzKSB7CisgICAgICAgICAgaWYgKGFyZyA9PSBudWxsKSBjb250aW51ZTsKKyAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oYXJnKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoYXJncy5sZW5ndGggPT0gMCkgcmV0dXJuIHRydWU7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9EaXNhYmxlZFBhcmFtLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9EaXNhYmxlZFBhcmFtLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTY0ZGE3NTYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9EaXNhYmxlZFBhcmFtLmphdmEKQEAgLTAsMCArMSwyMiBAQAorLyoKKyAqIENvcHlyaWdodCAyMDAwLTIwMTIgSmV0QnJhaW5zIHMuci5vLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK2NsYXNzIEZlc3QgeworICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CisgICAgU3RyaW5nIGYgPSAiIjsKKyAgICBTdHJpbmcgYmFyID0gIiIKKyAgICA8c2VsZWN0aW9uPiBTeXN0ZW0ub3V0LnByaW50bG4oZiArICI7IiArIGJhcik7PC9zZWxlY3Rpb24+CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9EaXNhYmxlZFBhcmFtX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9EaXNhYmxlZFBhcmFtX2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzgzZWIyNwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL0Rpc2FibGVkUGFyYW1fYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDI3IEBACisvKgorICogQ29weXJpZ2h0IDIwMDAtMjAxMiBKZXRCcmFpbnMgcy5yLm8uCisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworY2xhc3MgRmVzdCB7CisgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKKyAgICBTdHJpbmcgZiA9ICIiOworICAgIFN0cmluZyBiYXIgPSAiIgorICAgICAgbmV3TWV0aG9kKGJhcik7CisgIH0KKworICAgIHByaXZhdGUgc3RhdGljIHZvaWQgbmV3TWV0aG9kKFN0cmluZyBiYXIpIHsKKyAgICAgICAgU3RyaW5nIGYgPSA7CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihmICsgIjsiICsgYmFyKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvRXhpdFBvaW50czEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL0V4aXRQb2ludHMxLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzY0MzZkYwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL0V4aXRQb2ludHMxLmphdmEKQEAgLTAsMCArMSw5IEBACitjbGFzcyBUZXN0eworICBwdWJsaWMgdm9pZCBmb28oKSB7CisgICAgaWYgKGNvbmQxKXsKKyAgICAgIDxzZWxlY3Rpb24+aWYgKGNvbmQyKSByZXR1cm47PC9zZWxlY3Rpb24+CisgICAgfQorICAgIGVsc2UgaWYgKGNvbmQzKXsKKyAgICB9CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL0V4aXRQb2ludHMyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9FeGl0UG9pbnRzMi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQyOTFkMjQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9FeGl0UG9pbnRzMi5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKK2NsYXNzIFRlc3R7CisgIHB1YmxpYyB2b2lkIGZvbygpIHsKKyAgICBpZiAoY29uZDEpeworICAgICAgPHNlbGVjdGlvbj5pZiAoY29uZDIpIHJldHVybjs8L3NlbGVjdGlvbj4KKyAgICB9CisgICAgZWxzZSBpZiAoY29uZDMpeworICAgIH0KKyAgICB4KCk7CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL0V4aXRQb2ludHMyX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9FeGl0UG9pbnRzMl9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE5NmJjZGUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9FeGl0UG9pbnRzMl9hZnRlci5qYXZhCkBAIC0wLDAgKzEsMTUgQEAKK2NsYXNzIFRlc3R7CisgIHB1YmxpYyB2b2lkIGZvbygpIHsKKyAgICBpZiAoY29uZDEpeworICAgICAgICBpZiAobmV3TWV0aG9kKCkpIHJldHVybjsKKyAgICB9CisgICAgZWxzZSBpZiAoY29uZDMpeworICAgIH0KKyAgICB4KCk7CisgIH0KKworICAgIHByaXZhdGUgYm9vbGVhbiBuZXdNZXRob2QoKSB7CisgICAgICAgIGlmIChjb25kMikgcmV0dXJuIHRydWU7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9FeGl0UG9pbnRzMy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvRXhpdFBvaW50czMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hY2MzMTRiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvRXhpdFBvaW50czMuamF2YQpAQCAtMCwwICsxLDEwIEBACitjbGFzcyBUZXN0eworICB2b2lkIGZvbygpIHsKKyAgICBpZiAoY29uZDEpeyAgICAgIAorICAgICAgPHNlbGVjdGlvbj5pZiAoY29uZDIpIHJldHVybjsKKyAgICAgIHgoKTs8L3NlbGVjdGlvbj4KKyAgICB9CisgICAgZWxzZSBpZiAoY29uZDMpeworICAgIH0KKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvRXhpdFBvaW50czQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL0V4aXRQb2ludHM0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmM2YzM5NQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL0V4aXRQb2ludHM0LmphdmEKQEAgLTAsMCArMSwxMiBAQAorY2xhc3MgVGVzdCB7CisgICAgaW50IG1ldGhvZCgpIHsKKyAgICAgICAgIDxzZWxlY3Rpb24+dHJ5IHsKKyAgICAgICAgICAgICBpZihjb25kMSkgcmV0dXJuIDA7CisgICAgICAgICAgICAgZWxzZSBpZihjb25kMikgcmV0dXJuIDE7CisgICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJUZXh0Iik7CisgICAgICAgICB9IGZpbmFsbHkgeyAgICAgICAgICAgCisgICAgICAgICAgICAgZG9Tb21ldGhpbmcoKTsKKyAgICAgICAgIH08L3NlbGVjdGlvbj4KKyAgICAgICAgIHJldHVybiAxMjsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvRXhpdFBvaW50czUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL0V4aXRQb2ludHM1LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTU0NzgyYgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL0V4aXRQb2ludHM1LmphdmEKQEAgLTAsMCArMSwxMiBAQAorY2xhc3MgVGVzdCB7CisgICAgaW50IG1ldGhvZCgpIHsKKyAgICAgICAgIDxzZWxlY3Rpb24+dHJ5IHsKKyAgICAgICAgICAgICBpZihjb25kMSkgcmV0dXJuIDA7CisgICAgICAgICAgICAgZWxzZSBpZihjb25kMikgcmV0dXJuIDE7CisgICAgICAgICAgICAgcmV0dXJuIDI3OworICAgICAgICAgfSBmaW5hbGx5IHsgICAgICAgICAgIAorICAgICAgICAgICAgIGRvU29tZXRoaW5nKCk7CisgICAgICAgICB9PC9zZWxlY3Rpb24+CisgICAgICAgICByZXR1cm4gMTI7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL0V4aXRQb2ludHM1X2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9FeGl0UG9pbnRzNV9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIxN2MyOWQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9FeGl0UG9pbnRzNV9hZnRlci5qYXZhCkBAIC0wLDAgKzEsMTYgQEAKK2NsYXNzIFRlc3QgeworICAgIGludCBtZXRob2QoKSB7CisgICAgICAgIHJldHVybiBuZXdNZXRob2QoKTsKKyAgICAgICAgcmV0dXJuIDEyOworICAgIH0KKworICAgIHByaXZhdGUgaW50IG5ld01ldGhvZCgpIHsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGlmKGNvbmQxKSByZXR1cm4gMDsKKyAgICAgICAgICAgIGVsc2UgaWYoY29uZDIpIHJldHVybiAxOworICAgICAgICAgICAgcmV0dXJuIDI3OworICAgICAgICB9IGZpbmFsbHkgeyAgICAgICAgICAgCisgICAgICAgICAgICBkb1NvbWV0aGluZygpOworICAgICAgICB9CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL0V4aXRQb2ludHM2LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9FeGl0UG9pbnRzNi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIwODg3Y2I3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvRXhpdFBvaW50czYuamF2YQpAQCAtMCwwICsxLDEwIEBACisvLyBtdWx0aXBsZSBvdXRwdXQgdmFsdWVzOiBvbmUgZm9yIG1vZGVsbGluZyBjb250cm9sIGZsb3cgKyBvdXRwdXQgdmFsdWUKK2NsYXNzIEsgeworICAgIGludCBmKE9iamVjdCBvKSB7CisgICAgICAgIDxzZWxlY3Rpb24+aWYgKG8gPT0gbnVsbCkgcmV0dXJuIDA7CisgICAgICAgIG8gPSBuZXcgT2JqZWN0KCk7PC9zZWxlY3Rpb24+CisgICAgICAgIE9iamVjdCBvbyA9IG87CisKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvRXhpdFBvaW50czcuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL0V4aXRQb2ludHM3LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzRhODk3NQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL0V4aXRQb2ludHM3LmphdmEKQEAgLTAsMCArMSwyNyBAQAorY2xhc3MgRm9vIHsKKyAgIHB1YmxpYyBPYmplY3QgY3JlYXRlQmVhbihPYmplY3QgcGFyZW50KSB7CisgICAgdHJ5IHsKKyAgICAgIDxzZWxlY3Rpb24+aWYgKHBhcmVudCAhPSBudWxsKSB7CisgICAgICAgIHRyeSB7CisgICAgICAgIH0KKyAgICAgICAgY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgcmV0dXJuIG51bGw7CisgICAgICAgIH0KKyAgICAgIH0KKworCisgICAgICBPYmplY3QgdGFnID0gbnVsbDs8L3NlbGVjdGlvbj4KKworICAgICAgdGFnID0gZm9vKHRhZyk7CisgICAgfQorICAgIGNhdGNoIChFeGNlcHRpb24gZSkgeworICAgICAgdGhyb3cgbmV3IFJ1bnRpbWVFeGNlcHRpb24oZSk7CisgICAgfQorCisgICAgcmV0dXJuIG51bGw7CisgIH0KKworICBwcml2YXRlIE9iamVjdCBmb28oZmluYWwgT2JqZWN0IHRhZykgeworICAgIHJldHVybiBudWxsOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvRXhpdFBvaW50czguamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL0V4aXRQb2ludHM4LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2RlZTBiZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL0V4aXRQb2ludHM4LmphdmEKQEAgLTAsMCArMSwxMCBAQAorY2xhc3MgQyB7CisgICAgcHVibGljIE9iamVjdCBtKCkgeworICAgICAgICA8c2VsZWN0aW9uPmZvciAoT2JqZWN0IG8gOiBuZXcgQXJyYXlMaXN0PE9iamVjdD4oKSkgeworICAgICAgICAgICAgaWYgKG8gIT0gbnVsbCkgeworICAgICAgICAgICAgICAgIHJldHVybiBvOworICAgICAgICAgICAgfQorICAgICAgICB9PC9zZWxlY3Rpb24+CisgICAgICAgIHJldHVybiBudWxsOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9FeGl0UG9pbnRzOS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvRXhpdFBvaW50czkuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNDU1OGE0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvRXhpdFBvaW50czkuamF2YQpAQCAtMCwwICsxLDI1IEBACitjbGFzcyBSZXN1bHQgeworICAgIHByaXZhdGUgU3RyaW5nIF9tZXNzYWdlOworCisgICAgcHVibGljIFJlc3VsdChTdHJpbmcgX21lc3NhZ2UpIHsKKyAgICAgICAgdGhpcy5fbWVzc2FnZSA9IF9tZXNzYWdlOworICAgIH0KK30KKworY2xhc3MgTWFpbiB7CisgICAgcHVibGljIHN0YXRpYyBSZXN1bHQgZG9JdChTdHJpbmcgbmFtZSkgeworICAgICAgICBSZXN1bHQgcmVzdWx0OworCisgICAgICAgIDxzZWxlY3Rpb24+aWYgKG5hbWUgPT0gbnVsbCkgeworICAgICAgICAgICAgcmVzdWx0ID0gbmV3IFJlc3VsdCgiTmFtZSBpcyBudWxsIik7CisgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICB9CisgICAgICAgIGlmIChuYW1lLmxlbmd0aCgpID09IDApIHsKKyAgICAgICAgICAgIHJlc3VsdCA9IG5ldyBSZXN1bHQoIk5hbWUgaXMgZW1wdHkiKTsKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIH08L3NlbGVjdGlvbj4KKworICAgICAgICByZXN1bHQgPSBuZXcgUmVzdWx0KCJOYW1lIGlzICIgKyBuYW1lKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvRXhpdFBvaW50c0luc2lkZUxvb3AuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL0V4aXRQb2ludHNJbnNpZGVMb29wLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTM4YzY2ZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL0V4aXRQb2ludHNJbnNpZGVMb29wLmphdmEKQEAgLTAsMCArMSw5IEBACitjbGFzcyBzIHsKKyAgICB2b2lkIGYoYm9vbGVhbiBiKSB7CisgICAgICAgIGZvciAoOzspIHsKKyAgICAgICAgICAgIDxzZWxlY3Rpb24+aWYgKGIpIHsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH08L3NlbGVjdGlvbj4KKyAgICAgICAgfQorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9FeHByZXNzaW9uRHVwbGljYXRlcy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvRXhwcmVzc2lvbkR1cGxpY2F0ZXMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZTE2M2RjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvRXhwcmVzc2lvbkR1cGxpY2F0ZXMuamF2YQpAQCAtMCwwICsxLDEwIEBACitpbXBvcnQgamF2YS51dGlsLio7CisKK2NsYXNzIEMgeworICAgIHsKKyAgICAgICAgT2JqZWN0W10gbyA9IG51bGw7CisgICAgICAgIExpc3QgbCA9IDxzZWxlY3Rpb24+bmV3IEFycmF5TGlzdChBcnJheXMuYXNMaXN0KG8pKTwvc2VsZWN0aW9uPjsKKworICAgICAgICBMaXN0IGwxID0gbmV3IEFycmF5TGlzdChBcnJheXMuYXNMaXN0KG5ldyBPYmplY3RbMF0pKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvRXhwcmVzc2lvbkR1cGxpY2F0ZXNfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL0V4cHJlc3Npb25EdXBsaWNhdGVzX2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTU2NGFiMQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL0V4cHJlc3Npb25EdXBsaWNhdGVzX2FmdGVyLmphdmEKQEAgLTAsMCArMSwxNCBAQAoraW1wb3J0IGphdmEudXRpbC4qOworCitjbGFzcyBDIHsKKyAgICB7CisgICAgICAgIE9iamVjdFtdIG8gPSBudWxsOworICAgICAgICBMaXN0IGwgPSBuZXdNZXRob2Qobyk7CisKKyAgICAgICAgTGlzdCBsMSA9IG5ld01ldGhvZChuZXcgT2JqZWN0WzBdKTsKKyAgICB9CisKKyAgICBwcml2YXRlIEFycmF5TGlzdCBuZXdNZXRob2QoT2JqZWN0W10gbykgeworICAgICAgICByZXR1cm4gbmV3IEFycmF5TGlzdChBcnJheXMuYXNMaXN0KG8pKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvRXh0cmFjdEFzc2lnbm1lbnRFeHByZXNzaW9uLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9FeHRyYWN0QXNzaWdubWVudEV4cHJlc3Npb24uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wM2IzM2YwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvRXh0cmFjdEFzc2lnbm1lbnRFeHByZXNzaW9uLmphdmEKQEAgLTAsMCArMSw2IEBACitjbGFzcyBGb28geworICB2b2lkIGZvbygpIHsKKyAgICBpbnQgeCA9IDA7CisgICAgaW50IHkgPSA8c2VsZWN0aW9uPnggPSAxPC9zZWxlY3Rpb24+OworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvRXh0cmFjdEFzc2lnbm1lbnRFeHByZXNzaW9uRnJvbVN0YXRlbWVudC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvRXh0cmFjdEFzc2lnbm1lbnRFeHByZXNzaW9uRnJvbVN0YXRlbWVudC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJhN2JjODUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9FeHRyYWN0QXNzaWdubWVudEV4cHJlc3Npb25Gcm9tU3RhdGVtZW50LmphdmEKQEAgLTAsMCArMSw3IEBACisKK2NsYXNzIEZvbyB7CisgIHZvaWQgZm9vKCkgeworICAgIGludCB4ID0gMDsKKyAgICA8c2VsZWN0aW9uPnggPSAxPC9zZWxlY3Rpb24+OworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvRXh0cmFjdEFzc2lnbm1lbnRFeHByZXNzaW9uRnJvbVN0YXRlbWVudF9hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvRXh0cmFjdEFzc2lnbm1lbnRFeHByZXNzaW9uRnJvbVN0YXRlbWVudF9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQxOWEwOTkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9FeHRyYWN0QXNzaWdubWVudEV4cHJlc3Npb25Gcm9tU3RhdGVtZW50X2FmdGVyLmphdmEKQEAgLTAsMCArMSwxMiBAQAorCitjbGFzcyBGb28geworICB2b2lkIGZvbygpIHsKKyAgICBpbnQgeCA9IDA7CisgICAgICBuZXdNZXRob2QoKTsKKyAgfQorCisgICAgcHJpdmF0ZSB2b2lkIG5ld01ldGhvZCgpIHsKKyAgICAgICAgaW50IHg7CisgICAgICAgIHggPSAxOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9FeHRyYWN0QXNzaWdubWVudEV4cHJlc3Npb25fYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL0V4dHJhY3RBc3NpZ25tZW50RXhwcmVzc2lvbl9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ2OGNhYTkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9FeHRyYWN0QXNzaWdubWVudEV4cHJlc3Npb25fYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDExIEBACitjbGFzcyBGb28geworICB2b2lkIGZvbygpIHsKKyAgICBpbnQgeCA9IDA7CisgICAgaW50IHkgPSB4ID0gbmV3TWV0aG9kKCk7CisgIH0KKworICAgIHByaXZhdGUgaW50IG5ld01ldGhvZCgpIHsKKyAgICAgICAgaW50IHg7CisgICAgICAgIHJldHVybiB4ID0gMTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvRXh0cmFjdEZyb21Bbm9ueW1vdXMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL0V4dHJhY3RGcm9tQW5vbnltb3VzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmZmMTQ1NAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL0V4dHJhY3RGcm9tQW5vbnltb3VzLmphdmEKQEAgLTAsMCArMSw5IEBACitjbGFzcyBUZXN0IHsKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbigpIHsKKyAgICAgICAgbmV3IFJ1bm5hYmxlKCkgeworICAgICAgICAgICAgcHVibGljIHZvaWQgcnVuKCkgeworICAgICAgICAgICAgICAgIDxzZWxlY3Rpb24+U3lzdGVtLm91dDwvc2VsZWN0aW9uPi5wcmludGxuKCJUZXh0Iik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvRXh0cmFjdEZyb21Bbm9ueW1vdXNfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL0V4dHJhY3RGcm9tQW5vbnltb3VzX2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTRjY2Q1YQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL0V4dHJhY3RGcm9tQW5vbnltb3VzX2FmdGVyLmphdmEKQEAgLTAsMCArMSwxNSBAQAoraW1wb3J0IGphdmEuaW8uUHJpbnRTdHJlYW07CisKK2NsYXNzIFRlc3QgeworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKCkgeworICAgICAgICBuZXcgUnVubmFibGUoKSB7CisgICAgICAgICAgICBwdWJsaWMgdm9pZCBydW4oKSB7CisgICAgICAgICAgICAgICAgbmV3TWV0aG9kKCkucHJpbnRsbigiVGV4dCIpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgcHJpdmF0ZSBzdGF0aWMgUHJpbnRTdHJlYW0gbmV3TWV0aG9kKCkgeworICAgICAgICByZXR1cm4gU3lzdGVtLm91dDsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvRXh0cmFjdEZyb21Db2RlQmxvY2suamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL0V4dHJhY3RGcm9tQ29kZUJsb2NrLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjBkMzFkOAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL0V4dHJhY3RGcm9tQ29kZUJsb2NrLmphdmEKQEAgLTAsMCArMSwxMCBAQAorY2xhc3MgVGVzdCB7CisgICAgdm9pZCBtZXRob2QoKSB7CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiMSIpOworICAgICAgICA8c2VsZWN0aW9uPnsKKyAgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIjIiKTsKKyAgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIjMiKTsKKyAgICAgICAgfTwvc2VsZWN0aW9uPgorICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIjQiKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvRXh0cmFjdEZyb21Db2RlQmxvY2tfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL0V4dHJhY3RGcm9tQ29kZUJsb2NrX2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTA1NTM0NAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL0V4dHJhY3RGcm9tQ29kZUJsb2NrX2FmdGVyLmphdmEKQEAgLTAsMCArMSwxMiBAQAorY2xhc3MgVGVzdCB7CisgICAgdm9pZCBtZXRob2QoKSB7CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiMSIpOworICAgICAgICBuZXdNZXRob2QoKTsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCI0Iik7CisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIG5ld01ldGhvZCgpIHsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCIyIik7CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiMyIpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9FeHRyYWN0RnJvbUZpbmFsbHkuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL0V4dHJhY3RGcm9tRmluYWxseS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYzOThjMzEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9FeHRyYWN0RnJvbUZpbmFsbHkuamF2YQpAQCAtMCwwICsxLDExIEBACitwdWJsaWMgY2xhc3MgVGVzdCB7CisgICAgaW50IG1ldGhvZCgpIHsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiVGV4dCIpOworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0gZmluYWxseSB7CisgICAgICAgICAgICA8c2VsZWN0aW9uPlN5c3RlbS5vdXQucHJpbnRsbigiISEhIik7CisgICAgICAgICAgICByZXR1cm4gMTs8L3NlbGVjdGlvbj4KKyAgICAgICAgfQorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9FeHRyYWN0RnJvbUZpbmFsbHlfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL0V4dHJhY3RGcm9tRmluYWxseV9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU2MWNjMDAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9FeHRyYWN0RnJvbUZpbmFsbHlfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDE1IEBACitwdWJsaWMgY2xhc3MgVGVzdCB7CisgICAgaW50IG1ldGhvZCgpIHsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiVGV4dCIpOworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0gZmluYWxseSB7CisgICAgICAgICAgICByZXR1cm4gbmV3TWV0aG9kKCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwcml2YXRlIGludCBuZXdNZXRob2QoKSB7CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiISEhIik7CisgICAgICAgIHJldHVybiAxOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9FeHRyYWN0RnJvbVRyeUZpbmFsbHkuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL0V4dHJhY3RGcm9tVHJ5RmluYWxseS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNhODY2YzEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9FeHRyYWN0RnJvbVRyeUZpbmFsbHkuamF2YQpAQCAtMCwwICsxLDEwIEBACitwdWJsaWMgY2xhc3MgUyB7CisgIHsKKyAgICBTdHJpbmcgczsKKyAgICB0cnkgeworICAgICAgPHNlbGVjdGlvbj5zID0gIiI7PC9zZWxlY3Rpb24+CisgICAgfSBmaW5hbGx5IHsKKyAgICB9CisgICAgU3lzdGVtLm91dC5wcmludChzKTsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvRXh0cmFjdEZyb21UcnlGaW5hbGx5Mi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvRXh0cmFjdEZyb21UcnlGaW5hbGx5Mi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE1YmY4YzYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9FeHRyYWN0RnJvbVRyeUZpbmFsbHkyLmphdmEKQEAgLTAsMCArMSwxMiBAQAorY2xhc3MgVGVzdGVyIHsKKyAgICBTdHJpbmcgeCgpIHsKKyAgICAgICAgU3RyaW5nIG8gPSAiIjsKKyAgICAgICAgPHNlbGVjdGlvbj5TdHJpbmcgczsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIHMgPSBvOworICAgICAgICB9CisgICAgICAgIGZpbmFsbHkgeworICAgICAgICB9CisgICAgICAgIHJldHVybiBzOzwvc2VsZWN0aW9uPgorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9FeHRyYWN0RnJvbVRyeUZpbmFsbHkyX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9FeHRyYWN0RnJvbVRyeUZpbmFsbHkyX2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTQyNzRmMQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL0V4dHJhY3RGcm9tVHJ5RmluYWxseTJfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDE2IEBACitjbGFzcyBUZXN0ZXIgeworICAgIFN0cmluZyB4KCkgeworICAgICAgICBTdHJpbmcgbyA9ICIiOworICAgICAgICByZXR1cm4gbmV3TWV0aG9kKG8pOworICAgIH0KKworICAgIHByaXZhdGUgU3RyaW5nIG5ld01ldGhvZChTdHJpbmcgbykgeworICAgICAgICBTdHJpbmcgczsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIHMgPSBvOworICAgICAgICB9CisgICAgICAgIGZpbmFsbHkgeworICAgICAgICB9CisgICAgICAgIHJldHVybiBzOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9FeHRyYWN0RnJvbVRyeUZpbmFsbHlfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL0V4dHJhY3RGcm9tVHJ5RmluYWxseV9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUyOTAwY2UKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9FeHRyYWN0RnJvbVRyeUZpbmFsbHlfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDE2IEBACitwdWJsaWMgY2xhc3MgUyB7CisgIHsKKyAgICBTdHJpbmcgczsKKyAgICB0cnkgeworICAgICAgICBzID0gbmV3TWV0aG9kKCk7CisgICAgfSBmaW5hbGx5IHsKKyAgICB9CisgICAgU3lzdGVtLm91dC5wcmludChzKTsKKyAgfQorCisgICAgcHJpdmF0ZSBTdHJpbmcgbmV3TWV0aG9kKCkgeworICAgICAgICBTdHJpbmcgczsKKyAgICAgICAgcyA9ICIiOworICAgICAgICByZXR1cm4gczsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9FeHRyYWN0V2l0aExlYWRpbmdDb21tZW50LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9FeHRyYWN0V2l0aExlYWRpbmdDb21tZW50LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTI1MTlkZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL0V4dHJhY3RXaXRoTGVhZGluZ0NvbW1lbnQuamF2YQpAQCAtMCwwICsxLDEyIEBACitjbGFzcyBUZXN0IHsKKyAgICBwdWJsaWMgdm9pZCBtZXRob2QyKCkgeworICAgICAgaWYgKHRydWUpIHsKKyAgICAgICAgPHNlbGVjdGlvbj4KKyAgICAgICAgLy8gYWRkIHRvIGxpc3QyCisgICAgICAgIGxpc3QyLmFkZCh0cnVlKTs8L3NlbGVjdGlvbj4KKworICAgICAgfSBlbHNlIHsKKworICAgICAgfQorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9FeHRyYWN0V2l0aExlYWRpbmdDb21tZW50X2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9FeHRyYWN0V2l0aExlYWRpbmdDb21tZW50X2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODgzM2EyOAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL0V4dHJhY3RXaXRoTGVhZGluZ0NvbW1lbnRfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDE2IEBACitjbGFzcyBUZXN0IHsKKyAgICBwdWJsaWMgdm9pZCBtZXRob2QyKCkgeworICAgICAgaWYgKHRydWUpIHsKKyAgICAgICAgICBuZXdNZXRob2QoKTsKKworCisgICAgICB9IGVsc2UgeworCisgICAgICB9CisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIG5ld01ldGhvZCgpIHsKKyAgICAgICAgLy8gYWRkIHRvIGxpc3QyCisgICAgICAgIGxpc3QyLmFkZCh0cnVlKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvRmluYWxPdXRwdXRWYXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL0ZpbmFsT3V0cHV0VmFyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjE3NThlZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL0ZpbmFsT3V0cHV0VmFyLmphdmEKQEAgLTAsMCArMSw4IEBACitjbGFzcyBDIHsKKyAgICB7CisgICAgICAgIDxzZWxlY3Rpb24+ZmluYWwgaW50IGkgPSAxMjg7PC9zZWxlY3Rpb24+CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiaSA9ICIgKyBpKTsKKworICAgICAgICBmaW5hbCBpbnQgaiA9IDEyODsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvRmluYWxPdXRwdXRWYXJfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL0ZpbmFsT3V0cHV0VmFyX2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjFhYjY4ZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL0ZpbmFsT3V0cHV0VmFyX2FmdGVyLmphdmEKQEAgLTAsMCArMSwxMiBAQAorY2xhc3MgQyB7CisgICAgeworICAgICAgICBmaW5hbCBpbnQgaSA9IG5ld01ldGhvZCgpOworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oImkgPSAiICsgaSk7CisKKyAgICAgICAgZmluYWwgaW50IGogPSBuZXdNZXRob2QoKTsKKyAgICB9CisKKyAgICBwcml2YXRlIGludCBuZXdNZXRob2QoKSB7CisgICAgICAgIHJldHVybiAxMjg7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL0ZpbmFsUGFyYW1Vc2VkSW5zaWRlQW5vbi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvRmluYWxQYXJhbVVzZWRJbnNpZGVBbm9uLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTg5ODc2NAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL0ZpbmFsUGFyYW1Vc2VkSW5zaWRlQW5vbi5qYXZhCkBAIC0wLDAgKzEsMTEgQEAKK3B1YmxpYyBjbGFzcyBUZXN0IHsKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CisgICAgICAgIGZpbmFsIFN0cmluZyBzID0gImR1ZGUiOworICAgICAgICA8c2VsZWN0aW9uPlJ1bm5hYmxlIHJ1bm5hYmxlID0gbmV3IFJ1bm5hYmxlKCkgeworICAgICAgICAgICAgcHVibGljIHZvaWQgcnVuKCkgeworICAgICAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihzKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKyAgICAgICAgbmV3IFRocmVhZChydW5uYWJsZSkuc3RhcnQoKTs8L3NlbGVjdGlvbj4KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvRmluYWxQYXJhbVVzZWRJbnNpZGVBbm9uX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9GaW5hbFBhcmFtVXNlZEluc2lkZUFub25fYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yODMxNjFhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvRmluYWxQYXJhbVVzZWRJbnNpZGVBbm9uX2FmdGVyLmphdmEKQEAgLTAsMCArMSwxNSBAQAorcHVibGljIGNsYXNzIFRlc3QgeworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKKyAgICAgICAgZmluYWwgU3RyaW5nIHMgPSAiZHVkZSI7CisgICAgICAgIG5ld01ldGhvZChzKTsKKyAgICB9CisKKyAgICBwcml2YXRlIHN0YXRpYyB2b2lkIG5ld01ldGhvZChmaW5hbCBTdHJpbmcgcykgeworICAgICAgICBSdW5uYWJsZSBydW5uYWJsZSA9IG5ldyBSdW5uYWJsZSgpIHsKKyAgICAgICAgICAgIHB1YmxpYyB2b2lkIHJ1bigpIHsKKyAgICAgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4ocyk7CisgICAgICAgICAgICB9CisgICAgICAgIH07CisgICAgICAgIG5ldyBUaHJlYWQocnVubmFibGUpLnN0YXJ0KCk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL0ZpbmFsUGFyYW1zNExvY2FsQ2xhc3Nlcy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvRmluYWxQYXJhbXM0TG9jYWxDbGFzc2VzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGYxY2JlNAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL0ZpbmFsUGFyYW1zNExvY2FsQ2xhc3Nlcy5qYXZhCkBAIC0wLDAgKzEsMTEgQEAKK2NsYXNzIFRlc3QgeworCisgICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgeworICAgICAgICBmaW5hbCBTdHJpbmcgcyA9ICJ0ZXh0IjsKKyAgICAgICAgPHNlbGVjdGlvbj5jbGFzcyBBIHsKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4ocyk7CisgICAgICAgICAgICB9CisgICAgICAgIH08L3NlbGVjdGlvbj4KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvRmluYWxQYXJhbXM0TG9jYWxDbGFzc2VzX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9GaW5hbFBhcmFtczRMb2NhbENsYXNzZXNfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lODg3ZDJlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvRmluYWxQYXJhbXM0TG9jYWxDbGFzc2VzX2FmdGVyLmphdmEKQEAgLTAsMCArMSwxNSBAQAorY2xhc3MgVGVzdCB7CisKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CisgICAgICAgIGZpbmFsIFN0cmluZyBzID0gInRleHQiOworICAgICAgICBuZXdNZXRob2Qocyk7CisgICAgfQorCisgICAgcHJpdmF0ZSBzdGF0aWMgdm9pZCBuZXdNZXRob2QoZmluYWwgU3RyaW5nIHMpIHsKKyAgICAgICAgY2xhc3MgQSB7CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKHMpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL0ZpbmFsbHkuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL0ZpbmFsbHkuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYjJiMTJkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvRmluYWxseS5qYXZhCkBAIC0wLDAgKzEsMjIgQEAKK2NsYXNzIFRlc3QgeworICAgIHZvaWQgbWV0aG9kKCl7ICAgICAgICAgCisgICAgICAgIDxzZWxlY3Rpb24+dHJ5IHsKKyAgICAgICAgICAgIHByb2Nlc3Mud2FpdEZvcigpOworICAgICAgICB9CisgICAgICAgIGNhdGNoKEludGVycnVwdGVkRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIHByb2Nlc3MuZGVzdHJveSgpOworICAgICAgICB9CisgICAgICAgIGZpbmFsbHkgeworICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICBteVBhcnNpbmdUaHJlYWQuam9pbigpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgY2F0Y2goSW50ZXJydXB0ZWRFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgfQorICAgICAgICAgICAgY29tcGlsZXJIYW5kbGVyLnByb2Nlc3NUZXJtaW5hdGVkKCk7CisgICAgICAgIH0KKyAgICAgICAgc3luY2hyb25pemVkICh0aGlzKSB7CisgICAgICAgICAgICBteVBhcnNpbmdUaHJlYWQgPSBudWxsOworICAgICAgICB9PC9zZWxlY3Rpb24+CisgICAgICAgIHNvbWVPdGhlckNvZGUoKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvRmluYWxseV9hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvRmluYWxseV9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjczNDg1ZDMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9GaW5hbGx5X2FmdGVyLmphdmEKQEAgLTAsMCArMSwyNiBAQAorY2xhc3MgVGVzdCB7CisgICAgdm9pZCBtZXRob2QoKXsKKyAgICAgICAgbmV3TWV0aG9kKCk7CisgICAgICAgIHNvbWVPdGhlckNvZGUoKTsKKyAgICB9CisKKyAgICBwcml2YXRlIHZvaWQgbmV3TWV0aG9kKCkgeworICAgICAgICB0cnkgeworICAgICAgICAgICAgcHJvY2Vzcy53YWl0Rm9yKCk7CisgICAgICAgIH0KKyAgICAgICAgY2F0Y2goSW50ZXJydXB0ZWRFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgcHJvY2Vzcy5kZXN0cm95KCk7CisgICAgICAgIH0KKyAgICAgICAgZmluYWxseSB7CisgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgIG15UGFyc2luZ1RocmVhZC5qb2luKCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjYXRjaChJbnRlcnJ1cHRlZEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjb21waWxlckhhbmRsZXIucHJvY2Vzc1Rlcm1pbmF0ZWQoKTsKKyAgICAgICAgfQorICAgICAgICBzeW5jaHJvbml6ZWQgKHRoaXMpIHsKKyAgICAgICAgICAgIG15UGFyc2luZ1RocmVhZCA9IG51bGw7CisgICAgICAgIH0KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvRm9sZEluV2hpbGUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL0ZvbGRJbldoaWxlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTE5YjlkOQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL0ZvbGRJbldoaWxlLmphdmEKQEAgLTAsMCArMSwxNyBAQAorY2xhc3MgVGVzdCB7CisgICAgU3RyaW5nW10gZm9vKCkgeworICAgICAgICByZXR1cm4gbnVsbDsKKyAgICB9CisKKyAgICBib29sZWFuIGJhcihTdHJpbmcgcykgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgdm9pZCBmb29vb29vKCkgeworICAgICAgICBTdHJpbmdbXSBtb2R1bGVzID0gZm9vKCk7CisgICAgICAgIGludCBpID0gMDsKKyAgICAgICAgd2hpbGUgKGkgPCBtb2R1bGVzLmxlbmd0aCAmJiA8c2VsZWN0aW9uPiFiYXIobW9kdWxlc1tpXSk8L3NlbGVjdGlvbj4pIHsKKyAgICAgICAgICAgIGkrKzsKKyAgICAgICAgfQorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9Gb2xkSW5XaGlsZV9hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvRm9sZEluV2hpbGVfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MDQzNGY2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvRm9sZEluV2hpbGVfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDIxIEBACitjbGFzcyBUZXN0IHsKKyAgICBTdHJpbmdbXSBmb28oKSB7CisgICAgICAgIHJldHVybiBudWxsOworICAgIH0KKworICAgIGJvb2xlYW4gYmFyKFN0cmluZyBzKSB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICB2b2lkIGZvb29vb28oKSB7CisgICAgICAgIFN0cmluZ1tdIG1vZHVsZXMgPSBmb28oKTsKKyAgICAgICAgaW50IGkgPSAwOworICAgICAgICB3aGlsZSAoaSA8IG1vZHVsZXMubGVuZ3RoICYmIG5ld01ldGhvZChtb2R1bGVzW2ldKSkgeworICAgICAgICAgICAgaSsrOworICAgICAgICB9CisgICAgfQorCisgICAgcHJpdmF0ZSBib29sZWFuIG5ld01ldGhvZChTdHJpbmcgbW9kdWxlKSB7CisgICAgICAgIHJldHVybiAhYmFyKG1vZHVsZSk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL0ZvckVhY2guamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL0ZvckVhY2guamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zOGEyN2E2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvRm9yRWFjaC5qYXZhCkBAIC0wLDAgKzEsOSBAQAorY2xhc3MgRm9vIHsKKyAgeworICAgIFN0cmluZ1tdIGFyZ3MgPSBnZXRBcmdzKCk7CisKKyAgICBmb3IoU3RyaW5nIGFyZyA6IGFyZ3MpIHsKKyAgICAgICA8c2VsZWN0aW9uPlN5c3RlbS5vdXQucHJpbnRsbigiYXJnID0gIiArIGFyZyk7PC9zZWxlY3Rpb24+CisgICAgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvRm9yRWFjaF9hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvRm9yRWFjaF9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI3YTkyYWUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9Gb3JFYWNoX2FmdGVyLmphdmEKQEAgLTAsMCArMSwxMyBAQAorY2xhc3MgRm9vIHsKKyAgeworICAgIFN0cmluZ1tdIGFyZ3MgPSBnZXRBcmdzKCk7CisKKyAgICBmb3IoU3RyaW5nIGFyZyA6IGFyZ3MpIHsKKyAgICAgICAgbmV3TWV0aG9kKGFyZyk7CisgICAgfQorICB9CisKKyAgICBwcml2YXRlIHZvaWQgbmV3TWV0aG9kKFN0cmluZyBhcmcpIHsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJhcmcgPSAiICsgYXJnKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvRm9yY2VCcmFjZXMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL0ZvcmNlQnJhY2VzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWI2NmZhNQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL0ZvcmNlQnJhY2VzLmphdmEKQEAgLTAsMCArMSw5IEBACitjbGFzcyBYdHJhY3QgeworICAgIHZvaWQgbWUoaW50IGkpIHsKKyAgICAgICAgPHNlbGVjdGlvbj5pZiAoaSA9PTEwKSB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH08L3NlbGVjdGlvbj4KKworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oImk6ICIgKyBpKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvRm9yY2VCcmFjZXNfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL0ZvcmNlQnJhY2VzX2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzFjMTA0NAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL0ZvcmNlQnJhY2VzX2FmdGVyLmphdmEKQEAgLTAsMCArMSwxNiBAQAorY2xhc3MgWHRyYWN0IHsKKyAgICB2b2lkIG1lKGludCBpKSB7CisgICAgICAgIGlmIChuZXdNZXRob2QoaSkpIHsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiaTogIiArIGkpOworICAgIH0KKworICAgIHByaXZhdGUgYm9vbGVhbiBuZXdNZXRob2QoaW50IGkpIHsKKyAgICAgICAgaWYgKGkgPT0xMCkgeworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9Gcm9tTGFtYmRhQm9keS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvRnJvbUxhbWJkYUJvZHkuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYmE0ZWMxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvRnJvbUxhbWJkYUJvZHkuamF2YQpAQCAtMCwwICsxLDIzIEBACisvKgorICogQ29weXJpZ2h0IDIwMDAtMjAxMiBKZXRCcmFpbnMgcy5yLm8uCisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworY2xhc3MgVGVzdCB7CisgIHB1YmxpYyB2b2lkIGZvbygpIHsKKyAgICBSdW5uYWJsZSByID0gKCkgLT4geworICAgICAgU3RyaW5nIGhlbGxvID0gImhlbGxvIjsKKyAgICAgIDxzZWxlY3Rpb24+U3lzdGVtLm91dC5wcmludGxuKGhlbGxvKTs8L3NlbGVjdGlvbj4KKyAgICB9OworICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9Gcm9tTGFtYmRhQm9keV9hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvRnJvbUxhbWJkYUJvZHlfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iOGY0MTkxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvRnJvbUxhbWJkYUJvZHlfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDI3IEBACisvKgorICogQ29weXJpZ2h0IDIwMDAtMjAxMiBKZXRCcmFpbnMgcy5yLm8uCisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworY2xhc3MgVGVzdCB7CisgIHB1YmxpYyB2b2lkIGZvbygpIHsKKyAgICBSdW5uYWJsZSByID0gKCkgLT4geworICAgICAgU3RyaW5nIGhlbGxvID0gImhlbGxvIjsKKyAgICAgICAgbmV3TWV0aG9kKGhlbGxvKTsKKyAgICB9OworICB9CisKKyAgICBwcml2YXRlIHZvaWQgbmV3TWV0aG9kKFN0cmluZyBoZWxsbykgeworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oaGVsbG8pOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL0dlbmVyaWNzUGFyYW1ldGVycy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvR2VuZXJpY3NQYXJhbWV0ZXJzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzVmZmQ5ZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL0dlbmVyaWNzUGFyYW1ldGVycy5qYXZhCkBAIC0wLDAgKzEsNSBAQAorY2xhc3MgVGVzdCB7CisgICBwdWJsaWMgZmluYWwgPFQ+IENsYXNzPFQ+IGZpbmRDbGFzcyhmaW5hbCBTdHJpbmcgY2xhc3NOYW1lKSB0aHJvd3MgQ2xhc3NOb3RGb3VuZEV4Y2VwdGlvbiB7CisgICAgcmV0dXJuIChDbGFzczxUPilDbGFzcy5mb3JOYW1lKGNsYXNzTmFtZSwgdHJ1ZSwgPHNlbGVjdGlvbj5nZXRDbGFzcygpLmdldENsYXNzTG9hZGVyKCk8L3NlbGVjdGlvbj4pOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvR2VuZXJpY3NQYXJhbWV0ZXJzX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9HZW5lcmljc1BhcmFtZXRlcnNfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYWIzODhjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvR2VuZXJpY3NQYXJhbWV0ZXJzX2FmdGVyLmphdmEKQEAgLTAsMCArMSw5IEBACitjbGFzcyBUZXN0IHsKKyAgIHB1YmxpYyBmaW5hbCA8VD4gQ2xhc3M8VD4gZmluZENsYXNzKGZpbmFsIFN0cmluZyBjbGFzc05hbWUpIHRocm93cyBDbGFzc05vdEZvdW5kRXhjZXB0aW9uIHsKKyAgICByZXR1cm4gKENsYXNzPFQ+KUNsYXNzLmZvck5hbWUoY2xhc3NOYW1lLCB0cnVlLCBuZXdNZXRob2QoKSk7CisgIH0KKworICAgIHByaXZhdGUgQ2xhc3NMb2FkZXIgbmV3TWV0aG9kKCkgeworICAgICAgICByZXR1cm4gZ2V0Q2xhc3MoKS5nZXRDbGFzc0xvYWRlcigpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9HdWFyZE1ldGhvZER1cGxpY2F0ZXMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL0d1YXJkTWV0aG9kRHVwbGljYXRlcy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRhZmRmMDAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9HdWFyZE1ldGhvZER1cGxpY2F0ZXMuamF2YQpAQCAtMCwwICsxLDE4IEBACitjbGFzcyBUZXN0Cit7CisgICAgcHVibGljIE9iamVjdCBmb28oKSB7CisgICAgICAgIE9iamVjdCByZXN1bHQgPSBudWxsOworICAgICAgICA8c2VsZWN0aW9uPmlmKHRlc3QxKCkpIHJldHVybiBudWxsOworICAgICAgICBpZih0ZXN0MigpKSByZXR1cm4gbnVsbDs8L3NlbGVjdGlvbj4KKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisgICAgcHVibGljIGludCBmb28xKCkgeworICAgICAgICBpbnQgcmVzdWx0ID0gMTsKKyAgICAgICAgaWYodGVzdDEoKSkgcmV0dXJuIDA7CisgICAgICAgIGlmKHRlc3QyKCkpIHJldHVybiAwOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKworICAgIHByaXZhdGUgYm9vbGVhbiB0ZXN0MSgpIHtyZXR1cm4gZmFsc2U7fQorICAgIHByaXZhdGUgYm9vbGVhbiB0ZXN0MigpIHtyZXR1cm4gZmFsc2U7fQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL0d1YXJkTWV0aG9kRHVwbGljYXRlczEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL0d1YXJkTWV0aG9kRHVwbGljYXRlczEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wN2I3NTY3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvR3VhcmRNZXRob2REdXBsaWNhdGVzMS5qYXZhCkBAIC0wLDAgKzEsMjkgQEAKK3B1YmxpYyBjbGFzcyBUZXN0IHsKKyAgICBwdWJsaWMgT2JqZWN0IGZvbygpIHsKKyAgICAgICAgT2JqZWN0IHJlc3VsdCA9IG51bGw7ICAgICAgIC8vIGxpbmUxCisgICAgICAgIDxzZWxlY3Rpb24+aWYgKHRlc3QxKCkpIHJldHVybiByZXN1bHQ7CisgICAgICAgIGlmICh0ZXN0MigpKSByZXR1cm4gcmVzdWx0Ozwvc2VsZWN0aW9uPgorICAgICAgICBpZiAodGVzdDMoKSkgcmV0dXJuIHJlc3VsdDsgIC8vIGxpbmU0CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAgcHVibGljIGludCBmb28xKCkgeworICAgICAgICBPYmplY3QgcmVzdWx0ID0gbnVsbDsgICAgICAgLy8gbGluZTEKKyAgICAgICAgaWYgKHRlc3QxKCkpIHJldHVybiAxOyAvLyBzc3NzCisgICAgICAgIGlmICh0ZXN0MigpKSByZXR1cm4gMTsgLy9lZWUKKyAgICAgICAgaWYgKHRlc3QzKCkpIHJldHVybiAyOyAgLy8gbGluZTQKKyAgICAgICAgcmV0dXJuIDM7CisgICAgfQorCisgICAgcHJpdmF0ZSBib29sZWFuIHRlc3QxKCkgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcHJpdmF0ZSBib29sZWFuIHRlc3QyKCkgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcHJpdmF0ZSBib29sZWFuIHRlc3QzKCkgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL0d1YXJkTWV0aG9kRHVwbGljYXRlczFfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL0d1YXJkTWV0aG9kRHVwbGljYXRlczFfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YWQzMjI1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvR3VhcmRNZXRob2REdXBsaWNhdGVzMV9hZnRlci5qYXZhCkBAIC0wLDAgKzEsMzQgQEAKK3B1YmxpYyBjbGFzcyBUZXN0IHsKKyAgICBwdWJsaWMgT2JqZWN0IGZvbygpIHsKKyAgICAgICAgT2JqZWN0IHJlc3VsdCA9IG51bGw7ICAgICAgIC8vIGxpbmUxCisgICAgICAgIGlmIChuZXdNZXRob2QoKSkgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgaWYgKHRlc3QzKCkpIHJldHVybiByZXN1bHQ7ICAvLyBsaW5lNAorICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKworICAgIHByaXZhdGUgYm9vbGVhbiBuZXdNZXRob2QoKSB7CisgICAgICAgIE9iamVjdCByZXN1bHQ7CisgICAgICAgIGlmICh0ZXN0MSgpKSByZXR1cm4gdHJ1ZTsKKyAgICAgICAgaWYgKHRlc3QyKCkpIHJldHVybiB0cnVlOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcHVibGljIGludCBmb28xKCkgeworICAgICAgICBPYmplY3QgcmVzdWx0ID0gbnVsbDsgICAgICAgLy8gbGluZTEKKyAgICAgICAgaWYgKG5ld01ldGhvZCgpKSByZXR1cm4gMTsKKyAgICAgICAgaWYgKHRlc3QzKCkpIHJldHVybiAyOyAgLy8gbGluZTQKKyAgICAgICAgcmV0dXJuIDM7CisgICAgfQorCisgICAgcHJpdmF0ZSBib29sZWFuIHRlc3QxKCkgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcHJpdmF0ZSBib29sZWFuIHRlc3QyKCkgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcHJpdmF0ZSBib29sZWFuIHRlc3QzKCkgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL0d1YXJkTWV0aG9kRHVwbGljYXRlc19hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvR3VhcmRNZXRob2REdXBsaWNhdGVzX2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzJmNTQyNwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL0d1YXJkTWV0aG9kRHVwbGljYXRlc19hZnRlci5qYXZhCkBAIC0wLDAgKzEsMjMgQEAKK2NsYXNzIFRlc3QKK3sKKyAgICBwdWJsaWMgT2JqZWN0IGZvbygpIHsKKyAgICAgICAgT2JqZWN0IHJlc3VsdCA9IG51bGw7CisgICAgICAgIGlmIChuZXdNZXRob2QoKSkgcmV0dXJuIG51bGw7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAgcHJpdmF0ZSBib29sZWFuIG5ld01ldGhvZCgpIHsKKyAgICAgICAgaWYodGVzdDEoKSkgcmV0dXJuIHRydWU7CisgICAgICAgIGlmKHRlc3QyKCkpIHJldHVybiB0cnVlOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcHVibGljIGludCBmb28xKCkgeworICAgICAgICBpbnQgcmVzdWx0ID0gMTsKKyAgICAgICAgaWYgKG5ld01ldGhvZCgpKSByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICBwcml2YXRlIGJvb2xlYW4gdGVzdDEoKSB7cmV0dXJuIGZhbHNlO30KKyAgICBwcml2YXRlIGJvb2xlYW4gdGVzdDIoKSB7cmV0dXJuIGZhbHNlO30KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9JREVBREVWMTEwMzYuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL0lERUFERVYxMTAzNi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYxYjQzYzAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9JREVBREVWMTEwMzYuamF2YQpAQCAtMCwwICsxLDkgQEAKK2NsYXNzIE15Q2xhc3MgeworICAgIHB1YmxpYyB2b2lkIG5ld01ldGhvZChsb25nIGkpIHsKKyAgICB9CisgICAgeworICAgICAgICBpbnQgaSA9IDA7CisgICAgICAgIDxzZWxlY3Rpb24+U3lzdGVtLm91dC5wcmludGxuKGkpOzwvc2VsZWN0aW9uPgorICAgICAgICBuZXdNZXRob2QoMTQpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9JREVBREVWMTEwMzZfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL0lERUFERVYxMTAzNl9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY2ZjE5YTMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9JREVBREVWMTEwMzZfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDEzIEBACitjbGFzcyBNeUNsYXNzIHsKKyAgICBwdWJsaWMgdm9pZCBuZXdNZXRob2QobG9uZyBpKSB7CisgICAgfQorICAgIHsKKyAgICAgICAgaW50IGkgPSAwOworICAgICAgICBuZXdNZXRob2QoaSk7CisgICAgICAgIG5ld01ldGhvZCgobG9uZykgMTQpOworICAgIH0KKworICAgIHByaXZhdGUgdm9pZCBuZXdNZXRob2QoaW50IGkpIHsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKGkpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9JREVBREVWMTE3NDguamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL0lERUFERVYxMTc0OC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBmMmFiMDcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9JREVBREVWMTE3NDguamF2YQpAQCAtMCwwICsxLDE0IEBACitjbGFzcyBUZXN0IHsKKyAgICBwdWJsaWMgc3RhdGljIFN0cmluZyBiYXIoaW50IHggLCBpbnQgeSkgeworICAgICAgICB3aGlsZSAodHJ1ZSkgeworICAgICAgICAgICAgPHNlbGVjdGlvbj5pZiAoeCA9PSB5KSB7CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIkhXIik7PC9zZWxlY3Rpb24+CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwcml2YXRlIHN0YXRpYyBpbnQgZygpIHsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvSURFQURFVjExNzQ4X2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9JREVBREVWMTE3NDhfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YTkzMzkwYgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL0lERUFERVYxMTc0OF9hZnRlci5qYXZhCkBAIC0wLDAgKzEsMTggQEAKK2NsYXNzIFRlc3QgeworICAgIHB1YmxpYyBzdGF0aWMgU3RyaW5nIGJhcihpbnQgeCAsIGludCB5KSB7CisgICAgICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgICAgICBuZXdNZXRob2QoeCwgeSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwcml2YXRlIHN0YXRpYyB2b2lkIG5ld01ldGhvZChpbnQgeCwgaW50IHkpIHsKKyAgICAgICAgaWYgKHggPT0geSkgeworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiSFciKTsKKyAgICB9CisKKyAgICBwcml2YXRlIHN0YXRpYyBpbnQgZygpIHsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvSURFQURFVjExODQ4LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9JREVBREVWMTE4NDguamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZDlkZjcxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvSURFQURFVjExODQ4LmphdmEKQEAgLTAsMCArMSwxMSBAQAorY2xhc3MgQ29udGFpbmVyIHsKKyAgICBzdGF0aWMgY2xhc3MgWCB7CisgICAgICAgIGJvb2xlYW4geCA9IGZhbHNlOworCisgICAgICAgIHZvaWQgZm9vKFN0cmluZyBzLCBTdHJpbmcgdCkgeworICAgICAgICAgICAgPHNlbGVjdGlvbj54ID0gdHJ1ZTs8L3NlbGVjdGlvbj4KKworICAgICAgICAgICAgeCA9IHRydWU7CisgICAgICAgIH0KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvSURFQURFVjExODQ4X2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9JREVBREVWMTE4NDhfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMGM3ZTU3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvSURFQURFVjExODQ4X2FmdGVyLmphdmEKQEAgLTAsMCArMSwxNSBAQAorY2xhc3MgQ29udGFpbmVyIHsKKyAgICBzdGF0aWMgY2xhc3MgWCB7CisgICAgICAgIGJvb2xlYW4geCA9IGZhbHNlOworCisgICAgICAgIHZvaWQgZm9vKFN0cmluZyBzLCBTdHJpbmcgdCkgeworICAgICAgICAgICAgbmV3TWV0aG9kKCk7CisKKyAgICAgICAgICAgIG5ld01ldGhvZCgpOworICAgICAgICB9CisKKyAgICAgICAgcHJpdmF0ZSB2b2lkIG5ld01ldGhvZCgpIHsKKyAgICAgICAgICAgIHggPSB0cnVlOworICAgICAgICB9CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL0lERUFERVYzMzM2OC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvSURFQURFVjMzMzY4LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmQ4YmZhOAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL0lERUFERVYzMzM2OC5qYXZhCkBAIC0wLDAgKzEsMTYgQEAKK2NsYXNzIFRlc3QgeworICAgdm9pZCBtKGJvb2xlYW4gYikgeworICAgICAgICAgICBpbnQgeCA9IDQyOworICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgPHNlbGVjdGlvbj4KKyAgICAgICAgICAgICAgIGlmKGIpIHsKKyAgICAgICAgICAgICAgICAgICB4ID0gMjM7CisgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbigpOworICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgPC9zZWxlY3Rpb24+CisgICAgICAgICAgIH0gY2F0Y2goRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbih4KTsKKyAgICAgICAgICAgfQorICAgICAgIH0KKworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL0lERUFERVYzMzM2OF9hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvSURFQURFVjMzMzY4X2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzA1ZDNkYwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL0lERUFERVYzMzM2OF9hZnRlci5qYXZhCkBAIC0wLDAgKzEsMjEgQEAKK2NsYXNzIFRlc3QgeworICAgdm9pZCBtKGJvb2xlYW4gYikgeworICAgICAgICAgICBpbnQgeCA9IDQyOworICAgICAgICAgICB0cnkgeworCisgICAgICAgICAgICAgICB4ID0gbmV3TWV0aG9kKGIsIHgpOworCisgICAgICAgICAgIH0gY2F0Y2goRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbih4KTsKKyAgICAgICAgICAgfQorICAgICAgIH0KKworICAgIHByaXZhdGUgaW50IG5ld01ldGhvZChib29sZWFuIGIsIGludCB4KSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgICAgaWYoYikgeworICAgICAgICAgICAgeCA9IDIzOworICAgICAgICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbigpOworICAgICAgICB9CisgICAgICAgIHJldHVybiB4OworICAgIH0KKworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL0lkZWFEZXYyMjkxLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9JZGVhRGV2MjI5MS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjViMTRkNDUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9JZGVhRGV2MjI5MS5qYXZhCkBAIC0wLDAgKzEsNiBAQAorY2xhc3MgVGVzdGVyIHsKKyAgICB2b2lkIG1ldGhvZChPYmplY3QuLi4gYXJyYXkpIHsKKyAgICAgICAgT2JqZWN0IG9iamVjdCA9IG51bGw7CisgICAgICAgIDxzZWxlY3Rpb24+YXJyYXkuZXF1YWxzKG9iamVjdCk7PC9zZWxlY3Rpb24+IAorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9JZGVhRGV2MjI5MV9hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvSWRlYURldjIyOTFfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kOTc0NjYwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvSWRlYURldjIyOTFfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDEwIEBACitjbGFzcyBUZXN0ZXIgeworICAgIHZvaWQgbWV0aG9kKE9iamVjdC4uLiBhcnJheSkgeworICAgICAgICBPYmplY3Qgb2JqZWN0ID0gbnVsbDsKKyAgICAgICAgbmV3TWV0aG9kKG9iamVjdCwgYXJyYXkpOworICAgIH0KKworICAgIHByaXZhdGUgdm9pZCBuZXdNZXRob2QoT2JqZWN0IG9iamVjdCwgT2JqZWN0W10gYXJyYXkpIHsKKyAgICAgICAgYXJyYXkuZXF1YWxzKG9iamVjdCk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL0lubGluZUNyZWF0ZWQyUmV0dXJuTG9jYWxWYXJpYWJsZXNPbmx5LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9JbmxpbmVDcmVhdGVkMlJldHVybkxvY2FsVmFyaWFibGVzT25seS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkxMTAxY2UKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9JbmxpbmVDcmVhdGVkMlJldHVybkxvY2FsVmFyaWFibGVzT25seS5qYXZhCkBAIC0wLDAgKzEsOCBAQAorY2xhc3MgVGVzdCB7CisgICAgdm9pZCBmb28oKSB7CisgICAgICA8c2VsZWN0aW9uPmludCBqID0gMDsKKyAgICAgIGludCBpID0gMDsKKyAgICAgIGogPSA5Ozwvc2VsZWN0aW9uPgorICAgICAgU3lzdGVtLm91dC5wcmludGxuKGkpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL0lubGluZUNyZWF0ZWQyUmV0dXJuTG9jYWxWYXJpYWJsZXNPbmx5X2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9JbmxpbmVDcmVhdGVkMlJldHVybkxvY2FsVmFyaWFibGVzT25seV9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU3YjMzM2IKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9JbmxpbmVDcmVhdGVkMlJldHVybkxvY2FsVmFyaWFibGVzT25seV9hZnRlci5qYXZhCkBAIC0wLDAgKzEsMTMgQEAKK2NsYXNzIFRlc3QgeworICAgIHZvaWQgZm9vKCkgeworICAgICAgICBpbnQgaSA9IG5ld01ldGhvZCgpOworICAgICAgU3lzdGVtLm91dC5wcmludGxuKGkpOworICAgIH0KKworICAgIHByaXZhdGUgaW50IG5ld01ldGhvZCgpIHsKKyAgICAgICAgaW50IGogPSAwOworICAgICAgICBpbnQgaSA9IDA7CisgICAgICAgIGogPSA5OworICAgICAgICByZXR1cm4gaTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9JbnN0YW5jZU1ldGhvZER1cGxpY2F0ZXNJblN0YXRpY0NvbnRleHQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL0luc3RhbmNlTWV0aG9kRHVwbGljYXRlc0luU3RhdGljQ29udGV4dC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE0NWQyMjcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9JbnN0YW5jZU1ldGhvZER1cGxpY2F0ZXNJblN0YXRpY0NvbnRleHQuamF2YQpAQCAtMCwwICsxLDE0IEBACitjbGFzcyBDbGFzczEgeworICAgIHB1YmxpYyBzdGF0aWMgaW50IHN0YXRpY01ldGhvZCgpIHsKKyAgICAgICAgaW50IGEgPSAxOworICAgICAgICBpbnQgYiA9IDI7CisKKyAgICAgICAgaW50IHRlbXAgPSBhICsgYjsKKyAgICAgICAgcmV0dXJuIHRlbXAgKiAyOworICAgIH0KKworICAgIHB1YmxpYyBpbnQgZm9vKGludCBhLCBpbnQgYikgeworICAgICAgICA8c2VsZWN0aW9uPmludCB0ZW1wID0gYSArIGI7CisgICAgICAgIHJldHVybiB0ZW1wICogMjs8L3NlbGVjdGlvbj4KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvSW5zdGFuY2VNZXRob2REdXBsaWNhdGVzSW5TdGF0aWNDb250ZXh0X2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9JbnN0YW5jZU1ldGhvZER1cGxpY2F0ZXNJblN0YXRpY0NvbnRleHRfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YzYzOWRkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvSW5zdGFuY2VNZXRob2REdXBsaWNhdGVzSW5TdGF0aWNDb250ZXh0X2FmdGVyLmphdmEKQEAgLTAsMCArMSwxNyBAQAorY2xhc3MgQ2xhc3MxIHsKKyAgICBwdWJsaWMgc3RhdGljIGludCBzdGF0aWNNZXRob2QoKSB7CisgICAgICAgIGludCBhID0gMTsKKyAgICAgICAgaW50IGIgPSAyOworCisgICAgICAgIHJldHVybiBuZXdNZXRob2QoYSwgYik7CisgICAgfQorCisgICAgcHVibGljIGludCBmb28oaW50IGEsIGludCBiKSB7CisgICAgICAgIHJldHVybiBuZXdNZXRob2QoYSwgYik7CisgICAgfQorCisgICAgcHJpdmF0ZSBzdGF0aWMgaW50IG5ld01ldGhvZChpbnQgYSwgaW50IGIpIHsKKyAgICAgICAgaW50IHRlbXAgPSBhICsgYjsKKyAgICAgICAgcmV0dXJuIHRlbXAgKiAyOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9JbnZhbGlkUmVmZXJlbmNlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9JbnZhbGlkUmVmZXJlbmNlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjJhZGRkOQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL0ludmFsaWRSZWZlcmVuY2UuamF2YQpAQCAtMCwwICsxLDcgQEAKK2ltcG9ydCBqYXZhLmlvLklPRXhjZXB0aW9uOworCitjbGFzcyBUZXN0IHsKKyAgdm9pZCBmb28oRXhjZXB0aW9uIHRhcmdldEVsZW1lbnQpIHsKKyAgICBQc2lQYWNrYWdlIGFQYWNrID0gPHNlbGVjdGlvbj5KYXZhRGlyZWN0b3J5U2VydmljZS5nZXRJbnN0YW5jZSgpLmdldFBhY2thZ2UoKElPRXhjZXB0aW9uKXRhcmdldEVsZW1lbnQpPC9zZWxlY3Rpb24+OworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvSW52YWxpZFJlZmVyZW5jZV9hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvSW52YWxpZFJlZmVyZW5jZV9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFkMzRiMDMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9JbnZhbGlkUmVmZXJlbmNlX2FmdGVyLmphdmEKQEAgLTAsMCArMSwxMSBAQAoraW1wb3J0IGphdmEuaW8uSU9FeGNlcHRpb247CisKK2NsYXNzIFRlc3QgeworICB2b2lkIGZvbyhFeGNlcHRpb24gdGFyZ2V0RWxlbWVudCkgeworICAgIFBzaVBhY2thZ2UgYVBhY2sgPSBuZXdNZXRob2QoKElPRXhjZXB0aW9uKSB0YXJnZXRFbGVtZW50KTsKKyAgfQorCisgICAgcHJpdmF0ZSBQc2lQYWNrYWdlIG5ld01ldGhvZChJT0V4Y2VwdGlvbiB0YXJnZXRFbGVtZW50KSB7CisgICAgICAgIHJldHVybiBKYXZhRGlyZWN0b3J5U2VydmljZS5nZXRJbnN0YW5jZSgpLmdldFBhY2thZ2UoKElPRXhjZXB0aW9uKXRhcmdldEVsZW1lbnQpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9MVmFsdWVOb3REdXBsaWNhdGUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL0xWYWx1ZU5vdER1cGxpY2F0ZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMxNmYxYmMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9MVmFsdWVOb3REdXBsaWNhdGUuamF2YQpAQCAtMCwwICsxLDExIEBACitjbGFzcyBVVVUgeworICAgIGludCBteVZhbHVlOworCisgICAgVVVVKCkgeworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oPHNlbGVjdGlvbj5teVZhbHVlPC9zZWxlY3Rpb24+KTsKKyAgICB9CisKKyAgICB2b2lkIGluaXQoKSB7CisgICAgICAgIG15VmFsdWUgPSAwOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9MVmFsdWVOb3REdXBsaWNhdGVfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL0xWYWx1ZU5vdER1cGxpY2F0ZV9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY3M2E1N2EKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9MVmFsdWVOb3REdXBsaWNhdGVfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDE1IEBACitjbGFzcyBVVVUgeworICAgIGludCBteVZhbHVlOworCisgICAgVVVVKCkgeworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4obmV3TWV0aG9kKCkpOworICAgIH0KKworICAgIHByaXZhdGUgaW50IG5ld01ldGhvZCgpIHsKKyAgICAgICAgcmV0dXJuIG15VmFsdWU7CisgICAgfQorCisgICAgdm9pZCBpbml0KCkgeworICAgICAgICBteVZhbHVlID0gMDsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvTGVhdmVDb21tZW50c1doZW5FeHByZXNzaW9uRXh0cmFjdGVkLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9MZWF2ZUNvbW1lbnRzV2hlbkV4cHJlc3Npb25FeHRyYWN0ZWQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNWM2MWFmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvTGVhdmVDb21tZW50c1doZW5FeHByZXNzaW9uRXh0cmFjdGVkLmphdmEKQEAgLTAsMCArMSw2IEBACitjbGFzcyBUZXN0IHsKKyAgdm9pZCBiYXIoKXt9CisgIHZvaWQgZm9vKCkgeworICAgIDxzZWxlY3Rpb24+YmFyKCk7PC9zZWxlY3Rpb24+Ly9zb21lIGNvbW1lbnQgaGVyZQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvTGVhdmVDb21tZW50c1doZW5FeHByZXNzaW9uRXh0cmFjdGVkX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9MZWF2ZUNvbW1lbnRzV2hlbkV4cHJlc3Npb25FeHRyYWN0ZWRfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YTA2NGYxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvTGVhdmVDb21tZW50c1doZW5FeHByZXNzaW9uRXh0cmFjdGVkX2FmdGVyLmphdmEKQEAgLTAsMCArMSwxMCBAQAorY2xhc3MgVGVzdCB7CisgIHZvaWQgYmFyKCl7fQorICB2b2lkIGZvbygpIHsKKyAgICBuZXdNZXRob2QoKTsvL3NvbWUgY29tbWVudCBoZXJlCisgIH0KKworICAgIHByaXZhdGUgdm9pZCBuZXdNZXRob2QoKSB7CisgICAgICAgIGJhcigpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9MZXN5YUJ1Zy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvTGVzeWFCdWcuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMjkyZTg2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvTGVzeWFCdWcuamF2YQpAQCAtMCwwICsxLDE1IEBACitpbXBvcnQgamF2YS5pby5PdXRwdXRTdHJlYW07CisKK2NsYXNzIEEgeworICAgIHsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIE91dHB1dFN0cmVhbSBvdXQgPSBudWxsOworCisgICAgICAgICAgICA8c2VsZWN0aW9uPnRyeSB7CisgICAgICAgICAgICB9IGZpbmFsbHkgeworICAgICAgICAgICAgICAgIG91dC5jbG9zZSgpOworICAgICAgICAgICAgfTwvc2VsZWN0aW9uPgorICAgICAgICB9IGNhdGNoKFRocm93YWJsZSB0KSB7CisgICAgICAgIH0KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvTGVzeWFCdWdfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL0xlc3lhQnVnX2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjA5MjI1NQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL0xlc3lhQnVnX2FmdGVyLmphdmEKQEAgLTAsMCArMSwyMCBAQAoraW1wb3J0IGphdmEuaW8uSU9FeGNlcHRpb247CitpbXBvcnQgamF2YS5pby5PdXRwdXRTdHJlYW07CisKK2NsYXNzIEEgeworICAgIHsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIE91dHB1dFN0cmVhbSBvdXQgPSBudWxsOworCisgICAgICAgICAgICBuZXdNZXRob2Qob3V0KTsKKyAgICAgICAgfSBjYXRjaChUaHJvd2FibGUgdCkgeworICAgICAgICB9CisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIG5ld01ldGhvZChPdXRwdXRTdHJlYW0gb3V0KSB0aHJvd3MgSU9FeGNlcHRpb24geworICAgICAgICB0cnkgeworICAgICAgICB9IGZpbmFsbHkgeworICAgICAgICAgICAgb3V0LmNsb3NlKCk7CisgICAgICAgIH0KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvTG9jYWxDbGFzcy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvTG9jYWxDbGFzcy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlmNjFiMTYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9Mb2NhbENsYXNzLmphdmEKQEAgLTAsMCArMSw3IEBACitjbGFzcyBUZXN0eworICBwdWJsaWMgdm9pZCBmb28oKSB7CisgICAgY2xhc3MgQSB7CisgICAgfQorICAgIDxzZWxlY3Rpb24+bmV3IEEoKTs8L3NlbGVjdGlvbj4KKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvTG9jYWxDbGFzc0RlZmluZWRJbk1ldGhvZFdoaWNoSXNVc2VkTGF0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL0xvY2FsQ2xhc3NEZWZpbmVkSW5NZXRob2RXaGljaElzVXNlZExhdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2YzM2YzNAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL0xvY2FsQ2xhc3NEZWZpbmVkSW5NZXRob2RXaGljaElzVXNlZExhdGVyLmphdmEKQEAgLTAsMCArMSw4IEBACitjbGFzcyBUZXN0IHsKKyAgdm9pZCBmb28oKSB7CisgICAgPHNlbGVjdGlvbj5jbGFzcyBYIHt9CisgICAgWCB4OworICAgIDwvc2VsZWN0aW9uPgorICAgIHggPSBudWxsOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvTG9jYWxDbGFzc1VzYWdlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9Mb2NhbENsYXNzVXNhZ2UuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43OTEwYzlmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvTG9jYWxDbGFzc1VzYWdlLmphdmEKQEAgLTAsMCArMSw3IEBACitjbGFzcyBUZXN0eworICBwdWJsaWMgdm9pZCBmb28oKSB7CisgICAgPHNlbGVjdGlvbj5jbGFzcyBBIHsKKyAgICB9PC9zZWxlY3Rpb24+CisgICAgbmV3IEEoKTsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvTWV0aG9kMkludGVyZmFjZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvTWV0aG9kMkludGVyZmFjZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBjOWExYzcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9NZXRob2QySW50ZXJmYWNlLmphdmEKQEAgLTAsMCArMSw1IEBACitpbnRlcmZhY2UgSSB7CisgICAgZGVmYXVsdCB2b2lkIGZvbyAoKSB7CisgICAgICAgIDxzZWxlY3Rpb24+U3lzdGVtLm91dC5wcmludGxuKCJoZWxsbyIpOzwvc2VsZWN0aW9uPgorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9NZXRob2QySW50ZXJmYWNlX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9NZXRob2QySW50ZXJmYWNlX2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmFlZDdhYwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL01ldGhvZDJJbnRlcmZhY2VfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDkgQEAKK2ludGVyZmFjZSBJIHsKKyAgICBkZWZhdWx0IHZvaWQgZm9vICgpIHsKKyAgICAgICAgbmV3TWV0aG9kKCk7CisgICAgfQorCisgICAgcHJpdmF0ZSBkZWZhdWx0IHZvaWQgbmV3TWV0aG9kKCkgeworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oImhlbGxvIik7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL05lYXJDb21tZW50LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9OZWFyQ29tbWVudC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU0ZDg1NWYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9OZWFyQ29tbWVudC5qYXZhCkBAIC0wLDAgKzEsMTggQEAKK3B1YmxpYyBjbGFzcyBFeHRyYWN0TWV0aG9kcyB7CisgIHB1YmxpYyB2b2lkIHByb2Nlc3NMaW5lKFN0cmluZyBsaW5lKSB7CisgICAgPHNlbGVjdGlvbj4KKyAgICAvL2ZpbmFsIENoYXJzZXQgY2hhcnNldCA9IG15UHJvY2Vzc0hhbmRsZXIuZ2V0Q2hhcnNldCgpOworICAgIGZpbmFsIE91dHB1dFN0cmVhbSBvdXRwdXRTdHJlYW0gPSBudWxsOy8vbXlQcm9jZXNzSGFuZGxlci5nZXRQcm9jZXNzSW5wdXQoKTsKKyAgICB0cnkgeworICAgICAgLy9ieXRlW10gYnl0ZXMgPSAobGluZSArICJcbiIpLmdldEJ5dGVzKGNoYXJzZXQubmFtZSgpKTsKKyAgICAgIGJ5dGVbXSBieXRlcyA9IChsaW5lICsgIlxuIikuZ2V0Qnl0ZXMoKTsKKyAgICAgIG91dHB1dFN0cmVhbS53cml0ZShieXRlcyk7CisgICAgICBvdXRwdXRTdHJlYW0uZmx1c2goKTsKKyAgICB9CisgICAgY2F0Y2ggKElPRXhjZXB0aW9uIGUpIHsKKyAgICAgIC8vIGlnbm9yZQorICAgIH0KKyAgICA8L3NlbGVjdGlvbj4KKyAgfQorCit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9OZWFyQ29tbWVudF9hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvTmVhckNvbW1lbnRfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYzlmODYwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvTmVhckNvbW1lbnRfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDIyIEBACitwdWJsaWMgY2xhc3MgRXh0cmFjdE1ldGhvZHMgeworICBwdWJsaWMgdm9pZCBwcm9jZXNzTGluZShTdHJpbmcgbGluZSkgeworICAgICAgbmV3TWV0aG9kKGxpbmUpOworCisKKyAgfQorCisgICAgcHJpdmF0ZSB2b2lkIG5ld01ldGhvZChTdHJpbmcgbGluZSkgeworICAgICAgICAvL2ZpbmFsIENoYXJzZXQgY2hhcnNldCA9IG15UHJvY2Vzc0hhbmRsZXIuZ2V0Q2hhcnNldCgpOworICAgICAgICBmaW5hbCBPdXRwdXRTdHJlYW0gb3V0cHV0U3RyZWFtID0gbnVsbDsvL215UHJvY2Vzc0hhbmRsZXIuZ2V0UHJvY2Vzc0lucHV0KCk7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgLy9ieXRlW10gYnl0ZXMgPSAobGluZSArICJcbiIpLmdldEJ5dGVzKGNoYXJzZXQubmFtZSgpKTsKKyAgICAgICAgICBieXRlW10gYnl0ZXMgPSAobGluZSArICJcbiIpLmdldEJ5dGVzKCk7CisgICAgICAgICAgb3V0cHV0U3RyZWFtLndyaXRlKGJ5dGVzKTsKKyAgICAgICAgICBvdXRwdXRTdHJlYW0uZmx1c2goKTsKKyAgICAgICAgfQorICAgICAgICBjYXRjaCAoSU9FeGNlcHRpb24gZSkgeworICAgICAgICAgIC8vIGlnbm9yZQorICAgICAgICB9CisgICAgfQorCit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9Ob1Nob3J0Q2lyY3VpdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvTm9TaG9ydENpcmN1aXQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZmJjMmYwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvTm9TaG9ydENpcmN1aXQuamF2YQpAQCAtMCwwICsxLDcgQEAKK3B1YmxpYyBjbGFzcyBUZXN0IHsKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgZm9vKGNoYXIgYykgeworICAgICAgICBpZiAoPHNlbGVjdGlvbj5jID09ICdcbicgfHwgYyA9PSAnXHInPC9zZWxlY3Rpb24+IHx8IGMgPT0gJ1x1MDAwMCcpIHsKKyAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiIik7CisgICAgICAgIH0KKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9Ob1Nob3J0Q2lyY3VpdF9hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvTm9TaG9ydENpcmN1aXRfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMjlhNmYzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvTm9TaG9ydENpcmN1aXRfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDExIEBACitwdWJsaWMgY2xhc3MgVGVzdCB7CisgICAgcHVibGljIHN0YXRpYyB2b2lkIGZvbyhjaGFyIGMpIHsKKyAgICAgICAgaWYgKG5ld01ldGhvZChjKSB8fCBjID09ICdcdTAwMDAnKSB7CisgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIiIpOworICAgICAgICB9CisgICAgfQorCisgICAgcHJpdmF0ZSBzdGF0aWMgYm9vbGVhbiBuZXdNZXRob2QoY2hhciBjKSB7CisgICAgICAgIHJldHVybiBjID09ICdcbicgfHwgYyA9PSAnXHInOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL05vbkZpbmFsV3JpdGFibGVQYXJhbS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvTm9uRmluYWxXcml0YWJsZVBhcmFtLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGQ0NTk1OQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL05vbkZpbmFsV3JpdGFibGVQYXJhbS5qYXZhCkBAIC0wLDAgKzEsNiBAQAorcHVibGljIGNsYXNzIFRlc3QgeworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKKyAgICAgICAgU3RyaW5nIHMgPSAiZHVkZSI7CisgICAgICAgIDxzZWxlY3Rpb24+cyA9IHM7PC9zZWxlY3Rpb24+CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL05vbkZpbmFsV3JpdGFibGVQYXJhbV9hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvTm9uRmluYWxXcml0YWJsZVBhcmFtX2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDNmOWIzYwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL05vbkZpbmFsV3JpdGFibGVQYXJhbV9hZnRlci5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKK3B1YmxpYyBjbGFzcyBUZXN0IHsKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CisgICAgICAgIFN0cmluZyBzID0gImR1ZGUiOworICAgICAgICBuZXdNZXRob2Qocyk7CisgICAgfQorCisgICAgcHJpdmF0ZSBzdGF0aWMgdm9pZCBuZXdNZXRob2QoU3RyaW5nIHMpIHsKKyAgICAgICAgcyA9IHM7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL05vbkZvbGRJbklmQm9keS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvTm9uRm9sZEluSWZCb2R5LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjkyNzY5ZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL05vbkZvbGRJbklmQm9keS5qYXZhCkBAIC0wLDAgKzEsNyBAQAorY2xhc3MgVGVzdCB7CisgICAgdm9pZCBmb28oU3RyaW5nW10gYSwgaW50IGksIGJvb2xlYW4gYikgeworICAgICAgICA8c2VsZWN0aW9uPmlmIChiKSB7CisgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oYVtpXSk7CisgICAgICAgIH08L3NlbGVjdGlvbj4KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvTm9uRm9sZEluSWZCb2R5X2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9Ob25Gb2xkSW5JZkJvZHlfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNmI1ZWRhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvTm9uRm9sZEluSWZCb2R5X2FmdGVyLmphdmEKQEAgLTAsMCArMSwxMSBAQAorY2xhc3MgVGVzdCB7CisgICAgdm9pZCBmb28oU3RyaW5nW10gYSwgaW50IGksIGJvb2xlYW4gYikgeworICAgICAgICBuZXdNZXRob2QoYSwgaSwgYik7CisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIG5ld01ldGhvZChTdHJpbmdbXSBhLCBpbnQgaSwgYm9vbGVhbiBiKSB7CisgICAgICAgIGlmIChiKSB7CisgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oYVtpXSk7CisgICAgICAgIH0KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvTm90SW5pdGlhbGl6ZWRJbnNpZGVGaW5hbGx5LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9Ob3RJbml0aWFsaXplZEluc2lkZUZpbmFsbHkuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xN2QwYTE2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvTm90SW5pdGlhbGl6ZWRJbnNpZGVGaW5hbGx5LmphdmEKQEAgLTAsMCArMSwxNCBAQAorY2xhc3MgVGVzdGVyIHsKKyAgICBTdHJpbmcgeCgpIHsKKyAgICAgICAgU3RyaW5nIG8gPSAiIjsKKzxzZWxlY3Rpb24+CisgICAgICAgIFN0cmluZyBzOworICAgICAgICB0cnkgeworICAgICAgICAgICAgcyA9IG87CisgICAgICAgIH0KKyAgICAgICAgZmluYWxseSB7CisKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gczs8L3NlbGVjdGlvbj4KKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9Ob3RJbml0aWFsaXplZEluc2lkZUZpbmFsbHlfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL05vdEluaXRpYWxpemVkSW5zaWRlRmluYWxseV9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVjNmNjOTMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9Ob3RJbml0aWFsaXplZEluc2lkZUZpbmFsbHlfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDE4IEBACitjbGFzcyBUZXN0ZXIgeworICAgIFN0cmluZyB4KCkgeworICAgICAgICBTdHJpbmcgbyA9ICIiOworCisgICAgICAgIHJldHVybiBuZXdNZXRob2Qobyk7CisgICAgfQorCisgICAgcHJpdmF0ZSBTdHJpbmcgbmV3TWV0aG9kKFN0cmluZyBvKSB7CisgICAgICAgIFN0cmluZyBzOworICAgICAgICB0cnkgeworICAgICAgICAgICAgcyA9IG87CisgICAgICAgIH0KKyAgICAgICAgZmluYWxseSB7CisKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gczsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9OdWxsYWJsZUNoZWNrLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9OdWxsYWJsZUNoZWNrLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDFiYjYxMQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL051bGxhYmxlQ2hlY2suamF2YQpAQCAtMCwwICsxLDE1IEBACitjbGFzcyBUZXN0IHsKKyAgIE9iamVjdCBmb28oKSB7CisgICAgICA8c2VsZWN0aW9uPk9iamVjdCBvID0gIiI7CisgICAgICBmb3IgKGludCBpID0gMDsgaSA8IDU7IGkrKykgeworICAgICAgICAgaWYgKGkgPT0gMTApeworICAgICAgICAgICAgbyA9IG51bGw7CisgICAgICAgICB9CisgICAgICB9CisgICAgICBpZiAobyA9PSBudWxsKSB7CisgICAgICAgIHJldHVybiBudWxsOworICAgICAgfTwvc2VsZWN0aW9uPgorICAgICAgU3lzdGVtLm91dC5wcmludGxuKG8pOworICAgICAgcmV0dXJuIG87CisgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvTnVsbGFibGVDaGVjazEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL051bGxhYmxlQ2hlY2sxLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjAwZTNjNgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL051bGxhYmxlQ2hlY2sxLmphdmEKQEAgLTAsMCArMSwxNiBAQAorY2xhc3MgVGVzdCB7CisgICBTdHJpbmcgZm9vKGludCBpLCBib29sZWFuIGZsYWcpIHsKKyAgICAgIDxzZWxlY3Rpb24+CisgICAgICBTdHJpbmcgeHh4ID0gIiI7CisgICAgICAgIGlmIChmbGFnKSB7CisgICAgICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IDEwMDsgaisrKSB7CisgICAgICAgICAgICAgICAgaWYgKGkgPT0gaikgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIDwvc2VsZWN0aW9uPgorICAgICAgU3lzdGVtLm91dC5wcmludGxuKHh4eCk7CisgICAgICByZXR1cm4gbnVsbDsKKyAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9OdWxsYWJsZUNoZWNrMV9hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvTnVsbGFibGVDaGVjazFfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YTJjZjE4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvTnVsbGFibGVDaGVjazFfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDIyIEBACitjbGFzcyBUZXN0IHsKKyAgIFN0cmluZyBmb28oaW50IGksIGJvb2xlYW4gZmxhZykgeworCisgICAgICAgU3RyaW5nIHh4eCA9IG5ld01ldGhvZChpLCBmbGFnKTsKKyAgICAgICBpZiAoeHh4ID09IG51bGwpIHJldHVybiBudWxsOworICAgICAgCisgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oeHh4KTsKKyAgICAgIHJldHVybiBudWxsOworICAgfQorCisgICAgcHJpdmF0ZSBTdHJpbmcgbmV3TWV0aG9kKGludCBpLCBib29sZWFuIGZsYWcpIHsKKyAgICAgICAgU3RyaW5nIHh4eCA9ICIiOworICAgICAgICBpZiAoZmxhZykgeworICAgICAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCAxMDA7IGorKykgeworICAgICAgICAgICAgICAgIGlmIChpID09IGopIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHJldHVybiB4eHg7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL051bGxhYmxlQ2hlY2tEb250TWlzc0ZpbmFsLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9OdWxsYWJsZUNoZWNrRG9udE1pc3NGaW5hbC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYxZGVhOTEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9OdWxsYWJsZUNoZWNrRG9udE1pc3NGaW5hbC5qYXZhCkBAIC0wLDAgKzEsMTMgQEAKK2NsYXNzIFRlc3QgeworICB2b2lkIGZvbygpIHsKKyAgICA8c2VsZWN0aW9uPmZpbmFsIFN0cmluZyBzdHIgPSAiIjsKKyAgICBpZiAoc3RyID09ICIiKSB7CisgICAgICByZXR1cm47CisgICAgfTwvc2VsZWN0aW9uPgorICAgIG5ldyBSdW5uYWJsZSgpIHsKKyAgICAgIHB1YmxpYyB2b2lkIHJ1bigpIHsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKHN0cik7CisgICAgICB9CisgICAgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvTnVsbGFibGVDaGVja0RvbnRNaXNzRmluYWxfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL051bGxhYmxlQ2hlY2tEb250TWlzc0ZpbmFsX2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjE3ZjlmNAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL051bGxhYmxlQ2hlY2tEb250TWlzc0ZpbmFsX2FmdGVyLmphdmEKQEAgLTAsMCArMSwxOSBAQAorY2xhc3MgVGVzdCB7CisgIHZvaWQgZm9vKCkgeworICAgICAgZmluYWwgU3RyaW5nIHN0ciA9IG5ld01ldGhvZCgpOworICAgICAgaWYgKHN0ciA9PSBudWxsKSByZXR1cm47CisgICAgbmV3IFJ1bm5hYmxlKCkgeworICAgICAgcHVibGljIHZvaWQgcnVuKCkgeworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oc3RyKTsKKyAgICAgIH0KKyAgICB9CisgIH0KKworICAgIHByaXZhdGUgU3RyaW5nIG5ld01ldGhvZCgpIHsKKyAgICAgICAgZmluYWwgU3RyaW5nIHN0ciA9ICIiOworICAgICAgICBpZiAoc3RyID09ICIiKSB7CisgICAgICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gc3RyOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9OdWxsYWJsZUNoZWNrVm9pZC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvTnVsbGFibGVDaGVja1ZvaWQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMGU0MDRkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvTnVsbGFibGVDaGVja1ZvaWQuamF2YQpAQCAtMCwwICsxLDE0IEBACitjbGFzcyBUZXN0IHsKKyAgIHZvaWQgZm9vKCkgeworICAgICAgPHNlbGVjdGlvbj5PYmplY3QgbyA9ICIiOworICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCA1OyBpKyspIHsKKyAgICAgICAgIGlmIChpID09IDEwKXsKKyAgICAgICAgICAgIG8gPSBudWxsOworICAgICAgICAgfQorICAgICAgfQorICAgICAgaWYgKG8gPT0gbnVsbCkgeworICAgICAgICByZXR1cm47CisgICAgICB9PC9zZWxlY3Rpb24+CisgICAgICBTeXN0ZW0ub3V0LnByaW50bG4obyk7CisgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvTnVsbGFibGVDaGVja1ZvaWRfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL051bGxhYmxlQ2hlY2tWb2lkX2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzExMzE0ZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL051bGxhYmxlQ2hlY2tWb2lkX2FmdGVyLmphdmEKQEAgLTAsMCArMSwyMCBAQAorY2xhc3MgVGVzdCB7CisgICB2b2lkIGZvbygpIHsKKyAgICAgICBPYmplY3QgbyA9IG5ld01ldGhvZCgpOworICAgICAgIGlmIChvID09IG51bGwpIHJldHVybjsKKyAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihvKTsKKyAgIH0KKworICAgIHByaXZhdGUgT2JqZWN0IG5ld01ldGhvZCgpIHsKKyAgICAgICAgT2JqZWN0IG8gPSAiIjsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCA1OyBpKyspIHsKKyAgICAgICAgICAgaWYgKGkgPT0gMTApeworICAgICAgICAgICAgICBvID0gbnVsbDsKKyAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGlmIChvID09IG51bGwpIHsKKyAgICAgICAgICAgIHJldHVybiBudWxsOworICAgICAgICB9CisgICAgICAgIHJldHVybiBvOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9OdWxsYWJsZUNoZWNrX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9OdWxsYWJsZUNoZWNrX2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmEwZGI2NAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL051bGxhYmxlQ2hlY2tfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDIxIEBACitjbGFzcyBUZXN0IHsKKyAgIE9iamVjdCBmb28oKSB7CisgICAgICAgT2JqZWN0IG8gPSBuZXdNZXRob2QoKTsKKyAgICAgICBpZiAobyA9PSBudWxsKSByZXR1cm4gbnVsbDsKKyAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihvKTsKKyAgICAgIHJldHVybiBvOworICAgfQorCisgICAgcHJpdmF0ZSBPYmplY3QgbmV3TWV0aG9kKCkgeworICAgICAgICBPYmplY3QgbyA9ICIiOworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IDU7IGkrKykgeworICAgICAgICAgICBpZiAoaSA9PSAxMCl7CisgICAgICAgICAgICAgIG8gPSBudWxsOworICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgaWYgKG8gPT0gbnVsbCkgeworICAgICAgICAgICAgcmV0dXJuIG51bGw7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIG87CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL09uZUJyYW5jaEFzc2lnbm1lbnQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL09uZUJyYW5jaEFzc2lnbm1lbnQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZjY1MDQ4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvT25lQnJhbmNoQXNzaWdubWVudC5qYXZhCkBAIC0wLDAgKzEsMTMgQEAKK2NsYXNzIEF7CisgICAgcHVibGljIHN0YXRpYyBPYmplY3QgdGVzdChPYmplY3QgYSkgeworICAgICAgICBib29sZWFuIHZhbHVlOworCisgICAgICAgIGlmIChhID09IG51bGwpeworICAgICAgICAgICAgPHNlbGVjdGlvbj52YWx1ZSA9IHRydWU7PC9zZWxlY3Rpb24+CisgICAgICAgIH0KKyAgICAgICAgZWxzZXsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBCb29sZWFuLnZhbHVlT2YodmFsdWUpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL09uZUJyYW5jaEFzc2lnbm1lbnRfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL09uZUJyYW5jaEFzc2lnbm1lbnRfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZDViYTIyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvT25lQnJhbmNoQXNzaWdubWVudF9hZnRlci5qYXZhCkBAIC0wLDAgKzEsMTkgQEAKK2NsYXNzIEF7CisgICAgcHVibGljIHN0YXRpYyBPYmplY3QgdGVzdChPYmplY3QgYSkgeworICAgICAgICBib29sZWFuIHZhbHVlOworCisgICAgICAgIGlmIChhID09IG51bGwpeworICAgICAgICAgICAgdmFsdWUgPSBuZXdNZXRob2QoKTsKKyAgICAgICAgfQorICAgICAgICBlbHNleworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIEJvb2xlYW4udmFsdWVPZih2YWx1ZSk7CisgICAgfQorCisgICAgcHJpdmF0ZSBzdGF0aWMgYm9vbGVhbiBuZXdNZXRob2QoKSB7CisgICAgICAgIGJvb2xlYW4gdmFsdWU7CisgICAgICAgIHZhbHVlID0gdHJ1ZTsKKyAgICAgICAgcmV0dXJuIHZhbHVlOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL09uZUxpbmVMYW1iZGEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL09uZUxpbmVMYW1iZGEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYjEwOWVmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvT25lTGluZUxhbWJkYS5qYXZhCkBAIC0wLDAgKzEsNSBAQAorY2xhc3MgVGVzdCB7CisgIHB1YmxpYyB2b2lkIGZvbygpIHsKKyAgICBDb21wYXJhYmxlPFN0cmluZz4gYyA9IG8gLT4gPHNlbGVjdGlvbj5vLmluZGV4T2YoImZvbyIpPC9zZWxlY3Rpb24+OworICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9PbmVMaW5lTGFtYmRhX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9PbmVMaW5lTGFtYmRhX2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzUxOTZiNAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL09uZUxpbmVMYW1iZGFfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDkgQEAKK2NsYXNzIFRlc3QgeworICBwdWJsaWMgdm9pZCBmb28oKSB7CisgICAgQ29tcGFyYWJsZTxTdHJpbmc+IGMgPSBvIC0+IG5ld01ldGhvZChvKTsKKyAgfQorCisgICAgcHJpdmF0ZSBpbnQgbmV3TWV0aG9kKFN0cmluZyBvKSB7CisgICAgICAgIHJldHVybiBvLmluZGV4T2YoImZvbyIpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL094Zm9yZEJ1Zy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvT3hmb3JkQnVnLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjNlZjRmNwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL094Zm9yZEJ1Zy5qYXZhCkBAIC0wLDAgKzEsMTMgQEAKK2NsYXNzIE94Zm9yZEJ1ZyB7CisgICAgcHJpdmF0ZSBpbnQgZihpbnQgbSwgaW50IG4pIHRocm93cyBFeGNlcHRpb24geworICAgICAgICBpbnQgaSA9IDA7CisgICAgICAgIHdoaWxlIChpIDwgbikgeworICAgICAgICAgICAgaSsrOworICAgICAgICAgICAgPHNlbGVjdGlvbj5pZiAoaSA9PSBtKSB7CisgICAgICAgICAgICAgICAgbiArPSBtOworICAgICAgICAgICAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oIiIgKyBuKTsKKyAgICAgICAgICAgIH08L3NlbGVjdGlvbj4KKyAgICAgICAgfQorICAgICAgICByZXR1cm4gbjsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvT3hmb3JkQnVnX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9PeGZvcmRCdWdfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYjE3MmJkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvT3hmb3JkQnVnX2FmdGVyLmphdmEKQEAgLTAsMCArMSwxOCBAQAorY2xhc3MgT3hmb3JkQnVnIHsKKyAgICBwcml2YXRlIGludCBmKGludCBtLCBpbnQgbikgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgICAgIGludCBpID0gMDsKKyAgICAgICAgd2hpbGUgKGkgPCBuKSB7CisgICAgICAgICAgICBpKys7CisgICAgICAgICAgICBuID0gbmV3TWV0aG9kKG0sIG4sIGkpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBuOworICAgIH0KKworICAgIHByaXZhdGUgaW50IG5ld01ldGhvZChpbnQgbSwgaW50IG4sIGludCBpKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgICAgaWYgKGkgPT0gbSkgeworICAgICAgICAgICAgbiArPSBtOworICAgICAgICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbigiIiArIG4pOworICAgICAgICB9CisgICAgICAgIHJldHVybiBuOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9QYXJhbURldGVjdGlvbi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvUGFyYW1EZXRlY3Rpb24uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYmVmM2Q4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvUGFyYW1EZXRlY3Rpb24uamF2YQpAQCAtMCwwICsxLDIwIEBACitpbXBvcnQgamF2YS51dGlsLio7CisKK2NsYXNzIFRlc3QgeworICBwdWJsaWMgdm9pZCBmb28oKSB7CisgICAgPHNlbGVjdGlvbj5MaXN0IHRyYWRlczsKKyAgICB0cnkgeworICAgICAgdHJhZGVzID0gZ2V0VHJhZGVzKCk7CisgICAgfQorICAgIGNhdGNoIChSZW1vdGVFeGNlcHRpb24gZSkgeworICAgIH0KKyAgICA8L3NlbGVjdGlvbj4KKworICAgIC8vcHJvYmFibHkgbm90IGFzc2lnbmVkICEhIQorICAgIGlmICh0cmFkZXMuaXNFbXB0eSgpKSB7CisgICAgfQorICB9CisKKyAgc3RhdGljIGNsYXNzIFJlbW90ZUV4Y2VwdGlvbiBleHRlbmRzIEV4Y2VwdGlvbiB7CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL1BhcmFtRGV0ZWN0aW9uX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9QYXJhbURldGVjdGlvbl9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY2NGRkY2QKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9QYXJhbURldGVjdGlvbl9hZnRlci5qYXZhCkBAIC0wLDAgKzEsMjUgQEAKK2ltcG9ydCBqYXZhLnV0aWwuKjsKKworY2xhc3MgVGVzdCB7CisgIHB1YmxpYyB2b2lkIGZvbygpIHsKKyAgICAgIExpc3QgdHJhZGVzID0gbmV3TWV0aG9kKCk7CisgICAgCisKKyAgICAvL3Byb2JhYmx5IG5vdCBhc3NpZ25lZCAhISEKKyAgICBpZiAodHJhZGVzLmlzRW1wdHkoKSkgeworICAgIH0KKyAgfQorCisgICAgcHJpdmF0ZSBMaXN0IG5ld01ldGhvZCgpIHsKKyAgICAgICAgTGlzdCB0cmFkZXM7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgdHJhZGVzID0gZ2V0VHJhZGVzKCk7CisgICAgICAgIH0KKyAgICAgICAgY2F0Y2ggKFJlbW90ZUV4Y2VwdGlvbiBlKSB7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHRyYWRlczsKKyAgICB9CisKKyAgICBzdGF0aWMgY2xhc3MgUmVtb3RlRXhjZXB0aW9uIGV4dGVuZHMgRXhjZXB0aW9uIHsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvUGFyYW1ldGVyc0Zyb21Bbm9ueW1vdXMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL1BhcmFtZXRlcnNGcm9tQW5vbnltb3VzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmM5ZGMzYQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL1BhcmFtZXRlcnNGcm9tQW5vbnltb3VzLmphdmEKQEAgLTAsMCArMSwxMiBAQAorY2xhc3MgVGVzdCB7CisgIHZvaWQgZigpIHsKKyAgICBuZXcgUnVubmFibGUoKSB7CisgICAgICBwdWJsaWMgdm9pZCBydW4oKSB7CisgICAgICAgIGludCBqID0gMDsKKyAgICAgICAgaWYgKGogPT0gMCAmJiA8c2VsZWN0aW9uPmogPCAwICYmIGogPiAwPC9zZWxlY3Rpb24+KSB7CisgICAgICAgICAgYXNzZXJ0IGZhbHNlOworICAgICAgICB9CisgICAgICB9CisgICAgfTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL1BhcmFtZXRlcnNGcm9tQW5vbnltb3VzX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9QYXJhbWV0ZXJzRnJvbUFub255bW91c19hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg3NjhkYmMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9QYXJhbWV0ZXJzRnJvbUFub255bW91c19hZnRlci5qYXZhCkBAIC0wLDAgKzEsMTYgQEAKK2NsYXNzIFRlc3QgeworICB2b2lkIGYoKSB7CisgICAgbmV3IFJ1bm5hYmxlKCkgeworICAgICAgcHVibGljIHZvaWQgcnVuKCkgeworICAgICAgICBpbnQgaiA9IDA7CisgICAgICAgIGlmIChqID09IDAgJiYgbmV3TWV0aG9kKGopKSB7CisgICAgICAgICAgYXNzZXJ0IGZhbHNlOworICAgICAgICB9CisgICAgICB9CisgICAgfTsKKyAgfQorCisgICAgcHJpdmF0ZSBib29sZWFuIG5ld01ldGhvZChpbnQgaikgeworICAgICAgICByZXR1cm4gaiA8IDAgJiYgaiA+IDA7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL1BhcmFtc1VzZWRJbkxvY2FsQ2xhc3MuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL1BhcmFtc1VzZWRJbkxvY2FsQ2xhc3MuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MTAzZmI0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvUGFyYW1zVXNlZEluTG9jYWxDbGFzcy5qYXZhCkBAIC0wLDAgKzEsMTYgQEAKK2NsYXNzIEEgeworICAgIHZvaWQgZm9vKCkgeworICAgICAgZmluYWwgaW50IGFiYyA9IDA7CisgICAgICBib29sZWFuIGIgPSBmYWxzZTsKKyAgICAgIDxzZWxlY3Rpb24+CisgICAgICBpZiAoYikgeworICAgICAgICBjbGFzcyBUIHsKKyAgICAgICAgICB2b2lkIGJhcigpIHsKKyAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihhYmMpOworICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICByZXR1cm47CisgICAgICB9IDwvc2VsZWN0aW9uPgorICAgICAgU3lzdGVtLm91dC5wcmludGxuKCIiKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvUGFyYW1zVXNlZEluTG9jYWxDbGFzc19hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvUGFyYW1zVXNlZEluTG9jYWxDbGFzc19hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMzMjY4ZWYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9QYXJhbXNVc2VkSW5Mb2NhbENsYXNzX2FmdGVyLmphdmEKQEAgLTAsMCArMSwyMSBAQAorY2xhc3MgQSB7CisgICAgdm9pZCBmb28oKSB7CisgICAgICBmaW5hbCBpbnQgYWJjID0gMDsKKyAgICAgIGJvb2xlYW4gYiA9IGZhbHNlOworCisgICAgICAgIGlmIChuZXdNZXRob2QoYWJjLCBiKSkgcmV0dXJuOworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIiIpOworICAgIH0KKworICAgIHByaXZhdGUgYm9vbGVhbiBuZXdNZXRob2QoZmluYWwgaW50IGFiYywgYm9vbGVhbiBiKSB7CisgICAgICAgIGlmIChiKSB7CisgICAgICAgICAgY2xhc3MgVCB7CisgICAgICAgICAgICB2b2lkIGJhcigpIHsKKyAgICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKGFiYyk7CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9SZWFzc2lnbmVkVmFyQWZ0ZXJDYWxsLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9SZWFzc2lnbmVkVmFyQWZ0ZXJDYWxsLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODUyZDBmOAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL1JlYXNzaWduZWRWYXJBZnRlckNhbGwuamF2YQpAQCAtMCwwICsxLDggQEAKK2NsYXNzIEEgeworICAgIHB1YmxpYyB2b2lkIHRlc3QoKSB7CisgICAgICAgIDxzZWxlY3Rpb24+aW50IGNvdW50PTA7CisgICAgICAgIGZvcihpbnQgaj0wOyBqPDEwMDsgaisrKSBjb3VudCsrOzwvc2VsZWN0aW9uPgorICAgICAgICBjb3VudD0wOworICAgICAgICBmb3IoaW50IGo9MDsgajwxMDA7IGorKykgY291bnQrKzsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvUmVhc3NpZ25lZFZhckFmdGVyQ2FsbF9hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvUmVhc3NpZ25lZFZhckFmdGVyQ2FsbF9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ2ZTY3MWIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9SZWFzc2lnbmVkVmFyQWZ0ZXJDYWxsX2FmdGVyLmphdmEKQEAgLTAsMCArMSwxMyBAQAorY2xhc3MgQSB7CisgICAgcHVibGljIHZvaWQgdGVzdCgpIHsKKyAgICAgICAgbmV3TWV0aG9kKCk7CisgICAgICAgIGludCBjb3VudDsKKyAgICAgICAgY291bnQ9MDsKKyAgICAgICAgZm9yKGludCBqPTA7IGo8MTAwOyBqKyspIGNvdW50Kys7CisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIG5ld01ldGhvZCgpIHsKKyAgICAgICAgaW50IGNvdW50PTA7CisgICAgICAgIGZvcihpbnQgaj0wOyBqPDEwMDsgaisrKSBjb3VudCsrOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9SZWN1cnNpdmVDYWxsVG9FeHRyYWN0ZWQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL1JlY3Vyc2l2ZUNhbGxUb0V4dHJhY3RlZC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE2YTE1ZWMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9SZWN1cnNpdmVDYWxsVG9FeHRyYWN0ZWQuamF2YQpAQCAtMCwwICsxLDggQEAKK3B1YmxpYyBjbGFzcyBFeHRyYWN0TWV0aG9kcyB7CisgICB2b2lkIG5ld01ldGhvZCgpIHsKKyAgICAgaW50IGkgPSAwOworICAgICA8c2VsZWN0aW9uPmlmICh0cnVlKSB7CisgICAgICAgbmV3TWV0aG9kKGkpOworICAgICB9PC9zZWxlY3Rpb24+CisgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9SZWN1cnNpdmVDYWxsVG9FeHRyYWN0ZWRfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL1JlY3Vyc2l2ZUNhbGxUb0V4dHJhY3RlZF9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE2ZmZkYTcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9SZWN1cnNpdmVDYWxsVG9FeHRyYWN0ZWRfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDEyIEBACitwdWJsaWMgY2xhc3MgRXh0cmFjdE1ldGhvZHMgeworICAgdm9pZCBuZXdNZXRob2QoKSB7CisgICAgIGludCBpID0gMDsKKyAgICAgICBuZXdNZXRob2QoaSk7CisgICB9CisKKyAgICBwcml2YXRlIHZvaWQgbmV3TWV0aG9kKGludCBpKSB7CisgICAgICAgIGlmICh0cnVlKSB7CisgICAgICAgICAgbmV3TWV0aG9kKGkpOworICAgICAgICB9CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvUmVkdW5kYW50Q2FzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvUmVkdW5kYW50Q2FzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIyZjc3ZGYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9SZWR1bmRhbnRDYXN0LmphdmEKQEAgLTAsMCArMSw2IEBACitjbGFzcyBUZXN0IHsKKyAgICB2b2lkIGZvbyAoKSB7CisgICAgICAgIGludCBhID0gMTsKKyAgICAgICAgPHNlbGVjdGlvbj5TeXN0ZW0ub3V0LnByaW50bG4oIiIgKyAoT2JqZWN0KWEpOzwvc2VsZWN0aW9uPgorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9SZWR1bmRhbnRDYXN0X2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9SZWR1bmRhbnRDYXN0X2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDczODE5YQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL1JlZHVuZGFudENhc3RfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDEwIEBACitjbGFzcyBUZXN0IHsKKyAgICB2b2lkIGZvbyAoKSB7CisgICAgICAgIGludCBhID0gMTsKKyAgICAgICAgbmV3TWV0aG9kKGEpOworICAgIH0KKworICAgIHByaXZhdGUgdm9pZCBuZXdNZXRob2QoT2JqZWN0IGEpIHsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCIiICsgYSk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL1JldHVybkZyb21UcnkuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL1JldHVybkZyb21UcnkuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMzI0ZGU1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvUmV0dXJuRnJvbVRyeS5qYXZhCkBAIC0wLDAgKzEsMTYgQEAKK2NsYXNzIEEgeworICAgIHB1YmxpYyBTdHJpbmcgbWV0aG9kKCkgeworICAgICAgICB0cnkgeworICAgICAgICAgICAgPHNlbGVjdGlvbj50cnkgeworICAgICAgICAgICAgICAgIHJldHVybiAiIjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGZpbmFsbHkgeworICAgICAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiZiIpOworICAgICAgICAgICAgfTwvc2VsZWN0aW9uPgorICAgICAgICB9CisgICAgICAgIGNhdGNoIChFcnJvciBlKSB7CisKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gIiI7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL1JldHVybkZyb21UcnlfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL1JldHVybkZyb21UcnlfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NjIxYWIyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvUmV0dXJuRnJvbVRyeV9hZnRlci5qYXZhCkBAIC0wLDAgKzEsMjAgQEAKK2NsYXNzIEEgeworICAgIHB1YmxpYyBTdHJpbmcgbWV0aG9kKCkgeworICAgICAgICB0cnkgeworICAgICAgICAgICAgcmV0dXJuIG5ld01ldGhvZCgpOworICAgICAgICB9CisgICAgICAgIGNhdGNoIChFcnJvciBlKSB7CisKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gIiI7CisgICAgfQorCisgICAgcHJpdmF0ZSBTdHJpbmcgbmV3TWV0aG9kKCkgeworICAgICAgICB0cnkgeworICAgICAgICAgICAgcmV0dXJuICIiOworICAgICAgICB9CisgICAgICAgIGZpbmFsbHkgeworICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJmIik7CisgICAgICAgIH0KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvUmV0dXJuU3RhdGVtZW50Rm9sZGluZy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvUmV0dXJuU3RhdGVtZW50Rm9sZGluZy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY5OWQxZGEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9SZXR1cm5TdGF0ZW1lbnRGb2xkaW5nLmphdmEKQEAgLTAsMCArMSw1IEBACitwdWJsaWMgY2xhc3MgVGVzdCB7CisgIFN0cmluZyBmb28oU3RyaW5nW10gcywgaW50IGkpIHsKKyAgICAgcmV0dXJuIDxzZWxlY3Rpb24+c1tpXTwvc2VsZWN0aW9uPjsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL1JldHVyblN0YXRlbWVudEZvbGRpbmdfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL1JldHVyblN0YXRlbWVudEZvbGRpbmdfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMDgzYmFmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvUmV0dXJuU3RhdGVtZW50Rm9sZGluZ19hZnRlci5qYXZhCkBAIC0wLDAgKzEsOSBAQAorcHVibGljIGNsYXNzIFRlc3QgeworICBTdHJpbmcgZm9vKFN0cmluZ1tdIHMsIGludCBpKSB7CisgICAgIHJldHVybiBuZXdNZXRob2Qoc1tpXSk7CisgIH0KKworICAgIHByaXZhdGUgU3RyaW5nIG5ld01ldGhvZChTdHJpbmcgcykgeworICAgICAgICByZXR1cm4gczsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvU0NSMTIyNDUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL1NDUjEyMjQ1LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzZmNzk5YgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL1NDUjEyMjQ1LmphdmEKQEAgLTAsMCArMSwxMSBAQAorcHVibGljIGNsYXNzIEEgeworICAgIHByaXZhdGUgdm9pZCBmb28oKSB7CisgICAgICAgIFJ1bm5hYmxlIGEgPSBuZXcgUnVubmFibGUoKSB7CisgICAgICAgICAgICBwcml2YXRlIGludCBhOworCisgICAgICAgICAgICBwdWJsaWMgdm9pZCBydW4oKSB7CisgICAgICAgICAgICAgICAgPHNlbGVjdGlvbj5hID0gMjwvc2VsZWN0aW9uPjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvU0NSMTIyNDVfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL1NDUjEyMjQ1X2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTcyOTE3NAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL1NDUjEyMjQ1X2FmdGVyLmphdmEKQEAgLTAsMCArMSwxNSBAQAorcHVibGljIGNsYXNzIEEgeworICAgIHByaXZhdGUgdm9pZCBmb28oKSB7CisgICAgICAgIFJ1bm5hYmxlIGEgPSBuZXcgUnVubmFibGUoKSB7CisgICAgICAgICAgICBwcml2YXRlIGludCBhOworCisgICAgICAgICAgICBwdWJsaWMgdm9pZCBydW4oKSB7CisgICAgICAgICAgICAgICAgbmV3TWV0aG9kKCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHByaXZhdGUgdm9pZCBuZXdNZXRob2QoKSB7CisgICAgICAgICAgICAgICAgYSA9IDI7CisgICAgICAgICAgICB9CisgICAgICAgIH07CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL1NDUjE1ODE1LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9TQ1IxNTgxNS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZhNzQxN2YKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9TQ1IxNTgxNS5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKK3B1YmxpYyBjbGFzcyBGb28geworICAgIHN0YXRpYyBGb28KKyAgICAgICAgICAgIGYxID0gbmV3IEZvbygpeworICAgICAgICAgICAgICAgIHB1YmxpYyBTdHJpbmcgdG9TdHJpbmcoKSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiA8c2VsZWN0aW9uPiJhIiArICJiIjwvc2VsZWN0aW9uPjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgZjIgPSBuZXcgRm9vKCl7fTsKKworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL1NDUjE1ODE1X2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9TQ1IxNTgxNV9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIzYTUzZGU4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvU0NSMTU4MTVfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDE1IEBACitwdWJsaWMgY2xhc3MgRm9vIHsKKyAgICBzdGF0aWMgRm9vCisgICAgICAgICAgICBmMSA9IG5ldyBGb28oKXsKKyAgICAgICAgICAgICAgICBwdWJsaWMgU3RyaW5nIHRvU3RyaW5nKCkgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3TWV0aG9kKCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfTsKKworICAgIHByaXZhdGUgc3RhdGljIFN0cmluZyBuZXdNZXRob2QoKSB7CisgICAgICAgIHJldHVybiAiYSIgKyAiYiI7CisgICAgfQorCisgICAgc3RhdGljIEZvbyBmMiA9IG5ldyBGb28oKXt9OworCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvU0NSMjc4ODcuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL1NDUjI3ODg3LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjRhN2IzMwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL1NDUjI3ODg3LmphdmEKQEAgLTAsMCArMSw0MSBAQAorcGFja2FnZSBleHRyYWN0TWV0aG9kOworCitpbXBvcnQgamF2YS5pby4qOworaW1wb3J0IGphdmEudXRpbC5JdGVyYXRvcjsKKworcHVibGljIGNsYXNzIFNDUjI3ODg3IHsKKyAgICBwdWJsaWMgaW50IHB1Ymxpc2h4KE91dHB1dFN0cmVhbSBvdXQsIGJvb2xlYW4gaW5jbHVkZUNvZGUpIHRocm93cyBJT0V4Y2VwdGlvbiB7CisgICAgICAgIGlmIChWRVJCT1NFKSBTeXN0ZW0uZXJyLnByaW50bG4oIlBVQkxJU0g6IHB1Ymxpc2hpbmcgc3Vic3lzdGVtICciICsgc3Vic3lzdGVtLnJlZlF1YWxpZmllZElkZW50aWZ5aW5nTmFtZSgpICsgIicgd2l0aCIgKyAoaW5jbHVkZUNvZGUgPyAiIiA6ICJvdXQiKSArICIgY29kZSIpOworICAgICAgICBaaXBwaW5nWE1MR2VuZXJhdG9yRmFjdG9yeSBnZW5GYWMgPSBuZXcgWmlwcGluZ1hNTEdlbmVyYXRvckZhY3Rvcnkob3V0KTsKKy8vPT09PT09PT0KKyAgICAgICAgPHNlbGVjdGlvbj5SZWZPYmplY3RVTGlzdCBpbmNsdWRlZCA9IG1ha2VJbmNsdWRlZFNldCgpOworICAgICAgICBpZiAoIWluY2x1ZGVkLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgU2NhdHRlcmluZ0RvY0J1aWxkZXIgZG9jQnVpbGRlciA9IG5ldyBNeURvY0J1aWxkZXIocmVwb3NpdG9yeSwgaW5jbHVkZWQpOworICAgICAgICAgICAgbmV3IFJlcG9zaXRvcnlTYXZlcihyZXBvc2l0b3J5KS5zYXZlVG8oZ2VuRmFjLCBkb2NCdWlsZGVyKTsKKyAgICAgICAgfTwvc2VsZWN0aW9uPgorLy89PT09PT09PQorICAgICAgICBpZiAoaW5jbHVkZUNvZGUpIHsKKyAgICAgICAgICAgIGZvciAoSXRlcmF0b3IgaSA9IHN1YnN5c3RlbS5nZXRNb2R1bGUoKS5pdGVyYXRvcigpOyBpLmhhc05leHQoKTspIHsKKyAgICAgICAgICAgICAgICBPcHRpbWFsTW9kdWxlIG1vZHVsZSA9IChPcHRpbWFsTW9kdWxlKSBpLm5leHQoKTsKKyAgICAgICAgICAgICAgICBpZiAobW9kdWxlLmdldFB1Ymxpc2hlZCgpKSB7CisgICAgICAgICAgICAgICAgICAgIEZpbGVPYmplY3RbXSBmaWxlcyA9IGdldE1vZHVsZVByb2R1Y3RzKG1vZHVsZSk7CisgICAgICAgICAgICAgICAgICAgIGlmIChmaWxlcyAhPSBudWxsICYmIGZpbGVzLmxlbmd0aCA+IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgZmlsZXMubGVuZ3RoOyBqKyspIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBGaWxlT2JqZWN0IGZpbGUgPSBmaWxlc1tqXTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXRTdHJlYW0gb3MgPSBnZW5GYWMuZ2V0T3V0cHV0U3RyZWFtKGZpbGUuZ2V0RmlsZU5hbWUoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5wdXRTdHJlYW0gaXMgPSBmaWxlLmdldElucHV0U3RyZWFtKCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29weVN0cmVhbShpcywgb3MpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZmluYWxseSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLmNsb3NlKCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzLmNsb3NlKCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGdlbkZhYy5jbG9zZSgpOworICAgICAgICByZXR1cm4gaW5jbHVkZWQuc2l6ZSgpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL1NDUjI3ODg3X2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9TQ1IyNzg4N19hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIyZTVlMzMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9TQ1IyNzg4N19hZnRlci5qYXZhCkBAIC0wLDAgKzEsNDYgQEAKK3BhY2thZ2UgZXh0cmFjdE1ldGhvZDsKKworaW1wb3J0IGphdmEuaW8uKjsKK2ltcG9ydCBqYXZhLnV0aWwuSXRlcmF0b3I7CisKK3B1YmxpYyBjbGFzcyBTQ1IyNzg4NyB7CisgICAgcHVibGljIGludCBwdWJsaXNoeChPdXRwdXRTdHJlYW0gb3V0LCBib29sZWFuIGluY2x1ZGVDb2RlKSB0aHJvd3MgSU9FeGNlcHRpb24geworICAgICAgICBpZiAoVkVSQk9TRSkgU3lzdGVtLmVyci5wcmludGxuKCJQVUJMSVNIOiBwdWJsaXNoaW5nIHN1YnN5c3RlbSAnIiArIHN1YnN5c3RlbS5yZWZRdWFsaWZpZWRJZGVudGlmeWluZ05hbWUoKSArICInIHdpdGgiICsgKGluY2x1ZGVDb2RlID8gIiIgOiAib3V0IikgKyAiIGNvZGUiKTsKKyAgICAgICAgWmlwcGluZ1hNTEdlbmVyYXRvckZhY3RvcnkgZ2VuRmFjID0gbmV3IFppcHBpbmdYTUxHZW5lcmF0b3JGYWN0b3J5KG91dCk7CisvLz09PT09PT09CisgICAgICAgIFJlZk9iamVjdFVMaXN0IGluY2x1ZGVkID0gbmV3TWV0aG9kKGdlbkZhYyk7CisvLz09PT09PT09CisgICAgICAgIGlmIChpbmNsdWRlQ29kZSkgeworICAgICAgICAgICAgZm9yIChJdGVyYXRvciBpID0gc3Vic3lzdGVtLmdldE1vZHVsZSgpLml0ZXJhdG9yKCk7IGkuaGFzTmV4dCgpOykgeworICAgICAgICAgICAgICAgIE9wdGltYWxNb2R1bGUgbW9kdWxlID0gKE9wdGltYWxNb2R1bGUpIGkubmV4dCgpOworICAgICAgICAgICAgICAgIGlmIChtb2R1bGUuZ2V0UHVibGlzaGVkKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgRmlsZU9iamVjdFtdIGZpbGVzID0gZ2V0TW9kdWxlUHJvZHVjdHMobW9kdWxlKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGZpbGVzICE9IG51bGwgJiYgZmlsZXMubGVuZ3RoID4gMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCBmaWxlcy5sZW5ndGg7IGorKykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZpbGVPYmplY3QgZmlsZSA9IGZpbGVzW2pdOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dFN0cmVhbSBvcyA9IGdlbkZhYy5nZXRPdXRwdXRTdHJlYW0oZmlsZS5nZXRGaWxlTmFtZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnB1dFN0cmVhbSBpcyA9IGZpbGUuZ2V0SW5wdXRTdHJlYW0oKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3B5U3RyZWFtKGlzLCBvcyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBmaW5hbGx5IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3MuY2xvc2UoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXMuY2xvc2UoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZ2VuRmFjLmNsb3NlKCk7CisgICAgICAgIHJldHVybiBpbmNsdWRlZC5zaXplKCk7CisgICAgfQorCisgICAgcHJpdmF0ZSBSZWZPYmplY3RVTGlzdCBuZXdNZXRob2QoWmlwcGluZ1hNTEdlbmVyYXRvckZhY3RvcnkgZ2VuRmFjKSB7CisgICAgICAgIFJlZk9iamVjdFVMaXN0IGluY2x1ZGVkID0gbWFrZUluY2x1ZGVkU2V0KCk7CisgICAgICAgIGlmICghaW5jbHVkZWQuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICBTY2F0dGVyaW5nRG9jQnVpbGRlciBkb2NCdWlsZGVyID0gbmV3IE15RG9jQnVpbGRlcihyZXBvc2l0b3J5LCBpbmNsdWRlZCk7CisgICAgICAgICAgICBuZXcgUmVwb3NpdG9yeVNhdmVyKHJlcG9zaXRvcnkpLnNhdmVUbyhnZW5GYWMsIGRvY0J1aWxkZXIpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBpbmNsdWRlZDsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9TQ1IyODQyNy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvU0NSMjg0MjcuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZjkxZTBjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvU0NSMjg0MjcuamF2YQpAQCAtMCwwICsxLDUgQEAKK2NsYXNzIFRlc3RDYXNlIHsKKyAgYm9vbGVhbiBhID0gdHJ1ZTsKKyAgYm9vbGVhbiBiID0gZmFsc2U7CisgIGJvb2xlYW4geCA9IDxzZWxlY3Rpb24+YSAmJiBiPC9zZWxlY3Rpb24+OworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL1NDUjI4NDI3X2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9TQ1IyODQyN19hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFhYmZmZGYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9TQ1IyODQyN19hZnRlci5qYXZhCkBAIC0wLDAgKzEsOSBAQAorY2xhc3MgVGVzdENhc2UgeworICBib29sZWFuIGEgPSB0cnVlOworICBib29sZWFuIGIgPSBmYWxzZTsKKyAgYm9vbGVhbiB4ID0gbmV3TWV0aG9kKCk7CisKKyAgICBwcml2YXRlIGJvb2xlYW4gbmV3TWV0aG9kKCkgeworICAgICAgICByZXR1cm4gYSAmJiBiOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9TQ1IzMjkyNC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvU0NSMzI5MjQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNTAwNTg5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvU0NSMzI5MjQuamF2YQpAQCAtMCwwICsxLDYgQEAKK3B1YmxpYyBjbGFzcyBUZXN0IHsKKyAgICB2b2lkIG0oKSB7CisgICAgICAgIE9iamVjdCB4ID0gbnVsbDsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJ4ID0gIiArIDxzZWxlY3Rpb24+eDwvc2VsZWN0aW9uPik7IC8vIFsuLi5dID0gc2VsZWN0aW9uCisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL1NDUjMyOTI0X2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9TQ1IzMjkyNF9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVkYjlhOTQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9TQ1IzMjkyNF9hZnRlci5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKK3B1YmxpYyBjbGFzcyBUZXN0IHsKKyAgICB2b2lkIG0oKSB7CisgICAgICAgIE9iamVjdCB4ID0gbnVsbDsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJ4ID0gIiArIG5ld01ldGhvZCh4KSk7IC8vIFsuLi5dID0gc2VsZWN0aW9uCisgICAgfQorCisgICAgcHJpdmF0ZSBPYmplY3QgbmV3TWV0aG9kKE9iamVjdCB4KSB7CisgICAgICAgIHJldHVybiB4OworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9TY3IxMDQ2NC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvU2NyMTA0NjQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZTFkMzYzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvU2NyMTA0NjQuamF2YQpAQCAtMCwwICsxLDkgQEAKK2NsYXNzIFRlc3QgeworICAgIHB1YmxpYyBPYmplY3QgbWV0aG9kKCkgeworICAgICAgICA8c2VsZWN0aW9uPmJhcigpOzwvc2VsZWN0aW9uPgorICAgICAgICByZXR1cm4gbnVsbDsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBiYXIoKSB7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL1NjcjEwNDY0X2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9TY3IxMDQ2NF9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFjZjBiNTgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9TY3IxMDQ2NF9hZnRlci5qYXZhCkBAIC0wLDAgKzEsMTMgQEAKK2NsYXNzIFRlc3QgeworICAgIHB1YmxpYyBPYmplY3QgbWV0aG9kKCkgeworICAgICAgICBuZXdNZXRob2QoKTsKKyAgICAgICAgcmV0dXJuIG51bGw7CisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIG5ld01ldGhvZCgpIHsKKyAgICAgICAgYmFyKCk7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgYmFyKCkgeworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9TY3I2MjQxLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9TY3I2MjQxLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTdjOGEyZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL1NjcjYyNDEuamF2YQpAQCAtMCwwICsxLDcgQEAKK2ltcG9ydCBqYXZhLnV0aWwuKjsKKworY2xhc3MgVGVzdCBleHRlbmRzIEdyZWdvcmlhbkNhbGVuZGFyIHsKKyAgICBwdWJsaWMgYm9vbGVhbiBpc1NhdHVyZGF5KCkgeworICAgICAgICByZXR1cm4gPHNlbGVjdGlvbj5nZXQoIENhbGVuZGFyLkRBWV9PRl9XRUVLICk8L3NlbGVjdGlvbj4gPT0gU0FUVVJEQVk7CisgICAgfSAgICAKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9TY3I2MjQxX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9TY3I2MjQxX2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmRjOTc5MwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL1NjcjYyNDFfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDExIEBACitpbXBvcnQgamF2YS51dGlsLio7CisKK2NsYXNzIFRlc3QgZXh0ZW5kcyBHcmVnb3JpYW5DYWxlbmRhciB7CisgICAgcHVibGljIGJvb2xlYW4gaXNTYXR1cmRheSgpIHsKKyAgICAgICAgcmV0dXJuIG5ld01ldGhvZCgpID09IFNBVFVSREFZOworICAgIH0KKworICAgIHByaXZhdGUgaW50IG5ld01ldGhvZCgpIHsKKyAgICAgICAgcmV0dXJuIGdldCggQ2FsZW5kYXIuREFZX09GX1dFRUsgKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvU2NyNzA5MS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvU2NyNzA5MS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI2MjVkNjIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9TY3I3MDkxLmphdmEKQEAgLTAsMCArMSwyOSBAQAorcHVibGljIGNsYXNzIElkZWFUZXN0QnVnIHsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBNQVBfSEVJR0hUID0gMTAwMDsKKworICAgIE9iamVjdFtdW10gX21hcDsKKworICAgIHB1YmxpYyBpbnQgY2hlY2tBbmRSZW1vdmVDb25kaXRpb25zKCkgeworICAgICAgICBpbnQgY29uZGl0aW9uc0ZvdW5kID0gMDsKKyAgICAgICAgZm9yIChpbnQgeSA9IDA7IHkgPCBNQVBfSEVJR0hUOyB5KyspIHsKKyAgICAgICAgICAgIHdoaWxlIChpc0NoZWNrQ29uZGl0aW9uKHkpKSB7CisgICAgICAgICAgICAgICAgKytjb25kaXRpb25zRm91bmQ7CisKKyAgICAgICAgICAgICAgICA8c2VsZWN0aW9uPmZpbmFsIE9iamVjdFtdIHRlbXAgPSBfbWFwW3ldOworICAgICAgICAgICAgICAgIGZvciAoaW50IHggPSAwOyB4IDwgdGVtcC5sZW5ndGg7IHgrKykgeworICAgICAgICAgICAgICAgICAgICB0ZW1wW3hdID0gbnVsbDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZm9yIChpbnQgeXkgPSB5ICsgMTsgeXkgPCBNQVBfSEVJR0hUOyArK3l5KSB7CisgICAgICAgICAgICAgICAgICAgIF9tYXBbeXkgLSAxXSA9IF9tYXBbeXldOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBfbWFwW01BUF9IRUlHSFQgLSAxXSA9IHRlbXA7PC9zZWxlY3Rpb24+CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGNvbmRpdGlvbnNGb3VuZDsKKyAgICB9CisKKyAgICBwcml2YXRlIGJvb2xlYW4gaXNDaGVja0NvbmRpdGlvbihpbnQgeSkgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvU2NyNzA5MV9hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvU2NyNzA5MV9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRhNTUyMzQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9TY3I3MDkxX2FmdGVyLmphdmEKQEAgLTAsMCArMSwzMyBAQAorcHVibGljIGNsYXNzIElkZWFUZXN0QnVnIHsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBNQVBfSEVJR0hUID0gMTAwMDsKKworICAgIE9iamVjdFtdW10gX21hcDsKKworICAgIHB1YmxpYyBpbnQgY2hlY2tBbmRSZW1vdmVDb25kaXRpb25zKCkgeworICAgICAgICBpbnQgY29uZGl0aW9uc0ZvdW5kID0gMDsKKyAgICAgICAgZm9yIChpbnQgeSA9IDA7IHkgPCBNQVBfSEVJR0hUOyB5KyspIHsKKyAgICAgICAgICAgIHdoaWxlIChpc0NoZWNrQ29uZGl0aW9uKHkpKSB7CisgICAgICAgICAgICAgICAgKytjb25kaXRpb25zRm91bmQ7CisKKyAgICAgICAgICAgICAgICBuZXdNZXRob2QoeSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGNvbmRpdGlvbnNGb3VuZDsKKyAgICB9CisKKyAgICBwcml2YXRlIHZvaWQgbmV3TWV0aG9kKGludCB5KSB7CisgICAgICAgIGZpbmFsIE9iamVjdFtdIHRlbXAgPSBfbWFwW3ldOworICAgICAgICBmb3IgKGludCB4ID0gMDsgeCA8IHRlbXAubGVuZ3RoOyB4KyspIHsKKyAgICAgICAgICAgIHRlbXBbeF0gPSBudWxsOworICAgICAgICB9CisgICAgICAgIGZvciAoaW50IHl5ID0geSArIDE7IHl5IDwgTUFQX0hFSUdIVDsgKyt5eSkgeworICAgICAgICAgICAgX21hcFt5eSAtIDFdID0gX21hcFt5eV07CisgICAgICAgIH0KKyAgICAgICAgX21hcFtNQVBfSEVJR0hUIC0gMV0gPSB0ZW1wOworICAgIH0KKworICAgIHByaXZhdGUgYm9vbGVhbiBpc0NoZWNrQ29uZGl0aW9uKGludCB5KSB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9TY3I5ODUyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9TY3I5ODUyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmVhNjllNAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL1Njcjk4NTIuamF2YQpAQCAtMCwwICsxLDkgQEAKK2NsYXNzIFRlc3QgeworICAgIGludCBmKCkgeworICAgICAgICB0cnkgeworICAgICAgICAgICAgPHNlbGVjdGlvbj5pbnQgayA9IDA7CisgICAgICAgICAgICByZXR1cm4gazs8L3NlbGVjdGlvbj4KKyAgICAgICAgfSBmaW5hbGx5IHsKKyAgICAgICAgfQorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9TY3I5ODUyX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9TY3I5ODUyX2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWQzMDFjNQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL1Njcjk4NTJfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDEzIEBACitjbGFzcyBUZXN0IHsKKyAgICBpbnQgZigpIHsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIHJldHVybiBuZXdNZXRob2QoKTsKKyAgICAgICAgfSBmaW5hbGx5IHsKKyAgICAgICAgfQorICAgIH0KKworICAgIHByaXZhdGUgaW50IG5ld01ldGhvZCgpIHsKKyAgICAgICAgaW50IGsgPSAwOworICAgICAgICByZXR1cm4gazsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvU2hvcnRDaXJjdWl0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9TaG9ydENpcmN1aXQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNjllNzMzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvU2hvcnRDaXJjdWl0LmphdmEKQEAgLTAsMCArMSw2IEBACitwdWJsaWMgY2xhc3MgVGVzdCB7CisgIHZvaWQgZm9vKFN0cmluZyBjb250YWluZXIpIHsKKyAgICA8c2VsZWN0aW9uPlN0cmluZyBwYXJlbnQ7CisgICAgaWYgKGNvbnRhaW5lciA9PSBudWxsICYmIChwYXJlbnQgPSBudWxsKSAhPSBudWxsICYmIHBhcmVudCAhPSBudWxsKSB7fTwvc2VsZWN0aW9uPgorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvU2hvcnRDaXJjdWl0X2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9TaG9ydENpcmN1aXRfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mM2Q3NTQ1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvU2hvcnRDaXJjdWl0X2FmdGVyLmphdmEKQEAgLTAsMCArMSwxMCBAQAorcHVibGljIGNsYXNzIFRlc3QgeworICB2b2lkIGZvbyhTdHJpbmcgY29udGFpbmVyKSB7CisgICAgICBuZXdNZXRob2QoY29udGFpbmVyKTsKKyAgfQorCisgICAgcHJpdmF0ZSB2b2lkIG5ld01ldGhvZChTdHJpbmcgY29udGFpbmVyKSB7CisgICAgICAgIFN0cmluZyBwYXJlbnQ7CisgICAgICAgIGlmIChjb250YWluZXIgPT0gbnVsbCAmJiAocGFyZW50ID0gbnVsbCkgIT0gbnVsbCAmJiBwYXJlbnQgIT0gbnVsbCkge30KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvU2ltcGxlQXJyYXlBY2Nlc3MuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL1NpbXBsZUFycmF5QWNjZXNzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGE4Yjg1ZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL1NpbXBsZUFycmF5QWNjZXNzLmphdmEKQEAgLTAsMCArMSw1IEBACitjbGFzcyBUZXN0IHsKKyAgdm9pZCBmb28oU3RyaW5nW10gc3MpIHsKKyAgICA8c2VsZWN0aW9uPlN5c3RlbS5vdXQucHJpbnRsbihzc1swXSk7PC9zZWxlY3Rpb24+CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9TaW1wbGVBcnJheUFjY2Vzc19hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvU2ltcGxlQXJyYXlBY2Nlc3NfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMWUwYjI3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvU2ltcGxlQXJyYXlBY2Nlc3NfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDkgQEAKK2NsYXNzIFRlc3QgeworICB2b2lkIGZvbyhTdHJpbmdbXSBzcykgeworICAgICAgbmV3TWV0aG9kKHNzWzBdKTsKKyAgfQorCisgICAgcHJpdmF0ZSB2b2lkIG5ld01ldGhvZChTdHJpbmcgcykgeworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4ocyk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL1NraXBDb21tZW50cy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvU2tpcENvbW1lbnRzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjczMjZjOQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL1NraXBDb21tZW50cy5qYXZhCkBAIC0wLDAgKzEsNSBAQAorY2xhc3MgVGVzdCB7CisgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKKyAgICBTdHJpbmcgYXJnID0gPHNlbGVjdGlvbj5hcmdzWzBdOyAgIC8vY29tbWVudDwvc2VsZWN0aW9uPgorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvU2tpcENvbW1lbnRzX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9Ta2lwQ29tbWVudHNfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MWM4YzNkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvU2tpcENvbW1lbnRzX2FmdGVyLmphdmEKQEAgLTAsMCArMSw5IEBACitjbGFzcyBUZXN0IHsKKyAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgeworICAgIFN0cmluZyBhcmcgPSBuZXdNZXRob2QoYXJnc1swXSk7ICAgLy9jb21tZW50CisgIH0KKworICAgIHByaXZhdGUgc3RhdGljIFN0cmluZyBuZXdNZXRob2QoU3RyaW5nIGFyZykgeworICAgICAgICByZXR1cm4gYXJnOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9TdGF0aWNJbXBvcnQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL1N0YXRpY0ltcG9ydC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVjNzlkZDgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9TdGF0aWNJbXBvcnQuamF2YQpAQCAtMCwwICsxLDcgQEAKK2ltcG9ydCBzdGF0aWMgamF2YS5sYW5nLkludGVnZXIuTUFYX1ZBTFVFOworCitjbGFzcyBTdGF0aWNJbXBvcnQgeworICAgIHZvaWQgdGVzdCgpIHsKKyAgICAgICAgPHNlbGVjdGlvbj5TeXN0ZW0ub3V0LnByaW50bG4oTUFYX1ZBTFVFKTs8L3NlbGVjdGlvbj4KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvU3RhdGljSW1wb3J0X2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9TdGF0aWNJbXBvcnRfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZjI0YzBmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvU3RhdGljSW1wb3J0X2FmdGVyLmphdmEKQEAgLTAsMCArMSwxMSBAQAoraW1wb3J0IHN0YXRpYyBqYXZhLmxhbmcuSW50ZWdlci5NQVhfVkFMVUU7CisKK2NsYXNzIFN0YXRpY0ltcG9ydCB7CisgICAgdm9pZCB0ZXN0KCkgeworICAgICAgICBuZXdNZXRob2QoKTsKKyAgICB9CisKKyAgICBwcml2YXRlIHZvaWQgbmV3TWV0aG9kKCkgeworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oTUFYX1ZBTFVFKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvU3RvcEZvbGRpbmcuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL1N0b3BGb2xkaW5nLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjRjYTJkYwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL1N0b3BGb2xkaW5nLmphdmEKQEAgLTAsMCArMSw1NSBAQAorY2xhc3MgQSB7CisgICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgeworICAgICAgICBTdGF0RGVzY3JpcHRvcltdIGFsbFN0YXRNZW1iZXJzID0gbmV3IFN0YXREZXNjcmlwdG9yW10ge307CisgICAgICAgIFdTU3RhdHNbXSBhbGxTdGF0cyA9IG5ldyBXU1N0YXRzW10ge307CisKKyAgICAgICAgU3RyaW5nQnVmZmVyIHNiID0gbmV3IFN0cmluZ0J1ZmZlcigpOworICAgICAgICBzYi5hcHBlbmQoIkFsbCBzdGF0IG1lbWJlcnMgZm91bmQ6XG4iKTsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBhbGxTdGF0TWVtYmVycy5sZW5ndGg7IGkrKykgeworICAgICAgICAgICAgU3RhdERlc2NyaXB0b3Igc3RhdE1lbWJlciA9IGFsbFN0YXRNZW1iZXJzW2ldOworCisgICAgICAgICAgICA8c2VsZWN0aW9uPgorICAgICAgICAgICAgc2IuYXBwZW5kKHN0YXRNZW1iZXIudG9TdHJpbmcoKSk7CisKKyAgICAgICAgICAgIHNiLmFwcGVuZCgiOiBbIik7CisKKyAgICAgICAgICAgIFdTU3RhdGlzdGljW10gc3RhdGlzdGljcyA9IGFsbFN0YXRzW2ldLmdldFN0YXRpc3RpY3MoKTsKKyAgICAgICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgc3RhdGlzdGljcy5sZW5ndGg7IGorKykgeworICAgICAgICAgICAgICAgIFdTU3RhdGlzdGljIHN0YXRpc3RpYyA9IHN0YXRpc3RpY3Nbal07CisgICAgICAgICAgICAgICAgc2IuYXBwZW5kKHN0YXRpc3RpYy5nZXRJZCgpKS4KKyAgICAgICAgICAgICAgICAgICAgICAgIGFwcGVuZCgnPScpLgorICAgICAgICAgICAgICAgICAgICAgICAgYXBwZW5kKHN0YXRpc3RpYy5nZXROYW1lKCkpOworICAgICAgICAgICAgICAgIGlmIChqIDwgc3RhdGlzdGljcy5sZW5ndGggLSAxKSB7CisgICAgICAgICAgICAgICAgICAgIHNiLmFwcGVuZCgiLCAiKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHNiLmFwcGVuZCgiXVxuIik7CisgICAgICAgICAgICA8L3NlbGVjdGlvbj4KKyAgICAgICAgfQorICAgIH0KKworICAgIHByaXZhdGUgY2xhc3MgU3RhdERlc2NyaXB0b3IgeworICAgIH0KKworICAgIHByaXZhdGUgY2xhc3MgV1NTdGF0aXN0aWMgeworICAgICAgICBwcml2YXRlIE9iamVjdCBpZDsKKyAgICAgICAgcHJpdmF0ZSBTdHJpbmcgbmFtZTsKKworICAgICAgICBwdWJsaWMgT2JqZWN0IGdldElkKCkgeworICAgICAgICAgICAgcmV0dXJuIGlkOworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIFN0cmluZyBnZXROYW1lKCkgeworICAgICAgICAgICAgcmV0dXJuIG5hbWU7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwcml2YXRlIGNsYXNzIFdTU3RhdHMgeworICAgICAgICBwcml2YXRlIFdTU3RhdGlzdGljW10gc3RhdGlzdGljczsKKworICAgICAgICBwdWJsaWMgV1NTdGF0aXN0aWNbXSBnZXRTdGF0aXN0aWNzKCkgeworICAgICAgICAgICAgcmV0dXJuIHN0YXRpc3RpY3M7CisgICAgICAgIH0KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvU3RvcEZvbGRpbmdQb3N0Zml4SW5zaWRlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9TdG9wRm9sZGluZ1Bvc3RmaXhJbnNpZGUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NWJmMzIyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvU3RvcEZvbGRpbmdQb3N0Zml4SW5zaWRlLmphdmEKQEAgLTAsMCArMSwxMCBAQAorcHVibGljIGNsYXNzIERldmsgeworCisgICAgdm9pZCBmcihTdHJpbmcuLi4gcGFyYW1zICkgeworICAgICAgICBpbnQgaWR4ID0gMDsKKyAgICAgICAgPHNlbGVjdGlvbj5TeXN0ZW0ub3V0LnByaW50bG4ocGFyYW1zW2lkeCsrXSk7CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihwYXJhbXNbaWR4KytdKTsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKHBhcmFtc1tpZHgrK10pOworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4ocGFyYW1zW2lkeCsrXSk7PC9zZWxlY3Rpb24+CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL1N0b3BGb2xkaW5nUG9zdGZpeEluc2lkZV9hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvU3RvcEZvbGRpbmdQb3N0Zml4SW5zaWRlX2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGU2MjllYwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL1N0b3BGb2xkaW5nUG9zdGZpeEluc2lkZV9hZnRlci5qYXZhCkBAIC0wLDAgKzEsMTQgQEAKK3B1YmxpYyBjbGFzcyBEZXZrIHsKKworICAgIHZvaWQgZnIoU3RyaW5nLi4uIHBhcmFtcyApIHsKKyAgICAgICAgaW50IGlkeCA9IDA7CisgICAgICAgIG5ld01ldGhvZChpZHgsIHBhcmFtcyk7CisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIG5ld01ldGhvZChpbnQgaWR4LCBTdHJpbmdbXSBwYXJhbXMpIHsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKHBhcmFtc1tpZHgrK10pOworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4ocGFyYW1zW2lkeCsrXSk7CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihwYXJhbXNbaWR4KytdKTsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKHBhcmFtc1tpZHgrK10pOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9TdG9wRm9sZGluZ19hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvU3RvcEZvbGRpbmdfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZTFhYzg0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvU3RvcEZvbGRpbmdfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDU5IEBACitjbGFzcyBBIHsKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CisgICAgICAgIFN0YXREZXNjcmlwdG9yW10gYWxsU3RhdE1lbWJlcnMgPSBuZXcgU3RhdERlc2NyaXB0b3JbXSB7fTsKKyAgICAgICAgV1NTdGF0c1tdIGFsbFN0YXRzID0gbmV3IFdTU3RhdHNbXSB7fTsKKworICAgICAgICBTdHJpbmdCdWZmZXIgc2IgPSBuZXcgU3RyaW5nQnVmZmVyKCk7CisgICAgICAgIHNiLmFwcGVuZCgiQWxsIHN0YXQgbWVtYmVycyBmb3VuZDpcbiIpOworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGFsbFN0YXRNZW1iZXJzLmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICBTdGF0RGVzY3JpcHRvciBzdGF0TWVtYmVyID0gYWxsU3RhdE1lbWJlcnNbaV07CisKKworICAgICAgICAgICAgbmV3TWV0aG9kKGFsbFN0YXRzW2ldLCBzYiwgc3RhdE1lbWJlcik7CisgICAgICAgICAgICAKKyAgICAgICAgfQorICAgIH0KKworICAgIHByaXZhdGUgc3RhdGljIHZvaWQgbmV3TWV0aG9kKFdTU3RhdHMgYWxsU3RhdCwgU3RyaW5nQnVmZmVyIHNiLCBTdGF0RGVzY3JpcHRvciBzdGF0TWVtYmVyKSB7CisgICAgICAgIHNiLmFwcGVuZChzdGF0TWVtYmVyLnRvU3RyaW5nKCkpOworCisgICAgICAgIHNiLmFwcGVuZCgiOiBbIik7CisKKyAgICAgICAgV1NTdGF0aXN0aWNbXSBzdGF0aXN0aWNzID0gYWxsU3RhdC5nZXRTdGF0aXN0aWNzKCk7CisgICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgc3RhdGlzdGljcy5sZW5ndGg7IGorKykgeworICAgICAgICAgICAgV1NTdGF0aXN0aWMgc3RhdGlzdGljID0gc3RhdGlzdGljc1tqXTsKKyAgICAgICAgICAgIHNiLmFwcGVuZChzdGF0aXN0aWMuZ2V0SWQoKSkuCisgICAgICAgICAgICAgICAgICAgIGFwcGVuZCgnPScpLgorICAgICAgICAgICAgICAgICAgICBhcHBlbmQoc3RhdGlzdGljLmdldE5hbWUoKSk7CisgICAgICAgICAgICBpZiAoaiA8IHN0YXRpc3RpY3MubGVuZ3RoIC0gMSkgeworICAgICAgICAgICAgICAgIHNiLmFwcGVuZCgiLCAiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHNiLmFwcGVuZCgiXVxuIik7CisgICAgfQorCisgICAgcHJpdmF0ZSBjbGFzcyBTdGF0RGVzY3JpcHRvciB7CisgICAgfQorCisgICAgcHJpdmF0ZSBjbGFzcyBXU1N0YXRpc3RpYyB7CisgICAgICAgIHByaXZhdGUgT2JqZWN0IGlkOworICAgICAgICBwcml2YXRlIFN0cmluZyBuYW1lOworCisgICAgICAgIHB1YmxpYyBPYmplY3QgZ2V0SWQoKSB7CisgICAgICAgICAgICByZXR1cm4gaWQ7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgU3RyaW5nIGdldE5hbWUoKSB7CisgICAgICAgICAgICByZXR1cm4gbmFtZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHByaXZhdGUgY2xhc3MgV1NTdGF0cyB7CisgICAgICAgIHByaXZhdGUgV1NTdGF0aXN0aWNbXSBzdGF0aXN0aWNzOworCisgICAgICAgIHB1YmxpYyBXU1N0YXRpc3RpY1tdIGdldFN0YXRpc3RpY3MoKSB7CisgICAgICAgICAgICByZXR1cm4gc3RhdGlzdGljczsKKyAgICAgICAgfQorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9UaGlzQ2FsbC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvVGhpc0NhbGwuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNjNiY2FkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvVGhpc0NhbGwuamF2YQpAQCAtMCwwICsxLDggQEAKK3B1YmxpYyBjbGFzcyBBIHsKKyAgICBBKFN0cmluZyBzKSB7CisgICAgfQorCisgICAgQSgpIHsKKyAgICAgICAgdGhpcyg8c2VsZWN0aW9uPiJhIjwvc2VsZWN0aW9uPik7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL1RoaXNDYWxsX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9UaGlzQ2FsbF9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUzMGRiODIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9UaGlzQ2FsbF9hZnRlci5qYXZhCkBAIC0wLDAgKzEsMTIgQEAKK3B1YmxpYyBjbGFzcyBBIHsKKyAgICBBKFN0cmluZyBzKSB7CisgICAgfQorCisgICAgQSgpIHsKKyAgICAgICAgdGhpcyhuZXdNZXRob2QoKSk7CisgICAgfQorCisgICAgcHJpdmF0ZSBzdGF0aWMgU3RyaW5nIG5ld01ldGhvZCgpIHsKKyAgICAgICAgcmV0dXJuICJhIjsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvVHJ5RmluYWxseS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvVHJ5RmluYWxseS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBhNjMzZTQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9UcnlGaW5hbGx5LmphdmEKQEAgLTAsMCArMSwxMyBAQAorY2xhc3MgVHJ5RmluYWxseSB7CisgICAgaW50IG1ldGhvZCgpIHsKKyAgICAgICAgU3RyaW5nIHMgPSAiYWJjZCI7CisgICAgIAorICAgICAgICA8c2VsZWN0aW9uPlN0cmluZ0J1ZmZlciBidWZmZXIgPSBuZXcgU3RyaW5nQnVmZmVyKCk7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBidWZmZXIuYXBwZW5kKHMpOworICAgICAgICAgICAgcmV0dXJuIGJ1ZmZlci5sZW5ndGgoKTsKKyAgICAgICAgfSBmaW5hbGx5IHsKKyAgICAgICAgICAgIGJ1ZmZlci5jbGVhcigpOworICAgICAgICB9PC9zZWxlY3Rpb24+CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL1RyeUZpbmFsbHlJbnNpZGVGb3IuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL1RyeUZpbmFsbHlJbnNpZGVGb3IuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNmU5MzA1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvVHJ5RmluYWxseUluc2lkZUZvci5qYXZhCkBAIC0wLDAgKzEsMTcgQEAKK3BhY2thZ2UgZXh0cmFjdE1ldGhvZDsKKworaW1wb3J0IGphdmEuaW8uKjsKK2ltcG9ydCBqYXZhLnV0aWwuSXRlcmF0b3I7CisKK3B1YmxpYyBjbGFzcyBTQ1IyNzg4NyB7CisgICAgcHVibGljIGludCBwdWJsaXNoeChPdXRwdXRTdHJlYW0gb3V0LCBib29sZWFuIGluY2x1ZGVDb2RlKSB0aHJvd3MgSU9FeGNlcHRpb24geworICAgICAgICA8c2VsZWN0aW9uPlNjYXR0ZXJpbmdEb2NCdWlsZGVyIGRvY0J1aWxkZXIgPSBuZXcgTXlEb2NCdWlsZGVyKHJlcG9zaXRvcnksIGluY2x1ZGVkKTs8L3NlbGVjdGlvbj4KKyAgICAgICAgd2hpbGUodHJ1ZSl7CisgICAgICAgICAgT3V0cHV0U3RyZWFtIG9zID0gbnVsbDsKKyAgICAgICAgICB0cnkgeworICAgICAgICAgIH0gZmluYWxseSB7CisgICAgICAgICAgICBvcy5jbG9zZSgpOworICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL1RyeUZpbmFsbHlJbnNpZGVGb3JfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL1RyeUZpbmFsbHlJbnNpZGVGb3JfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYjVjZDk3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvVHJ5RmluYWxseUluc2lkZUZvcl9hZnRlci5qYXZhCkBAIC0wLDAgKzEsMjEgQEAKK3BhY2thZ2UgZXh0cmFjdE1ldGhvZDsKKworaW1wb3J0IGphdmEuaW8uKjsKK2ltcG9ydCBqYXZhLnV0aWwuSXRlcmF0b3I7CisKK3B1YmxpYyBjbGFzcyBTQ1IyNzg4NyB7CisgICAgcHVibGljIGludCBwdWJsaXNoeChPdXRwdXRTdHJlYW0gb3V0LCBib29sZWFuIGluY2x1ZGVDb2RlKSB0aHJvd3MgSU9FeGNlcHRpb24geworICAgICAgICBuZXdNZXRob2QoKTsKKyAgICAgICAgd2hpbGUodHJ1ZSl7CisgICAgICAgICAgT3V0cHV0U3RyZWFtIG9zID0gbnVsbDsKKyAgICAgICAgICB0cnkgeworICAgICAgICAgIH0gZmluYWxseSB7CisgICAgICAgICAgICBvcy5jbG9zZSgpOworICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIHByaXZhdGUgdm9pZCBuZXdNZXRob2QoKSB7CisgICAgICAgIFNjYXR0ZXJpbmdEb2NCdWlsZGVyIGRvY0J1aWxkZXIgPSBuZXcgTXlEb2NCdWlsZGVyKHJlcG9zaXRvcnksIGluY2x1ZGVkKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9UcnlGaW5hbGx5X2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9UcnlGaW5hbGx5X2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjRiNzExMgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL1RyeUZpbmFsbHlfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDE3IEBACitjbGFzcyBUcnlGaW5hbGx5IHsKKyAgICBpbnQgbWV0aG9kKCkgeworICAgICAgICBTdHJpbmcgcyA9ICJhYmNkIjsKKworICAgICAgICByZXR1cm4gbmV3TWV0aG9kKHMpOworICAgIH0KKworICAgIHByaXZhdGUgaW50IG5ld01ldGhvZChTdHJpbmcgcykgeworICAgICAgICBTdHJpbmdCdWZmZXIgYnVmZmVyID0gbmV3IFN0cmluZ0J1ZmZlcigpOworICAgICAgICB0cnkgeworICAgICAgICAgICAgYnVmZmVyLmFwcGVuZChzKTsKKyAgICAgICAgICAgIHJldHVybiBidWZmZXIubGVuZ3RoKCk7CisgICAgICAgIH0gZmluYWxseSB7CisgICAgICAgICAgICBidWZmZXIuY2xlYXIoKTsKKyAgICAgICAgfQorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9Ud29Gcm9tVGhyZWVFcVN0YXRlbWVudHMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL1R3b0Zyb21UaHJlZUVxU3RhdGVtZW50cy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFiZTczNTUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9Ud29Gcm9tVGhyZWVFcVN0YXRlbWVudHMuamF2YQpAQCAtMCwwICsxLDggQEAKK2NsYXNzIFRlc3QgeworCisgICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgeworICAgICAgICA8c2VsZWN0aW9uPlN5c3RlbS5vdXQucHJpbnRsbigiaGVsbG8iKTsKKyAgICAgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oImhlbGxvIik7PC9zZWxlY3Rpb24+CisgICAgICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJoZWxsbyIpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9Ud29Gcm9tVGhyZWVFcVN0YXRlbWVudHNfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL1R3b0Zyb21UaHJlZUVxU3RhdGVtZW50c19hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBiMWJjMjgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9Ud29Gcm9tVGhyZWVFcVN0YXRlbWVudHNfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDEyIEBACitjbGFzcyBUZXN0IHsKKworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKKyAgICAgICAgbmV3TWV0aG9kKCk7CisgICAgICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJoZWxsbyIpOworICAgIH0KKworICAgIHByaXZhdGUgc3RhdGljIHZvaWQgbmV3TWV0aG9kKCkgeworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oImhlbGxvIik7CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiaGVsbG8iKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvVHlwZVBhcmFtc0xpc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL1R5cGVQYXJhbXNMaXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTc1MmZiZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL1R5cGVQYXJhbXNMaXN0LmphdmEKQEAgLTAsMCArMSwxMSBAQAorY2xhc3MgVGVzdCB7CisgIHByb3RlY3RlZCA8VD4gdm9pZCBhcHBseUNoYW5nZXMoZmluYWwgVCB2YXJpYWJsZSkgeworICAgICAgICAgICAgICAgICBuZXcgUnVubmFibGUoKSB7CisgICAgICAgICAgICAgICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyB2b2lkIHJ1bigpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICA8c2VsZWN0aW9uPlN5c3RlbS5vdXQucHJpbnRsbih2YXJpYWJsZSk7PC9zZWxlY3Rpb24+CisgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgIDsKKyAgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL1R5cGVQYXJhbXNMaXN0X2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9UeXBlUGFyYW1zTGlzdF9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhjNTQ1YjgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9UeXBlUGFyYW1zTGlzdF9hZnRlci5qYXZhCkBAIC0wLDAgKzEsMTUgQEAKK2NsYXNzIFRlc3QgeworICBwcm90ZWN0ZWQgPFQ+IHZvaWQgYXBwbHlDaGFuZ2VzKGZpbmFsIFQgdmFyaWFibGUpIHsKKyAgICAgICAgICAgICAgICAgbmV3IFJ1bm5hYmxlKCkgeworICAgICAgICAgICAgICAgICAgICAgQE92ZXJyaWRlCisgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgdm9pZCBydW4oKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgbmV3TWV0aG9kKHZhcmlhYmxlKTsKKyAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgfQorICAgICAgICAgOworICAgICB9CisKKyAgICBwcml2YXRlIDxUPiB2b2lkIG5ld01ldGhvZChUIHZhcmlhYmxlKSB7CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbih2YXJpYWJsZSk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL1VudXNlZEdlbmVyaWNzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9VbnVzZWRHZW5lcmljcy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY4ODJkNTQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9VbnVzZWRHZW5lcmljcy5qYXZhCkBAIC0wLDAgKzEsNiBAQAorY2xhc3MgVGVzdCB7CisgIHB1YmxpYyA8VD4gVCBtZXRob2QoQ2xhc3M8VD4gY2xhenopIHsKKyAgICA8c2VsZWN0aW9uPlN5c3RlbS5vdXQucHJpbnRsbigpOzwvc2VsZWN0aW9uPgorICAgIHJldHVybiBudWxsOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvVW51c2VkR2VuZXJpY3NfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL1VudXNlZEdlbmVyaWNzX2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTkxODUxOQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL1VudXNlZEdlbmVyaWNzX2FmdGVyLmphdmEKQEAgLTAsMCArMSwxMCBAQAorY2xhc3MgVGVzdCB7CisgIHB1YmxpYyA8VD4gVCBtZXRob2QoQ2xhc3M8VD4gY2xhenopIHsKKyAgICAgIG5ld01ldGhvZCgpOworICAgICAgcmV0dXJuIG51bGw7CisgIH0KKworICAgIHByaXZhdGUgdm9pZCBuZXdNZXRob2QoKSB7CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9VbnVzZWRJbml0aWFsaXplZFZhci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvVW51c2VkSW5pdGlhbGl6ZWRWYXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNWE1ZDYzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvVW51c2VkSW5pdGlhbGl6ZWRWYXIuamF2YQpAQCAtMCwwICsxLDE0IEBACitjbGFzcyBGb28geworICAgIHByaXZhdGUgdm9pZCBiYXIoKSB7CisgICAgICAgIFN0cmluZyB0ZXh0ID0gbnVsbDsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIDxzZWxlY3Rpb24+dGV4dCA9IGdldFN0cmluZygpOzwvc2VsZWN0aW9uPgorICAgICAgICB9CisgICAgICAgIGNhdGNoKEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4odGV4dCk7CisgICAgICAgIH0KKyAgICB9CisgICAgcHJpdmF0ZSB2b2lkIGdldFN0cmluZygpIHsKKyAgICAgICAgcmV0dXJuICJoZWxsbyI7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL1VudXNlZEluaXRpYWxpemVkVmFyX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9VbnVzZWRJbml0aWFsaXplZFZhcl9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY2OTU0YzgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9VbnVzZWRJbml0aWFsaXplZFZhcl9hZnRlci5qYXZhCkBAIC0wLDAgKzEsMjEgQEAKK2NsYXNzIEZvbyB7CisgICAgcHJpdmF0ZSB2b2lkIGJhcigpIHsKKyAgICAgICAgU3RyaW5nIHRleHQgPSBudWxsOworICAgICAgICB0cnkgeworICAgICAgICAgICAgdGV4dCA9IG5ld01ldGhvZCgpOworICAgICAgICB9CisgICAgICAgIGNhdGNoKEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4odGV4dCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwcml2YXRlIFN0cmluZyBuZXdNZXRob2QoKSB7CisgICAgICAgIFN0cmluZyB0ZXh0OworICAgICAgICB0ZXh0ID0gZ2V0U3RyaW5nKCk7CisgICAgICAgIHJldHVybiB0ZXh0OworICAgIH0KKworICAgIHByaXZhdGUgdm9pZCBnZXRTdHJpbmcoKSB7CisgICAgICAgIHJldHVybiAiaGVsbG8iOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9Vc2VWYXJBZnRlclRyeS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvVXNlVmFyQWZ0ZXJUcnkuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNjk5MjM2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvVXNlVmFyQWZ0ZXJUcnkuamF2YQpAQCAtMCwwICsxLDEzIEBACitjbGFzcyBBIHsKKyAgICB7CisgICAgICAgIE9iamVjdCBvOworCisgICAgICAgIHRyeSB7CisgICAgICAgICAgICA8c2VsZWN0aW9uPm8gPSBmb28oKTs8L3NlbGVjdGlvbj4KKyAgICAgICAgfQorICAgICAgICBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgfQorCisgICAgICAgIG8uZigpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9Vc2VWYXJBZnRlclRyeV9hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvVXNlVmFyQWZ0ZXJUcnlfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNWIzYjg5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvVXNlVmFyQWZ0ZXJUcnlfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDE5IEBACitjbGFzcyBBIHsKKyAgICB7CisgICAgICAgIE9iamVjdCBvOworCisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBvID0gbmV3TWV0aG9kKCk7CisgICAgICAgIH0KKyAgICAgICAgY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CisgICAgICAgIH0KKworICAgICAgICBvLmYoKTsKKyAgICB9CisKKyAgICBwcml2YXRlIE9iamVjdCBuZXdNZXRob2QoKSB7CisgICAgICAgIE9iamVjdCBvOworICAgICAgICBvID0gZm9vKCk7CisgICAgICAgIHJldHVybiBvOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9WYXJEZWNsQWZ0ZXJFeHByZXNzaW9uRXh0cmFjdGlvbi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvVmFyRGVjbEFmdGVyRXhwcmVzc2lvbkV4dHJhY3Rpb24uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNzU3YzQ0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvVmFyRGVjbEFmdGVyRXhwcmVzc2lvbkV4dHJhY3Rpb24uamF2YQpAQCAtMCwwICsxLDM0IEBACitjbGFzcyBCYXNpY0xhenlSZXNvbHZlVGVzdCB7CisKKworICAgIHB1YmxpYyB2b2lkIHRlc3QoKSB7CisKKyAgICAgICAgT2JqZWN0IHNlc3Npb24gPSA8c2VsZWN0aW9uPm5ldyBPYmplY3QoKSB7CisKKy8qCisgICAgICAgICAgICBwdWJsaWMgQ2xhc3NNZW1iZXJEZWNsYXJhdGlvblByb3ZpZGVyIGdldENsYXNzTWVtYmVyRGVjbGFyYXRpb25Qcm92aWRlcihKZXRDbGFzcyBqZXRDbGFzc09yT2JqZWN0KSB7CisgICAgICAgICAgICAgICAgZmluYWwgSmV0Q2xhc3MgamV0Q2xhc3MgPSAoSmV0Q2xhc3MpIGpldENsYXNzT3JPYmplY3Q7CisgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDbGFzc01lbWJlckRlY2xhcmF0aW9uUHJvdmlkZXIoKSB7Ki8KKworCisgICAgICAgICAgICAgICAgICAgIC8qICAgICBwcml2YXRlIDxELCBUIGV4dGVuZHMgSmV0TmFtZWQ+IExpc3Q8VD4gZmlsdGVyKExpc3Q8RD4gbGlzdCwgZmluYWwgQ2xhc3M8VD4gdCwgZmluYWwgTmFtZSBuYW1lKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAvL25vaW5zcGVjdGlvbiB1bmNoZWNrZWQKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoTGlzdCkgTGlzdHMubmV3QXJyYXlMaXN0KENvbGxlY3Rpb25zMi5maWx0ZXIobGlzdCwgbmV3IFByZWRpY2F0ZTxEPigpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgYm9vbGVhbiBhcHBseShEIGQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQuaXNJbnN0YW5jZShkKSAmJiAoKEpldE5hbWVkKSBkKS5nZXROYW1lQXNOYW1lKCkuZXF1YWxzKG5hbWUpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0pKTsKKyAgICAgICAgICAgICAgICAgICAgfSovCisKKworICAgICAgICAgICAgIC8qICAgfTsKKyAgICAgICAgICAgIH0qLworICAgICAgICB9PC9zZWxlY3Rpb24+OworCisgICAgICAgIFN0cmluZyBwYWNrYWdlRGVzY3JpcHRvciA9IHNlc3Npb24udG9TdHJpbmcoKTsKKworICAgIH0KKworCit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9WYXJEZWNsQWZ0ZXJFeHByZXNzaW9uRXh0cmFjdGlvbl9hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvVmFyRGVjbEFmdGVyRXhwcmVzc2lvbkV4dHJhY3Rpb25fYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYjdhZWZmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvVmFyRGVjbEFmdGVyRXhwcmVzc2lvbkV4dHJhY3Rpb25fYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDM4IEBACitjbGFzcyBCYXNpY0xhenlSZXNvbHZlVGVzdCB7CisKKworICAgIHB1YmxpYyB2b2lkIHRlc3QoKSB7CisKKyAgICAgICAgT2JqZWN0IHNlc3Npb24gPSBuZXdNZXRob2QoKTsKKworICAgICAgICBTdHJpbmcgcGFja2FnZURlc2NyaXB0b3IgPSBzZXNzaW9uLnRvU3RyaW5nKCk7CisKKyAgICB9CisKKyAgICBwcml2YXRlIE9iamVjdCBuZXdNZXRob2QoKSB7CisgICAgICAgIHJldHVybiBuZXcgT2JqZWN0KCkgeworCisvKgorICAgICAgICAgICAgcHVibGljIENsYXNzTWVtYmVyRGVjbGFyYXRpb25Qcm92aWRlciBnZXRDbGFzc01lbWJlckRlY2xhcmF0aW9uUHJvdmlkZXIoSmV0Q2xhc3MgamV0Q2xhc3NPck9iamVjdCkgeworICAgICAgICAgICAgICAgIGZpbmFsIEpldENsYXNzIGpldENsYXNzID0gKEpldENsYXNzKSBqZXRDbGFzc09yT2JqZWN0OworICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ2xhc3NNZW1iZXJEZWNsYXJhdGlvblByb3ZpZGVyKCkgeyovCisKKworICAgICAgICAgICAgICAgICAgICAvKiAgICAgcHJpdmF0ZSA8RCwgVCBleHRlbmRzIEpldE5hbWVkPiBMaXN0PFQ+IGZpbHRlcihMaXN0PEQ+IGxpc3QsIGZpbmFsIENsYXNzPFQ+IHQsIGZpbmFsIE5hbWUgbmFtZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgLy9ub2luc3BlY3Rpb24gdW5jaGVja2VkCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKExpc3QpIExpc3RzLm5ld0FycmF5TGlzdChDb2xsZWN0aW9uczIuZmlsdGVyKGxpc3QsIG5ldyBQcmVkaWNhdGU8RD4oKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQE92ZXJyaWRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVibGljIGJvb2xlYW4gYXBwbHkoRCBkKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0LmlzSW5zdGFuY2UoZCkgJiYgKChKZXROYW1lZCkgZCkuZ2V0TmFtZUFzTmFtZSgpLmVxdWFscyhuYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICB9KSk7CisgICAgICAgICAgICAgICAgICAgIH0qLworCisKKyAgICAgICAgICAgICAvKiAgIH07CisgICAgICAgICAgICB9Ki8KKyAgICAgICAgfTsKKyAgICB9CisKKworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvVmVyYm9zZUFycmF5QWNjZXNzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9WZXJib3NlQXJyYXlBY2Nlc3MuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYjhjMDZkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvVmVyYm9zZUFycmF5QWNjZXNzLmphdmEKQEAgLTAsMCArMSwxMCBAQAorY2xhc3MgVGVzdCB7CisgIHZvaWQgZm9vKFN0cmluZ1tdIHNzKSB7CisgICAgIGZvcihpbnQgaSA9IDA7IGkgPCBzcy5sZW5ndGg7IGkrKykgeworICAgICAgIDxzZWxlY3Rpb24+CisgICAgICAgU3lzdGVtLm91dC5wcmludGxuKHNzW2ldKTsKKyAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oc3NbaSsxXSk7CisgICAgICAgPC9zZWxlY3Rpb24+CisgICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL1ZlcmJvc2VBcnJheUFjY2Vzc19hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvVmVyYm9zZUFycmF5QWNjZXNzX2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODRmNThlNgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL1ZlcmJvc2VBcnJheUFjY2Vzc19hZnRlci5qYXZhCkBAIC0wLDAgKzEsMTQgQEAKK2NsYXNzIFRlc3QgeworICB2b2lkIGZvbyhTdHJpbmdbXSBzcykgeworICAgICBmb3IoaW50IGkgPSAwOyBpIDwgc3MubGVuZ3RoOyBpKyspIHsKKworICAgICAgICAgbmV3TWV0aG9kKHNzLCBpKTsKKyAgICAgICAKKyAgICAgfQorICB9CisKKyAgICBwcml2YXRlIHZvaWQgbmV3TWV0aG9kKFN0cmluZ1tdIHNzLCBpbnQgaSkgeworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oc3NbaV0pOworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oc3NbaSsxXSk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL1dyaXRlQXJyYXlBY2Nlc3MuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kL1dyaXRlQXJyYXlBY2Nlc3MuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zOWEzOGY3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvV3JpdGVBcnJheUFjY2Vzcy5qYXZhCkBAIC0wLDAgKzEsNyBAQAorY2xhc3MgVGVzdCB7CisgIHZvaWQgZm9vKFN0cmluZ1tdIHNzKSB7CisgICAgIGZvcihpbnQgaSA9IDA7IGkgPCBzcy5sZW5ndGg7IGkrKykgeworICAgICAgIDxzZWxlY3Rpb24+c3NbaV0gPSAiIjs8L3NlbGVjdGlvbj4KKyAgICAgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvV3JpdGVBcnJheUFjY2Vzc19hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2QvV3JpdGVBcnJheUFjY2Vzc19hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJjMGUxMTcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZC9Xcml0ZUFycmF5QWNjZXNzX2FmdGVyLmphdmEKQEAgLTAsMCArMSwxMSBAQAorY2xhc3MgVGVzdCB7CisgIHZvaWQgZm9vKFN0cmluZ1tdIHNzKSB7CisgICAgIGZvcihpbnQgaSA9IDA7IGkgPCBzcy5sZW5ndGg7IGkrKykgeworICAgICAgICAgbmV3TWV0aG9kKHNzLCBpKTsKKyAgICAgfQorICB9CisKKyAgICBwcml2YXRlIHZvaWQgbmV3TWV0aG9kKFN0cmluZ1tdIHNzLCBpbnQgaSkgeworICAgICAgICBzc1tpXSA9ICIiOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZDE1L0NvZGVEdXBsaWNhdGVzV2l0aE11bHRPY2N1cmVuY2VzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZDE1L0NvZGVEdXBsaWNhdGVzV2l0aE11bHRPY2N1cmVuY2VzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGNkMjk1YQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kMTUvQ29kZUR1cGxpY2F0ZXNXaXRoTXVsdE9jY3VyZW5jZXMuamF2YQpAQCAtMCwwICsxLDYgQEAKK2NsYXNzIFRlc3QgeworICAgIHZvaWQgdChqYXZhLnV0aWwuTWFwPFN0cmluZywgU3RyaW5nPiBtKSB7CisgICAgICAgIFN0cmluZyBmID0gIiI7CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiZiA9ICIgKyA8c2VsZWN0aW9uPmY8L3NlbGVjdGlvbj4gKyAiLCAiICsgbS5nZXQoZikpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZDE1L0NvZGVEdXBsaWNhdGVzV2l0aE11bHRPY2N1cmVuY2VzX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZDE1L0NvZGVEdXBsaWNhdGVzV2l0aE11bHRPY2N1cmVuY2VzX2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDZjYzM2OTAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZDE1L0NvZGVEdXBsaWNhdGVzV2l0aE11bHRPY2N1cmVuY2VzX2FmdGVyLmphdmEKQEAgLTAsMCArMSwxMCBAQAorY2xhc3MgVGVzdCB7CisgICAgdm9pZCB0KGphdmEudXRpbC5NYXA8U3RyaW5nLCBTdHJpbmc+IG0pIHsKKyAgICAgICAgU3RyaW5nIGYgPSAiIjsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJmID0gIiArIG5ld01ldGhvZChmKSArICIsICIgKyBuZXdNZXRob2QobmV3TWV0aG9kKGYpKSk7CisgICAgfQorCisgICAgcHJpdmF0ZSBTdHJpbmcgbmV3TWV0aG9kKFN0cmluZyBmKSB7CisgICAgICAgIHJldHVybiBmOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZE9iamVjdC9GaWVsZFVzYWdlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZE9iamVjdC9GaWVsZFVzYWdlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2UzYWIzNwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kT2JqZWN0L0ZpZWxkVXNhZ2UuamF2YQpAQCAtMCwwICsxLDkgQEAKK2NsYXNzIFRlc3R7CisgIHZvaWQgZm88Y2FyZXQ+byhpbnQgaSl7CisgICAgaSsrOworICB9CisKKyAgdm9pZCBiYXIoVGVzdCB0KXsKKyAgICB0LmZvbygxKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kT2JqZWN0L0ZpZWxkVXNhZ2UuamF2YS5hZnRlciBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kT2JqZWN0L0ZpZWxkVXNhZ2UuamF2YS5hZnRlcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZTM0MTVkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2RPYmplY3QvRmllbGRVc2FnZS5qYXZhLmFmdGVyCkBAIC0wLDAgKzEsMjEgQEAKK2NsYXNzIFRlc3R7CisgIHZvaWQgZm9vKGludCBpKXsKKyAgICAgIG5ldyBJbm5lckNsYXNzKGkpLmludm9rZSgpOworICB9CisKKyAgICB2b2lkIGJhcihUZXN0IHQpeworICAgIHQuZm9vKDEpOworICB9CisKKyAgICBwcml2YXRlIGNsYXNzIElubmVyQ2xhc3MgeworICAgICAgICBwcml2YXRlIGludCBpOworCisgICAgICAgIHB1YmxpYyBJbm5lckNsYXNzKGludCBpKSB7CisgICAgICAgICAgICB0aGlzLmkgPSBpOworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIHZvaWQgaW52b2tlKCkgeworICAgICAgICAgICAgaSsrOworICAgICAgICB9CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kT2JqZWN0L01ldGhvZEluSGllcmFyY2h5LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZE9iamVjdC9NZXRob2RJbkhpZXJhcmNoeS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc2Mzc3MTcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZE9iamVjdC9NZXRob2RJbkhpZXJhcmNoeS5qYXZhCkBAIC0wLDAgKzEsMTQgQEAKK2NsYXNzIFRlc3QgeworICB2b2lkIGJhcigpIHsKKyAgICBuZXcgQjxTdHJpbmc+KCkuZm9vKCIiKTsKKyAgfQorCisgIGNsYXNzIEE8VD4geworICAgIHZvaWQgZm9vKFQgdCl7fQorICB9CisKKyAgY2xhc3MgQjxFPiBleHRlbmRzIEE8RT4geworICAgIHZvaWQgZm88Y2FyZXQ+byhFIGUpe1N5c3RlbS5vdXQucHJpbnRsbihlKTt9CisgIH0KK30KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2RPYmplY3QvTWV0aG9kSW5IaWVyYXJjaHkuamF2YS5hZnRlciBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kT2JqZWN0L01ldGhvZEluSGllcmFyY2h5LmphdmEuYWZ0ZXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDVmMTU2YgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kT2JqZWN0L01ldGhvZEluSGllcmFyY2h5LmphdmEuYWZ0ZXIKQEAgLTAsMCArMSwyOCBAQAorY2xhc3MgVGVzdCB7CisgIHZvaWQgYmFyKCkgeworICAgIG5ldyBCPFN0cmluZz4oKS5mb28oIiIpOworICB9CisKKyAgY2xhc3MgQTxUPiB7CisgICAgdm9pZCBmb28oVCB0KXt9CisgIH0KKworICBjbGFzcyBCPEU+IGV4dGVuZHMgQTxFPiB7CisgICAgdm9pZCBmb28oRSBlKXsKKyAgICAgICAgbmV3IElubmVyQ2xhc3MoZSkuaW52b2tlKCk7CisgICAgfQorCisgICAgICBwcml2YXRlIGNsYXNzIElubmVyQ2xhc3MgeworICAgICAgICAgIHByaXZhdGUgRSBlOworCisgICAgICAgICAgcHVibGljIElubmVyQ2xhc3MoRSBlKSB7CisgICAgICAgICAgICAgIHRoaXMuZSA9IGU7CisgICAgICAgICAgfQorCisgICAgICAgICAgcHVibGljIHZvaWQgaW52b2tlKCkgeworICAgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oZSk7CisgICAgICAgICAgfQorICAgICAgfQorICB9Cit9CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kT2JqZWN0L01ldGhvZEluSGllcmFyY2h5UmV0dXJuLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZE9iamVjdC9NZXRob2RJbkhpZXJhcmNoeVJldHVybi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMzYWU3YTIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZE9iamVjdC9NZXRob2RJbkhpZXJhcmNoeVJldHVybi5qYXZhCkBAIC0wLDAgKzEsMTcgQEAKK2NsYXNzIFRlc3QgeworICAgY2xhc3MgQSB7CisgICAgIFN0cmluZyBmb28oKXsKKyAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgfQorICAgfQorCisgICBjbGFzcyBCIGV4dGVuZHMgQSB7CisgICAgIFN0cmluZyBmbzxjYXJldD5vKCl7CisgICAgICAgcmV0dXJuIG51bGw7CisgICAgIH0KKyAgIH0KKworICAgU3RyaW5nIGJhcihCIGIpIHsKKyAgICAgcmV0dXJuIGIuZm9vKCk7CisgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2RPYmplY3QvTWV0aG9kSW5IaWVyYXJjaHlSZXR1cm4uamF2YS5hZnRlciBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kT2JqZWN0L01ldGhvZEluSGllcmFyY2h5UmV0dXJuLmphdmEuYWZ0ZXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWEyNTRjMQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kT2JqZWN0L01ldGhvZEluSGllcmFyY2h5UmV0dXJuLmphdmEuYWZ0ZXIKQEAgLTAsMCArMSwyMyBAQAorY2xhc3MgVGVzdCB7CisgICBjbGFzcyBBIHsKKyAgICAgU3RyaW5nIGZvbygpeworICAgICAgIHJldHVybiBudWxsOworICAgICB9CisgICB9CisKKyAgIGNsYXNzIEIgZXh0ZW5kcyBBIHsKKyAgICAgU3RyaW5nIGZvbygpeworICAgICAgICAgcmV0dXJuIG5ldyBJbm5lckNsYXNzKCkuaW52b2tlKCk7CisgICAgIH0KKworICAgICAgIHByaXZhdGUgY2xhc3MgSW5uZXJDbGFzcyB7CisgICAgICAgICAgIHB1YmxpYyBTdHJpbmcgaW52b2tlKCkgeworICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7CisgICAgICAgICAgIH0KKyAgICAgICB9CisgICB9CisKKyAgIFN0cmluZyBiYXIoQiBiKSB7CisgICAgIHJldHVybiBiLmZvbygpOworICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kT2JqZWN0L1F1YWxpZmllci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2RPYmplY3QvUXVhbGlmaWVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDIwOGNiOAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kT2JqZWN0L1F1YWxpZmllci5qYXZhCkBAIC0wLDAgKzEsOCBAQAorY2xhc3MgVGVzdCB7CisgIHZvaWQgYmFyKEEgYSl7CisgICAgYS5mb28oKTsKKyAgfQorICBjbGFzcyBBIHsKKyAgICB2b2lkIGY8Y2FyZXQ+b28oKXtpbnQgaSA9IDA7fQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2RPYmplY3QvUXVhbGlmaWVyLmphdmEuYWZ0ZXIgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZE9iamVjdC9RdWFsaWZpZXIuamF2YS5hZnRlcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42OWZiYTA3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2RPYmplY3QvUXVhbGlmaWVyLmphdmEuYWZ0ZXIKQEAgLTAsMCArMSwxNiBAQAorY2xhc3MgVGVzdCB7CisgIHZvaWQgYmFyKEEgYSl7CisgICAgYS5mb28oKTsKKyAgfQorICBjbGFzcyBBIHsKKyAgICB2b2lkIGZvbygpeworICAgICAgICBuZXcgSW5uZXJDbGFzcygpLmludm9rZSgpOworICAgIH0KKworICAgICAgcHJpdmF0ZSBjbGFzcyBJbm5lckNsYXNzIHsKKyAgICAgICAgICBwdWJsaWMgdm9pZCBpbnZva2UoKSB7CisgICAgICAgICAgICAgIGludCBpID0gMDsKKyAgICAgICAgICB9CisgICAgICB9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZE9iamVjdC9SZWN1cnNpb24uamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kT2JqZWN0L1JlY3Vyc2lvbi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg1NGNiMWUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZE9iamVjdC9SZWN1cnNpb24uamF2YQpAQCAtMCwwICsxLDEwIEBACitjbGFzcyBUZXN0IHsKKyAgICB2b2lkIGI8Y2FyZXQ+YXIoaW50IGkpIHsKKyAgICAgICAgaWYgKGkgPT0gMCkgcmV0dXJuOworICAgICAgICBiYXIoaSAtIDEpOworICAgIH0KKworICAgIHZvaWQgZm9vKCkgeworICAgICAgICBiYXIoNSk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kT2JqZWN0L1JlY3Vyc2lvbi5qYXZhLmFmdGVyIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2RPYmplY3QvUmVjdXJzaW9uLmphdmEuYWZ0ZXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGRjYmU3YwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kT2JqZWN0L1JlY3Vyc2lvbi5qYXZhLmFmdGVyCkBAIC0wLDAgKzEsMjIgQEAKK2NsYXNzIFRlc3QgeworICAgIHZvaWQgYmFyKGludCBpKSB7CisgICAgICAgIG5ldyBJbm5lckNsYXNzKGkpLmludm9rZSgpOworICAgIH0KKworICAgIHZvaWQgZm9vKCkgeworICAgICAgICBiYXIoNSk7CisgICAgfQorCisgICAgcHJpdmF0ZSBjbGFzcyBJbm5lckNsYXNzIHsKKyAgICAgICAgcHJpdmF0ZSBpbnQgaTsKKworICAgICAgICBwdWJsaWMgSW5uZXJDbGFzcyhpbnQgaSkgeworICAgICAgICAgICAgdGhpcy5pID0gaTsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyB2b2lkIGludm9rZSgpIHsKKyAgICAgICAgICAgIGlmIChpID09IDApIHJldHVybjsKKyAgICAgICAgICAgIGJhcihpIC0gMSk7CisgICAgICAgIH0KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2RPYmplY3QvU3RhdGljLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZE9iamVjdC9TdGF0aWMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMjYwZWY1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2RPYmplY3QvU3RhdGljLmphdmEKQEAgLTAsMCArMSw2IEBACitjbGFzcyBUZXN0IHsKKyAgc3RhdGljIHZvaWQgZjxjYXJldD5vbygpe2ludCBpID0gMDt9CisgIHZvaWQgYmFyKCkgeworICAgIGZvbygpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2RPYmplY3QvU3RhdGljLmphdmEuYWZ0ZXIgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZE9iamVjdC9TdGF0aWMuamF2YS5hZnRlcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MWNiMmViCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2RPYmplY3QvU3RhdGljLmphdmEuYWZ0ZXIKQEAgLTAsMCArMSwxNSBAQAorY2xhc3MgVGVzdCB7CisgIHN0YXRpYyB2b2lkIGZvbygpeworICAgICAgSW5uZXJDbGFzcy5pbnZva2UoKTsKKyAgfQorCisgICAgdm9pZCBiYXIoKSB7CisgICAgZm9vKCk7CisgIH0KKworICAgIHByaXZhdGUgc3RhdGljIGNsYXNzIElubmVyQ2xhc3MgeworICAgICAgICBwcml2YXRlIHN0YXRpYyB2b2lkIGludm9rZSgpIHsKKyAgICAgICAgICAgIGludCBpID0gMDsKKyAgICAgICAgfQorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZE9iamVjdC9TdGF0aWNUeXBlUGFyYW1zLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZE9iamVjdC9TdGF0aWNUeXBlUGFyYW1zLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2U0MmY1YQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kT2JqZWN0L1N0YXRpY1R5cGVQYXJhbXMuamF2YQpAQCAtMCwwICsxLDYgQEAKK2NsYXNzIFRlc3QgeworICAgICB2b2lkIGJhcigpIHsKKyAgICAgICBmb28oIiIpOworICAgICB9CisgICAgIHN0YXRpYyA8VD4gdm9pZCBmPGNhcmV0Pm9vKFQgdCl7U3lzdGVtLm91dC5wcmludGxuKHQpO30KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZE9iamVjdC9TdGF0aWNUeXBlUGFyYW1zLmphdmEuYWZ0ZXIgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZE9iamVjdC9TdGF0aWNUeXBlUGFyYW1zLmphdmEuYWZ0ZXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjZlZWE0OQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kT2JqZWN0L1N0YXRpY1R5cGVQYXJhbXMuamF2YS5hZnRlcgpAQCAtMCwwICsxLDIwIEBACitjbGFzcyBUZXN0IHsKKyAgICAgdm9pZCBiYXIoKSB7CisgICAgICAgZm9vKCIiKTsKKyAgICAgfQorICAgICBzdGF0aWMgPFQ+IHZvaWQgZm9vKFQgdCl7CisgICAgICAgICBuZXcgSW5uZXJDbGFzczxUPih0KS5pbnZva2UoKTsKKyAgICAgfQorCisgICAgcHJpdmF0ZSBzdGF0aWMgY2xhc3MgSW5uZXJDbGFzczxUPiB7CisgICAgICAgIHByaXZhdGUgVCB0OworCisgICAgICAgIHB1YmxpYyBJbm5lckNsYXNzKFQgdCkgeworICAgICAgICAgICAgdGhpcy50ID0gdDsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyB2b2lkIGludm9rZSgpIHsKKyAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbih0KTsKKyAgICAgICAgfQorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZE9iamVjdC9TdGF0aWNUeXBlUGFyYW1zUmVjdXJzaXZlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZE9iamVjdC9TdGF0aWNUeXBlUGFyYW1zUmVjdXJzaXZlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODA3ZDYzYQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kT2JqZWN0L1N0YXRpY1R5cGVQYXJhbXNSZWN1cnNpdmUuamF2YQpAQCAtMCwwICsxLDggQEAKK2NsYXNzIFRlc3QgeworICAgICB2b2lkIGJhcigpIHsKKyAgICAgICBmb28oIiIpOworICAgICB9CisgICAgIHN0YXRpYyA8VD4gdm9pZCBmPGNhcmV0Pm9vKFQgdCl7CisgICAgICAgaWYgKHQgIT0gbnVsbCkgZm9vKHQpOworICAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2RPYmplY3QvU3RhdGljVHlwZVBhcmFtc1JlY3Vyc2l2ZS5qYXZhLmFmdGVyIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2RPYmplY3QvU3RhdGljVHlwZVBhcmFtc1JlY3Vyc2l2ZS5qYXZhLmFmdGVyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY4N2VkZDIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZE9iamVjdC9TdGF0aWNUeXBlUGFyYW1zUmVjdXJzaXZlLmphdmEuYWZ0ZXIKQEAgLTAsMCArMSwyMCBAQAorY2xhc3MgVGVzdCB7CisgICAgIHZvaWQgYmFyKCkgeworICAgICAgIGZvbygiIik7CisgICAgIH0KKyAgICAgc3RhdGljIDxUPiB2b2lkIGZvbyhUIHQpeworICAgICAgICAgbmV3IElubmVyQ2xhc3M8VD4odCkuaW52b2tlKCk7CisgICAgIH0KKworICAgIHByaXZhdGUgc3RhdGljIGNsYXNzIElubmVyQ2xhc3M8VD4geworICAgICAgICBwcml2YXRlIFQgdDsKKworICAgICAgICBwdWJsaWMgSW5uZXJDbGFzcyhUIHQpIHsKKyAgICAgICAgICAgIHRoaXMudCA9IHQ7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgdm9pZCBpbnZva2UoKSB7CisgICAgICAgICAgICBpZiAodCAhPSBudWxsKSBmb28odCk7CisgICAgICAgIH0KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2RPYmplY3QvU3RhdGljVHlwZVBhcmFtc1JldHVybi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2RPYmplY3QvU3RhdGljVHlwZVBhcmFtc1JldHVybi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYyY2MxYzkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZE9iamVjdC9TdGF0aWNUeXBlUGFyYW1zUmV0dXJuLmphdmEKQEAgLTAsMCArMSw2IEBACitjbGFzcyBUZXN0IHsKKyAgICAgdm9pZCBiYXIoKSB7CisgICAgICAgU3RyaW5nIHN0ciA9IGZvbygpOworICAgICB9CisgICAgIHN0YXRpYyA8VD4gVCBmbzxjYXJldD5vKCl7cmV0dXJuIG51bGw7fQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kT2JqZWN0L1N0YXRpY1R5cGVQYXJhbXNSZXR1cm4uamF2YS5hZnRlciBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kT2JqZWN0L1N0YXRpY1R5cGVQYXJhbXNSZXR1cm4uamF2YS5hZnRlcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMTAwZjFjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2RPYmplY3QvU3RhdGljVHlwZVBhcmFtc1JldHVybi5qYXZhLmFmdGVyCkBAIC0wLDAgKzEsMTQgQEAKK2NsYXNzIFRlc3QgeworICAgICB2b2lkIGJhcigpIHsKKyAgICAgICBTdHJpbmcgc3RyID0gZm9vKCk7CisgICAgIH0KKyAgICAgc3RhdGljIDxUPiBUIGZvbygpeworICAgICAgICAgcmV0dXJuIElubmVyQ2xhc3MuaW52b2tlKCk7CisgICAgIH0KKworICAgIHByaXZhdGUgc3RhdGljIGNsYXNzIElubmVyQ2xhc3MgeworICAgICAgICBwcml2YXRlIHN0YXRpYyA8VD4gVCBpbnZva2UoKSB7CisgICAgICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAgfQorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZE9iamVjdC9TdGF0aWNUeXBlUGFyYW1zUmV0dXJuTm9EZWxldGUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kT2JqZWN0L1N0YXRpY1R5cGVQYXJhbXNSZXR1cm5Ob0RlbGV0ZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUzM2MzNjEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZE9iamVjdC9TdGF0aWNUeXBlUGFyYW1zUmV0dXJuTm9EZWxldGUuamF2YQpAQCAtMCwwICsxLDkgQEAKK2NsYXNzIFRlc3QgeworICAgIHN0YXRpYyA8VD4gVCBmPGNhcmV0Pm9vKCkgeworICAgICAgICByZXR1cm4gbnVsbDsKKyAgICB9CisKKyAgICB2b2lkIGJhcigpIHsKKyAgICAgICBmb28oKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2RPYmplY3QvU3RhdGljVHlwZVBhcmFtc1JldHVybk5vRGVsZXRlLmphdmEuYWZ0ZXIgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZE9iamVjdC9TdGF0aWNUeXBlUGFyYW1zUmV0dXJuTm9EZWxldGUuamF2YS5hZnRlcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NjhhZTRhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2RPYmplY3QvU3RhdGljVHlwZVBhcmFtc1JldHVybk5vRGVsZXRlLmphdmEuYWZ0ZXIKQEAgLTAsMCArMSwxNSBAQAorY2xhc3MgVGVzdCB7CisgICAgc3RhdGljIDxUPiBUIGZvbygpIHsKKyAgICAgICAgcmV0dXJuIElubmVyQ2xhc3MuaW52b2tlKCk7CisgICAgfQorCisgICAgdm9pZCBiYXIoKSB7CisgICAgICAgZm9vKCk7CisgICAgfQorCisgICAgcHJpdmF0ZSBzdGF0aWMgY2xhc3MgSW5uZXJDbGFzcyB7CisgICAgICAgIHByaXZhdGUgc3RhdGljIDxUPiBUIGludm9rZSgpIHsKKyAgICAgICAgICAgIHJldHVybiBudWxsOworICAgICAgICB9CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kT2JqZWN0L1R5cGVQYXJhbXMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kT2JqZWN0L1R5cGVQYXJhbXMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMTVkYmQzZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kT2JqZWN0L1R5cGVQYXJhbXMuamF2YQpAQCAtMCwwICsxLDcgQEAKK2NsYXNzIFRlc3QgeworICAgPFQ+IHZvaWQgZm88Y2FyZXQ+byhUIHQpe1N5c3RlbS5vdXQucHJpbnRsbih0KTt9CisKKyAgIHZvaWQgYmFyKCkgeworICAgICBmb28oIiIpOworICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kT2JqZWN0L1R5cGVQYXJhbXMuamF2YS5hZnRlciBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kT2JqZWN0L1R5cGVQYXJhbXMuamF2YS5hZnRlcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YWU1MzY0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2RPYmplY3QvVHlwZVBhcmFtcy5qYXZhLmFmdGVyCkBAIC0wLDAgKzEsMjEgQEAKK2NsYXNzIFRlc3QgeworICAgPFQ+IHZvaWQgZm9vKFQgdCl7CisgICAgICAgbmV3IElubmVyQ2xhc3M8VD4odCkuaW52b2tlKCk7CisgICB9CisKKyAgICB2b2lkIGJhcigpIHsKKyAgICAgZm9vKCIiKTsKKyAgIH0KKworICAgIHByaXZhdGUgY2xhc3MgSW5uZXJDbGFzczxUPiB7CisgICAgICAgIHByaXZhdGUgVCB0OworCisgICAgICAgIHB1YmxpYyBJbm5lckNsYXNzKFQgdCkgeworICAgICAgICAgICAgdGhpcy50ID0gdDsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyB2b2lkIGludm9rZSgpIHsKKyAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbih0KTsKKyAgICAgICAgfQorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZE9iamVjdC9UeXBlUGFyYW1zUmV0dXJuLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZE9iamVjdC9UeXBlUGFyYW1zUmV0dXJuLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjIyZGY4NQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kT2JqZWN0L1R5cGVQYXJhbXNSZXR1cm4uamF2YQpAQCAtMCwwICsxLDYgQEAKK2NsYXNzIFRlc3QgeworICA8VD4gVCBmbzxjYXJldD5vKCl7cmV0dXJuIG51bGw7fQorICB2b2lkIGJhcigpeworICAgIFN0cmluZyBzID0gZm9vKCk7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZE9iamVjdC9UeXBlUGFyYW1zUmV0dXJuLmphdmEuYWZ0ZXIgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZE9iamVjdC9UeXBlUGFyYW1zUmV0dXJuLmphdmEuYWZ0ZXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjkzZjI3MAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kT2JqZWN0L1R5cGVQYXJhbXNSZXR1cm4uamF2YS5hZnRlcgpAQCAtMCwwICsxLDE1IEBACitjbGFzcyBUZXN0IHsKKyAgPFQ+IFQgZm9vKCl7CisgICAgICByZXR1cm4gbmV3IElubmVyQ2xhc3M8VD4oKS5pbnZva2UoKTsKKyAgfQorCisgICAgdm9pZCBiYXIoKXsKKyAgICBTdHJpbmcgcyA9IGZvbygpOworICB9CisKKyAgICBwcml2YXRlIGNsYXNzIElubmVyQ2xhc3M8VD4geworICAgICAgICBwdWJsaWMgVCBpbnZva2UoKSB7CisgICAgICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAgfQorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZE9iamVjdC9WYXJhcmdzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZE9iamVjdC9WYXJhcmdzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjkyYTMxZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kT2JqZWN0L1ZhcmFyZ3MuamF2YQpAQCAtMCwwICsxLDggQEAKK2NsYXNzIFRlc3QgeworICA8VD4gdm9pZCBmbzxjYXJldD5vKFQuLi4gdCl7CisgICAgICBmb3IgKFQgdDEgOiB0KSB7fSAKKyAgfQorICB2b2lkIGJhcigpeworICAgIGZvbygiIik7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZE9iamVjdC9WYXJhcmdzLmphdmEuYWZ0ZXIgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZE9iamVjdC9WYXJhcmdzLmphdmEuYWZ0ZXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGYxYTg4YwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kT2JqZWN0L1ZhcmFyZ3MuamF2YS5hZnRlcgpAQCAtMCwwICsxLDIxIEBACitjbGFzcyBUZXN0IHsKKyAgPFQ+IHZvaWQgZm9vKFQuLi4gdCl7CisgICAgICBuZXcgSW5uZXJDbGFzczxUPih0KS5pbnZva2UoKTsKKyAgfQorCisgICAgdm9pZCBiYXIoKXsKKyAgICBmb28oIiIpOworICB9CisKKyAgICBwcml2YXRlIGNsYXNzIElubmVyQ2xhc3M8VD4geworICAgICAgICBwcml2YXRlIFRbXSB0OworCisgICAgICAgIHB1YmxpYyBJbm5lckNsYXNzKFRbXSB0KSB7CisgICAgICAgICAgICB0aGlzLnQgPSB0OworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIHZvaWQgaW52b2tlKCkgeworICAgICAgICAgICAgZm9yIChUIHQxIDogdCkge30KKyAgICAgICAgfQorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZE9iamVjdC9XaXRoUHJpdmF0ZU1ldGhvZFVzZWQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kT2JqZWN0L1dpdGhQcml2YXRlTWV0aG9kVXNlZC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA3MDcyMTAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZE9iamVjdC9XaXRoUHJpdmF0ZU1ldGhvZFVzZWQuamF2YQpAQCAtMCwwICsxLDkgQEAKK3B1YmxpYyBjbGFzcyBYWFggeworICB2b2lkIGY8Y2FyZXQ+b28oKSB7CisgICAgaW50IGkgPSAwIDsKKyAgICBiYXIoaSk7CisgICAgU3lzdGVtLm91dC5wcmludGxuKGkpOworICB9CisKKyAgcHJpdmF0ZSB2b2lkIGJhcihpbnQgaSl7fQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kT2JqZWN0L1dpdGhQcml2YXRlTWV0aG9kVXNlZC5qYXZhLmFmdGVyIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2RPYmplY3QvV2l0aFByaXZhdGVNZXRob2RVc2VkLmphdmEuYWZ0ZXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZThjY2IyZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kT2JqZWN0L1dpdGhQcml2YXRlTWV0aG9kVXNlZC5qYXZhLmFmdGVyCkBAIC0wLDAgKzEsMTUgQEAKK3B1YmxpYyBjbGFzcyBYWFggeworICB2b2lkIGZvbygpIHsKKyAgICAgIG5ldyBJbm5lckNsYXNzKCkuaW52b2tlKCk7CisgIH0KKworICAgIHByaXZhdGUgY2xhc3MgSW5uZXJDbGFzcyB7CisgICAgICAgIHB1YmxpYyB2b2lkIGludm9rZSgpIHsKKyAgICAgICAgICAgIGludCBpID0gMCA7CisgICAgICAgICAgICBiYXIoaSk7CisgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oaSk7CisgICAgICAgIH0KKworICAgICAgICBwcml2YXRlIHZvaWQgYmFyKGludCBpKXt9CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kT2JqZWN0L1dpdGhQcml2YXRlTWV0aG9kVXNlZDEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kT2JqZWN0L1dpdGhQcml2YXRlTWV0aG9kVXNlZDEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMmMzZWEyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2RPYmplY3QvV2l0aFByaXZhdGVNZXRob2RVc2VkMS5qYXZhCkBAIC0wLDAgKzEsNTIgQEAKK2ltcG9ydCBqYXZhLnV0aWwuRGF0ZTsKKworcHVibGljIGNsYXNzIFRlc3RDbGFzcyB7CisKKyAgICBwcml2YXRlIERhdGUgZXhwaXJ5OworICAgIHByaXZhdGUgRGF0ZSBtYXR1cml0eTsKKyAgICBwcml2YXRlIGludCBjb21taXRtZW50OworICAgIHByaXZhdGUgZG91YmxlIG91dHN0YW5kaW5nOworICAgIHByaXZhdGUgSXRlcmFibGUgcGF5bWVudHM7CisgICAgcHJpdmF0ZSBEYXRlIHRvZGF5OworICAgIHByaXZhdGUgRGF0ZSBzdGFydDsKKyAgICBwcml2YXRlIGludCByaXNrUmF0aW5nOworCisKKyAgICBwdWJsaWMgZG91YmxlIGNhbDxjYXJldD5jdWxhdGUoKSB7CisgICAgICAgIHJldHVybiAoIG91dHN0YW5kaW5nUmlza0Ftb3VudCgpICogZHVyYXRpb24oKSAqIHJpc2tGYWN0b3IoKSApICsgKCB1bnVzZWRSaXNrQW1vdW50KCkgKiBkdXJhdGlvbigpICogdW51c2VkUmlza0ZhY3RvcigpICk7CisgICAgfQorCisgICAgcHJpdmF0ZSBkb3VibGUgcmlza0ZhY3RvcigpIHsKKyAgICAgICAgcmV0dXJuIDUuMDsKKyAgICB9CisKKyAgICBwcml2YXRlIGRvdWJsZSB1bnVzZWRSaXNrRmFjdG9yKCkgeworICAgICAgICByZXR1cm4gNi4wOworICAgIH0KKworICAgIHByaXZhdGUgZG91YmxlIHVudXNlZFJpc2tBbW91bnQoKSB7CisgICAgICAgIHJldHVybiAoIGNvbW1pdG1lbnQgLSBvdXRzdGFuZGluZyApOworICAgIH0KKworICAgIHByaXZhdGUgZG91YmxlIG91dHN0YW5kaW5nUmlza0Ftb3VudCgpIHsKKyAgICAgICAgcmV0dXJuIG91dHN0YW5kaW5nOworICAgIH0KKworICAgIHByaXZhdGUgZG91YmxlIGdldFVzZWRQZXJjZW50YWdlKCkgeworICAgICAgICByZXR1cm4gMS4wOworICAgIH0KKworICAgIHByaXZhdGUgZG91YmxlIGR1cmF0aW9uKCkgeworICAgICAgICBpZiAoIGV4cGlyeSA9PSBudWxsICYmIG1hdHVyaXR5ICE9IG51bGwgKSB7CisgICAgICAgICAgICByZXR1cm4gMS4wOworICAgICAgICB9IGVsc2UgaWYgKCBleHBpcnkgIT0gbnVsbCAmJiBtYXR1cml0eSA9PSBudWxsICkgeworICAgICAgICAgICAgcmV0dXJuIHllYXJzVG8oIGV4cGlyeSApOworICAgICAgICB9CisgICAgICAgIHJldHVybiAwLjA7CisgICAgfQorCisgICAgcHJpdmF0ZSBkb3VibGUgeWVhcnNUbyggZmluYWwgRGF0ZSBlbmREYXRlICkgeworICAgICAgICBEYXRlIGJlZ2luRGF0ZSA9ICggdG9kYXkgPT0gbnVsbCA/IHN0YXJ0IDogdG9kYXkgKTsKKyAgICAgICAgcmV0dXJuICggKCBlbmREYXRlLmdldFRpbWUoKSAtIGJlZ2luRGF0ZS5nZXRUaW1lKCkgKSk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kT2JqZWN0L1dpdGhQcml2YXRlTWV0aG9kVXNlZDEuamF2YS5hZnRlciBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kT2JqZWN0L1dpdGhQcml2YXRlTWV0aG9kVXNlZDEuamF2YS5hZnRlcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNDU0M2UzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2RPYmplY3QvV2l0aFByaXZhdGVNZXRob2RVc2VkMS5qYXZhLmFmdGVyCkBAIC0wLDAgKzEsNTggQEAKK2ltcG9ydCBqYXZhLnV0aWwuRGF0ZTsKKworcHVibGljIGNsYXNzIFRlc3RDbGFzcyB7CisKKyAgICBwcml2YXRlIERhdGUgZXhwaXJ5OworICAgIHByaXZhdGUgRGF0ZSBtYXR1cml0eTsKKyAgICBwcml2YXRlIGludCBjb21taXRtZW50OworICAgIHByaXZhdGUgZG91YmxlIG91dHN0YW5kaW5nOworICAgIHByaXZhdGUgSXRlcmFibGUgcGF5bWVudHM7CisgICAgcHJpdmF0ZSBEYXRlIHRvZGF5OworICAgIHByaXZhdGUgRGF0ZSBzdGFydDsKKyAgICBwcml2YXRlIGludCByaXNrUmF0aW5nOworCisKKyAgICBwdWJsaWMgZG91YmxlIGNhbGN1bGF0ZSgpIHsKKyAgICAgICAgcmV0dXJuIG5ldyBJbm5lckNsYXNzKCkuaW52b2tlKCk7CisgICAgfQorCisgICAgcHJpdmF0ZSBkb3VibGUgZ2V0VXNlZFBlcmNlbnRhZ2UoKSB7CisgICAgICAgIHJldHVybiAxLjA7CisgICAgfQorCisgICAgcHJpdmF0ZSBkb3VibGUgeWVhcnNUbyggZmluYWwgRGF0ZSBlbmREYXRlICkgeworICAgICAgICBEYXRlIGJlZ2luRGF0ZSA9ICggdG9kYXkgPT0gbnVsbCA/IHN0YXJ0IDogdG9kYXkgKTsKKyAgICAgICAgcmV0dXJuICggKCBlbmREYXRlLmdldFRpbWUoKSAtIGJlZ2luRGF0ZS5nZXRUaW1lKCkgKSk7CisgICAgfQorCisgICAgcHJpdmF0ZSBjbGFzcyBJbm5lckNsYXNzIHsKKyAgICAgICAgcHVibGljIGRvdWJsZSBpbnZva2UoKSB7CisgICAgICAgICAgICByZXR1cm4gKCBvdXRzdGFuZGluZ1Jpc2tBbW91bnQoKSAqIGR1cmF0aW9uKCkgKiByaXNrRmFjdG9yKCkgKSArICggdW51c2VkUmlza0Ftb3VudCgpICogZHVyYXRpb24oKSAqIHVudXNlZFJpc2tGYWN0b3IoKSApOworICAgICAgICB9CisKKyAgICAgICAgcHJpdmF0ZSBkb3VibGUgb3V0c3RhbmRpbmdSaXNrQW1vdW50KCkgeworICAgICAgICAgICAgcmV0dXJuIG91dHN0YW5kaW5nOworICAgICAgICB9CisKKyAgICAgICAgcHJpdmF0ZSBkb3VibGUgZHVyYXRpb24oKSB7CisgICAgICAgICAgICBpZiAoIGV4cGlyeSA9PSBudWxsICYmIG1hdHVyaXR5ICE9IG51bGwgKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIDEuMDsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoIGV4cGlyeSAhPSBudWxsICYmIG1hdHVyaXR5ID09IG51bGwgKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHllYXJzVG8oIGV4cGlyeSApOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIDAuMDsKKyAgICAgICAgfQorCisgICAgICAgIHByaXZhdGUgZG91YmxlIHJpc2tGYWN0b3IoKSB7CisgICAgICAgICAgICByZXR1cm4gNS4wOworICAgICAgICB9CisKKyAgICAgICAgcHJpdmF0ZSBkb3VibGUgdW51c2VkUmlza0Ftb3VudCgpIHsKKyAgICAgICAgICAgIHJldHVybiAoIGNvbW1pdG1lbnQgLSBvdXRzdGFuZGluZyApOworICAgICAgICB9CisKKyAgICAgICAgcHJpdmF0ZSBkb3VibGUgdW51c2VkUmlza0ZhY3RvcigpIHsKKyAgICAgICAgICAgIHJldHVybiA2LjA7CisgICAgICAgIH0KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2RPYmplY3QvV2l0aFByaXZhdGVNZXRob2RXaGljaENhbnRCZU1vdmVkLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZE9iamVjdC9XaXRoUHJpdmF0ZU1ldGhvZFdoaWNoQ2FudEJlTW92ZWQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZGEyZjI3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2RPYmplY3QvV2l0aFByaXZhdGVNZXRob2RXaGljaENhbnRCZU1vdmVkLmphdmEKQEAgLTAsMCArMSwxMyBAQAorcHVibGljIGNsYXNzIFhYWCB7CisgIHZvaWQgZjxjYXJldD5vbygpIHsKKyAgICBpbnQgaSA9IDAgOworICAgIGJhcihpKTsKKyAgICBTeXN0ZW0ub3V0LnByaW50bG4oaSk7CisgIH0KKworICB2b2lkIGJhenooKSB7CisgICAgYmFyKDApOworICB9CisKKyAgcHJpdmF0ZSB2b2lkIGJhcihpbnQgaSl7fQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kT2JqZWN0L1dpdGhQcml2YXRlTWV0aG9kV2hpY2hDYW50QmVNb3ZlZC5qYXZhLmFmdGVyIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2RPYmplY3QvV2l0aFByaXZhdGVNZXRob2RXaGljaENhbnRCZU1vdmVkLmphdmEuYWZ0ZXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmNiZTRlMAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kT2JqZWN0L1dpdGhQcml2YXRlTWV0aG9kV2hpY2hDYW50QmVNb3ZlZC5qYXZhLmFmdGVyCkBAIC0wLDAgKzEsMTkgQEAKK3B1YmxpYyBjbGFzcyBYWFggeworICB2b2lkIGZvbygpIHsKKyAgICAgIG5ldyBJbm5lckNsYXNzKCkuaW52b2tlKCk7CisgIH0KKworICAgIHZvaWQgYmF6eigpIHsKKyAgICBiYXIoMCk7CisgIH0KKworICBwcml2YXRlIHZvaWQgYmFyKGludCBpKXt9CisKKyAgICBwcml2YXRlIGNsYXNzIElubmVyQ2xhc3MgeworICAgICAgICBwdWJsaWMgdm9pZCBpbnZva2UoKSB7CisgICAgICAgICAgICBpbnQgaSA9IDAgOworICAgICAgICAgICAgYmFyKGkpOworICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKGkpOworICAgICAgICB9CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kT2JqZWN0L1dyYXBXaXRoT2JqZWN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZE9iamVjdC9XcmFwV2l0aE9iamVjdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI4OTI2ZTYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZE9iamVjdC9XcmFwV2l0aE9iamVjdC5qYXZhCkBAIC0wLDAgKzEsOSBAQAorY2xhc3MgVGVzdCB7CisgIHZvaWQgZjxjYXJldD5vbyhpbnQgaSwgaW50Li4uIGopIHsKKyAgICBpZiAoaSA9PSAwKSB7CisgICAgICAgIGZvciAoaW50IGlkeCA6IGopIHsKKworICAgICAgICB9CisgICAgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2RPYmplY3QvV3JhcFdpdGhPYmplY3QuamF2YS5hZnRlciBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kT2JqZWN0L1dyYXBXaXRoT2JqZWN0LmphdmEuYWZ0ZXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTIyNjA3NgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kT2JqZWN0L1dyYXBXaXRoT2JqZWN0LmphdmEuYWZ0ZXIKQEAgLTAsMCArMSwxMyBAQAorY2xhc3MgVGVzdCB7CisgIHZvaWQgZm9vKGludCBpLCBpbnQuLi4gaikgeworICAgICAgbmV3IE9iamVjdCgpIHsKKyAgICAgICAgICBwcml2YXRlIHZvaWQgSW5uZXJDbGFzcyhpbnQgaSwgaW50W10gaikgeworICAgICAgICAgICAgICBpZiAoaSA9PSAwKSB7CisgICAgICAgICAgICAgICAgICBmb3IgKGludCBpZHggOiBqKSB7CisKKyAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgIH0uSW5uZXJDbGFzcyhpLCBqKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kT2JqZWN0L1dyYXBXaXRoT2JqZWN0UmVjdXJzaXZlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZE9iamVjdC9XcmFwV2l0aE9iamVjdFJlY3Vyc2l2ZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBlOGZhYjJmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2RPYmplY3QvV3JhcFdpdGhPYmplY3RSZWN1cnNpdmUuamF2YQpAQCAtMCwwICsxLDYgQEAKK2NsYXNzIFRlc3QgeworICBpbnQgZjxjYXJldD5vbyhpbnQgaSkgeworICAgICAgaWYgKGkgPT0gMCkgcmV0dXJuIC0xOworICAgICAgcmV0dXJuIGZvbyhpIC0gMSk7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZE9iamVjdC9XcmFwV2l0aE9iamVjdFJlY3Vyc2l2ZS5qYXZhLmFmdGVyIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2RPYmplY3QvV3JhcFdpdGhPYmplY3RSZWN1cnNpdmUuamF2YS5hZnRlcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMzM3NDdmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2RPYmplY3QvV3JhcFdpdGhPYmplY3RSZWN1cnNpdmUuamF2YS5hZnRlcgpAQCAtMCwwICsxLDEwIEBACitjbGFzcyBUZXN0IHsKKyAgaW50IGZvbyhpbnQgaSkgeworICAgICAgcmV0dXJuIG5ldyBPYmplY3QoKSB7CisgICAgICAgICAgcHJpdmF0ZSBpbnQgSW5uZXJDbGFzcyhpbnQgaSkgeworICAgICAgICAgICAgICBpZiAoaSA9PSAwKSByZXR1cm4gLTE7CisgICAgICAgICAgICAgIHJldHVybiBmb28oaSAtIDEpOworICAgICAgICAgIH0KKyAgICAgIH0uSW5uZXJDbGFzcyhpKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kT2JqZWN0L211bHRpcGxlRXhpdFBvaW50cy9CYXRjaFVwZGF0ZUNhdXNlZEJ5Rm9ybWF0dGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZE9iamVjdC9tdWx0aXBsZUV4aXRQb2ludHMvQmF0Y2hVcGRhdGVDYXVzZWRCeUZvcm1hdHRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY2NTgyOGMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZE9iamVjdC9tdWx0aXBsZUV4aXRQb2ludHMvQmF0Y2hVcGRhdGVDYXVzZWRCeUZvcm1hdHRlci5qYXZhCkBAIC0wLDAgKzEsMzcgQEAKK2ltcG9ydCBqYXZhLnV0aWwuKjsKKworcHVibGljIGNsYXNzIEFCdWcgeworCisgICAgcHJpdmF0ZSBTdHJpbmcgZHJpbmtCZWFyKFN0cmluZyBhbW91bnQpIHsKKyAgICAgICAgU3RyaW5nIGZpcnN0VGltZSA9ICJhc2RmIjsKKworICAgICAgICBpZiAoZmlyc3RUaW1lID09IG51bGwpCisgICAgICAgICAgICByZXR1cm4gImxvc2VyIjsKKworICAgICAgICBBcnJheUxpc3Q8U3RyaW5nPiBib3R0bGVzID0gbmV3IEFycmF5TGlzdDw+KCk7CisgICAgICAgIGJvdHRsZXMuYWRkKCJhc2RmIik7CisKKyAgICAgICAgPHNlbGVjdGlvbj5MaXN0PFN0cmluZz4gZXJyb3JzID0gbmV3IEFycmF5TGlzdDw+KCk7CisKKyAgICAgICAgaW50IG1vbmV5ID0gMDsKKyAgICAgICAgaW50IG5Db3VudCA9IDA7CisgICAgICAgIGludCByQ291bnQgPSAwOworICAgICAgICBpbnQgd0NvdW50ID0gMDsKKyAgICAgICAgY2hhcltdIHRyaXBlbCA9IG5ldyBjaGFyW2JvdHRsZXMuc2l6ZSgpXTsKKyAgICAgICAgYm9vbGVhbiBubzMzcHIgPSBmYWxzZTsKKyAgICAgICAgaW50IGZpcnN0ID0gMDsKKyAgICAgICAgaW50IGxhc3QgPSAwOworICAgICAgICBpZiAodHJ1ZSkgcmV0dXJuIG51bGw7PC9zZWxlY3Rpb24+CisKKyAgICAgICAgYm9vbGVhbiB1bmhhcHB5ID0gbm8zM3ByICYmIGZpcnN0IHx8IG5vMzNwciAmJiBsYXN0OworCisgICAgICAgIFN0cmluZyByZXN1bHQgPSBhbW91bnQgKyBBcnJheXMudG9TdHJpbmcodHJpcGVsKSArIHJDb3VudCArIHdDb3VudCArIG5Db3VudCArIG1vbmV5ICsgZXJyb3JzOworCisgICAgICAgIGlmICghdW5oYXBweSkKKyAgICAgICAgICAgIHJlc3VsdCArPSAiaGFwcHkiOworCisKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZE9iamVjdC9tdWx0aXBsZUV4aXRQb2ludHMvQmF0Y2hVcGRhdGVDYXVzZWRCeUZvcm1hdHRlci5qYXZhLmFmdGVyIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2RPYmplY3QvbXVsdGlwbGVFeGl0UG9pbnRzL0JhdGNoVXBkYXRlQ2F1c2VkQnlGb3JtYXR0ZXIuamF2YS5hZnRlcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YjA0YWRmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2RPYmplY3QvbXVsdGlwbGVFeGl0UG9pbnRzL0JhdGNoVXBkYXRlQ2F1c2VkQnlGb3JtYXR0ZXIuamF2YS5hZnRlcgpAQCAtMCwwICsxLDExMyBAQAoraW1wb3J0IGphdmEudXRpbC4qOworCitwdWJsaWMgY2xhc3MgQUJ1ZyB7CisKKyAgICBwcml2YXRlIFN0cmluZyBkcmlua0JlYXIoU3RyaW5nIGFtb3VudCkgeworICAgICAgICBTdHJpbmcgZmlyc3RUaW1lID0gImFzZGYiOworCisgICAgICAgIGlmIChmaXJzdFRpbWUgPT0gbnVsbCkKKyAgICAgICAgICAgIHJldHVybiAibG9zZXIiOworCisgICAgICAgIEFycmF5TGlzdDxTdHJpbmc+IGJvdHRsZXMgPSBuZXcgQXJyYXlMaXN0PD4oKTsKKyAgICAgICAgYm90dGxlcy5hZGQoImFzZGYiKTsKKworICAgICAgICBJbm5lciBpbm5lciA9IG5ldyBJbm5lcihib3R0bGVzKS5pbnZva2UoKTsKKyAgICAgICAgaWYgKGlubmVyLmlzKCkpIHJldHVybiBudWxsOworICAgICAgICBib29sZWFuIG5vMzNwciA9IGlubmVyLmlzTm8zM3ByKCk7CisgICAgICAgIGludCBmaXJzdCA9IGlubmVyLmdldEZpcnN0KCk7CisgICAgICAgIGludCBsYXN0ID0gaW5uZXIuZ2V0TGFzdCgpOworICAgICAgICBjaGFyW10gdHJpcGVsID0gaW5uZXIuZ2V0VHJpcGVsKCk7CisgICAgICAgIGludCByQ291bnQgPSBpbm5lci5nZXRyQ291bnQoKTsKKyAgICAgICAgaW50IHdDb3VudCA9IGlubmVyLmdldHdDb3VudCgpOworICAgICAgICBpbnQgbkNvdW50ID0gaW5uZXIuZ2V0bkNvdW50KCk7CisgICAgICAgIGludCBtb25leSA9IGlubmVyLmdldE1vbmV5KCk7CisgICAgICAgIExpc3Q8U3RyaW5nPiBlcnJvcnMgPSBpbm5lci5nZXRFcnJvcnMoKTsKKworICAgICAgICBib29sZWFuIHVuaGFwcHkgPSBubzMzcHIgJiYgZmlyc3QgfHwgbm8zM3ByICYmIGxhc3Q7CisKKyAgICAgICAgU3RyaW5nIHJlc3VsdCA9IGFtb3VudCArIEFycmF5cy50b1N0cmluZyh0cmlwZWwpICsgckNvdW50ICsgd0NvdW50ICsgbkNvdW50ICsgbW9uZXkgKyBlcnJvcnM7CisKKyAgICAgICAgaWYgKCF1bmhhcHB5KQorICAgICAgICAgICAgcmVzdWx0ICs9ICJoYXBweSI7CisKKworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKworICAgIHByaXZhdGUgY2xhc3MgSW5uZXIgeworICAgICAgICBwcml2YXRlIGJvb2xlYW4gbXlSZXN1bHQ7CisgICAgICAgIHByaXZhdGUgQXJyYXlMaXN0PFN0cmluZz4gYm90dGxlczsKKyAgICAgICAgcHJpdmF0ZSBMaXN0PFN0cmluZz4gZXJyb3JzOworICAgICAgICBwcml2YXRlIGludCBtb25leTsKKyAgICAgICAgcHJpdmF0ZSBpbnQgbkNvdW50OworICAgICAgICBwcml2YXRlIGludCByQ291bnQ7CisgICAgICAgIHByaXZhdGUgaW50IHdDb3VudDsKKyAgICAgICAgcHJpdmF0ZSBjaGFyW10gdHJpcGVsOworICAgICAgICBwcml2YXRlIGJvb2xlYW4gbm8zM3ByOworICAgICAgICBwcml2YXRlIGludCBmaXJzdDsKKyAgICAgICAgcHJpdmF0ZSBpbnQgbGFzdDsKKworICAgICAgICBwdWJsaWMgSW5uZXIoQXJyYXlMaXN0PFN0cmluZz4gYm90dGxlcykgeworICAgICAgICAgICAgdGhpcy5ib3R0bGVzID0gYm90dGxlczsKKyAgICAgICAgfQorCisgICAgICAgIGJvb2xlYW4gaXMoKSB7CisgICAgICAgICAgICByZXR1cm4gbXlSZXN1bHQ7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgTGlzdDxTdHJpbmc+IGdldEVycm9ycygpIHsKKyAgICAgICAgICAgIHJldHVybiBlcnJvcnM7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgaW50IGdldE1vbmV5KCkgeworICAgICAgICAgICAgcmV0dXJuIG1vbmV5OworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIGludCBnZXRuQ291bnQoKSB7CisgICAgICAgICAgICByZXR1cm4gbkNvdW50OworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIGludCBnZXRyQ291bnQoKSB7CisgICAgICAgICAgICByZXR1cm4gckNvdW50OworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIGludCBnZXR3Q291bnQoKSB7CisgICAgICAgICAgICByZXR1cm4gd0NvdW50OworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIGNoYXJbXSBnZXRUcmlwZWwoKSB7CisgICAgICAgICAgICByZXR1cm4gdHJpcGVsOworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIGJvb2xlYW4gaXNObzMzcHIoKSB7CisgICAgICAgICAgICByZXR1cm4gbm8zM3ByOworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIGludCBnZXRGaXJzdCgpIHsKKyAgICAgICAgICAgIHJldHVybiBmaXJzdDsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyBpbnQgZ2V0TGFzdCgpIHsKKyAgICAgICAgICAgIHJldHVybiBsYXN0OworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIElubmVyIGludm9rZSgpIHsKKyAgICAgICAgICAgIGVycm9ycyA9IG5ldyBBcnJheUxpc3Q8PigpOworCisgICAgICAgICAgICBtb25leSA9IDA7CisgICAgICAgICAgICBuQ291bnQgPSAwOworICAgICAgICAgICAgckNvdW50ID0gMDsKKyAgICAgICAgICAgIHdDb3VudCA9IDA7CisgICAgICAgICAgICB0cmlwZWwgPSBuZXcgY2hhcltib3R0bGVzLnNpemUoKV07CisgICAgICAgICAgICBubzMzcHIgPSBmYWxzZTsKKyAgICAgICAgICAgIGZpcnN0ID0gMDsKKyAgICAgICAgICAgIGxhc3QgPSAwOworICAgICAgICAgICAgaWYgKHRydWUpIHsKKyAgICAgICAgICAgICAgICBteVJlc3VsdCA9IHRydWU7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXM7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBteVJlc3VsdCA9IGZhbHNlOworICAgICAgICAgICAgcmV0dXJuIHRoaXM7CisgICAgICAgIH0KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2RPYmplY3QvbXVsdGlwbGVFeGl0UG9pbnRzL0NvbmRpdGlvbmFsRXhpdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2RPYmplY3QvbXVsdGlwbGVFeGl0UG9pbnRzL0NvbmRpdGlvbmFsRXhpdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI4Nzc4Y2IKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZE9iamVjdC9tdWx0aXBsZUV4aXRQb2ludHMvQ29uZGl0aW9uYWxFeGl0LmphdmEKQEAgLTAsMCArMSw5IEBACitjbGFzcyBGb28geworICBTdHJpbmcgZm9vKCkgeworICAgIDxzZWxlY3Rpb24+U3RyaW5nIHZhciA9IG51bGw7CisgICAgaWYgKHZhciA9PSBudWxsKSB7CisgICAgICByZXR1cm4gIiI7CisgICAgfTwvc2VsZWN0aW9uPgorICAgIFN5c3RlbS5vdXQucHJpbnRsbih2YXIpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2RPYmplY3QvbXVsdGlwbGVFeGl0UG9pbnRzL0NvbmRpdGlvbmFsRXhpdC5qYXZhLmFmdGVyIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2RPYmplY3QvbXVsdGlwbGVFeGl0UG9pbnRzL0NvbmRpdGlvbmFsRXhpdC5qYXZhLmFmdGVyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBlNGNhNjQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZE9iamVjdC9tdWx0aXBsZUV4aXRQb2ludHMvQ29uZGl0aW9uYWxFeGl0LmphdmEuYWZ0ZXIKQEAgLTAsMCArMSwzMSBAQAorY2xhc3MgRm9vIHsKKyAgU3RyaW5nIGZvbygpIHsKKyAgICAgIElubmVyIGlubmVyID0gbmV3IElubmVyKCkuaW52b2tlKCk7CisgICAgICBpZiAoaW5uZXIuaXMoKSkgcmV0dXJuICIiOworICAgICAgU3RyaW5nIHZhciA9IGlubmVyLmdldFZhcigpOworICAgIFN5c3RlbS5vdXQucHJpbnRsbih2YXIpOworICB9CisKKyAgICBwcml2YXRlIGNsYXNzIElubmVyIHsKKyAgICAgICAgcHJpdmF0ZSBib29sZWFuIG15UmVzdWx0OworICAgICAgICBwcml2YXRlIFN0cmluZyB2YXI7CisKKyAgICAgICAgYm9vbGVhbiBpcygpIHsKKyAgICAgICAgICAgIHJldHVybiBteVJlc3VsdDsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyBTdHJpbmcgZ2V0VmFyKCkgeworICAgICAgICAgICAgcmV0dXJuIHZhcjsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyBJbm5lciBpbnZva2UoKSB7CisgICAgICAgICAgICB2YXIgPSBudWxsOworICAgICAgICAgICAgaWYgKHZhciA9PSBudWxsKSB7CisgICAgICAgICAgICAgICAgbXlSZXN1bHQgPSB0cnVlOworICAgICAgICAgICAgICAgIHJldHVybiB0aGlzOworICAgICAgICAgICAgfQorICAgICAgICAgICAgbXlSZXN1bHQgPSBmYWxzZTsKKyAgICAgICAgICAgIHJldHVybiB0aGlzOworICAgICAgICB9CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kT2JqZWN0L211bHRpcGxlRXhpdFBvaW50cy9Db25kaXRpb25hbEV4aXRXaXRob3V0Q29kZUJsb2NrLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZE9iamVjdC9tdWx0aXBsZUV4aXRQb2ludHMvQ29uZGl0aW9uYWxFeGl0V2l0aG91dENvZGVCbG9jay5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBmMjU3YmEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZE9iamVjdC9tdWx0aXBsZUV4aXRQb2ludHMvQ29uZGl0aW9uYWxFeGl0V2l0aG91dENvZGVCbG9jay5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKK2NsYXNzIFRlc3QgeworICB2b2lkIGZvbyhTdHJpbmdbXSBhcmdzKXsKKyAgICBmb3IgKFN0cmluZyBhQXJnIDogYXJncykgeworICAgICAgPHNlbGVjdGlvbj5ib29sZWFuIGEgPSBhQXJnID09IG51bGw7CisgICAgICBpZiAoYUFyZyA9PSBudWxsKSBjb250aW51ZTs8L3NlbGVjdGlvbj4KKworICAgICAgU3lzdGVtLm91dC5wcmludGxuKGFBcmcgKyBhKTsKKyAgICB9CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kT2JqZWN0L211bHRpcGxlRXhpdFBvaW50cy9Db25kaXRpb25hbEV4aXRXaXRob3V0Q29kZUJsb2NrLmphdmEuYWZ0ZXIgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZE9iamVjdC9tdWx0aXBsZUV4aXRQb2ludHMvQ29uZGl0aW9uYWxFeGl0V2l0aG91dENvZGVCbG9jay5qYXZhLmFmdGVyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU5OTJlMTgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZE9iamVjdC9tdWx0aXBsZUV4aXRQb2ludHMvQ29uZGl0aW9uYWxFeGl0V2l0aG91dENvZGVCbG9jay5qYXZhLmFmdGVyCkBAIC0wLDAgKzEsMzkgQEAKK2NsYXNzIFRlc3QgeworICB2b2lkIGZvbyhTdHJpbmdbXSBhcmdzKXsKKyAgICBmb3IgKFN0cmluZyBhQXJnIDogYXJncykgeworICAgICAgICBJbm5lciBpbm5lciA9IG5ldyBJbm5lcihhQXJnKS5pbnZva2UoKTsKKyAgICAgICAgaWYgKGlubmVyLmlzKCkpIGNvbnRpbnVlOworICAgICAgICBib29sZWFuIGEgPSBpbm5lci5pc0EoKTsKKworICAgICAgU3lzdGVtLm91dC5wcmludGxuKGFBcmcgKyBhKTsKKyAgICB9CisgIH0KKworICAgIHByaXZhdGUgY2xhc3MgSW5uZXIgeworICAgICAgICBwcml2YXRlIGJvb2xlYW4gbXlSZXN1bHQ7CisgICAgICAgIHByaXZhdGUgU3RyaW5nIGFBcmc7CisgICAgICAgIHByaXZhdGUgYm9vbGVhbiBhOworCisgICAgICAgIHB1YmxpYyBJbm5lcihTdHJpbmcgYUFyZykgeworICAgICAgICAgICAgdGhpcy5hQXJnID0gYUFyZzsKKyAgICAgICAgfQorCisgICAgICAgIGJvb2xlYW4gaXMoKSB7CisgICAgICAgICAgICByZXR1cm4gbXlSZXN1bHQ7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgYm9vbGVhbiBpc0EoKSB7CisgICAgICAgICAgICByZXR1cm4gYTsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyBJbm5lciBpbnZva2UoKSB7CisgICAgICAgICAgICBhID0gYUFyZyA9PSBudWxsOworICAgICAgICAgICAgaWYgKGFBcmcgPT0gbnVsbCkgeworICAgICAgICAgICAgICAgIG15UmVzdWx0ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICByZXR1cm4gdGhpczsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG15UmVzdWx0ID0gZmFsc2U7CisgICAgICAgICAgICByZXR1cm4gdGhpczsKKyAgICAgICAgfQorICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kT2JqZWN0L211bHRpcGxlRXhpdFBvaW50cy9FeHRyYWN0RnJvbUFub255bW91cy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2RPYmplY3QvbXVsdGlwbGVFeGl0UG9pbnRzL0V4dHJhY3RGcm9tQW5vbnltb3VzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzQ4MzYyMgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kT2JqZWN0L211bHRpcGxlRXhpdFBvaW50cy9FeHRyYWN0RnJvbUFub255bW91cy5qYXZhCkBAIC0wLDAgKzEsMTEgQEAKK2NsYXNzIFRlc3QgeworICB2b2lkIGZvbygpIHsKKyAgICBuZXcgUnVubmFibGUoKSB7CisgICAgICBwdWJsaWMgdm9pZCBydW4oKSB7CisgICAgICAgIDxzZWxlY3Rpb24+aW50IGkgPSAwOworICAgICAgICBpbnQgaiA9IDA7PC9zZWxlY3Rpb24+CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihpICsgaik7CisgICAgICB9CisgICAgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2RPYmplY3QvbXVsdGlwbGVFeGl0UG9pbnRzL0V4dHJhY3RGcm9tQW5vbnltb3VzLmphdmEuYWZ0ZXIgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZE9iamVjdC9tdWx0aXBsZUV4aXRQb2ludHMvRXh0cmFjdEZyb21Bbm9ueW1vdXMuamF2YS5hZnRlcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZGZhNTJiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2RPYmplY3QvbXVsdGlwbGVFeGl0UG9pbnRzL0V4dHJhY3RGcm9tQW5vbnltb3VzLmphdmEuYWZ0ZXIKQEAgLTAsMCArMSwzMSBAQAorY2xhc3MgVGVzdCB7CisgIHZvaWQgZm9vKCkgeworICAgIG5ldyBSdW5uYWJsZSgpIHsKKyAgICAgIHB1YmxpYyB2b2lkIHJ1bigpIHsKKyAgICAgICAgICBJbm5lciBpbm5lciA9IG5ldyBJbm5lcigpLmludm9rZSgpOworICAgICAgICAgIGludCBpID0gaW5uZXIuZ2V0SSgpOworICAgICAgICAgIGludCBqID0gaW5uZXIuZ2V0SigpOworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oaSArIGopOworICAgICAgfQorICAgIH0KKyAgfQorCisgICAgcHJpdmF0ZSBjbGFzcyBJbm5lciB7CisgICAgICAgIHByaXZhdGUgaW50IGk7CisgICAgICAgIHByaXZhdGUgaW50IGo7CisKKyAgICAgICAgcHVibGljIGludCBnZXRJKCkgeworICAgICAgICAgICAgcmV0dXJuIGk7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgaW50IGdldEooKSB7CisgICAgICAgICAgICByZXR1cm4gajsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyBJbm5lciBpbnZva2UoKSB7CisgICAgICAgICAgICBpID0gMDsKKyAgICAgICAgICAgIGogPSAwOworICAgICAgICAgICAgcmV0dXJuIHRoaXM7CisgICAgICAgIH0KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2RPYmplY3QvbXVsdGlwbGVFeGl0UG9pbnRzL0V4dHJhY3RGcm9tSWZTdGF0ZW1lbnRJbnNpZGVBbm9ueW1vdXMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kT2JqZWN0L211bHRpcGxlRXhpdFBvaW50cy9FeHRyYWN0RnJvbUlmU3RhdGVtZW50SW5zaWRlQW5vbnltb3VzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2IyNDViMgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kT2JqZWN0L211bHRpcGxlRXhpdFBvaW50cy9FeHRyYWN0RnJvbUlmU3RhdGVtZW50SW5zaWRlQW5vbnltb3VzLmphdmEKQEAgLTAsMCArMSwxMyBAQAorY2xhc3MgVGVzdCB7CisgIHZvaWQgZm9vKCkgeworICAgIG5ldyBSdW5uYWJsZSgpIHsKKyAgICAgIHB1YmxpYyB2b2lkIHJ1bigpIHsKKyAgICAgICAgICA8c2VsZWN0aW9uPlN0cmluZyB2YXIgPSBudWxsOworICAgICAgICAgIGlmICh2YXIgPT0gbnVsbCkgeworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgIH08L3NlbGVjdGlvbj4KKyAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4odmFyKTsKKyAgICAgIH0KKyAgICB9OworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2RPYmplY3QvbXVsdGlwbGVFeGl0UG9pbnRzL0V4dHJhY3RGcm9tSWZTdGF0ZW1lbnRJbnNpZGVBbm9ueW1vdXMuamF2YS5hZnRlciBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kT2JqZWN0L211bHRpcGxlRXhpdFBvaW50cy9FeHRyYWN0RnJvbUlmU3RhdGVtZW50SW5zaWRlQW5vbnltb3VzLmphdmEuYWZ0ZXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTI4ZmVhNAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kT2JqZWN0L211bHRpcGxlRXhpdFBvaW50cy9FeHRyYWN0RnJvbUlmU3RhdGVtZW50SW5zaWRlQW5vbnltb3VzLmphdmEuYWZ0ZXIKQEAgLTAsMCArMSwzNSBAQAorY2xhc3MgVGVzdCB7CisgIHZvaWQgZm9vKCkgeworICAgIG5ldyBSdW5uYWJsZSgpIHsKKyAgICAgIHB1YmxpYyB2b2lkIHJ1bigpIHsKKyAgICAgICAgICBJbm5lciBpbm5lciA9IG5ldyBJbm5lcigpLmludm9rZSgpOworICAgICAgICAgIGlmIChpbm5lci5pcygpKSByZXR1cm47CisgICAgICAgICAgU3RyaW5nIHZhciA9IGlubmVyLmdldFZhcigpOworICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbih2YXIpOworICAgICAgfQorICAgIH07CisgIH0KKworICAgIHByaXZhdGUgY2xhc3MgSW5uZXIgeworICAgICAgICBwcml2YXRlIGJvb2xlYW4gbXlSZXN1bHQ7CisgICAgICAgIHByaXZhdGUgU3RyaW5nIHZhcjsKKworICAgICAgICBib29sZWFuIGlzKCkgeworICAgICAgICAgICAgcmV0dXJuIG15UmVzdWx0OworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIFN0cmluZyBnZXRWYXIoKSB7CisgICAgICAgICAgICByZXR1cm4gdmFyOworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIElubmVyIGludm9rZSgpIHsKKyAgICAgICAgICAgIHZhciA9IG51bGw7CisgICAgICAgICAgICBpZiAodmFyID09IG51bGwpIHsKKyAgICAgICAgICAgICAgICBteVJlc3VsdCA9IHRydWU7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXM7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBteVJlc3VsdCA9IGZhbHNlOworICAgICAgICAgICAgcmV0dXJuIHRoaXM7CisgICAgICAgIH0KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2RPYmplY3QvbXVsdGlwbGVFeGl0UG9pbnRzL0V4dHJhY3RlZEFzc2lnbm1lbnRFeHByZXNzaW9uLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZE9iamVjdC9tdWx0aXBsZUV4aXRQb2ludHMvRXh0cmFjdGVkQXNzaWdubWVudEV4cHJlc3Npb24uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YWZhNWIwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2RPYmplY3QvbXVsdGlwbGVFeGl0UG9pbnRzL0V4dHJhY3RlZEFzc2lnbm1lbnRFeHByZXNzaW9uLmphdmEKQEAgLTAsMCArMSw3IEBACitjbGFzcyBUZXN0IHsKKyAgdm9pZCBmb28oKSB7CisgICAgaW50IHggPSAwOworICAgIGludCB5ID0gPHNlbGVjdGlvbj54ID0gMTwvc2VsZWN0aW9uPjsKKyAgICBTeXN0ZW0ub3V0LnByaW50bG4oeCArIHkpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2RPYmplY3QvbXVsdGlwbGVFeGl0UG9pbnRzL0V4dHJhY3RlZEFzc2lnbm1lbnRFeHByZXNzaW9uLmphdmEuYWZ0ZXIgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZE9iamVjdC9tdWx0aXBsZUV4aXRQb2ludHMvRXh0cmFjdGVkQXNzaWdubWVudEV4cHJlc3Npb24uamF2YS5hZnRlcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NDhiYWNlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2RPYmplY3QvbXVsdGlwbGVFeGl0UG9pbnRzL0V4dHJhY3RlZEFzc2lnbm1lbnRFeHByZXNzaW9uLmphdmEuYWZ0ZXIKQEAgLTAsMCArMSwyMiBAQAorY2xhc3MgVGVzdCB7CisgIHZvaWQgZm9vKCkgeworICAgIGludCB4ID0gMDsKKyAgICAgIElubmVyIGlubmVyID0gbmV3IElubmVyKCkuaW52b2tlKCk7CisgICAgICB4ID0gaW5uZXIuZ2V0WCgpOworICAgICAgaW50IHkgPSB4OworICAgIFN5c3RlbS5vdXQucHJpbnRsbih4ICsgeSk7CisgIH0KKworICAgIHByaXZhdGUgY2xhc3MgSW5uZXIgeworICAgICAgICBwcml2YXRlIGludCB4OworCisgICAgICAgIHB1YmxpYyBpbnQgZ2V0WCgpIHsKKyAgICAgICAgICAgIHJldHVybiB4OworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIElubmVyIGludm9rZSgpIHsKKyAgICAgICAgICAgIHggPSAxOworICAgICAgICAgICAgcmV0dXJuIHRoaXM7CisgICAgICAgIH0KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2RPYmplY3QvbXVsdGlwbGVFeGl0UG9pbnRzL0V4dHJhY3RlZEluY0V4cHJlc3Npb24uamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kT2JqZWN0L211bHRpcGxlRXhpdFBvaW50cy9FeHRyYWN0ZWRJbmNFeHByZXNzaW9uLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2Y5ODFlNgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kT2JqZWN0L211bHRpcGxlRXhpdFBvaW50cy9FeHRyYWN0ZWRJbmNFeHByZXNzaW9uLmphdmEKQEAgLTAsMCArMSw3IEBACitjbGFzcyBUZXN0IHsKKyAgdm9pZCBmb28oKSB7CisgICAgaW50IHggPSAwOworICAgIGludCB5ID0gPHNlbGVjdGlvbj54Kys8L3NlbGVjdGlvbj47CisgICAgU3lzdGVtLm91dC5wcmludGxuKHggKyB5KTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kT2JqZWN0L211bHRpcGxlRXhpdFBvaW50cy9FeHRyYWN0ZWRJbmNFeHByZXNzaW9uLmphdmEuYWZ0ZXIgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZE9iamVjdC9tdWx0aXBsZUV4aXRQb2ludHMvRXh0cmFjdGVkSW5jRXhwcmVzc2lvbi5qYXZhLmFmdGVyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdmNGYzY2YKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZE9iamVjdC9tdWx0aXBsZUV4aXRQb2ludHMvRXh0cmFjdGVkSW5jRXhwcmVzc2lvbi5qYXZhLmFmdGVyCkBAIC0wLDAgKzEsMjYgQEAKK2NsYXNzIFRlc3QgeworICB2b2lkIGZvbygpIHsKKyAgICBpbnQgeCA9IDA7CisgICAgICBJbm5lciBpbm5lciA9IG5ldyBJbm5lcih4KS5pbnZva2UoKTsKKyAgICAgIHggPSBpbm5lci5nZXRYKCk7CisgICAgICBpbnQgeSA9IHg7CisgICAgU3lzdGVtLm91dC5wcmludGxuKHggKyB5KTsKKyAgfQorCisgICAgcHJpdmF0ZSBjbGFzcyBJbm5lciB7CisgICAgICAgIHByaXZhdGUgaW50IHg7CisKKyAgICAgICAgcHVibGljIElubmVyKGludCB4KSB7CisgICAgICAgICAgICB0aGlzLnggPSB4OworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIGludCBnZXRYKCkgeworICAgICAgICAgICAgcmV0dXJuIHg7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgSW5uZXIgaW52b2tlKCkgeworICAgICAgICAgICAgeCsrOworICAgICAgICAgICAgcmV0dXJuIHRoaXM7CisgICAgICAgIH0KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2RPYmplY3QvbXVsdGlwbGVFeGl0UG9pbnRzL0Zyb21TdGF0aWNDb250ZXh0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZE9iamVjdC9tdWx0aXBsZUV4aXRQb2ludHMvRnJvbVN0YXRpY0NvbnRleHQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMWFjNDYzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2RPYmplY3QvbXVsdGlwbGVFeGl0UG9pbnRzL0Zyb21TdGF0aWNDb250ZXh0LmphdmEKQEAgLTAsMCArMSwxMiBAQAorY2xhc3MgQmFnIHsKKyAgICBJbnRlZ2VyIHg7CisgICAgSW50ZWdlciB5OworfQorCitjbGFzcyBGb28geworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBmb28oKSB7CisgICAgICAgIEJhZyBiID0gbmV3IEJhZygpOworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oPHNlbGVjdGlvbj5iPC9zZWxlY3Rpb24+LngpOworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oYi54KTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2RPYmplY3QvbXVsdGlwbGVFeGl0UG9pbnRzL0Zyb21TdGF0aWNDb250ZXh0LmphdmEuYWZ0ZXIgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZE9iamVjdC9tdWx0aXBsZUV4aXRQb2ludHMvRnJvbVN0YXRpY0NvbnRleHQuamF2YS5hZnRlcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYzJjYWVjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2RPYmplY3QvbXVsdGlwbGVFeGl0UG9pbnRzL0Zyb21TdGF0aWNDb250ZXh0LmphdmEuYWZ0ZXIKQEAgLTAsMCArMSwyNCBAQAorY2xhc3MgQmFnIHsKKyAgICBJbnRlZ2VyIHg7CisgICAgSW50ZWdlciB5OworfQorCitjbGFzcyBGb28geworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBmb28oKSB7CisgICAgICAgIEJhZyBiID0gbmV3IEJhZygpOworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4obmV3IElubmVyKGIpLmludm9rZSgpLngpOworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4obmV3IElubmVyKGIpLmludm9rZSgpLngpOworICAgIH0KKworICAgIHByaXZhdGUgc3RhdGljIGNsYXNzIElubmVyIHsKKyAgICAgICAgcHJpdmF0ZSBCYWcgYjsKKworICAgICAgICBwdWJsaWMgSW5uZXIoQmFnIGIpIHsKKyAgICAgICAgICAgIHRoaXMuYiA9IGI7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgQmFnIGludm9rZSgpIHsKKyAgICAgICAgICAgIHJldHVybiBiOworICAgICAgICB9CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kT2JqZWN0L211bHRpcGxlRXhpdFBvaW50cy9JbnB1dE91dHB1dC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2RPYmplY3QvbXVsdGlwbGVFeGl0UG9pbnRzL0lucHV0T3V0cHV0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjc0OGU1YwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kT2JqZWN0L211bHRpcGxlRXhpdFBvaW50cy9JbnB1dE91dHB1dC5qYXZhCkBAIC0wLDAgKzEsMTIgQEAKK2NsYXNzIFRlc3QgeworICAgdm9pZCBmb28oKSB7CisgICAgICBpbnQgaSA9IDA7CisgICAgICAgIGludCBqID0gMDsKKyAgICAgICAgPHNlbGVjdGlvbj4KKyAgICAgICAgaW50IGsgPSAgaSArIGo7CisgICAgICAgIGogPSA5OworICAgICAgICA8L3NlbGVjdGlvbj4KKyAgICAgICAgaW50IG4gPSBpK2o7CisgICAgICAgIGludCBtID0gazsKKyAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZE9iamVjdC9tdWx0aXBsZUV4aXRQb2ludHMvSW5wdXRPdXRwdXQuamF2YS5hZnRlciBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kT2JqZWN0L211bHRpcGxlRXhpdFBvaW50cy9JbnB1dE91dHB1dC5qYXZhLmFmdGVyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYzZjgyOTMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZE9iamVjdC9tdWx0aXBsZUV4aXRQb2ludHMvSW5wdXRPdXRwdXQuamF2YS5hZnRlcgpAQCAtMCwwICsxLDM4IEBACitjbGFzcyBUZXN0IHsKKyAgIHZvaWQgZm9vKCkgeworICAgICAgaW50IGkgPSAwOworICAgICAgICBpbnQgaiA9IDA7CisKKyAgICAgICBJbm5lciBpbm5lciA9IG5ldyBJbm5lcihpLCBqKS5pbnZva2UoKTsKKyAgICAgICBqID0gaW5uZXIuZ2V0SigpOworICAgICAgIGludCBrID0gaW5uZXIuZ2V0SygpOworICAgICAgICAKKyAgICAgICAgaW50IG4gPSBpK2o7CisgICAgICAgIGludCBtID0gazsKKyAgIH0KKworICAgIHByaXZhdGUgY2xhc3MgSW5uZXIgeworICAgICAgICBwcml2YXRlIGludCBpOworICAgICAgICBwcml2YXRlIGludCBqOworICAgICAgICBwcml2YXRlIGludCBrOworCisgICAgICAgIHB1YmxpYyBJbm5lcihpbnQgaSwgaW50IGopIHsKKyAgICAgICAgICAgIHRoaXMuaSA9IGk7CisgICAgICAgICAgICB0aGlzLmogPSBqOworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIGludCBnZXRKKCkgeworICAgICAgICAgICAgcmV0dXJuIGo7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgaW50IGdldEsoKSB7CisgICAgICAgICAgICByZXR1cm4gazsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyBJbm5lciBpbnZva2UoKSB7CisgICAgICAgICAgICBrID0gaSArIGo7CisgICAgICAgICAgICBqID0gOTsKKyAgICAgICAgICAgIHJldHVybiB0aGlzOworICAgICAgICB9CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kT2JqZWN0L211bHRpcGxlRXhpdFBvaW50cy9NdWx0aWxpbmVEZWNsYXJhdGlvbnMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kT2JqZWN0L211bHRpcGxlRXhpdFBvaW50cy9NdWx0aWxpbmVEZWNsYXJhdGlvbnMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44OTYxOWQzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2RPYmplY3QvbXVsdGlwbGVFeGl0UG9pbnRzL011bHRpbGluZURlY2xhcmF0aW9ucy5qYXZhCkBAIC0wLDAgKzEsOSBAQAorY2xhc3MgVGVzdCB7CisgICAgcHVibGljIHZvaWQgY29udGV4dDEoKSB7CisgICAgICAgIDxzZWxlY3Rpb24+aW50IGkgPSAwLCBqID0gMDsKKyAgICAgICAgaW50IGsgPSBpICsgajsKKyAgICAgICAgPC9zZWxlY3Rpb24+CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihNZXNzYWdlRm9ybWF0LmZvcm1hdCgiaTogezB9IiwgaSkpOworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oTWVzc2FnZUZvcm1hdC5mb3JtYXQoIms6IHswfSIsIGopKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2RPYmplY3QvbXVsdGlwbGVFeGl0UG9pbnRzL011bHRpbGluZURlY2xhcmF0aW9ucy5qYXZhLmFmdGVyIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2RPYmplY3QvbXVsdGlwbGVFeGl0UG9pbnRzL011bHRpbGluZURlY2xhcmF0aW9ucy5qYXZhLmFmdGVyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc0ZDkzNGIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZE9iamVjdC9tdWx0aXBsZUV4aXRQb2ludHMvTXVsdGlsaW5lRGVjbGFyYXRpb25zLmphdmEuYWZ0ZXIKQEAgLTAsMCArMSwzMCBAQAorY2xhc3MgVGVzdCB7CisgICAgcHVibGljIHZvaWQgY29udGV4dDEoKSB7CisgICAgICAgIElubmVyIGlubmVyID0gbmV3IElubmVyKCkuaW52b2tlKCk7CisgICAgICAgIGludCBpID0gaW5uZXIuZ2V0SSgpOworICAgICAgICBpbnQgaiA9IGlubmVyLmdldEooKTsKKyAgICAgICAgCisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihNZXNzYWdlRm9ybWF0LmZvcm1hdCgiaTogezB9IiwgaSkpOworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oTWVzc2FnZUZvcm1hdC5mb3JtYXQoIms6IHswfSIsIGopKTsKKyAgICB9CisKKyAgICBwcml2YXRlIGNsYXNzIElubmVyIHsKKyAgICAgICAgcHJpdmF0ZSBpbnQgaTsKKyAgICAgICAgcHJpdmF0ZSBpbnQgajsKKworICAgICAgICBwdWJsaWMgaW50IGdldEkoKSB7CisgICAgICAgICAgICByZXR1cm4gaTsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyBpbnQgZ2V0SigpIHsKKyAgICAgICAgICAgIHJldHVybiBqOworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIElubmVyIGludm9rZSgpIHsKKyAgICAgICAgICAgIGkgPSAwOworICAgICAgICAgICAgaiA9IDA7CisgICAgICAgICAgICBpbnQgayA9IGkgKyBqOworICAgICAgICAgICAgcmV0dXJuIHRoaXM7CisgICAgICAgIH0KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2RPYmplY3QvbXVsdGlwbGVFeGl0UG9pbnRzL05vbkNhbm9uaWNhbE5hbWluZy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2RPYmplY3QvbXVsdGlwbGVFeGl0UG9pbnRzL05vbkNhbm9uaWNhbE5hbWluZy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRkZTcxM2QKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZE9iamVjdC9tdWx0aXBsZUV4aXRQb2ludHMvTm9uQ2Fub25pY2FsTmFtaW5nLmphdmEKQEAgLTAsMCArMSw4IEBACitjbGFzcyBUZXN0IHsKKyAgICB2b2lkIGZ0KCkgeworICAgICAgICA8c2VsZWN0aW9uPlN0cmluZyBfcmVzdWx0ID0gIiI7CisgICAgICAgIF9yZXN1bHQgKz0icyI7CisgICAgICAgIGludCBrID0gMDs8L3NlbGVjdGlvbj4KKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKF9yZXN1bHQgKyBrKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2RPYmplY3QvbXVsdGlwbGVFeGl0UG9pbnRzL05vbkNhbm9uaWNhbE5hbWluZy5qYXZhLmFmdGVyIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2RPYmplY3QvbXVsdGlwbGVFeGl0UG9pbnRzL05vbkNhbm9uaWNhbE5hbWluZy5qYXZhLmFmdGVyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBjMzgwMTUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZE9iamVjdC9tdWx0aXBsZUV4aXRQb2ludHMvTm9uQ2Fub25pY2FsTmFtaW5nLmphdmEuYWZ0ZXIKQEAgLTAsMCArMSwyOCBAQAorY2xhc3MgVGVzdCB7CisgICAgdm9pZCBmdCgpIHsKKyAgICAgICAgSW5uZXIgaW5uZXIgPSBuZXcgSW5uZXIoKS5pbnZva2UoKTsKKyAgICAgICAgU3RyaW5nIF9yZXN1bHQgPSBpbm5lci5nZXRSZXN1bHQoKTsKKyAgICAgICAgaW50IGsgPSBpbm5lci5nZXRLKCk7CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihfcmVzdWx0ICsgayk7CisgICAgfQorCisgICAgcHJpdmF0ZSBjbGFzcyBJbm5lciB7CisgICAgICAgIHByaXZhdGUgU3RyaW5nIHJlc3VsdDsKKyAgICAgICAgcHJpdmF0ZSBpbnQgazsKKworICAgICAgICBwdWJsaWMgU3RyaW5nIGdldFJlc3VsdCgpIHsKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgaW50IGdldEsoKSB7CisgICAgICAgICAgICByZXR1cm4gazsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyBJbm5lciBpbnZva2UoKSB7CisgICAgICAgICAgICByZXN1bHQgPSAiIjsKKyAgICAgICAgICAgIHJlc3VsdCArPSJzIjsKKyAgICAgICAgICAgIGsgPSAwOworICAgICAgICAgICAgcmV0dXJuIHRoaXM7CisgICAgICAgIH0KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2RPYmplY3QvbXVsdGlwbGVFeGl0UG9pbnRzL091dHB1dFZhcmlhYmxlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZE9iamVjdC9tdWx0aXBsZUV4aXRQb2ludHMvT3V0cHV0VmFyaWFibGUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MTlkZTEyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2RPYmplY3QvbXVsdGlwbGVFeGl0UG9pbnRzL091dHB1dFZhcmlhYmxlLmphdmEKQEAgLTAsMCArMSw5IEBACitjbGFzcyBGb28geworICBTdHJpbmcgZm9vKCkgeworICAgIDxzZWxlY3Rpb24+U3RyaW5nIHZhciA9ICIiOworICAgIGlmICh2YXIgPT0gbnVsbCkgeworICAgICAgcmV0dXJuIG51bGw7CisgICAgfTwvc2VsZWN0aW9uPgorICAgIFN5c3RlbS5vdXQucHJpbnRsbih2YXIpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2RPYmplY3QvbXVsdGlwbGVFeGl0UG9pbnRzL091dHB1dFZhcmlhYmxlLmphdmEuYWZ0ZXIgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZE9iamVjdC9tdWx0aXBsZUV4aXRQb2ludHMvT3V0cHV0VmFyaWFibGUuamF2YS5hZnRlcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMzMwZDQzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2RPYmplY3QvbXVsdGlwbGVFeGl0UG9pbnRzL091dHB1dFZhcmlhYmxlLmphdmEuYWZ0ZXIKQEAgLTAsMCArMSwzMSBAQAorY2xhc3MgRm9vIHsKKyAgU3RyaW5nIGZvbygpIHsKKyAgICAgIElubmVyIGlubmVyID0gbmV3IElubmVyKCkuaW52b2tlKCk7CisgICAgICBTdHJpbmcgdmFyID0gaW5uZXIuZ2V0VmFyKCk7CisgICAgICBpZiAodmFyID09IG51bGwpIHJldHVybiBudWxsOworICAgIFN5c3RlbS5vdXQucHJpbnRsbih2YXIpOworICB9CisKKyAgICBwcml2YXRlIGNsYXNzIElubmVyIHsKKyAgICAgICAgcHJpdmF0ZSBib29sZWFuIG15UmVzdWx0OworICAgICAgICBwcml2YXRlIFN0cmluZyB2YXI7CisKKyAgICAgICAgYm9vbGVhbiBpcygpIHsKKyAgICAgICAgICAgIHJldHVybiBteVJlc3VsdDsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyBTdHJpbmcgZ2V0VmFyKCkgeworICAgICAgICAgICAgcmV0dXJuIHZhcjsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyBJbm5lciBpbnZva2UoKSB7CisgICAgICAgICAgICB2YXIgPSAiIjsKKyAgICAgICAgICAgIGlmICh2YXIgPT0gbnVsbCkgeworICAgICAgICAgICAgICAgIG15UmVzdWx0ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICByZXR1cm4gdGhpczsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG15UmVzdWx0ID0gZmFsc2U7CisgICAgICAgICAgICByZXR1cm4gdGhpczsKKyAgICAgICAgfQorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZE9iamVjdC9tdWx0aXBsZUV4aXRQb2ludHMvT3V0cHV0VmFyc1JlZmVyZW5jZXMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kT2JqZWN0L211bHRpcGxlRXhpdFBvaW50cy9PdXRwdXRWYXJzUmVmZXJlbmNlcy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUwMDI4YzQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZE9iamVjdC9tdWx0aXBsZUV4aXRQb2ludHMvT3V0cHV0VmFyc1JlZmVyZW5jZXMuamF2YQpAQCAtMCwwICsxLDEwIEBACitjbGFzcyBUZXN0IHsKKyAgICBwdWJsaWMgdm9pZCBjb250ZXh0MSgpIHsKKyAgICAgICAgPHNlbGVjdGlvbj5pbnQgaSA9IDE7CisgICAgICAgIGkgKz0gMTsKKyAgICAgICAgaW50IGsgPSAyOworICAgICAgICBrKys7PC9zZWxlY3Rpb24+CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihNZXNzYWdlRm9ybWF0LmZvcm1hdCgiaTogezB9IiwgaSkpOworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oTWVzc2FnZUZvcm1hdC5mb3JtYXQoIms6IHswfSIsIGspKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2RPYmplY3QvbXVsdGlwbGVFeGl0UG9pbnRzL091dHB1dFZhcnNSZWZlcmVuY2VzLmphdmEuYWZ0ZXIgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZE9iamVjdC9tdWx0aXBsZUV4aXRQb2ludHMvT3V0cHV0VmFyc1JlZmVyZW5jZXMuamF2YS5hZnRlcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNTI3NjkxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2RPYmplY3QvbXVsdGlwbGVFeGl0UG9pbnRzL091dHB1dFZhcnNSZWZlcmVuY2VzLmphdmEuYWZ0ZXIKQEAgLTAsMCArMSwzMCBAQAorY2xhc3MgVGVzdCB7CisgICAgcHVibGljIHZvaWQgY29udGV4dDEoKSB7CisgICAgICAgIElubmVyIGlubmVyID0gbmV3IElubmVyKCkuaW52b2tlKCk7CisgICAgICAgIGludCBpID0gaW5uZXIuZ2V0SSgpOworICAgICAgICBpbnQgayA9IGlubmVyLmdldEsoKTsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKE1lc3NhZ2VGb3JtYXQuZm9ybWF0KCJpOiB7MH0iLCBpKSk7CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihNZXNzYWdlRm9ybWF0LmZvcm1hdCgiazogezB9IiwgaykpOworICAgIH0KKworICAgIHByaXZhdGUgY2xhc3MgSW5uZXIgeworICAgICAgICBwcml2YXRlIGludCBpOworICAgICAgICBwcml2YXRlIGludCBrOworCisgICAgICAgIHB1YmxpYyBpbnQgZ2V0SSgpIHsKKyAgICAgICAgICAgIHJldHVybiBpOworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIGludCBnZXRLKCkgeworICAgICAgICAgICAgcmV0dXJuIGs7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgSW5uZXIgaW52b2tlKCkgeworICAgICAgICAgICAgaSA9IDE7CisgICAgICAgICAgICBpICs9IDE7CisgICAgICAgICAgICBrID0gMjsKKyAgICAgICAgICAgIGsrKzsKKyAgICAgICAgICAgIHJldHVybiB0aGlzOworICAgICAgICB9CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kT2JqZWN0L211bHRpcGxlRXhpdFBvaW50cy9SZXR1cm5FeGl0U3RhdGVtZW50LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZE9iamVjdC9tdWx0aXBsZUV4aXRQb2ludHMvUmV0dXJuRXhpdFN0YXRlbWVudC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM1ZTkyY2IKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZE9iamVjdC9tdWx0aXBsZUV4aXRQb2ludHMvUmV0dXJuRXhpdFN0YXRlbWVudC5qYXZhCkBAIC0wLDAgKzEsMTQgQEAKK2NsYXNzIEEgeworICBib29sZWFuIGZvbygpIHsKKworICAgIDxzZWxlY3Rpb24+Zm9yIChpbnQgaSA9IDA7IGkgPCA5OyBpKyspIHsKKyAgICAgIGZpbmFsIEJvb2xlYW4gZm9vID0gQm9vbGVhbi5GQUxTRTsKKyAgICAgIGlmIChmb28gIT0gbnVsbCkgeworICAgICAgICByZXR1cm4gZm9vOworICAgICAgfQorICAgIH08L3NlbGVjdGlvbj4KKworCisgICAgcmV0dXJuIGZhbHNlOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2RPYmplY3QvbXVsdGlwbGVFeGl0UG9pbnRzL1JldHVybkV4aXRTdGF0ZW1lbnQuamF2YS5hZnRlciBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kT2JqZWN0L211bHRpcGxlRXhpdFBvaW50cy9SZXR1cm5FeGl0U3RhdGVtZW50LmphdmEuYWZ0ZXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWFiNzUxYQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kT2JqZWN0L211bHRpcGxlRXhpdFBvaW50cy9SZXR1cm5FeGl0U3RhdGVtZW50LmphdmEuYWZ0ZXIKQEAgLTAsMCArMSwzNSBAQAorY2xhc3MgQSB7CisgIGJvb2xlYW4gZm9vKCkgeworCisgICAgICBJbm5lciBpbm5lciA9IG5ldyBJbm5lcigpLmludm9rZSgpOworICAgICAgaWYgKGlubmVyLmlzKCkpIHJldHVybiBpbm5lci5nZXRGb28oKTsKKworCisgICAgICByZXR1cm4gZmFsc2U7CisgIH0KKworICAgIHByaXZhdGUgY2xhc3MgSW5uZXIgeworICAgICAgICBwcml2YXRlIGJvb2xlYW4gbXlSZXN1bHQ7CisgICAgICAgIHByaXZhdGUgQm9vbGVhbiBmb287CisKKyAgICAgICAgYm9vbGVhbiBpcygpIHsKKyAgICAgICAgICAgIHJldHVybiBteVJlc3VsdDsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyBCb29sZWFuIGdldEZvbygpIHsKKyAgICAgICAgICAgIHJldHVybiBmb287CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgSW5uZXIgaW52b2tlKCkgeworICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCA5OyBpKyspIHsKKyAgICAgICAgICAgICAgICBmb28gPSBCb29sZWFuLkZBTFNFOworICAgICAgICAgICAgICBpZiAoZm9vICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgIG15UmVzdWx0ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzOworICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBteVJlc3VsdCA9IGZhbHNlOworICAgICAgICAgICAgcmV0dXJuIHRoaXM7CisgICAgICAgIH0KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2RPYmplY3QvbXVsdGlwbGVFeGl0UG9pbnRzL1N0YXRpY0lubmVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZE9iamVjdC9tdWx0aXBsZUV4aXRQb2ludHMvU3RhdGljSW5uZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YjJhYmE1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2RPYmplY3QvbXVsdGlwbGVFeGl0UG9pbnRzL1N0YXRpY0lubmVyLmphdmEKQEAgLTAsMCArMSwxMCBAQAorY2xhc3MgVGVzdCB7CisgICB2b2lkIGZvbygpIHsKKyAgICAgIGludCBpID0gMDsKKyAgICAgIDxzZWxlY3Rpb24+CisgICAgICBpbnQgaiA9IGk7CisgICAgICBpbnQgayA9IDA7CisgICAgICA8L3NlbGVjdGlvbj4KKyAgICAgIGludCBtID0gayArIGo7CisgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2RPYmplY3QvbXVsdGlwbGVFeGl0UG9pbnRzL1N0YXRpY0lubmVyLmphdmEuYWZ0ZXIgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZE9iamVjdC9tdWx0aXBsZUV4aXRQb2ludHMvU3RhdGljSW5uZXIuamF2YS5hZnRlcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMTM1OGRmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2RPYmplY3QvbXVsdGlwbGVFeGl0UG9pbnRzL1N0YXRpY0lubmVyLmphdmEuYWZ0ZXIKQEAgLTAsMCArMSwzNSBAQAorY2xhc3MgVGVzdCB7CisgICB2b2lkIGZvbygpIHsKKyAgICAgIGludCBpID0gMDsKKworICAgICAgIElubmVyIGlubmVyID0gbmV3IElubmVyKGkpLmludm9rZSgpOworICAgICAgIGludCBrID0gaW5uZXIuZ2V0SygpOworICAgICAgIGludCBqID0gaW5uZXIuZ2V0SigpOworICAgICAgCisgICAgICBpbnQgbSA9IGsgKyBqOworICAgfQorCisgICAgcHJpdmF0ZSBjbGFzcyBJbm5lciB7CisgICAgICAgIHByaXZhdGUgaW50IGk7CisgICAgICAgIHByaXZhdGUgaW50IGo7CisgICAgICAgIHByaXZhdGUgaW50IGs7CisKKyAgICAgICAgcHVibGljIElubmVyKGludCBpKSB7CisgICAgICAgICAgICB0aGlzLmkgPSBpOworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIGludCBnZXRKKCkgeworICAgICAgICAgICAgcmV0dXJuIGo7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgaW50IGdldEsoKSB7CisgICAgICAgICAgICByZXR1cm4gazsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyBJbm5lciBpbnZva2UoKSB7CisgICAgICAgICAgICBqID0gaTsKKyAgICAgICAgICAgIGsgPSAwOworICAgICAgICAgICAgcmV0dXJuIHRoaXM7CisgICAgICAgIH0KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2RPYmplY3QvbXVsdGlwbGVFeGl0UG9pbnRzL1VuaXF1ZU9iamVjdE5hbWUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kT2JqZWN0L211bHRpcGxlRXhpdFBvaW50cy9VbmlxdWVPYmplY3ROYW1lLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWI2NWY1ZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kT2JqZWN0L211bHRpcGxlRXhpdFBvaW50cy9VbmlxdWVPYmplY3ROYW1lLmphdmEKQEAgLTAsMCArMSwxOCBAQAorY2xhc3MgQSB7CisgICAgaW50IGZvbygpIHsKKyAgICAgICAgaW50IHggPSA0NTsKKyAgICAgICAgaW50IHkgPSA0NjsKKyAgICAgICAgaW50IGlubmVyID0gNDc7CisgICAgICAgIDxzZWxlY3Rpb24+eCA9IHkgKyAxOworICAgICAgICB5ID0gNzc7PC9zZWxlY3Rpb24+CisgICAgICAgIHggPSB5ICsgeCArIDQ1OworICAgICAgICBib29sZWFuIHogPSB0cnVlOworICAgICAgICBpZiAoeikgeworICAgICAgICAgICAgcmV0dXJuIHk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICB4ID0geTsKKyAgICAgICAgfQorICAgICAgICB5ID0gNDU7CisgICAgICAgIHJldHVybiB4OworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZE9iamVjdC9tdWx0aXBsZUV4aXRQb2ludHMvVW5pcXVlT2JqZWN0TmFtZS5qYXZhLmFmdGVyIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2RPYmplY3QvbXVsdGlwbGVFeGl0UG9pbnRzL1VuaXF1ZU9iamVjdE5hbWUuamF2YS5hZnRlcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZTJhYmM2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2RPYmplY3QvbXVsdGlwbGVFeGl0UG9pbnRzL1VuaXF1ZU9iamVjdE5hbWUuamF2YS5hZnRlcgpAQCAtMCwwICsxLDQyIEBACitjbGFzcyBBIHsKKyAgICBpbnQgZm9vKCkgeworICAgICAgICBpbnQgeCA9IDQ1OworICAgICAgICBpbnQgeSA9IDQ2OworICAgICAgICBpbnQgaW5uZXIgPSA0NzsKKyAgICAgICAgSW5uZXIgaW5uZXIxID0gbmV3IElubmVyKHkpLmludm9rZSgpOworICAgICAgICB5ID0gaW5uZXIxLmdldFkoKTsKKyAgICAgICAgeCA9IGlubmVyMS5nZXRYKCk7CisgICAgICAgIHggPSB5ICsgeCArIDQ1OworICAgICAgICBib29sZWFuIHogPSB0cnVlOworICAgICAgICBpZiAoeikgeworICAgICAgICAgICAgcmV0dXJuIHk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICB4ID0geTsKKyAgICAgICAgfQorICAgICAgICB5ID0gNDU7CisgICAgICAgIHJldHVybiB4OworICAgIH0KKworICAgIHByaXZhdGUgY2xhc3MgSW5uZXIgeworICAgICAgICBwcml2YXRlIGludCB5OworICAgICAgICBwcml2YXRlIGludCB4OworCisgICAgICAgIHB1YmxpYyBJbm5lcihpbnQgeSkgeworICAgICAgICAgICAgdGhpcy55ID0geTsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyBpbnQgZ2V0WCgpIHsKKyAgICAgICAgICAgIHJldHVybiB4OworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIGludCBnZXRZKCkgeworICAgICAgICAgICAgcmV0dXJuIHk7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgSW5uZXIgaW52b2tlKCkgeworICAgICAgICAgICAgeCA9IHkgKyAxOworICAgICAgICAgICAgeSA9IDc3OworICAgICAgICAgICAgcmV0dXJuIHRoaXM7CisgICAgICAgIH0KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2RPYmplY3QvbXVsdGlwbGVFeGl0UG9pbnRzL1dpdGhJbm5lckNsYXNzZXMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kT2JqZWN0L211bHRpcGxlRXhpdFBvaW50cy9XaXRoSW5uZXJDbGFzc2VzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODgwMjgzZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0TWV0aG9kT2JqZWN0L211bHRpcGxlRXhpdFBvaW50cy9XaXRoSW5uZXJDbGFzc2VzLmphdmEKQEAgLTAsMCArMSw1NCBAQAorcHVibGljIGNsYXNzIERlbW8geworCisKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CisKKyAgICAgICAgPHNlbGVjdGlvbj5Qb2pvMSBwMSA9IG5ldyBQb2pvMSgicDEiKTsKKyAgICAgICAgUG9qbzIgcDIgPSBuZXcgUG9qbzIoInAyIil7CisgICAgICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgICAgIHB1YmxpYyBTdHJpbmcgZ2V0Q29udGVudCgpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gIi0tLS0tLS0tLS0tLSI7CisgICAgICAgICAgICB9CisgICAgICAgIH07CisgICAgICAgIDwvc2VsZWN0aW9uPgorCisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihwMS5nZXRDb250ZW50KCkgKyBwMi5nZXRDb250ZW50KCkpOworCisgICAgfQorCisKKyAgICBwdWJsaWMgc3RhdGljIGNsYXNzIFBvam8xIHsKKyAgICAgICAgcHJpdmF0ZSBTdHJpbmcgY29udGVudDsKKworICAgICAgICBwdWJsaWMgUG9qbzEoU3RyaW5nIGNvbnRlbnQpIHsKKyAgICAgICAgICAgIHRoaXMuY29udGVudCA9IGNvbnRlbnQ7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgU3RyaW5nIGdldENvbnRlbnQoKSB7CisgICAgICAgICAgICByZXR1cm4gY29udGVudDsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyB2b2lkIHNldENvbnRlbnQoU3RyaW5nIGNvbnRlbnQpIHsKKyAgICAgICAgICAgIHRoaXMuY29udGVudCA9IGNvbnRlbnQ7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwdWJsaWMgc3RhdGljIGNsYXNzIFBvam8yIHsKKyAgICAgICAgcHJpdmF0ZSBTdHJpbmcgY29udGVudDsKKworICAgICAgICBwdWJsaWMgUG9qbzIoU3RyaW5nIGNvbnRlbnQpIHsKKyAgICAgICAgICAgIHRoaXMuY29udGVudCA9IGNvbnRlbnQ7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgU3RyaW5nIGdldENvbnRlbnQoKSB7CisgICAgICAgICAgICByZXR1cm4gY29udGVudDsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyB2b2lkIHNldENvbnRlbnQoU3RyaW5nIGNvbnRlbnQpIHsKKyAgICAgICAgICAgIHRoaXMuY29udGVudCA9IGNvbnRlbnQ7CisgICAgICAgIH0KKyAgICB9Cit9CisKKworCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdE1ldGhvZE9iamVjdC9tdWx0aXBsZUV4aXRQb2ludHMvV2l0aElubmVyQ2xhc3Nlcy5qYXZhLmFmdGVyIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2RPYmplY3QvbXVsdGlwbGVFeGl0UG9pbnRzL1dpdGhJbm5lckNsYXNzZXMuamF2YS5hZnRlcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNTYyNGRjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RNZXRob2RPYmplY3QvbXVsdGlwbGVFeGl0UG9pbnRzL1dpdGhJbm5lckNsYXNzZXMuamF2YS5hZnRlcgpAQCAtMCwwICsxLDc0IEBACitwdWJsaWMgY2xhc3MgRGVtbyB7CisKKworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKKworICAgICAgICBJbm5lciBpbm5lciA9IG5ldyBJbm5lcigpLmludm9rZSgpOworICAgICAgICBQb2pvMSBwMSA9IGlubmVyLmdldFAxKCk7CisgICAgICAgIFBvam8yIHAyID0gaW5uZXIuZ2V0UDIoKTsKKyAgICAgICAgCisKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKHAxLmdldENvbnRlbnQoKSArIHAyLmdldENvbnRlbnQoKSk7CisKKyAgICB9CisKKworICAgIHB1YmxpYyBzdGF0aWMgY2xhc3MgUG9qbzEgeworICAgICAgICBwcml2YXRlIFN0cmluZyBjb250ZW50OworCisgICAgICAgIHB1YmxpYyBQb2pvMShTdHJpbmcgY29udGVudCkgeworICAgICAgICAgICAgdGhpcy5jb250ZW50ID0gY29udGVudDsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyBTdHJpbmcgZ2V0Q29udGVudCgpIHsKKyAgICAgICAgICAgIHJldHVybiBjb250ZW50OworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIHZvaWQgc2V0Q29udGVudChTdHJpbmcgY29udGVudCkgeworICAgICAgICAgICAgdGhpcy5jb250ZW50ID0gY29udGVudDsKKyAgICAgICAgfQorICAgIH0KKworICAgIHB1YmxpYyBzdGF0aWMgY2xhc3MgUG9qbzIgeworICAgICAgICBwcml2YXRlIFN0cmluZyBjb250ZW50OworCisgICAgICAgIHB1YmxpYyBQb2pvMihTdHJpbmcgY29udGVudCkgeworICAgICAgICAgICAgdGhpcy5jb250ZW50ID0gY29udGVudDsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyBTdHJpbmcgZ2V0Q29udGVudCgpIHsKKyAgICAgICAgICAgIHJldHVybiBjb250ZW50OworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIHZvaWQgc2V0Q29udGVudChTdHJpbmcgY29udGVudCkgeworICAgICAgICAgICAgdGhpcy5jb250ZW50ID0gY29udGVudDsKKyAgICAgICAgfQorICAgIH0KKworICAgIHByaXZhdGUgc3RhdGljIGNsYXNzIElubmVyIHsKKyAgICAgICAgcHJpdmF0ZSBQb2pvMSBwMTsKKyAgICAgICAgcHJpdmF0ZSBQb2pvMiBwMjsKKworICAgICAgICBwdWJsaWMgUG9qbzEgZ2V0UDEoKSB7CisgICAgICAgICAgICByZXR1cm4gcDE7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgUG9qbzIgZ2V0UDIoKSB7CisgICAgICAgICAgICByZXR1cm4gcDI7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgSW5uZXIgaW52b2tlKCkgeworICAgICAgICAgICAgcDEgPSBuZXcgUG9qbzEoInAxIik7CisgICAgICAgICAgICBwMiA9IG5ldyBQb2pvMigicDIiKSB7CisgICAgICAgICAgICAgICAgQE92ZXJyaWRlCisgICAgICAgICAgICAgICAgcHVibGljIFN0cmluZyBnZXRDb250ZW50KCkgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gIi0tLS0tLS0tLS0tLSI7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfTsKKyAgICAgICAgICAgIHJldHVybiB0aGlzOworICAgICAgICB9CisgICAgfQorfQorCisKKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RTdXBlckNsYXNzL2NvbmZsaWN0QWJzdHJhY3RQYWNrYWdlTG9jYWxNZXRob2QvYWZ0ZXIvYS9UZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdFN1cGVyQ2xhc3MvY29uZmxpY3RBYnN0cmFjdFBhY2thZ2VMb2NhbE1ldGhvZC9hZnRlci9hL1Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZGUwOTAyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RTdXBlckNsYXNzL2NvbmZsaWN0QWJzdHJhY3RQYWNrYWdlTG9jYWxNZXRob2QvYWZ0ZXIvYS9UZXN0LmphdmEKQEAgLTAsMCArMSw1IEBACitwYWNrYWdlIGE7CisKK3B1YmxpYyBhYnN0cmFjdCBjbGFzcyBUZXN0IHsKKyAgICBhYnN0cmFjdCB2b2lkIHgoKTsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdFN1cGVyQ2xhc3MvY29uZmxpY3RBYnN0cmFjdFBhY2thZ2VMb2NhbE1ldGhvZC9hZnRlci9iL0UuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0U3VwZXJDbGFzcy9jb25mbGljdEFic3RyYWN0UGFja2FnZUxvY2FsTWV0aG9kL2FmdGVyL2IvRS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU2ZTRiNjcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdFN1cGVyQ2xhc3MvY29uZmxpY3RBYnN0cmFjdFBhY2thZ2VMb2NhbE1ldGhvZC9hZnRlci9iL0UuamF2YQpAQCAtMCwwICsxLDIgQEAKK3BhY2thZ2UgYjsKK2NsYXNzIEV7fQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0U3VwZXJDbGFzcy9jb25mbGljdEFic3RyYWN0UGFja2FnZUxvY2FsTWV0aG9kL2FmdGVyL2IvVGVzdFN1YmNsYXNzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdFN1cGVyQ2xhc3MvY29uZmxpY3RBYnN0cmFjdFBhY2thZ2VMb2NhbE1ldGhvZC9hZnRlci9iL1Rlc3RTdWJjbGFzcy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFjNzcwMGUxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RTdXBlckNsYXNzL2NvbmZsaWN0QWJzdHJhY3RQYWNrYWdlTG9jYWxNZXRob2QvYWZ0ZXIvYi9UZXN0U3ViY2xhc3MuamF2YQpAQCAtMCwwICsxLDggQEAKK3BhY2thZ2UgYjsKKworaW1wb3J0IGEuVGVzdDsKKworcHVibGljIGNsYXNzIFRlc3RTdWJjbGFzcyBleHRlbmRzIFRlc3QgeworICAgIEBqYXZhLmxhbmcuT3ZlcnJpZGUgdm9pZCB4KCkgeworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdFN1cGVyQ2xhc3MvY29uZmxpY3RBYnN0cmFjdFBhY2thZ2VMb2NhbE1ldGhvZC9iZWZvcmUvYS9UZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdFN1cGVyQ2xhc3MvY29uZmxpY3RBYnN0cmFjdFBhY2thZ2VMb2NhbE1ldGhvZC9iZWZvcmUvYS9UZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWZlNzIwMgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0U3VwZXJDbGFzcy9jb25mbGljdEFic3RyYWN0UGFja2FnZUxvY2FsTWV0aG9kL2JlZm9yZS9hL1Rlc3QuamF2YQpAQCAtMCwwICsxLDUgQEAKK3BhY2thZ2UgYTsKK3B1YmxpYyBjbGFzcyBUZXN0IHsKKyAgICB2b2lkIHgoKSB7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0U3VwZXJDbGFzcy9jb25mbGljdEFic3RyYWN0UGFja2FnZUxvY2FsTWV0aG9kL2JlZm9yZS9iL0UuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0U3VwZXJDbGFzcy9jb25mbGljdEFic3RyYWN0UGFja2FnZUxvY2FsTWV0aG9kL2JlZm9yZS9iL0UuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNmU0YjY3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RTdXBlckNsYXNzL2NvbmZsaWN0QWJzdHJhY3RQYWNrYWdlTG9jYWxNZXRob2QvYmVmb3JlL2IvRS5qYXZhCkBAIC0wLDAgKzEsMiBAQAorcGFja2FnZSBiOworY2xhc3MgRXt9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RTdXBlckNsYXNzL2NvbmZsaWN0TW92ZUFic3RyYWN0V2l0aFByaXZhdGVNZXRob2QvYWZ0ZXIvVGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RTdXBlckNsYXNzL2NvbmZsaWN0TW92ZUFic3RyYWN0V2l0aFByaXZhdGVNZXRob2QvYWZ0ZXIvVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMxOWQ2MzkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdFN1cGVyQ2xhc3MvY29uZmxpY3RNb3ZlQWJzdHJhY3RXaXRoUHJpdmF0ZU1ldGhvZC9hZnRlci9UZXN0LmphdmEKQEAgLTAsMCArMSw1IEBACitwdWJsaWMgYWJzdHJhY3QgY2xhc3MgVGVzdCB7CisgICAgYWJzdHJhY3Qgdm9pZCB4KCk7CisKKyAgICBwcml2YXRlIHZvaWQgeHgoKXt9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RTdXBlckNsYXNzL2NvbmZsaWN0TW92ZUFic3RyYWN0V2l0aFByaXZhdGVNZXRob2QvYWZ0ZXIvVGVzdFN1YmNsYXNzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdFN1cGVyQ2xhc3MvY29uZmxpY3RNb3ZlQWJzdHJhY3RXaXRoUHJpdmF0ZU1ldGhvZC9hZnRlci9UZXN0U3ViY2xhc3MuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NGJkNjlhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RTdXBlckNsYXNzL2NvbmZsaWN0TW92ZUFic3RyYWN0V2l0aFByaXZhdGVNZXRob2QvYWZ0ZXIvVGVzdFN1YmNsYXNzLmphdmEKQEAgLTAsMCArMSw3IEBACitwdWJsaWMgY2xhc3MgVGVzdFN1YmNsYXNzIGV4dGVuZHMgVGVzdCB7CisgICAgQGphdmEubGFuZy5PdmVycmlkZQorICAgIHZvaWQgeCgpIHsKKyAgICAgIHh4KCk7CisgICAgfQorCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RTdXBlckNsYXNzL2NvbmZsaWN0TW92ZUFic3RyYWN0V2l0aFByaXZhdGVNZXRob2QvYmVmb3JlL1Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0U3VwZXJDbGFzcy9jb25mbGljdE1vdmVBYnN0cmFjdFdpdGhQcml2YXRlTWV0aG9kL2JlZm9yZS9UZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDE5NmIyYwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0U3VwZXJDbGFzcy9jb25mbGljdE1vdmVBYnN0cmFjdFdpdGhQcml2YXRlTWV0aG9kL2JlZm9yZS9UZXN0LmphdmEKQEAgLTAsMCArMSw3IEBACitwdWJsaWMgY2xhc3MgVGVzdCAgeworICAgIHZvaWQgeCgpIHsKKyAgICAgIHh4KCk7CisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIHh4KCl7fQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0U3VwZXJDbGFzcy9jb25mbGljdFVzaW5nUGFja2FnZUxvY2FsTWV0aG9kL2FmdGVyL2EvU3VwLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdFN1cGVyQ2xhc3MvY29uZmxpY3RVc2luZ1BhY2thZ2VMb2NhbE1ldGhvZC9hZnRlci9hL1N1cC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNlOWVjYmE4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RTdXBlckNsYXNzL2NvbmZsaWN0VXNpbmdQYWNrYWdlTG9jYWxNZXRob2QvYWZ0ZXIvYS9TdXAuamF2YQpAQCAtMCwwICsxLDQgQEAKK3BhY2thZ2UgYTsKK3B1YmxpYyBjbGFzcyBTdXAgeworICB2b2lkIGZvbygpe30KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdFN1cGVyQ2xhc3MvY29uZmxpY3RVc2luZ1BhY2thZ2VMb2NhbE1ldGhvZC9hZnRlci9hL1Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0U3VwZXJDbGFzcy9jb25mbGljdFVzaW5nUGFja2FnZUxvY2FsTWV0aG9kL2FmdGVyL2EvVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUwMTk5ZjA0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RTdXBlckNsYXNzL2NvbmZsaWN0VXNpbmdQYWNrYWdlTG9jYWxNZXRob2QvYWZ0ZXIvYS9UZXN0LmphdmEKQEAgLTAsMCArMSw3IEBACitwYWNrYWdlIGE7CisKK3B1YmxpYyBjbGFzcyBUZXN0IGV4dGVuZHMgU3VwIHsKKyAgICB2b2lkIHgoKSB7CisgICAgICBmb28oKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RTdXBlckNsYXNzL2NvbmZsaWN0VXNpbmdQYWNrYWdlTG9jYWxNZXRob2QvYWZ0ZXIvYi9FLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdFN1cGVyQ2xhc3MvY29uZmxpY3RVc2luZ1BhY2thZ2VMb2NhbE1ldGhvZC9hZnRlci9iL0UuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNmU0YjY3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RTdXBlckNsYXNzL2NvbmZsaWN0VXNpbmdQYWNrYWdlTG9jYWxNZXRob2QvYWZ0ZXIvYi9FLmphdmEKQEAgLTAsMCArMSwyIEBACitwYWNrYWdlIGI7CitjbGFzcyBFe30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdFN1cGVyQ2xhc3MvY29uZmxpY3RVc2luZ1BhY2thZ2VMb2NhbE1ldGhvZC9hZnRlci9iL1Rlc3RTdWJjbGFzcy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RTdXBlckNsYXNzL2NvbmZsaWN0VXNpbmdQYWNrYWdlTG9jYWxNZXRob2QvYWZ0ZXIvYi9UZXN0U3ViY2xhc3MuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZjM5NzIwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RTdXBlckNsYXNzL2NvbmZsaWN0VXNpbmdQYWNrYWdlTG9jYWxNZXRob2QvYWZ0ZXIvYi9UZXN0U3ViY2xhc3MuamF2YQpAQCAtMCwwICsxLDYgQEAKK3BhY2thZ2UgYjsKKworaW1wb3J0IGEuVGVzdDsKKworcHVibGljIGNsYXNzIFRlc3RTdWJjbGFzcyAgZXh0ZW5kcyBUZXN0IHsKKyAgICB9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RTdXBlckNsYXNzL2NvbmZsaWN0VXNpbmdQYWNrYWdlTG9jYWxNZXRob2QvYmVmb3JlL2EvU3VwLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdFN1cGVyQ2xhc3MvY29uZmxpY3RVc2luZ1BhY2thZ2VMb2NhbE1ldGhvZC9iZWZvcmUvYS9TdXAuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZTllY2JhOAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0U3VwZXJDbGFzcy9jb25mbGljdFVzaW5nUGFja2FnZUxvY2FsTWV0aG9kL2JlZm9yZS9hL1N1cC5qYXZhCkBAIC0wLDAgKzEsNCBAQAorcGFja2FnZSBhOworcHVibGljIGNsYXNzIFN1cCB7CisgIHZvaWQgZm9vKCl7fQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0U3VwZXJDbGFzcy9jb25mbGljdFVzaW5nUGFja2FnZUxvY2FsTWV0aG9kL2JlZm9yZS9hL1Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0U3VwZXJDbGFzcy9jb25mbGljdFVzaW5nUGFja2FnZUxvY2FsTWV0aG9kL2JlZm9yZS9hL1Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMWI2NzM5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RTdXBlckNsYXNzL2NvbmZsaWN0VXNpbmdQYWNrYWdlTG9jYWxNZXRob2QvYmVmb3JlL2EvVGVzdC5qYXZhCkBAIC0wLDAgKzEsNiBAQAorcGFja2FnZSBhOworcHVibGljIGNsYXNzIFRlc3QgZXh0ZW5kcyBTdXAgeworICAgIHZvaWQgeCgpIHsKKyAgICAgIGZvbygpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdFN1cGVyQ2xhc3MvY29uZmxpY3RVc2luZ1BhY2thZ2VMb2NhbE1ldGhvZC9iZWZvcmUvYi9FLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdFN1cGVyQ2xhc3MvY29uZmxpY3RVc2luZ1BhY2thZ2VMb2NhbE1ldGhvZC9iZWZvcmUvYi9FLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTZlNGI2NwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0U3VwZXJDbGFzcy9jb25mbGljdFVzaW5nUGFja2FnZUxvY2FsTWV0aG9kL2JlZm9yZS9iL0UuamF2YQpAQCAtMCwwICsxLDIgQEAKK3BhY2thZ2UgYjsKK2NsYXNzIEV7fQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0U3VwZXJDbGFzcy9jb25mbGljdFVzaW5nUGFja2FnZUxvY2FsU3VwZXJDbGFzcy9hZnRlci9hL1N1cC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RTdXBlckNsYXNzL2NvbmZsaWN0VXNpbmdQYWNrYWdlTG9jYWxTdXBlckNsYXNzL2FmdGVyL2EvU3VwLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTZmNTc3NAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0U3VwZXJDbGFzcy9jb25mbGljdFVzaW5nUGFja2FnZUxvY2FsU3VwZXJDbGFzcy9hZnRlci9hL1N1cC5qYXZhCkBAIC0wLDAgKzEsMiBAQAorcGFja2FnZSBhOworY2xhc3MgU3VwIHt9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RTdXBlckNsYXNzL2NvbmZsaWN0VXNpbmdQYWNrYWdlTG9jYWxTdXBlckNsYXNzL2FmdGVyL2EvVGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RTdXBlckNsYXNzL2NvbmZsaWN0VXNpbmdQYWNrYWdlTG9jYWxTdXBlckNsYXNzL2FmdGVyL2EvVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhmODZhYmEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdFN1cGVyQ2xhc3MvY29uZmxpY3RVc2luZ1BhY2thZ2VMb2NhbFN1cGVyQ2xhc3MvYWZ0ZXIvYS9UZXN0LmphdmEKQEAgLTAsMCArMSw1IEBACitwYWNrYWdlIGE7CisKK3B1YmxpYyBjbGFzcyBUZXN0IGV4dGVuZHMgU3VwIHsKKyAgICB2b2lkIGZvbygpe30KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdFN1cGVyQ2xhc3MvY29uZmxpY3RVc2luZ1BhY2thZ2VMb2NhbFN1cGVyQ2xhc3MvYWZ0ZXIvYi9UZXN0U3ViY2xhc3MuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0U3VwZXJDbGFzcy9jb25mbGljdFVzaW5nUGFja2FnZUxvY2FsU3VwZXJDbGFzcy9hZnRlci9iL1Rlc3RTdWJjbGFzcy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFmMzk3MjAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdFN1cGVyQ2xhc3MvY29uZmxpY3RVc2luZ1BhY2thZ2VMb2NhbFN1cGVyQ2xhc3MvYWZ0ZXIvYi9UZXN0U3ViY2xhc3MuamF2YQpAQCAtMCwwICsxLDYgQEAKK3BhY2thZ2UgYjsKKworaW1wb3J0IGEuVGVzdDsKKworcHVibGljIGNsYXNzIFRlc3RTdWJjbGFzcyAgZXh0ZW5kcyBUZXN0IHsKKyAgICB9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RTdXBlckNsYXNzL2NvbmZsaWN0VXNpbmdQYWNrYWdlTG9jYWxTdXBlckNsYXNzL2FmdGVyL2IvZG9ub3RkZWxldGVkaXIudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RTdXBlckNsYXNzL2NvbmZsaWN0VXNpbmdQYWNrYWdlTG9jYWxTdXBlckNsYXNzL2FmdGVyL2IvZG9ub3RkZWxldGVkaXIudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU2OWRlMjkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdFN1cGVyQ2xhc3MvY29uZmxpY3RVc2luZ1BhY2thZ2VMb2NhbFN1cGVyQ2xhc3MvYWZ0ZXIvYi9kb25vdGRlbGV0ZWRpci50eHQKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0U3VwZXJDbGFzcy9jb25mbGljdFVzaW5nUGFja2FnZUxvY2FsU3VwZXJDbGFzcy9iZWZvcmUvYS9TdXAuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0U3VwZXJDbGFzcy9jb25mbGljdFVzaW5nUGFja2FnZUxvY2FsU3VwZXJDbGFzcy9iZWZvcmUvYS9TdXAuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNmY1Nzc0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RTdXBlckNsYXNzL2NvbmZsaWN0VXNpbmdQYWNrYWdlTG9jYWxTdXBlckNsYXNzL2JlZm9yZS9hL1N1cC5qYXZhCkBAIC0wLDAgKzEsMiBAQAorcGFja2FnZSBhOworY2xhc3MgU3VwIHt9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RTdXBlckNsYXNzL2NvbmZsaWN0VXNpbmdQYWNrYWdlTG9jYWxTdXBlckNsYXNzL2JlZm9yZS9hL1Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0U3VwZXJDbGFzcy9jb25mbGljdFVzaW5nUGFja2FnZUxvY2FsU3VwZXJDbGFzcy9iZWZvcmUvYS9UZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTc1ZjVhMgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0U3VwZXJDbGFzcy9jb25mbGljdFVzaW5nUGFja2FnZUxvY2FsU3VwZXJDbGFzcy9iZWZvcmUvYS9UZXN0LmphdmEKQEAgLTAsMCArMSw0IEBACitwYWNrYWdlIGE7CitwdWJsaWMgY2xhc3MgVGVzdCBleHRlbmRzIFN1cCB7CisgICAgdm9pZCBmb28oKXt9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RTdXBlckNsYXNzL2NvbmZsaWN0VXNpbmdQYWNrYWdlTG9jYWxTdXBlckNsYXNzL2JlZm9yZS9iL2Rvbm90ZGVsZXRlZGlyLnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0U3VwZXJDbGFzcy9jb25mbGljdFVzaW5nUGFja2FnZUxvY2FsU3VwZXJDbGFzcy9iZWZvcmUvYi9kb25vdGRlbGV0ZWRpci50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTY5ZGUyOQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0U3VwZXJDbGFzcy9jb25mbGljdFVzaW5nUGFja2FnZUxvY2FsU3VwZXJDbGFzcy9iZWZvcmUvYi9kb25vdGRlbGV0ZWRpci50eHQKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0U3VwZXJDbGFzcy9jb25mbGljdFVzaW5nUHJpdmF0ZU1ldGhvZC9hZnRlci9UZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdFN1cGVyQ2xhc3MvY29uZmxpY3RVc2luZ1ByaXZhdGVNZXRob2QvYWZ0ZXIvVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ2OWZhNGMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdFN1cGVyQ2xhc3MvY29uZmxpY3RVc2luZ1ByaXZhdGVNZXRob2QvYWZ0ZXIvVGVzdC5qYXZhCkBAIC0wLDAgKzEsNSBAQAorcHVibGljIGNsYXNzIFRlc3QgeworICAgIHZvaWQgeCgpIHsKKyAgICAgIGZvbygpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdFN1cGVyQ2xhc3MvY29uZmxpY3RVc2luZ1ByaXZhdGVNZXRob2QvYWZ0ZXIvVGVzdFN1YmNsYXNzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdFN1cGVyQ2xhc3MvY29uZmxpY3RVc2luZ1ByaXZhdGVNZXRob2QvYWZ0ZXIvVGVzdFN1YmNsYXNzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmQ2N2VhOQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0U3VwZXJDbGFzcy9jb25mbGljdFVzaW5nUHJpdmF0ZU1ldGhvZC9hZnRlci9UZXN0U3ViY2xhc3MuamF2YQpAQCAtMCwwICsxLDQgQEAKK3B1YmxpYyBjbGFzcyBUZXN0U3ViY2xhc3MgZXh0ZW5kcyBUZXN0IHsKKworICAgIHByaXZhdGUgdm9pZCBmb28oKXt9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RTdXBlckNsYXNzL2NvbmZsaWN0VXNpbmdQcml2YXRlTWV0aG9kL2JlZm9yZS9UZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdFN1cGVyQ2xhc3MvY29uZmxpY3RVc2luZ1ByaXZhdGVNZXRob2QvYmVmb3JlL1Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NWVlYzg3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RTdXBlckNsYXNzL2NvbmZsaWN0VXNpbmdQcml2YXRlTWV0aG9kL2JlZm9yZS9UZXN0LmphdmEKQEAgLTAsMCArMSw3IEBACitwdWJsaWMgY2xhc3MgVGVzdCAgeworICAgIHZvaWQgeCgpIHsKKyAgICAgIGZvbygpOworICAgIH0KKworICAgIHByaXZhdGUgdm9pZCBmb28oKXt9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RTdXBlckNsYXNzL2V4dGVuZHNMaWJyYXJ5Q2xhc3MvYWZ0ZXIvVGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RTdXBlckNsYXNzL2V4dGVuZHNMaWJyYXJ5Q2xhc3MvYWZ0ZXIvVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg5MDVjNTcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdFN1cGVyQ2xhc3MvZXh0ZW5kc0xpYnJhcnlDbGFzcy9hZnRlci9UZXN0LmphdmEKQEAgLTAsMCArMSw3IEBACitpbXBvcnQgamF2YS51dGlsLkFycmF5TGlzdDsKKworcHVibGljIGNsYXNzIFRlc3QgZXh0ZW5kcyBBcnJheUxpc3QgeworICAgIHB1YmxpYyBUZXN0KGludCBpbml0aWFsQ2FwYWNpdHkpIHsKKyAgICAgICAgc3VwZXIoaW5pdGlhbENhcGFjaXR5KTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RTdXBlckNsYXNzL2V4dGVuZHNMaWJyYXJ5Q2xhc3MvYWZ0ZXIvVGVzdFN1YmNsYXNzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdFN1cGVyQ2xhc3MvZXh0ZW5kc0xpYnJhcnlDbGFzcy9hZnRlci9UZXN0U3ViY2xhc3MuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNGYzYjYxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RTdXBlckNsYXNzL2V4dGVuZHNMaWJyYXJ5Q2xhc3MvYWZ0ZXIvVGVzdFN1YmNsYXNzLmphdmEKQEAgLTAsMCArMSw1IEBACitwdWJsaWMgY2xhc3MgVGVzdFN1YmNsYXNzIGV4dGVuZHMgVGVzdCB7CisgICAgcHVibGljIFRlc3RTdWJjbGFzcyhpbnQgY2FwYWNpdHkpIHsKKyAgICAgICAgc3VwZXIoY2FwYWNpdHkpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdFN1cGVyQ2xhc3MvZXh0ZW5kc0xpYnJhcnlDbGFzcy9iZWZvcmUvVGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RTdXBlckNsYXNzL2V4dGVuZHNMaWJyYXJ5Q2xhc3MvYmVmb3JlL1Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MWVlNjI5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RTdXBlckNsYXNzL2V4dGVuZHNMaWJyYXJ5Q2xhc3MvYmVmb3JlL1Rlc3QuamF2YQpAQCAtMCwwICsxLDcgQEAKK2ltcG9ydCBqYXZhLnV0aWwuQXJyYXlMaXN0OworCitwdWJsaWMgY2xhc3MgVGVzdCBleHRlbmRzIEFycmF5TGlzdCB7CisgICAgcHVibGljIFRlc3QoaW50IGNhcGFjaXR5KSB7CisgICAgICAgIHN1cGVyKGNhcGFjaXR5KTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RTdXBlckNsYXNzL2V4dGVuZHNMaXN0L2FmdGVyL1Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0U3VwZXJDbGFzcy9leHRlbmRzTGlzdC9hZnRlci9UZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmEzMGM2OAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0U3VwZXJDbGFzcy9leHRlbmRzTGlzdC9hZnRlci9UZXN0LmphdmEKQEAgLTAsMCArMSwyIEBACitwdWJsaWMgYWJzdHJhY3QgY2xhc3MgVGVzdCBpbXBsZW1lbnRzIGphdmEudXRpbC5MaXN0PFN0cmluZz4geworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0U3VwZXJDbGFzcy9leHRlbmRzTGlzdC9hZnRlci9UZXN0U3ViY2xhc3MuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0U3VwZXJDbGFzcy9leHRlbmRzTGlzdC9hZnRlci9UZXN0U3ViY2xhc3MuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41Zjg4NmFlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RTdXBlckNsYXNzL2V4dGVuZHNMaXN0L2FmdGVyL1Rlc3RTdWJjbGFzcy5qYXZhCkBAIC0wLDAgKzEsMiBAQAorcHVibGljIGFic3RyYWN0IGNsYXNzIFRlc3RTdWJjbGFzcyBleHRlbmRzIFRlc3QgeworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0U3VwZXJDbGFzcy9leHRlbmRzTGlzdC9iZWZvcmUvVGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RTdXBlckNsYXNzL2V4dGVuZHNMaXN0L2JlZm9yZS9UZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWY4N2IyNgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0U3VwZXJDbGFzcy9leHRlbmRzTGlzdC9iZWZvcmUvVGVzdC5qYXZhCkBAIC0wLDAgKzEsMiBAQAorcHVibGljIGFic3RyYWN0IGNsYXNzIFRlc3QgaW1wbGVtZW50cyBqYXZhLnV0aWwuTGlzdDxTdHJpbmc+eworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0U3VwZXJDbGFzcy9maWVsZEluaXRpYWxpemF0aW9uV2l0aENhc3QvYWZ0ZXIvVGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RTdXBlckNsYXNzL2ZpZWxkSW5pdGlhbGl6YXRpb25XaXRoQ2FzdC9hZnRlci9UZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWY4ZjJjOAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0U3VwZXJDbGFzcy9maWVsZEluaXRpYWxpemF0aW9uV2l0aENhc3QvYWZ0ZXIvVGVzdC5qYXZhCkBAIC0wLDAgKzEsNyBAQAorcHVibGljIGNsYXNzIFRlc3QgeworICAgIGZpbmFsIFN0cmluZyB4OworCisgICAgcHVibGljIFRlc3QoKSB7CisgICAgICAgIHggPSAoU3RyaW5nKSIiOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdFN1cGVyQ2xhc3MvZmllbGRJbml0aWFsaXphdGlvbldpdGhDYXN0L2FmdGVyL1Rlc3RTdWJjbGFzcy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RTdXBlckNsYXNzL2ZpZWxkSW5pdGlhbGl6YXRpb25XaXRoQ2FzdC9hZnRlci9UZXN0U3ViY2xhc3MuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NDk2OWZlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RTdXBlckNsYXNzL2ZpZWxkSW5pdGlhbGl6YXRpb25XaXRoQ2FzdC9hZnRlci9UZXN0U3ViY2xhc3MuamF2YQpAQCAtMCwwICsxLDYgQEAKK3B1YmxpYyBjbGFzcyBUZXN0U3ViY2xhc3MgZXh0ZW5kcyBUZXN0IHsKKworICAgIHB1YmxpYyBUZXN0U3ViY2xhc3MoKSB7CisgICAgICAgIHN1cGVyKCk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0U3VwZXJDbGFzcy9maWVsZEluaXRpYWxpemF0aW9uV2l0aENhc3QvYmVmb3JlL1Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0U3VwZXJDbGFzcy9maWVsZEluaXRpYWxpemF0aW9uV2l0aENhc3QvYmVmb3JlL1Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZjhmMmM4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RTdXBlckNsYXNzL2ZpZWxkSW5pdGlhbGl6YXRpb25XaXRoQ2FzdC9iZWZvcmUvVGVzdC5qYXZhCkBAIC0wLDAgKzEsNyBAQAorcHVibGljIGNsYXNzIFRlc3QgeworICAgIGZpbmFsIFN0cmluZyB4OworCisgICAgcHVibGljIFRlc3QoKSB7CisgICAgICAgIHggPSAoU3RyaW5nKSIiOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdFN1cGVyQ2xhc3MvZmluYWxGaWVsZEluaXRpYWxpemF0aW9uL2FmdGVyL1Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0U3VwZXJDbGFzcy9maW5hbEZpZWxkSW5pdGlhbGl6YXRpb24vYWZ0ZXIvVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFlNjA3N2QKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdFN1cGVyQ2xhc3MvZmluYWxGaWVsZEluaXRpYWxpemF0aW9uL2FmdGVyL1Rlc3QuamF2YQpAQCAtMCwwICsxLDEwIEBACitwdWJsaWMgY2xhc3MgVGVzdCB7CisgICAgZmluYWwgWCB4OworCisgICAgcHVibGljIFRlc3QoKSB7CisgICAgICAgIHggPSBuZXcgWCgpOworICAgIH0KKworICAgIHByb3RlY3RlZCBzdGF0aWMgY2xhc3MgWCB7CisgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RTdXBlckNsYXNzL2ZpbmFsRmllbGRJbml0aWFsaXphdGlvbi9hZnRlci9UZXN0U3ViY2xhc3MuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0U3VwZXJDbGFzcy9maW5hbEZpZWxkSW5pdGlhbGl6YXRpb24vYWZ0ZXIvVGVzdFN1YmNsYXNzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWY4MTUzZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0U3VwZXJDbGFzcy9maW5hbEZpZWxkSW5pdGlhbGl6YXRpb24vYWZ0ZXIvVGVzdFN1YmNsYXNzLmphdmEKQEAgLTAsMCArMSw3IEBACitwdWJsaWMgY2xhc3MgVGVzdFN1YmNsYXNzIGV4dGVuZHMgVGVzdCB7CisKKyAgICBwdWJsaWMgVGVzdFN1YmNsYXNzKCkgeworICAgICAgICBzdXBlcigpOworICAgIH0KKworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0U3VwZXJDbGFzcy9maW5hbEZpZWxkSW5pdGlhbGl6YXRpb24vYmVmb3JlL1Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0U3VwZXJDbGFzcy9maW5hbEZpZWxkSW5pdGlhbGl6YXRpb24vYmVmb3JlL1Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMDkzMTAxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RTdXBlckNsYXNzL2ZpbmFsRmllbGRJbml0aWFsaXphdGlvbi9iZWZvcmUvVGVzdC5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKK3B1YmxpYyBjbGFzcyBUZXN0IHsKKyAgICBmaW5hbCBYIHg7CisKKyAgICBwdWJsaWMgVGVzdCgpIHsKKyAgICAgICAgeCA9IG5ldyBYKCk7IAorICAgIH0KKworICAgIHByb3RlY3RlZCBzdGF0aWMgY2xhc3MgWCB7CisgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RTdXBlckNsYXNzL2ltcG9ydHNDb3JydXB0aW9uL2FmdGVyL3AxL0EuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0U3VwZXJDbGFzcy9pbXBvcnRzQ29ycnVwdGlvbi9hZnRlci9wMS9BLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGVkNTczNQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0U3VwZXJDbGFzcy9pbXBvcnRzQ29ycnVwdGlvbi9hZnRlci9wMS9BLmphdmEKQEAgLTAsMCArMSw2IEBACitwYWNrYWdlIHAxOworCitwdWJsaWMgY2xhc3MgQSB7CisgICAgcHVibGljIHZvaWQgbTEoKSB7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0U3VwZXJDbGFzcy9pbXBvcnRzQ29ycnVwdGlvbi9hZnRlci9wMS9BQS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RTdXBlckNsYXNzL2ltcG9ydHNDb3JydXB0aW9uL2FmdGVyL3AxL0FBLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmM2N2M5OAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0U3VwZXJDbGFzcy9pbXBvcnRzQ29ycnVwdGlvbi9hZnRlci9wMS9BQS5qYXZhCkBAIC0wLDAgKzEsNSBAQAorcGFja2FnZSBwMTsKK3B1YmxpYyBjbGFzcyBBQSBleHRlbmRzIEEgeworICAgIHB1YmxpYyB2b2lkIG0yKCkgeworfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0U3VwZXJDbGFzcy9pbXBvcnRzQ29ycnVwdGlvbi9hZnRlci9wMi9CLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdFN1cGVyQ2xhc3MvaW1wb3J0c0NvcnJ1cHRpb24vYWZ0ZXIvcDIvQi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIzNDZhMWQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdFN1cGVyQ2xhc3MvaW1wb3J0c0NvcnJ1cHRpb24vYWZ0ZXIvcDIvQi5qYXZhCkBAIC0wLDAgKzEsOCBAQAorcGFja2FnZSBwMjsKK2ltcG9ydCBwMS5BOworcHVibGljIGNsYXNzIEIgeworICAgIEEgYTsKKyAgICB2b2lkIGZvbygpIHsKKyAgICAgICAgYS5tMSgpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0U3VwZXJDbGFzcy9pbXBvcnRzQ29ycnVwdGlvbi9hZnRlci9wMi9DLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdFN1cGVyQ2xhc3MvaW1wb3J0c0NvcnJ1cHRpb24vYWZ0ZXIvcDIvQy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk1ZmFkYjQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdFN1cGVyQ2xhc3MvaW1wb3J0c0NvcnJ1cHRpb24vYWZ0ZXIvcDIvQy5qYXZhCkBAIC0wLDAgKzEsOSBAQAorcGFja2FnZSBwMjsKK2ltcG9ydCBwMS5BQTsKKworcHVibGljIGNsYXNzIEMgeworICAgIEFBIGE7CisgICAgdm9pZCBmb28oKSB7CisgICAgICAgIGEubTIoKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdFN1cGVyQ2xhc3MvaW1wb3J0c0NvcnJ1cHRpb24vYmVmb3JlL3AxL0EuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0U3VwZXJDbGFzcy9pbXBvcnRzQ29ycnVwdGlvbi9iZWZvcmUvcDEvQS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZjZGM5OGEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdFN1cGVyQ2xhc3MvaW1wb3J0c0NvcnJ1cHRpb24vYmVmb3JlL3AxL0EuamF2YQpAQCAtMCwwICsxLDcgQEAKK3BhY2thZ2UgcDE7CitwdWJsaWMgY2xhc3MgQSB7CitwdWJsaWMgdm9pZCBtMSgpIHsKK30KK3B1YmxpYyB2b2lkIG0yKCkgeworfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0U3VwZXJDbGFzcy9pbXBvcnRzQ29ycnVwdGlvbi9iZWZvcmUvcDIvQi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RTdXBlckNsYXNzL2ltcG9ydHNDb3JydXB0aW9uL2JlZm9yZS9wMi9CLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjM0NmExZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0U3VwZXJDbGFzcy9pbXBvcnRzQ29ycnVwdGlvbi9iZWZvcmUvcDIvQi5qYXZhCkBAIC0wLDAgKzEsOCBAQAorcGFja2FnZSBwMjsKK2ltcG9ydCBwMS5BOworcHVibGljIGNsYXNzIEIgeworICAgIEEgYTsKKyAgICB2b2lkIGZvbygpIHsKKyAgICAgICAgYS5tMSgpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0U3VwZXJDbGFzcy9pbXBvcnRzQ29ycnVwdGlvbi9iZWZvcmUvcDIvQy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RTdXBlckNsYXNzL2ltcG9ydHNDb3JydXB0aW9uL2JlZm9yZS9wMi9DLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGU4YWVmZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0U3VwZXJDbGFzcy9pbXBvcnRzQ29ycnVwdGlvbi9iZWZvcmUvcDIvQy5qYXZhCkBAIC0wLDAgKzEsOCBAQAorcGFja2FnZSBwMjsKK2ltcG9ydCBwMS5BOworcHVibGljIGNsYXNzIEMgeworICAgIEEgYTsKKyAgICB2b2lkIGZvbygpIHsKKyAgICAgICAgYS5tMigpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0U3VwZXJDbGFzcy9tZXRob2RUeXBlUGFyYW1ldGVyL2FmdGVyL1Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0U3VwZXJDbGFzcy9tZXRob2RUeXBlUGFyYW1ldGVyL2FmdGVyL1Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zODY2NTZhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RTdXBlckNsYXNzL21ldGhvZFR5cGVQYXJhbWV0ZXIvYWZ0ZXIvVGVzdC5qYXZhCkBAIC0wLDAgKzEsMyBAQAorcHVibGljIGNsYXNzIFRlc3QgeworICAgIHB1YmxpYyA8VD4gVCBtKCl7cmV0dXJuIG51bGw7fQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0U3VwZXJDbGFzcy9tZXRob2RUeXBlUGFyYW1ldGVyL2FmdGVyL1Rlc3RTdWJjbGFzcy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RTdXBlckNsYXNzL21ldGhvZFR5cGVQYXJhbWV0ZXIvYWZ0ZXIvVGVzdFN1YmNsYXNzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGQwYTMzNgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0U3VwZXJDbGFzcy9tZXRob2RUeXBlUGFyYW1ldGVyL2FmdGVyL1Rlc3RTdWJjbGFzcy5qYXZhCkBAIC0wLDAgKzEsMiBAQAorcHVibGljIGNsYXNzIFRlc3RTdWJjbGFzcyBleHRlbmRzIFRlc3QgeworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0U3VwZXJDbGFzcy9tZXRob2RUeXBlUGFyYW1ldGVyL2JlZm9yZS9UZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdFN1cGVyQ2xhc3MvbWV0aG9kVHlwZVBhcmFtZXRlci9iZWZvcmUvVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM4NjY1NmEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdFN1cGVyQ2xhc3MvbWV0aG9kVHlwZVBhcmFtZXRlci9iZWZvcmUvVGVzdC5qYXZhCkBAIC0wLDAgKzEsMyBAQAorcHVibGljIGNsYXNzIFRlc3QgeworICAgIHB1YmxpYyA8VD4gVCBtKCl7cmV0dXJuIG51bGw7fQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0U3VwZXJDbGFzcy9ub0NvbmZsaWN0VXNpbmdQcm90ZWN0ZWRNZXRob2RGcm9tU3VwZXIvYWZ0ZXIvVGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RTdXBlckNsYXNzL25vQ29uZmxpY3RVc2luZ1Byb3RlY3RlZE1ldGhvZEZyb21TdXBlci9hZnRlci9UZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTA2ZGI0ZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0U3VwZXJDbGFzcy9ub0NvbmZsaWN0VXNpbmdQcm90ZWN0ZWRNZXRob2RGcm9tU3VwZXIvYWZ0ZXIvVGVzdC5qYXZhCkBAIC0wLDAgKzEsNyBAQAoraW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7CisKK3B1YmxpYyBjbGFzcyBUZXN0IGV4dGVuZHMgQXJyYXlMaXN0IHsKKyAgICB2b2lkIHgoKSB7CisgICAgICByZW1vdmVSYW5nZSgwLCAwKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RTdXBlckNsYXNzL25vQ29uZmxpY3RVc2luZ1Byb3RlY3RlZE1ldGhvZEZyb21TdXBlci9hZnRlci9UZXN0U3ViY2xhc3MuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0U3VwZXJDbGFzcy9ub0NvbmZsaWN0VXNpbmdQcm90ZWN0ZWRNZXRob2RGcm9tU3VwZXIvYWZ0ZXIvVGVzdFN1YmNsYXNzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGQwYTMzNgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0U3VwZXJDbGFzcy9ub0NvbmZsaWN0VXNpbmdQcm90ZWN0ZWRNZXRob2RGcm9tU3VwZXIvYWZ0ZXIvVGVzdFN1YmNsYXNzLmphdmEKQEAgLTAsMCArMSwyIEBACitwdWJsaWMgY2xhc3MgVGVzdFN1YmNsYXNzIGV4dGVuZHMgVGVzdCB7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RTdXBlckNsYXNzL25vQ29uZmxpY3RVc2luZ1Byb3RlY3RlZE1ldGhvZEZyb21TdXBlci9iZWZvcmUvVGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RTdXBlckNsYXNzL25vQ29uZmxpY3RVc2luZ1Byb3RlY3RlZE1ldGhvZEZyb21TdXBlci9iZWZvcmUvVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFlMTQzZTcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdFN1cGVyQ2xhc3Mvbm9Db25mbGljdFVzaW5nUHJvdGVjdGVkTWV0aG9kRnJvbVN1cGVyL2JlZm9yZS9UZXN0LmphdmEKQEAgLTAsMCArMSw2IEBACitpbXBvcnQgamF2YS51dGlsLio7CitwdWJsaWMgY2xhc3MgVGVzdCBleHRlbmRzIEFycmF5TGlzdCB7CisgICAgdm9pZCB4KCkgeworICAgICAgcmVtb3ZlUmFuZ2UoMCwgMCk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0U3VwZXJDbGFzcy9wYXJhbWV0ZXJOYW1lRXF1YWxzRmllbGROYW1lL2FmdGVyL1Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0U3VwZXJDbGFzcy9wYXJhbWV0ZXJOYW1lRXF1YWxzRmllbGROYW1lL2FmdGVyL1Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44M2UwYWRlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RTdXBlckNsYXNzL3BhcmFtZXRlck5hbWVFcXVhbHNGaWVsZE5hbWUvYWZ0ZXIvVGVzdC5qYXZhCkBAIC0wLDAgKzEsNyBAQAorcHVibGljIGNsYXNzIFRlc3QgeworICAgIGludCBhOworCisgICAgcHVibGljIFRlc3QoaW50IGEpIHsKKyAgICAgICAgdGhpcy5hID0gYTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RTdXBlckNsYXNzL3BhcmFtZXRlck5hbWVFcXVhbHNGaWVsZE5hbWUvYWZ0ZXIvVGVzdFN1YmNsYXNzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdFN1cGVyQ2xhc3MvcGFyYW1ldGVyTmFtZUVxdWFsc0ZpZWxkTmFtZS9hZnRlci9UZXN0U3ViY2xhc3MuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZjkwZGZjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RTdXBlckNsYXNzL3BhcmFtZXRlck5hbWVFcXVhbHNGaWVsZE5hbWUvYWZ0ZXIvVGVzdFN1YmNsYXNzLmphdmEKQEAgLTAsMCArMSw3IEBACitwdWJsaWMgY2xhc3MgVGVzdFN1YmNsYXNzIGV4dGVuZHMgVGVzdCB7CisgICAgaW50IGI7CisgICAgcHVibGljIFRlc3RTdWJjbGFzcyhpbnQgYSwgaW50IGIpIHsKKyAgICAgICAgc3VwZXIoYSk7CisgICAgICAgIHRoaXMuYiA9IGI7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0U3VwZXJDbGFzcy9wYXJhbWV0ZXJOYW1lRXF1YWxzRmllbGROYW1lL2JlZm9yZS9UZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdFN1cGVyQ2xhc3MvcGFyYW1ldGVyTmFtZUVxdWFsc0ZpZWxkTmFtZS9iZWZvcmUvVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg4MjcxMTIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdFN1cGVyQ2xhc3MvcGFyYW1ldGVyTmFtZUVxdWFsc0ZpZWxkTmFtZS9iZWZvcmUvVGVzdC5qYXZhCkBAIC0wLDAgKzEsOCBAQAorcHVibGljIGNsYXNzIFRlc3QgeworICAgIGludCBhOworICAgIGludCBiOworICAgIHB1YmxpYyBUZXN0KGludCBhLCBpbnQgYikgeworICAgICAgICB0aGlzLmEgPSBhOworICAgICAgICB0aGlzLmIgPSBiOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdFN1cGVyQ2xhc3MvcmVxdWlyZWRJbXBvcnRSZW1vdmVkL2FmdGVyL2Zvby9BLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdFN1cGVyQ2xhc3MvcmVxdWlyZWRJbXBvcnRSZW1vdmVkL2FmdGVyL2Zvby9BLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmJiM2JlNAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0U3VwZXJDbGFzcy9yZXF1aXJlZEltcG9ydFJlbW92ZWQvYWZ0ZXIvZm9vL0EuamF2YQpAQCAtMCwwICsxLDkgQEAKK3BhY2thZ2UgZm9vOworCitpbXBvcnQgZm9vLmltcGwuQjsKKworcHVibGljIGNsYXNzIEEgeworICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CisgICAgQiBiID0gQi5nZXRJbnN0YW5jZSgpOworICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdFN1cGVyQ2xhc3MvcmVxdWlyZWRJbXBvcnRSZW1vdmVkL2FmdGVyL2Zvby9pbXBsL0IuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0U3VwZXJDbGFzcy9yZXF1aXJlZEltcG9ydFJlbW92ZWQvYWZ0ZXIvZm9vL2ltcGwvQi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdkMzE3YjAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdFN1cGVyQ2xhc3MvcmVxdWlyZWRJbXBvcnRSZW1vdmVkL2FmdGVyL2Zvby9pbXBsL0IuamF2YQpAQCAtMCwwICsxLDcgQEAKK3BhY2thZ2UgZm9vLmltcGw7CisKK3B1YmxpYyBjbGFzcyBCIHsKKyAgICBwdWJsaWMgc3RhdGljIEIgZ2V0SW5zdGFuY2UoKSB7CisgICAgICAgIHJldHVybiBudWxsOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdFN1cGVyQ2xhc3MvcmVxdWlyZWRJbXBvcnRSZW1vdmVkL2FmdGVyL2Zvby9pbXBsL0JJbXBsLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdFN1cGVyQ2xhc3MvcmVxdWlyZWRJbXBvcnRSZW1vdmVkL2FmdGVyL2Zvby9pbXBsL0JJbXBsLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTJlM2ZhMAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0U3VwZXJDbGFzcy9yZXF1aXJlZEltcG9ydFJlbW92ZWQvYWZ0ZXIvZm9vL2ltcGwvQkltcGwuamF2YQpAQCAtMCwwICsxLDQgQEAKK3BhY2thZ2UgZm9vLmltcGw7CisKK3B1YmxpYyBjbGFzcyBCSW1wbCBleHRlbmRzIEIgeworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RTdXBlckNsYXNzL3JlcXVpcmVkSW1wb3J0UmVtb3ZlZC9iZWZvcmUvZm9vL0EuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0U3VwZXJDbGFzcy9yZXF1aXJlZEltcG9ydFJlbW92ZWQvYmVmb3JlL2Zvby9BLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmJiM2JlNAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0U3VwZXJDbGFzcy9yZXF1aXJlZEltcG9ydFJlbW92ZWQvYmVmb3JlL2Zvby9BLmphdmEKQEAgLTAsMCArMSw5IEBACitwYWNrYWdlIGZvbzsKKworaW1wb3J0IGZvby5pbXBsLkI7CisKK3B1YmxpYyBjbGFzcyBBIHsKKyAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgeworICAgIEIgYiA9IEIuZ2V0SW5zdGFuY2UoKTsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RTdXBlckNsYXNzL3JlcXVpcmVkSW1wb3J0UmVtb3ZlZC9iZWZvcmUvZm9vL2ltcGwvQi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RTdXBlckNsYXNzL3JlcXVpcmVkSW1wb3J0UmVtb3ZlZC9iZWZvcmUvZm9vL2ltcGwvQi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY4MzcwMjAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdFN1cGVyQ2xhc3MvcmVxdWlyZWRJbXBvcnRSZW1vdmVkL2JlZm9yZS9mb28vaW1wbC9CLmphdmEKQEAgLTAsMCArMSw3IEBACitwYWNrYWdlIGZvby5pbXBsOworCitwdWJsaWMgY2xhc3MgQiB7CisgICAgcHVibGljIHN0YXRpYyBCIGdldEluc3RhbmNlKCkgeworICAgICAgICByZXR1cm4gbnVsbDsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdFN1cGVyQ2xhc3Mvc3Vic3RpdHV0ZUdlbmVyaWNzL2FmdGVyL0EuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0U3VwZXJDbGFzcy9zdWJzdGl0dXRlR2VuZXJpY3MvYWZ0ZXIvQS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMzZjljYTQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdFN1cGVyQ2xhc3Mvc3Vic3RpdHV0ZUdlbmVyaWNzL2FmdGVyL0EuamF2YQpAQCAtMCwwICsxLDQgQEAKK3B1YmxpYyBjbGFzcyBBPEU+IHsKKyAgcHVibGljIEEoRSBlKSB7CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0U3VwZXJDbGFzcy9zdWJzdGl0dXRlR2VuZXJpY3MvYWZ0ZXIvQUIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0U3VwZXJDbGFzcy9zdWJzdGl0dXRlR2VuZXJpY3MvYWZ0ZXIvQUIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42M2ZiZTZhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RTdXBlckNsYXNzL3N1YnN0aXR1dGVHZW5lcmljcy9hZnRlci9BQi5qYXZhCkBAIC0wLDAgKzEsNSBAQAorcHVibGljIGNsYXNzIEFCIGV4dGVuZHMgQiB7CisgIHB1YmxpYyBBQihTdHJpbmcgcykgeworICAgIHN1cGVyKHMpOworICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdFN1cGVyQ2xhc3Mvc3Vic3RpdHV0ZUdlbmVyaWNzL2FmdGVyL0IuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0U3VwZXJDbGFzcy9zdWJzdGl0dXRlR2VuZXJpY3MvYWZ0ZXIvQi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU4MTRjZjkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdFN1cGVyQ2xhc3Mvc3Vic3RpdHV0ZUdlbmVyaWNzL2FmdGVyL0IuamF2YQpAQCAtMCwwICsxLDUgQEAKK3B1YmxpYyBjbGFzcyBCIGV4dGVuZHMgQTxTdHJpbmc+IHsKKyAgICBwdWJsaWMgQihTdHJpbmcgZSkgeworICAgICAgICBzdXBlcihlKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RTdXBlckNsYXNzL3N1YnN0aXR1dGVHZW5lcmljcy9iZWZvcmUvQS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2V4dHJhY3RTdXBlckNsYXNzL3N1YnN0aXR1dGVHZW5lcmljcy9iZWZvcmUvQS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMzZjljYTQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdFN1cGVyQ2xhc3Mvc3Vic3RpdHV0ZUdlbmVyaWNzL2JlZm9yZS9BLmphdmEKQEAgLTAsMCArMSw0IEBACitwdWJsaWMgY2xhc3MgQTxFPiB7CisgIHB1YmxpYyBBKEUgZSkgeworICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdFN1cGVyQ2xhc3Mvc3Vic3RpdHV0ZUdlbmVyaWNzL2JlZm9yZS9CLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvZXh0cmFjdFN1cGVyQ2xhc3Mvc3Vic3RpdHV0ZUdlbmVyaWNzL2JlZm9yZS9CLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjY5NDlhYwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9leHRyYWN0U3VwZXJDbGFzcy9zdWJzdGl0dXRlR2VuZXJpY3MvYmVmb3JlL0IuamF2YQpAQCAtMCwwICsxLDUgQEAKK3B1YmxpYyBjbGFzcyBCIGV4dGVuZHMgQTxTdHJpbmc+eworICBwdWJsaWMgQihTdHJpbmcgcykgeworICAgIHN1cGVyKHMpOworICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5oZXJpdGFuY2VUb0RlbGVnYXRpb24vYWJzdHJhY3RCYXNlL2FmdGVyL0EuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmhlcml0YW5jZVRvRGVsZWdhdGlvbi9hYnN0cmFjdEJhc2UvYWZ0ZXIvQS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBiMTEzMmQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5oZXJpdGFuY2VUb0RlbGVnYXRpb24vYWJzdHJhY3RCYXNlL2FmdGVyL0EuamF2YQpAQCAtMCwwICsxLDExIEBACitwdWJsaWMgYWJzdHJhY3QgY2xhc3MgQSB7CisgICAgcHVibGljIGZpbmFsIE15QmFzZSBteURlbGVnYXRlID0gbmV3IE15QmFzZSgpOworCisgICAgcHJvdGVjdGVkIGFic3RyYWN0IHZvaWQgcnVuKCk7CisKKyAgICBwcml2YXRlIGNsYXNzIE15QmFzZSBleHRlbmRzIEJhc2UgeworICAgICAgICBwdWJsaWMgdm9pZCBydW4oKSB7CisgICAgICAgICAgICBBLnRoaXMucnVuKCk7CisgICAgICAgIH0KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2luaGVyaXRhbmNlVG9EZWxlZ2F0aW9uL2Fic3RyYWN0QmFzZS9hZnRlci9CYXNlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5oZXJpdGFuY2VUb0RlbGVnYXRpb24vYWJzdHJhY3RCYXNlL2FmdGVyL0Jhc2UuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMjM3YTdmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2luaGVyaXRhbmNlVG9EZWxlZ2F0aW9uL2Fic3RyYWN0QmFzZS9hZnRlci9CYXNlLmphdmEKQEAgLTAsMCArMSwyIEBACitwdWJsaWMgYWJzdHJhY3QgY2xhc3MgQmFzZSBpbXBsZW1lbnRzIFJ1bm5hYmxlIHsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5oZXJpdGFuY2VUb0RlbGVnYXRpb24vYWJzdHJhY3RCYXNlL2JlZm9yZS9BLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5oZXJpdGFuY2VUb0RlbGVnYXRpb24vYWJzdHJhY3RCYXNlL2JlZm9yZS9BLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjQxOTU3MgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmhlcml0YW5jZVRvRGVsZWdhdGlvbi9hYnN0cmFjdEJhc2UvYmVmb3JlL0EuamF2YQpAQCAtMCwwICsxLDIgQEAKK3B1YmxpYyBhYnN0cmFjdCBjbGFzcyBBIGV4dGVuZHMgQmFzZSB7ICAgIAorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmhlcml0YW5jZVRvRGVsZWdhdGlvbi9hYnN0cmFjdEJhc2UvYmVmb3JlL0Jhc2UuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmhlcml0YW5jZVRvRGVsZWdhdGlvbi9hYnN0cmFjdEJhc2UvYmVmb3JlL0Jhc2UuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMjM3YTdmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2luaGVyaXRhbmNlVG9EZWxlZ2F0aW9uL2Fic3RyYWN0QmFzZS9iZWZvcmUvQmFzZS5qYXZhCkBAIC0wLDAgKzEsMiBAQAorcHVibGljIGFic3RyYWN0IGNsYXNzIEJhc2UgaW1wbGVtZW50cyBSdW5uYWJsZSB7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2luaGVyaXRhbmNlVG9EZWxlZ2F0aW9uL2Fic3RyYWN0QmFzZTEvYWZ0ZXIvQS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2luaGVyaXRhbmNlVG9EZWxlZ2F0aW9uL2Fic3RyYWN0QmFzZTEvYWZ0ZXIvQS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRiODFkYjcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5oZXJpdGFuY2VUb0RlbGVnYXRpb24vYWJzdHJhY3RCYXNlMS9hZnRlci9BLmphdmEKQEAgLTAsMCArMSw5IEBACitwdWJsaWMgY2xhc3MgQSB7CisgICAgcHJpdmF0ZSBmaW5hbCBNeUJhc2UgbXlEZWxlZ2F0ZSA9IG5ldyBNeUJhc2UoKTsKKworICAgIHByaXZhdGUgY2xhc3MgTXlCYXNlIGV4dGVuZHMgQmFzZSB7CisgICAgICAgIHB1YmxpYyB2b2lkIHJ1bigpIHsKKyAgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIkZyb20gQSIpOworICAgICAgICB9CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmhlcml0YW5jZVRvRGVsZWdhdGlvbi9hYnN0cmFjdEJhc2UxL2FmdGVyL0Jhc2UuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmhlcml0YW5jZVRvRGVsZWdhdGlvbi9hYnN0cmFjdEJhc2UxL2FmdGVyL0Jhc2UuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMjM3YTdmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2luaGVyaXRhbmNlVG9EZWxlZ2F0aW9uL2Fic3RyYWN0QmFzZTEvYWZ0ZXIvQmFzZS5qYXZhCkBAIC0wLDAgKzEsMiBAQAorcHVibGljIGFic3RyYWN0IGNsYXNzIEJhc2UgaW1wbGVtZW50cyBSdW5uYWJsZSB7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2luaGVyaXRhbmNlVG9EZWxlZ2F0aW9uL2Fic3RyYWN0QmFzZTEvYmVmb3JlL0EuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmhlcml0YW5jZVRvRGVsZWdhdGlvbi9hYnN0cmFjdEJhc2UxL2JlZm9yZS9BLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTc2Y2JmNQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmhlcml0YW5jZVRvRGVsZWdhdGlvbi9hYnN0cmFjdEJhc2UxL2JlZm9yZS9BLmphdmEKQEAgLTAsMCArMSw1IEBACitwdWJsaWMgY2xhc3MgQSBleHRlbmRzIEJhc2UgeworICAgICBwdWJsaWMgdm9pZCBydW4oKSB7CisgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJGcm9tIEEiKTsKKyAgICAgfSAgICAgCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2luaGVyaXRhbmNlVG9EZWxlZ2F0aW9uL2Fic3RyYWN0QmFzZTEvYmVmb3JlL0Jhc2UuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmhlcml0YW5jZVRvRGVsZWdhdGlvbi9hYnN0cmFjdEJhc2UxL2JlZm9yZS9CYXNlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjIzN2E3ZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmhlcml0YW5jZVRvRGVsZWdhdGlvbi9hYnN0cmFjdEJhc2UxL2JlZm9yZS9CYXNlLmphdmEKQEAgLTAsMCArMSwyIEBACitwdWJsaWMgYWJzdHJhY3QgY2xhc3MgQmFzZSBpbXBsZW1lbnRzIFJ1bm5hYmxlIHsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5oZXJpdGFuY2VUb0RlbGVnYXRpb24vYW5ub3RhdGlvbnMvYWZ0ZXIvQS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2luaGVyaXRhbmNlVG9EZWxlZ2F0aW9uL2Fubm90YXRpb25zL2FmdGVyL0EuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NmMwMDAxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2luaGVyaXRhbmNlVG9EZWxlZ2F0aW9uL2Fubm90YXRpb25zL2FmdGVyL0EuamF2YQpAQCAtMCwwICsxLDkgQEAKK2ltcG9ydCBvcmcuamV0YnJhaW5zLmFubm90YXRpb25zLk51bGxhYmxlOworaW1wb3J0IG9yZy5qZXRicmFpbnMuYW5ub3RhdGlvbnMuTm90TnVsbDsKKworY2xhc3MgQSB7CisgICAgQE51bGxhYmxlCisgICAgcHVibGljIE9iamVjdCBtZXRob2RGcm9tQShATm90TnVsbCBTdHJpbmcgcykgeworICAgICAgICByZXR1cm4gbnVsbDsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5oZXJpdGFuY2VUb0RlbGVnYXRpb24vYW5ub3RhdGlvbnMvYWZ0ZXIvQi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2luaGVyaXRhbmNlVG9EZWxlZ2F0aW9uL2Fubm90YXRpb25zL2FmdGVyL0IuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iN2YwNjY1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2luaGVyaXRhbmNlVG9EZWxlZ2F0aW9uL2Fubm90YXRpb25zL2FmdGVyL0IuamF2YQpAQCAtMCwwICsxLDExIEBACitpbXBvcnQgb3JnLmpldGJyYWlucy5hbm5vdGF0aW9ucy5Ob3ROdWxsOworaW1wb3J0IG9yZy5qZXRicmFpbnMuYW5ub3RhdGlvbnMuTnVsbGFibGU7CisKK2NsYXNzIEIgeworICAgIHB1YmxpYyBmaW5hbCBBIG15RGVsZWdhdGUgPSBuZXcgQSgpOworCisgICAgQE51bGxhYmxlCisgICAgcHVibGljIE9iamVjdCBtZXRob2RGcm9tQShATm90TnVsbCBTdHJpbmcgcykgeworICAgICAgICByZXR1cm4gbXlEZWxlZ2F0ZS5tZXRob2RGcm9tQShzKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2luaGVyaXRhbmNlVG9EZWxlZ2F0aW9uL2Fubm90YXRpb25zL2JlZm9yZS9BLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5oZXJpdGFuY2VUb0RlbGVnYXRpb24vYW5ub3RhdGlvbnMvYmVmb3JlL0EuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NmMwMDAxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2luaGVyaXRhbmNlVG9EZWxlZ2F0aW9uL2Fubm90YXRpb25zL2JlZm9yZS9BLmphdmEKQEAgLTAsMCArMSw5IEBACitpbXBvcnQgb3JnLmpldGJyYWlucy5hbm5vdGF0aW9ucy5OdWxsYWJsZTsKK2ltcG9ydCBvcmcuamV0YnJhaW5zLmFubm90YXRpb25zLk5vdE51bGw7CisKK2NsYXNzIEEgeworICAgIEBOdWxsYWJsZQorICAgIHB1YmxpYyBPYmplY3QgbWV0aG9kRnJvbUEoQE5vdE51bGwgU3RyaW5nIHMpIHsKKyAgICAgICAgcmV0dXJuIG51bGw7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2luaGVyaXRhbmNlVG9EZWxlZ2F0aW9uL2Fubm90YXRpb25zL2JlZm9yZS9CLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5oZXJpdGFuY2VUb0RlbGVnYXRpb24vYW5ub3RhdGlvbnMvYmVmb3JlL0IuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NzY1ODNmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2luaGVyaXRhbmNlVG9EZWxlZ2F0aW9uL2Fubm90YXRpb25zL2JlZm9yZS9CLmphdmEKQEAgLTAsMCArMSwyIEBACitjbGFzcyBCIGV4dGVuZHMgQSB7ICAgICAgIAorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmhlcml0YW5jZVRvRGVsZWdhdGlvbi9nZXR0ZXIvYWZ0ZXIvQS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2luaGVyaXRhbmNlVG9EZWxlZ2F0aW9uL2dldHRlci9hZnRlci9BLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTkxMzE3MQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmhlcml0YW5jZVRvRGVsZWdhdGlvbi9nZXR0ZXIvYWZ0ZXIvQS5qYXZhCkBAIC0wLDAgKzEsNyBAQAorY2xhc3MgQSB7CisgICAgcHVibGljIHZvaWQgbWV0aG9kRnJvbUEoKSB7CisgICAgfQorICAgIHB1YmxpYyBpbnQgaW50TWV0aG9kRnJvbUEoaW50IGkpIHsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmhlcml0YW5jZVRvRGVsZWdhdGlvbi9nZXR0ZXIvYWZ0ZXIvQi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2luaGVyaXRhbmNlVG9EZWxlZ2F0aW9uL2dldHRlci9hZnRlci9CLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDZjNDk4NTQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5oZXJpdGFuY2VUb0RlbGVnYXRpb24vZ2V0dGVyL2FmdGVyL0IuamF2YQpAQCAtMCwwICsxLDE1IEBACitjbGFzcyBCIHsKKyAgICBwcml2YXRlIGZpbmFsIEEgbXlEZWxlZ2F0ZSA9IG5ldyBBKCk7CisKKyAgICBwdWJsaWMgQSBnZXRNeURlbGVnYXRlKCkgeworICAgICAgICByZXR1cm4gbXlEZWxlZ2F0ZTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBtZXRob2RGcm9tQSgpIHsKKyAgICAgICAgbXlEZWxlZ2F0ZS5tZXRob2RGcm9tQSgpOworICAgIH0KKworICAgIHB1YmxpYyBpbnQgaW50TWV0aG9kRnJvbUEoaW50IGkpIHsKKyAgICAgICAgcmV0dXJuIG15RGVsZWdhdGUuaW50TWV0aG9kRnJvbUEoaSk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmhlcml0YW5jZVRvRGVsZWdhdGlvbi9nZXR0ZXIvYmVmb3JlL0EuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmhlcml0YW5jZVRvRGVsZWdhdGlvbi9nZXR0ZXIvYmVmb3JlL0EuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lOTEzMTcxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2luaGVyaXRhbmNlVG9EZWxlZ2F0aW9uL2dldHRlci9iZWZvcmUvQS5qYXZhCkBAIC0wLDAgKzEsNyBAQAorY2xhc3MgQSB7CisgICAgcHVibGljIHZvaWQgbWV0aG9kRnJvbUEoKSB7CisgICAgfQorICAgIHB1YmxpYyBpbnQgaW50TWV0aG9kRnJvbUEoaW50IGkpIHsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmhlcml0YW5jZVRvRGVsZWdhdGlvbi9nZXR0ZXIvYmVmb3JlL0IuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmhlcml0YW5jZVRvRGVsZWdhdGlvbi9nZXR0ZXIvYmVmb3JlL0IuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NzY1ODNmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2luaGVyaXRhbmNlVG9EZWxlZ2F0aW9uL2dldHRlci9iZWZvcmUvQi5qYXZhCkBAIC0wLDAgKzEsMiBAQAorY2xhc3MgQiBleHRlbmRzIEEgeyAgICAgICAKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5oZXJpdGFuY2VUb0RlbGVnYXRpb24vaGllcmFyY2h5L2FmdGVyL0EuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmhlcml0YW5jZVRvRGVsZWdhdGlvbi9oaWVyYXJjaHkvYWZ0ZXIvQS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUxNTExM2UKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5oZXJpdGFuY2VUb0RlbGVnYXRpb24vaGllcmFyY2h5L2FmdGVyL0EuamF2YQpAQCAtMCwwICsxLDQgQEAKK3B1YmxpYyBjbGFzcyBBIHsKKyAgICB2b2lkIG1ldGhvZEZyb21BKCkgeworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5oZXJpdGFuY2VUb0RlbGVnYXRpb24vaGllcmFyY2h5L2FmdGVyL0Jhc2UuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmhlcml0YW5jZVRvRGVsZWdhdGlvbi9oaWVyYXJjaHkvYWZ0ZXIvQmFzZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI0YjBhM2QKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5oZXJpdGFuY2VUb0RlbGVnYXRpb24vaGllcmFyY2h5L2FmdGVyL0Jhc2UuamF2YQpAQCAtMCwwICsxLDIgQEAKK3B1YmxpYyBjbGFzcyBCYXNlIGV4dGVuZHMgQSB7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2luaGVyaXRhbmNlVG9EZWxlZ2F0aW9uL2hpZXJhcmNoeS9hZnRlci9UZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5oZXJpdGFuY2VUb0RlbGVnYXRpb24vaGllcmFyY2h5L2FmdGVyL1Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MDM3OTBlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2luaGVyaXRhbmNlVG9EZWxlZ2F0aW9uL2hpZXJhcmNoeS9hZnRlci9UZXN0LmphdmEKQEAgLTAsMCArMSwzIEBACitwdWJsaWMgaW50ZXJmYWNlIFRlc3QgeworICAgIEEgZ2V0QSgpOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmhlcml0YW5jZVRvRGVsZWdhdGlvbi9oaWVyYXJjaHkvYWZ0ZXIvWC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2luaGVyaXRhbmNlVG9EZWxlZ2F0aW9uL2hpZXJhcmNoeS9hZnRlci9YLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGUxN2M1YwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmhlcml0YW5jZVRvRGVsZWdhdGlvbi9oaWVyYXJjaHkvYWZ0ZXIvWC5qYXZhCkBAIC0wLDAgKzEsOSBAQAorcHVibGljIGNsYXNzIFggeworICAgIHByaXZhdGUgZmluYWwgQmFzZSBteURlbGVnYXRlID0gbmV3IEJhc2UoKTsKKyAgICBBIG15RmllbGQ7CisgICAgcHVibGljIHZvaWQgbWV0aG9kKFRlc3QgdCkgeworICAgICAgICAgbXlGaWVsZCA9IHQuZ2V0QSgpOworICAgICAgICAgbXlGaWVsZC5tZXRob2RGcm9tQSgpOworICAgICAgICAgdC5nZXRBKCkubWV0aG9kRnJvbUEoKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2luaGVyaXRhbmNlVG9EZWxlZ2F0aW9uL2hpZXJhcmNoeS9iZWZvcmUvQS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2luaGVyaXRhbmNlVG9EZWxlZ2F0aW9uL2hpZXJhcmNoeS9iZWZvcmUvQS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUxNTExM2UKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5oZXJpdGFuY2VUb0RlbGVnYXRpb24vaGllcmFyY2h5L2JlZm9yZS9BLmphdmEKQEAgLTAsMCArMSw0IEBACitwdWJsaWMgY2xhc3MgQSB7CisgICAgdm9pZCBtZXRob2RGcm9tQSgpIHsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2luaGVyaXRhbmNlVG9EZWxlZ2F0aW9uL2hpZXJhcmNoeS9iZWZvcmUvQmFzZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2luaGVyaXRhbmNlVG9EZWxlZ2F0aW9uL2hpZXJhcmNoeS9iZWZvcmUvQmFzZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI0YjBhM2QKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5oZXJpdGFuY2VUb0RlbGVnYXRpb24vaGllcmFyY2h5L2JlZm9yZS9CYXNlLmphdmEKQEAgLTAsMCArMSwyIEBACitwdWJsaWMgY2xhc3MgQmFzZSBleHRlbmRzIEEgeworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmhlcml0YW5jZVRvRGVsZWdhdGlvbi9oaWVyYXJjaHkvYmVmb3JlL1Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmhlcml0YW5jZVRvRGVsZWdhdGlvbi9oaWVyYXJjaHkvYmVmb3JlL1Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MDM3OTBlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2luaGVyaXRhbmNlVG9EZWxlZ2F0aW9uL2hpZXJhcmNoeS9iZWZvcmUvVGVzdC5qYXZhCkBAIC0wLDAgKzEsMyBAQAorcHVibGljIGludGVyZmFjZSBUZXN0IHsKKyAgICBBIGdldEEoKTsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5oZXJpdGFuY2VUb0RlbGVnYXRpb24vaGllcmFyY2h5L2JlZm9yZS9YLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5oZXJpdGFuY2VUb0RlbGVnYXRpb24vaGllcmFyY2h5L2JlZm9yZS9YLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTEyMTEwYgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmhlcml0YW5jZVRvRGVsZWdhdGlvbi9oaWVyYXJjaHkvYmVmb3JlL1guamF2YQpAQCAtMCwwICsxLDggQEAKK3B1YmxpYyBjbGFzcyBYIGV4dGVuZHMgQmFzZSB7CisgICAgQSBteUZpZWxkOworICAgIHB1YmxpYyB2b2lkIG1ldGhvZChUZXN0IHQpIHsKKyAgICAgICAgIG15RmllbGQgPSB0LmdldEEoKTsKKyAgICAgICAgIG15RmllbGQubWV0aG9kRnJvbUEoKTsKKyAgICAgICAgIHQuZ2V0QSgpLm1ldGhvZEZyb21BKCk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmhlcml0YW5jZVRvRGVsZWdhdGlvbi9pbm5lckNsYXNzL2FmdGVyL0EuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmhlcml0YW5jZVRvRGVsZWdhdGlvbi9pbm5lckNsYXNzL2FmdGVyL0EuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZTA2M2I5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2luaGVyaXRhbmNlVG9EZWxlZ2F0aW9uL2lubmVyQ2xhc3MvYWZ0ZXIvQS5qYXZhCkBAIC0wLDAgKzEsMTcgQEAKK3B1YmxpYyBjbGFzcyBBIHsKKyAgICBwdWJsaWMgZmluYWwgTXlCYXNlIG15RGVsZWdhdGU7CisKKyAgICBwdWJsaWMgQSgpIHsKKyAgICAgICAgbXlEZWxlZ2F0ZSA9IG5ldyBNeUJhc2UoMjcpOworICAgIH0KKworICAgIHByaXZhdGUgY2xhc3MgTXlCYXNlIGV4dGVuZHMgQmFzZSB7CisgICAgICAgIHB1YmxpYyBNeUJhc2UoaW50IGkpIHsKKyAgICAgICAgICAgIHN1cGVyKGkpOworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIHZvaWQgbWV0aG9kVG9PdmVycmlkZSgpIHsKKyAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiSGVsbG8gZnJvbSBCIik7CisgICAgICAgIH0KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2luaGVyaXRhbmNlVG9EZWxlZ2F0aW9uL2lubmVyQ2xhc3MvYWZ0ZXIvQmFzZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2luaGVyaXRhbmNlVG9EZWxlZ2F0aW9uL2lubmVyQ2xhc3MvYWZ0ZXIvQmFzZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIwZTk3ZGUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5oZXJpdGFuY2VUb0RlbGVnYXRpb24vaW5uZXJDbGFzcy9hZnRlci9CYXNlLmphdmEKQEAgLTAsMCArMSwxMSBAQAorcHVibGljIGNsYXNzIEJhc2UgeworICAgIHByb3RlY3RlZCBpbnQgYmFzZUZpZWxkOworICAgIHB1YmxpYyBCYXNlKCkgeworICAgIH0KKyAgICBwdWJsaWMgQmFzZShpbnQgaSkgeworICAgICAgICBiYXNlRmllbGQgPSBpOworICAgIH0KKyAgICBwdWJsaWMgdm9pZCBtZXRob2RUb092ZXJyaWRlKCkgeworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIkhlbGxvIGZyb20gQmFzZSIpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5oZXJpdGFuY2VUb0RlbGVnYXRpb24vaW5uZXJDbGFzcy9iZWZvcmUvQS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2luaGVyaXRhbmNlVG9EZWxlZ2F0aW9uL2lubmVyQ2xhc3MvYmVmb3JlL0EuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MDVlOGZhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2luaGVyaXRhbmNlVG9EZWxlZ2F0aW9uL2lubmVyQ2xhc3MvYmVmb3JlL0EuamF2YQpAQCAtMCwwICsxLDggQEAKK3B1YmxpYyBjbGFzcyBBIGV4dGVuZHMgQmFzZSB7CisgICAgcHVibGljIEEoKSB7CisgICAgICAgIHN1cGVyKDI3KTsKKyAgICB9CisgICAgcHVibGljIHZvaWQgbWV0aG9kVG9PdmVycmlkZSgpIHsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJIZWxsbyBmcm9tIEIiKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2luaGVyaXRhbmNlVG9EZWxlZ2F0aW9uL2lubmVyQ2xhc3MvYmVmb3JlL0Jhc2UuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmhlcml0YW5jZVRvRGVsZWdhdGlvbi9pbm5lckNsYXNzL2JlZm9yZS9CYXNlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjBlOTdkZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmhlcml0YW5jZVRvRGVsZWdhdGlvbi9pbm5lckNsYXNzL2JlZm9yZS9CYXNlLmphdmEKQEAgLTAsMCArMSwxMSBAQAorcHVibGljIGNsYXNzIEJhc2UgeworICAgIHByb3RlY3RlZCBpbnQgYmFzZUZpZWxkOworICAgIHB1YmxpYyBCYXNlKCkgeworICAgIH0KKyAgICBwdWJsaWMgQmFzZShpbnQgaSkgeworICAgICAgICBiYXNlRmllbGQgPSBpOworICAgIH0KKyAgICBwdWJsaWMgdm9pZCBtZXRob2RUb092ZXJyaWRlKCkgeworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIkhlbGxvIGZyb20gQmFzZSIpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5oZXJpdGFuY2VUb0RlbGVnYXRpb24vaW5uZXJDbGFzc0ZvckludGVyZmFjZS9hZnRlci9BLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5oZXJpdGFuY2VUb0RlbGVnYXRpb24vaW5uZXJDbGFzc0ZvckludGVyZmFjZS9hZnRlci9BLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGI5NTFhNQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmhlcml0YW5jZVRvRGVsZWdhdGlvbi9pbm5lckNsYXNzRm9ySW50ZXJmYWNlL2FmdGVyL0EuamF2YQpAQCAtMCwwICsxLDIwIEBACitwdWJsaWMgY2xhc3MgQSBleHRlbmRzIEJhc2VDbGFzcyB7CisgICAgcHJpdmF0ZSBmaW5hbCBNeUJhc2VJbnRlcmZhY2UgbXlCYXNlSW50ZXJmYWNlID0gbmV3IE15QmFzZUludGVyZmFjZSgpOworCisgICAgcHVibGljIEEoKSB7CisgICAgfQorCisgICAgcHVibGljIEEoU3RyaW5nIHMpIHsKKyAgICAgICAgc3VwZXIoMjcpOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIGJhc2VJbnRlcmZhY2VNZXRob2QoKSB7CisgICAgICAgIG15QmFzZUludGVyZmFjZS5iYXNlSW50ZXJmYWNlTWV0aG9kKCk7CisgICAgfQorCisgICAgcHJpdmF0ZSBjbGFzcyBNeUJhc2VJbnRlcmZhY2UgaW1wbGVtZW50cyBCYXNlSW50ZXJmYWNlIHsKKyAgICAgICAgcHVibGljIHZvaWQgYmFzZUludGVyZmFjZU1ldGhvZCgpIHsKKyAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiSGkhIik7CisgICAgICAgIH0KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2luaGVyaXRhbmNlVG9EZWxlZ2F0aW9uL2lubmVyQ2xhc3NGb3JJbnRlcmZhY2UvYWZ0ZXIvQmFzZUNsYXNzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5oZXJpdGFuY2VUb0RlbGVnYXRpb24vaW5uZXJDbGFzc0ZvckludGVyZmFjZS9hZnRlci9CYXNlQ2xhc3MuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMDZmODkzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2luaGVyaXRhbmNlVG9EZWxlZ2F0aW9uL2lubmVyQ2xhc3NGb3JJbnRlcmZhY2UvYWZ0ZXIvQmFzZUNsYXNzLmphdmEKQEAgLTAsMCArMSw3IEBACitwdWJsaWMgQmFzZUNsYXNzIHsKKyAgICBwdWJsaWMgQmFzZUNsYXNzKCkgeworICAgIH0KKworICAgIHB1YmxpYyBCYXNlQ2xhc3MoaW50IGkpIHsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2luaGVyaXRhbmNlVG9EZWxlZ2F0aW9uL2lubmVyQ2xhc3NGb3JJbnRlcmZhY2UvYWZ0ZXIvQmFzZUludGVyZmFjZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2luaGVyaXRhbmNlVG9EZWxlZ2F0aW9uL2lubmVyQ2xhc3NGb3JJbnRlcmZhY2UvYWZ0ZXIvQmFzZUludGVyZmFjZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcyZjJjOTg0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2luaGVyaXRhbmNlVG9EZWxlZ2F0aW9uL2lubmVyQ2xhc3NGb3JJbnRlcmZhY2UvYWZ0ZXIvQmFzZUludGVyZmFjZS5qYXZhCkBAIC0wLDAgKzEsMyBAQAorcHVibGljIGludGVyZmFjZSBCYXNlSW50ZXJmYWNlIHsKKyAgICB2b2lkIGJhc2VJbnRlcmZhY2VNZXRob2QoKTsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5oZXJpdGFuY2VUb0RlbGVnYXRpb24vaW5uZXJDbGFzc0ZvckludGVyZmFjZS9iZWZvcmUvQS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2luaGVyaXRhbmNlVG9EZWxlZ2F0aW9uL2lubmVyQ2xhc3NGb3JJbnRlcmZhY2UvYmVmb3JlL0EuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZDBiZDI2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2luaGVyaXRhbmNlVG9EZWxlZ2F0aW9uL2lubmVyQ2xhc3NGb3JJbnRlcmZhY2UvYmVmb3JlL0EuamF2YQpAQCAtMCwwICsxLDEyIEBACitwdWJsaWMgY2xhc3MgQSBleHRlbmRzIEJhc2VDbGFzcyBpbXBsZW1lbnRzIEJhc2VJbnRlcmZhY2UgeworICAgIHB1YmxpYyBBKCkgeworICAgIH0KKworICAgIHB1YmxpYyBBKFN0cmluZyBzKSB7CisgICAgICAgIHN1cGVyKDI3KTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBiYXNlSW50ZXJmYWNlTWV0aG9kKCkgeworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIkhpISIpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5oZXJpdGFuY2VUb0RlbGVnYXRpb24vaW5uZXJDbGFzc0ZvckludGVyZmFjZS9iZWZvcmUvQmFzZUNsYXNzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5oZXJpdGFuY2VUb0RlbGVnYXRpb24vaW5uZXJDbGFzc0ZvckludGVyZmFjZS9iZWZvcmUvQmFzZUNsYXNzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjA2Zjg5MwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmhlcml0YW5jZVRvRGVsZWdhdGlvbi9pbm5lckNsYXNzRm9ySW50ZXJmYWNlL2JlZm9yZS9CYXNlQ2xhc3MuamF2YQpAQCAtMCwwICsxLDcgQEAKK3B1YmxpYyBCYXNlQ2xhc3MgeworICAgIHB1YmxpYyBCYXNlQ2xhc3MoKSB7CisgICAgfQorCisgICAgcHVibGljIEJhc2VDbGFzcyhpbnQgaSkgeworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5oZXJpdGFuY2VUb0RlbGVnYXRpb24vaW5uZXJDbGFzc0ZvckludGVyZmFjZS9iZWZvcmUvQmFzZUludGVyZmFjZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2luaGVyaXRhbmNlVG9EZWxlZ2F0aW9uL2lubmVyQ2xhc3NGb3JJbnRlcmZhY2UvYmVmb3JlL0Jhc2VJbnRlcmZhY2UuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MmYyYzk4NAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmhlcml0YW5jZVRvRGVsZWdhdGlvbi9pbm5lckNsYXNzRm9ySW50ZXJmYWNlL2JlZm9yZS9CYXNlSW50ZXJmYWNlLmphdmEKQEAgLTAsMCArMSwzIEBACitwdWJsaWMgaW50ZXJmYWNlIEJhc2VJbnRlcmZhY2UgeworICAgIHZvaWQgYmFzZUludGVyZmFjZU1ldGhvZCgpOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmhlcml0YW5jZVRvRGVsZWdhdGlvbi9pbm5lckNsYXNzRm9ySW50ZXJmYWNlQWJzdHJhY3QvYWZ0ZXIvQS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2luaGVyaXRhbmNlVG9EZWxlZ2F0aW9uL2lubmVyQ2xhc3NGb3JJbnRlcmZhY2VBYnN0cmFjdC9hZnRlci9BLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjM2YzJlOAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmhlcml0YW5jZVRvRGVsZWdhdGlvbi9pbm5lckNsYXNzRm9ySW50ZXJmYWNlQWJzdHJhY3QvYWZ0ZXIvQS5qYXZhCkBAIC0wLDAgKzEsMTggQEAKK3B1YmxpYyBhYnN0cmFjdCBjbGFzcyBBIGV4dGVuZHMgQmFzZUNsYXNzIHsKKyAgICBwcml2YXRlIGZpbmFsIE15QmFzZUludGVyZmFjZSBteUJhc2VJbnRlcmZhY2UgPSBuZXcgTXlCYXNlSW50ZXJmYWNlKCk7CisKKyAgICBwdWJsaWMgQSgpIHsKKyAgICB9CisKKyAgICBwdWJsaWMgQShTdHJpbmcgcykgeworICAgICAgICBzdXBlcigyNyk7CisgICAgfQorCisgICAgcHVibGljIGFic3RyYWN0IHZvaWQgYmFzZUludGVyZmFjZU1ldGhvZCgpOworCisgICAgcHJpdmF0ZSBjbGFzcyBNeUJhc2VJbnRlcmZhY2UgaW1wbGVtZW50cyBCYXNlSW50ZXJmYWNlIHsKKyAgICAgICAgcHVibGljIHZvaWQgYmFzZUludGVyZmFjZU1ldGhvZCgpIHsKKyAgICAgICAgICAgIEEudGhpcy5iYXNlSW50ZXJmYWNlTWV0aG9kKCk7CisgICAgICAgIH0KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2luaGVyaXRhbmNlVG9EZWxlZ2F0aW9uL2lubmVyQ2xhc3NGb3JJbnRlcmZhY2VBYnN0cmFjdC9hZnRlci9CYXNlQ2xhc3MuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmhlcml0YW5jZVRvRGVsZWdhdGlvbi9pbm5lckNsYXNzRm9ySW50ZXJmYWNlQWJzdHJhY3QvYWZ0ZXIvQmFzZUNsYXNzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjA2Zjg5MwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmhlcml0YW5jZVRvRGVsZWdhdGlvbi9pbm5lckNsYXNzRm9ySW50ZXJmYWNlQWJzdHJhY3QvYWZ0ZXIvQmFzZUNsYXNzLmphdmEKQEAgLTAsMCArMSw3IEBACitwdWJsaWMgQmFzZUNsYXNzIHsKKyAgICBwdWJsaWMgQmFzZUNsYXNzKCkgeworICAgIH0KKworICAgIHB1YmxpYyBCYXNlQ2xhc3MoaW50IGkpIHsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2luaGVyaXRhbmNlVG9EZWxlZ2F0aW9uL2lubmVyQ2xhc3NGb3JJbnRlcmZhY2VBYnN0cmFjdC9hZnRlci9CYXNlSW50ZXJmYWNlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5oZXJpdGFuY2VUb0RlbGVnYXRpb24vaW5uZXJDbGFzc0ZvckludGVyZmFjZUFic3RyYWN0L2FmdGVyL0Jhc2VJbnRlcmZhY2UuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MmYyYzk4NAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmhlcml0YW5jZVRvRGVsZWdhdGlvbi9pbm5lckNsYXNzRm9ySW50ZXJmYWNlQWJzdHJhY3QvYWZ0ZXIvQmFzZUludGVyZmFjZS5qYXZhCkBAIC0wLDAgKzEsMyBAQAorcHVibGljIGludGVyZmFjZSBCYXNlSW50ZXJmYWNlIHsKKyAgICB2b2lkIGJhc2VJbnRlcmZhY2VNZXRob2QoKTsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5oZXJpdGFuY2VUb0RlbGVnYXRpb24vaW5uZXJDbGFzc0ZvckludGVyZmFjZUFic3RyYWN0L2JlZm9yZS9BLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5oZXJpdGFuY2VUb0RlbGVnYXRpb24vaW5uZXJDbGFzc0ZvckludGVyZmFjZUFic3RyYWN0L2JlZm9yZS9BLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGM2NGNjNgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmhlcml0YW5jZVRvRGVsZWdhdGlvbi9pbm5lckNsYXNzRm9ySW50ZXJmYWNlQWJzdHJhY3QvYmVmb3JlL0EuamF2YQpAQCAtMCwwICsxLDggQEAKK3B1YmxpYyBhYnN0cmFjdCBjbGFzcyBBIGV4dGVuZHMgQmFzZUNsYXNzIGltcGxlbWVudHMgQmFzZUludGVyZmFjZSB7CisgICAgcHVibGljIEEoKSB7CisgICAgfQorCisgICAgcHVibGljIEEoU3RyaW5nIHMpIHsKKyAgICAgICAgc3VwZXIoMjcpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5oZXJpdGFuY2VUb0RlbGVnYXRpb24vaW5uZXJDbGFzc0ZvckludGVyZmFjZUFic3RyYWN0L2JlZm9yZS9CYXNlQ2xhc3MuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmhlcml0YW5jZVRvRGVsZWdhdGlvbi9pbm5lckNsYXNzRm9ySW50ZXJmYWNlQWJzdHJhY3QvYmVmb3JlL0Jhc2VDbGFzcy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYwNmY4OTMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5oZXJpdGFuY2VUb0RlbGVnYXRpb24vaW5uZXJDbGFzc0ZvckludGVyZmFjZUFic3RyYWN0L2JlZm9yZS9CYXNlQ2xhc3MuamF2YQpAQCAtMCwwICsxLDcgQEAKK3B1YmxpYyBCYXNlQ2xhc3MgeworICAgIHB1YmxpYyBCYXNlQ2xhc3MoKSB7CisgICAgfQorCisgICAgcHVibGljIEJhc2VDbGFzcyhpbnQgaSkgeworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5oZXJpdGFuY2VUb0RlbGVnYXRpb24vaW5uZXJDbGFzc0ZvckludGVyZmFjZUFic3RyYWN0L2JlZm9yZS9CYXNlSW50ZXJmYWNlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5oZXJpdGFuY2VUb0RlbGVnYXRpb24vaW5uZXJDbGFzc0ZvckludGVyZmFjZUFic3RyYWN0L2JlZm9yZS9CYXNlSW50ZXJmYWNlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzJmMmM5ODQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5oZXJpdGFuY2VUb0RlbGVnYXRpb24vaW5uZXJDbGFzc0ZvckludGVyZmFjZUFic3RyYWN0L2JlZm9yZS9CYXNlSW50ZXJmYWNlLmphdmEKQEAgLTAsMCArMSwzIEBACitwdWJsaWMgaW50ZXJmYWNlIEJhc2VJbnRlcmZhY2UgeworICAgIHZvaWQgYmFzZUludGVyZmFjZU1ldGhvZCgpOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmhlcml0YW5jZVRvRGVsZWdhdGlvbi9pbnRlcmZhY2VEZWxlZ2F0aW9uL2FmdGVyL0EuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmhlcml0YW5jZVRvRGVsZWdhdGlvbi9pbnRlcmZhY2VEZWxlZ2F0aW9uL2FmdGVyL0EuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMDMxYjcxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2luaGVyaXRhbmNlVG9EZWxlZ2F0aW9uL2ludGVyZmFjZURlbGVnYXRpb24vYWZ0ZXIvQS5qYXZhCkBAIC0wLDAgKzEsMjIgQEAKK3B1YmxpYyBjbGFzcyBBIHsKKworICAgIHByaXZhdGUgZmluYWwgTXlJbnRmIG15RGVsZWdhdGUgPSBuZXcgTXlJbnRmKCk7CisKKyAgICBwdWJsaWMgSW50ZiBnZXRNeURlbGVnYXRlKCkgeworICAgICAgICByZXR1cm4gbXlEZWxlZ2F0ZTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBtZXRob2QxKCkgeworICAgICAgICBteURlbGVnYXRlLm1ldGhvZDEoKTsKKyAgICB9CisKKyAgICBwcml2YXRlIGNsYXNzIE15SW50ZiBpbXBsZW1lbnRzIEludGYgeworICAgICAgICBwdWJsaWMgdm9pZCBtZXRob2QxICgpIHsKKyAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiMSIpOworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIHZvaWQgbWV0aG9kMiAoKSB7CisgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIjIiKTsKKyAgICAgICAgfQorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5oZXJpdGFuY2VUb0RlbGVnYXRpb24vaW50ZXJmYWNlRGVsZWdhdGlvbi9hZnRlci9JbnRmLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5oZXJpdGFuY2VUb0RlbGVnYXRpb24vaW50ZXJmYWNlRGVsZWdhdGlvbi9hZnRlci9JbnRmLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmU4MzIyZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmhlcml0YW5jZVRvRGVsZWdhdGlvbi9pbnRlcmZhY2VEZWxlZ2F0aW9uL2FmdGVyL0ludGYuamF2YQpAQCAtMCwwICsxLDQgQEAKK3B1YmxpYyBpbnRlcmZhY2UgSW50ZiB7CisgICAgdm9pZCBtZXRob2QxKCk7CisgICAgdm9pZCBtZXRob2QyKCk7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2luaGVyaXRhbmNlVG9EZWxlZ2F0aW9uL2ludGVyZmFjZURlbGVnYXRpb24vYWZ0ZXIvVXNhZ2UuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmhlcml0YW5jZVRvRGVsZWdhdGlvbi9pbnRlcmZhY2VEZWxlZ2F0aW9uL2FmdGVyL1VzYWdlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWNhYmZkOQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmhlcml0YW5jZVRvRGVsZWdhdGlvbi9pbnRlcmZhY2VEZWxlZ2F0aW9uL2FmdGVyL1VzYWdlLmphdmEKQEAgLTAsMCArMSwxMiBAQAorcHVibGljIGNsYXNzIFVzYWdlIHsKKyAgICBBIGEgPSBuZXcgQSgpOworCisgICAgcHVibGljIHZvaWQgdXNhZ2UoKSB7CisgICAgICAgIGEubWV0aG9kMSgpOworICAgICAgICBhLmdldE15RGVsZWdhdGUoKS5tZXRob2QyKCk7CisgICAgICAgIHVzZShhLmdldE15RGVsZWdhdGUoKSk7CisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIHVzZShJbnRmIGkpIHsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2luaGVyaXRhbmNlVG9EZWxlZ2F0aW9uL2ludGVyZmFjZURlbGVnYXRpb24vYmVmb3JlL0EuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmhlcml0YW5jZVRvRGVsZWdhdGlvbi9pbnRlcmZhY2VEZWxlZ2F0aW9uL2JlZm9yZS9BLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGM3YTBjOQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmhlcml0YW5jZVRvRGVsZWdhdGlvbi9pbnRlcmZhY2VEZWxlZ2F0aW9uL2JlZm9yZS9BLmphdmEKQEAgLTAsMCArMSw5IEBACitwdWJsaWMgY2xhc3MgQSBpbXBsZW1lbnRzIEludGYgeworICAgIHB1YmxpYyB2b2lkIG1ldGhvZDEgKCkgeworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIjEiKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBtZXRob2QyICgpIHsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCIyIik7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmhlcml0YW5jZVRvRGVsZWdhdGlvbi9pbnRlcmZhY2VEZWxlZ2F0aW9uL2JlZm9yZS9JbnRmLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5oZXJpdGFuY2VUb0RlbGVnYXRpb24vaW50ZXJmYWNlRGVsZWdhdGlvbi9iZWZvcmUvSW50Zi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZlODMyMmYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5oZXJpdGFuY2VUb0RlbGVnYXRpb24vaW50ZXJmYWNlRGVsZWdhdGlvbi9iZWZvcmUvSW50Zi5qYXZhCkBAIC0wLDAgKzEsNCBAQAorcHVibGljIGludGVyZmFjZSBJbnRmIHsKKyAgICB2b2lkIG1ldGhvZDEoKTsKKyAgICB2b2lkIG1ldGhvZDIoKTsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5oZXJpdGFuY2VUb0RlbGVnYXRpb24vaW50ZXJmYWNlRGVsZWdhdGlvbi9iZWZvcmUvVXNhZ2UuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmhlcml0YW5jZVRvRGVsZWdhdGlvbi9pbnRlcmZhY2VEZWxlZ2F0aW9uL2JlZm9yZS9Vc2FnZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYzNjdmMjcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5oZXJpdGFuY2VUb0RlbGVnYXRpb24vaW50ZXJmYWNlRGVsZWdhdGlvbi9iZWZvcmUvVXNhZ2UuamF2YQpAQCAtMCwwICsxLDEyIEBACitwdWJsaWMgY2xhc3MgVXNhZ2UgeworICAgIEEgYSA9IG5ldyBBKCk7CisKKyAgICBwdWJsaWMgdm9pZCB1c2FnZSgpIHsKKyAgICAgICAgYS5tZXRob2QxKCk7CisgICAgICAgIGEubWV0aG9kMigpOworICAgICAgICB1c2UoYSk7CisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIHVzZShJbnRmIGkpIHsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2luaGVyaXRhbmNlVG9EZWxlZ2F0aW9uL2ludGVyZmFjZUltcGxpY2l0SW1wbGVtZW50YXRpb24vYWZ0ZXIvQS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2luaGVyaXRhbmNlVG9EZWxlZ2F0aW9uL2ludGVyZmFjZUltcGxpY2l0SW1wbGVtZW50YXRpb24vYWZ0ZXIvQS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU2M2NjYWYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5oZXJpdGFuY2VUb0RlbGVnYXRpb24vaW50ZXJmYWNlSW1wbGljaXRJbXBsZW1lbnRhdGlvbi9hZnRlci9BLmphdmEKQEAgLTAsMCArMSwxNyBAQAorcHVibGljIGNsYXNzIEEgZXh0ZW5kcyBBU3VwZXIgeworICAgIHByaXZhdGUgZmluYWwgTXlJbnRmIG15RGVsZWdhdGUgPSBuZXcgTXlJbnRmKCk7CisKKyAgICBwdWJsaWMgSW50ZiBnZXRNeURlbGVnYXRlKCkgeworICAgICAgICByZXR1cm4gbXlEZWxlZ2F0ZTsKKyAgICB9CisKKyAgICBwcml2YXRlIGNsYXNzIE15SW50ZiBpbXBsZW1lbnRzIEludGYgeworICAgICAgICBwdWJsaWMgdm9pZCBtZXRob2QxICgpIHsKKyAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiMSIpOworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIHZvaWQgbWV0aG9kMigpIHsKKyAgICAgICAgICAgIEEudGhpcy5tZXRob2QyKCk7CisgICAgICAgIH0KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2luaGVyaXRhbmNlVG9EZWxlZ2F0aW9uL2ludGVyZmFjZUltcGxpY2l0SW1wbGVtZW50YXRpb24vYWZ0ZXIvQVN1cGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5oZXJpdGFuY2VUb0RlbGVnYXRpb24vaW50ZXJmYWNlSW1wbGljaXRJbXBsZW1lbnRhdGlvbi9hZnRlci9BU3VwZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZjI0NWI3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2luaGVyaXRhbmNlVG9EZWxlZ2F0aW9uL2ludGVyZmFjZUltcGxpY2l0SW1wbGVtZW50YXRpb24vYWZ0ZXIvQVN1cGVyLmphdmEKQEAgLTAsMCArMSw1IEBACitwdWJsaWMgY2xhc3MgQVN1cGVyIHsKKyAgICBwdWJsaWMgdm9pZCBtZXRob2QyICgpIHsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCIyIik7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmhlcml0YW5jZVRvRGVsZWdhdGlvbi9pbnRlcmZhY2VJbXBsaWNpdEltcGxlbWVudGF0aW9uL2FmdGVyL0ludGYuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmhlcml0YW5jZVRvRGVsZWdhdGlvbi9pbnRlcmZhY2VJbXBsaWNpdEltcGxlbWVudGF0aW9uL2FmdGVyL0ludGYuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZTgzMjJmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2luaGVyaXRhbmNlVG9EZWxlZ2F0aW9uL2ludGVyZmFjZUltcGxpY2l0SW1wbGVtZW50YXRpb24vYWZ0ZXIvSW50Zi5qYXZhCkBAIC0wLDAgKzEsNCBAQAorcHVibGljIGludGVyZmFjZSBJbnRmIHsKKyAgICB2b2lkIG1ldGhvZDEoKTsKKyAgICB2b2lkIG1ldGhvZDIoKTsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5oZXJpdGFuY2VUb0RlbGVnYXRpb24vaW50ZXJmYWNlSW1wbGljaXRJbXBsZW1lbnRhdGlvbi9hZnRlci9Vc2FnZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2luaGVyaXRhbmNlVG9EZWxlZ2F0aW9uL2ludGVyZmFjZUltcGxpY2l0SW1wbGVtZW50YXRpb24vYWZ0ZXIvVXNhZ2UuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZGI4NDU5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2luaGVyaXRhbmNlVG9EZWxlZ2F0aW9uL2ludGVyZmFjZUltcGxpY2l0SW1wbGVtZW50YXRpb24vYWZ0ZXIvVXNhZ2UuamF2YQpAQCAtMCwwICsxLDEyIEBACitwdWJsaWMgY2xhc3MgVXNhZ2UgeworICAgIEEgYSA9IG5ldyBBKCk7CisKKyAgICBwdWJsaWMgdm9pZCB1c2FnZSgpIHsKKyAgICAgICAgYS5nZXRNeURlbGVnYXRlKCkubWV0aG9kMSgpOworICAgICAgICBhLm1ldGhvZDIoKTsKKyAgICAgICAgdXNlKGEuZ2V0TXlEZWxlZ2F0ZSgpKTsKKyAgICB9CisKKyAgICBwcml2YXRlIHZvaWQgdXNlKEludGYgaSkgeworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5oZXJpdGFuY2VUb0RlbGVnYXRpb24vaW50ZXJmYWNlSW1wbGljaXRJbXBsZW1lbnRhdGlvbi9iZWZvcmUvQS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2luaGVyaXRhbmNlVG9EZWxlZ2F0aW9uL2ludGVyZmFjZUltcGxpY2l0SW1wbGVtZW50YXRpb24vYmVmb3JlL0EuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNzJhY2M3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2luaGVyaXRhbmNlVG9EZWxlZ2F0aW9uL2ludGVyZmFjZUltcGxpY2l0SW1wbGVtZW50YXRpb24vYmVmb3JlL0EuamF2YQpAQCAtMCwwICsxLDUgQEAKK3B1YmxpYyBjbGFzcyBBIGV4dGVuZHMgQVN1cGVyIGltcGxlbWVudHMgSW50ZiB7CisgICAgcHVibGljIHZvaWQgbWV0aG9kMSAoKSB7CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiMSIpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5oZXJpdGFuY2VUb0RlbGVnYXRpb24vaW50ZXJmYWNlSW1wbGljaXRJbXBsZW1lbnRhdGlvbi9iZWZvcmUvQVN1cGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5oZXJpdGFuY2VUb0RlbGVnYXRpb24vaW50ZXJmYWNlSW1wbGljaXRJbXBsZW1lbnRhdGlvbi9iZWZvcmUvQVN1cGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWYyNDViNwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmhlcml0YW5jZVRvRGVsZWdhdGlvbi9pbnRlcmZhY2VJbXBsaWNpdEltcGxlbWVudGF0aW9uL2JlZm9yZS9BU3VwZXIuamF2YQpAQCAtMCwwICsxLDUgQEAKK3B1YmxpYyBjbGFzcyBBU3VwZXIgeworICAgIHB1YmxpYyB2b2lkIG1ldGhvZDIgKCkgeworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIjIiKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2luaGVyaXRhbmNlVG9EZWxlZ2F0aW9uL2ludGVyZmFjZUltcGxpY2l0SW1wbGVtZW50YXRpb24vYmVmb3JlL0ludGYuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmhlcml0YW5jZVRvRGVsZWdhdGlvbi9pbnRlcmZhY2VJbXBsaWNpdEltcGxlbWVudGF0aW9uL2JlZm9yZS9JbnRmLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmU4MzIyZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmhlcml0YW5jZVRvRGVsZWdhdGlvbi9pbnRlcmZhY2VJbXBsaWNpdEltcGxlbWVudGF0aW9uL2JlZm9yZS9JbnRmLmphdmEKQEAgLTAsMCArMSw0IEBACitwdWJsaWMgaW50ZXJmYWNlIEludGYgeworICAgIHZvaWQgbWV0aG9kMSgpOworICAgIHZvaWQgbWV0aG9kMigpOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmhlcml0YW5jZVRvRGVsZWdhdGlvbi9pbnRlcmZhY2VJbXBsaWNpdEltcGxlbWVudGF0aW9uL2JlZm9yZS9Vc2FnZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2luaGVyaXRhbmNlVG9EZWxlZ2F0aW9uL2ludGVyZmFjZUltcGxpY2l0SW1wbGVtZW50YXRpb24vYmVmb3JlL1VzYWdlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjM2N2YyNwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmhlcml0YW5jZVRvRGVsZWdhdGlvbi9pbnRlcmZhY2VJbXBsaWNpdEltcGxlbWVudGF0aW9uL2JlZm9yZS9Vc2FnZS5qYXZhCkBAIC0wLDAgKzEsMTIgQEAKK3B1YmxpYyBjbGFzcyBVc2FnZSB7CisgICAgQSBhID0gbmV3IEEoKTsKKworICAgIHB1YmxpYyB2b2lkIHVzYWdlKCkgeworICAgICAgICBhLm1ldGhvZDEoKTsKKyAgICAgICAgYS5tZXRob2QyKCk7CisgICAgICAgIHVzZShhKTsKKyAgICB9CisKKyAgICBwcml2YXRlIHZvaWQgdXNlKEludGYgaSkgeworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5oZXJpdGFuY2VUb0RlbGVnYXRpb24vaW50ZXJmYWNlcy9hZnRlci9BLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5oZXJpdGFuY2VUb0RlbGVnYXRpb24vaW50ZXJmYWNlcy9hZnRlci9BLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGE2MGNiOQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmhlcml0YW5jZVRvRGVsZWdhdGlvbi9pbnRlcmZhY2VzL2FmdGVyL0EuamF2YQpAQCAtMCwwICsxLDExIEBACitwdWJsaWMgY2xhc3MgQSBpbXBsZW1lbnRzIEkgeworICAgIHByaXZhdGUgZmluYWwgQmFzZSBteURlbGVnYXRlID0gbmV3IEJhc2UoKTsKKworICAgIHB1YmxpYyBCYXNlIGdldE15RGVsZWdhdGUoKSB7CisgICAgICAgIHJldHVybiBteURlbGVnYXRlOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIG1ldGhvZEZyb21JKCkgeworICAgICAgICBteURlbGVnYXRlLm1ldGhvZEZyb21JKCk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmhlcml0YW5jZVRvRGVsZWdhdGlvbi9pbnRlcmZhY2VzL2FmdGVyL0Jhc2UuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmhlcml0YW5jZVRvRGVsZWdhdGlvbi9pbnRlcmZhY2VzL2FmdGVyL0Jhc2UuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YTVlMDg0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2luaGVyaXRhbmNlVG9EZWxlZ2F0aW9uL2ludGVyZmFjZXMvYWZ0ZXIvQmFzZS5qYXZhCkBAIC0wLDAgKzEsNyBAQAorcHVibGljIGNsYXNzIEJhc2UgaW1wbGVtZW50cyBJLCBKIHsKKyAgICBwdWJsaWMgdm9pZCBtZXRob2RGcm9tSSgpIHsKKyAgICB9CisgICAKKyAgICBwdWJsaWMgdm9pZCBtZXRob2RGcm9tSigpIHsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2luaGVyaXRhbmNlVG9EZWxlZ2F0aW9uL2ludGVyZmFjZXMvYWZ0ZXIvSS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2luaGVyaXRhbmNlVG9EZWxlZ2F0aW9uL2ludGVyZmFjZXMvYWZ0ZXIvSS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAwNmRjNTIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5oZXJpdGFuY2VUb0RlbGVnYXRpb24vaW50ZXJmYWNlcy9hZnRlci9JLmphdmEKQEAgLTAsMCArMSwzIEBACitwdWJsaWMgaW50ZXJmYWNlIEkgeworICAgIHZvaWQgbWV0aG9kRnJvbUkoKTsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5oZXJpdGFuY2VUb0RlbGVnYXRpb24vaW50ZXJmYWNlcy9hZnRlci9KLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5oZXJpdGFuY2VUb0RlbGVnYXRpb24vaW50ZXJmYWNlcy9hZnRlci9KLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWZkMTlkNgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmhlcml0YW5jZVRvRGVsZWdhdGlvbi9pbnRlcmZhY2VzL2FmdGVyL0ouamF2YQpAQCAtMCwwICsxLDMgQEAKK3B1YmxpYyBpbnRlcmZhY2UgSiB7CisgICAgdm9pZCBtZXRob2RGcm9tSigpOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmhlcml0YW5jZVRvRGVsZWdhdGlvbi9pbnRlcmZhY2VzL2FmdGVyL1VzYWdlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5oZXJpdGFuY2VUb0RlbGVnYXRpb24vaW50ZXJmYWNlcy9hZnRlci9Vc2FnZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAxOWYzODZhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2luaGVyaXRhbmNlVG9EZWxlZ2F0aW9uL2ludGVyZmFjZXMvYWZ0ZXIvVXNhZ2UuamF2YQpAQCAtMCwwICsxLDIzIEBACitjbGFzcyBVc2FnZSB7CisgICAgcHJpdmF0ZSBBIG15QSA9IG5ldyBBKCk7CisgICAgcHVibGljIHZvaWQgbWV0aG9kRXhwZWN0aW5nSShJIGkpIHsKKyAgICAgICAgaS5tZXRob2RGcm9tSSgpOworICAgIH0KKworICAgIHB1YmxpYyBKIG1ldGhvZFJldHVybmluZ0ooKSB7CisgICAgICAgIHJldHVybiBteUEuZ2V0TXlEZWxlZ2F0ZSgpOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIG1ldGhvZEV4cGVjdGluZ0ooSiBqKSB7CisgICAgICAgIGoubWV0aG9kRnJvbUooKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBtYWluKCkgeworICAgICAgICBBIGEgPSBuZXcgQSgpOworICAgICAgICBhLm1ldGhvZEZyb21JKCk7CisgICAgICAgIGEuZ2V0TXlEZWxlZ2F0ZSgpLm1ldGhvZEZyb21KKCk7CisgICAgICAgIG1ldGhvZEV4cGVjdGluZ0koYSk7CisgICAgICAgIG1ldGhvZEV4cGVjdGluZ0ooYS5nZXRNeURlbGVnYXRlKCkpOworICAgICAgICBtZXRob2RFeHBlY3RpbmdKKG15QS5nZXRNeURlbGVnYXRlKCkpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5oZXJpdGFuY2VUb0RlbGVnYXRpb24vaW50ZXJmYWNlcy9iZWZvcmUvQS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2luaGVyaXRhbmNlVG9EZWxlZ2F0aW9uL2ludGVyZmFjZXMvYmVmb3JlL0EuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMzFjZmFiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2luaGVyaXRhbmNlVG9EZWxlZ2F0aW9uL2ludGVyZmFjZXMvYmVmb3JlL0EuamF2YQpAQCAtMCwwICsxLDIgQEAKK3B1YmxpYyBjbGFzcyBBIGV4dGVuZHMgQmFzZSB7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2luaGVyaXRhbmNlVG9EZWxlZ2F0aW9uL2ludGVyZmFjZXMvYmVmb3JlL0Jhc2UuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmhlcml0YW5jZVRvRGVsZWdhdGlvbi9pbnRlcmZhY2VzL2JlZm9yZS9CYXNlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmE1ZTA4NAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmhlcml0YW5jZVRvRGVsZWdhdGlvbi9pbnRlcmZhY2VzL2JlZm9yZS9CYXNlLmphdmEKQEAgLTAsMCArMSw3IEBACitwdWJsaWMgY2xhc3MgQmFzZSBpbXBsZW1lbnRzIEksIEogeworICAgIHB1YmxpYyB2b2lkIG1ldGhvZEZyb21JKCkgeworICAgIH0KKyAgIAorICAgIHB1YmxpYyB2b2lkIG1ldGhvZEZyb21KKCkgeworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5oZXJpdGFuY2VUb0RlbGVnYXRpb24vaW50ZXJmYWNlcy9iZWZvcmUvSS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2luaGVyaXRhbmNlVG9EZWxlZ2F0aW9uL2ludGVyZmFjZXMvYmVmb3JlL0kuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMDZkYzUyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2luaGVyaXRhbmNlVG9EZWxlZ2F0aW9uL2ludGVyZmFjZXMvYmVmb3JlL0kuamF2YQpAQCAtMCwwICsxLDMgQEAKK3B1YmxpYyBpbnRlcmZhY2UgSSB7CisgICAgdm9pZCBtZXRob2RGcm9tSSgpOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmhlcml0YW5jZVRvRGVsZWdhdGlvbi9pbnRlcmZhY2VzL2JlZm9yZS9KLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5oZXJpdGFuY2VUb0RlbGVnYXRpb24vaW50ZXJmYWNlcy9iZWZvcmUvSi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVmZDE5ZDYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5oZXJpdGFuY2VUb0RlbGVnYXRpb24vaW50ZXJmYWNlcy9iZWZvcmUvSi5qYXZhCkBAIC0wLDAgKzEsMyBAQAorcHVibGljIGludGVyZmFjZSBKIHsKKyAgICB2b2lkIG1ldGhvZEZyb21KKCk7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2luaGVyaXRhbmNlVG9EZWxlZ2F0aW9uL2ludGVyZmFjZXMvYmVmb3JlL1VzYWdlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5oZXJpdGFuY2VUb0RlbGVnYXRpb24vaW50ZXJmYWNlcy9iZWZvcmUvVXNhZ2UuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNTM2YjM0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2luaGVyaXRhbmNlVG9EZWxlZ2F0aW9uL2ludGVyZmFjZXMvYmVmb3JlL1VzYWdlLmphdmEKQEAgLTAsMCArMSwyMyBAQAorY2xhc3MgVXNhZ2UgeworICAgIHByaXZhdGUgQSBteUEgPSBuZXcgQSgpOworICAgIHB1YmxpYyB2b2lkIG1ldGhvZEV4cGVjdGluZ0koSSBpKSB7CisgICAgICAgIGkubWV0aG9kRnJvbUkoKTsKKyAgICB9CisKKyAgICBwdWJsaWMgSiBtZXRob2RSZXR1cm5pbmdKKCkgeworICAgICAgICByZXR1cm4gbXlBOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIG1ldGhvZEV4cGVjdGluZ0ooSiBqKSB7CisgICAgICAgIGoubWV0aG9kRnJvbUooKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBtYWluKCkgeworICAgICAgICBBIGEgPSBuZXcgQSgpOworICAgICAgICBhLm1ldGhvZEZyb21JKCk7CisgICAgICAgIGEubWV0aG9kRnJvbUooKTsKKyAgICAgICAgbWV0aG9kRXhwZWN0aW5nSShhKTsKKyAgICAgICAgbWV0aG9kRXhwZWN0aW5nSihhKTsKKyAgICAgICAgbWV0aG9kRXhwZWN0aW5nSihteUEpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5oZXJpdGFuY2VUb0RlbGVnYXRpb24vbXVsdGlwbGVJbnRlcmZhY2VEZWxlZ2F0aW9uL2FmdGVyL0EuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmhlcml0YW5jZVRvRGVsZWdhdGlvbi9tdWx0aXBsZUludGVyZmFjZURlbGVnYXRpb24vYWZ0ZXIvQS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY5ZmQ1ZjQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5oZXJpdGFuY2VUb0RlbGVnYXRpb24vbXVsdGlwbGVJbnRlcmZhY2VEZWxlZ2F0aW9uL2FmdGVyL0EuamF2YQpAQCAtMCwwICsxLDEzIEBACitwdWJsaWMgY2xhc3MgQSBpbXBsZW1lbnRzIEludGYgeworICAgIHB1YmxpYyBmaW5hbCBNeUludGYgbXlEZWxlZ2F0ZSA9IG5ldyBNeUludGYoKTsKKworICAgIHB1YmxpYyB2b2lkIG1ldGhvZDEoKSB7CisgICAgICAgIG15RGVsZWdhdGUubWV0aG9kMigpOworICAgIH0KKworICAgIHByaXZhdGUgY2xhc3MgTXlJbnRmIGltcGxlbWVudHMgSW50ZjIgeworICAgICAgICBwdWJsaWMgdm9pZCBtZXRob2QyICgpIHsKKyAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiMiIpOworICAgICAgICB9CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmhlcml0YW5jZVRvRGVsZWdhdGlvbi9tdWx0aXBsZUludGVyZmFjZURlbGVnYXRpb24vYWZ0ZXIvSW50Zi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2luaGVyaXRhbmNlVG9EZWxlZ2F0aW9uL211bHRpcGxlSW50ZXJmYWNlRGVsZWdhdGlvbi9hZnRlci9JbnRmLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTJjNjEwNAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmhlcml0YW5jZVRvRGVsZWdhdGlvbi9tdWx0aXBsZUludGVyZmFjZURlbGVnYXRpb24vYWZ0ZXIvSW50Zi5qYXZhCkBAIC0wLDAgKzEsMyBAQAorcHVibGljIGludGVyZmFjZSBJbnRmIHsKKyAgICB2b2lkIG1ldGhvZDEoKTsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5oZXJpdGFuY2VUb0RlbGVnYXRpb24vbXVsdGlwbGVJbnRlcmZhY2VEZWxlZ2F0aW9uL2FmdGVyL0ludGYyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5oZXJpdGFuY2VUb0RlbGVnYXRpb24vbXVsdGlwbGVJbnRlcmZhY2VEZWxlZ2F0aW9uL2FmdGVyL0ludGYyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzBiZTk4NgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmhlcml0YW5jZVRvRGVsZWdhdGlvbi9tdWx0aXBsZUludGVyZmFjZURlbGVnYXRpb24vYWZ0ZXIvSW50ZjIuamF2YQpAQCAtMCwwICsxLDMgQEAKK3B1YmxpYyBpbnRlcmZhY2UgSW50ZjIgeworICAgIHZvaWQgbWV0aG9kMigpOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmhlcml0YW5jZVRvRGVsZWdhdGlvbi9tdWx0aXBsZUludGVyZmFjZURlbGVnYXRpb24vYmVmb3JlL0EuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmhlcml0YW5jZVRvRGVsZWdhdGlvbi9tdWx0aXBsZUludGVyZmFjZURlbGVnYXRpb24vYmVmb3JlL0EuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMzFiNjk5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2luaGVyaXRhbmNlVG9EZWxlZ2F0aW9uL211bHRpcGxlSW50ZXJmYWNlRGVsZWdhdGlvbi9iZWZvcmUvQS5qYXZhCkBAIC0wLDAgKzEsOSBAQAorcHVibGljIGNsYXNzIEEgaW1wbGVtZW50cyBJbnRmLCBJbnRmMiB7CisgICAgcHVibGljIHZvaWQgbWV0aG9kMSgpIHsKKyAgICAgICAgbWV0aG9kMigpOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIG1ldGhvZDIgKCkgeworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIjIiKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2luaGVyaXRhbmNlVG9EZWxlZ2F0aW9uL211bHRpcGxlSW50ZXJmYWNlRGVsZWdhdGlvbi9iZWZvcmUvSW50Zi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2luaGVyaXRhbmNlVG9EZWxlZ2F0aW9uL211bHRpcGxlSW50ZXJmYWNlRGVsZWdhdGlvbi9iZWZvcmUvSW50Zi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEyYzYxMDQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5oZXJpdGFuY2VUb0RlbGVnYXRpb24vbXVsdGlwbGVJbnRlcmZhY2VEZWxlZ2F0aW9uL2JlZm9yZS9JbnRmLmphdmEKQEAgLTAsMCArMSwzIEBACitwdWJsaWMgaW50ZXJmYWNlIEludGYgeworICAgIHZvaWQgbWV0aG9kMSgpOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmhlcml0YW5jZVRvRGVsZWdhdGlvbi9tdWx0aXBsZUludGVyZmFjZURlbGVnYXRpb24vYmVmb3JlL0ludGYyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5oZXJpdGFuY2VUb0RlbGVnYXRpb24vbXVsdGlwbGVJbnRlcmZhY2VEZWxlZ2F0aW9uL2JlZm9yZS9JbnRmMi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcwYmU5ODYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5oZXJpdGFuY2VUb0RlbGVnYXRpb24vbXVsdGlwbGVJbnRlcmZhY2VEZWxlZ2F0aW9uL2JlZm9yZS9JbnRmMi5qYXZhCkBAIC0wLDAgKzEsMyBAQAorcHVibGljIGludGVyZmFjZSBJbnRmMiB7CisgICAgdm9pZCBtZXRob2QyKCk7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2luaGVyaXRhbmNlVG9EZWxlZ2F0aW9uL292ZXJyaWRlbk1ldGhvZHMvYWZ0ZXIvQS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2luaGVyaXRhbmNlVG9EZWxlZ2F0aW9uL292ZXJyaWRlbk1ldGhvZHMvYWZ0ZXIvQS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNlYWU4N2YKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5oZXJpdGFuY2VUb0RlbGVnYXRpb24vb3ZlcnJpZGVuTWV0aG9kcy9hZnRlci9BLmphdmEKQEAgLTAsMCArMSwyMyBAQAorY2xhc3MgQSB7CisgICAgcHJpdmF0ZSBmaW5hbCBNeUJhc2UgbXlEZWxlZ2F0ZSA9IG5ldyBNeUJhc2UoKTsKKyAgICBpbnQgZmllbGRGcm9tQTsKKworICAgIHB1YmxpYyB2b2lkIGZpcnN0TWV0aG9kRnJvbUJhc2UoKSB7CisgICAgICAgIG15RGVsZWdhdGUuZmlyc3RNZXRob2RGcm9tQmFzZSgpOworICAgIH0KKworICAgIHByaXZhdGUgY2xhc3MgTXlCYXNlIGV4dGVuZHMgQmFzZSB7CisgICAgICAgIHB1YmxpYyB2b2lkIGZpcnN0TWV0aG9kRnJvbUJhc2UoKSB7CisgICAgICAgICAgICBzdXBlci5maXJzdE1ldGhvZEZyb21CYXNlKCk7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgdm9pZCBzZWNvbmRNZXRob2RGcm9tQmFzZSgpIHsKKyAgICAgICAgICAgIGZpZWxkRnJvbUEgPSAyNzsKKyAgICAgICAgICAgIEEudGhpcy5maWVsZEZyb21BKys7CisgICAgICAgIH0KKworICAgICAgICBCYXNlIGdldEluc3RhbmNlKCkgeworICAgICAgICAgICAgcmV0dXJuIHRoaXM7CisgICAgICAgIH0KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2luaGVyaXRhbmNlVG9EZWxlZ2F0aW9uL292ZXJyaWRlbk1ldGhvZHMvYWZ0ZXIvQmFzZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2luaGVyaXRhbmNlVG9EZWxlZ2F0aW9uL292ZXJyaWRlbk1ldGhvZHMvYWZ0ZXIvQmFzZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ1ZDM3YzUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5oZXJpdGFuY2VUb0RlbGVnYXRpb24vb3ZlcnJpZGVuTWV0aG9kcy9hZnRlci9CYXNlLmphdmEKQEAgLTAsMCArMSwxMiBAQAorcHVibGljIGNsYXNzIEJhc2UgaW1wbGVtZW50cyBSdW5uYWJsZSB7CisgICAgdm9pZCBmaXJzdE1ldGhvZEZyb21CYXNlKCkgeworICAgIH0gCisgICAgdm9pZCBzZWNvbmRNZXRob2RGcm9tQmFzZSgpIHsKKyAgICB9CisgICAgQmFzZSBnZXRJbnN0YW5jZSgpIHsKKyAgICAgICAgcmV0dXJuIG51bGw7CisgICAgfQorICAgIHB1YmxpYyB2b2lkIHJ1bigpIHsKKyAgICAgICAgLy8gZG8gbm90aGluZworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5oZXJpdGFuY2VUb0RlbGVnYXRpb24vb3ZlcnJpZGVuTWV0aG9kcy9iZWZvcmUvQS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2luaGVyaXRhbmNlVG9EZWxlZ2F0aW9uL292ZXJyaWRlbk1ldGhvZHMvYmVmb3JlL0EuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MTk4YWNmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2luaGVyaXRhbmNlVG9EZWxlZ2F0aW9uL292ZXJyaWRlbk1ldGhvZHMvYmVmb3JlL0EuamF2YQpAQCAtMCwwICsxLDEzIEBACitjbGFzcyBBIGV4dGVuZHMgQmFzZSB7ICAgIAorICAgIGludCBmaWVsZEZyb21BOworICAgIHB1YmxpYyB2b2lkIGZpcnN0TWV0aG9kRnJvbUJhc2UoKSB7CisgICAgICAgIHN1cGVyLmZpcnN0TWV0aG9kRnJvbUJhc2UoKTsKKyAgICB9CisgICAgcHVibGljIHZvaWQgc2Vjb25kTWV0aG9kRnJvbUJhc2UoKSB7CisgICAgICAgIGZpZWxkRnJvbUEgPSAyNzsKKyAgICAgICAgdGhpcy5maWVsZEZyb21BKys7CisgICAgfQorICAgIEJhc2UgZ2V0SW5zdGFuY2UoKSB7CisgICAgICAgIHJldHVybiB0aGlzOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5oZXJpdGFuY2VUb0RlbGVnYXRpb24vb3ZlcnJpZGVuTWV0aG9kcy9iZWZvcmUvQmFzZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2luaGVyaXRhbmNlVG9EZWxlZ2F0aW9uL292ZXJyaWRlbk1ldGhvZHMvYmVmb3JlL0Jhc2UuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NWQzN2M1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2luaGVyaXRhbmNlVG9EZWxlZ2F0aW9uL292ZXJyaWRlbk1ldGhvZHMvYmVmb3JlL0Jhc2UuamF2YQpAQCAtMCwwICsxLDEyIEBACitwdWJsaWMgY2xhc3MgQmFzZSBpbXBsZW1lbnRzIFJ1bm5hYmxlIHsKKyAgICB2b2lkIGZpcnN0TWV0aG9kRnJvbUJhc2UoKSB7CisgICAgfSAKKyAgICB2b2lkIHNlY29uZE1ldGhvZEZyb21CYXNlKCkgeworICAgIH0KKyAgICBCYXNlIGdldEluc3RhbmNlKCkgeworICAgICAgICByZXR1cm4gbnVsbDsKKyAgICB9CisgICAgcHVibGljIHZvaWQgcnVuKCkgeworICAgICAgICAvLyBkbyBub3RoaW5nCisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmhlcml0YW5jZVRvRGVsZWdhdGlvbi9zY3IyMDU1Ny9hZnRlci94eHgvU0NSMjA1NTcuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmhlcml0YW5jZVRvRGVsZWdhdGlvbi9zY3IyMDU1Ny9hZnRlci94eHgvU0NSMjA1NTcuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZjU4NmNhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2luaGVyaXRhbmNlVG9EZWxlZ2F0aW9uL3NjcjIwNTU3L2FmdGVyL3h4eC9TQ1IyMDU1Ny5qYXZhCkBAIC0wLDAgKzEsNTMyIEBACitwYWNrYWdlIHh4eDsKKworaW1wb3J0IGphdmEuc3FsLio7CitpbXBvcnQgamF2YS51dGlsLkNhbGVuZGFyOworaW1wb3J0IGphdmEudXRpbC5NYXA7CitpbXBvcnQgamF2YS5pby5JbnB1dFN0cmVhbTsKK2ltcG9ydCBqYXZhLmlvLlJlYWRlcjsKK2ltcG9ydCBqYXZhLm1hdGguQmlnRGVjaW1hbDsKK2ltcG9ydCBqYXZhLm5ldC5VUkw7CisKKy8qKgorICogQGF1dGhvciBkc2wKKyAqLworcHVibGljIGNsYXNzIFNDUjIwNTU3IHsKKworICAgIHByaXZhdGUgZmluYWwgTXlSZXN1bHRTZXQgbXlSZXN1bHRTZXQgPSBuZXcgTXlSZXN1bHRTZXQoKTsKKworICAgIHB1YmxpYyBEYXRlIGdldERhdGUoaW50IGNvbHVtbkluZGV4KSB0aHJvd3MgU1FMRXhjZXB0aW9uIHsKKyAgICAgICAgcmV0dXJuIG15UmVzdWx0U2V0LmdldERhdGUoY29sdW1uSW5kZXgpOworICAgIH0KKworICAgIHB1YmxpYyBEYXRlIGdldERhdGUoU3RyaW5nIGNvbHVtbk5hbWUpIHRocm93cyBTUUxFeGNlcHRpb24geworICAgICAgICByZXR1cm4gbXlSZXN1bHRTZXQuZ2V0RGF0ZShjb2x1bW5OYW1lKTsKKyAgICB9CisKKyAgICBwdWJsaWMgRGF0ZSBnZXREYXRlKGludCBjb2x1bW5JbmRleCwgQ2FsZW5kYXIgY2FsKSB0aHJvd3MgU1FMRXhjZXB0aW9uIHsKKyAgICAgICAgcmV0dXJuIG15UmVzdWx0U2V0LmdldERhdGUoY29sdW1uSW5kZXgsIGNhbCk7CisgICAgfQorCisgICAgcHVibGljIERhdGUgZ2V0RGF0ZShTdHJpbmcgY29sdW1uTmFtZSwgQ2FsZW5kYXIgY2FsKSB0aHJvd3MgU1FMRXhjZXB0aW9uIHsKKyAgICAgICAgcmV0dXJuIG15UmVzdWx0U2V0LmdldERhdGUoY29sdW1uTmFtZSwgY2FsKTsKKyAgICB9CisKKyAgICBwcml2YXRlIGNsYXNzIE15UmVzdWx0U2V0IGltcGxlbWVudHMgUmVzdWx0U2V0IHsKKyAgICAgICAgcHVibGljIHZvaWQgdXBkYXRlTG9uZyhpbnQgY29sdW1uSW5kZXgsIGxvbmcgeCkgdGhyb3dzIFNRTEV4Y2VwdGlvbiB7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgdm9pZCB1cGRhdGVMb25nKFN0cmluZyBjb2x1bW5OYW1lLCBsb25nIHgpIHRocm93cyBTUUxFeGNlcHRpb24geworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIGJvb2xlYW4gZ2V0Qm9vbGVhbihpbnQgY29sdW1uSW5kZXgpIHRocm93cyBTUUxFeGNlcHRpb24geworICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyBib29sZWFuIGdldEJvb2xlYW4oU3RyaW5nIGNvbHVtbk5hbWUpIHRocm93cyBTUUxFeGNlcHRpb24geworICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyBib29sZWFuIHdhc051bGwoKSB0aHJvd3MgU1FMRXhjZXB0aW9uIHsKKyAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgaW50IGdldFJvdygpIHRocm93cyBTUUxFeGNlcHRpb24geworICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIGludCBnZXRDb25jdXJyZW5jeSgpIHRocm93cyBTUUxFeGNlcHRpb24geworICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIGludCBnZXRGZXRjaFNpemUoKSB0aHJvd3MgU1FMRXhjZXB0aW9uIHsKKyAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyBSZWYgZ2V0UmVmKGludCBpKSB0aHJvd3MgU1FMRXhjZXB0aW9uIHsKKyAgICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyBSZWYgZ2V0UmVmKFN0cmluZyBjb2xOYW1lKSB0aHJvd3MgU1FMRXhjZXB0aW9uIHsKKyAgICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyBEYXRlIGdldERhdGUoaW50IGNvbHVtbkluZGV4KSB0aHJvd3MgU1FMRXhjZXB0aW9uIHsKKyAgICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyBEYXRlIGdldERhdGUoU3RyaW5nIGNvbHVtbk5hbWUpIHRocm93cyBTUUxFeGNlcHRpb24geworICAgICAgICAgIHJldHVybiBudWxsOworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIERhdGUgZ2V0RGF0ZShpbnQgY29sdW1uSW5kZXgsIENhbGVuZGFyIGNhbCkgdGhyb3dzIFNRTEV4Y2VwdGlvbiB7CisgICAgICAgICAgcmV0dXJuIG51bGw7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgRGF0ZSBnZXREYXRlKFN0cmluZyBjb2x1bW5OYW1lLCBDYWxlbmRhciBjYWwpIHRocm93cyBTUUxFeGNlcHRpb24geworICAgICAgICAgIHJldHVybiBudWxsOworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIFN0YXRlbWVudCBnZXRTdGF0ZW1lbnQoKSB0aHJvd3MgU1FMRXhjZXB0aW9uIHsKKyAgICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyBib29sZWFuIGlzRmlyc3QoKSB0aHJvd3MgU1FMRXhjZXB0aW9uIHsKKyAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgYm9vbGVhbiBwcmV2aW91cygpIHRocm93cyBTUUxFeGNlcHRpb24geworICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyB2b2lkIHVwZGF0ZUZsb2F0KGludCBjb2x1bW5JbmRleCwgZmxvYXQgeCkgdGhyb3dzIFNRTEV4Y2VwdGlvbiB7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgdm9pZCB1cGRhdGVGbG9hdChTdHJpbmcgY29sdW1uTmFtZSwgZmxvYXQgeCkgdGhyb3dzIFNRTEV4Y2VwdGlvbiB7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgdm9pZCB1cGRhdGVCaW5hcnlTdHJlYW0oaW50IGNvbHVtbkluZGV4LCBJbnB1dFN0cmVhbSB4LCBpbnQgbGVuZ3RoKSB0aHJvd3MgU1FMRXhjZXB0aW9uIHsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyB2b2lkIHVwZGF0ZUJpbmFyeVN0cmVhbShTdHJpbmcgY29sdW1uTmFtZSwgSW5wdXRTdHJlYW0geCwgaW50IGxlbmd0aCkgdGhyb3dzIFNRTEV4Y2VwdGlvbiB7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgdm9pZCB1cGRhdGVSb3coKSB0aHJvd3MgU1FMRXhjZXB0aW9uIHsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyBsb25nIGdldExvbmcoaW50IGNvbHVtbkluZGV4KSB0aHJvd3MgU1FMRXhjZXB0aW9uIHsKKyAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyBsb25nIGdldExvbmcoU3RyaW5nIGNvbHVtbk5hbWUpIHRocm93cyBTUUxFeGNlcHRpb24geworICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIHZvaWQgdXBkYXRlUmVmKGludCBjb2x1bW5JbmRleCwgUmVmIHgpIHRocm93cyBTUUxFeGNlcHRpb24geworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIHZvaWQgdXBkYXRlUmVmKFN0cmluZyBjb2x1bW5OYW1lLCBSZWYgeCkgdGhyb3dzIFNRTEV4Y2VwdGlvbiB7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgdm9pZCB1cGRhdGVCeXRlKGludCBjb2x1bW5JbmRleCwgYnl0ZSB4KSB0aHJvd3MgU1FMRXhjZXB0aW9uIHsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyB2b2lkIHVwZGF0ZUJ5dGUoU3RyaW5nIGNvbHVtbk5hbWUsIGJ5dGUgeCkgdGhyb3dzIFNRTEV4Y2VwdGlvbiB7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgdm9pZCBjYW5jZWxSb3dVcGRhdGVzKCkgdGhyb3dzIFNRTEV4Y2VwdGlvbiB7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgUmVhZGVyIGdldENoYXJhY3RlclN0cmVhbShpbnQgY29sdW1uSW5kZXgpIHRocm93cyBTUUxFeGNlcHRpb24geworICAgICAgICAgIHJldHVybiBudWxsOworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIFJlYWRlciBnZXRDaGFyYWN0ZXJTdHJlYW0oU3RyaW5nIGNvbHVtbk5hbWUpIHRocm93cyBTUUxFeGNlcHRpb24geworICAgICAgICAgIHJldHVybiBudWxsOworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIGJvb2xlYW4gYWJzb2x1dGUoaW50IHJvdykgdGhyb3dzIFNRTEV4Y2VwdGlvbiB7CisgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIGJvb2xlYW4gZmlyc3QoKSB0aHJvd3MgU1FMRXhjZXB0aW9uIHsKKyAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgdm9pZCB1cGRhdGVBc2NpaVN0cmVhbShpbnQgY29sdW1uSW5kZXgsIElucHV0U3RyZWFtIHgsIGludCBsZW5ndGgpIHRocm93cyBTUUxFeGNlcHRpb24geworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIHZvaWQgdXBkYXRlQXNjaWlTdHJlYW0oU3RyaW5nIGNvbHVtbk5hbWUsIElucHV0U3RyZWFtIHgsIGludCBsZW5ndGgpIHRocm93cyBTUUxFeGNlcHRpb24geworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIHZvaWQgbW92ZVRvSW5zZXJ0Um93KCkgdGhyb3dzIFNRTEV4Y2VwdGlvbiB7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgU1FMV2FybmluZyBnZXRXYXJuaW5ncygpIHRocm93cyBTUUxFeGNlcHRpb24geworICAgICAgICAgIHJldHVybiBudWxsOworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIHZvaWQgdXBkYXRlRGF0ZShpbnQgY29sdW1uSW5kZXgsIERhdGUgeCkgdGhyb3dzIFNRTEV4Y2VwdGlvbiB7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgdm9pZCB1cGRhdGVEYXRlKFN0cmluZyBjb2x1bW5OYW1lLCBEYXRlIHgpIHRocm93cyBTUUxFeGNlcHRpb24geworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIElucHV0U3RyZWFtIGdldEJpbmFyeVN0cmVhbShpbnQgY29sdW1uSW5kZXgpIHRocm93cyBTUUxFeGNlcHRpb24geworICAgICAgICAgIHJldHVybiBudWxsOworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIElucHV0U3RyZWFtIGdldEJpbmFyeVN0cmVhbShTdHJpbmcgY29sdW1uTmFtZSkgdGhyb3dzIFNRTEV4Y2VwdGlvbiB7CisgICAgICAgICAgcmV0dXJuIG51bGw7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgVGltZSBnZXRUaW1lKGludCBjb2x1bW5JbmRleCkgdGhyb3dzIFNRTEV4Y2VwdGlvbiB7CisgICAgICAgICAgcmV0dXJuIG51bGw7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgVGltZSBnZXRUaW1lKFN0cmluZyBjb2x1bW5OYW1lKSB0aHJvd3MgU1FMRXhjZXB0aW9uIHsKKyAgICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyBUaW1lIGdldFRpbWUoaW50IGNvbHVtbkluZGV4LCBDYWxlbmRhciBjYWwpIHRocm93cyBTUUxFeGNlcHRpb24geworICAgICAgICAgIHJldHVybiBudWxsOworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIFRpbWUgZ2V0VGltZShTdHJpbmcgY29sdW1uTmFtZSwgQ2FsZW5kYXIgY2FsKSB0aHJvd3MgU1FMRXhjZXB0aW9uIHsKKyAgICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyBTdHJpbmcgZ2V0Q3Vyc29yTmFtZSgpIHRocm93cyBTUUxFeGNlcHRpb24geworICAgICAgICAgIHJldHVybiBudWxsOworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIHZvaWQgdXBkYXRlQnl0ZXMoaW50IGNvbHVtbkluZGV4LCBieXRlIHhbXSkgdGhyb3dzIFNRTEV4Y2VwdGlvbiB7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgdm9pZCB1cGRhdGVCeXRlcyhTdHJpbmcgY29sdW1uTmFtZSwgYnl0ZSB4W10pIHRocm93cyBTUUxFeGNlcHRpb24geworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIGJvb2xlYW4gbGFzdCgpIHRocm93cyBTUUxFeGNlcHRpb24geworICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyBUaW1lc3RhbXAgZ2V0VGltZXN0YW1wKGludCBjb2x1bW5JbmRleCkgdGhyb3dzIFNRTEV4Y2VwdGlvbiB7CisgICAgICAgICAgcmV0dXJuIG51bGw7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgVGltZXN0YW1wIGdldFRpbWVzdGFtcChTdHJpbmcgY29sdW1uTmFtZSkgdGhyb3dzIFNRTEV4Y2VwdGlvbiB7CisgICAgICAgICAgcmV0dXJuIG51bGw7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgVGltZXN0YW1wIGdldFRpbWVzdGFtcChpbnQgY29sdW1uSW5kZXgsIENhbGVuZGFyIGNhbCkgdGhyb3dzIFNRTEV4Y2VwdGlvbiB7CisgICAgICAgICAgcmV0dXJuIG51bGw7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgVGltZXN0YW1wIGdldFRpbWVzdGFtcChTdHJpbmcgY29sdW1uTmFtZSwgQ2FsZW5kYXIgY2FsKSB0aHJvd3MgU1FMRXhjZXB0aW9uIHsKKyAgICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyB2b2lkIHVwZGF0ZUJvb2xlYW4oaW50IGNvbHVtbkluZGV4LCBib29sZWFuIHgpIHRocm93cyBTUUxFeGNlcHRpb24geworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIHZvaWQgdXBkYXRlQm9vbGVhbihTdHJpbmcgY29sdW1uTmFtZSwgYm9vbGVhbiB4KSB0aHJvd3MgU1FMRXhjZXB0aW9uIHsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyB2b2lkIGJlZm9yZUZpcnN0KCkgdGhyb3dzIFNRTEV4Y2VwdGlvbiB7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgaW50IGdldEZldGNoRGlyZWN0aW9uKCkgdGhyb3dzIFNRTEV4Y2VwdGlvbiB7CisgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgdm9pZCB1cGRhdGVEb3VibGUoaW50IGNvbHVtbkluZGV4LCBkb3VibGUgeCkgdGhyb3dzIFNRTEV4Y2VwdGlvbiB7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgdm9pZCB1cGRhdGVEb3VibGUoU3RyaW5nIGNvbHVtbk5hbWUsIGRvdWJsZSB4KSB0aHJvd3MgU1FMRXhjZXB0aW9uIHsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyB2b2lkIHNldEZldGNoRGlyZWN0aW9uKGludCBkaXJlY3Rpb24pIHRocm93cyBTUUxFeGNlcHRpb24geworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIGJvb2xlYW4gcm93RGVsZXRlZCgpIHRocm93cyBTUUxFeGNlcHRpb24geworICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyB2b2lkIG1vdmVUb0N1cnJlbnRSb3coKSB0aHJvd3MgU1FMRXhjZXB0aW9uIHsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyB2b2lkIGluc2VydFJvdygpIHRocm93cyBTUUxFeGNlcHRpb24geworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0QmlnRGVjaW1hbChpbnQgY29sdW1uSW5kZXgpIHRocm93cyBTUUxFeGNlcHRpb24geworICAgICAgICAgIHJldHVybiBudWxsOworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0QmlnRGVjaW1hbChpbnQgY29sdW1uSW5kZXgsIGludCBzY2FsZSkgdGhyb3dzIFNRTEV4Y2VwdGlvbiB7CisgICAgICAgICAgcmV0dXJuIG51bGw7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgQmlnRGVjaW1hbCBnZXRCaWdEZWNpbWFsKFN0cmluZyBjb2x1bW5OYW1lKSB0aHJvd3MgU1FMRXhjZXB0aW9uIHsKKyAgICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyBCaWdEZWNpbWFsIGdldEJpZ0RlY2ltYWwoU3RyaW5nIGNvbHVtbk5hbWUsIGludCBzY2FsZSkgdGhyb3dzIFNRTEV4Y2VwdGlvbiB7CisgICAgICAgICAgcmV0dXJuIG51bGw7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgVVJMIGdldFVSTChpbnQgY29sdW1uSW5kZXgpIHRocm93cyBTUUxFeGNlcHRpb24geworICAgICAgICAgIHJldHVybiBudWxsOworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIFVSTCBnZXRVUkwoU3RyaW5nIGNvbHVtbk5hbWUpIHRocm93cyBTUUxFeGNlcHRpb24geworICAgICAgICAgIHJldHVybiBudWxsOworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIGJvb2xlYW4gaXNBZnRlckxhc3QoKSB0aHJvd3MgU1FMRXhjZXB0aW9uIHsKKyAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgc2hvcnQgZ2V0U2hvcnQoaW50IGNvbHVtbkluZGV4KSB0aHJvd3MgU1FMRXhjZXB0aW9uIHsKKyAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyBzaG9ydCBnZXRTaG9ydChTdHJpbmcgY29sdW1uTmFtZSkgdGhyb3dzIFNRTEV4Y2VwdGlvbiB7CisgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgdm9pZCB1cGRhdGVJbnQoaW50IGNvbHVtbkluZGV4LCBpbnQgeCkgdGhyb3dzIFNRTEV4Y2VwdGlvbiB7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgdm9pZCB1cGRhdGVJbnQoU3RyaW5nIGNvbHVtbk5hbWUsIGludCB4KSB0aHJvd3MgU1FMRXhjZXB0aW9uIHsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyB2b2lkIGNsZWFyV2FybmluZ3MoKSB0aHJvd3MgU1FMRXhjZXB0aW9uIHsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyB2b2lkIHVwZGF0ZUNoYXJhY3RlclN0cmVhbShpbnQgY29sdW1uSW5kZXgsIFJlYWRlciB4LCBpbnQgbGVuZ3RoKSB0aHJvd3MgU1FMRXhjZXB0aW9uIHsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyB2b2lkIHVwZGF0ZUNoYXJhY3RlclN0cmVhbShTdHJpbmcgY29sdW1uTmFtZSwgUmVhZGVyIHJlYWRlciwgaW50IGxlbmd0aCkgdGhyb3dzIFNRTEV4Y2VwdGlvbiB7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgQmxvYiBnZXRCbG9iKGludCBpKSB0aHJvd3MgU1FMRXhjZXB0aW9uIHsKKyAgICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyBCbG9iIGdldEJsb2IoU3RyaW5nIGNvbE5hbWUpIHRocm93cyBTUUxFeGNlcHRpb24geworICAgICAgICAgIHJldHVybiBudWxsOworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIHZvaWQgcmVmcmVzaFJvdygpIHRocm93cyBTUUxFeGNlcHRpb24geworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIHZvaWQgdXBkYXRlVGltZShpbnQgY29sdW1uSW5kZXgsIFRpbWUgeCkgdGhyb3dzIFNRTEV4Y2VwdGlvbiB7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgdm9pZCB1cGRhdGVUaW1lKFN0cmluZyBjb2x1bW5OYW1lLCBUaW1lIHgpIHRocm93cyBTUUxFeGNlcHRpb24geworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIHZvaWQgdXBkYXRlQXJyYXkoaW50IGNvbHVtbkluZGV4LCBBcnJheSB4KSB0aHJvd3MgU1FMRXhjZXB0aW9uIHsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyB2b2lkIHVwZGF0ZUFycmF5KFN0cmluZyBjb2x1bW5OYW1lLCBBcnJheSB4KSB0aHJvd3MgU1FMRXhjZXB0aW9uIHsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyB2b2lkIHVwZGF0ZU9iamVjdChpbnQgY29sdW1uSW5kZXgsIE9iamVjdCB4KSB0aHJvd3MgU1FMRXhjZXB0aW9uIHsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyB2b2lkIHVwZGF0ZU9iamVjdChpbnQgY29sdW1uSW5kZXgsIE9iamVjdCB4LCBpbnQgc2NhbGUpIHRocm93cyBTUUxFeGNlcHRpb24geworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIHZvaWQgdXBkYXRlT2JqZWN0KFN0cmluZyBjb2x1bW5OYW1lLCBPYmplY3QgeCkgdGhyb3dzIFNRTEV4Y2VwdGlvbiB7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgdm9pZCB1cGRhdGVPYmplY3QoU3RyaW5nIGNvbHVtbk5hbWUsIE9iamVjdCB4LCBpbnQgc2NhbGUpIHRocm93cyBTUUxFeGNlcHRpb24geworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIHZvaWQgdXBkYXRlTnVsbChpbnQgY29sdW1uSW5kZXgpIHRocm93cyBTUUxFeGNlcHRpb24geworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIHZvaWQgdXBkYXRlTnVsbChTdHJpbmcgY29sdW1uTmFtZSkgdGhyb3dzIFNRTEV4Y2VwdGlvbiB7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgdm9pZCBjbG9zZSgpIHRocm93cyBTUUxFeGNlcHRpb24geworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIGJvb2xlYW4gcm93SW5zZXJ0ZWQoKSB0aHJvd3MgU1FMRXhjZXB0aW9uIHsKKyAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgQ2xvYiBnZXRDbG9iKGludCBpKSB0aHJvd3MgU1FMRXhjZXB0aW9uIHsKKyAgICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyBDbG9iIGdldENsb2IoU3RyaW5nIGNvbE5hbWUpIHRocm93cyBTUUxFeGNlcHRpb24geworICAgICAgICAgIHJldHVybiBudWxsOworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIHZvaWQgdXBkYXRlQmlnRGVjaW1hbChpbnQgY29sdW1uSW5kZXgsIEJpZ0RlY2ltYWwgeCkgdGhyb3dzIFNRTEV4Y2VwdGlvbiB7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgdm9pZCB1cGRhdGVCaWdEZWNpbWFsKFN0cmluZyBjb2x1bW5OYW1lLCBCaWdEZWNpbWFsIHgpIHRocm93cyBTUUxFeGNlcHRpb24geworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIGludCBnZXRUeXBlKCkgdGhyb3dzIFNRTEV4Y2VwdGlvbiB7CisgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgYm9vbGVhbiBuZXh0KCkgdGhyb3dzIFNRTEV4Y2VwdGlvbiB7CisgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIGludCBnZXRJbnQoaW50IGNvbHVtbkluZGV4KSB0aHJvd3MgU1FMRXhjZXB0aW9uIHsKKyAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyBpbnQgZ2V0SW50KFN0cmluZyBjb2x1bW5OYW1lKSB0aHJvd3MgU1FMRXhjZXB0aW9uIHsKKyAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyB2b2lkIHVwZGF0ZUJsb2IoaW50IGNvbHVtbkluZGV4LCBCbG9iIHgpIHRocm93cyBTUUxFeGNlcHRpb24geworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIHZvaWQgdXBkYXRlQmxvYihTdHJpbmcgY29sdW1uTmFtZSwgQmxvYiB4KSB0aHJvd3MgU1FMRXhjZXB0aW9uIHsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyBSZXN1bHRTZXRNZXRhRGF0YSBnZXRNZXRhRGF0YSgpIHRocm93cyBTUUxFeGNlcHRpb24geworICAgICAgICAgIHJldHVybiBudWxsOworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIGJvb2xlYW4gcm93VXBkYXRlZCgpIHRocm93cyBTUUxFeGNlcHRpb24geworICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyBBcnJheSBnZXRBcnJheShpbnQgaSkgdGhyb3dzIFNRTEV4Y2VwdGlvbiB7CisgICAgICAgICAgcmV0dXJuIG51bGw7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgQXJyYXkgZ2V0QXJyYXkoU3RyaW5nIGNvbE5hbWUpIHRocm93cyBTUUxFeGNlcHRpb24geworICAgICAgICAgIHJldHVybiBudWxsOworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIGJ5dGUgZ2V0Qnl0ZShpbnQgY29sdW1uSW5kZXgpIHRocm93cyBTUUxFeGNlcHRpb24geworICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIGJ5dGUgZ2V0Qnl0ZShTdHJpbmcgY29sdW1uTmFtZSkgdGhyb3dzIFNRTEV4Y2VwdGlvbiB7CisgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgSW5wdXRTdHJlYW0gZ2V0QXNjaWlTdHJlYW0oaW50IGNvbHVtbkluZGV4KSB0aHJvd3MgU1FMRXhjZXB0aW9uIHsKKyAgICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyBJbnB1dFN0cmVhbSBnZXRBc2NpaVN0cmVhbShTdHJpbmcgY29sdW1uTmFtZSkgdGhyb3dzIFNRTEV4Y2VwdGlvbiB7CisgICAgICAgICAgcmV0dXJuIG51bGw7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgZG91YmxlIGdldERvdWJsZShpbnQgY29sdW1uSW5kZXgpIHRocm93cyBTUUxFeGNlcHRpb24geworICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIGRvdWJsZSBnZXREb3VibGUoU3RyaW5nIGNvbHVtbk5hbWUpIHRocm93cyBTUUxFeGNlcHRpb24geworICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIHZvaWQgdXBkYXRlVGltZXN0YW1wKGludCBjb2x1bW5JbmRleCwgVGltZXN0YW1wIHgpIHRocm93cyBTUUxFeGNlcHRpb24geworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIHZvaWQgdXBkYXRlVGltZXN0YW1wKFN0cmluZyBjb2x1bW5OYW1lLCBUaW1lc3RhbXAgeCkgdGhyb3dzIFNRTEV4Y2VwdGlvbiB7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgdm9pZCB1cGRhdGVDbG9iKGludCBjb2x1bW5JbmRleCwgQ2xvYiB4KSB0aHJvd3MgU1FMRXhjZXB0aW9uIHsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyB2b2lkIHVwZGF0ZUNsb2IoU3RyaW5nIGNvbHVtbk5hbWUsIENsb2IgeCkgdGhyb3dzIFNRTEV4Y2VwdGlvbiB7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgYm9vbGVhbiBpc0JlZm9yZUZpcnN0KCkgdGhyb3dzIFNRTEV4Y2VwdGlvbiB7CisgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIHZvaWQgZGVsZXRlUm93KCkgdGhyb3dzIFNRTEV4Y2VwdGlvbiB7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgdm9pZCBhZnRlckxhc3QoKSB0aHJvd3MgU1FMRXhjZXB0aW9uIHsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyBJbnB1dFN0cmVhbSBnZXRVbmljb2RlU3RyZWFtKGludCBjb2x1bW5JbmRleCkgdGhyb3dzIFNRTEV4Y2VwdGlvbiB7CisgICAgICAgICAgcmV0dXJuIG51bGw7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgSW5wdXRTdHJlYW0gZ2V0VW5pY29kZVN0cmVhbShTdHJpbmcgY29sdW1uTmFtZSkgdGhyb3dzIFNRTEV4Y2VwdGlvbiB7CisgICAgICAgICAgcmV0dXJuIG51bGw7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgYnl0ZVtdIGdldEJ5dGVzKGludCBjb2x1bW5JbmRleCkgdGhyb3dzIFNRTEV4Y2VwdGlvbiB7CisgICAgICAgICAgcmV0dXJuIG5ldyBieXRlWzBdOworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIGJ5dGVbXSBnZXRCeXRlcyhTdHJpbmcgY29sdW1uTmFtZSkgdGhyb3dzIFNRTEV4Y2VwdGlvbiB7CisgICAgICAgICAgcmV0dXJuIG5ldyBieXRlWzBdOworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIHZvaWQgdXBkYXRlU3RyaW5nKGludCBjb2x1bW5JbmRleCwgU3RyaW5nIHgpIHRocm93cyBTUUxFeGNlcHRpb24geworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIHZvaWQgdXBkYXRlU3RyaW5nKFN0cmluZyBjb2x1bW5OYW1lLCBTdHJpbmcgeCkgdGhyb3dzIFNRTEV4Y2VwdGlvbiB7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgZmxvYXQgZ2V0RmxvYXQoaW50IGNvbHVtbkluZGV4KSB0aHJvd3MgU1FMRXhjZXB0aW9uIHsKKyAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyBmbG9hdCBnZXRGbG9hdChTdHJpbmcgY29sdW1uTmFtZSkgdGhyb3dzIFNRTEV4Y2VwdGlvbiB7CisgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgT2JqZWN0IGdldE9iamVjdChpbnQgY29sdW1uSW5kZXgpIHRocm93cyBTUUxFeGNlcHRpb24geworICAgICAgICAgIHJldHVybiBudWxsOworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIE9iamVjdCBnZXRPYmplY3QoU3RyaW5nIGNvbHVtbk5hbWUpIHRocm93cyBTUUxFeGNlcHRpb24geworICAgICAgICAgIHJldHVybiBudWxsOworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIE9iamVjdCBnZXRPYmplY3QoaW50IGksIE1hcCBtYXApIHRocm93cyBTUUxFeGNlcHRpb24geworICAgICAgICAgIHJldHVybiBudWxsOworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIE9iamVjdCBnZXRPYmplY3QoU3RyaW5nIGNvbE5hbWUsIE1hcCBtYXApIHRocm93cyBTUUxFeGNlcHRpb24geworICAgICAgICAgIHJldHVybiBudWxsOworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIHZvaWQgc2V0RmV0Y2hTaXplKGludCByb3dzKSB0aHJvd3MgU1FMRXhjZXB0aW9uIHsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyBib29sZWFuIGlzTGFzdCgpIHRocm93cyBTUUxFeGNlcHRpb24geworICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyB2b2lkIHVwZGF0ZVNob3J0KGludCBjb2x1bW5JbmRleCwgc2hvcnQgeCkgdGhyb3dzIFNRTEV4Y2VwdGlvbiB7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgdm9pZCB1cGRhdGVTaG9ydChTdHJpbmcgY29sdW1uTmFtZSwgc2hvcnQgeCkgdGhyb3dzIFNRTEV4Y2VwdGlvbiB7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgU3RyaW5nIGdldFN0cmluZyhpbnQgY29sdW1uSW5kZXgpIHRocm93cyBTUUxFeGNlcHRpb24geworICAgICAgICAgIHJldHVybiBudWxsOworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIFN0cmluZyBnZXRTdHJpbmcoU3RyaW5nIGNvbHVtbk5hbWUpIHRocm93cyBTUUxFeGNlcHRpb24geworICAgICAgICAgIHJldHVybiBudWxsOworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIGludCBmaW5kQ29sdW1uKFN0cmluZyBjb2x1bW5OYW1lKSB0aHJvd3MgU1FMRXhjZXB0aW9uIHsKKyAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyBib29sZWFuIHJlbGF0aXZlKGludCByb3dzKSB0aHJvd3MgU1FMRXhjZXB0aW9uIHsKKyAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5oZXJpdGFuY2VUb0RlbGVnYXRpb24vc2NyMjA1NTcvYmVmb3JlL3h4eC9TQ1IyMDU1Ny5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2luaGVyaXRhbmNlVG9EZWxlZ2F0aW9uL3NjcjIwNTU3L2JlZm9yZS94eHgvU0NSMjA1NTcuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MjczMjkyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2luaGVyaXRhbmNlVG9EZWxlZ2F0aW9uL3NjcjIwNTU3L2JlZm9yZS94eHgvU0NSMjA1NTcuamF2YQpAQCAtMCwwICsxLDUxMSBAQAorcGFja2FnZSB4eHg7CisKK2ltcG9ydCBqYXZhLnNxbC4qOworaW1wb3J0IGphdmEudXRpbC5DYWxlbmRhcjsKK2ltcG9ydCBqYXZhLnV0aWwuTWFwOworaW1wb3J0IGphdmEuaW8uSW5wdXRTdHJlYW07CitpbXBvcnQgamF2YS5pby5SZWFkZXI7CitpbXBvcnQgamF2YS5tYXRoLkJpZ0RlY2ltYWw7CitpbXBvcnQgamF2YS5uZXQuVVJMOworCisvKioKKyAqIEBhdXRob3IgZHNsCisgKi8KK3B1YmxpYyBjbGFzcyBTQ1IyMDU1NyBpbXBsZW1lbnRzIFJlc3VsdFNldCB7CisgIHB1YmxpYyB2b2lkIHVwZGF0ZUxvbmcoaW50IGNvbHVtbkluZGV4LCBsb25nIHgpIHRocm93cyBTUUxFeGNlcHRpb24geworICB9CisKKyAgcHVibGljIHZvaWQgdXBkYXRlTG9uZyhTdHJpbmcgY29sdW1uTmFtZSwgbG9uZyB4KSB0aHJvd3MgU1FMRXhjZXB0aW9uIHsKKyAgfQorCisgIHB1YmxpYyBib29sZWFuIGdldEJvb2xlYW4oaW50IGNvbHVtbkluZGV4KSB0aHJvd3MgU1FMRXhjZXB0aW9uIHsKKyAgICByZXR1cm4gZmFsc2U7CisgIH0KKworICBwdWJsaWMgYm9vbGVhbiBnZXRCb29sZWFuKFN0cmluZyBjb2x1bW5OYW1lKSB0aHJvd3MgU1FMRXhjZXB0aW9uIHsKKyAgICByZXR1cm4gZmFsc2U7CisgIH0KKworICBwdWJsaWMgYm9vbGVhbiB3YXNOdWxsKCkgdGhyb3dzIFNRTEV4Y2VwdGlvbiB7CisgICAgcmV0dXJuIGZhbHNlOworICB9CisKKyAgcHVibGljIGludCBnZXRSb3coKSB0aHJvd3MgU1FMRXhjZXB0aW9uIHsKKyAgICByZXR1cm4gMDsKKyAgfQorCisgIHB1YmxpYyBpbnQgZ2V0Q29uY3VycmVuY3koKSB0aHJvd3MgU1FMRXhjZXB0aW9uIHsKKyAgICByZXR1cm4gMDsKKyAgfQorCisgIHB1YmxpYyBpbnQgZ2V0RmV0Y2hTaXplKCkgdGhyb3dzIFNRTEV4Y2VwdGlvbiB7CisgICAgcmV0dXJuIDA7CisgIH0KKworICBwdWJsaWMgUmVmIGdldFJlZihpbnQgaSkgdGhyb3dzIFNRTEV4Y2VwdGlvbiB7CisgICAgcmV0dXJuIG51bGw7CisgIH0KKworICBwdWJsaWMgUmVmIGdldFJlZihTdHJpbmcgY29sTmFtZSkgdGhyb3dzIFNRTEV4Y2VwdGlvbiB7CisgICAgcmV0dXJuIG51bGw7CisgIH0KKworICBwdWJsaWMgRGF0ZSBnZXREYXRlKGludCBjb2x1bW5JbmRleCkgdGhyb3dzIFNRTEV4Y2VwdGlvbiB7CisgICAgcmV0dXJuIG51bGw7CisgIH0KKworICBwdWJsaWMgRGF0ZSBnZXREYXRlKFN0cmluZyBjb2x1bW5OYW1lKSB0aHJvd3MgU1FMRXhjZXB0aW9uIHsKKyAgICByZXR1cm4gbnVsbDsKKyAgfQorCisgIHB1YmxpYyBEYXRlIGdldERhdGUoaW50IGNvbHVtbkluZGV4LCBDYWxlbmRhciBjYWwpIHRocm93cyBTUUxFeGNlcHRpb24geworICAgIHJldHVybiBudWxsOworICB9CisKKyAgcHVibGljIERhdGUgZ2V0RGF0ZShTdHJpbmcgY29sdW1uTmFtZSwgQ2FsZW5kYXIgY2FsKSB0aHJvd3MgU1FMRXhjZXB0aW9uIHsKKyAgICByZXR1cm4gbnVsbDsKKyAgfQorCisgIHB1YmxpYyBTdGF0ZW1lbnQgZ2V0U3RhdGVtZW50KCkgdGhyb3dzIFNRTEV4Y2VwdGlvbiB7CisgICAgcmV0dXJuIG51bGw7CisgIH0KKworICBwdWJsaWMgYm9vbGVhbiBpc0ZpcnN0KCkgdGhyb3dzIFNRTEV4Y2VwdGlvbiB7CisgICAgcmV0dXJuIGZhbHNlOworICB9CisKKyAgcHVibGljIGJvb2xlYW4gcHJldmlvdXMoKSB0aHJvd3MgU1FMRXhjZXB0aW9uIHsKKyAgICByZXR1cm4gZmFsc2U7CisgIH0KKworICBwdWJsaWMgdm9pZCB1cGRhdGVGbG9hdChpbnQgY29sdW1uSW5kZXgsIGZsb2F0IHgpIHRocm93cyBTUUxFeGNlcHRpb24geworICB9CisKKyAgcHVibGljIHZvaWQgdXBkYXRlRmxvYXQoU3RyaW5nIGNvbHVtbk5hbWUsIGZsb2F0IHgpIHRocm93cyBTUUxFeGNlcHRpb24geworICB9CisKKyAgcHVibGljIHZvaWQgdXBkYXRlQmluYXJ5U3RyZWFtKGludCBjb2x1bW5JbmRleCwgSW5wdXRTdHJlYW0geCwgaW50IGxlbmd0aCkgdGhyb3dzIFNRTEV4Y2VwdGlvbiB7CisgIH0KKworICBwdWJsaWMgdm9pZCB1cGRhdGVCaW5hcnlTdHJlYW0oU3RyaW5nIGNvbHVtbk5hbWUsIElucHV0U3RyZWFtIHgsIGludCBsZW5ndGgpIHRocm93cyBTUUxFeGNlcHRpb24geworICB9CisKKyAgcHVibGljIHZvaWQgdXBkYXRlUm93KCkgdGhyb3dzIFNRTEV4Y2VwdGlvbiB7CisgIH0KKworICBwdWJsaWMgbG9uZyBnZXRMb25nKGludCBjb2x1bW5JbmRleCkgdGhyb3dzIFNRTEV4Y2VwdGlvbiB7CisgICAgcmV0dXJuIDA7CisgIH0KKworICBwdWJsaWMgbG9uZyBnZXRMb25nKFN0cmluZyBjb2x1bW5OYW1lKSB0aHJvd3MgU1FMRXhjZXB0aW9uIHsKKyAgICByZXR1cm4gMDsKKyAgfQorCisgIHB1YmxpYyB2b2lkIHVwZGF0ZVJlZihpbnQgY29sdW1uSW5kZXgsIFJlZiB4KSB0aHJvd3MgU1FMRXhjZXB0aW9uIHsKKyAgfQorCisgIHB1YmxpYyB2b2lkIHVwZGF0ZVJlZihTdHJpbmcgY29sdW1uTmFtZSwgUmVmIHgpIHRocm93cyBTUUxFeGNlcHRpb24geworICB9CisKKyAgcHVibGljIHZvaWQgdXBkYXRlQnl0ZShpbnQgY29sdW1uSW5kZXgsIGJ5dGUgeCkgdGhyb3dzIFNRTEV4Y2VwdGlvbiB7CisgIH0KKworICBwdWJsaWMgdm9pZCB1cGRhdGVCeXRlKFN0cmluZyBjb2x1bW5OYW1lLCBieXRlIHgpIHRocm93cyBTUUxFeGNlcHRpb24geworICB9CisKKyAgcHVibGljIHZvaWQgY2FuY2VsUm93VXBkYXRlcygpIHRocm93cyBTUUxFeGNlcHRpb24geworICB9CisKKyAgcHVibGljIFJlYWRlciBnZXRDaGFyYWN0ZXJTdHJlYW0oaW50IGNvbHVtbkluZGV4KSB0aHJvd3MgU1FMRXhjZXB0aW9uIHsKKyAgICByZXR1cm4gbnVsbDsKKyAgfQorCisgIHB1YmxpYyBSZWFkZXIgZ2V0Q2hhcmFjdGVyU3RyZWFtKFN0cmluZyBjb2x1bW5OYW1lKSB0aHJvd3MgU1FMRXhjZXB0aW9uIHsKKyAgICByZXR1cm4gbnVsbDsKKyAgfQorCisgIHB1YmxpYyBib29sZWFuIGFic29sdXRlKGludCByb3cpIHRocm93cyBTUUxFeGNlcHRpb24geworICAgIHJldHVybiBmYWxzZTsKKyAgfQorCisgIHB1YmxpYyBib29sZWFuIGZpcnN0KCkgdGhyb3dzIFNRTEV4Y2VwdGlvbiB7CisgICAgcmV0dXJuIGZhbHNlOworICB9CisKKyAgcHVibGljIHZvaWQgdXBkYXRlQXNjaWlTdHJlYW0oaW50IGNvbHVtbkluZGV4LCBJbnB1dFN0cmVhbSB4LCBpbnQgbGVuZ3RoKSB0aHJvd3MgU1FMRXhjZXB0aW9uIHsKKyAgfQorCisgIHB1YmxpYyB2b2lkIHVwZGF0ZUFzY2lpU3RyZWFtKFN0cmluZyBjb2x1bW5OYW1lLCBJbnB1dFN0cmVhbSB4LCBpbnQgbGVuZ3RoKSB0aHJvd3MgU1FMRXhjZXB0aW9uIHsKKyAgfQorCisgIHB1YmxpYyB2b2lkIG1vdmVUb0luc2VydFJvdygpIHRocm93cyBTUUxFeGNlcHRpb24geworICB9CisKKyAgcHVibGljIFNRTFdhcm5pbmcgZ2V0V2FybmluZ3MoKSB0aHJvd3MgU1FMRXhjZXB0aW9uIHsKKyAgICByZXR1cm4gbnVsbDsKKyAgfQorCisgIHB1YmxpYyB2b2lkIHVwZGF0ZURhdGUoaW50IGNvbHVtbkluZGV4LCBEYXRlIHgpIHRocm93cyBTUUxFeGNlcHRpb24geworICB9CisKKyAgcHVibGljIHZvaWQgdXBkYXRlRGF0ZShTdHJpbmcgY29sdW1uTmFtZSwgRGF0ZSB4KSB0aHJvd3MgU1FMRXhjZXB0aW9uIHsKKyAgfQorCisgIHB1YmxpYyBJbnB1dFN0cmVhbSBnZXRCaW5hcnlTdHJlYW0oaW50IGNvbHVtbkluZGV4KSB0aHJvd3MgU1FMRXhjZXB0aW9uIHsKKyAgICByZXR1cm4gbnVsbDsKKyAgfQorCisgIHB1YmxpYyBJbnB1dFN0cmVhbSBnZXRCaW5hcnlTdHJlYW0oU3RyaW5nIGNvbHVtbk5hbWUpIHRocm93cyBTUUxFeGNlcHRpb24geworICAgIHJldHVybiBudWxsOworICB9CisKKyAgcHVibGljIFRpbWUgZ2V0VGltZShpbnQgY29sdW1uSW5kZXgpIHRocm93cyBTUUxFeGNlcHRpb24geworICAgIHJldHVybiBudWxsOworICB9CisKKyAgcHVibGljIFRpbWUgZ2V0VGltZShTdHJpbmcgY29sdW1uTmFtZSkgdGhyb3dzIFNRTEV4Y2VwdGlvbiB7CisgICAgcmV0dXJuIG51bGw7CisgIH0KKworICBwdWJsaWMgVGltZSBnZXRUaW1lKGludCBjb2x1bW5JbmRleCwgQ2FsZW5kYXIgY2FsKSB0aHJvd3MgU1FMRXhjZXB0aW9uIHsKKyAgICByZXR1cm4gbnVsbDsKKyAgfQorCisgIHB1YmxpYyBUaW1lIGdldFRpbWUoU3RyaW5nIGNvbHVtbk5hbWUsIENhbGVuZGFyIGNhbCkgdGhyb3dzIFNRTEV4Y2VwdGlvbiB7CisgICAgcmV0dXJuIG51bGw7CisgIH0KKworICBwdWJsaWMgU3RyaW5nIGdldEN1cnNvck5hbWUoKSB0aHJvd3MgU1FMRXhjZXB0aW9uIHsKKyAgICByZXR1cm4gbnVsbDsKKyAgfQorCisgIHB1YmxpYyB2b2lkIHVwZGF0ZUJ5dGVzKGludCBjb2x1bW5JbmRleCwgYnl0ZSB4W10pIHRocm93cyBTUUxFeGNlcHRpb24geworICB9CisKKyAgcHVibGljIHZvaWQgdXBkYXRlQnl0ZXMoU3RyaW5nIGNvbHVtbk5hbWUsIGJ5dGUgeFtdKSB0aHJvd3MgU1FMRXhjZXB0aW9uIHsKKyAgfQorCisgIHB1YmxpYyBib29sZWFuIGxhc3QoKSB0aHJvd3MgU1FMRXhjZXB0aW9uIHsKKyAgICByZXR1cm4gZmFsc2U7CisgIH0KKworICBwdWJsaWMgVGltZXN0YW1wIGdldFRpbWVzdGFtcChpbnQgY29sdW1uSW5kZXgpIHRocm93cyBTUUxFeGNlcHRpb24geworICAgIHJldHVybiBudWxsOworICB9CisKKyAgcHVibGljIFRpbWVzdGFtcCBnZXRUaW1lc3RhbXAoU3RyaW5nIGNvbHVtbk5hbWUpIHRocm93cyBTUUxFeGNlcHRpb24geworICAgIHJldHVybiBudWxsOworICB9CisKKyAgcHVibGljIFRpbWVzdGFtcCBnZXRUaW1lc3RhbXAoaW50IGNvbHVtbkluZGV4LCBDYWxlbmRhciBjYWwpIHRocm93cyBTUUxFeGNlcHRpb24geworICAgIHJldHVybiBudWxsOworICB9CisKKyAgcHVibGljIFRpbWVzdGFtcCBnZXRUaW1lc3RhbXAoU3RyaW5nIGNvbHVtbk5hbWUsIENhbGVuZGFyIGNhbCkgdGhyb3dzIFNRTEV4Y2VwdGlvbiB7CisgICAgcmV0dXJuIG51bGw7CisgIH0KKworICBwdWJsaWMgdm9pZCB1cGRhdGVCb29sZWFuKGludCBjb2x1bW5JbmRleCwgYm9vbGVhbiB4KSB0aHJvd3MgU1FMRXhjZXB0aW9uIHsKKyAgfQorCisgIHB1YmxpYyB2b2lkIHVwZGF0ZUJvb2xlYW4oU3RyaW5nIGNvbHVtbk5hbWUsIGJvb2xlYW4geCkgdGhyb3dzIFNRTEV4Y2VwdGlvbiB7CisgIH0KKworICBwdWJsaWMgdm9pZCBiZWZvcmVGaXJzdCgpIHRocm93cyBTUUxFeGNlcHRpb24geworICB9CisKKyAgcHVibGljIGludCBnZXRGZXRjaERpcmVjdGlvbigpIHRocm93cyBTUUxFeGNlcHRpb24geworICAgIHJldHVybiAwOworICB9CisKKyAgcHVibGljIHZvaWQgdXBkYXRlRG91YmxlKGludCBjb2x1bW5JbmRleCwgZG91YmxlIHgpIHRocm93cyBTUUxFeGNlcHRpb24geworICB9CisKKyAgcHVibGljIHZvaWQgdXBkYXRlRG91YmxlKFN0cmluZyBjb2x1bW5OYW1lLCBkb3VibGUgeCkgdGhyb3dzIFNRTEV4Y2VwdGlvbiB7CisgIH0KKworICBwdWJsaWMgdm9pZCBzZXRGZXRjaERpcmVjdGlvbihpbnQgZGlyZWN0aW9uKSB0aHJvd3MgU1FMRXhjZXB0aW9uIHsKKyAgfQorCisgIHB1YmxpYyBib29sZWFuIHJvd0RlbGV0ZWQoKSB0aHJvd3MgU1FMRXhjZXB0aW9uIHsKKyAgICByZXR1cm4gZmFsc2U7CisgIH0KKworICBwdWJsaWMgdm9pZCBtb3ZlVG9DdXJyZW50Um93KCkgdGhyb3dzIFNRTEV4Y2VwdGlvbiB7CisgIH0KKworICBwdWJsaWMgdm9pZCBpbnNlcnRSb3coKSB0aHJvd3MgU1FMRXhjZXB0aW9uIHsKKyAgfQorCisgIHB1YmxpYyBCaWdEZWNpbWFsIGdldEJpZ0RlY2ltYWwoaW50IGNvbHVtbkluZGV4KSB0aHJvd3MgU1FMRXhjZXB0aW9uIHsKKyAgICByZXR1cm4gbnVsbDsKKyAgfQorCisgIHB1YmxpYyBCaWdEZWNpbWFsIGdldEJpZ0RlY2ltYWwoaW50IGNvbHVtbkluZGV4LCBpbnQgc2NhbGUpIHRocm93cyBTUUxFeGNlcHRpb24geworICAgIHJldHVybiBudWxsOworICB9CisKKyAgcHVibGljIEJpZ0RlY2ltYWwgZ2V0QmlnRGVjaW1hbChTdHJpbmcgY29sdW1uTmFtZSkgdGhyb3dzIFNRTEV4Y2VwdGlvbiB7CisgICAgcmV0dXJuIG51bGw7CisgIH0KKworICBwdWJsaWMgQmlnRGVjaW1hbCBnZXRCaWdEZWNpbWFsKFN0cmluZyBjb2x1bW5OYW1lLCBpbnQgc2NhbGUpIHRocm93cyBTUUxFeGNlcHRpb24geworICAgIHJldHVybiBudWxsOworICB9CisKKyAgcHVibGljIFVSTCBnZXRVUkwoaW50IGNvbHVtbkluZGV4KSB0aHJvd3MgU1FMRXhjZXB0aW9uIHsKKyAgICByZXR1cm4gbnVsbDsKKyAgfQorCisgIHB1YmxpYyBVUkwgZ2V0VVJMKFN0cmluZyBjb2x1bW5OYW1lKSB0aHJvd3MgU1FMRXhjZXB0aW9uIHsKKyAgICByZXR1cm4gbnVsbDsKKyAgfQorCisgIHB1YmxpYyBib29sZWFuIGlzQWZ0ZXJMYXN0KCkgdGhyb3dzIFNRTEV4Y2VwdGlvbiB7CisgICAgcmV0dXJuIGZhbHNlOworICB9CisKKyAgcHVibGljIHNob3J0IGdldFNob3J0KGludCBjb2x1bW5JbmRleCkgdGhyb3dzIFNRTEV4Y2VwdGlvbiB7CisgICAgcmV0dXJuIDA7CisgIH0KKworICBwdWJsaWMgc2hvcnQgZ2V0U2hvcnQoU3RyaW5nIGNvbHVtbk5hbWUpIHRocm93cyBTUUxFeGNlcHRpb24geworICAgIHJldHVybiAwOworICB9CisKKyAgcHVibGljIHZvaWQgdXBkYXRlSW50KGludCBjb2x1bW5JbmRleCwgaW50IHgpIHRocm93cyBTUUxFeGNlcHRpb24geworICB9CisKKyAgcHVibGljIHZvaWQgdXBkYXRlSW50KFN0cmluZyBjb2x1bW5OYW1lLCBpbnQgeCkgdGhyb3dzIFNRTEV4Y2VwdGlvbiB7CisgIH0KKworICBwdWJsaWMgdm9pZCBjbGVhcldhcm5pbmdzKCkgdGhyb3dzIFNRTEV4Y2VwdGlvbiB7CisgIH0KKworICBwdWJsaWMgdm9pZCB1cGRhdGVDaGFyYWN0ZXJTdHJlYW0oaW50IGNvbHVtbkluZGV4LCBSZWFkZXIgeCwgaW50IGxlbmd0aCkgdGhyb3dzIFNRTEV4Y2VwdGlvbiB7CisgIH0KKworICBwdWJsaWMgdm9pZCB1cGRhdGVDaGFyYWN0ZXJTdHJlYW0oU3RyaW5nIGNvbHVtbk5hbWUsIFJlYWRlciByZWFkZXIsIGludCBsZW5ndGgpIHRocm93cyBTUUxFeGNlcHRpb24geworICB9CisKKyAgcHVibGljIEJsb2IgZ2V0QmxvYihpbnQgaSkgdGhyb3dzIFNRTEV4Y2VwdGlvbiB7CisgICAgcmV0dXJuIG51bGw7CisgIH0KKworICBwdWJsaWMgQmxvYiBnZXRCbG9iKFN0cmluZyBjb2xOYW1lKSB0aHJvd3MgU1FMRXhjZXB0aW9uIHsKKyAgICByZXR1cm4gbnVsbDsKKyAgfQorCisgIHB1YmxpYyB2b2lkIHJlZnJlc2hSb3coKSB0aHJvd3MgU1FMRXhjZXB0aW9uIHsKKyAgfQorCisgIHB1YmxpYyB2b2lkIHVwZGF0ZVRpbWUoaW50IGNvbHVtbkluZGV4LCBUaW1lIHgpIHRocm93cyBTUUxFeGNlcHRpb24geworICB9CisKKyAgcHVibGljIHZvaWQgdXBkYXRlVGltZShTdHJpbmcgY29sdW1uTmFtZSwgVGltZSB4KSB0aHJvd3MgU1FMRXhjZXB0aW9uIHsKKyAgfQorCisgIHB1YmxpYyB2b2lkIHVwZGF0ZUFycmF5KGludCBjb2x1bW5JbmRleCwgQXJyYXkgeCkgdGhyb3dzIFNRTEV4Y2VwdGlvbiB7CisgIH0KKworICBwdWJsaWMgdm9pZCB1cGRhdGVBcnJheShTdHJpbmcgY29sdW1uTmFtZSwgQXJyYXkgeCkgdGhyb3dzIFNRTEV4Y2VwdGlvbiB7CisgIH0KKworICBwdWJsaWMgdm9pZCB1cGRhdGVPYmplY3QoaW50IGNvbHVtbkluZGV4LCBPYmplY3QgeCkgdGhyb3dzIFNRTEV4Y2VwdGlvbiB7CisgIH0KKworICBwdWJsaWMgdm9pZCB1cGRhdGVPYmplY3QoaW50IGNvbHVtbkluZGV4LCBPYmplY3QgeCwgaW50IHNjYWxlKSB0aHJvd3MgU1FMRXhjZXB0aW9uIHsKKyAgfQorCisgIHB1YmxpYyB2b2lkIHVwZGF0ZU9iamVjdChTdHJpbmcgY29sdW1uTmFtZSwgT2JqZWN0IHgpIHRocm93cyBTUUxFeGNlcHRpb24geworICB9CisKKyAgcHVibGljIHZvaWQgdXBkYXRlT2JqZWN0KFN0cmluZyBjb2x1bW5OYW1lLCBPYmplY3QgeCwgaW50IHNjYWxlKSB0aHJvd3MgU1FMRXhjZXB0aW9uIHsKKyAgfQorCisgIHB1YmxpYyB2b2lkIHVwZGF0ZU51bGwoaW50IGNvbHVtbkluZGV4KSB0aHJvd3MgU1FMRXhjZXB0aW9uIHsKKyAgfQorCisgIHB1YmxpYyB2b2lkIHVwZGF0ZU51bGwoU3RyaW5nIGNvbHVtbk5hbWUpIHRocm93cyBTUUxFeGNlcHRpb24geworICB9CisKKyAgcHVibGljIHZvaWQgY2xvc2UoKSB0aHJvd3MgU1FMRXhjZXB0aW9uIHsKKyAgfQorCisgIHB1YmxpYyBib29sZWFuIHJvd0luc2VydGVkKCkgdGhyb3dzIFNRTEV4Y2VwdGlvbiB7CisgICAgcmV0dXJuIGZhbHNlOworICB9CisKKyAgcHVibGljIENsb2IgZ2V0Q2xvYihpbnQgaSkgdGhyb3dzIFNRTEV4Y2VwdGlvbiB7CisgICAgcmV0dXJuIG51bGw7CisgIH0KKworICBwdWJsaWMgQ2xvYiBnZXRDbG9iKFN0cmluZyBjb2xOYW1lKSB0aHJvd3MgU1FMRXhjZXB0aW9uIHsKKyAgICByZXR1cm4gbnVsbDsKKyAgfQorCisgIHB1YmxpYyB2b2lkIHVwZGF0ZUJpZ0RlY2ltYWwoaW50IGNvbHVtbkluZGV4LCBCaWdEZWNpbWFsIHgpIHRocm93cyBTUUxFeGNlcHRpb24geworICB9CisKKyAgcHVibGljIHZvaWQgdXBkYXRlQmlnRGVjaW1hbChTdHJpbmcgY29sdW1uTmFtZSwgQmlnRGVjaW1hbCB4KSB0aHJvd3MgU1FMRXhjZXB0aW9uIHsKKyAgfQorCisgIHB1YmxpYyBpbnQgZ2V0VHlwZSgpIHRocm93cyBTUUxFeGNlcHRpb24geworICAgIHJldHVybiAwOworICB9CisKKyAgcHVibGljIGJvb2xlYW4gbmV4dCgpIHRocm93cyBTUUxFeGNlcHRpb24geworICAgIHJldHVybiBmYWxzZTsKKyAgfQorCisgIHB1YmxpYyBpbnQgZ2V0SW50KGludCBjb2x1bW5JbmRleCkgdGhyb3dzIFNRTEV4Y2VwdGlvbiB7CisgICAgcmV0dXJuIDA7CisgIH0KKworICBwdWJsaWMgaW50IGdldEludChTdHJpbmcgY29sdW1uTmFtZSkgdGhyb3dzIFNRTEV4Y2VwdGlvbiB7CisgICAgcmV0dXJuIDA7CisgIH0KKworICBwdWJsaWMgdm9pZCB1cGRhdGVCbG9iKGludCBjb2x1bW5JbmRleCwgQmxvYiB4KSB0aHJvd3MgU1FMRXhjZXB0aW9uIHsKKyAgfQorCisgIHB1YmxpYyB2b2lkIHVwZGF0ZUJsb2IoU3RyaW5nIGNvbHVtbk5hbWUsIEJsb2IgeCkgdGhyb3dzIFNRTEV4Y2VwdGlvbiB7CisgIH0KKworICBwdWJsaWMgUmVzdWx0U2V0TWV0YURhdGEgZ2V0TWV0YURhdGEoKSB0aHJvd3MgU1FMRXhjZXB0aW9uIHsKKyAgICByZXR1cm4gbnVsbDsKKyAgfQorCisgIHB1YmxpYyBib29sZWFuIHJvd1VwZGF0ZWQoKSB0aHJvd3MgU1FMRXhjZXB0aW9uIHsKKyAgICByZXR1cm4gZmFsc2U7CisgIH0KKworICBwdWJsaWMgQXJyYXkgZ2V0QXJyYXkoaW50IGkpIHRocm93cyBTUUxFeGNlcHRpb24geworICAgIHJldHVybiBudWxsOworICB9CisKKyAgcHVibGljIEFycmF5IGdldEFycmF5KFN0cmluZyBjb2xOYW1lKSB0aHJvd3MgU1FMRXhjZXB0aW9uIHsKKyAgICByZXR1cm4gbnVsbDsKKyAgfQorCisgIHB1YmxpYyBieXRlIGdldEJ5dGUoaW50IGNvbHVtbkluZGV4KSB0aHJvd3MgU1FMRXhjZXB0aW9uIHsKKyAgICByZXR1cm4gMDsKKyAgfQorCisgIHB1YmxpYyBieXRlIGdldEJ5dGUoU3RyaW5nIGNvbHVtbk5hbWUpIHRocm93cyBTUUxFeGNlcHRpb24geworICAgIHJldHVybiAwOworICB9CisKKyAgcHVibGljIElucHV0U3RyZWFtIGdldEFzY2lpU3RyZWFtKGludCBjb2x1bW5JbmRleCkgdGhyb3dzIFNRTEV4Y2VwdGlvbiB7CisgICAgcmV0dXJuIG51bGw7CisgIH0KKworICBwdWJsaWMgSW5wdXRTdHJlYW0gZ2V0QXNjaWlTdHJlYW0oU3RyaW5nIGNvbHVtbk5hbWUpIHRocm93cyBTUUxFeGNlcHRpb24geworICAgIHJldHVybiBudWxsOworICB9CisKKyAgcHVibGljIGRvdWJsZSBnZXREb3VibGUoaW50IGNvbHVtbkluZGV4KSB0aHJvd3MgU1FMRXhjZXB0aW9uIHsKKyAgICByZXR1cm4gMDsKKyAgfQorCisgIHB1YmxpYyBkb3VibGUgZ2V0RG91YmxlKFN0cmluZyBjb2x1bW5OYW1lKSB0aHJvd3MgU1FMRXhjZXB0aW9uIHsKKyAgICByZXR1cm4gMDsKKyAgfQorCisgIHB1YmxpYyB2b2lkIHVwZGF0ZVRpbWVzdGFtcChpbnQgY29sdW1uSW5kZXgsIFRpbWVzdGFtcCB4KSB0aHJvd3MgU1FMRXhjZXB0aW9uIHsKKyAgfQorCisgIHB1YmxpYyB2b2lkIHVwZGF0ZVRpbWVzdGFtcChTdHJpbmcgY29sdW1uTmFtZSwgVGltZXN0YW1wIHgpIHRocm93cyBTUUxFeGNlcHRpb24geworICB9CisKKyAgcHVibGljIHZvaWQgdXBkYXRlQ2xvYihpbnQgY29sdW1uSW5kZXgsIENsb2IgeCkgdGhyb3dzIFNRTEV4Y2VwdGlvbiB7CisgIH0KKworICBwdWJsaWMgdm9pZCB1cGRhdGVDbG9iKFN0cmluZyBjb2x1bW5OYW1lLCBDbG9iIHgpIHRocm93cyBTUUxFeGNlcHRpb24geworICB9CisKKyAgcHVibGljIGJvb2xlYW4gaXNCZWZvcmVGaXJzdCgpIHRocm93cyBTUUxFeGNlcHRpb24geworICAgIHJldHVybiBmYWxzZTsKKyAgfQorCisgIHB1YmxpYyB2b2lkIGRlbGV0ZVJvdygpIHRocm93cyBTUUxFeGNlcHRpb24geworICB9CisKKyAgcHVibGljIHZvaWQgYWZ0ZXJMYXN0KCkgdGhyb3dzIFNRTEV4Y2VwdGlvbiB7CisgIH0KKworICBwdWJsaWMgSW5wdXRTdHJlYW0gZ2V0VW5pY29kZVN0cmVhbShpbnQgY29sdW1uSW5kZXgpIHRocm93cyBTUUxFeGNlcHRpb24geworICAgIHJldHVybiBudWxsOworICB9CisKKyAgcHVibGljIElucHV0U3RyZWFtIGdldFVuaWNvZGVTdHJlYW0oU3RyaW5nIGNvbHVtbk5hbWUpIHRocm93cyBTUUxFeGNlcHRpb24geworICAgIHJldHVybiBudWxsOworICB9CisKKyAgcHVibGljIGJ5dGVbXSBnZXRCeXRlcyhpbnQgY29sdW1uSW5kZXgpIHRocm93cyBTUUxFeGNlcHRpb24geworICAgIHJldHVybiBuZXcgYnl0ZVswXTsKKyAgfQorCisgIHB1YmxpYyBieXRlW10gZ2V0Qnl0ZXMoU3RyaW5nIGNvbHVtbk5hbWUpIHRocm93cyBTUUxFeGNlcHRpb24geworICAgIHJldHVybiBuZXcgYnl0ZVswXTsKKyAgfQorCisgIHB1YmxpYyB2b2lkIHVwZGF0ZVN0cmluZyhpbnQgY29sdW1uSW5kZXgsIFN0cmluZyB4KSB0aHJvd3MgU1FMRXhjZXB0aW9uIHsKKyAgfQorCisgIHB1YmxpYyB2b2lkIHVwZGF0ZVN0cmluZyhTdHJpbmcgY29sdW1uTmFtZSwgU3RyaW5nIHgpIHRocm93cyBTUUxFeGNlcHRpb24geworICB9CisKKyAgcHVibGljIGZsb2F0IGdldEZsb2F0KGludCBjb2x1bW5JbmRleCkgdGhyb3dzIFNRTEV4Y2VwdGlvbiB7CisgICAgcmV0dXJuIDA7CisgIH0KKworICBwdWJsaWMgZmxvYXQgZ2V0RmxvYXQoU3RyaW5nIGNvbHVtbk5hbWUpIHRocm93cyBTUUxFeGNlcHRpb24geworICAgIHJldHVybiAwOworICB9CisKKyAgcHVibGljIE9iamVjdCBnZXRPYmplY3QoaW50IGNvbHVtbkluZGV4KSB0aHJvd3MgU1FMRXhjZXB0aW9uIHsKKyAgICByZXR1cm4gbnVsbDsKKyAgfQorCisgIHB1YmxpYyBPYmplY3QgZ2V0T2JqZWN0KFN0cmluZyBjb2x1bW5OYW1lKSB0aHJvd3MgU1FMRXhjZXB0aW9uIHsKKyAgICByZXR1cm4gbnVsbDsKKyAgfQorCisgIHB1YmxpYyBPYmplY3QgZ2V0T2JqZWN0KGludCBpLCBNYXAgbWFwKSB0aHJvd3MgU1FMRXhjZXB0aW9uIHsKKyAgICByZXR1cm4gbnVsbDsKKyAgfQorCisgIHB1YmxpYyBPYmplY3QgZ2V0T2JqZWN0KFN0cmluZyBjb2xOYW1lLCBNYXAgbWFwKSB0aHJvd3MgU1FMRXhjZXB0aW9uIHsKKyAgICByZXR1cm4gbnVsbDsKKyAgfQorCisgIHB1YmxpYyB2b2lkIHNldEZldGNoU2l6ZShpbnQgcm93cykgdGhyb3dzIFNRTEV4Y2VwdGlvbiB7CisgIH0KKworICBwdWJsaWMgYm9vbGVhbiBpc0xhc3QoKSB0aHJvd3MgU1FMRXhjZXB0aW9uIHsKKyAgICByZXR1cm4gZmFsc2U7CisgIH0KKworICBwdWJsaWMgdm9pZCB1cGRhdGVTaG9ydChpbnQgY29sdW1uSW5kZXgsIHNob3J0IHgpIHRocm93cyBTUUxFeGNlcHRpb24geworICB9CisKKyAgcHVibGljIHZvaWQgdXBkYXRlU2hvcnQoU3RyaW5nIGNvbHVtbk5hbWUsIHNob3J0IHgpIHRocm93cyBTUUxFeGNlcHRpb24geworICB9CisKKyAgcHVibGljIFN0cmluZyBnZXRTdHJpbmcoaW50IGNvbHVtbkluZGV4KSB0aHJvd3MgU1FMRXhjZXB0aW9uIHsKKyAgICByZXR1cm4gbnVsbDsKKyAgfQorCisgIHB1YmxpYyBTdHJpbmcgZ2V0U3RyaW5nKFN0cmluZyBjb2x1bW5OYW1lKSB0aHJvd3MgU1FMRXhjZXB0aW9uIHsKKyAgICByZXR1cm4gbnVsbDsKKyAgfQorCisgIHB1YmxpYyBpbnQgZmluZENvbHVtbihTdHJpbmcgY29sdW1uTmFtZSkgdGhyb3dzIFNRTEV4Y2VwdGlvbiB7CisgICAgcmV0dXJuIDA7CisgIH0KKworICBwdWJsaWMgYm9vbGVhbiByZWxhdGl2ZShpbnQgcm93cykgdGhyb3dzIFNRTEV4Y2VwdGlvbiB7CisgICAgcmV0dXJuIGZhbHNlOworICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5oZXJpdGFuY2VUb0RlbGVnYXRpb24vc2ltcGxlR2VuZXJpY3MvYWZ0ZXIvQS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2luaGVyaXRhbmNlVG9EZWxlZ2F0aW9uL3NpbXBsZUdlbmVyaWNzL2FmdGVyL0EuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40Zjk2ZmUzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2luaGVyaXRhbmNlVG9EZWxlZ2F0aW9uL3NpbXBsZUdlbmVyaWNzL2FmdGVyL0EuamF2YQpAQCAtMCwwICsxLDEwIEBACitjbGFzcyBMaXN0IDxUPiB7fQorCitjbGFzcyBBPFQ+IHsKKyAgICBwdWJsaWMgTGlzdDw/IGV4dGVuZHMgVD4gbWV0aG9kMSgpIHsKKyAgICAgICAgcmV0dXJuIG51bGw7CisgICAgfQorICAgIHB1YmxpYyBUIG1ldGhvZDIoVCB0KSB7CisgICAgICAgIHJldHVybiBudWxsOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5oZXJpdGFuY2VUb0RlbGVnYXRpb24vc2ltcGxlR2VuZXJpY3MvYWZ0ZXIvQi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2luaGVyaXRhbmNlVG9EZWxlZ2F0aW9uL3NpbXBsZUdlbmVyaWNzL2FmdGVyL0IuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMGMwYmI0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2luaGVyaXRhbmNlVG9EZWxlZ2F0aW9uL3NpbXBsZUdlbmVyaWNzL2FmdGVyL0IuamF2YQpAQCAtMCwwICsxLDExIEBACitjbGFzcyBCIHsKKyAgICBwdWJsaWMgZmluYWwgQTxTdHJpbmc+IG15RGVsZWdhdGUgPSBuZXcgQTxTdHJpbmc+KCk7CisKKyAgICBwdWJsaWMgTGlzdDw/IGV4dGVuZHMgU3RyaW5nPiBtZXRob2QxKCkgeworICAgICAgICByZXR1cm4gbXlEZWxlZ2F0ZS5tZXRob2QxKCk7CisgICAgfQorCisgICAgcHVibGljIFN0cmluZyBtZXRob2QyKFN0cmluZyBzKSB7CisgICAgICAgIHJldHVybiBteURlbGVnYXRlLm1ldGhvZDIocyk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmhlcml0YW5jZVRvRGVsZWdhdGlvbi9zaW1wbGVHZW5lcmljcy9iZWZvcmUvQS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2luaGVyaXRhbmNlVG9EZWxlZ2F0aW9uL3NpbXBsZUdlbmVyaWNzL2JlZm9yZS9BLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGY5NmZlMwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmhlcml0YW5jZVRvRGVsZWdhdGlvbi9zaW1wbGVHZW5lcmljcy9iZWZvcmUvQS5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKK2NsYXNzIExpc3QgPFQ+IHt9CisKK2NsYXNzIEE8VD4geworICAgIHB1YmxpYyBMaXN0PD8gZXh0ZW5kcyBUPiBtZXRob2QxKCkgeworICAgICAgICByZXR1cm4gbnVsbDsKKyAgICB9CisgICAgcHVibGljIFQgbWV0aG9kMihUIHQpIHsKKyAgICAgICAgcmV0dXJuIG51bGw7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmhlcml0YW5jZVRvRGVsZWdhdGlvbi9zaW1wbGVHZW5lcmljcy9iZWZvcmUvQi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2luaGVyaXRhbmNlVG9EZWxlZ2F0aW9uL3NpbXBsZUdlbmVyaWNzL2JlZm9yZS9CLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGE1NTQyYQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmhlcml0YW5jZVRvRGVsZWdhdGlvbi9zaW1wbGVHZW5lcmljcy9iZWZvcmUvQi5qYXZhCkBAIC0wLDAgKzEsMiBAQAorY2xhc3MgQiBleHRlbmRzIEE8U3RyaW5nPiB7ICAgICAgIAorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmhlcml0YW5jZVRvRGVsZWdhdGlvbi9zaW1wbGVJbnNlcnRpb24vYWZ0ZXIvQS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2luaGVyaXRhbmNlVG9EZWxlZ2F0aW9uL3NpbXBsZUluc2VydGlvbi9hZnRlci9BLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTkxMzE3MQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmhlcml0YW5jZVRvRGVsZWdhdGlvbi9zaW1wbGVJbnNlcnRpb24vYWZ0ZXIvQS5qYXZhCkBAIC0wLDAgKzEsNyBAQAorY2xhc3MgQSB7CisgICAgcHVibGljIHZvaWQgbWV0aG9kRnJvbUEoKSB7CisgICAgfQorICAgIHB1YmxpYyBpbnQgaW50TWV0aG9kRnJvbUEoaW50IGkpIHsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmhlcml0YW5jZVRvRGVsZWdhdGlvbi9zaW1wbGVJbnNlcnRpb24vYWZ0ZXIvQi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2luaGVyaXRhbmNlVG9EZWxlZ2F0aW9uL3NpbXBsZUluc2VydGlvbi9hZnRlci9CLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGIyN2FjZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmhlcml0YW5jZVRvRGVsZWdhdGlvbi9zaW1wbGVJbnNlcnRpb24vYWZ0ZXIvQi5qYXZhCkBAIC0wLDAgKzEsMTEgQEAKK2NsYXNzIEIgeworICAgIHB1YmxpYyBmaW5hbCBBIG15RGVsZWdhdGUgPSBuZXcgQSgpOworCisgICAgcHVibGljIHZvaWQgbWV0aG9kRnJvbUEoKSB7CisgICAgICAgIG15RGVsZWdhdGUubWV0aG9kRnJvbUEoKTsKKyAgICB9CisKKyAgICBwdWJsaWMgaW50IGludE1ldGhvZEZyb21BKGludCBpKSB7CisgICAgICAgIHJldHVybiBteURlbGVnYXRlLmludE1ldGhvZEZyb21BKGkpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5oZXJpdGFuY2VUb0RlbGVnYXRpb24vc2ltcGxlSW5zZXJ0aW9uL2JlZm9yZS9BLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5oZXJpdGFuY2VUb0RlbGVnYXRpb24vc2ltcGxlSW5zZXJ0aW9uL2JlZm9yZS9BLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTkxMzE3MQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmhlcml0YW5jZVRvRGVsZWdhdGlvbi9zaW1wbGVJbnNlcnRpb24vYmVmb3JlL0EuamF2YQpAQCAtMCwwICsxLDcgQEAKK2NsYXNzIEEgeworICAgIHB1YmxpYyB2b2lkIG1ldGhvZEZyb21BKCkgeworICAgIH0KKyAgICBwdWJsaWMgaW50IGludE1ldGhvZEZyb21BKGludCBpKSB7CisgICAgICAgIHJldHVybiAwOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5oZXJpdGFuY2VUb0RlbGVnYXRpb24vc2ltcGxlSW5zZXJ0aW9uL2JlZm9yZS9CLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5oZXJpdGFuY2VUb0RlbGVnYXRpb24vc2ltcGxlSW5zZXJ0aW9uL2JlZm9yZS9CLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzc2NTgzZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmhlcml0YW5jZVRvRGVsZWdhdGlvbi9zaW1wbGVJbnNlcnRpb24vYmVmb3JlL0IuamF2YQpAQCAtMCwwICsxLDIgQEAKK2NsYXNzIEIgZXh0ZW5kcyBBIHsgICAgICAgCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2luaGVyaXRhbmNlVG9EZWxlZ2F0aW9uL3N1YkNsYXNzL2FmdGVyL0EuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmhlcml0YW5jZVRvRGVsZWdhdGlvbi9zdWJDbGFzcy9hZnRlci9BLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTg5MjgxNgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmhlcml0YW5jZVRvRGVsZWdhdGlvbi9zdWJDbGFzcy9hZnRlci9BLmphdmEKQEAgLTAsMCArMSwyMCBAQAorcHVibGljIGNsYXNzIEEgeworICAgIHByaXZhdGUgZmluYWwgRGVsZWdhdGVkQmFzZSBteURlbGVnYXRlID0gbmV3IERlbGVnYXRlZEJhc2UoKTsKKworICAgIGludCBtZXRob2RGcm9tQSgpIHsKKyAgICAgICAgZGVsZWdhdGVkQmFzZU1ldGhvZCgpOworICAgICAgICByZXR1cm4gbXlEZWxlZ2F0ZS5kZWxlZ2F0ZWRCYXNlRmllbGQ7CisgICAgfQorCisgICAgRGVsZWdhdGVkQmFzZSBnZXRTb21ldGhpbmcoKSB7CisgICAgICAgIHJldHVybiBteURlbGVnYXRlOworICAgIH0KKworICAgIHB1YmxpYyBEZWxlZ2F0ZWRCYXNlIGdldE15RGVsZWdhdGUoKSB7CisgICAgICAgIHJldHVybiBteURlbGVnYXRlOworICAgIH0KKworICAgIHZvaWQgZGVsZWdhdGVkQmFzZU1ldGhvZCgpIHsKKyAgICAgICAgbXlEZWxlZ2F0ZS5kZWxlZ2F0ZWRCYXNlTWV0aG9kKCk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2luaGVyaXRhbmNlVG9EZWxlZ2F0aW9uL3N1YkNsYXNzL2FmdGVyL0IuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmhlcml0YW5jZVRvRGVsZWdhdGlvbi9zdWJDbGFzcy9hZnRlci9CLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWM0MGZjYwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmhlcml0YW5jZVRvRGVsZWdhdGlvbi9zdWJDbGFzcy9hZnRlci9CLmphdmEKQEAgLTAsMCArMSw1IEBACitwdWJsaWMgY2xhc3MgQiBleHRlbmRzIEEgeworICAgIHZvaWQgbWV0aG9kRnJvbUIoKSB7CisgICAgICAgIHN1cGVyLmRlbGVnYXRlZEJhc2VNZXRob2QoKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5oZXJpdGFuY2VUb0RlbGVnYXRpb24vc3ViQ2xhc3MvYWZ0ZXIvRGVsZWdhdGVkQmFzZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2luaGVyaXRhbmNlVG9EZWxlZ2F0aW9uL3N1YkNsYXNzL2FmdGVyL0RlbGVnYXRlZEJhc2UuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZjEyNzRlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2luaGVyaXRhbmNlVG9EZWxlZ2F0aW9uL3N1YkNsYXNzL2FmdGVyL0RlbGVnYXRlZEJhc2UuamF2YQpAQCAtMCwwICsxLDcgQEAKK3B1YmxpYyBjbGFzcyBEZWxlZ2F0ZWRCYXNlIHsKKyAgICBpbnQgZGVsZWdhdGVkQmFzZUZpZWxkOworCisgICAgdm9pZCBkZWxlZ2F0ZWRCYXNlTWV0aG9kKCkgeworCisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2luaGVyaXRhbmNlVG9EZWxlZ2F0aW9uL3N1YkNsYXNzL2FmdGVyL1VzYWdlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5oZXJpdGFuY2VUb0RlbGVnYXRpb24vc3ViQ2xhc3MvYWZ0ZXIvVXNhZ2UuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZDI3OGE1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2luaGVyaXRhbmNlVG9EZWxlZ2F0aW9uL3N1YkNsYXNzL2FmdGVyL1VzYWdlLmphdmEKQEAgLTAsMCArMSwyMCBAQAorcHVibGljIGNsYXNzIFVzYWdlIHsKKyAgICBwdWJsaWMgdm9pZCBwYXJhbWV0ZXJVc2FnZU1ldGhvZChEZWxlZ2F0ZWRCYXNlIGIpIHsKKyAgICAgICAgYi5kZWxlZ2F0ZWRCYXNlTWV0aG9kKCk7CisgICAgfQorCisgICAgcHVibGljIGludCB0ZXN0TWV0aG9kKCkgeworICAgICAgICBBIGEgPSBuZXcgQSgpOworICAgICAgICBCIGIgPSBuZXcgQigpOworICAgICAgICBwYXJhbWV0ZXJVc2FnZU1ldGhvZChhLmdldE15RGVsZWdhdGUoKSk7CisgICAgICAgIHBhcmFtZXRlclVzYWdlTWV0aG9kKGIuZ2V0TXlEZWxlZ2F0ZSgpKTsKKyAgICAgICAgYS5kZWxlZ2F0ZWRCYXNlTWV0aG9kKCk7CisgICAgICAgIGIuZGVsZWdhdGVkQmFzZU1ldGhvZCgpOworICAgICAgICBhLmVxdWFscyhiKTsKKyAgICAgICAgcmV0dXJuIGEuZ2V0TXlEZWxlZ2F0ZSgpLmRlbGVnYXRlZEJhc2VGaWVsZCArIGIuZ2V0TXlEZWxlZ2F0ZSgpLmRlbGVnYXRlZEJhc2VGaWVsZDsKKyAgICB9CisKKyAgICBEZWxlZ2F0ZWRCYXNlIGdldERlbGVnYXRlZEJhc2UoQSBhKSB7CisgICAgICAgIHJldHVybiBhLmdldE15RGVsZWdhdGUoKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5oZXJpdGFuY2VUb0RlbGVnYXRpb24vc3ViQ2xhc3MvYmVmb3JlL0EuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmhlcml0YW5jZVRvRGVsZWdhdGlvbi9zdWJDbGFzcy9iZWZvcmUvQS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ2ZTVlZjQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5oZXJpdGFuY2VUb0RlbGVnYXRpb24vc3ViQ2xhc3MvYmVmb3JlL0EuamF2YQpAQCAtMCwwICsxLDEwIEBACitwdWJsaWMgY2xhc3MgQSBleHRlbmRzIERlbGVnYXRlZEJhc2V7CisgICAgaW50IG1ldGhvZEZyb21BKCkgeworICAgICAgICBkZWxlZ2F0ZWRCYXNlTWV0aG9kKCk7CisgICAgICAgIHJldHVybiBkZWxlZ2F0ZWRCYXNlRmllbGQ7CisgICAgfQorCisgICAgRGVsZWdhdGVkQmFzZSBnZXRTb21ldGhpbmcoKSB7CisgICAgICAgIHJldHVybiB0aGlzOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmhlcml0YW5jZVRvRGVsZWdhdGlvbi9zdWJDbGFzcy9iZWZvcmUvQi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2luaGVyaXRhbmNlVG9EZWxlZ2F0aW9uL3N1YkNsYXNzL2JlZm9yZS9CLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWM0MGZjYwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmhlcml0YW5jZVRvRGVsZWdhdGlvbi9zdWJDbGFzcy9iZWZvcmUvQi5qYXZhCkBAIC0wLDAgKzEsNSBAQAorcHVibGljIGNsYXNzIEIgZXh0ZW5kcyBBIHsKKyAgICB2b2lkIG1ldGhvZEZyb21CKCkgeworICAgICAgICBzdXBlci5kZWxlZ2F0ZWRCYXNlTWV0aG9kKCk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2luaGVyaXRhbmNlVG9EZWxlZ2F0aW9uL3N1YkNsYXNzL2JlZm9yZS9EZWxlZ2F0ZWRCYXNlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5oZXJpdGFuY2VUb0RlbGVnYXRpb24vc3ViQ2xhc3MvYmVmb3JlL0RlbGVnYXRlZEJhc2UuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZjEyNzRlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2luaGVyaXRhbmNlVG9EZWxlZ2F0aW9uL3N1YkNsYXNzL2JlZm9yZS9EZWxlZ2F0ZWRCYXNlLmphdmEKQEAgLTAsMCArMSw3IEBACitwdWJsaWMgY2xhc3MgRGVsZWdhdGVkQmFzZSB7CisgICAgaW50IGRlbGVnYXRlZEJhc2VGaWVsZDsKKworICAgIHZvaWQgZGVsZWdhdGVkQmFzZU1ldGhvZCgpIHsKKworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmhlcml0YW5jZVRvRGVsZWdhdGlvbi9zdWJDbGFzcy9iZWZvcmUvVXNhZ2UuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmhlcml0YW5jZVRvRGVsZWdhdGlvbi9zdWJDbGFzcy9iZWZvcmUvVXNhZ2UuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MmUxZWFlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2luaGVyaXRhbmNlVG9EZWxlZ2F0aW9uL3N1YkNsYXNzL2JlZm9yZS9Vc2FnZS5qYXZhCkBAIC0wLDAgKzEsMjAgQEAKK3B1YmxpYyBjbGFzcyBVc2FnZSB7CisgICAgcHVibGljIHZvaWQgcGFyYW1ldGVyVXNhZ2VNZXRob2QoRGVsZWdhdGVkQmFzZSBiKSB7CisgICAgICAgIGIuZGVsZWdhdGVkQmFzZU1ldGhvZCgpOworICAgIH0KKworICAgIHB1YmxpYyBpbnQgdGVzdE1ldGhvZCgpIHsKKyAgICAgICAgQSBhID0gbmV3IEEoKTsKKyAgICAgICAgQiBiID0gbmV3IEIoKTsKKyAgICAgICAgcGFyYW1ldGVyVXNhZ2VNZXRob2QoYSk7CisgICAgICAgIHBhcmFtZXRlclVzYWdlTWV0aG9kKGIpOworICAgICAgICBhLmRlbGVnYXRlZEJhc2VNZXRob2QoKTsKKyAgICAgICAgYi5kZWxlZ2F0ZWRCYXNlTWV0aG9kKCk7CisgICAgICAgIGEuZXF1YWxzKGIpOworICAgICAgICByZXR1cm4gYS5kZWxlZ2F0ZWRCYXNlRmllbGQgKyBiLmRlbGVnYXRlZEJhc2VGaWVsZDsKKyAgICB9CisKKyAgICBEZWxlZ2F0ZWRCYXNlIGdldERlbGVnYXRlZEJhc2UoQSBhKSB7CisgICAgICAgIHJldHVybiBhOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmhlcml0YW5jZVRvRGVsZWdhdGlvbi9zdWJDbGFzc05vTWV0aG9kcy9hZnRlci9BLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5oZXJpdGFuY2VUb0RlbGVnYXRpb24vc3ViQ2xhc3NOb01ldGhvZHMvYWZ0ZXIvQS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE4ZWUzYmQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5oZXJpdGFuY2VUb0RlbGVnYXRpb24vc3ViQ2xhc3NOb01ldGhvZHMvYWZ0ZXIvQS5qYXZhCkBAIC0wLDAgKzEsMTYgQEAKK3B1YmxpYyBjbGFzcyBBIHsKKyAgICBwcm90ZWN0ZWQgZmluYWwgRGVsZWdhdGVkQmFzZSBteURlbGVnYXRlID0gbmV3IERlbGVnYXRlZEJhc2UoKTsKKworICAgIGludCBtZXRob2RGcm9tQSgpIHsKKyAgICAgICAgbXlEZWxlZ2F0ZS5kZWxlZ2F0ZWRCYXNlTWV0aG9kKCk7CisgICAgICAgIHJldHVybiBteURlbGVnYXRlLmRlbGVnYXRlZEJhc2VGaWVsZDsKKyAgICB9CisKKyAgICBEZWxlZ2F0ZWRCYXNlIGdldFNvbWV0aGluZygpIHsKKyAgICAgICAgcmV0dXJuIG15RGVsZWdhdGU7CisgICAgfQorCisgICAgcHVibGljIERlbGVnYXRlZEJhc2UgZ2V0TXlEZWxlZ2F0ZSgpIHsKKyAgICAgICAgcmV0dXJuIG15RGVsZWdhdGU7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2luaGVyaXRhbmNlVG9EZWxlZ2F0aW9uL3N1YkNsYXNzTm9NZXRob2RzL2FmdGVyL0IuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmhlcml0YW5jZVRvRGVsZWdhdGlvbi9zdWJDbGFzc05vTWV0aG9kcy9hZnRlci9CLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjc1MmE2MgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmhlcml0YW5jZVRvRGVsZWdhdGlvbi9zdWJDbGFzc05vTWV0aG9kcy9hZnRlci9CLmphdmEKQEAgLTAsMCArMSw1IEBACitwdWJsaWMgY2xhc3MgQiBleHRlbmRzIEEgeworICAgIHZvaWQgbWV0aG9kRnJvbUIoKSB7CisgICAgICAgIG15RGVsZWdhdGUuZGVsZWdhdGVkQmFzZU1ldGhvZCgpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmhlcml0YW5jZVRvRGVsZWdhdGlvbi9zdWJDbGFzc05vTWV0aG9kcy9hZnRlci9EZWxlZ2F0ZWRCYXNlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5oZXJpdGFuY2VUb0RlbGVnYXRpb24vc3ViQ2xhc3NOb01ldGhvZHMvYWZ0ZXIvRGVsZWdhdGVkQmFzZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhmMTI3NGUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5oZXJpdGFuY2VUb0RlbGVnYXRpb24vc3ViQ2xhc3NOb01ldGhvZHMvYWZ0ZXIvRGVsZWdhdGVkQmFzZS5qYXZhCkBAIC0wLDAgKzEsNyBAQAorcHVibGljIGNsYXNzIERlbGVnYXRlZEJhc2UgeworICAgIGludCBkZWxlZ2F0ZWRCYXNlRmllbGQ7CisKKyAgICB2b2lkIGRlbGVnYXRlZEJhc2VNZXRob2QoKSB7CisKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5oZXJpdGFuY2VUb0RlbGVnYXRpb24vc3ViQ2xhc3NOb01ldGhvZHMvYWZ0ZXIvVXNhZ2UuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmhlcml0YW5jZVRvRGVsZWdhdGlvbi9zdWJDbGFzc05vTWV0aG9kcy9hZnRlci9Vc2FnZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU5YzVlOTEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5oZXJpdGFuY2VUb0RlbGVnYXRpb24vc3ViQ2xhc3NOb01ldGhvZHMvYWZ0ZXIvVXNhZ2UuamF2YQpAQCAtMCwwICsxLDIwIEBACitwdWJsaWMgY2xhc3MgVXNhZ2UgeworICAgIHB1YmxpYyB2b2lkIHBhcmFtZXRlclVzYWdlTWV0aG9kKERlbGVnYXRlZEJhc2UgYikgeworICAgICAgICBiLmRlbGVnYXRlZEJhc2VNZXRob2QoKTsKKyAgICB9CisKKyAgICBwdWJsaWMgaW50IHRlc3RNZXRob2QoKSB7CisgICAgICAgIEEgYSA9IG5ldyBBKCk7CisgICAgICAgIEIgYiA9IG5ldyBCKCk7CisgICAgICAgIHBhcmFtZXRlclVzYWdlTWV0aG9kKGEuZ2V0TXlEZWxlZ2F0ZSgpKTsKKyAgICAgICAgcGFyYW1ldGVyVXNhZ2VNZXRob2QoYi5nZXRNeURlbGVnYXRlKCkpOworICAgICAgICBhLmdldE15RGVsZWdhdGUoKS5kZWxlZ2F0ZWRCYXNlTWV0aG9kKCk7CisgICAgICAgIGIuZ2V0TXlEZWxlZ2F0ZSgpLmRlbGVnYXRlZEJhc2VNZXRob2QoKTsKKyAgICAgICAgYS5lcXVhbHMoYik7CisgICAgICAgIHJldHVybiBhLmdldE15RGVsZWdhdGUoKS5kZWxlZ2F0ZWRCYXNlRmllbGQgKyBiLmdldE15RGVsZWdhdGUoKS5kZWxlZ2F0ZWRCYXNlRmllbGQ7CisgICAgfQorCisgICAgRGVsZWdhdGVkQmFzZSBnZXREZWxlZ2F0ZWRCYXNlKEEgYSkgeworICAgICAgICByZXR1cm4gYS5nZXRNeURlbGVnYXRlKCk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2luaGVyaXRhbmNlVG9EZWxlZ2F0aW9uL3N1YkNsYXNzTm9NZXRob2RzL2JlZm9yZS9BLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5oZXJpdGFuY2VUb0RlbGVnYXRpb24vc3ViQ2xhc3NOb01ldGhvZHMvYmVmb3JlL0EuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNmU1ZWY0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2luaGVyaXRhbmNlVG9EZWxlZ2F0aW9uL3N1YkNsYXNzTm9NZXRob2RzL2JlZm9yZS9BLmphdmEKQEAgLTAsMCArMSwxMCBAQAorcHVibGljIGNsYXNzIEEgZXh0ZW5kcyBEZWxlZ2F0ZWRCYXNleworICAgIGludCBtZXRob2RGcm9tQSgpIHsKKyAgICAgICAgZGVsZWdhdGVkQmFzZU1ldGhvZCgpOworICAgICAgICByZXR1cm4gZGVsZWdhdGVkQmFzZUZpZWxkOworICAgIH0KKworICAgIERlbGVnYXRlZEJhc2UgZ2V0U29tZXRoaW5nKCkgeworICAgICAgICByZXR1cm4gdGhpczsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5oZXJpdGFuY2VUb0RlbGVnYXRpb24vc3ViQ2xhc3NOb01ldGhvZHMvYmVmb3JlL0IuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmhlcml0YW5jZVRvRGVsZWdhdGlvbi9zdWJDbGFzc05vTWV0aG9kcy9iZWZvcmUvQi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjljNDBmY2MKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5oZXJpdGFuY2VUb0RlbGVnYXRpb24vc3ViQ2xhc3NOb01ldGhvZHMvYmVmb3JlL0IuamF2YQpAQCAtMCwwICsxLDUgQEAKK3B1YmxpYyBjbGFzcyBCIGV4dGVuZHMgQSB7CisgICAgdm9pZCBtZXRob2RGcm9tQigpIHsKKyAgICAgICAgc3VwZXIuZGVsZWdhdGVkQmFzZU1ldGhvZCgpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmhlcml0YW5jZVRvRGVsZWdhdGlvbi9zdWJDbGFzc05vTWV0aG9kcy9iZWZvcmUvRGVsZWdhdGVkQmFzZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2luaGVyaXRhbmNlVG9EZWxlZ2F0aW9uL3N1YkNsYXNzTm9NZXRob2RzL2JlZm9yZS9EZWxlZ2F0ZWRCYXNlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGYxMjc0ZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmhlcml0YW5jZVRvRGVsZWdhdGlvbi9zdWJDbGFzc05vTWV0aG9kcy9iZWZvcmUvRGVsZWdhdGVkQmFzZS5qYXZhCkBAIC0wLDAgKzEsNyBAQAorcHVibGljIGNsYXNzIERlbGVnYXRlZEJhc2UgeworICAgIGludCBkZWxlZ2F0ZWRCYXNlRmllbGQ7CisKKyAgICB2b2lkIGRlbGVnYXRlZEJhc2VNZXRob2QoKSB7CisKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5oZXJpdGFuY2VUb0RlbGVnYXRpb24vc3ViQ2xhc3NOb01ldGhvZHMvYmVmb3JlL1VzYWdlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5oZXJpdGFuY2VUb0RlbGVnYXRpb24vc3ViQ2xhc3NOb01ldGhvZHMvYmVmb3JlL1VzYWdlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzJlMWVhZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmhlcml0YW5jZVRvRGVsZWdhdGlvbi9zdWJDbGFzc05vTWV0aG9kcy9iZWZvcmUvVXNhZ2UuamF2YQpAQCAtMCwwICsxLDIwIEBACitwdWJsaWMgY2xhc3MgVXNhZ2UgeworICAgIHB1YmxpYyB2b2lkIHBhcmFtZXRlclVzYWdlTWV0aG9kKERlbGVnYXRlZEJhc2UgYikgeworICAgICAgICBiLmRlbGVnYXRlZEJhc2VNZXRob2QoKTsKKyAgICB9CisKKyAgICBwdWJsaWMgaW50IHRlc3RNZXRob2QoKSB7CisgICAgICAgIEEgYSA9IG5ldyBBKCk7CisgICAgICAgIEIgYiA9IG5ldyBCKCk7CisgICAgICAgIHBhcmFtZXRlclVzYWdlTWV0aG9kKGEpOworICAgICAgICBwYXJhbWV0ZXJVc2FnZU1ldGhvZChiKTsKKyAgICAgICAgYS5kZWxlZ2F0ZWRCYXNlTWV0aG9kKCk7CisgICAgICAgIGIuZGVsZWdhdGVkQmFzZU1ldGhvZCgpOworICAgICAgICBhLmVxdWFscyhiKTsKKyAgICAgICAgcmV0dXJuIGEuZGVsZWdhdGVkQmFzZUZpZWxkICsgYi5kZWxlZ2F0ZWRCYXNlRmllbGQ7CisgICAgfQorCisgICAgRGVsZWdhdGVkQmFzZSBnZXREZWxlZ2F0ZWRCYXNlKEEgYSkgeworICAgICAgICByZXR1cm4gYTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5oZXJpdGFuY2VUb0RlbGVnYXRpb24vc3ViaW50ZXJmYWNlL2FmdGVyL0EuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmhlcml0YW5jZVRvRGVsZWdhdGlvbi9zdWJpbnRlcmZhY2UvYWZ0ZXIvQS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVmYTRmOGQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5oZXJpdGFuY2VUb0RlbGVnYXRpb24vc3ViaW50ZXJmYWNlL2FmdGVyL0EuamF2YQpAQCAtMCwwICsxLDEyIEBACitwdWJsaWMgY2xhc3MgQSBleHRlbmRzIEIgeworICAgIHByaXZhdGUgZmluYWwgTXlKIG15RGVsZWdhdGUgPSBuZXcgTXlKKCk7CisKKyAgICBwdWJsaWMgSiBnZXRNeURlbGVnYXRlKCkgeworICAgICAgICByZXR1cm4gbXlEZWxlZ2F0ZTsKKyAgICB9CisKKyAgICBwcml2YXRlIGNsYXNzIE15SiBpbXBsZW1lbnRzIEogeworICAgICAgICBwdWJsaWMgdm9pZCBydW4oKSB7CisgICAgICAgIH0KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2luaGVyaXRhbmNlVG9EZWxlZ2F0aW9uL3N1YmludGVyZmFjZS9hZnRlci9CLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5oZXJpdGFuY2VUb0RlbGVnYXRpb24vc3ViaW50ZXJmYWNlL2FmdGVyL0IuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNTM4MzRiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2luaGVyaXRhbmNlVG9EZWxlZ2F0aW9uL3N1YmludGVyZmFjZS9hZnRlci9CLmphdmEKQEAgLTAsMCArMSwyIEBACitjbGFzcyBCIHsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5oZXJpdGFuY2VUb0RlbGVnYXRpb24vc3ViaW50ZXJmYWNlL2FmdGVyL0ouamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmhlcml0YW5jZVRvRGVsZWdhdGlvbi9zdWJpbnRlcmZhY2UvYWZ0ZXIvSi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUxMGZkYjEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5oZXJpdGFuY2VUb0RlbGVnYXRpb24vc3ViaW50ZXJmYWNlL2FmdGVyL0ouamF2YQpAQCAtMCwwICsxLDIgQEAKK2ludGVyZmFjZSBKIGV4dGVuZHMgUnVubmFibGUgeworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmhlcml0YW5jZVRvRGVsZWdhdGlvbi9zdWJpbnRlcmZhY2UvYWZ0ZXIvVXNhZ2UuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmhlcml0YW5jZVRvRGVsZWdhdGlvbi9zdWJpbnRlcmZhY2UvYWZ0ZXIvVXNhZ2UuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZGNiNjkzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2luaGVyaXRhbmNlVG9EZWxlZ2F0aW9uL3N1YmludGVyZmFjZS9hZnRlci9Vc2FnZS5qYXZhCkBAIC0wLDAgKzEsNiBAQAorY2xhc3MgVXNhZ2UgeworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKCkgeworICAgICAgICBBIGEgPSBuZXcgQSgpOworICAgICAgICBhLmdldE15RGVsZWdhdGUoKS5ydW4oKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2luaGVyaXRhbmNlVG9EZWxlZ2F0aW9uL3N1YmludGVyZmFjZS9iZWZvcmUvQS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2luaGVyaXRhbmNlVG9EZWxlZ2F0aW9uL3N1YmludGVyZmFjZS9iZWZvcmUvQS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI0OTdlZGMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5oZXJpdGFuY2VUb0RlbGVnYXRpb24vc3ViaW50ZXJmYWNlL2JlZm9yZS9BLmphdmEKQEAgLTAsMCArMSw0IEBACitwdWJsaWMgY2xhc3MgQSBleHRlbmRzIEIgaW1wbGVtZW50cyBKIHsKKyAgICBwdWJsaWMgdm9pZCBydW4oKSB7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmhlcml0YW5jZVRvRGVsZWdhdGlvbi9zdWJpbnRlcmZhY2UvYmVmb3JlL0IuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmhlcml0YW5jZVRvRGVsZWdhdGlvbi9zdWJpbnRlcmZhY2UvYmVmb3JlL0IuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNTM4MzRiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2luaGVyaXRhbmNlVG9EZWxlZ2F0aW9uL3N1YmludGVyZmFjZS9iZWZvcmUvQi5qYXZhCkBAIC0wLDAgKzEsMiBAQAorY2xhc3MgQiB7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2luaGVyaXRhbmNlVG9EZWxlZ2F0aW9uL3N1YmludGVyZmFjZS9iZWZvcmUvSi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2luaGVyaXRhbmNlVG9EZWxlZ2F0aW9uL3N1YmludGVyZmFjZS9iZWZvcmUvSi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUxMGZkYjEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5oZXJpdGFuY2VUb0RlbGVnYXRpb24vc3ViaW50ZXJmYWNlL2JlZm9yZS9KLmphdmEKQEAgLTAsMCArMSwyIEBACitpbnRlcmZhY2UgSiBleHRlbmRzIFJ1bm5hYmxlIHsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5oZXJpdGFuY2VUb0RlbGVnYXRpb24vc3ViaW50ZXJmYWNlL2JlZm9yZS9Vc2FnZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2luaGVyaXRhbmNlVG9EZWxlZ2F0aW9uL3N1YmludGVyZmFjZS9iZWZvcmUvVXNhZ2UuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MDRlYTNiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2luaGVyaXRhbmNlVG9EZWxlZ2F0aW9uL3N1YmludGVyZmFjZS9iZWZvcmUvVXNhZ2UuamF2YQpAQCAtMCwwICsxLDYgQEAKK2NsYXNzIFVzYWdlIHsKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbigpIHsKKyAgICAgICAgQSBhID0gbmV3IEEoKTsKKyAgICAgICAgYS5ydW4oKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2luaGVyaXRhbmNlVG9EZWxlZ2F0aW9uL3N1cGVyQ2FsbHMvYWZ0ZXIvQS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2luaGVyaXRhbmNlVG9EZWxlZ2F0aW9uL3N1cGVyQ2FsbHMvYWZ0ZXIvQS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJkY2U2NjgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5oZXJpdGFuY2VUb0RlbGVnYXRpb24vc3VwZXJDYWxscy9hZnRlci9BLmphdmEKQEAgLTAsMCArMSw5IEBACitjbGFzcyBBIHsKKyAgICBwdWJsaWMgQShpbnQgaSkgeworICAgIH0KKyAgICBwdWJsaWMgdm9pZCBtZXRob2RGcm9tQSgpIHsKKyAgICB9CisgICAgcHVibGljIGludCBpbnRNZXRob2RGcm9tQShpbnQgaSkgeworICAgICAgICByZXR1cm4gMDsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2luaGVyaXRhbmNlVG9EZWxlZ2F0aW9uL3N1cGVyQ2FsbHMvYWZ0ZXIvQi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2luaGVyaXRhbmNlVG9EZWxlZ2F0aW9uL3N1cGVyQ2FsbHMvYWZ0ZXIvQi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNhOGZhMWYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5oZXJpdGFuY2VUb0RlbGVnYXRpb24vc3VwZXJDYWxscy9hZnRlci9CLmphdmEKQEAgLTAsMCArMSwxMSBAQAorY2xhc3MgQiB7CisgICAgcHVibGljIGZpbmFsIEEgbXlEZWxlZ2F0ZTsKKworICAgIHB1YmxpYyBCKCkgeworICAgICAgICBteURlbGVnYXRlID0gbmV3IEEoMSk7CisgICAgfQorICAgIAorICAgIHB1YmxpYyBCKGludCBpKSB7CisgICAgICAgIG15RGVsZWdhdGUgPSBuZXcgQShpKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2luaGVyaXRhbmNlVG9EZWxlZ2F0aW9uL3N1cGVyQ2FsbHMvYmVmb3JlL0EuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmhlcml0YW5jZVRvRGVsZWdhdGlvbi9zdXBlckNhbGxzL2JlZm9yZS9BLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmRjZTY2OAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmhlcml0YW5jZVRvRGVsZWdhdGlvbi9zdXBlckNhbGxzL2JlZm9yZS9BLmphdmEKQEAgLTAsMCArMSw5IEBACitjbGFzcyBBIHsKKyAgICBwdWJsaWMgQShpbnQgaSkgeworICAgIH0KKyAgICBwdWJsaWMgdm9pZCBtZXRob2RGcm9tQSgpIHsKKyAgICB9CisgICAgcHVibGljIGludCBpbnRNZXRob2RGcm9tQShpbnQgaSkgeworICAgICAgICByZXR1cm4gMDsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2luaGVyaXRhbmNlVG9EZWxlZ2F0aW9uL3N1cGVyQ2FsbHMvYmVmb3JlL0IuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmhlcml0YW5jZVRvRGVsZWdhdGlvbi9zdXBlckNhbGxzL2JlZm9yZS9CLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzQ1OGMzZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmhlcml0YW5jZVRvRGVsZWdhdGlvbi9zdXBlckNhbGxzL2JlZm9yZS9CLmphdmEKQEAgLTAsMCArMSw5IEBACitjbGFzcyBCIGV4dGVuZHMgQSB7CisgICAgcHVibGljIEIoKSB7CisgICAgICAgIHN1cGVyKDEpOworICAgIH0KKyAgICAKKyAgICBwdWJsaWMgQihpbnQgaSkgeworICAgICAgICBzdXBlcihpKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2luaGVyaXRhbmNlVG9EZWxlZ2F0aW9uL3R5cGVQYXJhbWV0ZXJzU3Vic3RpdHV0aW9uL2FmdGVyL0EuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmhlcml0YW5jZVRvRGVsZWdhdGlvbi90eXBlUGFyYW1ldGVyc1N1YnN0aXR1dGlvbi9hZnRlci9BLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTQxNGU0ZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmhlcml0YW5jZVRvRGVsZWdhdGlvbi90eXBlUGFyYW1ldGVyc1N1YnN0aXR1dGlvbi9hZnRlci9BLmphdmEKQEAgLTAsMCArMSw4IEBACitwdWJsaWMgY2xhc3MgQSB7CisgICAgcHVibGljIGZpbmFsIE15SW50ZiBteURlbGVnYXRlID0gbmV3IE15SW50ZigpOworCisgICAgcHJpdmF0ZSBjbGFzcyBNeUludGYgaW1wbGVtZW50cyBJbnRmPEludGVnZXI+IHsKKyAgICAgICAgcHVibGljIHZvaWQgbWV0aG9kMShJbnRlZ2VyIHQpIHsKKyAgICAgICAgfQorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5oZXJpdGFuY2VUb0RlbGVnYXRpb24vdHlwZVBhcmFtZXRlcnNTdWJzdGl0dXRpb24vYWZ0ZXIvSW50Zi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2luaGVyaXRhbmNlVG9EZWxlZ2F0aW9uL3R5cGVQYXJhbWV0ZXJzU3Vic3RpdHV0aW9uL2FmdGVyL0ludGYuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYTQwNzhjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2luaGVyaXRhbmNlVG9EZWxlZ2F0aW9uL3R5cGVQYXJhbWV0ZXJzU3Vic3RpdHV0aW9uL2FmdGVyL0ludGYuamF2YQpAQCAtMCwwICsxLDMgQEAKK3B1YmxpYyBpbnRlcmZhY2UgSW50ZjxUPiB7CisgICAgdm9pZCBtZXRob2QxKFQgdCk7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2luaGVyaXRhbmNlVG9EZWxlZ2F0aW9uL3R5cGVQYXJhbWV0ZXJzU3Vic3RpdHV0aW9uL2JlZm9yZS9BLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5oZXJpdGFuY2VUb0RlbGVnYXRpb24vdHlwZVBhcmFtZXRlcnNTdWJzdGl0dXRpb24vYmVmb3JlL0EuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNzdlNDY2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2luaGVyaXRhbmNlVG9EZWxlZ2F0aW9uL3R5cGVQYXJhbWV0ZXJzU3Vic3RpdHV0aW9uL2JlZm9yZS9BLmphdmEKQEAgLTAsMCArMSw0IEBACitwdWJsaWMgY2xhc3MgQSBpbXBsZW1lbnRzIEludGY8SW50ZWdlcj4geworICAgIHB1YmxpYyB2b2lkIG1ldGhvZDEoSW50ZWdlciB0KSB7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmhlcml0YW5jZVRvRGVsZWdhdGlvbi90eXBlUGFyYW1ldGVyc1N1YnN0aXR1dGlvbi9iZWZvcmUvSW50Zi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2luaGVyaXRhbmNlVG9EZWxlZ2F0aW9uL3R5cGVQYXJhbWV0ZXJzU3Vic3RpdHV0aW9uL2JlZm9yZS9JbnRmLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGE0MDc4YwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmhlcml0YW5jZVRvRGVsZWdhdGlvbi90eXBlUGFyYW1ldGVyc1N1YnN0aXR1dGlvbi9iZWZvcmUvSW50Zi5qYXZhCkBAIC0wLDAgKzEsMyBAQAorcHVibGljIGludGVyZmFjZSBJbnRmPFQ+IHsKKyAgICB2b2lkIG1ldGhvZDEoVCB0KTsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lQ29uc3RhbnRGaWVsZC9DYXN0V2hlbkxhbWJkYUFzUXVhbGlmaWVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lQ29uc3RhbnRGaWVsZC9DYXN0V2hlbkxhbWJkYUFzUXVhbGlmaWVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWJlODBjOAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVDb25zdGFudEZpZWxkL0Nhc3RXaGVuTGFtYmRhQXNRdWFsaWZpZXIuamF2YQpAQCAtMCwwICsxLDIxIEBACisvKgorICogQ29weXJpZ2h0IDIwMDAtMjAxMiBKZXRCcmFpbnMgcy5yLm8uCisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworY2xhc3MgVGVzdCB7CisgIFJ1bm5hYmxlIHIgPSAoKSAtPiB7fTsKKyAgdm9pZCBmb28oKSB7CisgICAgPGNhcmV0PnIucnVuKCk7CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVDb25zdGFudEZpZWxkL0Nhc3RXaGVuTGFtYmRhQXNRdWFsaWZpZXIuamF2YS5hZnRlciBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVDb25zdGFudEZpZWxkL0Nhc3RXaGVuTGFtYmRhQXNRdWFsaWZpZXIuamF2YS5hZnRlcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNWJhNmZkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZUNvbnN0YW50RmllbGQvQ2FzdFdoZW5MYW1iZGFBc1F1YWxpZmllci5qYXZhLmFmdGVyCkBAIC0wLDAgKzEsMjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwMC0yMDEyIEpldEJyYWlucyBzLnIuby4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitjbGFzcyBUZXN0IHsKKyAgICB2b2lkIGZvbygpIHsKKyAgICAoKFJ1bm5hYmxlKSAoKSAtPiB7CisgICAgfSkucnVuKCk7CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVDb25zdGFudEZpZWxkL1F1YWxpZmllZENvbnN0YW50RXhwcmVzc2lvbi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZUNvbnN0YW50RmllbGQvUXVhbGlmaWVkQ29uc3RhbnRFeHByZXNzaW9uLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmRjMzc0NAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVDb25zdGFudEZpZWxkL1F1YWxpZmllZENvbnN0YW50RXhwcmVzc2lvbi5qYXZhCkBAIC0wLDAgKzEsNyBAQAorY2xhc3MgUVRlc3QgeworICBmaW5hbCBpbnQgbXlJID0gMDsKKworICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CisgICAgU3lzdGVtLm91dC5wcmludGxuKG5ldyBRVGVzdCgpLm15PGNhcmV0PkkpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZUNvbnN0YW50RmllbGQvUXVhbGlmaWVkQ29uc3RhbnRFeHByZXNzaW9uLmphdmEuYWZ0ZXIgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lQ29uc3RhbnRGaWVsZC9RdWFsaWZpZWRDb25zdGFudEV4cHJlc3Npb24uamF2YS5hZnRlcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MjBjYzczCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZUNvbnN0YW50RmllbGQvUXVhbGlmaWVkQ29uc3RhbnRFeHByZXNzaW9uLmphdmEuYWZ0ZXIKQEAgLTAsMCArMSw2IEBACitjbGFzcyBRVGVzdCB7CisKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CisgICAgU3lzdGVtLm91dC5wcmludGxuKDApOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZUNvbnN0YW50RmllbGQvUXVhbGlmaWVkQ29uc3RhbnRFeHByZXNzaW9uUmVwbGFjZWRXaXRoQW5vdGhlck9uZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZUNvbnN0YW50RmllbGQvUXVhbGlmaWVkQ29uc3RhbnRFeHByZXNzaW9uUmVwbGFjZWRXaXRoQW5vdGhlck9uZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY5ZGFkNDYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lQ29uc3RhbnRGaWVsZC9RdWFsaWZpZWRDb25zdGFudEV4cHJlc3Npb25SZXBsYWNlZFdpdGhBbm90aGVyT25lLmphdmEKQEAgLTAsMCArMSwxMCBAQAorY2xhc3MgUVRlc3QgeworICBmaW5hbCBpbnQgbXlJID0gU291cmNlLkNPTlNUOworICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CisgICAgU3lzdGVtLm91dC5wcmludGxuKG5ldyBRVGVzdCgpLm15PGNhcmV0PkkpOworICB9Cit9CisKK2NsYXNzIFNvdXJjZSB7CisgIGludCBDT05TVCA9IDA7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZUNvbnN0YW50RmllbGQvUXVhbGlmaWVkQ29uc3RhbnRFeHByZXNzaW9uUmVwbGFjZWRXaXRoQW5vdGhlck9uZS5qYXZhLmFmdGVyIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZUNvbnN0YW50RmllbGQvUXVhbGlmaWVkQ29uc3RhbnRFeHByZXNzaW9uUmVwbGFjZWRXaXRoQW5vdGhlck9uZS5qYXZhLmFmdGVyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM5ZDliZTIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lQ29uc3RhbnRGaWVsZC9RdWFsaWZpZWRDb25zdGFudEV4cHJlc3Npb25SZXBsYWNlZFdpdGhBbm90aGVyT25lLmphdmEuYWZ0ZXIKQEAgLTAsMCArMSw5IEBACitjbGFzcyBRVGVzdCB7CisgICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgeworICAgIFN5c3RlbS5vdXQucHJpbnRsbihTb3VyY2UuQ09OU1QpOworICB9Cit9CisKK2NsYXNzIFNvdXJjZSB7CisgIGludCBDT05TVCA9IDA7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZUNvbnN0YW50RmllbGQvUXVhbGlmaWVkRXhwcmVzc2lvbi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZUNvbnN0YW50RmllbGQvUXVhbGlmaWVkRXhwcmVzc2lvbi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFhYjJhZjMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lQ29uc3RhbnRGaWVsZC9RdWFsaWZpZWRFeHByZXNzaW9uLmphdmEKQEAgLTAsMCArMSw3IEBACitjbGFzcyBRVGVzdCB7CisgIGZpbmFsIGludCBteUkgPSBmb28oKTsKKyAgaW50IGZvbygpe3JldHVybiAwO30KKyAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgeworICAgIFN5c3RlbS5vdXQucHJpbnRsbihuZXcgUVRlc3QoKS5teTxjYXJldD5JKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVDb25zdGFudEZpZWxkL1F1YWxpZmllZEV4cHJlc3Npb24uamF2YS5hZnRlciBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVDb25zdGFudEZpZWxkL1F1YWxpZmllZEV4cHJlc3Npb24uamF2YS5hZnRlcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMTJmZDRhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZUNvbnN0YW50RmllbGQvUXVhbGlmaWVkRXhwcmVzc2lvbi5qYXZhLmFmdGVyCkBAIC0wLDAgKzEsNiBAQAorY2xhc3MgUVRlc3QgeworICAgIGludCBmb28oKXtyZXR1cm4gMDt9CisgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKKyAgICBTeXN0ZW0ub3V0LnByaW50bG4obmV3IFFUZXN0KCkuZm9vKCkpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZUNvbnN0YW50RmllbGQvU3RhdGljYWxseUltcG9ydGVkUXVhbGlmaWVkRXhwcmVzc2lvbi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZUNvbnN0YW50RmllbGQvU3RhdGljYWxseUltcG9ydGVkUXVhbGlmaWVkRXhwcmVzc2lvbi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNhNmEyZWIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lQ29uc3RhbnRGaWVsZC9TdGF0aWNhbGx5SW1wb3J0ZWRRdWFsaWZpZWRFeHByZXNzaW9uLmphdmEKQEAgLTAsMCArMSwxNyBAQAorcGFja2FnZSBwOworCitpbXBvcnQgc3RhdGljIHAuQy5tb2NrOworY2xhc3MgQyB7CisgIHB1YmxpYyBzdGF0aWMgU3RyaW5nIG1vY2soKSB7CisgICAgcmV0dXJuIG51bGw7CisgIH0KK30KKworY2xhc3MgRCB7CisgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIENPTlNUID0gbW9jaygpOworfQorY2xhc3MgUVRlc3QgeworICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CisgICAgU3RyaW5nIHMgPSBELkNPTjxjYXJldD5TVDsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVDb25zdGFudEZpZWxkL1N0YXRpY2FsbHlJbXBvcnRlZFF1YWxpZmllZEV4cHJlc3Npb24uamF2YS5hZnRlciBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVDb25zdGFudEZpZWxkL1N0YXRpY2FsbHlJbXBvcnRlZFF1YWxpZmllZEV4cHJlc3Npb24uamF2YS5hZnRlcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43N2JmMTM4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZUNvbnN0YW50RmllbGQvU3RhdGljYWxseUltcG9ydGVkUXVhbGlmaWVkRXhwcmVzc2lvbi5qYXZhLmFmdGVyCkBAIC0wLDAgKzEsMTYgQEAKK3BhY2thZ2UgcDsKKworaW1wb3J0IHN0YXRpYyBwLkMubW9jazsKK2NsYXNzIEMgeworICBwdWJsaWMgc3RhdGljIFN0cmluZyBtb2NrKCkgeworICAgIHJldHVybiBudWxsOworICB9Cit9CisKK2NsYXNzIEQgeworfQorY2xhc3MgUVRlc3QgeworICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CisgICAgU3RyaW5nIHMgPSBtb2NrKCk7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTG9jYWwvQW5vdGhlckRlZmluaXRpb25Vc2VkLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTG9jYWwvQW5vdGhlckRlZmluaXRpb25Vc2VkLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGY4MDk5MQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVMb2NhbC9Bbm90aGVyRGVmaW5pdGlvblVzZWQuamF2YQpAQCAtMCwwICsxLDEwIEBACitjbGFzcyBBIHsKKyAgICBTdHJpbmcgczsKKyAgICBib29sZWFuIGZvbygpIHsKKyAgICAgIGJvb2xlYW4gYmFyID0gZmFsc2U7CisgICAgICBpZiAocyA9PSBudWxsKSB7CisgICAgICAgIGJhPGNhcmV0PnIgPSB0cnVlOworICAgICAgfQorICAgICAgcmV0dXJuIGJhcjsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZUxvY2FsL0Fub3RoZXJEZWZpbml0aW9uVXNlZDEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVMb2NhbC9Bbm90aGVyRGVmaW5pdGlvblVzZWQxLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzU1ZDA4NQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVMb2NhbC9Bbm90aGVyRGVmaW5pdGlvblVzZWQxLmphdmEKQEAgLTAsMCArMSwxMCBAQAorY2xhc3MgQSB7CisgICAgU3RyaW5nIHM7CisgICAgYm9vbGVhbiBmb28oKSB7CisgICAgICBib29sZWFuIGI8Y2FyZXQ+YXIgPSBmYWxzZTsKKyAgICAgIGlmIChzID09IG51bGwpIHsKKyAgICAgICAgYmFyID0gdHJ1ZTsKKyAgICAgIH0KKyAgICAgIHJldHVybiBiYXI7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVMb2NhbC9BcnJheUluZGV4LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTG9jYWwvQXJyYXlJbmRleC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY5YTdhZWIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTG9jYWwvQXJyYXlJbmRleC5qYXZhCkBAIC0wLDAgKzEsMjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwMC0yMDEyIEpldEJyYWlucyBzLnIuby4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwdWJsaWMgY2xhc3MgQSB7CisKKyAgcHVibGljIHZvaWQgdGVzdElubGluZVJlZmFjdG9yaW5nKCkgeworICAgIGludFtdIGFycmF5ID0gbmV3IGludFsxMF07CisgICAgaW50IGluZGV4ID0gY29tcHV0ZUluZGV4KCk7CisgICAgYXJyYXlbaW48Y2FyZXQ+ZGV4XSA9IDIyOworICB9CisKKyAgcHJpdmF0ZSBpbnQgY29tcHV0ZUluZGV4KCkgeworICAgIHJldHVybiAwOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZUxvY2FsL0FycmF5SW5kZXguamF2YS5hZnRlciBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVMb2NhbC9BcnJheUluZGV4LmphdmEuYWZ0ZXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjg1YmQ4YgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVMb2NhbC9BcnJheUluZGV4LmphdmEuYWZ0ZXIKQEAgLTAsMCArMSwyNiBAQAorLyoKKyAqIENvcHlyaWdodCAyMDAwLTIwMTIgSmV0QnJhaW5zIHMuci5vLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3B1YmxpYyBjbGFzcyBBIHsKKworICBwdWJsaWMgdm9pZCB0ZXN0SW5saW5lUmVmYWN0b3JpbmcoKSB7CisgICAgaW50W10gYXJyYXkgPSBuZXcgaW50WzEwXTsKKyAgICAgIGFycmF5W2NvbXB1dGVJbmRleCgpXSA9IDIyOworICB9CisKKyAgcHJpdmF0ZSBpbnQgY29tcHV0ZUluZGV4KCkgeworICAgIHJldHVybiAwOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZUxvY2FsL0FycmF5SW5pdGlhbGl6ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVMb2NhbC9BcnJheUluaXRpYWxpemVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjc4NjhhMAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVMb2NhbC9BcnJheUluaXRpYWxpemVyLmphdmEKQEAgLTAsMCArMSw3IEBACitjbGFzcyBUZXN0IHsKKworICBTdHJpbmdbXSBnZXQoKXsKKyAgICBTdHJpbmdbXSB0bzxjYXJldD5JbmxpbmUgPSB7IiJ9OworICAgIHJldHVybiB0b0lubGluZTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVMb2NhbC9BcnJheUluaXRpYWxpemVyLmphdmEuYWZ0ZXIgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTG9jYWwvQXJyYXlJbml0aWFsaXplci5qYXZhLmFmdGVyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNmYzZmNmIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTG9jYWwvQXJyYXlJbml0aWFsaXplci5qYXZhLmFmdGVyCkBAIC0wLDAgKzEsNiBAQAorY2xhc3MgVGVzdCB7CisKKyAgU3RyaW5nW10gZ2V0KCl7CisgICAgICByZXR1cm4gbmV3IFN0cmluZ1tdeyIifTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVMb2NhbC9Bc3NpZ25tZW50VG9BcnJheUVsZW1lbnQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVMb2NhbC9Bc3NpZ25tZW50VG9BcnJheUVsZW1lbnQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNzExNTljCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZUxvY2FsL0Fzc2lnbm1lbnRUb0FycmF5RWxlbWVudC5qYXZhCkBAIC0wLDAgKzEsMjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwMC0yMDEyIEpldEJyYWlucyBzLnIuby4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwdWJsaWMgY2xhc3MgQSB7CisKKyAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgeworCisgICAgaW50W10gYXJyID0gbmV3IGludFszXTsKKyAgICBhcnJbMF0gPSAxMjM7CisgICAgU3lzdGVtLm91dC5wcmludGxuKGFyPGNhcmV0PnIpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZUxvY2FsL0F1Z21lbnRlZEFzc2lnbm1lbnQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVMb2NhbC9BdWdtZW50ZWRBc3NpZ25tZW50LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTM0NGM4MwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVMb2NhbC9BdWdtZW50ZWRBc3NpZ25tZW50LmphdmEKQEAgLTAsMCArMSw3IEBACitjbGFzcyBBdWdtZW50ZWRBc3NpZ25tZW50IHsKKyAgICBwdWJsaWMgc3RhdGljIFN0cmluZyB4KCkgeworICAgICAgICBTdHJpbmcgdGU8Y2FyZXQ+eHQgPSAiIjsKKyAgICAgICAgdGV4dCArPSAic29tZXRoaW5nIjsKKyAgICAgICAgcmV0dXJuIHRleHQ7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVMb2NhbC9BdWdtZW50ZWRBc3NpZ25tZW50LmphdmEuYWZ0ZXIgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTG9jYWwvQXVnbWVudGVkQXNzaWdubWVudC5qYXZhLmFmdGVyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUzNDRjODMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTG9jYWwvQXVnbWVudGVkQXNzaWdubWVudC5qYXZhLmFmdGVyCkBAIC0wLDAgKzEsNyBAQAorY2xhc3MgQXVnbWVudGVkQXNzaWdubWVudCB7CisgICAgcHVibGljIHN0YXRpYyBTdHJpbmcgeCgpIHsKKyAgICAgICAgU3RyaW5nIHRlPGNhcmV0Pnh0ID0gIiI7CisgICAgICAgIHRleHQgKz0gInNvbWV0aGluZyI7CisgICAgICAgIHJldHVybiB0ZXh0OworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTG9jYWwvQ2FzdEFyb3VuZExhbWJkYS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZUxvY2FsL0Nhc3RBcm91bmRMYW1iZGEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wM2RlOTBjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZUxvY2FsL0Nhc3RBcm91bmRMYW1iZGEuamF2YQpAQCAtMCwwICsxLDEyIEBACitjbGFzcyBUZXN0IHsKKyAgdm9pZCB0ZXN0KCkgeworICAgIEkgYjEgPSBTeXN0ZW06OmV4aXQ7CisgICAgYShiPGNhcmV0PjEpOworICB9CisKKyAgdm9pZCBhKE9iamVjdCBiKSB7fQorCisgIGludGVyZmFjZSBJIHsKKyAgICB2b2lkIGkoaW50IGkpOworICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTG9jYWwvQ2FzdEFyb3VuZExhbWJkYS5qYXZhLmFmdGVyIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZUxvY2FsL0Nhc3RBcm91bmRMYW1iZGEuamF2YS5hZnRlcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYTA4YzkwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZUxvY2FsL0Nhc3RBcm91bmRMYW1iZGEuamF2YS5hZnRlcgpAQCAtMCwwICsxLDExIEBACitjbGFzcyBUZXN0IHsKKyAgdm9pZCB0ZXN0KCkgeworICAgICAgYSgoSSkgU3lzdGVtOjpleGl0KTsKKyAgfQorCisgIHZvaWQgYShPYmplY3QgYikge30KKworICBpbnRlcmZhY2UgSSB7CisgICAgdm9pZCBpKGludCBpKTsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZUxvY2FsL0Nhc3ROb3ROZWVkZWQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVMb2NhbC9DYXN0Tm90TmVlZGVkLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTk1YTJjZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVMb2NhbC9DYXN0Tm90TmVlZGVkLmphdmEKQEAgLTAsMCArMSwxNSBAQAorY2xhc3MgVGVzdCB7CisgIHN0YXRpYyBib29sZWFuIGlzQSgpIHsKKyAgICByZXR1cm4gdHJ1ZTsKKyAgfQorCisgIHN0YXRpYyBib29sZWFuIGlzQigpIHsKKyAgICByZXR1cm4gdHJ1ZTsKKyAgfQorCisgIHByaXZhdGUgc3RhdGljIHZvaWQgZm9vKGZpbmFsIGJvb2xlYW4gZXhwbGljaXQpIHsKKyAgICBmaW5hbCBib29sZWFuIGhhcyA9IGV4cGxpY2l0ID8gaXNBKCkgOiBpc0IoKTsKKyAgICBpZiAoaGE8Y2FyZXQ+cykgeworICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVMb2NhbC9DYXN0Tm90TmVlZGVkLmphdmEuYWZ0ZXIgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTG9jYWwvQ2FzdE5vdE5lZWRlZC5qYXZhLmFmdGVyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk4MWNhNzMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTG9jYWwvQ2FzdE5vdE5lZWRlZC5qYXZhLmFmdGVyCkBAIC0wLDAgKzEsMTQgQEAKK2NsYXNzIFRlc3QgeworICBzdGF0aWMgYm9vbGVhbiBpc0EoKSB7CisgICAgcmV0dXJuIHRydWU7CisgIH0KKworICBzdGF0aWMgYm9vbGVhbiBpc0IoKSB7CisgICAgcmV0dXJuIHRydWU7CisgIH0KKworICBwcml2YXRlIHN0YXRpYyB2b2lkIGZvbyhmaW5hbCBib29sZWFuIGV4cGxpY2l0KSB7CisgICAgICBpZiAoZXhwbGljaXQgPyBpc0EoKSA6IGlzQigpKSB7CisgICAgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZUxvY2FsL0NvbmRpdGlvbkV4cHIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVMb2NhbC9Db25kaXRpb25FeHByLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNThmM2RmNgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVMb2NhbC9Db25kaXRpb25FeHByLmphdmEKQEAgLTAsMCArMSw3IEBACitwdWJsaWMgY2xhc3MgVGVzdDIgeworICB7CisgICAgICBJbnRlZ2VyIGlpaSA9IHRydWUgPyAxIDogMjsKKyAgICAgIDxjYXJldD5paWkuYnl0ZVZhbHVlKCk7CisgIH0KK30KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZUxvY2FsL0NvbmRpdGlvbkV4cHIuamF2YS5hZnRlciBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVMb2NhbC9Db25kaXRpb25FeHByLmphdmEuYWZ0ZXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGYxOGYzOAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVMb2NhbC9Db25kaXRpb25FeHByLmphdmEuYWZ0ZXIKQEAgLTAsMCArMSw2IEBACitwdWJsaWMgY2xhc3MgVGVzdDIgeworICB7CisgICAgICAoKEludGVnZXIpICh0cnVlID8gMSA6IDIpKS5ieXRlVmFsdWUoKTsKKyAgfQorfQorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTG9jYWwvSURFQURFVjEwMzc2LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTG9jYWwvSURFQURFVjEwMzc2LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjY3MWVjMgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVMb2NhbC9JREVBREVWMTAzNzYuamF2YQpAQCAtMCwwICsxLDggQEAKK2NsYXNzIElERUFERVYxMDM3NiB7CisgICAgcHJpdmF0ZSBzdGF0aWMgaW50IGYoaW50IHApIHsKKyAgICAgICAgaW50IGkgPSAwOworICAgICAgICBpID0gOTsKKyAgICAgICAgaSA9IGYoPGNhcmV0PmkpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZUxvY2FsL0lERUFERVYxMDM3Ni5qYXZhLmFmdGVyIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZUxvY2FsL0lERUFERVYxMDM3Ni5qYXZhLmFmdGVyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZhZjVjNmUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTG9jYWwvSURFQURFVjEwMzc2LmphdmEuYWZ0ZXIKQEAgLTAsMCArMSw3IEBACitjbGFzcyBJREVBREVWMTAzNzYgeworICAgIHByaXZhdGUgc3RhdGljIGludCBmKGludCBwKSB7CisgICAgICAgIGludCBpID0gMDsKKyAgICAgICAgaSA9IGYoOSk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTG9jYWwvSURFQURFVjEyMjQ0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTG9jYWwvSURFQURFVjEyMjQ0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGVhY2IzZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVMb2NhbC9JREVBREVWMTIyNDQuamF2YQpAQCAtMCwwICsxLDkgQEAKK2ltcG9ydCBqYXZhLnV0aWwuKjsKKworY2xhc3MgSURFQURFVjEyMjQ0IHsKKyAgICB7CisgICAgICAgIFRyZWVNYXA8U3RyaW5nLCBTZXQ8SW50ZWdlcj4+IG1hcCA9IG5ldyBUcmVlTWFwPFN0cmluZywgU2V0PEludGVnZXI+PigpOworICAgICAgICBTZXQ8SW50ZWdlcj4gc2V0ID0gQ29sbGVjdGlvbnMuZW1wdHlTZXQoKTsKKyAgICAgICAgbWFwLnB1dCgiZm9vIiwgPGNhcmV0PnNldCk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVMb2NhbC9JREVBREVWMTIyNDQuamF2YS5hZnRlciBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVMb2NhbC9JREVBREVWMTIyNDQuamF2YS5hZnRlcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YTIxZjIwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZUxvY2FsL0lERUFERVYxMjI0NC5qYXZhLmFmdGVyCkBAIC0wLDAgKzEsOCBAQAoraW1wb3J0IGphdmEudXRpbC4qOworCitjbGFzcyBJREVBREVWMTIyNDQgeworICAgIHsKKyAgICAgICAgVHJlZU1hcDxTdHJpbmcsIFNldDxJbnRlZ2VyPj4gbWFwID0gbmV3IFRyZWVNYXA8U3RyaW5nLCBTZXQ8SW50ZWdlcj4+KCk7CisgICAgICAgIG1hcC5wdXQoImZvbyIsIENvbGxlY3Rpb25zLjxJbnRlZ2VyPmVtcHR5U2V0KCkpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTG9jYWwvSURFQURFVjEzMTUxLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTG9jYWwvSURFQURFVjEzMTUxLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTZjNDY5YQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVMb2NhbC9JREVBREVWMTMxNTEuamF2YQpAQCAtMCwwICsxLDEzIEBACitjbGFzcyBUZXN0ZXIgeworICAgIHZvaWQgbWV0aG9kKFN0cmluZyB4LCBTdHJpbmcuLi4geSkgeworICAgIH0KKworICAgIHZvaWQgbWV0aG9kMShTdHJpbmcgeCwgU3RyaW5nW10geSkgeworICAgIH0KKworICAgIHZvaWQgY2FsbGVyKCkgeworICAgICAgICBTdHJpbmdbXSB0aGluZyA9IHsiYSIsICJiIn07CisgICAgICAgIG1ldGhvZCgiIiwgPGNhcmV0PnRoaW5nKTsKKyAgICAgICAgbWV0aG9kMSgiIiwgdGhpbmcpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTG9jYWwvSURFQURFVjEzMTUxLmphdmEuYWZ0ZXIgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTG9jYWwvSURFQURFVjEzMTUxLmphdmEuYWZ0ZXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGNiZjRiNgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVMb2NhbC9JREVBREVWMTMxNTEuamF2YS5hZnRlcgpAQCAtMCwwICsxLDEyIEBACitjbGFzcyBUZXN0ZXIgeworICAgIHZvaWQgbWV0aG9kKFN0cmluZyB4LCBTdHJpbmcuLi4geSkgeworICAgIH0KKworICAgIHZvaWQgbWV0aG9kMShTdHJpbmcgeCwgU3RyaW5nW10geSkgeworICAgIH0KKworICAgIHZvaWQgY2FsbGVyKCkgeworICAgICAgICBtZXRob2QoIiIsICJhIiwgImIiKTsKKyAgICAgICAgbWV0aG9kMSgiIiwgbmV3IFN0cmluZ1tdeyJhIiwgImIifSk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVMb2NhbC9JREVBREVWOTUwLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTG9jYWwvSURFQURFVjk1MC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZmODBhOGUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTG9jYWwvSURFQURFVjk1MC5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKK3B1YmxpYyBjbGFzcyBJREVBREVWOTUwIHsKKyAgICB2b2lkIGZvbyAoKSB7CisgICAgICAgIGludCBkb29yXzEgPSAgMDsKKyAgICAgICAgZmxvYXQgZG9vclAgPSBkb29yXzEgOworICAgICAgICAvL0Nhc3Qgc2hvdWxkIGJlIGluc2VydGVkIHdoZW4gaW5saW5pbmcsIG90aGVyd2lzZSBzZW1hbnRpY3MgY2hhbmdlcworICAgICAgICBmbG9hdCBkMSA9ICg8Y2FyZXQ+ZG9vclAgLyBOT0ZfTE9PUFMpOworICAgIH0KKworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBOT0ZfTE9PUFMgPSAyOworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZUxvY2FsL0lERUFERVY5NTAuamF2YS5hZnRlciBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVMb2NhbC9JREVBREVWOTUwLmphdmEuYWZ0ZXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTg2ZGUyOAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVMb2NhbC9JREVBREVWOTUwLmphdmEuYWZ0ZXIKQEAgLTAsMCArMSw5IEBACitwdWJsaWMgY2xhc3MgSURFQURFVjk1MCB7CisgICAgdm9pZCBmb28gKCkgeworICAgICAgICBpbnQgZG9vcl8xID0gIDA7CisgICAgICAgIC8vQ2FzdCBzaG91bGQgYmUgaW5zZXJ0ZWQgd2hlbiBpbmxpbmluZywgb3RoZXJ3aXNlIHNlbWFudGljcyBjaGFuZ2VzCisgICAgICAgIGZsb2F0IGQxID0gKChmbG9hdCkgZG9vcl8xIC8gTk9GX0xPT1BTKTsKKyAgICB9CisKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgTk9GX0xPT1BTID0gMjsKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVMb2NhbC9JZGVhREVWOTQwNC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZUxvY2FsL0lkZWFERVY5NDA0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODE2NmM2ZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVMb2NhbC9JZGVhREVWOTQwNC5qYXZhCkBAIC0wLDAgKzEsOCBAQAoraW1wb3J0IGphdmF4LnN3aW5nLio7CisKK2NsYXNzIFRlc3QgeworICAgIHB1YmxpYyBzdGF0aWMgSkNvbXBvbmVudCBnZXRGb28oKSB7CisgICAgICAgIEpDb21wb25lbnQgYyA9IG5ldyBKUGFuZWwoKTsKKyAgICAgICAgcmV0dXJuIDxjYXJldD5jOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTG9jYWwvSWRlYURFVjk0MDQuamF2YS5hZnRlciBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVMb2NhbC9JZGVhREVWOTQwNC5qYXZhLmFmdGVyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAwYzNjYjgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTG9jYWwvSWRlYURFVjk0MDQuamF2YS5hZnRlcgpAQCAtMCwwICsxLDcgQEAKK2ltcG9ydCBqYXZheC5zd2luZy4qOworCitjbGFzcyBUZXN0IHsKKyAgICBwdWJsaWMgc3RhdGljIEpDb21wb25lbnQgZ2V0Rm9vKCkgeworICAgICAgICByZXR1cm4gbmV3IEpQYW5lbCgpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTG9jYWwvSW5mZXJlbmNlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTG9jYWwvSW5mZXJlbmNlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjU2Y2U0ZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVMb2NhbC9JbmZlcmVuY2UuamF2YQpAQCAtMCwwICsxLDEyIEBACitjbGFzcyBJbmZlcmVuY2UgeworICAgICAgICBwdWJsaWMgPFQ+IFQgZ2V0WCgpIHsKKyAgICAgICAgICAgIHJldHVybiBudWxsOworICAgICAgICB9CisKKyAgICAgICAgdm9pZCBmb28gKFN0cmluZyBzKSB7fQorCisgICAgICAgIHsKKyAgICAgICAgICAgU3RyaW5nIHYyID0gbmV3IEluZmVyZW5jZSgpLmdldFgoKTsKKyAgICAgICAgICAgZm9vKDxjYXJldD52Mik7CisgICAgICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTG9jYWwvSW5mZXJlbmNlLmphdmEuYWZ0ZXIgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTG9jYWwvSW5mZXJlbmNlLmphdmEuYWZ0ZXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTVmZDMyYwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVMb2NhbC9JbmZlcmVuY2UuamF2YS5hZnRlcgpAQCAtMCwwICsxLDExIEBACitjbGFzcyBJbmZlcmVuY2UgeworICAgICAgICBwdWJsaWMgPFQ+IFQgZ2V0WCgpIHsKKyAgICAgICAgICAgIHJldHVybiBudWxsOworICAgICAgICB9CisKKyAgICAgICAgdm9pZCBmb28gKFN0cmluZyBzKSB7fQorCisgICAgICAgIHsKKyAgICAgICAgICAgIGZvbyhuZXcgSW5mZXJlbmNlKCkuPFN0cmluZz5nZXRYKCkpOworICAgICAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZUxvY2FsL0lubGluZUZyb21UcnlDYXRjaC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZUxvY2FsL0lubGluZUZyb21UcnlDYXRjaC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhjMjI0MjQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTG9jYWwvSW5saW5lRnJvbVRyeUNhdGNoLmphdmEKQEAgLTAsMCArMSwxOCBAQAoraW1wb3J0IGphdmEuaW8uKjsKKworY2xhc3MgVGVzdCB7CisgIHByaXZhdGUgc3RhdGljIElucHV0U3RyZWFtIGdldElucHV0VW5jaGVja2VkKCkgdGhyb3dzIElPRXhjZXB0aW9uIHsKKyAgICBJbnB1dFN0cmVhbSBpbjsKKyAgICB0cnkgeworICAgICAgaW4gPSBmZigpOworICAgIH0KKyAgICBjYXRjaCAoSU9FeGNlcHRpb24gZSkgeworICAgICAgdGhyb3cgbmV3IElPRXhjZXB0aW9uKCk7CisgICAgfQorICAgIHJldHVybiBpPGNhcmV0Pm47CisgIH0KKworICBzdGF0aWMgSW5wdXRTdHJlYW0gZmYoKSB0aHJvd3MgSU9FeGNlcHRpb24geworICAgIHJldHVybiBudWxsOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZUxvY2FsL0lubGluZUZyb21UcnlDYXRjaEF2YWlsYWJsZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZUxvY2FsL0lubGluZUZyb21UcnlDYXRjaEF2YWlsYWJsZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQxMTY0ZWEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTG9jYWwvSW5saW5lRnJvbVRyeUNhdGNoQXZhaWxhYmxlLmphdmEKQEAgLTAsMCArMSwxNSBAQAoraW1wb3J0IGphdmEuaW8uKjsKKworY2xhc3MgVGVzdCB7CisgIHByaXZhdGUgc3RhdGljIElucHV0U3RyZWFtIGdldElucHV0VW5jaGVja2VkKElucHV0U3RyZWFtIGlucHV0U3VwcGxpZXIpIHRocm93cyBJT0V4Y2VwdGlvbiB7CisgICAgSW5wdXRTdHJlYW0gaW47CisgICAgdHJ5IHsKKyAgICAgIGluID0gbnVsbDsKKyAgICB9CisgICAgY2F0Y2ggKElPRXhjZXB0aW9uIGUpIHsKKyAgICAgIHRocm93IG5ldyBJT0V4Y2VwdGlvbigpOworICAgIH0KKyAgICByZXR1cm4gaTxjYXJldD5uOworICB9CisKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTG9jYWwvSW5saW5lRnJvbVRyeUNhdGNoQXZhaWxhYmxlLmphdmEuYWZ0ZXIgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTG9jYWwvSW5saW5lRnJvbVRyeUNhdGNoQXZhaWxhYmxlLmphdmEuYWZ0ZXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTg1M2Q4YQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVMb2NhbC9JbmxpbmVGcm9tVHJ5Q2F0Y2hBdmFpbGFibGUuamF2YS5hZnRlcgpAQCAtMCwwICsxLDEzIEBACitpbXBvcnQgamF2YS5pby4qOworCitjbGFzcyBUZXN0IHsKKyAgcHJpdmF0ZSBzdGF0aWMgSW5wdXRTdHJlYW0gZ2V0SW5wdXRVbmNoZWNrZWQoSW5wdXRTdHJlYW0gaW5wdXRTdXBwbGllcikgdGhyb3dzIElPRXhjZXB0aW9uIHsKKyAgICAgIHRyeSB7CisgICAgICB9CisgICAgY2F0Y2ggKElPRXhjZXB0aW9uIGUpIHsKKyAgICAgIHRocm93IG5ldyBJT0V4Y2VwdGlvbigpOworICAgIH0KKyAgICByZXR1cm4gbnVsbDsKKyAgfQorCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZUxvY2FsL0lubmVySW5uZXJDbGFzcy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZUxvY2FsL0lubmVySW5uZXJDbGFzcy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEyMGU1MWMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTG9jYWwvSW5uZXJJbm5lckNsYXNzLmphdmEKQEAgLTAsMCArMSwyMSBAQAorcHVibGljIGNsYXNzIEluIHsKKworICAgIHZvaWQgZm9vbCgpIHsKKyAgICAgICAgZmluYWwgYm9vbGVhbiBkZWxldGUgPSBuYXJyKCk7CisgICAgICAgIG5ldyBSdW5uYWJsZSgpIHsKKyAgICAgICAgICAgIHB1YmxpYyB2b2lkIHJ1bigpIHsKKyAgICAgICAgICAgICAgICBuZXcgUnVubmFibGUoKSB7CisgICAgICAgICAgICAgICAgICAgIHB1YmxpYyB2b2lkIHJ1bigpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkZWw8Y2FyZXQ+ZXRlKSB7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0ucnVuKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH07CisgICAgfQorCisgICAgYm9vbGVhbiBuYXJyKCkgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZUxvY2FsL0lubmVySW5uZXJDbGFzcy5qYXZhLmFmdGVyIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZUxvY2FsL0lubmVySW5uZXJDbGFzcy5qYXZhLmFmdGVyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQxM2M0ZTEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTG9jYWwvSW5uZXJJbm5lckNsYXNzLmphdmEuYWZ0ZXIKQEAgLTAsMCArMSwyMCBAQAorcHVibGljIGNsYXNzIEluIHsKKworICAgIHZvaWQgZm9vbCgpIHsKKyAgICAgICAgbmV3IFJ1bm5hYmxlKCkgeworICAgICAgICAgICAgcHVibGljIHZvaWQgcnVuKCkgeworICAgICAgICAgICAgICAgIG5ldyBSdW5uYWJsZSgpIHsKKyAgICAgICAgICAgICAgICAgICAgcHVibGljIHZvaWQgcnVuKCkgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG5hcnIoKSkgeworCisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9LnJ1bigpOworICAgICAgICAgICAgfQorICAgICAgICB9OworICAgIH0KKworICAgIGJvb2xlYW4gbmFycigpIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVMb2NhbC9MYW1iZGFFeHByLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTG9jYWwvTGFtYmRhRXhwci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjExNTJjOTYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTG9jYWwvTGFtYmRhRXhwci5qYXZhCkBAIC0wLDAgKzEsMTEgQEAKK2ludGVyZmFjZSBTQU08WD4geworICAgICAgICBYIG0oaW50IGksIGludCBqKTsKKyAgICB9CisKK2NsYXNzIEZvbyB7ICAKKyAgICB2b2lkIHRlc3QoKSB7CisgICAgICAgIFNBTTxJbnRlZ2VyPiBjID0gKGksIGopLT5pICsgajsKKyAgICAgICAgbSg8Y2FyZXQ+Yyk7CisgICAgfQorICAgIHZvaWQgbShTQU08SW50ZWdlcj4gcykgeyB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZUxvY2FsL0xhbWJkYUV4cHIuamF2YS5hZnRlciBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVMb2NhbC9MYW1iZGFFeHByLmphdmEuYWZ0ZXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmJhYmU2ZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVMb2NhbC9MYW1iZGFFeHByLmphdmEuYWZ0ZXIKQEAgLTAsMCArMSwxMCBAQAoraW50ZXJmYWNlIFNBTTxYPiB7CisgICAgICAgIFggbShpbnQgaSwgaW50IGopOworICAgIH0KKworY2xhc3MgRm9vIHsgIAorICAgIHZvaWQgdGVzdCgpIHsKKyAgICAgICAgbSgoaSwgaiktPmkgKyBqKTsKKyAgICB9CisgICAgdm9pZCBtKFNBTTxJbnRlZ2VyPiBzKSB7IH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTG9jYWwvTGFtYmRhRXhwckFzUmVmUXVhbGlmaWVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTG9jYWwvTGFtYmRhRXhwckFzUmVmUXVhbGlmaWVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODFiMDI0MAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVMb2NhbC9MYW1iZGFFeHByQXNSZWZRdWFsaWZpZXIuamF2YQpAQCAtMCwwICsxLDI1IEBACisvKgorICogQ29weXJpZ2h0IDIwMDAtMjAxMiBKZXRCcmFpbnMgcy5yLm8uCisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcHVibGljIGNsYXNzIFRlc3QyIHsKKyAgaW50ZXJmYWNlIEkgeworICAgIGJvb2xlYW4gZm9vKFN0cmluZyBzKTsKKyAgfQorICB7CisgICAgSSBpID0gcyAtPiBzLmVuZHNXaXRoKCIuamF2YSIpOworICAgIDxjYXJldD5pLmdldENsYXNzKCk7CisgIH0KK30KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZUxvY2FsL0xhbWJkYUV4cHJBc1JlZlF1YWxpZmllci5qYXZhLmFmdGVyIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZUxvY2FsL0xhbWJkYUV4cHJBc1JlZlF1YWxpZmllci5qYXZhLmFmdGVyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc1MzNiM2MKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTG9jYWwvTGFtYmRhRXhwckFzUmVmUXVhbGlmaWVyLmphdmEuYWZ0ZXIKQEAgLTAsMCArMSwyNCBAQAorLyoKKyAqIENvcHlyaWdodCAyMDAwLTIwMTIgSmV0QnJhaW5zIHMuci5vLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3B1YmxpYyBjbGFzcyBUZXN0MiB7CisgIGludGVyZmFjZSBJIHsKKyAgICBib29sZWFuIGZvbyhTdHJpbmcgcyk7CisgIH0KKyAgeworICAgICAgKChJKSBzIC0+IHMuZW5kc1dpdGgoIi5qYXZhIikpLmdldENsYXNzKCk7CisgIH0KK30KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZUxvY2FsL0xvY2FsVmFySW5zaWRlTGFtYmRhQm9keS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZUxvY2FsL0xvY2FsVmFySW5zaWRlTGFtYmRhQm9keS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU1MGE5M2YKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTG9jYWwvTG9jYWxWYXJJbnNpZGVMYW1iZGFCb2R5LmphdmEKQEAgLTAsMCArMSwyMyBAQAorLyoKKyAqIENvcHlyaWdodCAyMDAwLTIwMTIgSmV0QnJhaW5zIHMuci5vLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3B1YmxpYyBjbGFzcyBUZXN0MiB7CisgIHsKKyAgICBmaW5hbCBTdHJpbmcgcCA9ICJoZWxsbyI7CisgICAgUnVubmFibGUgciA9ICgpIC0+IHtTeXN0ZW0ub3V0LnByaW50bG4oPGNhcmV0PnApO307CisgICAgU3lzdGVtLm91dC5wcmludGxuKHApOworICB9Cit9CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVMb2NhbC9Mb2NhbFZhckluc2lkZUxhbWJkYUJvZHkuamF2YS5hZnRlciBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVMb2NhbC9Mb2NhbFZhckluc2lkZUxhbWJkYUJvZHkuamF2YS5hZnRlcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lOTQxZGQzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZUxvY2FsL0xvY2FsVmFySW5zaWRlTGFtYmRhQm9keS5qYXZhLmFmdGVyCkBAIC0wLDAgKzEsMjIgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwMC0yMDEyIEpldEJyYWlucyBzLnIuby4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwdWJsaWMgY2xhc3MgVGVzdDIgeworICB7CisgICAgICBSdW5uYWJsZSByID0gKCkgLT4ge1N5c3RlbS5vdXQucHJpbnRsbigiaGVsbG8iKTt9OworICAgIFN5c3RlbS5vdXQucHJpbnRsbigiaGVsbG8iKTsKKyAgfQorfQorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTG9jYWwvTG9jYWxWYXJJbnNpZGVMYW1iZGFCb2R5MS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZUxvY2FsL0xvY2FsVmFySW5zaWRlTGFtYmRhQm9keTEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NmM5N2JkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZUxvY2FsL0xvY2FsVmFySW5zaWRlTGFtYmRhQm9keTEuamF2YQpAQCAtMCwwICsxLDI0IEBACisvKgorICogQ29weXJpZ2h0IDIwMDAtMjAxMiBKZXRCcmFpbnMgcy5yLm8uCisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcHVibGljIGNsYXNzIFRlc3QyIHsKKyAgeworICAgIFJ1bm5hYmxlIHIgPSAoKSAtPiB7CisgICAgICBmaW5hbCBTdHJpbmcgcCA9ICJoZWxsbyI7CisgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oPGNhcmV0PnApOworICAgIH07CisgIH0KK30KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZUxvY2FsL0xvY2FsVmFySW5zaWRlTGFtYmRhQm9keTEuamF2YS5hZnRlciBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVMb2NhbC9Mb2NhbFZhckluc2lkZUxhbWJkYUJvZHkxLmphdmEuYWZ0ZXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjZlZjUwNwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVMb2NhbC9Mb2NhbFZhckluc2lkZUxhbWJkYUJvZHkxLmphdmEuYWZ0ZXIKQEAgLTAsMCArMSwyMyBAQAorLyoKKyAqIENvcHlyaWdodCAyMDAwLTIwMTIgSmV0QnJhaW5zIHMuci5vLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3B1YmxpYyBjbGFzcyBUZXN0MiB7CisgIHsKKyAgICBSdW5uYWJsZSByID0gKCkgLT4geworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oImhlbGxvIik7CisgICAgfTsKKyAgfQorfQorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTG9jYWwvTG9jYWxWYXJJbnNpZGVMYW1iZGFCb2R5Mi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZUxvY2FsL0xvY2FsVmFySW5zaWRlTGFtYmRhQm9keTIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMzc3NzRmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZUxvY2FsL0xvY2FsVmFySW5zaWRlTGFtYmRhQm9keTIuamF2YQpAQCAtMCwwICsxLDggQEAKK2NsYXNzIFRlc3QgeworICB7CisgICAgUnVubmFibGUgeCA9ICgpIC0+IHsKKyAgICAgIFN0cmluZyBoZWxsbyA9IG5ldyBTdHJpbmcoImhlbGxvIik7CisgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oPGNhcmV0PmhlbGxvKTsKKyAgICB9OworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZUxvY2FsL0xvY2FsVmFySW5zaWRlTGFtYmRhQm9keTIuamF2YS5hZnRlciBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVMb2NhbC9Mb2NhbFZhckluc2lkZUxhbWJkYUJvZHkyLmphdmEuYWZ0ZXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWU4ZGU0YQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVMb2NhbC9Mb2NhbFZhckluc2lkZUxhbWJkYUJvZHkyLmphdmEuYWZ0ZXIKQEAgLTAsMCArMSw3IEBACitjbGFzcyBUZXN0IHsKKyAgeworICAgIFJ1bm5hYmxlIHggPSAoKSAtPiB7CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihuZXcgU3RyaW5nKCJoZWxsbyIpKTsKKyAgICB9OworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZUxvY2FsL0xvY2FsVmFySW5zaWRlTGFtYmRhQm9keVdyaXRlVXNhZ2UuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVMb2NhbC9Mb2NhbFZhckluc2lkZUxhbWJkYUJvZHlXcml0ZVVzYWdlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTU5MGFhNQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVMb2NhbC9Mb2NhbFZhckluc2lkZUxhbWJkYUJvZHlXcml0ZVVzYWdlLmphdmEKQEAgLTAsMCArMSwxMCBAQAorY2xhc3MgVGVzdCB7CisgIHsKKyAgICBSdW5uYWJsZSB4ID0gKCkgLT4geworICAgICAgaW50IGhlbGxvID0gOTsKKyAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihoZWxsbyk7CisgICAgICArK2hlbGxvOworICAgICAgU3lzdGVtLm91dC5wcmludGxuKGhlPGNhcmV0Pmxsbyk7CisgICAgfTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVMb2NhbC9NZXRob2RSZWZBc1JlZlF1YWxpZmllci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZUxvY2FsL01ldGhvZFJlZkFzUmVmUXVhbGlmaWVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTY1Mjg2MgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVMb2NhbC9NZXRob2RSZWZBc1JlZlF1YWxpZmllci5qYXZhCkBAIC0wLDAgKzEsMTQgQEAKK2NsYXNzIFRlc3QgeworICB7CisgICAgICBCYXIgYmFyID0gVGVzdDo6bGVuZ3RoOworICAgICAgYjxjYXJldD5hci5fKCIiKTsKKyAgfQorCisgIHB1YmxpYyBzdGF0aWMgSW50ZWdlciBsZW5ndGgoU3RyaW5nIHMpIHsKKyAgICByZXR1cm4gcy5sZW5ndGgoKTsKKyAgfQorCisgIGludGVyZmFjZSBCYXIgeworICAgIEludGVnZXIgXyhTdHJpbmcgcyk7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTG9jYWwvTWV0aG9kUmVmQXNSZWZRdWFsaWZpZXIuamF2YS5hZnRlciBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVMb2NhbC9NZXRob2RSZWZBc1JlZlF1YWxpZmllci5qYXZhLmFmdGVyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI4MmYyY2EKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTG9jYWwvTWV0aG9kUmVmQXNSZWZRdWFsaWZpZXIuamF2YS5hZnRlcgpAQCAtMCwwICsxLDEzIEBACitjbGFzcyBUZXN0IHsKKyAgeworICAgICAgKChCYXIpIFRlc3Q6Omxlbmd0aCkuXygiIik7CisgIH0KKworICBwdWJsaWMgc3RhdGljIEludGVnZXIgbGVuZ3RoKFN0cmluZyBzKSB7CisgICAgcmV0dXJuIHMubGVuZ3RoKCk7CisgIH0KKworICBpbnRlcmZhY2UgQmFyIHsKKyAgICBJbnRlZ2VyIF8oU3RyaW5nIHMpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZUxvY2FsL05ld0V4cHJlc3Npb24uamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVMb2NhbC9OZXdFeHByZXNzaW9uLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTA2Njc5NwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVMb2NhbC9OZXdFeHByZXNzaW9uLmphdmEKQEAgLTAsMCArMSw3IEBACitjbGFzcyBUZXN0IHsKKworICBTdHJpbmdbXSBnZXQoKXsKKyAgICBTdHJpbmdbXSB0bzxjYXJldD5JbmxpbmUgPSBuZXcgU3RyaW5nW117IiJ9OworICAgIHJldHVybiB0b0lubGluZTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVMb2NhbC9OZXdFeHByZXNzaW9uLmphdmEuYWZ0ZXIgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTG9jYWwvTmV3RXhwcmVzc2lvbi5qYXZhLmFmdGVyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNmYzZmNmIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTG9jYWwvTmV3RXhwcmVzc2lvbi5qYXZhLmFmdGVyCkBAIC0wLDAgKzEsNiBAQAorY2xhc3MgVGVzdCB7CisKKyAgU3RyaW5nW10gZ2V0KCl7CisgICAgICByZXR1cm4gbmV3IFN0cmluZ1tdeyIifTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVMb2NhbC9OZXdFeHByZXNzaW9uV2l0aERpYW1vbmQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVMb2NhbC9OZXdFeHByZXNzaW9uV2l0aERpYW1vbmQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNTYzMGE0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZUxvY2FsL05ld0V4cHJlc3Npb25XaXRoRGlhbW9uZC5qYXZhCkBAIC0wLDAgKzEsOSBAQAoraW1wb3J0IGphdmEudXRpbC4qOworCitjbGFzcyBUZXN0IHsKKworICB2b2lkIGZvbygpeworICAgIE1hcDxJbnRlZ2VyLCBTdHJpbmc+IG08Y2FyZXQ+YXAgPSBuZXcgSGFzaE1hcDw+KCk7CisgICAgU3lzdGVtLm91dC5wcmludGxuKG1hcCk7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTG9jYWwvTmV3RXhwcmVzc2lvbldpdGhEaWFtb25kLmphdmEuYWZ0ZXIgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTG9jYWwvTmV3RXhwcmVzc2lvbldpdGhEaWFtb25kLmphdmEuYWZ0ZXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmIxZDRmZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVMb2NhbC9OZXdFeHByZXNzaW9uV2l0aERpYW1vbmQuamF2YS5hZnRlcgpAQCAtMCwwICsxLDggQEAKK2ltcG9ydCBqYXZhLnV0aWwuKjsKKworY2xhc3MgVGVzdCB7CisKKyAgdm9pZCBmb28oKXsKKyAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihuZXcgSGFzaE1hcDxJbnRlZ2VyLCBTdHJpbmc+KCkpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZUxvY2FsL05ld0V4cHJlc3Npb25XaXRoUHJlc2VydmVkRGlhbW9uZC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZUxvY2FsL05ld0V4cHJlc3Npb25XaXRoUHJlc2VydmVkRGlhbW9uZC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc4NmQyM2EyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZUxvY2FsL05ld0V4cHJlc3Npb25XaXRoUHJlc2VydmVkRGlhbW9uZC5qYXZhCkBAIC0wLDAgKzEsOSBAQAoraW1wb3J0IGphdmEudXRpbC4qOworCitjbGFzcyBUZXN0IHsKKworICB2b2lkIGZvbygpeworICAgIE1hcDxJbnRlZ2VyLCBTdHJpbmc+IG08Y2FyZXQ+YXAgPSBuZXcgSGFzaE1hcDw+KCk7CisgICAgTWFwPEludGVnZXIsIFN0cmluZz4gbWFwMSA9IG1hcDsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVMb2NhbC9OZXdFeHByZXNzaW9uV2l0aFByZXNlcnZlZERpYW1vbmQuamF2YS5hZnRlciBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVMb2NhbC9OZXdFeHByZXNzaW9uV2l0aFByZXNlcnZlZERpYW1vbmQuamF2YS5hZnRlcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYjc2OTQzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZUxvY2FsL05ld0V4cHJlc3Npb25XaXRoUHJlc2VydmVkRGlhbW9uZC5qYXZhLmFmdGVyCkBAIC0wLDAgKzEsOCBAQAoraW1wb3J0IGphdmEudXRpbC4qOworCitjbGFzcyBUZXN0IHsKKworICB2b2lkIGZvbygpeworICAgICAgTWFwPEludGVnZXIsIFN0cmluZz4gbWFwMSA9IG5ldyBIYXNoTWFwPD4oKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVMb2NhbC9Ob0Nhc3RBcm91bmRMYW1iZGEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVMb2NhbC9Ob0Nhc3RBcm91bmRMYW1iZGEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MmY0NDBhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZUxvY2FsL05vQ2FzdEFyb3VuZExhbWJkYS5qYXZhCkBAIC0wLDAgKzEsMTIgQEAKK2NsYXNzIFRlc3QgeworICB2b2lkIHRlc3QoKSB7CisgICAgSSBiMSA9IFN5c3RlbTo6ZXhpdDsKKyAgICBhKGI8Y2FyZXQ+MSk7CisgIH0KKworICB2b2lkIGEoSSBiKSB7fQorCisgIGludGVyZmFjZSBJIHsKKyAgICB2b2lkIGkoaW50IGkpOworICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTG9jYWwvTm9DYXN0QXJvdW5kTGFtYmRhLmphdmEuYWZ0ZXIgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTG9jYWwvTm9DYXN0QXJvdW5kTGFtYmRhLmphdmEuYWZ0ZXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZThkZWE0NwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVMb2NhbC9Ob0Nhc3RBcm91bmRMYW1iZGEuamF2YS5hZnRlcgpAQCAtMCwwICsxLDExIEBACitjbGFzcyBUZXN0IHsKKyAgdm9pZCB0ZXN0KCkgeworICAgICAgYShTeXN0ZW06OmV4aXQpOworICB9CisKKyAgdm9pZCBhKEkgYikge30KKworICBpbnRlcmZhY2UgSSB7CisgICAgdm9pZCBpKGludCBpKTsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZUxvY2FsL05vUmVkdW5kYW50Q2FzdHMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVMb2NhbC9Ob1JlZHVuZGFudENhc3RzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWY2YWI5MgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVMb2NhbC9Ob1JlZHVuZGFudENhc3RzLmphdmEKQEAgLTAsMCArMSwxMiBAQAorY2xhc3MgWW9ZbyB7CisgICAgdm9pZCBiYXIgKCkge30KKyAgICB2b2lkIGYgKCkgeworICAgICAgICBZb1lvIHlvWW9ZbyA9IGZvbygpOworICAgICAgICA8Y2FyZXQ+eW9Zb1lvLmJhcigpOworICAgIH0KKworICAgIHByaXZhdGUgWW9Zb1lvIGZvbygpIHsKKworICAgIH0KKyAgICBjbGFzcyBZb1lvWW8gZXh0ZW5kcyBZb1lvIHt9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZUxvY2FsL05vUmVkdW5kYW50Q2FzdHMuamF2YS5hZnRlciBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVMb2NhbC9Ob1JlZHVuZGFudENhc3RzLmphdmEuYWZ0ZXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWU0OTQwYwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVMb2NhbC9Ob1JlZHVuZGFudENhc3RzLmphdmEuYWZ0ZXIKQEAgLTAsMCArMSwxMSBAQAorY2xhc3MgWW9ZbyB7CisgICAgdm9pZCBiYXIgKCkge30KKyAgICB2b2lkIGYgKCkgeworICAgICAgICBmb28oKS5iYXIoKTsKKyAgICB9CisKKyAgICBwcml2YXRlIFlvWW9ZbyBmb28oKSB7CisKKyAgICB9CisgICAgY2xhc3MgWW9Zb1lvIGV4dGVuZHMgWW9ZbyB7fQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVMb2NhbC9Ob25FcUFzc2lnbm1lbnQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVMb2NhbC9Ob25FcUFzc2lnbm1lbnQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNjllYzYxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZUxvY2FsL05vbkVxQXNzaWdubWVudC5qYXZhCkBAIC0wLDAgKzEsNyBAQAorY2xhc3MgVGVzdCB7CisgIHZvaWQgZm9vKCkgeworICAgIGludCB4ID0gMTsKKyAgICB4ICs9IDE7CisgICAgaW50IHkgPSA8Y2FyZXQ+eDsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVMb2NhbC9Ob25Xcml0ZVVuYXJ5RXhwcmVzc2lvbi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZUxvY2FsL05vbldyaXRlVW5hcnlFeHByZXNzaW9uLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDE3YWZiZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVMb2NhbC9Ob25Xcml0ZVVuYXJ5RXhwcmVzc2lvbi5qYXZhCkBAIC0wLDAgKzEsNyBAQAorY2xhc3MgVGVzdCB7CisKKyAgdm9pZCBnZXQoKXsKKyAgICBib29sZWFuIHRvSW5saW5lID0gZmFsc2U7CisgICAgaWYgKCF0bzxjYXJldD5JbmxpbmUpIHJldHVybjsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVMb2NhbC9Ob25Xcml0ZVVuYXJ5RXhwcmVzc2lvbi5qYXZhLmFmdGVyIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZUxvY2FsL05vbldyaXRlVW5hcnlFeHByZXNzaW9uLmphdmEuYWZ0ZXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzRiNWEzOQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVMb2NhbC9Ob25Xcml0ZVVuYXJ5RXhwcmVzc2lvbi5qYXZhLmFmdGVyCkBAIC0wLDAgKzEsNiBAQAorY2xhc3MgVGVzdCB7CisKKyAgdm9pZCBnZXQoKXsKKyAgICAgIGlmICghZmFsc2UpIHJldHVybjsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVMb2NhbC9RdWFsaWZpZWQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVMb2NhbC9RdWFsaWZpZWQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYzYyNmUwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZUxvY2FsL1F1YWxpZmllZC5qYXZhCkBAIC0wLDAgKzEsMTcgQEAKK3B1YmxpYyBjbGFzcyBBIHsKKyAgaW50IGYgPSAyMzsKKworICBzdGF0aWMgY2xhc3MgQiB7CisgICAgc3RhdGljIGludCBmID0gNDI7CisgIH0KKworICBpbnQgZm9vKCkgeworICAgIGludCByID0gQi5mOworICAgIEEgQiA9IHRoaXM7CisgICAgcmV0dXJuIHI8Y2FyZXQ+OworICB9CisKKyAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgeworICAgIFN5c3RlbS5vdXQucHJpbnRsbihuZXcgQSgpLmZvbygpKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVMb2NhbC9RdWFsaWZpZWQuamF2YS5hZnRlciBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVMb2NhbC9RdWFsaWZpZWQuamF2YS5hZnRlcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMDJiZTA1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZUxvY2FsL1F1YWxpZmllZC5qYXZhLmFmdGVyCkBAIC0wLDAgKzEsMTYgQEAKK3B1YmxpYyBjbGFzcyBBIHsKKyAgaW50IGYgPSAyMzsKKworICBzdGF0aWMgY2xhc3MgQiB7CisgICAgc3RhdGljIGludCBmID0gNDI7CisgIH0KKworICBpbnQgZm9vKCkgeworICAgICAgQSBCID0gdGhpczsKKyAgICByZXR1cm4gQS5CLmY7CisgIH0KKworICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CisgICAgU3lzdGVtLm91dC5wcmludGxuKG5ldyBBKCkuZm9vKCkpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZUxvY2FsL1F1YWxpZmllci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZUxvY2FsL1F1YWxpZmllci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc3Y2Y2MjQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTG9jYWwvUXVhbGlmaWVyLmphdmEKQEAgLTAsMCArMSwxMiBAQAorY2xhc3MgT3V0ZXIgeworICAgIFN0cmluZyBnZXRWYWx1ZSgpIHsgcmV0dXJuICIiO30KKyAgICB2b2lkIGRvU29tZXRoaW5nIChTdHJpbmcgeCkgeyB9CisgICAgdm9pZCBmb28oKSB7CisgICAgICAgIG5ldyBSdW5uYWJsZSgpIHsKKyAgICAgICAgICAgIHB1YmxpYyB2b2lkIHJ1bigpIHsKKyAgICAgICAgICAgICAgICBmaW5hbCBTdHJpbmcgPGNhcmV0PnZhbHVlID0gZ2V0VmFsdWUoKTsKKyAgICAgICAgICAgICAgICBkb1NvbWV0aGluZyh2YWx1ZSk7CisgICAgICAgICAgICB9CisgICAgICAgIH07CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZUxvY2FsL1F1YWxpZmllci5qYXZhLmFmdGVyIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZUxvY2FsL1F1YWxpZmllci5qYXZhLmFmdGVyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRiMDZhZjM2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZUxvY2FsL1F1YWxpZmllci5qYXZhLmFmdGVyCkBAIC0wLDAgKzEsMTEgQEAKK2NsYXNzIE91dGVyIHsKKyAgICBTdHJpbmcgZ2V0VmFsdWUoKSB7IHJldHVybiAiIjt9CisgICAgdm9pZCBkb1NvbWV0aGluZyAoU3RyaW5nIHgpIHsgfQorICAgIHZvaWQgZm9vKCkgeworICAgICAgICBuZXcgUnVubmFibGUoKSB7CisgICAgICAgICAgICBwdWJsaWMgdm9pZCBydW4oKSB7CisgICAgICAgICAgICAgICAgZG9Tb21ldGhpbmcoZ2V0VmFsdWUoKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH07CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZUxvY2FsL1N0YXRpY0ltcG9ydGVkLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTG9jYWwvU3RhdGljSW1wb3J0ZWQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZWEyM2I4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZUxvY2FsL1N0YXRpY0ltcG9ydGVkLmphdmEKQEAgLTAsMCArMSwyMyBAQAoraW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7CitpbXBvcnQgamF2YS51dGlsLkxpc3Q7CisKK2ltcG9ydCBzdGF0aWMgU3RhdGljcy5fZW1wdHlMaXN0OworCitwdWJsaWMgY2xhc3MgU3RhdGljcyB7CisKKyAgcHVibGljIHN0YXRpYyA8VD4gTGlzdDxUPiBfZW1wdHlMaXN0KCkgeworICAgIHJldHVybiBuZXcgQXJyYXlMaXN0PFQ+KCk7CisgIH0KK30KKworCitjbGFzcyBGb28geworICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CisgICAgTGlzdDxTdHJpbmc+IHYxID0gX2VtcHR5TGlzdCgpOworICAgIGRvU29tZXRoaW5nKHY8Y2FyZXQ+MSk7CisgIH0KKworICBwdWJsaWMgc3RhdGljIHZvaWQgZG9Tb21ldGhpbmcoTGlzdDxTdHJpbmc+IGxpc3QpIHsKKworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZUxvY2FsL1N0YXRpY0ltcG9ydGVkLmphdmEuYWZ0ZXIgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTG9jYWwvU3RhdGljSW1wb3J0ZWQuamF2YS5hZnRlcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNDBhNDllCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZUxvY2FsL1N0YXRpY0ltcG9ydGVkLmphdmEuYWZ0ZXIKQEAgLTAsMCArMSwyMiBAQAoraW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7CitpbXBvcnQgamF2YS51dGlsLkxpc3Q7CisKK2ltcG9ydCBzdGF0aWMgU3RhdGljcy5fZW1wdHlMaXN0OworCitwdWJsaWMgY2xhc3MgU3RhdGljcyB7CisKKyAgcHVibGljIHN0YXRpYyA8VD4gTGlzdDxUPiBfZW1wdHlMaXN0KCkgeworICAgIHJldHVybiBuZXcgQXJyYXlMaXN0PFQ+KCk7CisgIH0KK30KKworCitjbGFzcyBGb28geworICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CisgICAgICBkb1NvbWV0aGluZyhTdGF0aWNzLjxTdHJpbmc+X2VtcHR5TGlzdCgpKTsKKyAgfQorCisgIHB1YmxpYyBzdGF0aWMgdm9pZCBkb1NvbWV0aGluZyhMaXN0PFN0cmluZz4gbGlzdCkgeworCisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTG9jYWwvVHlwZUFyZ3VtZW50cy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZUxvY2FsL1R5cGVBcmd1bWVudHMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NGVjYWVkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZUxvY2FsL1R5cGVBcmd1bWVudHMuamF2YQpAQCAtMCwwICsxLDkgQEAKK2NsYXNzIEV4YW1wbGUgeworICAgIHByaXZhdGUgY2xhc3MgWDxUPiB7fQorICAgIHByaXZhdGUgPFQ+IFg8VD4gZm9vKCkgeyByZXR1cm4gbmV3IFg8VD4oKTsgfQorICAgIHByaXZhdGUgPFQ+IFg8VD4gYm9vKFg8VD4geCkge3JldHVybiB4O30KKyAgICBwcml2YXRlIHZvaWQgZ29vKCkgeworICAgICAgICBYPEludGVnZXI+IGYgPSBmb28oKTsKKyAgICAgICAgWDxJbnRlZ2VyPiB4ID0gYm9vKDxjYXJldD5mKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZUxvY2FsL1R5cGVBcmd1bWVudHMuamF2YS5hZnRlciBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVMb2NhbC9UeXBlQXJndW1lbnRzLmphdmEuYWZ0ZXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTIzZWQ0NwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVMb2NhbC9UeXBlQXJndW1lbnRzLmphdmEuYWZ0ZXIKQEAgLTAsMCArMSw4IEBACitjbGFzcyBFeGFtcGxlIHsKKyAgICBwcml2YXRlIGNsYXNzIFg8VD4ge30KKyAgICBwcml2YXRlIDxUPiBYPFQ+IGZvbygpIHsgcmV0dXJuIG5ldyBYPFQ+KCk7IH0KKyAgICBwcml2YXRlIDxUPiBYPFQ+IGJvbyhYPFQ+IHgpIHtyZXR1cm4geDt9CisgICAgcHJpdmF0ZSB2b2lkIGdvbygpIHsKKyAgICAgICAgWDxJbnRlZ2VyPiB4ID0gYm9vKHRoaXMuPEludGVnZXI+Zm9vKCkpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTG9jYWwvVHlwZUFyZ3VtZW50c1N0YXRpYy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZUxvY2FsL1R5cGVBcmd1bWVudHNTdGF0aWMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43Mzk0YWZhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZUxvY2FsL1R5cGVBcmd1bWVudHNTdGF0aWMuamF2YQpAQCAtMCwwICsxLDkgQEAKK2NsYXNzIEV4YW1wbGUgeworICAgIHByaXZhdGUgc3RhdGljIGNsYXNzIFg8VD4ge30KKyAgICBwcml2YXRlIHN0YXRpYyA8VD4gWDxUPiBmb28oKSB7IHJldHVybiBuZXcgWDxUPigpOyB9CisgICAgcHJpdmF0ZSBzdGF0aWMgPFQ+IFg8VD4gYm9vKFg8VD4geCkge3JldHVybiB4O30KKyAgICBwcml2YXRlIHN0YXRpYyB2b2lkIGdvbygpIHsKKyAgICAgICAgWDxJbnRlZ2VyPiBmID0gZm9vKCk7CisgICAgICAgIFg8SW50ZWdlcj4geCA9IGJvbyg8Y2FyZXQ+Zik7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVMb2NhbC9UeXBlQXJndW1lbnRzU3RhdGljLmphdmEuYWZ0ZXIgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTG9jYWwvVHlwZUFyZ3VtZW50c1N0YXRpYy5qYXZhLmFmdGVyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNjOWNkZDcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTG9jYWwvVHlwZUFyZ3VtZW50c1N0YXRpYy5qYXZhLmFmdGVyCkBAIC0wLDAgKzEsOCBAQAorY2xhc3MgRXhhbXBsZSB7CisgICAgcHJpdmF0ZSBzdGF0aWMgY2xhc3MgWDxUPiB7fQorICAgIHByaXZhdGUgc3RhdGljIDxUPiBYPFQ+IGZvbygpIHsgcmV0dXJuIG5ldyBYPFQ+KCk7IH0KKyAgICBwcml2YXRlIHN0YXRpYyA8VD4gWDxUPiBib28oWDxUPiB4KSB7cmV0dXJuIHg7fQorICAgIHByaXZhdGUgc3RhdGljIHZvaWQgZ29vKCkgeworICAgICAgICBYPEludGVnZXI+IHggPSBib28oRXhhbXBsZS48SW50ZWdlcj5mb28oKSk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVMb2NhbC9VbmNoZWNrZWRDYXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTG9jYWwvVW5jaGVja2VkQ2FzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI1NDJlZDAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTG9jYWwvVW5jaGVja2VkQ2FzdC5qYXZhCkBAIC0wLDAgKzEsMTIgQEAKK2ltcG9ydCBqYXZhLnV0aWwuKjsKKworY2xhc3MgWCB7CisgIExpc3QgZ2V0Q2hpbGRyZW4oKSB7CisgICAgcmV0dXJuIG51bGw7CisgIH0KKworICB2b2lkIGl0ZXJhdGUoKSB7CisgICAgTGlzdDxYPiB4cyA9IGdldENoaWxkcmVuKCk7CisgICAgZm9yIChYIHggOiB4PGNhcmV0PnMpIHt9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTG9jYWwvVW5jaGVja2VkQ2FzdC5qYXZhLmFmdGVyIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZUxvY2FsL1VuY2hlY2tlZENhc3QuamF2YS5hZnRlcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NDUxNjliCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZUxvY2FsL1VuY2hlY2tlZENhc3QuamF2YS5hZnRlcgpAQCAtMCwwICsxLDExIEBACitpbXBvcnQgamF2YS51dGlsLio7CisKK2NsYXNzIFggeworICBMaXN0IGdldENoaWxkcmVuKCkgeworICAgIHJldHVybiBudWxsOworICB9CisKKyAgdm9pZCBpdGVyYXRlKCkgeworICAgICAgZm9yIChYIHggOiAoTGlzdDxYPikgZ2V0Q2hpbGRyZW4oKSkge30KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVMb2NhbC9VbmNoZWNrZWRDYXN0Tm90TmVlZGVkLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTG9jYWwvVW5jaGVja2VkQ2FzdE5vdE5lZWRlZC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFmNWNhZTQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTG9jYWwvVW5jaGVja2VkQ2FzdE5vdE5lZWRlZC5qYXZhCkBAIC0wLDAgKzEsMTMgQEAKK2ltcG9ydCBqYXZhLnV0aWwuKjsKKworY2xhc3MgWCB7CisgIExpc3QgZ2V0Q2hpbGRyZW4oKSB7CisgICAgcmV0dXJuIG51bGw7CisgIH0KKworICB2b2lkIGl0ZXJhdGUoKSB7CisgICAgTGlzdDxYPiB4cyA9IGdldENoaWxkcmVuKCk7CisgICAgZm9vKHg8Y2FyZXQ+cyk7CisgIH0KKyAgdm9pZCBmb28oTGlzdDxYPiBsKXt9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZUxvY2FsL1VuY2hlY2tlZENhc3ROb3ROZWVkZWQuamF2YS5hZnRlciBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVMb2NhbC9VbmNoZWNrZWRDYXN0Tm90TmVlZGVkLmphdmEuYWZ0ZXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjc1MDIyOQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVMb2NhbC9VbmNoZWNrZWRDYXN0Tm90TmVlZGVkLmphdmEuYWZ0ZXIKQEAgLTAsMCArMSwxMiBAQAoraW1wb3J0IGphdmEudXRpbC4qOworCitjbGFzcyBYIHsKKyAgTGlzdCBnZXRDaGlsZHJlbigpIHsKKyAgICByZXR1cm4gbnVsbDsKKyAgfQorCisgIHZvaWQgaXRlcmF0ZSgpIHsKKyAgICAgIGZvbyhnZXRDaGlsZHJlbigpKTsKKyAgfQorICB2b2lkIGZvbyhMaXN0PFg+IGwpe30KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTG9jYWwvVXNlZEluSW5uZXJDbGFzcy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZUxvY2FsL1VzZWRJbklubmVyQ2xhc3MuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hOTZkYTcwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZUxvY2FsL1VzZWRJbklubmVyQ2xhc3MuamF2YQpAQCAtMCwwICsxLDEwIEBACitjbGFzcyBBIHsKKyAgICB2b2lkIGZvbyhmaW5hbCBNeU9iamVjdCBvYmopIHsKKyAgICAgICAgZmluYWwgTXlPYmplY3QgX29iaiA9IG9iajsKKyAgICAgICAgbmV3IFJ1bm5hYmxlKCkgeworICAgICAgICAgICAgcHVibGljIHZvaWQgcnVuKCkgeworICAgICAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbig8Y2FyZXQ+X29iaik7CisgICAgICAgICAgICB9CisgICAgICAgIH0ucnVuKCk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVMb2NhbC9Vc2VkSW5Jbm5lckNsYXNzLmphdmEuYWZ0ZXIgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTG9jYWwvVXNlZEluSW5uZXJDbGFzcy5qYXZhLmFmdGVyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZjMDYzODIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTG9jYWwvVXNlZEluSW5uZXJDbGFzcy5qYXZhLmFmdGVyCkBAIC0wLDAgKzEsOSBAQAorY2xhc3MgQSB7CisgICAgdm9pZCBmb28oZmluYWwgTXlPYmplY3Qgb2JqKSB7CisgICAgICAgIG5ldyBSdW5uYWJsZSgpIHsKKyAgICAgICAgICAgIHB1YmxpYyB2b2lkIHJ1bigpIHsKKyAgICAgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4ob2JqKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfS5ydW4oKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZUxvY2FsL1VzZWRJbklubmVyQ2xhc3MyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTG9jYWwvVXNlZEluSW5uZXJDbGFzczIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZDNiYTNiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZUxvY2FsL1VzZWRJbklubmVyQ2xhc3MyLmphdmEKQEAgLTAsMCArMSwxMSBAQAorY2xhc3MgQSB7CisgICAgdm9pZCBmb28oZmluYWwgTXlPYmplY3Qgb2JqKSB7CisgICAgICAgIGZpbmFsIE15T2JqZWN0IF9vYmo7CisgICAgICAgIF9vYmogPSBvYmo7CisgICAgICAgIG5ldyBSdW5uYWJsZSgpIHsKKyAgICAgICAgICAgIHB1YmxpYyB2b2lkIHJ1bigpIHsKKyAgICAgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oPGNhcmV0Pl9vYmopOworICAgICAgICAgICAgfQorICAgICAgICB9LnJ1bigpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTG9jYWwvVXNlZEluSW5uZXJDbGFzczIuamF2YS5hZnRlciBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVMb2NhbC9Vc2VkSW5Jbm5lckNsYXNzMi5qYXZhLmFmdGVyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZjMDYzODIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTG9jYWwvVXNlZEluSW5uZXJDbGFzczIuamF2YS5hZnRlcgpAQCAtMCwwICsxLDkgQEAKK2NsYXNzIEEgeworICAgIHZvaWQgZm9vKGZpbmFsIE15T2JqZWN0IG9iaikgeworICAgICAgICBuZXcgUnVubmFibGUoKSB7CisgICAgICAgICAgICBwdWJsaWMgdm9pZCBydW4oKSB7CisgICAgICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKG9iaik7CisgICAgICAgICAgICB9CisgICAgICAgIH0ucnVuKCk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVMb2NhbC9Vc2VkSW5Jbm5lckNsYXNzMy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZUxvY2FsL1VzZWRJbklubmVyQ2xhc3MzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTVlMTA3MwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVMb2NhbC9Vc2VkSW5Jbm5lckNsYXNzMy5qYXZhCkBAIC0wLDAgKzEsNDAgQEAKK3B1YmxpYyBjbGFzcyBJREVBMTc2MDYgeworCisgICAgcHVibGljIHZvaWQgZm9vKCkgeworICAgICAgICBmaW5hbCBQcmVmZXJlbmNlcyBwcmVmZXJlbmNlcyA9IFByZWZlcmVuY2VzLmdldEluc3RhbmNlKCk7CisgICAgICAgIC8vIHRyeSB0byBpbmxpbmUgJ3ByZWZlcmVuY2VzJworICAgICAgICBmaW5hbCBCYXIgYmFyID0gbmV3IEJhcig8Y2FyZXQ+cHJlZmVyZW5jZXMuZ2V0Q29tcG9uZW50KCkpOworICAgICAgICBiYXIudG9TdHJpbmcoKTsKKworICAgICAgICBUaHJlYWRVdGlscy5ydW4obmV3IFJ1bm5hYmxlKCkgeworICAgICAgICAgICAgcHVibGljIHZvaWQgcnVuKCkgeworICAgICAgICAgICAgICAgIGZpbmFsIEZvbyBmb28gPSBuZXcgRm9vKCk7CisgICAgICAgICAgICAgICAgZm9vLnNldFNpemUocHJlZmVyZW5jZXMuZ2V0RGltZW5zaW9uKCkuZ2V0U2l6ZSgpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSk7CisgICAgfQorCisgICAgY2xhc3MgUHJlZmVyZW5jZXMgeworCXB1YmxpYyBzdGF0aWMgUHJlZmVyZW5jZXMgZ2V0SW5zdGFuY2UoKSB7CisgICAgICAgICAgICByZXR1cm4gbmV3IFByZWZlcmVuY2VzKCk7CisgICAgICAgIH0KKworCXB1YmxpYyBKQ29tcG9uZW50IGdldENvbXBvbmVudCgpIHsKKyAgICAgICAgICAgIHJldHVybiBudWxsOworICAgICAgICB9CisKKwlwdWJsaWMgRGltZW5zaW9uIGdldERpbWVuc2lvbigpIHsKKyAgICAgICAgICAgIHJldHVybiBudWxsOworCX0KKyAgICB9CisKKyAgICBjbGFzcyBCYXIgeworCXB1YmxpYyBCYXIoSkNvbXBvbmVudCBjb21wb25lbnQpIHsKKwl9CisgICAgfQorCisgICAgY2xhc3MgVGhyZWFkVXRpbHMgeworICAgICAgICBwdWJsaWMgc3RhdGljIHZvaWQgcnVuKFJ1bm5hYmxlIHJ1bm5hYmxlKSB7CisgICAgICAgIH0KKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTG9jYWwvVXNlZEluSW5uZXJDbGFzczMuamF2YS5hZnRlciBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVMb2NhbC9Vc2VkSW5Jbm5lckNsYXNzMy5qYXZhLmFmdGVyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdlNTczZjUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTG9jYWwvVXNlZEluSW5uZXJDbGFzczMuamF2YS5hZnRlcgpAQCAtMCwwICsxLDM5IEBACitwdWJsaWMgY2xhc3MgSURFQTE3NjA2IHsKKworICAgIHB1YmxpYyB2b2lkIGZvbygpIHsKKyAgICAgICAgLy8gdHJ5IHRvIGlubGluZSAncHJlZmVyZW5jZXMnCisgICAgICAgIGZpbmFsIEJhciBiYXIgPSBuZXcgQmFyKFByZWZlcmVuY2VzLmdldEluc3RhbmNlKCkuZ2V0Q29tcG9uZW50KCkpOworICAgICAgICBiYXIudG9TdHJpbmcoKTsKKworICAgICAgICBUaHJlYWRVdGlscy5ydW4obmV3IFJ1bm5hYmxlKCkgeworICAgICAgICAgICAgcHVibGljIHZvaWQgcnVuKCkgeworICAgICAgICAgICAgICAgIGZpbmFsIEZvbyBmb28gPSBuZXcgRm9vKCk7CisgICAgICAgICAgICAgICAgZm9vLnNldFNpemUoUHJlZmVyZW5jZXMuZ2V0SW5zdGFuY2UoKS5nZXREaW1lbnNpb24oKS5nZXRTaXplKCkpOworICAgICAgICAgICAgfQorICAgICAgICB9KTsKKyAgICB9CisKKyAgICBjbGFzcyBQcmVmZXJlbmNlcyB7CisJcHVibGljIHN0YXRpYyBQcmVmZXJlbmNlcyBnZXRJbnN0YW5jZSgpIHsKKyAgICAgICAgICAgIHJldHVybiBuZXcgUHJlZmVyZW5jZXMoKTsKKyAgICAgICAgfQorCisJcHVibGljIEpDb21wb25lbnQgZ2V0Q29tcG9uZW50KCkgeworICAgICAgICAgICAgcmV0dXJuIG51bGw7CisgICAgICAgIH0KKworCXB1YmxpYyBEaW1lbnNpb24gZ2V0RGltZW5zaW9uKCkgeworICAgICAgICAgICAgcmV0dXJuIG51bGw7CisJfQorICAgIH0KKworICAgIGNsYXNzIEJhciB7CisJcHVibGljIEJhcihKQ29tcG9uZW50IGNvbXBvbmVudCkgeworCX0KKyAgICB9CisKKyAgICBjbGFzcyBUaHJlYWRVdGlscyB7CisgICAgICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBydW4oUnVubmFibGUgcnVubmFibGUpIHsKKyAgICAgICAgfQorICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVMb2NhbC9Vc2VkSW5Jbm5lckNsYXNzNC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZUxvY2FsL1VzZWRJbklubmVyQ2xhc3M0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDVlNmRmNQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVMb2NhbC9Vc2VkSW5Jbm5lckNsYXNzNC5qYXZhCkBAIC0wLDAgKzEsNDAgQEAKK3B1YmxpYyBjbGFzcyBJREVBMTc2MDYgeworCisgICAgcHVibGljIHZvaWQgZm9vKCkgeworICAgICAgICBmaW5hbCBQcmVmZXJlbmNlcyBwcmVmZXJlbmNlcyA9IFByZWZlcmVuY2VzLmdldEluc3RhbmNlKCk7CisgICAgICAgIC8vIHRyeSB0byBpbmxpbmUgJ3ByZWZlcmVuY2VzJworICAgICAgICBmaW5hbCBCYXIgYmFyID0gbmV3IEJhcihwcmVmZXJlbmNlcy5nZXRDb21wb25lbnQoKSk7CisgICAgICAgIGJhci50b1N0cmluZygpOworCisgICAgICAgIFRocmVhZFV0aWxzLnJ1bihuZXcgUnVubmFibGUoKSB7CisgICAgICAgICAgICBwdWJsaWMgdm9pZCBydW4oKSB7CisgICAgICAgICAgICAgICAgZmluYWwgRm9vIGZvbyA9IG5ldyBGb28oKTsKKyAgICAgICAgICAgICAgICBmb28uc2V0U2l6ZSg8Y2FyZXQ+cHJlZmVyZW5jZXMuZ2V0RGltZW5zaW9uKCkuZ2V0U2l6ZSgpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSk7CisgICAgfQorCisgICAgY2xhc3MgUHJlZmVyZW5jZXMgeworCXB1YmxpYyBzdGF0aWMgUHJlZmVyZW5jZXMgZ2V0SW5zdGFuY2UoKSB7CisgICAgICAgICAgICByZXR1cm4gbmV3IFByZWZlcmVuY2VzKCk7CisgICAgICAgIH0KKworCXB1YmxpYyBKQ29tcG9uZW50IGdldENvbXBvbmVudCgpIHsKKyAgICAgICAgICAgIHJldHVybiBudWxsOworICAgICAgICB9CisKKwlwdWJsaWMgRGltZW5zaW9uIGdldERpbWVuc2lvbigpIHsKKyAgICAgICAgICAgIHJldHVybiBudWxsOworCX0KKyAgICB9CisKKyAgICBjbGFzcyBCYXIgeworCXB1YmxpYyBCYXIoSkNvbXBvbmVudCBjb21wb25lbnQpIHsKKwl9CisgICAgfQorCisgICAgY2xhc3MgVGhyZWFkVXRpbHMgeworICAgICAgICBwdWJsaWMgc3RhdGljIHZvaWQgcnVuKFJ1bm5hYmxlIHJ1bm5hYmxlKSB7CisgICAgICAgIH0KKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTG9jYWwvVXNlZEluSW5uZXJDbGFzczQuamF2YS5hZnRlciBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVMb2NhbC9Vc2VkSW5Jbm5lckNsYXNzNC5qYXZhLmFmdGVyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdlNTczZjUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTG9jYWwvVXNlZEluSW5uZXJDbGFzczQuamF2YS5hZnRlcgpAQCAtMCwwICsxLDM5IEBACitwdWJsaWMgY2xhc3MgSURFQTE3NjA2IHsKKworICAgIHB1YmxpYyB2b2lkIGZvbygpIHsKKyAgICAgICAgLy8gdHJ5IHRvIGlubGluZSAncHJlZmVyZW5jZXMnCisgICAgICAgIGZpbmFsIEJhciBiYXIgPSBuZXcgQmFyKFByZWZlcmVuY2VzLmdldEluc3RhbmNlKCkuZ2V0Q29tcG9uZW50KCkpOworICAgICAgICBiYXIudG9TdHJpbmcoKTsKKworICAgICAgICBUaHJlYWRVdGlscy5ydW4obmV3IFJ1bm5hYmxlKCkgeworICAgICAgICAgICAgcHVibGljIHZvaWQgcnVuKCkgeworICAgICAgICAgICAgICAgIGZpbmFsIEZvbyBmb28gPSBuZXcgRm9vKCk7CisgICAgICAgICAgICAgICAgZm9vLnNldFNpemUoUHJlZmVyZW5jZXMuZ2V0SW5zdGFuY2UoKS5nZXREaW1lbnNpb24oKS5nZXRTaXplKCkpOworICAgICAgICAgICAgfQorICAgICAgICB9KTsKKyAgICB9CisKKyAgICBjbGFzcyBQcmVmZXJlbmNlcyB7CisJcHVibGljIHN0YXRpYyBQcmVmZXJlbmNlcyBnZXRJbnN0YW5jZSgpIHsKKyAgICAgICAgICAgIHJldHVybiBuZXcgUHJlZmVyZW5jZXMoKTsKKyAgICAgICAgfQorCisJcHVibGljIEpDb21wb25lbnQgZ2V0Q29tcG9uZW50KCkgeworICAgICAgICAgICAgcmV0dXJuIG51bGw7CisgICAgICAgIH0KKworCXB1YmxpYyBEaW1lbnNpb24gZ2V0RGltZW5zaW9uKCkgeworICAgICAgICAgICAgcmV0dXJuIG51bGw7CisJfQorICAgIH0KKworICAgIGNsYXNzIEJhciB7CisJcHVibGljIEJhcihKQ29tcG9uZW50IGNvbXBvbmVudCkgeworCX0KKyAgICB9CisKKyAgICBjbGFzcyBUaHJlYWRVdGlscyB7CisgICAgICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBydW4oUnVubmFibGUgcnVubmFibGUpIHsKKyAgICAgICAgfQorICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVMb2NhbC9XaWxkY2FyZC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZUxvY2FsL1dpbGRjYXJkLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmFmY2RlMwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVMb2NhbC9XaWxkY2FyZC5qYXZhCkBAIC0wLDAgKzEsMTEgQEAKK2ltcG9ydCBqYXZhLnV0aWwuQ29sbGVjdGlvbjsKK2NsYXNzIFRlc3QgeworICB2b2lkIGZvbygpIHsKKyAgICBmaW5hbCBDb2xsZWN0aW9uPD8gZXh0ZW5kcyBOdW1iZXI+IGV4dGVuc2lvbnMgPSBnZXRFeHRlbnNpb25zKCk7CisgICAgZm9yIChOdW1iZXIgZXh0ZW5zaW9uIDogZXh0ZTxjYXJldD5uc2lvbnMpIHsKKyAgICB9CisgIH0KKworICBDb2xsZWN0aW9uPD8gZXh0ZW5kcyBOdW1iZXI+IGdldEV4dGVuc2lvbnMoKSB7cmV0dXJuIG51bGw7fQorfQorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTG9jYWwvV2lsZGNhcmQuamF2YS5hZnRlciBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVMb2NhbC9XaWxkY2FyZC5qYXZhLmFmdGVyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQyOWUxOWU3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZUxvY2FsL1dpbGRjYXJkLmphdmEuYWZ0ZXIKQEAgLTAsMCArMSwxMCBAQAoraW1wb3J0IGphdmEudXRpbC5Db2xsZWN0aW9uOworY2xhc3MgVGVzdCB7CisgIHZvaWQgZm9vKCkgeworICAgICAgZm9yIChOdW1iZXIgZXh0ZW5zaW9uIDogZ2V0RXh0ZW5zaW9ucygpKSB7CisgICAgfQorICB9CisKKyAgQ29sbGVjdGlvbjw/IGV4dGVuZHMgTnVtYmVyPiBnZXRFeHRlbnNpb25zKCkge3JldHVybiBudWxsO30KK30KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZU1ldGhvZC9BcnJheUFjY2Vzcy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZU1ldGhvZC9BcnJheUFjY2Vzcy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ0M2E3ZmEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTWV0aG9kL0FycmF5QWNjZXNzLmphdmEKQEAgLTAsMCArMSwxMSBAQAorY2xhc3MgQSB7CisgICAgcHVibGljIHZvaWQgdXNhZ2UoKSB7CisgICAgICAgIGludCBhcnJheVsxNTBdOworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGFycmF5Lmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICBtZXRob2QoYXJyYXlbaV0pOworICAgICAgICB9CisgICAgfQorICAgIHB1YmxpYyB2b2lkIDxjYXJldD5tZXRob2QoaW50IGkpIHsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKGkpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTWV0aG9kL0FycmF5QWNjZXNzLmphdmEuYWZ0ZXIgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTWV0aG9kL0FycmF5QWNjZXNzLmphdmEuYWZ0ZXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDQxMzEwYQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVNZXRob2QvQXJyYXlBY2Nlc3MuamF2YS5hZnRlcgpAQCAtMCwwICsxLDggQEAKK2NsYXNzIEEgeworICAgIHB1YmxpYyB2b2lkIHVzYWdlKCkgeworICAgICAgICBpbnQgYXJyYXlbMTUwXTsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBhcnJheS5sZW5ndGg7IGkrKykgeworICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKGFycmF5W2ldKTsKKyAgICAgICAgfQorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTWV0aG9kL0FycmF5VHlwZUluZmVyZW5jZUZyb21WYXJhcmdzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTWV0aG9kL0FycmF5VHlwZUluZmVyZW5jZUZyb21WYXJhcmdzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGI3NDA2NQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVNZXRob2QvQXJyYXlUeXBlSW5mZXJlbmNlRnJvbVZhcmFyZ3MuamF2YQpAQCAtMCwwICsxLDkgQEAKK2NsYXNzIFRlc3QgeworICA8VD4gdm9pZCBkb1NtdGgoVC4uLiBwcykgeworICAgIFN5c3RlbS5vdXQucHJpbnRsbihwcyk7CisgIH0KKworICB2b2lkIG0oKSB7CisgICAgZG9TPGNhcmV0Pm10aCgxLCAyLCAzKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVNZXRob2QvQXJyYXlUeXBlSW5mZXJlbmNlRnJvbVZhcmFyZ3MuamF2YS5hZnRlciBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVNZXRob2QvQXJyYXlUeXBlSW5mZXJlbmNlRnJvbVZhcmFyZ3MuamF2YS5hZnRlcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ODNhN2UwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZU1ldGhvZC9BcnJheVR5cGVJbmZlcmVuY2VGcm9tVmFyYXJncy5qYXZhLmFmdGVyCkBAIC0wLDAgKzEsNiBAQAorY2xhc3MgVGVzdCB7CisKKyAgICB2b2lkIG0oKSB7CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihuZXcgSW50ZWdlcltdezEsIDIsIDN9KTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZU1ldGhvZC9DYWxsSW5Gb3IuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVNZXRob2QvQ2FsbEluRm9yLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjY1OWVkNAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVNZXRob2QvQ2FsbEluRm9yLmphdmEKQEAgLTAsMCArMSwxOSBAQAorcHVibGljIGNsYXNzIEMgeworICAgIHB1YmxpYyB2b2lkIGRvU29tZXRoaW5nKCkgeworICAgICAgICBmb3IgKEl0ZXJhdG9yIGl0ID0gZ2V0U29tZU9iamVjdHMoKS5pdGVyYXRvcigpOyBpdC5oYXNOZXh0KCk7KSB7CisgICAgICAgICAgICBTdHJpbmcgdGV4dCA9IChTdHJpbmcpaXQubmV4dCgpOworICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJ0ZXh0ID0gIiArIHRleHQpOworICAgICAgICB9CisgICAgfQorCisgICAgcHJpdmF0ZSBDb2xsZWN0aW9uIDxjYXJldD5nZXRTb21lT2JqZWN0cygpIHsKKyAgICAgICAgZmluYWwgU3RyaW5nIHRleHQgPSAiaGVsbG8iOworICAgICAgICByZXR1cm4gZ2V0U29tZU9iamVjdHModGV4dCk7CisgICAgfQorCisgICAgcHJpdmF0ZSBDb2xsZWN0aW9uIGdldFNvbWVPYmplY3RzKFN0cmluZyB0ZXh0KSB7CisgICAgICAgIGZpbmFsIExpc3QgbGlzdCA9IG5ldyBBcnJheUxpc3QoKTsKKyAgICAgICAgbGlzdC5hZGQodGV4dCk7CisgICAgICAgIHJldHVybiBsaXN0OworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTWV0aG9kL0NhbGxJbkZvci5qYXZhLmFmdGVyIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZU1ldGhvZC9DYWxsSW5Gb3IuamF2YS5hZnRlcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NmJhM2Y1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZU1ldGhvZC9DYWxsSW5Gb3IuamF2YS5hZnRlcgpAQCAtMCwwICsxLDE1IEBACitwdWJsaWMgY2xhc3MgQyB7CisgICAgcHVibGljIHZvaWQgZG9Tb21ldGhpbmcoKSB7CisgICAgICAgIGZpbmFsIFN0cmluZyB0ZXh0MSA9ICJoZWxsbyI7CisgICAgICAgIGZvciAoSXRlcmF0b3IgaXQgPSBnZXRTb21lT2JqZWN0cyh0ZXh0MSkuaXRlcmF0b3IoKTsgaXQuaGFzTmV4dCgpOykgeworICAgICAgICAgICAgU3RyaW5nIHRleHQgPSAoU3RyaW5nKWl0Lm5leHQoKTsKKyAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigidGV4dCA9ICIgKyB0ZXh0KTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHByaXZhdGUgQ29sbGVjdGlvbiBnZXRTb21lT2JqZWN0cyhTdHJpbmcgdGV4dCkgeworICAgICAgICBmaW5hbCBMaXN0IGxpc3QgPSBuZXcgQXJyYXlMaXN0KCk7CisgICAgICAgIGxpc3QuYWRkKHRleHQpOworICAgICAgICByZXR1cm4gbGlzdDsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZU1ldGhvZC9DYWxsVW5kZXJJZi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZU1ldGhvZC9DYWxsVW5kZXJJZi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBkYjNlMTUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTWV0aG9kL0NhbGxVbmRlcklmLmphdmEKQEAgLTAsMCArMSwxNCBAQAorcHVibGljIGNsYXNzIEZvbyB7CisgICAgU3RyaW5nIGdldENvbXBvbmVudChJbnRlZ2VyIGkpIHsgcmV0dXJuIG51bGw7IH0KKyAgICBJbnRlZ2VyIG15STsKKworICAgIHB1YmxpYyB2b2lkIHVzYWdlKCkgeworICAgICAgICBpZiAobXlJICE9IG51bGwpCisgICAgICAgICAgICBtZXRob2QobXlJKTsKKyAgICB9CisKKyAgICB2b2lkIG1lPGNhcmV0PnRob2QoSW50ZWdlciBpKSB7CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihnZXRDb21wb25lbnQobXlJKSArIGdldENvbXBvbmVudChpKSk7CisgICAgfQorCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZU1ldGhvZC9DYWxsVW5kZXJJZi5qYXZhLmFmdGVyIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZU1ldGhvZC9DYWxsVW5kZXJJZi5qYXZhLmFmdGVyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAyNzFiZjcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTWV0aG9kL0NhbGxVbmRlcklmLmphdmEuYWZ0ZXIKQEAgLTAsMCArMSwxMCBAQAorcHVibGljIGNsYXNzIEZvbyB7CisgICAgU3RyaW5nIGdldENvbXBvbmVudChJbnRlZ2VyIGkpIHsgcmV0dXJuIG51bGw7IH0KKyAgICBJbnRlZ2VyIG15STsKKworICAgIHB1YmxpYyB2b2lkIHVzYWdlKCkgeworICAgICAgICBpZiAobXlJICE9IG51bGwpCisgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oZ2V0Q29tcG9uZW50KG15SSkgKyBnZXRDb21wb25lbnQobXlJKSk7CisgICAgfQorCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZU1ldGhvZC9DaGFpbmVkQ29uc3RydWN0b3IuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVNZXRob2QvQ2hhaW5lZENvbnN0cnVjdG9yLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTY0ZDI3NQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVNZXRob2QvQ2hhaW5lZENvbnN0cnVjdG9yLmphdmEKQEAgLTAsMCArMSwyMSBAQAorcHVibGljIGNsYXNzIElubGluZVRoaXMgeworICAgIHB1YmxpYyBJbmxpbmVUaGlzKCkgeworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oImNvZGUgYmxvY2sgaGVyZSIpOworICAgIH0KKworICAgIHB1YmxpYyBJbmxpbmVUaGlzKGludCBpKSB7CisgICAgICAgIHRoPGNhcmV0PmlzKCk7CisgICAgfQorCisgICAgcHVibGljIElubGluZVRoaXMoU3RyaW5nIHN0cikgeworICAgICAgICB0aGlzKEludGVnZXIucGFyc2VJbnQoc3RyKSk7CisgICAgfQorCisKKworCisgICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgeworICAgICAgICBJbmxpbmVUaGlzIGFJbmxpbmVUaGlzID0gbmV3IElubGluZVRoaXMoKTsKKyAgICAgICAgSW5saW5lVGhpcyBhSW5saW5lVGhpczEgPSBuZXcgSW5saW5lVGhpcygxKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZU1ldGhvZC9DaGFpbmVkQ29uc3RydWN0b3IuamF2YS5hZnRlciBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVNZXRob2QvQ2hhaW5lZENvbnN0cnVjdG9yLmphdmEuYWZ0ZXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTA0ZjhiMwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVNZXRob2QvQ2hhaW5lZENvbnN0cnVjdG9yLmphdmEuYWZ0ZXIKQEAgLTAsMCArMSwyMSBAQAorcHVibGljIGNsYXNzIElubGluZVRoaXMgeworICAgIHB1YmxpYyBJbmxpbmVUaGlzKCkgeworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oImNvZGUgYmxvY2sgaGVyZSIpOworICAgIH0KKworICAgIHB1YmxpYyBJbmxpbmVUaGlzKGludCBpKSB7CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiY29kZSBibG9jayBoZXJlIik7CisgICAgfQorCisgICAgcHVibGljIElubGluZVRoaXMoU3RyaW5nIHN0cikgeworICAgICAgICB0aGlzKEludGVnZXIucGFyc2VJbnQoc3RyKSk7CisgICAgfQorCisKKworCisgICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgeworICAgICAgICBJbmxpbmVUaGlzIGFJbmxpbmVUaGlzID0gbmV3IElubGluZVRoaXMoKTsKKyAgICAgICAgSW5saW5lVGhpcyBhSW5saW5lVGhpczEgPSBuZXcgSW5saW5lVGhpcygxKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZU1ldGhvZC9DaGFpbmVkQ29uc3RydWN0b3IxLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTWV0aG9kL0NoYWluZWRDb25zdHJ1Y3RvcjEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hOTkxMzNjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZU1ldGhvZC9DaGFpbmVkQ29uc3RydWN0b3IxLmphdmEKQEAgLTAsMCArMSwyMSBAQAorcHVibGljIGNsYXNzIElubGluZVRoaXMgeworICAgIHB1YmxpYyBJbmxpbmVUaGlzKCkgeworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oImNvZGUgYmxvY2sgaGVyZSIpOworICAgIH0KKworICAgIHB1YmxpYyBJbmxpbmVUaGlzKGludCBpKSB7CisgICAgICAgIHRoaXMoKTsKKyAgICB9CisKKyAgICBwdWJsaWMgSW5saW5lVGhpcyhTdHJpbmcgc3RyKSB7CisgICAgICAgIHRoPGNhcmV0PmlzKEludGVnZXIucGFyc2VJbnQoc3RyKSk7CisgICAgfQorCisKKworCisgICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgeworICAgICAgICBJbmxpbmVUaGlzIGFJbmxpbmVUaGlzID0gbmV3IElubGluZVRoaXMoKTsKKyAgICAgICAgSW5saW5lVGhpcyBhSW5saW5lVGhpczEgPSBuZXcgSW5saW5lVGhpcygxKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZU1ldGhvZC9DaGFpbmVkQ29uc3RydWN0b3IxLmphdmEuYWZ0ZXIgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTWV0aG9kL0NoYWluZWRDb25zdHJ1Y3RvcjEuamF2YS5hZnRlcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MTQzMTQxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZU1ldGhvZC9DaGFpbmVkQ29uc3RydWN0b3IxLmphdmEuYWZ0ZXIKQEAgLTAsMCArMSwxNyBAQAorcHVibGljIGNsYXNzIElubGluZVRoaXMgeworICAgIHB1YmxpYyBJbmxpbmVUaGlzKCkgeworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oImNvZGUgYmxvY2sgaGVyZSIpOworICAgIH0KKworICAgIHB1YmxpYyBJbmxpbmVUaGlzKFN0cmluZyBzdHIpIHsKKyAgICAgICAgdGhpcygpOworICAgIH0KKworCisKKworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKKyAgICAgICAgSW5saW5lVGhpcyBhSW5saW5lVGhpcyA9IG5ldyBJbmxpbmVUaGlzKCk7CisgICAgICAgIElubGluZVRoaXMgYUlubGluZVRoaXMxID0gbmV3IElubGluZVRoaXMoKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZU1ldGhvZC9DaGFpbmluZ0NvbnN0cnVjdG9yLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTWV0aG9kL0NoYWluaW5nQ29uc3RydWN0b3IuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41OGIxNmJjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZU1ldGhvZC9DaGFpbmluZ0NvbnN0cnVjdG9yLmphdmEKQEAgLTAsMCArMSwyMiBAQAorY2xhc3MgSW5saW5lTWV0aG9kVGVzdCB7CisgICAgcHVibGljIHN0YXRpYyBJbmxpbmVNZXRob2RUZXN0IGNyZWF0ZUluc3RhbmNlKCkgeworICAgICAgICByZXR1cm4gbmV3IElubGluZU1ldGhvZFRlc3QoMCk7CisgICAgfQorCisgICAgcHJvdGVjdGVkIDxjYXJldD5JbmxpbmVNZXRob2RUZXN0KGludCB5KSB7CisgICAgICAgIHRoaXMoImhlbGxvIHdvcmxkIiwgeSk7CisgICAgfQorCisgICAgcHJvdGVjdGVkIElubGluZU1ldGhvZFRlc3QoKSB7CisgICAgICAgIHRoaXMoMCk7CisgICAgfQorCisgICAgcHVibGljIElubGluZU1ldGhvZFRlc3QoU3RyaW5nIHRleHQsIGludCBpKSB7CisgICAgfQorfQorCitjbGFzcyBEZXJpdmVkIGV4dGVuZHMgSW5saW5lTWV0aG9kVGVzdCB7CisgICAgcHVibGljIERlcml2ZWQoaW50IGkpIHsKKyAgICAgICAgc3VwZXIoaSk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZU1ldGhvZC9DaGFpbmluZ0NvbnN0cnVjdG9yLmphdmEuYWZ0ZXIgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTWV0aG9kL0NoYWluaW5nQ29uc3RydWN0b3IuamF2YS5hZnRlcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42M2E3NDhmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZU1ldGhvZC9DaGFpbmluZ0NvbnN0cnVjdG9yLmphdmEuYWZ0ZXIKQEAgLTAsMCArMSwxOCBAQAorY2xhc3MgSW5saW5lTWV0aG9kVGVzdCB7CisgICAgcHVibGljIHN0YXRpYyBJbmxpbmVNZXRob2RUZXN0IGNyZWF0ZUluc3RhbmNlKCkgeworICAgICAgICByZXR1cm4gbmV3IElubGluZU1ldGhvZFRlc3QoImhlbGxvIHdvcmxkIiwgMCk7CisgICAgfQorCisgICAgcHJvdGVjdGVkIElubGluZU1ldGhvZFRlc3QoKSB7CisgICAgICAgIHRoaXMoImhlbGxvIHdvcmxkIiwgMCk7CisgICAgfQorCisgICAgcHVibGljIElubGluZU1ldGhvZFRlc3QoU3RyaW5nIHRleHQsIGludCBpKSB7CisgICAgfQorfQorCitjbGFzcyBEZXJpdmVkIGV4dGVuZHMgSW5saW5lTWV0aG9kVGVzdCB7CisgICAgcHVibGljIERlcml2ZWQoaW50IGkpIHsKKyAgICAgICAgc3VwZXIoImhlbGxvIHdvcmxkIiwgaSk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZU1ldGhvZC9DaGFpbmluZ0NvbnN0cnVjdG9yMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZU1ldGhvZC9DaGFpbmluZ0NvbnN0cnVjdG9yMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIxNjVjNjUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTWV0aG9kL0NoYWluaW5nQ29uc3RydWN0b3IxLmphdmEKQEAgLTAsMCArMSwxMiBAQAorY2xhc3MgVGVzdElubGluZU1ldGhvZCB7CisgICAgcHVibGljIDxjYXJldD5UZXN0SW5saW5lTWV0aG9kKFN0cmluZyBzMSwgaW50IHIxLCBTdHJpbmcgczIsIGludCByMikgeworICAgICAgICB0aGlzKEludGVnZXIudmFsdWVPZihzMSwgcjEpLCBJbnRlZ2VyLnZhbHVlT2YoczIsIHIyKSk7CisgICAgfQorCisgICAgcHVibGljIFRlc3RJbmxpbmVNZXRob2QoSW50ZWdlciBpMSwgSW50ZWdlciBpMikgeworICAgIH0KKworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKKyAgICAgICAgVGVzdElubGluZU1ldGhvZCB0ZXN0ID0gbmV3IFRlc3RJbmxpbmVNZXRob2QoIjEwIiwgMTAsICJBIiwgMTYpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTWV0aG9kL0NoYWluaW5nQ29uc3RydWN0b3IxLmphdmEuYWZ0ZXIgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTWV0aG9kL0NoYWluaW5nQ29uc3RydWN0b3IxLmphdmEuYWZ0ZXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGExMWI1MAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVNZXRob2QvQ2hhaW5pbmdDb25zdHJ1Y3RvcjEuamF2YS5hZnRlcgpAQCAtMCwwICsxLDkgQEAKK2NsYXNzIFRlc3RJbmxpbmVNZXRob2QgeworCisgICAgcHVibGljIFRlc3RJbmxpbmVNZXRob2QoSW50ZWdlciBpMSwgSW50ZWdlciBpMikgeworICAgIH0KKworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKKyAgICAgICAgVGVzdElubGluZU1ldGhvZCB0ZXN0ID0gbmV3IFRlc3RJbmxpbmVNZXRob2QoSW50ZWdlci52YWx1ZU9mKCIxMCIsIDEwKSwgSW50ZWdlci52YWx1ZU9mKCJBIiwgMTYpKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZU1ldGhvZC9Db25mbGljdGluZ0ZpZWxkLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTWV0aG9kL0NvbmZsaWN0aW5nRmllbGQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNTlmYmIxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZU1ldGhvZC9Db25mbGljdGluZ0ZpZWxkLmphdmEKQEAgLTAsMCArMSwxMSBAQAorY2xhc3MgVGVzdCB7CisgICAgcHVibGljIGludCBpOworCisgICAgcHVibGljIGludCA8Y2FyZXQ+Z2V0SSgpIHsKKyAgICAgICAgcmV0dXJuIGk7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgdXNhZ2UoKSB7CisgICAgICAgIGludCBpID0gZ2V0SSgpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTWV0aG9kL0NvbmZsaWN0aW5nRmllbGQuamF2YS5hZnRlciBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVNZXRob2QvQ29uZmxpY3RpbmdGaWVsZC5qYXZhLmFmdGVyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhmN2I2NzAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTWV0aG9kL0NvbmZsaWN0aW5nRmllbGQuamF2YS5hZnRlcgpAQCAtMCwwICsxLDcgQEAKK2NsYXNzIFRlc3QgeworICAgIHB1YmxpYyBpbnQgaTsKKworICAgIHB1YmxpYyB2b2lkIHVzYWdlKCkgeworICAgICAgICBpbnQgaSA9IHRoaXMuaTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZU1ldGhvZC9Db25zdGFudEluQ2hhaW5pbmdDb25zdHJ1Y3Rvci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZU1ldGhvZC9Db25zdGFudEluQ2hhaW5pbmdDb25zdHJ1Y3Rvci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU4ZjY3ZjIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTWV0aG9kL0NvbnN0YW50SW5DaGFpbmluZ0NvbnN0cnVjdG9yLmphdmEKQEAgLTAsMCArMSwxNiBAQAorY2xhc3MgVGVzdCB7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgSUQ9MDsKKworICAgIHB1YmxpYyA8Y2FyZXQ+VGVzdCgpIHsKKyAgICAgICAgdGhpcyhJRCk7CisgICAgfQorCisgICAgcHVibGljIFRlc3QoaW50IGlkKSB7CisgICAgfQorfQorCitjbGFzcyBSZXN0IHsKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgdGVzdCgpIHsKKyAgICAgICAgbmV3IFRlc3QoKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZU1ldGhvZC9Db25zdGFudEluQ2hhaW5pbmdDb25zdHJ1Y3Rvci5qYXZhLmFmdGVyIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZU1ldGhvZC9Db25zdGFudEluQ2hhaW5pbmdDb25zdHJ1Y3Rvci5qYXZhLmFmdGVyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg2ZGVkNzIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTWV0aG9kL0NvbnN0YW50SW5DaGFpbmluZ0NvbnN0cnVjdG9yLmphdmEuYWZ0ZXIKQEAgLTAsMCArMSwxMiBAQAorY2xhc3MgVGVzdCB7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgSUQ9MDsKKworICAgIHB1YmxpYyBUZXN0KGludCBpZCkgeworICAgIH0KK30KKworY2xhc3MgUmVzdCB7CisgICAgcHVibGljIHN0YXRpYyB2b2lkIHRlc3QoKSB7CisgICAgICAgIG5ldyBUZXN0KFRlc3QuSUQpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTWV0aG9kL0VudW1Db25zdGFudENvbnN0cnVjdG9yUGFyYW1ldGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTWV0aG9kL0VudW1Db25zdGFudENvbnN0cnVjdG9yUGFyYW1ldGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDI0OWEzMAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVNZXRob2QvRW51bUNvbnN0YW50Q29uc3RydWN0b3JQYXJhbWV0ZXIuamF2YQpAQCAtMCwwICsxLDEwIEBACitwdWJsaWMgZW51bSBFRUUgeworICAgIGEoPGNhcmV0PmRvVGVzdCgpKTsKKworICAgIEVFRShTdHJpbmcgcykgeworICAgIH0KKworICAgIHByaXZhdGUgc3RhdGljIFN0cmluZyBkb1Rlc3QoKSB7CisgICAgICAgIHJldHVybiAiIjsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTWV0aG9kL0VudW1Db25zdGFudENvbnN0cnVjdG9yUGFyYW1ldGVyLmphdmEuYWZ0ZXIgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTWV0aG9kL0VudW1Db25zdGFudENvbnN0cnVjdG9yUGFyYW1ldGVyLmphdmEuYWZ0ZXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2JjMjRlNQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVNZXRob2QvRW51bUNvbnN0YW50Q29uc3RydWN0b3JQYXJhbWV0ZXIuamF2YS5hZnRlcgpAQCAtMCwwICsxLDcgQEAKK3B1YmxpYyBlbnVtIEVFRSB7CisgICAgYSgiIik7CisKKyAgICBFRUUoU3RyaW5nIHMpIHsKKyAgICB9CisKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVNZXRob2QvRW51bUNvbnN0YW50Q29uc3RydWN0b3JQYXJhbWV0ZXJDb21wbGV4LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTWV0aG9kL0VudW1Db25zdGFudENvbnN0cnVjdG9yUGFyYW1ldGVyQ29tcGxleC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ1MzhhODQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTWV0aG9kL0VudW1Db25zdGFudENvbnN0cnVjdG9yUGFyYW1ldGVyQ29tcGxleC5qYXZhCkBAIC0wLDAgKzEsMTEgQEAKK3B1YmxpYyBlbnVtIEVFRSB7CisgICAgYSg8Y2FyZXQ+ZG9UZXN0KCkpOworCisgICAgRUVFKFN0cmluZyBzKSB7CisgICAgfQorCisgICAgcHJpdmF0ZSBzdGF0aWMgU3RyaW5nIGRvVGVzdCgpIHsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJxIik7CisgICAgICAgIHJldHVybiAiIjsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTWV0aG9kL0VudW1Db25zdGFudENvbnN0cnVjdG9yUGFyYW1ldGVyQ29tcGxleC5qYXZhLmFmdGVyIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZU1ldGhvZC9FbnVtQ29uc3RhbnRDb25zdHJ1Y3RvclBhcmFtZXRlckNvbXBsZXguamF2YS5hZnRlcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kOWFiZmFjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZU1ldGhvZC9FbnVtQ29uc3RhbnRDb25zdHJ1Y3RvclBhcmFtZXRlckNvbXBsZXguamF2YS5hZnRlcgpAQCAtMCwwICsxLDEyIEBACitwdWJsaWMgZW51bSBFRUUgeworICAgIGEobmV3IE9iamVjdCgpIHsKKyAgICAgICAgU3RyaW5nIGV2YWx1YXRlKCkgeworICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJxIik7CisgICAgICAgICAgICByZXR1cm4gIiI7CisgICAgICAgIH0KKyAgICB9LmV2YWx1YXRlKCkpOworCisgICAgRUVFKFN0cmluZyBzKSB7CisgICAgfQorCit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTWV0aG9kL0VudW1Db25zdGFudENvbnN0cnVjdG9yUGFyYW1ldGVyQ29tcGxleDIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVNZXRob2QvRW51bUNvbnN0YW50Q29uc3RydWN0b3JQYXJhbWV0ZXJDb21wbGV4Mi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg1ZmM0OGMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTWV0aG9kL0VudW1Db25zdGFudENvbnN0cnVjdG9yUGFyYW1ldGVyQ29tcGxleDIuamF2YQpAQCAtMCwwICsxLDExIEBACitwdWJsaWMgZW51bSBFRUUgeworICAgIGEoPGNhcmV0PmRvVGVzdCgicSIpKTsKKworICAgIEVFRShTdHJpbmcgcykgeworICAgIH0KKworICAgIHByaXZhdGUgc3RhdGljIFN0cmluZyBkb1Rlc3QoU3RyaW5nIHMpIHsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKHMpOworICAgICAgICByZXR1cm4gIiI7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZU1ldGhvZC9FbnVtQ29uc3RhbnRDb25zdHJ1Y3RvclBhcmFtZXRlckNvbXBsZXgyLmphdmEuYWZ0ZXIgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTWV0aG9kL0VudW1Db25zdGFudENvbnN0cnVjdG9yUGFyYW1ldGVyQ29tcGxleDIuamF2YS5hZnRlcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kOWFiZmFjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZU1ldGhvZC9FbnVtQ29uc3RhbnRDb25zdHJ1Y3RvclBhcmFtZXRlckNvbXBsZXgyLmphdmEuYWZ0ZXIKQEAgLTAsMCArMSwxMiBAQAorcHVibGljIGVudW0gRUVFIHsKKyAgICBhKG5ldyBPYmplY3QoKSB7CisgICAgICAgIFN0cmluZyBldmFsdWF0ZSgpIHsKKyAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigicSIpOworICAgICAgICAgICAgcmV0dXJuICIiOworICAgICAgICB9CisgICAgfS5ldmFsdWF0ZSgpKTsKKworICAgIEVFRShTdHJpbmcgcykgeworICAgIH0KKworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZU1ldGhvZC9FbnVtQ29uc3RydWN0b3IuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVNZXRob2QvRW51bUNvbnN0cnVjdG9yLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjRiNDA0YgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVNZXRob2QvRW51bUNvbnN0cnVjdG9yLmphdmEKQEAgLTAsMCArMSwxMCBAQAorZW51bSBFbnVtV2l0aENvbnN0cnVjdG9yIHsKKyAgICBUZXN0KCIxIiksIFJlc3QoIjIiLCAiYiIpOworCisgICAgPGNhcmV0PkVudW1XaXRoQ29uc3RydWN0b3IoU3RyaW5nIHMpIHsKKyAgICAgICAgdGhpcyhzLCAiIik7CisgICAgfQorCisgICAgRW51bVdpdGhDb25zdHJ1Y3RvcihTdHJpbmcgcywgU3RyaW5nIHMyKSB7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZU1ldGhvZC9FbnVtQ29uc3RydWN0b3IuamF2YS5hZnRlciBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVNZXRob2QvRW51bUNvbnN0cnVjdG9yLmphdmEuYWZ0ZXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzQxNjIyZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVNZXRob2QvRW51bUNvbnN0cnVjdG9yLmphdmEuYWZ0ZXIKQEAgLTAsMCArMSw2IEBACitlbnVtIEVudW1XaXRoQ29uc3RydWN0b3IgeworICAgIFRlc3QoIjEiLCAiIiksIFJlc3QoIjIiLCAiYiIpOworCisgICAgRW51bVdpdGhDb25zdHJ1Y3RvcihTdHJpbmcgcywgU3RyaW5nIHMyKSB7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZU1ldGhvZC9GaWVsZEluaXRpYWxpemVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTWV0aG9kL0ZpZWxkSW5pdGlhbGl6ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZjI2ODU5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZU1ldGhvZC9GaWVsZEluaXRpYWxpemVyLmphdmEKQEAgLTAsMCArMSw3IEBACitjbGFzcyBBeworICBpbnQgZmllbGQgPSBmb28oKTsKKworICBpbnQgPGNhcmV0PmZvbygpeworICAgIHJldHVybiAxOworICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTWV0aG9kL0ZpZWxkSW5pdGlhbGl6ZXIuamF2YS5hZnRlciBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVNZXRob2QvRmllbGRJbml0aWFsaXplci5qYXZhLmFmdGVyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM5ZjkzZGUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTWV0aG9kL0ZpZWxkSW5pdGlhbGl6ZXIuamF2YS5hZnRlcgpAQCAtMCwwICsxLDQgQEAKK2NsYXNzIEF7CisgIGludCBmaWVsZCA9IDE7CisKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVNZXRob2QvRmluYWxQYXJhbWV0ZXJzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTWV0aG9kL0ZpbmFsUGFyYW1ldGVycy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk5ZDExZWMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTWV0aG9kL0ZpbmFsUGFyYW1ldGVycy5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKK2NsYXNzIFRlc3QgeworICAgIHZvaWQgbWV0aG9kKE9iamVjdCB4KSB7CisgICAgICAgIFN0cmluZyBzID0gbnVsbDsKKyAgICAgICAgcyA9IChTdHJpbmcpIHg7CisgICAgICAgIHRvSW5saW5lKHMubGVuZ3RoKCkpOworICAgIH0KKyAgICB2b2lkIHRvSW5saTxjYXJldD5uZShmaW5hbCBpbnQgaSkgeworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oaSk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZU1ldGhvZC9GaW5hbFBhcmFtZXRlcnMuamF2YS5hZnRlciBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVNZXRob2QvRmluYWxQYXJhbWV0ZXJzLmphdmEuYWZ0ZXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTBmZWI5NgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVNZXRob2QvRmluYWxQYXJhbWV0ZXJzLmphdmEuYWZ0ZXIKQEAgLTAsMCArMSw3IEBACitjbGFzcyBUZXN0IHsKKyAgICB2b2lkIG1ldGhvZChPYmplY3QgeCkgeworICAgICAgICBTdHJpbmcgcyA9IG51bGw7CisgICAgICAgIHMgPSAoU3RyaW5nKSB4OworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4ocy5sZW5ndGgoKSk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZU1ldGhvZC9GaW5hbFBhcmFtZXRlcnMxLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTWV0aG9kL0ZpbmFsUGFyYW1ldGVyczEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZTAyYjcyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZU1ldGhvZC9GaW5hbFBhcmFtZXRlcnMxLmphdmEKQEAgLTAsMCArMSwxNSBAQAorY2xhc3MgVGVzdCB7CisgICAgdm9pZCBtZXRob2QoT2JqZWN0IHgpIHsKKyAgICAgICAgU3RyaW5nIHMgPSBudWxsOworICAgICAgICBzID0gKFN0cmluZykgeDsKKwl0b0lubGluZShzLmxlbmd0aCgpKTsKKyAgICB9CisgICAgdm9pZCB0b0luPGNhcmV0PmxpbmUoZmluYWwgaW50IGkpIHsKKyAgICAgICAgUnVubmFibGUgciA9IG5ldyBSdW5uYWJsZSgpIHsKKyAgICAgICAgICAgIHB1YmxpYyB2b2lkIHJ1bigpIHsKKyAgICAgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oaSk7CisgICAgICAgICAgICB9CisgICAgICAgIH07CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihpKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTWV0aG9kL0ZpbmFsUGFyYW1ldGVyczEuamF2YS5hZnRlciBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVNZXRob2QvRmluYWxQYXJhbWV0ZXJzMS5qYXZhLmFmdGVyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjExZDgzMGUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTWV0aG9kL0ZpbmFsUGFyYW1ldGVyczEuamF2YS5hZnRlcgpAQCAtMCwwICsxLDEzIEBACitjbGFzcyBUZXN0IHsKKyAgICB2b2lkIG1ldGhvZChPYmplY3QgeCkgeworICAgICAgICBTdHJpbmcgcyA9IG51bGw7CisgICAgICAgIHMgPSAoU3RyaW5nKSB4OworICAgICAgICBmaW5hbCBpbnQgaSA9IHMubGVuZ3RoKCk7CisgICAgICAgIFJ1bm5hYmxlIHIgPSBuZXcgUnVubmFibGUoKSB7CisgICAgICAgICAgICBwdWJsaWMgdm9pZCBydW4oKSB7CisgICAgICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKGkpOworICAgICAgICAgICAgfQorICAgICAgICB9OworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oaSk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZU1ldGhvZC9GbGF0VmFyYXJncy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZU1ldGhvZC9GbGF0VmFyYXJncy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk3YTM1ZjcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTWV0aG9kL0ZsYXRWYXJhcmdzLmphdmEKQEAgLTAsMCArMSwxNiBAQAorY2xhc3MgVmFyYXJncyB7CisgIHZvaWQgeHh4KCkgeworICAgIGZvbyhuZXcgU3RyaW5nW10geyJhYSIsICJoaCJ9KTsKKyAgfQorCisgIHZvaWQgPGNhcmV0PmZvbyhTdHJpbmcuLi4gc3MpIHsKKyAgICBiYXIoc3MpOworICB9CisKKyAgdm9pZCBiYXIoU3RyaW5nIHMsIFN0cmluZyBzcyl7CisKKyAgfQorCisgIHZvaWQgYmFyKFN0cmluZy4uLiBzcykgeworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZU1ldGhvZC9GbGF0VmFyYXJncy5qYXZhLmFmdGVyIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZU1ldGhvZC9GbGF0VmFyYXJncy5qYXZhLmFmdGVyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY3MTNiNGQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTWV0aG9kL0ZsYXRWYXJhcmdzLmphdmEuYWZ0ZXIKQEAgLTAsMCArMSwxMiBAQAorY2xhc3MgVmFyYXJncyB7CisgIHZvaWQgeHh4KCkgeworICAgICAgYmFyKG5ldyBTdHJpbmdbXSB7ImFhIiwgImhoIn0pOworICB9CisKKyAgICB2b2lkIGJhcihTdHJpbmcgcywgU3RyaW5nIHNzKXsKKworICB9CisKKyAgdm9pZCBiYXIoU3RyaW5nLi4uIHNzKSB7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTWV0aG9kL0ZsYXRWYXJhcmdzMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZU1ldGhvZC9GbGF0VmFyYXJnczEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZTQ3YjIzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZU1ldGhvZC9GbGF0VmFyYXJnczEuamF2YQpAQCAtMCwwICsxLDEyIEBACitjbGFzcyBWYXJhcmdzIHsKKyAgdm9pZCB4eHgoKSB7CisgICAgZm9vKG5ldyBTdHJpbmdbXSB7ImFhIiwgImhoIn0pOworICB9CisKKyAgdm9pZCA8Y2FyZXQ+Zm9vKFN0cmluZy4uLiBzcykgeworICAgIGJhcihzcyk7CisgIH0KKworICB2b2lkIGJhcihTdHJpbmcuLi4gc3MpIHsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVNZXRob2QvRmxhdFZhcmFyZ3MxLmphdmEuYWZ0ZXIgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTWV0aG9kL0ZsYXRWYXJhcmdzMS5qYXZhLmFmdGVyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJkMDU3YjEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTWV0aG9kL0ZsYXRWYXJhcmdzMS5qYXZhLmFmdGVyCkBAIC0wLDAgKzEsOCBAQAorY2xhc3MgVmFyYXJncyB7CisgIHZvaWQgeHh4KCkgeworICAgICAgYmFyKCJhYSIsICJoaCIpOworICB9CisKKyAgICB2b2lkIGJhcihTdHJpbmcuLi4gc3MpIHsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVNZXRob2QvSURFQURFVjEyNjE2LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTWV0aG9kL0lERUFERVYxMjYxNi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZjMjQ2MjEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTWV0aG9kL0lERUFERVYxMjYxNi5qYXZhCkBAIC0wLDAgKzEsMTEgQEAKK2NsYXNzIFRlc3QgeworICBwdWJsaWMgdm9pZCBmb28oKSB7CisgICAgICBTdHJpbmcgcyA9IDxjYXJldD5iYXIoKTsKKyAgfQorCisgIHByaXZhdGUgU3RyaW5nIGJhcigpIHsKKyAgICBTdHJpbmcgcmVzdWx0ID0gbnVsbDsKKyAgICBhc3NlcnQgcmVzdWx0ICE9IG51bGw7CisgICAgcmV0dXJuIHJlc3VsdDsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVNZXRob2QvSURFQURFVjEyNjE2LmphdmEuYWZ0ZXIgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTWV0aG9kL0lERUFERVYxMjYxNi5qYXZhLmFmdGVyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ5NjBjNDEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTWV0aG9kL0lERUFERVYxMjYxNi5qYXZhLmFmdGVyCkBAIC0wLDAgKzEsOCBAQAorY2xhc3MgVGVzdCB7CisgIHB1YmxpYyB2b2lkIGZvbygpIHsKKyAgICAgIFN0cmluZyByZXN1bHQgPSBudWxsOworICAgICAgYXNzZXJ0IHJlc3VsdCAhPSBudWxsOworICAgICAgU3RyaW5nIHMgPSByZXN1bHQ7CisgIH0KKworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVNZXRob2QvSURFQURFVjM2NzIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVNZXRob2QvSURFQURFVjM2NzIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNmJjM2IyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZU1ldGhvZC9JREVBREVWMzY3Mi5qYXZhCkBAIC0wLDAgKzEsMTMgQEAKK2NsYXNzIFRlc3RlcjEgeworICAgIHZvaWQgY2FsbGVyKCkgeworICAgICAgICA8Y2FyZXQ+bWV0aG9kKCk7IAorICAgIH0KKyAgICB2b2lkIG1ldGhvZCgpIHsKKyAgICAgICAgbmV3IFJ1bm5hYmxlKCkgeworICAgICAgICAgICAgcHVibGljIHZvaWQgcnVuKCkgeworICAgICAgICAgICAgICAgIG90aGVyKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH07CisgICAgfQorICAgIHZvaWQgb3RoZXIoKSB7IH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTWV0aG9kL0lERUFERVYzNjcyLmphdmEuYWZ0ZXIgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTWV0aG9kL0lERUFERVYzNjcyLmphdmEuYWZ0ZXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTU0NWI0MQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVNZXRob2QvSURFQURFVjM2NzIuamF2YS5hZnRlcgpAQCAtMCwwICsxLDExIEBACitjbGFzcyBUZXN0ZXIxIHsKKyAgICB2b2lkIGNhbGxlcigpIHsKKyAgICAgICAgbmV3IFJ1bm5hYmxlKCkgeworICAgICAgICAgICAgcHVibGljIHZvaWQgcnVuKCkgeworICAgICAgICAgICAgICAgIG90aGVyKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH07CisgICAgfQorCisgICAgdm9pZCBvdGhlcigpIHsgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVNZXRob2QvSURFQURFVjU4MDYuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVNZXRob2QvSURFQURFVjU4MDYuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZTM5MWNhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZU1ldGhvZC9JREVBREVWNTgwNi5qYXZhCkBAIC0wLDAgKzEsMjcgQEAKK2ltcG9ydCBqYXZhLnV0aWwuKjsKKworY2xhc3MgRm9vIHsKKyAgICBwdWJsaWMgdm9pZCBmb28oQmFyIGJhcikgeworICAgICAgICBmb3IgKEl0ZXJhdG9yIGl0ID0gYmFyLml0ZXJhdG9yKCk7IGl0Lmhhc05leHQoKTspIHsKKyAgICAgICAgICAgIGZpbmFsIFN0cmluZyBvID0gKFN0cmluZykgaXQubmV4dCgpOworICAgICAgICB9CisgICAgfQorfQorCitjbGFzcyBCYXI8Q04gZXh0ZW5kcyBCYXI+IHsKKyAgICBwcml2YXRlIExpc3Q8Q04+IGNuczsKKworICAgIC8qKgorICAgICAqIEBkZXByZWNhdGVkCisgICAgICovCisgICAgcHVibGljIEl0ZXJhdG9yPENOPiA8Y2FyZXQ+aXRlcmF0b3IoKSB7CisgICAgICAgIHJldHVybiBnZXRDbnMoKS5pdGVyYXRvcigpOworICAgIH0KKworICAgIHB1YmxpYyBMaXN0PENOPiBnZXRDbnMoKSB7CisgICAgICAgIGlmIChjbnMgPT0gbnVsbCkgeworICAgICAgICAgICAgcmV0dXJuIENvbGxlY3Rpb25zLmVtcHR5TGlzdCgpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBjbnM7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVNZXRob2QvSURFQURFVjU4MDYuamF2YS5hZnRlciBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVNZXRob2QvSURFQURFVjU4MDYuamF2YS5hZnRlcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iODEwNjFkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZU1ldGhvZC9JREVBREVWNTgwNi5qYXZhLmFmdGVyCkBAIC0wLDAgKzEsMjAgQEAKK2ltcG9ydCBqYXZhLnV0aWwuKjsKKworY2xhc3MgRm9vIHsKKyAgICBwdWJsaWMgdm9pZCBmb28oQmFyIGJhcikgeworICAgICAgICBmb3IgKEl0ZXJhdG9yIGl0ID0gYmFyLmdldENucygpLml0ZXJhdG9yKCk7IGl0Lmhhc05leHQoKTspIHsKKyAgICAgICAgICAgIGZpbmFsIFN0cmluZyBvID0gKFN0cmluZykgaXQubmV4dCgpOworICAgICAgICB9CisgICAgfQorfQorCitjbGFzcyBCYXI8Q04gZXh0ZW5kcyBCYXI+IHsKKyAgICBwcml2YXRlIExpc3Q8Q04+IGNuczsKKworICAgIHB1YmxpYyBMaXN0PENOPiBnZXRDbnMoKSB7CisgICAgICAgIGlmIChjbnMgPT0gbnVsbCkgeworICAgICAgICAgICAgcmV0dXJuIENvbGxlY3Rpb25zLmVtcHR5TGlzdCgpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBjbnM7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVNZXRob2QvSURFQURFVjY4MDcuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVNZXRob2QvSURFQURFVjY4MDcuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMzQyYjkxMwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVNZXRob2QvSURFQURFVjY4MDcuamF2YQpAQCAtMCwwICsxLDE0IEBACitjbGFzcyBCYXNlIHsKKyAgICBwcm90ZWN0ZWQgaW50IGY7CisKKworICAgIHB1YmxpYyBpbnQgPGNhcmV0PmdldEYoKSB7CisgICAgICAgIHJldHVybiBmOworICAgIH0KK30KKworY2xhc3MgRFJWIGV4dGVuZHMgQmFzZSB7CisgICAgdm9pZCBmKCkgeworICAgICAgICBpbnQgZjEgPSBnZXRGKCk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZU1ldGhvZC9JREVBREVWNjgwNy5qYXZhLmFmdGVyIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZU1ldGhvZC9JREVBREVWNjgwNy5qYXZhLmFmdGVyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRmMjY4MjIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTWV0aG9kL0lERUFERVY2ODA3LmphdmEuYWZ0ZXIKQEAgLTAsMCArMSwxMSBAQAorY2xhc3MgQmFzZSB7CisgICAgcHJvdGVjdGVkIGludCBmOworCisKK30KKworY2xhc3MgRFJWIGV4dGVuZHMgQmFzZSB7CisgICAgdm9pZCBmKCkgeworICAgICAgICBpbnQgZjEgPSBmOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVNZXRob2QvSW5TdXBlckNhbGwuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVNZXRob2QvSW5TdXBlckNhbGwuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZTcwYzQyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZU1ldGhvZC9JblN1cGVyQ2FsbC5qYXZhCkBAIC0wLDAgKzEsMjIgQEAKK2NsYXNzIEJCQiB7CisgICAgcHVibGljIEJCQihTdHJpbmcgeCkgeworICAgIH0KKworICAgIHZvaWQgZm9vKFN0cmluZyBzKSB7fQorfQorCitjbGFzcyBBQUEgZXh0ZW5kcyBCQkIgeworICAgIHB1YmxpYyBBQUEoU3RyaW5nIHgpIHsKKyAgICAgICAgc3VwZXIodGVzdCh4KSk7CisgICAgfQorCisgICAgcHJpdmF0ZSBzdGF0aWMgU3RyaW5nIHQ8Y2FyZXQ+ZXN0KFN0cmluZyB4KSB7CisgICAgICAgIFN0cmluZyB5ID0geC50cmltKCk7CisgICAgICAgIHJldHVybiB5Lmxlbmd0aCgpID4gMCA/IHkgOiAiYWFhYSI7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgdm9pZCBmb28oU3RyaW5nIHMpIHsKKyAgICAgICAgc3VwZXIuZm9vKHRlc3QocykpOyAgICAvL1RvIGNoYW5nZSBib2R5IG9mIG92ZXJyaWRkZW4gbWV0aG9kcyB1c2UgRmlsZSB8IFNldHRpbmdzIHwgRmlsZSBUZW1wbGF0ZXMuCisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVNZXRob2QvSW5mZXJyZWRUeXBlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTWV0aG9kL0luZmVycmVkVHlwZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIwOGZjZjQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTWV0aG9kL0luZmVycmVkVHlwZS5qYXZhCkBAIC0wLDAgKzEsOCBAQAoraW1wb3J0IGphdmEudXRpbC4qOworY2xhc3MgVGVzdCB7CisgICAgcHJpdmF0ZSBzdGF0aWMgPFQ+IExpc3Q8VD4gPGNhcmV0PmZvbygpIHsgcmV0dXJuIENvbGxlY3Rpb25zLmVtcHR5TGlzdCgpOyB9CisgICAgcHJpdmF0ZSBzdGF0aWMgPFQ+IExpc3Q8VD4gYmFyKExpc3Q8VD4geHMpIHsgcmV0dXJuIHhzOyB9CisgICAgcHJpdmF0ZSBzdGF0aWMgdm9pZCBnYXpvbmsoKSB7CisgICAgICAgIExpc3Q8U3RyaW5nPiBzcyA9IGJhcihUZXN0LjxTdHJpbmc+Zm9vKCkpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVNZXRob2QvSW5mZXJyZWRUeXBlLmphdmEuYWZ0ZXIgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTWV0aG9kL0luZmVycmVkVHlwZS5qYXZhLmFmdGVyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE1YjQ0ZGUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTWV0aG9kL0luZmVycmVkVHlwZS5qYXZhLmFmdGVyCkBAIC0wLDAgKzEsNyBAQAoraW1wb3J0IGphdmEudXRpbC4qOworY2xhc3MgVGVzdCB7CisgICAgcHJpdmF0ZSBzdGF0aWMgPFQ+IExpc3Q8VD4gYmFyKExpc3Q8VD4geHMpIHsgcmV0dXJuIHhzOyB9CisgICAgcHJpdmF0ZSBzdGF0aWMgdm9pZCBnYXpvbmsoKSB7CisgICAgICAgIExpc3Q8U3RyaW5nPiBzcyA9IGJhcihDb2xsZWN0aW9ucy48U3RyaW5nPmVtcHR5TGlzdCgpKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTWV0aG9kL0lubGluZUFsbEluUHJvamVjdEZyb21MaWJyYXJ5LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTWV0aG9kL0lubGluZUFsbEluUHJvamVjdEZyb21MaWJyYXJ5LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmRiZWIyNgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVNZXRob2QvSW5saW5lQWxsSW5Qcm9qZWN0RnJvbUxpYnJhcnkuamF2YQpAQCAtMCwwICsxLDcgQEAKK2ltcG9ydCBteWNvbXBhbnkuRmlsZTsKKworY2xhc3MgVGVzdCB7CisgIHZvaWQgZm9vKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgRmlsZSB0ZW1wRmlsZSA9IEZpbGUuY3JlYXRlVGVtcEZpbGUoIiIsICIiKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVNZXRob2QvSW5saW5lQWxsSW5Qcm9qZWN0RnJvbUxpYnJhcnkuamF2YS5hZnRlciBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVNZXRob2QvSW5saW5lQWxsSW5Qcm9qZWN0RnJvbUxpYnJhcnkuamF2YS5hZnRlcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZGM4OWMxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZU1ldGhvZC9JbmxpbmVBbGxJblByb2plY3RGcm9tTGlicmFyeS5qYXZhLmFmdGVyCkBAIC0wLDAgKzEsNyBAQAoraW1wb3J0IG15Y29tcGFueS5GaWxlOworCitjbGFzcyBUZXN0IHsKKyAgdm9pZCBmb28oKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgIEZpbGUgdGVtcEZpbGUgPSBteWNvbXBhbnkuRmlsZS5jcmVhdGVUZW1wRmlsZSgiIiwgIiIsIG51bGwpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZU1ldGhvZC9JbmxpbmVBbm9ueW1vdXNDbGFzc1dpdGhQcml2YXRlTWV0aG9kSW5zaWRlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTWV0aG9kL0lubGluZUFub255bW91c0NsYXNzV2l0aFByaXZhdGVNZXRob2RJbnNpZGUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYzRiODRiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZU1ldGhvZC9JbmxpbmVBbm9ueW1vdXNDbGFzc1dpdGhQcml2YXRlTWV0aG9kSW5zaWRlLmphdmEKQEAgLTAsMCArMSwyNCBAQAorcHVibGljIGNsYXNzIEZvbyB7CisgIHB1YmxpYyBzdGF0aWMgdm9pZCBmPGNhcmV0Pm9vKCkgeworICAgIGJhcihuZXcgUnVubmFibGUoKSB7CisgICAgICBAT3ZlcnJpZGUKKyAgICAgIHB1YmxpYyB2b2lkIHJ1bigpIHsKKyAgICAgICAgZG9SdW4oKTsKKyAgICAgIH0KKworICAgICAgcHJpdmF0ZSB2b2lkIGRvUnVuKCkgeworICAgICAgICAvLyBXb28taG9vCisgICAgICB9CisgICAgfSk7CisgIH0KKworICBwdWJsaWMgc3RhdGljIHZvaWQgYmFyKGZpbmFsIFJ1bm5hYmxlIHJ1bm5hYmxlKSB7CisgICAgcnVubmFibGUucnVuKCk7CisgIH0KK30KKworY2xhc3MgQmFyIHsKKyAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgeworICAgIEZvby5mb28oKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVNZXRob2QvSW5saW5lQW5vbnltb3VzQ2xhc3NXaXRoUHJpdmF0ZU1ldGhvZEluc2lkZS5qYXZhLmFmdGVyIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZU1ldGhvZC9JbmxpbmVBbm9ueW1vdXNDbGFzc1dpdGhQcml2YXRlTWV0aG9kSW5zaWRlLmphdmEuYWZ0ZXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjAzMDU1ZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVNZXRob2QvSW5saW5lQW5vbnltb3VzQ2xhc3NXaXRoUHJpdmF0ZU1ldGhvZEluc2lkZS5qYXZhLmFmdGVyCkBAIC0wLDAgKzEsMjEgQEAKK3B1YmxpYyBjbGFzcyBGb28geworCisgICAgcHVibGljIHN0YXRpYyB2b2lkIGJhcihmaW5hbCBSdW5uYWJsZSBydW5uYWJsZSkgeworICAgIHJ1bm5hYmxlLnJ1bigpOworICB9Cit9CisKK2NsYXNzIEJhciB7CisgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKKyAgICAgIEZvby5iYXIobmV3IFJ1bm5hYmxlKCkgeworICAgICAgICAgIEBPdmVycmlkZQorICAgICAgICAgIHB1YmxpYyB2b2lkIHJ1bigpIHsKKyAgICAgICAgICAgICAgZG9SdW4oKTsKKyAgICAgICAgICB9CisKKyAgICAgICAgICBwcml2YXRlIHZvaWQgZG9SdW4oKSB7CisgICAgICAgICAgICAgIC8vIFdvby1ob28KKyAgICAgICAgICB9CisgICAgICB9KTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVNZXRob2QvSW5saW5lTWV0aG9kVGVzdC50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTWV0aG9kL0lubGluZU1ldGhvZFRlc3QudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU2OWRlMjkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTWV0aG9kL0lubGluZU1ldGhvZFRlc3QudHh0CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTWV0aG9kL0lubGluZVBhcm1zLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTWV0aG9kL0lubGluZVBhcm1zLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTQ2ZGY3ZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVNZXRob2QvSW5saW5lUGFybXMuamF2YQpAQCAtMCwwICsxLDMwIEBACitwdWJsaWMgY2xhc3MgVGVzdCB7CisgICAgcHVibGljIGludCA8Y2FyZXQ+Zm9vKGludCBwMSwgaW50IHAyKSB7CisgICAgICAgIHAyKys7CisgICAgICAgIHJldHVybiBzb21lTWV0aG9kKHAxLCBwMik7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgdXNlMSgpIHsKKyAgICAgICAgaW50IHIgPSBmb28oeCwgeSk7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgdXNlMigpIHsKKyAgICAgICAgaW50IHIgPSBmb28oZmllbGQxLCBmaWVsZDEpOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHVzZTMoKSB7CisgICAgICAgIGludCByID0gZm9vKGZpZWxkMiwgZmllbGQyKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCB1c2U0KCkgeworICAgICAgICBpbnQgciA9IGZvbyhmaWVsZDMsIGZpZWxkMyk7CisgICAgfQorCisgICAgeworICAgICAgICBmaWVsZDIrKzsKKyAgICB9CisKKyAgICBwcml2YXRlIGZpbmFsIGludCBmaWVsZDE7CisgICAgcHJpdmF0ZSBpbnQgZmllbGQyOworICAgIHByaXZhdGUgaW50IGZpZWxkMzsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTWV0aG9kL0lubGluZVBhcm1zLmphdmEuYWZ0ZXIgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTWV0aG9kL0lubGluZVBhcm1zLmphdmEuYWZ0ZXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDdmNzAyNwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVNZXRob2QvSW5saW5lUGFybXMuamF2YS5hZnRlcgpAQCAtMCwwICsxLDM0IEBACitwdWJsaWMgY2xhc3MgVGVzdCB7CisKKyAgICBwdWJsaWMgdm9pZCB1c2UxKCkgeworICAgICAgICBpbnQgcDIgPSB5OworICAgICAgICBwMisrOworICAgICAgICBpbnQgciA9IHNvbWVNZXRob2QoeCwgcDIpOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHVzZTIoKSB7CisgICAgICAgIGludCBwMiA9IGZpZWxkMTsKKyAgICAgICAgcDIrKzsKKyAgICAgICAgaW50IHIgPSBzb21lTWV0aG9kKGZpZWxkMSwgcDIpOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHVzZTMoKSB7CisgICAgICAgIGludCBwMiA9IGZpZWxkMjsKKyAgICAgICAgcDIrKzsKKyAgICAgICAgaW50IHIgPSBzb21lTWV0aG9kKGZpZWxkMiwgcDIpOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHVzZTQoKSB7CisgICAgICAgIGludCBwMiA9IGZpZWxkMzsKKyAgICAgICAgcDIrKzsKKyAgICAgICAgaW50IHIgPSBzb21lTWV0aG9kKGZpZWxkMywgcDIpOworICAgIH0KKworICAgIHsKKyAgICAgICAgZmllbGQyKys7CisgICAgfQorCisgICAgcHJpdmF0ZSBmaW5hbCBpbnQgZmllbGQxOworICAgIHByaXZhdGUgaW50IGZpZWxkMjsKKyAgICBwcml2YXRlIGludCBmaWVsZDM7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZU1ldGhvZC9JbmxpbmVSdW5uYWJsZVJ1bi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZU1ldGhvZC9JbmxpbmVSdW5uYWJsZVJ1bi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjExZTk2YjgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTWV0aG9kL0lubGluZVJ1bm5hYmxlUnVuLmphdmEKQEAgLTAsMCArMSwyOCBAQAorLyoKKyAqIENvcHlyaWdodCAyMDAwLTIwMTIgSmV0QnJhaW5zIHMuci5vLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK2NsYXNzIFRlc3QgeworICBwcml2YXRlIHZvaWQgYmFyKCkgeworICAgICAgICAgLy9UbyBjaGFuZ2UgYm9keSBvZiBjcmVhdGVkIG1ldGhvZHMgdXNlIEZpbGUgfCBTZXR0aW5ncyB8IEZpbGUgVGVtcGxhdGVzLgorICAgICB9CisgCisgICAgIHB1YmxpYyB2b2lkIGZvbygpIHsKKyAgICAgICAgIG5ldyBSdW5uYWJsZSgpIHsKKyAgICAgICAgICAgICBwdWJsaWMgdm9pZCBydW4oKSB7CisgICAgICAgICAgICAgICAgIGJhcigpOworICAgICAgICAgICAgIH0KKyAgICAgICAgIH0ucnU8Y2FyZXQ+bigpOworICAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTWV0aG9kL0lubGluZVJ1bm5hYmxlUnVuLmphdmEuYWZ0ZXIgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTWV0aG9kL0lubGluZVJ1bm5hYmxlUnVuLmphdmEuYWZ0ZXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjBmZmIwYgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVNZXRob2QvSW5saW5lUnVubmFibGVSdW4uamF2YS5hZnRlcgpAQCAtMCwwICsxLDI0IEBACisvKgorICogQ29weXJpZ2h0IDIwMDAtMjAxMiBKZXRCcmFpbnMgcy5yLm8uCisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworY2xhc3MgVGVzdCB7CisgIHByaXZhdGUgdm9pZCBiYXIoKSB7CisgICAgICAgICAvL1RvIGNoYW5nZSBib2R5IG9mIGNyZWF0ZWQgbWV0aG9kcyB1c2UgRmlsZSB8IFNldHRpbmdzIHwgRmlsZSBUZW1wbGF0ZXMuCisgICAgIH0KKyAKKyAgICAgcHVibGljIHZvaWQgZm9vKCkgeworICAgICAgICAgYmFyKCk7CisgICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVNZXRob2QvSW5saW5lV2l0aFF1YWxpZmllci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZU1ldGhvZC9JbmxpbmVXaXRoUXVhbGlmaWVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGI5OTJkYwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVNZXRob2QvSW5saW5lV2l0aFF1YWxpZmllci5qYXZhCkBAIC0wLDAgKzEsMzMgQEAKK2NsYXNzIEVsZW1lbnQgeworICAgIFN0cmluZyBpZDsKKworICAgIFN0cmluZyA8Y2FyZXQ+Z2V0TmFtZSgpIHsKKyAgICAgICAgcmV0dXJuIGdldElEKCk7CisgICAgfQorICAgIFN0cmluZyBnZXRJRCgpIHsKKyAgICAgICAgcmV0dXJuIGlkOworICAgIH0KKworICAgIHB1YmxpYyBTdHJpbmcgbWV0aG9kKEVsZW1lbnQgZWxlbWVudCkgeworICAgICAgICByZXR1cm4gZ2V0TmFtZSgpICsgZWxlbWVudC5nZXROYW1lKCk7CisgICAgfQorCisgICAgcHVibGljIFN0cmluZyBzdGF0aWNNZXRob2QoRWxlbWVudCBlbGVtZW50KSB7CisgICAgICAgIFN0cmluZ0J1ZmZlciBidWZmZXIgPSBuZXcgU3RyaW5nQnVmZmVyKCk7CisgICAgICAgIGJ1ZmZlci5hcHBlbmQoZWxlbWVudC5nZXROYW1lKCkpOworICAgICAgICByZXR1cm4gYnVmZmVyLnRvU3RyaW5nKCk7CisgICAgfQorICAgIHN0YXRpYyBFbGVtZW50IHRvWE1MKEVsZW1lbnQgZWxlbWVudCl7CisgICAgICAgIFggZWw9IG5ldyBYKCJFbCIpCisgICAgICAgIGVsLnNldEF0dHJpYnV0ZSgiYXR0ciIsIGVsZW1lbnQuZ2V0TmFtZSgpKTsKKyAgICAgICAgcmV0dXJuIGVsOworICAgIH0KK30KKworY2xhc3MgVXNhZ2UgeworICAgIHB1YmxpYyBTdHJpbmcgc3RhdGljTWV0aG9kKEVsZW1lbnQgZWxlbWVudCkgeworICAgICAgICBTdHJpbmdCdWZmZXIgYnVmZmVyID0gbmV3IFN0cmluZ0J1ZmZlcigpOworICAgICAgICBidWZmZXIuYXBwZW5kKGVsZW1lbnQuZ2V0TmFtZSgpKTsKKyAgICAgICAgcmV0dXJuIGJ1ZmZlci50b1N0cmluZygpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTWV0aG9kL0lubGluZVdpdGhRdWFsaWZpZXIuamF2YS5hZnRlciBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVNZXRob2QvSW5saW5lV2l0aFF1YWxpZmllci5qYXZhLmFmdGVyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU5Yzc0YmQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTWV0aG9kL0lubGluZVdpdGhRdWFsaWZpZXIuamF2YS5hZnRlcgpAQCAtMCwwICsxLDMwIEBACitjbGFzcyBFbGVtZW50IHsKKyAgICBTdHJpbmcgaWQ7CisKKyAgICBTdHJpbmcgZ2V0SUQoKSB7CisgICAgICAgIHJldHVybiBpZDsKKyAgICB9CisKKyAgICBwdWJsaWMgU3RyaW5nIG1ldGhvZChFbGVtZW50IGVsZW1lbnQpIHsKKyAgICAgICAgcmV0dXJuIGdldElEKCkgKyBlbGVtZW50LmdldElEKCk7CisgICAgfQorCisgICAgcHVibGljIFN0cmluZyBzdGF0aWNNZXRob2QoRWxlbWVudCBlbGVtZW50KSB7CisgICAgICAgIFN0cmluZ0J1ZmZlciBidWZmZXIgPSBuZXcgU3RyaW5nQnVmZmVyKCk7CisgICAgICAgIGJ1ZmZlci5hcHBlbmQoZWxlbWVudC5nZXRJRCgpKTsKKyAgICAgICAgcmV0dXJuIGJ1ZmZlci50b1N0cmluZygpOworICAgIH0KKyAgICBzdGF0aWMgRWxlbWVudCB0b1hNTChFbGVtZW50IGVsZW1lbnQpeworICAgICAgICBYIGVsPSBuZXcgWCgiRWwiKQorICAgICAgICBlbC5zZXRBdHRyaWJ1dGUoImF0dHIiLCBlbGVtZW50LmdldElEKCkpOworICAgICAgICByZXR1cm4gZWw7CisgICAgfQorfQorCitjbGFzcyBVc2FnZSB7CisgICAgcHVibGljIFN0cmluZyBzdGF0aWNNZXRob2QoRWxlbWVudCBlbGVtZW50KSB7CisgICAgICAgIFN0cmluZ0J1ZmZlciBidWZmZXIgPSBuZXcgU3RyaW5nQnVmZmVyKCk7CisgICAgICAgIGJ1ZmZlci5hcHBlbmQoZWxlbWVudC5nZXRJRCgpKTsKKyAgICAgICAgcmV0dXJuIGJ1ZmZlci50b1N0cmluZygpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTWV0aG9kL0lubGluZVdpdGhRdWFsaWZpZXJGcm9tU3VwZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVNZXRob2QvSW5saW5lV2l0aFF1YWxpZmllckZyb21TdXBlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFlZTJjZDAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTWV0aG9kL0lubGluZVdpdGhRdWFsaWZpZXJGcm9tU3VwZXIuamF2YQpAQCAtMCwwICsxLDE3IEBACitjbGFzcyBCYXNlIHsKKyAgICBTdHJpbmcgaWQ7CisgICAgcHVibGljIFN0cmluZyBnZXRJRCgpIHsKKyAgICAgICAgcmV0dXJuIGlkOworICAgIH0KK30KKworY2xhc3MgRGVyaXZlZCBleHRlbmRzIEJhc2UgeworICAgIFN0cmluZyA8Y2FyZXQ+Z2V0TmFtZSgpIHsKKyAgICAgICAgcmV0dXJuIGdldElEKCk7CisgICAgfQorICAgIAorICAgIHN0YXRpYyB2b2lkIHVzYWdlKERlcml2ZWQgZWxlbWVudCkgeworICAgICAgICBTdHJpbmdCdWZmZXIgYnVmZmVyID0gbmV3IFN0cmluZ0J1ZmZlcigpOworICAgICAgICBidWZmZXIuYWRkKGVsZW1lbnQuZ2V0TmFtZSgpKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZU1ldGhvZC9JbmxpbmVXaXRoUXVhbGlmaWVyRnJvbVN1cGVyLmphdmEuYWZ0ZXIgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTWV0aG9kL0lubGluZVdpdGhRdWFsaWZpZXJGcm9tU3VwZXIuamF2YS5hZnRlcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lOWE1NTRkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZU1ldGhvZC9JbmxpbmVXaXRoUXVhbGlmaWVyRnJvbVN1cGVyLmphdmEuYWZ0ZXIKQEAgLTAsMCArMSwxNCBAQAorY2xhc3MgQmFzZSB7CisgICAgU3RyaW5nIGlkOworICAgIHB1YmxpYyBTdHJpbmcgZ2V0SUQoKSB7CisgICAgICAgIHJldHVybiBpZDsKKyAgICB9Cit9CisKK2NsYXNzIERlcml2ZWQgZXh0ZW5kcyBCYXNlIHsKKworICAgIHN0YXRpYyB2b2lkIHVzYWdlKERlcml2ZWQgZWxlbWVudCkgeworICAgICAgICBTdHJpbmdCdWZmZXIgYnVmZmVyID0gbmV3IFN0cmluZ0J1ZmZlcigpOworICAgICAgICBidWZmZXIuYWRkKGVsZW1lbnQuZ2V0SUQoKSk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVNZXRob2QvSW5saW5lV2l0aFRyeS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZU1ldGhvZC9JbmxpbmVXaXRoVHJ5LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2U3NTAwMwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVNZXRob2QvSW5saW5lV2l0aFRyeS5qYXZhCkBAIC0wLDAgKzEsMTIgQEAKK2NsYXNzIEEgeworICAgIHsKKyAgICAgICAgZygpOworICAgIH0KKyAgICBpbnQgPGNhcmV0PmcoKSB7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfSBjYXRjaCAoRXJyb3IgZSkgeworICAgICAgICAgICAgdGhyb3cgZTsKKyAgICAgICAgfQorICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVNZXRob2QvSW5saW5lV2l0aFRyeS5qYXZhLmFmdGVyIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZU1ldGhvZC9JbmxpbmVXaXRoVHJ5LmphdmEuYWZ0ZXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGMyNWQwMGVhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZU1ldGhvZC9JbmxpbmVXaXRoVHJ5LmphdmEuYWZ0ZXIKQEAgLTAsMCArMSwxMCBAQAorY2xhc3MgQSB7CisgICAgeworICAgICAgICBpbnQgcmVzdWx0OworICAgICAgICB0cnkgeworICAgICAgICAgICAgcmVzdWx0ID0gMDsKKyAgICAgICAgfSBjYXRjaCAoRXJyb3IgZSkgeworICAgICAgICAgICAgdGhyb3cgZTsKKyAgICAgICAgfQorICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVNZXRob2QvTG9jYWxWYXJpYWJsZVJlc3VsdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZU1ldGhvZC9Mb2NhbFZhcmlhYmxlUmVzdWx0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2UxYjA2ZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVNZXRob2QvTG9jYWxWYXJpYWJsZVJlc3VsdC5qYXZhCkBAIC0wLDAgKzEsMTcgQEAKK2NsYXNzIEEgeworCisgICAgSW50ZWdlciBmKGludCBpKSB7CisgICAgICAgIHJldHVybiBnKGkpOworICAgIH0KKworICAgIEludGVnZXIgPGNhcmV0PmcoaW50IGkpIHsKKyAgICAgICAgaWYgKGkgPiAwKSB7CisgICAgICAgICAgICByZXR1cm4gbmV3IEludGVnZXIoaSk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBJbnRlZ2VyIHJlc3VsdDsKKyAgICAgICAgICAgIHJlc3VsdCA9IG5ldyBJbnRlZ2VyKDApOworICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgfQorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTWV0aG9kL0xvY2FsVmFyaWFibGVSZXN1bHQuamF2YS5hZnRlciBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVNZXRob2QvTG9jYWxWYXJpYWJsZVJlc3VsdC5qYXZhLmFmdGVyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYwMmI1MjUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTWV0aG9kL0xvY2FsVmFyaWFibGVSZXN1bHQuamF2YS5hZnRlcgpAQCAtMCwwICsxLDE2IEBACitjbGFzcyBBIHsKKworICAgIEludGVnZXIgZihpbnQgaSkgeworICAgICAgICBJbnRlZ2VyIHJlc3VsdDsKKyAgICAgICAgaWYgKGkgPiAwKSB7CisgICAgICAgICAgICByZXN1bHQgPSBuZXcgSW50ZWdlcihpKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIEludGVnZXIgcmVzdWx0OworICAgICAgICAgICAgcmVzdWx0ID0gbmV3IEludGVnZXIoMCk7CisgICAgICAgICAgICByZXN1bHQgPSByZXN1bHQ7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTWV0aG9kL01ldGhvZENhbGxJbk90aGVyQW5vbnltb3VzT3JJbm5lci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZU1ldGhvZC9NZXRob2RDYWxsSW5PdGhlckFub255bW91c09ySW5uZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMzhhNjJkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZU1ldGhvZC9NZXRob2RDYWxsSW5PdGhlckFub255bW91c09ySW5uZXIuamF2YQpAQCAtMCwwICsxLDIzIEBACitwdWJsaWMgY2xhc3MgUGFyZW50IHsKKyAgdm9pZCBleGVjdXRlKCl7fQorICB2b2lkIGZvbzxjYXJldD5leGVjdXRlKCl7CisgICAgZXhlY3V0ZSgpOworICB9Cit9CisKK2NsYXNzIENoaWxkIGV4dGVuZHMgUGFyZW50IHsKKyAgdm9pZCBmb28oKSB7CisgICAgZm9vZXhlY3V0ZSgpOworICAgIG5ldyBSdW5uYWJsZSgpIHsKKyAgICAgIHB1YmxpYyB2b2lkIHJ1bigpIHsKKyAgICAgICAgZm9vZXhlY3V0ZSgpOworICAgICAgfQorICAgIH0ucnVuKCk7CisgIH0KKworICBjbGFzcyBJbm5lckNoaWxkIHsKKyAgICB2b2lkIGJhcigpIHsKKyAgICAgIENoaWxkLnRoaXMuZm9vZXhlY3V0ZSgpOworICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVNZXRob2QvTWV0aG9kQ2FsbEluT3RoZXJBbm9ueW1vdXNPcklubmVyLmphdmEuYWZ0ZXIgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTWV0aG9kL01ldGhvZENhbGxJbk90aGVyQW5vbnltb3VzT3JJbm5lci5qYXZhLmFmdGVyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI3MWFjYTEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTWV0aG9kL01ldGhvZENhbGxJbk90aGVyQW5vbnltb3VzT3JJbm5lci5qYXZhLmFmdGVyCkBAIC0wLDAgKzEsMjAgQEAKK3B1YmxpYyBjbGFzcyBQYXJlbnQgeworICB2b2lkIGV4ZWN1dGUoKXt9Cit9CisKK2NsYXNzIENoaWxkIGV4dGVuZHMgUGFyZW50IHsKKyAgdm9pZCBmb28oKSB7CisgICAgICBleGVjdXRlKCk7CisgICAgICBuZXcgUnVubmFibGUoKSB7CisgICAgICBwdWJsaWMgdm9pZCBydW4oKSB7CisgICAgICAgICAgZXhlY3V0ZSgpOworICAgICAgfQorICAgIH0ucnVuKCk7CisgIH0KKworICBjbGFzcyBJbm5lckNoaWxkIHsKKyAgICB2b2lkIGJhcigpIHsKKyAgICAgICAgZXhlY3V0ZSgpOworICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVNZXRob2QvTWV0aG9kVXNlZEluSmF2YWRvYy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZU1ldGhvZC9NZXRob2RVc2VkSW5KYXZhZG9jLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWYyZjcyOAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVNZXRob2QvTWV0aG9kVXNlZEluSmF2YWRvYy5qYXZhCkBAIC0wLDAgKzEsNyBAQAorLyoqCisgKiB7QGxpbmsgSW5saW5lTWV0aG9kVGVzdCNmb299CisgKi8KK2NsYXNzIElubGluZU1ldGhvZFRlc3QgeworICAgIHB1YmxpYyB2b2lkIGY8Y2FyZXQ+b28oKXt9CisgIAorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZU1ldGhvZC9OYW1lQ2xhc2guamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVNZXRob2QvTmFtZUNsYXNoLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2NmNThiMgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVNZXRob2QvTmFtZUNsYXNoLmphdmEKQEAgLTAsMCArMSwxMiBAQAorcHVibGljIGNsYXNzIEZvbworeworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKCBTdHJpbmdbXSBhcmdzICkKKyAgICB7CisgICAgICAgIE9iamVjdCB2YWx1ZSA9IG51bGw7CisgICAgICAgIGxvZyggImZsb2F0IiwgbmV3IEZsb2F0KCA1LjVmICkgKTsKKyAgICB9CisgIAorICAgIHByaXZhdGUgc3RhdGljIHZvaWQgPGNhcmV0PmxvZyhTdHJpbmcgdGl0bGUsIE9iamVjdCB2YWx1ZSkgeworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIHRpdGxlICsgIjoiICsgdmFsdWUgKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZU1ldGhvZC9OYW1lQ2xhc2guamF2YS5hZnRlciBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVNZXRob2QvTmFtZUNsYXNoLmphdmEuYWZ0ZXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2E4OWE4MAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVNZXRob2QvTmFtZUNsYXNoLmphdmEuYWZ0ZXIKQEAgLTAsMCArMSw5IEBACitwdWJsaWMgY2xhc3MgRm9vCit7CisgICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oIFN0cmluZ1tdIGFyZ3MgKQorICAgIHsKKyAgICAgICAgT2JqZWN0IHZhbHVlID0gbnVsbDsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCAiZmxvYXQiICsgIjoiICsgbmV3IEZsb2F0KCA1LjVmICkpOworICAgIH0KKworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVNZXRob2QvTmVzdGVkQ2FsbC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZU1ldGhvZC9OZXN0ZWRDYWxsLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTJmMjUwZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVNZXRob2QvTmVzdGVkQ2FsbC5qYXZhCkBAIC0wLDAgKzEsOCBAQAorY2xhc3MgTmVzdGVkQ2FsbCB7CisgICAgaW50IGZvbyhpbnQgcCkgeyByZXR1cm4gcDsgfQorICAgIGludCA8Y2FyZXQ+YmFyKGludCBwKSB7IHJldHVybiBmb28ocCk7IH0KKworICAgIHsKKyAgICAgICAgYmFyKGJhcigwKSk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVNZXRob2QvTmVzdGVkQ2FsbC5qYXZhLmFmdGVyIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZU1ldGhvZC9OZXN0ZWRDYWxsLmphdmEuYWZ0ZXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODNlNTZmNAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVNZXRob2QvTmVzdGVkQ2FsbC5qYXZhLmFmdGVyCkBAIC0wLDAgKzEsNyBAQAorY2xhc3MgTmVzdGVkQ2FsbCB7CisgICAgaW50IGZvbyhpbnQgcCkgeyByZXR1cm4gcDsgfQorCisgICAgeworICAgICAgICBmb28oZm9vKDApKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZU1ldGhvZC9Ob25Db2RlVXNhZ2UuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVNZXRob2QvTm9uQ29kZVVzYWdlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzExNmI4OQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVNZXRob2QvTm9uQ29kZVVzYWdlLmphdmEKQEAgLTAsMCArMSwyNiBAQAorLyoKKyAqIENvcHlyaWdodCAyMDAwLTIwMTIgSmV0QnJhaW5zIHMuci5vLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworY2xhc3MgVGVzdCB7CisgICAgcHJpdmF0ZSBpbnQgYmFyKCkgeworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oNDIpOworICAgIH0KKworICAgIC8vbm9uY29kZSBiYXIgdXNhZ2UKKyAgICBwdWJsaWMgdm9pZCBmb28oKSB7CisgICAgICAgIGJhPGNhcmV0PnIoKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZU1ldGhvZC9Ob25Db2RlVXNhZ2UuamF2YS5hZnRlciBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVNZXRob2QvTm9uQ29kZVVzYWdlLmphdmEuYWZ0ZXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2JiOTdhMgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVNZXRob2QvTm9uQ29kZVVzYWdlLmphdmEuYWZ0ZXIKQEAgLTAsMCArMSwyMyBAQAorLyoKKyAqIENvcHlyaWdodCAyMDAwLTIwMTIgSmV0QnJhaW5zIHMuci5vLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworY2xhc3MgVGVzdCB7CisKKyAgICAvL25vbmNvZGUgYmFyIHVzYWdlCisgICAgcHVibGljIHZvaWQgZm9vKCkgeworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oNDIpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTWV0aG9kL05vdEFTdGF0ZW1lbnQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVNZXRob2QvTm90QVN0YXRlbWVudC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY4ODcxYmNkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZU1ldGhvZC9Ob3RBU3RhdGVtZW50LmphdmEKQEAgLTAsMCArMSwyNiBAQAorY2xhc3MgQUFBIHsKKyAgdm9pZCBmZmYoUHJvamVjdCBteVByb2plY3QpIHsKKyAgICBlbnN1cmVGaWxlc1dyaXRhYmxlKG15UHJvamVjdCwgbmV3IFN0cmluZ1sxXSk7CisgIH0KKworICBwcml2YXRlIGJvb2xlYW4gZW5zdTxjYXJldD5yZUZpbGVzV3JpdGFibGUoZmluYWwgUHJvamVjdCBwcm9qZWN0LCBmaW5hbCBTdHJpbmcuLi4gc3RyaW5ncykgeworICAgIHJldHVybiAhZW5zdXJlRmlsZXNXcml0YWJsZShzdHJpbmdzKS5oYXNSZWFkb25seUZpbGVzKCk7CisgIH0KKworICBwcml2YXRlIFN0YXR1cyBlbnN1cmVGaWxlc1dyaXRhYmxlKGZpbmFsIFN0cmluZ1tdIHN0cmluZ3MpIHsKKyAgICByZXR1cm4gbmV3IFN0YXR1cyhzdHJpbmdzKTsKKyAgfQorCisgIGNsYXNzIFN0YXR1cyB7CisgICAgcHVibGljIFN0YXR1cyhmaW5hbCBTdHJpbmdbXSBzdHJpbmdzKSB7CisgICAgICAvL1RvIGNoYW5nZSBib2R5IG9mIGNyZWF0ZWQgbWV0aG9kcyB1c2UgRmlsZSB8IFNldHRpbmdzIHwgRmlsZSBUZW1wbGF0ZXMuCisgICAgfQorCisgICAgYm9vbGVhbiBoYXNSZWFkb25seUZpbGVzKCkgeworICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICB9CisKKyAgY2xhc3MgUHJvamVjdCB7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTWV0aG9kL09uZUxpbmVMYW1iZGFWYWx1ZUNvbXBhdGlibGVPbmVMaW5lLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTWV0aG9kL09uZUxpbmVMYW1iZGFWYWx1ZUNvbXBhdGlibGVPbmVMaW5lLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGU0MzE4NgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVNZXRob2QvT25lTGluZUxhbWJkYVZhbHVlQ29tcGF0aWJsZU9uZUxpbmUuamF2YQpAQCAtMCwwICsxLDI2IEBACisvKgorICogQ29weXJpZ2h0IDIwMDAtMjAxMiBKZXRCcmFpbnMgcy5yLm8uCisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworaW1wb3J0IGphdmEubGFuZy5Db21wYXJhYmxlOworCitjbGFzcyBUZXN0IHsKKyAgICAgcHJpdmF0ZSBpbnQgYmFyKCkgeworICAgICAgIHJldHVybiA0MjsKKyAgICAgfQorIAorICAgICBwdWJsaWMgdm9pZCBmb28oKSB7CisgICAgICAgICBDb21wYXJhYmxlPFN0cmluZz4gYyA9IChvKSAtPiBiYTxjYXJldD5yKCk7CisgICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVNZXRob2QvT25lTGluZUxhbWJkYVZhbHVlQ29tcGF0aWJsZU9uZUxpbmUuamF2YS5hZnRlciBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVNZXRob2QvT25lTGluZUxhbWJkYVZhbHVlQ29tcGF0aWJsZU9uZUxpbmUuamF2YS5hZnRlcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMzllOTUwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZU1ldGhvZC9PbmVMaW5lTGFtYmRhVmFsdWVDb21wYXRpYmxlT25lTGluZS5qYXZhLmFmdGVyCkBAIC0wLDAgKzEsMjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwMC0yMDEyIEpldEJyYWlucyBzLnIuby4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitpbXBvcnQgamF2YS5sYW5nLkNvbXBhcmFibGU7CisKK2NsYXNzIFRlc3QgeworICAgICBwcml2YXRlIGludCBiYXIoKSB7CisgICAgICAgcmV0dXJuIDQyOworICAgICB9CisgCisgICAgIHB1YmxpYyB2b2lkIGZvbygpIHsKKyAgICAgICAgIENvbXBhcmFibGU8U3RyaW5nPiBjID0gKG8pIC0+IDQyOworICAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTWV0aG9kL09uZUxpbmVMYW1iZGFWYWx1ZUNvbXBhdGlibGVUb0Jsb2NrLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTWV0aG9kL09uZUxpbmVMYW1iZGFWYWx1ZUNvbXBhdGlibGVUb0Jsb2NrLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWJlOWQ3NAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVNZXRob2QvT25lTGluZUxhbWJkYVZhbHVlQ29tcGF0aWJsZVRvQmxvY2suamF2YQpAQCAtMCwwICsxLDI3IEBACitpbXBvcnQgamF2YS5sYW5nLkNvbXBhcmFibGU7CisKKy8qCisgKiBDb3B5cmlnaHQgMjAwMC0yMDEyIEpldEJyYWlucyBzLnIuby4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitjbGFzcyBUZXN0IHsKKyAgICAgcHJpdmF0ZSBpbnQgYmFyKCkgeworICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiIik7CisgICAgICAgcmV0dXJuIDQyOworICAgICB9CisgCisgICAgIHB1YmxpYyB2b2lkIGZvbygpIHsKKyAgICAgICAgIENvbXBhcmFibGU8U3RyaW5nPiBjID0gKG8pIC0+IGJhPGNhcmV0PnIoKTsKKyAgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZU1ldGhvZC9PbmVMaW5lTGFtYmRhVmFsdWVDb21wYXRpYmxlVG9CbG9jay5qYXZhLmFmdGVyIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZU1ldGhvZC9PbmVMaW5lTGFtYmRhVmFsdWVDb21wYXRpYmxlVG9CbG9jay5qYXZhLmFmdGVyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM0NDkzMmQyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZU1ldGhvZC9PbmVMaW5lTGFtYmRhVmFsdWVDb21wYXRpYmxlVG9CbG9jay5qYXZhLmFmdGVyCkBAIC0wLDAgKzEsMzAgQEAKK2ltcG9ydCBqYXZhLmxhbmcuQ29tcGFyYWJsZTsKKworLyoKKyAqIENvcHlyaWdodCAyMDAwLTIwMTIgSmV0QnJhaW5zIHMuci5vLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK2NsYXNzIFRlc3QgeworICAgICBwcml2YXRlIGludCBiYXIoKSB7CisgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCIiKTsKKyAgICAgICByZXR1cm4gNDI7CisgICAgIH0KKyAKKyAgICAgcHVibGljIHZvaWQgZm9vKCkgeworICAgICAgICAgQ29tcGFyYWJsZTxTdHJpbmc+IGMgPSAobykgLT4geworICAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiIik7CisgICAgICAgICAgICAgcmV0dXJuIDQyOworICAgICAgICAgfTsKKyAgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZU1ldGhvZC9PbmVMaW5lTGFtYmRhVm9pZENvbXBhdGlibGVPbmVMaW5lLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTWV0aG9kL09uZUxpbmVMYW1iZGFWb2lkQ29tcGF0aWJsZU9uZUxpbmUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MTk5NjM3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZU1ldGhvZC9PbmVMaW5lTGFtYmRhVm9pZENvbXBhdGlibGVPbmVMaW5lLmphdmEKQEAgLTAsMCArMSwyNCBAQAorLyoKKyAqIENvcHlyaWdodCAyMDAwLTIwMTIgSmV0QnJhaW5zIHMuci5vLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK2NsYXNzIFRlc3QgeworICAgICBwcml2YXRlIHZvaWQgYmFyKCkgeworICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiIik7CisgICAgIH0KKyAKKyAgICAgcHVibGljIHZvaWQgZm9vKCkgeworICAgICAgICAgUnVubmFibGUgciA9ICgpIC0+IGJhPGNhcmV0PnIoKTsKKyAgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZU1ldGhvZC9PbmVMaW5lTGFtYmRhVm9pZENvbXBhdGlibGVPbmVMaW5lLmphdmEuYWZ0ZXIgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTWV0aG9kL09uZUxpbmVMYW1iZGFWb2lkQ29tcGF0aWJsZU9uZUxpbmUuamF2YS5hZnRlcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNjljYjIwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZU1ldGhvZC9PbmVMaW5lTGFtYmRhVm9pZENvbXBhdGlibGVPbmVMaW5lLmphdmEuYWZ0ZXIKQEAgLTAsMCArMSwyNCBAQAorLyoKKyAqIENvcHlyaWdodCAyMDAwLTIwMTIgSmV0QnJhaW5zIHMuci5vLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK2NsYXNzIFRlc3QgeworICAgICBwcml2YXRlIHZvaWQgYmFyKCkgeworICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiIik7CisgICAgIH0KKyAKKyAgICAgcHVibGljIHZvaWQgZm9vKCkgeworICAgICAgICAgUnVubmFibGUgciA9ICgpIC0+IFN5c3RlbS5vdXQucHJpbnRsbigiIik7CisgICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVNZXRob2QvT25lTGluZUxhbWJkYVZvaWRDb21wYXRpYmxlVG9CbG9jay5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZU1ldGhvZC9PbmVMaW5lTGFtYmRhVm9pZENvbXBhdGlibGVUb0Jsb2NrLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDU5Y2UzMwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVNZXRob2QvT25lTGluZUxhbWJkYVZvaWRDb21wYXRpYmxlVG9CbG9jay5qYXZhCkBAIC0wLDAgKzEsMjUgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwMC0yMDEyIEpldEJyYWlucyBzLnIuby4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitjbGFzcyBUZXN0IHsKKyAgICAgcHJpdmF0ZSB2b2lkIGJhcigpIHsKKyAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIiIpOworICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiIik7CisgICAgIH0KKyAKKyAgICAgcHVibGljIHZvaWQgZm9vKCkgeworICAgICAgICAgUnVubmFibGUgciA9ICgpIC0+IGJhPGNhcmV0PnIoKTsKKyAgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZU1ldGhvZC9PbmVMaW5lTGFtYmRhVm9pZENvbXBhdGlibGVUb0Jsb2NrLmphdmEuYWZ0ZXIgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTWV0aG9kL09uZUxpbmVMYW1iZGFWb2lkQ29tcGF0aWJsZVRvQmxvY2suamF2YS5hZnRlcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zODI3MTIwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZU1ldGhvZC9PbmVMaW5lTGFtYmRhVm9pZENvbXBhdGlibGVUb0Jsb2NrLmphdmEuYWZ0ZXIKQEAgLTAsMCArMSwyOCBAQAorLyoKKyAqIENvcHlyaWdodCAyMDAwLTIwMTIgSmV0QnJhaW5zIHMuci5vLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK2NsYXNzIFRlc3QgeworICAgICBwcml2YXRlIHZvaWQgYmFyKCkgeworICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiIik7CisgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCIiKTsKKyAgICAgfQorIAorICAgICBwdWJsaWMgdm9pZCBmb28oKSB7CisgICAgICAgICBSdW5uYWJsZSByID0gKCkgLT4geworICAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiIik7CisgICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCIiKTsKKyAgICAgICAgIH07CisgICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVNZXRob2QvUGFyYW1OYW1lQ29uZmxpY3RzV2l0aExvY2FsVmFyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTWV0aG9kL1BhcmFtTmFtZUNvbmZsaWN0c1dpdGhMb2NhbFZhci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdmM2FkYmQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTWV0aG9kL1BhcmFtTmFtZUNvbmZsaWN0c1dpdGhMb2NhbFZhci5qYXZhCkBAIC0wLDAgKzEsMTQgQEAKK3B1YmxpYyBjbGFzcyBBQmwgeworICAgIHZvaWQgZm9vKGludCBmZSkgeworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oZmUpOworICAgIH0KKworICAgIHZvaWQgYmFyKGJvb2xlYW4gYnIpIHsKKyAgICAgICAgaW50IGZlID0gMDsKKyAgICAgICAgaWYgKGJyKSB7CisgICAgICAgICAgICBmb28oZmUpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgZjxjYXJldD5vbygxMSk7CisgICAgICAgIH0KKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTWV0aG9kL1BhcmFtTmFtZUNvbmZsaWN0c1dpdGhMb2NhbFZhci5qYXZhLmFmdGVyIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZU1ldGhvZC9QYXJhbU5hbWVDb25mbGljdHNXaXRoTG9jYWxWYXIuamF2YS5hZnRlcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMDhiYzc1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZU1ldGhvZC9QYXJhbU5hbWVDb25mbGljdHNXaXRoTG9jYWxWYXIuamF2YS5hZnRlcgpAQCAtMCwwICsxLDExIEBACitwdWJsaWMgY2xhc3MgQUJsIHsKKworICAgIHZvaWQgYmFyKGJvb2xlYW4gYnIpIHsKKyAgICAgICAgaW50IGZlID0gMDsKKyAgICAgICAgaWYgKGJyKSB7CisgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oZmUpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKDExKTsKKyAgICAgICAgfQorICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVNZXRob2QvUmF3U3Vic3RpdHV0aW9uLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTWV0aG9kL1Jhd1N1YnN0aXR1dGlvbi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZlN2YwMmIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTWV0aG9kL1Jhd1N1YnN0aXR1dGlvbi5qYXZhCkBAIC0wLDAgKzEsMTYgQEAKK3B1YmxpYyBjbGFzcyBOb3RSYXc8VD4geworICAgIFQgZzxjYXJldD5ldChUIHQpeworICAgICAgICBUIHR0ID0gdDsKKyAgICAgICAgaWYgKCB0ID09IG51bGwpIHsKKyAgICAgICAgICAgIHJldHVybiBudWxsOworICAgICAgICB9ICAgICAgICAgICBlbHNlCisgICAgICAgIHJldHVybiBudWxsOworICAgIH0KKworfQorCitjbGFzcyBSYXcgZXh0ZW5kcyBOb3RSYXcgeworICAgIHZvaWQgZm9vKCkgeworICAgICAgICBPYmplY3QgbyA9IGdldChudWxsKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZU1ldGhvZC9SYXdTdWJzdGl0dXRpb24uamF2YS5hZnRlciBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVNZXRob2QvUmF3U3Vic3RpdHV0aW9uLmphdmEuYWZ0ZXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2JkYmMwMAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVNZXRob2QvUmF3U3Vic3RpdHV0aW9uLmphdmEuYWZ0ZXIKQEAgLTAsMCArMSwxNSBAQAorcHVibGljIGNsYXNzIE5vdFJhdzxUPiB7CisKK30KKworY2xhc3MgUmF3IGV4dGVuZHMgTm90UmF3IHsKKyAgICB2b2lkIGZvbygpIHsKKyAgICAgICAgT2JqZWN0IHJlc3VsdDsKKyAgICAgICAgT2JqZWN0IHR0ID0gbnVsbDsKKyAgICAgICAgaWYgKCBudWxsID09IG51bGwpIHsKKyAgICAgICAgICAgIHJlc3VsdCA9IG51bGw7CisgICAgICAgIH0gICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJlc3VsdCA9IG51bGw7CisgICAgICAgIE9iamVjdCBvID0gcmVzdWx0OworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTWV0aG9kL1JlcGxhY2VHZW5lcmljc0luc2lkZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZU1ldGhvZC9SZXBsYWNlR2VuZXJpY3NJbnNpZGUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNTExMjBjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZU1ldGhvZC9SZXBsYWNlR2VuZXJpY3NJbnNpZGUuamF2YQpAQCAtMCwwICsxLDE2IEBACitpbXBvcnQgamF2YS51dGlsLio7CitwdWJsaWMgY2xhc3MgU3VwZXI8VD4geworCisgIHZvaWQgPGNhcmV0PmZvbygpIHsKKyAgICBMaXN0PFQ+IGwgPSBuZXcgQXJyYXlMaXN0PFQ+KCk7CisgICAgZm9yIChUIHQgOiBsKSB7CisgICAgICBTeXN0ZW0ub3V0LnByaW50bG4odCk7CisgICAgfQorICB9Cit9CisKK2NsYXNzIFRlc3QgZXh0ZW5kcyBTdXBlcjxTdHJpbmc+eworICB2b2lkIGJhcigpIHsKKyAgICBmb28oKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVNZXRob2QvUmVwbGFjZUdlbmVyaWNzSW5zaWRlLmphdmEuYWZ0ZXIgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTWV0aG9kL1JlcGxhY2VHZW5lcmljc0luc2lkZS5qYXZhLmFmdGVyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM2YmJlYjQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTWV0aG9kL1JlcGxhY2VHZW5lcmljc0luc2lkZS5qYXZhLmFmdGVyCkBAIC0wLDAgKzEsMTMgQEAKK2ltcG9ydCBqYXZhLnV0aWwuKjsKK3B1YmxpYyBjbGFzcyBTdXBlcjxUPiB7CisKK30KKworY2xhc3MgVGVzdCBleHRlbmRzIFN1cGVyPFN0cmluZz57CisgIHZvaWQgYmFyKCkgeworICAgICAgTGlzdDxTdHJpbmc+IGwgPSBuZXcgQXJyYXlMaXN0PFN0cmluZz4oKTsKKyAgICAgIGZvciAoU3RyaW5nIHQgOiBsKSB7CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbih0KTsKKyAgICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVNZXRob2QvUmVwbGFjZVBhcmFtZXRlcldpdGhBcmd1bWVudEZvckNvbnN0cnVjdG9yLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTWV0aG9kL1JlcGxhY2VQYXJhbWV0ZXJXaXRoQXJndW1lbnRGb3JDb25zdHJ1Y3Rvci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ5NDc0NzgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTWV0aG9kL1JlcGxhY2VQYXJhbWV0ZXJXaXRoQXJndW1lbnRGb3JDb25zdHJ1Y3Rvci5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKK3B1YmxpYyBjbGFzcyBDb25zdHJ1Y3RlZENsYXNzIHsKKyAgICBwdWJsaWMgc3RhdGljIENvbnN0cnVjdGVkQ2xhc3MgUEVDX09ORSA9IG5ldyBDb25zdHJ1Y3RlZENsYXNzKCJwYXJhbSIpOworCisgICAgQ29uc3RydWN0ZWRDbGFzcyhpbnQgZmllbGQpIHsKKyAgICB9CisKKyAgICBwdWJsaWMgPGNhcmV0PkNvbnN0cnVjdGVkQ2xhc3MoU3RyaW5nIGtleXdvcmQpIHsKKwl0aGlzKGtleXdvcmQubGVuZ3RoKCkpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTWV0aG9kL1JlcGxhY2VQYXJhbWV0ZXJXaXRoQXJndW1lbnRGb3JDb25zdHJ1Y3Rvci5qYXZhLmFmdGVyIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZU1ldGhvZC9SZXBsYWNlUGFyYW1ldGVyV2l0aEFyZ3VtZW50Rm9yQ29uc3RydWN0b3IuamF2YS5hZnRlcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMmZiMzMwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZU1ldGhvZC9SZXBsYWNlUGFyYW1ldGVyV2l0aEFyZ3VtZW50Rm9yQ29uc3RydWN0b3IuamF2YS5hZnRlcgpAQCAtMCwwICsxLDcgQEAKK3B1YmxpYyBjbGFzcyBDb25zdHJ1Y3RlZENsYXNzIHsKKyAgICBwdWJsaWMgc3RhdGljIENvbnN0cnVjdGVkQ2xhc3MgUEVDX09ORSA9IG5ldyBDb25zdHJ1Y3RlZENsYXNzKCJwYXJhbSIubGVuZ3RoKCkpOworCisgICAgQ29uc3RydWN0ZWRDbGFzcyhpbnQgZmllbGQpIHsKKyAgICB9CisKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTWV0aG9kL1NDUjIwNjU1LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTWV0aG9kL1NDUjIwNjU1LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2E3ZDdiNzkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTWV0aG9kL1NDUjIwNjU1LmphdmEKQEAgLTAsMCArMSwxMSBAQAorY2xhc3MgU3VwZXIgeworICBwdWJsaWMgdm9pZCBtZXNzYWdlPGNhcmV0PigpIHsKKyAgICBTeXN0ZW0ub3V0LnByaW50bG4odGhpcyk7CisgIH0KK30KKworY2xhc3MgU3ViIGV4dGVuZHMgU3VwZXIgeworICBwdWJsaWMgdm9pZCBtZXNzYWdlKCkgeworICAgIHN1cGVyLm1lc3NhZ2UoKTsgICAgICAvLyA8LS0gSW5saW5lIHRoaXMgbWV0aG9kIGNhbGwuCisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTWV0aG9kL1NDUjIwNjU1LmphdmEuYWZ0ZXIgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTWV0aG9kL1NDUjIwNjU1LmphdmEuYWZ0ZXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWRhYmVhZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVNZXRob2QvU0NSMjA2NTUuamF2YS5hZnRlcgpAQCAtMCwwICsxLDggQEAKK2NsYXNzIFN1cGVyIHsKK30KKworY2xhc3MgU3ViIGV4dGVuZHMgU3VwZXIgeworICBwdWJsaWMgdm9pZCBtZXNzYWdlKCkgeworICAgICAgU3lzdGVtLm91dC5wcmludGxuKHRoaXMpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZU1ldGhvZC9TQ1IyMjY0NC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZU1ldGhvZC9TQ1IyMjY0NC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUyZGFkYjkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTWV0aG9kL1NDUjIyNjQ0LmphdmEKQEAgLTAsMCArMSwxNyBAQAorcHVibGljIGNsYXNzIFN1cGVyQ2xhc3MgeworICAgIHB1YmxpYyB2b2lkIDxjYXJldD5kb1NvbWV0aGluZygpIHsKKyAgICAgICAgVXRpbENsYXNzLmRvU29tZXRoaW5nKHRoaXMpOworICAgIH0KK30KKworcHVibGljIGNsYXNzIFN1YkNsYXNzIGV4dGVuZHMgU3VwZXJDbGFzcyB7CisgICAgcHVibGljIHZvaWQgZG9Tb21ldGhpbmdFbHNlKCkgeworICAgICAgICBkb1NvbWV0aGluZygpOworICAgIH0KK30KKworcHVibGljIGNsYXNzIFV0aWxDbGFzcyB7CisgICAgcHVibGljIHN0YXRpYyB2b2lkIGRvU29tZXRoaW5nKFN1cGVyQ2xhc3Mgc3VwZXJDbGFzcykgeworICAgICAgICAvLyAuLi4KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZU1ldGhvZC9TQ1IyMjY0NC5qYXZhLmFmdGVyIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZU1ldGhvZC9TQ1IyMjY0NC5qYXZhLmFmdGVyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNlOTNiYmYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTWV0aG9kL1NDUjIyNjQ0LmphdmEuYWZ0ZXIKQEAgLTAsMCArMSwxNCBAQAorcHVibGljIGNsYXNzIFN1cGVyQ2xhc3MgeworfQorCitwdWJsaWMgY2xhc3MgU3ViQ2xhc3MgZXh0ZW5kcyBTdXBlckNsYXNzIHsKKyAgICBwdWJsaWMgdm9pZCBkb1NvbWV0aGluZ0Vsc2UoKSB7CisgICAgICAgIFV0aWxDbGFzcy5kb1NvbWV0aGluZyh0aGlzKTsKKyAgICB9Cit9CisKK3B1YmxpYyBjbGFzcyBVdGlsQ2xhc3MgeworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBkb1NvbWV0aGluZyhTdXBlckNsYXNzIHN1cGVyQ2xhc3MpIHsKKyAgICAgICAgLy8gLi4uCisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVNZXRob2QvU0NSMzEwOTMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVNZXRob2QvU0NSMzEwOTMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYmU1MWUzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZU1ldGhvZC9TQ1IzMTA5My5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKK2NsYXNzIEEgeworICAgIHByaXZhdGUgdm9pZCBmKCkge30KK30KKworY2xhc3MgQiB7CisgICAgcHJpdmF0ZSBBIGI7CisgICAgcHVibGljIHZvaWQgZygpIHsKKyAgICAgICAgYi48Y2FyZXQ+ZigpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTWV0aG9kL1NDUjMxMDkzLmphdmEuYWZ0ZXIgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTWV0aG9kL1NDUjMxMDkzLmphdmEuYWZ0ZXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjQ5ZTMxMgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVNZXRob2QvU0NSMzEwOTMuamF2YS5hZnRlcgpAQCAtMCwwICsxLDggQEAKK2NsYXNzIEEgeworfQorCitjbGFzcyBCIHsKKyAgICBwcml2YXRlIEEgYjsKKyAgICBwdWJsaWMgdm9pZCBnKCkgeworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTWV0aG9kL1NDUjM3NzQyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTWV0aG9kL1NDUjM3NzQyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2MxNGVkOAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVNZXRob2QvU0NSMzc3NDIuamF2YQpAQCAtMCwwICsxLDEyIEBACitpbXBvcnQgamF2YS51dGlsLkxpc3Q7CitpbXBvcnQgamF2YS51dGlsLkFycmF5TGlzdDsKKworY2xhc3MgVGVzdCB7CisgICAgPFQ+IHZvaWQgZm9vKFQgdCkgeworICAgICAgICBMaXN0PD8gZXh0ZW5kcyBUPiBsID0gbmV3IEFycmF5TGlzdDxUPigpOworICAgIH0KKworICAgIHZvaWQgYmFyICgpIHsKKyAgICAgICAgPGNhcmV0PmZvbyhuZXcgU3RyaW5nKCkpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVNZXRob2QvU0NSMzc3NDIuamF2YS5hZnRlciBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVNZXRob2QvU0NSMzc3NDIuamF2YS5hZnRlcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZDQ5MmEzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZU1ldGhvZC9TQ1IzNzc0Mi5qYXZhLmFmdGVyCkBAIC0wLDAgKzEsOSBAQAoraW1wb3J0IGphdmEudXRpbC5MaXN0OworaW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7CisKK2NsYXNzIFRlc3QgeworCisgICAgdm9pZCBiYXIgKCkgeworICAgICAgICBMaXN0PD8gZXh0ZW5kcyBTdHJpbmc+IGwgPSBuZXcgQXJyYXlMaXN0PFN0cmluZz4oKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTWV0aG9kL1NjcjEwODg0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTWV0aG9kL1NjcjEwODg0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2M1OTNjZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVNZXRob2QvU2NyMTA4ODQuamF2YQpAQCAtMCwwICsxLDE2IEBACitwdWJsaWMgY2xhc3MgU2NyMTA4ODQgeworIGludCBmb28oKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgIH0KKyAgICAgICAgWSBiYXIoKSB7CisgICAgICAgICAgICByZXR1cm4gbmV3IFkoPGNhcmV0PmZvbygpKSB7CisJICAgIH07CisgICAgICAgIH0KK30KKworY2xhc3MgWSB7CisgICAgICAgIFkoaW50IHgpIHt9CisgICAgICAgIGludCBmb28oKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIDI7CisgICAgICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTWV0aG9kL1NjcjEwODg0LmphdmEuYWZ0ZXIgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTWV0aG9kL1NjcjEwODg0LmphdmEuYWZ0ZXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2RkNWIwOQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVNZXRob2QvU2NyMTA4ODQuamF2YS5hZnRlcgpAQCAtMCwwICsxLDEzIEBACitwdWJsaWMgY2xhc3MgU2NyMTA4ODQgeworICAgIFkgYmFyKCkgeworICAgICAgICByZXR1cm4gbmV3IFkoMSkgeworCSAgICB9OworICAgICAgICB9Cit9CisKK2NsYXNzIFkgeworICAgICAgICBZKGludCB4KSB7fQorICAgICAgICBpbnQgZm9vKCkgeworICAgICAgICAgICAgICAgIHJldHVybiAyOworICAgICAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZU1ldGhvZC9TY3IxMzgzMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZU1ldGhvZC9TY3IxMzgzMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY0OTE3MTAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTWV0aG9kL1NjcjEzODMxLmphdmEKQEAgLTAsMCArMSwxMiBAQAorcHVibGljIGNsYXNzIEZvbworeworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKCBTdHJpbmdbXSBhcmdzICkKKyAgICB7CisgICAgICAgIGxvZyggImludGVnZXIiLCBuZXcgSW50ZWdlciggNSApICk7CisgICAgICAgIGxvZyggImZsb2F0IiwgbmV3IEZsb2F0KCA1LjVmICkgKTsKKyAgICB9CisgIAorICAgIHByaXZhdGUgc3RhdGljIHZvaWQgPGNhcmV0PmxvZyhTdHJpbmcgdGl0bGUsIE9iamVjdCB2YWx1ZSkgeworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIHRpdGxlICsgIjoiICsgdmFsdWUgKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZU1ldGhvZC9TY3IxMzgzMS5qYXZhLmFmdGVyIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZU1ldGhvZC9TY3IxMzgzMS5qYXZhLmFmdGVyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM1M2Y3MWUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTWV0aG9kL1NjcjEzODMxLmphdmEuYWZ0ZXIKQEAgLTAsMCArMSw5IEBACitwdWJsaWMgY2xhc3MgRm9vCit7CisgICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oIFN0cmluZ1tdIGFyZ3MgKQorICAgIHsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCAiaW50ZWdlciIgKyAiOiIgKyBuZXcgSW50ZWdlciggNSApKTsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCAiZmxvYXQiICsgIjoiICsgbmV3IEZsb2F0KCA1LjVmICkpOworICAgIH0KKworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVNZXRob2QvU2lkZUVmZmVjdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZU1ldGhvZC9TaWRlRWZmZWN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGFjMzNlNQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVNZXRob2QvU2lkZUVmZmVjdC5qYXZhCkBAIC0wLDAgKzEsMTEgQEAKK2NsYXNzIFRlc3QgeworICAgIHByaXZhdGUgU3RyaW5nIHM7CisgICAgU3RyaW5nIDxjYXJldD5tZXRob2QoKSB7CisgICAgICAgIHMgPSAiSGVsbG8iOworICAgICAgICByZXR1cm4gczsKKyAgICB9CisgICAgdm9pZCB0ZXN0KCkgeworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4obWV0aG9kKCkpOworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4ocyk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVNZXRob2QvU2lkZUVmZmVjdC5qYXZhLmFmdGVyIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZU1ldGhvZC9TaWRlRWZmZWN0LmphdmEuYWZ0ZXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWNhMzJiYgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVNZXRob2QvU2lkZUVmZmVjdC5qYXZhLmFmdGVyCkBAIC0wLDAgKzEsOSBAQAorY2xhc3MgVGVzdCB7CisgICAgcHJpdmF0ZSBTdHJpbmcgczsKKworICAgIHZvaWQgdGVzdCgpIHsKKyAgICAgICAgcyA9ICJIZWxsbyI7CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihzKTsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKHMpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTWV0aG9kL1N0YXRpY0ZpZWxkSW5pdGlhbGl6ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVNZXRob2QvU3RhdGljRmllbGRJbml0aWFsaXplci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQwMDU0MWMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTWV0aG9kL1N0YXRpY0ZpZWxkSW5pdGlhbGl6ZXIuamF2YQpAQCAtMCwwICsxLDggQEAKK2NsYXNzIEF7CisgICAgc3RhdGljIGludCBmaWVsZCA9IGZvbygpOworCisgICAgc3RhdGljIGludCA8Y2FyZXQ+Zm9vKCl7CisgICAgICAgIGRvU29tZXRoaW5nKCk7CisgICAgICAgIHJldHVybiAxOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVNZXRob2QvU3RhdGljRmllbGRJbml0aWFsaXplci5qYXZhLmFmdGVyIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZU1ldGhvZC9TdGF0aWNGaWVsZEluaXRpYWxpemVyLmphdmEuYWZ0ZXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmE0YjBmOAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVNZXRob2QvU3RhdGljRmllbGRJbml0aWFsaXplci5qYXZhLmFmdGVyCkBAIC0wLDAgKzEsOSBAQAorY2xhc3MgQXsKKyAgICBzdGF0aWMgaW50IGZpZWxkOworCisgICAgc3RhdGljIHsKKyAgICAgICAgZG9Tb21ldGhpbmcoKTsKKyAgICAgICAgZmllbGQgPSAxOworICAgIH0KKworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZU1ldGhvZC9TdGF0aWNNZXRob2RXaXRob3V0UGFyYW1zLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTWV0aG9kL1N0YXRpY01ldGhvZFdpdGhvdXRQYXJhbXMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYjRhZDBlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZU1ldGhvZC9TdGF0aWNNZXRob2RXaXRob3V0UGFyYW1zLmphdmEKQEAgLTAsMCArMSw2IEBACitjbGFzcyBBeworICBzdGF0aWMgdm9pZCA8Y2FyZXQ+Zm9vKCl7fQorICBzdGF0aWMgdm9pZCBiYXIoKXsKKyAgICBmb28oNjY2KTsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZU1ldGhvZC9TdGF0aWNNZXRob2RXaXRob3V0UGFyYW1zLmphdmEuYWZ0ZXIgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTWV0aG9kL1N0YXRpY01ldGhvZFdpdGhvdXRQYXJhbXMuamF2YS5hZnRlcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MjczMzA3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZU1ldGhvZC9TdGF0aWNNZXRob2RXaXRob3V0UGFyYW1zLmphdmEuYWZ0ZXIKQEAgLTAsMCArMSw0IEBACitjbGFzcyBBeworICAgIHN0YXRpYyB2b2lkIGJhcigpeworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVNZXRob2QvU3RhdGljU3luY2hyb25pemVkLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTWV0aG9kL1N0YXRpY1N5bmNocm9uaXplZC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJiNDc3MjQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTWV0aG9kL1N0YXRpY1N5bmNocm9uaXplZC5qYXZhCkBAIC0wLDAgKzEsMTcgQEAKK3B1YmxpYyBjbGFzcyBUZXN0SW50ZWxsaUoKK3sKKworICAgIHB1YmxpYyBzeW5jaHJvbml6ZWQgdm9pZCBmb28oKSB7CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiZm9vIik7CisgICAgfQorCisgICAgcHVibGljIHN0YXRpYyBzeW5jaHJvbml6ZWQgdm9pZCBmb288Y2FyZXQ+U3RhdGljKCkgeworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oImZvb1N0YXRpYyIpOworICAgIH0KKworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKKyAgICAgICAgVGVzdEludGVsbGlKIHRlc3QgPSBuZXcgVGVzdEludGVsbGlKKCk7CisgICAgICAgIHRlc3QuZm9vKCk7CisgICAgICAgIFRlc3RJbnRlbGxpSi5mb29TdGF0aWMoKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZU1ldGhvZC9TdGF0aWNTeW5jaHJvbml6ZWQuamF2YS5hZnRlciBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVNZXRob2QvU3RhdGljU3luY2hyb25pemVkLmphdmEuYWZ0ZXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGJhMDAyNwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVNZXRob2QvU3RhdGljU3luY2hyb25pemVkLmphdmEuYWZ0ZXIKQEAgLTAsMCArMSwxNSBAQAorcHVibGljIGNsYXNzIFRlc3RJbnRlbGxpSgoreworCisgICAgcHVibGljIHN5bmNocm9uaXplZCB2b2lkIGZvbygpIHsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJmb28iKTsKKyAgICB9CisKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CisgICAgICAgIFRlc3RJbnRlbGxpSiB0ZXN0ID0gbmV3IFRlc3RJbnRlbGxpSigpOworICAgICAgICB0ZXN0LmZvbygpOworICAgICAgICBzeW5jaHJvbml6ZWQgKFRlc3RJbnRlbGxpSi5jbGFzcykgeworICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJmb29TdGF0aWMiKTsKKyAgICAgICAgfQorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTWV0aG9kL1N1YnN0aXR1dGlvbi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZU1ldGhvZC9TdWJzdGl0dXRpb24uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNDkwNjg0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZU1ldGhvZC9TdWJzdGl0dXRpb24uamF2YQpAQCAtMCwwICsxLDQ3IEBACitjbGFzcyBGb28geworICBwdWJsaWMgc3RhdGljIDxULCBMb2M+IFdlaWdoaW5nQ29tcGFyYWJsZTxULCBMb2M+IHdlPGNhcmV0PmlnaChmaW5hbCBLZXk8PyBleHRlbmRzIFdlaWdoZXI8VCwgTG9jPj4ga2V5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbmFsIENvbXB1dGFibGU8VD4gZWxlbWVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaW5hbCBMb2MgbG9jYXRpb24pIHsKKyAgICByZXR1cm4gbmV3IFdlaWdoaW5nQ29tcGFyYWJsZTxULCBMb2M+KGVsZW1lbnQsIGxvY2F0aW9uLCBuZXcgV2VpZ2hlclswXSk7CisgIH0KKworCisgIHB1YmxpYyBXZWlnaGluZ0NvbXBhcmFibGU8U3RyaW5nLCBQcm94aW1pdHlMb2NhdGlvbj4gbWV0aG9kKGJvb2xlYW4gYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluYWwgQ29tcHV0YWJsZTxTdHJpbmc+IGVsZW1lbnRDb21wdXRhYmxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPYmplY3QgcHJvY2Vzc2luZ0NvbnRleHQpIHsKKyAgICByZXR1cm4gd2VpZ2goV0VJR0hFUl9LRVksIGVsZW1lbnRDb21wdXRhYmxlLCBuZXcgUHJveGltaXR5TG9jYXRpb24oKSk7CisgIH0KKworICBwdWJsaWMgc3RhdGljIGZpbmFsIEtleTxQcm94aW1pdHlXZWlnaGVyPiBXRUlHSEVSX0tFWSA9IG51bGw7Cit9CisKK2Fic3RyYWN0IGNsYXNzIFByb3hpbWl0eVdlaWdoZXIgZXh0ZW5kcyBXZWlnaGVyPFN0cmluZywgUHJveGltaXR5TG9jYXRpb24+IHsKKworfQorCitjbGFzcyBQcm94aW1pdHlMb2NhdGlvbiB7Cit9CisKK2NsYXNzIEtleTxQPiB7Cit9CisKK2NsYXNzIFdlaWdoZXI8QSwgQj4geworfQorCitjbGFzcyBDb21wdXRhYmxlPE8+IHt9CisKK2NsYXNzIFdlaWdoaW5nQ29tcGFyYWJsZTxULCBMb2M+IGltcGxlbWVudHMgQ29tcGFyYWJsZTxXZWlnaGluZ0NvbXBhcmFibGU8VCwgTG9jPj4geworCisgIHB1YmxpYyBXZWlnaGluZ0NvbXBhcmFibGUoZmluYWwgQ29tcHV0YWJsZTxUPiBlbGVtZW50LCBmaW5hbCBMb2MgbG9jYXRpb24sIGZpbmFsIFdlaWdoZXJbXSB3ZWlnaGVycykgeworICAgIC8vVG8gY2hhbmdlIGJvZHkgb2YgY3JlYXRlZCBtZXRob2RzIHVzZSBGaWxlIHwgU2V0dGluZ3MgfCBGaWxlIFRlbXBsYXRlcy4KKyAgfQorCisgIHB1YmxpYyBpbnQgY29tcGFyZVRvKEBOb3ROdWxsIGZpbmFsIFdlaWdoaW5nQ29tcGFyYWJsZTxULCBMb2M+IGNvbXBhcmFibGUpIHsKKyAgICByZXR1cm4gMDsKKyAgfQorCisgIEBOdWxsYWJsZQorICBwcml2YXRlIENvbXBhcmFibGUgZ2V0V2VpZ2h0KGZpbmFsIGludCBpbmRleCkgeworICAgIHJldHVybiBudWxsOworICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTWV0aG9kL1N1YnN0aXR1dGlvbi5qYXZhLmFmdGVyIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZU1ldGhvZC9TdWJzdGl0dXRpb24uamF2YS5hZnRlcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZDYzYmRjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZU1ldGhvZC9TdWJzdGl0dXRpb24uamF2YS5hZnRlcgpAQCAtMCwwICsxLDQyIEBACitjbGFzcyBGb28geworCisKKyAgICBwdWJsaWMgV2VpZ2hpbmdDb21wYXJhYmxlPFN0cmluZywgUHJveGltaXR5TG9jYXRpb24+IG1ldGhvZChib29sZWFuIGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbmFsIENvbXB1dGFibGU8U3RyaW5nPiBlbGVtZW50Q29tcHV0YWJsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0IHByb2Nlc3NpbmdDb250ZXh0KSB7CisgICAgICAgIHJldHVybiBuZXcgV2VpZ2hpbmdDb21wYXJhYmxlPFN0cmluZywgUHJveGltaXR5TG9jYXRpb24+KGVsZW1lbnRDb21wdXRhYmxlLCBuZXcgUHJveGltaXR5TG9jYXRpb24oKSwgbmV3IFdlaWdoZXJbMF0pOworICAgIH0KKworICBwdWJsaWMgc3RhdGljIGZpbmFsIEtleTxQcm94aW1pdHlXZWlnaGVyPiBXRUlHSEVSX0tFWSA9IG51bGw7Cit9CisKK2Fic3RyYWN0IGNsYXNzIFByb3hpbWl0eVdlaWdoZXIgZXh0ZW5kcyBXZWlnaGVyPFN0cmluZywgUHJveGltaXR5TG9jYXRpb24+IHsKKworfQorCitjbGFzcyBQcm94aW1pdHlMb2NhdGlvbiB7Cit9CisKK2NsYXNzIEtleTxQPiB7Cit9CisKK2NsYXNzIFdlaWdoZXI8QSwgQj4geworfQorCitjbGFzcyBDb21wdXRhYmxlPE8+IHt9CisKK2NsYXNzIFdlaWdoaW5nQ29tcGFyYWJsZTxULCBMb2M+IGltcGxlbWVudHMgQ29tcGFyYWJsZTxXZWlnaGluZ0NvbXBhcmFibGU8VCwgTG9jPj4geworCisgIHB1YmxpYyBXZWlnaGluZ0NvbXBhcmFibGUoZmluYWwgQ29tcHV0YWJsZTxUPiBlbGVtZW50LCBmaW5hbCBMb2MgbG9jYXRpb24sIGZpbmFsIFdlaWdoZXJbXSB3ZWlnaGVycykgeworICAgIC8vVG8gY2hhbmdlIGJvZHkgb2YgY3JlYXRlZCBtZXRob2RzIHVzZSBGaWxlIHwgU2V0dGluZ3MgfCBGaWxlIFRlbXBsYXRlcy4KKyAgfQorCisgIHB1YmxpYyBpbnQgY29tcGFyZVRvKEBOb3ROdWxsIGZpbmFsIFdlaWdoaW5nQ29tcGFyYWJsZTxULCBMb2M+IGNvbXBhcmFibGUpIHsKKyAgICByZXR1cm4gMDsKKyAgfQorCisgIEBOdWxsYWJsZQorICBwcml2YXRlIENvbXBhcmFibGUgZ2V0V2VpZ2h0KGZpbmFsIGludCBpbmRleCkgeworICAgIHJldHVybiBudWxsOworICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTWV0aG9kL1N1cGVySW5zaWRlSGllcmFyY2h5LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTWV0aG9kL1N1cGVySW5zaWRlSGllcmFyY2h5LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWZiNjAwMwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVNZXRob2QvU3VwZXJJbnNpZGVIaWVyYXJjaHkuamF2YQpAQCAtMCwwICsxLDE5IEBACitjbGFzcyBBIHsKKyAgdm9pZCBmb28oKXsKKyAgICAvL2RvIHNtdGggaW4gQQorICB9Cit9CisKK2NsYXNzIEIgeworICB2b2lkIDxjYXJldD5iYXIoKSB7CisgICAgc3VwZXIuZm9vKCk7CisgIH0KKworICB2b2lkIHRlc3QoKXsKKyAgICBiYXIoKTsKKyAgfQorCisgIHZvaWQgZm9vKCkgeworICAgIC8vZG8gc210aAorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZU1ldGhvZC9TdXBlckluc2lkZUhpZXJhcmNoeS5qYXZhLmFmdGVyIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZU1ldGhvZC9TdXBlckluc2lkZUhpZXJhcmNoeS5qYXZhLmFmdGVyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjczYzZjOWE0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZU1ldGhvZC9TdXBlckluc2lkZUhpZXJhcmNoeS5qYXZhLmFmdGVyCkBAIC0wLDAgKzEsMTYgQEAKK2NsYXNzIEEgeworICB2b2lkIGZvbygpeworICAgIC8vZG8gc210aCBpbiBBCisgIH0KK30KKworY2xhc3MgQiB7CisKKyAgICB2b2lkIHRlc3QoKXsKKyAgICAgICAgc3VwZXIuZm9vKCk7CisgICAgfQorCisgIHZvaWQgZm9vKCkgeworICAgIC8vZG8gc210aAorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZU1ldGhvZC9TdXBlck1ldGhvZEluQW5vbnltb3VzQ2xhc3MuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVNZXRob2QvU3VwZXJNZXRob2RJbkFub255bW91c0NsYXNzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTUyM2JhZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVNZXRob2QvU3VwZXJNZXRob2RJbkFub255bW91c0NsYXNzLmphdmEKQEAgLTAsMCArMSwyMyBAQAorY2xhc3MgQSB7CisgICAgcHVibGljIHZvaWQgZigpIHsKKyAgICAgIGcoKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBnKCkgeworICAgIH0KKyAgfQorCisgIGNsYXNzIEIgZXh0ZW5kcyBBIHsKKyAgICBwdWJsaWMgdm9pZCBnKCkgeworCisgICAgfQorICAgIHB1YmxpYyB2b2lkIGgoKSB7CisgICAgICBuZXcgUnVubmFibGUoKSB7CisKKyAgICAgICAgQE92ZXJyaWRlCisgICAgICAgIHB1YmxpYyB2b2lkIHJ1bigpIHsKKyAgICAgICAgICBmPGNhcmV0PigpOworICAgICAgICB9CisgICAgICB9LnJ1bigpOworICAgIH0KKyAgfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZU1ldGhvZC9TdXBlck1ldGhvZEluQW5vbnltb3VzQ2xhc3MuamF2YS5hZnRlciBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVNZXRob2QvU3VwZXJNZXRob2RJbkFub255bW91c0NsYXNzLmphdmEuYWZ0ZXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWE0MmJhZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVNZXRob2QvU3VwZXJNZXRob2RJbkFub255bW91c0NsYXNzLmphdmEuYWZ0ZXIKQEAgLTAsMCArMSwyMCBAQAorY2xhc3MgQSB7CisKKyAgICBwdWJsaWMgdm9pZCBnKCkgeworICAgIH0KKyAgfQorCisgIGNsYXNzIEIgZXh0ZW5kcyBBIHsKKyAgICBwdWJsaWMgdm9pZCBnKCkgeworCisgICAgfQorICAgIHB1YmxpYyB2b2lkIGgoKSB7CisgICAgICBuZXcgUnVubmFibGUoKSB7CisKKyAgICAgICAgQE92ZXJyaWRlCisgICAgICAgIHB1YmxpYyB2b2lkIHJ1bigpIHsKKyAgICAgICAgICAgIGcoKTsKKyAgICAgICAgfQorICAgICAgfS5ydW4oKTsKKyAgICB9CisgIH0KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVNZXRob2QvVGFpbENhbGxSZXR1cm4uamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVNZXRob2QvVGFpbENhbGxSZXR1cm4uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNGQ0YzQ2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZU1ldGhvZC9UYWlsQ2FsbFJldHVybi5qYXZhCkBAIC0wLDAgKzEsMTIgQEAKK2NsYXNzIEEgeworICAgIHByaXZhdGUgU3RyaW5nIHRvSW5saW5lKGJvb2xlYW4gYikgeworICAgICAgICBpZiAoYikgeworICAgICAgICAgICAgcmV0dXJuICJiIjsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gImEiOworICAgIH0KKworICAgIHB1YmxpYyBTdHJpbmcgbWV0aG9kKGJvb2xlYW4gYikgeworICAgICAgICByZXR1cm4gPGNhcmV0PnRvSW5saW5lKGIpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTWV0aG9kL1RhaWxDYWxsUmV0dXJuLmphdmEuYWZ0ZXIgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTWV0aG9kL1RhaWxDYWxsUmV0dXJuLmphdmEuYWZ0ZXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjFkYzFkZTAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTWV0aG9kL1RhaWxDYWxsUmV0dXJuLmphdmEuYWZ0ZXIKQEAgLTAsMCArMSw5IEBACitjbGFzcyBBIHsKKworICAgIHB1YmxpYyBTdHJpbmcgbWV0aG9kKGJvb2xlYW4gYikgeworICAgICAgICBpZiAoYikgeworICAgICAgICAgICAgcmV0dXJuICJiIjsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gImEiOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTWV0aG9kL1RhaWxDYWxsU2ltcGxlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTWV0aG9kL1RhaWxDYWxsU2ltcGxlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTRkNGM0NgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVNZXRob2QvVGFpbENhbGxTaW1wbGUuamF2YQpAQCAtMCwwICsxLDEyIEBACitjbGFzcyBBIHsKKyAgICBwcml2YXRlIFN0cmluZyB0b0lubGluZShib29sZWFuIGIpIHsKKyAgICAgICAgaWYgKGIpIHsKKyAgICAgICAgICAgIHJldHVybiAiYiI7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuICJhIjsKKyAgICB9CisKKyAgICBwdWJsaWMgU3RyaW5nIG1ldGhvZChib29sZWFuIGIpIHsKKyAgICAgICAgcmV0dXJuIDxjYXJldD50b0lubGluZShiKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZU1ldGhvZC9UYWlsQ2FsbFNpbXBsZS5qYXZhLmFmdGVyIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZU1ldGhvZC9UYWlsQ2FsbFNpbXBsZS5qYXZhLmFmdGVyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYxZGMxZGUwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZU1ldGhvZC9UYWlsQ2FsbFNpbXBsZS5qYXZhLmFmdGVyCkBAIC0wLDAgKzEsOSBAQAorY2xhc3MgQSB7CisKKyAgICBwdWJsaWMgU3RyaW5nIG1ldGhvZChib29sZWFuIGIpIHsKKyAgICAgICAgaWYgKGIpIHsKKyAgICAgICAgICAgIHJldHVybiAiYiI7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuICJhIjsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZU1ldGhvZC9UYWlsQ29tbWVudC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZU1ldGhvZC9UYWlsQ29tbWVudC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM0M2VkMmMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTWV0aG9kL1RhaWxDb21tZW50LmphdmEKQEAgLTAsMCArMSwxMCBAQAorY2xhc3MgVGVzdCB7CisgIHByaXZhdGUgdm9pZCBiKCl7CisgICAgPGNhcmV0PmEoKTsKKyAgfQorCisgIHByaXZhdGUgdm9pZCBhKCl7CisgICAgU3lzdGVtLm91dC5wcmludGxuKCJhc2Rhc2QiKTsKKyAgICAvL3Rlc3QKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVNZXRob2QvVGFpbENvbW1lbnQuamF2YS5hZnRlciBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVNZXRob2QvVGFpbENvbW1lbnQuamF2YS5hZnRlcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZDVmM2E5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZU1ldGhvZC9UYWlsQ29tbWVudC5qYXZhLmFmdGVyCkBAIC0wLDAgKzEsNyBAQAorY2xhc3MgVGVzdCB7CisgIHByaXZhdGUgdm9pZCBiKCl7CisgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oImFzZGFzZCIpOworICAgICAgLy90ZXN0CisgIH0KKworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVNZXRob2QvVHJ5LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTWV0aG9kL1RyeS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMxNjE3MzkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTWV0aG9kL1RyeS5qYXZhCkBAIC0wLDAgKzEsMTUgQEAKK3B1YmxpYyBjbGFzcyBUcnkgeworICAgIHB1YmxpYyBpbnQgdGVzdCgpIHsKKyAgICAgICAgaW50IGkgPSBhbm90aGVyKCk7CisgICAgICAgIHJldHVybiBpOworICAgIH0KKyAKKyAgICBwdWJsaWMgaW50IGFub3RoZXI8Y2FyZXQ+KCkgeworICAgICAgICB0cnkgeworICAgICAgICAgICAgcmV0dXJuIEludGVnZXIucGFyc2VJbnQoIjEiKTsKKyAgICAgICAgfQorICAgICAgICBjYXRjaCAoTnVtYmVyRm9ybWF0RXhjZXB0aW9uIGV4KSB7CisgICAgICAgICAgICB0aHJvdyBleDsKKyAgICAgICAgfQorICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVNZXRob2QvVHJ5LmphdmEuYWZ0ZXIgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTWV0aG9kL1RyeS5qYXZhLmFmdGVyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM4Y2QwOGQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTWV0aG9kL1RyeS5qYXZhLmFmdGVyCkBAIC0wLDAgKzEsMTQgQEAKK3B1YmxpYyBjbGFzcyBUcnkgeworICAgIHB1YmxpYyBpbnQgdGVzdCgpIHsKKyAgICAgICAgaW50IHJlc3VsdDsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIHJlc3VsdCA9IEludGVnZXIucGFyc2VJbnQoIjEiKTsKKyAgICAgICAgfQorICAgICAgICBjYXRjaCAoTnVtYmVyRm9ybWF0RXhjZXB0aW9uIGV4KSB7CisgICAgICAgICAgICB0aHJvdyBleDsKKyAgICAgICAgfQorICAgICAgICBpbnQgaSA9IHJlc3VsdDsKKyAgICAgICAgcmV0dXJuIGk7CisgICAgfQorCit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTWV0aG9kL1RyeVN5bmNocm9uaXplZC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZU1ldGhvZC9UcnlTeW5jaHJvbml6ZWQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMjY5MWI4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZU1ldGhvZC9UcnlTeW5jaHJvbml6ZWQuamF2YQpAQCAtMCwwICsxLDE1IEBACitwdWJsaWMgY2xhc3MgVHJ5IHsKKyAgICBwdWJsaWMgaW50IHRlc3QoKSB7CisgICAgICAgIGludCBpID0gYW5vdGhlcigpOworICAgICAgICByZXR1cm4gaTsKKyAgICB9CisgCisgICAgcHVibGljIHN5bmNocm9uaXplZCBpbnQgYW5vdGhlcjxjYXJldD4oKSB7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICByZXR1cm4gSW50ZWdlci5wYXJzZUludCgiMSIpOworICAgICAgICB9CisgICAgICAgIGNhdGNoIChOdW1iZXJGb3JtYXRFeGNlcHRpb24gZXgpIHsKKyAgICAgICAgICAgIHRocm93IGV4OworICAgICAgICB9CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZU1ldGhvZC9UcnlTeW5jaHJvbml6ZWQuamF2YS5hZnRlciBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVNZXRob2QvVHJ5U3luY2hyb25pemVkLmphdmEuYWZ0ZXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTkzNThiYwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVNZXRob2QvVHJ5U3luY2hyb25pemVkLmphdmEuYWZ0ZXIKQEAgLTAsMCArMSwxNiBAQAorcHVibGljIGNsYXNzIFRyeSB7CisgICAgcHVibGljIGludCB0ZXN0KCkgeworICAgICAgICBpbnQgcmVzdWx0OworICAgICAgICBzeW5jaHJvbml6ZWQgKHRoaXMpIHsKKyAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgcmVzdWx0ID0gSW50ZWdlci5wYXJzZUludCgiMSIpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgY2F0Y2ggKE51bWJlckZvcm1hdEV4Y2VwdGlvbiBleCkgeworICAgICAgICAgICAgICAgIHRocm93IGV4OworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGludCBpID0gcmVzdWx0OworICAgICAgICByZXR1cm4gaTsKKyAgICB9CisKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVNZXRob2QvVmFyYXJncy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZU1ldGhvZC9WYXJhcmdzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmNkMzFjZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVNZXRob2QvVmFyYXJncy5qYXZhCkBAIC0wLDAgKzEsMTMgQEAKK3B1YmxpYyBjbGFzcyBWYXJhcmdzIHsKKyAgICBwdWJsaWMgc3RhdGljIFN0cmluZyBqb2luKFN0cmluZyBzZXBhcmF0b3IsIFN0cmluZy4uLiB0ZXh0cykgeworICAgICAgICByZXR1cm4gIiI7CisgICAgfQorCisgICAgcHVibGljIHN0YXRpYyBTdHJpbmcgam9pblN0cmluZ3MoU3RyaW5nIHNlcGFyYXRvciwgU3RyaW5nLi4uIHRleHRzKSB7CisgICAgICAgIHJldHVybiBqb2luKHNlcGFyYXRvciwgdGV4dHMpOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIGZvbygpIHsKKyAgICAgICAgU3RyaW5nIHMgPSA8Y2FyZXQ+am9pblN0cmluZ3MoIiIsICJpIiwgImQiLCAiZSIsICJhIik7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVNZXRob2QvVmFyYXJncy5qYXZhLmFmdGVyIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZU1ldGhvZC9WYXJhcmdzLmphdmEuYWZ0ZXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjI4NjdhZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVNZXRob2QvVmFyYXJncy5qYXZhLmFmdGVyCkBAIC0wLDAgKzEsOSBAQAorcHVibGljIGNsYXNzIFZhcmFyZ3MgeworICAgIHB1YmxpYyBzdGF0aWMgU3RyaW5nIGpvaW4oU3RyaW5nIHNlcGFyYXRvciwgU3RyaW5nLi4uIHRleHRzKSB7CisgICAgICAgIHJldHVybiAiIjsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBmb28oKSB7CisgICAgICAgIFN0cmluZyBzID0gam9pbigiIiwgImkiLCAiZCIsICJlIiwgImEiKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZU1ldGhvZC9WYXJhcmdzMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZU1ldGhvZC9WYXJhcmdzMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk3NmRiYmEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTWV0aG9kL1ZhcmFyZ3MxLmphdmEKQEAgLTAsMCArMSwxMSBAQAorY2xhc3MgQnVnVGVzdCB7CisgICAgdm9pZCA8Y2FyZXQ+ZihTdHJpbmcuLi4gcykgeworICAgICAgICBmb3IgKFN0cmluZyBzMSA6IHMpIHsKKworICAgICAgICB9CisgICAgfQorCisgICAgeworICAgICAgICBmKG5ldyBTdHJpbmdbXSB7IiJ9KTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZU1ldGhvZC9WYXJhcmdzMS5qYXZhLmFmdGVyIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZU1ldGhvZC9WYXJhcmdzMS5qYXZhLmFmdGVyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM1Y2E2NWEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTWV0aG9kL1ZhcmFyZ3MxLmphdmEuYWZ0ZXIKQEAgLTAsMCArMSw4IEBACitjbGFzcyBCdWdUZXN0IHsKKworICAgIHsKKyAgICAgICAgZm9yIChTdHJpbmcgczEgOiBuZXcgU3RyaW5nW10geyIifSkgeworCisgICAgICAgIH0KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZU1ldGhvZC9Wb2lkV2l0aFJldHVybi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZU1ldGhvZC9Wb2lkV2l0aFJldHVybi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU0MDcyZDEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTWV0aG9kL1ZvaWRXaXRoUmV0dXJuLmphdmEKQEAgLTAsMCArMSw5IEBACitjbGFzcyBUZXN0IHsKKyAgICB2b2lkIG1ldGhvZCgpIHsKKyAgICAgICAgb3RoZXJNZXRob2QoKTsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJIZXJlIik7CisgICAgfQorICAgIHZvaWQgb3RoZXJNZXRob2Q8Y2FyZXQ+KCkgeworICAgICAgICByZXR1cm47CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVNZXRob2QvVm9pZFdpdGhSZXR1cm4uamF2YS5hZnRlciBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVNZXRob2QvVm9pZFdpdGhSZXR1cm4uamF2YS5hZnRlcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMGU3NTgyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZU1ldGhvZC9Wb2lkV2l0aFJldHVybi5qYXZhLmFmdGVyCkBAIC0wLDAgKzEsNSBAQAorY2xhc3MgVGVzdCB7CisgICAgdm9pZCBtZXRob2QoKSB7CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiSGVyZSIpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTWV0aG9kL1ZvaWRXaXRoUmV0dXJuMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZU1ldGhvZC9Wb2lkV2l0aFJldHVybjEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lOTM0OGQyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZU1ldGhvZC9Wb2lkV2l0aFJldHVybjEuamF2YQpAQCAtMCwwICsxLDkgQEAKK2NsYXNzIFRlc3QgeworICAgIHByaXZhdGUgc3RhdGljIHZvaWQgZHVkZSgpIHsKKyAgICAgICAgcmV0dXJuIFN5c3RlbS5jdXJyZW50VGltZU1pbGxpcygpOworICAgIH0KKworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKKyAgICAgICAgPGNhcmV0PmR1ZGUoKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZU1ldGhvZC9Wb2lkV2l0aFJldHVybjEuamF2YS5hZnRlciBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVNZXRob2QvVm9pZFdpdGhSZXR1cm4xLmphdmEuYWZ0ZXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWMwYmUxNAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVNZXRob2QvVm9pZFdpdGhSZXR1cm4xLmphdmEuYWZ0ZXIKQEAgLTAsMCArMSw2IEBACitjbGFzcyBUZXN0IHsKKworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKKyAgICAgICAgU3lzdGVtLmN1cnJlbnRUaW1lTWlsbGlzKCk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVNZXRob2QvV2l0aFN1cGVySW5zaWRlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTWV0aG9kL1dpdGhTdXBlckluc2lkZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAxNWUzYjAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTWV0aG9kL1dpdGhTdXBlckluc2lkZS5qYXZhCkBAIC0wLDAgKzEsMTcgQEAKK3B1YmxpYyBjbGFzcyBVc2FnZSB7CisgIHZvaWQgZm9vKCkgeworICAgIGI8Y2FyZXQ+YXIoKTsKKyAgfQorCisgIHZvaWQgYmFyKCkgeworICAgIG5ldyBXKCkgeworICAgICAgcHJvdGVjdGVkIHZvaWQgd3d3KCkgeworICAgICAgICBzdXBlci53d3coKTsKKyAgICAgIH0KKyAgICB9OworICB9Cit9CisKK2NsYXNzIFcgeworICBwcm90ZWN0ZWQgdm9pZCB3d3coKSB7fQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVNZXRob2QvV2l0aFN1cGVySW5zaWRlLmphdmEuYWZ0ZXIgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTWV0aG9kL1dpdGhTdXBlckluc2lkZS5qYXZhLmFmdGVyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ0NTRhN2YKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTWV0aG9kL1dpdGhTdXBlckluc2lkZS5qYXZhLmFmdGVyCkBAIC0wLDAgKzEsMTQgQEAKK3B1YmxpYyBjbGFzcyBVc2FnZSB7CisgIHZvaWQgZm9vKCkgeworICAgICAgbmV3IFcoKSB7CisgICAgICAgIHByb3RlY3RlZCB2b2lkIHd3dygpIHsKKyAgICAgICAgICBzdXBlci53d3coKTsKKyAgICAgICAgfQorICAgICAgfTsKKyAgfQorCit9CisKK2NsYXNzIFcgeworICBwcm90ZWN0ZWQgdm9pZCB3d3coKSB7fQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVNZXRob2QvbXVsdGlmaWxlL3JlbW92ZVN0YXRpY0ltcG9ydHMvYWZ0ZXIvQmFyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTWV0aG9kL211bHRpZmlsZS9yZW1vdmVTdGF0aWNJbXBvcnRzL2FmdGVyL0Jhci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJmMWRmZGUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTWV0aG9kL211bHRpZmlsZS9yZW1vdmVTdGF0aWNJbXBvcnRzL2FmdGVyL0Jhci5qYXZhCkBAIC0wLDAgKzEsNCBAQAorcHVibGljIGNsYXNzIEJhciB7CisgIHZvaWQgYmFyKCkgeworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZU1ldGhvZC9tdWx0aWZpbGUvcmVtb3ZlU3RhdGljSW1wb3J0cy9hZnRlci9Gb28uamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVNZXRob2QvbXVsdGlmaWxlL3JlbW92ZVN0YXRpY0ltcG9ydHMvYWZ0ZXIvRm9vLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGEyYjA1MgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVNZXRob2QvbXVsdGlmaWxlL3JlbW92ZVN0YXRpY0ltcG9ydHMvYWZ0ZXIvRm9vLmphdmEKQEAgLTAsMCArMSwyIEBACitwdWJsaWMgY2xhc3MgRm9vIHsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTWV0aG9kL211bHRpZmlsZS9yZW1vdmVTdGF0aWNJbXBvcnRzL2JlZm9yZS9CYXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVNZXRob2QvbXVsdGlmaWxlL3JlbW92ZVN0YXRpY0ltcG9ydHMvYmVmb3JlL0Jhci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBkMTExNjAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lTWV0aG9kL211bHRpZmlsZS9yZW1vdmVTdGF0aWNJbXBvcnRzL2JlZm9yZS9CYXIuamF2YQpAQCAtMCwwICsxLDYgQEAKK2ltcG9ydCBzdGF0aWMgRm9vLmZvbzsKK3B1YmxpYyBjbGFzcyBCYXIgeworICB2b2lkIGJhcigpIHsKKyAgICBmb28oKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVNZXRob2QvbXVsdGlmaWxlL3JlbW92ZVN0YXRpY0ltcG9ydHMvYmVmb3JlL0Zvby5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZU1ldGhvZC9tdWx0aWZpbGUvcmVtb3ZlU3RhdGljSW1wb3J0cy9iZWZvcmUvRm9vLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzhmNDA4YQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVNZXRob2QvbXVsdGlmaWxlL3JlbW92ZVN0YXRpY0ltcG9ydHMvYmVmb3JlL0Zvby5qYXZhCkBAIC0wLDAgKzEsMyBAQAorcHVibGljIGNsYXNzIEZvbyB7CisgIHB1YmxpYyBzdGF0aWMgdm9pZCBmb28oKXt9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVBhcmFtZXRlci9DYW50SW5saW5lUmVjdXJzaXZlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lUGFyYW1ldGVyL0NhbnRJbmxpbmVSZWN1cnNpdmUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41Yzc0NzRmMQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVQYXJhbWV0ZXIvQ2FudElubGluZVJlY3Vyc2l2ZS5qYXZhCkBAIC0wLDAgKzEsMTggQEAKK2ltcG9ydCBqYXZhLmxhbmcuSW50ZWdlcjsKK2ltcG9ydCBqYXZhLnV0aWwuKjsKK2ltcG9ydCBqYXZhLnV0aWwuQXJyYXlMaXN0OworCitwdWJsaWMgY2xhc3MgRXhwRGF0YSB7CisgICBwcml2YXRlIGZpbmFsIExpc3Q8SW50ZWdlcj4gbXlSZXN1bHQgPSBuZXcgQXJyYXlMaXN0PEludGVnZXI+KCk7CisgIHsKKyAgICBtKDEwLCBteVJlc3VsdCk7CisgIH0KKworICBwcml2YXRlIHZvaWQgbShpbnQgaSwgTGlzdDxJbnRlZ2VyPiByZTxjYXJldD5zdWx0KSB7CisgICAgaWYgKGkgPiAwKSB7CisgICAgICBtKGkgLSAxLCByZXN1bHQpOworICAgIH0KKyAgICByZXN1bHQuYWRkKGkpOworICAgIG0oMiwgbmV3IEFycmF5TGlzdDxJbnRlZ2VyPigpKTsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVBhcmFtZXRlci9Db25zdHJ1Y3RvckNhbGwuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVQYXJhbWV0ZXIvQ29uc3RydWN0b3JDYWxsLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzJhYzdmMgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVQYXJhbWV0ZXIvQ29uc3RydWN0b3JDYWxsLmphdmEKQEAgLTAsMCArMSwxMSBAQAorY2xhc3MgQSB7CisgICAgcHJpdmF0ZSBpbnQgbXlJOworCisgICAgcHJpdmF0ZSBBKGludCA8Y2FyZXQ+aSkgeworICAgICAgICBteUkgPSBpOworICAgIH0KKworICAgIHB1YmxpYyBzdGF0aWMgQSBjcmVhdGUoKSB7CisgICAgICAgIHJldHVybiBuZXcgQSgwKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVBhcmFtZXRlci9Db25zdHJ1Y3RvckNhbGwuamF2YS5hZnRlciBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVQYXJhbWV0ZXIvQ29uc3RydWN0b3JDYWxsLmphdmEuYWZ0ZXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWIzMmM4YwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVQYXJhbWV0ZXIvQ29uc3RydWN0b3JDYWxsLmphdmEuYWZ0ZXIKQEAgLTAsMCArMSwxMSBAQAorY2xhc3MgQSB7CisgICAgcHJpdmF0ZSBpbnQgbXlJOworCisgICAgcHJpdmF0ZSBBKCkgeworICAgICAgICBteUkgPSAwOworICAgIH0KKworICAgIHB1YmxpYyBzdGF0aWMgQSBjcmVhdGUoKSB7CisgICAgICAgIHJldHVybiBuZXcgQSgpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lUGFyYW1ldGVyL0hhbmRsZUV4Y2VwdGlvbnMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVQYXJhbWV0ZXIvSGFuZGxlRXhjZXB0aW9ucy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI1NTg5MjIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lUGFyYW1ldGVyL0hhbmRsZUV4Y2VwdGlvbnMuamF2YQpAQCAtMCwwICsxLDI2IEBACitpbXBvcnQgamF2YS5pby4qOworcHVibGljIGNsYXNzIFN1YmplY3QgeworICBwcml2YXRlIGludCBteUludDsKKworICBwdWJsaWMgdm9pZCB3aXRoQ2xhc3MoT2JqZWN0IDxjYXJldD5vKSB7CisgICAgbXlJbnQgKz0gby5oYXNoQ29kZSgpOworICB9Cit9CisKK2NsYXNzIFVzZXIgeworICBwcml2YXRlIHZvaWQgb3BlcigpIHRocm93cyBJT0V4Y2VwdGlvbiB7CisgICAgU3ViamVjdCBzdWJqID0gbmV3IFN1YmplY3QoKTsKKyAgICBzdWJqLndpdGhDbGFzcyhuZXcgVGhpcmRQYXJ0eShmYWxzZSkpOworICB9Cit9CisKK2NsYXNzIFRoaXJkUGFydHkgeworICBwdWJsaWMgVGhpcmRQYXJ0eSgpIHsKKyAgfQorCisgIHB1YmxpYyBUaGlyZFBhcnR5KGJvb2xlYW4gYikgdGhyb3dzIElPRXhjZXB0aW9uIHsKKyAgICBpZiAoYikgeworICAgICAgdGhyb3cgbmV3IElPRXhjZXB0aW9uKCk7CisgICAgfQorICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lUGFyYW1ldGVyL0hhbmRsZUV4Y2VwdGlvbnMuamF2YS5hZnRlciBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVQYXJhbWV0ZXIvSGFuZGxlRXhjZXB0aW9ucy5qYXZhLmFmdGVyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhlODc0NjQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lUGFyYW1ldGVyL0hhbmRsZUV4Y2VwdGlvbnMuamF2YS5hZnRlcgpAQCAtMCwwICsxLDI2IEBACitpbXBvcnQgamF2YS5pby4qOworcHVibGljIGNsYXNzIFN1YmplY3QgeworICBwcml2YXRlIGludCBteUludDsKKworICBwdWJsaWMgdm9pZCB3aXRoQ2xhc3MoKSB0aHJvd3MgSU9FeGNlcHRpb24geworICAgIG15SW50ICs9IG5ldyBUaGlyZFBhcnR5KGZhbHNlKS5oYXNoQ29kZSgpOworICB9Cit9CisKK2NsYXNzIFVzZXIgeworICBwcml2YXRlIHZvaWQgb3BlcigpIHRocm93cyBJT0V4Y2VwdGlvbiB7CisgICAgU3ViamVjdCBzdWJqID0gbmV3IFN1YmplY3QoKTsKKyAgICBzdWJqLndpdGhDbGFzcygpOworICB9Cit9CisKK2NsYXNzIFRoaXJkUGFydHkgeworICBwdWJsaWMgVGhpcmRQYXJ0eSgpIHsKKyAgfQorCisgIHB1YmxpYyBUaGlyZFBhcnR5KGJvb2xlYW4gYikgdGhyb3dzIElPRXhjZXB0aW9uIHsKKyAgICBpZiAoYikgeworICAgICAgdGhyb3cgbmV3IElPRXhjZXB0aW9uKCk7CisgICAgfQorICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lUGFyYW1ldGVyL0lubGluZUxvY2FsUGFyYW1EZWYuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVQYXJhbWV0ZXIvSW5saW5lTG9jYWxQYXJhbURlZi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjllNTk1M2YKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lUGFyYW1ldGVyL0lubGluZUxvY2FsUGFyYW1EZWYuamF2YQpAQCAtMCwwICsxLDYgQEAKK3B1YmxpYyBjbGFzcyBFeHBEYXRhIHsKKyAgdm9pZCBmb28oU3RyaW5nIHMpIHsKKyAgICBzID0gIiI7CisgICAgU3lzdGVtLm91dC5wcmludGxuKDxjYXJldD5zLnN1YnN0cmluZygyKSk7CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVQYXJhbWV0ZXIvSW5saW5lTG9jYWxQYXJhbURlZi5qYXZhLmFmdGVyIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVBhcmFtZXRlci9JbmxpbmVMb2NhbFBhcmFtRGVmLmphdmEuYWZ0ZXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzMyZDEzMgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVQYXJhbWV0ZXIvSW5saW5lTG9jYWxQYXJhbURlZi5qYXZhLmFmdGVyCkBAIC0wLDAgKzEsNSBAQAorcHVibGljIGNsYXNzIEV4cERhdGEgeworICB2b2lkIGZvbyhTdHJpbmcgcykgeworICAgICAgU3lzdGVtLm91dC5wcmludGxuKCIiLnN1YnN0cmluZygyKSk7CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVQYXJhbWV0ZXIvSW5saW5lUmVjdXJzaXZlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lUGFyYW1ldGVyL0lubGluZVJlY3Vyc2l2ZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg4ZmI1NDgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lUGFyYW1ldGVyL0lubGluZVJlY3Vyc2l2ZS5qYXZhCkBAIC0wLDAgKzEsMTUgQEAKK2ltcG9ydCBqYXZhLnV0aWwuKjsKKworcHVibGljIGNsYXNzIEV4cERhdGEgeworICAgcHJpdmF0ZSBmaW5hbCBMaXN0PEludGVnZXI+IG15UmVzdWx0ID0gbmV3IEFycmF5TGlzdDxJbnRlZ2VyPigpOworICB7CisgICAgbSgxMCwgbXlSZXN1bHQpOworICB9CisKKyAgcHJpdmF0ZSB2b2lkIG0oaW50IGksIExpc3Q8SW50ZWdlcj4gcmU8Y2FyZXQ+c3VsdCkgeworICAgIGlmIChpID4gMCkgeworICAgICAgbShpIC0gMSwgcmVzdWx0KTsKKyAgICB9CisgICAgcmVzdWx0LmFkZChpKTsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVBhcmFtZXRlci9JbmxpbmVSZWN1cnNpdmUuamF2YS5hZnRlciBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVQYXJhbWV0ZXIvSW5saW5lUmVjdXJzaXZlLmphdmEuYWZ0ZXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWYzNDFhMwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVQYXJhbWV0ZXIvSW5saW5lUmVjdXJzaXZlLmphdmEuYWZ0ZXIKQEAgLTAsMCArMSwxNSBAQAoraW1wb3J0IGphdmEudXRpbC4qOworCitwdWJsaWMgY2xhc3MgRXhwRGF0YSB7CisgICBwcml2YXRlIGZpbmFsIExpc3Q8SW50ZWdlcj4gbXlSZXN1bHQgPSBuZXcgQXJyYXlMaXN0PEludGVnZXI+KCk7CisgIHsKKyAgICBtKDEwKTsKKyAgfQorCisgIHByaXZhdGUgdm9pZCBtKGludCBpKSB7CisgICAgaWYgKGkgPiAwKSB7CisgICAgICBtKGkgLSAxKTsKKyAgICB9CisgICAgbXlSZXN1bHQuYWRkKGkpOworICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lUGFyYW1ldGVyL0xvY2FsVmFyRGVjbGFyYXRpb25JbkNvbnN0cnVjdG9yLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lUGFyYW1ldGVyL0xvY2FsVmFyRGVjbGFyYXRpb25JbkNvbnN0cnVjdG9yLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDExOTVlMAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVQYXJhbWV0ZXIvTG9jYWxWYXJEZWNsYXJhdGlvbkluQ29uc3RydWN0b3IuamF2YQpAQCAtMCwwICsxLDE1IEBACitjbGFzcyBCYXNlIHsKKyAgICBwdWJsaWMgQmFzZSgpIHsKKyAgICB9Cit9CisKK2NsYXNzIEluaGVyaXRvciBleHRlbmRzIEJhc2UgeworICAgIHB1YmxpYyBJbmhlcml0b3IoU3RyaW5nIGI8Y2FyZXQ+YXIpIHsKKyAgICAgICAgc3VwZXIoKTsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKGJhcik7CisgICAgfQorCisgICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgeworICAgICAgICBuZXcgSW5oZXJpdG9yKCJiYXIiLnRvU3RyaW5nKCkpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lUGFyYW1ldGVyL0xvY2FsVmFyRGVjbGFyYXRpb25JbkNvbnN0cnVjdG9yLmphdmEuYWZ0ZXIgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lUGFyYW1ldGVyL0xvY2FsVmFyRGVjbGFyYXRpb25JbkNvbnN0cnVjdG9yLmphdmEuYWZ0ZXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTk4OWZkMAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVQYXJhbWV0ZXIvTG9jYWxWYXJEZWNsYXJhdGlvbkluQ29uc3RydWN0b3IuamF2YS5hZnRlcgpAQCAtMCwwICsxLDE2IEBACitjbGFzcyBCYXNlIHsKKyAgICBwdWJsaWMgQmFzZSgpIHsKKyAgICB9Cit9CisKK2NsYXNzIEluaGVyaXRvciBleHRlbmRzIEJhc2UgeworICAgIHB1YmxpYyBJbmhlcml0b3IoKSB7CisgICAgICAgIHN1cGVyKCk7CisgICAgICAgIFN0cmluZyBiYXIgPSAiYmFyIi50b1N0cmluZygpOworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oYmFyKTsKKyAgICB9CisKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CisgICAgICAgIG5ldyBJbmhlcml0b3IoKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVBhcmFtZXRlci9OdWxsVmFsdWUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVQYXJhbWV0ZXIvTnVsbFZhbHVlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjk2YWMyZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVQYXJhbWV0ZXIvTnVsbFZhbHVlLmphdmEKQEAgLTAsMCArMSwxMyBAQAorcHVibGljIGNsYXNzIEEgeworICB2b2lkIHRlc3QoaW50IGNvdW50LCBTdHJpbmcgPGNhcmV0PnMpIHsKKyAgICBTdHJpbmcgdCA9IHM7CisgIH0KKworICB2b2lkIGNhbGxUZXN0KCkgeworICAgIHRlc3QoMSwgbnVsbCk7CisgIH0KKworICB2b2lkIGNhbGxUZXN0MigpIHsKKyAgICB0ZXN0KDIsIG51bGwpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVBhcmFtZXRlci9OdWxsVmFsdWUuamF2YS5hZnRlciBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVQYXJhbWV0ZXIvTnVsbFZhbHVlLmphdmEuYWZ0ZXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDU3YWJjNAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVQYXJhbWV0ZXIvTnVsbFZhbHVlLmphdmEuYWZ0ZXIKQEAgLTAsMCArMSwxMyBAQAorcHVibGljIGNsYXNzIEEgeworICB2b2lkIHRlc3QoaW50IGNvdW50KSB7CisgICAgU3RyaW5nIHQgPSBudWxsOworICB9CisKKyAgdm9pZCBjYWxsVGVzdCgpIHsKKyAgICB0ZXN0KDEpOworICB9CisKKyAgdm9pZCBjYWxsVGVzdDIoKSB7CisgICAgdGVzdCgyKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVQYXJhbWV0ZXIvUGFyYW1ldGVyRGVmV2l0aFdyaXRlQWNjZXNzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lUGFyYW1ldGVyL1BhcmFtZXRlckRlZldpdGhXcml0ZUFjY2Vzcy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE5YzUwODMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lUGFyYW1ldGVyL1BhcmFtZXRlckRlZldpdGhXcml0ZUFjY2Vzcy5qYXZhCkBAIC0wLDAgKzEsNiBAQAorcHVibGljIGNsYXNzIEV4cERhdGEgeworICB2b2lkIGZvbyhpbnQgaSkgeworICAgIGkgPSAwOworICAgIFN5c3RlbS5vdXQucHJpbnRsbig8Y2FyZXQ+aSsrKTsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVBhcmFtZXRlci9QYXJhbWV0ZXJXaXRoV3JpdGVBY2Nlc3MuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVQYXJhbWV0ZXIvUGFyYW1ldGVyV2l0aFdyaXRlQWNjZXNzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjg5NGYxYQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVQYXJhbWV0ZXIvUGFyYW1ldGVyV2l0aFdyaXRlQWNjZXNzLmphdmEKQEAgLTAsMCArMSwxMCBAQAorY2xhc3MgQ2xhenogeworICAgIHB1YmxpYyBDbGF6eihTdHJpbmcgYjxjYXJldD5hcikgeworICAgICAgICBiYXIgPSBiYXIgKyBiYXI7CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihiYXIpOworICAgIH0KKworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKKyAgICAgICAgbmV3IENsYXp6KCJiYXIiKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVBhcmFtZXRlci9SZWYyQ29uc3RhbnRzV2l0aFRoZVNhbWVWYWx1ZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVBhcmFtZXRlci9SZWYyQ29uc3RhbnRzV2l0aFRoZVNhbWVWYWx1ZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE4OTNkOGMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lUGFyYW1ldGVyL1JlZjJDb25zdGFudHNXaXRoVGhlU2FtZVZhbHVlLmphdmEKQEAgLTAsMCArMSwxOCBAQAorcHVibGljIGNsYXNzIFN1YmplY3QgeworICBwcml2YXRlIGludCBteUludDsKKworICBwdWJsaWMgdm9pZCB3cChpbnQgPGNhcmV0PnApIHsKKyAgICBteUludCArPSBwOworICB9Cit9CisKK2NsYXNzIFVzZXIgeworICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBPVVJfQ09OU1QgPSAyOworICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBPVVJfQ09OU1QyID0gMjsKKworICBwcml2YXRlIHZvaWQgb3BlcigpIHsKKyAgICBTdWJqZWN0IHN1YmogPSBuZXcgU3ViamVjdCgpOworICAgIHN1Ymoud3AoT1VSX0NPTlNUKTsKKyAgICBzdWJqLndwKE9VUl9DT05TVDIpOworICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lUGFyYW1ldGVyL1JlZjJDb25zdGFudHNXaXRoVGhlU2FtZVZhbHVlLmphdmEuYWZ0ZXIgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lUGFyYW1ldGVyL1JlZjJDb25zdGFudHNXaXRoVGhlU2FtZVZhbHVlLmphdmEuYWZ0ZXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjkyMTU0ZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVQYXJhbWV0ZXIvUmVmMkNvbnN0YW50c1dpdGhUaGVTYW1lVmFsdWUuamF2YS5hZnRlcgpAQCAtMCwwICsxLDE4IEBACitwdWJsaWMgY2xhc3MgU3ViamVjdCB7CisgIHByaXZhdGUgaW50IG15SW50OworCisgIHB1YmxpYyB2b2lkIHdwKCkgeworICAgIG15SW50ICs9IFVzZXIuT1VSX0NPTlNUOworICB9Cit9CisKK2NsYXNzIFVzZXIgeworICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBPVVJfQ09OU1QgPSAyOworICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBPVVJfQ09OU1QyID0gMjsKKworICBwcml2YXRlIHZvaWQgb3BlcigpIHsKKyAgICBTdWJqZWN0IHN1YmogPSBuZXcgU3ViamVjdCgpOworICAgIHN1Ymoud3AoKTsKKyAgICBzdWJqLndwKCk7CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVQYXJhbWV0ZXIvUmVmQXJyYXlBY2Nlc3MuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVQYXJhbWV0ZXIvUmVmQXJyYXlBY2Nlc3MuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MjlmZDI3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVBhcmFtZXRlci9SZWZBcnJheUFjY2Vzcy5qYXZhCkBAIC0wLDAgKzEsMTYgQEAKK3B1YmxpYyBjbGFzcyBTdWJqZWN0IHsKKyAgcHJpdmF0ZSBpbnQgbXlJbnQ7CisKKyAgcHVibGljIHZvaWQgd2l0aEFycmF5KGludFtdIDxjYXJldD5waWEpIHsKKyAgICBteUludCArPSBwaWFbMF07CisgIH0KK30KKworY2xhc3MgVXNlciB7CisgIHByaXZhdGUgdm9pZCBvcGVyKCkgeworICAgIFN1YmplY3Qgc3ViaiA9IG5ldyBTdWJqZWN0KCk7CisgICAgaW50W10gaWEgPSBuZXcgaW50W117MCwgMX07CisgICAgaWFbMF0gPSAyOworICAgIHN1Ymoud2l0aEFycmF5KGlhKTsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVBhcmFtZXRlci9SZWZDYWxsZXJQYXJhbWV0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVQYXJhbWV0ZXIvUmVmQ2FsbGVyUGFyYW1ldGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzJkODQ2OQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVQYXJhbWV0ZXIvUmVmQ2FsbGVyUGFyYW1ldGVyLmphdmEKQEAgLTAsMCArMSw5IEBACitjbGFzcyBPdXRlciB7CisgIHB1YmxpYyB2b2lkIHdpdGhDbGFzcyhPYmplY3QgPGNhcmV0Pm8pIHsKKyAgICBTeXN0ZW0ub3V0LnByaW50bG4oby50b1N0cmluZygpKTsKKyAgfQorCisgIHB1YmxpYyB2b2lkIGZvb3IoT2JqZWN0IG9iamN0KSB7CisgICAgd2l0aENsYXNzKG9iamN0KTsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVBhcmFtZXRlci9SZWZDYWxsZXJQYXJhbWV0ZXJJbkNhbGxDaGFpbi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVBhcmFtZXRlci9SZWZDYWxsZXJQYXJhbWV0ZXJJbkNhbGxDaGFpbi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYyZGM0Y2UKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lUGFyYW1ldGVyL1JlZkNhbGxlclBhcmFtZXRlckluQ2FsbENoYWluLmphdmEKQEAgLTAsMCArMSwyMSBAQAorY2xhc3MgRm9vIHsKKyAgICB2b2lkIGYoYm9vbGVhbiBiKSB7CisgICAgICAgIFN0cmluZyBwcm9qZWN0ID0gcHJvamVjdChiKTsKKyAgICAgICAgaWYgKGIpIHsKKyAgICAgICAgICAgIGJhcnJycihwcm9qZWN0LnN1YnN0cmluZygwKSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBpZiAodHJ1ZSkgeworICAgICAgICAgICAgICAgIGJhcnJycihwcm9qZWN0LnN1YnN0cmluZygwKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgIH0KKworICAgIHByaXZhdGUgdm9pZCBiYXJycnIoU3RyaW5nIDxjYXJldD5wUHJvamVjdCkgeworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4ocFByb2plY3QpOworICAgIH0KKworICAgIFN0cmluZyBwcm9qZWN0IChib29sZWFuIGIpIHsKKyAgICAgICAgcmV0dXJuIG51bGw7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVQYXJhbWV0ZXIvUmVmQ29uc3RhbnRBbmRGaWVsZC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVBhcmFtZXRlci9SZWZDb25zdGFudEFuZEZpZWxkLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmJlMDJmOQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVQYXJhbWV0ZXIvUmVmQ29uc3RhbnRBbmRGaWVsZC5qYXZhCkBAIC0wLDAgKzEsMTggQEAKK3B1YmxpYyBjbGFzcyBTdWJqZWN0IHsKKyAgcHJpdmF0ZSBpbnQgbXlJbnQ7CisKKyAgcHVibGljIHZvaWQgd3AoaW50IDxjYXJldD5wKSB7CisgICAgbXlJbnQgKz0gcDsKKyAgfQorfQorCitjbGFzcyBVc2VyIHsKKyAgcHVibGljIHN0YXRpYyBpbnQgb3VyU3RhdGljID0gMDsKKyAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgT1VSX0NPTlNUID0gMDsKKworICBwcml2YXRlIHZvaWQgb3BlcigpIHsKKyAgICBTdWJqZWN0IHN1YmogPSBuZXcgU3ViamVjdCgpOworICAgIHN1Ymoud3AoT1VSX0NPTlNUKTsKKyAgICBzdWJqLndwKG91clN0YXRpYyk7CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVQYXJhbWV0ZXIvUmVmRmluYWxMb2NhbC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVBhcmFtZXRlci9SZWZGaW5hbExvY2FsLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjY1MzQ0ZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVQYXJhbWV0ZXIvUmVmRmluYWxMb2NhbC5qYXZhCkBAIC0wLDAgKzEsMTEgQEAKK3B1YmxpYyBjbGFzcyBBIHsKKyAgICB2b2lkIHRlc3QoU3RyaW5nIHMxLCBmaW5hbCBTdHJpbmcgPGNhcmV0PnMyKSB7CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihzMSk7CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihzMik7CisgICAgfQorCisgICAgdm9pZCBjYWxsVGVzdCgpIHsKKyAgICAgICAgU3RyaW5nIHMgPSAiIjsKKyAgICAgICAgdGVzdChzLCBzKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lUGFyYW1ldGVyL1JlZkZpbmFsTG9jYWwuamF2YS5hZnRlciBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVQYXJhbWV0ZXIvUmVmRmluYWxMb2NhbC5qYXZhLmFmdGVyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY3MjgwOWYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lUGFyYW1ldGVyL1JlZkZpbmFsTG9jYWwuamF2YS5hZnRlcgpAQCAtMCwwICsxLDEyIEBACitwdWJsaWMgY2xhc3MgQSB7CisgICAgdm9pZCB0ZXN0KFN0cmluZyBzMSkgeworICAgICAgICBmaW5hbCBTdHJpbmcgczIgPSBzMTsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKHMxKTsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKHMyKTsKKyAgICB9CisKKyAgICB2b2lkIGNhbGxUZXN0KCkgeworICAgICAgICBTdHJpbmcgcyA9ICIiOworICAgICAgICB0ZXN0KHMpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVQYXJhbWV0ZXIvUmVmRmluYWxMb2NhbEluaXRpYWxpemVkV2l0aE1ldGhvZC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVBhcmFtZXRlci9SZWZGaW5hbExvY2FsSW5pdGlhbGl6ZWRXaXRoTWV0aG9kLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODUwYmM5NQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVQYXJhbWV0ZXIvUmVmRmluYWxMb2NhbEluaXRpYWxpemVkV2l0aE1ldGhvZC5qYXZhCkBAIC0wLDAgKzEsMTEgQEAKK3B1YmxpYyBjbGFzcyBBIHsKKyAgICB2b2lkIHRlc3QoU3RyaW5nIHMsIGludCA8Y2FyZXQ+bCkgeworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4ocyk7CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihsKTsKKyAgICB9CisKKyAgICB2b2lkIGNhbGxUZXN0KFN0cmluZyBhU3RyaW5nKSB7CisgICAgICAgIGZpbmFsIGludCBsZW4gPSBhU3RyaW5nLmxlbmd0aCgpOworICAgICAgICB0ZXN0KGFTdHJpbmcsIGxlbik7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVBhcmFtZXRlci9SZWZGaW5hbExvY2FsSW5pdGlhbGl6ZWRXaXRoTWV0aG9kLmphdmEuYWZ0ZXIgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lUGFyYW1ldGVyL1JlZkZpbmFsTG9jYWxJbml0aWFsaXplZFdpdGhNZXRob2QuamF2YS5hZnRlcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MDRiNDUwNAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVQYXJhbWV0ZXIvUmVmRmluYWxMb2NhbEluaXRpYWxpemVkV2l0aE1ldGhvZC5qYXZhLmFmdGVyCkBAIC0wLDAgKzEsMTAgQEAKK3B1YmxpYyBjbGFzcyBBIHsKKyAgICB2b2lkIHRlc3QoU3RyaW5nIHMpIHsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKHMpOworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4ocy5sZW5ndGgoKSk7CisgICAgfQorCisgICAgdm9pZCBjYWxsVGVzdChTdHJpbmcgYVN0cmluZykgeworICAgICAgICB0ZXN0KGFTdHJpbmcpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVQYXJhbWV0ZXIvUmVmSWRlbnRpY2FsLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lUGFyYW1ldGVyL1JlZklkZW50aWNhbC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUwNWUyZTkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lUGFyYW1ldGVyL1JlZklkZW50aWNhbC5qYXZhCkBAIC0wLDAgKzEsMTEgQEAKK3B1YmxpYyBjbGFzcyBBIHsKKyAgICB2b2lkIHRlc3QoU3RyaW5nIHMxLCBTdHJpbmcgPGNhcmV0PnMyKSB7CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihzMSk7CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihzMik7CisgICAgfQorCisgICAgdm9pZCBjYWxsVGVzdCgpIHsKKyAgICAgICAgU3RyaW5nIHMgPSAiIjsKKyAgICAgICAgdGVzdChzLCBzKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lUGFyYW1ldGVyL1JlZklkZW50aWNhbC5qYXZhLmFmdGVyIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVBhcmFtZXRlci9SZWZJZGVudGljYWwuamF2YS5hZnRlcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZGYwYjk4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVBhcmFtZXRlci9SZWZJZGVudGljYWwuamF2YS5hZnRlcgpAQCAtMCwwICsxLDEyIEBACitwdWJsaWMgY2xhc3MgQSB7CisgICAgdm9pZCB0ZXN0KFN0cmluZyBzMSkgeworICAgICAgICBTdHJpbmcgczIgPSBzMTsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKHMxKTsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKHMyKTsKKyAgICB9CisKKyAgICB2b2lkIGNhbGxUZXN0KCkgeworICAgICAgICBTdHJpbmcgcyA9ICIiOworICAgICAgICB0ZXN0KHMpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVQYXJhbWV0ZXIvUmVmSWRlbnRpY2FsTm9Mb2NhbC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVBhcmFtZXRlci9SZWZJZGVudGljYWxOb0xvY2FsLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTA1ZTJlOQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVQYXJhbWV0ZXIvUmVmSWRlbnRpY2FsTm9Mb2NhbC5qYXZhCkBAIC0wLDAgKzEsMTEgQEAKK3B1YmxpYyBjbGFzcyBBIHsKKyAgICB2b2lkIHRlc3QoU3RyaW5nIHMxLCBTdHJpbmcgPGNhcmV0PnMyKSB7CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihzMSk7CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihzMik7CisgICAgfQorCisgICAgdm9pZCBjYWxsVGVzdCgpIHsKKyAgICAgICAgU3RyaW5nIHMgPSAiIjsKKyAgICAgICAgdGVzdChzLCBzKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lUGFyYW1ldGVyL1JlZklkZW50aWNhbE5vTG9jYWwuamF2YS5hZnRlciBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVQYXJhbWV0ZXIvUmVmSWRlbnRpY2FsTm9Mb2NhbC5qYXZhLmFmdGVyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIwZDE5M2EKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lUGFyYW1ldGVyL1JlZklkZW50aWNhbE5vTG9jYWwuamF2YS5hZnRlcgpAQCAtMCwwICsxLDExIEBACitwdWJsaWMgY2xhc3MgQSB7CisgICAgdm9pZCB0ZXN0KFN0cmluZyBzMSkgeworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oczEpOworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oczEpOworICAgIH0KKworICAgIHZvaWQgY2FsbFRlc3QoKSB7CisgICAgICAgIFN0cmluZyBzID0gIiI7CisgICAgICAgIHRlc3Qocyk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVBhcmFtZXRlci9SZWZMb2NhbENvbnN0YW50SW5pdGlhbGl6ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVQYXJhbWV0ZXIvUmVmTG9jYWxDb25zdGFudEluaXRpYWxpemVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDRlOGVjOAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVQYXJhbWV0ZXIvUmVmTG9jYWxDb25zdGFudEluaXRpYWxpemVyLmphdmEKQEAgLTAsMCArMSwxMiBAQAorcHVibGljIGNsYXNzIEEgeworICAgIHZvaWQgdGVzdChTdHJpbmcgczEsIFN0cmluZyA8Y2FyZXQ+czIpIHsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKHMxKTsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKHMyKTsKKyAgICB9CisKKyAgICB2b2lkIGNhbGxUZXN0KCkgeworICAgICAgICBTdHJpbmcgcyA9ICIiOworICAgICAgICBTdHJpbmcgdCA9ICIiOworICAgICAgICB0ZXN0KHMsIHQpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVQYXJhbWV0ZXIvUmVmTG9jYWxDb25zdGFudEluaXRpYWxpemVyLmphdmEuYWZ0ZXIgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lUGFyYW1ldGVyL1JlZkxvY2FsQ29uc3RhbnRJbml0aWFsaXplci5qYXZhLmFmdGVyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIwMmNlMDgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lUGFyYW1ldGVyL1JlZkxvY2FsQ29uc3RhbnRJbml0aWFsaXplci5qYXZhLmFmdGVyCkBAIC0wLDAgKzEsMTEgQEAKK3B1YmxpYyBjbGFzcyBBIHsKKyAgICB2b2lkIHRlc3QoU3RyaW5nIHMxKSB7CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihzMSk7CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiIik7CisgICAgfQorCisgICAgdm9pZCBjYWxsVGVzdCgpIHsKKyAgICAgICAgU3RyaW5nIHMgPSAiIjsKKyAgICAgICAgdGVzdChzKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lUGFyYW1ldGVyL1JlZkxvY2FsV2l0aExvY2FsLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lUGFyYW1ldGVyL1JlZkxvY2FsV2l0aExvY2FsLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzQ3YWUzNwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVQYXJhbWV0ZXIvUmVmTG9jYWxXaXRoTG9jYWwuamF2YQpAQCAtMCwwICsxLDEyIEBACitwdWJsaWMgY2xhc3MgQSB7CisgICAgdm9pZCB0ZXN0KFN0cmluZyBzMSwgU3RyaW5nIDxjYXJldD5zMikgeworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oczEpOworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oczIpOworICAgIH0KKworICAgIHZvaWQgY2FsbFRlc3QoKSB7CisgICAgICAgIFN0cmluZyBzID0gIiI7CisgICAgICAgIFN0cmluZyB0ID0gczsKKyAgICAgICAgdGVzdChzLCB0KTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lUGFyYW1ldGVyL1JlZkxvY2FsV2l0aExvY2FsLmphdmEuYWZ0ZXIgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lUGFyYW1ldGVyL1JlZkxvY2FsV2l0aExvY2FsLmphdmEuYWZ0ZXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjBkMTkzYQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVQYXJhbWV0ZXIvUmVmTG9jYWxXaXRoTG9jYWwuamF2YS5hZnRlcgpAQCAtMCwwICsxLDExIEBACitwdWJsaWMgY2xhc3MgQSB7CisgICAgdm9pZCB0ZXN0KFN0cmluZyBzMSkgeworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oczEpOworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oczEpOworICAgIH0KKworICAgIHZvaWQgY2FsbFRlc3QoKSB7CisgICAgICAgIFN0cmluZyBzID0gIiI7CisgICAgICAgIHRlc3Qocyk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVBhcmFtZXRlci9SZWZNZXRob2QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVQYXJhbWV0ZXIvUmVmTWV0aG9kLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmZkZWRmZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVQYXJhbWV0ZXIvUmVmTWV0aG9kLmphdmEKQEAgLTAsMCArMSwxMyBAQAorcHVibGljIGNsYXNzIEEgeworICAgIHZvaWQgdGVzdChTdHJpbmcgPGNhcmV0PnMpIHsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKHMpOworICAgIH0KKworICAgIHZvaWQgY2FsbFRlc3QoKSB7CisgICAgICAgIHRlc3QobXlNZXRob2QoKSk7CisgICAgfQorCisgICAgU3RyaW5nIG15TWV0aG9kKCkgeworICAgICAgICByZXR1cm4gIiI7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVBhcmFtZXRlci9SZWZNZXRob2QuamF2YS5hZnRlciBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVQYXJhbWV0ZXIvUmVmTWV0aG9kLmphdmEuYWZ0ZXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTk1ZmU1YgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVQYXJhbWV0ZXIvUmVmTWV0aG9kLmphdmEuYWZ0ZXIKQEAgLTAsMCArMSwxNCBAQAorcHVibGljIGNsYXNzIEEgeworICAgIHZvaWQgdGVzdCgpIHsKKyAgICAgICAgU3RyaW5nIHMgPSBteU1ldGhvZCgpOworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4ocyk7CisgICAgfQorCisgICAgdm9pZCBjYWxsVGVzdCgpIHsKKyAgICAgICAgdGVzdCgpOworICAgIH0KKworICAgIFN0cmluZyBteU1ldGhvZCgpIHsKKyAgICAgICAgcmV0dXJuICIiOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVQYXJhbWV0ZXIvUmVmTWV0aG9kT25Mb2NhbC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVBhcmFtZXRlci9SZWZNZXRob2RPbkxvY2FsLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWQ3ZWEzNgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVQYXJhbWV0ZXIvUmVmTWV0aG9kT25Mb2NhbC5qYXZhCkBAIC0wLDAgKzEsMTEgQEAKK3B1YmxpYyBjbGFzcyBBIHsKKyAgICB2b2lkIHRlc3QoU3RyaW5nIHMsIGludCA8Y2FyZXQ+bCkgeworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4ocyk7CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihsKTsKKyAgICB9CisKKyAgICB2b2lkIGNhbGxUZXN0KCkgeworICAgICAgICBTdHJpbmcgYVN0cmluZyA9ICJhYmMiOworICAgICAgICB0ZXN0KGFTdHJpbmcsIGFTdHJpbmcubGVuZ3RoKCkpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVQYXJhbWV0ZXIvUmVmTWV0aG9kT25Mb2NhbC5qYXZhLmFmdGVyIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVBhcmFtZXRlci9SZWZNZXRob2RPbkxvY2FsLmphdmEuYWZ0ZXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2RiZmNhOQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVQYXJhbWV0ZXIvUmVmTWV0aG9kT25Mb2NhbC5qYXZhLmFmdGVyCkBAIC0wLDAgKzEsMTEgQEAKK3B1YmxpYyBjbGFzcyBBIHsKKyAgICB2b2lkIHRlc3QoU3RyaW5nIHMpIHsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKHMpOworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4ocy5sZW5ndGgoKSk7CisgICAgfQorCisgICAgdm9pZCBjYWxsVGVzdCgpIHsKKyAgICAgICAgU3RyaW5nIGFTdHJpbmcgPSAiYWJjIjsKKyAgICAgICAgdGVzdChhU3RyaW5nKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lUGFyYW1ldGVyL1JlZk5ld0lubmVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lUGFyYW1ldGVyL1JlZk5ld0lubmVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGI1MmVhMQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVQYXJhbWV0ZXIvUmVmTmV3SW5uZXIuamF2YQpAQCAtMCwwICsxLDE3IEBACitwdWJsaWMgY2xhc3MgU3ViamVjdCB7CisgIHByaXZhdGUgaW50IG15SW50OworCisgIHB1YmxpYyB2b2lkIHdpdGhDbGFzcyhPYmplY3QgPGNhcmV0Pm8pIHsKKyAgICBteUludCArPSBvLmhhc2hDb2RlKCk7CisgIH0KK30KKworY2xhc3MgVXNlciB7CisgIHByaXZhdGUgdm9pZCBvcGVyKCkgdGhyb3dzIElPRXhjZXB0aW9uIHsKKyAgICBTdWJqZWN0IHN1YmogPSBuZXcgU3ViamVjdCgpOworICAgIHN1Ymoud2l0aENsYXNzKG5ldyBMb2NhbCgpKTsKKyAgfQorCisgIHByaXZhdGUgY2xhc3MgTG9jYWwgeworICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lUGFyYW1ldGVyL1JlZk5ld0lubmVyQXZhaWxhYmxlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lUGFyYW1ldGVyL1JlZk5ld0lubmVyQXZhaWxhYmxlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWJhYzk3NQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVQYXJhbWV0ZXIvUmVmTmV3SW5uZXJBdmFpbGFibGUuamF2YQpAQCAtMCwwICsxLDE3IEBACitwdWJsaWMgY2xhc3MgU3ViamVjdCB7CisgIHByaXZhdGUgaW50IG15SW50OworCisgIHB1YmxpYyB2b2lkIHdpdGhDbGFzcyhPYmplY3QgPGNhcmV0Pm8pIHsKKyAgICBteUludCArPSBvLmhhc2hDb2RlKCk7CisgIH0KK30KKworY2xhc3MgVXNlciB7CisgIHByaXZhdGUgdm9pZCBvcGVyKCkgdGhyb3dzIElPRXhjZXB0aW9uIHsKKyAgICBTdWJqZWN0IHN1YmogPSBuZXcgU3ViamVjdCgpOworICAgIHN1Ymoud2l0aENsYXNzKG5ldyBMb2NhbCgpKTsKKyAgfQorCisgIGNsYXNzIExvY2FsIHsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVBhcmFtZXRlci9SZWZOZXdJbm5lckF2YWlsYWJsZS5qYXZhLmFmdGVyIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVBhcmFtZXRlci9SZWZOZXdJbm5lckF2YWlsYWJsZS5qYXZhLmFmdGVyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY5NDRjY2EKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lUGFyYW1ldGVyL1JlZk5ld0lubmVyQXZhaWxhYmxlLmphdmEuYWZ0ZXIKQEAgLTAsMCArMSwxNyBAQAorcHVibGljIGNsYXNzIFN1YmplY3QgeworICBwcml2YXRlIGludCBteUludDsKKworICBwdWJsaWMgdm9pZCB3aXRoQ2xhc3MoKSB7CisgICAgbXlJbnQgKz0gbmV3IFVzZXIuTG9jYWwoKS5oYXNoQ29kZSgpOworICB9Cit9CisKK2NsYXNzIFVzZXIgeworICBwcml2YXRlIHZvaWQgb3BlcigpIHRocm93cyBJT0V4Y2VwdGlvbiB7CisgICAgU3ViamVjdCBzdWJqID0gbmV3IFN1YmplY3QoKTsKKyAgICBzdWJqLndpdGhDbGFzcygpOworICB9CisKKyAgY2xhc3MgTG9jYWwgeworICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lUGFyYW1ldGVyL1JlZk5ld0lubmVyRm9yTWV0aG9kLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lUGFyYW1ldGVyL1JlZk5ld0lubmVyRm9yTWV0aG9kLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmVjMzY2NAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVQYXJhbWV0ZXIvUmVmTmV3SW5uZXJGb3JNZXRob2QuamF2YQpAQCAtMCwwICsxLDIxIEBACitwdWJsaWMgY2xhc3MgU3ViamVjdCB7CisgICAgcHJpdmF0ZSBpbnQgbXlJbnQ7CisKKyAgICBwdWJsaWMgdm9pZCB3aXRoQ2xhc3MoT2JqZWN0IDxjYXJldD5vKSB7CisgICAgICAgIG15SW50ICs9IG8uaGFzaENvZGUoKTsKKyAgICB9CisKKyAgICBjbGFzcyBVc2VyIHsKKyAgICAgICAgcHJpdmF0ZSB2b2lkIG9wZXIoKSB0aHJvd3MgSU9FeGNlcHRpb24geworICAgICAgICAgICAgU3ViamVjdCBzdWJqID0gbmV3IFN1YmplY3QoKTsKKworICAgICAgICAgICAgc3Viai53aXRoQ2xhc3MobmV3IExvY2FsKCkpOworICAgICAgICB9CisKKworICAgIH0KKworICAgIGNsYXNzIExvY2FsIHsKKyAgICB9CisKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lUGFyYW1ldGVyL1JlZk5ld0lubmVyRm9yTWV0aG9kLmphdmEuYWZ0ZXIgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lUGFyYW1ldGVyL1JlZk5ld0lubmVyRm9yTWV0aG9kLmphdmEuYWZ0ZXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTFmODkxNwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVQYXJhbWV0ZXIvUmVmTmV3SW5uZXJGb3JNZXRob2QuamF2YS5hZnRlcgpAQCAtMCwwICsxLDIxIEBACitwdWJsaWMgY2xhc3MgU3ViamVjdCB7CisgICAgcHJpdmF0ZSBpbnQgbXlJbnQ7CisKKyAgICBwdWJsaWMgdm9pZCB3aXRoQ2xhc3MoKSB7CisgICAgICAgIG15SW50ICs9IG5ldyBMb2NhbCgpLmhhc2hDb2RlKCk7CisgICAgfQorCisgICAgY2xhc3MgVXNlciB7CisgICAgICAgIHByaXZhdGUgdm9pZCBvcGVyKCkgdGhyb3dzIElPRXhjZXB0aW9uIHsKKyAgICAgICAgICAgIFN1YmplY3Qgc3ViaiA9IG5ldyBTdWJqZWN0KCk7CisKKyAgICAgICAgICAgIHN1Ymoud2l0aENsYXNzKCk7CisgICAgICAgIH0KKworCisgICAgfQorCisgICAgY2xhc3MgTG9jYWwgeworICAgIH0KKworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVQYXJhbWV0ZXIvUmVmTmV3SW5uZXJGcm9tTWV0aG9kLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lUGFyYW1ldGVyL1JlZk5ld0lubmVyRnJvbU1ldGhvZC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYzZjY2Y2IKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lUGFyYW1ldGVyL1JlZk5ld0lubmVyRnJvbU1ldGhvZC5qYXZhCkBAIC0wLDAgKzEsMTYgQEAKK3B1YmxpYyBjbGFzcyBTdWJqZWN0IHsKKyAgICBwcml2YXRlIGludCBteUludDsKKworICAgIHB1YmxpYyB2b2lkIHdpdGhDbGFzcyhPYmplY3QgPGNhcmV0Pm8pIHsKKyAgICAgICAgbXlJbnQgKz0gby5oYXNoQ29kZSgpOworICAgIH0KKworICAgIHByaXZhdGUgdm9pZCBvcGVyKCkgdGhyb3dzIElPRXhjZXB0aW9uIHsKKyAgICAgIFN1YmplY3Qgc3ViaiA9IG5ldyBTdWJqZWN0KCk7CisgICAgICBjbGFzcyBMb2NhbCB7CisgICAgICB9CisgICAgICBzdWJqLndpdGhDbGFzcyhuZXcgTG9jYWwoKSk7CisgICAgfQorCisKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lUGFyYW1ldGVyL1JlZk5ld0lubmVySW5IaWVyYXJjaHlBdmFpbGFibGUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVQYXJhbWV0ZXIvUmVmTmV3SW5uZXJJbkhpZXJhcmNoeUF2YWlsYWJsZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBmYmMyYjMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lUGFyYW1ldGVyL1JlZk5ld0lubmVySW5IaWVyYXJjaHlBdmFpbGFibGUuamF2YQpAQCAtMCwwICsxLDE4IEBACitwdWJsaWMgY2xhc3MgU3ViamVjdCB7CisgIHByaXZhdGUgaW50IG15SW50OworCisgIHB1YmxpYyB2b2lkIHdpdGhDbGFzcyhPYmplY3QgPGNhcmV0Pm8pIHsKKyAgICBteUludCArPSBvLmhhc2hDb2RlKCk7CisgIH0KK30KKworY2xhc3MgVXNlciB7CisgIHByaXZhdGUgdm9pZCBvcGVyKCkgdGhyb3dzIElPRXhjZXB0aW9uIHsKKyAgICBTdWJqZWN0IHN1YmogPSBuZXcgU3ViamVjdCgpOworICAgIHN1Ymoud2l0aENsYXNzKG5ldyBMb2NhbCgpLm5ldyBJbm5lckxvY2FsKCkpOworICB9CisKKyAgY2xhc3MgTG9jYWwgeworICAgIGNsYXNzIElubmVyTG9jYWwge30KKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVBhcmFtZXRlci9SZWZOZXdJbm5lckluSGllcmFyY2h5QXZhaWxhYmxlLmphdmEuYWZ0ZXIgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lUGFyYW1ldGVyL1JlZk5ld0lubmVySW5IaWVyYXJjaHlBdmFpbGFibGUuamF2YS5hZnRlcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MTI0NzUwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVBhcmFtZXRlci9SZWZOZXdJbm5lckluSGllcmFyY2h5QXZhaWxhYmxlLmphdmEuYWZ0ZXIKQEAgLTAsMCArMSwxOCBAQAorcHVibGljIGNsYXNzIFN1YmplY3QgeworICBwcml2YXRlIGludCBteUludDsKKworICBwdWJsaWMgdm9pZCB3aXRoQ2xhc3MoKSB7CisgICAgbXlJbnQgKz0gbmV3IFVzZXIuTG9jYWwoKS5uZXcgSW5uZXJMb2NhbCgpLmhhc2hDb2RlKCk7CisgIH0KK30KKworY2xhc3MgVXNlciB7CisgIHByaXZhdGUgdm9pZCBvcGVyKCkgdGhyb3dzIElPRXhjZXB0aW9uIHsKKyAgICBTdWJqZWN0IHN1YmogPSBuZXcgU3ViamVjdCgpOworICAgIHN1Ymoud2l0aENsYXNzKCk7CisgIH0KKworICBjbGFzcyBMb2NhbCB7CisgICAgY2xhc3MgSW5uZXJMb2NhbCB7fQorICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lUGFyYW1ldGVyL1JlZk5ld0xvY2FsLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lUGFyYW1ldGVyL1JlZk5ld0xvY2FsLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzk0ODk3MgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVQYXJhbWV0ZXIvUmVmTmV3TG9jYWwuamF2YQpAQCAtMCwwICsxLDE4IEBACitwdWJsaWMgY2xhc3MgU3ViamVjdCB7CisgIHByaXZhdGUgaW50IG15SW50OworCisgIHB1YmxpYyB2b2lkIHdpdGhDbGFzcyhPYmplY3QgPGNhcmV0Pm8pIHsKKyAgICBteUludCArPSBvLmhhc2hDb2RlKCk7CisgIH0KK30KKworY2xhc3MgVXNlciB7CisgIHByaXZhdGUgdm9pZCBvcGVyKCkgdGhyb3dzIElPRXhjZXB0aW9uIHsKKyAgICBTdWJqZWN0IHN1YmogPSBuZXcgU3ViamVjdCgpOworICAgIGNsYXNzIExvY2FsIHsKKyAgICB9CisgICAgc3Viai53aXRoQ2xhc3MobmV3IExvY2FsKCkpOworICB9CisKKworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVBhcmFtZXRlci9SZWZOZXdUb3BMZXZlbC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVBhcmFtZXRlci9SZWZOZXdUb3BMZXZlbC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM1MjEyYjIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lUGFyYW1ldGVyL1JlZk5ld1RvcExldmVsLmphdmEKQEAgLTAsMCArMSwxNiBAQAorcHVibGljIGNsYXNzIFN1YmplY3QgeworICBwcml2YXRlIGludCBteUludDsKKworICBwdWJsaWMgdm9pZCB3aXRoQ2xhc3MoT2JqZWN0IDxjYXJldD5vKSB7CisgICAgbXlJbnQgKz0gby5oYXNoQ29kZSgpOworICB9Cit9CisKK2NsYXNzIFVzZXIgeworICBwcml2YXRlIHZvaWQgb3BlcigpIHRocm93cyBJT0V4Y2VwdGlvbiB7CisgICAgU3ViamVjdCBzdWJqID0gbmV3IFN1YmplY3QoKTsKKyAgICBzdWJqLndpdGhDbGFzcyhuZXcgVG9wTGV2ZWwoKSk7CisgIH0KK30KKworY2xhc3MgVG9wTGV2ZWwge30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lUGFyYW1ldGVyL1JlZk5ld1RvcExldmVsLmphdmEuYWZ0ZXIgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lUGFyYW1ldGVyL1JlZk5ld1RvcExldmVsLmphdmEuYWZ0ZXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODJiY2FjYwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVQYXJhbWV0ZXIvUmVmTmV3VG9wTGV2ZWwuamF2YS5hZnRlcgpAQCAtMCwwICsxLDE2IEBACitwdWJsaWMgY2xhc3MgU3ViamVjdCB7CisgIHByaXZhdGUgaW50IG15SW50OworCisgIHB1YmxpYyB2b2lkIHdpdGhDbGFzcygpIHsKKyAgICBteUludCArPSBuZXcgVG9wTGV2ZWwoKS5oYXNoQ29kZSgpOworICB9Cit9CisKK2NsYXNzIFVzZXIgeworICBwcml2YXRlIHZvaWQgb3BlcigpIHRocm93cyBJT0V4Y2VwdGlvbiB7CisgICAgU3ViamVjdCBzdWJqID0gbmV3IFN1YmplY3QoKTsKKyAgICBzdWJqLndpdGhDbGFzcygpOworICB9Cit9CisKK2NsYXNzIFRvcExldmVsIHt9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVBhcmFtZXRlci9SZWZOb25TdGF0aWMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVQYXJhbWV0ZXIvUmVmTm9uU3RhdGljLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTA5N2I2YwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVQYXJhbWV0ZXIvUmVmTm9uU3RhdGljLmphdmEKQEAgLTAsMCArMSwxOCBAQAorcHVibGljIGNsYXNzIEV4cERhdGEgeworCisgIHByaXZhdGUgT2JqZWN0IHByb3ZpZGVPYmplY3QoKSB7CisgICAgcmV0dXJuIG5ldyBPYmplY3QoKTsKKyAgfQorCisgIHB1YmxpYyBzdGF0aWMgdm9pZCB1c2VTdGF0aWMoT2JqZWN0IHApIHsKKyAgICBTeXN0ZW0ub3V0LnByaW50bG4ocCk7CisgIH0KKworICBwdWJsaWMgdm9pZCBjb250ZXh0KCkgeworICAgIGlubGluZUUocHJvdmlkZU9iamVjdCgpKTsKKyAgfQorCisgIHB1YmxpYyBzdGF0aWMgdm9pZCBpbmxpbmVFKE9iamVjdCA8Y2FyZXQ+c3ViaikgeworICAgIHVzZVN0YXRpYyhzdWJqKTsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVBhcmFtZXRlci9SZWZOb25TdGF0aWNDbGFzcy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVBhcmFtZXRlci9SZWZOb25TdGF0aWNDbGFzcy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUwYmY1MWYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lUGFyYW1ldGVyL1JlZk5vblN0YXRpY0NsYXNzLmphdmEKQEAgLTAsMCArMSwyMCBAQAorcHVibGljIGNsYXNzIEV4cERhdGEgeworCisgIHByaXZhdGUgT2JqZWN0IHByb3ZpZGVPYmplY3QoKSB7CisgICAgcmV0dXJuIG5ldyBPYmplY3QoKTsKKyAgfQorCisgIHB1YmxpYyBzdGF0aWMgdm9pZCB1c2VTdGF0aWMoT2JqZWN0IHApIHsKKyAgICBTeXN0ZW0ub3V0LnByaW50bG4ocCk7CisgIH0KKworICBwdWJsaWMgdm9pZCBjb250ZXh0KCkgeworICAgIGlubGluZUUobmV3IEREKCkpOworICB9CisKKyAgcHVibGljIHN0YXRpYyB2b2lkIGlubGluZUUoT2JqZWN0IDxjYXJldD5zdWJqKSB7CisgICAgdXNlU3RhdGljKHN1YmopOworICB9CisKKyAgY2xhc3MgREQge30KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVQYXJhbWV0ZXIvUmVmT3V0ZXJUaGlzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lUGFyYW1ldGVyL1JlZk91dGVyVGhpcy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUzZWY2NzIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lUGFyYW1ldGVyL1JlZk91dGVyVGhpcy5qYXZhCkBAIC0wLDAgKzEsMTQgQEAKK3B1YmxpYyBjbGFzcyBTdWJqZWN0IHsKKyAgcHJpdmF0ZSBpbnQgbXlJbnQ7CisKKyAgcHVibGljIHZvaWQgd2l0aENsYXNzKE9iamVjdCA8Y2FyZXQ+bykgeworICAgIG15SW50ICs9IG8uaGFzaENvZGUoKTsKKyAgfQorfQorCitjbGFzcyBVc2VyIHsKKyAgcHJpdmF0ZSB2b2lkIG9wZXIoKSB7CisgICAgU3ViamVjdCBzdWJqID0gbmV3IFN1YmplY3QoKTsKKyAgICBzdWJqLndpdGhDbGFzcyh0aGlzKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVQYXJhbWV0ZXIvUmVmUXVhbGlmaWVkVGhpcy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVBhcmFtZXRlci9SZWZRdWFsaWZpZWRUaGlzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTA4YWE2YQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVQYXJhbWV0ZXIvUmVmUXVhbGlmaWVkVGhpcy5qYXZhCkBAIC0wLDAgKzEsMTQgQEAKK2NsYXNzIE91dGVyIHsKKyAgY2xhc3MgVXNlciB7CisgICAgcHVibGljIGNsYXNzIFN1YmplY3QgeworICAgICAgcHVibGljIHZvaWQgd2l0aENsYXNzKE9iamVjdCA8Y2FyZXQ+bykgeworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oby50b1N0cmluZygpKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICBwcml2YXRlIHZvaWQgb3BlcigpIHsKKyAgICAgIFN1YmplY3Qgc3ViaiA9IG5ldyBTdWJqZWN0KCk7CisgICAgICBzdWJqLndpdGhDbGFzcyhPdXRlci50aGlzKTsKKyAgICB9CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVQYXJhbWV0ZXIvUmVmUXVhbGlmaWVkVGhpcy5qYXZhLmFmdGVyIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVBhcmFtZXRlci9SZWZRdWFsaWZpZWRUaGlzLmphdmEuYWZ0ZXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmUyMDk1ZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVQYXJhbWV0ZXIvUmVmUXVhbGlmaWVkVGhpcy5qYXZhLmFmdGVyCkBAIC0wLDAgKzEsMTQgQEAKK2NsYXNzIE91dGVyIHsKKyAgY2xhc3MgVXNlciB7CisgICAgcHVibGljIGNsYXNzIFN1YmplY3QgeworICAgICAgcHVibGljIHZvaWQgd2l0aENsYXNzKCkgeworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oT3V0ZXIudGhpcy50b1N0cmluZygpKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICBwcml2YXRlIHZvaWQgb3BlcigpIHsKKyAgICAgIFN1YmplY3Qgc3ViaiA9IG5ldyBTdWJqZWN0KCk7CisgICAgICBzdWJqLndpdGhDbGFzcygpOworICAgIH0KKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVBhcmFtZXRlci9SZWZTYW1lTm9uRmluYWxGaWVsZC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVBhcmFtZXRlci9SZWZTYW1lTm9uRmluYWxGaWVsZC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZhOGE4YTEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lUGFyYW1ldGVyL1JlZlNhbWVOb25GaW5hbEZpZWxkLmphdmEKQEAgLTAsMCArMSwxMyBAQAorcHVibGljIGNsYXNzIFN1YmplY3QgeworICBwcml2YXRlIGludCBteUludDsKKyAgcHJpdmF0ZSBpbnQgdDsKKworICBwdWJsaWMgdm9pZCB3cChpbnQgPGNhcmV0PnApIHsKKyAgICBteUludCArPSBwOworICB9CisKKyAgdm9pZCBmb28oKSB7CisgICAgICB3cCh0KTsKKyAgICAgIHdwKHQpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVBhcmFtZXRlci9SZWZTYW1lTm9uRmluYWxGaWVsZC5qYXZhLmFmdGVyIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVBhcmFtZXRlci9SZWZTYW1lTm9uRmluYWxGaWVsZC5qYXZhLmFmdGVyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU1YjM5M2UKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lUGFyYW1ldGVyL1JlZlNhbWVOb25GaW5hbEZpZWxkLmphdmEuYWZ0ZXIKQEAgLTAsMCArMSwxMyBAQAorcHVibGljIGNsYXNzIFN1YmplY3QgeworICBwcml2YXRlIGludCBteUludDsKKyAgcHJpdmF0ZSBpbnQgdDsKKworICBwdWJsaWMgdm9pZCB3cCgpIHsKKyAgICBteUludCArPSB0OworICB9CisKKyAgdm9pZCBmb28oKSB7CisgICAgICB3cCgpOworICAgICAgd3AoKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVQYXJhbWV0ZXIvUmVmU2FtZU5vbkZpbmFsRmllbGRPdGhlck9iamVjdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVBhcmFtZXRlci9SZWZTYW1lTm9uRmluYWxGaWVsZE90aGVyT2JqZWN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzMxZmI3ZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVQYXJhbWV0ZXIvUmVmU2FtZU5vbkZpbmFsRmllbGRPdGhlck9iamVjdC5qYXZhCkBAIC0wLDAgKzEsMTMgQEAKK3B1YmxpYyBjbGFzcyBTdWJqZWN0IHsKKyAgcHJpdmF0ZSBpbnQgbXlJbnQ7CisgIHByaXZhdGUgaW50IHQ7CisKKyAgcHVibGljIHZvaWQgd3AoaW50IDxjYXJldD5wKSB7CisgICAgbXlJbnQgKz0gcDsKKyAgfQorCisgIHZvaWQgZm9vKFN1YmplY3QgcykgeworICAgICAgd3Aocy50KTsKKyAgICAgIHdwKHQpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVBhcmFtZXRlci9SZWZTZWxmRmllbGQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVQYXJhbWV0ZXIvUmVmU2VsZkZpZWxkLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjA4Y2ZlMAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVQYXJhbWV0ZXIvUmVmU2VsZkZpZWxkLmphdmEKQEAgLTAsMCArMSwxOSBAQAorcHVibGljIGNsYXNzIEEgeworICAgIHByaXZhdGUgZmluYWwgU3RyaW5nIG15RGF0YTsKKworICAgIHB1YmxpYyBBKFN0cmluZyBzb21lRGF0YSkgeworICAgICAgICBteURhdGEgPSBzb21lRGF0YTsKKyAgICB9CisKKyAgICB2b2lkIHRlc3QoU3RyaW5nIDxjYXJldD5kYXRhKSB7CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihkYXRhKTsKKyAgICB9CisKKyAgICB2b2lkIGNhbGxUZXN0KCkgeworICAgICAgICB0ZXN0KG15RGF0YSk7ICAgICAgICAKKyAgICB9CisKKyAgICB2b2lkIGFsc29DYWxsVGVzdCgpIHsKKyAgICAgICAgdGVzdChteURhdGEpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lUGFyYW1ldGVyL1JlZlNlbGZGaWVsZC5qYXZhLmFmdGVyIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVBhcmFtZXRlci9SZWZTZWxmRmllbGQuamF2YS5hZnRlcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hOWQ4NGI4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVBhcmFtZXRlci9SZWZTZWxmRmllbGQuamF2YS5hZnRlcgpAQCAtMCwwICsxLDE5IEBACitwdWJsaWMgY2xhc3MgQSB7CisgICAgcHJpdmF0ZSBmaW5hbCBTdHJpbmcgbXlEYXRhOworCisgICAgcHVibGljIEEoU3RyaW5nIHNvbWVEYXRhKSB7CisgICAgICAgIG15RGF0YSA9IHNvbWVEYXRhOworICAgIH0KKworICAgIHZvaWQgdGVzdCgpIHsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKG15RGF0YSk7CisgICAgfQorCisgICAgdm9pZCBjYWxsVGVzdCgpIHsKKyAgICAgICAgdGVzdCgpOyAgICAgICAgCisgICAgfQorCisgICAgdm9pZCBhbHNvQ2FsbFRlc3QoKSB7CisgICAgICAgIHRlc3QoKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVBhcmFtZXRlci9SZWZTdGF0aWNGaWVsZC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVBhcmFtZXRlci9SZWZTdGF0aWNGaWVsZC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhlYmI2ZjYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lUGFyYW1ldGVyL1JlZlN0YXRpY0ZpZWxkLmphdmEKQEAgLTAsMCArMSwxMyBAQAorcHVibGljIGNsYXNzIEEgeworICAgIHZvaWQgdGVzdChTdHJpbmcgPGNhcmV0PnMpIHsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKHMpOworICAgIH0KKworICAgIHZvaWQgY2FsbFRlc3QoKSB7CisgICAgICAgIHRlc3QoQi5mKTsKKyAgICB9Cit9CisKK2NsYXNzIEIgeworICAgIHB1YmxpYyBzdGF0aWMgU3RyaW5nIGYgPSBudWxsOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVQYXJhbWV0ZXIvUmVmU3RhdGljRmllbGQuamF2YS5hZnRlciBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVQYXJhbWV0ZXIvUmVmU3RhdGljRmllbGQuamF2YS5hZnRlcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMTQ0ZDNmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVBhcmFtZXRlci9SZWZTdGF0aWNGaWVsZC5qYXZhLmFmdGVyCkBAIC0wLDAgKzEsMTQgQEAKK3B1YmxpYyBjbGFzcyBBIHsKKyAgICB2b2lkIHRlc3QoKSB7CisgICAgICAgIFN0cmluZyBzID0gQi5mOworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4ocyk7CisgICAgfQorCisgICAgdm9pZCBjYWxsVGVzdCgpIHsKKyAgICAgICAgdGVzdCgpOworICAgIH0KK30KKworY2xhc3MgQiB7CisgICAgcHVibGljIHN0YXRpYyBTdHJpbmcgZiA9IG51bGw7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVBhcmFtZXRlci9SZWZTdGF0aWNNZXRob2QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVQYXJhbWV0ZXIvUmVmU3RhdGljTWV0aG9kLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDI5ZmEzYgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVQYXJhbWV0ZXIvUmVmU3RhdGljTWV0aG9kLmphdmEKQEAgLTAsMCArMSwxNiBAQAorcHVibGljIGNsYXNzIFN0YXRpY1JlZk1vdmUgeworICBwdWJsaWMgc3RhdGljIGludCBpbml0KCkgeworICAgIHJldHVybiAxOworICB9CisKKyAgcHVibGljIHZvaWQgY29udGV4dCgpIHsKKyAgICBTdGF0aWNSZWZNb3ZlU3ViamVjdCB2ID0gbmV3IFN0YXRpY1JlZk1vdmVTdWJqZWN0KCk7CisgICAgdi5zdWJqZWN0KGluaXQoKSk7CisgIH0KK30KKworY2xhc3MgU3RhdGljUmVmTW92ZVN1YmplY3QgeworICBwdWJsaWMgdm9pZCBzdWJqZWN0KGludCA8Y2FyZXQ+c3ViaikgeworICAgIFN5c3RlbS5vdXQucHJpbnRsbihzdWJqKTsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVBhcmFtZXRlci9SZWZTdGF0aWNNZXRob2QuamF2YS5hZnRlciBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVQYXJhbWV0ZXIvUmVmU3RhdGljTWV0aG9kLmphdmEuYWZ0ZXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmYwNzZlNwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVQYXJhbWV0ZXIvUmVmU3RhdGljTWV0aG9kLmphdmEuYWZ0ZXIKQEAgLTAsMCArMSwxNyBAQAorcHVibGljIGNsYXNzIFN0YXRpY1JlZk1vdmUgeworICBwdWJsaWMgc3RhdGljIGludCBpbml0KCkgeworICAgIHJldHVybiAxOworICB9CisKKyAgcHVibGljIHZvaWQgY29udGV4dCgpIHsKKyAgICBTdGF0aWNSZWZNb3ZlU3ViamVjdCB2ID0gbmV3IFN0YXRpY1JlZk1vdmVTdWJqZWN0KCk7CisgICAgdi5zdWJqZWN0KCk7CisgIH0KK30KKworY2xhc3MgU3RhdGljUmVmTW92ZVN1YmplY3QgeworICBwdWJsaWMgdm9pZCBzdWJqZWN0KCkgeworICAgICAgaW50IHN1YmogPSBTdGF0aWNSZWZNb3ZlLmluaXQoKTsKKyAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihzdWJqKTsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVBhcmFtZXRlci9SZWZUaGlzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lUGFyYW1ldGVyL1JlZlRoaXMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45OWRjYWM2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVBhcmFtZXRlci9SZWZUaGlzLmphdmEKQEAgLTAsMCArMSwxNSBAQAorY2xhc3MgVXNlciB7CisgIHB1YmxpYyBjbGFzcyBTdWJqZWN0IHsKKyAgICBwcml2YXRlIGludCBteUludDsKKworICAgIHB1YmxpYyB2b2lkIHdpdGhDbGFzcyhPYmplY3QgPGNhcmV0Pm8pIHsKKyAgICAgIG15SW50ICs9IG8uaGFzaENvZGUoKTsKKyAgICB9CisgIH0KKworICBwcml2YXRlIHZvaWQgb3BlcigpIHsKKyAgICBTdWJqZWN0IHN1YmogPSBuZXcgU3ViamVjdCgpOworICAgIHN1Ymoud2l0aENsYXNzKHRoaXMpOworICB9Cit9CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVQYXJhbWV0ZXIvUmVmVGhpcy5qYXZhLmFmdGVyIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVBhcmFtZXRlci9SZWZUaGlzLmphdmEuYWZ0ZXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODBlOTM2NgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVQYXJhbWV0ZXIvUmVmVGhpcy5qYXZhLmFmdGVyCkBAIC0wLDAgKzEsMTUgQEAKK2NsYXNzIFVzZXIgeworICBwdWJsaWMgY2xhc3MgU3ViamVjdCB7CisgICAgcHJpdmF0ZSBpbnQgbXlJbnQ7CisKKyAgICBwdWJsaWMgdm9pZCB3aXRoQ2xhc3MoKSB7CisgICAgICBteUludCArPSBVc2VyLnRoaXMuaGFzaENvZGUoKTsKKyAgICB9CisgIH0KKworICBwcml2YXRlIHZvaWQgb3BlcigpIHsKKyAgICBTdWJqZWN0IHN1YmogPSBuZXcgU3ViamVjdCgpOworICAgIHN1Ymoud2l0aENsYXNzKCk7CisgIH0KK30KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVBhcmFtZXRlci9SZWZUaGlzRnJvbVN0YXRpYy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVBhcmFtZXRlci9SZWZUaGlzRnJvbVN0YXRpYy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFjYzkzY2MKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lUGFyYW1ldGVyL1JlZlRoaXNGcm9tU3RhdGljLmphdmEKQEAgLTAsMCArMSwxOCBAQAorcHVibGljIGNsYXNzIEV4cERhdGEgeworCisgIHByaXZhdGUgT2JqZWN0IHByb3ZpZGVPYmplY3QoKSB7CisgICAgcmV0dXJuIG5ldyBPYmplY3QoKTsKKyAgfQorCisgIHB1YmxpYyBzdGF0aWMgdm9pZCB1c2VTdGF0aWMoT2JqZWN0IHApIHsKKyAgICBTeXN0ZW0ub3V0LnByaW50bG4ocCk7CisgIH0KKworICBwdWJsaWMgdm9pZCBjb250ZXh0KCkgeworICAgIGlubGluZUUodGhpcyk7CisgIH0KKworICBwdWJsaWMgc3RhdGljIHZvaWQgaW5saW5lRShPYmplY3QgPGNhcmV0PnN1YmopIHsKKyAgICB1c2VTdGF0aWMoc3Viaik7CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVQYXJhbWV0ZXIvU2FtZVZhbHVlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lUGFyYW1ldGVyL1NhbWVWYWx1ZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM3NDhlOTAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lUGFyYW1ldGVyL1NhbWVWYWx1ZS5qYXZhCkBAIC0wLDAgKzEsOSBAQAorcHVibGljIGNsYXNzIEEgeworICB2b2lkIHRlc3QoaW50IDxjYXJldD5pKSB7CisgICAgaW50IGogPSBpOworICB9CisKKyAgdm9pZCBjYWxsVGVzdCgpIHsKKyAgICB0ZXN0KDApOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVBhcmFtZXRlci9TYW1lVmFsdWUuamF2YS5hZnRlciBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVQYXJhbWV0ZXIvU2FtZVZhbHVlLmphdmEuYWZ0ZXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjA4ZDE5OQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVQYXJhbWV0ZXIvU2FtZVZhbHVlLmphdmEuYWZ0ZXIKQEAgLTAsMCArMSw5IEBACitwdWJsaWMgY2xhc3MgQSB7CisgIHZvaWQgdGVzdCgpIHsKKyAgICBpbnQgaiA9IDA7CisgIH0KKworICB2b2lkIGNhbGxUZXN0KCkgeworICAgIHRlc3QoKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVQYXJhbWV0ZXIvU3RhdGljRmluYWxGaWVsZC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVBhcmFtZXRlci9TdGF0aWNGaW5hbEZpZWxkLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTAyMGYwNAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVQYXJhbWV0ZXIvU3RhdGljRmluYWxGaWVsZC5qYXZhCkBAIC0wLDAgKzEsMTUgQEAKK3B1YmxpYyBjbGFzcyBBIHsKKyAgdm9pZCB0ZXN0KFN0cmluZ1tdIDxjYXJldD52YWx1ZSkgeworICAgIFN0cmluZ1tdIG15VmFsdWUgPSB2YWx1ZTsKKyAgfQorCisgIHZvaWQgY2FsbFRlc3QoKSB7CisgICAgdGVzdChDT05TVCk7CisgIH0KKworICB2b2lkIGNhbGxUZXN0MigpIHsKKyAgICB0ZXN0KENPTlNUKTsKKyAgfQorCisgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nW10gQ09OU1QgPSBuZXcgU3RyaW5nW10geyAiQSIsICJCIiB9OworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVQYXJhbWV0ZXIvU3RhdGljRmluYWxGaWVsZC5qYXZhLmFmdGVyIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVBhcmFtZXRlci9TdGF0aWNGaW5hbEZpZWxkLmphdmEuYWZ0ZXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmU1ZTY2OAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVQYXJhbWV0ZXIvU3RhdGljRmluYWxGaWVsZC5qYXZhLmFmdGVyCkBAIC0wLDAgKzEsMTUgQEAKK3B1YmxpYyBjbGFzcyBBIHsKKyAgdm9pZCB0ZXN0KCkgeworICAgIFN0cmluZ1tdIG15VmFsdWUgPSBDT05TVDsKKyAgfQorCisgIHZvaWQgY2FsbFRlc3QoKSB7CisgICAgdGVzdCgpOworICB9CisKKyAgdm9pZCBjYWxsVGVzdDIoKSB7CisgICAgdGVzdCgpOworICB9CisKKyAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmdbXSBDT05TVCA9IG5ldyBTdHJpbmdbXSB7ICJBIiwgIkIiIH07Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVBhcmFtZXRlci9WaXNpYmlsaXR5LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lUGFyYW1ldGVyL1Zpc2liaWxpdHkuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45YmNhOWRjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVBhcmFtZXRlci9WaXNpYmlsaXR5LmphdmEKQEAgLTAsMCArMSwyNCBAQAorcHVibGljIGNsYXNzIFZpc2liaWxpdHlQaW5saW5lIHsKKyAgICBwcml2YXRlIHN0YXRpYyBEaWZmZXJlbnRTY29wZSBjYXNoZWRPYmplY3QgPSBuZXcgRGlmZmVyZW50U2NvcGUoKTsKKworICAgIHByaXZhdGUgc3RhdGljIERpZmZlcmVudFNjb3BlIHByb3ZpZGVPYmplY3QoKSB7CisgICAgICAgIHJldHVybiBuZXcgRGlmZmVyZW50U2NvcGUoKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBjb250ZXh0KCkgeworICAgICAgICBEaWZmZXJlbnRTY29wZSB2QiA9IG5ldyBEaWZmZXJlbnRTY29wZSgpOworICAgICAgICB2Qi5pbmxpbmVCKHByb3ZpZGVPYmplY3QoKSk7CisgICAgfQorfQorCitjbGFzcyBEaWZmZXJlbnRTY29wZSB7CisgICAgcHJpdmF0ZSBpbnQgdmFsdWUgPSAxOworCisgICAgcHVibGljIHZvaWQgbXV0YXRlKCkgeworICAgICAgICB2YWx1ZSsrOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIGlubGluZUIoRGlmZmVyZW50U2NvcGUgPGNhcmV0PnN1YmopIHsKKyAgICAgICAgc3Viai5tdXRhdGUoKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lUGFyYW1ldGVyL1dyaXRlQWNjZXNzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lUGFyYW1ldGVyL1dyaXRlQWNjZXNzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTJkM2UyOQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVQYXJhbWV0ZXIvV3JpdGVBY2Nlc3MuamF2YQpAQCAtMCwwICsxLDMxIEBACitwdWJsaWMgY2xhc3MgRXhwRGF0YSB7CisgIHB1YmxpYyB2b2lkIHVzZShPYmplY3QgcCkgeworICAgIFN5c3RlbS5vdXQucHJpbnRsbihwKTsKKyAgfQorCisgIHB1YmxpYyB2b2lkIGNvbnRleHQoKSB7CisgICAgT2JqZWN0VHlwZSB2MSA9IG5ldyBPYmplY3RUeXBlKCk7CisgICAgdjEgPSB2MS5wcm92aWRlKCk7CisgICAgaW5saW5lMSh2MSk7CisKKyAgICBpbnQgdjIgPSAxOworICAgIHYyICs9IFN5c3RlbS5pZGVudGl0eUhhc2hDb2RlKG5ldyBPYmplY3QoKSk7CisgICAgaW5saW5lMih2Mik7CisgIH0KKworICBwdWJsaWMgdm9pZCBpbmxpbmUxKE9iamVjdFR5cGUgPGNhcmV0PnN1YmopIHsKKyAgICB1c2Uoc3Viaik7CisgIH0KKworICBwdWJsaWMgdm9pZCBpbmxpbmUyKGludCBzdWJqKSB7CisgICAgdXNlKHN1YmopOworICB9Cit9CisKK2NsYXNzIE9iamVjdFR5cGUgeworICBwcml2YXRlIGludCB2YWx1ZSA9IDE7CisKKyAgcHVibGljIE9iamVjdFR5cGUgcHJvdmlkZSgpIHsKKyAgICByZXR1cm4gbmV3IE9iamVjdFR5cGUoKTsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVN1cGVyQ2xhc3MvYWJzdHJhY3RPdmVycmlkZXMvYWZ0ZXIvVGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVN1cGVyQ2xhc3MvYWJzdHJhY3RPdmVycmlkZXMvYWZ0ZXIvVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJjMzhkNjAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lU3VwZXJDbGFzcy9hYnN0cmFjdE92ZXJyaWRlcy9hZnRlci9UZXN0LmphdmEKQEAgLTAsMCArMSw3IEBACitjbGFzcyBUZXN0IHsKKyAgcHVibGljIHZvaWQgY29udGV4dCgpIHsKKyAgICBtZXRob2QoKTsKKyAgfQorCisgIHB1YmxpYyB2b2lkIG1ldGhvZCgpIHt9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVN1cGVyQ2xhc3MvYWJzdHJhY3RPdmVycmlkZXMvYmVmb3JlL1N1cGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lU3VwZXJDbGFzcy9hYnN0cmFjdE92ZXJyaWRlcy9iZWZvcmUvU3VwZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZTkxZGYyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVN1cGVyQ2xhc3MvYWJzdHJhY3RPdmVycmlkZXMvYmVmb3JlL1N1cGVyLmphdmEKQEAgLTAsMCArMSwzIEBACithYnN0cmFjdCBjbGFzcyBTdXBlciB7CisgICBwdWJsaWMgYWJzdHJhY3Qgdm9pZCBtZXRob2QoKSB7fQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVTdXBlckNsYXNzL2Fic3RyYWN0T3ZlcnJpZGVzL2JlZm9yZS9UZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lU3VwZXJDbGFzcy9hYnN0cmFjdE92ZXJyaWRlcy9iZWZvcmUvVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJiOGZiNjAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lU3VwZXJDbGFzcy9hYnN0cmFjdE92ZXJyaWRlcy9iZWZvcmUvVGVzdC5qYXZhCkBAIC0wLDAgKzEsOCBAQAorY2xhc3MgVGVzdCBleHRlbmRzIFN1cGVyeworICBwdWJsaWMgdm9pZCBjb250ZXh0KCkgeworICAgIHN1cGVyLm1ldGhvZCgpOworICB9CisKKyAgQE92ZXJyaWRlCisgIHB1YmxpYyB2b2lkIG1ldGhvZCgpIHt9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVN1cGVyQ2xhc3MvY2hpbGRDb25zdHJ1Y3RvckltcGxpY2l0bHlDYWxsc1N1cGVyL2FmdGVyL1Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVTdXBlckNsYXNzL2NoaWxkQ29uc3RydWN0b3JJbXBsaWNpdGx5Q2FsbHNTdXBlci9hZnRlci9UZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjM3M2I3YwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVTdXBlckNsYXNzL2NoaWxkQ29uc3RydWN0b3JJbXBsaWNpdGx5Q2FsbHNTdXBlci9hZnRlci9UZXN0LmphdmEKQEAgLTAsMCArMSw2IEBACitjbGFzcyBUZXN0IHsKKyAgIFRlc3QoKSB7CisgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJTdXBlciIpOworICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiVGVzdCIpOworICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVTdXBlckNsYXNzL2NoaWxkQ29uc3RydWN0b3JJbXBsaWNpdGx5Q2FsbHNTdXBlci9iZWZvcmUvU3VwZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVTdXBlckNsYXNzL2NoaWxkQ29uc3RydWN0b3JJbXBsaWNpdGx5Q2FsbHNTdXBlci9iZWZvcmUvU3VwZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNzJlN2I1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVN1cGVyQ2xhc3MvY2hpbGRDb25zdHJ1Y3RvckltcGxpY2l0bHlDYWxsc1N1cGVyL2JlZm9yZS9TdXBlci5qYXZhCkBAIC0wLDAgKzEsNSBAQAorY2xhc3MgU3VwZXIgeworICBTdXBlcigpIHsKKyAgICBTeXN0ZW0ub3V0LnByaW50bG4oIlN1cGVyIik7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lU3VwZXJDbGFzcy9jaGlsZENvbnN0cnVjdG9ySW1wbGljaXRseUNhbGxzU3VwZXIvYmVmb3JlL1Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVTdXBlckNsYXNzL2NoaWxkQ29uc3RydWN0b3JJbXBsaWNpdGx5Q2FsbHNTdXBlci9iZWZvcmUvVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI3Yjk1MTIwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVN1cGVyQ2xhc3MvY2hpbGRDb25zdHJ1Y3RvckltcGxpY2l0bHlDYWxsc1N1cGVyL2JlZm9yZS9UZXN0LmphdmEKQEAgLTAsMCArMSw1IEBACitjbGFzcyBUZXN0IGV4dGVuZHMgU3VwZXJ7CisgICBUZXN0KCkgeworICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIlRlc3QiKTsKKyAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lU3VwZXJDbGFzcy9jb25mbGljdENvbnN0cnVjdG9ycy9hZnRlci9UZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lU3VwZXJDbGFzcy9jb25mbGljdENvbnN0cnVjdG9ycy9hZnRlci9UZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzFkNmZlYwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVTdXBlckNsYXNzL2NvbmZsaWN0Q29uc3RydWN0b3JzL2FmdGVyL1Rlc3QuamF2YQpAQCAtMCwwICsxLDggQEAKK2NsYXNzIFRlc3QgeworICAgIHZvaWQgZm9vKCkgeworICAgICAgVGVzdCBzID0gbmV3IFRlc3QoKTsKKyAgICAgIHMuYmFyKCk7CisgICAgfQorCisgICAgdm9pZCBiYXIoKSB7fQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVTdXBlckNsYXNzL2NvbmZsaWN0Q29uc3RydWN0b3JzL2JlZm9yZS9TdXBlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVN1cGVyQ2xhc3MvY29uZmxpY3RDb25zdHJ1Y3RvcnMvYmVmb3JlL1N1cGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzlhMTFjMwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVTdXBlckNsYXNzL2NvbmZsaWN0Q29uc3RydWN0b3JzL2JlZm9yZS9TdXBlci5qYXZhCkBAIC0wLDAgKzEsOCBAQAorY2xhc3MgU3VwZXIgeworICB2b2lkIGZvbygpIHsKKyAgICBTdXBlciBzID0gbmV3IFN1cGVyKCk7CisgICAgcy5iYXIoKTsKKyAgfQorCisgIHZvaWQgYmFyKCkge30KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lU3VwZXJDbGFzcy9jb25mbGljdENvbnN0cnVjdG9ycy9iZWZvcmUvVGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVN1cGVyQ2xhc3MvY29uZmxpY3RDb25zdHJ1Y3RvcnMvYmVmb3JlL1Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zOWQxYTdmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVN1cGVyQ2xhc3MvY29uZmxpY3RDb25zdHJ1Y3RvcnMvYmVmb3JlL1Rlc3QuamF2YQpAQCAtMCwwICsxLDMgQEAKK2NsYXNzIFRlc3QgZXh0ZW5kcyBTdXBlcnsKKyAgVGVzdChTdHJpbmcgcyl7fQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVTdXBlckNsYXNzL2NvbmZsaWN0R2VuZXJpY3MvYWZ0ZXIvVXNhZ2UuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVTdXBlckNsYXNzL2NvbmZsaWN0R2VuZXJpY3MvYWZ0ZXIvVXNhZ2UuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNTg2ZmFiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVN1cGVyQ2xhc3MvY29uZmxpY3RHZW5lcmljcy9hZnRlci9Vc2FnZS5qYXZhCkBAIC0wLDAgKzEsNyBAQAoraW1wb3J0IHAuVGVzdDsKKworY2xhc3MgVXNhZ2UgeworICB2b2lkIGJhcihUZXN0IHMpIHsKKyAgICBzLmZvbyhudWxsKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVTdXBlckNsYXNzL2NvbmZsaWN0R2VuZXJpY3MvYWZ0ZXIvcC9UZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lU3VwZXJDbGFzcy9jb25mbGljdEdlbmVyaWNzL2FmdGVyL3AvVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE0M2I4ZTYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lU3VwZXJDbGFzcy9jb25mbGljdEdlbmVyaWNzL2FmdGVyL3AvVGVzdC5qYXZhCkBAIC0wLDAgKzEsNyBAQAorcGFja2FnZSBwOworCitwdWJsaWMgY2xhc3MgVGVzdCB7CisgICAgcHVibGljIHZvaWQgZm9vKFN0cmluZyB0KSB7CisgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIkhlbGxvIik7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVTdXBlckNsYXNzL2NvbmZsaWN0R2VuZXJpY3MvYWZ0ZXIvcDEvdC50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lU3VwZXJDbGFzcy9jb25mbGljdEdlbmVyaWNzL2FmdGVyL3AxL3QudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU2OWRlMjkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lU3VwZXJDbGFzcy9jb25mbGljdEdlbmVyaWNzL2FmdGVyL3AxL3QudHh0CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lU3VwZXJDbGFzcy9jb25mbGljdEdlbmVyaWNzL2JlZm9yZS9Vc2FnZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVN1cGVyQ2xhc3MvY29uZmxpY3RHZW5lcmljcy9iZWZvcmUvVXNhZ2UuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41OTYwNDA0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVN1cGVyQ2xhc3MvY29uZmxpY3RHZW5lcmljcy9iZWZvcmUvVXNhZ2UuamF2YQpAQCAtMCwwICsxLDYgQEAKK2ltcG9ydCBwMS4qOworY2xhc3MgVXNhZ2UgeworICB2b2lkIGJhcihTdXBlcjxJbnRlZ2VyPiBzKSB7CisgICAgcy5mb28obnVsbCk7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lU3VwZXJDbGFzcy9jb25mbGljdEdlbmVyaWNzL2JlZm9yZS9wL1Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVTdXBlckNsYXNzL2NvbmZsaWN0R2VuZXJpY3MvYmVmb3JlL3AvVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI1YzhjMGYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lU3VwZXJDbGFzcy9jb25mbGljdEdlbmVyaWNzL2JlZm9yZS9wL1Rlc3QuamF2YQpAQCAtMCwwICsxLDMgQEAKK3BhY2thZ2UgcDsKK2ltcG9ydCBwMS4qOworcHVibGljIGNsYXNzIFRlc3QgZXh0ZW5kcyBTdXBlcjxTdHJpbmc+IHt9IApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVTdXBlckNsYXNzL2NvbmZsaWN0R2VuZXJpY3MvYmVmb3JlL3AxL1N1cGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lU3VwZXJDbGFzcy9jb25mbGljdEdlbmVyaWNzL2JlZm9yZS9wMS9TdXBlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM1ODBhMDAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lU3VwZXJDbGFzcy9jb25mbGljdEdlbmVyaWNzL2JlZm9yZS9wMS9TdXBlci5qYXZhCkBAIC0wLDAgKzEsNiBAQAorcGFja2FnZSBwMTsKK3B1YmxpYyBjbGFzcyBTdXBlcjxUPnsKKyAgIHB1YmxpYyB2b2lkIGZvbyhUIHQpIHsKKyAgICAgU3lzdGVtLm91dC5wcmludGxuKCJIZWxsbyIpOworICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVTdXBlckNsYXNzL2NvbmZsaWN0R2VuZXJpY3MvYmVmb3JlL3AxL3QudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVN1cGVyQ2xhc3MvY29uZmxpY3RHZW5lcmljcy9iZWZvcmUvcDEvdC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTY5ZGUyOQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVTdXBlckNsYXNzL2NvbmZsaWN0R2VuZXJpY3MvYmVmb3JlL3AxL3QudHh0CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lU3VwZXJDbGFzcy9jb25mbGljdE11bHRpcGxlQ29uc3RydWN0b3JzL2FmdGVyL1Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVTdXBlckNsYXNzL2NvbmZsaWN0TXVsdGlwbGVDb25zdHJ1Y3RvcnMvYWZ0ZXIvVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcyNDU2YjUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lU3VwZXJDbGFzcy9jb25mbGljdE11bHRpcGxlQ29uc3RydWN0b3JzL2FmdGVyL1Rlc3QuamF2YQpAQCAtMCwwICsxLDEwIEBACitjbGFzcyBUZXN0IHsKKyAgVGVzdChTdHJpbmcgcywgU3RyaW5nIHMxKXtzdXBlcihzKTt9CisKKyAgICB2b2lkIGZvbygpIHsKKyAgICAgIFRlc3QgcyA9IG5ldyBUZXN0KCIiKTsKKyAgICAgIHMuYmFyKCk7CisgICAgfQorCisgICAgdm9pZCBiYXIoKSB7fQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVTdXBlckNsYXNzL2NvbmZsaWN0TXVsdGlwbGVDb25zdHJ1Y3RvcnMvYmVmb3JlL1N1cGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lU3VwZXJDbGFzcy9jb25mbGljdE11bHRpcGxlQ29uc3RydWN0b3JzL2JlZm9yZS9TdXBlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ4NzMzN2YKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lU3VwZXJDbGFzcy9jb25mbGljdE11bHRpcGxlQ29uc3RydWN0b3JzL2JlZm9yZS9TdXBlci5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKK2NsYXNzIFN1cGVyIHsKKyAgU3VwZXIoU3RyaW5nIHMpe30KKworICB2b2lkIGZvbygpIHsKKyAgICBTdXBlciBzID0gbmV3IFN1cGVyKCIiKTsKKyAgICBzLmJhcigpOworICB9CisKKyAgdm9pZCBiYXIoKSB7fQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVTdXBlckNsYXNzL2NvbmZsaWN0TXVsdGlwbGVDb25zdHJ1Y3RvcnMvYmVmb3JlL1Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVTdXBlckNsYXNzL2NvbmZsaWN0TXVsdGlwbGVDb25zdHJ1Y3RvcnMvYmVmb3JlL1Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mM2UyZjVkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVN1cGVyQ2xhc3MvY29uZmxpY3RNdWx0aXBsZUNvbnN0cnVjdG9ycy9iZWZvcmUvVGVzdC5qYXZhCkBAIC0wLDAgKzEsMyBAQAorY2xhc3MgVGVzdCBleHRlbmRzIFN1cGVyeworICBUZXN0KFN0cmluZyBzLCBTdHJpbmcgczEpe3N1cGVyKHMpO30KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lU3VwZXJDbGFzcy9nZW5lcmljcy9hZnRlci9Vc2FnZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVN1cGVyQ2xhc3MvZ2VuZXJpY3MvYWZ0ZXIvVXNhZ2UuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NTQ5Njk4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVN1cGVyQ2xhc3MvZ2VuZXJpY3MvYWZ0ZXIvVXNhZ2UuamF2YQpAQCAtMCwwICsxLDE5IEBACitpbXBvcnQgcC5UZXN0OworCitjbGFzcyBVc2FnZSB7CisgIFRlc3Q8U3RyaW5nPiBteUZpZWxkOworCisgIFRlc3Q8U3RyaW5nPiB4eHgoKXsKKyAgICByZXR1cm4gbXlGaWVsZDsKKyAgfQorCisgIFRlc3Q8SW50ZWdlcj4geHh4eHgoKSB7CisgICAgcmV0dXJuIG51bGw7CisgIH0KKworICB2b2lkIGJhcihUZXN0PFN0cmluZz4gcykgeworICAgIHMuZm9vKG51bGwpOworICB9CisKKworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVTdXBlckNsYXNzL2dlbmVyaWNzL2FmdGVyL3AvVGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVN1cGVyQ2xhc3MvZ2VuZXJpY3MvYWZ0ZXIvcC9UZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWZmMDFlOQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVTdXBlckNsYXNzL2dlbmVyaWNzL2FmdGVyL3AvVGVzdC5qYXZhCkBAIC0wLDAgKzEsNyBAQAorcGFja2FnZSBwOworCitwdWJsaWMgY2xhc3MgVGVzdDxSPiB7CisgICAgcHVibGljIHZvaWQgZm9vKFIgdCkgeworICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJIZWxsbyIpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lU3VwZXJDbGFzcy9nZW5lcmljcy9hZnRlci9wMS90LnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVTdXBlckNsYXNzL2dlbmVyaWNzL2FmdGVyL3AxL3QudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU2OWRlMjkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lU3VwZXJDbGFzcy9nZW5lcmljcy9hZnRlci9wMS90LnR4dApkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVN1cGVyQ2xhc3MvZ2VuZXJpY3MvYmVmb3JlL1VzYWdlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lU3VwZXJDbGFzcy9nZW5lcmljcy9iZWZvcmUvVXNhZ2UuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZjYzYmRmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVN1cGVyQ2xhc3MvZ2VuZXJpY3MvYmVmb3JlL1VzYWdlLmphdmEKQEAgLTAsMCArMSwxOCBAQAoraW1wb3J0IHAxLio7CitjbGFzcyBVc2FnZSB7CisgIFN1cGVyPFN0cmluZz4gbXlGaWVsZDsKKworICBTdXBlcjxTdHJpbmc+IHh4eCgpeworICAgIHJldHVybiBteUZpZWxkOworICB9CisKKyAgU3VwZXI8SW50ZWdlcj4geHh4eHgoKSB7CisgICAgcmV0dXJuIG51bGw7CisgIH0KKworICB2b2lkIGJhcihTdXBlcjxTdHJpbmc+IHMpIHsKKyAgICBzLmZvbyhudWxsKTsKKyAgfQorCisKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lU3VwZXJDbGFzcy9nZW5lcmljcy9iZWZvcmUvcC9UZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lU3VwZXJDbGFzcy9nZW5lcmljcy9iZWZvcmUvcC9UZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGYyN2U5MQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVTdXBlckNsYXNzL2dlbmVyaWNzL2JlZm9yZS9wL1Rlc3QuamF2YQpAQCAtMCwwICsxLDMgQEAKK3BhY2thZ2UgcDsKK2ltcG9ydCBwMS4qOworcHVibGljIGNsYXNzIFRlc3Q8Uj4gZXh0ZW5kcyBTdXBlcjxSPiB7fSAKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lU3VwZXJDbGFzcy9nZW5lcmljcy9iZWZvcmUvcDEvU3VwZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVTdXBlckNsYXNzL2dlbmVyaWNzL2JlZm9yZS9wMS9TdXBlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM1ODBhMDAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lU3VwZXJDbGFzcy9nZW5lcmljcy9iZWZvcmUvcDEvU3VwZXIuamF2YQpAQCAtMCwwICsxLDYgQEAKK3BhY2thZ2UgcDE7CitwdWJsaWMgY2xhc3MgU3VwZXI8VD57CisgICBwdWJsaWMgdm9pZCBmb28oVCB0KSB7CisgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiSGVsbG8iKTsKKyAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lU3VwZXJDbGFzcy9nZW5lcmljcy9iZWZvcmUvcDEvdC50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lU3VwZXJDbGFzcy9nZW5lcmljcy9iZWZvcmUvcDEvdC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTY5ZGUyOQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVTdXBlckNsYXNzL2dlbmVyaWNzL2JlZm9yZS9wMS90LnR4dApkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVN1cGVyQ2xhc3MvaW1wbGljaXRDaGlsZENvbnN0cnVjdG9yL2FmdGVyL1Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVTdXBlckNsYXNzL2ltcGxpY2l0Q2hpbGRDb25zdHJ1Y3Rvci9hZnRlci9UZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmZhN2ExMAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVTdXBlckNsYXNzL2ltcGxpY2l0Q2hpbGRDb25zdHJ1Y3Rvci9hZnRlci9UZXN0LmphdmEKQEAgLTAsMCArMSw1IEBACitjbGFzcyBUZXN0IHsKKyAgdm9pZCBmb28oKSB7CisgICAgVGVzdCBzID0gbmV3IFRlc3QoKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVTdXBlckNsYXNzL2ltcGxpY2l0Q2hpbGRDb25zdHJ1Y3Rvci9iZWZvcmUvU3VwZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVTdXBlckNsYXNzL2ltcGxpY2l0Q2hpbGRDb25zdHJ1Y3Rvci9iZWZvcmUvU3VwZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYmIwNmFmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVN1cGVyQ2xhc3MvaW1wbGljaXRDaGlsZENvbnN0cnVjdG9yL2JlZm9yZS9TdXBlci5qYXZhCkBAIC0wLDAgKzEsMyBAQAorY2xhc3MgU3VwZXIgeworICBTdXBlcigpe30KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lU3VwZXJDbGFzcy9pbXBsaWNpdENoaWxkQ29uc3RydWN0b3IvYmVmb3JlL1Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVTdXBlckNsYXNzL2ltcGxpY2l0Q2hpbGRDb25zdHJ1Y3Rvci9iZWZvcmUvVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRhMzM0NmQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lU3VwZXJDbGFzcy9pbXBsaWNpdENoaWxkQ29uc3RydWN0b3IvYmVmb3JlL1Rlc3QuamF2YQpAQCAtMCwwICsxLDUgQEAKK2NsYXNzIFRlc3QgZXh0ZW5kcyBTdXBlcnsKKyAgdm9pZCBmb28oKSB7CisgICAgU3VwZXIgcyA9IG5ldyBTdXBlcigpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVN1cGVyQ2xhc3MvaW1wb3J0cy9hZnRlci9wL1Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVTdXBlckNsYXNzL2ltcG9ydHMvYWZ0ZXIvcC9UZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWJjNGQ4OAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVTdXBlckNsYXNzL2ltcG9ydHMvYWZ0ZXIvcC9UZXN0LmphdmEKQEAgLTAsMCArMSw3IEBACitwYWNrYWdlIHA7CisKK3B1YmxpYyBjbGFzcyBUZXN0IHsKKyAgICBwdWJsaWMgdm9pZCBmb28oKSB7CisgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIkhlbGxvIik7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVTdXBlckNsYXNzL2ltcG9ydHMvYWZ0ZXIvcDEvVXNhZ2UuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVTdXBlckNsYXNzL2ltcG9ydHMvYWZ0ZXIvcDEvVXNhZ2UuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MGIxZGNiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVN1cGVyQ2xhc3MvaW1wb3J0cy9hZnRlci9wMS9Vc2FnZS5qYXZhCkBAIC0wLDAgKzEsOSBAQAorcGFja2FnZSBwMTsKKworaW1wb3J0IHAuVGVzdDsKKworY2xhc3MgVXNhZ2UgeworICB2b2lkIGJhcihUZXN0IHMpIHsKKyAgICBzLmZvbygpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVN1cGVyQ2xhc3MvaW1wb3J0cy9iZWZvcmUvcC9UZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lU3VwZXJDbGFzcy9pbXBvcnRzL2JlZm9yZS9wL1Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45YmQ0OGQyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVN1cGVyQ2xhc3MvaW1wb3J0cy9iZWZvcmUvcC9UZXN0LmphdmEKQEAgLTAsMCArMSwzIEBACitwYWNrYWdlIHA7CitpbXBvcnQgcDEuKjsKK3B1YmxpYyBjbGFzcyBUZXN0IGV4dGVuZHMgU3VwZXIge30gClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVN1cGVyQ2xhc3MvaW1wb3J0cy9iZWZvcmUvcDEvU3VwZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVTdXBlckNsYXNzL2ltcG9ydHMvYmVmb3JlL3AxL1N1cGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWMyYWFjZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVTdXBlckNsYXNzL2ltcG9ydHMvYmVmb3JlL3AxL1N1cGVyLmphdmEKQEAgLTAsMCArMSw2IEBACitwYWNrYWdlIHAxOworcHVibGljIGNsYXNzIFN1cGVyIHsKKyAgIHB1YmxpYyB2b2lkIGZvbygpIHsKKyAgICAgU3lzdGVtLm91dC5wcmludGxuKCJIZWxsbyIpOworICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVTdXBlckNsYXNzL2ltcG9ydHMvYmVmb3JlL3AxL1VzYWdlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lU3VwZXJDbGFzcy9pbXBvcnRzL2JlZm9yZS9wMS9Vc2FnZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhjN2Y2YWUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lU3VwZXJDbGFzcy9pbXBvcnRzL2JlZm9yZS9wMS9Vc2FnZS5qYXZhCkBAIC0wLDAgKzEsNiBAQAorcGFja2FnZSBwMTsKK2NsYXNzIFVzYWdlIHsKKyAgdm9pZCBiYXIoU3VwZXIgcykgeworICAgIHMuZm9vKCk7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lU3VwZXJDbGFzcy9pbmxpbmVTdXBlcmNsYXNzRXh0ZW5kc0xpc3QvYWZ0ZXIvU3VwZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVTdXBlckNsYXNzL2lubGluZVN1cGVyY2xhc3NFeHRlbmRzTGlzdC9hZnRlci9TdXBlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZmZTRlNTIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lU3VwZXJDbGFzcy9pbmxpbmVTdXBlcmNsYXNzRXh0ZW5kc0xpc3QvYWZ0ZXIvU3VwZXIuamF2YQpAQCAtMCwwICsxLDUgQEAKKworaW50ZXJmYWNlIEludCB7fQorCitjbGFzcyBEdW1teSB7fQorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lU3VwZXJDbGFzcy9pbmxpbmVTdXBlcmNsYXNzRXh0ZW5kc0xpc3QvYWZ0ZXIvVGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVN1cGVyQ2xhc3MvaW5saW5lU3VwZXJjbGFzc0V4dGVuZHNMaXN0L2FmdGVyL1Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MjA0ZGVlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVN1cGVyQ2xhc3MvaW5saW5lU3VwZXJjbGFzc0V4dGVuZHNMaXN0L2FmdGVyL1Rlc3QuamF2YQpAQCAtMCwwICsxLDExIEBACitjbGFzcyBUZXN0IGV4dGVuZHMgRHVtbXkgaW1wbGVtZW50cyBJbnQgeworICBUZXN0KCl7fQorCisgICAgcHVibGljIHZvaWQgbWFpbigpIHt9Cit9CisKK2NsYXNzIFUgeworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKKyAgICAgICBuZXcgVGVzdCgpLm1haW4oKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lU3VwZXJDbGFzcy9pbmxpbmVTdXBlcmNsYXNzRXh0ZW5kc0xpc3QvYmVmb3JlL1N1cGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lU3VwZXJDbGFzcy9pbmxpbmVTdXBlcmNsYXNzRXh0ZW5kc0xpc3QvYmVmb3JlL1N1cGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGNkNGE1YQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVTdXBlckNsYXNzL2lubGluZVN1cGVyY2xhc3NFeHRlbmRzTGlzdC9iZWZvcmUvU3VwZXIuamF2YQpAQCAtMCwwICsxLDkgQEAKKworaW50ZXJmYWNlIEludCB7fQorCitjbGFzcyBEdW1teSB7fQorCitwdWJsaWMgY2xhc3MgU3VwZXIgZXh0ZW5kcyBEdW1teSBpbXBsZW1lbnRzIEludCB7CisgICAgcHVibGljIHZvaWQgbWFpbigpIHt9Cit9CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVTdXBlckNsYXNzL2lubGluZVN1cGVyY2xhc3NFeHRlbmRzTGlzdC9iZWZvcmUvVGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVN1cGVyQ2xhc3MvaW5saW5lU3VwZXJjbGFzc0V4dGVuZHNMaXN0L2JlZm9yZS9UZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzFmNGU3MgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVTdXBlckNsYXNzL2lubGluZVN1cGVyY2xhc3NFeHRlbmRzTGlzdC9iZWZvcmUvVGVzdC5qYXZhCkBAIC0wLDAgKzEsOSBAQAorY2xhc3MgVGVzdCBleHRlbmRzIFN1cGVyeworICBUZXN0KCl7fQorfQorCitjbGFzcyBVIHsKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CisgICAgICAgbmV3IFRlc3QoKS5tYWluKCk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVN1cGVyQ2xhc3MvaW5uZXJjbGFzc1JlZmVyZW5jZS9hZnRlci9UZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lU3VwZXJDbGFzcy9pbm5lcmNsYXNzUmVmZXJlbmNlL2FmdGVyL1Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMWNiNGEwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVN1cGVyQ2xhc3MvaW5uZXJjbGFzc1JlZmVyZW5jZS9hZnRlci9UZXN0LmphdmEKQEAgLTAsMCArMSwxNSBAQAorY2xhc3MgVGVzdCB7CisgICBwdWJsaWMgdm9pZCBjb250ZXh0Q2hpbGQoKSB7CisgICAgICBTdElubmVyIGlubmVyMSA9IG5ldyBTdElubmVyKCk7CisgICAgICBUZXN0Lkluc3RJbm5lciBpbm5lcjIgPSB0aGlzLm5ldyBJbnN0SW5uZXIoKTsKKyAgIH0KKworICAgIHZvaWQgZm9vKCkgeworICAgICAgIFN0SW5uZXIgaW5uZXIxID0gbmV3IFN0SW5uZXIoKTsKKyAgICAgICBUZXN0Lkluc3RJbm5lciBpbm5lcjIgPSB0aGlzLm5ldyBJbnN0SW5uZXIoKTsKKyAgICB9CisKKyAgICBwdWJsaWMgc3RhdGljIGNsYXNzIFN0SW5uZXIge30KKworICAgIHB1YmxpYyBjbGFzcyBJbnN0SW5uZXIge30KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lU3VwZXJDbGFzcy9pbm5lcmNsYXNzUmVmZXJlbmNlL2JlZm9yZS9TdXBlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVN1cGVyQ2xhc3MvaW5uZXJjbGFzc1JlZmVyZW5jZS9iZWZvcmUvU3VwZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41OWJlYzgyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVN1cGVyQ2xhc3MvaW5uZXJjbGFzc1JlZmVyZW5jZS9iZWZvcmUvU3VwZXIuamF2YQpAQCAtMCwwICsxLDkgQEAKK2NsYXNzIFN1cGVyIHsKKyAgICAgIHB1YmxpYyBzdGF0aWMgY2xhc3MgU3RJbm5lciB7fQorICAgICAgcHVibGljIGNsYXNzIEluc3RJbm5lciB7fQorCisgICAgICB2b2lkIGZvbygpIHsKKyAgICAgICAgIFN1cGVyLlN0SW5uZXIgaW5uZXIxID0gbmV3IFN1cGVyLlN0SW5uZXIoKTsKKyAgICAgICAgIFN1cGVyLkluc3RJbm5lciBpbm5lcjIgPSB0aGlzLm5ldyBJbnN0SW5uZXIoKTsKKyAgICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lU3VwZXJDbGFzcy9pbm5lcmNsYXNzUmVmZXJlbmNlL2JlZm9yZS9UZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lU3VwZXJDbGFzcy9pbm5lcmNsYXNzUmVmZXJlbmNlL2JlZm9yZS9UZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzdlZTNhOQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVTdXBlckNsYXNzL2lubmVyY2xhc3NSZWZlcmVuY2UvYmVmb3JlL1Rlc3QuamF2YQpAQCAtMCwwICsxLDYgQEAKK2NsYXNzIFRlc3QgZXh0ZW5kcyBTdXBlcnsKKyAgIHB1YmxpYyB2b2lkIGNvbnRleHRDaGlsZCgpIHsKKyAgICAgIFN1cGVyLlN0SW5uZXIgaW5uZXIxID0gbmV3IFN1cGVyLlN0SW5uZXIoKTsKKyAgICAgIFN1cGVyLkluc3RJbm5lciBpbm5lcjIgPSB0aGlzLm5ldyBJbnN0SW5uZXIoKTsKKyAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lU3VwZXJDbGFzcy9pbnRlcmZhY2VIaWVyYXJjaHlXaXRoU3Vic3RpdHV0aW9uL2FmdGVyL1N1cGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lU3VwZXJDbGFzcy9pbnRlcmZhY2VIaWVyYXJjaHlXaXRoU3Vic3RpdHV0aW9uL2FmdGVyL1N1cGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjBjMjA2NAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVTdXBlckNsYXNzL2ludGVyZmFjZUhpZXJhcmNoeVdpdGhTdWJzdGl0dXRpb24vYWZ0ZXIvU3VwZXIuamF2YQpAQCAtMCwwICsxLDIgQEAKK2ludGVyZmFjZSBJbnQ8VD4geworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVN1cGVyQ2xhc3MvaW50ZXJmYWNlSGllcmFyY2h5V2l0aFN1YnN0aXR1dGlvbi9hZnRlci9UZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lU3VwZXJDbGFzcy9pbnRlcmZhY2VIaWVyYXJjaHlXaXRoU3Vic3RpdHV0aW9uL2FmdGVyL1Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMmRkMTkwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVN1cGVyQ2xhc3MvaW50ZXJmYWNlSGllcmFyY2h5V2l0aFN1YnN0aXR1dGlvbi9hZnRlci9UZXN0LmphdmEKQEAgLTAsMCArMSwyIEBACitpbnRlcmZhY2UgVGVzdDxUPiBleHRlbmRzIEludDxUPiB7Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lU3VwZXJDbGFzcy9pbnRlcmZhY2VIaWVyYXJjaHlXaXRoU3Vic3RpdHV0aW9uL2JlZm9yZS9TdXBlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVN1cGVyQ2xhc3MvaW50ZXJmYWNlSGllcmFyY2h5V2l0aFN1YnN0aXR1dGlvbi9iZWZvcmUvU3VwZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNWYyMjM4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVN1cGVyQ2xhc3MvaW50ZXJmYWNlSGllcmFyY2h5V2l0aFN1YnN0aXR1dGlvbi9iZWZvcmUvU3VwZXIuamF2YQpAQCAtMCwwICsxLDQgQEAKK2ludGVyZmFjZSBTdXBlcjxUPiBleHRlbmRzIEludDxUPiB7Cit9CitpbnRlcmZhY2UgSW50PFQ+IHsKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVTdXBlckNsYXNzL2ludGVyZmFjZUhpZXJhcmNoeVdpdGhTdWJzdGl0dXRpb24vYmVmb3JlL1Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVTdXBlckNsYXNzL2ludGVyZmFjZUhpZXJhcmNoeVdpdGhTdWJzdGl0dXRpb24vYmVmb3JlL1Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZWVlYjVkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVN1cGVyQ2xhc3MvaW50ZXJmYWNlSGllcmFyY2h5V2l0aFN1YnN0aXR1dGlvbi9iZWZvcmUvVGVzdC5qYXZhCkBAIC0wLDAgKzEsMiBAQAoraW50ZXJmYWNlIFRlc3Q8VD4gZXh0ZW5kcyBTdXBlcjxUPnsKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVTdXBlckNsYXNzL211bHRpcGxlQ29uc3RydWN0b3JzL2FmdGVyL1Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVTdXBlckNsYXNzL211bHRpcGxlQ29uc3RydWN0b3JzL2FmdGVyL1Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43OThhN2YyZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVTdXBlckNsYXNzL211bHRpcGxlQ29uc3RydWN0b3JzL2FmdGVyL1Rlc3QuamF2YQpAQCAtMCwwICsxLDExIEBACitjbGFzcyBUZXN0IHsKKyAgVGVzdChTdHJpbmcgcyl7CisgIH0KKworICAgIHZvaWQgZm9vKCkgeworICAgICAgVGVzdCBzID0gbmV3IFRlc3QoIiIpOworICAgICAgcy5iYXIoKTsKKyAgICB9CisKKyAgICB2b2lkIGJhcigpIHt9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVN1cGVyQ2xhc3MvbXVsdGlwbGVDb25zdHJ1Y3RvcnMvYmVmb3JlL1N1cGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lU3VwZXJDbGFzcy9tdWx0aXBsZUNvbnN0cnVjdG9ycy9iZWZvcmUvU3VwZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ODczMzdmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVN1cGVyQ2xhc3MvbXVsdGlwbGVDb25zdHJ1Y3RvcnMvYmVmb3JlL1N1cGVyLmphdmEKQEAgLTAsMCArMSwxMCBAQAorY2xhc3MgU3VwZXIgeworICBTdXBlcihTdHJpbmcgcyl7fQorCisgIHZvaWQgZm9vKCkgeworICAgIFN1cGVyIHMgPSBuZXcgU3VwZXIoIiIpOworICAgIHMuYmFyKCk7CisgIH0KKworICB2b2lkIGJhcigpIHt9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVN1cGVyQ2xhc3MvbXVsdGlwbGVDb25zdHJ1Y3RvcnMvYmVmb3JlL1Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVTdXBlckNsYXNzL211bHRpcGxlQ29uc3RydWN0b3JzL2JlZm9yZS9UZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWE0OTk1NAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVTdXBlckNsYXNzL211bHRpcGxlQ29uc3RydWN0b3JzL2JlZm9yZS9UZXN0LmphdmEKQEAgLTAsMCArMSwzIEBACitjbGFzcyBUZXN0IGV4dGVuZHMgU3VwZXJ7CisgIFRlc3QoU3RyaW5nIHMpe3N1cGVyKHMpO30KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lU3VwZXJDbGFzcy9tdWx0aXBsZVN1YmNsYXNzZXMvYWZ0ZXIvVGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVN1cGVyQ2xhc3MvbXVsdGlwbGVTdWJjbGFzc2VzL2FmdGVyL1Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ODcxMGU1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVN1cGVyQ2xhc3MvbXVsdGlwbGVTdWJjbGFzc2VzL2FmdGVyL1Rlc3QuamF2YQpAQCAtMCwwICsxLDcgQEAKK2NsYXNzIFRlc3QgeworICBwdWJsaWMgdm9pZCBjb250ZXh0KCkgeworICAgIG1ldGhvZCgpOworICB9CisKKyAgICBwdWJsaWMgdm9pZCBtZXRob2QoKSB7fQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVTdXBlckNsYXNzL211bHRpcGxlU3ViY2xhc3Nlcy9hZnRlci9UZXN0MS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVN1cGVyQ2xhc3MvbXVsdGlwbGVTdWJjbGFzc2VzL2FmdGVyL1Rlc3QxLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjIzMWI5ZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVTdXBlckNsYXNzL211bHRpcGxlU3ViY2xhc3Nlcy9hZnRlci9UZXN0MS5qYXZhCkBAIC0wLDAgKzEsNyBAQAorY2xhc3MgVGVzdDEgeworICBwdWJsaWMgdm9pZCBjb250ZXh0KCkgeworICAgIG1ldGhvZCgpOworICB9CisKKyAgICBwdWJsaWMgdm9pZCBtZXRob2QoKSB7fQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVTdXBlckNsYXNzL211bHRpcGxlU3ViY2xhc3Nlcy9iZWZvcmUvU3VwZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVTdXBlckNsYXNzL211bHRpcGxlU3ViY2xhc3Nlcy9iZWZvcmUvU3VwZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYjAzNTlhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVN1cGVyQ2xhc3MvbXVsdGlwbGVTdWJjbGFzc2VzL2JlZm9yZS9TdXBlci5qYXZhCkBAIC0wLDAgKzEsMyBAQAorY2xhc3MgU3VwZXIgeworICAgcHVibGljIHZvaWQgbWV0aG9kKCkge30KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lU3VwZXJDbGFzcy9tdWx0aXBsZVN1YmNsYXNzZXMvYmVmb3JlL1Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVTdXBlckNsYXNzL211bHRpcGxlU3ViY2xhc3Nlcy9iZWZvcmUvVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM4MWI3MjAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lU3VwZXJDbGFzcy9tdWx0aXBsZVN1YmNsYXNzZXMvYmVmb3JlL1Rlc3QuamF2YQpAQCAtMCwwICsxLDUgQEAKK2NsYXNzIFRlc3QgZXh0ZW5kcyBTdXBlcnsKKyAgcHVibGljIHZvaWQgY29udGV4dCgpIHsKKyAgICBzdXBlci5tZXRob2QoKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVTdXBlckNsYXNzL211bHRpcGxlU3ViY2xhc3Nlcy9iZWZvcmUvVGVzdDEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVTdXBlckNsYXNzL211bHRpcGxlU3ViY2xhc3Nlcy9iZWZvcmUvVGVzdDEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMmI2N2E3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVN1cGVyQ2xhc3MvbXVsdGlwbGVTdWJjbGFzc2VzL2JlZm9yZS9UZXN0MS5qYXZhCkBAIC0wLDAgKzEsNSBAQAorY2xhc3MgVGVzdDEgZXh0ZW5kcyBTdXBlcnsKKyAgcHVibGljIHZvaWQgY29udGV4dCgpIHsKKyAgICBzdXBlci5tZXRob2QoKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVTdXBlckNsYXNzL211bHRpcGxlU3ViY2xhc3Nlc0luaGVyaXRzT25lQmFzZUJhc2UvYWZ0ZXIvSVN1cGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lU3VwZXJDbGFzcy9tdWx0aXBsZVN1YmNsYXNzZXNJbmhlcml0c09uZUJhc2VCYXNlL2FmdGVyL0lTdXBlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQyZjk0Y2YKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lU3VwZXJDbGFzcy9tdWx0aXBsZVN1YmNsYXNzZXNJbmhlcml0c09uZUJhc2VCYXNlL2FmdGVyL0lTdXBlci5qYXZhCkBAIC0wLDAgKzEgQEAKK2ludGVyZmFjZSBJU3VwZXIge30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lU3VwZXJDbGFzcy9tdWx0aXBsZVN1YmNsYXNzZXNJbmhlcml0c09uZUJhc2VCYXNlL2FmdGVyL1Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVTdXBlckNsYXNzL211bHRpcGxlU3ViY2xhc3Nlc0luaGVyaXRzT25lQmFzZUJhc2UvYWZ0ZXIvVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA5ODg2MDMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lU3VwZXJDbGFzcy9tdWx0aXBsZVN1YmNsYXNzZXNJbmhlcml0c09uZUJhc2VCYXNlL2FmdGVyL1Rlc3QuamF2YQpAQCAtMCwwICsxIEBACitjbGFzcyBUZXN0IGltcGxlbWVudHMgSVN1cGVyIHt9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVN1cGVyQ2xhc3MvbXVsdGlwbGVTdWJjbGFzc2VzSW5oZXJpdHNPbmVCYXNlQmFzZS9hZnRlci9UZXN0MS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVN1cGVyQ2xhc3MvbXVsdGlwbGVTdWJjbGFzc2VzSW5oZXJpdHNPbmVCYXNlQmFzZS9hZnRlci9UZXN0MS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIzMTJkZTg2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVN1cGVyQ2xhc3MvbXVsdGlwbGVTdWJjbGFzc2VzSW5oZXJpdHNPbmVCYXNlQmFzZS9hZnRlci9UZXN0MS5qYXZhCkBAIC0wLDAgKzEsMiBAQAorY2xhc3MgVGVzdDEgaW1wbGVtZW50cyBJU3VwZXIgeworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVTdXBlckNsYXNzL211bHRpcGxlU3ViY2xhc3Nlc0luaGVyaXRzT25lQmFzZUJhc2UvYmVmb3JlL0lTdXBlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVN1cGVyQ2xhc3MvbXVsdGlwbGVTdWJjbGFzc2VzSW5oZXJpdHNPbmVCYXNlQmFzZS9iZWZvcmUvSVN1cGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDJmOTRjZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVTdXBlckNsYXNzL211bHRpcGxlU3ViY2xhc3Nlc0luaGVyaXRzT25lQmFzZUJhc2UvYmVmb3JlL0lTdXBlci5qYXZhCkBAIC0wLDAgKzEgQEAKK2ludGVyZmFjZSBJU3VwZXIge30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lU3VwZXJDbGFzcy9tdWx0aXBsZVN1YmNsYXNzZXNJbmhlcml0c09uZUJhc2VCYXNlL2JlZm9yZS9TdXBlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVN1cGVyQ2xhc3MvbXVsdGlwbGVTdWJjbGFzc2VzSW5oZXJpdHNPbmVCYXNlQmFzZS9iZWZvcmUvU3VwZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZDQzMGUzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVN1cGVyQ2xhc3MvbXVsdGlwbGVTdWJjbGFzc2VzSW5oZXJpdHNPbmVCYXNlQmFzZS9iZWZvcmUvU3VwZXIuamF2YQpAQCAtMCwwICsxIEBACitwdWJsaWMgaW50ZXJmYWNlIFN1cGVyIGV4dGVuZHMgSVN1cGVye30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVTdXBlckNsYXNzL211bHRpcGxlU3ViY2xhc3Nlc0luaGVyaXRzT25lQmFzZUJhc2UvYmVmb3JlL1Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVTdXBlckNsYXNzL211bHRpcGxlU3ViY2xhc3Nlc0luaGVyaXRzT25lQmFzZUJhc2UvYmVmb3JlL1Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMmQ4Y2IxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVN1cGVyQ2xhc3MvbXVsdGlwbGVTdWJjbGFzc2VzSW5oZXJpdHNPbmVCYXNlQmFzZS9iZWZvcmUvVGVzdC5qYXZhCkBAIC0wLDAgKzEgQEAKK2NsYXNzIFRlc3QgaW1wbGVtZW50cyBTdXBlciB7fQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVTdXBlckNsYXNzL211bHRpcGxlU3ViY2xhc3Nlc0luaGVyaXRzT25lQmFzZUJhc2UvYmVmb3JlL1Rlc3QxLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lU3VwZXJDbGFzcy9tdWx0aXBsZVN1YmNsYXNzZXNJbmhlcml0c09uZUJhc2VCYXNlL2JlZm9yZS9UZXN0MS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhiY2RiYWMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lU3VwZXJDbGFzcy9tdWx0aXBsZVN1YmNsYXNzZXNJbmhlcml0c09uZUJhc2VCYXNlL2JlZm9yZS9UZXN0MS5qYXZhCkBAIC0wLDAgKzEsMiBAQAorY2xhc3MgVGVzdDEgaW1wbGVtZW50cyBTdXBlcnsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lU3VwZXJDbGFzcy9tdWx0aXBsZVN1YnN0aXR1dGlvbnMvYWZ0ZXIvVGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVN1cGVyQ2xhc3MvbXVsdGlwbGVTdWJzdGl0dXRpb25zL2FmdGVyL1Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYWI2NTA2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVN1cGVyQ2xhc3MvbXVsdGlwbGVTdWJzdGl0dXRpb25zL2FmdGVyL1Rlc3QuamF2YQpAQCAtMCwwICsxLDMgQEAKK2NsYXNzIFRlc3QgeworICAgIEludGVnZXIgdDsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lU3VwZXJDbGFzcy9tdWx0aXBsZVN1YnN0aXR1dGlvbnMvYWZ0ZXIvVGVzdDEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVTdXBlckNsYXNzL211bHRpcGxlU3Vic3RpdHV0aW9ucy9hZnRlci9UZXN0MS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc1ODU1MWQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lU3VwZXJDbGFzcy9tdWx0aXBsZVN1YnN0aXR1dGlvbnMvYWZ0ZXIvVGVzdDEuamF2YQpAQCAtMCwwICsxLDMgQEAKK2NsYXNzIFRlc3QxIHsKKyAgICBTdHJpbmcgdDsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lU3VwZXJDbGFzcy9tdWx0aXBsZVN1YnN0aXR1dGlvbnMvYmVmb3JlL1N1cGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lU3VwZXJDbGFzcy9tdWx0aXBsZVN1YnN0aXR1dGlvbnMvYmVmb3JlL1N1cGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODlhN2ViOQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVTdXBlckNsYXNzL211bHRpcGxlU3Vic3RpdHV0aW9ucy9iZWZvcmUvU3VwZXIuamF2YQpAQCAtMCwwICsxLDMgQEAKK2NsYXNzIFN1cGVyPFQ+IHsKKyAgVCB0OworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVTdXBlckNsYXNzL211bHRpcGxlU3Vic3RpdHV0aW9ucy9iZWZvcmUvVGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVN1cGVyQ2xhc3MvbXVsdGlwbGVTdWJzdGl0dXRpb25zL2JlZm9yZS9UZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDM0YTc2YgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVTdXBlckNsYXNzL211bHRpcGxlU3Vic3RpdHV0aW9ucy9iZWZvcmUvVGVzdC5qYXZhCkBAIC0wLDAgKzEsMiBAQAorY2xhc3MgVGVzdCBleHRlbmRzIFN1cGVyPEludGVnZXI+eworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVTdXBlckNsYXNzL211bHRpcGxlU3Vic3RpdHV0aW9ucy9iZWZvcmUvVGVzdDEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVTdXBlckNsYXNzL211bHRpcGxlU3Vic3RpdHV0aW9ucy9iZWZvcmUvVGVzdDEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYmE5OTNhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVN1cGVyQ2xhc3MvbXVsdGlwbGVTdWJzdGl0dXRpb25zL2JlZm9yZS9UZXN0MS5qYXZhCkBAIC0wLDAgKzEsMiBAQAorY2xhc3MgVGVzdDEgZXh0ZW5kcyBTdXBlcjxTdHJpbmc+eworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVTdXBlckNsYXNzL25ld0FycmF5Q29tcGxleERpbWVuc2lvbnNFeHByL2FmdGVyL1Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVTdXBlckNsYXNzL25ld0FycmF5Q29tcGxleERpbWVuc2lvbnNFeHByL2FmdGVyL1Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kOTc1NzRhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVN1cGVyQ2xhc3MvbmV3QXJyYXlDb21wbGV4RGltZW5zaW9uc0V4cHIvYWZ0ZXIvVGVzdC5qYXZhCkBAIC0wLDAgKzEsOCBAQAorY2xhc3MgVGVzdCB7CisgICAgc3RhdGljIGludCBiYXIoKXtyZXR1cm4gMTt9CisKKyAgICB2b2lkIGZvbygpIHsKKyAgICAgIFRlc3QgcyA9IG5ldyBUZXN0KCk7CisgICAgICBzLmJhcigpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lU3VwZXJDbGFzcy9uZXdBcnJheUNvbXBsZXhEaW1lbnNpb25zRXhwci9hZnRlci9Vc2FnZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVN1cGVyQ2xhc3MvbmV3QXJyYXlDb21wbGV4RGltZW5zaW9uc0V4cHIvYWZ0ZXIvVXNhZ2UuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNDkwMWUyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVN1cGVyQ2xhc3MvbmV3QXJyYXlDb21wbGV4RGltZW5zaW9uc0V4cHIvYWZ0ZXIvVXNhZ2UuamF2YQpAQCAtMCwwICsxLDUgQEAKK2NsYXNzIFVzYWdlIHsKKyAgdm9pZCBiYSgpIHsKKyAgICBUZXN0W11bXSBzID0gbmV3IFRlc3RbVGVzdC5iYXIoKV1bXTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVTdXBlckNsYXNzL25ld0FycmF5Q29tcGxleERpbWVuc2lvbnNFeHByL2JlZm9yZS9TdXBlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVN1cGVyQ2xhc3MvbmV3QXJyYXlDb21wbGV4RGltZW5zaW9uc0V4cHIvYmVmb3JlL1N1cGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDJiYTBjZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVTdXBlckNsYXNzL25ld0FycmF5Q29tcGxleERpbWVuc2lvbnNFeHByL2JlZm9yZS9TdXBlci5qYXZhCkBAIC0wLDAgKzEsOCBAQAorY2xhc3MgU3VwZXIgeworICB2b2lkIGZvbygpIHsKKyAgICBTdXBlciBzID0gbmV3IFN1cGVyKCk7CisgICAgcy5iYXIoKTsKKyAgfQorCisgIHN0YXRpYyBpbnQgYmFyKCl7cmV0dXJuIDE7fQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVTdXBlckNsYXNzL25ld0FycmF5Q29tcGxleERpbWVuc2lvbnNFeHByL2JlZm9yZS9UZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lU3VwZXJDbGFzcy9uZXdBcnJheUNvbXBsZXhEaW1lbnNpb25zRXhwci9iZWZvcmUvVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY5YWM0MzMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lU3VwZXJDbGFzcy9uZXdBcnJheUNvbXBsZXhEaW1lbnNpb25zRXhwci9iZWZvcmUvVGVzdC5qYXZhCkBAIC0wLDAgKzEsMiBAQAorY2xhc3MgVGVzdCBleHRlbmRzIFN1cGVyeworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVTdXBlckNsYXNzL25ld0FycmF5Q29tcGxleERpbWVuc2lvbnNFeHByL2JlZm9yZS9Vc2FnZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVN1cGVyQ2xhc3MvbmV3QXJyYXlDb21wbGV4RGltZW5zaW9uc0V4cHIvYmVmb3JlL1VzYWdlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzFhNzIwMQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVTdXBlckNsYXNzL25ld0FycmF5Q29tcGxleERpbWVuc2lvbnNFeHByL2JlZm9yZS9Vc2FnZS5qYXZhCkBAIC0wLDAgKzEsNSBAQAorY2xhc3MgVXNhZ2UgeworICB2b2lkIGJhKCkgeworICAgIFN1cGVyW11bXSBzID0gbmV3IFN1cGVyW1N1cGVyLmJhcigpXVtdOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVN1cGVyQ2xhc3MvbmV3QXJyYXlEaW1lbnNpb25zRXhwci9hZnRlci9UZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lU3VwZXJDbGFzcy9uZXdBcnJheURpbWVuc2lvbnNFeHByL2FmdGVyL1Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MWQ2ZmVjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVN1cGVyQ2xhc3MvbmV3QXJyYXlEaW1lbnNpb25zRXhwci9hZnRlci9UZXN0LmphdmEKQEAgLTAsMCArMSw4IEBACitjbGFzcyBUZXN0IHsKKyAgICB2b2lkIGZvbygpIHsKKyAgICAgIFRlc3QgcyA9IG5ldyBUZXN0KCk7CisgICAgICBzLmJhcigpOworICAgIH0KKworICAgIHZvaWQgYmFyKCkge30KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lU3VwZXJDbGFzcy9uZXdBcnJheURpbWVuc2lvbnNFeHByL2FmdGVyL1VzYWdlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lU3VwZXJDbGFzcy9uZXdBcnJheURpbWVuc2lvbnNFeHByL2FmdGVyL1VzYWdlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTZhYTg2MQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVTdXBlckNsYXNzL25ld0FycmF5RGltZW5zaW9uc0V4cHIvYWZ0ZXIvVXNhZ2UuamF2YQpAQCAtMCwwICsxLDUgQEAKK2NsYXNzIFVzYWdlIHsKKyAgdm9pZCBiYSgpIHsKKyAgICBUZXN0W11bXSBzID0gbmV3IFRlc3RbMl1bM107CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lU3VwZXJDbGFzcy9uZXdBcnJheURpbWVuc2lvbnNFeHByL2JlZm9yZS9TdXBlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVN1cGVyQ2xhc3MvbmV3QXJyYXlEaW1lbnNpb25zRXhwci9iZWZvcmUvU3VwZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43OWExMWMzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVN1cGVyQ2xhc3MvbmV3QXJyYXlEaW1lbnNpb25zRXhwci9iZWZvcmUvU3VwZXIuamF2YQpAQCAtMCwwICsxLDggQEAKK2NsYXNzIFN1cGVyIHsKKyAgdm9pZCBmb28oKSB7CisgICAgU3VwZXIgcyA9IG5ldyBTdXBlcigpOworICAgIHMuYmFyKCk7CisgIH0KKworICB2b2lkIGJhcigpIHt9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVN1cGVyQ2xhc3MvbmV3QXJyYXlEaW1lbnNpb25zRXhwci9iZWZvcmUvVGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVN1cGVyQ2xhc3MvbmV3QXJyYXlEaW1lbnNpb25zRXhwci9iZWZvcmUvVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY5YWM0MzMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lU3VwZXJDbGFzcy9uZXdBcnJheURpbWVuc2lvbnNFeHByL2JlZm9yZS9UZXN0LmphdmEKQEAgLTAsMCArMSwyIEBACitjbGFzcyBUZXN0IGV4dGVuZHMgU3VwZXJ7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVN1cGVyQ2xhc3MvbmV3QXJyYXlEaW1lbnNpb25zRXhwci9iZWZvcmUvVXNhZ2UuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVTdXBlckNsYXNzL25ld0FycmF5RGltZW5zaW9uc0V4cHIvYmVmb3JlL1VzYWdlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODY3YTZlMgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVTdXBlckNsYXNzL25ld0FycmF5RGltZW5zaW9uc0V4cHIvYmVmb3JlL1VzYWdlLmphdmEKQEAgLTAsMCArMSw1IEBACitjbGFzcyBVc2FnZSB7CisgIHZvaWQgYmEoKSB7CisgICAgU3VwZXJbXVtdIHMgPSBuZXcgU3VwZXJbMl1bM107CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lU3VwZXJDbGFzcy9uZXdBcnJheUluaXRpYWxpemVyRXhwci9hZnRlci9UZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lU3VwZXJDbGFzcy9uZXdBcnJheUluaXRpYWxpemVyRXhwci9hZnRlci9UZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzFkNmZlYwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVTdXBlckNsYXNzL25ld0FycmF5SW5pdGlhbGl6ZXJFeHByL2FmdGVyL1Rlc3QuamF2YQpAQCAtMCwwICsxLDggQEAKK2NsYXNzIFRlc3QgeworICAgIHZvaWQgZm9vKCkgeworICAgICAgVGVzdCBzID0gbmV3IFRlc3QoKTsKKyAgICAgIHMuYmFyKCk7CisgICAgfQorCisgICAgdm9pZCBiYXIoKSB7fQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVTdXBlckNsYXNzL25ld0FycmF5SW5pdGlhbGl6ZXJFeHByL2FmdGVyL1VzYWdlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lU3VwZXJDbGFzcy9uZXdBcnJheUluaXRpYWxpemVyRXhwci9hZnRlci9Vc2FnZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU5YmJiNTYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lU3VwZXJDbGFzcy9uZXdBcnJheUluaXRpYWxpemVyRXhwci9hZnRlci9Vc2FnZS5qYXZhCkBAIC0wLDAgKzEsNSBAQAorY2xhc3MgVXNhZ2UgeworICB2b2lkIGJhKCkgeworICAgIFRlc3RbXVtdIHMgPSBuZXcgVGVzdFtdW117bmV3IFRlc3RbXXtuZXcgVGVzdCgpfX07CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lU3VwZXJDbGFzcy9uZXdBcnJheUluaXRpYWxpemVyRXhwci9iZWZvcmUvU3VwZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVTdXBlckNsYXNzL25ld0FycmF5SW5pdGlhbGl6ZXJFeHByL2JlZm9yZS9TdXBlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc5YTExYzMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lU3VwZXJDbGFzcy9uZXdBcnJheUluaXRpYWxpemVyRXhwci9iZWZvcmUvU3VwZXIuamF2YQpAQCAtMCwwICsxLDggQEAKK2NsYXNzIFN1cGVyIHsKKyAgdm9pZCBmb28oKSB7CisgICAgU3VwZXIgcyA9IG5ldyBTdXBlcigpOworICAgIHMuYmFyKCk7CisgIH0KKworICB2b2lkIGJhcigpIHt9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVN1cGVyQ2xhc3MvbmV3QXJyYXlJbml0aWFsaXplckV4cHIvYmVmb3JlL1Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVTdXBlckNsYXNzL25ld0FycmF5SW5pdGlhbGl6ZXJFeHByL2JlZm9yZS9UZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjlhYzQzMwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVTdXBlckNsYXNzL25ld0FycmF5SW5pdGlhbGl6ZXJFeHByL2JlZm9yZS9UZXN0LmphdmEKQEAgLTAsMCArMSwyIEBACitjbGFzcyBUZXN0IGV4dGVuZHMgU3VwZXJ7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVN1cGVyQ2xhc3MvbmV3QXJyYXlJbml0aWFsaXplckV4cHIvYmVmb3JlL1VzYWdlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lU3VwZXJDbGFzcy9uZXdBcnJheUluaXRpYWxpemVyRXhwci9iZWZvcmUvVXNhZ2UuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZTI3OTdiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVN1cGVyQ2xhc3MvbmV3QXJyYXlJbml0aWFsaXplckV4cHIvYmVmb3JlL1VzYWdlLmphdmEKQEAgLTAsMCArMSw1IEBACitjbGFzcyBVc2FnZSB7CisgIHZvaWQgYmEoKSB7CisgICAgU3VwZXJbXVtdIHMgPSBuZXcgU3VwZXJbXVtde25ldyBTdXBlcltde25ldyBUZXN0KCl9fTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVTdXBlckNsYXNzL25ld2V4cHIvYWZ0ZXIvVGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVN1cGVyQ2xhc3MvbmV3ZXhwci9hZnRlci9UZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzFkNmZlYwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVTdXBlckNsYXNzL25ld2V4cHIvYWZ0ZXIvVGVzdC5qYXZhCkBAIC0wLDAgKzEsOCBAQAorY2xhc3MgVGVzdCB7CisgICAgdm9pZCBmb28oKSB7CisgICAgICBUZXN0IHMgPSBuZXcgVGVzdCgpOworICAgICAgcy5iYXIoKTsKKyAgICB9CisKKyAgICB2b2lkIGJhcigpIHt9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVN1cGVyQ2xhc3MvbmV3ZXhwci9hZnRlci9Vc2FnZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVN1cGVyQ2xhc3MvbmV3ZXhwci9hZnRlci9Vc2FnZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA2ZGJlYjgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lU3VwZXJDbGFzcy9uZXdleHByL2FmdGVyL1VzYWdlLmphdmEKQEAgLTAsMCArMSw1IEBACitjbGFzcyBVc2FnZSB7CisgIHZvaWQgYmEoKSB7CisgICAgVGVzdCBzID0gbmV3IFRlc3QoKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVTdXBlckNsYXNzL25ld2V4cHIvYmVmb3JlL1N1cGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lU3VwZXJDbGFzcy9uZXdleHByL2JlZm9yZS9TdXBlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc5YTExYzMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lU3VwZXJDbGFzcy9uZXdleHByL2JlZm9yZS9TdXBlci5qYXZhCkBAIC0wLDAgKzEsOCBAQAorY2xhc3MgU3VwZXIgeworICB2b2lkIGZvbygpIHsKKyAgICBTdXBlciBzID0gbmV3IFN1cGVyKCk7CisgICAgcy5iYXIoKTsKKyAgfQorCisgIHZvaWQgYmFyKCkge30KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lU3VwZXJDbGFzcy9uZXdleHByL2JlZm9yZS9UZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lU3VwZXJDbGFzcy9uZXdleHByL2JlZm9yZS9UZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjlhYzQzMwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVTdXBlckNsYXNzL25ld2V4cHIvYmVmb3JlL1Rlc3QuamF2YQpAQCAtMCwwICsxLDIgQEAKK2NsYXNzIFRlc3QgZXh0ZW5kcyBTdXBlcnsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lU3VwZXJDbGFzcy9uZXdleHByL2JlZm9yZS9Vc2FnZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVN1cGVyQ2xhc3MvbmV3ZXhwci9iZWZvcmUvVXNhZ2UuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NWJlZDkwNgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVTdXBlckNsYXNzL25ld2V4cHIvYmVmb3JlL1VzYWdlLmphdmEKQEAgLTAsMCArMSw1IEBACitjbGFzcyBVc2FnZSB7CisgIHZvaWQgYmEoKSB7CisgICAgU3VwZXIgcyA9IG5ldyBTdXBlcigpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVN1cGVyQ2xhc3Mvbm9DaGlsZENvbnN0cnVjdG9yQ2FsbHNTdXBlckRlZmF1bHQvYWZ0ZXIvVGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVN1cGVyQ2xhc3Mvbm9DaGlsZENvbnN0cnVjdG9yQ2FsbHNTdXBlckRlZmF1bHQvYWZ0ZXIvVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIwZmMxYTUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lU3VwZXJDbGFzcy9ub0NoaWxkQ29uc3RydWN0b3JDYWxsc1N1cGVyRGVmYXVsdC9hZnRlci9UZXN0LmphdmEKQEAgLTAsMCArMSw2IEBACitjbGFzcyBUZXN0IHsKKworICAgIFRlc3QoKSB7CisgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIiIpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lU3VwZXJDbGFzcy9ub0NoaWxkQ29uc3RydWN0b3JDYWxsc1N1cGVyRGVmYXVsdC9iZWZvcmUvU3VwZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVTdXBlckNsYXNzL25vQ2hpbGRDb25zdHJ1Y3RvckNhbGxzU3VwZXJEZWZhdWx0L2JlZm9yZS9TdXBlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY5MmM2ZGUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lU3VwZXJDbGFzcy9ub0NoaWxkQ29uc3RydWN0b3JDYWxsc1N1cGVyRGVmYXVsdC9iZWZvcmUvU3VwZXIuamF2YQpAQCAtMCwwICsxLDUgQEAKK2NsYXNzIFN1cGVyIHsKKyAgU3VwZXIoKSB7CisgICAgU3lzdGVtLm91dC5wcmludGxuKCIiKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVTdXBlckNsYXNzL25vQ2hpbGRDb25zdHJ1Y3RvckNhbGxzU3VwZXJEZWZhdWx0L2JlZm9yZS9UZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lU3VwZXJDbGFzcy9ub0NoaWxkQ29uc3RydWN0b3JDYWxsc1N1cGVyRGVmYXVsdC9iZWZvcmUvVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg3ZGMyNWIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lU3VwZXJDbGFzcy9ub0NoaWxkQ29uc3RydWN0b3JDYWxsc1N1cGVyRGVmYXVsdC9iZWZvcmUvVGVzdC5qYXZhCkBAIC0wLDAgKzEsMyBAQAorY2xhc3MgVGVzdCBleHRlbmRzIFN1cGVyeworICAKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lU3VwZXJDbGFzcy9yZXBsYWNlR2VuZXJpY3NJbnNpZGUvYWZ0ZXIvVGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVN1cGVyQ2xhc3MvcmVwbGFjZUdlbmVyaWNzSW5zaWRlL2FmdGVyL1Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNzUzNzFjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVN1cGVyQ2xhc3MvcmVwbGFjZUdlbmVyaWNzSW5zaWRlL2FmdGVyL1Rlc3QuamF2YQpAQCAtMCwwICsxLDIzIEBACitpbXBvcnQgamF2YS51dGlsLkxpc3Q7CitpbXBvcnQgamF2YS51dGlsLlNldDsKKworY2xhc3MgVGVzdCB7CisgICAgTGlzdDxTdHJpbmc+IGw7CisKKyAgICBUZXN0KCkgeworICAgICAgU2V0PFN0cmluZz4gcyA9IG5ldyBIYXNoU2V0PFN0cmluZz4oKTsKKyAgICAgIGZvciAoU3RyaW5nIHQgOiBzKSB7CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbih0KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2b2lkIGZvbyhTdHJpbmcgdCkgeworICAgICAgU3lzdGVtLm91dC5wcmludGxuKHQpOworICAgIH0KKworICAgIHZvaWQgYmFyKCkgeworICAgICAgZm9yIChTdHJpbmcgdCA6IGwpIHsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKHQpOworICAgICAgfQorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lU3VwZXJDbGFzcy9yZXBsYWNlR2VuZXJpY3NJbnNpZGUvYmVmb3JlL1N1cGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lU3VwZXJDbGFzcy9yZXBsYWNlR2VuZXJpY3NJbnNpZGUvYmVmb3JlL1N1cGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjEyMjliNQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVTdXBlckNsYXNzL3JlcGxhY2VHZW5lcmljc0luc2lkZS9iZWZvcmUvU3VwZXIuamF2YQpAQCAtMCwwICsxLDIyIEBACitpbXBvcnQgamF2YS51dGlsLio7CisKK2NsYXNzIFN1cGVyPFQ+IHsKKyAgTGlzdDxUPiBsOworCisgIFN1cGVyKCkgeworICAgIFNldDxUPiBzID0gbmV3IEhhc2hTZXQ8VD4oKTsKKyAgICBmb3IgKFQgdCA6IHMpIHsKKyAgICAgIFN5c3RlbS5vdXQucHJpbnRsbih0KTsKKyAgICB9CisgIH0KKworICB2b2lkIGZvbyhUIHQpIHsKKyAgICBTeXN0ZW0ub3V0LnByaW50bG4odCk7CisgIH0KKworICB2b2lkIGJhcigpIHsKKyAgICBmb3IgKFQgdCA6IGwpIHsKKyAgICAgIFN5c3RlbS5vdXQucHJpbnRsbih0KTsKKyAgICB9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lU3VwZXJDbGFzcy9yZXBsYWNlR2VuZXJpY3NJbnNpZGUvYmVmb3JlL1Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVTdXBlckNsYXNzL3JlcGxhY2VHZW5lcmljc0luc2lkZS9iZWZvcmUvVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNjMzZmM2QKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lU3VwZXJDbGFzcy9yZXBsYWNlR2VuZXJpY3NJbnNpZGUvYmVmb3JlL1Rlc3QuamF2YQpAQCAtMCwwICsxLDIgQEAKK2NsYXNzIFRlc3QgZXh0ZW5kcyBTdXBlcjxTdHJpbmc+eworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVTdXBlckNsYXNzL3NpbXBsZS9hZnRlci9Vc2FnZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVN1cGVyQ2xhc3Mvc2ltcGxlL2FmdGVyL1VzYWdlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTNiOWExNQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVTdXBlckNsYXNzL3NpbXBsZS9hZnRlci9Vc2FnZS5qYXZhCkBAIC0wLDAgKzEsNyBAQAoraW1wb3J0IHAuVGVzdDsKKworY2xhc3MgVXNhZ2UgeworICB2b2lkIGJhcihUZXN0IHMpIHsKKyAgICBzLmZvbygpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVN1cGVyQ2xhc3Mvc2ltcGxlL2FmdGVyL3AvVGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVN1cGVyQ2xhc3Mvc2ltcGxlL2FmdGVyL3AvVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjliYzRkODgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lU3VwZXJDbGFzcy9zaW1wbGUvYWZ0ZXIvcC9UZXN0LmphdmEKQEAgLTAsMCArMSw3IEBACitwYWNrYWdlIHA7CisKK3B1YmxpYyBjbGFzcyBUZXN0IHsKKyAgICBwdWJsaWMgdm9pZCBmb28oKSB7CisgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIkhlbGxvIik7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVTdXBlckNsYXNzL3NpbXBsZS9hZnRlci9wMS90LnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVTdXBlckNsYXNzL3NpbXBsZS9hZnRlci9wMS90LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNjlkZTI5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVN1cGVyQ2xhc3Mvc2ltcGxlL2FmdGVyL3AxL3QudHh0CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lU3VwZXJDbGFzcy9zaW1wbGUvYmVmb3JlL1VzYWdlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lU3VwZXJDbGFzcy9zaW1wbGUvYmVmb3JlL1VzYWdlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGYxZWZiOAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVTdXBlckNsYXNzL3NpbXBsZS9iZWZvcmUvVXNhZ2UuamF2YQpAQCAtMCwwICsxLDYgQEAKK2ltcG9ydCBwMS4qOworY2xhc3MgVXNhZ2UgeworICB2b2lkIGJhcihTdXBlciBzKSB7CisgICAgcy5mb28oKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVTdXBlckNsYXNzL3NpbXBsZS9iZWZvcmUvcC9UZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lU3VwZXJDbGFzcy9zaW1wbGUvYmVmb3JlL3AvVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjliZDQ4ZDIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lU3VwZXJDbGFzcy9zaW1wbGUvYmVmb3JlL3AvVGVzdC5qYXZhCkBAIC0wLDAgKzEsMyBAQAorcGFja2FnZSBwOworaW1wb3J0IHAxLio7CitwdWJsaWMgY2xhc3MgVGVzdCBleHRlbmRzIFN1cGVyIHt9IApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVTdXBlckNsYXNzL3NpbXBsZS9iZWZvcmUvcDEvU3VwZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVTdXBlckNsYXNzL3NpbXBsZS9iZWZvcmUvcDEvU3VwZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYzJhYWNmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVN1cGVyQ2xhc3Mvc2ltcGxlL2JlZm9yZS9wMS9TdXBlci5qYXZhCkBAIC0wLDAgKzEsNiBAQAorcGFja2FnZSBwMTsKK3B1YmxpYyBjbGFzcyBTdXBlciB7CisgICBwdWJsaWMgdm9pZCBmb28oKSB7CisgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiSGVsbG8iKTsKKyAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lU3VwZXJDbGFzcy9zaW1wbGUvYmVmb3JlL3AxL3QudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVN1cGVyQ2xhc3Mvc2ltcGxlL2JlZm9yZS9wMS90LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNjlkZTI5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVN1cGVyQ2xhc3Mvc2ltcGxlL2JlZm9yZS9wMS90LnR4dApkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVN1cGVyQ2xhc3Mvc2ltcGxlR2VuZXJpY3MvYWZ0ZXIvVXNhZ2UuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVTdXBlckNsYXNzL3NpbXBsZUdlbmVyaWNzL2FmdGVyL1VzYWdlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDU4NmZhYgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVTdXBlckNsYXNzL3NpbXBsZUdlbmVyaWNzL2FmdGVyL1VzYWdlLmphdmEKQEAgLTAsMCArMSw3IEBACitpbXBvcnQgcC5UZXN0OworCitjbGFzcyBVc2FnZSB7CisgIHZvaWQgYmFyKFRlc3QgcykgeworICAgIHMuZm9vKG51bGwpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVN1cGVyQ2xhc3Mvc2ltcGxlR2VuZXJpY3MvYWZ0ZXIvcC9UZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lU3VwZXJDbGFzcy9zaW1wbGVHZW5lcmljcy9hZnRlci9wL1Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNDNiOGU2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVN1cGVyQ2xhc3Mvc2ltcGxlR2VuZXJpY3MvYWZ0ZXIvcC9UZXN0LmphdmEKQEAgLTAsMCArMSw3IEBACitwYWNrYWdlIHA7CisKK3B1YmxpYyBjbGFzcyBUZXN0IHsKKyAgICBwdWJsaWMgdm9pZCBmb28oU3RyaW5nIHQpIHsKKyAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiSGVsbG8iKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVN1cGVyQ2xhc3Mvc2ltcGxlR2VuZXJpY3MvYWZ0ZXIvcDEvdC50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lU3VwZXJDbGFzcy9zaW1wbGVHZW5lcmljcy9hZnRlci9wMS90LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNjlkZTI5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVN1cGVyQ2xhc3Mvc2ltcGxlR2VuZXJpY3MvYWZ0ZXIvcDEvdC50eHQKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVTdXBlckNsYXNzL3NpbXBsZUdlbmVyaWNzL2JlZm9yZS9Vc2FnZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVN1cGVyQ2xhc3Mvc2ltcGxlR2VuZXJpY3MvYmVmb3JlL1VzYWdlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmRmYzM5YwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVTdXBlckNsYXNzL3NpbXBsZUdlbmVyaWNzL2JlZm9yZS9Vc2FnZS5qYXZhCkBAIC0wLDAgKzEsNiBAQAoraW1wb3J0IHAxLio7CitjbGFzcyBVc2FnZSB7CisgIHZvaWQgYmFyKFN1cGVyPFN0cmluZz4gcykgeworICAgIHMuZm9vKG51bGwpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVN1cGVyQ2xhc3Mvc2ltcGxlR2VuZXJpY3MvYmVmb3JlL3AvVGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVN1cGVyQ2xhc3Mvc2ltcGxlR2VuZXJpY3MvYmVmb3JlL3AvVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI1YzhjMGYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lU3VwZXJDbGFzcy9zaW1wbGVHZW5lcmljcy9iZWZvcmUvcC9UZXN0LmphdmEKQEAgLTAsMCArMSwzIEBACitwYWNrYWdlIHA7CitpbXBvcnQgcDEuKjsKK3B1YmxpYyBjbGFzcyBUZXN0IGV4dGVuZHMgU3VwZXI8U3RyaW5nPiB7fSAKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lU3VwZXJDbGFzcy9zaW1wbGVHZW5lcmljcy9iZWZvcmUvcDEvU3VwZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVTdXBlckNsYXNzL3NpbXBsZUdlbmVyaWNzL2JlZm9yZS9wMS9TdXBlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM1ODBhMDAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lU3VwZXJDbGFzcy9zaW1wbGVHZW5lcmljcy9iZWZvcmUvcDEvU3VwZXIuamF2YQpAQCAtMCwwICsxLDYgQEAKK3BhY2thZ2UgcDE7CitwdWJsaWMgY2xhc3MgU3VwZXI8VD57CisgICBwdWJsaWMgdm9pZCBmb28oVCB0KSB7CisgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiSGVsbG8iKTsKKyAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lU3VwZXJDbGFzcy9zaW1wbGVHZW5lcmljcy9iZWZvcmUvcDEvdC50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lU3VwZXJDbGFzcy9zaW1wbGVHZW5lcmljcy9iZWZvcmUvcDEvdC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTY5ZGUyOQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVTdXBlckNsYXNzL3NpbXBsZUdlbmVyaWNzL2JlZm9yZS9wMS90LnR4dApkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVN1cGVyQ2xhc3Mvc3RhdGljSW1wb3J0L2FmdGVyL1VzYWdlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lU3VwZXJDbGFzcy9zdGF0aWNJbXBvcnQvYWZ0ZXIvVXNhZ2UuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMjZkNzkzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVN1cGVyQ2xhc3Mvc3RhdGljSW1wb3J0L2FmdGVyL1VzYWdlLmphdmEKQEAgLTAsMCArMSw4IEBACitpbXBvcnQgc3RhdGljIHAuVGVzdC5DT05TVEFOVDsKK2ltcG9ydCBzdGF0aWMgcC5UZXN0LnN0YXRNZXRoOworY2xhc3MgVXNhZ2UgeworICBwdWJsaWMgdm9pZCBjb250ZXh0KCkgeworICAgICAgU3RyaW5nIHYgPSBDT05TVEFOVDsKKyAgICAgIHN0YXRNZXRoKCk7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lU3VwZXJDbGFzcy9zdGF0aWNJbXBvcnQvYWZ0ZXIvcC9UZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lU3VwZXJDbGFzcy9zdGF0aWNJbXBvcnQvYWZ0ZXIvcC9UZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGZkMWFmOAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVTdXBlckNsYXNzL3N0YXRpY0ltcG9ydC9hZnRlci9wL1Rlc3QuamF2YQpAQCAtMCwwICsxLDcgQEAKK3BhY2thZ2UgcDsKKworcHVibGljIGNsYXNzIFRlc3QgeworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIENPTlNUQU5UID0gIiI7CisKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgc3RhdE1ldGgoKSB7fQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVTdXBlckNsYXNzL3N0YXRpY0ltcG9ydC9hZnRlci9wMS90LnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVTdXBlckNsYXNzL3N0YXRpY0ltcG9ydC9hZnRlci9wMS90LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNjlkZTI5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVN1cGVyQ2xhc3Mvc3RhdGljSW1wb3J0L2FmdGVyL3AxL3QudHh0CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lU3VwZXJDbGFzcy9zdGF0aWNJbXBvcnQvYmVmb3JlL1VzYWdlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lU3VwZXJDbGFzcy9zdGF0aWNJbXBvcnQvYmVmb3JlL1VzYWdlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGEyZGY0OQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVTdXBlckNsYXNzL3N0YXRpY0ltcG9ydC9iZWZvcmUvVXNhZ2UuamF2YQpAQCAtMCwwICsxLDggQEAKK2ltcG9ydCBzdGF0aWMgcDEuU3VwZXIuQ09OU1RBTlQ7CitpbXBvcnQgc3RhdGljIHAxLlN1cGVyLnN0YXRNZXRoOworY2xhc3MgVXNhZ2UgeworICBwdWJsaWMgdm9pZCBjb250ZXh0KCkgeworICAgICAgU3RyaW5nIHYgPSBDT05TVEFOVDsKKyAgICAgIHN0YXRNZXRoKCk7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lU3VwZXJDbGFzcy9zdGF0aWNJbXBvcnQvYmVmb3JlL3AvVGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVN1cGVyQ2xhc3Mvc3RhdGljSW1wb3J0L2JlZm9yZS9wL1Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45YmQ0OGQyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVN1cGVyQ2xhc3Mvc3RhdGljSW1wb3J0L2JlZm9yZS9wL1Rlc3QuamF2YQpAQCAtMCwwICsxLDMgQEAKK3BhY2thZ2UgcDsKK2ltcG9ydCBwMS4qOworcHVibGljIGNsYXNzIFRlc3QgZXh0ZW5kcyBTdXBlciB7fSAKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lU3VwZXJDbGFzcy9zdGF0aWNJbXBvcnQvYmVmb3JlL3AxL1N1cGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lU3VwZXJDbGFzcy9zdGF0aWNJbXBvcnQvYmVmb3JlL3AxL1N1cGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTNjNDA2NAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVTdXBlckNsYXNzL3N0YXRpY0ltcG9ydC9iZWZvcmUvcDEvU3VwZXIuamF2YQpAQCAtMCwwICsxLDUgQEAKK3BhY2thZ2UgcDE7CitwdWJsaWMgY2xhc3MgU3VwZXIgeworICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgQ09OU1RBTlQgPSAiIjsKKyAgIHB1YmxpYyBzdGF0aWMgdm9pZCBzdGF0TWV0aCgpIHt9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVN1cGVyQ2xhc3Mvc3RhdGljSW1wb3J0L2JlZm9yZS9wMS90LnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVTdXBlckNsYXNzL3N0YXRpY0ltcG9ydC9iZWZvcmUvcDEvdC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTY5ZGUyOQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVTdXBlckNsYXNzL3N0YXRpY0ltcG9ydC9iZWZvcmUvcDEvdC50eHQKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVTdXBlckNsYXNzL3N0YXRpY01lbWJlcnMvYWZ0ZXIvVGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVN1cGVyQ2xhc3Mvc3RhdGljTWVtYmVycy9hZnRlci9UZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDA5YmJlZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVTdXBlckNsYXNzL3N0YXRpY01lbWJlcnMvYWZ0ZXIvVGVzdC5qYXZhCkBAIC0wLDAgKzEsMTIgQEAKK2NsYXNzIFRlc3QgeworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFMgPSAiIjsKKworICAgIHN0YXRpYyB2b2lkIGZvbygpeworICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihTKTsKKyAgICB9CisKKyAgICB2b2lkIGJhcigpIHsKKyAgICBTeXN0ZW0ub3V0LnByaW50bG4oVGVzdC5TKTsKKyAgICBUZXN0LmZvbygpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVN1cGVyQ2xhc3Mvc3RhdGljTWVtYmVycy9iZWZvcmUvU3VwZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVTdXBlckNsYXNzL3N0YXRpY01lbWJlcnMvYmVmb3JlL1N1cGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2I4N2QxOAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVTdXBlckNsYXNzL3N0YXRpY01lbWJlcnMvYmVmb3JlL1N1cGVyLmphdmEKQEAgLTAsMCArMSw3IEBACitjbGFzcyBTdXBlciB7CisgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBTID0gIiI7CisKKyAgIHN0YXRpYyB2b2lkIGZvbygpeworICAgICAgU3lzdGVtLm91dC5wcmludGxuKFMpOworICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVTdXBlckNsYXNzL3N0YXRpY01lbWJlcnMvYmVmb3JlL1Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVTdXBlckNsYXNzL3N0YXRpY01lbWJlcnMvYmVmb3JlL1Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYjQ0MzJmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVN1cGVyQ2xhc3Mvc3RhdGljTWVtYmVycy9iZWZvcmUvVGVzdC5qYXZhCkBAIC0wLDAgKzEsNiBAQAorY2xhc3MgVGVzdCBleHRlbmRzIFN1cGVyeworICB2b2lkIGJhcigpIHsKKyAgICBTeXN0ZW0ub3V0LnByaW50bG4oU3VwZXIuUyk7CisgICAgU3VwZXIuZm9vKCk7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lU3VwZXJDbGFzcy9zdXBlckNvbnN0cnVjdG9yV2l0aEZpZWxkSW5pdGlhbGl6YXRpb24vYWZ0ZXIvVGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVN1cGVyQ2xhc3Mvc3VwZXJDb25zdHJ1Y3RvcldpdGhGaWVsZEluaXRpYWxpemF0aW9uL2FmdGVyL1Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mOTUwNzdmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVN1cGVyQ2xhc3Mvc3VwZXJDb25zdHJ1Y3RvcldpdGhGaWVsZEluaXRpYWxpemF0aW9uL2FmdGVyL1Rlc3QuamF2YQpAQCAtMCwwICsxLDcgQEAKK2NsYXNzIFRlc3QgeworICAgIHByaXZhdGUgZmluYWwgU3RyaW5nIGZpZWxkOworCisgICAgVGVzdCgpeworICAgICAgICBmaWVsZCA9ICJ0ZXh0IjsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVN1cGVyQ2xhc3Mvc3VwZXJDb25zdHJ1Y3RvcldpdGhGaWVsZEluaXRpYWxpemF0aW9uL2JlZm9yZS9TdXBlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVN1cGVyQ2xhc3Mvc3VwZXJDb25zdHJ1Y3RvcldpdGhGaWVsZEluaXRpYWxpemF0aW9uL2JlZm9yZS9TdXBlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU4NmI2OWEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lU3VwZXJDbGFzcy9zdXBlckNvbnN0cnVjdG9yV2l0aEZpZWxkSW5pdGlhbGl6YXRpb24vYmVmb3JlL1N1cGVyLmphdmEKQEAgLTAsMCArMSw4IEBACitjbGFzcyBTdXBlciB7CisgIHByaXZhdGUgZmluYWwgU3RyaW5nIGZpZWxkOworCisgIHB1YmxpYyBTdXBlcigpIHsKKyAgICBmaWVsZCA9ICJ0ZXh0IjsKKyAgfQorCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVN1cGVyQ2xhc3Mvc3VwZXJDb25zdHJ1Y3RvcldpdGhGaWVsZEluaXRpYWxpemF0aW9uL2JlZm9yZS9UZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lU3VwZXJDbGFzcy9zdXBlckNvbnN0cnVjdG9yV2l0aEZpZWxkSW5pdGlhbGl6YXRpb24vYmVmb3JlL1Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45OTE0MTRlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVN1cGVyQ2xhc3Mvc3VwZXJDb25zdHJ1Y3RvcldpdGhGaWVsZEluaXRpYWxpemF0aW9uL2JlZm9yZS9UZXN0LmphdmEKQEAgLTAsMCArMSw1IEBACitjbGFzcyBUZXN0IGV4dGVuZHMgU3VwZXJ7CisgIFRlc3QoKXsKKyAgICBzdXBlcigpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVN1cGVyQ2xhc3Mvc3VwZXJDb25zdHJ1Y3RvcldpdGhQYXJhbS9hZnRlci9UZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lU3VwZXJDbGFzcy9zdXBlckNvbnN0cnVjdG9yV2l0aFBhcmFtL2FmdGVyL1Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZDRiYWIzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVN1cGVyQ2xhc3Mvc3VwZXJDb25zdHJ1Y3RvcldpdGhQYXJhbS9hZnRlci9UZXN0LmphdmEKQEAgLTAsMCArMSwxNyBAQAorY2xhc3MgVGVzdCB7CisgICAgU3RyaW5nIHM7CisKKyAgICBUZXN0KFN0cmluZyBzKXsKKyAgICAgICAgaWYgKHMgIT0gbnVsbCkgeworICAgICAgICAgIHRoaXMucyA9IHM7CisgICAgICAgIH0KKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJoZWxsbyIpOworICB9CisKKyAgICB2b2lkIGZvbygpIHsKKyAgICAgIFRlc3QgcyA9IG5ldyBUZXN0KG51bGwpOworICAgICAgcy5iYXIoKTsKKyAgICB9CisKKyAgICB2b2lkIGJhcigpIHt9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVN1cGVyQ2xhc3Mvc3VwZXJDb25zdHJ1Y3RvcldpdGhQYXJhbS9iZWZvcmUvU3VwZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVTdXBlckNsYXNzL3N1cGVyQ29uc3RydWN0b3JXaXRoUGFyYW0vYmVmb3JlL1N1cGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDNlMDVjZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVTdXBlckNsYXNzL3N1cGVyQ29uc3RydWN0b3JXaXRoUGFyYW0vYmVmb3JlL1N1cGVyLmphdmEKQEAgLTAsMCArMSwxNSBAQAorY2xhc3MgU3VwZXIgeworICBTdHJpbmcgczsKKyAgU3VwZXIoU3RyaW5nIHMpIHsKKyAgICBpZiAocyAhPSBudWxsKSB7CisgICAgICB0aGlzLnMgPSBzOworICAgIH0KKyAgfQorCisgIHZvaWQgZm9vKCkgeworICAgIFN1cGVyIHMgPSBuZXcgU3VwZXIobnVsbCk7CisgICAgcy5iYXIoKTsKKyAgfQorCisgIHZvaWQgYmFyKCkge30KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lU3VwZXJDbGFzcy9zdXBlckNvbnN0cnVjdG9yV2l0aFBhcmFtL2JlZm9yZS9UZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lU3VwZXJDbGFzcy9zdXBlckNvbnN0cnVjdG9yV2l0aFBhcmFtL2JlZm9yZS9UZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTIwYWUzNQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVTdXBlckNsYXNzL3N1cGVyQ29uc3RydWN0b3JXaXRoUGFyYW0vYmVmb3JlL1Rlc3QuamF2YQpAQCAtMCwwICsxLDYgQEAKK2NsYXNzIFRlc3QgZXh0ZW5kcyBTdXBlcnsKKyAgVGVzdChTdHJpbmcgcyl7CisgICAgc3VwZXIocyk7CisgICAgU3lzdGVtLm91dC5wcmludGxuKCJoZWxsbyIpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVN1cGVyQ2xhc3Mvc3VwZXJDb25zdHJ1Y3RvcldpdGhSZXR1cm5JbnNpZGUvYWZ0ZXIvVGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVN1cGVyQ2xhc3Mvc3VwZXJDb25zdHJ1Y3RvcldpdGhSZXR1cm5JbnNpZGUvYWZ0ZXIvVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkxZjJmNzcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lU3VwZXJDbGFzcy9zdXBlckNvbnN0cnVjdG9yV2l0aFJldHVybkluc2lkZS9hZnRlci9UZXN0LmphdmEKQEAgLTAsMCArMSwxMyBAQAorY2xhc3MgVGVzdCB7CisgIFRlc3QoU3RyaW5nIHMpeworICAgIHN1cGVyKHMpOworICAgIFN5c3RlbS5vdXQucHJpbnRsbigiaGVsbG8iKTsKKyAgfQorCisgICAgdm9pZCBmb28oKSB7CisgICAgICBUZXN0IHMgPSBuZXcgVGVzdChudWxsKTsKKyAgICAgIHMuYmFyKCk7CisgICAgfQorCisgICAgdm9pZCBiYXIoKSB7fQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVTdXBlckNsYXNzL3N1cGVyQ29uc3RydWN0b3JXaXRoUmV0dXJuSW5zaWRlL2JlZm9yZS9TdXBlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVN1cGVyQ2xhc3Mvc3VwZXJDb25zdHJ1Y3RvcldpdGhSZXR1cm5JbnNpZGUvYmVmb3JlL1N1cGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDVlNDI0OQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVTdXBlckNsYXNzL3N1cGVyQ29uc3RydWN0b3JXaXRoUmV0dXJuSW5zaWRlL2JlZm9yZS9TdXBlci5qYXZhCkBAIC0wLDAgKzEsMTMgQEAKK2NsYXNzIFN1cGVyIHsKKyAgU3VwZXIoU3RyaW5nIHMpIHsKKyAgICBpZiAocyA9PSBudWxsKSByZXR1cm47CisgICAgU3lzdGVtLm91dC5wcmludGxuKCJzOiIgKyBzKTsKKyAgfQorCisgIHZvaWQgZm9vKCkgeworICAgIFN1cGVyIHMgPSBuZXcgU3VwZXIobnVsbCk7CisgICAgcy5iYXIoKTsKKyAgfQorCisgIHZvaWQgYmFyKCkge30KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lU3VwZXJDbGFzcy9zdXBlckNvbnN0cnVjdG9yV2l0aFJldHVybkluc2lkZS9iZWZvcmUvVGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVN1cGVyQ2xhc3Mvc3VwZXJDb25zdHJ1Y3RvcldpdGhSZXR1cm5JbnNpZGUvYmVmb3JlL1Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMWU3MjkzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVN1cGVyQ2xhc3Mvc3VwZXJDb25zdHJ1Y3RvcldpdGhSZXR1cm5JbnNpZGUvYmVmb3JlL1Rlc3QuamF2YQpAQCAtMCwwICsxLDcgQEAKK2NsYXNzIFRlc3QgZXh0ZW5kcyBTdXBlcnsKKyAgVGVzdChTdHJpbmcgcyl7CisgICAgc3VwZXIocyk7CisgICAgU3lzdGVtLm91dC5wcmludGxuKCJoZWxsbyIpOworICB9CisKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lU3VwZXJDbGFzcy9zdXBlclJlZmVyZW5jZS9hZnRlci9UZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lU3VwZXJDbGFzcy9zdXBlclJlZmVyZW5jZS9hZnRlci9UZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODg3MTBlNQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVTdXBlckNsYXNzL3N1cGVyUmVmZXJlbmNlL2FmdGVyL1Rlc3QuamF2YQpAQCAtMCwwICsxLDcgQEAKK2NsYXNzIFRlc3QgeworICBwdWJsaWMgdm9pZCBjb250ZXh0KCkgeworICAgIG1ldGhvZCgpOworICB9CisKKyAgICBwdWJsaWMgdm9pZCBtZXRob2QoKSB7fQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVTdXBlckNsYXNzL3N1cGVyUmVmZXJlbmNlL2JlZm9yZS9TdXBlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVN1cGVyQ2xhc3Mvc3VwZXJSZWZlcmVuY2UvYmVmb3JlL1N1cGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmIwMzU5YQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVTdXBlckNsYXNzL3N1cGVyUmVmZXJlbmNlL2JlZm9yZS9TdXBlci5qYXZhCkBAIC0wLDAgKzEsMyBAQAorY2xhc3MgU3VwZXIgeworICAgcHVibGljIHZvaWQgbWV0aG9kKCkge30KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lU3VwZXJDbGFzcy9zdXBlclJlZmVyZW5jZS9iZWZvcmUvVGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVN1cGVyQ2xhc3Mvc3VwZXJSZWZlcmVuY2UvYmVmb3JlL1Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jODFiNzIwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVN1cGVyQ2xhc3Mvc3VwZXJSZWZlcmVuY2UvYmVmb3JlL1Rlc3QuamF2YQpAQCAtMCwwICsxLDUgQEAKK2NsYXNzIFRlc3QgZXh0ZW5kcyBTdXBlcnsKKyAgcHVibGljIHZvaWQgY29udGV4dCgpIHsKKyAgICBzdXBlci5tZXRob2QoKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVUb0Fub255bW91c0NsYXNzL0FycmF5SW5pdGlhbGl6ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVUb0Fub255bW91c0NsYXNzL0FycmF5SW5pdGlhbGl6ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MzAzZWM0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVRvQW5vbnltb3VzQ2xhc3MvQXJyYXlJbml0aWFsaXplci5qYXZhCkBAIC0wLDAgKzEsMTEgQEAKK2NsYXNzIEEgeworICAgIHB1YmxpYyB2b2lkIHRlc3QoKSB7CisgICAgICAgIElubmVyW10gYiA9IG5ldyBJbm5lcltdIHsgbmV3IElubmVyKCkgfTsKKyAgICB9CisKKyAgICBwcml2YXRlIGNsYXNzIDxjYXJldD5Jbm5lciB7CisgICAgICAgIHB1YmxpYyBTdHJpbmcgdG9TdHJpbmcoKSB7CisgICAgICAgICAgICByZXR1cm4gIkEiOworICAgICAgICB9CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVUb0Fub255bW91c0NsYXNzL0FycmF5SW5pdGlhbGl6ZXIuamF2YS5hZnRlciBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVUb0Fub255bW91c0NsYXNzL0FycmF5SW5pdGlhbGl6ZXIuamF2YS5hZnRlcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mOGY0YzBiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVRvQW5vbnltb3VzQ2xhc3MvQXJyYXlJbml0aWFsaXplci5qYXZhLmFmdGVyCkBAIC0wLDAgKzEsMTAgQEAKK2NsYXNzIEEgeworICAgIHB1YmxpYyB2b2lkIHRlc3QoKSB7CisgICAgICAgIE9iamVjdFtdIGIgPSBuZXcgT2JqZWN0W10ge25ldyBPYmplY3QoKSB7CisgICAgICAgICAgICBwdWJsaWMgU3RyaW5nIHRvU3RyaW5nKCkgeworICAgICAgICAgICAgICAgIHJldHVybiAiQSI7CisgICAgICAgICAgICB9CisgICAgICAgIH19OworICAgIH0KKworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVUb0Fub255bW91c0NsYXNzL0FycmF5VHlwZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVRvQW5vbnltb3VzQ2xhc3MvQXJyYXlUeXBlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTZjOTQzNAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVUb0Fub255bW91c0NsYXNzL0FycmF5VHlwZS5qYXZhCkBAIC0wLDAgKzEsMTIgQEAKK2NsYXNzIEEgeworICAgIHB1YmxpYyB2b2lkIHRlc3QoKSB7CisgICAgICAgIElubmVyW10gYiA9IG5ldyBJbm5lclsxXTsKKyAgICAgICAgYiBbMF0gPSBuZXcgSW5uZXIoKTsKKyAgICB9CisKKyAgICBwcml2YXRlIGNsYXNzIDxjYXJldD5Jbm5lciB7CisgICAgICAgIHB1YmxpYyBTdHJpbmcgdG9TdHJpbmcoKSB7CisgICAgICAgICAgICByZXR1cm4gIkEiOworICAgICAgICB9CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVUb0Fub255bW91c0NsYXNzL0FycmF5VHlwZS5qYXZhLmFmdGVyIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVRvQW5vbnltb3VzQ2xhc3MvQXJyYXlUeXBlLmphdmEuYWZ0ZXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDFiMGZmOQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVUb0Fub255bW91c0NsYXNzL0FycmF5VHlwZS5qYXZhLmFmdGVyCkBAIC0wLDAgKzEsMTEgQEAKK2NsYXNzIEEgeworICAgIHB1YmxpYyB2b2lkIHRlc3QoKSB7CisgICAgICAgIE9iamVjdFtdIGIgPSBuZXcgT2JqZWN0WzFdOworICAgICAgICBiIFswXSA9IG5ldyBPYmplY3QoKSB7CisgICAgICAgICAgICBwdWJsaWMgU3RyaW5nIHRvU3RyaW5nKCkgeworICAgICAgICAgICAgICAgIHJldHVybiAiQSI7CisgICAgICAgICAgICB9CisgICAgICAgIH07CisgICAgfQorCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVRvQW5vbnltb3VzQ2xhc3MvQXJyYXlUeXBlV2l0aEdlbmVyaWNzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lVG9Bbm9ueW1vdXNDbGFzcy9BcnJheVR5cGVXaXRoR2VuZXJpY3MuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYTEyM2RlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVRvQW5vbnltb3VzQ2xhc3MvQXJyYXlUeXBlV2l0aEdlbmVyaWNzLmphdmEKQEAgLTAsMCArMSwxNCBAQAoraW1wb3J0IGphdmEudXRpbC4qOworCitjbGFzcyBBIHsKKyAgICBwdWJsaWMgdm9pZCB0ZXN0KCkgeworICAgICAgICBJbm5lcjxTdHJpbmc+W10gYiA9IG5ldyBJbm5lcjxTdHJpbmc+WzFdOworICAgICAgICBiIFswXSA9IG5ldyBJbm5lcjxTdHJpbmc+KCk7CisgICAgfQorCisgICAgcHJpdmF0ZSBjbGFzcyA8Y2FyZXQ+SW5uZXI8VD4gaW1wbGVtZW50cyBDb21wYXJhdG9yPFQ+IHsKKyAgICAgICAgcHVibGljIGludCBjb21wYXJlKFQgdDEsIFQgdDIpIHsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVUb0Fub255bW91c0NsYXNzL0FycmF5VHlwZVdpdGhHZW5lcmljcy5qYXZhLmFmdGVyIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVRvQW5vbnltb3VzQ2xhc3MvQXJyYXlUeXBlV2l0aEdlbmVyaWNzLmphdmEuYWZ0ZXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTQyZTFlYQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVUb0Fub255bW91c0NsYXNzL0FycmF5VHlwZVdpdGhHZW5lcmljcy5qYXZhLmFmdGVyCkBAIC0wLDAgKzEsMTMgQEAKK2ltcG9ydCBqYXZhLnV0aWwuKjsKKworY2xhc3MgQSB7CisgICAgcHVibGljIHZvaWQgdGVzdCgpIHsKKyAgICAgICAgQ29tcGFyYXRvcjxTdHJpbmc+W10gYiA9IG5ldyBDb21wYXJhdG9yWzFdOworICAgICAgICBiIFswXSA9IG5ldyBDb21wYXJhdG9yPFN0cmluZz4oKSB7CisgICAgICAgICAgICBwdWJsaWMgaW50IGNvbXBhcmUoU3RyaW5nIHQxLCBTdHJpbmcgdDIpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKyAgICB9CisKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lVG9Bbm9ueW1vdXNDbGFzcy9CcmFjZXMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVUb0Fub255bW91c0NsYXNzL0JyYWNlcy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZjM2VkZGIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lVG9Bbm9ueW1vdXNDbGFzcy9CcmFjZXMuamF2YQpAQCAtMCwwICsxLDI2IEBACitwdWJsaWMgY2xhc3MgRGVtbyB7CisKKyAgICBzdGF0aWMgY2xhc3MgTXlQYXJlbnQgeworICAgICAgICBwcml2YXRlIGZpbmFsIFN0cmluZyB2YWx1ZTsKKworICAgICAgICBNeVBhcmVudChTdHJpbmcgdmFsdWUpIHsKKyAgICAgICAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHN0YXRpYyBjbGFzcyBNeUM8Y2FyZXQ+aGlsZCBleHRlbmRzIE15UGFyZW50IHsKKyAgICAgICAgTXlDaGlsZChTdHJpbmcgdmFsdWUpIHsKKyAgICAgICAgICAgIHN1cGVyKHZhbHVlKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKKworICAgICAgICBTdHJpbmcgdmFsdWUgPSAic29tZXRoaW5nIjsKKyAgICAgICAgZmluYWwgTXlQYXJlbnQgcDsKKyAgICAgICAgaWYgKHRydWUpCisgICAgICAgICAgICBwID0gbmV3IE15Q2hpbGQodmFsdWUpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBwID0gbmV3IE15UGFyZW50KCJ2YWx1ZSIpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lVG9Bbm9ueW1vdXNDbGFzcy9CcmFjZXMuamF2YS5hZnRlciBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVUb0Fub255bW91c0NsYXNzL0JyYWNlcy5qYXZhLmFmdGVyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhhMmQzOWUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lVG9Bbm9ueW1vdXNDbGFzcy9CcmFjZXMuamF2YS5hZnRlcgpAQCAtMCwwICsxLDIyIEBACitwdWJsaWMgY2xhc3MgRGVtbyB7CisKKyAgICBzdGF0aWMgY2xhc3MgTXlQYXJlbnQgeworICAgICAgICBwcml2YXRlIGZpbmFsIFN0cmluZyB2YWx1ZTsKKworICAgICAgICBNeVBhcmVudChTdHJpbmcgdmFsdWUpIHsKKyAgICAgICAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKKworICAgICAgICBTdHJpbmcgdmFsdWUgPSAic29tZXRoaW5nIjsKKyAgICAgICAgZmluYWwgTXlQYXJlbnQgcDsKKyAgICAgICAgaWYgKHRydWUpIHsKKyAgICAgICAgICAgIGZpbmFsIFN0cmluZyB2YWx1ZTEgPSB2YWx1ZTsKKyAgICAgICAgICAgIHAgPSBuZXcgTXlQYXJlbnQodmFsdWUxKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgICAgICBwID0gbmV3IE15UGFyZW50KCJ2YWx1ZSIpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lVG9Bbm9ueW1vdXNDbGFzcy9DYW5CZUludm9rZWRPblJlZmVyZW5jZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVRvQW5vbnltb3VzQ2xhc3MvQ2FuQmVJbnZva2VkT25SZWZlcmVuY2UuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40OTYwZjE5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVRvQW5vbnltb3VzQ2xhc3MvQ2FuQmVJbnZva2VkT25SZWZlcmVuY2UuamF2YQpAQCAtMCwwICsxLDcgQEAKK3B1YmxpYyBjbGFzcyBTaW1wbGUge30KKworY2xhc3MgVXNhZ2UgeworICB2b2lkIGZvbygpIHsKKyAgICBTdHJpbmcgcyA9IG5ldyBTaTxjYXJldD5tcGxlKCkudG9TdHJpbmcoKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVUb0Fub255bW91c0NsYXNzL0NhbkJlSW52b2tlZE9uUmVmZXJlbmNlMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVRvQW5vbnltb3VzQ2xhc3MvQ2FuQmVJbnZva2VkT25SZWZlcmVuY2UxLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDhjZTIxMAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVUb0Fub255bW91c0NsYXNzL0NhbkJlSW52b2tlZE9uUmVmZXJlbmNlMS5qYXZhCkBAIC0wLDAgKzEsMTEgQEAKK3B1YmxpYyBjbGFzcyBTaW1wbGUgaW1wbGVtZW50cyBSdW5uYWJsZSB7CisgIHB1YmxpYyB2b2lkIHJ1bigpe30KK30KKworY2xhc3MgVXNhZ2UgeworICB2b2lkIGZvbygpIHsKKyAgICBiYXIobmV3IFNpPGNhcmV0Pm1wbGUoKSk7CisgIH0KKworICB2b2lkIGJhcihSdW5uYWJsZSByKXt9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVRvQW5vbnltb3VzQ2xhc3MvQ2FuQmVJbnZva2VkT25SZWZlcmVuY2VTdWJzdGl0dXRpb24uamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVUb0Fub255bW91c0NsYXNzL0NhbkJlSW52b2tlZE9uUmVmZXJlbmNlU3Vic3RpdHV0aW9uLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDkxMTkxNgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVUb0Fub255bW91c0NsYXNzL0NhbkJlSW52b2tlZE9uUmVmZXJlbmNlU3Vic3RpdHV0aW9uLmphdmEKQEAgLTAsMCArMSwxMSBAQAorcHVibGljIGNsYXNzIFNpbXBsZTxUPiBpbXBsZW1lbnRzIENvbXBhcmFibGU8VD4geworICBwdWJsaWMgaW50IGNvbXBhcmVUbyhUIG8pe30KK30KKworY2xhc3MgVXNhZ2UgeworICB2b2lkIGZvbygpIHsKKyAgICBiYXIobmV3IFNpPGNhcmV0Pm1wbGU8U3RyaW5nPigpKTsKKyAgfQorCisgIHZvaWQgYmFyKENvbXBhcmFibGU8U3RyaW5nPi4uLiByKXt9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVRvQW5vbnltb3VzQ2xhc3MvQ2FuQmVJbnZva2VkT25SZWZlcmVuY2VTdWJzdGl0dXRpb24xLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lVG9Bbm9ueW1vdXNDbGFzcy9DYW5CZUludm9rZWRPblJlZmVyZW5jZVN1YnN0aXR1dGlvbjEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYzAyMGUzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVRvQW5vbnltb3VzQ2xhc3MvQ2FuQmVJbnZva2VkT25SZWZlcmVuY2VTdWJzdGl0dXRpb24xLmphdmEKQEAgLTAsMCArMSwxMSBAQAorcHVibGljIGNsYXNzIFNpbXBsZTxUPiBpbXBsZW1lbnRzIENvbXBhcmFibGU8VD4geworICBwdWJsaWMgaW50IGNvbXBhcmVUbyhUIG8pe30KK30KKworY2xhc3MgVXNhZ2U8Uz4geworICB2b2lkIGZvbygpIHsKKyAgICBiYXIobmV3IFNpPGNhcmV0Pm1wbGU8Uz4oKSk7CisgIH0KKworICB2b2lkIGJhcihDb21wYXJhYmxlPFM+Li4uIHIpe30KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lVG9Bbm9ueW1vdXNDbGFzcy9DYW5CZUludm9rZWRPblJlZmVyZW5jZVN5bmNTdGF0ZW1lbnQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVUb0Fub255bW91c0NsYXNzL0NhbkJlSW52b2tlZE9uUmVmZXJlbmNlU3luY1N0YXRlbWVudC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJlMGIzNzgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lVG9Bbm9ueW1vdXNDbGFzcy9DYW5CZUludm9rZWRPblJlZmVyZW5jZVN5bmNTdGF0ZW1lbnQuamF2YQpAQCAtMCwwICsxLDkgQEAKK3B1YmxpYyBjbGFzcyBTaW1wbGUge30KKworY2xhc3MgVXNhZ2UgeworICB2b2lkIGZvbygpIHsKKyAgICBzeW5jaHJvbml6ZWQgKG5ldyBTaTxjYXJldD5tcGxlKCkpIHsKKyAgICAgIC8vZG9zbXRoCisgICAgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVRvQW5vbnltb3VzQ2xhc3MvQ2FuQmVJbnZva2VkT25SZWZlcmVuY2VWYXJhcmdzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lVG9Bbm9ueW1vdXNDbGFzcy9DYW5CZUludm9rZWRPblJlZmVyZW5jZVZhcmFyZ3MuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZTJiZmEyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVRvQW5vbnltb3VzQ2xhc3MvQ2FuQmVJbnZva2VkT25SZWZlcmVuY2VWYXJhcmdzLmphdmEKQEAgLTAsMCArMSwxMSBAQAorcHVibGljIGNsYXNzIFNpbXBsZSBpbXBsZW1lbnRzIFJ1bm5hYmxlIHsKKyAgcHVibGljIHZvaWQgcnVuKCl7fQorfQorCitjbGFzcyBVc2FnZSB7CisgIHZvaWQgZm9vKCkgeworICAgIGJhcihuZXcgU2k8Y2FyZXQ+bXBsZSgpKTsKKyAgfQorCisgIHZvaWQgYmFyKFJ1bm5hYmxlLi4uIHIpe30KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lVG9Bbm9ueW1vdXNDbGFzcy9DYW50QmVJbnZva2VkT25SZWZlcmVuY2UuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVUb0Fub255bW91c0NsYXNzL0NhbnRCZUludm9rZWRPblJlZmVyZW5jZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY2ZmQ0ZDRiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVRvQW5vbnltb3VzQ2xhc3MvQ2FudEJlSW52b2tlZE9uUmVmZXJlbmNlLmphdmEKQEAgLTAsMCArMSw3IEBACitwdWJsaWMgY2xhc3MgU2ltcGxlIHt9CisKK2NsYXNzIFVzYWdlIHsKKyAgdm9pZCBmb28oKSB7CisgICAgU2ltcGxlIHMgPSBuZXcgU2k8Y2FyZXQ+bXBsZSgpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVRvQW5vbnltb3VzQ2xhc3MvQ2FudEJlSW52b2tlZE9uUmVmZXJlbmNlMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVRvQW5vbnltb3VzQ2xhc3MvQ2FudEJlSW52b2tlZE9uUmVmZXJlbmNlMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAxMGQ0NGEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lVG9Bbm9ueW1vdXNDbGFzcy9DYW50QmVJbnZva2VkT25SZWZlcmVuY2UxLmphdmEKQEAgLTAsMCArMSwxMSBAQAorcHVibGljIGNsYXNzIFNpbXBsZSBpbXBsZW1lbnRzIFJ1bm5hYmxlIHsKKyAgcHVibGljIHZvaWQgcnVuKCl7fQorfQorCitjbGFzcyBVc2FnZSB7CisgIHZvaWQgZm9vKCkgeworICAgIGJhcihuZXcgU2k8Y2FyZXQ+bXBsZSgpKTsKKyAgfQorCisgIHZvaWQgYmFyKFNpbXBsZSBzKXt9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVRvQW5vbnltb3VzQ2xhc3MvQ2FudEJlSW52b2tlZE9uUmVmZXJlbmNlUmV0dXJuU3RhdGVtZW50LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lVG9Bbm9ueW1vdXNDbGFzcy9DYW50QmVJbnZva2VkT25SZWZlcmVuY2VSZXR1cm5TdGF0ZW1lbnQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZWE0NjVhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVRvQW5vbnltb3VzQ2xhc3MvQ2FudEJlSW52b2tlZE9uUmVmZXJlbmNlUmV0dXJuU3RhdGVtZW50LmphdmEKQEAgLTAsMCArMSw3IEBACitwdWJsaWMgY2xhc3MgU2ltcGxlIHt9CisKK2NsYXNzIFVzYWdlIHsKKyAgU2ltcGxlIGZvbygpIHsKKyAgICByZXR1cm4gbmV3IFNpPGNhcmV0Pm1wbGUoKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVUb0Fub255bW91c0NsYXNzL0NoYWluZWRDb25zdHJ1Y3RvcnMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVUb0Fub255bW91c0NsYXNzL0NoYWluZWRDb25zdHJ1Y3RvcnMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zOGQwNmI4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVRvQW5vbnltb3VzQ2xhc3MvQ2hhaW5lZENvbnN0cnVjdG9ycy5qYXZhCkBAIC0wLDAgKzEsMTcgQEAKK2NsYXNzIEEgeworICAgIHByaXZhdGUgT2JqZWN0IGIgPSBuZXcgTXlFeGNlcHRpb24oInciKTsKKworICAgIHByaXZhdGUgY2xhc3MgPGNhcmV0Pk15RXhjZXB0aW9uIGV4dGVuZHMgRXhjZXB0aW9uIHsKKyAgICAgICAgcHVibGljIE15RXhjZXB0aW9uKFN0cmluZyBtc2cpIHsKKyAgICAgICAgICAgIHRoaXMobmV3IFRocm93YWJsZSgpLCBtc2cpOworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIE15RXhjZXB0aW9uKFRocm93YWJsZSB0LCBTdHJpbmcgbXNnKSB7CisgICAgICAgICAgICBzdXBlcihtc2csIHQpOworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIFN0cmluZyBnZXRNZXNzYWdlKCkgeworICAgICAgICAgICAgcmV0dXJuICJxIjsKKyAgICAgICAgfQorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lVG9Bbm9ueW1vdXNDbGFzcy9DaGFpbmVkQ29uc3RydWN0b3JzLmphdmEuYWZ0ZXIgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lVG9Bbm9ueW1vdXNDbGFzcy9DaGFpbmVkQ29uc3RydWN0b3JzLmphdmEuYWZ0ZXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjU4ZTcwMQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVUb0Fub255bW91c0NsYXNzL0NoYWluZWRDb25zdHJ1Y3RvcnMuamF2YS5hZnRlcgpAQCAtMCwwICsxLDggQEAKK2NsYXNzIEEgeworICAgIHByaXZhdGUgT2JqZWN0IGIgPSBuZXcgRXhjZXB0aW9uKCJ3IiwgbmV3IFRocm93YWJsZSgpKSB7CisgICAgICAgIHB1YmxpYyBTdHJpbmcgZ2V0TWVzc2FnZSgpIHsKKyAgICAgICAgICAgIHJldHVybiAicSI7CisgICAgICAgIH0KKyAgICB9OworCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVRvQW5vbnltb3VzQ2xhc3MvQ2hhaW5lZFZhcmFyZ0NvbnN0cnVjdG9ycy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVRvQW5vbnltb3VzQ2xhc3MvQ2hhaW5lZFZhcmFyZ0NvbnN0cnVjdG9ycy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE5OTI0OTcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lVG9Bbm9ueW1vdXNDbGFzcy9DaGFpbmVkVmFyYXJnQ29uc3RydWN0b3JzLmphdmEKQEAgLTAsMCArMSwxNiBAQAorY2xhc3MgQSB7CisgIHByaXZhdGUgT2JqZWN0IGIgPSBuZXcgTXlFeGNlcHRpb24oInciKTsKKworICBwcml2YXRlIGNsYXNzIDxjYXJldD5NeUV4Y2VwdGlvbiBpbXBsZW1lbnRzIFJ1bm5hYmxlIHsKKyAgICBwdWJsaWMgTXlFeGNlcHRpb24oU3RyaW5nLi4ubXNnKXsKKyAgICAgIHRoaXMobmV3IFRocm93YWJsZSgpLCBtc2dbMF0pOworICAgIH0KKworICAgIHB1YmxpYyBNeUV4Y2VwdGlvbihUaHJvd2FibGUgdCwgU3RyaW5nIG1zZykKKyAgICB7CisgICAgICBTeXN0ZW0ub3V0LnByaW50bG4obXNnKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBydW4oKXt9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lVG9Bbm9ueW1vdXNDbGFzcy9DaGFpbmVkVmFyYXJnQ29uc3RydWN0b3JzLmphdmEuYWZ0ZXIgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lVG9Bbm9ueW1vdXNDbGFzcy9DaGFpbmVkVmFyYXJnQ29uc3RydWN0b3JzLmphdmEuYWZ0ZXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTkzZGFjYwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVUb0Fub255bW91c0NsYXNzL0NoYWluZWRWYXJhcmdDb25zdHJ1Y3RvcnMuamF2YS5hZnRlcgpAQCAtMCwwICsxLDEwIEBACitjbGFzcyBBIHsKKyAgcHJpdmF0ZSBPYmplY3QgYiA9IG5ldyBSdW5uYWJsZSgpIHsKKyAgICAgIHsKKyAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4obmV3IFN0cmluZ1tdeyJ3In1bMF0pOworICAgICAgfQorCisgICAgICBwdWJsaWMgdm9pZCBydW4oKXt9CisgIH07CisKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lVG9Bbm9ueW1vdXNDbGFzcy9DaGFuZ2VUb1N1cGVyVHlwZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVRvQW5vbnltb3VzQ2xhc3MvQ2hhbmdlVG9TdXBlclR5cGUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45OWIwNzU0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVRvQW5vbnltb3VzQ2xhc3MvQ2hhbmdlVG9TdXBlclR5cGUuamF2YQpAQCAtMCwwICsxLDkgQEAKK2NsYXNzIEEgeworICAgIHByaXZhdGUgSW5uZXIgYiA9IG5ldyBJbm5lcigpOworCisgICAgcHJpdmF0ZSBjbGFzcyA8Y2FyZXQ+SW5uZXIgeworICAgICAgICBwdWJsaWMgU3RyaW5nIHRvU3RyaW5nKCkgeworICAgICAgICAgICAgcmV0dXJuICJBIjsKKyAgICAgICAgfQorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lVG9Bbm9ueW1vdXNDbGFzcy9DaGFuZ2VUb1N1cGVyVHlwZS5qYXZhLmFmdGVyIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVRvQW5vbnltb3VzQ2xhc3MvQ2hhbmdlVG9TdXBlclR5cGUuamF2YS5hZnRlcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kN2U4NzI4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVRvQW5vbnltb3VzQ2xhc3MvQ2hhbmdlVG9TdXBlclR5cGUuamF2YS5hZnRlcgpAQCAtMCwwICsxLDggQEAKK2NsYXNzIEEgeworICAgIHByaXZhdGUgT2JqZWN0IGIgPSBuZXcgT2JqZWN0KCkgeworICAgICAgICBwdWJsaWMgU3RyaW5nIHRvU3RyaW5nKCkgeworICAgICAgICAgICAgcmV0dXJuICJBIjsKKyAgICAgICAgfQorICAgIH07CisgICAgCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVRvQW5vbnltb3VzQ2xhc3MvQ2xhc3NJbml0aWFsaXplci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVRvQW5vbnltb3VzQ2xhc3MvQ2xhc3NJbml0aWFsaXplci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlhYzE3YjMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lVG9Bbm9ueW1vdXNDbGFzcy9DbGFzc0luaXRpYWxpemVyLmphdmEKQEAgLTAsMCArMSwxMyBAQAorY2xhc3MgQSB7CisgICAgcHJpdmF0ZSBPYmplY3QgYiA9IG5ldyBJbm5lcigpOworCisgICAgcHJpdmF0ZSBjbGFzcyA8Y2FyZXQ+SW5uZXIgeworICAgICAgICB7CisgICAgICAgICAgICAvLyBjbGFzcyBpbml0aWFsaXplcgorICAgICAgICB9CisKKyAgICAgICAgcHVibGljIFN0cmluZyB0b1N0cmluZygpIHsKKyAgICAgICAgICAgIHJldHVybiAiQSI7CisgICAgICAgIH0KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVRvQW5vbnltb3VzQ2xhc3MvQ2xhc3NJbml0aWFsaXplci5qYXZhLmFmdGVyIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVRvQW5vbnltb3VzQ2xhc3MvQ2xhc3NJbml0aWFsaXplci5qYXZhLmFmdGVyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIwOGJiODEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lVG9Bbm9ueW1vdXNDbGFzcy9DbGFzc0luaXRpYWxpemVyLmphdmEuYWZ0ZXIKQEAgLTAsMCArMSwxMiBAQAorY2xhc3MgQSB7CisgICAgcHJpdmF0ZSBPYmplY3QgYiA9IG5ldyBPYmplY3QoKSB7CisgICAgICAgIHsKKyAgICAgICAgICAgIC8vIGNsYXNzIGluaXRpYWxpemVyCisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgU3RyaW5nIHRvU3RyaW5nKCkgeworICAgICAgICAgICAgcmV0dXJuICJBIjsKKyAgICAgICAgfQorICAgIH07CisKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lVG9Bbm9ueW1vdXNDbGFzcy9Db25mbGljdEluYWNjZXNzaWJsZU91dGVyRmllbGQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVUb0Fub255bW91c0NsYXNzL0NvbmZsaWN0SW5hY2Nlc3NpYmxlT3V0ZXJGaWVsZC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRhOTk4ZGQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lVG9Bbm9ueW1vdXNDbGFzcy9Db25mbGljdEluYWNjZXNzaWJsZU91dGVyRmllbGQuamF2YQpAQCAtMCwwICsxLDE3IEBACitwdWJsaWMgY2xhc3MgUXVhbGlmeUlubmVyVGVzdCB7CisgICAgcHVibGljIGNsYXNzIEMyVXNlciB7CisgICAgICAgIHB1YmxpYyB2b2lkIHRlc3QoKSB7CisgICAgICAgICAgICBDMi5DMklubmVyIGlubmVyID0gbmV3IEMyLkMySW5uZXIoKTsKKyAgICAgICAgfQorICAgIH0KK30KKworY2xhc3MgQzIgeworICAgIHByaXZhdGUgc3RhdGljIGludCBhOworCisgICAgcHVibGljIHN0YXRpYyBjbGFzcyA8Y2FyZXQ+QzJJbm5lciB7CisgICAgICAgIHB1YmxpYyB2b2lkIGRvU3R1ZmYoKSB7CisgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oYSk7CisgICAgICAgIH0KKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lVG9Bbm9ueW1vdXNDbGFzcy9Db25zdHJ1Y3Rvci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVRvQW5vbnltb3VzQ2xhc3MvQ29uc3RydWN0b3IuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMTU0ZDU3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVRvQW5vbnltb3VzQ2xhc3MvQ29uc3RydWN0b3IuamF2YQpAQCAtMCwwICsxLDEzIEBACitjbGFzcyBBIHsKKyAgICBwcml2YXRlIE9iamVjdCBiID0gbmV3IE15RXhjZXB0aW9uKCk7CisKKyAgICBwcml2YXRlIGNsYXNzIDxjYXJldD5NeUV4Y2VwdGlvbiBleHRlbmRzIEV4Y2VwdGlvbiB7CisgICAgICAgIHB1YmxpYyBNeUV4Y2VwdGlvbigpIHsKKyAgICAgICAgICAgIHN1cGVyKCJ3Iik7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgU3RyaW5nIGdldE1lc3NhZ2UoKSB7CisgICAgICAgICAgICByZXR1cm4gInEiOworICAgICAgICB9CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVUb0Fub255bW91c0NsYXNzL0NvbnN0cnVjdG9yLmphdmEuYWZ0ZXIgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lVG9Bbm9ueW1vdXNDbGFzcy9Db25zdHJ1Y3Rvci5qYXZhLmFmdGVyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNhNGUzZDkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lVG9Bbm9ueW1vdXNDbGFzcy9Db25zdHJ1Y3Rvci5qYXZhLmFmdGVyCkBAIC0wLDAgKzEsOCBAQAorY2xhc3MgQSB7CisgICAgcHJpdmF0ZSBPYmplY3QgYiA9IG5ldyBFeGNlcHRpb24oInciKSB7CisgICAgICAgIHB1YmxpYyBTdHJpbmcgZ2V0TWVzc2FnZSgpIHsKKyAgICAgICAgICAgIHJldHVybiAicSI7CisgICAgICAgIH0KKyAgICB9OworCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVRvQW5vbnltb3VzQ2xhc3MvQ29uc3RydWN0b3JBcmd1bWVudEluRXhwcmVzc2lvbi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVRvQW5vbnltb3VzQ2xhc3MvQ29uc3RydWN0b3JBcmd1bWVudEluRXhwcmVzc2lvbi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAzY2E5ZTIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lVG9Bbm9ueW1vdXNDbGFzcy9Db25zdHJ1Y3RvckFyZ3VtZW50SW5FeHByZXNzaW9uLmphdmEKQEAgLTAsMCArMSwxNSBAQAorcHVibGljIGNsYXNzIEEgeworICAgIHB1YmxpYyBjbGFzcyA8Y2FyZXQ+SW5uZXIgeworICAgICAgICBwcml2YXRlIGludCBhID0gMDsKKworICAgICAgICBwdWJsaWMgSW5uZXIoaW50IGFyZykgeworICAgICAgICAgICAgaW50IGogPSA1OworICAgICAgICAgICAgd2hpbGUgKGogPCAxMCkgaisrOworICAgICAgICAgICAgYSA9IGFyZyAqIGo7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCB0ZXN0KCkgeworICAgICAgICBJbm5lciBpID0gbmV3IElubmVyKDEpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVUb0Fub255bW91c0NsYXNzL0NvbnN0cnVjdG9yQXJndW1lbnRJbkV4cHJlc3Npb24uamF2YS5hZnRlciBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVUb0Fub255bW91c0NsYXNzL0NvbnN0cnVjdG9yQXJndW1lbnRJbkV4cHJlc3Npb24uamF2YS5hZnRlcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNjcxZjg2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVRvQW5vbnltb3VzQ2xhc3MvQ29uc3RydWN0b3JBcmd1bWVudEluRXhwcmVzc2lvbi5qYXZhLmFmdGVyCkBAIC0wLDAgKzEsMTQgQEAKK3B1YmxpYyBjbGFzcyBBIHsKKworICAgIHB1YmxpYyB2b2lkIHRlc3QoKSB7CisgICAgICAgIE9iamVjdCBpID0gbmV3IE9iamVjdCgpIHsKKyAgICAgICAgICAgIHByaXZhdGUgaW50IGEgPSAwOworCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgaW50IGogPSA1OworICAgICAgICAgICAgICAgIHdoaWxlIChqIDwgMTApIGorKzsKKyAgICAgICAgICAgICAgICBhID0gMSAqIGo7CisgICAgICAgICAgICB9CisgICAgICAgIH07CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVRvQW5vbnltb3VzQ2xhc3MvQ29uc3RydWN0b3JBcmd1bWVudFRvRmllbGQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVUb0Fub255bW91c0NsYXNzL0NvbnN0cnVjdG9yQXJndW1lbnRUb0ZpZWxkLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDU1NTE4YwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVUb0Fub255bW91c0NsYXNzL0NvbnN0cnVjdG9yQXJndW1lbnRUb0ZpZWxkLmphdmEKQEAgLTAsMCArMSwxOSBAQAorcHVibGljIGNsYXNzIEEgeworICAgIHB1YmxpYyBjbGFzcyA8Y2FyZXQ+SW5uZXIgaW1wbGVtZW50cyBSdW5uYWJsZSB7CisgICAgICAgIHByaXZhdGUgZmluYWwgaW50IGM7CisKKyAgICAgICAgcHVibGljIElubmVyKGludCBhcmcpIHsKKyAgICAgICAgICAgIGMgPSBhcmc7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgdm9pZCBydW4oKSB7CisgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oYyk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCB0ZXN0KCkgeworICAgICAgICBpbnQgYyA9IDA7CisgICAgICAgIElubmVyIGkgPSBuZXcgSW5uZXIoMSk7CisgICAgICAgIG5ldyBUaHJlYWQoaSkuc3RhcnQoKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lVG9Bbm9ueW1vdXNDbGFzcy9Db25zdHJ1Y3RvckFyZ3VtZW50VG9GaWVsZC5qYXZhLmFmdGVyIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVRvQW5vbnltb3VzQ2xhc3MvQ29uc3RydWN0b3JBcmd1bWVudFRvRmllbGQuamF2YS5hZnRlcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xODU1NmY3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVRvQW5vbnltb3VzQ2xhc3MvQ29uc3RydWN0b3JBcmd1bWVudFRvRmllbGQuamF2YS5hZnRlcgpAQCAtMCwwICsxLDE0IEBACitwdWJsaWMgY2xhc3MgQSB7CisKKyAgICBwdWJsaWMgdm9pZCB0ZXN0KCkgeworICAgICAgICBpbnQgYyA9IDA7CisgICAgICAgIFJ1bm5hYmxlIGkgPSBuZXcgUnVubmFibGUoKSB7CisgICAgICAgICAgICBwcml2YXRlIGZpbmFsIGludCBjID0gMTsKKworICAgICAgICAgICAgcHVibGljIHZvaWQgcnVuKCkgeworICAgICAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihjKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKyAgICAgICAgbmV3IFRocmVhZChpKS5zdGFydCgpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVUb0Fub255bW91c0NsYXNzL0NvbnN0cnVjdG9yVG9JbnN0YW5jZUluaXRpYWxpemVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lVG9Bbm9ueW1vdXNDbGFzcy9Db25zdHJ1Y3RvclRvSW5zdGFuY2VJbml0aWFsaXplci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMwMjBjYTIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lVG9Bbm9ueW1vdXNDbGFzcy9Db25zdHJ1Y3RvclRvSW5zdGFuY2VJbml0aWFsaXplci5qYXZhCkBAIC0wLDAgKzEsMTUgQEAKK2NsYXNzIEEgeworICAgIHByaXZhdGUgT2JqZWN0IGIgPSBuZXcgSW5uZXIoKTsKKworICAgIHByaXZhdGUgY2xhc3MgPGNhcmV0PklubmVyIHsKKyAgICAgICAgcHVibGljIElubmVyKCkgeworICAgICAgICAgICAgLy8gdGhpcyBkb2VzIHNvbWUgc3R1ZmYKKyAgICAgICAgICAgIGRvU3R1ZmYoKTsKKyAgICAgICAgICAgIC8qIGlzbid0IHRoaXMgaW50ZXJlc3Rpbmc/ICovCisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgU3RyaW5nIGRvU3R1ZmYoKSB7CisgICAgICAgICAgICByZXR1cm4gIkEiOworICAgICAgICB9CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVUb0Fub255bW91c0NsYXNzL0NvbnN0cnVjdG9yVG9JbnN0YW5jZUluaXRpYWxpemVyLmphdmEuYWZ0ZXIgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lVG9Bbm9ueW1vdXNDbGFzcy9Db25zdHJ1Y3RvclRvSW5zdGFuY2VJbml0aWFsaXplci5qYXZhLmFmdGVyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhiNDg0ZDMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lVG9Bbm9ueW1vdXNDbGFzcy9Db25zdHJ1Y3RvclRvSW5zdGFuY2VJbml0aWFsaXplci5qYXZhLmFmdGVyCkBAIC0wLDAgKzEsMTQgQEAKK2NsYXNzIEEgeworICAgIHByaXZhdGUgT2JqZWN0IGIgPSBuZXcgT2JqZWN0KCkgeworICAgICAgICB7CisgICAgICAgICAgICAvLyB0aGlzIGRvZXMgc29tZSBzdHVmZgorICAgICAgICAgICAgZG9TdHVmZigpOworICAgICAgICAgICAgLyogaXNuJ3QgdGhpcyBpbnRlcmVzdGluZz8gKi8KKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgcHVibGljIFN0cmluZyBkb1N0dWZmKCkgeworICAgICAgICAgICAgcmV0dXJuICJBIjsKKyAgICAgICAgfQorICAgIH07CisKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lVG9Bbm9ueW1vdXNDbGFzcy9Db25zdHJ1Y3RvcldpdGhBcmd1bWVudHMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVUb0Fub255bW91c0NsYXNzL0NvbnN0cnVjdG9yV2l0aEFyZ3VtZW50cy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVlYzFiOTAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lVG9Bbm9ueW1vdXNDbGFzcy9Db25zdHJ1Y3RvcldpdGhBcmd1bWVudHMuamF2YQpAQCAtMCwwICsxLDEzIEBACitjbGFzcyBBIHsKKyAgICBwcml2YXRlIE9iamVjdCBiID0gbmV3IE15RXhjZXB0aW9uKCJ3Iik7CisKKyAgICBwcml2YXRlIGNsYXNzIDxjYXJldD5NeUV4Y2VwdGlvbiBleHRlbmRzIEV4Y2VwdGlvbiB7CisgICAgICAgIHB1YmxpYyBNeUV4Y2VwdGlvbihTdHJpbmcgbXNnKSB7CisgICAgICAgICAgICBzdXBlcihtc2cpOworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIFN0cmluZyBnZXRNZXNzYWdlKCkgeworICAgICAgICAgICAgcmV0dXJuICJxIjsKKyAgICAgICAgfQorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lVG9Bbm9ueW1vdXNDbGFzcy9Db25zdHJ1Y3RvcldpdGhBcmd1bWVudHMuamF2YS5hZnRlciBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVUb0Fub255bW91c0NsYXNzL0NvbnN0cnVjdG9yV2l0aEFyZ3VtZW50cy5qYXZhLmFmdGVyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNhNGUzZDkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lVG9Bbm9ueW1vdXNDbGFzcy9Db25zdHJ1Y3RvcldpdGhBcmd1bWVudHMuamF2YS5hZnRlcgpAQCAtMCwwICsxLDggQEAKK2NsYXNzIEEgeworICAgIHByaXZhdGUgT2JqZWN0IGIgPSBuZXcgRXhjZXB0aW9uKCJ3IikgeworICAgICAgICBwdWJsaWMgU3RyaW5nIGdldE1lc3NhZ2UoKSB7CisgICAgICAgICAgICByZXR1cm4gInEiOworICAgICAgICB9CisgICAgfTsKKworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVUb0Fub255bW91c0NsYXNzL0NvbnN0cnVjdG9yV2l0aEFyZ3VtZW50c0luRXhwcmVzc2lvbi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVRvQW5vbnltb3VzQ2xhc3MvQ29uc3RydWN0b3JXaXRoQXJndW1lbnRzSW5FeHByZXNzaW9uLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjdmZWFhNwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVUb0Fub255bW91c0NsYXNzL0NvbnN0cnVjdG9yV2l0aEFyZ3VtZW50c0luRXhwcmVzc2lvbi5qYXZhCkBAIC0wLDAgKzEsMTMgQEAKK2NsYXNzIEEgeworICAgIHByaXZhdGUgT2JqZWN0IGIgPSBuZXcgTXlFeGNlcHRpb24oInciKTsKKworICAgIHByaXZhdGUgY2xhc3MgPGNhcmV0Pk15RXhjZXB0aW9uIGV4dGVuZHMgRXhjZXB0aW9uIHsKKyAgICAgICAgcHVibGljIE15RXhjZXB0aW9uKFN0cmluZyBtc2cpIHsKKyAgICAgICAgICAgIHN1cGVyKG1zZy5zdWJzdHJpbmcoMCwgMSkpOworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIFN0cmluZyBnZXRNZXNzYWdlKCkgeworICAgICAgICAgICAgcmV0dXJuICJxIjsKKyAgICAgICAgfQorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lVG9Bbm9ueW1vdXNDbGFzcy9Db25zdHJ1Y3RvcldpdGhBcmd1bWVudHNJbkV4cHJlc3Npb24uamF2YS5hZnRlciBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVUb0Fub255bW91c0NsYXNzL0NvbnN0cnVjdG9yV2l0aEFyZ3VtZW50c0luRXhwcmVzc2lvbi5qYXZhLmFmdGVyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQzZDE2OTA0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVRvQW5vbnltb3VzQ2xhc3MvQ29uc3RydWN0b3JXaXRoQXJndW1lbnRzSW5FeHByZXNzaW9uLmphdmEuYWZ0ZXIKQEAgLTAsMCArMSw4IEBACitjbGFzcyBBIHsKKyAgICBwcml2YXRlIE9iamVjdCBiID0gbmV3IEV4Y2VwdGlvbigidyIuc3Vic3RyaW5nKDAsIDEpKSB7CisgICAgICAgIHB1YmxpYyBTdHJpbmcgZ2V0TWVzc2FnZSgpIHsKKyAgICAgICAgICAgIHJldHVybiAicSI7CisgICAgICAgIH0KKyAgICB9OworCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVRvQW5vbnltb3VzQ2xhc3MvRmllbGQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVUb0Fub255bW91c0NsYXNzL0ZpZWxkLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGJlZmY1MgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVUb0Fub255bW91c0NsYXNzL0ZpZWxkLmphdmEKQEAgLTAsMCArMSwxMiBAQAorY2xhc3MgQSB7CisgICAgcHJpdmF0ZSBPYmplY3QgYiA9IG5ldyBJbm5lcigpOworCisgICAgcHJpdmF0ZSBjbGFzcyA8Y2FyZXQ+SW5uZXIgeworICAgICAgICBwcml2YXRlIGludCBpPTA7CisKKyAgICAgICAgcHVibGljIFN0cmluZyB0b1N0cmluZygpIHsKKyAgICAgICAgICAgIGkrKzsKKyAgICAgICAgICAgIHJldHVybiAiQSI7CisgICAgICAgIH0KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVRvQW5vbnltb3VzQ2xhc3MvRmllbGQuamF2YS5hZnRlciBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVUb0Fub255bW91c0NsYXNzL0ZpZWxkLmphdmEuYWZ0ZXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDkwMDQ2YwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVUb0Fub255bW91c0NsYXNzL0ZpZWxkLmphdmEuYWZ0ZXIKQEAgLTAsMCArMSwxMSBAQAorY2xhc3MgQSB7CisgICAgcHJpdmF0ZSBPYmplY3QgYiA9IG5ldyBPYmplY3QoKSB7CisgICAgICAgIHByaXZhdGUgaW50IGk9MDsKKworICAgICAgICBwdWJsaWMgU3RyaW5nIHRvU3RyaW5nKCkgeworICAgICAgICAgICAgaSsrOworICAgICAgICAgICAgcmV0dXJuICJBIjsKKyAgICAgICAgfQorICAgIH07CisKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lVG9Bbm9ueW1vdXNDbGFzcy9GaWVsZEFzQ29uc3RydWN0b3JQYXJhbWV0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVUb0Fub255bW91c0NsYXNzL0ZpZWxkQXNDb25zdHJ1Y3RvclBhcmFtZXRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI1ZGI5NzEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lVG9Bbm9ueW1vdXNDbGFzcy9GaWVsZEFzQ29uc3RydWN0b3JQYXJhbWV0ZXIuamF2YQpAQCAtMCwwICsxLDE4IEBACitjbGFzcyBQYXJlbnRDdG9yIHsKKyAgICBwdWJsaWMgUGFyZW50Q3RvcihTdHJpbmcgcykgeworICAgIH0KK30KKworY2xhc3MgPGNhcmV0PkNoaWxkQ3RvciBleHRlbmRzIFBhcmVudEN0b3IgeworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBDT05TVCA9ICIiOworCisgICAgcHVibGljIENoaWxkQ3RvcigpIHsKKyAgICAgICAgc3VwZXIoQ09OU1QpOworICAgIH0KK30KKworY2xhc3MgVXNhZ2UgeworICAgIHB1YmxpYyB2b2lkIHRlc3QoKSB7CisgICAgICAgIENoaWxkQ3RvciBjID0gbmV3IENoaWxkQ3RvcigpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lVG9Bbm9ueW1vdXNDbGFzcy9GaWVsZEFzQ29uc3RydWN0b3JQYXJhbWV0ZXIuamF2YS5hZnRlciBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVUb0Fub255bW91c0NsYXNzL0ZpZWxkQXNDb25zdHJ1Y3RvclBhcmFtZXRlci5qYXZhLmFmdGVyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEzYTkzYWYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lVG9Bbm9ueW1vdXNDbGFzcy9GaWVsZEFzQ29uc3RydWN0b3JQYXJhbWV0ZXIuamF2YS5hZnRlcgpAQCAtMCwwICsxLDEyIEBACitjbGFzcyBQYXJlbnRDdG9yIHsKKyAgICBwdWJsaWMgUGFyZW50Q3RvcihTdHJpbmcgcykgeworICAgIH0KK30KKworY2xhc3MgVXNhZ2UgeworICAgIHB1YmxpYyB2b2lkIHRlc3QoKSB7CisgICAgICAgIFBhcmVudEN0b3IgYyA9IG5ldyBQYXJlbnRDdG9yKCIiKSB7CisgICAgICAgICAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgQ09OU1QgPSAiIjsKKyAgICAgICAgfTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVRvQW5vbnltb3VzQ2xhc3MvRmllbGRJbml0aWFsaXplZFdpdGhWYXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVUb0Fub255bW91c0NsYXNzL0ZpZWxkSW5pdGlhbGl6ZWRXaXRoVmFyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWUyYWZkZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVUb0Fub255bW91c0NsYXNzL0ZpZWxkSW5pdGlhbGl6ZWRXaXRoVmFyLmphdmEKQEAgLTAsMCArMSwxOCBAQAorY2xhc3MgQSB7CisgICAgcHVibGljIHZvaWQgZG9UZXN0KCkgeworICAgICAgICBPYmplY3QgYiA9IG5ldyBJbm5lcihuZXcgVGhyb3dhYmxlKCJ0IikpOworICAgIH0KKworICAgIHByaXZhdGUgY2xhc3MgPGNhcmV0PklubmVyIHsKKyAgICAgICAgcHJpdmF0ZSBTdHJpbmcgbXlNZXNzYWdlOworCisgICAgICAgIHB1YmxpYyBJbm5lcihUaHJvd2FibGUgdCkgeworICAgICAgICAgICAgU3RyaW5nIG1zZyA9IHQuZ2V0TWVzc2FnZSgpOworICAgICAgICAgICAgbXlNZXNzYWdlID0gbXNnOworICAgICAgICB9CisgICAgCisgICAgICAgIHB1YmxpYyBTdHJpbmcgdG9TdHJpbmcoKSB7CisgICAgICAgICAgICByZXR1cm4gIkEiOworICAgICAgICB9CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVUb0Fub255bW91c0NsYXNzL0ZpZWxkSW5pdGlhbGl6ZWRXaXRoVmFyLmphdmEuYWZ0ZXIgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lVG9Bbm9ueW1vdXNDbGFzcy9GaWVsZEluaXRpYWxpemVkV2l0aFZhci5qYXZhLmFmdGVyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJmZDU2OWY4NwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVUb0Fub255bW91c0NsYXNzL0ZpZWxkSW5pdGlhbGl6ZWRXaXRoVmFyLmphdmEuYWZ0ZXIKQEAgLTAsMCArMSwxOCBAQAorY2xhc3MgQSB7CisgICAgcHVibGljIHZvaWQgZG9UZXN0KCkgeworICAgICAgICBmaW5hbCBUaHJvd2FibGUgdCA9IG5ldyBUaHJvd2FibGUoInQiKTsKKyAgICAgICAgT2JqZWN0IGIgPSBuZXcgT2JqZWN0KCkgeworICAgICAgICAgICAgcHJpdmF0ZSBTdHJpbmcgbXlNZXNzYWdlOworCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgU3RyaW5nIG1zZyA9IHQuZ2V0TWVzc2FnZSgpOworICAgICAgICAgICAgICAgIG15TWVzc2FnZSA9IG1zZzsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcHVibGljIFN0cmluZyB0b1N0cmluZygpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gIkEiOworICAgICAgICAgICAgfQorICAgICAgICB9OworICAgIH0KKyAgICAKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lVG9Bbm9ueW1vdXNDbGFzcy9GaWVsZFZzTG9jYWxDb25mbGljdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVRvQW5vbnltb3VzQ2xhc3MvRmllbGRWc0xvY2FsQ29uZmxpY3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kM2UyYjIyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVRvQW5vbnltb3VzQ2xhc3MvRmllbGRWc0xvY2FsQ29uZmxpY3QuamF2YQpAQCAtMCwwICsxLDE5IEBACitjbGFzcyBBIHsKKyAgICBwdWJsaWMgdm9pZCBkb1Rlc3QoKSB7CisgICAgICAgIFRocm93YWJsZSB0ID0gbmV3IFRocm93YWJsZSgicSIpOworICAgICAgICBPYmplY3QgYiA9IG5ldyBJbm5lcihuZXcgVGhyb3dhYmxlKCJ0IikpOworICAgIH0KKworICAgIHByaXZhdGUgY2xhc3MgPGNhcmV0PklubmVyIHsKKyAgICAgICAgcHJpdmF0ZSBTdHJpbmcgbXlNZXNzYWdlOworCisgICAgICAgIHB1YmxpYyBJbm5lcihUaHJvd2FibGUgdCkgeworICAgICAgICAgICAgU3RyaW5nIG1zZyA9IHQuZ2V0TWVzc2FnZSgpOworICAgICAgICAgICAgbXlNZXNzYWdlID0gbXNnOworICAgICAgICB9CisgICAgCisgICAgICAgIHB1YmxpYyBTdHJpbmcgdG9TdHJpbmcoKSB7CisgICAgICAgICAgICByZXR1cm4gIkEiOworICAgICAgICB9CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVUb0Fub255bW91c0NsYXNzL0ZpZWxkVnNMb2NhbENvbmZsaWN0LmphdmEuYWZ0ZXIgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lVG9Bbm9ueW1vdXNDbGFzcy9GaWVsZFZzTG9jYWxDb25mbGljdC5qYXZhLmFmdGVyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUxMWE1Y2MKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lVG9Bbm9ueW1vdXNDbGFzcy9GaWVsZFZzTG9jYWxDb25mbGljdC5qYXZhLmFmdGVyCkBAIC0wLDAgKzEsMTkgQEAKK2NsYXNzIEEgeworICAgIHB1YmxpYyB2b2lkIGRvVGVzdCgpIHsKKyAgICAgICAgVGhyb3dhYmxlIHQgPSBuZXcgVGhyb3dhYmxlKCJxIik7CisgICAgICAgIGZpbmFsIFRocm93YWJsZSB0MSA9IG5ldyBUaHJvd2FibGUoInQiKTsKKyAgICAgICAgT2JqZWN0IGIgPSBuZXcgT2JqZWN0KCkgeworICAgICAgICAgICAgcHJpdmF0ZSBTdHJpbmcgbXlNZXNzYWdlOworCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgU3RyaW5nIG1zZyA9IHQxLmdldE1lc3NhZ2UoKTsKKyAgICAgICAgICAgICAgICBteU1lc3NhZ2UgPSBtc2c7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHB1YmxpYyBTdHJpbmcgdG9TdHJpbmcoKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuICJBIjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKyAgICB9CisgICAgCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVRvQW5vbnltb3VzQ2xhc3MvRmllbGRWc1BhcmFtZXRlckNvbmZsaWN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lVG9Bbm9ueW1vdXNDbGFzcy9GaWVsZFZzUGFyYW1ldGVyQ29uZmxpY3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MzdjNmViCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVRvQW5vbnltb3VzQ2xhc3MvRmllbGRWc1BhcmFtZXRlckNvbmZsaWN0LmphdmEKQEAgLTAsMCArMSwyMCBAQAorY2xhc3MgQSB7CisgICAgcHVibGljIHZvaWQgZG9UZXN0KCkgeworICAgICAgICBPYmplY3QgYiA9IG5ldyBJbm5lcihuZXcgVGhyb3dhYmxlKCJ0IikpOworICAgIH0KKworICAgIHByaXZhdGUgY2xhc3MgPGNhcmV0PklubmVyIHsKKyAgICAgICAgcHJpdmF0ZSBUaHJvd2FibGUgdDsKKyAgICAgICAgcHJpdmF0ZSBTdHJpbmcgbXlNZXNzYWdlOworCisgICAgICAgIHB1YmxpYyBJbm5lcihUaHJvd2FibGUgdCkgeworICAgICAgICAgICAgdGhpcy50ID0gdDsKKyAgICAgICAgICAgIFN0cmluZyBtc2cgPSB0aGlzLnQuZ2V0TWVzc2FnZSgpOworICAgICAgICAgICAgbXlNZXNzYWdlID0gbXNnOworICAgICAgICB9CisgICAgCisgICAgICAgIHB1YmxpYyBTdHJpbmcgdG9TdHJpbmcoKSB7CisgICAgICAgICAgICByZXR1cm4gIkEiOworICAgICAgICB9CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVUb0Fub255bW91c0NsYXNzL0ZpZWxkVnNQYXJhbWV0ZXJDb25mbGljdC5qYXZhLmFmdGVyIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVRvQW5vbnltb3VzQ2xhc3MvRmllbGRWc1BhcmFtZXRlckNvbmZsaWN0LmphdmEuYWZ0ZXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWUzZjA3OQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVUb0Fub255bW91c0NsYXNzL0ZpZWxkVnNQYXJhbWV0ZXJDb25mbGljdC5qYXZhLmFmdGVyCkBAIC0wLDAgKzEsMTkgQEAKK2NsYXNzIEEgeworICAgIHB1YmxpYyB2b2lkIGRvVGVzdCgpIHsKKyAgICAgICAgZmluYWwgVGhyb3dhYmxlIHQxID0gbmV3IFRocm93YWJsZSgidCIpOworICAgICAgICBPYmplY3QgYiA9IG5ldyBPYmplY3QoKSB7CisgICAgICAgICAgICBwcml2YXRlIFRocm93YWJsZSB0ID0gdDE7CisgICAgICAgICAgICBwcml2YXRlIFN0cmluZyBteU1lc3NhZ2U7CisKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBTdHJpbmcgbXNnID0gdGhpcy50LmdldE1lc3NhZ2UoKTsKKyAgICAgICAgICAgICAgICBteU1lc3NhZ2UgPSBtc2c7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHB1YmxpYyBTdHJpbmcgdG9TdHJpbmcoKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuICJBIjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKyAgICB9CisgICAgCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVRvQW5vbnltb3VzQ2xhc3MvR2VuZXJpY3MuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVUb0Fub255bW91c0NsYXNzL0dlbmVyaWNzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjAxMDA0MgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVUb0Fub255bW91c0NsYXNzL0dlbmVyaWNzLmphdmEKQEAgLTAsMCArMSwxMSBAQAoraW1wb3J0IGphdmEudXRpbC4qOworCitjbGFzcyBBIHsKKyAgICBwcml2YXRlIElubmVyIGIgPSBuZXcgSW5uZXIoKTsKKworICAgIHByaXZhdGUgY2xhc3MgPGNhcmV0PklubmVyIGltcGxlbWVudHMgQ29tcGFyYXRvcjxTdHJpbmc+IHsKKyAgICAgICAgcHVibGljIGludCBjb21wYXJlKFN0cmluZyBzMSwgU3RyaW5nIHMyKSB7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lVG9Bbm9ueW1vdXNDbGFzcy9HZW5lcmljcy5qYXZhLmFmdGVyIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVRvQW5vbnltb3VzQ2xhc3MvR2VuZXJpY3MuamF2YS5hZnRlcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xOGYzN2Y4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVRvQW5vbnltb3VzQ2xhc3MvR2VuZXJpY3MuamF2YS5hZnRlcgpAQCAtMCwwICsxLDEwIEBACitpbXBvcnQgamF2YS51dGlsLio7CisKK2NsYXNzIEEgeworICAgIHByaXZhdGUgQ29tcGFyYXRvcjxTdHJpbmc+IGIgPSBuZXcgQ29tcGFyYXRvcjxTdHJpbmc+KCkgeworICAgICAgICBwdWJsaWMgaW50IGNvbXBhcmUoU3RyaW5nIHMxLCBTdHJpbmcgczIpIHsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgfTsKKworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVUb0Fub255bW91c0NsYXNzL0dlbmVyaWNzRmllbGREZWNsYXJhdGlvbi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVRvQW5vbnltb3VzQ2xhc3MvR2VuZXJpY3NGaWVsZERlY2xhcmF0aW9uLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmQ4NmVhNgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVUb0Fub255bW91c0NsYXNzL0dlbmVyaWNzRmllbGREZWNsYXJhdGlvbi5qYXZhCkBAIC0wLDAgKzEsMTMgQEAKK3B1YmxpYyBjbGFzcyA8Y2FyZXQ+QUdlbmVyaWM8VD4geworICAgIHByaXZhdGUgVCBteVQ7CisgICAgcHVibGljIFQgZ2V0VCgpIHsKKyAgICAgCXJldHVybiBteVQ7CisgICAgfQorICAgIHB1YmxpYyB2b2lkIHNldFQoVCB0KSB7CisgICAgICAgIG15VCA9IHQ7CisgICAgfQorfQorCitjbGFzcyBDbGllbnQgeworICBwcml2YXRlIEFHZW5lcmljPFN0cmluZz4gbXlHZW4gPSBuZXcgQUdlbmVyaWM8U3RyaW5nPigpOworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVRvQW5vbnltb3VzQ2xhc3MvR2VuZXJpY3NGaWVsZERlY2xhcmF0aW9uLmphdmEuYWZ0ZXIgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lVG9Bbm9ueW1vdXNDbGFzcy9HZW5lcmljc0ZpZWxkRGVjbGFyYXRpb24uamF2YS5hZnRlcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NTAwYWQ1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVRvQW5vbnltb3VzQ2xhc3MvR2VuZXJpY3NGaWVsZERlY2xhcmF0aW9uLmphdmEuYWZ0ZXIKQEAgLTAsMCArMSwxMyBAQAorY2xhc3MgQ2xpZW50IHsKKyAgcHJpdmF0ZSBPYmplY3QgbXlHZW4gPSBuZXcgT2JqZWN0KCkgeworICAgICAgcHJpdmF0ZSBTdHJpbmcgbXlUOworCisgICAgICBwdWJsaWMgU3RyaW5nIGdldFQoKSB7CisgICAgICAgICAgIHJldHVybiBteVQ7CisgICAgICB9CisKKyAgICAgIHB1YmxpYyB2b2lkIHNldFQoU3RyaW5nIHQpIHsKKyAgICAgICAgICBteVQgPSB0OworICAgICAgfQorICB9OworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVRvQW5vbnltb3VzQ2xhc3MvR2VuZXJpY3NJblR5cGVQYXJhbWV0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVUb0Fub255bW91c0NsYXNzL0dlbmVyaWNzSW5UeXBlUGFyYW1ldGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDZlNWE0ZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVUb0Fub255bW91c0NsYXNzL0dlbmVyaWNzSW5UeXBlUGFyYW1ldGVyLmphdmEKQEAgLTAsMCArMSwxNyBAQAoraW1wb3J0IGphdmEudXRpbC4qOworCitjbGFzcyBBIHsKKyAgICBwcml2YXRlIEFHZW5lcmljPENvbGxlY3Rpb24+IGIgPSBuZXcgQUdlbmVyaWM8Q29sbGVjdGlvbj4oKTsKKworICAgIHByaXZhdGUgY2xhc3MgPGNhcmV0PkFHZW5lcmljPFQ+IHsKKyAgICAgICAgcHJpdmF0ZSBUIG15VjsKKworICAgICAgICBwdWJsaWMgPFggZXh0ZW5kcyBUPiB2b2lkIHBhck1ldGhBKFggcCkgeworICAgICAgICAgICAgIG15ViA9IHA7CisgICAgICAgIH0KKworICAgICAgICBwcml2YXRlIGNsYXNzIElubmVyPFkgZXh0ZW5kcyBUPiB7CisgICAgCSAgICBwcml2YXRlIFkgbXlZOworICAgICAgICB9CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVUb0Fub255bW91c0NsYXNzL0dlbmVyaWNzSW5UeXBlUGFyYW1ldGVyLmphdmEuYWZ0ZXIgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lVG9Bbm9ueW1vdXNDbGFzcy9HZW5lcmljc0luVHlwZVBhcmFtZXRlci5qYXZhLmFmdGVyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRjNDBhOTgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lVG9Bbm9ueW1vdXNDbGFzcy9HZW5lcmljc0luVHlwZVBhcmFtZXRlci5qYXZhLmFmdGVyCkBAIC0wLDAgKzEsMTYgQEAKK2ltcG9ydCBqYXZhLnV0aWwuKjsKKworY2xhc3MgQSB7CisgICAgcHJpdmF0ZSBPYmplY3QgYiA9IG5ldyBPYmplY3QoKSB7CisgICAgICAgIHByaXZhdGUgQ29sbGVjdGlvbiBteVY7CisKKyAgICAgICAgcHVibGljIDxYIGV4dGVuZHMgQ29sbGVjdGlvbj4gdm9pZCBwYXJNZXRoQShYIHApIHsKKyAgICAgICAgICAgICBteVYgPSBwOworICAgICAgICB9CisKKyAgICAgICAgcHJpdmF0ZSBjbGFzcyBJbm5lcjxZIGV4dGVuZHMgQ29sbGVjdGlvbj4geworICAgIAkgICAgcHJpdmF0ZSBZIG15WTsKKyAgICAgICAgfQorICAgIH07CisKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lVG9Bbm9ueW1vdXNDbGFzcy9HZW5lcmljc1Jhd1R5cGUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVUb0Fub255bW91c0NsYXNzL0dlbmVyaWNzUmF3VHlwZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU2YWJhNjkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lVG9Bbm9ueW1vdXNDbGFzcy9HZW5lcmljc1Jhd1R5cGUuamF2YQpAQCAtMCwwICsxLDExIEBACitpbXBvcnQgamF2YS51dGlsLio7CisKK2NsYXNzIEEgeworICAgIHByaXZhdGUgSW5uZXIgYiA9IG5ldyBJbm5lcigpOworCisgICAgcHJpdmF0ZSBjbGFzcyA8Y2FyZXQ+SW5uZXI8VD4gaW1wbGVtZW50cyBDb21wYXJhdG9yPFQ+IHsKKyAgICAgICAgcHVibGljIGludCBjb21wYXJlKFQgczEsIFQgczIpIHsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVUb0Fub255bW91c0NsYXNzL0dlbmVyaWNzUmF3VHlwZS5qYXZhLmFmdGVyIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVRvQW5vbnltb3VzQ2xhc3MvR2VuZXJpY3NSYXdUeXBlLmphdmEuYWZ0ZXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTRhNjc1NgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVUb0Fub255bW91c0NsYXNzL0dlbmVyaWNzUmF3VHlwZS5qYXZhLmFmdGVyCkBAIC0wLDAgKzEsMTAgQEAKK2ltcG9ydCBqYXZhLnV0aWwuKjsKKworY2xhc3MgQSB7CisgICAgcHJpdmF0ZSBDb21wYXJhdG9yIGIgPSBuZXcgQ29tcGFyYXRvcigpIHsKKyAgICAgICAgcHVibGljIGludCBjb21wYXJlKE9iamVjdCBzMSwgT2JqZWN0IHMyKSB7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgIH07CisKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lVG9Bbm9ueW1vdXNDbGFzcy9HZW5lcmljc1N1YnN0aXR1dGUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVUb0Fub255bW91c0NsYXNzL0dlbmVyaWNzU3Vic3RpdHV0ZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkzZWMzODIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lVG9Bbm9ueW1vdXNDbGFzcy9HZW5lcmljc1N1YnN0aXR1dGUuamF2YQpAQCAtMCwwICsxLDExIEBACitpbXBvcnQgamF2YS51dGlsLio7CisKK2NsYXNzIEEgeworICAgIHByaXZhdGUgSW5uZXI8U3RyaW5nPiBiID0gbmV3IElubmVyPFN0cmluZz4oKTsKKworICAgIHByaXZhdGUgY2xhc3MgPGNhcmV0PklubmVyPFQ+IGltcGxlbWVudHMgQ29tcGFyYXRvcjxUPiB7CisgICAgICAgIHB1YmxpYyBpbnQgY29tcGFyZShUIHMxLCBUIHMyKSB7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lVG9Bbm9ueW1vdXNDbGFzcy9HZW5lcmljc1N1YnN0aXR1dGUuamF2YS5hZnRlciBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVUb0Fub255bW91c0NsYXNzL0dlbmVyaWNzU3Vic3RpdHV0ZS5qYXZhLmFmdGVyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE4ZjM3ZjgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lVG9Bbm9ueW1vdXNDbGFzcy9HZW5lcmljc1N1YnN0aXR1dGUuamF2YS5hZnRlcgpAQCAtMCwwICsxLDEwIEBACitpbXBvcnQgamF2YS51dGlsLio7CisKK2NsYXNzIEEgeworICAgIHByaXZhdGUgQ29tcGFyYXRvcjxTdHJpbmc+IGIgPSBuZXcgQ29tcGFyYXRvcjxTdHJpbmc+KCkgeworICAgICAgICBwdWJsaWMgaW50IGNvbXBhcmUoU3RyaW5nIHMxLCBTdHJpbmcgczIpIHsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgfTsKKworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVUb0Fub255bW91c0NsYXNzL0dldENsYXNzQ29uZmxpY3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVUb0Fub255bW91c0NsYXNzL0dldENsYXNzQ29uZmxpY3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNDBkMTA5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVRvQW5vbnltb3VzQ2xhc3MvR2V0Q2xhc3NDb25mbGljdC5qYXZhCkBAIC0wLDAgKzEsMTEgQEAKK2NsYXNzIFNpbXBsZSB7CisgIHZvaWQgZm9vKFNpbXBsZSBzKSB7CisgICAgZmluYWwgQ2xhc3M8PyBleHRlbmRzIFNpbXBsZT4gYUNsYXNzID0gZ2V0Q2xhc3MoKTsKKyAgICBmaW5hbCBDbGFzczw/IGV4dGVuZHMgU2ltcGxlPiBhQ2xhc3MxID0gcy5nZXRDbGFzcygpOworICAgIGZpbmFsIENsYXNzPD8gZXh0ZW5kcyBTdHJpbmc+IG5vbkNvbmZsaWN0U3RyQ2xhc3MgPSAiIi5nZXRDbGFzcygpOworICB9Cit9CisKK2NsYXNzIFVzYWdlIHsKKyAgU2ltcGxlIHMgPSBuZXcgU2ltPGNhcmV0PnBsZSgpOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVUb0Fub255bW91c0NsYXNzL0ltcGxlbWVudHNJbnRlcmZhY2UuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVUb0Fub255bW91c0NsYXNzL0ltcGxlbWVudHNJbnRlcmZhY2UuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZDlkZTExCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVRvQW5vbnltb3VzQ2xhc3MvSW1wbGVtZW50c0ludGVyZmFjZS5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKK2ltcG9ydCBqYXZhLmF3dC5ldmVudC4qOworCitjbGFzcyBBIHsKKyAgICBwcml2YXRlIEFjdGlvbkxpc3RlbmVyIGIgPSBuZXcgSW5uZXIoKTsKKworICAgIHByaXZhdGUgY2xhc3MgPGNhcmV0PklubmVyIGltcGxlbWVudHMgQWN0aW9uTGlzdGVuZXIgeworICAgICAgICBwdWJsaWMgdm9pZCBhY3Rpb25QZXJmb3JtZWQoQWN0aW9uRXZlbnQgZSkgeworICAgICAgICB9CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVUb0Fub255bW91c0NsYXNzL0ltcGxlbWVudHNJbnRlcmZhY2UuamF2YS5hZnRlciBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVUb0Fub255bW91c0NsYXNzL0ltcGxlbWVudHNJbnRlcmZhY2UuamF2YS5hZnRlcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNTliYTJiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVRvQW5vbnltb3VzQ2xhc3MvSW1wbGVtZW50c0ludGVyZmFjZS5qYXZhLmFmdGVyCkBAIC0wLDAgKzEsOSBAQAoraW1wb3J0IGphdmEuYXd0LmV2ZW50Lio7CisKK2NsYXNzIEEgeworICAgIHByaXZhdGUgQWN0aW9uTGlzdGVuZXIgYiA9IG5ldyBBY3Rpb25MaXN0ZW5lcigpIHsKKyAgICAgICAgcHVibGljIHZvaWQgYWN0aW9uUGVyZm9ybWVkKEFjdGlvbkV2ZW50IGUpIHsKKyAgICAgICAgfQorICAgIH07CisKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lVG9Bbm9ueW1vdXNDbGFzcy9JbmxpbmVUaGlzT25seS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVRvQW5vbnltb3VzQ2xhc3MvSW5saW5lVGhpc09ubHkuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNzlhODUyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVRvQW5vbnltb3VzQ2xhc3MvSW5saW5lVGhpc09ubHkuamF2YQpAQCAtMCwwICsxLDEwIEBACitjbGFzcyBBIHsKKyAgICBwcml2YXRlIElubmVyIGIgPSBuZXcgPGNhcmV0PklubmVyKCk7CisgICAgcHJpdmF0ZSBJbm5lciBiMiA9IG5ldyBJbm5lcigpOworCisgICAgcHJpdmF0ZSBjbGFzcyBJbm5lciB7CisgICAgICAgIHB1YmxpYyBTdHJpbmcgdG9TdHJpbmcoKSB7CisgICAgICAgICAgICByZXR1cm4gIkEiOworICAgICAgICB9CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVUb0Fub255bW91c0NsYXNzL0lubGluZVRoaXNPbmx5LmphdmEuYWZ0ZXIgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lVG9Bbm9ueW1vdXNDbGFzcy9JbmxpbmVUaGlzT25seS5qYXZhLmFmdGVyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ5MDNhNjYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lVG9Bbm9ueW1vdXNDbGFzcy9JbmxpbmVUaGlzT25seS5qYXZhLmFmdGVyCkBAIC0wLDAgKzEsMTQgQEAKK2NsYXNzIEEgeworICAgIHByaXZhdGUgSW5uZXIgYiA9IG5ldyBPYmplY3QoKSB7CisgICAgICAgIHB1YmxpYyBTdHJpbmcgdG9TdHJpbmcoKSB7CisgICAgICAgICAgICByZXR1cm4gIkEiOworICAgICAgICB9CisgICAgfTsKKyAgICBwcml2YXRlIElubmVyIGIyID0gbmV3IElubmVyKCk7CisKKyAgICBwcml2YXRlIGNsYXNzIElubmVyIHsKKyAgICAgICAgcHVibGljIFN0cmluZyB0b1N0cmluZygpIHsKKyAgICAgICAgICAgIHJldHVybiAiQSI7CisgICAgICAgIH0KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVRvQW5vbnltb3VzQ2xhc3MvSW5uZXJDbGFzcy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVRvQW5vbnltb3VzQ2xhc3MvSW5uZXJDbGFzcy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU0OGVjMWIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lVG9Bbm9ueW1vdXNDbGFzcy9Jbm5lckNsYXNzLmphdmEKQEAgLTAsMCArMSwxOSBAQAoraW1wb3J0IGphdmEuaW87CisKK2NsYXNzIEEgeworICAgIHB1YmxpYyB2b2lkIHRlc3QoKSB7CisgICAgICAgIElubGluZWQgaSA9IG5ldyBJbmxpbmVkKCk7CisgICAgfQorfQorCitjbGFzcyA8Y2FyZXQ+SW5saW5lZCB7CisgICAgcHVibGljIGNsYXNzIEEgeworICAgIH0KKworICAgIHByaXZhdGUgQSBteUEgPSBuZXcgQSgpOworCisgICAgcHVibGljIFN0cmluZyB0b1N0cmluZygpIHsKKyAgICAgICAgQSBhID0gbmV3IEEoKTsKKyAgICAgICAgcmV0dXJuIGEudG9TdHJpbmcoKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lVG9Bbm9ueW1vdXNDbGFzcy9Jbm5lckNsYXNzLmphdmEuYWZ0ZXIgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lVG9Bbm9ueW1vdXNDbGFzcy9Jbm5lckNsYXNzLmphdmEuYWZ0ZXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTBhNWI1ZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVUb0Fub255bW91c0NsYXNzL0lubmVyQ2xhc3MuamF2YS5hZnRlcgpAQCAtMCwwICsxLDE4IEBACitpbXBvcnQgamF2YS5pbzsKKworY2xhc3MgQSB7CisgICAgcHVibGljIHZvaWQgdGVzdCgpIHsKKyAgICAgICAgT2JqZWN0IGkgPSBuZXcgT2JqZWN0KCkgeworICAgICAgICAgICAgcHVibGljIGNsYXNzIEEgeworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBwcml2YXRlIEEgbXlBID0gbmV3IEEoKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgcHVibGljIFN0cmluZyB0b1N0cmluZygpIHsKKyAgICAgICAgICAgICAgICBBIGEgPSBuZXcgQSgpOworICAgICAgICAgICAgICAgIHJldHVybiBhLnRvU3RyaW5nKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH07CisgICAgfQorfQorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lVG9Bbm9ueW1vdXNDbGFzcy9Mb2NhbENsYXNzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lVG9Bbm9ueW1vdXNDbGFzcy9Mb2NhbENsYXNzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTczY2EwNAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVUb0Fub255bW91c0NsYXNzL0xvY2FsQ2xhc3MuamF2YQpAQCAtMCwwICsxLDExIEBACitjbGFzcyBBIHsKKyAgICBwdWJsaWMgdm9pZCB0ZXN0KCkgeworICAgICAgICBjbGFzcyA8Y2FyZXQ+SW5uZXIgeworICAgICAgICAgICAgcHVibGljIFN0cmluZyB0b1N0cmluZygpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gIkEiOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgT2JqZWN0IGIgPSBuZXcgSW5uZXIoKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVRvQW5vbnltb3VzQ2xhc3MvTG9jYWxDbGFzcy5qYXZhLmFmdGVyIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVRvQW5vbnltb3VzQ2xhc3MvTG9jYWxDbGFzcy5qYXZhLmFmdGVyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUzOWY1YWYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lVG9Bbm9ueW1vdXNDbGFzcy9Mb2NhbENsYXNzLmphdmEuYWZ0ZXIKQEAgLTAsMCArMSwxMCBAQAorY2xhc3MgQSB7CisgICAgcHVibGljIHZvaWQgdGVzdCgpIHsKKyAgICAKKyAgICAgICAgT2JqZWN0IGIgPSBuZXcgT2JqZWN0KCkgeworICAgICAgICAgICAgcHVibGljIFN0cmluZyB0b1N0cmluZygpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gIkEiOworICAgICAgICAgICAgfQorICAgICAgICB9OworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lVG9Bbm9ueW1vdXNDbGFzcy9NZXRob2RDYWxsSW5OZXdFeHByZXNzaW9uLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lVG9Bbm9ueW1vdXNDbGFzcy9NZXRob2RDYWxsSW5OZXdFeHByZXNzaW9uLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTA0NzI0ZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVUb0Fub255bW91c0NsYXNzL01ldGhvZENhbGxJbk5ld0V4cHJlc3Npb24uamF2YQpAQCAtMCwwICsxLDEwIEBACitwdWJsaWMgY2xhc3MgQSB7CisgICAgcHJpdmF0ZSBjbGFzcyA8Y2FyZXQ+SW5uZXIgeworICAgICAgICB2b2lkIGRvVGVzdCgpIHsKKyAgICAgICAgfQorICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHRlc3QoKSB7CisgICAgICAgIG5ldyBJbm5lcigpLmRvVGVzdCgpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lVG9Bbm9ueW1vdXNDbGFzcy9NZXRob2RDYWxsSW5OZXdFeHByZXNzaW9uLmphdmEuYWZ0ZXIgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lVG9Bbm9ueW1vdXNDbGFzcy9NZXRob2RDYWxsSW5OZXdFeHByZXNzaW9uLmphdmEuYWZ0ZXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGRmZTcwNQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVUb0Fub255bW91c0NsYXNzL01ldGhvZENhbGxJbk5ld0V4cHJlc3Npb24uamF2YS5hZnRlcgpAQCAtMCwwICsxLDkgQEAKK3B1YmxpYyBjbGFzcyBBIHsKKworICAgIHB1YmxpYyB2b2lkIHRlc3QoKSB7CisgICAgICAgIG5ldyBPYmplY3QoKSB7CisgICAgICAgICAgICB2b2lkIGRvVGVzdCgpIHsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfS5kb1Rlc3QoKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVRvQW5vbnltb3VzQ2xhc3MvTWV0aG9kQ2FsbEluTmV3RXhwcmVzc2lvbldpdGhQYXJlbnMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVUb0Fub255bW91c0NsYXNzL01ldGhvZENhbGxJbk5ld0V4cHJlc3Npb25XaXRoUGFyZW5zLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGViM2IwOAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVUb0Fub255bW91c0NsYXNzL01ldGhvZENhbGxJbk5ld0V4cHJlc3Npb25XaXRoUGFyZW5zLmphdmEKQEAgLTAsMCArMSwxMCBAQAorcHVibGljIGNsYXNzIEEgeworICAgIHByaXZhdGUgY2xhc3MgPGNhcmV0PklubmVyIHsKKyAgICAgICAgdm9pZCBkb1Rlc3QoKSB7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCB0ZXN0KCkgeworICAgICAgICAobmV3IElubmVyKCkpLmRvVGVzdCgpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lVG9Bbm9ueW1vdXNDbGFzcy9NZXRob2RDYWxsSW5OZXdFeHByZXNzaW9uV2l0aFBhcmVucy5qYXZhLmFmdGVyIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVRvQW5vbnltb3VzQ2xhc3MvTWV0aG9kQ2FsbEluTmV3RXhwcmVzc2lvbldpdGhQYXJlbnMuamF2YS5hZnRlcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MWQxZjM0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVRvQW5vbnltb3VzQ2xhc3MvTWV0aG9kQ2FsbEluTmV3RXhwcmVzc2lvbldpdGhQYXJlbnMuamF2YS5hZnRlcgpAQCAtMCwwICsxLDkgQEAKK3B1YmxpYyBjbGFzcyBBIHsKKworICAgIHB1YmxpYyB2b2lkIHRlc3QoKSB7CisgICAgICAgIChuZXcgT2JqZWN0KCkgeworICAgICAgICAgICAgdm9pZCBkb1Rlc3QoKSB7CisgICAgICAgICAgICB9CisgICAgICAgIH0pLmRvVGVzdCgpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lVG9Bbm9ueW1vdXNDbGFzcy9NZXRob2RVc2FnZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVRvQW5vbnltb3VzQ2xhc3MvTWV0aG9kVXNhZ2UuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MzBhNGY1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVRvQW5vbnltb3VzQ2xhc3MvTWV0aG9kVXNhZ2UuamF2YQpAQCAtMCwwICsxLDEzIEBACitjbGFzcyBBIHsKKyAgICBwcml2YXRlIE9iamVjdCBiID0gbmV3IElubmVyKCk7CisKKyAgICBwcml2YXRlIGNsYXNzIDxjYXJldD5Jbm5lciB7CisgICAgICAgIHB1YmxpYyBTdHJpbmcgdG9TdHJpbmcoKSB7CisgICAgICAgICAgICByZXR1cm4gZ2V0TXlTdHJpbmdSZXByZXNlbnRhdGlvbigpOworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIFN0cmluZyBnZXRNeVN0cmluZ1JlcHJlc2VudGF0aW9uKCkgeworICAgICAgICAgICAgcmV0dXJuICJxIjsKKyAgICAgICAgfQorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lVG9Bbm9ueW1vdXNDbGFzcy9NZXRob2RVc2FnZS5qYXZhLmFmdGVyIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVRvQW5vbnltb3VzQ2xhc3MvTWV0aG9kVXNhZ2UuamF2YS5hZnRlcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNWQ3MDhlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVRvQW5vbnltb3VzQ2xhc3MvTWV0aG9kVXNhZ2UuamF2YS5hZnRlcgpAQCAtMCwwICsxLDEyIEBACitjbGFzcyBBIHsKKyAgICBwcml2YXRlIE9iamVjdCBiID0gbmV3IE9iamVjdCgpIHsKKyAgICAgICAgcHVibGljIFN0cmluZyB0b1N0cmluZygpIHsKKyAgICAgICAgICAgIHJldHVybiBnZXRNeVN0cmluZ1JlcHJlc2VudGF0aW9uKCk7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgU3RyaW5nIGdldE15U3RyaW5nUmVwcmVzZW50YXRpb24oKSB7CisgICAgICAgICAgICByZXR1cm4gInEiOworICAgICAgICB9CisgICAgfTsKKyAgICAKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lVG9Bbm9ueW1vdXNDbGFzcy9NdWx0aXBsZUFzc2lnbm1lbnRzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lVG9Bbm9ueW1vdXNDbGFzcy9NdWx0aXBsZUFzc2lnbm1lbnRzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjcyNWRkNwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVUb0Fub255bW91c0NsYXNzL011bHRpcGxlQXNzaWdubWVudHMuamF2YQpAQCAtMCwwICsxLDIwIEBACitwdWJsaWMgY2xhc3MgV2l0aEN0b3IgeworCXByaXZhdGUgaW50IG15SW50ID0gODsKKwlwcml2YXRlIFN0cmluZyBteVN0cmluZyA9ICJTYXNoeWEiOworCisJcHVibGljIFdpdGhDdG9yKCkgeworCX0KKworCXB1YmxpYyBXaXRoQ3RvcihpbnQgYW5JbnQsIFN0cmluZyBzdHJpbmcpIHsKKwkJaW50IGkgPSAyOworCQlpID0gMzsKKwkJbXlJbnQgPSBpICsgYW5JbnQ7CisJCWludCBqID0gNDsKKwkJaiA9IDU7CisJCW15U3RyaW5nID0gc3RyaW5nLnN1YnN0cmluZyhqKTsKKwl9Cit9CisKK2NsYXNzIFVzYWdlIHsKKyAgcHJpdmF0ZSBXaXRoQ3RvciB3YzEgPSBuZXcgV2l0aDxjYXJldD5DdG9yKDE3LCAiU2EiKTsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lVG9Bbm9ueW1vdXNDbGFzcy9NdWx0aXBsZUFzc2lnbm1lbnRzLmphdmEuYWZ0ZXIgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lVG9Bbm9ueW1vdXNDbGFzcy9NdWx0aXBsZUFzc2lnbm1lbnRzLmphdmEuYWZ0ZXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzc4ODVhOAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVUb0Fub255bW91c0NsYXNzL011bHRpcGxlQXNzaWdubWVudHMuamF2YS5hZnRlcgpAQCAtMCwwICsxLDE1IEBACitjbGFzcyBVc2FnZSB7CisgIHByaXZhdGUgT2JqZWN0IHdjMSA9IG5ldyBPYmplY3QoKSB7CisgICAgICBwcml2YXRlIGludCBteUludCA9IDg7CisgICAgICBwcml2YXRlIFN0cmluZyBteVN0cmluZyA9ICJTYXNoeWEiOworCisgICAgICB7CisgICAgICAgICAgaW50IGkgPSAyOworICAgICAgICAgIGkgPSAzOworICAgICAgICAgIG15SW50ID0gaSArIDE3OworICAgICAgICAgIGludCBqID0gNDsKKyAgICAgICAgICBqID0gNTsKKyAgICAgICAgICBteVN0cmluZyA9ICJTYSIuc3Vic3RyaW5nKGopOworICAgICAgfQorICB9OworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVUb0Fub255bW91c0NsYXNzL011bHRpcGxlQ29uc3RydWN0b3JzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lVG9Bbm9ueW1vdXNDbGFzcy9NdWx0aXBsZUNvbnN0cnVjdG9ycy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBlOGQ2Y2YKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lVG9Bbm9ueW1vdXNDbGFzcy9NdWx0aXBsZUNvbnN0cnVjdG9ycy5qYXZhCkBAIC0wLDAgKzEsMTcgQEAKK2NsYXNzIEEgeworICAgIHByaXZhdGUgT2JqZWN0IGIgPSBuZXcgTXlFeGNlcHRpb24obmV3IFRocm93YWJsZSgpLCAidyIpOworCisgICAgcHJpdmF0ZSBjbGFzcyA8Y2FyZXQ+TXlFeGNlcHRpb24gZXh0ZW5kcyBFeGNlcHRpb24geworICAgICAgICBwdWJsaWMgTXlFeGNlcHRpb24oU3RyaW5nIG1zZykgeworICAgICAgICAgICAgc3VwZXIobXNnKTsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyBNeUV4Y2VwdGlvbihUaHJvd2FibGUgdCwgU3RyaW5nIG1zZykgeworICAgICAgICAgICAgc3VwZXIobXNnLCB0KTsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyBTdHJpbmcgZ2V0TWVzc2FnZSgpIHsKKyAgICAgICAgICAgIHJldHVybiAicSI7CisgICAgICAgIH0KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVRvQW5vbnltb3VzQ2xhc3MvTXVsdGlwbGVDb25zdHJ1Y3RvcnMuamF2YS5hZnRlciBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVUb0Fub255bW91c0NsYXNzL011bHRpcGxlQ29uc3RydWN0b3JzLmphdmEuYWZ0ZXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjU4ZTcwMQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVUb0Fub255bW91c0NsYXNzL011bHRpcGxlQ29uc3RydWN0b3JzLmphdmEuYWZ0ZXIKQEAgLTAsMCArMSw4IEBACitjbGFzcyBBIHsKKyAgICBwcml2YXRlIE9iamVjdCBiID0gbmV3IEV4Y2VwdGlvbigidyIsIG5ldyBUaHJvd2FibGUoKSkgeworICAgICAgICBwdWJsaWMgU3RyaW5nIGdldE1lc3NhZ2UoKSB7CisgICAgICAgICAgICByZXR1cm4gInEiOworICAgICAgICB9CisgICAgfTsKKworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVUb0Fub255bW91c0NsYXNzL011bHRpcGxlR2VuZXJhdGVkVmFycy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVRvQW5vbnltb3VzQ2xhc3MvTXVsdGlwbGVHZW5lcmF0ZWRWYXJzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTU5OGI1ZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVUb0Fub255bW91c0NsYXNzL011bHRpcGxlR2VuZXJhdGVkVmFycy5qYXZhCkBAIC0wLDAgKzEsMjAgQEAKK2NsYXNzIFByaXZhdGVJbml0VXNlciB7CisgICAgICAgIHB1YmxpYyB2b2lkIG1ldGhvZCgpIHsKKyAgICAgICAgICBuZXcgV2l0aFByaXZhdGVJbml0KG5ldyBDdXN0b21UeXBlKCJhIikpOworICAgICAgICAgIG5ldyBXaXRoUHJpdmF0ZUluaXQobmV3IEN1c3RvbVR5cGUoImIiKSk7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgc3RhdGljIGNsYXNzIEN1c3RvbVR5cGUgeworICAgICAgICAgICAgICAgIHB1YmxpYyBDdXN0b21UeXBlKFN0cmluZyBzKSB7CisgICAgICAgICAgICAgICAgfQorICAgICAgICB9Cit9CisKK2NsYXNzIDxjYXJldD5XaXRoUHJpdmF0ZUluaXQgeworICAgICAgICBwdWJsaWMgV2l0aFByaXZhdGVJbml0KFByaXZhdGVJbml0VXNlci5DdXN0b21UeXBlIGN1c3RvbVR5cGUpIHsKKyAgICAgICAgICAgICAgICBwcml2YXRlTWV0aG9kKGN1c3RvbVR5cGUpOworICAgICAgICB9CisKKyAgICAgICAgcHJpdmF0ZSB2b2lkIHByaXZhdGVNZXRob2QoUHJpdmF0ZUluaXRVc2VyLkN1c3RvbVR5cGUgY3VzdG9tVHlwZSkgeworICAgICAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lVG9Bbm9ueW1vdXNDbGFzcy9NdWx0aXBsZUdlbmVyYXRlZFZhcnMuamF2YS5hZnRlciBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVUb0Fub255bW91c0NsYXNzL011bHRpcGxlR2VuZXJhdGVkVmFycy5qYXZhLmFmdGVyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYxMDJkYzQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lVG9Bbm9ueW1vdXNDbGFzcy9NdWx0aXBsZUdlbmVyYXRlZFZhcnMuamF2YS5hZnRlcgpAQCAtMCwwICsxLDI4IEBACitjbGFzcyBQcml2YXRlSW5pdFVzZXIgeworICAgICAgICBwdWJsaWMgdm9pZCBtZXRob2QoKSB7CisgICAgICAgICAgICBmaW5hbCBDdXN0b21UeXBlIGN1c3RvbVR5cGUgPSBuZXcgQ3VzdG9tVHlwZSgiYSIpOworICAgICAgICAgICAgbmV3IE9iamVjdCgpIHsKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHByaXZhdGVNZXRob2QoY3VzdG9tVHlwZSk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgcHJpdmF0ZSB2b2lkIHByaXZhdGVNZXRob2QoQ3VzdG9tVHlwZSBjdXN0b21UeXBlKSB7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfTsKKyAgICAgICAgICAgIGZpbmFsIEN1c3RvbVR5cGUgY3VzdG9tVHlwZTEgPSBuZXcgQ3VzdG9tVHlwZSgiYiIpOworICAgICAgICAgICAgbmV3IE9iamVjdCgpIHsKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHByaXZhdGVNZXRob2QoY3VzdG9tVHlwZTEpOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIHByaXZhdGUgdm9pZCBwcml2YXRlTWV0aG9kKEN1c3RvbVR5cGUgY3VzdG9tVHlwZSkgeworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH07CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgc3RhdGljIGNsYXNzIEN1c3RvbVR5cGUgeworICAgICAgICAgICAgICAgIHB1YmxpYyBDdXN0b21UeXBlKFN0cmluZyBzKSB7CisgICAgICAgICAgICAgICAgfQorICAgICAgICB9Cit9CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVUb0Fub255bW91c0NsYXNzL011bHRpcGxlSW5uZXJDbGFzc2VzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lVG9Bbm9ueW1vdXNDbGFzcy9NdWx0aXBsZUlubmVyQ2xhc3Nlcy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJhYTZjODgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lVG9Bbm9ueW1vdXNDbGFzcy9NdWx0aXBsZUlubmVyQ2xhc3Nlcy5qYXZhCkBAIC0wLDAgKzEsMjEgQEAKK2NsYXNzIEEgeworICAgIGNsYXNzIDxjYXJldD5Jbm5lciB7CisgICAgICAgIHByaXZhdGUgdm9pZCBhKCkgeworICAgICAgICB9CisKKyAgICAgICAgcHJpdmF0ZSB2b2lkIGIoKSB7CisgICAgICAgIH0KKworICAgICAgICBjbGFzcyBJbm5lckEgeworICAgICAgICB9CisKKyAgICAgICAgY2xhc3MgSW5uZXJCIHsKKyAgICAgICAgfQorICAgIH0KK30KKworY2xhc3MgQiB7CisgICAgcHVibGljIHZvaWQgdGVzdCgpIHsKKyAgICAgICAgQS5Jbm5lciBpbm5lciA9IG5ldyBBLklubmVyKCk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVUb0Fub255bW91c0NsYXNzL011bHRpcGxlSW5uZXJDbGFzc2VzLmphdmEuYWZ0ZXIgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lVG9Bbm9ueW1vdXNDbGFzcy9NdWx0aXBsZUlubmVyQ2xhc3Nlcy5qYXZhLmFmdGVyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVkMWU3YzIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lVG9Bbm9ueW1vdXNDbGFzcy9NdWx0aXBsZUlubmVyQ2xhc3Nlcy5qYXZhLmFmdGVyCkBAIC0wLDAgKzEsMjAgQEAKK2NsYXNzIEEgeworfQorCitjbGFzcyBCIHsKKyAgICBwdWJsaWMgdm9pZCB0ZXN0KCkgeworICAgICAgICBPYmplY3QgaW5uZXIgPSBuZXcgT2JqZWN0KCkgeworICAgICAgICAgICAgcHJpdmF0ZSB2b2lkIGEoKSB7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHByaXZhdGUgdm9pZCBiKCkgeworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBjbGFzcyBJbm5lckEgeworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBjbGFzcyBJbm5lckIgeworICAgICAgICAgICAgfQorICAgICAgICB9OworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lVG9Bbm9ueW1vdXNDbGFzcy9OZXdFeHByZXNzaW9uQ29udGV4dC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVRvQW5vbnltb3VzQ2xhc3MvTmV3RXhwcmVzc2lvbkNvbnRleHQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MzZiYTgzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVRvQW5vbnltb3VzQ2xhc3MvTmV3RXhwcmVzc2lvbkNvbnRleHQuamF2YQpAQCAtMCwwICsxLDEzIEBACitjbGFzcyBBIHsKKyAgICBwcml2YXRlIE9iamVjdCBiID0gbmV3IElubmVyKCk7CisgICAgcHJpdmF0ZSBPYmplY3QgYyA9IG5ldyBPYmplY3QoKSB7CisgICAgICAgIHB1YmxpYyB2b2lkIGRvU3R1ZmYoSW5uZXIgaSkgeworICAgICAgICB9CisgICAgfTsKKworICAgIHByaXZhdGUgY2xhc3MgPGNhcmV0PklubmVyIHsKKyAgICAgICAgcHVibGljIFN0cmluZyB0b1N0cmluZygpIHsKKyAgICAgICAgICAgIHJldHVybiAiQSI7CisgICAgICAgIH0KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVRvQW5vbnltb3VzQ2xhc3MvTmV3RXhwcmVzc2lvbkNvbnRleHQuamF2YS5hZnRlciBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVUb0Fub255bW91c0NsYXNzL05ld0V4cHJlc3Npb25Db250ZXh0LmphdmEuYWZ0ZXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTNlOGNhYQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVUb0Fub255bW91c0NsYXNzL05ld0V4cHJlc3Npb25Db250ZXh0LmphdmEuYWZ0ZXIKQEAgLTAsMCArMSwxMiBAQAorY2xhc3MgQSB7CisgICAgcHJpdmF0ZSBPYmplY3QgYiA9IG5ldyBPYmplY3QoKSB7CisgICAgICAgIHB1YmxpYyBTdHJpbmcgdG9TdHJpbmcoKSB7CisgICAgICAgICAgICByZXR1cm4gIkEiOworICAgICAgICB9CisgICAgfTsKKyAgICBwcml2YXRlIE9iamVjdCBjID0gbmV3IE9iamVjdCgpIHsKKyAgICAgICAgcHVibGljIHZvaWQgZG9TdHVmZihPYmplY3QgaSkgeworICAgICAgICB9CisgICAgfTsKKworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVUb0Fub255bW91c0NsYXNzL05vSW5saW5lQWJzdHJhY3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVUb0Fub255bW91c0NsYXNzL05vSW5saW5lQWJzdHJhY3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MjMxMWMxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVRvQW5vbnltb3VzQ2xhc3MvTm9JbmxpbmVBYnN0cmFjdC5qYXZhCkBAIC0wLDAgKzEsOSBAQAorY2xhc3MgQSB7CisgICAgcHJpdmF0ZSBPYmplY3QgYiA9IG5ldyBJbm5lcigpOworCisgICAgcHVibGljIGFic3RyYWN0IGNsYXNzIDxjYXJldD5Jbm5lciB7CisgICAgICAgIHB1YmxpYyBTdHJpbmcgdG9TdHJpbmcoKSB7CisgICAgICAgICAgICByZXR1cm4gIkEiOworICAgICAgICB9CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVUb0Fub255bW91c0NsYXNzL05vSW5saW5lQW5ub3RhdGlvblR5cGUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVUb0Fub255bW91c0NsYXNzL05vSW5saW5lQW5ub3RhdGlvblR5cGUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NDI4N2MzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVRvQW5vbnltb3VzQ2xhc3MvTm9JbmxpbmVBbm5vdGF0aW9uVHlwZS5qYXZhCkBAIC0wLDAgKzEsOSBAQAorY2xhc3MgQSB7CisgICAgQElubmVyCisgICAgcHVibGljIHZvaWQgdGVzdCgpIHsKKyAgICB9CisKK30KKworQGludGVyZmFjZSA8Y2FyZXQ+SW5uZXIgeworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVRvQW5vbnltb3VzQ2xhc3MvTm9JbmxpbmVDYXRjaENsYXVzZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVRvQW5vbnltb3VzQ2xhc3MvTm9JbmxpbmVDYXRjaENsYXVzZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRmOWRlMzUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lVG9Bbm9ueW1vdXNDbGFzcy9Ob0lubGluZUNhdGNoQ2xhdXNlLmphdmEKQEAgLTAsMCArMSwxOCBAQAorY2xhc3MgQSB7CisgICAgcHVibGljIHZvaWQgdGVzdCgpIHsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIHRlc3QyKCk7CisgICAgICAgIH0KKyAgICAgICAgY2F0Y2goSW5uZXIgZXgpIHsKKyAgICAgICAgfQorICAgIH0KKworICAgIHByaXZhdGUgdm9pZCB0ZXN0MigpIHsKKyAgICB9CisKKyAgICBwcml2YXRlIGNsYXNzIDxjYXJldD5Jbm5lciBleHRlbmRzIFJ1bnRpbWVFeGNlcHRpb24geworICAgICAgICBwdWJsaWMgU3RyaW5nIHRvU3RyaW5nKCkgeworICAgICAgICAgICAgcmV0dXJuICJBIjsKKyAgICAgICAgfQorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lVG9Bbm9ueW1vdXNDbGFzcy9Ob0lubGluZUNsYXNzTGl0ZXJhbC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVRvQW5vbnltb3VzQ2xhc3MvTm9JbmxpbmVDbGFzc0xpdGVyYWwuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMGE4MjkzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVRvQW5vbnltb3VzQ2xhc3MvTm9JbmxpbmVDbGFzc0xpdGVyYWwuamF2YQpAQCAtMCwwICsxLDEzIEBACitjbGFzcyBBIHsKKyAgICBwcml2YXRlIE9iamVjdCBiID0gbmV3IElubmVyKCk7CisKKyAgICBwdWJsaWMgdm9pZCB0ZXN0KCkgeworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oSW5uZXIuY2xhc3MuZ2V0TmFtZSgpKTsKKyAgICB9CisKKyAgICBwcml2YXRlIGNsYXNzIDxjYXJldD5Jbm5lciB7CisgICAgICAgIHB1YmxpYyBTdHJpbmcgdG9TdHJpbmcoKSB7CisgICAgICAgICAgICByZXR1cm4gIkEiOworICAgICAgICB9CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVUb0Fub255bW91c0NsYXNzL05vSW5saW5lRW51bS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVRvQW5vbnltb3VzQ2xhc3MvTm9JbmxpbmVFbnVtLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDAwN2QwZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVUb0Fub255bW91c0NsYXNzL05vSW5saW5lRW51bS5qYXZhCkBAIC0wLDAgKzEsOCBAQAorY2xhc3MgQSB7CisgICAgcHVibGljIHZvaWQgdGVzdChJbm5lciBiKSB7CisgICAgfQorfQorCitlbnVtIDxjYXJldD5Jbm5lciB7CisgICAgQSwgQgorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVRvQW5vbnltb3VzQ2xhc3MvTm9JbmxpbmVGaWVsZFVzYWdlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lVG9Bbm9ueW1vdXNDbGFzcy9Ob0lubGluZUZpZWxkVXNhZ2UuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NGQ5NTMyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVRvQW5vbnltb3VzQ2xhc3MvTm9JbmxpbmVGaWVsZFVzYWdlLmphdmEKQEAgLTAsMCArMSwxMyBAQAorY2xhc3MgQSB7CisgICAgcHVibGljIHZvaWQgZigpIHsKKyAgICAgICAgSW5uZXIgaSA9IG5ldyBJbm5lcigpOworICAgICAgICBpLnEgPSAyOworICAgIH0KKworICAgIHByaXZhdGUgY2xhc3MgPGNhcmV0PklubmVyIGltcGxlbWVudHMgUnVubmFibGUgeworICAgICAgICBwdWJsaWMgaW50IHEgPSAxOworCisgICAgICAgIHB1YmxpYyB2b2lkIHJ1bigpIHsKKyAgICAgICAgfQorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lVG9Bbm9ueW1vdXNDbGFzcy9Ob0lubGluZUludGVyZmFjZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVRvQW5vbnltb3VzQ2xhc3MvTm9JbmxpbmVJbnRlcmZhY2UuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NmQxMTRlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVRvQW5vbnltb3VzQ2xhc3MvTm9JbmxpbmVJbnRlcmZhY2UuamF2YQpAQCAtMCwwICsxLDggQEAKK2NsYXNzIEEgeworICAgIHB1YmxpYyB2b2lkIHRlc3QoSW5uZXIgYikgeworICAgIH0KKworICAgIHB1YmxpYyBpbnRlcmZhY2UgPGNhcmV0PklubmVyIHsKKyAgICAgICAgdm9pZCBkb1N0dWZmKCk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVUb0Fub255bW91c0NsYXNzL05vSW5saW5lTGlicmFyeUNsYXNzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lVG9Bbm9ueW1vdXNDbGFzcy9Ob0lubGluZUxpYnJhcnlDbGFzcy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU4NTY2ZGYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lVG9Bbm9ueW1vdXNDbGFzcy9Ob0lubGluZUxpYnJhcnlDbGFzcy5qYXZhCkBAIC0wLDAgKzEsMyBAQAorY2xhc3MgQSB7CisgICAgcHJpdmF0ZSA8Y2FyZXQ+U3RyaW5nIHMgPSBuZXcgU3RyaW5nKCk7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVRvQW5vbnltb3VzQ2xhc3MvTm9JbmxpbmVNZXRob2RVc2FnZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVRvQW5vbnltb3VzQ2xhc3MvTm9JbmxpbmVNZXRob2RVc2FnZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhkNDliNWMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lVG9Bbm9ueW1vdXNDbGFzcy9Ob0lubGluZU1ldGhvZFVzYWdlLmphdmEKQEAgLTAsMCArMSwxMSBAQAorY2xhc3MgQSB7CisgICAgcHVibGljIHZvaWQgZigpIHsKKyAgICAgICAgSW5uZXIgaSA9IG5ldyBJbm5lcigpOworICAgICAgICBpLmRvU3R1ZmYoKTsKKyAgICB9CisKKyAgICBwcml2YXRlIGNsYXNzIDxjYXJldD5Jbm5lciB7CisgICAgICAgIHB1YmxpYyB2b2lkIGRvU3R1ZmYoKSB7CisgICAgICAgIH0KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVRvQW5vbnltb3VzQ2xhc3MvTm9JbmxpbmVNdWx0aXBsZUludGVyZmFjZXMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVUb0Fub255bW91c0NsYXNzL05vSW5saW5lTXVsdGlwbGVJbnRlcmZhY2VzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWIyMjkxZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVUb0Fub255bW91c0NsYXNzL05vSW5saW5lTXVsdGlwbGVJbnRlcmZhY2VzLmphdmEKQEAgLTAsMCArMSwxMyBAQAoraW1wb3J0IGphdmEuYXd0LmV2ZW50Lio7CisKK2NsYXNzIEEgeworICAgIHByaXZhdGUgT2JqZWN0IGIgPSBuZXcgSW5uZXIoKTsKKworICAgIHB1YmxpYyBjbGFzcyA8Y2FyZXQ+SW5uZXIgaW1wbGVtZW50cyBSdW5uYWJsZSwgQWN0aW9uTGlzdGVuZXIgeworICAgICAgICBwdWJsaWMgdm9pZCBydW4oKSB7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgdm9pZCBhY3Rpb25QZXJmb3JtZWQoQWN0aW9uRXZlbnQgZSkgeworICAgICAgICB9CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVUb0Fub255bW91c0NsYXNzL05vSW5saW5lTmV3V2l0aElubmVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lVG9Bbm9ueW1vdXNDbGFzcy9Ob0lubGluZU5ld1dpdGhJbm5lci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIyMDdlNDIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lVG9Bbm9ueW1vdXNDbGFzcy9Ob0lubGluZU5ld1dpdGhJbm5lci5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKK2NsYXNzIDxjYXJldD5XaXRoSW5uZXIgeworICAgIHB1YmxpYyBjbGFzcyBJbm5lciB7CisgICAgfQorfQorCitjbGFzcyBBIHsKKyAgICBwdWJsaWMgdm9pZCB0ZXN0KCkgeworICAgICAgICBXaXRoSW5uZXIuSW5uZXIgaSA9IG5ldyBXaXRoSW5uZXIoKS5uZXcgSW5uZXIoKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVRvQW5vbnltb3VzQ2xhc3MvTm9JbmxpbmVOb1VzYWdlcy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVRvQW5vbnltb3VzQ2xhc3MvTm9JbmxpbmVOb1VzYWdlcy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIzZWM5MWQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lVG9Bbm9ueW1vdXNDbGFzcy9Ob0lubGluZU5vVXNhZ2VzLmphdmEKQEAgLTAsMCArMSw3IEBACitjbGFzcyBBIHsKKyAgICBwcml2YXRlIGNsYXNzIDxjYXJldD5Jbm5lciB7CisgICAgICAgIHB1YmxpYyBJbm5lciBuZXdJbnN0YW5jZSgpIHsKKyAgICAgICAgICAgIHJldHVybiBuZXcgSW5uZXIoKTsKKyAgICAgICAgfQorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lVG9Bbm9ueW1vdXNDbGFzcy9Ob0lubGluZVJlY3Vyc2l2ZUFjY2Vzcy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVRvQW5vbnltb3VzQ2xhc3MvTm9JbmxpbmVSZWN1cnNpdmVBY2Nlc3MuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYWU4MDdmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVRvQW5vbnltb3VzQ2xhc3MvTm9JbmxpbmVSZWN1cnNpdmVBY2Nlc3MuamF2YQpAQCAtMCwwICsxLDIwIEBACitwdWJsaWMgY2xhc3MgU2VsZlBhcmFtcyB7CisJcHJpdmF0ZSBpbnQgbXlWYXIgPSAwOworCisJcHJpdmF0ZSBpbnQgbXlQcm9wID0gMDsKKwlwdWJsaWMgaW50IGdldFByb3AoKSB7CisJCXJldHVybiBteVByb3A7CisJfQorCXB1YmxpYyB2b2lkIHNldFByb3AoaW50IHByb3ApIHsKKwkJbXlQcm9wID0gcHJvcDsKKwl9CisKKwlwdWJsaWMgdm9pZCBjb3B5KFNlbGZQYXJhbXMgc3ApIHsKKwkJdGhpcy5teVZhciA9IHNwLm15VmFyOworCQl0aGlzLm15UHJvcCA9IHNwLmdldFByb3AoKTsKKwl9Cit9CisKK2NsYXNzIFVzYWdlIHsKKyAgU2VsZlBhcmFtcyBzID0gbmV3IFNlbGY8Y2FyZXQ+UGFyYW1zKCk7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVRvQW5vbnltb3VzQ2xhc3MvTm9JbmxpbmVSZXR1cm5JbkNvbnN0cnVjdG9yLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lVG9Bbm9ueW1vdXNDbGFzcy9Ob0lubGluZVJldHVybkluQ29uc3RydWN0b3IuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMDA2ZmFiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVRvQW5vbnltb3VzQ2xhc3MvTm9JbmxpbmVSZXR1cm5JbkNvbnN0cnVjdG9yLmphdmEKQEAgLTAsMCArMSwxNSBAQAorY2xhc3MgQSB7CisgICAgcHJpdmF0ZSBPYmplY3QgYiA9IG5ldyBNeUV4Y2VwdGlvbigpOworCisgICAgcHJpdmF0ZSBjbGFzcyA8Y2FyZXQ+TXlFeGNlcHRpb24gZXh0ZW5kcyBFeGNlcHRpb24geworICAgICAgICBwdWJsaWMgTXlFeGNlcHRpb24oKSB7CisgICAgICAgICAgICBzdXBlcigidyIpOworICAgICAgICAgICAgaWYgKHRvU3RyaW5nKCkubGVuZ3RoKCkgPT0gMCkgcmV0dXJuOworICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKHRvU3RyaW5nKCkpOworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIFN0cmluZyBnZXRNZXNzYWdlKCkgeworICAgICAgICAgICAgcmV0dXJuICJxIjsKKyAgICAgICAgfQorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lVG9Bbm9ueW1vdXNDbGFzcy9Ob0lubGluZVN0YXRpY0ZpZWxkLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lVG9Bbm9ueW1vdXNDbGFzcy9Ob0lubGluZVN0YXRpY0ZpZWxkLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2UyNmJjZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVUb0Fub255bW91c0NsYXNzL05vSW5saW5lU3RhdGljRmllbGQuamF2YQpAQCAtMCwwICsxLDExIEBACitpbXBvcnQgamF2YS5pbzsKKworY2xhc3MgQSB7CisgICAgcHVibGljIHZvaWQgdGVzdCgpIHsKKyAgICAgICAgSW5saW5lZCBpID0gbmV3IElubGluZWQoKTsKKyAgICB9Cit9CisKK2NsYXNzIDxjYXJldD5JbmxpbmVkIHsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmVhbSBzID0gU3lzdGVtLm91dDsKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVUb0Fub255bW91c0NsYXNzL05vSW5saW5lU3RhdGljSW5pdGlhbGl6ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVUb0Fub255bW91c0NsYXNzL05vSW5saW5lU3RhdGljSW5pdGlhbGl6ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMDUyYTRmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVRvQW5vbnltb3VzQ2xhc3MvTm9JbmxpbmVTdGF0aWNJbml0aWFsaXplci5qYXZhCkBAIC0wLDAgKzEsMTcgQEAKK2NsYXNzIEEgeworICAgIHByaXZhdGUgT2JqZWN0IGIgPSBuZXcgSW5uZXIoKTsKKworICAgIHByaXZhdGUgY2xhc3MgPGNhcmV0PklubmVyIHsKKyAgICAgICAgeworICAgICAgICAgICAgLy8gY2xhc3MgaW5pdGlhbGl6ZXIKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyBTdHJpbmcgdG9TdHJpbmcoKSB7CisgICAgICAgICAgICByZXR1cm4gIkEiOworICAgICAgICB9CisKKyAgICAgICAgc3RhdGljIHsKKyAgICAgICAgICAgIC8vIHN0YXRpYyBpbml0aWFsaXplcgorICAgICAgICB9CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVUb0Fub255bW91c0NsYXNzL05vSW5saW5lU3RhdGljSW5uZXJDbGFzcy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVRvQW5vbnltb3VzQ2xhc3MvTm9JbmxpbmVTdGF0aWNJbm5lckNsYXNzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODhiOTRlZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVUb0Fub255bW91c0NsYXNzL05vSW5saW5lU3RhdGljSW5uZXJDbGFzcy5qYXZhCkBAIC0wLDAgKzEsMTIgQEAKK2ltcG9ydCBqYXZhLmlvOworCitjbGFzcyBBIHsKKyAgICBwdWJsaWMgdm9pZCB0ZXN0KCkgeworICAgICAgICBJbmxpbmVkIGkgPSBuZXcgSW5saW5lZCgpOworICAgIH0KK30KKworY2xhc3MgPGNhcmV0PklubGluZWQgeworICAgIHB1YmxpYyBzdGF0aWMgY2xhc3MgQSB7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVRvQW5vbnltb3VzQ2xhc3MvTm9JbmxpbmVTdGF0aWNNZXRob2QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVUb0Fub255bW91c0NsYXNzL05vSW5saW5lU3RhdGljTWV0aG9kLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDA4NmIzYwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVUb0Fub255bW91c0NsYXNzL05vSW5saW5lU3RhdGljTWV0aG9kLmphdmEKQEAgLTAsMCArMSwxMiBAQAoraW1wb3J0IGphdmEuaW87CisKK2NsYXNzIEEgeworICAgIHB1YmxpYyB2b2lkIHRlc3QoKSB7CisgICAgICAgIElubGluZWQgaSA9IG5ldyBJbmxpbmVkKCk7CisgICAgfQorfQorCitjbGFzcyA8Y2FyZXQ+SW5saW5lZCB7CisgICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oKSB7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVRvQW5vbnltb3VzQ2xhc3MvTm9JbmxpbmVTdGF0aWNOb25GaW5hbEZpZWxkLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lVG9Bbm9ueW1vdXNDbGFzcy9Ob0lubGluZVN0YXRpY05vbkZpbmFsRmllbGQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNGFkZDQ2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVRvQW5vbnltb3VzQ2xhc3MvTm9JbmxpbmVTdGF0aWNOb25GaW5hbEZpZWxkLmphdmEKQEAgLTAsMCArMSwxMSBAQAoraW1wb3J0IGphdmEuaW87CisKK2NsYXNzIEEgeworICAgIHB1YmxpYyB2b2lkIHRlc3QoKSB7CisgICAgICAgIElubGluZWQgaSA9IG5ldyBJbmxpbmVkKCk7CisgICAgfQorfQorCitjbGFzcyA8Y2FyZXQ+SW5saW5lZCB7CisgICAgcHVibGljIHN0YXRpYyBTdHJpbmcgcyA9ICJzIjsKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVUb0Fub255bW91c0NsYXNzL05vSW5saW5lU3VwZXJjbGFzc0ludGVyZmFjZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVRvQW5vbnltb3VzQ2xhc3MvTm9JbmxpbmVTdXBlcmNsYXNzSW50ZXJmYWNlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWE5MzM2OAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVUb0Fub255bW91c0NsYXNzL05vSW5saW5lU3VwZXJjbGFzc0ludGVyZmFjZS5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKK2ltcG9ydCBqYXZhLmF3dC5ldmVudC4qOworCitjbGFzcyBBIHsKKyAgICBwcml2YXRlIE9iamVjdCBiID0gbmV3IElubmVyKCk7CisKKyAgICBwdWJsaWMgY2xhc3MgPGNhcmV0PklubmVyIGV4dGVuZHMgVGhyb3dhYmxlIGltcGxlbWVudHMgUnVubmFibGUgeworICAgICAgICBwdWJsaWMgdm9pZCBydW4oKSB7CisgICAgICAgIH0KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVRvQW5vbnltb3VzQ2xhc3MvTm9JbmxpbmVUaGlzUXVhbGlmaWVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lVG9Bbm9ueW1vdXNDbGFzcy9Ob0lubGluZVRoaXNRdWFsaWZpZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZTcxZGJiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVRvQW5vbnltb3VzQ2xhc3MvTm9JbmxpbmVUaGlzUXVhbGlmaWVyLmphdmEKQEAgLTAsMCArMSwxNSBAQAorY2xhc3MgPGNhcmV0PkEgeworICBwcml2YXRlIGludCBiOworCisgIHByaXZhdGUgY2xhc3MgQiB7CisgICAgcHJpdmF0ZSBpbnQgYjsKKworICAgIHZvaWQgZG9UZXN0KCkgeworICAgICAgYiA9IEEudGhpcy5iOworICAgIH0KKyAgfQorfQorCitjbGFzcyBVc2VyIHsKKyAgQSBhID0gbmV3IEEoKTsKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVUb0Fub255bW91c0NsYXNzL05vSW5saW5lVGhyb3dzQ2xhdXNlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lVG9Bbm9ueW1vdXNDbGFzcy9Ob0lubGluZVRocm93c0NsYXVzZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgxNDAxNjkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lVG9Bbm9ueW1vdXNDbGFzcy9Ob0lubGluZVRocm93c0NsYXVzZS5qYXZhCkBAIC0wLDAgKzEsMTkgQEAKK2NsYXNzIEEgeworICAgIHB1YmxpYyB2b2lkIHRlc3QoKSB7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICB0ZXN0MigpOworICAgICAgICB9CisgICAgICAgIGNhdGNoKEV4Y2VwdGlvbiBleCkgeworICAgICAgICB9CisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIHRlc3QyKCkgdGhyb3dzIElubmVyIHsKKyAgICAgICAgdGhyb3cgbmV3IElubmVyKCk7CisgICAgfQorCisgICAgcHJpdmF0ZSBjbGFzcyA8Y2FyZXQ+SW5uZXIgZXh0ZW5kcyBFeGNlcHRpb24geworICAgICAgICBwdWJsaWMgU3RyaW5nIHRvU3RyaW5nKCkgeworICAgICAgICAgICAgcmV0dXJuICJBIjsKKyAgICAgICAgfQorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lVG9Bbm9ueW1vdXNDbGFzcy9Ob0lubGluZVVucmVzb2x2ZWRDb25zdHJ1Y3Rvci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVRvQW5vbnltb3VzQ2xhc3MvTm9JbmxpbmVVbnJlc29sdmVkQ29uc3RydWN0b3IuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMGIwYzNhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVRvQW5vbnltb3VzQ2xhc3MvTm9JbmxpbmVVbnJlc29sdmVkQ29uc3RydWN0b3IuamF2YQpAQCAtMCwwICsxLDkgQEAKK2NsYXNzIEEgeworICAgIHByaXZhdGUgT2JqZWN0IGIgPSBuZXcgSW5uZXIoInEiKTsKKworICAgIHByaXZhdGUgY2xhc3MgPGNhcmV0PklubmVyIHsKKyAgICAgICAgcHVibGljIFN0cmluZyB0b1N0cmluZygpIHsKKyAgICAgICAgICAgIHJldHVybiAiQSI7CisgICAgICAgIH0KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVRvQW5vbnltb3VzQ2xhc3MvTm9JbmxpbmVVbnJlc29sdmVkQ29uc3RydWN0b3IyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lVG9Bbm9ueW1vdXNDbGFzcy9Ob0lubGluZVVucmVzb2x2ZWRDb25zdHJ1Y3RvcjIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNjJjMGE0MwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVUb0Fub255bW91c0NsYXNzL05vSW5saW5lVW5yZXNvbHZlZENvbnN0cnVjdG9yMi5qYXZhCkBAIC0wLDAgKzEsMTIgQEAKK2NsYXNzIEEgeworICAgIHByaXZhdGUgT2JqZWN0IGIgPSBuZXcgSW5uZXIoKTsKKworICAgIHByaXZhdGUgY2xhc3MgPGNhcmV0PklubmVyIHsKKyAgICAgICAgcHVibGljIElubmVyKGludCBpKSB7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgU3RyaW5nIHRvU3RyaW5nKCkgeworICAgICAgICAgICAgcmV0dXJuICJBIjsKKyAgICAgICAgfQorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lVG9Bbm9ueW1vdXNDbGFzcy9Ob0lubGluZVVucmVzb2x2ZWRJbnRlcmZhY2UuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVUb0Fub255bW91c0NsYXNzL05vSW5saW5lVW5yZXNvbHZlZEludGVyZmFjZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhiZDgwZWUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lVG9Bbm9ueW1vdXNDbGFzcy9Ob0lubGluZVVucmVzb2x2ZWRJbnRlcmZhY2UuamF2YQpAQCAtMCwwICsxLDkgQEAKK2NsYXNzIEEgeworICAgIHByaXZhdGUgT2JqZWN0IGIgPSBuZXcgSW5uZXIoInEiKTsKKworICAgIHByaXZhdGUgY2xhc3MgPGNhcmV0PklubmVyIGltcGxlbWVudHMgU29tZXNoaXQgeworICAgICAgICBwdWJsaWMgU3RyaW5nIHRvU3RyaW5nKCkgeworICAgICAgICAgICAgcmV0dXJuICJBIjsKKyAgICAgICAgfQorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lVG9Bbm9ueW1vdXNDbGFzcy9Ob0lubGluZVVucmVzb2x2ZWRTdXBlcmNsYXNzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lVG9Bbm9ueW1vdXNDbGFzcy9Ob0lubGluZVVucmVzb2x2ZWRTdXBlcmNsYXNzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWI2YzFkMAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVUb0Fub255bW91c0NsYXNzL05vSW5saW5lVW5yZXNvbHZlZFN1cGVyY2xhc3MuamF2YQpAQCAtMCwwICsxLDkgQEAKK2NsYXNzIEEgeworICAgIHByaXZhdGUgT2JqZWN0IGIgPSBuZXcgSW5uZXIoInEiKTsKKworICAgIHByaXZhdGUgY2xhc3MgPGNhcmV0PklubmVyIGV4dGVuZHMgU29tZXNoaXQgeworICAgICAgICBwdWJsaWMgU3RyaW5nIHRvU3RyaW5nKCkgeworICAgICAgICAgICAgcmV0dXJuICJBIjsKKyAgICAgICAgfQorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lVG9Bbm9ueW1vdXNDbGFzcy9OdWxsSW5pdGlhbGl6ZWRGaWVsZC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVRvQW5vbnltb3VzQ2xhc3MvTnVsbEluaXRpYWxpemVkRmllbGQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41OTNkMjUyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVRvQW5vbnltb3VzQ2xhc3MvTnVsbEluaXRpYWxpemVkRmllbGQuamF2YQpAQCAtMCwwICsxLDE4IEBACitjbGFzcyBBIHsKKyAgICBwcml2YXRlIE9iamVjdCBiID0gbmV3IElubmVyKCk7CisKKyAgICBwcml2YXRlIGNsYXNzIDxjYXJldD5Jbm5lciB7CisgICAgICAgIHByaXZhdGUgU3RyaW5nIHM7CisKKyAgICAgICAgcHVibGljIElubmVyKCkgeworICAgICAgICAgICAgcz1udWxsOworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIFN0cmluZyB0b1N0cmluZygpIHsKKyAgICAgICAgICAgIGlmIChzID09IG51bGwpIHsKKyAgICAgICAgICAgICAgICBzID0gInEiOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuICJBIjsKKyAgICAgICAgfQorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lVG9Bbm9ueW1vdXNDbGFzcy9OdWxsSW5pdGlhbGl6ZWRGaWVsZC5qYXZhLmFmdGVyIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVRvQW5vbnltb3VzQ2xhc3MvTnVsbEluaXRpYWxpemVkRmllbGQuamF2YS5hZnRlcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMDM3MDU4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVRvQW5vbnltb3VzQ2xhc3MvTnVsbEluaXRpYWxpemVkRmllbGQuamF2YS5hZnRlcgpAQCAtMCwwICsxLDEzIEBACitjbGFzcyBBIHsKKyAgICBwcml2YXRlIE9iamVjdCBiID0gbmV3IE9iamVjdCgpIHsKKyAgICAgICAgcHJpdmF0ZSBTdHJpbmcgcyA9IG51bGw7CisKKyAgICAgICAgcHVibGljIFN0cmluZyB0b1N0cmluZygpIHsKKyAgICAgICAgICAgIGlmIChzID09IG51bGwpIHsKKyAgICAgICAgICAgICAgICBzID0gInEiOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuICJBIjsKKyAgICAgICAgfQorICAgIH07CisKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lVG9Bbm9ueW1vdXNDbGFzcy9PdXRlckNsYXNzRmllbGRBY2Nlc3MuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVUb0Fub255bW91c0NsYXNzL091dGVyQ2xhc3NGaWVsZEFjY2Vzcy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZiMDUyZTUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lVG9Bbm9ueW1vdXNDbGFzcy9PdXRlckNsYXNzRmllbGRBY2Nlc3MuamF2YQpAQCAtMCwwICsxLDE0IEBACitjbGFzcyBPdXRlciB7CisgICAgaW50IGk7CisKKyAgICBjbGFzcyBJbm5lciB7CisgICAgICAgIHB1YmxpYyB2b2lkIGYoKSB7CisgICAgICAgICAgICBpbnQgaiA9IGk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICB2b2lkIGZvbygpIHsKKyAgICAgICAgZmluYWwgaW50IGkgPSAwOworICAgICAgICBuZXcgPGNhcmV0PklubmVyKCk7IAorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lVG9Bbm9ueW1vdXNDbGFzcy9PdXRlckNsYXNzRmllbGRBY2Nlc3MuamF2YS5hZnRlciBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVUb0Fub255bW91c0NsYXNzL091dGVyQ2xhc3NGaWVsZEFjY2Vzcy5qYXZhLmFmdGVyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZiNGQ4MmIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lVG9Bbm9ueW1vdXNDbGFzcy9PdXRlckNsYXNzRmllbGRBY2Nlc3MuamF2YS5hZnRlcgpAQCAtMCwwICsxLDEyIEBACitjbGFzcyBPdXRlciB7CisgICAgaW50IGk7CisKKyAgICB2b2lkIGZvbygpIHsKKyAgICAgICAgZmluYWwgaW50IGkgPSAwOworICAgICAgICBuZXcgT2JqZWN0KCkgeworICAgICAgICAgICAgcHVibGljIHZvaWQgZigpIHsKKyAgICAgICAgICAgICAgICBpbnQgaiA9IE91dGVyLnRoaXMuaTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVRvQW5vbnltb3VzQ2xhc3MvT3ZlcndyaXRlSW5pdGlhbGl6ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVUb0Fub255bW91c0NsYXNzL092ZXJ3cml0ZUluaXRpYWxpemVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzM5Mjg4NzEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lVG9Bbm9ueW1vdXNDbGFzcy9PdmVyd3JpdGVJbml0aWFsaXplci5qYXZhCkBAIC0wLDAgKzEsMTggQEAKK2NsYXNzIEEgeworICAgIHByaXZhdGUgT2JqZWN0IGIgPSBuZXcgSW5uZXIoMTAwKTsKKworICAgIHByaXZhdGUgY2xhc3MgPGNhcmV0PklubmVyIHsKKyAgICAgICAgcHJpdmF0ZSBpbnQgbXlJbnQgPSAwOworCisgICAgICAgIHB1YmxpYyBJbm5lcigpIHsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyBJbm5lcihpbnQgYW5JbnQpIHsKKwkgICAgbXlJbnQgPSBhbkludDsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyBpbnQgZ2V0SW50KCkgeworCSAgICByZXR1cm4gbXlJbnQ7CisgICAgICAgIH0KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVRvQW5vbnltb3VzQ2xhc3MvT3ZlcndyaXRlSW5pdGlhbGl6ZXIuamF2YS5hZnRlciBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVUb0Fub255bW91c0NsYXNzL092ZXJ3cml0ZUluaXRpYWxpemVyLmphdmEuYWZ0ZXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzE4NzE0MQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVUb0Fub255bW91c0NsYXNzL092ZXJ3cml0ZUluaXRpYWxpemVyLmphdmEuYWZ0ZXIKQEAgLTAsMCArMSwxMCBAQAorY2xhc3MgQSB7CisgICAgcHJpdmF0ZSBPYmplY3QgYiA9IG5ldyBPYmplY3QoKSB7CisgICAgICAgIHByaXZhdGUgaW50IG15SW50ID0gMTAwOworCisgICAgICAgIHB1YmxpYyBpbnQgZ2V0SW50KCkgeworCSAgICByZXR1cm4gbXlJbnQ7CisgICAgICAgIH0KKyAgICB9OworCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVRvQW5vbnltb3VzQ2xhc3MvUGFyYW1UeXBlUmVwbGFjZW1lbnQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVUb0Fub255bW91c0NsYXNzL1BhcmFtVHlwZVJlcGxhY2VtZW50LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDY4N2UxZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVUb0Fub255bW91c0NsYXNzL1BhcmFtVHlwZVJlcGxhY2VtZW50LmphdmEKQEAgLTAsMCArMSwxMyBAQAorcHVibGljIGNsYXNzIFNpbXBsZSBpbXBsZW1lbnRzIFJ1bm5hYmxleworICB2b2lkIGZvbyhTaW1wbGUgcykgeworICAgIFN5c3RlbS5vdXQucHJpbnRsbihzLnRvU3RyaW5nKCkpOworICAgIHMucnVuKCk7CisgIH0KKworICBwdWJsaWMgdm9pZCBydW4oKXsKKyAgfQorfQorCitjbGFzcyBVc2FnZSB7CisgIFNpbXBsZSBzID0gbmV3IFNpbTxjYXJldD5wbGUoKTsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lVG9Bbm9ueW1vdXNDbGFzcy9QYXJhbVR5cGVSZXBsYWNlbWVudC5qYXZhLmFmdGVyIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVRvQW5vbnltb3VzQ2xhc3MvUGFyYW1UeXBlUmVwbGFjZW1lbnQuamF2YS5hZnRlcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZTczNjk4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVRvQW5vbnltb3VzQ2xhc3MvUGFyYW1UeXBlUmVwbGFjZW1lbnQuamF2YS5hZnRlcgpAQCAtMCwwICsxLDExIEBACitjbGFzcyBVc2FnZSB7CisgIFJ1bm5hYmxlIHMgPSBuZXcgUnVubmFibGUoKSB7CisgICAgICB2b2lkIGZvbyhSdW5uYWJsZSBzKSB7CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihzLnRvU3RyaW5nKCkpOworICAgICAgICBzLnJ1bigpOworICAgICAgfQorCisgICAgICBwdWJsaWMgdm9pZCBydW4oKXsKKyAgICAgIH0KKyAgfTsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lVG9Bbm9ueW1vdXNDbGFzcy9Qcml2YXRlRmllbGRVc2VkRnJvbUlubmVyQ2xhc3MuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVUb0Fub255bW91c0NsYXNzL1ByaXZhdGVGaWVsZFVzZWRGcm9tSW5uZXJDbGFzcy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmViNzhjOGUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lVG9Bbm9ueW1vdXNDbGFzcy9Qcml2YXRlRmllbGRVc2VkRnJvbUlubmVyQ2xhc3MuamF2YQpAQCAtMCwwICsxLDE5IEBACitjbGFzcyBBIHsKKyAgICBjbGFzcyA8Y2FyZXQ+SW5uZXIgeworICAgICAgICBwcml2YXRlIGludCBteU5vblN0YXRpY0ZpZWxkID0gMDsKKworICAgICAgICBjbGFzcyBJbm5lck5vblN0YXRpYyB7CisgICAgICAgICAgICBwcml2YXRlIGludCBteUluc0ZpZWxkID0gMDsKKworICAgICAgICAgICAgcHVibGljIHZvaWQgaW5zTWV0aG9kKCkgeworICAgICAgICAgICAgICAgIG15Tm9uU3RhdGljRmllbGQgKz0gbXlJbnNGaWVsZDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KKworY2xhc3MgQiB7CisgICAgcHVibGljIHZvaWQgdGVzdCgpIHsKKyAgICAgICAgQS5Jbm5lciBpbm5lciA9IG5ldyBBLklubmVyKCk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVUb0Fub255bW91c0NsYXNzL1ByaXZhdGVGaWVsZFVzZWRGcm9tSW5uZXJDbGFzcy5qYXZhLmFmdGVyIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVRvQW5vbnltb3VzQ2xhc3MvUHJpdmF0ZUZpZWxkVXNlZEZyb21Jbm5lckNsYXNzLmphdmEuYWZ0ZXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjg5MGExMQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVUb0Fub255bW91c0NsYXNzL1ByaXZhdGVGaWVsZFVzZWRGcm9tSW5uZXJDbGFzcy5qYXZhLmFmdGVyCkBAIC0wLDAgKzEsMTggQEAKK2NsYXNzIEEgeworfQorCitjbGFzcyBCIHsKKyAgICBwdWJsaWMgdm9pZCB0ZXN0KCkgeworICAgICAgICBPYmplY3QgaW5uZXIgPSBuZXcgT2JqZWN0KCkgeworICAgICAgICAgICAgcHJpdmF0ZSBpbnQgbXlOb25TdGF0aWNGaWVsZCA9IDA7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGNsYXNzIElubmVyTm9uU3RhdGljIHsKKyAgICAgICAgICAgICAgICBwcml2YXRlIGludCBteUluc0ZpZWxkID0gMDsKKworICAgICAgICAgICAgICAgIHB1YmxpYyB2b2lkIGluc01ldGhvZCgpIHsKKyAgICAgICAgICAgICAgICAgICAgbXlOb25TdGF0aWNGaWVsZCArPSBteUluc0ZpZWxkOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVRvQW5vbnltb3VzQ2xhc3MvUXVhbGlmaWVkTmV3LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lVG9Bbm9ueW1vdXNDbGFzcy9RdWFsaWZpZWROZXcuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NmRjNGMwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVRvQW5vbnltb3VzQ2xhc3MvUXVhbGlmaWVkTmV3LmphdmEKQEAgLTAsMCArMSwxOCBAQAorcHVibGljIGNsYXNzIFF1YWxpZmllZE5ld1Rlc3QgeworICAgIHB1YmxpYyBjbGFzcyBDMiB7CisgICAgICAgIHByaXZhdGUgaW50IGE7CisKKyAgICAgICAgcHVibGljIGNsYXNzIDxjYXJldD5DMklubmVyIHsKKyAgICAgICAgICAgIHB1YmxpYyB2b2lkIGRvU3R1ZmYoKSB7CisgICAgICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKGEpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgcHVibGljIGNsYXNzIEMyVXNlciB7CisgICAgICAgIHB1YmxpYyB2b2lkIHRlc3QoKSB7CisgICAgICAgICAgICBDMiBjMiA9IG5ldyBDMigpOworICAgICAgICAgICAgQzIuQzJJbm5lciBpbm5lciA9IGMyLm5ldyBDMklubmVyKCk7CisgICAgICAgIH0KKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lVG9Bbm9ueW1vdXNDbGFzcy9RdWFsaWZpZWROZXcuamF2YS5hZnRlciBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVUb0Fub255bW91c0NsYXNzL1F1YWxpZmllZE5ldy5qYXZhLmFmdGVyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRiNGY1NDYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lVG9Bbm9ueW1vdXNDbGFzcy9RdWFsaWZpZWROZXcuamF2YS5hZnRlcgpAQCAtMCwwICsxLDE4IEBACitwdWJsaWMgY2xhc3MgUXVhbGlmaWVkTmV3VGVzdCB7CisgICAgcHVibGljIGNsYXNzIEMyIHsKKyAgICAgICAgcHJpdmF0ZSBpbnQgYTsKKworICAgIH0KKworICAgIHB1YmxpYyBjbGFzcyBDMlVzZXIgeworICAgICAgICBwdWJsaWMgdm9pZCB0ZXN0KCkgeworICAgICAgICAgICAgQzIgYzIgPSBuZXcgQzIoKTsKKyAgICAgICAgICAgIGZpbmFsIEMyIGMyMSA9IGMyOworICAgICAgICAgICAgT2JqZWN0IGlubmVyID0gbmV3IE9iamVjdCgpIHsKKyAgICAgICAgICAgICAgICBwdWJsaWMgdm9pZCBkb1N0dWZmKCkgeworICAgICAgICAgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oYzIxLmEpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH07CisgICAgICAgIH0KKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lVG9Bbm9ueW1vdXNDbGFzcy9RdWFsaWZ5SW5uZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVUb0Fub255bW91c0NsYXNzL1F1YWxpZnlJbm5lci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM4YTIwNGYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lVG9Bbm9ueW1vdXNDbGFzcy9RdWFsaWZ5SW5uZXIuamF2YQpAQCAtMCwwICsxLDE3IEBACitwdWJsaWMgY2xhc3MgUXVhbGlmeUlubmVyVGVzdCB7CisgICAgcHVibGljIGNsYXNzIEMyVXNlciB7CisgICAgICAgIHB1YmxpYyB2b2lkIHRlc3QoKSB7CisgICAgICAgICAgICBDMi5DMklubmVyIGlubmVyID0gbmV3IEMyLkMySW5uZXIoKTsKKyAgICAgICAgfQorICAgIH0KK30KKworY2xhc3MgQzIgeworICAgIHB1YmxpYyBzdGF0aWMgaW50IGE7CisKKyAgICBwdWJsaWMgc3RhdGljIGNsYXNzIDxjYXJldD5DMklubmVyIHsKKyAgICAgICAgcHVibGljIHZvaWQgZG9TdHVmZigpIHsKKyAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihhKTsKKyAgICAgICAgfQorICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVUb0Fub255bW91c0NsYXNzL1F1YWxpZnlJbm5lci5qYXZhLmFmdGVyIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVRvQW5vbnltb3VzQ2xhc3MvUXVhbGlmeUlubmVyLmphdmEuYWZ0ZXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjIwYjAxNwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVUb0Fub255bW91c0NsYXNzL1F1YWxpZnlJbm5lci5qYXZhLmFmdGVyCkBAIC0wLDAgKzEsMTYgQEAKK3B1YmxpYyBjbGFzcyBRdWFsaWZ5SW5uZXJUZXN0IHsKKyAgICBwdWJsaWMgY2xhc3MgQzJVc2VyIHsKKyAgICAgICAgcHVibGljIHZvaWQgdGVzdCgpIHsKKyAgICAgICAgICAgIE9iamVjdCBpbm5lciA9IG5ldyBPYmplY3QoKSB7CisgICAgICAgICAgICAgICAgcHVibGljIHZvaWQgZG9TdHVmZigpIHsKKyAgICAgICAgICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKEMyLmEpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH07CisgICAgICAgIH0KKyAgICB9Cit9CisKK2NsYXNzIEMyIHsKKyAgICBwdWJsaWMgc3RhdGljIGludCBhOworCit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lVG9Bbm9ueW1vdXNDbGFzcy9RdWFsaWZ5UGFyZW50U3RhdGljUmVmZXJlbmNlcy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVRvQW5vbnltb3VzQ2xhc3MvUXVhbGlmeVBhcmVudFN0YXRpY1JlZmVyZW5jZXMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMTUxMzYwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVRvQW5vbnltb3VzQ2xhc3MvUXVhbGlmeVBhcmVudFN0YXRpY1JlZmVyZW5jZXMuamF2YQpAQCAtMCwwICsxLDE4IEBACitjbGFzcyBQYXJlbnRDdG9yIHsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBQQVJFTlRfQ09OU1QgPSAiIjsKKworICAgIHB1YmxpYyBQYXJlbnRDdG9yKFN0cmluZyBzKSB7CisgICAgfQorfQorCitjbGFzcyBDaGlsZEN0b3IgZXh0ZW5kcyBQYXJlbnRDdG9yIHsKKyAgICBwdWJsaWMgQ2hpbGRDdG9yKGJvb2xlYW4gYikgeworICAgICAgICBzdXBlcihQQVJFTlRfQ09OU1QpOworICAgIH0KK30KKworY2xhc3MgVXNhZ2UgeworICAgIHB1YmxpYyB2b2lkIHRlc3QoKSB7CisgICAgICAgIG5ldyA8Y2FyZXQ+Q2hpbGRDdG9yKHRydWUpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVUb0Fub255bW91c0NsYXNzL1F1YWxpZnlQYXJlbnRTdGF0aWNSZWZlcmVuY2VzLmphdmEuYWZ0ZXIgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lVG9Bbm9ueW1vdXNDbGFzcy9RdWFsaWZ5UGFyZW50U3RhdGljUmVmZXJlbmNlcy5qYXZhLmFmdGVyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlhNzBmYmEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lVG9Bbm9ueW1vdXNDbGFzcy9RdWFsaWZ5UGFyZW50U3RhdGljUmVmZXJlbmNlcy5qYXZhLmFmdGVyCkBAIC0wLDAgKzEsMTIgQEAKK2NsYXNzIFBhcmVudEN0b3IgeworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFBBUkVOVF9DT05TVCA9ICIiOworCisgICAgcHVibGljIFBhcmVudEN0b3IoU3RyaW5nIHMpIHsKKyAgICB9Cit9CisKK2NsYXNzIFVzYWdlIHsKKyAgICBwdWJsaWMgdm9pZCB0ZXN0KCkgeworICAgICAgICBuZXcgUGFyZW50Q3RvcihQYXJlbnRDdG9yLlBBUkVOVF9DT05TVCk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVRvQW5vbnltb3VzQ2xhc3MvUmVkdW5kYW50SW1wbGVtZW50c0ludGVyZmFjZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVRvQW5vbnltb3VzQ2xhc3MvUmVkdW5kYW50SW1wbGVtZW50c0ludGVyZmFjZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg1ODQ1OWEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lVG9Bbm9ueW1vdXNDbGFzcy9SZWR1bmRhbnRJbXBsZW1lbnRzSW50ZXJmYWNlLmphdmEKQEAgLTAsMCArMSwxMyBAQAoraW1wb3J0IGphdmEuYXd0LmV2ZW50Lio7CisKK2NsYXNzIEEgeworICAgIHByaXZhdGUgQWN0aW9uTGlzdGVuZXIgYiA9IG5ldyBJbm5lcigpOworCisgICAgcHJpdmF0ZSBhYnN0cmFjdCBjbGFzcyBNeUFjdGlvbkxpc3RlbmVyIGltcGxlbWVudHMgQWN0aW9uTGlzdGVuZXIgeworICAgIH0KKworICAgIHByaXZhdGUgY2xhc3MgPGNhcmV0PklubmVyIGV4dGVuZHMgTXlBY3Rpb25MaXN0ZW5lciBpbXBsZW1lbnRzIEFjdGlvbkxpc3RlbmVyIHsKKyAgICAgICAgcHVibGljIHZvaWQgYWN0aW9uUGVyZm9ybWVkKEFjdGlvbkV2ZW50IGUpIHsKKyAgICAgICAgfQorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lVG9Bbm9ueW1vdXNDbGFzcy9SZWR1bmRhbnRJbXBsZW1lbnRzSW50ZXJmYWNlLmphdmEuYWZ0ZXIgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lVG9Bbm9ueW1vdXNDbGFzcy9SZWR1bmRhbnRJbXBsZW1lbnRzSW50ZXJmYWNlLmphdmEuYWZ0ZXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzUwNWY3OAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVUb0Fub255bW91c0NsYXNzL1JlZHVuZGFudEltcGxlbWVudHNJbnRlcmZhY2UuamF2YS5hZnRlcgpAQCAtMCwwICsxLDEyIEBACitpbXBvcnQgamF2YS5hd3QuZXZlbnQuKjsKKworY2xhc3MgQSB7CisgICAgcHJpdmF0ZSBBY3Rpb25MaXN0ZW5lciBiID0gbmV3IE15QWN0aW9uTGlzdGVuZXIoKSB7CisgICAgICAgIHB1YmxpYyB2b2lkIGFjdGlvblBlcmZvcm1lZChBY3Rpb25FdmVudCBlKSB7CisgICAgICAgIH0KKyAgICB9OworCisgICAgcHJpdmF0ZSBhYnN0cmFjdCBjbGFzcyBNeUFjdGlvbkxpc3RlbmVyIGltcGxlbWVudHMgQWN0aW9uTGlzdGVuZXIgeworICAgIH0KKworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVUb0Fub255bW91c0NsYXNzL1NlbGZSZWZlcmVuY2UuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVUb0Fub255bW91c0NsYXNzL1NlbGZSZWZlcmVuY2UuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZWI4ZjZjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVRvQW5vbnltb3VzQ2xhc3MvU2VsZlJlZmVyZW5jZS5qYXZhCkBAIC0wLDAgKzEsMTEgQEAKK2NsYXNzIEEgeworICAgIHB1YmxpYyBjbGFzcyA8Y2FyZXQ+SW5uZXIgeworICAgICAgICBwcml2YXRlIElubmVyIG15STsKKyAgICAgICAgcHJpdmF0ZSBJbm5lciBteUkyOworICAgIH0KK30KKworY2xhc3MgQiB7CisgICAgcHJpdmF0ZSBBLklubmVyIGIgPSBuZXcgQS5Jbm5lcigpOworICAgIAorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVUb0Fub255bW91c0NsYXNzL1NlbGZSZWZlcmVuY2UuamF2YS5hZnRlciBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVUb0Fub255bW91c0NsYXNzL1NlbGZSZWZlcmVuY2UuamF2YS5hZnRlcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYWRmMDRkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVRvQW5vbnltb3VzQ2xhc3MvU2VsZlJlZmVyZW5jZS5qYXZhLmFmdGVyCkBAIC0wLDAgKzEsMTAgQEAKK2NsYXNzIEEgeworfQorCitjbGFzcyBCIHsKKyAgICBwcml2YXRlIE9iamVjdCBiID0gbmV3IE9iamVjdCgpIHsKKyAgICAgICAgcHJpdmF0ZSBPYmplY3QgbXlJOworICAgICAgICBwcml2YXRlIE9iamVjdCBteUkyOworICAgIH07CisKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lVG9Bbm9ueW1vdXNDbGFzcy9TaW1wbGUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVUb0Fub255bW91c0NsYXNzL1NpbXBsZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdlYjNhMmIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lVG9Bbm9ueW1vdXNDbGFzcy9TaW1wbGUuamF2YQpAQCAtMCwwICsxLDkgQEAKK2NsYXNzIEEgeworICAgIHByaXZhdGUgT2JqZWN0IGIgPSBuZXcgSW5uZXIoKTsKKworICAgIHByaXZhdGUgY2xhc3MgPGNhcmV0PklubmVyIHsKKyAgICAgICAgcHVibGljIFN0cmluZyB0b1N0cmluZygpIHsKKyAgICAgICAgICAgIHJldHVybiAiQSI7CisgICAgICAgIH0KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVRvQW5vbnltb3VzQ2xhc3MvU2ltcGxlLmphdmEuYWZ0ZXIgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lVG9Bbm9ueW1vdXNDbGFzcy9TaW1wbGUuamF2YS5hZnRlcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZjVlYjZmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVRvQW5vbnltb3VzQ2xhc3MvU2ltcGxlLmphdmEuYWZ0ZXIKQEAgLTAsMCArMSw4IEBACitjbGFzcyBBIHsKKyAgICBwcml2YXRlIE9iamVjdCBiID0gbmV3IE9iamVjdCgpIHsKKyAgICAgICAgcHVibGljIFN0cmluZyB0b1N0cmluZygpIHsKKyAgICAgICAgICAgIHJldHVybiAiQSI7CisgICAgICAgIH0KKyAgICB9OworCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVRvQW5vbnltb3VzQ2xhc3MvU3RhdGljQ29uc3RhbnRGaWVsZC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVRvQW5vbnltb3VzQ2xhc3MvU3RhdGljQ29uc3RhbnRGaWVsZC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJlYTIyMTMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lVG9Bbm9ueW1vdXNDbGFzcy9TdGF0aWNDb25zdGFudEZpZWxkLmphdmEKQEAgLTAsMCArMSwxMSBAQAoraW1wb3J0IGphdmEuaW87CisKK2NsYXNzIEEgeworICAgIHB1YmxpYyB2b2lkIHRlc3QoKSB7CisgICAgICAgIElubGluZWQgaSA9IG5ldyBJbmxpbmVkKCk7CisgICAgfQorfQorCitjbGFzcyA8Y2FyZXQ+SW5saW5lZCB7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgcyA9ICJzIjsKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVUb0Fub255bW91c0NsYXNzL1N0YXRpY0NvbnN0YW50RmllbGQuamF2YS5hZnRlciBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVUb0Fub255bW91c0NsYXNzL1N0YXRpY0NvbnN0YW50RmllbGQuamF2YS5hZnRlcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MmYzZjg1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVRvQW5vbnltb3VzQ2xhc3MvU3RhdGljQ29uc3RhbnRGaWVsZC5qYXZhLmFmdGVyCkBAIC0wLDAgKzEsMTAgQEAKK2ltcG9ydCBqYXZhLmlvOworCitjbGFzcyBBIHsKKyAgICBwdWJsaWMgdm9pZCB0ZXN0KCkgeworICAgICAgICBPYmplY3QgaSA9IG5ldyBPYmplY3QoKSB7CisgICAgICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBzID0gInMiOworICAgICAgICB9OworICAgIH0KK30KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVRvQW5vbnltb3VzQ2xhc3MvU3RyaW5nSW5NZXRob2RDYWxsRnJvbUNvbnN0cnVjdG9yLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lVG9Bbm9ueW1vdXNDbGFzcy9TdHJpbmdJbk1ldGhvZENhbGxGcm9tQ29uc3RydWN0b3IuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMDBkNWM2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVRvQW5vbnltb3VzQ2xhc3MvU3RyaW5nSW5NZXRob2RDYWxsRnJvbUNvbnN0cnVjdG9yLmphdmEKQEAgLTAsMCArMSwxNyBAQAorY2xhc3MgPGNhcmV0PklubGluZWQgeworICAgIHByaXZhdGUgaW50IG15QTsKKworICAgIHB1YmxpYyBJbmxpbmVkKFN0cmluZyBzKSB7CisgICAgICAgIHByb2Nlc3Mocyk7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgcHJvY2VzcyhTdHJpbmcgcykgeworICAgICAgICBteUEgPSBzLmxlbmd0aCgpOworICAgIH0KK30KKworY2xhc3MgQyB7CisgICAgcHVibGljIHZvaWQgdGVzdCgpIHsKKyAgICAgICAgSW5saW5lZCBpID0gbmV3IElubGluZWQoImEiKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVRvQW5vbnltb3VzQ2xhc3MvU3RyaW5nSW5NZXRob2RDYWxsRnJvbUNvbnN0cnVjdG9yLmphdmEuYWZ0ZXIgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lVG9Bbm9ueW1vdXNDbGFzcy9TdHJpbmdJbk1ldGhvZENhbGxGcm9tQ29uc3RydWN0b3IuamF2YS5hZnRlcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYzJjYTc3MAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVUb0Fub255bW91c0NsYXNzL1N0cmluZ0luTWV0aG9kQ2FsbEZyb21Db25zdHJ1Y3Rvci5qYXZhLmFmdGVyCkBAIC0wLDAgKzEsMTUgQEAKK2NsYXNzIEMgeworICAgIHB1YmxpYyB2b2lkIHRlc3QoKSB7CisgICAgICAgIE9iamVjdCBpID0gbmV3IE9iamVjdCgpIHsKKyAgICAgICAgICAgIHByaXZhdGUgaW50IG15QTsKKworICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHByb2Nlc3MoImEiKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcHVibGljIHZvaWQgcHJvY2VzcyhTdHJpbmcgcykgeworICAgICAgICAgICAgICAgIG15QSA9IHMubGVuZ3RoKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH07CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVUb0Fub255bW91c0NsYXNzL1ZhcmFyZ3MuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVUb0Fub255bW91c0NsYXNzL1ZhcmFyZ3MuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZWI5MGFlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVRvQW5vbnltb3VzQ2xhc3MvVmFyYXJncy5qYXZhCkBAIC0wLDAgKzEsMTcgQEAKK2NsYXNzIEEgeworICAgIHB1YmxpYyB2b2lkIHRlc3QoKSB7CisgICAgICAgIE9iamVjdCBvID0gbmV3IElubmVyKDEsIDIsIDMpOworICAgIH0KKworICAgIHByaXZhdGUgY2xhc3MgPGNhcmV0PklubmVyIHsKKyAgICAgICAgcHJpdmF0ZSBpbnQgbGVuZ3RoOworCisgICAgICAgIHB1YmxpYyBJbm5lcihpbnQuLi4gdmFsdWVzKSB7CisgICAgICAgICAgICBsZW5ndGggPSB2YWx1ZXMubGVuZ3RoOworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIFN0cmluZyB0b1N0cmluZygpIHsKKyAgICAgICAgICAgIHJldHVybiBJbnRlZ2VyLnRvU3RyaW5nKGxlbmd0aCk7CisgICAgICAgIH0KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVRvQW5vbnltb3VzQ2xhc3MvVmFyYXJncy5qYXZhLmFmdGVyIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVRvQW5vbnltb3VzQ2xhc3MvVmFyYXJncy5qYXZhLmFmdGVyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE0MDRmZTEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lVG9Bbm9ueW1vdXNDbGFzcy9WYXJhcmdzLmphdmEuYWZ0ZXIKQEAgLTAsMCArMSwxNyBAQAorY2xhc3MgQSB7CisgICAgcHVibGljIHZvaWQgdGVzdCgpIHsKKyAgICAgICAgZmluYWwgaW50W10gdmFsdWVzID0gbmV3IGludFtdezEsIDIsIDN9OworICAgICAgICBPYmplY3QgbyA9IG5ldyBPYmplY3QoKSB7CisgICAgICAgICAgICBwcml2YXRlIGludCBsZW5ndGg7CisKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBsZW5ndGggPSB2YWx1ZXMubGVuZ3RoOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBwdWJsaWMgU3RyaW5nIHRvU3RyaW5nKCkgeworICAgICAgICAgICAgICAgIHJldHVybiBJbnRlZ2VyLnRvU3RyaW5nKGxlbmd0aCk7CisgICAgICAgICAgICB9CisgICAgICAgIH07CisgICAgfQorICAgIAorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVUb0Fub255bW91c0NsYXNzL1dyaXRhYmxlRmllbGRJbml0aWFsaXplZFdpdGhQYXJhbWV0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVUb0Fub255bW91c0NsYXNzL1dyaXRhYmxlRmllbGRJbml0aWFsaXplZFdpdGhQYXJhbWV0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZDA2ZjkxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVRvQW5vbnltb3VzQ2xhc3MvV3JpdGFibGVGaWVsZEluaXRpYWxpemVkV2l0aFBhcmFtZXRlci5qYXZhCkBAIC0wLDAgKzEsMTkgQEAKK2NsYXNzIEEgeworICAgIHB1YmxpYyB2b2lkIGRvVGVzdCgpIHsKKyAgICAgICAgaW50IGkgPSAyOworICAgICAgICBPYmplY3QgYiA9IG5ldyBJbm5lcihpKjIpOworICAgIH0KKworICAgIHByaXZhdGUgY2xhc3MgPGNhcmV0PklubmVyIHsKKyAgICAgICAgcHJpdmF0ZSBpbnQgaTsKKworICAgICAgICBwdWJsaWMgSW5uZXIoaW50IGFyZykgeworICAgICAgICAgICAgaT1hcmc7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgU3RyaW5nIHRvU3RyaW5nKCkgeworICAgICAgICAgICAgaSsrOworICAgICAgICAgICAgcmV0dXJuICJBIjsKKyAgICAgICAgfQorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lVG9Bbm9ueW1vdXNDbGFzcy9Xcml0YWJsZUZpZWxkSW5pdGlhbGl6ZWRXaXRoUGFyYW1ldGVyLmphdmEuYWZ0ZXIgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lVG9Bbm9ueW1vdXNDbGFzcy9Xcml0YWJsZUZpZWxkSW5pdGlhbGl6ZWRXaXRoUGFyYW1ldGVyLmphdmEuYWZ0ZXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2Q0ZGFlZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVUb0Fub255bW91c0NsYXNzL1dyaXRhYmxlRmllbGRJbml0aWFsaXplZFdpdGhQYXJhbWV0ZXIuamF2YS5hZnRlcgpAQCAtMCwwICsxLDE1IEBACitjbGFzcyBBIHsKKyAgICBwdWJsaWMgdm9pZCBkb1Rlc3QoKSB7CisgICAgICAgIGludCBpID0gMjsKKyAgICAgICAgZmluYWwgaW50IGFyZyA9IGkgKiAyOworICAgICAgICBPYmplY3QgYiA9IG5ldyBPYmplY3QoKSB7CisgICAgICAgICAgICBwcml2YXRlIGludCBpID0gYXJnOworCisgICAgICAgICAgICBwdWJsaWMgU3RyaW5nIHRvU3RyaW5nKCkgeworICAgICAgICAgICAgICAgIGkrKzsKKyAgICAgICAgICAgICAgICByZXR1cm4gIkEiOworICAgICAgICAgICAgfQorICAgICAgICB9OworICAgIH0KKworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVUb0Fub255bW91c0NsYXNzL1dyaXRhYmxlSW5pdGlhbGl6ZWRGaWVsZC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVRvQW5vbnltb3VzQ2xhc3MvV3JpdGFibGVJbml0aWFsaXplZEZpZWxkLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDY2N2U2ZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVUb0Fub255bW91c0NsYXNzL1dyaXRhYmxlSW5pdGlhbGl6ZWRGaWVsZC5qYXZhCkBAIC0wLDAgKzEsMTYgQEAKK2NsYXNzIEEgeworICAgIHByaXZhdGUgT2JqZWN0IGIgPSBuZXcgSW5uZXIoKTsKKworICAgIHByaXZhdGUgY2xhc3MgPGNhcmV0PklubmVyIHsKKyAgICAgICAgcHJpdmF0ZSBpbnQgaTsKKworICAgICAgICBwdWJsaWMgSW5uZXIoKSB7CisgICAgICAgICAgICBpPTA7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgU3RyaW5nIHRvU3RyaW5nKCkgeworICAgICAgICAgICAgaSsrOworICAgICAgICAgICAgcmV0dXJuICJBIjsKKyAgICAgICAgfQorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lVG9Bbm9ueW1vdXNDbGFzcy9Xcml0YWJsZUluaXRpYWxpemVkRmllbGQuamF2YS5hZnRlciBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVUb0Fub255bW91c0NsYXNzL1dyaXRhYmxlSW5pdGlhbGl6ZWRGaWVsZC5qYXZhLmFmdGVyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU2YTM1NWMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lVG9Bbm9ueW1vdXNDbGFzcy9Xcml0YWJsZUluaXRpYWxpemVkRmllbGQuamF2YS5hZnRlcgpAQCAtMCwwICsxLDExIEBACitjbGFzcyBBIHsKKyAgICBwcml2YXRlIE9iamVjdCBiID0gbmV3IE9iamVjdCgpIHsKKyAgICAgICAgcHJpdmF0ZSBpbnQgaSA9IDA7CisKKyAgICAgICAgcHVibGljIFN0cmluZyB0b1N0cmluZygpIHsKKyAgICAgICAgICAgIGkrKzsKKyAgICAgICAgICAgIHJldHVybiAiQSI7CisgICAgICAgIH0KKyAgICB9OworCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVRvQW5vbnltb3VzQ2xhc3MvbXVsdGlmaWxlL2ltcG9ydEZvckNvbnN0cnVjdG9yL2FmdGVyL3AxL1BhcmVudFVuaXF1ZU5hbWUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVUb0Fub255bW91c0NsYXNzL211bHRpZmlsZS9pbXBvcnRGb3JDb25zdHJ1Y3Rvci9hZnRlci9wMS9QYXJlbnRVbmlxdWVOYW1lLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzYwYjFlNgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVUb0Fub255bW91c0NsYXNzL211bHRpZmlsZS9pbXBvcnRGb3JDb25zdHJ1Y3Rvci9hZnRlci9wMS9QYXJlbnRVbmlxdWVOYW1lLmphdmEKQEAgLTAsMCArMSw0IEBACitwYWNrYWdlIHAxOworCitwdWJsaWMgY2xhc3MgUGFyZW50VW5pcXVlTmFtZSB7Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lVG9Bbm9ueW1vdXNDbGFzcy9tdWx0aWZpbGUvaW1wb3J0Rm9yQ29uc3RydWN0b3IvYWZ0ZXIvcDIvVXNhZ2UuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVUb0Fub255bW91c0NsYXNzL211bHRpZmlsZS9pbXBvcnRGb3JDb25zdHJ1Y3Rvci9hZnRlci9wMi9Vc2FnZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJhOTdjZGMxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVRvQW5vbnltb3VzQ2xhc3MvbXVsdGlmaWxlL2ltcG9ydEZvckNvbnN0cnVjdG9yL2FmdGVyL3AyL1VzYWdlLmphdmEKQEAgLTAsMCArMSwxMiBAQAorcGFja2FnZSBwMjsKKworaW1wb3J0IHAxLlBhcmVudFVuaXF1ZU5hbWU7CisKK3B1YmxpYyBjbGFzcyBVc2FnZSB7CisgICAgcHVibGljIHZvaWQgdGVzdCgpIHsKKyAgICAgICAgZXF1YWxzKG5ldyBQYXJlbnRVbmlxdWVOYW1lKCkgeworICAgICAgICAgICAgcHVibGljIHZvaWQgdGVzdCgpIHsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVUb0Fub255bW91c0NsYXNzL211bHRpZmlsZS9pbXBvcnRGb3JDb25zdHJ1Y3Rvci9iZWZvcmUvcDEvQ2hpbGRDdG9yLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lVG9Bbm9ueW1vdXNDbGFzcy9tdWx0aWZpbGUvaW1wb3J0Rm9yQ29uc3RydWN0b3IvYmVmb3JlL3AxL0NoaWxkQ3Rvci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlmOTBkOTYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lVG9Bbm9ueW1vdXNDbGFzcy9tdWx0aWZpbGUvaW1wb3J0Rm9yQ29uc3RydWN0b3IvYmVmb3JlL3AxL0NoaWxkQ3Rvci5qYXZhCkBAIC0wLDAgKzEsNiBAQAorcGFja2FnZSBwMTsKKworcHVibGljIGNsYXNzIENoaWxkQ3RvciBleHRlbmRzIFBhcmVudFVuaXF1ZU5hbWUgeworICAgIHB1YmxpYyB2b2lkIHRlc3QoKSB7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVUb0Fub255bW91c0NsYXNzL211bHRpZmlsZS9pbXBvcnRGb3JDb25zdHJ1Y3Rvci9iZWZvcmUvcDEvUGFyZW50VW5pcXVlTmFtZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVRvQW5vbnltb3VzQ2xhc3MvbXVsdGlmaWxlL2ltcG9ydEZvckNvbnN0cnVjdG9yL2JlZm9yZS9wMS9QYXJlbnRVbmlxdWVOYW1lLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzYwYjFlNgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVUb0Fub255bW91c0NsYXNzL211bHRpZmlsZS9pbXBvcnRGb3JDb25zdHJ1Y3Rvci9iZWZvcmUvcDEvUGFyZW50VW5pcXVlTmFtZS5qYXZhCkBAIC0wLDAgKzEsNCBAQAorcGFja2FnZSBwMTsKKworcHVibGljIGNsYXNzIFBhcmVudFVuaXF1ZU5hbWUgeworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVRvQW5vbnltb3VzQ2xhc3MvbXVsdGlmaWxlL2ltcG9ydEZvckNvbnN0cnVjdG9yL2JlZm9yZS9wMi9Vc2FnZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVRvQW5vbnltb3VzQ2xhc3MvbXVsdGlmaWxlL2ltcG9ydEZvckNvbnN0cnVjdG9yL2JlZm9yZS9wMi9Vc2FnZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNlYWZlNTQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lVG9Bbm9ueW1vdXNDbGFzcy9tdWx0aWZpbGUvaW1wb3J0Rm9yQ29uc3RydWN0b3IvYmVmb3JlL3AyL1VzYWdlLmphdmEKQEAgLTAsMCArMSw5IEBACitwYWNrYWdlIHAyOworCitpbXBvcnQgcDEuQ2hpbGRDdG9yOworCitwdWJsaWMgY2xhc3MgVXNhZ2UgeworICAgIHB1YmxpYyB2b2lkIHRlc3QoKSB7CisgICAgICAgIGVxdWFscyhuZXcgQ2hpbGRDdG9yKCkpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lVG9Bbm9ueW1vdXNDbGFzcy9tdWx0aWZpbGUvcHJvdGVjdGVkTWVtYmVyL2FmdGVyL3AxL1BhcmVudFdpdGhQcm90ZWN0ZWQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVUb0Fub255bW91c0NsYXNzL211bHRpZmlsZS9wcm90ZWN0ZWRNZW1iZXIvYWZ0ZXIvcDEvUGFyZW50V2l0aFByb3RlY3RlZC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM5NzU3ZGQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lVG9Bbm9ueW1vdXNDbGFzcy9tdWx0aWZpbGUvcHJvdGVjdGVkTWVtYmVyL2FmdGVyL3AxL1BhcmVudFdpdGhQcm90ZWN0ZWQuamF2YQpAQCAtMCwwICsxLDkgQEAKK3BhY2thZ2UgcDE7CisKK3B1YmxpYyBjbGFzcyBQYXJlbnRXaXRoUHJvdGVjdGVkIHsKKyAgcHJvdGVjdGVkIGludCBteU93biA9IDA7CisKKyAgcHJvdGVjdGVkIHZvaWQgaW5jcmVhc2VNZShpbnQgaSkgeworCW15T3duICs9IGk7CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVUb0Fub255bW91c0NsYXNzL211bHRpZmlsZS9wcm90ZWN0ZWRNZW1iZXIvYWZ0ZXIvcDIvVXNhZ2UuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVUb0Fub255bW91c0NsYXNzL211bHRpZmlsZS9wcm90ZWN0ZWRNZW1iZXIvYWZ0ZXIvcDIvVXNhZ2UuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYzQwMzE5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVRvQW5vbnltb3VzQ2xhc3MvbXVsdGlmaWxlL3Byb3RlY3RlZE1lbWJlci9hZnRlci9wMi9Vc2FnZS5qYXZhCkBAIC0wLDAgKzEsMTMgQEAKK3BhY2thZ2UgcDI7CisKK2ltcG9ydCBwMS5QYXJlbnRXaXRoUHJvdGVjdGVkOworCitwdWJsaWMgY2xhc3MgVXNhZ2UgeworICAgIHB1YmxpYyB2b2lkIHRlc3QoKSB7CisgICAgICAgIFBhcmVudFdpdGhQcm90ZWN0ZWQgc3dzID0gbmV3IFBhcmVudFdpdGhQcm90ZWN0ZWQoKSB7CisgICAgICAgICAgICBwdWJsaWMgdm9pZCBjcmVhc2VNZShpbnQgaSkgeworICAgICAgICAgICAgICBpbmNyZWFzZU1lKGkpOworICAgICAgICAgICAgfQorICAgICAgICB9OworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lVG9Bbm9ueW1vdXNDbGFzcy9tdWx0aWZpbGUvcHJvdGVjdGVkTWVtYmVyL2JlZm9yZS9wMS9QYXJlbnRXaXRoUHJvdGVjdGVkLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lVG9Bbm9ueW1vdXNDbGFzcy9tdWx0aWZpbGUvcHJvdGVjdGVkTWVtYmVyL2JlZm9yZS9wMS9QYXJlbnRXaXRoUHJvdGVjdGVkLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzk3NTdkZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVUb0Fub255bW91c0NsYXNzL211bHRpZmlsZS9wcm90ZWN0ZWRNZW1iZXIvYmVmb3JlL3AxL1BhcmVudFdpdGhQcm90ZWN0ZWQuamF2YQpAQCAtMCwwICsxLDkgQEAKK3BhY2thZ2UgcDE7CisKK3B1YmxpYyBjbGFzcyBQYXJlbnRXaXRoUHJvdGVjdGVkIHsKKyAgcHJvdGVjdGVkIGludCBteU93biA9IDA7CisKKyAgcHJvdGVjdGVkIHZvaWQgaW5jcmVhc2VNZShpbnQgaSkgeworCW15T3duICs9IGk7CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVUb0Fub255bW91c0NsYXNzL211bHRpZmlsZS9wcm90ZWN0ZWRNZW1iZXIvYmVmb3JlL3AxL1N1YmplY3RXaXRoU3VwZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVUb0Fub255bW91c0NsYXNzL211bHRpZmlsZS9wcm90ZWN0ZWRNZW1iZXIvYmVmb3JlL3AxL1N1YmplY3RXaXRoU3VwZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNWZhOGE4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVRvQW5vbnltb3VzQ2xhc3MvbXVsdGlmaWxlL3Byb3RlY3RlZE1lbWJlci9iZWZvcmUvcDEvU3ViamVjdFdpdGhTdXBlci5qYXZhCkBAIC0wLDAgKzEsNyBAQAorcGFja2FnZSBwMTsKKworcHVibGljIGNsYXNzIFN1YmplY3RXaXRoU3VwZXIgZXh0ZW5kcyBQYXJlbnRXaXRoUHJvdGVjdGVkIHsKKyAgICBwdWJsaWMgdm9pZCBjcmVhc2VNZShpbnQgaSkgeworICAJaW5jcmVhc2VNZShpKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lVG9Bbm9ueW1vdXNDbGFzcy9tdWx0aWZpbGUvcHJvdGVjdGVkTWVtYmVyL2JlZm9yZS9wMi9Vc2FnZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVRvQW5vbnltb3VzQ2xhc3MvbXVsdGlmaWxlL3Byb3RlY3RlZE1lbWJlci9iZWZvcmUvcDIvVXNhZ2UuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MjliNmQ5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVRvQW5vbnltb3VzQ2xhc3MvbXVsdGlmaWxlL3Byb3RlY3RlZE1lbWJlci9iZWZvcmUvcDIvVXNhZ2UuamF2YQpAQCAtMCwwICsxLDkgQEAKK3BhY2thZ2UgcDI7CisKK2ltcG9ydCBwMS5TdWJqZWN0V2l0aFN1cGVyOworCitwdWJsaWMgY2xhc3MgVXNhZ2UgeworICAgIHB1YmxpYyB2b2lkIHRlc3QoKSB7CisgICAgICAgIFN1YmplY3RXaXRoU3VwZXIgc3dzID0gbmV3IFN1YmplY3RXaXRoU3VwZXIoKTsgICAgCisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVUb0Fub255bW91c0NsYXNzL211bHRpZmlsZS9zdGF0aWNJbXBvcnRzL2FmdGVyL3AxL1VzYWdlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lVG9Bbm9ueW1vdXNDbGFzcy9tdWx0aWZpbGUvc3RhdGljSW1wb3J0cy9hZnRlci9wMS9Vc2FnZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIwNWUzZjEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lVG9Bbm9ueW1vdXNDbGFzcy9tdWx0aWZpbGUvc3RhdGljSW1wb3J0cy9hZnRlci9wMS9Vc2FnZS5qYXZhCkBAIC0wLDAgKzEsMTEgQEAKK3BhY2thZ2UgcDE7CisKK2ltcG9ydCBzdGF0aWMgcDIuU3RhdGljcy5QVUJfQ09OU1Q7CisKK3B1YmxpYyBjbGFzcyBVc2FnZSB7CisgICAgcHVibGljIHZvaWQgdGVzdCgpIHsKKyAgICAgICAgT2JqZWN0IGkgPSBuZXcgT2JqZWN0KCkgeworICAgICAgICAgICAgcHVibGljIGludCBteUludCA9IFBVQl9DT05TVDsKKyAgICAgICAgfTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVRvQW5vbnltb3VzQ2xhc3MvbXVsdGlmaWxlL3N0YXRpY0ltcG9ydHMvYWZ0ZXIvcDIvU3RhdGljcy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVRvQW5vbnltb3VzQ2xhc3MvbXVsdGlmaWxlL3N0YXRpY0ltcG9ydHMvYWZ0ZXIvcDIvU3RhdGljcy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMzNzlhZDYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lVG9Bbm9ueW1vdXNDbGFzcy9tdWx0aWZpbGUvc3RhdGljSW1wb3J0cy9hZnRlci9wMi9TdGF0aWNzLmphdmEKQEAgLTAsMCArMSw1IEBACitwYWNrYWdlIHAyOworCitwdWJsaWMgY2xhc3MgU3RhdGljcyB7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgUFVCX0NPTlNUID0gMDsKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVUb0Fub255bW91c0NsYXNzL211bHRpZmlsZS9zdGF0aWNJbXBvcnRzL2JlZm9yZS9wMS9JbmxpbmVkLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lVG9Bbm9ueW1vdXNDbGFzcy9tdWx0aWZpbGUvc3RhdGljSW1wb3J0cy9iZWZvcmUvcDEvSW5saW5lZC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJmNzNmMmQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lVG9Bbm9ueW1vdXNDbGFzcy9tdWx0aWZpbGUvc3RhdGljSW1wb3J0cy9iZWZvcmUvcDEvSW5saW5lZC5qYXZhCkBAIC0wLDAgKzEsMTUgQEAKK3BhY2thZ2UgcDE7CisKK2ltcG9ydCBzdGF0aWMgcDIuU3RhdGljcy5QVUJfQ09OU1Q7CisKK3B1YmxpYyBjbGFzcyBJbmxpbmVkIHsKKyAgICBwdWJsaWMgaW50IG15SW50ID0gUFVCX0NPTlNUOworCisgICAgcHVibGljIElubGluZWQoKSB7CisgICAgICAgdGhpcyhQVUJfQ09OU1QpOworICAgIH0KKworICAgIHB1YmxpYyBJbmxpbmVkKGludCBpKSB7CisgICAgICAgIG15SW50ID0gaTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lVG9Bbm9ueW1vdXNDbGFzcy9tdWx0aWZpbGUvc3RhdGljSW1wb3J0cy9iZWZvcmUvcDEvVXNhZ2UuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVUb0Fub255bW91c0NsYXNzL211bHRpZmlsZS9zdGF0aWNJbXBvcnRzL2JlZm9yZS9wMS9Vc2FnZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU3MTFlYmIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5saW5lVG9Bbm9ueW1vdXNDbGFzcy9tdWx0aWZpbGUvc3RhdGljSW1wb3J0cy9iZWZvcmUvcDEvVXNhZ2UuamF2YQpAQCAtMCwwICsxLDcgQEAKK3BhY2thZ2UgcDE7CisKK3B1YmxpYyBjbGFzcyBVc2FnZSB7CisgICAgcHVibGljIHZvaWQgdGVzdCgpIHsKKyAgICAgICAgSW5saW5lZCBpID0gbmV3IElubGluZWQoKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lubGluZVRvQW5vbnltb3VzQ2xhc3MvbXVsdGlmaWxlL3N0YXRpY0ltcG9ydHMvYmVmb3JlL3AyL1N0YXRpY3MuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVUb0Fub255bW91c0NsYXNzL211bHRpZmlsZS9zdGF0aWNJbXBvcnRzL2JlZm9yZS9wMi9TdGF0aWNzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzM3OWFkNgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbmxpbmVUb0Fub255bW91c0NsYXNzL211bHRpZmlsZS9zdGF0aWNJbXBvcnRzL2JlZm9yZS9wMi9TdGF0aWNzLmphdmEKQEAgLTAsMCArMSw1IEBACitwYWNrYWdlIHAyOworCitwdWJsaWMgY2xhc3MgU3RhdGljcyB7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgUFVCX0NPTlNUID0gMDsKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnBsYWNlSW50cm9kdWNlQ29uc3RhbnQvY29uZmxpY3RpbmdDb25zdGFudE5hbWUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnBsYWNlSW50cm9kdWNlQ29uc3RhbnQvY29uZmxpY3RpbmdDb25zdGFudE5hbWUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZTBiMzdhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lucGxhY2VJbnRyb2R1Y2VDb25zdGFudC9jb25mbGljdGluZ0NvbnN0YW50TmFtZS5qYXZhCkBAIC0wLDAgKzEsMjIgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwMC0yMDExIEpldEJyYWlucyBzLnIuby4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitjbGFzcyBUZXN0IHsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgRk9PID0gImZvbyI7CisgICAgcHVibGljIHZvaWQgbWV0aG9kKE1hcDxPYmplY3QsIE9iamVjdD4gYXJncykgeworICAgICAgU3lzdGVtLm91dC5wcmludGxuKEZPTyk7CisgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oImZvPGNhcmV0Pm8iKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5wbGFjZUludHJvZHVjZUNvbnN0YW50L2NvbmZsaWN0aW5nQ29uc3RhbnROYW1lX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5wbGFjZUludHJvZHVjZUNvbnN0YW50L2NvbmZsaWN0aW5nQ29uc3RhbnROYW1lX2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjA4NDYxYgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnBsYWNlSW50cm9kdWNlQ29uc3RhbnQvY29uZmxpY3RpbmdDb25zdGFudE5hbWVfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDI0IEBACisvKgorICogQ29weXJpZ2h0IDIwMDAtMjAxMSBKZXRCcmFpbnMgcy5yLm8uCisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworY2xhc3MgVGVzdCB7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIEZPTyA9ICJmb28iOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEZPTzEgPSAiZm9vIjsKKworICAgIHB1YmxpYyB2b2lkIG1ldGhvZChNYXA8T2JqZWN0LCBPYmplY3Q+IGFyZ3MpIHsKKyAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihGT08pOworICAgICAgU3lzdGVtLm91dC5wcmludGxuKEZPTzEpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnBsYWNlSW50cm9kdWNlQ29uc3RhbnQvY29ycmVjdENvbnN0YW50UG9zaXRpb24uamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnBsYWNlSW50cm9kdWNlQ29uc3RhbnQvY29ycmVjdENvbnN0YW50UG9zaXRpb24uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYjczYjg3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lucGxhY2VJbnRyb2R1Y2VDb25zdGFudC9jb3JyZWN0Q29uc3RhbnRQb3NpdGlvbi5qYXZhCkBAIC0wLDAgKzEsMTggQEAKK3B1YmxpYyBjbGFzcyBSZXMgeworCisgICAgdm9pZCBiYXIoUiByKXt9CisKKyAgICBpbnRlcmZhY2UgUjxTLCBUPiB7CisgICAgICAgIHZvaWQgbGEoUyBzLCBUIHQpOworICAgIH0KKworICAgIHByaXZhdGUgdm9pZCB2YWxpZGF0ZVN0cnVjdHVyZXNDb29raWUoUmVzIGNvb2tpZSkgeworICAgICAgICBjb29raWUuYmFyKG5ldyA8Y2FyZXQ+UjxTdHJpbmcsIE9iamVjdD4oKXsKKyAgICAgICAgICAgIGZpbmFsIFN0cmluZyBwYXJhbSA9ICIiOworICAgICAgICAgICAgQE92ZXJyaWRlCisgICAgICAgICAgICBwdWJsaWMgdm9pZCBsYShTdHJpbmcgcywgT2JqZWN0IG8pIHsKKyAgICAgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4ocGFyYW0pOworICAgICAgICAgICAgfQorICAgICAgICB9KTsKKyAgICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5wbGFjZUludHJvZHVjZUNvbnN0YW50L2NvcnJlY3RDb25zdGFudFBvc2l0aW9uX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5wbGFjZUludHJvZHVjZUNvbnN0YW50L2NvcnJlY3RDb25zdGFudFBvc2l0aW9uX2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWU5OTRiOAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnBsYWNlSW50cm9kdWNlQ29uc3RhbnQvY29ycmVjdENvbnN0YW50UG9zaXRpb25fYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDIxIEBACitwdWJsaWMgY2xhc3MgUmVzIHsKKworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgUmVzLlI8U3RyaW5nLE9iamVjdD4gUiA9IG5ldyBSZXMuUjxTdHJpbmcsIE9iamVjdD4oKSB7CisgICAgICAgIGZpbmFsIFN0cmluZyBwYXJhbSA9ICIiOworCisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgdm9pZCBsYShTdHJpbmcgcywgT2JqZWN0IG8pIHsKKyAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihwYXJhbSk7CisgICAgICAgIH0KKyAgICB9OworCisgICAgdm9pZCBiYXIoUiByKXt9CisKKyAgICBpbnRlcmZhY2UgUjxTLCBUPiB7CisgICAgICAgIHZvaWQgbGEoUyBzLCBUIHQpOworICAgIH0KKworICAgIHByaXZhdGUgdm9pZCB2YWxpZGF0ZVN0cnVjdHVyZXNDb29raWUoUmVzIGNvb2tpZSkgeworICAgICAgICBjb29raWUuYmFyKDxjYXJldD5SKTsKKyAgICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5wbGFjZUludHJvZHVjZUNvbnN0YW50L2NvcnJlY3RGaW5hbFBvc2l0aW9uLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5wbGFjZUludHJvZHVjZUNvbnN0YW50L2NvcnJlY3RGaW5hbFBvc2l0aW9uLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzc0MjdkOQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnBsYWNlSW50cm9kdWNlQ29uc3RhbnQvY29ycmVjdEZpbmFsUG9zaXRpb24uamF2YQpAQCAtMCwwICsxLDMgQEAKK2NsYXNzIFRlc3QgeworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBGT08gPSA2MCAqIDY8Y2FyZXQ+MDsKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnBsYWNlSW50cm9kdWNlQ29uc3RhbnQvY29ycmVjdEZpbmFsUG9zaXRpb25fYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnBsYWNlSW50cm9kdWNlQ29uc3RhbnQvY29ycmVjdEZpbmFsUG9zaXRpb25fYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMzBhYzM5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lucGxhY2VJbnRyb2R1Y2VDb25zdGFudC9jb3JyZWN0RmluYWxQb3NpdGlvbl9hZnRlci5qYXZhCkBAIC0wLDAgKzEsNCBAQAorY2xhc3MgVGVzdCB7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgU0VDID0gNjA7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IEZPTyA9IDYwICogPGNhcmV0PlNFQzsKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnBsYWNlSW50cm9kdWNlQ29uc3RhbnQvZXNjYXBlUG9zaXRpb24uamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnBsYWNlSW50cm9kdWNlQ29uc3RhbnQvZXNjYXBlUG9zaXRpb24uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYTQ0ZTNiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lucGxhY2VJbnRyb2R1Y2VDb25zdGFudC9lc2NhcGVQb3NpdGlvbi5qYXZhCkBAIC0wLDAgKzEsMjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwMC0yMDExIEpldEJyYWlucyBzLnIuby4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitjbGFzcyBUZXN0IHsKKyAgICB2b2lkIHNpbXBsZU1ldGhvZCgpIHsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCI8Y2FyZXQ+Iik7CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiIik7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lucGxhY2VJbnRyb2R1Y2VDb25zdGFudC9lc2NhcGVQb3NpdGlvbk9uTG9jYWwuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnBsYWNlSW50cm9kdWNlQ29uc3RhbnQvZXNjYXBlUG9zaXRpb25PbkxvY2FsLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjRmMDNhYwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnBsYWNlSW50cm9kdWNlQ29uc3RhbnQvZXNjYXBlUG9zaXRpb25PbkxvY2FsLmphdmEKQEAgLTAsMCArMSwyMCBAQAorLyoKKyAqIENvcHlyaWdodCAyMDAwLTIwMTEgSmV0QnJhaW5zIHMuci5vLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK2NsYXNzIFRlc3QgeworICAgIHZvaWQgc2ltcGxlTWV0aG9kKCkgeworICAgICAgICBib29sZWFuIGI8Y2FyZXQ+YiA9IGZhbHNlOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnBsYWNlSW50cm9kdWNlQ29uc3RhbnQvZXNjYXBlUG9zaXRpb25PbkxvY2FsX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5wbGFjZUludHJvZHVjZUNvbnN0YW50L2VzY2FwZVBvc2l0aW9uT25Mb2NhbF9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhmN2E5OGQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5wbGFjZUludHJvZHVjZUNvbnN0YW50L2VzY2FwZVBvc2l0aW9uT25Mb2NhbF9hZnRlci5qYXZhCkBAIC0wLDAgKzEsMjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwMC0yMDExIEpldEJyYWlucyBzLnIuby4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitjbGFzcyBUZXN0IHsKKworICAgIHZvaWQgc2ltcGxlTWV0aG9kKCkgeworICAgICAgICBib29sZWFuIDxjYXJldD5iYiA9IGZhbHNlOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnBsYWNlSW50cm9kdWNlQ29uc3RhbnQvZXNjYXBlUG9zaXRpb25fYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnBsYWNlSW50cm9kdWNlQ29uc3RhbnQvZXNjYXBlUG9zaXRpb25fYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNGRkNTMzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lucGxhY2VJbnRyb2R1Y2VDb25zdGFudC9lc2NhcGVQb3NpdGlvbl9hZnRlci5qYXZhCkBAIC0wLDAgKzEsMjIgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwMC0yMDExIEpldEJyYWlucyBzLnIuby4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitjbGFzcyBUZXN0IHsKKworICAgIHZvaWQgc2ltcGxlTWV0aG9kKCkgeworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oPGNhcmV0PiIiKTsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCIiKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5wbGFjZUludHJvZHVjZUNvbnN0YW50L25vQ29uZmxpY3RpbmdDb25zdGFudE5hbWUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnBsYWNlSW50cm9kdWNlQ29uc3RhbnQvbm9Db25mbGljdGluZ0NvbnN0YW50TmFtZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVjZjEzMmUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5wbGFjZUludHJvZHVjZUNvbnN0YW50L25vQ29uZmxpY3RpbmdDb25zdGFudE5hbWUuamF2YQpAQCAtMCwwICsxLDIxIEBACisvKgorICogQ29weXJpZ2h0IDIwMDAtMjAxMSBKZXRCcmFpbnMgcy5yLm8uCisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworY2xhc3MgVGVzdCB7CisgICAgcHVibGljIHZvaWQgbWV0aG9kKFN0cmluZyBGT08pIHsKKyAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihGT08pOworICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJmbzxjYXJldD5vIik7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lucGxhY2VJbnRyb2R1Y2VDb25zdGFudC9ub0NvbmZsaWN0aW5nQ29uc3RhbnROYW1lX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5wbGFjZUludHJvZHVjZUNvbnN0YW50L25vQ29uZmxpY3RpbmdDb25zdGFudE5hbWVfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MjdjNDFhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lucGxhY2VJbnRyb2R1Y2VDb25zdGFudC9ub0NvbmZsaWN0aW5nQ29uc3RhbnROYW1lX2FmdGVyLmphdmEKQEAgLTAsMCArMSwyNCBAQAorLyoKKyAqIENvcHlyaWdodCAyMDAwLTIwMTEgSmV0QnJhaW5zIHMuci5vLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK2NsYXNzIFRlc3QgeworCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgRk9PID0gImZvbyI7CisKKyAgICBwdWJsaWMgdm9pZCBtZXRob2QoU3RyaW5nIEZPTykgeworICAgICAgU3lzdGVtLm91dC5wcmludGxuKEZPTyk7CisgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oVGVzdC5GT08pOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnBsYWNlSW50cm9kdWNlQ29uc3RhbnQvcmVwbGFjZUFsbC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lucGxhY2VJbnRyb2R1Y2VDb25zdGFudC9yZXBsYWNlQWxsLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjg5N2MzYQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnBsYWNlSW50cm9kdWNlQ29uc3RhbnQvcmVwbGFjZUFsbC5qYXZhCkBAIC0wLDAgKzEsMzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwMC0yMDExIEpldEJyYWlucyBzLnIuby4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitjbGFzcyBUZXN0IHsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBPYmplY3QgTE9HID0gbnVsbDsKKyAgICBwcml2YXRlIGZpbmFsIFNldDxNYXA+IG15TWV0aG9kcyA9IG5ldyBIYXNoU2V0PE1hcD4oKTsKKyAgICBwcml2YXRlIGZpbmFsIFNldDxNYXA+IG15TWV0aG9kczEgPSBuZXcgSGFzaFNldDxNYXA+KCk7CisgICAgcHVibGljIHZvaWQgbWV0aG9kKE1hcDxPYmplY3QsIE9iamVjdD4gYXJncykgeworICAgICAgICBmaW5hbCBPYmplY3QgdG9UaHJvdyA9IGFyZ3MuZ2V0KCJ0aHJvd3MiKTsKKyAgICAgICAgaWYgKHRvVGhyb3cgaW5zdGFuY2VvZiBMaXN0KSB7CisgICAgICAgICAgICBmaW5hbCBBcnJheUxpc3Q8U3RyaW5nPiBsaXN0ID0gbmV3IEFycmF5TGlzdDxTdHJpbmc+KCk7CisgICAgICAgICAgICBhcmdzLnB1dCgidGhyPGNhcmV0Pm93cyIsIGxpc3QpOworICAgICAgICB9IGVsc2UgaWYgKHRvVGhyb3cgIT0gbnVsbCkgeworICAgICAgICAgICAgYXJncy5wdXQoInRocm93cyIsIENvbGxlY3Rpb25zLnNpbmdsZXRvbih0b1Rocm93KSk7CisgICAgICAgIH0KKyAgICAgICAgbXlNZXRob2RzLmFkZChhcmdzKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5wbGFjZUludHJvZHVjZUNvbnN0YW50L3JlcGxhY2VBbGxGcm9tU2Vjb25kT2NjdXJyZW5jZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lucGxhY2VJbnRyb2R1Y2VDb25zdGFudC9yZXBsYWNlQWxsRnJvbVNlY29uZE9jY3VycmVuY2UuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yN2U5ZmM5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lucGxhY2VJbnRyb2R1Y2VDb25zdGFudC9yZXBsYWNlQWxsRnJvbVNlY29uZE9jY3VycmVuY2UuamF2YQpAQCAtMCwwICsxLDE1IEBACitpbXBvcnQgamF2YS5sYW5nLlN0cmluZzsKKworY2xhc3MgQSB7CisgIEEoU3RyaW5nIHN0cikgeworICB9CisgIAorICBwdWJsaWMgc3RhdGljIFN0cmluZyBnZXRWZXJ5TG9uZ1N0cmluZygpIHsKKyAgICByZXR1cm4gIiI7CisgIH0KKyAgCisgIHZvaWQgZm9vKCkgeworICAgIEEgYSA9IG5ldyBBKGdldFZlcnlMb25nU3RyaW5nKCkpOworICAgIEEgYTEgPSBuZXcgQShnZXRWZXJ5PGNhcmV0PkxvbmdTdHJpbmcoKSk7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5wbGFjZUludHJvZHVjZUNvbnN0YW50L3JlcGxhY2VBbGxGcm9tU2Vjb25kT2NjdXJyZW5jZV9hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lucGxhY2VJbnRyb2R1Y2VDb25zdGFudC9yZXBsYWNlQWxsRnJvbVNlY29uZE9jY3VycmVuY2VfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYzhjOWZhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lucGxhY2VJbnRyb2R1Y2VDb25zdGFudC9yZXBsYWNlQWxsRnJvbVNlY29uZE9jY3VycmVuY2VfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDE4IEBACitpbXBvcnQgamF2YS5sYW5nLlN0cmluZzsKKworY2xhc3MgQSB7CisKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBPID0gZ2V0VmVyeUxvbmdTdHJpbmcoKTsKKworICAgIEEoU3RyaW5nIHN0cikgeworICB9CisgIAorICBwdWJsaWMgc3RhdGljIFN0cmluZyBnZXRWZXJ5TG9uZ1N0cmluZygpIHsKKyAgICByZXR1cm4gIiI7CisgIH0KKyAgCisgIHZvaWQgZm9vKCkgeworICAgIEEgYSA9IG5ldyBBKE8pOworICAgIEEgYTEgPSBuZXcgQShPKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnBsYWNlSW50cm9kdWNlQ29uc3RhbnQvcmVwbGFjZUFsbFdpdGhDbGFzc1JlZlR5cGUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnBsYWNlSW50cm9kdWNlQ29uc3RhbnQvcmVwbGFjZUFsbFdpdGhDbGFzc1JlZlR5cGUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZjE5ZjI1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lucGxhY2VJbnRyb2R1Y2VDb25zdGFudC9yZXBsYWNlQWxsV2l0aENsYXNzUmVmVHlwZS5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKK3B1YmxpYyBjbGFzcyBEZXJyIHsKKworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKKyAgICAgICAgbG9uZyB2YWx1ZTsKKworICAgICAgICB2YWx1ZSA9IG5ldyBMbzxjYXJldD5uZygxKTsKKyAgICAgICAgdmFsdWUgPSBuZXcgTG9uZygxKTsKKyAgICAgICAgdmFsdWUgPSBuZXcgTG9uZygxKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lucGxhY2VJbnRyb2R1Y2VDb25zdGFudC9yZXBsYWNlQWxsV2l0aENsYXNzUmVmVHlwZV9hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lucGxhY2VJbnRyb2R1Y2VDb25zdGFudC9yZXBsYWNlQWxsV2l0aENsYXNzUmVmVHlwZV9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRmZmJhMDIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5wbGFjZUludHJvZHVjZUNvbnN0YW50L3JlcGxhY2VBbGxXaXRoQ2xhc3NSZWZUeXBlX2FmdGVyLmphdmEKQEAgLTAsMCArMSwxMiBAQAorcHVibGljIGNsYXNzIERlcnIgeworCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBMb25nIExPTkdPTkUgPSBuZXcgTG9uZygxKTsKKworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKKyAgICAgICAgbG9uZyB2YWx1ZTsKKworICAgICAgICB2YWx1ZSA9IExPTkdPTkU7CisgICAgICAgIHZhbHVlID0gTE9OR09ORTsKKyAgICAgICAgdmFsdWUgPSBMT05HT05FOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5wbGFjZUludHJvZHVjZUNvbnN0YW50L3JlcGxhY2VBbGxfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnBsYWNlSW50cm9kdWNlQ29uc3RhbnQvcmVwbGFjZUFsbF9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ1ZjI3YTMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5wbGFjZUludHJvZHVjZUNvbnN0YW50L3JlcGxhY2VBbGxfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDMxIEBACisvKgorICogQ29weXJpZ2h0IDIwMDAtMjAxMSBKZXRCcmFpbnMgcy5yLm8uCisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworY2xhc3MgVGVzdCB7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgT2JqZWN0IExPRyA9IG51bGw7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgVEhST1dTID0gInRocm93cyI7CisgICAgcHJpdmF0ZSBmaW5hbCBTZXQ8TWFwPiBteU1ldGhvZHMgPSBuZXcgSGFzaFNldDxNYXA+KCk7CisgICAgcHJpdmF0ZSBmaW5hbCBTZXQ8TWFwPiBteU1ldGhvZHMxID0gbmV3IEhhc2hTZXQ8TWFwPigpOworICAgIHB1YmxpYyB2b2lkIG1ldGhvZChNYXA8T2JqZWN0LCBPYmplY3Q+IGFyZ3MpIHsKKyAgICAgICAgZmluYWwgT2JqZWN0IHRvVGhyb3cgPSBhcmdzLmdldChUSFJPV1MpOworICAgICAgICBpZiAodG9UaHJvdyBpbnN0YW5jZW9mIExpc3QpIHsKKyAgICAgICAgICAgIGZpbmFsIEFycmF5TGlzdDxTdHJpbmc+IGxpc3QgPSBuZXcgQXJyYXlMaXN0PFN0cmluZz4oKTsKKyAgICAgICAgICAgIGFyZ3MucHV0KFRIUk9XUywgbGlzdCk7CisgICAgICAgIH0gZWxzZSBpZiAodG9UaHJvdyAhPSBudWxsKSB7CisgICAgICAgICAgICBhcmdzLnB1dChUSFJPV1MsIENvbGxlY3Rpb25zLnNpbmdsZXRvbih0b1Rocm93KSk7CisgICAgICAgIH0KKyAgICAgICAgbXlNZXRob2RzLmFkZChhcmdzKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5wbGFjZUludHJvZHVjZUZpZWxkL2FuY2hvci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lucGxhY2VJbnRyb2R1Y2VGaWVsZC9hbmNob3IuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMjJmNGI4ZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnBsYWNlSW50cm9kdWNlRmllbGQvYW5jaG9yLmphdmEKQEAgLTAsMCArMSw1IEBACitjbGFzcyBUZXN0IHsKKyAgdm9pZCBmb28oYm9vbGVhbiBvcGFxdWUpIHsKKyAgICBvcGFxPGNhcmV0PnVlCisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5wbGFjZUludHJvZHVjZUZpZWxkL2FuY2hvcjEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnBsYWNlSW50cm9kdWNlRmllbGQvYW5jaG9yMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEwMmRmYTMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5wbGFjZUludHJvZHVjZUZpZWxkL2FuY2hvcjEuamF2YQpAQCAtMCwwICsxLDggQEAKK2ltcG9ydCBqYXZhLnV0aWwuKjsKK2NsYXNzIEV4dHJhY3RGaWVsZENvbXBpbGF0aW9uRmFpbHVyZVRlc3QgeworICBwcml2YXRlIEFycmF5TGlzdCBhZWxlbWVudHMgPSBuZXcgQXJyYXlMaXN0KCk7CisKKyAgcHVibGljIHZvaWQgdGVzdCgpIHsKKyAgICBhZWxlbWVudHMuaXQ8Y2FyZXQ+ZXJhdG9yKCk7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5wbGFjZUludHJvZHVjZUZpZWxkL2FuY2hvcjFfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnBsYWNlSW50cm9kdWNlRmllbGQvYW5jaG9yMV9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZhNGFkOGQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5wbGFjZUludHJvZHVjZUZpZWxkL2FuY2hvcjFfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDkgQEAKK2ltcG9ydCBqYXZhLnV0aWwuKjsKK2NsYXNzIEV4dHJhY3RGaWVsZENvbXBpbGF0aW9uRmFpbHVyZVRlc3QgeworICBwcml2YXRlIEFycmF5TGlzdCBhZWxlbWVudHMgPSBuZXcgQXJyYXlMaXN0KCk7CisgICAgcHJpdmF0ZSBJdGVyYXRvciBpdGVyYXRvcjsKKworICAgIHB1YmxpYyB2b2lkIHRlc3QoKSB7CisgICAgICAgIGl0ZXJhdG9yID0gYWVsZW1lbnRzLml0ZXJhdG9yKCk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnBsYWNlSW50cm9kdWNlRmllbGQvYW5jaG9yX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5wbGFjZUludHJvZHVjZUZpZWxkL2FuY2hvcl9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAyMGU4ZWUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5wbGFjZUludHJvZHVjZUZpZWxkL2FuY2hvcl9hZnRlci5qYXZhCkBAIC0wLDAgKzEsOCBAQAorY2xhc3MgVGVzdCB7CisKKyAgICBwcml2YXRlIGJvb2xlYW4gb3BhcXVlOworCisgICAgdm9pZCBmb28oYm9vbGVhbiBvcGFxdWUpIHsKKyAgICAgICAgdGhpcy5vcGFxdWUgPSBvcGFxdWU7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnBsYWNlSW50cm9kdWNlRmllbGQvYmVmb3JlQXNzaWdubWVudC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lucGxhY2VJbnRyb2R1Y2VGaWVsZC9iZWZvcmVBc3NpZ25tZW50LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2U4Y2FjZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnBsYWNlSW50cm9kdWNlRmllbGQvYmVmb3JlQXNzaWdubWVudC5qYXZhCkBAIC0wLDAgKzEsOCBAQAorY2xhc3MgVGVzdCB7CisgIHByaXZhdGUgU3RyaW5nIG15VGltZXI7CisKKyAgVGVzdCgpIHsKKyAgICAiPGNhcmV0PiIKKyAgICBteVRpbWVyID0gImFiYyI7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5wbGFjZUludHJvZHVjZUZpZWxkL2JlZm9yZUFzc2lnbm1lbnRSZXBsYWNlQWxsLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5wbGFjZUludHJvZHVjZUZpZWxkL2JlZm9yZUFzc2lnbm1lbnRSZXBsYWNlQWxsLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGEzNWEwYgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnBsYWNlSW50cm9kdWNlRmllbGQvYmVmb3JlQXNzaWdubWVudFJlcGxhY2VBbGwuamF2YQpAQCAtMCwwICsxLDggQEAKK2NsYXNzIFRlc3QgeworICBwcml2YXRlIFN0cmluZyBteVRpbWVyOworCisgIFRlc3QoKSB7CisgICAgIjxjYXJldD4iCisgICAgbXlUaW1lciA9ICIiOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lucGxhY2VJbnRyb2R1Y2VGaWVsZC9iZWZvcmVBc3NpZ25tZW50UmVwbGFjZUFsbENhbGwuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnBsYWNlSW50cm9kdWNlRmllbGQvYmVmb3JlQXNzaWdubWVudFJlcGxhY2VBbGxDYWxsLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTczNzc3MAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnBsYWNlSW50cm9kdWNlRmllbGQvYmVmb3JlQXNzaWdubWVudFJlcGxhY2VBbGxDYWxsLmphdmEKQEAgLTAsMCArMSwxMCBAQAorY2xhc3MgVGVzdCB7CisgICAgcHJpdmF0ZSBGb28gbXlGb287CisKKyAgICBUZXN0KCkgeworICAgICAgICBuZXcgRm88Y2FyZXQ+bygpCisgICAgICAgIG15Rm9vID0gbmV3IEZvbygpOworICAgIH0KK30KKworY2xhc3MgRm9ve30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5wbGFjZUludHJvZHVjZUZpZWxkL2JlZm9yZUFzc2lnbm1lbnRSZXBsYWNlQWxsQ2FsbF9hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lucGxhY2VJbnRyb2R1Y2VGaWVsZC9iZWZvcmVBc3NpZ25tZW50UmVwbGFjZUFsbENhbGxfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZDI1MmEyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lucGxhY2VJbnRyb2R1Y2VGaWVsZC9iZWZvcmVBc3NpZ25tZW50UmVwbGFjZUFsbENhbGxfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDExIEBACitjbGFzcyBUZXN0IHsKKyAgICBwcml2YXRlIGZpbmFsIEZvbyBmb287CisgICAgcHJpdmF0ZSBGb28gbXlGb287CisKKyAgICBUZXN0KCkgeworICAgICAgICBmb28gPSBuZXcgRm9vKCk7CisgICAgICAgIG15Rm9vID0gZm9vOworICAgIH0KK30KKworY2xhc3MgRm9ve30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5wbGFjZUludHJvZHVjZUZpZWxkL2JlZm9yZUFzc2lnbm1lbnRSZXBsYWNlQWxsX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5wbGFjZUludHJvZHVjZUZpZWxkL2JlZm9yZUFzc2lnbm1lbnRSZXBsYWNlQWxsX2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzU2YmQzNwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnBsYWNlSW50cm9kdWNlRmllbGQvYmVmb3JlQXNzaWdubWVudFJlcGxhY2VBbGxfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDkgQEAKK2NsYXNzIFRlc3QgeworICAgIHByaXZhdGUgZmluYWwgU3RyaW5nIHN0cmluZzsKKyAgICBwcml2YXRlIFN0cmluZyBteVRpbWVyOworCisgICAgVGVzdCgpIHsKKyAgICAgICAgc3RyaW5nID0gIiI7PGNhcmV0PgorICAgICAgICBteVRpbWVyID0gc3RyaW5nOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lucGxhY2VJbnRyb2R1Y2VGaWVsZC9iZWZvcmVBc3NpZ25tZW50X2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5wbGFjZUludHJvZHVjZUZpZWxkL2JlZm9yZUFzc2lnbm1lbnRfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YzFhNzM3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lucGxhY2VJbnRyb2R1Y2VGaWVsZC9iZWZvcmVBc3NpZ25tZW50X2FmdGVyLmphdmEKQEAgLTAsMCArMSw5IEBACitjbGFzcyBUZXN0IHsKKyAgICBwcml2YXRlIGZpbmFsIFN0cmluZyBzdHJpbmc7CisgICAgcHJpdmF0ZSBTdHJpbmcgbXlUaW1lcjsKKworICAgIFRlc3QoKSB7CisgICAgICAgIHN0cmluZyA9ICIiOworICAgICAgICBteVRpbWVyID0gImFiYyI7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5wbGFjZUludHJvZHVjZUZpZWxkL2VzY2FwZVBvc2l0aW9uLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5wbGFjZUludHJvZHVjZUZpZWxkL2VzY2FwZVBvc2l0aW9uLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjFhMzNhNAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnBsYWNlSW50cm9kdWNlRmllbGQvZXNjYXBlUG9zaXRpb24uamF2YQpAQCAtMCwwICsxLDYgQEAKK2NsYXNzIFRlc3QgeworICAgIHZvaWQgc2ltcGxlTWV0aG9kKCkgeworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIjxjYXJldD4iKTsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCIiKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5wbGFjZUludHJvZHVjZUZpZWxkL2VzY2FwZVBvc2l0aW9uT25Mb2NhbC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lucGxhY2VJbnRyb2R1Y2VGaWVsZC9lc2NhcGVQb3NpdGlvbk9uTG9jYWwuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40Mjk1MzVlM2EKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5wbGFjZUludHJvZHVjZUZpZWxkL2VzY2FwZVBvc2l0aW9uT25Mb2NhbC5qYXZhCkBAIC0wLDAgKzEsNSBAQAorY2xhc3MgVGVzdCB7CisgICAgdm9pZCBzaW1wbGVNZXRob2QoKSB7CisgICAgICAgIGJvb2xlYW4gYjxjYXJldD5iOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnBsYWNlSW50cm9kdWNlRmllbGQvZXNjYXBlUG9zaXRpb25PbkxvY2FsX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5wbGFjZUludHJvZHVjZUZpZWxkL2VzY2FwZVBvc2l0aW9uT25Mb2NhbF9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM2NjMxNTEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5wbGFjZUludHJvZHVjZUZpZWxkL2VzY2FwZVBvc2l0aW9uT25Mb2NhbF9hZnRlci5qYXZhCkBAIC0wLDAgKzEsNiBAQAorY2xhc3MgVGVzdCB7CisKKyAgICB2b2lkIHNpbXBsZU1ldGhvZCgpIHsKKyAgICAgICAgYm9vbGVhbiA8Y2FyZXQ+YmI7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lucGxhY2VJbnRyb2R1Y2VGaWVsZC9lc2NhcGVQb3NpdGlvbl9hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lucGxhY2VJbnRyb2R1Y2VGaWVsZC9lc2NhcGVQb3NpdGlvbl9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE2MzllMmMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5wbGFjZUludHJvZHVjZUZpZWxkL2VzY2FwZVBvc2l0aW9uX2FmdGVyLmphdmEKQEAgLTAsMCArMSw3IEBACitjbGFzcyBUZXN0IHsKKworICAgIHZvaWQgc2ltcGxlTWV0aG9kKCkgeworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oPGNhcmV0PiIiKTsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCIiKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5wbGFjZUludHJvZHVjZUZpZWxkL3JlcGxhY2VBbGwuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnBsYWNlSW50cm9kdWNlRmllbGQvcmVwbGFjZUFsbC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFhNDRlM2IKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5wbGFjZUludHJvZHVjZUZpZWxkL3JlcGxhY2VBbGwuamF2YQpAQCAtMCwwICsxLDIxIEBACisvKgorICogQ29weXJpZ2h0IDIwMDAtMjAxMSBKZXRCcmFpbnMgcy5yLm8uCisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworY2xhc3MgVGVzdCB7CisgICAgdm9pZCBzaW1wbGVNZXRob2QoKSB7CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiPGNhcmV0PiIpOworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIiIpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnBsYWNlSW50cm9kdWNlRmllbGQvcmVwbGFjZUFsbF9hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lucGxhY2VJbnRyb2R1Y2VGaWVsZC9yZXBsYWNlQWxsX2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTgxOGZhNgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnBsYWNlSW50cm9kdWNlRmllbGQvcmVwbGFjZUFsbF9hZnRlci5qYXZhCkBAIC0wLDAgKzEsMjUgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwMC0yMDExIEpldEJyYWlucyBzLnIuby4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitjbGFzcyBUZXN0IHsKKworICAgIHByaXZhdGUgU3RyaW5nIHg7CisKKyAgICB2b2lkIHNpbXBsZU1ldGhvZCgpIHsKKyAgICAgICAgeCA9ICIiOworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oeCk7CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbih4KTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5wbGFjZUludHJvZHVjZUZpZWxkL3Jlc3RvcmVOZXdFeHByZXNzaW9uLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5wbGFjZUludHJvZHVjZUZpZWxkL3Jlc3RvcmVOZXdFeHByZXNzaW9uLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDBmMjQ4MAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnBsYWNlSW50cm9kdWNlRmllbGQvcmVzdG9yZU5ld0V4cHJlc3Npb24uamF2YQpAQCAtMCwwICsxLDE4IEBACitwdWJsaWMgY2xhc3MgTXlDbGFzcyB7CisgICAgcHVibGljIHZvaWQgdGVzdCgpIHsKKyAgICAgIGlmIChuZXcgSW48Y2FyZXQ+bmVyKCkuaXNXcml0ZVJlcGxhY2UoKSkgeworICAgICAgICByZXR1cm4gbmV3IElubmVyKCkud3JpdGVSZXBsYWNlKCk7CisgICAgICB9CisgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgIHByaXZhdGUgY2xhc3MgSW5uZXIgeworICAgICAgcHVibGljIGJvb2xlYW4gaXNXcml0ZVJlcGxhY2UoKSB7CisgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgfQorICAKKyAgICAgIHB1YmxpYyBib29sZWFuIHdyaXRlUmVwbGFjZSgpIHsKKyAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICB9CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnBsYWNlSW50cm9kdWNlRmllbGQvcmVzdG9yZU5ld0V4cHJlc3Npb25fYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnBsYWNlSW50cm9kdWNlRmllbGQvcmVzdG9yZU5ld0V4cHJlc3Npb25fYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iM2FmZjAzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lucGxhY2VJbnRyb2R1Y2VGaWVsZC9yZXN0b3JlTmV3RXhwcmVzc2lvbl9hZnRlci5qYXZhCkBAIC0wLDAgKzEsMjIgQEAKK3B1YmxpYyBjbGFzcyBNeUNsYXNzIHsKKworICAgIHByaXZhdGUgSW5uZXIgaW5uZXI7CisKKyAgICBwdWJsaWMgdm9pZCB0ZXN0KCkgeworICAgICAgICBpbm5lciA9IG5ldyBJbm5lcigpOworICAgICAgICBpZiAoaW5uZXIuaXNXcml0ZVJlcGxhY2UoKSkgeworICAgICAgICByZXR1cm4gaW5uZXIud3JpdGVSZXBsYWNlKCk7CisgICAgICB9CisgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgIHByaXZhdGUgY2xhc3MgSW5uZXIgeworICAgICAgcHVibGljIGJvb2xlYW4gaXNXcml0ZVJlcGxhY2UoKSB7CisgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgfQorICAKKyAgICAgIHB1YmxpYyBib29sZWFuIHdyaXRlUmVwbGFjZSgpIHsKKyAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICB9CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnBsYWNlSW50cm9kdWNlRmllbGQvdGVtcGxhdGVBZGp1c3RtZW50LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5wbGFjZUludHJvZHVjZUZpZWxkL3RlbXBsYXRlQWRqdXN0bWVudC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI1ZWM2OWUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5wbGFjZUludHJvZHVjZUZpZWxkL3RlbXBsYXRlQWRqdXN0bWVudC5qYXZhCkBAIC0wLDAgKzEsNSBAQAorY2xhc3MgVGVzdCB7CisgIGludCBmKCl7CisgICAgcmV0dXJuPGNhcmV0Pi0xOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lucGxhY2VJbnRyb2R1Y2VGaWVsZC90ZW1wbGF0ZUFkanVzdG1lbnRfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnBsYWNlSW50cm9kdWNlRmllbGQvdGVtcGxhdGVBZGp1c3RtZW50X2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDRhM2EzMQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnBsYWNlSW50cm9kdWNlRmllbGQvdGVtcGxhdGVBZGp1c3RtZW50X2FmdGVyLmphdmEKQEAgLTAsMCArMSw5IEBACitjbGFzcyBUZXN0IHsKKworICAgIHByaXZhdGUgaW50IGFuSW50OworCisgICAgaW50IGYoKXsKKyAgICAgICAgYW5JbnQgPSAtMTsKKyAgICAgICAgcmV0dXJuIGFuSW50OworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lucGxhY2VJbnRyb2R1Y2VQYXJhbWV0ZXIvZXNjYXBlUG9zaXRpb24uamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnBsYWNlSW50cm9kdWNlUGFyYW1ldGVyL2VzY2FwZVBvc2l0aW9uLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjFhMzNhNAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnBsYWNlSW50cm9kdWNlUGFyYW1ldGVyL2VzY2FwZVBvc2l0aW9uLmphdmEKQEAgLTAsMCArMSw2IEBACitjbGFzcyBUZXN0IHsKKyAgICB2b2lkIHNpbXBsZU1ldGhvZCgpIHsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCI8Y2FyZXQ+Iik7CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiIik7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lucGxhY2VJbnRyb2R1Y2VQYXJhbWV0ZXIvZXNjYXBlUG9zaXRpb25PbkxvY2FsLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5wbGFjZUludHJvZHVjZVBhcmFtZXRlci9lc2NhcGVQb3NpdGlvbk9uTG9jYWwuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40Mjk1MzVlM2EKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5wbGFjZUludHJvZHVjZVBhcmFtZXRlci9lc2NhcGVQb3NpdGlvbk9uTG9jYWwuamF2YQpAQCAtMCwwICsxLDUgQEAKK2NsYXNzIFRlc3QgeworICAgIHZvaWQgc2ltcGxlTWV0aG9kKCkgeworICAgICAgICBib29sZWFuIGI8Y2FyZXQ+YjsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5wbGFjZUludHJvZHVjZVBhcmFtZXRlci9lc2NhcGVQb3NpdGlvbk9uTG9jYWxfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnBsYWNlSW50cm9kdWNlUGFyYW1ldGVyL2VzY2FwZVBvc2l0aW9uT25Mb2NhbF9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ3ZjMyZWMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5wbGFjZUludHJvZHVjZVBhcmFtZXRlci9lc2NhcGVQb3NpdGlvbk9uTG9jYWxfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDUgQEAKK2NsYXNzIFRlc3QgeworICAgIHZvaWQgc2ltcGxlTWV0aG9kKCkgeworICAgICAgICBib29sZWFuIDxjYXJldD5iYjsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5wbGFjZUludHJvZHVjZVBhcmFtZXRlci9lc2NhcGVQb3NpdGlvbl9hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lucGxhY2VJbnRyb2R1Y2VQYXJhbWV0ZXIvZXNjYXBlUG9zaXRpb25fYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZTU4ZDVhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lucGxhY2VJbnRyb2R1Y2VQYXJhbWV0ZXIvZXNjYXBlUG9zaXRpb25fYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDYgQEAKK2NsYXNzIFRlc3QgeworICAgIHZvaWQgc2ltcGxlTWV0aG9kKCkgeworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oPGNhcmV0PiIiKTsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCIiKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5wbGFjZUludHJvZHVjZVBhcmFtZXRlci9leHRyYWN0Q29uZmxpY3RpbmdQYXJhbU92ZXJMb2NhbC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lucGxhY2VJbnRyb2R1Y2VQYXJhbWV0ZXIvZXh0cmFjdENvbmZsaWN0aW5nUGFyYW1PdmVyTG9jYWwuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNTdhYjBlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lucGxhY2VJbnRyb2R1Y2VQYXJhbWV0ZXIvZXh0cmFjdENvbmZsaWN0aW5nUGFyYW1PdmVyTG9jYWwuamF2YQpAQCAtMCwwICsxLDggQEAKK2NsYXNzIFRlc3QgeworCisgICAgdm9pZCBmb28oaW50IHApIHsKKyAgICAgICAgaW50IGk8Y2FyZXQ+aSA9IDQgKyAyOworICAgICAgICAvL2NvbW1lbnQKKyAgICAgICAgU3RyaW5nIHZhciA9ICIiOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5wbGFjZUludHJvZHVjZVBhcmFtZXRlci9leHRyYWN0UGFyYW1PdmVyTG9jYWwuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnBsYWNlSW50cm9kdWNlUGFyYW1ldGVyL2V4dHJhY3RQYXJhbU92ZXJMb2NhbC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcyZTE0NDgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5wbGFjZUludHJvZHVjZVBhcmFtZXRlci9leHRyYWN0UGFyYW1PdmVyTG9jYWwuamF2YQpAQCAtMCwwICsxLDggQEAKK2NsYXNzIFRlc3QgeworCisgICAgdm9pZCBmb28oKSB7CisgICAgICAgIGludCBpPGNhcmV0PmkgPSA0ICsgMjsKKyAgICAgICAgLy9jb21tZW50CisgICAgICAgIFN0cmluZyB2YXIgPSAiIjsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5wbGFjZUludHJvZHVjZVBhcmFtZXRlci9leHRyYWN0UGFyYW1PdmVyTG9jYWxfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnBsYWNlSW50cm9kdWNlUGFyYW1ldGVyL2V4dHJhY3RQYXJhbU92ZXJMb2NhbF9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYwODI5ZGU1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lucGxhY2VJbnRyb2R1Y2VQYXJhbWV0ZXIvZXh0cmFjdFBhcmFtT3ZlckxvY2FsX2FmdGVyLmphdmEKQEAgLTAsMCArMSw3IEBACitjbGFzcyBUZXN0IHsKKworICAgIHZvaWQgZm9vKGludCBpaSkgeworICAgICAgICA8Y2FyZXQ+Ly9jb21tZW50CisgICAgICAgIFN0cmluZyB2YXIgPSAiIjsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5wbGFjZUludHJvZHVjZVBhcmFtZXRlci9wYXJhbU5hbWVFcU1ldGhvZE5hbWUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnBsYWNlSW50cm9kdWNlUGFyYW1ldGVyL3BhcmFtTmFtZUVxTWV0aG9kTmFtZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhhNzI0YzgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5wbGFjZUludHJvZHVjZVBhcmFtZXRlci9wYXJhbU5hbWVFcU1ldGhvZE5hbWUuamF2YQpAQCAtMCwwICsxLDEwIEBACitjbGFzcyBBIHsKKyAgaW50IGYoKSB7CisgICAgcmV0dXJuIDA7CisgIH0KKworICB2b2lkIG0oKSB7CisgICAgZjxjYXJldD4oKTsKKyAgICBmKCk7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5wbGFjZUludHJvZHVjZVBhcmFtZXRlci9wYXJhbU5hbWVFcU1ldGhvZE5hbWVfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnBsYWNlSW50cm9kdWNlUGFyYW1ldGVyL3BhcmFtTmFtZUVxTWV0aG9kTmFtZV9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcyMTYwOTMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5wbGFjZUludHJvZHVjZVBhcmFtZXRlci9wYXJhbU5hbWVFcU1ldGhvZE5hbWVfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDkgQEAKK2NsYXNzIEEgeworICBpbnQgZigpIHsKKyAgICByZXR1cm4gMDsKKyAgfQorCisgIHZvaWQgbShpbnQgZikgeworICAgICAgZigpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lucGxhY2VJbnRyb2R1Y2VQYXJhbWV0ZXIvcmVwbGFjZUFsbC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lucGxhY2VJbnRyb2R1Y2VQYXJhbWV0ZXIvcmVwbGFjZUFsbC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQzMDBiMjkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5wbGFjZUludHJvZHVjZVBhcmFtZXRlci9yZXBsYWNlQWxsLmphdmEKQEAgLTAsMCArMSw2IEBACitjbGFzcyBUZXN0IHsKKyAgICB2b2lkIGZvbygpIHsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJoZWxsbyIpOworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oImhlbDxjYXJldD5sbyIpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5wbGFjZUludHJvZHVjZVBhcmFtZXRlci9yZXBsYWNlQWxsMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lucGxhY2VJbnRyb2R1Y2VQYXJhbWV0ZXIvcmVwbGFjZUFsbDEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NjNhOTE4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lucGxhY2VJbnRyb2R1Y2VQYXJhbWV0ZXIvcmVwbGFjZUFsbDEuamF2YQpAQCAtMCwwICsxLDU5IEBACitwdWJsaWMgYWJzdHJhY3QgY2xhc3MgUGFydG5lckF1dGhlbnRpY2F0aW9uSW50ZXJjZXB0b3IgeworCisKKyAgICBwcm90ZWN0ZWQgYm9vbGVhbiB2YWxpZGF0ZVByb3RlY3Rpb24oUGFydG5lckF1dGhlbnRpY2F0aW9uIHBhcnRuZXJBdXRoZW50aWNhdGlvbikgeworICAgICAgICB0cnlQYXJ0bmVyQXV0aGVudGljYXRpb25UeXBlcyhwYXJ0bmVyQXV0aGVudGljYXRpb24sIHZhbGlkYXRlZCwgaXAsIHBhcnRuZXIsICJzZXJ2aWNlR3JvdXAiKTsKKworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisKKyAgICBwcml2YXRlIGJvb2xlYW4gdHJ5UGFydG5lckF1dGhlbnRpY2F0aW9uVHlwZXMoUGFydG5lckF1dGhlbnRpY2F0aW9uIHBhcnRuZXJBdXRoZW50aWNhdGlvbiwgYm9vbGVhbiB2YWxpZGF0ZWQsIFN0cmluZyBpcCwgU3RyaW5nIHBhcnRuZXIsIFN0cmluZyBzZXJ2aWNlR3JvdXApIHsKKyAgICAgICAgaWYgKHBhcnRuZXJBdXRoZW50aWNhdGlvbi50eXA8Y2FyZXQ+ZSgpID09IFBhcnRuZXJBdXRoZW50aWNhdGlvblR5cGUuSVBfUEFSVE5FUl9JRCkgeworCisgICAgICAgIH0gZWxzZSBpZiAocGFydG5lckF1dGhlbnRpY2F0aW9uLnR5cGUoKSA9PSBQYXJ0bmVyQXV0aGVudGljYXRpb25UeXBlLklQKSB7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHZhbGlkYXRlZDsKKyAgICB9CisKKworICAgIHByaXZhdGUgY2xhc3MgUGFydG5lckF1dGhlbnRpY2F0aW9uIHsKKyAgICAgICAgcHVibGljIFN0cmluZyBzZXJ2aWNlR3JvdXAoKSB7CisgICAgICAgICAgICByZXR1cm4gbnVsbDsgIC8vVG8gY2hhbmdlIGJvZHkgb2YgY3JlYXRlZCBtZXRob2RzIHVzZSBGaWxlIHwgU2V0dGluZ3MgfCBGaWxlIFRlbXBsYXRlcy4KKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyBTdHJpbmcgdHlwZSgpIHsKKyAgICAgICAgICAgIHJldHVybiBudWxsOworICAgICAgICB9CisgICAgfQorCisgICAgcHJpdmF0ZSBzdGF0aWMgY2xhc3MgUGFydG5lcklkSG9sZGVyIHsKKyAgICAgICAgcHJpdmF0ZSBzdGF0aWMgUGFydG5lcklQIHBhcnRuZXJJUDsKKworICAgICAgICBwdWJsaWMgc3RhdGljIFBhcnRuZXJJUCBnZXRQYXJ0bmVySVAoKSB7CisgICAgICAgICAgICByZXR1cm4gcGFydG5lcklQOworICAgICAgICB9CisgICAgfQorCisgICAgcHJpdmF0ZSBjbGFzcyBQYXJ0bmVySVAgeworICAgICAgICBwcml2YXRlIFN0cmluZyBpcDsKKyAgICAgICAgcHJpdmF0ZSBTdHJpbmcgcGFydG5lcjsKKyAgICAgICAgcHJpdmF0ZSBib29sZWFuIHZhbGlkOworCisgICAgICAgIHB1YmxpYyBTdHJpbmcgZ2V0SXAoKSB7CisgICAgICAgICAgICByZXR1cm4gaXA7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgU3RyaW5nIGdldFBhcnRuZXIoKSB7CisgICAgICAgICAgICByZXR1cm4gcGFydG5lcjsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyBib29sZWFuIGlzVmFsaWQoKSB7CisgICAgICAgICAgICByZXR1cm4gdmFsaWQ7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwcml2YXRlIGNsYXNzIFBhcnRuZXJBdXRoZW50aWNhdGlvblR5cGUgeworICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBJUF9QQVJUTkVSX0lEID0gImlkIjsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5wbGFjZUludHJvZHVjZVBhcmFtZXRlci9yZXBsYWNlQWxsMV9hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lucGxhY2VJbnRyb2R1Y2VQYXJhbWV0ZXIvcmVwbGFjZUFsbDFfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNDBjZWExCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lucGxhY2VJbnRyb2R1Y2VQYXJhbWV0ZXIvcmVwbGFjZUFsbDFfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDU5IEBACitwdWJsaWMgYWJzdHJhY3QgY2xhc3MgUGFydG5lckF1dGhlbnRpY2F0aW9uSW50ZXJjZXB0b3IgeworCisKKyAgICBwcm90ZWN0ZWQgYm9vbGVhbiB2YWxpZGF0ZVByb3RlY3Rpb24oUGFydG5lckF1dGhlbnRpY2F0aW9uIHBhcnRuZXJBdXRoZW50aWNhdGlvbikgeworICAgICAgICB0cnlQYXJ0bmVyQXV0aGVudGljYXRpb25UeXBlcyh2YWxpZGF0ZWQsIGlwLCBwYXJ0bmVyLCAic2VydmljZUdyb3VwIiwgcGFydG5lckF1dGhlbnRpY2F0aW9uLnR5cGUoKSk7CisKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworCisgICAgcHJpdmF0ZSBib29sZWFuIHRyeVBhcnRuZXJBdXRoZW50aWNhdGlvblR5cGVzKGJvb2xlYW4gdmFsaWRhdGVkLCBTdHJpbmcgaXAsIFN0cmluZyBwYXJ0bmVyLCBTdHJpbmcgc2VydmljZUdyb3VwLCBTdHJpbmcgdHlwZSkgeworICAgICAgICBpZiAodHlwZSA9PSBQYXJ0bmVyQXV0aGVudGljYXRpb25UeXBlLklQX1BBUlRORVJfSUQpIHsKKworICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT0gUGFydG5lckF1dGhlbnRpY2F0aW9uVHlwZS5JUCkgeworICAgICAgICB9CisgICAgICAgIHJldHVybiB2YWxpZGF0ZWQ7CisgICAgfQorCisKKyAgICBwcml2YXRlIGNsYXNzIFBhcnRuZXJBdXRoZW50aWNhdGlvbiB7CisgICAgICAgIHB1YmxpYyBTdHJpbmcgc2VydmljZUdyb3VwKCkgeworICAgICAgICAgICAgcmV0dXJuIG51bGw7ICAvL1RvIGNoYW5nZSBib2R5IG9mIGNyZWF0ZWQgbWV0aG9kcyB1c2UgRmlsZSB8IFNldHRpbmdzIHwgRmlsZSBUZW1wbGF0ZXMuCisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgU3RyaW5nIHR5cGUoKSB7CisgICAgICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAgfQorICAgIH0KKworICAgIHByaXZhdGUgc3RhdGljIGNsYXNzIFBhcnRuZXJJZEhvbGRlciB7CisgICAgICAgIHByaXZhdGUgc3RhdGljIFBhcnRuZXJJUCBwYXJ0bmVySVA7CisKKyAgICAgICAgcHVibGljIHN0YXRpYyBQYXJ0bmVySVAgZ2V0UGFydG5lcklQKCkgeworICAgICAgICAgICAgcmV0dXJuIHBhcnRuZXJJUDsKKyAgICAgICAgfQorICAgIH0KKworICAgIHByaXZhdGUgY2xhc3MgUGFydG5lcklQIHsKKyAgICAgICAgcHJpdmF0ZSBTdHJpbmcgaXA7CisgICAgICAgIHByaXZhdGUgU3RyaW5nIHBhcnRuZXI7CisgICAgICAgIHByaXZhdGUgYm9vbGVhbiB2YWxpZDsKKworICAgICAgICBwdWJsaWMgU3RyaW5nIGdldElwKCkgeworICAgICAgICAgICAgcmV0dXJuIGlwOworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIFN0cmluZyBnZXRQYXJ0bmVyKCkgeworICAgICAgICAgICAgcmV0dXJuIHBhcnRuZXI7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgYm9vbGVhbiBpc1ZhbGlkKCkgeworICAgICAgICAgICAgcmV0dXJuIHZhbGlkOworICAgICAgICB9CisgICAgfQorCisgICAgcHJpdmF0ZSBjbGFzcyBQYXJ0bmVyQXV0aGVudGljYXRpb25UeXBlIHsKKyAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgSVBfUEFSVE5FUl9JRCA9ICJpZCI7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lucGxhY2VJbnRyb2R1Y2VQYXJhbWV0ZXIvcmVwbGFjZUFsbDIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnBsYWNlSW50cm9kdWNlUGFyYW1ldGVyL3JlcGxhY2VBbGwyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjIzM2Y3MgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnBsYWNlSW50cm9kdWNlUGFyYW1ldGVyL3JlcGxhY2VBbGwyLmphdmEKQEAgLTAsMCArMSwxMyBAQAorcHVibGljIGNsYXNzIEFUZXN0IHsKKyAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgRk9PID0gImZvbyI7CisgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEZPTzEgPSAiZm9vMSI7CisKKyAgICBTdHJpbmcgbV9pbnRlcnZhbCA9ICIiOworICAgIHZvaWQgZm9vKCkgeworICAgICAgaWYgKEZPTy5lcXVhbHMoPGNhcmV0Pm1faW50ZXJ2YWwuc3Vic3RyaW5nKDEpKSkgeworICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihGT08pOworICAgICAgfSBlbHNlIGlmIChGT08xLmVxdWFscyhtX2ludGVydmFsLnN1YnN0cmluZygxKSkpIHsKKyAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oKTsKKyAgICAgIH0KKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5wbGFjZUludHJvZHVjZVBhcmFtZXRlci9yZXBsYWNlQWxsMl9hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lucGxhY2VJbnRyb2R1Y2VQYXJhbWV0ZXIvcmVwbGFjZUFsbDJfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lY2Q5MTM2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lucGxhY2VJbnRyb2R1Y2VQYXJhbWV0ZXIvcmVwbGFjZUFsbDJfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDEzIEBACitwdWJsaWMgY2xhc3MgQVRlc3QgeworICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBGT08gPSAiZm9vIjsKKyAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgRk9PMSA9ICJmb28xIjsKKworICAgIFN0cmluZyBtX2ludGVydmFsID0gIiI7CisgICAgdm9pZCBmb28oU3RyaW5nIG1faW50ZXJ2YWwxKSB7CisgICAgICBpZiAoRk9PLmVxdWFscyhtX2ludGVydmFsMS5zdWJzdHJpbmcoMSkpKSB7CisgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKEZPTyk7CisgICAgICB9IGVsc2UgaWYgKEZPTzEuZXF1YWxzKG1faW50ZXJ2YWwxLnN1YnN0cmluZygxKSkpIHsKKyAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oKTsKKyAgICAgIH0KKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5wbGFjZUludHJvZHVjZVBhcmFtZXRlci9yZXBsYWNlQWxsTWV0aG9kQ2FsbHMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnBsYWNlSW50cm9kdWNlUGFyYW1ldGVyL3JlcGxhY2VBbGxNZXRob2RDYWxscy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE3YTdlYmIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5wbGFjZUludHJvZHVjZVBhcmFtZXRlci9yZXBsYWNlQWxsTWV0aG9kQ2FsbHMuamF2YQpAQCAtMCwwICsxLDkgQEAKK3B1YmxpYyBjbGFzcyBBYWEgeworICBwdWJsaWMgU3RyaW5nIG1ldGhvZCgpIHsKKyAgICByZXR1cm4gZ2V0PGNhcmV0PlN0cmluZygpICsgZ2V0U3RyaW5nKCkgKyBnZXRTdHJpbmcoKTsKKyAgfQorCisgIHB1YmxpYyBTdHJpbmcgZ2V0U3RyaW5nKCkgeworICAgIHJldHVybiAiMTIzIjsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnBsYWNlSW50cm9kdWNlUGFyYW1ldGVyL3JlcGxhY2VBbGxNZXRob2RDYWxsc19hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lucGxhY2VJbnRyb2R1Y2VQYXJhbWV0ZXIvcmVwbGFjZUFsbE1ldGhvZENhbGxzX2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjg1M2NhOAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnBsYWNlSW50cm9kdWNlUGFyYW1ldGVyL3JlcGxhY2VBbGxNZXRob2RDYWxsc19hZnRlci5qYXZhCkBAIC0wLDAgKzEsOSBAQAorcHVibGljIGNsYXNzIEFhYSB7CisgIHB1YmxpYyBTdHJpbmcgbWV0aG9kKFN0cmluZyBzdHJpbmdzdHJpbmcpIHsKKyAgICByZXR1cm4gc3RyaW5nc3RyaW5nICsgc3RyaW5nc3RyaW5nICsgc3RyaW5nc3RyaW5nOworICB9CisKKyAgcHVibGljIFN0cmluZyBnZXRTdHJpbmcoKSB7CisgICAgcmV0dXJuICIxMjMiOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lucGxhY2VJbnRyb2R1Y2VQYXJhbWV0ZXIvcmVwbGFjZUFsbF9hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2lucGxhY2VJbnRyb2R1Y2VQYXJhbWV0ZXIvcmVwbGFjZUFsbF9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ1OTZkZjUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW5wbGFjZUludHJvZHVjZVBhcmFtZXRlci9yZXBsYWNlQWxsX2FmdGVyLmphdmEKQEAgLTAsMCArMSw2IEBACitjbGFzcyBUZXN0IHsKKyAgICB2b2lkIGZvbyhTdHJpbmcgaGVsbG8pIHsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKGhlbGxvKTsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKDxjYXJldD5oZWxsbyk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VDb25zdGFudC9Bbm5vdGF0aW9uRGVzY3JpcHRpb24uamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VDb25zdGFudC9Bbm5vdGF0aW9uRGVzY3JpcHRpb24uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMjMxN2I3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZUNvbnN0YW50L0Fubm90YXRpb25EZXNjcmlwdGlvbi5qYXZhCkBAIC0wLDAgKzEsNCBAQAorQFN1cHByZXNzV2FybmluZ3MoPHNlbGVjdGlvbj4iQ09OU1QiPC9zZWxlY3Rpb24+KQorY2xhc3MgTWUgeworCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZUNvbnN0YW50L0Fubm90YXRpb25EZXNjcmlwdGlvbl9hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZUNvbnN0YW50L0Fubm90YXRpb25EZXNjcmlwdGlvbl9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE0ZjM4NTIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlQ29uc3RhbnQvQW5ub3RhdGlvbkRlc2NyaXB0aW9uX2FmdGVyLmphdmEKQEAgLTAsMCArMSw1IEBACitAU3VwcHJlc3NXYXJuaW5ncyhNZS54eHgpCitjbGFzcyBNZSB7CisKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyB4eHggPSAiQ09OU1QiOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VDb25zdGFudC9BcnJheUZyb21WYXJhcmdzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlQ29uc3RhbnQvQXJyYXlGcm9tVmFyYXJncy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFlNmJhOGUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlQ29uc3RhbnQvQXJyYXlGcm9tVmFyYXJncy5qYXZhCkBAIC0wLDAgKzEsOCBAQAorY2xhc3MgQjEgeworICBwdWJsaWMgQjEoaW50IGksIFN0cmluZy4uLiBzKSB7fQorfQorY2xhc3MgQTEgZXh0ZW5kcyBCMSB7CisgIEExKCkgeworICAgIHN1cGVyKDEsIDxzZWxlY3Rpb24+ImEiLCAiYiI8L3NlbGVjdGlvbj4pOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZUNvbnN0YW50L0FycmF5RnJvbVZhcmFyZ3NfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VDb25zdGFudC9BcnJheUZyb21WYXJhcmdzX2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2UyOGFjYQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VDb25zdGFudC9BcnJheUZyb21WYXJhcmdzX2FmdGVyLmphdmEKQEAgLTAsMCArMSwxMCBAQAorY2xhc3MgQjEgeworICBwdWJsaWMgQjEoaW50IGksIFN0cmluZy4uLiBzKSB7fQorfQorY2xhc3MgQTEgZXh0ZW5kcyBCMSB7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmdbXSB4eHggPSBuZXcgU3RyaW5nW117ImEiLCAiYiJ9OworCisgICAgQTEoKSB7CisgICAgc3VwZXIoMSwgeHh4KTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VDb25zdGFudC9FbnVtQ29uc3RhbnQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VDb25zdGFudC9FbnVtQ29uc3RhbnQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NjZjMWZjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZUNvbnN0YW50L0VudW1Db25zdGFudC5qYXZhCkBAIC0wLDAgKzEsNyBAQAorcHVibGljIGVudW0gRW51bUNvbnN0YW50IHsKKyAgOworICBFbnVtQ29uc3RhbnQoU3RyaW5nIHMpe30KKyAgdm9pZCBmb28oKSB7CisgICAgU3RyaW5nIDxjYXJldD5zMSA9ICJkZGRkZGQiOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZUNvbnN0YW50L0VudW1Db25zdGFudF9hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZUNvbnN0YW50L0VudW1Db25zdGFudF9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY2ODdkYzYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlQ29uc3RhbnQvRW51bUNvbnN0YW50X2FmdGVyLmphdmEKQEAgLTAsMCArMSw2IEBACitwdWJsaWMgZW51bSBFbnVtQ29uc3RhbnQgeworICAgIHh4eCgiZGRkZGRkIik7CisgIEVudW1Db25zdGFudChTdHJpbmcgcyl7fQorICB2b2lkIGZvbygpIHsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VDb25zdGFudC9Fc2NhbGF0ZVZpc2liaWxpdHkuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VDb25zdGFudC9Fc2NhbGF0ZVZpc2liaWxpdHkuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZTRiMjI1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZUNvbnN0YW50L0VzY2FsYXRlVmlzaWJpbGl0eS5qYXZhCkBAIC0wLDAgKzEsNiBAQAorcHVibGljIGNsYXNzIFRlc3QgeworICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBGSVJTVCA9ICI8c2VsZWN0aW9uPnByZWY8L3NlbGVjdGlvbj4iOworICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBTRUNPTkQgPSAicHJlZiI7Cit9CisKK2NsYXNzIEFub3RoZXJUZXN0IHt9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZUNvbnN0YW50L0VzY2FsYXRlVmlzaWJpbGl0eV9hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZUNvbnN0YW50L0VzY2FsYXRlVmlzaWJpbGl0eV9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY0NjQ4M2EKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlQ29uc3RhbnQvRXNjYWxhdGVWaXNpYmlsaXR5X2FmdGVyLmphdmEKQEAgLTAsMCArMSw4IEBACitwdWJsaWMgY2xhc3MgVGVzdCB7CisgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEZJUlNUID0gQW5vdGhlclRlc3QueHh4OworICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBTRUNPTkQgPSBBbm90aGVyVGVzdC54eHg7Cit9CisKK2NsYXNzIEFub3RoZXJUZXN0IHsKKyAgICBzdGF0aWMgZmluYWwgU3RyaW5nIHh4eCA9ICJwcmVmIjsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlQ29uc3RhbnQvRm9yd2FyZFJlZmVyZW5jZXMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VDb25zdGFudC9Gb3J3YXJkUmVmZXJlbmNlcy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjllZWRjY2QKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlQ29uc3RhbnQvRm9yd2FyZFJlZmVyZW5jZXMuamF2YQpAQCAtMCwwICsxLDggQEAKK2NsYXNzIFRlc3QgeworCisgICAgcHVibGljIHZvaWQgZm9vKCl7CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbig8c2VsZWN0aW9uPmNvbnN0MS5jaGFyQXQoMCk8L3NlbGVjdGlvbj4pOworICAgIH0KKworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIGNvbnN0MSA9ICIiOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VDb25zdGFudC9Gb3J3YXJkUmVmZXJlbmNlc19hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZUNvbnN0YW50L0ZvcndhcmRSZWZlcmVuY2VzX2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWI2ZGY2NAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VDb25zdGFudC9Gb3J3YXJkUmVmZXJlbmNlc19hZnRlci5qYXZhCkBAIC0wLDAgKzEsOSBAQAorY2xhc3MgVGVzdCB7CisKKyAgICBwdWJsaWMgdm9pZCBmb28oKXsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKHh4eCk7CisgICAgfQorCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgY29uc3QxID0gIiI7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBjaGFyIHh4eCA9IGNvbnN0MS5jaGFyQXQoMCk7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZUNvbnN0YW50L0Zyb21FbnVtQ29uc3RhbnRJbml0aWFsaXplci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZUNvbnN0YW50L0Zyb21FbnVtQ29uc3RhbnRJbml0aWFsaXplci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ0Nzc2MGZkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZUNvbnN0YW50L0Zyb21FbnVtQ29uc3RhbnRJbml0aWFsaXplci5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKK2VudW0gVGVzdEVudW0geworICBPTkUoInRlPGNhcmV0PnN0U3RyaW5nIik7CisKKyAgVGVzdEVudW0oU3RyaW5nIHN0cikgeworICB9CisgIAorICBwcml2YXRlIGNsYXNzIENvbnN0YW50cyB7CisgICAgdm9pZCBmb28oKXt9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlQ29uc3RhbnQvRnJvbUVudW1Db25zdGFudEluaXRpYWxpemVyMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZUNvbnN0YW50L0Zyb21FbnVtQ29uc3RhbnRJbml0aWFsaXplcjEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNDM0MDFkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZUNvbnN0YW50L0Zyb21FbnVtQ29uc3RhbnRJbml0aWFsaXplcjEuamF2YQpAQCAtMCwwICsxLDEwIEBACitlbnVtIFRlc3RFbnVtIHsKKyAgT05FKCJ0ZTxjYXJldD5zdFN0cmluZyIpOworCisgIFRlc3RFbnVtKFN0cmluZyBzdHIpIHsKKyAgfQorCisgIHByaXZhdGUgc3RhdGljIGNsYXNzIENvbnN0YW50cyB7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgRk9PID0gIiI7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlQ29uc3RhbnQvRnJvbUVudW1Db25zdGFudEluaXRpYWxpemVyMV9hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZUNvbnN0YW50L0Zyb21FbnVtQ29uc3RhbnRJbml0aWFsaXplcjFfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYjY1NzM1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZUNvbnN0YW50L0Zyb21FbnVtQ29uc3RhbnRJbml0aWFsaXplcjFfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDExIEBACitlbnVtIFRlc3RFbnVtIHsKKyAgT05FKENvbnN0YW50cy54eHgpOworCisgIFRlc3RFbnVtKFN0cmluZyBzdHIpIHsKKyAgfQorCisgIHByaXZhdGUgc3RhdGljIGNsYXNzIENvbnN0YW50cyB7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgRk9PID0gIiI7CisgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyB4eHggPSAidGVzdFN0cmluZyI7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlQ29uc3RhbnQvRnJvbUVudW1Db25zdGFudEluaXRpYWxpemVyX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlQ29uc3RhbnQvRnJvbUVudW1Db25zdGFudEluaXRpYWxpemVyX2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTJhMmNhYQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VDb25zdGFudC9Gcm9tRW51bUNvbnN0YW50SW5pdGlhbGl6ZXJfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDE0IEBACitlbnVtIFRlc3RFbnVtIHsKKyAgT05FKENvbnN0YW50czEueHh4KTsKKworICBUZXN0RW51bShTdHJpbmcgc3RyKSB7CisgIH0KKworICAgIHByaXZhdGUgc3RhdGljIGNsYXNzIENvbnN0YW50czEgeworICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyB4eHggPSAidGVzdFN0cmluZyI7CisgICAgfQorCisgICAgcHJpdmF0ZSBjbGFzcyBDb25zdGFudHMgeworICAgIHZvaWQgZm9vKCl7fQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZUNvbnN0YW50L0luTm9uTmxzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlQ29uc3RhbnQvSW5Ob25ObHMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wOWQxYWEwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZUNvbnN0YW50L0luTm9uTmxzLmphdmEKQEAgLTAsMCArMSw2IEBACitwdWJsaWMgY2xhc3MgWFhYIHsKKyAgICB2b2lkIGYoKSB7CisgICAgICAgIFN0cmluZyA8Y2FyZXQ+czEgPSAiZGRkZGRkIjsKKyAgICAgICAgU3RyaW5nIHMgPSBzMTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlQ29uc3RhbnQvSW5Ob25ObHNfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VDb25zdGFudC9Jbk5vbk5sc19hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUzOTk4ZjQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlQ29uc3RhbnQvSW5Ob25ObHNfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDEwIEBACitpbXBvcnQgb3JnLmpldGJyYWlucy5hbm5vdGF0aW9ucy5Ob25ObHM7CisKK3B1YmxpYyBjbGFzcyBYWFggeworICAgIEBOb25ObHMKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgeHh4ID0gImRkZGRkZCI7CisKKyAgICB2b2lkIGYoKSB7CisgICAgICAgIFN0cmluZyBzID0geHh4OworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VDb25zdGFudC9JbnRyb2R1Y2VDb25zdGFudEZyb21UaGlzQ2FsbC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZUNvbnN0YW50L0ludHJvZHVjZUNvbnN0YW50RnJvbVRoaXNDYWxsLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGZmY2YwNgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VDb25zdGFudC9JbnRyb2R1Y2VDb25zdGFudEZyb21UaGlzQ2FsbC5qYXZhCkBAIC0wLDAgKzEsOCBAQAorY2xhc3MgVGVzdCB7CisgICAgICAgIHB1YmxpYyBUZXN0KCkgeworICAgICAgICAgICAgICAgIHRoaXMoPHNlbGVjdGlvbj4xMDwvc2VsZWN0aW9uPik7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgVGVzdChmaW5hbCBpbnQgaSkgeworICAgICAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZUNvbnN0YW50L0ludHJvZHVjZUNvbnN0YW50RnJvbVRoaXNDYWxsX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlQ29uc3RhbnQvSW50cm9kdWNlQ29uc3RhbnRGcm9tVGhpc0NhbGxfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNWFkMDc5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZUNvbnN0YW50L0ludHJvZHVjZUNvbnN0YW50RnJvbVRoaXNDYWxsX2FmdGVyLmphdmEKQEAgLTAsMCArMSwxMCBAQAorY2xhc3MgVGVzdCB7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgeHh4ID0gMTA7CisKKyAgICBwdWJsaWMgVGVzdCgpIHsKKyAgICAgICAgICAgICAgICB0aGlzKHh4eCk7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgVGVzdChmaW5hbCBpbnQgaSkgeworICAgICAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZUNvbnN0YW50L1BhcnRpYWxTdHJpbmdMaXRlcmFsLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlQ29uc3RhbnQvUGFydGlhbFN0cmluZ0xpdGVyYWwuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMTYxZGM0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZUNvbnN0YW50L1BhcnRpYWxTdHJpbmdMaXRlcmFsLmphdmEKQEAgLTAsMCArMSw1IEBACitjbGFzcyBUZXN0eworICAgdm9pZCBmb28oKSB7CisgICAgICBTdHJpbmcgcyA9ICI8c2VsZWN0aW9uPnh4eDwvc2VsZWN0aW9uPnl6IjsKKyAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlQ29uc3RhbnQvUGFydGlhbFN0cmluZ0xpdGVyYWxBbmNob3IuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VDb25zdGFudC9QYXJ0aWFsU3RyaW5nTGl0ZXJhbEFuY2hvci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM2Zjg4ZmIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlQ29uc3RhbnQvUGFydGlhbFN0cmluZ0xpdGVyYWxBbmNob3IuamF2YQpAQCAtMCwwICsxLDQgQEAKK3B1YmxpYyBjbGFzcyBUZXN0eworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEZJUlNUID0gIjxzZWxlY3Rpb24+cHJlZjwvc2VsZWN0aW9uPi5GSVJTVCI7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgU0VDT05EID0gInByZWYuU0VDT05EIjsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlQ29uc3RhbnQvUGFydGlhbFN0cmluZ0xpdGVyYWxBbmNob3JfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VDb25zdGFudC9QYXJ0aWFsU3RyaW5nTGl0ZXJhbEFuY2hvcl9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJkNTZhNGQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlQ29uc3RhbnQvUGFydGlhbFN0cmluZ0xpdGVyYWxBbmNob3JfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDUgQEAKK3B1YmxpYyBjbGFzcyBUZXN0eworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIHh4eCA9ICJwcmVmIjsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBGSVJTVCA9IHh4eCArICIuRklSU1QiOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFNFQ09ORCA9IHh4eCArICIuU0VDT05EIjsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlQ29uc3RhbnQvUGFydGlhbFN0cmluZ0xpdGVyYWxRdWFsaWZpZWQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VDb25zdGFudC9QYXJ0aWFsU3RyaW5nTGl0ZXJhbFF1YWxpZmllZC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk0ZjY5NWUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlQ29uc3RhbnQvUGFydGlhbFN0cmluZ0xpdGVyYWxRdWFsaWZpZWQuamF2YQpAQCAtMCwwICsxLDggQEAKK3B1YmxpYyBjbGFzcyBUZXN0eworICAgdm9pZCBmb28oKSB7CisgICAgICBTdHJpbmcgcyA9ICI8c2VsZWN0aW9uPnh4eDwvc2VsZWN0aW9uPnl6IjsKKyAgIH0KKworICAgc3RhdGljIGNsYXNzIEQgeworICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VDb25zdGFudC9QYXJ0aWFsU3RyaW5nTGl0ZXJhbFF1YWxpZmllZF9hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZUNvbnN0YW50L1BhcnRpYWxTdHJpbmdMaXRlcmFsUXVhbGlmaWVkX2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjNmMGE1NgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VDb25zdGFudC9QYXJ0aWFsU3RyaW5nTGl0ZXJhbFF1YWxpZmllZF9hZnRlci5qYXZhCkBAIC0wLDAgKzEsOSBAQAorcHVibGljIGNsYXNzIFRlc3R7CisgICB2b2lkIGZvbygpIHsKKyAgICAgIFN0cmluZyBzID0gRC54eHggKyAieXoiOworICAgfQorCisgICBzdGF0aWMgY2xhc3MgRCB7CisgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgeHh4ID0gInh4eCI7CisgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZUNvbnN0YW50L1BhcnRpYWxTdHJpbmdMaXRlcmFsX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlQ29uc3RhbnQvUGFydGlhbFN0cmluZ0xpdGVyYWxfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMWJkYTFjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZUNvbnN0YW50L1BhcnRpYWxTdHJpbmdMaXRlcmFsX2FmdGVyLmphdmEKQEAgLTAsMCArMSw3IEBACitjbGFzcyBUZXN0eworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIHh4eCA9ICJ4eHgiOworCisgICAgdm9pZCBmb28oKSB7CisgICAgICBTdHJpbmcgcyA9IHh4eCArICJ5eiI7CisgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZUNvbnN0YW50L1Jlc3VsdGVkVHlwZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZUNvbnN0YW50L1Jlc3VsdGVkVHlwZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUyOTcwMmEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlQ29uc3RhbnQvUmVzdWx0ZWRUeXBlLmphdmEKQEAgLTAsMCArMSw2IEBACitjbGFzcyBUZXN0IHsKKyAgdm9pZCBmb28oKSB7CisgICAgY2xhc3MgQyB7fQorICAgIEMgYzxjYXJldD5jOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZUNvbnN0YW50L1Jlc3VsdGVkVHlwZVdoZW5Ob25Mb2NhbC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZUNvbnN0YW50L1Jlc3VsdGVkVHlwZVdoZW5Ob25Mb2NhbC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhiMzY3MDcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlQ29uc3RhbnQvUmVzdWx0ZWRUeXBlV2hlbk5vbkxvY2FsLmphdmEKQEAgLTAsMCArMSw3IEBACitjbGFzcyBUZXN0IHsKKyAgY2xhc3MgQyB7fQorCisgIHZvaWQgZm9vKCkgeworICAgIEMgYzxjYXJldD5jOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZUZpZWxkL2FmdGVyMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZUZpZWxkL2FmdGVyMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAzM2VkZWEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlRmllbGQvYWZ0ZXIxLmphdmEKQEAgLTAsMCArMSw4IEBACitjbGFzcyBJblN0YXRpY0luaXRpYWxpemVyIHsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyB4ID0gIkhlbGxvIFdvcmxkIjsKKworICAgIHN0YXRpYyB7CisJCVN5c3RlbS5vdXQucHJpbnRsbih4KTsKKyAgICB9CisgICAgLy9GaWVsZCBtdXN0IGJlIHBsYWNlZCBiZWZvcmUgaW5pdGlhbGl6ZXIgb3IgaWxsZWdhbCBmb3J3YXJkIHJlZmVyZW5jZSB3aWxsIGhhcHBlbgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VGaWVsZC9hZnRlckJlZm9yZUV4aXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlRmllbGQvYWZ0ZXJCZWZvcmVFeGlzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEzOTZjNDEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlRmllbGQvYWZ0ZXJCZWZvcmVFeGlzdC5qYXZhCkBAIC0wLDAgKzEsMTMgQEAKK2ltcG9ydCBvcmcuanVuaXQuKjsKK3B1YmxpYyBjbGFzcyBUIHsKKyAgICBwcml2YXRlIGludCBpOworCisgICAgQFRlc3QKKyAgICBwdWJsaWMgdm9pZCB0ZXN0KCkgeworICAgIH0KKworICAgIEBCZWZvcmUKKyAgICBwdWJsaWMgdm9pZCBzZXRVcCgpeworICAgICAgICBpID0gOTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZUZpZWxkL2FmdGVyQmVmb3JlRXhpc3ROb25Bbm5vdGF0ZWQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VGaWVsZC9hZnRlckJlZm9yZUV4aXN0Tm9uQW5ub3RhdGVkLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTM5NmM0MQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VGaWVsZC9hZnRlckJlZm9yZUV4aXN0Tm9uQW5ub3RhdGVkLmphdmEKQEAgLTAsMCArMSwxMyBAQAoraW1wb3J0IG9yZy5qdW5pdC4qOworcHVibGljIGNsYXNzIFQgeworICAgIHByaXZhdGUgaW50IGk7CisKKyAgICBAVGVzdAorICAgIHB1YmxpYyB2b2lkIHRlc3QoKSB7CisgICAgfQorCisgICAgQEJlZm9yZQorICAgIHB1YmxpYyB2b2lkIHNldFVwKCl7CisgICAgICAgIGkgPSA5OworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlRmllbGQvYWZ0ZXJCZWZvcmVOb3RFeGlzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZUZpZWxkL2FmdGVyQmVmb3JlTm90RXhpc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZjFhNTI2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZUZpZWxkL2FmdGVyQmVmb3JlTm90RXhpc3QuamF2YQpAQCAtMCwwICsxLDEzIEBACitpbXBvcnQgb3JnLmp1bml0Lio7CitwdWJsaWMgY2xhc3MgVCB7CisgICAgcHJpdmF0ZSBpbnQgaTsKKworICAgIEBCZWZvcmUKKyAgICBwdWJsaWMgdm9pZCBzZXRVcCgpIHRocm93cyBFeGNlcHRpb24geworICAgICAgICBpID0gOTsKKyAgICB9CisKKyAgICBAVGVzdAorICAgIHB1YmxpYyB2b2lkIHRlc3QoKSB7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VGaWVsZC9hZnRlckJlZm9yZU5vdEV4aXN0MS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZUZpZWxkL2FmdGVyQmVmb3JlTm90RXhpc3QxLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWFkMGEzZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VGaWVsZC9hZnRlckJlZm9yZU5vdEV4aXN0MS5qYXZhCkBAIC0wLDAgKzEsMTQgQEAKK2ltcG9ydCBvcmcuanVuaXQuQmVmb3JlOworaW1wb3J0IG9yZy5qdW5pdC5UZXN0OworcHVibGljIGNsYXNzIFQgeworICAgIHByaXZhdGUgaW50IGk7CisKKyAgICBAQmVmb3JlCisgICAgcHVibGljIHZvaWQgc2V0VXAoKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgICAgaSA9IDk7CisgICAgfQorCisgICAgQFRlc3QKKyAgICBwdWJsaWMgdm9pZCB0ZXN0KCkgeworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlRmllbGQvYWZ0ZXJFbHNlQ2xhdXNlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlRmllbGQvYWZ0ZXJFbHNlQ2xhdXNlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGExYTg1NQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VGaWVsZC9hZnRlckVsc2VDbGF1c2UuamF2YQpAQCAtMCwwICsxLDE0IEBACitjbGFzcyBBIHsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyB0ZXN0MjsKKworICAgIHB1YmxpYyB2b2lkIGRlbW8oU3RyaW5nIHZhbCl7CisgICAgICAgIGlmICgidGVzdDEiLmVxdWFscyh2YWwpKXsKKyAgICAgICAgICAgIC8vZG8gc29tZXRoaWduCisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICB0ZXN0MiA9ICJ0ZXN0MiI7CisgICAgICAgICAgICBpZiAodGVzdDIuZXF1YWxzKHZhbCkpIHsKKyAgICAgICAgICAgICAgICAvLy4uLiBzb21ldGhpbmcgZWxzZQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZUZpZWxkL2FmdGVyRW5jbG9zaW5nQW5vbnltb3VzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlRmllbGQvYWZ0ZXJFbmNsb3NpbmdBbm9ueW1vdXMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZDZkOGU3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZUZpZWxkL2FmdGVyRW5jbG9zaW5nQW5vbnltb3VzLmphdmEKQEAgLTAsMCArMSwxMyBAQAorY2xhc3MgVGVzdFJlZmFjdG9yaW5nIHsKKyAgICBwdWJsaWMgZmluYWwgSW50ZWdlciBpbnRlZ2VyOworCisgICAgcHVibGljIFRlc3RSZWZhY3RvcmluZygpIHsKKyAgICAgICAgaW50ZWdlciA9IG5ldyBJbnRlZ2VyKCIwIik7CisgICAgICAgIFJ1bm5hYmxlIHIgPSBuZXcgUnVubmFibGUoKSB7CisgICAgICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgICAgIHB1YmxpYyB2b2lkIHJ1bigpIHsKKyAgICAgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oaW50ZWdlcik7CisgICAgICAgICAgICB9CisgICAgICAgIH07CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VGaWVsZC9hZnRlckZvcmNlZEZpZWxkVHlwZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZUZpZWxkL2FmdGVyRm9yY2VkRmllbGRUeXBlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGJjYWM4NgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VGaWVsZC9hZnRlckZvcmNlZEZpZWxkVHlwZS5qYXZhCkBAIC0wLDAgKzEsNyBAQAorcHVibGljIGNsYXNzIEZpZWxkVGVzdCB7CisgICAgcHVibGljIGZpbmFsIGludCBpbnRlZ2VyOworCisgICAgdm9pZCBmb28oKSB7CisgICAgICAgIGludGVnZXIgPSBuZXcgSW50ZWdlcigwKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZUZpZWxkL2FmdGVyRnJvbUxhbWJkYUV4cHIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VGaWVsZC9hZnRlckZyb21MYW1iZGFFeHByLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmUwZDJkYQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VGaWVsZC9hZnRlckZyb21MYW1iZGFFeHByLmphdmEKQEAgLTAsMCArMSwxNCBAQAoraW50ZXJmYWNlIFNBTTxYPiB7CisgICAgICAgIFggbShpbnQgaSwgaW50IGopOworICAgIH0KKworY2xhc3MgRm9vIHsKKyAgICBwdWJsaWMgZmluYWwgaW50IGFuSW50ID0gMDsKKworICAgIHZvaWQgdGVzdCgpIHsKKyAgICAgICAgbSgoaSwgaikgLT4geworICAgICAgICAgICAgcmV0dXJuIGkgKyBqOworICAgICAgICB9KTsKKyAgICB9CisgICAgdm9pZCBtKFNBTTxJbnRlZ2VyPiBzKSB7IH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlRmllbGQvYWZ0ZXJJblNldFVwLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlRmllbGQvYWZ0ZXJJblNldFVwLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2ZmMDdkZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VGaWVsZC9hZnRlckluU2V0VXAuamF2YQpAQCAtMCwwICsxLDEyIEBACitpbXBvcnQganVuaXQuZnJhbWV3b3JrLlRlc3RDYXNlOworcHVibGljIGNsYXNzIFQgZXh0ZW5kcyBUZXN0Q2FzZSB7CisgICAgcHJpdmF0ZSBpbnQgaTsKKworICAgIHB1YmxpYyB2b2lkIHNldFVwKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgICAgIHN1cGVyLnNldFVwKCk7CisgICAgICAgIGkgPSA5OworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHRlc3QoKSB7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZUZpZWxkL2FmdGVySW5pdGlhbGx5SW5TZXRVcC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZUZpZWxkL2FmdGVySW5pdGlhbGx5SW5TZXRVcC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU4MDkwZDgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlRmllbGQvYWZ0ZXJJbml0aWFsbHlJblNldFVwLmphdmEKQEAgLTAsMCArMSw4IEBACitpbXBvcnQganVuaXQuZnJhbWV3b3JrLlRlc3RDYXNlOworcHVibGljIGNsYXNzIFQgZXh0ZW5kcyBUZXN0Q2FzZSB7CisgICAgcHJpdmF0ZSBpbnQgaTsKKworICAgIHB1YmxpYyB2b2lkIHNldFVwKCkgeworICAgICAgICBpID0gOTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlRmllbGQvYWZ0ZXJMb2NhbFZhckFubm90YXRpb25zLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlRmllbGQvYWZ0ZXJMb2NhbFZhckFubm90YXRpb25zLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTExZTJlMwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VGaWVsZC9hZnRlckxvY2FsVmFyQW5ub3RhdGlvbnMuamF2YQpAQCAtMCwwICsxLDcgQEAKK2NsYXNzIFRlc3QgeworICAgIEBEZXByZWNhdGVkCisgICAgcHVibGljIGZpbmFsIFN0cmluZyBzdHJpbmcgPSAiIjsKKworICAgIHZvaWQgZm9vKCkgeworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlRmllbGQvYWZ0ZXJPbkNsYXNzTGV2ZWxCaW5hcnkuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VGaWVsZC9hZnRlck9uQ2xhc3NMZXZlbEJpbmFyeS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA3ODAwYmIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlRmllbGQvYWZ0ZXJPbkNsYXNzTGV2ZWxCaW5hcnkuamF2YQpAQCAtMCwwICsxLDMgQEAKK2NsYXNzIFRlc3QgeworICAgIHB1YmxpYyBmaW5hbCBpbnQgYW5JbnQgPSAyICsgMjsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlRmllbGQvYWZ0ZXJPbkNsYXNzTGV2ZWxDbGFzc0Zvck5hbWUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VGaWVsZC9hZnRlck9uQ2xhc3NMZXZlbENsYXNzRm9yTmFtZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU0MDM2MWUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlRmllbGQvYWZ0ZXJPbkNsYXNzTGV2ZWxDbGFzc0Zvck5hbWUuamF2YQpAQCAtMCwwICsxLDcgQEAKK2NsYXNzIFRlc3QgeworICAgIHB1YmxpYyBmaW5hbCBDbGFzczw/PiBhQ2xhc3MgPSBDbGFzcy5mb3JOYW1lKFRlc3QuY2xhc3MuZ2V0TmFtZSk7CisKKyAgICB2b2lkIGZvbygpIHsKKyAgICAgIENsYXNzIGNsYXp6ID0gYUNsYXNzOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlRmllbGQvYWZ0ZXJPbkNsYXNzTGV2ZWxEdXBsaWNhdGVzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlRmllbGQvYWZ0ZXJPbkNsYXNzTGV2ZWxEdXBsaWNhdGVzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWI0YTllZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VGaWVsZC9hZnRlck9uQ2xhc3NMZXZlbER1cGxpY2F0ZXMuamF2YQpAQCAtMCwwICsxLDUgQEAKK2NsYXNzIFRlc3QgeworICAgIHB1YmxpYyBmaW5hbCBpbnQgYW5JbnQgPSBJbnRlZ2VyLnBhcnNlSW50KCIiKTsKKworICAgIHZvaWQgZm9vKCkge2ludCBpID0gYW5JbnQ7fQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VGaWVsZC9hZnRlck9uQ2xhc3NMZXZlbER1cGxpY2F0ZXMxLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlRmllbGQvYWZ0ZXJPbkNsYXNzTGV2ZWxEdXBsaWNhdGVzMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjViMzk3NjUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlRmllbGQvYWZ0ZXJPbkNsYXNzTGV2ZWxEdXBsaWNhdGVzMS5qYXZhCkBAIC0wLDAgKzEsNCBAQAorY2xhc3MgVGVzdCB7CisgICAgcHVibGljIGZpbmFsIGludCBhbkludCA9IEludGVnZXIucGFyc2VJbnQoIiIpOworICAgIGludCBpID0gYW5JbnQ7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZUZpZWxkL2FmdGVyT25DbGFzc0xldmVsTmV3RXhwcmVzc2lvbi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZUZpZWxkL2FmdGVyT25DbGFzc0xldmVsTmV3RXhwcmVzc2lvbi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI5MzY2MDkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlRmllbGQvYWZ0ZXJPbkNsYXNzTGV2ZWxOZXdFeHByZXNzaW9uLmphdmEKQEAgLTAsMCArMSw3IEBACitjbGFzcyBUZXN0IHsKKyAgICBwdWJsaWMgZmluYWwgSW50ZWdlciBpbnRlZ2VyID0gbmV3IEludGVnZXIoMCk7CisKKyAgdm9pZCBmb28oKSB7CisgICAgSW50ZWdlciBpID0gaW50ZWdlcjsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VGaWVsZC9hZnRlck9uQ2xhc3NMZXZlbE5vRHVwbGljYXRlcy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZUZpZWxkL2FmdGVyT25DbGFzc0xldmVsTm9EdXBsaWNhdGVzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODNlOWJmYQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VGaWVsZC9hZnRlck9uQ2xhc3NMZXZlbE5vRHVwbGljYXRlcy5qYXZhCkBAIC0wLDAgKzEsMyBAQAorY2xhc3MgVGVzdCB7CisgICAgcHVibGljIGZpbmFsIGludCBhbkludCA9IEludGVnZXIucGFyc2VJbnQoIiIpOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VGaWVsZC9hZnRlck9yZGVySW5TZXR1cC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZUZpZWxkL2FmdGVyT3JkZXJJblNldHVwLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTczMWFkOAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VGaWVsZC9hZnRlck9yZGVySW5TZXR1cC5qYXZhCkBAIC0wLDAgKzEsMTYgQEAKK2ltcG9ydCBqdW5pdC5mcmFtZXdvcmsuVGVzdENhc2U7CitwdWJsaWMgY2xhc3MgVCBleHRlbmRzIFRlc3RDYXNlIHsKKyAgICBwcml2YXRlIFN0cmluZyBpOworCisgICAgcHVibGljIHZvaWQgc2V0VXAoKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgICAgaSA9IGdldE5hbWUoKTsKKyAgICAgICAgbXlOYW1lID0gIiBzZWNvbmQgIiArIGk7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgdGVzdCgpIHRocm93cyBFeGNlcHRpb24geworICAgIH0KKworICAgIHByaXZhdGUgU3RyaW5nIGdldE5hbWUoKSB7CisgICAgICAgIHJldHVybiBudWxsOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VGaWVsZC9hZnRlck91dGVyQ2xhc3MuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VGaWVsZC9hZnRlck91dGVyQ2xhc3MuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZWU2OThmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZUZpZWxkL2FmdGVyT3V0ZXJDbGFzcy5qYXZhCkBAIC0wLDAgKzEsMTYgQEAKK3B1YmxpYyBjbGFzcyBGaWVsZFRlc3QgeworICAgIHByaXZhdGUgT2JqZWN0IGNvbWJvQm94OworCisgICAgcHJpdmF0ZSBjbGFzcyBOb1NlbGVjdGlvbkNvbWJvSXRlbSB7CisgICAgICAgIHB1YmxpYyBmaW5hbCBPYmplY3QgY29tYm9Cb3g7CisKKyAgICAgICAgcHJpdmF0ZSBOb1NlbGVjdGlvbkNvbWJvSXRlbSgpIHsKKyAgICAgICAgICAgIGNvbWJvQm94ID0gRmllbGRUZXN0LnRoaXMuY29tYm9Cb3g7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgU3RyaW5nIGdldExhYmVsKCkgeworICAgICAgICAgICAgT2JqZWN0IGNvbWJvSXRlbSA9IGNvbWJvQm94LmdldFNlbGVjdGVkSXRlbSgpOworICAgICAgICAgICAgcmV0dXJuIGNvbWJvSXRlbSA9PSB0aGlzID8gIjxQbGVhc2UgU2VsZWN0PiIgOiAiPEJhY2sgdG8gb3ZlcnZpZXc+IjsKKyAgICAgICAgfQorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlRmllbGQvYWZ0ZXJQdWJsaWNCYXNlQ2xhc3NTZXRVcC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZUZpZWxkL2FmdGVyUHVibGljQmFzZUNsYXNzU2V0VXAuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMTQ4MjIxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZUZpZWxkL2FmdGVyUHVibGljQmFzZUNsYXNzU2V0VXAuamF2YQpAQCAtMCwwICsxLDE5IEBACitpbXBvcnQganVuaXQuZnJhbWV3b3JrLlRlc3RDYXNlOworCitjbGFzcyBCYXNlIGV4dGVuZHMgVGVzdENhc2UgeworICAgIHB1YmxpYyB2b2lkIHNldFVwKCkgeworICAgICAgICBzdXBlci5zZXRVcCgpOworICAgIH0KK30KKworcHVibGljIGNsYXNzIFQgZXh0ZW5kcyBCYXNlIHsKKyAgICBwcml2YXRlIGludCBpOworCisgICAgcHVibGljIHZvaWQgc2V0VXAoKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgICAgc3VwZXIuc2V0VXAoKTsKKyAgICAgICAgaSA9IDk7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgdGVzdCgpIHsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlRmllbGQvYWZ0ZXJTdGF0aWNGaWVsZEluSW5uZXJDbGFzcy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZUZpZWxkL2FmdGVyU3RhdGljRmllbGRJbklubmVyQ2xhc3MuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYTNjMmFhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZUZpZWxkL2FmdGVyU3RhdGljRmllbGRJbklubmVyQ2xhc3MuamF2YQpAQCAtMCwwICsxLDkgQEAKK3B1YmxpYyBjbGFzcyBBIHsKKyAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgY2xhc3MgSW5uZXIgeworICAgICAgcHVibGljIGZpbmFsIFN0cmluZyBzdHJpbmc7CisKKyAgICAgIHB1YmxpYyBJbm5lcihJbnRlZ2VyIHBhcmFtKSB7CisgICAgICAgICAgc3RyaW5nID0gcGFyYW0udG9TdHJpbmcoKTsKKyAgICAgfQorICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlRmllbGQvYWZ0ZXJVbnJlc29sdmVkUmVmZXJlbmNlVG9Mb2NhbFZhci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZUZpZWxkL2FmdGVyVW5yZXNvbHZlZFJlZmVyZW5jZVRvTG9jYWxWYXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZGMxNDFlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZUZpZWxkL2FmdGVyVW5yZXNvbHZlZFJlZmVyZW5jZVRvTG9jYWxWYXIuamF2YQpAQCAtMCwwICsxLDEyIEBACitpbXBvcnQgamF2YS51dGlsLkFycmF5TGlzdDsKKworcHVibGljIGNsYXNzIFRlc3QKK3sKKyAgICBwdWJsaWMgZmluYWwgQXJyYXlMaXN0IGFycmF5TGlzdDsKKworICAgIHB1YmxpYyBUZXN0KCkKKyAgICB7CisgICAgICAgIGFycmF5TGlzdCA9IG5ldyBBcnJheUxpc3QoKTsKKyAgICB9CisKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VGaWVsZC9iZWZvcmUxLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlRmllbGQvYmVmb3JlMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk3NzE3ZTMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlRmllbGQvYmVmb3JlMS5qYXZhCkBAIC0wLDAgKzEsNiBAQAorY2xhc3MgSW5TdGF0aWNJbml0aWFsaXplciB7CisgICAgc3RhdGljIHsKKwkJU3lzdGVtLm91dC5wcmludGxuKDxzZWxlY3Rpb24+IkhlbGxvIFdvcmxkIjwvc2VsZWN0aW9uPik7CisgICAgfQorICAgIC8vRmllbGQgbXVzdCBiZSBwbGFjZWQgYmVmb3JlIGluaXRpYWxpemVyIG9yIGlsbGVnYWwgZm9yd2FyZCByZWZlcmVuY2Ugd2lsbCBoYXBwZW4KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlRmllbGQvYmVmb3JlQmVmb3JlRXhpc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VGaWVsZC9iZWZvcmVCZWZvcmVFeGlzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMwNjdlZTcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlRmllbGQvYmVmb3JlQmVmb3JlRXhpc3QuamF2YQpAQCAtMCwwICsxLDEwIEBACitpbXBvcnQgb3JnLmp1bml0Lio7CitwdWJsaWMgY2xhc3MgVCB7CisgICAgQFRlc3QKKyAgICBwdWJsaWMgdm9pZCB0ZXN0KCkgeworICAgICAgICBpbnQgPGNhcmV0PmkgPSA5OworICAgIH0KKworICAgIEBCZWZvcmUKKyAgICBwdWJsaWMgdm9pZCBzZXRVcCgpe30KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlRmllbGQvYmVmb3JlQmVmb3JlRXhpc3ROb25Bbm5vdGF0ZWQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VGaWVsZC9iZWZvcmVCZWZvcmVFeGlzdE5vbkFubm90YXRlZC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNmYjRjNjEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlRmllbGQvYmVmb3JlQmVmb3JlRXhpc3ROb25Bbm5vdGF0ZWQuamF2YQpAQCAtMCwwICsxLDkgQEAKK2ltcG9ydCBvcmcuanVuaXQuKjsKK3B1YmxpYyBjbGFzcyBUIHsKKyAgICBAVGVzdAorICAgIHB1YmxpYyB2b2lkIHRlc3QoKSB7CisgICAgICAgIGludCA8Y2FyZXQ+aSA9IDk7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgc2V0VXAoKXt9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZUZpZWxkL2JlZm9yZUJlZm9yZU5vdEV4aXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlRmllbGQvYmVmb3JlQmVmb3JlTm90RXhpc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZTg4YzEyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZUZpZWxkL2JlZm9yZUJlZm9yZU5vdEV4aXN0LmphdmEKQEAgLTAsMCArMSw3IEBACitpbXBvcnQgb3JnLmp1bml0Lio7CitwdWJsaWMgY2xhc3MgVCB7CisgICAgQFRlc3QKKyAgICBwdWJsaWMgdm9pZCB0ZXN0KCkgeworICAgICAgICBpbnQgPGNhcmV0PmkgPSA5OworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlRmllbGQvYmVmb3JlQmVmb3JlTm90RXhpc3QxLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlRmllbGQvYmVmb3JlQmVmb3JlTm90RXhpc3QxLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmU0ZmNkMQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VGaWVsZC9iZWZvcmVCZWZvcmVOb3RFeGlzdDEuamF2YQpAQCAtMCwwICsxLDcgQEAKK2ltcG9ydCBvcmcuanVuaXQuVGVzdDsKK3B1YmxpYyBjbGFzcyBUIHsKKyAgICBAVGVzdAorICAgIHB1YmxpYyB2b2lkIHRlc3QoKSB7CisgICAgICAgIGludCA8Y2FyZXQ+aSA9IDk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VGaWVsZC9iZWZvcmVFbHNlQ2xhdXNlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlRmllbGQvYmVmb3JlRWxzZUNsYXVzZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI0ZWYzY2IKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlRmllbGQvYmVmb3JlRWxzZUNsYXVzZS5qYXZhCkBAIC0wLDAgKzEsOSBAQAorY2xhc3MgQSB7CisgICAgcHVibGljIHZvaWQgZGVtbyhTdHJpbmcgdmFsKXsKKyAgICAgICAgaWYgKCJ0ZXN0MSIuZXF1YWxzKHZhbCkpeworICAgICAgICAgICAgLy9kbyBzb21ldGhpZ24KKyAgICAgICAgfSBlbHNlIGlmICg8c2VsZWN0aW9uPiJ0ZXN0MiI8L3NlbGVjdGlvbj4uZXF1YWxzKHZhbCkpIHsKKyAgICAgICAgICAgIC8vLi4uIHNvbWV0aGluZyBlbHNlCisgICAgICAgIH0KKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlRmllbGQvYmVmb3JlRW5jbG9zaW5nQW5vbnltb3VzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlRmllbGQvYmVmb3JlRW5jbG9zaW5nQW5vbnltb3VzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODUwZGE5NAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VGaWVsZC9iZWZvcmVFbmNsb3NpbmdBbm9ueW1vdXMuamF2YQpAQCAtMCwwICsxLDExIEBACitjbGFzcyBUZXN0UmVmYWN0b3JpbmcgeworICAgIHB1YmxpYyBUZXN0UmVmYWN0b3JpbmcoKSB7CisgICAgICAgIFJ1bm5hYmxlIHIgPSBuZXcgUnVubmFibGUoKSB7CisgICAgICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgICAgIHB1YmxpYyB2b2lkIHJ1bigpIHsKKyAgICAgICAgICAgICAgICBJbnRlZ2VyIHRvPGNhcmV0PkZpZWxkID0gbmV3IEludGVnZXIoIjAiKTsKKyAgICAgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4odG9GaWVsZCk7CisgICAgICAgICAgICB9CisgICAgICAgIH07CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VGaWVsZC9iZWZvcmVGb3JjZWRGaWVsZFR5cGUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VGaWVsZC9iZWZvcmVGb3JjZWRGaWVsZFR5cGUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZTljMzQwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZUZpZWxkL2JlZm9yZUZvcmNlZEZpZWxkVHlwZS5qYXZhCkBAIC0wLDAgKzEsNSBAQAorcHVibGljIGNsYXNzIEZpZWxkVGVzdCB7CisgICAgdm9pZCBmb28oKSB7CisgICAgICAgIEludGVnZXIgPHNlbGVjdGlvbj5paTwvc2VsZWN0aW9uPiA9IG5ldyBJbnRlZ2VyKDApOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlRmllbGQvYmVmb3JlRnJvbUxhbWJkYUV4cHIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VGaWVsZC9iZWZvcmVGcm9tTGFtYmRhRXhwci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY2ZTk2N2YKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlRmllbGQvYmVmb3JlRnJvbUxhbWJkYUV4cHIuamF2YQpAQCAtMCwwICsxLDEzIEBACitpbnRlcmZhY2UgU0FNPFg+IHsKKyAgICAgICAgWCBtKGludCBpLCBpbnQgaik7CisgICAgfQorCitjbGFzcyBGb28geyAgCisgICAgdm9pZCB0ZXN0KCkgeworICAgICAgICBtKChpLCBqKSAtPiB7CisgICAgICAgICAgPHNlbGVjdGlvbj4wPC9zZWxlY3Rpb24+CisgICAgICAgICAgcmV0dXJuIGkgKyBqOworICAgICAgICB9KTsKKyAgICB9CisgICAgdm9pZCBtKFNBTTxJbnRlZ2VyPiBzKSB7IH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlRmllbGQvYmVmb3JlSW5TZXRVcC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZUZpZWxkL2JlZm9yZUluU2V0VXAuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYzk2YjM0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZUZpZWxkL2JlZm9yZUluU2V0VXAuamF2YQpAQCAtMCwwICsxLDYgQEAKK2ltcG9ydCBqdW5pdC5mcmFtZXdvcmsuVGVzdENhc2U7CitwdWJsaWMgY2xhc3MgVCBleHRlbmRzIFRlc3RDYXNlIHsKKyAgICBwdWJsaWMgdm9pZCB0ZXN0KCkgeworICAgICAgICBpbnQgPGNhcmV0PmkgPSA5OworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VGaWVsZC9iZWZvcmVJbml0aWFsbHlJblNldFVwLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlRmllbGQvYmVmb3JlSW5pdGlhbGx5SW5TZXRVcC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIzNzNlZTMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlRmllbGQvYmVmb3JlSW5pdGlhbGx5SW5TZXRVcC5qYXZhCkBAIC0wLDAgKzEsNiBAQAoraW1wb3J0IGp1bml0LmZyYW1ld29yay5UZXN0Q2FzZTsKK3B1YmxpYyBjbGFzcyBUIGV4dGVuZHMgVGVzdENhc2UgeworICAgIHB1YmxpYyB2b2lkIHNldFVwKCkgeworICAgICAgICBpbnQgPGNhcmV0PmkgPSA5OworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VGaWVsZC9iZWZvcmVMb2NhbFZhckFubm90YXRpb25zLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlRmllbGQvYmVmb3JlTG9jYWxWYXJBbm5vdGF0aW9ucy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAxZGFkM2IKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlRmllbGQvYmVmb3JlTG9jYWxWYXJBbm5vdGF0aW9ucy5qYXZhCkBAIC0wLDAgKzEsNSBAQAorY2xhc3MgVGVzdCB7CisgICAgdm9pZCBmb28oKSB7CisgICAgICAgIEBEZXByZWNhdGVkIFN0cmluZyBmPGNhcmV0Pm8gPSAiIjsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZUZpZWxkL2JlZm9yZU9uQ2xhc3NMZXZlbEJpbmFyeS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZUZpZWxkL2JlZm9yZU9uQ2xhc3NMZXZlbEJpbmFyeS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRmYWFmZTMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlRmllbGQvYmVmb3JlT25DbGFzc0xldmVsQmluYXJ5LmphdmEKQEAgLTAsMCArMSwzIEBACitjbGFzcyBUZXN0IHsKKyAgMiA8Y2FyZXQ+ICsgMgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VGaWVsZC9iZWZvcmVPbkNsYXNzTGV2ZWxDbGFzc0Zvck5hbWUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VGaWVsZC9iZWZvcmVPbkNsYXNzTGV2ZWxDbGFzc0Zvck5hbWUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZWRmN2YzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZUZpZWxkL2JlZm9yZU9uQ2xhc3NMZXZlbENsYXNzRm9yTmFtZS5qYXZhCkBAIC0wLDAgKzEsNyBAQAorY2xhc3MgVGVzdCB7CisgICAgPHNlbGVjdGlvbj5DbGFzcy5mb3JOYW1lKFRlc3QuY2xhc3MuZ2V0TmFtZSk8L3NlbGVjdGlvbj4KKworICAgIHZvaWQgZm9vKCkgeworICAgICAgQ2xhc3MgY2xhenogPSBDbGFzcy5mb3JOYW1lKFRlc3QuY2xhc3MuZ2V0TmFtZSk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VGaWVsZC9iZWZvcmVPbkNsYXNzTGV2ZWxEdXBsaWNhdGVzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlRmllbGQvYmVmb3JlT25DbGFzc0xldmVsRHVwbGljYXRlcy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUxODY2ZTgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlRmllbGQvYmVmb3JlT25DbGFzc0xldmVsRHVwbGljYXRlcy5qYXZhCkBAIC0wLDAgKzEsNCBAQAorY2xhc3MgVGVzdCB7CisgIEludGVnZXIucGE8Y2FyZXQ+cnNlSW50KCIiKQorICB2b2lkIGZvbygpIHtpbnQgaSA9IEludGVnZXIucGFyc2VJbnQoIiIpO30KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlRmllbGQvYmVmb3JlT25DbGFzc0xldmVsRHVwbGljYXRlczEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VGaWVsZC9iZWZvcmVPbkNsYXNzTGV2ZWxEdXBsaWNhdGVzMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc2NzljOWU2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZUZpZWxkL2JlZm9yZU9uQ2xhc3NMZXZlbER1cGxpY2F0ZXMxLmphdmEKQEAgLTAsMCArMSw0IEBACitjbGFzcyBUZXN0IHsKKyAgaW50IGkgPSBJbnRlZ2VyLnBhcnNlSW50KCIiKTsKKyAgSW50ZWdlci5wYTxjYXJldD5yc2VJbnQoIiIpCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZUZpZWxkL2JlZm9yZU9uQ2xhc3NMZXZlbE5ld0V4cHJlc3Npb24uamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VGaWVsZC9iZWZvcmVPbkNsYXNzTGV2ZWxOZXdFeHByZXNzaW9uLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTM5NTA0YgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VGaWVsZC9iZWZvcmVPbkNsYXNzTGV2ZWxOZXdFeHByZXNzaW9uLmphdmEKQEAgLTAsMCArMSw3IEBACitjbGFzcyBUZXN0IHsKKyAgPHNlbGVjdGlvbj5uZXcgSW50ZWdlcigwKTwvc2VsZWN0aW9uPgorCisgIHZvaWQgZm9vKCkgeworICAgIEludGVnZXIgaSA9IG5ldyBJbnRlZ2VyKDApOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZUZpZWxkL2JlZm9yZU9uQ2xhc3NMZXZlbE5vRHVwbGljYXRlcy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZUZpZWxkL2JlZm9yZU9uQ2xhc3NMZXZlbE5vRHVwbGljYXRlcy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY3MWJiMmUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlRmllbGQvYmVmb3JlT25DbGFzc0xldmVsTm9EdXBsaWNhdGVzLmphdmEKQEAgLTAsMCArMSwzIEBACitjbGFzcyBUZXN0IHsKKyAgSW50ZWdlci5wYTxjYXJldD5yc2VJbnQoIiIpCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZUZpZWxkL2JlZm9yZU9yZGVySW5TZXR1cC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZUZpZWxkL2JlZm9yZU9yZGVySW5TZXR1cC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAyYTk4NWMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlRmllbGQvYmVmb3JlT3JkZXJJblNldHVwLmphdmEKQEAgLTAsMCArMSwxNCBAQAoraW1wb3J0IGp1bml0LmZyYW1ld29yay5UZXN0Q2FzZTsKK3B1YmxpYyBjbGFzcyBUIGV4dGVuZHMgVGVzdENhc2UgeworICAgIHB1YmxpYyB2b2lkIHNldFVwKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgICAgIFN0cmluZyBuYTxjYXJldD5tZSA9IGdldE5hbWUoKTsKKyAgICAgICAgbXlOYW1lID0gIiBzZWNvbmQgIiArIG5hbWU7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgdGVzdCgpIHRocm93cyBFeGNlcHRpb24geworICAgIH0KKworICAgIHByaXZhdGUgU3RyaW5nIGdldE5hbWUoKSB7CisgICAgICAgIHJldHVybiBudWxsOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VGaWVsZC9iZWZvcmVPdXRlckNsYXNzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlRmllbGQvYmVmb3JlT3V0ZXJDbGFzcy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEwNWZhYTQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlRmllbGQvYmVmb3JlT3V0ZXJDbGFzcy5qYXZhCkBAIC0wLDAgKzEsMTMgQEAKK3B1YmxpYyBjbGFzcyBGaWVsZFRlc3QgeworICAgIHByaXZhdGUgT2JqZWN0IGNvbWJvQm94OworCisgICAgcHJpdmF0ZSBjbGFzcyBOb1NlbGVjdGlvbkNvbWJvSXRlbSB7CisgICAgICAgIHByaXZhdGUgTm9TZWxlY3Rpb25Db21ib0l0ZW0oKSB7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgU3RyaW5nIGdldExhYmVsKCkgeworICAgICAgICAgICAgT2JqZWN0IGNvbWJvSXRlbSA9IDxzZWxlY3Rpb24+Y29tYm9Cb3g8L3NlbGVjdGlvbj4uZ2V0U2VsZWN0ZWRJdGVtKCk7CisgICAgICAgICAgICByZXR1cm4gY29tYm9JdGVtID09IHRoaXMgPyAiPFBsZWFzZSBTZWxlY3Q+IiA6ICI8QmFjayB0byBvdmVydmlldz4iOworICAgICAgICB9CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VGaWVsZC9iZWZvcmVQdWJsaWNCYXNlQ2xhc3NTZXRVcC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZUZpZWxkL2JlZm9yZVB1YmxpY0Jhc2VDbGFzc1NldFVwLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTkxMmFlMQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VGaWVsZC9iZWZvcmVQdWJsaWNCYXNlQ2xhc3NTZXRVcC5qYXZhCkBAIC0wLDAgKzEsMTMgQEAKK2ltcG9ydCBqdW5pdC5mcmFtZXdvcmsuVGVzdENhc2U7CisKK2NsYXNzIEJhc2UgZXh0ZW5kcyBUZXN0Q2FzZSB7CisgICAgcHVibGljIHZvaWQgc2V0VXAoKSB7CisgICAgICAgIHN1cGVyLnNldFVwKCk7CisgICAgfQorfQorCitwdWJsaWMgY2xhc3MgVCBleHRlbmRzIEJhc2UgeworICAgIHB1YmxpYyB2b2lkIHRlc3QoKSB7CisgICAgICAgIGludCA8Y2FyZXQ+aSA9IDk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZUZpZWxkL2JlZm9yZVJlamVjdEludHJvZHVjZUZpZWxkRnJvbUV4cHJJblRoaXNDYWxsLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlRmllbGQvYmVmb3JlUmVqZWN0SW50cm9kdWNlRmllbGRGcm9tRXhwckluVGhpc0NhbGwuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MDU2ZThhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZUZpZWxkL2JlZm9yZVJlamVjdEludHJvZHVjZUZpZWxkRnJvbUV4cHJJblRoaXNDYWxsLmphdmEKQEAgLTAsMCArMSw2IEBACitjbGFzcyBUZXN0IHsKKyAgVGVzdChTdHJpbmcgcywgU3RyaW5nIHMxKSB7fQorICBUZXN0KFN0cmluZyBzKSB7CisgICAgdGhpcyg8c2VsZWN0aW9uPnM8L3NlbGVjdGlvbj4sIHMpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZUZpZWxkL2JlZm9yZVN0YXRpY0ZpZWxkSW5Jbm5lckNsYXNzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlRmllbGQvYmVmb3JlU3RhdGljRmllbGRJbklubmVyQ2xhc3MuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZTFiOWVmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZUZpZWxkL2JlZm9yZVN0YXRpY0ZpZWxkSW5Jbm5lckNsYXNzLmphdmEKQEAgLTAsMCArMSw3IEBACitwdWJsaWMgY2xhc3MgQSB7CisgIHByaXZhdGUgc3RhdGljIGZpbmFsIGNsYXNzIElubmVyIHsKKyAgICAgcHVibGljIElubmVyKEludGVnZXIgcGFyYW0pIHsKKyAgICAgICAgU3RyaW5nIHM8Y2FyZXQ+dHIgPSBwYXJhbS50b1N0cmluZygpOworICAgICB9CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VGaWVsZC9iZWZvcmVVbnJlc29sdmVkUmVmZXJlbmNlVG9Mb2NhbFZhci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZUZpZWxkL2JlZm9yZVVucmVzb2x2ZWRSZWZlcmVuY2VUb0xvY2FsVmFyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmQzNGE1ZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VGaWVsZC9iZWZvcmVVbnJlc29sdmVkUmVmZXJlbmNlVG9Mb2NhbFZhci5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKK2ltcG9ydCBqYXZhLnV0aWwuQXJyYXlMaXN0OworCitwdWJsaWMgY2xhc3MgVGVzdAoreworICAgIHB1YmxpYyBUZXN0KCkKKyAgICB7CisgICAgICAgIGFycmF5PGNhcmV0Pkxpc3QgPSBuZXcgQXJyYXlMaXN0KCk7CisgICAgfQorCit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlUGFyYW1ldGVyL2FmdGVyQW5vbnltb3VzQ2xhc3MuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXIvYWZ0ZXJBbm9ueW1vdXNDbGFzcy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU4ZDY3NDIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlUGFyYW1ldGVyL2FmdGVyQW5vbnltb3VzQ2xhc3MuamF2YQpAQCAtMCwwICsxLDEwIEBACitwdWJsaWMgY2xhc3MgVGVzdCB7CisgIHB1YmxpYyBUZXN0KGludCBhbk9iamVjdCkgeworICAgIGludCBpID0gYW5PYmplY3Q7CisgIH0KKworICBwdWJsaWMgVGVzdCBnZXQoKSB7CisgICAgcmV0dXJuIG5ldyBUZXN0KDApIHsKKyAgICB9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlUGFyYW1ldGVyL2FmdGVyQXJyYXlJbml0aWFsaXplci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVBhcmFtZXRlci9hZnRlckFycmF5SW5pdGlhbGl6ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZmQ4N2JiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVBhcmFtZXRlci9hZnRlckFycmF5SW5pdGlhbGl6ZXIuamF2YQpAQCAtMCwwICsxLDEwIEBACitjbGFzcyBUZXN0IHsKKyAgcHVibGljIHN5bmNocm9uaXplZCBib29sZWFuIGZvbyhTdHJpbmcgbXNnKSB7CisgICAgcmV0dXJuIGJhcihuZXcgU3RyaW5nW117bWVzc2FnZX0pOworICB9CisKKyAgcHJpdmF0ZSBib29sZWFuIGJhcihTdHJpbmdbXSBhbk9iamVjdCkgeworICAgIFN0cmluZ1tdIHBhcmFtcyA9IGFuT2JqZWN0OworICAgIHJldHVybiBmYWxzZTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXIvYWZ0ZXJDb25mbGljdGluZ0ZpZWxkLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlUGFyYW1ldGVyL2FmdGVyQ29uZmxpY3RpbmdGaWVsZC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcxMDZmZDUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlUGFyYW1ldGVyL2FmdGVyQ29uZmxpY3RpbmdGaWVsZC5qYXZhCkBAIC0wLDAgKzEsMjUgQEAKK3B1YmxpYyBjbGFzcyBUZXN0IHsKKyAgICBwdWJsaWMgaW50IGFuT2JqZWN0OworICAgIHB1YmxpYyB2b2lkIG1ldGhvZChpbnQgYW5PYmplY3QpIHsKKyAgICB9Cit9CisKK3B1YmxpYyBjbGFzcyBUZXN0MSBleHRlbmRzIFRlc3QgeworICAgIHB1YmxpYyB2b2lkIG1ldGhvZChpbnQgYW5PYmplY3QpIHsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKGFuT2JqZWN0KTsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKHRoaXMuYW5PYmplY3QpOworICAgIH0KK30KKworcHVibGljIGNsYXNzIFRlc3QyIGV4dGVuZHMgVGVzdDEgeworICAgIHB1YmxpYyB2b2lkIG1ldGhvZChpbnQgYW5PYmplY3QpIHsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKHRoaXMuYW5PYmplY3QpOworICAgIH0KK30KKworcHVibGljIGNsYXNzIFVzYWdlIHsKKyAgICB7CisgICAgICAgIFRlc3QgdCA9IG5ldyBUZXN0MigpOworICAgICAgICB0Lm1ldGhvZCgxICsgMik7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXIvYWZ0ZXJEZWxlZ2F0ZVdpdGhWYXJhcmdzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlUGFyYW1ldGVyL2FmdGVyRGVsZWdhdGVXaXRoVmFyYXJncy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc4MjFhZGQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlUGFyYW1ldGVyL2FmdGVyRGVsZWdhdGVXaXRoVmFyYXJncy5qYXZhCkBAIC0wLDAgKzEsOSBAQAorcHVibGljIGNsYXNzIFRlc3QgeworICAgIHZvaWQgbShpbnQuLi4gcHMpIHsKKyAgICAgICAgbSgiYXNkIiwgcHMpOworICAgIH0KKworICAgIHZvaWQgbShmaW5hbCBTdHJpbmcgYW5PYmplY3QsIGludC4uLiBwcykgeworICAgICAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihhbk9iamVjdCk7CisgICAgICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlUGFyYW1ldGVyL2FmdGVyRGlhbW9uZDJSYXcuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXIvYWZ0ZXJEaWFtb25kMlJhdy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI2Zjc2NGYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlUGFyYW1ldGVyL2FmdGVyRGlhbW9uZDJSYXcuamF2YQpAQCAtMCwwICsxLDYgQEAKK2ltcG9ydCBqYXZhLnV0aWwuQXJyYXlMaXN0CitjbGFzcyBUZXN0IHsKKyAgdm9pZCBmb28oZmluYWwgQXJyYXlMaXN0IGFuT2JqZWN0KSB7CisgICAgQXJyYXlMaXN0IGwgPSBhbk9iamVjdDsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXIvYWZ0ZXJEaWFtb25kT2NjdXJyZW5jZXMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXIvYWZ0ZXJEaWFtb25kT2NjdXJyZW5jZXMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYjEwYmQ1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVBhcmFtZXRlci9hZnRlckRpYW1vbmRPY2N1cnJlbmNlcy5qYXZhCkBAIC0wLDAgKzEsMTMgQEAKK2ltcG9ydCBqYXZhLnV0aWwuKjsKKworY2xhc3MgVGVzdCB7CisgIHZvaWQgZm9vKGZpbmFsIEFycmF5TGlzdDxTdHJpbmc+IGFuT2JqZWN0KSB7CisgICAgTGlzdDxTdHJpbmc+IGxzID0gYW5PYmplY3Q7CisgICAgTGlzdDxTdHJpbmc+IGxzcyA9IGFuT2JqZWN0OworICAgIExpc3Q8SW50ZWdlcj4gbGkgPSBuZXcgQXJyYXlMaXN0PD4oKTsKKyAgfQorICAKKyAgdm9pZCBiYXIoKSB7CisgICAgZm9vKG5ldyBBcnJheUxpc3Q8U3RyaW5nPigpKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXIvYWZ0ZXJFbmNsb3NpbmdXaXRoUGFyYW1EZWxldGlvbi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVBhcmFtZXRlci9hZnRlckVuY2xvc2luZ1dpdGhQYXJhbURlbGV0aW9uLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTIxNjAyNgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXIvYWZ0ZXJFbmNsb3NpbmdXaXRoUGFyYW1EZWxldGlvbi5qYXZhCkBAIC0wLDAgKzEsMjggQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwMC0yMDExIEpldEJyYWlucyBzLnIuby4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitjbGFzcyBBQUFBIHsKKyAgdm9pZCBmb28oKSB7CisgICAgc2FtcGxlRW5jbG9zaW5nKCJBIiArICIiKTsKKyAgfQorCisgIHByaXZhdGUgdm9pZCBzYW1wbGVFbmNsb3NpbmcoZmluYWwgU3RyaW5nIGFuT2JqZWN0KSB7CisgICAgbmV3IEFBQUEoKSB7CisgICAgICB2b2lkIGJhcigpIHsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKGFuT2JqZWN0KTsKKyAgICAgIH0KKyAgICB9LmJhcigpOworICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlUGFyYW1ldGVyL2FmdGVyRW51bXMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXIvYWZ0ZXJFbnVtcy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVhNDIzOTYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlUGFyYW1ldGVyL2FmdGVyRW51bXMuamF2YQpAQCAtMCwwICsxLDYgQEAKK3B1YmxpYyBlbnVtIEV7CisgIGEoMiksIGIoMik7CisgIHB1YmxpYyBFKGludCBhbk9iamVjdCkgeworICAgIFN5c3RlbS5vdXQucHJpbnQoYW5PYmplY3QpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVBhcmFtZXRlci9hZnRlckV4cGVjdGVkVHlwZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVBhcmFtZXRlci9hZnRlckV4cGVjdGVkVHlwZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk4NWZlZTgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlUGFyYW1ldGVyL2FmdGVyRXhwZWN0ZWRUeXBlLmphdmEKQEAgLTAsMCArMSwxMiBAQAorY2xhc3MgVGVzdCB7CisgICAgdm9pZCBmIChTdHJpbmcgcykge30KKworICAgIHZvaWQgdShmaW5hbCBTdHJpbmcgYW5PYmplY3QpIHsKKyAgICAgICAgZihhbk9iamVjdCk7CisgICAgfQorCisgICAgdm9pZCB5ICgpIHsKKyAgICAgICAgU3RyaW5nIG5hbWUgPSAiIjsKKyAgICAgICAgdShuYW1lKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlUGFyYW1ldGVyL2FmdGVyRmllbGRBY2Nlc3MuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXIvYWZ0ZXJGaWVsZEFjY2Vzcy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMyNWUzNjQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlUGFyYW1ldGVyL2FmdGVyRmllbGRBY2Nlc3MuamF2YQpAQCAtMCwwICsxLDE0IEBACitjbGFzcyBUZXN0IHsKKyAgICBpbnQgbWV0aG9kKGludCBhLCBpbnQgYiwgaW50IGFuT2JqZWN0KSB7CisgICAgICAgIHJldHVybiBhbk9iamVjdDsKKyAgICB9CisgICAgaW50IGk7Cit9CisKK2NsYXNzIFhUZXN0IHsKKyAgICBpbnQgbigpIHsKKyAgICAgICAgVGVzdCB0OworICAgICAgICAKKyAgICAgICAgcmV0dXJuIHQubWV0aG9kKDEsIDIsIHQuaSk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXIvYWZ0ZXJGaWVsZFdpdGhHZXR0ZXJSZXBsYWNlbWVudC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVBhcmFtZXRlci9hZnRlckZpZWxkV2l0aEdldHRlclJlcGxhY2VtZW50LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmJjOTc0YgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXIvYWZ0ZXJGaWVsZFdpdGhHZXR0ZXJSZXBsYWNlbWVudC5qYXZhCkBAIC0wLDAgKzEsMTYgQEAKK2NsYXNzIFRlc3QgeworICAgIGludCBpOworICAgIAorICAgIHB1YmxpYyBpbnQgZ2V0SSgpIHsgcmV0dXJuIGk7IH0KKyAgICAKKyAgICBpbnQgbWV0aG9kKGludCBhLCBpbnQgYW5PYmplY3QpIHsKKyAgICAgICAgcmV0dXJuIGFuT2JqZWN0OworICAgIH0KK30KKworY2xhc3MgWFhYIHsKKyAgICBwdWJsaWMgaW50IG0oKSB7CisgICAgICAgIFRlc3QgdDsKKyAgICAgICAgcmV0dXJuIHQubWV0aG9kKDEsIDEgKyB0LmdldEkoKSk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXIvYWZ0ZXJGaWVsZFdpdGhJbmFjY2Vzc2libGVHZXR0ZXJSZXBsYWNlbWVudC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVBhcmFtZXRlci9hZnRlckZpZWxkV2l0aEluYWNjZXNzaWJsZUdldHRlclJlcGxhY2VtZW50LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2U5NTM3YgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXIvYWZ0ZXJGaWVsZFdpdGhJbmFjY2Vzc2libGVHZXR0ZXJSZXBsYWNlbWVudC5qYXZhCkBAIC0wLDAgKzEsMTYgQEAKK2NsYXNzIFRlc3QgeworICAgIHB1YmxpYyBpbnQgaTsKKyAgICAKKyAgICBwdWJsaWMgaW50IGdldEkoKSB7IHJldHVybiBpOyB9CisgICAgCisgICAgaW50IG1ldGhvZChpbnQgYSwgaW50IGFuT2JqZWN0KSB7CisgICAgICAgIHJldHVybiBhbk9iamVjdDsKKyAgICB9Cit9CisKK2NsYXNzIFhYWCB7CisgICAgcHVibGljIGludCBtKCkgeworICAgICAgICBUZXN0IHQ7CisgICAgICAgIHJldHVybiB0Lm1ldGhvZCgxLCAxICsgdC5pKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVBhcmFtZXRlci9hZnRlckdlbmVyYXRlRGVsZWdhdGUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXIvYWZ0ZXJHZW5lcmF0ZURlbGVnYXRlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzcxMjJkZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXIvYWZ0ZXJHZW5lcmF0ZURlbGVnYXRlLmphdmEKQEAgLTAsMCArMSwyMiBAQAorY2xhc3MgVGVzdCB7CisgICAgcHVibGljIGludCBtKGludCBhLCBpbnQgYikgeworICAgICAgICByZXR1cm4gbShhLCBiLCAwKTsKKyAgICB9CisKKyAgICBwdWJsaWMgaW50IG0oaW50IGEsIGludCBiLCBpbnQgYW5PYmplY3QpIHsKKyAgICAgICAgaWYoYSA+IGIpIHsKKyAgICAgICAgICAgcmV0dXJuIGFuT2JqZWN0OworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICByZXR1cm4gYW5PYmplY3Q7CisgICAgICAgIH0KKyAgICB9Cit9CisKK2NsYXNzIFRlc3QxIHsKKyAgVGVzdCB0OworCisgIHB1YmxpYyBpbnQgbihpbnQgdikgeworICAgIHJldHVybiB0Lm0odiwgMSk7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlUGFyYW1ldGVyL2FmdGVyR2VuZXJhdGVEZWxlZ2F0ZUluU3VwZXJDbGFzcy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVBhcmFtZXRlci9hZnRlckdlbmVyYXRlRGVsZWdhdGVJblN1cGVyQ2xhc3MuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYWRkZWIyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVBhcmFtZXRlci9hZnRlckdlbmVyYXRlRGVsZWdhdGVJblN1cGVyQ2xhc3MuamF2YQpAQCAtMCwwICsxLDIyIEBACithYnN0cmFjdCBjbGFzcyBBIHsKKyAgICB2b2lkIHh4eCgpIHsKKyAgICAgICAgeHh4KDIzOSk7CisgICAgfQorCisgICAgYWJzdHJhY3Qgdm9pZCB4eHgoZmluYWwgaW50IGFuT2JqZWN0KTsKK30KKworY2xhc3MgQiBpbXBsZW1lbnRzIEEgeworICAgIHB1YmxpYyB2b2lkIHh4eCgpIHsKKyAgICAgICAgeHh4KDIzOSk7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgeHh4KGZpbmFsIGludCBhbk9iamVjdCkgeworICAgIFN5c3RlbS5vdXQucHJpbnRsbihhbk9iamVjdCk7CisgIH0KKworICBzdGF0aWMgeworICAgIEEgYSA9IG5ldyBCKCk7CisgICAgYS54eHgoKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXIvYWZ0ZXJHZW5lcmF0ZURlbGVnYXRlSW5TdXBlckludGVyZmFjZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVBhcmFtZXRlci9hZnRlckdlbmVyYXRlRGVsZWdhdGVJblN1cGVySW50ZXJmYWNlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGUxY2JmMwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXIvYWZ0ZXJHZW5lcmF0ZURlbGVnYXRlSW5TdXBlckludGVyZmFjZS5qYXZhCkBAIC0wLDAgKzEsMjAgQEAKK2ludGVyZmFjZSBBIHsKKyAgICB2b2lkIHh4eCgpOworCisgICAgdm9pZCB4eHgoZmluYWwgaW50IGFuT2JqZWN0KTsKK30KKworY2xhc3MgQiBpbXBsZW1lbnRzIEEgeworICAgIHB1YmxpYyB2b2lkIHh4eCgpIHsKKyAgICAgICAgeHh4KDIzOSk7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgeHh4KGZpbmFsIGludCBhbk9iamVjdCkgeworICAgIFN5c3RlbS5vdXQucHJpbnRsbihhbk9iamVjdCk7CisgIH0KKworICBzdGF0aWMgeworICAgIEEgYSA9IG5ldyBCKCk7CisgICAgYS54eHgoKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXIvYWZ0ZXJHZW5lcmF0ZURlbGVnYXRlTm9BcmdzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlUGFyYW1ldGVyL2FmdGVyR2VuZXJhdGVEZWxlZ2F0ZU5vQXJncy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM5ZWZkODYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlUGFyYW1ldGVyL2FmdGVyR2VuZXJhdGVEZWxlZ2F0ZU5vQXJncy5qYXZhCkBAIC0wLDAgKzEsMTcgQEAKK2NsYXNzIFRlc3QgeworICAgIHB1YmxpYyBpbnQgbSgpIHsKKyAgICAgICAgcmV0dXJuIG0oMCk7CisgICAgfQorCisgICAgcHVibGljIGludCBtKGludCBhbk9iamVjdCkgeworICAgICAgICByZXR1cm4gYW5PYmplY3Q7CisgICAgfQorfQorCitjbGFzcyBUZXN0MSB7CisgIFRlc3QgdDsKKworICBwdWJsaWMgaW50IG4oaW50IHYpIHsKKyAgICByZXR1cm4gdC5tKCk7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlUGFyYW1ldGVyL2FmdGVyR2VuZXJhdGVEZWxlZ2F0ZVJlbW92ZVBhcmFtZXRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVBhcmFtZXRlci9hZnRlckdlbmVyYXRlRGVsZWdhdGVSZW1vdmVQYXJhbWV0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NWViNWVjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVBhcmFtZXRlci9hZnRlckdlbmVyYXRlRGVsZWdhdGVSZW1vdmVQYXJhbWV0ZXIuamF2YQpAQCAtMCwwICsxLDkgQEAKK3B1YmxpYyBjbGFzcyBCYXIgeworICAgIHB1YmxpYyBpbnQgYmF6KGJ5dGUgYmxhaCkgeworICAgICAgICByZXR1cm4gYmF6KGJsYWggKyBibGFoICsgMyk7CisgICAgfQorCisgICAgcHVibGljIGludCBiYXooaW50IGFuT2JqZWN0KSB7CisgICAgICAgIHJldHVybiA8Y2FyZXQ+YW5PYmplY3Q7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVBhcmFtZXRlci9hZnRlckdldHRlclF1YWxpZmllci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVBhcmFtZXRlci9hZnRlckdldHRlclF1YWxpZmllci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEwY2U4YzEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlUGFyYW1ldGVyL2FmdGVyR2V0dGVyUXVhbGlmaWVyLmphdmEKQEAgLTAsMCArMSwyMyBAQAorcHVibGljIGNsYXNzIFRlc3QgeworICAgIHByaXZhdGUgU3RyaW5nIG15U3RyOworCisgICAgcHVibGljIFN0cmluZyBnZXRNeVN0cigpIHsKKyAgICAgICAgcmV0dXJuIG15U3RyOworICAgIH0KKworICAgIHZvaWQgZm9vKFN0cmluZyBhbk9iamVjdCkgeworICAgICAgICBuZXcgUnVubmFibGUoKXsKKyAgICAgICAgICAgIEBPdmVycmlkZQorICAgICAgICAgICAgcHVibGljIHZvaWQgcnVuKCkgeworICAgICAgICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKGFuT2JqZWN0KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKyAgICB9Cit9CisKK2NsYXNzIFggeworICAgcHVibGljIHZvaWQgbigpIHsKKyAgICAgICBmaW5hbCBUZXN0IHRlc3QgPSBuZXcgVGVzdCgpOworICAgICAgIHRlc3QuZm9vKHRlc3QuZ2V0TXlTdHIoKSk7CisgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVBhcmFtZXRlci9hZnRlckltcGxpY2l0RGVmYXVsdENvbnN0cnVjdG9yLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlUGFyYW1ldGVyL2FmdGVySW1wbGljaXREZWZhdWx0Q29uc3RydWN0b3IuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YzFmZjgxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVBhcmFtZXRlci9hZnRlckltcGxpY2l0RGVmYXVsdENvbnN0cnVjdG9yLmphdmEKQEAgLTAsMCArMSwxNiBAQAorY2xhc3MgQSB7CisgICAgaW50IGk7CisgICAgcHVibGljIEEoaW50IGFuT2JqZWN0KSB7CisgICAgICAgIGkgPSBhbk9iamVjdDsKKyAgICB9Cit9CisKK2NsYXNzIEIgZXh0ZW5kcyBBIHsKKyAgICBCKCkgeworICAgICAgICBzdXBlcigyNyk7CisgICAgfQorfQorCitjbGFzcyBVc2FnZSB7CisgICAgQSBhID0gbmV3IEIoKTsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlUGFyYW1ldGVyL2FmdGVySW1wbGljaXRTdXBlckNhbGwuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXIvYWZ0ZXJJbXBsaWNpdFN1cGVyQ2FsbC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJmMGQ2ZWYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlUGFyYW1ldGVyL2FmdGVySW1wbGljaXRTdXBlckNhbGwuamF2YQpAQCAtMCwwICsxLDE5IEBACitjbGFzcyBBIHsKKyAgICBpbnQgaTsKKyAgICBwdWJsaWMgQShpbnQgYW5PYmplY3QpIHsKKyAgICAgICAgaSA9IGFuT2JqZWN0OworICAgIH0KK30KKworY2xhc3MgQiBleHRlbmRzIEEgeworICAgIGludCBrOworCisgICAgcHVibGljIEIoKSB7CisgICAgICAgIHN1cGVyKDI3KTsKKyAgICAgICAgayA9IDEwOworICAgIH0KK30KKworY2xhc3MgVXNhZ2UgeworICAgIEEgYSA9IG5ldyBCKCk7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVBhcmFtZXRlci9hZnRlckluY29tcGxldGVFbnVtRGVmaW5pdGlvbi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVBhcmFtZXRlci9hZnRlckluY29tcGxldGVFbnVtRGVmaW5pdGlvbi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc3OTZiMzQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlUGFyYW1ldGVyL2FmdGVySW5jb21wbGV0ZUVudW1EZWZpbml0aW9uLmphdmEKQEAgLTAsMCArMSwxMCBAQAorZW51bSBUZXN0IHsKKyAgUm9vdChwb3NpdGlvbiArICIiKTsKKworICBwdWJsaWMgVGVzdChTdHJpbmcgZGVzY3JpcHRpb24sIFN0cmluZyBhbk9iamVjdCkgeworICAgIFN5c3RlbS5vdXQucHJpbnRsbihkZXNjcmlwdGlvbik7CisgICAgU3lzdGVtLm91dC5wcmludGxuKGFuT2JqZWN0KTsKKyAgfQorCit9CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXIvYWZ0ZXJJbmNvcnJlY3RTY29wZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVBhcmFtZXRlci9hZnRlckluY29ycmVjdFNjb3BlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTcyZTFiMQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXIvYWZ0ZXJJbmNvcnJlY3RTY29wZS5qYXZhCkBAIC0wLDAgKzEsMTcgQEAKK3B1YmxpYyBjbGFzcyBJbm5lck91dGVyIHsKKyAgU3RyaW5nIGFuT2JqZWN0ID0gIiI7CisKKyAgaW50ZXJmYWNlIElubmVyIHsKKyAgICB2b2lkIGV4ZWMoZmluYWwgU3RyaW5nIGFuT2JqZWN0KTsKKyAgfQorCisgIElubmVyIGluc3RhbmNlID0gbmV3IElubmVyKCkgeworICAgIHB1YmxpYyB2b2lkIGV4ZWMoZmluYWwgU3RyaW5nIGFuT2JqZWN0KSB7CisgICAgICBhbk9iamVjdC5jaGFyQXQoMSk7CisgICAgfQorICB9OworCisgIHZvaWQgZm9vKCkgeworICAgaW5zdGFuY2UuZXhlYyhhbk9iamVjdCk7CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXIvYWZ0ZXJJbnRlcm5hbFNpZGVFZmZlY3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXIvYWZ0ZXJJbnRlcm5hbFNpZGVFZmZlY3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZmI3OTUxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVBhcmFtZXRlci9hZnRlckludGVybmFsU2lkZUVmZmVjdC5qYXZhCkBAIC0wLDAgKzEsMjMgQEAKK2ltcG9ydCBqYXZhLnV0aWwuKjsKKworcHVibGljIGNsYXNzIFRlc3QgeworICAgIGludCBmaWVsZDsKKyAgICBpbnQgbWV0aG9kKGludCBhbk9iamVjdCkgeworICAgICAgICByZXR1cm4gYW5PYmplY3Q7CisgICAgfQorfQorCitwdWJsaWMgY2xhc3MgVXNhZ2UgeworICAgIGludCB1c2FnZShUZXN0W10gdGVzdHMpIHsKKyAgICAgICAgaW50IHN1bSA9IDA7CisgICAgICAgIGZvcihpbnQgaSA9IDA7IGkgPCB0ZXN0cy5sZW5ndGg7KSB7CisgICAgICAgICAgICBmaW5hbCBUZXN0IHRlc3QgPSB0ZXN0c1tpKytdOworICAgICAgICAgICAgc3VtICs9IHRlc3QubWV0aG9kKHRlc3QuZmllbGQpOworICAgICAgICB9CisgICAgICAgIExpc3QgbGlzdCA9IEFycmF5cy5hc0xpc3QodGVzdHMpOworICAgICAgICBmb3IoaW50IGkgPSAwOyBpIDwgbGlzdC5zaXplKCk7KSB7CisgICAgICAgICAgICBmaW5hbCBUZXN0IHRlc3QgPSAoVGVzdCkgbGlzdC5nZXQoaSsrKTsKKyAgICAgICAgICAgIHN1bSArPSB0ZXN0Lm1ldGhvZCh0ZXN0LmZpZWxkKTsgICAgICAgIAorICAgICAgICB9CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXIvYWZ0ZXJMb2NhbFZhckRlY2xhcmF0aW9uLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlUGFyYW1ldGVyL2FmdGVyTG9jYWxWYXJEZWNsYXJhdGlvbi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJmZGYzOWYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlUGFyYW1ldGVyL2FmdGVyTG9jYWxWYXJEZWNsYXJhdGlvbi5qYXZhCkBAIC0wLDAgKzEsNSBAQAorY2xhc3MgRm9vIHsKKyAgICB2b2lkIGYoaW50IGFuT2JqZWN0KSB7CisgICAgICAgIGludCBrID0gYW5PYmplY3Q7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXIvYWZ0ZXJMb2NhbFZhclNlbGVjdGlvbi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVBhcmFtZXRlci9hZnRlckxvY2FsVmFyU2VsZWN0aW9uLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTQwYjBhOAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXIvYWZ0ZXJMb2NhbFZhclNlbGVjdGlvbi5qYXZhCkBAIC0wLDAgKzEsOSBAQAorY2xhc3MgVGVzdCB7CisgICAgcHVibGljIHZvaWQgdGVzdChTdHJpbmcgYW5PYmplY3QpIHsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKGFuT2JqZWN0KTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCB1c2UoKSB7CisgICAgICAgIHRlc3QoIiIpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlUGFyYW1ldGVyL2FmdGVyTWV0aG9kQWNjZXNzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlUGFyYW1ldGVyL2FmdGVyTWV0aG9kQWNjZXNzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGY1N2Y1OQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXIvYWZ0ZXJNZXRob2RBY2Nlc3MuamF2YQpAQCAtMCwwICsxLDE4IEBACitjbGFzcyBUZXN0IHsKKyAgICBpbnQgbWV0aG9kKGludCBhLCBpbnQgYiwgaW50IGFuT2JqZWN0KSB7CisgICAgICAgIHJldHVybiBhbk9iamVjdDsKKyAgICB9CisgICAgaW50IGk7CisgICAgCisgICAgaW50IGFub3RoZXJNZXRob2QoaW50IHgpIHsgCisgICAgICAgIHJldHVybiB4OworICAgIH0KK30KKworY2xhc3MgWFRlc3QgeworICAgIGludCBuKCkgeworICAgICAgICBUZXN0IHQ7CisgICAgICAgIAorICAgICAgICByZXR1cm4gdC5tZXRob2QoMSwgMiwgdC5hbm90aGVyTWV0aG9kKDEgKyAyKSk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXIvYWZ0ZXJNZXRob2RVc2FnZUluVGhpc01ldGhvZEluaGVyaXRvci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVBhcmFtZXRlci9hZnRlck1ldGhvZFVzYWdlSW5UaGlzTWV0aG9kSW5oZXJpdG9yLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDViZDhhZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXIvYWZ0ZXJNZXRob2RVc2FnZUluVGhpc01ldGhvZEluaGVyaXRvci5qYXZhCkBAIC0wLDAgKzEsMTEgQEAKK2NsYXNzIEMgeworICBpbnQgZm9vKGludCB4LCBpbnQgYW5PYmplY3QpIHsKKyAgICAgcmV0dXJuIGFuT2JqZWN0OworICB9Cit9CisKK2NsYXNzIEQgZXh0ZW5kcyBDIHsKKyAgaW50IGZvbyhpbnQgeCwgaW50IGFuT2JqZWN0KSB7CisgICAgcmV0dXJuIHN1cGVyLmZvbyh4LCBhbk9iamVjdCk7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlUGFyYW1ldGVyL2FmdGVyTWV0aG9kV2l0aG91dFBhcmFtcy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVBhcmFtZXRlci9hZnRlck1ldGhvZFdpdGhvdXRQYXJhbXMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NjYwOTI4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVBhcmFtZXRlci9hZnRlck1ldGhvZFdpdGhvdXRQYXJhbXMuamF2YQpAQCAtMCwwICsxLDEyIEBACitjbGFzcyBUZXN0IHsKKyAgICBpbnQgbShpbnQgYW5PYmplY3QpIHsKKyAgICAgICAgcmV0dXJuIGFuT2JqZWN0OworICAgIH0KK30KKworY2xhc3MgWDMgeworICAgIGludCBuKCkgeworICAgICAgICBUZXN0IHQ7CisgICAgICAgIHJldHVybiB0Lm0oMCk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXIvYWZ0ZXJOb1VzYWdlcy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVBhcmFtZXRlci9hZnRlck5vVXNhZ2VzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzQwNjFkMAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXIvYWZ0ZXJOb1VzYWdlcy5qYXZhCkBAIC0wLDAgKzEsNSBAQAorY2xhc3MgVGVzdCB7CisgICBwdWJsaWMgaW50IG0oaW50IGEsIGludCBiLCBpbnQgYW5PYmplY3QpIHsKKwlyZXR1cm4gYW5PYmplY3Q7CisgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVBhcmFtZXRlci9hZnRlck51bGwuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXIvYWZ0ZXJOdWxsLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjM4ZDQ5OAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXIvYWZ0ZXJOdWxsLmphdmEKQEAgLTAsMCArMSw2IEBACitjbGFzcyBUZXN0IHsKKyAgICBwdWJsaWMgVGVzdCBtZXRob2QoVGVzdCBhbk9iamVjdCkgeworICAgICAgICByZXR1cm4gYW5PYmplY3Q7CisgICAgfQorfQorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlUGFyYW1ldGVyL2FmdGVyUGFyYW1ldGVySW5Gb3IuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXIvYWZ0ZXJQYXJhbWV0ZXJJbkZvci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA1NTQ5NzcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlUGFyYW1ldGVyL2FmdGVyUGFyYW1ldGVySW5Gb3IuamF2YQpAQCAtMCwwICsxLDkgQEAKK2ltcG9ydCBqYXZhLnV0aWwuKjsKKworY2xhc3MgWFggeworICAgIHB1YmxpYyB2b2lkIGcoTGlzdCBsLCBJdGVyYXRvciBpdCkgeworICAgICAgICBmb3IoOyBpdC5oYXNOZXh0KCk7KSB7CisgICAgICAgICAgICBPYmplY3QgbyA9IGl0Lm5leHQoKToKKyAgICAgICAgfQorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlUGFyYW1ldGVyL2FmdGVyUGFyYW1ldGVySmF2YURvYzEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXIvYWZ0ZXJQYXJhbWV0ZXJKYXZhRG9jMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY4NDg1ZTAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlUGFyYW1ldGVyL2FmdGVyUGFyYW1ldGVySmF2YURvYzEuamF2YQpAQCAtMCwwICsxLDggQEAKK2NsYXNzIFRlc3QgeworICAgIC8qKgorICAgICAqIEBwYXJhbSBhbk9iamVjdAorICAgICAqLworICAgIGludCBtZXRob2QoZmluYWwgaW50IGFuT2JqZWN0KSB7CisgICAgICAgIHJldHVybiBhbk9iamVjdDsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlUGFyYW1ldGVyL2FmdGVyUGFyYW1ldGVySmF2YURvYzIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXIvYWZ0ZXJQYXJhbWV0ZXJKYXZhRG9jMi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg2MGRjNTAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlUGFyYW1ldGVyL2FmdGVyUGFyYW1ldGVySmF2YURvYzIuamF2YQpAQCAtMCwwICsxLDkgQEAKK2NsYXNzIFRlc3QgeworICAgIC8qKgorICAgICAqIEBwYXJhbSBzCisgICAgICogQHBhcmFtIGFuT2JqZWN0CisgICAgICovCisgICAgaW50IG1ldGhvZChTdHJpbmcgcywgZmluYWwgaW50IGFuT2JqZWN0KSB7CisgICAgICAgIHJldHVybiBhbk9iamVjdDsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlUGFyYW1ldGVyL2FmdGVyUGFyYW1ldGVySmF2YURvYzMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXIvYWZ0ZXJQYXJhbWV0ZXJKYXZhRG9jMy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRiZmZjMjkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlUGFyYW1ldGVyL2FmdGVyUGFyYW1ldGVySmF2YURvYzMuamF2YQpAQCAtMCwwICsxLDggQEAKK2NsYXNzIFRlc3QgeworICAgIC8qKgorICAgICAqICBJbmNvbXBsZXRlIEphdmFEb2MKKyAgICAgKi8KKyAgICBpbnQgbWV0aG9kKFN0cmluZyBzLCBmaW5hbCBpbnQgYW5PYmplY3QpIHsKKyAgICAgICAgcmV0dXJuIGFuT2JqZWN0OworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXIvYWZ0ZXJQYXJhbWV0ZXJKYXZhRG9jQmVmb3JlVmFyYXJnLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlUGFyYW1ldGVyL2FmdGVyUGFyYW1ldGVySmF2YURvY0JlZm9yZVZhcmFyZy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ3NjM3NmUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlUGFyYW1ldGVyL2FmdGVyUGFyYW1ldGVySmF2YURvY0JlZm9yZVZhcmFyZy5qYXZhCkBAIC0wLDAgKzEsMTQgQEAKK2NsYXNzIEMgeworICAgIC8qKgorICAgICAqIEBwYXJhbSBhbk9iamVjdAorICAgICAqIEBwYXJhbSBzCisgICAgICovCisgICAgdm9pZCBtZXRob2QoZmluYWwgaW50IGFuT2JqZWN0LCBTdHJpbmcuLi4gcykgeworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oc1thbk9iamVjdF0pOworICAgIH0KKworICAgIHsKKyAgICAgICAgbWV0aG9kKDAsICJhIiwgImIiLCAiYyIpOworICAgICAgICBtZXRob2QoMCk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXIvYWZ0ZXJQYXJhbWV0ZXJTdWJzdGl0dXRpb24uamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXIvYWZ0ZXJQYXJhbWV0ZXJTdWJzdGl0dXRpb24uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MmViNWI5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVBhcmFtZXRlci9hZnRlclBhcmFtZXRlclN1YnN0aXR1dGlvbi5qYXZhCkBAIC0wLDAgKzEsMTMgQEAKK2NsYXNzIFRlc3QgeworICAgIGludCBtZXRob2QoaW50IGEsIGludCBiLCBpbnQgYW5PYmplY3QpIHsKKyAgICAgICAgcmV0dXJuIGFuT2JqZWN0OworICAgIH0KK30KKworY2xhc3MgWFRlc3QgeworICAgIGludCBuKCkgeworICAgICAgICBUZXN0IHQ7CisgICAgICAgIAorICAgICAgICByZXR1cm4gdC5tZXRob2QoMSwgMiwgMSArIDIpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlUGFyYW1ldGVyL2FmdGVyUHJlc2VydmVEaWFtb25kT2NjdXJyZW5jZXMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXIvYWZ0ZXJQcmVzZXJ2ZURpYW1vbmRPY2N1cnJlbmNlcy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRmNjIxMzcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlUGFyYW1ldGVyL2FmdGVyUHJlc2VydmVEaWFtb25kT2NjdXJyZW5jZXMuamF2YQpAQCAtMCwwICsxLDIyIEBACisKK3B1YmxpYyBjbGFzcyBUZXN0Q29tcGxldGlvbiB7CisKKyAgICBwdWJsaWMgc3RhdGljIDxULCBWPiBQYXJhbGxlbFBpcGVsaW5lPFQsIFY+IHRlc3QoVCBiYXNlLCBWIG5ld1N0YWdlLCBUIHVwc3RyZWFtLCBmaW5hbCBQYXJhbGxlbFBpcGVsaW5lPFQsIFY+IGFuT2JqZWN0KSB7CisgICAgICAgIGlmIChiYXNlICE9IG51bGwpeworICAgICAgICAgICAgcmV0dXJuIGFuT2JqZWN0OworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgcmV0dXJuIG5ldyBQYXJhbGxlbFBpcGVsaW5lPD4odXBzdHJlYW0sIG5ld1N0YWdlKTsKKyAgICAgICAgfQorCisgICAgfQorCisKKyAgICB2b2lkIGYoKSB7CisgICAgICAgIHRlc3QobnVsbCwgbnVsbCwgbnVsbCwgbmV3IFBhcmFsbGVsUGlwZWxpbmU8PihudWxsLCBudWxsKSk7CisgICAgfQorICAgIHByaXZhdGUgc3RhdGljIGNsYXNzIFBhcmFsbGVsUGlwZWxpbmU8VCwgVj4geworICAgICAgICBwdWJsaWMgUGFyYWxsZWxQaXBlbGluZShUIHAwLCBWIHAxKSB7CisgICAgICAgIH0KKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlUGFyYW1ldGVyL2FmdGVyUXVhbGlmaWVkTmV3LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlUGFyYW1ldGVyL2FmdGVyUXVhbGlmaWVkTmV3LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjk5YWNkNQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXIvYWZ0ZXJRdWFsaWZpZWROZXcuamF2YQpAQCAtMCwwICsxLDEwIEBACitjbGFzcyBUZXN0IHsKKyAgICBjbGFzcyBBIHsKKyAgICAgICAgY2xhc3MgQiB7CisgICAgICAgIH0KKyAgICB9CisgCisgICAgT2JqZWN0IG1ldGhvZChBLkIgYW5PYmplY3QpIHsKKyAgICAgICAgcmV0dXJuIGFuT2JqZWN0OworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlUGFyYW1ldGVyL2FmdGVyUmVtb3ZlUGFyYW1ldGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlUGFyYW1ldGVyL2FmdGVyUmVtb3ZlUGFyYW1ldGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTZmMDc1ZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXIvYWZ0ZXJSZW1vdmVQYXJhbWV0ZXIuamF2YQpAQCAtMCwwICsxLDUgQEAKK3B1YmxpYyBjbGFzcyBCYXIgeworICAgIHB1YmxpYyBpbnQgYmF6KGludCBhbk9iamVjdCkgeworICAgICAgICByZXR1cm4gPGNhcmV0PmFuT2JqZWN0OworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXIvYWZ0ZXJSZW1vdmVQYXJhbWV0ZXJBZnRlclZhcmlhYmxlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlUGFyYW1ldGVyL2FmdGVyUmVtb3ZlUGFyYW1ldGVyQWZ0ZXJWYXJpYWJsZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjllM2NlOGUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlUGFyYW1ldGVyL2FmdGVyUmVtb3ZlUGFyYW1ldGVyQWZ0ZXJWYXJpYWJsZS5qYXZhCkBAIC0wLDAgKzEsNSBAQAorcHVibGljIGNsYXNzIEJhciB7CisgICAgcHVibGljIGludCBiYXooaW50IGFuT2JqZWN0KSB7CisgICAgICAgIDxjYXJldD5yZXR1cm4gYW5PYmplY3QgKyA5OworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXIvYWZ0ZXJSZW1vdmVQYXJhbWV0ZXJJbkhpZXJhcmNoeS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVBhcmFtZXRlci9hZnRlclJlbW92ZVBhcmFtZXRlckluSGllcmFyY2h5LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzZjMDc1ZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXIvYWZ0ZXJSZW1vdmVQYXJhbWV0ZXJJbkhpZXJhcmNoeS5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKK3B1YmxpYyBjbGFzcyBCYXIgeworICAgIHB1YmxpYyBpbnQgYmF6KGludCBhbk9iamVjdCkgeworICAgICAgICByZXR1cm4gYW5PYmplY3Q7CisgICAgfQorfQorY2xhc3MgUyBleHRlbmRzIEJhciB7CisgICAgcHVibGljIGludCBiYXooaW50IGFuT2JqZWN0KSB7CisgICAgICAgIHJldHVybiBzdXBlci5iYXooYW5PYmplY3QpOyAgICAvL1RvIGNoYW5nZSBib2R5IG9mIG92ZXJyaWRkZW4gbWV0aG9kcyB1c2UgRmlsZSB8IFNldHRpbmdzIHwgRmlsZSBUZW1wbGF0ZXMuCisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXIvYWZ0ZXJSZW1vdmVQYXJhbWV0ZXJXaXRoSmF2YWRvYy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVBhcmFtZXRlci9hZnRlclJlbW92ZVBhcmFtZXRlcldpdGhKYXZhZG9jLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzNlZTRmZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXIvYWZ0ZXJSZW1vdmVQYXJhbWV0ZXJXaXRoSmF2YWRvYy5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKK3B1YmxpYyBjbGFzcyBCYXIgeworCisgICAgLyoqCisgICAgICoKKyAgICAgKiBAcGFyYW0gYW5PYmplY3QKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBwcmludEVycm9yKFN0cmluZyBkZXRhaWwsIFN0cmluZyBhbk9iamVjdCkgeworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oYW5PYmplY3QgKyAiIGVycm9yOiAiICsgZGV0YWlsKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlUGFyYW1ldGVyL2FmdGVyUmVwbGFjZUFsbEFuZERlbGV0ZVVudXNlZC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVBhcmFtZXRlci9hZnRlclJlcGxhY2VBbGxBbmREZWxldGVVbnVzZWQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44Zjk5Zjg3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVBhcmFtZXRlci9hZnRlclJlcGxhY2VBbGxBbmREZWxldGVVbnVzZWQuamF2YQpAQCAtMCwwICsxLDExIEBACitwdWJsaWMgY2xhc3MgUGFyYW1ldGVycyB7CisgICAgICAgIHB1YmxpYyB2b2lkIHN1YmplY3QoZmluYWwgaW50IGFuT2JqZWN0KSB7CisgICAgICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKGFuT2JqZWN0KTsKKyAgICAgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oYW5PYmplY3QpOworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIHZvaWQgY29udGV4dCgpIHsKKyAgICAgICAgICAgICAgICBzdWJqZWN0KDEgKzEpOworICAgICAgICAgICAgICAgIHN1YmplY3QoMiArMSk7CisgICAgICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlUGFyYW1ldGVyL2FmdGVyU2VsZlJlZmVyZW5jZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVBhcmFtZXRlci9hZnRlclNlbGZSZWZlcmVuY2UuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45YWRlNWFkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVBhcmFtZXRlci9hZnRlclNlbGZSZWZlcmVuY2UuamF2YQpAQCAtMCwwICsxLDkgQEAKK2NsYXNzIFRlc3QgeworICB2b2lkIGZvbyhib29sZWFuIGZsYWcsIGludCBpLCBmaW5hbCBpbnQgYW5PYmplY3QpIHsKKyAgICBpZiAoZmxhZykgeworICAgICAgZm9vKGZhbHNlLCBpLCBhbk9iamVjdCk7CisgICAgfQorICAgIFN5c3RlbS5vdXQucHJpbnRsbigpOworICAgIGZvbyhmYWxzZSwgaSwgYW5PYmplY3QpOworICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlUGFyYW1ldGVyL2FmdGVyU2VsZlJlZmVyZW5jZVZhcmFyZ3MuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXIvYWZ0ZXJTZWxmUmVmZXJlbmNlVmFyYXJncy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMwODhmZDIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlUGFyYW1ldGVyL2FmdGVyU2VsZlJlZmVyZW5jZVZhcmFyZ3MuamF2YQpAQCAtMCwwICsxLDkgQEAKK2NsYXNzIFRlc3QgeworICB2b2lkIGZvbyhib29sZWFuIGZsYWcsIGZpbmFsIFN0cmluZyBhbk9iamVjdCwgaW50Li4uIGkpIHsKKyAgICBpZiAoZmxhZykgeworICAgICAgZm9vKGZhbHNlLCBhbk9iamVjdCwgaSk7CisgICAgfQorICAgIFN5c3RlbS5vdXQucHJpbnRsbigpOworICAgIGZvbyhmbGFnLCBhbk9iamVjdCwgaSk7CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXIvYWZ0ZXJTZWxmUmVmZXJlbmNlVmFyYXJnczEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXIvYWZ0ZXJTZWxmUmVmZXJlbmNlVmFyYXJnczEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZmNiOGFjNgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXIvYWZ0ZXJTZWxmUmVmZXJlbmNlVmFyYXJnczEuamF2YQpAQCAtMCwwICsxLDYgQEAKK2NsYXNzIFRlc3QgeworICB2b2lkIGZvbyhmaW5hbCBTdHJpbmcgYW5PYmplY3QsIGludC4uLiBpKSB7CisgICAgZm9vKGFuT2JqZWN0LCAxKTsKKyAgICBmb28oYW5PYmplY3QsIDMpOworICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlUGFyYW1ldGVyL2FmdGVyU2ltcGxlVXNhZ2UuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXIvYWZ0ZXJTaW1wbGVVc2FnZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFmOTlhYTkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlUGFyYW1ldGVyL2FmdGVyU2ltcGxlVXNhZ2UuamF2YQpAQCAtMCwwICsxLDE4IEBACitjbGFzcyBUZXN0IHsKKyAgIHB1YmxpYyBpbnQgbShpbnQgYSwgaW50IGIsIGludCBhbk9iamVjdCkgeworICAgICAgICBpZihhID4gYikgeworICAgICAgICAgICByZXR1cm4gYW5PYmplY3Q7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgIHJldHVybiBhbk9iamVjdDsKKyAgICAgICAgfQorICAgfQorfQorCitjbGFzcyBUZXN0MSB7CisgIFRlc3QgdDsKKworICBwdWJsaWMgaW50IG4oaW50IHYpIHsKKyAgICByZXR1cm4gdC5tKHYsIDEsIDApOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVBhcmFtZXRlci9hZnRlclNpbXBsaWZpZWRSZXN1bHRlZFR5cGUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXIvYWZ0ZXJTaW1wbGlmaWVkUmVzdWx0ZWRUeXBlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDU2ODE5ZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXIvYWZ0ZXJTaW1wbGlmaWVkUmVzdWx0ZWRUeXBlLmphdmEKQEAgLTAsMCArMSwyNCBAQAoraW1wb3J0IGphdmEudXRpbC4qOworcHVibGljIGNsYXNzIEludHJvZHVjZVBhcmFtZXRlclByb2R1Y2VzV2FybmluZyB7CisgICAgcHJpdmF0ZSBmaW5hbCBMaXN0PEdlbmVyaWM8Pz4+IGVsZW1lbnRzOworCisgICAgcHVibGljIEludHJvZHVjZVBhcmFtZXRlclByb2R1Y2VzV2FybmluZyhmaW5hbCBBcnJheUxpc3Q8R2VuZXJpYzw/Pj4gYW5PYmplY3QpIHsKKyAgICAgICAgZWxlbWVudHMgPSBhbk9iamVjdDsKKyAgICB9CisKKyAgICBwdWJsaWMgc3RhdGljIDxFPiBBcnJheUxpc3Q8RT4gbmV3QXJyYXlMaXN0KEUuLi4gZWxlbWVudHMpIHsKKyAgICAgICAgQXJyYXlMaXN0PEU+IGxpc3QgPSBuZXcgQXJyYXlMaXN0PEU+KCk7CisgICAgICAgIENvbGxlY3Rpb25zLmFkZEFsbChsaXN0LCBlbGVtZW50cyk7CisgICAgICAgIHJldHVybiBsaXN0OworICAgIH0KKworICAgIHByaXZhdGUgc3RhdGljIGludGVyZmFjZSBHZW5lcmljPFQ+eworCisgICAgfQorCisgICAgcHJpdmF0ZSBzdGF0aWMgY2xhc3MgU29tZUdlbmVyaWMgaW1wbGVtZW50cyBHZW5lcmljPFN0cmluZz4geworICAgIH0KKworICAgIHByaXZhdGUgc3RhdGljIGNsYXNzIFNvbWVPdGhlckdlbmVyaWMgaW1wbGVtZW50cyBHZW5lcmljPE9iamVjdD4geworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXIvYWZ0ZXJTdGF0aWNGaWVsZEFjY2Vzcy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVBhcmFtZXRlci9hZnRlclN0YXRpY0ZpZWxkQWNjZXNzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWYwNDM1YgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXIvYWZ0ZXJTdGF0aWNGaWVsZEFjY2Vzcy5qYXZhCkBAIC0wLDAgKzEsMTYgQEAKK2NsYXNzIFRlc3QgeworICAgIHB1YmxpYyBzdGF0aWMgaW50IGk7CisgICAgCisgICAgaW50IG1ldGhvZChpbnQgYSwgaW50IGFuT2JqZWN0KSB7CisgICAgICAgIHJldHVybiBhbk9iamVjdDsKKyAgICB9Cit9CisKK2NsYXNzIFggeworICAgIHB1YmxpYyBzdGF0aWMgaW50IGk7CisgICAgCisgICAgaW50IHl5eShpbnQgeikgeworICAgICAgICBUZXN0IHQ7CisgICAgICAgIHJldHVybiB0Lm1ldGhvZCh6LCB6ICsgVGVzdC5pKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVBhcmFtZXRlci9hZnRlclN0YXRpY0ZpZWxkV2l0aEdldHRlclJlcGxhY2VtZW50LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlUGFyYW1ldGVyL2FmdGVyU3RhdGljRmllbGRXaXRoR2V0dGVyUmVwbGFjZW1lbnQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMDI4OGViCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVBhcmFtZXRlci9hZnRlclN0YXRpY0ZpZWxkV2l0aEdldHRlclJlcGxhY2VtZW50LmphdmEKQEAgLTAsMCArMSwxNyBAQAorcHVibGljIGNsYXNzIFIgeworICBwcml2YXRlIHN0YXRpYyBpbnQgb3VySW50OworCisgIHB1YmxpYyBzdGF0aWMgaW50IGdldE91ckludCgpIHsKKyAgICByZXR1cm4gb3VySW50OworICB9CisKKyAgcHVibGljIHN0YXRpYyB2b2lkIGRvU210aChmaW5hbCBpbnQgYW5PYmplY3QpIHsKKyAgICBTeXN0ZW0ub3V0LnByaW50bG4oYW5PYmplY3QpOworICB9Cit9CisKK2NsYXNzIFVzYWdlIHsKKyAgdm9pZCBmb28oKSB7CisgICAgUi5kb1NtdGgoUi5nZXRPdXJJbnQoKSk7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlUGFyYW1ldGVyL2FmdGVyU3Vic3RpdHV0ZVR5cGVQYXJhbXMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXIvYWZ0ZXJTdWJzdGl0dXRlVHlwZVBhcmFtcy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYxYWVjZmQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlUGFyYW1ldGVyL2FmdGVyU3Vic3RpdHV0ZVR5cGVQYXJhbXMuamF2YQpAQCAtMCwwICsxLDExIEBACitpbXBvcnQgamF2YS51dGlsLio7CitjbGFzcyBUZXN0IHsKKyA8VD4gdm9pZCBmb28oVCB0LCBmaW5hbCBBcnJheUxpc3Q8VD4gYW5PYmplY3QpIHsKKyAgICBMaXN0PFQ+IGxzID0gYW5PYmplY3Q7CisgIH0KKworICB2b2lkIGJhcigpIHsKKyAgICBTdHJpbmcgcyA9ICIiOworICAgIGZvbyhzLCBuZXcgQXJyYXlMaXN0PFN0cmluZz4oKSk7CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXIvYWZ0ZXJTdXBlckluRXhwcmVzc2lvbi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVBhcmFtZXRlci9hZnRlclN1cGVySW5FeHByZXNzaW9uLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTY1YzU0MgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXIvYWZ0ZXJTdXBlckluRXhwcmVzc2lvbi5qYXZhCkBAIC0wLDAgKzEsMTggQEAKK2NsYXNzIFQxIHsKKyAgICBpbnQgbWV0aG9kKGludCBpKSB7CisgICAgICAgIHJldHVybiAwOworICAgIH0KK30KKworY2xhc3MgVDIgZXh0ZW5kcyBUMSB7CisgICAgaW50IG1ldGhvZChpbnQgaSwgaW50IGFuT2JqZWN0KSB7CisgICAgICAgIHJldHVybiBhbk9iamVjdDsKKyAgICB9Cit9CisKK2NsYXNzIFVzYWdlIHsKKyAgICBpbnQgbSgpIHsKKyAgICAgICAgVDIgdGVzdDsKKyAgICAgICAgcmV0dXJuIHRlc3QubWV0aG9kKDAsIHRlc3QubWV0aG9kKDApICsgMSk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXIvYWZ0ZXJTdXBlcldpdGhTaWRlRWZmZWN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlUGFyYW1ldGVyL2FmdGVyU3VwZXJXaXRoU2lkZUVmZmVjdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJhYWJiNTIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlUGFyYW1ldGVyL2FmdGVyU3VwZXJXaXRoU2lkZUVmZmVjdC5qYXZhCkBAIC0wLDAgKzEsMTggQEAKK2NsYXNzIFQxIHsKKyAgICBpbnQgbWV0aG9kKGludCBpKSB7CisgICAgICAgIHJldHVybiAwOworICAgIH0KK30KKworY2xhc3MgVDIgZXh0ZW5kcyBUMSB7CisgICAgaW50IG1ldGhvZChpbnQgaSwgaW50IGFuT2JqZWN0KSB7CisgICAgICAgIHJldHVybiBhbk9iamVjdDsKKyAgICB9Cit9CisKK2NsYXNzIFVzYWdlIHsKKyAgICBpbnQgbSgpIHsKKyAgICAgICAgZmluYWwgVDIgdDIgPSBuZXcgVDIoKTsKKyAgICAgICAgcmV0dXJuIHQyLm1ldGhvZCgwLCB0Mi5tZXRob2QoMCkgKyAxKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVBhcmFtZXRlci9hZnRlclRoaXNTdWJzdGl0dXRpb24uamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXIvYWZ0ZXJUaGlzU3Vic3RpdHV0aW9uLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjE4OGRjYwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXIvYWZ0ZXJUaGlzU3Vic3RpdHV0aW9uLmphdmEKQEAgLTAsMCArMSwxNCBAQAorY2xhc3MgVGVzdCB7CisgICAgaW50IG1ldGhvZChpbnQgYSwgaW50IGIsIFRlc3QgYW5PYmplY3QpIHsKKyAgICAgICAgcmV0dXJuIGFuT2JqZWN0Lmk7CisgICAgfQorICAgIHByaXZhdGUgaW50IGk7Cit9CisKK2NsYXNzIFhUZXN0IHsKKyAgICBpbnQgbigpIHsKKyAgICAgICAgVGVzdCB0OworICAgICAgICAKKyAgICAgICAgcmV0dXJuIHQubWV0aG9kKDEsIDIsIHQpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlUGFyYW1ldGVyL2FmdGVyVGhpc1N1YnN0aXR1dGlvbkluUXVhbGlmaWVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlUGFyYW1ldGVyL2FmdGVyVGhpc1N1YnN0aXR1dGlvbkluUXVhbGlmaWVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTdjNmU1MAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXIvYWZ0ZXJUaGlzU3Vic3RpdHV0aW9uSW5RdWFsaWZpZXIuamF2YQpAQCAtMCwwICsxLDE0IEBACitjbGFzcyBUZXN0IHsKKyAgICBpbnQgbWV0aG9kKGludCBhLCBpbnQgYiwgaW50IGFuT2JqZWN0KSB7CisgICAgICAgIHJldHVybiBhbk9iamVjdDsKKyAgICB9CisgICAgcHJpdmF0ZSBpbnQgaTsKK30KKworY2xhc3MgWFRlc3QgeworICAgIGludCBuKCkgeworICAgICAgICBUZXN0IHQ7CisgICAgICAgIAorICAgICAgICByZXR1cm4gdC5tZXRob2QoMSwgMiwgdC5pKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVBhcmFtZXRlci9hZnRlclVzZUluSW5uZXJDbGFzcy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVBhcmFtZXRlci9hZnRlclVzZUluSW5uZXJDbGFzcy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYzY2M0ZDcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlUGFyYW1ldGVyL2FmdGVyVXNlSW5Jbm5lckNsYXNzLmphdmEKQEAgLTAsMCArMSwxMyBAQAorY2xhc3MgVGVzdCB7CisgICAgcHVibGljIHZvaWQgdGVzdChmaW5hbCBTdHJpbmcgYW5PYmplY3QpIHsKKyAgICAgICAgbmV3IFJ1bm5hYmxlKCkgeworICAgICAgICAgICAgcHVibGljIHZvaWQgcnVuKCkgeworICAgICAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihhbk9iamVjdCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0ucnVuKCk7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgdXNlKCkgeworICAgICAgICB0ZXN0KCIiKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVBhcmFtZXRlci9hZnRlclZhcmFyZ3MuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXIvYWZ0ZXJWYXJhcmdzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjZlZTEwYgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXIvYWZ0ZXJWYXJhcmdzLmphdmEKQEAgLTAsMCArMSwxOCBAQAorY2xhc3MgVGVzdCB7CisgICBwdWJsaWMgaW50IG0oaW50IGEsIGludCBhbk9iamVjdCwgaW50Li4uIHZhbHVlcykgeworICAgICAgICBpZihhID4gdmFsdWVzLmxlbmd0aCkgeworICAgICAgICAgICByZXR1cm4gYW5PYmplY3Q7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgIHJldHVybiBhbk9iamVjdDsKKyAgICAgICAgfQorICAgfQorfQorCitjbGFzcyBUZXN0MSB7CisgIFRlc3QgdDsKKworICBwdWJsaWMgaW50IG4oaW50IHYpIHsKKyAgICByZXR1cm4gdC5tKHYsIDAsIDEpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVBhcmFtZXRlci9hZnRlclZhcmFyZ3MxLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlUGFyYW1ldGVyL2FmdGVyVmFyYXJnczEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YTgyNTUyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVBhcmFtZXRlci9hZnRlclZhcmFyZ3MxLmphdmEKQEAgLTAsMCArMSw4IEBACitpbXBvcnQgamF2YS51dGlsLio7CisKK3B1YmxpYyBjbGFzcyBDb2xsZWN0IHsKKyAgICBwdWJsaWMgdm9pZCBtKExpc3Q8U3RyaW5nPiBhbk9iamVjdCkgeworICAgICAgIExpc3Qgc3RycyA9IGFuT2JqZWN0OworICAgfQorCit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlUGFyYW1ldGVyL2FmdGVyV2VpcmRRdWFsaWZpZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXIvYWZ0ZXJXZWlyZFF1YWxpZmllci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI1NThiOTAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlUGFyYW1ldGVyL2FmdGVyV2VpcmRRdWFsaWZpZXIuamF2YQpAQCAtMCwwICsxLDE2IEBACitwdWJsaWMgY2xhc3MgVGVzdCB7CisgICAgaW50IG1ldGhvZChpbnQgaSkgeworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBpbnQgbShpbnQgaSwgaW50IGosIGludCBhbk9iamVjdCkgeworICAgICAgICByZXR1cm4gaSArIGFuT2JqZWN0OworICAgIH0KK30KKworY2xhc3MgWCB7CisgICBwdWJsaWMgaW50IG4oaW50IGEpIHsKKyAgICAgICBmaW5hbCBUZXN0IHRlc3QgPSBuZXcgVGVzdCgpOworICAgICAgIHJldHVybiB0ZXN0Lm0oYSwgYSAqIDIsIHRlc3QubWV0aG9kKGEgKiAyKSk7CisgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVBhcmFtZXRlci9hZnRlcldlaXJkUXVhbGlmaWVyQW5kUGFyYW1ldGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlUGFyYW1ldGVyL2FmdGVyV2VpcmRRdWFsaWZpZXJBbmRQYXJhbWV0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNGZmMjVlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVBhcmFtZXRlci9hZnRlcldlaXJkUXVhbGlmaWVyQW5kUGFyYW1ldGVyLmphdmEKQEAgLTAsMCArMSwxNiBAQAorcHVibGljIGNsYXNzIFRlc3QgeyAgICAKKyAgICBpbnQgbWV0aG9kKGludCBpKSB7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIGludCBtKGludCBpLCBpbnQgaiwgVGVzdCB0LCBpbnQgYW5PYmplY3QpIHsKKyAgICAgICAgcmV0dXJuIGkgKyBhbk9iamVjdDsKKyAgICB9Cit9CisKK2NsYXNzIFggeworICAgcHVibGljIGludCBuKGludCBhKSB7CisgICAgICAgZmluYWwgVGVzdCB0ID0gbmV3IFRlc3QoKTsKKyAgICAgICByZXR1cm4gKG5ldyBUZXN0KCkpLm0oYSwgYSAqIDIsIHQsIHQubWV0aG9kKGEgKiAyKSk7CisgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVBhcmFtZXRlci9iZWZvcmVBbm9ueW1vdXNDbGFzcy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVBhcmFtZXRlci9iZWZvcmVBbm9ueW1vdXNDbGFzcy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA3NzJiMTIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlUGFyYW1ldGVyL2JlZm9yZUFub255bW91c0NsYXNzLmphdmEKQEAgLTAsMCArMSwxMCBAQAorcHVibGljIGNsYXNzIFRlc3QgeworICBwdWJsaWMgVGVzdCgpIHsKKyAgICBpbnQgaSA9IDxzZWxlY3Rpb24+MDwvc2VsZWN0aW9uPjsKKyAgfQorCisgIHB1YmxpYyBUZXN0IGdldCgpIHsKKyAgICByZXR1cm4gbmV3IFRlc3QoKSB7CisgICAgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVBhcmFtZXRlci9iZWZvcmVBcnJheUluaXRpYWxpemVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlUGFyYW1ldGVyL2JlZm9yZUFycmF5SW5pdGlhbGl6ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNTFkOTA2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVBhcmFtZXRlci9iZWZvcmVBcnJheUluaXRpYWxpemVyLmphdmEKQEAgLTAsMCArMSwxMCBAQAorY2xhc3MgVGVzdCB7CisgIHB1YmxpYyBzeW5jaHJvbml6ZWQgYm9vbGVhbiBmb28oU3RyaW5nIG1zZykgeworICAgIHJldHVybiBiYXIobWVzc2FnZSk7CisgIH0KKworICBwcml2YXRlIGJvb2xlYW4gYmFyKFN0cmluZyBwYXJhbWV0ZXIpIHsKKyAgICBTdHJpbmdbXSBwYXJhbXMgPSA8c2VsZWN0aW9uPntwYXJhbWV0ZXJ9PC9zZWxlY3Rpb24+OworICAgIHJldHVybiBmYWxzZTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXIvYmVmb3JlQ29uZmxpY3RpbmdGaWVsZC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVBhcmFtZXRlci9iZWZvcmVDb25mbGljdGluZ0ZpZWxkLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzdkNzE0YQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXIvYmVmb3JlQ29uZmxpY3RpbmdGaWVsZC5qYXZhCkBAIC0wLDAgKzEsMjUgQEAKK3B1YmxpYyBjbGFzcyBUZXN0IHsKKyAgICBwdWJsaWMgaW50IGFuT2JqZWN0OworICAgIHB1YmxpYyB2b2lkIG1ldGhvZCgpIHsKKyAgICB9Cit9CisKK3B1YmxpYyBjbGFzcyBUZXN0MSBleHRlbmRzIFRlc3QgeworICAgIHB1YmxpYyB2b2lkIG1ldGhvZCgpIHsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKDxzZWxlY3Rpb24+MSArIDI8L3NlbGVjdGlvbj4pOworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oYW5PYmplY3QpOworICAgIH0KK30KKworcHVibGljIGNsYXNzIFRlc3QyIGV4dGVuZHMgVGVzdDEgeworICAgIHB1YmxpYyB2b2lkIG1ldGhvZCgpIHsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKGFuT2JqZWN0KTsKKyAgICB9Cit9CisKK3B1YmxpYyBjbGFzcyBVc2FnZSB7CisgICAgeworICAgICAgICBUZXN0IHQgPSBuZXcgVGVzdDIoKTsKKyAgICAgICAgdC5tZXRob2QoKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVBhcmFtZXRlci9iZWZvcmVEZWxlZ2F0ZVdpdGhWYXJhcmdzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlUGFyYW1ldGVyL2JlZm9yZURlbGVnYXRlV2l0aFZhcmFyZ3MuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZjFhYjNlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVBhcmFtZXRlci9iZWZvcmVEZWxlZ2F0ZVdpdGhWYXJhcmdzLmphdmEKQEAgLTAsMCArMSw1IEBACitwdWJsaWMgY2xhc3MgVGVzdCB7CisgICAgICAgIHZvaWQgbShpbnQuLi4gcHMpIHsKKyAgICAgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oPHNlbGVjdGlvbj4iYXNkIjwvc2VsZWN0aW9uPik7CisgICAgICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlUGFyYW1ldGVyL2JlZm9yZURpYW1vbmQyUmF3LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlUGFyYW1ldGVyL2JlZm9yZURpYW1vbmQyUmF3LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjk3NmVmNAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXIvYmVmb3JlRGlhbW9uZDJSYXcuamF2YQpAQCAtMCwwICsxLDYgQEAKK2ltcG9ydCBqYXZhLnV0aWwuQXJyYXlMaXN0CitjbGFzcyBUZXN0IHsKKyAgdm9pZCBmb28oKSB7CisgICAgQXJyYXlMaXN0IGwgPSA8c2VsZWN0aW9uPm5ldyBBcnJheUxpc3Q8PigpPC9zZWxlY3Rpb24+OworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVBhcmFtZXRlci9iZWZvcmVEaWFtb25kT2NjdXJyZW5jZXMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXIvYmVmb3JlRGlhbW9uZE9jY3VycmVuY2VzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjk2YWExYQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXIvYmVmb3JlRGlhbW9uZE9jY3VycmVuY2VzLmphdmEKQEAgLTAsMCArMSwxMyBAQAoraW1wb3J0IGphdmEudXRpbC4qOworCitjbGFzcyBUZXN0IHsKKyAgdm9pZCBmb28oKSB7CisgICAgTGlzdDxTdHJpbmc+IGxzID0gPHNlbGVjdGlvbj5uZXcgQXJyYXlMaXN0PD4oKTwvc2VsZWN0aW9uPjsKKyAgICBMaXN0PFN0cmluZz4gbHNzID0gbmV3IEFycmF5TGlzdDw+KCk7CisgICAgTGlzdDxJbnRlZ2VyPiBsaSA9IG5ldyBBcnJheUxpc3Q8PigpOworICB9CisgIAorICB2b2lkIGJhcigpIHsKKyAgICBmb28oKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXIvYmVmb3JlRW5jbG9zaW5nV2l0aFBhcmFtRGVsZXRpb24uamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXIvYmVmb3JlRW5jbG9zaW5nV2l0aFBhcmFtRGVsZXRpb24uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMzE5MjAxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVBhcmFtZXRlci9iZWZvcmVFbmNsb3NpbmdXaXRoUGFyYW1EZWxldGlvbi5qYXZhCkBAIC0wLDAgKzEsMjggQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwMC0yMDExIEpldEJyYWlucyBzLnIuby4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitjbGFzcyBBQUFBIHsKKyAgdm9pZCBmb28oKSB7CisgICAgc2FtcGxlRW5jbG9zaW5nKCJBIik7CisgIH0KKworICBwcml2YXRlIHZvaWQgc2FtcGxlRW5jbG9zaW5nKGZpbmFsIFN0cmluZyBzKSB7CisgICAgbmV3IEFBQUEoKSB7CisgICAgICB2b2lkIGJhcigpIHsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKDxzZWxlY3Rpb24+cyArICIiPC9zZWxlY3Rpb24+KTsKKyAgICAgIH0KKyAgICB9LmJhcigpOworICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlUGFyYW1ldGVyL2JlZm9yZUVudW1zLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlUGFyYW1ldGVyL2JlZm9yZUVudW1zLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmNmZDdjNAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXIvYmVmb3JlRW51bXMuamF2YQpAQCAtMCwwICsxLDYgQEAKK3B1YmxpYyBlbnVtIEV7CisgIGEsIGI7CisgIHB1YmxpYyBFKCkgeworICAgIFN5c3RlbS5vdXQucHJpbnQoPHNlbGVjdGlvbj4yPC9zZWxlY3Rpb24+KTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXIvYmVmb3JlRXhwZWN0ZWRUeXBlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlUGFyYW1ldGVyL2JlZm9yZUV4cGVjdGVkVHlwZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ0OGZjZTAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlUGFyYW1ldGVyL2JlZm9yZUV4cGVjdGVkVHlwZS5qYXZhCkBAIC0wLDAgKzEsMTIgQEAKK2NsYXNzIFRlc3QgeworICAgIHZvaWQgZiAoU3RyaW5nIHMpIHt9CisKKyAgICB2b2lkIHUgKCkgeworICAgICAgICBmKDxzZWxlY3Rpb24+bmFtZTwvc2VsZWN0aW9uPik7CisgICAgfQorCisgICAgdm9pZCB5ICgpIHsKKyAgICAgICAgU3RyaW5nIG5hbWUgPSAiIjsKKyAgICAgICAgdSgpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXIvYmVmb3JlRmllbGRBY2Nlc3MuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXIvYmVmb3JlRmllbGRBY2Nlc3MuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMmE5NjM2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVBhcmFtZXRlci9iZWZvcmVGaWVsZEFjY2Vzcy5qYXZhCkBAIC0wLDAgKzEsMTQgQEAKK2NsYXNzIFRlc3QgeworICAgIGludCBtZXRob2QoaW50IGEsIGludCBiKSB7CisgICAgICAgIHJldHVybiA8c2VsZWN0aW9uPmk8L3NlbGVjdGlvbj47CisgICAgfQorICAgIGludCBpOworfQorCitjbGFzcyBYVGVzdCB7CisgICAgaW50IG4oKSB7CisgICAgICAgIFRlc3QgdDsKKyAgICAgICAgCisgICAgICAgIHJldHVybiB0Lm1ldGhvZCgxLCAyKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVBhcmFtZXRlci9iZWZvcmVGaWVsZFdpdGhHZXR0ZXJSZXBsYWNlbWVudC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVBhcmFtZXRlci9iZWZvcmVGaWVsZFdpdGhHZXR0ZXJSZXBsYWNlbWVudC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQyNWM5OWQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlUGFyYW1ldGVyL2JlZm9yZUZpZWxkV2l0aEdldHRlclJlcGxhY2VtZW50LmphdmEKQEAgLTAsMCArMSwxNiBAQAorY2xhc3MgVGVzdCB7CisgICAgaW50IGk7CisgICAgCisgICAgcHVibGljIGludCBnZXRJKCkgeyByZXR1cm4gaTsgfQorICAgIAorICAgIGludCBtZXRob2QoaW50IGEpIHsKKyAgICAgICAgcmV0dXJuIDxzZWxlY3Rpb24+YSArIGk8L3NlbGVjdGlvbj47CisgICAgfQorfQorCitjbGFzcyBYWFggeworICAgIHB1YmxpYyBpbnQgbSgpIHsKKyAgICAgICAgVGVzdCB0OworICAgICAgICByZXR1cm4gdC5tZXRob2QoMSk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXIvYmVmb3JlRmllbGRXaXRoSW5hY2Nlc3NpYmxlR2V0dGVyUmVwbGFjZW1lbnQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXIvYmVmb3JlRmllbGRXaXRoSW5hY2Nlc3NpYmxlR2V0dGVyUmVwbGFjZW1lbnQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNDA3OWYxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVBhcmFtZXRlci9iZWZvcmVGaWVsZFdpdGhJbmFjY2Vzc2libGVHZXR0ZXJSZXBsYWNlbWVudC5qYXZhCkBAIC0wLDAgKzEsMTYgQEAKK2NsYXNzIFRlc3QgeworICAgIHB1YmxpYyBpbnQgaTsKKyAgICAKKyAgICBwdWJsaWMgaW50IGdldEkoKSB7IHJldHVybiBpOyB9CisgICAgCisgICAgaW50IG1ldGhvZChpbnQgYSkgeworICAgICAgICByZXR1cm4gPHNlbGVjdGlvbj5hICsgaTwvc2VsZWN0aW9uPjsKKyAgICB9Cit9CisKK2NsYXNzIFhYWCB7CisgICAgcHVibGljIGludCBtKCkgeworICAgICAgICBUZXN0IHQ7CisgICAgICAgIHJldHVybiB0Lm1ldGhvZCgxKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVBhcmFtZXRlci9iZWZvcmVHZW5lcmF0ZURlbGVnYXRlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlUGFyYW1ldGVyL2JlZm9yZUdlbmVyYXRlRGVsZWdhdGUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZWE2OTQwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVBhcmFtZXRlci9iZWZvcmVHZW5lcmF0ZURlbGVnYXRlLmphdmEKQEAgLTAsMCArMSwxOCBAQAorY2xhc3MgVGVzdCB7CisgICAgcHVibGljIGludCBtKGludCBhLCBpbnQgYikgeworICAgICAgICBpZihhID4gYikgeworICAgICAgICAgICByZXR1cm4gPHNlbGVjdGlvbj4wPC9zZWxlY3Rpb24+OworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgIH0KK30KKworY2xhc3MgVGVzdDEgeworICBUZXN0IHQ7CisKKyAgcHVibGljIGludCBuKGludCB2KSB7CisgICAgcmV0dXJuIHQubSh2LCAxKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXIvYmVmb3JlR2VuZXJhdGVEZWxlZ2F0ZUluU3VwZXJDbGFzcy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVBhcmFtZXRlci9iZWZvcmVHZW5lcmF0ZURlbGVnYXRlSW5TdXBlckNsYXNzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjZhNzlmOQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXIvYmVmb3JlR2VuZXJhdGVEZWxlZ2F0ZUluU3VwZXJDbGFzcy5qYXZhCkBAIC0wLDAgKzEsMTQgQEAKK2Fic3RyYWN0IGNsYXNzIEEgeworICBhYnN0cmFjdCB2b2lkIHh4eCgpOworfQorCitjbGFzcyBCIGltcGxlbWVudHMgQSB7CisgIHB1YmxpYyB2b2lkIHh4eCgpIHsKKyAgICBTeXN0ZW0ub3V0LnByaW50bG4oPHNlbGVjdGlvbj4yMzk8L3NlbGVjdGlvbj4pOworICB9CisKKyAgc3RhdGljIHsKKyAgICBBIGEgPSBuZXcgQigpOworICAgIGEueHh4KCk7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlUGFyYW1ldGVyL2JlZm9yZUdlbmVyYXRlRGVsZWdhdGVJblN1cGVySW50ZXJmYWNlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlUGFyYW1ldGVyL2JlZm9yZUdlbmVyYXRlRGVsZWdhdGVJblN1cGVySW50ZXJmYWNlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmU2YzIwZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXIvYmVmb3JlR2VuZXJhdGVEZWxlZ2F0ZUluU3VwZXJJbnRlcmZhY2UuamF2YQpAQCAtMCwwICsxLDE0IEBACitpbnRlcmZhY2UgQSB7CisgIHZvaWQgeHh4KCk7Cit9CisKK2NsYXNzIEIgaW1wbGVtZW50cyBBIHsKKyAgcHVibGljIHZvaWQgeHh4KCkgeworICAgIFN5c3RlbS5vdXQucHJpbnRsbig8c2VsZWN0aW9uPjIzOTwvc2VsZWN0aW9uPik7CisgIH0KKworICBzdGF0aWMgeworICAgIEEgYSA9IG5ldyBCKCk7CisgICAgYS54eHgoKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXIvYmVmb3JlR2VuZXJhdGVEZWxlZ2F0ZU5vQXJncy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVBhcmFtZXRlci9iZWZvcmVHZW5lcmF0ZURlbGVnYXRlTm9BcmdzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDgxOTVmZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXIvYmVmb3JlR2VuZXJhdGVEZWxlZ2F0ZU5vQXJncy5qYXZhCkBAIC0wLDAgKzEsMTMgQEAKK2NsYXNzIFRlc3QgeworICAgIHB1YmxpYyBpbnQgbSgpIHsKKyAgICAgICAgcmV0dXJuIDxzZWxlY3Rpb24+MDwvc2VsZWN0aW9uPjsKKyAgICB9Cit9CisKK2NsYXNzIFRlc3QxIHsKKyAgVGVzdCB0OworCisgIHB1YmxpYyBpbnQgbihpbnQgdikgeworICAgIHJldHVybiB0Lm0oKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXIvYmVmb3JlR2VuZXJhdGVEZWxlZ2F0ZVJlbW92ZVBhcmFtZXRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVBhcmFtZXRlci9iZWZvcmVHZW5lcmF0ZURlbGVnYXRlUmVtb3ZlUGFyYW1ldGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2I2ZDU4NQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXIvYmVmb3JlR2VuZXJhdGVEZWxlZ2F0ZVJlbW92ZVBhcmFtZXRlci5qYXZhCkBAIC0wLDAgKzEsNSBAQAorcHVibGljIGNsYXNzIEJhciB7CisgICAgcHVibGljIGludCBiYXooYnl0ZSBibGFoKSB7CisgICAgICAgIHJldHVybiA8c2VsZWN0aW9uPjxjYXJldD5ibGFoICsgYmxhaCArIDM8L3NlbGVjdGlvbj47CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVBhcmFtZXRlci9iZWZvcmVHZXR0ZXJRdWFsaWZpZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXIvYmVmb3JlR2V0dGVyUXVhbGlmaWVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWM5MzdkYwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXIvYmVmb3JlR2V0dGVyUXVhbGlmaWVyLmphdmEKQEAgLTAsMCArMSwyMiBAQAorcHVibGljIGNsYXNzIFRlc3QgeworICAgIHByaXZhdGUgU3RyaW5nIG15U3RyOworCisgICAgcHVibGljIFN0cmluZyBnZXRNeVN0cigpIHsKKyAgICAgICAgcmV0dXJuIG15U3RyOworICAgIH0KKworICAgIHZvaWQgZm9vKCkgeworICAgICAgICBuZXcgUnVubmFibGUoKXsKKyAgICAgICAgICAgIEBPdmVycmlkZQorICAgICAgICAgICAgcHVibGljIHZvaWQgcnVuKCkgeworICAgICAgICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKDxzZWxlY3Rpb24+bXlTdHI8L3NlbGVjdGlvbj4pOworICAgICAgICAgICAgfQorICAgICAgICB9OworICAgIH0KK30KKworY2xhc3MgWCB7CisgICBwdWJsaWMgdm9pZCBuKCkgeworICAgICAgIG5ldyBUZXN0KCkuZm9vKCk7CisgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVBhcmFtZXRlci9iZWZvcmVJbXBsaWNpdERlZmF1bHRDb25zdHJ1Y3Rvci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVBhcmFtZXRlci9iZWZvcmVJbXBsaWNpdERlZmF1bHRDb25zdHJ1Y3Rvci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkwYTA2YzAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlUGFyYW1ldGVyL2JlZm9yZUltcGxpY2l0RGVmYXVsdENvbnN0cnVjdG9yLmphdmEKQEAgLTAsMCArMSwxMyBAQAorY2xhc3MgQSB7CisgICAgaW50IGk7CisgICAgcHVibGljIEEoKSB7CisgICAgICAgIGkgPSA8c2VsZWN0aW9uPjI3PC9zZWxlY3Rpb24+OworICAgIH0KK30KKworY2xhc3MgQiBleHRlbmRzIEEgeworfQorCitjbGFzcyBVc2FnZSB7CisgICAgQSBhID0gbmV3IEIoKTsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlUGFyYW1ldGVyL2JlZm9yZUltcGxpY2l0U3VwZXJDYWxsLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlUGFyYW1ldGVyL2JlZm9yZUltcGxpY2l0U3VwZXJDYWxsLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzBkMDA5YgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXIvYmVmb3JlSW1wbGljaXRTdXBlckNhbGwuamF2YQpAQCAtMCwwICsxLDE4IEBACitjbGFzcyBBIHsKKyAgICBpbnQgaTsKKyAgICBwdWJsaWMgQSgpIHsKKyAgICAgICAgaSA9IDxzZWxlY3Rpb24+Mjc8L3NlbGVjdGlvbj47CisgICAgfQorfQorCitjbGFzcyBCIGV4dGVuZHMgQSB7CisgICAgaW50IGs7CisKKyAgICBwdWJsaWMgQigpIHsKKyAgICAgICAgayA9IDEwOworICAgIH0KK30KKworY2xhc3MgVXNhZ2UgeworICAgIEEgYSA9IG5ldyBCKCk7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVBhcmFtZXRlci9iZWZvcmVJbmNvbXBsZXRlRW51bURlZmluaXRpb24uamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXIvYmVmb3JlSW5jb21wbGV0ZUVudW1EZWZpbml0aW9uLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjFhM2Y3YwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXIvYmVmb3JlSW5jb21wbGV0ZUVudW1EZWZpbml0aW9uLmphdmEKQEAgLTAsMCArMSwxMCBAQAorZW51bSBUZXN0IHsKKyAgUm9vdCgpOworCisgIHB1YmxpYyBUZXN0KFN0cmluZyBkZXNjcmlwdGlvbiwgaW50IHBvc2l0aW9uKSB7CisgICAgU3lzdGVtLm91dC5wcmludGxuKGRlc2NyaXB0aW9uKTsKKyAgICBTeXN0ZW0ub3V0LnByaW50bG4oPHNlbGVjdGlvbj5wb3NpdGlvbiArICIiPC9zZWxlY3Rpb24+KTsKKyAgfQorCit9CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXIvYmVmb3JlSW5jb21wbGV0ZVZhcmFyZy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVBhcmFtZXRlci9iZWZvcmVJbmNvbXBsZXRlVmFyYXJnLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODg2YzkxMwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXIvYmVmb3JlSW5jb21wbGV0ZVZhcmFyZy5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKK2NsYXNzIEMgeworICAgIHZvaWQgbWV0aG9kKGludCBrLCBTdHJpbmcuLi4gcykgeworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oc1s8c2VsZWN0aW9uPms8L3NlbGVjdGlvbj5dKTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIG1ldGhvZCgiYSIsICJiIiwgImMiKTsKKyAgICAgICAgbWV0aG9kKCk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXIvYmVmb3JlSW5jb3JyZWN0U2NvcGUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXIvYmVmb3JlSW5jb3JyZWN0U2NvcGUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNzAxYzE1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVBhcmFtZXRlci9iZWZvcmVJbmNvcnJlY3RTY29wZS5qYXZhCkBAIC0wLDAgKzEsMTcgQEAKK3B1YmxpYyBjbGFzcyBJbm5lck91dGVyIHsKKyAgU3RyaW5nIGFuT2JqZWN0ID0gIiI7CisKKyAgaW50ZXJmYWNlIElubmVyIHsKKyAgICB2b2lkIGV4ZWMoKTsKKyAgfQorCisgIElubmVyIGluc3RhbmNlID0gbmV3IElubmVyKCkgeworICAgIHB1YmxpYyB2b2lkIGV4ZWMoKSB7CisgICAgICA8c2VsZWN0aW9uPmFuT2JqZWN0PC9zZWxlY3Rpb24+LmNoYXJBdCgxKTsKKyAgICB9CisgIH07CisKKyAgdm9pZCBmb28oKSB7CisgICBpbnN0YW5jZS5leGVjKCk7CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXIvYmVmb3JlSW50ZXJuYWxTaWRlRWZmZWN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlUGFyYW1ldGVyL2JlZm9yZUludGVybmFsU2lkZUVmZmVjdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcyMDQ0NDgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlUGFyYW1ldGVyL2JlZm9yZUludGVybmFsU2lkZUVmZmVjdC5qYXZhCkBAIC0wLDAgKzEsMjEgQEAKK2ltcG9ydCBqYXZhLnV0aWwuKjsKKworcHVibGljIGNsYXNzIFRlc3QgeworICAgIGludCBmaWVsZDsKKyAgICBpbnQgbWV0aG9kKCkgeworICAgICAgICByZXR1cm4gPHNlbGVjdGlvbj5maWVsZDwvc2VsZWN0aW9uPjsKKyAgICB9Cit9CisKK3B1YmxpYyBjbGFzcyBVc2FnZSB7CisgICAgaW50IHVzYWdlKFRlc3RbXSB0ZXN0cykgeworICAgICAgICBpbnQgc3VtID0gMDsKKyAgICAgICAgZm9yKGludCBpID0gMDsgaSA8IHRlc3RzLmxlbmd0aDspIHsKKyAgICAgICAgICAgIHN1bSArPSB0ZXN0c1tpKytdLm1ldGhvZCgpOworICAgICAgICB9CisgICAgICAgIExpc3QgbGlzdCA9IEFycmF5cy5hc0xpc3QodGVzdHMpOworICAgICAgICBmb3IoaW50IGkgPSAwOyBpIDwgbGlzdC5zaXplKCk7KSB7CisgICAgICAgICAgICBzdW0gKz0gKChUZXN0KWxpc3QuZ2V0KGkrKykpLm1ldGhvZCgpOyAgICAgICAgCisgICAgICAgIH0KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVBhcmFtZXRlci9iZWZvcmVMb2NhbFZhckRlY2xhcmF0aW9uLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlUGFyYW1ldGVyL2JlZm9yZUxvY2FsVmFyRGVjbGFyYXRpb24uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMThhMTA0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVBhcmFtZXRlci9iZWZvcmVMb2NhbFZhckRlY2xhcmF0aW9uLmphdmEKQEAgLTAsMCArMSw1IEBACitjbGFzcyBGb28geworICAgIHZvaWQgZigpIHsKKyAgICAgICAgaW50IGsgPSA8c2VsZWN0aW9uPjA8L3NlbGVjdGlvbj47CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXIvYmVmb3JlTG9jYWxWYXJTZWxlY3Rpb24uamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXIvYmVmb3JlTG9jYWxWYXJTZWxlY3Rpb24uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41OTA2MTFmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVBhcmFtZXRlci9iZWZvcmVMb2NhbFZhclNlbGVjdGlvbi5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKK2NsYXNzIFRlc3QgeworICAgIHB1YmxpYyB2b2lkIHRlc3QoKSB7CisgICAgICAgIGZpbmFsIFN0cmluZyA8c2VsZWN0aW9uPnM8L3NlbGVjdGlvbj4gPSAiIjsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKHMpOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHVzZSgpIHsKKyAgICAgICAgdGVzdCgpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlUGFyYW1ldGVyL2JlZm9yZU1ldGhvZEFjY2Vzcy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVBhcmFtZXRlci9iZWZvcmVNZXRob2RBY2Nlc3MuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNmQwYzgwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVBhcmFtZXRlci9iZWZvcmVNZXRob2RBY2Nlc3MuamF2YQpAQCAtMCwwICsxLDE4IEBACitjbGFzcyBUZXN0IHsKKyAgICBpbnQgbWV0aG9kKGludCBhLCBpbnQgYikgeworICAgICAgICByZXR1cm4gPHNlbGVjdGlvbj5hbm90aGVyTWV0aG9kKGEgKyBiKTwvc2VsZWN0aW9uPjsKKyAgICB9CisgICAgaW50IGk7CisgICAgCisgICAgaW50IGFub3RoZXJNZXRob2QoaW50IHgpIHsgCisgICAgICAgIHJldHVybiB4OworICAgIH0KK30KKworY2xhc3MgWFRlc3QgeworICAgIGludCBuKCkgeworICAgICAgICBUZXN0IHQ7CisgICAgICAgIAorICAgICAgICByZXR1cm4gdC5tZXRob2QoMSwgMik7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXIvYmVmb3JlTWV0aG9kVXNhZ2VJblRoaXNNZXRob2RJbmhlcml0b3IuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXIvYmVmb3JlTWV0aG9kVXNhZ2VJblRoaXNNZXRob2RJbmhlcml0b3IuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMzcwOGFmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVBhcmFtZXRlci9iZWZvcmVNZXRob2RVc2FnZUluVGhpc01ldGhvZEluaGVyaXRvci5qYXZhCkBAIC0wLDAgKzEsMTEgQEAKK2NsYXNzIEMgeworICBpbnQgZm9vKGludCB4KSB7CisgICAgIHJldHVybiA8c2VsZWN0aW9uPngrMTwvc2VsZWN0aW9uPjsKKyAgfQorfQorCitjbGFzcyBEIGV4dGVuZHMgQyB7CisgIGludCBmb28oaW50IHgpIHsKKyAgICByZXR1cm4gc3VwZXIuZm9vKHgpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVBhcmFtZXRlci9iZWZvcmVNZXRob2RXaXRob3V0UGFyYW1zLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlUGFyYW1ldGVyL2JlZm9yZU1ldGhvZFdpdGhvdXRQYXJhbXMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZjFkZjE0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVBhcmFtZXRlci9iZWZvcmVNZXRob2RXaXRob3V0UGFyYW1zLmphdmEKQEAgLTAsMCArMSwxMiBAQAorY2xhc3MgVGVzdCB7CisgICAgaW50IG0oKSB7CisgICAgICAgIHJldHVybiA8c2VsZWN0aW9uPjA8L3NlbGVjdGlvbj47CisgICAgfQorfQorCitjbGFzcyBYMyB7CisgICAgaW50IG4oKSB7CisgICAgICAgIFRlc3QgdDsKKyAgICAgICAgcmV0dXJuIHQubSgpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlUGFyYW1ldGVyL2JlZm9yZU5vVXNhZ2VzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlUGFyYW1ldGVyL2JlZm9yZU5vVXNhZ2VzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWViZTVjOQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXIvYmVmb3JlTm9Vc2FnZXMuamF2YQpAQCAtMCwwICsxLDUgQEAKK2NsYXNzIFRlc3QgeworICAgcHVibGljIGludCBtKGludCBhLCBpbnQgYikgeworCXJldHVybiA8c2VsZWN0aW9uPjA8L3NlbGVjdGlvbj47CisgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVBhcmFtZXRlci9iZWZvcmVOdWxsLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlUGFyYW1ldGVyL2JlZm9yZU51bGwuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZTBmMjAwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVBhcmFtZXRlci9iZWZvcmVOdWxsLmphdmEKQEAgLTAsMCArMSw2IEBACitjbGFzcyBUZXN0IHsKKyAgICBwdWJsaWMgVGVzdCBtZXRob2QoKSB7CisgICAgICAgIHJldHVybiA8c2VsZWN0aW9uPm51bGw8L3NlbGVjdGlvbj47CisgICAgfQorfQorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlUGFyYW1ldGVyL2JlZm9yZVBhcmFtZXRlckluRm9yLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlUGFyYW1ldGVyL2JlZm9yZVBhcmFtZXRlckluRm9yLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDY2YzY0YwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXIvYmVmb3JlUGFyYW1ldGVySW5Gb3IuamF2YQpAQCAtMCwwICsxLDkgQEAKK2ltcG9ydCBqYXZhLnV0aWwuKjsKKworY2xhc3MgWFggeworICAgIHB1YmxpYyB2b2lkIGcoTGlzdCBsKSB7CisgICAgICAgIGZvcihJdGVyYXRvciA8Y2FyZXQ+aXQgPSBsLml0ZXJhdG9yKCk7IGl0Lmhhc05leHQoKTspIHsKKyAgICAgICAgICAgIE9iamVjdCBvID0gaXQubmV4dCgpOgorICAgICAgICB9CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXIvYmVmb3JlUGFyYW1ldGVySmF2YURvYzEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXIvYmVmb3JlUGFyYW1ldGVySmF2YURvYzEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44N2Q4NDc2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVBhcmFtZXRlci9iZWZvcmVQYXJhbWV0ZXJKYXZhRG9jMS5qYXZhCkBAIC0wLDAgKzEsNyBAQAorY2xhc3MgVGVzdCB7CisgICAgLyoqCisgICAgICovCisgICAgaW50IG1ldGhvZCgpIHsKKyAgICAgICAgcmV0dXJuIDxzZWxlY3Rpb24+MTA8L3NlbGVjdGlvbj47CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVBhcmFtZXRlci9iZWZvcmVQYXJhbWV0ZXJKYXZhRG9jMi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVBhcmFtZXRlci9iZWZvcmVQYXJhbWV0ZXJKYXZhRG9jMi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM1ZjdhNGMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlUGFyYW1ldGVyL2JlZm9yZVBhcmFtZXRlckphdmFEb2MyLmphdmEKQEAgLTAsMCArMSw4IEBACitjbGFzcyBUZXN0IHsKKyAgICAvKioKKyAgICAgKiBAcGFyYW0gcworICAgICAqLworICAgIGludCBtZXRob2QoU3RyaW5nIHMpIHsKKyAgICAgICAgcmV0dXJuIDxzZWxlY3Rpb24+MTA8L3NlbGVjdGlvbj47CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVBhcmFtZXRlci9iZWZvcmVQYXJhbWV0ZXJKYXZhRG9jMy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVBhcmFtZXRlci9iZWZvcmVQYXJhbWV0ZXJKYXZhRG9jMy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIyZGZjZDYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlUGFyYW1ldGVyL2JlZm9yZVBhcmFtZXRlckphdmFEb2MzLmphdmEKQEAgLTAsMCArMSw4IEBACitjbGFzcyBUZXN0IHsKKyAgICAvKioKKyAgICAgKiAgSW5jb21wbGV0ZSBKYXZhRG9jCisgICAgICovCisgICAgaW50IG1ldGhvZChTdHJpbmcgcykgeworICAgICAgICByZXR1cm4gPHNlbGVjdGlvbj4xMDwvc2VsZWN0aW9uPjsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlUGFyYW1ldGVyL2JlZm9yZVBhcmFtZXRlckphdmFEb2NCZWZvcmVWYXJhcmcuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXIvYmVmb3JlUGFyYW1ldGVySmF2YURvY0JlZm9yZVZhcmFyZy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZmNTc2NTIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlUGFyYW1ldGVyL2JlZm9yZVBhcmFtZXRlckphdmFEb2NCZWZvcmVWYXJhcmcuamF2YQpAQCAtMCwwICsxLDEzIEBACitjbGFzcyBDIHsKKyAgICAvKioKKyAgICAgKiBAcGFyYW0gcworICAgICAqLworICAgIHZvaWQgbWV0aG9kKFN0cmluZy4uLiBzKSB7CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihzWzxzZWxlY3Rpb24+MDwvc2VsZWN0aW9uPl0pOworICAgIH0KKworICAgIHsKKyAgICAgICAgbWV0aG9kKCJhIiwgImIiLCAiYyIpOworICAgICAgICBtZXRob2QoKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVBhcmFtZXRlci9iZWZvcmVQYXJhbWV0ZXJTdWJzdGl0dXRpb24uamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXIvYmVmb3JlUGFyYW1ldGVyU3Vic3RpdHV0aW9uLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWY1NDU1YgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXIvYmVmb3JlUGFyYW1ldGVyU3Vic3RpdHV0aW9uLmphdmEKQEAgLTAsMCArMSwxMyBAQAorY2xhc3MgVGVzdCB7CisgICAgaW50IG1ldGhvZChpbnQgYSwgaW50IGIpIHsKKyAgICAgICAgcmV0dXJuIDxzZWxlY3Rpb24+YSArIGI8L3NlbGVjdGlvbj47CisgICAgfQorfQorCitjbGFzcyBYVGVzdCB7CisgICAgaW50IG4oKSB7CisgICAgICAgIFRlc3QgdDsKKyAgICAgICAgCisgICAgICAgIHJldHVybiB0Lm1ldGhvZCgxLCAyKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVBhcmFtZXRlci9iZWZvcmVQcmVzZXJ2ZURpYW1vbmRPY2N1cnJlbmNlcy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVBhcmFtZXRlci9iZWZvcmVQcmVzZXJ2ZURpYW1vbmRPY2N1cnJlbmNlcy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJiZjlhODUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlUGFyYW1ldGVyL2JlZm9yZVByZXNlcnZlRGlhbW9uZE9jY3VycmVuY2VzLmphdmEKQEAgLTAsMCArMSwyMiBAQAorCitwdWJsaWMgY2xhc3MgVGVzdENvbXBsZXRpb24geworCisgICAgcHVibGljIHN0YXRpYyA8VCwgVj4gUGFyYWxsZWxQaXBlbGluZTxULCBWPiB0ZXN0KFQgYmFzZSwgViBuZXdTdGFnZSwgVCB1cHN0cmVhbSkgeworICAgICAgICBpZiAoYmFzZSAhPSBudWxsKXsKKyAgICAgICAgICAgIHJldHVybiA8c2VsZWN0aW9uPm5ldyBQYXJhbGxlbFBpcGVsaW5lPD4oYmFzZSwgbmV3U3RhZ2UpPC9zZWxlY3Rpb24+OworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgcmV0dXJuIG5ldyBQYXJhbGxlbFBpcGVsaW5lPD4odXBzdHJlYW0sIG5ld1N0YWdlKTsKKyAgICAgICAgfQorCisgICAgfQorCisKKyAgICB2b2lkIGYoKSB7CisgICAgICAgIHRlc3QobnVsbCwgbnVsbCwgbnVsbCk7CisgICAgfQorICAgIHByaXZhdGUgc3RhdGljIGNsYXNzIFBhcmFsbGVsUGlwZWxpbmU8VCwgVj4geworICAgICAgICBwdWJsaWMgUGFyYWxsZWxQaXBlbGluZShUIHAwLCBWIHAxKSB7CisgICAgICAgIH0KKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlUGFyYW1ldGVyL2JlZm9yZVF1YWxpZmllZE5ldy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVBhcmFtZXRlci9iZWZvcmVRdWFsaWZpZWROZXcuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZjcwNTkyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVBhcmFtZXRlci9iZWZvcmVRdWFsaWZpZWROZXcuamF2YQpAQCAtMCwwICsxLDEwIEBACitjbGFzcyBUZXN0IHsKKyAgICBjbGFzcyBBIHsKKyAgICAgICAgY2xhc3MgQiB7CisgICAgICAgIH0KKyAgICB9CisgCisgICAgT2JqZWN0IG1ldGhvZCgpIHsKKyAgICAgICAgcmV0dXJuIDxzZWxlY3Rpb24+bmV3IEEoKS5uZXcgQigpPC9zZWxlY3Rpb24+OworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlUGFyYW1ldGVyL2JlZm9yZVJlbW92ZVBhcmFtZXRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVBhcmFtZXRlci9iZWZvcmVSZW1vdmVQYXJhbWV0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43YjZkNTg1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVBhcmFtZXRlci9iZWZvcmVSZW1vdmVQYXJhbWV0ZXIuamF2YQpAQCAtMCwwICsxLDUgQEAKK3B1YmxpYyBjbGFzcyBCYXIgeworICAgIHB1YmxpYyBpbnQgYmF6KGJ5dGUgYmxhaCkgeworICAgICAgICByZXR1cm4gPHNlbGVjdGlvbj48Y2FyZXQ+YmxhaCArIGJsYWggKyAzPC9zZWxlY3Rpb24+OworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXIvYmVmb3JlUmVtb3ZlUGFyYW1ldGVyQWZ0ZXJWYXJpYWJsZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVBhcmFtZXRlci9iZWZvcmVSZW1vdmVQYXJhbWV0ZXJBZnRlclZhcmlhYmxlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGYyOTdkOQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXIvYmVmb3JlUmVtb3ZlUGFyYW1ldGVyQWZ0ZXJWYXJpYWJsZS5qYXZhCkBAIC0wLDAgKzEsNiBAQAorcHVibGljIGNsYXNzIEJhciB7CisgICAgcHVibGljIGludCBiYXooYnl0ZSBibGFoKSB7CisgICAgICAgIGludCA8Y2FyZXQ+PHNlbGVjdGlvbj52YXI8L3NlbGVjdGlvbj4gPSBibGFoICsgNTsKKyAgICAgICAgcmV0dXJuIHZhciArIDk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVBhcmFtZXRlci9iZWZvcmVSZW1vdmVQYXJhbWV0ZXJJbkhpZXJhcmNoeS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVBhcmFtZXRlci9iZWZvcmVSZW1vdmVQYXJhbWV0ZXJJbkhpZXJhcmNoeS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU0MDRkZDMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlUGFyYW1ldGVyL2JlZm9yZVJlbW92ZVBhcmFtZXRlckluSGllcmFyY2h5LmphdmEKQEAgLTAsMCArMSwxMCBAQAorcHVibGljIGNsYXNzIEJhciB7CisgICAgcHVibGljIGludCBiYXooYnl0ZSBibGFoKSB7CisgICAgICAgIHJldHVybiA8c2VsZWN0aW9uPmJsYWggKyAzPC9zZWxlY3Rpb24+OworICAgIH0KK30KK2NsYXNzIFMgZXh0ZW5kcyBCYXIgeworICAgIHB1YmxpYyBpbnQgYmF6KGJ5dGUgYmxhaCkgeworICAgICAgICByZXR1cm4gc3VwZXIuYmF6KChieXRlKSAwKTsgICAgLy9UbyBjaGFuZ2UgYm9keSBvZiBvdmVycmlkZGVuIG1ldGhvZHMgdXNlIEZpbGUgfCBTZXR0aW5ncyB8IEZpbGUgVGVtcGxhdGVzLgorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlUGFyYW1ldGVyL2JlZm9yZVJlbW92ZVBhcmFtZXRlcldpdGhKYXZhZG9jLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlUGFyYW1ldGVyL2JlZm9yZVJlbW92ZVBhcmFtZXRlcldpdGhKYXZhZG9jLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWY4MTc0MAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXIvYmVmb3JlUmVtb3ZlUGFyYW1ldGVyV2l0aEphdmFkb2MuamF2YQpAQCAtMCwwICsxLDExIEBACitwdWJsaWMgY2xhc3MgQmFyIHsKKworICAgIC8qKgorICAgICAqCisgICAgICogQHBhcmFtIGxpbmUKKyAgICAgKiBAcGFyYW0gZmlsZQorICAgICAqLworICAgIHB1YmxpYyB2b2lkIHByaW50RXJyb3IoU3RyaW5nIGRldGFpbCwgaW50IGxpbmUsIFN0cmluZyBmaWxlKSB7CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbig8c2VsZWN0aW9uPmZpbGUgKyAiOiIgK2xpbmU8L3NlbGVjdGlvbj4gKyAiIGVycm9yOiAiICsgZGV0YWlsKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlUGFyYW1ldGVyL2JlZm9yZVJlcGxhY2VBbGxBbmREZWxldGVVbnVzZWQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXIvYmVmb3JlUmVwbGFjZUFsbEFuZERlbGV0ZVVudXNlZC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgyMGY1ZTUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlUGFyYW1ldGVyL2JlZm9yZVJlcGxhY2VBbGxBbmREZWxldGVVbnVzZWQuamF2YQpAQCAtMCwwICsxLDExIEBACitwdWJsaWMgY2xhc3MgUGFyYW1ldGVycyB7CisgICAgICAgIHB1YmxpYyB2b2lkIHN1YmplY3QoaW50IHApIHsKKyAgICAgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oPHNlbGVjdGlvbj5wKzE8L3NlbGVjdGlvbj4pOworICAgICAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihwKzEpOworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIHZvaWQgY29udGV4dCgpIHsKKyAgICAgICAgICAgICAgICBzdWJqZWN0KDEpOworICAgICAgICAgICAgICAgIHN1YmplY3QoMik7CisgICAgICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlUGFyYW1ldGVyL2JlZm9yZVNlbGZSZWZlcmVuY2UuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXIvYmVmb3JlU2VsZlJlZmVyZW5jZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjExYTA1ZGYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlUGFyYW1ldGVyL2JlZm9yZVNlbGZSZWZlcmVuY2UuamF2YQpAQCAtMCwwICsxLDkgQEAKK2NsYXNzIFRlc3QgeworICB2b2lkIGZvbyhib29sZWFuIGZsYWcsIGludCBpKSB7CisgICAgaWYgKGZsYWcpIHsKKyAgICAgIGZvbyhmYWxzZSwgaSwgPHNlbGVjdGlvbj5pICsgMTwvc2VsZWN0aW9uPik7CisgICAgfQorICAgIFN5c3RlbS5vdXQucHJpbnRsbigpOworICAgIGZvbyhmYWxzZSwgaSk7CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXIvYmVmb3JlU2VsZlJlZmVyZW5jZVZhcmFyZ3MuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXIvYmVmb3JlU2VsZlJlZmVyZW5jZVZhcmFyZ3MuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MDdiYWYxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVBhcmFtZXRlci9iZWZvcmVTZWxmUmVmZXJlbmNlVmFyYXJncy5qYXZhCkBAIC0wLDAgKzEsOSBAQAorY2xhc3MgVGVzdCB7CisgIHZvaWQgZm9vKGJvb2xlYW4gZmxhZywgaW50Li4uIGkpIHsKKyAgICBpZiAoZmxhZykgeworICAgICAgZm9vKGZhbHNlLCA8c2VsZWN0aW9uPiIiPC9zZWxlY3Rpb24+LCBpKTsKKyAgICB9CisgICAgU3lzdGVtLm91dC5wcmludGxuKCk7CisgICAgZm9vKGZsYWcsIGkpOworICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlUGFyYW1ldGVyL2JlZm9yZVNlbGZSZWZlcmVuY2VWYXJhcmdzMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVBhcmFtZXRlci9iZWZvcmVTZWxmUmVmZXJlbmNlVmFyYXJnczEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xOTdkNzVjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVBhcmFtZXRlci9iZWZvcmVTZWxmUmVmZXJlbmNlVmFyYXJnczEuamF2YQpAQCAtMCwwICsxLDYgQEAKK2NsYXNzIFRlc3QgeworICB2b2lkIGZvbyhpbnQuLi4gaSkgeworICAgIGZvbyg8c2VsZWN0aW9uPiIiPC9zZWxlY3Rpb24+LCAxKTsKKyAgICBmb28oMyk7CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXIvYmVmb3JlU2ltcGxlVXNhZ2UuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXIvYmVmb3JlU2ltcGxlVXNhZ2UuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYTI1MGQwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVBhcmFtZXRlci9iZWZvcmVTaW1wbGVVc2FnZS5qYXZhCkBAIC0wLDAgKzEsMTggQEAKK2NsYXNzIFRlc3QgeworICAgcHVibGljIGludCBtKGludCBhLCBpbnQgYikgeworICAgICAgICBpZihhID4gYikgeworICAgICAgICAgICByZXR1cm4gPHNlbGVjdGlvbj4wPC9zZWxlY3Rpb24+OworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgfQorfQorCitjbGFzcyBUZXN0MSB7CisgIFRlc3QgdDsKKworICBwdWJsaWMgaW50IG4oaW50IHYpIHsKKyAgICByZXR1cm4gdC5tKHYsIDEpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVBhcmFtZXRlci9iZWZvcmVTaW1wbGlmaWVkUmVzdWx0ZWRUeXBlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlUGFyYW1ldGVyL2JlZm9yZVNpbXBsaWZpZWRSZXN1bHRlZFR5cGUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYTdlODIzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVBhcmFtZXRlci9iZWZvcmVTaW1wbGlmaWVkUmVzdWx0ZWRUeXBlLmphdmEKQEAgLTAsMCArMSwyNCBAQAoraW1wb3J0IGphdmEudXRpbC4qOworcHVibGljIGNsYXNzIEludHJvZHVjZVBhcmFtZXRlclByb2R1Y2VzV2FybmluZyB7CisgICAgcHJpdmF0ZSBmaW5hbCBMaXN0PEdlbmVyaWM8Pz4+IGVsZW1lbnRzOworCisgICAgcHVibGljIEludHJvZHVjZVBhcmFtZXRlclByb2R1Y2VzV2FybmluZygpIHsKKyAgICAgICAgZWxlbWVudHMgPSA8c2VsZWN0aW9uPm5ld0FycmF5TGlzdChuZXcgU29tZUdlbmVyaWMoKSwgbmV3IFNvbWVPdGhlckdlbmVyaWMoKSk8L3NlbGVjdGlvbj47CisgICAgfQorCisgICAgcHVibGljIHN0YXRpYyA8RT4gQXJyYXlMaXN0PEU+IG5ld0FycmF5TGlzdChFLi4uIGVsZW1lbnRzKSB7CisgICAgICAgIEFycmF5TGlzdDxFPiBsaXN0ID0gbmV3IEFycmF5TGlzdDxFPigpOworICAgICAgICBDb2xsZWN0aW9ucy5hZGRBbGwobGlzdCwgZWxlbWVudHMpOworICAgICAgICByZXR1cm4gbGlzdDsKKyAgICB9CisKKyAgICBwcml2YXRlIHN0YXRpYyBpbnRlcmZhY2UgR2VuZXJpYzxUPnsKKworICAgIH0KKworICAgIHByaXZhdGUgc3RhdGljIGNsYXNzIFNvbWVHZW5lcmljIGltcGxlbWVudHMgR2VuZXJpYzxTdHJpbmc+IHsKKyAgICB9CisKKyAgICBwcml2YXRlIHN0YXRpYyBjbGFzcyBTb21lT3RoZXJHZW5lcmljIGltcGxlbWVudHMgR2VuZXJpYzxPYmplY3Q+IHsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlUGFyYW1ldGVyL2JlZm9yZVN0YXRpY0ZpZWxkQWNjZXNzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlUGFyYW1ldGVyL2JlZm9yZVN0YXRpY0ZpZWxkQWNjZXNzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmQ2OGE5NgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXIvYmVmb3JlU3RhdGljRmllbGRBY2Nlc3MuamF2YQpAQCAtMCwwICsxLDE2IEBACitjbGFzcyBUZXN0IHsKKyAgICBwdWJsaWMgc3RhdGljIGludCBpOworICAgIAorICAgIGludCBtZXRob2QoaW50IGEpIHsKKyAgICAgICAgcmV0dXJuIDxzZWxlY3Rpb24+YSArIGk8L3NlbGVjdGlvbj47CisgICAgfQorfQorCitjbGFzcyBYIHsKKyAgICBwdWJsaWMgc3RhdGljIGludCBpOworICAgIAorICAgIGludCB5eXkoaW50IHopIHsKKyAgICAgICAgVGVzdCB0OworICAgICAgICByZXR1cm4gdC5tZXRob2Qoeik7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXIvYmVmb3JlU3RhdGljRmllbGRXaXRoR2V0dGVyUmVwbGFjZW1lbnQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXIvYmVmb3JlU3RhdGljRmllbGRXaXRoR2V0dGVyUmVwbGFjZW1lbnQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44OTEzNWNjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVBhcmFtZXRlci9iZWZvcmVTdGF0aWNGaWVsZFdpdGhHZXR0ZXJSZXBsYWNlbWVudC5qYXZhCkBAIC0wLDAgKzEsMTcgQEAKK3B1YmxpYyBjbGFzcyBSIHsKKyAgcHJpdmF0ZSBzdGF0aWMgaW50IG91ckludDsKKworICBwdWJsaWMgc3RhdGljIGludCBnZXRPdXJJbnQoKSB7CisgICAgcmV0dXJuIG91ckludDsKKyAgfQorCisgIHB1YmxpYyBzdGF0aWMgdm9pZCBkb1NtdGgoKSB7CisgICAgU3lzdGVtLm91dC5wcmludGxuKDxzZWxlY3Rpb24+b3VySW50PC9zZWxlY3Rpb24+KTsKKyAgfQorfQorCitjbGFzcyBVc2FnZSB7CisgIHZvaWQgZm9vKCkgeworICAgIFIuZG9TbXRoKCk7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlUGFyYW1ldGVyL2JlZm9yZVN1YnN0aXR1dGVUeXBlUGFyYW1zLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlUGFyYW1ldGVyL2JlZm9yZVN1YnN0aXR1dGVUeXBlUGFyYW1zLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmIwMWVhNwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXIvYmVmb3JlU3Vic3RpdHV0ZVR5cGVQYXJhbXMuamF2YQpAQCAtMCwwICsxLDExIEBACitpbXBvcnQgamF2YS51dGlsLio7CitjbGFzcyBUZXN0IHsKKyA8VD4gdm9pZCBmb28oVCB0KSB7CisgICAgTGlzdDxUPiBscyA9IDxzZWxlY3Rpb24+bmV3IEFycmF5TGlzdDxUPigpPC9zZWxlY3Rpb24+OworICB9CisKKyAgdm9pZCBiYXIoKSB7CisgICAgU3RyaW5nIHMgPSAiIjsKKyAgICBmb28ocyk7CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXIvYmVmb3JlU3VwZXJJbkV4cHJlc3Npb24uamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXIvYmVmb3JlU3VwZXJJbkV4cHJlc3Npb24uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41OGQxNjU3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVBhcmFtZXRlci9iZWZvcmVTdXBlckluRXhwcmVzc2lvbi5qYXZhCkBAIC0wLDAgKzEsMTggQEAKK2NsYXNzIFQxIHsKKyAgICBpbnQgbWV0aG9kKGludCBpKSB7CisgICAgICAgIHJldHVybiAwOworICAgIH0KK30KKworY2xhc3MgVDIgZXh0ZW5kcyBUMSB7CisgICAgaW50IG1ldGhvZChpbnQgaSkgeworICAgICAgICByZXR1cm4gPHNlbGVjdGlvbj5zdXBlci5tZXRob2QoaSkgKyAxPC9zZWxlY3Rpb24+OworICAgIH0KK30KKworY2xhc3MgVXNhZ2UgeworICAgIGludCBtKCkgeworICAgICAgICBUMiB0ZXN0OworICAgICAgICByZXR1cm4gdGVzdC5tZXRob2QoMCk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXIvYmVmb3JlU3VwZXJXaXRoU2lkZUVmZmVjdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVBhcmFtZXRlci9iZWZvcmVTdXBlcldpdGhTaWRlRWZmZWN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTU2OGM1ZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXIvYmVmb3JlU3VwZXJXaXRoU2lkZUVmZmVjdC5qYXZhCkBAIC0wLDAgKzEsMTcgQEAKK2NsYXNzIFQxIHsKKyAgICBpbnQgbWV0aG9kKGludCBpKSB7CisgICAgICAgIHJldHVybiAwOworICAgIH0KK30KKworY2xhc3MgVDIgZXh0ZW5kcyBUMSB7CisgICAgaW50IG1ldGhvZChpbnQgaSkgeworICAgICAgICByZXR1cm4gPHNlbGVjdGlvbj5zdXBlci5tZXRob2QoaSkgKyAxPC9zZWxlY3Rpb24+OworICAgIH0KK30KKworY2xhc3MgVXNhZ2UgeworICAgIGludCBtKCkgeworICAgICAgICByZXR1cm4gbmV3IFQyKCkubWV0aG9kKDApOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlUGFyYW1ldGVyL2JlZm9yZVRoaXNTdWJzdGl0dXRpb24uamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXIvYmVmb3JlVGhpc1N1YnN0aXR1dGlvbi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNmYzhmNDYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlUGFyYW1ldGVyL2JlZm9yZVRoaXNTdWJzdGl0dXRpb24uamF2YQpAQCAtMCwwICsxLDE0IEBACitjbGFzcyBUZXN0IHsKKyAgICBpbnQgbWV0aG9kKGludCBhLCBpbnQgYikgeworICAgICAgICByZXR1cm4gPHNlbGVjdGlvbj50aGlzPC9zZWxlY3Rpb24+Lmk7CisgICAgfQorICAgIHByaXZhdGUgaW50IGk7Cit9CisKK2NsYXNzIFhUZXN0IHsKKyAgICBpbnQgbigpIHsKKyAgICAgICAgVGVzdCB0OworICAgICAgICAKKyAgICAgICAgcmV0dXJuIHQubWV0aG9kKDEsIDIpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlUGFyYW1ldGVyL2JlZm9yZVRoaXNTdWJzdGl0dXRpb25JblF1YWxpZmllci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVBhcmFtZXRlci9iZWZvcmVUaGlzU3Vic3RpdHV0aW9uSW5RdWFsaWZpZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNGRjMDViCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVBhcmFtZXRlci9iZWZvcmVUaGlzU3Vic3RpdHV0aW9uSW5RdWFsaWZpZXIuamF2YQpAQCAtMCwwICsxLDE0IEBACitjbGFzcyBUZXN0IHsKKyAgICBpbnQgbWV0aG9kKGludCBhLCBpbnQgYikgeworICAgICAgICByZXR1cm4gPHNlbGVjdGlvbj50aGlzLmk8L3NlbGVjdGlvbj47CisgICAgfQorICAgIHByaXZhdGUgaW50IGk7Cit9CisKK2NsYXNzIFhUZXN0IHsKKyAgICBpbnQgbigpIHsKKyAgICAgICAgVGVzdCB0OworICAgICAgICAKKyAgICAgICAgcmV0dXJuIHQubWV0aG9kKDEsIDIpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlUGFyYW1ldGVyL2JlZm9yZVVzZUluSW5uZXJDbGFzcy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVBhcmFtZXRlci9iZWZvcmVVc2VJbklubmVyQ2xhc3MuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NDI3ZTk0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVBhcmFtZXRlci9iZWZvcmVVc2VJbklubmVyQ2xhc3MuamF2YQpAQCAtMCwwICsxLDE0IEBACitjbGFzcyBUZXN0IHsKKyAgICBwdWJsaWMgdm9pZCB0ZXN0KCkgeworICAgICAgICBmaW5hbCBTdHJpbmcgPGNhcmV0PnMgPSAiIjsKKyAgICAgICAgbmV3IFJ1bm5hYmxlKCkgeworICAgICAgICAgICAgcHVibGljIHZvaWQgcnVuKCkgeworICAgICAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihzKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfS5ydW4oKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCB1c2UoKSB7CisgICAgICAgIHRlc3QoKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVBhcmFtZXRlci9iZWZvcmVWYXJhcmdzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlUGFyYW1ldGVyL2JlZm9yZVZhcmFyZ3MuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZWNhNTRiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVBhcmFtZXRlci9iZWZvcmVWYXJhcmdzLmphdmEKQEAgLTAsMCArMSwxOCBAQAorY2xhc3MgVGVzdCB7CisgICBwdWJsaWMgaW50IG0oaW50IGEsIGludC4uLiB2YWx1ZXMpIHsKKyAgICAgICAgaWYoYSA+IHZhbHVlcy5sZW5ndGgpIHsKKyAgICAgICAgICAgcmV0dXJuIDxzZWxlY3Rpb24+MDwvc2VsZWN0aW9uPjsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgIH0KK30KKworY2xhc3MgVGVzdDEgeworICBUZXN0IHQ7CisKKyAgcHVibGljIGludCBuKGludCB2KSB7CisgICAgcmV0dXJuIHQubSh2LCAxKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXIvYmVmb3JlVmFyYXJnczEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXIvYmVmb3JlVmFyYXJnczEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MTk0NDliCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVBhcmFtZXRlci9iZWZvcmVWYXJhcmdzMS5qYXZhCkBAIC0wLDAgKzEsOCBAQAoraW1wb3J0IGphdmEudXRpbC4qOworCitwdWJsaWMgY2xhc3MgQ29sbGVjdCB7CisgICAgcHVibGljIHZvaWQgbShTdHJpbmcgbmFtZXMpIHsKKyAgICAgICBMaXN0IHN0cnMgPSA8c2VsZWN0aW9uPkFycmF5cy5hc0xpc3QobmFtZXMpPC9zZWxlY3Rpb24+OworICAgfQorCit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlUGFyYW1ldGVyL2JlZm9yZVdlaXJkUXVhbGlmaWVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlUGFyYW1ldGVyL2JlZm9yZVdlaXJkUXVhbGlmaWVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjA2MWIwZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXIvYmVmb3JlV2VpcmRRdWFsaWZpZXIuamF2YQpAQCAtMCwwICsxLDE1IEBACitwdWJsaWMgY2xhc3MgVGVzdCB7CisgICAgaW50IG1ldGhvZChpbnQgaSkgeworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBpbnQgbShpbnQgaSwgaW50IGopIHsKKyAgICAgICAgcmV0dXJuIGkgKyA8c2VsZWN0aW9uPm1ldGhvZChqKTwvc2VsZWN0aW9uPjsKKyAgICB9Cit9CisKK2NsYXNzIFggeworICAgcHVibGljIGludCBuKGludCBhKSB7CisgICAgICAgIHJldHVybiAobmV3IFRlc3QoKSkubShhLCBhICogMik7CisgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVBhcmFtZXRlci9iZWZvcmVXZWlyZFF1YWxpZmllckFuZFBhcmFtZXRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVBhcmFtZXRlci9iZWZvcmVXZWlyZFF1YWxpZmllckFuZFBhcmFtZXRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRmNTAzNjgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlUGFyYW1ldGVyL2JlZm9yZVdlaXJkUXVhbGlmaWVyQW5kUGFyYW1ldGVyLmphdmEKQEAgLTAsMCArMSwxNSBAQAorcHVibGljIGNsYXNzIFRlc3QgeyAgICAKKyAgICBpbnQgbWV0aG9kKGludCBpKSB7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIGludCBtKGludCBpLCBpbnQgaiwgVGVzdCB0KSB7CisgICAgICAgIHJldHVybiBpICsgPHNlbGVjdGlvbj50Lm1ldGhvZChqKTwvc2VsZWN0aW9uPjsKKyAgICB9Cit9CisKK2NsYXNzIFggeworICAgcHVibGljIGludCBuKGludCBhKSB7CisgICAgICAgIHJldHVybiAobmV3IFRlc3QoKSkubShhLCBhICogMiwgbmV3IFRlc3QoKSk7CisgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVBhcmFtZXRlck9iamVjdC9jb3B5SmF2YWRvYy9hZnRlci9UZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlUGFyYW1ldGVyT2JqZWN0L2NvcHlKYXZhZG9jL2FmdGVyL1Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZDlhNGUwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVBhcmFtZXRlck9iamVjdC9jb3B5SmF2YWRvYy9hZnRlci9UZXN0LmphdmEKQEAgLTAsMCArMSwyNiBAQAorY2xhc3MgVGVzdCB7CisgIC8qKgorICAgKiBmb28gY29tbWVudAorICAgKiBAcGFyYW0gcGFyYW0KKyAgICovCisgIHZvaWQgZm9vKFBhcmFtIHBhcmFtKSB7CisgICAgYmFyKHBhcmFtLmdldFMoKSk7CisgIH0KKworICB2b2lkIGJhcihTdHJpbmcgcyl7fQorCisgICAgcHJpdmF0ZSBzdGF0aWMgY2xhc3MgUGFyYW0geworICAgICAgICBwcml2YXRlIGZpbmFsIFN0cmluZyBzOworCisgICAgICAgIC8qKgorICAgICAgICAgKiBAcGFyYW0gcyBsb25nIGRlc2NyaXB0aW9uCisgICAgICAgICAqLworICAgICAgICBwcml2YXRlIFBhcmFtKFN0cmluZyBzKSB7CisgICAgICAgICAgICB0aGlzLnMgPSBzOworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIFN0cmluZyBnZXRTKCkgeworICAgICAgICAgICAgcmV0dXJuIHM7CisgICAgICAgIH0KKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlUGFyYW1ldGVyT2JqZWN0L2NvcHlKYXZhZG9jL2JlZm9yZS9UZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlUGFyYW1ldGVyT2JqZWN0L2NvcHlKYXZhZG9jL2JlZm9yZS9UZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjkyNjBmMAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXJPYmplY3QvY29weUphdmFkb2MvYmVmb3JlL1Rlc3QuamF2YQpAQCAtMCwwICsxLDExIEBACitjbGFzcyBUZXN0IHsKKyAgLyoqCisgICAqIGZvbyBjb21tZW50CisgICAqIEBwYXJhbSBzIGxvbmcgZGVzY3JpcHRpb24KKyAgICovCisgIHZvaWQgZm9vKFN0cmluZyBzKSB7CisgICAgYmFyKHMpOworICB9CisKKyAgdm9pZCBiYXIoU3RyaW5nIHMpe30KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXJPYmplY3QvZGVsZWdhdGUvYWZ0ZXIvUGFyYW0uamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXJPYmplY3QvZGVsZWdhdGUvYWZ0ZXIvUGFyYW0uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYzg4OGJmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVBhcmFtZXRlck9iamVjdC9kZWxlZ2F0ZS9hZnRlci9QYXJhbS5qYXZhCkBAIC0wLDAgKzEsMTEgQEAKK3B1YmxpYyBjbGFzcyBQYXJhbSB7CisgICAgcHJpdmF0ZSBmaW5hbCBpbnRbXSBpOworCisgICAgcHVibGljIFBhcmFtKGludC4uLiBpKSB7CisgICAgICAgIHRoaXMuaSA9IGk7CisgICAgfQorCisgICAgcHVibGljIGludFtdIGdldEkoKSB7CisgICAgICAgIHJldHVybiBpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXJPYmplY3QvZGVsZWdhdGUvYWZ0ZXIvVGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVBhcmFtZXRlck9iamVjdC9kZWxlZ2F0ZS9hZnRlci9UZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDljNTUxYgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXJPYmplY3QvZGVsZWdhdGUvYWZ0ZXIvVGVzdC5qYXZhCkBAIC0wLDAgKzEsMTQgQEAKK2NsYXNzIFRlc3QgeworICAgIHZvaWQgZm9vKGludC4uLiBpKSB7CisgICAgICAgIGZvbyhuZXcgUGFyYW0oaSkpOworICAgIH0KKworICAgIHZvaWQgZm9vKFBhcmFtIHBhcmFtKSB7CisgICAgaWYgKHBhcmFtLmdldEkoKS5sZW5naHQgPT0gMCkgeworICAgIH0KKyAgfQorCisgIHZvaWQgYmFyKCl7CisgICAgZm9vKDEsIDIpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVBhcmFtZXRlck9iamVjdC9kZWxlZ2F0ZS9iZWZvcmUvVGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVBhcmFtZXRlck9iamVjdC9kZWxlZ2F0ZS9iZWZvcmUvVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMxMTE3Y2MKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlUGFyYW1ldGVyT2JqZWN0L2RlbGVnYXRlL2JlZm9yZS9UZXN0LmphdmEKQEAgLTAsMCArMSwxMCBAQAorY2xhc3MgVGVzdCB7CisgIHZvaWQgZm9vKGludC4uLiBpKSB7CisgICAgaWYgKGkubGVuZ2h0ID09IDApIHsKKyAgICB9CisgIH0KKworICB2b2lkIGJhcigpeworICAgIGZvbygxLCAyKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXJPYmplY3QvZXhpc3RlbnRCZWFuL2FmdGVyL1BhcmFtLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlUGFyYW1ldGVyT2JqZWN0L2V4aXN0ZW50QmVhbi9hZnRlci9QYXJhbS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBjODg4YmYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlUGFyYW1ldGVyT2JqZWN0L2V4aXN0ZW50QmVhbi9hZnRlci9QYXJhbS5qYXZhCkBAIC0wLDAgKzEsMTEgQEAKK3B1YmxpYyBjbGFzcyBQYXJhbSB7CisgICAgcHJpdmF0ZSBmaW5hbCBpbnRbXSBpOworCisgICAgcHVibGljIFBhcmFtKGludC4uLiBpKSB7CisgICAgICAgIHRoaXMuaSA9IGk7CisgICAgfQorCisgICAgcHVibGljIGludFtdIGdldEkoKSB7CisgICAgICAgIHJldHVybiBpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXJPYmplY3QvZXhpc3RlbnRCZWFuL2FmdGVyL1Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXJPYmplY3QvZXhpc3RlbnRCZWFuL2FmdGVyL1Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZTBhNGRiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVBhcmFtZXRlck9iamVjdC9leGlzdGVudEJlYW4vYWZ0ZXIvVGVzdC5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKK2NsYXNzIFRlc3QgeworICB2b2lkIGZvbyhQYXJhbSBwYXJhbSkgeworICAgIGlmIChwYXJhbS5nZXRJKCkubGVuZ2h0ID09IDApIHsKKyAgICB9CisgIH0KKworICB2b2lkIGJhcigpeworICAgIGZvbyhuZXcgUGFyYW0oMSwgMikpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVBhcmFtZXRlck9iamVjdC9leGlzdGVudEJlYW4vYmVmb3JlL1BhcmFtLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlUGFyYW1ldGVyT2JqZWN0L2V4aXN0ZW50QmVhbi9iZWZvcmUvUGFyYW0uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYzg4OGJmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVBhcmFtZXRlck9iamVjdC9leGlzdGVudEJlYW4vYmVmb3JlL1BhcmFtLmphdmEKQEAgLTAsMCArMSwxMSBAQAorcHVibGljIGNsYXNzIFBhcmFtIHsKKyAgICBwcml2YXRlIGZpbmFsIGludFtdIGk7CisKKyAgICBwdWJsaWMgUGFyYW0oaW50Li4uIGkpIHsKKyAgICAgICAgdGhpcy5pID0gaTsKKyAgICB9CisKKyAgICBwdWJsaWMgaW50W10gZ2V0SSgpIHsKKyAgICAgICAgcmV0dXJuIGk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVBhcmFtZXRlck9iamVjdC9leGlzdGVudEJlYW4vYmVmb3JlL1Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXJPYmplY3QvZXhpc3RlbnRCZWFuL2JlZm9yZS9UZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzExMTdjYwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXJPYmplY3QvZXhpc3RlbnRCZWFuL2JlZm9yZS9UZXN0LmphdmEKQEAgLTAsMCArMSwxMCBAQAorY2xhc3MgVGVzdCB7CisgIHZvaWQgZm9vKGludC4uLiBpKSB7CisgICAgaWYgKGkubGVuZ2h0ID09IDApIHsKKyAgICB9CisgIH0KKworICB2b2lkIGJhcigpeworICAgIGZvbygxLCAyKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXJPYmplY3QvZXhpc3RpbmdCZWFuSWZOb0dlbmVyYXRpb24vYWZ0ZXIvUGFyYW0uamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXJPYmplY3QvZXhpc3RpbmdCZWFuSWZOb0dlbmVyYXRpb24vYWZ0ZXIvUGFyYW0uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYzg4OGJmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVBhcmFtZXRlck9iamVjdC9leGlzdGluZ0JlYW5JZk5vR2VuZXJhdGlvbi9hZnRlci9QYXJhbS5qYXZhCkBAIC0wLDAgKzEsMTEgQEAKK3B1YmxpYyBjbGFzcyBQYXJhbSB7CisgICAgcHJpdmF0ZSBmaW5hbCBpbnRbXSBpOworCisgICAgcHVibGljIFBhcmFtKGludC4uLiBpKSB7CisgICAgICAgIHRoaXMuaSA9IGk7CisgICAgfQorCisgICAgcHVibGljIGludFtdIGdldEkoKSB7CisgICAgICAgIHJldHVybiBpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXJPYmplY3QvZXhpc3RpbmdCZWFuSWZOb0dlbmVyYXRpb24vYWZ0ZXIvVGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVBhcmFtZXRlck9iamVjdC9leGlzdGluZ0JlYW5JZk5vR2VuZXJhdGlvbi9hZnRlci9UZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGUwYTRkYgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXJPYmplY3QvZXhpc3RpbmdCZWFuSWZOb0dlbmVyYXRpb24vYWZ0ZXIvVGVzdC5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKK2NsYXNzIFRlc3QgeworICB2b2lkIGZvbyhQYXJhbSBwYXJhbSkgeworICAgIGlmIChwYXJhbS5nZXRJKCkubGVuZ2h0ID09IDApIHsKKyAgICB9CisgIH0KKworICB2b2lkIGJhcigpeworICAgIGZvbyhuZXcgUGFyYW0oMSwgMikpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVBhcmFtZXRlck9iamVjdC9leGlzdGluZ0JlYW5JZk5vR2VuZXJhdGlvbi9iZWZvcmUvUGFyYW0uamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXJPYmplY3QvZXhpc3RpbmdCZWFuSWZOb0dlbmVyYXRpb24vYmVmb3JlL1BhcmFtLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmI2YzEzNQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXJPYmplY3QvZXhpc3RpbmdCZWFuSWZOb0dlbmVyYXRpb24vYmVmb3JlL1BhcmFtLmphdmEKQEAgLTAsMCArMSwxMSBAQAorcHVibGljIGNsYXNzIFBhcmFtIHsKKyAgICBwcml2YXRlIGZpbmFsIGludCBpOworCisgICAgcHVibGljIFBhcmFtKGludCBpKSB7CisgICAgICAgIHRoaXMuaSA9IGk7CisgICAgfQorCisgICAgcHVibGljIGludCBnZXRJKCkgeworICAgICAgICByZXR1cm4gaTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlUGFyYW1ldGVyT2JqZWN0L2V4aXN0aW5nQmVhbklmTm9HZW5lcmF0aW9uL2JlZm9yZS9UZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlUGFyYW1ldGVyT2JqZWN0L2V4aXN0aW5nQmVhbklmTm9HZW5lcmF0aW9uL2JlZm9yZS9UZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWNmMWY4YwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXJPYmplY3QvZXhpc3RpbmdCZWFuSWZOb0dlbmVyYXRpb24vYmVmb3JlL1Rlc3QuamF2YQpAQCAtMCwwICsxLDExIEBACitjbGFzcyBUZXN0IHsKKyAgdm9pZCBmb28oaW50IGkpIHsKKyAgICBpZiAoaSA9PSAwKSB7CisgICAgICBpKys7CisgICAgfQorICB9CisKKyAgdm9pZCBiYXIoKXsKKyAgICBmb28oMSwgMik7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlUGFyYW1ldGVyT2JqZWN0L2V4aXN0aW5nQmVhblZpc2liaWxpdHkvYWZ0ZXIvcC9QYXJhbS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVBhcmFtZXRlck9iamVjdC9leGlzdGluZ0JlYW5WaXNpYmlsaXR5L2FmdGVyL3AvUGFyYW0uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMjk1NjUwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVBhcmFtZXRlck9iamVjdC9leGlzdGluZ0JlYW5WaXNpYmlsaXR5L2FmdGVyL3AvUGFyYW0uamF2YQpAQCAtMCwwICsxLDEyIEBACitwYWNrYWdlIHA7CitwdWJsaWMgY2xhc3MgUGFyYW0geworICAgIHByaXZhdGUgZmluYWwgaW50W10gaTsKKworICAgIHB1YmxpYyBQYXJhbShpbnQuLi4gaSkgeworICAgICAgICB0aGlzLmkgPSBpOworICAgIH0KKworICAgIHB1YmxpYyBpbnRbXSBnZXRJKCkgeworICAgICAgICByZXR1cm4gaTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlUGFyYW1ldGVyT2JqZWN0L2V4aXN0aW5nQmVhblZpc2liaWxpdHkvYWZ0ZXIvcDIvVGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVBhcmFtZXRlck9iamVjdC9leGlzdGluZ0JlYW5WaXNpYmlsaXR5L2FmdGVyL3AyL1Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43YjZkNmE1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVBhcmFtZXRlck9iamVjdC9leGlzdGluZ0JlYW5WaXNpYmlsaXR5L2FmdGVyL3AyL1Rlc3QuamF2YQpAQCAtMCwwICsxLDE0IEBACitwYWNrYWdlIHAyOworCitpbXBvcnQgcC5QYXJhbTsKKworY2xhc3MgVGVzdCB7CisgIHZvaWQgZm9vKFBhcmFtIHBhcmFtKSB7CisgICAgaWYgKHBhcmFtLmdldEkoKS5sZW5naHQgPT0gMCkgeworICAgIH0KKyAgfQorCisgIHZvaWQgYmFyKCl7CisgICAgZm9vKG5ldyBQYXJhbSgxLCAyKSk7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlUGFyYW1ldGVyT2JqZWN0L2V4aXN0aW5nQmVhblZpc2liaWxpdHkvYmVmb3JlL3AvUGFyYW0uamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXJPYmplY3QvZXhpc3RpbmdCZWFuVmlzaWJpbGl0eS9iZWZvcmUvcC9QYXJhbS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU5ZWI1MGMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlUGFyYW1ldGVyT2JqZWN0L2V4aXN0aW5nQmVhblZpc2liaWxpdHkvYmVmb3JlL3AvUGFyYW0uamF2YQpAQCAtMCwwICsxLDEyIEBACitwYWNrYWdlIHA7CitjbGFzcyBQYXJhbSB7CisgICAgcHJpdmF0ZSBmaW5hbCBpbnRbXSBpOworCisgICAgUGFyYW0oaW50Li4uIGkpIHsKKyAgICAgICAgdGhpcy5pID0gaTsKKyAgICB9CisKKyAgICBwdWJsaWMgaW50W10gZ2V0SSgpIHsKKyAgICAgICAgcmV0dXJuIGk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVBhcmFtZXRlck9iamVjdC9leGlzdGluZ0JlYW5WaXNpYmlsaXR5L2JlZm9yZS9wMi9UZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlUGFyYW1ldGVyT2JqZWN0L2V4aXN0aW5nQmVhblZpc2liaWxpdHkvYmVmb3JlL3AyL1Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZTYwZjQ5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVBhcmFtZXRlck9iamVjdC9leGlzdGluZ0JlYW5WaXNpYmlsaXR5L2JlZm9yZS9wMi9UZXN0LmphdmEKQEAgLTAsMCArMSwxMSBAQAorcGFja2FnZSBwMjsKK2NsYXNzIFRlc3QgeworICB2b2lkIGZvbyhpbnQuLi4gaSkgeworICAgIGlmIChpLmxlbmdodCA9PSAwKSB7CisgICAgfQorICB9CisKKyAgdm9pZCBiYXIoKXsKKyAgICBmb28oMSwgMik7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlUGFyYW1ldGVyT2JqZWN0L2dlbmVyYXRlR2V0dGVyU2V0dGVyRm9yRXhpc3RpbmdCZWFuL2FmdGVyL1BhcmFtLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlUGFyYW1ldGVyT2JqZWN0L2dlbmVyYXRlR2V0dGVyU2V0dGVyRm9yRXhpc3RpbmdCZWFuL2FmdGVyL1BhcmFtLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGM4ZDlkMQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXJPYmplY3QvZ2VuZXJhdGVHZXR0ZXJTZXR0ZXJGb3JFeGlzdGluZ0JlYW4vYWZ0ZXIvUGFyYW0uamF2YQpAQCAtMCwwICsxLDE1IEBACitwdWJsaWMgY2xhc3MgUGFyYW0geworICAgIHByaXZhdGUgZmluYWwgaW50IGk7CisKKyAgICBwdWJsaWMgUGFyYW0oaW50IGkpIHsKKyAgICAgICAgdGhpcy5pID0gaTsKKyAgICB9CisKKyAgICBwdWJsaWMgaW50IGdldEkoKSB7CisgICAgICAgIHJldHVybiBpOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNldEkoaW50IGkpIHsKKyAgICAgICAgdGhpcy5pID0gaTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlUGFyYW1ldGVyT2JqZWN0L2dlbmVyYXRlR2V0dGVyU2V0dGVyRm9yRXhpc3RpbmdCZWFuL2FmdGVyL1Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXJPYmplY3QvZ2VuZXJhdGVHZXR0ZXJTZXR0ZXJGb3JFeGlzdGluZ0JlYW4vYWZ0ZXIvVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRjZjg5MGIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlUGFyYW1ldGVyT2JqZWN0L2dlbmVyYXRlR2V0dGVyU2V0dGVyRm9yRXhpc3RpbmdCZWFuL2FmdGVyL1Rlc3QuamF2YQpAQCAtMCwwICsxLDExIEBACitjbGFzcyBUZXN0IHsKKyAgdm9pZCBmb28oUGFyYW0gcGFyYW0pIHsKKyAgICBpZiAocGFyYW0uZ2V0SSgpID09IDApIHsKKyAgICAgICAgcGFyYW0uc2V0SShwYXJhbS5nZXRJKCkgKyAxKTsKKyAgICB9CisgIH0KKworICB2b2lkIGJhcigpeworICAgIGZvbyhuZXcgUGFyYW0oMSkpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVBhcmFtZXRlck9iamVjdC9nZW5lcmF0ZUdldHRlclNldHRlckZvckV4aXN0aW5nQmVhbi9iZWZvcmUvUGFyYW0uamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXJPYmplY3QvZ2VuZXJhdGVHZXR0ZXJTZXR0ZXJGb3JFeGlzdGluZ0JlYW4vYmVmb3JlL1BhcmFtLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDUxOTQ2MAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXJPYmplY3QvZ2VuZXJhdGVHZXR0ZXJTZXR0ZXJGb3JFeGlzdGluZ0JlYW4vYmVmb3JlL1BhcmFtLmphdmEKQEAgLTAsMCArMSw3IEBACitwdWJsaWMgY2xhc3MgUGFyYW0geworICAgIHByaXZhdGUgZmluYWwgaW50IGk7CisKKyAgICBwdWJsaWMgUGFyYW0oaW50IGkpIHsKKyAgICAgICAgdGhpcy5pID0gaTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlUGFyYW1ldGVyT2JqZWN0L2dlbmVyYXRlR2V0dGVyU2V0dGVyRm9yRXhpc3RpbmdCZWFuL2JlZm9yZS9UZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlUGFyYW1ldGVyT2JqZWN0L2dlbmVyYXRlR2V0dGVyU2V0dGVyRm9yRXhpc3RpbmdCZWFuL2JlZm9yZS9UZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDc3OTFhZWMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlUGFyYW1ldGVyT2JqZWN0L2dlbmVyYXRlR2V0dGVyU2V0dGVyRm9yRXhpc3RpbmdCZWFuL2JlZm9yZS9UZXN0LmphdmEKQEAgLTAsMCArMSwxMSBAQAorY2xhc3MgVGVzdCB7CisgIHZvaWQgZm9vKGludCBpKSB7CisgICAgaWYgKGkgPT0gMCkgeworICAgICAgaSsrOworICAgIH0KKyAgfQorCisgIHZvaWQgYmFyKCl7CisgICAgZm9vKDEpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVBhcmFtZXRlck9iamVjdC9oaWVyYXJjaHkvYWZ0ZXIvQS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVBhcmFtZXRlck9iamVjdC9oaWVyYXJjaHkvYWZ0ZXIvQS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMwYTY1N2UKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlUGFyYW1ldGVyT2JqZWN0L2hpZXJhcmNoeS9hZnRlci9BLmphdmEKQEAgLTAsMCArMSw5IEBACitjbGFzcyBBIGV4dGVuZHMgVGVzdHsKKyAgIHZvaWQgZm9vKFBhcmFtIHBhcmFtKSB7CisgICAgIFN5c3RlbS5vdXQucHJpbnRsbihwYXJhbS5zZXRJKHBhcmFtLmdldEkoKSArIDEpKTsKKyAgIH0KKworICAgdm9pZCBiYXp6KCl7CisgICAgIGZvbyhuZXcgUGFyYW0oMCkpOworICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXJPYmplY3QvaGllcmFyY2h5L2FmdGVyL0IuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXJPYmplY3QvaGllcmFyY2h5L2FmdGVyL0IuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NDQxMWU3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVBhcmFtZXRlck9iamVjdC9oaWVyYXJjaHkvYWZ0ZXIvQi5qYXZhCkBAIC0wLDAgKzEsOSBAQAorY2xhc3MgQiBleHRlbmRzIFRlc3QgeworICB2b2lkIGZvbyhQYXJhbSBwYXJhbSkgeworICAgIFN5c3RlbS5lcnIucHJpbnRsbihwYXJhbS5zZXRJKHBhcmFtLmdldEkoKSAtIDEpKTsKKyAgfQorCisgIHZvaWQgYmFyKCkgeworICAgIGZvbyhuZXcgUGFyYW0oMSkpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVBhcmFtZXRlck9iamVjdC9oaWVyYXJjaHkvYWZ0ZXIvUGFyYW0uamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXJPYmplY3QvaGllcmFyY2h5L2FmdGVyL1BhcmFtLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGE5ZDJmOQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXJPYmplY3QvaGllcmFyY2h5L2FmdGVyL1BhcmFtLmphdmEKQEAgLTAsMCArMSwxNSBAQAorcHVibGljIGNsYXNzIFBhcmFtIHsKKyAgICBwcml2YXRlIGludCBpOworCisgICAgcHVibGljIFBhcmFtKGludCBpKSB7CisgICAgICAgIHRoaXMuaSA9IGk7CisgICAgfQorCisgICAgcHVibGljIGludCBnZXRJKCkgeworICAgICAgICByZXR1cm4gaTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXRJKGludCBpKSB7CisgICAgICAgIHRoaXMuaSA9IGk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVBhcmFtZXRlck9iamVjdC9oaWVyYXJjaHkvYWZ0ZXIvVGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVBhcmFtZXRlck9iamVjdC9oaWVyYXJjaHkvYWZ0ZXIvVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQxZmI4YjUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlUGFyYW1ldGVyT2JqZWN0L2hpZXJhcmNoeS9hZnRlci9UZXN0LmphdmEKQEAgLTAsMCArMSw5IEBACitjbGFzcyBUZXN0IHsKKyAgdm9pZCBmb28oUGFyYW0gcGFyYW0pIHsKKyAgICAgIHBhcmFtLnNldEkocGFyYW0uZ2V0SSgpICsgMSk7CisgIH0KKworICB2b2lkIGJhcigpeworICAgIGZvbyhuZXcgUGFyYW0oMSkpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVBhcmFtZXRlck9iamVjdC9oaWVyYXJjaHkvYmVmb3JlL0EuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXJPYmplY3QvaGllcmFyY2h5L2JlZm9yZS9BLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzhiZjhlZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXJPYmplY3QvaGllcmFyY2h5L2JlZm9yZS9BLmphdmEKQEAgLTAsMCArMSw5IEBACitjbGFzcyBBIGV4dGVuZHMgVGVzdHsKKyAgIHZvaWQgZm9vKGludCBpKSB7CisgICAgIFN5c3RlbS5vdXQucHJpbnRsbihpKyspOworICAgfQorCisgICB2b2lkIGJhenooKXsKKyAgICAgZm9vKDApOworICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXJPYmplY3QvaGllcmFyY2h5L2JlZm9yZS9CLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlUGFyYW1ldGVyT2JqZWN0L2hpZXJhcmNoeS9iZWZvcmUvQi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBkOTk1YTIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlUGFyYW1ldGVyT2JqZWN0L2hpZXJhcmNoeS9iZWZvcmUvQi5qYXZhCkBAIC0wLDAgKzEsOSBAQAorY2xhc3MgQiBleHRlbmRzIFRlc3QgeworICB2b2lkIGZvbyhpbnQgaSkgeworICAgIFN5c3RlbS5lcnIucHJpbnRsbigtLWkpOworICB9CisKKyAgdm9pZCBiYXIoKSB7CisgICAgZm9vKDEpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVBhcmFtZXRlck9iamVjdC9oaWVyYXJjaHkvYmVmb3JlL1Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXJPYmplY3QvaGllcmFyY2h5L2JlZm9yZS9UZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzZjOGM5NAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXJPYmplY3QvaGllcmFyY2h5L2JlZm9yZS9UZXN0LmphdmEKQEAgLTAsMCArMSw5IEBACitjbGFzcyBUZXN0IHsKKyAgdm9pZCBmb28oaW50IGkpIHsKKyAgICBpKys7CisgIH0KKworICB2b2lkIGJhcigpeworICAgIGZvbygxKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXJPYmplY3QvaW5jcmVtZW50L2FmdGVyL1BhcmFtLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlUGFyYW1ldGVyT2JqZWN0L2luY3JlbWVudC9hZnRlci9QYXJhbS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRhOWQyZjkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlUGFyYW1ldGVyT2JqZWN0L2luY3JlbWVudC9hZnRlci9QYXJhbS5qYXZhCkBAIC0wLDAgKzEsMTUgQEAKK3B1YmxpYyBjbGFzcyBQYXJhbSB7CisgICAgcHJpdmF0ZSBpbnQgaTsKKworICAgIHB1YmxpYyBQYXJhbShpbnQgaSkgeworICAgICAgICB0aGlzLmkgPSBpOworICAgIH0KKworICAgIHB1YmxpYyBpbnQgZ2V0SSgpIHsKKyAgICAgICAgcmV0dXJuIGk7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgc2V0SShpbnQgaSkgeworICAgICAgICB0aGlzLmkgPSBpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXJPYmplY3QvaW5jcmVtZW50L2FmdGVyL1Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXJPYmplY3QvaW5jcmVtZW50L2FmdGVyL1Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NzFmNDVmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVBhcmFtZXRlck9iamVjdC9pbmNyZW1lbnQvYWZ0ZXIvVGVzdC5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKK2NsYXNzIFRlc3QgeworICB2b2lkIGZvbyhQYXJhbSBwYXJhbSkgeworICAgICAgcGFyYW0uc2V0SShwYXJhbS5nZXRJKCkgKyAxKTsKKyAgICAgIGlmIChwYXJhbS5nZXRJKCkgPT0gMCkgOworICB9CisKKyAgdm9pZCBiYXIoKXsKKyAgICBmb28obmV3IFBhcmFtKDEpKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXJPYmplY3QvaW5jcmVtZW50L2JlZm9yZS9UZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlUGFyYW1ldGVyT2JqZWN0L2luY3JlbWVudC9iZWZvcmUvVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMyMWY4OWQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlUGFyYW1ldGVyT2JqZWN0L2luY3JlbWVudC9iZWZvcmUvVGVzdC5qYXZhCkBAIC0wLDAgKzEsOSBAQAorY2xhc3MgVGVzdCB7CisgIHZvaWQgZm9vKGludCBpKSB7CisgICAgaWYgKGkrKyA9PSAwKSA7CisgIH0KKworICB2b2lkIGJhcigpeworICAgIGZvbygxKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXJPYmplY3QvaW5uZXJDbGFzcy9hZnRlci9UZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlUGFyYW1ldGVyT2JqZWN0L2lubmVyQ2xhc3MvYWZ0ZXIvVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM4MTk5MzcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlUGFyYW1ldGVyT2JqZWN0L2lubmVyQ2xhc3MvYWZ0ZXIvVGVzdC5qYXZhCkBAIC0wLDAgKzEsMTkgQEAKK2NsYXNzIFRlc3QgeworICB2b2lkIGZvbyhQYXJhbSBwYXJhbSkgeworICAgIGJhcihwYXJhbS5nZXRTKCkpOworICB9CisKKyAgdm9pZCBiYXIoU3RyaW5nIHMpe30KKworICAgIHByaXZhdGUgc3RhdGljIGNsYXNzIFBhcmFtIHsKKyAgICAgICAgcHJpdmF0ZSBmaW5hbCBTdHJpbmcgczsKKworICAgICAgICBwcml2YXRlIFBhcmFtKFN0cmluZyBzKSB7CisgICAgICAgICAgICB0aGlzLnMgPSBzOworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIFN0cmluZyBnZXRTKCkgeworICAgICAgICAgICAgcmV0dXJuIHM7CisgICAgICAgIH0KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVBhcmFtZXRlck9iamVjdC9pbm5lckNsYXNzL2JlZm9yZS9UZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlUGFyYW1ldGVyT2JqZWN0L2lubmVyQ2xhc3MvYmVmb3JlL1Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45YTIwYmM0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVBhcmFtZXRlck9iamVjdC9pbm5lckNsYXNzL2JlZm9yZS9UZXN0LmphdmEKQEAgLTAsMCArMSw3IEBACitjbGFzcyBUZXN0IHsKKyAgdm9pZCBmb28oU3RyaW5nIHMpIHsKKyAgICBiYXIocyk7CisgIH0KKworICB2b2lkIGJhcihTdHJpbmcgcyl7fQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXJPYmplY3QvaW5uZXJDbGFzc0luSW50ZXJmYWNlL2FmdGVyL1Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXJPYmplY3QvaW5uZXJDbGFzc0luSW50ZXJmYWNlL2FmdGVyL1Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZDk3M2E2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVBhcmFtZXRlck9iamVjdC9pbm5lckNsYXNzSW5JbnRlcmZhY2UvYWZ0ZXIvVGVzdC5qYXZhCkBAIC0wLDAgKzEsMjAgQEAKK3B1YmxpYyBpbnRlcmZhY2UgVGVzdCB7CisgIHZvaWQgZm9vKFBhcmFtIHBhcmFtKTsKKworICAgIHByaXZhdGUgc3RhdGljIGNsYXNzIFBhcmFtIHsKKyAgICAgICAgcHJpdmF0ZSBmaW5hbCBTdHJpbmcgczsKKworICAgICAgICBwcml2YXRlIFBhcmFtKFN0cmluZyBzKSB7CisgICAgICAgICAgICB0aGlzLnMgPSBzOworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIFN0cmluZyBnZXRTKCkgeworICAgICAgICAgICAgcmV0dXJuIHM7CisgICAgICAgIH0KKyAgICB9Cit9CisKK2NsYXNzIFRlc3RJbXBsIGltcGxlbWVudHMgVGVzdCB7CisgIHZvaWQgZm9vKFRlc3QuUGFyYW0gcGFyYW0pe30KK30KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVBhcmFtZXRlck9iamVjdC9pbm5lckNsYXNzSW5JbnRlcmZhY2UvYmVmb3JlL1Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXJPYmplY3QvaW5uZXJDbGFzc0luSW50ZXJmYWNlL2JlZm9yZS9UZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWYzYWViYQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXJPYmplY3QvaW5uZXJDbGFzc0luSW50ZXJmYWNlL2JlZm9yZS9UZXN0LmphdmEKQEAgLTAsMCArMSw4IEBACitwdWJsaWMgaW50ZXJmYWNlIFRlc3QgeworICB2b2lkIGZvbyhTdHJpbmcgcyk7Cit9CisKK2NsYXNzIFRlc3RJbXBsIGltcGxlbWVudHMgVGVzdCB7CisgIHZvaWQgZm9vKFN0cmluZyBzKXt9Cit9CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXJPYmplY3QvaW50ZWdlckluY3JlbWVudGFsL2FmdGVyL1Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXJPYmplY3QvaW50ZWdlckluY3JlbWVudGFsL2FmdGVyL1Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NzczNWJlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVBhcmFtZXRlck9iamVjdC9pbnRlZ2VySW5jcmVtZW50YWwvYWZ0ZXIvVGVzdC5qYXZhCkBAIC0wLDAgKzEsOSBAQAorY2xhc3MgVGVzdCB7CisgIHZvaWQgZm9vKEludGVnZXIgaW50ZWdlcikgeworICAgIGludGVnZXIuaW50VmFsdWUoKSArIDE7CisgIH0KKworICB2b2lkIGJhcigpeworICAgIGZvbyhuZXcgSW50ZWdlcigxKSk7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlUGFyYW1ldGVyT2JqZWN0L2ludGVnZXJJbmNyZW1lbnRhbC9iZWZvcmUvVGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVBhcmFtZXRlck9iamVjdC9pbnRlZ2VySW5jcmVtZW50YWwvYmVmb3JlL1Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNmM4Yzk0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVBhcmFtZXRlck9iamVjdC9pbnRlZ2VySW5jcmVtZW50YWwvYmVmb3JlL1Rlc3QuamF2YQpAQCAtMCwwICsxLDkgQEAKK2NsYXNzIFRlc3QgeworICB2b2lkIGZvbyhpbnQgaSkgeworICAgIGkrKzsKKyAgfQorCisgIHZvaWQgYmFyKCl7CisgICAgZm9vKDEpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVBhcmFtZXRlck9iamVjdC9pbnRlZ2VyV3JhcHBlci9hZnRlci9UZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlUGFyYW1ldGVyT2JqZWN0L2ludGVnZXJXcmFwcGVyL2FmdGVyL1Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMjg2ZTAxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVBhcmFtZXRlck9iamVjdC9pbnRlZ2VyV3JhcHBlci9hZnRlci9UZXN0LmphdmEKQEAgLTAsMCArMSwxMCBAQAorY2xhc3MgVGVzdCB7CisgIHZvaWQgZm9vKEludGVnZXIgaW50ZWdlcikgeworICAgIGlmIChpbnRlZ2VyLmludFZhbHVlKCkgPT0gMCkgeworICAgIH0KKyAgfQorCisgIHZvaWQgYmFyKCl7CisgICAgZm9vKG5ldyBJbnRlZ2VyKDEpKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXJPYmplY3QvaW50ZWdlcldyYXBwZXIvYmVmb3JlL1Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXJPYmplY3QvaW50ZWdlcldyYXBwZXIvYmVmb3JlL1Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mOTNkM2ZmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVBhcmFtZXRlck9iamVjdC9pbnRlZ2VyV3JhcHBlci9iZWZvcmUvVGVzdC5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKK2NsYXNzIFRlc3QgeworICB2b2lkIGZvbyhpbnQgaSkgeworICAgIGlmIChpID09IDApIHsKKyAgICB9CisgIH0KKworICB2b2lkIGJhcigpeworICAgIGZvbygxKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXJPYmplY3QvbGhhc3NpZ25tZW50L2FmdGVyL1BhcmFtLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlUGFyYW1ldGVyT2JqZWN0L2xoYXNzaWdubWVudC9hZnRlci9QYXJhbS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRhOWQyZjkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlUGFyYW1ldGVyT2JqZWN0L2xoYXNzaWdubWVudC9hZnRlci9QYXJhbS5qYXZhCkBAIC0wLDAgKzEsMTUgQEAKK3B1YmxpYyBjbGFzcyBQYXJhbSB7CisgICAgcHJpdmF0ZSBpbnQgaTsKKworICAgIHB1YmxpYyBQYXJhbShpbnQgaSkgeworICAgICAgICB0aGlzLmkgPSBpOworICAgIH0KKworICAgIHB1YmxpYyBpbnQgZ2V0SSgpIHsKKyAgICAgICAgcmV0dXJuIGk7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgc2V0SShpbnQgaSkgeworICAgICAgICB0aGlzLmkgPSBpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXJPYmplY3QvbGhhc3NpZ25tZW50L2FmdGVyL1Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXJPYmplY3QvbGhhc3NpZ25tZW50L2FmdGVyL1Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MmZjM2U0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVBhcmFtZXRlck9iamVjdC9saGFzc2lnbm1lbnQvYWZ0ZXIvVGVzdC5qYXZhCkBAIC0wLDAgKzEsMTEgQEAKK2NsYXNzIFRlc3QgeworICB2b2lkIGZvbyhQYXJhbSBwYXJhbSkgeworICAgIGlmIChwYXJhbS5nZXRJKCkgPT0gMCkgeworICAgICAgICBwYXJhbS5zZXRJKDkpOworICAgIH0KKyAgfQorCisgIHZvaWQgYmFyKCl7CisgICAgZm9vKG5ldyBQYXJhbSgxKSk7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlUGFyYW1ldGVyT2JqZWN0L2xoYXNzaWdubWVudC9iZWZvcmUvVGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVBhcmFtZXRlck9iamVjdC9saGFzc2lnbm1lbnQvYmVmb3JlL1Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMGJiMzgwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVBhcmFtZXRlck9iamVjdC9saGFzc2lnbm1lbnQvYmVmb3JlL1Rlc3QuamF2YQpAQCAtMCwwICsxLDExIEBACitjbGFzcyBUZXN0IHsKKyAgdm9pZCBmb28oaW50IGkpIHsKKyAgICBpZiAoaSA9PSAwKSB7CisgICAgICAgIGkgPSA5OworICAgIH0KKyAgfQorCisgIHZvaWQgYmFyKCl7CisgICAgZm9vKDEpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVBhcmFtZXRlck9iamVjdC9tdWx0aXBsZVR5cGVQYXJhbWV0ZXJzL2FmdGVyL0EuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXJPYmplY3QvbXVsdGlwbGVUeXBlUGFyYW1ldGVycy9hZnRlci9BLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDdlYjUyOQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXJPYmplY3QvbXVsdGlwbGVUeXBlUGFyYW1ldGVycy9hZnRlci9BLmphdmEKQEAgLTAsMCArMSwzIEBACitjbGFzcyBBPEcsIFQ+IGV4dGVuZHMgVGVzdDxHLCBUPnsKKyAgdm9pZCBmb28oUGFyYW08VD4gcGFyYW0pe30KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlUGFyYW1ldGVyT2JqZWN0L211bHRpcGxlVHlwZVBhcmFtZXRlcnMvYWZ0ZXIvUGFyYW0uamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXJPYmplY3QvbXVsdGlwbGVUeXBlUGFyYW1ldGVycy9hZnRlci9QYXJhbS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAyYzJlN2QzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVBhcmFtZXRlck9iamVjdC9tdWx0aXBsZVR5cGVQYXJhbWV0ZXJzL2FmdGVyL1BhcmFtLmphdmEKQEAgLTAsMCArMSwxMSBAQAorcHVibGljIGNsYXNzIFBhcmFtPFI+IHsKKyAgICBwcml2YXRlIGZpbmFsIFIgcjsKKworICAgIHB1YmxpYyBQYXJhbShSIHIpIHsKKyAgICAgICAgdGhpcy5yID0gcjsKKyAgICB9CisKKyAgICBwdWJsaWMgUiBnZXRSKCkgeworICAgICAgICByZXR1cm4gcjsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlUGFyYW1ldGVyT2JqZWN0L211bHRpcGxlVHlwZVBhcmFtZXRlcnMvYWZ0ZXIvVGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVBhcmFtZXRlck9iamVjdC9tdWx0aXBsZVR5cGVQYXJhbWV0ZXJzL2FmdGVyL1Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMzczYWY1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVBhcmFtZXRlck9iamVjdC9tdWx0aXBsZVR5cGVQYXJhbWV0ZXJzL2FmdGVyL1Rlc3QuamF2YQpAQCAtMCwwICsxLDEwIEBACitjbGFzcyBUZXN0PEcsIFI+IHsKKyAgdm9pZCBmb28oUGFyYW08Uj4gcGFyYW0pIHsKKyAgICBpZiAocGFyYW0uZ2V0UigpID09IG51bGwpIHsKKyAgICB9CisgIH0KKworICB2b2lkIGJhcihSIHIpeworICAgIGZvbyhuZXcgUGFyYW08Uj4ocikpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVBhcmFtZXRlck9iamVjdC9tdWx0aXBsZVR5cGVQYXJhbWV0ZXJzL2JlZm9yZS9BLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlUGFyYW1ldGVyT2JqZWN0L211bHRpcGxlVHlwZVBhcmFtZXRlcnMvYmVmb3JlL0EuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZTk4ZDgyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVBhcmFtZXRlck9iamVjdC9tdWx0aXBsZVR5cGVQYXJhbWV0ZXJzL2JlZm9yZS9BLmphdmEKQEAgLTAsMCArMSwzIEBACitjbGFzcyBBPEcsIFQ+IGV4dGVuZHMgVGVzdDxHLCBUPnsKKyAgdm9pZCBmb28oVCB0KXt9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVBhcmFtZXRlck9iamVjdC9tdWx0aXBsZVR5cGVQYXJhbWV0ZXJzL2JlZm9yZS9UZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlUGFyYW1ldGVyT2JqZWN0L211bHRpcGxlVHlwZVBhcmFtZXRlcnMvYmVmb3JlL1Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMjA5YjJmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVBhcmFtZXRlck9iamVjdC9tdWx0aXBsZVR5cGVQYXJhbWV0ZXJzL2JlZm9yZS9UZXN0LmphdmEKQEAgLTAsMCArMSwxMCBAQAorY2xhc3MgVGVzdDxHLCBSPiB7CisgIHZvaWQgZm9vKFIgcikgeworICAgIGlmIChyID09IG51bGwpIHsKKyAgICB9CisgIH0KKworICB2b2lkIGJhcihSIHIpeworICAgIGZvbyhyKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXJPYmplY3QvcGFyYW1OYW1lQ29uZmxpY3QvYWZ0ZXIvUGFyYW0uamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXJPYmplY3QvcGFyYW1OYW1lQ29uZmxpY3QvYWZ0ZXIvUGFyYW0uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYzg4OGJmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVBhcmFtZXRlck9iamVjdC9wYXJhbU5hbWVDb25mbGljdC9hZnRlci9QYXJhbS5qYXZhCkBAIC0wLDAgKzEsMTEgQEAKK3B1YmxpYyBjbGFzcyBQYXJhbSB7CisgICAgcHJpdmF0ZSBmaW5hbCBpbnRbXSBpOworCisgICAgcHVibGljIFBhcmFtKGludC4uLiBpKSB7CisgICAgICAgIHRoaXMuaSA9IGk7CisgICAgfQorCisgICAgcHVibGljIGludFtdIGdldEkoKSB7CisgICAgICAgIHJldHVybiBpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXJPYmplY3QvcGFyYW1OYW1lQ29uZmxpY3QvYWZ0ZXIvVGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVBhcmFtZXRlck9iamVjdC9wYXJhbU5hbWVDb25mbGljdC9hZnRlci9UZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGYxODZiMQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXJPYmplY3QvcGFyYW1OYW1lQ29uZmxpY3QvYWZ0ZXIvVGVzdC5qYXZhCkBAIC0wLDAgKzEsMTEgQEAKK2NsYXNzIFRlc3QgeworICB2b2lkIGZvbyhQYXJhbSBwYXJhbTEpIHsKKyAgICBpZiAocGFyYW0xLmdldEkoKS5sZW5naHQgPT0gMCkgeworICAgIH0KKyAgICBQYXJhbSBwYXJhbSA9IG51bGw7CisgIH0KKworICB2b2lkIGJhcigpeworICAgIGZvbyhuZXcgUGFyYW0oMSwgMikpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVBhcmFtZXRlck9iamVjdC9wYXJhbU5hbWVDb25mbGljdC9iZWZvcmUvUGFyYW0uamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXJPYmplY3QvcGFyYW1OYW1lQ29uZmxpY3QvYmVmb3JlL1BhcmFtLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGM4ODhiZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXJPYmplY3QvcGFyYW1OYW1lQ29uZmxpY3QvYmVmb3JlL1BhcmFtLmphdmEKQEAgLTAsMCArMSwxMSBAQAorcHVibGljIGNsYXNzIFBhcmFtIHsKKyAgICBwcml2YXRlIGZpbmFsIGludFtdIGk7CisKKyAgICBwdWJsaWMgUGFyYW0oaW50Li4uIGkpIHsKKyAgICAgICAgdGhpcy5pID0gaTsKKyAgICB9CisKKyAgICBwdWJsaWMgaW50W10gZ2V0SSgpIHsKKyAgICAgICAgcmV0dXJuIGk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVBhcmFtZXRlck9iamVjdC9wYXJhbU5hbWVDb25mbGljdC9iZWZvcmUvVGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVBhcmFtZXRlck9iamVjdC9wYXJhbU5hbWVDb25mbGljdC9iZWZvcmUvVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY1YzU4NWMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlUGFyYW1ldGVyT2JqZWN0L3BhcmFtTmFtZUNvbmZsaWN0L2JlZm9yZS9UZXN0LmphdmEKQEAgLTAsMCArMSwxMSBAQAorY2xhc3MgVGVzdCB7CisgIHZvaWQgZm9vKGludC4uLiBpKSB7CisgICAgaWYgKGkubGVuZ2h0ID09IDApIHsKKyAgICB9CisgICAgUGFyYW0gcGFyYW0gPSBudWxsOworICB9CisKKyAgdm9pZCBiYXIoKXsKKyAgICBmb28oMSwgMik7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlUGFyYW1ldGVyT2JqZWN0L3ByaW1pdGl2ZS9hZnRlci9QYXJhbS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVBhcmFtZXRlck9iamVjdC9wcmltaXRpdmUvYWZ0ZXIvUGFyYW0uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYjZjMTM1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVBhcmFtZXRlck9iamVjdC9wcmltaXRpdmUvYWZ0ZXIvUGFyYW0uamF2YQpAQCAtMCwwICsxLDExIEBACitwdWJsaWMgY2xhc3MgUGFyYW0geworICAgIHByaXZhdGUgZmluYWwgaW50IGk7CisKKyAgICBwdWJsaWMgUGFyYW0oaW50IGkpIHsKKyAgICAgICAgdGhpcy5pID0gaTsKKyAgICB9CisKKyAgICBwdWJsaWMgaW50IGdldEkoKSB7CisgICAgICAgIHJldHVybiBpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXJPYmplY3QvcHJpbWl0aXZlL2FmdGVyL1Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXJPYmplY3QvcHJpbWl0aXZlL2FmdGVyL1Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NmI3ZGE2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVBhcmFtZXRlck9iamVjdC9wcmltaXRpdmUvYWZ0ZXIvVGVzdC5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKK2NsYXNzIFRlc3QgeworICB2b2lkIGZvbyhQYXJhbSBwYXJhbSkgeworICAgIGlmIChwYXJhbS5nZXRJKCkgPT0gMCkgeworICAgIH0KKyAgfQorCisgIHZvaWQgYmFyKCl7CisgICAgZm9vKG5ldyBQYXJhbSgxKSk7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlUGFyYW1ldGVyT2JqZWN0L3ByaW1pdGl2ZS9iZWZvcmUvVGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVBhcmFtZXRlck9iamVjdC9wcmltaXRpdmUvYmVmb3JlL1Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mOTNkM2ZmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVBhcmFtZXRlck9iamVjdC9wcmltaXRpdmUvYmVmb3JlL1Rlc3QuamF2YQpAQCAtMCwwICsxLDEwIEBACitjbGFzcyBUZXN0IHsKKyAgdm9pZCBmb28oaW50IGkpIHsKKyAgICBpZiAoaSA9PSAwKSB7CisgICAgfQorICB9CisKKyAgdm9pZCBiYXIoKXsKKyAgICBmb28oMSk7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlUGFyYW1ldGVyT2JqZWN0L3NhbWVUeXBlQW5kVmFyYXJncy9hZnRlci9QYXJhbS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVBhcmFtZXRlck9iamVjdC9zYW1lVHlwZUFuZFZhcmFyZ3MvYWZ0ZXIvUGFyYW0uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44OTRiNzYxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVBhcmFtZXRlck9iamVjdC9zYW1lVHlwZUFuZFZhcmFyZ3MvYWZ0ZXIvUGFyYW0uamF2YQpAQCAtMCwwICsxLDE3IEBACitwdWJsaWMgY2xhc3MgUGFyYW0geworICAgIHByaXZhdGUgZmluYWwgU3RyaW5nIGE7CisgICAgcHJpdmF0ZSBmaW5hbCBTdHJpbmcgYjsKKworICAgIHB1YmxpYyBQYXJhbShTdHJpbmcgYSwgU3RyaW5nIGIpIHsKKyAgICAgICAgdGhpcy5hID0gYTsKKyAgICAgICAgdGhpcy5iID0gYjsKKyAgICB9CisKKyAgICBwdWJsaWMgU3RyaW5nIGdldEEoKSB7CisgICAgICAgIHJldHVybiBhOworICAgIH0KKworICAgIHB1YmxpYyBTdHJpbmcgZ2V0QigpIHsKKyAgICAgICAgcmV0dXJuIGI7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVBhcmFtZXRlck9iamVjdC9zYW1lVHlwZUFuZFZhcmFyZ3MvYWZ0ZXIvVGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVBhcmFtZXRlck9iamVjdC9zYW1lVHlwZUFuZFZhcmFyZ3MvYWZ0ZXIvVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRiN2RiZGEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlUGFyYW1ldGVyT2JqZWN0L3NhbWVUeXBlQW5kVmFyYXJncy9hZnRlci9UZXN0LmphdmEKQEAgLTAsMCArMSwzMCBAQAorLyoKKyogQ29weXJpZ2h0IDIwMDAtMjAxMSBKZXRCcmFpbnMgcy5yLm8uCisqCisqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorKgorKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyoKKyogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyovCitpbnRlcmZhY2UgVGVzdCB7CisgIHZvaWQgZm9vKFBhcmFtIHBhcmFtLCBTdHJpbmcuLi4gdik7Cit9CisKK2NsYXNzIFRlc3RJbXBsIGltcGxlbWVudHMgVGVzdCB7CisgIEBPdmVycmlkZQorICBwdWJsaWMgdm9pZCBmb28oUGFyYW0gcGFyYW0sIFN0cmluZy4uLiB2KSB7CisgIH0KKworICB2b2lkIGJhcigpeworICAgICBmb28obmV3IFBhcmFtKCJhIiwgImIiKSwgImMiKTsKKyAgICAgZm9vKG5ldyBQYXJhbSgiYSIsICJiIikpOworICAgICBmb28obmV3IFBhcmFtKCJhIiwgImIiKSwgImMiLCAiZCIpOworICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXJPYmplY3Qvc2FtZVR5cGVBbmRWYXJhcmdzL2JlZm9yZS9UZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlUGFyYW1ldGVyT2JqZWN0L3NhbWVUeXBlQW5kVmFyYXJncy9iZWZvcmUvVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI0YmViYmYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlUGFyYW1ldGVyT2JqZWN0L3NhbWVUeXBlQW5kVmFyYXJncy9iZWZvcmUvVGVzdC5qYXZhCkBAIC0wLDAgKzEsMzAgQEAKKy8qCisqIENvcHlyaWdodCAyMDAwLTIwMTEgSmV0QnJhaW5zIHMuci5vLgorKgorKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyoKKyogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisqCisqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisqLworaW50ZXJmYWNlIFRlc3QgeworICB2b2lkIGZvbyhTdHJpbmcgYSwgU3RyaW5nIGIsIFN0cmluZy4uLiB2KTsKK30KKworY2xhc3MgVGVzdEltcGwgaW1wbGVtZW50cyBUZXN0IHsKKyAgQE92ZXJyaWRlCisgIHB1YmxpYyB2b2lkIGZvbyhTdHJpbmcgYSwgU3RyaW5nIGIsIFN0cmluZy4uLiB2KSB7CisgIH0KKworICB2b2lkIGJhcigpeworICAgICBmb28oImEiLCAiYiIsICJjIik7CisgICAgIGZvbygiYSIsICJiIik7CisgICAgIGZvbygiYSIsICJiIiwgImMiLCAiZCIpOworICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXJPYmplY3Qvc3VwZXJDYWxscy9hZnRlci9BLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlUGFyYW1ldGVyT2JqZWN0L3N1cGVyQ2FsbHMvYWZ0ZXIvQS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJkN2I3ZDAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlUGFyYW1ldGVyT2JqZWN0L3N1cGVyQ2FsbHMvYWZ0ZXIvQS5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKK2NsYXNzIEEgZXh0ZW5kcyBUZXN0eworICAgdm9pZCBmb28oUGFyYW0gcGFyYW0pIHsKKyAgICAgc3VwZXIuZm9vKHBhcmFtKTsKKyAgICAgU3lzdGVtLm91dC5wcmludGxuKHBhcmFtLnNldEkocGFyYW0uZ2V0SSgpICsgMSkpOworICAgfQorCisgICB2b2lkIGJhenooKXsKKyAgICAgZm9vKG5ldyBQYXJhbSgwKSk7CisgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVBhcmFtZXRlck9iamVjdC9zdXBlckNhbGxzL2FmdGVyL0IuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXJPYmplY3Qvc3VwZXJDYWxscy9hZnRlci9CLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWRiMDVlNgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXJPYmplY3Qvc3VwZXJDYWxscy9hZnRlci9CLmphdmEKQEAgLTAsMCArMSwxMCBAQAorY2xhc3MgQiBleHRlbmRzIFRlc3QgeworICB2b2lkIGZvbyhQYXJhbSBwYXJhbSkgeworICAgIHN1cGVyLmZvbyhwYXJhbSk7CisgICAgU3lzdGVtLmVyci5wcmludGxuKHBhcmFtLnNldEkocGFyYW0uZ2V0SSgpIC0gMSkpOworICB9CisKKyAgdm9pZCBiYXIoKSB7CisgICAgZm9vKG5ldyBQYXJhbSgxKSk7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlUGFyYW1ldGVyT2JqZWN0L3N1cGVyQ2FsbHMvYWZ0ZXIvUGFyYW0uamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXJPYmplY3Qvc3VwZXJDYWxscy9hZnRlci9QYXJhbS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRhOWQyZjkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlUGFyYW1ldGVyT2JqZWN0L3N1cGVyQ2FsbHMvYWZ0ZXIvUGFyYW0uamF2YQpAQCAtMCwwICsxLDE1IEBACitwdWJsaWMgY2xhc3MgUGFyYW0geworICAgIHByaXZhdGUgaW50IGk7CisKKyAgICBwdWJsaWMgUGFyYW0oaW50IGkpIHsKKyAgICAgICAgdGhpcy5pID0gaTsKKyAgICB9CisKKyAgICBwdWJsaWMgaW50IGdldEkoKSB7CisgICAgICAgIHJldHVybiBpOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNldEkoaW50IGkpIHsKKyAgICAgICAgdGhpcy5pID0gaTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlUGFyYW1ldGVyT2JqZWN0L3N1cGVyQ2FsbHMvYWZ0ZXIvVGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVBhcmFtZXRlck9iamVjdC9zdXBlckNhbGxzL2FmdGVyL1Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMWZiOGI1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVBhcmFtZXRlck9iamVjdC9zdXBlckNhbGxzL2FmdGVyL1Rlc3QuamF2YQpAQCAtMCwwICsxLDkgQEAKK2NsYXNzIFRlc3QgeworICB2b2lkIGZvbyhQYXJhbSBwYXJhbSkgeworICAgICAgcGFyYW0uc2V0SShwYXJhbS5nZXRJKCkgKyAxKTsKKyAgfQorCisgIHZvaWQgYmFyKCl7CisgICAgZm9vKG5ldyBQYXJhbSgxKSk7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlUGFyYW1ldGVyT2JqZWN0L3N1cGVyQ2FsbHMvYmVmb3JlL0EuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXJPYmplY3Qvc3VwZXJDYWxscy9iZWZvcmUvQS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEzMWVkZTUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlUGFyYW1ldGVyT2JqZWN0L3N1cGVyQ2FsbHMvYmVmb3JlL0EuamF2YQpAQCAtMCwwICsxLDEwIEBACitjbGFzcyBBIGV4dGVuZHMgVGVzdHsKKyAgIHZvaWQgZm9vKGludCBpKSB7CisgICAgIHN1cGVyLmZvbyhpKTsKKyAgICAgU3lzdGVtLm91dC5wcmludGxuKGkrKyk7CisgICB9CisKKyAgIHZvaWQgYmF6eigpeworICAgICBmb28oMCk7CisgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVBhcmFtZXRlck9iamVjdC9zdXBlckNhbGxzL2JlZm9yZS9CLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlUGFyYW1ldGVyT2JqZWN0L3N1cGVyQ2FsbHMvYmVmb3JlL0IuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NTAwMGFlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVBhcmFtZXRlck9iamVjdC9zdXBlckNhbGxzL2JlZm9yZS9CLmphdmEKQEAgLTAsMCArMSwxMCBAQAorY2xhc3MgQiBleHRlbmRzIFRlc3QgeworICB2b2lkIGZvbyhpbnQgaSkgeworICAgIHN1cGVyLmZvbyhpKTsKKyAgICBTeXN0ZW0uZXJyLnByaW50bG4oLS1pKTsKKyAgfQorCisgIHZvaWQgYmFyKCkgeworICAgIGZvbygxKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXJPYmplY3Qvc3VwZXJDYWxscy9iZWZvcmUvVGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVBhcmFtZXRlck9iamVjdC9zdXBlckNhbGxzL2JlZm9yZS9UZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzZjOGM5NAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXJPYmplY3Qvc3VwZXJDYWxscy9iZWZvcmUvVGVzdC5qYXZhCkBAIC0wLDAgKzEsOSBAQAorY2xhc3MgVGVzdCB7CisgIHZvaWQgZm9vKGludCBpKSB7CisgICAgaSsrOworICB9CisKKyAgdm9pZCBiYXIoKXsKKyAgICBmb28oMSk7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlUGFyYW1ldGVyT2JqZWN0L3R5cGVQYXJhbWV0ZXJzL2FmdGVyL0EuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXJPYmplY3QvdHlwZVBhcmFtZXRlcnMvYWZ0ZXIvQS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUwOTQ5NzkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlUGFyYW1ldGVyT2JqZWN0L3R5cGVQYXJhbWV0ZXJzL2FmdGVyL0EuamF2YQpAQCAtMCwwICsxLDMgQEAKK2NsYXNzIEE8VD4gZXh0ZW5kcyBUZXN0PFQ+eworICB2b2lkIGZvbyhQYXJhbTxUPiBwYXJhbSl7fQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXJPYmplY3QvdHlwZVBhcmFtZXRlcnMvYWZ0ZXIvUGFyYW0uamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXJPYmplY3QvdHlwZVBhcmFtZXRlcnMvYWZ0ZXIvUGFyYW0uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMmMyZTdkMwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXJPYmplY3QvdHlwZVBhcmFtZXRlcnMvYWZ0ZXIvUGFyYW0uamF2YQpAQCAtMCwwICsxLDExIEBACitwdWJsaWMgY2xhc3MgUGFyYW08Uj4geworICAgIHByaXZhdGUgZmluYWwgUiByOworCisgICAgcHVibGljIFBhcmFtKFIgcikgeworICAgICAgICB0aGlzLnIgPSByOworICAgIH0KKworICAgIHB1YmxpYyBSIGdldFIoKSB7CisgICAgICAgIHJldHVybiByOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXJPYmplY3QvdHlwZVBhcmFtZXRlcnMvYWZ0ZXIvVGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVBhcmFtZXRlck9iamVjdC90eXBlUGFyYW1ldGVycy9hZnRlci9UZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjQ3ZmYxMAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXJPYmplY3QvdHlwZVBhcmFtZXRlcnMvYWZ0ZXIvVGVzdC5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKK2NsYXNzIFRlc3Q8Uj4geworICB2b2lkIGZvbyhQYXJhbTxSPiBwYXJhbSkgeworICAgIGlmIChwYXJhbS5nZXRSKCkgPT0gbnVsbCkgeworICAgIH0KKyAgfQorCisgIHZvaWQgYmFyKFIgcil7CisgICAgZm9vKG5ldyBQYXJhbTxSPihyKSk7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlUGFyYW1ldGVyT2JqZWN0L3R5cGVQYXJhbWV0ZXJzL2JlZm9yZS9BLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlUGFyYW1ldGVyT2JqZWN0L3R5cGVQYXJhbWV0ZXJzL2JlZm9yZS9BLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTcwYTlmMwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXJPYmplY3QvdHlwZVBhcmFtZXRlcnMvYmVmb3JlL0EuamF2YQpAQCAtMCwwICsxLDMgQEAKK2NsYXNzIEE8VD4gZXh0ZW5kcyBUZXN0PFQ+eworICB2b2lkIGZvbyhUIHQpe30KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlUGFyYW1ldGVyT2JqZWN0L3R5cGVQYXJhbWV0ZXJzL2JlZm9yZS9UZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlUGFyYW1ldGVyT2JqZWN0L3R5cGVQYXJhbWV0ZXJzL2JlZm9yZS9UZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGM5NDE4MAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXJPYmplY3QvdHlwZVBhcmFtZXRlcnMvYmVmb3JlL1Rlc3QuamF2YQpAQCAtMCwwICsxLDEwIEBACitjbGFzcyBUZXN0PFI+IHsKKyAgdm9pZCBmb28oUiByKSB7CisgICAgaWYgKHIgPT0gbnVsbCkgeworICAgIH0KKyAgfQorCisgIHZvaWQgYmFyKFIgcil7CisgICAgZm9vKHIpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVBhcmFtZXRlck9iamVjdC90eXBlUGFyYW1ldGVyc1dpdGhDaG9zZW5TdWJ0eXBlL2FmdGVyL1Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXJPYmplY3QvdHlwZVBhcmFtZXRlcnNXaXRoQ2hvc2VuU3VidHlwZS9hZnRlci9UZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmQ1NGViYwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXJPYmplY3QvdHlwZVBhcmFtZXRlcnNXaXRoQ2hvc2VuU3VidHlwZS9hZnRlci9UZXN0LmphdmEKQEAgLTAsMCArMSwyNCBAQAoraW1wb3J0IGphdmEudXRpbC5Db2xsZWN0aW9uOworaW1wb3J0IGphdmEudXRpbC5MaXN0OworCitwdWJsaWMgY2xhc3MgVGVzdDxVIGV4dGVuZHMgTGlzdD4geworCXB1YmxpYyBDb2xsZWN0aW9uIGZvbyhQYXJhbSBwYXJhbSkgeworCQlyZXR1cm4gcGFyYW0uZ2V0UCgpOworCX0KKworCXB1YmxpYyB2b2lkIGNvbnRleHQxKFUgcCkgeworCQlDb2xsZWN0aW9uIHYgPSBmb28obmV3IFBhcmFtKHApKTsKKwl9CisKKyAgICBwcml2YXRlIHN0YXRpYyBjbGFzcyBQYXJhbSB7CisgICAgICAgIHByaXZhdGUgZmluYWwgQ29sbGVjdGlvbiBwOworCisgICAgICAgIHByaXZhdGUgUGFyYW0oQ29sbGVjdGlvbiBwKSB7CisgICAgICAgICAgICB0aGlzLnAgPSBwOworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIENvbGxlY3Rpb24gZ2V0UCgpIHsKKyAgICAgICAgICAgIHJldHVybiBwOworICAgICAgICB9CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVBhcmFtZXRlck9iamVjdC90eXBlUGFyYW1ldGVyc1dpdGhDaG9zZW5TdWJ0eXBlL2JlZm9yZS9UZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlUGFyYW1ldGVyT2JqZWN0L3R5cGVQYXJhbWV0ZXJzV2l0aENob3NlblN1YnR5cGUvYmVmb3JlL1Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMmI0MjQ2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVBhcmFtZXRlck9iamVjdC90eXBlUGFyYW1ldGVyc1dpdGhDaG9zZW5TdWJ0eXBlL2JlZm9yZS9UZXN0LmphdmEKQEAgLTAsMCArMSwxMiBAQAoraW1wb3J0IGphdmEudXRpbC5Db2xsZWN0aW9uOworaW1wb3J0IGphdmEudXRpbC5MaXN0OworCitwdWJsaWMgY2xhc3MgVGVzdDxVIGV4dGVuZHMgTGlzdD4geworCXB1YmxpYyBDb2xsZWN0aW9uIGZvbyhVIHApIHsKKwkJcmV0dXJuIHA7CisJfQorCisJcHVibGljIHZvaWQgY29udGV4dDEoVSBwKSB7CisJCUNvbGxlY3Rpb24gdiA9IGZvbyhwKTsKKwl9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlUGFyYW1ldGVyT2JqZWN0L3VzZWRJbm5lckNsYXNzL2FmdGVyL1Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXJPYmplY3QvdXNlZElubmVyQ2xhc3MvYWZ0ZXIvVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRjOGQzMTgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlUGFyYW1ldGVyT2JqZWN0L3VzZWRJbm5lckNsYXNzL2FmdGVyL1Rlc3QuamF2YQpAQCAtMCwwICsxLDE5IEBACitjbGFzcyBUZXN0IHsKKyAgdm9pZCBmb28oUGFyYW0gcGFyYW0pIHsKKyAgICBiYXIocGFyYW0uZ2V0UygpKTsKKyAgfQorCisgIHZvaWQgYmFyKFN0cmluZyBzKXt9CisKKyAgICBzdGF0aWMgY2xhc3MgUGFyYW0geworICAgICAgICBwcml2YXRlIGZpbmFsIFN0cmluZyBzOworCisgICAgICAgIFBhcmFtKFN0cmluZyBzKSB7CisgICAgICAgICAgICB0aGlzLnMgPSBzOworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIFN0cmluZyBnZXRTKCkgeworICAgICAgICAgICAgcmV0dXJuIHM7CisgICAgICAgIH0KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVBhcmFtZXRlck9iamVjdC91c2VkSW5uZXJDbGFzcy9hZnRlci9Vc2FnZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVBhcmFtZXRlck9iamVjdC91c2VkSW5uZXJDbGFzcy9hZnRlci9Vc2FnZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk0MDI4OWIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlUGFyYW1ldGVyT2JqZWN0L3VzZWRJbm5lckNsYXNzL2FmdGVyL1VzYWdlLmphdmEKQEAgLTAsMCArMSw1IEBACitjbGFzcyBVc2FnZSB7CisgIHZvaWQgYmFycihUZXN0IHQpIHsKKyAgICB0LmZvbyhuZXcgVGVzdC5QYXJhbSgiIikpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVBhcmFtZXRlck9iamVjdC91c2VkSW5uZXJDbGFzcy9iZWZvcmUvVGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVBhcmFtZXRlck9iamVjdC91c2VkSW5uZXJDbGFzcy9iZWZvcmUvVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlhMjBiYzQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlUGFyYW1ldGVyT2JqZWN0L3VzZWRJbm5lckNsYXNzL2JlZm9yZS9UZXN0LmphdmEKQEAgLTAsMCArMSw3IEBACitjbGFzcyBUZXN0IHsKKyAgdm9pZCBmb28oU3RyaW5nIHMpIHsKKyAgICBiYXIocyk7CisgIH0KKworICB2b2lkIGJhcihTdHJpbmcgcyl7fQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXJPYmplY3QvdXNlZElubmVyQ2xhc3MvYmVmb3JlL1VzYWdlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlUGFyYW1ldGVyT2JqZWN0L3VzZWRJbm5lckNsYXNzL2JlZm9yZS9Vc2FnZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE4ZjYyYWMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlUGFyYW1ldGVyT2JqZWN0L3VzZWRJbm5lckNsYXNzL2JlZm9yZS9Vc2FnZS5qYXZhCkBAIC0wLDAgKzEsNSBAQAorY2xhc3MgVXNhZ2UgeworICB2b2lkIGJhcnIoVGVzdCB0KSB7CisgICAgdC5mb28oIiIpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVBhcmFtZXRlck9iamVjdC92YXJhcmdzL2FmdGVyL1BhcmFtLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlUGFyYW1ldGVyT2JqZWN0L3ZhcmFyZ3MvYWZ0ZXIvUGFyYW0uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYzg4OGJmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVBhcmFtZXRlck9iamVjdC92YXJhcmdzL2FmdGVyL1BhcmFtLmphdmEKQEAgLTAsMCArMSwxMSBAQAorcHVibGljIGNsYXNzIFBhcmFtIHsKKyAgICBwcml2YXRlIGZpbmFsIGludFtdIGk7CisKKyAgICBwdWJsaWMgUGFyYW0oaW50Li4uIGkpIHsKKyAgICAgICAgdGhpcy5pID0gaTsKKyAgICB9CisKKyAgICBwdWJsaWMgaW50W10gZ2V0SSgpIHsKKyAgICAgICAgcmV0dXJuIGk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVBhcmFtZXRlck9iamVjdC92YXJhcmdzL2FmdGVyL1Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXJPYmplY3QvdmFyYXJncy9hZnRlci9UZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGUwYTRkYgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXJPYmplY3QvdmFyYXJncy9hZnRlci9UZXN0LmphdmEKQEAgLTAsMCArMSwxMCBAQAorY2xhc3MgVGVzdCB7CisgIHZvaWQgZm9vKFBhcmFtIHBhcmFtKSB7CisgICAgaWYgKHBhcmFtLmdldEkoKS5sZW5naHQgPT0gMCkgeworICAgIH0KKyAgfQorCisgIHZvaWQgYmFyKCl7CisgICAgZm9vKG5ldyBQYXJhbSgxLCAyKSk7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlUGFyYW1ldGVyT2JqZWN0L3ZhcmFyZ3MvYmVmb3JlL1Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXJPYmplY3QvdmFyYXJncy9iZWZvcmUvVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMxMTE3Y2MKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlUGFyYW1ldGVyT2JqZWN0L3ZhcmFyZ3MvYmVmb3JlL1Rlc3QuamF2YQpAQCAtMCwwICsxLDEwIEBACitjbGFzcyBUZXN0IHsKKyAgdm9pZCBmb28oaW50Li4uIGkpIHsKKyAgICBpZiAoaS5sZW5naHQgPT0gMCkgeworICAgIH0KKyAgfQorCisgIHZvaWQgYmFyKCl7CisgICAgZm9vKDEsIDIpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVBhcmFtZXRlck9iamVjdC93cm9uZ0JlYW4vYWZ0ZXIvUGFyYW0uamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXJPYmplY3Qvd3JvbmdCZWFuL2FmdGVyL1BhcmFtLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmQwNTIxMQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXJPYmplY3Qvd3JvbmdCZWFuL2FmdGVyL1BhcmFtLmphdmEKQEAgLTAsMCArMSw3IEBACitwdWJsaWMgY2xhc3MgUGFyYW0geworICAgIHByaXZhdGUgZmluYWwgaW50W10gaTsKKworICAgIHB1YmxpYyBQYXJhbShpbnQuLi4gaSkgeworICAgICAgICB0aGlzLmkgPSBpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXJPYmplY3Qvd3JvbmdCZWFuL2FmdGVyL1Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXJPYmplY3Qvd3JvbmdCZWFuL2FmdGVyL1Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMTExN2NjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVBhcmFtZXRlck9iamVjdC93cm9uZ0JlYW4vYWZ0ZXIvVGVzdC5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKK2NsYXNzIFRlc3QgeworICB2b2lkIGZvbyhpbnQuLi4gaSkgeworICAgIGlmIChpLmxlbmdodCA9PSAwKSB7CisgICAgfQorICB9CisKKyAgdm9pZCBiYXIoKXsKKyAgICBmb28oMSwgMik7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlUGFyYW1ldGVyT2JqZWN0L3dyb25nQmVhbi9iZWZvcmUvUGFyYW0uamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXJPYmplY3Qvd3JvbmdCZWFuL2JlZm9yZS9QYXJhbS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJkMDUyMTEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlUGFyYW1ldGVyT2JqZWN0L3dyb25nQmVhbi9iZWZvcmUvUGFyYW0uamF2YQpAQCAtMCwwICsxLDcgQEAKK3B1YmxpYyBjbGFzcyBQYXJhbSB7CisgICAgcHJpdmF0ZSBmaW5hbCBpbnRbXSBpOworCisgICAgcHVibGljIFBhcmFtKGludC4uLiBpKSB7CisgICAgICAgIHRoaXMuaSA9IGk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVBhcmFtZXRlck9iamVjdC93cm9uZ0JlYW4vYmVmb3JlL1Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXJPYmplY3Qvd3JvbmdCZWFuL2JlZm9yZS9UZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzExMTdjYwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VQYXJhbWV0ZXJPYmplY3Qvd3JvbmdCZWFuL2JlZm9yZS9UZXN0LmphdmEKQEAgLTAsMCArMSwxMCBAQAorY2xhc3MgVGVzdCB7CisgIHZvaWQgZm9vKGludC4uLiBpKSB7CisgICAgaWYgKGkubGVuZ2h0ID09IDApIHsKKyAgICB9CisgIH0KKworICB2b2lkIGJhcigpeworICAgIGZvbygxLCAyKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VWYXJpYWJsZS9BbmRBbmRTdWJleHByZXNzaW9uLmFmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlVmFyaWFibGUvQW5kQW5kU3ViZXhwcmVzc2lvbi5hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI5YjNlZDUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlVmFyaWFibGUvQW5kQW5kU3ViZXhwcmVzc2lvbi5hZnRlci5qYXZhCkBAIC0wLDAgKzEsNiBAQAorY2xhc3MgQSB7CisgICAgcHVibGljIHZvaWQgdGVzdChib29sZWFuIGEsIGJvb2xlYW4gYikgeworICAgICAgICBmaW5hbCBib29sZWFuIGFiID0gYSAmJiBiOworICAgICAgICBpZiAodHJ1ZSAmJiBhYik7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VWYXJpYWJsZS9BbmRBbmRTdWJleHByZXNzaW9uLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlVmFyaWFibGUvQW5kQW5kU3ViZXhwcmVzc2lvbi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI1YTBkYzIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlVmFyaWFibGUvQW5kQW5kU3ViZXhwcmVzc2lvbi5qYXZhCkBAIC0wLDAgKzEsNSBAQAorY2xhc3MgQSB7CisgICAgcHVibGljIHZvaWQgdGVzdChib29sZWFuIGEsIGJvb2xlYW4gYikgeworICAgICAgICBpZiAodHJ1ZSAmJiA8c2VsZWN0aW9uPmEgJiYgYjwvc2VsZWN0aW9uPik7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VWYXJpYWJsZS9Bbm9ueW1vdXNDbGFzcy5hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVZhcmlhYmxlL0Fub255bW91c0NsYXNzLmFmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjQ1ZWE4ZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VWYXJpYWJsZS9Bbm9ueW1vdXNDbGFzcy5hZnRlci5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKK2NsYXNzIFRlc3QgeworICAgIHB1YmxpYyB2b2lkIG1ldGhvZCgpIHsKKyAgICAgICAgZmluYWwgaW50IHRlbXAgPSAxICsgMjsKKyAgICAgICAgUnVubmFibGUgciA9IG5ldyBSdW5uYWJsZSgpIHsKKyAgICAgICAgICAgIHB1YmxpYyB2b2lkIHJ1bigpIHsKKyAgICAgICAgICAgICAgICBpbnQgaSA9IHRlbXA7CisgICAgICAgICAgICB9CisgICAgICAgIH07CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VWYXJpYWJsZS9Bbm9ueW1vdXNDbGFzcy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVZhcmlhYmxlL0Fub255bW91c0NsYXNzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2UwYjg5ZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VWYXJpYWJsZS9Bbm9ueW1vdXNDbGFzcy5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKK2NsYXNzIFRlc3QgeworICAgIHB1YmxpYyB2b2lkIG1ldGhvZCgpIHsKKyAgICAgICAgMSArIDIgPGNhcmV0PgorICAgICAgICBSdW5uYWJsZSByID0gbmV3IFJ1bm5hYmxlKCkgeworICAgICAgICAgICAgcHVibGljIHZvaWQgcnVuKCkgeworICAgICAgICAgICAgICAgIGludCBpID0gMSArIDI7CisgICAgICAgICAgICB9CisgICAgICAgIH07CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VWYXJpYWJsZS9Bbm9ueW1vdXNDbGFzczEuYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VWYXJpYWJsZS9Bbm9ueW1vdXNDbGFzczEuYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MjcwZDdkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVZhcmlhYmxlL0Fub255bW91c0NsYXNzMS5hZnRlci5qYXZhCkBAIC0wLDAgKzEsOSBAQAorY2xhc3MgQSB7CisgICAgc3RhdGljIHsKKyAgICAgICAgUnVubmFibGUgcnVubmFibGUgPSBuZXcgUnVubmFibGUoKSB7CisgICAgICAgICAgICBwdWJsaWMgdm9pZCBydW4oKSB7CisgICAgICAgICAgICB9CisgICAgICAgIH07CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihydW5uYWJsZSk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VWYXJpYWJsZS9Bbm9ueW1vdXNDbGFzczEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VWYXJpYWJsZS9Bbm9ueW1vdXNDbGFzczEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NmE1NWQ0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVZhcmlhYmxlL0Fub255bW91c0NsYXNzMS5qYXZhCkBAIC0wLDAgKzEsOCBAQAorY2xhc3MgQSB7CisgICAgc3RhdGljIHsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKDxzZWxlY3Rpb24+bmV3IFJ1bm5hYmxlKCkgeworICAgICAgICAgICAgcHVibGljIHZvaWQgcnVuKCkgeworICAgICAgICAgICAgfQorICAgICAgICB9PC9zZWxlY3Rpb24+KTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVZhcmlhYmxlL0Fub255bW91c0NsYXNzMi5hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVZhcmlhYmxlL0Fub255bW91c0NsYXNzMi5hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJiZGE2NGMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlVmFyaWFibGUvQW5vbnltb3VzQ2xhc3MyLmFmdGVyLmphdmEKQEAgLTAsMCArMSwxMyBAQAorcHVibGljIGNsYXNzIFRlc3RDbGFzcyB7CisgICAgdm9pZCB4KCkgeworICAgICAgICBuZXcgRXhjZXB0aW9uKCkgeworICAgICAgICAgICAgaW50IGRvU29tZXRoaW5nKCkgeyByZXR1cm4gMTsgfQorICAgICAgICAgICAgdm9pZCBhKCkgeworICAgICAgICAgICAgICAgIGludCBqID0gZG9Tb21ldGhpbmcoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHZvaWQgYigpIHsKKyAgICAgICAgICAgICAgICBkb1NvbWV0aGluZygpOworICAgICAgICAgICAgfQorICAgICAgICB9OworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlVmFyaWFibGUvQW5vbnltb3VzQ2xhc3MyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlVmFyaWFibGUvQW5vbnltb3VzQ2xhc3MyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmNmN2EwNQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VWYXJpYWJsZS9Bbm9ueW1vdXNDbGFzczIuamF2YQpAQCAtMCwwICsxLDEzIEBACitwdWJsaWMgY2xhc3MgVGVzdENsYXNzIHsKKyAgICB2b2lkIHgoKSB7CisgICAgICAgIG5ldyBFeGNlcHRpb24oKSB7CisgICAgICAgICAgICBpbnQgZG9Tb21ldGhpbmcoKSB7IHJldHVybiAxOyB9CisgICAgICAgICAgICB2b2lkIGEoKSB7CisgICAgICAgICAgICAgICAgPHNlbGVjdGlvbj5kb1NvbWV0aGluZygpPC9zZWxlY3Rpb24+OworICAgICAgICAgICAgfQorICAgICAgICAgICAgdm9pZCBiKCkgeworICAgICAgICAgICAgICAgIGRvU29tZXRoaW5nKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH07CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VWYXJpYWJsZS9BcnJheUZyb21WYXJhcmdzLmFmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlVmFyaWFibGUvQXJyYXlGcm9tVmFyYXJncy5hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI5ZWRkOTEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlVmFyaWFibGUvQXJyYXlGcm9tVmFyYXJncy5hZnRlci5qYXZhCkBAIC0wLDAgKzEsOCBAQAoraW1wb3J0IGphdmEudXRpbC5BcnJheXM7CisKK2NsYXNzIEEgeworICAgIHB1YmxpYyB2b2lkIHRlc3QoKSB7CisgICAgICAgIFN0cmluZ1tdIHN0cnMgPSB7InNjbmQiLCAidGhpcmQifTsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKEFycmF5cy5hc0xpc3QoImZyc3QiLCBzdHJzLCAiNHRoIikpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlVmFyaWFibGUvQXJyYXlGcm9tVmFyYXJncy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVZhcmlhYmxlL0FycmF5RnJvbVZhcmFyZ3MuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNTNhZGNiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVZhcmlhYmxlL0FycmF5RnJvbVZhcmFyZ3MuamF2YQpAQCAtMCwwICsxLDcgQEAKK2ltcG9ydCBqYXZhLnV0aWwuQXJyYXlzOworCitjbGFzcyBBIHsKKyAgICBwdWJsaWMgdm9pZCB0ZXN0KCkgeworICAgICAgU3lzdGVtLm91dC5wcmludGxuKEFycmF5cy5hc0xpc3QoImZyc3QiLCA8c2VsZWN0aW9uPiJzY25kIiwgInRoaXJkIjwvc2VsZWN0aW9uPiwgIjR0aCIpKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVZhcmlhYmxlL0FycmF5RnJvbVZhcmFyZ3MxLmFmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlVmFyaWFibGUvQXJyYXlGcm9tVmFyYXJnczEuYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYjg1YmJkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVZhcmlhYmxlL0FycmF5RnJvbVZhcmFyZ3MxLmFmdGVyLmphdmEKQEAgLTAsMCArMSw5IEBACitwdWJsaWMgY2xhc3MgRm9vIHsKKyAgICBwdWJsaWMgRm9vKFN0cmluZyAuLi4gc3Rycykge30KKworICAgIHB1YmxpYyB2b2lkIHRlc3QxKEZvbyBvLCBTdHJpbmcuLi4gZm9vKSB7fQorICAgIHZvaWQgYmFyKCkgeworICAgICAgICBTdHJpbmdbXSBzdHJzID0geyIiLCAiIn07CisgICAgICAgIHRlc3QxKG5ldyBGb28oc3RycykpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlVmFyaWFibGUvQXJyYXlGcm9tVmFyYXJnczEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VWYXJpYWJsZS9BcnJheUZyb21WYXJhcmdzMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRiZGQ5NzcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlVmFyaWFibGUvQXJyYXlGcm9tVmFyYXJnczEuamF2YQpAQCAtMCwwICsxLDggQEAKK3B1YmxpYyBjbGFzcyBGb28geworICAgIHB1YmxpYyBGb28oU3RyaW5nIC4uLiBzdHJzKSB7fQorCisgICAgcHVibGljIHZvaWQgdGVzdDEoRm9vIG8sIFN0cmluZy4uLiBmb28pIHt9CisgICAgdm9pZCBiYXIoKSB7CisgICAgICAgIHRlc3QxKG5ldyBGb28oPHNlbGVjdGlvbj4gIiIsICIiPC9zZWxlY3Rpb24+KSk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VWYXJpYWJsZS9Bc3NpZ25tZW50VG9VbnJlc29sdmVkUmVmZXJlbmNlLmFmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlVmFyaWFibGUvQXNzaWdubWVudFRvVW5yZXNvbHZlZFJlZmVyZW5jZS5hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIxNjNiNTIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlVmFyaWFibGUvQXNzaWdubWVudFRvVW5yZXNvbHZlZFJlZmVyZW5jZS5hZnRlci5qYXZhCkBAIC0wLDAgKzEsMTUgQEAKK2ltcG9ydCBqYXZhLnV0aWwuKjsKKworcHVibGljIGNsYXNzIFRlc3Q8VD4KK3sKKyAgICAgICAgTGlzdDxDb2xsZWN0aW9uPFQ+PiBnZXRMaXN0ICgpCisgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gbmV3IEFycmF5TGlzdDxDb2xsZWN0aW9uPFQ+PiAoKTsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyB2b2lkIHRlc3QyIChUZXN0PD8+IGFyZykKKyAgICAgICAgeworICAgICAgICAgICAgZmluYWwgTGlzdDw/IGV4dGVuZHMgQ29sbGVjdGlvbjw/Pj4gY29sbGVjdGlvbiA9IHJlc3VsdDsKKyAgICAgICAgICAgIGNvbGxlY3Rpb24gPSBhcmcuZ2V0TGlzdCAoKTsKKyAgICAgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VWYXJpYWJsZS9Bc3NpZ25tZW50VG9VbnJlc29sdmVkUmVmZXJlbmNlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlVmFyaWFibGUvQXNzaWdubWVudFRvVW5yZXNvbHZlZFJlZmVyZW5jZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFkOWVlNmYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlVmFyaWFibGUvQXNzaWdubWVudFRvVW5yZXNvbHZlZFJlZmVyZW5jZS5qYXZhCkBAIC0wLDAgKzEsMTQgQEAKK2ltcG9ydCBqYXZhLnV0aWwuKjsKKworcHVibGljIGNsYXNzIFRlc3Q8VD4KK3sKKyAgICAgICAgTGlzdDxDb2xsZWN0aW9uPFQ+PiBnZXRMaXN0ICgpCisgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gbmV3IEFycmF5TGlzdDxDb2xsZWN0aW9uPFQ+PiAoKTsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyB2b2lkIHRlc3QyIChUZXN0PD8+IGFyZykKKyAgICAgICAgeworICAgICAgICAgICAgICAgIHJlczxjYXJldD51bHQgPSBhcmcuZ2V0TGlzdCAoKTsKKyAgICAgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VWYXJpYWJsZS9CZWZvcmVWb2lkU3RhdGVtZW50LmFmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlVmFyaWFibGUvQmVmb3JlVm9pZFN0YXRlbWVudC5hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEwM2FmODdlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVZhcmlhYmxlL0JlZm9yZVZvaWRTdGF0ZW1lbnQuYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDggQEAKK2NsYXNzIFRlc3QgeworICB2b2lkIGZvbygpIHsKKyAgICAgIE9iamVjdCBjID0gZ2V0T2JqZWN0KCk7CisgICAgICBjLm5vdGlmeSgpOworICB9CisKKyAgT2JqZWN0IGdldE9iamVjdCgpIHtyZXR1cm4gbnVsbDt9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVZhcmlhYmxlL0JlZm9yZVZvaWRTdGF0ZW1lbnQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VWYXJpYWJsZS9CZWZvcmVWb2lkU3RhdGVtZW50LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzNlMTEzMQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VWYXJpYWJsZS9CZWZvcmVWb2lkU3RhdGVtZW50LmphdmEKQEAgLTAsMCArMSw3IEBACitjbGFzcyBUZXN0IHsKKyAgdm9pZCBmb28oKSB7CisgICAgIDxjYXJldD5nZXRPYmplY3QoKS5ub3RpZnkoKTsKKyAgfQorCisgIE9iamVjdCBnZXRPYmplY3QoKSB7cmV0dXJuIG51bGw7fQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VWYXJpYWJsZS9DYW50Q29sbGFwc2VkVG9EaWFtb25kLmFmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlVmFyaWFibGUvQ2FudENvbGxhcHNlZFRvRGlhbW9uZC5hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg1OThkYzQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlVmFyaWFibGUvQ2FudENvbGxhcHNlZFRvRGlhbW9uZC5hZnRlci5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKK2NsYXNzIFRlc3QgeworICB2b2lkIGZvbygpIHsKKyAgICAgIGZpbmFsIEZvbzxOdW1iZXI+IGEgPSBuZXcgRm9vPE51bWJlcj4oMSk7CisgIH0KK30KKworY2xhc3MgRm9vPFQ+IHsKKyAgRm9vKFQgdCkgeworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVZhcmlhYmxlL0NhbnRDb2xsYXBzZWRUb0RpYW1vbmQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VWYXJpYWJsZS9DYW50Q29sbGFwc2VkVG9EaWFtb25kLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGQ0Y2M3MQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VWYXJpYWJsZS9DYW50Q29sbGFwc2VkVG9EaWFtb25kLmphdmEKQEAgLTAsMCArMSwxMCBAQAorY2xhc3MgVGVzdCB7CisgIHZvaWQgZm9vKCkgeworICAgICAgbmV3IEZvbzxOdW08Y2FyZXQ+YmVyPigxKTsKKyAgfQorfQorCitjbGFzcyBGb288VD4geworICBGb28oVCB0KSB7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlVmFyaWFibGUvQ29sbGFwc2VkVG9EaWFtb25kLmFmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlVmFyaWFibGUvQ29sbGFwc2VkVG9EaWFtb25kLmFmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzk1ZDg2NwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VWYXJpYWJsZS9Db2xsYXBzZWRUb0RpYW1vbmQuYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDYgQEAKK2ltcG9ydCBqYXZhLnV0aWwuQXJyYXlMaXN0OworY2xhc3MgVGVzdCB7CisgIHZvaWQgZm9vKCkgeworICAgICAgZmluYWwgQXJyYXlMaXN0PFN0cmluZz4gYSA9IG5ldyBBcnJheUxpc3Q8PigpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVZhcmlhYmxlL0NvbGxhcHNlZFRvRGlhbW9uZC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVZhcmlhYmxlL0NvbGxhcHNlZFRvRGlhbW9uZC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA3NzZjY2UKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlVmFyaWFibGUvQ29sbGFwc2VkVG9EaWFtb25kLmphdmEKQEAgLTAsMCArMSw2IEBACitpbXBvcnQgamF2YS51dGlsLkFycmF5TGlzdDsKK2NsYXNzIFRlc3QgeworICB2b2lkIGZvbygpIHsKKyAgICBuZXcgQXJyYXk8Y2FyZXQ+TGlzdDxTdHJpbmc+KCkKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VWYXJpYWJsZS9Db25mbGljdGluZ0ZpZWxkLmFmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlVmFyaWFibGUvQ29uZmxpY3RpbmdGaWVsZC5hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIzNTgzMzUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlVmFyaWFibGUvQ29uZmxpY3RpbmdGaWVsZC5hZnRlci5qYXZhCkBAIC0wLDAgKzEsOCBAQAorY2xhc3MgQSB7CisgICAgcHJpdmF0ZSBpbnQgbmFtZTsKKyAgICBwdWJsaWMgdm9pZCBtZXRob2QoKSB7CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihuYW1lKTsKKyAgICAgICAgU3RyaW5nIG5hbWUgPSAieHl6IjsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKHRoaXMubmFtZSk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VWYXJpYWJsZS9Db25mbGljdGluZ0ZpZWxkLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlVmFyaWFibGUvQ29uZmxpY3RpbmdGaWVsZC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVhYTBmNDEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlVmFyaWFibGUvQ29uZmxpY3RpbmdGaWVsZC5qYXZhCkBAIC0wLDAgKzEsOCBAQAorY2xhc3MgQSB7CisgICAgcHJpdmF0ZSBpbnQgbmFtZTsKKyAgICBwdWJsaWMgdm9pZCBtZXRob2QoKSB7CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihuYW1lKTsKKyAgICAgICAgPHNlbGVjdGlvbj4ieHl6Ijwvc2VsZWN0aW9uPgorICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4obmFtZSk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VWYXJpYWJsZS9Db25mbGljdGluZ0ZpZWxkSW5FeHByZXNzaW9uLmFmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlVmFyaWFibGUvQ29uZmxpY3RpbmdGaWVsZEluRXhwcmVzc2lvbi5hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk2ODlkM2QKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlVmFyaWFibGUvQ29uZmxpY3RpbmdGaWVsZEluRXhwcmVzc2lvbi5hZnRlci5qYXZhCkBAIC0wLDAgKzEsOCBAQAorY2xhc3MgQSB7CisgICAgcHJpdmF0ZSBpbnQgbmFtZTsKKyAgICBwdWJsaWMgdm9pZCBtZXRob2QoKSB7CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihuYW1lKTsKKyAgICAgICAgaW50IG5hbWUgPSB0aGlzLm5hbWU7CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbih0aGlzLm5hbWUpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlVmFyaWFibGUvQ29uZmxpY3RpbmdGaWVsZEluRXhwcmVzc2lvbi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVZhcmlhYmxlL0NvbmZsaWN0aW5nRmllbGRJbkV4cHJlc3Npb24uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYzc4MDhjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVZhcmlhYmxlL0NvbmZsaWN0aW5nRmllbGRJbkV4cHJlc3Npb24uamF2YQpAQCAtMCwwICsxLDggQEAKK2NsYXNzIEEgeworICAgIHByaXZhdGUgaW50IG5hbWU7CisgICAgcHVibGljIHZvaWQgbWV0aG9kKCkgeworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4obmFtZSk7CisgICAgICAgIDxzZWxlY3Rpb24+bmFtZTwvc2VsZWN0aW9uPgorICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4obmFtZSk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VWYXJpYWJsZS9Db25mbGljdGluZ0ZpZWxkSW5PdXRlckNsYXNzLmFmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlVmFyaWFibGUvQ29uZmxpY3RpbmdGaWVsZEluT3V0ZXJDbGFzcy5hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM5YTZiYTgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlVmFyaWFibGUvQ29uZmxpY3RpbmdGaWVsZEluT3V0ZXJDbGFzcy5hZnRlci5qYXZhCkBAIC0wLDAgKzEsOSBAQAorcHVibGljIGNsYXNzIFRlc3Q0IHsKKyAgICBTdHJpbmcgdGV4dCA9ICJIZWxsbyB3b3JsZCEiOworICAgIHByaXZhdGUgY2xhc3MgUSB7CisgICAgICAgIHZvaWQgZm9vKCkgeworICAgICAgICAgICAgZmluYWwgU3RyaW5nIHRleHQgPSBUZXN0NC50aGlzLnRleHQ7CisgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oInRleHQgPSAiICsgdGV4dCk7CisgICAgICAgIH0KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVZhcmlhYmxlL0NvbmZsaWN0aW5nRmllbGRJbk91dGVyQ2xhc3MuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VWYXJpYWJsZS9Db25mbGljdGluZ0ZpZWxkSW5PdXRlckNsYXNzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGE5NjRmYwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VWYXJpYWJsZS9Db25mbGljdGluZ0ZpZWxkSW5PdXRlckNsYXNzLmphdmEKQEAgLTAsMCArMSw4IEBACitwdWJsaWMgY2xhc3MgVGVzdDQgeworICAgIFN0cmluZyB0ZXh0ID0gIkhlbGxvIHdvcmxkISI7CisgICAgcHJpdmF0ZSBjbGFzcyBRIHsKKyAgICAgICAgdm9pZCBmb28oKSB7CisgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oInRleHQgPSAiICsgPHNlbGVjdGlvbj50ZXh0PC9zZWxlY3Rpb24+KTsKKyAgICAgICAgfQorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlVmFyaWFibGUvRGlmZmVyZW50Rm9yZWFjaFBhcmFtZXRlcnMuYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VWYXJpYWJsZS9EaWZmZXJlbnRGb3JlYWNoUGFyYW1ldGVycy5hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEwMjFlMDkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlVmFyaWFibGUvRGlmZmVyZW50Rm9yZWFjaFBhcmFtZXRlcnMuYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDEyIEBACitjbGFzcyBBIHsKKyAgeworICAgIExpc3Q8SW50ZWdlcj4gbCA9IG5ldyBBcnJheUxpc3Q8SW50ZWdlcj4oKTsKKyAgICBmb3IgKEludGVnZXIgaSA6IGwpIHsKKyAgICAgICAgZmluYWwgU3RyaW5nIHRvc3RyID0gaS50b1N0cmluZygpOworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4odG9zdHIpOworICAgIH0KKyAgICBmb3IgKEludGVnZXIgaSA6IGwpIHsKKyAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihpLnRvU3RyaW5nKCkpOworICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VWYXJpYWJsZS9EaWZmZXJlbnRGb3JlYWNoUGFyYW1ldGVycy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVZhcmlhYmxlL0RpZmZlcmVudEZvcmVhY2hQYXJhbWV0ZXJzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzY4M2JmYQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VWYXJpYWJsZS9EaWZmZXJlbnRGb3JlYWNoUGFyYW1ldGVycy5qYXZhCkBAIC0wLDAgKzEsMTEgQEAKK2NsYXNzIEEgeworICB7CisgICAgTGlzdDxJbnRlZ2VyPiBsID0gbmV3IEFycmF5TGlzdDxJbnRlZ2VyPigpOworICAgIGZvciAoSW50ZWdlciBpIDogbCkgeworICAgICAgU3lzdGVtLm91dC5wcmludGxuKDxzZWxlY3Rpb24+aS50b1N0cmluZygpPC9zZWxlY3Rpb24+KTsKKyAgICB9CisgICAgZm9yIChJbnRlZ2VyIGkgOiBsKSB7CisgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oaS50b1N0cmluZygpKTsKKyAgICB9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlVmFyaWFibGUvRHVwbGljYXRlR2VuZXJpY0V4cHJlc3Npb25zLmFmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlVmFyaWFibGUvRHVwbGljYXRlR2VuZXJpY0V4cHJlc3Npb25zLmFmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmZhMmU3ZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VWYXJpYWJsZS9EdXBsaWNhdGVHZW5lcmljRXhwcmVzc2lvbnMuYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDEyIEBACitjbGFzcyBGb28yPFQ+IHsKKyAgICBGb28yPD8gZXh0ZW5kcyBSdW5uYWJsZT4gZ2V0TGlzdCgpIHsKKyAgICAgICAgcmV0dXJuIG51bGw7CisgICAgfQorCisgICAgeworICAgICAgICBGb28yPFQ+IGYgPSBuZXcgRm9vMjxUPigpOworICAgICAgICBGb28yPD8gZXh0ZW5kcyBSdW5uYWJsZT4gdGVtcCA9IGYuZ2V0TGlzdCgpOworICAgICAgICBPYmplY3QgYSA9IHRlbXA7CisgICAgICAgIE9iamVjdCBiID0gdGVtcDsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlVmFyaWFibGUvRHVwbGljYXRlR2VuZXJpY0V4cHJlc3Npb25zLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlVmFyaWFibGUvRHVwbGljYXRlR2VuZXJpY0V4cHJlc3Npb25zLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjU4NzkwYgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VWYXJpYWJsZS9EdXBsaWNhdGVHZW5lcmljRXhwcmVzc2lvbnMuamF2YQpAQCAtMCwwICsxLDExIEBACitjbGFzcyBGb28yPFQ+IHsKKyAgICBGb28yPD8gZXh0ZW5kcyBSdW5uYWJsZT4gZ2V0TGlzdCgpIHsKKyAgICAgICAgcmV0dXJuIG51bGw7CisgICAgfQorCisgICAgeworICAgICAgICBGb28yPFQ+IGYgPSBuZXcgRm9vMjxUPigpOworICAgICAgICBPYmplY3QgYSA9IDxzZWxlY3Rpb24+Zi5nZXRMaXN0KCk8L3NlbGVjdGlvbj47CisgICAgICAgIE9iamVjdCBiID0gZi5nZXRMaXN0KCk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVZhcmlhYmxlL0R1cGxpY2F0ZXNBbm9ueW1vdXNDbGFzc0NyZWF0aW9uV2l0aFNpbWlsYXJQYXJhbWV0ZXJzLmFmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlVmFyaWFibGUvRHVwbGljYXRlc0Fub255bW91c0NsYXNzQ3JlYXRpb25XaXRoU2ltaWxhclBhcmFtZXRlcnMuYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZmRmZDgzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVZhcmlhYmxlL0R1cGxpY2F0ZXNBbm9ueW1vdXNDbGFzc0NyZWF0aW9uV2l0aFNpbWlsYXJQYXJhbWV0ZXJzLmFmdGVyLmphdmEKQEAgLTAsMCArMSwyNiBAQAorcHVibGljIGNsYXNzIEZvbyB7CisKKwlwdWJsaWMgc3RhdGljIHZvaWQgYmF6eihpbnQgaSkgeworICAgICAgICBmaW5hbCBGb28gZm9vMSA9IG5ldyBGb28obmV3IElCYXIoKSB7CisgICAgICAgICAgICBwdWJsaWMgdm9pZCBkb1NvbWV0aGluZygpIHsKKyAgICAgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oImhlbGxvIik7CisgICAgICAgICAgICB9CisgICAgICAgIH0pOworICAgICAgICBmaW5hbCBGb28gZm9vID0gaSAhPSAwID8gZm9vMSA6IGZvbzE7CisJCWZvby5ibGEoKTsKKwl9CisKKwlwcml2YXRlIGZpbmFsIElCYXIgYmFyOworCisJcHVibGljIEZvbyhJQmFyIGJhcikgeworCQl0aGlzLmJhciA9IGJhcjsKKwl9CisKKwlwdWJsaWMgdm9pZCBibGEoKSB7CisJCWJhci5kb1NvbWV0aGluZygpOworCX0KKworCXB1YmxpYyBpbnRlcmZhY2UgSUJhciB7CisJCXZvaWQgZG9Tb21ldGhpbmcoKTsKKwl9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVZhcmlhYmxlL0R1cGxpY2F0ZXNBbm9ueW1vdXNDbGFzc0NyZWF0aW9uV2l0aFNpbWlsYXJQYXJhbWV0ZXJzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlVmFyaWFibGUvRHVwbGljYXRlc0Fub255bW91c0NsYXNzQ3JlYXRpb25XaXRoU2ltaWxhclBhcmFtZXRlcnMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNmIxYzI2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVZhcmlhYmxlL0R1cGxpY2F0ZXNBbm9ueW1vdXNDbGFzc0NyZWF0aW9uV2l0aFNpbWlsYXJQYXJhbWV0ZXJzLmphdmEKQEAgLTAsMCArMSwyOSBAQAorcHVibGljIGNsYXNzIEZvbyB7CisKKwlwdWJsaWMgc3RhdGljIHZvaWQgYmF6eihpbnQgaSkgeworCQlmaW5hbCBGb28gZm9vID0gaSAhPSAwID8gPHNlbGVjdGlvbj5uZXcgRm9vKG5ldyBJQmFyKCkgeworCQkJcHVibGljIHZvaWQgZG9Tb21ldGhpbmcoKSB7CisJCQkJU3lzdGVtLm91dC5wcmludGxuKCJoZWxsbyIpOworCQkJfQorCQl9KTwvc2VsZWN0aW9uPiA6IG5ldyBGb28obmV3IElCYXIoKSB7CisJCQlwdWJsaWMgdm9pZCBkb1NvbWV0aGluZygpIHsKKwkJCQlTeXN0ZW0ub3V0LnByaW50bG4oImhlbGxvIik7CisJCQl9CisJCX0pOworCQlmb28uYmxhKCk7CisJfQorCisJcHJpdmF0ZSBmaW5hbCBJQmFyIGJhcjsKKworCXB1YmxpYyBGb28oSUJhciBiYXIpIHsKKwkJdGhpcy5iYXIgPSBiYXI7CisJfQorCisJcHVibGljIHZvaWQgYmxhKCkgeworCQliYXIuZG9Tb21ldGhpbmcoKTsKKwl9CisKKwlwdWJsaWMgaW50ZXJmYWNlIElCYXIgeworCQl2b2lkIGRvU29tZXRoaW5nKCk7CisJfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VWYXJpYWJsZS9FbnVtQXJyYXlGcm9tVmFyYXJncy5hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVZhcmlhYmxlL0VudW1BcnJheUZyb21WYXJhcmdzLmFmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjQwN2NmYQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VWYXJpYWJsZS9FbnVtQXJyYXlGcm9tVmFyYXJncy5hZnRlci5qYXZhCkBAIC0wLDAgKzEsMTMgQEAKK2NsYXNzIFRlc3QgeworICB2b2lkIGZvbyhFLi4uIGUpIHsKKyAgfQorCisgIHZvaWQgYmFyKCkgeworICAgICAgRVtdIHN0cnMgPSB7RS5FMSwgRS5FMn07CisgICAgICBmb28oc3Rycyk7CisgIH0KK30KKworc3RhdGljIGVudW0gRSB7CisgIEUxLCBFMjsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlVmFyaWFibGUvRW51bUFycmF5RnJvbVZhcmFyZ3MuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VWYXJpYWJsZS9FbnVtQXJyYXlGcm9tVmFyYXJncy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjczMzk5MWMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlVmFyaWFibGUvRW51bUFycmF5RnJvbVZhcmFyZ3MuamF2YQpAQCAtMCwwICsxLDEyIEBACitjbGFzcyBUZXN0IHsKKyAgdm9pZCBmb28oRS4uLiBlKSB7CisgIH0KKworICB2b2lkIGJhcigpIHsKKyAgICBmb28oPHNlbGVjdGlvbj5FLkUxLCBFLkUyPC9zZWxlY3Rpb24+KTsKKyAgfQorfQorCitzdGF0aWMgZW51bSBFIHsKKyAgRTEsIEUyOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VWYXJpYWJsZS9Gcm9tRmluYWxGaWVsZE9uQXNzaWdubWVudC5hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVZhcmlhYmxlL0Zyb21GaW5hbEZpZWxkT25Bc3NpZ25tZW50LmFmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTkyZGVlNgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VWYXJpYWJsZS9Gcm9tRmluYWxGaWVsZE9uQXNzaWdubWVudC5hZnRlci5qYXZhCkBAIC0wLDAgKzEsOCBAQAorcHVibGljIGNsYXNzIEMgeworICBwcml2YXRlIGZpbmFsIFN0cmluZyBteVN0cjsKKworICBwdWJsaWMgQygpIHsKKyAgICBteVN0ciA9ICIiOworICAgICAgU3RyaW5nIHN0cnMgPSBteVN0cjsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVZhcmlhYmxlL0Zyb21GaW5hbEZpZWxkT25Bc3NpZ25tZW50LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlVmFyaWFibGUvRnJvbUZpbmFsRmllbGRPbkFzc2lnbm1lbnQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMzJhMDVhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVZhcmlhYmxlL0Zyb21GaW5hbEZpZWxkT25Bc3NpZ25tZW50LmphdmEKQEAgLTAsMCArMSw3IEBACitwdWJsaWMgY2xhc3MgQyB7CisgIHByaXZhdGUgZmluYWwgU3RyaW5nIG15U3RyOworCisgIHB1YmxpYyBDKCkgeworICAgIDxzZWxlY3Rpb24+bXlTdHI8L3NlbGVjdGlvbj4gPSAiIjsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVZhcmlhYmxlL0Zyb21Gb3JJbml0aWFsaXplci5hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVZhcmlhYmxlL0Zyb21Gb3JJbml0aWFsaXplci5hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBhNWZjMTEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlVmFyaWFibGUvRnJvbUZvckluaXRpYWxpemVyLmFmdGVyLmphdmEKQEAgLTAsMCArMSwxMyBAQAoraW1wb3J0IGphdmEudXRpbC4qOworCitwdWJsaWMgY2xhc3MgU29tZUNsYXNzIHsKKworICAgIHN0YXRpYyBMaXN0IGZvbygpe3JldHVybiBudWxsO30KKworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKKyAgICAgICAgZmluYWwgTGlzdCBsaXN0ID0gZm9vKCk7CisgICAgICAgIGZvciAoSXRlcmF0b3IgaXQgPSBsaXN0Lmxpc3RJdGVyYXRvcihsaXN0LnNpemUoKSk7IGl0Lmhhc05leHQoKTsgKSB7CisKKyAgICAgICAgfQorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlVmFyaWFibGUvRnJvbUZvckluaXRpYWxpemVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlVmFyaWFibGUvRnJvbUZvckluaXRpYWxpemVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWI1NTg3YwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VWYXJpYWJsZS9Gcm9tRm9ySW5pdGlhbGl6ZXIuamF2YQpAQCAtMCwwICsxLDEyIEBACitpbXBvcnQgamF2YS51dGlsLio7CisKK3B1YmxpYyBjbGFzcyBTb21lQ2xhc3MgeworCisgICAgc3RhdGljIExpc3QgZm9vKCl7cmV0dXJuIG51bGw7fQorCisgICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgeworICAgICAgICBmb3IgKEl0ZXJhdG9yIGl0ID0gPHNlbGVjdGlvbj5mb28oKTwvc2VsZWN0aW9uPi5saXN0SXRlcmF0b3IoZm9vKCkuc2l6ZSgpKTsgaXQuaGFzTmV4dCgpOyApIHsKKworICAgICAgICB9CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VWYXJpYWJsZS9Gcm9tSW5qZWN0ZWQuYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VWYXJpYWJsZS9Gcm9tSW5qZWN0ZWQuYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZWJiN2FmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVZhcmlhYmxlL0Zyb21JbmplY3RlZC5hZnRlci5qYXZhCkBAIC0wLDAgKzEsNiBAQAorY2xhc3MgVGVzdCB7CisgIHsKKyAgICAgIFN0cmluZyByZWdleHAgPSAifFx0IjsKKyAgICAgIFN0cmluZ1tdIHBhcnRzID0gIiIuc3BsaXQocmVnZXhwKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VWYXJpYWJsZS9Gcm9tSW5qZWN0ZWQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VWYXJpYWJsZS9Gcm9tSW5qZWN0ZWQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xOWRmM2QyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVZhcmlhYmxlL0Zyb21JbmplY3RlZC5qYXZhCkBAIC0wLDAgKzEsNSBAQAorY2xhc3MgVGVzdCB7CisgIHsKKyAgICBTdHJpbmdbXSBwYXJ0cyA9ICIiLnNwbGl0KCJ8PGNhcmV0Plx0Iik7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlVmFyaWFibGUvSURFQURFVjEzMzY5LmFmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlVmFyaWFibGUvSURFQURFVjEzMzY5LmFmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjY3ZjdmZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VWYXJpYWJsZS9JREVBREVWMTMzNjkuYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDkgQEAKK2NsYXNzIFRlc3RlciB7CisgICAgdm9pZCBtZXRob2QoKSB7CisgICAgICAgIGZpbmFsIGludFtdIGludHMgPSB7MX07CisgICAgICAgIGYoaW50cyk7CisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIGYoaW50W10gaW50cykgeworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlVmFyaWFibGUvSURFQURFVjEzMzY5LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlVmFyaWFibGUvSURFQURFVjEzMzY5LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODdlNjI3YgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VWYXJpYWJsZS9JREVBREVWMTMzNjkuamF2YQpAQCAtMCwwICsxLDggQEAKK2NsYXNzIFRlc3RlciB7CisgICAgdm9pZCBtZXRob2QoKSB7CisgICAgICAgIGYoPHNlbGVjdGlvbj5uZXcgaW50W117MX08L3NlbGVjdGlvbj4pOworICAgIH0KKworICAgIHByaXZhdGUgdm9pZCBmKGludFtdIGludHMpIHsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVZhcmlhYmxlL0lERUFERVYzNjc4LmFmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlVmFyaWFibGUvSURFQURFVjM2NzguYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MGViYjVlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVZhcmlhYmxlL0lERUFERVYzNjc4LmFmdGVyLmphdmEKQEAgLTAsMCArMSw5IEBACitjbGFzcyBCYXIgeworICAgIHZvaWQgYmFyKE9iamVjdFtdIGNvbXBvbmVudHMpIHsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBjb21wb25lbnRzLmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICBmaW5hbCBPYmplY3QgY29tcG9uZW50ID0gY29tcG9uZW50c1tpXTsKKyAgICAgICAgICAgIGlmIChjb21wb25lbnQgIT0gbnVsbCkKKyAgICAgICAgICAgICAgICBhZGRDaGlsZHJlbihjb21wb25lbnQpOworICAgICAgICB9CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VWYXJpYWJsZS9JREVBREVWMzY3OC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVZhcmlhYmxlL0lERUFERVYzNjc4LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzZkZDVlZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VWYXJpYWJsZS9JREVBREVWMzY3OC5qYXZhCkBAIC0wLDAgKzEsNyBAQAorY2xhc3MgQmFyIHsKKyAgICB2b2lkIGJhcihPYmplY3RbXSBjb21wb25lbnRzKSB7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgY29tcG9uZW50cy5sZW5ndGg7ICsraSkKKyAgICAgICAgICAgIGlmICg8c2VsZWN0aW9uPmNvbXBvbmVudHNbaV08L3NlbGVjdGlvbj4gIT0gbnVsbCkKKyAgICAgICAgICAgICAgICBhZGRDaGlsZHJlbihjb21wb25lbnRzW2ldKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVZhcmlhYmxlL0luY29ycmVjdEV4cHJlc3Npb25TZWxlY3RlZC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVZhcmlhYmxlL0luY29ycmVjdEV4cHJlc3Npb25TZWxlY3RlZC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE2MWQwMzIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlVmFyaWFibGUvSW5jb3JyZWN0RXhwcmVzc2lvblNlbGVjdGVkLmphdmEKQEAgLTAsMCArMSw1IEBACitjbGFzcyBGb28geworICB2b2lkIGJhcigpIHsKKyAgICB0aGlzLjxzZWxlY3Rpb24+dG9TdHJpbmcoKTwvc2VsZWN0aW9uPgorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVZhcmlhYmxlL0luc2lkZUVsc2UuYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VWYXJpYWJsZS9JbnNpZGVFbHNlLmFmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjhjNTQ5YwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VWYXJpYWJsZS9JbnNpZGVFbHNlLmFmdGVyLmphdmEKQEAgLTAsMCArMSwxMiBAQAorcHVibGljIGNsYXNzIEMgeworICAgIHsKKyAgICAgICAgT2JqZWN0IG8gPSBnZXRPKCk7CisgICAgICAgIFN0cmluZyBzOworICAgICAgICBpZiAobyA9PSBudWxsKQorICAgICAgICAgICAgcyA9ICIiOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIFN0cmluZyBzMSA9IG8udG9TdHJpbmcoKTsKKyAgICAgICAgICAgIHMgPSBzMTsKKyAgICAgICAgfQorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlVmFyaWFibGUvSW5zaWRlRWxzZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVZhcmlhYmxlL0luc2lkZUVsc2UuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YTExMTk2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVZhcmlhYmxlL0luc2lkZUVsc2UuamF2YQpAQCAtMCwwICsxLDkgQEAKK3B1YmxpYyBjbGFzcyBDIHsKKyAgICB7CisgICAgICAgIE9iamVjdCBvID0gZ2V0TygpOworICAgICAgICBTdHJpbmcgczsKKyAgICAgICAgaWYgKG8gPT0gbnVsbCkKKyAgICAgICAgICAgIHMgPSAiIjsKKyAgICAgICAgZWxzZSBzID0gPHNlbGVjdGlvbj5vLnRvU3RyaW5nKCk8L3NlbGVjdGlvbj47CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VWYXJpYWJsZS9JbnNpZGVGb3IuYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VWYXJpYWJsZS9JbnNpZGVGb3IuYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mODZmOTJkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVZhcmlhYmxlL0luc2lkZUZvci5hZnRlci5qYXZhCkBAIC0wLDAgKzEsOCBAQAorY2xhc3MgVGVzdCB7CisgICAgcHVibGljIHZvaWQgbWV0aG9kKCkgeworICAgICAgICBmb3IoaW50IGkgPSAwOyBpIDwgMTAwOyBpKyspIHsKKyAgICAgICAgICAgIGludCB0ZW1wID0gaSAqIDI7CisgICAgICAgICAgICBzdW0gKz0gdGVtcDsKKyAgICAgICAgfQorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlVmFyaWFibGUvSW5zaWRlRm9yLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlVmFyaWFibGUvSW5zaWRlRm9yLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjg3ZGZmYwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VWYXJpYWJsZS9JbnNpZGVGb3IuamF2YQpAQCAtMCwwICsxLDYgQEAKK2NsYXNzIFRlc3QgeworICAgIHB1YmxpYyB2b2lkIG1ldGhvZCgpIHsKKyAgICAgICAgZm9yKGludCBpID0gMDsgaSA8IDEwMDsgaSsrKQorICAgICAgICAgICAgc3VtICs9IDxzZWxlY3Rpb24+aSAqIDI8L3NlbGVjdGlvbj47CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VWYXJpYWJsZS9JbnNpZGVGb3JMb29wLmFmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlVmFyaWFibGUvSW5zaWRlRm9yTG9vcC5hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkzYWU5NjcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlVmFyaWFibGUvSW5zaWRlRm9yTG9vcC5hZnRlci5qYXZhCkBAIC0wLDAgKzEsMTEgQEAKK3B1YmxpYyBjbGFzcyBDIHsKKworICBwdWJsaWMgQyhpbnRbXSBpbnRzKSB7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBsZW5ndGggJiYgaW50c1tpXSA+IDA7IGkrKykgeworICAgICAgICBpbnQgdGVtcCA9IGludHNbaV07CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbih0ZW1wKTsKKyAgICAgIFN5c3RlbS5vdXQucHJpbnRsbih0ZW1wKTsKKyAgICAgIFN5c3RlbS5vdXQucHJpbnRsbih0ZW1wKTsKKyAgICB9CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VWYXJpYWJsZS9JbnNpZGVGb3JMb29wLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlVmFyaWFibGUvSW5zaWRlRm9yTG9vcC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ1YjY0YTIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlVmFyaWFibGUvSW5zaWRlRm9yTG9vcC5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKK3B1YmxpYyBjbGFzcyBDIHsKKworICBwdWJsaWMgQyhpbnRbXSBpbnRzKSB7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBsZW5ndGggJiYgaW50c1tpXSA+IDA7IGkrKykgeworICAgICAgU3lzdGVtLm91dC5wcmludGxuKGludHNbaV0pOworICAgICAgU3lzdGVtLm91dC5wcmludGxuKGludHNbaV0pOworICAgICAgU3lzdGVtLm91dC5wcmludGxuKDxzZWxlY3Rpb24+aW50c1tpXTwvc2VsZWN0aW9uPik7CisgICAgfQorICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlVmFyaWFibGUvSW5zaWRlSWYuYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VWYXJpYWJsZS9JbnNpZGVJZi5hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY2ZjcwY2EKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlVmFyaWFibGUvSW5zaWRlSWYuYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDEwIEBACitwdWJsaWMgY2xhc3MgQyB7CisgICAgeworICAgICAgICBPYmplY3QgbyA9IGdldE8oKTsKKyAgICAgICAgU3RyaW5nIHMgPSAiIjsKKyAgICAgICAgaWYgKG8gIT0gbnVsbCkgeworICAgICAgICAgICAgU3RyaW5nIHMxID0gby50b1N0cmluZygpOworICAgICAgICAgICAgcyArPSBzMTsKKyAgICAgICAgfQorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlVmFyaWFibGUvSW5zaWRlSWYuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VWYXJpYWJsZS9JbnNpZGVJZi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFkYTI1YzgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlVmFyaWFibGUvSW5zaWRlSWYuamF2YQpAQCAtMCwwICsxLDggQEAKK3B1YmxpYyBjbGFzcyBDIHsKKyAgICB7CisgICAgICAgIE9iamVjdCBvID0gZ2V0TygpOworICAgICAgICBTdHJpbmcgcyA9ICIiOworICAgICAgICBpZiAobyAhPSBudWxsKQorICAgICAgICAgICAgcyArPSA8c2VsZWN0aW9uPm8udG9TdHJpbmcoKTwvc2VsZWN0aW9uPjsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVZhcmlhYmxlL0luc2lkZVdoaWxlLmFmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlVmFyaWFibGUvSW5zaWRlV2hpbGUuYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZTA2OWJiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVZhcmlhYmxlL0luc2lkZVdoaWxlLmFmdGVyLmphdmEKQEAgLTAsMCArMSw5IEBACitjbGFzcyBUZXN0IHsKKyAgICBwdWJsaWMgdm9pZCBtZXRob2QoKSB7CisgICAgICAgIGludCBpID0gMDsKKyAgICAgICAgd2hpbGUoaSA8IDEwMCkgeworICAgICAgICAgICAgaW50IHRlbXAgPSBpKysgKiAyOworICAgICAgICAgICAgc3VtICs9IHRlbXA7CisgICAgICAgIH0KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVZhcmlhYmxlL0luc2lkZVdoaWxlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlVmFyaWFibGUvSW5zaWRlV2hpbGUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NmJmZDkzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVZhcmlhYmxlL0luc2lkZVdoaWxlLmphdmEKQEAgLTAsMCArMSw3IEBACitjbGFzcyBUZXN0IHsKKyAgICBwdWJsaWMgdm9pZCBtZXRob2QoKSB7CisgICAgICAgIGludCBpID0gMDsKKyAgICAgICAgd2hpbGUoaSA8IDEwMCkKKyAgICAgICAgICAgIHN1bSArPSA8c2VsZWN0aW9uPmkrKyAqIDI8L3NlbGVjdGlvbj47CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VWYXJpYWJsZS9JbnZhbGlkUG9zdGZpeEV4cHIuYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VWYXJpYWJsZS9JbnZhbGlkUG9zdGZpeEV4cHIuYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZjJhNmQxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVZhcmlhYmxlL0ludmFsaWRQb3N0Zml4RXhwci5hZnRlci5qYXZhCkBAIC0wLDAgKzEsOCBAQAorcHVibGljIGNsYXNzIFNvbWVDbGFzcyB7CisgICAgaW50W10gYTsKKyAgICAKKyAgICB7CisgICAgICAgIGludFtdIGExID0gYTsKKyAgICAgICAgYTErKzsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVZhcmlhYmxlL0ludmFsaWRQb3N0Zml4RXhwci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVZhcmlhYmxlL0ludmFsaWRQb3N0Zml4RXhwci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhmMzEyNWMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlVmFyaWFibGUvSW52YWxpZFBvc3RmaXhFeHByLmphdmEKQEAgLTAsMCArMSw3IEBACitwdWJsaWMgY2xhc3MgU29tZUNsYXNzIHsKKyAgICBpbnRbXSBhOworICAgIAorICAgIHsKKyAgICAgICAgPHNlbGVjdGlvbj5hPC9zZWxlY3Rpb24+Kys7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VWYXJpYWJsZS9MYW1iZGFFeHByLmFmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlVmFyaWFibGUvTGFtYmRhRXhwci5hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU4NTg1NjcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlVmFyaWFibGUvTGFtYmRhRXhwci5hZnRlci5qYXZhCkBAIC0wLDAgKzEsMTEgQEAKK2ludGVyZmFjZSBTQU08WD4geworICAgICAgICBYIG0oaW50IGksIGludCBqKTsKKyAgICB9CisKK2NsYXNzIEZvbyB7ICAKKyAgICB2b2lkIHRlc3QoKSB7CisgICAgICAgIFNBTTxJbnRlZ2VyPiBjID0gKGksIGopIC0+IGkgKyBqOworICAgICAgICBtKGMpOworICAgIH0KKyAgICB2b2lkIG0oU0FNPEludGVnZXI+IHMpIHsgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VWYXJpYWJsZS9MYW1iZGFFeHByLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlVmFyaWFibGUvTGFtYmRhRXhwci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBkNzc4NDkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlVmFyaWFibGUvTGFtYmRhRXhwci5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKK2ludGVyZmFjZSBTQU08WD4geworICAgICAgICBYIG0oaW50IGksIGludCBqKTsKKyAgICB9CisKK2NsYXNzIEZvbyB7ICAKKyAgICB2b2lkIHRlc3QoKSB7CisgICAgICAgIG0oPHNlbGVjdGlvbj4oaSwgaikgLT4gaSArIGo8L3NlbGVjdGlvbj4pOworICAgIH0KKyAgICB2b2lkIG0oU0FNPEludGVnZXI+IHMpIHsgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VWYXJpYWJsZS9MYW1iZGFFeHByTm90QWNjZXB0ZWQuYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VWYXJpYWJsZS9MYW1iZGFFeHByTm90QWNjZXB0ZWQuYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lOGQ3NzAyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVZhcmlhYmxlL0xhbWJkYUV4cHJOb3RBY2NlcHRlZC5hZnRlci5qYXZhCkBAIC0wLDAgKzEsMTEgQEAKK2ludGVyZmFjZSBTQU08WD4geworICAgICAgICBYIG0oaW50IGksIGludCBqKTsKKyAgICB9CisKK2NsYXNzIEZvbyB7ICAKKyAgICB2b2lkIHRlc3QoKSB7CisgICAgICAgIFNBTTxTdHJpbmc+IGMgPSAoaSwgaikgLT4gIiIgKyBpICsgajsKKyAgICAgICAgU0FNPEludGVnZXI+IHMzID0gbShjKTsKKyAgICB9CisgICAgPFg+IFNBTTxYPiBtKFNBTTxYPiBzKSB7IHJldHVybiBudWxsOyB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVZhcmlhYmxlL0xhbWJkYUV4cHJOb3RBY2NlcHRlZC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVZhcmlhYmxlL0xhbWJkYUV4cHJOb3RBY2NlcHRlZC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNiYjQ3ZjkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlVmFyaWFibGUvTGFtYmRhRXhwck5vdEFjY2VwdGVkLmphdmEKQEAgLTAsMCArMSwxMCBAQAoraW50ZXJmYWNlIFNBTTxYPiB7CisgICAgICAgIFggbShpbnQgaSwgaW50IGopOworICAgIH0KKworY2xhc3MgRm9vIHsgIAorICAgIHZvaWQgdGVzdCgpIHsKKyAgICAgIFNBTTxJbnRlZ2VyPiBzMyA9IG0oPHNlbGVjdGlvbj4oaSwgaikgLT4gIiIgKyBpICsgajwvc2VsZWN0aW9uPik7CisgICAgfQorICAgIDxYPiBTQU08WD4gbShTQU08WD4gcykgeyByZXR1cm4gbnVsbDsgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VWYXJpYWJsZS9NZXRob2RDYWxsLmFmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlVmFyaWFibGUvTWV0aG9kQ2FsbC5hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI5NjFmMjEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlVmFyaWFibGUvTWV0aG9kQ2FsbC5hZnRlci5qYXZhCkBAIC0wLDAgKzEsMTEgQEAKK2NsYXNzIEEgeworICAgIE9iamVjdCBnZXRPYmplY3QoKSB7CisgICAgICAgIHJldHVybiBudWxsOworICAgIH0KKworICAgIHZvaWQgbWV0aG9kKCkgeworICAgICAgICBmaW5hbCBPYmplY3QgdGVtcCA9IGdldE9iamVjdCgpOworICAgICAgICBPYmplY3QgbyA9IHRlbXA7CisgICAgICAgIHJldHVybiB0ZW1wLmhhc2hDb2RlKCk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VWYXJpYWJsZS9NZXRob2RDYWxsLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlVmFyaWFibGUvTWV0aG9kQ2FsbC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ0Njc0MGEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlVmFyaWFibGUvTWV0aG9kQ2FsbC5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKK2NsYXNzIEEgeworICAgIE9iamVjdCBnZXRPYmplY3QoKSB7CisgICAgICAgIHJldHVybiBudWxsOworICAgIH0KKworICAgIHZvaWQgbWV0aG9kKCkgeworICAgICAgICBPYmplY3QgbyA9IDxzZWxlY3Rpb24+Z2V0T2JqZWN0KCk8L3NlbGVjdGlvbj47CisgICAgICAgIHJldHVybiBnZXRPYmplY3QoKS5oYXNoQ29kZSgpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlVmFyaWFibGUvTWV0aG9kQ2FsbEluU3dpdGNoLmFmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlVmFyaWFibGUvTWV0aG9kQ2FsbEluU3dpdGNoLmFmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGNmZDY3ZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VWYXJpYWJsZS9NZXRob2RDYWxsSW5Td2l0Y2guYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDEyIEBACitjbGFzcyBBIHsKKyAgICBpbnQgZ2V0Q29udGVudEVsZW1lbnRUeXBlKCkgeworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICB2b2lkIG1ldGhvZCgpIHsKKyAgICAgICAgZmluYWwgaW50IGkgPSBnZXRDb250ZW50RWxlbWVudFR5cGUoKTsKKyAgICAgICAgc3dpdGNoIChpKSB7CisgICAgICAgICAgICBkZWZhdWx0OiB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJXcm9uZyBjb250ZW50IHR5cGU6ICIgKyBpKTsKKyAgICAgICAgfQorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlVmFyaWFibGUvTWV0aG9kQ2FsbEluU3dpdGNoLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlVmFyaWFibGUvTWV0aG9kQ2FsbEluU3dpdGNoLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTgyNmFkOQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VWYXJpYWJsZS9NZXRob2RDYWxsSW5Td2l0Y2guamF2YQpAQCAtMCwwICsxLDExIEBACitjbGFzcyBBIHsKKyAgICBpbnQgZ2V0Q29udGVudEVsZW1lbnRUeXBlKCkgeworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICB2b2lkIG1ldGhvZCgpIHsKKyAgICAgICAgc3dpdGNoICg8c2VsZWN0aW9uPmdldENvbnRlbnRFbGVtZW50VHlwZSgpPC9zZWxlY3Rpb24+KSB7CisgICAgICAgICAgICBkZWZhdWx0OiB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJXcm9uZyBjb250ZW50IHR5cGU6ICIgKyBnZXRDb250ZW50RWxlbWVudFR5cGUoKSk7CisgICAgICAgIH0KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVZhcmlhYmxlL01ldGhvZFJlZi5hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVZhcmlhYmxlL01ldGhvZFJlZi5hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY4NzNiZGUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlVmFyaWFibGUvTWV0aG9kUmVmLmFmdGVyLmphdmEKQEAgLTAsMCArMSwxNSBAQAorY2xhc3MgVGVzdCB7CisgIHsKKyAgICAgIEJhciBjID0gVGVzdDo6bGVuZ3RoOworICAgICAgYmFyKGMpOworICB9CisKKyAgcHVibGljIHN0YXRpYyBJbnRlZ2VyIGxlbmd0aChTdHJpbmcgcykgeworICAgIHJldHVybiBzLmxlbmd0aCgpOworICB9CisKKyAgICBzdGF0aWMgdm9pZCBiYXIoQmFyIGJhcikge30KKyAgaW50ZXJmYWNlIEJhciB7CisgICAgSW50ZWdlciBfKFN0cmluZyBzKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VWYXJpYWJsZS9NZXRob2RSZWYuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VWYXJpYWJsZS9NZXRob2RSZWYuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMmU3M2FiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVZhcmlhYmxlL01ldGhvZFJlZi5qYXZhCkBAIC0wLDAgKzEsMTQgQEAKK2NsYXNzIFRlc3QgeworICB7CisgICAgICBiYXIoPHNlbGVjdGlvbj5UZXN0OjpsZW5ndGg8L3NlbGVjdGlvbj4pOworICB9CisKKyAgcHVibGljIHN0YXRpYyBJbnRlZ2VyIGxlbmd0aChTdHJpbmcgcykgeworICAgIHJldHVybiBzLmxlbmd0aCgpOworICB9CisKKyAgICBzdGF0aWMgdm9pZCBiYXIoQmFyIGJhcikge30KKyAgaW50ZXJmYWNlIEJhciB7CisgICAgSW50ZWdlciBfKFN0cmluZyBzKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VWYXJpYWJsZS9NdWx0aUNhdGNoU2ltcGxlLmFmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlVmFyaWFibGUvTXVsdGlDYXRjaFNpbXBsZS5hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNmMTZlMGIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlVmFyaWFibGUvTXVsdGlDYXRjaFNpbXBsZS5hZnRlci5qYXZhCkBAIC0wLDAgKzEsMTEgQEAKK2NsYXNzIEMgeworICAgIHN0YXRpYyBjbGFzcyBFMSBleHRlbmRzIEV4Y2VwdGlvbiB7IH0KKyAgICBzdGF0aWMgY2xhc3MgRTIgZXh0ZW5kcyBFeGNlcHRpb24geyB9CisKKyAgICB2b2lkIG0oKSB7CisgICAgICAgIHRyeSB7IH0KKyAgICAgICAgY2F0Y2ggKEUxIHwgRTIgZXgpIHsKKyAgICAgICAgICAgIGZpbmFsIEV4Y2VwdGlvbiBlID0gZXg7CisgICAgICAgIH0KKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlVmFyaWFibGUvTXVsdGlDYXRjaFNpbXBsZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVZhcmlhYmxlL011bHRpQ2F0Y2hTaW1wbGUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ODI3NTVjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVZhcmlhYmxlL011bHRpQ2F0Y2hTaW1wbGUuamF2YQpAQCAtMCwwICsxLDExIEBACitjbGFzcyBDIHsKKyAgICBzdGF0aWMgY2xhc3MgRTEgZXh0ZW5kcyBFeGNlcHRpb24geyB9CisgICAgc3RhdGljIGNsYXNzIEUyIGV4dGVuZHMgRXhjZXB0aW9uIHsgfQorCisgICAgdm9pZCBtKCkgeworICAgICAgICB0cnkgeyB9CisgICAgICAgIGNhdGNoIChFMSB8IEUyIGV4KSB7CisgICAgICAgICAgICA8Y2FyZXQ+ZXg7CisgICAgICAgIH0KKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlVmFyaWFibGUvTXVsdGlDYXRjaFR5cGVkLmFmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlVmFyaWFibGUvTXVsdGlDYXRjaFR5cGVkLmFmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjRmNmQ5MAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VWYXJpYWJsZS9NdWx0aUNhdGNoVHlwZWQuYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDEyIEBACitjbGFzcyBDIHsKKyAgICBpbnRlcmZhY2UgQjxUPiB7IH0KKyAgICBzdGF0aWMgY2xhc3MgRTEgZXh0ZW5kcyBFeGNlcHRpb24gaW1wbGVtZW50cyBCPEludGVnZXI+IHsgfQorICAgIHN0YXRpYyBjbGFzcyBFMiBleHRlbmRzIEV4Y2VwdGlvbiBpbXBsZW1lbnRzIEI8TG9uZz4geyB9CisKKyAgICB2b2lkIG0oKSB7CisgICAgICAgIHRyeSB7IH0KKyAgICAgICAgY2F0Y2ggKEUxIHwgRTIgZXgpIHsKKyAgICAgICAgICAgIGZpbmFsIEV4Y2VwdGlvbiBiID0gZXg7CisgICAgICAgIH0KKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlVmFyaWFibGUvTXVsdGlDYXRjaFR5cGVkLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlVmFyaWFibGUvTXVsdGlDYXRjaFR5cGVkLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmE4Y2U0ZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VWYXJpYWJsZS9NdWx0aUNhdGNoVHlwZWQuamF2YQpAQCAtMCwwICsxLDEyIEBACitjbGFzcyBDIHsKKyAgICBpbnRlcmZhY2UgQjxUPiB7IH0KKyAgICBzdGF0aWMgY2xhc3MgRTEgZXh0ZW5kcyBFeGNlcHRpb24gaW1wbGVtZW50cyBCPEludGVnZXI+IHsgfQorICAgIHN0YXRpYyBjbGFzcyBFMiBleHRlbmRzIEV4Y2VwdGlvbiBpbXBsZW1lbnRzIEI8TG9uZz4geyB9CisKKyAgICB2b2lkIG0oKSB7CisgICAgICAgIHRyeSB7IH0KKyAgICAgICAgY2F0Y2ggKEUxIHwgRTIgZXgpIHsKKyAgICAgICAgICAgIDxjYXJldD5leDsKKyAgICAgICAgfQorICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VWYXJpYWJsZS9OYW1lU3VnZ2VzdGlvbi5hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVZhcmlhYmxlL05hbWVTdWdnZXN0aW9uLmFmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTRlZTEyZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VWYXJpYWJsZS9OYW1lU3VnZ2VzdGlvbi5hZnRlci5qYXZhCkBAIC0wLDAgKzEsOSBAQAorYWJzdHJhY3QgY2xhc3MgUGF0aCBpbXBsZW1lbnRzIEl0ZXJhYmxlPFBhdGg+e30KK2NsYXNzIFBhdGhzIHsKKyAgcHVibGljIHN0YXRpYyBQYXRoIGdldChTdHJpbmcgcykge3JldHVybiBudWxsO30KK30KK2NsYXNzIFVzYWdlIHsKKyAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgeworICAgICAgUGF0aCBwYXRoID0gUGF0aHMuZ2V0KCIiKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VWYXJpYWJsZS9OYW1lU3VnZ2VzdGlvbi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVZhcmlhYmxlL05hbWVTdWdnZXN0aW9uLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjY4YWEwMQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VWYXJpYWJsZS9OYW1lU3VnZ2VzdGlvbi5qYXZhCkBAIC0wLDAgKzEsOSBAQAorYWJzdHJhY3QgY2xhc3MgUGF0aCBpbXBsZW1lbnRzIEl0ZXJhYmxlPFBhdGg+e30KK2NsYXNzIFBhdGhzIHsKKyAgcHVibGljIHN0YXRpYyBQYXRoIGdldChTdHJpbmcgcykge3JldHVybiBudWxsO30KK30KK2NsYXNzIFVzYWdlIHsKKyAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgeworICAgIDxzZWxlY3Rpb24+UGF0aHMuZ2V0KCIiKTwvc2VsZWN0aW9uPgorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVZhcmlhYmxlL05vQXJyYXlGcm9tVmFyYXJncy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVZhcmlhYmxlL05vQXJyYXlGcm9tVmFyYXJncy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc4MDQxYjIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlVmFyaWFibGUvTm9BcnJheUZyb21WYXJhcmdzLmphdmEKQEAgLTAsMCArMSw3IEBACitpbXBvcnQgamF2YS51dGlsLkFycmF5czsKKworY2xhc3MgQSB7CisgICAgcHVibGljIHZvaWQgdGVzdCgpIHsKKyAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihBcnJheXMuYXNMaXN0KCJmcjxzZWxlY3Rpb24+c3QiLCAic2NuZCIsICJ0aGlyZCI8L3NlbGVjdGlvbj4sICI0dGgiKSk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VWYXJpYWJsZS9Ob0FycmF5RnJvbVZhcmFyZ3MxLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlVmFyaWFibGUvTm9BcnJheUZyb21WYXJhcmdzMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMxMDk4ZTJmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVZhcmlhYmxlL05vQXJyYXlGcm9tVmFyYXJnczEuamF2YQpAQCAtMCwwICsxLDcgQEAKK2ltcG9ydCBqYXZhLnV0aWwuQXJyYXlzOworCitjbGFzcyBBIHsKKyAgICBwdWJsaWMgdm9pZCB0ZXN0KCkgeworICAgICAgU3lzdGVtLm91dC5wcmludGxuKEFycmF5cy5hc0xpc3QoIDIgKyA8c2VsZWN0aW9uPjMsICJzY25kIiwgInRoaXJkIjwvc2VsZWN0aW9uPiwgIjR0aCIpKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVZhcmlhYmxlL05vbkNvbmZsaWN0aW5nRmllbGQuYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VWYXJpYWJsZS9Ob25Db25mbGljdGluZ0ZpZWxkLmFmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDk4NTlmNAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VWYXJpYWJsZS9Ob25Db25mbGljdGluZ0ZpZWxkLmFmdGVyLmphdmEKQEAgLTAsMCArMSw5IEBACitjbGFzcyBCYXNlIHsKKyAgcHJpdmF0ZSBpbnQgbmFtZSA9IDA7Cit9CisKK2NsYXNzIENoaWxkIGV4dGVuZHMgQmFzZSB7CisgIHZvaWQgZm9vKCkgeworICAgICAgaW50IG5hbWUgPSAxOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVZhcmlhYmxlL05vbkNvbmZsaWN0aW5nRmllbGQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VWYXJpYWJsZS9Ob25Db25mbGljdGluZ0ZpZWxkLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDcyMTIyYQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VWYXJpYWJsZS9Ob25Db25mbGljdGluZ0ZpZWxkLmphdmEKQEAgLTAsMCArMSw5IEBACitjbGFzcyBCYXNlIHsKKyAgcHJpdmF0ZSBpbnQgbmFtZSA9IDA7Cit9CisKK2NsYXNzIENoaWxkIGV4dGVuZHMgQmFzZSB7CisgIHZvaWQgZm9vKCkgeworICAgIDxzZWxlY3Rpb24+MTwvc2VsZWN0aW9uPgorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVZhcmlhYmxlL05vbkV4cHJlc3Npb24uYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VWYXJpYWJsZS9Ob25FeHByZXNzaW9uLmFmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTBlNWFlOQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VWYXJpYWJsZS9Ob25FeHByZXNzaW9uLmFmdGVyLmphdmEKQEAgLTAsMCArMSw3IEBACitjbGFzcyBBIHsKKyAgICBwdWJsaWMgdm9pZCB0ZXN0KCkgeworICAgICAgICBpbnQgYSA9IDA7IGludCBiID0gMDsgaW50IGMgPSAwOworICAgICAgICBmaW5hbCBpbnQgc3VtID0gYiArIGM7CisgICAgICAgIGludCBkID0gYSArIHN1bTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVZhcmlhYmxlL05vbkV4cHJlc3Npb24uamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VWYXJpYWJsZS9Ob25FeHByZXNzaW9uLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODIwN2U2NQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VWYXJpYWJsZS9Ob25FeHByZXNzaW9uLmphdmEKQEAgLTAsMCArMSw2IEBACitjbGFzcyBBIHsKKyAgICBwdWJsaWMgdm9pZCB0ZXN0KCkgeworICAgICAgICBpbnQgYSA9IDA7IGludCBiID0gMDsgaW50IGMgPSAwOworICAgICAgICBpbnQgZCA9IGEgKyA8c2VsZWN0aW9uPmIgKyBjPC9zZWxlY3Rpb24+OworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlVmFyaWFibGUvTm9uRXhwcmVzc2lvblByaW9yaXR5RmFpbHVyZS5hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVZhcmlhYmxlL05vbkV4cHJlc3Npb25Qcmlvcml0eUZhaWx1cmUuYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMDBmOTdkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVZhcmlhYmxlL05vbkV4cHJlc3Npb25Qcmlvcml0eUZhaWx1cmUuYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDYgQEAKK2NsYXNzIEEgeworICAgIHB1YmxpYyB2b2lkIHRlc3QoKSB7CisgICAgICAgIGludCBhID0gMDsgaW50IGIgPSAwOyBpbnQgYyA9IDA7CisgICAgICAgIGludCBkID0gYSAtIDxzZWxlY3Rpb24+YiArIGM8L3NlbGVjdGlvbj47CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VWYXJpYWJsZS9Ob25FeHByZXNzaW9uUHJpb3JpdHlGYWlsdXJlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlVmFyaWFibGUvTm9uRXhwcmVzc2lvblByaW9yaXR5RmFpbHVyZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIwMGY5N2QKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlVmFyaWFibGUvTm9uRXhwcmVzc2lvblByaW9yaXR5RmFpbHVyZS5qYXZhCkBAIC0wLDAgKzEsNiBAQAorY2xhc3MgQSB7CisgICAgcHVibGljIHZvaWQgdGVzdCgpIHsKKyAgICAgICAgaW50IGEgPSAwOyBpbnQgYiA9IDA7IGludCBjID0gMDsKKyAgICAgICAgaW50IGQgPSBhIC0gPHNlbGVjdGlvbj5iICsgYzwvc2VsZWN0aW9uPjsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVZhcmlhYmxlL05vcm1hbGl6ZURlY2xhcmF0aW9ucy5hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVZhcmlhYmxlL05vcm1hbGl6ZURlY2xhcmF0aW9ucy5hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU1YjM4OGYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlVmFyaWFibGUvTm9ybWFsaXplRGVjbGFyYXRpb25zLmFmdGVyLmphdmEKQEAgLTAsMCArMSw4IEBACitjbGFzcyBYIHsKKyAgICB7CisgICAgICAgIGludCBpID0gMDsKKyAgICAgICAgaW50IGkzID0gaTsKKyAgICAgICAgaW50IGkxID0gMDsKKyAgICAgICAgaW50IGkyID0gaTM7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VWYXJpYWJsZS9Ob3JtYWxpemVEZWNsYXJhdGlvbnMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VWYXJpYWJsZS9Ob3JtYWxpemVEZWNsYXJhdGlvbnMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NTQ5MTYwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVZhcmlhYmxlL05vcm1hbGl6ZURlY2xhcmF0aW9ucy5qYXZhCkBAIC0wLDAgKzEsNSBAQAorY2xhc3MgWCB7CisgICAgeworICAgICAgICBpbnQgaSA9IDAsIGkxID0gMCwgaTIgPSA8c2VsZWN0aW9uPmk8L3NlbGVjdGlvbj47CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VWYXJpYWJsZS9PbmVMaW5lTGFtYmRhVmFsdWVDb21wYXRpYmxlLmFmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlVmFyaWFibGUvT25lTGluZUxhbWJkYVZhbHVlQ29tcGF0aWJsZS5hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE0ZGJlOWMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlVmFyaWFibGUvT25lTGluZUxhbWJkYVZhbHVlQ29tcGF0aWJsZS5hZnRlci5qYXZhCkBAIC0wLDAgKzEsMjMgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwMC0yMDEyIEpldEJyYWlucyBzLnIuby4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitjbGFzcyBGb28geyAgCisgICAgdm9pZCB0ZXN0KCkgeworICAgICAgICBDb21wYXJhYmxlPFN0cmluZz4gamF2YSA9IG8gLT4geworICAgICAgICAgICAgaW50IGMgPSBvLmxlbmd0aCgpOworICAgICAgICAgICAgcmV0dXJuIGM7CisgICAgICAgIH07CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VWYXJpYWJsZS9PbmVMaW5lTGFtYmRhVmFsdWVDb21wYXRpYmxlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlVmFyaWFibGUvT25lTGluZUxhbWJkYVZhbHVlQ29tcGF0aWJsZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEwNGU1MjIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlVmFyaWFibGUvT25lTGluZUxhbWJkYVZhbHVlQ29tcGF0aWJsZS5qYXZhCkBAIC0wLDAgKzEsMjAgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwMC0yMDEyIEpldEJyYWlucyBzLnIuby4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitjbGFzcyBGb28geyAgCisgICAgdm9pZCB0ZXN0KCkgeworICAgICAgICBDb21wYXJhYmxlPFN0cmluZz4gamF2YSA9IG8gLT4gPHNlbGVjdGlvbj5vLmxlbmd0aCgpPC9zZWxlY3Rpb24+OworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlVmFyaWFibGUvT25lTGluZUxhbWJkYVZvaWRDb21wYXRpYmxlLmFmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlVmFyaWFibGUvT25lTGluZUxhbWJkYVZvaWRDb21wYXRpYmxlLmFmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzNjZjQ3ZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VWYXJpYWJsZS9PbmVMaW5lTGFtYmRhVm9pZENvbXBhdGlibGUuYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDggQEAKK2NsYXNzIEZvbyB7ICAKKyAgICB2b2lkIHRlc3QoKSB7CisgICAgICAgIFJ1bm5hYmxlIGphdmEgPSAoKSAtPiB7CisgICAgICAgICAgICBTdHJpbmcgYyA9ICIiOworICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKGMpOworICAgICAgICB9OworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlVmFyaWFibGUvT25lTGluZUxhbWJkYVZvaWRDb21wYXRpYmxlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlVmFyaWFibGUvT25lTGluZUxhbWJkYVZvaWRDb21wYXRpYmxlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTkwNWY2YQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VWYXJpYWJsZS9PbmVMaW5lTGFtYmRhVm9pZENvbXBhdGlibGUuamF2YQpAQCAtMCwwICsxLDUgQEAKK2NsYXNzIEZvbyB7ICAKKyAgICB2b2lkIHRlc3QoKSB7CisgICAgICAgIFJ1bm5hYmxlIGphdmEgPSAoKSAtPiBTeXN0ZW0ub3V0LnByaW50bG4oPHNlbGVjdGlvbj4iIjwvc2VsZWN0aW9uPik7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VWYXJpYWJsZS9QYXJlbnRoaXplZC5hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVZhcmlhYmxlL1BhcmVudGhpemVkLmFmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWNlNzAyNwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VWYXJpYWJsZS9QYXJlbnRoaXplZC5hZnRlci5qYXZhCkBAIC0wLDAgKzEsNiBAQAorY2xhc3MgQSB7CisgICAgdm9pZCBtZXRob2QoKSB7CisgICAgICAgIGludCB0ZW1wID0gMSArIDI7CisgICAgICAgIGludCBrID0gdGVtcDsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVZhcmlhYmxlL1BhcmVudGhpemVkLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlVmFyaWFibGUvUGFyZW50aGl6ZWQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZDY5ODUxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVZhcmlhYmxlL1BhcmVudGhpemVkLmphdmEKQEAgLTAsMCArMSw1IEBACitjbGFzcyBBIHsKKyAgICB2b2lkIG1ldGhvZCgpIHsKKyAgICAgICAgaW50IGsgPSA8c2VsZWN0aW9uPigxICsgMik8L3NlbGVjdGlvbj47CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VWYXJpYWJsZS9QYXJlbnRoaXplZE9jY3VyZW5jZS5hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVZhcmlhYmxlL1BhcmVudGhpemVkT2NjdXJlbmNlLmFmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzZmYWI2YgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VWYXJpYWJsZS9QYXJlbnRoaXplZE9jY3VyZW5jZS5hZnRlci5qYXZhCkBAIC0wLDAgKzEsMTQgQEAKK2ltcG9ydCBqYXZhLnV0aWwuKjsKKworcHVibGljIGNsYXNzIEludHJvZHVjZSB7CisgICAgcHJpdmF0ZSBzdGF0aWMgTGlzdCBfbGlzdCA9IG5ldyBBcnJheUxpc3QoKTsKKworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKKyAgICAgICAgZmluYWwgYm9vbGVhbiBlbXB0eSA9IF9saXN0LmlzRW1wdHkoKTsKKyAgICAgICAgZmluYWwgYm9vbGVhbiBpbnZpc2libGUgPSAoIWVtcHR5KTsKKyAgICAgICAgZmluYWwgYm9vbGVhbiB2aXNpYmxlID0gZW1wdHk7CisKKyAgICAgICAgaWYoIiIuZXF1YWxzKF9saXN0LmdldCgwKSkgfHwgZW1wdHkpIHsKKyAgICAgICAgfQorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlVmFyaWFibGUvUGFyZW50aGl6ZWRPY2N1cmVuY2UuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VWYXJpYWJsZS9QYXJlbnRoaXplZE9jY3VyZW5jZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdlMDE4ZjUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlVmFyaWFibGUvUGFyZW50aGl6ZWRPY2N1cmVuY2UuamF2YQpAQCAtMCwwICsxLDEzIEBACitpbXBvcnQgamF2YS51dGlsLio7CisKK3B1YmxpYyBjbGFzcyBJbnRyb2R1Y2UgeworICAgIHByaXZhdGUgc3RhdGljIExpc3QgX2xpc3QgPSBuZXcgQXJyYXlMaXN0KCk7CisKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CisgICAgICAgIGZpbmFsIGJvb2xlYW4gaW52aXNpYmxlID0gKCE8c2VsZWN0aW9uPl9saXN0LmlzRW1wdHkoKTwvc2VsZWN0aW9uPik7CisgICAgICAgIGZpbmFsIGJvb2xlYW4gdmlzaWJsZSA9IChfbGlzdC5pc0VtcHR5KCkpOworCisgICAgICAgIGlmKCIiLmVxdWFscyhfbGlzdC5nZXQoMCkpIHx8IF9saXN0LmlzRW1wdHkoKSkgeworICAgICAgICB9CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VWYXJpYWJsZS9QYXJlbnRoaXplZE9jY3VyZW5jZTEuYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VWYXJpYWJsZS9QYXJlbnRoaXplZE9jY3VyZW5jZTEuYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNThhYWY3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVZhcmlhYmxlL1BhcmVudGhpemVkT2NjdXJlbmNlMS5hZnRlci5qYXZhCkBAIC0wLDAgKzEsNSBAQAorcHVibGljIGNsYXNzIEludHJvZHVjZSB7CisgICAgdm9pZCBmb28oU3RyaW5nIHN0cikgeworICAgICAgICBmaW5hbCBTdHJpbmcgcyA9IChTdHJpbmcpIHN0cjsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVZhcmlhYmxlL1BhcmVudGhpemVkT2NjdXJlbmNlMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVZhcmlhYmxlL1BhcmVudGhpemVkT2NjdXJlbmNlMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUyODFiYTIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlVmFyaWFibGUvUGFyZW50aGl6ZWRPY2N1cmVuY2UxLmphdmEKQEAgLTAsMCArMSw1IEBACitwdWJsaWMgY2xhc3MgSW50cm9kdWNlIHsKKyAgICB2b2lkIGZvbyhTdHJpbmcgc3RyKSB7CisgICAgICA8c2VsZWN0aW9uPigoU3RyaW5nKXN0cik8L3NlbGVjdGlvbj4KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVZhcmlhYmxlL1BvbHlhZGljLmFmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlVmFyaWFibGUvUG9seWFkaWMuYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNzZhYjFmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVZhcmlhYmxlL1BvbHlhZGljLmFmdGVyLmphdmEKQEAgLTAsMCArMSw0MSBAQAorLyoKKyAqIENvcHlyaWdodCAyMDAwLTIwMTIgSmV0QnJhaW5zIHMuci5vLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3B1YmxpYyBjbGFzcyBDIHsKKyAgdm9pZCBmb28oYm9vbGVhbiBhLCBib29sZWFuIGIsIGJvb2xlYW4gYykgeworICAgICAgIGJvb2xlYW4gb3B0aW9uMSA9IHRydWU7CisgICAgICAgYm9vbGVhbiBvcHRpb24yID0gdHJ1ZTsKKyAgICAgIGZpbmFsIGJvb2xlYW4gYjEgPSBhICYmIGI7CisgICAgICBpZiAob3B0aW9uMSkgeworICAgICAgICAgaWYgKG9wdGlvbjIpIHsKKyAgICAgICAgICAgaWYgKGIxICYmIGMpIHsKKyAgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIk9uZSIpOworICAgICAgICAgICB9CisgICAgICAgICB9CisgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgaWYgKGIxKSB7CisgICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJ0d28iKTsKKyAgICAgICAgICAgfQorICAgICAgICAgfQorICAgICAgIH0KKyAgICAgICBlbHNlIHsKKyAgICAgICAgIGlmIChiMSkgeworICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oInRocmVlIik7CisgICAgICAgICB9CisgICAgICAgfQorICAgICB9CisgIAorICAgIAorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VWYXJpYWJsZS9Qb2x5YWRpYy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVZhcmlhYmxlL1BvbHlhZGljLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzk1OTJlOAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VWYXJpYWJsZS9Qb2x5YWRpYy5qYXZhCkBAIC0wLDAgKzEsNDAgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwMC0yMDEyIEpldEJyYWlucyBzLnIuby4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwdWJsaWMgY2xhc3MgQyB7CisgIHZvaWQgZm9vKGJvb2xlYW4gYSwgYm9vbGVhbiBiLCBib29sZWFuIGMpIHsKKyAgICAgICBib29sZWFuIG9wdGlvbjEgPSB0cnVlOworICAgICAgIGJvb2xlYW4gb3B0aW9uMiA9IHRydWU7CisgICAgICAgaWYgKG9wdGlvbjEpIHsKKyAgICAgICAgIGlmIChvcHRpb24yKSB7CisgICAgICAgICAgIGlmICg8c2VsZWN0aW9uPmEgJiYgYjwvc2VsZWN0aW9uPiAmJiBjKSB7CisgICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJPbmUiKTsKKyAgICAgICAgICAgfQorICAgICAgICAgfQorICAgICAgICAgZWxzZSB7CisgICAgICAgICAgIGlmIChhICYmIGIpIHsKKyAgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oInR3byIpOworICAgICAgICAgICB9CisgICAgICAgICB9CisgICAgICAgfQorICAgICAgIGVsc2UgeworICAgICAgICAgaWYgKGEgJiYgYikgeworICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oInRocmVlIik7CisgICAgICAgICB9CisgICAgICAgfQorICAgICB9CisgIAorICAgIAorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VWYXJpYWJsZS9SZXBsYWNlQWxsLmFmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlVmFyaWFibGUvUmVwbGFjZUFsbC5hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ2ZDdiYzAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlVmFyaWFibGUvUmVwbGFjZUFsbC5hZnRlci5qYXZhCkBAIC0wLDAgKzEsOCBAQAorY2xhc3MgVGVzdCB7CisgICAgaW50IG1ldGhvZChTdHJpbmcgcDEsIGludCBwMikgeworICAgICAgICBmaW5hbCBTdHJpbmcgcyA9IHAxICsgcDI7CisgICAgICAgIGludCBpID0gczsKKyAgICAgICAgZm9yKGludCBsID0gaTsgbCA8PSBzOyBsKyspIAorICAgICAgICAgICAgc3VtICs9IHM7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VWYXJpYWJsZS9SZXBsYWNlQWxsLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlVmFyaWFibGUvUmVwbGFjZUFsbC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYyZjU2NTAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlVmFyaWFibGUvUmVwbGFjZUFsbC5qYXZhCkBAIC0wLDAgKzEsNyBAQAorY2xhc3MgVGVzdCB7CisgICAgaW50IG1ldGhvZChTdHJpbmcgcDEsIGludCBwMikgeworICAgICAgICBpbnQgaSA9IDxzZWxlY3Rpb24+cDEgKyBwMjwvc2VsZWN0aW9uPjsKKyAgICAgICAgZm9yKGludCBsID0gaTsgbCA8PSBwMSArIHAyOyBsKyspIAorICAgICAgICAgICAgc3VtICs9IHAxICsgcDI7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VWYXJpYWJsZS9SZXR1cm5TdGF0ZW1lbnRXaXRob3V0U2VtaWNvbG9uLmFmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlVmFyaWFibGUvUmV0dXJuU3RhdGVtZW50V2l0aG91dFNlbWljb2xvbi5hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgwNTlmZTYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlVmFyaWFibGUvUmV0dXJuU3RhdGVtZW50V2l0aG91dFNlbWljb2xvbi5hZnRlci5qYXZhCkBAIC0wLDAgKzEsNiBAQAorY2xhc3MgVGVzdCB7CisgIHB1YmxpYyBTdHJpbmcgYmxhKCkgeworICAgICAgZmluYWwgU3RyaW5nIGIgPSBTdHJpbmcuZm9ybWF0KCJmb28uYmFyLiVzIiwgIiIpOworICAgICAgcmV0dXJuIGIKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VWYXJpYWJsZS9SZXR1cm5TdGF0ZW1lbnRXaXRob3V0U2VtaWNvbG9uLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlVmFyaWFibGUvUmV0dXJuU3RhdGVtZW50V2l0aG91dFNlbWljb2xvbi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc5ZWZmZTAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlVmFyaWFibGUvUmV0dXJuU3RhdGVtZW50V2l0aG91dFNlbWljb2xvbi5qYXZhCkBAIC0wLDAgKzEsNSBAQAorY2xhc3MgVGVzdCB7CisgIHB1YmxpYyBTdHJpbmcgYmxhKCkgeworICAgIHJldHVybiBTdHJpbmcuPGNhcmV0PmZvcm1hdCgiZm9vLmJhci4lcyIsICIiKQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVZhcmlhYmxlL1NDUjEwNDEyLmFmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlVmFyaWFibGUvU0NSMTA0MTIuYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMWMxZWRjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVZhcmlhYmxlL1NDUjEwNDEyLmFmdGVyLmphdmEKQEAgLTAsMCArMSw2IEBACitjbGFzcyBUZXN0IHsKKyAgICB7CisgICAgICAgIFN0cmluZ1tdIG5ld1ZhciA9IHsiYSIsICJiIn07CisgICAgICAgIFN0cmluZ1tdIHMgPSBuZXdWYXI7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VWYXJpYWJsZS9TQ1IxMDQxMi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVZhcmlhYmxlL1NDUjEwNDEyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGE0NzY5ZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VWYXJpYWJsZS9TQ1IxMDQxMi5qYXZhCkBAIC0wLDAgKzEsNSBAQAorY2xhc3MgVGVzdCB7CisgICAgeworICAgICAgICBTdHJpbmdbXSBzID0gPHNlbGVjdGlvbj57ICJhIiwgImIiIH08L3NlbGVjdGlvbj47CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VWYXJpYWJsZS9TQ1IxODI5NS5hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVZhcmlhYmxlL1NDUjE4Mjk1LmFmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWQwZTY3OAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VWYXJpYWJsZS9TQ1IxODI5NS5hZnRlci5qYXZhCkBAIC0wLDAgKzEsOSBAQAorcHVibGljIGNsYXNzIFRoaW5nIHsKKworICAgIHByaXZhdGUgU3RyaW5nIGl0OworCisgICAgcHJpdmF0ZSB2b2lkIGR1bWIoKSB7CisgICAgICAgIFN0cmluZyBpdCA9IHRoaXMuaXQ7CisgICAgICAgIGl0Lmxlbmd0aCgpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlVmFyaWFibGUvU0NSMTgyOTUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VWYXJpYWJsZS9TQ1IxODI5NS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE0ODM1MDUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlVmFyaWFibGUvU0NSMTgyOTUuamF2YQpAQCAtMCwwICsxLDggQEAKK3B1YmxpYyBjbGFzcyBUaGluZyB7CisKKyAgICBwcml2YXRlIFN0cmluZyBpdDsKKworICAgIHByaXZhdGUgdm9pZCBkdW1iKCkgeworICAgICAgICA8c2VsZWN0aW9uPml0PC9zZWxlY3Rpb24+Lmxlbmd0aCgpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlVmFyaWFibGUvU0NSMTgyOTVhLmFmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlVmFyaWFibGUvU0NSMTgyOTVhLmFmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjA2YmM5MgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VWYXJpYWJsZS9TQ1IxODI5NWEuYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDggQEAKK3B1YmxpYyBjbGFzcyBUaGluZyB7CisKKyAgICBwcml2YXRlIFN0cmluZyBpdDsKKworICAgIHByaXZhdGUgdm9pZCBkdW1iKCkgeworICAgICAgICBTdHJpbmcgaXQgPSB0aGlzLml0OworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlVmFyaWFibGUvU0NSMTgyOTVhLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlVmFyaWFibGUvU0NSMTgyOTVhLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWFlOTg0MQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VWYXJpYWJsZS9TQ1IxODI5NWEuamF2YQpAQCAtMCwwICsxLDggQEAKK3B1YmxpYyBjbGFzcyBUaGluZyB7CisKKyAgICBwcml2YXRlIFN0cmluZyBpdDsKKworICAgIHByaXZhdGUgdm9pZCBkdW1iKCkgeworICAgICAgICA8c2VsZWN0aW9uPml0PC9zZWxlY3Rpb24+CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VWYXJpYWJsZS9TQ1IyMjcxOC5hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVZhcmlhYmxlL1NDUjIyNzE4LmFmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzQ5MjhmYwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VWYXJpYWJsZS9TQ1IyMjcxOC5hZnRlci5qYXZhCkBAIC0wLDAgKzEsOCBAQAorY2xhc3MgVGVzdCB7CisgICAgT2JqZWN0IG9iamVjdDsKKyAgICB2b2lkIGZvbygpIHsKKyAgICAgICAgZmluYWwgT2JqZWN0IG9iamVjdCA9IHRoaXMub2JqZWN0OworICAgICAgICBPYmplY3QgbyA9IG9iamVjdDsgLy8gb2JqZWN0IGlzIHNlbGVjdGVkCisgICAgICAgIE9iamVjdCBwID0gb2JqZWN0OworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlVmFyaWFibGUvU0NSMjI3MTguamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VWYXJpYWJsZS9TQ1IyMjcxOC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI2NGUwMzcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlVmFyaWFibGUvU0NSMjI3MTguamF2YQpAQCAtMCwwICsxLDcgQEAKK2NsYXNzIFRlc3QgeworICAgIE9iamVjdCBvYmplY3Q7CisgICAgdm9pZCBmb28oKSB7CisgICAgICAgIE9iamVjdCBvID0gPHNlbGVjdGlvbj5vYmplY3Q8L3NlbGVjdGlvbj47IC8vIG9iamVjdCBpcyBzZWxlY3RlZAorICAgICAgICBPYmplY3QgcCA9IG9iamVjdDsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVZhcmlhYmxlL1NDUjI2MDc1LmFmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlVmFyaWFibGUvU0NSMjYwNzUuYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jOTNkNzcwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVZhcmlhYmxlL1NDUjI2MDc1LmFmdGVyLmphdmEKQEAgLTAsMCArMSwxNSBAQAorY2xhc3MgQyB7CisgICAgU3RyaW5nIGYgKCkgeworICAgICAgIHJldHVybiBudWxsOworICAgIH0KKworICAgIEMgZ2V0UGFyZW50KCkge3JldHVybiBudWxsO30KKworICAgIHZvaWQgdGVzdCAoKSB7CisgICAgICAgIEMgYyA9IG5ldyBDKCk7CisgICAgICAgIFN0cmluZyB3cm9uZyA9IGMuZigpOworICAgICAgICB3aGlsZSAod3JvbmcgIT0gbnVsbCkgeworICAgICAgICAgICAgYyA9IGMuZ2V0UGFyZW50KCk7CisgICAgICAgIH0KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVZhcmlhYmxlL1NDUjI2MDc1LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlVmFyaWFibGUvU0NSMjYwNzUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NjQ0MTI2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVZhcmlhYmxlL1NDUjI2MDc1LmphdmEKQEAgLTAsMCArMSwxNCBAQAorY2xhc3MgQyB7CisgICAgU3RyaW5nIGYgKCkgeworICAgICAgIHJldHVybiBudWxsOworICAgIH0KKworICAgIEMgZ2V0UGFyZW50KCkge3JldHVybiBudWxsO30KKworICAgIHZvaWQgdGVzdCAoKSB7CisgICAgICAgIEMgYyA9IG5ldyBDKCk7CisgICAgICAgIHdoaWxlICg8c2VsZWN0aW9uPmMuZigpPC9zZWxlY3Rpb24+ICE9IG51bGwpIHsKKyAgICAgICAgICAgIGMgPSBjLmdldFBhcmVudCgpOworICAgICAgICB9CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VWYXJpYWJsZS9TQ1I0MDI4MS5hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVZhcmlhYmxlL1NDUjQwMjgxLmFmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjFmMTdlMQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VWYXJpYWJsZS9TQ1I0MDI4MS5hZnRlci5qYXZhCkBAIC0wLDAgKzEsMTMgQEAKK2NsYXNzIFNldDxUPiB7fQorCitjbGFzcyBNYXAgPEssVj4geworICAgIGNsYXNzIEVudHJ5PEssVj4geworICAgIH0KKyAgICBTZXQ8RW50cnk8SyxWPj4gZW50cmllcyAoKSB7IHJldHVybiBudWxsOyB9Cit9CisKK2NsYXNzIEMgeworICAgIHZvaWQgZm9vIChNYXA8PywgU3RyaW5nPiBzKSB7CisgICAgICAgIFNldDw/IGV4dGVuZHMgTWFwPD8sIFN0cmluZz4uRW50cnk8PywgU3RyaW5nPj4gdGVtcCA9IHMuZW50cmllcygpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlVmFyaWFibGUvU0NSNDAyODEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VWYXJpYWJsZS9TQ1I0MDI4MS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc2ODk4NmYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlVmFyaWFibGUvU0NSNDAyODEuamF2YQpAQCAtMCwwICsxLDEzIEBACitjbGFzcyBTZXQ8VD4ge30KKworY2xhc3MgTWFwIDxLLFY+IHsKKyAgICBjbGFzcyBFbnRyeTxLLFY+IHsKKyAgICB9CisgICAgU2V0PEVudHJ5PEssVj4+IGVudHJpZXMgKCkgeyByZXR1cm4gbnVsbDsgfQorfQorCitjbGFzcyBDIHsKKyAgICB2b2lkIGZvbyAoTWFwPD8sIFN0cmluZz4gcykgeworICAgICAgICA8c2VsZWN0aW9uPnMuZW50cmllcygpPC9zZWxlY3Rpb24+OworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlVmFyaWFibGUvU2NyMTY5MTAuYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VWYXJpYWJsZS9TY3IxNjkxMC5hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhhMzAwN2EKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlVmFyaWFibGUvU2NyMTY5MTAuYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDkgQEAKK2NsYXNzIEMgeworICB7CisgICAgU3RyaW5nIHMgPSAiVGV4dCI7CisgICAgaWYgKCgpKSB7CisgICAgICAgIGZpbmFsIGludCBpID0gcy5sZW5ndGgoKTsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJXaGF0ZXZlciIgKyBpKTsKKyAgICB9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlVmFyaWFibGUvU2NyMTY5MTAuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VWYXJpYWJsZS9TY3IxNjkxMC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRlZjAyYjUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlVmFyaWFibGUvU2NyMTY5MTAuamF2YQpAQCAtMCwwICsxLDcgQEAKK2NsYXNzIEMgeworICB7CisgICAgU3RyaW5nIHMgPSAiVGV4dCI7CisgICAgaWYgKCgpKQorICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJXaGF0ZXZlciIgKyA8c2VsZWN0aW9uPnMubGVuZ3RoKCk8L3NlbGVjdGlvbj4pOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVZhcmlhYmxlL1NpYmxpbmdJbm5lckNsYXNzVHlwZS5hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVZhcmlhYmxlL1NpYmxpbmdJbm5lckNsYXNzVHlwZS5hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE5Zjk0ZWIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlVmFyaWFibGUvU2libGluZ0lubmVyQ2xhc3NUeXBlLmFmdGVyLmphdmEKQEAgLTAsMCArMSwxMCBAQAorY2xhc3MgQSB7CisgIGNsYXNzIEIgeworICB9CisKKyAgY2xhc3MgQyB7CisgICAgIHZvaWQgdGVzdEhlcmUoKSB7CisgICAgICAgICBCIHZhcmkgPSBuZXcgQigpOworICAgICB9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlVmFyaWFibGUvU2libGluZ0lubmVyQ2xhc3NUeXBlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlVmFyaWFibGUvU2libGluZ0lubmVyQ2xhc3NUeXBlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWFhZWQxZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VWYXJpYWJsZS9TaWJsaW5nSW5uZXJDbGFzc1R5cGUuamF2YQpAQCAtMCwwICsxLDEwIEBACitjbGFzcyBBIHsKKyAgY2xhc3MgQiB7CisgIH0KKworICBjbGFzcyBDIHsKKyAgICAgdm9pZCB0ZXN0SGVyZSgpIHsKKyAgICAgICBuZXcgPGNhcmV0PkIoKQorICAgICB9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlVmFyaWFibGUvU2ltcGxlRXhwcmVzc2lvbi5hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVZhcmlhYmxlL1NpbXBsZUV4cHJlc3Npb24uYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMDk4YjY1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVZhcmlhYmxlL1NpbXBsZUV4cHJlc3Npb24uYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDUgQEAKK3B1YmxpYyBjbGFzcyBUZXN0IHsKKyAgICBwdWJsaWMgdm9pZCBtZXRob2QoKSB7CisgICAgICAgIGludCBpID0gMSArIDI7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VWYXJpYWJsZS9TaW1wbGVFeHByZXNzaW9uLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlVmFyaWFibGUvU2ltcGxlRXhwcmVzc2lvbi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc1ZTEyZDMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlVmFyaWFibGUvU2ltcGxlRXhwcmVzc2lvbi5qYXZhCkBAIC0wLDAgKzEsNSBAQAorcHVibGljIGNsYXNzIFRlc3QgeworICAgIHB1YmxpYyB2b2lkIG1ldGhvZCgpIHsKKyAgICAgICAgMSArIDIgPGNhcmV0PgorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlVmFyaWFibGUvU2tpcFNlbWljb2xvbi5hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVZhcmlhYmxlL1NraXBTZW1pY29sb24uYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NzdiYTFjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVZhcmlhYmxlL1NraXBTZW1pY29sb24uYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDYgQEAKK2NsYXNzIFRlc3QgeworICB2b2lkIGZvbygpIHsKKyAgICAgIGludCBtaTUgPSAwOworICAgICAgaW50IGkgPSBtaTU7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlVmFyaWFibGUvU2tpcFNlbWljb2xvbi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVZhcmlhYmxlL1NraXBTZW1pY29sb24uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kODBjZTM2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVZhcmlhYmxlL1NraXBTZW1pY29sb24uamF2YQpAQCAtMCwwICsxLDUgQEAKK2NsYXNzIFRlc3QgeworICB2b2lkIGZvbygpIHsKKyAgICBpbnQgaSA9IDxzZWxlY3Rpb24+MDs8L3NlbGVjdGlvbj4KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VWYXJpYWJsZS9TdGF0aWNDb25mbGljdGluZ0ZpZWxkLmFmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlVmFyaWFibGUvU3RhdGljQ29uZmxpY3RpbmdGaWVsZC5hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkxYTEzZjIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlVmFyaWFibGUvU3RhdGljQ29uZmxpY3RpbmdGaWVsZC5hZnRlci5qYXZhCkBAIC0wLDAgKzEsOSBAQAorY2xhc3MgWFlaIHsKKyAgICBzdGF0aWMgaW50IG5hbWU7CisKKyAgICB2b2lkIG1ldGhvZCgpIHsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKG5hbWUpOworICAgICAgICBpbnQgbmFtZSA9IDI3OworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oWFlaLm5hbWUpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlVmFyaWFibGUvU3RhdGljQ29uZmxpY3RpbmdGaWVsZC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVZhcmlhYmxlL1N0YXRpY0NvbmZsaWN0aW5nRmllbGQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44OGIyYWIxMwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VWYXJpYWJsZS9TdGF0aWNDb25mbGljdGluZ0ZpZWxkLmphdmEKQEAgLTAsMCArMSw5IEBACitjbGFzcyBYWVogeworICAgIHN0YXRpYyBpbnQgbmFtZTsKKworICAgIHZvaWQgbWV0aG9kKCkgeworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4obmFtZSk7CisgICAgICAgIDxzZWxlY3Rpb24+Mjc8L3NlbGVjdGlvbj4KKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKG5hbWUpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlVmFyaWFibGUvU3RhdGljSW1wb3J0LmFmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlVmFyaWFibGUvU3RhdGljSW1wb3J0LmFmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzkwZTk5ZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VWYXJpYWJsZS9TdGF0aWNJbXBvcnQuYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDcgQEAKK2ltcG9ydCBzdGF0aWMgamF2YS5sYW5nLkludGVnZXIuKjsKKworY2xhc3MgQSB7CisgICAgcHVibGljIHZvaWQgdGVzdCgpIHsKKyAgICAgICAgZmluYWwgaW50IGkgPSBNQVhfVkFMVUU7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VWYXJpYWJsZS9TdGF0aWNJbXBvcnQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VWYXJpYWJsZS9TdGF0aWNJbXBvcnQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41Mzk3YmY0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVZhcmlhYmxlL1N0YXRpY0ltcG9ydC5qYXZhCkBAIC0wLDAgKzEsNyBAQAoraW1wb3J0IHN0YXRpYyBqYXZhLmxhbmcuSW50ZWdlci4qOworCitjbGFzcyBBIHsKKyAgICBwdWJsaWMgdm9pZCB0ZXN0KCkgeworICAgICAgICA8c2VsZWN0aW9uPk1BWF9WQUxVRTwvc2VsZWN0aW9uPjsgCisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VWYXJpYWJsZS9TdWJFeHByZXNzaW9uRnJvbUludGVsbGlqaWRlYXJ1bGV6enouYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VWYXJpYWJsZS9TdWJFeHByZXNzaW9uRnJvbUludGVsbGlqaWRlYXJ1bGV6enouYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNzI3N2Y0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVZhcmlhYmxlL1N1YkV4cHJlc3Npb25Gcm9tSW50ZWxsaWppZGVhcnVsZXp6ei5hZnRlci5qYXZhCkBAIC0wLDAgKzEsNiBAQAorY2xhc3MgQSB7CisgICAgcHVibGljIHZvaWQgdGVzdCgpIHsKKyAgICAgICAgU3RyaW5nIHN0ciA9ICJzaW50ZWxsaWppZGVhcnVsZXp6enMiOworICAgICAgICBTdHJpbmcgcyA9ICJpbnRlbGxpamlkZWFydWxlenp6IiArIHN0ciArICJzaW50ZWxsaWppZGVhcnVsZXp6eiI7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VWYXJpYWJsZS9TdWJFeHByZXNzaW9uRnJvbUludGVsbGlqaWRlYXJ1bGV6enouamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VWYXJpYWJsZS9TdWJFeHByZXNzaW9uRnJvbUludGVsbGlqaWRlYXJ1bGV6enouamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NWQ2ODdlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVZhcmlhYmxlL1N1YkV4cHJlc3Npb25Gcm9tSW50ZWxsaWppZGVhcnVsZXp6ei5qYXZhCkBAIC0wLDAgKzEsNSBAQAorY2xhc3MgQSB7CisgICAgcHVibGljIHZvaWQgdGVzdCgpIHsKKyAgICAgICAgU3RyaW5nIHMgPSAiaW50ZWxsaWppZGVhcnVsZXp6ejxzZWxlY3Rpb24+c2ludGVsbGlqaWRlYXJ1bGV6enpzPC9zZWxlY3Rpb24+c2ludGVsbGlqaWRlYXJ1bGV6enoiOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlVmFyaWFibGUvU3ViTGl0ZXJhbC5hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVZhcmlhYmxlL1N1YkxpdGVyYWwuYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZjBlZmEyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVZhcmlhYmxlL1N1YkxpdGVyYWwuYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDYgQEAKK2NsYXNzIEEgeworICAgIHB1YmxpYyB2b2lkIHRlc3QoKSB7CisgICAgICAgIFN0cmluZyBzdHIgPSAic3MiOworICAgICAgICBTdHJpbmcgcyA9ICJzIiArIHN0ciArICJzIjsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVZhcmlhYmxlL1N1YkxpdGVyYWwuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VWYXJpYWJsZS9TdWJMaXRlcmFsLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzUwYWZlYwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VWYXJpYWJsZS9TdWJMaXRlcmFsLmphdmEKQEAgLTAsMCArMSw1IEBACitjbGFzcyBBIHsKKyAgICBwdWJsaWMgdm9pZCB0ZXN0KCkgeworICAgICAgICBTdHJpbmcgcyA9ICJzPHNlbGVjdGlvbj5zczwvc2VsZWN0aW9uPnMiOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlVmFyaWFibGUvU3ViTGl0ZXJhbDEuYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VWYXJpYWJsZS9TdWJMaXRlcmFsMS5hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFlYTEwOWYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlVmFyaWFibGUvU3ViTGl0ZXJhbDEuYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDYgQEAKK2NsYXNzIEEgeworICAgIHB1YmxpYyB2b2lkIHRlc3QoKSB7CisgICAgICAgIFN0cmluZyBzdHIgPSAic3MiOworICAgICAgICBTdHJpbmcgcyA9IHN0cjsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVZhcmlhYmxlL1N1YkxpdGVyYWwxLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlVmFyaWFibGUvU3ViTGl0ZXJhbDEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYjYwNjFiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVZhcmlhYmxlL1N1YkxpdGVyYWwxLmphdmEKQEAgLTAsMCArMSw1IEBACitjbGFzcyBBIHsKKyAgICBwdWJsaWMgdm9pZCB0ZXN0KCkgeworICAgICAgICBTdHJpbmcgcyA9ICI8c2VsZWN0aW9uPnNzPC9zZWxlY3Rpb24+IjsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVZhcmlhYmxlL1N1YkxpdGVyYWxGcm9tRXhwcmVzc2lvbi5hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVZhcmlhYmxlL1N1YkxpdGVyYWxGcm9tRXhwcmVzc2lvbi5hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNiNDM1MGIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlVmFyaWFibGUvU3ViTGl0ZXJhbEZyb21FeHByZXNzaW9uLmFmdGVyLmphdmEKQEAgLTAsMCArMSw3IEBACitjbGFzcyBBIHsKKyAgICBwdWJsaWMgdm9pZCB0ZXN0KCkgeworICAgICAgICBpbnQgaSA9IDA7CisgICAgICAgIFN0cmluZyBzdHIgPSBpICsgInNzcyI7CisgICAgICAgIFN0cmluZyBzID0gc3RyICsgInMiOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlVmFyaWFibGUvU3ViTGl0ZXJhbEZyb21FeHByZXNzaW9uLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlVmFyaWFibGUvU3ViTGl0ZXJhbEZyb21FeHByZXNzaW9uLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGM0YWEzZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VWYXJpYWJsZS9TdWJMaXRlcmFsRnJvbUV4cHJlc3Npb24uamF2YQpAQCAtMCwwICsxLDYgQEAKK2NsYXNzIEEgeworICAgIHB1YmxpYyB2b2lkIHRlc3QoKSB7CisgICAgICAgIGludCBpID0gMDsKKyAgICAgICAgU3RyaW5nIHMgPSA8c2VsZWN0aW9uPmkgKyAic3NzPC9zZWxlY3Rpb24+cyI7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VWYXJpYWJsZS9TdWJQcmltaXRpdmVMaXRlcmFsLmFmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlVmFyaWFibGUvU3ViUHJpbWl0aXZlTGl0ZXJhbC5hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYzYzYwNGMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlVmFyaWFibGUvU3ViUHJpbWl0aXZlTGl0ZXJhbC5hZnRlci5qYXZhCkBAIC0wLDAgKzEsNiBAQAorY2xhc3MgQSB7CisgICAgcHVibGljIHZvaWQgdGVzdCgpIHsKKyAgICAgICAgYm9vbGVhbiBzdHIgPSB0cnVlOworICAgICAgICBTdHJpbmcgcyA9ICJzcyIgKyBzdHI7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VWYXJpYWJsZS9TdWJQcmltaXRpdmVMaXRlcmFsLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlVmFyaWFibGUvU3ViUHJpbWl0aXZlTGl0ZXJhbC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUxMWNhMjkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlVmFyaWFibGUvU3ViUHJpbWl0aXZlTGl0ZXJhbC5qYXZhCkBAIC0wLDAgKzEsNSBAQAorY2xhc3MgQSB7CisgICAgcHVibGljIHZvaWQgdGVzdCgpIHsKKyAgICAgICAgU3RyaW5nIHMgPSAic3M8c2VsZWN0aW9uPnRydWU8L3NlbGVjdGlvbj4iOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlVmFyaWFibGUvU3ViZXhwcmVzc2lvbldpdGhTcGFjZXNJblNlbGVjdGlvbi5hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVZhcmlhYmxlL1N1YmV4cHJlc3Npb25XaXRoU3BhY2VzSW5TZWxlY3Rpb24uYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZDU3N2IxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVZhcmlhYmxlL1N1YmV4cHJlc3Npb25XaXRoU3BhY2VzSW5TZWxlY3Rpb24uYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDEwIEBACitjbGFzcyBBIHsKKyAgICBwdWJsaWMgdm9pZCB0ZXN0KGJvb2xlYW4gYSwgYm9vbGVhbiBiKSB7CisgICAgICAgIGZpbmFsIGJvb2xlYW4gYWIgPSBhICYmCisgICAgICAgICAgICAgICAgYjsKKyAgICAgICAgaWYgKHRydWUgJiYgYWIKKy8vc29tZSBjb21tZW50CisKKyAgICAgICk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VWYXJpYWJsZS9TdWJleHByZXNzaW9uV2l0aFNwYWNlc0luU2VsZWN0aW9uLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlVmFyaWFibGUvU3ViZXhwcmVzc2lvbldpdGhTcGFjZXNJblNlbGVjdGlvbi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYwNDc1ZmEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlVmFyaWFibGUvU3ViZXhwcmVzc2lvbldpdGhTcGFjZXNJblNlbGVjdGlvbi5qYXZhCkBAIC0wLDAgKzEsOSBAQAorY2xhc3MgQSB7CisgICAgcHVibGljIHZvaWQgdGVzdChib29sZWFuIGEsIGJvb2xlYW4gYikgeworICAgICAgICBpZiAodHJ1ZSAmJiA8c2VsZWN0aW9uPmEgJiYKKyAgICAgICAgICAgICAgICAgICAgIGIKKy8vc29tZSBjb21tZW50Cis8L3NlbGVjdGlvbj4KKyAgICAgICk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VWYXJpYWJsZS9UaGlzUXVhbGlmaWVyLmFmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlVmFyaWFibGUvVGhpc1F1YWxpZmllci5hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIyNWVkZGQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlVmFyaWFibGUvVGhpc1F1YWxpZmllci5hZnRlci5qYXZhCkBAIC0wLDAgKzEsMTIgQEAKK3B1YmxpYyBjbGFzcyBUZXN0OSB7CisgICAgcHJvdGVjdGVkIGludCBjb3VudDsKK30KKworY2xhc3MgVGVzdDEwIGV4dGVuZHMgVGVzdDkgeworICAgIHByaXZhdGUgY2xhc3MgVGVzdDEwaSB7CisgICAgICAgIHZvaWQgdGVzdCgpIHsKKyAgICAgICAgICAgIGZpbmFsIGludCBjb3VudCA9IFRlc3QxMC50aGlzLmNvdW50OworICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKGNvdW50KTsKKyAgICAgICAgfQorICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VWYXJpYWJsZS9UaGlzUXVhbGlmaWVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlVmFyaWFibGUvVGhpc1F1YWxpZmllci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmViOGVlMDQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlVmFyaWFibGUvVGhpc1F1YWxpZmllci5qYXZhCkBAIC0wLDAgKzEsMTEgQEAKK3B1YmxpYyBjbGFzcyBUZXN0OSB7CisgICAgcHJvdGVjdGVkIGludCBjb3VudDsKK30KKworY2xhc3MgVGVzdDEwIGV4dGVuZHMgVGVzdDkgeworICAgIHByaXZhdGUgY2xhc3MgVGVzdDEwaSB7CisgICAgICAgIHZvaWQgdGVzdCgpIHsKKyAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbig8c2VsZWN0aW9uPmNvdW50PC9zZWxlY3Rpb24+KTsKKyAgICAgICAgfQorICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VWYXJpYWJsZS9UeXBlQW5ub3RhdGlvbnMuYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VWYXJpYWJsZS9UeXBlQW5ub3RhdGlvbnMuYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMzU5OGE3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVZhcmlhYmxlL1R5cGVBbm5vdGF0aW9ucy5hZnRlci5qYXZhCkBAIC0wLDAgKzEsMTMgQEAKK2ltcG9ydCBqYXZhLmxhbmcuYW5ub3RhdGlvbi4qOworCitAVGFyZ2V0KHtFbGVtZW50VHlwZS5UWVBFX1VTRS8qLCBFbGVtZW50VHlwZS5UWVBFKi99KQorQGludGVyZmFjZSBUQSB7CisKK30KKworY2xhc3MgQyB7CisgICAgdm9pZCBmb28gKCkgeworICAgICAgICBAVEEgQyB5ID0gbnVsbDsKKyAgICAgICAgQFRBIEMgeTEgPSB5OworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VWYXJpYWJsZS9UeXBlQW5ub3RhdGlvbnMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VWYXJpYWJsZS9UeXBlQW5ub3RhdGlvbnMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYmE5ZDk0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVZhcmlhYmxlL1R5cGVBbm5vdGF0aW9ucy5qYXZhCkBAIC0wLDAgKzEsMTMgQEAKK2ltcG9ydCBqYXZhLmxhbmcuYW5ub3RhdGlvbi4qOworCitAVGFyZ2V0KHtFbGVtZW50VHlwZS5UWVBFX1VTRS8qLCBFbGVtZW50VHlwZS5UWVBFKi99KQorQGludGVyZmFjZSBUQSB7CisKK30KKworY2xhc3MgQyB7CisgICAgdm9pZCBmb28gKCkgeworICAgICAgICBAVEEgQyB5ID0gbnVsbDsKKyAgICAgICAgPHNlbGVjdGlvbj55PC9zZWxlY3Rpb24+OworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VWYXJpYWJsZS9XaXRoSWZCcmFuY2hlcy5hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVZhcmlhYmxlL1dpdGhJZkJyYW5jaGVzLmFmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmE1N2RlMQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VWYXJpYWJsZS9XaXRoSWZCcmFuY2hlcy5hZnRlci5qYXZhCkBAIC0wLDAgKzEsMjIgQEAKK2NsYXNzIEEgeworICAgIHByaXZhdGUgY2xhc3MgSW5uZXIgeworICAgICAgICBwdWJsaWMgdm9pZCBpbm5lck1ldGhvZCgpIHsKKyAgICAgICAgICAgIG5ldyBSdW5uYWJsZSgpIHsKKyAgICAgICAgICAgICAgICBwdWJsaWMgdm9pZCBydW4oKSB7CisgICAgICAgICAgICAgICAgICAgIGlmICh0cnVlKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAodHJ1ZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBpID0gMDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgdGVtcCA9IGkgKiBpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpID09IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCIiICsgdGVtcCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCIiICsgdGVtcCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSB0ZW1wOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0ucnVuKCk7CisgICAgICAgIH0KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVZhcmlhYmxlL1dpdGhJZkJyYW5jaGVzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlVmFyaWFibGUvV2l0aElmQnJhbmNoZXMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YjBkNjkwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVZhcmlhYmxlL1dpdGhJZkJyYW5jaGVzLmphdmEKQEAgLTAsMCArMSwyMSBAQAorY2xhc3MgQSB7CisgICAgcHJpdmF0ZSBjbGFzcyBJbm5lciB7CisgICAgICAgIHB1YmxpYyB2b2lkIGlubmVyTWV0aG9kKCkgeworICAgICAgICAgICAgbmV3IFJ1bm5hYmxlKCkgeworICAgICAgICAgICAgICAgIHB1YmxpYyB2b2lkIHJ1bigpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHRydWUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0cnVlKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGkgPSAwOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpID09IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCIiICsgPHNlbGVjdGlvbj5pICogaTwvc2VsZWN0aW9uPik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCIiICsgaSAqIGkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gaSAqIGk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfS5ydW4oKTsKKyAgICAgICAgfQorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlVmFyaWFibGUvZ2VuZXJpY1R5cGVXaXRoSW5uZXIvYWZ0ZXIvdGVzdC9BLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlVmFyaWFibGUvZ2VuZXJpY1R5cGVXaXRoSW5uZXIvYWZ0ZXIvdGVzdC9BLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDI0M2JmOAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VWYXJpYWJsZS9nZW5lcmljVHlwZVdpdGhJbm5lci9hZnRlci90ZXN0L0EuamF2YQpAQCAtMCwwICsxLDYgQEAKK3BhY2thZ2UgdGVzdDsKKworcHVibGljIGNsYXNzIEEgeworICAgIHB1YmxpYyBzdGF0aWMgY2xhc3MgQiB7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VWYXJpYWJsZS9nZW5lcmljVHlwZVdpdGhJbm5lci9hZnRlci90ZXN0L0NsaWVudC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVZhcmlhYmxlL2dlbmVyaWNUeXBlV2l0aElubmVyL2FmdGVyL3Rlc3QvQ2xpZW50LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTdlZmZhNAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VWYXJpYWJsZS9nZW5lcmljVHlwZVdpdGhJbm5lci9hZnRlci90ZXN0L0NsaWVudC5qYXZhCkBAIC0wLDAgKzEsOSBAQAorcGFja2FnZSB0ZXN0OworCitwdWJsaWMgY2xhc3MgQ2xpZW50IHsKKyAgICBwdWJsaWMgc3RhdGljIExpc3Q8QS5CPiBnZXRMaXN0KCkgeyByZXR1cm4gbnVsbDsgfQorICAgIAorICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtZXRob2QoKSB7CisgICAgICAgIGZpbmFsIExpc3Q8QS5CPiBsID0gZ2V0TGlzdCgpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlVmFyaWFibGUvZ2VuZXJpY1R5cGVXaXRoSW5uZXIvYWZ0ZXIvdGVzdC9MaXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlVmFyaWFibGUvZ2VuZXJpY1R5cGVXaXRoSW5uZXIvYWZ0ZXIvdGVzdC9MaXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTU0ZjNhMAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VWYXJpYWJsZS9nZW5lcmljVHlwZVdpdGhJbm5lci9hZnRlci90ZXN0L0xpc3QuamF2YQpAQCAtMCwwICsxLDQgQEAKK3BhY2thZ2UgdGVzdDsKKworcHVibGljIGNsYXNzIExpc3Q8RT4geworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VWYXJpYWJsZS9nZW5lcmljVHlwZVdpdGhJbm5lci9iZWZvcmUvdGVzdC9BLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlVmFyaWFibGUvZ2VuZXJpY1R5cGVXaXRoSW5uZXIvYmVmb3JlL3Rlc3QvQS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAyNDNiZjgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlVmFyaWFibGUvZ2VuZXJpY1R5cGVXaXRoSW5uZXIvYmVmb3JlL3Rlc3QvQS5qYXZhCkBAIC0wLDAgKzEsNiBAQAorcGFja2FnZSB0ZXN0OworCitwdWJsaWMgY2xhc3MgQSB7CisgICAgcHVibGljIHN0YXRpYyBjbGFzcyBCIHsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVZhcmlhYmxlL2dlbmVyaWNUeXBlV2l0aElubmVyL2JlZm9yZS90ZXN0L0NsaWVudC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVZhcmlhYmxlL2dlbmVyaWNUeXBlV2l0aElubmVyL2JlZm9yZS90ZXN0L0NsaWVudC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM2NTMxZmYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlVmFyaWFibGUvZ2VuZXJpY1R5cGVXaXRoSW5uZXIvYmVmb3JlL3Rlc3QvQ2xpZW50LmphdmEKQEAgLTAsMCArMSw5IEBACitwYWNrYWdlIHRlc3Q7CisKK3B1YmxpYyBjbGFzcyBDbGllbnQgeworICAgIHB1YmxpYyBzdGF0aWMgTGlzdDxBLkI+IGdldExpc3QoKSB7IHJldHVybiBudWxsOyB9CisgICAgCisgICAgcHVibGljIHN0YXRpYyB2b2lkIG1ldGhvZCgpIHsKKyAgICAgICAgIDxzZWxlY3Rpb24+Z2V0TGlzdCgpPC9zZWxlY3Rpb24+CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VWYXJpYWJsZS9nZW5lcmljVHlwZVdpdGhJbm5lci9iZWZvcmUvdGVzdC9MaXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlVmFyaWFibGUvZ2VuZXJpY1R5cGVXaXRoSW5uZXIvYmVmb3JlL3Rlc3QvTGlzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU1NGYzYTAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlVmFyaWFibGUvZ2VuZXJpY1R5cGVXaXRoSW5uZXIvYmVmb3JlL3Rlc3QvTGlzdC5qYXZhCkBAIC0wLDAgKzEsNCBAQAorcGFja2FnZSB0ZXN0OworCitwdWJsaWMgY2xhc3MgTGlzdDxFPiB7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVZhcmlhYmxlL2dlbmVyaWNUeXBlV2l0aElubmVyMS9hZnRlci90ZXN0L0EuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VWYXJpYWJsZS9nZW5lcmljVHlwZVdpdGhJbm5lcjEvYWZ0ZXIvdGVzdC9BLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDI0M2JmOAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VWYXJpYWJsZS9nZW5lcmljVHlwZVdpdGhJbm5lcjEvYWZ0ZXIvdGVzdC9BLmphdmEKQEAgLTAsMCArMSw2IEBACitwYWNrYWdlIHRlc3Q7CisKK3B1YmxpYyBjbGFzcyBBIHsKKyAgICBwdWJsaWMgc3RhdGljIGNsYXNzIEIgeworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlVmFyaWFibGUvZ2VuZXJpY1R5cGVXaXRoSW5uZXIxL2FmdGVyL3Rlc3QvQ2xpZW50LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlVmFyaWFibGUvZ2VuZXJpY1R5cGVXaXRoSW5uZXIxL2FmdGVyL3Rlc3QvQ2xpZW50LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGQ4MmEwYQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VWYXJpYWJsZS9nZW5lcmljVHlwZVdpdGhJbm5lcjEvYWZ0ZXIvdGVzdC9DbGllbnQuamF2YQpAQCAtMCwwICsxLDcgQEAKK3BhY2thZ2UgdGVzdDsKKworcHVibGljIGNsYXNzIENsaWVudCB7CisgICAgcHVibGljIHN0YXRpYyB2b2lkIG1ldGhvZCgpIHsKKyAgICAgICAgZmluYWwgTGlzdDxBLkI+IGwgPSBYLmdldExpc3QoKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVZhcmlhYmxlL2dlbmVyaWNUeXBlV2l0aElubmVyMS9hZnRlci90ZXN0L0xpc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VWYXJpYWJsZS9nZW5lcmljVHlwZVdpdGhJbm5lcjEvYWZ0ZXIvdGVzdC9MaXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTU0ZjNhMAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VWYXJpYWJsZS9nZW5lcmljVHlwZVdpdGhJbm5lcjEvYWZ0ZXIvdGVzdC9MaXN0LmphdmEKQEAgLTAsMCArMSw0IEBACitwYWNrYWdlIHRlc3Q7CisKK3B1YmxpYyBjbGFzcyBMaXN0PEU+IHsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlVmFyaWFibGUvZ2VuZXJpY1R5cGVXaXRoSW5uZXIxL2FmdGVyL3Rlc3QvWC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVZhcmlhYmxlL2dlbmVyaWNUeXBlV2l0aElubmVyMS9hZnRlci90ZXN0L1guamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYjdiZjUyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVZhcmlhYmxlL2dlbmVyaWNUeXBlV2l0aElubmVyMS9hZnRlci90ZXN0L1guamF2YQpAQCAtMCwwICsxLDUgQEAKK3BhY2thZ2UgdGVzdDsKKworcHVibGljIGNsYXNzIFggeworICAgIHB1YmxpYyBzdGF0aWMgTGlzdDxBLkI+IGdldExpc3QoKSB7IHJldHVybiBudWxsOyB9IAorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VWYXJpYWJsZS9nZW5lcmljVHlwZVdpdGhJbm5lcjEvYmVmb3JlL3Rlc3QvQS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVZhcmlhYmxlL2dlbmVyaWNUeXBlV2l0aElubmVyMS9iZWZvcmUvdGVzdC9BLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDI0M2JmOAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VWYXJpYWJsZS9nZW5lcmljVHlwZVdpdGhJbm5lcjEvYmVmb3JlL3Rlc3QvQS5qYXZhCkBAIC0wLDAgKzEsNiBAQAorcGFja2FnZSB0ZXN0OworCitwdWJsaWMgY2xhc3MgQSB7CisgICAgcHVibGljIHN0YXRpYyBjbGFzcyBCIHsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVZhcmlhYmxlL2dlbmVyaWNUeXBlV2l0aElubmVyMS9iZWZvcmUvdGVzdC9DbGllbnQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VWYXJpYWJsZS9nZW5lcmljVHlwZVdpdGhJbm5lcjEvYmVmb3JlL3Rlc3QvQ2xpZW50LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTVkZjEwMAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VWYXJpYWJsZS9nZW5lcmljVHlwZVdpdGhJbm5lcjEvYmVmb3JlL3Rlc3QvQ2xpZW50LmphdmEKQEAgLTAsMCArMSw3IEBACitwYWNrYWdlIHRlc3Q7CisKK3B1YmxpYyBjbGFzcyBDbGllbnQgeworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtZXRob2QoKSB7CisgICAgICAgICA8c2VsZWN0aW9uPlguZ2V0TGlzdCgpPC9zZWxlY3Rpb24+CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VWYXJpYWJsZS9nZW5lcmljVHlwZVdpdGhJbm5lcjEvYmVmb3JlL3Rlc3QvTGlzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVZhcmlhYmxlL2dlbmVyaWNUeXBlV2l0aElubmVyMS9iZWZvcmUvdGVzdC9MaXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTU0ZjNhMAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VWYXJpYWJsZS9nZW5lcmljVHlwZVdpdGhJbm5lcjEvYmVmb3JlL3Rlc3QvTGlzdC5qYXZhCkBAIC0wLDAgKzEsNCBAQAorcGFja2FnZSB0ZXN0OworCitwdWJsaWMgY2xhc3MgTGlzdDxFPiB7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVZhcmlhYmxlL2dlbmVyaWNUeXBlV2l0aElubmVyMS9iZWZvcmUvdGVzdC9YLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlVmFyaWFibGUvZ2VuZXJpY1R5cGVXaXRoSW5uZXIxL2JlZm9yZS90ZXN0L1guamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYjdiZjUyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVZhcmlhYmxlL2dlbmVyaWNUeXBlV2l0aElubmVyMS9iZWZvcmUvdGVzdC9YLmphdmEKQEAgLTAsMCArMSw1IEBACitwYWNrYWdlIHRlc3Q7CisKK3B1YmxpYyBjbGFzcyBYIHsKKyAgICBwdWJsaWMgc3RhdGljIExpc3Q8QS5CPiBnZXRMaXN0KCkgeyByZXR1cm4gbnVsbDsgfSAKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlVmFyaWFibGUvZ2VuZXJpY1dpdGhUd29QYXJhbWV0ZXJzL2FmdGVyL0NsaWVudC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVZhcmlhYmxlL2dlbmVyaWNXaXRoVHdvUGFyYW1ldGVycy9hZnRlci9DbGllbnQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NzYwZTVlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVZhcmlhYmxlL2dlbmVyaWNXaXRoVHdvUGFyYW1ldGVycy9hZnRlci9DbGllbnQuamF2YQpAQCAtMCwwICsxLDcgQEAKK2ltcG9ydCB1dGlsLlBhaXI7CisKK2NsYXNzIENsaWVudCB7CisgICAgdm9pZCBtZXRob2QoKSB7CisgICAgICAgIFBhaXI8U3RyaW5nLFBhaXI8SW50ZWdlcixCb29sZWFuPj4gcCA9IFBhaXJQcm92aWRlci5nZXRQYWlyKCk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VWYXJpYWJsZS9nZW5lcmljV2l0aFR3b1BhcmFtZXRlcnMvYWZ0ZXIvUGFpclByb3ZpZGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlVmFyaWFibGUvZ2VuZXJpY1dpdGhUd29QYXJhbWV0ZXJzL2FmdGVyL1BhaXJQcm92aWRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjViNmQ5YWIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlVmFyaWFibGUvZ2VuZXJpY1dpdGhUd29QYXJhbWV0ZXJzL2FmdGVyL1BhaXJQcm92aWRlci5qYXZhCkBAIC0wLDAgKzEsNyBAQAoraW1wb3J0IHV0aWwuUGFpcjsKKworY2xhc3MgUGFpclByb3ZpZGVyIHsKKyAgICBwdWJsaWMgc3RhdGljIFBhaXI8U3RyaW5nLCBQYWlyPEludGVnZXIsIEJvb2xlYW4+PiBnZXRQYWlyKCkgeworICAgICAgICByZXR1cm4gbnVsbDsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVZhcmlhYmxlL2dlbmVyaWNXaXRoVHdvUGFyYW1ldGVycy9hZnRlci91dGlsL1BhaXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VWYXJpYWJsZS9nZW5lcmljV2l0aFR3b1BhcmFtZXRlcnMvYWZ0ZXIvdXRpbC9QYWlyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2MwOTVjNQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VWYXJpYWJsZS9nZW5lcmljV2l0aFR3b1BhcmFtZXRlcnMvYWZ0ZXIvdXRpbC9QYWlyLmphdmEKQEAgLTAsMCArMSwxMyBAQAorcGFja2FnZSB1dGlsOworCitjbGFzcyBQYWlyPEwsUj4geworICAgIHB1YmxpYyBQYWlyKEwgbCwgUiByKSB7CisKKyAgICB9CisgICAgcHVibGljIEwgZ2V0TCgpIHsKKyAgICAgICAgcmV0dXJuIG51bGw7CisgICAgfQorICAgIHB1YmxpYyBSIGdldFIoKSB7CisgICAgICAgIHJldHVybiBudWxsOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlVmFyaWFibGUvZ2VuZXJpY1dpdGhUd29QYXJhbWV0ZXJzL2JlZm9yZS9DbGllbnQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VWYXJpYWJsZS9nZW5lcmljV2l0aFR3b1BhcmFtZXRlcnMvYmVmb3JlL0NsaWVudC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZhNTM2OWQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlVmFyaWFibGUvZ2VuZXJpY1dpdGhUd29QYXJhbWV0ZXJzL2JlZm9yZS9DbGllbnQuamF2YQpAQCAtMCwwICsxLDUgQEAKK2NsYXNzIENsaWVudCB7CisgICAgdm9pZCBtZXRob2QoKSB7CisgICAgICAgIDxzZWxlY3Rpb24+UGFpclByb3ZpZGVyLmdldFBhaXIoKTwvc2VsZWN0aW9uPgorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlVmFyaWFibGUvZ2VuZXJpY1dpdGhUd29QYXJhbWV0ZXJzL2JlZm9yZS9QYWlyUHJvdmlkZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VWYXJpYWJsZS9nZW5lcmljV2l0aFR3b1BhcmFtZXRlcnMvYmVmb3JlL1BhaXJQcm92aWRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjViNmQ5YWIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlVmFyaWFibGUvZ2VuZXJpY1dpdGhUd29QYXJhbWV0ZXJzL2JlZm9yZS9QYWlyUHJvdmlkZXIuamF2YQpAQCAtMCwwICsxLDcgQEAKK2ltcG9ydCB1dGlsLlBhaXI7CisKK2NsYXNzIFBhaXJQcm92aWRlciB7CisgICAgcHVibGljIHN0YXRpYyBQYWlyPFN0cmluZywgUGFpcjxJbnRlZ2VyLCBCb29sZWFuPj4gZ2V0UGFpcigpIHsKKyAgICAgICAgcmV0dXJuIG51bGw7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VWYXJpYWJsZS9nZW5lcmljV2l0aFR3b1BhcmFtZXRlcnMvYmVmb3JlL3V0aWwvUGFpci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVZhcmlhYmxlL2dlbmVyaWNXaXRoVHdvUGFyYW1ldGVycy9iZWZvcmUvdXRpbC9QYWlyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2MwOTVjNQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VWYXJpYWJsZS9nZW5lcmljV2l0aFR3b1BhcmFtZXRlcnMvYmVmb3JlL3V0aWwvUGFpci5qYXZhCkBAIC0wLDAgKzEsMTMgQEAKK3BhY2thZ2UgdXRpbDsKKworY2xhc3MgUGFpcjxMLFI+IHsKKyAgICBwdWJsaWMgUGFpcihMIGwsIFIgcikgeworCisgICAgfQorICAgIHB1YmxpYyBMIGdldEwoKSB7CisgICAgICAgIHJldHVybiBudWxsOworICAgIH0KKyAgICBwdWJsaWMgUiBnZXRSKCkgeworICAgICAgICByZXR1cm4gbnVsbDsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVZhcmlhYmxlL2dlbmVyaWNXaXRoVHdvUGFyYW1ldGVyczIvYWZ0ZXIvQ2xpZW50LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlVmFyaWFibGUvZ2VuZXJpY1dpdGhUd29QYXJhbWV0ZXJzMi9hZnRlci9DbGllbnQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NDNkZjQwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVZhcmlhYmxlL2dlbmVyaWNXaXRoVHdvUGFyYW1ldGVyczIvYWZ0ZXIvQ2xpZW50LmphdmEKQEAgLTAsMCArMSw1IEBACitjbGFzcyBDbGllbnQgeworICAgIHZvaWQgbWV0aG9kKCkgeworICAgICAgICBQYWlyPFN0cmluZywgUGFpcjxJbnRlZ2VyLCBCb29sZWFuPj4gcCA9IG5ldyBQYWlyUHJvdmlkZXI8U3RyaW5nLCBJbnRlZ2VyLCBCb29sZWFuPigpLmdldFBhaXIoKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVZhcmlhYmxlL2dlbmVyaWNXaXRoVHdvUGFyYW1ldGVyczIvYWZ0ZXIvUGFpci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVZhcmlhYmxlL2dlbmVyaWNXaXRoVHdvUGFyYW1ldGVyczIvYWZ0ZXIvUGFpci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU1YmE2MWMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlVmFyaWFibGUvZ2VuZXJpY1dpdGhUd29QYXJhbWV0ZXJzMi9hZnRlci9QYWlyLmphdmEKQEAgLTAsMCArMSwxMCBAQAorY2xhc3MgUGFpcjxMLFI+IHsKKyAgICBwdWJsaWMgUGFpcihMIGwsIFIgcikgeworICAgIH0KKyAgICBwdWJsaWMgTCBnZXRMKCkgeworICAgICAgICByZXR1cm4gbnVsbDsKKyAgICB9CisgICAgcHVibGljIFIgZ2V0UigpIHsKKyAgICAgICAgcmV0dXJuIG51bGw7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VWYXJpYWJsZS9nZW5lcmljV2l0aFR3b1BhcmFtZXRlcnMyL2FmdGVyL1BhaXJQcm92aWRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVZhcmlhYmxlL2dlbmVyaWNXaXRoVHdvUGFyYW1ldGVyczIvYWZ0ZXIvUGFpclByb3ZpZGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2VlZDI1YQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VWYXJpYWJsZS9nZW5lcmljV2l0aFR3b1BhcmFtZXRlcnMyL2FmdGVyL1BhaXJQcm92aWRlci5qYXZhCkBAIC0wLDAgKzEsNSBAQAorY2xhc3MgUGFpclByb3ZpZGVyIDxVLCBWLCBXPnsKKyAgICBwdWJsaWMgUGFpcjxVLCBQYWlyPFYsIFc+PiBnZXRQYWlyKCkgeworICAgICAgICByZXR1cm4gbnVsbDsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVZhcmlhYmxlL2dlbmVyaWNXaXRoVHdvUGFyYW1ldGVyczIvYmVmb3JlL0NsaWVudC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVZhcmlhYmxlL2dlbmVyaWNXaXRoVHdvUGFyYW1ldGVyczIvYmVmb3JlL0NsaWVudC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg4MWM0NjUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlVmFyaWFibGUvZ2VuZXJpY1dpdGhUd29QYXJhbWV0ZXJzMi9iZWZvcmUvQ2xpZW50LmphdmEKQEAgLTAsMCArMSw1IEBACitjbGFzcyBDbGllbnQgeworICAgIHZvaWQgbWV0aG9kKCkgeworICAgICAgICA8c2VsZWN0aW9uPm5ldyBQYWlyUHJvdmlkZXI8U3RyaW5nLCBJbnRlZ2VyLCBCb29sZWFuPigpLmdldFBhaXIoKTwvc2VsZWN0aW9uPgorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlVmFyaWFibGUvZ2VuZXJpY1dpdGhUd29QYXJhbWV0ZXJzMi9iZWZvcmUvUGFpci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVZhcmlhYmxlL2dlbmVyaWNXaXRoVHdvUGFyYW1ldGVyczIvYmVmb3JlL1BhaXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNWJhNjFjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVZhcmlhYmxlL2dlbmVyaWNXaXRoVHdvUGFyYW1ldGVyczIvYmVmb3JlL1BhaXIuamF2YQpAQCAtMCwwICsxLDEwIEBACitjbGFzcyBQYWlyPEwsUj4geworICAgIHB1YmxpYyBQYWlyKEwgbCwgUiByKSB7CisgICAgfQorICAgIHB1YmxpYyBMIGdldEwoKSB7CisgICAgICAgIHJldHVybiBudWxsOworICAgIH0KKyAgICBwdWJsaWMgUiBnZXRSKCkgeworICAgICAgICByZXR1cm4gbnVsbDsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVZhcmlhYmxlL2dlbmVyaWNXaXRoVHdvUGFyYW1ldGVyczIvYmVmb3JlL1BhaXJQcm92aWRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVZhcmlhYmxlL2dlbmVyaWNXaXRoVHdvUGFyYW1ldGVyczIvYmVmb3JlL1BhaXJQcm92aWRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdlZWQyNWEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlVmFyaWFibGUvZ2VuZXJpY1dpdGhUd29QYXJhbWV0ZXJzMi9iZWZvcmUvUGFpclByb3ZpZGVyLmphdmEKQEAgLTAsMCArMSw1IEBACitjbGFzcyBQYWlyUHJvdmlkZXIgPFUsIFYsIFc+eworICAgIHB1YmxpYyBQYWlyPFUsIFBhaXI8ViwgVz4+IGdldFBhaXIoKSB7CisgICAgICAgIHJldHVybiBudWxsOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlVmFyaWFibGUvc2FtZVBhY2thZ2VSZWYvYWZ0ZXIvcGFjazEvQS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVZhcmlhYmxlL3NhbWVQYWNrYWdlUmVmL2FmdGVyL3BhY2sxL0EuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wOTZmNzNhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVZhcmlhYmxlL3NhbWVQYWNrYWdlUmVmL2FmdGVyL3BhY2sxL0EuamF2YQpAQCAtMCwwICsxLDcgQEAKK3BhY2thZ2UgcGFjazE7CisKK3B1YmxpYyBjbGFzcyBBIHsKKyAgICB2b2lkIG1ldGhvZCgpIHsKKyAgICAgICAgQiBiID0gbmV3IEIoKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVZhcmlhYmxlL3NhbWVQYWNrYWdlUmVmL2FmdGVyL3BhY2sxL0IuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VWYXJpYWJsZS9zYW1lUGFja2FnZVJlZi9hZnRlci9wYWNrMS9CLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODc5OWNlMQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VWYXJpYWJsZS9zYW1lUGFja2FnZVJlZi9hZnRlci9wYWNrMS9CLmphdmEKQEAgLTAsMCArMSw0IEBACitwYWNrYWdlIHBhY2sxOworCitjbGFzcyBCIHsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlVmFyaWFibGUvc2FtZVBhY2thZ2VSZWYvYmVmb3JlL3BhY2sxL0EuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VWYXJpYWJsZS9zYW1lUGFja2FnZVJlZi9iZWZvcmUvcGFjazEvQS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYyOThmZDYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW50cm9kdWNlVmFyaWFibGUvc2FtZVBhY2thZ2VSZWYvYmVmb3JlL3BhY2sxL0EuamF2YQpAQCAtMCwwICsxLDcgQEAKK3BhY2thZ2UgcGFjazE7CisKK3B1YmxpYyBjbGFzcyBBIHsKKyAgICB2b2lkIG1ldGhvZCgpIHsKKyAgICAgICAgPHNlbGVjdGlvbj5uZXcgQigpPC9zZWxlY3Rpb24+CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VWYXJpYWJsZS9zYW1lUGFja2FnZVJlZi9iZWZvcmUvcGFjazEvQi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludHJvZHVjZVZhcmlhYmxlL3NhbWVQYWNrYWdlUmVmL2JlZm9yZS9wYWNrMS9CLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODc5OWNlMQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnRyb2R1Y2VWYXJpYWJsZS9zYW1lUGFja2FnZVJlZi9iZWZvcmUvcGFjazEvQi5qYXZhCkBAIC0wLDAgKzEsNCBAQAorcGFja2FnZSBwYWNrMTsKKworY2xhc3MgQiB7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludmVydEJvb2xlYW4vMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludmVydEJvb2xlYW4vMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE1Y2E1YjcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW52ZXJ0Qm9vbGVhbi8xLmphdmEKQEAgLTAsMCArMSwxNyBAQAoraW50ZXJmYWNlIEkgeworICAgIGJvb2xlYW4gPGNhcmV0PmlzRm9vKCk7Cit9CisKK2NsYXNzIFJSUiBpbXBsZW1lbnRzIEkgeworICAgIHB1YmxpYyBib29sZWFuIGlzRm9vKCkgeworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIGJvb2xlYW4gZm9vID0gaXNGb28oKTsKKyAgICB9CisKKyAgICB2b2lkIGcoSSBpKSB7CisgICAgICAgIGJvb2xlYW4gZm9vID0gaS5pc0ZvbygpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnZlcnRCb29sZWFuLzFfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnZlcnRCb29sZWFuLzFfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NGFkNTI3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludmVydEJvb2xlYW4vMV9hZnRlci5qYXZhCkBAIC0wLDAgKzEsMTcgQEAKK2ludGVyZmFjZSBJIHsKKyAgICBib29sZWFuIGlzRm9vSW52ZXJ0ZWQoKTsKK30KKworY2xhc3MgUlJSIGltcGxlbWVudHMgSSB7CisgICAgcHVibGljIGJvb2xlYW4gaXNGb29JbnZlcnRlZCgpIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHsKKyAgICAgICAgYm9vbGVhbiBmb28gPSAhaXNGb29JbnZlcnRlZCgpOworICAgIH0KKworICAgIHZvaWQgZyhJIGkpIHsKKyAgICAgICAgYm9vbGVhbiBmb28gPSAhaS5pc0Zvb0ludmVydGVkKCk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludmVydEJvb2xlYW4vMi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludmVydEJvb2xlYW4vMi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFhODMzZjQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW52ZXJ0Qm9vbGVhbi8yLmphdmEKQEAgLTAsMCArMSwxNyBAQAoraW50ZXJmYWNlIEkgeworICAgIGJvb2xlYW4gaXNGb28oKTsKK30KKworY2xhc3MgUlJSIGltcGxlbWVudHMgSSB7CisgICAgcHVibGljIGJvb2xlYW4gPGNhcmV0PmlzRm9vKCkgeworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIGJvb2xlYW4gZm9vID0gaXNGb28oKTsKKyAgICB9CisKKyAgICB2b2lkIGcoSSBpKSB7CisgICAgICAgIGJvb2xlYW4gZm9vID0gaS5pc0ZvbygpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnZlcnRCb29sZWFuLzJfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnZlcnRCb29sZWFuLzJfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zOWI0MGIxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludmVydEJvb2xlYW4vMl9hZnRlci5qYXZhCkBAIC0wLDAgKzEsMTcgQEAKK2ludGVyZmFjZSBJIHsKKyAgICBib29sZWFuIGlzRm9vKCk7Cit9CisKK2NsYXNzIFJSUiBpbXBsZW1lbnRzIEkgeworICAgIHB1YmxpYyBib29sZWFuIGlzRm9vSW52ZXJ0ZWQoKSB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIGJvb2xlYW4gZm9vID0gIWlzRm9vSW52ZXJ0ZWQoKTsKKyAgICB9CisKKyAgICB2b2lkIGcoSSBpKSB7CisgICAgICAgIGJvb2xlYW4gZm9vID0gaS5pc0ZvbygpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnZlcnRCb29sZWFuL2Fub255bW91c0NsYXNzZXMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnZlcnRCb29sZWFuL2Fub255bW91c0NsYXNzZXMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNmViZDYyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludmVydEJvb2xlYW4vYW5vbnltb3VzQ2xhc3Nlcy5qYXZhCkBAIC0wLDAgKzEsMjMgQEAKK2Fic3RyYWN0IGNsYXNzIERlbW9JbnZlcnRCb29sZWFuIHsKKworICAgIGJvb2xlYW4gYjsKKworICAgIERlbW9JbnZlcnRCb29sZWFuKGJvb2xlYW4gPGNhcmV0PmIpIHsKKyAgICAgICAgdGhpcy5iID0gYjsKKyAgICB9CisKKyAgICBEZW1vSW52ZXJ0Qm9vbGVhbigpIHsKKyAgICAgICAgdGhpcyh0cnVlKTsvL3RoaXMgdHJ1ZSB3aWxsIGJlIGludmVydGVkCisgICAgfQorCisgICAgYWJzdHJhY3Qgdm9pZCBmMSgpOworCisgICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgeworICAgICAgICBEZW1vSW52ZXJ0Qm9vbGVhbiBkZW1vID0gbmV3IERlbW9JbnZlcnRCb29sZWFuKHRydWUpIHsvL3RoaXMgdHJ1ZSB3aWxsIG5vdCBiZSBpbnZlcnRlZAorICAgICAgICAgICAgQE92ZXJyaWRlCisgICAgICAgICAgICBwdWJsaWMgdm9pZCBmMSgpIHsKKworICAgICAgICAgICAgfQorICAgICAgICB9OworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW52ZXJ0Qm9vbGVhbi9hbm9ueW1vdXNDbGFzc2VzX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW52ZXJ0Qm9vbGVhbi9hbm9ueW1vdXNDbGFzc2VzX2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTdiYzMwMQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnZlcnRCb29sZWFuL2Fub255bW91c0NsYXNzZXNfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDIzIEBACithYnN0cmFjdCBjbGFzcyBEZW1vSW52ZXJ0Qm9vbGVhbiB7CisKKyAgICBib29sZWFuIGI7CisKKyAgICBEZW1vSW52ZXJ0Qm9vbGVhbihib29sZWFuIDxjYXJldD5iSW52ZXJ0ZWQpIHsKKyAgICAgICAgdGhpcy5iID0gIWJJbnZlcnRlZDsKKyAgICB9CisKKyAgICBEZW1vSW52ZXJ0Qm9vbGVhbigpIHsKKyAgICAgICAgdGhpcyhmYWxzZSk7Ly90aGlzIHRydWUgd2lsbCBiZSBpbnZlcnRlZAorICAgIH0KKworICAgIGFic3RyYWN0IHZvaWQgZjEoKTsKKworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKKyAgICAgICAgRGVtb0ludmVydEJvb2xlYW4gZGVtbyA9IG5ldyBEZW1vSW52ZXJ0Qm9vbGVhbihmYWxzZSkgey8vdGhpcyB0cnVlIHdpbGwgbm90IGJlIGludmVydGVkCisgICAgICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgICAgIHB1YmxpYyB2b2lkIGYxKCkgeworCisgICAgICAgICAgICB9CisgICAgICAgIH07CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnZlcnRCb29sZWFuL2lubmVyQ2xhc3Nlcy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludmVydEJvb2xlYW4vaW5uZXJDbGFzc2VzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODVjZjFkNAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnZlcnRCb29sZWFuL2lubmVyQ2xhc3Nlcy5qYXZhCkBAIC0wLDAgKzEsMTYgQEAKK3B1YmxpYyBjbGFzcyBDb252ZXJ0MkF0b21pY1Rlc3QgeworICBwdWJsaWMgYm9vbGVhbiBmPGNhcmV0Pm9vKCkgeworICAgIFByb2Nlc3NvciBwcm9jZXNzb3IgPSBuZXcgUHJvY2Vzc29yKCkgeworICAgICAgQE92ZXJyaWRlCisgICAgICBwdWJsaWMgYm9vbGVhbiBwcm9jZXNzKE9iamVjdCBvKSB7CisgICAgICAgIHJldHVybiBmYWxzZTsgLy8gQ2hhbmdlcyBmYWxzZSB0byB0cnVlIGhlcmUsIFdST05HISEhCisgICAgICB9CisgICAgfTsKKworICAgIHJldHVybiBmYWxzZTsgLy8gQ2hhbmdlcyBmYWxzZSB0byB0cnVlIGhlcmUsIHJpZ2h0CisgIH0KK30KKworaW50ZXJmYWNlIFByb2Nlc3NvciB7CisgIGJvb2xlYW4gcHJvY2VzcyhPYmplY3Qgb2JqZWN0KTsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW52ZXJ0Qm9vbGVhbi9pbm5lckNsYXNzZXNfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnZlcnRCb29sZWFuL2lubmVyQ2xhc3Nlc19hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY0M2NlOWUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW52ZXJ0Qm9vbGVhbi9pbm5lckNsYXNzZXNfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDE2IEBACitwdWJsaWMgY2xhc3MgQ29udmVydDJBdG9taWNUZXN0IHsKKyAgcHVibGljIGJvb2xlYW4gZm9vSW52ZXJ0ZWQoKSB7CisgICAgUHJvY2Vzc29yIHByb2Nlc3NvciA9IG5ldyBQcm9jZXNzb3IoKSB7CisgICAgICBAT3ZlcnJpZGUKKyAgICAgIHB1YmxpYyBib29sZWFuIHByb2Nlc3MoT2JqZWN0IG8pIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOyAvLyBDaGFuZ2VzIGZhbHNlIHRvIHRydWUgaGVyZSwgV1JPTkchISEKKyAgICAgIH0KKyAgICB9OworCisgICAgcmV0dXJuIHRydWU7IC8vIENoYW5nZXMgZmFsc2UgdG8gdHJ1ZSBoZXJlLCByaWdodAorICB9Cit9CisKK2ludGVyZmFjZSBQcm9jZXNzb3IgeworICBib29sZWFuIHByb2Nlc3MoT2JqZWN0IG9iamVjdCk7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludmVydEJvb2xlYW4vcGFyYW1ldGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW52ZXJ0Qm9vbGVhbi9wYXJhbWV0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MDBjYzc0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludmVydEJvb2xlYW4vcGFyYW1ldGVyLmphdmEKQEAgLTAsMCArMSw5IEBACitjbGFzcyBJbnZlcnRCb29sZWFuUGFyYW1ldGVyVGVzdCB7CisgICAgdm9pZCBmb28oYm9vbGVhbiA8Y2FyZXQ+YikgeworICAgICAgICBib29sZWFuIGMgPSAhYjsKKyAgICB9CisKKyAgICB7CisgICAgICAgIGZvbyh0cnVlKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludmVydEJvb2xlYW4vcGFyYW1ldGVyMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludmVydEJvb2xlYW4vcGFyYW1ldGVyMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMyYWE4NzAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW52ZXJ0Qm9vbGVhbi9wYXJhbWV0ZXIxLmphdmEKQEAgLTAsMCArMSwxNiBAQAorY2xhc3MgSW52ZXJ0Qm9vbGVhblBhcmFtZXRlclRlc3QgeworICAgIHZvaWQgZm9vKGJvb2xlYW4gPGNhcmV0PmIpIHsKKyAgICAgICAgYm9vbGVhbiBjID0gIWI7CisgICAgICAgIGIgPSBmYWxzZTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIGZvbyh0cnVlKTsKKyAgICB9Cit9CisKK2NsYXNzIERydiBleHRlbmRzIEludmVydEJvb2xlYW5QYXJhbWV0ZXJUZXN0IHsKKyAgICB2b2lkIGZvbyhib29sZWFuIGIpIHsKKyAgICAgICAgc3VwZXIuZm9vKGIpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW52ZXJ0Qm9vbGVhbi9wYXJhbWV0ZXIxX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW52ZXJ0Qm9vbGVhbi9wYXJhbWV0ZXIxX2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTBiZDQxMAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnZlcnRCb29sZWFuL3BhcmFtZXRlcjFfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDE2IEBACitjbGFzcyBJbnZlcnRCb29sZWFuUGFyYW1ldGVyVGVzdCB7CisgICAgdm9pZCBmb28oYm9vbGVhbiBiSW52ZXJ0ZWQpIHsKKyAgICAgICAgYm9vbGVhbiBjID0gYkludmVydGVkOworICAgICAgICBiSW52ZXJ0ZWQgPSB0cnVlOworICAgIH0KKworICAgIHsKKyAgICAgICAgZm9vKGZhbHNlKTsKKyAgICB9Cit9CisKK2NsYXNzIERydiBleHRlbmRzIEludmVydEJvb2xlYW5QYXJhbWV0ZXJUZXN0IHsKKyAgICB2b2lkIGZvbyhib29sZWFuIGJJbnZlcnRlZCkgeworICAgICAgICBzdXBlci5mb28oYkludmVydGVkKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludmVydEJvb2xlYW4vcGFyYW1ldGVyX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW52ZXJ0Qm9vbGVhbi9wYXJhbWV0ZXJfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZTViNjI0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludmVydEJvb2xlYW4vcGFyYW1ldGVyX2FmdGVyLmphdmEKQEAgLTAsMCArMSw5IEBACitjbGFzcyBJbnZlcnRCb29sZWFuUGFyYW1ldGVyVGVzdCB7CisgICAgdm9pZCBmb28oYm9vbGVhbiBiSW52ZXJ0ZWQpIHsKKyAgICAgICAgYm9vbGVhbiBjID0gYkludmVydGVkOworICAgIH0KKworICAgIHsKKyAgICAgICAgZm9vKGZhbHNlKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludmVydEJvb2xlYW4vdW51c2VkUmV0dXJuVmFsdWUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnZlcnRCb29sZWFuL3VudXNlZFJldHVyblZhbHVlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTYyZWM0OAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9pbnZlcnRCb29sZWFuL3VudXNlZFJldHVyblZhbHVlLmphdmEKQEAgLTAsMCArMSw5IEBACitjbGFzcyBDIHsKKyAgYm9vbGVhbiBmPGNhcmV0Pm9vKCkgeworICAgIHJldHVybiBmYWxzZTsKKyAgfQorCisgIHZvaWQgYmFyKCkgeworICAgIGZvbygpOworICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvaW52ZXJ0Qm9vbGVhbi91bnVzZWRSZXR1cm5WYWx1ZV9hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludmVydEJvb2xlYW4vdW51c2VkUmV0dXJuVmFsdWVfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NzQxYWViCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL2ludmVydEJvb2xlYW4vdW51c2VkUmV0dXJuVmFsdWVfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDkgQEAKK2NsYXNzIEMgeworICBib29sZWFuIGZvb0ludmVydGVkKCkgeworICAgIHJldHVybiB0cnVlOworICB9CisKKyAgdm9pZCBiYXIoKSB7CisgICAgZm9vSW52ZXJ0ZWQoKTsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ha2VDbGFzc1N0YXRpYy9EZWZhdWx0Q29uc3RydWN0b3JBbm9ueW1vdXNDbGFzcy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ha2VDbGFzc1N0YXRpYy9EZWZhdWx0Q29uc3RydWN0b3JBbm9ueW1vdXNDbGFzcy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdjZWI5MmYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWFrZUNsYXNzU3RhdGljL0RlZmF1bHRDb25zdHJ1Y3RvckFub255bW91c0NsYXNzLmphdmEKQEAgLTAsMCArMSwxNCBAQAorcHVibGljIGNsYXNzIEEgeworICBjbGFzcyA8Y2FyZXQ+QiB7CisgIH0KK30KKworY2xhc3MgQyB7CisgIHZvaWQgZm9vKCkgeworICAgIG5ldyBBKCkubmV3IEIoKSB7CisgICAgICBwdWJsaWMgU3RyaW5nIHRvU3RyaW5nKCkgeworICAgICAgICByZXR1cm4gc3VwZXIudG9TdHJpbmcoKTsKKyAgICAgIH0KKyAgICB9LnRvU3RyaW5nKCk7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWFrZUNsYXNzU3RhdGljL0RlZmF1bHRDb25zdHJ1Y3RvckFub255bW91c0NsYXNzX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWFrZUNsYXNzU3RhdGljL0RlZmF1bHRDb25zdHJ1Y3RvckFub255bW91c0NsYXNzX2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGYxNWRlYgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tYWtlQ2xhc3NTdGF0aWMvRGVmYXVsdENvbnN0cnVjdG9yQW5vbnltb3VzQ2xhc3NfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDE2IEBACitwdWJsaWMgY2xhc3MgQSB7CisgIHN0YXRpYyBjbGFzcyBCIHsKKyAgICAgIHB1YmxpYyBCKCkgeworICAgICAgfQorICB9Cit9CisKK2NsYXNzIEMgeworICB2b2lkIGZvbygpIHsKKyAgICBuZXcgQSgpLm5ldyBCKCkgeworICAgICAgcHVibGljIFN0cmluZyB0b1N0cmluZygpIHsKKyAgICAgICAgcmV0dXJuIHN1cGVyLnRvU3RyaW5nKCk7CisgICAgICB9CisgICAgfS50b1N0cmluZygpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ha2VDbGFzc1N0YXRpYy9GaWVsZEluaXRpYWxpemVyTW92ZWRUb1RoZUNvbnN0cnVjdG9yLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWFrZUNsYXNzU3RhdGljL0ZpZWxkSW5pdGlhbGl6ZXJNb3ZlZFRvVGhlQ29uc3RydWN0b3IuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kOWFjODU5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ha2VDbGFzc1N0YXRpYy9GaWVsZEluaXRpYWxpemVyTW92ZWRUb1RoZUNvbnN0cnVjdG9yLmphdmEKQEAgLTAsMCArMSwxMyBAQAorcHVibGljIGNsYXNzIFlvWW8geworICAgIE9iamVjdCB5OworICAgIGNsYXNzIDxjYXJldD5Zb1lvWW8geworICAgICAgICBPYmplY3QgeCA9IHk7CisgICAgICAgIE9iamVjdFtdIHh4ID0ge3l9OyAKKyAgICAgICAgdm9pZCBmb28gKCl7CisgICAgICAgICAgICBZb1lvIHlvWW95ID0gWW9Zby50aGlzOworICAgICAgICAgICAgT2JqZWN0IHQgPSB5OworICAgICAgICAgICAgT2JqZWN0IHQxID0geW9Zb3kueTsKKyAgICAgICAgfQorICAgIH0KK30KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ha2VDbGFzc1N0YXRpYy9GaWVsZEluaXRpYWxpemVyTW92ZWRUb1RoZUNvbnN0cnVjdG9yX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWFrZUNsYXNzU3RhdGljL0ZpZWxkSW5pdGlhbGl6ZXJNb3ZlZFRvVGhlQ29uc3RydWN0b3JfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NjRhNGUwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ha2VDbGFzc1N0YXRpYy9GaWVsZEluaXRpYWxpemVyTW92ZWRUb1RoZUNvbnN0cnVjdG9yX2FmdGVyLmphdmEKQEAgLTAsMCArMSwyMyBAQAorcHVibGljIGNsYXNzIFlvWW8geworICAgIE9iamVjdCB5OworICAgIHN0YXRpYyBjbGFzcyBZb1lvWW8geworICAgICAgICBPYmplY3QgeDsKKyAgICAgICAgT2JqZWN0W10geHg7CisgICAgICAgIHByaXZhdGUgWW9ZbyBhbk9iamVjdDsKKyAgICAgICAgcHJpdmF0ZSBPYmplY3QgeTsKKworICAgICAgICBwdWJsaWMgWW9Zb1lvKFlvWW8gYW5PYmplY3QsIE9iamVjdCB5KSB7CisgICAgICAgICAgICB0aGlzLmFuT2JqZWN0ID0gYW5PYmplY3Q7CisgICAgICAgICAgICB0aGlzLnkgPSB5OworICAgICAgICAgICAgdGhpcy54ID0geTsKKyAgICAgICAgICAgIHRoaXMueHggPSBuZXcgT2JqZWN0W117eX07CisgICAgICAgIH0KKworICAgICAgICB2b2lkIGZvbyAoKXsKKyAgICAgICAgICAgIFlvWW8geW9Zb3kgPSBhbk9iamVjdDsKKyAgICAgICAgICAgIE9iamVjdCB0ID0geTsKKyAgICAgICAgICAgIE9iamVjdCB0MSA9IHlvWW95Lnk7CisgICAgICAgIH0KKyAgICB9Cit9CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tYWtlQ2xhc3NTdGF0aWMvRmllbGRJbml0aWFsaXplclNwbGl0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWFrZUNsYXNzU3RhdGljL0ZpZWxkSW5pdGlhbGl6ZXJTcGxpdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZlNzdmMWYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWFrZUNsYXNzU3RhdGljL0ZpZWxkSW5pdGlhbGl6ZXJTcGxpdC5qYXZhCkBAIC0wLDAgKzEsNiBAQAorY2xhc3MgT3V0ZXIgeworICBjbGFzcyBJbjxjYXJldD5uZXIgeworICAgIE9iamVjdCB4ID0gT3V0ZXIudGhpcy5nZXRDbGFzcygpOworCisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWFrZUNsYXNzU3RhdGljL0ZpZWxkSW5pdGlhbGl6ZXJTcGxpdF9hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ha2VDbGFzc1N0YXRpYy9GaWVsZEluaXRpYWxpemVyU3BsaXRfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMDUyNTllCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ha2VDbGFzc1N0YXRpYy9GaWVsZEluaXRpYWxpemVyU3BsaXRfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDEyIEBACitjbGFzcyBPdXRlciB7CisgIHN0YXRpYyBjbGFzcyBJbm5lciB7CisgICAgT2JqZWN0IHg7CisKKyAgICAgIHByaXZhdGUgT3V0ZXIgYW5PYmplY3Q7CisKKyAgICAgIHB1YmxpYyBJbm5lcihPdXRlciBhbk9iamVjdCkgeworICAgICAgICAgIHRoaXMuYW5PYmplY3QgPSBhbk9iamVjdDsKKyAgICAgICAgICB0aGlzLnggPSBhbk9iamVjdC5nZXRDbGFzcygpOworICAgICAgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ha2VDbGFzc1N0YXRpYy9GaWVsZFdpdGhNeVByZWZpeC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ha2VDbGFzc1N0YXRpYy9GaWVsZFdpdGhNeVByZWZpeC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM2Y2RjNGYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWFrZUNsYXNzU3RhdGljL0ZpZWxkV2l0aE15UHJlZml4LmphdmEKQEAgLTAsMCArMSwxMyBAQAorY2xhc3MgVCB7CisgICAgT2JqZWN0IG15T2JqZWN0OworCisgICAgdm9pZCB0ZXN0KCkgeworICAgICAgICBuZXcgTXlSdW5uYWJsZSgpLnJ1bigpOworICAgIH0KKworICAgIHByaXZhdGUgY2xhc3MgPGNhcmV0Pk15UnVubmFibGUgaW1wbGVtZW50cyBSdW5uYWJsZSB7CisgICAgICAgIHB1YmxpYyB2b2lkIHJ1bigpIHsKKyAgICAgICAgICAgIG15T2JqZWN0LnRvU3RyaW5nKCk7CisgICAgICAgIH0KKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWFrZUNsYXNzU3RhdGljL0ZpZWxkV2l0aE15UHJlZml4X2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWFrZUNsYXNzU3RhdGljL0ZpZWxkV2l0aE15UHJlZml4X2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTQ1NWYxYgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tYWtlQ2xhc3NTdGF0aWMvRmllbGRXaXRoTXlQcmVmaXhfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDE5IEBACitjbGFzcyBUIHsKKyAgICBPYmplY3QgbXlPYmplY3Q7CisKKyAgICB2b2lkIHRlc3QoKSB7CisgICAgICAgIG5ldyBNeVJ1bm5hYmxlKG15T2JqZWN0KS5ydW4oKTsKKyAgICB9CisKKyAgICBwcml2YXRlIHN0YXRpYyBjbGFzcyA8Y2FyZXQ+TXlSdW5uYWJsZSBpbXBsZW1lbnRzIFJ1bm5hYmxlIHsKKyAgICAgICAgcHJpdmF0ZSBPYmplY3QgbXlPYmplY3Q7CisKKyAgICAgICAgcHVibGljIE15UnVubmFibGUoT2JqZWN0IG9iamVjdCkgeworICAgICAgICAgICAgdGhpcy5teU9iamVjdCA9IG9iamVjdDsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyB2b2lkIHJ1bigpIHsKKyAgICAgICAgICAgIG15T2JqZWN0LnRvU3RyaW5nKCk7CisgICAgICAgIH0KKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWFrZUNsYXNzU3RhdGljL0lERUFERVYxMTU5NS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ha2VDbGFzc1N0YXRpYy9JREVBREVWMTE1OTUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMmRkNjM1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ha2VDbGFzc1N0YXRpYy9JREVBREVWMTE1OTUuamF2YQpAQCAtMCwwICsxLDcgQEAKK2NsYXNzIFRlc3QgeworICAgIHByaXZhdGUgY2xhc3MgPGNhcmV0PkEgeworICAgICAgICBwcml2YXRlIEIgYiA9IG5ldyBCKCk7CisgICAgICAgIHByaXZhdGUgY2xhc3MgQiB7CisgICAgICAgIH0KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ha2VDbGFzc1N0YXRpYy9JREVBREVWMTE1OTVfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tYWtlQ2xhc3NTdGF0aWMvSURFQURFVjExNTk1X2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2NlNTk0YQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tYWtlQ2xhc3NTdGF0aWMvSURFQURFVjExNTk1X2FmdGVyLmphdmEKQEAgLTAsMCArMSwxMSBAQAorY2xhc3MgVGVzdCB7CisgICAgcHJpdmF0ZSBzdGF0aWMgY2xhc3MgQSB7CisgICAgICAgIHByaXZhdGUgQiBiID0gbmV3IEIoKTsKKworICAgICAgICBwdWJsaWMgQSgpIHsKKyAgICAgICAgfQorCisgICAgICAgIHByaXZhdGUgY2xhc3MgQiB7CisgICAgICAgIH0KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ha2VDbGFzc1N0YXRpYy9JREVBREVWMTI3NjIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tYWtlQ2xhc3NTdGF0aWMvSURFQURFVjEyNzYyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWIzOGEzZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tYWtlQ2xhc3NTdGF0aWMvSURFQURFVjEyNzYyLmphdmEKQEAgLTAsMCArMSwxNiBAQAorY2xhc3MgVGVzdDE4IHsKKworICAgIFN0cmluZyBzdHI7CisKKyAgICBjbGFzcyA8Y2FyZXQ+QSB7CisgICAgICAgIGJvb2xlYW4gZmxhZzsKKworICAgICAgICBwdWJsaWMgQShib29sZWFuIGZsYWcpIHsKKyAgICAgICAgICAgIHRoaXMuZmxhZyA9IGZsYWc7CisgICAgICAgIH0KKworICAgICAgICB2b2lkIGZvbygpIHsKKyAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigic3RyID0gIiArIHN0cik7CisgICAgICAgIH0KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ha2VDbGFzc1N0YXRpYy9JREVBREVWMTI3NjJfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tYWtlQ2xhc3NTdGF0aWMvSURFQURFVjEyNzYyX2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjc0YzZlMAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tYWtlQ2xhc3NTdGF0aWMvSURFQURFVjEyNzYyX2FmdGVyLmphdmEKQEAgLTAsMCArMSwxOCBAQAorY2xhc3MgVGVzdDE4IHsKKworICAgIFN0cmluZyBzdHI7CisKKyAgICBzdGF0aWMgY2xhc3MgQSB7CisgICAgICAgIGJvb2xlYW4gZmxhZzsKKyAgICAgICAgcHJpdmF0ZSBUZXN0MTggYW5PYmplY3Q7CisKKyAgICAgICAgcHVibGljIEEoVGVzdDE4IGFuT2JqZWN0LCBib29sZWFuIGZsYWcpIHsKKyAgICAgICAgICAgIHRoaXMuZmxhZyA9IGZsYWc7CisgICAgICAgICAgICB0aGlzLmFuT2JqZWN0ID0gYW5PYmplY3Q7CisgICAgICAgIH0KKworICAgICAgICB2b2lkIGZvbygpIHsKKyAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigic3RyID0gIiArIGFuT2JqZWN0LnN0cik7CisgICAgICAgIH0KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ha2VDbGFzc1N0YXRpYy9JREVBREVWMzI0Ny5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ha2VDbGFzc1N0YXRpYy9JREVBREVWMzI0Ny5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY0NjlhZDcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWFrZUNsYXNzU3RhdGljL0lERUFERVYzMjQ3LmphdmEKQEAgLTAsMCArMSwxNSBAQAorY2xhc3MgVGVzdDggeworCisgICAgdm9pZCBiYXIoKSB7CisgICAgfQorCisgICAgY2xhc3MgPGNhcmV0PkIgeworCisgICAgICAgIGludCBjOworCisgICAgICAgIHZvaWQgZm9vKCkgeworICAgICAgICAgICAgYyA9IDEwOworICAgICAgICAgICAgYmFyKCk7CisgICAgICAgIH0KKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWFrZUNsYXNzU3RhdGljL0lERUFERVYzMjQ3X2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWFrZUNsYXNzU3RhdGljL0lERUFERVYzMjQ3X2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGZlZTQ4NAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tYWtlQ2xhc3NTdGF0aWMvSURFQURFVjMyNDdfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDIwIEBACitjbGFzcyBUZXN0OCB7CisKKyAgICB2b2lkIGJhcigpIHsKKyAgICB9CisKKyAgICBzdGF0aWMgY2xhc3MgQiB7CisKKyAgICAgICAgaW50IGM7CisgICAgICAgIHByaXZhdGUgVGVzdDggYW5PYmplY3Q7CisKKyAgICAgICAgcHVibGljIEIoVGVzdDggYW5PYmplY3QpIHsKKyAgICAgICAgICAgIHRoaXMuYW5PYmplY3QgPSBhbk9iamVjdDsKKyAgICAgICAgfQorCisgICAgICAgIHZvaWQgZm9vKCkgeworICAgICAgICAgICAgYyA9IDEwOworICAgICAgICAgICAgYW5PYmplY3QuYmFyKCk7CisgICAgICAgIH0KKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWFrZUNsYXNzU3RhdGljL05ld0V4cHJlc3Npb25RdWFsaWZpZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tYWtlQ2xhc3NTdGF0aWMvTmV3RXhwcmVzc2lvblF1YWxpZmllci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM3YmRmNjkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWFrZUNsYXNzU3RhdGljL05ld0V4cHJlc3Npb25RdWFsaWZpZXIuamF2YQpAQCAtMCwwICsxLDE3IEBACitwdWJsaWMgY2xhc3MgQSB7CisgIHByaXZhdGUgY2xhc3MgPGNhcmV0PkIgeworICAgICAgcHVibGljIEIoKSB7CisgICAgICB9CisgIH0KKworICBzdGF0aWMgdm9pZCBtKEEgYSkgeworICAgIEIgYiA9IG5ldyBBKCkubmV3IEIoKTsKKyAgICBCIGIxID0gYS5uZXcgQigpOworICAgIEIgYjIgPSBuZXcgQigpOworICAgIEIgYjMgPSBnZXRBKCkubmV3IEIoKTsKKyAgfQorCisgIHN0YXRpYyBBIGdldEEoKXtyZXR1cm4gbnVsbDt9CisKKworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ha2VDbGFzc1N0YXRpYy9OZXdFeHByZXNzaW9uUXVhbGlmaWVyX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWFrZUNsYXNzU3RhdGljL05ld0V4cHJlc3Npb25RdWFsaWZpZXJfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZjU2YzU2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ha2VDbGFzc1N0YXRpYy9OZXdFeHByZXNzaW9uUXVhbGlmaWVyX2FmdGVyLmphdmEKQEAgLTAsMCArMSwxNyBAQAorcHVibGljIGNsYXNzIEEgeworICBwcml2YXRlIHN0YXRpYyBjbGFzcyBCIHsKKyAgICAgIHB1YmxpYyBCKCkgeworICAgICAgfQorICB9CisKKyAgc3RhdGljIHZvaWQgbShBIGEpIHsKKyAgICBCIGIgPSBuZXcgQigpOworICAgIEIgYjEgPSBuZXcgQigpOworICAgIEIgYjIgPSBuZXcgQigpOworICAgIEIgYjMgPSBuZXcgQigpOworICB9CisKKyAgc3RhdGljIEEgZ2V0QSgpe3JldHVybiBudWxsO30KKworCit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWFrZUNsYXNzU3RhdGljL05vbkRlZmF1bHRDb25zdHJ1Y3RvckFub255bW91c0NsYXNzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWFrZUNsYXNzU3RhdGljL05vbkRlZmF1bHRDb25zdHJ1Y3RvckFub255bW91c0NsYXNzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTFlZmE2MgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tYWtlQ2xhc3NTdGF0aWMvTm9uRGVmYXVsdENvbnN0cnVjdG9yQW5vbnltb3VzQ2xhc3MuamF2YQpAQCAtMCwwICsxLDE2IEBACitwdWJsaWMgY2xhc3MgQSB7CisgIGNsYXNzIDxjYXJldD5CIHsKKyAgICBCKCkgeworICAgIH0KKyAgfQorfQorCitjbGFzcyBDIHsKKyAgdm9pZCBmb28oKSB7CisgICAgbmV3IEEoKS5uZXcgQigpIHsKKyAgICAgIHB1YmxpYyBTdHJpbmcgdG9TdHJpbmcoKSB7CisgICAgICAgIHJldHVybiBzdXBlci50b1N0cmluZygpOworICAgICAgfQorICAgIH0udG9TdHJpbmcoKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tYWtlQ2xhc3NTdGF0aWMvTm9uRGVmYXVsdENvbnN0cnVjdG9yQW5vbnltb3VzQ2xhc3NfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tYWtlQ2xhc3NTdGF0aWMvTm9uRGVmYXVsdENvbnN0cnVjdG9yQW5vbnltb3VzQ2xhc3NfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NzllNzllCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ha2VDbGFzc1N0YXRpYy9Ob25EZWZhdWx0Q29uc3RydWN0b3JBbm9ueW1vdXNDbGFzc19hZnRlci5qYXZhCkBAIC0wLDAgKzEsMTYgQEAKK3B1YmxpYyBjbGFzcyBBIHsKKyAgc3RhdGljIGNsYXNzIEIgeworICAgIEIoKSB7CisgICAgfQorICB9Cit9CisKK2NsYXNzIEMgeworICB2b2lkIGZvbygpIHsKKyAgICBuZXcgQS5CKCkgeworICAgICAgcHVibGljIFN0cmluZyB0b1N0cmluZygpIHsKKyAgICAgICAgcmV0dXJuIHN1cGVyLnRvU3RyaW5nKCk7CisgICAgICB9CisgICAgfS50b1N0cmluZygpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ha2VDbGFzc1N0YXRpYy9RdWFsaWZpZWRUaGlzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWFrZUNsYXNzU3RhdGljL1F1YWxpZmllZFRoaXMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZjBkMDA5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ha2VDbGFzc1N0YXRpYy9RdWFsaWZpZWRUaGlzLmphdmEKQEAgLTAsMCArMSwxMyBAQAorcHVibGljIGNsYXNzIFlvWW8geworICAgIGNsYXNzIDxjYXJldD5Zb1lvWW8geworICAgICAgICB2b2lkIGZvbyAoKXsKKyAgICAgICAgICAgIFlvWW8geW9Zb3kgPSBZb1lvLnRoaXM7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBjbGFzcyBPdGhlciB7CisgICAgICAgIHsKKyAgICAgICAgICAgIG5ldyBZb1lvWW8oKTsKKyAgICAgICAgfQorICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tYWtlQ2xhc3NTdGF0aWMvUXVhbGlmaWVkVGhpc19hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ha2VDbGFzc1N0YXRpYy9RdWFsaWZpZWRUaGlzX2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGU1OTZhYgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tYWtlQ2xhc3NTdGF0aWMvUXVhbGlmaWVkVGhpc19hZnRlci5qYXZhCkBAIC0wLDAgKzEsMTkgQEAKK3B1YmxpYyBjbGFzcyBZb1lvIHsKKyAgICBzdGF0aWMgY2xhc3MgWW9Zb1lvIHsKKyAgICAgICAgcHJpdmF0ZSBZb1lvIGFuT2JqZWN0OworCisgICAgICAgIHB1YmxpYyBZb1lvWW8oWW9ZbyBhbk9iamVjdCkgeworICAgICAgICAgICAgdGhpcy5hbk9iamVjdCA9IGFuT2JqZWN0OworICAgICAgICB9CisKKyAgICAgICAgdm9pZCBmb28gKCl7CisgICAgICAgICAgICBZb1lvIHlvWW95ID0gYW5PYmplY3Q7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBjbGFzcyBPdGhlciB7CisgICAgICAgIHsKKyAgICAgICAgICAgIG5ldyBZb1lvWW8oWW9Zby50aGlzKTsKKyAgICAgICAgfQorICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tYWtlQ2xhc3NTdGF0aWMvUmVnUmVmZXJlbmNlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWFrZUNsYXNzU3RhdGljL1JlZ1JlZmVyZW5jZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVlMjhjZmYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWFrZUNsYXNzU3RhdGljL1JlZ1JlZmVyZW5jZS5qYXZhCkBAIC0wLDAgKzEsNyBAQAorcHVibGljIGNsYXNzIEEgeworICBwdWJsaWMgdm9pZCB0ZXN0KElubmVyIGkpIHsKKyAgfQorCisgIHByaXZhdGUgY2xhc3MgPGNhcmV0PklubmVyIHsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tYWtlQ2xhc3NTdGF0aWMvUmVnUmVmZXJlbmNlX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWFrZUNsYXNzU3RhdGljL1JlZ1JlZmVyZW5jZV9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM3NzU0YzQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWFrZUNsYXNzU3RhdGljL1JlZ1JlZmVyZW5jZV9hZnRlci5qYXZhCkBAIC0wLDAgKzEsOSBAQAorcHVibGljIGNsYXNzIEEgeworICBwdWJsaWMgdm9pZCB0ZXN0KElubmVyIGkpIHsKKyAgfQorCisgIHByaXZhdGUgc3RhdGljIGNsYXNzIDxjYXJldD5Jbm5lciB7CisgICAgICBwdWJsaWMgSW5uZXIoKSB7CisgICAgICB9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWFrZUNsYXNzU3RhdGljL1NpbXBsZTEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tYWtlQ2xhc3NTdGF0aWMvU2ltcGxlMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZmMGFmMmYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWFrZUNsYXNzU3RhdGljL1NpbXBsZTEuamF2YQpAQCAtMCwwICsxLDE0IEBACitwdWJsaWMgY2xhc3MgWW9ZbyB7CisgICAgaW50IHk7CisgICAgY2xhc3MgPGNhcmV0PllvWW9ZbyB7CisgICAgICAgIHZvaWQgZm9vICgpeworICAgICAgICAgICAgWW9ZbyB5b1lveSA9IFlvWW8udGhpczsKKyAgICAgICAgICAgIGludCB0ID0geTsKKyAgICAgICAgICAgIGludCB0MSA9IHlvWW95Lnk7CisgICAgICAgICAgICBuZXcgT3RoZXIoKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGNsYXNzIE90aGVyIHt9Cit9CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tYWtlQ2xhc3NTdGF0aWMvU2ltcGxlMV9hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ha2VDbGFzc1N0YXRpYy9TaW1wbGUxX2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmViMzc2OQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tYWtlQ2xhc3NTdGF0aWMvU2ltcGxlMV9hZnRlci5qYXZhCkBAIC0wLDAgKzEsMjAgQEAKK3B1YmxpYyBjbGFzcyBZb1lvIHsKKyAgICBpbnQgeTsKKyAgICBzdGF0aWMgY2xhc3MgWW9Zb1lvIHsKKyAgICAgICAgcHJpdmF0ZSBZb1lvIGFuT2JqZWN0OworCisgICAgICAgIHB1YmxpYyBZb1lvWW8oWW9ZbyBhbk9iamVjdCkgeworICAgICAgICAgICAgdGhpcy5hbk9iamVjdCA9IGFuT2JqZWN0OworICAgICAgICB9CisKKyAgICAgICAgdm9pZCBmb28gKCl7CisgICAgICAgICAgICBZb1lvIHlvWW95ID0gYW5PYmplY3Q7CisgICAgICAgICAgICBpbnQgdCA9IGFuT2JqZWN0Lnk7CisgICAgICAgICAgICBpbnQgdDEgPSB5b1lveS55OworICAgICAgICAgICAgYW5PYmplY3QubmV3IE90aGVyKCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBjbGFzcyBPdGhlciB7fQorfQorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWFrZUNsYXNzU3RhdGljL1NpbXBsZUZpZWxkcy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ha2VDbGFzc1N0YXRpYy9TaW1wbGVGaWVsZHMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NGRmYjdhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ha2VDbGFzc1N0YXRpYy9TaW1wbGVGaWVsZHMuamF2YQpAQCAtMCwwICsxLDExIEBACitwdWJsaWMgY2xhc3MgWW9ZbyB7CisgICAgaW50IHk7CisgICAgY2xhc3MgPGNhcmV0PllvWW9ZbyB7CisgICAgICAgIHZvaWQgZm9vICgpeworICAgICAgICAgICAgWW9ZbyB5b1lveSA9IFlvWW8udGhpczsKKyAgICAgICAgICAgIGludCB0ID0geTsKKyAgICAgICAgICAgIGludCB0MSA9IHlvWW95Lnk7CisgICAgICAgIH0KKyAgICB9Cit9CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tYWtlQ2xhc3NTdGF0aWMvU2ltcGxlRmllbGRzX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWFrZUNsYXNzU3RhdGljL1NpbXBsZUZpZWxkc19hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE2ZWIyYzEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWFrZUNsYXNzU3RhdGljL1NpbXBsZUZpZWxkc19hZnRlci5qYXZhCkBAIC0wLDAgKzEsMTkgQEAKK3B1YmxpYyBjbGFzcyBZb1lvIHsKKyAgICBpbnQgeTsKKyAgICBzdGF0aWMgY2xhc3MgWW9Zb1lvIHsKKyAgICAgICAgcHJpdmF0ZSBZb1lvIGFuT2JqZWN0OworICAgICAgICBwcml2YXRlIGludCB5OworCisgICAgICAgIHB1YmxpYyBZb1lvWW8oWW9ZbyBhbk9iamVjdCwgaW50IHkpIHsKKyAgICAgICAgICAgIHRoaXMuYW5PYmplY3QgPSBhbk9iamVjdDsKKyAgICAgICAgICAgIHRoaXMueSA9IHk7CisgICAgICAgIH0KKworICAgICAgICB2b2lkIGZvbyAoKXsKKyAgICAgICAgICAgIFlvWW8geW9Zb3kgPSBhbk9iamVjdDsKKyAgICAgICAgICAgIGludCB0ID0geTsKKyAgICAgICAgICAgIGludCB0MSA9IHlvWW95Lnk7CisgICAgICAgIH0KKyAgICB9Cit9CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tYWtlQ2xhc3NTdGF0aWMvVGhpc1N1cGVyRXhwcmVzc2lvbnMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tYWtlQ2xhc3NTdGF0aWMvVGhpc1N1cGVyRXhwcmVzc2lvbnMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YzU3YzFkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ha2VDbGFzc1N0YXRpYy9UaGlzU3VwZXJFeHByZXNzaW9ucy5qYXZhCkBAIC0wLDAgKzEsMjAgQEAKK3B1YmxpYyBjbGFzcyBtIHsKKyAgICB2b2lkIGFhKCl7fQorfQorCitjbGFzcyBPdXRlciBleHRlbmRzIG17CisgICAgY2xhc3MgSTxjYXJldD5ubmVyIGV4dGVuZHMgU3VwZXIgeworICAgICAgICB2b2lkIGJhcigpeworCisgICAgICAgIH0KKyAgICAgICAgdm9pZCBmb28oKSB7CisgICAgICAgICAgICBzdXBlci5mb28oKTsKKyAgICAgICAgICAgIHRoaXMuYmFyKCk7CisgICAgICAgICAgICBPdXRlci5zdXBlci5hYSgpOworICAgICAgICAgICAgT3V0ZXIudGhpcy5hYSgpOworICAgICAgICB9CisgICAgfQorfQorY2xhc3MgU3VwZXIgeworICAgIHZvaWQgZm9vKCkge30KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWFrZUNsYXNzU3RhdGljL1RoaXNTdXBlckV4cHJlc3Npb25zX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWFrZUNsYXNzU3RhdGljL1RoaXNTdXBlckV4cHJlc3Npb25zX2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTYwNDYzMAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tYWtlQ2xhc3NTdGF0aWMvVGhpc1N1cGVyRXhwcmVzc2lvbnNfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDI2IEBACitwdWJsaWMgY2xhc3MgbSB7CisgICAgdm9pZCBhYSgpe30KK30KKworY2xhc3MgT3V0ZXIgZXh0ZW5kcyBteworICAgIHN0YXRpYyBjbGFzcyBJbm5lciBleHRlbmRzIFN1cGVyIHsKKyAgICAgICAgcHJpdmF0ZSBPdXRlciBhbk9iamVjdDsKKworICAgICAgICBwdWJsaWMgSW5uZXIoT3V0ZXIgYW5PYmplY3QpIHsKKyAgICAgICAgICAgIHRoaXMuYW5PYmplY3QgPSBhbk9iamVjdDsKKyAgICAgICAgfQorCisgICAgICAgIHZvaWQgYmFyKCl7CisKKyAgICAgICAgfQorICAgICAgICB2b2lkIGZvbygpIHsKKyAgICAgICAgICAgIHN1cGVyLmZvbygpOworICAgICAgICAgICAgdGhpcy5iYXIoKTsKKyAgICAgICAgICAgIGFuT2JqZWN0LmFhKCk7CisgICAgICAgICAgICBhbk9iamVjdC5hYSgpOworICAgICAgICB9CisgICAgfQorfQorY2xhc3MgU3VwZXIgeworICAgIHZvaWQgZm9vKCkge30KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWFrZU1ldGhvZFN0YXRpYy9hZnRlcjEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tYWtlTWV0aG9kU3RhdGljL2FmdGVyMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRjMTY5ODkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWFrZU1ldGhvZFN0YXRpYy9hZnRlcjEuamF2YQpAQCAtMCwwICsxLDQgQEAKK3B1YmxpYyBjbGFzcyBGb28geworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCA8Y2FyZXQ+bWV0aG9kKEZvbyBhbk9iamVjdCkgeworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWFrZU1ldGhvZFN0YXRpYy9hZnRlcjEwLW5wLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWFrZU1ldGhvZFN0YXRpYy9hZnRlcjEwLW5wLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTYzMmEzOAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tYWtlTWV0aG9kU3RhdGljL2FmdGVyMTAtbnAuamF2YQpAQCAtMCwwICsxLDEzIEBACitwdWJsaWMgY2xhc3MgRm9vIHsKKyAgICBwdWJsaWMgaW50IG15RGF0YTsKKyAgICBzdGF0aWMgaW50IG1ldGhvZChpbnQgaSkgeworICAgICAgICByZXR1cm4gbXlEYXRhICsgaTsKKyAgICB9Cit9CisKK2NsYXNzIEJhciB7CisgICAgcHVibGljIEZvbyBteUZvbzsgICAgCisgICAgaW50IGEoaW50IGIpIHsKKyAgICAgICAgcmV0dXJuIEZvby5tZXRob2QoYiAqIDIpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWFrZU1ldGhvZFN0YXRpYy9hZnRlcjEwLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWFrZU1ldGhvZFN0YXRpYy9hZnRlcjEwLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzFkNTFjYwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tYWtlTWV0aG9kU3RhdGljL2FmdGVyMTAuamF2YQpAQCAtMCwwICsxLDEzIEBACitwdWJsaWMgY2xhc3MgRm9vIHsKKyAgICBwdWJsaWMgaW50IG15RGF0YTsKKyAgICBzdGF0aWMgaW50IDxjYXJldD5tZXRob2QoRm9vIGFuT2JqZWN0LCBpbnQgaSkgeworICAgICAgICByZXR1cm4gYW5PYmplY3QubXlEYXRhICsgaTsKKyAgICB9Cit9CisKK2NsYXNzIEJhciB7CisgICAgcHVibGljIEZvbyBteUZvbzsgICAgCisgICAgaW50IGEoaW50IGIpIHsKKyAgICAgICAgcmV0dXJuIEZvby5tZXRob2QobXlGb28sIGIgKiAyKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ha2VNZXRob2RTdGF0aWMvYWZ0ZXIxMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ha2VNZXRob2RTdGF0aWMvYWZ0ZXIxMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJiYTE3NzkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWFrZU1ldGhvZFN0YXRpYy9hZnRlcjExLmphdmEKQEAgLTAsMCArMSwxMiBAQAorcHVibGljIGNsYXNzIEZvbyB7CisgICAgcHVibGljIGludCBteURhdGE7CisgICAgc3RhdGljIGludCA8Y2FyZXQ+bWV0aG9kKEZvbyBhbk9iamVjdCwgaW50IGkpIHsKKyAgICAgICAgcmV0dXJuIGFuT2JqZWN0Lm15RGF0YSArIGk7CisgICAgfQorfQorCitwdWJsaWMgY2xhc3MgQmFyIGV4dGVuZHMgRm9vIHsKKyAgICBpbnQgbWV0aG9kKGludCBiKSB7CisgICAgICAgIHJldHVybiBzdXBlci5tZXRob2QodGhpcywgYioyKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ha2VNZXRob2RTdGF0aWMvYWZ0ZXIxMi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ha2VNZXRob2RTdGF0aWMvYWZ0ZXIxMi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE4ZTdhMjMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWFrZU1ldGhvZFN0YXRpYy9hZnRlcjEyLmphdmEKQEAgLTAsMCArMSw2IEBACitjbGFzcyBGb28gZXh0ZW5kcyBqYXZhLnV0aWwuVmVjdG9yIHsKKyAgICBzdGF0aWMgaW50IDxjYXJldD5tZXRob2QoRm9vIGFuT2JqZWN0KSB7CisgICAgICAgIHJldHVybiBhbk9iamVjdC50b1N0cmluZygpOworICAgIH0KK30KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ha2VNZXRob2RTdGF0aWMvYWZ0ZXIxMy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ha2VNZXRob2RTdGF0aWMvYWZ0ZXIxMy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRkMWM2NWIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWFrZU1ldGhvZFN0YXRpYy9hZnRlcjEzLmphdmEKQEAgLTAsMCArMSw1IEBACitjbGFzcyBGb28geworICAgc3RhdGljIEZvbyBiYXIoRm9vIGFuT2JqZWN0KSB7CisgICAgICAgcmV0dXJuIGFuT2JqZWN0OworICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tYWtlTWV0aG9kU3RhdGljL2FmdGVyMTQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tYWtlTWV0aG9kU3RhdGljL2FmdGVyMTQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MzliYTM2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ha2VNZXRob2RTdGF0aWMvYWZ0ZXIxNC5qYXZhCkBAIC0wLDAgKzEsMTEgQEAKK3B1YmxpYyBjbGFzcyBUZXN0IHsKKyAgIHN0YXRpYyBUZXN0IDxjYXJldD5tZXRob2QoZmluYWwgVGVzdCBhbk9iamVjdCkgeworICAgICBmaW5hbCBUZXN0W10gcmVzdWx0ID0gbmV3IGludFsxXTsKKyAgICAgbmV3IFJ1bm5hYmxlKCkgeworICAgICAgICAgcHVibGljIHZvaWQgcnVuKCkgeworICAgICAgICAgICAgcmVzdWx0WzBdID0gYW5PYmplY3Q7CisgICAgICAgICB9ICAgICAgICAgCisgICAgIH0ucnVuKCk7CisgICAgIHJldHVybiByZXN1bHRbMF07CisgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ha2VNZXRob2RTdGF0aWMvYWZ0ZXIxNS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ha2VNZXRob2RTdGF0aWMvYWZ0ZXIxNS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA5ODMxMmQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWFrZU1ldGhvZFN0YXRpYy9hZnRlcjE1LmphdmEKQEAgLTAsMCArMSw5IEBACitwdWJsaWMgY2xhc3MgRm9vIHsKKyAgRm9vIGdldEFub3RoZXJGb28oKSB7fQorICAKKyAgc3RhdGljIHZvaWQgdHJ5TWFrZU1lU3RhdGljKEZvbyBhbk9iamVjdCwgYm9vbGVhbiBiKSB7CisgICAgaWYgKGIpIHsKKyAgICAgICAgRm9vLnRyeU1ha2VNZVN0YXRpYyhhbk9iamVjdC5nZXRBbm90aGVyRm9vKCksICFiKTsKKyAgICB9CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tYWtlTWV0aG9kU3RhdGljL2FmdGVyMTYuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tYWtlTWV0aG9kU3RhdGljL2FmdGVyMTYuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hODBlM2ViCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ha2VNZXRob2RTdGF0aWMvYWZ0ZXIxNi5qYXZhCkBAIC0wLDAgKzEsMTEgQEAKK3B1YmxpYyBjbGFzcyBUZXN0IHsKKyAgICB2b2lkIGFub3RoZXJNZXRob2QoU3RyaW5nIHMpOworICAgIFN0cmluZyBmaWVsZDsKKyAgICAvKioKKyAgICAgKiBAcGFyYW0gYW5PYmplY3QKKyAgICAgKiBAcGFyYW0gZmllbGQKKyAgICAgKi8KKyAgICBzdGF0aWMgdm9pZCBtZXRob2QoVGVzdCBhbk9iamVjdCwgU3RyaW5nIGZpZWxkKSB7CisgICAgICAgIGFuT2JqZWN0LmFub3RoZXJNZXRob2QoZmllbGQpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWFrZU1ldGhvZFN0YXRpYy9hZnRlcjE3LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWFrZU1ldGhvZFN0YXRpYy9hZnRlcjE3LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmY0MmNjMwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tYWtlTWV0aG9kU3RhdGljL2FmdGVyMTcuamF2YQpAQCAtMCwwICsxLDEwIEBACitwdWJsaWMgY2xhc3MgVGVzdCB7CisgICAgU3RyaW5nIGZpZWxkOworCisgICAgLyoqCisgICAgICogQHBhcmFtIGZpZWxkCisgICAgICovCisgICAgc3RhdGljIFN0cmluZyBtZXRob2QoU3RyaW5nIGZpZWxkKSB7CisgICAgICAgIHJldHVybiBmaWVsZDsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ha2VNZXRob2RTdGF0aWMvYWZ0ZXIxOC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ha2VNZXRob2RTdGF0aWMvYWZ0ZXIxOC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMzY2VmYmIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWFrZU1ldGhvZFN0YXRpYy9hZnRlcjE4LmphdmEKQEAgLTAsMCArMSw1IEBACitjbGFzcyBDPFQ+IHsKKyAgICBzdGF0aWMgPFQ+IHZvaWQgbWV0aG9kKEM8VD4gYW5PYmplY3QpICB7CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihhbk9iamVjdCk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tYWtlTWV0aG9kU3RhdGljL2FmdGVyMTkuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tYWtlTWV0aG9kU3RhdGljL2FmdGVyMTkuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43M2VhMTY5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ha2VNZXRob2RTdGF0aWMvYWZ0ZXIxOS5qYXZhCkBAIC0wLDAgKzEsNyBAQAorY2xhc3MgQyB7CisgICAgaW50IG15RmllbGQ7CisKKyAgICBzdGF0aWMgdm9pZCBtZXRob2QoQyBhbk9iamVjdCwgaW50IGkpIHsKKyAgICAgICAgYW5PYmplY3QubXlGaWVsZCA9IGk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tYWtlTWV0aG9kU3RhdGljL2FmdGVyMi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ha2VNZXRob2RTdGF0aWMvYWZ0ZXIyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDJmMjQ3OQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tYWtlTWV0aG9kU3RhdGljL2FmdGVyMi5qYXZhCkBAIC0wLDAgKzEsNiBAQAorcHVibGljIGNsYXNzIEZvbyB7CisgICAgc3RhdGljIGludCBpOworICAgIHB1YmxpYyBzdGF0aWMgaW50IDxjYXJldD5tZXRob2QoRm9vIGFuT2JqZWN0KSB7CisJcmV0dXJuIGk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tYWtlTWV0aG9kU3RhdGljL2FmdGVyMjAuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tYWtlTWV0aG9kU3RhdGljL2FmdGVyMjAuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNjUwYTQ2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ha2VNZXRob2RTdGF0aWMvYWZ0ZXIyMC5qYXZhCkBAIC0wLDAgKzEsMjAgQEAKK2ltcG9ydCBqYXZheC5zd2luZy4qOworaW1wb3J0IGphdmEuYXd0LmV2ZW50LldpbmRvd0FkYXB0ZXI7CitpbXBvcnQgamF2YS5hd3QuZXZlbnQuV2luZG93RXZlbnQ7CisKK2ZpbmFsIGNsYXNzIEJ1ZworICAgZXh0ZW5kcyBKRnJhbWUgeworICAgIHB1YmxpYyBCdWcoKSB7CisgICAgICAgIGZvbyh0aGlzKTsKKyAgICB9CisKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgZm9vKEJ1ZyBhbk9iamVjdCkgeworICAgICAgICBhbk9iamVjdC5hZGRXaW5kb3dMaXN0ZW5lcihhbk9iamVjdC5uZXcgTXlXaW5kb3dMaXN0ZW5lcigpKTsKKyAgICB9CisKKyAgICBwcml2YXRlIGNsYXNzIE15V2luZG93TGlzdGVuZXIKKyAgICAgICBleHRlbmRzIFdpbmRvd0FkYXB0ZXIgeworICAgICAgICBwdWJsaWMgdm9pZCB3aW5kb3dBY3RpdmF0ZWQoV2luZG93RXZlbnQgZSkgeworICAgICAgICB9CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tYWtlTWV0aG9kU3RhdGljL2FmdGVyMjEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tYWtlTWV0aG9kU3RhdGljL2FmdGVyMjEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNDI1MTgwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ha2VNZXRob2RTdGF0aWMvYWZ0ZXIyMS5qYXZhCkBAIC0wLDAgKzEsNSBAQAorY2xhc3MgQmFyMSB7CisgICAgcHVibGljIHN0YXRpYyB2b2lkIEZvbygpIHsKKyAgICAgICAgRm9vKCk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tYWtlTWV0aG9kU3RhdGljL2FmdGVyMjIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tYWtlTWV0aG9kU3RhdGljL2FmdGVyMjIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZjJjZTQzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ha2VNZXRob2RTdGF0aWMvYWZ0ZXIyMi5qYXZhCkBAIC0wLDAgKzEsMTUgQEAKK2NsYXNzIFRlc3QgeworCisgICAgcHVibGljIHN0YXRpYyB2b2lkIGZvbyhUZXN0IGFuT2JqZWN0KSB7CisgICAgICAgIGFuT2JqZWN0LmJhcigpOworICAgIH0KKworICAgIHZvaWQgYmFyKCkgeworICAgIH0KKworICAgIGNsYXNzIEEgeworICAgICAgICB2b2lkIGJsYWgoKSB7CisgICAgICAgICAgICBmb28oVGVzdC50aGlzKTsKKyAgICAgICAgfQorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWFrZU1ldGhvZFN0YXRpYy9hZnRlcjIzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWFrZU1ldGhvZFN0YXRpYy9hZnRlcjIzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGIyNzZlYgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tYWtlTWV0aG9kU3RhdGljL2FmdGVyMjMuamF2YQpAQCAtMCwwICsxLDYgQEAKK2NsYXNzIE1ldGhvZE93bmVyNjxUPiB7CisgICAgcHVibGljIHN0YXRpYyA8VD4gVCBmb28oVCB0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIHQ7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tYWtlTWV0aG9kU3RhdGljL2FmdGVyMy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ha2VNZXRob2RTdGF0aWMvYWZ0ZXIzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjQ5N2IwZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tYWtlTWV0aG9kU3RhdGljL2FmdGVyMy5qYXZhCkBAIC0wLDAgKzEsNiBAQAorcHVibGljIGNsYXNzIEZvbyB7CisgICAgaW50IGk7CisgICAgcHVibGljIHN0YXRpYyBpbnQgbWV0aG9kKEZvbyBhbk9iamVjdCkgeworICAgICAgICByZXR1cm4gYW5PYmplY3QuaTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ha2VNZXRob2RTdGF0aWMvYWZ0ZXI0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWFrZU1ldGhvZFN0YXRpYy9hZnRlcjQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NTg0NTVhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ha2VNZXRob2RTdGF0aWMvYWZ0ZXI0LmphdmEKQEAgLTAsMCArMSw2IEBACitwdWJsaWMgY2xhc3MgRm9vIHsKKyAgICBwdWJsaWMgaW50IGk7CisgICAgcHVibGljIHN0YXRpYyBpbnQgbWV0aG9kKEZvbyBhbk9iamVjdCkgeworICAgICAgICByZXR1cm4gYW5PYmplY3QuaTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ha2VNZXRob2RTdGF0aWMvYWZ0ZXI1LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWFrZU1ldGhvZFN0YXRpYy9hZnRlcjUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMjRmZDQzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ha2VNZXRob2RTdGF0aWMvYWZ0ZXI1LmphdmEKQEAgLTAsMCArMSw2IEBACitwdWJsaWMgY2xhc3MgRm9vIHsKKyAgICBwdWJsaWMgaW50IGk7CisgICAgcHVibGljIHN0YXRpYyBpbnQgPGNhcmV0Pm1ldGhvZChGb28gYW5PYmplY3QpIHsKKyAgICAgICAgcmV0dXJuIGFuT2JqZWN0Lmk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tYWtlTWV0aG9kU3RhdGljL2FmdGVyNi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ha2VNZXRob2RTdGF0aWMvYWZ0ZXI2LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWQ2ZGZmYQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tYWtlTWV0aG9kU3RhdGljL2FmdGVyNi5qYXZhCkBAIC0wLDAgKzEsNiBAQAorcHVibGljIGNsYXNzIEZvbyBleHRlbmRzIEJhciB7CisgICAgcHVibGljIGludCBpOworICAgIHB1YmxpYyBzdGF0aWMgaW50IDxjYXJldD5tZXRob2QoRm9vIGFuT2JqZWN0KSB7CisgICAgICAgIHJldHVybiBhbk9iamVjdC5pOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWFrZU1ldGhvZFN0YXRpYy9hZnRlcjcuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tYWtlTWV0aG9kU3RhdGljL2FmdGVyNy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhkMzcwMzcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWFrZU1ldGhvZFN0YXRpYy9hZnRlcjcuamF2YQpAQCAtMCwwICsxLDEwIEBACitwdWJsaWMgY2xhc3MgRm9vIHsKKyAgICAgICAgICAgIAorICAgIHB1YmxpYyBpbnQgZihpbnQgaSkgeworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBwdWJsaWMgc3RhdGljIGludCA8Y2FyZXQ+bWV0aG9kKEZvbyBhbk9iamVjdCwgaW50IGkpIHsKKyAgICAgICAgcmV0dXJuIGFuT2JqZWN0LmYoaSk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tYWtlTWV0aG9kU3RhdGljL2FmdGVyOC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ha2VNZXRob2RTdGF0aWMvYWZ0ZXI4LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGRjZmM0MwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tYWtlTWV0aG9kU3RhdGljL2FmdGVyOC5qYXZhCkBAIC0wLDAgKzEsMTIgQEAKK3B1YmxpYyBjbGFzcyBGb28geworICAgIHB1YmxpYyBpbnQgbXlEYXRhOworICAgIHN0YXRpYyBpbnQgbWV0aG9kKGZpbmFsIEZvbyBhbk9iamVjdCwgaW50IGkpIHsKKyAgICAgICAgbmV3IFJ1bm5hYmxlICgpIHsKKyAgICAgICAgICAgIHZvaWQgZigpIHt9OworICAgICAgICAgICAgcHVibGljIHZvaWQgcnVuKCkgeworICAgICAgICAgICAgICAgIHRoaXMuZihhbk9iamVjdC5teURhdGEpOyAgICAKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICByZXR1cm4gYW5PYmplY3QubXlEYXRhICsgYW5PYmplY3QubXlEYXRhOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWFrZU1ldGhvZFN0YXRpYy9hZnRlcjkuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tYWtlTWV0aG9kU3RhdGljL2FmdGVyOS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUyZmQyOTQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWFrZU1ldGhvZFN0YXRpYy9hZnRlcjkuamF2YQpAQCAtMCwwICsxLDEyIEBACitwdWJsaWMgY2xhc3MgRm9vIHsKKyAgICBwdWJsaWMgaW50IG15RGF0YTsKKyAgICBzdGF0aWMgaW50IDxjYXJldD5tZXRob2QoRm9vIGFuT2JqZWN0LCBpbnQgaSkgeworICAgICAgICByZXR1cm4gYW5PYmplY3QubXlEYXRhICsgaTsKKyAgICB9Cit9CisKK3B1YmxpYyBjbGFzcyBCYXIgZXh0ZW5kcyBGb28geworICAgIGludCBhKGludCBiKSB7CisgICAgICAgIHJldHVybiBtZXRob2QodGhpcywgYioyKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ha2VNZXRob2RTdGF0aWMvYWZ0ZXJNZXRob2RSZWZlcmVuY2UuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tYWtlTWV0aG9kU3RhdGljL2FmdGVyTWV0aG9kUmVmZXJlbmNlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDMzMTg1OQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tYWtlTWV0aG9kU3RhdGljL2FmdGVyTWV0aG9kUmVmZXJlbmNlLmphdmEKQEAgLTAsMCArMSw5IEBACitjbGFzcyBUZXN0NCB7CisgICAgdm9pZCB0ZXN0KCkgeworICAgICAgICBGb28yPFRlc3Q0PiBmID0gVGVzdDQ6Onl5eTsKKyAgICB9CisgICAgc3RhdGljIHZvaWQgeXl5KFRlc3Q0IGFuT2JqZWN0KSB7fQorfQoraW50ZXJmYWNlIEZvbzI8VD4geworICAgIHZvaWQgYmFyKFQgaik7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ha2VNZXRob2RTdGF0aWMvYWZ0ZXJQcmVzZXJ2ZVBhcmFtZXRlcnNBbGlnbm1lbnQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tYWtlTWV0aG9kU3RhdGljL2FmdGVyUHJlc2VydmVQYXJhbWV0ZXJzQWxpZ25tZW50LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGQ3MjcyZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tYWtlTWV0aG9kU3RhdGljL2FmdGVyUHJlc2VydmVQYXJhbWV0ZXJzQWxpZ25tZW50LmphdmEKQEAgLTAsMCArMSw1IEBACitwdWJsaWMgY2xhc3MgVGVzdCB7CisgICAgcHVibGljIHN0YXRpYyB2b2lkIHRlc3QxMjMoaW50IGksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGopIHsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ha2VNZXRob2RTdGF0aWMvYWZ0ZXJQcmVzZXJ2ZVR5cGVQYXJhbXMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tYWtlTWV0aG9kU3RhdGljL2FmdGVyUHJlc2VydmVUeXBlUGFyYW1zLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjVmMjc5YQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tYWtlTWV0aG9kU3RhdGljL2FmdGVyUHJlc2VydmVUeXBlUGFyYW1zLmphdmEKQEAgLTAsMCArMSw1IEBACitjbGFzcyBDIHsKKyAgcHJpdmF0ZSBzdGF0aWMgPFQ+IExpc3Q8VD4gZ2V0VG9wTGV2ZWxJdGVtcygpIHsKKyAgICByZXR1cm4gbnVsbDsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tYWtlTWV0aG9kU3RhdGljL2JlZm9yZTEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tYWtlTWV0aG9kU3RhdGljL2JlZm9yZTEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZDk1NzE1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ha2VNZXRob2RTdGF0aWMvYmVmb3JlMS5qYXZhCkBAIC0wLDAgKzEsNCBAQAorcHVibGljIGNsYXNzIEZvbyB7CisgICAgcHVibGljIHZvaWQgPGNhcmV0Pm1ldGhvZCgpIHsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ha2VNZXRob2RTdGF0aWMvYmVmb3JlMTAuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tYWtlTWV0aG9kU3RhdGljL2JlZm9yZTEwLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2ViZjIzMAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tYWtlTWV0aG9kU3RhdGljL2JlZm9yZTEwLmphdmEKQEAgLTAsMCArMSwxMyBAQAorcHVibGljIGNsYXNzIEZvbyB7CisgICAgcHVibGljIGludCBteURhdGE7CisgICAgaW50IDxjYXJldD5tZXRob2QoaW50IGkpIHsKKyAgICAgICAgcmV0dXJuIG15RGF0YSArIGk7CisgICAgfQorfQorCitjbGFzcyBCYXIgeworICAgIHB1YmxpYyBGb28gbXlGb287ICAgIAorICAgIGludCBhKGludCBiKSB7CisgICAgICAgIHJldHVybiBteUZvby5tZXRob2QoYiAqIDIpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWFrZU1ldGhvZFN0YXRpYy9iZWZvcmUxMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ha2VNZXRob2RTdGF0aWMvYmVmb3JlMTEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMGQwNzdkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ha2VNZXRob2RTdGF0aWMvYmVmb3JlMTEuamF2YQpAQCAtMCwwICsxLDEyIEBACitwdWJsaWMgY2xhc3MgRm9vIHsKKyAgICBwdWJsaWMgaW50IG15RGF0YTsKKyAgICBpbnQgPGNhcmV0Pm1ldGhvZChpbnQgaSkgeworICAgICAgICByZXR1cm4gbXlEYXRhICsgaTsKKyAgICB9Cit9CisKK3B1YmxpYyBjbGFzcyBCYXIgZXh0ZW5kcyBGb28geworICAgIGludCBtZXRob2QoaW50IGIpIHsKKyAgICAgICAgcmV0dXJuIHN1cGVyLm1ldGhvZChiKjIpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWFrZU1ldGhvZFN0YXRpYy9iZWZvcmUxMi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ha2VNZXRob2RTdGF0aWMvYmVmb3JlMTIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYWFhNTdkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ha2VNZXRob2RTdGF0aWMvYmVmb3JlMTIuamF2YQpAQCAtMCwwICsxLDYgQEAKK2NsYXNzIEZvbyBleHRlbmRzIGphdmEudXRpbC5WZWN0b3IgeworICAgIGludCA8Y2FyZXQ+bWV0aG9kKCkgeworICAgICAgICByZXR1cm4gc3VwZXIudG9TdHJpbmcoKTsKKyAgICB9Cit9CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tYWtlTWV0aG9kU3RhdGljL2JlZm9yZTEzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWFrZU1ldGhvZFN0YXRpYy9iZWZvcmUxMy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlkMjUzYzkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWFrZU1ldGhvZFN0YXRpYy9iZWZvcmUxMy5qYXZhCkBAIC0wLDAgKzEsNSBAQAorY2xhc3MgRm9vIHsKKyAgIEZvbyA8Y2FyZXQ+YmFyKCkgeworICAgICAgIHJldHVybiB0aGlzOworICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tYWtlTWV0aG9kU3RhdGljL2JlZm9yZTE0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWFrZU1ldGhvZFN0YXRpYy9iZWZvcmUxNC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ3YTY3MzMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWFrZU1ldGhvZFN0YXRpYy9iZWZvcmUxNC5qYXZhCkBAIC0wLDAgKzEsMTEgQEAKK3B1YmxpYyBjbGFzcyBUZXN0IHsKKyAgIFRlc3QgPGNhcmV0Pm1ldGhvZCgpIHsKKyAgICAgZmluYWwgVGVzdFtdIHJlc3VsdCA9IG5ldyBpbnRbMV07CisgICAgIG5ldyBSdW5uYWJsZSgpIHsKKyAgICAgICAgIHB1YmxpYyB2b2lkIHJ1bigpIHsKKyAgICAgICAgICAgIHJlc3VsdFswXSA9IFRlc3QudGhpczsKKyAgICAgICAgIH0gICAgICAgICAKKyAgICAgfS5ydW4oKTsKKyAgICAgcmV0dXJuIHJlc3VsdFswXTsKKyAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWFrZU1ldGhvZFN0YXRpYy9iZWZvcmUxNS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ha2VNZXRob2RTdGF0aWMvYmVmb3JlMTUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZjM1YWViCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ha2VNZXRob2RTdGF0aWMvYmVmb3JlMTUuamF2YQpAQCAtMCwwICsxLDkgQEAKK3B1YmxpYyBjbGFzcyBGb28geworICBGb28gZ2V0QW5vdGhlckZvbygpIHt9CisgIAorICB2b2lkIDxjYXJldD50cnlNYWtlTWVTdGF0aWMoYm9vbGVhbiBiKSB7CisgICAgaWYgKGIpIHsKKyAgICAgICAgZ2V0QW5vdGhlckZvbygpLnRyeU1ha2VNZVN0YXRpYyghYik7CisgICAgfQorICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWFrZU1ldGhvZFN0YXRpYy9iZWZvcmUxNi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ha2VNZXRob2RTdGF0aWMvYmVmb3JlMTYuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41Njk2OTRhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ha2VNZXRob2RTdGF0aWMvYmVmb3JlMTYuamF2YQpAQCAtMCwwICsxLDkgQEAKK3B1YmxpYyBjbGFzcyBUZXN0IHsKKyAgICB2b2lkIGFub3RoZXJNZXRob2QoU3RyaW5nIHMpOworICAgIFN0cmluZyBmaWVsZDsKKyAgICAvKioKKyAgICAgKi8KKyAgICB2b2lkIDxjYXJldD5tZXRob2QoKSB7CisgICAgICAgIGFub3RoZXJNZXRob2QoZmllbGQpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWFrZU1ldGhvZFN0YXRpYy9iZWZvcmUxNy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ha2VNZXRob2RTdGF0aWMvYmVmb3JlMTcuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYTVlMGFhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ha2VNZXRob2RTdGF0aWMvYmVmb3JlMTcuamF2YQpAQCAtMCwwICsxLDkgQEAKK3B1YmxpYyBjbGFzcyBUZXN0IHsKKyAgICBTdHJpbmcgZmllbGQ7CisKKyAgICAvKioKKyAgICAgKi8KKyAgICBTdHJpbmcgPGNhcmV0Pm1ldGhvZCgpIHsKKyAgICAgICAgcmV0dXJuIGZpZWxkOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWFrZU1ldGhvZFN0YXRpYy9iZWZvcmUxOC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ha2VNZXRob2RTdGF0aWMvYmVmb3JlMTguamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZGU0MGZkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ha2VNZXRob2RTdGF0aWMvYmVmb3JlMTguamF2YQpAQCAtMCwwICsxLDUgQEAKK2NsYXNzIEM8VD4geworICAgIHZvaWQgPGNhcmV0Pm1ldGhvZCgpICB7CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbih0aGlzKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ha2VNZXRob2RTdGF0aWMvYmVmb3JlMTkuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tYWtlTWV0aG9kU3RhdGljL2JlZm9yZTE5LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTExMGUxYQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tYWtlTWV0aG9kU3RhdGljL2JlZm9yZTE5LmphdmEKQEAgLTAsMCArMSw3IEBACitjbGFzcyBDIHsKKyAgICBpbnQgbXlGaWVsZDsKKworICAgIHZvaWQgPGNhcmV0Pm1ldGhvZChpbnQgaSkgeworICAgICAgICBteUZpZWxkID0gaTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ha2VNZXRob2RTdGF0aWMvYmVmb3JlMi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ha2VNZXRob2RTdGF0aWMvYmVmb3JlMi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI0MzJmMmQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWFrZU1ldGhvZFN0YXRpYy9iZWZvcmUyLmphdmEKQEAgLTAsMCArMSw2IEBACitwdWJsaWMgY2xhc3MgRm9vIHsKKyAgICBzdGF0aWMgaW50IGk7CisgICAgcHVibGljIGludCA8Y2FyZXQ+bWV0aG9kKCkgeworCXJldHVybiBpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWFrZU1ldGhvZFN0YXRpYy9iZWZvcmUyMC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ha2VNZXRob2RTdGF0aWMvYmVmb3JlMjAuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZTMxYzgyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ha2VNZXRob2RTdGF0aWMvYmVmb3JlMjAuamF2YQpAQCAtMCwwICsxLDIwIEBACitpbXBvcnQgamF2YXguc3dpbmcuKjsKK2ltcG9ydCBqYXZhLmF3dC5ldmVudC5XaW5kb3dBZGFwdGVyOworaW1wb3J0IGphdmEuYXd0LmV2ZW50LldpbmRvd0V2ZW50OworCitmaW5hbCBjbGFzcyBCdWcKKyAgIGV4dGVuZHMgSkZyYW1lIHsKKyAgICBwdWJsaWMgQnVnKCkgeworICAgICAgICBmb28oKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCA8Y2FyZXQ+Zm9vKCkgeworICAgICAgICBhZGRXaW5kb3dMaXN0ZW5lcihuZXcgTXlXaW5kb3dMaXN0ZW5lcigpKTsKKyAgICB9CisKKyAgICBwcml2YXRlIGNsYXNzIE15V2luZG93TGlzdGVuZXIKKyAgICAgICBleHRlbmRzIFdpbmRvd0FkYXB0ZXIgeworICAgICAgICBwdWJsaWMgdm9pZCB3aW5kb3dBY3RpdmF0ZWQoV2luZG93RXZlbnQgZSkgeworICAgICAgICB9CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tYWtlTWV0aG9kU3RhdGljL2JlZm9yZTIxLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWFrZU1ldGhvZFN0YXRpYy9iZWZvcmUyMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMyN2Y3NjMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWFrZU1ldGhvZFN0YXRpYy9iZWZvcmUyMS5qYXZhCkBAIC0wLDAgKzEsNSBAQAorY2xhc3MgQmFyMSB7CisgICAgcHVibGljIHZvaWQgPGNhcmV0PkZvbygpIHsKKyAgICAgICAgdGhpcy5Gb28oKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ha2VNZXRob2RTdGF0aWMvYmVmb3JlMjIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tYWtlTWV0aG9kU3RhdGljL2JlZm9yZTIyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODg0YmVjYQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tYWtlTWV0aG9kU3RhdGljL2JlZm9yZTIyLmphdmEKQEAgLTAsMCArMSwxNSBAQAorY2xhc3MgVGVzdCB7CisKKyAgICBwdWJsaWMgdm9pZCA8Y2FyZXQ+Zm9vKCkgeworICAgICAgICBiYXIoKTsKKyAgICB9CisKKyAgICB2b2lkIGJhcigpIHsKKyAgICB9CisKKyAgICBjbGFzcyBBIHsKKyAgICAgICAgdm9pZCBibGFoKCkgeworICAgICAgICAgICAgZm9vKCk7CisgICAgICAgIH0KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ha2VNZXRob2RTdGF0aWMvYmVmb3JlMjMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tYWtlTWV0aG9kU3RhdGljL2JlZm9yZTIzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzA2YmYzYQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tYWtlTWV0aG9kU3RhdGljL2JlZm9yZTIzLmphdmEKQEAgLTAsMCArMSw2IEBACitjbGFzcyBNZXRob2RPd25lcjY8VD4geworICAgIHB1YmxpYyBUIDxjYXJldD5mb28oVCB0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIHQ7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tYWtlTWV0aG9kU3RhdGljL2JlZm9yZTMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tYWtlTWV0aG9kU3RhdGljL2JlZm9yZTMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MjFhOGU1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ha2VNZXRob2RTdGF0aWMvYmVmb3JlMy5qYXZhCkBAIC0wLDAgKzEsNiBAQAorcHVibGljIGNsYXNzIEZvbyB7CisgICAgaW50IGk7CisgICAgcHVibGljIGludCA8Y2FyZXQ+bWV0aG9kKCkgeworICAgICAgICByZXR1cm4gaTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ha2VNZXRob2RTdGF0aWMvYmVmb3JlNC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ha2VNZXRob2RTdGF0aWMvYmVmb3JlNC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY4MTUzZjEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWFrZU1ldGhvZFN0YXRpYy9iZWZvcmU0LmphdmEKQEAgLTAsMCArMSw2IEBACitwdWJsaWMgY2xhc3MgRm9vIHsKKyAgICBwdWJsaWMgaW50IGk7CisgICAgcHVibGljIGludCA8Y2FyZXQ+bWV0aG9kKCkgeworICAgICAgICByZXR1cm4gdGhpcy5pOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWFrZU1ldGhvZFN0YXRpYy9iZWZvcmU1LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWFrZU1ldGhvZFN0YXRpYy9iZWZvcmU1LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWE3ZWQ0NQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tYWtlTWV0aG9kU3RhdGljL2JlZm9yZTUuamF2YQpAQCAtMCwwICsxLDYgQEAKK3B1YmxpYyBjbGFzcyBGb28geworICAgIHB1YmxpYyBpbnQgaTsKKyAgICBwdWJsaWMgaW50IDxjYXJldD5tZXRob2QoKSB7CisgICAgICAgIHJldHVybiBzdXBlci5pOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWFrZU1ldGhvZFN0YXRpYy9iZWZvcmU2LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWFrZU1ldGhvZFN0YXRpYy9iZWZvcmU2LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjQwZmEzMQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tYWtlTWV0aG9kU3RhdGljL2JlZm9yZTYuamF2YQpAQCAtMCwwICsxLDYgQEAKK3B1YmxpYyBjbGFzcyBGb28gZXh0ZW5kcyBCYXIgeworICAgIHB1YmxpYyBpbnQgaTsKKyAgICBwdWJsaWMgaW50IDxjYXJldD5tZXRob2QoKSB7CisgICAgICAgIHJldHVybiBzdXBlci5pOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWFrZU1ldGhvZFN0YXRpYy9iZWZvcmU3LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWFrZU1ldGhvZFN0YXRpYy9iZWZvcmU3LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzMzYzBjYWMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWFrZU1ldGhvZFN0YXRpYy9iZWZvcmU3LmphdmEKQEAgLTAsMCArMSwxMCBAQAorcHVibGljIGNsYXNzIEZvbyB7CisgICAgICAgICAgICAKKyAgICBwdWJsaWMgaW50IGYoaW50IGkpIHsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgcHVibGljIGludCA8Y2FyZXQ+bWV0aG9kKGludCBpKSB7CisgICAgICAgIHJldHVybiBmKGkpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWFrZU1ldGhvZFN0YXRpYy9iZWZvcmU4LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWFrZU1ldGhvZFN0YXRpYy9iZWZvcmU4LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWE5YmY0NwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tYWtlTWV0aG9kU3RhdGljL2JlZm9yZTguamF2YQpAQCAtMCwwICsxLDEyIEBACitwdWJsaWMgY2xhc3MgRm9vIHsKKyAgICBwdWJsaWMgaW50IG15RGF0YTsKKyAgICBpbnQgPGNhcmV0Pm1ldGhvZChpbnQgaSkgeworICAgICAgICBuZXcgUnVubmFibGUgKCkgeworICAgICAgICAgICAgdm9pZCBmKCkge307CisgICAgICAgICAgICBwdWJsaWMgdm9pZCBydW4oKSB7CisgICAgICAgICAgICAgICAgdGhpcy5mKG15RGF0YSk7ICAgIAorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHJldHVybiB0aGlzLm15RGF0YSArIG15RGF0YTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ha2VNZXRob2RTdGF0aWMvYmVmb3JlOS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ha2VNZXRob2RTdGF0aWMvYmVmb3JlOS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZkNGExZTUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWFrZU1ldGhvZFN0YXRpYy9iZWZvcmU5LmphdmEKQEAgLTAsMCArMSwxMiBAQAorcHVibGljIGNsYXNzIEZvbyB7CisgICAgcHVibGljIGludCBteURhdGE7CisgICAgaW50IDxjYXJldD5tZXRob2QoaW50IGkpIHsKKyAgICAgICAgcmV0dXJuIG15RGF0YSArIGk7CisgICAgfQorfQorCitwdWJsaWMgY2xhc3MgQmFyIGV4dGVuZHMgRm9vIHsKKyAgICBpbnQgYShpbnQgYikgeworICAgICAgICByZXR1cm4gbWV0aG9kKGIqMik7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tYWtlTWV0aG9kU3RhdGljL2JlZm9yZUlubmVyU3RhdGljQ2xhc3NVc2VkLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWFrZU1ldGhvZFN0YXRpYy9iZWZvcmVJbm5lclN0YXRpY0NsYXNzVXNlZC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgzNmVjMzYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWFrZU1ldGhvZFN0YXRpYy9iZWZvcmVJbm5lclN0YXRpY0NsYXNzVXNlZC5qYXZhCkBAIC0wLDAgKzEsNyBAQAorY2xhc3MgQyB7CisgIHByaXZhdGUgdm9pZCBmPGNhcmV0Pm9vKCkgeworICAgIEJhciBiYXIgPSBuZXcgQmFyKCk7CisgIH0KKyAgCisgIHN0YXRpYyBjbGFzcyBCYXIge30KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWFrZU1ldGhvZFN0YXRpYy9iZWZvcmVNZXRob2RSZWZlcmVuY2UuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tYWtlTWV0aG9kU3RhdGljL2JlZm9yZU1ldGhvZFJlZmVyZW5jZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE1ZjMxNzIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWFrZU1ldGhvZFN0YXRpYy9iZWZvcmVNZXRob2RSZWZlcmVuY2UuamF2YQpAQCAtMCwwICsxLDkgQEAKK2NsYXNzIFRlc3Q0IHsKKyAgICB2b2lkIHRlc3QoKSB7CisgICAgICAgIEZvbzI8VGVzdDQ+IGYgPSBUZXN0NDo6eXl5OworICAgIH0KKyAgICB2b2lkIHl5PGNhcmV0PnkoKSB7fQorfQoraW50ZXJmYWNlIEZvbzI8VD4geworICAgIHZvaWQgYmFyKFQgaik7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ha2VNZXRob2RTdGF0aWMvYmVmb3JlUHJlc2VydmVQYXJhbWV0ZXJzQWxpZ25tZW50LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWFrZU1ldGhvZFN0YXRpYy9iZWZvcmVQcmVzZXJ2ZVBhcmFtZXRlcnNBbGlnbm1lbnQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YTRlNGZiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ha2VNZXRob2RTdGF0aWMvYmVmb3JlUHJlc2VydmVQYXJhbWV0ZXJzQWxpZ25tZW50LmphdmEKQEAgLTAsMCArMSw1IEBACitwdWJsaWMgY2xhc3MgVGVzdCB7CisgICAgcHVibGljIHZvaWQgPGNhcmV0PnRlc3QxMjMoaW50IGksCisgICAgICAgICAgICAgICAgICAgICAgICBpbnQgaikgeworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWFrZU1ldGhvZFN0YXRpYy9iZWZvcmVQcmVzZXJ2ZVR5cGVQYXJhbXMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tYWtlTWV0aG9kU3RhdGljL2JlZm9yZVByZXNlcnZlVHlwZVBhcmFtcy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE4NGM3NmUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWFrZU1ldGhvZFN0YXRpYy9iZWZvcmVQcmVzZXJ2ZVR5cGVQYXJhbXMuamF2YQpAQCAtMCwwICsxLDUgQEAKK2NsYXNzIEMgeworICBwcml2YXRlIDxUPiBMaXN0PFQ+IGdlPGNhcmV0PnRUb3BMZXZlbEl0ZW1zKCkgeworICAgIHJldHVybiBudWxsOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ldGhvZER1cGxpY2F0ZXMvQWRkU3RhdGljVGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ldGhvZER1cGxpY2F0ZXMvQWRkU3RhdGljVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNjOTI5NDAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWV0aG9kRHVwbGljYXRlcy9BZGRTdGF0aWNUZXN0LmphdmEKQEAgLTAsMCArMSw5IEBACitjbGFzcyBBZGRTdGF0aWNUZXN0IHsKKyAgc3RhdGljIG1haW4oKXsKKyAgIFN5c3RlbS5vdXQucHJpbnRsbigiIik7CisgIH0KKworICB2b2lkIDxjYXJldD5mb28oKXsKKyAgIFN5c3RlbS5vdXQucHJpbnRsbigiIik7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWV0aG9kRHVwbGljYXRlcy9BZGRTdGF0aWNUZXN0LmphdmEuYWZ0ZXIgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWV0aG9kRHVwbGljYXRlcy9BZGRTdGF0aWNUZXN0LmphdmEuYWZ0ZXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGQxZDZkMAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tZXRob2REdXBsaWNhdGVzL0FkZFN0YXRpY1Rlc3QuamF2YS5hZnRlcgpAQCAtMCwwICsxLDkgQEAKK2NsYXNzIEFkZFN0YXRpY1Rlc3QgeworICBzdGF0aWMgbWFpbigpeworICAgICAgZm9vKCk7CisgIH0KKworICBzdGF0aWMgdm9pZCBmb28oKXsKKyAgIFN5c3RlbS5vdXQucHJpbnRsbigiIik7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWV0aG9kRHVwbGljYXRlcy9Bbm9ueW1vdXNUZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWV0aG9kRHVwbGljYXRlcy9Bbm9ueW1vdXNUZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDU1NDRiZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tZXRob2REdXBsaWNhdGVzL0Fub255bW91c1Rlc3QuamF2YQpAQCAtMCwwICsxLDIxIEBACitjbGFzcyBBbm9ueW1vdXNUZXN0IHsKKyAgaW50ZXJmYWNlIFRoaW5nIHsKKyAgICBib29sZWFuIHRoaW5nKCk7CisgIH0KKworICB2b2lkIGR1cGVIb2xkZXIoKSB7CisgICAgVGhpbmcgdGhpbmcgPSBuZXcgVGhpbmcoKSB7CisgICAgICBwdWJsaWMgYm9vbGVhbiB0aGluZygpIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgfQorICAgIH07CisgIH0KKworICBUaGluZyA8Y2FyZXQ+ZHVwbGljYXRvcihmaW5hbCBib29sZWFuIHRoaW5nUmV0dXJuKSB7CisgICAgcmV0dXJuIG5ldyBUaGluZygpIHsKKyAgICAgIHB1YmxpYyBib29sZWFuIHRoaW5nKCkgeworICAgICAgICByZXR1cm4gdGhpbmdSZXR1cm47CisgICAgICB9CisgICAgfTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tZXRob2REdXBsaWNhdGVzL0Fub255bW91c1Rlc3QuamF2YS5hZnRlciBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tZXRob2REdXBsaWNhdGVzL0Fub255bW91c1Rlc3QuamF2YS5hZnRlcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MDEwZmE0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ldGhvZER1cGxpY2F0ZXMvQW5vbnltb3VzVGVzdC5qYXZhLmFmdGVyCkBAIC0wLDAgKzEsMTcgQEAKK2NsYXNzIEFub255bW91c1Rlc3QgeworICBpbnRlcmZhY2UgVGhpbmcgeworICAgIGJvb2xlYW4gdGhpbmcoKTsKKyAgfQorCisgIHZvaWQgZHVwZUhvbGRlcigpIHsKKyAgICBUaGluZyB0aGluZyA9IGR1cGxpY2F0b3IoZmFsc2UpOworICB9CisKKyAgVGhpbmcgZHVwbGljYXRvcihmaW5hbCBib29sZWFuIHRoaW5nUmV0dXJuKSB7CisgICAgcmV0dXJuIG5ldyBUaGluZygpIHsKKyAgICAgIHB1YmxpYyBib29sZWFuIHRoaW5nKCkgeworICAgICAgICByZXR1cm4gdGhpbmdSZXR1cm47CisgICAgICB9CisgICAgfTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tZXRob2REdXBsaWNhdGVzL0Fub255bW91c1Rlc3QxLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWV0aG9kRHVwbGljYXRlcy9Bbm9ueW1vdXNUZXN0MS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc1ZDYyOTkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWV0aG9kRHVwbGljYXRlcy9Bbm9ueW1vdXNUZXN0MS5qYXZhCkBAIC0wLDAgKzEsMjEgQEAKK2NsYXNzIEFub255bW91c1Rlc3QxIHsKKyAgaW50ZXJmYWNlIFRoaW5nIHsKKyAgICBib29sZWFuIHRoaW5nKCk7CisgIH0KKworICB2b2lkIGR1cGVIb2xkZXIoKSB7CisgICAgaWYgKG5ldyBUaGluZygpIHsKKyAgICAgIHB1YmxpYyBib29sZWFuIHRoaW5nKCkgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICB9CisgICAgfS50aGluZygpKTsKKyAgfQorCisgIHZvaWQgPGNhcmV0PmR1cGxpY2F0b3IoZmluYWwgYm9vbGVhbiB0aGluZ1JldHVybikgeworICAgIGlmIChuZXcgVGhpbmcoKSB7CisgICAgICBwdWJsaWMgYm9vbGVhbiB0aGluZygpIHsKKyAgICAgICAgcmV0dXJuIHRoaW5nUmV0dXJuOworICAgICAgfQorICAgIH0udGhpbmcoKSk7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWV0aG9kRHVwbGljYXRlcy9Bbm9ueW1vdXNUZXN0MS5qYXZhLmFmdGVyIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ldGhvZER1cGxpY2F0ZXMvQW5vbnltb3VzVGVzdDEuamF2YS5hZnRlcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YTliOTQzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ldGhvZER1cGxpY2F0ZXMvQW5vbnltb3VzVGVzdDEuamF2YS5hZnRlcgpAQCAtMCwwICsxLDE3IEBACitjbGFzcyBBbm9ueW1vdXNUZXN0MSB7CisgIGludGVyZmFjZSBUaGluZyB7CisgICAgYm9vbGVhbiB0aGluZygpOworICB9CisKKyAgdm9pZCBkdXBlSG9sZGVyKCkgeworICAgICAgZHVwbGljYXRvcihmYWxzZSk7CisgIH0KKworICB2b2lkIGR1cGxpY2F0b3IoZmluYWwgYm9vbGVhbiB0aGluZ1JldHVybikgeworICAgIGlmIChuZXcgVGhpbmcoKSB7CisgICAgICBwdWJsaWMgYm9vbGVhbiB0aGluZygpIHsKKyAgICAgICAgcmV0dXJuIHRoaW5nUmV0dXJuOworICAgICAgfQorICAgIH0udGhpbmcoKSk7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWV0aG9kRHVwbGljYXRlcy9Bbm9ueW1vdXNUZXN0Mi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ldGhvZER1cGxpY2F0ZXMvQW5vbnltb3VzVGVzdDIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NjhjMTYzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ldGhvZER1cGxpY2F0ZXMvQW5vbnltb3VzVGVzdDIuamF2YQpAQCAtMCwwICsxLDIwIEBACitjbGFzcyBBIHsKKworICAgIGNsYXNzIEkgeworICAgIH0KKworICAgIGNsYXNzIEkxIHsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBmb28oKSB7CisgICAgICAgIE9iamVjdCBpbm5lck9uZSA9IG5ldyBJMSgpIHsKKyAgICAgICAgfTsKKyAgICAgICAgaW5uZXJPbmUudG9TdHJpbmcoKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCA8Y2FyZXQ+YmFyKCkgeworICAgICAgICBPYmplY3QgaW5uZXJUd28gPSBuZXcgSSgpIHsKKyAgICAgICAgfTsKKyAgICAgICAgaW5uZXJUd28udG9TdHJpbmcoKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ldGhvZER1cGxpY2F0ZXMvQ2hhbmdpbmdSZXR1cm5UeXBlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWV0aG9kRHVwbGljYXRlcy9DaGFuZ2luZ1JldHVyblR5cGUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYmJjYjhjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ldGhvZER1cGxpY2F0ZXMvQ2hhbmdpbmdSZXR1cm5UeXBlLmphdmEKQEAgLTAsMCArMSwxOSBAQAorcHVibGljIGNsYXNzIEEgeworICAgIHByaXZhdGUgQiBteUZpZWxkOworCisgICAgcHVibGljIHZvaWQgbWV0aG9kKCkgeworICAgICAgICBTdHJpbmcgYSA9IG15RmllbGQuYmJiLnh4eCgpOworICAgIH0KKworICAgIHB1YmxpYyBCIGdldDxjYXJldD5GaWVsZCgpIHsKKyAgICAgICAgcmV0dXJuIG15RmllbGQ7CisgICAgfQorCisgICAgcHJpdmF0ZSBzdGF0aWMgY2xhc3MgQiB7CisgICAgICAgIHByaXZhdGUgQyBiYmI7CisgICAgfQorCisgICAgcHJpdmF0ZSBzdGF0aWMgY2xhc3MgQyB7CisgICAgICAgIFN0cmluZyB4eHgoKSB7cmV0dXJuIG51bGw7fQorICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tZXRob2REdXBsaWNhdGVzL0NoYW5naW5nUmV0dXJuVHlwZS5qYXZhLmFmdGVyIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ldGhvZER1cGxpY2F0ZXMvQ2hhbmdpbmdSZXR1cm5UeXBlLmphdmEuYWZ0ZXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWZmYTQ0MQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tZXRob2REdXBsaWNhdGVzL0NoYW5naW5nUmV0dXJuVHlwZS5qYXZhLmFmdGVyCkBAIC0wLDAgKzEsMTkgQEAKK3B1YmxpYyBjbGFzcyBBIHsKKyAgICBwcml2YXRlIEIgbXlGaWVsZDsKKworICAgIHB1YmxpYyB2b2lkIG1ldGhvZCgpIHsKKyAgICAgICAgU3RyaW5nIGEgPSBnZXRGaWVsZCgpLmJiYi54eHgoKTsKKyAgICB9CisKKyAgICBwdWJsaWMgQiBnZXRGaWVsZCgpIHsKKyAgICAgICAgcmV0dXJuIG15RmllbGQ7CisgICAgfQorCisgICAgcHJpdmF0ZSBzdGF0aWMgY2xhc3MgQiB7CisgICAgICAgIHByaXZhdGUgQyBiYmI7CisgICAgfQorCisgICAgcHJpdmF0ZSBzdGF0aWMgY2xhc3MgQyB7CisgICAgICAgIFN0cmluZyB4eHgoKSB7cmV0dXJuIG51bGw7fQorICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tZXRob2REdXBsaWNhdGVzL0RlY2xhcmF0aW9uVXNhZ2UuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tZXRob2REdXBsaWNhdGVzL0RlY2xhcmF0aW9uVXNhZ2UuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNzJhMjg3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ldGhvZER1cGxpY2F0ZXMvRGVjbGFyYXRpb25Vc2FnZS5qYXZhCkBAIC0wLDAgKzEsMTEgQEAKK3B1YmxpYyBjbGFzcyBEZWNsYXJhdGlvblVzYWdlIHsKKwlwcml2YXRlIGludCBteUZpZWxkOworCXB1YmxpYyB2b2lkIG1ldDxjYXJldD5ob2QoaW50IHApIHsKKwkJaW50IHYgPSAwOworCQlteUZpZWxkICs9IHA7CisJfQorCXB1YmxpYyB2b2lkIGNvbnRleHQoKSB7CisJCWludCB2ID0gMDsKKwkJbXlGaWVsZCArPSB2OworCX0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWV0aG9kRHVwbGljYXRlcy9HZW5tZXRoRXh0ZW5kcy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ldGhvZER1cGxpY2F0ZXMvR2VubWV0aEV4dGVuZHMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMmFhMzVjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ldGhvZER1cGxpY2F0ZXMvR2VubWV0aEV4dGVuZHMuamF2YQpAQCAtMCwwICsxLDIwIEBACitpbXBvcnQgamF2YS51dGlsLkFic3RyYWN0TGlzdDsKK2ltcG9ydCBqYXZhLnV0aWwuQXJyYXlMaXN0OworaW1wb3J0IGphdmEudXRpbC5MaXN0OworCitwdWJsaWMgY2xhc3MgR2VubWV0aCB7CisJcHVibGljIHZvaWQgY29udGV4dCgpIHsKKwkJSW50ZWdlciB2MSA9IDA7CisJCWludCB2MWEgPSB2MS5oYXNoQ29kZSgpOworCQlBYnN0cmFjdExpc3Q8U3RyaW5nPiB2MiA9IG5ldyBBcnJheUxpc3Q8U3RyaW5nPigwKTsKKwkJaW50IHYyYSA9IHYyLmhhc2hDb2RlKCk7CisJCUFic3RyYWN0TGlzdDxEb3VibGU+IHYzID0gbmV3IEFycmF5TGlzdDxEb3VibGU+KDApOworCQlpbnQgdjNhID0gdjMuaGFzaENvZGUoKTsKKwkJQWJzdHJhY3RMaXN0PEludGVnZXI+IHY0ID0gbmV3IEFycmF5TGlzdDxJbnRlZ2VyPigwKTsKKwkJaW50IHY0YSA9IHY0Lmhhc2hDb2RlKCk7CisJfQorCisJcHVibGljIDxUIGV4dGVuZHMgTGlzdD4gaW50IDxjYXJldD5tZXRob2QoVCB0KSB7CisJCXJldHVybiB0Lmhhc2hDb2RlKCk7CisJfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ldGhvZER1cGxpY2F0ZXMvR2VubWV0aEV4dGVuZHMuamF2YS5hZnRlciBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tZXRob2REdXBsaWNhdGVzL0dlbm1ldGhFeHRlbmRzLmphdmEuYWZ0ZXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjVlNjY0ZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tZXRob2REdXBsaWNhdGVzL0dlbm1ldGhFeHRlbmRzLmphdmEuYWZ0ZXIKQEAgLTAsMCArMSwyMCBAQAoraW1wb3J0IGphdmEudXRpbC5BYnN0cmFjdExpc3Q7CitpbXBvcnQgamF2YS51dGlsLkFycmF5TGlzdDsKK2ltcG9ydCBqYXZhLnV0aWwuTGlzdDsKKworcHVibGljIGNsYXNzIEdlbm1ldGggeworCXB1YmxpYyB2b2lkIGNvbnRleHQoKSB7CisJCUludGVnZXIgdjEgPSAwOworCQlpbnQgdjFhID0gdjEuaGFzaENvZGUoKTsKKwkJQWJzdHJhY3RMaXN0PFN0cmluZz4gdjIgPSBuZXcgQXJyYXlMaXN0PFN0cmluZz4oMCk7CisJCWludCB2MmEgPSBtZXRob2QodjIpOworCQlBYnN0cmFjdExpc3Q8RG91YmxlPiB2MyA9IG5ldyBBcnJheUxpc3Q8RG91YmxlPigwKTsKKwkJaW50IHYzYSA9IG1ldGhvZCh2Myk7CisJCUFic3RyYWN0TGlzdDxJbnRlZ2VyPiB2NCA9IG5ldyBBcnJheUxpc3Q8SW50ZWdlcj4oMCk7CisJCWludCB2NGEgPSBtZXRob2QodjQpOworCX0KKworCXB1YmxpYyA8VCBleHRlbmRzIExpc3Q+IGludCBtZXRob2QoVCB0KSB7CisJCXJldHVybiB0Lmhhc2hDb2RlKCk7CisJfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ldGhvZER1cGxpY2F0ZXMvR2VubWV0aEV4dGVuZHNHZW5lcmljRXhhY3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tZXRob2REdXBsaWNhdGVzL0dlbm1ldGhFeHRlbmRzR2VuZXJpY0V4YWN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWMyNDc0MwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tZXRob2REdXBsaWNhdGVzL0dlbm1ldGhFeHRlbmRzR2VuZXJpY0V4YWN0LmphdmEKQEAgLTAsMCArMSwyMCBAQAoraW1wb3J0IGphdmEudXRpbC5BYnN0cmFjdExpc3Q7CitpbXBvcnQgamF2YS51dGlsLkFycmF5TGlzdDsKK2ltcG9ydCBqYXZhLnV0aWwuTGlzdDsKKworcHVibGljIGNsYXNzIEdlbm1ldGggeworCXB1YmxpYyB2b2lkIGNvbnRleHQoKSB7CisJCUludGVnZXIgdjEgPSAwOworCQlpbnQgdjFhID0gdjEuaGFzaENvZGUoKTsKKwkJQWJzdHJhY3RMaXN0PFN0cmluZz4gdjIgPSBuZXcgQXJyYXlMaXN0PFN0cmluZz4oMCk7CisJCWludCB2MmEgPSB2Mi5oYXNoQ29kZSgpOworCQlBYnN0cmFjdExpc3Q8RG91YmxlPiB2MyA9IG5ldyBBcnJheUxpc3Q8RG91YmxlPigwKTsKKwkJaW50IHYzYSA9IHYzLmhhc2hDb2RlKCk7CisJCUFic3RyYWN0TGlzdDxJbnRlZ2VyPiB2NCA9IG5ldyBBcnJheUxpc3Q8SW50ZWdlcj4oMCk7CisJCWludCB2NGEgPSB2NC5oYXNoQ29kZSgpOworCX0KKworCXB1YmxpYyA8VCBleHRlbmRzIExpc3Q8SW50ZWdlcj4+IGludCA8Y2FyZXQ+bWV0aG9kKFQgdCkgeworCQlyZXR1cm4gdC5oYXNoQ29kZSgpOworCX0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tZXRob2REdXBsaWNhdGVzL0dlbm1ldGhFeHRlbmRzR2VuZXJpY0V4YWN0LmphdmEuYWZ0ZXIgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWV0aG9kRHVwbGljYXRlcy9HZW5tZXRoRXh0ZW5kc0dlbmVyaWNFeGFjdC5qYXZhLmFmdGVyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgwNmFhNmEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWV0aG9kRHVwbGljYXRlcy9HZW5tZXRoRXh0ZW5kc0dlbmVyaWNFeGFjdC5qYXZhLmFmdGVyCkBAIC0wLDAgKzEsMjAgQEAKK2ltcG9ydCBqYXZhLnV0aWwuQWJzdHJhY3RMaXN0OworaW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7CitpbXBvcnQgamF2YS51dGlsLkxpc3Q7CisKK3B1YmxpYyBjbGFzcyBHZW5tZXRoIHsKKwlwdWJsaWMgdm9pZCBjb250ZXh0KCkgeworCQlJbnRlZ2VyIHYxID0gMDsKKwkJaW50IHYxYSA9IHYxLmhhc2hDb2RlKCk7CisJCUFic3RyYWN0TGlzdDxTdHJpbmc+IHYyID0gbmV3IEFycmF5TGlzdDxTdHJpbmc+KDApOworCQlpbnQgdjJhID0gdjIuaGFzaENvZGUoKTsKKwkJQWJzdHJhY3RMaXN0PERvdWJsZT4gdjMgPSBuZXcgQXJyYXlMaXN0PERvdWJsZT4oMCk7CisJCWludCB2M2EgPSB2My5oYXNoQ29kZSgpOworCQlBYnN0cmFjdExpc3Q8SW50ZWdlcj4gdjQgPSBuZXcgQXJyYXlMaXN0PEludGVnZXI+KDApOworCQlpbnQgdjRhID0gbWV0aG9kKHY0KTsKKwl9CisKKwlwdWJsaWMgPFQgZXh0ZW5kcyBMaXN0PEludGVnZXI+PiBpbnQgbWV0aG9kKFQgdCkgeworCQlyZXR1cm4gdC5oYXNoQ29kZSgpOworCX0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tZXRob2REdXBsaWNhdGVzL0dlbm1ldGhFeHRlbmRzR2VuZXJpY1dpbGRjYXJkLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWV0aG9kRHVwbGljYXRlcy9HZW5tZXRoRXh0ZW5kc0dlbmVyaWNXaWxkY2FyZC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk4MjY5YjEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWV0aG9kRHVwbGljYXRlcy9HZW5tZXRoRXh0ZW5kc0dlbmVyaWNXaWxkY2FyZC5qYXZhCkBAIC0wLDAgKzEsMjAgQEAKK2ltcG9ydCBqYXZhLnV0aWwuQWJzdHJhY3RMaXN0OworaW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7CitpbXBvcnQgamF2YS51dGlsLkxpc3Q7CisKK3B1YmxpYyBjbGFzcyBHZW5tZXRoIHsKKwlwdWJsaWMgdm9pZCBjb250ZXh0KCkgeworCQlJbnRlZ2VyIHYxID0gMDsKKwkJaW50IHYxYSA9IHYxLmhhc2hDb2RlKCk7CisJCUFic3RyYWN0TGlzdDxTdHJpbmc+IHYyID0gbmV3IEFycmF5TGlzdDxTdHJpbmc+KDApOworCQlpbnQgdjJhID0gdjIuaGFzaENvZGUoKTsKKwkJQWJzdHJhY3RMaXN0PERvdWJsZT4gdjMgPSBuZXcgQXJyYXlMaXN0PERvdWJsZT4oMCk7CisJCWludCB2M2EgPSB2My5oYXNoQ29kZSgpOworCQlBYnN0cmFjdExpc3Q8SW50ZWdlcj4gdjQgPSBuZXcgQXJyYXlMaXN0PEludGVnZXI+KDApOworCQlpbnQgdjRhID0gdjQuaGFzaENvZGUoKTsKKwl9CisKKwlwdWJsaWMgPFQgZXh0ZW5kcyBMaXN0PD8gZXh0ZW5kcyBOdW1iZXI+PiBpbnQgPGNhcmV0Pm1ldGhvZChUIHQpIHsKKwkJcmV0dXJuIHQuaGFzaENvZGUoKTsKKwl9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWV0aG9kRHVwbGljYXRlcy9HZW5tZXRoRXh0ZW5kc0dlbmVyaWNXaWxkY2FyZC5qYXZhLmFmdGVyIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ldGhvZER1cGxpY2F0ZXMvR2VubWV0aEV4dGVuZHNHZW5lcmljV2lsZGNhcmQuamF2YS5hZnRlcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMDZiODYyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ldGhvZER1cGxpY2F0ZXMvR2VubWV0aEV4dGVuZHNHZW5lcmljV2lsZGNhcmQuamF2YS5hZnRlcgpAQCAtMCwwICsxLDIwIEBACitpbXBvcnQgamF2YS51dGlsLkFic3RyYWN0TGlzdDsKK2ltcG9ydCBqYXZhLnV0aWwuQXJyYXlMaXN0OworaW1wb3J0IGphdmEudXRpbC5MaXN0OworCitwdWJsaWMgY2xhc3MgR2VubWV0aCB7CisJcHVibGljIHZvaWQgY29udGV4dCgpIHsKKwkJSW50ZWdlciB2MSA9IDA7CisJCWludCB2MWEgPSB2MS5oYXNoQ29kZSgpOworCQlBYnN0cmFjdExpc3Q8U3RyaW5nPiB2MiA9IG5ldyBBcnJheUxpc3Q8U3RyaW5nPigwKTsKKwkJaW50IHYyYSA9IHYyLmhhc2hDb2RlKCk7CisJCUFic3RyYWN0TGlzdDxEb3VibGU+IHYzID0gbmV3IEFycmF5TGlzdDxEb3VibGU+KDApOworCQlpbnQgdjNhID0gbWV0aG9kKHYzKTsKKwkJQWJzdHJhY3RMaXN0PEludGVnZXI+IHY0ID0gbmV3IEFycmF5TGlzdDxJbnRlZ2VyPigwKTsKKwkJaW50IHY0YSA9IG1ldGhvZCh2NCk7CisJfQorCisJcHVibGljIDxUIGV4dGVuZHMgTGlzdDw/IGV4dGVuZHMgTnVtYmVyPj4gaW50IG1ldGhvZChUIHQpIHsKKwkJcmV0dXJuIHQuaGFzaENvZGUoKTsKKwl9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWV0aG9kRHVwbGljYXRlcy9HZW5tZXRoR2VuZXJhbC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ldGhvZER1cGxpY2F0ZXMvR2VubWV0aEdlbmVyYWwuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNmZmNGUxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ldGhvZER1cGxpY2F0ZXMvR2VubWV0aEdlbmVyYWwuamF2YQpAQCAtMCwwICsxLDIwIEBACitpbXBvcnQgamF2YS51dGlsLkFic3RyYWN0TGlzdDsKK2ltcG9ydCBqYXZhLnV0aWwuQXJyYXlMaXN0OworaW1wb3J0IGphdmEudXRpbC5MaXN0OworCitwdWJsaWMgY2xhc3MgR2VubWV0aCB7CisJcHVibGljIHZvaWQgY29udGV4dCgpIHsKKwkJSW50ZWdlciB2MSA9IDA7CisJCWludCB2MWEgPSB2MS5oYXNoQ29kZSgpOworCQlBYnN0cmFjdExpc3Q8U3RyaW5nPiB2MiA9IG5ldyBBcnJheUxpc3Q8U3RyaW5nPigwKTsKKwkJaW50IHYyYSA9IHYyLmhhc2hDb2RlKCk7CisJCUFic3RyYWN0TGlzdDxEb3VibGU+IHYzID0gbmV3IEFycmF5TGlzdDxEb3VibGU+KDApOworCQlpbnQgdjNhID0gdjMuaGFzaENvZGUoKTsKKwkJQWJzdHJhY3RMaXN0PEludGVnZXI+IHY0ID0gbmV3IEFycmF5TGlzdDxJbnRlZ2VyPigwKTsKKwkJaW50IHY0YSA9IHY0Lmhhc2hDb2RlKCk7CisJfQorCisJcHVibGljIDxUPiBpbnQgPGNhcmV0Pm1ldGhvZChUIHQpIHsKKwkJcmV0dXJuIHQuaGFzaENvZGUoKTsKKwl9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWV0aG9kRHVwbGljYXRlcy9HZW5tZXRoR2VuZXJhbC5qYXZhLmFmdGVyIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ldGhvZER1cGxpY2F0ZXMvR2VubWV0aEdlbmVyYWwuamF2YS5hZnRlcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYTZmOGMxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ldGhvZER1cGxpY2F0ZXMvR2VubWV0aEdlbmVyYWwuamF2YS5hZnRlcgpAQCAtMCwwICsxLDIwIEBACitpbXBvcnQgamF2YS51dGlsLkFic3RyYWN0TGlzdDsKK2ltcG9ydCBqYXZhLnV0aWwuQXJyYXlMaXN0OworaW1wb3J0IGphdmEudXRpbC5MaXN0OworCitwdWJsaWMgY2xhc3MgR2VubWV0aCB7CisJcHVibGljIHZvaWQgY29udGV4dCgpIHsKKwkJSW50ZWdlciB2MSA9IDA7CisJCWludCB2MWEgPSBtZXRob2QodjEpOworCQlBYnN0cmFjdExpc3Q8U3RyaW5nPiB2MiA9IG5ldyBBcnJheUxpc3Q8U3RyaW5nPigwKTsKKwkJaW50IHYyYSA9IG1ldGhvZCh2Mik7CisJCUFic3RyYWN0TGlzdDxEb3VibGU+IHYzID0gbmV3IEFycmF5TGlzdDxEb3VibGU+KDApOworCQlpbnQgdjNhID0gbWV0aG9kKHYzKTsKKwkJQWJzdHJhY3RMaXN0PEludGVnZXI+IHY0ID0gbmV3IEFycmF5TGlzdDxJbnRlZ2VyPigwKTsKKwkJaW50IHY0YSA9IG1ldGhvZCh2NCk7CisJfQorCisJcHVibGljIDxUPiBpbnQgbWV0aG9kKFQgdCkgeworCQlyZXR1cm4gdC5oYXNoQ29kZSgpOworCX0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tZXRob2REdXBsaWNhdGVzL0dlbm1ldGhTZXZlcmFsLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWV0aG9kRHVwbGljYXRlcy9HZW5tZXRoU2V2ZXJhbC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA1MDVkMzMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWV0aG9kRHVwbGljYXRlcy9HZW5tZXRoU2V2ZXJhbC5qYXZhCkBAIC0wLDAgKzEsMTUgQEAKK2ltcG9ydCBqYXZhLnV0aWwuQWJzdHJhY3RMaXN0OworaW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7CitpbXBvcnQgamF2YS51dGlsLkxpc3Q7CisKK3B1YmxpYyBjbGFzcyBHZW5tZXRoIHsKKwlwdWJsaWMgdm9pZCBjb250ZXh0KCkgeworCQlJbnRlZ2VyIHYxID0gMDsKKwkJQWJzdHJhY3RMaXN0PFN0cmluZz4gdjIgPSBuZXcgQXJyYXlMaXN0PFN0cmluZz4oMCk7CisJCWludCByZXMgPSB2MS5oYXNoQ29kZSgpICsgdjIuc2l6ZSgpOworCX0KKworCXB1YmxpYyA8VCwgVSBleHRlbmRzIExpc3Q+IGludCA8Y2FyZXQ+bWV0aG9kKFQgdCwgVSB1KSB7CisJCXJldHVybiB0Lmhhc2hDb2RlKCkgKyB1LnNpemUoKTsKKwl9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWV0aG9kRHVwbGljYXRlcy9HZW5tZXRoU2V2ZXJhbC5qYXZhLmFmdGVyIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ldGhvZER1cGxpY2F0ZXMvR2VubWV0aFNldmVyYWwuamF2YS5hZnRlcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYjkxNWEwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ldGhvZER1cGxpY2F0ZXMvR2VubWV0aFNldmVyYWwuamF2YS5hZnRlcgpAQCAtMCwwICsxLDE1IEBACitpbXBvcnQgamF2YS51dGlsLkFic3RyYWN0TGlzdDsKK2ltcG9ydCBqYXZhLnV0aWwuQXJyYXlMaXN0OworaW1wb3J0IGphdmEudXRpbC5MaXN0OworCitwdWJsaWMgY2xhc3MgR2VubWV0aCB7CisJcHVibGljIHZvaWQgY29udGV4dCgpIHsKKwkJSW50ZWdlciB2MSA9IDA7CisJCUFic3RyYWN0TGlzdDxTdHJpbmc+IHYyID0gbmV3IEFycmF5TGlzdDxTdHJpbmc+KDApOworCQlpbnQgcmVzID0gbWV0aG9kKHYxLCB2Mik7CisJfQorCisJcHVibGljIDxULCBVIGV4dGVuZHMgTGlzdD4gaW50IDxjYXJldD5tZXRob2QoVCB0LCBVIHUpIHsKKwkJcmV0dXJuIHQuaGFzaENvZGUoKSArIHUuc2l6ZSgpOworCX0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tZXRob2REdXBsaWNhdGVzL0lkZW50aXR5Q29tbWVudC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ldGhvZER1cGxpY2F0ZXMvSWRlbnRpdHlDb21tZW50LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTAzYTkxMgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tZXRob2REdXBsaWNhdGVzL0lkZW50aXR5Q29tbWVudC5qYXZhCkBAIC0wLDAgKzEsMTcgQEAKK2NsYXNzIElkZW50aXR5Q29tcGxldGUgeworICBwcml2YXRlIGludCBteUZpZWxkOworCisgIHB1YmxpYyB2b2lkIDxjYXJldD5tZXRob2QoYm9vbGVhbiBicCkgeworICAgIC8vIG1ldGhvZCBiZWdpbnMKKyAgICBTdHJpbmcgLyplZ2cqLyB2YXIgPSAvKmVnZyovInZhciB2YWx1ZSI7IC8vIGluc2lkZSBtZXRob2QKKyAgICBteUZpZWxkICs9IGJwID8vKmVnZyovIHZhci5sZW5ndGgoKSA6IC8qZWdnKi8gdGhpcy5oYXNoQ29kZSgpOyAgLyogaW5zaWRlIG1ldGhvZCAqLworICAgIC8qIG1ldGhvZCBlbmRzICovCisgIH0KKworICBwdWJsaWMgdm9pZCBjb250ZXh0KGJvb2xlYW4gYnApIHsKKyAgICAvKiBiZWZvcmUgZnJhZ21lbnQgKi8KKyAgICBTdHJpbmcgdmFyLyplZ2cqLyA9ICJ2YXIgdmFsdWUiLyplZ2cqLzsgLy8gaW5zaWRlIGNvbnRleHQKKyAgICBteUZpZWxkICs9IC8qZWdnKi8gYnAgPyB2YXIubGVuZ3RoKCkgOiB0aGlzLmhhc2hDb2RlKC8qZWdnKi8pOyAvKiBpbnNpZGUgY29udGV4dCAqLworICAgIC8vIGFmdGVyIGZyYWdtZW50CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWV0aG9kRHVwbGljYXRlcy9JZGVudGl0eUNvbW1lbnQuamF2YS5hZnRlciBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tZXRob2REdXBsaWNhdGVzL0lkZW50aXR5Q29tbWVudC5qYXZhLmFmdGVyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE4MDQ5YjgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWV0aG9kRHVwbGljYXRlcy9JZGVudGl0eUNvbW1lbnQuamF2YS5hZnRlcgpAQCAtMCwwICsxLDE2IEBACitjbGFzcyBJZGVudGl0eUNvbXBsZXRlIHsKKyAgcHJpdmF0ZSBpbnQgbXlGaWVsZDsKKworICBwdWJsaWMgdm9pZCBtZXRob2QoYm9vbGVhbiBicCkgeworICAgIC8vIG1ldGhvZCBiZWdpbnMKKyAgICBTdHJpbmcgLyplZ2cqLyB2YXIgPSAvKmVnZyovInZhciB2YWx1ZSI7IC8vIGluc2lkZSBtZXRob2QKKyAgICBteUZpZWxkICs9IGJwID8vKmVnZyovIHZhci5sZW5ndGgoKSA6IC8qZWdnKi8gdGhpcy5oYXNoQ29kZSgpOyAgLyogaW5zaWRlIG1ldGhvZCAqLworICAgIC8qIG1ldGhvZCBlbmRzICovCisgIH0KKworICBwdWJsaWMgdm9pZCBjb250ZXh0KGJvb2xlYW4gYnApIHsKKyAgICAvKiBiZWZvcmUgZnJhZ21lbnQgKi8KKyAgICAgIG1ldGhvZChicCk7CisgICAgLy8gYWZ0ZXIgZnJhZ21lbnQKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tZXRob2REdXBsaWNhdGVzL0lkZW50aXR5Q29tcGxldGUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tZXRob2REdXBsaWNhdGVzL0lkZW50aXR5Q29tcGxldGUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NDc2OGQ2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ldGhvZER1cGxpY2F0ZXMvSWRlbnRpdHlDb21wbGV0ZS5qYXZhCkBAIC0wLDAgKzEsMTMgQEAKK2NsYXNzIElkZW50aXR5Q29tcGxldGUgeworICBwcml2YXRlIGludCBteUZpZWxkOworCisgIHB1YmxpYyB2b2lkIDxjYXJldD5tZXRob2QoYm9vbGVhbiBicCkgeworICAgIFN0cmluZyB2YXIgPSAidmFyIHZhbHVlIjsKKyAgICBteUZpZWxkICs9IGJwID8gdmFyLmxlbmd0aCgpIDogdGhpcy5oYXNoQ29kZSgpOworICB9CisKKyAgcHVibGljIHZvaWQgY29udGV4dChib29sZWFuIGJwKSB7CisgICAgU3RyaW5nIHZhciA9ICJ2YXIgdmFsdWUiOworICAgIG15RmllbGQgKz0gYnAgPyB2YXIubGVuZ3RoKCkgOiB0aGlzLmhhc2hDb2RlKCk7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWV0aG9kRHVwbGljYXRlcy9JZGVudGl0eUNvbXBsZXRlLmphdmEuYWZ0ZXIgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWV0aG9kRHVwbGljYXRlcy9JZGVudGl0eUNvbXBsZXRlLmphdmEuYWZ0ZXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjk0N2Y4OQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tZXRob2REdXBsaWNhdGVzL0lkZW50aXR5Q29tcGxldGUuamF2YS5hZnRlcgpAQCAtMCwwICsxLDEyIEBACitjbGFzcyBJZGVudGl0eUNvbXBsZXRlIHsKKyAgcHJpdmF0ZSBpbnQgbXlGaWVsZDsKKworICBwdWJsaWMgdm9pZCBtZXRob2QoYm9vbGVhbiBicCkgeworICAgIFN0cmluZyB2YXIgPSAidmFyIHZhbHVlIjsKKyAgICBteUZpZWxkICs9IGJwID8gdmFyLmxlbmd0aCgpIDogdGhpcy5oYXNoQ29kZSgpOworICB9CisKKyAgcHVibGljIHZvaWQgY29udGV4dChib29sZWFuIGJwKSB7CisgICAgICBtZXRob2QoYnApOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ldGhvZER1cGxpY2F0ZXMvSWRlbnRpdHlOYW1lLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWV0aG9kRHVwbGljYXRlcy9JZGVudGl0eU5hbWUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NDRhNTVmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ldGhvZER1cGxpY2F0ZXMvSWRlbnRpdHlOYW1lLmphdmEKQEAgLTAsMCArMSwyMyBAQAoraW1wb3J0IGphdmF4LnN3aW5nLkpDb21wb25lbnQ7CisKK2NsYXNzIElkZW50aXR5Q29tcGxldGUgeworICBwcml2YXRlIGludCBteUZpZWxkOworCisgIHB1YmxpYyB2b2lkIDxjYXJldD5tZXRob2QoYm9vbGVhbiBtZXRob2RQYXIpIHsKKyAgICBTdHJpbmcgbWV0aG9kVmFyID0gInZhciB2YWx1ZSI7CisgICAgbXlGaWVsZCArPSBtZXRob2RQYXIgPyBtZXRob2RWYXIubGVuZ3RoKCkgOiB0aGlzLmhhc2hDb2RlKCk7CisKKyAgICBKQ29tcG9uZW50IG1ldGhvZEFub255bW91cyA9IG5ldyBKQ29tcG9uZW50KCkgeworICAgICAgcHJpdmF0ZSBpbnQgbXlNZXRob2RBbm9ueW1vdXNJbnQ7CisgICAgfTsKKyAgfQorCisgIHB1YmxpYyB2b2lkIGNvbnRleHQoYm9vbGVhbiBjb250ZXh0UGFyKSB7CisgICAgU3RyaW5nIGNvbnRleHRWYXIgPSAidmFyIHZhbHVlIjsKKyAgICBteUZpZWxkICs9IGNvbnRleHRQYXIgPyBjb250ZXh0VmFyLmxlbmd0aCgpIDogdGhpcy5oYXNoQ29kZSgpOworCisgICAgSkNvbXBvbmVudCBjb250ZXh0QW5vbnltb3VzID0gbmV3IEpDb21wb25lbnQoKSB7CisgICAgICBwcml2YXRlIGludCBteUNvbnRleHRBbm9ueW1vdXNJbnQ7CisgICAgfTsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ldGhvZER1cGxpY2F0ZXMvSWRlbnRpdHlOYW1lLmphdmEuYWZ0ZXIgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWV0aG9kRHVwbGljYXRlcy9JZGVudGl0eU5hbWUuamF2YS5hZnRlcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MDVjMGYwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ldGhvZER1cGxpY2F0ZXMvSWRlbnRpdHlOYW1lLmphdmEuYWZ0ZXIKQEAgLTAsMCArMSwxOCBAQAoraW1wb3J0IGphdmF4LnN3aW5nLkpDb21wb25lbnQ7CisKK2NsYXNzIElkZW50aXR5Q29tcGxldGUgeworICBwcml2YXRlIGludCBteUZpZWxkOworCisgIHB1YmxpYyB2b2lkIG1ldGhvZChib29sZWFuIG1ldGhvZFBhcikgeworICAgIFN0cmluZyBtZXRob2RWYXIgPSAidmFyIHZhbHVlIjsKKyAgICBteUZpZWxkICs9IG1ldGhvZFBhciA/IG1ldGhvZFZhci5sZW5ndGgoKSA6IHRoaXMuaGFzaENvZGUoKTsKKworICAgIEpDb21wb25lbnQgbWV0aG9kQW5vbnltb3VzID0gbmV3IEpDb21wb25lbnQoKSB7CisgICAgICBwcml2YXRlIGludCBteU1ldGhvZEFub255bW91c0ludDsKKyAgICB9OworICB9CisKKyAgcHVibGljIHZvaWQgY29udGV4dChib29sZWFuIGNvbnRleHRQYXIpIHsKKyAgICAgIG1ldGhvZChjb250ZXh0UGFyKTsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ldGhvZER1cGxpY2F0ZXMvSWRlbnRpdHlOYW1lRmFpbHVyZXMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tZXRob2REdXBsaWNhdGVzL0lkZW50aXR5TmFtZUZhaWx1cmVzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmZjZmM5NwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tZXRob2REdXBsaWNhdGVzL0lkZW50aXR5TmFtZUZhaWx1cmVzLmphdmEKQEAgLTAsMCArMSwzNyBAQAoraW1wb3J0IGphdmF4LnN3aW5nLkpDb21wb25lbnQ7CisKK2NsYXNzIElkZW50aXR5Q29tcGxldGUgeworICBwcml2YXRlIGludCBteUZpZWxkOworCisgIHB1YmxpYyB2b2lkIDxjYXJldD5tZXRob2QoKSB7CisgICAgY2xhc3MgTWV0aG9kTG9jYWwgeworICAgICAgcHJpdmF0ZSBpbnQgbXlNZXRob2RMb2NhbEludDsKKyAgICAgIHB1YmxpYyB2b2lkIG1ldGhvZExvY2FsSW5jKCkgeworICAgICAgICBteU1ldGhvZExvY2FsSW50Kys7CisgICAgICB9CisgICAgfQorCisgICAgSkNvbXBvbmVudCBtZXRob2RBbm9ueW1vdXMgPSBuZXcgSkNvbXBvbmVudCgpIHsKKyAgICAgIHByaXZhdGUgaW50IG15TWV0aG9kQW5vbnltb3VzSW50OworICAgICAgcHVibGljIHZvaWQgbWV0aG9kQW5vbnltb3VzSW5jKCkgeworICAgICAgICBteU1ldGhvZEFub255bW91c0ludCsrOworICAgICAgfQorICAgIH07CisgIH0KKworICBwdWJsaWMgdm9pZCBjb250ZXh0KCkgeworICAgIGNsYXNzIENvbnRleHRMb2NhbCB7CisgICAgICBwcml2YXRlIGludCBteUNvbnRleHRMb2NhbEludDsKKyAgICAgIHB1YmxpYyB2b2lkIGNvbnRleHRMb2NhbEluYygpIHsKKyAgICAgICAgbXlDb250ZXh0TG9jYWxJbnQrKzsKKyAgICAgIH0KKyAgICB9CisKKyAgICBKQ29tcG9uZW50IGNvbnRleHRBbm9ueW1vdXMgPSBuZXcgSkNvbXBvbmVudCgpIHsKKyAgICAgIHByaXZhdGUgaW50IG15Q29udGV4dEFub255bW91c0ludDsKKyAgICAgIHB1YmxpYyB2b2lkIGNvbnRleHRBbm9ueW1vdXNJbmMoKSB7CisgICAgICAgIG15Q29udGV4dEFub255bW91c0ludCsrOworICAgICAgfQorICAgIH07CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tZXRob2REdXBsaWNhdGVzL0lkZW50aXR5TmFtZUZhaWx1cmVzLmphdmEuYWZ0ZXIgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWV0aG9kRHVwbGljYXRlcy9JZGVudGl0eU5hbWVGYWlsdXJlcy5qYXZhLmFmdGVyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIwZDAyZDQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWV0aG9kRHVwbGljYXRlcy9JZGVudGl0eU5hbWVGYWlsdXJlcy5qYXZhLmFmdGVyCkBAIC0wLDAgKzEsMjUgQEAKK2ltcG9ydCBqYXZheC5zd2luZy5KQ29tcG9uZW50OworCitjbGFzcyBJZGVudGl0eUNvbXBsZXRlIHsKKyAgcHJpdmF0ZSBpbnQgbXlGaWVsZDsKKworICBwdWJsaWMgdm9pZCBtZXRob2QoKSB7CisgICAgY2xhc3MgTWV0aG9kTG9jYWwgeworICAgICAgcHJpdmF0ZSBpbnQgbXlNZXRob2RMb2NhbEludDsKKyAgICAgIHB1YmxpYyB2b2lkIG1ldGhvZExvY2FsSW5jKCkgeworICAgICAgICBteU1ldGhvZExvY2FsSW50Kys7CisgICAgICB9CisgICAgfQorCisgICAgSkNvbXBvbmVudCBtZXRob2RBbm9ueW1vdXMgPSBuZXcgSkNvbXBvbmVudCgpIHsKKyAgICAgIHByaXZhdGUgaW50IG15TWV0aG9kQW5vbnltb3VzSW50OworICAgICAgcHVibGljIHZvaWQgbWV0aG9kQW5vbnltb3VzSW5jKCkgeworICAgICAgICBteU1ldGhvZEFub255bW91c0ludCsrOworICAgICAgfQorICAgIH07CisgIH0KKworICBwdWJsaWMgdm9pZCBjb250ZXh0KCkgeworICAgICAgbWV0aG9kKCk7CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tZXRob2REdXBsaWNhdGVzL0lkZW50aXR5V2hpdGVzcGFjZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ldGhvZER1cGxpY2F0ZXMvSWRlbnRpdHlXaGl0ZXNwYWNlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTM3OWYwMwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tZXRob2REdXBsaWNhdGVzL0lkZW50aXR5V2hpdGVzcGFjZS5qYXZhCkBAIC0wLDAgKzEsMTkgQEAKK2NsYXNzIElkZW50aXR5Q29tcGxldGUgeworICBwcml2YXRlIGludCBteUZpZWxkOworCisgIHB1YmxpYyB2b2lkIDxjYXJldD5tZXRob2QoYm9vbGVhbiBicCkgeworICAgIFN0cmluZyB2YXI9InZhciB2YWx1ZSIgOworbXlGaWVsZCArPQorYnAJPwl2YXIuCisJbGVuZ3RoKCApOnRoaXMuIGhhc2hDb2RlICgpIDsKKyAgfQorCisgIHB1YmxpYyB2b2lkIGNvbnRleHQoYm9vbGVhbiBicCkgeworICAgIFN0cmluZwl2YXIKKyAgICA9CisJInZhciB2YWx1ZSIKKztteUZpZWxkCisJKz1icD92YXIgIC4gbGVuZ3RoICggKQk6CisJdGhpcwkuaGFzaENvZGUoKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tZXRob2REdXBsaWNhdGVzL0lkZW50aXR5V2hpdGVzcGFjZS5qYXZhLmFmdGVyIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ldGhvZER1cGxpY2F0ZXMvSWRlbnRpdHlXaGl0ZXNwYWNlLmphdmEuYWZ0ZXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWNhZDRlMQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tZXRob2REdXBsaWNhdGVzL0lkZW50aXR5V2hpdGVzcGFjZS5qYXZhLmFmdGVyCkBAIC0wLDAgKzEsMTQgQEAKK2NsYXNzIElkZW50aXR5Q29tcGxldGUgeworICBwcml2YXRlIGludCBteUZpZWxkOworCisgIHB1YmxpYyB2b2lkIG1ldGhvZChib29sZWFuIGJwKSB7CisgICAgU3RyaW5nIHZhcj0idmFyIHZhbHVlIiA7CitteUZpZWxkICs9CiticAk/CXZhci4KKwlsZW5ndGgoICk6dGhpcy4gaGFzaENvZGUgKCkgOworICB9CisKKyAgcHVibGljIHZvaWQgY29udGV4dChib29sZWFuIGJwKSB7CisgICAgICBtZXRob2QoYnApOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ldGhvZER1cGxpY2F0ZXMvSW5oZXJpdGFuY2UuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tZXRob2REdXBsaWNhdGVzL0luaGVyaXRhbmNlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODk5M2NiNwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tZXRob2REdXBsaWNhdGVzL0luaGVyaXRhbmNlLmphdmEKQEAgLTAsMCArMSwxMyBAQAorcHVibGljIGNsYXNzIEluaGVyaXRhbmNlIHt9CisKK2NsYXNzIEJhc2UgeworICB2b2lkIGY8Y2FyZXQ+b28oKXsKKyAgICBTeXN0ZW0ub3V0LnByaW50bG4oIiIpOworICB9Cit9CisKK2NsYXNzIENoaWxkIGV4dGVuZHMgQmFzZSB7CisgICB2b2lkIGJhcigpIHsKKyAgICAgU3lzdGVtLm91dC5wcmludGxuKCIiKTsKKyAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWV0aG9kRHVwbGljYXRlcy9Jbmhlcml0YW5jZS5qYXZhLmFmdGVyIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ldGhvZER1cGxpY2F0ZXMvSW5oZXJpdGFuY2UuamF2YS5hZnRlcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZmE1NjZmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ldGhvZER1cGxpY2F0ZXMvSW5oZXJpdGFuY2UuamF2YS5hZnRlcgpAQCAtMCwwICsxLDEzIEBACitwdWJsaWMgY2xhc3MgSW5oZXJpdGFuY2Uge30KKworY2xhc3MgQmFzZSB7CisgIHZvaWQgZm9vKCl7CisgICAgU3lzdGVtLm91dC5wcmludGxuKCIiKTsKKyAgfQorfQorCitjbGFzcyBDaGlsZCBleHRlbmRzIEJhc2UgeworICAgdm9pZCBiYXIoKSB7CisgICAgICAgZm9vKCk7CisgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ldGhvZER1cGxpY2F0ZXMvTG9jYXRpb25RdWFudGl0eS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ldGhvZER1cGxpY2F0ZXMvTG9jYXRpb25RdWFudGl0eS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRkNTdmOTIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWV0aG9kRHVwbGljYXRlcy9Mb2NhdGlvblF1YW50aXR5LmphdmEKQEAgLTAsMCArMSwzMyBAQAorY2xhc3MgTG9jYXRpb25RdWFudGl0eSB7CisgIHB1YmxpYyBmaW5hbCBpbnQgbXlJbnQgPSAzOworCisgIHB1YmxpYyBpbnQgPGNhcmV0Pm1ldGhvZChpbnQgcCkgeworICAgIHJldHVybiBteUludCArIHA7CisgIH0KKworICBwdWJsaWMgdm9pZCBzYW1lQ2xhc3NDb250ZXh0KCkgeworICAgIGludCB2ID0gMTsKKyAgICB2Kys7CisgICAgaW50IHYyID0gbXlJbnQgKyB2OworICAgIE9iamVjdCBvID0gbmV3IE9iamVjdCgpIHsKKyAgICAgIHB1YmxpYyB2b2lkIGFub255bW91c0NsYXNzQ29udGV4dCgpIHsKKyAgICAgICAgIGludCBhdiA9IG15SW50ICsgMjsKKyAgICAgIH0KKyAgICB9OworICB9CisKKyAgcHVibGljIGNsYXNzIElubmVyIHsKKyAgICBwcml2YXRlIGJvb2xlYW4gbXlGbGFnOworICAgIHB1YmxpYyBpbnQgaW5uZXJDbGFzc0NvbnRleHQoaW50IGlwKSB7CisgICAgICByZXR1cm4gbXlGbGFnID8gbXlJbnQgKyBpcCA6IDA7CisgICAgfQorICB9Cit9CisKK2NsYXNzIERpZmZlcmVudENsYXNzIHsKKyAgcHJpdmF0ZSBpbnQgbXlJbnQ7CisgIHByaXZhdGUgdm9pZCBkaWZmZXJlbnRDbGFzc0NvbnRleHQoKSB7CisgICAgTG9jYXRpb25RdWFudGl0eSBscSA9IG5ldyBMb2NhdGlvblF1YW50aXR5KCk7CisgICAgaW50IHYgPSBscS5teUludCArIG15SW50OworICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWV0aG9kRHVwbGljYXRlcy9Mb2NhdGlvblF1YW50aXR5LmphdmEuYWZ0ZXIgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWV0aG9kRHVwbGljYXRlcy9Mb2NhdGlvblF1YW50aXR5LmphdmEuYWZ0ZXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTgxMDgxZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tZXRob2REdXBsaWNhdGVzL0xvY2F0aW9uUXVhbnRpdHkuamF2YS5hZnRlcgpAQCAtMCwwICsxLDMzIEBACitjbGFzcyBMb2NhdGlvblF1YW50aXR5IHsKKyAgcHVibGljIGZpbmFsIGludCBteUludCA9IDM7CisKKyAgcHVibGljIGludCBtZXRob2QoaW50IHApIHsKKyAgICByZXR1cm4gbXlJbnQgKyBwOworICB9CisKKyAgcHVibGljIHZvaWQgc2FtZUNsYXNzQ29udGV4dCgpIHsKKyAgICBpbnQgdiA9IDE7CisgICAgdisrOworICAgIGludCB2MiA9IG1ldGhvZCh2KTsKKyAgICBPYmplY3QgbyA9IG5ldyBPYmplY3QoKSB7CisgICAgICBwdWJsaWMgdm9pZCBhbm9ueW1vdXNDbGFzc0NvbnRleHQoKSB7CisgICAgICAgICBpbnQgYXYgPSBtZXRob2QoMik7CisgICAgICB9CisgICAgfTsKKyAgfQorCisgIHB1YmxpYyBjbGFzcyBJbm5lciB7CisgICAgcHJpdmF0ZSBib29sZWFuIG15RmxhZzsKKyAgICBwdWJsaWMgaW50IGlubmVyQ2xhc3NDb250ZXh0KGludCBpcCkgeworICAgICAgcmV0dXJuIG15RmxhZyA/IG1ldGhvZChpcCkgOiAwOworICAgIH0KKyAgfQorfQorCitjbGFzcyBEaWZmZXJlbnRDbGFzcyB7CisgIHByaXZhdGUgaW50IG15SW50OworICBwcml2YXRlIHZvaWQgZGlmZmVyZW50Q2xhc3NDb250ZXh0KCkgeworICAgIExvY2F0aW9uUXVhbnRpdHkgbHEgPSBuZXcgTG9jYXRpb25RdWFudGl0eSgpOworICAgIGludCB2ID0gbHEubWV0aG9kKG15SW50KTsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ldGhvZER1cGxpY2F0ZXMvTWFwcGluZ0FueTJQYXJhbWV0ZXJQcmltaXRpdmVMdmFsdWUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tZXRob2REdXBsaWNhdGVzL01hcHBpbmdBbnkyUGFyYW1ldGVyUHJpbWl0aXZlTHZhbHVlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzgzYTVmMgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tZXRob2REdXBsaWNhdGVzL01hcHBpbmdBbnkyUGFyYW1ldGVyUHJpbWl0aXZlTHZhbHVlLmphdmEKQEAgLTAsMCArMSwxMSBAQAorY2xhc3MgTWFwcGluZyB7CisgIHByaXZhdGUgaW50IG15RmllbGQ7CisKKyAgcHVibGljIHZvaWQgPGNhcmV0Pm1ldGhvZChpbnQgcCkgeworICAgIHArKzsKKyAgfQorCisgIHB1YmxpYyB2b2lkIGNvbnRleHQoKSB7CisgICAgbXlGaWVsZDsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ldGhvZER1cGxpY2F0ZXMvTWFwcGluZ0V4cHJlc3Npb24yRmllbGQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tZXRob2REdXBsaWNhdGVzL01hcHBpbmdFeHByZXNzaW9uMkZpZWxkLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTc1YjliZGEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWV0aG9kRHVwbGljYXRlcy9NYXBwaW5nRXhwcmVzc2lvbjJGaWVsZC5qYXZhCkBAIC0wLDAgKzEsMTEgQEAKK2NsYXNzIE1hcHBpbmcgeworICBwcml2YXRlIE1hcHBpbmcgbXlNYXBwaW5nOworCisgIHB1YmxpYyB2b2lkIDxjYXJldD5tZXRob2QoKSB7CisgICAgTWFwcGluZyBtMiA9IG15TWFwcGluZzsKKyAgfQorCisgIHB1YmxpYyB2b2lkIGNvbnRleHQoKSB7CisgICAgTWFwcGluZyBtMiA9IG5ldyBNYXBwaW5nKCk7CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tZXRob2REdXBsaWNhdGVzL01hcHBpbmdFeHByZXNzaW9uMkxvY2FsVmFyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWV0aG9kRHVwbGljYXRlcy9NYXBwaW5nRXhwcmVzc2lvbjJMb2NhbFZhci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk5NjgxZGYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWV0aG9kRHVwbGljYXRlcy9NYXBwaW5nRXhwcmVzc2lvbjJMb2NhbFZhci5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKK2NsYXNzIE1hcHBpbmcgeworICBwdWJsaWMgdm9pZCA8Y2FyZXQ+bWV0aG9kKCkgeworICAgIE1hcHBpbmcgbSA9IG5ldyBNYXBwaW5nKCk7CisgICAgTWFwcGluZyBtMiA9IG07CisgIH0KKworICBwdWJsaWMgdm9pZCBjb250ZXh0KCkgeworICAgIE1hcHBpbmcgbTIgPSBuZXcgTWFwcGluZygpOworICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWV0aG9kRHVwbGljYXRlcy9NYXBwaW5nRXhwcmVzc2lvbjJQYXJhbWV0ZXJMVmFsdWVzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWV0aG9kRHVwbGljYXRlcy9NYXBwaW5nRXhwcmVzc2lvbjJQYXJhbWV0ZXJMVmFsdWVzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWI2M2ExYwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tZXRob2REdXBsaWNhdGVzL01hcHBpbmdFeHByZXNzaW9uMlBhcmFtZXRlckxWYWx1ZXMuamF2YQpAQCAtMCwwICsxLDExIEBACitjbGFzcyBNYXBwaW5nIHsKKyAgcHJpdmF0ZSBNYXBwaW5nIG15TWFwcGluZzsKKworICBwdWJsaWMgdm9pZCA8Y2FyZXQ+bWV0aG9kKE1hcHBpbmcgbSkgeworICAgIG0gPSBudWxsOworICB9CisKKyAgcHVibGljIHZvaWQgY29udGV4dCgpIHsKKyAgICB0aGlzLm15TWFwcGluZyA9IG51bGw7CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tZXRob2REdXBsaWNhdGVzL01hcHBpbmdFeHByZXNzaW9uMlBhcmFtZXRlckxWYWx1ZXMuamF2YS5hZnRlciBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tZXRob2REdXBsaWNhdGVzL01hcHBpbmdFeHByZXNzaW9uMlBhcmFtZXRlckxWYWx1ZXMuamF2YS5hZnRlcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZGU0ZmVmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ldGhvZER1cGxpY2F0ZXMvTWFwcGluZ0V4cHJlc3Npb24yUGFyYW1ldGVyTFZhbHVlcy5qYXZhLmFmdGVyCkBAIC0wLDAgKzEsMTEgQEAKK2NsYXNzIE1hcHBpbmcgeworICBwcml2YXRlIE1hcHBpbmcgbXlNYXBwaW5nOworCisgIHB1YmxpYyB2b2lkIDxjYXJldD5tZXRob2QoTWFwcGluZyBtKSB7CisgICAgbSA9IG51bGw7CisgIH0KKworICBwdWJsaWMgdm9pZCBjb250ZXh0KCkgeworICAgICAgbWV0aG9kKHRoaXMubXlNYXBwaW5nKTsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ldGhvZER1cGxpY2F0ZXMvTWFwcGluZ0V4cHJlc3Npb24yUGFyYW1ldGVyTGl0ZXJhbHMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tZXRob2REdXBsaWNhdGVzL01hcHBpbmdFeHByZXNzaW9uMlBhcmFtZXRlckxpdGVyYWxzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTE4MTlhMAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tZXRob2REdXBsaWNhdGVzL01hcHBpbmdFeHByZXNzaW9uMlBhcmFtZXRlckxpdGVyYWxzLmphdmEKQEAgLTAsMCArMSwxMSBAQAorY2xhc3MgTWFwcGluZyB7CisgIHByaXZhdGUgaW50IG15SW50OworCisgIHB1YmxpYyB2b2lkIDxjYXJldD5tZXRob2QoYm9vbGVhbiBiLCBpbnQgaSwgY2hhciBjLCBkb3VibGUgZCwgaW50W10gaWEsIFN0cmluZyBzKSB7CisgICAgbXlJbnQgPSBiID8gaSArIGMgLSAoaW50KWQ6IGlhLmxlbmd0aCArIHMuaGFzaENvZGUoKTsKKyAgfQorCisgIHB1YmxpYyB2b2lkIGNvbnRleHQoKSB7CisgICAgbXlJbnQgPSB0cnVlIHx8IGZhbHNlID8gNSArICd6JyAtIChpbnQpMy4xNCA6IG5ldyBpbnRbXSB7IDAsIDEgfS5sZW5ndGggKyAiYWJjIi5oYXNoQ29kZSgpOworICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWV0aG9kRHVwbGljYXRlcy9NYXBwaW5nRXhwcmVzc2lvbjJQYXJhbWV0ZXJMaXRlcmFscy5qYXZhLmFmdGVyIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ldGhvZER1cGxpY2F0ZXMvTWFwcGluZ0V4cHJlc3Npb24yUGFyYW1ldGVyTGl0ZXJhbHMuamF2YS5hZnRlcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMDc2ZmQyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ldGhvZER1cGxpY2F0ZXMvTWFwcGluZ0V4cHJlc3Npb24yUGFyYW1ldGVyTGl0ZXJhbHMuamF2YS5hZnRlcgpAQCAtMCwwICsxLDExIEBACitjbGFzcyBNYXBwaW5nIHsKKyAgcHJpdmF0ZSBpbnQgbXlJbnQ7CisKKyAgcHVibGljIHZvaWQgbWV0aG9kKGJvb2xlYW4gYiwgaW50IGksIGNoYXIgYywgZG91YmxlIGQsIGludFtdIGlhLCBTdHJpbmcgcykgeworICAgIG15SW50ID0gYiA/IGkgKyBjIC0gKGludClkOiBpYS5sZW5ndGggKyBzLmhhc2hDb2RlKCk7CisgIH0KKworICBwdWJsaWMgdm9pZCBjb250ZXh0KCkgeworICAgICAgbWV0aG9kKHRydWUgfHwgZmFsc2UsIDUsICd6JywgMy4xNCwgbmV3IGludFtdIHsgMCwgMSB9LCAiYWJjIik7CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tZXRob2REdXBsaWNhdGVzL01hcHBpbmdFeHByZXNzaW9uMlBhcmFtZXRlck11bHRpcGxlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWV0aG9kRHVwbGljYXRlcy9NYXBwaW5nRXhwcmVzc2lvbjJQYXJhbWV0ZXJNdWx0aXBsZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNiN2E4YTcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWV0aG9kRHVwbGljYXRlcy9NYXBwaW5nRXhwcmVzc2lvbjJQYXJhbWV0ZXJNdWx0aXBsZS5qYXZhCkBAIC0wLDAgKzEsMjEgQEAKK2NsYXNzIE1hcHBpbmcgeworICBwcml2YXRlIGludCBteUludDsKKworICBwdWJsaWMgdm9pZCA8Y2FyZXQ+bWV0aG9kKGludCBwMSwgYm9vbGVhbiBwMikgeworICAgIG15SW50ID0gcDIgPyBwMSA6IDA7CisgICAgaWYgKCFwMikgeworICAgICAgbXlJbnQgKj0gcDE7CisgICAgfQorICB9CisKKyAgcHVibGljIGJvb2xlYW4gc2F5WWVzKCkgeworICAgIHJldHVybiB0cnVlOworICB9CisKKyAgcHVibGljIHZvaWQgY29udGV4dCgpIHsKKyAgICBteUludCA9IHNheVllcygpID8gMTUgLyA1IDogMDsKKyAgICBpZiAoIXNheVllcygpKSB7CisgICAgICBteUludCAqPSAxNSAvIDU7CisgICAgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ldGhvZER1cGxpY2F0ZXMvTWFwcGluZ0V4cHJlc3Npb24yUGFyYW1ldGVyTXVsdGlwbGUuamF2YS5hZnRlciBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tZXRob2REdXBsaWNhdGVzL01hcHBpbmdFeHByZXNzaW9uMlBhcmFtZXRlck11bHRpcGxlLmphdmEuYWZ0ZXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDc1ODExOAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tZXRob2REdXBsaWNhdGVzL01hcHBpbmdFeHByZXNzaW9uMlBhcmFtZXRlck11bHRpcGxlLmphdmEuYWZ0ZXIKQEAgLTAsMCArMSwxOCBAQAorY2xhc3MgTWFwcGluZyB7CisgIHByaXZhdGUgaW50IG15SW50OworCisgIHB1YmxpYyB2b2lkIDxjYXJldD5tZXRob2QoaW50IHAxLCBib29sZWFuIHAyKSB7CisgICAgbXlJbnQgPSBwMiA/IHAxIDogMDsKKyAgICBpZiAoIXAyKSB7CisgICAgICBteUludCAqPSBwMTsKKyAgICB9CisgIH0KKworICBwdWJsaWMgYm9vbGVhbiBzYXlZZXMoKSB7CisgICAgcmV0dXJuIHRydWU7CisgIH0KKworICBwdWJsaWMgdm9pZCBjb250ZXh0KCkgeworICAgICAgbWV0aG9kKDE1IC8gNSwgc2F5WWVzKCkpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ldGhvZER1cGxpY2F0ZXMvTWFwcGluZ0V4cHJlc3Npb24yVGhpcy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ldGhvZER1cGxpY2F0ZXMvTWFwcGluZ0V4cHJlc3Npb24yVGhpcy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM3YWY4MWMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWV0aG9kRHVwbGljYXRlcy9NYXBwaW5nRXhwcmVzc2lvbjJUaGlzLmphdmEKQEAgLTAsMCArMSw5IEBACitjbGFzcyBNYXBwaW5nIHsKKyAgcHVibGljIHZvaWQgPGNhcmV0Pm1ldGhvZCgpIHsKKyAgICBNYXBwaW5nIG0yID0gdGhpczsKKyAgfQorCisgIHB1YmxpYyB2b2lkIGNvbnRleHQoKSB7CisgICAgTWFwcGluZyBtMiA9IG5ldyBNYXBwaW5nKCk7CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tZXRob2REdXBsaWNhdGVzL01hcHBpbmdGaWVsZDJGaWVsZC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ldGhvZER1cGxpY2F0ZXMvTWFwcGluZ0ZpZWxkMkZpZWxkLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTAxMDU5NwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tZXRob2REdXBsaWNhdGVzL01hcHBpbmdGaWVsZDJGaWVsZC5qYXZhCkBAIC0wLDAgKzEsMTYgQEAKK2NsYXNzIE1hcHBpbmcxIHsKKyAgcHJpdmF0ZSBpbnQgbXlJbnQ7CisgIHB1YmxpYyB2b2lkIDxjYXJldD5tZXRob2QoKSB7CisgICAgaW50IGkgPSBteUludDsKKyAgfQorICBwdWJsaWMgdm9pZCBjb250ZXh0KCkgeworICAgIGludCBpID0gbXlJbnQ7CisgIH0KK30KKworY2xhc3MgTWFwcGluZzIgeworICBwcml2YXRlIGludCBteUludDsKKyAgcHVibGljIHZvaWQgY29udGV4dCgpIHsKKyAgICBpbnQgaSA9IG15SW50OworICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWV0aG9kRHVwbGljYXRlcy9NYXBwaW5nRmllbGQyRmllbGQuamF2YS5hZnRlciBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tZXRob2REdXBsaWNhdGVzL01hcHBpbmdGaWVsZDJGaWVsZC5qYXZhLmFmdGVyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRjNDE4OWEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWV0aG9kRHVwbGljYXRlcy9NYXBwaW5nRmllbGQyRmllbGQuamF2YS5hZnRlcgpAQCAtMCwwICsxLDE2IEBACitjbGFzcyBNYXBwaW5nMSB7CisgIHByaXZhdGUgaW50IG15SW50OworICBwdWJsaWMgdm9pZCBtZXRob2QoKSB7CisgICAgaW50IGkgPSBteUludDsKKyAgfQorICBwdWJsaWMgdm9pZCBjb250ZXh0KCkgeworICAgICAgbWV0aG9kKCk7CisgIH0KK30KKworY2xhc3MgTWFwcGluZzIgeworICBwcml2YXRlIGludCBteUludDsKKyAgcHVibGljIHZvaWQgY29udGV4dCgpIHsKKyAgICBpbnQgaSA9IG15SW50OworICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWV0aG9kRHVwbGljYXRlcy9NYXBwaW5nRmllbGQyTG9jYWxWYXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tZXRob2REdXBsaWNhdGVzL01hcHBpbmdGaWVsZDJMb2NhbFZhci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU5NzAwNGQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWV0aG9kRHVwbGljYXRlcy9NYXBwaW5nRmllbGQyTG9jYWxWYXIuamF2YQpAQCAtMCwwICsxLDExIEBACitjbGFzcyBNYXBwaW5nIHsKKyAgcHJpdmF0ZSBpbnQgbXlJbnQ7CisgIHByaXZhdGUgTWFwcGluZyBteU1hcHBpbmcgPSBuZXcgTWFwcGluZygpOworICBwdWJsaWMgdm9pZCA8Y2FyZXQ+bWV0aG9kKCkgeworICAgIE1hcHBpbmcgbSA9IG5ldyBNYXBwaW5nKCk7CisgICAgbXlJbnQgKz0gbS5oYXNoQ29kZSgpOworICB9CisgIHB1YmxpYyB2b2lkIGNvbnRleHQoKSB7CisgICAgbXlJbnQgKz0gbXlNYXBwaW5nLmhhc2hDb2RlKCk7ICAKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tZXRob2REdXBsaWNhdGVzL01hcHBpbmdGaWVsZDJQYXJhbWV0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tZXRob2REdXBsaWNhdGVzL01hcHBpbmdGaWVsZDJQYXJhbWV0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZWM1YTUyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ldGhvZER1cGxpY2F0ZXMvTWFwcGluZ0ZpZWxkMlBhcmFtZXRlci5qYXZhCkBAIC0wLDAgKzEsMTUgQEAKK2NsYXNzIE1hcHBpbmcgeworICBwcml2YXRlIGludCBteUludDsKKworICBwdWJsaWMgdm9pZCA8Y2FyZXQ+bWV0aG9kKGludCBwKSB7CisgICAgbXlJbnQgPSBwICsgMTsKKyAgfQorCisgIHB1YmxpYyB2b2lkIGNvbnRleHQxKCkgeworICAgIG15SW50ID0gbXlJbnQgKyAxOworICB9CisKKyAgcHVibGljIHZvaWQgY29udGV4dDIoKSB7CisgICAgbXlJbnQgPSB0aGlzLm15SW50ICsgMTsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ldGhvZER1cGxpY2F0ZXMvTWFwcGluZ0ZpZWxkMlBhcmFtZXRlci5qYXZhLmFmdGVyIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ldGhvZER1cGxpY2F0ZXMvTWFwcGluZ0ZpZWxkMlBhcmFtZXRlci5qYXZhLmFmdGVyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA3OGEzODAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWV0aG9kRHVwbGljYXRlcy9NYXBwaW5nRmllbGQyUGFyYW1ldGVyLmphdmEuYWZ0ZXIKQEAgLTAsMCArMSwxNSBAQAorY2xhc3MgTWFwcGluZyB7CisgIHByaXZhdGUgaW50IG15SW50OworCisgIHB1YmxpYyB2b2lkIG1ldGhvZChpbnQgcCkgeworICAgIG15SW50ID0gcCArIDE7CisgIH0KKworICBwdWJsaWMgdm9pZCBjb250ZXh0MSgpIHsKKyAgICAgIG1ldGhvZChteUludCk7CisgIH0KKworICBwdWJsaWMgdm9pZCBjb250ZXh0MigpIHsKKyAgICAgIG1ldGhvZCh0aGlzLm15SW50KTsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ldGhvZER1cGxpY2F0ZXMvTWFwcGluZ0ZpZWxkMlRoaXMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tZXRob2REdXBsaWNhdGVzL01hcHBpbmdGaWVsZDJUaGlzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2Y4Y2M3NwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tZXRob2REdXBsaWNhdGVzL01hcHBpbmdGaWVsZDJUaGlzLmphdmEKQEAgLTAsMCArMSwxMiBAQAorY2xhc3MgTWFwcGluZyB7CisgIHByaXZhdGUgaW50IG15SW50OworICBwcml2YXRlIE1hcHBpbmcgbXlGaWVsZDsKKworICBwdWJsaWMgdm9pZCA8Y2FyZXQ+bWV0aG9kKCkgeworICAgIG15SW50ID0gaGFzaENvZGUoKTsKKyAgfQorCisgIHB1YmxpYyB2b2lkIGNvbnRleHQoKSB7CisgICAgbXlJbnQgPSBteUZpZWxkLmhhc2hDb2RlKCk7CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tZXRob2REdXBsaWNhdGVzL01hcHBpbmdMb2NhbFZhcjJFeHByZXNzaW9uLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWV0aG9kRHVwbGljYXRlcy9NYXBwaW5nTG9jYWxWYXIyRXhwcmVzc2lvbi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIyMzVkOGEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWV0aG9kRHVwbGljYXRlcy9NYXBwaW5nTG9jYWxWYXIyRXhwcmVzc2lvbi5qYXZhCkBAIC0wLDAgKzEsMTMgQEAKK2NsYXNzIE1hcHBpbmcgeworICBwcml2YXRlIGludCBteUludDsKKworICBwdWJsaWMgdm9pZCA8Y2FyZXQ+bWV0aG9kKCkgeworICAgIGludCBjb250ZXh0VmFyID0gMTsKKyAgICBteUludCArPSBjb250ZXh0VmFyICsgMTsKKyAgfQorCisgIHB1YmxpYyB2b2lkIGNvbnRleHQoKSB7CisgICAgaW50IGNvbnRleHRWYXIgPSAxOworICAgIG15SW50ICs9IGNvbnRleHRWYXI7CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tZXRob2REdXBsaWNhdGVzL01hcHBpbmdMb2NhbFZhcjJGaWVsZC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ldGhvZER1cGxpY2F0ZXMvTWFwcGluZ0xvY2FsVmFyMkZpZWxkLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzA3NzQ0OQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tZXRob2REdXBsaWNhdGVzL01hcHBpbmdMb2NhbFZhcjJGaWVsZC5qYXZhCkBAIC0wLDAgKzEsMTIgQEAKK2NsYXNzIE1hcHBpbmcgeworICBwcml2YXRlIE1hcHBpbmcgbXlNYXBwaW5nOworCisgIHB1YmxpYyB2b2lkIDxjYXJldD5tZXRob2QoKSB7CisgICAgTWFwcGluZyBtMiA9IG15TWFwcGluZzsKKyAgfQorCisgIHB1YmxpYyB2b2lkIGNvbnRleHQoKSB7CisgICAgTWFwcGluZyBtID0gbmV3IE1hcHBpbmcoKTsKKyAgICBNYXBwaW5nIG0yID0gbTsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ldGhvZER1cGxpY2F0ZXMvTWFwcGluZ0xvY2FsVmFyMkxvY2FsVmFyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWV0aG9kRHVwbGljYXRlcy9NYXBwaW5nTG9jYWxWYXIyTG9jYWxWYXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMGFiN2JiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ldGhvZER1cGxpY2F0ZXMvTWFwcGluZ0xvY2FsVmFyMkxvY2FsVmFyLmphdmEKQEAgLTAsMCArMSwxMSBAQAorY2xhc3MgTWFwcGluZyB7CisgIHB1YmxpYyB2b2lkIDxjYXJldD5tZXRob2QoKSB7CisgICAgTWFwcGluZyBtZXRob2RWYXIgPSBuZXcgTWFwcGluZygpOworICAgIG1ldGhvZFZhci5oYXNoQ29kZSgpOworICB9CisKKyAgcHVibGljIHZvaWQgY29udGV4dCgpIHsKKyAgICBNYXBwaW5nIGNvbnRleHRWYXIgPSBuZXcgTWFwcGluZygpOworICAgIGNvbnRleHRWYXIuaGFzaENvZGUoKTsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ldGhvZER1cGxpY2F0ZXMvTWFwcGluZ0xvY2FsVmFyMkxvY2FsVmFyLmphdmEuYWZ0ZXIgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWV0aG9kRHVwbGljYXRlcy9NYXBwaW5nTG9jYWxWYXIyTG9jYWxWYXIuamF2YS5hZnRlcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMjY5YWQ4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ldGhvZER1cGxpY2F0ZXMvTWFwcGluZ0xvY2FsVmFyMkxvY2FsVmFyLmphdmEuYWZ0ZXIKQEAgLTAsMCArMSwxMCBAQAorY2xhc3MgTWFwcGluZyB7CisgIHB1YmxpYyB2b2lkIG1ldGhvZCgpIHsKKyAgICBNYXBwaW5nIG1ldGhvZFZhciA9IG5ldyBNYXBwaW5nKCk7CisgICAgbWV0aG9kVmFyLmhhc2hDb2RlKCk7CisgIH0KKworICBwdWJsaWMgdm9pZCBjb250ZXh0KCkgeworICAgICAgbWV0aG9kKCk7CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tZXRob2REdXBsaWNhdGVzL01hcHBpbmdMb2NhbFZhcjJQYXJhbWV0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tZXRob2REdXBsaWNhdGVzL01hcHBpbmdMb2NhbFZhcjJQYXJhbWV0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43YzE5NmVjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ldGhvZER1cGxpY2F0ZXMvTWFwcGluZ0xvY2FsVmFyMlBhcmFtZXRlci5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKK2NsYXNzIE1hcHBpbmcgeworICBwdWJsaWMgdm9pZCA8Y2FyZXQ+bWV0aG9kKE1hcHBpbmcgbWV0aG9kUGFyKSB7CisgICAgbWV0aG9kUGFyLmhhc2hDb2RlKCk7CisgIH0KKworICBwdWJsaWMgdm9pZCBjb250ZXh0KCkgeworICAgIE1hcHBpbmcgY29udGV4dFZhciA9IG5ldyBNYXBwaW5nKCk7CisgICAgY29udGV4dFZhci5oYXNoQ29kZSgpOworICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWV0aG9kRHVwbGljYXRlcy9NYXBwaW5nTG9jYWxWYXIyUGFyYW1ldGVyLmphdmEuYWZ0ZXIgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWV0aG9kRHVwbGljYXRlcy9NYXBwaW5nTG9jYWxWYXIyUGFyYW1ldGVyLmphdmEuYWZ0ZXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDJhODRkNwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tZXRob2REdXBsaWNhdGVzL01hcHBpbmdMb2NhbFZhcjJQYXJhbWV0ZXIuamF2YS5hZnRlcgpAQCAtMCwwICsxLDEwIEBACitjbGFzcyBNYXBwaW5nIHsKKyAgcHVibGljIHZvaWQgbWV0aG9kKE1hcHBpbmcgbWV0aG9kUGFyKSB7CisgICAgbWV0aG9kUGFyLmhhc2hDb2RlKCk7CisgIH0KKworICBwdWJsaWMgdm9pZCBjb250ZXh0KCkgeworICAgIE1hcHBpbmcgY29udGV4dFZhciA9IG5ldyBNYXBwaW5nKCk7CisgICAgICBtZXRob2QoY29udGV4dFZhcik7CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tZXRob2REdXBsaWNhdGVzL01hcHBpbmdMb2NhbFZhcjJUaGlzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWV0aG9kRHVwbGljYXRlcy9NYXBwaW5nTG9jYWxWYXIyVGhpcy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc2NDQ5YzUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWV0aG9kRHVwbGljYXRlcy9NYXBwaW5nTG9jYWxWYXIyVGhpcy5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKK2NsYXNzIE1hcHBpbmcgeworICBwdWJsaWMgdm9pZCA8Y2FyZXQ+bWV0aG9kKCkgeworICAgIE1hcHBpbmcgbTIgPSB0aGlzOworICB9CisKKyAgcHVibGljIHZvaWQgY29udGV4dCgpIHsKKyAgICBNYXBwaW5nIG0gPSBuZXcgTWFwcGluZygpOworICAgIE1hcHBpbmcgbTIgPSBtOworICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWV0aG9kRHVwbGljYXRlcy9NYXBwaW5nTWVtYmVyMk1lbWJlckRpZmZlcmVudC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ldGhvZER1cGxpY2F0ZXMvTWFwcGluZ01lbWJlcjJNZW1iZXJEaWZmZXJlbnQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMTUyZDk4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ldGhvZER1cGxpY2F0ZXMvTWFwcGluZ01lbWJlcjJNZW1iZXJEaWZmZXJlbnQuamF2YQpAQCAtMCwwICsxLDEwIEBACitjbGFzcyBNYXBwaW5nIHsKKyAgcHVibGljIHZvaWQgPGNhcmV0Pm1ldGhvZCgpIHsKKyAgICB0b1N0cmluZygpOworICB9CisKKyAgcHVibGljIHZvaWQgY29udGV4dCgpIHsKKyAgICBNYXBwaW5nIG0gPSBuZXcgTWFwcGluZygpOworICAgIG0udG9TdHJpbmcoKTsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ldGhvZER1cGxpY2F0ZXMvTWFwcGluZ01lbWJlcjJNZW1iZXJEaWZmZXJlbnQuamF2YS5hZnRlciBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tZXRob2REdXBsaWNhdGVzL01hcHBpbmdNZW1iZXIyTWVtYmVyRGlmZmVyZW50LmphdmEuYWZ0ZXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjkxNTllOAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tZXRob2REdXBsaWNhdGVzL01hcHBpbmdNZW1iZXIyTWVtYmVyRGlmZmVyZW50LmphdmEuYWZ0ZXIKQEAgLTAsMCArMSwxMCBAQAorY2xhc3MgTWFwcGluZyB7CisgIHB1YmxpYyB2b2lkIG1ldGhvZCgpIHsKKyAgICB0b1N0cmluZygpOworICB9CisKKyAgcHVibGljIHZvaWQgY29udGV4dCgpIHsKKyAgICBNYXBwaW5nIG0gPSBuZXcgTWFwcGluZygpOworICAgICAgbS5tZXRob2QoKTsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ldGhvZER1cGxpY2F0ZXMvTWFwcGluZ1BhcmFtZXRlcjJGaWVsZC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ldGhvZER1cGxpY2F0ZXMvTWFwcGluZ1BhcmFtZXRlcjJGaWVsZC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk5ODZkMjAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWV0aG9kRHVwbGljYXRlcy9NYXBwaW5nUGFyYW1ldGVyMkZpZWxkLmphdmEKQEAgLTAsMCArMSwxMSBAQAorY2xhc3MgTWFwcGluZyB7CisgIHByaXZhdGUgTWFwcGluZyBteU1hcHBpbmc7CisKKyAgcHVibGljIHZvaWQgPGNhcmV0Pm1ldGhvZCgpIHsKKyAgICBNYXBwaW5nIG0yID0gbXlNYXBwaW5nOworICB9CisKKyAgcHVibGljIHZvaWQgY29udGV4dChNYXBwaW5nIG0pIHsKKyAgICBNYXBwaW5nIG0yID0gbTsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ldGhvZER1cGxpY2F0ZXMvTWFwcGluZ1BhcmFtZXRlcjJMb2NhbFZhci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ldGhvZER1cGxpY2F0ZXMvTWFwcGluZ1BhcmFtZXRlcjJMb2NhbFZhci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYxZmQyMmEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWV0aG9kRHVwbGljYXRlcy9NYXBwaW5nUGFyYW1ldGVyMkxvY2FsVmFyLmphdmEKQEAgLTAsMCArMSwxMCBAQAorY2xhc3MgTWFwcGluZyB7CisgIHB1YmxpYyB2b2lkIDxjYXJldD5tZXRob2QoKSB7CisgICAgTWFwcGluZyBtID0gbmV3IE1hcHBpbmcoKTsKKyAgICBNYXBwaW5nIG0yID0gbTsKKyAgfQorCisgIHB1YmxpYyB2b2lkIGNvbnRleHQoTWFwcGluZyBtKSB7CisgICAgTWFwcGluZyBtMiA9IG07CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tZXRob2REdXBsaWNhdGVzL01hcHBpbmdQYXJhbWV0ZXIyUGFyYW1ldGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWV0aG9kRHVwbGljYXRlcy9NYXBwaW5nUGFyYW1ldGVyMlBhcmFtZXRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI5OGNiMTgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWV0aG9kRHVwbGljYXRlcy9NYXBwaW5nUGFyYW1ldGVyMlBhcmFtZXRlci5qYXZhCkBAIC0wLDAgKzEsOSBAQAorY2xhc3MgTWFwcGluZyB7CisgIHB1YmxpYyB2b2lkIDxjYXJldD5tZXRob2QoTWFwcGluZyBtZXRob2RNYXBwaW5nKSB7CisgICAgbWV0aG9kTWFwcGluZy5oYXNoQ29kZSgpOworICB9CisKKyAgcHVibGljIHZvaWQgY29udGV4dChNYXBwaW5nIGNvbnRleHRNYXBwaW5nKSB7CisgICAgY29udGV4dE1hcHBpbmcuaGFzaENvZGUoKTsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ldGhvZER1cGxpY2F0ZXMvTWFwcGluZ1BhcmFtZXRlcjJQYXJhbWV0ZXIuamF2YS5hZnRlciBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tZXRob2REdXBsaWNhdGVzL01hcHBpbmdQYXJhbWV0ZXIyUGFyYW1ldGVyLmphdmEuYWZ0ZXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTE1YzIzNAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tZXRob2REdXBsaWNhdGVzL01hcHBpbmdQYXJhbWV0ZXIyUGFyYW1ldGVyLmphdmEuYWZ0ZXIKQEAgLTAsMCArMSw5IEBACitjbGFzcyBNYXBwaW5nIHsKKyAgcHVibGljIHZvaWQgPGNhcmV0Pm1ldGhvZChNYXBwaW5nIG1ldGhvZE1hcHBpbmcpIHsKKyAgICBtZXRob2RNYXBwaW5nLmhhc2hDb2RlKCk7CisgIH0KKworICBwdWJsaWMgdm9pZCBjb250ZXh0KE1hcHBpbmcgY29udGV4dE1hcHBpbmcpIHsKKyAgICAgIG1ldGhvZChjb250ZXh0TWFwcGluZyk7CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tZXRob2REdXBsaWNhdGVzL01hcHBpbmdQYXJhbWV0ZXIyVGhpcy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ldGhvZER1cGxpY2F0ZXMvTWFwcGluZ1BhcmFtZXRlcjJUaGlzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzRhMmQxMgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tZXRob2REdXBsaWNhdGVzL01hcHBpbmdQYXJhbWV0ZXIyVGhpcy5qYXZhCkBAIC0wLDAgKzEsOSBAQAorY2xhc3MgTWFwcGluZyB7CisgIHB1YmxpYyB2b2lkIDxjYXJldD5tZXRob2QoKSB7CisgICAgTWFwcGluZyBtMiA9IHRoaXM7CisgIH0KKworICBwdWJsaWMgdm9pZCBjb250ZXh0KE1hcHBpbmcgbSkgeworICAgIE1hcHBpbmcgbTIgPSBtOworICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWV0aG9kRHVwbGljYXRlcy9NYXBwaW5nVGhpczJGaWVsZC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ldGhvZER1cGxpY2F0ZXMvTWFwcGluZ1RoaXMyRmllbGQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNmUyMzVkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ldGhvZER1cGxpY2F0ZXMvTWFwcGluZ1RoaXMyRmllbGQuamF2YQpAQCAtMCwwICsxLDE2IEBACitjbGFzcyBNYXBwaW5nIHsKKyAgcHJpdmF0ZSBpbnQgbXlJbnQ7CisgIHByaXZhdGUgTWFwcGluZyBteUZpZWxkOworCisgIHB1YmxpYyB2b2lkIDxjYXJldD5tZXRob2QoKSB7CisgICAgbXlJbnQgPSBteUZpZWxkLmhhc2hDb2RlKCk7CisgIH0KKworICBwdWJsaWMgdm9pZCBjb250ZXh0MSgpIHsKKyAgICBteUludCA9IGhhc2hDb2RlKCk7CisgIH0KKworICBwdWJsaWMgdm9pZCBjb250ZXh0MigpIHsKKyAgICBteUludCA9IHRoaXMuaGFzaENvZGUoKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tZXRob2REdXBsaWNhdGVzL01hcHBpbmdUaGlzMkxvY2FsVmFyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWV0aG9kRHVwbGljYXRlcy9NYXBwaW5nVGhpczJMb2NhbFZhci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBjMGM4OGIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWV0aG9kRHVwbGljYXRlcy9NYXBwaW5nVGhpczJMb2NhbFZhci5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKK2NsYXNzIE1hcHBpbmcgeworICBwcml2YXRlIGludCBteUludDsKKyAgcHVibGljIHZvaWQgPGNhcmV0Pm1ldGhvZCgpIHsKKyAgICBNYXBwaW5nIG0gPSBuZXcgTWFwcGluZygpOworICAgIG15SW50ICs9IG0uaGFzaENvZGUoKTsKKyAgfQorICBwdWJsaWMgdm9pZCBjb250ZXh0KCkgeworICAgIG15SW50ICs9IGhhc2hDb2RlKCk7ICAKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tZXRob2REdXBsaWNhdGVzL01hcHBpbmdUaGlzMlBhcmFtZXRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ldGhvZER1cGxpY2F0ZXMvTWFwcGluZ1RoaXMyUGFyYW1ldGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWY5MGM2NQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tZXRob2REdXBsaWNhdGVzL01hcHBpbmdUaGlzMlBhcmFtZXRlci5qYXZhCkBAIC0wLDAgKzEsMTYgQEAKK2NsYXNzIE1hcHBpbmcgeworICBwcml2YXRlIGludCBteUludDsKKyAgcHJpdmF0ZSBNYXBwaW5nIG15RmllbGQ7CisKKyAgcHVibGljIHZvaWQgPGNhcmV0Pm1ldGhvZChNYXBwaW5nIG0pIHsKKyAgICBteUludCA9IG0uaGFzaENvZGUoKTsKKyAgfQorCisgIHB1YmxpYyB2b2lkIGNvbnRleHQxKCkgeworICAgIG15SW50ID0gaGFzaENvZGUoKTsKKyAgfQorCisgIHB1YmxpYyB2b2lkIGNvbnRleHQyKCkgeworICAgIG15SW50ID0gdGhpcy5oYXNoQ29kZSgpOworICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWV0aG9kRHVwbGljYXRlcy9NYXBwaW5nVGhpczJQYXJhbWV0ZXIuamF2YS5hZnRlciBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tZXRob2REdXBsaWNhdGVzL01hcHBpbmdUaGlzMlBhcmFtZXRlci5qYXZhLmFmdGVyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjljZDJhYzQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWV0aG9kRHVwbGljYXRlcy9NYXBwaW5nVGhpczJQYXJhbWV0ZXIuamF2YS5hZnRlcgpAQCAtMCwwICsxLDE2IEBACitjbGFzcyBNYXBwaW5nIHsKKyAgcHJpdmF0ZSBpbnQgbXlJbnQ7CisgIHByaXZhdGUgTWFwcGluZyBteUZpZWxkOworCisgIHB1YmxpYyB2b2lkIG1ldGhvZChNYXBwaW5nIG0pIHsKKyAgICBteUludCA9IG0uaGFzaENvZGUoKTsKKyAgfQorCisgIHB1YmxpYyB2b2lkIGNvbnRleHQxKCkgeworICAgICAgbWV0aG9kKE1hcHBpbmcudGhpcyk7CisgIH0KKworICBwdWJsaWMgdm9pZCBjb250ZXh0MigpIHsKKyAgICAgIG1ldGhvZCh0aGlzKTsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ldGhvZER1cGxpY2F0ZXMvTWFwcGluZ1RoaXMyVGhpc0RpZmZlcmVudC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ldGhvZER1cGxpY2F0ZXMvTWFwcGluZ1RoaXMyVGhpc0RpZmZlcmVudC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM5OWRiOGUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWV0aG9kRHVwbGljYXRlcy9NYXBwaW5nVGhpczJUaGlzRGlmZmVyZW50LmphdmEKQEAgLTAsMCArMSwxNiBAQAorY2xhc3MgTWFwcGluZzEgeworICBwcml2YXRlIGludCBteUludDsKKyAgcHVibGljIHZvaWQgPGNhcmV0Pm1ldGhvZCgpIHsKKyAgICBPYmplY3QgbyA9IHRoaXM7CisgIH0KKyAgcHVibGljIHZvaWQgY29udGV4dCgpIHsKKyAgICBPYmplY3QgbyA9IHRoaXM7CisgIH0KK30KKworY2xhc3MgTWFwcGluZzIgeworICBwcml2YXRlIGludCBteUludDsKKyAgcHVibGljIHZvaWQgY29udGV4dCgpIHsKKyAgICBPYmplY3QgbyA9IHRoaXM7CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tZXRob2REdXBsaWNhdGVzL01hcHBpbmdUaGlzMlRoaXNEaWZmZXJlbnQuamF2YS5hZnRlciBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tZXRob2REdXBsaWNhdGVzL01hcHBpbmdUaGlzMlRoaXNEaWZmZXJlbnQuamF2YS5hZnRlcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMTI4NWY1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ldGhvZER1cGxpY2F0ZXMvTWFwcGluZ1RoaXMyVGhpc0RpZmZlcmVudC5qYXZhLmFmdGVyCkBAIC0wLDAgKzEsMTYgQEAKK2NsYXNzIE1hcHBpbmcxIHsKKyAgcHJpdmF0ZSBpbnQgbXlJbnQ7CisgIHB1YmxpYyB2b2lkIG1ldGhvZCgpIHsKKyAgICBPYmplY3QgbyA9IHRoaXM7CisgIH0KKyAgcHVibGljIHZvaWQgY29udGV4dCgpIHsKKyAgICAgIG1ldGhvZCgpOworICB9Cit9CisKK2NsYXNzIE1hcHBpbmcyIHsKKyAgcHJpdmF0ZSBpbnQgbXlJbnQ7CisgIHB1YmxpYyB2b2lkIGNvbnRleHQoKSB7CisgICAgT2JqZWN0IG8gPSB0aGlzOworICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWV0aG9kRHVwbGljYXRlcy9NYXBwaW5nVGhpczJUaGlzUXVhbGlmaWVkLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWV0aG9kRHVwbGljYXRlcy9NYXBwaW5nVGhpczJUaGlzUXVhbGlmaWVkLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzEwYjliNwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tZXRob2REdXBsaWNhdGVzL01hcHBpbmdUaGlzMlRoaXNRdWFsaWZpZWQuamF2YQpAQCAtMCwwICsxLDE1IEBACitjbGFzcyBNYXBwaW5nIHsKKyAgcHJpdmF0ZSBpbnQgbXlJbnQ7CisKKyAgcHVibGljIHZvaWQgPGNhcmV0Pm1ldGhvZCgpIHsKKyAgICB0aGlzLm15SW50Kys7CisgICAgTWFwcGluZy50aGlzLm15SW50LS07CisgICAgbXlJbnQgKz0gaGFzaENvZGUoKTsKKyAgfQorCisgIHB1YmxpYyB2b2lkIGNvbnRleHQoKSB7CisgICAgbXlJbnQrKzsKKyAgICB0aGlzLm15SW50LS07CisgICAgbXlJbnQgKz0gaGFzaENvZGUoKTsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ldGhvZER1cGxpY2F0ZXMvTWFwcGluZ1RoaXMyVGhpc1F1YWxpZmllZC5qYXZhLmFmdGVyIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ldGhvZER1cGxpY2F0ZXMvTWFwcGluZ1RoaXMyVGhpc1F1YWxpZmllZC5qYXZhLmFmdGVyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE2MjI4MjgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWV0aG9kRHVwbGljYXRlcy9NYXBwaW5nVGhpczJUaGlzUXVhbGlmaWVkLmphdmEuYWZ0ZXIKQEAgLTAsMCArMSwxMyBAQAorY2xhc3MgTWFwcGluZyB7CisgIHByaXZhdGUgaW50IG15SW50OworCisgIHB1YmxpYyB2b2lkIG1ldGhvZCgpIHsKKyAgICB0aGlzLm15SW50Kys7CisgICAgTWFwcGluZy50aGlzLm15SW50LS07CisgICAgbXlJbnQgKz0gaGFzaENvZGUoKTsKKyAgfQorCisgIHB1YmxpYyB2b2lkIGNvbnRleHQoKSB7CisgICAgICBtZXRob2QoKTsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ldGhvZER1cGxpY2F0ZXMvUG9zdEZyYWdtZW50VXNhZ2UuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tZXRob2REdXBsaWNhdGVzL1Bvc3RGcmFnbWVudFVzYWdlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTFjMThiOQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tZXRob2REdXBsaWNhdGVzL1Bvc3RGcmFnbWVudFVzYWdlLmphdmEKQEAgLTAsMCArMSw0MyBAQAorY2xhc3MgUG9zdCB7CisgIHByaXZhdGUgaW50IG15RmllbGQ7CisKKyAgcHVibGljIGludCA8Y2FyZXQ+bWV0aG9kKGludCBwYXJhbSwgaW50IHZhckZyZWUpIHsKKyAgICBpbnQgdmFySW5jYXBzdWxhdGVkID0gMjsKKyAgICByZXR1cm4gdmFyRnJlZSArIHZhckluY2Fwc3VsYXRlZCArIHBhcmFtICsgbXlGaWVsZCArIHRoaXMuaGFzaENvZGUoKTsKKyAgfQorCisgIHB1YmxpYyB2b2lkIGNvbnRleHRWYXJGcmVlKGludCBwYXJhbSkgeworICAgIGludCB2YXJGcmVlID0gMTsKKyAgICBpbnQgdmFySW5jYXBzdWxhdGVkID0gMjsKKyAgICBpbnQgdmFyID0gdmFyRnJlZSArIHZhckluY2Fwc3VsYXRlZCArIHBhcmFtICsgbXlGaWVsZCArIHRoaXMuaGFzaENvZGUoKTsKKyAgICBpbnQgdmFyUG9zdCA9IHZhckZyZWU7CisgIH0KKworICBwdWJsaWMgdm9pZCBjb250ZXh0VmFySW5jYXBzdWxhdGVkKGludCBwYXJhbSkgeworICAgIGludCB2YXJGcmVlID0gMTsKKyAgICBpbnQgdmFySW5jYXBzdWxhdGVkID0gMjsKKyAgICBpbnQgdmFyID0gdmFyRnJlZSArIHZhckluY2Fwc3VsYXRlZCArIHBhcmFtICsgbXlGaWVsZCArIHRoaXMuaGFzaENvZGUoKTsKKyAgICBpbnQgdmFyUG9zdCA9IHZhckluY2Fwc3VsYXRlZDsKKyAgfQorCisgIHB1YmxpYyB2b2lkIGNvbnRleHRQYXJhbShpbnQgcGFyYW0pIHsKKyAgICBpbnQgdmFyRnJlZSA9IDE7CisgICAgaW50IHZhckluY2Fwc3VsYXRlZCA9IDI7CisgICAgaW50IHZhciA9IHZhckZyZWUgKyB2YXJJbmNhcHN1bGF0ZWQgKyBwYXJhbSArIG15RmllbGQgKyB0aGlzLmhhc2hDb2RlKCk7CisgICAgaW50IHZhclBvc3QgPSBwYXJhbTsKKyAgfQorCisgIHB1YmxpYyB2b2lkIGNvbnRleHRGaWVsZChpbnQgcGFyYW0pIHsKKyAgICBpbnQgdmFyRnJlZSA9IDE7CisgICAgaW50IHZhckluY2Fwc3VsYXRlZCA9IDI7CisgICAgaW50IHZhciA9IHZhckZyZWUgKyB2YXJJbmNhcHN1bGF0ZWQgKyBwYXJhbSArIG15RmllbGQgKyB0aGlzLmhhc2hDb2RlKCk7CisgICAgaW50IHZhclBvc3QgPSBteUZpZWxkOworICB9CisKKyAgcHVibGljIHZvaWQgY29udGV4dFRoaXMoaW50IHBhcmFtKSB7CisgICAgaW50IHZhckZyZWUgPSAxOworICAgIGludCB2YXJJbmNhcHN1bGF0ZWQgPSAyOworICAgIGludCB2YXIgPSB2YXJGcmVlICsgdmFySW5jYXBzdWxhdGVkICsgcGFyYW0gKyBteUZpZWxkICsgdGhpcy5oYXNoQ29kZSgpOworICAgIGludCB2YXJQb3N0ID0gdGhpcy5oYXNoQ29kZSgpOworICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWV0aG9kRHVwbGljYXRlcy9Qb3N0RnJhZ21lbnRVc2FnZS5qYXZhLmFmdGVyIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ldGhvZER1cGxpY2F0ZXMvUG9zdEZyYWdtZW50VXNhZ2UuamF2YS5hZnRlcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mODdiNDcwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ldGhvZER1cGxpY2F0ZXMvUG9zdEZyYWdtZW50VXNhZ2UuamF2YS5hZnRlcgpAQCAtMCwwICsxLDM5IEBACitjbGFzcyBQb3N0IHsKKyAgcHJpdmF0ZSBpbnQgbXlGaWVsZDsKKworICBwdWJsaWMgaW50IG1ldGhvZChpbnQgcGFyYW0sIGludCB2YXJGcmVlKSB7CisgICAgaW50IHZhckluY2Fwc3VsYXRlZCA9IDI7CisgICAgcmV0dXJuIHZhckZyZWUgKyB2YXJJbmNhcHN1bGF0ZWQgKyBwYXJhbSArIG15RmllbGQgKyB0aGlzLmhhc2hDb2RlKCk7CisgIH0KKworICBwdWJsaWMgdm9pZCBjb250ZXh0VmFyRnJlZShpbnQgcGFyYW0pIHsKKyAgICBpbnQgdmFyRnJlZSA9IDE7CisgICAgICBpbnQgdmFyID0gbWV0aG9kKHBhcmFtLCB2YXJGcmVlKTsKKyAgICBpbnQgdmFyUG9zdCA9IHZhckZyZWU7CisgIH0KKworICBwdWJsaWMgdm9pZCBjb250ZXh0VmFySW5jYXBzdWxhdGVkKGludCBwYXJhbSkgeworICAgIGludCB2YXJGcmVlID0gMTsKKyAgICBpbnQgdmFySW5jYXBzdWxhdGVkID0gMjsKKyAgICBpbnQgdmFyID0gdmFyRnJlZSArIHZhckluY2Fwc3VsYXRlZCArIHBhcmFtICsgbXlGaWVsZCArIHRoaXMuaGFzaENvZGUoKTsKKyAgICBpbnQgdmFyUG9zdCA9IHZhckluY2Fwc3VsYXRlZDsKKyAgfQorCisgIHB1YmxpYyB2b2lkIGNvbnRleHRQYXJhbShpbnQgcGFyYW0pIHsKKyAgICBpbnQgdmFyRnJlZSA9IDE7CisgICAgICBpbnQgdmFyID0gbWV0aG9kKHBhcmFtLCB2YXJGcmVlKTsKKyAgICBpbnQgdmFyUG9zdCA9IHBhcmFtOworICB9CisKKyAgcHVibGljIHZvaWQgY29udGV4dEZpZWxkKGludCBwYXJhbSkgeworICAgIGludCB2YXJGcmVlID0gMTsKKyAgICAgIGludCB2YXIgPSBtZXRob2QocGFyYW0sIHZhckZyZWUpOworICAgIGludCB2YXJQb3N0ID0gbXlGaWVsZDsKKyAgfQorCisgIHB1YmxpYyB2b2lkIGNvbnRleHRUaGlzKGludCBwYXJhbSkgeworICAgIGludCB2YXJGcmVlID0gMTsKKyAgICAgIGludCB2YXIgPSBtZXRob2QocGFyYW0sIHZhckZyZWUpOworICAgIGludCB2YXJQb3N0ID0gdGhpcy5oYXNoQ29kZSgpOworICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWV0aG9kRHVwbGljYXRlcy9SZWZSZXBsYWNlbWVudC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ldGhvZER1cGxpY2F0ZXMvUmVmUmVwbGFjZW1lbnQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNjY4ZDJhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ldGhvZER1cGxpY2F0ZXMvUmVmUmVwbGFjZW1lbnQuamF2YQpAQCAtMCwwICsxLDEzIEBACitjbGFzcyBUZXN0IHsKKyAgc3RhdGljIHZvaWQgPGNhcmV0Pm1haW4oVGVzdCB0KXsKKyAgICBpZiAodHJ1ZSkgdC5mb28oKTsKKyAgfQorCisgIHZvaWQgZm9vKCl7fQorfQorCitjbGFzcyBUZXN0MSB7CisgIHZvaWQgYmFyKFRlc3QgdCkgeworICAgIGlmICh0cnVlKSB7dC5mb28oKTt9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWV0aG9kRHVwbGljYXRlcy9SZWZSZXBsYWNlbWVudC5qYXZhLmFmdGVyIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ldGhvZER1cGxpY2F0ZXMvUmVmUmVwbGFjZW1lbnQuamF2YS5hZnRlcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MjY0NTMzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ldGhvZER1cGxpY2F0ZXMvUmVmUmVwbGFjZW1lbnQuamF2YS5hZnRlcgpAQCAtMCwwICsxLDEzIEBACitjbGFzcyBUZXN0IHsKKyAgc3RhdGljIHZvaWQgbWFpbihUZXN0IHQpeworICAgIGlmICh0cnVlKSB0LmZvbygpOworICB9CisKKyAgdm9pZCBmb28oKXt9Cit9CisKK2NsYXNzIFRlc3QxIHsKKyAgdm9pZCBiYXIoVGVzdCB0KSB7CisgICAgICBUZXN0Lm1haW4odCk7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWV0aG9kRHVwbGljYXRlcy9SZWZSZXBsYWNlbWVudDEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tZXRob2REdXBsaWNhdGVzL1JlZlJlcGxhY2VtZW50MS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVmNzcyYzAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWV0aG9kRHVwbGljYXRlcy9SZWZSZXBsYWNlbWVudDEuamF2YQpAQCAtMCwwICsxLDEzIEBACitjbGFzcyBUZXN0IHsKKyAgICB2b2lkIGJhcigpIHt9CisKKyAgICBwdWJsaWMgdm9pZCBtYWluKCkgeworICAgICAgICBiYXIoKTsKKyAgICB9Cit9CisKK2NsYXNzIFRlc3QxIHsKKyAgdm9pZCA8Y2FyZXQ+Zm9vKFRlc3QgdCkgeworICAgICAgdC5iYXIoKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tZXRob2REdXBsaWNhdGVzL1JlZlJlcGxhY2VtZW50MS5qYXZhLmFmdGVyIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ldGhvZER1cGxpY2F0ZXMvUmVmUmVwbGFjZW1lbnQxLmphdmEuYWZ0ZXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTc4MTBkMgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tZXRob2REdXBsaWNhdGVzL1JlZlJlcGxhY2VtZW50MS5qYXZhLmFmdGVyCkBAIC0wLDAgKzEsMTMgQEAKK2NsYXNzIFRlc3QgeworICAgIHZvaWQgYmFyKCkge30KKworICAgIHB1YmxpYyB2b2lkIG1haW4oKSB7CisgICAgICAgIFRlc3QxLmZvbyhUZXN0LnRoaXMpOworICAgIH0KK30KKworY2xhc3MgVGVzdDEgeworICBzdGF0aWMgdm9pZCBmb28oVGVzdCB0KSB7CisgICAgICB0LmJhcigpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ldGhvZER1cGxpY2F0ZXMvUmV0dXJuRXhwcmVzc2lvbi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ldGhvZER1cGxpY2F0ZXMvUmV0dXJuRXhwcmVzc2lvbi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM0NjAyODUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWV0aG9kRHVwbGljYXRlcy9SZXR1cm5FeHByZXNzaW9uLmphdmEKQEAgLTAsMCArMSwzMiBAQAorY2xhc3MgUmV0dXJuIHsKKyAgcHJpdmF0ZSBSZXR1cm4gbXlSZXR1cm47CisgIHB1YmxpYyBSZXR1cm4gZ2V0UmV0dXJuKCkgeworICAgIHJldHVybiBteVJldHVybjsKKyAgfQorICBwcml2YXRlIGludCBteUludDsKKworICBwdWJsaWMgUmV0dXJuIDxjYXJldD5tZXRob2QoKSB7CisgICAgUmV0dXJuIHIgPSBuZXcgUmV0dXJuKCk7CisgICAgci5teUludCA+Pj0gMTsKKyAgICByZXR1cm4gci5nZXRSZXR1cm4oKTsKKyAgfQorCisgIHB1YmxpYyB2b2lkIGNvbnRleHRMVmFsdWUoKSB7CisgICAgLy8gQ291bGQgYmUgcHJvY2Vzc2VkLCBidXQgbm93IGl0IGlzIG5vdC4KKyAgICBSZXR1cm4gciA9IG5ldyBSZXR1cm4oKTsKKyAgICByLm15SW50ID4+PSAxOworICAgIHIuZ2V0UmV0dXJuKCkubXlJbnQgPSAwOworICB9CisKKyAgcHVibGljIHZvaWQgY29udGV4dE5vVXNhZ2UoKSB7CisgICAgLy8gQ291bGQgYmUgcHJvY2Vzc2VkLCBidXQgbm93IGl0IGlzIG5vdC4KKyAgICBSZXR1cm4gciA9IG5ldyBSZXR1cm4oKTsKKyAgICByLm15SW50ID4+PSAxOworICB9CisKKyAgcHVibGljIHZvaWQgY29udGV4dFJWYWx1ZSgpIHsKKyAgICBSZXR1cm4gciA9IG5ldyBSZXR1cm4oKTsKKyAgICByLm15SW50ID4+PSAxOworICAgIFJldHVybiByMiA9IHIuZ2V0UmV0dXJuKCk7CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tZXRob2REdXBsaWNhdGVzL1JldHVybkV4cHJlc3Npb24uamF2YS5hZnRlciBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tZXRob2REdXBsaWNhdGVzL1JldHVybkV4cHJlc3Npb24uamF2YS5hZnRlcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMjdiMTQ4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ldGhvZER1cGxpY2F0ZXMvUmV0dXJuRXhwcmVzc2lvbi5qYXZhLmFmdGVyCkBAIC0wLDAgKzEsMzAgQEAKK2NsYXNzIFJldHVybiB7CisgIHByaXZhdGUgUmV0dXJuIG15UmV0dXJuOworICBwdWJsaWMgUmV0dXJuIGdldFJldHVybigpIHsKKyAgICByZXR1cm4gbXlSZXR1cm47CisgIH0KKyAgcHJpdmF0ZSBpbnQgbXlJbnQ7CisKKyAgcHVibGljIFJldHVybiBtZXRob2QoKSB7CisgICAgUmV0dXJuIHIgPSBuZXcgUmV0dXJuKCk7CisgICAgci5teUludCA+Pj0gMTsKKyAgICByZXR1cm4gci5nZXRSZXR1cm4oKTsKKyAgfQorCisgIHB1YmxpYyB2b2lkIGNvbnRleHRMVmFsdWUoKSB7CisgICAgLy8gQ291bGQgYmUgcHJvY2Vzc2VkLCBidXQgbm93IGl0IGlzIG5vdC4KKyAgICBSZXR1cm4gciA9IG5ldyBSZXR1cm4oKTsKKyAgICByLm15SW50ID4+PSAxOworICAgIHIuZ2V0UmV0dXJuKCkubXlJbnQgPSAwOworICB9CisKKyAgcHVibGljIHZvaWQgY29udGV4dE5vVXNhZ2UoKSB7CisgICAgLy8gQ291bGQgYmUgcHJvY2Vzc2VkLCBidXQgbm93IGl0IGlzIG5vdC4KKyAgICBSZXR1cm4gciA9IG5ldyBSZXR1cm4oKTsKKyAgICByLm15SW50ID4+PSAxOworICB9CisKKyAgcHVibGljIHZvaWQgY29udGV4dFJWYWx1ZSgpIHsKKyAgICAgIFJldHVybiByMiA9IG1ldGhvZCgpOworICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWV0aG9kRHVwbGljYXRlcy9SZXR1cm5FeHByZXNzaW9uRGlmZmVyZW50LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWV0aG9kRHVwbGljYXRlcy9SZXR1cm5FeHByZXNzaW9uRGlmZmVyZW50LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzBiYzZiYjAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWV0aG9kRHVwbGljYXRlcy9SZXR1cm5FeHByZXNzaW9uRGlmZmVyZW50LmphdmEKQEAgLTAsMCArMSwxMiBAQAorY2xhc3MgUmV0dXJuRXhwcmVzc2lvbiB7CisgIGludCA8Y2FyZXQ+YmFyKFN0cmluZyBzKSB7CisgICAgcyA9IHMgKyAiIjsKKyAgICByZXR1cm4gcy5sZW5ndGgoKTsKKyAgfQorCisgIHZvaWQgZm9vKCkgeworICAgIFN0cmluZyBzMSA9ICIiOworICAgIHMxID0gczEgKyAiIjsKKyAgICBTeXN0ZW0ub3V0LnByaW50bG4oczEpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ldGhvZER1cGxpY2F0ZXMvUmV0dXJuRmllbGQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tZXRob2REdXBsaWNhdGVzL1JldHVybkZpZWxkLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTQ1YTU2YgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tZXRob2REdXBsaWNhdGVzL1JldHVybkZpZWxkLmphdmEKQEAgLTAsMCArMSwzMyBAQAorY2xhc3MgUmV0dXJuIHsKKyAgcHJpdmF0ZSBSZXR1cm4gbXlSZXR1cm47CisgIHByaXZhdGUgaW50IG15SW50OworCisgIHB1YmxpYyBSZXR1cm4gPGNhcmV0Pm1ldGhvZCgpIHsKKyAgICBteVJldHVybiA9IG5ldyBSZXR1cm4oKTsKKyAgICBteVJldHVybi5teUludCsrOworICAgIHJldHVybiBteVJldHVybjsKKyAgfQorCisgIHB1YmxpYyB2b2lkIGNvbnRleHRMVmFsdWUoKSB7CisgICAgbXlSZXR1cm4gPSBuZXcgUmV0dXJuKCk7CisgICAgbXlSZXR1cm4ubXlJbnQrKzsKKyAgICBteVJldHVybiA9IG51bGw7CisgIH0KKworICBwdWJsaWMgdm9pZCBjb250ZXh0Tm9Vc2FnZSgpIHsKKyAgICBteVJldHVybiA9IG5ldyBSZXR1cm4oKTsKKyAgICBteVJldHVybi5teUludCsrOworICB9CisKKyAgcHVibGljIHZvaWQgY29udGV4dFJWYWx1ZSgpIHsKKyAgICBteVJldHVybiA9IG5ldyBSZXR1cm4oKTsKKyAgICBteVJldHVybi5teUludCsrOworICAgIFJldHVybiByID0gbXlSZXR1cm47CisgIH0KKworICBwdWJsaWMgdm9pZCBjb250ZXh0UlZhbHVlUXVhbGlmaWVkKCkgeworICAgIG15UmV0dXJuID0gbmV3IFJldHVybigpOworICAgIG15UmV0dXJuLm15SW50Kys7CisgICAgUmV0dXJuIHIgPSB0aGlzLm15UmV0dXJuOworICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWV0aG9kRHVwbGljYXRlcy9SZXR1cm5GaWVsZC5qYXZhLmFmdGVyIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ldGhvZER1cGxpY2F0ZXMvUmV0dXJuRmllbGQuamF2YS5hZnRlcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNzU5OWNmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ldGhvZER1cGxpY2F0ZXMvUmV0dXJuRmllbGQuamF2YS5hZnRlcgpAQCAtMCwwICsxLDI5IEBACitjbGFzcyBSZXR1cm4geworICBwcml2YXRlIFJldHVybiBteVJldHVybjsKKyAgcHJpdmF0ZSBpbnQgbXlJbnQ7CisKKyAgcHVibGljIFJldHVybiBtZXRob2QoKSB7CisgICAgbXlSZXR1cm4gPSBuZXcgUmV0dXJuKCk7CisgICAgbXlSZXR1cm4ubXlJbnQrKzsKKyAgICByZXR1cm4gbXlSZXR1cm47CisgIH0KKworICBwdWJsaWMgdm9pZCBjb250ZXh0TFZhbHVlKCkgeworICAgICAgbXlSZXR1cm4gPSBtZXRob2QoKTsKKyAgICBteVJldHVybiA9IG51bGw7CisgIH0KKworICBwdWJsaWMgdm9pZCBjb250ZXh0Tm9Vc2FnZSgpIHsKKyAgICAgIG15UmV0dXJuID0gbWV0aG9kKCk7CisgIH0KKworICBwdWJsaWMgdm9pZCBjb250ZXh0UlZhbHVlKCkgeworICAgICAgbXlSZXR1cm4gPSBtZXRob2QoKTsKKyAgICBSZXR1cm4gciA9IG15UmV0dXJuOworICB9CisKKyAgcHVibGljIHZvaWQgY29udGV4dFJWYWx1ZVF1YWxpZmllZCgpIHsKKyAgICAgIG15UmV0dXJuID0gbWV0aG9kKCk7CisgICAgUmV0dXJuIHIgPSB0aGlzLm15UmV0dXJuOworICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWV0aG9kRHVwbGljYXRlcy9SZXR1cm5Mb2NhbFZhci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ldGhvZER1cGxpY2F0ZXMvUmV0dXJuTG9jYWxWYXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNDkwYzk0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ldGhvZER1cGxpY2F0ZXMvUmV0dXJuTG9jYWxWYXIuamF2YQpAQCAtMCwwICsxLDI3IEBACitjbGFzcyBSZXR1cm4geworICBwcml2YXRlIFJldHVybiBteVJldHVybjsKKyAgcHJpdmF0ZSBpbnQgbXlJbnQ7CisKKyAgcHVibGljIFJldHVybiA8Y2FyZXQ+bWV0aG9kKCkgeworICAgIFJldHVybiByID0gbmV3IFJldHVybigpOworICAgIHIubXlJbnQgPj49IDE7CisgICAgcmV0dXJuIHI7CisgIH0KKworICBwdWJsaWMgdm9pZCBjb250ZXh0TFZhbHVlKCkgeworICAgIFJldHVybiByID0gbmV3IFJldHVybigpOworICAgIHIubXlJbnQgPj49IDE7CisgICAgciA9IG51bGw7CisgIH0KKworICBwdWJsaWMgdm9pZCBjb250ZXh0Tm9Vc2FnZSgpIHsKKyAgICBSZXR1cm4gciA9IG5ldyBSZXR1cm4oKTsKKyAgICByLm15SW50ID4+PSAxOworICB9CisKKyAgcHVibGljIHZvaWQgY29udGV4dFJWYWx1ZSgpIHsKKyAgICBSZXR1cm4gciA9IG5ldyBSZXR1cm4oKTsKKyAgICByLm15SW50ID4+PSAxOworICAgIFJldHVybiByMiA9IHI7CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tZXRob2REdXBsaWNhdGVzL1JldHVybkxvY2FsVmFyLmphdmEuYWZ0ZXIgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWV0aG9kRHVwbGljYXRlcy9SZXR1cm5Mb2NhbFZhci5qYXZhLmFmdGVyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI3YmVkNzYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWV0aG9kRHVwbGljYXRlcy9SZXR1cm5Mb2NhbFZhci5qYXZhLmFmdGVyCkBAIC0wLDAgKzEsMjQgQEAKK2NsYXNzIFJldHVybiB7CisgIHByaXZhdGUgUmV0dXJuIG15UmV0dXJuOworICBwcml2YXRlIGludCBteUludDsKKworICBwdWJsaWMgUmV0dXJuIG1ldGhvZCgpIHsKKyAgICBSZXR1cm4gciA9IG5ldyBSZXR1cm4oKTsKKyAgICByLm15SW50ID4+PSAxOworICAgIHJldHVybiByOworICB9CisKKyAgcHVibGljIHZvaWQgY29udGV4dExWYWx1ZSgpIHsKKyAgICAgIFJldHVybiByID0gbWV0aG9kKCk7CisgICAgciA9IG51bGw7CisgIH0KKworICBwdWJsaWMgdm9pZCBjb250ZXh0Tm9Vc2FnZSgpIHsKKyAgICAgIFJldHVybiByID0gbWV0aG9kKCk7CisgIH0KKworICBwdWJsaWMgdm9pZCBjb250ZXh0UlZhbHVlKCkgeworICAgICAgUmV0dXJuIHIgPSBtZXRob2QoKTsKKyAgICBSZXR1cm4gcjIgPSByOworICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWV0aG9kRHVwbGljYXRlcy9SZXR1cm5QYXJhbWV0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tZXRob2REdXBsaWNhdGVzL1JldHVyblBhcmFtZXRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJlY2M5MzAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWV0aG9kRHVwbGljYXRlcy9SZXR1cm5QYXJhbWV0ZXIuamF2YQpAQCAtMCwwICsxLDI4IEBACitjbGFzcyBSZXR1cm4geworICBwcml2YXRlIFJldHVybiBteVJldHVybjsKKyAgcHJpdmF0ZSBpbnQgbXlJbnQ7CisKKyAgcHVibGljIFJldHVybiA8Y2FyZXQ+bWV0aG9kKFJldHVybiBwKSB7CisgICAgcC5teUludC0tOworICAgIHJldHVybiBwOworICB9CisKKyAgcHVibGljIHZvaWQgY29udGV4dExWYWx1ZSgpIHsKKyAgICBteVJldHVybi5teUludC0tOworICAgIG15UmV0dXJuID0gbnVsbDsKKyAgfQorCisgIHB1YmxpYyB2b2lkIGNvbnRleHROb1VzYWdlKCkgeworICAgIG15UmV0dXJuLm15SW50LS07CisgIH0KKworICBwdWJsaWMgdm9pZCBjb250ZXh0UlZhbHVlKCkgeworICAgIG15UmV0dXJuLm15SW50LS07CisgICAgUmV0dXJuIHIgPSBteVJldHVybjsKKyAgfQorCisgIHB1YmxpYyB2b2lkIGNvbnRleHRSVmFsdWVRdWFsaWZpZWQoKSB7CisgICAgbXlSZXR1cm4ubXlJbnQtLTsKKyAgICBSZXR1cm4gciA9IHRoaXMubXlSZXR1cm47CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tZXRob2REdXBsaWNhdGVzL1JldHVyblBhcmFtZXRlci5qYXZhLmFmdGVyIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ldGhvZER1cGxpY2F0ZXMvUmV0dXJuUGFyYW1ldGVyLmphdmEuYWZ0ZXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjNjOTVlZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tZXRob2REdXBsaWNhdGVzL1JldHVyblBhcmFtZXRlci5qYXZhLmFmdGVyCkBAIC0wLDAgKzEsMjggQEAKK2NsYXNzIFJldHVybiB7CisgIHByaXZhdGUgUmV0dXJuIG15UmV0dXJuOworICBwcml2YXRlIGludCBteUludDsKKworICBwdWJsaWMgUmV0dXJuIG1ldGhvZChSZXR1cm4gcCkgeworICAgIHAubXlJbnQtLTsKKyAgICByZXR1cm4gcDsKKyAgfQorCisgIHB1YmxpYyB2b2lkIGNvbnRleHRMVmFsdWUoKSB7CisgICAgICBteVJldHVybiA9IG1ldGhvZChteVJldHVybik7CisgICAgICBteVJldHVybiA9IG51bGw7CisgIH0KKworICBwdWJsaWMgdm9pZCBjb250ZXh0Tm9Vc2FnZSgpIHsKKyAgICAgIG15UmV0dXJuID0gbWV0aG9kKG15UmV0dXJuKTsKKyAgfQorCisgIHB1YmxpYyB2b2lkIGNvbnRleHRSVmFsdWUoKSB7CisgICAgICBteVJldHVybiA9IG1ldGhvZChteVJldHVybik7CisgICAgICBSZXR1cm4gciA9IG15UmV0dXJuOworICB9CisKKyAgcHVibGljIHZvaWQgY29udGV4dFJWYWx1ZVF1YWxpZmllZCgpIHsKKyAgICAgIG15UmV0dXJuID0gbWV0aG9kKG15UmV0dXJuKTsKKyAgICAgIFJldHVybiByID0gdGhpcy5teVJldHVybjsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ldGhvZER1cGxpY2F0ZXMvUmV0dXJuVGhpcy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ldGhvZER1cGxpY2F0ZXMvUmV0dXJuVGhpcy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMwZjViZTcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWV0aG9kRHVwbGljYXRlcy9SZXR1cm5UaGlzLmphdmEKQEAgLTAsMCArMSwxNSBAQAorY2xhc3MgUmV0dXJuIHsKKyAgcHJpdmF0ZSBpbnQgbXlJbnQ7CisKKyAgcHVibGljIFJldHVybiA8Y2FyZXQ+bWV0aG9kKCkgeworICAgIG15SW50Kys7CisgICAgcmV0dXJuIHRoaXM7CisgIH0KKworICBwdWJsaWMgdm9pZCBjb250ZXh0KCkgeworICAgIG15SW50Kys7CisgICAgUmV0dXJuIHIgPSB0aGlzOworICAgIC8vIEN1cnJlbnRseSB0aGUgc3RhdGVtZW50IGJlbG93IGNvdWxkIGJlIHJlcGxhY2VkLCBidXQgaXQncyBub3QuIE5vYm9keSBoYXMgcmVxdWVzdGVkIHRoaXMuCisgICAgbXlJbnQrKzsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tZXRob2REdXBsaWNhdGVzL1JldHVyblRoaXMuamF2YS5hZnRlciBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tZXRob2REdXBsaWNhdGVzL1JldHVyblRoaXMuamF2YS5hZnRlcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNGJkNzk3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ldGhvZER1cGxpY2F0ZXMvUmV0dXJuVGhpcy5qYXZhLmFmdGVyCkBAIC0wLDAgKzEsMTQgQEAKK2NsYXNzIFJldHVybiB7CisgIHByaXZhdGUgaW50IG15SW50OworCisgIHB1YmxpYyBSZXR1cm4gbWV0aG9kKCkgeworICAgIG15SW50Kys7CisgICAgcmV0dXJuIHRoaXM7CisgIH0KKworICBwdWJsaWMgdm9pZCBjb250ZXh0KCkgeworICAgICAgUmV0dXJuIHIgPSBtZXRob2QoKTsKKyAgICAvLyBDdXJyZW50bHkgdGhlIHN0YXRlbWVudCBiZWxvdyBjb3VsZCBiZSByZXBsYWNlZCwgYnV0IGl0J3Mgbm90LiBOb2JvZHkgaGFzIHJlcXVlc3RlZCB0aGlzLgorICAgIG15SW50Kys7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWV0aG9kRHVwbGljYXRlcy9SZXR1cm5WYXJpYWJsZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ldGhvZER1cGxpY2F0ZXMvUmV0dXJuVmFyaWFibGUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MGNlOTFhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ldGhvZER1cGxpY2F0ZXMvUmV0dXJuVmFyaWFibGUuamF2YQpAQCAtMCwwICsxLDEyIEBACitjbGFzcyBSZXR1cm5WYXJpYWJsZSB7CisgIFN0cmluZyA8Y2FyZXQ+YmFyKFN0cmluZyBzKSB7CisgICAgcyA9IHMgKyAiIjsKKyAgICByZXR1cm4gczsKKyAgfQorCisgIHZvaWQgZm9vKCkgeworICAgIFN0cmluZyBzMSA9ICIiOworICAgIHMxID0gczEgKyAiIjsKKyAgICBTeXN0ZW0ub3V0LnByaW50bG4oczEpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ldGhvZER1cGxpY2F0ZXMvUmV0dXJuVmFyaWFibGUuamF2YS5hZnRlciBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tZXRob2REdXBsaWNhdGVzL1JldHVyblZhcmlhYmxlLmphdmEuYWZ0ZXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTBlZWNmNgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tZXRob2REdXBsaWNhdGVzL1JldHVyblZhcmlhYmxlLmphdmEuYWZ0ZXIKQEAgLTAsMCArMSwxMiBAQAorY2xhc3MgUmV0dXJuVmFyaWFibGUgeworICBTdHJpbmcgYmFyKFN0cmluZyBzKSB7CisgICAgcyA9IHMgKyAiIjsKKyAgICByZXR1cm4gczsKKyAgfQorCisgIHZvaWQgZm9vKCkgeworICAgIFN0cmluZyBzMSA9ICIiOworICAgICAgczEgPSBiYXIoczEpOworICAgICAgU3lzdGVtLm91dC5wcmludGxuKHMxKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tZXRob2REdXBsaWNhdGVzL1JldHVyblZvaWRUZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWV0aG9kRHVwbGljYXRlcy9SZXR1cm5Wb2lkVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY0ZTE1NWUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWV0aG9kRHVwbGljYXRlcy9SZXR1cm5Wb2lkVGVzdC5qYXZhCkBAIC0wLDAgKzEsMTMgQEAKK2NsYXNzIFJldHVyblZvaWRUZXN0IHsKKyAgaW50ZXJmYWNlIFRoaW5nIHsKKyAgICBib29sZWFuIHRoaW5nKCk7CisgIH0KKworICB2b2lkIGR1cGVIb2xkZXIoKSB7CisgICAgaWYgKGZhbHNlKSByZXR1cm47CisgIH0KKworICB2b2lkIDxjYXJldD5kdXBsaWNhdG9yKGZpbmFsIGJvb2xlYW4gdGhpbmdSZXR1cm4pIHsKKyAgICBpZiAodGhpbmdSZXR1cm4gKSByZXR1cm47CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWV0aG9kRHVwbGljYXRlcy9SZXR1cm5Wb2lkVGVzdC5qYXZhLmFmdGVyIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ldGhvZER1cGxpY2F0ZXMvUmV0dXJuVm9pZFRlc3QuamF2YS5hZnRlcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZWY0ZmYyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ldGhvZER1cGxpY2F0ZXMvUmV0dXJuVm9pZFRlc3QuamF2YS5hZnRlcgpAQCAtMCwwICsxLDEzIEBACitjbGFzcyBSZXR1cm5Wb2lkVGVzdCB7CisgIGludGVyZmFjZSBUaGluZyB7CisgICAgYm9vbGVhbiB0aGluZygpOworICB9CisKKyAgdm9pZCBkdXBlSG9sZGVyKCkgeworICAgICAgZHVwbGljYXRvcihmYWxzZSk7CisgIH0KKworICB2b2lkIGR1cGxpY2F0b3IoZmluYWwgYm9vbGVhbiB0aGluZ1JldHVybikgeworICAgIGlmICh0aGluZ1JldHVybiApIHJldHVybjsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tZXRob2REdXBsaWNhdGVzL1N0YXRpY01ldGhvZFJlcGxhY2VtZW50LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWV0aG9kRHVwbGljYXRlcy9TdGF0aWNNZXRob2RSZXBsYWNlbWVudC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIzODM1ZmMyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ldGhvZER1cGxpY2F0ZXMvU3RhdGljTWV0aG9kUmVwbGFjZW1lbnQuamF2YQpAQCAtMCwwICsxLDExIEBACitjbGFzcyBTdGF0aWNNZXRob2RSZXBsYWNlbWVudCB7CisgIHN0YXRpYyB2b2lkIDxjYXJldD5tYWluKFN0YXRpY01ldGhvZFJlcGxhY2VtZW50IHIpIHsKKyAgICByLmJhcigpOworICB9CisKKyAgdm9pZCBiYXIoKXt9CisKKyAgdm9pZCBmb28oKSB7CisgICAgYmFyKCk7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWV0aG9kRHVwbGljYXRlcy9TdGF0aWNNZXRob2RSZXBsYWNlbWVudC5qYXZhLmFmdGVyIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ldGhvZER1cGxpY2F0ZXMvU3RhdGljTWV0aG9kUmVwbGFjZW1lbnQuamF2YS5hZnRlcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMjUwMjNiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ldGhvZER1cGxpY2F0ZXMvU3RhdGljTWV0aG9kUmVwbGFjZW1lbnQuamF2YS5hZnRlcgpAQCAtMCwwICsxLDExIEBACitjbGFzcyBTdGF0aWNNZXRob2RSZXBsYWNlbWVudCB7CisgIHN0YXRpYyB2b2lkIG1haW4oU3RhdGljTWV0aG9kUmVwbGFjZW1lbnQgcikgeworICAgIHIuYmFyKCk7CisgIH0KKworICB2b2lkIGJhcigpe30KKworICB2b2lkIGZvbygpIHsKKyAgICAgIG1haW4oU3RhdGljTWV0aG9kUmVwbGFjZW1lbnQudGhpcyk7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWV0aG9kRHVwbGljYXRlcy9UaGlzUmVmZXJlbmNlVGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ldGhvZER1cGxpY2F0ZXMvVGhpc1JlZmVyZW5jZVRlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MzNlOGFlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ldGhvZER1cGxpY2F0ZXMvVGhpc1JlZmVyZW5jZVRlc3QuamF2YQpAQCAtMCwwICsxLDkgQEAKK2NsYXNzIFRoaXNSZWZlcmVuY2VUZXN0IHsKKyAgdm9pZCBmb28oKXt9CisKKyAgdm9pZCA8Y2FyZXQ+YmFyKCl7dGhpcy5mb28oKTt9CisKKyAgc3RhdGljIHZvaWQgbWFpbihUaGlzUmVmZXJlbmNlVGVzdCB0KXsKKyAgICB0LmZvbygpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ldGhvZER1cGxpY2F0ZXMvVGhpc1JlZmVyZW5jZVRlc3QuamF2YS5hZnRlciBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tZXRob2REdXBsaWNhdGVzL1RoaXNSZWZlcmVuY2VUZXN0LmphdmEuYWZ0ZXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzc2NTg2YzEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWV0aG9kRHVwbGljYXRlcy9UaGlzUmVmZXJlbmNlVGVzdC5qYXZhLmFmdGVyCkBAIC0wLDAgKzEsOSBAQAorY2xhc3MgVGhpc1JlZmVyZW5jZVRlc3QgeworICB2b2lkIGZvbygpe30KKworICB2b2lkIGJhcigpe3RoaXMuZm9vKCk7fQorCisgIHN0YXRpYyB2b2lkIG1haW4oVGhpc1JlZmVyZW5jZVRlc3QgdCl7CisgICAgICB0LmJhcigpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ldGhvZER1cGxpY2F0ZXMvVHlwZUluaGVyaXRhbmNlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWV0aG9kRHVwbGljYXRlcy9UeXBlSW5oZXJpdGFuY2UuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYTYxY2YxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ldGhvZER1cGxpY2F0ZXMvVHlwZUluaGVyaXRhbmNlLmphdmEKQEAgLTAsMCArMSwxMyBAQAorY2xhc3MgVGVzdCB7CisgIGNsYXNzIEkge30KKyAgY2xhc3MgSTEgZXh0ZW5kcyBJIHt9CisKKyAgdm9pZCA8Y2FyZXQ+Zm9vKEkgaSl7CisgICAgU3lzdGVtLm91dC5wcmludGxuKGkpOworICB9CisKKyAgdm9pZCBiYXIoSTEgaSl7CisgICAgU3lzdGVtLm91dC5wcmludGxuKGkpOworICB9CisKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWV0aG9kRHVwbGljYXRlcy9UeXBlSW5oZXJpdGFuY2UuamF2YS5hZnRlciBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tZXRob2REdXBsaWNhdGVzL1R5cGVJbmhlcml0YW5jZS5qYXZhLmFmdGVyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZhMDI1ZWYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWV0aG9kRHVwbGljYXRlcy9UeXBlSW5oZXJpdGFuY2UuamF2YS5hZnRlcgpAQCAtMCwwICsxLDEzIEBACitjbGFzcyBUZXN0IHsKKyAgY2xhc3MgSSB7fQorICBjbGFzcyBJMSBleHRlbmRzIEkge30KKworICB2b2lkIGZvbyhJIGkpeworICAgIFN5c3RlbS5vdXQucHJpbnRsbihpKTsKKyAgfQorCisgIHZvaWQgYmFyKEkxIGkpeworICAgICAgZm9vKGkpOworICB9CisKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWV0aG9kRHVwbGljYXRlcy9UeXBlSW5oZXJpdGFuY2UxLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWV0aG9kRHVwbGljYXRlcy9UeXBlSW5oZXJpdGFuY2UxLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjg3NGIxYwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tZXRob2REdXBsaWNhdGVzL1R5cGVJbmhlcml0YW5jZTEuamF2YQpAQCAtMCwwICsxLDEzIEBACitjbGFzcyBUZXN0IHsKKyAgY2xhc3MgSSB7fQorICBjbGFzcyBJMSBleHRlbmRzIEkge30KKworICB2b2lkIGZvbyhJIGkpeworICAgIFN5c3RlbS5vdXQucHJpbnRsbihpKTsKKyAgfQorCisgIHZvaWQgPGNhcmV0PmJhcihJMSBpKXsKKyAgICBTeXN0ZW0ub3V0LnByaW50bG4oaSk7CisgIH0KKworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tZXRob2REdXBsaWNhdGVzL1R5cGVzRXh0ZW5kcy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ldGhvZER1cGxpY2F0ZXMvVHlwZXNFeHRlbmRzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzZjYWFiZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tZXRob2REdXBsaWNhdGVzL1R5cGVzRXh0ZW5kcy5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKK2NsYXNzIFR5cGVzIHsKKyAgcHVibGljIHZvaWQgPGNhcmV0Pm1ldGhvZChPYmplY3QgdikgeworICAgIGludCBpID0gdi5oYXNoQ29kZSgpOworICB9CisKKyAgcHVibGljIHZvaWQgY29udGV4dCgpIHsKKyAgICBTdHJpbmcgdiA9ICJjaGlsZCB0eXBlIjsKKyAgICBpbnQgaSA9IHYuaGFzaENvZGUoKTsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ldGhvZER1cGxpY2F0ZXMvVHlwZXNFeHRlbmRzLmphdmEuYWZ0ZXIgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWV0aG9kRHVwbGljYXRlcy9UeXBlc0V4dGVuZHMuamF2YS5hZnRlcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jOWVlOGZjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ldGhvZER1cGxpY2F0ZXMvVHlwZXNFeHRlbmRzLmphdmEuYWZ0ZXIKQEAgLTAsMCArMSwxMCBAQAorY2xhc3MgVHlwZXMgeworICBwdWJsaWMgdm9pZCBtZXRob2QoT2JqZWN0IHYpIHsKKyAgICBpbnQgaSA9IHYuaGFzaENvZGUoKTsKKyAgfQorCisgIHB1YmxpYyB2b2lkIGNvbnRleHQoKSB7CisgICAgU3RyaW5nIHYgPSAiY2hpbGQgdHlwZSI7CisgICAgICBtZXRob2Qodik7CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tZXRob2REdXBsaWNhdGVzL1R5cGVzRXh0ZW5kc1JldHVybi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ldGhvZER1cGxpY2F0ZXMvVHlwZXNFeHRlbmRzUmV0dXJuLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWNkNGIyMwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tZXRob2REdXBsaWNhdGVzL1R5cGVzRXh0ZW5kc1JldHVybi5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKK2NsYXNzIFR5cGVzIHsKKyAgcHVibGljIFN0cmluZyA8Y2FyZXQ+bWV0aG9kKE9iamVjdCB2KSB7CisgICAgcmV0dXJuIHYudG9TdHJpbmcoKTsKKyAgfQorCisgIHB1YmxpYyB2b2lkIGNvbnRleHQoKSB7CisgICAgU3RyaW5nIHYgPSAiY2hpbGQgdHlwZSI7CisgICAgT2JqZWN0IG8gPSB2LnRvU3RyaW5nKCk7CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tZXRob2REdXBsaWNhdGVzL1R5cGVzRXh0ZW5kc1JldHVybi5qYXZhLmFmdGVyIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ldGhvZER1cGxpY2F0ZXMvVHlwZXNFeHRlbmRzUmV0dXJuLmphdmEuYWZ0ZXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTk3YjU4OQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tZXRob2REdXBsaWNhdGVzL1R5cGVzRXh0ZW5kc1JldHVybi5qYXZhLmFmdGVyCkBAIC0wLDAgKzEsMTAgQEAKK2NsYXNzIFR5cGVzIHsKKyAgcHVibGljIFN0cmluZyBtZXRob2QoT2JqZWN0IHYpIHsKKyAgICByZXR1cm4gdi50b1N0cmluZygpOworICB9CisKKyAgcHVibGljIHZvaWQgY29udGV4dCgpIHsKKyAgICBTdHJpbmcgdiA9ICJjaGlsZCB0eXBlIjsKKyAgICBPYmplY3QgbyA9IG1ldGhvZCh2KTsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ldGhvZER1cGxpY2F0ZXMvVHlwZXNFeHRlbmRzUmV0dXJuRGlmZmVyZW50QXJyYXkuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tZXRob2REdXBsaWNhdGVzL1R5cGVzRXh0ZW5kc1JldHVybkRpZmZlcmVudEFycmF5LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODViYWZkNAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tZXRob2REdXBsaWNhdGVzL1R5cGVzRXh0ZW5kc1JldHVybkRpZmZlcmVudEFycmF5LmphdmEKQEAgLTAsMCArMSw5IEBACitjbGFzcyBUeXBlcyB7CisJcHVibGljIHN0YXRpYyBPYmplY3RbXSA8Y2FyZXQ+YXJyYXlNZXRob2QoU3RyaW5nIHMpIHsKKwkJcmV0dXJuIG5ldyBTdHJpbmdbXSB7c307CisJfQorCXB1YmxpYyBzdGF0aWMgdm9pZCBhcnJheUNvbnRleHQoU3RyaW5nIHMpIHsKKwkJU3RyaW5nW10gc2EgPSBuZXcgU3RyaW5nW10ge3Muc3Vic3RyaW5nKDApfTsKKwkJT2JqZWN0W10gb2EgPSBuZXcgU3RyaW5nW10ge3N9OworCX0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tZXRob2REdXBsaWNhdGVzL1R5cGVzRXh0ZW5kc1JldHVybkRpZmZlcmVudEFycmF5LmphdmEuYWZ0ZXIgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWV0aG9kRHVwbGljYXRlcy9UeXBlc0V4dGVuZHNSZXR1cm5EaWZmZXJlbnRBcnJheS5qYXZhLmFmdGVyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZkYzRlMGUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWV0aG9kRHVwbGljYXRlcy9UeXBlc0V4dGVuZHNSZXR1cm5EaWZmZXJlbnRBcnJheS5qYXZhLmFmdGVyCkBAIC0wLDAgKzEsOSBAQAorY2xhc3MgVHlwZXMgeworCXB1YmxpYyBzdGF0aWMgU3RyaW5nW10gYXJyYXlNZXRob2QoU3RyaW5nIHMpIHsKKwkJcmV0dXJuIG5ldyBTdHJpbmdbXSB7c307CisJfQorCXB1YmxpYyBzdGF0aWMgdm9pZCBhcnJheUNvbnRleHQoU3RyaW5nIHMpIHsKKwkJU3RyaW5nW10gc2EgPSBhcnJheU1ldGhvZChzLnN1YnN0cmluZygwKSk7CisJCU9iamVjdFtdIG9hID0gYXJyYXlNZXRob2Qocyk7CisJfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ldGhvZER1cGxpY2F0ZXMvVHlwZXNFeHRlbmRzUmV0dXJuRGlmZmVyZW50R2VuZXJpYy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ldGhvZER1cGxpY2F0ZXMvVHlwZXNFeHRlbmRzUmV0dXJuRGlmZmVyZW50R2VuZXJpYy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNmNzBmM2QKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWV0aG9kRHVwbGljYXRlcy9UeXBlc0V4dGVuZHNSZXR1cm5EaWZmZXJlbnRHZW5lcmljLmphdmEKQEAgLTAsMCArMSwxMiBAQAoraW1wb3J0IGphdmEudXRpbC5Db2xsZWN0aW9uOworaW1wb3J0IGphdmEudXRpbC5MaXN0OworCitjbGFzcyBUeXBlcyB7CisJcHVibGljIENvbGxlY3Rpb248U3RyaW5nPiA8Y2FyZXQ+Z2VuZXJpY01ldGhvZCgpIHsKKwkJcmV0dXJuIG5ldyBBcnJheUxpc3Q8U3RyaW5nPigpOworCX0KKwlwdWJsaWMgdm9pZCBnZW5lcmljQ29udGV4dCgpIHsKKwkJTGlzdDxTdHJpbmc+IHNsID0gbmV3IEFycmF5TGlzdDxTdHJpbmc+KCk7CisJCUNvbGxlY3Rpb248U3RyaW5nPiBzYyA9IGdlbmVyaWNNZXRob2QoKTsKKwl9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWV0aG9kRHVwbGljYXRlcy9UeXBlc0V4dGVuZHNSZXR1cm5EaWZmZXJlbnRHZW5lcmljLmphdmEuYWZ0ZXIgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWV0aG9kRHVwbGljYXRlcy9UeXBlc0V4dGVuZHNSZXR1cm5EaWZmZXJlbnRHZW5lcmljLmphdmEuYWZ0ZXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWRkNTk3MgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tZXRob2REdXBsaWNhdGVzL1R5cGVzRXh0ZW5kc1JldHVybkRpZmZlcmVudEdlbmVyaWMuamF2YS5hZnRlcgpAQCAtMCwwICsxLDEyIEBACitpbXBvcnQgamF2YS51dGlsLkNvbGxlY3Rpb247CitpbXBvcnQgamF2YS51dGlsLkxpc3Q7CisKK2NsYXNzIFR5cGVzIHsKKwlwdWJsaWMgTGlzdDxTdHJpbmc+IGdlbmVyaWNNZXRob2QoKSB7CisJCXJldHVybiBuZXcgQXJyYXlMaXN0PFN0cmluZz4oKTsKKwl9CisJcHVibGljIHZvaWQgZ2VuZXJpY0NvbnRleHQoKSB7CisJCUxpc3Q8U3RyaW5nPiBzbCA9IGdlbmVyaWNNZXRob2QoKTsKKwkJQ29sbGVjdGlvbjxTdHJpbmc+IHNjID0gZ2VuZXJpY01ldGhvZCgpOworCX0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tZXRob2REdXBsaWNhdGVzL1R5cGVzRXh0ZW5kc1JldHVybkRpZmZlcmVudFByaW1pdGl2ZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ldGhvZER1cGxpY2F0ZXMvVHlwZXNFeHRlbmRzUmV0dXJuRGlmZmVyZW50UHJpbWl0aXZlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmI1MWU1MAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tZXRob2REdXBsaWNhdGVzL1R5cGVzRXh0ZW5kc1JldHVybkRpZmZlcmVudFByaW1pdGl2ZS5qYXZhCkBAIC0wLDAgKzEsOSBAQAorY2xhc3MgVHlwZXMgeworCXB1YmxpYyBsb25nIDxjYXJldD5wcmltaXRpdmVNZXRob2QoYm9vbGVhbiBiKSB7CisJCXJldHVybiBiID8gMSA6IDA7CisJfQorCXB1YmxpYyB2b2lkIHByaW1pdGl2ZUNvbnRleHQoYm9vbGVhbiBiKSB7CisJCWludCBpID0gIWIgPyAxIDogMDsKKwkJbG9uZyBsID0gYiA/IDEgOiAwOworCX0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tZXRob2REdXBsaWNhdGVzL1R5cGVzRXh0ZW5kc1JldHVybkRpZmZlcmVudFByaW1pdGl2ZS5qYXZhLmFmdGVyIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ldGhvZER1cGxpY2F0ZXMvVHlwZXNFeHRlbmRzUmV0dXJuRGlmZmVyZW50UHJpbWl0aXZlLmphdmEuYWZ0ZXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2MwYWIwYgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tZXRob2REdXBsaWNhdGVzL1R5cGVzRXh0ZW5kc1JldHVybkRpZmZlcmVudFByaW1pdGl2ZS5qYXZhLmFmdGVyCkBAIC0wLDAgKzEsOSBAQAorY2xhc3MgVHlwZXMgeworCXB1YmxpYyBpbnQgcHJpbWl0aXZlTWV0aG9kKGJvb2xlYW4gYikgeworCQlyZXR1cm4gYiA/IDEgOiAwOworCX0KKwlwdWJsaWMgdm9pZCBwcmltaXRpdmVDb250ZXh0KGJvb2xlYW4gYikgeworCQlpbnQgaSA9IHByaW1pdGl2ZU1ldGhvZCghYik7CisJCWxvbmcgbCA9IHByaW1pdGl2ZU1ldGhvZChiKTsKKwl9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWV0aG9kRHVwbGljYXRlcy9UeXBlc0V4dGVuZHNSZXR1cm5EaWZmZXJlbnRSZWZlcmVuY2UuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tZXRob2REdXBsaWNhdGVzL1R5cGVzRXh0ZW5kc1JldHVybkRpZmZlcmVudFJlZmVyZW5jZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM1YjMwMjYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWV0aG9kRHVwbGljYXRlcy9UeXBlc0V4dGVuZHNSZXR1cm5EaWZmZXJlbnRSZWZlcmVuY2UuamF2YQpAQCAtMCwwICsxLDkgQEAKK2NsYXNzIFR5cGVzIHsKKwlwdWJsaWMgc3RhdGljIE9iamVjdCA8Y2FyZXQ+cmVmZXJlbmNlTWV0aG9kKE9iamVjdCBvKSB7CisJCXJldHVybiBvLnRvU3RyaW5nKCk7CisJfQorCXB1YmxpYyBzdGF0aWMgdm9pZCByZWZlcmVuY2VDb250ZXh0KE9iamVjdCBvKSB7CisJCVN0cmluZyBzID0gby5nZXRDbGFzcygpLnRvU3RyaW5nKCk7CisJCU9iamVjdCB2ID0gby50b1N0cmluZygpOworCX0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tZXRob2REdXBsaWNhdGVzL1R5cGVzRXh0ZW5kc1JldHVybkRpZmZlcmVudFJlZmVyZW5jZS5qYXZhLmFmdGVyIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ldGhvZER1cGxpY2F0ZXMvVHlwZXNFeHRlbmRzUmV0dXJuRGlmZmVyZW50UmVmZXJlbmNlLmphdmEuYWZ0ZXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjM5ZTdlZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tZXRob2REdXBsaWNhdGVzL1R5cGVzRXh0ZW5kc1JldHVybkRpZmZlcmVudFJlZmVyZW5jZS5qYXZhLmFmdGVyCkBAIC0wLDAgKzEsOSBAQAorY2xhc3MgVHlwZXMgeworCXB1YmxpYyBzdGF0aWMgU3RyaW5nIHJlZmVyZW5jZU1ldGhvZChPYmplY3QgbykgeworCQlyZXR1cm4gby50b1N0cmluZygpOworCX0KKwlwdWJsaWMgc3RhdGljIHZvaWQgcmVmZXJlbmNlQ29udGV4dChPYmplY3QgbykgeworCQlTdHJpbmcgcyA9IHJlZmVyZW5jZU1ldGhvZChvLmdldENsYXNzKCkpOworCQlPYmplY3QgdiA9IHJlZmVyZW5jZU1ldGhvZChvKTsKKwl9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWV0aG9kRHVwbGljYXRlcy9UeXBlc0dlbmVyaWNzQ29uY3JldGUyQ29uY3JldGUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tZXRob2REdXBsaWNhdGVzL1R5cGVzR2VuZXJpY3NDb25jcmV0ZTJDb25jcmV0ZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM2ZGVlNDMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWV0aG9kRHVwbGljYXRlcy9UeXBlc0dlbmVyaWNzQ29uY3JldGUyQ29uY3JldGUuamF2YQpAQCAtMCwwICsxLDEzIEBACitpbXBvcnQgamF2YS51dGlsLkxpc3Q7CisKK2NsYXNzIFR5cGVzIHsKKyAgcHJpdmF0ZSBMaXN0PFN0cmluZz4gbXlMaXN0OworCisgIHB1YmxpYyBTdHJpbmcgPGNhcmV0Pm1ldGhvZChMaXN0PFN0cmluZz4gdikgeworICAgIHJldHVybiB2LmdldCgwKTsKKyAgfQorCisgIHB1YmxpYyB2b2lkIGNvbnRleHQoKSB7CisgICAgU3RyaW5nIHMgPSBteUxpc3QuZ2V0KDApOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ldGhvZER1cGxpY2F0ZXMvVHlwZXNHZW5lcmljc0NvbmNyZXRlMkNvbmNyZXRlLmphdmEuYWZ0ZXIgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWV0aG9kRHVwbGljYXRlcy9UeXBlc0dlbmVyaWNzQ29uY3JldGUyQ29uY3JldGUuamF2YS5hZnRlcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMTlmYjE4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ldGhvZER1cGxpY2F0ZXMvVHlwZXNHZW5lcmljc0NvbmNyZXRlMkNvbmNyZXRlLmphdmEuYWZ0ZXIKQEAgLTAsMCArMSwxMyBAQAoraW1wb3J0IGphdmEudXRpbC5MaXN0OworCitjbGFzcyBUeXBlcyB7CisgIHByaXZhdGUgTGlzdDxTdHJpbmc+IG15TGlzdDsKKworICBwdWJsaWMgU3RyaW5nIG1ldGhvZChMaXN0PFN0cmluZz4gdikgeworICAgIHJldHVybiB2LmdldCgwKTsKKyAgfQorCisgIHB1YmxpYyB2b2lkIGNvbnRleHQoKSB7CisgICAgU3RyaW5nIHMgPSBtZXRob2QobXlMaXN0KTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tZXRob2REdXBsaWNhdGVzL1R5cGVzR2VuZXJpY3NDb25jcmV0ZTJDb25jcmV0ZURpZmZlcmVudC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ldGhvZER1cGxpY2F0ZXMvVHlwZXNHZW5lcmljc0NvbmNyZXRlMkNvbmNyZXRlRGlmZmVyZW50LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWVhNDRmZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tZXRob2REdXBsaWNhdGVzL1R5cGVzR2VuZXJpY3NDb25jcmV0ZTJDb25jcmV0ZURpZmZlcmVudC5qYXZhCkBAIC0wLDAgKzEsMTMgQEAKK2ltcG9ydCBqYXZhLnV0aWwuTGlzdDsKKworY2xhc3MgVHlwZXMgeworICBwcml2YXRlIExpc3Q8Qm9vbGVhbj4gbXlMaXN0OworCisgIHB1YmxpYyB2b2lkIDxjYXJldD5tZXRob2QoTGlzdDxJbnRlZ2VyPiB2KSB7CisgICAgdi5jbGVhcigpOworICB9CisKKyAgcHVibGljIHZvaWQgY29udGV4dCgpIHsKKyAgICBteUxpc3QuY2xlYXIoKTsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ldGhvZER1cGxpY2F0ZXMvVHlwZXNHZW5lcmljc0NvbmNyZXRlMkV4dGVuZHMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tZXRob2REdXBsaWNhdGVzL1R5cGVzR2VuZXJpY3NDb25jcmV0ZTJFeHRlbmRzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWMyMTcxYQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tZXRob2REdXBsaWNhdGVzL1R5cGVzR2VuZXJpY3NDb25jcmV0ZTJFeHRlbmRzLmphdmEKQEAgLTAsMCArMSwxMiBAQAoraW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7CitpbXBvcnQgamF2YS51dGlsLkxpc3Q7CisKK2NsYXNzIFR5cGVzIHsKKyAgICBwdWJsaWMgdm9pZCA8Y2FyZXQ+bWV0aG9kKExpc3Q8PyBleHRlbmRzIExpc3Q+IHYpIHsKKyAgICAgICAgaW50IGkgPSB2LmdldCgwKS5nZXRYKCk7CisgICAgfQorICAgIHB1YmxpYyB2b2lkIGNvbnRleHQoKSB7CisgICAgICAgIExpc3Q8QXJyYXlMaXN0PiBsaXN0ID0gbmV3IEFycmF5TGlzdDxBcnJheUxpc3Q+KCk7CisgICAgICAgIGludCBqID0gbGlzdC5nZXQoMCkuZ2V0WCgpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tZXRob2REdXBsaWNhdGVzL1R5cGVzR2VuZXJpY3NDb25jcmV0ZTJFeHRlbmRzLmphdmEuYWZ0ZXIgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWV0aG9kRHVwbGljYXRlcy9UeXBlc0dlbmVyaWNzQ29uY3JldGUyRXh0ZW5kcy5qYXZhLmFmdGVyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI5OWNiYTcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWV0aG9kRHVwbGljYXRlcy9UeXBlc0dlbmVyaWNzQ29uY3JldGUyRXh0ZW5kcy5qYXZhLmFmdGVyCkBAIC0wLDAgKzEsMTIgQEAKK2ltcG9ydCBqYXZhLnV0aWwuQXJyYXlMaXN0OworaW1wb3J0IGphdmEudXRpbC5MaXN0OworCitjbGFzcyBUeXBlcyB7CisgICAgcHVibGljIHZvaWQgbWV0aG9kKExpc3Q8PyBleHRlbmRzIExpc3Q+IHYpIHsKKyAgICAgICAgaW50IGkgPSB2LmdldCgwKS5nZXRYKCk7CisgICAgfQorICAgIHB1YmxpYyB2b2lkIGNvbnRleHQoKSB7CisgICAgICAgIExpc3Q8QXJyYXlMaXN0PiBsaXN0ID0gbmV3IEFycmF5TGlzdDxBcnJheUxpc3Q+KCk7CisgICAgICAgIG1ldGhvZChsaXN0KTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWV0aG9kRHVwbGljYXRlcy9UeXBlc0dlbmVyaWNzQ29uY3JldGUyRXh0ZW5kc0RpZmZlcmVudC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ldGhvZER1cGxpY2F0ZXMvVHlwZXNHZW5lcmljc0NvbmNyZXRlMkV4dGVuZHNEaWZmZXJlbnQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wOTBiZmIzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ldGhvZER1cGxpY2F0ZXMvVHlwZXNHZW5lcmljc0NvbmNyZXRlMkV4dGVuZHNEaWZmZXJlbnQuamF2YQpAQCAtMCwwICsxLDEyIEBACitpbXBvcnQgamF2YS51dGlsLkFycmF5TGlzdDsKK2ltcG9ydCBqYXZhLnV0aWwuTGlzdDsKKworY2xhc3MgVHlwZXMgeworICAgIHB1YmxpYyB2b2lkIDxjYXJldD5tZXRob2QoTGlzdDw/IGV4dGVuZHMgQXJyYXlMaXN0PiB2KSB7CisgICAgICAgIE9iamVjdCBvID0gdi5nZXQoMCk7CisgICAgfQorICAgIHB1YmxpYyB2b2lkIGNvbnRleHQoKSB7CisgICAgICAgIExpc3Q8TGlzdD4gbGlzdCA9IG5ldyBBcnJheUxpc3Q8TGlzdD4oKTsKKyAgICAgICAgT2JqZWN0IG8gPSB2LmdldCgwKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWV0aG9kRHVwbGljYXRlcy9UeXBlc0dlbmVyaWNzQ29uY3JldGUyUmF3LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWV0aG9kRHVwbGljYXRlcy9UeXBlc0dlbmVyaWNzQ29uY3JldGUyUmF3LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDU4ZjE2NgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tZXRob2REdXBsaWNhdGVzL1R5cGVzR2VuZXJpY3NDb25jcmV0ZTJSYXcuamF2YQpAQCAtMCwwICsxLDEzIEBACitpbXBvcnQgamF2YS51dGlsLkxpc3Q7CisKK2NsYXNzIFR5cGVzIHsKKyAgcHJpdmF0ZSBMaXN0PFN0cmluZz4gbXlMaXN0OworCisgIHB1YmxpYyB2b2lkIDxjYXJldD5tZXRob2QoTGlzdCB2KSB7CisgICAgdi5jbGVhcigpOworICB9CisKKyAgcHVibGljIHZvaWQgY29udGV4dCgpIHsKKyAgICBteUxpc3QuY2xlYXIoKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tZXRob2REdXBsaWNhdGVzL1R5cGVzR2VuZXJpY3NDb25jcmV0ZTJSYXcuamF2YS5hZnRlciBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tZXRob2REdXBsaWNhdGVzL1R5cGVzR2VuZXJpY3NDb25jcmV0ZTJSYXcuamF2YS5hZnRlcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZDIxMGU3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ldGhvZER1cGxpY2F0ZXMvVHlwZXNHZW5lcmljc0NvbmNyZXRlMlJhdy5qYXZhLmFmdGVyCkBAIC0wLDAgKzEsMTMgQEAKK2ltcG9ydCBqYXZhLnV0aWwuTGlzdDsKKworY2xhc3MgVHlwZXMgeworICBwcml2YXRlIExpc3Q8U3RyaW5nPiBteUxpc3Q7CisKKyAgcHVibGljIHZvaWQgbWV0aG9kKExpc3QgdikgeworICAgIHYuY2xlYXIoKTsKKyAgfQorCisgIHB1YmxpYyB2b2lkIGNvbnRleHQoKSB7CisgICAgICBtZXRob2QobXlMaXN0KTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tZXRob2REdXBsaWNhdGVzL1R5cGVzR2VuZXJpY3NDb25jcmV0ZTJTdXBlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ldGhvZER1cGxpY2F0ZXMvVHlwZXNHZW5lcmljc0NvbmNyZXRlMlN1cGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGViZDRhNwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tZXRob2REdXBsaWNhdGVzL1R5cGVzR2VuZXJpY3NDb25jcmV0ZTJTdXBlci5qYXZhCkBAIC0wLDAgKzEsMTQgQEAKK2ltcG9ydCBqYXZhLmF3dC5Db21wb25lbnQ7CitpbXBvcnQgamF2YXguc3dpbmcuSkNvbXBvbmVudDsKK2ltcG9ydCBqYXZhLnV0aWwuQXJyYXlMaXN0OworaW1wb3J0IGphdmEudXRpbC5MaXN0OworCitjbGFzcyBUeXBlcyB7CisgICAgcHVibGljIHZvaWQgPGNhcmV0Pm1ldGhvZChMaXN0PD8gc3VwZXIgSkNvbXBvbmVudD4gdikgeworICAgICAgICBPYmplY3QgbyA9IHYuZ2V0KDApOworICAgIH0KKyAgICBwdWJsaWMgdm9pZCBjb250ZXh0KCkgeworICAgICAgICBMaXN0PENvbXBvbmVudD4gbGlzdCA9IG5ldyBBcnJheUxpc3Q8Q29tcG9uZW50PigpOworICAgICAgICBPYmplY3QgbyA9IGxpc3QuZ2V0KDApOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tZXRob2REdXBsaWNhdGVzL1R5cGVzR2VuZXJpY3NDb25jcmV0ZTJTdXBlci5qYXZhLmFmdGVyIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ldGhvZER1cGxpY2F0ZXMvVHlwZXNHZW5lcmljc0NvbmNyZXRlMlN1cGVyLmphdmEuYWZ0ZXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTRkN2U1MgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tZXRob2REdXBsaWNhdGVzL1R5cGVzR2VuZXJpY3NDb25jcmV0ZTJTdXBlci5qYXZhLmFmdGVyCkBAIC0wLDAgKzEsMTQgQEAKK2ltcG9ydCBqYXZhLmF3dC5Db21wb25lbnQ7CitpbXBvcnQgamF2YXguc3dpbmcuSkNvbXBvbmVudDsKK2ltcG9ydCBqYXZhLnV0aWwuQXJyYXlMaXN0OworaW1wb3J0IGphdmEudXRpbC5MaXN0OworCitjbGFzcyBUeXBlcyB7CisgICAgcHVibGljIHZvaWQgbWV0aG9kKExpc3Q8PyBzdXBlciBKQ29tcG9uZW50PiB2KSB7CisgICAgICAgIE9iamVjdCBvID0gdi5nZXQoMCk7CisgICAgfQorICAgIHB1YmxpYyB2b2lkIGNvbnRleHQoKSB7CisgICAgICAgIExpc3Q8Q29tcG9uZW50PiBsaXN0ID0gbmV3IEFycmF5TGlzdDxDb21wb25lbnQ+KCk7CisgICAgICAgIG1ldGhvZChsaXN0KTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWV0aG9kRHVwbGljYXRlcy9UeXBlc0dlbmVyaWNzQ29uY3JldGUyU3VwZXJEaWZmZXJlbnQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tZXRob2REdXBsaWNhdGVzL1R5cGVzR2VuZXJpY3NDb25jcmV0ZTJTdXBlckRpZmZlcmVudC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA5OWQzYzcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWV0aG9kRHVwbGljYXRlcy9UeXBlc0dlbmVyaWNzQ29uY3JldGUyU3VwZXJEaWZmZXJlbnQuamF2YQpAQCAtMCwwICsxLDE0IEBACitpbXBvcnQgamF2YS5hd3QuV2luZG93OworaW1wb3J0IGphdmF4LnN3aW5nLkpDb21wb25lbnQ7CitpbXBvcnQgamF2YS51dGlsLkFycmF5TGlzdDsKK2ltcG9ydCBqYXZhLnV0aWwuTGlzdDsKKworY2xhc3MgVHlwZXMgeworICAgIHB1YmxpYyB2b2lkIDxjYXJldD5tZXRob2QoTGlzdDw/IHN1cGVyIEpDb21wb25lbnQ+IHYpIHsKKyAgICAgICAgT2JqZWN0IG8gPSB2LmdldCgwKTsKKyAgICB9CisgICAgcHVibGljIHZvaWQgY29udGV4dCgpIHsKKyAgICAgICAgTGlzdDxXaW5kb3c+IGxpc3QgPSBuZXcgQXJyYXlMaXN0PFdpbmRvdz4oKTsKKyAgICAgICAgT2JqZWN0IG8gPSBsaXN0LmdldCgwKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWV0aG9kRHVwbGljYXRlcy9UeXBlc0dlbmVyaWNzUmF3MkNvbmNyZXRlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWV0aG9kRHVwbGljYXRlcy9UeXBlc0dlbmVyaWNzUmF3MkNvbmNyZXRlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2VhYjhiNAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tZXRob2REdXBsaWNhdGVzL1R5cGVzR2VuZXJpY3NSYXcyQ29uY3JldGUuamF2YQpAQCAtMCwwICsxLDEzIEBACitpbXBvcnQgamF2YS51dGlsLkxpc3Q7CisKK2NsYXNzIFR5cGVzIHsKKyAgcHJpdmF0ZSBMaXN0IG15TGlzdDsKKworICBwdWJsaWMgdm9pZCA8Y2FyZXQ+bWV0aG9kKExpc3Q8U3RyaW5nPiB2KSB7CisgICAgdi5jbGVhcigpOworICB9CisKKyAgcHVibGljIHZvaWQgY29udGV4dCgpIHsKKyAgICBteUxpc3QuY2xlYXIoKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tZXRob2REdXBsaWNhdGVzL1R5cGVzR2VuZXJpY3NSYXcyQ29uY3JldGUuamF2YS5hZnRlciBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tZXRob2REdXBsaWNhdGVzL1R5cGVzR2VuZXJpY3NSYXcyQ29uY3JldGUuamF2YS5hZnRlcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNGE5MzRiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ldGhvZER1cGxpY2F0ZXMvVHlwZXNHZW5lcmljc1JhdzJDb25jcmV0ZS5qYXZhLmFmdGVyCkBAIC0wLDAgKzEsMTMgQEAKK2ltcG9ydCBqYXZhLnV0aWwuTGlzdDsKKworY2xhc3MgVHlwZXMgeworICBwcml2YXRlIExpc3QgbXlMaXN0OworCisgIHB1YmxpYyB2b2lkIG1ldGhvZChMaXN0PFN0cmluZz4gdikgeworICAgIHYuY2xlYXIoKTsKKyAgfQorCisgIHB1YmxpYyB2b2lkIGNvbnRleHQoKSB7CisgICAgICBtZXRob2QobXlMaXN0KTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tZXRob2REdXBsaWNhdGVzL1R5cGVzR2VuZXJpY3NSYXcyUmF3LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWV0aG9kRHVwbGljYXRlcy9UeXBlc0dlbmVyaWNzUmF3MlJhdy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk2NjAxOTQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWV0aG9kRHVwbGljYXRlcy9UeXBlc0dlbmVyaWNzUmF3MlJhdy5qYXZhCkBAIC0wLDAgKzEsMTMgQEAKK2ltcG9ydCBqYXZhLnV0aWwuTGlzdDsKKworY2xhc3MgVHlwZXMgeworICBwcml2YXRlIExpc3QgbXlMaXN0OworCisgIHB1YmxpYyB2b2lkIDxjYXJldD5tZXRob2QoTGlzdCB2KSB7CisgICAgdi5jbGVhcigpOworICB9CisKKyAgcHVibGljIHZvaWQgY29udGV4dCgpIHsKKyAgICBteUxpc3QuY2xlYXIoKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tZXRob2REdXBsaWNhdGVzL1R5cGVzR2VuZXJpY3NSYXcyUmF3LmphdmEuYWZ0ZXIgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWV0aG9kRHVwbGljYXRlcy9UeXBlc0dlbmVyaWNzUmF3MlJhdy5qYXZhLmFmdGVyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY0ODJkMDgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWV0aG9kRHVwbGljYXRlcy9UeXBlc0dlbmVyaWNzUmF3MlJhdy5qYXZhLmFmdGVyCkBAIC0wLDAgKzEsMTMgQEAKK2ltcG9ydCBqYXZhLnV0aWwuTGlzdDsKKworY2xhc3MgVHlwZXMgeworICBwcml2YXRlIExpc3QgbXlMaXN0OworCisgIHB1YmxpYyB2b2lkIG1ldGhvZChMaXN0IHYpIHsKKyAgICB2LmNsZWFyKCk7CisgIH0KKworICBwdWJsaWMgdm9pZCBjb250ZXh0KCkgeworICAgICAgbWV0aG9kKG15TGlzdCk7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWV0aG9kRHVwbGljYXRlcy9UeXBlc0ltcGxlbWVudHMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tZXRob2REdXBsaWNhdGVzL1R5cGVzSW1wbGVtZW50cy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBhOTlhNmIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWV0aG9kRHVwbGljYXRlcy9UeXBlc0ltcGxlbWVudHMuamF2YQpAQCAtMCwwICsxLDEwIEBACitjbGFzcyBUeXBlcyB7CisgIHB1YmxpYyBjaGFyIDxjYXJldD5tZXRob2QoQ2hhclNlcXVlbmNlIHYpIHsKKyAgICByZXR1cm4gdi5jaGFyQXQoMCk7CisgIH0KKworICBwdWJsaWMgdm9pZCBjb250ZXh0KCkgeworICAgIFN0cmluZyB2ID0gImNoaWxkIHR5cGUiOworICAgIGNoYXIgYyA9IHYuY2hhckF0KDApOworICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWV0aG9kRHVwbGljYXRlcy9UeXBlc0ltcGxlbWVudHMuamF2YS5hZnRlciBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tZXRob2REdXBsaWNhdGVzL1R5cGVzSW1wbGVtZW50cy5qYXZhLmFmdGVyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAzNGIyMzEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWV0aG9kRHVwbGljYXRlcy9UeXBlc0ltcGxlbWVudHMuamF2YS5hZnRlcgpAQCAtMCwwICsxLDEwIEBACitjbGFzcyBUeXBlcyB7CisgIHB1YmxpYyBjaGFyIG1ldGhvZChDaGFyU2VxdWVuY2UgdikgeworICAgIHJldHVybiB2LmNoYXJBdCgwKTsKKyAgfQorCisgIHB1YmxpYyB2b2lkIGNvbnRleHQoKSB7CisgICAgU3RyaW5nIHYgPSAiY2hpbGQgdHlwZSI7CisgICAgY2hhciBjID0gbWV0aG9kKHYpOworICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWV0aG9kRHVwbGljYXRlcy9UeXBlc05vUmVsYXRpb25zaGlwLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWV0aG9kRHVwbGljYXRlcy9UeXBlc05vUmVsYXRpb25zaGlwLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjI1Yjk1MQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tZXRob2REdXBsaWNhdGVzL1R5cGVzTm9SZWxhdGlvbnNoaXAuamF2YQpAQCAtMCwwICsxLDkgQEAKK2NsYXNzIFR5cGVzIHsKKyAgcHVibGljIHZvaWQgPGNhcmV0Pm1ldGhvZChJbnRlZ2VyIHYpIHsKKyAgICBpbnQgaSA9IHYuaGFzaENvZGUoKTsKKyAgfQorCisgIHB1YmxpYyB2b2lkIGNvbnRleHQoQm9vbGVhbiB2KSB7CisgICAgaW50IGkgPSB2Lmhhc2hDb2RlKCk7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWV0aG9kRHVwbGljYXRlcy9VbnVzZWRQYXJhbWV0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tZXRob2REdXBsaWNhdGVzL1VudXNlZFBhcmFtZXRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVjZGM4NTgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWV0aG9kRHVwbGljYXRlcy9VbnVzZWRQYXJhbWV0ZXIuamF2YQpAQCAtMCwwICsxLDkgQEAKK2NsYXNzIFRlc3QgeworICB2b2lkIDxjYXJldD5mb28oaW50IGkpIHsKKyAgICBTeXN0ZW0ub3V0LnByaW50bG4oImhlbGxvIik7CisgIH0KKworICB2b2lkIGJhcigpIHsKKyAgICBTeXN0ZW0ub3V0LnByaW50bG4oImhlbGxvIik7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWV0aG9kRHVwbGljYXRlcy9VbnVzZWRQYXJhbWV0ZXIuamF2YS5hZnRlciBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tZXRob2REdXBsaWNhdGVzL1VudXNlZFBhcmFtZXRlci5qYXZhLmFmdGVyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZkNWIxMmUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWV0aG9kRHVwbGljYXRlcy9VbnVzZWRQYXJhbWV0ZXIuamF2YS5hZnRlcgpAQCAtMCwwICsxLDkgQEAKK2NsYXNzIFRlc3QgeworICB2b2lkIGZvbyhpbnQgaSkgeworICAgIFN5c3RlbS5vdXQucHJpbnRsbigiaGVsbG8iKTsKKyAgfQorCisgIHZvaWQgYmFyKCkgeworICAgICAgZm9vKDApOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ldGhvZER1cGxpY2F0ZXMvVW51c2VkUGFyYW1ldGVyMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ldGhvZER1cGxpY2F0ZXMvVW51c2VkUGFyYW1ldGVyMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNhMzMyNDgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWV0aG9kRHVwbGljYXRlcy9VbnVzZWRQYXJhbWV0ZXIxLmphdmEKQEAgLTAsMCArMSw5IEBACitjbGFzcyBUZXN0IHsKKyAgdm9pZCA8Y2FyZXQ+Zm9vKFN0cmluZyBzKSB7CisgICAgU3lzdGVtLm91dC5wcmludGxuKCJoZWxsbyIpOworICB9CisKKyAgdm9pZCBiYXIoKSB7CisgICAgU3lzdGVtLm91dC5wcmludGxuKCJoZWxsbyIpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ldGhvZER1cGxpY2F0ZXMvVW51c2VkUGFyYW1ldGVyMS5qYXZhLmFmdGVyIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ldGhvZER1cGxpY2F0ZXMvVW51c2VkUGFyYW1ldGVyMS5qYXZhLmFmdGVyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ4ZmMwZWMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWV0aG9kRHVwbGljYXRlcy9VbnVzZWRQYXJhbWV0ZXIxLmphdmEuYWZ0ZXIKQEAgLTAsMCArMSw5IEBACitjbGFzcyBUZXN0IHsKKyAgdm9pZCBmb28oU3RyaW5nIHMpIHsKKyAgICBTeXN0ZW0ub3V0LnByaW50bG4oImhlbGxvIik7CisgIH0KKworICB2b2lkIGJhcigpIHsKKyAgICAgIGZvbyhudWxsKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tZXRob2REdXBsaWNhdGVzL1ZhcmFyZ3MuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tZXRob2REdXBsaWNhdGVzL1ZhcmFyZ3MuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZDNhZWZkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ldGhvZER1cGxpY2F0ZXMvVmFyYXJncy5qYXZhCkBAIC0wLDAgKzEsMTYgQEAKK2ltcG9ydCBqYXZhLnV0aWwuKjsKKworcHVibGljIGNsYXNzIFZhcmFyZ3MgeworCXByaXZhdGUgTGlzdDxTdHJpbmc+IDxjYXJldD5tZXRob2QoU3RyaW5nLi4uIHZhbHVlcykgeworCQlyZXR1cm4gQXJyYXlzLmFzTGlzdCh2YWx1ZXMpOworCX0KKwlwcml2YXRlIHZvaWQgY29udGV4dCgpIHsKKwkJTGlzdDxTdHJpbmc+IGxpc3QxID0gQXJyYXlzLmFzTGlzdCgiaGkiLCAiYnllIik7CisJCUxpc3Q8U3RyaW5nPiBsaXN0MiA9IEFycmF5cy5hc0xpc3QoImhpIik7CisJCUxpc3Q8U3RyaW5nPiBsaXN0MyA9IEFycmF5cy5hc0xpc3QobmV3IFN0cmluZ1tdIHt9KTsKKwkJU3RyaW5nW10gc2EgPSBuZXcgU3RyaW5nW10ge307CisJCUxpc3Q8U3RyaW5nPiBsaXN0NCA9IEFycmF5cy5hc0xpc3Qoc2EpOworCisJCUxpc3QgbGlzdEEgPSBBcnJheXMuYXNMaXN0KDApOworCX0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tZXRob2REdXBsaWNhdGVzL1ZhcmFyZ3MuamF2YS5hZnRlciBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tZXRob2REdXBsaWNhdGVzL1ZhcmFyZ3MuamF2YS5hZnRlcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MmE5ZDk1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ldGhvZER1cGxpY2F0ZXMvVmFyYXJncy5qYXZhLmFmdGVyCkBAIC0wLDAgKzEsMTYgQEAKK2ltcG9ydCBqYXZhLnV0aWwuKjsKKworcHVibGljIGNsYXNzIFZhcmFyZ3MgeworCXByaXZhdGUgTGlzdDxTdHJpbmc+IG1ldGhvZChTdHJpbmcuLi4gdmFsdWVzKSB7CisJCXJldHVybiBBcnJheXMuYXNMaXN0KHZhbHVlcyk7CisJfQorCXByaXZhdGUgdm9pZCBjb250ZXh0KCkgeworCQlMaXN0PFN0cmluZz4gbGlzdDEgPSBtZXRob2QoImhpIiwgImJ5ZSIpOworCQlMaXN0PFN0cmluZz4gbGlzdDIgPSBtZXRob2QoImhpIik7CisJCUxpc3Q8U3RyaW5nPiBsaXN0MyA9IG1ldGhvZChuZXcgU3RyaW5nW10ge30pOworCQlTdHJpbmdbXSBzYSA9IG5ldyBTdHJpbmdbXSB7fTsKKwkJTGlzdDxTdHJpbmc+IGxpc3Q0ID0gbWV0aG9kKHNhKTsKKworCQlMaXN0IGxpc3RBID0gQXJyYXlzLmFzTGlzdCgwKTsKKwl9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWV0aG9kRHVwbGljYXRlc01pc2MvQW5vbnltb3VzSW5pdGlhbGl6ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tZXRob2REdXBsaWNhdGVzTWlzYy9Bbm9ueW1vdXNJbml0aWFsaXplci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQzMzFmM2EKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWV0aG9kRHVwbGljYXRlc01pc2MvQW5vbnltb3VzSW5pdGlhbGl6ZXIuamF2YQpAQCAtMCwwICsxLDE1IEBACitwdWJsaWMgY2xhc3MgTW9kZWwgeworICBwdWJsaWMgc3RhdGljIGZpbmFsIFJ1bm5hYmxlIEZPPGNhcmV0Pk8gPSBuZXcgUnVubmFibGUoKSB7CisgICAgcHVibGljIHZvaWQgcnVuKCkgeworICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJhYmMiKTsKKyAgICB9CisgIH07CisKKyAgcHVibGljIHZvaWQgZm9vKCkgeworICAgIG5ldyBSdW5uYWJsZSgpIHsKKyAgICAgIHB1YmxpYyB2b2lkIHJ1bigpIHsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJhYmMiKTsKKyAgICAgIH0KKyAgICB9LnJ1bigpOworICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWV0aG9kRHVwbGljYXRlc01pc2MvQW5vbnltb3VzSW5pdGlhbGl6ZXIuamF2YS5hZnRlciBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tZXRob2REdXBsaWNhdGVzTWlzYy9Bbm9ueW1vdXNJbml0aWFsaXplci5qYXZhLmFmdGVyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE1MjExNmMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWV0aG9kRHVwbGljYXRlc01pc2MvQW5vbnltb3VzSW5pdGlhbGl6ZXIuamF2YS5hZnRlcgpAQCAtMCwwICsxLDExIEBACitwdWJsaWMgY2xhc3MgTW9kZWwgeworICBwdWJsaWMgc3RhdGljIGZpbmFsIFJ1bm5hYmxlIEZPTyA9IG5ldyBSdW5uYWJsZSgpIHsKKyAgICBwdWJsaWMgdm9pZCBydW4oKSB7CisgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oImFiYyIpOworICAgIH0KKyAgfTsKKworICBwdWJsaWMgdm9pZCBmb28oKSB7CisgICAgRk9PLnJ1bigpOworICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWV0aG9kRHVwbGljYXRlc01pc2MvQ2FuZGlkYXRlVW5xdWFsaWZpZWRTdGF0aWNBY2Nlc3MuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tZXRob2REdXBsaWNhdGVzTWlzYy9DYW5kaWRhdGVVbnF1YWxpZmllZFN0YXRpY0FjY2Vzcy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIwODRhMDYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWV0aG9kRHVwbGljYXRlc01pc2MvQ2FuZGlkYXRlVW5xdWFsaWZpZWRTdGF0aWNBY2Nlc3MuamF2YQpAQCAtMCwwICsxLDE3IEBACitwdWJsaWMgY2xhc3MgYWEgeworICAgIHB1YmxpYyBzdGF0aWMgYm9vbGVhbiBpc1ZpczxjYXJldD51YWxVcGRhdGUoaW50IHVwZGF0ZV90eXBlKSB7CisgICAgICAgIHJldHVybiB1cGRhdGVfdHlwZSA8PSBJYWFhLkZVTExfUVVPVEVfVklTVUFMOworICAgIH0KK30KKworaW50ZXJmYWNlIElhYWEgeworICAgIGludCBGVUxMX1FVT1RFX1ZJU1VBTCA9IDA7Cit9CisKK2NsYXNzIGEgaW1wbGVtZW50cyBJYWFhIHsKKyAgICBpbnQgdXBkYXRlX3R5cGUgPSA4OworCisgICAgcHVibGljIHN0YXRpYyBib29sZWFuIGJsYWJsYShpbnQgdXBkYXRlX3R5cGUpIHsKKyAgICAgICAgcmV0dXJuIHVwZGF0ZV90eXBlIDw9IEZVTExfUVVPVEVfVklTVUFMOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWV0aG9kRHVwbGljYXRlc01pc2MvQ2FuZGlkYXRlVW5xdWFsaWZpZWRTdGF0aWNBY2Nlc3MuamF2YS5hZnRlciBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tZXRob2REdXBsaWNhdGVzTWlzYy9DYW5kaWRhdGVVbnF1YWxpZmllZFN0YXRpY0FjY2Vzcy5qYXZhLmFmdGVyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVlNzljNTMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWV0aG9kRHVwbGljYXRlc01pc2MvQ2FuZGlkYXRlVW5xdWFsaWZpZWRTdGF0aWNBY2Nlc3MuamF2YS5hZnRlcgpAQCAtMCwwICsxLDE3IEBACitwdWJsaWMgY2xhc3MgYWEgeworICAgIHB1YmxpYyBzdGF0aWMgYm9vbGVhbiBpc1Zpc3VhbFVwZGF0ZShpbnQgdXBkYXRlX3R5cGUpIHsKKyAgICAgICAgcmV0dXJuIHVwZGF0ZV90eXBlIDw9IElhYWEuRlVMTF9RVU9URV9WSVNVQUw7CisgICAgfQorfQorCitpbnRlcmZhY2UgSWFhYSB7CisgICAgaW50IEZVTExfUVVPVEVfVklTVUFMID0gMDsKK30KKworY2xhc3MgYSBpbXBsZW1lbnRzIElhYWEgeworICAgIGludCB1cGRhdGVfdHlwZSA9IDg7CisKKyAgICBwdWJsaWMgc3RhdGljIGJvb2xlYW4gYmxhYmxhKGludCB1cGRhdGVfdHlwZSkgeworICAgICAgICByZXR1cm4gYWEuaXNWaXN1YWxVcGRhdGUodXBkYXRlX3R5cGUpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWV0aG9kRHVwbGljYXRlc01pc2MvQ2hhbmdlUmV0dXJuVHlwZUJ5RmllbGQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tZXRob2REdXBsaWNhdGVzTWlzYy9DaGFuZ2VSZXR1cm5UeXBlQnlGaWVsZC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEwODE0MzcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWV0aG9kRHVwbGljYXRlc01pc2MvQ2hhbmdlUmV0dXJuVHlwZUJ5RmllbGQuamF2YQpAQCAtMCwwICsxLDIxIEBACitjbGFzcyBUZXN0IHsKKyAgICBwcml2YXRlIEIgbXlGaWVsZDsKKworICAgIHB1YmxpYyB2b2lkIG1ldGhvZCgpIHsKKyAgICAgICAgT2JqZWN0IG8gPSBteUZpZWxkOworICAgICAgICBTdHJpbmcgYSA9IG15RmllbGQuYmJiLnh4eCgpOworICAgIH0KKworICAgIHByaXZhdGUgT2JqZWN0IGY8Y2FyZXQ+b28oKXsKKyAgICAgICAgcmV0dXJuIG15RmllbGQ7CisgICAgfQorCisgICAgcHJpdmF0ZSBzdGF0aWMgY2xhc3MgQiB7CisgICAgICAgIHByaXZhdGUgQyBiYmI7CisgICAgfQorCisgICAgcHJpdmF0ZSBzdGF0aWMgY2xhc3MgQyB7CisgICAgICAgIFN0cmluZyB4eHgoKSB7cmV0dXJuICIiO30KKyAgICB9CisKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWV0aG9kRHVwbGljYXRlc01pc2MvQ2hhbmdlUmV0dXJuVHlwZUJ5RmllbGQuamF2YS5hZnRlciBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tZXRob2REdXBsaWNhdGVzTWlzYy9DaGFuZ2VSZXR1cm5UeXBlQnlGaWVsZC5qYXZhLmFmdGVyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg1NzdhMGQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWV0aG9kRHVwbGljYXRlc01pc2MvQ2hhbmdlUmV0dXJuVHlwZUJ5RmllbGQuamF2YS5hZnRlcgpAQCAtMCwwICsxLDIxIEBACitjbGFzcyBUZXN0IHsKKyAgICBwcml2YXRlIEIgbXlGaWVsZDsKKworICAgIHB1YmxpYyB2b2lkIG1ldGhvZCgpIHsKKyAgICAgICAgT2JqZWN0IG8gPSBmb28oKTsKKyAgICAgICAgU3RyaW5nIGEgPSBmb28oKS5iYmIueHh4KCk7CisgICAgfQorCisgICAgcHJpdmF0ZSBCIGZvbygpeworICAgICAgICByZXR1cm4gbXlGaWVsZDsKKyAgICB9CisKKyAgICBwcml2YXRlIHN0YXRpYyBjbGFzcyBCIHsKKyAgICAgICAgcHJpdmF0ZSBDIGJiYjsKKyAgICB9CisKKyAgICBwcml2YXRlIHN0YXRpYyBjbGFzcyBDIHsKKyAgICAgICAgU3RyaW5nIHh4eCgpIHtyZXR1cm4gIiI7fQorICAgIH0KKworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tZXRob2REdXBsaWNhdGVzTWlzYy9DaGFuZ2VSZXR1cm5UeXBlQnlQYXJhbWV0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tZXRob2REdXBsaWNhdGVzTWlzYy9DaGFuZ2VSZXR1cm5UeXBlQnlQYXJhbWV0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMDA2N2U5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ldGhvZER1cGxpY2F0ZXNNaXNjL0NoYW5nZVJldHVyblR5cGVCeVBhcmFtZXRlci5qYXZhCkBAIC0wLDAgKzEsMTIgQEAKK2NsYXNzIEEgeworCisgICAgcHVibGljIHZvaWQgYmFyKCkgeworICAgICAgICBtKCIiKTsKKyAgICB9CisKKyAgICBwcml2YXRlIE9iamVjdCBmPGNhcmV0Pm9vKCkgeworICAgICAgICByZXR1cm4gIiI7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgbShTdHJpbmcgc3MpIHt9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ldGhvZER1cGxpY2F0ZXNNaXNjL0NoYW5nZVJldHVyblR5cGVCeVBhcmFtZXRlci5qYXZhLmFmdGVyIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ldGhvZER1cGxpY2F0ZXNNaXNjL0NoYW5nZVJldHVyblR5cGVCeVBhcmFtZXRlci5qYXZhLmFmdGVyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZlNmM0ZmEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWV0aG9kRHVwbGljYXRlc01pc2MvQ2hhbmdlUmV0dXJuVHlwZUJ5UGFyYW1ldGVyLmphdmEuYWZ0ZXIKQEAgLTAsMCArMSwxMiBAQAorY2xhc3MgQSB7CisKKyAgICBwdWJsaWMgdm9pZCBiYXIoKSB7CisgICAgICAgIG0oZm9vKCkpOworICAgIH0KKworICAgIHByaXZhdGUgU3RyaW5nIGZvbygpIHsKKyAgICAgICAgcmV0dXJuICIiOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIG0oU3RyaW5nIHNzKSB7fQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tZXRob2REdXBsaWNhdGVzTWlzYy9DaGFuZ2VSZXR1cm5UeXBlQnlSZXR1cm5FeHByZXNzaW9uLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWV0aG9kRHVwbGljYXRlc01pc2MvQ2hhbmdlUmV0dXJuVHlwZUJ5UmV0dXJuRXhwcmVzc2lvbi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMxY2E4NWQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWV0aG9kRHVwbGljYXRlc01pc2MvQ2hhbmdlUmV0dXJuVHlwZUJ5UmV0dXJuRXhwcmVzc2lvbi5qYXZhCkBAIC0wLDAgKzEsMjEgQEAKK2ltcG9ydCBqYXZhLnV0aWwuTWFwOworaW1wb3J0IGphdmEudXRpbC5TZXQ7CisKK3B1YmxpYyBjbGFzcyBBIHsKKyAgICBwdWJsaWMgU3RyaW5nIGdldChTdHJpbmcgaykgeworICAgICAgICByZXR1cm4gYnVpbGRNYXAoKS5nZXQoayk7CisgICAgfQorCisgICAgcHVibGljIFNldDxTdHJpbmc+IGdldEFsbChTdHJpbmcgeCkgeworICAgICAgICByZXR1cm4gYnVpbGRNYXAoKS5rZXlTZXQoKTsKKyAgICB9CisKKyAgICBwdWJsaWMgTWFwPFN0cmluZywgU3RyaW5nPiBmbzxjYXJldD5vKCkgeworICAgICAgcmV0dXJuIGJ1aWxkTWFwKCk7CisgICAgfQorCisgICAgcHVibGljIE1hcDxTdHJpbmcsIFN0cmluZz4gYnVpbGRNYXAoKSB7CisgICAgICAgIHJldHVybiBudWxsOworICAgIH0KKworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tZXRob2REdXBsaWNhdGVzTWlzYy9DaGFuZ2VSZXR1cm5UeXBlQnlSZXR1cm5FeHByZXNzaW9uLmphdmEuYWZ0ZXIgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWV0aG9kRHVwbGljYXRlc01pc2MvQ2hhbmdlUmV0dXJuVHlwZUJ5UmV0dXJuRXhwcmVzc2lvbi5qYXZhLmFmdGVyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjViOGUzODQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWV0aG9kRHVwbGljYXRlc01pc2MvQ2hhbmdlUmV0dXJuVHlwZUJ5UmV0dXJuRXhwcmVzc2lvbi5qYXZhLmFmdGVyCkBAIC0wLDAgKzEsMjEgQEAKK2ltcG9ydCBqYXZhLnV0aWwuTWFwOworaW1wb3J0IGphdmEudXRpbC5TZXQ7CisKK3B1YmxpYyBjbGFzcyBBIHsKKyAgICBwdWJsaWMgU3RyaW5nIGdldChTdHJpbmcgaykgeworICAgICAgICByZXR1cm4gZm9vKCkuZ2V0KGspOworICAgIH0KKworICAgIHB1YmxpYyBTZXQ8U3RyaW5nPiBnZXRBbGwoU3RyaW5nIHgpIHsKKyAgICAgICAgcmV0dXJuIGZvbygpLmtleVNldCgpOworICAgIH0KKworICAgIHB1YmxpYyBNYXA8U3RyaW5nLCBTdHJpbmc+IGZvbygpIHsKKyAgICAgIHJldHVybiBidWlsZE1hcCgpOworICAgIH0KKworICAgIHB1YmxpYyBNYXA8U3RyaW5nLCBTdHJpbmc+IGJ1aWxkTWFwKCkgeworICAgICAgICByZXR1cm4gbnVsbDsKKyAgICB9CisKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWV0aG9kRHVwbGljYXRlc01pc2MvQ2hhbmdlUmV0dXJuVHlwZUJ5UmV0dXJuVmFsdWUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tZXRob2REdXBsaWNhdGVzTWlzYy9DaGFuZ2VSZXR1cm5UeXBlQnlSZXR1cm5WYWx1ZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk3MmUwZjAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWV0aG9kRHVwbGljYXRlc01pc2MvQ2hhbmdlUmV0dXJuVHlwZUJ5UmV0dXJuVmFsdWUuamF2YQpAQCAtMCwwICsxLDEzIEBACisKK3B1YmxpYyBjbGFzcyBBIHsKKworCisgICAgcHVibGljIE9iamVjdCBmbzxjYXJldD5vKCkgeworICAgICAgcmV0dXJuIG51bGw7CisgICAgfQorCisgICAgcHVibGljIFN0cmluZyBiYXIoKSB7CisgICAgICAgIHJldHVybiBudWxsOworICAgIH0KKworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tZXRob2REdXBsaWNhdGVzTWlzYy9DaGFuZ2VSZXR1cm5UeXBlQnlSZXR1cm5WYWx1ZS5qYXZhLmFmdGVyIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ldGhvZER1cGxpY2F0ZXNNaXNjL0NoYW5nZVJldHVyblR5cGVCeVJldHVyblZhbHVlLmphdmEuYWZ0ZXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDQ5MmRlYgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tZXRob2REdXBsaWNhdGVzTWlzYy9DaGFuZ2VSZXR1cm5UeXBlQnlSZXR1cm5WYWx1ZS5qYXZhLmFmdGVyCkBAIC0wLDAgKzEsMTMgQEAKKworcHVibGljIGNsYXNzIEEgeworCisKKyAgICBwdWJsaWMgU3RyaW5nIGZvbygpIHsKKyAgICAgIHJldHVybiBudWxsOworICAgIH0KKworICAgIHB1YmxpYyBTdHJpbmcgYmFyKCkgeworICAgICAgICByZXR1cm4gZm9vKCk7CisgICAgfQorCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ldGhvZER1cGxpY2F0ZXNNaXNjL0NvcnJlY3RUaGlzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWV0aG9kRHVwbGljYXRlc01pc2MvQ29ycmVjdFRoaXMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYjk5YTU4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ldGhvZER1cGxpY2F0ZXNNaXNjL0NvcnJlY3RUaGlzLmphdmEKQEAgLTAsMCArMSwxNCBAQAorcHVibGljIGNsYXNzIEJhc2VDbGFzcyBleHRlbmRzIEpDb21wb25lbnQgeworfQorCitjbGFzcyBTdWJDbGFzcyBleHRlbmRzIEJhc2VDbGFzcyB7Cisgdm9pZCBhKCkgeworICBTeXN0ZW0ub3V0LnByaW50bG4oZ2V0TG9jYXRpb24oKSk7CisgfQorfQorCitjbGFzcyBVdGlsIHsKKyBwdWJsaWMgc3RhdGljIHZvaWQgbWV0PGNhcmV0PmhvZChCYXNlQ2xhc3MgYmFzZSkgeworICBTeXN0ZW0ub3V0LnByaW50bG4oYmFzZS5nZXRMb2NhdGlvbigpKTsKKyB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWV0aG9kRHVwbGljYXRlc01pc2MvQ29ycmVjdFRoaXMuamF2YS5hZnRlciBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tZXRob2REdXBsaWNhdGVzTWlzYy9Db3JyZWN0VGhpcy5qYXZhLmFmdGVyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE4MWExODkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWV0aG9kRHVwbGljYXRlc01pc2MvQ29ycmVjdFRoaXMuamF2YS5hZnRlcgpAQCAtMCwwICsxLDE0IEBACitwdWJsaWMgY2xhc3MgQmFzZUNsYXNzIGV4dGVuZHMgSkNvbXBvbmVudCB7Cit9CisKK2NsYXNzIFN1YkNsYXNzIGV4dGVuZHMgQmFzZUNsYXNzIHsKKyB2b2lkIGEoKSB7CisgICAgIFV0aWwubWV0aG9kKFN1YkNsYXNzLnRoaXMpOworIH0KK30KKworY2xhc3MgVXRpbCB7CisgcHVibGljIHN0YXRpYyB2b2lkIG1ldGhvZChCYXNlQ2xhc3MgYmFzZSkgeworICBTeXN0ZW0ub3V0LnByaW50bG4oYmFzZS5nZXRMb2NhdGlvbigpKTsKKyB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWV0aG9kRHVwbGljYXRlc01pc2MvRGV0ZWN0TmFtZUNvbmZsaWN0cy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ldGhvZER1cGxpY2F0ZXNNaXNjL0RldGVjdE5hbWVDb25mbGljdHMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MDk4NzNhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ldGhvZER1cGxpY2F0ZXNNaXNjL0RldGVjdE5hbWVDb25mbGljdHMuamF2YQpAQCAtMCwwICsxLDE3IEBACitjbGFzcyBUZXN0IHsKKyAgcHVibGljIEZvbyBjcmVhdGVGb28oKSB7CisgICAgICAgIHJldHVybiBuZXcgRm9vKCkgeworICAgICAgICAgICAgcHVibGljIHZvaWQgYmFyKCkgeworICAgICAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigxKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBiPGNhcmV0PmFyKCkgeworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oMSk7CisgICAgfQorCisgICAgcHVibGljIGludGVyZmFjZSBGb28geworICAgICAgICB2b2lkIGJhcigpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWV0aG9kRHVwbGljYXRlc01pc2MvRGV0ZWN0TmFtZUNvbmZsaWN0cy5qYXZhLmFmdGVyIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ldGhvZER1cGxpY2F0ZXNNaXNjL0RldGVjdE5hbWVDb25mbGljdHMuamF2YS5hZnRlcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mN2JjOTYwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ldGhvZER1cGxpY2F0ZXNNaXNjL0RldGVjdE5hbWVDb25mbGljdHMuamF2YS5hZnRlcgpAQCAtMCwwICsxLDE3IEBACitjbGFzcyBUZXN0IHsKKyAgcHVibGljIEZvbyBjcmVhdGVGb28oKSB7CisgICAgICAgIHJldHVybiBuZXcgRm9vKCkgeworICAgICAgICAgICAgcHVibGljIHZvaWQgYmFyKCkgeworICAgICAgICAgICAgICAgIFRlc3QudGhpcy5iYXIoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBiYXIoKSB7CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigxKTsKKyAgICB9CisKKyAgICBwdWJsaWMgaW50ZXJmYWNlIEZvbyB7CisgICAgICAgIHZvaWQgYmFyKCk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tZXRob2REdXBsaWNhdGVzTWlzYy9EZXRlY3ROYW1lQ29uZmxpY3RzV2l0aFN0YXRpYy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ldGhvZER1cGxpY2F0ZXNNaXNjL0RldGVjdE5hbWVDb25mbGljdHNXaXRoU3RhdGljLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGUxY2QwMQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tZXRob2REdXBsaWNhdGVzTWlzYy9EZXRlY3ROYW1lQ29uZmxpY3RzV2l0aFN0YXRpYy5qYXZhCkBAIC0wLDAgKzEsMTcgQEAKK2NsYXNzIFRlc3QgeworICBwdWJsaWMgRm9vIGNyZWF0ZUZvbygpIHsKKyAgICAgICAgcmV0dXJuIG5ldyBGb28oKSB7CisgICAgICAgICAgICBwdWJsaWMgdm9pZCBiYXIoKSB7CisgICAgICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKDEpOworICAgICAgICAgICAgfQorICAgICAgICB9OworICAgIH0KKworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBiPGNhcmV0PmFyKCkgeworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oMSk7CisgICAgfQorCisgICAgcHVibGljIGludGVyZmFjZSBGb28geworICAgICAgICB2b2lkIGJhcigpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWV0aG9kRHVwbGljYXRlc01pc2MvRGV0ZWN0TmFtZUNvbmZsaWN0c1dpdGhTdGF0aWMuamF2YS5hZnRlciBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tZXRob2REdXBsaWNhdGVzTWlzYy9EZXRlY3ROYW1lQ29uZmxpY3RzV2l0aFN0YXRpYy5qYXZhLmFmdGVyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ3YTFlNWMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWV0aG9kRHVwbGljYXRlc01pc2MvRGV0ZWN0TmFtZUNvbmZsaWN0c1dpdGhTdGF0aWMuamF2YS5hZnRlcgpAQCAtMCwwICsxLDE3IEBACitjbGFzcyBUZXN0IHsKKyAgcHVibGljIEZvbyBjcmVhdGVGb28oKSB7CisgICAgICAgIHJldHVybiBuZXcgRm9vKCkgeworICAgICAgICAgICAgcHVibGljIHZvaWQgYmFyKCkgeworICAgICAgICAgICAgICAgIFRlc3QuYmFyKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH07CisgICAgfQorCisgICAgcHVibGljIHN0YXRpYyB2b2lkIGJhcigpIHsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKDEpOworICAgIH0KKworICAgIHB1YmxpYyBpbnRlcmZhY2UgRm9vIHsKKyAgICAgICAgdm9pZCBiYXIoKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ldGhvZER1cGxpY2F0ZXNNaXNjL0luY29ycmVjdFZhcmFyZ3NBY2Nlc3MuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tZXRob2REdXBsaWNhdGVzTWlzYy9JbmNvcnJlY3RWYXJhcmdzQWNjZXNzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTYzZGRkYwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tZXRob2REdXBsaWNhdGVzTWlzYy9JbmNvcnJlY3RWYXJhcmdzQWNjZXNzLmphdmEKQEAgLTAsMCArMSwxNCBAQAorY2xhc3MgQSB7CisgIHZvaWQgYmFyKGludCBpKXsKKyAgICBtZXRob2QoMSk7CisgICAgbWV0aG9kKGksICJhIik7CisgICAgbWV0aG9kKDEsICJhIiwgImIiKTsKKyAgfQorCisgIHZvaWQgbTxjYXJldD4oU3RyaW5nLi4uIGFyZ3MpIHsKKyAgICBtZXRob2QoMSwgYXJncyk7CisgIH0KKworICB2b2lkIG1ldGhvZChpbnQgaSwgU3RyaW5nLi4uIGFyZ3MpIHsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tZXRob2REdXBsaWNhdGVzTWlzYy9JbmNvcnJlY3RWYXJhcmdzQWNjZXNzLmphdmEuYWZ0ZXIgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWV0aG9kRHVwbGljYXRlc01pc2MvSW5jb3JyZWN0VmFyYXJnc0FjY2Vzcy5qYXZhLmFmdGVyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRmZTYyMTQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWV0aG9kRHVwbGljYXRlc01pc2MvSW5jb3JyZWN0VmFyYXJnc0FjY2Vzcy5qYXZhLmFmdGVyCkBAIC0wLDAgKzEsMTQgQEAKK2NsYXNzIEEgeworICB2b2lkIGJhcihpbnQgaSl7CisgICAgICBtKG5ldyBTdHJpbmdbMF0pOworICAgICAgbWV0aG9kKGksICJhIik7CisgICAgICBtKCJhIiwgImIiKTsKKyAgfQorCisgIHZvaWQgbShTdHJpbmcuLi4gYXJncykgeworICAgIG1ldGhvZCgxLCBhcmdzKTsKKyAgfQorCisgIHZvaWQgbWV0aG9kKGludCBpLCBTdHJpbmcuLi4gYXJncykgeworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ldGhvZER1cGxpY2F0ZXNNaXNjL0luc2VydFN1cGVyUXVhbGlmaWVyV2hlbk5hbWVDb25mbGljdHMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tZXRob2REdXBsaWNhdGVzTWlzYy9JbnNlcnRTdXBlclF1YWxpZmllcldoZW5OYW1lQ29uZmxpY3RzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDY4M2NmNwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tZXRob2REdXBsaWNhdGVzTWlzYy9JbnNlcnRTdXBlclF1YWxpZmllcldoZW5OYW1lQ29uZmxpY3RzLmphdmEKQEAgLTAsMCArMSwxMSBAQAorcHVibGljIGNsYXNzIGEgeworICB2b2lkIGY8Y2FyZXQ+b28oKSB7CisgICAgU3lzdGVtLm91dC5wcmludGxuKCk7CisgIH0KK30KKworY2xhc3MgYiBleHRlbmRzIGEgeworICB2b2lkIGZvbygpIHsKKyAgICBTeXN0ZW0ub3V0LnByaW50bG4oKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tZXRob2REdXBsaWNhdGVzTWlzYy9JbnNlcnRTdXBlclF1YWxpZmllcldoZW5OYW1lQ29uZmxpY3RzLmphdmEuYWZ0ZXIgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWV0aG9kRHVwbGljYXRlc01pc2MvSW5zZXJ0U3VwZXJRdWFsaWZpZXJXaGVuTmFtZUNvbmZsaWN0cy5qYXZhLmFmdGVyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEwZDdjNTcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWV0aG9kRHVwbGljYXRlc01pc2MvSW5zZXJ0U3VwZXJRdWFsaWZpZXJXaGVuTmFtZUNvbmZsaWN0cy5qYXZhLmFmdGVyCkBAIC0wLDAgKzEsMTEgQEAKK3B1YmxpYyBjbGFzcyBhIHsKKyAgdm9pZCBmb28oKSB7CisgICAgU3lzdGVtLm91dC5wcmludGxuKCk7CisgIH0KK30KKworY2xhc3MgYiBleHRlbmRzIGEgeworICB2b2lkIGZvbygpIHsKKyAgICAgIHN1cGVyLmZvbygpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ldGhvZER1cGxpY2F0ZXNNaXNjL01ldGhvZFR5cGVQYXJhbWV0ZXJzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWV0aG9kRHVwbGljYXRlc01pc2MvTWV0aG9kVHlwZVBhcmFtZXRlcnMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNWU0ODkyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ldGhvZER1cGxpY2F0ZXNNaXNjL01ldGhvZFR5cGVQYXJhbWV0ZXJzLmphdmEKQEAgLTAsMCArMSwxNCBAQAoraW1wb3J0IGphdmEudXRpbC4qOworCitjbGFzcyBUZXN0IHsKKyAgICAgPEUgZXh0ZW5kcyBBPiBMaXN0PEU+IG1ldDxjYXJldD5ob2QoKSB7CisgICAgICAgIHJldHVybiBuZXcgQXJyYXlMaXN0PEU+KCk7CisgICAgfQorCisgICAgdm9pZCBkdXBsaWNhdGVkKCkgeworICAgICAgICBMaXN0PEI+IGwgPSBuZXcgQXJyYXlMaXN0PEI+KCk7CisgICAgfQorCisgICAgY2xhc3MgQSB7fQorICAgIGNsYXNzIEIgZXh0ZW5kcyBBIHt9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ldGhvZER1cGxpY2F0ZXNNaXNjL01ldGhvZFR5cGVQYXJhbWV0ZXJzLmphdmEuYWZ0ZXIgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWV0aG9kRHVwbGljYXRlc01pc2MvTWV0aG9kVHlwZVBhcmFtZXRlcnMuamF2YS5hZnRlcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZGJlNDY2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ldGhvZER1cGxpY2F0ZXNNaXNjL01ldGhvZFR5cGVQYXJhbWV0ZXJzLmphdmEuYWZ0ZXIKQEAgLTAsMCArMSwxNCBAQAoraW1wb3J0IGphdmEudXRpbC4qOworCitjbGFzcyBUZXN0IHsKKyAgICAgPEUgZXh0ZW5kcyBBPiBMaXN0PEU+IG1ldGhvZCgpIHsKKyAgICAgICAgcmV0dXJuIG5ldyBBcnJheUxpc3Q8RT4oKTsKKyAgICB9CisKKyAgICB2b2lkIGR1cGxpY2F0ZWQoKSB7CisgICAgICAgIExpc3Q8Qj4gbCA9IG1ldGhvZCgpOworICAgIH0KKworICAgIGNsYXNzIEEge30KKyAgICBjbGFzcyBCIGV4dGVuZHMgQSB7fQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tZXRob2REdXBsaWNhdGVzTWlzYy9Ob0RldGVjdE5hbWVDb25mbGljdHMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tZXRob2REdXBsaWNhdGVzTWlzYy9Ob0RldGVjdE5hbWVDb25mbGljdHMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42Njk4ZWE0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ldGhvZER1cGxpY2F0ZXNNaXNjL05vRGV0ZWN0TmFtZUNvbmZsaWN0cy5qYXZhCkBAIC0wLDAgKzEsMTcgQEAKK2NsYXNzIFRlc3QgeworICBwdWJsaWMgRm9vIGNyZWF0ZUZvbygpIHsKKyAgICAgICAgcmV0dXJuIG5ldyBGb28oKSB7CisgICAgICAgICAgICBwdWJsaWMgdm9pZCBiYXIoKSB7CisgICAgICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKDEpOworICAgICAgICAgICAgfQorICAgICAgICB9OworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIGI8Y2FyZXQ+YXIoaW50IGkpIHsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKGkpOworICAgIH0KKworICAgIHB1YmxpYyBpbnRlcmZhY2UgRm9vIHsKKyAgICAgICAgdm9pZCBiYXIoKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ldGhvZER1cGxpY2F0ZXNNaXNjL05vRGV0ZWN0TmFtZUNvbmZsaWN0cy5qYXZhLmFmdGVyIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ldGhvZER1cGxpY2F0ZXNNaXNjL05vRGV0ZWN0TmFtZUNvbmZsaWN0cy5qYXZhLmFmdGVyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhjYzBjODEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWV0aG9kRHVwbGljYXRlc01pc2MvTm9EZXRlY3ROYW1lQ29uZmxpY3RzLmphdmEuYWZ0ZXIKQEAgLTAsMCArMSwxNyBAQAorY2xhc3MgVGVzdCB7CisgIHB1YmxpYyBGb28gY3JlYXRlRm9vKCkgeworICAgICAgICByZXR1cm4gbmV3IEZvbygpIHsKKyAgICAgICAgICAgIHB1YmxpYyB2b2lkIGJhcigpIHsKKyAgICAgICAgICAgICAgICBiYXIoMSk7CisgICAgICAgICAgICB9CisgICAgICAgIH07CisgICAgfQorCisgICAgcHVibGljIHZvaWQgYmFyKGludCBpKSB7CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihpKTsKKyAgICB9CisKKyAgICBwdWJsaWMgaW50ZXJmYWNlIEZvbyB7CisgICAgICAgIHZvaWQgYmFyKCk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tZXRob2REdXBsaWNhdGVzTWlzYy9QYXJhbWV0ZXJzTW9kaWZpY2F0aW9uLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWV0aG9kRHVwbGljYXRlc01pc2MvUGFyYW1ldGVyc01vZGlmaWNhdGlvbi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdhYWY3ZTgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWV0aG9kRHVwbGljYXRlc01pc2MvUGFyYW1ldGVyc01vZGlmaWNhdGlvbi5qYXZhCkBAIC0wLDAgKzEsMjQgQEAKK2NsYXNzIFRlc3QgeworICBwcml2YXRlIGRvdWJsZSBkPGNhcmV0PmQxKGludCBpbmRleCwgZG91YmxlIGNvbXBWYWwsIGludCBudW1EYXlzKSB7CisgICAgZG91YmxlIGF2ZVNsb3BlID0gMDsKKworICAgIGZvciAoaW50IGkgPSAwOyBjb25kaXRpb24oaW5kZXgsIG51bURheXMsIGkpOyBpKyspIHsKKyAgICAgIC0taW5kZXg7CisgICAgICBhdmVTbG9wZSA9IGNvbW1pblNlbmRpbmcoaW5kZXgsIGNvbXBWYWwsIGF2ZVNsb3BlLCBpKTsKKyAgICB9CisgICAgcmV0dXJuIGF2ZVNsb3BlOworICB9CisKKyAgcHJpdmF0ZSBkb3VibGUgc3MyKGludCBpbmRleCwgZG91YmxlIGNvbXBWYWwsIGludCBudW1EYXlzKSB7CisgICAgZG91YmxlIGF2ZVNsb3BlID0gMDsKKworICAgIGZvciAoaW50IGkgPSAwOyBjb25kaXRpb24oaW5kZXgsIG51bURheXMsIGkpOyBpKyspIHsKKyAgICAgIC0taW5kZXg7CisgICAgICBhdmVTbG9wZSA9IGNvbW1pblNlbmRpbmcoaW5kZXgsIGNvbXBWYWwsIGF2ZVNsb3BlLCBpKTsKKyAgICB9CisgICAgcmV0dXJuIGF2ZVNsb3BlOworICB9CisKKyAgcHJpdmF0ZSBib29sZWFuIGNvbmRpdGlvbihpbnQgaWR4LCBpbnQgbiwgaW50IGkpe3JldHVybiBmYWxzZTt9CisgIHByaXZhdGUgZG91YmxlIGNvbW1pblNlbmRpbmcoaW50IGlkeCwgZG91YmxlIGQsIGRvdWJsZSBhLCBpbnQgaSl7cmV0dXJuIDA7fQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tZXRob2REdXBsaWNhdGVzTWlzYy9QYXJhbWV0ZXJzTW9kaWZpY2F0aW9uLmphdmEuYWZ0ZXIgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWV0aG9kRHVwbGljYXRlc01pc2MvUGFyYW1ldGVyc01vZGlmaWNhdGlvbi5qYXZhLmFmdGVyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE0YzU1M2UKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWV0aG9kRHVwbGljYXRlc01pc2MvUGFyYW1ldGVyc01vZGlmaWNhdGlvbi5qYXZhLmFmdGVyCkBAIC0wLDAgKzEsMTkgQEAKK2NsYXNzIFRlc3QgeworICBwcml2YXRlIGRvdWJsZSBkZDEoaW50IGluZGV4LCBkb3VibGUgY29tcFZhbCwgaW50IG51bURheXMpIHsKKyAgICBkb3VibGUgYXZlU2xvcGUgPSAwOworCisgICAgZm9yIChpbnQgaSA9IDA7IGNvbmRpdGlvbihpbmRleCwgbnVtRGF5cywgaSk7IGkrKykgeworICAgICAgLS1pbmRleDsKKyAgICAgIGF2ZVNsb3BlID0gY29tbWluU2VuZGluZyhpbmRleCwgY29tcFZhbCwgYXZlU2xvcGUsIGkpOworICAgIH0KKyAgICByZXR1cm4gYXZlU2xvcGU7CisgIH0KKworICBwcml2YXRlIGRvdWJsZSBzczIoaW50IGluZGV4LCBkb3VibGUgY29tcFZhbCwgaW50IG51bURheXMpIHsKKyAgICAgIGRvdWJsZSBhdmVTbG9wZSA9IGRkMShpbmRleCwgY29tcFZhbCwgbnVtRGF5cyk7CisgICAgcmV0dXJuIGF2ZVNsb3BlOworICB9CisKKyAgcHJpdmF0ZSBib29sZWFuIGNvbmRpdGlvbihpbnQgaWR4LCBpbnQgbiwgaW50IGkpe3JldHVybiBmYWxzZTt9CisgIHByaXZhdGUgZG91YmxlIGNvbW1pblNlbmRpbmcoaW50IGlkeCwgZG91YmxlIGQsIGRvdWJsZSBhLCBpbnQgaSl7cmV0dXJuIDA7fQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tZXRob2REdXBsaWNhdGVzTWlzYy9QYXNzQXJyYXkyVmFyYXJnTWV0aG9kQ2FsbC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ldGhvZER1cGxpY2F0ZXNNaXNjL1Bhc3NBcnJheTJWYXJhcmdNZXRob2RDYWxsLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjlkZTAwZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tZXRob2REdXBsaWNhdGVzTWlzYy9QYXNzQXJyYXkyVmFyYXJnTWV0aG9kQ2FsbC5qYXZhCkBAIC0wLDAgKzEsMTMgQEAKK2NsYXNzIFRlc3QgeworICBwdWJsaWMgdm9pZCBwcmludDxjYXJldD5BcnJheShTdHJpbmcuLi4gcCkgeworICAgIFN5c3RlbS5vdXQucHJpbnRsbihwWzBdKTsKKyAgICBTeXN0ZW0ub3V0LnByaW50bG4ocFsxXSk7CisgIH0KKworICBwdWJsaWMgdm9pZCBkb1NtdGgoKSB7CisgICAgU3RyaW5nW10gYXJyID0geyJzbXRoMSIsICJzbXRoMiIsICJzbXRoMyJ9OworICAgIFN5c3RlbS5vdXQucHJpbnRsbihhcnJbMF0pOworICAgIFN5c3RlbS5vdXQucHJpbnRsbihhcnJbMV0pOworICB9CisKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWV0aG9kRHVwbGljYXRlc01pc2MvUGFzc0FycmF5MlZhcmFyZ01ldGhvZENhbGwuamF2YS5hZnRlciBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tZXRob2REdXBsaWNhdGVzTWlzYy9QYXNzQXJyYXkyVmFyYXJnTWV0aG9kQ2FsbC5qYXZhLmFmdGVyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg2OTA1NzUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWV0aG9kRHVwbGljYXRlc01pc2MvUGFzc0FycmF5MlZhcmFyZ01ldGhvZENhbGwuamF2YS5hZnRlcgpAQCAtMCwwICsxLDEyIEBACitjbGFzcyBUZXN0IHsKKyAgcHVibGljIHZvaWQgcHJpbnRBcnJheShTdHJpbmcuLi4gcCkgeworICAgIFN5c3RlbS5vdXQucHJpbnRsbihwWzBdKTsKKyAgICBTeXN0ZW0ub3V0LnByaW50bG4ocFsxXSk7CisgIH0KKworICBwdWJsaWMgdm9pZCBkb1NtdGgoKSB7CisgICAgU3RyaW5nW10gYXJyID0geyJzbXRoMSIsICJzbXRoMiIsICJzbXRoMyJ9OworICAgICAgcHJpbnRBcnJheShhcnIpOworICB9CisKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWV0aG9kRHVwbGljYXRlc01pc2MvUXVhbGlmaWVycy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ldGhvZER1cGxpY2F0ZXNNaXNjL1F1YWxpZmllcnMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zM2QwNWIzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ldGhvZER1cGxpY2F0ZXNNaXNjL1F1YWxpZmllcnMuamF2YQpAQCAtMCwwICsxLDIwIEBACitjbGFzcyBVdGlseiB7CisgICAgc3RhdGljIGludCBmdW5jKCl7CisgICAgICAgIHJldHVybiAxOworICAgIH0KKworICAgIHN0YXRpYyBpbnQgZm9vMSgpeworICAgICAgICByZXR1cm4gMipVdGlsei5mdW5jKCk7CisgICAgfQorCisgICAgc3RhdGljIGludCBmbzxjYXJldD5vMigpeworICAgICAgICByZXR1cm4gMipmdW5jKCk7CisgICAgfQorCit9CisKK2NsYXNzIFNvbWV0aGluZyB7CisgICAgU29tZXRoaW5nKCl7CisgICAgICAgIGludCB4ID0gMipVdGlsei5mdW5jKCk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tZXRob2REdXBsaWNhdGVzTWlzYy9RdWFsaWZpZXJzLmphdmEuYWZ0ZXIgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWV0aG9kRHVwbGljYXRlc01pc2MvUXVhbGlmaWVycy5qYXZhLmFmdGVyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFlYmU4ZTcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWV0aG9kRHVwbGljYXRlc01pc2MvUXVhbGlmaWVycy5qYXZhLmFmdGVyCkBAIC0wLDAgKzEsMjAgQEAKK2NsYXNzIFV0aWx6IHsKKyAgICBzdGF0aWMgaW50IGZ1bmMoKXsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorCisgICAgc3RhdGljIGludCBmb28xKCl7CisgICAgICAgIHJldHVybiBmb28yKCk7CisgICAgfQorCisgICAgc3RhdGljIGludCBmb28yKCl7CisgICAgICAgIHJldHVybiAyKmZ1bmMoKTsKKyAgICB9CisKK30KKworY2xhc3MgU29tZXRoaW5nIHsKKyAgICBTb21ldGhpbmcoKXsKKyAgICAgICAgaW50IHggPSBVdGlsei5mb28yKCk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tZXRob2REdXBsaWNhdGVzTWlzYy9TaW1wbGVDb25zdGFudC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ldGhvZER1cGxpY2F0ZXNNaXNjL1NpbXBsZUNvbnN0YW50LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGY3ZGUzNgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tZXRob2REdXBsaWNhdGVzTWlzYy9TaW1wbGVDb25zdGFudC5qYXZhCkBAIC0wLDAgKzEsMTIgQEAKK2NsYXNzIFRlc3QgeworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEE8Y2FyZXQ+QkMgPSAiYWJjIjsKKyAgICB2b2lkIGZvbygpIHsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJhYmMiKTsKKyAgICB9Cit9CisKK2NsYXNzIEZvbyB7CisgICAgdm9pZCBiYXIoKSB7CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiYWJjIik7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tZXRob2REdXBsaWNhdGVzTWlzYy9TaW1wbGVDb25zdGFudC5qYXZhLmFmdGVyIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ldGhvZER1cGxpY2F0ZXNNaXNjL1NpbXBsZUNvbnN0YW50LmphdmEuYWZ0ZXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzE1YTc5MAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tZXRob2REdXBsaWNhdGVzTWlzYy9TaW1wbGVDb25zdGFudC5qYXZhLmFmdGVyCkBAIC0wLDAgKzEsMTIgQEAKK2NsYXNzIFRlc3QgeworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEFCQyA9ICJhYmMiOworICAgIHZvaWQgZm9vKCkgeworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oQUJDKTsKKyAgICB9Cit9CisKK2NsYXNzIEZvbyB7CisgICAgdm9pZCBiYXIoKSB7CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihUZXN0LkFCQyk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tZXRob2REdXBsaWNhdGVzTWlzYy9Ta2lwTm90QWNjZXNzaWJsZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ldGhvZER1cGxpY2F0ZXNNaXNjL1NraXBOb3RBY2Nlc3NpYmxlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjE0NTc5OQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tZXRob2REdXBsaWNhdGVzTWlzYy9Ta2lwTm90QWNjZXNzaWJsZS5qYXZhCkBAIC0wLDAgKzEsMTggQEAKK2NsYXNzIEIgeworICAgIHByaXZhdGUgdm9pZCA8Y2FyZXQ+ZygpIHsKKyAgICAgICAgICAgZigpOworICAgICAgIH0KKworICAgICAgIHByaXZhdGUgdm9pZCBmKCkgeworICAgICAgIH0KK30KKworCitjbGFzcyBDIGV4dGVuZHMgQiB7CisgICAgcHJpdmF0ZSB2b2lkIGcoKSB7CisgICAgICAgIGYoKTsKKyAgICB9CisKKyAgICBwcml2YXRlIHZvaWQgZigpIHsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWV0aG9kRHVwbGljYXRlc01pc2MvU3VwZXJJblRoZVNhbWVDb250ZXh0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWV0aG9kRHVwbGljYXRlc01pc2MvU3VwZXJJblRoZVNhbWVDb250ZXh0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTFkODg3ZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tZXRob2REdXBsaWNhdGVzTWlzYy9TdXBlckluVGhlU2FtZUNvbnRleHQuamF2YQpAQCAtMCwwICsxLDE3IEBACitwdWJsaWMgY2xhc3MgYSB7CisgICAgcHVibGljIHZvaWQgbG9naW4oKSB7CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigpOworICAgIH0KK30KKworY2xhc3MgYiBleHRlbmRzIGEgeworICAgIHB1YmxpYyB2b2lkIGRvTDxjYXJldD5vZ2luKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgICAgIHN1cGVyLmxvZ2luKCk7CisgICAgfQorfQorCitjbGFzcyBjIGV4dGVuZHMgYSB7CisgICAgcHVibGljIHZvaWQgZG9Mb2dpbigpIHRocm93cyBFeGNlcHRpb24geworICAgICAgICBzdXBlci5sb2dpbigpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWV0aG9kRHVwbGljYXRlc01pc2MvU3VwZXJJblRoZVNhbWVDb250ZXh0UXVhbGlmaWVkLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWV0aG9kRHVwbGljYXRlc01pc2MvU3VwZXJJblRoZVNhbWVDb250ZXh0UXVhbGlmaWVkLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2ZhODE5NQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tZXRob2REdXBsaWNhdGVzTWlzYy9TdXBlckluVGhlU2FtZUNvbnRleHRRdWFsaWZpZWQuamF2YQpAQCAtMCwwICsxLDIwIEBACitwdWJsaWMgY2xhc3MgYSB7CisgICAgcHVibGljIHZvaWQgbG9naW4oKSB7CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigpOworICAgIH0KK30KKworY2xhc3MgYiBleHRlbmRzIGEgeworICAgIHB1YmxpYyB2b2lkIGRvTDxjYXJldD5vZ2luKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgICAgIHN1cGVyLmxvZ2luKCk7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgZm9vKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgICBuZXcgUnVubmFibGUoKSB7CisgICAgICAgIHB1YmxpYyB2b2lkIHJ1bigpIHsKKyAgICAgICAgICBiLnN1cGVyLmxvZ2luKCk7CisgICAgICAgIH0KKyAgICAgIH0ucnVuKCk7CisgICAgfQorfQorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWV0aG9kRHVwbGljYXRlc01pc2MvU3VwZXJJblRoZVNhbWVDb250ZXh0UXVhbGlmaWVkLmphdmEuYWZ0ZXIgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWV0aG9kRHVwbGljYXRlc01pc2MvU3VwZXJJblRoZVNhbWVDb250ZXh0UXVhbGlmaWVkLmphdmEuYWZ0ZXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGZkYjYwYgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tZXRob2REdXBsaWNhdGVzTWlzYy9TdXBlckluVGhlU2FtZUNvbnRleHRRdWFsaWZpZWQuamF2YS5hZnRlcgpAQCAtMCwwICsxLDIwIEBACitwdWJsaWMgY2xhc3MgYSB7CisgICAgcHVibGljIHZvaWQgbG9naW4oKSB7CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigpOworICAgIH0KK30KKworY2xhc3MgYiBleHRlbmRzIGEgeworICAgIHB1YmxpYyB2b2lkIGRvTG9naW4oKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgICAgc3VwZXIubG9naW4oKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBmb28oKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgIG5ldyBSdW5uYWJsZSgpIHsKKyAgICAgICAgcHVibGljIHZvaWQgcnVuKCkgeworICAgICAgICAgICAgZG9Mb2dpbigpOworICAgICAgICB9CisgICAgICB9LnJ1bigpOworICAgIH0KK30KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ldGhvZER1cGxpY2F0ZXNNaXNjL1VucXVhbGlmaWVkU3RhdGljQWNjZXNzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWV0aG9kRHVwbGljYXRlc01pc2MvVW5xdWFsaWZpZWRTdGF0aWNBY2Nlc3MuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZmJhMDJiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ldGhvZER1cGxpY2F0ZXNNaXNjL1VucXVhbGlmaWVkU3RhdGljQWNjZXNzLmphdmEKQEAgLTAsMCArMSwxNyBAQAorcHVibGljIGNsYXNzIGFhIHsKKyAgICBwdWJsaWMgc3RhdGljIGJvb2xlYW4gaXNWaXN1YWxVcGRhdGUoaW50IHVwZGF0ZV90eXBlKSB7CisgICAgICAgIHJldHVybiB1cGRhdGVfdHlwZSA8PSBJYWFhLkZVTExfUVVPVEVfVklTVUFMOworICAgIH0KK30KKworaW50ZXJmYWNlIElhYWEgeworICAgIGludCBGVUxMX1FVT1RFX1ZJU1VBTCA9IDA7Cit9CisKK2NsYXNzIGEgaW1wbGVtZW50cyBJYWFhIHsKKyAgICBpbnQgdXBkYXRlX3R5cGUgPSA4OworCisgICAgcHVibGljIHN0YXRpYyBib29sZWFuIGJsYWI8Y2FyZXQ+bGEoaW50IHVwZGF0ZV90eXBlKSB7CisgICAgICAgIHJldHVybiB1cGRhdGVfdHlwZSA8PSBGVUxMX1FVT1RFX1ZJU1VBTDsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ldGhvZER1cGxpY2F0ZXNNaXNjL1VucXVhbGlmaWVkU3RhdGljQWNjZXNzLmphdmEuYWZ0ZXIgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWV0aG9kRHVwbGljYXRlc01pc2MvVW5xdWFsaWZpZWRTdGF0aWNBY2Nlc3MuamF2YS5hZnRlcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NDBmMmIwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ldGhvZER1cGxpY2F0ZXNNaXNjL1VucXVhbGlmaWVkU3RhdGljQWNjZXNzLmphdmEuYWZ0ZXIKQEAgLTAsMCArMSwxNyBAQAorcHVibGljIGNsYXNzIGFhIHsKKyAgICBwdWJsaWMgc3RhdGljIGJvb2xlYW4gaXNWaXN1YWxVcGRhdGUoaW50IHVwZGF0ZV90eXBlKSB7CisgICAgICAgIHJldHVybiBhLmJsYWJsYSh1cGRhdGVfdHlwZSk7CisgICAgfQorfQorCitpbnRlcmZhY2UgSWFhYSB7CisgICAgaW50IEZVTExfUVVPVEVfVklTVUFMID0gMDsKK30KKworY2xhc3MgYSBpbXBsZW1lbnRzIElhYWEgeworICAgIGludCB1cGRhdGVfdHlwZSA9IDg7CisKKyAgICBwdWJsaWMgc3RhdGljIGJvb2xlYW4gYmxhYmxhKGludCB1cGRhdGVfdHlwZSkgeworICAgICAgICByZXR1cm4gdXBkYXRlX3R5cGUgPD0gRlVMTF9RVU9URV9WSVNVQUw7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tZXRob2REdXBsaWNhdGVzTWlzYy9WYXJWYXJhcmdzQWNjZXNzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWV0aG9kRHVwbGljYXRlc01pc2MvVmFyVmFyYXJnc0FjY2Vzcy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMwMzFlY2YKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWV0aG9kRHVwbGljYXRlc01pc2MvVmFyVmFyYXJnc0FjY2Vzcy5qYXZhCkBAIC0wLDAgKzEsMTQgQEAKK2NsYXNzIEEgeworICB2b2lkIGJhcihpbnQgaSl7CisgICAgbWV0aG9kKGkpOworICAgIG1ldGhvZChpLCAiYSIpOworICAgIG1ldGhvZChpLCAiYSIsICJiIik7CisgIH0KKworICB2b2lkIG08Y2FyZXQ+KGludCBpLCBTdHJpbmcuLi4gYXJncykgeworICAgIG1ldGhvZChpLCBhcmdzKTsKKyAgfQorCisgIHZvaWQgbWV0aG9kKGludCBpLCBTdHJpbmcuLi4gYXJncykgeworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ldGhvZER1cGxpY2F0ZXNNaXNjL1ZhclZhcmFyZ3NBY2Nlc3MuamF2YS5hZnRlciBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tZXRob2REdXBsaWNhdGVzTWlzYy9WYXJWYXJhcmdzQWNjZXNzLmphdmEuYWZ0ZXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDQ3YjkwYwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tZXRob2REdXBsaWNhdGVzTWlzYy9WYXJWYXJhcmdzQWNjZXNzLmphdmEuYWZ0ZXIKQEAgLTAsMCArMSwxNCBAQAorY2xhc3MgQSB7CisgIHZvaWQgYmFyKGludCBpKXsKKyAgICAgIG0oaSwgbmV3IFN0cmluZ1swXSk7CisgICAgICBtKGksICJhIik7CisgICAgICBtKGksICJhIiwgImIiKTsKKyAgfQorCisgIHZvaWQgbShpbnQgaSwgU3RyaW5nLi4uIGFyZ3MpIHsKKyAgICBtZXRob2QoaSwgYXJncyk7CisgIH0KKworICB2b2lkIG1ldGhvZChpbnQgaSwgU3RyaW5nLi4uIGFyZ3MpIHsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tZXRob2REdXBsaWNhdGVzTWlzYy9WYXJhcmdzQWNjZXNzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWV0aG9kRHVwbGljYXRlc01pc2MvVmFyYXJnc0FjY2Vzcy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRmOWNhY2MKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWV0aG9kRHVwbGljYXRlc01pc2MvVmFyYXJnc0FjY2Vzcy5qYXZhCkBAIC0wLDAgKzEsMTQgQEAKK2NsYXNzIEEgeworICB7CisgICAgbWV0aG9kKDEpOworICAgIG1ldGhvZCgxLCAiYSIpOworICAgIG1ldGhvZCgxLCAiYSIsICJiIik7CisgIH0KKworICB2b2lkIG08Y2FyZXQ+KFN0cmluZy4uLiBhcmdzKSB7CisgICAgbWV0aG9kKDEsIGFyZ3MpOworICB9CisKKyAgdm9pZCBtZXRob2QoaW50IGksIFN0cmluZy4uLiBhcmdzKSB7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWV0aG9kRHVwbGljYXRlc01pc2MvVmFyYXJnc0FjY2Vzcy5qYXZhLmFmdGVyIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ldGhvZER1cGxpY2F0ZXNNaXNjL1ZhcmFyZ3NBY2Nlc3MuamF2YS5hZnRlcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NDVkN2M1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21ldGhvZER1cGxpY2F0ZXNNaXNjL1ZhcmFyZ3NBY2Nlc3MuamF2YS5hZnRlcgpAQCAtMCwwICsxLDE0IEBACitjbGFzcyBBIHsKKyAgeworICAgICAgbShuZXcgU3RyaW5nWzBdKTsKKyAgICAgIG0oImEiKTsKKyAgICAgIG0oImEiLCAiYiIpOworICB9CisKKyAgdm9pZCBtKFN0cmluZy4uLiBhcmdzKSB7CisgICAgbWV0aG9kKDEsIGFyZ3MpOworICB9CisKKyAgdm9pZCBtZXRob2QoaW50IGksIFN0cmluZy4uLiBhcmdzKSB7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWlncmF0aW9uL3BhY2thZ2UvYWZ0ZXIvcDEvQy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21pZ3JhdGlvbi9wYWNrYWdlL2FmdGVyL3AxL0MuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZjZmMjViCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21pZ3JhdGlvbi9wYWNrYWdlL2FmdGVyL3AxL0MuamF2YQpAQCAtMCwwICsxLDcgQEAKK3BhY2thZ2UgcDE7CisKK2ltcG9ydCBqYXZhLmxhbmcuQUFBOworCitjbGFzcyBDIHsKKyAgQUFBIGEgPSBuZXcgQUFBKCk7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21pZ3JhdGlvbi9wYWNrYWdlL2FmdGVyL3AxL0MxLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWlncmF0aW9uL3BhY2thZ2UvYWZ0ZXIvcDEvQzEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZDAwYzFiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21pZ3JhdGlvbi9wYWNrYWdlL2FmdGVyL3AxL0MxLmphdmEKQEAgLTAsMCArMSw1IEBACitwYWNrYWdlIHAxOworCitjbGFzcyBDIHsKKyAgamF2YS5sYW5nLkFBQSBhID0gbmV3IGphdmEubGFuZy5BQUEoKTsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWlncmF0aW9uL3BhY2thZ2UvYmVmb3JlL3AxL0MuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9taWdyYXRpb24vcGFja2FnZS9iZWZvcmUvcDEvQy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkzMTYxZGMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWlncmF0aW9uL3BhY2thZ2UvYmVmb3JlL3AxL0MuamF2YQpAQCAtMCwwICsxLDcgQEAKK3BhY2thZ2UgcDE7CisKK2ltcG9ydCBxcXEuQUFBOworCitjbGFzcyBDIHsKKyAgQUFBIGEgPSBuZXcgQUFBKCk7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21pZ3JhdGlvbi9wYWNrYWdlL2JlZm9yZS9wMS9DMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21pZ3JhdGlvbi9wYWNrYWdlL2JlZm9yZS9wMS9DMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ0NzE2NGIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWlncmF0aW9uL3BhY2thZ2UvYmVmb3JlL3AxL0MxLmphdmEKQEAgLTAsMCArMSw3IEBACitwYWNrYWdlIHAxOworCitpbXBvcnQgcXFxLio7CisKK2NsYXNzIEMgeworICBxcXEuQUFBIGEgPSBuZXcgcXFxLkFBQSgpOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9taWdyYXRpb24vcGFja2FnZVRvTm9uRXhpc3RlbnRQYWNrYWdlL2FmdGVyL3AxL0MuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9taWdyYXRpb24vcGFja2FnZVRvTm9uRXhpc3RlbnRQYWNrYWdlL2FmdGVyL3AxL0MuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNTMxZDU0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21pZ3JhdGlvbi9wYWNrYWdlVG9Ob25FeGlzdGVudFBhY2thZ2UvYWZ0ZXIvcDEvQy5qYXZhCkBAIC0wLDAgKzEsNyBAQAorcGFja2FnZSBwMTsKKworaW1wb3J0IHp6ei5iYmIuQUFBOworCitjbGFzcyBDIHsKKyAgQUFBIGEgPSBuZXcgQUFBKCk7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21pZ3JhdGlvbi9wYWNrYWdlVG9Ob25FeGlzdGVudFBhY2thZ2UvYWZ0ZXIvcDEvQzEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9taWdyYXRpb24vcGFja2FnZVRvTm9uRXhpc3RlbnRQYWNrYWdlL2FmdGVyL3AxL0MxLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmQ5MGI1OAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9taWdyYXRpb24vcGFja2FnZVRvTm9uRXhpc3RlbnRQYWNrYWdlL2FmdGVyL3AxL0MxLmphdmEKQEAgLTAsMCArMSw3IEBACitwYWNrYWdlIHAxOworCitpbXBvcnQgenp6LmJiYi4qOworCitjbGFzcyBDIHsKKyAgenp6LmJiYi5BQUEgYSA9IG5ldyB6enouYmJiLkFBQSgpOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9taWdyYXRpb24vcGFja2FnZVRvTm9uRXhpc3RlbnRQYWNrYWdlL2JlZm9yZS9wMS9DLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWlncmF0aW9uL3BhY2thZ2VUb05vbkV4aXN0ZW50UGFja2FnZS9iZWZvcmUvcDEvQy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkzMTYxZGMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWlncmF0aW9uL3BhY2thZ2VUb05vbkV4aXN0ZW50UGFja2FnZS9iZWZvcmUvcDEvQy5qYXZhCkBAIC0wLDAgKzEsNyBAQAorcGFja2FnZSBwMTsKKworaW1wb3J0IHFxcS5BQUE7CisKK2NsYXNzIEMgeworICBBQUEgYSA9IG5ldyBBQUEoKTsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWlncmF0aW9uL3BhY2thZ2VUb05vbkV4aXN0ZW50UGFja2FnZS9iZWZvcmUvcDEvQzEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9taWdyYXRpb24vcGFja2FnZVRvTm9uRXhpc3RlbnRQYWNrYWdlL2JlZm9yZS9wMS9DMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ0NzE2NGIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWlncmF0aW9uL3BhY2thZ2VUb05vbkV4aXN0ZW50UGFja2FnZS9iZWZvcmUvcDEvQzEuamF2YQpAQCAtMCwwICsxLDcgQEAKK3BhY2thZ2UgcDE7CisKK2ltcG9ydCBxcXEuKjsKKworY2xhc3MgQyB7CisgIHFxcS5BQUEgYSA9IG5ldyBxcXEuQUFBKCk7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21pZ3JhdGlvbi90b05vbkV4aXN0ZW50Q2xhc3MvYWZ0ZXIvcDEvQy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21pZ3JhdGlvbi90b05vbkV4aXN0ZW50Q2xhc3MvYWZ0ZXIvcDEvQy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE5N2IxMDMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWlncmF0aW9uL3RvTm9uRXhpc3RlbnRDbGFzcy9hZnRlci9wMS9DLmphdmEKQEAgLTAsMCArMSw3IEBACitwYWNrYWdlIHAxOworCitpbXBvcnQgenp6LmJiYi5RUVE7CisKK2NsYXNzIEMgeworICBRUVEgeW91ID0gbmV3IFFRUSgpOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9taWdyYXRpb24vdG9Ob25FeGlzdGVudENsYXNzL2FmdGVyL3AxL0MxLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWlncmF0aW9uL3RvTm9uRXhpc3RlbnRDbGFzcy9hZnRlci9wMS9DMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdiYTQzMDIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWlncmF0aW9uL3RvTm9uRXhpc3RlbnRDbGFzcy9hZnRlci9wMS9DMS5qYXZhCkBAIC0wLDAgKzEsOCBAQAorcGFja2FnZSBwMTsKKworaW1wb3J0IHFxcS5hYWEuKjsKK2ltcG9ydCB6enouYmJiLlFRUTsKKworY2xhc3MgQzEgeworICBRUVEgeW91ID0gbmV3IFFRUSgpOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9taWdyYXRpb24vdG9Ob25FeGlzdGVudENsYXNzL2JlZm9yZS9wMS9DLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWlncmF0aW9uL3RvTm9uRXhpc3RlbnRDbGFzcy9iZWZvcmUvcDEvQy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM4OTI3ZWYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWlncmF0aW9uL3RvTm9uRXhpc3RlbnRDbGFzcy9iZWZvcmUvcDEvQy5qYXZhCkBAIC0wLDAgKzEsNyBAQAorcGFja2FnZSBwMTsKKworaW1wb3J0IHFxcS5hYWEuWWFob287CisKK2NsYXNzIEMgeworICBZYWhvbyB5b3UgPSBuZXcgWWFob28oKTsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWlncmF0aW9uL3RvTm9uRXhpc3RlbnRDbGFzcy9iZWZvcmUvcDEvQzEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9taWdyYXRpb24vdG9Ob25FeGlzdGVudENsYXNzL2JlZm9yZS9wMS9DMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU1YTcxYmQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWlncmF0aW9uL3RvTm9uRXhpc3RlbnRDbGFzcy9iZWZvcmUvcDEvQzEuamF2YQpAQCAtMCwwICsxLDcgQEAKK3BhY2thZ2UgcDE7CisKK2ltcG9ydCBxcXEuYWFhLio7CisKK2NsYXNzIEMxIHsKKyAgWWFob28geW91ID0gbmV3IFlhaG9vKCk7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21pZ3JhdGlvbi90d29DbGFzc2VzL2FmdGVyL1Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9taWdyYXRpb24vdHdvQ2xhc3Nlcy9hZnRlci9UZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGU2ODllYQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9taWdyYXRpb24vdHdvQ2xhc3Nlcy9hZnRlci9UZXN0LmphdmEKQEAgLTAsMCArMSwxMCBAQAorY2xhc3MgQSB7fQorY2xhc3MgQTEge30KKworY2xhc3MgQiB7fQorY2xhc3MgQjEge30KKworcHVibGljIGNsYXNzIFRlc3QgeworICBBMSBhOworICBCMSBiOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9taWdyYXRpb24vdHdvQ2xhc3Nlcy9iZWZvcmUvVGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21pZ3JhdGlvbi90d29DbGFzc2VzL2JlZm9yZS9UZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzA1Mzg5YQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9taWdyYXRpb24vdHdvQ2xhc3Nlcy9iZWZvcmUvVGVzdC5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKK2NsYXNzIEEge30KK2NsYXNzIEExIHt9CisKK2NsYXNzIEIge30KK2NsYXNzIEIxIHt9CisKK3B1YmxpYyBjbGFzcyBUZXN0IHsKKyAgQSBhOworICBCIGI7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21pZ3JhdGlvbi91bmV4aXN0aW5nQ2xhc3NJblVuZXhpc3RpbmdQYWNrYWdlL2FmdGVyL3AxL0MuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9taWdyYXRpb24vdW5leGlzdGluZ0NsYXNzSW5VbmV4aXN0aW5nUGFja2FnZS9hZnRlci9wMS9DLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzE4M2EwZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9taWdyYXRpb24vdW5leGlzdGluZ0NsYXNzSW5VbmV4aXN0aW5nUGFja2FnZS9hZnRlci9wMS9DLmphdmEKQEAgLTAsMCArMSw3IEBACitwYWNrYWdlIHAxOworCitpbXBvcnQgamF2YS5sYW5nLlN0cmluZzsKKworY2xhc3MgQyB7CisgIFN0cmluZyB5b3UgPSBuZXcgU3RyaW5nKCk7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21pZ3JhdGlvbi91bmV4aXN0aW5nQ2xhc3NJblVuZXhpc3RpbmdQYWNrYWdlL2FmdGVyL3AxL0MxLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWlncmF0aW9uL3VuZXhpc3RpbmdDbGFzc0luVW5leGlzdGluZ1BhY2thZ2UvYWZ0ZXIvcDEvQzEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mOTUzM2JiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21pZ3JhdGlvbi91bmV4aXN0aW5nQ2xhc3NJblVuZXhpc3RpbmdQYWNrYWdlL2FmdGVyL3AxL0MxLmphdmEKQEAgLTAsMCArMSw3IEBACitwYWNrYWdlIHAxOworCitpbXBvcnQgcXFxLmFhYS4qOworCitjbGFzcyBDMSB7CisgIFN0cmluZyB5b3UgPSBuZXcgU3RyaW5nKCk7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21pZ3JhdGlvbi91bmV4aXN0aW5nQ2xhc3NJblVuZXhpc3RpbmdQYWNrYWdlL2JlZm9yZS9wMS9DLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbWlncmF0aW9uL3VuZXhpc3RpbmdDbGFzc0luVW5leGlzdGluZ1BhY2thZ2UvYmVmb3JlL3AxL0MuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jODkyN2VmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21pZ3JhdGlvbi91bmV4aXN0aW5nQ2xhc3NJblVuZXhpc3RpbmdQYWNrYWdlL2JlZm9yZS9wMS9DLmphdmEKQEAgLTAsMCArMSw3IEBACitwYWNrYWdlIHAxOworCitpbXBvcnQgcXFxLmFhYS5ZYWhvbzsKKworY2xhc3MgQyB7CisgIFlhaG9vIHlvdSA9IG5ldyBZYWhvbygpOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9taWdyYXRpb24vdW5leGlzdGluZ0NsYXNzSW5VbmV4aXN0aW5nUGFja2FnZS9iZWZvcmUvcDEvQzEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9taWdyYXRpb24vdW5leGlzdGluZ0NsYXNzSW5VbmV4aXN0aW5nUGFja2FnZS9iZWZvcmUvcDEvQzEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NWE3MWJkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21pZ3JhdGlvbi91bmV4aXN0aW5nQ2xhc3NJblVuZXhpc3RpbmdQYWNrYWdlL2JlZm9yZS9wMS9DMS5qYXZhCkBAIC0wLDAgKzEsNyBAQAorcGFja2FnZSBwMTsKKworaW1wb3J0IHFxcS5hYWEuKjsKKworY2xhc3MgQzEgeworICBZYWhvbyB5b3UgPSBuZXcgWWFob28oKTsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzL2NsYXNzQW5kU2Vjb25kYXJ5L2FmdGVyL3BhY2sxL1VzZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3MvY2xhc3NBbmRTZWNvbmRhcnkvYWZ0ZXIvcGFjazEvVXNlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE0MzFiY2IKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzL2NsYXNzQW5kU2Vjb25kYXJ5L2FmdGVyL3BhY2sxL1VzZXIuamF2YQpAQCAtMCwwICsxLDkgQEAKK3BhY2thZ2UgcGFjazE7CisKK2ltcG9ydCBwYWNrMi5DbGFzczE7CitpbXBvcnQgcGFjazIuQ2xhc3MyOworCitwdWJsaWMgY2xhc3MgVXNlciB7CisgIENsYXNzMSBjbGFzczE7CisgIENsYXNzMiBjbGFzczI7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzcy9jbGFzc0FuZFNlY29uZGFyeS9hZnRlci9wYWNrMi9DbGFzczEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3MvY2xhc3NBbmRTZWNvbmRhcnkvYWZ0ZXIvcGFjazIvQ2xhc3MxLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWZlNDE2YwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3MvY2xhc3NBbmRTZWNvbmRhcnkvYWZ0ZXIvcGFjazIvQ2xhc3MxLmphdmEKQEAgLTAsMCArMSwxMSBAQAorcGFja2FnZSBwYWNrMjsKKworcHVibGljIGNsYXNzIENsYXNzMSB7Cit9CisKKy8qKgorICogSmF2YWRvYy4KKyAqLworY2xhc3MgQ2xhc3MyIHsKKworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3MvY2xhc3NBbmRTZWNvbmRhcnkvYWZ0ZXIvcGFjazIvZW1wdHkudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzcy9jbGFzc0FuZFNlY29uZGFyeS9hZnRlci9wYWNrMi9lbXB0eS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTY5ZGUyOQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3MvY2xhc3NBbmRTZWNvbmRhcnkvYWZ0ZXIvcGFjazIvZW1wdHkudHh0CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzL2NsYXNzQW5kU2Vjb25kYXJ5L2JlZm9yZS9wYWNrMS9DbGFzczEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3MvY2xhc3NBbmRTZWNvbmRhcnkvYmVmb3JlL3BhY2sxL0NsYXNzMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI1NjM1NzkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzL2NsYXNzQW5kU2Vjb25kYXJ5L2JlZm9yZS9wYWNrMS9DbGFzczEuamF2YQpAQCAtMCwwICsxLDExIEBACitwYWNrYWdlIHBhY2sxOworCitwdWJsaWMgY2xhc3MgQ2xhc3MxIHsKK30KKworLyoqCisgKiBKYXZhZG9jLgorICovCitjbGFzcyBDbGFzczIgeworCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzcy9jbGFzc0FuZFNlY29uZGFyeS9iZWZvcmUvcGFjazEvVXNlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzcy9jbGFzc0FuZFNlY29uZGFyeS9iZWZvcmUvcGFjazEvVXNlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVlNDYxYWQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzL2NsYXNzQW5kU2Vjb25kYXJ5L2JlZm9yZS9wYWNrMS9Vc2VyLmphdmEKQEAgLTAsMCArMSw2IEBACitwYWNrYWdlIHBhY2sxOworCitwdWJsaWMgY2xhc3MgVXNlciB7CisgIENsYXNzMSBjbGFzczE7CisgIENsYXNzMiBjbGFzczI7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzcy9jbGFzc0FuZFNlY29uZGFyeS9iZWZvcmUvcGFjazIvZW1wdHkudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzcy9jbGFzc0FuZFNlY29uZGFyeS9iZWZvcmUvcGFjazIvZW1wdHkudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU2OWRlMjkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzL2NsYXNzQW5kU2Vjb25kYXJ5L2JlZm9yZS9wYWNrMi9lbXB0eS50eHQKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3MvY29udGV4dENoYW5nZTEvYWZ0ZXIvcGFjazEvQ2xhc3MyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzL2NvbnRleHRDaGFuZ2UxL2FmdGVyL3BhY2sxL0NsYXNzMi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY5ZGYxYjMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzL2NvbnRleHRDaGFuZ2UxL2FmdGVyL3BhY2sxL0NsYXNzMi5qYXZhCkBAIC0wLDAgKzEsNCBAQAorcGFja2FnZSBwYWNrMTsKKworcHVibGljIGNsYXNzIENsYXNzMiB7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzcy9jb250ZXh0Q2hhbmdlMS9hZnRlci9wYWNrMS9lbXB0eS50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzL2NvbnRleHRDaGFuZ2UxL2FmdGVyL3BhY2sxL2VtcHR5LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNjlkZTI5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzcy9jb250ZXh0Q2hhbmdlMS9hZnRlci9wYWNrMS9lbXB0eS50eHQKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3MvY29udGV4dENoYW5nZTEvYWZ0ZXIvcGFjazIvQ2xhc3MxLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzL2NvbnRleHRDaGFuZ2UxL2FmdGVyL3BhY2syL0NsYXNzMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUxNTgyYTYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzL2NvbnRleHRDaGFuZ2UxL2FmdGVyL3BhY2syL0NsYXNzMS5qYXZhCkBAIC0wLDAgKzEsNyBAQAorcGFja2FnZSBwYWNrMjsKKworaW1wb3J0IHBhY2sxLkNsYXNzMjsKKworcHVibGljIGNsYXNzIENsYXNzMSB7CisgIENsYXNzMiBhOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3MvY29udGV4dENoYW5nZTEvYWZ0ZXIvcGFjazIvZW1wdHkudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzcy9jb250ZXh0Q2hhbmdlMS9hZnRlci9wYWNrMi9lbXB0eS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTY5ZGUyOQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3MvY29udGV4dENoYW5nZTEvYWZ0ZXIvcGFjazIvZW1wdHkudHh0CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzL2NvbnRleHRDaGFuZ2UxL2JlZm9yZS9wYWNrMS9DbGFzczEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3MvY29udGV4dENoYW5nZTEvYmVmb3JlL3BhY2sxL0NsYXNzMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUyYmFmOTEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzL2NvbnRleHRDaGFuZ2UxL2JlZm9yZS9wYWNrMS9DbGFzczEuamF2YQpAQCAtMCwwICsxLDUgQEAKK3BhY2thZ2UgcGFjazE7CisKK3B1YmxpYyBjbGFzcyBDbGFzczEgeworICBDbGFzczIgYTsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzL2NvbnRleHRDaGFuZ2UxL2JlZm9yZS9wYWNrMS9DbGFzczIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3MvY29udGV4dENoYW5nZTEvYmVmb3JlL3BhY2sxL0NsYXNzMi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY5ZGYxYjMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzL2NvbnRleHRDaGFuZ2UxL2JlZm9yZS9wYWNrMS9DbGFzczIuamF2YQpAQCAtMCwwICsxLDQgQEAKK3BhY2thZ2UgcGFjazE7CisKK3B1YmxpYyBjbGFzcyBDbGFzczIgeworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3MvY29udGV4dENoYW5nZTEvYmVmb3JlL3BhY2sxL2VtcHR5LnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3MvY29udGV4dENoYW5nZTEvYmVmb3JlL3BhY2sxL2VtcHR5LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNjlkZTI5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzcy9jb250ZXh0Q2hhbmdlMS9iZWZvcmUvcGFjazEvZW1wdHkudHh0CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzL2NvbnRleHRDaGFuZ2UxL2JlZm9yZS9wYWNrMi9lbXB0eS50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzL2NvbnRleHRDaGFuZ2UxL2JlZm9yZS9wYWNrMi9lbXB0eS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTY5ZGUyOQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3MvY29udGV4dENoYW5nZTEvYmVmb3JlL3BhY2syL2VtcHR5LnR4dApkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzcy9jb250ZXh0Q2hhbmdlMi9hZnRlci9wYWNrMS9DbGFzczIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3MvY29udGV4dENoYW5nZTIvYWZ0ZXIvcGFjazEvQ2xhc3MyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjlkZjFiMwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3MvY29udGV4dENoYW5nZTIvYWZ0ZXIvcGFjazEvQ2xhc3MyLmphdmEKQEAgLTAsMCArMSw0IEBACitwYWNrYWdlIHBhY2sxOworCitwdWJsaWMgY2xhc3MgQ2xhc3MyIHsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzL2NvbnRleHRDaGFuZ2UyL2FmdGVyL3BhY2sxL2VtcHR5LnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3MvY29udGV4dENoYW5nZTIvYWZ0ZXIvcGFjazEvZW1wdHkudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU2OWRlMjkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzL2NvbnRleHRDaGFuZ2UyL2FmdGVyL3BhY2sxL2VtcHR5LnR4dApkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzcy9jb250ZXh0Q2hhbmdlMi9hZnRlci9wYWNrMi9DbGFzczEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3MvY29udGV4dENoYW5nZTIvYWZ0ZXIvcGFjazIvQ2xhc3MxLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTM1YTBiMwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3MvY29udGV4dENoYW5nZTIvYWZ0ZXIvcGFjazIvQ2xhc3MxLmphdmEKQEAgLTAsMCArMSw5IEBACitwYWNrYWdlIHBhY2syOworCitpbXBvcnQgcGFjazEuQ2xhc3MyOworCitwdWJsaWMgY2xhc3MgQ2xhc3MxIHsKKyAgdm9pZCBmb28oKXsKKyAgICBDbGFzczIueHh4KCk7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzL2NvbnRleHRDaGFuZ2UyL2FmdGVyL3BhY2syL2VtcHR5LnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3MvY29udGV4dENoYW5nZTIvYWZ0ZXIvcGFjazIvZW1wdHkudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU2OWRlMjkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzL2NvbnRleHRDaGFuZ2UyL2FmdGVyL3BhY2syL2VtcHR5LnR4dApkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzcy9jb250ZXh0Q2hhbmdlMi9iZWZvcmUvcGFjazEvQ2xhc3MxLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzL2NvbnRleHRDaGFuZ2UyL2JlZm9yZS9wYWNrMS9DbGFzczEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZTQwMTRmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzcy9jb250ZXh0Q2hhbmdlMi9iZWZvcmUvcGFjazEvQ2xhc3MxLmphdmEKQEAgLTAsMCArMSw3IEBACitwYWNrYWdlIHBhY2sxOworCitwdWJsaWMgY2xhc3MgQ2xhc3MxIHsKKyAgdm9pZCBmb28oKXsKKyAgICBDbGFzczIueHh4KCk7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzL2NvbnRleHRDaGFuZ2UyL2JlZm9yZS9wYWNrMS9DbGFzczIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3MvY29udGV4dENoYW5nZTIvYmVmb3JlL3BhY2sxL0NsYXNzMi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY5ZGYxYjMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzL2NvbnRleHRDaGFuZ2UyL2JlZm9yZS9wYWNrMS9DbGFzczIuamF2YQpAQCAtMCwwICsxLDQgQEAKK3BhY2thZ2UgcGFjazE7CisKK3B1YmxpYyBjbGFzcyBDbGFzczIgeworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3MvY29udGV4dENoYW5nZTIvYmVmb3JlL3BhY2sxL2VtcHR5LnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3MvY29udGV4dENoYW5nZTIvYmVmb3JlL3BhY2sxL2VtcHR5LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNjlkZTI5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzcy9jb250ZXh0Q2hhbmdlMi9iZWZvcmUvcGFjazEvZW1wdHkudHh0CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzL2NvbnRleHRDaGFuZ2UyL2JlZm9yZS9wYWNrMi9lbXB0eS50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzL2NvbnRleHRDaGFuZ2UyL2JlZm9yZS9wYWNrMi9lbXB0eS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTY5ZGUyOQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3MvY29udGV4dENoYW5nZTIvYmVmb3JlL3BhY2syL2VtcHR5LnR4dApkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzcy9pZGVhZGV2Mjc5OTYvYWZ0ZXIvcGFjazEvWC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzcy9pZGVhZGV2Mjc5OTYvYWZ0ZXIvcGFjazEvWC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlkYjRkM2UKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzL2lkZWFkZXYyNzk5Ni9hZnRlci9wYWNrMS9YLmphdmEKQEAgLTAsMCArMSwzIEBACitwYWNrYWdlIHBhY2sxOworCitjbGFzcyBZIHt9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzcy9pZGVhZGV2Mjc5OTYvYWZ0ZXIvcGFjazIvWC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzcy9pZGVhZGV2Mjc5OTYvYWZ0ZXIvcGFjazIvWC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ3MGFkZTIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzL2lkZWFkZXYyNzk5Ni9hZnRlci9wYWNrMi9YLmphdmEKQEAgLTAsMCArMSw1IEBACitwYWNrYWdlIHBhY2syOworCitwdWJsaWMgY2xhc3MgWCB7CisgICAgcHVibGljIHZvaWQgZm9vKFggeCkge30KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzL2lkZWFkZXYyNzk5Ni9hZnRlci9wYWNrMi9lbXB0eS50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzL2lkZWFkZXYyNzk5Ni9hZnRlci9wYWNrMi9lbXB0eS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTY5ZGUyOQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3MvaWRlYWRldjI3OTk2L2FmdGVyL3BhY2syL2VtcHR5LnR4dApkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzcy9pZGVhZGV2Mjc5OTYvYmVmb3JlL3BhY2sxL1guamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3MvaWRlYWRldjI3OTk2L2JlZm9yZS9wYWNrMS9YLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTJmNGI4MQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3MvaWRlYWRldjI3OTk2L2JlZm9yZS9wYWNrMS9YLmphdmEKQEAgLTAsMCArMSw2IEBACitwYWNrYWdlIHBhY2sxOworCitwdWJsaWMgY2xhc3MgWCB7CisgICAgcHVibGljIHZvaWQgZm9vKFggeCkge30KK30KK2NsYXNzIFkge30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzL2lkZWFkZXYyNzk5Ni9iZWZvcmUvcGFjazIvZW1wdHkudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzcy9pZGVhZGV2Mjc5OTYvYmVmb3JlL3BhY2syL2VtcHR5LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNjlkZTI5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzcy9pZGVhZGV2Mjc5OTYvYmVmb3JlL3BhY2syL2VtcHR5LnR4dApkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzcy9qc3AvYWZ0ZXIvV0VCLUlORi9UZXN0VEVJLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzL2pzcC9hZnRlci9XRUItSU5GL1Rlc3RURUkuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xN2UwZGZkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzcy9qc3AvYWZ0ZXIvV0VCLUlORi9UZXN0VEVJLmphdmEKQEAgLTAsMCArMSwxMyBAQAorCitpbXBvcnQgamF2YXguc2VydmxldC5qc3AudGFnZXh0LlRhZ0V4dHJhSW5mbzsKK2ltcG9ydCBqYXZheC5zZXJ2bGV0LmpzcC50YWdleHQuVmFyaWFibGVJbmZvOworaW1wb3J0IGphdmF4LnNlcnZsZXQuanNwLnRhZ2V4dC5UYWdEYXRhOworCisvKioKKyAqIEBhdXRob3IgbWlrZQorICovCitwdWJsaWMgY2xhc3MgVGVzdFRFSSBleHRlbmRzIFRhZ0V4dHJhSW5mbyB7CisgIHB1YmxpYyBWYXJpYWJsZUluZm9bXSBnZXRWYXJpYWJsZUluZm8oVGFnRGF0YSB0YWdEYXRhKSB7CisgICAgcmV0dXJuIG5ldyBWYXJpYWJsZUluZm9bXSB7IG5ldyBWYXJpYWJsZUluZm8oInRlc3RWYXIiLCB0YWdEYXRhLmdldEF0dHJpYnV0ZVN0cmluZygiY2xhc3MiKSwgdHJ1ZSwgVmFyaWFibGVJbmZvLkFUX0JFR0lOKSB9OworICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzL2pzcC9hZnRlci9XRUItSU5GL2NsYXNzZXMvVGVzdFRFSS5jbGFzcyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3MvanNwL2FmdGVyL1dFQi1JTkYvY2xhc3Nlcy9UZXN0VEVJLmNsYXNzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYwZjQwY2YKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzL2pzcC9hZnRlci9XRUItSU5GL2NsYXNzZXMvVGVzdFRFSS5jbGFzcwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzL2pzcC9hZnRlci9XRUItSU5GL3Rlc3QudGxkIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzcy9qc3AvYWZ0ZXIvV0VCLUlORi90ZXN0LnRsZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43OTQ3MjlhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzcy9qc3AvYWZ0ZXIvV0VCLUlORi90ZXN0LnRsZApAQCAtMCwwICsxLDEzIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJJU08tODg1OS0xIj8+Cis8IURPQ1RZUEUgdGFnbGliIFBVQkxJQyAiLS8vU3VuIE1pY3Jvc3lzdGVtcywgSW5jLi8vRFREIEpTUCBUYWcgTGlicmFyeSAxLjEvL0VOIiAiaHR0cDovL2phdmEuc3VuLmNvbS9qMmVlL2R0ZHMvd2ViLWpzcHRhZ2xpYnJhcnlfMV8xLmR0ZCI+CisKKzwhLS0gYSB0YWIgbGlicmFyeSBkZXNjcmlwdG9yIC0tPgorCis8dGFnbGliPgorCTx0YWc+CQorCQk8bmFtZT50ZXN0PC9uYW1lPgorCQk8dGFnY2xhc3M+VGVzdFRhZzwvdGFnY2xhc3M+CisJCTx0ZWljbGFzcz5UZXN0VEVJPC90ZWljbGFzcz4KKwkJPGJvZHljb250ZW50PmpzcDwvYm9keWNvbnRlbnQ+CisJPC90YWc+Cis8L3RhZ2xpYj4KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3MvanNwL2FmdGVyL3BhY2sxL2VtcHR5LnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3MvanNwL2FmdGVyL3BhY2sxL2VtcHR5LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNjlkZTI5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzcy9qc3AvYWZ0ZXIvcGFjazEvZW1wdHkudHh0CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzL2pzcC9hZnRlci9wYWNrMi9UZXN0Q2xhc3MuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3MvanNwL2FmdGVyL3BhY2syL1Rlc3RDbGFzcy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYxYjg4ZGEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzL2pzcC9hZnRlci9wYWNrMi9UZXN0Q2xhc3MuamF2YQpAQCAtMCwwICsxLDQgQEAKK3BhY2thZ2UgcGFjazI7CisKK3B1YmxpYyBjbGFzcyBUZXN0Q2xhc3MgeworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3MvanNwL2FmdGVyL3BhY2syL2VtcHR5LnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3MvanNwL2FmdGVyL3BhY2syL2VtcHR5LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNjlkZTI5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzcy9qc3AvYWZ0ZXIvcGFjazIvZW1wdHkudHh0CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzL2pzcC9hZnRlci90ZXN0LmpzcCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3MvanNwL2FmdGVyL3Rlc3QuanNwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNkNzcwNmMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzL2pzcC9hZnRlci90ZXN0LmpzcApAQCAtMCwwICsxLDcgQEAKKzwlQCB0YWdsaWIgdXJpPSIvV0VCLUlORi90ZXN0LnRsZCIgcHJlZml4PSJ0ZXN0IiAlPgorCis8dGVzdDp0ZXN0IGNsYXNzPSJwYWNrMi5UZXN0Q2xhc3MiLz4KKworPCUKKyAgICBTeXN0ZW0ub3V0LnByaW50bG4odGVzdFZhcik7CislPgpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzcy9qc3AvYmVmb3JlL1dFQi1JTkYvVGVzdFRFSS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzcy9qc3AvYmVmb3JlL1dFQi1JTkYvVGVzdFRFSS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE3ZTBkZmQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzL2pzcC9iZWZvcmUvV0VCLUlORi9UZXN0VEVJLmphdmEKQEAgLTAsMCArMSwxMyBAQAorCitpbXBvcnQgamF2YXguc2VydmxldC5qc3AudGFnZXh0LlRhZ0V4dHJhSW5mbzsKK2ltcG9ydCBqYXZheC5zZXJ2bGV0LmpzcC50YWdleHQuVmFyaWFibGVJbmZvOworaW1wb3J0IGphdmF4LnNlcnZsZXQuanNwLnRhZ2V4dC5UYWdEYXRhOworCisvKioKKyAqIEBhdXRob3IgbWlrZQorICovCitwdWJsaWMgY2xhc3MgVGVzdFRFSSBleHRlbmRzIFRhZ0V4dHJhSW5mbyB7CisgIHB1YmxpYyBWYXJpYWJsZUluZm9bXSBnZXRWYXJpYWJsZUluZm8oVGFnRGF0YSB0YWdEYXRhKSB7CisgICAgcmV0dXJuIG5ldyBWYXJpYWJsZUluZm9bXSB7IG5ldyBWYXJpYWJsZUluZm8oInRlc3RWYXIiLCB0YWdEYXRhLmdldEF0dHJpYnV0ZVN0cmluZygiY2xhc3MiKSwgdHJ1ZSwgVmFyaWFibGVJbmZvLkFUX0JFR0lOKSB9OworICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzL2pzcC9iZWZvcmUvV0VCLUlORi9jbGFzc2VzL1Rlc3RURUkuY2xhc3MgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzL2pzcC9iZWZvcmUvV0VCLUlORi9jbGFzc2VzL1Rlc3RURUkuY2xhc3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjBmNDBjZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3MvanNwL2JlZm9yZS9XRUItSU5GL2NsYXNzZXMvVGVzdFRFSS5jbGFzcwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzL2pzcC9iZWZvcmUvV0VCLUlORi90ZXN0LnRsZCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3MvanNwL2JlZm9yZS9XRUItSU5GL3Rlc3QudGxkCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc5NDcyOWEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzL2pzcC9iZWZvcmUvV0VCLUlORi90ZXN0LnRsZApAQCAtMCwwICsxLDEzIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJJU08tODg1OS0xIj8+Cis8IURPQ1RZUEUgdGFnbGliIFBVQkxJQyAiLS8vU3VuIE1pY3Jvc3lzdGVtcywgSW5jLi8vRFREIEpTUCBUYWcgTGlicmFyeSAxLjEvL0VOIiAiaHR0cDovL2phdmEuc3VuLmNvbS9qMmVlL2R0ZHMvd2ViLWpzcHRhZ2xpYnJhcnlfMV8xLmR0ZCI+CisKKzwhLS0gYSB0YWIgbGlicmFyeSBkZXNjcmlwdG9yIC0tPgorCis8dGFnbGliPgorCTx0YWc+CQorCQk8bmFtZT50ZXN0PC9uYW1lPgorCQk8dGFnY2xhc3M+VGVzdFRhZzwvdGFnY2xhc3M+CisJCTx0ZWljbGFzcz5UZXN0VEVJPC90ZWljbGFzcz4KKwkJPGJvZHljb250ZW50PmpzcDwvYm9keWNvbnRlbnQ+CisJPC90YWc+Cis8L3RhZ2xpYj4KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3MvanNwL2JlZm9yZS9wYWNrMS9UZXN0Q2xhc3MuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3MvanNwL2JlZm9yZS9wYWNrMS9UZXN0Q2xhc3MuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNGE3MTNlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzcy9qc3AvYmVmb3JlL3BhY2sxL1Rlc3RDbGFzcy5qYXZhCkBAIC0wLDAgKzEsNCBAQAorcGFja2FnZSBwYWNrMTsKKworcHVibGljIGNsYXNzIFRlc3RDbGFzcyB7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzcy9qc3AvYmVmb3JlL3BhY2sxL2VtcHR5LnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3MvanNwL2JlZm9yZS9wYWNrMS9lbXB0eS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTY5ZGUyOQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3MvanNwL2JlZm9yZS9wYWNrMS9lbXB0eS50eHQKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3MvanNwL2JlZm9yZS9wYWNrMi9lbXB0eS50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzL2pzcC9iZWZvcmUvcGFjazIvZW1wdHkudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU2OWRlMjkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzL2pzcC9iZWZvcmUvcGFjazIvZW1wdHkudHh0CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzL2pzcC9iZWZvcmUvdGVzdC5qc3AgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzL2pzcC9iZWZvcmUvdGVzdC5qc3AKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmRjYTE0MAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3MvanNwL2JlZm9yZS90ZXN0LmpzcApAQCAtMCwwICsxLDcgQEAKKzwlQCB0YWdsaWIgdXJpPSIvV0VCLUlORi90ZXN0LnRsZCIgcHJlZml4PSJ0ZXN0IiAlPgorCis8dGVzdDp0ZXN0IGNsYXNzPSJwYWNrMS5UZXN0Q2xhc3MiLz4KKworPCUKKyAgICBTeXN0ZW0ub3V0LnByaW50bG4odGVzdFZhcik7CislPgpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzcy9sb2NhbENsYXNzL2FmdGVyL3BhY2sxL2VtcHR5LnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3MvbG9jYWxDbGFzcy9hZnRlci9wYWNrMS9lbXB0eS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTY5ZGUyOQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3MvbG9jYWxDbGFzcy9hZnRlci9wYWNrMS9lbXB0eS50eHQKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3MvbG9jYWxDbGFzcy9hZnRlci9wYWNrMi9BLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzL2xvY2FsQ2xhc3MvYWZ0ZXIvcGFjazIvQS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM2MGRmZTMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzL2xvY2FsQ2xhc3MvYWZ0ZXIvcGFjazIvQS5qYXZhCkBAIC0wLDAgKzEsOSBAQAorcGFja2FnZSBwYWNrMjsKKworcHVibGljIGNsYXNzIEEgeworICAgIHB1YmxpYyB2b2lkIG1ldGhvZCAoKSB7CisgICAgICAgIGNsYXNzIFggeworICAgICAgICB9CisgICAgICAgIFggeCA9IG5ldyBYKCk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3MvbG9jYWxDbGFzcy9hZnRlci9wYWNrMi9lbXB0eS50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzL2xvY2FsQ2xhc3MvYWZ0ZXIvcGFjazIvZW1wdHkudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU2OWRlMjkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzL2xvY2FsQ2xhc3MvYWZ0ZXIvcGFjazIvZW1wdHkudHh0CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzL2xvY2FsQ2xhc3MvYmVmb3JlL3BhY2sxL0EuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3MvbG9jYWxDbGFzcy9iZWZvcmUvcGFjazEvQS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFmODFmNWMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzL2xvY2FsQ2xhc3MvYmVmb3JlL3BhY2sxL0EuamF2YQpAQCAtMCwwICsxLDkgQEAKK3BhY2thZ2UgcGFjazE7CisKK3B1YmxpYyBjbGFzcyBBIHsKKyAgICBwdWJsaWMgdm9pZCBtZXRob2QgKCkgeworICAgICAgICBjbGFzcyBYIHsKKyAgICAgICAgfQorICAgICAgICBYIHggPSBuZXcgWCgpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzL2xvY2FsQ2xhc3MvYmVmb3JlL3BhY2sxL2VtcHR5LnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3MvbG9jYWxDbGFzcy9iZWZvcmUvcGFjazEvZW1wdHkudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU2OWRlMjkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzL2xvY2FsQ2xhc3MvYmVmb3JlL3BhY2sxL2VtcHR5LnR4dApkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzcy9sb2NhbENsYXNzL2JlZm9yZS9wYWNrMi9lbXB0eS50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzL2xvY2FsQ2xhc3MvYmVmb3JlL3BhY2syL2VtcHR5LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNjlkZTI5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzcy9sb2NhbENsYXNzL2JlZm9yZS9wYWNrMi9lbXB0eS50eHQKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3MvbW92ZU11bHRpcGxlMS9hZnRlci9wYWNrMS9lbXB0eS50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzL21vdmVNdWx0aXBsZTEvYWZ0ZXIvcGFjazEvZW1wdHkudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU2OWRlMjkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzL21vdmVNdWx0aXBsZTEvYWZ0ZXIvcGFjazEvZW1wdHkudHh0CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzL21vdmVNdWx0aXBsZTEvYWZ0ZXIvcGFjazIvQ2xhc3MxLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzL21vdmVNdWx0aXBsZTEvYWZ0ZXIvcGFjazIvQ2xhc3MxLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDJiMDJkNgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3MvbW92ZU11bHRpcGxlMS9hZnRlci9wYWNrMi9DbGFzczEuamF2YQpAQCAtMCwwICsxLDYgQEAKK3BhY2thZ2UgcGFjazI7CisKK3B1YmxpYyBjbGFzcyBDbGFzczEgeworICBDbGFzczIgYTsKKyAgQ2xhc3MyIGI7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzcy9tb3ZlTXVsdGlwbGUxL2FmdGVyL3BhY2syL0NsYXNzMi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzcy9tb3ZlTXVsdGlwbGUxL2FmdGVyL3BhY2syL0NsYXNzMi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEwN2VmYjgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzL21vdmVNdWx0aXBsZTEvYWZ0ZXIvcGFjazIvQ2xhc3MyLmphdmEKQEAgLTAsMCArMSw0IEBACitwYWNrYWdlIHBhY2syOworCitwdWJsaWMgY2xhc3MgQ2xhc3MyIHsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzL21vdmVNdWx0aXBsZTEvYWZ0ZXIvcGFjazIvZW1wdHkudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzcy9tb3ZlTXVsdGlwbGUxL2FmdGVyL3BhY2syL2VtcHR5LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNjlkZTI5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzcy9tb3ZlTXVsdGlwbGUxL2FmdGVyL3BhY2syL2VtcHR5LnR4dApkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzcy9tb3ZlTXVsdGlwbGUxL2JlZm9yZS9wYWNrMS9DbGFzczEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3MvbW92ZU11bHRpcGxlMS9iZWZvcmUvcGFjazEvQ2xhc3MxLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjM0NmZjMQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3MvbW92ZU11bHRpcGxlMS9iZWZvcmUvcGFjazEvQ2xhc3MxLmphdmEKQEAgLTAsMCArMSw2IEBACitwYWNrYWdlIHBhY2sxOworCitwdWJsaWMgY2xhc3MgQ2xhc3MxIHsKKyAgQ2xhc3MyIGE7CisgIENsYXNzMiBiOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3MvbW92ZU11bHRpcGxlMS9iZWZvcmUvcGFjazEvQ2xhc3MyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzL21vdmVNdWx0aXBsZTEvYmVmb3JlL3BhY2sxL0NsYXNzMi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY5ZGYxYjMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzL21vdmVNdWx0aXBsZTEvYmVmb3JlL3BhY2sxL0NsYXNzMi5qYXZhCkBAIC0wLDAgKzEsNCBAQAorcGFja2FnZSBwYWNrMTsKKworcHVibGljIGNsYXNzIENsYXNzMiB7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzcy9tb3ZlTXVsdGlwbGUxL2JlZm9yZS9wYWNrMS9lbXB0eS50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzL21vdmVNdWx0aXBsZTEvYmVmb3JlL3BhY2sxL2VtcHR5LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNjlkZTI5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzcy9tb3ZlTXVsdGlwbGUxL2JlZm9yZS9wYWNrMS9lbXB0eS50eHQKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3MvbW92ZU11bHRpcGxlMS9iZWZvcmUvcGFjazIvZW1wdHkudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzcy9tb3ZlTXVsdGlwbGUxL2JlZm9yZS9wYWNrMi9lbXB0eS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTY5ZGUyOQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3MvbW92ZU11bHRpcGxlMS9iZWZvcmUvcGFjazIvZW1wdHkudHh0CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzL25vbkphdmEvYWZ0ZXIvcGFjazEvZW1wdHkudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzcy9ub25KYXZhL2FmdGVyL3BhY2sxL2VtcHR5LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNjlkZTI5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzcy9ub25KYXZhL2FmdGVyL3BhY2sxL2VtcHR5LnR4dApkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzcy9ub25KYXZhL2FmdGVyL3BhY2syL0NsYXNzMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzcy9ub25KYXZhL2FmdGVyL3BhY2syL0NsYXNzMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlhZDUyNjkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzL25vbkphdmEvYWZ0ZXIvcGFjazIvQ2xhc3MxLmphdmEKQEAgLTAsMCArMSw0IEBACitwYWNrYWdlIHBhY2syOworCitwdWJsaWMgY2xhc3MgQ2xhc3MxIHsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzL25vbkphdmEvYWZ0ZXIvcGFjazIvZW1wdHkudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzcy9ub25KYXZhL2FmdGVyL3BhY2syL2VtcHR5LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNjlkZTI5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzcy9ub25KYXZhL2FmdGVyL3BhY2syL2VtcHR5LnR4dApkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzcy9ub25KYXZhL2FmdGVyL3FxcS50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzL25vbkphdmEvYWZ0ZXIvcXFxLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNGNjMGMyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzcy9ub25KYXZhL2FmdGVyL3FxcS50eHQKQEAgLTAsMCArMSwzIEBACitwYWNrMi5DbGFzczEKK0NsYXNzMQorcGFjazEuQ2xhc3MxYQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzcy9ub25KYXZhL2JlZm9yZS9wYWNrMS9DbGFzczEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3Mvbm9uSmF2YS9iZWZvcmUvcGFjazEvQ2xhc3MxLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjMxZmUwNgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3Mvbm9uSmF2YS9iZWZvcmUvcGFjazEvQ2xhc3MxLmphdmEKQEAgLTAsMCArMSw0IEBACitwYWNrYWdlIHBhY2sxOworCitwdWJsaWMgY2xhc3MgQ2xhc3MxIHsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzL25vbkphdmEvYmVmb3JlL3BhY2sxL2VtcHR5LnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3Mvbm9uSmF2YS9iZWZvcmUvcGFjazEvZW1wdHkudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU2OWRlMjkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzL25vbkphdmEvYmVmb3JlL3BhY2sxL2VtcHR5LnR4dApkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzcy9ub25KYXZhL2JlZm9yZS9wYWNrMi9lbXB0eS50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzL25vbkphdmEvYmVmb3JlL3BhY2syL2VtcHR5LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNjlkZTI5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzcy9ub25KYXZhL2JlZm9yZS9wYWNrMi9lbXB0eS50eHQKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3Mvbm9uSmF2YS9iZWZvcmUvcXFxLnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3Mvbm9uSmF2YS9iZWZvcmUvcXFxLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNjBkYzdlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzcy9ub25KYXZhL2JlZm9yZS9xcXEudHh0CkBAIC0wLDAgKzEsMyBAQAorcGFjazEuQ2xhc3MxCitDbGFzczEKK3BhY2sxLkNsYXNzMWEKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3MvcmVmSW5Qcm9wZXJ0aWVzRmlsZS9hZnRlci9teS5wcm9wZXJ0aWVzIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzcy9yZWZJblByb3BlcnRpZXNGaWxlL2FmdGVyL215LnByb3BlcnRpZXMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWI2NDBkMgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3MvcmVmSW5Qcm9wZXJ0aWVzRmlsZS9hZnRlci9teS5wcm9wZXJ0aWVzCkBAIC0wLDAgKzEgQEAKK3JlZiA9IHAuTXlDbGFzcwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3MvcmVmSW5Qcm9wZXJ0aWVzRmlsZS9hZnRlci9wL015Q2xhc3MuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3MvcmVmSW5Qcm9wZXJ0aWVzRmlsZS9hZnRlci9wL015Q2xhc3MuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YTQxM2JjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzcy9yZWZJblByb3BlcnRpZXNGaWxlL2FmdGVyL3AvTXlDbGFzcy5qYXZhCkBAIC0wLDAgKzEsMiBAQAorcGFja2FnZSBwOworY2xhc3MgTXlDbGFzc3t9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzcy9yZWZJblByb3BlcnRpZXNGaWxlL2FmdGVyL3AvZW1wdHkudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzcy9yZWZJblByb3BlcnRpZXNGaWxlL2FmdGVyL3AvZW1wdHkudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU2OWRlMjkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzL3JlZkluUHJvcGVydGllc0ZpbGUvYWZ0ZXIvcC9lbXB0eS50eHQKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3MvcmVmSW5Qcm9wZXJ0aWVzRmlsZS9hZnRlci9wMS9lbXB0eS50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzL3JlZkluUHJvcGVydGllc0ZpbGUvYWZ0ZXIvcDEvZW1wdHkudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU2OWRlMjkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzL3JlZkluUHJvcGVydGllc0ZpbGUvYWZ0ZXIvcDEvZW1wdHkudHh0CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzL3JlZkluUHJvcGVydGllc0ZpbGUvYmVmb3JlL215LnByb3BlcnRpZXMgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzL3JlZkluUHJvcGVydGllc0ZpbGUvYmVmb3JlL215LnByb3BlcnRpZXMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDgwNGExMwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3MvcmVmSW5Qcm9wZXJ0aWVzRmlsZS9iZWZvcmUvbXkucHJvcGVydGllcwpAQCAtMCwwICsxIEBACityZWYgPSBwMS5NeUNsYXNzClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzcy9yZWZJblByb3BlcnRpZXNGaWxlL2JlZm9yZS9wL2VtcHR5LnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3MvcmVmSW5Qcm9wZXJ0aWVzRmlsZS9iZWZvcmUvcC9lbXB0eS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTY5ZGUyOQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3MvcmVmSW5Qcm9wZXJ0aWVzRmlsZS9iZWZvcmUvcC9lbXB0eS50eHQKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3MvcmVmSW5Qcm9wZXJ0aWVzRmlsZS9iZWZvcmUvcDEvTXlDbGFzcy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzcy9yZWZJblByb3BlcnRpZXNGaWxlL2JlZm9yZS9wMS9NeUNsYXNzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDg2NGM5YQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3MvcmVmSW5Qcm9wZXJ0aWVzRmlsZS9iZWZvcmUvcDEvTXlDbGFzcy5qYXZhCkBAIC0wLDAgKzEsMiBAQAorcGFja2FnZSBwMTsKK2NsYXNzIE15Q2xhc3N7fQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3MvcmVmSW5Qcm9wZXJ0aWVzRmlsZS9iZWZvcmUvcDEvZW1wdHkudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzcy9yZWZJblByb3BlcnRpZXNGaWxlL2JlZm9yZS9wMS9lbXB0eS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTY5ZGUyOQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3MvcmVmSW5Qcm9wZXJ0aWVzRmlsZS9iZWZvcmUvcDEvZW1wdHkudHh0CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzL3NlY29uZGFyeUNsYXNzL2FmdGVyL3BhY2sxL0NsYXNzMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzcy9zZWNvbmRhcnlDbGFzcy9hZnRlci9wYWNrMS9DbGFzczEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZjUzODI1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzcy9zZWNvbmRhcnlDbGFzcy9hZnRlci9wYWNrMS9DbGFzczEuamF2YQpAQCAtMCwwICsxLDUgQEAKK3BhY2thZ2UgcGFjazE7CisKK3B1YmxpYyBjbGFzcyBDbGFzczEgeworfQorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzL3NlY29uZGFyeUNsYXNzL2FmdGVyL3BhY2sxL0NsYXNzMi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzcy9zZWNvbmRhcnlDbGFzcy9hZnRlci9wYWNrMS9DbGFzczIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MTE4YzFhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzcy9zZWNvbmRhcnlDbGFzcy9hZnRlci9wYWNrMS9DbGFzczIuamF2YQpAQCAtMCwwICsxLDUgQEAKK3BhY2thZ2UgcGFjazE7CisKK2NsYXNzIENsYXNzMiB7CisKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzL3NlY29uZGFyeUNsYXNzL2FmdGVyL3BhY2sxL1VzZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3Mvc2Vjb25kYXJ5Q2xhc3MvYWZ0ZXIvcGFjazEvVXNlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVlNDYxYWQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzL3NlY29uZGFyeUNsYXNzL2FmdGVyL3BhY2sxL1VzZXIuamF2YQpAQCAtMCwwICsxLDYgQEAKK3BhY2thZ2UgcGFjazE7CisKK3B1YmxpYyBjbGFzcyBVc2VyIHsKKyAgQ2xhc3MxIGNsYXNzMTsKKyAgQ2xhc3MyIGNsYXNzMjsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzL3NlY29uZGFyeUNsYXNzL2JlZm9yZS9wYWNrMS9DbGFzczEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3Mvc2Vjb25kYXJ5Q2xhc3MvYmVmb3JlL3BhY2sxL0NsYXNzMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNiZTBkMDAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzL3NlY29uZGFyeUNsYXNzL2JlZm9yZS9wYWNrMS9DbGFzczEuamF2YQpAQCAtMCwwICsxLDggQEAKK3BhY2thZ2UgcGFjazE7CisKK3B1YmxpYyBjbGFzcyBDbGFzczEgeworfQorCitjbGFzcyBDbGFzczIgeworCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzcy9zZWNvbmRhcnlDbGFzcy9iZWZvcmUvcGFjazEvVXNlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzcy9zZWNvbmRhcnlDbGFzcy9iZWZvcmUvcGFjazEvVXNlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVlNDYxYWQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzL3NlY29uZGFyeUNsYXNzL2JlZm9yZS9wYWNrMS9Vc2VyLmphdmEKQEAgLTAsMCArMSw2IEBACitwYWNrYWdlIHBhY2sxOworCitwdWJsaWMgY2xhc3MgVXNlciB7CisgIENsYXNzMSBjbGFzczE7CisgIENsYXNzMiBjbGFzczI7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzcy9zdHJpbmdzQW5kQ29tbWVudHMvYWZ0ZXIvQ2xpZW50LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzL3N0cmluZ3NBbmRDb21tZW50cy9hZnRlci9DbGllbnQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZTg2ZmFmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzcy9zdHJpbmdzQW5kQ29tbWVudHMvYWZ0ZXIvQ2xpZW50LmphdmEKQEAgLTAsMCArMSw2IEBACitwdWJsaWMgY2xhc3MgQ2xpZW50IHsKKyAgU3RyaW5nIHMgPSAicGFjazIuQ2xhc3MxIjsKKyAgLy8gcGFjazIuQ2xhc3MxCisgIC8vIGFwYWNrMS5DbGFzczEKKyAgLy8gQ2xhc3MxCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzcy9zdHJpbmdzQW5kQ29tbWVudHMvYWZ0ZXIvcGFjazEvZW1wdHkudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzcy9zdHJpbmdzQW5kQ29tbWVudHMvYWZ0ZXIvcGFjazEvZW1wdHkudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU2OWRlMjkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzL3N0cmluZ3NBbmRDb21tZW50cy9hZnRlci9wYWNrMS9lbXB0eS50eHQKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3Mvc3RyaW5nc0FuZENvbW1lbnRzL2FmdGVyL3BhY2syL0NsYXNzMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzcy9zdHJpbmdzQW5kQ29tbWVudHMvYWZ0ZXIvcGFjazIvQ2xhc3MxLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWFkNTI2OQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3Mvc3RyaW5nc0FuZENvbW1lbnRzL2FmdGVyL3BhY2syL0NsYXNzMS5qYXZhCkBAIC0wLDAgKzEsNCBAQAorcGFja2FnZSBwYWNrMjsKKworcHVibGljIGNsYXNzIENsYXNzMSB7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzcy9zdHJpbmdzQW5kQ29tbWVudHMvYWZ0ZXIvcGFjazIvZW1wdHkudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzcy9zdHJpbmdzQW5kQ29tbWVudHMvYWZ0ZXIvcGFjazIvZW1wdHkudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU2OWRlMjkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzL3N0cmluZ3NBbmRDb21tZW50cy9hZnRlci9wYWNrMi9lbXB0eS50eHQKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3Mvc3RyaW5nc0FuZENvbW1lbnRzL2JlZm9yZS9DbGllbnQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3Mvc3RyaW5nc0FuZENvbW1lbnRzL2JlZm9yZS9DbGllbnQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NWE3MjMyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzcy9zdHJpbmdzQW5kQ29tbWVudHMvYmVmb3JlL0NsaWVudC5qYXZhCkBAIC0wLDAgKzEsNiBAQAorcHVibGljIGNsYXNzIENsaWVudCB7CisgIFN0cmluZyBzID0gInBhY2sxLkNsYXNzMSI7CisgIC8vIHBhY2sxLkNsYXNzMQorICAvLyBhcGFjazEuQ2xhc3MxCisgIC8vIENsYXNzMQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3Mvc3RyaW5nc0FuZENvbW1lbnRzL2JlZm9yZS9wYWNrMS9DbGFzczEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3Mvc3RyaW5nc0FuZENvbW1lbnRzL2JlZm9yZS9wYWNrMS9DbGFzczEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMzFmZTA2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzcy9zdHJpbmdzQW5kQ29tbWVudHMvYmVmb3JlL3BhY2sxL0NsYXNzMS5qYXZhCkBAIC0wLDAgKzEsNCBAQAorcGFja2FnZSBwYWNrMTsKKworcHVibGljIGNsYXNzIENsYXNzMSB7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzcy9zdHJpbmdzQW5kQ29tbWVudHMvYmVmb3JlL3BhY2sxL2VtcHR5LnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3Mvc3RyaW5nc0FuZENvbW1lbnRzL2JlZm9yZS9wYWNrMS9lbXB0eS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTY5ZGUyOQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3Mvc3RyaW5nc0FuZENvbW1lbnRzL2JlZm9yZS9wYWNrMS9lbXB0eS50eHQKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3Mvc3RyaW5nc0FuZENvbW1lbnRzL2JlZm9yZS9wYWNrMi9lbXB0eS50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzL3N0cmluZ3NBbmRDb21tZW50cy9iZWZvcmUvcGFjazIvZW1wdHkudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU2OWRlMjkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzL3N0cmluZ3NBbmRDb21tZW50cy9iZWZvcmUvcGFjazIvZW1wdHkudHh0CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzL3N0cmluZ3NBbmRDb21tZW50czIvYWZ0ZXIvcGFjazEvZW1wdHkudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzcy9zdHJpbmdzQW5kQ29tbWVudHMyL2FmdGVyL3BhY2sxL2VtcHR5LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNjlkZTI5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzcy9zdHJpbmdzQW5kQ29tbWVudHMyL2FmdGVyL3BhY2sxL2VtcHR5LnR4dApkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzcy9zdHJpbmdzQW5kQ29tbWVudHMyL2FmdGVyL3BhY2syL0FDbGFzcy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzcy9zdHJpbmdzQW5kQ29tbWVudHMyL2FmdGVyL3BhY2syL0FDbGFzcy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRlNGRjMTYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzL3N0cmluZ3NBbmRDb21tZW50czIvYWZ0ZXIvcGFjazIvQUNsYXNzLmphdmEKQEAgLTAsMCArMSw1IEBACitwYWNrYWdlIHBhY2syOworCitwdWJsaWMgY2xhc3MgQUNsYXNzIHsKKyAgU3RyaW5nIHMgPSAicGFjazIuQUNsYXNzIjsKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3Mvc3RyaW5nc0FuZENvbW1lbnRzMi9hZnRlci9wYWNrMi9lbXB0eS50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzL3N0cmluZ3NBbmRDb21tZW50czIvYWZ0ZXIvcGFjazIvZW1wdHkudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU2OWRlMjkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzL3N0cmluZ3NBbmRDb21tZW50czIvYWZ0ZXIvcGFjazIvZW1wdHkudHh0CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzL3N0cmluZ3NBbmRDb21tZW50czIvYmVmb3JlL3BhY2sxL0FDbGFzcy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzcy9zdHJpbmdzQW5kQ29tbWVudHMyL2JlZm9yZS9wYWNrMS9BQ2xhc3MuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43Y2RlMzdjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzcy9zdHJpbmdzQW5kQ29tbWVudHMyL2JlZm9yZS9wYWNrMS9BQ2xhc3MuamF2YQpAQCAtMCwwICsxLDUgQEAKK3BhY2thZ2UgcGFjazE7CisKK3B1YmxpYyBjbGFzcyBBQ2xhc3MgeworICBTdHJpbmcgcyA9ICJwYWNrMS5BQ2xhc3MiOworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzcy9zdHJpbmdzQW5kQ29tbWVudHMyL2JlZm9yZS9wYWNrMS9lbXB0eS50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzL3N0cmluZ3NBbmRDb21tZW50czIvYmVmb3JlL3BhY2sxL2VtcHR5LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNjlkZTI5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzcy9zdHJpbmdzQW5kQ29tbWVudHMyL2JlZm9yZS9wYWNrMS9lbXB0eS50eHQKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3Mvc3RyaW5nc0FuZENvbW1lbnRzMi9iZWZvcmUvcGFjazIvZW1wdHkudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzcy9zdHJpbmdzQW5kQ29tbWVudHMyL2JlZm9yZS9wYWNrMi9lbXB0eS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTY5ZGUyOQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3Mvc3RyaW5nc0FuZENvbW1lbnRzMi9iZWZvcmUvcGFjazIvZW1wdHkudHh0CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzL3VudXNlZEltcG9ydC9hZnRlci9wMS9GMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzcy91bnVzZWRJbXBvcnQvYWZ0ZXIvcDEvRjEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hOTFiYjU1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzcy91bnVzZWRJbXBvcnQvYWZ0ZXIvcDEvRjEuamF2YQpAQCAtMCwwICsxLDUgQEAKK3BhY2thZ2UgcDE7CisKK2NsYXNzIEYxIHsKKyAgRjIgZjI7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzcy91bnVzZWRJbXBvcnQvYWZ0ZXIvcDEvRjIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3MvdW51c2VkSW1wb3J0L2FmdGVyL3AxL0YyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTFkMGZmZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3MvdW51c2VkSW1wb3J0L2FmdGVyL3AxL0YyLmphdmEKQEAgLTAsMCArMSwzIEBACitwYWNrYWdlIHAxOworCitwdWJsaWMgY2xhc3MgRjIge30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzL3VudXNlZEltcG9ydC9hZnRlci9wMi9lbXB0eS50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzL3VudXNlZEltcG9ydC9hZnRlci9wMi9lbXB0eS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTY5ZGUyOQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3MvdW51c2VkSW1wb3J0L2FmdGVyL3AyL2VtcHR5LnR4dApkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzcy91bnVzZWRJbXBvcnQvYmVmb3JlL3AxL0YxLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzL3VudXNlZEltcG9ydC9iZWZvcmUvcDEvRjEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kY2JjNjEzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzcy91bnVzZWRJbXBvcnQvYmVmb3JlL3AxL0YxLmphdmEKQEAgLTAsMCArMSw3IEBACitwYWNrYWdlIHAxOworCitpbXBvcnQgcDIuRjI7CisKK2NsYXNzIEYxIHsKKyAgRjIgZjI7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzcy91bnVzZWRJbXBvcnQvYmVmb3JlL3AyL0YyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzL3VudXNlZEltcG9ydC9iZWZvcmUvcDIvRjIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZWRkMjdkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzcy91bnVzZWRJbXBvcnQvYmVmb3JlL3AyL0YyLmphdmEKQEAgLTAsMCArMSwzIEBACitwYWNrYWdlIHAyOworCitwdWJsaWMgY2xhc3MgRjIge30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzL3VudXNlZEltcG9ydC9iZWZvcmUvcDIvZW1wdHkudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzcy91bnVzZWRJbXBvcnQvYmVmb3JlL3AyL2VtcHR5LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNjlkZTI5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzcy91bnVzZWRJbXBvcnQvYmVmb3JlL3AyL2VtcHR5LnR4dApkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzc0FuZEZpbGUvYWxsQ2xhc3Nlc0luRmlsZS9hZnRlci9zL2VtcHR5LnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3NBbmRGaWxlL2FsbENsYXNzZXNJbkZpbGUvYWZ0ZXIvcy9lbXB0eS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTY5ZGUyOQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3NBbmRGaWxlL2FsbENsYXNzZXNJbkZpbGUvYWZ0ZXIvcy9lbXB0eS50eHQKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3NBbmRGaWxlL2FsbENsYXNzZXNJbkZpbGUvYWZ0ZXIvdC9NeUNsYXNzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzQW5kRmlsZS9hbGxDbGFzc2VzSW5GaWxlL2FmdGVyL3QvTXlDbGFzcy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQxNmMxOTYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzQW5kRmlsZS9hbGxDbGFzc2VzSW5GaWxlL2FmdGVyL3QvTXlDbGFzcy5qYXZhCkBAIC0wLDAgKzEsMyBAQAorcGFja2FnZSB0OworY2xhc3MgTXlDbGFzc3t9CitjbGFzcyBNeU9uZU1vcmVDbGFzc3t9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzc0FuZEZpbGUvYWxsQ2xhc3Nlc0luRmlsZS9hZnRlci90L2VtcHR5LnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3NBbmRGaWxlL2FsbENsYXNzZXNJbkZpbGUvYWZ0ZXIvdC9lbXB0eS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTY5ZGUyOQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3NBbmRGaWxlL2FsbENsYXNzZXNJbkZpbGUvYWZ0ZXIvdC9lbXB0eS50eHQKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3NBbmRGaWxlL2FsbENsYXNzZXNJbkZpbGUvYWZ0ZXIvdC90eHQybW92ZS50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzQW5kRmlsZS9hbGxDbGFzc2VzSW5GaWxlL2FmdGVyL3QvdHh0Mm1vdmUudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU2OWRlMjkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzQW5kRmlsZS9hbGxDbGFzc2VzSW5GaWxlL2FmdGVyL3QvdHh0Mm1vdmUudHh0CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzQW5kRmlsZS9hbGxDbGFzc2VzSW5GaWxlL2JlZm9yZS9zL015Q2xhc3MuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3NBbmRGaWxlL2FsbENsYXNzZXNJbkZpbGUvYmVmb3JlL3MvTXlDbGFzcy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIyMmI2ZDIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzQW5kRmlsZS9hbGxDbGFzc2VzSW5GaWxlL2JlZm9yZS9zL015Q2xhc3MuamF2YQpAQCAtMCwwICsxLDMgQEAKK3BhY2thZ2UgczsKK2NsYXNzIE15Q2xhc3N7fQorY2xhc3MgTXlPbmVNb3JlQ2xhc3N7fQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3NBbmRGaWxlL2FsbENsYXNzZXNJbkZpbGUvYmVmb3JlL3MvZW1wdHkudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzc0FuZEZpbGUvYWxsQ2xhc3Nlc0luRmlsZS9iZWZvcmUvcy9lbXB0eS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTY5ZGUyOQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3NBbmRGaWxlL2FsbENsYXNzZXNJbkZpbGUvYmVmb3JlL3MvZW1wdHkudHh0CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzQW5kRmlsZS9hbGxDbGFzc2VzSW5GaWxlL2JlZm9yZS9zL3R4dDJtb3ZlLnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3NBbmRGaWxlL2FsbENsYXNzZXNJbkZpbGUvYmVmb3JlL3MvdHh0Mm1vdmUudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU2OWRlMjkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzQW5kRmlsZS9hbGxDbGFzc2VzSW5GaWxlL2JlZm9yZS9zL3R4dDJtb3ZlLnR4dApkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzc0FuZEZpbGUvYWxsQ2xhc3Nlc0luRmlsZS9iZWZvcmUvdC9lbXB0eS50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzQW5kRmlsZS9hbGxDbGFzc2VzSW5GaWxlL2JlZm9yZS90L2VtcHR5LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNjlkZTI5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzc0FuZEZpbGUvYWxsQ2xhc3Nlc0luRmlsZS9iZWZvcmUvdC9lbXB0eS50eHQKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3NBbmRGaWxlL2xlYXZlUGFja2FnZUxvY2FsQ2xhc3MvYWZ0ZXIvcy9NeUxvY2FsLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzQW5kRmlsZS9sZWF2ZVBhY2thZ2VMb2NhbENsYXNzL2FmdGVyL3MvTXlMb2NhbC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJmNGEzYzEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzQW5kRmlsZS9sZWF2ZVBhY2thZ2VMb2NhbENsYXNzL2FmdGVyL3MvTXlMb2NhbC5qYXZhCkBAIC0wLDAgKzEsMyBAQAorcGFja2FnZSBzOworCitjbGFzcyBNeUxvY2Fse30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzQW5kRmlsZS9sZWF2ZVBhY2thZ2VMb2NhbENsYXNzL2FmdGVyL3MvZW1wdHkudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzc0FuZEZpbGUvbGVhdmVQYWNrYWdlTG9jYWxDbGFzcy9hZnRlci9zL2VtcHR5LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNjlkZTI5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzc0FuZEZpbGUvbGVhdmVQYWNrYWdlTG9jYWxDbGFzcy9hZnRlci9zL2VtcHR5LnR4dApkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzc0FuZEZpbGUvbGVhdmVQYWNrYWdlTG9jYWxDbGFzcy9hZnRlci90L015Q2xhc3MuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3NBbmRGaWxlL2xlYXZlUGFja2FnZUxvY2FsQ2xhc3MvYWZ0ZXIvdC9NeUNsYXNzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzZjYzQ4YQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3NBbmRGaWxlL2xlYXZlUGFja2FnZUxvY2FsQ2xhc3MvYWZ0ZXIvdC9NeUNsYXNzLmphdmEKQEAgLTAsMCArMSwyIEBACitwYWNrYWdlIHQ7CitwdWJsaWMgY2xhc3MgTXlDbGFzc3t9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzQW5kRmlsZS9sZWF2ZVBhY2thZ2VMb2NhbENsYXNzL2FmdGVyL3QvZW1wdHkudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzc0FuZEZpbGUvbGVhdmVQYWNrYWdlTG9jYWxDbGFzcy9hZnRlci90L2VtcHR5LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNjlkZTI5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzc0FuZEZpbGUvbGVhdmVQYWNrYWdlTG9jYWxDbGFzcy9hZnRlci90L2VtcHR5LnR4dApkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzc0FuZEZpbGUvbGVhdmVQYWNrYWdlTG9jYWxDbGFzcy9hZnRlci90L3R4dDJtb3ZlLnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3NBbmRGaWxlL2xlYXZlUGFja2FnZUxvY2FsQ2xhc3MvYWZ0ZXIvdC90eHQybW92ZS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTY5ZGUyOQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3NBbmRGaWxlL2xlYXZlUGFja2FnZUxvY2FsQ2xhc3MvYWZ0ZXIvdC90eHQybW92ZS50eHQKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3NBbmRGaWxlL2xlYXZlUGFja2FnZUxvY2FsQ2xhc3MvYmVmb3JlL3MvTXlDbGFzcy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzc0FuZEZpbGUvbGVhdmVQYWNrYWdlTG9jYWxDbGFzcy9iZWZvcmUvcy9NeUNsYXNzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDRmOTVmYQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3NBbmRGaWxlL2xlYXZlUGFja2FnZUxvY2FsQ2xhc3MvYmVmb3JlL3MvTXlDbGFzcy5qYXZhCkBAIC0wLDAgKzEsMyBAQAorcGFja2FnZSBzOworcHVibGljIGNsYXNzIE15Q2xhc3N7fQorY2xhc3MgTXlMb2NhbHt9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzQW5kRmlsZS9sZWF2ZVBhY2thZ2VMb2NhbENsYXNzL2JlZm9yZS9zL2VtcHR5LnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3NBbmRGaWxlL2xlYXZlUGFja2FnZUxvY2FsQ2xhc3MvYmVmb3JlL3MvZW1wdHkudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU2OWRlMjkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzQW5kRmlsZS9sZWF2ZVBhY2thZ2VMb2NhbENsYXNzL2JlZm9yZS9zL2VtcHR5LnR4dApkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzc0FuZEZpbGUvbGVhdmVQYWNrYWdlTG9jYWxDbGFzcy9iZWZvcmUvcy90eHQybW92ZS50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzQW5kRmlsZS9sZWF2ZVBhY2thZ2VMb2NhbENsYXNzL2JlZm9yZS9zL3R4dDJtb3ZlLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNjlkZTI5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzc0FuZEZpbGUvbGVhdmVQYWNrYWdlTG9jYWxDbGFzcy9iZWZvcmUvcy90eHQybW92ZS50eHQKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3NBbmRGaWxlL2xlYXZlUGFja2FnZUxvY2FsQ2xhc3MvYmVmb3JlL3QvZW1wdHkudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzc0FuZEZpbGUvbGVhdmVQYWNrYWdlTG9jYWxDbGFzcy9iZWZvcmUvdC9lbXB0eS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTY5ZGUyOQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3NBbmRGaWxlL2xlYXZlUGFja2FnZUxvY2FsQ2xhc3MvYmVmb3JlL3QvZW1wdHkudHh0CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzQW5kRmlsZS9vbmx5UGFja2FnZUxvY2FsQ2xhc3MvYWZ0ZXIvcy9NeUNsYXNzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzQW5kRmlsZS9vbmx5UGFja2FnZUxvY2FsQ2xhc3MvYWZ0ZXIvcy9NeUNsYXNzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWJjZWFkMwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3NBbmRGaWxlL29ubHlQYWNrYWdlTG9jYWxDbGFzcy9hZnRlci9zL015Q2xhc3MuamF2YQpAQCAtMCwwICsxLDIgQEAKK3BhY2thZ2UgczsKK3B1YmxpYyBjbGFzcyBNeUNsYXNze30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3NBbmRGaWxlL29ubHlQYWNrYWdlTG9jYWxDbGFzcy9hZnRlci9zL2VtcHR5LnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3NBbmRGaWxlL29ubHlQYWNrYWdlTG9jYWxDbGFzcy9hZnRlci9zL2VtcHR5LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNjlkZTI5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzc0FuZEZpbGUvb25seVBhY2thZ2VMb2NhbENsYXNzL2FmdGVyL3MvZW1wdHkudHh0CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzQW5kRmlsZS9vbmx5UGFja2FnZUxvY2FsQ2xhc3MvYWZ0ZXIvdC9NeUxvY2FsLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzQW5kRmlsZS9vbmx5UGFja2FnZUxvY2FsQ2xhc3MvYWZ0ZXIvdC9NeUxvY2FsLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTFkZDM0ZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3NBbmRGaWxlL29ubHlQYWNrYWdlTG9jYWxDbGFzcy9hZnRlci90L015TG9jYWwuamF2YQpAQCAtMCwwICsxLDMgQEAKK3BhY2thZ2UgdDsKKworY2xhc3MgTXlMb2NhbHt9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzc0FuZEZpbGUvb25seVBhY2thZ2VMb2NhbENsYXNzL2FmdGVyL3QvZW1wdHkudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzc0FuZEZpbGUvb25seVBhY2thZ2VMb2NhbENsYXNzL2FmdGVyL3QvZW1wdHkudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU2OWRlMjkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzQW5kRmlsZS9vbmx5UGFja2FnZUxvY2FsQ2xhc3MvYWZ0ZXIvdC9lbXB0eS50eHQKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3NBbmRGaWxlL29ubHlQYWNrYWdlTG9jYWxDbGFzcy9hZnRlci90L3R4dDJtb3ZlLnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3NBbmRGaWxlL29ubHlQYWNrYWdlTG9jYWxDbGFzcy9hZnRlci90L3R4dDJtb3ZlLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNjlkZTI5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzc0FuZEZpbGUvb25seVBhY2thZ2VMb2NhbENsYXNzL2FmdGVyL3QvdHh0Mm1vdmUudHh0CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzQW5kRmlsZS9vbmx5UGFja2FnZUxvY2FsQ2xhc3MvYmVmb3JlL3MvTXlDbGFzcy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzc0FuZEZpbGUvb25seVBhY2thZ2VMb2NhbENsYXNzL2JlZm9yZS9zL015Q2xhc3MuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNGY5NWZhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzc0FuZEZpbGUvb25seVBhY2thZ2VMb2NhbENsYXNzL2JlZm9yZS9zL015Q2xhc3MuamF2YQpAQCAtMCwwICsxLDMgQEAKK3BhY2thZ2UgczsKK3B1YmxpYyBjbGFzcyBNeUNsYXNze30KK2NsYXNzIE15TG9jYWx7fQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzc0FuZEZpbGUvb25seVBhY2thZ2VMb2NhbENsYXNzL2JlZm9yZS9zL2VtcHR5LnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3NBbmRGaWxlL29ubHlQYWNrYWdlTG9jYWxDbGFzcy9iZWZvcmUvcy9lbXB0eS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTY5ZGUyOQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3NBbmRGaWxlL29ubHlQYWNrYWdlTG9jYWxDbGFzcy9iZWZvcmUvcy9lbXB0eS50eHQKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3NBbmRGaWxlL29ubHlQYWNrYWdlTG9jYWxDbGFzcy9iZWZvcmUvcy90eHQybW92ZS50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzQW5kRmlsZS9vbmx5UGFja2FnZUxvY2FsQ2xhc3MvYmVmb3JlL3MvdHh0Mm1vdmUudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU2OWRlMjkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzQW5kRmlsZS9vbmx5UGFja2FnZUxvY2FsQ2xhc3MvYmVmb3JlL3MvdHh0Mm1vdmUudHh0CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzQW5kRmlsZS9vbmx5UGFja2FnZUxvY2FsQ2xhc3MvYmVmb3JlL3QvZW1wdHkudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzc0FuZEZpbGUvb25seVBhY2thZ2VMb2NhbENsYXNzL2JlZm9yZS90L2VtcHR5LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNjlkZTI5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzc0FuZEZpbGUvb25seVBhY2thZ2VMb2NhbENsYXNzL2JlZm9yZS90L2VtcHR5LnR4dApkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzc1RvSW5uZXIvY29udGV4dENoYW5nZTEvYWZ0ZXIvcGFjazEvQ2xhc3MyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzVG9Jbm5lci9jb250ZXh0Q2hhbmdlMS9hZnRlci9wYWNrMS9DbGFzczIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mOWRmMWIzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzc1RvSW5uZXIvY29udGV4dENoYW5nZTEvYWZ0ZXIvcGFjazEvQ2xhc3MyLmphdmEKQEAgLTAsMCArMSw0IEBACitwYWNrYWdlIHBhY2sxOworCitwdWJsaWMgY2xhc3MgQ2xhc3MyIHsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzVG9Jbm5lci9jb250ZXh0Q2hhbmdlMS9hZnRlci9wYWNrMS9lbXB0eS50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzVG9Jbm5lci9jb250ZXh0Q2hhbmdlMS9hZnRlci9wYWNrMS9lbXB0eS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTY5ZGUyOQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3NUb0lubmVyL2NvbnRleHRDaGFuZ2UxL2FmdGVyL3BhY2sxL2VtcHR5LnR4dApkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzc1RvSW5uZXIvY29udGV4dENoYW5nZTEvYWZ0ZXIvcGFjazIvQS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzc1RvSW5uZXIvY29udGV4dENoYW5nZTEvYWZ0ZXIvcGFjazIvQS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNiN2M1YTkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzVG9Jbm5lci9jb250ZXh0Q2hhbmdlMS9hZnRlci9wYWNrMi9BLmphdmEKQEAgLTAsMCArMSw5IEBACitwYWNrYWdlIHBhY2syOworCitpbXBvcnQgcGFjazEuQ2xhc3MyOworCitwdWJsaWMgY2xhc3MgQSB7CisgICAgcHVibGljIHN0YXRpYyBjbGFzcyBDbGFzczEgeworICAgICAgICBDbGFzczIgYTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzVG9Jbm5lci9jb250ZXh0Q2hhbmdlMS9hZnRlci9wYWNrMi9lbXB0eS50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzVG9Jbm5lci9jb250ZXh0Q2hhbmdlMS9hZnRlci9wYWNrMi9lbXB0eS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTY5ZGUyOQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3NUb0lubmVyL2NvbnRleHRDaGFuZ2UxL2FmdGVyL3BhY2syL2VtcHR5LnR4dApkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzc1RvSW5uZXIvY29udGV4dENoYW5nZTEvYmVmb3JlL3BhY2sxL0NsYXNzMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzc1RvSW5uZXIvY29udGV4dENoYW5nZTEvYmVmb3JlL3BhY2sxL0NsYXNzMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ3MTE1Y2YKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzVG9Jbm5lci9jb250ZXh0Q2hhbmdlMS9iZWZvcmUvcGFjazEvQ2xhc3MxLmphdmEKQEAgLTAsMCArMSw1IEBACitwYWNrYWdlIHBhY2sxOworCitwdWJsaWMgY2xhc3MgQ2xhc3MxIHsKKyAgICBDbGFzczIgYTsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzVG9Jbm5lci9jb250ZXh0Q2hhbmdlMS9iZWZvcmUvcGFjazEvQ2xhc3MyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzVG9Jbm5lci9jb250ZXh0Q2hhbmdlMS9iZWZvcmUvcGFjazEvQ2xhc3MyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjlkZjFiMwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3NUb0lubmVyL2NvbnRleHRDaGFuZ2UxL2JlZm9yZS9wYWNrMS9DbGFzczIuamF2YQpAQCAtMCwwICsxLDQgQEAKK3BhY2thZ2UgcGFjazE7CisKK3B1YmxpYyBjbGFzcyBDbGFzczIgeworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3NUb0lubmVyL2NvbnRleHRDaGFuZ2UxL2JlZm9yZS9wYWNrMS9lbXB0eS50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzVG9Jbm5lci9jb250ZXh0Q2hhbmdlMS9iZWZvcmUvcGFjazEvZW1wdHkudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU2OWRlMjkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzVG9Jbm5lci9jb250ZXh0Q2hhbmdlMS9iZWZvcmUvcGFjazEvZW1wdHkudHh0CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzVG9Jbm5lci9jb250ZXh0Q2hhbmdlMS9iZWZvcmUvcGFjazIvQS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzc1RvSW5uZXIvY29udGV4dENoYW5nZTEvYmVmb3JlL3BhY2syL0EuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMTg4NmU1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzc1RvSW5uZXIvY29udGV4dENoYW5nZTEvYmVmb3JlL3BhY2syL0EuamF2YQpAQCAtMCwwICsxLDQgQEAKK3BhY2thZ2UgcGFjazI7CisKK3B1YmxpYyBjbGFzcyBBIHsKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3NUb0lubmVyL2NvbnRleHRDaGFuZ2UxL2JlZm9yZS9wYWNrMi9lbXB0eS50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzVG9Jbm5lci9jb250ZXh0Q2hhbmdlMS9iZWZvcmUvcGFjazIvZW1wdHkudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU2OWRlMjkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzVG9Jbm5lci9jb250ZXh0Q2hhbmdlMS9iZWZvcmUvcGFjazIvZW1wdHkudHh0CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzVG9Jbm5lci9jb250ZXh0Q2hhbmdlMi9hZnRlci9wYWNrMS9DbGFzczIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3NUb0lubmVyL2NvbnRleHRDaGFuZ2UyL2FmdGVyL3BhY2sxL0NsYXNzMi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY5ZGYxYjMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzVG9Jbm5lci9jb250ZXh0Q2hhbmdlMi9hZnRlci9wYWNrMS9DbGFzczIuamF2YQpAQCAtMCwwICsxLDQgQEAKK3BhY2thZ2UgcGFjazE7CisKK3B1YmxpYyBjbGFzcyBDbGFzczIgeworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3NUb0lubmVyL2NvbnRleHRDaGFuZ2UyL2FmdGVyL3BhY2sxL2VtcHR5LnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3NUb0lubmVyL2NvbnRleHRDaGFuZ2UyL2FmdGVyL3BhY2sxL2VtcHR5LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNjlkZTI5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzc1RvSW5uZXIvY29udGV4dENoYW5nZTIvYWZ0ZXIvcGFjazEvZW1wdHkudHh0CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzVG9Jbm5lci9jb250ZXh0Q2hhbmdlMi9hZnRlci9wYWNrMi9BLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzVG9Jbm5lci9jb250ZXh0Q2hhbmdlMi9hZnRlci9wYWNrMi9BLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzA1YTljNwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3NUb0lubmVyL2NvbnRleHRDaGFuZ2UyL2FmdGVyL3BhY2syL0EuamF2YQpAQCAtMCwwICsxLDExIEBACitwYWNrYWdlIHBhY2syOworCitpbXBvcnQgcGFjazEuQ2xhc3MyOworCitwdWJsaWMgY2xhc3MgQSB7CisgICAgcHVibGljIHN0YXRpYyBjbGFzcyBDbGFzczEgeworICAgICAgdm9pZCBmb28oKXsKKyAgICAgICAgQ2xhc3MyLnh4eCgpOworICAgICAgfQorICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3NUb0lubmVyL2NvbnRleHRDaGFuZ2UyL2FmdGVyL3BhY2syL2VtcHR5LnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3NUb0lubmVyL2NvbnRleHRDaGFuZ2UyL2FmdGVyL3BhY2syL2VtcHR5LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNjlkZTI5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzc1RvSW5uZXIvY29udGV4dENoYW5nZTIvYWZ0ZXIvcGFjazIvZW1wdHkudHh0CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzVG9Jbm5lci9jb250ZXh0Q2hhbmdlMi9iZWZvcmUvcGFjazEvQ2xhc3MxLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzVG9Jbm5lci9jb250ZXh0Q2hhbmdlMi9iZWZvcmUvcGFjazEvQ2xhc3MxLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2U0MDE0ZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3NUb0lubmVyL2NvbnRleHRDaGFuZ2UyL2JlZm9yZS9wYWNrMS9DbGFzczEuamF2YQpAQCAtMCwwICsxLDcgQEAKK3BhY2thZ2UgcGFjazE7CisKK3B1YmxpYyBjbGFzcyBDbGFzczEgeworICB2b2lkIGZvbygpeworICAgIENsYXNzMi54eHgoKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3NUb0lubmVyL2NvbnRleHRDaGFuZ2UyL2JlZm9yZS9wYWNrMS9DbGFzczIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3NUb0lubmVyL2NvbnRleHRDaGFuZ2UyL2JlZm9yZS9wYWNrMS9DbGFzczIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mOWRmMWIzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzc1RvSW5uZXIvY29udGV4dENoYW5nZTIvYmVmb3JlL3BhY2sxL0NsYXNzMi5qYXZhCkBAIC0wLDAgKzEsNCBAQAorcGFja2FnZSBwYWNrMTsKKworcHVibGljIGNsYXNzIENsYXNzMiB7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzc1RvSW5uZXIvY29udGV4dENoYW5nZTIvYmVmb3JlL3BhY2sxL2VtcHR5LnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3NUb0lubmVyL2NvbnRleHRDaGFuZ2UyL2JlZm9yZS9wYWNrMS9lbXB0eS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTY5ZGUyOQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3NUb0lubmVyL2NvbnRleHRDaGFuZ2UyL2JlZm9yZS9wYWNrMS9lbXB0eS50eHQKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3NUb0lubmVyL2NvbnRleHRDaGFuZ2UyL2JlZm9yZS9wYWNrMi9BLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzVG9Jbm5lci9jb250ZXh0Q2hhbmdlMi9iZWZvcmUvcGFjazIvQS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUxODg2ZTUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzVG9Jbm5lci9jb250ZXh0Q2hhbmdlMi9iZWZvcmUvcGFjazIvQS5qYXZhCkBAIC0wLDAgKzEsNCBAQAorcGFja2FnZSBwYWNrMjsKKworcHVibGljIGNsYXNzIEEgeworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzc1RvSW5uZXIvY29udGV4dENoYW5nZTIvYmVmb3JlL3BhY2syL2VtcHR5LnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3NUb0lubmVyL2NvbnRleHRDaGFuZ2UyL2JlZm9yZS9wYWNrMi9lbXB0eS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTY5ZGUyOQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3NUb0lubmVyL2NvbnRleHRDaGFuZ2UyL2JlZm9yZS9wYWNrMi9lbXB0eS50eHQKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3NUb0lubmVyL2R1cGxpY2F0ZUlubmVyL2JlZm9yZS9wYWNrMS9DbGFzczEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3NUb0lubmVyL2R1cGxpY2F0ZUlubmVyL2JlZm9yZS9wYWNrMS9DbGFzczEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNzc1OGY2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzc1RvSW5uZXIvZHVwbGljYXRlSW5uZXIvYmVmb3JlL3BhY2sxL0NsYXNzMS5qYXZhCkBAIC0wLDAgKzEsNCBAQAorcGFja2FnZSBwYWNrMTsKKworcHVibGljIGNsYXNzIENsYXNzMSB7Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzVG9Jbm5lci9kdXBsaWNhdGVJbm5lci9iZWZvcmUvcGFjazIvQS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzc1RvSW5uZXIvZHVwbGljYXRlSW5uZXIvYmVmb3JlL3BhY2syL0EuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40N2M0YzU0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzc1RvSW5uZXIvZHVwbGljYXRlSW5uZXIvYmVmb3JlL3BhY2syL0EuamF2YQpAQCAtMCwwICsxLDYgQEAKK3BhY2thZ2UgcGFjazI7CisKK2NsYXNzIEEgeworICBwcml2YXRlIGNsYXNzIENsYXNzMSB7CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3NUb0lubmVyL2lubmVySW1wb3J0L2FmdGVyL3BhY2sxL2VtcHR5LnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3NUb0lubmVyL2lubmVySW1wb3J0L2FmdGVyL3BhY2sxL2VtcHR5LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNjlkZTI5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzc1RvSW5uZXIvaW5uZXJJbXBvcnQvYWZ0ZXIvcGFjazEvZW1wdHkudHh0CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzVG9Jbm5lci9pbm5lckltcG9ydC9hZnRlci9wYWNrMi9BLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzVG9Jbm5lci9pbm5lckltcG9ydC9hZnRlci9wYWNrMi9BLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzg5MDBkOQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3NUb0lubmVyL2lubmVySW1wb3J0L2FmdGVyL3BhY2syL0EuamF2YQpAQCAtMCwwICsxLDYgQEAKK3BhY2thZ2UgcGFjazI7CisKK3B1YmxpYyBjbGFzcyBBIHsKKyAgICBwdWJsaWMgc3RhdGljIGNsYXNzIENsYXNzMSB7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzc1RvSW5uZXIvaW5uZXJJbXBvcnQvYWZ0ZXIvcGFjazIvZW1wdHkudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzc1RvSW5uZXIvaW5uZXJJbXBvcnQvYWZ0ZXIvcGFjazIvZW1wdHkudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU2OWRlMjkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzVG9Jbm5lci9pbm5lckltcG9ydC9hZnRlci9wYWNrMi9lbXB0eS50eHQKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3NUb0lubmVyL2lubmVySW1wb3J0L2FmdGVyL3BhY2tVc2VyL0NsYXNzMi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzc1RvSW5uZXIvaW5uZXJJbXBvcnQvYWZ0ZXIvcGFja1VzZXIvQ2xhc3MyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGNlNDYwMwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3NUb0lubmVyL2lubmVySW1wb3J0L2FmdGVyL3BhY2tVc2VyL0NsYXNzMi5qYXZhCkBAIC0wLDAgKzEsNyBAQAorcGFja2FnZSBwYWNrVXNlcjsKKworaW1wb3J0IHBhY2syLkE7CisKK3B1YmxpYyBjbGFzcyBDbGFzczIgeworICBBLkNsYXNzMSBteUNsYXNzMTsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzVG9Jbm5lci9pbm5lckltcG9ydC9iZWZvcmUvcGFjazEvQ2xhc3MxLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzVG9Jbm5lci9pbm5lckltcG9ydC9iZWZvcmUvcGFjazEvQ2xhc3MxLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjMxZmUwNgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3NUb0lubmVyL2lubmVySW1wb3J0L2JlZm9yZS9wYWNrMS9DbGFzczEuamF2YQpAQCAtMCwwICsxLDQgQEAKK3BhY2thZ2UgcGFjazE7CisKK3B1YmxpYyBjbGFzcyBDbGFzczEgeworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3NUb0lubmVyL2lubmVySW1wb3J0L2JlZm9yZS9wYWNrMS9lbXB0eS50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzVG9Jbm5lci9pbm5lckltcG9ydC9iZWZvcmUvcGFjazEvZW1wdHkudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU2OWRlMjkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzVG9Jbm5lci9pbm5lckltcG9ydC9iZWZvcmUvcGFjazEvZW1wdHkudHh0CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzVG9Jbm5lci9pbm5lckltcG9ydC9iZWZvcmUvcGFjazIvQS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzc1RvSW5uZXIvaW5uZXJJbXBvcnQvYmVmb3JlL3BhY2syL0EuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMTg4NmU1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzc1RvSW5uZXIvaW5uZXJJbXBvcnQvYmVmb3JlL3BhY2syL0EuamF2YQpAQCAtMCwwICsxLDQgQEAKK3BhY2thZ2UgcGFjazI7CisKK3B1YmxpYyBjbGFzcyBBIHsKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3NUb0lubmVyL2lubmVySW1wb3J0L2JlZm9yZS9wYWNrMi9lbXB0eS50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzVG9Jbm5lci9pbm5lckltcG9ydC9iZWZvcmUvcGFjazIvZW1wdHkudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU2OWRlMjkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzVG9Jbm5lci9pbm5lckltcG9ydC9iZWZvcmUvcGFjazIvZW1wdHkudHh0CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzVG9Jbm5lci9pbm5lckltcG9ydC9iZWZvcmUvcGFja1VzZXIvQ2xhc3MyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzVG9Jbm5lci9pbm5lckltcG9ydC9iZWZvcmUvcGFja1VzZXIvQ2xhc3MyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTU1Y2ZlMAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3NUb0lubmVyL2lubmVySW1wb3J0L2JlZm9yZS9wYWNrVXNlci9DbGFzczIuamF2YQpAQCAtMCwwICsxLDcgQEAKK3BhY2thZ2UgcGFja1VzZXI7CisKK2ltcG9ydCBwYWNrMS5DbGFzczE7CisKK3B1YmxpYyBjbGFzcyBDbGFzczIgeworICBDbGFzczEgbXlDbGFzczE7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzc1RvSW5uZXIvaW5zZXJ0SW5uZXJDbGFzc0ltcG9ydC9hZnRlci9wYWNrMS9lbXB0eS50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzVG9Jbm5lci9pbnNlcnRJbm5lckNsYXNzSW1wb3J0L2FmdGVyL3BhY2sxL2VtcHR5LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNjlkZTI5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzc1RvSW5uZXIvaW5zZXJ0SW5uZXJDbGFzc0ltcG9ydC9hZnRlci9wYWNrMS9lbXB0eS50eHQKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3NUb0lubmVyL2luc2VydElubmVyQ2xhc3NJbXBvcnQvYWZ0ZXIvcGFjazIvQS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzc1RvSW5uZXIvaW5zZXJ0SW5uZXJDbGFzc0ltcG9ydC9hZnRlci9wYWNrMi9BLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzg5MDBkOQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3NUb0lubmVyL2luc2VydElubmVyQ2xhc3NJbXBvcnQvYWZ0ZXIvcGFjazIvQS5qYXZhCkBAIC0wLDAgKzEsNiBAQAorcGFja2FnZSBwYWNrMjsKKworcHVibGljIGNsYXNzIEEgeworICAgIHB1YmxpYyBzdGF0aWMgY2xhc3MgQ2xhc3MxIHsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzVG9Jbm5lci9pbnNlcnRJbm5lckNsYXNzSW1wb3J0L2FmdGVyL3BhY2syL2VtcHR5LnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3NUb0lubmVyL2luc2VydElubmVyQ2xhc3NJbXBvcnQvYWZ0ZXIvcGFjazIvZW1wdHkudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU2OWRlMjkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzVG9Jbm5lci9pbnNlcnRJbm5lckNsYXNzSW1wb3J0L2FmdGVyL3BhY2syL2VtcHR5LnR4dApkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzc1RvSW5uZXIvaW5zZXJ0SW5uZXJDbGFzc0ltcG9ydC9hZnRlci9wYWNrVXNlci9DbGFzczIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3NUb0lubmVyL2luc2VydElubmVyQ2xhc3NJbXBvcnQvYWZ0ZXIvcGFja1VzZXIvQ2xhc3MyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGI1ZDY0ZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3NUb0lubmVyL2luc2VydElubmVyQ2xhc3NJbXBvcnQvYWZ0ZXIvcGFja1VzZXIvQ2xhc3MyLmphdmEKQEAgLTAsMCArMSw3IEBACitwYWNrYWdlIHBhY2tVc2VyOworCitpbXBvcnQgcGFjazIuQS5DbGFzczE7CisKK3B1YmxpYyBjbGFzcyBDbGFzczIgeworICBDbGFzczEgbXlDbGFzczE7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzc1RvSW5uZXIvaW5zZXJ0SW5uZXJDbGFzc0ltcG9ydC9iZWZvcmUvcGFjazEvQ2xhc3MxLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzVG9Jbm5lci9pbnNlcnRJbm5lckNsYXNzSW1wb3J0L2JlZm9yZS9wYWNrMS9DbGFzczEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMzFmZTA2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzc1RvSW5uZXIvaW5zZXJ0SW5uZXJDbGFzc0ltcG9ydC9iZWZvcmUvcGFjazEvQ2xhc3MxLmphdmEKQEAgLTAsMCArMSw0IEBACitwYWNrYWdlIHBhY2sxOworCitwdWJsaWMgY2xhc3MgQ2xhc3MxIHsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzVG9Jbm5lci9pbnNlcnRJbm5lckNsYXNzSW1wb3J0L2JlZm9yZS9wYWNrMS9lbXB0eS50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzVG9Jbm5lci9pbnNlcnRJbm5lckNsYXNzSW1wb3J0L2JlZm9yZS9wYWNrMS9lbXB0eS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTY5ZGUyOQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3NUb0lubmVyL2luc2VydElubmVyQ2xhc3NJbXBvcnQvYmVmb3JlL3BhY2sxL2VtcHR5LnR4dApkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzc1RvSW5uZXIvaW5zZXJ0SW5uZXJDbGFzc0ltcG9ydC9iZWZvcmUvcGFjazIvQS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzc1RvSW5uZXIvaW5zZXJ0SW5uZXJDbGFzc0ltcG9ydC9iZWZvcmUvcGFjazIvQS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUxODg2ZTUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzVG9Jbm5lci9pbnNlcnRJbm5lckNsYXNzSW1wb3J0L2JlZm9yZS9wYWNrMi9BLmphdmEKQEAgLTAsMCArMSw0IEBACitwYWNrYWdlIHBhY2syOworCitwdWJsaWMgY2xhc3MgQSB7Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzVG9Jbm5lci9pbnNlcnRJbm5lckNsYXNzSW1wb3J0L2JlZm9yZS9wYWNrMi9lbXB0eS50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzVG9Jbm5lci9pbnNlcnRJbm5lckNsYXNzSW1wb3J0L2JlZm9yZS9wYWNrMi9lbXB0eS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTY5ZGUyOQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3NUb0lubmVyL2luc2VydElubmVyQ2xhc3NJbXBvcnQvYmVmb3JlL3BhY2syL2VtcHR5LnR4dApkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzc1RvSW5uZXIvaW5zZXJ0SW5uZXJDbGFzc0ltcG9ydC9iZWZvcmUvcGFja1VzZXIvQ2xhc3MyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzVG9Jbm5lci9pbnNlcnRJbm5lckNsYXNzSW1wb3J0L2JlZm9yZS9wYWNrVXNlci9DbGFzczIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNTVjZmUwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzc1RvSW5uZXIvaW5zZXJ0SW5uZXJDbGFzc0ltcG9ydC9iZWZvcmUvcGFja1VzZXIvQ2xhc3MyLmphdmEKQEAgLTAsMCArMSw3IEBACitwYWNrYWdlIHBhY2tVc2VyOworCitpbXBvcnQgcGFjazEuQ2xhc3MxOworCitwdWJsaWMgY2xhc3MgQ2xhc3MyIHsKKyAgQ2xhc3MxIG15Q2xhc3MxOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3NUb0lubmVyL2xvY2FsbHlVc2VkUGFja2FnZUxvY2FsVG9QdWJsaWNJbnRlcmZhY2UvYWZ0ZXIvcGFjazEvVXNhZ2UuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3NUb0lubmVyL2xvY2FsbHlVc2VkUGFja2FnZUxvY2FsVG9QdWJsaWNJbnRlcmZhY2UvYWZ0ZXIvcGFjazEvVXNhZ2UuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NGNmYzI2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzc1RvSW5uZXIvbG9jYWxseVVzZWRQYWNrYWdlTG9jYWxUb1B1YmxpY0ludGVyZmFjZS9hZnRlci9wYWNrMS9Vc2FnZS5qYXZhCkBAIC0wLDAgKzEsNyBAQAorcGFja2FnZSBwYWNrMTsKKworaW1wb3J0IHBhY2syLkE7CisKK2NsYXNzIFVzYWdlIHsKKyAgQS5DbGFzczEgY2wxOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3NUb0lubmVyL2xvY2FsbHlVc2VkUGFja2FnZUxvY2FsVG9QdWJsaWNJbnRlcmZhY2UvYWZ0ZXIvcGFjazEvZW1wdHkudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzc1RvSW5uZXIvbG9jYWxseVVzZWRQYWNrYWdlTG9jYWxUb1B1YmxpY0ludGVyZmFjZS9hZnRlci9wYWNrMS9lbXB0eS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTY5ZGUyOQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3NUb0lubmVyL2xvY2FsbHlVc2VkUGFja2FnZUxvY2FsVG9QdWJsaWNJbnRlcmZhY2UvYWZ0ZXIvcGFjazEvZW1wdHkudHh0CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzVG9Jbm5lci9sb2NhbGx5VXNlZFBhY2thZ2VMb2NhbFRvUHVibGljSW50ZXJmYWNlL2FmdGVyL3BhY2syL0EuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3NUb0lubmVyL2xvY2FsbHlVc2VkUGFja2FnZUxvY2FsVG9QdWJsaWNJbnRlcmZhY2UvYWZ0ZXIvcGFjazIvQS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFmZTU2MTg0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzc1RvSW5uZXIvbG9jYWxseVVzZWRQYWNrYWdlTG9jYWxUb1B1YmxpY0ludGVyZmFjZS9hZnRlci9wYWNrMi9BLmphdmEKQEAgLTAsMCArMSw2IEBACitwYWNrYWdlIHBhY2syOworCitwdWJsaWMgaW50ZXJmYWNlIEEgeworICAgIGNsYXNzIENsYXNzMSB7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzc1RvSW5uZXIvbG9jYWxseVVzZWRQYWNrYWdlTG9jYWxUb1B1YmxpY0ludGVyZmFjZS9hZnRlci9wYWNrMi9lbXB0eS50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzVG9Jbm5lci9sb2NhbGx5VXNlZFBhY2thZ2VMb2NhbFRvUHVibGljSW50ZXJmYWNlL2FmdGVyL3BhY2syL2VtcHR5LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNjlkZTI5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzc1RvSW5uZXIvbG9jYWxseVVzZWRQYWNrYWdlTG9jYWxUb1B1YmxpY0ludGVyZmFjZS9hZnRlci9wYWNrMi9lbXB0eS50eHQKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3NUb0lubmVyL2xvY2FsbHlVc2VkUGFja2FnZUxvY2FsVG9QdWJsaWNJbnRlcmZhY2UvYmVmb3JlL3BhY2sxL0NsYXNzMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzc1RvSW5uZXIvbG9jYWxseVVzZWRQYWNrYWdlTG9jYWxUb1B1YmxpY0ludGVyZmFjZS9iZWZvcmUvcGFjazEvQ2xhc3MxLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWZiNDY2OAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3NUb0lubmVyL2xvY2FsbHlVc2VkUGFja2FnZUxvY2FsVG9QdWJsaWNJbnRlcmZhY2UvYmVmb3JlL3BhY2sxL0NsYXNzMS5qYXZhCkBAIC0wLDAgKzEsNCBAQAorcGFja2FnZSBwYWNrMTsKKworY2xhc3MgQ2xhc3MxIHsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzVG9Jbm5lci9sb2NhbGx5VXNlZFBhY2thZ2VMb2NhbFRvUHVibGljSW50ZXJmYWNlL2JlZm9yZS9wYWNrMS9Vc2FnZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzc1RvSW5uZXIvbG9jYWxseVVzZWRQYWNrYWdlTG9jYWxUb1B1YmxpY0ludGVyZmFjZS9iZWZvcmUvcGFjazEvVXNhZ2UuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kN2U4ZWQ2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzc1RvSW5uZXIvbG9jYWxseVVzZWRQYWNrYWdlTG9jYWxUb1B1YmxpY0ludGVyZmFjZS9iZWZvcmUvcGFjazEvVXNhZ2UuamF2YQpAQCAtMCwwICsxLDQgQEAKK3BhY2thZ2UgcGFjazE7CitjbGFzcyBVc2FnZSB7CisgIENsYXNzMSBjbDE7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzc1RvSW5uZXIvbG9jYWxseVVzZWRQYWNrYWdlTG9jYWxUb1B1YmxpY0ludGVyZmFjZS9iZWZvcmUvcGFjazEvZW1wdHkudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzc1RvSW5uZXIvbG9jYWxseVVzZWRQYWNrYWdlTG9jYWxUb1B1YmxpY0ludGVyZmFjZS9iZWZvcmUvcGFjazEvZW1wdHkudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU2OWRlMjkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzVG9Jbm5lci9sb2NhbGx5VXNlZFBhY2thZ2VMb2NhbFRvUHVibGljSW50ZXJmYWNlL2JlZm9yZS9wYWNrMS9lbXB0eS50eHQKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3NUb0lubmVyL2xvY2FsbHlVc2VkUGFja2FnZUxvY2FsVG9QdWJsaWNJbnRlcmZhY2UvYmVmb3JlL3BhY2syL0EuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3NUb0lubmVyL2xvY2FsbHlVc2VkUGFja2FnZUxvY2FsVG9QdWJsaWNJbnRlcmZhY2UvYmVmb3JlL3BhY2syL0EuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYmQ3N2I0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzc1RvSW5uZXIvbG9jYWxseVVzZWRQYWNrYWdlTG9jYWxUb1B1YmxpY0ludGVyZmFjZS9iZWZvcmUvcGFjazIvQS5qYXZhCkBAIC0wLDAgKzEsNCBAQAorcGFja2FnZSBwYWNrMjsKKworcHVibGljIGludGVyZmFjZSBBIHsKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3NUb0lubmVyL2xvY2FsbHlVc2VkUGFja2FnZUxvY2FsVG9QdWJsaWNJbnRlcmZhY2UvYmVmb3JlL3BhY2syL2VtcHR5LnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3NUb0lubmVyL2xvY2FsbHlVc2VkUGFja2FnZUxvY2FsVG9QdWJsaWNJbnRlcmZhY2UvYmVmb3JlL3BhY2syL2VtcHR5LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNjlkZTI5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzc1RvSW5uZXIvbG9jYWxseVVzZWRQYWNrYWdlTG9jYWxUb1B1YmxpY0ludGVyZmFjZS9iZWZvcmUvcGFjazIvZW1wdHkudHh0CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzVG9Jbm5lci9tb3ZlSW50b1BhY2thZ2VMb2NhbENsYXNzL2JlZm9yZS9wYWNrMS9DbGFzczEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3NUb0lubmVyL21vdmVJbnRvUGFja2FnZUxvY2FsQ2xhc3MvYmVmb3JlL3BhY2sxL0NsYXNzMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM3NzU4ZjYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzVG9Jbm5lci9tb3ZlSW50b1BhY2thZ2VMb2NhbENsYXNzL2JlZm9yZS9wYWNrMS9DbGFzczEuamF2YQpAQCAtMCwwICsxLDQgQEAKK3BhY2thZ2UgcGFjazE7CisKK3B1YmxpYyBjbGFzcyBDbGFzczEgeworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzc1RvSW5uZXIvbW92ZUludG9QYWNrYWdlTG9jYWxDbGFzcy9iZWZvcmUvcGFjazEvQ2xhc3MyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzVG9Jbm5lci9tb3ZlSW50b1BhY2thZ2VMb2NhbENsYXNzL2JlZm9yZS9wYWNrMS9DbGFzczIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NGMzZjViCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzc1RvSW5uZXIvbW92ZUludG9QYWNrYWdlTG9jYWxDbGFzcy9iZWZvcmUvcGFjazEvQ2xhc3MyLmphdmEKQEAgLTAsMCArMSw1IEBACitwYWNrYWdlIHBhY2sxOworCitjbGFzcyBDbGFzczIgeworICAgQ2xhc3MxIGMxOworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzc1RvSW5uZXIvbW92ZUludG9QYWNrYWdlTG9jYWxDbGFzcy9iZWZvcmUvcGFjazIvQS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzc1RvSW5uZXIvbW92ZUludG9QYWNrYWdlTG9jYWxDbGFzcy9iZWZvcmUvcGFjazIvQS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIzZjBmYmUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzVG9Jbm5lci9tb3ZlSW50b1BhY2thZ2VMb2NhbENsYXNzL2JlZm9yZS9wYWNrMi9BLmphdmEKQEAgLTAsMCArMSw0IEBACitwYWNrYWdlIHBhY2syOworCitjbGFzcyBBIHsKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3NUb0lubmVyL21vdmVJbnRvUHJpdmF0ZUlubmVyQ2xhc3MvYmVmb3JlL3BhY2sxL0EuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3NUb0lubmVyL21vdmVJbnRvUHJpdmF0ZUlubmVyQ2xhc3MvYmVmb3JlL3BhY2sxL0EuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNDI2YzIwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzc1RvSW5uZXIvbW92ZUludG9Qcml2YXRlSW5uZXJDbGFzcy9iZWZvcmUvcGFjazEvQS5qYXZhCkBAIC0wLDAgKzEsNiBAQAorcGFja2FnZSBwYWNrMTsKKworcHVibGljIGNsYXNzIEEgeworICBwcml2YXRlIHN0YXRpYyBjbGFzcyBQcml2YXRlSW5uZXIgeworICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzVG9Jbm5lci9tb3ZlSW50b1ByaXZhdGVJbm5lckNsYXNzL2JlZm9yZS9wYWNrMS9DbGFzczEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3NUb0lubmVyL21vdmVJbnRvUHJpdmF0ZUlubmVyQ2xhc3MvYmVmb3JlL3BhY2sxL0NsYXNzMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM3NzU4ZjYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzVG9Jbm5lci9tb3ZlSW50b1ByaXZhdGVJbm5lckNsYXNzL2JlZm9yZS9wYWNrMS9DbGFzczEuamF2YQpAQCAtMCwwICsxLDQgQEAKK3BhY2thZ2UgcGFjazE7CisKK3B1YmxpYyBjbGFzcyBDbGFzczEgeworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzc1RvSW5uZXIvbW92ZUludG9Qcml2YXRlSW5uZXJDbGFzcy9iZWZvcmUvcGFjazEvQ2xhc3MyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzVG9Jbm5lci9tb3ZlSW50b1ByaXZhdGVJbm5lckNsYXNzL2JlZm9yZS9wYWNrMS9DbGFzczIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZjUwYjk3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzc1RvSW5uZXIvbW92ZUludG9Qcml2YXRlSW5uZXJDbGFzcy9iZWZvcmUvcGFjazEvQ2xhc3MyLmphdmEKQEAgLTAsMCArMSw1IEBACitwYWNrYWdlIHBhY2sxOworCitwdWJsaWMgY2xhc3MgQ2xhc3MyIHsKKyAgIENsYXNzMSBjMTsKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3NUb0lubmVyL21vdmVNdWx0aXBsZTEvYWZ0ZXIvcGFjazEvZW1wdHkudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzc1RvSW5uZXIvbW92ZU11bHRpcGxlMS9hZnRlci9wYWNrMS9lbXB0eS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTY5ZGUyOQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3NUb0lubmVyL21vdmVNdWx0aXBsZTEvYWZ0ZXIvcGFjazEvZW1wdHkudHh0CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzVG9Jbm5lci9tb3ZlTXVsdGlwbGUxL2FmdGVyL3BhY2syL0EuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3NUb0lubmVyL21vdmVNdWx0aXBsZTEvYWZ0ZXIvcGFjazIvQS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIzYTAyYWMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzVG9Jbm5lci9tb3ZlTXVsdGlwbGUxL2FmdGVyL3BhY2syL0EuamF2YQpAQCAtMCwwICsxLDExIEBACitwYWNrYWdlIHBhY2syOworCitwdWJsaWMgY2xhc3MgQSB7CisgICAgcHVibGljIHN0YXRpYyBjbGFzcyBDbGFzczEgeworICAgICAgQ2xhc3MyIGE7CisgICAgICBDbGFzczIgYjsKKyAgICB9CisKKyAgICBwdWJsaWMgc3RhdGljIGNsYXNzIENsYXNzMiB7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzc1RvSW5uZXIvbW92ZU11bHRpcGxlMS9hZnRlci9wYWNrMi9lbXB0eS50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzVG9Jbm5lci9tb3ZlTXVsdGlwbGUxL2FmdGVyL3BhY2syL2VtcHR5LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNjlkZTI5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzc1RvSW5uZXIvbW92ZU11bHRpcGxlMS9hZnRlci9wYWNrMi9lbXB0eS50eHQKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3NUb0lubmVyL21vdmVNdWx0aXBsZTEvYmVmb3JlL3BhY2sxL0NsYXNzMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzc1RvSW5uZXIvbW92ZU11bHRpcGxlMS9iZWZvcmUvcGFjazEvQ2xhc3MxLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjM0NmZjMQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3NUb0lubmVyL21vdmVNdWx0aXBsZTEvYmVmb3JlL3BhY2sxL0NsYXNzMS5qYXZhCkBAIC0wLDAgKzEsNiBAQAorcGFja2FnZSBwYWNrMTsKKworcHVibGljIGNsYXNzIENsYXNzMSB7CisgIENsYXNzMiBhOworICBDbGFzczIgYjsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzVG9Jbm5lci9tb3ZlTXVsdGlwbGUxL2JlZm9yZS9wYWNrMS9DbGFzczIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3NUb0lubmVyL21vdmVNdWx0aXBsZTEvYmVmb3JlL3BhY2sxL0NsYXNzMi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY5ZGYxYjMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzVG9Jbm5lci9tb3ZlTXVsdGlwbGUxL2JlZm9yZS9wYWNrMS9DbGFzczIuamF2YQpAQCAtMCwwICsxLDQgQEAKK3BhY2thZ2UgcGFjazE7CisKK3B1YmxpYyBjbGFzcyBDbGFzczIgeworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3NUb0lubmVyL21vdmVNdWx0aXBsZTEvYmVmb3JlL3BhY2sxL2VtcHR5LnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3NUb0lubmVyL21vdmVNdWx0aXBsZTEvYmVmb3JlL3BhY2sxL2VtcHR5LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNjlkZTI5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzc1RvSW5uZXIvbW92ZU11bHRpcGxlMS9iZWZvcmUvcGFjazEvZW1wdHkudHh0CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzVG9Jbm5lci9tb3ZlTXVsdGlwbGUxL2JlZm9yZS9wYWNrMi9BLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzVG9Jbm5lci9tb3ZlTXVsdGlwbGUxL2JlZm9yZS9wYWNrMi9BLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTE4ODZlNQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3NUb0lubmVyL21vdmVNdWx0aXBsZTEvYmVmb3JlL3BhY2syL0EuamF2YQpAQCAtMCwwICsxLDQgQEAKK3BhY2thZ2UgcGFjazI7CisKK3B1YmxpYyBjbGFzcyBBIHsKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3NUb0lubmVyL21vdmVNdWx0aXBsZTEvYmVmb3JlL3BhY2syL2VtcHR5LnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3NUb0lubmVyL21vdmVNdWx0aXBsZTEvYmVmb3JlL3BhY2syL2VtcHR5LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNjlkZTI5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzc1RvSW5uZXIvbW92ZU11bHRpcGxlMS9iZWZvcmUvcGFjazIvZW1wdHkudHh0CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzVG9Jbm5lci9tb3ZlT2ZQYWNrYWdlTG9jYWxDbGFzcy9iZWZvcmUvcGFjazEvQ2xhc3MxLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzVG9Jbm5lci9tb3ZlT2ZQYWNrYWdlTG9jYWxDbGFzcy9iZWZvcmUvcGFjazEvQ2xhc3MxLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGRjZTQ0MQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3NUb0lubmVyL21vdmVPZlBhY2thZ2VMb2NhbENsYXNzL2JlZm9yZS9wYWNrMS9DbGFzczEuamF2YQpAQCAtMCwwICsxLDQgQEAKK3BhY2thZ2UgcGFjazE7CisKK2NsYXNzIENsYXNzMSB7Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzVG9Jbm5lci9tb3ZlT2ZQYWNrYWdlTG9jYWxDbGFzcy9iZWZvcmUvcGFjazEvQ2xhc3MyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzVG9Jbm5lci9tb3ZlT2ZQYWNrYWdlTG9jYWxDbGFzcy9iZWZvcmUvcGFjazEvQ2xhc3MyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjRjM2Y1YgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3NUb0lubmVyL21vdmVPZlBhY2thZ2VMb2NhbENsYXNzL2JlZm9yZS9wYWNrMS9DbGFzczIuamF2YQpAQCAtMCwwICsxLDUgQEAKK3BhY2thZ2UgcGFjazE7CisKK2NsYXNzIENsYXNzMiB7CisgICBDbGFzczEgYzE7Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzVG9Jbm5lci9tb3ZlT2ZQYWNrYWdlTG9jYWxDbGFzcy9iZWZvcmUvcGFjazIvQS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzc1RvSW5uZXIvbW92ZU9mUGFja2FnZUxvY2FsQ2xhc3MvYmVmb3JlL3BhY2syL0EuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMTg4NmU1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzc1RvSW5uZXIvbW92ZU9mUGFja2FnZUxvY2FsQ2xhc3MvYmVmb3JlL3BhY2syL0EuamF2YQpAQCAtMCwwICsxLDQgQEAKK3BhY2thZ2UgcGFjazI7CisKK3B1YmxpYyBjbGFzcyBBIHsKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3NUb0lubmVyL21vdmVXaXRoUGFja2FnZUxvY2FsTWVtYmVyL2JlZm9yZS9wYWNrMS9DbGFzczEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3NUb0lubmVyL21vdmVXaXRoUGFja2FnZUxvY2FsTWVtYmVyL2JlZm9yZS9wYWNrMS9DbGFzczEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NDgwZDVmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzc1RvSW5uZXIvbW92ZVdpdGhQYWNrYWdlTG9jYWxNZW1iZXIvYmVmb3JlL3BhY2sxL0NsYXNzMS5qYXZhCkBAIC0wLDAgKzEsNiBAQAorcGFja2FnZSBwYWNrMTsKKworcHVibGljIGNsYXNzIENsYXNzMSB7CisgIHZvaWQgZG9TdHVmZigpIHsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzc1RvSW5uZXIvbW92ZVdpdGhQYWNrYWdlTG9jYWxNZW1iZXIvYmVmb3JlL3BhY2sxL0NsYXNzMi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzc1RvSW5uZXIvbW92ZVdpdGhQYWNrYWdlTG9jYWxNZW1iZXIvYmVmb3JlL3BhY2sxL0NsYXNzMi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUzZTI1M2IKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzVG9Jbm5lci9tb3ZlV2l0aFBhY2thZ2VMb2NhbE1lbWJlci9iZWZvcmUvcGFjazEvQ2xhc3MyLmphdmEKQEAgLTAsMCArMSw4IEBACitwYWNrYWdlIHBhY2sxOworCitjbGFzcyBDbGFzczIgeworICAgcHVibGljIHZvaWQgdGVzdCgpIHsKKyAgICAgQ2xhc3MxIGMxID0gbmV3IENsYXNzMSgpOworICAgICBjMS5kb1N0dWZmKCk7CisgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzVG9Jbm5lci9tb3ZlV2l0aFBhY2thZ2VMb2NhbE1lbWJlci9iZWZvcmUvcGFjazIvQS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzc1RvSW5uZXIvbW92ZVdpdGhQYWNrYWdlTG9jYWxNZW1iZXIvYmVmb3JlL3BhY2syL0EuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMTg4NmU1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzc1RvSW5uZXIvbW92ZVdpdGhQYWNrYWdlTG9jYWxNZW1iZXIvYmVmb3JlL3BhY2syL0EuamF2YQpAQCAtMCwwICsxLDQgQEAKK3BhY2thZ2UgcGFjazI7CisKK3B1YmxpYyBjbGFzcyBBIHsKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3NUb0lubmVyL25vbkphdmEvYWZ0ZXIvcGFjazEvQS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzc1RvSW5uZXIvbm9uSmF2YS9hZnRlci9wYWNrMS9BLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjQ5NzRjMAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3NUb0lubmVyL25vbkphdmEvYWZ0ZXIvcGFjazEvQS5qYXZhCkBAIC0wLDAgKzEsNiBAQAorcGFja2FnZSBwYWNrMTsKKworcHVibGljIGNsYXNzIEEgeworICAgIHB1YmxpYyBzdGF0aWMgY2xhc3MgQ2xhc3MxIHsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzc1RvSW5uZXIvbm9uSmF2YS9hZnRlci9wYWNrMS9lbXB0eS50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzVG9Jbm5lci9ub25KYXZhL2FmdGVyL3BhY2sxL2VtcHR5LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNjlkZTI5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzc1RvSW5uZXIvbm9uSmF2YS9hZnRlci9wYWNrMS9lbXB0eS50eHQKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3NUb0lubmVyL25vbkphdmEvYWZ0ZXIvcXFxLnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3NUb0lubmVyL25vbkphdmEvYWZ0ZXIvcXFxLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMTFjOWI5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzc1RvSW5uZXIvbm9uSmF2YS9hZnRlci9xcXEudHh0CkBAIC0wLDAgKzEsMyBAQAorcGFjazEuQS5DbGFzczEKK0NsYXNzMQorcGFjazEuQ2xhc3MxYQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzc1RvSW5uZXIvbm9uSmF2YS9iZWZvcmUvcGFjazEvQS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzc1RvSW5uZXIvbm9uSmF2YS9iZWZvcmUvcGFjazEvQS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ2ZmM3OGYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzVG9Jbm5lci9ub25KYXZhL2JlZm9yZS9wYWNrMS9BLmphdmEKQEAgLTAsMCArMSw0IEBACitwYWNrYWdlIHBhY2sxOworCitwdWJsaWMgY2xhc3MgQSB7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzc1RvSW5uZXIvbm9uSmF2YS9iZWZvcmUvcGFjazEvQ2xhc3MxLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzVG9Jbm5lci9ub25KYXZhL2JlZm9yZS9wYWNrMS9DbGFzczEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMzFmZTA2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzc1RvSW5uZXIvbm9uSmF2YS9iZWZvcmUvcGFjazEvQ2xhc3MxLmphdmEKQEAgLTAsMCArMSw0IEBACitwYWNrYWdlIHBhY2sxOworCitwdWJsaWMgY2xhc3MgQ2xhc3MxIHsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzVG9Jbm5lci9ub25KYXZhL2JlZm9yZS9wYWNrMS9lbXB0eS50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzVG9Jbm5lci9ub25KYXZhL2JlZm9yZS9wYWNrMS9lbXB0eS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTY5ZGUyOQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3NUb0lubmVyL25vbkphdmEvYmVmb3JlL3BhY2sxL2VtcHR5LnR4dApkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzc1RvSW5uZXIvbm9uSmF2YS9iZWZvcmUvcXFxLnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3NUb0lubmVyL25vbkphdmEvYmVmb3JlL3FxcS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDYwZGM3ZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3NUb0lubmVyL25vbkphdmEvYmVmb3JlL3FxcS50eHQKQEAgLTAsMCArMSwzIEBACitwYWNrMS5DbGFzczEKK0NsYXNzMQorcGFjazEuQ2xhc3MxYQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzc1RvSW5uZXIvcGFja2FnZUxvY2FsQ2xhc3MvYmVmb3JlL3BhY2sxL0NsYXNzMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzc1RvSW5uZXIvcGFja2FnZUxvY2FsQ2xhc3MvYmVmb3JlL3BhY2sxL0NsYXNzMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ5ODk5ZjUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzVG9Jbm5lci9wYWNrYWdlTG9jYWxDbGFzcy9iZWZvcmUvcGFjazEvQ2xhc3MxLmphdmEKQEAgLTAsMCArMSw1IEBACitwYWNrYWdlIHBhY2sxOworCitwdWJsaWMgY2xhc3MgQ2xhc3MxIHsKKyAgcHJpdmF0ZSBDbGFzczIgYzI7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzc1RvSW5uZXIvcGFja2FnZUxvY2FsQ2xhc3MvYmVmb3JlL3BhY2sxL0NsYXNzMi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzc1RvSW5uZXIvcGFja2FnZUxvY2FsQ2xhc3MvYmVmb3JlL3BhY2sxL0NsYXNzMi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE5YzEyMDIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzVG9Jbm5lci9wYWNrYWdlTG9jYWxDbGFzcy9iZWZvcmUvcGFjazEvQ2xhc3MyLmphdmEKQEAgLTAsMCArMSw0IEBACitwYWNrYWdlIHBhY2sxOworCitjbGFzcyBDbGFzczIgeworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzc1RvSW5uZXIvcGFja2FnZUxvY2FsQ2xhc3MvYmVmb3JlL3BhY2syL0EuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3NUb0lubmVyL3BhY2thZ2VMb2NhbENsYXNzL2JlZm9yZS9wYWNrMi9BLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTE4ODZlNQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3NUb0lubmVyL3BhY2thZ2VMb2NhbENsYXNzL2JlZm9yZS9wYWNrMi9BLmphdmEKQEAgLTAsMCArMSw0IEBACitwYWNrYWdlIHBhY2syOworCitwdWJsaWMgY2xhc3MgQSB7Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzVG9Jbm5lci9yZWZUb0NvbnN0cnVjdG9yL2FmdGVyL3BhY2sxL2VtcHR5LnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3NUb0lubmVyL3JlZlRvQ29uc3RydWN0b3IvYWZ0ZXIvcGFjazEvZW1wdHkudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU2OWRlMjkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzVG9Jbm5lci9yZWZUb0NvbnN0cnVjdG9yL2FmdGVyL3BhY2sxL2VtcHR5LnR4dApkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzc1RvSW5uZXIvcmVmVG9Db25zdHJ1Y3Rvci9hZnRlci9wYWNrMi9BLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzVG9Jbm5lci9yZWZUb0NvbnN0cnVjdG9yL2FmdGVyL3BhY2syL0EuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMmE3NmU4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzc1RvSW5uZXIvcmVmVG9Db25zdHJ1Y3Rvci9hZnRlci9wYWNrMi9BLmphdmEKQEAgLTAsMCArMSw5IEBACitwYWNrYWdlIHBhY2syOworCitwdWJsaWMgY2xhc3MgQSB7CisgICAgcHVibGljIHN0YXRpYyBjbGFzcyBDbGFzczEgeworICAgICAgICBwdWJsaWMgc3RhdGljIENsYXNzMSBjcmVhdGVJbnN0YW5jZSgpIHsKKyAgICAgICAgICAgIHJldHVybiBuZXcgQ2xhc3MxKCk7CisgICAgICAgIH0KKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzVG9Jbm5lci9yZWZUb0NvbnN0cnVjdG9yL2FmdGVyL3BhY2syL2VtcHR5LnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3NUb0lubmVyL3JlZlRvQ29uc3RydWN0b3IvYWZ0ZXIvcGFjazIvZW1wdHkudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU2OWRlMjkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzVG9Jbm5lci9yZWZUb0NvbnN0cnVjdG9yL2FmdGVyL3BhY2syL2VtcHR5LnR4dApkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzc1RvSW5uZXIvcmVmVG9Db25zdHJ1Y3Rvci9iZWZvcmUvcGFjazEvQ2xhc3MxLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzVG9Jbm5lci9yZWZUb0NvbnN0cnVjdG9yL2JlZm9yZS9wYWNrMS9DbGFzczEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNGJhODA5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzc1RvSW5uZXIvcmVmVG9Db25zdHJ1Y3Rvci9iZWZvcmUvcGFjazEvQ2xhc3MxLmphdmEKQEAgLTAsMCArMSw3IEBACitwYWNrYWdlIHBhY2sxOworCitwdWJsaWMgY2xhc3MgQ2xhc3MxIHsKKyAgICBwdWJsaWMgc3RhdGljIENsYXNzMSBjcmVhdGVJbnN0YW5jZSgpIHsKKyAgICAgICAgcmV0dXJuIG5ldyBDbGFzczEoKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzc1RvSW5uZXIvcmVmVG9Db25zdHJ1Y3Rvci9iZWZvcmUvcGFjazEvZW1wdHkudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzc1RvSW5uZXIvcmVmVG9Db25zdHJ1Y3Rvci9iZWZvcmUvcGFjazEvZW1wdHkudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU2OWRlMjkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzVG9Jbm5lci9yZWZUb0NvbnN0cnVjdG9yL2JlZm9yZS9wYWNrMS9lbXB0eS50eHQKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3NUb0lubmVyL3JlZlRvQ29uc3RydWN0b3IvYmVmb3JlL3BhY2syL0EuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3NUb0lubmVyL3JlZlRvQ29uc3RydWN0b3IvYmVmb3JlL3BhY2syL0EuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMTg4NmU1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzc1RvSW5uZXIvcmVmVG9Db25zdHJ1Y3Rvci9iZWZvcmUvcGFjazIvQS5qYXZhCkBAIC0wLDAgKzEsNCBAQAorcGFja2FnZSBwYWNrMjsKKworcHVibGljIGNsYXNzIEEgeworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzc1RvSW5uZXIvcmVmVG9Db25zdHJ1Y3Rvci9iZWZvcmUvcGFjazIvZW1wdHkudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzc1RvSW5uZXIvcmVmVG9Db25zdHJ1Y3Rvci9iZWZvcmUvcGFjazIvZW1wdHkudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU2OWRlMjkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzVG9Jbm5lci9yZWZUb0NvbnN0cnVjdG9yL2JlZm9yZS9wYWNrMi9lbXB0eS50eHQKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3NUb0lubmVyL3JlZlRvSW5uZXIvYWZ0ZXIvcGFjazEvZW1wdHkudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzc1RvSW5uZXIvcmVmVG9Jbm5lci9hZnRlci9wYWNrMS9lbXB0eS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTY5ZGUyOQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3NUb0lubmVyL3JlZlRvSW5uZXIvYWZ0ZXIvcGFjazEvZW1wdHkudHh0CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzVG9Jbm5lci9yZWZUb0lubmVyL2FmdGVyL3BhY2syL0EuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3NUb0lubmVyL3JlZlRvSW5uZXIvYWZ0ZXIvcGFjazIvQS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJlYmZhNjcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzVG9Jbm5lci9yZWZUb0lubmVyL2FmdGVyL3BhY2syL0EuamF2YQpAQCAtMCwwICsxLDExIEBACitwYWNrYWdlIHBhY2syOworCitwdWJsaWMgY2xhc3MgQSB7CisgICAgcHVibGljIHN0YXRpYyBjbGFzcyBDbGFzczEgeworICAgICAgICBwcml2YXRlIGNsYXNzIElubmVyIHsKKworICAgICAgICB9CisKKyAgICAgICAgcHJpdmF0ZSBJbm5lciBpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3NUb0lubmVyL3JlZlRvSW5uZXIvYWZ0ZXIvcGFjazIvZW1wdHkudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzc1RvSW5uZXIvcmVmVG9Jbm5lci9hZnRlci9wYWNrMi9lbXB0eS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTY5ZGUyOQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3NUb0lubmVyL3JlZlRvSW5uZXIvYWZ0ZXIvcGFjazIvZW1wdHkudHh0CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzVG9Jbm5lci9yZWZUb0lubmVyL2JlZm9yZS9wYWNrMS9DbGFzczEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3NUb0lubmVyL3JlZlRvSW5uZXIvYmVmb3JlL3BhY2sxL0NsYXNzMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQzMWNkYjgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzVG9Jbm5lci9yZWZUb0lubmVyL2JlZm9yZS9wYWNrMS9DbGFzczEuamF2YQpAQCAtMCwwICsxLDkgQEAKK3BhY2thZ2UgcGFjazE7CisKK3B1YmxpYyBjbGFzcyBDbGFzczEgeworICAgIHByaXZhdGUgY2xhc3MgSW5uZXIgeworCisgICAgfQorCisgICAgcHJpdmF0ZSBJbm5lciBpOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3NUb0lubmVyL3JlZlRvSW5uZXIvYmVmb3JlL3BhY2sxL2VtcHR5LnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3NUb0lubmVyL3JlZlRvSW5uZXIvYmVmb3JlL3BhY2sxL2VtcHR5LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNjlkZTI5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzc1RvSW5uZXIvcmVmVG9Jbm5lci9iZWZvcmUvcGFjazEvZW1wdHkudHh0CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzVG9Jbm5lci9yZWZUb0lubmVyL2JlZm9yZS9wYWNrMi9BLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzVG9Jbm5lci9yZWZUb0lubmVyL2JlZm9yZS9wYWNrMi9BLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTE4ODZlNQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3NUb0lubmVyL3JlZlRvSW5uZXIvYmVmb3JlL3BhY2syL0EuamF2YQpAQCAtMCwwICsxLDQgQEAKK3BhY2thZ2UgcGFjazI7CisKK3B1YmxpYyBjbGFzcyBBIHsKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3NUb0lubmVyL3JlZlRvSW5uZXIvYmVmb3JlL3BhY2syL2VtcHR5LnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3NUb0lubmVyL3JlZlRvSW5uZXIvYmVmb3JlL3BhY2syL2VtcHR5LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNjlkZTI5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzc1RvSW5uZXIvcmVmVG9Jbm5lci9iZWZvcmUvcGFjazIvZW1wdHkudHh0CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzVG9Jbm5lci9zZWNvbmRhcnlDbGFzcy9hZnRlci9wYWNrMS9DbGFzczEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3NUb0lubmVyL3NlY29uZGFyeUNsYXNzL2FmdGVyL3BhY2sxL0NsYXNzMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFmNTM4MjUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzVG9Jbm5lci9zZWNvbmRhcnlDbGFzcy9hZnRlci9wYWNrMS9DbGFzczEuamF2YQpAQCAtMCwwICsxLDUgQEAKK3BhY2thZ2UgcGFjazE7CisKK3B1YmxpYyBjbGFzcyBDbGFzczEgeworfQorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzVG9Jbm5lci9zZWNvbmRhcnlDbGFzcy9hZnRlci9wYWNrMS9Vc2VyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzVG9Jbm5lci9zZWNvbmRhcnlDbGFzcy9hZnRlci9wYWNrMS9Vc2VyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODc5ZmZmNwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3NUb0lubmVyL3NlY29uZGFyeUNsYXNzL2FmdGVyL3BhY2sxL1VzZXIuamF2YQpAQCAtMCwwICsxLDEwIEBACitwYWNrYWdlIHBhY2sxOworCitwdWJsaWMgY2xhc3MgVXNlciB7CisgIENsYXNzMSBjbGFzczE7CisgIENsYXNzMiBjbGFzczI7CisKKyAgICBzdGF0aWMgY2xhc3MgQ2xhc3MyIHsKKworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzVG9Jbm5lci9zZWNvbmRhcnlDbGFzcy9iZWZvcmUvcGFjazEvQ2xhc3MxLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzVG9Jbm5lci9zZWNvbmRhcnlDbGFzcy9iZWZvcmUvcGFjazEvQ2xhc3MxLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2JlMGQwMAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3NUb0lubmVyL3NlY29uZGFyeUNsYXNzL2JlZm9yZS9wYWNrMS9DbGFzczEuamF2YQpAQCAtMCwwICsxLDggQEAKK3BhY2thZ2UgcGFjazE7CisKK3B1YmxpYyBjbGFzcyBDbGFzczEgeworfQorCitjbGFzcyBDbGFzczIgeworCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzc1RvSW5uZXIvc2Vjb25kYXJ5Q2xhc3MvYmVmb3JlL3BhY2sxL1VzZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3NUb0lubmVyL3NlY29uZGFyeUNsYXNzL2JlZm9yZS9wYWNrMS9Vc2VyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWU0NjFhZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3NUb0lubmVyL3NlY29uZGFyeUNsYXNzL2JlZm9yZS9wYWNrMS9Vc2VyLmphdmEKQEAgLTAsMCArMSw2IEBACitwYWNrYWdlIHBhY2sxOworCitwdWJsaWMgY2xhc3MgVXNlciB7CisgIENsYXNzMSBjbGFzczE7CisgIENsYXNzMiBjbGFzczI7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzc1RvSW5uZXIvc2ltdWx0YW5lb3VzTW92ZS9hZnRlci9wYWNrMC9lbXB0eS50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzVG9Jbm5lci9zaW11bHRhbmVvdXNNb3ZlL2FmdGVyL3BhY2swL2VtcHR5LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNjlkZTI5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzc1RvSW5uZXIvc2ltdWx0YW5lb3VzTW92ZS9hZnRlci9wYWNrMC9lbXB0eS50eHQKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3NUb0lubmVyL3NpbXVsdGFuZW91c01vdmUvYWZ0ZXIvcGFjazEvZW1wdHkudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzc1RvSW5uZXIvc2ltdWx0YW5lb3VzTW92ZS9hZnRlci9wYWNrMS9lbXB0eS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTY5ZGUyOQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3NUb0lubmVyL3NpbXVsdGFuZW91c01vdmUvYWZ0ZXIvcGFjazEvZW1wdHkudHh0CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzVG9Jbm5lci9zaW11bHRhbmVvdXNNb3ZlL2FmdGVyL3BhY2syL0EuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3NUb0lubmVyL3NpbXVsdGFuZW91c01vdmUvYWZ0ZXIvcGFjazIvQS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJiM2YxZjkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzVG9Jbm5lci9zaW11bHRhbmVvdXNNb3ZlL2FmdGVyL3BhY2syL0EuamF2YQpAQCAtMCwwICsxLDE3IEBACitwYWNrYWdlIHBhY2syOworCitwdWJsaWMgY2xhc3MgQSB7CisgICAgLyoqCisgICAgICogcGFjazIuQS5DbGFzczAKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGNsYXNzIENsYXNzMSB7CisgICAgICBDbGFzczAgY2wwOworICAgIH0KKworICAgIC8qKgorICAgICAqIHBhY2syLkEuQ2xhc3MxCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBjbGFzcyBDbGFzczAgeworICAgICAgQ2xhc3MxIGNsMTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzVG9Jbm5lci9zaW11bHRhbmVvdXNNb3ZlL2FmdGVyL3BhY2syL2VtcHR5LnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3NUb0lubmVyL3NpbXVsdGFuZW91c01vdmUvYWZ0ZXIvcGFjazIvZW1wdHkudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU2OWRlMjkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzVG9Jbm5lci9zaW11bHRhbmVvdXNNb3ZlL2FmdGVyL3BhY2syL2VtcHR5LnR4dApkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzc1RvSW5uZXIvc2ltdWx0YW5lb3VzTW92ZS9hZnRlci9wYWNrVXNlci9DbGFzczIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3NUb0lubmVyL3NpbXVsdGFuZW91c01vdmUvYWZ0ZXIvcGFja1VzZXIvQ2xhc3MyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjI5ZTVjNgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3NUb0lubmVyL3NpbXVsdGFuZW91c01vdmUvYWZ0ZXIvcGFja1VzZXIvQ2xhc3MyLmphdmEKQEAgLTAsMCArMSwxMiBAQAorcGFja2FnZSBwYWNrVXNlcjsKKworaW1wb3J0IHBhY2syLkE7CisKKy8qKgorICogcGFjazIuQS5DbGFzczEKKyAqIHBhY2syLkEuQ2xhc3MwCisgKi8KK3B1YmxpYyBjbGFzcyBDbGFzczIgeworICBBLkNsYXNzMSBteUNsYXNzMTsKKyAgQS5DbGFzczAgbXlDbGFzczA7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzc1RvSW5uZXIvc2ltdWx0YW5lb3VzTW92ZS9iZWZvcmUvcGFjazAvQ2xhc3MwLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzVG9Jbm5lci9zaW11bHRhbmVvdXNNb3ZlL2JlZm9yZS9wYWNrMC9DbGFzczAuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYTRiZDQ4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzc1RvSW5uZXIvc2ltdWx0YW5lb3VzTW92ZS9iZWZvcmUvcGFjazAvQ2xhc3MwLmphdmEKQEAgLTAsMCArMSwxMCBAQAorcGFja2FnZSBwYWNrMDsKKworaW1wb3J0IHBhY2sxLio7CisKKy8qKgorICogcGFjazEuQ2xhc3MxCisgKi8KK3B1YmxpYyBjbGFzcyBDbGFzczAgeworICBDbGFzczEgY2wxOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3NUb0lubmVyL3NpbXVsdGFuZW91c01vdmUvYmVmb3JlL3BhY2swL2VtcHR5LnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3NUb0lubmVyL3NpbXVsdGFuZW91c01vdmUvYmVmb3JlL3BhY2swL2VtcHR5LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNjlkZTI5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzc1RvSW5uZXIvc2ltdWx0YW5lb3VzTW92ZS9iZWZvcmUvcGFjazAvZW1wdHkudHh0CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzVG9Jbm5lci9zaW11bHRhbmVvdXNNb3ZlL2JlZm9yZS9wYWNrMS9DbGFzczEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3NUb0lubmVyL3NpbXVsdGFuZW91c01vdmUvYmVmb3JlL3BhY2sxL0NsYXNzMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY2NTU1NTkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzVG9Jbm5lci9zaW11bHRhbmVvdXNNb3ZlL2JlZm9yZS9wYWNrMS9DbGFzczEuamF2YQpAQCAtMCwwICsxLDEwIEBACitwYWNrYWdlIHBhY2sxOworCitpbXBvcnQgcGFjazAuKjsKKworLyoqCisgKiBwYWNrMC5DbGFzczAKKyAqLworcHVibGljIGNsYXNzIENsYXNzMSB7CisgIENsYXNzMCBjbDA7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzc1RvSW5uZXIvc2ltdWx0YW5lb3VzTW92ZS9iZWZvcmUvcGFjazEvZW1wdHkudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzc1RvSW5uZXIvc2ltdWx0YW5lb3VzTW92ZS9iZWZvcmUvcGFjazEvZW1wdHkudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU2OWRlMjkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzVG9Jbm5lci9zaW11bHRhbmVvdXNNb3ZlL2JlZm9yZS9wYWNrMS9lbXB0eS50eHQKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3NUb0lubmVyL3NpbXVsdGFuZW91c01vdmUvYmVmb3JlL3BhY2syL0EuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3NUb0lubmVyL3NpbXVsdGFuZW91c01vdmUvYmVmb3JlL3BhY2syL0EuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMTg4NmU1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzc1RvSW5uZXIvc2ltdWx0YW5lb3VzTW92ZS9iZWZvcmUvcGFjazIvQS5qYXZhCkBAIC0wLDAgKzEsNCBAQAorcGFja2FnZSBwYWNrMjsKKworcHVibGljIGNsYXNzIEEgeworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzc1RvSW5uZXIvc2ltdWx0YW5lb3VzTW92ZS9iZWZvcmUvcGFjazIvZW1wdHkudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzc1RvSW5uZXIvc2ltdWx0YW5lb3VzTW92ZS9iZWZvcmUvcGFjazIvZW1wdHkudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU2OWRlMjkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzVG9Jbm5lci9zaW11bHRhbmVvdXNNb3ZlL2JlZm9yZS9wYWNrMi9lbXB0eS50eHQKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3NUb0lubmVyL3NpbXVsdGFuZW91c01vdmUvYmVmb3JlL3BhY2tVc2VyL0NsYXNzMi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzc1RvSW5uZXIvc2ltdWx0YW5lb3VzTW92ZS9iZWZvcmUvcGFja1VzZXIvQ2xhc3MyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzZmNzZjMgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3NUb0lubmVyL3NpbXVsdGFuZW91c01vdmUvYmVmb3JlL3BhY2tVc2VyL0NsYXNzMi5qYXZhCkBAIC0wLDAgKzEsMTMgQEAKK3BhY2thZ2UgcGFja1VzZXI7CisKK2ltcG9ydCBwYWNrMS5DbGFzczE7CitpbXBvcnQgcGFjazAuQ2xhc3MwOworCisvKioKKyAqIHBhY2sxLkNsYXNzMQorICogcGFjazAuQ2xhc3MwCisgKi8KK3B1YmxpYyBjbGFzcyBDbGFzczIgeworICBDbGFzczEgbXlDbGFzczE7CisgIENsYXNzMCBteUNsYXNzMDsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzVG9Jbm5lci9zdHJpbmdzQW5kQ29tbWVudHMvYWZ0ZXIvQ2xpZW50LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzVG9Jbm5lci9zdHJpbmdzQW5kQ29tbWVudHMvYWZ0ZXIvQ2xpZW50LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTI1MGE1NAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3NUb0lubmVyL3N0cmluZ3NBbmRDb21tZW50cy9hZnRlci9DbGllbnQuamF2YQpAQCAtMCwwICsxLDYgQEAKK3B1YmxpYyBjbGFzcyBDbGllbnQgeworICBTdHJpbmcgcyA9ICJwYWNrMS5BLkNsYXNzMSI7CisgIC8vIHBhY2sxLkEuQ2xhc3MxCisgIC8vIGFwYWNrMS5DbGFzczEKKyAgLy8gQ2xhc3MxCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzc1RvSW5uZXIvc3RyaW5nc0FuZENvbW1lbnRzL2FmdGVyL3BhY2sxL0EuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3NUb0lubmVyL3N0cmluZ3NBbmRDb21tZW50cy9hZnRlci9wYWNrMS9BLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjQ5NzRjMAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3NUb0lubmVyL3N0cmluZ3NBbmRDb21tZW50cy9hZnRlci9wYWNrMS9BLmphdmEKQEAgLTAsMCArMSw2IEBACitwYWNrYWdlIHBhY2sxOworCitwdWJsaWMgY2xhc3MgQSB7CisgICAgcHVibGljIHN0YXRpYyBjbGFzcyBDbGFzczEgeworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzVG9Jbm5lci9zdHJpbmdzQW5kQ29tbWVudHMvYWZ0ZXIvcGFjazEvZW1wdHkudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzc1RvSW5uZXIvc3RyaW5nc0FuZENvbW1lbnRzL2FmdGVyL3BhY2sxL2VtcHR5LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNjlkZTI5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzc1RvSW5uZXIvc3RyaW5nc0FuZENvbW1lbnRzL2FmdGVyL3BhY2sxL2VtcHR5LnR4dApkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzc1RvSW5uZXIvc3RyaW5nc0FuZENvbW1lbnRzL2JlZm9yZS9DbGllbnQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3NUb0lubmVyL3N0cmluZ3NBbmRDb21tZW50cy9iZWZvcmUvQ2xpZW50LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODVhNzIzMgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3NUb0lubmVyL3N0cmluZ3NBbmRDb21tZW50cy9iZWZvcmUvQ2xpZW50LmphdmEKQEAgLTAsMCArMSw2IEBACitwdWJsaWMgY2xhc3MgQ2xpZW50IHsKKyAgU3RyaW5nIHMgPSAicGFjazEuQ2xhc3MxIjsKKyAgLy8gcGFjazEuQ2xhc3MxCisgIC8vIGFwYWNrMS5DbGFzczEKKyAgLy8gQ2xhc3MxCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzc1RvSW5uZXIvc3RyaW5nc0FuZENvbW1lbnRzL2JlZm9yZS9wYWNrMS9BLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzVG9Jbm5lci9zdHJpbmdzQW5kQ29tbWVudHMvYmVmb3JlL3BhY2sxL0EuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NmZjNzhmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzc1RvSW5uZXIvc3RyaW5nc0FuZENvbW1lbnRzL2JlZm9yZS9wYWNrMS9BLmphdmEKQEAgLTAsMCArMSw0IEBACitwYWNrYWdlIHBhY2sxOworCitwdWJsaWMgY2xhc3MgQSB7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzc1RvSW5uZXIvc3RyaW5nc0FuZENvbW1lbnRzL2JlZm9yZS9wYWNrMS9DbGFzczEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3NUb0lubmVyL3N0cmluZ3NBbmRDb21tZW50cy9iZWZvcmUvcGFjazEvQ2xhc3MxLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjMxZmUwNgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3NUb0lubmVyL3N0cmluZ3NBbmRDb21tZW50cy9iZWZvcmUvcGFjazEvQ2xhc3MxLmphdmEKQEAgLTAsMCArMSw0IEBACitwYWNrYWdlIHBhY2sxOworCitwdWJsaWMgY2xhc3MgQ2xhc3MxIHsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzVG9Jbm5lci9zdHJpbmdzQW5kQ29tbWVudHMvYmVmb3JlL3BhY2sxL2VtcHR5LnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3NUb0lubmVyL3N0cmluZ3NBbmRDb21tZW50cy9iZWZvcmUvcGFjazEvZW1wdHkudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU2OWRlMjkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzVG9Jbm5lci9zdHJpbmdzQW5kQ29tbWVudHMvYmVmb3JlL3BhY2sxL2VtcHR5LnR4dApkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzc1RvSW5uZXIvc3RyaW5nc0FuZENvbW1lbnRzMi9hZnRlci9wYWNrMS9BLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzVG9Jbm5lci9zdHJpbmdzQW5kQ29tbWVudHMyL2FmdGVyL3BhY2sxL0EuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZDRjY2FhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzc1RvSW5uZXIvc3RyaW5nc0FuZENvbW1lbnRzMi9hZnRlci9wYWNrMS9BLmphdmEKQEAgLTAsMCArMSw3IEBACitwYWNrYWdlIHBhY2sxOworCitwdWJsaWMgY2xhc3MgQSB7CisgICAgcHVibGljIHN0YXRpYyBjbGFzcyBDbGFzczEgeworICAgICAgU3RyaW5nIHMgPSAicGFjazEuQS5DbGFzczEiOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzVG9Jbm5lci9zdHJpbmdzQW5kQ29tbWVudHMyL2FmdGVyL3BhY2sxL2VtcHR5LnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3NUb0lubmVyL3N0cmluZ3NBbmRDb21tZW50czIvYWZ0ZXIvcGFjazEvZW1wdHkudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU2OWRlMjkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzVG9Jbm5lci9zdHJpbmdzQW5kQ29tbWVudHMyL2FmdGVyL3BhY2sxL2VtcHR5LnR4dApkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzc1RvSW5uZXIvc3RyaW5nc0FuZENvbW1lbnRzMi9iZWZvcmUvcGFjazEvQS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzc1RvSW5uZXIvc3RyaW5nc0FuZENvbW1lbnRzMi9iZWZvcmUvcGFjazEvQS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ2ZmM3OGYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzVG9Jbm5lci9zdHJpbmdzQW5kQ29tbWVudHMyL2JlZm9yZS9wYWNrMS9BLmphdmEKQEAgLTAsMCArMSw0IEBACitwYWNrYWdlIHBhY2sxOworCitwdWJsaWMgY2xhc3MgQSB7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzc1RvSW5uZXIvc3RyaW5nc0FuZENvbW1lbnRzMi9iZWZvcmUvcGFjazEvQ2xhc3MxLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzVG9Jbm5lci9zdHJpbmdzQW5kQ29tbWVudHMyL2JlZm9yZS9wYWNrMS9DbGFzczEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMmY5NGZkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVDbGFzc1RvSW5uZXIvc3RyaW5nc0FuZENvbW1lbnRzMi9iZWZvcmUvcGFjazEvQ2xhc3MxLmphdmEKQEAgLTAsMCArMSw1IEBACitwYWNrYWdlIHBhY2sxOworCitwdWJsaWMgY2xhc3MgQ2xhc3MxIHsKKyAgU3RyaW5nIHMgPSAicGFjazEuQ2xhc3MxIjsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzVG9Jbm5lci9zdHJpbmdzQW5kQ29tbWVudHMyL2JlZm9yZS9wYWNrMS9lbXB0eS50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUNsYXNzVG9Jbm5lci9zdHJpbmdzQW5kQ29tbWVudHMyL2JlZm9yZS9wYWNrMS9lbXB0eS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTY5ZGUyOQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlQ2xhc3NUb0lubmVyL3N0cmluZ3NBbmRDb21tZW50czIvYmVmb3JlL3BhY2sxL2VtcHR5LnR4dApkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVJbm5lci9jb25zdHJ1Y3RvclZpc2liaWxpdHkvYWZ0ZXIvcC9BLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUlubmVyL2NvbnN0cnVjdG9yVmlzaWJpbGl0eS9hZnRlci9wL0EuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZGQyOGMwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVJbm5lci9jb25zdHJ1Y3RvclZpc2liaWxpdHkvYWZ0ZXIvcC9BLmphdmEKQEAgLTAsMCArMSw4IEBACitwYWNrYWdlIHA7CisKK2NsYXNzIEEgeworICAgIHB1YmxpYyB2b2lkIHRlc3QoKSB7CisgICAgICAgIEIgYiA9IG5ldyBCKCk7CisgICAgfQorCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVJbm5lci9jb25zdHJ1Y3RvclZpc2liaWxpdHkvYWZ0ZXIvcC9CLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUlubmVyL2NvbnN0cnVjdG9yVmlzaWJpbGl0eS9hZnRlci9wL0IuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZmVkMzI5MQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlSW5uZXIvY29uc3RydWN0b3JWaXNpYmlsaXR5L2FmdGVyL3AvQi5qYXZhCkBAIC0wLDAgKzEsNyBAQAorcGFja2FnZSBwOworCitjbGFzcyBCIHsKKyAgICBCKCkgeworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIkNvbnN0cnVjdG9yIik7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlSW5uZXIvY29uc3RydWN0b3JWaXNpYmlsaXR5L2JlZm9yZS9wL0EuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlSW5uZXIvY29uc3RydWN0b3JWaXNpYmlsaXR5L2JlZm9yZS9wL0EuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZGYzZWJjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVJbm5lci9jb25zdHJ1Y3RvclZpc2liaWxpdHkvYmVmb3JlL3AvQS5qYXZhCkBAIC0wLDAgKzEsMTMgQEAKK3BhY2thZ2UgcDsKKworY2xhc3MgQSB7CisgICAgcHVibGljIHZvaWQgdGVzdCgpIHsKKyAgICAgICAgQiBiID0gbmV3IEIoKTsKKyAgICB9CisKKyAgICBwcml2YXRlIGNsYXNzIEIgeworICAgICAgICBwcml2YXRlIEIoKSB7CisgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIkNvbnN0cnVjdG9yIik7CisgICAgICAgIH0KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVJbm5lci9lbnVtQ29uc3RydWN0b3JWaXNpYmlsaXR5L2FmdGVyL3AvQS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVJbm5lci9lbnVtQ29uc3RydWN0b3JWaXNpYmlsaXR5L2FmdGVyL3AvQS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE0OWJiOTAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUlubmVyL2VudW1Db25zdHJ1Y3RvclZpc2liaWxpdHkvYWZ0ZXIvcC9BLmphdmEKQEAgLTAsMCArMSw0IEBACitwYWNrYWdlIHA7CisKK3B1YmxpYyBjbGFzcyBBIHsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUlubmVyL2VudW1Db25zdHJ1Y3RvclZpc2liaWxpdHkvYWZ0ZXIvcDIvRS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVJbm5lci9lbnVtQ29uc3RydWN0b3JWaXNpYmlsaXR5L2FmdGVyL3AyL0UuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZWM5OWM3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVJbm5lci9lbnVtQ29uc3RydWN0b3JWaXNpYmlsaXR5L2FmdGVyL3AyL0UuamF2YQpAQCAtMCwwICsxLDEyIEBACitwYWNrYWdlIHAyOworCitwdWJsaWMgZW51bSBFIHsKKyAgICAgRUEoImEiKSwKKyAgICAgRUIoImIiKQorCisgICAgIHB1YmxpYyBmaW5hbCBTdHJpbmcgUFJFU0VOVEFCTEVfVEVYVDsKKworICAgICBFKGZpbmFsIFN0cmluZyBwcmVzZW50YWJsZVRleHQpIHsKKyAgICAgICBQUkVTRU5UQUJMRV9URVhUID0gcHJlc2VudGFibGVUZXh0OworICAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVJbm5lci9lbnVtQ29uc3RydWN0b3JWaXNpYmlsaXR5L2FmdGVyL3AyL1UuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlSW5uZXIvZW51bUNvbnN0cnVjdG9yVmlzaWJpbGl0eS9hZnRlci9wMi9VLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjQ0YTdlMgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlSW5uZXIvZW51bUNvbnN0cnVjdG9yVmlzaWJpbGl0eS9hZnRlci9wMi9VLmphdmEKQEAgLTAsMCArMSw1IEBACitwYWNrYWdlIHAyOworCitwdWJsaWMgY2xhc3MgVSB7CisgICAgRSBteUU7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVJbm5lci9lbnVtQ29uc3RydWN0b3JWaXNpYmlsaXR5L2JlZm9yZS9wL0EuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlSW5uZXIvZW51bUNvbnN0cnVjdG9yVmlzaWJpbGl0eS9iZWZvcmUvcC9BLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmI4MGFjNQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlSW5uZXIvZW51bUNvbnN0cnVjdG9yVmlzaWJpbGl0eS9iZWZvcmUvcC9BLmphdmEKQEAgLTAsMCArMSwxNCBAQAorcGFja2FnZSBwOworCitwdWJsaWMgY2xhc3MgQSB7CisgICAgcHVibGljIGVudW0gRSB7CisgICAgICAgICBFQSgiYSIpLAorICAgICAgICAgRUIoImIiKQorCisgICAgICAgICBwdWJsaWMgZmluYWwgU3RyaW5nIFBSRVNFTlRBQkxFX1RFWFQ7CisKKyAgICAgICAgIEUoZmluYWwgU3RyaW5nIHByZXNlbnRhYmxlVGV4dCkgeworICAgICAgICAgICBQUkVTRU5UQUJMRV9URVhUID0gcHJlc2VudGFibGVUZXh0OworICAgICAgICAgfQorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUlubmVyL2VudW1Db25zdHJ1Y3RvclZpc2liaWxpdHkvYmVmb3JlL3AyL1UuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlSW5uZXIvZW51bUNvbnN0cnVjdG9yVmlzaWJpbGl0eS9iZWZvcmUvcDIvVS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQxMjU3ZjcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUlubmVyL2VudW1Db25zdHJ1Y3RvclZpc2liaWxpdHkvYmVmb3JlL3AyL1UuamF2YQpAQCAtMCwwICsxLDcgQEAKK3BhY2thZ2UgcDI7CisKK2ltcG9ydCBzdGF0aWMgcC5BLkU7CisKK3B1YmxpYyBjbGFzcyBVIHsKKyAgICBFIG15RTsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUlubmVyL2ZpZWxkQWNjZXNzSW5TdXBlci9hZnRlci9wL0EuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlSW5uZXIvZmllbGRBY2Nlc3NJblN1cGVyL2FmdGVyL3AvQS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQxYzJkNjYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUlubmVyL2ZpZWxkQWNjZXNzSW5TdXBlci9hZnRlci9wL0EuamF2YQpAQCAtMCwwICsxLDUgQEAKK3BhY2thZ2UgcDsKKworY2xhc3MgQSB7CisgICAgaW50IGZvbygpe30KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUlubmVyL2ZpZWxkQWNjZXNzSW5TdXBlci9hZnRlci9wL0IuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlSW5uZXIvZmllbGRBY2Nlc3NJblN1cGVyL2FmdGVyL3AvQi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVkMDMwNDcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUlubmVyL2ZpZWxkQWNjZXNzSW5TdXBlci9hZnRlci9wL0IuamF2YQpAQCAtMCwwICsxLDEwIEBACitwYWNrYWdlIHA7CisKK2NsYXNzIEIgZXh0ZW5kcyBTeworICAgIHByaXZhdGUgQSBhOworCisgICAgcHVibGljIEIoQSBhKSB7CisgICAgc3VwZXIoYS5mb28oKSk7CisgICAgICAgIHRoaXMuYSA9IGE7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlSW5uZXIvZmllbGRBY2Nlc3NJblN1cGVyL2FmdGVyL3AvUy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVJbm5lci9maWVsZEFjY2Vzc0luU3VwZXIvYWZ0ZXIvcC9TLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGE5YWVlNgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlSW5uZXIvZmllbGRBY2Nlc3NJblN1cGVyL2FmdGVyL3AvUy5qYXZhCkBAIC0wLDAgKzEsNSBAQAorcGFja2FnZSBwOworCitjbGFzcyBTIHsKKyAgcHVibGljIFMoaW50IGkpe30KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUlubmVyL2ZpZWxkQWNjZXNzSW5TdXBlci9iZWZvcmUvcC9BLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUlubmVyL2ZpZWxkQWNjZXNzSW5TdXBlci9iZWZvcmUvcC9BLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGI2N2FmZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlSW5uZXIvZmllbGRBY2Nlc3NJblN1cGVyL2JlZm9yZS9wL0EuamF2YQpAQCAtMCwwICsxLDEwIEBACitwYWNrYWdlIHA7CisKK2NsYXNzIEEgeworICAgIGludCBmb28oKXt9CisgICAgcHJpdmF0ZSBjbGFzcyBCIGV4dGVuZHMgU3sKKyAgICAgIHB1YmxpYyBCKCkgeworICAgICAgICBzdXBlcihBLnRoaXMuZm9vKCkpOworICAgICAgfSAKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVJbm5lci9maWVsZEFjY2Vzc0luU3VwZXIvYmVmb3JlL3AvUy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVJbm5lci9maWVsZEFjY2Vzc0luU3VwZXIvYmVmb3JlL3AvUy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhhOWFlZTYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUlubmVyL2ZpZWxkQWNjZXNzSW5TdXBlci9iZWZvcmUvcC9TLmphdmEKQEAgLTAsMCArMSw1IEBACitwYWNrYWdlIHA7CisKK2NsYXNzIFMgeworICBwdWJsaWMgUyhpbnQgaSl7fQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlSW5uZXIvaW1wb3J0U3RhdGljT2ZFbnVtL2FmdGVyL3AvQS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVJbm5lci9pbXBvcnRTdGF0aWNPZkVudW0vYWZ0ZXIvcC9BLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTQ5YmI5MAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlSW5uZXIvaW1wb3J0U3RhdGljT2ZFbnVtL2FmdGVyL3AvQS5qYXZhCkBAIC0wLDAgKzEsNCBAQAorcGFja2FnZSBwOworCitwdWJsaWMgY2xhc3MgQSB7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVJbm5lci9pbXBvcnRTdGF0aWNPZkVudW0vYWZ0ZXIvcC9FLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUlubmVyL2ltcG9ydFN0YXRpY09mRW51bS9hZnRlci9wL0UuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYTFhMmY2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVJbm5lci9pbXBvcnRTdGF0aWNPZkVudW0vYWZ0ZXIvcC9FLmphdmEKQEAgLTAsMCArMSw0IEBACitwYWNrYWdlIHA7CisKK3B1YmxpYyBlbnVtIEUgeworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlSW5uZXIvaW1wb3J0U3RhdGljT2ZFbnVtL2FmdGVyL3AyL1UuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlSW5uZXIvaW1wb3J0U3RhdGljT2ZFbnVtL2FmdGVyL3AyL1UuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MTc3ZWNmNQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlSW5uZXIvaW1wb3J0U3RhdGljT2ZFbnVtL2FmdGVyL3AyL1UuamF2YQpAQCAtMCwwICsxLDcgQEAKK3BhY2thZ2UgcDI7CisKK2ltcG9ydCBwLkU7CisKK3B1YmxpYyBjbGFzcyBVIHsKKyAgICBFIG15RTsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUlubmVyL2ltcG9ydFN0YXRpY09mRW51bS9iZWZvcmUvcC9BLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUlubmVyL2ltcG9ydFN0YXRpY09mRW51bS9iZWZvcmUvcC9BLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGNmYTExZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlSW5uZXIvaW1wb3J0U3RhdGljT2ZFbnVtL2JlZm9yZS9wL0EuamF2YQpAQCAtMCwwICsxLDYgQEAKK3BhY2thZ2UgcDsKKworcHVibGljIGNsYXNzIEEgeworICAgIHB1YmxpYyBlbnVtIEUgeworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUlubmVyL2ltcG9ydFN0YXRpY09mRW51bS9iZWZvcmUvcDIvVS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVJbm5lci9pbXBvcnRTdGF0aWNPZkVudW0vYmVmb3JlL3AyL1UuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MTI1N2Y3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVJbm5lci9pbXBvcnRTdGF0aWNPZkVudW0vYmVmb3JlL3AyL1UuamF2YQpAQCAtMCwwICsxLDcgQEAKK3BhY2thZ2UgcDI7CisKK2ltcG9ydCBzdGF0aWMgcC5BLkU7CisKK3B1YmxpYyBjbGFzcyBVIHsKKyAgICBFIG15RTsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUlubmVyL2lubmVyQ2xhc3NJbmhlcml0YW5jZS9hZnRlci9wL0EuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlSW5uZXIvaW5uZXJDbGFzc0luaGVyaXRhbmNlL2FmdGVyL3AvQS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIzZDgzMzQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUlubmVyL2lubmVyQ2xhc3NJbmhlcml0YW5jZS9hZnRlci9wL0EuamF2YQpAQCAtMCwwICsxLDggQEAKK3BhY2thZ2UgcDsKKworY2xhc3MgQSB7CisgICAgcHJpdmF0ZSBzdGF0aWMgY2xhc3MgQyB7CisKKyAgICB9CisKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUlubmVyL2lubmVyQ2xhc3NJbmhlcml0YW5jZS9hZnRlci9wL0IuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlSW5uZXIvaW5uZXJDbGFzc0luaGVyaXRhbmNlL2FmdGVyL3AvQi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdkMzRmNzkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUlubmVyL2lubmVyQ2xhc3NJbmhlcml0YW5jZS9hZnRlci9wL0IuamF2YQpAQCAtMCwwICsxLDUgQEAKK3BhY2thZ2UgcDsKKworY2xhc3MgQiBleHRlbmRzIEEuQyB7CisKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUlubmVyL2lubmVyQ2xhc3NJbmhlcml0YW5jZS9iZWZvcmUvcC9BLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUlubmVyL2lubmVyQ2xhc3NJbmhlcml0YW5jZS9iZWZvcmUvcC9BLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTIyY2FmMAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlSW5uZXIvaW5uZXJDbGFzc0luaGVyaXRhbmNlL2JlZm9yZS9wL0EuamF2YQpAQCAtMCwwICsxLDExIEBACitwYWNrYWdlIHA7CisKK2NsYXNzIEEgeworICAgIHByaXZhdGUgc3RhdGljIGNsYXNzIEMgeworCisgICAgfQorCisgICAgcHJpdmF0ZSBzdGF0aWMgY2xhc3MgQiBleHRlbmRzIEN7CisKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVJbm5lci9pbm5lckNsYXNzU2VsZlJlZi9hZnRlci9wL0EuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlSW5uZXIvaW5uZXJDbGFzc1NlbGZSZWYvYWZ0ZXIvcC9BLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjNmYWUzZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlSW5uZXIvaW5uZXJDbGFzc1NlbGZSZWYvYWZ0ZXIvcC9BLmphdmEKQEAgLTAsMCArMSw0IEBACitwYWNrYWdlIHA7CisKK2NsYXNzIEEgeworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlSW5uZXIvaW5uZXJDbGFzc1NlbGZSZWYvYWZ0ZXIvcC9CLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUlubmVyL2lubmVyQ2xhc3NTZWxmUmVmL2FmdGVyL3AvQi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk3NDJhZmEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUlubmVyL2lubmVyQ2xhc3NTZWxmUmVmL2FmdGVyL3AvQi5qYXZhCkBAIC0wLDAgKzEsNyBAQAorcGFja2FnZSBwOworCitjbGFzcyBCIHsKKyAgcHVibGljIHN0YXRpYyBCIGNyZWF0ZSgpIHsKKyAgICByZXR1cm4gbmV3IEIoKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlSW5uZXIvaW5uZXJDbGFzc1NlbGZSZWYvYmVmb3JlL3AvQS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVJbm5lci9pbm5lckNsYXNzU2VsZlJlZi9iZWZvcmUvcC9BLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWE2YzJlMwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlSW5uZXIvaW5uZXJDbGFzc1NlbGZSZWYvYmVmb3JlL3AvQS5qYXZhCkBAIC0wLDAgKzEsOSBAQAorcGFja2FnZSBwOworCitjbGFzcyBBIHsKKyAgICBwcml2YXRlIHN0YXRpYyBjbGFzcyBCIHsKKyAgICAgIHB1YmxpYyBzdGF0aWMgQiBjcmVhdGUoKSB7CisgICAgICAgIHJldHVybiBuZXcgQigpOworICAgICAgfQorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUlubmVyL25vbkphdmFGaWxlcy9hZnRlci9wYWNrMS9Jbm5lci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVJbm5lci9ub25KYXZhRmlsZXMvYWZ0ZXIvcGFjazEvSW5uZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zOWRlZDhhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVJbm5lci9ub25KYXZhRmlsZXMvYWZ0ZXIvcGFjazEvSW5uZXIuamF2YQpAQCAtMCwwICsxLDQgQEAKK3BhY2thZ2UgcGFjazE7CisKK3B1YmxpYyBjbGFzcyBJbm5lciB7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVJbm5lci9ub25KYXZhRmlsZXMvYWZ0ZXIvcGFjazEvT3V0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlSW5uZXIvbm9uSmF2YUZpbGVzL2FmdGVyL3BhY2sxL091dGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDc3MmVkOQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlSW5uZXIvbm9uSmF2YUZpbGVzL2FmdGVyL3BhY2sxL091dGVyLmphdmEKQEAgLTAsMCArMSw2IEBACitwYWNrYWdlIHBhY2sxOworCitwdWJsaWMgY2xhc3MgT3V0ZXIgeworICAgIC8vIHBhY2sxLklubmVyCisKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUlubmVyL25vbkphdmFGaWxlcy9hZnRlci9wYWNrMS94LnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlSW5uZXIvbm9uSmF2YUZpbGVzL2FmdGVyL3BhY2sxL3gudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY5N2Q5MmQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUlubmVyL25vbkphdmFGaWxlcy9hZnRlci9wYWNrMS94LnR4dApAQCAtMCwwICsxIEBACitwYWNrMS5Jbm5lcgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlSW5uZXIvbm9uSmF2YUZpbGVzL2JlZm9yZS9wYWNrMS9PdXRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVJbm5lci9ub25KYXZhRmlsZXMvYmVmb3JlL3BhY2sxL091dGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTc4NzljYQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlSW5uZXIvbm9uSmF2YUZpbGVzL2JlZm9yZS9wYWNrMS9PdXRlci5qYXZhCkBAIC0wLDAgKzEsOCBAQAorcGFja2FnZSBwYWNrMTsKKworcHVibGljIGNsYXNzIE91dGVyIHsKKyAgICAvLyBwYWNrMS5PdXRlci5Jbm5lcgorCisgICAgcHVibGljIGNsYXNzIElubmVyIHsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVJbm5lci9ub25KYXZhRmlsZXMvYmVmb3JlL3BhY2sxL3gudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVJbm5lci9ub25KYXZhRmlsZXMvYmVmb3JlL3BhY2sxL3gudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNhMWMzOTAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUlubmVyL25vbkphdmFGaWxlcy9iZWZvcmUvcGFjazEveC50eHQKQEAgLTAsMCArMSBAQAorcGFjazEuT3V0ZXIuSW5uZXIKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUlubmVyL3F1YWxpZnlUaGlzSGllcmFyY2h5L2FmdGVyL3BhY2sxL0RJbXBsLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUlubmVyL3F1YWxpZnlUaGlzSGllcmFyY2h5L2FmdGVyL3BhY2sxL0RJbXBsLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzc2OWQ4YQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlSW5uZXIvcXVhbGlmeVRoaXNIaWVyYXJjaHkvYWZ0ZXIvcGFjazEvREltcGwuamF2YQpAQCAtMCwwICsxLDkgQEAKK3BhY2thZ2UgcGFjazE7CitjbGFzcyBEIHsKKyAgcHJvdGVjdGVkIHZvaWQgaUFtUHJvdGVjdGVkKCkgeworICB9Cit9CisKK3B1YmxpYyBjbGFzcyBESW1wbCBleHRlbmRzIEQgeworfQorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUlubmVyL3F1YWxpZnlUaGlzSGllcmFyY2h5L2FmdGVyL3BhY2sxL015UnVubmFibGUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlSW5uZXIvcXVhbGlmeVRoaXNIaWVyYXJjaHkvYWZ0ZXIvcGFjazEvTXlSdW5uYWJsZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY4YTQ2NzAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUlubmVyL3F1YWxpZnlUaGlzSGllcmFyY2h5L2FmdGVyL3BhY2sxL015UnVubmFibGUuamF2YQpAQCAtMCwwICsxLDEzIEBACitwYWNrYWdlIHBhY2sxOworCitwdWJsaWMgY2xhc3MgTXlSdW5uYWJsZSB7CisgICAgcHJpdmF0ZSBESW1wbCBkOworCisgICAgcHVibGljIE15UnVubmFibGUoREltcGwgZCkgeworICAgICAgICB0aGlzLmQgPSBkOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHJ1bigpIHsKKyAgICBkLmlBbVByb3RlY3RlZCgpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVJbm5lci9xdWFsaWZ5VGhpc0hpZXJhcmNoeS9iZWZvcmUvcGFjazEvREltcGwuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlSW5uZXIvcXVhbGlmeVRoaXNIaWVyYXJjaHkvYmVmb3JlL3BhY2sxL0RJbXBsLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjliNzVmNwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlSW5uZXIvcXVhbGlmeVRoaXNIaWVyYXJjaHkvYmVmb3JlL3BhY2sxL0RJbXBsLmphdmEKQEAgLTAsMCArMSwxNCBAQAorcGFja2FnZSBwYWNrMTsKK2NsYXNzIEQgeworICBwcm90ZWN0ZWQgdm9pZCBpQW1Qcm90ZWN0ZWQoKSB7CisgIH0KK30KKworcHVibGljIGNsYXNzIERJbXBsIGV4dGVuZHMgRCB7CisgIHB1YmxpYyBjbGFzcyBNeVJ1bm5hYmxlIHsgICAgIAorICAgIHB1YmxpYyB2b2lkIHJ1bigpIHsKKyAgICAgIGlBbVByb3RlY3RlZCgpOworICAgIH0KKyAgfQorfQorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUlubmVyL3NjcjEzNzMwL2FmdGVyL3BhY2sxL0NsaWVudC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVJbm5lci9zY3IxMzczMC9hZnRlci9wYWNrMS9DbGllbnQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jN2E0OGQ2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVJbm5lci9zY3IxMzczMC9hZnRlci9wYWNrMS9DbGllbnQuamF2YQpAQCAtMCwwICsxLDEyIEBACitwYWNrYWdlIHBhY2sxOworCitwdWJsaWMgY2xhc3MgQ2xpZW50IHsgCisgICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgeworICAgICAgICBTdGF0aWNJbm5lciBzdGF0aWNJbm5lciA9IG5ldyBTdGF0aWNJbm5lcigpOworIAorICAgICAgICBTdGF0aWNJbm5lci5Ob25TdGF0aWNJbm5lcklubmVyIG5vblN0YXRpY0lubmVySW5uZXIKKyAgICAgICAgICAgID0gc3RhdGljSW5uZXIubmV3IE5vblN0YXRpY0lubmVySW5uZXIoIkpvZSIpOworIAorICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4obm9uU3RhdGljSW5uZXJJbm5lci50b1N0cmluZygpKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVJbm5lci9zY3IxMzczMC9hZnRlci9wYWNrMS9TdGF0aWNJbm5lci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVJbm5lci9zY3IxMzczMC9hZnRlci9wYWNrMS9TdGF0aWNJbm5lci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQzODFlYmEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUlubmVyL3NjcjEzNzMwL2FmdGVyL3BhY2sxL1N0YXRpY0lubmVyLmphdmEKQEAgLTAsMCArMSwxNSBAQAorcGFja2FnZSBwYWNrMTsKKworcHVibGljIGNsYXNzIFN0YXRpY0lubmVyIHsKKyAgICBwdWJsaWMgY2xhc3MgTm9uU3RhdGljSW5uZXJJbm5lciB7CisgICAgICAgIHByaXZhdGUgU3RyaW5nIG5hbWU7CisKKyAgICAgICAgcHVibGljIE5vblN0YXRpY0lubmVySW5uZXIoU3RyaW5nIG5hbWUpIHsKKyAgICAgICAgICAgIHRoaXMubmFtZSA9IG5hbWU7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgU3RyaW5nIHRvU3RyaW5nKCkgeworICAgICAgICAgICAgcmV0dXJuIG5hbWU7CisgICAgICAgIH0KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVJbm5lci9zY3IxMzczMC9hZnRlci9wYWNrMS9Ub3BMZXZlbC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVJbm5lci9zY3IxMzczMC9hZnRlci9wYWNrMS9Ub3BMZXZlbC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc1NWVkNzQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUlubmVyL3NjcjEzNzMwL2FmdGVyL3BhY2sxL1RvcExldmVsLmphdmEKQEAgLTAsMCArMSw0IEBACitwYWNrYWdlIHBhY2sxOworCitwdWJsaWMgY2xhc3MgVG9wTGV2ZWwgeworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlSW5uZXIvc2NyMTM3MzAvYmVmb3JlL3BhY2sxL0NsaWVudC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVJbm5lci9zY3IxMzczMC9iZWZvcmUvcGFjazEvQ2xpZW50LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjZjMzQzYQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlSW5uZXIvc2NyMTM3MzAvYmVmb3JlL3BhY2sxL0NsaWVudC5qYXZhCkBAIC0wLDAgKzEsMTIgQEAKK3BhY2thZ2UgcGFjazE7CisKK3B1YmxpYyBjbGFzcyBDbGllbnQgeyAKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CisgICAgICAgIFRvcExldmVsLlN0YXRpY0lubmVyIHN0YXRpY0lubmVyID0gbmV3IFRvcExldmVsLlN0YXRpY0lubmVyKCk7CisgCisgICAgICAgIFRvcExldmVsLlN0YXRpY0lubmVyLk5vblN0YXRpY0lubmVySW5uZXIgbm9uU3RhdGljSW5uZXJJbm5lcgorICAgICAgICAgICAgPSBzdGF0aWNJbm5lci5uZXcgTm9uU3RhdGljSW5uZXJJbm5lcigiSm9lIik7CisgCisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihub25TdGF0aWNJbm5lcklubmVyLnRvU3RyaW5nKCkpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUlubmVyL3NjcjEzNzMwL2JlZm9yZS9wYWNrMS9Ub3BMZXZlbC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVJbm5lci9zY3IxMzczMC9iZWZvcmUvcGFjazEvVG9wTGV2ZWwuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNjE0OTJjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVJbm5lci9zY3IxMzczMC9iZWZvcmUvcGFjazEvVG9wTGV2ZWwuamF2YQpAQCAtMCwwICsxLDE3IEBACitwYWNrYWdlIHBhY2sxOworCitwdWJsaWMgY2xhc3MgVG9wTGV2ZWwgeyAKKyAgICBwdWJsaWMgc3RhdGljIGNsYXNzIFN0YXRpY0lubmVyIHsKKyAgICAgICAgcHVibGljIGNsYXNzIE5vblN0YXRpY0lubmVySW5uZXIgeworICAgICAgICAgICAgcHJpdmF0ZSBTdHJpbmcgbmFtZTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgcHVibGljIE5vblN0YXRpY0lubmVySW5uZXIoU3RyaW5nIG5hbWUpIHsKKyAgICAgICAgICAgICAgICB0aGlzLm5hbWUgPSBuYW1lOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBwdWJsaWMgU3RyaW5nIHRvU3RyaW5nKCkgeworICAgICAgICAgICAgICAgIHJldHVybiBuYW1lOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlSW5uZXIvc2NyMTUxNDIvYWZ0ZXIveHh4L0lubmVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUlubmVyL3NjcjE1MTQyL2FmdGVyL3h4eC9Jbm5lci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ4MWZjYTAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUlubmVyL3NjcjE1MTQyL2FmdGVyL3h4eC9Jbm5lci5qYXZhCkBAIC0wLDAgKzEsNCBAQAorcGFja2FnZSB4eHg7CisKK3B1YmxpYyBjbGFzcyBJbm5lciB7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVJbm5lci9zY3IxNTE0Mi9hZnRlci94eHgvT3V0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlSW5uZXIvc2NyMTUxNDIvYWZ0ZXIveHh4L091dGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGE0MDI5NwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlSW5uZXIvc2NyMTUxNDIvYWZ0ZXIveHh4L091dGVyLmphdmEKQEAgLTAsMCArMSw4IEBACitwYWNrYWdlIHh4eDsKKworcHVibGljIGNsYXNzIE91dGVyIHsKKyAgeworICAgIElubmVyIGlubmVyID0gbmV3IElubmVyKCk7CisgIH0KKworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlSW5uZXIvc2NyMTUxNDIvYmVmb3JlL3h4eC9PdXRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVJbm5lci9zY3IxNTE0Mi9iZWZvcmUveHh4L091dGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGJhODczYgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlSW5uZXIvc2NyMTUxNDIvYmVmb3JlL3h4eC9PdXRlci5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKK3BhY2thZ2UgeHh4OworCitwdWJsaWMgY2xhc3MgT3V0ZXIgeworICB7CisgICAgSW5uZXIgaW5uZXIgPSBuZXcgSW5uZXIoKTsKKyAgfQorCisgIHB1YmxpYyBjbGFzcyBJbm5lciB7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUlubmVyL3NjcjIyNTkyL2FmdGVyL3h4eC9Jbm5lci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVJbm5lci9zY3IyMjU5Mi9hZnRlci94eHgvSW5uZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMjI4OWFmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVJbm5lci9zY3IyMjU5Mi9hZnRlci94eHgvSW5uZXIuamF2YQpAQCAtMCwwICsxLDkgQEAKK3BhY2thZ2UgeHh4OworCitjbGFzcyBJbm5lciB7CisgICAgcHJpdmF0ZSBPdXRlciBvdXRlcjsKKworICAgIHB1YmxpYyBJbm5lcihPdXRlciBvdXRlcikgeworICAgICAgICB0aGlzLm91dGVyID0gb3V0ZXI7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlSW5uZXIvc2NyMjI1OTIvYWZ0ZXIveHh4L091dGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUlubmVyL3NjcjIyNTkyL2FmdGVyL3h4eC9PdXRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc0ZWUxN2UKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUlubmVyL3NjcjIyNTkyL2FmdGVyL3h4eC9PdXRlci5qYXZhCkBAIC0wLDAgKzEsNyBAQAorcGFja2FnZSB4eHg7CitjbGFzcyBPdXRlciB7CisKKyAgICB7CisgICAgICAgIE9iamVjdCBvID0gbmV3IElubmVyOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUlubmVyL3NjcjIyNTkyL2JlZm9yZS94eHgvT3V0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlSW5uZXIvc2NyMjI1OTIvYmVmb3JlL3h4eC9PdXRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAyNjI5ZWYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUlubmVyL3NjcjIyNTkyL2JlZm9yZS94eHgvT3V0ZXIuamF2YQpAQCAtMCwwICsxLDkgQEAKK3BhY2thZ2UgeHh4OworY2xhc3MgT3V0ZXIgeworICAgIGNsYXNzIElubmVyIHsKKyAgICB9CisKKyAgICB7CisgICAgICAgIE9iamVjdCBvID0gbmV3IElubmVyOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUlubmVyL3NjcjMwMTA2L2FmdGVyL3AvQS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVJbm5lci9zY3IzMDEwNi9hZnRlci9wL0EuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hM2EwOTAzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVJbm5lci9zY3IzMDEwNi9hZnRlci9wL0EuamF2YQpAQCAtMCwwICsxLDQgQEAKK3BhY2thZ2UgcDsKKworcHVibGljIGNsYXNzIEEgZXh0ZW5kcyBYIHsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUlubmVyL3NjcjMwMTA2L2FmdGVyL3AvQi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVJbm5lci9zY3IzMDEwNi9hZnRlci9wL0IuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZmE5MTYyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVJbm5lci9zY3IzMDEwNi9hZnRlci9wL0IuamF2YQpAQCAtMCwwICsxLDEzIEBACitwYWNrYWdlIHA7CisKK3B1YmxpYyBjbGFzcyBCIGV4dGVuZHMgWCB7CisgICAgeworICAgICAgICBtZXRob2QoKTsKKyAgICB9CisKKyAgICBwcml2YXRlIEEgb3V0ZXI7CisKKyAgICBwdWJsaWMgQihBIG91dGVyKSB7CisgICAgICAgIHRoaXMub3V0ZXIgPSBvdXRlcjsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVJbm5lci9zY3IzMDEwNi9hZnRlci9wL1guamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlSW5uZXIvc2NyMzAxMDYvYWZ0ZXIvcC9YLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjEzMzQ0OAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlSW5uZXIvc2NyMzAxMDYvYWZ0ZXIvcC9YLmphdmEKQEAgLTAsMCArMSw1IEBACitwYWNrYWdlIHA7CisKK3B1YmxpYyBjbGFzcyBYIHsKKyAgICB2b2lkIG1ldGhvZCgpOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlSW5uZXIvc2NyMzAxMDYvYmVmb3JlL3AvQS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVJbm5lci9zY3IzMDEwNi9iZWZvcmUvcC9BLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzg3YmY0YgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlSW5uZXIvc2NyMzAxMDYvYmVmb3JlL3AvQS5qYXZhCkBAIC0wLDAgKzEsOSBAQAorcGFja2FnZSBwOworCitwdWJsaWMgY2xhc3MgQSBleHRlbmRzIFggeworICAgIHB1YmxpYyBjbGFzcyBCIGV4dGVuZHMgWCB7CisgICAgICAgIHsKKyAgICAgICAgICAgIG1ldGhvZCgpOworICAgICAgICB9CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlSW5uZXIvc2NyMzAxMDYvYmVmb3JlL3AvWC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVJbm5lci9zY3IzMDEwNi9iZWZvcmUvcC9YLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjEzMzQ0OAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlSW5uZXIvc2NyMzAxMDYvYmVmb3JlL3AvWC5qYXZhCkBAIC0wLDAgKzEsNSBAQAorcGFja2FnZSBwOworCitwdWJsaWMgY2xhc3MgWCB7CisgICAgdm9pZCBtZXRob2QoKTsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUlubmVyL3RvT3RoZXJQYWNrYWdlL2FmdGVyL3BhY2thZ2UxL091dGVyQ2xhc3MuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlSW5uZXIvdG9PdGhlclBhY2thZ2UvYWZ0ZXIvcGFja2FnZTEvT3V0ZXJDbGFzcy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg5MDgxMzYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUlubmVyL3RvT3RoZXJQYWNrYWdlL2FmdGVyL3BhY2thZ2UxL091dGVyQ2xhc3MuamF2YQpAQCAtMCwwICsxLDggQEAKK3BhY2thZ2UgcGFja2FnZTE7CisKK2ltcG9ydCBwYWNrYWdlMi5Jbm5lckNsYXNzOworCitwdWJsaWMgY2xhc3MgT3V0ZXJDbGFzcyB7CisgICAgcHJpdmF0ZSBJbm5lckNsYXNzIGluc3RhbmNlID0gbmV3IElubmVyQ2xhc3MoKTsKKworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVJbm5lci90b090aGVyUGFja2FnZS9hZnRlci9wYWNrYWdlMi9Jbm5lckNsYXNzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUlubmVyL3RvT3RoZXJQYWNrYWdlL2FmdGVyL3BhY2thZ2UyL0lubmVyQ2xhc3MuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNTg5NGZhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVJbm5lci90b090aGVyUGFja2FnZS9hZnRlci9wYWNrYWdlMi9Jbm5lckNsYXNzLmphdmEKQEAgLTAsMCArMSwzIEBACitwYWNrYWdlIHBhY2thZ2UyOworCitwdWJsaWMgY2xhc3MgSW5uZXJDbGFzcyB7IH0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUlubmVyL3RvT3RoZXJQYWNrYWdlL2FmdGVyL3BhY2thZ2UyL2VtcHR5RmlsZS50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUlubmVyL3RvT3RoZXJQYWNrYWdlL2FmdGVyL3BhY2thZ2UyL2VtcHR5RmlsZS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTY5ZGUyOQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlSW5uZXIvdG9PdGhlclBhY2thZ2UvYWZ0ZXIvcGFja2FnZTIvZW1wdHlGaWxlLnR4dApkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVJbm5lci90b090aGVyUGFja2FnZS9iZWZvcmUvcGFja2FnZTEvT3V0ZXJDbGFzcy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVJbm5lci90b090aGVyUGFja2FnZS9iZWZvcmUvcGFja2FnZTEvT3V0ZXJDbGFzcy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA2OTRlN2QKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUlubmVyL3RvT3RoZXJQYWNrYWdlL2JlZm9yZS9wYWNrYWdlMS9PdXRlckNsYXNzLmphdmEKQEAgLTAsMCArMSw3IEBACitwYWNrYWdlIHBhY2thZ2UxOworCitwdWJsaWMgY2xhc3MgT3V0ZXJDbGFzcyB7CisgICAgcHJpdmF0ZSBJbm5lckNsYXNzIGluc3RhbmNlID0gbmV3IElubmVyQ2xhc3MoKTsKKworICAgIHByaXZhdGUgc3RhdGljIGNsYXNzIElubmVyQ2xhc3MgeyB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUlubmVyL3RvT3RoZXJQYWNrYWdlL2JlZm9yZS9wYWNrYWdlMi9lbXB0eUZpbGUudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVJbm5lci90b090aGVyUGFja2FnZS9iZWZvcmUvcGFja2FnZTIvZW1wdHlGaWxlLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNjlkZTI5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVJbm5lci90b090aGVyUGFja2FnZS9iZWZvcmUvcGFja2FnZTIvZW1wdHlGaWxlLnR4dApkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVJbm5lci94bWxSZWZlcmVuY2VzL2FmdGVyL3BhY2sxL0lubmVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUlubmVyL3htbFJlZmVyZW5jZXMvYWZ0ZXIvcGFjazEvSW5uZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zOWRlZDhhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVJbm5lci94bWxSZWZlcmVuY2VzL2FmdGVyL3BhY2sxL0lubmVyLmphdmEKQEAgLTAsMCArMSw0IEBACitwYWNrYWdlIHBhY2sxOworCitwdWJsaWMgY2xhc3MgSW5uZXIgeworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlSW5uZXIveG1sUmVmZXJlbmNlcy9hZnRlci9wYWNrMS9PdXRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVJbm5lci94bWxSZWZlcmVuY2VzL2FmdGVyL3BhY2sxL091dGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTBkOGY5YwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlSW5uZXIveG1sUmVmZXJlbmNlcy9hZnRlci9wYWNrMS9PdXRlci5qYXZhCkBAIC0wLDAgKzEsNCBAQAorcGFja2FnZSBwYWNrMTsKKworcHVibGljIGNsYXNzIE91dGVyIHsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUlubmVyL3htbFJlZmVyZW5jZXMvYWZ0ZXIvcGFjazEveC54bWwgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUlubmVyL3htbFJlZmVyZW5jZXMvYWZ0ZXIvcGFjazEveC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWY3NDZkMAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlSW5uZXIveG1sUmVmZXJlbmNlcy9hZnRlci9wYWNrMS94LnhtbApAQCAtMCwwICsxIEBACis8eD5wYWNrMS5Jbm5lcjwveD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUlubmVyL3htbFJlZmVyZW5jZXMvYmVmb3JlL3BhY2sxL091dGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUlubmVyL3htbFJlZmVyZW5jZXMvYmVmb3JlL3BhY2sxL091dGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzYyMDI0YQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlSW5uZXIveG1sUmVmZXJlbmNlcy9iZWZvcmUvcGFjazEvT3V0ZXIuamF2YQpAQCAtMCwwICsxLDYgQEAKK3BhY2thZ2UgcGFjazE7CisKK3B1YmxpYyBjbGFzcyBPdXRlciB7CisgICAgcHVibGljIHN0YXRpYyBjbGFzcyBJbm5lciB7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlSW5uZXIveG1sUmVmZXJlbmNlcy9iZWZvcmUvcGFjazEveC54bWwgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUlubmVyL3htbFJlZmVyZW5jZXMvYmVmb3JlL3BhY2sxL3gueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM0MTkzOWUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUlubmVyL3htbFJlZmVyZW5jZXMvYmVmb3JlL3BhY2sxL3gueG1sCkBAIC0wLDAgKzEgQEAKKzx4PnBhY2sxLk91dGVyJElubmVyPC94PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlSW5zdGFuY2VNZXRob2QvQW5vbnltb3VzSGllcmFyY2h5LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUluc3RhbmNlTWV0aG9kL0Fub255bW91c0hpZXJhcmNoeS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI3NTBlMzkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUluc3RhbmNlTWV0aG9kL0Fub255bW91c0hpZXJhcmNoeS5qYXZhCkBAIC0wLDAgKzEsMzEgQEAKK3B1YmxpYyBjbGFzcyBUZXN0IHsKKworICAgIHB1YmxpYyBib29sZWFuIHBlcjxjYXJldD5mb3JtKEJhciBsKSB7CisgICAgICAgIGZpbmFsIERpYWxvZyBkaWFsb2cgPSBuZXcgRGlhbG9nKCkgeworICAgICAgICAgICAgICAgICAgICBwcm90ZWN0ZWQgdm9pZCBpbnZva2VSZWZhY3RvcmluZygpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICBkb1JlZmFjdG9yKCk7CisgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIH07CisgICAgICAgIGRpYWxvZy5zaG93KCk7CisgICAgICAgIHJldHVybiBkaWFsb2cuaXNPSygpOworICAgIH0KK30KKworY2xhc3MgQmFyIHsKK30KKworY2xhc3MgSUQgeworICAgIHZvaWQgZG9SZWZhY3RvcigpIHsKKworICAgIH0KK30KKworY2xhc3MgRGlhbG9nIGV4dGVuZHMgSUQgeworICAgIHB1YmxpYyB2b2lkIHNob3coKSB7CisgICAgfQorCisgICAgcHVibGljIGJvb2xlYW4gaXNPSygpIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUluc3RhbmNlTWV0aG9kL0Fub255bW91c0hpZXJhcmNoeS5qYXZhLmFmdGVyIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVJbnN0YW5jZU1ldGhvZC9Bbm9ueW1vdXNIaWVyYXJjaHkuamF2YS5hZnRlcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZmVlOTE4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVJbnN0YW5jZU1ldGhvZC9Bbm9ueW1vdXNIaWVyYXJjaHkuamF2YS5hZnRlcgpAQCAtMCwwICsxLDMxIEBACitwdWJsaWMgY2xhc3MgVGVzdCB7CisKK30KKworY2xhc3MgQmFyIHsKKyAgICBwdWJsaWMgYm9vbGVhbiBwZXJmb3JtKCkgeworICAgICAgICBmaW5hbCBEaWFsb2cgZGlhbG9nID0gbmV3IERpYWxvZygpIHsKKyAgICAgICAgICAgICAgICAgICAgcHJvdGVjdGVkIHZvaWQgaW52b2tlUmVmYWN0b3JpbmcoKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgZG9SZWZhY3RvcigpOworICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICB9OworICAgICAgICBkaWFsb2cuc2hvdygpOworICAgICAgICByZXR1cm4gZGlhbG9nLmlzT0soKTsKKyAgICB9Cit9CisKK2NsYXNzIElEIHsKKyAgICB2b2lkIGRvUmVmYWN0b3IoKSB7CisKKyAgICB9Cit9CisKK2NsYXNzIERpYWxvZyBleHRlbmRzIElEIHsKKyAgICBwdWJsaWMgdm9pZCBzaG93KCkgeworICAgIH0KKworICAgIHB1YmxpYyBib29sZWFuIGlzT0soKSB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVJbnN0YW5jZU1ldGhvZC9Db3JyZWN0VGhpc1JlZnMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlSW5zdGFuY2VNZXRob2QvQ29ycmVjdFRoaXNSZWZzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2QyYTc1ZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlSW5zdGFuY2VNZXRob2QvQ29ycmVjdFRoaXNSZWZzLmphdmEKQEAgLTAsMCArMSwxNCBAQAorY2xhc3MgQSB7CisgIHZvaWQgYmE8Y2FyZXQ+cihCIGIpIHsKKyAgICBuZXcgUnVubmFibGUoKSB7CisgICAgICBAT3ZlcnJpZGUKKyAgICAgIHB1YmxpYyB2b2lkIHJ1bigpIHsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKGIpOworICAgICAgfQorICAgIH0ucnVuKCk7CisgIH0KK30KKworY2xhc3MgQiB7CisKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUluc3RhbmNlTWV0aG9kL0NvcnJlY3RUaGlzUmVmcy5qYXZhLmFmdGVyIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVJbnN0YW5jZU1ldGhvZC9Db3JyZWN0VGhpc1JlZnMuamF2YS5hZnRlcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45OGQ5YjhmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVJbnN0YW5jZU1ldGhvZC9Db3JyZWN0VGhpc1JlZnMuamF2YS5hZnRlcgpAQCAtMCwwICsxLDE0IEBACitjbGFzcyBBIHsKK30KKworY2xhc3MgQiB7CisKKyAgICB2b2lkIGJhcigpIHsKKyAgICAgIG5ldyBSdW5uYWJsZSgpIHsKKyAgICAgICAgQE92ZXJyaWRlCisgICAgICAgIHB1YmxpYyB2b2lkIHJ1bigpIHsKKyAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oQi50aGlzKTsKKyAgICAgICAgfQorICAgICAgfS5ydW4oKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVJbnN0YW5jZU1ldGhvZC9Fc2NhbGF0ZVZpc2liaWxpdHkuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlSW5zdGFuY2VNZXRob2QvRXNjYWxhdGVWaXNpYmlsaXR5LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2MxZGE1NwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlSW5zdGFuY2VNZXRob2QvRXNjYWxhdGVWaXNpYmlsaXR5LmphdmEKQEAgLTAsMCArMSw5IEBACitwdWJsaWMgY2xhc3MgRXNjYWxhdGVWaXNpYmlsaXR5IHsKKyAgcHVibGljIHZvaWQgeChCIGIpeworICAgIHl5KGIpOworICB9CisgIHByaXZhdGUgdm9pZCB5PGNhcmV0PnkoQiBiKXsKKyAgfQorfQorCitjbGFzcyBCIHt9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVJbnN0YW5jZU1ldGhvZC9Fc2NhbGF0ZVZpc2liaWxpdHkuamF2YS5hZnRlciBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlSW5zdGFuY2VNZXRob2QvRXNjYWxhdGVWaXNpYmlsaXR5LmphdmEuYWZ0ZXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzA3ZDgwOAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlSW5zdGFuY2VNZXRob2QvRXNjYWxhdGVWaXNpYmlsaXR5LmphdmEuYWZ0ZXIKQEAgLTAsMCArMSwxMCBAQAorcHVibGljIGNsYXNzIEVzY2FsYXRlVmlzaWJpbGl0eSB7CisgIHB1YmxpYyB2b2lkIHgoQiBiKXsKKyAgICBiLnl5KCk7CisgIH0KK30KKworY2xhc3MgQiB7CisgICAgdm9pZCB5eSgpeworfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlSW5zdGFuY2VNZXRob2QvSURFQURFVjExMjU3LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUluc3RhbmNlTWV0aG9kL0lERUFERVYxMTI1Ny5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYyNWI1MjgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUluc3RhbmNlTWV0aG9kL0lERUFERVYxMTI1Ny5qYXZhCkBAIC0wLDAgKzEsNyBAQAorY2xhc3MgVGVzdDEgeworfQorY2xhc3MgVGVzdDIgeworICAgIHB1YmxpYyB2b2lkIDxjYXJldD50ZXN0KFRlc3QxIHQpIHsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJ0ZXN0Iik7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlSW5zdGFuY2VNZXRob2QvSURFQURFVjExMjU3LmphdmEuYWZ0ZXIgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUluc3RhbmNlTWV0aG9kL0lERUFERVYxMTI1Ny5qYXZhLmFmdGVyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE5ZTI4ZDUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUluc3RhbmNlTWV0aG9kL0lERUFERVYxMTI1Ny5qYXZhLmFmdGVyCkBAIC0wLDAgKzEsNyBAQAorY2xhc3MgVGVzdDEgeworICAgIHB1YmxpYyB2b2lkIHRlc3QoKSB7CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigidGVzdCIpOworICAgIH0KK30KK2NsYXNzIFRlc3QyIHsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUluc3RhbmNlTWV0aG9kL0ludGVyZmFjZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVJbnN0YW5jZU1ldGhvZC9JbnRlcmZhY2UuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZDMzZDgwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVJbnN0YW5jZU1ldGhvZC9JbnRlcmZhY2UuamF2YQpAQCAtMCwwICsxLDE4IEBACitpbnRlcmZhY2UgRm9yZWlnbiB7Cit9CisKK2NsYXNzIEZvcmVpZ25JbXBsIGltcGxlbWVudHMgRm9yZWlnbiB7Cit9CisKKworcHVibGljIGFic3RyYWN0IGNsYXNzIFRlc3QxIHsKKyAgICBpbnQgZmllbGQ7CisKKyAgICB2b2lkIDxjYXJldD5mb28gKEZvcmVpZ24gZikgeworICAgICAgICBmaWVsZCsrOworICAgIH0KKworICAgIHZvaWQgYmFyICgpIHsKKyAgICAgICAgZm9vKG5ldyBGb3JlaWduSW1wbCgpKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVJbnN0YW5jZU1ldGhvZC9JbnRlcmZhY2UuamF2YS5hZnRlciBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlSW5zdGFuY2VNZXRob2QvSW50ZXJmYWNlLmphdmEuYWZ0ZXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjY1MTQyYQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlSW5zdGFuY2VNZXRob2QvSW50ZXJmYWNlLmphdmEuYWZ0ZXIKQEAgLTAsMCArMSwxOSBAQAoraW50ZXJmYWNlIEZvcmVpZ24geworICAgIHZvaWQgZm9vKFRlc3QxIHRlc3QxKTsKK30KKworY2xhc3MgRm9yZWlnbkltcGwgaW1wbGVtZW50cyBGb3JlaWduIHsKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgdm9pZCBmb28oVGVzdDEgdGVzdDEpIHsKKyAgICAgICAgdGVzdDEuZmllbGQrKzsKKyAgICB9Cit9CisKKworcHVibGljIGFic3RyYWN0IGNsYXNzIFRlc3QxIHsKKyAgICBpbnQgZmllbGQ7CisKKyAgICB2b2lkIGJhciAoKSB7CisgICAgICAgIG5ldyBGb3JlaWduSW1wbCgpLmZvbyh0aGlzKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVJbnN0YW5jZU1ldGhvZC9KYXZhZG9jLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUluc3RhbmNlTWV0aG9kL0phdmFkb2MuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNDhkNWNhNwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlSW5zdGFuY2VNZXRob2QvSmF2YWRvYy5qYXZhCkBAIC0wLDAgKzEsMTggQEAKK2NsYXNzIEZvcmVpZ24geworfQorCitwdWJsaWMgYWJzdHJhY3QgY2xhc3MgVGVzdDEgeworCisgICAgLyoqCisgICAgICogQHBhcmFtIGYKKyAgICAgKi8KKyAgICB2b2lkIDxjYXJldD5mb28gKEZvcmVpZ24gZikgeworICAgICAgYmFyKCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogQHNlZSAjZm9vKEZvcmVpZ24pCisgICAgICovCisgICAgdm9pZCBiYXIgKCkgeworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUluc3RhbmNlTWV0aG9kL0phdmFkb2MuamF2YS5hZnRlciBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlSW5zdGFuY2VNZXRob2QvSmF2YWRvYy5qYXZhLmFmdGVyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgxNzBkYmQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUluc3RhbmNlTWV0aG9kL0phdmFkb2MuamF2YS5hZnRlcgpAQCAtMCwwICsxLDE3IEBACitjbGFzcyBGb3JlaWduIHsKKyAgICAvKioKKyAgICAgKiBAcGFyYW0gdGVzdDEKKyAgICAgKi8KKyAgICB2b2lkIGZvbyhUZXN0MSB0ZXN0MSkgeworICAgICAgdGVzdDEuYmFyKCk7CisgICAgfQorfQorCitwdWJsaWMgYWJzdHJhY3QgY2xhc3MgVGVzdDEgeworCisgICAgLyoqCisgICAgICogQHNlZSBGb3JlaWduI2ZvbyhUZXN0MSkKKyAgICAgKi8KKyAgICB2b2lkIGJhciAoKSB7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlSW5zdGFuY2VNZXRob2QvTWV0aG9kUmVmZXJlbmNlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUluc3RhbmNlTWV0aG9kL01ldGhvZFJlZmVyZW5jZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIyMTIzODEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUluc3RhbmNlTWV0aG9kL01ldGhvZFJlZmVyZW5jZS5qYXZhCkBAIC0wLDAgKzEsMTYgQEAKK2ludGVyZmFjZSBTQU0geworICBTdHJpbmcgbShNZXRob2RSZWZlcmVuY2U8U3RyaW5nPiBmLCBGIGYxKTsKK30KKworCitjbGFzcyBGIHt9CisKK2NsYXNzIE1ldGhvZFJlZmVyZW5jZTxYPiB7CisgIFN0cmluZyBnZTxjYXJldD50WChGIGYxKSB7CisgICAgcmV0dXJuIG51bGw7CisgIH0KKworICBzdGF0aWMgdm9pZCB0ZXN0KCkgeworICAgIFNBTSBzID0gTWV0aG9kUmVmZXJlbmNlPFN0cmluZz46OmdldFg7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUluc3RhbmNlTWV0aG9kL05vR2VuZXJpY3MuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlSW5zdGFuY2VNZXRob2QvTm9HZW5lcmljcy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUyMmVjMTMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUluc3RhbmNlTWV0aG9kL05vR2VuZXJpY3MuamF2YQpAQCAtMCwwICsxLDkgQEAKK2NsYXNzIFlvWW88VD4geworICAgIHByaXZhdGUgWW9Zb1lvIG15WW9Zb1lvOworCisgICAgdm9pZCA8Y2FyZXQ+Zm9vICgpIHsKKyAgICAgICAgbXlZb1lvWW8uZ2V0Q2xhc3MoKTsKKyAgICB9Cit9CisKK2NsYXNzIFlvWW9ZbyBleHRlbmRzIFlvWW8ge30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUluc3RhbmNlTWV0aG9kL05vR2VuZXJpY3MuamF2YS5hZnRlciBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlSW5zdGFuY2VNZXRob2QvTm9HZW5lcmljcy5qYXZhLmFmdGVyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRmN2EzMjIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUluc3RhbmNlTWV0aG9kL05vR2VuZXJpY3MuamF2YS5hZnRlcgpAQCAtMCwwICsxLDEwIEBACitjbGFzcyBZb1lvPFQ+IHsKKyAgICBwcml2YXRlIFlvWW9ZbyBteVlvWW9ZbzsKKworfQorCitjbGFzcyBZb1lvWW8gZXh0ZW5kcyBZb1lvIHsKKyAgICB2b2lkIGZvbyAoKSB7CisgICAgICAgIGdldENsYXNzKCk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlSW5zdGFuY2VNZXRob2QvTm9UaGlzUGFyYW0uamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlSW5zdGFuY2VNZXRob2QvTm9UaGlzUGFyYW0uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MTkzZTc2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVJbnN0YW5jZU1ldGhvZC9Ob1RoaXNQYXJhbS5qYXZhCkBAIC0wLDAgKzEsOSBAQAorY2xhc3MgWW9ZbyB7CisgICAgcHJpdmF0ZSBZb1lvWW8gbXlZb1lvWW87CisKKyAgICB2b2lkIDxjYXJldD5mb28gKCkgeworICAgICAgICBteVlvWW9Zby5nZXRDbGFzcygpOworICAgIH0KK30KKworY2xhc3MgWW9Zb1lvIGV4dGVuZHMgWW9ZbyB7fQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlSW5zdGFuY2VNZXRob2QvTm9UaGlzUGFyYW0uamF2YS5hZnRlciBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlSW5zdGFuY2VNZXRob2QvTm9UaGlzUGFyYW0uamF2YS5hZnRlcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lOGVlYjAyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVJbnN0YW5jZU1ldGhvZC9Ob1RoaXNQYXJhbS5qYXZhLmFmdGVyCkBAIC0wLDAgKzEsMTAgQEAKK2NsYXNzIFlvWW8geworICAgIHByaXZhdGUgWW9Zb1lvIG15WW9Zb1lvOworCit9CisKK2NsYXNzIFlvWW9ZbyBleHRlbmRzIFlvWW8geworICAgIHZvaWQgZm9vICgpIHsKKyAgICAgICAgZ2V0Q2xhc3MoKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVJbnN0YW5jZU1ldGhvZC9PdmVybG9hZGluZ01ldGhvZHMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlSW5zdGFuY2VNZXRob2QvT3ZlcmxvYWRpbmdNZXRob2RzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDhjYmU3YgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlSW5zdGFuY2VNZXRob2QvT3ZlcmxvYWRpbmdNZXRob2RzLmphdmEKQEAgLTAsMCArMSwxOCBAQAorcHVibGljIGNsYXNzIEEgeworCisgICAgcHVibGljIHZvaWQgbTxjYXJldD4oQiBiKXsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKHRoaXMpOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNob3coQiBiKXsKKyAgICAgICAgbShiKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBtIChDIGMpeworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4odGhpcyk7CisgICAgfQorCit9CisKK2NsYXNzIEJ7fQorY2xhc3MgQ3t9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVJbnN0YW5jZU1ldGhvZC9PdmVybG9hZGluZ01ldGhvZHMuamF2YS5hZnRlciBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlSW5zdGFuY2VNZXRob2QvT3ZlcmxvYWRpbmdNZXRob2RzLmphdmEuYWZ0ZXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjVhZWEzNAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlSW5zdGFuY2VNZXRob2QvT3ZlcmxvYWRpbmdNZXRob2RzLmphdmEuYWZ0ZXIKQEAgLTAsMCArMSwxOCBAQAorcHVibGljIGNsYXNzIEEgeworCisgICAgcHVibGljIHZvaWQgc2hvdyhCIGIpeworICAgICAgICBiLm0odGhpcyk7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgbSAoQyBjKXsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKHRoaXMpOworICAgIH0KKworfQorCitjbGFzcyBCeworICAgIHB1YmxpYyB2b2lkIG0oQSBhKXsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKGEpOworICAgIH0KK30KK2NsYXNzIEN7fQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlSW5zdGFuY2VNZXRob2QvT3ZlcmxvYWRpbmdNZXRob2RzMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVJbnN0YW5jZU1ldGhvZC9PdmVybG9hZGluZ01ldGhvZHMxLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTNiNzkwMgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlSW5zdGFuY2VNZXRob2QvT3ZlcmxvYWRpbmdNZXRob2RzMS5qYXZhCkBAIC0wLDAgKzEsMTEgQEAKK2NsYXNzIEIgZXh0ZW5kcyBBIHsKKyAgdm9pZCBuPGNhcmV0PihDIGMpeworICAgIG0oKTsKKyAgfQorfQorCitjbGFzcyBBIHsKKyAgdm9pZCBtKCl7fQorfQorCitjbGFzcyBDIHt9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVJbnN0YW5jZU1ldGhvZC9PdmVybG9hZGluZ01ldGhvZHMxLmphdmEuYWZ0ZXIgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUluc3RhbmNlTWV0aG9kL092ZXJsb2FkaW5nTWV0aG9kczEuamF2YS5hZnRlcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYjE3NzA1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVJbnN0YW5jZU1ldGhvZC9PdmVybG9hZGluZ01ldGhvZHMxLmphdmEuYWZ0ZXIKQEAgLTAsMCArMSwxMiBAQAorY2xhc3MgQiBleHRlbmRzIEEgeworfQorCitjbGFzcyBBIHsKKyAgdm9pZCBtKCl7fQorfQorCitjbGFzcyBDIHsKKyAgICB2b2lkIG4oQiBiKXsKKyAgICAgIGIubSgpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUluc3RhbmNlTWV0aG9kL1BvbHlhZGljRXhwci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVJbnN0YW5jZU1ldGhvZC9Qb2x5YWRpY0V4cHIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zODdlZDVkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVJbnN0YW5jZU1ldGhvZC9Qb2x5YWRpY0V4cHIuamF2YQpAQCAtMCwwICsxLDIzIEBACitjbGFzcyBBIHsKKworICAgIHZvaWQgbihCIGIpIHsKKyAgICAgICAgbShiKTsKKyAgICB9CisKKyAgICB2b2lkIG08Y2FyZXQ+KEIgYikgeworICAgICAgICBTeXN0ZW0ub3V0LnByaW50KCJkaXNwbGF5IGZvciBtZSB0aGUgc2hhcGUiICsgdGhpcyArICIgIiArIGIuZ2V0SSgpICsgInRpbWVzIik7CisgICAgfQorfQorCitjbGFzcyBCIHsKKyAgICBwcml2YXRlIGZpbmFsIGludCBpOworCisgICAgcHVibGljIEIoaW50IGkpIHsKKyAgICAgICAgdGhpcy5pID0gaTsKKyAgICB9CisKKworICAgIHB1YmxpYyBpbnQgZ2V0SSgpIHsKKyAgICAgICAgcmV0dXJuIGk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlSW5zdGFuY2VNZXRob2QvUG9seWFkaWNFeHByLmphdmEuYWZ0ZXIgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUluc3RhbmNlTWV0aG9kL1BvbHlhZGljRXhwci5qYXZhLmFmdGVyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRjZDQ5ODcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUluc3RhbmNlTWV0aG9kL1BvbHlhZGljRXhwci5qYXZhLmFmdGVyCkBAIC0wLDAgKzEsMjQgQEAKK2NsYXNzIEEgeworCisgICAgdm9pZCBuKEIgYikgeworICAgICAgICBiLm0odGhpcyk7CisgICAgfQorCit9CisKK2NsYXNzIEIgeworICAgIHByaXZhdGUgZmluYWwgaW50IGk7CisKKyAgICBwdWJsaWMgQihpbnQgaSkgeworICAgICAgICB0aGlzLmkgPSBpOworICAgIH0KKworCisgICAgcHVibGljIGludCBnZXRJKCkgeworICAgICAgICByZXR1cm4gaTsKKyAgICB9CisKKyAgICB2b2lkIG0oQSBhKSB7CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnQoImRpc3BsYXkgZm9yIG1lIHRoZSBzaGFwZSIgKyBhICsgIiAiICsgZ2V0SSgpICsgInRpbWVzIik7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlSW5zdGFuY2VNZXRob2QvUXVhbGlmaWVkVGhpcy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVJbnN0YW5jZU1ldGhvZC9RdWFsaWZpZWRUaGlzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTE0M2IwOAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlSW5zdGFuY2VNZXRob2QvUXVhbGlmaWVkVGhpcy5qYXZhCkBAIC0wLDAgKzEsMTQgQEAKK2NsYXNzIEZvcmVpZ24geworfQorCitjbGFzcyBNb3ZlTWV0aG9kVGVzdCB7CisgICAgdm9pZCBiYXIoKSB7fQorCisgICAgdm9pZCA8Y2FyZXQ+Zm9vKGZpbmFsIEZvcmVpZ24gZm9yZWlnbikgeworICAgICAgICBjbGFzcyBJbm5lciB7CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgTW92ZU1ldGhvZFRlc3QudGhpcy5iYXIoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlSW5zdGFuY2VNZXRob2QvUXVhbGlmaWVkVGhpcy5qYXZhLmFmdGVyIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVJbnN0YW5jZU1ldGhvZC9RdWFsaWZpZWRUaGlzLmphdmEuYWZ0ZXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmI1OTQwYgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlSW5zdGFuY2VNZXRob2QvUXVhbGlmaWVkVGhpcy5qYXZhLmFmdGVyCkBAIC0wLDAgKzEsMTQgQEAKK2NsYXNzIEZvcmVpZ24geworICAgIHZvaWQgZm9vKE1vdmVNZXRob2RUZXN0IG1vdmVNZXRob2RUZXN0KSB7CisgICAgICAgIGNsYXNzIElubmVyIHsKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBtb3ZlTWV0aG9kVGVzdC5iYXIoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KKworY2xhc3MgTW92ZU1ldGhvZFRlc3QgeworICAgIHZvaWQgYmFyKCkge30KKworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVJbnN0YW5jZU1ldGhvZC9RdWFsaWZpZXJUb0FyZzEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlSW5zdGFuY2VNZXRob2QvUXVhbGlmaWVyVG9BcmcxLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWQzY2NmOAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlSW5zdGFuY2VNZXRob2QvUXVhbGlmaWVyVG9BcmcxLmphdmEKQEAgLTAsMCArMSwyMyBAQAorY2xhc3MgQ29tbWFuZFF1ZXVlIHsKKworfQorCitjbGFzcyBDb21tYW5kTWFuYWdlciB7CisgICAgdm9pZCA8Y2FyZXQ+ZihDb21tYW5kUXVldWUgcSkgeworICAgIH0KKworICAgIHZvaWQgZygpIHsKKworICAgIH0KKworICAgIENvbW1hbmRRdWV1ZSBnZXRDb21tYW5kUXVldWUoKSB7CisgICAgICAgIHJldHVybiBudWxsOworICAgIH0KK30KKworY2xhc3MgQXBwbGljYXRpb24geworICAgIENvbW1hbmRNYW5hZ2VyIG15TWFuYWdlcjsKKyAgICB7CisgICAgICAgIG15TWFuYWdlci5mKG15TWFuYWdlci5nZXRDb21tYW5kUXVldWUoKSk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlSW5zdGFuY2VNZXRob2QvUXVhbGlmaWVyVG9BcmcxLmphdmEuYWZ0ZXIgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUluc3RhbmNlTWV0aG9kL1F1YWxpZmllclRvQXJnMS5qYXZhLmFmdGVyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJmYTMxMmYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUluc3RhbmNlTWV0aG9kL1F1YWxpZmllclRvQXJnMS5qYXZhLmFmdGVyCkBAIC0wLDAgKzEsMjMgQEAKK2NsYXNzIENvbW1hbmRRdWV1ZSB7CisKKyAgICB2b2lkIGYoKSB7CisgICAgfQorfQorCitjbGFzcyBDb21tYW5kTWFuYWdlciB7CisKKyAgICB2b2lkIGcoKSB7CisKKyAgICB9CisKKyAgICBDb21tYW5kUXVldWUgZ2V0Q29tbWFuZFF1ZXVlKCkgeworICAgICAgICByZXR1cm4gbnVsbDsKKyAgICB9Cit9CisKK2NsYXNzIEFwcGxpY2F0aW9uIHsKKyAgICBDb21tYW5kTWFuYWdlciBteU1hbmFnZXI7CisgICAgeworICAgICAgICBteU1hbmFnZXIuZ2V0Q29tbWFuZFF1ZXVlKCkuZigpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUluc3RhbmNlTWV0aG9kL1F1YWxpZmllclRvQXJnMi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVJbnN0YW5jZU1ldGhvZC9RdWFsaWZpZXJUb0FyZzIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MzAyMGZiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVJbnN0YW5jZU1ldGhvZC9RdWFsaWZpZXJUb0FyZzIuamF2YQpAQCAtMCwwICsxLDI0IEBACitjbGFzcyBDb21tYW5kUXVldWUgeworCit9CisKK2NsYXNzIENvbW1hbmRNYW5hZ2VyIHsKKyAgICB2b2lkIDxjYXJldD5mKENvbW1hbmRRdWV1ZSBxKSB7CisgICAgICBnKCk7CisgICAgfQorCisgICAgdm9pZCBnKCkgeworCisgICAgfQorCisgICAgQ29tbWFuZFF1ZXVlIGdldENvbW1hbmRRdWV1ZSgpIHsKKyAgICAgICAgcmV0dXJuIG51bGw7CisgICAgfQorfQorCitjbGFzcyBBcHBsaWNhdGlvbiB7CisgICAgQ29tbWFuZE1hbmFnZXIgbXlNYW5hZ2VyOworICAgIHsKKyAgICAgICAgbXlNYW5hZ2VyLmYobXlNYW5hZ2VyLmdldENvbW1hbmRRdWV1ZSgpKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVJbnN0YW5jZU1ldGhvZC9RdWFsaWZpZXJUb0FyZzIuamF2YS5hZnRlciBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlSW5zdGFuY2VNZXRob2QvUXVhbGlmaWVyVG9BcmcyLmphdmEuYWZ0ZXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTViZjVlNwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlSW5zdGFuY2VNZXRob2QvUXVhbGlmaWVyVG9BcmcyLmphdmEuYWZ0ZXIKQEAgLTAsMCArMSwyNCBAQAorY2xhc3MgQ29tbWFuZFF1ZXVlIHsKKworICAgIHZvaWQgZihDb21tYW5kTWFuYWdlciBjb21tYW5kTWFuYWdlcikgeworICAgICAgY29tbWFuZE1hbmFnZXIuZygpOworICAgIH0KK30KKworY2xhc3MgQ29tbWFuZE1hbmFnZXIgeworCisgICAgdm9pZCBnKCkgeworCisgICAgfQorCisgICAgQ29tbWFuZFF1ZXVlIGdldENvbW1hbmRRdWV1ZSgpIHsKKyAgICAgICAgcmV0dXJuIG51bGw7CisgICAgfQorfQorCitjbGFzcyBBcHBsaWNhdGlvbiB7CisgICAgQ29tbWFuZE1hbmFnZXIgbXlNYW5hZ2VyOworICAgIHsKKyAgICAgICAgbXlNYW5hZ2VyLmdldENvbW1hbmRRdWV1ZSgpLmYobXlNYW5hZ2VyKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVJbnN0YW5jZU1ldGhvZC9RdWFsaWZpZXJUb0FyZzMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlSW5zdGFuY2VNZXRob2QvUXVhbGlmaWVyVG9BcmczLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWM0YmQ3OAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlSW5zdGFuY2VNZXRob2QvUXVhbGlmaWVyVG9BcmczLmphdmEKQEAgLTAsMCArMSwyNCBAQAorY2xhc3MgQ29tbWFuZFF1ZXVlIHsKKworfQorCitjbGFzcyBDb21tYW5kTWFuYWdlciB7CisgICAgdm9pZCA8Y2FyZXQ+ZihDb21tYW5kUXVldWUgcSkgeworICAgICAgbm90aWZ5KCk7CisgICAgfQorCisgICAgdm9pZCBnKCkgeworCisgICAgfQorCisgICAgQ29tbWFuZFF1ZXVlIGdldENvbW1hbmRRdWV1ZSgpIHsKKyAgICAgICAgcmV0dXJuIG51bGw7CisgICAgfQorfQorCitjbGFzcyBBcHBsaWNhdGlvbiB7CisgICAgQ29tbWFuZE1hbmFnZXIgbXlNYW5hZ2VyOworICAgIHsKKyAgICAgICAgbXlNYW5hZ2VyLmYobXlNYW5hZ2VyLmdldENvbW1hbmRRdWV1ZSgpKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVJbnN0YW5jZU1ldGhvZC9RdWFsaWZpZXJUb0FyZzMuamF2YS5hZnRlciBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlSW5zdGFuY2VNZXRob2QvUXVhbGlmaWVyVG9BcmczLmphdmEuYWZ0ZXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWMzNWM3YgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlSW5zdGFuY2VNZXRob2QvUXVhbGlmaWVyVG9BcmczLmphdmEuYWZ0ZXIKQEAgLTAsMCArMSwyNCBAQAorY2xhc3MgQ29tbWFuZFF1ZXVlIHsKKworICAgIHZvaWQgZihDb21tYW5kTWFuYWdlciBjb21tYW5kTWFuYWdlcikgeworICAgICAgY29tbWFuZE1hbmFnZXIubm90aWZ5KCk7CisgICAgfQorfQorCitjbGFzcyBDb21tYW5kTWFuYWdlciB7CisKKyAgICB2b2lkIGcoKSB7CisKKyAgICB9CisKKyAgICBDb21tYW5kUXVldWUgZ2V0Q29tbWFuZFF1ZXVlKCkgeworICAgICAgICByZXR1cm4gbnVsbDsKKyAgICB9Cit9CisKK2NsYXNzIEFwcGxpY2F0aW9uIHsKKyAgICBDb21tYW5kTWFuYWdlciBteU1hbmFnZXI7CisgICAgeworICAgICAgICBteU1hbmFnZXIuZ2V0Q29tbWFuZFF1ZXVlKCkuZihteU1hbmFnZXIpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUluc3RhbmNlTWV0aG9kL1F1YWxpZnlGaWVsZC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVJbnN0YW5jZU1ldGhvZC9RdWFsaWZ5RmllbGQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMzk3MjczCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVJbnN0YW5jZU1ldGhvZC9RdWFsaWZ5RmllbGQuamF2YQpAQCAtMCwwICsxLDEzIEBACitjbGFzcyBGbGltIHsKKyAgICBGbGFtIGZsYW0gPSBuZXcgRmxhbSgpOworCisgICAgdm9pZCBiZTxjYXJldD5lcCgpIHt9CisKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CisgICAgICAgIEZsaW0gZmxpbSA9IG5ldyBGbGltKCk7CisgICAgICAgIGZsaW0uYmVlcCgpOworICAgIH0KK30KKworY2xhc3MgRmxhbSB7Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUluc3RhbmNlTWV0aG9kL1F1YWxpZnlGaWVsZC5qYXZhLmFmdGVyIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVJbnN0YW5jZU1ldGhvZC9RdWFsaWZ5RmllbGQuamF2YS5hZnRlcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YWEwMDk1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVJbnN0YW5jZU1ldGhvZC9RdWFsaWZ5RmllbGQuamF2YS5hZnRlcgpAQCAtMCwwICsxLDEyIEBACitjbGFzcyBGbGltIHsKKyAgICBGbGFtIGZsYW0gPSBuZXcgRmxhbSgpOworCisgICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgeworICAgICAgICBGbGltIGZsaW0gPSBuZXcgRmxpbSgpOworICAgICAgICBmbGltLmZsYW0uYmVlcCgpOworICAgIH0KK30KKworY2xhc3MgRmxhbSB7CisgICAgdm9pZCBiZWVwKCkge30KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlSW5zdGFuY2VNZXRob2QvUXVhbGlmeUZpZWxkQWNjZXNzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUluc3RhbmNlTWV0aG9kL1F1YWxpZnlGaWVsZEFjY2Vzcy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJiMzJiY2YKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUluc3RhbmNlTWV0aG9kL1F1YWxpZnlGaWVsZEFjY2Vzcy5qYXZhCkBAIC0wLDAgKzEsMTIgQEAKK3B1YmxpYyBjbGFzcyBUZXN0IHsKKworICAgIHByaXZhdGUgQmFyIGJhciA9IG5ldyBCYXIoKTsKKworICAgIHB1YmxpYyB2b2lkIDxjYXJldD5mb28oaW50IHgpIHsKKyAgICAgICAgYmFyLnggPSB4OworICAgIH0KKworICAgIHByaXZhdGUgc3RhdGljIGNsYXNzIEJhciB7CisgICAgICAgIHByaXZhdGUgaW50IHg7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVJbnN0YW5jZU1ldGhvZC9RdWFsaWZ5RmllbGRBY2Nlc3MuamF2YS5hZnRlciBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlSW5zdGFuY2VNZXRob2QvUXVhbGlmeUZpZWxkQWNjZXNzLmphdmEuYWZ0ZXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTNmZGQzYQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlSW5zdGFuY2VNZXRob2QvUXVhbGlmeUZpZWxkQWNjZXNzLmphdmEuYWZ0ZXIKQEAgLTAsMCArMSwxMiBAQAorcHVibGljIGNsYXNzIFRlc3QgeworCisgICAgcHJpdmF0ZSBCYXIgYmFyID0gbmV3IEJhcigpOworCisgICAgcHJpdmF0ZSBzdGF0aWMgY2xhc3MgQmFyIHsKKyAgICAgICAgcHJpdmF0ZSBpbnQgeDsKKworICAgICAgICBwdWJsaWMgdm9pZCBmb28oaW50IHgpIHsKKyAgICAgICAgICAgIHRoaXMueCA9IHg7CisgICAgICAgIH0KKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUluc3RhbmNlTWV0aG9kL1F1YWxpZnlUaGlzSGllcmFyY2h5LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUluc3RhbmNlTWV0aG9kL1F1YWxpZnlUaGlzSGllcmFyY2h5LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODFmYzdlMAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlSW5zdGFuY2VNZXRob2QvUXVhbGlmeVRoaXNIaWVyYXJjaHkuamF2YQpAQCAtMCwwICsxLDE4IEBACitwdWJsaWMgY2xhc3MgRCB7CisgIHByb3RlY3RlZCB2b2lkIGlBbVByb3RlY3RlZCgpIHsKKyAgfQorfQorCitjbGFzcyBESW1wbCBleHRlbmRzIEQgeworICB2b2lkIGY8Y2FyZXQ+b28oRiBmKSB7CisgICAgY2xhc3MgTXlSdW5uYWJsZSB7CisgICAgICBwdWJsaWMgdm9pZCBydW4oKSB7CisgICAgICAgIGlBbVByb3RlY3RlZCgpOworICAgICAgfQorICAgIH0KKyAgfQorfQorCitjbGFzcyBGIHsKKworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlSW5zdGFuY2VNZXRob2QvUXVhbGlmeVRoaXNIaWVyYXJjaHkuamF2YS5hZnRlciBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlSW5zdGFuY2VNZXRob2QvUXVhbGlmeVRoaXNIaWVyYXJjaHkuamF2YS5hZnRlcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZTJkYTEwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVJbnN0YW5jZU1ldGhvZC9RdWFsaWZ5VGhpc0hpZXJhcmNoeS5qYXZhLmFmdGVyCkBAIC0wLDAgKzEsMTggQEAKK3B1YmxpYyBjbGFzcyBEIHsKKyAgcHJvdGVjdGVkIHZvaWQgaUFtUHJvdGVjdGVkKCkgeworICB9Cit9CisKK2NsYXNzIERJbXBsIGV4dGVuZHMgRCB7Cit9CisKK2NsYXNzIEYgeworCisgICAgdm9pZCBmb28oRCBkKSB7CisgICAgICBjbGFzcyBNeVJ1bm5hYmxlIHsKKyAgICAgICAgcHVibGljIHZvaWQgcnVuKCkgeworICAgICAgICAgIGQuaUFtUHJvdGVjdGVkKCk7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVJbnN0YW5jZU1ldGhvZC9SZWN1cnNpdmUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlSW5zdGFuY2VNZXRob2QvUmVjdXJzaXZlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGU4MWVmNQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlSW5zdGFuY2VNZXRob2QvUmVjdXJzaXZlLmphdmEKQEAgLTAsMCArMSw2IEBACitwdWJsaWMgY2xhc3MgTW92ZU1ldGhvZFRlc3QgeworICB2b2lkIDxjYXJldD5mb28gKE1vdmVNZXRob2RUZXN0IGYpIHsKKyAgICBmb28oZik7CisgICAgZi5mb28oZik7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUluc3RhbmNlTWV0aG9kL1JlY3Vyc2l2ZS5qYXZhLmFmdGVyIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVJbnN0YW5jZU1ldGhvZC9SZWN1cnNpdmUuamF2YS5hZnRlcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MmNiYjdiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVJbnN0YW5jZU1ldGhvZC9SZWN1cnNpdmUuamF2YS5hZnRlcgpAQCAtMCwwICsxLDYgQEAKK3B1YmxpYyBjbGFzcyBNb3ZlTWV0aG9kVGVzdCB7CisgICAgdm9pZCBmb28oKSB7CisgICAgICBmb28oKTsKKyAgICAgIGZvbygpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUluc3RhbmNlTWV0aG9kL1JlY3Vyc2l2ZTEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlSW5zdGFuY2VNZXRob2QvUmVjdXJzaXZlMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdkNGNiNTgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUluc3RhbmNlTWV0aG9kL1JlY3Vyc2l2ZTEuamF2YQpAQCAtMCwwICsxLDEzIEBACitjbGFzcyBGaXJzdENsYXNzIHsKKyAgICB2b2lkIDxjYXJldD54KFNlY29uZENsYXNzIHNjKSB7CisgICAgICAgIGlmIChzYyAhPSBudWxsKSB4KHNjLmcoKSk7CisgICAgfQorCisgICAgdm9pZCB5KCkgeworICAgICAgICB4KG5ldyBTZWNvbmRDbGFzcygpKTsKKyAgICB9Cit9CisKK2NsYXNzIFNlY29uZENsYXNzIHsKKyAgICBTZWNvbmRDbGFzcyBnKCkgeyByZXR1cm4gbnVsbDsgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlSW5zdGFuY2VNZXRob2QvUmVjdXJzaXZlMS5qYXZhLmFmdGVyIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVJbnN0YW5jZU1ldGhvZC9SZWN1cnNpdmUxLmphdmEuYWZ0ZXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTljZTg0ZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlSW5zdGFuY2VNZXRob2QvUmVjdXJzaXZlMS5qYXZhLmFmdGVyCkBAIC0wLDAgKzEsMTQgQEAKK2NsYXNzIEZpcnN0Q2xhc3MgeworCisgICAgdm9pZCB5KCkgeworICAgICAgICBuZXcgU2Vjb25kQ2xhc3MoKS54KCk7CisgICAgfQorfQorCitjbGFzcyBTZWNvbmRDbGFzcyB7CisgICAgU2Vjb25kQ2xhc3MgZygpIHsgcmV0dXJuIG51bGw7IH0KKworICAgIHZvaWQgeCgpIHsKKyAgICAgICAgaWYgKHRoaXMgIT0gbnVsbCkgZygpLngoKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVJbnN0YW5jZU1ldGhvZC9TYW1lTmFtZXMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlSW5zdGFuY2VNZXRob2QvU2FtZU5hbWVzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGU0ZjYxMgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlSW5zdGFuY2VNZXRob2QvU2FtZU5hbWVzLmphdmEKQEAgLTAsMCArMSwxMyBAQAorcHVibGljIGNsYXNzIEEgeworICAgIHZvaWQgZjxjYXJldD5vbyhCIGIpIHsKKyAgICAgIGIuZm9vKCIiKTsKKyAgICB9Cit9CisKK2NsYXNzIEIgeworICB2b2lkIGZvbyhTdHJpbmcgcykgeworICAgIFN5c3RlbS5vdXQucHJpbnRsbihzKTsKKyAgfQorfQorCisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlSW5zdGFuY2VNZXRob2QvU2FtZU5hbWVzLmphdmEuYWZ0ZXIgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUluc3RhbmNlTWV0aG9kL1NhbWVOYW1lcy5qYXZhLmFmdGVyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRmNDNiNWEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUluc3RhbmNlTWV0aG9kL1NhbWVOYW1lcy5qYXZhLmFmdGVyCkBAIC0wLDAgKzEsMTQgQEAKK3B1YmxpYyBjbGFzcyBBIHsKK30KKworY2xhc3MgQiB7CisgIHZvaWQgZm9vKFN0cmluZyBzKSB7CisgICAgU3lzdGVtLm91dC5wcmludGxuKHMpOworICB9CisKKyAgICB2b2lkIGZvbygpIHsKKyAgICAgIGZvbygiIik7CisgICAgfQorfQorCisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlSW5zdGFuY2VNZXRob2QvU2FtZU5hbWVzUmVjdXJzaW9uLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUluc3RhbmNlTWV0aG9kL1NhbWVOYW1lc1JlY3Vyc2lvbi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQzMmQwNWMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUluc3RhbmNlTWV0aG9kL1NhbWVOYW1lc1JlY3Vyc2lvbi5qYXZhCkBAIC0wLDAgKzEsMTYgQEAKK3B1YmxpYyBjbGFzcyBBIHsKKyAgICB2b2lkIGY8Y2FyZXQ+b28oQiBiKSB7CisgICAgICBiLmZvbygiIik7CisgICAgICBpZiAoZmFsc2UpIHsKKyAgICAgICAgZm9vKGIpOworICAgICAgfQorICB9Cit9CisKK2NsYXNzIEIgeworICB2b2lkIGZvbyhTdHJpbmcgcykgeworICAgIFN5c3RlbS5vdXQucHJpbnRsbihzKTsKKyAgfQorfQorCisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlSW5zdGFuY2VNZXRob2QvU2FtZU5hbWVzUmVjdXJzaW9uLmphdmEuYWZ0ZXIgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUluc3RhbmNlTWV0aG9kL1NhbWVOYW1lc1JlY3Vyc2lvbi5qYXZhLmFmdGVyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY0NWM5NWMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUluc3RhbmNlTWV0aG9kL1NhbWVOYW1lc1JlY3Vyc2lvbi5qYXZhLmFmdGVyCkBAIC0wLDAgKzEsMTcgQEAKK3B1YmxpYyBjbGFzcyBBIHsKK30KKworY2xhc3MgQiB7CisgIHZvaWQgZm9vKFN0cmluZyBzKSB7CisgICAgU3lzdGVtLm91dC5wcmludGxuKHMpOworICB9CisKKyAgICB2b2lkIGZvbygpIHsKKyAgICAgIGZvbygiIik7CisgICAgICBpZiAoZmFsc2UpIHsKKyAgICAgICAgZm9vKCk7CisgICAgICB9CisgIH0KK30KKworCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUluc3RhbmNlTWV0aG9kL1NpbXBsZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVJbnN0YW5jZU1ldGhvZC9TaW1wbGUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNDM1ZDUwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVJbnN0YW5jZU1ldGhvZC9TaW1wbGUuamF2YQpAQCAtMCwwICsxLDE0IEBACitjbGFzcyBGb3JlaWduIHsKK30KKworY2xhc3MgVGVzdCB7CisgICAgaW50IGZpZWxkOworCisgICAgdm9pZCA8Y2FyZXQ+Zm9vIChGb3JlaWduIGYpIHsKKyAgICAgICAgZmllbGQrKzsKKyAgICB9CisKKyAgICB2b2lkIGJhciAoKSB7CisgICAgICAgIGZvbyhuZXcgRm9yZWlnbigpKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUluc3RhbmNlTWV0aG9kL1NpbXBsZS5qYXZhLmFmdGVyIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVJbnN0YW5jZU1ldGhvZC9TaW1wbGUuamF2YS5hZnRlcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MWY4MWI2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVJbnN0YW5jZU1ldGhvZC9TaW1wbGUuamF2YS5hZnRlcgpAQCAtMCwwICsxLDEzIEBACitjbGFzcyBGb3JlaWduIHsKKyAgICB2b2lkIGZvbyhUZXN0IHRlc3QpIHsKKyAgICAgICAgdGVzdC5maWVsZCsrOworICAgIH0KK30KKworY2xhc3MgVGVzdCB7CisgICAgaW50IGZpZWxkOworCisgICAgdm9pZCBiYXIgKCkgeworICAgICAgICBuZXcgRm9yZWlnbigpLmZvbyh0aGlzKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUluc3RhbmNlTWV0aG9kL1NpbXBsZVdpdGhUYXJnZXRGaWVsZC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVJbnN0YW5jZU1ldGhvZC9TaW1wbGVXaXRoVGFyZ2V0RmllbGQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMmQzNzU3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVJbnN0YW5jZU1ldGhvZC9TaW1wbGVXaXRoVGFyZ2V0RmllbGQuamF2YQpAQCAtMCwwICsxLDE1IEBACitjbGFzcyBGb3JlaWduIHsKK30KKworcHVibGljIGFic3RyYWN0IGNsYXNzIFRlc3QxIHsKKyAgICBpbnQgZmllbGQ7CisgICAgRm9yZWlnbiBteUZvcmVpZ247CisKKyAgICB2b2lkIDxjYXJldD5mb28gKCkgeworICAgICAgICBmaWVsZCsrOworICAgIH0KKworICAgIHZvaWQgYmFyICgpIHsKKyAgICAgICAgZm9vKCk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVJbnN0YW5jZU1ldGhvZC9TaW1wbGVXaXRoVGFyZ2V0RmllbGQuamF2YS5hZnRlciBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlSW5zdGFuY2VNZXRob2QvU2ltcGxlV2l0aFRhcmdldEZpZWxkLmphdmEuYWZ0ZXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmZhODM4MgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlSW5zdGFuY2VNZXRob2QvU2ltcGxlV2l0aFRhcmdldEZpZWxkLmphdmEuYWZ0ZXIKQEAgLTAsMCArMSwxNCBAQAorY2xhc3MgRm9yZWlnbiB7CisgICAgdm9pZCBmb28oVGVzdDEgdGVzdDEpIHsKKyAgICAgICAgdGVzdDEuZmllbGQrKzsKKyAgICB9Cit9CisKK3B1YmxpYyBhYnN0cmFjdCBjbGFzcyBUZXN0MSB7CisgICAgaW50IGZpZWxkOworICAgIEZvcmVpZ24gbXlGb3JlaWduOworCisgICAgdm9pZCBiYXIgKCkgeworICAgICAgICBteUZvcmVpZ24uZm9vKHRoaXMpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlSW5zdGFuY2VNZXRob2QvU3RyaXBGaWVsZFF1YWxpZmllci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVJbnN0YW5jZU1ldGhvZC9TdHJpcEZpZWxkUXVhbGlmaWVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTM3NjlhYQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlSW5zdGFuY2VNZXRob2QvU3RyaXBGaWVsZFF1YWxpZmllci5qYXZhCkBAIC0wLDAgKzEsMTIgQEAKK3B1YmxpYyBjbGFzcyBUZXN0IHsKKworICAgIHByaXZhdGUgQmFyIGJhciA9IG5ldyBCYXIoKTsKKworICAgIHB1YmxpYyB2b2lkIDxjYXJldD5mb28oaW50IHkpIHsKKyAgICAgICAgYmFyLnggPSB5OworICAgIH0KKworICAgIHByaXZhdGUgc3RhdGljIGNsYXNzIEJhciB7CisgICAgICAgIHByaXZhdGUgaW50IHg7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVJbnN0YW5jZU1ldGhvZC9TdHJpcEZpZWxkUXVhbGlmaWVyLmphdmEuYWZ0ZXIgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUluc3RhbmNlTWV0aG9kL1N0cmlwRmllbGRRdWFsaWZpZXIuamF2YS5hZnRlcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YTFhYmYwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVJbnN0YW5jZU1ldGhvZC9TdHJpcEZpZWxkUXVhbGlmaWVyLmphdmEuYWZ0ZXIKQEAgLTAsMCArMSwxMiBAQAorcHVibGljIGNsYXNzIFRlc3QgeworCisgICAgcHJpdmF0ZSBCYXIgYmFyID0gbmV3IEJhcigpOworCisgICAgcHJpdmF0ZSBzdGF0aWMgY2xhc3MgQmFyIHsKKyAgICAgICAgcHJpdmF0ZSBpbnQgeDsKKworICAgICAgICBwdWJsaWMgdm9pZCBmb28oaW50IHkpIHsKKyAgICAgICAgICAgIHggPSB5OworICAgICAgICB9CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVJbnN0YW5jZU1ldGhvZC9UaGlzSW5Bbm9ueW1vdXMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlSW5zdGFuY2VNZXRob2QvVGhpc0luQW5vbnltb3VzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODc1NDc1ZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlSW5zdGFuY2VNZXRob2QvVGhpc0luQW5vbnltb3VzLmphdmEKQEAgLTAsMCArMSwxNiBAQAorcHVibGljIGNsYXNzIFRlc3QgeworICAgIHByaXZhdGUgdm9pZCBwcmVwYXJlPGNhcmV0PkFub255bW91c0NsYXNzZXMoSmV0RWxlbWVudCBhQ2xhc3MpIHsKKyAgICAgICAgYUNsYXNzLmFjY2VwdENoaWxkcmVuKG5ldyBKZXRWaXNpdG9yKCkgeworICAgICAgICAgICAgcHVibGljIHZvaWQgdmlzaXRKZXRFbGVtZW50KEpldEVsZW1lbnQgZWxlbWVudCkgeworICAgICAgICAgICAgICAgIGVsZW1lbnQuYWNjZXB0Q2hpbGRyZW4odGhpcyk7CisgICAgICAgICAgICB9CisgICAgICAgIH0pOworICAgIH0KK30KKworCitjbGFzcyBKZXRFbGVtZW50IHsKKyAgICB2b2lkIGFjY2VwdENoaWxkcmVuKEpldFZpc2l0b3Igdikge30KK30KKworY2xhc3MgSmV0VmlzaXRvciB7fQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlSW5zdGFuY2VNZXRob2QvVGhpc0luQW5vbnltb3VzLmphdmEuYWZ0ZXIgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUluc3RhbmNlTWV0aG9kL1RoaXNJbkFub255bW91cy5qYXZhLmFmdGVyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkxODA5OGYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUluc3RhbmNlTWV0aG9kL1RoaXNJbkFub255bW91cy5qYXZhLmFmdGVyCkBAIC0wLDAgKzEsMTcgQEAKK3B1YmxpYyBjbGFzcyBUZXN0IHsKK30KKworCitjbGFzcyBKZXRFbGVtZW50IHsKKyAgICB2b2lkIGFjY2VwdENoaWxkcmVuKEpldFZpc2l0b3Igdikge30KKworICAgIHByaXZhdGUgdm9pZCBwcmVwYXJlQW5vbnltb3VzQ2xhc3NlcygpIHsKKyAgICAgICAgYWNjZXB0Q2hpbGRyZW4obmV3IEpldFZpc2l0b3IoKSB7CisgICAgICAgICAgICBwdWJsaWMgdm9pZCB2aXNpdEpldEVsZW1lbnQoSmV0RWxlbWVudCBlbGVtZW50KSB7CisgICAgICAgICAgICAgICAgZWxlbWVudC5hY2NlcHRDaGlsZHJlbih0aGlzKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSk7CisgICAgfQorfQorCitjbGFzcyBKZXRWaXNpdG9yIHt9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVJbnN0YW5jZU1ldGhvZC9Ud29QYXJhbXMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlSW5zdGFuY2VNZXRob2QvVHdvUGFyYW1zLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWQxZTVlNQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlSW5zdGFuY2VNZXRob2QvVHdvUGFyYW1zLmphdmEKQEAgLTAsMCArMSwxMiBAQAorY2xhc3MgRm9yZWlnbiB7Cit9CisKK2NsYXNzIE1vdmVNZXRob2RUZXN0IHsKKyAgICB2b2lkIGJhcihJbm5lciBpbm5lcikge30KKworICAgIGNsYXNzIElubmVyIHsKKyAgICAgIHZvaWQgPGNhcmV0PmZvbyhmaW5hbCBGb3JlaWduIGZvcmVpZ24pIHsKKyAgICAgICAgIGJhciAodGhpcyk7CisgICAgICB9CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVJbnN0YW5jZU1ldGhvZC9Ud29QYXJhbXMuamF2YS5hZnRlciBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlSW5zdGFuY2VNZXRob2QvVHdvUGFyYW1zLmphdmEuYWZ0ZXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmRjMGRmNAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlSW5zdGFuY2VNZXRob2QvVHdvUGFyYW1zLmphdmEuYWZ0ZXIKQEAgLTAsMCArMSwxMiBAQAorY2xhc3MgRm9yZWlnbiB7CisgICAgdm9pZCBmb28oTW92ZU1ldGhvZFRlc3QgbW92ZU1ldGhvZFRlc3QsIE1vdmVNZXRob2RUZXN0LklubmVyIGlubmVyKSB7CisgICAgICAgbW92ZU1ldGhvZFRlc3QuYmFyIChpbm5lcik7CisgICAgfQorfQorCitjbGFzcyBNb3ZlTWV0aG9kVGVzdCB7CisgICAgdm9pZCBiYXIoSW5uZXIgaW5uZXIpIHt9CisKKyAgICBjbGFzcyBJbm5lciB7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVJbnN0YW5jZU1ldGhvZC9XaXRoSW5uZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlSW5zdGFuY2VNZXRob2QvV2l0aElubmVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTBkYzNkNAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlSW5zdGFuY2VNZXRob2QvV2l0aElubmVyLmphdmEKQEAgLTAsMCArMSwxNiBAQAorY2xhc3MgRm9yZWlnbiB7CisgICAgY2xhc3MgSW5uZXIge30KK30KKworCitwdWJsaWMgYWJzdHJhY3QgY2xhc3MgVGVzdDEgeworICAgIHZvaWQgPGNhcmV0PmZvbyAoRm9yZWlnbiBmLCBJbm5lciBpKSB7CisgICAgICBuZXcgSW5uZXIoKTsKKyAgICB9CisKKyAgICBjbGFzcyBJbm5lciB7fQorCisgICAgdm9pZCBiYXIgKCkgeworICAgICAgICBmb28obmV3IEZvcmVpZ24oKSwgbmV3IElubmVyKCkpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZUluc3RhbmNlTWV0aG9kL1dpdGhJbm5lci5qYXZhLmFmdGVyIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVJbnN0YW5jZU1ldGhvZC9XaXRoSW5uZXIuamF2YS5hZnRlcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYzA3MTcwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVJbnN0YW5jZU1ldGhvZC9XaXRoSW5uZXIuamF2YS5hZnRlcgpAQCAtMCwwICsxLDE3IEBACitjbGFzcyBGb3JlaWduIHsKKyAgICB2b2lkIGZvbyhUZXN0MS5Jbm5lciBpLCBUZXN0MSB0ZXN0MSkgeworICAgICAgdGVzdDEubmV3IElubmVyKCk7CisgICAgfQorCisgICAgY2xhc3MgSW5uZXIge30KK30KKworCitwdWJsaWMgYWJzdHJhY3QgY2xhc3MgVGVzdDEgeworCisgICAgY2xhc3MgSW5uZXIge30KKworICAgIHZvaWQgYmFyICgpIHsKKyAgICAgICAgbmV3IEZvcmVpZ24oKS5mb28obmV3IElubmVyKCksIHRoaXMpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZU1lbWJlcnMvSURFQURFVjExNDE2L2FmdGVyL1kuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlTWVtYmVycy9JREVBREVWMTE0MTYvYWZ0ZXIvWS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRlNzhmMGYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZU1lbWJlcnMvSURFQURFVjExNDE2L2FmdGVyL1kuamF2YQpAQCAtMCwwICsxLDYgQEAKK2NsYXNzIFggeworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEEgPSAiSURFQSBpcyB0aGUgYmVzdCI7Cit9CisKK2ludGVyZmFjZSBZIHsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZU1lbWJlcnMvSURFQURFVjExNDE2L2JlZm9yZS9ZLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZU1lbWJlcnMvSURFQURFVjExNDE2L2JlZm9yZS9ZLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzBhNzkyYwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlTWVtYmVycy9JREVBREVWMTE0MTYvYmVmb3JlL1kuamF2YQpAQCAtMCwwICsxLDYgQEAKK2NsYXNzIFggeworfQorCitpbnRlcmZhY2UgWSB7CisgICAgU3RyaW5nIEEgPSAiSURFQSBpcyB0aGUgYmVzdCI7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVNZW1iZXJzL0lERUFERVYxMjQ0OC9hZnRlci9UZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZU1lbWJlcnMvSURFQURFVjEyNDQ4L2FmdGVyL1Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMTJmNWI3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVNZW1iZXJzL0lERUFERVYxMjQ0OC9hZnRlci9UZXN0LmphdmEKQEAgLTAsMCArMSwxMSBAQAorQGludGVyZmFjZSBTb21lQW5ub3RhdGlvbiB7CisgICAgU3RyaW5nIHZhbHVlKCk7Cit9CisKK0BTb21lQW5ub3RhdGlvbihBLkNPTlNUKQoraW50ZXJmYWNlIEEgeworICAgIFN0cmluZyBDT05TVCA9ICI0MiI7Cit9CisKK2ludGVyZmFjZSBCIHsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZU1lbWJlcnMvSURFQURFVjEyNDQ4L2JlZm9yZS9UZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZU1lbWJlcnMvSURFQURFVjEyNDQ4L2JlZm9yZS9UZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWU2MmMwMAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlTWVtYmVycy9JREVBREVWMTI0NDgvYmVmb3JlL1Rlc3QuamF2YQpAQCAtMCwwICsxLDggQEAKK0BpbnRlcmZhY2UgU29tZUFubm90YXRpb24geworICAgIFN0cmluZyB2YWx1ZSgpOworfQorCitAU29tZUFubm90YXRpb24oQi5DT05TVCkKK2ludGVyZmFjZSBBIHt9CisKK2ludGVyZmFjZSBCIHsgU3RyaW5nIENPTlNUID0gIjQyIjsgfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlTWVtYmVycy9kZXBlbmRhbnRGaWVsZHMvYWZ0ZXIvQS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVNZW1iZXJzL2RlcGVuZGFudEZpZWxkcy9hZnRlci9BLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjIxM2QxMgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlTWVtYmVycy9kZXBlbmRhbnRGaWVsZHMvYWZ0ZXIvQS5qYXZhCkBAIC0wLDAgKzEsNiBAQAorcHVibGljIGNsYXNzIEEgeworICAgIHZvaWQgZm9vKCl7fQorCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgT05FID0gIiI7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgVFdPID0gT05FICsgIiI7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVNZW1iZXJzL2RlcGVuZGFudEZpZWxkcy9hZnRlci9CLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZU1lbWJlcnMvZGVwZW5kYW50RmllbGRzL2FmdGVyL0IuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYmJlNGRjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVNZW1iZXJzL2RlcGVuZGFudEZpZWxkcy9hZnRlci9CLmphdmEKQEAgLTAsMCArMSwyIEBACitwdWJsaWMgY2xhc3MgQiB7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVNZW1iZXJzL2RlcGVuZGFudEZpZWxkcy9iZWZvcmUvQS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVNZW1iZXJzL2RlcGVuZGFudEZpZWxkcy9iZWZvcmUvQS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYxN2NiZmMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZU1lbWJlcnMvZGVwZW5kYW50RmllbGRzL2JlZm9yZS9BLmphdmEKQEAgLTAsMCArMSw0IEBACitwdWJsaWMgY2xhc3MgQSB7CisgICAgdm9pZCBmb28oKXt9CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgVFdPID0gQi5PTkUgKyAiIjsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZU1lbWJlcnMvZGVwZW5kYW50RmllbGRzL2JlZm9yZS9CLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZU1lbWJlcnMvZGVwZW5kYW50RmllbGRzL2JlZm9yZS9CLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWNmMzQ3OAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlTWVtYmVycy9kZXBlbmRhbnRGaWVsZHMvYmVmb3JlL0IuamF2YQpAQCAtMCwwICsxLDMgQEAKK3B1YmxpYyBjbGFzcyBCIHsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBPTkUgPSAiIjsgCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVNZW1iZXJzL2VudW1Db25zdGFudC9hZnRlci9BLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZU1lbWJlcnMvZW51bUNvbnN0YW50L2FmdGVyL0EuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMzMzMDU5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVNZW1iZXJzL2VudW1Db25zdGFudC9hZnRlci9BLmphdmEKQEAgLTAsMCArMSw0IEBACitwdWJsaWMgZW51bSBBIHsKKyAgICBPTkUoIiIpOworICBBKFN0cmluZyBzKXt9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVNZW1iZXJzL2VudW1Db25zdGFudC9hZnRlci9CLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZU1lbWJlcnMvZW51bUNvbnN0YW50L2FmdGVyL0IuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYmJlNGRjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVNZW1iZXJzL2VudW1Db25zdGFudC9hZnRlci9CLmphdmEKQEAgLTAsMCArMSwyIEBACitwdWJsaWMgY2xhc3MgQiB7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVNZW1iZXJzL2VudW1Db25zdGFudC9iZWZvcmUvQS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVNZW1iZXJzL2VudW1Db25zdGFudC9iZWZvcmUvQS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU2N2Y0YmUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZU1lbWJlcnMvZW51bUNvbnN0YW50L2JlZm9yZS9BLmphdmEKQEAgLTAsMCArMSw0IEBACitwdWJsaWMgZW51bSBBIHsKKyAgOworICBBKFN0cmluZyBzKXt9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVNZW1iZXJzL2VudW1Db25zdGFudC9iZWZvcmUvQi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVNZW1iZXJzL2VudW1Db25zdGFudC9iZWZvcmUvQi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFjZjM0NzgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZU1lbWJlcnMvZW51bUNvbnN0YW50L2JlZm9yZS9CLmphdmEKQEAgLTAsMCArMSwzIEBACitwdWJsaWMgY2xhc3MgQiB7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgT05FID0gIiI7IAorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlTWVtYmVycy9lbnVtQ29uc3RhbnRGcm9tQ2FzZVN0YXRlbWVudC9hZnRlci9BLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZU1lbWJlcnMvZW51bUNvbnN0YW50RnJvbUNhc2VTdGF0ZW1lbnQvYWZ0ZXIvQS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU3NjI4ZDQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZU1lbWJlcnMvZW51bUNvbnN0YW50RnJvbUNhc2VTdGF0ZW1lbnQvYWZ0ZXIvQS5qYXZhCkBAIC0wLDAgKzEsNCBAQAorcHVibGljIGVudW0gQSB7CisgICAgT05FKDEpOworICBBKGludCBpKXt9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVNZW1iZXJzL2VudW1Db25zdGFudEZyb21DYXNlU3RhdGVtZW50L2FmdGVyL0IuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlTWVtYmVycy9lbnVtQ29uc3RhbnRGcm9tQ2FzZVN0YXRlbWVudC9hZnRlci9CLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmFlMTRhMwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlTWVtYmVycy9lbnVtQ29uc3RhbnRGcm9tQ2FzZVN0YXRlbWVudC9hZnRlci9CLmphdmEKQEAgLTAsMCArMSwxNyBAQAorcHVibGljIGNsYXNzIEIgeworICAgIHZvaWQgZm9vKEEgaSkgeworICAgICAgICBzd2l0Y2ggKGkpIHsKKyAgICAgICAgICAgIGNhc2UgT05FIDoKKyAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9Cit9CisKK2NsYXNzIFVzYWdlIHsKKyAgICB2b2lkIGZvbyhBIGkpIHsKKyAgICAgICAgc3dpdGNoIChpKSB7CisgICAgICAgICAgICBjYXNlIE9ORSA6CisgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlTWVtYmVycy9lbnVtQ29uc3RhbnRGcm9tQ2FzZVN0YXRlbWVudC9iZWZvcmUvQS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVNZW1iZXJzL2VudW1Db25zdGFudEZyb21DYXNlU3RhdGVtZW50L2JlZm9yZS9BLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODZlOTYzMgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlTWVtYmVycy9lbnVtQ29uc3RhbnRGcm9tQ2FzZVN0YXRlbWVudC9iZWZvcmUvQS5qYXZhCkBAIC0wLDAgKzEsNCBAQAorcHVibGljIGVudW0gQSB7CisgIDsKKyAgQShpbnQgaSl7fQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlTWVtYmVycy9lbnVtQ29uc3RhbnRGcm9tQ2FzZVN0YXRlbWVudC9iZWZvcmUvQi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVNZW1iZXJzL2VudW1Db25zdGFudEZyb21DYXNlU3RhdGVtZW50L2JlZm9yZS9CLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjE1ZDBlYQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlTWVtYmVycy9lbnVtQ29uc3RhbnRGcm9tQ2FzZVN0YXRlbWVudC9iZWZvcmUvQi5qYXZhCkBAIC0wLDAgKzEsMTggQEAKK3B1YmxpYyBjbGFzcyBCIHsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBPTkUgPSAxOworICAgIHZvaWQgZm9vKEEgaSkgeworICAgICAgICBzd2l0Y2ggKGkpIHsKKyAgICAgICAgICAgIGNhc2UgT05FIDoKKyAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9Cit9CisKK2NsYXNzIFVzYWdlIHsKKyAgICB2b2lkIGZvbyhBIGkpIHsKKyAgICAgICAgc3dpdGNoIChpKSB7CisgICAgICAgICAgICBjYXNlIEIuT05FIDoKKyAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVNZW1iZXJzL2VzY2FsYXRlVmlzaWJpbGl0eS9hZnRlci9wYWNrMS9BLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZU1lbWJlcnMvZXNjYWxhdGVWaXNpYmlsaXR5L2FmdGVyL3BhY2sxL0EuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMGZkNWJiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVNZW1iZXJzL2VzY2FsYXRlVmlzaWJpbGl0eS9hZnRlci9wYWNrMS9BLmphdmEKQEAgLTAsMCArMSw4IEBACitwYWNrYWdlIHBhY2sxOworCitwdWJsaWMgY2xhc3MgQSB7CisKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgZm9vKCkgeworICAgICAgICBDLmJhcigpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZU1lbWJlcnMvZXNjYWxhdGVWaXNpYmlsaXR5L2FmdGVyL3BhY2sxL0MuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlTWVtYmVycy9lc2NhbGF0ZVZpc2liaWxpdHkvYWZ0ZXIvcGFjazEvQy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFkYjk0MmYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZU1lbWJlcnMvZXNjYWxhdGVWaXNpYmlsaXR5L2FmdGVyL3BhY2sxL0MuamF2YQpAQCAtMCwwICsxLDQgQEAKK3BhY2thZ2UgcGFjazE7CitwdWJsaWMgY2xhc3MgQyB7CisgICAgc3RhdGljIHZvaWQgYmFyKCl7fQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlTWVtYmVycy9lc2NhbGF0ZVZpc2liaWxpdHkvYmVmb3JlL3BhY2sxL0EuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlTWVtYmVycy9lc2NhbGF0ZVZpc2liaWxpdHkvYmVmb3JlL3BhY2sxL0EuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMGFlNDlmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVNZW1iZXJzL2VzY2FsYXRlVmlzaWJpbGl0eS9iZWZvcmUvcGFjazEvQS5qYXZhCkBAIC0wLDAgKzEsOSBAQAorcGFja2FnZSBwYWNrMTsKKworcHVibGljIGNsYXNzIEEgeworICAgIHByaXZhdGUgc3RhdGljIHZvaWQgYmFyKCl7fQorCisgICAgcHVibGljIHN0YXRpYyB2b2lkIGZvbygpIHsKKyAgICAgICAgYmFyKCk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlTWVtYmVycy9lc2NhbGF0ZVZpc2liaWxpdHkvYmVmb3JlL3BhY2sxL0MuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlTWVtYmVycy9lc2NhbGF0ZVZpc2liaWxpdHkvYmVmb3JlL3BhY2sxL0MuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMTQ1YTM4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVNZW1iZXJzL2VzY2FsYXRlVmlzaWJpbGl0eS9iZWZvcmUvcGFjazEvQy5qYXZhCkBAIC0wLDAgKzEsMiBAQAorcGFja2FnZSBwYWNrMTsKK3B1YmxpYyBjbGFzcyBDIHt9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVNZW1iZXJzL2VzY2FsYXRlVmlzaWJpbGl0eTEvYWZ0ZXIvQS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVNZW1iZXJzL2VzY2FsYXRlVmlzaWJpbGl0eTEvYWZ0ZXIvQS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ2OTU2NDUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZU1lbWJlcnMvZXNjYWxhdGVWaXNpYmlsaXR5MS9hZnRlci9BLmphdmEKQEAgLTAsMCArMSw1IEBACitwdWJsaWMgaW50ZXJmYWNlIEEgeworICAgIHZvaWQgYmFyKCkgeworICAgIEIuZm9vKCIiKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlTWVtYmVycy9lc2NhbGF0ZVZpc2liaWxpdHkxL2FmdGVyL0IuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlTWVtYmVycy9lc2NhbGF0ZVZpc2liaWxpdHkxL2FmdGVyL0IuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YWQzZWU2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVNZW1iZXJzL2VzY2FsYXRlVmlzaWJpbGl0eTEvYWZ0ZXIvQi5qYXZhCkBAIC0wLDAgKzEsNiBAQAorcHVibGljIGNsYXNzIEIgeworICAgIHN0YXRpYyB2b2lkIGZvbyhTdHJpbmcgcykge30KKworICAgIHZvaWQgZm9vKGludCB4KSB7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZU1lbWJlcnMvZXNjYWxhdGVWaXNpYmlsaXR5MS9iZWZvcmUvQS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVNZW1iZXJzL2VzY2FsYXRlVmlzaWJpbGl0eTEvYmVmb3JlL0EuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NzA4NDFiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVNZW1iZXJzL2VzY2FsYXRlVmlzaWJpbGl0eTEvYmVmb3JlL0EuamF2YQpAQCAtMCwwICsxLDYgQEAKK3B1YmxpYyBpbnRlcmZhY2UgQSB7CisgIHByaXZhdGUgc3RhdGljIHZvaWQgZm9vKFN0cmluZyBzKSB7fQorICB2b2lkIGJhcigpIHsKKyAgICBmb28oIiIpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVNZW1iZXJzL2VzY2FsYXRlVmlzaWJpbGl0eTEvYmVmb3JlL0IuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlTWVtYmVycy9lc2NhbGF0ZVZpc2liaWxpdHkxL2JlZm9yZS9CLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGM1OTllMQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlTWVtYmVycy9lc2NhbGF0ZVZpc2liaWxpdHkxL2JlZm9yZS9CLmphdmEKQEAgLTAsMCArMSw0IEBACitwdWJsaWMgY2xhc3MgQiB7CisgIHZvaWQgZm9vKGludCB4KSB7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZU1lbWJlcnMvZXhwbGljaXRTdGF0aWNJbXBvcnQvYWZ0ZXIvQS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVNZW1iZXJzL2V4cGxpY2l0U3RhdGljSW1wb3J0L2FmdGVyL0EuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44N2IyMzVhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVNZW1iZXJzL2V4cGxpY2l0U3RhdGljSW1wb3J0L2FmdGVyL0EuamF2YQpAQCAtMCwwICsxLDcgQEAKK2ltcG9ydCBzdGF0aWMgQi5aOworCitwdWJsaWMgY2xhc3MgQSB7CisgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKKyAgICBTeXN0ZW0ub3V0LnByaW50bG4oIlogPSAiICsgWik7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZU1lbWJlcnMvZXhwbGljaXRTdGF0aWNJbXBvcnQvYWZ0ZXIvQi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVNZW1iZXJzL2V4cGxpY2l0U3RhdGljSW1wb3J0L2FmdGVyL0IuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iOGY5NWU1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVNZW1iZXJzL2V4cGxpY2l0U3RhdGljSW1wb3J0L2FmdGVyL0IuamF2YQpAQCAtMCwwICsxLDMgQEAKK3B1YmxpYyBjbGFzcyBCIHsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBaID0gInoiOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlTWVtYmVycy9leHBsaWNpdFN0YXRpY0ltcG9ydC9hZnRlci9DLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZU1lbWJlcnMvZXhwbGljaXRTdGF0aWNJbXBvcnQvYWZ0ZXIvQy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY1ZWYwMWMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZU1lbWJlcnMvZXhwbGljaXRTdGF0aWNJbXBvcnQvYWZ0ZXIvQy5qYXZhCkBAIC0wLDAgKzEsMiBAQAorcHVibGljIGNsYXNzIEMgeworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlTWVtYmVycy9leHBsaWNpdFN0YXRpY0ltcG9ydC9iZWZvcmUvQS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVNZW1iZXJzL2V4cGxpY2l0U3RhdGljSW1wb3J0L2JlZm9yZS9BLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWI5MTlhZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlTWVtYmVycy9leHBsaWNpdFN0YXRpY0ltcG9ydC9iZWZvcmUvQS5qYXZhCkBAIC0wLDAgKzEsNyBAQAoraW1wb3J0IHN0YXRpYyBDLlo7CisKK3B1YmxpYyBjbGFzcyBBIHsKKyAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgeworICAgIFN5c3RlbS5vdXQucHJpbnRsbigiWiA9ICIgKyBaKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlTWVtYmVycy9leHBsaWNpdFN0YXRpY0ltcG9ydC9iZWZvcmUvQi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVNZW1iZXJzL2V4cGxpY2l0U3RhdGljSW1wb3J0L2JlZm9yZS9CLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWJiZTRkYwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlTWVtYmVycy9leHBsaWNpdFN0YXRpY0ltcG9ydC9iZWZvcmUvQi5qYXZhCkBAIC0wLDAgKzEsMiBAQAorcHVibGljIGNsYXNzIEIgeworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlTWVtYmVycy9leHBsaWNpdFN0YXRpY0ltcG9ydC9iZWZvcmUvQy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVNZW1iZXJzL2V4cGxpY2l0U3RhdGljSW1wb3J0L2JlZm9yZS9DLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTJkMGU3NgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlTWVtYmVycy9leHBsaWNpdFN0YXRpY0ltcG9ydC9iZWZvcmUvQy5qYXZhCkBAIC0wLDAgKzEsMyBAQAorcHVibGljIGNsYXNzIEMgeworICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBaID0gInoiOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlTWVtYmVycy9maWVsZEZvcndhcmRSZWYvYWZ0ZXIvQS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVNZW1iZXJzL2ZpZWxkRm9yd2FyZFJlZi9hZnRlci9BLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWI2MTYyNAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlTWVtYmVycy9maWVsZEZvcndhcmRSZWYvYWZ0ZXIvQS5qYXZhCkBAIC0wLDAgKzEsMyBAQAorcHVibGljIGNsYXNzIEEgeworCit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZU1lbWJlcnMvZmllbGRGb3J3YXJkUmVmL2FmdGVyL0NvbnN0YW50cy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVNZW1iZXJzL2ZpZWxkRm9yd2FyZFJlZi9hZnRlci9Db25zdGFudHMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNmUyZGFjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVNZW1iZXJzL2ZpZWxkRm9yd2FyZFJlZi9hZnRlci9Db25zdGFudHMuamF2YQpAQCAtMCwwICsxLDcgQEAKK3B1YmxpYyBjbGFzcyBDb25zdGFudHMgeworICAgIHByaXZhdGUgc3RhdGljIHZvaWQgaW5pdCgpIHsgfQorCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgQSA9ICJhIjsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBCID0gImIiOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nW10gQV9PUl9CID0gbmV3IFN0cmluZ1tde0EsIEJ9OworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVNZW1iZXJzL2ZpZWxkRm9yd2FyZFJlZi9iZWZvcmUvQS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVNZW1iZXJzL2ZpZWxkRm9yd2FyZFJlZi9iZWZvcmUvQS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAwYzliNDUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZU1lbWJlcnMvZmllbGRGb3J3YXJkUmVmL2JlZm9yZS9BLmphdmEKQEAgLTAsMCArMSw0IEBACitwdWJsaWMgY2xhc3MgQSB7CisgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nW10gQV9PUl9CID0gbmV3IFN0cmluZ1tdeyBDb25zdGFudHMuQSwgQ29uc3RhbnRzLkIgfTsKKworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVNZW1iZXJzL2ZpZWxkRm9yd2FyZFJlZi9iZWZvcmUvQ29uc3RhbnRzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZU1lbWJlcnMvZmllbGRGb3J3YXJkUmVmL2JlZm9yZS9Db25zdGFudHMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYWI3ODgxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVNZW1iZXJzL2ZpZWxkRm9yd2FyZFJlZi9iZWZvcmUvQ29uc3RhbnRzLmphdmEKQEAgLTAsMCArMSw2IEBACitwdWJsaWMgY2xhc3MgQ29uc3RhbnRzIHsKKyAgICBwcml2YXRlIHN0YXRpYyB2b2lkIGluaXQoKSB7IH0KKworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEEgPSAiYSI7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgQiA9ICJiIjsKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlTWVtYmVycy9pbm5lckNsYXNzL2FmdGVyL0EuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlTWVtYmVycy9pbm5lckNsYXNzL2FmdGVyL0EuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MWZmMmFiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVNZW1iZXJzL2lubmVyQ2xhc3MvYWZ0ZXIvQS5qYXZhCkBAIC0wLDAgKzEsMiBAQAorcHVibGljIGNsYXNzIEEgeworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlTWVtYmVycy9pbm5lckNsYXNzL2FmdGVyL0IuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlTWVtYmVycy9pbm5lckNsYXNzL2FmdGVyL0IuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNWUxYjJjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVNZW1iZXJzL2lubmVyQ2xhc3MvYWZ0ZXIvQi5qYXZhCkBAIC0wLDAgKzEsOSBAQAorcHVibGljIGNsYXNzIEIgeworICAgIElubmVyIGkgPSBuZXcgSW5uZXIoKTsKKworICAgIHB1YmxpYyBzdGF0aWMgY2xhc3MgSW5uZXIgeworICAgICAgICBwdWJsaWMgYm9vbGVhbiBlcXVhbHMoT2JqZWN0IG8pIHsKKyAgICAgICAgICAgIHJldHVybiBvIGluc3RhbmNlb2YgSW5uZXI7CisgICAgICAgIH0KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVNZW1iZXJzL2lubmVyQ2xhc3MvYWZ0ZXIvQy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVNZW1iZXJzL2lubmVyQ2xhc3MvYWZ0ZXIvQy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIxOWQwMDUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZU1lbWJlcnMvaW5uZXJDbGFzcy9hZnRlci9DLmphdmEKQEAgLTAsMCArMSwzIEBACitwdWJsaWMgY2xhc3MgQyB7CisgICAgQi5Jbm5lciBpID0gbmV3IEIuSW5uZXIoKTsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZU1lbWJlcnMvaW5uZXJDbGFzcy9iZWZvcmUvQS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVNZW1iZXJzL2lubmVyQ2xhc3MvYmVmb3JlL0EuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMzY0MDZkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVNZW1iZXJzL2lubmVyQ2xhc3MvYmVmb3JlL0EuamF2YQpAQCAtMCwwICsxLDcgQEAKK3B1YmxpYyBjbGFzcyBBIHsKKyAgICBwdWJsaWMgc3RhdGljIGNsYXNzIElubmVyIHsKKyAgICAgICAgcHVibGljIGJvb2xlYW4gZXF1YWxzKE9iamVjdCBvKSB7CisgICAgICAgICAgICByZXR1cm4gbyBpbnN0YW5jZW9mIElubmVyOworICAgICAgICB9CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlTWVtYmVycy9pbm5lckNsYXNzL2JlZm9yZS9CLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZU1lbWJlcnMvaW5uZXJDbGFzcy9iZWZvcmUvQi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU2ZDI5ZDgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZU1lbWJlcnMvaW5uZXJDbGFzcy9iZWZvcmUvQi5qYXZhCkBAIC0wLDAgKzEsMyBAQAorcHVibGljIGNsYXNzIEIgeworICAgIEEuSW5uZXIgaSA9IG5ldyBBLklubmVyKCk7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVNZW1iZXJzL2lubmVyQ2xhc3MvYmVmb3JlL0MuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlTWVtYmVycy9pbm5lckNsYXNzL2JlZm9yZS9DLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjZkMDlhNQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlTWVtYmVycy9pbm5lckNsYXNzL2JlZm9yZS9DLmphdmEKQEAgLTAsMCArMSwzIEBACitwdWJsaWMgY2xhc3MgQyB7CisgICAgQS5Jbm5lciBpID0gbmV3IEEuSW5uZXIoKTsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZU1lbWJlcnMvaW5uZXJUb0ludGVyZmFjZS9hZnRlci9BLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZU1lbWJlcnMvaW5uZXJUb0ludGVyZmFjZS9hZnRlci9BLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjFmZjJhYgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlTWVtYmVycy9pbm5lclRvSW50ZXJmYWNlL2FmdGVyL0EuamF2YQpAQCAtMCwwICsxLDIgQEAKK3B1YmxpYyBjbGFzcyBBIHsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZU1lbWJlcnMvaW5uZXJUb0ludGVyZmFjZS9hZnRlci9CLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZU1lbWJlcnMvaW5uZXJUb0ludGVyZmFjZS9hZnRlci9CLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmM4MWM1ZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlTWVtYmVycy9pbm5lclRvSW50ZXJmYWNlL2FmdGVyL0IuamF2YQpAQCAtMCwwICsxLDkgQEAKK3B1YmxpYyBpbnRlcmZhY2UgQiB7CisgICAgSW5uZXIgaSA9IG5ldyBJbm5lcigpOworCisgICAgY2xhc3MgSW5uZXIgeworICAgICAgICBwdWJsaWMgYm9vbGVhbiBlcXVhbHMoT2JqZWN0IG8pIHsKKyAgICAgICAgICAgIHJldHVybiBvIGluc3RhbmNlb2YgSW5uZXI7CisgICAgICAgIH0KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVNZW1iZXJzL2lubmVyVG9JbnRlcmZhY2UvYWZ0ZXIvQy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVNZW1iZXJzL2lubmVyVG9JbnRlcmZhY2UvYWZ0ZXIvQy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIxOWQwMDUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZU1lbWJlcnMvaW5uZXJUb0ludGVyZmFjZS9hZnRlci9DLmphdmEKQEAgLTAsMCArMSwzIEBACitwdWJsaWMgY2xhc3MgQyB7CisgICAgQi5Jbm5lciBpID0gbmV3IEIuSW5uZXIoKTsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZU1lbWJlcnMvaW5uZXJUb0ludGVyZmFjZS9iZWZvcmUvQS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVNZW1iZXJzL2lubmVyVG9JbnRlcmZhY2UvYmVmb3JlL0EuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMzY0MDZkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVNZW1iZXJzL2lubmVyVG9JbnRlcmZhY2UvYmVmb3JlL0EuamF2YQpAQCAtMCwwICsxLDcgQEAKK3B1YmxpYyBjbGFzcyBBIHsKKyAgICBwdWJsaWMgc3RhdGljIGNsYXNzIElubmVyIHsKKyAgICAgICAgcHVibGljIGJvb2xlYW4gZXF1YWxzKE9iamVjdCBvKSB7CisgICAgICAgICAgICByZXR1cm4gbyBpbnN0YW5jZW9mIElubmVyOworICAgICAgICB9CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlTWVtYmVycy9pbm5lclRvSW50ZXJmYWNlL2JlZm9yZS9CLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZU1lbWJlcnMvaW5uZXJUb0ludGVyZmFjZS9iZWZvcmUvQi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMzMTNkZTYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZU1lbWJlcnMvaW5uZXJUb0ludGVyZmFjZS9iZWZvcmUvQi5qYXZhCkBAIC0wLDAgKzEsMyBAQAorcHVibGljIGludGVyZmFjZSBCIHsKKyAgICBBLklubmVyIGkgPSBuZXcgQS5Jbm5lcigpOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlTWVtYmVycy9pbm5lclRvSW50ZXJmYWNlL2JlZm9yZS9DLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZU1lbWJlcnMvaW5uZXJUb0ludGVyZmFjZS9iZWZvcmUvQy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY2ZDA5YTUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZU1lbWJlcnMvaW5uZXJUb0ludGVyZmFjZS9iZWZvcmUvQy5qYXZhCkBAIC0wLDAgKzEsMyBAQAorcHVibGljIGNsYXNzIEMgeworICAgIEEuSW5uZXIgaSA9IG5ldyBBLklubmVyKCk7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVNZW1iZXJzL2phdmFkb2NSZWZzL2FmdGVyL0NsYXNzMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVNZW1iZXJzL2phdmFkb2NSZWZzL2FmdGVyL0NsYXNzMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk2MGEzNzgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZU1lbWJlcnMvamF2YWRvY1JlZnMvYWZ0ZXIvQ2xhc3MxLmphdmEKQEAgLTAsMCArMSw5IEBACisKK3B1YmxpYyBjbGFzcyBDbGFzczEgeworCisgICAgLyoqCisgICAgICogQHNlZSBDbGFzczIjZm9vIFNvbWUgdGV4dCB7QGxpbmsgQ2xhc3MyI2ZvbyBsYWJlbH0KKyAgICAgKi8KKyAgICB2b2lkIHRlc3QoKSB7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlTWVtYmVycy9qYXZhZG9jUmVmcy9hZnRlci9DbGFzczIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlTWVtYmVycy9qYXZhZG9jUmVmcy9hZnRlci9DbGFzczIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NDVmZGExCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVNZW1iZXJzL2phdmFkb2NSZWZzL2FmdGVyL0NsYXNzMi5qYXZhCkBAIC0wLDAgKzEsNSBAQAorCitwdWJsaWMgY2xhc3MgQ2xhc3MyIHsKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgZm9vKCl7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlTWVtYmVycy9qYXZhZG9jUmVmcy9hZnRlci9Vc2VyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZU1lbWJlcnMvamF2YWRvY1JlZnMvYWZ0ZXIvVXNlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ2NzZjY2UKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZU1lbWJlcnMvamF2YWRvY1JlZnMvYWZ0ZXIvVXNlci5qYXZhCkBAIC0wLDAgKzEsNiBAQAorCisvKioKKyAqIEBzZWUgQ2xhc3MyI2ZvbyBTb21lIHRleHQge0BsaW5rIENsYXNzMiNmb28gbGFiZWx9CisgKi8KK3B1YmxpYyBjbGFzcyBVc2VyIHsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZU1lbWJlcnMvamF2YWRvY1JlZnMvYmVmb3JlL0NsYXNzMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVNZW1iZXJzL2phdmFkb2NSZWZzL2JlZm9yZS9DbGFzczEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYTBmNTQzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVNZW1iZXJzL2phdmFkb2NSZWZzL2JlZm9yZS9DbGFzczEuamF2YQpAQCAtMCwwICsxLDExIEBACisKK3B1YmxpYyBjbGFzcyBDbGFzczEgeworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBmb28oKXsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBAc2VlICNmb28gU29tZSB0ZXh0IHtAbGluayAjZm9vIGxhYmVsfQorICAgICAqLworICAgIHZvaWQgdGVzdCgpIHsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVNZW1iZXJzL2phdmFkb2NSZWZzL2JlZm9yZS9DbGFzczIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlTWVtYmVycy9qYXZhZG9jUmVmcy9iZWZvcmUvQ2xhc3MyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjk5OTI2NwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlTWVtYmVycy9qYXZhZG9jUmVmcy9iZWZvcmUvQ2xhc3MyLmphdmEKQEAgLTAsMCArMSwzIEBACisKK3B1YmxpYyBjbGFzcyBDbGFzczIgeworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlTWVtYmVycy9qYXZhZG9jUmVmcy9iZWZvcmUvVXNlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVNZW1iZXJzL2phdmFkb2NSZWZzL2JlZm9yZS9Vc2VyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjcyNmZkNQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlTWVtYmVycy9qYXZhZG9jUmVmcy9iZWZvcmUvVXNlci5qYXZhCkBAIC0wLDAgKzEsNiBAQAorCisvKioKKyAqIEBzZWUgQ2xhc3MxI2ZvbyBTb21lIHRleHQge0BsaW5rIENsYXNzMSNmb28gbGFiZWx9CisgKi8KK3B1YmxpYyBjbGFzcyBVc2VyIHsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZU1lbWJlcnMvbXVsdGlwbGVXaXRoRGVwZW5kZW5jaWVzL2FmdGVyL0EuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlTWVtYmVycy9tdWx0aXBsZVdpdGhEZXBlbmRlbmNpZXMvYWZ0ZXIvQS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY3ZThjYzMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZU1lbWJlcnMvbXVsdGlwbGVXaXRoRGVwZW5kZW5jaWVzL2FmdGVyL0EuamF2YQpAQCAtMCwwICsxLDIgQEAKK3B1YmxpYyBjbGFzcyBBIHsKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlTWVtYmVycy9tdWx0aXBsZVdpdGhEZXBlbmRlbmNpZXMvYWZ0ZXIvQi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVNZW1iZXJzL211bHRpcGxlV2l0aERlcGVuZGVuY2llcy9hZnRlci9CLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTZlZDliZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlTWVtYmVycy9tdWx0aXBsZVdpdGhEZXBlbmRlbmNpZXMvYWZ0ZXIvQi5qYXZhCkBAIC0wLDAgKzEsNiBAQAorcHVibGljIGNsYXNzIEIgeworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFNSVDEgPSAiIjsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBTUlQgPSAiIjsKKyAgICBwcml2YXRlIHN0YXRpYyBTdHJpbmdbXSBBTEwgPSB7U1JULCBTUlQxfTsKKyAgICBwcml2YXRlIHN0YXRpYyBTdHJpbmdbXSBBTExfMSA9IHtTUlQsIFNSVDF9OworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVNZW1iZXJzL211bHRpcGxlV2l0aERlcGVuZGVuY2llcy9iZWZvcmUvQS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVNZW1iZXJzL211bHRpcGxlV2l0aERlcGVuZGVuY2llcy9iZWZvcmUvQS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIxNTRkYmUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZU1lbWJlcnMvbXVsdGlwbGVXaXRoRGVwZW5kZW5jaWVzL2JlZm9yZS9BLmphdmEKQEAgLTAsMCArMSw0IEBACitwdWJsaWMgY2xhc3MgQSB7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgU1JUID0gIiI7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgU1JUMSA9ICIiOworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVNZW1iZXJzL211bHRpcGxlV2l0aERlcGVuZGVuY2llcy9iZWZvcmUvQi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVNZW1iZXJzL211bHRpcGxlV2l0aERlcGVuZGVuY2llcy9iZWZvcmUvQi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU1MmQxZTMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZU1lbWJlcnMvbXVsdGlwbGVXaXRoRGVwZW5kZW5jaWVzL2JlZm9yZS9CLmphdmEKQEAgLTAsMCArMSw0IEBACitwdWJsaWMgY2xhc3MgQiB7CisgICAgcHJpdmF0ZSBzdGF0aWMgU3RyaW5nW10gQUxMID0ge0EuU1JULCBBLlNSVDF9OworICAgIHByaXZhdGUgc3RhdGljIFN0cmluZ1tdIEFMTF8xID0ge0EuU1JULCBBLlNSVDF9OworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVNZW1iZXJzL290aGVyUGFja2FnZUltcG9ydC9hZnRlci9wYWNrMS9DbGFzc1dpdGhTdGF0aWNNZXRob2QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlTWVtYmVycy9vdGhlclBhY2thZ2VJbXBvcnQvYWZ0ZXIvcGFjazEvQ2xhc3NXaXRoU3RhdGljTWV0aG9kLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmM0MjM4ZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlTWVtYmVycy9vdGhlclBhY2thZ2VJbXBvcnQvYWZ0ZXIvcGFjazEvQ2xhc3NXaXRoU3RhdGljTWV0aG9kLmphdmEKQEAgLTAsMCArMSwxMSBAQAorcGFja2FnZSBwYWNrMTsKKworaW1wb3J0IHBhY2syLk90aGVyQ2xhc3M7CisKK3B1YmxpYyBjbGFzcyBDbGFzc1dpdGhTdGF0aWNNZXRob2QgeworCisgICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgeworICAgICAgICBPdGhlckNsYXNzLmNhbGxlZSgpOworICAgIH0KKworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlTWVtYmVycy9vdGhlclBhY2thZ2VJbXBvcnQvYWZ0ZXIvcGFjazIvT3RoZXJDbGFzcy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVNZW1iZXJzL290aGVyUGFja2FnZUltcG9ydC9hZnRlci9wYWNrMi9PdGhlckNsYXNzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjA2OTNmMwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlTWVtYmVycy9vdGhlclBhY2thZ2VJbXBvcnQvYWZ0ZXIvcGFjazIvT3RoZXJDbGFzcy5qYXZhCkBAIC0wLDAgKzEsNyBAQAorcGFja2FnZSBwYWNrMjsKKworcHVibGljIGNsYXNzIE90aGVyQ2xhc3MgeworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBjYWxsZWUoKSB7CisKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVNZW1iZXJzL290aGVyUGFja2FnZUltcG9ydC9iZWZvcmUvcGFjazEvQ2xhc3NXaXRoU3RhdGljTWV0aG9kLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZU1lbWJlcnMvb3RoZXJQYWNrYWdlSW1wb3J0L2JlZm9yZS9wYWNrMS9DbGFzc1dpdGhTdGF0aWNNZXRob2QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YTQwNDcwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVNZW1iZXJzL290aGVyUGFja2FnZUltcG9ydC9iZWZvcmUvcGFjazEvQ2xhc3NXaXRoU3RhdGljTWV0aG9kLmphdmEKQEAgLTAsMCArMSwxMiBAQAorcGFja2FnZSBwYWNrMTsKKworcHVibGljIGNsYXNzIENsYXNzV2l0aFN0YXRpY01ldGhvZCB7CisKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CisgICAgICAgIGNhbGxlZSgpOworICAgIH0KKworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBjYWxsZWUoKSB7CisKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVNZW1iZXJzL290aGVyUGFja2FnZUltcG9ydC9iZWZvcmUvcGFjazIvT3RoZXJDbGFzcy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVNZW1iZXJzL290aGVyUGFja2FnZUltcG9ydC9iZWZvcmUvcGFjazIvT3RoZXJDbGFzcy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFlYjUyNTAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZU1lbWJlcnMvb3RoZXJQYWNrYWdlSW1wb3J0L2JlZm9yZS9wYWNrMi9PdGhlckNsYXNzLmphdmEKQEAgLTAsMCArMSw0IEBACitwYWNrYWdlIHBhY2syOworCitwdWJsaWMgY2xhc3MgT3RoZXJDbGFzcyB7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVNZW1iZXJzL291dGVyQ2xhc3NUeXBlUGFyYW1ldGVycy9hZnRlci9wYWNrMS9BLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZU1lbWJlcnMvb3V0ZXJDbGFzc1R5cGVQYXJhbWV0ZXJzL2FmdGVyL3BhY2sxL0EuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNTNkMzU0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVNZW1iZXJzL291dGVyQ2xhc3NUeXBlUGFyYW1ldGVycy9hZnRlci9wYWNrMS9BLmphdmEKQEAgLTAsMCArMSw3IEBACitwYWNrYWdlIHBhY2sxOworCitpbXBvcnQgamF2YS51dGlsLkFycmF5TGlzdDsKK2ltcG9ydCBqYXZhLnV0aWwuTGlzdDsKKworcHVibGljIGNsYXNzIEEgeworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlTWVtYmVycy9vdXRlckNsYXNzVHlwZVBhcmFtZXRlcnMvYWZ0ZXIvcGFjazEvT3V0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlTWVtYmVycy9vdXRlckNsYXNzVHlwZVBhcmFtZXRlcnMvYWZ0ZXIvcGFjazEvT3V0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MjhlZDhmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVNZW1iZXJzL291dGVyQ2xhc3NUeXBlUGFyYW1ldGVycy9hZnRlci9wYWNrMS9PdXRlci5qYXZhCkBAIC0wLDAgKzEsNiBAQAorcGFja2FnZSBwYWNrMTsKKworcHVibGljIGNsYXNzIE91dGVyIDxUPnsKKyAgICBwdWJsaWMgc3RhdGljIGNsYXNzIElubmVyPFQ+eworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlTWVtYmVycy9vdXRlckNsYXNzVHlwZVBhcmFtZXRlcnMvYWZ0ZXIvcGFjazIvQi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVNZW1iZXJzL291dGVyQ2xhc3NUeXBlUGFyYW1ldGVycy9hZnRlci9wYWNrMi9CLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjM2YjYyMwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlTWVtYmVycy9vdXRlckNsYXNzVHlwZVBhcmFtZXRlcnMvYWZ0ZXIvcGFjazIvQi5qYXZhCkBAIC0wLDAgKzEsMTIgQEAKK3BhY2thZ2UgcGFjazI7CisKK2ltcG9ydCBwYWNrMS5PdXRlcjsKKworaW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7CitpbXBvcnQgamF2YS51dGlsLkxpc3Q7CisKK3B1YmxpYyBjbGFzcyBCIHsKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgZm9vKCl7CisgICAgICAgIE91dGVyPEFycmF5TGlzdD4uSW5uZXI8TGlzdD4geDsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVNZW1iZXJzL291dGVyQ2xhc3NUeXBlUGFyYW1ldGVycy9iZWZvcmUvcGFjazEvQS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVNZW1iZXJzL291dGVyQ2xhc3NUeXBlUGFyYW1ldGVycy9iZWZvcmUvcGFjazEvQS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjliNmI3M2ZmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVNZW1iZXJzL291dGVyQ2xhc3NUeXBlUGFyYW1ldGVycy9iZWZvcmUvcGFjazEvQS5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKK3BhY2thZ2UgcGFjazE7CisKK2ltcG9ydCBqYXZhLnV0aWwuQXJyYXlMaXN0OworaW1wb3J0IGphdmEudXRpbC5MaXN0OworCitwdWJsaWMgY2xhc3MgQSB7CisgICAgcHVibGljIHN0YXRpYyB2b2lkIGZvbygpeworICAgICAgICBPdXRlcjxBcnJheUxpc3Q+LklubmVyPExpc3Q+IHg7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlTWVtYmVycy9vdXRlckNsYXNzVHlwZVBhcmFtZXRlcnMvYmVmb3JlL3BhY2sxL091dGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZU1lbWJlcnMvb3V0ZXJDbGFzc1R5cGVQYXJhbWV0ZXJzL2JlZm9yZS9wYWNrMS9PdXRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUyOGVkOGYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZU1lbWJlcnMvb3V0ZXJDbGFzc1R5cGVQYXJhbWV0ZXJzL2JlZm9yZS9wYWNrMS9PdXRlci5qYXZhCkBAIC0wLDAgKzEsNiBAQAorcGFja2FnZSBwYWNrMTsKKworcHVibGljIGNsYXNzIE91dGVyIDxUPnsKKyAgICBwdWJsaWMgc3RhdGljIGNsYXNzIElubmVyPFQ+eworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlTWVtYmVycy9vdXRlckNsYXNzVHlwZVBhcmFtZXRlcnMvYmVmb3JlL3BhY2syL0IuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlTWVtYmVycy9vdXRlckNsYXNzVHlwZVBhcmFtZXRlcnMvYmVmb3JlL3BhY2syL0IuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZjk2M2I1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVNZW1iZXJzL291dGVyQ2xhc3NUeXBlUGFyYW1ldGVycy9iZWZvcmUvcGFjazIvQi5qYXZhCkBAIC0wLDAgKzEsNCBAQAorcGFja2FnZSBwYWNrMjsKKworcHVibGljIGNsYXNzIEIgeworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlTWVtYmVycy9wYXJhbWV0ZXJpemVkUmVmT24vYWZ0ZXIvcGFjazEvQS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVNZW1iZXJzL3BhcmFtZXRlcml6ZWRSZWZPbi9hZnRlci9wYWNrMS9BLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGI2YmFhZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlTWVtYmVycy9wYXJhbWV0ZXJpemVkUmVmT24vYWZ0ZXIvcGFjazEvQS5qYXZhCkBAIC0wLDAgKzEsMTYgQEAKK3BhY2thZ2UgcGFjazE7CisKK2ludGVyZmFjZSBFZmY8QSwgQj4geworICAgIEIgZihBIGEpOworfQorCithYnN0cmFjdCBjbGFzcyBQT25lPEE+IHsKKyAgICBhYnN0cmFjdCBBIF8xKCk7CisKK30KKworZmluYWwgY2xhc3MgSG9vcmF5PEE+IHsKKyAgICBwdWJsaWMgPEI+IEhvb3JheTxCPiBtYXAoZmluYWwgRWZmPEEsIEI+IGYpIHsKKyAgICAgICAgcmV0dXJuIG51bGw7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVNZW1iZXJzL3BhcmFtZXRlcml6ZWRSZWZPbi9hZnRlci9wYWNrMS9DLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZU1lbWJlcnMvcGFyYW1ldGVyaXplZFJlZk9uL2FmdGVyL3BhY2sxL0MuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMWQ0YmQ1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVNZW1iZXJzL3BhcmFtZXRlcml6ZWRSZWZPbi9hZnRlci9wYWNrMS9DLmphdmEKQEAgLTAsMCArMSwxNSBAQAorcGFja2FnZSBwYWNrMTsKKworcHVibGljIGNsYXNzIEMgeworICAgIHN0YXRpYyA8QT4gUE9uZTxIb29yYXk8QT4+IHNlcXVlbmNlKGZpbmFsIEhvb3JheTxQT25lPEE+PiBhcykgeworICAgICAgICByZXR1cm4gbmV3IFBPbmU8SG9vcmF5PEE+PigpIHsKKyAgICAgICAgICAgIHB1YmxpYyBIb29yYXk8QT4gXzEoKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGFzLm1hcChDLjxBPl9fMSgpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKyAgICB9CisKKyAgICBzdGF0aWMgPEE+IEVmZjxQT25lPEE+LCBBPiBfXzEoKSB7CisgICAgICAgIHJldHVybiBQT25lOjpfMTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVNZW1iZXJzL3BhcmFtZXRlcml6ZWRSZWZPbi9iZWZvcmUvcGFjazEvQS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVNZW1iZXJzL3BhcmFtZXRlcml6ZWRSZWZPbi9iZWZvcmUvcGFjazEvQS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZiZGQyZTYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZU1lbWJlcnMvcGFyYW1ldGVyaXplZFJlZk9uL2JlZm9yZS9wYWNrMS9BLmphdmEKQEAgLTAsMCArMSwyOCBAQAorcGFja2FnZSBwYWNrMTsKKworaW50ZXJmYWNlIEVmZjxBLCBCPiB7CisgICAgQiBmKEEgYSk7Cit9CisKK2Fic3RyYWN0IGNsYXNzIFBPbmU8QT4geworICAgIGFic3RyYWN0IEEgXzEoKTsKKworICAgIHN0YXRpYyA8QT4gUE9uZTxIb29yYXk8QT4+IHNlcXVlbmNlKGZpbmFsIEhvb3JheTxQT25lPEE+PiBhcykgeworICAgICAgICByZXR1cm4gbmV3IFBPbmU8SG9vcmF5PEE+PigpIHsKKyAgICAgICAgICAgIHB1YmxpYyBIb29yYXk8QT4gXzEoKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGFzLm1hcChQT25lLjxBPl9fMSgpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKyAgICB9CisKKyAgICBzdGF0aWMgPEE+IEVmZjxQT25lPEE+LCBBPiBfXzEoKSB7CisgICAgICAgIHJldHVybiBQT25lOjpfMTsKKyAgICB9CisKK30KKworZmluYWwgY2xhc3MgSG9vcmF5PEE+IHsKKyAgICBwdWJsaWMgPEI+IEhvb3JheTxCPiBtYXAoZmluYWwgRWZmPEEsIEI+IGYpIHsKKyAgICAgICAgcmV0dXJuIG51bGw7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVNZW1iZXJzL3BhcmFtZXRlcml6ZWRSZWZPbi9iZWZvcmUvcGFjazEvQy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVNZW1iZXJzL3BhcmFtZXRlcml6ZWRSZWZPbi9iZWZvcmUvcGFjazEvQy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJiN2UzZTAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZU1lbWJlcnMvcGFyYW1ldGVyaXplZFJlZk9uL2JlZm9yZS9wYWNrMS9DLmphdmEKQEAgLTAsMCArMSw0IEBACitwYWNrYWdlIHBhY2sxOworCitwdWJsaWMgY2xhc3MgQyB7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVNZW1iZXJzL3Byb3RlY3RlZENvbnN0cnVjdG9yL2FmdGVyL3BhY2sxL0EuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlTWVtYmVycy9wcm90ZWN0ZWRDb25zdHJ1Y3Rvci9hZnRlci9wYWNrMS9BLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDZmYzc4ZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlTWVtYmVycy9wcm90ZWN0ZWRDb25zdHJ1Y3Rvci9hZnRlci9wYWNrMS9BLmphdmEKQEAgLTAsMCArMSw0IEBACitwYWNrYWdlIHBhY2sxOworCitwdWJsaWMgY2xhc3MgQSB7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVNZW1iZXJzL3Byb3RlY3RlZENvbnN0cnVjdG9yL2FmdGVyL3BhY2sxL0MuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlTWVtYmVycy9wcm90ZWN0ZWRDb25zdHJ1Y3Rvci9hZnRlci9wYWNrMS9DLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWVjZjYwNgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlTWVtYmVycy9wcm90ZWN0ZWRDb25zdHJ1Y3Rvci9hZnRlci9wYWNrMS9DLmphdmEKQEAgLTAsMCArMSw3IEBACitwYWNrYWdlIHBhY2sxOworCitwdWJsaWMgY2xhc3MgQyB7CisgICAgcHVibGljIHN0YXRpYyB2b2lkIGZvbygpIHsKKyAgICAgICAgbmV3IEIoKXt9OworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZU1lbWJlcnMvcHJvdGVjdGVkQ29uc3RydWN0b3IvYWZ0ZXIvcGFjazIvQi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVNZW1iZXJzL3Byb3RlY3RlZENvbnN0cnVjdG9yL2FmdGVyL3BhY2syL0IuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZGNjYjRlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVNZW1iZXJzL3Byb3RlY3RlZENvbnN0cnVjdG9yL2FmdGVyL3BhY2syL0IuamF2YQpAQCAtMCwwICsxLDUgQEAKK3BhY2thZ2UgcGFjazI7CisKK3B1YmxpYyBjbGFzcyBCIHsKKyAgcHJvdGVjdGVkIEIoKXt9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVNZW1iZXJzL3Byb3RlY3RlZENvbnN0cnVjdG9yL2JlZm9yZS9wYWNrMS9BLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZU1lbWJlcnMvcHJvdGVjdGVkQ29uc3RydWN0b3IvYmVmb3JlL3BhY2sxL0EuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ODc3NjYxYgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlTWVtYmVycy9wcm90ZWN0ZWRDb25zdHJ1Y3Rvci9iZWZvcmUvcGFjazEvQS5qYXZhCkBAIC0wLDAgKzEsNyBAQAorcGFja2FnZSBwYWNrMTsKKworcHVibGljIGNsYXNzIEEgeworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBmb28oKSB7CisgICAgICAgIG5ldyBCKCl7fTsKKyAgICB9ICAgIAorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlTWVtYmVycy9wcm90ZWN0ZWRDb25zdHJ1Y3Rvci9iZWZvcmUvcGFjazEvQy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVNZW1iZXJzL3Byb3RlY3RlZENvbnN0cnVjdG9yL2JlZm9yZS9wYWNrMS9DLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmI3ZTNlMAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlTWVtYmVycy9wcm90ZWN0ZWRDb25zdHJ1Y3Rvci9iZWZvcmUvcGFjazEvQy5qYXZhCkBAIC0wLDAgKzEsNCBAQAorcGFja2FnZSBwYWNrMTsKKworcHVibGljIGNsYXNzIEMgeworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlTWVtYmVycy9wcm90ZWN0ZWRDb25zdHJ1Y3Rvci9iZWZvcmUvcGFjazIvQi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVNZW1iZXJzL3Byb3RlY3RlZENvbnN0cnVjdG9yL2JlZm9yZS9wYWNrMi9CLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmRjY2I0ZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlTWVtYmVycy9wcm90ZWN0ZWRDb25zdHJ1Y3Rvci9iZWZvcmUvcGFjazIvQi5qYXZhCkBAIC0wLDAgKzEsNSBAQAorcGFja2FnZSBwYWNrMjsKKworcHVibGljIGNsYXNzIEIgeworICBwcm90ZWN0ZWQgQigpe30KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZU1lbWJlcnMvc2NyMTE4NzEvYWZ0ZXIvcGFjazEvQS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVNZW1iZXJzL3NjcjExODcxL2FmdGVyL3BhY2sxL0EuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45YWIzOGQyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVNZW1iZXJzL3NjcjExODcxL2FmdGVyL3BhY2sxL0EuamF2YQpAQCAtMCwwICsxLDcgQEAKK3BhY2thZ2UgcGFjazE7CisKK3B1YmxpYyBjbGFzcyBBIHsKKworICAgIGNsYXNzIElubmVyIHsKKyAgICB9IAorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlTWVtYmVycy9zY3IxMTg3MS9hZnRlci9wYWNrMS9CLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZU1lbWJlcnMvc2NyMTE4NzEvYWZ0ZXIvcGFjazEvQi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY4OTc0NzUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZU1lbWJlcnMvc2NyMTE4NzEvYWZ0ZXIvcGFjazEvQi5qYXZhCkBAIC0wLDAgKzEsNyBAQAorcGFja2FnZSBwYWNrMTsKKworcHVibGljIGNsYXNzIEIgeworICAgIHN0YXRpYyB2b2lkIG1ldGhvZCgpIHsKKyAgICAgICAgQS5Jbm5lciBpID0gbmV3IEEuSW5uZXIoKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVNZW1iZXJzL3NjcjExODcxL2JlZm9yZS9wYWNrMS9BLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZU1lbWJlcnMvc2NyMTE4NzEvYmVmb3JlL3BhY2sxL0EuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZDkwZjkyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVNZW1iZXJzL3NjcjExODcxL2JlZm9yZS9wYWNrMS9BLmphdmEKQEAgLTAsMCArMSwxMCBAQAorcGFja2FnZSBwYWNrMTsKKworcHVibGljIGNsYXNzIEEgeworICAgIHN0YXRpYyB2b2lkIG1ldGhvZCgpIHsKKyAgICAgICAgSW5uZXIgaSA9IG5ldyBJbm5lcigpOworICAgIH0KKworICAgIGNsYXNzIElubmVyIHsKKyAgICB9IAorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlTWVtYmVycy9zY3IxMTg3MS9iZWZvcmUvcGFjazEvQi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVNZW1iZXJzL3NjcjExODcxL2JlZm9yZS9wYWNrMS9CLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDc4YTZmYwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlTWVtYmVycy9zY3IxMTg3MS9iZWZvcmUvcGFjazEvQi5qYXZhCkBAIC0wLDAgKzEsNCBAQAorcGFja2FnZSBwYWNrMTsKKworcHVibGljIGNsYXNzIEIgeworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlTWVtYmVycy9zY3I0MDA2NC9hZnRlci9UZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZU1lbWJlcnMvc2NyNDAwNjQvYWZ0ZXIvVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJmNzIzOWIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZU1lbWJlcnMvc2NyNDAwNjQvYWZ0ZXIvVGVzdC5qYXZhCkBAIC0wLDAgKzEsMTQgQEAKK2NsYXNzIFRlc3QgeworCisgICAgdm9pZCB1KCkgeworCisgICAgfQorfQorCitjbGFzcyBUZXN0MSB7CisgICAgeworICAgICAgICBpID0gMDsKKyAgICB9CisKKyAgICBzdGF0aWMgaW50IGk7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVNZW1iZXJzL3NjcjQwMDY0L2JlZm9yZS9UZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZU1lbWJlcnMvc2NyNDAwNjQvYmVmb3JlL1Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMGNkMWI5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVNZW1iZXJzL3NjcjQwMDY0L2JlZm9yZS9UZXN0LmphdmEKQEAgLTAsMCArMSwxNSBAQAoraW1wb3J0IHN0YXRpYyBUZXN0Lmk7CisKK2NsYXNzIFRlc3QgeworICAgIHN0YXRpYyBpbnQgaTsKKworICAgIHZvaWQgdSgpIHsKKworICAgIH0KK30KKworY2xhc3MgVGVzdDEgeworICAgIHsKKyAgICAgICAgaSA9IDA7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlTWVtYmVycy9zY3I0MDk0Ny9hZnRlci9UZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZU1lbWJlcnMvc2NyNDA5NDcvYWZ0ZXIvVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI4YWM3NTkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZU1lbWJlcnMvc2NyNDA5NDcvYWZ0ZXIvVGVzdC5qYXZhCkBAIC0wLDAgKzEsMTEgQEAKK2NsYXNzIEEgeworfQorCitjbGFzcyBUZXN0IHsKKworICAgIHN0YXRpYyB2b2lkIGZvbygpIHsKKyAgICAgIGJhcigpOyAvLyBub3RlIHJlZHVuZGFudCAiQSIgcXVhbGlmaWVyCisgICAgfQorCisgICAgc3RhdGljIHZvaWQgYmFyKCkge30KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZU1lbWJlcnMvc2NyNDA5NDcvYmVmb3JlL1Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlTWVtYmVycy9zY3I0MDk0Ny9iZWZvcmUvVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBlYmY3YzUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZU1lbWJlcnMvc2NyNDA5NDcvYmVmb3JlL1Rlc3QuamF2YQpAQCAtMCwwICsxLDEwIEBACitjbGFzcyBBIHsKKyAgc3RhdGljIHZvaWQgZm9vKCkgeworICAgIEEuYmFyKCk7IC8vIG5vdGUgcmVkdW5kYW50ICJBIiBxdWFsaWZpZXIKKyAgfQorICBzdGF0aWMgdm9pZCBiYXIoKSB7fQorfQorCitjbGFzcyBUZXN0IHsKKworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlTWVtYmVycy9zdGF0aWNJbXBvcnQvYWZ0ZXIvQS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVNZW1iZXJzL3N0YXRpY0ltcG9ydC9hZnRlci9BLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTNhNTdjYQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlTWVtYmVycy9zdGF0aWNJbXBvcnQvYWZ0ZXIvQS5qYXZhCkBAIC0wLDAgKzEsOCBAQAoraW1wb3J0IHN0YXRpYyBCLio7CisKK3B1YmxpYyBjbGFzcyBBIHsKKyAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgeworICAgIFN5c3RlbS5vdXQucHJpbnRsbigiWCA9ICIgKyBYKTsKKyAgICBTeXN0ZW0ub3V0LnByaW50bG4oIlogPSAiICsgWik7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZU1lbWJlcnMvc3RhdGljSW1wb3J0L2FmdGVyL0IuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlTWVtYmVycy9zdGF0aWNJbXBvcnQvYWZ0ZXIvQi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjViNjU4MjIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZU1lbWJlcnMvc3RhdGljSW1wb3J0L2FmdGVyL0IuamF2YQpAQCAtMCwwICsxLDQgQEAKK3B1YmxpYyBjbGFzcyBCIHsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBYID0gIngiOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFogPSAieiI7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVNZW1iZXJzL3N0YXRpY0ltcG9ydC9hZnRlci9DLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZU1lbWJlcnMvc3RhdGljSW1wb3J0L2FmdGVyL0MuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNWVmMDFjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVNZW1iZXJzL3N0YXRpY0ltcG9ydC9hZnRlci9DLmphdmEKQEAgLTAsMCArMSwyIEBACitwdWJsaWMgY2xhc3MgQyB7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVNZW1iZXJzL3N0YXRpY0ltcG9ydC9iZWZvcmUvQS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVNZW1iZXJzL3N0YXRpY0ltcG9ydC9iZWZvcmUvQS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA1MDBkZjEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZU1lbWJlcnMvc3RhdGljSW1wb3J0L2JlZm9yZS9BLmphdmEKQEAgLTAsMCArMSw5IEBACitpbXBvcnQgc3RhdGljIEMuKjsKK2ltcG9ydCBzdGF0aWMgQi4qOworCitwdWJsaWMgY2xhc3MgQSB7CisgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKKyAgICBTeXN0ZW0ub3V0LnByaW50bG4oIlggPSAiICsgWCk7CisgICAgU3lzdGVtLm91dC5wcmludGxuKCJaID0gIiArIFopOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVNZW1iZXJzL3N0YXRpY0ltcG9ydC9iZWZvcmUvQi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVNZW1iZXJzL3N0YXRpY0ltcG9ydC9iZWZvcmUvQi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI2NTk4Y2UKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZU1lbWJlcnMvc3RhdGljSW1wb3J0L2JlZm9yZS9CLmphdmEKQEAgLTAsMCArMSwzIEBACitwdWJsaWMgY2xhc3MgQiB7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgWCA9ICJ4IjsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZU1lbWJlcnMvc3RhdGljSW1wb3J0L2JlZm9yZS9DLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZU1lbWJlcnMvc3RhdGljSW1wb3J0L2JlZm9yZS9DLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTJkMGU3NgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlTWVtYmVycy9zdGF0aWNJbXBvcnQvYmVmb3JlL0MuamF2YQpAQCAtMCwwICsxLDMgQEAKK3B1YmxpYyBjbGFzcyBDIHsKKyAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgWiA9ICJ6IjsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZU1lbWJlcnMvc3RhdGljSW1wb3J0QW5kT3ZlcnJpZGVuTWV0aG9kcy9hZnRlci9iYXIvQS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVNZW1iZXJzL3N0YXRpY0ltcG9ydEFuZE92ZXJyaWRlbk1ldGhvZHMvYWZ0ZXIvYmFyL0EuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYzA4MzFiNQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlTWVtYmVycy9zdGF0aWNJbXBvcnRBbmRPdmVycmlkZW5NZXRob2RzL2FmdGVyL2Jhci9BLmphdmEKQEAgLTAsMCArMSw1IEBACitwYWNrYWdlIGJhcjsKKworcHVibGljIGNsYXNzIEEgeworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBmb28oKSB7fQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlTWVtYmVycy9zdGF0aWNJbXBvcnRBbmRPdmVycmlkZW5NZXRob2RzL2FmdGVyL2Jhci9CLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZU1lbWJlcnMvc3RhdGljSW1wb3J0QW5kT3ZlcnJpZGVuTWV0aG9kcy9hZnRlci9iYXIvQi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAxMGYwMGMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZU1lbWJlcnMvc3RhdGljSW1wb3J0QW5kT3ZlcnJpZGVuTWV0aG9kcy9hZnRlci9iYXIvQi5qYXZhCkBAIC0wLDAgKzEsNSBAQAorcGFja2FnZSBiYXI7CisKK3B1YmxpYyBjbGFzcyBCIHsKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgZm9vKFN0cmluZyBzKSB7fQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlTWVtYmVycy9zdGF0aWNJbXBvcnRBbmRPdmVycmlkZW5NZXRob2RzL2FmdGVyL2Jhci9VLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZU1lbWJlcnMvc3RhdGljSW1wb3J0QW5kT3ZlcnJpZGVuTWV0aG9kcy9hZnRlci9iYXIvVS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJhNDFmZDgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZU1lbWJlcnMvc3RhdGljSW1wb3J0QW5kT3ZlcnJpZGVuTWV0aG9kcy9hZnRlci9iYXIvVS5qYXZhCkBAIC0wLDAgKzEsNyBAQAoraW1wb3J0IGJhci5BOworCitjbGFzcyBVc2FnZSB7CisgIHZvaWQgYmFyKCkgeworICAgIEEuZm9vKCk7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZU1lbWJlcnMvc3RhdGljSW1wb3J0QW5kT3ZlcnJpZGVuTWV0aG9kcy9iZWZvcmUvYmFyL0EuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlTWVtYmVycy9zdGF0aWNJbXBvcnRBbmRPdmVycmlkZW5NZXRob2RzL2JlZm9yZS9iYXIvQS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUxNzMxNDcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZU1lbWJlcnMvc3RhdGljSW1wb3J0QW5kT3ZlcnJpZGVuTWV0aG9kcy9iZWZvcmUvYmFyL0EuamF2YQpAQCAtMCwwICsxLDQgQEAKK3BhY2thZ2UgYmFyOworCitwdWJsaWMgY2xhc3MgQSB7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVNZW1iZXJzL3N0YXRpY0ltcG9ydEFuZE92ZXJyaWRlbk1ldGhvZHMvYmVmb3JlL2Jhci9CLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZU1lbWJlcnMvc3RhdGljSW1wb3J0QW5kT3ZlcnJpZGVuTWV0aG9kcy9iZWZvcmUvYmFyL0IuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNWZmMzA3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVNZW1iZXJzL3N0YXRpY0ltcG9ydEFuZE92ZXJyaWRlbk1ldGhvZHMvYmVmb3JlL2Jhci9CLmphdmEKQEAgLTAsMCArMSw2IEBACitwYWNrYWdlIGJhcjsKKworcHVibGljIGNsYXNzIEIgeworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBmb28oKSB7fQorICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBmb28oU3RyaW5nIHMpIHt9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVNZW1iZXJzL3N0YXRpY0ltcG9ydEFuZE92ZXJyaWRlbk1ldGhvZHMvYmVmb3JlL2Jhci9VLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZU1lbWJlcnMvc3RhdGljSW1wb3J0QW5kT3ZlcnJpZGVuTWV0aG9kcy9iZWZvcmUvYmFyL1UuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iN2NhZjczCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVNZW1iZXJzL3N0YXRpY0ltcG9ydEFuZE92ZXJyaWRlbk1ldGhvZHMvYmVmb3JlL2Jhci9VLmphdmEKQEAgLTAsMCArMSw3IEBACitpbXBvcnQgc3RhdGljIGJhci5CLmZvbzsKKworY2xhc3MgVXNhZ2UgeworICB2b2lkIGJhcigpIHsKKyAgICBmb28oKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlTWVtYmVycy90d29NZXRob2RzL2FmdGVyL3BhY2sxL0EuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlTWVtYmVycy90d29NZXRob2RzL2FmdGVyL3BhY2sxL0EuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MjYwOTlhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVNZW1iZXJzL3R3b01ldGhvZHMvYWZ0ZXIvcGFjazEvQS5qYXZhCkBAIC0wLDAgKzEsNSBAQAorcGFja2FnZSBwYWNrMTsKKworcHVibGljIGNsYXNzIEEgeworCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVNZW1iZXJzL3R3b01ldGhvZHMvYWZ0ZXIvcGFjazEvQy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVNZW1iZXJzL3R3b01ldGhvZHMvYWZ0ZXIvcGFjazEvQy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZhMmIzZWIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZU1lbWJlcnMvdHdvTWV0aG9kcy9hZnRlci9wYWNrMS9DLmphdmEKQEAgLTAsMCArMSwxNCBAQAorcGFja2FnZSBwYWNrMTsKKworcHVibGljIGNsYXNzIEMgeworICAgIHB1YmxpYyBzdGF0aWMgaW50IG91ckZpZWxkID0gMTA7CisKKyAgICBwcml2YXRlIHN0YXRpYyB2b2lkIGJhcigpIHsKKyAgICAgICAgZm9vKCk7CisgICAgICAgIG91ckZpZWxkID0gMTE7CisgICAgfQorCisgICAgcHVibGljIHN0YXRpYyB2b2lkIGZvbygpIHsKKyAgICAgICAgYmFyKCk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlTWVtYmVycy90d29NZXRob2RzL2FmdGVyL3BhY2syL0IuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlTWVtYmVycy90d29NZXRob2RzL2FmdGVyL3BhY2syL0IuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZjk2M2I1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVNZW1iZXJzL3R3b01ldGhvZHMvYWZ0ZXIvcGFjazIvQi5qYXZhCkBAIC0wLDAgKzEsNCBAQAorcGFja2FnZSBwYWNrMjsKKworcHVibGljIGNsYXNzIEIgeworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlTWVtYmVycy90d29NZXRob2RzL2JlZm9yZS9wYWNrMS9BLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZU1lbWJlcnMvdHdvTWV0aG9kcy9iZWZvcmUvcGFjazEvQS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVkOGI3Mjg4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVNZW1iZXJzL3R3b01ldGhvZHMvYmVmb3JlL3BhY2sxL0EuamF2YQpAQCAtMCwwICsxLDEzIEBACitwYWNrYWdlIHBhY2sxOworCitwdWJsaWMgY2xhc3MgQSB7CisgICAgcHVibGljIHN0YXRpYyBpbnQgb3VyRmllbGQgPSAxMDsKKyAgICBwcml2YXRlIHN0YXRpYyB2b2lkIGJhcigpIHsKKyAgICAgICAgZm9vKCk7CisgICAgICAgIG91ckZpZWxkID0gMTE7CisgICAgfQorCisgICAgcHVibGljIHN0YXRpYyB2b2lkIGZvbygpIHsKKyAgICAgICAgYmFyKCk7CisgICAgfSAgICAKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZU1lbWJlcnMvdHdvTWV0aG9kcy9iZWZvcmUvcGFjazEvQy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVNZW1iZXJzL3R3b01ldGhvZHMvYmVmb3JlL3BhY2sxL0MuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYjdlM2UwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVNZW1iZXJzL3R3b01ldGhvZHMvYmVmb3JlL3BhY2sxL0MuamF2YQpAQCAtMCwwICsxLDQgQEAKK3BhY2thZ2UgcGFjazE7CisKK3B1YmxpYyBjbGFzcyBDIHsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZU1lbWJlcnMvdHdvTWV0aG9kcy9iZWZvcmUvcGFjazIvQi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVNZW1iZXJzL3R3b01ldGhvZHMvYmVmb3JlL3BhY2syL0IuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZjk2M2I1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVNZW1iZXJzL3R3b01ldGhvZHMvYmVmb3JlL3BhY2syL0IuamF2YQpAQCAtMCwwICsxLDQgQEAKK3BhY2thZ2UgcGFjazI7CisKK3B1YmxpYyBjbGFzcyBCIHsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZU1lbWJlcnMvdW50b3VjaGVkVmlzaWJpbGl0eS9hZnRlci9wYWNrMS9BLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZU1lbWJlcnMvdW50b3VjaGVkVmlzaWJpbGl0eS9hZnRlci9wYWNrMS9BLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmRmYzcwZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlTWVtYmVycy91bnRvdWNoZWRWaXNpYmlsaXR5L2FmdGVyL3BhY2sxL0EuamF2YQpAQCAtMCwwICsxLDIwIEBACisvKgorICogQ29weXJpZ2h0IDIwMDAtMjAxMSBKZXRCcmFpbnMgcy5yLm8uCisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcGFja2FnZSBwYWNrMTsKKworcHVibGljIGNsYXNzIEEgeworCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVNZW1iZXJzL3VudG91Y2hlZFZpc2liaWxpdHkvYWZ0ZXIvcGFjazEvQy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVNZW1iZXJzL3VudG91Y2hlZFZpc2liaWxpdHkvYWZ0ZXIvcGFjazEvQy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFjMjAwYjEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZU1lbWJlcnMvdW50b3VjaGVkVmlzaWJpbGl0eS9hZnRlci9wYWNrMS9DLmphdmEKQEAgLTAsMCArMSwyMyBAQAorLyoKKyAqIENvcHlyaWdodCAyMDAwLTIwMTEgSmV0QnJhaW5zIHMuci5vLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2UgcGFjazE7CitwdWJsaWMgY2xhc3MgQyB7CisgICAgcHVibGljIHN0YXRpYyB2b2lkIGZvbygpIHsKKyAgICAgICAgYmFyKCk7CisgICAgfQorCisgICAgcHJpdmF0ZSBzdGF0aWMgdm9pZCBiYXIoKXt9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVNZW1iZXJzL3VudG91Y2hlZFZpc2liaWxpdHkvYWZ0ZXIvcGFjazIvQi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVNZW1iZXJzL3VudG91Y2hlZFZpc2liaWxpdHkvYWZ0ZXIvcGFjazIvQi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUzZDU0OWEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZU1lbWJlcnMvdW50b3VjaGVkVmlzaWJpbGl0eS9hZnRlci9wYWNrMi9CLmphdmEKQEAgLTAsMCArMSwyMiBAQAorLyoKKyAqIENvcHlyaWdodCAyMDAwLTIwMTEgSmV0QnJhaW5zIHMuci5vLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2UgcGFjazI7CitpbXBvcnQgcGFjazEuKjsKK3B1YmxpYyBjbGFzcyBCIHsKKyAgcHJvdGVjdGVkIEIoKXsKKyAgICBDLmZvbygpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVNZW1iZXJzL3VudG91Y2hlZFZpc2liaWxpdHkvYmVmb3JlL3BhY2sxL0EuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlTWVtYmVycy91bnRvdWNoZWRWaXNpYmlsaXR5L2JlZm9yZS9wYWNrMS9BLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjljNmE5YwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlTWVtYmVycy91bnRvdWNoZWRWaXNpYmlsaXR5L2JlZm9yZS9wYWNrMS9BLmphdmEKQEAgLTAsMCArMSwyNCBAQAorLyoKKyAqIENvcHlyaWdodCAyMDAwLTIwMTEgSmV0QnJhaW5zIHMuci5vLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2UgcGFjazE7CisKK3B1YmxpYyBjbGFzcyBBIHsKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgZm9vKCkgeworICAgICAgICBiYXIoKTsKKyAgICB9CisKKyAgICBwcml2YXRlIHN0YXRpYyB2b2lkIGJhcigpe30KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZU1lbWJlcnMvdW50b3VjaGVkVmlzaWJpbGl0eS9iZWZvcmUvcGFjazEvQy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVNZW1iZXJzL3VudG91Y2hlZFZpc2liaWxpdHkvYmVmb3JlL3BhY2sxL0MuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNzdmMjA0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVNZW1iZXJzL3VudG91Y2hlZFZpc2liaWxpdHkvYmVmb3JlL3BhY2sxL0MuamF2YQpAQCAtMCwwICsxLDE3IEBACisvKgorICogQ29weXJpZ2h0IDIwMDAtMjAxMSBKZXRCcmFpbnMgcy5yLm8uCisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcGFja2FnZSBwYWNrMTsKK3B1YmxpYyBjbGFzcyBDIHt9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVNZW1iZXJzL3VudG91Y2hlZFZpc2liaWxpdHkvYmVmb3JlL3BhY2syL0IuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlTWVtYmVycy91bnRvdWNoZWRWaXNpYmlsaXR5L2JlZm9yZS9wYWNrMi9CLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTQxNzAzZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlTWVtYmVycy91bnRvdWNoZWRWaXNpYmlsaXR5L2JlZm9yZS9wYWNrMi9CLmphdmEKQEAgLTAsMCArMSwyMiBAQAorLyoKKyAqIENvcHlyaWdodCAyMDAwLTIwMTEgSmV0QnJhaW5zIHMuci5vLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2UgcGFjazI7CitpbXBvcnQgcGFjazEuKjsKK3B1YmxpYyBjbGFzcyBCIHsKKyAgcHJvdGVjdGVkIEIoKXsKKyAgICBBLmZvbygpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVNZW1iZXJzL3dlaXJkRGVjbGFyYXRpb24vYWZ0ZXIvQS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVNZW1iZXJzL3dlaXJkRGVjbGFyYXRpb24vYWZ0ZXIvQS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjViZDcxYjIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZU1lbWJlcnMvd2VpcmREZWNsYXJhdGlvbi9hZnRlci9BLmphdmEKQEAgLTAsMCArMSwzIEBACitwdWJsaWMgY2xhc3MgQSB7CisgICAgZmluYWwgc3RhdGljIFN0cmluZyBSSUdIVF9KVVNUSUZJRURfUFJFRklYICA9ICAgIiVsIiA7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVNZW1iZXJzL3dlaXJkRGVjbGFyYXRpb24vYWZ0ZXIvQi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVNZW1iZXJzL3dlaXJkRGVjbGFyYXRpb24vYWZ0ZXIvQi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRiZTZlY2EKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZU1lbWJlcnMvd2VpcmREZWNsYXJhdGlvbi9hZnRlci9CLmphdmEKQEAgLTAsMCArMSw0IEBACitwdWJsaWMgY2xhc3MgQiB7CisgICAgZmluYWwgc3RhdGljIFN0cmluZworICAgICAgICAgICAgTEVGVF9KVVNUSUZJRURfUFJFRklYICAgPSAgICIlciI7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVNZW1iZXJzL3dlaXJkRGVjbGFyYXRpb24vYmVmb3JlL0EuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlTWVtYmVycy93ZWlyZERlY2xhcmF0aW9uL2JlZm9yZS9BLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODQxYzVjYgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlTWVtYmVycy93ZWlyZERlY2xhcmF0aW9uL2JlZm9yZS9BLmphdmEKQEAgLTAsMCArMSw1IEBACitwdWJsaWMgY2xhc3MgQSB7CisgICBmaW5hbCBzdGF0aWMgU3RyaW5nCisgICAgICAgICAgIExFRlRfSlVTVElGSUVEX1BSRUZJWCAgID0gICAiJXIiICwKKyAgICAgICAgICAgUklHSFRfSlVTVElGSUVEX1BSRUZJWCAgPSAgICIlbCIgOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlTWVtYmVycy93ZWlyZERlY2xhcmF0aW9uL2JlZm9yZS9CLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZU1lbWJlcnMvd2VpcmREZWNsYXJhdGlvbi9iZWZvcmUvQi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmViYmU0ZGMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZU1lbWJlcnMvd2VpcmREZWNsYXJhdGlvbi9iZWZvcmUvQi5qYXZhCkBAIC0wLDAgKzEsMiBAQAorcHVibGljIGNsYXNzIEIgeworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlTWVtYmVycy93cml0YWJsZUZpZWxkL2FmdGVyL0EuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlTWVtYmVycy93cml0YWJsZUZpZWxkL2FmdGVyL0EuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NzcyZmIxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVNZW1iZXJzL3dyaXRhYmxlRmllbGQvYWZ0ZXIvQS5qYXZhCkBAIC0wLDAgKzEsNCBAQAorcHVibGljIGludGVyZmFjZSBBIHsKKworICAgIFN0cmluZyBPTkUgPSAiIjsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZU1lbWJlcnMvd3JpdGFibGVGaWVsZC9hZnRlci9CLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZU1lbWJlcnMvd3JpdGFibGVGaWVsZC9hZnRlci9CLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGE3MGEyNQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlTWVtYmVycy93cml0YWJsZUZpZWxkL2FmdGVyL0IuamF2YQpAQCAtMCwwICsxLDYgQEAKK3B1YmxpYyBjbGFzcyBCIHsKKworICAgIHZvaWQgZm9vKCkgeworICAgIEEuT05FID0gImZvbyI7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZU1lbWJlcnMvd3JpdGFibGVGaWVsZC9iZWZvcmUvQS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVNZW1iZXJzL3dyaXRhYmxlRmllbGQvYmVmb3JlL0EuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zOWFiYzAyOAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlTWVtYmVycy93cml0YWJsZUZpZWxkL2JlZm9yZS9BLmphdmEKQEAgLTAsMCArMSwzIEBACitwdWJsaWMgaW50ZXJmYWNlIEEgeworICAgIAorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlTWVtYmVycy93cml0YWJsZUZpZWxkL2JlZm9yZS9CLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZU1lbWJlcnMvd3JpdGFibGVGaWVsZC9iZWZvcmUvQi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM1OTMzZGMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZU1lbWJlcnMvd3JpdGFibGVGaWVsZC9iZWZvcmUvQi5qYXZhCkBAIC0wLDAgKzEsNyBAQAorcHVibGljIGNsYXNzIEIgeworICBwdWJsaWMgc3RhdGljIFN0cmluZyBPTkUgPSAiIjsKKworICB2b2lkIGZvbygpIHsKKyAgICBPTkUgPSAiZm9vIjsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlUGFja2FnZS9pbnNpZGVQYWNrYWdlL2FmdGVyL2EvYi9hL0EuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlUGFja2FnZS9pbnNpZGVQYWNrYWdlL2FmdGVyL2EvYi9hL0EuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMmY3N2IxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVQYWNrYWdlL2luc2lkZVBhY2thZ2UvYWZ0ZXIvYS9iL2EvQS5qYXZhCkBAIC0wLDAgKzEsNCBAQAorcGFja2FnZSBhLmIuYTsKKworY2xhc3MgQSB7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVQYWNrYWdlL2luc2lkZVBhY2thZ2UvYWZ0ZXIvYS9iL2EvYi9lbXB0eS50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZVBhY2thZ2UvaW5zaWRlUGFja2FnZS9hZnRlci9hL2IvYS9iL2VtcHR5LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNjlkZTI5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVQYWNrYWdlL2luc2lkZVBhY2thZ2UvYWZ0ZXIvYS9iL2EvYi9lbXB0eS50eHQKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlUGFja2FnZS9pbnNpZGVQYWNrYWdlL2JlZm9yZS9hL0EuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlUGFja2FnZS9pbnNpZGVQYWNrYWdlL2JlZm9yZS9hL0EuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZTk5ODVjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVQYWNrYWdlL2luc2lkZVBhY2thZ2UvYmVmb3JlL2EvQS5qYXZhCkBAIC0wLDAgKzEsNCBAQAorcGFja2FnZSBhOworCitjbGFzcyBBIHsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZVBhY2thZ2UvaW5zaWRlUGFja2FnZS9iZWZvcmUvYS9iL2VtcHR5LnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlUGFja2FnZS9pbnNpZGVQYWNrYWdlL2JlZm9yZS9hL2IvZW1wdHkudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU2OWRlMjkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZVBhY2thZ2UvaW5zaWRlUGFja2FnZS9iZWZvcmUvYS9iL2VtcHR5LnR4dApkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVQYWNrYWdlL21vdmVTaW5nbGUvYWZ0ZXIvcGFjazIvVXNlcjEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlUGFja2FnZS9tb3ZlU2luZ2xlL2FmdGVyL3BhY2syL1VzZXIxLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDdhNmQwZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlUGFja2FnZS9tb3ZlU2luZ2xlL2FmdGVyL3BhY2syL1VzZXIxLmphdmEKQEAgLTAsMCArMSw3IEBACitwYWNrYWdlIHBhY2syOworCitpbXBvcnQgdGFyZ2V0LnBhY2sxLkNsYXNzMTsKKworcHVibGljIGNsYXNzIFVzZXIxIHsKKyAgQ2xhc3MxIGE7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVQYWNrYWdlL21vdmVTaW5nbGUvYWZ0ZXIvcGFjazIvVXNlcjIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlUGFja2FnZS9tb3ZlU2luZ2xlL2FmdGVyL3BhY2syL1VzZXIyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2U3ODE5NAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlUGFja2FnZS9tb3ZlU2luZ2xlL2FmdGVyL3BhY2syL1VzZXIyLmphdmEKQEAgLTAsMCArMSw3IEBACitwYWNrYWdlIHBhY2syOworCitpbXBvcnQgdGFyZ2V0LnBhY2sxLio7CisKK3B1YmxpYyBjbGFzcyBVc2VyMSB7CisgIENsYXNzMSBhOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlUGFja2FnZS9tb3ZlU2luZ2xlL2FmdGVyL3RhcmdldC9lbXB0eS50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZVBhY2thZ2UvbW92ZVNpbmdsZS9hZnRlci90YXJnZXQvZW1wdHkudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU2OWRlMjkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZVBhY2thZ2UvbW92ZVNpbmdsZS9hZnRlci90YXJnZXQvZW1wdHkudHh0CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZVBhY2thZ2UvbW92ZVNpbmdsZS9hZnRlci90YXJnZXQvcGFjazEvQ2xhc3MxLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZVBhY2thZ2UvbW92ZVNpbmdsZS9hZnRlci90YXJnZXQvcGFjazEvQ2xhc3MxLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDk0ZWFhZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlUGFja2FnZS9tb3ZlU2luZ2xlL2FmdGVyL3RhcmdldC9wYWNrMS9DbGFzczEuamF2YQpAQCAtMCwwICsxLDQgQEAKK3BhY2thZ2UgdGFyZ2V0LnBhY2sxOworCitwdWJsaWMgY2xhc3MgQ2xhc3MxIHsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZVBhY2thZ2UvbW92ZVNpbmdsZS9iZWZvcmUvcGFjazEvQ2xhc3MxLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZVBhY2thZ2UvbW92ZVNpbmdsZS9iZWZvcmUvcGFjazEvQ2xhc3MxLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjMxZmUwNgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlUGFja2FnZS9tb3ZlU2luZ2xlL2JlZm9yZS9wYWNrMS9DbGFzczEuamF2YQpAQCAtMCwwICsxLDQgQEAKK3BhY2thZ2UgcGFjazE7CisKK3B1YmxpYyBjbGFzcyBDbGFzczEgeworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlUGFja2FnZS9tb3ZlU2luZ2xlL2JlZm9yZS9wYWNrMi9Vc2VyMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVQYWNrYWdlL21vdmVTaW5nbGUvYmVmb3JlL3BhY2syL1VzZXIxLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDcyODdhNAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlUGFja2FnZS9tb3ZlU2luZ2xlL2JlZm9yZS9wYWNrMi9Vc2VyMS5qYXZhCkBAIC0wLDAgKzEsNyBAQAorcGFja2FnZSBwYWNrMjsKKworaW1wb3J0IHBhY2sxLkNsYXNzMTsKKworcHVibGljIGNsYXNzIFVzZXIxIHsKKyAgQ2xhc3MxIGE7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVQYWNrYWdlL21vdmVTaW5nbGUvYmVmb3JlL3BhY2syL1VzZXIyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZVBhY2thZ2UvbW92ZVNpbmdsZS9iZWZvcmUvcGFjazIvVXNlcjIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hY2YzY2U1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVQYWNrYWdlL21vdmVTaW5nbGUvYmVmb3JlL3BhY2syL1VzZXIyLmphdmEKQEAgLTAsMCArMSw3IEBACitwYWNrYWdlIHBhY2syOworCitpbXBvcnQgcGFjazEuKjsKKworcHVibGljIGNsYXNzIFVzZXIxIHsKKyAgQ2xhc3MxIGE7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVQYWNrYWdlL21vdmVTaW5nbGUvYmVmb3JlL3RhcmdldC9lbXB0eS50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZVBhY2thZ2UvbW92ZVNpbmdsZS9iZWZvcmUvdGFyZ2V0L2VtcHR5LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNjlkZTI5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVQYWNrYWdlL21vdmVTaW5nbGUvYmVmb3JlL3RhcmdldC9lbXB0eS50eHQKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlUGFja2FnZS9xdWFsaWZpZWRSZWYvYWZ0ZXIvVXNhZ2UuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlUGFja2FnZS9xdWFsaWZpZWRSZWYvYWZ0ZXIvVXNhZ2UuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMjM0MTFlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVQYWNrYWdlL3F1YWxpZmllZFJlZi9hZnRlci9Vc2FnZS5qYXZhCkBAIC0wLDAgKzEsNSBAQAorcHVibGljIGNsYXNzIFVzYWdlIHsKKyAgICBPYmplY3QgbWV0aG9kKCkgeworICAgICAgICByZXR1cm4gcGFja2FnZTIudGVzdC5BLm1ldGhvZCgpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZVBhY2thZ2UvcXVhbGlmaWVkUmVmL2FmdGVyL3BhY2thZ2UxL2VtcHR5LnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlUGFja2FnZS9xdWFsaWZpZWRSZWYvYWZ0ZXIvcGFja2FnZTEvZW1wdHkudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU2OWRlMjkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZVBhY2thZ2UvcXVhbGlmaWVkUmVmL2FmdGVyL3BhY2thZ2UxL2VtcHR5LnR4dApkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVQYWNrYWdlL3F1YWxpZmllZFJlZi9hZnRlci9wYWNrYWdlMi9lbXB0eS50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZVBhY2thZ2UvcXVhbGlmaWVkUmVmL2FmdGVyL3BhY2thZ2UyL2VtcHR5LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNjlkZTI5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVQYWNrYWdlL3F1YWxpZmllZFJlZi9hZnRlci9wYWNrYWdlMi9lbXB0eS50eHQKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlUGFja2FnZS9xdWFsaWZpZWRSZWYvYWZ0ZXIvcGFja2FnZTIvdGVzdC9BLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZVBhY2thZ2UvcXVhbGlmaWVkUmVmL2FmdGVyL3BhY2thZ2UyL3Rlc3QvQS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZlMGU1OGQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZVBhY2thZ2UvcXVhbGlmaWVkUmVmL2FmdGVyL3BhY2thZ2UyL3Rlc3QvQS5qYXZhCkBAIC0wLDAgKzEsNyBAQAorcGFja2FnZSBwYWNrYWdlMi50ZXN0OworCitwdWJsaWMgY2xhc3MgQSB7CisgICAgc3RhdGljIE9iamVjdCBtZXRob2QoKSB7CisgICAgICAgIHJldHVybiBudWxsOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZVBhY2thZ2UvcXVhbGlmaWVkUmVmL2JlZm9yZS9Vc2FnZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVQYWNrYWdlL3F1YWxpZmllZFJlZi9iZWZvcmUvVXNhZ2UuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYjIyYTU1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVQYWNrYWdlL3F1YWxpZmllZFJlZi9iZWZvcmUvVXNhZ2UuamF2YQpAQCAtMCwwICsxLDUgQEAKK3B1YmxpYyBjbGFzcyBVc2FnZSB7CisgICAgT2JqZWN0IG1ldGhvZCgpIHsKKyAgICAgICAgcmV0dXJuIHBhY2thZ2UxLnRlc3QuQS5tZXRob2QoKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVQYWNrYWdlL3F1YWxpZmllZFJlZi9iZWZvcmUvcGFja2FnZTEvZW1wdHkudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVQYWNrYWdlL3F1YWxpZmllZFJlZi9iZWZvcmUvcGFja2FnZTEvZW1wdHkudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU2OWRlMjkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZVBhY2thZ2UvcXVhbGlmaWVkUmVmL2JlZm9yZS9wYWNrYWdlMS9lbXB0eS50eHQKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlUGFja2FnZS9xdWFsaWZpZWRSZWYvYmVmb3JlL3BhY2thZ2UxL3Rlc3QvQS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVQYWNrYWdlL3F1YWxpZmllZFJlZi9iZWZvcmUvcGFja2FnZTEvdGVzdC9BLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjQ4OTYxZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlUGFja2FnZS9xdWFsaWZpZWRSZWYvYmVmb3JlL3BhY2thZ2UxL3Rlc3QvQS5qYXZhCkBAIC0wLDAgKzEsNyBAQAorcGFja2FnZSBwYWNrYWdlMS50ZXN0OworCitwdWJsaWMgY2xhc3MgQSB7CisgICAgc3RhdGljIE9iamVjdCBtZXRob2QoKSB7CisgICAgICAgIHJldHVybiBudWxsOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZVBhY2thZ2UvcXVhbGlmaWVkUmVmL2JlZm9yZS9wYWNrYWdlMi9lbXB0eS50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZVBhY2thZ2UvcXVhbGlmaWVkUmVmL2JlZm9yZS9wYWNrYWdlMi9lbXB0eS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTY5ZGUyOQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlUGFja2FnZS9xdWFsaWZpZWRSZWYvYmVmb3JlL3BhY2thZ2UyL2VtcHR5LnR4dApkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVQYWNrYWdlQXNEaXIvbW92ZVBhY2thZ2UvYWZ0ZXIvc3JjMS9wYWNrMi9Vc2FnZXNGcm9tQm90aC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVQYWNrYWdlQXNEaXIvbW92ZVBhY2thZ2UvYWZ0ZXIvc3JjMS9wYWNrMi9Vc2FnZXNGcm9tQm90aC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZkNDQxMGYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZVBhY2thZ2VBc0Rpci9tb3ZlUGFja2FnZS9hZnRlci9zcmMxL3BhY2syL1VzYWdlc0Zyb21Cb3RoLmphdmEKQEAgLTAsMCArMSw5IEBACitwYWNrYWdlIHBhY2syOworCitpbXBvcnQgcGFjazEuKjsKK2ltcG9ydCB0YXJnZXQucGFjazEuUzE7CisKK3B1YmxpYyBjbGFzcyBVc2FnZXNGcm9tQm90aCB7CisgIFMxIHMxOworICBTMiBzMjsKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlUGFja2FnZUFzRGlyL21vdmVQYWNrYWdlL2FmdGVyL3NyYzEvdGFyZ2V0L2VtcHR5LnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlUGFja2FnZUFzRGlyL21vdmVQYWNrYWdlL2FmdGVyL3NyYzEvdGFyZ2V0L2VtcHR5LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNjlkZTI5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVQYWNrYWdlQXNEaXIvbW92ZVBhY2thZ2UvYWZ0ZXIvc3JjMS90YXJnZXQvZW1wdHkudHh0CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZVBhY2thZ2VBc0Rpci9tb3ZlUGFja2FnZS9hZnRlci9zcmMxL3RhcmdldC9wYWNrMS9TMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVQYWNrYWdlQXNEaXIvbW92ZVBhY2thZ2UvYWZ0ZXIvc3JjMS90YXJnZXQvcGFjazEvUzEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYWZkNjBkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVQYWNrYWdlQXNEaXIvbW92ZVBhY2thZ2UvYWZ0ZXIvc3JjMS90YXJnZXQvcGFjazEvUzEuamF2YQpAQCAtMCwwICsxLDMgQEAKK3BhY2thZ2UgdGFyZ2V0LnBhY2sxOworCitwdWJsaWMgY2xhc3MgUzF7fQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVQYWNrYWdlQXNEaXIvbW92ZVBhY2thZ2UvYWZ0ZXIvc3JjMi9wYWNrMS9TMi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVQYWNrYWdlQXNEaXIvbW92ZVBhY2thZ2UvYWZ0ZXIvc3JjMi9wYWNrMS9TMi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBiZDJkMjAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZVBhY2thZ2VBc0Rpci9tb3ZlUGFja2FnZS9hZnRlci9zcmMyL3BhY2sxL1MyLmphdmEKQEAgLTAsMCArMSwzIEBACitwYWNrYWdlIHBhY2sxOworCitwdWJsaWMgY2xhc3MgUzJ7fQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVQYWNrYWdlQXNEaXIvbW92ZVBhY2thZ2UvYWZ0ZXIvc3JjMi9wYWNrMi9Vc2FnZXNGcm9tQm90aDIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlUGFja2FnZUFzRGlyL21vdmVQYWNrYWdlL2FmdGVyL3NyYzIvcGFjazIvVXNhZ2VzRnJvbUJvdGgyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWI1M2YzODUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZVBhY2thZ2VBc0Rpci9tb3ZlUGFja2FnZS9hZnRlci9zcmMyL3BhY2syL1VzYWdlc0Zyb21Cb3RoMi5qYXZhCkBAIC0wLDAgKzEsOSBAQAorcGFja2FnZSBwYWNrMjsKKworaW1wb3J0IHBhY2sxLio7CitpbXBvcnQgdGFyZ2V0LnBhY2sxLlMxOworCitwdWJsaWMgY2xhc3MgVXNhZ2VzRnJvbUJvdGgyIHsKKyAgUzEgczE7CisgIFMyIHMyOworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVQYWNrYWdlQXNEaXIvbW92ZVBhY2thZ2UvYmVmb3JlL3NyYzEvcGFjazEvUzEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlUGFja2FnZUFzRGlyL21vdmVQYWNrYWdlL2JlZm9yZS9zcmMxL3BhY2sxL1MxLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzBhNWYzMQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlUGFja2FnZUFzRGlyL21vdmVQYWNrYWdlL2JlZm9yZS9zcmMxL3BhY2sxL1MxLmphdmEKQEAgLTAsMCArMSwzIEBACitwYWNrYWdlIHBhY2sxOworCitwdWJsaWMgY2xhc3MgUzF7fQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVQYWNrYWdlQXNEaXIvbW92ZVBhY2thZ2UvYmVmb3JlL3NyYzEvcGFjazIvVXNhZ2VzRnJvbUJvdGguamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlUGFja2FnZUFzRGlyL21vdmVQYWNrYWdlL2JlZm9yZS9zcmMxL3BhY2syL1VzYWdlc0Zyb21Cb3RoLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTA2YjFmZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlUGFja2FnZUFzRGlyL21vdmVQYWNrYWdlL2JlZm9yZS9zcmMxL3BhY2syL1VzYWdlc0Zyb21Cb3RoLmphdmEKQEAgLTAsMCArMSw4IEBACitwYWNrYWdlIHBhY2syOworCitpbXBvcnQgcGFjazEuKjsKKworcHVibGljIGNsYXNzIFVzYWdlc0Zyb21Cb3RoIHsKKyAgUzEgczE7CisgIFMyIHMyOworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVQYWNrYWdlQXNEaXIvbW92ZVBhY2thZ2UvYmVmb3JlL3NyYzEvdGFyZ2V0L2VtcHR5LnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlUGFja2FnZUFzRGlyL21vdmVQYWNrYWdlL2JlZm9yZS9zcmMxL3RhcmdldC9lbXB0eS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTY5ZGUyOQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlUGFja2FnZUFzRGlyL21vdmVQYWNrYWdlL2JlZm9yZS9zcmMxL3RhcmdldC9lbXB0eS50eHQKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlUGFja2FnZUFzRGlyL21vdmVQYWNrYWdlL2JlZm9yZS9zcmMyL3BhY2sxL1MyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZVBhY2thZ2VBc0Rpci9tb3ZlUGFja2FnZS9iZWZvcmUvc3JjMi9wYWNrMS9TMi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBiZDJkMjAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZVBhY2thZ2VBc0Rpci9tb3ZlUGFja2FnZS9iZWZvcmUvc3JjMi9wYWNrMS9TMi5qYXZhCkBAIC0wLDAgKzEsMyBAQAorcGFja2FnZSBwYWNrMTsKKworcHVibGljIGNsYXNzIFMye30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlUGFja2FnZUFzRGlyL21vdmVQYWNrYWdlL2JlZm9yZS9zcmMyL3BhY2syL1VzYWdlc0Zyb21Cb3RoMi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVQYWNrYWdlQXNEaXIvbW92ZVBhY2thZ2UvYmVmb3JlL3NyYzIvcGFjazIvVXNhZ2VzRnJvbUJvdGgyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDhlY2UxYwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlUGFja2FnZUFzRGlyL21vdmVQYWNrYWdlL2JlZm9yZS9zcmMyL3BhY2syL1VzYWdlc0Zyb21Cb3RoMi5qYXZhCkBAIC0wLDAgKzEsOCBAQAorcGFja2FnZSBwYWNrMjsKKworaW1wb3J0IHBhY2sxLio7CisKK3B1YmxpYyBjbGFzcyBVc2FnZXNGcm9tQm90aDIgeworICBTMSBzMTsKKyAgUzIgczI7Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZVBhY2thZ2VBc0Rpci9tb3ZlUGFja2FnZVdpdGhUeHRGaWxlc0luc2lkZS9hZnRlci9zcmMxL3BhY2syL1VzYWdlc0Zyb21Cb3RoLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZVBhY2thZ2VBc0Rpci9tb3ZlUGFja2FnZVdpdGhUeHRGaWxlc0luc2lkZS9hZnRlci9zcmMxL3BhY2syL1VzYWdlc0Zyb21Cb3RoLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmQ0NDEwZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlUGFja2FnZUFzRGlyL21vdmVQYWNrYWdlV2l0aFR4dEZpbGVzSW5zaWRlL2FmdGVyL3NyYzEvcGFjazIvVXNhZ2VzRnJvbUJvdGguamF2YQpAQCAtMCwwICsxLDkgQEAKK3BhY2thZ2UgcGFjazI7CisKK2ltcG9ydCBwYWNrMS4qOworaW1wb3J0IHRhcmdldC5wYWNrMS5TMTsKKworcHVibGljIGNsYXNzIFVzYWdlc0Zyb21Cb3RoIHsKKyAgUzEgczE7CisgIFMyIHMyOworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVQYWNrYWdlQXNEaXIvbW92ZVBhY2thZ2VXaXRoVHh0RmlsZXNJbnNpZGUvYWZ0ZXIvc3JjMS90YXJnZXQvZW1wdHkudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVQYWNrYWdlQXNEaXIvbW92ZVBhY2thZ2VXaXRoVHh0RmlsZXNJbnNpZGUvYWZ0ZXIvc3JjMS90YXJnZXQvZW1wdHkudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU2OWRlMjkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZVBhY2thZ2VBc0Rpci9tb3ZlUGFja2FnZVdpdGhUeHRGaWxlc0luc2lkZS9hZnRlci9zcmMxL3RhcmdldC9lbXB0eS50eHQKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlUGFja2FnZUFzRGlyL21vdmVQYWNrYWdlV2l0aFR4dEZpbGVzSW5zaWRlL2FmdGVyL3NyYzEvdGFyZ2V0L3BhY2sxL1MxLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZVBhY2thZ2VBc0Rpci9tb3ZlUGFja2FnZVdpdGhUeHRGaWxlc0luc2lkZS9hZnRlci9zcmMxL3RhcmdldC9wYWNrMS9TMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJhZmQ2MGQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZVBhY2thZ2VBc0Rpci9tb3ZlUGFja2FnZVdpdGhUeHRGaWxlc0luc2lkZS9hZnRlci9zcmMxL3RhcmdldC9wYWNrMS9TMS5qYXZhCkBAIC0wLDAgKzEsMyBAQAorcGFja2FnZSB0YXJnZXQucGFjazE7CisKK3B1YmxpYyBjbGFzcyBTMXt9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZVBhY2thZ2VBc0Rpci9tb3ZlUGFja2FnZVdpdGhUeHRGaWxlc0luc2lkZS9hZnRlci9zcmMxL3RhcmdldC9wYWNrMS90ZXN0X3JlYWRtZS50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZVBhY2thZ2VBc0Rpci9tb3ZlUGFja2FnZVdpdGhUeHRGaWxlc0luc2lkZS9hZnRlci9zcmMxL3RhcmdldC9wYWNrMS90ZXN0X3JlYWRtZS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWE3ODZmZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlUGFja2FnZUFzRGlyL21vdmVQYWNrYWdlV2l0aFR4dEZpbGVzSW5zaWRlL2FmdGVyL3NyYzEvdGFyZ2V0L3BhY2sxL3Rlc3RfcmVhZG1lLnR4dApAQCAtMCwwICsxIEBACityZWFkbWUKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZVBhY2thZ2VBc0Rpci9tb3ZlUGFja2FnZVdpdGhUeHRGaWxlc0luc2lkZS9hZnRlci9zcmMyL3BhY2sxL1MyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZVBhY2thZ2VBc0Rpci9tb3ZlUGFja2FnZVdpdGhUeHRGaWxlc0luc2lkZS9hZnRlci9zcmMyL3BhY2sxL1MyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGJkMmQyMAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlUGFja2FnZUFzRGlyL21vdmVQYWNrYWdlV2l0aFR4dEZpbGVzSW5zaWRlL2FmdGVyL3NyYzIvcGFjazEvUzIuamF2YQpAQCAtMCwwICsxLDMgQEAKK3BhY2thZ2UgcGFjazE7CisKK3B1YmxpYyBjbGFzcyBTMnt9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZVBhY2thZ2VBc0Rpci9tb3ZlUGFja2FnZVdpdGhUeHRGaWxlc0luc2lkZS9hZnRlci9zcmMyL3BhY2syL1VzYWdlc0Zyb21Cb3RoMi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVQYWNrYWdlQXNEaXIvbW92ZVBhY2thZ2VXaXRoVHh0RmlsZXNJbnNpZGUvYWZ0ZXIvc3JjMi9wYWNrMi9Vc2FnZXNGcm9tQm90aDIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45YjUzZjM4NQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlUGFja2FnZUFzRGlyL21vdmVQYWNrYWdlV2l0aFR4dEZpbGVzSW5zaWRlL2FmdGVyL3NyYzIvcGFjazIvVXNhZ2VzRnJvbUJvdGgyLmphdmEKQEAgLTAsMCArMSw5IEBACitwYWNrYWdlIHBhY2syOworCitpbXBvcnQgcGFjazEuKjsKK2ltcG9ydCB0YXJnZXQucGFjazEuUzE7CisKK3B1YmxpYyBjbGFzcyBVc2FnZXNGcm9tQm90aDIgeworICBTMSBzMTsKKyAgUzIgczI7Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZVBhY2thZ2VBc0Rpci9tb3ZlUGFja2FnZVdpdGhUeHRGaWxlc0luc2lkZS9iZWZvcmUvc3JjMS9wYWNrMS9TMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVQYWNrYWdlQXNEaXIvbW92ZVBhY2thZ2VXaXRoVHh0RmlsZXNJbnNpZGUvYmVmb3JlL3NyYzEvcGFjazEvUzEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMGE1ZjMxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVQYWNrYWdlQXNEaXIvbW92ZVBhY2thZ2VXaXRoVHh0RmlsZXNJbnNpZGUvYmVmb3JlL3NyYzEvcGFjazEvUzEuamF2YQpAQCAtMCwwICsxLDMgQEAKK3BhY2thZ2UgcGFjazE7CisKK3B1YmxpYyBjbGFzcyBTMXt9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZVBhY2thZ2VBc0Rpci9tb3ZlUGFja2FnZVdpdGhUeHRGaWxlc0luc2lkZS9iZWZvcmUvc3JjMS9wYWNrMS90ZXN0X3JlYWRtZS50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZVBhY2thZ2VBc0Rpci9tb3ZlUGFja2FnZVdpdGhUeHRGaWxlc0luc2lkZS9iZWZvcmUvc3JjMS9wYWNrMS90ZXN0X3JlYWRtZS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWE3ODZmZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlUGFja2FnZUFzRGlyL21vdmVQYWNrYWdlV2l0aFR4dEZpbGVzSW5zaWRlL2JlZm9yZS9zcmMxL3BhY2sxL3Rlc3RfcmVhZG1lLnR4dApAQCAtMCwwICsxIEBACityZWFkbWUKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZVBhY2thZ2VBc0Rpci9tb3ZlUGFja2FnZVdpdGhUeHRGaWxlc0luc2lkZS9iZWZvcmUvc3JjMS9wYWNrMi9Vc2FnZXNGcm9tQm90aC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVQYWNrYWdlQXNEaXIvbW92ZVBhY2thZ2VXaXRoVHh0RmlsZXNJbnNpZGUvYmVmb3JlL3NyYzEvcGFjazIvVXNhZ2VzRnJvbUJvdGguamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MDZiMWZlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVQYWNrYWdlQXNEaXIvbW92ZVBhY2thZ2VXaXRoVHh0RmlsZXNJbnNpZGUvYmVmb3JlL3NyYzEvcGFjazIvVXNhZ2VzRnJvbUJvdGguamF2YQpAQCAtMCwwICsxLDggQEAKK3BhY2thZ2UgcGFjazI7CisKK2ltcG9ydCBwYWNrMS4qOworCitwdWJsaWMgY2xhc3MgVXNhZ2VzRnJvbUJvdGggeworICBTMSBzMTsKKyAgUzIgczI7Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZVBhY2thZ2VBc0Rpci9tb3ZlUGFja2FnZVdpdGhUeHRGaWxlc0luc2lkZS9iZWZvcmUvc3JjMS90YXJnZXQvZW1wdHkudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVQYWNrYWdlQXNEaXIvbW92ZVBhY2thZ2VXaXRoVHh0RmlsZXNJbnNpZGUvYmVmb3JlL3NyYzEvdGFyZ2V0L2VtcHR5LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNjlkZTI5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVQYWNrYWdlQXNEaXIvbW92ZVBhY2thZ2VXaXRoVHh0RmlsZXNJbnNpZGUvYmVmb3JlL3NyYzEvdGFyZ2V0L2VtcHR5LnR4dApkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVQYWNrYWdlQXNEaXIvbW92ZVBhY2thZ2VXaXRoVHh0RmlsZXNJbnNpZGUvYmVmb3JlL3NyYzIvcGFjazEvUzIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlUGFja2FnZUFzRGlyL21vdmVQYWNrYWdlV2l0aFR4dEZpbGVzSW5zaWRlL2JlZm9yZS9zcmMyL3BhY2sxL1MyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGJkMmQyMAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlUGFja2FnZUFzRGlyL21vdmVQYWNrYWdlV2l0aFR4dEZpbGVzSW5zaWRlL2JlZm9yZS9zcmMyL3BhY2sxL1MyLmphdmEKQEAgLTAsMCArMSwzIEBACitwYWNrYWdlIHBhY2sxOworCitwdWJsaWMgY2xhc3MgUzJ7fQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVQYWNrYWdlQXNEaXIvbW92ZVBhY2thZ2VXaXRoVHh0RmlsZXNJbnNpZGUvYmVmb3JlL3NyYzIvcGFjazIvVXNhZ2VzRnJvbUJvdGgyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZVBhY2thZ2VBc0Rpci9tb3ZlUGFja2FnZVdpdGhUeHRGaWxlc0luc2lkZS9iZWZvcmUvc3JjMi9wYWNrMi9Vc2FnZXNGcm9tQm90aDIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kOGVjZTFjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVQYWNrYWdlQXNEaXIvbW92ZVBhY2thZ2VXaXRoVHh0RmlsZXNJbnNpZGUvYmVmb3JlL3NyYzIvcGFjazIvVXNhZ2VzRnJvbUJvdGgyLmphdmEKQEAgLTAsMCArMSw4IEBACitwYWNrYWdlIHBhY2syOworCitpbXBvcnQgcGFjazEuKjsKKworcHVibGljIGNsYXNzIFVzYWdlc0Zyb21Cb3RoMiB7CisgIFMxIHMxOworICBTMiBzMjsKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlUGFja2FnZUFzRGlyL211bHRpcGxlQ2xhc3Nlc0luT25lRmlsZS9hZnRlci9zcmMxL3BhY2syL1VzYWdlc0Zyb21Cb3RoLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZVBhY2thZ2VBc0Rpci9tdWx0aXBsZUNsYXNzZXNJbk9uZUZpbGUvYWZ0ZXIvc3JjMS9wYWNrMi9Vc2FnZXNGcm9tQm90aC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZkNDQxMGYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZVBhY2thZ2VBc0Rpci9tdWx0aXBsZUNsYXNzZXNJbk9uZUZpbGUvYWZ0ZXIvc3JjMS9wYWNrMi9Vc2FnZXNGcm9tQm90aC5qYXZhCkBAIC0wLDAgKzEsOSBAQAorcGFja2FnZSBwYWNrMjsKKworaW1wb3J0IHBhY2sxLio7CitpbXBvcnQgdGFyZ2V0LnBhY2sxLlMxOworCitwdWJsaWMgY2xhc3MgVXNhZ2VzRnJvbUJvdGggeworICBTMSBzMTsKKyAgUzIgczI7Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZVBhY2thZ2VBc0Rpci9tdWx0aXBsZUNsYXNzZXNJbk9uZUZpbGUvYWZ0ZXIvc3JjMS90YXJnZXQvZW1wdHkudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVQYWNrYWdlQXNEaXIvbXVsdGlwbGVDbGFzc2VzSW5PbmVGaWxlL2FmdGVyL3NyYzEvdGFyZ2V0L2VtcHR5LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNjlkZTI5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVQYWNrYWdlQXNEaXIvbXVsdGlwbGVDbGFzc2VzSW5PbmVGaWxlL2FmdGVyL3NyYzEvdGFyZ2V0L2VtcHR5LnR4dApkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVQYWNrYWdlQXNEaXIvbXVsdGlwbGVDbGFzc2VzSW5PbmVGaWxlL2FmdGVyL3NyYzEvdGFyZ2V0L3BhY2sxL1MxLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZVBhY2thZ2VBc0Rpci9tdWx0aXBsZUNsYXNzZXNJbk9uZUZpbGUvYWZ0ZXIvc3JjMS90YXJnZXQvcGFjazEvUzEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYjkzYTViCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVQYWNrYWdlQXNEaXIvbXVsdGlwbGVDbGFzc2VzSW5PbmVGaWxlL2FmdGVyL3NyYzEvdGFyZ2V0L3BhY2sxL1MxLmphdmEKQEAgLTAsMCArMSwxMSBAQAorcGFja2FnZSB0YXJnZXQucGFjazE7CisKK3B1YmxpYyBjbGFzcyBTMXsKKyAgUzExIHMxMTsKK30KKworY2xhc3MgUzExe30KKworY2xhc3MgUzEye30KKworY2xhc3MgUzEze30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlUGFja2FnZUFzRGlyL211bHRpcGxlQ2xhc3Nlc0luT25lRmlsZS9hZnRlci9zcmMxL3RhcmdldC9wYWNrMS9VUy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVQYWNrYWdlQXNEaXIvbXVsdGlwbGVDbGFzc2VzSW5PbmVGaWxlL2FmdGVyL3NyYzEvdGFyZ2V0L3BhY2sxL1VTLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzFiMzM4NAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlUGFja2FnZUFzRGlyL211bHRpcGxlQ2xhc3Nlc0luT25lRmlsZS9hZnRlci9zcmMxL3RhcmdldC9wYWNrMS9VUy5qYXZhCkBAIC0wLDAgKzEsNSBAQAorcGFja2FnZSB0YXJnZXQucGFjazE7CisKK2NsYXNzIFVTIHsKKyAgUzExIG15UzExV2l0aG91dEltcG9ydDsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZVBhY2thZ2VBc0Rpci9tdWx0aXBsZUNsYXNzZXNJbk9uZUZpbGUvYWZ0ZXIvc3JjMi9wYWNrMS9TMi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVQYWNrYWdlQXNEaXIvbXVsdGlwbGVDbGFzc2VzSW5PbmVGaWxlL2FmdGVyL3NyYzIvcGFjazEvUzIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYmQyZDIwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVQYWNrYWdlQXNEaXIvbXVsdGlwbGVDbGFzc2VzSW5PbmVGaWxlL2FmdGVyL3NyYzIvcGFjazEvUzIuamF2YQpAQCAtMCwwICsxLDMgQEAKK3BhY2thZ2UgcGFjazE7CisKK3B1YmxpYyBjbGFzcyBTMnt9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZVBhY2thZ2VBc0Rpci9tdWx0aXBsZUNsYXNzZXNJbk9uZUZpbGUvYWZ0ZXIvc3JjMi9wYWNrMi9Vc2FnZXNGcm9tQm90aDIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlUGFja2FnZUFzRGlyL211bHRpcGxlQ2xhc3Nlc0luT25lRmlsZS9hZnRlci9zcmMyL3BhY2syL1VzYWdlc0Zyb21Cb3RoMi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjliNTNmMzg1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVQYWNrYWdlQXNEaXIvbXVsdGlwbGVDbGFzc2VzSW5PbmVGaWxlL2FmdGVyL3NyYzIvcGFjazIvVXNhZ2VzRnJvbUJvdGgyLmphdmEKQEAgLTAsMCArMSw5IEBACitwYWNrYWdlIHBhY2syOworCitpbXBvcnQgcGFjazEuKjsKK2ltcG9ydCB0YXJnZXQucGFjazEuUzE7CisKK3B1YmxpYyBjbGFzcyBVc2FnZXNGcm9tQm90aDIgeworICBTMSBzMTsKKyAgUzIgczI7Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZVBhY2thZ2VBc0Rpci9tdWx0aXBsZUNsYXNzZXNJbk9uZUZpbGUvYmVmb3JlL3NyYzEvcGFjazEvUzEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlUGFja2FnZUFzRGlyL211bHRpcGxlQ2xhc3Nlc0luT25lRmlsZS9iZWZvcmUvc3JjMS9wYWNrMS9TMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc4ZTIyYWIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZVBhY2thZ2VBc0Rpci9tdWx0aXBsZUNsYXNzZXNJbk9uZUZpbGUvYmVmb3JlL3NyYzEvcGFjazEvUzEuamF2YQpAQCAtMCwwICsxLDExIEBACitwYWNrYWdlIHBhY2sxOworCitwdWJsaWMgY2xhc3MgUzF7CisgIFMxMSBzMTE7Cit9CisKK2NsYXNzIFMxMXt9CisKK2NsYXNzIFMxMnt9CisKK2NsYXNzIFMxM3t9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZVBhY2thZ2VBc0Rpci9tdWx0aXBsZUNsYXNzZXNJbk9uZUZpbGUvYmVmb3JlL3NyYzEvcGFjazEvVVMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlUGFja2FnZUFzRGlyL211bHRpcGxlQ2xhc3Nlc0luT25lRmlsZS9iZWZvcmUvc3JjMS9wYWNrMS9VUy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI0ZjdkYzgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZVBhY2thZ2VBc0Rpci9tdWx0aXBsZUNsYXNzZXNJbk9uZUZpbGUvYmVmb3JlL3NyYzEvcGFjazEvVVMuamF2YQpAQCAtMCwwICsxLDUgQEAKK3BhY2thZ2UgcGFjazE7CisKK2NsYXNzIFVTIHsKKyAgUzExIG15UzExV2l0aG91dEltcG9ydDsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZVBhY2thZ2VBc0Rpci9tdWx0aXBsZUNsYXNzZXNJbk9uZUZpbGUvYmVmb3JlL3NyYzEvcGFjazIvVXNhZ2VzRnJvbUJvdGguamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlUGFja2FnZUFzRGlyL211bHRpcGxlQ2xhc3Nlc0luT25lRmlsZS9iZWZvcmUvc3JjMS9wYWNrMi9Vc2FnZXNGcm9tQm90aC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkwNmIxZmUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZVBhY2thZ2VBc0Rpci9tdWx0aXBsZUNsYXNzZXNJbk9uZUZpbGUvYmVmb3JlL3NyYzEvcGFjazIvVXNhZ2VzRnJvbUJvdGguamF2YQpAQCAtMCwwICsxLDggQEAKK3BhY2thZ2UgcGFjazI7CisKK2ltcG9ydCBwYWNrMS4qOworCitwdWJsaWMgY2xhc3MgVXNhZ2VzRnJvbUJvdGggeworICBTMSBzMTsKKyAgUzIgczI7Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZVBhY2thZ2VBc0Rpci9tdWx0aXBsZUNsYXNzZXNJbk9uZUZpbGUvYmVmb3JlL3NyYzEvdGFyZ2V0L2VtcHR5LnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlUGFja2FnZUFzRGlyL211bHRpcGxlQ2xhc3Nlc0luT25lRmlsZS9iZWZvcmUvc3JjMS90YXJnZXQvZW1wdHkudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU2OWRlMjkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZVBhY2thZ2VBc0Rpci9tdWx0aXBsZUNsYXNzZXNJbk9uZUZpbGUvYmVmb3JlL3NyYzEvdGFyZ2V0L2VtcHR5LnR4dApkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVQYWNrYWdlQXNEaXIvbXVsdGlwbGVDbGFzc2VzSW5PbmVGaWxlL2JlZm9yZS9zcmMyL3BhY2sxL1MyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZVBhY2thZ2VBc0Rpci9tdWx0aXBsZUNsYXNzZXNJbk9uZUZpbGUvYmVmb3JlL3NyYzIvcGFjazEvUzIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYmQyZDIwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVQYWNrYWdlQXNEaXIvbXVsdGlwbGVDbGFzc2VzSW5PbmVGaWxlL2JlZm9yZS9zcmMyL3BhY2sxL1MyLmphdmEKQEAgLTAsMCArMSwzIEBACitwYWNrYWdlIHBhY2sxOworCitwdWJsaWMgY2xhc3MgUzJ7fQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVQYWNrYWdlQXNEaXIvbXVsdGlwbGVDbGFzc2VzSW5PbmVGaWxlL2JlZm9yZS9zcmMyL3BhY2syL1VzYWdlc0Zyb21Cb3RoMi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVQYWNrYWdlQXNEaXIvbXVsdGlwbGVDbGFzc2VzSW5PbmVGaWxlL2JlZm9yZS9zcmMyL3BhY2syL1VzYWdlc0Zyb21Cb3RoMi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ4ZWNlMWMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZVBhY2thZ2VBc0Rpci9tdWx0aXBsZUNsYXNzZXNJbk9uZUZpbGUvYmVmb3JlL3NyYzIvcGFjazIvVXNhZ2VzRnJvbUJvdGgyLmphdmEKQEAgLTAsMCArMSw4IEBACitwYWNrYWdlIHBhY2syOworCitpbXBvcnQgcGFjazEuKjsKKworcHVibGljIGNsYXNzIFVzYWdlc0Zyb21Cb3RoMiB7CisgIFMxIHMxOworICBTMiBzMjsKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlUGFja2FnZUFzRGlyL3JlbW92ZVVucmVzb2x2ZWRJbXBvcnRzL2FmdGVyL3NyYzEvcGFjazIvVXNhZ2VzRnJvbUJvdGguamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlUGFja2FnZUFzRGlyL3JlbW92ZVVucmVzb2x2ZWRJbXBvcnRzL2FmdGVyL3NyYzEvcGFjazIvVXNhZ2VzRnJvbUJvdGguamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMjE1MDVhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVQYWNrYWdlQXNEaXIvcmVtb3ZlVW5yZXNvbHZlZEltcG9ydHMvYWZ0ZXIvc3JjMS9wYWNrMi9Vc2FnZXNGcm9tQm90aC5qYXZhCkBAIC0wLDAgKzEsMTEgQEAKK3BhY2thZ2UgcGFjazI7CisKK2ltcG9ydCBwYWNrMS4qOworaW1wb3J0IHRhcmdldC5wYWNrMS5TMTsKK2ltcG9ydCB0YXJnZXQucGFjazEuc3VicGFjay5TUzsKKworcHVibGljIGNsYXNzIFVzYWdlc0Zyb21Cb3RoIHsKKyAgUzEgczE7CisgIFMyIHMyOworICBTUyBzczsKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlUGFja2FnZUFzRGlyL3JlbW92ZVVucmVzb2x2ZWRJbXBvcnRzL2FmdGVyL3NyYzEvdGFyZ2V0L2VtcHR5LnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlUGFja2FnZUFzRGlyL3JlbW92ZVVucmVzb2x2ZWRJbXBvcnRzL2FmdGVyL3NyYzEvdGFyZ2V0L2VtcHR5LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNjlkZTI5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVQYWNrYWdlQXNEaXIvcmVtb3ZlVW5yZXNvbHZlZEltcG9ydHMvYWZ0ZXIvc3JjMS90YXJnZXQvZW1wdHkudHh0CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZVBhY2thZ2VBc0Rpci9yZW1vdmVVbnJlc29sdmVkSW1wb3J0cy9hZnRlci9zcmMxL3RhcmdldC9wYWNrMS9TMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVQYWNrYWdlQXNEaXIvcmVtb3ZlVW5yZXNvbHZlZEltcG9ydHMvYWZ0ZXIvc3JjMS90YXJnZXQvcGFjazEvUzEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYWZkNjBkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVQYWNrYWdlQXNEaXIvcmVtb3ZlVW5yZXNvbHZlZEltcG9ydHMvYWZ0ZXIvc3JjMS90YXJnZXQvcGFjazEvUzEuamF2YQpAQCAtMCwwICsxLDMgQEAKK3BhY2thZ2UgdGFyZ2V0LnBhY2sxOworCitwdWJsaWMgY2xhc3MgUzF7fQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVQYWNrYWdlQXNEaXIvcmVtb3ZlVW5yZXNvbHZlZEltcG9ydHMvYWZ0ZXIvc3JjMS90YXJnZXQvcGFjazEvc3VicGFjay9TUy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVQYWNrYWdlQXNEaXIvcmVtb3ZlVW5yZXNvbHZlZEltcG9ydHMvYWZ0ZXIvc3JjMS90YXJnZXQvcGFjazEvc3VicGFjay9TUy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM5Y2YwYjYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZVBhY2thZ2VBc0Rpci9yZW1vdmVVbnJlc29sdmVkSW1wb3J0cy9hZnRlci9zcmMxL3RhcmdldC9wYWNrMS9zdWJwYWNrL1NTLmphdmEKQEAgLTAsMCArMSwzIEBACitwYWNrYWdlIHRhcmdldC5wYWNrMS5zdWJwYWNrOworCitwdWJsaWMgY2xhc3MgU1Mge30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlUGFja2FnZUFzRGlyL3JlbW92ZVVucmVzb2x2ZWRJbXBvcnRzL2FmdGVyL3NyYzIvcGFjazEvUzIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlUGFja2FnZUFzRGlyL3JlbW92ZVVucmVzb2x2ZWRJbXBvcnRzL2FmdGVyL3NyYzIvcGFjazEvUzIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYmQyZDIwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVQYWNrYWdlQXNEaXIvcmVtb3ZlVW5yZXNvbHZlZEltcG9ydHMvYWZ0ZXIvc3JjMi9wYWNrMS9TMi5qYXZhCkBAIC0wLDAgKzEsMyBAQAorcGFja2FnZSBwYWNrMTsKKworcHVibGljIGNsYXNzIFMye30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlUGFja2FnZUFzRGlyL3JlbW92ZVVucmVzb2x2ZWRJbXBvcnRzL2FmdGVyL3NyYzIvcGFjazIvVXNhZ2VzRnJvbUJvdGgyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZVBhY2thZ2VBc0Rpci9yZW1vdmVVbnJlc29sdmVkSW1wb3J0cy9hZnRlci9zcmMyL3BhY2syL1VzYWdlc0Zyb21Cb3RoMi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjliNTNmMzg1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVQYWNrYWdlQXNEaXIvcmVtb3ZlVW5yZXNvbHZlZEltcG9ydHMvYWZ0ZXIvc3JjMi9wYWNrMi9Vc2FnZXNGcm9tQm90aDIuamF2YQpAQCAtMCwwICsxLDkgQEAKK3BhY2thZ2UgcGFjazI7CisKK2ltcG9ydCBwYWNrMS4qOworaW1wb3J0IHRhcmdldC5wYWNrMS5TMTsKKworcHVibGljIGNsYXNzIFVzYWdlc0Zyb21Cb3RoMiB7CisgIFMxIHMxOworICBTMiBzMjsKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlUGFja2FnZUFzRGlyL3JlbW92ZVVucmVzb2x2ZWRJbXBvcnRzL2JlZm9yZS9zcmMxL3BhY2sxL1MxLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZVBhY2thZ2VBc0Rpci9yZW1vdmVVbnJlc29sdmVkSW1wb3J0cy9iZWZvcmUvc3JjMS9wYWNrMS9TMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMwYTVmMzEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZVBhY2thZ2VBc0Rpci9yZW1vdmVVbnJlc29sdmVkSW1wb3J0cy9iZWZvcmUvc3JjMS9wYWNrMS9TMS5qYXZhCkBAIC0wLDAgKzEsMyBAQAorcGFja2FnZSBwYWNrMTsKKworcHVibGljIGNsYXNzIFMxe30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlUGFja2FnZUFzRGlyL3JlbW92ZVVucmVzb2x2ZWRJbXBvcnRzL2JlZm9yZS9zcmMxL3BhY2sxL3N1YnBhY2svU1MuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlUGFja2FnZUFzRGlyL3JlbW92ZVVucmVzb2x2ZWRJbXBvcnRzL2JlZm9yZS9zcmMxL3BhY2sxL3N1YnBhY2svU1MuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44Njk0MjNjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVQYWNrYWdlQXNEaXIvcmVtb3ZlVW5yZXNvbHZlZEltcG9ydHMvYmVmb3JlL3NyYzEvcGFjazEvc3VicGFjay9TUy5qYXZhCkBAIC0wLDAgKzEsMyBAQAorcGFja2FnZSBwYWNrMS5zdWJwYWNrOworCitwdWJsaWMgY2xhc3MgU1Mge30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlUGFja2FnZUFzRGlyL3JlbW92ZVVucmVzb2x2ZWRJbXBvcnRzL2JlZm9yZS9zcmMxL3BhY2syL1VzYWdlc0Zyb21Cb3RoLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZVBhY2thZ2VBc0Rpci9yZW1vdmVVbnJlc29sdmVkSW1wb3J0cy9iZWZvcmUvc3JjMS9wYWNrMi9Vc2FnZXNGcm9tQm90aC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIwZjlhOTQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZVBhY2thZ2VBc0Rpci9yZW1vdmVVbnJlc29sdmVkSW1wb3J0cy9iZWZvcmUvc3JjMS9wYWNrMi9Vc2FnZXNGcm9tQm90aC5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKK3BhY2thZ2UgcGFjazI7CisKK2ltcG9ydCBwYWNrMS4qOworaW1wb3J0IHBhY2sxLnN1YnBhY2suKjsKKworcHVibGljIGNsYXNzIFVzYWdlc0Zyb21Cb3RoIHsKKyAgUzEgczE7CisgIFMyIHMyOworICBTUyBzczsKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlUGFja2FnZUFzRGlyL3JlbW92ZVVucmVzb2x2ZWRJbXBvcnRzL2JlZm9yZS9zcmMxL3RhcmdldC9lbXB0eS50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZVBhY2thZ2VBc0Rpci9yZW1vdmVVbnJlc29sdmVkSW1wb3J0cy9iZWZvcmUvc3JjMS90YXJnZXQvZW1wdHkudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU2OWRlMjkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZVBhY2thZ2VBc0Rpci9yZW1vdmVVbnJlc29sdmVkSW1wb3J0cy9iZWZvcmUvc3JjMS90YXJnZXQvZW1wdHkudHh0CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZVBhY2thZ2VBc0Rpci9yZW1vdmVVbnJlc29sdmVkSW1wb3J0cy9iZWZvcmUvc3JjMi9wYWNrMS9TMi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVQYWNrYWdlQXNEaXIvcmVtb3ZlVW5yZXNvbHZlZEltcG9ydHMvYmVmb3JlL3NyYzIvcGFjazEvUzIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYmQyZDIwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVQYWNrYWdlQXNEaXIvcmVtb3ZlVW5yZXNvbHZlZEltcG9ydHMvYmVmb3JlL3NyYzIvcGFjazEvUzIuamF2YQpAQCAtMCwwICsxLDMgQEAKK3BhY2thZ2UgcGFjazE7CisKK3B1YmxpYyBjbGFzcyBTMnt9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZVBhY2thZ2VBc0Rpci9yZW1vdmVVbnJlc29sdmVkSW1wb3J0cy9iZWZvcmUvc3JjMi9wYWNrMi9Vc2FnZXNGcm9tQm90aDIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlUGFja2FnZUFzRGlyL3JlbW92ZVVucmVzb2x2ZWRJbXBvcnRzL2JlZm9yZS9zcmMyL3BhY2syL1VzYWdlc0Zyb21Cb3RoMi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ4ZWNlMWMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZVBhY2thZ2VBc0Rpci9yZW1vdmVVbnJlc29sdmVkSW1wb3J0cy9iZWZvcmUvc3JjMi9wYWNrMi9Vc2FnZXNGcm9tQm90aDIuamF2YQpAQCAtMCwwICsxLDggQEAKK3BhY2thZ2UgcGFjazI7CisKK2ltcG9ydCBwYWNrMS4qOworCitwdWJsaWMgY2xhc3MgVXNhZ2VzRnJvbUJvdGgyIHsKKyAgUzEgczE7CisgIFMyIHMyOworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVQYWNrYWdlQXNEaXIveG1sRGlyUmVmcy9hZnRlci9zcmMxL3BhY2syL1VzYWdlc0Zyb21Cb3RoLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZVBhY2thZ2VBc0Rpci94bWxEaXJSZWZzL2FmdGVyL3NyYzEvcGFjazIvVXNhZ2VzRnJvbUJvdGguamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZDQ0MTBmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVQYWNrYWdlQXNEaXIveG1sRGlyUmVmcy9hZnRlci9zcmMxL3BhY2syL1VzYWdlc0Zyb21Cb3RoLmphdmEKQEAgLTAsMCArMSw5IEBACitwYWNrYWdlIHBhY2syOworCitpbXBvcnQgcGFjazEuKjsKK2ltcG9ydCB0YXJnZXQucGFjazEuUzE7CisKK3B1YmxpYyBjbGFzcyBVc2FnZXNGcm9tQm90aCB7CisgIFMxIHMxOworICBTMiBzMjsKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlUGFja2FnZUFzRGlyL3htbERpclJlZnMvYWZ0ZXIvc3JjMS90YXJnZXQvZW1wdHkudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVQYWNrYWdlQXNEaXIveG1sRGlyUmVmcy9hZnRlci9zcmMxL3RhcmdldC9lbXB0eS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTY5ZGUyOQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlUGFja2FnZUFzRGlyL3htbERpclJlZnMvYWZ0ZXIvc3JjMS90YXJnZXQvZW1wdHkudHh0CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZVBhY2thZ2VBc0Rpci94bWxEaXJSZWZzL2FmdGVyL3NyYzEvdGFyZ2V0L3BhY2sxL1MxLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZVBhY2thZ2VBc0Rpci94bWxEaXJSZWZzL2FmdGVyL3NyYzEvdGFyZ2V0L3BhY2sxL1MxLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmFmZDYwZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlUGFja2FnZUFzRGlyL3htbERpclJlZnMvYWZ0ZXIvc3JjMS90YXJnZXQvcGFjazEvUzEuamF2YQpAQCAtMCwwICsxLDMgQEAKK3BhY2thZ2UgdGFyZ2V0LnBhY2sxOworCitwdWJsaWMgY2xhc3MgUzF7fQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVQYWNrYWdlQXNEaXIveG1sRGlyUmVmcy9hZnRlci9zcmMyL3BhY2sxL1MyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZVBhY2thZ2VBc0Rpci94bWxEaXJSZWZzL2FmdGVyL3NyYzIvcGFjazEvUzIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYmQyZDIwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVQYWNrYWdlQXNEaXIveG1sRGlyUmVmcy9hZnRlci9zcmMyL3BhY2sxL1MyLmphdmEKQEAgLTAsMCArMSwzIEBACitwYWNrYWdlIHBhY2sxOworCitwdWJsaWMgY2xhc3MgUzJ7fQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVQYWNrYWdlQXNEaXIveG1sRGlyUmVmcy9hZnRlci9zcmMyL3BhY2syL1VzYWdlc0Zyb21Cb3RoMi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVQYWNrYWdlQXNEaXIveG1sRGlyUmVmcy9hZnRlci9zcmMyL3BhY2syL1VzYWdlc0Zyb21Cb3RoMi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjliNTNmMzg1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVQYWNrYWdlQXNEaXIveG1sRGlyUmVmcy9hZnRlci9zcmMyL3BhY2syL1VzYWdlc0Zyb21Cb3RoMi5qYXZhCkBAIC0wLDAgKzEsOSBAQAorcGFja2FnZSBwYWNrMjsKKworaW1wb3J0IHBhY2sxLio7CitpbXBvcnQgdGFyZ2V0LnBhY2sxLlMxOworCitwdWJsaWMgY2xhc3MgVXNhZ2VzRnJvbUJvdGgyIHsKKyAgUzEgczE7CisgIFMyIHMyOworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVQYWNrYWdlQXNEaXIveG1sRGlyUmVmcy9hZnRlci9zcmMyL3BhY2syL3UueG1sIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVQYWNrYWdlQXNEaXIveG1sRGlyUmVmcy9hZnRlci9zcmMyL3BhY2syL3UueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJlODJmYjcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZVBhY2thZ2VBc0Rpci94bWxEaXJSZWZzL2FmdGVyL3NyYzIvcGFjazIvdS54bWwKQEAgLTAsMCArMSwzIEBACis8cm9vdCB4bWxuczp4aT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YSW5jbHVkZSI+CisgIDx4aTppbmNsdWRlIGhyZWY9Ii4uLy4uL3NyYzEvdGFyZ2V0L3BhY2sxL1MxLmphdmEiIHhwb2ludGVyPSJ4cG9pbnRlcigvY29tcG9uZW50cy8qKSIvPgorPC9yb290PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlUGFja2FnZUFzRGlyL3htbERpclJlZnMvYmVmb3JlL3NyYzEvcGFjazEvUzEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlUGFja2FnZUFzRGlyL3htbERpclJlZnMvYmVmb3JlL3NyYzEvcGFjazEvUzEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMGE1ZjMxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVQYWNrYWdlQXNEaXIveG1sRGlyUmVmcy9iZWZvcmUvc3JjMS9wYWNrMS9TMS5qYXZhCkBAIC0wLDAgKzEsMyBAQAorcGFja2FnZSBwYWNrMTsKKworcHVibGljIGNsYXNzIFMxe30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlUGFja2FnZUFzRGlyL3htbERpclJlZnMvYmVmb3JlL3NyYzEvcGFjazIvVXNhZ2VzRnJvbUJvdGguamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlUGFja2FnZUFzRGlyL3htbERpclJlZnMvYmVmb3JlL3NyYzEvcGFjazIvVXNhZ2VzRnJvbUJvdGguamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MDZiMWZlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVQYWNrYWdlQXNEaXIveG1sRGlyUmVmcy9iZWZvcmUvc3JjMS9wYWNrMi9Vc2FnZXNGcm9tQm90aC5qYXZhCkBAIC0wLDAgKzEsOCBAQAorcGFja2FnZSBwYWNrMjsKKworaW1wb3J0IHBhY2sxLio7CisKK3B1YmxpYyBjbGFzcyBVc2FnZXNGcm9tQm90aCB7CisgIFMxIHMxOworICBTMiBzMjsKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlUGFja2FnZUFzRGlyL3htbERpclJlZnMvYmVmb3JlL3NyYzEvdGFyZ2V0L2VtcHR5LnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlUGFja2FnZUFzRGlyL3htbERpclJlZnMvYmVmb3JlL3NyYzEvdGFyZ2V0L2VtcHR5LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNjlkZTI5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVQYWNrYWdlQXNEaXIveG1sRGlyUmVmcy9iZWZvcmUvc3JjMS90YXJnZXQvZW1wdHkudHh0CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZVBhY2thZ2VBc0Rpci94bWxEaXJSZWZzL2JlZm9yZS9zcmMyL3BhY2sxL1MyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZVBhY2thZ2VBc0Rpci94bWxEaXJSZWZzL2JlZm9yZS9zcmMyL3BhY2sxL1MyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGJkMmQyMAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlUGFja2FnZUFzRGlyL3htbERpclJlZnMvYmVmb3JlL3NyYzIvcGFjazEvUzIuamF2YQpAQCAtMCwwICsxLDMgQEAKK3BhY2thZ2UgcGFjazE7CisKK3B1YmxpYyBjbGFzcyBTMnt9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZVBhY2thZ2VBc0Rpci94bWxEaXJSZWZzL2JlZm9yZS9zcmMyL3BhY2syL1VzYWdlc0Zyb21Cb3RoMi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVQYWNrYWdlQXNEaXIveG1sRGlyUmVmcy9iZWZvcmUvc3JjMi9wYWNrMi9Vc2FnZXNGcm9tQm90aDIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kOGVjZTFjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVQYWNrYWdlQXNEaXIveG1sRGlyUmVmcy9iZWZvcmUvc3JjMi9wYWNrMi9Vc2FnZXNGcm9tQm90aDIuamF2YQpAQCAtMCwwICsxLDggQEAKK3BhY2thZ2UgcGFjazI7CisKK2ltcG9ydCBwYWNrMS4qOworCitwdWJsaWMgY2xhc3MgVXNhZ2VzRnJvbUJvdGgyIHsKKyAgUzEgczE7CisgIFMyIHMyOworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVQYWNrYWdlQXNEaXIveG1sRGlyUmVmcy9iZWZvcmUvc3JjMi9wYWNrMi91LnhtbCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlUGFja2FnZUFzRGlyL3htbERpclJlZnMvYmVmb3JlL3NyYzIvcGFjazIvdS54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDc5MjZjYgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlUGFja2FnZUFzRGlyL3htbERpclJlZnMvYmVmb3JlL3NyYzIvcGFjazIvdS54bWwKQEAgLTAsMCArMSwzIEBACis8cm9vdCB4bWxuczp4aT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YSW5jbHVkZSI+CisgIDx4aTppbmNsdWRlIGhyZWY9Ii4uLy4uL3NyYzEvcGFjazEvUzEuamF2YSIgeHBvaW50ZXI9Inhwb2ludGVyKC9jb21wb25lbnRzLyopIi8+Cis8L3Jvb3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVQYWNrYWdlQXNEaXIveG1sRW1wdHlEaXJSZWZzL2FmdGVyL3NyYzEvdGFyZ2V0L2VtcHR5LnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlUGFja2FnZUFzRGlyL3htbEVtcHR5RGlyUmVmcy9hZnRlci9zcmMxL3RhcmdldC9lbXB0eS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTY5ZGUyOQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlUGFja2FnZUFzRGlyL3htbEVtcHR5RGlyUmVmcy9hZnRlci9zcmMxL3RhcmdldC9lbXB0eS50eHQKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlUGFja2FnZUFzRGlyL3htbEVtcHR5RGlyUmVmcy9hZnRlci9zcmMxL3RhcmdldC9wYWNrMS9lbXB0eS50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZVBhY2thZ2VBc0Rpci94bWxFbXB0eURpclJlZnMvYWZ0ZXIvc3JjMS90YXJnZXQvcGFjazEvZW1wdHkudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU2OWRlMjkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZVBhY2thZ2VBc0Rpci94bWxFbXB0eURpclJlZnMvYWZ0ZXIvc3JjMS90YXJnZXQvcGFjazEvZW1wdHkudHh0CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZVBhY2thZ2VBc0Rpci94bWxFbXB0eURpclJlZnMvYWZ0ZXIvc3JjMi9wYWNrMS9TMi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVQYWNrYWdlQXNEaXIveG1sRW1wdHlEaXJSZWZzL2FmdGVyL3NyYzIvcGFjazEvUzIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYmQyZDIwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVQYWNrYWdlQXNEaXIveG1sRW1wdHlEaXJSZWZzL2FmdGVyL3NyYzIvcGFjazEvUzIuamF2YQpAQCAtMCwwICsxLDMgQEAKK3BhY2thZ2UgcGFjazE7CisKK3B1YmxpYyBjbGFzcyBTMnt9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZVBhY2thZ2VBc0Rpci94bWxFbXB0eURpclJlZnMvYWZ0ZXIvc3JjMi9wYWNrMi91LnhtbCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlUGFja2FnZUFzRGlyL3htbEVtcHR5RGlyUmVmcy9hZnRlci9zcmMyL3BhY2syL3UueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEyMzZkM2MKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZVBhY2thZ2VBc0Rpci94bWxFbXB0eURpclJlZnMvYWZ0ZXIvc3JjMi9wYWNrMi91LnhtbApAQCAtMCwwICsxLDMgQEAKKzxyb290IHhtbG5zOnhpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hJbmNsdWRlIj4KKyAgPHhpOmluY2x1ZGUgaHJlZj0iLi4vLi4vc3JjMS90YXJnZXQvcGFjazEiIHhwb2ludGVyPSJ4cG9pbnRlcigvY29tcG9uZW50cy8qKSIvPgorPC9yb290PgpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVQYWNrYWdlQXNEaXIveG1sRW1wdHlEaXJSZWZzL2JlZm9yZS9zcmMxL3BhY2sxL2VtcHR5LnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlUGFja2FnZUFzRGlyL3htbEVtcHR5RGlyUmVmcy9iZWZvcmUvc3JjMS9wYWNrMS9lbXB0eS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTY5ZGUyOQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlUGFja2FnZUFzRGlyL3htbEVtcHR5RGlyUmVmcy9iZWZvcmUvc3JjMS9wYWNrMS9lbXB0eS50eHQKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlUGFja2FnZUFzRGlyL3htbEVtcHR5RGlyUmVmcy9iZWZvcmUvc3JjMS90YXJnZXQvZW1wdHkudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVQYWNrYWdlQXNEaXIveG1sRW1wdHlEaXJSZWZzL2JlZm9yZS9zcmMxL3RhcmdldC9lbXB0eS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTY5ZGUyOQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlUGFja2FnZUFzRGlyL3htbEVtcHR5RGlyUmVmcy9iZWZvcmUvc3JjMS90YXJnZXQvZW1wdHkudHh0CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZVBhY2thZ2VBc0Rpci94bWxFbXB0eURpclJlZnMvYmVmb3JlL3NyYzIvcGFjazEvUzIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlUGFja2FnZUFzRGlyL3htbEVtcHR5RGlyUmVmcy9iZWZvcmUvc3JjMi9wYWNrMS9TMi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBiZDJkMjAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZVBhY2thZ2VBc0Rpci94bWxFbXB0eURpclJlZnMvYmVmb3JlL3NyYzIvcGFjazEvUzIuamF2YQpAQCAtMCwwICsxLDMgQEAKK3BhY2thZ2UgcGFjazE7CisKK3B1YmxpYyBjbGFzcyBTMnt9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZVBhY2thZ2VBc0Rpci94bWxFbXB0eURpclJlZnMvYmVmb3JlL3NyYzIvcGFjazIvdS54bWwgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZVBhY2thZ2VBc0Rpci94bWxFbXB0eURpclJlZnMvYmVmb3JlL3NyYzIvcGFjazIvdS54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDRhNDZlMgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlUGFja2FnZUFzRGlyL3htbEVtcHR5RGlyUmVmcy9iZWZvcmUvc3JjMi9wYWNrMi91LnhtbApAQCAtMCwwICsxLDMgQEAKKzxyb290IHhtbG5zOnhpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hJbmNsdWRlIj4KKyAgPHhpOmluY2x1ZGUgaHJlZj0iLi4vLi4vc3JjMS9wYWNrMSIgeHBvaW50ZXI9Inhwb2ludGVyKC9jb21wb25lbnRzLyopIi8+Cis8L3Jvb3Q+CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZVBhY2thZ2VNdWx0aXJvb3QvbW92ZVBhY2thZ2UvYWZ0ZXIvc3JjMS90YXJnZXQvZW1wdHkudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVQYWNrYWdlTXVsdGlyb290L21vdmVQYWNrYWdlL2FmdGVyL3NyYzEvdGFyZ2V0L2VtcHR5LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNjlkZTI5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVQYWNrYWdlTXVsdGlyb290L21vdmVQYWNrYWdlL2FmdGVyL3NyYzEvdGFyZ2V0L2VtcHR5LnR4dApkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVQYWNrYWdlTXVsdGlyb290L21vdmVQYWNrYWdlL2FmdGVyL3NyYzEvdGFyZ2V0L3BhY2sxL0EuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlUGFja2FnZU11bHRpcm9vdC9tb3ZlUGFja2FnZS9hZnRlci9zcmMxL3RhcmdldC9wYWNrMS9BLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzkxMWY2NTIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZVBhY2thZ2VNdWx0aXJvb3QvbW92ZVBhY2thZ2UvYWZ0ZXIvc3JjMS90YXJnZXQvcGFjazEvQS5qYXZhCkBAIC0wLDAgKzEsNCBAQAorcGFja2FnZSB0YXJnZXQucGFjazE7CisKK2NsYXNzIEEgeworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlUGFja2FnZU11bHRpcm9vdC9tb3ZlUGFja2FnZS9hZnRlci9zcmMyL3RhcmdldC9wYWNrMS9CLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZVBhY2thZ2VNdWx0aXJvb3QvbW92ZVBhY2thZ2UvYWZ0ZXIvc3JjMi90YXJnZXQvcGFjazEvQi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU0Y2RkMzEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZVBhY2thZ2VNdWx0aXJvb3QvbW92ZVBhY2thZ2UvYWZ0ZXIvc3JjMi90YXJnZXQvcGFjazEvQi5qYXZhCkBAIC0wLDAgKzEsNCBAQAorcGFja2FnZSBwYWNrMjsKKworY2xhc3MgQiB7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVQYWNrYWdlTXVsdGlyb290L21vdmVQYWNrYWdlL2JlZm9yZS9zcmMxL3BhY2sxL0EuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlUGFja2FnZU11bHRpcm9vdC9tb3ZlUGFja2FnZS9iZWZvcmUvc3JjMS9wYWNrMS9BLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjBhYTgxMAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlUGFja2FnZU11bHRpcm9vdC9tb3ZlUGFja2FnZS9iZWZvcmUvc3JjMS9wYWNrMS9BLmphdmEKQEAgLTAsMCArMSw0IEBACitwYWNrYWdlIHBhY2sxOworCitjbGFzcyBBIHsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZVBhY2thZ2VNdWx0aXJvb3QvbW92ZVBhY2thZ2UvYmVmb3JlL3NyYzEvdGFyZ2V0L2VtcHR5LnR4dCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlUGFja2FnZU11bHRpcm9vdC9tb3ZlUGFja2FnZS9iZWZvcmUvc3JjMS90YXJnZXQvZW1wdHkudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU2OWRlMjkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvbW92ZVBhY2thZ2VNdWx0aXJvb3QvbW92ZVBhY2thZ2UvYmVmb3JlL3NyYzEvdGFyZ2V0L2VtcHR5LnR4dApkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL21vdmVQYWNrYWdlTXVsdGlyb290L21vdmVQYWNrYWdlL2JlZm9yZS9zcmMyL3BhY2sxL0IuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlUGFja2FnZU11bHRpcm9vdC9tb3ZlUGFja2FnZS9iZWZvcmUvc3JjMi9wYWNrMS9CLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTRjZGQzMQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9tb3ZlUGFja2FnZU11bHRpcm9vdC9tb3ZlUGFja2FnZS9iZWZvcmUvc3JjMi9wYWNrMS9CLmphdmEKQEAgLTAsMCArMSw0IEBACitwYWNrYWdlIHBhY2syOworCitjbGFzcyBCIHsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcHVsbFVwL0VzY2FsYXRlVmlzaWJpbGl0eS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3B1bGxVcC9Fc2NhbGF0ZVZpc2liaWxpdHkuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZjc1MTRmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3B1bGxVcC9Fc2NhbGF0ZVZpc2liaWxpdHkuamF2YQpAQCAtMCwwICsxLDEwIEBACitjbGFzcyBGb28geworICAKK30KKworY2xhc3MgRm9vSW1wbCBleHRlbmRzIEZvbyB7CisgIHByaXZhdGUgdm9pZCBmbzxjYXJldD5vKCl7fQorICB2b2lkIGJhcigpIHsKKyAgICBmb28oKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9wdWxsVXAvRXNjYWxhdGVWaXNpYmlsaXR5X2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcHVsbFVwL0VzY2FsYXRlVmlzaWJpbGl0eV9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNhMjRjOWQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcHVsbFVwL0VzY2FsYXRlVmlzaWJpbGl0eV9hZnRlci5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKK2NsYXNzIEZvbyB7CisKKyAgICBwcm90ZWN0ZWQgdm9pZCBmb28oKXt9Cit9CisKK2NsYXNzIEZvb0ltcGwgZXh0ZW5kcyBGb28geworICAgIHZvaWQgYmFyKCkgeworICAgIGZvbygpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3B1bGxVcC9FeHRlbnNpb25NZXRob2QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9wdWxsVXAvRXh0ZW5zaW9uTWV0aG9kLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDZlYzIxMQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9wdWxsVXAvRXh0ZW5zaW9uTWV0aG9kLmphdmEKQEAgLTAsMCArMSw4IEBACitpbnRlcmZhY2UgQmFzZSB7Cit9CisKK2ludGVyZmFjZSBJMiBleHRlbmRzIEJhc2UgeworICAgIHZvaWQgZm9vPGNhcmV0PigpIGRlZmF1bHQgeworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIkhpIHRoZXJlLiIpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcHVsbFVwL0V4dGVuc2lvbk1ldGhvZF9hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3B1bGxVcC9FeHRlbnNpb25NZXRob2RfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMzg3NjQ1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3B1bGxVcC9FeHRlbnNpb25NZXRob2RfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDggQEAKK2ludGVyZmFjZSBCYXNlIHsKKyAgICB2b2lkIGZvbygpIGRlZmF1bHQgeworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIkhpIHRoZXJlLiIpOworICAgIH0KK30KKworaW50ZXJmYWNlIEkyIGV4dGVuZHMgQmFzZSB7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3B1bGxVcC9HZW5lcmljc0luQWJzdHJhY3RNZXRob2QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9wdWxsVXAvR2VuZXJpY3NJbkFic3RyYWN0TWV0aG9kLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmQyZjQ5OQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9wdWxsVXAvR2VuZXJpY3NJbkFic3RyYWN0TWV0aG9kLmphdmEKQEAgLTAsMCArMSw1IEBACitwdWJsaWMgYWJzdHJhY3QgY2xhc3MgUGFyZW50PFM+IHt9CisKK2NsYXNzIENoaWxkPFQ+IGV4dGVuZHMgUGFyZW50PFQ+IHsKKyAgIHZvaWQgPGNhcmV0Pm1ldGhvZChUIHQpe30KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9wdWxsVXAvR2VuZXJpY3NJbkFic3RyYWN0TWV0aG9kX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcHVsbFVwL0dlbmVyaWNzSW5BYnN0cmFjdE1ldGhvZF9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI5ODgxMTcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcHVsbFVwL0dlbmVyaWNzSW5BYnN0cmFjdE1ldGhvZF9hZnRlci5qYXZhCkBAIC0wLDAgKzEsOCBAQAorcHVibGljIGFic3RyYWN0IGNsYXNzIFBhcmVudDxTPiB7CisgICAgYWJzdHJhY3Qgdm9pZCBtZXRob2QoUyB0KTsKK30KKworY2xhc3MgQ2hpbGQ8VD4gZXh0ZW5kcyBQYXJlbnQ8VD4geworICAgQE92ZXJyaWRlCisgICB2b2lkIG1ldGhvZChUIHQpe30KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9wdWxsVXAvR2VuZXJpY3NJbkltcGxlbWVudHMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9wdWxsVXAvR2VuZXJpY3NJbkltcGxlbWVudHMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wN2UxZjg5YQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9wdWxsVXAvR2VuZXJpY3NJbkltcGxlbWVudHMuamF2YQpAQCAtMCwwICsxLDEwIEBACitwdWJsaWMgY2xhc3MgUGFyZW50PFM+IHt9CisKK2ludGVyZmFjZSBJPElUPiB7CisgIHZvaWQgbWV0aG9kKElUIHQpOworfQorCitjbGFzcyBDaGlsZDxUPiBleHRlbmRzIFBhcmVudDxUPiBpbXBsZW1lbnRzIEk8VD57CisgIDxjYXJldD4KKyAgcHVibGljIHZvaWQgbWV0aG9kKFQgdCl7fQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3B1bGxVcC9HZW5lcmljc0luSW1wbGVtZW50c19hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3B1bGxVcC9HZW5lcmljc0luSW1wbGVtZW50c19hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNhY2E5ZjgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcHVsbFVwL0dlbmVyaWNzSW5JbXBsZW1lbnRzX2FmdGVyLmphdmEKQEAgLTAsMCArMSwxMCBAQAorcHVibGljIGNsYXNzIFBhcmVudDxTPiBpbXBsZW1lbnRzIEk8Uz4ge30KKworaW50ZXJmYWNlIEk8SVQ+IHsKKyAgdm9pZCBtZXRob2QoSVQgdCk7Cit9CisKK2NsYXNzIENoaWxkPFQ+IGV4dGVuZHMgUGFyZW50PFQ+IHsKKyAgCisgIHB1YmxpYyB2b2lkIG1ldGhvZChUIHQpe30KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9wdWxsVXAvSWZGaWVsZEluaXRpYWxpemF0aW9uV2l0aE5vbk1vdmVkRmllbGQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9wdWxsVXAvSWZGaWVsZEluaXRpYWxpemF0aW9uV2l0aE5vbk1vdmVkRmllbGQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYTM2MDlkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3B1bGxVcC9JZkZpZWxkSW5pdGlhbGl6YXRpb25XaXRoTm9uTW92ZWRGaWVsZC5qYXZhCkBAIC0wLDAgKzEsMTggQEAKK3B1YmxpYyBjbGFzcyBBIHsKK30KKworY2xhc3MgQiBleHRlbmRzIEEgeworICAgIGZpbmFsIFN0cmluZyA8Y2FyZXQ+ZjsKKyAgICBmaW5hbCBTdHJpbmcgZm9vOworCisgICAgQihTdHJpbmcgZmksIFN0cmluZyBmb28pIHsKKyAgICAgICAgdGhpcy5mb28gPSBmb287CisgICAgICAgIGlmIChmaSA9PSB0aGlzLmZvbykgeworICAgICAgICAgICAgZiA9IGZvbzsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGYgPSAiIjsKKyAgICAgICAgfQorICAgIH0KKworCit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcHVsbFVwL0lmRmllbGRJbml0aWFsaXphdGlvbldpdGhOb25Nb3ZlZEZpZWxkX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcHVsbFVwL0lmRmllbGRJbml0aWFsaXphdGlvbldpdGhOb25Nb3ZlZEZpZWxkX2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWJlYzU2OAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9wdWxsVXAvSWZGaWVsZEluaXRpYWxpemF0aW9uV2l0aE5vbk1vdmVkRmllbGRfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDE4IEBACitwdWJsaWMgY2xhc3MgQSB7CisgICAgZmluYWwgU3RyaW5nIGY7Cit9CisKK2NsYXNzIEIgZXh0ZW5kcyBBIHsKKyAgICBmaW5hbCBTdHJpbmcgZm9vOworCisgICAgQihTdHJpbmcgZmksIFN0cmluZyBmb28pIHsKKyAgICAgICAgdGhpcy5mb28gPSBmb287CisgICAgICAgIGlmIChmaSA9PSB0aGlzLmZvbykgeworICAgICAgICAgICAgZiA9IGZvbzsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGYgPSAiIjsKKyAgICAgICAgfQorICAgIH0KKworCit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcHVsbFVwL0lmRmllbGRNb3ZlZEluaXRpYWxpemF0aW9uLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcHVsbFVwL0lmRmllbGRNb3ZlZEluaXRpYWxpemF0aW9uLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjU0MWYwZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9wdWxsVXAvSWZGaWVsZE1vdmVkSW5pdGlhbGl6YXRpb24uamF2YQpAQCAtMCwwICsxLDE4IEBACitwdWJsaWMgY2xhc3MgQSB7Cit9CisKK2NsYXNzIEIgZXh0ZW5kcyBBIHsKKyAgICBmaW5hbCBTdHJpbmcgPGNhcmV0PmY7CisgICAgZmluYWwgU3RyaW5nIGZvbzsKKworICAgIEIoU3RyaW5nIGZpLCBTdHJpbmcgZm9vKSB7CisgICAgICAgIHRoaXMuZm9vID0gZm9vOworICAgICAgICBpZiAoZmkgPT0gZm9vKSB7CisgICAgICAgICAgICBmID0gZm9vOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgZiA9ICIiOworICAgICAgICB9CisgICAgfQorCisKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9wdWxsVXAvSWZGaWVsZE1vdmVkSW5pdGlhbGl6YXRpb25fYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9wdWxsVXAvSWZGaWVsZE1vdmVkSW5pdGlhbGl6YXRpb25fYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MDAwZmRjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3B1bGxVcC9JZkZpZWxkTW92ZWRJbml0aWFsaXphdGlvbl9hZnRlci5qYXZhCkBAIC0wLDAgKzEsMjIgQEAKK3B1YmxpYyBjbGFzcyBBIHsKKyAgICBmaW5hbCBTdHJpbmcgZjsKKworICAgIHB1YmxpYyBBKFN0cmluZyBmaSwgU3RyaW5nIGZvbykgeworICAgICAgICBpZiAoZmkgPT0gZm9vKSB7CisgICAgICAgICAgICBmID0gZm9vOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgZiA9ICIiOworICAgICAgICB9CisgICAgfQorfQorCitjbGFzcyBCIGV4dGVuZHMgQSB7CisgICAgZmluYWwgU3RyaW5nIGZvbzsKKworICAgIEIoU3RyaW5nIGZpLCBTdHJpbmcgZm9vKSB7CisgICAgICAgIHN1cGVyKGZpLCBmb28pOworICAgICAgICB0aGlzLmZvbyA9IGZvbzsKKyAgICB9CisKKworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3B1bGxVcC9NZXJnZUludGVyZmFjZXMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9wdWxsVXAvTWVyZ2VJbnRlcmZhY2VzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjhmM2QxMQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9wdWxsVXAvTWVyZ2VJbnRlcmZhY2VzLmphdmEKQEAgLTAsMCArMSwzIEBACitjbGFzcyBCYXNlIGltcGxlbWVudHMgSTxTdHJpbmc+IHt9CitjbGFzcyBUZTxjYXJldD5zdCBleHRlbmRzIEJhc2UgaW1wbGVtZW50cyBJPFN0cmluZz4ge30KK2ludGVyZmFjZSBJPFQ+e30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcHVsbFVwL01lcmdlSW50ZXJmYWNlc19hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3B1bGxVcC9NZXJnZUludGVyZmFjZXNfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZmFkNmY2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3B1bGxVcC9NZXJnZUludGVyZmFjZXNfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDMgQEAKK2NsYXNzIEJhc2UgaW1wbGVtZW50cyBJPFN0cmluZz4ge30KK2NsYXNzIFRlc3QgZXh0ZW5kcyBCYXNlIHt9CitpbnRlcmZhY2UgSTxUPnt9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3B1bGxVcC9NdWx0aXBsZUNvbnN0cnVjdG9yc0ZpZWxkSW5pdGlhbGl6YXRpb24uamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9wdWxsVXAvTXVsdGlwbGVDb25zdHJ1Y3RvcnNGaWVsZEluaXRpYWxpemF0aW9uLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjg4NGY0OAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9wdWxsVXAvTXVsdGlwbGVDb25zdHJ1Y3RvcnNGaWVsZEluaXRpYWxpemF0aW9uLmphdmEKQEAgLTAsMCArMSwxNyBAQAorcHVibGljIGNsYXNzIEEgeworfQorCitjbGFzcyBCIGV4dGVuZHMgQSB7CisgICAgZmluYWwgU3RyaW5nIDxjYXJldD5mOworICAgIGZpbmFsIFN0cmluZyBmb287CisKKyAgICBCKFN0cmluZyBmaSwgU3RyaW5nIGZvbykgeworICAgICAgICB0aGlzLmZvbyA9IGZvbzsKKyAgICAgICAgZiA9ICIiOworICAgIH0KKworICAgIEIoU3RyaW5nIGZvbykgeworICAgICAgICB0aGlzLmZvbyA9IGZvbzsKKyAgICAgICAgZiA9ICIiOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9wdWxsVXAvTXVsdGlwbGVDb25zdHJ1Y3RvcnNGaWVsZEluaXRpYWxpemF0aW9uTm9Hb29kLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcHVsbFVwL011bHRpcGxlQ29uc3RydWN0b3JzRmllbGRJbml0aWFsaXphdGlvbk5vR29vZC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI1MTE3ZmMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcHVsbFVwL011bHRpcGxlQ29uc3RydWN0b3JzRmllbGRJbml0aWFsaXphdGlvbk5vR29vZC5qYXZhCkBAIC0wLDAgKzEsMjEgQEAKK3B1YmxpYyBjbGFzcyBBIHsKK30KKworY2xhc3MgQiBleHRlbmRzIEEgeworICAgIGZpbmFsIFN0cmluZyA8Y2FyZXQ+ZjsKKyAgICBmaW5hbCBTdHJpbmcgZm9vOworCisgICAgQihTdHJpbmcgZmksIFN0cmluZyBmb28pIHsKKyAgICAgICAgdGhpcy5mb28gPSBmb287CisgICAgICAgIGlmIChmaSA9PSB0aGlzLmZvbykgeworICAgICAgICAgICAgZiA9IGZvbzsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGYgPSAiIjsKKyAgICAgICAgfQorICAgIH0KKworICAgIEIoU3RyaW5nIGYpIHsKKyAgICAgICAgdGhpcy5mID0gZjsKKyAgICAgICAgZm9vID0gIiI7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3B1bGxVcC9NdWx0aXBsZUNvbnN0cnVjdG9yc0ZpZWxkSW5pdGlhbGl6YXRpb25Ob0dvb2RfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9wdWxsVXAvTXVsdGlwbGVDb25zdHJ1Y3RvcnNGaWVsZEluaXRpYWxpemF0aW9uTm9Hb29kX2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjY2YmEwYgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9wdWxsVXAvTXVsdGlwbGVDb25zdHJ1Y3RvcnNGaWVsZEluaXRpYWxpemF0aW9uTm9Hb29kX2FmdGVyLmphdmEKQEAgLTAsMCArMSwyMSBAQAorcHVibGljIGNsYXNzIEEgeworICAgIGZpbmFsIFN0cmluZyBmOworfQorCitjbGFzcyBCIGV4dGVuZHMgQSB7CisgICAgZmluYWwgU3RyaW5nIGZvbzsKKworICAgIEIoU3RyaW5nIGZpLCBTdHJpbmcgZm9vKSB7CisgICAgICAgIHRoaXMuZm9vID0gZm9vOworICAgICAgICBpZiAoZmkgPT0gdGhpcy5mb28pIHsKKyAgICAgICAgICAgIGYgPSBmb287CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBmID0gIiI7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBCKFN0cmluZyBmKSB7CisgICAgICAgIHRoaXMuZiA9IGY7CisgICAgICAgIGZvbyA9ICIiOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9wdWxsVXAvTXVsdGlwbGVDb25zdHJ1Y3RvcnNGaWVsZEluaXRpYWxpemF0aW9uX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcHVsbFVwL011bHRpcGxlQ29uc3RydWN0b3JzRmllbGRJbml0aWFsaXphdGlvbl9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdjMTlkZTEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcHVsbFVwL011bHRpcGxlQ29uc3RydWN0b3JzRmllbGRJbml0aWFsaXphdGlvbl9hZnRlci5qYXZhCkBAIC0wLDAgKzEsMjEgQEAKK3B1YmxpYyBjbGFzcyBBIHsKKyAgICBmaW5hbCBTdHJpbmcgZjsKKworICAgIHB1YmxpYyBBKCkgeworICAgICAgICBmID0gIiI7CisgICAgfQorfQorCitjbGFzcyBCIGV4dGVuZHMgQSB7CisgICAgZmluYWwgU3RyaW5nIGZvbzsKKworICAgIEIoU3RyaW5nIGZpLCBTdHJpbmcgZm9vKSB7CisgICAgICAgIHN1cGVyKCk7CisgICAgICAgIHRoaXMuZm9vID0gZm9vOworICAgIH0KKworICAgIEIoU3RyaW5nIGZvbykgeworICAgICAgICBzdXBlcigpOworICAgICAgICB0aGlzLmZvbyA9IGZvbzsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcHVsbFVwL1ByZXNlcnZlT3ZlcnJpZGUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9wdWxsVXAvUHJlc2VydmVPdmVycmlkZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg0ZjJmMTgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcHVsbFVwL1ByZXNlcnZlT3ZlcnJpZGUuamF2YQpAQCAtMCwwICsxLDEyIEBACithYnN0cmFjdCBjbGFzcyBCYXp6IHsKKyAgICBwdWJsaWMgYWJzdHJhY3Qgdm9pZCBmb28oKTsKK30KKworYWJzdHJhY3QgY2xhc3MgRm9vIGV4dGVuZHMgQmF6eiB7fQorCitjbGFzcyBCYXIgZXh0ZW5kcyBGb28geworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyB2b2lkIGY8Y2FyZXQ+b28oKSB7CisgICAgfQorfQorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcHVsbFVwL1ByZXNlcnZlT3ZlcnJpZGVJblB1bGxlZE1ldGhvZC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3B1bGxVcC9QcmVzZXJ2ZU92ZXJyaWRlSW5QdWxsZWRNZXRob2QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMjQwOTFmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3B1bGxVcC9QcmVzZXJ2ZU92ZXJyaWRlSW5QdWxsZWRNZXRob2QuamF2YQpAQCAtMCwwICsxLDEyIEBACitwdWJsaWMgY2xhc3MgVGVzdCB7CisgIGFic3RyYWN0IGNsYXNzIEJhc2UgZXh0ZW5kcyBJbnRJbXBsIHsKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgYWJzdHJhY3QgU3RyaW5nPGNhcmV0PiBmb28oKTsKKyAgfQorCisgIGNsYXNzIEludEltcGwgZXh0ZW5kcyBJbnQge30KKyAgCisgIGNsYXNzIEludCB7CisgICAgcHVibGljIGFic3RyYWN0IFN0cmluZyBmb28oKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9wdWxsVXAvUHJlc2VydmVPdmVycmlkZUluUHVsbGVkTWV0aG9kX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcHVsbFVwL1ByZXNlcnZlT3ZlcnJpZGVJblB1bGxlZE1ldGhvZF9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMxNzgwMGQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcHVsbFVwL1ByZXNlcnZlT3ZlcnJpZGVJblB1bGxlZE1ldGhvZF9hZnRlci5qYXZhCkBAIC0wLDAgKzEsMTMgQEAKK3B1YmxpYyBjbGFzcyBUZXN0IHsKKyAgYWJzdHJhY3QgY2xhc3MgQmFzZSBleHRlbmRzIEludEltcGwgeworICB9CisKKyAgYWJzdHJhY3QgY2xhc3MgSW50SW1wbCBleHRlbmRzIEludCB7CisgICAgICBAT3ZlcnJpZGUKKyAgICAgIHB1YmxpYyBhYnN0cmFjdCBTdHJpbmcgZm9vKCk7CisgIH0KKyAgCisgIGNsYXNzIEludCB7CisgICAgcHVibGljIGFic3RyYWN0IFN0cmluZyBmb28oKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9wdWxsVXAvUHJlc2VydmVPdmVycmlkZV9hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3B1bGxVcC9QcmVzZXJ2ZU92ZXJyaWRlX2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWE1NTNjMQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9wdWxsVXAvUHJlc2VydmVPdmVycmlkZV9hZnRlci5qYXZhCkBAIC0wLDAgKzEsMTMgQEAKK2Fic3RyYWN0IGNsYXNzIEJhenogeworICAgIHB1YmxpYyBhYnN0cmFjdCB2b2lkIGZvbygpOworfQorCithYnN0cmFjdCBjbGFzcyBGb28gZXh0ZW5kcyBCYXp6IHsKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgdm9pZCBmb28oKSB7CisgICAgfQorfQorCitjbGFzcyBCYXIgZXh0ZW5kcyBGb28geworfQorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcHVsbFVwL1B1bGxVcEFuZE1ha2VBYnN0cmFjdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3B1bGxVcC9QdWxsVXBBbmRNYWtlQWJzdHJhY3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMTFjZmJlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3B1bGxVcC9QdWxsVXBBbmRNYWtlQWJzdHJhY3QuamF2YQpAQCAtMCwwICsxLDExIEBACitwdWJsaWMgY2xhc3MgQTIgeworfQorCitjbGFzcyBCMiBleHRlbmRzIEEyIHsKKyAgcHVibGljIHZvaWQgPGNhcmV0PmEoKSB7CisgICAgYigpOworICB9CisKKyAgcHJpdmF0ZSB2b2lkIGIoKSB7CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9wdWxsVXAvUHVsbFVwQW5kTWFrZUFic3RyYWN0X2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcHVsbFVwL1B1bGxVcEFuZE1ha2VBYnN0cmFjdF9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdmMTRmOGUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcHVsbFVwL1B1bGxVcEFuZE1ha2VBYnN0cmFjdF9hZnRlci5qYXZhCkBAIC0wLDAgKzEsMTQgQEAKK3B1YmxpYyBhYnN0cmFjdCBjbGFzcyBBMiB7CisgICAgcHVibGljIHZvaWQgYSgpIHsKKyAgICAgIGIoKTsKKyAgICB9CisKKyAgICBwcm90ZWN0ZWQgYWJzdHJhY3Qgdm9pZCBiKCk7Cit9CisKK2NsYXNzIEIyIGV4dGVuZHMgQTIgeworCisgICAgQE92ZXJyaWRlCisgICAgcHJvdGVjdGVkIHZvaWQgYigpIHsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3B1bGxVcC9QdWxsVXBJbmhlcml0ZWRTdGF0aWNDbGFzc2VzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcHVsbFVwL1B1bGxVcEluaGVyaXRlZFN0YXRpY0NsYXNzZXMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40OGNjNTA2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3B1bGxVcC9QdWxsVXBJbmhlcml0ZWRTdGF0aWNDbGFzc2VzLmphdmEKQEAgLTAsMCArMSw4IEBACitwdWJsaWMgY2xhc3MgQSBleHRlbmRzIEFBIHsKKyAgPGNhcmV0PgorICBzdGF0aWMgY2xhc3MgQyBleHRlbmRzIEQge30KKyAgc3RhdGljIGNsYXNzIEQgZXh0ZW5kcyBCIHt9CisgIHN0YXRpYyBjbGFzcyBCIHt9Cit9CisKK2NsYXNzIEFBIHt9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3B1bGxVcC9QdWxsVXBJbmhlcml0ZWRTdGF0aWNDbGFzc2VzX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcHVsbFVwL1B1bGxVcEluaGVyaXRlZFN0YXRpY0NsYXNzZXNfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMTFhYWJiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3B1bGxVcC9QdWxsVXBJbmhlcml0ZWRTdGF0aWNDbGFzc2VzX2FmdGVyLmphdmEKQEAgLTAsMCArMSwxMCBAQAorcHVibGljIGNsYXNzIEEgZXh0ZW5kcyBBQSB7CisKKyAgICBzdGF0aWMgY2xhc3MgQiB7fQorfQorCitjbGFzcyBBQSB7CisgICAgc3RhdGljIGNsYXNzIEMgZXh0ZW5kcyBEIHt9CisKKyAgICBzdGF0aWMgY2xhc3MgRCBleHRlbmRzIEEuQiB7fQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9wdWxsVXAvUHVsbFVwUHJpdmF0ZUlubmVyQ2xhc3NXaXRoUHJpdmF0ZUNvbnN0cnVjdG9yLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcHVsbFVwL1B1bGxVcFByaXZhdGVJbm5lckNsYXNzV2l0aFByaXZhdGVDb25zdHJ1Y3Rvci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQwZTNlMzkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcHVsbFVwL1B1bGxVcFByaXZhdGVJbm5lckNsYXNzV2l0aFByaXZhdGVDb25zdHJ1Y3Rvci5qYXZhCkBAIC0wLDAgKzEsMTUgQEAKK3B1YmxpYyBjbGFzcyBCIGV4dGVuZHMgQSB7CisgICAgcHJpdmF0ZSB2b2lkIGYoKXsKKyAgICAgICAgbmV3IEMoKTsKKyAgICB9CisgICAgICA8Y2FyZXQ+CisgICAgcHJpdmF0ZSBzdGF0aWMgY2xhc3MgQ3sKKyAgICAgICAgcHJpdmF0ZSBDKCl7CisKKyAgICAgICAgfQorICAgIH0KK30KKworLy9BLmphdmEKK2NsYXNzIEEgeworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9wdWxsVXAvUHVsbFVwUHJpdmF0ZUlubmVyQ2xhc3NXaXRoUHJpdmF0ZUNvbnN0cnVjdG9yX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcHVsbFVwL1B1bGxVcFByaXZhdGVJbm5lckNsYXNzV2l0aFByaXZhdGVDb25zdHJ1Y3Rvcl9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBjOWJhYWYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcHVsbFVwL1B1bGxVcFByaXZhdGVJbm5lckNsYXNzV2l0aFByaXZhdGVDb25zdHJ1Y3Rvcl9hZnRlci5qYXZhCkBAIC0wLDAgKzEsMTUgQEAKK3B1YmxpYyBjbGFzcyBCIGV4dGVuZHMgQSB7CisgICAgcHJpdmF0ZSB2b2lkIGYoKXsKKyAgICAgICAgbmV3IEMoKTsKKyAgICB9CisKK30KKworLy9BLmphdmEKK2NsYXNzIEEgeworICAgIHByb3RlY3RlZCBzdGF0aWMgY2xhc3MgQ3sKKyAgICAgICAgcHJvdGVjdGVkIEMoKXsKKworICAgICAgICB9CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9wdWxsVXAvUXVhbGlmaWVkUmVmZXJlbmNlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcHVsbFVwL1F1YWxpZmllZFJlZmVyZW5jZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEyMzMwZjcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcHVsbFVwL1F1YWxpZmllZFJlZmVyZW5jZS5qYXZhCkBAIC0wLDAgKzEsMTMgQEAKK2NsYXNzIFgge30KKworY2xhc3MgPGNhcmV0PlkgZXh0ZW5kcyBYIHsKKyAgICBwcml2YXRlIHN0YXRpYyBpbnQgeCA9IDA7CisKKyAgICBwdWJsaWMgc3RhdGljIGludCBnZXRYKCkgeworICAgICAgICByZXR1cm4geDsKKyAgICB9CisKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgc2V0WChpbnQgeCkgeworICAgICAgICBZLnggPSB4OworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcHVsbFVwL1F1YWxpZmllZFJlZmVyZW5jZV9hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3B1bGxVcC9RdWFsaWZpZWRSZWZlcmVuY2VfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNmE5Nzc3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3B1bGxVcC9RdWFsaWZpZWRSZWZlcmVuY2VfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDE1IEBACitjbGFzcyBYIHsKKyAgICBwcml2YXRlIHN0YXRpYyBpbnQgeCA9IDA7CisKKyAgICBwdWJsaWMgc3RhdGljIGludCBnZXRYKCkgeworICAgICAgICByZXR1cm4geDsKKyAgICB9CisKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgc2V0WChpbnQgeCkgeworICAgICAgICBYLnggPSB4OworICAgIH0KK30KKworY2xhc3MgWSBleHRlbmRzIFggeworCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3B1bGxVcC9RdWFsaWZpZWRTdXBlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3B1bGxVcC9RdWFsaWZpZWRTdXBlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZjNTg2NjEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcHVsbFVwL1F1YWxpZmllZFN1cGVyLmphdmEKQEAgLTAsMCArMSwxMiBAQAorY2xhc3MgPGNhcmV0PlF1YWxpZmllZFN1cGVyIGV4dGVuZHMgQmFzZSB7CisgICAgY2xhc3MgSW5uZXIgeworICAgICAgICB2b2lkIGdvbygpIHsKKyAgICAgICAgICAgIFF1YWxpZmllZFN1cGVyLnN1cGVyLnRvU3RyaW5nKCk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK2NsYXNzIEJhc2UgeworCisKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9wdWxsVXAvUXVhbGlmaWVkU3VwZXJfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9wdWxsVXAvUXVhbGlmaWVkU3VwZXJfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wOGU3MjUwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3B1bGxVcC9RdWFsaWZpZWRTdXBlcl9hZnRlci5qYXZhCkBAIC0wLDAgKzEsMTIgQEAKK2NsYXNzIFF1YWxpZmllZFN1cGVyIGV4dGVuZHMgQmFzZSB7Cit9CisKK2NsYXNzIEJhc2UgeworCisKKyAgICBjbGFzcyBJbm5lciB7CisgICAgICAgIHZvaWQgZ29vKCkgeworICAgICAgICAgICAgQmFzZS50aGlzLnRvU3RyaW5nKCk7CisgICAgICAgIH0KKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcHVsbFVwL1F1YWxpZmllZFRoaXMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9wdWxsVXAvUXVhbGlmaWVkVGhpcy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNjYzJkM2IKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcHVsbFVwL1F1YWxpZmllZFRoaXMuamF2YQpAQCAtMCwwICsxLDE1IEBACitjbGFzcyBCYXNlIHsKKyAgICB2b2lkIGZvbygpIHsKKyAgICB9Cit9CisKK3B1YmxpYyBjbGFzcyA8Y2FyZXQ+UXVhbGlmaWVkVGhpcyBleHRlbmRzIEJhc2UgeworICAgIHZvaWQgZm9vKCkgeworICAgIH0KKworICAgIGNsYXNzIElubmVyIHsKKyAgICAgICAgdm9pZCBiYXIoKSB7CisgICAgICAgICAgICBRdWFsaWZpZWRUaGlzLnRoaXMuZm9vKCk7CisgICAgICAgIH0KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3B1bGxVcC9RdWFsaWZpZWRUaGlzX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcHVsbFVwL1F1YWxpZmllZFRoaXNfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYTQwZDdjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3B1bGxVcC9RdWFsaWZpZWRUaGlzX2FmdGVyLmphdmEKQEAgLTAsMCArMSwxNiBAQAorY2xhc3MgQmFzZSB7CisgICAgdm9pZCBmb28oKSB7CisgICAgfQorCisgICAgY2xhc3MgSW5uZXIgeworICAgICAgICB2b2lkIGJhcigpIHsKKyAgICAgICAgICAgIEJhc2UudGhpcy5mb28oKTsKKyAgICAgICAgfQorICAgIH0KK30KKworcHVibGljIGNsYXNzIFF1YWxpZmllZFRoaXMgZXh0ZW5kcyBCYXNlIHsKKyAgICB2b2lkIGZvbygpIHsKKyAgICB9CisKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcHVsbFVwL1JlbW92ZU92ZXJyaWRlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcHVsbFVwL1JlbW92ZU92ZXJyaWRlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzE5NzcxNgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9wdWxsVXAvUmVtb3ZlT3ZlcnJpZGUuamF2YQpAQCAtMCwwICsxLDE2IEBACitwdWJsaWMgY2xhc3MgVGVzdCB7CisgICAgY2xhc3MgSW1wbCBleHRlbmRzIEJhc2UgeworICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHVibGljIFN0cmluZyBnZXQoKSB7CisgICAgICAgICAgICByZXR1cm4gIjIzOSI7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBhYnN0cmFjdCBjbGFzcyBCYXNlIGltcGxlbWVudHMgSW50IHsKKyAgICAgICAgcHVibGljIGFic3RyYWN0IFN0cmluZyA8Y2FyZXQ+Z2V0KCk7CisKKyAgICB9CisKKyAgICBpbnRlcmZhY2UgSW50IHsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3B1bGxVcC9SZW1vdmVPdmVycmlkZUZyb21QdWxsZWRNZXRob2QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9wdWxsVXAvUmVtb3ZlT3ZlcnJpZGVGcm9tUHVsbGVkTWV0aG9kLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTU1ZjJlNQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9wdWxsVXAvUmVtb3ZlT3ZlcnJpZGVGcm9tUHVsbGVkTWV0aG9kLmphdmEKQEAgLTAsMCArMSw5IEBACitwdWJsaWMgY2xhc3MgVGVzdCB7CisgIGFic3RyYWN0IGNsYXNzIEJhc2UgZXh0ZW5kcyBJbnQgeworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyBhYnN0cmFjdCBTdHJpbmc8Y2FyZXQ+IGZvbygpOworICB9CisKKyAgY2xhc3MgSW50IHsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9wdWxsVXAvUmVtb3ZlT3ZlcnJpZGVGcm9tUHVsbGVkTWV0aG9kX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcHVsbFVwL1JlbW92ZU92ZXJyaWRlRnJvbVB1bGxlZE1ldGhvZF9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjczODhkZDEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcHVsbFVwL1JlbW92ZU92ZXJyaWRlRnJvbVB1bGxlZE1ldGhvZF9hZnRlci5qYXZhCkBAIC0wLDAgKzEsOCBAQAorcHVibGljIGNsYXNzIFRlc3QgeworICBhYnN0cmFjdCBjbGFzcyBCYXNlIGV4dGVuZHMgSW50IHsKKyAgfQorCisgIGFic3RyYWN0IGNsYXNzIEludCB7CisgICAgICBwdWJsaWMgYWJzdHJhY3QgU3RyaW5nIGZvbygpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3B1bGxVcC9SZW1vdmVPdmVycmlkZV9hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3B1bGxVcC9SZW1vdmVPdmVycmlkZV9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFkZWUwMzMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcHVsbFVwL1JlbW92ZU92ZXJyaWRlX2FmdGVyLmphdmEKQEAgLTAsMCArMSwxNSBAQAorcHVibGljIGNsYXNzIFRlc3QgeworICAgIGNsYXNzIEltcGwgZXh0ZW5kcyBCYXNlIHsKKyAgICAgICAgcHVibGljIFN0cmluZyBnZXQoKSB7CisgICAgICAgICAgICByZXR1cm4gIjIzOSI7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBhYnN0cmFjdCBjbGFzcyBCYXNlIGltcGxlbWVudHMgSW50IHsKKworICAgIH0KKworICAgIGludGVyZmFjZSBJbnQgeworICAgICAgICBTdHJpbmcgZ2V0KCk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9wdWxsVXAvUmVwbGFjZUR1cGxpY2F0ZXNJbkluaGVyaXRvcnMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9wdWxsVXAvUmVwbGFjZUR1cGxpY2F0ZXNJbkluaGVyaXRvcnMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yN2U0YzJmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3B1bGxVcC9SZXBsYWNlRHVwbGljYXRlc0luSW5oZXJpdG9ycy5qYXZhCkBAIC0wLDAgKzEsMTggQEAKK2NsYXNzIEEge30KK2NsYXNzIEFJbXBsMSBleHRlbmRzIEF7CisgIHZvaWQgZjxjYXJldD5vbygpIHsKKyAgICBTeXN0ZW0ub3V0LnByaW50bG4oImhlbGxvIik7CisgICAgU3lzdGVtLm91dC5wcmludGxuKCJoZWxsbyIpOworICAgIFN5c3RlbS5vdXQucHJpbnRsbigiaGVsbG8iKTsKKyAgICBTeXN0ZW0ub3V0LnByaW50bG4oImhlbGxvIik7CisgIH0KK30KKworY2xhc3MgQUltcGwyIGV4dGVuZHMgQSB7CisgIHZvaWQgYmFyKCkgeworICAgIFN5c3RlbS5vdXQucHJpbnRsbigiaGVsbG8iKTsKKyAgICBTeXN0ZW0ub3V0LnByaW50bG4oImhlbGxvIik7CisgICAgU3lzdGVtLm91dC5wcmludGxuKCJoZWxsbyIpOworICAgIFN5c3RlbS5vdXQucHJpbnRsbigiaGVsbG8iKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9wdWxsVXAvUmVwbGFjZUR1cGxpY2F0ZXNJbkluaGVyaXRvcnNfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9wdWxsVXAvUmVwbGFjZUR1cGxpY2F0ZXNJbkluaGVyaXRvcnNfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNGU5MDAzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3B1bGxVcC9SZXBsYWNlRHVwbGljYXRlc0luSW5oZXJpdG9yc19hZnRlci5qYXZhCkBAIC0wLDAgKzEsMTYgQEAKK2NsYXNzIEEgeworICAgIHZvaWQgZm9vKCkgeworICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJoZWxsbyIpOworICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJoZWxsbyIpOworICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJoZWxsbyIpOworICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJoZWxsbyIpOworICAgIH0KK30KK2NsYXNzIEFJbXBsMSBleHRlbmRzIEF7Cit9CisKK2NsYXNzIEFJbXBsMiBleHRlbmRzIEEgeworICB2b2lkIGJhcigpIHsKKyAgICAgIGZvbygpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3B1bGxVcC9UcnlDYXRjaEZpZWxkSW5pdGlhbGl6ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9wdWxsVXAvVHJ5Q2F0Y2hGaWVsZEluaXRpYWxpemVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDQwMWI2ZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9wdWxsVXAvVHJ5Q2F0Y2hGaWVsZEluaXRpYWxpemVyLmphdmEKQEAgLTAsMCArMSwxOSBAQAorcHVibGljIGNsYXNzIFN1cCB7CisKK30KKworY2xhc3MgRXh0cmFjdFN1cGVyQ2xhc3MgZXh0ZW5kcyBTdXAgeworCisgIHByaXZhdGUgZmluYWwgU3RyaW5nIDxjYXJldD5maWVsZDsKKworICBwdWJsaWMgRXh0cmFjdFN1cGVyQ2xhc3MoKSB7CisKKworICAgIHRyeSB7CisgICAgICBmaWVsZCA9IChTdHJpbmcpInRleHQiOworICAgIH0KKyAgICBjYXRjaCAoUnVudGltZUV4Y2VwdGlvbiBlKSB7CisgICAgICB0aHJvdyBuZXcgUnVudGltZUV4Y2VwdGlvbigpOworICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9wdWxsVXAvVHJ5Q2F0Y2hGaWVsZEluaXRpYWxpemVyX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcHVsbFVwL1RyeUNhdGNoRmllbGRJbml0aWFsaXplcl9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk3MDRmOGEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcHVsbFVwL1RyeUNhdGNoRmllbGRJbml0aWFsaXplcl9hZnRlci5qYXZhCkBAIC0wLDAgKzEsMjIgQEAKK3B1YmxpYyBjbGFzcyBTdXAgeworCisgICAgcHJvdGVjdGVkIGZpbmFsIFN0cmluZyBmaWVsZDsKKworICAgIHB1YmxpYyBTdXAoKSB7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgZmllbGQgPSAoU3RyaW5nKSJ0ZXh0IjsKKyAgICAgICAgfQorICAgICAgICBjYXRjaCAoUnVudGltZUV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgdGhyb3cgbmV3IFJ1bnRpbWVFeGNlcHRpb24oKTsKKyAgICAgICAgfQorICAgIH0KK30KKworY2xhc3MgRXh0cmFjdFN1cGVyQ2xhc3MgZXh0ZW5kcyBTdXAgeworCisgICAgcHVibGljIEV4dHJhY3RTdXBlckNsYXNzKCkgeworICAgICAgICBzdXBlcigpOworCisKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3B1bGxVcC9UeXBlQXJndW1lbnQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9wdWxsVXAvVHlwZUFyZ3VtZW50LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjExNDBjOAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9wdWxsVXAvVHlwZUFyZ3VtZW50LmphdmEKQEAgLTAsMCArMSw1IEBACitwdWJsaWMgY2xhc3MgUGFyZW50PFM+IHt9CisKK2NsYXNzIENoaWxkIGV4dGVuZHMgUGFyZW50PFN0cmluZz4geworICAgU3RyaW5nIDxjYXJldD5mOworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3B1bGxVcC9UeXBlQXJndW1lbnRfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9wdWxsVXAvVHlwZUFyZ3VtZW50X2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjUzMGVjZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9wdWxsVXAvVHlwZUFyZ3VtZW50X2FmdGVyLmphdmEKQEAgLTAsMCArMSw2IEBACitwdWJsaWMgY2xhc3MgUGFyZW50PFM+IHsKKyAgICBTdHJpbmcgZjsKK30KKworY2xhc3MgQ2hpbGQgZXh0ZW5kcyBQYXJlbnQ8U3RyaW5nPiB7Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcHVsbFVwL1R5cGVQYXJhbUVyYXN1cmUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9wdWxsVXAvVHlwZVBhcmFtRXJhc3VyZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBkYmMyNGYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcHVsbFVwL1R5cGVQYXJhbUVyYXN1cmUuamF2YQpAQCAtMCwwICsxLDUgQEAKK3B1YmxpYyBjbGFzcyBQYXJlbnQge30KKworY2xhc3MgQ2hpbGQ8VD4gZXh0ZW5kcyBQYXJlbnQgeworICAgVCA8Y2FyZXQ+ZjsKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9wdWxsVXAvVHlwZVBhcmFtRXJhc3VyZV9hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3B1bGxVcC9UeXBlUGFyYW1FcmFzdXJlX2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmJlOThkYQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9wdWxsVXAvVHlwZVBhcmFtRXJhc3VyZV9hZnRlci5qYXZhCkBAIC0wLDAgKzEsNiBAQAorcHVibGljIGNsYXNzIFBhcmVudCB7CisgICAgT2JqZWN0IGY7Cit9CisKK2NsYXNzIENoaWxkPFQ+IGV4dGVuZHMgUGFyZW50IHsKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9wdWxsVXAvVHlwZVBhcmFtU3Vic3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9wdWxsVXAvVHlwZVBhcmFtU3Vic3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMmFkMGM3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3B1bGxVcC9UeXBlUGFyYW1TdWJzdC5qYXZhCkBAIC0wLDAgKzEsNSBAQAorcHVibGljIGNsYXNzIFBhcmVudDxTPiB7fQorCitjbGFzcyBDaGlsZDxUPiBleHRlbmRzIFBhcmVudDxUPiB7CisgICBUIDxjYXJldD5mOworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3B1bGxVcC9UeXBlUGFyYW1TdWJzdF9hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3B1bGxVcC9UeXBlUGFyYW1TdWJzdF9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJjNzQ3NDUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcHVsbFVwL1R5cGVQYXJhbVN1YnN0X2FmdGVyLmphdmEKQEAgLTAsMCArMSw2IEBACitwdWJsaWMgY2xhc3MgUGFyZW50PFM+IHsKKyAgICBTIGY7Cit9CisKK2NsYXNzIENoaWxkPFQ+IGV4dGVuZHMgUGFyZW50PFQ+IHsKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9wdWxsVXAvVHlwZVBhcmFtc0NvbmZsaWN0aW5nTmFtZXMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9wdWxsVXAvVHlwZVBhcmFtc0NvbmZsaWN0aW5nTmFtZXMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kN2I0ZGZmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3B1bGxVcC9UeXBlUGFyYW1zQ29uZmxpY3RpbmdOYW1lcy5qYXZhCkBAIC0wLDAgKzEsNyBAQAoraW50ZXJmYWNlIEJhcjxUPiB7IH0KKworaW50ZXJmYWNlIEJhc2U8VD4geyB9CisKK2NsYXNzIEZvbzxULFU+IGltcGxlbWVudHMgQmFzZTxVPiB7CisgICAgdm9pZCBmbzxjYXJldD5vKEJhcjxVPiBiYXIpIHsgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9wdWxsVXAvVHlwZVBhcmFtc0NvbmZsaWN0aW5nTmFtZXNfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9wdWxsVXAvVHlwZVBhcmFtc0NvbmZsaWN0aW5nTmFtZXNfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ODQxMjE4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3B1bGxVcC9UeXBlUGFyYW1zQ29uZmxpY3RpbmdOYW1lc19hZnRlci5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKK2ludGVyZmFjZSBCYXI8VD4geyB9CisKK2ludGVyZmFjZSBCYXNlPFQ+IHsKKyAgICB2b2lkIGZvbyhCYXI8VD4gYmFyKTsKK30KKworY2xhc3MgRm9vPFQsVT4gaW1wbGVtZW50cyBCYXNlPFU+IHsKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgdm9pZCBmb28oQmFyPFU+IGJhcikgeyB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3B1bGxVcC9VcGRhdGVTdGF0aWNSZWZzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcHVsbFVwL1VwZGF0ZVN0YXRpY1JlZnMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZDE1MTc3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3B1bGxVcC9VcGRhdGVTdGF0aWNSZWZzLmphdmEKQEAgLTAsMCArMSwxMCBAQAorY2xhc3MgRm9vIHt9CitjbGFzcyBGb29JbXBsIGV4dGVuZHMgRm9vIHsKKyAgcHVibGljIHN0YXRpYyB2b2lkIGZvbygpe30KKyAgPGNhcmV0PgorfQorY2xhc3MgVSB7CisgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKKyAgICBGb29JbXBsLmZvbygpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3B1bGxVcC9VcGRhdGVTdGF0aWNSZWZzX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcHVsbFVwL1VwZGF0ZVN0YXRpY1JlZnNfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMjY3ZDk5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3B1bGxVcC9VcGRhdGVTdGF0aWNSZWZzX2FmdGVyLmphdmEKQEAgLTAsMCArMSwxMSBAQAorY2xhc3MgRm9vIHsKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgZm9vKCl7fQorfQorY2xhc3MgRm9vSW1wbCBleHRlbmRzIEZvbyB7CisKK30KK2NsYXNzIFUgeworICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CisgICAgRm9vLmZvbygpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3B1bGxVcC9pbmFjY2Vzc2libGUvYWZ0ZXIvYS9BLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcHVsbFVwL2luYWNjZXNzaWJsZS9hZnRlci9hL0EuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNjE3MDlhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3B1bGxVcC9pbmFjY2Vzc2libGUvYWZ0ZXIvYS9BLmphdmEKQEAgLTAsMCArMSw1IEBACitwYWNrYWdlIGE7CitpbXBvcnQgYi5COworcHVibGljIGNsYXNzIEEgZXh0ZW5kcyBCIHsKKyAgICB2b2lkIGZvbygpe30KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcHVsbFVwL2luYWNjZXNzaWJsZS9hZnRlci9iL0IuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9wdWxsVXAvaW5hY2Nlc3NpYmxlL2FmdGVyL2IvQi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM5Y2Y3OTYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcHVsbFVwL2luYWNjZXNzaWJsZS9hZnRlci9iL0IuamF2YQpAQCAtMCwwICsxLDYgQEAKK3BhY2thZ2UgYjsKK3B1YmxpYyBjbGFzcyBCIHsKKyAgICB2b2lkIG1ldGhvZDJNb3ZlKCkgeworICAgICAgZm9vKCk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9wdWxsVXAvaW5hY2Nlc3NpYmxlL2JlZm9yZS9hL0EuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9wdWxsVXAvaW5hY2Nlc3NpYmxlL2JlZm9yZS9hL0EuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNzRiYTdjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3B1bGxVcC9pbmFjY2Vzc2libGUvYmVmb3JlL2EvQS5qYXZhCkBAIC0wLDAgKzEsOCBAQAorcGFja2FnZSBhOworaW1wb3J0IGIuQjsKK3B1YmxpYyBjbGFzcyBBIGV4dGVuZHMgQiB7CisgIHZvaWQgbWV0aG9kMk1vdmUoKSB7CisgICAgZm9vKCk7CisgIH0KKyAgdm9pZCBmb28oKXt9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3B1bGxVcC9pbmFjY2Vzc2libGUvYmVmb3JlL2IvQi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3B1bGxVcC9pbmFjY2Vzc2libGUvYmVmb3JlL2IvQi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ4MmNlNDMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcHVsbFVwL2luYWNjZXNzaWJsZS9iZWZvcmUvYi9CLmphdmEKQEAgLTAsMCArMSwyIEBACitwYWNrYWdlIGI7CitwdWJsaWMgY2xhc3MgQiB7fQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9wdWxsVXAvcmV1c2VTdXBlck1ldGhvZC9hZnRlci9hL0EuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9wdWxsVXAvcmV1c2VTdXBlck1ldGhvZC9hZnRlci9hL0EuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MDRhNjk5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3B1bGxVcC9yZXVzZVN1cGVyTWV0aG9kL2FmdGVyL2EvQS5qYXZhCkBAIC0wLDAgKzEsNSBAQAorcGFja2FnZSBhOworaW1wb3J0IGIuQjsKK3B1YmxpYyBjbGFzcyBBIGV4dGVuZHMgQiB7CisgICAgcHJvdGVjdGVkIHZvaWQgZm9vKCl7fQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9wdWxsVXAvcmV1c2VTdXBlck1ldGhvZC9hZnRlci9iL0IuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9wdWxsVXAvcmV1c2VTdXBlck1ldGhvZC9hZnRlci9iL0IuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZTU3OWY4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3B1bGxVcC9yZXVzZVN1cGVyTWV0aG9kL2FmdGVyL2IvQi5qYXZhCkBAIC0wLDAgKzEsOCBAQAorcGFja2FnZSBiOworcHVibGljIGNsYXNzIEIgeworICBwcm90ZWN0ZWQgdm9pZCBmb28oKXt9CisKKyAgICB2b2lkIG1ldGhvZDJNb3ZlKCkgeworICAgICAgZm9vKCk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9wdWxsVXAvcmV1c2VTdXBlck1ldGhvZC9iZWZvcmUvYS9BLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcHVsbFVwL3JldXNlU3VwZXJNZXRob2QvYmVmb3JlL2EvQS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAwOGE0MGUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcHVsbFVwL3JldXNlU3VwZXJNZXRob2QvYmVmb3JlL2EvQS5qYXZhCkBAIC0wLDAgKzEsOCBAQAorcGFja2FnZSBhOworaW1wb3J0IGIuQjsKK3B1YmxpYyBjbGFzcyBBIGV4dGVuZHMgQiB7CisgIHZvaWQgbWV0aG9kMk1vdmUoKSB7CisgICAgZm9vKCk7CisgIH0KKyAgcHJvdGVjdGVkIHZvaWQgZm9vKCl7fQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9wdWxsVXAvcmV1c2VTdXBlck1ldGhvZC9iZWZvcmUvYi9CLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcHVsbFVwL3JldXNlU3VwZXJNZXRob2QvYmVmb3JlL2IvQi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJlZmI1NzEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcHVsbFVwL3JldXNlU3VwZXJNZXRob2QvYmVmb3JlL2IvQi5qYXZhCkBAIC0wLDAgKzEsNCBAQAorcGFja2FnZSBiOworcHVibGljIGNsYXNzIEIgeworICBwcm90ZWN0ZWQgdm9pZCBmb28oKXt9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3B1bGxVcC9yZXVzZVN1cGVyU3VwZXJNZXRob2QvYWZ0ZXIvYS9BLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcHVsbFVwL3JldXNlU3VwZXJTdXBlck1ldGhvZC9hZnRlci9hL0EuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MDRhNjk5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3B1bGxVcC9yZXVzZVN1cGVyU3VwZXJNZXRob2QvYWZ0ZXIvYS9BLmphdmEKQEAgLTAsMCArMSw1IEBACitwYWNrYWdlIGE7CitpbXBvcnQgYi5COworcHVibGljIGNsYXNzIEEgZXh0ZW5kcyBCIHsKKyAgICBwcm90ZWN0ZWQgdm9pZCBmb28oKXt9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3B1bGxVcC9yZXVzZVN1cGVyU3VwZXJNZXRob2QvYWZ0ZXIvYi9CLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcHVsbFVwL3JldXNlU3VwZXJTdXBlck1ldGhvZC9hZnRlci9iL0IuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMjdhNGU2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3B1bGxVcC9yZXVzZVN1cGVyU3VwZXJNZXRob2QvYWZ0ZXIvYi9CLmphdmEKQEAgLTAsMCArMSw3IEBACitwYWNrYWdlIGI7CitpbXBvcnQgYy5DOworcHVibGljIGNsYXNzIEIgZXh0ZW5kcyBDIHsKKyAgICB2b2lkIG1ldGhvZDJNb3ZlKCkgeworICAgICAgZm9vKCk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9wdWxsVXAvcmV1c2VTdXBlclN1cGVyTWV0aG9kL2FmdGVyL2MvQy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3B1bGxVcC9yZXVzZVN1cGVyU3VwZXJNZXRob2QvYWZ0ZXIvYy9DLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWI1YTFhNgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9wdWxsVXAvcmV1c2VTdXBlclN1cGVyTWV0aG9kL2FmdGVyL2MvQy5qYXZhCkBAIC0wLDAgKzEsNCBAQAorcGFja2FnZSBjOworcHVibGljIGNsYXNzIEMgeworICBwcm90ZWN0ZWQgdm9pZCBmb28oKXt9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3B1bGxVcC9yZXVzZVN1cGVyU3VwZXJNZXRob2QvYmVmb3JlL2EvQS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3B1bGxVcC9yZXVzZVN1cGVyU3VwZXJNZXRob2QvYmVmb3JlL2EvQS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAwOGE0MGUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcHVsbFVwL3JldXNlU3VwZXJTdXBlck1ldGhvZC9iZWZvcmUvYS9BLmphdmEKQEAgLTAsMCArMSw4IEBACitwYWNrYWdlIGE7CitpbXBvcnQgYi5COworcHVibGljIGNsYXNzIEEgZXh0ZW5kcyBCIHsKKyAgdm9pZCBtZXRob2QyTW92ZSgpIHsKKyAgICBmb28oKTsKKyAgfQorICBwcm90ZWN0ZWQgdm9pZCBmb28oKXt9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3B1bGxVcC9yZXVzZVN1cGVyU3VwZXJNZXRob2QvYmVmb3JlL2IvQi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3B1bGxVcC9yZXVzZVN1cGVyU3VwZXJNZXRob2QvYmVmb3JlL2IvQi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI3Nzk3ZDQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcHVsbFVwL3JldXNlU3VwZXJTdXBlck1ldGhvZC9iZWZvcmUvYi9CLmphdmEKQEAgLTAsMCArMSw0IEBACitwYWNrYWdlIGI7CitpbXBvcnQgYy5DOworcHVibGljIGNsYXNzIEIgZXh0ZW5kcyBDIHsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcHVsbFVwL3JldXNlU3VwZXJTdXBlck1ldGhvZC9iZWZvcmUvYy9DLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcHVsbFVwL3JldXNlU3VwZXJTdXBlck1ldGhvZC9iZWZvcmUvYy9DLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWI1YTFhNgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9wdWxsVXAvcmV1c2VTdXBlclN1cGVyTWV0aG9kL2JlZm9yZS9jL0MuamF2YQpAQCAtMCwwICsxLDQgQEAKK3BhY2thZ2UgYzsKK3B1YmxpYyBjbGFzcyBDIHsKKyAgcHJvdGVjdGVkIHZvaWQgZm9vKCl7fQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9wdXNoRG93bi9Cb2R5VHlwZVBhcmFtZXRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3B1c2hEb3duL0JvZHlUeXBlUGFyYW1ldGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2I1YWNlMwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9wdXNoRG93bi9Cb2R5VHlwZVBhcmFtZXRlci5qYXZhCkBAIC0wLDAgKzEsNyBAQAorY2xhc3MgVGVzdCA8VD4geworICAgdm9pZCA8Y2FyZXQ+Zm9vKFQgdCkgeworICAgICBUIHR0ID0gdDsKKyAgIH0KK30KKworY2xhc3MgSSBleHRlbmRzIFRlc3Q8U3RyaW5nPnt9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3B1c2hEb3duL0JvZHlUeXBlUGFyYW1ldGVyX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcHVzaERvd24vQm9keVR5cGVQYXJhbWV0ZXJfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYzcwMjc3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3B1c2hEb3duL0JvZHlUeXBlUGFyYW1ldGVyX2FmdGVyLmphdmEKQEAgLTAsMCArMSw4IEBACitjbGFzcyBUZXN0IDxUPiB7Cit9CisKK2NsYXNzIEkgZXh0ZW5kcyBUZXN0PFN0cmluZz57CisgICAgdm9pZCBmb28oU3RyaW5nIHQpIHsKKyAgICAgIFN0cmluZyB0dCA9IHQ7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9wdXNoRG93bi9EaXNhZ3JlZVR5cGVQYXJhbWV0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9wdXNoRG93bi9EaXNhZ3JlZVR5cGVQYXJhbWV0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45OGZmZjk2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3B1c2hEb3duL0Rpc2FncmVlVHlwZVBhcmFtZXRlci5qYXZhCkBAIC0wLDAgKzEsMTIgQEAKK2NsYXNzIFRlc3QgPFQ+IHsKKyAgIHZvaWQgPGNhcmV0PmZvbyhUIHQpIHsKKyAgIH0KK30KKworY2xhc3MgSSBleHRlbmRzIFRlc3Q8U3RyaW5nPnt9CisKK2NsYXNzIFVzYWdlIHsKKyAgdm9pZCBiYXIoKSB7CisgICAgbmV3IFRlc3Q8SW50ZWdlcj4oKS5mb28oMSk7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcHVzaERvd24vRGlzYWdyZWVUeXBlUGFyYW1ldGVyX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcHVzaERvd24vRGlzYWdyZWVUeXBlUGFyYW1ldGVyX2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjI4Nzk5NQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9wdXNoRG93bi9EaXNhZ3JlZVR5cGVQYXJhbWV0ZXJfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDEzIEBACitjbGFzcyBUZXN0IDxUPiB7Cit9CisKK2NsYXNzIEkgZXh0ZW5kcyBUZXN0PFN0cmluZz57CisgICAgdm9pZCBmb28oU3RyaW5nIHQpIHsKKyAgICB9Cit9CisKK2NsYXNzIFVzYWdlIHsKKyAgdm9pZCBiYXIoKSB7CisgICAgbmV3IFRlc3Q8SW50ZWdlcj4oKS5mb28oMSk7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcHVzaERvd24vRXh0ZW5zaW9uTWV0aG9kVG9DbGFzcy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3B1c2hEb3duL0V4dGVuc2lvbk1ldGhvZFRvQ2xhc3MuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYjA3NGNiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3B1c2hEb3duL0V4dGVuc2lvbk1ldGhvZFRvQ2xhc3MuamF2YQpAQCAtMCwwICsxLDggQEAKK2ludGVyZmFjZSBCYXNlIHsKKyAgICB2b2lkIGZvbzxjYXJldD4oKSBkZWZhdWx0IHsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJIaSB0aGVyZS4iKTsKKyAgICB9Cit9CisKK2NsYXNzIEMgaW1wbGVtZW50cyBCYXNlIHsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcHVzaERvd24vRXh0ZW5zaW9uTWV0aG9kVG9DbGFzc19hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3B1c2hEb3duL0V4dGVuc2lvbk1ldGhvZFRvQ2xhc3NfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYTVkMDZmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3B1c2hEb3duL0V4dGVuc2lvbk1ldGhvZFRvQ2xhc3NfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDggQEAKK2ludGVyZmFjZSBCYXNlIHsKK30KKworY2xhc3MgQyBpbXBsZW1lbnRzIEJhc2UgeworICAgIHB1YmxpYyB2b2lkIGZvbygpIHsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJIaSB0aGVyZS4iKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3B1c2hEb3duL0V4dGVuc2lvbk1ldGhvZFRvSW50ZXJmYWNlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcHVzaERvd24vRXh0ZW5zaW9uTWV0aG9kVG9JbnRlcmZhY2UuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43YmY5NGVhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3B1c2hEb3duL0V4dGVuc2lvbk1ldGhvZFRvSW50ZXJmYWNlLmphdmEKQEAgLTAsMCArMSw4IEBACitpbnRlcmZhY2UgQmFzZSB7CisgICAgdm9pZCBmb288Y2FyZXQ+KCkgZGVmYXVsdCB7CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiSGkgdGhlcmUuIik7CisgICAgfQorfQorCitpbnRlcmZhY2UgSTIgZXh0ZW5kcyBCYXNlIHsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcHVzaERvd24vRXh0ZW5zaW9uTWV0aG9kVG9JbnRlcmZhY2VfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9wdXNoRG93bi9FeHRlbnNpb25NZXRob2RUb0ludGVyZmFjZV9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRkNWY5YjcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcHVzaERvd24vRXh0ZW5zaW9uTWV0aG9kVG9JbnRlcmZhY2VfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDggQEAKK2ludGVyZmFjZSBCYXNlIHsKK30KKworaW50ZXJmYWNlIEkyIGV4dGVuZHMgQmFzZSB7CisgICAgdm9pZCBmb28oKSBkZWZhdWx0IHsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJIaSB0aGVyZS4iKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3B1c2hEb3duL0ZpZWxkQW5kUmVmZXJlbmNlZENsYXNzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcHVzaERvd24vRmllbGRBbmRSZWZlcmVuY2VkQ2xhc3MuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZWI0YmIzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3B1c2hEb3duL0ZpZWxkQW5kUmVmZXJlbmNlZENsYXNzLmphdmEKQEAgLTAsMCArMSwxMyBAQAorcHVibGljIGNsYXNzIFRlc3QgeworICBjbGFzcyA8Y2FyZXQ+QyB7CisgICAgQk9PTDsKKyAgfQorCisgIFJ1bm5hYmxlIGZpZWxkVG9Nb3ZlID0gbmV3IFJ1bm5hYmxlKCl7CisgICAgcHVibGljIHZvaWQgcnVuKCl7CisgICAgICAgaWYgKG5ldyBDKCkuQk9PTCl7fQorICAgIH0KKyAgfTsKK30KKworY2xhc3MgQiBleHRlbmRzIFRlc3R7fQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9wdXNoRG93bi9GaWVsZEFuZFJlZmVyZW5jZWRDbGFzc19hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3B1c2hEb3duL0ZpZWxkQW5kUmVmZXJlbmNlZENsYXNzX2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmMzOTM1MwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9wdXNoRG93bi9GaWVsZEFuZFJlZmVyZW5jZWRDbGFzc19hZnRlci5qYXZhCkBAIC0wLDAgKzEsMTUgQEAKK3B1YmxpYyBjbGFzcyBUZXN0IHsKKworfQorCitjbGFzcyBCIGV4dGVuZHMgVGVzdHsKKyAgICBSdW5uYWJsZSBmaWVsZFRvTW92ZSA9IG5ldyBSdW5uYWJsZSgpeworICAgICAgcHVibGljIHZvaWQgcnVuKCl7CisgICAgICAgICBpZiAobmV3IEMoKS5CT09MKXt9CisgICAgICB9CisgICAgfTsKKworICAgIGNsYXNzIEMgeworICAgICAgQk9PTDsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3B1c2hEb3duL0ZpZWxkQW5kU3RhdGljUmVmZXJlbmNlZENsYXNzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcHVzaERvd24vRmllbGRBbmRTdGF0aWNSZWZlcmVuY2VkQ2xhc3MuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZDNiMzdjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3B1c2hEb3duL0ZpZWxkQW5kU3RhdGljUmVmZXJlbmNlZENsYXNzLmphdmEKQEAgLTAsMCArMSwxMyBAQAorcHVibGljIGNsYXNzIFRlc3QgeworICBzdGF0aWMgY2xhc3MgPGNhcmV0PkMgeworICAgIHN0YXRpYyBCT09MOworICB9CisKKyAgUnVubmFibGUgZmllbGRUb01vdmUgPSBuZXcgUnVubmFibGUoKXsKKyAgICBwdWJsaWMgdm9pZCBydW4oKXsKKyAgICAgICBpZiAoQy5CT09MKXt9CisgICAgfQorICB9OworfQorCitjbGFzcyBCIGV4dGVuZHMgVGVzdHt9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3B1c2hEb3duL0ZpZWxkQW5kU3RhdGljUmVmZXJlbmNlZENsYXNzX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcHVzaERvd24vRmllbGRBbmRTdGF0aWNSZWZlcmVuY2VkQ2xhc3NfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMmI1OGMyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3B1c2hEb3duL0ZpZWxkQW5kU3RhdGljUmVmZXJlbmNlZENsYXNzX2FmdGVyLmphdmEKQEAgLTAsMCArMSwxNSBAQAorcHVibGljIGNsYXNzIFRlc3QgeworCit9CisKK2NsYXNzIEIgZXh0ZW5kcyBUZXN0eworICAgIFJ1bm5hYmxlIGZpZWxkVG9Nb3ZlID0gbmV3IFJ1bm5hYmxlKCl7CisgICAgICBwdWJsaWMgdm9pZCBydW4oKXsKKyAgICAgICAgIGlmIChDLkJPT0wpe30KKyAgICAgIH0KKyAgICB9OworCisgICAgc3RhdGljIGNsYXNzIEMgeworICAgICAgc3RhdGljIEJPT0w7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9wdXNoRG93bi9GaWVsZFR5cGVQYXJhbWV0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9wdXNoRG93bi9GaWVsZFR5cGVQYXJhbWV0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYWM0YjE0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3B1c2hEb3duL0ZpZWxkVHlwZVBhcmFtZXRlci5qYXZhCkBAIC0wLDAgKzEsNiBAQAorY2xhc3MgVGVzdCA8VD4geworICAgVCA8Y2FyZXQ+dDsKKyAgIFQgdHQ7Cit9CisKK2NsYXNzIEkgZXh0ZW5kcyBUZXN0PFN0cmluZz57fQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9wdXNoRG93bi9GaWVsZFR5cGVQYXJhbWV0ZXJfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9wdXNoRG93bi9GaWVsZFR5cGVQYXJhbWV0ZXJfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZjlhNTdhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3B1c2hEb3duL0ZpZWxkVHlwZVBhcmFtZXRlcl9hZnRlci5qYXZhCkBAIC0wLDAgKzEsNyBAQAorY2xhc3MgVGVzdCA8VD4geworICAgIFQgdHQ7Cit9CisKK2NsYXNzIEkgZXh0ZW5kcyBUZXN0PFN0cmluZz57CisgICAgU3RyaW5nIHQ7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3B1c2hEb3duL01ldGhvZEZyb21JbnRlcmZhY2VUb0Fic3RyYWN0Q2xhc3MuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9wdXNoRG93bi9NZXRob2RGcm9tSW50ZXJmYWNlVG9BYnN0cmFjdENsYXNzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDg2MDM4MwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9wdXNoRG93bi9NZXRob2RGcm9tSW50ZXJmYWNlVG9BYnN0cmFjdENsYXNzLmphdmEKQEAgLTAsMCArMSw3IEBACithYnN0cmFjdCBjbGFzcyBTdHJhaWdodExpbmUgaW1wbGVtZW50cyBJbmxpbmUgeworfQorCitpbnRlcmZhY2UgSW5saW5lIHsKKworICB2b2lkIGc8Y2FyZXQ+bygpOyAvLyBpbmxpbmUgdGhpcyBtZXRob2QKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcHVzaERvd24vTWV0aG9kRnJvbUludGVyZmFjZVRvQWJzdHJhY3RDbGFzc19hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3B1c2hEb3duL01ldGhvZEZyb21JbnRlcmZhY2VUb0Fic3RyYWN0Q2xhc3NfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kN2FhOThmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3B1c2hEb3duL01ldGhvZEZyb21JbnRlcmZhY2VUb0Fic3RyYWN0Q2xhc3NfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDcgQEAKK2Fic3RyYWN0IGNsYXNzIFN0cmFpZ2h0TGluZSBpbXBsZW1lbnRzIElubGluZSB7CisgICAgcHVibGljIGFic3RyYWN0IHZvaWQgZ28oKTsgLy8gaW5saW5lIHRoaXMgbWV0aG9kCit9CisKK2ludGVyZmFjZSBJbmxpbmUgeworCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3B1c2hEb3duL01ldGhvZFR5cGVQYXJhbWV0ZXJzTGlzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3B1c2hEb3duL01ldGhvZFR5cGVQYXJhbWV0ZXJzTGlzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRjZmE2NjgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcHVzaERvd24vTWV0aG9kVHlwZVBhcmFtZXRlcnNMaXN0LmphdmEKQEAgLTAsMCArMSw2IEBACitwdWJsaWMgY2xhc3MgVGVzdDxUPiB7CisgIDxTIGV4dGVuZHMgVD4gdm9pZCBmPGNhcmV0Pm9vKCl7fQorfQorCitjbGFzcyBCIGV4dGVuZHMgVGVzdDxUaHJvd2FibGU+eworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9wdXNoRG93bi9NZXRob2RUeXBlUGFyYW1ldGVyc0xpc3RfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9wdXNoRG93bi9NZXRob2RUeXBlUGFyYW1ldGVyc0xpc3RfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42OTk1ZmNhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3B1c2hEb3duL01ldGhvZFR5cGVQYXJhbWV0ZXJzTGlzdF9hZnRlci5qYXZhCkBAIC0wLDAgKzEsNiBAQAorcHVibGljIGNsYXNzIFRlc3Q8VD4geworfQorCitjbGFzcyBCIGV4dGVuZHMgVGVzdDxUaHJvd2FibGU+eworICAgIDxTIGV4dGVuZHMgVGhyb3dhYmxlPiB2b2lkIGZvbygpe30KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcHVzaERvd24vT3ZlcnJpZGluZ01ldGhvZFdpdGhTdWJzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3B1c2hEb3duL092ZXJyaWRpbmdNZXRob2RXaXRoU3Vic3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MjkyMTU1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3B1c2hEb3duL092ZXJyaWRpbmdNZXRob2RXaXRoU3Vic3QuamF2YQpAQCAtMCwwICsxLDEzIEBACithYnN0cmFjdCBjbGFzcyBCYXNlVGFzazxULCBTIGV4dGVuZHMgQmFzZVRhc2s8VCwgUz4+IHsKKyAgcHVibGljIGFic3RyYWN0IFMgbWFrZTxjYXJldD5UYXNrKGludCBkZXB0aCwgUGFyYWxsZWxTdHJlYW08VD4gY29sbCk7Cit9CisKKworY2xhc3MgRm9yRWFjaFRhc2s8VD4gZXh0ZW5kcyBCYXNlVGFzazxULCBGb3JFYWNoVGFzazxUPj4geworICBwdWJsaWMgRm9yRWFjaFRhc2s8VD4gbWFrZVRhc2soaW50IGRlcHRoLCBQYXJhbGxlbFN0cmVhbTxUPiBjb2xsKSB7CisgICAgcmV0dXJuIG5ldyBGb3JFYWNoVGFzazxUPigpOworICB9Cit9CisKK2NsYXNzIFBhcmFsbGVsU3RyZWFtPFQ+IHsKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9wdXNoRG93bi9PdmVycmlkaW5nTWV0aG9kV2l0aFN1YnN0X2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcHVzaERvd24vT3ZlcnJpZGluZ01ldGhvZFdpdGhTdWJzdF9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRhMzRmYmEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcHVzaERvd24vT3ZlcnJpZGluZ01ldGhvZFdpdGhTdWJzdF9hZnRlci5qYXZhCkBAIC0wLDAgKzEsMTIgQEAKK2Fic3RyYWN0IGNsYXNzIEJhc2VUYXNrPFQsIFMgZXh0ZW5kcyBCYXNlVGFzazxULCBTPj4geworfQorCisKK2NsYXNzIEZvckVhY2hUYXNrPFQ+IGV4dGVuZHMgQmFzZVRhc2s8VCwgRm9yRWFjaFRhc2s8VD4+IHsKKyAgcHVibGljIEZvckVhY2hUYXNrPFQ+IG1ha2VUYXNrKGludCBkZXB0aCwgUGFyYWxsZWxTdHJlYW08VD4gY29sbCkgeworICAgIHJldHVybiBuZXcgRm9yRWFjaFRhc2s8VD4oKTsKKyAgfQorfQorCitjbGFzcyBQYXJhbGxlbFN0cmVhbTxUPiB7Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcHVzaERvd24vUHJlc2VydmVUeXBlQXJncy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3B1c2hEb3duL1ByZXNlcnZlVHlwZUFyZ3MuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYmY0NjEwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3B1c2hEb3duL1ByZXNlcnZlVHlwZUFyZ3MuamF2YQpAQCAtMCwwICsxLDYgQEAKK2ltcG9ydCBqYXZhLnV0aWwuKjsKK2Fic3RyYWN0IGNsYXNzIFRlc3QgaW1wbGVtZW50cyBMaXN0PFN0cmluZz4geworfQorCithYnN0cmFjdCBjbGFzcyBCIGV4dGVuZHMgVGVzdCB7Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcHVzaERvd24vUHJlc2VydmVUeXBlQXJnc19hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3B1c2hEb3duL1ByZXNlcnZlVHlwZUFyZ3NfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZTI2ZGQzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3B1c2hEb3duL1ByZXNlcnZlVHlwZUFyZ3NfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDYgQEAKK2ltcG9ydCBqYXZhLnV0aWwuKjsKK2Fic3RyYWN0IGNsYXNzIFRlc3QgeworfQorCithYnN0cmFjdCBjbGFzcyBCIGV4dGVuZHMgVGVzdCBpbXBsZW1lbnRzIExpc3Q8U3RyaW5nPiB7Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcHVzaERvd24vU2FtZUNsYXNzSW50ZXJmYWNlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcHVzaERvd24vU2FtZUNsYXNzSW50ZXJmYWNlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWY1YTVjYQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9wdXNoRG93bi9TYW1lQ2xhc3NJbnRlcmZhY2UuamF2YQpAQCAtMCwwICsxLDMgQEAKK2ludGVyZmFjZSBJbnQge30KK3B1YmxpYyBjbGFzcyBUZXN0IGltcGxlbWVudHMgSW48Y2FyZXQ+dCB7fQorY2xhc3MgQiBleHRlbmRzIFRlc3QgaW1wbGVtZW50cyBJbnQge30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcHVzaERvd24vU2FtZUNsYXNzSW50ZXJmYWNlX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcHVzaERvd24vU2FtZUNsYXNzSW50ZXJmYWNlX2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjUzNzliNwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9wdXNoRG93bi9TYW1lQ2xhc3NJbnRlcmZhY2VfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDMgQEAKK2ludGVyZmFjZSBJbnQge30KK3B1YmxpYyBjbGFzcyBUZXN0IHt9CitjbGFzcyBCIGV4dGVuZHMgVGVzdCBpbXBsZW1lbnRzIEludCB7fQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9wdXNoRG93bi9TdWJzdFR5cGVBcmdzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcHVzaERvd24vU3Vic3RUeXBlQXJncy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRiOTBiYTYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcHVzaERvd24vU3Vic3RUeXBlQXJncy5qYXZhCkBAIC0wLDAgKzEsNiBAQAoraW1wb3J0IGphdmEudXRpbC4qOworYWJzdHJhY3QgY2xhc3MgVGVzdDxUPiBpbXBsZW1lbnRzIExpc3Q8VD4geworfQorCithYnN0cmFjdCBjbGFzcyBCIGV4dGVuZHMgVGVzdDxTdHJpbmc+IHsKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9wdXNoRG93bi9TdWJzdFR5cGVBcmdzX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcHVzaERvd24vU3Vic3RUeXBlQXJnc19hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJlZTc4YjkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcHVzaERvd24vU3Vic3RUeXBlQXJnc19hZnRlci5qYXZhCkBAIC0wLDAgKzEsNiBAQAoraW1wb3J0IGphdmEudXRpbC4qOworYWJzdHJhY3QgY2xhc3MgVGVzdDxUPiB7Cit9CisKK2Fic3RyYWN0IGNsYXNzIEIgZXh0ZW5kcyBUZXN0PFN0cmluZz4gaW1wbGVtZW50cyBMaXN0PFN0cmluZz4geworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3B1c2hEb3duL1N1cGVyT3ZlckhpZXJhcmNoeS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3B1c2hEb3duL1N1cGVyT3ZlckhpZXJhcmNoeS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk4MDcyNWMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcHVzaERvd24vU3VwZXJPdmVySGllcmFyY2h5LmphdmEKQEAgLTAsMCArMSwyNSBAQAorY2xhc3MgQSB7CisgIHZvaWQgaygpIHsKKyAgICBTeXN0ZW0ub3V0LnByaW50bG4oMjMpOworICB9Cit9CisKK2NsYXNzIEIgZXh0ZW5kcyBBIHsKKyAgdm9pZCBrKCkgeworICAgIFN5c3RlbS5vdXQucHJpbnRsbig0Mik7CisgIH0KKworICB2b2lkIDxjYXJldD5tKCkgeworICAgIG5ldyBDKCkgeworICAgICAgdm9pZCBmb28oKSB7CisgICAgICAgIHN1cGVyLmsoKTsKKyAgICAgIH0KKyAgICB9OworICB9Cit9CisKK3B1YmxpYyBjbGFzcyBDIGV4dGVuZHMgQiB7CisgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKKyAgICBuZXcgQygpLm0oKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9wdXNoRG93bi9TdXBlck92ZXJIaWVyYXJjaHlDb25mbGljdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3B1c2hEb3duL1N1cGVyT3ZlckhpZXJhcmNoeUNvbmZsaWN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODNlNGIwNAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9wdXNoRG93bi9TdXBlck92ZXJIaWVyYXJjaHlDb25mbGljdC5qYXZhCkBAIC0wLDAgKzEsMjEgQEAKK2NsYXNzIEEgeworICB2b2lkIGsoKSB7CisgICAgU3lzdGVtLm91dC5wcmludGxuKDIzKTsKKyAgfQorfQorCitjbGFzcyBCIGV4dGVuZHMgQSB7CisgIHZvaWQgaygpIHsKKyAgICBTeXN0ZW0ub3V0LnByaW50bG4oNDIpOworICB9CisKKyAgdm9pZCA8Y2FyZXQ+bSgpIHsKKyAgICBzdXBlci5rKCk7CisgIH0KK30KKworcHVibGljIGNsYXNzIEMgZXh0ZW5kcyBCIHsKKyAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgeworICAgIG5ldyBDKCkubSgpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3B1c2hEb3duL1N1cGVyT3ZlckhpZXJhcmNoeUNvbmZsaWN0X2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcHVzaERvd24vU3VwZXJPdmVySGllcmFyY2h5Q29uZmxpY3RfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNDA4OWVjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3B1c2hEb3duL1N1cGVyT3ZlckhpZXJhcmNoeUNvbmZsaWN0X2FmdGVyLmphdmEKQEAgLTAsMCArMSwyMiBAQAorY2xhc3MgQSB7CisgIHZvaWQgaygpIHsKKyAgICBTeXN0ZW0ub3V0LnByaW50bG4oMjMpOworICB9Cit9CisKK2NsYXNzIEIgZXh0ZW5kcyBBIHsKKyAgdm9pZCBrKCkgeworICAgIFN5c3RlbS5vdXQucHJpbnRsbig0Mik7CisgIH0KKworfQorCitwdWJsaWMgY2xhc3MgQyBleHRlbmRzIEIgeworICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CisgICAgbmV3IEMoKS5tKCk7CisgIH0KKworICAgIHZvaWQgbSgpIHsKKyAgICAgIHN1cGVyLmsoKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3B1c2hEb3duL1N1cGVyT3ZlckhpZXJhcmNoeV9hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3B1c2hEb3duL1N1cGVyT3ZlckhpZXJhcmNoeV9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY3MWM5NTgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcHVzaERvd24vU3VwZXJPdmVySGllcmFyY2h5X2FmdGVyLmphdmEKQEAgLTAsMCArMSwyNiBAQAorY2xhc3MgQSB7CisgIHZvaWQgaygpIHsKKyAgICBTeXN0ZW0ub3V0LnByaW50bG4oMjMpOworICB9Cit9CisKK2NsYXNzIEIgZXh0ZW5kcyBBIHsKKyAgdm9pZCBrKCkgeworICAgIFN5c3RlbS5vdXQucHJpbnRsbig0Mik7CisgIH0KKworfQorCitwdWJsaWMgY2xhc3MgQyBleHRlbmRzIEIgeworICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CisgICAgbmV3IEMoKS5tKCk7CisgIH0KKworICAgIHZvaWQgbSgpIHsKKyAgICAgIG5ldyBDKCkgeworICAgICAgICB2b2lkIGZvbygpIHsKKyAgICAgICAgICBzdXBlci5rKCk7CisgICAgICAgIH0KKyAgICAgIH07CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9wdXNoRG93bi9UaGlzUmVmSW5Bbm9ueW1vdXMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9wdXNoRG93bi9UaGlzUmVmSW5Bbm9ueW1vdXMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ODZlMTY5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3B1c2hEb3duL1RoaXNSZWZJbkFub255bW91cy5qYXZhCkBAIC0wLDAgKzEsMjAgQEAKK2NsYXNzIEEgeworICB2b2lkIDxjYXJldD5mb28oKSB7CisgICAgbmV3IFJ1bm5hYmxlKCkgeworICAgICAgcHVibGljIHZvaWQgcnVuKCkgeworICAgICAgICBBLnRoaXMudG9TdHJpbmcoKTsKKyAgICAgIH0KKyAgICB9CisgIH0KKworICB2b2lkIGxlYXZlSXQoKSB7CisgICAgbmV3IFJ1bm5hYmxlKCkgeworICAgICAgcHVibGljIHZvaWQgcnVuKCkgeworICAgICAgICBBLnRoaXMudG9TdHJpbmcoKTsKKyAgICAgIH0KKyAgICB9CisgIH0KK30KKworY2xhc3MgQiBleHRlbmRzIEEgeworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3B1c2hEb3duL1RoaXNSZWZJbkFub255bW91c19hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3B1c2hEb3duL1RoaXNSZWZJbkFub255bW91c19hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRlYzM2ZTAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcHVzaERvd24vVGhpc1JlZkluQW5vbnltb3VzX2FmdGVyLmphdmEKQEAgLTAsMCArMSwyMCBAQAorY2xhc3MgQSB7CisKKyAgICB2b2lkIGxlYXZlSXQoKSB7CisgICAgbmV3IFJ1bm5hYmxlKCkgeworICAgICAgcHVibGljIHZvaWQgcnVuKCkgeworICAgICAgICBBLnRoaXMudG9TdHJpbmcoKTsKKyAgICAgIH0KKyAgICB9CisgIH0KK30KKworY2xhc3MgQiBleHRlbmRzIEEgeworICAgIHZvaWQgZm9vKCkgeworICAgICAgbmV3IFJ1bm5hYmxlKCkgeworICAgICAgICBwdWJsaWMgdm9pZCBydW4oKSB7CisgICAgICAgICAgQi50aGlzLnRvU3RyaW5nKCk7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcHVzaERvd24vVHlwZVBhcmFtZXRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3B1c2hEb3duL1R5cGVQYXJhbWV0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NzkzZTJlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3B1c2hEb3duL1R5cGVQYXJhbWV0ZXIuamF2YQpAQCAtMCwwICsxLDcgQEAKK2NsYXNzIFRlc3QgPFQ+IHsKKyAgIHZvaWQgPGNhcmV0PmZvbyhUIHQpIHsKKworICAgfQorfQorCitjbGFzcyBJIGV4dGVuZHMgVGVzdDxTdHJpbmc+e30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcHVzaERvd24vVHlwZVBhcmFtZXRlckVyYXN1cmUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9wdXNoRG93bi9UeXBlUGFyYW1ldGVyRXJhc3VyZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMyN2RiOTgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcHVzaERvd24vVHlwZVBhcmFtZXRlckVyYXN1cmUuamF2YQpAQCAtMCwwICsxLDUgQEAKK3B1YmxpYyBjbGFzcyBQYXJlbnQ8VD4geworICB2b2lkIDxjYXJldD5mb28oVCB0KXt9Cit9CisKK2NsYXNzIENoaWxkIGV4dGVuZHMgUGFyZW50IHt9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3B1c2hEb3duL1R5cGVQYXJhbWV0ZXJFcmFzdXJlX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcHVzaERvd24vVHlwZVBhcmFtZXRlckVyYXN1cmVfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YTAwZWFmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3B1c2hEb3duL1R5cGVQYXJhbWV0ZXJFcmFzdXJlX2FmdGVyLmphdmEKQEAgLTAsMCArMSw2IEBACitwdWJsaWMgY2xhc3MgUGFyZW50PFQ+IHsKK30KKworY2xhc3MgQ2hpbGQgZXh0ZW5kcyBQYXJlbnQgeworICAgIHZvaWQgZm9vKE9iamVjdCB0KXt9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3B1c2hEb3duL1R5cGVQYXJhbWV0ZXJfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9wdXNoRG93bi9UeXBlUGFyYW1ldGVyX2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWViNWNkNgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9wdXNoRG93bi9UeXBlUGFyYW1ldGVyX2FmdGVyLmphdmEKQEAgLTAsMCArMSw4IEBACitjbGFzcyBUZXN0IDxUPiB7Cit9CisKK2NsYXNzIEkgZXh0ZW5kcyBUZXN0PFN0cmluZz57CisgICAgdm9pZCBmb28oU3RyaW5nIHQpIHsKKyAKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3B1c2hEb3duL2Zyb21JbnRlcmZhY2UvYWZ0ZXIvYS9JLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcHVzaERvd24vZnJvbUludGVyZmFjZS9hZnRlci9hL0kuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYmU0YTQ4ZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9wdXNoRG93bi9mcm9tSW50ZXJmYWNlL2FmdGVyL2EvSS5qYXZhCkBAIC0wLDAgKzEsMyBAQAorcGFja2FnZSBhOworcHVibGljIGludGVyZmFjZSBJIHsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcHVzaERvd24vZnJvbUludGVyZmFjZS9hZnRlci9hL0kxLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcHVzaERvd24vZnJvbUludGVyZmFjZS9hZnRlci9hL0kxLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTQxZWYxOAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9wdXNoRG93bi9mcm9tSW50ZXJmYWNlL2FmdGVyL2EvSTEuamF2YQpAQCAtMCwwICsxLDQgQEAKK3BhY2thZ2UgYTsKK3B1YmxpYyBpbnRlcmZhY2UgSTEgZXh0ZW5kcyBJIHsKKyAgICB2b2lkIGZvbygpOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9wdXNoRG93bi9mcm9tSW50ZXJmYWNlL2FmdGVyL2IvQi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3B1c2hEb3duL2Zyb21JbnRlcmZhY2UvYWZ0ZXIvYi9CLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDFhMzVkNQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9wdXNoRG93bi9mcm9tSW50ZXJmYWNlL2FmdGVyL2IvQi5qYXZhCkBAIC0wLDAgKzEsNyBAQAorcGFja2FnZSBiOworaW1wb3J0IGEuKjsKK2NsYXNzIEIgeworICB2b2lkIGYoSTEgaTEpIHsKKyAgICBpMS5mb28oKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9wdXNoRG93bi9mcm9tSW50ZXJmYWNlL2JlZm9yZS9hL0kuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9wdXNoRG93bi9mcm9tSW50ZXJmYWNlL2JlZm9yZS9hL0kuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZWY5ODNlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3B1c2hEb3duL2Zyb21JbnRlcmZhY2UvYmVmb3JlL2EvSS5qYXZhCkBAIC0wLDAgKzEsNCBAQAorcGFja2FnZSBhOworcHVibGljIGludGVyZmFjZSBJIHsKKyAgdm9pZCBmb28oKTsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcHVzaERvd24vZnJvbUludGVyZmFjZS9iZWZvcmUvYS9JMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3B1c2hEb3duL2Zyb21JbnRlcmZhY2UvYmVmb3JlL2EvSTEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44N2M3MGU2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3B1c2hEb3duL2Zyb21JbnRlcmZhY2UvYmVmb3JlL2EvSTEuamF2YQpAQCAtMCwwICsxLDIgQEAKK3BhY2thZ2UgYTsKK3B1YmxpYyBpbnRlcmZhY2UgSTEgZXh0ZW5kcyBJIHt9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3B1c2hEb3duL2Zyb21JbnRlcmZhY2UvYmVmb3JlL2IvQi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3B1c2hEb3duL2Zyb21JbnRlcmZhY2UvYmVmb3JlL2IvQi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQxYTM1ZDUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcHVzaERvd24vZnJvbUludGVyZmFjZS9iZWZvcmUvYi9CLmphdmEKQEAgLTAsMCArMSw3IEBACitwYWNrYWdlIGI7CitpbXBvcnQgYS4qOworY2xhc3MgQiB7CisgIHZvaWQgZihJMSBpMSkgeworICAgIGkxLmZvbygpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3B1c2hEb3duL3JldXNlT3ZlcnJpZGVNZXRob2QvYWZ0ZXIvYS9BLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcHVzaERvd24vcmV1c2VPdmVycmlkZU1ldGhvZC9hZnRlci9hL0EuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMThhN2NkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3B1c2hEb3duL3JldXNlT3ZlcnJpZGVNZXRob2QvYWZ0ZXIvYS9BLmphdmEKQEAgLTAsMCArMSw0IEBACitwYWNrYWdlIGE7CitwdWJsaWMgY2xhc3MgQSB7CisgICAgcHJvdGVjdGVkIHZvaWQgYmFyKCl7fQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9wdXNoRG93bi9yZXVzZU92ZXJyaWRlTWV0aG9kL2FmdGVyL2IvQi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3B1c2hEb3duL3JldXNlT3ZlcnJpZGVNZXRob2QvYWZ0ZXIvYi9CLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDkxMmY4NgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9wdXNoRG93bi9yZXVzZU92ZXJyaWRlTWV0aG9kL2FmdGVyL2IvQi5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKK3BhY2thZ2UgYjsKK2ltcG9ydCBhLkE7CisKK3B1YmxpYyBjbGFzcyBCIGV4dGVuZHMgQSB7CisgIHByb3RlY3RlZCB2b2lkIGJhcigpe30KKworICAgIHB1YmxpYyB2b2lkIGZvbygpeworICAgICAgYmFyKCk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9wdXNoRG93bi9yZXVzZU92ZXJyaWRlTWV0aG9kL2JlZm9yZS9hL0EuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9wdXNoRG93bi9yZXVzZU92ZXJyaWRlTWV0aG9kL2JlZm9yZS9hL0EuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYTQxMDIzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3B1c2hEb3duL3JldXNlT3ZlcnJpZGVNZXRob2QvYmVmb3JlL2EvQS5qYXZhCkBAIC0wLDAgKzEsNyBAQAorcGFja2FnZSBhOworcHVibGljIGNsYXNzIEEgeworICBwdWJsaWMgdm9pZCBmb28oKXsKKyAgICBiYXIoKTsKKyAgfQorICBwcm90ZWN0ZWQgdm9pZCBiYXIoKXt9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3B1c2hEb3duL3JldXNlT3ZlcnJpZGVNZXRob2QvYmVmb3JlL2IvQi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3B1c2hEb3duL3JldXNlT3ZlcnJpZGVNZXRob2QvYmVmb3JlL2IvQi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE1NjQ4NjUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcHVzaERvd24vcmV1c2VPdmVycmlkZU1ldGhvZC9iZWZvcmUvYi9CLmphdmEKQEAgLTAsMCArMSw2IEBACitwYWNrYWdlIGI7CitpbXBvcnQgYS5BOworCitwdWJsaWMgY2xhc3MgQiBleHRlbmRzIEEgeworICBwcm90ZWN0ZWQgdm9pZCBiYXIoKXt9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3B1c2hEb3duL3N0YXRpY0ltcG9ydE9mUHVzaGVkTWV0aG9kL2FmdGVyL2EvQS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3B1c2hEb3duL3N0YXRpY0ltcG9ydE9mUHVzaGVkTWV0aG9kL2FmdGVyL2EvQS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdlODQzMTEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcHVzaERvd24vc3RhdGljSW1wb3J0T2ZQdXNoZWRNZXRob2QvYWZ0ZXIvYS9BLmphdmEKQEAgLTAsMCArMSwzIEBACitwYWNrYWdlIGE7CitwdWJsaWMgY2xhc3MgQSB7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3B1c2hEb3duL3N0YXRpY0ltcG9ydE9mUHVzaGVkTWV0aG9kL2FmdGVyL2IvQi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3B1c2hEb3duL3N0YXRpY0ltcG9ydE9mUHVzaGVkTWV0aG9kL2FmdGVyL2IvQi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRmMjQ2ZDYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcHVzaERvd24vc3RhdGljSW1wb3J0T2ZQdXNoZWRNZXRob2QvYWZ0ZXIvYi9CLmphdmEKQEAgLTAsMCArMSw3IEBACitwYWNrYWdlIGI7CitpbXBvcnQgYS4qOworCitwdWJsaWMgY2xhc3MgQiBleHRlbmRzIEEgeworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBmb28oKXsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3B1c2hEb3duL3N0YXRpY0ltcG9ydE9mUHVzaGVkTWV0aG9kL2FmdGVyL3UvVS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3B1c2hEb3duL3N0YXRpY0ltcG9ydE9mUHVzaGVkTWV0aG9kL2FmdGVyL3UvVS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgzMDI0NTMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcHVzaERvd24vc3RhdGljSW1wb3J0T2ZQdXNoZWRNZXRob2QvYWZ0ZXIvdS9VLmphdmEKQEAgLTAsMCArMSw3IEBACitwYWNrYWdlIHU7CitpbXBvcnQgc3RhdGljIGIuQi5mb287CitwdWJsaWMgY2xhc3MgVSB7CisgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKKyAgICBmb28oKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9wdXNoRG93bi9zdGF0aWNJbXBvcnRPZlB1c2hlZE1ldGhvZC9iZWZvcmUvYS9BLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcHVzaERvd24vc3RhdGljSW1wb3J0T2ZQdXNoZWRNZXRob2QvYmVmb3JlL2EvQS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ4MDEzMDAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcHVzaERvd24vc3RhdGljSW1wb3J0T2ZQdXNoZWRNZXRob2QvYmVmb3JlL2EvQS5qYXZhCkBAIC0wLDAgKzEsNSBAQAorcGFja2FnZSBhOworcHVibGljIGNsYXNzIEEgeworICBwdWJsaWMgc3RhdGljIHZvaWQgZm9vKCl7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcHVzaERvd24vc3RhdGljSW1wb3J0T2ZQdXNoZWRNZXRob2QvYmVmb3JlL2IvQi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3B1c2hEb3duL3N0YXRpY0ltcG9ydE9mUHVzaGVkTWV0aG9kL2JlZm9yZS9iL0IuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYjVkYWM2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3B1c2hEb3duL3N0YXRpY0ltcG9ydE9mUHVzaGVkTWV0aG9kL2JlZm9yZS9iL0IuamF2YQpAQCAtMCwwICsxLDQgQEAKK3BhY2thZ2UgYjsKK2ltcG9ydCBhLio7CisKK3B1YmxpYyBjbGFzcyBCIGV4dGVuZHMgQSB7fQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9wdXNoRG93bi9zdGF0aWNJbXBvcnRPZlB1c2hlZE1ldGhvZC9iZWZvcmUvdS9VLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcHVzaERvd24vc3RhdGljSW1wb3J0T2ZQdXNoZWRNZXRob2QvYmVmb3JlL3UvVS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNlNGEwMzQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcHVzaERvd24vc3RhdGljSW1wb3J0T2ZQdXNoZWRNZXRob2QvYmVmb3JlL3UvVS5qYXZhCkBAIC0wLDAgKzEsNyBAQAorcGFja2FnZSB1OworaW1wb3J0IHN0YXRpYyBhLkEuZm9vOworcHVibGljIGNsYXNzIFUgeworICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CisgICAgZm9vKCk7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcHVzaERvd24vc3RhdGljSW1wb3J0c0luc2lkZVB1c2hlZE1ldGhvZC9hZnRlci9hL0EuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9wdXNoRG93bi9zdGF0aWNJbXBvcnRzSW5zaWRlUHVzaGVkTWV0aG9kL2FmdGVyL2EvQS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmViNWFlOWYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcHVzaERvd24vc3RhdGljSW1wb3J0c0luc2lkZVB1c2hlZE1ldGhvZC9hZnRlci9hL0EuamF2YQpAQCAtMCwwICsxLDQgQEAKK3BhY2thZ2UgYTsKK2ltcG9ydCBzdGF0aWMgdS5VLkM7CitwdWJsaWMgY2xhc3MgQSB7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3B1c2hEb3duL3N0YXRpY0ltcG9ydHNJbnNpZGVQdXNoZWRNZXRob2QvYWZ0ZXIvYi9CLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcHVzaERvd24vc3RhdGljSW1wb3J0c0luc2lkZVB1c2hlZE1ldGhvZC9hZnRlci9iL0IuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMTUyZDIxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3B1c2hEb3duL3N0YXRpY0ltcG9ydHNJbnNpZGVQdXNoZWRNZXRob2QvYWZ0ZXIvYi9CLmphdmEKQEAgLTAsMCArMSwxMCBAQAorcGFja2FnZSBiOworaW1wb3J0IGEuKjsKKworaW1wb3J0IHN0YXRpYyB1LlUuQzsKKworcHVibGljIGNsYXNzIEIgZXh0ZW5kcyBBIHsKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgZm9vKCl7CisgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oQyk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9wdXNoRG93bi9zdGF0aWNJbXBvcnRzSW5zaWRlUHVzaGVkTWV0aG9kL2FmdGVyL3UvVS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3B1c2hEb3duL3N0YXRpY0ltcG9ydHNJbnNpZGVQdXNoZWRNZXRob2QvYWZ0ZXIvdS9VLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjAzZWQxNAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9wdXNoRG93bi9zdGF0aWNJbXBvcnRzSW5zaWRlUHVzaGVkTWV0aG9kL2FmdGVyL3UvVS5qYXZhCkBAIC0wLDAgKzEsNCBAQAorcGFja2FnZSB1OworcHVibGljIGNsYXNzIFUgeworICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBDID0gIkNPTlNUQU5UIjsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcHVzaERvd24vc3RhdGljSW1wb3J0c0luc2lkZVB1c2hlZE1ldGhvZC9iZWZvcmUvYS9BLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcHVzaERvd24vc3RhdGljSW1wb3J0c0luc2lkZVB1c2hlZE1ldGhvZC9iZWZvcmUvYS9BLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTA1YzE1MAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9wdXNoRG93bi9zdGF0aWNJbXBvcnRzSW5zaWRlUHVzaGVkTWV0aG9kL2JlZm9yZS9hL0EuamF2YQpAQCAtMCwwICsxLDcgQEAKK3BhY2thZ2UgYTsKK2ltcG9ydCBzdGF0aWMgdS5VLkM7CitwdWJsaWMgY2xhc3MgQSB7CisgIHB1YmxpYyBzdGF0aWMgdm9pZCBmb28oKXsKKyAgICBTeXN0ZW0ub3V0LnByaW50bG4oQyk7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcHVzaERvd24vc3RhdGljSW1wb3J0c0luc2lkZVB1c2hlZE1ldGhvZC9iZWZvcmUvYi9CLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcHVzaERvd24vc3RhdGljSW1wb3J0c0luc2lkZVB1c2hlZE1ldGhvZC9iZWZvcmUvYi9CLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2I1ZGFjNgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9wdXNoRG93bi9zdGF0aWNJbXBvcnRzSW5zaWRlUHVzaGVkTWV0aG9kL2JlZm9yZS9iL0IuamF2YQpAQCAtMCwwICsxLDQgQEAKK3BhY2thZ2UgYjsKK2ltcG9ydCBhLio7CisKK3B1YmxpYyBjbGFzcyBCIGV4dGVuZHMgQSB7fQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9wdXNoRG93bi9zdGF0aWNJbXBvcnRzSW5zaWRlUHVzaGVkTWV0aG9kL2JlZm9yZS91L1UuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9wdXNoRG93bi9zdGF0aWNJbXBvcnRzSW5zaWRlUHVzaGVkTWV0aG9kL2JlZm9yZS91L1UuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MDNlZDE0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3B1c2hEb3duL3N0YXRpY0ltcG9ydHNJbnNpZGVQdXNoZWRNZXRob2QvYmVmb3JlL3UvVS5qYXZhCkBAIC0wLDAgKzEsNCBAQAorcGFja2FnZSB1OworcHVibGljIGNsYXNzIFUgeworICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBDID0gIkNPTlNUQU5UIjsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcHVzaERvd24vdXNhZ2VzSW5YbWwvYmVmb3JlL2EvQS5mb3JtIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3B1c2hEb3duL3VzYWdlc0luWG1sL2JlZm9yZS9hL0EuZm9ybQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNDlmMGZlNwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9wdXNoRG93bi91c2FnZXNJblhtbC9iZWZvcmUvYS9BLmZvcm0KQEAgLTAsMCArMSwzMSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxmb3JtIHhtbG5zPSJodHRwOi8vd3d3LmludGVsbGlqLmNvbS91aWRlc2lnbmVyL2Zvcm0vIiB2ZXJzaW9uPSIxIiBiaW5kLXRvLWNsYXNzPSJhLkEiPgorICA8Z3JpZCBpZD0iMjdkYzYiIGxheW91dC1tYW5hZ2VyPSJHcmlkTGF5b3V0TWFuYWdlciIgcm93LWNvdW50PSIyIiBjb2x1bW4tY291bnQ9IjIiIHNhbWUtc2l6ZS1ob3Jpem9udGFsbHk9ImZhbHNlIiBzYW1lLXNpemUtdmVydGljYWxseT0iZmFsc2UiIGhnYXA9Ii0xIiB2Z2FwPSItMSI+CisgICAgPG1hcmdpbiB0b3A9IjAiIGxlZnQ9IjAiIGJvdHRvbT0iMCIgcmlnaHQ9IjAiLz4KKyAgICA8Y29uc3RyYWludHM+CisgICAgICA8eHkgeD0iMjAiIHk9IjIwIiB3aWR0aD0iNTAwIiBoZWlnaHQ9IjQwMCIvPgorICAgIDwvY29uc3RyYWludHM+CisgICAgPHByb3BlcnRpZXMvPgorICAgIDxib3JkZXIgdHlwZT0ibm9uZSIvPgorICAgIDxjaGlsZHJlbj4KKyAgICAgIDxjb21wb25lbnQgaWQ9IjNlYzJmIiBjbGFzcz0iamF2YXguc3dpbmcuSlRleHRGaWVsZCIgYmluZGluZz0idGV4dEZpZWxkMSIgZGVmYXVsdC1iaW5kaW5nPSJ0cnVlIj4KKyAgICAgICAgPGNvbnN0cmFpbnRzPgorICAgICAgICAgIDxncmlkIHJvdz0iMCIgY29sdW1uPSIwIiByb3ctc3Bhbj0iMSIgY29sLXNwYW49IjEiIHZzaXplLXBvbGljeT0iMCIgaHNpemUtcG9saWN5PSI2IiBhbmNob3I9IjgiIGZpbGw9IjEiIGluZGVudD0iMCIgdXNlLXBhcmVudC1sYXlvdXQ9ImZhbHNlIj4KKyAgICAgICAgICAgIDxwcmVmZXJyZWQtc2l6ZSB3aWR0aD0iMTUwIiBoZWlnaHQ9Ii0xIi8+CisgICAgICAgICAgPC9ncmlkPgorICAgICAgICA8L2NvbnN0cmFpbnRzPgorICAgICAgICA8cHJvcGVydGllcy8+CisgICAgICA8L2NvbXBvbmVudD4KKyAgICAgIDxoc3BhY2VyIGlkPSIzOGExNiI+CisgICAgICAgIDxjb25zdHJhaW50cz4KKyAgICAgICAgICA8Z3JpZCByb3c9IjAiIGNvbHVtbj0iMSIgcm93LXNwYW49IjEiIGNvbC1zcGFuPSIxIiB2c2l6ZS1wb2xpY3k9IjEiIGhzaXplLXBvbGljeT0iNiIgYW5jaG9yPSIwIiBmaWxsPSIxIiBpbmRlbnQ9IjAiIHVzZS1wYXJlbnQtbGF5b3V0PSJmYWxzZSIvPgorICAgICAgICA8L2NvbnN0cmFpbnRzPgorICAgICAgPC9oc3BhY2VyPgorICAgICAgPHZzcGFjZXIgaWQ9ImU5Y2UzIj4KKyAgICAgICAgPGNvbnN0cmFpbnRzPgorICAgICAgICAgIDxncmlkIHJvdz0iMSIgY29sdW1uPSIwIiByb3ctc3Bhbj0iMSIgY29sLXNwYW49IjEiIHZzaXplLXBvbGljeT0iNiIgaHNpemUtcG9saWN5PSIxIiBhbmNob3I9IjAiIGZpbGw9IjIiIGluZGVudD0iMCIgdXNlLXBhcmVudC1sYXlvdXQ9ImZhbHNlIi8+CisgICAgICAgIDwvY29uc3RyYWludHM+CisgICAgICA8L3ZzcGFjZXI+CisgICAgPC9jaGlsZHJlbj4KKyAgPC9ncmlkPgorPC9mb3JtPgpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3B1c2hEb3duL3VzYWdlc0luWG1sL2JlZm9yZS9hL0EuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9wdXNoRG93bi91c2FnZXNJblhtbC9iZWZvcmUvYS9BLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzc2MjEyNwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9wdXNoRG93bi91c2FnZXNJblhtbC9iZWZvcmUvYS9BLmphdmEKQEAgLTAsMCArMSw0IEBACitwYWNrYWdlIGE7CitwdWJsaWMgY2xhc3MgQSB7CisgIHByaXZhdGUgSlRleHRGaWVsZCB0ZXh0RmllbGQxOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9wdXNoRG93bi91c2FnZXNJblhtbC9iZWZvcmUvYi9CLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcHVzaERvd24vdXNhZ2VzSW5YbWwvYmVmb3JlL2IvQi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM5OTgzNWEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcHVzaERvd24vdXNhZ2VzSW5YbWwvYmVmb3JlL2IvQi5qYXZhCkBAIC0wLDAgKzEsNCBAQAorcGFja2FnZSBiOworCitpbXBvcnQgYS4qOworY2xhc3MgQiBleHRlbmRzIEEge30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVtb3ZlbWlkZGxlbWFuL2ludGVyZmFjZS9hZnRlci9BLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVtb3ZlbWlkZGxlbWFuL2ludGVyZmFjZS9hZnRlci9BLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzRlZDhkMAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW1vdmVtaWRkbGVtYW4vaW50ZXJmYWNlL2FmdGVyL0EuamF2YQpAQCAtMCwwICsxLDMgQEAKK2NsYXNzIEEgeworICB2b2lkIGZvbygpe30KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVtb3ZlbWlkZGxlbWFuL2ludGVyZmFjZS9hZnRlci9ELmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVtb3ZlbWlkZGxlbWFuL2ludGVyZmFjZS9hZnRlci9ELmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTdlYmQ5YgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW1vdmVtaWRkbGVtYW4vaW50ZXJmYWNlL2FmdGVyL0QuamF2YQpAQCAtMCwwICsxLDUgQEAKK2NsYXNzIEQgeworICAgdm9pZCBiYXIoSSBpKSB7CisgICAgIGkuZm9vKCk7CisgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbW92ZW1pZGRsZW1hbi9pbnRlcmZhY2UvYWZ0ZXIvSS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbW92ZW1pZGRsZW1hbi9pbnRlcmZhY2UvYWZ0ZXIvSS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU4ZDNmZTUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVtb3ZlbWlkZGxlbWFuL2ludGVyZmFjZS9hZnRlci9JLmphdmEKQEAgLTAsMCArMSwzIEBACitpbnRlcmZhY2UgSSB7CisgIHZvaWQgZm9vKCk7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbW92ZW1pZGRsZW1hbi9pbnRlcmZhY2UvYWZ0ZXIvVGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbW92ZW1pZGRsZW1hbi9pbnRlcmZhY2UvYWZ0ZXIvVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdkMDQwNDMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVtb3ZlbWlkZGxlbWFuL2ludGVyZmFjZS9hZnRlci9UZXN0LmphdmEKQEAgLTAsMCArMSw2IEBACitjbGFzcyBUZXN0IGltcGxlbWVudHMgSSB7CisgIEEgbXlGaWVsZDsKKyAgdm9pZCBmb28oKSB7CisgICAgbXlGaWVsZC5mb28oKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW1vdmVtaWRkbGVtYW4vaW50ZXJmYWNlL2JlZm9yZS9BLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVtb3ZlbWlkZGxlbWFuL2ludGVyZmFjZS9iZWZvcmUvQS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM0ZWQ4ZDAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVtb3ZlbWlkZGxlbWFuL2ludGVyZmFjZS9iZWZvcmUvQS5qYXZhCkBAIC0wLDAgKzEsMyBAQAorY2xhc3MgQSB7CisgIHZvaWQgZm9vKCl7fQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW1vdmVtaWRkbGVtYW4vaW50ZXJmYWNlL2JlZm9yZS9ELmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVtb3ZlbWlkZGxlbWFuL2ludGVyZmFjZS9iZWZvcmUvRC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE3ZWJkOWIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVtb3ZlbWlkZGxlbWFuL2ludGVyZmFjZS9iZWZvcmUvRC5qYXZhCkBAIC0wLDAgKzEsNSBAQAorY2xhc3MgRCB7CisgICB2b2lkIGJhcihJIGkpIHsKKyAgICAgaS5mb28oKTsKKyAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVtb3ZlbWlkZGxlbWFuL2ludGVyZmFjZS9iZWZvcmUvSS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbW92ZW1pZGRsZW1hbi9pbnRlcmZhY2UvYmVmb3JlL0kuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lOGQzZmU1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbW92ZW1pZGRsZW1hbi9pbnRlcmZhY2UvYmVmb3JlL0kuamF2YQpAQCAtMCwwICsxLDMgQEAKK2ludGVyZmFjZSBJIHsKKyAgdm9pZCBmb28oKTsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVtb3ZlbWlkZGxlbWFuL2ludGVyZmFjZS9iZWZvcmUvVGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbW92ZW1pZGRsZW1hbi9pbnRlcmZhY2UvYmVmb3JlL1Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZDA0MDQzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbW92ZW1pZGRsZW1hbi9pbnRlcmZhY2UvYmVmb3JlL1Rlc3QuamF2YQpAQCAtMCwwICsxLDYgQEAKK2NsYXNzIFRlc3QgaW1wbGVtZW50cyBJIHsKKyAgQSBteUZpZWxkOworICB2b2lkIGZvbygpIHsKKyAgICBteUZpZWxkLmZvbygpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbW92ZW1pZGRsZW1hbi9pbnRlcmZhY2VEZWxlZ2F0aW9uL2FmdGVyL0EuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW1vdmVtaWRkbGVtYW4vaW50ZXJmYWNlRGVsZWdhdGlvbi9hZnRlci9BLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTRiYWFkOQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW1vdmVtaWRkbGVtYW4vaW50ZXJmYWNlRGVsZWdhdGlvbi9hZnRlci9BLmphdmEKQEAgLTAsMCArMSwzIEBACitpbnRlcmZhY2UgQSB7CisgIHZvaWQgZm9vKCk7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbW92ZW1pZGRsZW1hbi9pbnRlcmZhY2VEZWxlZ2F0aW9uL2FmdGVyL0kuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW1vdmVtaWRkbGVtYW4vaW50ZXJmYWNlRGVsZWdhdGlvbi9hZnRlci9JLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzc2Y2VhMgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW1vdmVtaWRkbGVtYW4vaW50ZXJmYWNlRGVsZWdhdGlvbi9hZnRlci9JLmphdmEKQEAgLTAsMCArMSw0IEBACitpbnRlcmZhY2UgSSB7CisgIEEgZ2V0TXlGaWVsZCgpOworICB2b2lkIGZvbygpOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW1vdmVtaWRkbGVtYW4vaW50ZXJmYWNlRGVsZWdhdGlvbi9hZnRlci9UZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVtb3ZlbWlkZGxlbWFuL2ludGVyZmFjZURlbGVnYXRpb24vYWZ0ZXIvVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJiOWE0MDYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVtb3ZlbWlkZGxlbWFuL2ludGVyZmFjZURlbGVnYXRpb24vYWZ0ZXIvVGVzdC5qYXZhCkBAIC0wLDAgKzEsMTQgQEAKK2NsYXNzIFRlc3QgaW1wbGVtZW50cyBJIHsKKyAgQSBteUZpZWxkOworICBBIGdldE15RmllbGQoKXsKKyAgICByZXR1cm4gbXlGaWVsZDsKKyAgfQorCisgIHZvaWQgZm9vKCkgeworICAgIG15RmllbGQuZm9vKCk7CisgIH0KKworICB2b2lkIGJhcihJIGkpIHsKKyAgICBpLmZvbygpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbW92ZW1pZGRsZW1hbi9pbnRlcmZhY2VEZWxlZ2F0aW9uL2JlZm9yZS9BLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVtb3ZlbWlkZGxlbWFuL2ludGVyZmFjZURlbGVnYXRpb24vYmVmb3JlL0EuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNGJhYWQ5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbW92ZW1pZGRsZW1hbi9pbnRlcmZhY2VEZWxlZ2F0aW9uL2JlZm9yZS9BLmphdmEKQEAgLTAsMCArMSwzIEBACitpbnRlcmZhY2UgQSB7CisgIHZvaWQgZm9vKCk7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbW92ZW1pZGRsZW1hbi9pbnRlcmZhY2VEZWxlZ2F0aW9uL2JlZm9yZS9JLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVtb3ZlbWlkZGxlbWFuL2ludGVyZmFjZURlbGVnYXRpb24vYmVmb3JlL0kuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NzZjZWEyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbW92ZW1pZGRsZW1hbi9pbnRlcmZhY2VEZWxlZ2F0aW9uL2JlZm9yZS9JLmphdmEKQEAgLTAsMCArMSw0IEBACitpbnRlcmZhY2UgSSB7CisgIEEgZ2V0TXlGaWVsZCgpOworICB2b2lkIGZvbygpOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW1vdmVtaWRkbGVtYW4vaW50ZXJmYWNlRGVsZWdhdGlvbi9iZWZvcmUvVGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbW92ZW1pZGRsZW1hbi9pbnRlcmZhY2VEZWxlZ2F0aW9uL2JlZm9yZS9UZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmI5YTQwNgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW1vdmVtaWRkbGVtYW4vaW50ZXJmYWNlRGVsZWdhdGlvbi9iZWZvcmUvVGVzdC5qYXZhCkBAIC0wLDAgKzEsMTQgQEAKK2NsYXNzIFRlc3QgaW1wbGVtZW50cyBJIHsKKyAgQSBteUZpZWxkOworICBBIGdldE15RmllbGQoKXsKKyAgICByZXR1cm4gbXlGaWVsZDsKKyAgfQorCisgIHZvaWQgZm9vKCkgeworICAgIG15RmllbGQuZm9vKCk7CisgIH0KKworICB2b2lkIGJhcihJIGkpIHsKKyAgICBpLmZvbygpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbW92ZW1pZGRsZW1hbi9ub0dldHRlci9hZnRlci9UZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVtb3ZlbWlkZGxlbWFuL25vR2V0dGVyL2FmdGVyL1Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMmE3ZTI4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbW92ZW1pZGRsZW1hbi9ub0dldHRlci9hZnRlci9UZXN0LmphdmEKQEAgLTAsMCArMSwxMiBAQAorY2xhc3MgVGVzdCB7CisgIEEgbXlGaWVsZDsKKworICAgIHZvaWQgYmFyKCl7CisgICAgICAgIG15RmllbGQuZm9vKCk7CisgIH0KKworfQorCitjbGFzcyBBIHsKKyAgdm9pZCBmb28oKXt9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbW92ZW1pZGRsZW1hbi9ub0dldHRlci9iZWZvcmUvVGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbW92ZW1pZGRsZW1hbi9ub0dldHRlci9iZWZvcmUvVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEwNGE3MDEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVtb3ZlbWlkZGxlbWFuL25vR2V0dGVyL2JlZm9yZS9UZXN0LmphdmEKQEAgLTAsMCArMSwxNSBAQAorY2xhc3MgVGVzdCB7CisgIEEgbXlGaWVsZDsKKyAgdm9pZCBmb28oKXsKKyAgICBteUZpZWxkLmZvbygpOworICB9CisKKyAgdm9pZCBiYXIoKXsKKyAgICBmb28oKTsKKyAgfQorCit9CisKK2NsYXNzIEEgeworICB2b2lkIGZvbygpe30KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVtb3ZlbWlkZGxlbWFuL3ByZXNlbnRHZXR0ZXIvYWZ0ZXIvQS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbW92ZW1pZGRsZW1hbi9wcmVzZW50R2V0dGVyL2FmdGVyL0EuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNGVkOGQwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbW92ZW1pZGRsZW1hbi9wcmVzZW50R2V0dGVyL2FmdGVyL0EuamF2YQpAQCAtMCwwICsxLDMgQEAKK2NsYXNzIEEgeworICB2b2lkIGZvbygpe30KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVtb3ZlbWlkZGxlbWFuL3ByZXNlbnRHZXR0ZXIvYWZ0ZXIvSS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbW92ZW1pZGRsZW1hbi9wcmVzZW50R2V0dGVyL2FmdGVyL0kuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NzZjZWEyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbW92ZW1pZGRsZW1hbi9wcmVzZW50R2V0dGVyL2FmdGVyL0kuamF2YQpAQCAtMCwwICsxLDQgQEAKK2ludGVyZmFjZSBJIHsKKyAgQSBnZXRNeUZpZWxkKCk7CisgIHZvaWQgZm9vKCk7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbW92ZW1pZGRsZW1hbi9wcmVzZW50R2V0dGVyL2FmdGVyL1Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW1vdmVtaWRkbGVtYW4vcHJlc2VudEdldHRlci9hZnRlci9UZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmI5YTQwNgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW1vdmVtaWRkbGVtYW4vcHJlc2VudEdldHRlci9hZnRlci9UZXN0LmphdmEKQEAgLTAsMCArMSwxNCBAQAorY2xhc3MgVGVzdCBpbXBsZW1lbnRzIEkgeworICBBIG15RmllbGQ7CisgIEEgZ2V0TXlGaWVsZCgpeworICAgIHJldHVybiBteUZpZWxkOworICB9CisKKyAgdm9pZCBmb28oKSB7CisgICAgbXlGaWVsZC5mb28oKTsKKyAgfQorCisgIHZvaWQgYmFyKEkgaSkgeworICAgIGkuZm9vKCk7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVtb3ZlbWlkZGxlbWFuL3ByZXNlbnRHZXR0ZXIvYmVmb3JlL0EuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW1vdmVtaWRkbGVtYW4vcHJlc2VudEdldHRlci9iZWZvcmUvQS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM0ZWQ4ZDAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVtb3ZlbWlkZGxlbWFuL3ByZXNlbnRHZXR0ZXIvYmVmb3JlL0EuamF2YQpAQCAtMCwwICsxLDMgQEAKK2NsYXNzIEEgeworICB2b2lkIGZvbygpe30KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVtb3ZlbWlkZGxlbWFuL3ByZXNlbnRHZXR0ZXIvYmVmb3JlL0kuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW1vdmVtaWRkbGVtYW4vcHJlc2VudEdldHRlci9iZWZvcmUvSS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc3NmNlYTIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVtb3ZlbWlkZGxlbWFuL3ByZXNlbnRHZXR0ZXIvYmVmb3JlL0kuamF2YQpAQCAtMCwwICsxLDQgQEAKK2ludGVyZmFjZSBJIHsKKyAgQSBnZXRNeUZpZWxkKCk7CisgIHZvaWQgZm9vKCk7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbW92ZW1pZGRsZW1hbi9wcmVzZW50R2V0dGVyL2JlZm9yZS9UZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVtb3ZlbWlkZGxlbWFuL3ByZXNlbnRHZXR0ZXIvYmVmb3JlL1Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYjlhNDA2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbW92ZW1pZGRsZW1hbi9wcmVzZW50R2V0dGVyL2JlZm9yZS9UZXN0LmphdmEKQEAgLTAsMCArMSwxNCBAQAorY2xhc3MgVGVzdCBpbXBsZW1lbnRzIEkgeworICBBIG15RmllbGQ7CisgIEEgZ2V0TXlGaWVsZCgpeworICAgIHJldHVybiBteUZpZWxkOworICB9CisKKyAgdm9pZCBmb28oKSB7CisgICAgbXlGaWVsZC5mb28oKTsKKyAgfQorCisgIHZvaWQgYmFyKEkgaSkgeworICAgIGkuZm9vKCk7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVtb3ZlbWlkZGxlbWFuL3NpYmxpbmdzL2FmdGVyL0EuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW1vdmVtaWRkbGVtYW4vc2libGluZ3MvYWZ0ZXIvQS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjExM2QxNjUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVtb3ZlbWlkZGxlbWFuL3NpYmxpbmdzL2FmdGVyL0EuamF2YQpAQCAtMCwwICsxLDMgQEAKK2Fic3RyYWN0IGNsYXNzIEF7CisgIGFic3RyYWN0IHZvaWQgZm9vKCk7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbW92ZW1pZGRsZW1hbi9zaWJsaW5ncy9hZnRlci9ELmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVtb3ZlbWlkZGxlbWFuL3NpYmxpbmdzL2FmdGVyL0QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNzZkNTBhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbW92ZW1pZGRsZW1hbi9zaWJsaW5ncy9hZnRlci9ELmphdmEKQEAgLTAsMCArMSwxMSBAQAorY2xhc3MgRCB7CisgIHZvaWQgZm9vKCl7fQorCisgIHZvaWQgYmFyKEEgYSl7CisgICAgYS5mb28oKTsKKyAgfQorCisgIHZvaWQgYmF6eihUZXN0IHQpeworICAgIHQuZm9vKCk7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVtb3ZlbWlkZGxlbWFuL3NpYmxpbmdzL2FmdGVyL1Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW1vdmVtaWRkbGVtYW4vc2libGluZ3MvYWZ0ZXIvVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkwNjYwNzgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVtb3ZlbWlkZGxlbWFuL3NpYmxpbmdzL2FmdGVyL1Rlc3QuamF2YQpAQCAtMCwwICsxLDEwIEBACitjbGFzcyBUZXN0IGV4dGVuZHMgQSB7CisgIEQgbXlGaWVsZDsKKyAgdm9pZCBmb28oKXsKKyAgICBteUZpZWxkLmZvbygpOworICB9CisKKyAgdm9pZCBmZigpeworICAgIGZvbygpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbW92ZW1pZGRsZW1hbi9zaWJsaW5ncy9iZWZvcmUvQS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbW92ZW1pZGRsZW1hbi9zaWJsaW5ncy9iZWZvcmUvQS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjExM2QxNjUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVtb3ZlbWlkZGxlbWFuL3NpYmxpbmdzL2JlZm9yZS9BLmphdmEKQEAgLTAsMCArMSwzIEBACithYnN0cmFjdCBjbGFzcyBBeworICBhYnN0cmFjdCB2b2lkIGZvbygpOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW1vdmVtaWRkbGVtYW4vc2libGluZ3MvYmVmb3JlL0QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW1vdmVtaWRkbGVtYW4vc2libGluZ3MvYmVmb3JlL0QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNzZkNTBhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbW92ZW1pZGRsZW1hbi9zaWJsaW5ncy9iZWZvcmUvRC5qYXZhCkBAIC0wLDAgKzEsMTEgQEAKK2NsYXNzIEQgeworICB2b2lkIGZvbygpe30KKworICB2b2lkIGJhcihBIGEpeworICAgIGEuZm9vKCk7CisgIH0KKworICB2b2lkIGJhenooVGVzdCB0KXsKKyAgICB0LmZvbygpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbW92ZW1pZGRsZW1hbi9zaWJsaW5ncy9iZWZvcmUvVGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbW92ZW1pZGRsZW1hbi9zaWJsaW5ncy9iZWZvcmUvVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkwNjYwNzgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVtb3ZlbWlkZGxlbWFuL3NpYmxpbmdzL2JlZm9yZS9UZXN0LmphdmEKQEAgLTAsMCArMSwxMCBAQAorY2xhc3MgVGVzdCBleHRlbmRzIEEgeworICBEIG15RmllbGQ7CisgIHZvaWQgZm9vKCl7CisgICAgbXlGaWVsZC5mb28oKTsKKyAgfQorCisgIHZvaWQgZmYoKXsKKyAgICBmb28oKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVDbGFzcy9hdXRvbWF0aWNSZW5hbWVJbmhlcml0b3JzL2FmdGVyL1guamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVDbGFzcy9hdXRvbWF0aWNSZW5hbWVJbmhlcml0b3JzL2FmdGVyL1guamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYWY2ZGJjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbmFtZUNsYXNzL2F1dG9tYXRpY1JlbmFtZUluaGVyaXRvcnMvYWZ0ZXIvWC5qYXZhCkBAIC0wLDAgKzEsMTIgQEAKK3B1YmxpYyBjbGFzcyBYIHsKK30KKworY2xhc3MgTXlDbGFzczEge30KKworLyoqCisgKiB7QGxpbmsgI015Q2xhc3MxSW1wbCgpfQorICovCitjbGFzcyBNeUNsYXNzMUltcGwgZXh0ZW5kcyBNeUNsYXNzMSB7CisgICAgTXlDbGFzczFJbXBsKCkgeworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lQ2xhc3MvYXV0b21hdGljUmVuYW1lSW5oZXJpdG9ycy9iZWZvcmUvWC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbmFtZUNsYXNzL2F1dG9tYXRpY1JlbmFtZUluaGVyaXRvcnMvYmVmb3JlL1guamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNDgwNzU2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbmFtZUNsYXNzL2F1dG9tYXRpY1JlbmFtZUluaGVyaXRvcnMvYmVmb3JlL1guamF2YQpAQCAtMCwwICsxLDEyIEBACitwdWJsaWMgY2xhc3MgWCB7Cit9CisKK2NsYXNzIE15Q2xhc3Mge30KKworLyoqCisgKiB7QGxpbmsgI015Q2xhc3NJbXBsKCl9CisgKi8KK2NsYXNzIE15Q2xhc3NJbXBsIGV4dGVuZHMgTXlDbGFzcyB7CisgICAgTXlDbGFzc0ltcGwoKSB7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVDbGFzcy9hdXRvbWF0aWNSZW5hbWVWYXJzL2FmdGVyL1guamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVDbGFzcy9hdXRvbWF0aWNSZW5hbWVWYXJzL2FmdGVyL1guamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMDZiZjBiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbmFtZUNsYXNzL2F1dG9tYXRpY1JlbmFtZVZhcnMvYWZ0ZXIvWC5qYXZhCkBAIC0wLDAgKzEsNiBAQAorY2xhc3MgWSB7IC8vIHJlbmFtZSBtZSB0byBZIGFuZCBsZXQgdGhlIHJlZmFjdG9yaW5nIHJlbmFtZSB0aGUgdmFyaWFibGVzIHRvby4KKwl2b2lkIGZvbyhZIHkpIHsKKwkJU3RyaW5nIHl6ID0gImFzZGYiOworCQlTeXN0ZW0ub3V0LnByaW50bG4oIng6ICIgKyB5ICsgeXopOworCX0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVDbGFzcy9hdXRvbWF0aWNSZW5hbWVWYXJzL2JlZm9yZS9YLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lQ2xhc3MvYXV0b21hdGljUmVuYW1lVmFycy9iZWZvcmUvWC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlmYzAwNjUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lQ2xhc3MvYXV0b21hdGljUmVuYW1lVmFycy9iZWZvcmUvWC5qYXZhCkBAIC0wLDAgKzEsNiBAQAorY2xhc3MgWFggeyAvLyByZW5hbWUgbWUgdG8gWSBhbmQgbGV0IHRoZSByZWZhY3RvcmluZyByZW5hbWUgdGhlIHZhcmlhYmxlcyB0b28uCisJdm9pZCBmb28oWFggeHgpIHsKKwkJU3RyaW5nIHl6ID0gImFzZGYiOworCQlTeXN0ZW0ub3V0LnByaW50bG4oIng6ICIgKyB4eCArIHl6KTsKKwl9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lQ2xhc3MvYXV0b21hdGljUmVuYW1lVmFyc0NvbGxpc2lvbi9hZnRlci9YLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lQ2xhc3MvYXV0b21hdGljUmVuYW1lVmFyc0NvbGxpc2lvbi9hZnRlci9YLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDAwODgwNwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVDbGFzcy9hdXRvbWF0aWNSZW5hbWVWYXJzQ29sbGlzaW9uL2FmdGVyL1guamF2YQpAQCAtMCwwICsxLDYgQEAKK2NsYXNzIFkgeyAvLyByZW5hbWUgbWUgdG8gWSBhbmQgbGV0IHRoZSByZWZhY3RvcmluZyByZW5hbWUgdGhlIHZhcmlhYmxlcyB0b28uCisJdm9pZCBmb28oWSB4KSB7CisJCVN0cmluZyB5ID0gImFzZGYiOworCQlTeXN0ZW0ub3V0LnByaW50bG4oIng6ICIgKyB4ICsgeSk7CisJfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbmFtZUNsYXNzL2F1dG9tYXRpY1JlbmFtZVZhcnNDb2xsaXNpb24vYmVmb3JlL1guamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVDbGFzcy9hdXRvbWF0aWNSZW5hbWVWYXJzQ29sbGlzaW9uL2JlZm9yZS9YLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTY1OWRmMQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVDbGFzcy9hdXRvbWF0aWNSZW5hbWVWYXJzQ29sbGlzaW9uL2JlZm9yZS9YLmphdmEKQEAgLTAsMCArMSw2IEBACitjbGFzcyBYWCB7IC8vIHJlbmFtZSBtZSB0byBZIGFuZCBsZXQgdGhlIHJlZmFjdG9yaW5nIHJlbmFtZSB0aGUgdmFyaWFibGVzIHRvby4KKwl2b2lkIGZvbyhYWCB4KSB7CisJCVN0cmluZyB5ID0gImFzZGYiOworCQlTeXN0ZW0ub3V0LnByaW50bG4oIng6ICIgKyB4ICsgeSk7CisJfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbmFtZUNsYXNzL2NvbGxpc2lvbi9hZnRlci9wYWNrMS9MaXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lQ2xhc3MvY29sbGlzaW9uL2FmdGVyL3BhY2sxL0xpc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42OGI4MjFjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbmFtZUNsYXNzL2NvbGxpc2lvbi9hZnRlci9wYWNrMS9MaXN0LmphdmEKQEAgLTAsMCArMSw0IEBACitwYWNrYWdlIHBhY2sxOworCitwdWJsaWMgY2xhc3MgTGlzdCB7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbmFtZUNsYXNzL2NvbGxpc2lvbi9hZnRlci9wYWNrMi9Vc2FnZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbmFtZUNsYXNzL2NvbGxpc2lvbi9hZnRlci9wYWNrMi9Vc2FnZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk5MjEwMjMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lQ2xhc3MvY29sbGlzaW9uL2FmdGVyL3BhY2syL1VzYWdlLmphdmEKQEAgLTAsMCArMSw5IEBACitwYWNrYWdlIHBhY2syOworaW1wb3J0IHBhY2sxLio7CisKK3B1YmxpYyBjbGFzcyBVc2FnZSB7CisgICAgaW50IG1ldGhvZCgpIHsKKyAgICAgICAgamF2YS51dGlsLkxpc3QgbGlzdCA9IG51bGw7CisgICAgICAgIExpc3QgbXlMaXN0ID0gbnVsbDsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbmFtZUNsYXNzL2NvbGxpc2lvbi9hZnRlci9wYWNrMi9Vc2FnZTIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVDbGFzcy9jb2xsaXNpb24vYWZ0ZXIvcGFjazIvVXNhZ2UyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGY1Nzc0NQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVDbGFzcy9jb2xsaXNpb24vYWZ0ZXIvcGFjazIvVXNhZ2UyLmphdmEKQEAgLTAsMCArMSwxMCBAQAorcGFja2FnZSBwYWNrMjsKKworaW1wb3J0IGphdmEudXRpbC5MaXN0OworCitwdWJsaWMgY2xhc3MgVXNhZ2UyIHsKKyAgICBpbnQgbWV0aG9kKCkgeworICAgICAgICBMaXN0IGxpc3QgPSBudWxsOworICAgICAgICBwYWNrMS5MaXN0IG15TGlzdCA9IG51bGw7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVDbGFzcy9jb2xsaXNpb24vYmVmb3JlL3BhY2sxL015TGlzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbmFtZUNsYXNzL2NvbGxpc2lvbi9iZWZvcmUvcGFjazEvTXlMaXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTk4ODcyNAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVDbGFzcy9jb2xsaXNpb24vYmVmb3JlL3BhY2sxL015TGlzdC5qYXZhCkBAIC0wLDAgKzEsNCBAQAorcGFja2FnZSBwYWNrMTsKKworcHVibGljIGNsYXNzIE15TGlzdCB7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbmFtZUNsYXNzL2NvbGxpc2lvbi9iZWZvcmUvcGFjazIvVXNhZ2UuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVDbGFzcy9jb2xsaXNpb24vYmVmb3JlL3BhY2syL1VzYWdlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTAyYzg3YgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVDbGFzcy9jb2xsaXNpb24vYmVmb3JlL3BhY2syL1VzYWdlLmphdmEKQEAgLTAsMCArMSwxMCBAQAorcGFja2FnZSBwYWNrMjsKK2ltcG9ydCBqYXZhLnV0aWwuTGlzdDsKK2ltcG9ydCBwYWNrMS4qOworCitwdWJsaWMgY2xhc3MgVXNhZ2UgeworICAgIGludCBtZXRob2QoKSB7CisgICAgICAgIExpc3QgbGlzdCA9IG51bGw7CisgICAgICAgIE15TGlzdCBteUxpc3QgPSBudWxsOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lQ2xhc3MvY29sbGlzaW9uL2JlZm9yZS9wYWNrMi9Vc2FnZTIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVDbGFzcy9jb2xsaXNpb24vYmVmb3JlL3BhY2syL1VzYWdlMi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBjZDFiZWEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lQ2xhc3MvY29sbGlzaW9uL2JlZm9yZS9wYWNrMi9Vc2FnZTIuamF2YQpAQCAtMCwwICsxLDkgQEAKK3BhY2thZ2UgcGFjazI7CitpbXBvcnQgamF2YS51dGlsLio7CisKK3B1YmxpYyBjbGFzcyBVc2FnZTIgeworICAgIGludCBtZXRob2QoKSB7CisgICAgICAgIExpc3QgbGlzdCA9IG51bGw7CisgICAgICAgIHBhY2sxLk15TGlzdCBteUxpc3QgPSBudWxsOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lQ2xhc3MvY29sbGlzaW9uMS9hZnRlci9UZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lQ2xhc3MvY29sbGlzaW9uMS9hZnRlci9UZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzZmZTA3OQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVDbGFzcy9jb2xsaXNpb24xL2FmdGVyL1Rlc3QuamF2YQpAQCAtMCwwICsxLDYgQEAKK2ltcG9ydCBqYXZhLmlvLio7CisKK2NsYXNzIFJlYWRlciB7CisgICBqYXZhLmlvLlJlYWRlciByZWFkZXI7CisvLyBtb3JlIGNvZGUKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVDbGFzcy9jb2xsaXNpb24xL2JlZm9yZS9UZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lQ2xhc3MvY29sbGlzaW9uMS9iZWZvcmUvVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE5NDIxNTMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lQ2xhc3MvY29sbGlzaW9uMS9iZWZvcmUvVGVzdC5qYXZhCkBAIC0wLDAgKzEsNiBAQAoraW1wb3J0IGphdmEuaW8uKjsKKworY2xhc3MgTG9hZGVyIHsKKyAgIFJlYWRlciByZWFkZXI7CisvLyBtb3JlIGNvZGUKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVDbGFzcy9jb25zdHJ1Y3RvckphdmFkb2MvYWZ0ZXIvVGVzdDEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVDbGFzcy9jb25zdHJ1Y3RvckphdmFkb2MvYWZ0ZXIvVGVzdDEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYzZjMTgzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbmFtZUNsYXNzL2NvbnN0cnVjdG9ySmF2YWRvYy9hZnRlci9UZXN0MS5qYXZhCkBAIC0wLDAgKzEsMTEgQEAKKy8qKgorICogQHNlZSAjVGVzdDEKKyAqLworY2xhc3MgVGVzdDEgeworICAgIHB1YmxpYyBUZXN0MSgpIHsKKyAgICAgICAgdGhpcygwKTsKKyAgICAgICAgbmV3IFRlc3QxKCk7CisgICAgfQorCisgICAgcHVibGljIFRlc3QxKGludCBpKSB7fQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbmFtZUNsYXNzL2NvbnN0cnVjdG9ySmF2YWRvYy9iZWZvcmUvVGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbmFtZUNsYXNzL2NvbnN0cnVjdG9ySmF2YWRvYy9iZWZvcmUvVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU5MDM4ZDUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lQ2xhc3MvY29uc3RydWN0b3JKYXZhZG9jL2JlZm9yZS9UZXN0LmphdmEKQEAgLTAsMCArMSwxMSBAQAorLyoqCisgKiBAc2VlICNUZXN0CisgKi8KK2NsYXNzIFRlc3QgeworICAgIHB1YmxpYyBUZXN0KCkgeworICAgICAgICB0aGlzKDApOworICAgICAgICBuZXcgVGVzdCgpOworICAgIH0KKworICAgIHB1YmxpYyBUZXN0KGludCBpKSB7fQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbmFtZUNsYXNzL2ltcGxpY2l0UmVmZXJlbmNlVG9EZWZhdWx0Q3RyL2FmdGVyL3BhY2sxL0Rlcml2ZWQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVDbGFzcy9pbXBsaWNpdFJlZmVyZW5jZVRvRGVmYXVsdEN0ci9hZnRlci9wYWNrMS9EZXJpdmVkLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmNjZWViNwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVDbGFzcy9pbXBsaWNpdFJlZmVyZW5jZVRvRGVmYXVsdEN0ci9hZnRlci9wYWNrMS9EZXJpdmVkLmphdmEKQEAgLTAsMCArMSw0IEBACitwYWNrYWdlIHBhY2sxOworCitwdWJsaWMgY2xhc3MgRGVyaXZlZCBleHRlbmRzIFBhcmVudFhYWCB7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbmFtZUNsYXNzL2ltcGxpY2l0UmVmZXJlbmNlVG9EZWZhdWx0Q3RyL2FmdGVyL3BhY2sxL1BhcmVudFhYWC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbmFtZUNsYXNzL2ltcGxpY2l0UmVmZXJlbmNlVG9EZWZhdWx0Q3RyL2FmdGVyL3BhY2sxL1BhcmVudFhYWC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVlMjhlODUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lQ2xhc3MvaW1wbGljaXRSZWZlcmVuY2VUb0RlZmF1bHRDdHIvYWZ0ZXIvcGFjazEvUGFyZW50WFhYLmphdmEKQEAgLTAsMCArMSw2IEBACitwYWNrYWdlIHBhY2sxOworCitwdWJsaWMgY2xhc3MgUGFyZW50WFhYIHsKKyAgICBwdWJsaWMgUGFyZW50WFhYKCkgeworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lQ2xhc3MvaW1wbGljaXRSZWZlcmVuY2VUb0RlZmF1bHRDdHIvYmVmb3JlL3BhY2sxL0Rlcml2ZWQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVDbGFzcy9pbXBsaWNpdFJlZmVyZW5jZVRvRGVmYXVsdEN0ci9iZWZvcmUvcGFjazEvRGVyaXZlZC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ5N2QyOGIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lQ2xhc3MvaW1wbGljaXRSZWZlcmVuY2VUb0RlZmF1bHRDdHIvYmVmb3JlL3BhY2sxL0Rlcml2ZWQuamF2YQpAQCAtMCwwICsxLDQgQEAKK3BhY2thZ2UgcGFjazE7CisKK3B1YmxpYyBjbGFzcyBEZXJpdmVkIGV4dGVuZHMgUGFyZW50IHsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lQ2xhc3MvaW1wbGljaXRSZWZlcmVuY2VUb0RlZmF1bHRDdHIvYmVmb3JlL3BhY2sxL1BhcmVudC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbmFtZUNsYXNzL2ltcGxpY2l0UmVmZXJlbmNlVG9EZWZhdWx0Q3RyL2JlZm9yZS9wYWNrMS9QYXJlbnQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZjA2ZWVhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbmFtZUNsYXNzL2ltcGxpY2l0UmVmZXJlbmNlVG9EZWZhdWx0Q3RyL2JlZm9yZS9wYWNrMS9QYXJlbnQuamF2YQpAQCAtMCwwICsxLDYgQEAKK3BhY2thZ2UgcGFjazE7CisKK3B1YmxpYyBjbGFzcyBQYXJlbnQgeworICAgIHB1YmxpYyBQYXJlbnQoKSB7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVDbGFzcy9pbXBsaWNpdGx5SW1wb3J0ZWQvYWZ0ZXIvQi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbmFtZUNsYXNzL2ltcGxpY2l0bHlJbXBvcnRlZC9hZnRlci9CLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2Y2MzIzNQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVDbGFzcy9pbXBsaWNpdGx5SW1wb3J0ZWQvYWZ0ZXIvQi5qYXZhCkBAIC0wLDAgKzEsNSBAQAoraW1wb3J0IHBhY2sxLk9iamVjdDsKKworY2xhc3MgQiB7CisgIE9iamVjdCBhOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVDbGFzcy9pbXBsaWNpdGx5SW1wb3J0ZWQvYWZ0ZXIvcGFjazEvT2JqZWN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lQ2xhc3MvaW1wbGljaXRseUltcG9ydGVkL2FmdGVyL3BhY2sxL09iamVjdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQyN2RkZTIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lQ2xhc3MvaW1wbGljaXRseUltcG9ydGVkL2FmdGVyL3BhY2sxL09iamVjdC5qYXZhCkBAIC0wLDAgKzEsMyBAQAorcGFja2FnZSBwYWNrMTsKKworcHVibGljIGNsYXNzIE9iamVjdCB7fQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVDbGFzcy9pbXBsaWNpdGx5SW1wb3J0ZWQvYmVmb3JlL0IuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVDbGFzcy9pbXBsaWNpdGx5SW1wb3J0ZWQvYmVmb3JlL0IuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZmRlMGI0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbmFtZUNsYXNzL2ltcGxpY2l0bHlJbXBvcnRlZC9iZWZvcmUvQi5qYXZhCkBAIC0wLDAgKzEsNyBAQAoraW1wb3J0IGphdmEubGFuZy5PYmplY3Q7CisKK2ltcG9ydCBwYWNrMS4qOworCitjbGFzcyBCIHsKKyAgQSBhOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVDbGFzcy9pbXBsaWNpdGx5SW1wb3J0ZWQvYmVmb3JlL3BhY2sxL0EuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVDbGFzcy9pbXBsaWNpdGx5SW1wb3J0ZWQvYmVmb3JlL3BhY2sxL0EuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kOGQwZTZhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbmFtZUNsYXNzL2ltcGxpY2l0bHlJbXBvcnRlZC9iZWZvcmUvcGFjazEvQS5qYXZhCkBAIC0wLDAgKzEsMyBAQAorcGFja2FnZSBwYWNrMTsKKworcHVibGljIGNsYXNzIEEge30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lQ2xhc3MvaW1wb3J0L2FmdGVyL0Zvb0Jhci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbmFtZUNsYXNzL2ltcG9ydC9hZnRlci9Gb29CYXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lM2MwZGZiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbmFtZUNsYXNzL2ltcG9ydC9hZnRlci9Gb29CYXIuamF2YQpAQCAtMCwwICsxLDUgQEAKK2ltcG9ydCBhLkJsdWJGb287CisKK3B1YmxpYyBjbGFzcyBGb29CYXIgeworICAgIEJsdWJGb28gYmx1YmZvbzsKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVDbGFzcy9pbXBvcnQvYWZ0ZXIvYS9CbHViRm9vLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lQ2xhc3MvaW1wb3J0L2FmdGVyL2EvQmx1YkZvby5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYzMTljZWIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lQ2xhc3MvaW1wb3J0L2FmdGVyL2EvQmx1YkZvby5qYXZhCkBAIC0wLDAgKzEsNCBAQAorcGFja2FnZSBhOworCitwdWJsaWMgY2xhc3MgQmx1YkZvbyB7Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lQ2xhc3MvaW1wb3J0L2JlZm9yZS9Gb29CYXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVDbGFzcy9pbXBvcnQvYmVmb3JlL0Zvb0Jhci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFhMjk1NDcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lQ2xhc3MvaW1wb3J0L2JlZm9yZS9Gb29CYXIuamF2YQpAQCAtMCwwICsxLDUgQEAKK2ltcG9ydCBhLkJsdWJmb287CisKK3B1YmxpYyBjbGFzcyBGb29CYXIgeworICAgIEJsdWJmb28gYmx1YmZvbzsKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVDbGFzcy9pbXBvcnQvYmVmb3JlL2EvQmx1YmZvby5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbmFtZUNsYXNzL2ltcG9ydC9iZWZvcmUvYS9CbHViZm9vLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDVjNzc0NwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVDbGFzcy9pbXBvcnQvYmVmb3JlL2EvQmx1YmZvby5qYXZhCkBAIC0wLDAgKzEsNCBAQAorcGFja2FnZSBhOworCitwdWJsaWMgY2xhc3MgQmx1YmZvbyB7Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lQ2xhc3MvaW5TYW1lRmlsZS9hZnRlci9UZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lQ2xhc3MvaW5TYW1lRmlsZS9hZnRlci9UZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTI0MWRhMAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVDbGFzcy9pblNhbWVGaWxlL2FmdGVyL1Rlc3QuamF2YQpAQCAtMCwwICsxLDUgQEAKK2NsYXNzIE9uZSBleHRlbmRzIGphdmEubGFuZy5PYmplY3QgeworfQorCitjbGFzcyBPYmplY3QgeworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVDbGFzcy9pblNhbWVGaWxlL2JlZm9yZS9UZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lQ2xhc3MvaW5TYW1lRmlsZS9iZWZvcmUvVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZiMmYyMzMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lQ2xhc3MvaW5TYW1lRmlsZS9iZWZvcmUvVGVzdC5qYXZhCkBAIC0wLDAgKzEsNSBAQAorY2xhc3MgT25lIGV4dGVuZHMgT2JqZWN0IHsKK30KKworY2xhc3MgVHdvIHsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lQ2xhc3MvaW5uZXJDbGFzcy9hZnRlci9wYWNrMS9PdXRlckNsYXNzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lQ2xhc3MvaW5uZXJDbGFzcy9hZnRlci9wYWNrMS9PdXRlckNsYXNzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjcwYzg4NAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVDbGFzcy9pbm5lckNsYXNzL2FmdGVyL3BhY2sxL091dGVyQ2xhc3MuamF2YQpAQCAtMCwwICsxLDkgQEAKK3BhY2thZ2UgcGFjazE7CisKK3B1YmxpYyBjbGFzcyBPdXRlckNsYXNzIHsKKyAgICBwdWJsaWMgc3RhdGljIGNsYXNzIE5ld0lubmVyQ2xhc3MgeworICAgICAgICAKKyAgICB9CisgICAKKyAgICBTdHJpbmcgY2xhc3NMb2FkZXJTdHJpbmcgPSAicGFjazEuT3V0ZXJDbGFzcyROZXdJbm5lckNsYXNzIjsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lQ2xhc3MvaW5uZXJDbGFzcy9hZnRlci9xcXEudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbmFtZUNsYXNzL2lubmVyQ2xhc3MvYWZ0ZXIvcXFxLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNmE4M2Y4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbmFtZUNsYXNzL2lubmVyQ2xhc3MvYWZ0ZXIvcXFxLnR4dApAQCAtMCwwICsxLDMgQEAKK3BhY2sxLk91dGVyQ2xhc3MuTmV3SW5uZXJDbGFzcworcGFjazEuT3V0ZXJDbGFzcyROZXdJbm5lckNsYXNzCitwYWNrMS5PdXRlckNsYXNzJElubmVyQ2xhc3NYClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbmFtZUNsYXNzL2lubmVyQ2xhc3MvYmVmb3JlL3BhY2sxL091dGVyQ2xhc3MuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVDbGFzcy9pbm5lckNsYXNzL2JlZm9yZS9wYWNrMS9PdXRlckNsYXNzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTMxNzczOQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVDbGFzcy9pbm5lckNsYXNzL2JlZm9yZS9wYWNrMS9PdXRlckNsYXNzLmphdmEKQEAgLTAsMCArMSw5IEBACitwYWNrYWdlIHBhY2sxOworCitwdWJsaWMgY2xhc3MgT3V0ZXJDbGFzcyB7CisgICAgcHVibGljIHN0YXRpYyBjbGFzcyBJbm5lckNsYXNzIHsKKyAgICAgICAgCisgICAgfQorICAgCisgICAgU3RyaW5nIGNsYXNzTG9hZGVyU3RyaW5nID0gInBhY2sxLk91dGVyQ2xhc3MkSW5uZXJDbGFzcyI7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbmFtZUNsYXNzL2lubmVyQ2xhc3MvYmVmb3JlL3FxcS50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lQ2xhc3MvaW5uZXJDbGFzcy9iZWZvcmUvcXFxLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YTJjZGMzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbmFtZUNsYXNzL2lubmVyQ2xhc3MvYmVmb3JlL3FxcS50eHQKQEAgLTAsMCArMSwzIEBACitwYWNrMS5PdXRlckNsYXNzLklubmVyQ2xhc3MKK3BhY2sxLk91dGVyQ2xhc3MkSW5uZXJDbGFzcworcGFjazEuT3V0ZXJDbGFzcyRJbm5lckNsYXNzWApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVDbGFzcy9ub25KYXZhL2FmdGVyL3BhY2sxL0NsYXNzMU5ldy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbmFtZUNsYXNzL25vbkphdmEvYWZ0ZXIvcGFjazEvQ2xhc3MxTmV3LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2RlODRhNwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVDbGFzcy9ub25KYXZhL2FmdGVyL3BhY2sxL0NsYXNzMU5ldy5qYXZhCkBAIC0wLDAgKzEsMyBAQAorcGFja2FnZSBwYWNrMTsKKworcHVibGljIGNsYXNzIENsYXNzMU5ldyB7fQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVDbGFzcy9ub25KYXZhL2FmdGVyL3FxcS50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lQ2xhc3Mvbm9uSmF2YS9hZnRlci9xcXEudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFjMWYzZDMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lQ2xhc3Mvbm9uSmF2YS9hZnRlci9xcXEudHh0CkBAIC0wLDAgKzEsMyBAQAorcGFjazEuQ2xhc3MxTmV3CitDbGFzczEKK3BhY2sxLkNsYXNzMWEKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVDbGFzcy9ub25KYXZhL2JlZm9yZS9wYWNrMS9DbGFzczEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVDbGFzcy9ub25KYXZhL2JlZm9yZS9wYWNrMS9DbGFzczEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMDgwYjY4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbmFtZUNsYXNzL25vbkphdmEvYmVmb3JlL3BhY2sxL0NsYXNzMS5qYXZhCkBAIC0wLDAgKzEsMyBAQAorcGFja2FnZSBwYWNrMTsKKworcHVibGljIGNsYXNzIENsYXNzMXt9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbmFtZUNsYXNzL25vbkphdmEvYmVmb3JlL3FxcS50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lQ2xhc3Mvbm9uSmF2YS9iZWZvcmUvcXFxLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNjBkYzdlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbmFtZUNsYXNzL25vbkphdmEvYmVmb3JlL3FxcS50eHQKQEAgLTAsMCArMSwzIEBACitwYWNrMS5DbGFzczEKK0NsYXNzMQorcGFjazEuQ2xhc3MxYQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbmFtZUNvbGxpc2lvbnMvQWxsVXNhZ2VzSW5Db2RlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lQ29sbGlzaW9ucy9BbGxVc2FnZXNJbkNvZGUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMzE0Y2VlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbmFtZUNvbGxpc2lvbnMvQWxsVXNhZ2VzSW5Db2RlLmphdmEKQEAgLTAsMCArMSw1IEBACitwdWJsaWMgY2xhc3MgVDxjYXJldD5vRmluZCB7CisgIHZvaWQgZm9vKCkgeworICAgIG5ldyBUb0ZpbmQoKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVDb2xsaXNpb25zL1JlbmFtZUNsYXNzSW5uZXJUb0xvY2FsLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lQ29sbGlzaW9ucy9SZW5hbWVDbGFzc0lubmVyVG9Mb2NhbC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM4OWM3ZDIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lQ29sbGlzaW9ucy9SZW5hbWVDbGFzc0lubmVyVG9Mb2NhbC5qYXZhCkBAIC0wLDAgKzEsMjkgQEAKK3BhY2thZ2UgcmVuYW1lQ29sbGlzaW9uczsKKworY2xhc3MgTG9jYWxDbGFzcyB7CisJcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgU05fU1RBVElDX0ZJRUxEID0gMjsKKwlwdWJsaWMgc3RhdGljIHZvaWQgc25TdGF0aWNNZXRob2QoKSB7CisJfQorfQorCitwdWJsaWMgY2xhc3MgUmVuYW1lQ29sbGlzaW9ucyB7CisJY2xhc3MgSW5uZXI8Y2FyZXQ+Q2xhc3MgeworCQlwdWJsaWMgc3RhdGljIGZpbmFsIGludCBTTl9TVEFUSUNfRklFTEQgPSAxNDsKKwkJcHVibGljIHZvaWQgc25NZXRob2QoKSB7CisJCX0KKwl9CisKKwlwdWJsaWMgdm9pZCBpbnN0YW5jZUNvbnRleHQoKSB7CisJCUxvY2FsQ2xhc3MgbG9jYWxDbGFzcyA9IG5ldyBMb2NhbENsYXNzKCk7CisJCWludCB2YXIxID0gTG9jYWxDbGFzcy5TTl9TVEFUSUNfRklFTEQ7CisJCUxvY2FsQ2xhc3Muc25TdGF0aWNNZXRob2QoKTsKKworCQlJbm5lckNsYXNzIGlubmVyQ2xhc3MgPSBuZXcgSW5uZXJDbGFzcygpOworCQlpbnQgdmFyNCA9IElubmVyQ2xhc3MuU05fU1RBVElDX0ZJRUxEOworCX0KKworCXB1YmxpYyBzdGF0aWMgdm9pZCBzdGF0aWNDb250ZXh0KCkgeworCQlJbm5lckNsYXNzIGlubmVyQ2xhc3MgPSBuZXcgUmVuYW1lQ29sbGlzaW9ucygpLm5ldyBJbm5lckNsYXNzKCk7CisJCWludCB2YXIzID0gSW5uZXJDbGFzcy5TTl9TVEFUSUNfRklFTEQ7CisJfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbmFtZUNvbGxpc2lvbnMvUmVuYW1lQ2xhc3NJbm5lclRvTG9jYWwuamF2YS5hZnRlciBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVDb2xsaXNpb25zL1JlbmFtZUNsYXNzSW5uZXJUb0xvY2FsLmphdmEuYWZ0ZXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTRhNjVhOAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVDb2xsaXNpb25zL1JlbmFtZUNsYXNzSW5uZXJUb0xvY2FsLmphdmEuYWZ0ZXIKQEAgLTAsMCArMSwyOSBAQAorcGFja2FnZSByZW5hbWVDb2xsaXNpb25zOworCitjbGFzcyBMb2NhbENsYXNzIHsKKwlwdWJsaWMgc3RhdGljIGZpbmFsIGludCBTTl9TVEFUSUNfRklFTEQgPSAyOworCXB1YmxpYyBzdGF0aWMgdm9pZCBzblN0YXRpY01ldGhvZCgpIHsKKwl9Cit9CisKK3B1YmxpYyBjbGFzcyBSZW5hbWVDb2xsaXNpb25zIHsKKwljbGFzcyBMb2NhbDxjYXJldD5DbGFzcyB7CisJCXB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFNOX1NUQVRJQ19GSUVMRCA9IDE0OworCQlwdWJsaWMgdm9pZCBzbk1ldGhvZCgpIHsKKwkJfQorCX0KKworCXB1YmxpYyB2b2lkIGluc3RhbmNlQ29udGV4dCgpIHsKKwkJcmVuYW1lQ29sbGlzaW9ucy5Mb2NhbENsYXNzIGxvY2FsQ2xhc3MgPSBuZXcgcmVuYW1lQ29sbGlzaW9ucy5Mb2NhbENsYXNzKCk7CisJCWludCB2YXIxID0gcmVuYW1lQ29sbGlzaW9ucy5Mb2NhbENsYXNzLlNOX1NUQVRJQ19GSUVMRDsKKwkJcmVuYW1lQ29sbGlzaW9ucy5Mb2NhbENsYXNzLnNuU3RhdGljTWV0aG9kKCk7CisKKwkJcmVuYW1lQ29sbGlzaW9ucy5SZW5hbWVDb2xsaXNpb25zLkxvY2FsQ2xhc3MgaW5uZXJDbGFzcyA9IG5ldyByZW5hbWVDb2xsaXNpb25zLlJlbmFtZUNvbGxpc2lvbnMuTG9jYWxDbGFzcygpOworCQlpbnQgdmFyNCA9IHJlbmFtZUNvbGxpc2lvbnMuUmVuYW1lQ29sbGlzaW9ucy5Mb2NhbENsYXNzLlNOX1NUQVRJQ19GSUVMRDsKKwl9CisKKwlwdWJsaWMgc3RhdGljIHZvaWQgc3RhdGljQ29udGV4dCgpIHsKKwkJcmVuYW1lQ29sbGlzaW9ucy5SZW5hbWVDb2xsaXNpb25zLkxvY2FsQ2xhc3MgaW5uZXJDbGFzcyA9IG5ldyBSZW5hbWVDb2xsaXNpb25zKCkubmV3IExvY2FsQ2xhc3MoKTsKKwkJaW50IHZhcjMgPSByZW5hbWVDb2xsaXNpb25zLlJlbmFtZUNvbGxpc2lvbnMuTG9jYWxDbGFzcy5TTl9TVEFUSUNfRklFTEQ7CisJfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbmFtZUNvbGxpc2lvbnMvUmVuYW1lQ2xhc3NMb2NhbFRvQWxpZW4uamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVDb2xsaXNpb25zL1JlbmFtZUNsYXNzTG9jYWxUb0FsaWVuLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGYwYWY2YwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVDb2xsaXNpb25zL1JlbmFtZUNsYXNzTG9jYWxUb0FsaWVuLmphdmEKQEAgLTAsMCArMSwzNSBAQAorcGFja2FnZSByZW5hbWVDb2xsaXNpb25zOworCitpbXBvcnQgc3RhdGljIGphdmEubGFuZy5TdHJpbmcuQ0FTRV9JTlNFTlNJVElWRV9PUkRFUjsKK2ltcG9ydCBzdGF0aWMgamF2YS5sYW5nLlN0cmluZy52YWx1ZU9mOworCitjbGFzcyA8Y2FyZXQ+TG9jYWxDbGFzcyB7CisJcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgU1RBVElDX0ZJRUxEID0gNTsKKwlwdWJsaWMgc3RhdGljIHZvaWQgc3RhdGljTWV0aG9kKCkgeworCX0KKwlpbnQgbXlGaWVsZDsKKwlwdWJsaWMgdm9pZCBtZXRob2QoKSB7CisJfQorfQorCitwdWJsaWMgY2xhc3MgUmVuYW1lQ29sbGlzaW9ucyB7CisJcHJpdmF0ZSBTdHJpbmcgbXlEZWNsYXJhdGlvblVzYWdlOworCXB1YmxpYyBTdHJpbmcgZGVjbGFyYXRpb25Vc2FnZShTdHJpbmcgcykgeworCQlyZXR1cm4gcyArIG15RGVjbGFyYXRpb25Vc2FnZTsKKwl9CisKKwlwdWJsaWMgc3RhdGljIHZvaWQgc3RhdGljQ29udGV4dCgpIHsKKwkJQ0FTRV9JTlNFTlNJVElWRV9PUkRFUi5nZXRDbGFzcygpOworCQl2YWx1ZU9mKDApOworCisJCVN0cmluZy5DQVNFX0lOU0VOU0lUSVZFX09SREVSLmdldENsYXNzKCk7CisJCVN0cmluZy52YWx1ZU9mKDApOworCisJCWludCB2YXI2ID0gTG9jYWxDbGFzcy5TVEFUSUNfRklFTEQ7CisJCUxvY2FsQ2xhc3Muc3RhdGljTWV0aG9kKCk7CisKKwkJTG9jYWxDbGFzcyBsb2NhbENsYXNzID0gbmV3IExvY2FsQ2xhc3MoKTsKKwkJbG9jYWxDbGFzcy5teUZpZWxkKys7CisJCWxvY2FsQ2xhc3MubWV0aG9kKCk7CisJfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbmFtZUNvbGxpc2lvbnMvUmVuYW1lQ2xhc3NMb2NhbFRvQWxpZW4uamF2YS5hZnRlciBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVDb2xsaXNpb25zL1JlbmFtZUNsYXNzTG9jYWxUb0FsaWVuLmphdmEuYWZ0ZXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDE5YzY1ZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVDb2xsaXNpb25zL1JlbmFtZUNsYXNzTG9jYWxUb0FsaWVuLmphdmEuYWZ0ZXIKQEAgLTAsMCArMSwzNSBAQAorcGFja2FnZSByZW5hbWVDb2xsaXNpb25zOworCitpbXBvcnQgc3RhdGljIGphdmEubGFuZy5TdHJpbmcuQ0FTRV9JTlNFTlNJVElWRV9PUkRFUjsKK2ltcG9ydCBzdGF0aWMgamF2YS5sYW5nLlN0cmluZy52YWx1ZU9mOworCitjbGFzcyA8Y2FyZXQ+U3RyaW5nIHsKKwlwdWJsaWMgc3RhdGljIGZpbmFsIGludCBTVEFUSUNfRklFTEQgPSA1OworCXB1YmxpYyBzdGF0aWMgdm9pZCBzdGF0aWNNZXRob2QoKSB7CisJfQorCWludCBteUZpZWxkOworCXB1YmxpYyB2b2lkIG1ldGhvZCgpIHsKKwl9Cit9CisKK3B1YmxpYyBjbGFzcyBSZW5hbWVDb2xsaXNpb25zIHsKKwlwcml2YXRlIGphdmEubGFuZy5TdHJpbmcgbXlEZWNsYXJhdGlvblVzYWdlOworCXB1YmxpYyBqYXZhLmxhbmcuU3RyaW5nIGRlY2xhcmF0aW9uVXNhZ2UoamF2YS5sYW5nLlN0cmluZyBzKSB7CisJCXJldHVybiBzICsgbXlEZWNsYXJhdGlvblVzYWdlOworCX0KKworCXB1YmxpYyBzdGF0aWMgdm9pZCBzdGF0aWNDb250ZXh0KCkgeworCQlDQVNFX0lOU0VOU0lUSVZFX09SREVSLmdldENsYXNzKCk7CisJCXZhbHVlT2YoMCk7CisKKwkJamF2YS5sYW5nLlN0cmluZy5DQVNFX0lOU0VOU0lUSVZFX09SREVSLmdldENsYXNzKCk7CisJCWphdmEubGFuZy5TdHJpbmcudmFsdWVPZigwKTsKKworCQlpbnQgdmFyNiA9IHJlbmFtZUNvbGxpc2lvbnMuU3RyaW5nLlNUQVRJQ19GSUVMRDsKKwkJcmVuYW1lQ29sbGlzaW9ucy5TdHJpbmcuc3RhdGljTWV0aG9kKCk7CisKKwkJcmVuYW1lQ29sbGlzaW9ucy5TdHJpbmcgbG9jYWxDbGFzcyA9IG5ldyByZW5hbWVDb2xsaXNpb25zLlN0cmluZygpOworCQlsb2NhbENsYXNzLm15RmllbGQrKzsKKwkJbG9jYWxDbGFzcy5tZXRob2QoKTsKKwl9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lQ29sbGlzaW9ucy9SZW5hbWVDbGFzc0xvY2FsVG9BbGllbk5vSW1wb3J0cy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbmFtZUNvbGxpc2lvbnMvUmVuYW1lQ2xhc3NMb2NhbFRvQWxpZW5Ob0ltcG9ydHMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNTE5ODNlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbmFtZUNvbGxpc2lvbnMvUmVuYW1lQ2xhc3NMb2NhbFRvQWxpZW5Ob0ltcG9ydHMuamF2YQpAQCAtMCwwICsxLDIwIEBACitjbGFzcyA8Y2FyZXQ+TG9jYWxDbGFzcyB7CisJcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgU1RBVElDX0ZJRUxEID0gNTsKKwlwdWJsaWMgc3RhdGljIHZvaWQgc3RhdGljTWV0aG9kKCkgeworCX0KKwlpbnQgbXlGaWVsZDsKKwlwdWJsaWMgdm9pZCBtZXRob2QoKSB7CisJfQorfQorCitwdWJsaWMgY2xhc3MgUmVuYW1lQ29sbGlzaW9ucyB7CisJcHJpdmF0ZSBTdHJpbmcgbXlEZWNsYXJhdGlvblVzYWdlOworCXB1YmxpYyBTdHJpbmcgZGVjbGFyYXRpb25Vc2FnZShTdHJpbmcgcykgeworCQlyZXR1cm4gcyArIG15RGVjbGFyYXRpb25Vc2FnZTsKKwl9CisKKwlwdWJsaWMgc3RhdGljIHZvaWQgc3RhdGljQ29udGV4dCgpIHsKKwkJU3RyaW5nLkNBU0VfSU5TRU5TSVRJVkVfT1JERVIuZ2V0Q2xhc3MoKTsKKwkJU3RyaW5nLnZhbHVlT2YoMCk7CisJfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbmFtZUNvbGxpc2lvbnMvUmVuYW1lQ2xhc3NMb2NhbFRvQWxpZW5Ob0ltcG9ydHMuamF2YS5hZnRlciBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVDb2xsaXNpb25zL1JlbmFtZUNsYXNzTG9jYWxUb0FsaWVuTm9JbXBvcnRzLmphdmEuYWZ0ZXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzcxZjdkNwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVDb2xsaXNpb25zL1JlbmFtZUNsYXNzTG9jYWxUb0FsaWVuTm9JbXBvcnRzLmphdmEuYWZ0ZXIKQEAgLTAsMCArMSwyMCBAQAorY2xhc3MgPGNhcmV0PlN0cmluZyB7CisJcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgU1RBVElDX0ZJRUxEID0gNTsKKwlwdWJsaWMgc3RhdGljIHZvaWQgc3RhdGljTWV0aG9kKCkgeworCX0KKwlpbnQgbXlGaWVsZDsKKwlwdWJsaWMgdm9pZCBtZXRob2QoKSB7CisJfQorfQorCitwdWJsaWMgY2xhc3MgUmVuYW1lQ29sbGlzaW9ucyB7CisJcHJpdmF0ZSBqYXZhLmxhbmcuU3RyaW5nIG15RGVjbGFyYXRpb25Vc2FnZTsKKwlwdWJsaWMgamF2YS5sYW5nLlN0cmluZyBkZWNsYXJhdGlvblVzYWdlKGphdmEubGFuZy5TdHJpbmcgcykgeworCQlyZXR1cm4gcyArIG15RGVjbGFyYXRpb25Vc2FnZTsKKwl9CisKKwlwdWJsaWMgc3RhdGljIHZvaWQgc3RhdGljQ29udGV4dCgpIHsKKwkJamF2YS5sYW5nLlN0cmluZy5DQVNFX0lOU0VOU0lUSVZFX09SREVSLmdldENsYXNzKCk7CisJCWphdmEubGFuZy5TdHJpbmcudmFsdWVPZigwKTsKKwl9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lQ29sbGlzaW9ucy9SZW5hbWVDbGFzc0xvY2FsVG9Jbm5lci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbmFtZUNvbGxpc2lvbnMvUmVuYW1lQ2xhc3NMb2NhbFRvSW5uZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zOTk5ODNlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbmFtZUNvbGxpc2lvbnMvUmVuYW1lQ2xhc3NMb2NhbFRvSW5uZXIuamF2YQpAQCAtMCwwICsxLDMxIEBACitwYWNrYWdlIHJlbmFtZUNvbGxpc2lvbnM7CisKK2NsYXNzIDxjYXJldD5Mb2NhbENsYXNzIHsKKwlwdWJsaWMgc3RhdGljIGZpbmFsIGludCBTTl9TVEFUSUNfRklFTEQgPSAyOworCXB1YmxpYyBzdGF0aWMgdm9pZCBzblN0YXRpY01ldGhvZCgpIHsKKwl9Cit9CisKK3B1YmxpYyBjbGFzcyBSZW5hbWVDb2xsaXNpb25zIHsKKwlwdWJsaWMgc3RhdGljIGNsYXNzIFN0YXRpY0lubmVyQ2xhc3MgeworCQlwdWJsaWMgc3RhdGljIGZpbmFsIGludCBTTl9TVEFUSUNfRklFTEQgPSAxMDsKKwkJcHVibGljIHN0YXRpYyB2b2lkIHNuU3RhdGljTWV0aG9kKCkgeworCQl9CisJfQorCisJcHVibGljIHZvaWQgaW5zdGFuY2VDb250ZXh0KCkgeworCQlMb2NhbENsYXNzIGxvY2FsQ2xhc3MgPSBuZXcgTG9jYWxDbGFzcygpOworCQlpbnQgdmFyMSA9IExvY2FsQ2xhc3MuU05fU1RBVElDX0ZJRUxEOworCQlMb2NhbENsYXNzLnNuU3RhdGljTWV0aG9kKCk7CisKKwkJU3RhdGljSW5uZXJDbGFzcyBzdGF0aWNJbm5lckNsYXNzID0gbmV3IFN0YXRpY0lubmVyQ2xhc3MoKTsKKwkJaW50IHZhcjMgPSBTdGF0aWNJbm5lckNsYXNzLlNOX1NUQVRJQ19GSUVMRDsKKwkJU3RhdGljSW5uZXJDbGFzcy5zblN0YXRpY01ldGhvZCgpOworCX0KKworCXB1YmxpYyBzdGF0aWMgdm9pZCBzdGF0aWNDb250ZXh0KCkgeworCQlTdGF0aWNJbm5lckNsYXNzIHN0YXRpY0lubmVyQ2xhc3MgPSBuZXcgU3RhdGljSW5uZXJDbGFzcygpOworCQlpbnQgdmFyMiA9IFN0YXRpY0lubmVyQ2xhc3MuU05fU1RBVElDX0ZJRUxEOworCQlTdGF0aWNJbm5lckNsYXNzLnNuU3RhdGljTWV0aG9kKCk7CisJfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbmFtZUNvbGxpc2lvbnMvUmVuYW1lQ2xhc3NMb2NhbFRvSW5uZXIuamF2YS5hZnRlciBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVDb2xsaXNpb25zL1JlbmFtZUNsYXNzTG9jYWxUb0lubmVyLmphdmEuYWZ0ZXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMThlM2JkZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVDb2xsaXNpb25zL1JlbmFtZUNsYXNzTG9jYWxUb0lubmVyLmphdmEuYWZ0ZXIKQEAgLTAsMCArMSwzMSBAQAorcGFja2FnZSByZW5hbWVDb2xsaXNpb25zOworCitjbGFzcyBTdGF0aWNJbm5lckNsYXNzIHsKKwlwdWJsaWMgc3RhdGljIGZpbmFsIGludCBTTl9TVEFUSUNfRklFTEQgPSAyOworCXB1YmxpYyBzdGF0aWMgdm9pZCBzblN0YXRpY01ldGhvZCgpIHsKKwl9Cit9CisKK3B1YmxpYyBjbGFzcyBSZW5hbWVDb2xsaXNpb25zIHsKKwlwdWJsaWMgc3RhdGljIGNsYXNzIFN0YXRpY0lubmVyQ2xhc3MgeworCQlwdWJsaWMgc3RhdGljIGZpbmFsIGludCBTTl9TVEFUSUNfRklFTEQgPSAxMDsKKwkJcHVibGljIHN0YXRpYyB2b2lkIHNuU3RhdGljTWV0aG9kKCkgeworCQl9CisJfQorCisJcHVibGljIHZvaWQgaW5zdGFuY2VDb250ZXh0KCkgeworCQlyZW5hbWVDb2xsaXNpb25zLlN0YXRpY0lubmVyQ2xhc3MgbG9jYWxDbGFzcyA9IG5ldyByZW5hbWVDb2xsaXNpb25zLlN0YXRpY0lubmVyQ2xhc3MoKTsKKwkJaW50IHZhcjEgPSByZW5hbWVDb2xsaXNpb25zLlN0YXRpY0lubmVyQ2xhc3MuU05fU1RBVElDX0ZJRUxEOworCQlyZW5hbWVDb2xsaXNpb25zLlN0YXRpY0lubmVyQ2xhc3Muc25TdGF0aWNNZXRob2QoKTsKKworCQlyZW5hbWVDb2xsaXNpb25zLlJlbmFtZUNvbGxpc2lvbnMuU3RhdGljSW5uZXJDbGFzcyBzdGF0aWNJbm5lckNsYXNzID0gbmV3IHJlbmFtZUNvbGxpc2lvbnMuUmVuYW1lQ29sbGlzaW9ucy5TdGF0aWNJbm5lckNsYXNzKCk7CisJCWludCB2YXIzID0gcmVuYW1lQ29sbGlzaW9ucy5SZW5hbWVDb2xsaXNpb25zLlN0YXRpY0lubmVyQ2xhc3MuU05fU1RBVElDX0ZJRUxEOworCQlyZW5hbWVDb2xsaXNpb25zLlJlbmFtZUNvbGxpc2lvbnMuU3RhdGljSW5uZXJDbGFzcy5zblN0YXRpY01ldGhvZCgpOworCX0KKworCXB1YmxpYyBzdGF0aWMgdm9pZCBzdGF0aWNDb250ZXh0KCkgeworCQlyZW5hbWVDb2xsaXNpb25zLlJlbmFtZUNvbGxpc2lvbnMuU3RhdGljSW5uZXJDbGFzcyBzdGF0aWNJbm5lckNsYXNzID0gbmV3IHJlbmFtZUNvbGxpc2lvbnMuUmVuYW1lQ29sbGlzaW9ucy5TdGF0aWNJbm5lckNsYXNzKCk7CisJCWludCB2YXIyID0gcmVuYW1lQ29sbGlzaW9ucy5SZW5hbWVDb2xsaXNpb25zLlN0YXRpY0lubmVyQ2xhc3MuU05fU1RBVElDX0ZJRUxEOworCQlyZW5hbWVDb2xsaXNpb25zLlJlbmFtZUNvbGxpc2lvbnMuU3RhdGljSW5uZXJDbGFzcy5zblN0YXRpY01ldGhvZCgpOworCX0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVDb2xsaXNpb25zL1JlbmFtZUNsYXNzVGhpc0ZxblRvQWxpZW4uamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVDb2xsaXNpb25zL1JlbmFtZUNsYXNzVGhpc0ZxblRvQWxpZW4uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMzkyZmY1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbmFtZUNvbGxpc2lvbnMvUmVuYW1lQ2xhc3NUaGlzRnFuVG9BbGllbi5qYXZhCkBAIC0wLDAgKzEsMzYgQEAKK2ltcG9ydCBzdGF0aWMgamF2YS5sYW5nLlN0cmluZy5DQVNFX0lOU0VOU0lUSVZFX09SREVSOworaW1wb3J0IHN0YXRpYyBqYXZhLmxhbmcuU3RyaW5nLnZhbHVlT2Y7CisKK3B1YmxpYyBjbGFzcyBSZW5hbWVDb2xsaXNpb25zPGNhcmV0PiB7CisJcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgU1RBVElDX0ZJRUxEID0gNTsKKwlwdWJsaWMgc3RhdGljIHZvaWQgc3RhdGljTWV0aG9kKCkgeworCX0KKwlwcml2YXRlIGludCBteUZpZWxkOworCXB1YmxpYyB2b2lkIG1ldGhvZCgpIHsKKwl9CisKKwlwdWJsaWMgdm9pZCBpbnN0YW5jZUNvbnRleHQoKSB7CisJCUNBU0VfSU5TRU5TSVRJVkVfT1JERVIuZ2V0Q2xhc3MoKTsKKwkJdmFsdWVPZigwKTsKKworCQlTdHJpbmcuQ0FTRV9JTlNFTlNJVElWRV9PUkRFUi5nZXRDbGFzcygpOworCQlTdHJpbmcudmFsdWVPZigwKTsKKworCQlpbnQgdmFyNiA9IFJlbmFtZUNvbGxpc2lvbnMuU1RBVElDX0ZJRUxEOworCQlSZW5hbWVDb2xsaXNpb25zLnN0YXRpY01ldGhvZCgpOworCisJCXRoaXMubXlGaWVsZCsrOworCQl0aGlzLm1ldGhvZCgpOworCX0KKworCXB1YmxpYyBzdGF0aWMgdm9pZCBzdGF0aWNDb250ZXh0KCkgeworCQlDQVNFX0lOU0VOU0lUSVZFX09SREVSLmdldENsYXNzKCk7CisJCXZhbHVlT2YoMCk7CisKKwkJU3RyaW5nLkNBU0VfSU5TRU5TSVRJVkVfT1JERVIuZ2V0Q2xhc3MoKTsKKwkJU3RyaW5nLnZhbHVlT2YoMCk7CisKKwkJaW50IHZhcjYgPSBSZW5hbWVDb2xsaXNpb25zLlNUQVRJQ19GSUVMRDsKKwkJUmVuYW1lQ29sbGlzaW9ucy5zdGF0aWNNZXRob2QoKTsKKwl9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lQ29sbGlzaW9ucy9SZW5hbWVDbGFzc1RoaXNGcW5Ub0FsaWVuLmphdmEuYWZ0ZXIgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lQ29sbGlzaW9ucy9SZW5hbWVDbGFzc1RoaXNGcW5Ub0FsaWVuLmphdmEuYWZ0ZXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDkxM2RkNwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVDb2xsaXNpb25zL1JlbmFtZUNsYXNzVGhpc0ZxblRvQWxpZW4uamF2YS5hZnRlcgpAQCAtMCwwICsxLDM2IEBACitpbXBvcnQgc3RhdGljIGphdmEubGFuZy5TdHJpbmcuQ0FTRV9JTlNFTlNJVElWRV9PUkRFUjsKK2ltcG9ydCBzdGF0aWMgamF2YS5sYW5nLlN0cmluZy52YWx1ZU9mOworCitwdWJsaWMgY2xhc3MgU3RyaW5nPGNhcmV0PiB7CisJcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgU1RBVElDX0ZJRUxEID0gNTsKKwlwdWJsaWMgc3RhdGljIHZvaWQgc3RhdGljTWV0aG9kKCkgeworCX0KKwlwcml2YXRlIGludCBteUZpZWxkOworCXB1YmxpYyB2b2lkIG1ldGhvZCgpIHsKKwl9CisKKwlwdWJsaWMgdm9pZCBpbnN0YW5jZUNvbnRleHQoKSB7CisJCUNBU0VfSU5TRU5TSVRJVkVfT1JERVIuZ2V0Q2xhc3MoKTsKKwkJdmFsdWVPZigwKTsKKworCQlqYXZhLmxhbmcuU3RyaW5nLkNBU0VfSU5TRU5TSVRJVkVfT1JERVIuZ2V0Q2xhc3MoKTsKKwkJamF2YS5sYW5nLlN0cmluZy52YWx1ZU9mKDApOworCisJCWludCB2YXI2ID0gU3RyaW5nLlNUQVRJQ19GSUVMRDsKKwkJU3RyaW5nLnN0YXRpY01ldGhvZCgpOworCisJCXRoaXMubXlGaWVsZCsrOworCQl0aGlzLm1ldGhvZCgpOworCX0KKworCXB1YmxpYyBzdGF0aWMgdm9pZCBzdGF0aWNDb250ZXh0KCkgeworCQlDQVNFX0lOU0VOU0lUSVZFX09SREVSLmdldENsYXNzKCk7CisJCXZhbHVlT2YoMCk7CisKKwkJamF2YS5sYW5nLlN0cmluZy5DQVNFX0lOU0VOU0lUSVZFX09SREVSLmdldENsYXNzKCk7CisJCWphdmEubGFuZy5TdHJpbmcudmFsdWVPZigwKTsKKworCQlpbnQgdmFyNiA9IFN0cmluZy5TVEFUSUNfRklFTEQ7CisJCVN0cmluZy5zdGF0aWNNZXRob2QoKTsKKwl9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lQ29sbGlzaW9ucy9SZW5hbWVDbGFzc1RoaXNUb0FsaWVuLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lQ29sbGlzaW9ucy9SZW5hbWVDbGFzc1RoaXNUb0FsaWVuLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDc1N2QwYQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVDb2xsaXNpb25zL1JlbmFtZUNsYXNzVGhpc1RvQWxpZW4uamF2YQpAQCAtMCwwICsxLDQxIEBACitpbXBvcnQgc3RhdGljIGphdmEubGFuZy5TdHJpbmcuQ0FTRV9JTlNFTlNJVElWRV9PUkRFUjsKK2ltcG9ydCBzdGF0aWMgamF2YS5sYW5nLlN0cmluZy52YWx1ZU9mOworCitwdWJsaWMgY2xhc3MgUmVuYW1lQ29sbGlzaW9uczxjYXJldD4geworCXB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFNUQVRJQ19GSUVMRCA9IDU7CisJcHVibGljIHN0YXRpYyB2b2lkIHN0YXRpY01ldGhvZCgpIHsKKwl9CisJcHJpdmF0ZSBpbnQgbXlGaWVsZDsKKwlwdWJsaWMgdm9pZCBtZXRob2QoKSB7CisJfQorCisJcHJpdmF0ZSBTdHJpbmcgbXlEZWNsYXJhdGlvblVzYWdlOworCXB1YmxpYyBTdHJpbmcgZGVjbGFyYXRpb25Vc2FnZShTdHJpbmcgcykgeworCQlyZXR1cm4gcyArIG15RGVjbGFyYXRpb25Vc2FnZTsKKwl9CisKKwlwdWJsaWMgdm9pZCBpbnN0YW5jZUNvbnRleHQoKSB7CisJCUNBU0VfSU5TRU5TSVRJVkVfT1JERVIuZ2V0Q2xhc3MoKTsKKwkJdmFsdWVPZigwKTsKKworCQlTdHJpbmcuQ0FTRV9JTlNFTlNJVElWRV9PUkRFUi5nZXRDbGFzcygpOworCQlTdHJpbmcudmFsdWVPZigwKTsKKworCQlpbnQgdmFyNiA9IFNUQVRJQ19GSUVMRDsKKwkJc3RhdGljTWV0aG9kKCk7CisKKwkJbXlGaWVsZCsrOworCQltZXRob2QoKTsKKwl9CisKKwlwdWJsaWMgc3RhdGljIHZvaWQgc3RhdGljQ29udGV4dCgpIHsKKwkJQ0FTRV9JTlNFTlNJVElWRV9PUkRFUi5nZXRDbGFzcygpOworCQl2YWx1ZU9mKDApOworCisJCVN0cmluZy5DQVNFX0lOU0VOU0lUSVZFX09SREVSLmdldENsYXNzKCk7CisJCVN0cmluZy52YWx1ZU9mKDApOworCisJCWludCB2YXI2ID0gU1RBVElDX0ZJRUxEOworCQlzdGF0aWNNZXRob2QoKTsKKwl9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lQ29sbGlzaW9ucy9SZW5hbWVDbGFzc1RoaXNUb0FsaWVuLmphdmEuYWZ0ZXIgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lQ29sbGlzaW9ucy9SZW5hbWVDbGFzc1RoaXNUb0FsaWVuLmphdmEuYWZ0ZXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjkwZTU5NgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVDb2xsaXNpb25zL1JlbmFtZUNsYXNzVGhpc1RvQWxpZW4uamF2YS5hZnRlcgpAQCAtMCwwICsxLDQxIEBACitpbXBvcnQgc3RhdGljIGphdmEubGFuZy5TdHJpbmcuQ0FTRV9JTlNFTlNJVElWRV9PUkRFUjsKK2ltcG9ydCBzdGF0aWMgamF2YS5sYW5nLlN0cmluZy52YWx1ZU9mOworCitwdWJsaWMgY2xhc3MgU3RyaW5nPGNhcmV0PiB7CisJcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgU1RBVElDX0ZJRUxEID0gNTsKKwlwdWJsaWMgc3RhdGljIHZvaWQgc3RhdGljTWV0aG9kKCkgeworCX0KKwlwcml2YXRlIGludCBteUZpZWxkOworCXB1YmxpYyB2b2lkIG1ldGhvZCgpIHsKKwl9CisKKwlwcml2YXRlIGphdmEubGFuZy5TdHJpbmcgbXlEZWNsYXJhdGlvblVzYWdlOworCXB1YmxpYyBqYXZhLmxhbmcuU3RyaW5nIGRlY2xhcmF0aW9uVXNhZ2UoamF2YS5sYW5nLlN0cmluZyBzKSB7CisJCXJldHVybiBzICsgbXlEZWNsYXJhdGlvblVzYWdlOworCX0KKworCXB1YmxpYyB2b2lkIGluc3RhbmNlQ29udGV4dCgpIHsKKwkJQ0FTRV9JTlNFTlNJVElWRV9PUkRFUi5nZXRDbGFzcygpOworCQl2YWx1ZU9mKDApOworCisJCWphdmEubGFuZy5TdHJpbmcuQ0FTRV9JTlNFTlNJVElWRV9PUkRFUi5nZXRDbGFzcygpOworCQlqYXZhLmxhbmcuU3RyaW5nLnZhbHVlT2YoMCk7CisKKwkJaW50IHZhcjYgPSBTVEFUSUNfRklFTEQ7CisJCXN0YXRpY01ldGhvZCgpOworCisJCW15RmllbGQrKzsKKwkJbWV0aG9kKCk7CisJfQorCisJcHVibGljIHN0YXRpYyB2b2lkIHN0YXRpY0NvbnRleHQoKSB7CisJCUNBU0VfSU5TRU5TSVRJVkVfT1JERVIuZ2V0Q2xhc3MoKTsKKwkJdmFsdWVPZigwKTsKKworCQlqYXZhLmxhbmcuU3RyaW5nLkNBU0VfSU5TRU5TSVRJVkVfT1JERVIuZ2V0Q2xhc3MoKTsKKwkJamF2YS5sYW5nLlN0cmluZy52YWx1ZU9mKDApOworCisJCWludCB2YXI2ID0gU1RBVElDX0ZJRUxEOworCQlzdGF0aWNNZXRob2QoKTsKKwl9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lQ29sbGlzaW9ucy9SZW5hbWVGaWVsZEluU3VwZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVDb2xsaXNpb25zL1JlbmFtZUZpZWxkSW5TdXBlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJhOTk1MjMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lQ29sbGlzaW9ucy9SZW5hbWVGaWVsZEluU3VwZXIuamF2YQpAQCAtMCwwICsxLDEyIEBACitjbGFzcyBBIHsKKyAgICBib29sZWFuIF9nPGNhcmV0Pmc7Cit9CisKK2NsYXNzIEIgZXh0ZW5kcyBBIHsKKyAgICBjbGFzcyBGRiB7CisgICAgICAgIHB1YmxpYyB2b2lkIHNldEdHKGJvb2xlYW4gZ2cpIHsKKyAgICAgICAgICAgICAgICBfZ2cgPSBnZzsKKyAgICAgICAgICAgIH0KKyAgICB9CisKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lQ29sbGlzaW9ucy9SZW5hbWVGaWVsZEluU3VwZXIuamF2YS5hZnRlciBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVDb2xsaXNpb25zL1JlbmFtZUZpZWxkSW5TdXBlci5qYXZhLmFmdGVyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQzMDc5OWIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lQ29sbGlzaW9ucy9SZW5hbWVGaWVsZEluU3VwZXIuamF2YS5hZnRlcgpAQCAtMCwwICsxLDEyIEBACitjbGFzcyBBIHsKKyAgICBib29sZWFuIGdnOworfQorCitjbGFzcyBCIGV4dGVuZHMgQSB7CisgICAgY2xhc3MgRkYgeworICAgICAgICBwdWJsaWMgdm9pZCBzZXRHRyhib29sZWFuIGdnKSB7CisgICAgICAgICAgICAgICAgQi50aGlzLmdnID0gZ2c7CisgICAgICAgICAgICB9CisgICAgfQorCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbmFtZUNvbGxpc2lvbnMvUmVuYW1lSW5uZXJJblN1cGVyQ2xhc3MuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVDb2xsaXNpb25zL1JlbmFtZUlubmVySW5TdXBlckNsYXNzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTIyY2Y2NmEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lQ29sbGlzaW9ucy9SZW5hbWVJbm5lckluU3VwZXJDbGFzcy5qYXZhCkBAIC0wLDAgKzEsMTkgQEAKK2NsYXNzIEEgeworICBjbGFzcyA8Y2FyZXQ+QiB7CisgICAgaW50IHggPSA0MjsKKyAgfQorfQorCitwdWJsaWMgY2xhc3MgRCB7CisgIHN0YXRpYyBjbGFzcyBDIGV4dGVuZHMgQSB7CisgICAgaW50IHggPSAyMzsKKworICAgIGludCBtKCkgeworICAgICAgcmV0dXJuIEMudGhpcy54OworICAgIH0KKyAgfQorCisgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKKyAgICBTeXN0ZW0ub3V0LnByaW50bG4obmV3IEMoKS5tKCkpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbmFtZUNvbGxpc2lvbnMvUmVuYW1lSW5uZXJJblN1cGVyQ2xhc3MuamF2YS5hZnRlciBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVDb2xsaXNpb25zL1JlbmFtZUlubmVySW5TdXBlckNsYXNzLmphdmEuYWZ0ZXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzIxNjcxYQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVDb2xsaXNpb25zL1JlbmFtZUlubmVySW5TdXBlckNsYXNzLmphdmEuYWZ0ZXIKQEAgLTAsMCArMSwxOSBAQAorY2xhc3MgQSB7CisgIGNsYXNzIEMgeworICAgIGludCB4ID0gNDI7CisgIH0KK30KKworcHVibGljIGNsYXNzIEQgeworICBzdGF0aWMgY2xhc3MgQyBleHRlbmRzIEEgeworICAgIGludCB4ID0gMjM7CisKKyAgICBpbnQgbSgpIHsKKyAgICAgIHJldHVybiBELkMudGhpcy54OworICAgIH0KKyAgfQorCisgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKKyAgICBTeXN0ZW0ub3V0LnByaW50bG4obmV3IEMoKS5tKCkpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbmFtZUNvbGxpc2lvbnMvUmVuYW1lSW5uZXJJblN1cGVyQ2xhc3NTdGF0aWMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVDb2xsaXNpb25zL1JlbmFtZUlubmVySW5TdXBlckNsYXNzU3RhdGljLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWI1ZDcyOQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVDb2xsaXNpb25zL1JlbmFtZUlubmVySW5TdXBlckNsYXNzU3RhdGljLmphdmEKQEAgLTAsMCArMSwxOSBAQAorY2xhc3MgQSB7CisgIHN0YXRpYyBjbGFzcyA8Y2FyZXQ+QiB7CisgICAgc3RhdGljIGludCB4ID0gNDI7CisgIH0KK30KKworcHVibGljIGNsYXNzIEQgeworICBzdGF0aWMgY2xhc3MgQyBleHRlbmRzIEEgeworICAgIHN0YXRpYyBpbnQgeCA9IDIzOworCisgICAgc3RhdGljIGludCBtKCkgeworICAgICAgcmV0dXJuIEMueDsKKyAgICB9CisgIH0KKworICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CisgICAgU3lzdGVtLm91dC5wcmludGxuKEMubSgpKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVDb2xsaXNpb25zL1JlbmFtZUlubmVySW5TdXBlckNsYXNzU3RhdGljLmphdmEuYWZ0ZXIgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lQ29sbGlzaW9ucy9SZW5hbWVJbm5lckluU3VwZXJDbGFzc1N0YXRpYy5qYXZhLmFmdGVyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcwMTk5N2IKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lQ29sbGlzaW9ucy9SZW5hbWVJbm5lckluU3VwZXJDbGFzc1N0YXRpYy5qYXZhLmFmdGVyCkBAIC0wLDAgKzEsMTkgQEAKK2NsYXNzIEEgeworICBzdGF0aWMgY2xhc3MgQyB7CisgICAgc3RhdGljIGludCB4ID0gNDI7CisgIH0KK30KKworcHVibGljIGNsYXNzIEQgeworICBzdGF0aWMgY2xhc3MgQyBleHRlbmRzIEEgeworICAgIHN0YXRpYyBpbnQgeCA9IDIzOworCisgICAgc3RhdGljIGludCBtKCkgeworICAgICAgcmV0dXJuIEQuQy54OworICAgIH0KKyAgfQorCisgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKKyAgICBTeXN0ZW0ub3V0LnByaW50bG4oRC5DLm0oKSk7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lQ29sbGlzaW9ucy9SZW5hbWVMb2NhbFZhcmlhYmxlSGlkZXNGaWVsZEluQW5vbnltb3VzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lQ29sbGlzaW9ucy9SZW5hbWVMb2NhbFZhcmlhYmxlSGlkZXNGaWVsZEluQW5vbnltb3VzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZThkMTdjMjkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lQ29sbGlzaW9ucy9SZW5hbWVMb2NhbFZhcmlhYmxlSGlkZXNGaWVsZEluQW5vbnltb3VzLmphdmEKQEAgLTAsMCArMSwxNiBAQAorcHVibGljIGNsYXNzIEEgeworICBUaHJlYWQgbSgpIHsKKyAgICBmaW5hbCBpbnQgeDxjYXJldD4gPSA0MjsKKyAgICByZXR1cm4gbmV3IFRocmVhZCgpIHsKKyAgICAgIGludCB5ID0gMjM7CisKKyAgICAgIHB1YmxpYyB2b2lkIHJ1bigpIHsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKHgpOworICAgICAgfQorICAgIH07CisgIH0KKworICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CisgICAgbmV3IEEoKS5tKCkuc3RhcnQoKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVDb2xsaXNpb25zL1JlbmFtZU1ldGhvZENvbGxpc2lvbldpdGhPdGhlclNpZ25hdHVyZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbmFtZUNvbGxpc2lvbnMvUmVuYW1lTWV0aG9kQ29sbGlzaW9uV2l0aE90aGVyU2lnbmF0dXJlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjYyNzNjYwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVDb2xsaXNpb25zL1JlbmFtZU1ldGhvZENvbGxpc2lvbldpdGhPdGhlclNpZ25hdHVyZS5qYXZhCkBAIC0wLDAgKzEsMTIgQEAKK2NsYXNzIFJlbmFtZVRlc3QgeworICAgIHN0YXRpYyB2b2lkIGZvPGNhcmV0Pm8xKE51bWJlciBuKSB7CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiMSIpOworICAgIH0KKyAgICBzdGF0aWMgdm9pZCBmb28yKExvbmcgaSkgeworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIjIiKTsKKyAgICB9CisgICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgeworICAgICAgICBsb25nIG4gPSAwOworICAgICAgICBmb28xKG4pOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lQ29sbGlzaW9ucy9SZW5hbWVNZXRob2RJbmRpSW5zdGFuY2VzSW5uZXJUb091dGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lQ29sbGlzaW9ucy9SZW5hbWVNZXRob2RJbmRpSW5zdGFuY2VzSW5uZXJUb091dGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDM5NDdhYQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVDb2xsaXNpb25zL1JlbmFtZU1ldGhvZEluZGlJbnN0YW5jZXNJbm5lclRvT3V0ZXIuamF2YQpAQCAtMCwwICsxLDE2IEBACitwdWJsaWMgY2xhc3MgUmVuYW1lQ29sbGlzaW9ucyB7CisgICAgcHVibGljIHZvaWQgbWV0aG9kKCkgeworICAgIH0KKworICAgIHB1YmxpYyBzdGF0aWMgY2xhc3MgU3RhdGljSW5uZXJDbGFzcyB7CisgICAgICAgIHB1YmxpYyB2b2lkIDxjYXJldD5zaU1ldGhvZCgpIHsKKyAgICAgICAgfQorICAgICAgICBwdWJsaWMgdm9pZCBpbnN0YW5jZUNvbnRleHQoKSB7CisgICAgICAgICAgICBzaU1ldGhvZCgpOworICAgICAgICB9CisgICAgfQorCisgICAgcHVibGljIHZvaWQgaW5zdGFuY2VDb250ZXh0KCkgeworICAgICAgICBtZXRob2QoKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lQ29sbGlzaW9ucy9SZW5hbWVNZXRob2RJbmRpSW5zdGFuY2VzSW5uZXJUb091dGVyLmphdmEuYWZ0ZXIgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lQ29sbGlzaW9ucy9SZW5hbWVNZXRob2RJbmRpSW5zdGFuY2VzSW5uZXJUb091dGVyLmphdmEuYWZ0ZXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmFkYTlkNWYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lQ29sbGlzaW9ucy9SZW5hbWVNZXRob2RJbmRpSW5zdGFuY2VzSW5uZXJUb091dGVyLmphdmEuYWZ0ZXIKQEAgLTAsMCArMSwxNiBAQAorcHVibGljIGNsYXNzIFJlbmFtZUNvbGxpc2lvbnMgeworICAgIHB1YmxpYyB2b2lkIG1ldGhvZCgpIHsKKyAgICB9CisKKyAgICBwdWJsaWMgc3RhdGljIGNsYXNzIFN0YXRpY0lubmVyQ2xhc3MgeworICAgICAgICBwdWJsaWMgdm9pZCA8Y2FyZXQ+bWV0aG9kKCkgeworICAgICAgICB9CisgICAgICAgIHB1YmxpYyB2b2lkIGluc3RhbmNlQ29udGV4dCgpIHsKKyAgICAgICAgICAgIG1ldGhvZCgpOworICAgICAgICB9CisgICAgfQorCisgICAgcHVibGljIHZvaWQgaW5zdGFuY2VDb250ZXh0KCkgeworICAgICAgICBtZXRob2QoKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lQ29sbGlzaW9ucy9SZW5hbWVNZXRob2RJbmRpSW5zdGFuY2VzT3V0ZXJUb0lubmVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lQ29sbGlzaW9ucy9SZW5hbWVNZXRob2RJbmRpSW5zdGFuY2VzT3V0ZXJUb0lubmVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTgxM2JkOQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVDb2xsaXNpb25zL1JlbmFtZU1ldGhvZEluZGlJbnN0YW5jZXNPdXRlclRvSW5uZXIuamF2YQpAQCAtMCwwICsxLDE2IEBACitwdWJsaWMgY2xhc3MgUmVuYW1lQ29sbGlzaW9ucyB7CisgICAgcHVibGljIHZvaWQgPGNhcmV0Pm1ldGhvZCgpIHsKKyAgICB9CisKKyAgICBwdWJsaWMgc3RhdGljIGNsYXNzIFN0YXRpY0lubmVyQ2xhc3MgeworICAgICAgICBwdWJsaWMgdm9pZCBzaU1ldGhvZCgpIHsKKyAgICAgICAgfQorICAgICAgICBwdWJsaWMgdm9pZCBpbnN0YW5jZUNvbnRleHQoKSB7CisgICAgICAgICAgICBzaU1ldGhvZCgpOworICAgICAgICB9CisgICAgfQorCisgICAgcHVibGljIHZvaWQgaW5zdGFuY2VDb250ZXh0KCkgeworICAgICAgICBtZXRob2QoKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lQ29sbGlzaW9ucy9SZW5hbWVNZXRob2RJbmRpSW5zdGFuY2VzT3V0ZXJUb0lubmVyLmphdmEuYWZ0ZXIgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lQ29sbGlzaW9ucy9SZW5hbWVNZXRob2RJbmRpSW5zdGFuY2VzT3V0ZXJUb0lubmVyLmphdmEuYWZ0ZXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTdmNjFiYzMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lQ29sbGlzaW9ucy9SZW5hbWVNZXRob2RJbmRpSW5zdGFuY2VzT3V0ZXJUb0lubmVyLmphdmEuYWZ0ZXIKQEAgLTAsMCArMSwxNiBAQAorcHVibGljIGNsYXNzIFJlbmFtZUNvbGxpc2lvbnMgeworICAgIHB1YmxpYyB2b2lkIDxjYXJldD5zaU1ldGhvZCgpIHsKKyAgICB9CisKKyAgICBwdWJsaWMgc3RhdGljIGNsYXNzIFN0YXRpY0lubmVyQ2xhc3MgeworICAgICAgICBwdWJsaWMgdm9pZCBzaU1ldGhvZCgpIHsKKyAgICAgICAgfQorICAgICAgICBwdWJsaWMgdm9pZCBpbnN0YW5jZUNvbnRleHQoKSB7CisgICAgICAgICAgICBzaU1ldGhvZCgpOworICAgICAgICB9CisgICAgfQorCisgICAgcHVibGljIHZvaWQgaW5zdGFuY2VDb250ZXh0KCkgeworICAgICAgICBzaU1ldGhvZCgpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVDb2xsaXNpb25zL1JlbmFtZU1ldGhvZElubmVySW5zdGFuY2VUb091dGVySW5zdGFuY2UuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVDb2xsaXNpb25zL1JlbmFtZU1ldGhvZElubmVySW5zdGFuY2VUb091dGVySW5zdGFuY2UuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mOTkzYzYxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbmFtZUNvbGxpc2lvbnMvUmVuYW1lTWV0aG9kSW5uZXJJbnN0YW5jZVRvT3V0ZXJJbnN0YW5jZS5qYXZhCkBAIC0wLDAgKzEsMTIgQEAKK3B1YmxpYyBjbGFzcyBSZW5hbWVDb2xsaXNpb25zIHsKKyAgICBwdWJsaWMgdm9pZCBtZXRob2QoKSB7CisgICAgfQorICAgIGNsYXNzIElubmVyQ2xhc3MgeworICAgICAgICBwdWJsaWMgdm9pZCA8Y2FyZXQ+aW5uZXJNZXRob2QoKSB7CisgICAgICAgIH0KKyAgICAgICAgcHVibGljIHZvaWQgaW5zdGFuY2VDb250ZXh0KCkgeworICAgICAgICAgICAgbWV0aG9kKCk7CisgICAgICAgICAgICBpbm5lck1ldGhvZCgpOworICAgICAgICB9CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbmFtZUNvbGxpc2lvbnMvUmVuYW1lTWV0aG9kSW5uZXJJbnN0YW5jZVRvT3V0ZXJJbnN0YW5jZS5qYXZhLmFmdGVyIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbmFtZUNvbGxpc2lvbnMvUmVuYW1lTWV0aG9kSW5uZXJJbnN0YW5jZVRvT3V0ZXJJbnN0YW5jZS5qYXZhLmFmdGVyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYxNDFjY2IKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lQ29sbGlzaW9ucy9SZW5hbWVNZXRob2RJbm5lckluc3RhbmNlVG9PdXRlckluc3RhbmNlLmphdmEuYWZ0ZXIKQEAgLTAsMCArMSwxMiBAQAorcHVibGljIGNsYXNzIFJlbmFtZUNvbGxpc2lvbnMgeworICAgIHB1YmxpYyB2b2lkIG1ldGhvZCgpIHsKKyAgICB9CisgICAgY2xhc3MgSW5uZXJDbGFzcyB7CisgICAgICAgIHB1YmxpYyB2b2lkIDxjYXJldD5tZXRob2QoKSB7CisgICAgICAgIH0KKyAgICAgICAgcHVibGljIHZvaWQgaW5zdGFuY2VDb250ZXh0KCkgeworICAgICAgICAgICAgUmVuYW1lQ29sbGlzaW9ucy50aGlzLm1ldGhvZCgpOworICAgICAgICAgICAgbWV0aG9kKCk7CisgICAgICAgIH0KKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lQ29sbGlzaW9ucy9SZW5hbWVNZXRob2RJbm5lclN0YXRpY1RvT3V0ZXJTdGF0aWMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVDb2xsaXNpb25zL1JlbmFtZU1ldGhvZElubmVyU3RhdGljVG9PdXRlclN0YXRpYy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIwZWYwNzQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lQ29sbGlzaW9ucy9SZW5hbWVNZXRob2RJbm5lclN0YXRpY1RvT3V0ZXJTdGF0aWMuamF2YQpAQCAtMCwwICsxLDE2IEBACitwdWJsaWMgY2xhc3MgUmVuYW1lQ29sbGlzaW9ucyB7CisgICAgcHVibGljIHN0YXRpYyB2b2lkIHN0YXRpY01ldGhvZCgpIHsKKyAgICB9CisgICAgcHVibGljIHN0YXRpYyBjbGFzcyBTdGF0aWNJbm5lckNsYXNzIHsKKyAgICAgICAgcHVibGljIHN0YXRpYyB2b2lkIHNpU3RhdGljTWV0aG9kPGNhcmV0PigpIHsKKyAgICAgICAgfQorICAgICAgICBwdWJsaWMgdm9pZCBpbnN0YW5jZUNvbnRleHQoKSB7CisgICAgICAgICAgICBzdGF0aWNNZXRob2QoKTsKKyAgICAgICAgICAgIHNpU3RhdGljTWV0aG9kKCk7CisgICAgICAgIH0KKyAgICAgICAgcHVibGljIHN0YXRpYyB2b2lkIHN0YXRpY0NvbnRleHQoKSB7CisgICAgICAgICAgICBzdGF0aWNNZXRob2QoKTsKKyAgICAgICAgICAgIHNpU3RhdGljTWV0aG9kKCk7CisgICAgICAgIH0KKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lQ29sbGlzaW9ucy9SZW5hbWVNZXRob2RJbm5lclN0YXRpY1RvT3V0ZXJTdGF0aWMuamF2YS5hZnRlciBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVDb2xsaXNpb25zL1JlbmFtZU1ldGhvZElubmVyU3RhdGljVG9PdXRlclN0YXRpYy5qYXZhLmFmdGVyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRjNDkxYmIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lQ29sbGlzaW9ucy9SZW5hbWVNZXRob2RJbm5lclN0YXRpY1RvT3V0ZXJTdGF0aWMuamF2YS5hZnRlcgpAQCAtMCwwICsxLDE2IEBACitwdWJsaWMgY2xhc3MgUmVuYW1lQ29sbGlzaW9ucyB7CisgICAgcHVibGljIHN0YXRpYyB2b2lkIHN0YXRpY01ldGhvZCgpIHsKKyAgICB9CisgICAgcHVibGljIHN0YXRpYyBjbGFzcyBTdGF0aWNJbm5lckNsYXNzIHsKKyAgICAgICAgcHVibGljIHN0YXRpYyB2b2lkIHN0YXRpY01ldGhvZDxjYXJldD4oKSB7CisgICAgICAgIH0KKyAgICAgICAgcHVibGljIHZvaWQgaW5zdGFuY2VDb250ZXh0KCkgeworICAgICAgICAgICAgUmVuYW1lQ29sbGlzaW9ucy5zdGF0aWNNZXRob2QoKTsKKyAgICAgICAgICAgIHN0YXRpY01ldGhvZCgpOworICAgICAgICB9CisgICAgICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBzdGF0aWNDb250ZXh0KCkgeworICAgICAgICAgICAgUmVuYW1lQ29sbGlzaW9ucy5zdGF0aWNNZXRob2QoKTsKKyAgICAgICAgICAgIHN0YXRpY01ldGhvZCgpOworICAgICAgICB9CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbmFtZUNvbGxpc2lvbnMvUmVuYW1lTWV0aG9kTm9Db2xsaXNpb25XaXRoT3RoZXJTaWduYXR1cmUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVDb2xsaXNpb25zL1JlbmFtZU1ldGhvZE5vQ29sbGlzaW9uV2l0aE90aGVyU2lnbmF0dXJlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjYxODYxYQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVDb2xsaXNpb25zL1JlbmFtZU1ldGhvZE5vQ29sbGlzaW9uV2l0aE90aGVyU2lnbmF0dXJlLmphdmEKQEAgLTAsMCArMSwyNyBAQAorLyoKKyAqIENvcHlyaWdodCAyMDAwLTIwMTIgSmV0QnJhaW5zIHMuci5vLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK2NsYXNzIFJlbmFtZVRlc3QgeworICAgIHN0YXRpYyB2b2lkIGZvPGNhcmV0Pm8xKE51bWJlciBuKSB7CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiMSIpOworICAgIH0KKyAgICBzdGF0aWMgdm9pZCBmb28yKFN0cmluZyBpKSB7CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiMiIpOworICAgIH0KKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CisgICAgICAgIGxvbmcgbiA9IDA7CisgICAgICAgIGZvbzEobik7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVDb2xsaXNpb25zL1JlbmFtZU1ldGhvZE5vQ29sbGlzaW9uV2l0aE90aGVyU2lnbmF0dXJlLmphdmEuYWZ0ZXIgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lQ29sbGlzaW9ucy9SZW5hbWVNZXRob2ROb0NvbGxpc2lvbldpdGhPdGhlclNpZ25hdHVyZS5qYXZhLmFmdGVyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY1N2Q0MmEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lQ29sbGlzaW9ucy9SZW5hbWVNZXRob2ROb0NvbGxpc2lvbldpdGhPdGhlclNpZ25hdHVyZS5qYXZhLmFmdGVyCkBAIC0wLDAgKzEsMjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwMC0yMDEyIEpldEJyYWlucyBzLnIuby4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitjbGFzcyBSZW5hbWVUZXN0IHsKKyAgICBzdGF0aWMgdm9pZCBmb28yKE51bWJlciBuKSB7CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiMSIpOworICAgIH0KKyAgICBzdGF0aWMgdm9pZCBmb28yKFN0cmluZyBpKSB7CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiMiIpOworICAgIH0KKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CisgICAgICAgIGxvbmcgbiA9IDA7CisgICAgICAgIGZvbzIobik7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVDb2xsaXNpb25zL1JlbmFtZU1ldGhvZE91dGVySW5zdGFuY2VUb0lubmVySW5zdGFuY2UuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVDb2xsaXNpb25zL1JlbmFtZU1ldGhvZE91dGVySW5zdGFuY2VUb0lubmVySW5zdGFuY2UuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MmEyMTM2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbmFtZUNvbGxpc2lvbnMvUmVuYW1lTWV0aG9kT3V0ZXJJbnN0YW5jZVRvSW5uZXJJbnN0YW5jZS5qYXZhCkBAIC0wLDAgKzEsMTIgQEAKK3B1YmxpYyBjbGFzcyBSZW5hbWVDb2xsaXNpb25zIHsKKyAgICBwdWJsaWMgdm9pZCA8Y2FyZXQ+bWV0aG9kKCkgeworICAgIH0KKyAgICBjbGFzcyBJbm5lckNsYXNzIHsKKyAgICAgICAgcHVibGljIHZvaWQgaW5uZXJNZXRob2QoKSB7CisgICAgICAgIH0KKyAgICAgICAgcHVibGljIHZvaWQgaW5zdGFuY2VDb250ZXh0KCkgeworICAgICAgICAgICAgbWV0aG9kKCk7CisgICAgICAgICAgICBpbm5lck1ldGhvZCgpOworICAgICAgICB9CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbmFtZUNvbGxpc2lvbnMvUmVuYW1lTWV0aG9kT3V0ZXJJbnN0YW5jZVRvSW5uZXJJbnN0YW5jZS5qYXZhLmFmdGVyIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbmFtZUNvbGxpc2lvbnMvUmVuYW1lTWV0aG9kT3V0ZXJJbnN0YW5jZVRvSW5uZXJJbnN0YW5jZS5qYXZhLmFmdGVyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE3MDQzNDgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lQ29sbGlzaW9ucy9SZW5hbWVNZXRob2RPdXRlckluc3RhbmNlVG9Jbm5lckluc3RhbmNlLmphdmEuYWZ0ZXIKQEAgLTAsMCArMSwxMiBAQAorcHVibGljIGNsYXNzIFJlbmFtZUNvbGxpc2lvbnMgeworICAgIHB1YmxpYyB2b2lkIDxjYXJldD5pbm5lck1ldGhvZCgpIHsKKyAgICB9CisgICAgY2xhc3MgSW5uZXJDbGFzcyB7CisgICAgICAgIHB1YmxpYyB2b2lkIGlubmVyTWV0aG9kKCkgeworICAgICAgICB9CisgICAgICAgIHB1YmxpYyB2b2lkIGluc3RhbmNlQ29udGV4dCgpIHsKKyAgICAgICAgICAgIFJlbmFtZUNvbGxpc2lvbnMudGhpcy5pbm5lck1ldGhvZCgpOworICAgICAgICAgICAgaW5uZXJNZXRob2QoKTsKKyAgICAgICAgfQorICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVDb2xsaXNpb25zL1JlbmFtZU1ldGhvZE91dGVyU3RhdGljVG9Jbm5lclN0YXRpYy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbmFtZUNvbGxpc2lvbnMvUmVuYW1lTWV0aG9kT3V0ZXJTdGF0aWNUb0lubmVyU3RhdGljLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWZkYTE5ZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVDb2xsaXNpb25zL1JlbmFtZU1ldGhvZE91dGVyU3RhdGljVG9Jbm5lclN0YXRpYy5qYXZhCkBAIC0wLDAgKzEsMTcgQEAKK3B1YmxpYyBjbGFzcyBSZW5hbWVDb2xsaXNpb25zIHsKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgc3RhdGljTWV0aG9kPGNhcmV0PigpIHsKKyAgICB9CisKKyAgICBwdWJsaWMgc3RhdGljIGNsYXNzIFN0YXRpY0lubmVyQ2xhc3MgeworICAgICAgICBwdWJsaWMgc3RhdGljIHZvaWQgc2lTdGF0aWNNZXRob2QoKSB7CisgICAgICAgIH0KKyAgICAgICAgcHVibGljIHZvaWQgaW5zdGFuY2VDb250ZXh0KCkgeworICAgICAgICAgICAgc3RhdGljTWV0aG9kKCk7CisgICAgICAgICAgICBzaVN0YXRpY01ldGhvZCgpOworICAgICAgICB9CisgICAgICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBzdGF0aWNDb250ZXh0KCkgeworICAgICAgICAgICAgc3RhdGljTWV0aG9kKCk7CisgICAgICAgICAgICBzaVN0YXRpY01ldGhvZCgpOworICAgICAgICB9CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbmFtZUNvbGxpc2lvbnMvUmVuYW1lTWV0aG9kT3V0ZXJTdGF0aWNUb0lubmVyU3RhdGljLmphdmEuYWZ0ZXIgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lQ29sbGlzaW9ucy9SZW5hbWVNZXRob2RPdXRlclN0YXRpY1RvSW5uZXJTdGF0aWMuamF2YS5hZnRlcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZGE4MTE2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbmFtZUNvbGxpc2lvbnMvUmVuYW1lTWV0aG9kT3V0ZXJTdGF0aWNUb0lubmVyU3RhdGljLmphdmEuYWZ0ZXIKQEAgLTAsMCArMSwxNyBAQAorcHVibGljIGNsYXNzIFJlbmFtZUNvbGxpc2lvbnMgeworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBzaVN0YXRpY01ldGhvZDxjYXJldD4oKSB7CisgICAgfQorCisgICAgcHVibGljIHN0YXRpYyBjbGFzcyBTdGF0aWNJbm5lckNsYXNzIHsKKyAgICAgICAgcHVibGljIHN0YXRpYyB2b2lkIHNpU3RhdGljTWV0aG9kKCkgeworICAgICAgICB9CisgICAgICAgIHB1YmxpYyB2b2lkIGluc3RhbmNlQ29udGV4dCgpIHsKKyAgICAgICAgICAgIFJlbmFtZUNvbGxpc2lvbnMuc2lTdGF0aWNNZXRob2QoKTsKKyAgICAgICAgICAgIHNpU3RhdGljTWV0aG9kKCk7CisgICAgICAgIH0KKyAgICAgICAgcHVibGljIHN0YXRpYyB2b2lkIHN0YXRpY0NvbnRleHQoKSB7CisgICAgICAgICAgICBSZW5hbWVDb2xsaXNpb25zLnNpU3RhdGljTWV0aG9kKCk7CisgICAgICAgICAgICBzaVN0YXRpY01ldGhvZCgpOworICAgICAgICB9CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbmFtZUNvbGxpc2lvbnMvUmVuYW1lTWV0aG9kU3RhdGljVG9BbGllbi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbmFtZUNvbGxpc2lvbnMvUmVuYW1lTWV0aG9kU3RhdGljVG9BbGllbi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVjMjBlNTIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lQ29sbGlzaW9ucy9SZW5hbWVNZXRob2RTdGF0aWNUb0FsaWVuLmphdmEKQEAgLTAsMCArMSwxMCBAQAoraW1wb3J0IHN0YXRpYyBqYXZhLmxhbmcuU3RyaW5nLnZhbHVlT2Y7CisKK3B1YmxpYyBjbGFzcyBSZW5hbWVDb2xsaXNpb25zIHsKKyAgICBwdWJsaWMgc3RhdGljIGNsYXNzIFN0YXRpY0lubmVyQ2xhc3MgeworICAgICAgICBwdWJsaWMgc3RhdGljIHZvaWQgc2lNZXRob2Q8Y2FyZXQ+KCkge30KKyAgICAgICAgcHVibGljIHN0YXRpYyB2b2lkIHN0YXRpY0NvbnRleHQoKSB7CisgICAgICAgICAgICB2YWx1ZU9mKDApOworICAgICAgICB9CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbmFtZUNvbGxpc2lvbnMvUmVuYW1lTWV0aG9kU3RhdGljVG9BbGllbi5qYXZhLmFmdGVyIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbmFtZUNvbGxpc2lvbnMvUmVuYW1lTWV0aG9kU3RhdGljVG9BbGllbi5qYXZhLmFmdGVyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMxNWEwNzAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lQ29sbGlzaW9ucy9SZW5hbWVNZXRob2RTdGF0aWNUb0FsaWVuLmphdmEuYWZ0ZXIKQEAgLTAsMCArMSwxMCBAQAoraW1wb3J0IHN0YXRpYyBqYXZhLmxhbmcuU3RyaW5nLnZhbHVlT2Y7CisKK3B1YmxpYyBjbGFzcyBSZW5hbWVDb2xsaXNpb25zIHsKKyAgICBwdWJsaWMgc3RhdGljIGNsYXNzIFN0YXRpY0lubmVyQ2xhc3MgeworICAgICAgICBwdWJsaWMgc3RhdGljIHZvaWQgdmFsdWVPZjxjYXJldD4oKSB7fQorICAgICAgICBwdWJsaWMgc3RhdGljIHZvaWQgc3RhdGljQ29udGV4dCgpIHsKKyAgICAgICAgICAgIFN0cmluZy52YWx1ZU9mKDApOworICAgICAgICB9CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbmFtZUNvbGxpc2lvbnMvUmVuYW1lU3RhdGljTWV0aG9kVHlwZVBhcmFtZXRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbmFtZUNvbGxpc2lvbnMvUmVuYW1lU3RhdGljTWV0aG9kVHlwZVBhcmFtZXRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY0ZjRjMjEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lQ29sbGlzaW9ucy9SZW5hbWVTdGF0aWNNZXRob2RUeXBlUGFyYW1ldGVyLmphdmEKQEAgLTAsMCArMSw3IEBACitwdWJsaWMgY2xhc3MgSG9sZGVyPEU+IHsKKyAgcHJpdmF0ZSBmaW5hbCBFIGVsZW07CisKKyAgcHJpdmF0ZSBIb2xkZXIoRSBlbGVtKSB7IHRoaXMuZWxlbSA9IGVsZW07IH0KKworICBwdWJsaWMgc3RhdGljIDw8Y2FyZXQ+WD4gSG9sZGVyPFg+IG9mKFggZWxlbSkgeyByZXR1cm4gbmV3IEhvbGRlcjxYPihlbGVtKTsgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVDb2xsaXNpb25zL1JlbmFtZVN0YXRpY01ldGhvZFR5cGVQYXJhbWV0ZXIuamF2YS5hZnRlciBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVDb2xsaXNpb25zL1JlbmFtZVN0YXRpY01ldGhvZFR5cGVQYXJhbWV0ZXIuamF2YS5hZnRlcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMGI0ZjgxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbmFtZUNvbGxpc2lvbnMvUmVuYW1lU3RhdGljTWV0aG9kVHlwZVBhcmFtZXRlci5qYXZhLmFmdGVyCkBAIC0wLDAgKzEsNyBAQAorcHVibGljIGNsYXNzIEhvbGRlcjxFPiB7CisgIHByaXZhdGUgZmluYWwgRSBlbGVtOworCisgIHByaXZhdGUgSG9sZGVyKEUgZWxlbSkgeyB0aGlzLmVsZW0gPSBlbGVtOyB9CisKKyAgcHVibGljIHN0YXRpYyA8RT4gSG9sZGVyPEU+IG9mKEUgZWxlbSkgeyByZXR1cm4gbmV3IEhvbGRlcjxFPihlbGVtKTsgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVDb2xsaXNpb25zL1JlbmFtZVR5cGVQYXJhbWV0ZXJUb0V4aXN0aW5nQ2xhc3NOYW1lLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lQ29sbGlzaW9ucy9SZW5hbWVUeXBlUGFyYW1ldGVyVG9FeGlzdGluZ0NsYXNzTmFtZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJiYzhmMjAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lQ29sbGlzaW9ucy9SZW5hbWVUeXBlUGFyYW1ldGVyVG9FeGlzdGluZ0NsYXNzTmFtZS5qYXZhCkBAIC0wLDAgKzEsMyBAQAorcHVibGljIGNsYXNzIFRlc3Q8VDxjYXJldD4gZXh0ZW5kcyBTdHJpbmc+IHt9CisKK2NsYXNzIFAge30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lQ29sbGlzaW9ucy9SZW5hbWVUeXBlUGFyYW1ldGVyVG9FeGlzdGluZ0NsYXNzTmFtZS5qYXZhLmFmdGVyIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbmFtZUNvbGxpc2lvbnMvUmVuYW1lVHlwZVBhcmFtZXRlclRvRXhpc3RpbmdDbGFzc05hbWUuamF2YS5hZnRlcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNGY5YWIwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbmFtZUNvbGxpc2lvbnMvUmVuYW1lVHlwZVBhcmFtZXRlclRvRXhpc3RpbmdDbGFzc05hbWUuamF2YS5hZnRlcgpAQCAtMCwwICsxLDMgQEAKK3B1YmxpYyBjbGFzcyBUZXN0PFAgZXh0ZW5kcyBTdHJpbmc+IHt9CisKK2NsYXNzIFAge30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lQ29sbGlzaW9ucy9SZW5hbWVWYXJDb25zdFRvQWxpZW4uamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVDb2xsaXNpb25zL1JlbmFtZVZhckNvbnN0VG9BbGllbi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVhY2MwYmEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lQ29sbGlzaW9ucy9SZW5hbWVWYXJDb25zdFRvQWxpZW4uamF2YQpAQCAtMCwwICsxLDEwIEBACitpbXBvcnQgc3RhdGljIGphdmEubGFuZy5TdHJpbmcuQ0FTRV9JTlNFTlNJVElWRV9PUkRFUjsKKworcHVibGljIGNsYXNzIFJlbmFtZUNvbGxpc2lvbnMgeworICAgIHB1YmxpYyBzdGF0aWMgY2xhc3MgU3RhdGljSW5uZXJDbGFzcyB7CisgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFNJX1NUQVRJQ19GSUVMRDxjYXJldD4gPSA5OworICAgICAgICBwdWJsaWMgc3RhdGljIHZvaWQgc3RhdGljQ29udGV4dCgpIHsKKyAgICAgICAgICAgIENBU0VfSU5TRU5TSVRJVkVfT1JERVIuZ2V0Q2xhc3MoKTsKKyAgICAgICAgfQorICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVDb2xsaXNpb25zL1JlbmFtZVZhckNvbnN0VG9BbGllbi5qYXZhLmFmdGVyIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbmFtZUNvbGxpc2lvbnMvUmVuYW1lVmFyQ29uc3RUb0FsaWVuLmphdmEuYWZ0ZXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTY5MTcwMQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVDb2xsaXNpb25zL1JlbmFtZVZhckNvbnN0VG9BbGllbi5qYXZhLmFmdGVyCkBAIC0wLDAgKzEsOCBAQAorcHVibGljIGNsYXNzIFJlbmFtZUNvbGxpc2lvbnMgeworICAgIHB1YmxpYyBzdGF0aWMgY2xhc3MgU3RhdGljSW5uZXJDbGFzcyB7CisgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IENBU0VfSU5TRU5TSVRJVkVfT1JERVI8Y2FyZXQ+ID0gOTsKKyAgICAgICAgcHVibGljIHN0YXRpYyB2b2lkIHN0YXRpY0NvbnRleHQoKSB7CisgICAgICAgICAgICBTdHJpbmcuQ0FTRV9JTlNFTlNJVElWRV9PUkRFUi5nZXRDbGFzcygpOworICAgICAgICB9CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbmFtZUNvbGxpc2lvbnMvUmVuYW1lVmFyQ29uc3RUb0FsaWVuMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbmFtZUNvbGxpc2lvbnMvUmVuYW1lVmFyQ29uc3RUb0FsaWVuMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZlYzEwNzkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lQ29sbGlzaW9ucy9SZW5hbWVWYXJDb25zdFRvQWxpZW4xLmphdmEKQEAgLTAsMCArMSwxMCBAQAoraW1wb3J0IHN0YXRpYyBqYXZhLmxhbmcuU3RyaW5nLnZhbHVlT2Y7CisKK3B1YmxpYyBjbGFzcyBSZW5hbWVDb2xsaXNpb25zIHsKKyAgICBwdWJsaWMgc3RhdGljIGNsYXNzIFN0YXRpY0lubmVyQ2xhc3MgeworICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBTSV9TVEFUSUNfRklFTEQ8Y2FyZXQ+ID0gOTsKKyAgICAgICAgcHVibGljIHN0YXRpYyB2b2lkIHN0YXRpY0NvbnRleHQoKSB7CisgICAgICAgICAgICB2YWx1ZU9mKG51bGwpOworICAgICAgICB9CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbmFtZUNvbGxpc2lvbnMvUmVuYW1lVmFyQ29uc3RUb0FsaWVuMS5qYXZhLmFmdGVyIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbmFtZUNvbGxpc2lvbnMvUmVuYW1lVmFyQ29uc3RUb0FsaWVuMS5qYXZhLmFmdGVyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkwMDZmYjYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lQ29sbGlzaW9ucy9SZW5hbWVWYXJDb25zdFRvQWxpZW4xLmphdmEuYWZ0ZXIKQEAgLTAsMCArMSwxMCBAQAoraW1wb3J0IHN0YXRpYyBqYXZhLmxhbmcuU3RyaW5nLnZhbHVlT2Y7CisKK3B1YmxpYyBjbGFzcyBSZW5hbWVDb2xsaXNpb25zIHsKKyAgICBwdWJsaWMgc3RhdGljIGNsYXNzIFN0YXRpY0lubmVyQ2xhc3MgeworICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBDQVNFX0lOU0VOU0lUSVZFX09SREVSPGNhcmV0PiA9IDk7CisgICAgICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBzdGF0aWNDb250ZXh0KCkgeworICAgICAgICAgICAgdmFsdWVPZihudWxsKTsKKyAgICAgICAgfQorICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVDb2xsaXNpb25zL1JlbmFtZVZhckNvbnN0VG9QYXJhbS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbmFtZUNvbGxpc2lvbnMvUmVuYW1lVmFyQ29uc3RUb1BhcmFtLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDI2NzRkMwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVDb2xsaXNpb25zL1JlbmFtZVZhckNvbnN0VG9QYXJhbS5qYXZhCkBAIC0wLDAgKzEsOSBAQAorcHVibGljIGNsYXNzIFJlbmFtZUNvbGxpc2lvbnMgeworICAgIHByaXZhdGUgY2xhc3MgSW5uZXJDbGFzcyB7CisgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IElOTkVSX1NUQVRJQ19GSUVMRDxjYXJldD4gPSAxMzsKKyAgICAgICAgcHVibGljIHZvaWQgaW5zdGFuY2VDb250ZXh0KGludCBwYXJhbTMpIHsKKyAgICAgICAgICAgIGludCBsb2NhbFZhcjMgPSAwOworICAgICAgICAgICAgaW50IHZhcjEgPSBsb2NhbFZhcjMgKyBwYXJhbTMgKyBJTk5FUl9TVEFUSUNfRklFTEQ7CisgICAgICAgIH0KKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lQ29sbGlzaW9ucy9SZW5hbWVWYXJDb25zdFRvUGFyYW0uamF2YS5hZnRlciBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVDb2xsaXNpb25zL1JlbmFtZVZhckNvbnN0VG9QYXJhbS5qYXZhLmFmdGVyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNhZWFhOTUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lQ29sbGlzaW9ucy9SZW5hbWVWYXJDb25zdFRvUGFyYW0uamF2YS5hZnRlcgpAQCAtMCwwICsxLDkgQEAKK3B1YmxpYyBjbGFzcyBSZW5hbWVDb2xsaXNpb25zIHsKKyAgICBwcml2YXRlIGNsYXNzIElubmVyQ2xhc3MgeworICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBwYXJhbTM8Y2FyZXQ+ID0gMTM7CisgICAgICAgIHB1YmxpYyB2b2lkIGluc3RhbmNlQ29udGV4dChpbnQgcGFyYW0zKSB7CisgICAgICAgICAgICBpbnQgbG9jYWxWYXIzID0gMDsKKyAgICAgICAgICAgIGludCB2YXIxID0gbG9jYWxWYXIzICsgcGFyYW0zICsgSW5uZXJDbGFzcy5wYXJhbTM7CisgICAgICAgIH0KKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lQ29sbGlzaW9ucy9SZW5hbWVWYXJGaWVsZFRvTG9jYWwuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVDb2xsaXNpb25zL1JlbmFtZVZhckZpZWxkVG9Mb2NhbC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI3NWY0ZjcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lQ29sbGlzaW9ucy9SZW5hbWVWYXJGaWVsZFRvTG9jYWwuamF2YQpAQCAtMCwwICsxLDkgQEAKK3B1YmxpYyBjbGFzcyBSZW5hbWVDb2xsaXNpb25zIHsKKyAgICBwcml2YXRlIGNsYXNzIElubmVyQ2xhc3MgeworICAgICAgICBwcml2YXRlIGludCBteUlubmVyRmllbGQ8Y2FyZXQ+ID0gMTU7CisgICAgICAgIHB1YmxpYyB2b2lkIGluc3RhbmNlQ29udGV4dChpbnQgcGFyYW0zKSB7CisgICAgICAgICAgICBpbnQgbG9jYWxWYXIzID0gMDsKKyAgICAgICAgICAgIGludCB2YXIxID0gbG9jYWxWYXIzICsgcGFyYW0zICsgbXlJbm5lckZpZWxkOworICAgICAgICB9CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbmFtZUNvbGxpc2lvbnMvUmVuYW1lVmFyRmllbGRUb0xvY2FsLmphdmEuYWZ0ZXIgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lQ29sbGlzaW9ucy9SZW5hbWVWYXJGaWVsZFRvTG9jYWwuamF2YS5hZnRlcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMTg4MWM2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbmFtZUNvbGxpc2lvbnMvUmVuYW1lVmFyRmllbGRUb0xvY2FsLmphdmEuYWZ0ZXIKQEAgLTAsMCArMSw5IEBACitwdWJsaWMgY2xhc3MgUmVuYW1lQ29sbGlzaW9ucyB7CisgICAgcHJpdmF0ZSBjbGFzcyBJbm5lckNsYXNzIHsKKyAgICAgICAgcHJpdmF0ZSBpbnQgbG9jYWxWYXIzPGNhcmV0PiA9IDE1OworICAgICAgICBwdWJsaWMgdm9pZCBpbnN0YW5jZUNvbnRleHQoaW50IHBhcmFtMykgeworICAgICAgICAgICAgaW50IGxvY2FsVmFyMyA9IDA7CisgICAgICAgICAgICBpbnQgdmFyMSA9IGxvY2FsVmFyMyArIHBhcmFtMyArIHRoaXMubG9jYWxWYXIzOworICAgICAgICB9CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbmFtZUNvbGxpc2lvbnMvUmVuYW1lVmFySW5uZXJDb25zdFRvT3V0ZXJDb25zdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbmFtZUNvbGxpc2lvbnMvUmVuYW1lVmFySW5uZXJDb25zdFRvT3V0ZXJDb25zdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ0OTE4MDcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lQ29sbGlzaW9ucy9SZW5hbWVWYXJJbm5lckNvbnN0VG9PdXRlckNvbnN0LmphdmEKQEAgLTAsMCArMSwxMCBAQAorcHVibGljIGNsYXNzIFJlbmFtZUNvbGxpc2lvbnMgeworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFNUQVRJQ19GSUVMRCA9IDU7CisgICAgcHJpdmF0ZSBjbGFzcyBJbm5lckNsYXNzIHsKKyAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgSU5ORVJfU1RBVElDX0ZJRUxEPGNhcmV0PiA9IDEzOworICAgICAgICBwdWJsaWMgdm9pZCBpbnN0YW5jZUNvbnRleHQoaW50IHBhcmFtMykgeworICAgICAgICAgICAgaW50IGxvY2FsVmFyMyA9IDA7CisgICAgICAgICAgICBpbnQgdmFyMSA9IGxvY2FsVmFyMyArIHBhcmFtMyArIElOTkVSX1NUQVRJQ19GSUVMRCArIFNUQVRJQ19GSUVMRDsKKyAgICAgICAgfQorICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVDb2xsaXNpb25zL1JlbmFtZVZhcklubmVyQ29uc3RUb091dGVyQ29uc3QuamF2YS5hZnRlciBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVDb2xsaXNpb25zL1JlbmFtZVZhcklubmVyQ29uc3RUb091dGVyQ29uc3QuamF2YS5hZnRlcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNzQ1NmMxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbmFtZUNvbGxpc2lvbnMvUmVuYW1lVmFySW5uZXJDb25zdFRvT3V0ZXJDb25zdC5qYXZhLmFmdGVyCkBAIC0wLDAgKzEsMTAgQEAKK3B1YmxpYyBjbGFzcyBSZW5hbWVDb2xsaXNpb25zIHsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBTVEFUSUNfRklFTEQgPSA1OworICAgIHByaXZhdGUgY2xhc3MgSW5uZXJDbGFzcyB7CisgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFNUQVRJQ19GSUVMRDxjYXJldD4gPSAxMzsKKyAgICAgICAgcHVibGljIHZvaWQgaW5zdGFuY2VDb250ZXh0KGludCBwYXJhbTMpIHsKKyAgICAgICAgICAgIGludCBsb2NhbFZhcjMgPSAwOworICAgICAgICAgICAgaW50IHZhcjEgPSBsb2NhbFZhcjMgKyBwYXJhbTMgKyBTVEFUSUNfRklFTEQgKyBSZW5hbWVDb2xsaXNpb25zLlNUQVRJQ19GSUVMRDsKKyAgICAgICAgfQorICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVDb2xsaXNpb25zL1JlbmFtZVZhcklubmVyRmllbGRUb091dGVyRmllbGQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVDb2xsaXNpb25zL1JlbmFtZVZhcklubmVyRmllbGRUb091dGVyRmllbGQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNzUwYmE1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbmFtZUNvbGxpc2lvbnMvUmVuYW1lVmFySW5uZXJGaWVsZFRvT3V0ZXJGaWVsZC5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKK3B1YmxpYyBjbGFzcyBSZW5hbWVDb2xsaXNpb25zIHsKKyAgICBwcml2YXRlIGludCBteUZpZWxkID0gNzsKKyAgICBwcml2YXRlIGNsYXNzIElubmVyQ2xhc3MgeworICAgICAgICBwcml2YXRlIGludCBteUlubmVyRmllbGQ8Y2FyZXQ+ID0gMTU7CisgICAgICAgIHB1YmxpYyB2b2lkIGluc3RhbmNlQ29udGV4dChpbnQgcGFyYW0zKSB7CisgICAgICAgICAgICBpbnQgbG9jYWxWYXIzID0gMDsKKyAgICAgICAgICAgIGludCB2YXIxID0gbG9jYWxWYXIzICsgcGFyYW0zICsgbXlJbm5lckZpZWxkICsgbXlGaWVsZDsKKyAgICAgICAgfQorICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVDb2xsaXNpb25zL1JlbmFtZVZhcklubmVyRmllbGRUb091dGVyRmllbGQuamF2YS5hZnRlciBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVDb2xsaXNpb25zL1JlbmFtZVZhcklubmVyRmllbGRUb091dGVyRmllbGQuamF2YS5hZnRlcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zOWZiNmUxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbmFtZUNvbGxpc2lvbnMvUmVuYW1lVmFySW5uZXJGaWVsZFRvT3V0ZXJGaWVsZC5qYXZhLmFmdGVyCkBAIC0wLDAgKzEsMTAgQEAKK3B1YmxpYyBjbGFzcyBSZW5hbWVDb2xsaXNpb25zIHsKKyAgICBwcml2YXRlIGludCBteUZpZWxkID0gNzsKKyAgICBwcml2YXRlIGNsYXNzIElubmVyQ2xhc3MgeworICAgICAgICBwcml2YXRlIGludCBteUZpZWxkPGNhcmV0PiA9IDE1OworICAgICAgICBwdWJsaWMgdm9pZCBpbnN0YW5jZUNvbnRleHQoaW50IHBhcmFtMykgeworICAgICAgICAgICAgaW50IGxvY2FsVmFyMyA9IDA7CisgICAgICAgICAgICBpbnQgdmFyMSA9IGxvY2FsVmFyMyArIHBhcmFtMyArIG15RmllbGQgKyBSZW5hbWVDb2xsaXNpb25zLnRoaXMubXlGaWVsZDsKKyAgICAgICAgfQorICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVDb2xsaXNpb25zL1JlbmFtZVZhckxvY2FsVG9BbGllbi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbmFtZUNvbGxpc2lvbnMvUmVuYW1lVmFyTG9jYWxUb0FsaWVuLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGUzN2Y5MgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVDb2xsaXNpb25zL1JlbmFtZVZhckxvY2FsVG9BbGllbi5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKK2ltcG9ydCBzdGF0aWMgamF2YXguc3dpbmcuU3dpbmdDb25zdGFudHMuQk9UVE9NOworCitwdWJsaWMgY2xhc3MgUmVuYW1lQ29sbGlzaW9ucyB7CisJcHVibGljIHN0YXRpYyBjbGFzcyBTdGF0aWNJbm5lckNsYXNzIHsKKwkJcHVibGljIHN0YXRpYyB2b2lkIHN0YXRpY0NvbnRleHQoKSB7CisJCQlpbnQgbG9jYWxWYXI8Y2FyZXQ+ID0gMDsKKwkJCWludCB2YXIxID0gQk9UVE9NOworCQl9CisJfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbmFtZUNvbGxpc2lvbnMvUmVuYW1lVmFyTG9jYWxUb0FsaWVuLmphdmEuYWZ0ZXIgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lQ29sbGlzaW9ucy9SZW5hbWVWYXJMb2NhbFRvQWxpZW4uamF2YS5hZnRlcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MjYwNzMyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbmFtZUNvbGxpc2lvbnMvUmVuYW1lVmFyTG9jYWxUb0FsaWVuLmphdmEuYWZ0ZXIKQEAgLTAsMCArMSwxMCBAQAoraW1wb3J0IGphdmF4LnN3aW5nLio7CisKK3B1YmxpYyBjbGFzcyBSZW5hbWVDb2xsaXNpb25zIHsKKwlwdWJsaWMgc3RhdGljIGNsYXNzIFN0YXRpY0lubmVyQ2xhc3MgeworCQlwdWJsaWMgc3RhdGljIHZvaWQgc3RhdGljQ29udGV4dCgpIHsKKwkJCWludCBCT1RUT008Y2FyZXQ+ID0gMDsKKwkJCWludCB2YXIxID0gU3dpbmdDb25zdGFudHMuQk9UVE9NOworCQl9CisJfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbmFtZUNvbGxpc2lvbnMvUmVuYW1lVmFyTG9jYWxUb0NvbnN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lQ29sbGlzaW9ucy9SZW5hbWVWYXJMb2NhbFRvQ29uc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MzM2MDc1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbmFtZUNvbGxpc2lvbnMvUmVuYW1lVmFyTG9jYWxUb0NvbnN0LmphdmEKQEAgLTAsMCArMSw5IEBACitwdWJsaWMgY2xhc3MgUmVuYW1lQ29sbGlzaW9ucyB7CisJY2xhc3MgSW5uZXJDbGFzcyB7CisJCXB1YmxpYyBzdGF0aWMgZmluYWwgaW50IElOTkVSX1NUQVRJQ19GSUVMRCA9IDEzOworCQlwdWJsaWMgdm9pZCBpbnN0YW5jZUNvbnRleHQoaW50IHBhcmFtKSB7CisJCQlpbnQgPGNhcmV0PmxvY2FsVmFyID0gMDsKKwkJCWludCB2YXIxID0gbG9jYWxWYXIgKyBwYXJhbSArIElOTkVSX1NUQVRJQ19GSUVMRDsKKwkJfQorCX0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVDb2xsaXNpb25zL1JlbmFtZVZhckxvY2FsVG9Db25zdC5qYXZhLmFmdGVyIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbmFtZUNvbGxpc2lvbnMvUmVuYW1lVmFyTG9jYWxUb0NvbnN0LmphdmEuYWZ0ZXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjBhMWE5ZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVDb2xsaXNpb25zL1JlbmFtZVZhckxvY2FsVG9Db25zdC5qYXZhLmFmdGVyCkBAIC0wLDAgKzEsOSBAQAorcHVibGljIGNsYXNzIFJlbmFtZUNvbGxpc2lvbnMgeworCWNsYXNzIElubmVyQ2xhc3MgeworCQlwdWJsaWMgc3RhdGljIGZpbmFsIGludCBJTk5FUl9TVEFUSUNfRklFTEQgPSAxMzsKKwkJcHVibGljIHZvaWQgaW5zdGFuY2VDb250ZXh0KGludCBwYXJhbSkgeworCQkJaW50IDxjYXJldD5JTk5FUl9TVEFUSUNfRklFTEQgPSAwOworCQkJaW50IHZhcjEgPSBJTk5FUl9TVEFUSUNfRklFTEQgKyBwYXJhbSArIElubmVyQ2xhc3MuSU5ORVJfU1RBVElDX0ZJRUxEOworCQl9CisJfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbmFtZUNvbGxpc2lvbnMvUmVuYW1lVmFyTG9jYWxUb091dGVyRmllbGQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVDb2xsaXNpb25zL1JlbmFtZVZhckxvY2FsVG9PdXRlckZpZWxkLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzgyOGM3OQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVDb2xsaXNpb25zL1JlbmFtZVZhckxvY2FsVG9PdXRlckZpZWxkLmphdmEKQEAgLTAsMCArMSw5IEBACitwdWJsaWMgY2xhc3MgUmVuYW1lQ29sbGlzaW9ucyB7CisJcHJpdmF0ZSBpbnQgbXlGaWVsZCA9IDc7CisJY2xhc3MgSW5uZXJDbGFzcyB7CisJCXB1YmxpYyB2b2lkIGluc3RhbmNlQ29udGV4dChpbnQgcGFyYW0pIHsKKwkJCWludCBsb2NhbFZhcjxjYXJldD4gPSAwOworCQkJaW50IHZhcjEgPSBsb2NhbFZhciArIHBhcmFtICsgbXlGaWVsZDsKKwkJfQorCX0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVDb2xsaXNpb25zL1JlbmFtZVZhckxvY2FsVG9PdXRlckZpZWxkLmphdmEuYWZ0ZXIgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lQ29sbGlzaW9ucy9SZW5hbWVWYXJMb2NhbFRvT3V0ZXJGaWVsZC5qYXZhLmFmdGVyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM3YmMwZTEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lQ29sbGlzaW9ucy9SZW5hbWVWYXJMb2NhbFRvT3V0ZXJGaWVsZC5qYXZhLmFmdGVyCkBAIC0wLDAgKzEsOSBAQAorcHVibGljIGNsYXNzIFJlbmFtZUNvbGxpc2lvbnMgeworCXByaXZhdGUgaW50IG15RmllbGQgPSA3OworCWNsYXNzIElubmVyQ2xhc3MgeworCQlwdWJsaWMgdm9pZCBpbnN0YW5jZUNvbnRleHQoaW50IHBhcmFtKSB7CisJCQlpbnQgbXlGaWVsZDxjYXJldD4gPSAwOworCQkJaW50IHZhcjEgPSBteUZpZWxkICsgcGFyYW0gKyBSZW5hbWVDb2xsaXNpb25zLnRoaXMubXlGaWVsZDsKKwkJfQorCX0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVDb2xsaXNpb25zL1JlbmFtZVZhck91dGVyQ29uc3RUb0lubmVyQ29uc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVDb2xsaXNpb25zL1JlbmFtZVZhck91dGVyQ29uc3RUb0lubmVyQ29uc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yOGQxMGRmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbmFtZUNvbGxpc2lvbnMvUmVuYW1lVmFyT3V0ZXJDb25zdFRvSW5uZXJDb25zdC5qYXZhCkBAIC0wLDAgKzEsMTcgQEAKK3B1YmxpYyBjbGFzcyBSZW5hbWVDb2xsaXNpb25zIHsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCA8Y2FyZXQ+U1RBVElDX0ZJRUxEID0gNTsKKworICAgIHB1YmxpYyBzdGF0aWMgY2xhc3MgU3RhdGljSW5uZXJDbGFzcyB7CisgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFNJX1NUQVRJQ19GSUVMRCA9IDk7CisgICAgICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBzdGF0aWNDb250ZXh0KGludCBwYXJhbSkgeworICAgICAgICAgICAgaW50IHZhcjEgPSBTSV9TVEFUSUNfRklFTEQgKyBTVEFUSUNfRklFTEQ7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwcml2YXRlIGNsYXNzIElubmVyQ2xhc3MgeworICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBJTk5FUl9TVEFUSUNfRklFTEQgPSAxMzsKKyAgICAgICAgcHVibGljIHZvaWQgaW5zdGFuY2VDb250ZXh0KGludCBwYXJhbSkgeworICAgICAgICAgICAgaW50IHZhcjEgPSBJTk5FUl9TVEFUSUNfRklFTEQgKyBTVEFUSUNfRklFTEQ7CisgICAgICAgIH0KKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lQ29sbGlzaW9ucy9SZW5hbWVWYXJPdXRlckNvbnN0VG9Jbm5lckNvbnN0LmphdmEuYWZ0ZXIgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lQ29sbGlzaW9ucy9SZW5hbWVWYXJPdXRlckNvbnN0VG9Jbm5lckNvbnN0LmphdmEuYWZ0ZXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWM5MThlYgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVDb2xsaXNpb25zL1JlbmFtZVZhck91dGVyQ29uc3RUb0lubmVyQ29uc3QuamF2YS5hZnRlcgpAQCAtMCwwICsxLDE3IEBACitwdWJsaWMgY2xhc3MgUmVuYW1lQ29sbGlzaW9ucyB7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgPGNhcmV0PlNJX1NUQVRJQ19GSUVMRCA9IDU7CisKKyAgICBwdWJsaWMgc3RhdGljIGNsYXNzIFN0YXRpY0lubmVyQ2xhc3MgeworICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBTSV9TVEFUSUNfRklFTEQgPSA5OworICAgICAgICBwdWJsaWMgc3RhdGljIHZvaWQgc3RhdGljQ29udGV4dChpbnQgcGFyYW0pIHsKKyAgICAgICAgICAgIGludCB2YXIxID0gU0lfU1RBVElDX0ZJRUxEICsgUmVuYW1lQ29sbGlzaW9ucy5TSV9TVEFUSUNfRklFTEQ7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwcml2YXRlIGNsYXNzIElubmVyQ2xhc3MgeworICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBJTk5FUl9TVEFUSUNfRklFTEQgPSAxMzsKKyAgICAgICAgcHVibGljIHZvaWQgaW5zdGFuY2VDb250ZXh0KGludCBwYXJhbSkgeworICAgICAgICAgICAgaW50IHZhcjEgPSBJTk5FUl9TVEFUSUNfRklFTEQgKyBTSV9TVEFUSUNfRklFTEQ7CisgICAgICAgIH0KKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lQ29sbGlzaW9ucy9SZW5hbWVWYXJPdXRlckNvbnN0VG9Mb2NhbC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbmFtZUNvbGxpc2lvbnMvUmVuYW1lVmFyT3V0ZXJDb25zdFRvTG9jYWwuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYjI4NmUyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbmFtZUNvbGxpc2lvbnMvUmVuYW1lVmFyT3V0ZXJDb25zdFRvTG9jYWwuamF2YQpAQCAtMCwwICsxLDI4IEBACitwdWJsaWMgY2xhc3MgUmVuYW1lQ29sbGlzaW9ucyB7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgPGNhcmV0PlNUQVRJQ19GSUVMRCA9IDU7CisgICAgcHJpdmF0ZSBpbnQgbXlGaWVsZCA9IDc7CisKKyAgICBwdWJsaWMgc3RhdGljIGNsYXNzIFN0YXRpY0lubmVyQ2xhc3MgeworICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBTSV9TVEFUSUNfRklFTEQgPSA5OworICAgICAgICBwcml2YXRlIGludCBteVNpRmllbGQgPSAxMTsKKworICAgICAgICBwdWJsaWMgdm9pZCBpbnN0YW5jZUNvbnRleHQoaW50IHBhcmFtMSkgeworICAgICAgICAgICAgaW50IGxvY2FsVmFyMSA9IDA7CisgICAgICAgICAgICBpbnQgdmFyMSA9IGxvY2FsVmFyMSArIHBhcmFtMSArIFNJX1NUQVRJQ19GSUVMRCArIG15U2lGaWVsZCArIFNUQVRJQ19GSUVMRDsKKyAgICAgICAgfQorICAgICAgICBwdWJsaWMgc3RhdGljIHZvaWQgc3RhdGljQ29udGV4dChpbnQgcGFyYW0yKSB7CisgICAgICAgICAgICBpbnQgbG9jYWxWYXIyID0gMDsKKyAgICAgICAgICAgIGludCB2YXIxID0gbG9jYWxWYXIyICsgcGFyYW0yICsgU0lfU1RBVElDX0ZJRUxEICsgU1RBVElDX0ZJRUxEOworICAgICAgICB9CisgICAgfQorCisgICAgcHJpdmF0ZSBjbGFzcyBJbm5lckNsYXNzIHsKKyAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgSU5ORVJfU1RBVElDX0ZJRUxEID0gMTM7CisgICAgICAgIHByaXZhdGUgaW50IG15SW5uZXJGaWVsZCA9IDE1OworCisgICAgICAgIHB1YmxpYyB2b2lkIGluc3RhbmNlQ29udGV4dChpbnQgcGFyYW0zKSB7CisgICAgICAgICAgICBpbnQgbG9jYWxWYXIzID0gMDsKKyAgICAgICAgICAgIGludCB2YXIxID0gbG9jYWxWYXIzICsgcGFyYW0zICsgSU5ORVJfU1RBVElDX0ZJRUxEICsgbXlJbm5lckZpZWxkICsgU1RBVElDX0ZJRUxEICsgbXlGaWVsZDsKKyAgICAgICAgfQorICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVDb2xsaXNpb25zL1JlbmFtZVZhck91dGVyQ29uc3RUb0xvY2FsLmphdmEuYWZ0ZXIgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lQ29sbGlzaW9ucy9SZW5hbWVWYXJPdXRlckNvbnN0VG9Mb2NhbC5qYXZhLmFmdGVyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQwMmQ1ZjQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lQ29sbGlzaW9ucy9SZW5hbWVWYXJPdXRlckNvbnN0VG9Mb2NhbC5qYXZhLmFmdGVyCkBAIC0wLDAgKzEsMjggQEAKK3B1YmxpYyBjbGFzcyBSZW5hbWVDb2xsaXNpb25zIHsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCA8Y2FyZXQ+bG9jYWxWYXIzID0gNTsKKyAgICBwcml2YXRlIGludCBteUZpZWxkID0gNzsKKworICAgIHB1YmxpYyBzdGF0aWMgY2xhc3MgU3RhdGljSW5uZXJDbGFzcyB7CisgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFNJX1NUQVRJQ19GSUVMRCA9IDk7CisgICAgICAgIHByaXZhdGUgaW50IG15U2lGaWVsZCA9IDExOworCisgICAgICAgIHB1YmxpYyB2b2lkIGluc3RhbmNlQ29udGV4dChpbnQgcGFyYW0xKSB7CisgICAgICAgICAgICBpbnQgbG9jYWxWYXIxID0gMDsKKyAgICAgICAgICAgIGludCB2YXIxID0gbG9jYWxWYXIxICsgcGFyYW0xICsgU0lfU1RBVElDX0ZJRUxEICsgbXlTaUZpZWxkICsgbG9jYWxWYXIzOworICAgICAgICB9CisgICAgICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBzdGF0aWNDb250ZXh0KGludCBwYXJhbTIpIHsKKyAgICAgICAgICAgIGludCBsb2NhbFZhcjIgPSAwOworICAgICAgICAgICAgaW50IHZhcjEgPSBsb2NhbFZhcjIgKyBwYXJhbTIgKyBTSV9TVEFUSUNfRklFTEQgKyBsb2NhbFZhcjM7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwcml2YXRlIGNsYXNzIElubmVyQ2xhc3MgeworICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBJTk5FUl9TVEFUSUNfRklFTEQgPSAxMzsKKyAgICAgICAgcHJpdmF0ZSBpbnQgbXlJbm5lckZpZWxkID0gMTU7CisKKyAgICAgICAgcHVibGljIHZvaWQgaW5zdGFuY2VDb250ZXh0KGludCBwYXJhbTMpIHsKKyAgICAgICAgICAgIGludCBsb2NhbFZhcjMgPSAwOworICAgICAgICAgICAgaW50IHZhcjEgPSBsb2NhbFZhcjMgKyBwYXJhbTMgKyBJTk5FUl9TVEFUSUNfRklFTEQgKyBteUlubmVyRmllbGQgKyBSZW5hbWVDb2xsaXNpb25zLmxvY2FsVmFyMyArIG15RmllbGQ7CisgICAgICAgIH0KKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lQ29sbGlzaW9ucy9SZW5hbWVWYXJPdXRlckNvbnN0VG9QYXJhbS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbmFtZUNvbGxpc2lvbnMvUmVuYW1lVmFyT3V0ZXJDb25zdFRvUGFyYW0uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYjI4NmUyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbmFtZUNvbGxpc2lvbnMvUmVuYW1lVmFyT3V0ZXJDb25zdFRvUGFyYW0uamF2YQpAQCAtMCwwICsxLDI4IEBACitwdWJsaWMgY2xhc3MgUmVuYW1lQ29sbGlzaW9ucyB7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgPGNhcmV0PlNUQVRJQ19GSUVMRCA9IDU7CisgICAgcHJpdmF0ZSBpbnQgbXlGaWVsZCA9IDc7CisKKyAgICBwdWJsaWMgc3RhdGljIGNsYXNzIFN0YXRpY0lubmVyQ2xhc3MgeworICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBTSV9TVEFUSUNfRklFTEQgPSA5OworICAgICAgICBwcml2YXRlIGludCBteVNpRmllbGQgPSAxMTsKKworICAgICAgICBwdWJsaWMgdm9pZCBpbnN0YW5jZUNvbnRleHQoaW50IHBhcmFtMSkgeworICAgICAgICAgICAgaW50IGxvY2FsVmFyMSA9IDA7CisgICAgICAgICAgICBpbnQgdmFyMSA9IGxvY2FsVmFyMSArIHBhcmFtMSArIFNJX1NUQVRJQ19GSUVMRCArIG15U2lGaWVsZCArIFNUQVRJQ19GSUVMRDsKKyAgICAgICAgfQorICAgICAgICBwdWJsaWMgc3RhdGljIHZvaWQgc3RhdGljQ29udGV4dChpbnQgcGFyYW0yKSB7CisgICAgICAgICAgICBpbnQgbG9jYWxWYXIyID0gMDsKKyAgICAgICAgICAgIGludCB2YXIxID0gbG9jYWxWYXIyICsgcGFyYW0yICsgU0lfU1RBVElDX0ZJRUxEICsgU1RBVElDX0ZJRUxEOworICAgICAgICB9CisgICAgfQorCisgICAgcHJpdmF0ZSBjbGFzcyBJbm5lckNsYXNzIHsKKyAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgSU5ORVJfU1RBVElDX0ZJRUxEID0gMTM7CisgICAgICAgIHByaXZhdGUgaW50IG15SW5uZXJGaWVsZCA9IDE1OworCisgICAgICAgIHB1YmxpYyB2b2lkIGluc3RhbmNlQ29udGV4dChpbnQgcGFyYW0zKSB7CisgICAgICAgICAgICBpbnQgbG9jYWxWYXIzID0gMDsKKyAgICAgICAgICAgIGludCB2YXIxID0gbG9jYWxWYXIzICsgcGFyYW0zICsgSU5ORVJfU1RBVElDX0ZJRUxEICsgbXlJbm5lckZpZWxkICsgU1RBVElDX0ZJRUxEICsgbXlGaWVsZDsKKyAgICAgICAgfQorICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVDb2xsaXNpb25zL1JlbmFtZVZhck91dGVyQ29uc3RUb1BhcmFtLmphdmEuYWZ0ZXIgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lQ29sbGlzaW9ucy9SZW5hbWVWYXJPdXRlckNvbnN0VG9QYXJhbS5qYXZhLmFmdGVyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM2YmRjNzIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lQ29sbGlzaW9ucy9SZW5hbWVWYXJPdXRlckNvbnN0VG9QYXJhbS5qYXZhLmFmdGVyCkBAIC0wLDAgKzEsMjggQEAKK3B1YmxpYyBjbGFzcyBSZW5hbWVDb2xsaXNpb25zIHsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCA8Y2FyZXQ+cGFyYW0yID0gNTsKKyAgICBwcml2YXRlIGludCBteUZpZWxkID0gNzsKKworICAgIHB1YmxpYyBzdGF0aWMgY2xhc3MgU3RhdGljSW5uZXJDbGFzcyB7CisgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFNJX1NUQVRJQ19GSUVMRCA9IDk7CisgICAgICAgIHByaXZhdGUgaW50IG15U2lGaWVsZCA9IDExOworCisgICAgICAgIHB1YmxpYyB2b2lkIGluc3RhbmNlQ29udGV4dChpbnQgcGFyYW0xKSB7CisgICAgICAgICAgICBpbnQgbG9jYWxWYXIxID0gMDsKKyAgICAgICAgICAgIGludCB2YXIxID0gbG9jYWxWYXIxICsgcGFyYW0xICsgU0lfU1RBVElDX0ZJRUxEICsgbXlTaUZpZWxkICsgcGFyYW0yOworICAgICAgICB9CisgICAgICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBzdGF0aWNDb250ZXh0KGludCBwYXJhbTIpIHsKKyAgICAgICAgICAgIGludCBsb2NhbFZhcjIgPSAwOworICAgICAgICAgICAgaW50IHZhcjEgPSBsb2NhbFZhcjIgKyBwYXJhbTIgKyBTSV9TVEFUSUNfRklFTEQgKyBSZW5hbWVDb2xsaXNpb25zLnBhcmFtMjsKKyAgICAgICAgfQorICAgIH0KKworICAgIHByaXZhdGUgY2xhc3MgSW5uZXJDbGFzcyB7CisgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IElOTkVSX1NUQVRJQ19GSUVMRCA9IDEzOworICAgICAgICBwcml2YXRlIGludCBteUlubmVyRmllbGQgPSAxNTsKKworICAgICAgICBwdWJsaWMgdm9pZCBpbnN0YW5jZUNvbnRleHQoaW50IHBhcmFtMykgeworICAgICAgICAgICAgaW50IGxvY2FsVmFyMyA9IDA7CisgICAgICAgICAgICBpbnQgdmFyMSA9IGxvY2FsVmFyMyArIHBhcmFtMyArIElOTkVSX1NUQVRJQ19GSUVMRCArIG15SW5uZXJGaWVsZCArIHBhcmFtMiArIG15RmllbGQ7CisgICAgICAgIH0KKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lQ29sbGlzaW9ucy9SZW5hbWVWYXJPdXRlckZpZWxkVG9Mb2NhbC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbmFtZUNvbGxpc2lvbnMvUmVuYW1lVmFyT3V0ZXJGaWVsZFRvTG9jYWwuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZDQyMTBmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbmFtZUNvbGxpc2lvbnMvUmVuYW1lVmFyT3V0ZXJGaWVsZFRvTG9jYWwuamF2YQpAQCAtMCwwICsxLDEwIEBACitwdWJsaWMgY2xhc3MgUmVuYW1lQ29sbGlzaW9ucyB7CisgICAgcHJpdmF0ZSBpbnQgPGNhcmV0Pm15RmllbGQgPSA3OworCisgICAgcHJpdmF0ZSBjbGFzcyBJbm5lckNsYXNzIHsKKyAgICAgICAgcHVibGljIHZvaWQgaW5zdGFuY2VDb250ZXh0KGludCBwYXJhbTMpIHsKKyAgICAgICAgICAgIGludCBsb2NhbFZhcjMgPSAwOworICAgICAgICAgICAgaW50IHZhcjEgPSBsb2NhbFZhcjMgKyBwYXJhbTMgKyBteUZpZWxkOworICAgICAgICB9CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbmFtZUNvbGxpc2lvbnMvUmVuYW1lVmFyT3V0ZXJGaWVsZFRvTG9jYWwuamF2YS5hZnRlciBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVDb2xsaXNpb25zL1JlbmFtZVZhck91dGVyRmllbGRUb0xvY2FsLmphdmEuYWZ0ZXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2NjZDE4NgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVDb2xsaXNpb25zL1JlbmFtZVZhck91dGVyRmllbGRUb0xvY2FsLmphdmEuYWZ0ZXIKQEAgLTAsMCArMSwxMCBAQAorcHVibGljIGNsYXNzIFJlbmFtZUNvbGxpc2lvbnMgeworICAgIHByaXZhdGUgaW50IDxjYXJldD5sb2NhbFZhcjMgPSA3OworCisgICAgcHJpdmF0ZSBjbGFzcyBJbm5lckNsYXNzIHsKKyAgICAgICAgcHVibGljIHZvaWQgaW5zdGFuY2VDb250ZXh0KGludCBwYXJhbTMpIHsKKyAgICAgICAgICAgIGludCBsb2NhbFZhcjMgPSAwOworICAgICAgICAgICAgaW50IHZhcjEgPSBsb2NhbFZhcjMgKyBwYXJhbTMgKyBSZW5hbWVDb2xsaXNpb25zLnRoaXMubG9jYWxWYXIzOworICAgICAgICB9CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbmFtZUNvbGxpc2lvbnMvUmVuYW1lVmFyT3V0ZXJGaWVsZFRvUGFyYW0uamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVDb2xsaXNpb25zL1JlbmFtZVZhck91dGVyRmllbGRUb1BhcmFtLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmQ0MjEwZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVDb2xsaXNpb25zL1JlbmFtZVZhck91dGVyRmllbGRUb1BhcmFtLmphdmEKQEAgLTAsMCArMSwxMCBAQAorcHVibGljIGNsYXNzIFJlbmFtZUNvbGxpc2lvbnMgeworICAgIHByaXZhdGUgaW50IDxjYXJldD5teUZpZWxkID0gNzsKKworICAgIHByaXZhdGUgY2xhc3MgSW5uZXJDbGFzcyB7CisgICAgICAgIHB1YmxpYyB2b2lkIGluc3RhbmNlQ29udGV4dChpbnQgcGFyYW0zKSB7CisgICAgICAgICAgICBpbnQgbG9jYWxWYXIzID0gMDsKKyAgICAgICAgICAgIGludCB2YXIxID0gbG9jYWxWYXIzICsgcGFyYW0zICsgbXlGaWVsZDsKKyAgICAgICAgfQorICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVDb2xsaXNpb25zL1JlbmFtZVZhck91dGVyRmllbGRUb1BhcmFtLmphdmEuYWZ0ZXIgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lQ29sbGlzaW9ucy9SZW5hbWVWYXJPdXRlckZpZWxkVG9QYXJhbS5qYXZhLmFmdGVyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk1Yzc5Y2QKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lQ29sbGlzaW9ucy9SZW5hbWVWYXJPdXRlckZpZWxkVG9QYXJhbS5qYXZhLmFmdGVyCkBAIC0wLDAgKzEsMTAgQEAKK3B1YmxpYyBjbGFzcyBSZW5hbWVDb2xsaXNpb25zIHsKKyAgICBwcml2YXRlIGludCA8Y2FyZXQ+cGFyYW0zID0gNzsKKworICAgIHByaXZhdGUgY2xhc3MgSW5uZXJDbGFzcyB7CisgICAgICAgIHB1YmxpYyB2b2lkIGluc3RhbmNlQ29udGV4dChpbnQgcGFyYW0zKSB7CisgICAgICAgICAgICBpbnQgbG9jYWxWYXIzID0gMDsKKyAgICAgICAgICAgIGludCB2YXIxID0gbG9jYWxWYXIzICsgcGFyYW0zICsgUmVuYW1lQ29sbGlzaW9ucy50aGlzLnBhcmFtMzsKKyAgICAgICAgfQorICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVDb2xsaXNpb25zL1JlbmFtZVZhclBhcmFtVG9BbGllbi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbmFtZUNvbGxpc2lvbnMvUmVuYW1lVmFyUGFyYW1Ub0FsaWVuLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGFhZjE2ZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVDb2xsaXNpb25zL1JlbmFtZVZhclBhcmFtVG9BbGllbi5qYXZhCkBAIC0wLDAgKzEsOSBAQAoraW1wb3J0IHN0YXRpYyBqYXZheC5zd2luZy5Td2luZ0NvbnN0YW50cy5CT1RUT007CisKK3B1YmxpYyBjbGFzcyBSZW5hbWVDb2xsaXNpb25zIHsKKwlwdWJsaWMgc3RhdGljIGNsYXNzIFN0YXRpY0lubmVyQ2xhc3MgeworCQlwdWJsaWMgc3RhdGljIHZvaWQgc3RhdGljQ29udGV4dChpbnQgcGFyYW08Y2FyZXQ+KSB7CisJCQlpbnQgdmFyMSA9IEJPVFRPTTsKKwkJfQorCX0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVDb2xsaXNpb25zL1JlbmFtZVZhclBhcmFtVG9BbGllbi5qYXZhLmFmdGVyIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbmFtZUNvbGxpc2lvbnMvUmVuYW1lVmFyUGFyYW1Ub0FsaWVuLmphdmEuYWZ0ZXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTdmNjZjNwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVDb2xsaXNpb25zL1JlbmFtZVZhclBhcmFtVG9BbGllbi5qYXZhLmFmdGVyCkBAIC0wLDAgKzEsOSBAQAoraW1wb3J0IGphdmF4LnN3aW5nLio7CisKK3B1YmxpYyBjbGFzcyBSZW5hbWVDb2xsaXNpb25zIHsKKwlwdWJsaWMgc3RhdGljIGNsYXNzIFN0YXRpY0lubmVyQ2xhc3MgeworCQlwdWJsaWMgc3RhdGljIHZvaWQgc3RhdGljQ29udGV4dChpbnQgQk9UVE9NPGNhcmV0PikgeworCQkJaW50IHZhcjEgPSBTd2luZ0NvbnN0YW50cy5CT1RUT007CisJCX0KKwl9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lQ29sbGlzaW9ucy9SZW5hbWVWYXJQYXJhbVRvRmllbGQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVDb2xsaXNpb25zL1JlbmFtZVZhclBhcmFtVG9GaWVsZC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM2ODgxZjAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lQ29sbGlzaW9ucy9SZW5hbWVWYXJQYXJhbVRvRmllbGQuamF2YQpAQCAtMCwwICsxLDkgQEAKK3B1YmxpYyBjbGFzcyBSZW5hbWVDb2xsaXNpb25zIHsKKwljbGFzcyBJbm5lckNsYXNzIHsKKwkJcHJpdmF0ZSBpbnQgbXlJbm5lckZpZWxkID0gMTU7CisJCXB1YmxpYyB2b2lkIGluc3RhbmNlQ29udGV4dChpbnQgcGFyYW08Y2FyZXQ+KSB7CisJCQlpbnQgbG9jYWxWYXIgPSAwOworCQkJaW50IHZhcjEgPSBsb2NhbFZhciArIHBhcmFtICsgbXlJbm5lckZpZWxkOworCQl9CisJfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbmFtZUNvbGxpc2lvbnMvUmVuYW1lVmFyUGFyYW1Ub0ZpZWxkLmphdmEuYWZ0ZXIgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lQ29sbGlzaW9ucy9SZW5hbWVWYXJQYXJhbVRvRmllbGQuamF2YS5hZnRlcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZTc4MzM2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbmFtZUNvbGxpc2lvbnMvUmVuYW1lVmFyUGFyYW1Ub0ZpZWxkLmphdmEuYWZ0ZXIKQEAgLTAsMCArMSw5IEBACitwdWJsaWMgY2xhc3MgUmVuYW1lQ29sbGlzaW9ucyB7CisJY2xhc3MgSW5uZXJDbGFzcyB7CisJCXByaXZhdGUgaW50IG15SW5uZXJGaWVsZCA9IDE1OworCQlwdWJsaWMgdm9pZCBpbnN0YW5jZUNvbnRleHQoaW50IG15SW5uZXJGaWVsZDxjYXJldD4pIHsKKwkJCWludCBsb2NhbFZhciA9IDA7CisJCQlpbnQgdmFyMSA9IGxvY2FsVmFyICsgbXlJbm5lckZpZWxkICsgdGhpcy5teUlubmVyRmllbGQ7CisJCX0KKwl9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lQ29sbGlzaW9ucy9SZW5hbWVWYXJQYXJhbVRvT3V0ZXJDb25zdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbmFtZUNvbGxpc2lvbnMvUmVuYW1lVmFyUGFyYW1Ub091dGVyQ29uc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMDQyOTAyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbmFtZUNvbGxpc2lvbnMvUmVuYW1lVmFyUGFyYW1Ub091dGVyQ29uc3QuamF2YQpAQCAtMCwwICsxLDkgQEAKK3B1YmxpYyBjbGFzcyBSZW5hbWVDb2xsaXNpb25zIHsKKwlwdWJsaWMgc3RhdGljIGZpbmFsIGludCBTVEFUSUNfRklFTEQgPSA1OworCXB1YmxpYyBzdGF0aWMgY2xhc3MgU3RhdGljSW5uZXJDbGFzcyB7CisJCXB1YmxpYyB2b2lkIGluc3RhbmNlQ29udGV4dChpbnQgcGFyYW08Y2FyZXQ+KSB7CisJCQlpbnQgbG9jYWxWYXIgPSAwOworCQkJaW50IHZhcjEgPSBsb2NhbFZhciArIHBhcmFtICsgU1RBVElDX0ZJRUxEOworCQl9CisJfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbmFtZUNvbGxpc2lvbnMvUmVuYW1lVmFyUGFyYW1Ub091dGVyQ29uc3QuamF2YS5hZnRlciBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVDb2xsaXNpb25zL1JlbmFtZVZhclBhcmFtVG9PdXRlckNvbnN0LmphdmEuYWZ0ZXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTc3NzExZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVDb2xsaXNpb25zL1JlbmFtZVZhclBhcmFtVG9PdXRlckNvbnN0LmphdmEuYWZ0ZXIKQEAgLTAsMCArMSw5IEBACitwdWJsaWMgY2xhc3MgUmVuYW1lQ29sbGlzaW9ucyB7CisJcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgU1RBVElDX0ZJRUxEID0gNTsKKwlwdWJsaWMgc3RhdGljIGNsYXNzIFN0YXRpY0lubmVyQ2xhc3MgeworCQlwdWJsaWMgdm9pZCBpbnN0YW5jZUNvbnRleHQoaW50IFNUQVRJQ19GSUVMRDxjYXJldD4pIHsKKwkJCWludCBsb2NhbFZhciA9IDA7CisJCQlpbnQgdmFyMSA9IGxvY2FsVmFyICsgU1RBVElDX0ZJRUxEICsgUmVuYW1lQ29sbGlzaW9ucy5TVEFUSUNfRklFTEQ7CisJCX0KKwl9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lRmllbGQvYWZ0ZXJDb2xsaXNpb25zSW5NZXRob2QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVGaWVsZC9hZnRlckNvbGxpc2lvbnNJbk1ldGhvZC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ4ZTAyMjkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lRmllbGQvYWZ0ZXJDb2xsaXNpb25zSW5NZXRob2QuamF2YQpAQCAtMCwwICsxLDE0IEBACitjbGFzcyBBIHsKKyAgICBpbnQgbmV3RmllbGROYW1lOworCisgICAgaW50IG1ldGhvZChpbnQgbmV3RmllbGROYW1lKSB7CisgICAgICAgIGlmKG5ld0ZpZWxkTmFtZSA9PSAwKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubmV3RmllbGROYW1lOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgaW50IG5ld0ZpZWxkTmFtZSA9IHRoaXMubmV3RmllbGROYW1lOworICAgICAgICAgICAgcmV0dXJuIHRoaXMubmV3RmllbGROYW1lICsgbmV3RmllbGROYW1lOworICAgICAgICB9CisgICB9Cit9CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVGaWVsZC9hZnRlckNvbGxpc2lvbnNJbk1ldGhvZE9mU3ViQ2xhc3MuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVGaWVsZC9hZnRlckNvbGxpc2lvbnNJbk1ldGhvZE9mU3ViQ2xhc3MuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YWZkMThlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbmFtZUZpZWxkL2FmdGVyQ29sbGlzaW9uc0luTWV0aG9kT2ZTdWJDbGFzcy5qYXZhCkBAIC0wLDAgKzEsMTYgQEAKK2NsYXNzIEEgeworICAgaW50IG5ld0ZpZWxkTmFtZTsKK30KKyAgIAorY2xhc3MgQiBleHRlbmRzIEEgeworICAgaW50IG1ldGhvZChpbnQgbmV3RmllbGROYW1lKSB7CisgICAgICAgIGlmKG5ld0ZpZWxkTmFtZSA9PSAwKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubmV3RmllbGROYW1lOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgaW50IG5ld0ZpZWxkTmFtZSA9IHRoaXMubmV3RmllbGROYW1lOworICAgICAgICAgICAgcmV0dXJuIHRoaXMubmV3RmllbGROYW1lICsgbmV3RmllbGROYW1lOworICAgICAgICB9CisgICB9Cit9CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVGaWVsZC9hZnRlckNvbGxpc2lvbnNSZW5hbWluZ0ZpZWxkV2l0aFNldHRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbmFtZUZpZWxkL2FmdGVyQ29sbGlzaW9uc1JlbmFtaW5nRmllbGRXaXRoU2V0dGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTkwYzUxMwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVGaWVsZC9hZnRlckNvbGxpc2lvbnNSZW5hbWluZ0ZpZWxkV2l0aFNldHRlci5qYXZhCkBAIC0wLDAgKzEsNyBAQAorcHVibGljIGNsYXNzIFRlc3QgeworICAgIHByaXZhdGUgYm9vbGVhbiB1dG07CisKKyAgICBwdWJsaWMgdm9pZCBzZXRVdG0oYm9vbGVhbiB1dG0pIHsKKyAgICAgICAgdGhpcy51dG0gPSB1dG07CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVGaWVsZC9hZnRlckVudW1Db25zdGFudFdpdGhDb25zdHJ1Y3Rvci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbmFtZUZpZWxkL2FmdGVyRW51bUNvbnN0YW50V2l0aENvbnN0cnVjdG9yLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODU0ZWVmYwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVGaWVsZC9hZnRlckVudW1Db25zdGFudFdpdGhDb25zdHJ1Y3Rvci5qYXZhCkBAIC0wLDAgKzEsOCBAQAorcHVibGljIGVudW0gRm9vIHsKKworICBuZXdOYW1lKDY5KTsKKworICBGb28oaW50IGJhcikKKyAgeworICB9Cit9OwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVGaWVsZC9hZnRlckVudW1Db25zdGFudFdpdGhJbml0aWFsaXplci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbmFtZUZpZWxkL2FmdGVyRW51bUNvbnN0YW50V2l0aEluaXRpYWxpemVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2NjMWRkNAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVGaWVsZC9hZnRlckVudW1Db25zdGFudFdpdGhJbml0aWFsaXplci5qYXZhCkBAIC0wLDAgKzEsMTEgQEAKK3B1YmxpYyBlbnVtIE15RW51bQoreworICAgIEFBQSB7CisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgU3RyaW5nIHRvU3RyaW5nKCkgeworICAgICAgICAgICAgcmV0dXJuICJhIjsKKyAgICAgICAgfQorICAgIH0sCisgICAgQiwKKyAgICBDCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbmFtZUZpZWxkL2FmdGVyRmllbGRJbkNvbHVtbnMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVGaWVsZC9hZnRlckZpZWxkSW5Db2x1bW5zLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjJmNzM5NwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVGaWVsZC9hZnRlckZpZWxkSW5Db2x1bW5zLmphdmEKQEAgLTAsMCArMSwyMyBAQAorLyoKKyAqIENvcHlyaWdodCAyMDAwLTIwMTIgSmV0QnJhaW5zIHMuci5vLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK2NsYXNzIFRlc3QgeworICAgIGludCBqaiAgICAgICAgICAgICAgICA9IDE7CisgICAgaW50IGZpZWxkV2l0aExvbmdOYW1lID0gMjsKKworICAgIHZvaWQgdGVzdCgpIHsKKyAgICAgICAgamogPSAzOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lRmllbGQvYWZ0ZXJIaWRlc091dGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lRmllbGQvYWZ0ZXJIaWRlc091dGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjVmOWQ0MwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVGaWVsZC9hZnRlckhpZGVzT3V0ZXIuamF2YQpAQCAtMCwwICsxLDE3IEBACitjbGFzcyBGb28geworICAgIHB1YmxpYyBpbnQgeDsKKworICAgIHB1YmxpYyB2b2lkIGZvbygpIHsKKyAgICAgICAgaW50IHkgPSAwOworICAgICAgICB5ID0geCArIDE7CisgICAgfQorCisgICAgcHVibGljIGNsYXNzIElubmVyIHsKKyAgICAgICAgcHVibGljIGludCA8Y2FyZXQ+eDsKKworICAgICAgICBwdWJsaWMgdm9pZCBmb28oKSB7CisgICAgICAgICAgICB4ID0gbmV3IEZvbygpLnggKyAxOworICAgICAgICAgICAgeCA9IEZvby50aGlzLnggKyAxOworICAgICAgICB9CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbmFtZUZpZWxkL2FmdGVyTm9uTm9ybWFsaXplZEZpZWxkcy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbmFtZUZpZWxkL2FmdGVyTm9uTm9ybWFsaXplZEZpZWxkcy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM2MzcyMTMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lRmllbGQvYWZ0ZXJOb25Ob3JtYWxpemVkRmllbGRzLmphdmEKQEAgLTAsMCArMSw4IEBACitwdWJsaWMgY2xhc3MgVGVzdFJlZmFjdG9yCit7CitwdWJsaWMgU3RyaW5nIHVpVGVzdDEgPSBuZXcgU3RyaW5nKCJUZXN0MSIpLAorbmV3RmllbGQgPSBuZXcgU3RyaW5nKCJUZXN0MiIpLAordWlUZXN0MyA9IG5ldyBTdHJpbmcoIlRlc3QxIik7Cit7IFN5c3RlbS5vdXQucHJpbnRsbihuZXdGaWVsZCk7fQorCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbmFtZUZpZWxkL2FmdGVyU2ltcGxlRmllbGRSZW5hbWluZy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbmFtZUZpZWxkL2FmdGVyU2ltcGxlRmllbGRSZW5hbWluZy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ1MDIyZWMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lRmllbGQvYWZ0ZXJTaW1wbGVGaWVsZFJlbmFtaW5nLmphdmEKQEAgLTAsMCArMSw5IEBACitjbGFzcyBBIHsKKyAgICBpbnQgbXlOZXdGaWVsZDsKK30KKworY2xhc3MgQiB7CisgICAgaW50IG1ldGhvZChBIGEpIHsKKyAgICAgICAgcmV0dXJuIEEubXlOZXdGaWVsZDsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbmFtZUZpZWxkL2JlZm9yZUNvbGxpc2lvbnNJbk1ldGhvZC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbmFtZUZpZWxkL2JlZm9yZUNvbGxpc2lvbnNJbk1ldGhvZC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgyNWIxODAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lRmllbGQvYmVmb3JlQ29sbGlzaW9uc0luTWV0aG9kLmphdmEKQEAgLTAsMCArMSwxNCBAQAorY2xhc3MgQSB7CisgICAgaW50IDxjYXJldD5maWVsZFRvQmVSZW5hbWVkOworCisgICAgaW50IG1ldGhvZChpbnQgbmV3RmllbGROYW1lKSB7CisgICAgICAgIGlmKG5ld0ZpZWxkTmFtZSA9PSAwKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZpZWxkVG9CZVJlbmFtZWQ7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBpbnQgbmV3RmllbGROYW1lID0gZmllbGRUb0JlUmVuYW1lZDsKKyAgICAgICAgICAgIHJldHVybiBmaWVsZFRvQmVSZW5hbWVkICsgbmV3RmllbGROYW1lOworICAgICAgICB9CisgICB9Cit9CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVGaWVsZC9iZWZvcmVDb2xsaXNpb25zSW5NZXRob2RPZlN1YkNsYXNzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lRmllbGQvYmVmb3JlQ29sbGlzaW9uc0luTWV0aG9kT2ZTdWJDbGFzcy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRjYmZiODUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lRmllbGQvYmVmb3JlQ29sbGlzaW9uc0luTWV0aG9kT2ZTdWJDbGFzcy5qYXZhCkBAIC0wLDAgKzEsMTYgQEAKK2NsYXNzIEEgeworICAgaW50IDxjYXJldD5maWVsZFRvQmVSZW5hbWVkOworfQorICAgCitjbGFzcyBCIGV4dGVuZHMgQSB7CisgICBpbnQgbWV0aG9kKGludCBuZXdGaWVsZE5hbWUpIHsKKyAgICAgICAgaWYobmV3RmllbGROYW1lID09IDApIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmllbGRUb0JlUmVuYW1lZDsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGludCBuZXdGaWVsZE5hbWUgPSBmaWVsZFRvQmVSZW5hbWVkOworICAgICAgICAgICAgcmV0dXJuIGZpZWxkVG9CZVJlbmFtZWQgKyBuZXdGaWVsZE5hbWU7CisgICAgICAgIH0KKyAgIH0KK30KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbmFtZUZpZWxkL2JlZm9yZUNvbGxpc2lvbnNSZW5hbWluZ0ZpZWxkV2l0aFNldHRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbmFtZUZpZWxkL2JlZm9yZUNvbGxpc2lvbnNSZW5hbWluZ0ZpZWxkV2l0aFNldHRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU5NTExMjYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lRmllbGQvYmVmb3JlQ29sbGlzaW9uc1JlbmFtaW5nRmllbGRXaXRoU2V0dGVyLmphdmEKQEAgLTAsMCArMSw3IEBACitwdWJsaWMgY2xhc3MgVGVzdCB7CisgICAgcHJpdmF0ZSBib29sZWFuIDxjYXJldD5pc1VUTTsKKworICAgIHB1YmxpYyB2b2lkIHNldFVUTShib29sZWFuIFVUTSkgeworICAgICAgICBpc1VUTSA9IFVUTTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbmFtZUZpZWxkL2JlZm9yZUVudW1Db25zdGFudFdpdGhDb25zdHJ1Y3Rvci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbmFtZUZpZWxkL2JlZm9yZUVudW1Db25zdGFudFdpdGhDb25zdHJ1Y3Rvci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAwNmQyNzAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lRmllbGQvYmVmb3JlRW51bUNvbnN0YW50V2l0aENvbnN0cnVjdG9yLmphdmEKQEAgLTAsMCArMSw4IEBACitwdWJsaWMgZW51bSBGb28geworCisgIDxjYXJldD5tZW1iZXIoNjkpOworCisgIEZvbyhpbnQgYmFyKQorICB7CisgIH0KK307ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbmFtZUZpZWxkL2JlZm9yZUVudW1Db25zdGFudFdpdGhJbml0aWFsaXplci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbmFtZUZpZWxkL2JlZm9yZUVudW1Db25zdGFudFdpdGhJbml0aWFsaXplci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY2NjM0NmMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lRmllbGQvYmVmb3JlRW51bUNvbnN0YW50V2l0aEluaXRpYWxpemVyLmphdmEKQEAgLTAsMCArMSwxMSBAQAorcHVibGljIGVudW0gTXlFbnVtCit7CisgICAgPGNhcmV0PkEgeworICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHVibGljIFN0cmluZyB0b1N0cmluZygpIHsKKyAgICAgICAgICAgIHJldHVybiAiYSI7CisgICAgICAgIH0KKyAgICB9LAorICAgIEIsCisgICAgQworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVGaWVsZC9iZWZvcmVGaWVsZEluQ29sdW1ucy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbmFtZUZpZWxkL2JlZm9yZUZpZWxkSW5Db2x1bW5zLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWUyMTQyMDEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lRmllbGQvYmVmb3JlRmllbGRJbkNvbHVtbnMuamF2YQpAQCAtMCwwICsxLDIzIEBACisvKgorICogQ29weXJpZ2h0IDIwMDAtMjAxMiBKZXRCcmFpbnMgcy5yLm8uCisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworY2xhc3MgVGVzdCB7CisgICAgaW50IGkgICAgICAgICAgICAgICAgID0gMTsKKyAgICBpbnQgZmllbGRXaXRoTG9uZ05hbWUgPSAyOworCisgICAgdm9pZCB0ZXN0KCkgeworICAgICAgICA8Y2FyZXQ+aSA9IDM7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVGaWVsZC9iZWZvcmVIaWRlc091dGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lRmllbGQvYmVmb3JlSGlkZXNPdXRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg1MDA3ZmQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lRmllbGQvYmVmb3JlSGlkZXNPdXRlci5qYXZhCkBAIC0wLDAgKzEsMTcgQEAKK2NsYXNzIEZvbyB7CisgICAgcHVibGljIGludCB4OworCisgICAgcHVibGljIHZvaWQgZm9vKCkgeworICAgICAgICBpbnQgeSA9IDA7CisgICAgICAgIHkgPSB4ICsgMTsKKyAgICB9CisKKyAgICBwdWJsaWMgY2xhc3MgSW5uZXIgeworICAgICAgICBwdWJsaWMgaW50IDxjYXJldD56OworCisgICAgICAgIHB1YmxpYyB2b2lkIGZvbygpIHsKKyAgICAgICAgICAgIHogPSBuZXcgRm9vKCkueCArIDE7CisgICAgICAgICAgICB6ID0geCArIDE7CisgICAgICAgIH0KKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lRmllbGQvYmVmb3JlTm9uTm9ybWFsaXplZEZpZWxkcy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbmFtZUZpZWxkL2JlZm9yZU5vbk5vcm1hbGl6ZWRGaWVsZHMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNjI4MmFjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbmFtZUZpZWxkL2JlZm9yZU5vbk5vcm1hbGl6ZWRGaWVsZHMuamF2YQpAQCAtMCwwICsxLDggQEAKK3B1YmxpYyBjbGFzcyBUZXN0UmVmYWN0b3IKK3sKK3B1YmxpYyBTdHJpbmcgdWlUZXN0MSA9IG5ldyBTdHJpbmcoIlRlc3QxIiksCit1aVRlc3QyPGNhcmV0PiA9IG5ldyBTdHJpbmcoIlRlc3QyIiksCit1aVRlc3QzID0gbmV3IFN0cmluZygiVGVzdDEiKTsKK3sgU3lzdGVtLm91dC5wcmludGxuKHVpVGVzdDIpO30KKworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVGaWVsZC9iZWZvcmVSZW5hbWVXcm9uZ1JlZkRpc2FibGVkLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lRmllbGQvYmVmb3JlUmVuYW1lV3JvbmdSZWZEaXNhYmxlZC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNlMDYzZjIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lRmllbGQvYmVmb3JlUmVuYW1lV3JvbmdSZWZEaXNhYmxlZC5qYXZhCkBAIC0wLDAgKzEsOSBAQAorY2xhc3MgQSB7CisgICAgcHJpdmF0ZSBpbnQgbXlGaWVsZDsKK30KKworY2xhc3MgQiBleHRlbmRzIEEgeworICAgIHZvaWQgbWV0aG9kKCkgeworICAgICAgICBteUZpPGNhcmV0PmVsZDsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbmFtZUZpZWxkL2JlZm9yZVNpbXBsZUZpZWxkUmVuYW1pbmcuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVGaWVsZC9iZWZvcmVTaW1wbGVGaWVsZFJlbmFtaW5nLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjIwZmM4NwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVGaWVsZC9iZWZvcmVTaW1wbGVGaWVsZFJlbmFtaW5nLmphdmEKQEAgLTAsMCArMSw5IEBACitjbGFzcyBBIHsKKyAgICBpbnQgPGNhcmV0Pm15RmllbGQ7Cit9CisKK2NsYXNzIEIgeworICAgIGludCBtZXRob2QoQSBhKSB7CisgICAgICAgIHJldHVybiBBLm15RmllbGQ7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVJbnBsYWNlL0NsYXNzV2l0aE11bHRpcGxlQ29uc3RydWN0b3JzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lSW5wbGFjZS9DbGFzc1dpdGhNdWx0aXBsZUNvbnN0cnVjdG9ycy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcxMGZmZDUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lSW5wbGFjZS9DbGFzc1dpdGhNdWx0aXBsZUNvbnN0cnVjdG9ycy5qYXZhCkBAIC0wLDAgKzEsMTMgQEAKK3B1YmxpYyBjbGFzcyBDb25zdHJ1Y3RvciB7CisgIHB1YmxpYyBDb25zdHJ1Y3RvcigpIHsKKyAgfQorCisgIHB1YmxpYyBDb25zdHJ1Y3RvcihpbnQgaSkgeworICAgIFN5c3RlbS5vdXQucHJpbnRsbihpKTsKKyAgfQorCisgIHZvaWQgZm9vKCkgeworICAgIGZpbmFsIENvbnN0cjxjYXJldD51Y3RvciBjb25zdHJ1Y3RvciA9IG5ldyBDb25zdHJ1Y3RvcigpOworICAgIFN5c3RlbS5vdXQucHJpbnRsbihjb25zdHJ1Y3Rvcik7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lSW5wbGFjZS9DbGFzc1dpdGhNdWx0aXBsZUNvbnN0cnVjdG9yc19hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbmFtZUlucGxhY2UvQ2xhc3NXaXRoTXVsdGlwbGVDb25zdHJ1Y3RvcnNfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MTcwOThkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbmFtZUlucGxhY2UvQ2xhc3NXaXRoTXVsdGlwbGVDb25zdHJ1Y3RvcnNfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDEzIEBACitwdWJsaWMgY2xhc3MgQmFyIHsKKyAgcHVibGljIEJhcigpIHsKKyAgfQorCisgIHB1YmxpYyBCYXIoaW50IGkpIHsKKyAgICBTeXN0ZW0ub3V0LnByaW50bG4oaSk7CisgIH0KKworICB2b2lkIGZvbygpIHsKKyAgICBmaW5hbCBCYXIgYmFyID0gbmV3IEJhcigpOworICAgIFN5c3RlbS5vdXQucHJpbnRsbihiYXIpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbmFtZUlucGxhY2UvQ29uZmxpY3RpbmdNZXRob2ROYW1lLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lSW5wbGFjZS9Db25mbGljdGluZ01ldGhvZE5hbWUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYjEyZDExCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbmFtZUlucGxhY2UvQ29uZmxpY3RpbmdNZXRob2ROYW1lLmphdmEKQEAgLTAsMCArMSwxMiBAQAorY2xhc3MgRm9vIHsKKyAgdm9pZCBmb28oKXt9CisgIHZvaWQgYmFyKCkgeworICAgIGZvbygpOworICB9Cit9CisKK2NsYXNzIEZvb0ltcGwgZXh0ZW5kcyBGb28geworICB2b2lkIGY8Y2FyZXQ+b28oKSB7CisgICAgc3VwZXIuZm9vKCk7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lSW5wbGFjZS9Db25mbGljdGluZ01ldGhvZE5hbWVfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVJbnBsYWNlL0NvbmZsaWN0aW5nTWV0aG9kTmFtZV9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhiNzYwN2UKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lSW5wbGFjZS9Db25mbGljdGluZ01ldGhvZE5hbWVfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDEyIEBACitjbGFzcyBGb28geworICB2b2lkIGZvbygpe30KKyAgdm9pZCBiYXIoKSB7CisgICAgZm9vKCk7CisgIH0KK30KKworY2xhc3MgRm9vSW1wbCBleHRlbmRzIEZvbyB7CisgIHZvaWQgZm9vKCkgeworICAgIHN1cGVyLmZvbygpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbmFtZUlucGxhY2UvQ29uc3RydWN0b3IuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVJbnBsYWNlL0NvbnN0cnVjdG9yLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDdhNzE2YgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVJbnBsYWNlL0NvbnN0cnVjdG9yLmphdmEKQEAgLTAsMCArMSw4IEBACitwdWJsaWMgY2xhc3MgQ29uc3RydWN0b3IgeworICBwdWJsaWMgQ29uc3RydWN0b3IoKSB7CisgIH0KKyAgdm9pZCBmb28oKSB7CisgICAgZmluYWwgQ29uc3RydWN0b3IgY29uc3RydWN0b3IgPSBuZXcgQ288Y2FyZXQ+bnN0cnVjdG9yKCk7CisgICAgU3lzdGVtLm91dC5wcmludGxuKGNvbnN0cnVjdG9yKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVJbnBsYWNlL0NvbnN0cnVjdG9yX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lSW5wbGFjZS9Db25zdHJ1Y3Rvcl9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM1OTQzNDEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lSW5wbGFjZS9Db25zdHJ1Y3Rvcl9hZnRlci5qYXZhCkBAIC0wLDAgKzEsOCBAQAorcHVibGljIGNsYXNzIEJhciB7CisgIHB1YmxpYyBCYXIoKSB7CisgIH0KKyAgdm9pZCBmb28oKSB7CisgICAgZmluYWwgQmFyIGJhciA9IG5ldyBCYXIoKTsKKyAgICBTeXN0ZW0ub3V0LnByaW50bG4oYmFyKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVJbnBsYWNlL0VudW1Db25zdHJ1Y3Rvci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbmFtZUlucGxhY2UvRW51bUNvbnN0cnVjdG9yLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjI1ZWYxMAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVJbnBsYWNlL0VudW1Db25zdHJ1Y3Rvci5qYXZhCkBAIC0wLDAgKzEsOCBAQAorZW51bSBGb28geworICBCQVIsCisgIEJBWgorICA7CisKKyAgRm88Y2FyZXQ+bygpIHsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVJbnBsYWNlL0VudW1Db25zdHJ1Y3Rvcl9hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbmFtZUlucGxhY2UvRW51bUNvbnN0cnVjdG9yX2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODNmZDY2MgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVJbnBsYWNlL0VudW1Db25zdHJ1Y3Rvcl9hZnRlci5qYXZhCkBAIC0wLDAgKzEsOCBAQAorZW51bSBCYXIgeworICBCQVIsCisgIEJBWgorICA7CisKKyAgQmFyKCkgeworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbmFtZUlucGxhY2UvSW5uZXJDbGFzcy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbmFtZUlucGxhY2UvSW5uZXJDbGFzcy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVkZjdkYTIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lSW5wbGFjZS9Jbm5lckNsYXNzLmphdmEKQEAgLTAsMCArMSwxNSBAQAorcHVibGljIGNsYXNzIFJlc291cmNlTG9jYXRvciB7CisgICAgcHJpdmF0ZSBDb250ZW50Q29udGFpbnNDaGVja2VyIG15Q29udGVudENvbnRhaW5zQ2hlY2tlcjsKKyAgICBwcml2YXRlIERlbHRhSTxjYXJldD5uZm9HZXR0ZXIgbXlEZWx0YUluZm9HZXR0ZXI7CisKKworICAgIHByaXZhdGUgY2xhc3MgQ29udGVudENvbnRhaW5zQ2hlY2tlciB7CisKKyAgICB9CisKKyAgICBwcml2YXRlIGNsYXNzIFJldmlzaW9uSW5mb0NvbnRhaW5zQ2hlY2tlciB7CisgICAgfQorCisgICAgcHJpdmF0ZSBjbGFzcyBEZWx0YUluZm9HZXR0ZXIgeworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVJbnBsYWNlL0lubmVyQ2xhc3NfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVJbnBsYWNlL0lubmVyQ2xhc3NfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNWU1ZDFmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbmFtZUlucGxhY2UvSW5uZXJDbGFzc19hZnRlci5qYXZhCkBAIC0wLDAgKzEsMTUgQEAKK3B1YmxpYyBjbGFzcyBSZXNvdXJjZUxvY2F0b3IgeworICAgIHByaXZhdGUgQ29udGVudENvbnRhaW5zQ2hlY2tlciBteUNvbnRlbnRDb250YWluc0NoZWNrZXI7CisgICAgcHJpdmF0ZSBORVdfTkFNRSBteU5FV05BTUU7CisKKworICAgIHByaXZhdGUgY2xhc3MgQ29udGVudENvbnRhaW5zQ2hlY2tlciB7CisKKyAgICB9CisKKyAgICBwcml2YXRlIGNsYXNzIFJldmlzaW9uSW5mb0NvbnRhaW5zQ2hlY2tlciB7CisgICAgfQorCisgICAgcHJpdmF0ZSBjbGFzcyBORVdfTkFNRSB7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbmFtZUlucGxhY2UvTWV0aG9kV2l0aEphdmFkb2NSZWYuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVJbnBsYWNlL01ldGhvZFdpdGhKYXZhZG9jUmVmLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjgwN2FmYwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVJbnBsYWNlL01ldGhvZFdpdGhKYXZhZG9jUmVmLmphdmEKQEAgLTAsMCArMSwxMSBAQAorcHVibGljIGNsYXNzIFJlZmFjdG9yQnVnIHsKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgc29tPGNhcmV0PmV0aGluZyhpbnQgYSwgZmxvYXQgYikgeworICAgIH0KKworICAgIC8qKgorICAgICAqIEBzZWUgI3NvbWV0aGluZyhpbnQsIGZsb2F0KQorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBzb21ldGhpbmdFbHNlKCkgeworCisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbmFtZUlucGxhY2UvTWV0aG9kV2l0aEphdmFkb2NSZWZfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVJbnBsYWNlL01ldGhvZFdpdGhKYXZhZG9jUmVmX2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2ZiMWZjMgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVJbnBsYWNlL01ldGhvZFdpdGhKYXZhZG9jUmVmX2FmdGVyLmphdmEKQEAgLTAsMCArMSwxMSBAQAorcHVibGljIGNsYXNzIFJlZmFjdG9yQnVnIHsKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgYmFyKGludCBhLCBmbG9hdCBiKSB7CisgICAgfQorCisgICAgLyoqCisgICAgICogQHNlZSAjYmFyKGludCwgZmxvYXQpCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyB2b2lkIHNvbWV0aGluZ0Vsc2UoKSB7CisKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lSW5wbGFjZS9NZXRob2RXaXRoTWV0aG9kUmVmLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lSW5wbGFjZS9NZXRob2RXaXRoTWV0aG9kUmVmLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzkwMWFkZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVJbnBsYWNlL01ldGhvZFdpdGhNZXRob2RSZWYuamF2YQpAQCAtMCwwICsxLDE0IEBACitjbGFzcyBNeVRlc3QgeworICAgIAorICAgIHN0YXRpYyBjbGFzcyBGb28geworICAgIH0KKyAgICAKKyAgICBpbnRlcmZhY2UgSSB7CisgICAgICAgIEZvbyBtKCk7CisgICAgfQorICAgIHN0YXRpYyBGb28gZjxjYXJldD5vbygpIHsgcmV0dXJuIG51bGw7IH0KKworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKKyAgICAgICAgSSBpID0gTXlUZXN0Ojpmb287CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVJbnBsYWNlL01ldGhvZFdpdGhNZXRob2RSZWZfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVJbnBsYWNlL01ldGhvZFdpdGhNZXRob2RSZWZfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNTA3Njk4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbmFtZUlucGxhY2UvTWV0aG9kV2l0aE1ldGhvZFJlZl9hZnRlci5qYXZhCkBAIC0wLDAgKzEsMTQgQEAKK2NsYXNzIE15VGVzdCB7CisgICAgCisgICAgc3RhdGljIGNsYXNzIEZvbyB7CisgICAgfQorICAgIAorICAgIGludGVyZmFjZSBJIHsKKyAgICAgICAgRm9vIG0oKTsKKyAgICB9CisgICAgc3RhdGljIEZvbyBiYXIoKSB7IHJldHVybiBudWxsOyB9CisKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CisgICAgICAgIEkgaSA9IE15VGVzdDo6YmFyOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lSW5wbGFjZS9NdWx0aXBsZUNvbnN0cnVjdG9ycy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbmFtZUlucGxhY2UvTXVsdGlwbGVDb25zdHJ1Y3RvcnMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNmYwOTg2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbmFtZUlucGxhY2UvTXVsdGlwbGVDb25zdHJ1Y3RvcnMuamF2YQpAQCAtMCwwICsxLDEzIEBACitwdWJsaWMgY2xhc3MgQ29uc3RydWN0b3IgeworICBwdWJsaWMgQ29uc3RydWN0b3IoKSB7CisgIH0KKworICBwdWJsaWMgQ29uc3RydWN0b3IoaW50IGkpIHsKKyAgICBTeXN0ZW0ub3V0LnByaW50bG4oaSk7CisgIH0KKworICB2b2lkIGZvbygpIHsKKyAgICBmaW5hbCBDb25zdHJ1Y3RvciBjb25zdHJ1Y3RvciA9IG5ldyBDbzxjYXJldD5uc3RydWN0b3IoKTsKKyAgICBTeXN0ZW0ub3V0LnByaW50bG4oY29uc3RydWN0b3IpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbmFtZUlucGxhY2UvTXVsdGlwbGVDb25zdHJ1Y3RvcnNfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVJbnBsYWNlL011bHRpcGxlQ29uc3RydWN0b3JzX2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDE3MDk4ZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVJbnBsYWNlL011bHRpcGxlQ29uc3RydWN0b3JzX2FmdGVyLmphdmEKQEAgLTAsMCArMSwxMyBAQAorcHVibGljIGNsYXNzIEJhciB7CisgIHB1YmxpYyBCYXIoKSB7CisgIH0KKworICBwdWJsaWMgQmFyKGludCBpKSB7CisgICAgU3lzdGVtLm91dC5wcmludGxuKGkpOworICB9CisKKyAgdm9pZCBmb28oKSB7CisgICAgZmluYWwgQmFyIGJhciA9IG5ldyBCYXIoKTsKKyAgICBTeXN0ZW0ub3V0LnByaW50bG4oYmFyKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVJbnBsYWNlL1N1cGVyTWV0aG9kLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lSW5wbGFjZS9TdXBlck1ldGhvZC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZiMTJkMTEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lSW5wbGFjZS9TdXBlck1ldGhvZC5qYXZhCkBAIC0wLDAgKzEsMTIgQEAKK2NsYXNzIEZvbyB7CisgIHZvaWQgZm9vKCl7fQorICB2b2lkIGJhcigpIHsKKyAgICBmb28oKTsKKyAgfQorfQorCitjbGFzcyBGb29JbXBsIGV4dGVuZHMgRm9vIHsKKyAgdm9pZCBmPGNhcmV0Pm9vKCkgeworICAgIHN1cGVyLmZvbygpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbmFtZUlucGxhY2UvU3VwZXJNZXRob2RBbm9ueW1vdXNJbmhlcml0b3IuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVJbnBsYWNlL1N1cGVyTWV0aG9kQW5vbnltb3VzSW5oZXJpdG9yLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDMwZjJkYQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVJbnBsYWNlL1N1cGVyTWV0aG9kQW5vbnltb3VzSW5oZXJpdG9yLmphdmEKQEAgLTAsMCArMSwxNiBAQAorY2xhc3MgRGVtbyB7CisgICAgY2xhc3MgTXlFdmVudDxUPiB7fQorICAgIGludGVyZmFjZSBNeUV2ZW50TGlzdGVuZXI8VD4geworICAgICAgICB2b2lkIGFjdGlvbihNeUV2ZW50PFQ+IGV2ZW50KTsKKyAgICB9CisKKyAgICBjbGFzcyBEcml2ZXIgeworICAgICAgICB2b2lkIG1ldGhvZCgpIHsKKyAgICAgICAgICAgIE15RXZlbnRMaXN0ZW5lcjxPYmplY3Q+IGwgPSBuZXcgTXlFdmVudExpc3RlbmVyPE9iamVjdD4oKSB7CisgICAgICAgICAgICAgICAgcHVibGljIHZvaWQgYWM8Y2FyZXQ+dGlvbihNeUV2ZW50PE9iamVjdD4gZXZlbnQpIHsKKyAgICAgICAgICAgICAgICAgICAgLy9UbyBjaGFuZ2UgYm9keSBvZiBpbXBsZW1lbnRlZCBtZXRob2RzIHVzZSBGaWxlIHwgU2V0dGluZ3MgfCBGaWxlIFRlbXBsYXRlcy4KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9OworICAgICAgICB9CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVJbnBsYWNlL1N1cGVyTWV0aG9kQW5vbnltb3VzSW5oZXJpdG9yX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lSW5wbGFjZS9TdXBlck1ldGhvZEFub255bW91c0luaGVyaXRvcl9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVlOWY5YzYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lSW5wbGFjZS9TdXBlck1ldGhvZEFub255bW91c0luaGVyaXRvcl9hZnRlci5qYXZhCkBAIC0wLDAgKzEsMTYgQEAKK2NsYXNzIERlbW8geworICAgIGNsYXNzIE15RXZlbnQ8VD4ge30KKyAgICBpbnRlcmZhY2UgTXlFdmVudExpc3RlbmVyPFQ+IHsKKyAgICAgICAgdm9pZCB4eHgoTXlFdmVudDxUPiBldmVudCk7CisgICAgfQorCisgICAgY2xhc3MgRHJpdmVyIHsKKyAgICAgICAgdm9pZCBtZXRob2QoKSB7CisgICAgICAgICAgICBNeUV2ZW50TGlzdGVuZXI8T2JqZWN0PiBsID0gbmV3IE15RXZlbnRMaXN0ZW5lcjxPYmplY3Q+KCkgeworICAgICAgICAgICAgICAgIHB1YmxpYyB2b2lkIHh4eChNeUV2ZW50PE9iamVjdD4gZXZlbnQpIHsKKyAgICAgICAgICAgICAgICAgICAgLy9UbyBjaGFuZ2UgYm9keSBvZiBpbXBsZW1lbnRlZCBtZXRob2RzIHVzZSBGaWxlIHwgU2V0dGluZ3MgfCBGaWxlIFRlbXBsYXRlcy4KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9OworICAgICAgICB9CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVJbnBsYWNlL1N1cGVyTWV0aG9kX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lSW5wbGFjZS9TdXBlck1ldGhvZF9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIxZDI4Y2VlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbmFtZUlucGxhY2UvU3VwZXJNZXRob2RfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDEyIEBACitjbGFzcyBGb28geworICB2b2lkIHh4eCgpe30KKyAgdm9pZCBiYXIoKSB7CisgICAgeHh4KCk7CisgIH0KK30KKworY2xhc3MgRm9vSW1wbCBleHRlbmRzIEZvbyB7CisgIHZvaWQgeHh4KCkgeworICAgIHN1cGVyLnh4eCgpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbmFtZUxvY2FsL0NsYXNzTmFtZVVzZWRJbk1ldGhvZFJlZnMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVMb2NhbC9DbGFzc05hbWVVc2VkSW5NZXRob2RSZWZzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTgyZDY0MAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVMb2NhbC9DbGFzc05hbWVVc2VkSW5NZXRob2RSZWZzLmphdmEKQEAgLTAsMCArMSwxNyBAQAorcHVibGljIGNsYXNzIEZvb0JhciB7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgY2xhc3MgQjxjYXJldD5hciB7CisgICAgICAgIHByaXZhdGUgQmFyKCkgeworICAgICAgICB9CisgICAgfQorCisgICAgcHJpdmF0ZSBpbnRlcmZhY2UgSTxUPiB7CisgICAgICAgIFQgY3JlYXRlKCk7CisgICAgfQorCisgICAgc3RhdGljIHZvaWQgZm9vKEkgaW50Zikge30KKworCisgICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgICAgIGZvbyhCYXI6Om5ldyk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbmFtZUxvY2FsL0NsYXNzTmFtZVVzZWRJbk1ldGhvZFJlZnNfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVMb2NhbC9DbGFzc05hbWVVc2VkSW5NZXRob2RSZWZzX2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmVjOTA4YgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVMb2NhbC9DbGFzc05hbWVVc2VkSW5NZXRob2RSZWZzX2FmdGVyLmphdmEKQEAgLTAsMCArMSwxNyBAQAorcHVibGljIGNsYXNzIEZvb0JhciB7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgY2xhc3MgQmFyMSB7CisgICAgICAgIHByaXZhdGUgQmFyMSgpIHsKKyAgICAgICAgfQorICAgIH0KKworICAgIHByaXZhdGUgaW50ZXJmYWNlIEk8VD4geworICAgICAgICBUIGNyZWF0ZSgpOworICAgIH0KKworICAgIHN0YXRpYyB2b2lkIGZvbyhJIGludGYpIHt9CisKKworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHRocm93cyBFeGNlcHRpb24geworICAgICAgICBmb28oQmFyMTo6bmV3KTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lTG9jYWwvQ29uZmxpY3RXaXRoSmF2YWRvY1RhZy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbmFtZUxvY2FsL0NvbmZsaWN0V2l0aEphdmFkb2NUYWcuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lM2Q5MDViCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbmFtZUxvY2FsL0NvbmZsaWN0V2l0aEphdmFkb2NUYWcuamF2YQpAQCAtMCwwICsxLDkgQEAKK3B1YmxpYyBjbGFzcyBDb25mbGljdFdpdGhKYXZhZG9jVGFnIHsKKyAgLyoqCisgICAqIFJlY2VpdmVzIHNvbWUgcGFyYW0uCisgICAqIEBwYXJhbSBwYXJhbSBzb21lIHBhcmFtCisgICAqLworICBwdWJsaWMgdm9pZCBteShpbnQgPGNhcmV0PnBhcmFtKSB7CisgICAgU3lzdGVtLm91dC5wcmludGxuKCJwYXJhbT0iICsgcGFyYW0pOyAgLy8gcHJpbnQgcGFyYW0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVMb2NhbC9Db25mbGljdFdpdGhKYXZhZG9jVGFnX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lTG9jYWwvQ29uZmxpY3RXaXRoSmF2YWRvY1RhZ19hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMwMzIwNjMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lTG9jYWwvQ29uZmxpY3RXaXRoSmF2YWRvY1RhZ19hZnRlci5qYXZhCkBAIC0wLDAgKzEsOSBAQAorcHVibGljIGNsYXNzIENvbmZsaWN0V2l0aEphdmFkb2NUYWcgeworICAvKioKKyAgICogUmVjZWl2ZXMgc29tZSBpLgorICAgKiBAcGFyYW0gaSBzb21lIGkKKyAgICovCisgIHB1YmxpYyB2b2lkIG15KGludCBpKSB7CisgICAgU3lzdGVtLm91dC5wcmludGxuKCJpPSIgKyBpKTsgIC8vIHByaW50IGkKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVMb2NhbC9Db25mbGljdFdpdGhPdXRlckNsYXNzRmllbGQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVMb2NhbC9Db25mbGljdFdpdGhPdXRlckNsYXNzRmllbGQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NWUzMzc0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbmFtZUxvY2FsL0NvbmZsaWN0V2l0aE91dGVyQ2xhc3NGaWVsZC5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKK3B1YmxpYyBjbGFzcyBIZWxsb1dvcmxkIHsKKyAgICBwcml2YXRlIFN0cmluZyBmOworCisgICAgcHVibGljIGNsYXNzIEEgeworCisgICAgICAgIHB1YmxpYyB2b2lkIHRlc3QoKSB7CisgICAgICAgICAgICBTdHJpbmcgPGNhcmV0PnMgPSBmOworICAgICAgICB9CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVMb2NhbC9Db25mbGljdFdpdGhPdXRlckNsYXNzRmllbGRfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVMb2NhbC9Db25mbGljdFdpdGhPdXRlckNsYXNzRmllbGRfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZDk5MmQ4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbmFtZUxvY2FsL0NvbmZsaWN0V2l0aE91dGVyQ2xhc3NGaWVsZF9hZnRlci5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKK3B1YmxpYyBjbGFzcyBIZWxsb1dvcmxkIHsKKyAgICBwcml2YXRlIFN0cmluZyBmOworCisgICAgcHVibGljIGNsYXNzIEEgeworCisgICAgICAgIHB1YmxpYyB2b2lkIHRlc3QoKSB7CisgICAgICAgICAgICBTdHJpbmcgZiA9IEhlbGxvV29ybGQudGhpcy5mOworICAgICAgICB9CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVMb2NhbC9JREVBREVWMTM4NDkuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVMb2NhbC9JREVBREVWMTM4NDkuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45YTc1NGFlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbmFtZUxvY2FsL0lERUFERVYxMzg0OS5qYXZhCkBAIC0wLDAgKzEsNyBAQAorY2xhc3MgVGVzdCB7CisKKyAgICBwcml2YXRlIHZvaWQgdGVzdCgpIHsKKyAgICAgICAgU3RyaW5nIDxjYXJldD5hYWFhID0gInNkZiI7CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiXHRhYWFhIik7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVMb2NhbC9JREVBREVWMTM4NDlfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVMb2NhbC9JREVBREVWMTM4NDlfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zODc2OTA0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbmFtZUxvY2FsL0lERUFERVYxMzg0OV9hZnRlci5qYXZhCkBAIC0wLDAgKzEsNyBAQAorY2xhc3MgVGVzdCB7CisKKyAgICBwcml2YXRlIHZvaWQgdGVzdCgpIHsKKyAgICAgICAgU3RyaW5nIDxjYXJldD5hYWFhYSA9ICJzZGYiOworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIlx0YWFhYWEiKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbmFtZUxvY2FsL0lERUFERVYzMzIwLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lTG9jYWwvSURFQURFVjMzMjAuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMmM3NWRkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbmFtZUxvY2FsL0lERUFERVYzMzIwLmphdmEKQEAgLTAsMCArMSw4IEBACitjbGFzcyBDIHsKKyAgICBpbnQgZjsKKworICAgIHsKKyAgICAgICAgaW50IDxjYXJldD5qID0gMDsKKyAgICAgICAgaW50IGsgPSBmOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lTG9jYWwvSURFQURFVjMzMjBfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVMb2NhbC9JREVBREVWMzMyMF9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ3NjVlZWQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lTG9jYWwvSURFQURFVjMzMjBfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDggQEAKK2NsYXNzIEMgeworICAgIGludCBmOworCisgICAgeworICAgICAgICBpbnQgZiA9IDA7CisgICAgICAgIGludCBrID0gdGhpcy5mOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lTG9jYWwvUmVuYW1lRmllbGRXaXRoQ29uc3RydWN0b3JQYXJhbUF1dG9tYXRpYy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbmFtZUxvY2FsL1JlbmFtZUZpZWxkV2l0aENvbnN0cnVjdG9yUGFyYW1BdXRvbWF0aWMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NzhiMjRiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbmFtZUxvY2FsL1JlbmFtZUZpZWxkV2l0aENvbnN0cnVjdG9yUGFyYW1BdXRvbWF0aWMuamF2YQpAQCAtMCwwICsxLDcgQEAKK2NsYXNzIFRlc3QgeworICBwcml2YXRlIGJvb2xlYW4gaXM8Y2FyZXQ+RmxhZyA9IGZhbHNlOworCisgIHB1YmxpYyBUZXN0KGJvb2xlYW4gaXNGbGFnKSB7CisgICAgdGhpcy5pc0ZsYWcgPSBpc0ZsYWc7CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVMb2NhbC9SZW5hbWVGaWVsZFdpdGhDb25zdHJ1Y3RvclBhcmFtQXV0b21hdGljX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lTG9jYWwvUmVuYW1lRmllbGRXaXRoQ29uc3RydWN0b3JQYXJhbUF1dG9tYXRpY19hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM0NzQzMzIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lTG9jYWwvUmVuYW1lRmllbGRXaXRoQ29uc3RydWN0b3JQYXJhbUF1dG9tYXRpY19hZnRlci5qYXZhCkBAIC0wLDAgKzEsNyBAQAorY2xhc3MgVGVzdCB7CisgIHByaXZhdGUgYm9vbGVhbiBwcCA9IGZhbHNlOworCisgIHB1YmxpYyBUZXN0KGJvb2xlYW4gcHApIHsKKyAgICB0aGlzLnBwID0gcHA7CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVMb2NhbC9SZW5hbWVJblBsYWNlSW5TdGF0aWNDb250ZXh0V2l0aENvbmZsaWN0aW5nRmllbGQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVMb2NhbC9SZW5hbWVJblBsYWNlSW5TdGF0aWNDb250ZXh0V2l0aENvbmZsaWN0aW5nRmllbGQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xOTU3NjZiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbmFtZUxvY2FsL1JlbmFtZUluUGxhY2VJblN0YXRpY0NvbnRleHRXaXRoQ29uZmxpY3RpbmdGaWVsZC5qYXZhCkBAIC0wLDAgKzEsNyBAQAorY2xhc3MgWCB7CisgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIHMgPSAicyI7CisKKyAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nLi4uIGFyZ3MpIHsKKyAgICBTdHJpbmcgczxjYXJldD4xID0gczsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbmFtZUxvY2FsL1JlbmFtZUluUGxhY2VJblN0YXRpY0NvbnRleHRXaXRoQ29uZmxpY3RpbmdGaWVsZF9hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbmFtZUxvY2FsL1JlbmFtZUluUGxhY2VJblN0YXRpY0NvbnRleHRXaXRoQ29uZmxpY3RpbmdGaWVsZF9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRlODYyZjIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lTG9jYWwvUmVuYW1lSW5QbGFjZUluU3RhdGljQ29udGV4dFdpdGhDb25mbGljdGluZ0ZpZWxkX2FmdGVyLmphdmEKQEAgLTAsMCArMSw3IEBACitjbGFzcyBYIHsKKyAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgcyA9ICJzIjsKKworICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmcuLi4gYXJncykgeworICAgIFN0cmluZyBzID0gWC5zOworICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lTG9jYWwvUmVuYW1lSW5QbGFjZVBhcmFtSW5PdmVycmlkZXJBdXRvbWF0aWNSZW5hbWVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lTG9jYWwvUmVuYW1lSW5QbGFjZVBhcmFtSW5PdmVycmlkZXJBdXRvbWF0aWNSZW5hbWVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTYzODQzMQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVMb2NhbC9SZW5hbWVJblBsYWNlUGFyYW1Jbk92ZXJyaWRlckF1dG9tYXRpY1JlbmFtZXIuamF2YQpAQCAtMCwwICsxLDEyIEBACitwdWJsaWMgY2xhc3MgVGVzdCB7CisgIGludCBteUk7CisgIHZvaWQgZm9vKGludCA8Y2FyZXQ+aSl7CisgICAgbXlJID0gaTsKKyAgfQorfQorCitjbGFzcyBUZXN0SW1wbCBleHRlbmRzIFRlc3QgeworICB2b2lkIGZvbyhpbnQgaSl7CisgICAgc3VwZXIuZm9vKGkpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbmFtZUxvY2FsL1JlbmFtZUluUGxhY2VQYXJhbUluT3ZlcnJpZGVyQXV0b21hdGljUmVuYW1lckNvbmZsaWN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lTG9jYWwvUmVuYW1lSW5QbGFjZVBhcmFtSW5PdmVycmlkZXJBdXRvbWF0aWNSZW5hbWVyQ29uZmxpY3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NWE2MTUyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbmFtZUxvY2FsL1JlbmFtZUluUGxhY2VQYXJhbUluT3ZlcnJpZGVyQXV0b21hdGljUmVuYW1lckNvbmZsaWN0LmphdmEKQEAgLTAsMCArMSwxNCBAQAorcHVibGljIGNsYXNzIFRlc3QgeworICBpbnQgbXlJOworICB2b2lkIGZvbyhpbnQgPGNhcmV0PmkpeworICAgIG15SSA9IGk7CisgIH0KK30KKworY2xhc3MgVGVzdEltcGwgZXh0ZW5kcyBUZXN0IHsKKyAgdm9pZCBmb28oaW50IGkpeworICAgIHN1cGVyLmZvbyhpKTsKKyAgICBpbnQgcHAgPSAwOworICAgIFN5c3RlbS5vdXQucHJpbnRsbihwcCk7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lTG9jYWwvUmVuYW1lSW5QbGFjZVBhcmFtSW5PdmVycmlkZXJBdXRvbWF0aWNSZW5hbWVyQ29uZmxpY3RfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVMb2NhbC9SZW5hbWVJblBsYWNlUGFyYW1Jbk92ZXJyaWRlckF1dG9tYXRpY1JlbmFtZXJDb25mbGljdF9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI1OWM0NWUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lTG9jYWwvUmVuYW1lSW5QbGFjZVBhcmFtSW5PdmVycmlkZXJBdXRvbWF0aWNSZW5hbWVyQ29uZmxpY3RfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDE0IEBACitwdWJsaWMgY2xhc3MgVGVzdCB7CisgIGludCBteUk7CisgIHZvaWQgZm9vKGludCBwcCl7CisgICAgbXlJID0gcHA7CisgIH0KK30KKworY2xhc3MgVGVzdEltcGwgZXh0ZW5kcyBUZXN0IHsKKyAgdm9pZCBmb28oaW50IGkpeworICAgIHN1cGVyLmZvbyhpKTsKKyAgICBpbnQgcHAgPSAwOworICAgIFN5c3RlbS5vdXQucHJpbnRsbihwcCk7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lTG9jYWwvUmVuYW1lSW5QbGFjZVBhcmFtSW5PdmVycmlkZXJBdXRvbWF0aWNSZW5hbWVyX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lTG9jYWwvUmVuYW1lSW5QbGFjZVBhcmFtSW5PdmVycmlkZXJBdXRvbWF0aWNSZW5hbWVyX2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmEzZDlhYQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVMb2NhbC9SZW5hbWVJblBsYWNlUGFyYW1Jbk92ZXJyaWRlckF1dG9tYXRpY1JlbmFtZXJfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDEyIEBACitwdWJsaWMgY2xhc3MgVGVzdCB7CisgIGludCBteUk7CisgIHZvaWQgZm9vKGludCBwcCl7CisgICAgbXlJID0gcHA7CisgIH0KK30KKworY2xhc3MgVGVzdEltcGwgZXh0ZW5kcyBUZXN0IHsKKyAgdm9pZCBmb28oaW50IHBwKXsKKyAgICBzdXBlci5mb28ocHApOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbmFtZUxvY2FsL1JlbmFtZUluUGxhY2VRdWFsaWZ5RmllbGRSZWZlcmVuY2UuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVMb2NhbC9SZW5hbWVJblBsYWNlUXVhbGlmeUZpZWxkUmVmZXJlbmNlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjYyNjhiMwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVMb2NhbC9SZW5hbWVJblBsYWNlUXVhbGlmeUZpZWxkUmVmZXJlbmNlLmphdmEKQEAgLTAsMCArMSw2IEBACitjbGFzcyBUZXN0IHsKKyAgaW50IG15STsKKyAgdm9pZCBmb28oaW50IDxjYXJldD5pKXsKKyAgICBteUkgPSBpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbmFtZUxvY2FsL1JlbmFtZUluUGxhY2VRdWFsaWZ5RmllbGRSZWZlcmVuY2VJbkNoaWxkLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lTG9jYWwvUmVuYW1lSW5QbGFjZVF1YWxpZnlGaWVsZFJlZmVyZW5jZUluQ2hpbGQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MDI1MTdmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbmFtZUxvY2FsL1JlbmFtZUluUGxhY2VRdWFsaWZ5RmllbGRSZWZlcmVuY2VJbkNoaWxkLmphdmEKQEAgLTAsMCArMSwxMCBAQAoraW50ZXJmYWNlIEYgeworICB2b2lkIGZvbyhpbnQgPGNhcmV0PmkpOworfQorCitjbGFzcyBBIGltcGxlbWVudHMgRiB7CisgIGludCBteUk7CisgIHB1YmxpYyB2b2lkIGZvbyhpbnQgaSl7CisgICAgbXlJID0gaTsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbmFtZUxvY2FsL1JlbmFtZUluUGxhY2VRdWFsaWZ5RmllbGRSZWZlcmVuY2VJbkNoaWxkX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lTG9jYWwvUmVuYW1lSW5QbGFjZVF1YWxpZnlGaWVsZFJlZmVyZW5jZUluQ2hpbGRfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MzM4ODZlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbmFtZUxvY2FsL1JlbmFtZUluUGxhY2VRdWFsaWZ5RmllbGRSZWZlcmVuY2VJbkNoaWxkX2FmdGVyLmphdmEKQEAgLTAsMCArMSwxMCBAQAoraW50ZXJmYWNlIEYgeworICB2b2lkIGZvbyhpbnQgbXlJKTsKK30KKworY2xhc3MgQSBpbXBsZW1lbnRzIEYgeworICBpbnQgbXlJOworICBwdWJsaWMgdm9pZCBmb28oaW50IG15SSl7CisgICAgdGhpcy5teUkgPSBteUk7CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVMb2NhbC9SZW5hbWVJblBsYWNlUXVhbGlmeUZpZWxkUmVmZXJlbmNlX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lTG9jYWwvUmVuYW1lSW5QbGFjZVF1YWxpZnlGaWVsZFJlZmVyZW5jZV9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlmY2Y1N2IKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lTG9jYWwvUmVuYW1lSW5QbGFjZVF1YWxpZnlGaWVsZFJlZmVyZW5jZV9hZnRlci5qYXZhCkBAIC0wLDAgKzEsNiBAQAorY2xhc3MgVGVzdCB7CisgIGludCBteUk7CisgIHZvaWQgZm9vKGludCBteUkpeworICAgIHRoaXMubXlJID0gbXlJOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbmFtZUxvY2FsL1JlbmFtZUluUGxhY2VUaGlzTmVlZGVkLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lTG9jYWwvUmVuYW1lSW5QbGFjZVRoaXNOZWVkZWQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZTRjODU1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbmFtZUxvY2FsL1JlbmFtZUluUGxhY2VUaGlzTmVlZGVkLmphdmEKQEAgLTAsMCArMSwyNSBAQAorLyoKKyAqIENvcHlyaWdodCAyMDAwLTIwMTIgSmV0QnJhaW5zIHMuci5vLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK2NsYXNzIFRlc3QxIHsKKyAgICBjbGFzcyBBIHsKKyAgICAgICAgaW50IGE7CisgICAgfQorICAgIGNsYXNzIEIgZXh0ZW5kcyBBIHsKKyAgICAgICAgQihpbnQgPGNhcmV0PmIpIHsKKyAgICAgICAgICAgIGEgPSBiOworICAgICAgICB9CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbmFtZUxvY2FsL1JlbmFtZUluUGxhY2VUaGlzTmVlZGVkX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lTG9jYWwvUmVuYW1lSW5QbGFjZVRoaXNOZWVkZWRfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kY2IxMGE4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbmFtZUxvY2FsL1JlbmFtZUluUGxhY2VUaGlzTmVlZGVkX2FmdGVyLmphdmEKQEAgLTAsMCArMSwyNSBAQAorLyoKKyAqIENvcHlyaWdodCAyMDAwLTIwMTIgSmV0QnJhaW5zIHMuci5vLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK2NsYXNzIFRlc3QxIHsKKyAgICBjbGFzcyBBIHsKKyAgICAgICAgaW50IGE7CisgICAgfQorICAgIGNsYXNzIEIgZXh0ZW5kcyBBIHsKKyAgICAgICAgQihpbnQgYSkgeworICAgICAgICAgICAgdGhpcy5hID0gYTsKKyAgICAgICAgfQorICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVMb2NhbC9SZW5hbWVMb2NhbEluY29tcGxldGUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVMb2NhbC9SZW5hbWVMb2NhbEluY29tcGxldGUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NjQxMTJkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbmFtZUxvY2FsL1JlbmFtZUxvY2FsSW5jb21wbGV0ZS5qYXZhCkBAIC0wLDAgKzEsNyBAQAorcHVibGljIGNsYXNzIFJlbmFtZUxvY2FsSW5jb21wbGV0ZSB7CisgIHB1YmxpYyB2b2lkIHRlc3QoKSB7CisgICAgSW50ZWdlciA8Y2FyZXQ+aW50ZWdlciA9IDA7CisgICAgaW50ZWdlci4KKyAgICBEb3VibGUgeCA9IDM7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lTG9jYWwvUmVuYW1lTG9jYWxJbmNvbXBsZXRlX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lTG9jYWwvUmVuYW1lTG9jYWxJbmNvbXBsZXRlX2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2MzZDYzNwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVMb2NhbC9SZW5hbWVMb2NhbEluY29tcGxldGVfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDcgQEAKK3B1YmxpYyBjbGFzcyBSZW5hbWVMb2NhbEluY29tcGxldGUgeworICBwdWJsaWMgdm9pZCB0ZXN0KCkgeworICAgIEludGVnZXIgX2kgPSAwOworICAgIF9pLgorICAgIERvdWJsZSB4ID0gMzsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVMb2NhbC9SZW5hbWVQYXJhbUluY29tcGxldGUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVMb2NhbC9SZW5hbWVQYXJhbUluY29tcGxldGUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNTZhOWQ1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbmFtZUxvY2FsL1JlbmFtZVBhcmFtSW5jb21wbGV0ZS5qYXZhCkBAIC0wLDAgKzEsNiBAQAorcHVibGljIGNsYXNzIFJlbmFtZUxvY2FsSW5jb21wbGV0ZSB7CisgIHB1YmxpYyB2b2lkIHRlc3QoSW50ZWdlciA8Y2FyZXQ+aW50ZWdlcikgeworICAgIGludGVnZXIuCisgICAgRG91YmxlIHggPSAzOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbmFtZUxvY2FsL1JlbmFtZVBhcmFtSW5jb21wbGV0ZV9hZnRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbmFtZUxvY2FsL1JlbmFtZVBhcmFtSW5jb21wbGV0ZV9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRhMThhN2EKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lTG9jYWwvUmVuYW1lUGFyYW1JbmNvbXBsZXRlX2FmdGVyLmphdmEKQEAgLTAsMCArMSw2IEBACitwdWJsaWMgY2xhc3MgUmVuYW1lTG9jYWxJbmNvbXBsZXRlIHsKKyAgcHVibGljIHZvaWQgdGVzdChJbnRlZ2VyIF9pKSB7CisgICAgX2kuCisgICAgRG91YmxlIHggPSAzOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbmFtZUxvY2FsL1JlbmFtZVBhcmFtVW5pcXVlTmFtZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbmFtZUxvY2FsL1JlbmFtZVBhcmFtVW5pcXVlTmFtZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA4MGRhMzkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lTG9jYWwvUmVuYW1lUGFyYW1VbmlxdWVOYW1lLmphdmEKQEAgLTAsMCArMSwyNCBAQAoraW1wb3J0IGphdmEuYXd0Lio7CisKKy8qKgorICogQGF1dGhvciBwZWdvdgorICovCitwdWJsaWMgY2xhc3MgTWFjTWVzc2FnZXMgeworCisKKyAgcHVibGljIHN0YXRpYyB2b2lkIHNob3dPa01lc3NhZ2VEaWFsb2coU3RyaW5nIHRpdGxlLCBTdHJpbmcgbWVzc2FnZSwgU3RyaW5nIG9rVGV4dCwgV2luZG93IGNvPGNhcmV0Pm1wb25lbnQpIHsKKyAgICBzaG93TWVzc2FnZURpYWxvZyh0aXRsZSwgb2tUZXh0LCBudWxsLCBudWxsLCBtZXNzYWdlLCBjb21wb25lbnQpOworICB9CisKKworCisgIHB1YmxpYyBzdGF0aWMgaW50IHNob3dNZXNzYWdlRGlhbG9nKFN0cmluZyB0aXRsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZyBva1RleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmcgYWx0ZXJuYXRlVGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZyBjYW5jZWxUZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nIG1lc3NhZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXaW5kb3cgd2luZG93KSB7CisgICAgcmV0dXJuIDE7CisgIH0KKworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVMb2NhbC9SZW5hbWVSZXNvdXJjZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbmFtZUxvY2FsL1JlbmFtZVJlc291cmNlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzc0NzZkZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVMb2NhbC9SZW5hbWVSZXNvdXJjZS5qYXZhCkBAIC0wLDAgKzEsNyBAQAorcHVibGljIGNsYXNzIFRlc3QgeworICB2b2lkIG0oKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICB0cnkgKEF1dG9DbG9zZWFibGUgPGNhcmV0PnIgPSBudWxsOyBBdXRvQ2xvc2VhYmxlIHIyID0gcikgeworICAgICAgU3lzdGVtLm91dC5wcmludGxuKHIgKyAiLCAiICsgcjIpOworICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVMb2NhbC9SZW5hbWVSZXNvdXJjZUluUGxhY2UuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVMb2NhbC9SZW5hbWVSZXNvdXJjZUluUGxhY2UuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNzQ3NmRlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbmFtZUxvY2FsL1JlbmFtZVJlc291cmNlSW5QbGFjZS5qYXZhCkBAIC0wLDAgKzEsNyBAQAorcHVibGljIGNsYXNzIFRlc3QgeworICB2b2lkIG0oKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICB0cnkgKEF1dG9DbG9zZWFibGUgPGNhcmV0PnIgPSBudWxsOyBBdXRvQ2xvc2VhYmxlIHIyID0gcikgeworICAgICAgU3lzdGVtLm91dC5wcmludGxuKHIgKyAiLCAiICsgcjIpOworICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVMb2NhbC9SZW5hbWVSZXNvdXJjZUluUGxhY2VfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVMb2NhbC9SZW5hbWVSZXNvdXJjZUluUGxhY2VfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNDRmZWViCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbmFtZUxvY2FsL1JlbmFtZVJlc291cmNlSW5QbGFjZV9hZnRlci5qYXZhCkBAIC0wLDAgKzEsNyBAQAorcHVibGljIGNsYXNzIFRlc3QgeworICB2b2lkIG0oKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICB0cnkgKEF1dG9DbG9zZWFibGUgcjEgPSBudWxsOyBBdXRvQ2xvc2VhYmxlIHIyID0gcjEpIHsKKyAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihyMSArICIsICIgKyByMik7CisgICAgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbmFtZUxvY2FsL1JlbmFtZVJlc291cmNlX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lTG9jYWwvUmVuYW1lUmVzb3VyY2VfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNDRmZWViCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbmFtZUxvY2FsL1JlbmFtZVJlc291cmNlX2FmdGVyLmphdmEKQEAgLTAsMCArMSw3IEBACitwdWJsaWMgY2xhc3MgVGVzdCB7CisgIHZvaWQgbSgpIHRocm93cyBFeGNlcHRpb24geworICAgIHRyeSAoQXV0b0Nsb3NlYWJsZSByMSA9IG51bGw7IEF1dG9DbG9zZWFibGUgcjIgPSByMSkgeworICAgICAgU3lzdGVtLm91dC5wcmludGxuKHIxICsgIiwgIiArIHIyKTsKKyAgICB9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lTG9jYWwvUmVuYW1lV3JvbmdSZWYuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVMb2NhbC9SZW5hbWVXcm9uZ1JlZi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQwYmU3MGIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lTG9jYWwvUmVuYW1lV3JvbmdSZWYuamF2YQpAQCAtMCwwICsxLDcgQEAKK2NsYXNzIFRlc3QgeworICB2b2lkIGZvbygpIHsKKyAgICBpbnQgaSA9IDA7CisgICAgU3lzdGVtLm91dC5wcmludGxuKDxjYXJldD5rKTsKKyAgICBTeXN0ZW0ub3V0LnByaW50bG4oayk7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lTG9jYWwvUmVuYW1lV3JvbmdSZWZfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVMb2NhbC9SZW5hbWVXcm9uZ1JlZl9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlmZGVhOGUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lTG9jYWwvUmVuYW1lV3JvbmdSZWZfYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDcgQEAKK2NsYXNzIFRlc3QgeworICB2b2lkIGZvbygpIHsKKyAgICBpbnQgaSA9IDA7CisgICAgU3lzdGVtLm91dC5wcmludGxuKGkpOworICAgIFN5c3RlbS5vdXQucHJpbnRsbihpKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVNZXRob2QvbXVsdGkvYWxpZ25lZE11bHRpbGluZVBhcmFtZXRlcnMvYWZ0ZXIvQWxpZ25lZE11bHRpbGluZVBhcmFtZXRlcnMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVNZXRob2QvbXVsdGkvYWxpZ25lZE11bHRpbGluZVBhcmFtZXRlcnMvYWZ0ZXIvQWxpZ25lZE11bHRpbGluZVBhcmFtZXRlcnMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MWI2MWUxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbmFtZU1ldGhvZC9tdWx0aS9hbGlnbmVkTXVsdGlsaW5lUGFyYW1ldGVycy9hZnRlci9BbGlnbmVkTXVsdGlsaW5lUGFyYW1ldGVycy5qYXZhCkBAIC0wLDAgKzEsMTEgQEAKK3B1YmxpYyBjbGFzcyBBbGlnbmVkTXVsdGlsaW5lUGFyYW1ldGVycyB7CisKKyAgcHVibGljIHZvaWQgdGVzdDEyM2FzZChpbnQgaSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgaikgeworICB9CisKKyAgcHVibGljIHZvaWQgZm9vKCkgeworICAgIHRlc3QxMjNhc2QoMSwKKyAgICAgICAgICAgICAgIDIpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbmFtZU1ldGhvZC9tdWx0aS9hbGlnbmVkTXVsdGlsaW5lUGFyYW1ldGVycy9iZWZvcmUvQWxpZ25lZE11bHRpbGluZVBhcmFtZXRlcnMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVNZXRob2QvbXVsdGkvYWxpZ25lZE11bHRpbGluZVBhcmFtZXRlcnMvYmVmb3JlL0FsaWduZWRNdWx0aWxpbmVQYXJhbWV0ZXJzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGI4YmRhOAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVNZXRob2QvbXVsdGkvYWxpZ25lZE11bHRpbGluZVBhcmFtZXRlcnMvYmVmb3JlL0FsaWduZWRNdWx0aWxpbmVQYXJhbWV0ZXJzLmphdmEKQEAgLTAsMCArMSwxMSBAQAorcHVibGljIGNsYXNzIEFsaWduZWRNdWx0aWxpbmVQYXJhbWV0ZXJzIHsKKworICBwdWJsaWMgdm9pZCB0ZXN0MTIzKGludCBpLAorICAgICAgICAgICAgICAgICAgICAgIGludCBqKSB7CisgIH0KKworICBwdWJsaWMgdm9pZCBmb28oKSB7CisgICAgdGVzdDEyMygxLAorICAgICAgICAgICAgMik7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lTWV0aG9kL211bHRpL2RlZmF1bHRBbm5vdGF0aW9uTWV0aG9kL2FmdGVyL3BhY2sxL0EuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVNZXRob2QvbXVsdGkvZGVmYXVsdEFubm90YXRpb25NZXRob2QvYWZ0ZXIvcGFjazEvQS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE4NzdjNGYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lTWV0aG9kL211bHRpL2RlZmF1bHRBbm5vdGF0aW9uTWV0aG9kL2FmdGVyL3BhY2sxL0EuamF2YQpAQCAtMCwwICsxLDUgQEAKK3BhY2thZ2UgcGFjazE7CisKK3B1YmxpYyBAaW50ZXJmYWNlIEEgeworICAgIGludCBpbnRWYWx1ZSgpOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVNZXRob2QvbXVsdGkvZGVmYXVsdEFubm90YXRpb25NZXRob2QvYWZ0ZXIvcGFjazEvVXNhZ2UuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVNZXRob2QvbXVsdGkvZGVmYXVsdEFubm90YXRpb25NZXRob2QvYWZ0ZXIvcGFjazEvVXNhZ2UuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYTI0ZjBhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbmFtZU1ldGhvZC9tdWx0aS9kZWZhdWx0QW5ub3RhdGlvbk1ldGhvZC9hZnRlci9wYWNrMS9Vc2FnZS5qYXZhCkBAIC0wLDAgKzEsMTEgQEAKK3BhY2thZ2UgcGFjazE7CisKK2NsYXNzIFVzYWdlIHsKKyAgICBAQShpbnRWYWx1ZSA9IDExKQorICAgIHZvaWQgZm9vKCkgeworICAgIH0KKworICAgIEBBKGludFZhbHVlID0gNDIpCisgICAgdm9pZCBiYXIoKSB7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVNZXRob2QvbXVsdGkvZGVmYXVsdEFubm90YXRpb25NZXRob2QvYmVmb3JlL3BhY2sxL0EuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVNZXRob2QvbXVsdGkvZGVmYXVsdEFubm90YXRpb25NZXRob2QvYmVmb3JlL3BhY2sxL0EuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41Nzc3NjE0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbmFtZU1ldGhvZC9tdWx0aS9kZWZhdWx0QW5ub3RhdGlvbk1ldGhvZC9iZWZvcmUvcGFjazEvQS5qYXZhCkBAIC0wLDAgKzEsNSBAQAorcGFja2FnZSBwYWNrMTsKKworcHVibGljIEBpbnRlcmZhY2UgQSB7CisgICAgaW50IHZhbHVlKCk7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbmFtZU1ldGhvZC9tdWx0aS9kZWZhdWx0QW5ub3RhdGlvbk1ldGhvZC9iZWZvcmUvcGFjazEvVXNhZ2UuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVNZXRob2QvbXVsdGkvZGVmYXVsdEFubm90YXRpb25NZXRob2QvYmVmb3JlL3BhY2sxL1VzYWdlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTE4OGVlYgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVNZXRob2QvbXVsdGkvZGVmYXVsdEFubm90YXRpb25NZXRob2QvYmVmb3JlL3BhY2sxL1VzYWdlLmphdmEKQEAgLTAsMCArMSwxMSBAQAorcGFja2FnZSBwYWNrMTsKKworY2xhc3MgVXNhZ2UgeworICAgIEBBKDExKQorICAgIHZvaWQgZm9vKCkgeworICAgIH0KKworICAgIEBBKHZhbHVlID0gNDIpCisgICAgdm9pZCBiYXIoKSB7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVNZXRob2QvbXVsdGkvcmVuYW1lMkhpZGVGcm9tQW5vbnltb3VzL2FmdGVyL3AvRm9vLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lTWV0aG9kL211bHRpL3JlbmFtZTJIaWRlRnJvbUFub255bW91cy9hZnRlci9wL0Zvby5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEyNTBmODAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lTWV0aG9kL211bHRpL3JlbmFtZTJIaWRlRnJvbUFub255bW91cy9hZnRlci9wL0Zvby5qYXZhCkBAIC0wLDAgKzEsMzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwMC0yMDExIEpldEJyYWlucyBzLnIuby4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIHA7CisKK2NsYXNzIEZvbyB7CisgIHB1YmxpYyBCYXIgY3JlYXRlQmFyKCkgeworICAgIHJldHVybiBuZXcgQmFyKCkgeworICAgICAgcHVibGljIHZvaWQgYmF6eihpbnQgaSkgeworICAgICAgICBGb28udGhpcy5iYXp6KGkpOworICAgICAgfQorICAgIH07CisgIH0KKworICBwcml2YXRlIHZvaWQgYmF6eihpbnQgaSkgeworICB9CisKKyAgcHVibGljIGludGVyZmFjZSBCYXIgeworICAgIHZvaWQgYmF6eihpbnQgaSk7CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVNZXRob2QvbXVsdGkvcmVuYW1lMkhpZGVGcm9tQW5vbnltb3VzL2JlZm9yZS9wL0Zvby5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbmFtZU1ldGhvZC9tdWx0aS9yZW5hbWUySGlkZUZyb21Bbm9ueW1vdXMvYmVmb3JlL3AvRm9vLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGU5YWNjOAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVNZXRob2QvbXVsdGkvcmVuYW1lMkhpZGVGcm9tQW5vbnltb3VzL2JlZm9yZS9wL0Zvby5qYXZhCkBAIC0wLDAgKzEsMzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwMC0yMDExIEpldEJyYWlucyBzLnIuby4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIHA7CisKK2NsYXNzIEZvbyB7CisgIHB1YmxpYyBCYXIgY3JlYXRlQmFyKCkgeworICAgIHJldHVybiBuZXcgQmFyKCkgeworICAgICAgcHVibGljIHZvaWQgYmF6eihpbnQgaSkgeworICAgICAgICBidXp6KGkpOworICAgICAgfQorICAgIH07CisgIH0KKworICBwcml2YXRlIHZvaWQgYnV6eihpbnQgaSkgeworICB9CisKKyAgcHVibGljIGludGVyZmFjZSBCYXIgeworICAgIHZvaWQgYmF6eihpbnQgaSk7CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVNZXRob2QvbXVsdGkvcmVuYW1lMk92ZXJyaWRlRmluYWwvYWZ0ZXIvcC9BLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lTWV0aG9kL211bHRpL3JlbmFtZTJPdmVycmlkZUZpbmFsL2FmdGVyL3AvQS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM2NzZkZTQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lTWV0aG9kL211bHRpL3JlbmFtZTJPdmVycmlkZUZpbmFsL2FmdGVyL3AvQS5qYXZhCkBAIC0wLDAgKzEsMTYgQEAKK3BhY2thZ2UgcDsKK3B1YmxpYyBjbGFzcyBBIHsKKworICAgICAgICBwdWJsaWMgZmluYWwgdm9pZCBmaW5hbE1ldGhvZCgpIHsKKyAgICAgICAgfQorfQorCitjbGFzcyBCIGV4dGVuZHMgQSBpbXBsZW1lbnRzIEkgeworCisgICAgICAgIHB1YmxpYyB2b2lkIG1ldGhvZCgpIHsKKyAgICAgICAgfQorfQorCitpbnRlcmZhY2UgSSB7CisgICAgICAgIHZvaWQgbWV0aG9kKCk7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbmFtZU1ldGhvZC9tdWx0aS9yZW5hbWUyT3ZlcnJpZGVGaW5hbC9iZWZvcmUvcC9BLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lTWV0aG9kL211bHRpL3JlbmFtZTJPdmVycmlkZUZpbmFsL2JlZm9yZS9wL0EuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNjc2ZGU0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbmFtZU1ldGhvZC9tdWx0aS9yZW5hbWUyT3ZlcnJpZGVGaW5hbC9iZWZvcmUvcC9BLmphdmEKQEAgLTAsMCArMSwxNiBAQAorcGFja2FnZSBwOworcHVibGljIGNsYXNzIEEgeworCisgICAgICAgIHB1YmxpYyBmaW5hbCB2b2lkIGZpbmFsTWV0aG9kKCkgeworICAgICAgICB9Cit9CisKK2NsYXNzIEIgZXh0ZW5kcyBBIGltcGxlbWVudHMgSSB7CisKKyAgICAgICAgcHVibGljIHZvaWQgbWV0aG9kKCkgeworICAgICAgICB9Cit9CisKK2ludGVyZmFjZSBJIHsKKyAgICAgICAgdm9pZCBtZXRob2QoKTsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lTWV0aG9kL211bHRpL3N0YXRpY0ltcG9ydDEvYWZ0ZXIvcGFjazEvQS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbmFtZU1ldGhvZC9tdWx0aS9zdGF0aWNJbXBvcnQxL2FmdGVyL3BhY2sxL0EuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NTlhMmQyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbmFtZU1ldGhvZC9tdWx0aS9zdGF0aWNJbXBvcnQxL2FmdGVyL3BhY2sxL0EuamF2YQpAQCAtMCwwICsxLDYgQEAKK3BhY2thZ2UgcGFjazE7CisKK3B1YmxpYyBjbGFzcyBBIHsKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgcmVuYW1lZFN0YXRpY01ldGhvZChpbnQgaSkgeworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lTWV0aG9kL211bHRpL3N0YXRpY0ltcG9ydDEvYWZ0ZXIvcGFjazIvVXNhZ2UuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVNZXRob2QvbXVsdGkvc3RhdGljSW1wb3J0MS9hZnRlci9wYWNrMi9Vc2FnZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFhYzlmYmUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lTWV0aG9kL211bHRpL3N0YXRpY0ltcG9ydDEvYWZ0ZXIvcGFjazIvVXNhZ2UuamF2YQpAQCAtMCwwICsxLDkgQEAKK3BhY2thZ2UgcGFjazI7CisKK2ltcG9ydCBzdGF0aWMgcGFjazEuQS5yZW5hbWVkU3RhdGljTWV0aG9kOworCitjbGFzcyBVc2FnZSB7CisgICAgeworICAgICAgICByZW5hbWVkU3RhdGljTWV0aG9kKDI3KTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbmFtZU1ldGhvZC9tdWx0aS9zdGF0aWNJbXBvcnQxL2JlZm9yZS9wYWNrMS9BLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lTWV0aG9kL211bHRpL3N0YXRpY0ltcG9ydDEvYmVmb3JlL3BhY2sxL0EuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yOTNmNGQzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbmFtZU1ldGhvZC9tdWx0aS9zdGF0aWNJbXBvcnQxL2JlZm9yZS9wYWNrMS9BLmphdmEKQEAgLTAsMCArMSw2IEBACitwYWNrYWdlIHBhY2sxOworCitwdWJsaWMgY2xhc3MgQSB7CisgICAgcHVibGljIHN0YXRpYyB2b2lkIHN0YXRpY01ldGhvZChpbnQgaSkgeworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lTWV0aG9kL211bHRpL3N0YXRpY0ltcG9ydDEvYmVmb3JlL3BhY2syL1VzYWdlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lTWV0aG9kL211bHRpL3N0YXRpY0ltcG9ydDEvYmVmb3JlL3BhY2syL1VzYWdlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjMzODc3OQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVNZXRob2QvbXVsdGkvc3RhdGljSW1wb3J0MS9iZWZvcmUvcGFjazIvVXNhZ2UuamF2YQpAQCAtMCwwICsxLDkgQEAKK3BhY2thZ2UgcGFjazI7CisKK2ltcG9ydCBzdGF0aWMgcGFjazEuQS5zdGF0aWNNZXRob2Q7CisKK2NsYXNzIFVzYWdlIHsKKyAgICB7CisgICAgICAgIHN0YXRpY01ldGhvZCgyNyk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVNZXRob2QvbXVsdGkvc3RhdGljSW1wb3J0Mi9hZnRlci9wYWNrMS9BLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lTWV0aG9kL211bHRpL3N0YXRpY0ltcG9ydDIvYWZ0ZXIvcGFjazEvQS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY1OWEyZDIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lTWV0aG9kL211bHRpL3N0YXRpY0ltcG9ydDIvYWZ0ZXIvcGFjazEvQS5qYXZhCkBAIC0wLDAgKzEsNiBAQAorcGFja2FnZSBwYWNrMTsKKworcHVibGljIGNsYXNzIEEgeworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCByZW5hbWVkU3RhdGljTWV0aG9kKGludCBpKSB7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVNZXRob2QvbXVsdGkvc3RhdGljSW1wb3J0Mi9hZnRlci9wYWNrMi9Vc2FnZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbmFtZU1ldGhvZC9tdWx0aS9zdGF0aWNJbXBvcnQyL2FmdGVyL3BhY2syL1VzYWdlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDg3MDdlZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVNZXRob2QvbXVsdGkvc3RhdGljSW1wb3J0Mi9hZnRlci9wYWNrMi9Vc2FnZS5qYXZhCkBAIC0wLDAgKzEsOSBAQAorcGFja2FnZSBwYWNrMjsKKworaW1wb3J0IHN0YXRpYyBwYWNrMS5BLio7CisKK2NsYXNzIFVzYWdlIHsKKyAgICB7CisgICAgICAgIHJlbmFtZWRTdGF0aWNNZXRob2QoMjcpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lTWV0aG9kL211bHRpL3N0YXRpY0ltcG9ydDIvYmVmb3JlL3BhY2sxL0EuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVNZXRob2QvbXVsdGkvc3RhdGljSW1wb3J0Mi9iZWZvcmUvcGFjazEvQS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI5M2Y0ZDMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lTWV0aG9kL211bHRpL3N0YXRpY0ltcG9ydDIvYmVmb3JlL3BhY2sxL0EuamF2YQpAQCAtMCwwICsxLDYgQEAKK3BhY2thZ2UgcGFjazE7CisKK3B1YmxpYyBjbGFzcyBBIHsKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgc3RhdGljTWV0aG9kKGludCBpKSB7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVNZXRob2QvbXVsdGkvc3RhdGljSW1wb3J0Mi9iZWZvcmUvcGFjazIvVXNhZ2UuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVNZXRob2QvbXVsdGkvc3RhdGljSW1wb3J0Mi9iZWZvcmUvcGFjazIvVXNhZ2UuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNTBiOTMzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbmFtZU1ldGhvZC9tdWx0aS9zdGF0aWNJbXBvcnQyL2JlZm9yZS9wYWNrMi9Vc2FnZS5qYXZhCkBAIC0wLDAgKzEsOSBAQAorcGFja2FnZSBwYWNrMjsKKworaW1wb3J0IHN0YXRpYyBwYWNrMS5BLio7CisKK2NsYXNzIFVzYWdlIHsKKyAgICB7CisgICAgICAgIHN0YXRpY01ldGhvZCgyNyk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVNZXRob2QvbXVsdGkvc3RhdGljSW1wb3J0My9hZnRlci9wYWNrMS9BLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lTWV0aG9kL211bHRpL3N0YXRpY0ltcG9ydDMvYWZ0ZXIvcGFjazEvQS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVjZTU1MTcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lTWV0aG9kL211bHRpL3N0YXRpY0ltcG9ydDMvYWZ0ZXIvcGFjazEvQS5qYXZhCkBAIC0wLDAgKzEsOSBAQAorcGFja2FnZSBwYWNrMTsKKworcHVibGljIGNsYXNzIEEgeworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCByZW5hbWVkU3RhdGljTWV0aG9kKGludCBpKSB7CisgICAgfQorCisgICAgcHVibGljIHN0YXRpYyB2b2lkIHN0YXRpY01ldGhvZChTdHJpbmcgcykgeworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lTWV0aG9kL211bHRpL3N0YXRpY0ltcG9ydDMvYWZ0ZXIvcGFjazIvVXNhZ2UuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVNZXRob2QvbXVsdGkvc3RhdGljSW1wb3J0My9hZnRlci9wYWNrMi9Vc2FnZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM5NjVlMjIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lTWV0aG9kL211bHRpL3N0YXRpY0ltcG9ydDMvYWZ0ZXIvcGFjazIvVXNhZ2UuamF2YQpAQCAtMCwwICsxLDkgQEAKK3BhY2thZ2UgcGFjazI7CisKK2ltcG9ydCBwYWNrMS5BOworCitjbGFzcyBVc2FnZSB7CisgICAgeworICAgICAgICBBLnJlbmFtZWRTdGF0aWNNZXRob2QoMjcpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lTWV0aG9kL211bHRpL3N0YXRpY0ltcG9ydDMvYmVmb3JlL3BhY2sxL0EuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVNZXRob2QvbXVsdGkvc3RhdGljSW1wb3J0My9iZWZvcmUvcGFjazEvQS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJmZmY4MzEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lTWV0aG9kL211bHRpL3N0YXRpY0ltcG9ydDMvYmVmb3JlL3BhY2sxL0EuamF2YQpAQCAtMCwwICsxLDkgQEAKK3BhY2thZ2UgcGFjazE7CisKK3B1YmxpYyBjbGFzcyBBIHsKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgc3RhdGljTWV0aG9kKGludCBpKSB7CisgICAgfQorCisgICAgcHVibGljIHN0YXRpYyB2b2lkIHN0YXRpY01ldGhvZChTdHJpbmcgcykgeworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lTWV0aG9kL211bHRpL3N0YXRpY0ltcG9ydDMvYmVmb3JlL3BhY2syL1VzYWdlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lTWV0aG9kL211bHRpL3N0YXRpY0ltcG9ydDMvYmVmb3JlL3BhY2syL1VzYWdlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjMzODc3OQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVNZXRob2QvbXVsdGkvc3RhdGljSW1wb3J0My9iZWZvcmUvcGFjazIvVXNhZ2UuamF2YQpAQCAtMCwwICsxLDkgQEAKK3BhY2thZ2UgcGFjazI7CisKK2ltcG9ydCBzdGF0aWMgcGFjazEuQS5zdGF0aWNNZXRob2Q7CisKK2NsYXNzIFVzYWdlIHsKKyAgICB7CisgICAgICAgIHN0YXRpY01ldGhvZCgyNyk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVNZXRob2QvbXVsdGkvc3RhdGljSW1wb3J0NC9hZnRlci9wYWNrMS9BLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lTWV0aG9kL211bHRpL3N0YXRpY0ltcG9ydDQvYWZ0ZXIvcGFjazEvQS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVkZjUxY2Q1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbmFtZU1ldGhvZC9tdWx0aS9zdGF0aWNJbXBvcnQ0L2FmdGVyL3BhY2sxL0EuamF2YQpAQCAtMCwwICsxLDkgQEAKK3BhY2thZ2UgcGFjazE7CisKK3B1YmxpYyBjbGFzcyBBIHsKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgcmVuYW1lZFN0YXRpY01ldGhvZChpbnQgaSkgeworICAgIH0KKworICAgIHByaXZhdGUgc3RhdGljIHZvaWQgc3RhdGljTWV0aG9kKFN0cmluZyBzKSB7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVNZXRob2QvbXVsdGkvc3RhdGljSW1wb3J0NC9hZnRlci9wYWNrMi9Vc2FnZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbmFtZU1ldGhvZC9tdWx0aS9zdGF0aWNJbXBvcnQ0L2FmdGVyL3BhY2syL1VzYWdlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWFjOWZiZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVNZXRob2QvbXVsdGkvc3RhdGljSW1wb3J0NC9hZnRlci9wYWNrMi9Vc2FnZS5qYXZhCkBAIC0wLDAgKzEsOSBAQAorcGFja2FnZSBwYWNrMjsKKworaW1wb3J0IHN0YXRpYyBwYWNrMS5BLnJlbmFtZWRTdGF0aWNNZXRob2Q7CisKK2NsYXNzIFVzYWdlIHsKKyAgICB7CisgICAgICAgIHJlbmFtZWRTdGF0aWNNZXRob2QoMjcpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lTWV0aG9kL211bHRpL3N0YXRpY0ltcG9ydDQvYmVmb3JlL3BhY2sxL0EuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZW5hbWVNZXRob2QvbXVsdGkvc3RhdGljSW1wb3J0NC9iZWZvcmUvcGFjazEvQS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU5YjM0ZWIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lTWV0aG9kL211bHRpL3N0YXRpY0ltcG9ydDQvYmVmb3JlL3BhY2sxL0EuamF2YQpAQCAtMCwwICsxLDkgQEAKK3BhY2thZ2UgcGFjazE7CisKK3B1YmxpYyBjbGFzcyBBIHsKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgc3RhdGljTWV0aG9kKGludCBpKSB7CisgICAgfQorCisgICAgcHJpdmF0ZSBzdGF0aWMgdm9pZCBzdGF0aWNNZXRob2QoU3RyaW5nIHMpIHsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbmFtZU1ldGhvZC9tdWx0aS9zdGF0aWNJbXBvcnQ0L2JlZm9yZS9wYWNrMi9Vc2FnZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlbmFtZU1ldGhvZC9tdWx0aS9zdGF0aWNJbXBvcnQ0L2JlZm9yZS9wYWNrMi9Vc2FnZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIzMzg3NzkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVuYW1lTWV0aG9kL211bHRpL3N0YXRpY0ltcG9ydDQvYmVmb3JlL3BhY2syL1VzYWdlLmphdmEKQEAgLTAsMCArMSw5IEBACitwYWNrYWdlIHBhY2syOworCitpbXBvcnQgc3RhdGljIHBhY2sxLkEuc3RhdGljTWV0aG9kOworCitjbGFzcyBVc2FnZSB7CisgICAgeworICAgICAgICBzdGF0aWNNZXRob2QoMjcpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVwbGFjZUNvbnN0cnVjdG9yV2l0aEJ1aWxkZXIvY29uc3RydWN0b3JDaGFpbi9hZnRlci9CdWlsZGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVwbGFjZUNvbnN0cnVjdG9yV2l0aEJ1aWxkZXIvY29uc3RydWN0b3JDaGFpbi9hZnRlci9CdWlsZGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzM5NWY5NgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZXBsYWNlQ29uc3RydWN0b3JXaXRoQnVpbGRlci9jb25zdHJ1Y3RvckNoYWluL2FmdGVyL0J1aWxkZXIuamF2YQpAQCAtMCwwICsxLDEyIEBACitwdWJsaWMgY2xhc3MgQnVpbGRlciB7CisgICAgcHJpdmF0ZSBpbnQgaSA9IDI7CisKKyAgICBwdWJsaWMgQnVpbGRlciBzZXRJKGludCBpKSB7CisgICAgICAgIHRoaXMuaSA9IGk7CisgICAgICAgIHJldHVybiB0aGlzOworICAgIH0KKworICAgIHB1YmxpYyBUZXN0IGNyZWF0ZVRlc3QoKSB7CisgICAgICAgIHJldHVybiBuZXcgVGVzdChpKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlcGxhY2VDb25zdHJ1Y3RvcldpdGhCdWlsZGVyL2NvbnN0cnVjdG9yQ2hhaW4vYWZ0ZXIvVGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlcGxhY2VDb25zdHJ1Y3RvcldpdGhCdWlsZGVyL2NvbnN0cnVjdG9yQ2hhaW4vYWZ0ZXIvVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJjNmJmZGYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVwbGFjZUNvbnN0cnVjdG9yV2l0aEJ1aWxkZXIvY29uc3RydWN0b3JDaGFpbi9hZnRlci9UZXN0LmphdmEKQEAgLTAsMCArMSwxMCBAQAorcHVibGljIGNsYXNzIFRlc3QgeworICBwdWJsaWMgVGVzdChpbnQgaSl7fQorICBwdWJsaWMgVGVzdCgpeworICAgIHRoaXMoMik7CisgIH0KKyAgdm9pZCBmb28oKXt9CisgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpeworICAgIG5ldyBCdWlsZGVyKCkuc2V0SSgxKS5jcmVhdGVUZXN0KCkuZm9vKCk7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVwbGFjZUNvbnN0cnVjdG9yV2l0aEJ1aWxkZXIvY29uc3RydWN0b3JDaGFpbi9iZWZvcmUvVGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlcGxhY2VDb25zdHJ1Y3RvcldpdGhCdWlsZGVyL2NvbnN0cnVjdG9yQ2hhaW4vYmVmb3JlL1Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYjhlYTE4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlcGxhY2VDb25zdHJ1Y3RvcldpdGhCdWlsZGVyL2NvbnN0cnVjdG9yQ2hhaW4vYmVmb3JlL1Rlc3QuamF2YQpAQCAtMCwwICsxLDEwIEBACitwdWJsaWMgY2xhc3MgVGVzdCB7CisgIHB1YmxpYyBUZXN0KGludCBpKXt9CisgIHB1YmxpYyBUZXN0KCl7CisgICAgdGhpcygyKTsKKyAgfQorICB2b2lkIGZvbygpe30KKyAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncyl7CisgICAgbmV3IFRlc3QoMSkuZm9vKCk7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVwbGFjZUNvbnN0cnVjdG9yV2l0aEJ1aWxkZXIvY29uc3RydWN0b3JDaGFpbldpdGhvdXREZWZhdWx0cy9hZnRlci9CdWlsZGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVwbGFjZUNvbnN0cnVjdG9yV2l0aEJ1aWxkZXIvY29uc3RydWN0b3JDaGFpbldpdGhvdXREZWZhdWx0cy9hZnRlci9CdWlsZGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzQ3ZGZjOQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZXBsYWNlQ29uc3RydWN0b3JXaXRoQnVpbGRlci9jb25zdHJ1Y3RvckNoYWluV2l0aG91dERlZmF1bHRzL2FmdGVyL0J1aWxkZXIuamF2YQpAQCAtMCwwICsxLDE4IEBACitwdWJsaWMgY2xhc3MgQnVpbGRlciB7CisgICAgcHJpdmF0ZSBpbnQgaSA9IDI7CisgICAgcHJpdmF0ZSBpbnQgajsKKworICAgIHB1YmxpYyBCdWlsZGVyIHNldEkoaW50IGkpIHsKKyAgICAgICAgdGhpcy5pID0gaTsKKyAgICAgICAgcmV0dXJuIHRoaXM7CisgICAgfQorCisgICAgcHVibGljIEJ1aWxkZXIgc2V0SihpbnQgaikgeworICAgICAgICB0aGlzLmogPSBqOworICAgICAgICByZXR1cm4gdGhpczsKKyAgICB9CisKKyAgICBwdWJsaWMgVGVzdCBjcmVhdGVUZXN0KCkgeworICAgICAgICByZXR1cm4gbmV3IFRlc3QoaSwgaik7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZXBsYWNlQ29uc3RydWN0b3JXaXRoQnVpbGRlci9jb25zdHJ1Y3RvckNoYWluV2l0aG91dERlZmF1bHRzL2FmdGVyL1Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZXBsYWNlQ29uc3RydWN0b3JXaXRoQnVpbGRlci9jb25zdHJ1Y3RvckNoYWluV2l0aG91dERlZmF1bHRzL2FmdGVyL1Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wN2MxNjc5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlcGxhY2VDb25zdHJ1Y3RvcldpdGhCdWlsZGVyL2NvbnN0cnVjdG9yQ2hhaW5XaXRob3V0RGVmYXVsdHMvYWZ0ZXIvVGVzdC5qYXZhCkBAIC0wLDAgKzEsMTEgQEAKK3B1YmxpYyBjbGFzcyBUZXN0IHsKKyAgcHVibGljIFRlc3QoaW50IGksIGludCBqKXt9CisgIHB1YmxpYyBUZXN0KGludCBqKXsKKyAgICB0aGlzKDIsIGopOworICB9CisgIHZvaWQgZm9vKCl7fQorICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKXsKKyAgICBuZXcgQnVpbGRlcigpLnNldEooMSkuY3JlYXRlVGVzdCgpLmZvbygpOworICAgIG5ldyBCdWlsZGVyKCkuc2V0SSgyKS5zZXRKKDMpLmNyZWF0ZVRlc3QoKS5mb28oKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZXBsYWNlQ29uc3RydWN0b3JXaXRoQnVpbGRlci9jb25zdHJ1Y3RvckNoYWluV2l0aG91dERlZmF1bHRzL2JlZm9yZS9UZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVwbGFjZUNvbnN0cnVjdG9yV2l0aEJ1aWxkZXIvY29uc3RydWN0b3JDaGFpbldpdGhvdXREZWZhdWx0cy9iZWZvcmUvVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVkNjIyNTAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVwbGFjZUNvbnN0cnVjdG9yV2l0aEJ1aWxkZXIvY29uc3RydWN0b3JDaGFpbldpdGhvdXREZWZhdWx0cy9iZWZvcmUvVGVzdC5qYXZhCkBAIC0wLDAgKzEsMTEgQEAKK3B1YmxpYyBjbGFzcyBUZXN0IHsKKyAgcHVibGljIFRlc3QoaW50IGksIGludCBqKXt9CisgIHB1YmxpYyBUZXN0KGludCBqKXsKKyAgICB0aGlzKDIsIGopOworICB9CisgIHZvaWQgZm9vKCl7fQorICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKXsKKyAgICBuZXcgVGVzdCgxKS5mb28oKTsKKyAgICBuZXcgVGVzdCgyLCAzKS5mb28oKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZXBsYWNlQ29uc3RydWN0b3JXaXRoQnVpbGRlci9jb25zdHJ1Y3RvclRyZWUvYWZ0ZXIvVGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlcGxhY2VDb25zdHJ1Y3RvcldpdGhCdWlsZGVyL2NvbnN0cnVjdG9yVHJlZS9hZnRlci9UZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmI5YjY1NwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZXBsYWNlQ29uc3RydWN0b3JXaXRoQnVpbGRlci9jb25zdHJ1Y3RvclRyZWUvYWZ0ZXIvVGVzdC5qYXZhCkBAIC0wLDAgKzEsMTUgQEAKK3B1YmxpYyBjbGFzcyBUZXN0IHsKKyAgU3RyaW5nIHN0cjsKKyAgcHVibGljIFRlc3QoaW50IGkpe30KKyAgcHVibGljIFRlc3QoKXsKKyAgICB0aGlzKDIpOworICB9CisgIHB1YmxpYyBUZXN0KFN0cmluZyBzKXsKKyAgICB0aGlzKDMpOworICAgIHN0ciA9IHM7CisgIH0KKyAgdm9pZCBmb28oKXt9CisgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpeworICAgIG5ldyBUZXN0KDEpLmZvbygpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlcGxhY2VDb25zdHJ1Y3RvcldpdGhCdWlsZGVyL2NvbnN0cnVjdG9yVHJlZS9iZWZvcmUvVGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlcGxhY2VDb25zdHJ1Y3RvcldpdGhCdWlsZGVyL2NvbnN0cnVjdG9yVHJlZS9iZWZvcmUvVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZiOWI2NTcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVwbGFjZUNvbnN0cnVjdG9yV2l0aEJ1aWxkZXIvY29uc3RydWN0b3JUcmVlL2JlZm9yZS9UZXN0LmphdmEKQEAgLTAsMCArMSwxNSBAQAorcHVibGljIGNsYXNzIFRlc3QgeworICBTdHJpbmcgc3RyOworICBwdWJsaWMgVGVzdChpbnQgaSl7fQorICBwdWJsaWMgVGVzdCgpeworICAgIHRoaXMoMik7CisgIH0KKyAgcHVibGljIFRlc3QoU3RyaW5nIHMpeworICAgIHRoaXMoMyk7CisgICAgc3RyID0gczsKKyAgfQorICB2b2lkIGZvbygpe30KKyAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncyl7CisgICAgbmV3IFRlc3QoMSkuZm9vKCk7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVwbGFjZUNvbnN0cnVjdG9yV2l0aEJ1aWxkZXIvZXhpc3RpbmdFbXB0eUJ1aWxkZXIvYWZ0ZXIvQnVpbGRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlcGxhY2VDb25zdHJ1Y3RvcldpdGhCdWlsZGVyL2V4aXN0aW5nRW1wdHlCdWlsZGVyL2FmdGVyL0J1aWxkZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMTMwZWM4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlcGxhY2VDb25zdHJ1Y3RvcldpdGhCdWlsZGVyL2V4aXN0aW5nRW1wdHlCdWlsZGVyL2FmdGVyL0J1aWxkZXIuamF2YQpAQCAtMCwwICsxLDEzIEBACitwdWJsaWMgY2xhc3MgQnVpbGRlciB7CisKKyAgICBwcml2YXRlIGludFtdIGk7CisKKyAgICBwdWJsaWMgQnVpbGRlciBzZXRJKGludC4uLiBpKSB7CisgICAgICAgIHRoaXMuaSA9IGk7CisgICAgICAgIHJldHVybiB0aGlzOworICAgIH0KKworICAgIHB1YmxpYyBUZXN0IGNyZWF0ZVRlc3QoKSB7CisgICAgICAgIHJldHVybiBuZXcgVGVzdChpKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlcGxhY2VDb25zdHJ1Y3RvcldpdGhCdWlsZGVyL2V4aXN0aW5nRW1wdHlCdWlsZGVyL2FmdGVyL1Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZXBsYWNlQ29uc3RydWN0b3JXaXRoQnVpbGRlci9leGlzdGluZ0VtcHR5QnVpbGRlci9hZnRlci9UZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWVmYzdmZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZXBsYWNlQ29uc3RydWN0b3JXaXRoQnVpbGRlci9leGlzdGluZ0VtcHR5QnVpbGRlci9hZnRlci9UZXN0LmphdmEKQEAgLTAsMCArMSw3IEBACitwdWJsaWMgY2xhc3MgVGVzdCB7CisgIHB1YmxpYyBUZXN0KGludC4uLiBpKXt9CisgIHZvaWQgZm9vKCl7fQorICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKXsKKyAgICBuZXcgQnVpbGRlcigpLnNldEkoMSwgMiwgMykuY3JlYXRlVGVzdCgpLmZvbygpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlcGxhY2VDb25zdHJ1Y3RvcldpdGhCdWlsZGVyL2V4aXN0aW5nRW1wdHlCdWlsZGVyL2JlZm9yZS9CdWlsZGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVwbGFjZUNvbnN0cnVjdG9yV2l0aEJ1aWxkZXIvZXhpc3RpbmdFbXB0eUJ1aWxkZXIvYmVmb3JlL0J1aWxkZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMWZmNDYxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlcGxhY2VDb25zdHJ1Y3RvcldpdGhCdWlsZGVyL2V4aXN0aW5nRW1wdHlCdWlsZGVyL2JlZm9yZS9CdWlsZGVyLmphdmEKQEAgLTAsMCArMSwzIEBACitwdWJsaWMgY2xhc3MgQnVpbGRlciB7CisKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVwbGFjZUNvbnN0cnVjdG9yV2l0aEJ1aWxkZXIvZXhpc3RpbmdFbXB0eUJ1aWxkZXIvYmVmb3JlL1Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZXBsYWNlQ29uc3RydWN0b3JXaXRoQnVpbGRlci9leGlzdGluZ0VtcHR5QnVpbGRlci9iZWZvcmUvVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJlMGViYjQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVwbGFjZUNvbnN0cnVjdG9yV2l0aEJ1aWxkZXIvZXhpc3RpbmdFbXB0eUJ1aWxkZXIvYmVmb3JlL1Rlc3QuamF2YQpAQCAtMCwwICsxLDcgQEAKK3B1YmxpYyBjbGFzcyBUZXN0IHsKKyAgcHVibGljIFRlc3QoaW50Li4uIGkpe30KKyAgdm9pZCBmb28oKXt9CisgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpeworICAgIG5ldyBUZXN0KDEsIDIsIDMpLmZvbygpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlcGxhY2VDb25zdHJ1Y3RvcldpdGhCdWlsZGVyL2V4aXN0aW5nSGFsZkVtcHR5QnVpbGRlci9hZnRlci9CdWlsZGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVwbGFjZUNvbnN0cnVjdG9yV2l0aEJ1aWxkZXIvZXhpc3RpbmdIYWxmRW1wdHlCdWlsZGVyL2FmdGVyL0J1aWxkZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMmY4M2E3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlcGxhY2VDb25zdHJ1Y3RvcldpdGhCdWlsZGVyL2V4aXN0aW5nSGFsZkVtcHR5QnVpbGRlci9hZnRlci9CdWlsZGVyLmphdmEKQEAgLTAsMCArMSwxOCBAQAorcHVibGljIGNsYXNzIEJ1aWxkZXIgeworICAgIHByaXZhdGUgaW50W10gaTsKKyAgICBwcml2YXRlIGludCBqOworCisgICAgcHVibGljIEJ1aWxkZXIgc2V0SShpbnQuLi4gaSkgeworICAgICAgICB0aGlzLmkgPSBpOworICAgICAgICByZXR1cm4gdGhpczsKKyAgICB9CisKKyAgICBwdWJsaWMgVGVzdCBjcmVhdGVUZXN0KCkgeworICAgICAgICByZXR1cm4gbmV3IFRlc3QoaiwgaSk7CisgICAgfQorCisgICAgcHVibGljIEJ1aWxkZXIgc2V0SihpbnQgaikgeworICAgICAgICB0aGlzLmogPSBqOworICAgICAgICByZXR1cm4gdGhpczsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlcGxhY2VDb25zdHJ1Y3RvcldpdGhCdWlsZGVyL2V4aXN0aW5nSGFsZkVtcHR5QnVpbGRlci9hZnRlci9UZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVwbGFjZUNvbnN0cnVjdG9yV2l0aEJ1aWxkZXIvZXhpc3RpbmdIYWxmRW1wdHlCdWlsZGVyL2FmdGVyL1Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNDAzZDU2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlcGxhY2VDb25zdHJ1Y3RvcldpdGhCdWlsZGVyL2V4aXN0aW5nSGFsZkVtcHR5QnVpbGRlci9hZnRlci9UZXN0LmphdmEKQEAgLTAsMCArMSw3IEBACitwdWJsaWMgY2xhc3MgVGVzdCB7CisgIHB1YmxpYyBUZXN0KGludCBqLCBpbnQuLi4gaSl7fQorICB2b2lkIGZvbygpe30KKyAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncyl7CisgICAgbmV3IEJ1aWxkZXIoKS5zZXRKKDEpLnNldEkoMiwgMykuY3JlYXRlVGVzdCgpLmZvbygpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlcGxhY2VDb25zdHJ1Y3RvcldpdGhCdWlsZGVyL2V4aXN0aW5nSGFsZkVtcHR5QnVpbGRlci9iZWZvcmUvQnVpbGRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlcGxhY2VDb25zdHJ1Y3RvcldpdGhCdWlsZGVyL2V4aXN0aW5nSGFsZkVtcHR5QnVpbGRlci9iZWZvcmUvQnVpbGRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU4OGExNTEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVwbGFjZUNvbnN0cnVjdG9yV2l0aEJ1aWxkZXIvZXhpc3RpbmdIYWxmRW1wdHlCdWlsZGVyL2JlZm9yZS9CdWlsZGVyLmphdmEKQEAgLTAsMCArMSwxMiBAQAorcHVibGljIGNsYXNzIEJ1aWxkZXIgeworICAgIHByaXZhdGUgaW50W10gaTsKKworICAgIHB1YmxpYyBCdWlsZGVyIHNldEkoaW50Li4uIGkpIHsKKyAgICAgICAgdGhpcy5pID0gaTsKKyAgICAgICAgcmV0dXJuIHRoaXM7CisgICAgfQorCisgICAgcHVibGljIFRlc3QgY3JlYXRlVGVzdCgpIHsKKyAgICAgICAgcmV0dXJuIG5ldyBUZXN0KGosIGkpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVwbGFjZUNvbnN0cnVjdG9yV2l0aEJ1aWxkZXIvZXhpc3RpbmdIYWxmRW1wdHlCdWlsZGVyL2JlZm9yZS9UZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVwbGFjZUNvbnN0cnVjdG9yV2l0aEJ1aWxkZXIvZXhpc3RpbmdIYWxmRW1wdHlCdWlsZGVyL2JlZm9yZS9UZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTEzYWY2NgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZXBsYWNlQ29uc3RydWN0b3JXaXRoQnVpbGRlci9leGlzdGluZ0hhbGZFbXB0eUJ1aWxkZXIvYmVmb3JlL1Rlc3QuamF2YQpAQCAtMCwwICsxLDcgQEAKK3B1YmxpYyBjbGFzcyBUZXN0IHsKKyAgcHVibGljIFRlc3QoaW50IGosIGludC4uLiBpKXt9CisgIHZvaWQgZm9vKCl7fQorICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKXsKKyAgICBuZXcgVGVzdCgxLCAyLCAzKS5mb28oKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZXBsYWNlQ29uc3RydWN0b3JXaXRoQnVpbGRlci9leGlzdGluZ1ZvaWRTZXR0ZXJzQnVpbGRlci9hZnRlci9CdWlsZGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVwbGFjZUNvbnN0cnVjdG9yV2l0aEJ1aWxkZXIvZXhpc3RpbmdWb2lkU2V0dGVyc0J1aWxkZXIvYWZ0ZXIvQnVpbGRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUyZjgzYTcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVwbGFjZUNvbnN0cnVjdG9yV2l0aEJ1aWxkZXIvZXhpc3RpbmdWb2lkU2V0dGVyc0J1aWxkZXIvYWZ0ZXIvQnVpbGRlci5qYXZhCkBAIC0wLDAgKzEsMTggQEAKK3B1YmxpYyBjbGFzcyBCdWlsZGVyIHsKKyAgICBwcml2YXRlIGludFtdIGk7CisgICAgcHJpdmF0ZSBpbnQgajsKKworICAgIHB1YmxpYyBCdWlsZGVyIHNldEkoaW50Li4uIGkpIHsKKyAgICAgICAgdGhpcy5pID0gaTsKKyAgICAgICAgcmV0dXJuIHRoaXM7CisgICAgfQorCisgICAgcHVibGljIFRlc3QgY3JlYXRlVGVzdCgpIHsKKyAgICAgICAgcmV0dXJuIG5ldyBUZXN0KGosIGkpOworICAgIH0KKworICAgIHB1YmxpYyBCdWlsZGVyIHNldEooaW50IGopIHsKKyAgICAgICAgdGhpcy5qID0gajsKKyAgICAgICAgcmV0dXJuIHRoaXM7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZXBsYWNlQ29uc3RydWN0b3JXaXRoQnVpbGRlci9leGlzdGluZ1ZvaWRTZXR0ZXJzQnVpbGRlci9hZnRlci9UZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVwbGFjZUNvbnN0cnVjdG9yV2l0aEJ1aWxkZXIvZXhpc3RpbmdWb2lkU2V0dGVyc0J1aWxkZXIvYWZ0ZXIvVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE0MDNkNTYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVwbGFjZUNvbnN0cnVjdG9yV2l0aEJ1aWxkZXIvZXhpc3RpbmdWb2lkU2V0dGVyc0J1aWxkZXIvYWZ0ZXIvVGVzdC5qYXZhCkBAIC0wLDAgKzEsNyBAQAorcHVibGljIGNsYXNzIFRlc3QgeworICBwdWJsaWMgVGVzdChpbnQgaiwgaW50Li4uIGkpe30KKyAgdm9pZCBmb28oKXt9CisgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpeworICAgIG5ldyBCdWlsZGVyKCkuc2V0SigxKS5zZXRJKDIsIDMpLmNyZWF0ZVRlc3QoKS5mb28oKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZXBsYWNlQ29uc3RydWN0b3JXaXRoQnVpbGRlci9leGlzdGluZ1ZvaWRTZXR0ZXJzQnVpbGRlci9iZWZvcmUvQnVpbGRlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlcGxhY2VDb25zdHJ1Y3RvcldpdGhCdWlsZGVyL2V4aXN0aW5nVm9pZFNldHRlcnNCdWlsZGVyL2JlZm9yZS9CdWlsZGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWVkNGU2NwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZXBsYWNlQ29uc3RydWN0b3JXaXRoQnVpbGRlci9leGlzdGluZ1ZvaWRTZXR0ZXJzQnVpbGRlci9iZWZvcmUvQnVpbGRlci5qYXZhCkBAIC0wLDAgKzEsMTEgQEAKK3B1YmxpYyBjbGFzcyBCdWlsZGVyIHsKKyAgICBwcml2YXRlIGludFtdIGk7CisKKyAgICBwdWJsaWMgdm9pZCBzZXRJKGludC4uLiBpKSB7CisgICAgICAgIHRoaXMuaSA9IGk7CisgICAgfQorCisgICAgcHVibGljIFRlc3QgY3JlYXRlVGVzdCgpIHsKKyAgICAgICAgcmV0dXJuIG5ldyBUZXN0KGosIGkpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVwbGFjZUNvbnN0cnVjdG9yV2l0aEJ1aWxkZXIvZXhpc3RpbmdWb2lkU2V0dGVyc0J1aWxkZXIvYmVmb3JlL1Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZXBsYWNlQ29uc3RydWN0b3JXaXRoQnVpbGRlci9leGlzdGluZ1ZvaWRTZXR0ZXJzQnVpbGRlci9iZWZvcmUvVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjExM2FmNjYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVwbGFjZUNvbnN0cnVjdG9yV2l0aEJ1aWxkZXIvZXhpc3RpbmdWb2lkU2V0dGVyc0J1aWxkZXIvYmVmb3JlL1Rlc3QuamF2YQpAQCAtMCwwICsxLDcgQEAKK3B1YmxpYyBjbGFzcyBUZXN0IHsKKyAgcHVibGljIFRlc3QoaW50IGosIGludC4uLiBpKXt9CisgIHZvaWQgZm9vKCl7fQorICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKXsKKyAgICBuZXcgVGVzdCgxLCAyLCAzKS5mb28oKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZXBsYWNlQ29uc3RydWN0b3JXaXRoQnVpbGRlci9nZW5lcmljcy9hZnRlci9CdWlsZGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVwbGFjZUNvbnN0cnVjdG9yV2l0aEJ1aWxkZXIvZ2VuZXJpY3MvYWZ0ZXIvQnVpbGRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNlNDM1YzMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVwbGFjZUNvbnN0cnVjdG9yV2l0aEJ1aWxkZXIvZ2VuZXJpY3MvYWZ0ZXIvQnVpbGRlci5qYXZhCkBAIC0wLDAgKzEsMTIgQEAKK3B1YmxpYyBjbGFzcyBCdWlsZGVyPFQ+IHsKKyAgICBwcml2YXRlIFQgdDsKKworICAgIHB1YmxpYyBCdWlsZGVyIHNldFQoVCB0KSB7CisgICAgICAgIHRoaXMudCA9IHQ7CisgICAgICAgIHJldHVybiB0aGlzOworICAgIH0KKworICAgIHB1YmxpYyBUZXN0IGNyZWF0ZVRlc3QoKSB7CisgICAgICAgIHJldHVybiBuZXcgVGVzdCh0KTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlcGxhY2VDb25zdHJ1Y3RvcldpdGhCdWlsZGVyL2dlbmVyaWNzL2FmdGVyL1Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZXBsYWNlQ29uc3RydWN0b3JXaXRoQnVpbGRlci9nZW5lcmljcy9hZnRlci9UZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzMyYzZkMQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZXBsYWNlQ29uc3RydWN0b3JXaXRoQnVpbGRlci9nZW5lcmljcy9hZnRlci9UZXN0LmphdmEKQEAgLTAsMCArMSw3IEBACitwdWJsaWMgY2xhc3MgVGVzdDxUPiB7CisgIHB1YmxpYyBUZXN0KFQgdCl7fQorICB2b2lkIGZvbygpe30KKyAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oVCBhcmdzKXsKKyAgICBuZXcgQnVpbGRlcigpLnNldFQoYXJncykuY3JlYXRlVGVzdCgpLmZvbygpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlcGxhY2VDb25zdHJ1Y3RvcldpdGhCdWlsZGVyL2dlbmVyaWNzL2JlZm9yZS9UZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVwbGFjZUNvbnN0cnVjdG9yV2l0aEJ1aWxkZXIvZ2VuZXJpY3MvYmVmb3JlL1Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YmY2Mjg1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlcGxhY2VDb25zdHJ1Y3RvcldpdGhCdWlsZGVyL2dlbmVyaWNzL2JlZm9yZS9UZXN0LmphdmEKQEAgLTAsMCArMSw3IEBACitwdWJsaWMgY2xhc3MgVGVzdDxUPiB7CisgIHB1YmxpYyBUZXN0KFQgdCl7fQorICB2b2lkIGZvbygpe30KKyAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oVCBhcmdzKXsKKyAgICBuZXcgVGVzdChhcmdzKS5mb28oKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZXBsYWNlQ29uc3RydWN0b3JXaXRoQnVpbGRlci9pbXBvcnRzL2FmdGVyL0Jhci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlcGxhY2VDb25zdHJ1Y3RvcldpdGhCdWlsZGVyL2ltcG9ydHMvYWZ0ZXIvQmFyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDcyMmU1MQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZXBsYWNlQ29uc3RydWN0b3JXaXRoQnVpbGRlci9pbXBvcnRzL2FmdGVyL0Jhci5qYXZhCkBAIC0wLDAgKzEsNSBAQAoraW1wb3J0IGZvby5CdWlsZGVyOworCitwdWJsaWMgY2xhc3MgQmFyIHsKKyAgICBmaW5hbCBUZXN0IGZvbyA9IG5ldyBCdWlsZGVyKCkuc2V0QmFyKCJiYXIiKS5jcmVhdGVUZXN0KCk7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlcGxhY2VDb25zdHJ1Y3RvcldpdGhCdWlsZGVyL2ltcG9ydHMvYWZ0ZXIvVGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlcGxhY2VDb25zdHJ1Y3RvcldpdGhCdWlsZGVyL2ltcG9ydHMvYWZ0ZXIvVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNjYzA1YzQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVwbGFjZUNvbnN0cnVjdG9yV2l0aEJ1aWxkZXIvaW1wb3J0cy9hZnRlci9UZXN0LmphdmEKQEAgLTAsMCArMSw3IEBACitwdWJsaWMgY2xhc3MgVGVzdCB7CisgICAgcHJpdmF0ZSBmaW5hbCBTdHJpbmcgYmFyOworCisgICAgcHVibGljIFRlc3QoZmluYWwgU3RyaW5nIGJhcikgeworICAgICAgICB0aGlzLmJhciA9IGJhcjsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlcGxhY2VDb25zdHJ1Y3RvcldpdGhCdWlsZGVyL2ltcG9ydHMvYWZ0ZXIvZm9vL0J1aWxkZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZXBsYWNlQ29uc3RydWN0b3JXaXRoQnVpbGRlci9pbXBvcnRzL2FmdGVyL2Zvby9CdWlsZGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDg4N2M1NQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZXBsYWNlQ29uc3RydWN0b3JXaXRoQnVpbGRlci9pbXBvcnRzL2FmdGVyL2Zvby9CdWlsZGVyLmphdmEKQEAgLTAsMCArMSwxNCBAQAorcGFja2FnZSBmb287CisKK3B1YmxpYyBjbGFzcyBCdWlsZGVyIHsKKyAgICBwcml2YXRlIFN0cmluZyBiYXI7CisKKyAgICBwdWJsaWMgQnVpbGRlciBzZXRCYXIoU3RyaW5nIGJhcikgeworICAgICAgICB0aGlzLmJhciA9IGJhcjsKKyAgICAgICAgcmV0dXJuIHRoaXM7CisgICAgfQorCisgICAgcHVibGljIFRlc3QgY3JlYXRlVGVzdCgpIHsKKyAgICAgICAgcmV0dXJuIG5ldyBUZXN0KGJhcik7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZXBsYWNlQ29uc3RydWN0b3JXaXRoQnVpbGRlci9pbXBvcnRzL2JlZm9yZS9CYXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZXBsYWNlQ29uc3RydWN0b3JXaXRoQnVpbGRlci9pbXBvcnRzL2JlZm9yZS9CYXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45YzBjNWE5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlcGxhY2VDb25zdHJ1Y3RvcldpdGhCdWlsZGVyL2ltcG9ydHMvYmVmb3JlL0Jhci5qYXZhCkBAIC0wLDAgKzEsMyBAQAorcHVibGljIGNsYXNzIEJhciB7CisgICAgZmluYWwgVGVzdCBmb28gPSBuZXcgVGVzdCgiYmFyIik7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlcGxhY2VDb25zdHJ1Y3RvcldpdGhCdWlsZGVyL2ltcG9ydHMvYmVmb3JlL1Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZXBsYWNlQ29uc3RydWN0b3JXaXRoQnVpbGRlci9pbXBvcnRzL2JlZm9yZS9UZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2NjMDVjNAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZXBsYWNlQ29uc3RydWN0b3JXaXRoQnVpbGRlci9pbXBvcnRzL2JlZm9yZS9UZXN0LmphdmEKQEAgLTAsMCArMSw3IEBACitwdWJsaWMgY2xhc3MgVGVzdCB7CisgICAgcHJpdmF0ZSBmaW5hbCBTdHJpbmcgYmFyOworCisgICAgcHVibGljIFRlc3QoZmluYWwgU3RyaW5nIGJhcikgeworICAgICAgICB0aGlzLmJhciA9IGJhcjsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlcGxhY2VDb25zdHJ1Y3RvcldpdGhCdWlsZGVyL211bHRpcGxlUGFyYW1zL2FmdGVyL0J1aWxkZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZXBsYWNlQ29uc3RydWN0b3JXaXRoQnVpbGRlci9tdWx0aXBsZVBhcmFtcy9hZnRlci9CdWlsZGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGY1NzhkYgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZXBsYWNlQ29uc3RydWN0b3JXaXRoQnVpbGRlci9tdWx0aXBsZVBhcmFtcy9hZnRlci9CdWlsZGVyLmphdmEKQEAgLTAsMCArMSwxOCBAQAorcHVibGljIGNsYXNzIEJ1aWxkZXIgeworICAgIHByaXZhdGUgaW50IGo7CisgICAgcHJpdmF0ZSBpbnRbXSBpOworCisgICAgcHVibGljIEJ1aWxkZXIgc2V0SihpbnQgaikgeworICAgICAgICB0aGlzLmogPSBqOworICAgICAgICByZXR1cm4gdGhpczsKKyAgICB9CisKKyAgICBwdWJsaWMgQnVpbGRlciBzZXRJKGludC4uLiBpKSB7CisgICAgICAgIHRoaXMuaSA9IGk7CisgICAgICAgIHJldHVybiB0aGlzOworICAgIH0KKworICAgIHB1YmxpYyBUZXN0IGNyZWF0ZVRlc3QoKSB7CisgICAgICAgIHJldHVybiBuZXcgVGVzdChqLCBpKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlcGxhY2VDb25zdHJ1Y3RvcldpdGhCdWlsZGVyL211bHRpcGxlUGFyYW1zL2FmdGVyL1Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZXBsYWNlQ29uc3RydWN0b3JXaXRoQnVpbGRlci9tdWx0aXBsZVBhcmFtcy9hZnRlci9UZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTQwM2Q1NgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZXBsYWNlQ29uc3RydWN0b3JXaXRoQnVpbGRlci9tdWx0aXBsZVBhcmFtcy9hZnRlci9UZXN0LmphdmEKQEAgLTAsMCArMSw3IEBACitwdWJsaWMgY2xhc3MgVGVzdCB7CisgIHB1YmxpYyBUZXN0KGludCBqLCBpbnQuLi4gaSl7fQorICB2b2lkIGZvbygpe30KKyAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncyl7CisgICAgbmV3IEJ1aWxkZXIoKS5zZXRKKDEpLnNldEkoMiwgMykuY3JlYXRlVGVzdCgpLmZvbygpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlcGxhY2VDb25zdHJ1Y3RvcldpdGhCdWlsZGVyL211bHRpcGxlUGFyYW1zL2JlZm9yZS9UZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVwbGFjZUNvbnN0cnVjdG9yV2l0aEJ1aWxkZXIvbXVsdGlwbGVQYXJhbXMvYmVmb3JlL1Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMTNhZjY2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlcGxhY2VDb25zdHJ1Y3RvcldpdGhCdWlsZGVyL211bHRpcGxlUGFyYW1zL2JlZm9yZS9UZXN0LmphdmEKQEAgLTAsMCArMSw3IEBACitwdWJsaWMgY2xhc3MgVGVzdCB7CisgIHB1YmxpYyBUZXN0KGludCBqLCBpbnQuLi4gaSl7fQorICB2b2lkIGZvbygpe30KKyAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncyl7CisgICAgbmV3IFRlc3QoMSwgMiwgMykuZm9vKCk7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVwbGFjZUNvbnN0cnVjdG9yV2l0aEJ1aWxkZXIvdmFyYXJncy9hZnRlci9CdWlsZGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVwbGFjZUNvbnN0cnVjdG9yV2l0aEJ1aWxkZXIvdmFyYXJncy9hZnRlci9CdWlsZGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWExZWU4NwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZXBsYWNlQ29uc3RydWN0b3JXaXRoQnVpbGRlci92YXJhcmdzL2FmdGVyL0J1aWxkZXIuamF2YQpAQCAtMCwwICsxLDEyIEBACitwdWJsaWMgY2xhc3MgQnVpbGRlciB7CisgICAgcHJpdmF0ZSBpbnRbXSBpOworCisgICAgcHVibGljIEJ1aWxkZXIgc2V0SShpbnQuLi4gaSkgeworICAgICAgICB0aGlzLmkgPSBpOworICAgICAgICByZXR1cm4gdGhpczsKKyAgICB9CisKKyAgICBwdWJsaWMgVGVzdCBjcmVhdGVUZXN0KCkgeworICAgICAgICByZXR1cm4gbmV3IFRlc3QoaSk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZXBsYWNlQ29uc3RydWN0b3JXaXRoQnVpbGRlci92YXJhcmdzL2FmdGVyL1Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZXBsYWNlQ29uc3RydWN0b3JXaXRoQnVpbGRlci92YXJhcmdzL2FmdGVyL1Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NDg2YTU5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlcGxhY2VDb25zdHJ1Y3RvcldpdGhCdWlsZGVyL3ZhcmFyZ3MvYWZ0ZXIvVGVzdC5qYXZhCkBAIC0wLDAgKzEsOCBAQAorcHVibGljIGNsYXNzIFRlc3QgeworICBwdWJsaWMgVGVzdChpbnQuLi4gaSl7fQorICB2b2lkIGZvbygpe30KKyAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncyl7CisgICAgbmV3IEJ1aWxkZXIoKS5zZXRJKDEsIDIsIDMpLmNyZWF0ZVRlc3QoKS5mb28oKTsKKyAgICBuZXcgQnVpbGRlcigpLmNyZWF0ZVRlc3QoKS5mb28oKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZXBsYWNlQ29uc3RydWN0b3JXaXRoQnVpbGRlci92YXJhcmdzL2JlZm9yZS9UZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVwbGFjZUNvbnN0cnVjdG9yV2l0aEJ1aWxkZXIvdmFyYXJncy9iZWZvcmUvVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ3ZTY4YTUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVwbGFjZUNvbnN0cnVjdG9yV2l0aEJ1aWxkZXIvdmFyYXJncy9iZWZvcmUvVGVzdC5qYXZhCkBAIC0wLDAgKzEsOCBAQAorcHVibGljIGNsYXNzIFRlc3QgeworICBwdWJsaWMgVGVzdChpbnQuLi4gaSl7fQorICB2b2lkIGZvbygpe30KKyAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncyl7CisgICAgbmV3IFRlc3QoMSwgMiwgMykuZm9vKCk7CisgICAgbmV3IFRlc3QoKS5mb28oKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZXBsYWNlQ29uc3RydWN0b3JXaXRoRmFjdG9yeS9hZnRlcjAxLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVwbGFjZUNvbnN0cnVjdG9yV2l0aEZhY3RvcnkvYWZ0ZXIwMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU1YmEzNWMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVwbGFjZUNvbnN0cnVjdG9yV2l0aEZhY3RvcnkvYWZ0ZXIwMS5qYXZhCkBAIC0wLDAgKzEsOCBAQAorY2xhc3MgQSB7CisgICAgcHJpdmF0ZSBBKCkgeworICAgIH0KKworICAgIHN0YXRpYyBBIG5ld0EoKSB7CisgICAgICAgIHJldHVybiBuZXcgQSgpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVwbGFjZUNvbnN0cnVjdG9yV2l0aEZhY3RvcnkvYWZ0ZXIwMi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlcGxhY2VDb25zdHJ1Y3RvcldpdGhGYWN0b3J5L2FmdGVyMDIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMzU2NWIwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlcGxhY2VDb25zdHJ1Y3RvcldpdGhGYWN0b3J5L2FmdGVyMDIuamF2YQpAQCAtMCwwICsxLDIyIEBACitjbGFzcyBBIHsKKyAgICBBKGludCBpKSB7CisgICAgfQorCisgICAgcHVibGljIHN0YXRpYyBBIG5ld0EoaW50IGkpIHsKKyAgICAgICAgcmV0dXJuIG5ldyBBKGkpOworICAgIH0KKworICAgIEEgbWV0aG9kKCkgeworICAgICAgICByZXR1cm4gbmV3QSgxMCk7CisgICAgfQorfQorCitjbGFzcyBCIGV4dGVuZHMgQSB7CisgICAgQihpbnQgaikgeworICAgICAgICBzdXBlcihqKzEpOworICAgIH0KK30KKworY2xhc3MgVXNhZ2UgeworICAgIEEgYSA9IEEubmV3QSgyKTsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVwbGFjZUNvbnN0cnVjdG9yV2l0aEZhY3RvcnkvYWZ0ZXIwMy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlcGxhY2VDb25zdHJ1Y3RvcldpdGhGYWN0b3J5L2FmdGVyMDMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42OTFkOTI1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlcGxhY2VDb25zdHJ1Y3RvcldpdGhGYWN0b3J5L2FmdGVyMDMuamF2YQpAQCAtMCwwICsxLDEyIEBACitjbGFzcyBBPGNhcmV0PiB7CisgICAgcHJpdmF0ZSBBKCkgeworICAgIH0KKworICAgIHN0YXRpYyBBIG5ld0EoKSB7CisgICAgICAgIHJldHVybiBuZXcgQSgpOworICAgIH0KK30KKworcHVibGljIGNsYXNzIEIgeworICAgIEEgYSA9IEEubmV3QSgpOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZXBsYWNlQ29uc3RydWN0b3JXaXRoRmFjdG9yeS9hZnRlcjA0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVwbGFjZUNvbnN0cnVjdG9yV2l0aEZhY3RvcnkvYWZ0ZXIwNC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUzYzg3NGQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVwbGFjZUNvbnN0cnVjdG9yV2l0aEZhY3RvcnkvYWZ0ZXIwNC5qYXZhCkBAIC0wLDAgKzEsMTcgQEAKK2NsYXNzIE91dGVyQ2xhc3MgeworICAgIElubmVyQ2xhc3MgbmV3SW5uZXJDbGFzcyhpbnQgX2kpIHsKKyAgICAgICAgcmV0dXJuIG5ldyBJbm5lckNsYXNzKF9pKTsKKyAgICB9CisKKyAgICBjbGFzcyBJbm5lckNsYXNzIHsKKyAgICAgICAgaW50IGk7CisgICAgICAgIHByaXZhdGUgSW5uZXJDbGFzcyhpbnQgX2kpIHsKKyAgICAgICAgICAgIGkgPSBfaTsKKyAgICAgICAgfQorICAgIH0KKyAgICBJbm5lckNsYXNzIG15SW5uZXIgPSBuZXdJbm5lckNsYXNzKDI3KTsKKyAgICBzdGF0aWMgaW50IG1ldGhvZCgpIHsKKyAgICAgICAgT3V0ZXJDbGFzcyB0ZXN0ID0gbmV3IE91dGVyQ2xhc3MoKTsKKyAgICAgICAgSW5uZXJDbGFzcyBpbm5lciA9IHRlc3QubmV3SW5uZXJDbGFzcygxNSk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZXBsYWNlQ29uc3RydWN0b3JXaXRoRmFjdG9yeS9hZnRlcjA1LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVwbGFjZUNvbnN0cnVjdG9yV2l0aEZhY3RvcnkvYWZ0ZXIwNS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFkYmQ0NGEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVwbGFjZUNvbnN0cnVjdG9yV2l0aEZhY3RvcnkvYWZ0ZXIwNS5qYXZhCkBAIC0wLDAgKzEsMTQgQEAKK2NsYXNzIEEgeworICAgIEEoaW50IGkpIHsKKyAgICB9CisKKyAgICBzdGF0aWMgQSBuZXdBKGludCBpKSB7CisgICAgICAgIHJldHVybiBuZXcgQShpKTsKKyAgICB9Cit9CisKK2NsYXNzIEIgZXh0ZW5kcyBBIHsKKyAgICBCKGludCBpKSB7CisgICAgICBzdXBlcihpKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlcGxhY2VDb25zdHJ1Y3RvcldpdGhGYWN0b3J5L2FmdGVyMDYuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZXBsYWNlQ29uc3RydWN0b3JXaXRoRmFjdG9yeS9hZnRlcjA2LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTFmYmQ0ZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZXBsYWNlQ29uc3RydWN0b3JXaXRoRmFjdG9yeS9hZnRlcjA2LmphdmEKQEAgLTAsMCArMSwxMyBAQAorY2xhc3MgQSB7CisgICAgQSgpIHsKKyAgICB9CisKKyAgICBzdGF0aWMgQSBuZXdBKCkgeworICAgICAgICByZXR1cm4gbmV3IEEoKTsKKyAgICB9Cit9CisKK2NsYXNzIEIgZXh0ZW5kcyBBIHsKKyAgICBCKCkgeworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVwbGFjZUNvbnN0cnVjdG9yV2l0aEZhY3RvcnkvYWZ0ZXIwNy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlcGxhY2VDb25zdHJ1Y3RvcldpdGhGYWN0b3J5L2FmdGVyMDcuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NWJhMzVjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlcGxhY2VDb25zdHJ1Y3RvcldpdGhGYWN0b3J5L2FmdGVyMDcuamF2YQpAQCAtMCwwICsxLDggQEAKK2NsYXNzIEEgeworICAgIHByaXZhdGUgQSgpIHsKKyAgICB9CisKKyAgICBzdGF0aWMgQSBuZXdBKCkgeworICAgICAgICByZXR1cm4gbmV3IEEoKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlcGxhY2VDb25zdHJ1Y3RvcldpdGhGYWN0b3J5L2FmdGVyMDguamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZXBsYWNlQ29uc3RydWN0b3JXaXRoRmFjdG9yeS9hZnRlcjA4LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2E4YmZlOAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZXBsYWNlQ29uc3RydWN0b3JXaXRoRmFjdG9yeS9hZnRlcjA4LmphdmEKQEAgLTAsMCArMSw4IEBACitjbGFzcyBUZXN0PEEsQixDPiB7CisgICAgcHJpdmF0ZSBUZXN0KCkgeworICAgIH0KKworICAgIHB1YmxpYyBzdGF0aWMgPEEsIEIsIEM+IFRlc3Q8QSwgQiwgQz4gbmV3VGVzdCgpIHsKKyAgICAgICAgcmV0dXJuIG5ldyBUZXN0PEEsIEIsIEM+KCk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZXBsYWNlQ29uc3RydWN0b3JXaXRoRmFjdG9yeS9iZWZvcmUwMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlcGxhY2VDb25zdHJ1Y3RvcldpdGhGYWN0b3J5L2JlZm9yZTAxLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmY0MjZkMQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZXBsYWNlQ29uc3RydWN0b3JXaXRoRmFjdG9yeS9iZWZvcmUwMS5qYXZhCkBAIC0wLDAgKzEsNCBAQAorY2xhc3MgQSB7CisgICAgQSgpIHs8Y2FyZXQ+CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZXBsYWNlQ29uc3RydWN0b3JXaXRoRmFjdG9yeS9iZWZvcmUwMi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlcGxhY2VDb25zdHJ1Y3RvcldpdGhGYWN0b3J5L2JlZm9yZTAyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTIyMzExMgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZXBsYWNlQ29uc3RydWN0b3JXaXRoRmFjdG9yeS9iZWZvcmUwMi5qYXZhCkBAIC0wLDAgKzEsMTggQEAKK2NsYXNzIEEgeworICAgIHB1YmxpYyBBKGludCBpKSB7PGNhcmV0PgorICAgIH0KKworICAgIEEgbWV0aG9kKCkgeworICAgICAgICByZXR1cm4gbmV3IEEoMTApOworICAgIH0KK30KKworY2xhc3MgQiBleHRlbmRzIEEgeworICAgIEIoaW50IGopIHsKKyAgICAgICAgc3VwZXIoaisxKTsKKyAgICB9Cit9CisKK2NsYXNzIFVzYWdlIHsKKyAgICBBIGEgPSBuZXcgQSgyKTsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVwbGFjZUNvbnN0cnVjdG9yV2l0aEZhY3RvcnkvYmVmb3JlMDMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZXBsYWNlQ29uc3RydWN0b3JXaXRoRmFjdG9yeS9iZWZvcmUwMy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgxM2M1MzYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVwbGFjZUNvbnN0cnVjdG9yV2l0aEZhY3RvcnkvYmVmb3JlMDMuamF2YQpAQCAtMCwwICsxLDYgQEAKK2NsYXNzIEE8Y2FyZXQ+IHsKK30KKworcHVibGljIGNsYXNzIEIgeworICAgIEEgYSA9IG5ldyBBKCk7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlcGxhY2VDb25zdHJ1Y3RvcldpdGhGYWN0b3J5L2JlZm9yZTA0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVwbGFjZUNvbnN0cnVjdG9yV2l0aEZhY3RvcnkvYmVmb3JlMDQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMjYwZTJmMwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZXBsYWNlQ29uc3RydWN0b3JXaXRoRmFjdG9yeS9iZWZvcmUwNC5qYXZhCkBAIC0wLDAgKzEsMTMgQEAKK2NsYXNzIE91dGVyQ2xhc3MgeworICAgIGNsYXNzIElubmVyQ2xhc3MgeworICAgICAgICBpbnQgaTsKKyAgICAgICAgSW5uZXJDbGFzcyhpbnQgX2kpIHs8Y2FyZXQ+CisgICAgICAgICAgICBpID0gX2k7CisgICAgICAgIH0KKyAgICB9CisgICAgSW5uZXJDbGFzcyBteUlubmVyID0gbmV3IElubmVyQ2xhc3MoMjcpOworICAgIHN0YXRpYyBpbnQgbWV0aG9kKCkgeworICAgICAgICBPdXRlckNsYXNzIHRlc3QgPSBuZXcgT3V0ZXJDbGFzcygpOworICAgICAgICBJbm5lckNsYXNzIGlubmVyID0gdGVzdC5uZXcgSW5uZXJDbGFzcygxNSk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZXBsYWNlQ29uc3RydWN0b3JXaXRoRmFjdG9yeS9iZWZvcmUwNS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlcGxhY2VDb25zdHJ1Y3RvcldpdGhGYWN0b3J5L2JlZm9yZTA1LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzk4MzIyZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZXBsYWNlQ29uc3RydWN0b3JXaXRoRmFjdG9yeS9iZWZvcmUwNS5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKK2NsYXNzIEEgeworICAgIEEoaW50IGkpIHs8Y2FyZXQ+CisgICAgfQorfQorCitjbGFzcyBCIGV4dGVuZHMgQSB7CisgICAgQihpbnQgaSkgeworICAgICAgc3VwZXIoaSk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZXBsYWNlQ29uc3RydWN0b3JXaXRoRmFjdG9yeS9iZWZvcmUwNi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlcGxhY2VDb25zdHJ1Y3RvcldpdGhGYWN0b3J5L2JlZm9yZTA2LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGQ1MGNjYTAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvcmVwbGFjZUNvbnN0cnVjdG9yV2l0aEZhY3RvcnkvYmVmb3JlMDYuamF2YQpAQCAtMCwwICsxLDkgQEAKK2NsYXNzIEEgeworICAgIEEoKSB7PGNhcmV0PgorICAgIH0KK30KKworY2xhc3MgQiBleHRlbmRzIEEgeworICAgIEIoKSB7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZXBsYWNlQ29uc3RydWN0b3JXaXRoRmFjdG9yeS9iZWZvcmUwNy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlcGxhY2VDb25zdHJ1Y3RvcldpdGhGYWN0b3J5L2JlZm9yZTA3LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTI4YTY2NAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZXBsYWNlQ29uc3RydWN0b3JXaXRoRmFjdG9yeS9iZWZvcmUwNy5qYXZhCkBAIC0wLDAgKzEsMiBAQAorY2xhc3MgQSB7PGNhcmV0PgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZXBsYWNlQ29uc3RydWN0b3JXaXRoRmFjdG9yeS9iZWZvcmUwOC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3JlcGxhY2VDb25zdHJ1Y3RvcldpdGhGYWN0b3J5L2JlZm9yZTA4LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2Y0ODQwYgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9yZXBsYWNlQ29uc3RydWN0b3JXaXRoRmFjdG9yeS9iZWZvcmUwOC5qYXZhCkBAIC0wLDAgKzEsNCBAQAorY2xhc3MgVGVzdDxBLEIsQz4geworICAgIHB1YmxpYyA8Y2FyZXQ+VGVzdCgpIHsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3NhZmVEZWxldGUvTGFzdFJlc291cmNlVmFyaWFibGUuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9zYWZlRGVsZXRlL0xhc3RSZXNvdXJjZVZhcmlhYmxlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWZlZDEwNQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9zYWZlRGVsZXRlL0xhc3RSZXNvdXJjZVZhcmlhYmxlLmphdmEKQEAgLTAsMCArMSw2IEBACitjbGFzcyBBUk0geworICB2b2lkIGYoKSB7CisgICAgdHJ5IChBdXRvQ2xvc2VhYmxlIDxjYXJldD5yID0gbnVsbCkgeworICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9zYWZlRGVsZXRlL0xhc3RSZXNvdXJjZVZhcmlhYmxlX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3Jpbmcvc2FmZURlbGV0ZS9MYXN0UmVzb3VyY2VWYXJpYWJsZV9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI5OWU4M2MKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3Jpbmcvc2FmZURlbGV0ZS9MYXN0UmVzb3VyY2VWYXJpYWJsZV9hZnRlci5qYXZhCkBAIC0wLDAgKzEsNiBAQAorY2xhc3MgQVJNIHsKKyAgdm9pZCBmKCkgeworICAgIHRyeSB7CisgICAgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3NhZmVEZWxldGUvTGFzdFR5cGVQYXJhbS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3NhZmVEZWxldGUvTGFzdFR5cGVQYXJhbS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ2ZjAzYTQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3Jpbmcvc2FmZURlbGV0ZS9MYXN0VHlwZVBhcmFtLmphdmEKQEAgLTAsMCArMSw4IEBACitwdWJsaWMgY2xhc3MgVGVzdDxUPGNhcmV0PlQ+IHt9CisKK2NsYXNzIEZvbyB7CisgICAgICAgIHZvaWQgdGVzdCgpIHsKKyAgICAgICAgICAgICAgICBUZXN0PFN0cmluZz4gdGVzdCA9IG5ldyBUZXN0PD4oKTsKKyAgICAgICAgICAgICAgICBUZXN0PFN0cmluZz4gdGVzdDIgPSBuZXcgVGVzdDxTdHJpbmc+KCk7CisgICAgICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3Jpbmcvc2FmZURlbGV0ZS9MYXN0VHlwZVBhcmFtX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3Jpbmcvc2FmZURlbGV0ZS9MYXN0VHlwZVBhcmFtX2FmdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTJlNGRjZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9zYWZlRGVsZXRlL0xhc3RUeXBlUGFyYW1fYWZ0ZXIuamF2YQpAQCAtMCwwICsxLDggQEAKK3B1YmxpYyBjbGFzcyBUZXN0IHt9CisKK2NsYXNzIEZvbyB7CisgICAgICAgIHZvaWQgdGVzdCgpIHsKKyAgICAgICAgICAgICAgICBUZXN0IHRlc3QgPSBuZXcgVGVzdCgpOworICAgICAgICAgICAgICAgIFRlc3QgdGVzdDIgPSBuZXcgVGVzdCgpOworICAgICAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3NhZmVEZWxldGUvU3RyaXBPdmVycmlkZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3NhZmVEZWxldGUvU3RyaXBPdmVycmlkZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNlM2RkNDQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3Jpbmcvc2FmZURlbGV0ZS9TdHJpcE92ZXJyaWRlLmphdmEKQEAgLTAsMCArMSwxNCBAQAoraW50ZXJmYWNlIEFtIHsKKyAgICBTdHJpbmcgZ2V0SWM8Y2FyZXQ+b24oKTsKK30KKworY2xhc3MgQUlJbSBpbXBsZW1lbnRzIEFtIHsKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgU3RyaW5nIGdldEljb24oKSB7CisgICAgICAgIHJldHVybiBudWxsOworICAgIH0KKworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKKyAgICAgICAgbmV3IEFJSW0oKS5nZXRJY29uKCk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9zYWZlRGVsZXRlL1N0cmlwT3ZlcnJpZGVfYWZ0ZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9zYWZlRGVsZXRlL1N0cmlwT3ZlcnJpZGVfYWZ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZmRmMGExCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3NhZmVEZWxldGUvU3RyaXBPdmVycmlkZV9hZnRlci5qYXZhCkBAIC0wLDAgKzEsMTIgQEAKK2ludGVyZmFjZSBBbSB7Cit9CisKK2NsYXNzIEFJSW0gaW1wbGVtZW50cyBBbSB7CisgICAgcHJpdmF0ZSBTdHJpbmcgZ2V0SWNvbigpIHsKKyAgICAgICAgcmV0dXJuIG51bGw7CisgICAgfQorCisgICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgeworICAgICAgICBuZXcgQUlJbSgpLmdldEljb24oKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3NhZmVEZWxldGUvVHlwZVBhcmFtRnJvbURpYW1vbmQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9zYWZlRGVsZXRlL1R5cGVQYXJhbUZyb21EaWFtb25kLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2I1NWMyMQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9zYWZlRGVsZXRlL1R5cGVQYXJhbUZyb21EaWFtb25kLmphdmEKQEAgLTAsMCArMSw4IEBACitwdWJsaWMgY2xhc3MgVGVzdDw8Y2FyZXQ+VCwgVT4ge30KKworY2xhc3MgRm9vIHsKKyAgICAgICAgdm9pZCB0ZXN0KCkgeworICAgICAgICAgICAgICAgIFRlc3Q8U3RyaW5nLCBMb25nPiB0ZXN0ID0gbmV3IFRlc3Q8PigpOworICAgICAgICAgICAgICAgIFRlc3Q8U3RyaW5nLCBMb25nPiB0ZXN0MiA9IG5ldyBUZXN0PFN0cmluZywgTG9uZz4oKTsKKyAgICAgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9zYWZlRGVsZXRlL1R5cGVQYXJhbUZyb21EaWFtb25kX2FmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3Jpbmcvc2FmZURlbGV0ZS9UeXBlUGFyYW1Gcm9tRGlhbW9uZF9hZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMwYjA3MjcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3Jpbmcvc2FmZURlbGV0ZS9UeXBlUGFyYW1Gcm9tRGlhbW9uZF9hZnRlci5qYXZhCkBAIC0wLDAgKzEsOCBAQAorcHVibGljIGNsYXNzIFRlc3Q8VT4ge30KKworY2xhc3MgRm9vIHsKKyAgICAgICAgdm9pZCB0ZXN0KCkgeworICAgICAgICAgICAgICAgIFRlc3Q8TG9uZz4gdGVzdCA9IG5ldyBUZXN0PD4oKTsKKyAgICAgICAgICAgICAgICBUZXN0PExvbmc+IHRlc3QyID0gbmV3IFRlc3Q8TG9uZz4oKTsKKyAgICAgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9zYWZlRGVsZXRlL2VudW1Db25zdHJ1Y3RvclBhcmFtZXRlci9hZnRlci9Vc2VyRmxhZ3MuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9zYWZlRGVsZXRlL2VudW1Db25zdHJ1Y3RvclBhcmFtZXRlci9hZnRlci9Vc2VyRmxhZ3MuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZTI5NmUyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3NhZmVEZWxldGUvZW51bUNvbnN0cnVjdG9yUGFyYW1ldGVyL2FmdGVyL1VzZXJGbGFncy5qYXZhCkBAIC0wLDAgKzEsMTIgQEAKK3B1YmxpYyBlbnVtIFVzZXJGbGFncyB7CisgICAgUm9vdCgiSGFzIHN1cGVyIGFkbWluaXN0cmF0aXZlIHBvd2VycyIpLAorICAgIEJsYWNrbGlzdGVkKCJQcm9iYWJseSBhIHNwYW1tZXIiKTsKKworICAgIHB1YmxpYyBmaW5hbCBTdHJpbmcgZGVzY3JpcHRpb247CisgICAgcHVibGljIGZpbmFsIGludCBtYXNrOworCisgICAgVXNlckZsYWdzKFN0cmluZyBkZXNjcmlwdGlvbikgeworICAgICAgICB0aGlzLmRlc2NyaXB0aW9uID0gZGVzY3JpcHRpb247CisgICAgICAgIHRoaXMubWFzayA9IDEgPDwgb3JkaW5hbCgpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3Jpbmcvc2FmZURlbGV0ZS9lbnVtQ29uc3RydWN0b3JQYXJhbWV0ZXIvYmVmb3JlL1VzZXJGbGFncy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3NhZmVEZWxldGUvZW51bUNvbnN0cnVjdG9yUGFyYW1ldGVyL2JlZm9yZS9Vc2VyRmxhZ3MuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNWViMzFjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3NhZmVEZWxldGUvZW51bUNvbnN0cnVjdG9yUGFyYW1ldGVyL2JlZm9yZS9Vc2VyRmxhZ3MuamF2YQpAQCAtMCwwICsxLDEyIEBACitwdWJsaWMgZW51bSBVc2VyRmxhZ3MgeworICAgIFJvb3QoIkhhcyBzdXBlciBhZG1pbmlzdHJhdGl2ZSBwb3dlcnMiLCAwKSwKKyAgICBCbGFja2xpc3RlZCgiUHJvYmFibHkgYSBzcGFtbWVyIiwgMSk7CisKKyAgICBwdWJsaWMgZmluYWwgU3RyaW5nIGRlc2NyaXB0aW9uOworICAgIHB1YmxpYyBmaW5hbCBpbnQgbWFzazsKKworICAgIFVzZXJGbGFncyhTdHJpbmcgZGVzY3JpcHRpb24sIGludCA8Y2FyZXQ+cG9zaXRpb24pIHsKKyAgICAgICAgdGhpcy5kZXNjcmlwdGlvbiA9IGRlc2NyaXB0aW9uOworICAgICAgICB0aGlzLm1hc2sgPSAxIDw8IG9yZGluYWwoKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3NhZmVEZWxldGUvZXh0ZW5kc0xpc3QvYWZ0ZXIvQS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3NhZmVEZWxldGUvZXh0ZW5kc0xpc3QvYWZ0ZXIvQS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFiY2Q0YzMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3Jpbmcvc2FmZURlbGV0ZS9leHRlbmRzTGlzdC9hZnRlci9BLmphdmEKQEAgLTAsMCArMSBAQAorY2xhc3MgQTxUQT57fQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9zYWZlRGVsZXRlL2V4dGVuZHNMaXN0L2FmdGVyL0MuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9zYWZlRGVsZXRlL2V4dGVuZHNMaXN0L2FmdGVyL0MuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZTM0NDE5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3NhZmVEZWxldGUvZXh0ZW5kc0xpc3QvYWZ0ZXIvQy5qYXZhCkBAIC0wLDAgKzEgQEAKK2NsYXNzIEM8VEM+IGV4dGVuZHMgQTxUQz4ge30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3Jpbmcvc2FmZURlbGV0ZS9leHRlbmRzTGlzdC9iZWZvcmUvQS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3NhZmVEZWxldGUvZXh0ZW5kc0xpc3QvYmVmb3JlL0EuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYmNkNGMzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3NhZmVEZWxldGUvZXh0ZW5kc0xpc3QvYmVmb3JlL0EuamF2YQpAQCAtMCwwICsxIEBACitjbGFzcyBBPFRBPnt9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3NhZmVEZWxldGUvZXh0ZW5kc0xpc3QvYmVmb3JlL0IuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9zYWZlRGVsZXRlL2V4dGVuZHNMaXN0L2JlZm9yZS9CLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzhlODQ0NwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9zYWZlRGVsZXRlL2V4dGVuZHNMaXN0L2JlZm9yZS9CLmphdmEKQEAgLTAsMCArMSw1IEBACitjbGFzcyBCPGNhcmV0PjxUQj4gZXh0ZW5kcyBBPFRCPnsKKyAgcHVibGljIEIoKSB7CisgICAgc3VwZXIoKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9zYWZlRGVsZXRlL2V4dGVuZHNMaXN0L2JlZm9yZS9DLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3Jpbmcvc2FmZURlbGV0ZS9leHRlbmRzTGlzdC9iZWZvcmUvQy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYwZjhmYWYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3Jpbmcvc2FmZURlbGV0ZS9leHRlbmRzTGlzdC9iZWZvcmUvQy5qYXZhCkBAIC0wLDAgKzEgQEAKK2NsYXNzIEM8VEM+IGV4dGVuZHMgQjxUQz57fQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9zYWZlRGVsZXRlL2ltcGxpY2l0Q3RyQ2FsbC9iZWZvcmUvU3ViLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3Jpbmcvc2FmZURlbGV0ZS9pbXBsaWNpdEN0ckNhbGwvYmVmb3JlL1N1Yi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM4OGFmNTAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3Jpbmcvc2FmZURlbGV0ZS9pbXBsaWNpdEN0ckNhbGwvYmVmb3JlL1N1Yi5qYXZhCkBAIC0wLDAgKzEsNCBAQAorICAgIGNsYXNzIFN1YiBleHRlbmRzIFN1cGVyIHsKKyAgICAgICAgcHVibGljIFN1YigpIHsKKyAgICAgICAgfQorICAgIH0KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9zYWZlRGVsZXRlL2ltcGxpY2l0Q3RyQ2FsbC9iZWZvcmUvU3VwZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9zYWZlRGVsZXRlL2ltcGxpY2l0Q3RyQ2FsbC9iZWZvcmUvU3VwZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NmRhNzIzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3NhZmVEZWxldGUvaW1wbGljaXRDdHJDYWxsL2JlZm9yZS9TdXBlci5qYXZhCkBAIC0wLDAgKzEsNyBAQAorICAgIGNsYXNzIFN1cGVyIHsKKyAgICAgICAgcHVibGljIDxjYXJldD5TdXBlcigpIHsKKyAgICAgICAgfSAvL1NhZmUgRGVsZXRlIHNob3VsZCBub3QgYWxsb3cgdGhpcyB0byBiZSBkZWxldGVkIHdpdGhvdXQgZmlyc3QgY2hhbmdpbmcgY2xhc3MgU3ViJ3MgY29uc3RydWN0b3JzIHRvIHVzZSBTdXBlcihTdHJpbmcpCisKKyAgICAgICAgcHVibGljIFN1cGVyKFN0cmluZyBuYW1lKSB7CisgICAgICAgIH0KKyAgICB9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3Jpbmcvc2FmZURlbGV0ZS9pbXBsaWNpdEN0ckNhbGwyL2JlZm9yZS9TdWIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9zYWZlRGVsZXRlL2ltcGxpY2l0Q3RyQ2FsbDIvYmVmb3JlL1N1Yi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAxMTUzOWEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3Jpbmcvc2FmZURlbGV0ZS9pbXBsaWNpdEN0ckNhbGwyL2JlZm9yZS9TdWIuamF2YQpAQCAtMCwwICsxLDIgQEAKKyAgICBjbGFzcyBTdWIgZXh0ZW5kcyBTdXBlciB7CisgICAgfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3NhZmVEZWxldGUvaW1wbGljaXRDdHJDYWxsMi9iZWZvcmUvU3VwZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9zYWZlRGVsZXRlL2ltcGxpY2l0Q3RyQ2FsbDIvYmVmb3JlL1N1cGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzZkYTcyMwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9zYWZlRGVsZXRlL2ltcGxpY2l0Q3RyQ2FsbDIvYmVmb3JlL1N1cGVyLmphdmEKQEAgLTAsMCArMSw3IEBACisgICAgY2xhc3MgU3VwZXIgeworICAgICAgICBwdWJsaWMgPGNhcmV0PlN1cGVyKCkgeworICAgICAgICB9IC8vU2FmZSBEZWxldGUgc2hvdWxkIG5vdCBhbGxvdyB0aGlzIHRvIGJlIGRlbGV0ZWQgd2l0aG91dCBmaXJzdCBjaGFuZ2luZyBjbGFzcyBTdWIncyBjb25zdHJ1Y3RvcnMgdG8gdXNlIFN1cGVyKFN0cmluZykKKworICAgICAgICBwdWJsaWMgU3VwZXIoU3RyaW5nIG5hbWUpIHsKKyAgICAgICAgfQorICAgIH0KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9zYWZlRGVsZXRlL2phdmFkb2NQYXJhbVJlZi9hZnRlci9TdXBlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3NhZmVEZWxldGUvamF2YWRvY1BhcmFtUmVmL2FmdGVyL1N1cGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWRiMjliYgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9zYWZlRGVsZXRlL2phdmFkb2NQYXJhbVJlZi9hZnRlci9TdXBlci5qYXZhCkBAIC0wLDAgKzEsOCBAQAorY2xhc3MgU3VwZXIgeworICB2b2lkIG0xKFN0cmluZyBwMikge30KKworICAgIC8qKgorICAgICAqIEBzZWUgI20xKFN0cmluZykKKyAgICAgKi8KKyAgICB2b2lkIG0yKCkge30KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9zYWZlRGVsZXRlL2phdmFkb2NQYXJhbVJlZi9iZWZvcmUvU3VwZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9zYWZlRGVsZXRlL2phdmFkb2NQYXJhbVJlZi9iZWZvcmUvU3VwZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZWM3NDBmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3NhZmVEZWxldGUvamF2YWRvY1BhcmFtUmVmL2JlZm9yZS9TdXBlci5qYXZhCkBAIC0wLDAgKzEsOCBAQAorY2xhc3MgU3VwZXIgeworICB2b2lkIG0xKFN0cmluZyBwPGNhcmV0PjEsIFN0cmluZyBwMikge30KKworICAgIC8qKgorICAgICAqIEBzZWUgI20xKFN0cmluZywgU3RyaW5nKQorICAgICAqLworICAgIHZvaWQgbTIoKSB7fQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3NhZmVEZWxldGUvbG9jYWxWYXJpYWJsZS9hZnRlci9TdXBlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3NhZmVEZWxldGUvbG9jYWxWYXJpYWJsZS9hZnRlci9TdXBlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIyNzBmNWIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3Jpbmcvc2FmZURlbGV0ZS9sb2NhbFZhcmlhYmxlL2FmdGVyL1N1cGVyLmphdmEKQEAgLTAsMCArMSw1IEBACitjbGFzcyBTdXBlciB7CisgICAgdm9pZCBmb28oKSB7CisgICAgfQorCit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3Jpbmcvc2FmZURlbGV0ZS9sb2NhbFZhcmlhYmxlL2JlZm9yZS9TdXBlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3NhZmVEZWxldGUvbG9jYWxWYXJpYWJsZS9iZWZvcmUvU3VwZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NDI5NmUyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3NhZmVEZWxldGUvbG9jYWxWYXJpYWJsZS9iZWZvcmUvU3VwZXIuamF2YQpAQCAtMCwwICsxLDggQEAKK2NsYXNzIFN1cGVyIHsKKyAgICB2b2lkIGZvbygpIHsKKyAgICAgICAgaW50IHZhcjxjYXJldD5OYW1lID0gMDsKKyAgICAgICAgdmFyTmFtZSsrOworICAgICAgICB2YXJOYW1lID0gMTA7CisgICAgfQorCit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3Jpbmcvc2FmZURlbGV0ZS9sb2NhbFZhcmlhYmxlU2lkZUVmZmVjdC9hZnRlci9TdXBlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3NhZmVEZWxldGUvbG9jYWxWYXJpYWJsZVNpZGVFZmZlY3QvYWZ0ZXIvU3VwZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MTA0MTY4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3NhZmVEZWxldGUvbG9jYWxWYXJpYWJsZVNpZGVFZmZlY3QvYWZ0ZXIvU3VwZXIuamF2YQpAQCAtMCwwICsxLDUgQEAKK2NsYXNzIFN1cGVyIHsKKyAgICB2b2lkIGZvbygpIHsKKyAgICAgICAgfQorCit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3Jpbmcvc2FmZURlbGV0ZS9sb2NhbFZhcmlhYmxlU2lkZUVmZmVjdC9iZWZvcmUvU3VwZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9zYWZlRGVsZXRlL2xvY2FsVmFyaWFibGVTaWRlRWZmZWN0L2JlZm9yZS9TdXBlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY0N2IxNDQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3Jpbmcvc2FmZURlbGV0ZS9sb2NhbFZhcmlhYmxlU2lkZUVmZmVjdC9iZWZvcmUvU3VwZXIuamF2YQpAQCAtMCwwICsxLDkgQEAKK2NsYXNzIFN1cGVyIHsKKyAgICB2b2lkIGZvbygpIHsKKyAgICAgICAgaW50IHZhcjxjYXJldD5OYW1lID0gMDsKKyAgICAgICAgdmFyTmFtZSsrOworICAgICAgICB2YXJOYW1lID0gYmFyKCk7CisgICAgfQorICAgIGludCBiYXIoKSB7cmV0dXJuIDA7fQorCit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3Jpbmcvc2FmZURlbGV0ZS9tZXRob2REZWVwSGllcmFyY2h5L2FmdGVyL1N1cGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3Jpbmcvc2FmZURlbGV0ZS9tZXRob2REZWVwSGllcmFyY2h5L2FmdGVyL1N1cGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzQ5MDI0YwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9zYWZlRGVsZXRlL21ldGhvZERlZXBIaWVyYXJjaHkvYWZ0ZXIvU3VwZXIuamF2YQpAQCAtMCwwICsxLDkgQEAKK3B1YmxpYyBjbGFzcyBTdXBlciB7CisKK30KKworY2xhc3MgQ2hpbGQgZXh0ZW5kcyBTdXBlciB7Cit9CisKK2NsYXNzIENoaWxkQ2hpbGQgZXh0ZW5kcyBDaGlsZCB7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3NhZmVEZWxldGUvbWV0aG9kRGVlcEhpZXJhcmNoeS9iZWZvcmUvU3VwZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9zYWZlRGVsZXRlL21ldGhvZERlZXBIaWVyYXJjaHkvYmVmb3JlL1N1cGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWU4ZmEwNAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9zYWZlRGVsZXRlL21ldGhvZERlZXBIaWVyYXJjaHkvYmVmb3JlL1N1cGVyLmphdmEKQEAgLTAsMCArMSwxOSBAQAorcHVibGljIGNsYXNzIFN1cGVyIHsKKyAgICB2b2lkIGY8Y2FyZXQ+b28oKSB7CisgICAgfQorCit9CisKK2NsYXNzIENoaWxkIGV4dGVuZHMgU3VwZXIgeworICAgIHZvaWQgZm9vKCl7CisgICAgICBzdXBlci5mb28oKTsKKyAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiZG8gc29tZSBzdGFmZiIpOworICAgIH0KK30KKworY2xhc3MgQ2hpbGRDaGlsZCBleHRlbmRzIENoaWxkIHsKKyAgICB2b2lkIGZvbygpeworICAgICAgc3VwZXIuZm9vKCk7CisgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oImhlcmUgZG8gc210aCBlbHNlIik7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9zYWZlRGVsZXRlL211bHRpcGxlSW50ZXJmYWNlc0ltcGxlbWVudGF0aW9uL2FmdGVyL0Jhci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3NhZmVEZWxldGUvbXVsdGlwbGVJbnRlcmZhY2VzSW1wbGVtZW50YXRpb24vYWZ0ZXIvQmFyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWUyMTg3ZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9zYWZlRGVsZXRlL211bHRpcGxlSW50ZXJmYWNlc0ltcGxlbWVudGF0aW9uL2FmdGVyL0Jhci5qYXZhCkBAIC0wLDAgKzEsOSBAQAorcHVibGljIGNsYXNzIEJhciBpbXBsZW1lbnRzIElGb28sIElCYXIgeworICAgIHB1YmxpYyBTdHJpbmcgZ2V0VGV4dCgpIHsKKyAgICAgICAgcmV0dXJuICJoZWxsbyI7CisgICAgfQorCisgICAgcHVibGljIElCYXIgZ2V0SUJhcigpIHsKKyAgICAgICAgcmV0dXJuIHRoaXM7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3NhZmVEZWxldGUvbXVsdGlwbGVJbnRlcmZhY2VzSW1wbGVtZW50YXRpb24vYWZ0ZXIvSUJhci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3NhZmVEZWxldGUvbXVsdGlwbGVJbnRlcmZhY2VzSW1wbGVtZW50YXRpb24vYWZ0ZXIvSUJhci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVhZDY2ZTgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3Jpbmcvc2FmZURlbGV0ZS9tdWx0aXBsZUludGVyZmFjZXNJbXBsZW1lbnRhdGlvbi9hZnRlci9JQmFyLmphdmEKQEAgLTAsMCArMSwzIEBACitwdWJsaWMgaW50ZXJmYWNlIElCYXIgeworICAgIFN0cmluZyBnZXRUZXh0KCk7Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3Jpbmcvc2FmZURlbGV0ZS9tdWx0aXBsZUludGVyZmFjZXNJbXBsZW1lbnRhdGlvbi9hZnRlci9JRm9vLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3Jpbmcvc2FmZURlbGV0ZS9tdWx0aXBsZUludGVyZmFjZXNJbXBsZW1lbnRhdGlvbi9hZnRlci9JRm9vLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjMzYmZlZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9zYWZlRGVsZXRlL211bHRpcGxlSW50ZXJmYWNlc0ltcGxlbWVudGF0aW9uL2FmdGVyL0lGb28uamF2YQpAQCAtMCwwICsxLDMgQEAKK3B1YmxpYyBpbnRlcmZhY2UgSUZvbyB7CisgICAgSUJhciBnZXRJQmFyKCk7Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3Jpbmcvc2FmZURlbGV0ZS9tdWx0aXBsZUludGVyZmFjZXNJbXBsZW1lbnRhdGlvbi9iZWZvcmUvQmFyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3Jpbmcvc2FmZURlbGV0ZS9tdWx0aXBsZUludGVyZmFjZXNJbXBsZW1lbnRhdGlvbi9iZWZvcmUvQmFyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWUyMTg3ZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9zYWZlRGVsZXRlL211bHRpcGxlSW50ZXJmYWNlc0ltcGxlbWVudGF0aW9uL2JlZm9yZS9CYXIuamF2YQpAQCAtMCwwICsxLDkgQEAKK3B1YmxpYyBjbGFzcyBCYXIgaW1wbGVtZW50cyBJRm9vLCBJQmFyIHsKKyAgICBwdWJsaWMgU3RyaW5nIGdldFRleHQoKSB7CisgICAgICAgIHJldHVybiAiaGVsbG8iOworICAgIH0KKworICAgIHB1YmxpYyBJQmFyIGdldElCYXIoKSB7CisgICAgICAgIHJldHVybiB0aGlzOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9zYWZlRGVsZXRlL211bHRpcGxlSW50ZXJmYWNlc0ltcGxlbWVudGF0aW9uL2JlZm9yZS9JQmFyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3Jpbmcvc2FmZURlbGV0ZS9tdWx0aXBsZUludGVyZmFjZXNJbXBsZW1lbnRhdGlvbi9iZWZvcmUvSUJhci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVhZDY2ZTgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3Jpbmcvc2FmZURlbGV0ZS9tdWx0aXBsZUludGVyZmFjZXNJbXBsZW1lbnRhdGlvbi9iZWZvcmUvSUJhci5qYXZhCkBAIC0wLDAgKzEsMyBAQAorcHVibGljIGludGVyZmFjZSBJQmFyIHsKKyAgICBTdHJpbmcgZ2V0VGV4dCgpOworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3NhZmVEZWxldGUvbXVsdGlwbGVJbnRlcmZhY2VzSW1wbGVtZW50YXRpb24vYmVmb3JlL0lGb28uamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9zYWZlRGVsZXRlL211bHRpcGxlSW50ZXJmYWNlc0ltcGxlbWVudGF0aW9uL2JlZm9yZS9JRm9vLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGMyMzg5NgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9zYWZlRGVsZXRlL211bHRpcGxlSW50ZXJmYWNlc0ltcGxlbWVudGF0aW9uL2JlZm9yZS9JRm9vLmphdmEKQEAgLTAsMCArMSw0IEBACitwdWJsaWMgaW50ZXJmYWNlIElGb28geworICAgIFN0cmluZyA8Y2FyZXQ+Z2V0VGV4dCgpOworICAgIElCYXIgZ2V0SUJhcigpOworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3NhZmVEZWxldGUvbXVsdGlwbGVJbnRlcmZhY2VzSW1wbGVtZW50YXRpb25UaHJvdWdoQ29tbW9uSW50ZXJmYWNlL2FmdGVyL0Jhci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3NhZmVEZWxldGUvbXVsdGlwbGVJbnRlcmZhY2VzSW1wbGVtZW50YXRpb25UaHJvdWdoQ29tbW9uSW50ZXJmYWNlL2FmdGVyL0Jhci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRjZTY5ZTYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3Jpbmcvc2FmZURlbGV0ZS9tdWx0aXBsZUludGVyZmFjZXNJbXBsZW1lbnRhdGlvblRocm91Z2hDb21tb25JbnRlcmZhY2UvYWZ0ZXIvQmFyLmphdmEKQEAgLTAsMCArMSwyIEBACitwdWJsaWMgaW50ZXJmYWNlIEJhciBleHRlbmRzIElGb28sIElCYXIgeworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3NhZmVEZWxldGUvbXVsdGlwbGVJbnRlcmZhY2VzSW1wbGVtZW50YXRpb25UaHJvdWdoQ29tbW9uSW50ZXJmYWNlL2FmdGVyL0JhckltcGwuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9zYWZlRGVsZXRlL211bHRpcGxlSW50ZXJmYWNlc0ltcGxlbWVudGF0aW9uVGhyb3VnaENvbW1vbkludGVyZmFjZS9hZnRlci9CYXJJbXBsLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDRkNmUwNAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9zYWZlRGVsZXRlL211bHRpcGxlSW50ZXJmYWNlc0ltcGxlbWVudGF0aW9uVGhyb3VnaENvbW1vbkludGVyZmFjZS9hZnRlci9CYXJJbXBsLmphdmEKQEAgLTAsMCArMSw5IEBACitwdWJsaWMgY2xhc3MgQmFySW1wbCBpbXBsZW1lbnRzIEJhciB7CisgICAgcHVibGljIFN0cmluZyBnZXRUZXh0KCkgeworICAgICAgICByZXR1cm4gImhlbGxvIjsKKyAgICB9CisKKyAgICBwdWJsaWMgSUJhciBnZXRJQmFyKCkgeworICAgICAgICByZXR1cm4gdGhpczsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3Jpbmcvc2FmZURlbGV0ZS9tdWx0aXBsZUludGVyZmFjZXNJbXBsZW1lbnRhdGlvblRocm91Z2hDb21tb25JbnRlcmZhY2UvYWZ0ZXIvSUJhci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3NhZmVEZWxldGUvbXVsdGlwbGVJbnRlcmZhY2VzSW1wbGVtZW50YXRpb25UaHJvdWdoQ29tbW9uSW50ZXJmYWNlL2FmdGVyL0lCYXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYWQ2NmU4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3NhZmVEZWxldGUvbXVsdGlwbGVJbnRlcmZhY2VzSW1wbGVtZW50YXRpb25UaHJvdWdoQ29tbW9uSW50ZXJmYWNlL2FmdGVyL0lCYXIuamF2YQpAQCAtMCwwICsxLDMgQEAKK3B1YmxpYyBpbnRlcmZhY2UgSUJhciB7CisgICAgU3RyaW5nIGdldFRleHQoKTsKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9zYWZlRGVsZXRlL211bHRpcGxlSW50ZXJmYWNlc0ltcGxlbWVudGF0aW9uVGhyb3VnaENvbW1vbkludGVyZmFjZS9hZnRlci9JRm9vLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3Jpbmcvc2FmZURlbGV0ZS9tdWx0aXBsZUludGVyZmFjZXNJbXBsZW1lbnRhdGlvblRocm91Z2hDb21tb25JbnRlcmZhY2UvYWZ0ZXIvSUZvby5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIzM2JmZWQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3Jpbmcvc2FmZURlbGV0ZS9tdWx0aXBsZUludGVyZmFjZXNJbXBsZW1lbnRhdGlvblRocm91Z2hDb21tb25JbnRlcmZhY2UvYWZ0ZXIvSUZvby5qYXZhCkBAIC0wLDAgKzEsMyBAQAorcHVibGljIGludGVyZmFjZSBJRm9vIHsKKyAgICBJQmFyIGdldElCYXIoKTsKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9zYWZlRGVsZXRlL211bHRpcGxlSW50ZXJmYWNlc0ltcGxlbWVudGF0aW9uVGhyb3VnaENvbW1vbkludGVyZmFjZS9iZWZvcmUvQmFyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3Jpbmcvc2FmZURlbGV0ZS9tdWx0aXBsZUludGVyZmFjZXNJbXBsZW1lbnRhdGlvblRocm91Z2hDb21tb25JbnRlcmZhY2UvYmVmb3JlL0Jhci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRjZTY5ZTYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3Jpbmcvc2FmZURlbGV0ZS9tdWx0aXBsZUludGVyZmFjZXNJbXBsZW1lbnRhdGlvblRocm91Z2hDb21tb25JbnRlcmZhY2UvYmVmb3JlL0Jhci5qYXZhCkBAIC0wLDAgKzEsMiBAQAorcHVibGljIGludGVyZmFjZSBCYXIgZXh0ZW5kcyBJRm9vLCBJQmFyIHsKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9zYWZlRGVsZXRlL211bHRpcGxlSW50ZXJmYWNlc0ltcGxlbWVudGF0aW9uVGhyb3VnaENvbW1vbkludGVyZmFjZS9iZWZvcmUvQmFySW1wbC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3NhZmVEZWxldGUvbXVsdGlwbGVJbnRlcmZhY2VzSW1wbGVtZW50YXRpb25UaHJvdWdoQ29tbW9uSW50ZXJmYWNlL2JlZm9yZS9CYXJJbXBsLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDRkNmUwNAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9zYWZlRGVsZXRlL211bHRpcGxlSW50ZXJmYWNlc0ltcGxlbWVudGF0aW9uVGhyb3VnaENvbW1vbkludGVyZmFjZS9iZWZvcmUvQmFySW1wbC5qYXZhCkBAIC0wLDAgKzEsOSBAQAorcHVibGljIGNsYXNzIEJhckltcGwgaW1wbGVtZW50cyBCYXIgeworICAgIHB1YmxpYyBTdHJpbmcgZ2V0VGV4dCgpIHsKKyAgICAgICAgcmV0dXJuICJoZWxsbyI7CisgICAgfQorCisgICAgcHVibGljIElCYXIgZ2V0SUJhcigpIHsKKyAgICAgICAgcmV0dXJuIHRoaXM7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3NhZmVEZWxldGUvbXVsdGlwbGVJbnRlcmZhY2VzSW1wbGVtZW50YXRpb25UaHJvdWdoQ29tbW9uSW50ZXJmYWNlL2JlZm9yZS9JQmFyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3Jpbmcvc2FmZURlbGV0ZS9tdWx0aXBsZUludGVyZmFjZXNJbXBsZW1lbnRhdGlvblRocm91Z2hDb21tb25JbnRlcmZhY2UvYmVmb3JlL0lCYXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYWQ2NmU4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3NhZmVEZWxldGUvbXVsdGlwbGVJbnRlcmZhY2VzSW1wbGVtZW50YXRpb25UaHJvdWdoQ29tbW9uSW50ZXJmYWNlL2JlZm9yZS9JQmFyLmphdmEKQEAgLTAsMCArMSwzIEBACitwdWJsaWMgaW50ZXJmYWNlIElCYXIgeworICAgIFN0cmluZyBnZXRUZXh0KCk7Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3Jpbmcvc2FmZURlbGV0ZS9tdWx0aXBsZUludGVyZmFjZXNJbXBsZW1lbnRhdGlvblRocm91Z2hDb21tb25JbnRlcmZhY2UvYmVmb3JlL0lGb28uamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9zYWZlRGVsZXRlL211bHRpcGxlSW50ZXJmYWNlc0ltcGxlbWVudGF0aW9uVGhyb3VnaENvbW1vbkludGVyZmFjZS9iZWZvcmUvSUZvby5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRjMjM4OTYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3Jpbmcvc2FmZURlbGV0ZS9tdWx0aXBsZUludGVyZmFjZXNJbXBsZW1lbnRhdGlvblRocm91Z2hDb21tb25JbnRlcmZhY2UvYmVmb3JlL0lGb28uamF2YQpAQCAtMCwwICsxLDQgQEAKK3B1YmxpYyBpbnRlcmZhY2UgSUZvbyB7CisgICAgU3RyaW5nIDxjYXJldD5nZXRUZXh0KCk7CisgICAgSUJhciBnZXRJQmFyKCk7Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3Jpbmcvc2FmZURlbGV0ZS9wYXJhbWV0ZXJJbkhpZXJhcmNoeS9hZnRlci9DMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3NhZmVEZWxldGUvcGFyYW1ldGVySW5IaWVyYXJjaHkvYWZ0ZXIvQzEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNmJmMGM4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3NhZmVEZWxldGUvcGFyYW1ldGVySW5IaWVyYXJjaHkvYWZ0ZXIvQzEuamF2YQpAQCAtMCwwICsxLDUgQEAKK3B1YmxpYyBjbGFzcyBDMSBpbXBsZW1lbnRzIEkgeworICBwdWJsaWMgdm9pZCBmKGludCBhMSkgeworCisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3Jpbmcvc2FmZURlbGV0ZS9wYXJhbWV0ZXJJbkhpZXJhcmNoeS9hZnRlci9JLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3Jpbmcvc2FmZURlbGV0ZS9wYXJhbWV0ZXJJbkhpZXJhcmNoeS9hZnRlci9JLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjAyOTZkOQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9zYWZlRGVsZXRlL3BhcmFtZXRlckluSGllcmFyY2h5L2FmdGVyL0kuamF2YQpAQCAtMCwwICsxLDMgQEAKK3B1YmxpYyBpbnRlcmZhY2UgSSB7CisgIHZvaWQgZihpbnQgYTEpOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9zYWZlRGVsZXRlL3BhcmFtZXRlckluSGllcmFyY2h5L2FmdGVyL1N1cGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3Jpbmcvc2FmZURlbGV0ZS9wYXJhbWV0ZXJJbkhpZXJhcmNoeS9hZnRlci9TdXBlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgwOTk2YjkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3Jpbmcvc2FmZURlbGV0ZS9wYXJhbWV0ZXJJbkhpZXJhcmNoeS9hZnRlci9TdXBlci5qYXZhCkBAIC0wLDAgKzEsNSBAQAorcHVibGljIGNsYXNzIEMyIGV4dGVuZHMgQzEgeworICBwdWJsaWMgdm9pZCBmKGludCBhMSkgeworICAgIHN1cGVyLmYoYTEpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3NhZmVEZWxldGUvcGFyYW1ldGVySW5IaWVyYXJjaHkvYmVmb3JlL0MxLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3Jpbmcvc2FmZURlbGV0ZS9wYXJhbWV0ZXJJbkhpZXJhcmNoeS9iZWZvcmUvQzEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMjAzZjk5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3NhZmVEZWxldGUvcGFyYW1ldGVySW5IaWVyYXJjaHkvYmVmb3JlL0MxLmphdmEKQEAgLTAsMCArMSw1IEBACitwdWJsaWMgY2xhc3MgQzEgaW1wbGVtZW50cyBJIHsKKyAgcHVibGljIHZvaWQgZihpbnQgYTEsIGludCBhMikgeworCisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3Jpbmcvc2FmZURlbGV0ZS9wYXJhbWV0ZXJJbkhpZXJhcmNoeS9iZWZvcmUvSS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3NhZmVEZWxldGUvcGFyYW1ldGVySW5IaWVyYXJjaHkvYmVmb3JlL0kuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40N2U0NTA3NQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9zYWZlRGVsZXRlL3BhcmFtZXRlckluSGllcmFyY2h5L2JlZm9yZS9JLmphdmEKQEAgLTAsMCArMSwzIEBACitwdWJsaWMgaW50ZXJmYWNlIEkgeworICB2b2lkIGYoaW50IGExLCBpbnQgYTIpOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9zYWZlRGVsZXRlL3BhcmFtZXRlckluSGllcmFyY2h5L2JlZm9yZS9TdXBlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3NhZmVEZWxldGUvcGFyYW1ldGVySW5IaWVyYXJjaHkvYmVmb3JlL1N1cGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2RhMDJiNAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9zYWZlRGVsZXRlL3BhcmFtZXRlckluSGllcmFyY2h5L2JlZm9yZS9TdXBlci5qYXZhCkBAIC0wLDAgKzEsNSBAQAorcHVibGljIGNsYXNzIEMyIGV4dGVuZHMgQzEgeworICBwdWJsaWMgdm9pZCBmKGludCBhMSwgaW50IGE8Y2FyZXQ+MikgeworICAgIHN1cGVyLmYoYTEsIGEyKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9zYWZlRGVsZXRlL3JlbW92ZU92ZXJyaWRlcnNJbnNwaXRlT2ZVbnNhZmVVc2FnZXMvYWZ0ZXIvQS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3NhZmVEZWxldGUvcmVtb3ZlT3ZlcnJpZGVyc0luc3BpdGVPZlVuc2FmZVVzYWdlcy9hZnRlci9BLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzc0MDQ1NAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9zYWZlRGVsZXRlL3JlbW92ZU92ZXJyaWRlcnNJbnNwaXRlT2ZVbnNhZmVVc2FnZXMvYWZ0ZXIvQS5qYXZhCkBAIC0wLDAgKzEsOSBAQAorcHVibGljIGNsYXNzIEEgeworICB2b2lkIGZvbygpIHsKKyAgICBiYXIoKTsKKyAgfQorCit9CisKK2NsYXNzIEIgZXh0ZW5kcyBBIHsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3Jpbmcvc2FmZURlbGV0ZS9yZW1vdmVPdmVycmlkZXJzSW5zcGl0ZU9mVW5zYWZlVXNhZ2VzL2JlZm9yZS9BLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3Jpbmcvc2FmZURlbGV0ZS9yZW1vdmVPdmVycmlkZXJzSW5zcGl0ZU9mVW5zYWZlVXNhZ2VzL2JlZm9yZS9BLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmIyYTZjMQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9zYWZlRGVsZXRlL3JlbW92ZU92ZXJyaWRlcnNJbnNwaXRlT2ZVbnNhZmVVc2FnZXMvYmVmb3JlL0EuamF2YQpAQCAtMCwwICsxLDEzIEBACitwdWJsaWMgY2xhc3MgQSB7CisgIHZvaWQgZm9vKCkgeworICAgIGJhcigpOworICB9CisKKyAgdm9pZCBiPGNhcmV0PmFyKCkge30KK30KKworY2xhc3MgQiBleHRlbmRzIEEgeworICB2b2lkIGJhcigpeworICAgIHN1cGVyLmJhcigpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3NhZmVEZWxldGUvc2FmZURlbGV0ZVN0YXRpY0ltcG9ydHMvYWZ0ZXIvQS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3NhZmVEZWxldGUvc2FmZURlbGV0ZVN0YXRpY0ltcG9ydHMvYWZ0ZXIvQS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjczZTI3MGQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3Jpbmcvc2FmZURlbGV0ZS9zYWZlRGVsZXRlU3RhdGljSW1wb3J0cy9hZnRlci9BLmphdmEKQEAgLTAsMCArMSwzIEBACitwdWJsaWMgY2xhc3MgQSB7Cit9CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9zYWZlRGVsZXRlL3NhZmVEZWxldGVTdGF0aWNJbXBvcnRzL2FmdGVyL0IuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9zYWZlRGVsZXRlL3NhZmVEZWxldGVTdGF0aWNJbXBvcnRzL2FmdGVyL0IuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNDRiZWY1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3NhZmVEZWxldGUvc2FmZURlbGV0ZVN0YXRpY0ltcG9ydHMvYWZ0ZXIvQi5qYXZhCkBAIC0wLDAgKzEsMyBAQAorY2xhc3MgQiB7CisKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3Jpbmcvc2FmZURlbGV0ZS9zYWZlRGVsZXRlU3RhdGljSW1wb3J0cy9iZWZvcmUvQS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3NhZmVEZWxldGUvc2FmZURlbGV0ZVN0YXRpY0ltcG9ydHMvYmVmb3JlL0EuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43M2YzNDQ1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3NhZmVEZWxldGUvc2FmZURlbGV0ZVN0YXRpY0ltcG9ydHMvYmVmb3JlL0EuamF2YQpAQCAtMCwwICsxLDQgQEAKK3B1YmxpYyBjbGFzcyBBIHsKKyAgc3RhdGljIHZvaWQgYjxjYXJldD5hcigpIHt9Cit9CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9zYWZlRGVsZXRlL3NhZmVEZWxldGVTdGF0aWNJbXBvcnRzL2JlZm9yZS9CLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3Jpbmcvc2FmZURlbGV0ZS9zYWZlRGVsZXRlU3RhdGljSW1wb3J0cy9iZWZvcmUvQi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjViYTkwZjEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3Jpbmcvc2FmZURlbGV0ZS9zYWZlRGVsZXRlU3RhdGljSW1wb3J0cy9iZWZvcmUvQi5qYXZhCkBAIC0wLDAgKzEsNCBAQAoraW1wb3J0IHN0YXRpYyBBLmJhcjsKK2NsYXNzIEIgeworCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3NhZmVEZWxldGUvdG9wUGFyYW1ldGVySW5IaWVyYXJjaHkvYWZ0ZXIvQzEuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9zYWZlRGVsZXRlL3RvcFBhcmFtZXRlckluSGllcmFyY2h5L2FmdGVyL0MxLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTZiZjBjOAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9zYWZlRGVsZXRlL3RvcFBhcmFtZXRlckluSGllcmFyY2h5L2FmdGVyL0MxLmphdmEKQEAgLTAsMCArMSw1IEBACitwdWJsaWMgY2xhc3MgQzEgaW1wbGVtZW50cyBJIHsKKyAgcHVibGljIHZvaWQgZihpbnQgYTEpIHsKKworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3NhZmVEZWxldGUvdG9wUGFyYW1ldGVySW5IaWVyYXJjaHkvYWZ0ZXIvSS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3NhZmVEZWxldGUvdG9wUGFyYW1ldGVySW5IaWVyYXJjaHkvYWZ0ZXIvSS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIwMjk2ZDkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3Jpbmcvc2FmZURlbGV0ZS90b3BQYXJhbWV0ZXJJbkhpZXJhcmNoeS9hZnRlci9JLmphdmEKQEAgLTAsMCArMSwzIEBACitwdWJsaWMgaW50ZXJmYWNlIEkgeworICB2b2lkIGYoaW50IGExKTsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3Jpbmcvc2FmZURlbGV0ZS90b3BQYXJhbWV0ZXJJbkhpZXJhcmNoeS9hZnRlci9TdXBlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3NhZmVEZWxldGUvdG9wUGFyYW1ldGVySW5IaWVyYXJjaHkvYWZ0ZXIvU3VwZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MDk5NmI5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3NhZmVEZWxldGUvdG9wUGFyYW1ldGVySW5IaWVyYXJjaHkvYWZ0ZXIvU3VwZXIuamF2YQpAQCAtMCwwICsxLDUgQEAKK3B1YmxpYyBjbGFzcyBDMiBleHRlbmRzIEMxIHsKKyAgcHVibGljIHZvaWQgZihpbnQgYTEpIHsKKyAgICBzdXBlci5mKGExKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9zYWZlRGVsZXRlL3RvcFBhcmFtZXRlckluSGllcmFyY2h5L2JlZm9yZS9DMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3NhZmVEZWxldGUvdG9wUGFyYW1ldGVySW5IaWVyYXJjaHkvYmVmb3JlL0MxLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTIwM2Y5OQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9zYWZlRGVsZXRlL3RvcFBhcmFtZXRlckluSGllcmFyY2h5L2JlZm9yZS9DMS5qYXZhCkBAIC0wLDAgKzEsNSBAQAorcHVibGljIGNsYXNzIEMxIGltcGxlbWVudHMgSSB7CisgIHB1YmxpYyB2b2lkIGYoaW50IGExLCBpbnQgYTIpIHsKKworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3NhZmVEZWxldGUvdG9wUGFyYW1ldGVySW5IaWVyYXJjaHkvYmVmb3JlL0kuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9zYWZlRGVsZXRlL3RvcFBhcmFtZXRlckluSGllcmFyY2h5L2JlZm9yZS9JLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGY3NWIxNwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9zYWZlRGVsZXRlL3RvcFBhcmFtZXRlckluSGllcmFyY2h5L2JlZm9yZS9JLmphdmEKQEAgLTAsMCArMSwzIEBACitwdWJsaWMgaW50ZXJmYWNlIEkgeworICB2b2lkIGYoaW50IGExLCBpbnQgYTxjYXJldD4yKTsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3Jpbmcvc2FmZURlbGV0ZS90b3BQYXJhbWV0ZXJJbkhpZXJhcmNoeS9iZWZvcmUvU3VwZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9zYWZlRGVsZXRlL3RvcFBhcmFtZXRlckluSGllcmFyY2h5L2JlZm9yZS9TdXBlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg5NzRmNjQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3Jpbmcvc2FmZURlbGV0ZS90b3BQYXJhbWV0ZXJJbkhpZXJhcmNoeS9iZWZvcmUvU3VwZXIuamF2YQpAQCAtMCwwICsxLDUgQEAKK3B1YmxpYyBjbGFzcyBDMiBleHRlbmRzIEMxIHsKKyAgcHVibGljIHZvaWQgZihpbnQgYTEsIGludCBhMikgeworICAgIHN1cGVyLmYoYTEsIGEyKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9zdWdnZXN0ZWRUeXBlcy9Bc3NpZ25tZW50V2l0aENvbmNhdGVuYXRpb24uamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9zdWdnZXN0ZWRUeXBlcy9Bc3NpZ25tZW50V2l0aENvbmNhdGVuYXRpb24uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YTYxY2U0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3N1Z2dlc3RlZFR5cGVzL0Fzc2lnbm1lbnRXaXRoQ29uY2F0ZW5hdGlvbi5qYXZhCkBAIC0wLDAgKzEsNiBAQAorY2xhc3MgVGVzdCB7CisgIHZvaWQgZm9vKCkgeworICAgIFN0cmluZyBzID0gIiI7CisgICAgPHNlbGVjdGlvbj5zKz0iYWJyYWNhZGFicmEiOzwvc2VsZWN0aW9uPgorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3N1Z2dlc3RlZFR5cGVzL0Fzc2lnbm1lbnRXaXRob3V0Q29uY2F0ZW5hdGlvbi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3N1Z2dlc3RlZFR5cGVzL0Fzc2lnbm1lbnRXaXRob3V0Q29uY2F0ZW5hdGlvbi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI3Njc1ZmIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3Jpbmcvc3VnZ2VzdGVkVHlwZXMvQXNzaWdubWVudFdpdGhvdXRDb25jYXRlbmF0aW9uLmphdmEKQEAgLTAsMCArMSw3IEBACitjbGFzcyBUZXN0IHsKKyAgdm9pZCBmb28oKSB7CisgICAgU3RyaW5nIHMgPSAiIjsKKyAgICA8c2VsZWN0aW9uPlN5c3RlbS5vdXQucHJpbnRsbihzKTsKKyAgICBzPSJhYnJhY2FkYWJyYSI7PC9zZWxlY3Rpb24+CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3Jpbmcvc3VnZ2VzdGVkVHlwZXMvQ2FzdEluc2lkZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3N1Z2dlc3RlZFR5cGVzL0Nhc3RJbnNpZGUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NjdmZTNjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3N1Z2dlc3RlZFR5cGVzL0Nhc3RJbnNpZGUuamF2YQpAQCAtMCwwICsxLDcgQEAKK2NsYXNzIFRlc3QgeworICB2b2lkIGZvbyhPYmplY3QgbykgeworICAgIDxzZWxlY3Rpb24+KChBKW8pLmRvU210aCgpOzwvc2VsZWN0aW9uPgorICB9Cit9CisKK2NsYXNzIEEge3ZvaWQgZG9TbXRoKCl7fX0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3Jpbmcvc3VnZ2VzdGVkVHlwZXMvQ2FzdE5vQ2FzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3N1Z2dlc3RlZFR5cGVzL0Nhc3ROb0Nhc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZTBmYzBlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3N1Z2dlc3RlZFR5cGVzL0Nhc3ROb0Nhc3QuamF2YQpAQCAtMCwwICsxLDE0IEBACitjbGFzcyBUZXN0IHsKKyAgdm9pZCBmb28oT2JqZWN0IG8pIHsKKyAgICA8c2VsZWN0aW9uPgorICAgIGlmICh0cnVlKSB7CisgICAgICAoKEExKW8pLmRvU210aCgpOworICAgIH0gZWxzZSB7CisgICAgICBvLnRvU3RyaW5nKCk7CisgICAgfQorICAgIDwvc2VsZWN0aW9uPgorICB9Cit9CisKK2NsYXNzIEEge3ZvaWQgZG9TbXRoKCl7fX0KK2NsYXNzIEExIGV4dGVuZHMgQSB7fQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9zdWdnZXN0ZWRUeXBlcy9MdEx0Qnl0ZS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3N1Z2dlc3RlZFR5cGVzL0x0THRCeXRlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTAzYTc3NAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9zdWdnZXN0ZWRUeXBlcy9MdEx0Qnl0ZS5qYXZhCkBAIC0wLDAgKzEsNiBAQAorY2xhc3MgVGVzdCB7CisgIHZvaWQgZm9vKCkgeworICAgIGJ5dGUgYiA9IDA7CisgICAgPHNlbGVjdGlvbj5pbnQgaSA9IGIgPDwgMTs8L3NlbGVjdGlvbj4KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9zdWdnZXN0ZWRUeXBlcy9MdEx0SW50LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3Jpbmcvc3VnZ2VzdGVkVHlwZXMvTHRMdEludC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ1NzU0OTUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3Jpbmcvc3VnZ2VzdGVkVHlwZXMvTHRMdEludC5qYXZhCkBAIC0wLDAgKzEsNiBAQAorY2xhc3MgVGVzdCB7CisgIHZvaWQgZm9vKCkgeworICAgIGludCBiID0gMDsKKyAgICA8c2VsZWN0aW9uPmludCBpID0gYiA8PCAxOzwvc2VsZWN0aW9uPgorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3N1Z2dlc3RlZFR5cGVzL011bHRpcGxlQ2FzdHMuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9zdWdnZXN0ZWRUeXBlcy9NdWx0aXBsZUNhc3RzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTFhZWI4YQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9zdWdnZXN0ZWRUeXBlcy9NdWx0aXBsZUNhc3RzLmphdmEKQEAgLTAsMCArMSwxNSBAQAorY2xhc3MgVGVzdCB7CisgIHZvaWQgZm9vKE9iamVjdCBvKSB7CisgICAgPHNlbGVjdGlvbj4KKyAgICBpZiAodHJ1ZSkgeworICAgICAgKChBMSlvKS5kb1NtdGgoKTsKKyAgICB9IGVsc2UgeworICAgICAgKChBMilvKS5kb1NtdGgoKTsKKyAgICB9CisgICAgPC9zZWxlY3Rpb24+CisgIH0KK30KKworY2xhc3MgQSB7dm9pZCBkb1NtdGgoKXt9fQorY2xhc3MgQTEgZXh0ZW5kcyBBIHt9CitjbGFzcyBBMiBleHRlbmRzIEEge30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3Jpbmcvc3VnZ2VzdGVkVHlwZXMvTm9DYXN0V2hlbldyYXBwZWQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9zdWdnZXN0ZWRUeXBlcy9Ob0Nhc3RXaGVuV3JhcHBlZC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRiZDgxODU2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3N1Z2dlc3RlZFR5cGVzL05vQ2FzdFdoZW5XcmFwcGVkLmphdmEKQEAgLTAsMCArMSwxMSBAQAorY2xhc3MgVGVzdCB7CisgIHZvaWQgZm9vKE9iamVjdCBvKSB7CisgICAgPHNlbGVjdGlvbj4KKyAgICBpZiAobyBpbnN0YW5jZW9mIEExKSB7CisgICAgICAoKEExKW8pLmRvU210aCgpOworICAgIH0KKyAgICA8L3NlbGVjdGlvbj4KKyAgfQorfQorCitjbGFzcyBBMSB7fQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9zdWdnZXN0ZWRUeXBlcy9Qb3N0Zml4RXhwclVudXNlZEFmdGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3Jpbmcvc3VnZ2VzdGVkVHlwZXMvUG9zdGZpeEV4cHJVbnVzZWRBZnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY2ZjRmYmYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3Jpbmcvc3VnZ2VzdGVkVHlwZXMvUG9zdGZpeEV4cHJVbnVzZWRBZnRlci5qYXZhCkBAIC0wLDAgKzEsMjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwMC0yMDEwIEpldEJyYWlucyBzLnIuby4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitjbGFzcyBUZXN0IHsKKyAgdm9pZCBmb28oKSB7CisgICAgYnl0ZSBiID0gMDsKKyAgICA8c2VsZWN0aW9uPmIrKzs8L3NlbGVjdGlvbj4KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9zdWdnZXN0ZWRUeXBlcy9Qb3N0Zml4RXhwclVzZWRBc091dHB1dC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3N1Z2dlc3RlZFR5cGVzL1Bvc3RmaXhFeHByVXNlZEFzT3V0cHV0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDAxYjc2ZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy9zdWdnZXN0ZWRUeXBlcy9Qb3N0Zml4RXhwclVzZWRBc091dHB1dC5qYXZhCkBAIC0wLDAgKzEsNyBAQAorY2xhc3MgVGVzdCB7CisgIHZvaWQgZm9vKCkgeworICAgIGJ5dGUgYiA9IDA7CisgICAgPHNlbGVjdGlvbj5iKys7PC9zZWxlY3Rpb24+CisgICAgYi0tOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R1cm5SZWZzVG9TdXBlci9JREVBNjUwNS9hZnRlci9UZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHVyblJlZnNUb1N1cGVyL0lERUE2NTA1L2FmdGVyL1Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYzhjNGZmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R1cm5SZWZzVG9TdXBlci9JREVBNjUwNS9hZnRlci9UZXN0LmphdmEKQEAgLTAsMCArMSwxMyBAQAoraW50ZXJmYWNlIElBIHsKK30KKworaW50ZXJmYWNlIElCIHsKK30KKworCitjbGFzcyBJbXBsIGltcGxlbWVudHMgSUEsIElCIHsKKyAgICBwdWJsaWMgc3RhdGljIElBIGNyZWF0ZUluc3RhbmNlKCkgeworICAgICAgICBmaW5hbCBJbXBsIGluc3RhbmNlID0gbmV3IEltcGwoKTsKKyAgICAgICAgcmV0dXJuIGluc3RhbmNlOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHVyblJlZnNUb1N1cGVyL0lERUE2NTA1L2JlZm9yZS9UZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHVyblJlZnNUb1N1cGVyL0lERUE2NTA1L2JlZm9yZS9UZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGM4YzRmZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90dXJuUmVmc1RvU3VwZXIvSURFQTY1MDUvYmVmb3JlL1Rlc3QuamF2YQpAQCAtMCwwICsxLDEzIEBACitpbnRlcmZhY2UgSUEgeworfQorCitpbnRlcmZhY2UgSUIgeworfQorCisKK2NsYXNzIEltcGwgaW1wbGVtZW50cyBJQSwgSUIgeworICAgIHB1YmxpYyBzdGF0aWMgSUEgY3JlYXRlSW5zdGFuY2UoKSB7CisgICAgICAgIGZpbmFsIEltcGwgaW5zdGFuY2UgPSBuZXcgSW1wbCgpOworICAgICAgICByZXR1cm4gaW5zdGFuY2U7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90dXJuUmVmc1RvU3VwZXIvSURFQURFVjIzODA3L2FmdGVyL0EuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90dXJuUmVmc1RvU3VwZXIvSURFQURFVjIzODA3L2FmdGVyL0EuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYjRjMzhhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R1cm5SZWZzVG9TdXBlci9JREVBREVWMjM4MDcvYWZ0ZXIvQS5qYXZhCkBAIC0wLDAgKzEsMyBAQAoraW50ZXJmYWNlIEE8VD4geworICBUIGdldFQoKTsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHVyblJlZnNUb1N1cGVyL0lERUFERVYyMzgwNy9hZnRlci9CLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHVyblJlZnNUb1N1cGVyL0lERUFERVYyMzgwNy9hZnRlci9CLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjEzZjkzMAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90dXJuUmVmc1RvU3VwZXIvSURFQURFVjIzODA3L2FmdGVyL0IuamF2YQpAQCAtMCwwICsxLDkgQEAKK2ltcG9ydCBqYXZhLnV0aWwuKjsKK2NsYXNzIEI8Vj4gaW1wbGVtZW50cyBBPFY+IHsKKyAgcHVibGljIFYgZ2V0VCgpe3JldHVybiBudWxsO30KKyAgdm9pZCBmb28oTGlzdDxBPFY+PiBsaXN0KSB7CisgICAgZm9yKEE8Vj4gYiA6IGxpc3QpeworICAgICAgViB2ID0gYi5nZXRUKCk7CisgICAgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R1cm5SZWZzVG9TdXBlci9JREVBREVWMjM4MDcvYmVmb3JlL0EuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90dXJuUmVmc1RvU3VwZXIvSURFQURFVjIzODA3L2JlZm9yZS9BLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWI0YzM4YQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90dXJuUmVmc1RvU3VwZXIvSURFQURFVjIzODA3L2JlZm9yZS9BLmphdmEKQEAgLTAsMCArMSwzIEBACitpbnRlcmZhY2UgQTxUPiB7CisgIFQgZ2V0VCgpOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90dXJuUmVmc1RvU3VwZXIvSURFQURFVjIzODA3L2JlZm9yZS9CLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHVyblJlZnNUb1N1cGVyL0lERUFERVYyMzgwNy9iZWZvcmUvQi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZlN2Q4MzIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHVyblJlZnNUb1N1cGVyL0lERUFERVYyMzgwNy9iZWZvcmUvQi5qYXZhCkBAIC0wLDAgKzEsOSBAQAoraW1wb3J0IGphdmEudXRpbC4qOworY2xhc3MgQjxWPiBpbXBsZW1lbnRzIEE8Vj4geworICBwdWJsaWMgViBnZXRUKCl7cmV0dXJuIG51bGw7fQorICB2b2lkIGZvbyhMaXN0PEI8Vj4+IGxpc3QpIHsKKyAgICBmb3IoQjxWPiBiIDogbGlzdCl7CisgICAgICBWIHYgPSBiLmdldFQoKTsKKyAgICB9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHVyblJlZnNUb1N1cGVyL0lERUFERVYyNTY2OS9hZnRlci9DbGllbnQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90dXJuUmVmc1RvU3VwZXIvSURFQURFVjI1NjY5L2FmdGVyL0NsaWVudC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEzZGNiN2EKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHVyblJlZnNUb1N1cGVyL0lERUFERVYyNTY2OS9hZnRlci9DbGllbnQuamF2YQpAQCAtMCwwICsxLDUgQEAKK2ltcG9ydCBwLkE7CisKK2NsYXNzIENsaWVudCB7CisgIEEgYTsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHVyblJlZnNUb1N1cGVyL0lERUFERVYyNTY2OS9hZnRlci9wL0EuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90dXJuUmVmc1RvU3VwZXIvSURFQURFVjI1NjY5L2FmdGVyL3AvQS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI3ODYzZGMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHVyblJlZnNUb1N1cGVyL0lERUFERVYyNTY2OS9hZnRlci9wL0EuamF2YQpAQCAtMCwwICsxLDkgQEAKK3BhY2thZ2UgcDsKKworY2xhc3MgQmFzZSB7CisKK30KKworcHVibGljIGNsYXNzIEEgZXh0ZW5kcyBCYXNlIHsKKworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90dXJuUmVmc1RvU3VwZXIvSURFQURFVjI1NjY5L2JlZm9yZS9DbGllbnQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90dXJuUmVmc1RvU3VwZXIvSURFQURFVjI1NjY5L2JlZm9yZS9DbGllbnQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hM2RjYjdhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R1cm5SZWZzVG9TdXBlci9JREVBREVWMjU2NjkvYmVmb3JlL0NsaWVudC5qYXZhCkBAIC0wLDAgKzEsNSBAQAoraW1wb3J0IHAuQTsKKworY2xhc3MgQ2xpZW50IHsKKyAgQSBhOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90dXJuUmVmc1RvU3VwZXIvSURFQURFVjI1NjY5L2JlZm9yZS9wL0EuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90dXJuUmVmc1RvU3VwZXIvSURFQURFVjI1NjY5L2JlZm9yZS9wL0EuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNzg2M2RjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R1cm5SZWZzVG9TdXBlci9JREVBREVWMjU2NjkvYmVmb3JlL3AvQS5qYXZhCkBAIC0wLDAgKzEsOSBAQAorcGFja2FnZSBwOworCitjbGFzcyBCYXNlIHsKKworfQorCitwdWJsaWMgY2xhc3MgQSBleHRlbmRzIEJhc2UgeworCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R1cm5SZWZzVG9TdXBlci9JREVBREVWNTUxNy9hZnRlci9UZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHVyblJlZnNUb1N1cGVyL0lERUFERVY1NTE3L2FmdGVyL1Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NTE5ZTNjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R1cm5SZWZzVG9TdXBlci9JREVBREVWNTUxNy9hZnRlci9UZXN0LmphdmEKQEAgLTAsMCArMSwyMSBAQAoraW50ZXJmYWNlIEludDxUPiB7CisgICAgdm9pZCBtZXRob2QoVCB4KTsKK30KKworY2xhc3MgU3ViIGltcGxlbWVudHMgSW50PFhJbnQ+IHsKKyAgICBwdWJsaWMgdm9pZCBtZXRob2QoWEludCB4KSB7CisgICAgICAgIHguaW5JbnQoKTsKKyAgICB9Cit9CisKK2ludGVyZmFjZSBYSW50IHsKKyAgICB2b2lkIGluSW50KCk7Cit9CisKK2NsYXNzIFh5eiBpbXBsZW1lbnRzIFhJbnQgeworICAgIHB1YmxpYyB2b2lkIGluSW50KCkgeworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIG0xKCkgeworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHVyblJlZnNUb1N1cGVyL0lERUFERVY1NTE3L2JlZm9yZS9UZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHVyblJlZnNUb1N1cGVyL0lERUFERVY1NTE3L2JlZm9yZS9UZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjczYzM2NQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90dXJuUmVmc1RvU3VwZXIvSURFQURFVjU1MTcvYmVmb3JlL1Rlc3QuamF2YQpAQCAtMCwwICsxLDIxIEBACitpbnRlcmZhY2UgSW50PFQ+IHsKKyAgICB2b2lkIG1ldGhvZChUIHgpOworfQorCitjbGFzcyBTdWIgaW1wbGVtZW50cyBJbnQ8WHl6PiB7CisgICAgcHVibGljIHZvaWQgbWV0aG9kKFh5eiB4KSB7CisgICAgICAgIHguaW5JbnQoKTsKKyAgICB9Cit9CisKK2ludGVyZmFjZSBYSW50IHsKKyAgICB2b2lkIGluSW50KCk7Cit9CisKK2NsYXNzIFh5eiBpbXBsZW1lbnRzIFhJbnQgeworICAgIHB1YmxpYyB2b2lkIGluSW50KCkgeworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIG0xKCkgeworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHVyblJlZnNUb1N1cGVyL0lERUFERVY1NTE3Tk9PUC9hZnRlci9UZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHVyblJlZnNUb1N1cGVyL0lERUFERVY1NTE3Tk9PUC9hZnRlci9UZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzM1OTA4OAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90dXJuUmVmc1RvU3VwZXIvSURFQURFVjU1MTdOT09QL2FmdGVyL1Rlc3QuamF2YQpAQCAtMCwwICsxLDI3IEBACitpbnRlcmZhY2UgSW50PFQ+IHsKKyAgICB2b2lkIG1ldGhvZChUIHgpOworICAgIHZvaWQgbWV0aG9kMShUIHgpOworfQorCitjbGFzcyBTdWIgaW1wbGVtZW50cyBJbnQ8WHl6PiB7CisgICAgcHVibGljIHZvaWQgbWV0aG9kKFh5eiB4KSB7CisgICAgICAgIHguaW5JbnQoKTsKKyAgICB9CisKKworICAgIHB1YmxpYyB2b2lkIG1ldGhvZDEoZmluYWwgWHl6IHgpIHsKKyAgICAgICAgeC5tMSgpOworICAgIH0KK30KKworaW50ZXJmYWNlIFhJbnQgeworICAgIHZvaWQgaW5JbnQoKTsKK30KKworY2xhc3MgWHl6IGltcGxlbWVudHMgWEludCB7CisgICAgcHVibGljIHZvaWQgaW5JbnQoKSB7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgbTEoKSB7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90dXJuUmVmc1RvU3VwZXIvSURFQURFVjU1MTdOT09QL2JlZm9yZS9UZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHVyblJlZnNUb1N1cGVyL0lERUFERVY1NTE3Tk9PUC9iZWZvcmUvVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMzNTkwODgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHVyblJlZnNUb1N1cGVyL0lERUFERVY1NTE3Tk9PUC9iZWZvcmUvVGVzdC5qYXZhCkBAIC0wLDAgKzEsMjcgQEAKK2ludGVyZmFjZSBJbnQ8VD4geworICAgIHZvaWQgbWV0aG9kKFQgeCk7CisgICAgdm9pZCBtZXRob2QxKFQgeCk7Cit9CisKK2NsYXNzIFN1YiBpbXBsZW1lbnRzIEludDxYeXo+IHsKKyAgICBwdWJsaWMgdm9pZCBtZXRob2QoWHl6IHgpIHsKKyAgICAgICAgeC5pbkludCgpOworICAgIH0KKworCisgICAgcHVibGljIHZvaWQgbWV0aG9kMShmaW5hbCBYeXogeCkgeworICAgICAgICB4Lm0xKCk7CisgICAgfQorfQorCitpbnRlcmZhY2UgWEludCB7CisgICAgdm9pZCBpbkludCgpOworfQorCitjbGFzcyBYeXogaW1wbGVtZW50cyBYSW50IHsKKyAgICBwdWJsaWMgdm9pZCBpbkludCgpIHsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBtMSgpIHsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R1cm5SZWZzVG9TdXBlci9JREVBREVWNjEzNi9hZnRlci9BLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHVyblJlZnNUb1N1cGVyL0lERUFERVY2MTM2L2FmdGVyL0EuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NTIxN2QyNwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90dXJuUmVmc1RvU3VwZXIvSURFQURFVjYxMzYvYWZ0ZXIvQS5qYXZhCkBAIC0wLDAgKzEsMTIgQEAKK2NsYXNzIEIgeworICAgIHB1YmxpYyBjbGFzcyBJbm5lciB7CisgICAgfQorfQorCitjbGFzcyBBIGV4dGVuZHMgQiB7fQorCitjbGFzcyBDbGllbnQgeworICAgIHB1YmxpYyBCLklubmVyIGdldElubmVyKCkgeworICAgICAgICByZXR1cm4gbnVsbDsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHVyblJlZnNUb1N1cGVyL0lERUFERVY2MTM2L2JlZm9yZS9BLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHVyblJlZnNUb1N1cGVyL0lERUFERVY2MTM2L2JlZm9yZS9BLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjliNTc1MgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90dXJuUmVmc1RvU3VwZXIvSURFQURFVjYxMzYvYmVmb3JlL0EuamF2YQpAQCAtMCwwICsxLDEyIEBACitjbGFzcyBCIHsKKyAgICBwdWJsaWMgY2xhc3MgSW5uZXIgeworICAgIH0KK30KKworY2xhc3MgQSBleHRlbmRzIEIge30KKworY2xhc3MgQ2xpZW50IHsKKyAgICBwdWJsaWMgQS5Jbm5lciBnZXRJbm5lcigpIHsKKyAgICAgICAgcmV0dXJuIG51bGw7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R1cm5SZWZzVG9TdXBlci9hbm9ueW1vdXNXaXRoVHlwZUFyZ3VtZW50cy9hZnRlci9DbGF6ei5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R1cm5SZWZzVG9TdXBlci9hbm9ueW1vdXNXaXRoVHlwZUFyZ3VtZW50cy9hZnRlci9DbGF6ei5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFkNWRmZmIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHVyblJlZnNUb1N1cGVyL2Fub255bW91c1dpdGhUeXBlQXJndW1lbnRzL2FmdGVyL0NsYXp6LmphdmEKQEAgLTAsMCArMSwyMCBAQAoraW50ZXJmYWNlIEludEYgeworfQorCitpbnRlcmZhY2UgRmFjdG9yeTxFIGV4dGVuZHMgSW50Rj4geworICAgIEUgY3JlYXRlKCk7CisgICAgdm9pZCBzYXZlKEUgb2JqKTsKKworICAgIHN0YXRpYyBjbGFzcyBoZWxwZXIgeworICAgICAgICBzdGF0aWMgRmFjdG9yeTxJbnRGPiBnZXQyKCkgeworICAgICAgICAgICAgcmV0dXJuIChGYWN0b3J5KW5ldyBGYWN0b3J5PEludEY+KCkgeworICAgICAgICAgICAgICAgIHB1YmxpYyBJbnRGIGNyZWF0ZSgpIHsgcmV0dXJuIG51bGw7IH0KKyAgICAgICAgICAgICAgICBwdWJsaWMgdm9pZCBzYXZlKEludEYgb2JqKSB7IH0KKyAgICAgICAgICAgIH07CisgICAgICAgIH0KKyAgICB9Cit9CisKKworcHVibGljIGNsYXNzIENsYXp6IGltcGxlbWVudHMgSW50RiB7Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHVyblJlZnNUb1N1cGVyL2Fub255bW91c1dpdGhUeXBlQXJndW1lbnRzL2JlZm9yZS9DbGF6ei5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R1cm5SZWZzVG9TdXBlci9hbm9ueW1vdXNXaXRoVHlwZUFyZ3VtZW50cy9iZWZvcmUvQ2xhenouamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MTUxYTgyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R1cm5SZWZzVG9TdXBlci9hbm9ueW1vdXNXaXRoVHlwZUFyZ3VtZW50cy9iZWZvcmUvQ2xhenouamF2YQpAQCAtMCwwICsxLDIwIEBACitpbnRlcmZhY2UgSW50RiB7Cit9CisKK2ludGVyZmFjZSBGYWN0b3J5PEUgZXh0ZW5kcyBJbnRGPiB7CisgICAgRSBjcmVhdGUoKTsKKyAgICB2b2lkIHNhdmUoRSBvYmopOworCisgICAgc3RhdGljIGNsYXNzIGhlbHBlciB7CisgICAgICAgIHN0YXRpYyBGYWN0b3J5PEludEY+IGdldDIoKSB7CisgICAgICAgICAgICByZXR1cm4gKEZhY3RvcnkpbmV3IEZhY3Rvcnk8Q2xheno+KCkgeworICAgICAgICAgICAgICAgIHB1YmxpYyBDbGF6eiBjcmVhdGUoKSB7IHJldHVybiBudWxsOyB9CisgICAgICAgICAgICAgICAgcHVibGljIHZvaWQgc2F2ZShDbGF6eiBvYmopIHsgfQorICAgICAgICAgICAgfTsKKyAgICAgICAgfQorICAgIH0KK30KKworCitwdWJsaWMgY2xhc3MgQ2xhenogaW1wbGVtZW50cyBJbnRGIHsKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90dXJuUmVmc1RvU3VwZXIvYXJyYXlFbGVtZW50QXNzaWdubWVudC9hZnRlci9DLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHVyblJlZnNUb1N1cGVyL2FycmF5RWxlbWVudEFzc2lnbm1lbnQvYWZ0ZXIvQy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE5ZmNmZTMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHVyblJlZnNUb1N1cGVyL2FycmF5RWxlbWVudEFzc2lnbm1lbnQvYWZ0ZXIvQy5qYXZhCkBAIC0wLDAgKzEsMiBAQAorcHVibGljIGNsYXNzIEMgaW1wbGVtZW50cyBJeworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R1cm5SZWZzVG9TdXBlci9hcnJheUVsZW1lbnRBc3NpZ25tZW50L2FmdGVyL0NsaWVudC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R1cm5SZWZzVG9TdXBlci9hcnJheUVsZW1lbnRBc3NpZ25tZW50L2FmdGVyL0NsaWVudC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjczZjVlMWEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHVyblJlZnNUb1N1cGVyL2FycmF5RWxlbWVudEFzc2lnbm1lbnQvYWZ0ZXIvQ2xpZW50LmphdmEKQEAgLTAsMCArMSwxMCBAQAorcHVibGljIGNsYXNzIENsaWVudCB7CisgICAgSVtdIGFycmF5OworICAKKyAgICB7CisgICAgICAgIGFycmF5ID0gbmV3IElbMF07CisgICAgICAgIGZvcihpbnQgaSA9IDA7IGkgPCBhcnJheS5sZW5ndGg7IGkrKyl7CisgICAgICAgICAgYXJyYXlbaV0gPSBuZXcgQygpOworICAgICAgICB9CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R1cm5SZWZzVG9TdXBlci9hcnJheUVsZW1lbnRBc3NpZ25tZW50L2FmdGVyL0kuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90dXJuUmVmc1RvU3VwZXIvYXJyYXlFbGVtZW50QXNzaWdubWVudC9hZnRlci9JLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjg4YmVjMQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90dXJuUmVmc1RvU3VwZXIvYXJyYXlFbGVtZW50QXNzaWdubWVudC9hZnRlci9JLmphdmEKQEAgLTAsMCArMSwyIEBACitwdWJsaWMgaW50ZXJmYWNlIEkgeworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R1cm5SZWZzVG9TdXBlci9hcnJheUVsZW1lbnRBc3NpZ25tZW50L2JlZm9yZS9DLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHVyblJlZnNUb1N1cGVyL2FycmF5RWxlbWVudEFzc2lnbm1lbnQvYmVmb3JlL0MuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hOWZjZmUzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R1cm5SZWZzVG9TdXBlci9hcnJheUVsZW1lbnRBc3NpZ25tZW50L2JlZm9yZS9DLmphdmEKQEAgLTAsMCArMSwyIEBACitwdWJsaWMgY2xhc3MgQyBpbXBsZW1lbnRzIEl7Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHVyblJlZnNUb1N1cGVyL2FycmF5RWxlbWVudEFzc2lnbm1lbnQvYmVmb3JlL0NsaWVudC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R1cm5SZWZzVG9TdXBlci9hcnJheUVsZW1lbnRBc3NpZ25tZW50L2JlZm9yZS9DbGllbnQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMjdlNzk3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R1cm5SZWZzVG9TdXBlci9hcnJheUVsZW1lbnRBc3NpZ25tZW50L2JlZm9yZS9DbGllbnQuamF2YQpAQCAtMCwwICsxLDEwIEBACitwdWJsaWMgY2xhc3MgQ2xpZW50IHsKKyAgICBDW10gYXJyYXk7CisgIAorICAgIHsKKyAgICAgICAgYXJyYXkgPSBuZXcgQ1swXTsKKyAgICAgICAgZm9yKGludCBpID0gMDsgaSA8IGFycmF5Lmxlbmd0aDsgaSsrKXsKKyAgICAgICAgICBhcnJheVtpXSA9IG5ldyBDKCk7CisgICAgICAgIH0KKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHVyblJlZnNUb1N1cGVyL2FycmF5RWxlbWVudEFzc2lnbm1lbnQvYmVmb3JlL0kuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90dXJuUmVmc1RvU3VwZXIvYXJyYXlFbGVtZW50QXNzaWdubWVudC9iZWZvcmUvSS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI4OGJlYzEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHVyblJlZnNUb1N1cGVyL2FycmF5RWxlbWVudEFzc2lnbm1lbnQvYmVmb3JlL0kuamF2YQpAQCAtMCwwICsxLDIgQEAKK3B1YmxpYyBpbnRlcmZhY2UgSSB7Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHVyblJlZnNUb1N1cGVyL2Nhc3QvYWZ0ZXIvQS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R1cm5SZWZzVG9TdXBlci9jYXN0L2FmdGVyL0EuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MTQ4MzQ1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R1cm5SZWZzVG9TdXBlci9jYXN0L2FmdGVyL0EuamF2YQpAQCAtMCwwICsxLDUgQEAKK2NsYXNzIEEgaW1wbGVtZW50cyBJIHsKKyAgIGludCBtZXRob2QoKSB7CisgICAgICAgcmV0dXJuIDA7CisgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R1cm5SZWZzVG9TdXBlci9jYXN0L2FmdGVyL0NsaWVudC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R1cm5SZWZzVG9TdXBlci9jYXN0L2FmdGVyL0NsaWVudC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU1OGIzNTkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHVyblJlZnNUb1N1cGVyL2Nhc3QvYWZ0ZXIvQ2xpZW50LmphdmEKQEAgLTAsMCArMSwxMSBAQAorY2xhc3MgQ2xpZW50IHsKKyAgIEkgZ2V0SSgpIHsgcmV0dXJuIG51bGw7IH07CisKKyAgIHZvaWQgbWV0aG9kKCkgeworICAgICAgICBJIGEgPSBnZXRJKCk7CisgICB9CisKKyAgIGludCBhbm90aGVyTWV0aG9kKCkgeworICAgICAgIHJldHVybiBnZXRJKCkubWV0aG9kKCk7CisgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R1cm5SZWZzVG9TdXBlci9jYXN0L2FmdGVyL0kuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90dXJuUmVmc1RvU3VwZXIvY2FzdC9hZnRlci9JLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjdmM2M2NgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90dXJuUmVmc1RvU3VwZXIvY2FzdC9hZnRlci9JLmphdmEKQEAgLTAsMCArMSwzIEBACitpbnRlcmZhY2UgSSB7CisgICAgaW50IG1ldGhvZCgpOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90dXJuUmVmc1RvU3VwZXIvY2FzdC9iZWZvcmUvQS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R1cm5SZWZzVG9TdXBlci9jYXN0L2JlZm9yZS9BLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTE0ODM0NQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90dXJuUmVmc1RvU3VwZXIvY2FzdC9iZWZvcmUvQS5qYXZhCkBAIC0wLDAgKzEsNSBAQAorY2xhc3MgQSBpbXBsZW1lbnRzIEkgeworICAgaW50IG1ldGhvZCgpIHsKKyAgICAgICByZXR1cm4gMDsKKyAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHVyblJlZnNUb1N1cGVyL2Nhc3QvYmVmb3JlL0NsaWVudC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R1cm5SZWZzVG9TdXBlci9jYXN0L2JlZm9yZS9DbGllbnQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZmU1Y2QwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R1cm5SZWZzVG9TdXBlci9jYXN0L2JlZm9yZS9DbGllbnQuamF2YQpAQCAtMCwwICsxLDExIEBACitjbGFzcyBDbGllbnQgeworICAgSSBnZXRJKCkgeyByZXR1cm4gbnVsbDsgfTsKKworICAgdm9pZCBtZXRob2QoKSB7CisgICAgICAgIEEgYSA9IChBKSBnZXRJKCk7CisgICB9CisKKyAgIGludCBhbm90aGVyTWV0aG9kKCkgeworICAgICAgIHJldHVybiAoKEEpIGdldEkoKSkubWV0aG9kKCk7CisgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R1cm5SZWZzVG9TdXBlci9jYXN0L2JlZm9yZS9JLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHVyblJlZnNUb1N1cGVyL2Nhc3QvYmVmb3JlL0kuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yN2YzYzY2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R1cm5SZWZzVG9TdXBlci9jYXN0L2JlZm9yZS9JLmphdmEKQEAgLTAsMCArMSwzIEBACitpbnRlcmZhY2UgSSB7CisgICAgaW50IG1ldGhvZCgpOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90dXJuUmVmc1RvU3VwZXIvY2xhc3NVc2FnZS9hZnRlci9BLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHVyblJlZnNUb1N1cGVyL2NsYXNzVXNhZ2UvYWZ0ZXIvQS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkyYjc2MjMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHVyblJlZnNUb1N1cGVyL2NsYXNzVXNhZ2UvYWZ0ZXIvQS5qYXZhCkBAIC0wLDAgKzEsNSBAQAorY2xhc3MgQSBpbXBsZW1lbnRzIEkgeworICAgaW50IG1ldGhvZCgpIHsKKyAgICAgICAgcmV0dXJuIDA7CisgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R1cm5SZWZzVG9TdXBlci9jbGFzc1VzYWdlL2FmdGVyL0NsaWVudC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R1cm5SZWZzVG9TdXBlci9jbGFzc1VzYWdlL2FmdGVyL0NsaWVudC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjliMzlmMDEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHVyblJlZnNUb1N1cGVyL2NsYXNzVXNhZ2UvYWZ0ZXIvQ2xpZW50LmphdmEKQEAgLTAsMCArMSw5IEBACitwdWJsaWMgY2xhc3MgQ2xpZW50IHsKKyAgICBDbGFzcyBnZXRDbGFzcygpIHsKKyAgICAgICAgcmV0dXJuIEEuY2xhc3M7CisgICAgfQorCisgICAgaW50IG0oSSBhKSB7CisgICAgICAgIHJldHVybiBJLm1ldGhvZCgpOworICAgIH0gCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R1cm5SZWZzVG9TdXBlci9jbGFzc1VzYWdlL2FmdGVyL0kuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90dXJuUmVmc1RvU3VwZXIvY2xhc3NVc2FnZS9hZnRlci9JLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjdmM2M2NgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90dXJuUmVmc1RvU3VwZXIvY2xhc3NVc2FnZS9hZnRlci9JLmphdmEKQEAgLTAsMCArMSwzIEBACitpbnRlcmZhY2UgSSB7CisgICAgaW50IG1ldGhvZCgpOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90dXJuUmVmc1RvU3VwZXIvY2xhc3NVc2FnZS9iZWZvcmUvQS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R1cm5SZWZzVG9TdXBlci9jbGFzc1VzYWdlL2JlZm9yZS9BLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTJiNzYyMwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90dXJuUmVmc1RvU3VwZXIvY2xhc3NVc2FnZS9iZWZvcmUvQS5qYXZhCkBAIC0wLDAgKzEsNSBAQAorY2xhc3MgQSBpbXBsZW1lbnRzIEkgeworICAgaW50IG1ldGhvZCgpIHsKKyAgICAgICAgcmV0dXJuIDA7CisgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R1cm5SZWZzVG9TdXBlci9jbGFzc1VzYWdlL2JlZm9yZS9DbGllbnQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90dXJuUmVmc1RvU3VwZXIvY2xhc3NVc2FnZS9iZWZvcmUvQ2xpZW50LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmEyZjg4ZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90dXJuUmVmc1RvU3VwZXIvY2xhc3NVc2FnZS9iZWZvcmUvQ2xpZW50LmphdmEKQEAgLTAsMCArMSw5IEBACitwdWJsaWMgY2xhc3MgQ2xpZW50IHsKKyAgICBDbGFzcyBnZXRDbGFzcygpIHsKKyAgICAgICAgcmV0dXJuIEEuY2xhc3M7CisgICAgfQorCisgICAgaW50IG0oQSBhKSB7CisgICAgICAgIHJldHVybiBBLm1ldGhvZCgpOworICAgIH0gCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R1cm5SZWZzVG9TdXBlci9jbGFzc1VzYWdlL2JlZm9yZS9JLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHVyblJlZnNUb1N1cGVyL2NsYXNzVXNhZ2UvYmVmb3JlL0kuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yN2YzYzY2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R1cm5SZWZzVG9TdXBlci9jbGFzc1VzYWdlL2JlZm9yZS9JLmphdmEKQEAgLTAsMCArMSwzIEBACitpbnRlcmZhY2UgSSB7CisgICAgaW50IG1ldGhvZCgpOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90dXJuUmVmc1RvU3VwZXIvY29tbW9uSW5oZXJpdG9yL2FmdGVyL0NsaWVudC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R1cm5SZWZzVG9TdXBlci9jb21tb25Jbmhlcml0b3IvYWZ0ZXIvQ2xpZW50LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTdiYTkyYgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90dXJuUmVmc1RvU3VwZXIvY29tbW9uSW5oZXJpdG9yL2FmdGVyL0NsaWVudC5qYXZhCkBAIC0wLDAgKzEsMjAgQEAKK2NsYXNzIENsaWVudAoreworCisgICAgaW50ZXJmYWNlIEwgeyB2b2lkIG0gKCk7IH0KKworICAgIGNsYXNzIFYgaW1wbGVtZW50cyBMIHsgCisJdm9pZCBtICgpIHsgfQorCXZvaWQgcSAoKSB7IH0KKyAgICB9CisKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorICAgIGNsYXNzIEMgIHsKKwlpbnQgbWV0aG9kKEwgdikgeyAgcmV0dXJuIDA7IH0KKyAgICB9CisgICAgCisgICAgaW50ZXJmYWNlIEkgeyBpbnQgbWV0aG9kKEwgdik7IH0KKworICAgIGNsYXNzIEQgZXh0ZW5kcyBDIGltcGxlbWVudHMgSSB7IH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90dXJuUmVmc1RvU3VwZXIvY29tbW9uSW5oZXJpdG9yL2JlZm9yZS9DbGllbnQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90dXJuUmVmc1RvU3VwZXIvY29tbW9uSW5oZXJpdG9yL2JlZm9yZS9DbGllbnQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YWU0MDY0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R1cm5SZWZzVG9TdXBlci9jb21tb25Jbmhlcml0b3IvYmVmb3JlL0NsaWVudC5qYXZhCkBAIC0wLDAgKzEsMjAgQEAKK2NsYXNzIENsaWVudAoreworCisgICAgaW50ZXJmYWNlIEwgeyB2b2lkIG0gKCk7IH0KKworICAgIGNsYXNzIFYgaW1wbGVtZW50cyBMIHsgCisJdm9pZCBtICgpIHsgfQorCXZvaWQgcSAoKSB7IH0KKyAgICB9CisKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorICAgIGNsYXNzIEMgIHsKKwlpbnQgbWV0aG9kKFYgdikgeyAgcmV0dXJuIDA7IH0KKyAgICB9CisgICAgCisgICAgaW50ZXJmYWNlIEkgeyBpbnQgbWV0aG9kKFYgdik7IH0KKworICAgIGNsYXNzIEQgZXh0ZW5kcyBDIGltcGxlbWVudHMgSSB7IH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90dXJuUmVmc1RvU3VwZXIvY29tbW9uSW5oZXJpdG9yRmFpbC9hZnRlci9DbGllbnQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90dXJuUmVmc1RvU3VwZXIvY29tbW9uSW5oZXJpdG9yRmFpbC9hZnRlci9DbGllbnQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZmRjZDk1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R1cm5SZWZzVG9TdXBlci9jb21tb25Jbmhlcml0b3JGYWlsL2FmdGVyL0NsaWVudC5qYXZhCkBAIC0wLDAgKzEsMjAgQEAKK2NsYXNzIENsaWVudAoreworCisgICAgaW50ZXJmYWNlIEwgeyB2b2lkIG0gKCk7IH0KKworICAgIGNsYXNzIFYgaW1wbGVtZW50cyBMIHsgCisJdm9pZCBtICgpIHsgfQorCXZvaWQgcSAoKSB7IH0KKyAgICB9CisKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorICAgIGNsYXNzIEMgIHsKKwlpbnQgbWV0aG9kKFYgdikgeyB2LnEoKTsgcmV0dXJuIDA7IH0KKyAgICB9CisgICAgCisgICAgaW50ZXJmYWNlIEkgeyBpbnQgbWV0aG9kKFYgdik7IH0KKworICAgIGNsYXNzIEQgZXh0ZW5kcyBDIGltcGxlbWVudHMgSSB7IH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90dXJuUmVmc1RvU3VwZXIvY29tbW9uSW5oZXJpdG9yRmFpbC9iZWZvcmUvQ2xpZW50LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHVyblJlZnNUb1N1cGVyL2NvbW1vbkluaGVyaXRvckZhaWwvYmVmb3JlL0NsaWVudC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNmZGNkOTUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHVyblJlZnNUb1N1cGVyL2NvbW1vbkluaGVyaXRvckZhaWwvYmVmb3JlL0NsaWVudC5qYXZhCkBAIC0wLDAgKzEsMjAgQEAKK2NsYXNzIENsaWVudAoreworCisgICAgaW50ZXJmYWNlIEwgeyB2b2lkIG0gKCk7IH0KKworICAgIGNsYXNzIFYgaW1wbGVtZW50cyBMIHsgCisJdm9pZCBtICgpIHsgfQorCXZvaWQgcSAoKSB7IH0KKyAgICB9CisKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorICAgIGNsYXNzIEMgIHsKKwlpbnQgbWV0aG9kKFYgdikgeyB2LnEoKTsgcmV0dXJuIDA7IH0KKyAgICB9CisgICAgCisgICAgaW50ZXJmYWNlIEkgeyBpbnQgbWV0aG9kKFYgdik7IH0KKworICAgIGNsYXNzIEQgZXh0ZW5kcyBDIGltcGxlbWVudHMgSSB7IH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90dXJuUmVmc1RvU3VwZXIvY29tbW9uSW5oZXJpdG9yUmVzdWx0cy9hZnRlci9DbGllbnQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90dXJuUmVmc1RvU3VwZXIvY29tbW9uSW5oZXJpdG9yUmVzdWx0cy9hZnRlci9DbGllbnQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZGRmMjNkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R1cm5SZWZzVG9TdXBlci9jb21tb25Jbmhlcml0b3JSZXN1bHRzL2FmdGVyL0NsaWVudC5qYXZhCkBAIC0wLDAgKzEsMjAgQEAKK2NsYXNzIENsaWVudAoreworCisgICAgaW50ZXJmYWNlIEwgeyB2b2lkIG0gKCk7IH0KKworICAgIGNsYXNzIFYgaW1wbGVtZW50cyBMIHsgCisJdm9pZCBtICgpIHsgfQorCXZvaWQgcSAoKSB7IH0KKyAgICB9CisKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorICAgIGNsYXNzIEMgIHsKKwlMIG1ldGhvZCgpIHsgTCByZXMgPSBuZXcgViAoKTsgIHJldHVybiByZXM7IH0KKyAgICB9CisgICAgCisgICAgaW50ZXJmYWNlIEkgeyBMIG1ldGhvZCgpOyB9CisKKyAgICBjbGFzcyBEIGV4dGVuZHMgQyBpbXBsZW1lbnRzIEkgeyB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHVyblJlZnNUb1N1cGVyL2NvbW1vbkluaGVyaXRvclJlc3VsdHMvYmVmb3JlL0NsaWVudC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R1cm5SZWZzVG9TdXBlci9jb21tb25Jbmhlcml0b3JSZXN1bHRzL2JlZm9yZS9DbGllbnQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYzQyYzNjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R1cm5SZWZzVG9TdXBlci9jb21tb25Jbmhlcml0b3JSZXN1bHRzL2JlZm9yZS9DbGllbnQuamF2YQpAQCAtMCwwICsxLDIwIEBACitjbGFzcyBDbGllbnQKK3sKKworICAgIGludGVyZmFjZSBMIHsgdm9pZCBtICgpOyB9CisKKyAgICBjbGFzcyBWIGltcGxlbWVudHMgTCB7IAorCXZvaWQgbSAoKSB7IH0KKwl2b2lkIHEgKCkgeyB9CisgICAgfQorCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKyAgICBjbGFzcyBDICB7CisJViBtZXRob2QoKSB7IFYgcmVzID0gbmV3IFYgKCk7ICByZXR1cm4gcmVzOyB9CisgICAgfQorICAgIAorICAgIGludGVyZmFjZSBJIHsgViBtZXRob2QoKTsgfQorCisgICAgY2xhc3MgRCBleHRlbmRzIEMgaW1wbGVtZW50cyBJIHsgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R1cm5SZWZzVG9TdXBlci9jb21tb25Jbmhlcml0b3JSZXN1bHRzRmFpbC9hZnRlci9DbGllbnQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90dXJuUmVmc1RvU3VwZXIvY29tbW9uSW5oZXJpdG9yUmVzdWx0c0ZhaWwvYWZ0ZXIvQ2xpZW50LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTc5MWYyNwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90dXJuUmVmc1RvU3VwZXIvY29tbW9uSW5oZXJpdG9yUmVzdWx0c0ZhaWwvYWZ0ZXIvQ2xpZW50LmphdmEKQEAgLTAsMCArMSwyMCBAQAorY2xhc3MgQ2xpZW50Cit7CisKKyAgICBpbnRlcmZhY2UgTCB7IHZvaWQgbSAoKTsgfQorCisgICAgY2xhc3MgViBpbXBsZW1lbnRzIEwgeyAKKwl2b2lkIG0gKCkgeyB9CisJdm9pZCBxICgpIHsgfQorICAgIH0KKworICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisgICAgY2xhc3MgQyAgeworCUwgbWV0aG9kKCkgeyBWIHJlcyA9IG5ldyBWICgpOyAgcmVzLnEoKTsgcmV0dXJuIHJlczsgfQorICAgIH0KKyAgICAKKyAgICBpbnRlcmZhY2UgSSB7IEwgbWV0aG9kKCk7IH0KKworICAgIGNsYXNzIEQgZXh0ZW5kcyBDIGltcGxlbWVudHMgSSB7IH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90dXJuUmVmc1RvU3VwZXIvY29tbW9uSW5oZXJpdG9yUmVzdWx0c0ZhaWwvYmVmb3JlL0NsaWVudC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R1cm5SZWZzVG9TdXBlci9jb21tb25Jbmhlcml0b3JSZXN1bHRzRmFpbC9iZWZvcmUvQ2xpZW50LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjVmNzg3OQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90dXJuUmVmc1RvU3VwZXIvY29tbW9uSW5oZXJpdG9yUmVzdWx0c0ZhaWwvYmVmb3JlL0NsaWVudC5qYXZhCkBAIC0wLDAgKzEsMjAgQEAKK2NsYXNzIENsaWVudAoreworCisgICAgaW50ZXJmYWNlIEwgeyB2b2lkIG0gKCk7IH0KKworICAgIGNsYXNzIFYgaW1wbGVtZW50cyBMIHsgCisJdm9pZCBtICgpIHsgfQorCXZvaWQgcSAoKSB7IH0KKyAgICB9CisKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorICAgIGNsYXNzIEMgIHsKKwlWIG1ldGhvZCgpIHsgViByZXMgPSBuZXcgViAoKTsgIHJlcy5xKCk7IHJldHVybiByZXM7IH0KKyAgICB9CisgICAgCisgICAgaW50ZXJmYWNlIEkgeyBWIG1ldGhvZCgpOyB9CisKKyAgICBjbGFzcyBEIGV4dGVuZHMgQyBpbXBsZW1lbnRzIEkgeyB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHVyblJlZnNUb1N1cGVyL2NvbW1vbkluaGVyaXRvclJlc3VsdHNGYWlsMi9hZnRlci9DbGllbnQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90dXJuUmVmc1RvU3VwZXIvY29tbW9uSW5oZXJpdG9yUmVzdWx0c0ZhaWwyL2FmdGVyL0NsaWVudC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJkNDMxN2UKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHVyblJlZnNUb1N1cGVyL2NvbW1vbkluaGVyaXRvclJlc3VsdHNGYWlsMi9hZnRlci9DbGllbnQuamF2YQpAQCAtMCwwICsxLDIwIEBACitjbGFzcyBDbGllbnQKK3sKKworICAgIGludGVyZmFjZSBMIHsgdm9pZCBtICgpOyB9CisKKyAgICBjbGFzcyBWIGltcGxlbWVudHMgTCB7IAorCXZvaWQgbSAoKSB7IH0KKwl2b2lkIHEgKCkgeyB9CisgICAgfQorCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKyAgICBjbGFzcyBDICB7CisJViBtZXRob2QoKSB7IFYgcmVzID0gbmV3IFYgKCk7ICBtZXRob2QoKS5xKCk7IHJldHVybiByZXM7IH0KKyAgICB9CisgICAgCisgICAgaW50ZXJmYWNlIEkgeyBWIG1ldGhvZCgpOyB9CisKKyAgICBjbGFzcyBEIGV4dGVuZHMgQyBpbXBsZW1lbnRzIEkgeyB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHVyblJlZnNUb1N1cGVyL2NvbW1vbkluaGVyaXRvclJlc3VsdHNGYWlsMi9iZWZvcmUvQ2xpZW50LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHVyblJlZnNUb1N1cGVyL2NvbW1vbkluaGVyaXRvclJlc3VsdHNGYWlsMi9iZWZvcmUvQ2xpZW50LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmQ0MzE3ZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90dXJuUmVmc1RvU3VwZXIvY29tbW9uSW5oZXJpdG9yUmVzdWx0c0ZhaWwyL2JlZm9yZS9DbGllbnQuamF2YQpAQCAtMCwwICsxLDIwIEBACitjbGFzcyBDbGllbnQKK3sKKworICAgIGludGVyZmFjZSBMIHsgdm9pZCBtICgpOyB9CisKKyAgICBjbGFzcyBWIGltcGxlbWVudHMgTCB7IAorCXZvaWQgbSAoKSB7IH0KKwl2b2lkIHEgKCkgeyB9CisgICAgfQorCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKyAgICBjbGFzcyBDICB7CisJViBtZXRob2QoKSB7IFYgcmVzID0gbmV3IFYgKCk7ICBtZXRob2QoKS5xKCk7IHJldHVybiByZXM7IH0KKyAgICB9CisgICAgCisgICAgaW50ZXJmYWNlIEkgeyBWIG1ldGhvZCgpOyB9CisKKyAgICBjbGFzcyBEIGV4dGVuZHMgQyBpbXBsZW1lbnRzIEkgeyB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHVyblJlZnNUb1N1cGVyL2NvdmFyaWFudFJldHVyblR5cGVzL2FmdGVyL01haW4uamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90dXJuUmVmc1RvU3VwZXIvY292YXJpYW50UmV0dXJuVHlwZXMvYWZ0ZXIvTWFpbi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg3ODM4YmQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHVyblJlZnNUb1N1cGVyL2NvdmFyaWFudFJldHVyblR5cGVzL2FmdGVyL01haW4uamF2YQpAQCAtMCwwICsxLDE2IEBACitpbnRlcmZhY2UgSW50IHsKKyAgICBJbnQgZigpOworfQorY2xhc3MgSW1wbCBpbXBsZW1lbnRzIEludCB7CisgICAgdm9pZCBmb28oKXt9CisgICAgSW1wbCBmKCkge3JldHVybiB0aGlzO30KK30KKworY2xhc3MgVXNhZ2UgeworICAgIHZvaWQgZmsoSW1wbCBsLCBJbXBsIGxsKXsKKyAgICAgIGwuZigpLmZvbygpOworCisgICAgICBmaW5hbCBJbXBsIGYgPSBsbC5mKCk7CisgICAgICBmLmZvbygpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90dXJuUmVmc1RvU3VwZXIvY292YXJpYW50UmV0dXJuVHlwZXMvYmVmb3JlL01haW4uamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90dXJuUmVmc1RvU3VwZXIvY292YXJpYW50UmV0dXJuVHlwZXMvYmVmb3JlL01haW4uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NzgzOGJkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R1cm5SZWZzVG9TdXBlci9jb3ZhcmlhbnRSZXR1cm5UeXBlcy9iZWZvcmUvTWFpbi5qYXZhCkBAIC0wLDAgKzEsMTYgQEAKK2ludGVyZmFjZSBJbnQgeworICAgIEludCBmKCk7Cit9CitjbGFzcyBJbXBsIGltcGxlbWVudHMgSW50IHsKKyAgICB2b2lkIGZvbygpe30KKyAgICBJbXBsIGYoKSB7cmV0dXJuIHRoaXM7fQorfQorCitjbGFzcyBVc2FnZSB7CisgICAgdm9pZCBmayhJbXBsIGwsIEltcGwgbGwpeworICAgICAgbC5mKCkuZm9vKCk7CisKKyAgICAgIGZpbmFsIEltcGwgZiA9IGxsLmYoKTsKKyAgICAgIGYuZm9vKCk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R1cm5SZWZzVG9TdXBlci9maWVsZFRlc3QvYWZ0ZXIvQ29tcG9uZW50MS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R1cm5SZWZzVG9TdXBlci9maWVsZFRlc3QvYWZ0ZXIvQ29tcG9uZW50MS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg2MTY4YTUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHVyblJlZnNUb1N1cGVyL2ZpZWxkVGVzdC9hZnRlci9Db21wb25lbnQxLmphdmEKQEAgLTAsMCArMSwxMSBAQAoraW1wb3J0IGphdmF4LnN3aW5nLio7CisgCitwdWJsaWMgY2xhc3MgQ29tcG9uZW50MSBleHRlbmRzIEpDb21wb25lbnQgaW1wbGVtZW50cyBJRG9Tb21ldGhpbmcgeworICAgIHB1YmxpYyBDb21wb25lbnQxKCkgeworICAgIH0KKyAKKyAKKyAgICBwdWJsaWMgdm9pZCBkb1NvbWV0aGluZygpeworIAorICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90dXJuUmVmc1RvU3VwZXIvZmllbGRUZXN0L2FmdGVyL0NvbXBvbmVudENhbGxlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R1cm5SZWZzVG9TdXBlci9maWVsZFRlc3QvYWZ0ZXIvQ29tcG9uZW50Q2FsbGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzcwYThmOQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90dXJuUmVmc1RvU3VwZXIvZmllbGRUZXN0L2FmdGVyL0NvbXBvbmVudENhbGxlci5qYXZhCkBAIC0wLDAgKzEsMjEgQEAKK2ltcG9ydCBqYXZheC5zd2luZy4qOworaW1wb3J0IGphdmEuYXd0Lio7CitpbXBvcnQgamF2YXguc3dpbmcuKjsKKyAKK3B1YmxpYyBjbGFzcyBDb21wb25lbnRDYWxsZXIgZXh0ZW5kcyBKQ29tcG9uZW50eworICAgIENvbXBvbmVudDEgY29tcG9uZW50MTsKKyAKKyAgICBwdWJsaWMgQ29tcG9uZW50Q2FsbGVyKCkgeworICAgICAgICBjb21wb25lbnQxICA9IG5ldyBDb21wb25lbnQxKCk7CisgICAgICAgIGJ1aWxkVUkoKTsKKyAgICB9CisgCisgICAgcHJpdmF0ZSB2b2lkIGJ1aWxkVUkoKSB7CisgICAgICAgIHNldExheW91dChuZXcgQm9yZGVyTGF5b3V0KCkpOworICAgICAgICBhZGQobmV3IEpTY3JvbGxQYW5lKGNvbXBvbmVudDEpKTsKKyAgICB9CisgCisgICAgcHVibGljIHZvaWQgZG9Tb21ldGhpbmcoKXsKKyAgICAgICAgY29tcG9uZW50MS5kb1NvbWV0aGluZygpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90dXJuUmVmc1RvU3VwZXIvZmllbGRUZXN0L2FmdGVyL0lEb1NvbWV0aGluZy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R1cm5SZWZzVG9TdXBlci9maWVsZFRlc3QvYWZ0ZXIvSURvU29tZXRoaW5nLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTYwNzk3MAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90dXJuUmVmc1RvU3VwZXIvZmllbGRUZXN0L2FmdGVyL0lEb1NvbWV0aGluZy5qYXZhCkBAIC0wLDAgKzEsMyBAQAorcHVibGljIGludGVyZmFjZSBJRG9Tb21ldGhpbmcgeworICAgIHZvaWQgZG9Tb21ldGhpbmcoKTsKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90dXJuUmVmc1RvU3VwZXIvZmllbGRUZXN0L2JlZm9yZS9Db21wb25lbnQxLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHVyblJlZnNUb1N1cGVyL2ZpZWxkVGVzdC9iZWZvcmUvQ29tcG9uZW50MS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg2MTY4YTUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHVyblJlZnNUb1N1cGVyL2ZpZWxkVGVzdC9iZWZvcmUvQ29tcG9uZW50MS5qYXZhCkBAIC0wLDAgKzEsMTEgQEAKK2ltcG9ydCBqYXZheC5zd2luZy4qOworIAorcHVibGljIGNsYXNzIENvbXBvbmVudDEgZXh0ZW5kcyBKQ29tcG9uZW50IGltcGxlbWVudHMgSURvU29tZXRoaW5nIHsKKyAgICBwdWJsaWMgQ29tcG9uZW50MSgpIHsKKyAgICB9CisgCisgCisgICAgcHVibGljIHZvaWQgZG9Tb21ldGhpbmcoKXsKKyAKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHVyblJlZnNUb1N1cGVyL2ZpZWxkVGVzdC9iZWZvcmUvQ29tcG9uZW50Q2FsbGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHVyblJlZnNUb1N1cGVyL2ZpZWxkVGVzdC9iZWZvcmUvQ29tcG9uZW50Q2FsbGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzcwYThmOQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90dXJuUmVmc1RvU3VwZXIvZmllbGRUZXN0L2JlZm9yZS9Db21wb25lbnRDYWxsZXIuamF2YQpAQCAtMCwwICsxLDIxIEBACitpbXBvcnQgamF2YXguc3dpbmcuKjsKK2ltcG9ydCBqYXZhLmF3dC4qOworaW1wb3J0IGphdmF4LnN3aW5nLio7CisgCitwdWJsaWMgY2xhc3MgQ29tcG9uZW50Q2FsbGVyIGV4dGVuZHMgSkNvbXBvbmVudHsKKyAgICBDb21wb25lbnQxIGNvbXBvbmVudDE7CisgCisgICAgcHVibGljIENvbXBvbmVudENhbGxlcigpIHsKKyAgICAgICAgY29tcG9uZW50MSAgPSBuZXcgQ29tcG9uZW50MSgpOworICAgICAgICBidWlsZFVJKCk7CisgICAgfQorIAorICAgIHByaXZhdGUgdm9pZCBidWlsZFVJKCkgeworICAgICAgICBzZXRMYXlvdXQobmV3IEJvcmRlckxheW91dCgpKTsKKyAgICAgICAgYWRkKG5ldyBKU2Nyb2xsUGFuZShjb21wb25lbnQxKSk7CisgICAgfQorIAorICAgIHB1YmxpYyB2b2lkIGRvU29tZXRoaW5nKCl7CisgICAgICAgIGNvbXBvbmVudDEuZG9Tb21ldGhpbmcoKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHVyblJlZnNUb1N1cGVyL2ZpZWxkVGVzdC9iZWZvcmUvSURvU29tZXRoaW5nLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHVyblJlZnNUb1N1cGVyL2ZpZWxkVGVzdC9iZWZvcmUvSURvU29tZXRoaW5nLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTYwNzk3MAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90dXJuUmVmc1RvU3VwZXIvZmllbGRUZXN0L2JlZm9yZS9JRG9Tb21ldGhpbmcuamF2YQpAQCAtMCwwICsxLDMgQEAKK3B1YmxpYyBpbnRlcmZhY2UgSURvU29tZXRoaW5nIHsKKyAgICB2b2lkIGRvU29tZXRoaW5nKCk7Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHVyblJlZnNUb1N1cGVyL2ZvckVhY2gxL2FmdGVyL1Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90dXJuUmVmc1RvU3VwZXIvZm9yRWFjaDEvYWZ0ZXIvVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE1OGMxYWQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHVyblJlZnNUb1N1cGVyL2ZvckVhY2gxL2FmdGVyL1Rlc3QuamF2YQpAQCAtMCwwICsxLDE1IEBACitjbGFzcyBUZXN0IHsKKyAgdm9pZCB0ZXN0KCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgTXlJdGVyYWJsZUltcGwgciA9IG5ldyBNeUl0ZXJhYmxlSW1wbCgpOworICAgIGZvciAoU3RyaW5nIHMgOiByKSB7CisgICAgICByLmxlbmd0aCgpOworICAgIH0KKyAgfQorCisgIGludGVyZmFjZSBNeUl0ZXJhYmxlIHsKKyAgfQorCisgIHN0YXRpYyBjbGFzcyBNeUl0ZXJhYmxlSW1wbCBpbXBsZW1lbnRzIE15SXRlcmFibGUsIEl0ZXJhYmxlPFN0cmluZz4geworICAgIHB1YmxpYyBJdGVyYXRvcjxTdHJpbmc+IGl0ZXJhdG9yKCkgeyByZXR1cm4gbnVsbDsgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R1cm5SZWZzVG9TdXBlci9mb3JFYWNoMS9iZWZvcmUvVGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R1cm5SZWZzVG9TdXBlci9mb3JFYWNoMS9iZWZvcmUvVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE1OGMxYWQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHVyblJlZnNUb1N1cGVyL2ZvckVhY2gxL2JlZm9yZS9UZXN0LmphdmEKQEAgLTAsMCArMSwxNSBAQAorY2xhc3MgVGVzdCB7CisgIHZvaWQgdGVzdCgpIHRocm93cyBFeGNlcHRpb24geworICAgIE15SXRlcmFibGVJbXBsIHIgPSBuZXcgTXlJdGVyYWJsZUltcGwoKTsKKyAgICBmb3IgKFN0cmluZyBzIDogcikgeworICAgICAgci5sZW5ndGgoKTsKKyAgICB9CisgIH0KKworICBpbnRlcmZhY2UgTXlJdGVyYWJsZSB7CisgIH0KKworICBzdGF0aWMgY2xhc3MgTXlJdGVyYWJsZUltcGwgaW1wbGVtZW50cyBNeUl0ZXJhYmxlLCBJdGVyYWJsZTxTdHJpbmc+IHsKKyAgICBwdWJsaWMgSXRlcmF0b3I8U3RyaW5nPiBpdGVyYXRvcigpIHsgcmV0dXJuIG51bGw7IH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90dXJuUmVmc1RvU3VwZXIvZm9yRWFjaDIvYWZ0ZXIvVGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R1cm5SZWZzVG9TdXBlci9mb3JFYWNoMi9hZnRlci9UZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTkwMGM0MAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90dXJuUmVmc1RvU3VwZXIvZm9yRWFjaDIvYWZ0ZXIvVGVzdC5qYXZhCkBAIC0wLDAgKzEsMTUgQEAKK2NsYXNzIFRlc3QgeworICB2b2lkIHRlc3QoKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICBNeUl0ZXJhYmxlIHIgPSBuZXcgTXlJdGVyYWJsZUltcGwoKTsKKyAgICBmb3IgKFN0cmluZyBzIDogcikgeworICAgICAgci5sZW5ndGgoKTsKKyAgICB9CisgIH0KKworICBpbnRlcmZhY2UgTXlJdGVyYWJsZSBleHRlbmRzIEl0ZXJhYmxlPFN0cmluZz4geworICB9CisKKyAgc3RhdGljIGNsYXNzIE15SXRlcmFibGVJbXBsIGltcGxlbWVudHMgTXlJdGVyYWJsZSB7CisgICAgcHVibGljIEl0ZXJhdG9yPFN0cmluZz4gaXRlcmF0b3IoKSB7IHJldHVybiBudWxsOyB9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHVyblJlZnNUb1N1cGVyL2ZvckVhY2gyL2JlZm9yZS9UZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHVyblJlZnNUb1N1cGVyL2ZvckVhY2gyL2JlZm9yZS9UZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzhhNWM0OQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90dXJuUmVmc1RvU3VwZXIvZm9yRWFjaDIvYmVmb3JlL1Rlc3QuamF2YQpAQCAtMCwwICsxLDE1IEBACitjbGFzcyBUZXN0IHsKKyAgdm9pZCB0ZXN0KCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgTXlJdGVyYWJsZUltcGwgciA9IG5ldyBNeUl0ZXJhYmxlSW1wbCgpOworICAgIGZvciAoU3RyaW5nIHMgOiByKSB7CisgICAgICByLmxlbmd0aCgpOworICAgIH0KKyAgfQorCisgIGludGVyZmFjZSBNeUl0ZXJhYmxlIGV4dGVuZHMgSXRlcmFibGU8U3RyaW5nPiB7CisgIH0KKworICBzdGF0aWMgY2xhc3MgTXlJdGVyYWJsZUltcGwgaW1wbGVtZW50cyBNeUl0ZXJhYmxlIHsKKyAgICBwdWJsaWMgSXRlcmF0b3I8U3RyaW5nPiBpdGVyYXRvcigpIHsgcmV0dXJuIG51bGw7IH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90dXJuUmVmc1RvU3VwZXIvaW5zdGFuY2VPZi9hZnRlci9BLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHVyblJlZnNUb1N1cGVyL2luc3RhbmNlT2YvYWZ0ZXIvQS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY0YmE2MjkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHVyblJlZnNUb1N1cGVyL2luc3RhbmNlT2YvYWZ0ZXIvQS5qYXZhCkBAIC0wLDAgKzEsMiBAQAorY2xhc3MgQSBpbXBsZW1lbnRzIEkgeworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90dXJuUmVmc1RvU3VwZXIvaW5zdGFuY2VPZi9hZnRlci9DbGllbnQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90dXJuUmVmc1RvU3VwZXIvaW5zdGFuY2VPZi9hZnRlci9DbGllbnQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZjliNzhhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R1cm5SZWZzVG9TdXBlci9pbnN0YW5jZU9mL2FmdGVyL0NsaWVudC5qYXZhCkBAIC0wLDAgKzEsNSBAQAorY2xhc3MgQ2xpZW50IHsKKyAgIGludCBtZXRob2QoSSBhKSB7CisgICAgICAgcmV0dXJuIGEgaW5zdGFuY2VvZiBBOworICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90dXJuUmVmc1RvU3VwZXIvaW5zdGFuY2VPZi9hZnRlci9JLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHVyblJlZnNUb1N1cGVyL2luc3RhbmNlT2YvYWZ0ZXIvSS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYwZmY5NjUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHVyblJlZnNUb1N1cGVyL2luc3RhbmNlT2YvYWZ0ZXIvSS5qYXZhCkBAIC0wLDAgKzEsMiBAQAoraW50ZXJmYWNlIEkgeworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90dXJuUmVmc1RvU3VwZXIvaW5zdGFuY2VPZi9iZWZvcmUvQS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R1cm5SZWZzVG9TdXBlci9pbnN0YW5jZU9mL2JlZm9yZS9BLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjRiYTYyOQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90dXJuUmVmc1RvU3VwZXIvaW5zdGFuY2VPZi9iZWZvcmUvQS5qYXZhCkBAIC0wLDAgKzEsMiBAQAorY2xhc3MgQSBpbXBsZW1lbnRzIEkgeworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90dXJuUmVmc1RvU3VwZXIvaW5zdGFuY2VPZi9iZWZvcmUvQ2xpZW50LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHVyblJlZnNUb1N1cGVyL2luc3RhbmNlT2YvYmVmb3JlL0NsaWVudC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU2YzNjNDIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHVyblJlZnNUb1N1cGVyL2luc3RhbmNlT2YvYmVmb3JlL0NsaWVudC5qYXZhCkBAIC0wLDAgKzEsNSBAQAorY2xhc3MgQ2xpZW50IHsKKyAgIGludCBtZXRob2QoQSBhKSB7CisgICAgICAgcmV0dXJuIGEgaW5zdGFuY2VvZiBBOworICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90dXJuUmVmc1RvU3VwZXIvaW5zdGFuY2VPZi9iZWZvcmUvSS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R1cm5SZWZzVG9TdXBlci9pbnN0YW5jZU9mL2JlZm9yZS9JLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjBmZjk2NQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90dXJuUmVmc1RvU3VwZXIvaW5zdGFuY2VPZi9iZWZvcmUvSS5qYXZhCkBAIC0wLDAgKzEsMiBAQAoraW50ZXJmYWNlIEkgeworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90dXJuUmVmc1RvU3VwZXIvbGlzdEFyZ3MvYWZ0ZXIvTWFpbi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R1cm5SZWZzVG9TdXBlci9saXN0QXJncy9hZnRlci9NYWluLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjU0NjFlMwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90dXJuUmVmc1RvU3VwZXIvbGlzdEFyZ3MvYWZ0ZXIvTWFpbi5qYXZhCkBAIC0wLDAgKzEsMTQgQEAKK2ltcG9ydCBqYXZhLnV0aWwuKjsKK2ludGVyZmFjZSBJbnQge30KK2NsYXNzIEltcGwgaW1wbGVtZW50cyBJbnQgeworICAgIHZvaWQgZm9vKCl7fQorfQorCitjbGFzcyBVc2FnZSB7CisgICAgdm9pZCBmKExpc3Q8SW1wbD4gbCl7CisgICAgICAgIGZvciAoSW1wbCBhSW1wbCA6IGwpIHsKKyAgICAgICAgICAgIGFJbXBsLmZvbygpOworICAgICAgICB9CisgICAgICAgIGwuZ2V0KDApLmZvbygpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90dXJuUmVmc1RvU3VwZXIvbGlzdEFyZ3MvYmVmb3JlL01haW4uamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90dXJuUmVmc1RvU3VwZXIvbGlzdEFyZ3MvYmVmb3JlL01haW4uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNTQ2MWUzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R1cm5SZWZzVG9TdXBlci9saXN0QXJncy9iZWZvcmUvTWFpbi5qYXZhCkBAIC0wLDAgKzEsMTQgQEAKK2ltcG9ydCBqYXZhLnV0aWwuKjsKK2ludGVyZmFjZSBJbnQge30KK2NsYXNzIEltcGwgaW1wbGVtZW50cyBJbnQgeworICAgIHZvaWQgZm9vKCl7fQorfQorCitjbGFzcyBVc2FnZSB7CisgICAgdm9pZCBmKExpc3Q8SW1wbD4gbCl7CisgICAgICAgIGZvciAoSW1wbCBhSW1wbCA6IGwpIHsKKyAgICAgICAgICAgIGFJbXBsLmZvbygpOworICAgICAgICB9CisgICAgICAgIGwuZ2V0KDApLmZvbygpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90dXJuUmVmc1RvU3VwZXIvbWV0aG9kRnJvbVN1cGVyL2FmdGVyL0FDbGFzcy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R1cm5SZWZzVG9TdXBlci9tZXRob2RGcm9tU3VwZXIvYWZ0ZXIvQUNsYXNzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOThmMzQ4OAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90dXJuUmVmc1RvU3VwZXIvbWV0aG9kRnJvbVN1cGVyL2FmdGVyL0FDbGFzcy5qYXZhCkBAIC0wLDAgKzEsNSBAQAorCitwdWJsaWMgY2xhc3MgQUNsYXNzIGV4dGVuZHMgQVN1cGVyMiB7CisgICAgcHVibGljIHZvaWQgZm9vKCkgeworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHVyblJlZnNUb1N1cGVyL21ldGhvZEZyb21TdXBlci9hZnRlci9BU3VwZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90dXJuUmVmc1RvU3VwZXIvbWV0aG9kRnJvbVN1cGVyL2FmdGVyL0FTdXBlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZjOGYxZTIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHVyblJlZnNUb1N1cGVyL21ldGhvZEZyb21TdXBlci9hZnRlci9BU3VwZXIuamF2YQpAQCAtMCwwICsxLDQgQEAKKworcHVibGljIGNsYXNzIEFTdXBlciB7CisgICAgcHVibGljIHZvaWQgZm9vKCl7fQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90dXJuUmVmc1RvU3VwZXIvbWV0aG9kRnJvbVN1cGVyL2FmdGVyL0FTdXBlcjIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90dXJuUmVmc1RvU3VwZXIvbWV0aG9kRnJvbVN1cGVyL2FmdGVyL0FTdXBlcjIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNzgzMzNmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R1cm5SZWZzVG9TdXBlci9tZXRob2RGcm9tU3VwZXIvYWZ0ZXIvQVN1cGVyMi5qYXZhCkBAIC0wLDAgKzEsMyBAQAorCitwdWJsaWMgY2xhc3MgQVN1cGVyMiBleHRlbmRzIEFTdXBlciB7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R1cm5SZWZzVG9TdXBlci9tZXRob2RGcm9tU3VwZXIvYWZ0ZXIvQ2xpZW50LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHVyblJlZnNUb1N1cGVyL21ldGhvZEZyb21TdXBlci9hZnRlci9DbGllbnQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZTQ0N2MwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R1cm5SZWZzVG9TdXBlci9tZXRob2RGcm9tU3VwZXIvYWZ0ZXIvQ2xpZW50LmphdmEKQEAgLTAsMCArMSw3IEBACisKK3B1YmxpYyBjbGFzcyBDbGllbnQgeworICAgIHsKKyAgICAgICAgQVN1cGVyIGFDbGFzczsKKyAgICAgICAgYUNsYXNzLmZvbygpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHVyblJlZnNUb1N1cGVyL21ldGhvZEZyb21TdXBlci9iZWZvcmUvQUNsYXNzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHVyblJlZnNUb1N1cGVyL21ldGhvZEZyb21TdXBlci9iZWZvcmUvQUNsYXNzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOThmMzQ4OAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90dXJuUmVmc1RvU3VwZXIvbWV0aG9kRnJvbVN1cGVyL2JlZm9yZS9BQ2xhc3MuamF2YQpAQCAtMCwwICsxLDUgQEAKKworcHVibGljIGNsYXNzIEFDbGFzcyBleHRlbmRzIEFTdXBlcjIgeworICAgIHB1YmxpYyB2b2lkIGZvbygpIHsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R1cm5SZWZzVG9TdXBlci9tZXRob2RGcm9tU3VwZXIvYmVmb3JlL0FTdXBlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R1cm5SZWZzVG9TdXBlci9tZXRob2RGcm9tU3VwZXIvYmVmb3JlL0FTdXBlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZjOGYxZTIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHVyblJlZnNUb1N1cGVyL21ldGhvZEZyb21TdXBlci9iZWZvcmUvQVN1cGVyLmphdmEKQEAgLTAsMCArMSw0IEBACisKK3B1YmxpYyBjbGFzcyBBU3VwZXIgeworICAgIHB1YmxpYyB2b2lkIGZvbygpe30KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHVyblJlZnNUb1N1cGVyL21ldGhvZEZyb21TdXBlci9iZWZvcmUvQVN1cGVyMi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R1cm5SZWZzVG9TdXBlci9tZXRob2RGcm9tU3VwZXIvYmVmb3JlL0FTdXBlcjIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNzgzMzNmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R1cm5SZWZzVG9TdXBlci9tZXRob2RGcm9tU3VwZXIvYmVmb3JlL0FTdXBlcjIuamF2YQpAQCAtMCwwICsxLDMgQEAKKworcHVibGljIGNsYXNzIEFTdXBlcjIgZXh0ZW5kcyBBU3VwZXIgeworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90dXJuUmVmc1RvU3VwZXIvbWV0aG9kRnJvbVN1cGVyL2JlZm9yZS9DbGllbnQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90dXJuUmVmc1RvU3VwZXIvbWV0aG9kRnJvbVN1cGVyL2JlZm9yZS9DbGllbnQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mODgzODdmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R1cm5SZWZzVG9TdXBlci9tZXRob2RGcm9tU3VwZXIvYmVmb3JlL0NsaWVudC5qYXZhCkBAIC0wLDAgKzEsNyBAQAorCitwdWJsaWMgY2xhc3MgQ2xpZW50IHsKKyAgICB7CisgICAgICAgIEFDbGFzcyBhQ2xhc3M7CisgICAgICAgIGFDbGFzcy5mb28oKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R1cm5SZWZzVG9TdXBlci9uZXdFeHByL2FmdGVyL01haW4uamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90dXJuUmVmc1RvU3VwZXIvbmV3RXhwci9hZnRlci9NYWluLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTNmNTljZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90dXJuUmVmc1RvU3VwZXIvbmV3RXhwci9hZnRlci9NYWluLmphdmEKQEAgLTAsMCArMSwyNSBAQAoraW1wb3J0IGphdmEudXRpbC4qOworCitpbnRlcmZhY2UgSW50IHsKK30KKworY2xhc3MgSW1wbCBpbXBsZW1lbnRzIEludCB7CisgICAgdm9pZCBmb28oKSB7CisgICAgfQorfQorCitjbGFzcyBVc2FnZSB7CisgIHZvaWQgZigpIHsKKyAgICAgIExpc3Q8SW1wbD4gbCA9IG5ldyBBcnJheUxpc3Q8SW1wbD4oKTsKKyAgICAgIGwuZ2V0KDApLmZvbygpOworCisKKyAgICAgIExpc3Q8SW50PiBsMSA9IG5ldyBBcnJheUxpc3Q8SW50PigpOworICAgICAgSW50IGkgPSBsMS5nZXQoMCk7CisKKworICAgICAgTGlzdDxJbXBsPiBsMiA9IG5ldyBBcnJheUxpc3Q8SW1wbD4oKTsKKyAgICAgIEltcGwgaTIgPSBsMi5nZXQoMCk7CisgICAgICBpMi5mb28oKTsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R1cm5SZWZzVG9TdXBlci9uZXdFeHByL2JlZm9yZS9NYWluLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHVyblJlZnNUb1N1cGVyL25ld0V4cHIvYmVmb3JlL01haW4uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MGFlNGI5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R1cm5SZWZzVG9TdXBlci9uZXdFeHByL2JlZm9yZS9NYWluLmphdmEKQEAgLTAsMCArMSwyNSBAQAoraW1wb3J0IGphdmEudXRpbC4qOworCitpbnRlcmZhY2UgSW50IHsKK30KKworY2xhc3MgSW1wbCBpbXBsZW1lbnRzIEludCB7CisgICAgdm9pZCBmb28oKSB7CisgICAgfQorfQorCitjbGFzcyBVc2FnZSB7CisgIHZvaWQgZigpIHsKKyAgICAgIExpc3Q8SW1wbD4gbCA9IG5ldyBBcnJheUxpc3Q8SW1wbD4oKTsKKyAgICAgIGwuZ2V0KDApLmZvbygpOworCisKKyAgICAgIExpc3Q8SW1wbD4gbDEgPSBuZXcgQXJyYXlMaXN0PEltcGw+KCk7CisgICAgICBJbXBsIGkgPSBsMS5nZXQoMCk7CisKKworICAgICAgTGlzdDxJbXBsPiBsMiA9IG5ldyBBcnJheUxpc3Q8SW1wbD4oKTsKKyAgICAgIEltcGwgaTIgPSBsMi5nZXQoMCk7CisgICAgICBpMi5mb28oKTsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R1cm5SZWZzVG9TdXBlci9yZW1vdmVJbXBvcnQvYWZ0ZXIvcGFjazEvQUNsYXNzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHVyblJlZnNUb1N1cGVyL3JlbW92ZUltcG9ydC9hZnRlci9wYWNrMS9BQ2xhc3MuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MTViNWE4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R1cm5SZWZzVG9TdXBlci9yZW1vdmVJbXBvcnQvYWZ0ZXIvcGFjazEvQUNsYXNzLmphdmEKQEAgLTAsMCArMSw1IEBACisKK3BhY2thZ2UgcGFjazE7CisKK3B1YmxpYyBjbGFzcyBBQ2xhc3MgaW1wbGVtZW50cyBBbkludGVyZmFjZSB7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R1cm5SZWZzVG9TdXBlci9yZW1vdmVJbXBvcnQvYWZ0ZXIvcGFjazEvQW5JbnRlcmZhY2UuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90dXJuUmVmc1RvU3VwZXIvcmVtb3ZlSW1wb3J0L2FmdGVyL3BhY2sxL0FuSW50ZXJmYWNlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjM2NjlkNwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90dXJuUmVmc1RvU3VwZXIvcmVtb3ZlSW1wb3J0L2FmdGVyL3BhY2sxL0FuSW50ZXJmYWNlLmphdmEKQEAgLTAsMCArMSw1IEBACisKK3BhY2thZ2UgcGFjazE7CisKK3B1YmxpYyBpbnRlcmZhY2UgQW5JbnRlcmZhY2UgeworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90dXJuUmVmc1RvU3VwZXIvcmVtb3ZlSW1wb3J0L2FmdGVyL3BhY2syL0NsaWVudC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R1cm5SZWZzVG9TdXBlci9yZW1vdmVJbXBvcnQvYWZ0ZXIvcGFjazIvQ2xpZW50LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWQwOTAxZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90dXJuUmVmc1RvU3VwZXIvcmVtb3ZlSW1wb3J0L2FmdGVyL3BhY2syL0NsaWVudC5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKKworcGFja2FnZSBwYWNrMjsKKworaW1wb3J0IHBhY2sxLkFuSW50ZXJmYWNlOworCitwdWJsaWMgY2xhc3MgQ2xpZW50IHsKKyAgICB7CisgICAgICAgIEFuSW50ZXJmYWNlIGFDbGFzczsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R1cm5SZWZzVG9TdXBlci9yZW1vdmVJbXBvcnQvYWZ0ZXIvcGFjazIvQ2xpZW50Mi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R1cm5SZWZzVG9TdXBlci9yZW1vdmVJbXBvcnQvYWZ0ZXIvcGFjazIvQ2xpZW50Mi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkxMzU5NmMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHVyblJlZnNUb1N1cGVyL3JlbW92ZUltcG9ydC9hZnRlci9wYWNrMi9DbGllbnQyLmphdmEKQEAgLTAsMCArMSwxMSBAQAorCitwYWNrYWdlIHBhY2syOworCitpbXBvcnQgcGFjazEuQUNsYXNzOworaW1wb3J0IHBhY2sxLkFuSW50ZXJmYWNlOworCitwdWJsaWMgY2xhc3MgQ2xpZW50IHsKKyAgICB7CisgICAgICAgIEFuSW50ZXJmYWNlIGFDbGFzcyA9IG5ldyBBQ2xhc3MoKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R1cm5SZWZzVG9TdXBlci9yZW1vdmVJbXBvcnQvYmVmb3JlL3BhY2sxL0FDbGFzcy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R1cm5SZWZzVG9TdXBlci9yZW1vdmVJbXBvcnQvYmVmb3JlL3BhY2sxL0FDbGFzcy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkxNWI1YTgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHVyblJlZnNUb1N1cGVyL3JlbW92ZUltcG9ydC9iZWZvcmUvcGFjazEvQUNsYXNzLmphdmEKQEAgLTAsMCArMSw1IEBACisKK3BhY2thZ2UgcGFjazE7CisKK3B1YmxpYyBjbGFzcyBBQ2xhc3MgaW1wbGVtZW50cyBBbkludGVyZmFjZSB7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R1cm5SZWZzVG9TdXBlci9yZW1vdmVJbXBvcnQvYmVmb3JlL3BhY2sxL0FuSW50ZXJmYWNlLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHVyblJlZnNUb1N1cGVyL3JlbW92ZUltcG9ydC9iZWZvcmUvcGFjazEvQW5JbnRlcmZhY2UuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMzY2OWQ3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R1cm5SZWZzVG9TdXBlci9yZW1vdmVJbXBvcnQvYmVmb3JlL3BhY2sxL0FuSW50ZXJmYWNlLmphdmEKQEAgLTAsMCArMSw1IEBACisKK3BhY2thZ2UgcGFjazE7CisKK3B1YmxpYyBpbnRlcmZhY2UgQW5JbnRlcmZhY2UgeworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90dXJuUmVmc1RvU3VwZXIvcmVtb3ZlSW1wb3J0L2JlZm9yZS9wYWNrMi9DbGllbnQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90dXJuUmVmc1RvU3VwZXIvcmVtb3ZlSW1wb3J0L2JlZm9yZS9wYWNrMi9DbGllbnQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMGFmMjIxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R1cm5SZWZzVG9TdXBlci9yZW1vdmVJbXBvcnQvYmVmb3JlL3BhY2syL0NsaWVudC5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKKworcGFja2FnZSBwYWNrMjsKKworaW1wb3J0IHBhY2sxLkFDbGFzczsKKworcHVibGljIGNsYXNzIENsaWVudCB7CisgICAgeworICAgICAgICBBQ2xhc3MgYUNsYXNzOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHVyblJlZnNUb1N1cGVyL3JlbW92ZUltcG9ydC9iZWZvcmUvcGFjazIvQ2xpZW50Mi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R1cm5SZWZzVG9TdXBlci9yZW1vdmVJbXBvcnQvYmVmb3JlL3BhY2syL0NsaWVudDIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hOWRkOGRiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R1cm5SZWZzVG9TdXBlci9yZW1vdmVJbXBvcnQvYmVmb3JlL3BhY2syL0NsaWVudDIuamF2YQpAQCAtMCwwICsxLDEwIEBACisKK3BhY2thZ2UgcGFjazI7CisKK2ltcG9ydCBwYWNrMS5BQ2xhc3M7CisKK3B1YmxpYyBjbGFzcyBDbGllbnQgeworICAgIHsKKyAgICAgICAgQUNsYXNzIGFDbGFzcyA9IG5ldyBBQ2xhc3MoKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R1cm5SZWZzVG9TdXBlci9yZXR1cm5WYWx1ZS9hZnRlci9BLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHVyblJlZnNUb1N1cGVyL3JldHVyblZhbHVlL2FmdGVyL0EuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43M2MzMzRjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R1cm5SZWZzVG9TdXBlci9yZXR1cm5WYWx1ZS9hZnRlci9BLmphdmEKQEAgLTAsMCArMSwyIEBACitjbGFzcyBBIGltcGxlbWVudHMgSSB7Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHVyblJlZnNUb1N1cGVyL3JldHVyblZhbHVlL2FmdGVyL0IuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90dXJuUmVmc1RvU3VwZXIvcmV0dXJuVmFsdWUvYWZ0ZXIvQi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQwMTdhYjcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHVyblJlZnNUb1N1cGVyL3JldHVyblZhbHVlL2FmdGVyL0IuamF2YQpAQCAtMCwwICsxLDEzIEBACitpbXBvcnQgamF2YS51dGlsLkFycmF5TGlzdDsKKworY2xhc3MgQiB7CisgICAgSVtdIGdldEEoKSB7IHJldHVybiBudWxsOyB9OworCisgICAgaW50IG1ldGhvZChBcnJheUxpc3QgbGlzdCkgeworICAgICAgICBJW10gYSA9IGdldEEoKTsKKworICAgICAgICBmb3IoaSA9IDA7IGkgPCBhLmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICBJIGl0ZW0gPSBhW2ldOworICAgICAgICB9CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90dXJuUmVmc1RvU3VwZXIvcmV0dXJuVmFsdWUvYWZ0ZXIvSS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R1cm5SZWZzVG9TdXBlci9yZXR1cm5WYWx1ZS9hZnRlci9JLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODQ4ODViZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90dXJuUmVmc1RvU3VwZXIvcmV0dXJuVmFsdWUvYWZ0ZXIvSS5qYXZhCkBAIC0wLDAgKzEsNCBAQAoraW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7CitpbnRlcmZhY2UgSSB7Cit9CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90dXJuUmVmc1RvU3VwZXIvcmV0dXJuVmFsdWUvYmVmb3JlL0EuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90dXJuUmVmc1RvU3VwZXIvcmV0dXJuVmFsdWUvYmVmb3JlL0EuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43M2MzMzRjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R1cm5SZWZzVG9TdXBlci9yZXR1cm5WYWx1ZS9iZWZvcmUvQS5qYXZhCkBAIC0wLDAgKzEsMiBAQAorY2xhc3MgQSBpbXBsZW1lbnRzIEkgeworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R1cm5SZWZzVG9TdXBlci9yZXR1cm5WYWx1ZS9iZWZvcmUvQi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R1cm5SZWZzVG9TdXBlci9yZXR1cm5WYWx1ZS9iZWZvcmUvQi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdjNmQwZjAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHVyblJlZnNUb1N1cGVyL3JldHVyblZhbHVlL2JlZm9yZS9CLmphdmEKQEAgLTAsMCArMSwxMyBAQAoraW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7CisKK2NsYXNzIEIgeworICAgIEFbXSBnZXRBKCkgeyByZXR1cm4gbnVsbDsgfTsKKworICAgIGludCBtZXRob2QoQXJyYXlMaXN0IGxpc3QpIHsKKyAgICAgICAgQVtdIGEgPSBnZXRBKCk7CisKKyAgICAgICAgZm9yKGkgPSAwOyBpIDwgYS5sZW5ndGg7IGkrKykgeworICAgICAgICAgICAgQSBpdGVtID0gYVtpXTsKKyAgICAgICAgfQorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHVyblJlZnNUb1N1cGVyL3JldHVyblZhbHVlL2JlZm9yZS9JLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHVyblJlZnNUb1N1cGVyL3JldHVyblZhbHVlL2JlZm9yZS9JLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODQ4ODViZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90dXJuUmVmc1RvU3VwZXIvcmV0dXJuVmFsdWUvYmVmb3JlL0kuamF2YQpAQCAtMCwwICsxLDQgQEAKK2ltcG9ydCBqYXZhLnV0aWwuQXJyYXlMaXN0OworaW50ZXJmYWNlIEkgeworfQorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHVyblJlZnNUb1N1cGVyL3JldHVyblZhbHVlMi9hZnRlci9BLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHVyblJlZnNUb1N1cGVyL3JldHVyblZhbHVlMi9hZnRlci9BLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzNjMzM0YwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90dXJuUmVmc1RvU3VwZXIvcmV0dXJuVmFsdWUyL2FmdGVyL0EuamF2YQpAQCAtMCwwICsxLDIgQEAKK2NsYXNzIEEgaW1wbGVtZW50cyBJIHsKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90dXJuUmVmc1RvU3VwZXIvcmV0dXJuVmFsdWUyL2FmdGVyL0IuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90dXJuUmVmc1RvU3VwZXIvcmV0dXJuVmFsdWUyL2FmdGVyL0IuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kOTRiMGM4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R1cm5SZWZzVG9TdXBlci9yZXR1cm5WYWx1ZTIvYWZ0ZXIvQi5qYXZhCkBAIC0wLDAgKzEsMTMgQEAKK2ltcG9ydCBqYXZhLnV0aWwuQXJyYXlMaXN0OworCitjbGFzcyBCIHsKKyAgICBJIGdldEEoKSB7IHJldHVybiBuZXcgQSgpOyB9OworICAgIHZvaWQgdGVzdChJIGEpIHsKKyAgICB9CisKKyAgICBpbnQgbWV0aG9kKEFycmF5TGlzdCBsaXN0KSB7CisgICAgICAgIEkgYSA9IGdldEEoKTsKKworICAgICAgICB0ZXN0KGEpOworICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90dXJuUmVmc1RvU3VwZXIvcmV0dXJuVmFsdWUyL2FmdGVyL0kuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90dXJuUmVmc1RvU3VwZXIvcmV0dXJuVmFsdWUyL2FmdGVyL0kuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NDg4NWJlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R1cm5SZWZzVG9TdXBlci9yZXR1cm5WYWx1ZTIvYWZ0ZXIvSS5qYXZhCkBAIC0wLDAgKzEsNCBAQAoraW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7CitpbnRlcmZhY2UgSSB7Cit9CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90dXJuUmVmc1RvU3VwZXIvcmV0dXJuVmFsdWUyL2JlZm9yZS9BLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHVyblJlZnNUb1N1cGVyL3JldHVyblZhbHVlMi9iZWZvcmUvQS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjczYzMzNGMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHVyblJlZnNUb1N1cGVyL3JldHVyblZhbHVlMi9iZWZvcmUvQS5qYXZhCkBAIC0wLDAgKzEsMiBAQAorY2xhc3MgQSBpbXBsZW1lbnRzIEkgeworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R1cm5SZWZzVG9TdXBlci9yZXR1cm5WYWx1ZTIvYmVmb3JlL0IuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90dXJuUmVmc1RvU3VwZXIvcmV0dXJuVmFsdWUyL2JlZm9yZS9CLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzk2MmUxNGQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHVyblJlZnNUb1N1cGVyL3JldHVyblZhbHVlMi9iZWZvcmUvQi5qYXZhCkBAIC0wLDAgKzEsMTMgQEAKK2ltcG9ydCBqYXZhLnV0aWwuQXJyYXlMaXN0OworCitjbGFzcyBCIHsKKyAgICBBIGdldEEoKSB7IHJldHVybiBuZXcgQSgpOyB9OworICAgIHZvaWQgdGVzdChBIGEpIHsKKyAgICB9CisKKyAgICBpbnQgbWV0aG9kKEFycmF5TGlzdCBsaXN0KSB7CisgICAgICAgIEEgYSA9IGdldEEoKTsKKworICAgICAgICB0ZXN0KGEpOworICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90dXJuUmVmc1RvU3VwZXIvcmV0dXJuVmFsdWUyL2JlZm9yZS9JLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHVyblJlZnNUb1N1cGVyL3JldHVyblZhbHVlMi9iZWZvcmUvSS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg0ODg1YmUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHVyblJlZnNUb1N1cGVyL3JldHVyblZhbHVlMi9iZWZvcmUvSS5qYXZhCkBAIC0wLDAgKzEsNCBAQAoraW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7CitpbnRlcmZhY2UgSSB7Cit9CisKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90dXJuUmVmc1RvU3VwZXIvc2NyMzQwMDAvYWZ0ZXIvTWFpbi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R1cm5SZWZzVG9TdXBlci9zY3IzNDAwMC9hZnRlci9NYWluLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDI5NDRhMwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90dXJuUmVmc1RvU3VwZXIvc2NyMzQwMDAvYWZ0ZXIvTWFpbi5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKK3B1YmxpYyBjbGFzcyBNYWluIHsKKyAgICBwcml2YXRlIHN0YXRpYyB2b2lkIGluc3RhbGwoKSB7CisgICAgICAgIE1vZGVsIHNpbXBsZU1vZGVsID0gbmV3IFNpbXBsZU1vZGVsKCk7CisgICAgICAgIFZpZXcgdmlldyA9IG5ldyBWaWV3KHNpbXBsZU1vZGVsKTsKKyAgICB9CisgICAgcHVibGljIHZvaWQgZm9vKCkgeworICAgICAgICBNb2RlbCBzaW1wbGVNb2RlbCA9IG5ldyBTaW1wbGVNb2RlbCgpOworICAgICAgICBzaW1wbGVNb2RlbC5kb0l0KCk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90dXJuUmVmc1RvU3VwZXIvc2NyMzQwMDAvYWZ0ZXIvTW9kZWwuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90dXJuUmVmc1RvU3VwZXIvc2NyMzQwMDAvYWZ0ZXIvTW9kZWwuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MTJlYTYzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R1cm5SZWZzVG9TdXBlci9zY3IzNDAwMC9hZnRlci9Nb2RlbC5qYXZhCkBAIC0wLDAgKzEsMyBAQAorcHVibGljIGNsYXNzIE1vZGVsIHsKKyAgICBwdWJsaWMgdm9pZCBkb0l0KCkge30KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHVyblJlZnNUb1N1cGVyL3NjcjM0MDAwL2FmdGVyL1NpbXBsZU1vZGVsLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHVyblJlZnNUb1N1cGVyL3NjcjM0MDAwL2FmdGVyL1NpbXBsZU1vZGVsLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTM2NzkwYQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90dXJuUmVmc1RvU3VwZXIvc2NyMzQwMDAvYWZ0ZXIvU2ltcGxlTW9kZWwuamF2YQpAQCAtMCwwICsxLDIgQEAKK2NsYXNzIFNpbXBsZU1vZGVsIGV4dGVuZHMgTW9kZWwgeworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90dXJuUmVmc1RvU3VwZXIvc2NyMzQwMDAvYWZ0ZXIvVmlldy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R1cm5SZWZzVG9TdXBlci9zY3IzNDAwMC9hZnRlci9WaWV3LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjFhMjNkZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90dXJuUmVmc1RvU3VwZXIvc2NyMzQwMDAvYWZ0ZXIvVmlldy5qYXZhCkBAIC0wLDAgKzEsMyBAQAorcHVibGljIGNsYXNzIFZpZXcgeworICAgIHB1YmxpYyBWaWV3KE1vZGVsIG1vZGVsKSB7fQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90dXJuUmVmc1RvU3VwZXIvc2NyMzQwMDAvYmVmb3JlL01haW4uamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90dXJuUmVmc1RvU3VwZXIvc2NyMzQwMDAvYmVmb3JlL01haW4uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YTA0YjI1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R1cm5SZWZzVG9TdXBlci9zY3IzNDAwMC9iZWZvcmUvTWFpbi5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKK3B1YmxpYyBjbGFzcyBNYWluIHsKKyAgICBwcml2YXRlIHN0YXRpYyB2b2lkIGluc3RhbGwoKSB7CisgICAgICAgIFNpbXBsZU1vZGVsIHNpbXBsZU1vZGVsID0gbmV3IFNpbXBsZU1vZGVsKCk7CisgICAgICAgIFZpZXcgdmlldyA9IG5ldyBWaWV3KHNpbXBsZU1vZGVsKTsKKyAgICB9CisgICAgcHVibGljIHZvaWQgZm9vKCkgeworICAgICAgICBTaW1wbGVNb2RlbCBzaW1wbGVNb2RlbCA9IG5ldyBTaW1wbGVNb2RlbCgpOworICAgICAgICBzaW1wbGVNb2RlbC5kb0l0KCk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90dXJuUmVmc1RvU3VwZXIvc2NyMzQwMDAvYmVmb3JlL01vZGVsLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHVyblJlZnNUb1N1cGVyL3NjcjM0MDAwL2JlZm9yZS9Nb2RlbC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQxMmVhNjMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHVyblJlZnNUb1N1cGVyL3NjcjM0MDAwL2JlZm9yZS9Nb2RlbC5qYXZhCkBAIC0wLDAgKzEsMyBAQAorcHVibGljIGNsYXNzIE1vZGVsIHsKKyAgICBwdWJsaWMgdm9pZCBkb0l0KCkge30KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHVyblJlZnNUb1N1cGVyL3NjcjM0MDAwL2JlZm9yZS9TaW1wbGVNb2RlbC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R1cm5SZWZzVG9TdXBlci9zY3IzNDAwMC9iZWZvcmUvU2ltcGxlTW9kZWwuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMzY3OTBhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R1cm5SZWZzVG9TdXBlci9zY3IzNDAwMC9iZWZvcmUvU2ltcGxlTW9kZWwuamF2YQpAQCAtMCwwICsxLDIgQEAKK2NsYXNzIFNpbXBsZU1vZGVsIGV4dGVuZHMgTW9kZWwgeworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90dXJuUmVmc1RvU3VwZXIvc2NyMzQwMDAvYmVmb3JlL1ZpZXcuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90dXJuUmVmc1RvU3VwZXIvc2NyMzQwMDAvYmVmb3JlL1ZpZXcuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMWEyM2RkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R1cm5SZWZzVG9TdXBlci9zY3IzNDAwMC9iZWZvcmUvVmlldy5qYXZhCkBAIC0wLDAgKzEsMyBAQAorcHVibGljIGNsYXNzIFZpZXcgeworICAgIHB1YmxpYyBWaWV3KE1vZGVsIG1vZGVsKSB7fQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90dXJuUmVmc1RvU3VwZXIvc2NyMzQwMjAvYWZ0ZXIvdGVzdC9DLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHVyblJlZnNUb1N1cGVyL3NjcjM0MDIwL2FmdGVyL3Rlc3QvQy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZjNzUyNmIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHVyblJlZnNUb1N1cGVyL3NjcjM0MDIwL2FmdGVyL3Rlc3QvQy5qYXZhCkBAIC0wLDAgKzEsMTcgQEAKK3BhY2thZ2UgdGVzdDsKKworaW1wb3J0IGphdmEudXRpbC4qOworCisvKioKKyAqIENyZWF0ZWQgYnkgSW50ZWxsaUogSURFQS4KKyAqIFVzZXI6IGRzbAorICogRGF0ZTogSnVuIDE3LCAyMDA0CisgKiBUaW1lOiAxOjI4OjE0IFBNCisgKiBUbyBjaGFuZ2UgdGhpcyB0ZW1wbGF0ZSB1c2UgRmlsZSB8IFNldHRpbmdzIHwgRmlsZSBUZW1wbGF0ZXMuCisgKi8KK3B1YmxpYyBjbGFzcyBDIHsKKyAgICB7CisgICAgICAgIExpc3QgbCA9IG5ldyBBcnJheUxpc3QoKTsKKyAgICAgICAgQ29sbGVjdGlvbnMuYmluYXJ5U2VhcmNoKGwsIG51bGwpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90dXJuUmVmc1RvU3VwZXIvc2NyMzQwMjAvYmVmb3JlL3Rlc3QvQy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R1cm5SZWZzVG9TdXBlci9zY3IzNDAyMC9iZWZvcmUvdGVzdC9DLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmM3NTI2YgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90dXJuUmVmc1RvU3VwZXIvc2NyMzQwMjAvYmVmb3JlL3Rlc3QvQy5qYXZhCkBAIC0wLDAgKzEsMTcgQEAKK3BhY2thZ2UgdGVzdDsKKworaW1wb3J0IGphdmEudXRpbC4qOworCisvKioKKyAqIENyZWF0ZWQgYnkgSW50ZWxsaUogSURFQS4KKyAqIFVzZXI6IGRzbAorICogRGF0ZTogSnVuIDE3LCAyMDA0CisgKiBUaW1lOiAxOjI4OjE0IFBNCisgKiBUbyBjaGFuZ2UgdGhpcyB0ZW1wbGF0ZSB1c2UgRmlsZSB8IFNldHRpbmdzIHwgRmlsZSBUZW1wbGF0ZXMuCisgKi8KK3B1YmxpYyBjbGFzcyBDIHsKKyAgICB7CisgICAgICAgIExpc3QgbCA9IG5ldyBBcnJheUxpc3QoKTsKKyAgICAgICAgQ29sbGVjdGlvbnMuYmluYXJ5U2VhcmNoKGwsIG51bGwpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90dXJuUmVmc1RvU3VwZXIvc3RhdGljQ2FsbEFyZ3VtZW50cy9hZnRlci9NYWluLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHVyblJlZnNUb1N1cGVyL3N0YXRpY0NhbGxBcmd1bWVudHMvYWZ0ZXIvTWFpbi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY1ODYzMDgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHVyblJlZnNUb1N1cGVyL3N0YXRpY0NhbGxBcmd1bWVudHMvYWZ0ZXIvTWFpbi5qYXZhCkBAIC0wLDAgKzEsMTEgQEAKK2ltcG9ydCBqYXZhLnV0aWwuKjsKK2ludGVyZmFjZSBJbnQge30KK2NsYXNzIEltcGwgaW1wbGVtZW50cyBJbnQgeworfQorCitjbGFzcyBVc2FnZSB7CisgICAgdm9pZCBmKExpc3Q8SW50PiBsKXt9CisgICAgdm9pZCBiYXIoKSB7CisgICAgICAgIGYoQ29sbGVjdGlvbnMuPEludD5lbXB0eUxpc3QoKSk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R1cm5SZWZzVG9TdXBlci9zdGF0aWNDYWxsQXJndW1lbnRzL2JlZm9yZS9NYWluLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHVyblJlZnNUb1N1cGVyL3N0YXRpY0NhbGxBcmd1bWVudHMvYmVmb3JlL01haW4uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZGJkMTFiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R1cm5SZWZzVG9TdXBlci9zdGF0aWNDYWxsQXJndW1lbnRzL2JlZm9yZS9NYWluLmphdmEKQEAgLTAsMCArMSwxMSBAQAoraW1wb3J0IGphdmEudXRpbC4qOworaW50ZXJmYWNlIEludCB7fQorY2xhc3MgSW1wbCBpbXBsZW1lbnRzIEludCB7Cit9CisKK2NsYXNzIFVzYWdlIHsKKyAgICB2b2lkIGYoTGlzdDxJbXBsPiBsKXt9CisgICAgdm9pZCBiYXIoKSB7CisgICAgICAgIGYoQ29sbGVjdGlvbnMuPEltcGw+ZW1wdHlMaXN0KCkpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90dXJuUmVmc1RvU3VwZXIvc3VwZXJDbGFzcy9hZnRlci9BQ2xhc3MuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90dXJuUmVmc1RvU3VwZXIvc3VwZXJDbGFzcy9hZnRlci9BQ2xhc3MuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZTM0OTc5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R1cm5SZWZzVG9TdXBlci9zdXBlckNsYXNzL2FmdGVyL0FDbGFzcy5qYXZhCkBAIC0wLDAgKzEsNyBAQAorcHVibGljIGNsYXNzIEFDbGFzcyBleHRlbmRzIEFTdXBlciB7CisKKyAgcHVibGljIHZvaWQgc2F5QmFyKCkKKyAgICAgIHsKKyAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIkJhciIpOworICAgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R1cm5SZWZzVG9TdXBlci9zdXBlckNsYXNzL2FmdGVyL0FTdXBlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R1cm5SZWZzVG9TdXBlci9zdXBlckNsYXNzL2FmdGVyL0FTdXBlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJmMTllNGQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHVyblJlZnNUb1N1cGVyL3N1cGVyQ2xhc3MvYWZ0ZXIvQVN1cGVyLmphdmEKQEAgLTAsMCArMSw2IEBACitwdWJsaWMgY2xhc3MgQVN1cGVyIHsKKyAgcHVibGljIHZvaWQgc2F5Rm9vKCkKKyAgeworICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJGb28iKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90dXJuUmVmc1RvU3VwZXIvc3VwZXJDbGFzcy9hZnRlci9DbGllbnQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90dXJuUmVmc1RvU3VwZXIvc3VwZXJDbGFzcy9hZnRlci9DbGllbnQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYzZiMzc5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R1cm5SZWZzVG9TdXBlci9zdXBlckNsYXNzL2FmdGVyL0NsaWVudC5qYXZhCkBAIC0wLDAgKzEsNiBAQAorcHVibGljIGNsYXNzIENsaWVudCB7CisgICAgeworICAgICAgICBBU3VwZXIgYiA9IG5ldyBBQ2xhc3MoKTsKKyAgICAgICAgYi5zYXlGb28oKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R1cm5SZWZzVG9TdXBlci9zdXBlckNsYXNzL2JlZm9yZS9BQ2xhc3MuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90dXJuUmVmc1RvU3VwZXIvc3VwZXJDbGFzcy9iZWZvcmUvQUNsYXNzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmUzNDk3OQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90dXJuUmVmc1RvU3VwZXIvc3VwZXJDbGFzcy9iZWZvcmUvQUNsYXNzLmphdmEKQEAgLTAsMCArMSw3IEBACitwdWJsaWMgY2xhc3MgQUNsYXNzIGV4dGVuZHMgQVN1cGVyIHsKKworICBwdWJsaWMgdm9pZCBzYXlCYXIoKQorICAgICAgeworICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiQmFyIik7CisgICAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHVyblJlZnNUb1N1cGVyL3N1cGVyQ2xhc3MvYmVmb3JlL0FTdXBlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R1cm5SZWZzVG9TdXBlci9zdXBlckNsYXNzL2JlZm9yZS9BU3VwZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZjE5ZTRkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R1cm5SZWZzVG9TdXBlci9zdXBlckNsYXNzL2JlZm9yZS9BU3VwZXIuamF2YQpAQCAtMCwwICsxLDYgQEAKK3B1YmxpYyBjbGFzcyBBU3VwZXIgeworICBwdWJsaWMgdm9pZCBzYXlGb28oKQorICB7CisgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIkZvbyIpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R1cm5SZWZzVG9TdXBlci9zdXBlckNsYXNzL2JlZm9yZS9DbGllbnQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90dXJuUmVmc1RvU3VwZXIvc3VwZXJDbGFzcy9iZWZvcmUvQ2xpZW50LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjQ2MjZhZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90dXJuUmVmc1RvU3VwZXIvc3VwZXJDbGFzcy9iZWZvcmUvQ2xpZW50LmphdmEKQEAgLTAsMCArMSw2IEBACitwdWJsaWMgY2xhc3MgQ2xpZW50IHsKKyAgICB7CisgICAgICAgIEFDbGFzcyBiID0gbmV3IEFDbGFzcygpOworICAgICAgICBiLnNheUZvbygpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHVyblJlZnNUb1N1cGVyL3RvQXJyYXkvYWZ0ZXIvQS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R1cm5SZWZzVG9TdXBlci90b0FycmF5L2FmdGVyL0EuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43M2MzMzRjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R1cm5SZWZzVG9TdXBlci90b0FycmF5L2FmdGVyL0EuamF2YQpAQCAtMCwwICsxLDIgQEAKK2NsYXNzIEEgaW1wbGVtZW50cyBJIHsKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90dXJuUmVmc1RvU3VwZXIvdG9BcnJheS9hZnRlci9CLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHVyblJlZnNUb1N1cGVyL3RvQXJyYXkvYWZ0ZXIvQi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg4OGFmZWIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHVyblJlZnNUb1N1cGVyL3RvQXJyYXkvYWZ0ZXIvQi5qYXZhCkBAIC0wLDAgKzEsMTEgQEAKK2ltcG9ydCBqYXZhLnV0aWwuQXJyYXlMaXN0OworCitjbGFzcyBCIHsKKyAgICBpbnQgbWV0aG9kKEFycmF5TGlzdCBsaXN0KSB7CisgICAgICAgIElbXSBhID0gKElbXSlsaXN0LnRvQXJyYXkobmV3IElbMF0pOworCisgICAgICAgIGZvcihpID0gMDsgaSA8IGEubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgIEkgbWVtYmVyID0gYVtpXTsKKyAgICAgICAgfQorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHVyblJlZnNUb1N1cGVyL3RvQXJyYXkvYWZ0ZXIvSS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R1cm5SZWZzVG9TdXBlci90b0FycmF5L2FmdGVyL0kuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NDg4NWJlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R1cm5SZWZzVG9TdXBlci90b0FycmF5L2FmdGVyL0kuamF2YQpAQCAtMCwwICsxLDQgQEAKK2ltcG9ydCBqYXZhLnV0aWwuQXJyYXlMaXN0OworaW50ZXJmYWNlIEkgeworfQorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHVyblJlZnNUb1N1cGVyL3RvQXJyYXkvYmVmb3JlL0EuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90dXJuUmVmc1RvU3VwZXIvdG9BcnJheS9iZWZvcmUvQS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjczYzMzNGMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHVyblJlZnNUb1N1cGVyL3RvQXJyYXkvYmVmb3JlL0EuamF2YQpAQCAtMCwwICsxLDIgQEAKK2NsYXNzIEEgaW1wbGVtZW50cyBJIHsKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90dXJuUmVmc1RvU3VwZXIvdG9BcnJheS9iZWZvcmUvQi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R1cm5SZWZzVG9TdXBlci90b0FycmF5L2JlZm9yZS9CLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWZmNzVlMwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90dXJuUmVmc1RvU3VwZXIvdG9BcnJheS9iZWZvcmUvQi5qYXZhCkBAIC0wLDAgKzEsMTEgQEAKK2ltcG9ydCBqYXZhLnV0aWwuQXJyYXlMaXN0OworCitjbGFzcyBCIHsKKyAgICBpbnQgbWV0aG9kKEFycmF5TGlzdCBsaXN0KSB7CisgICAgICAgIEFbXSBhID0gKEFbXSlsaXN0LnRvQXJyYXkobmV3IEFbMF0pOworCisgICAgICAgIGZvcihpID0gMDsgaSA8IGEubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgIEEgbWVtYmVyID0gYVtpXTsKKyAgICAgICAgfQorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHVyblJlZnNUb1N1cGVyL3RvQXJyYXkvYmVmb3JlL0kuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90dXJuUmVmc1RvU3VwZXIvdG9BcnJheS9iZWZvcmUvSS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg0ODg1YmUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHVyblJlZnNUb1N1cGVyL3RvQXJyYXkvYmVmb3JlL0kuamF2YQpAQCAtMCwwICsxLDQgQEAKK2ltcG9ydCBqYXZhLnV0aWwuQXJyYXlMaXN0OworaW50ZXJmYWNlIEkgeworfQorCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHVyblJlZnNUb1N1cGVyL3RyeVdpdGhSZXNvdXJjZXMxL2FmdGVyL1Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90dXJuUmVmc1RvU3VwZXIvdHJ5V2l0aFJlc291cmNlczEvYWZ0ZXIvVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJmMDBlYTIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHVyblJlZnNUb1N1cGVyL3RyeVdpdGhSZXNvdXJjZXMxL2FmdGVyL1Rlc3QuamF2YQpAQCAtMCwwICsxLDE2IEBACitjbGFzcyBUZXN0IHsKKyAgdm9pZCB0ZXN0KCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgdHJ5IChNeVJlc291cmNlSW1wbCByID0gbmV3IE15UmVzb3VyY2VJbXBsKCkpIHsKKyAgICAgIHIuZ2V0TmFtZSgpOworICAgIH0KKyAgfQorCisgIGludGVyZmFjZSBNeVJlc291cmNlIHsKKyAgICBTdHJpbmcgZ2V0TmFtZSgpOworICB9CisKKyAgc3RhdGljIGNsYXNzIE15UmVzb3VyY2VJbXBsIGltcGxlbWVudHMgTXlSZXNvdXJjZSwgQXV0b0Nsb3NlYWJsZSB7CisgICAgcHVibGljIFN0cmluZyBnZXROYW1lKCkgeyByZXR1cm4gIiI7IH0KKyAgICBwdWJsaWMgdm9pZCBjbG9zZSgpIHRocm93cyBFeGNlcHRpb24geyB9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHVyblJlZnNUb1N1cGVyL3RyeVdpdGhSZXNvdXJjZXMxL2JlZm9yZS9UZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHVyblJlZnNUb1N1cGVyL3RyeVdpdGhSZXNvdXJjZXMxL2JlZm9yZS9UZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmYwMGVhMgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90dXJuUmVmc1RvU3VwZXIvdHJ5V2l0aFJlc291cmNlczEvYmVmb3JlL1Rlc3QuamF2YQpAQCAtMCwwICsxLDE2IEBACitjbGFzcyBUZXN0IHsKKyAgdm9pZCB0ZXN0KCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgdHJ5IChNeVJlc291cmNlSW1wbCByID0gbmV3IE15UmVzb3VyY2VJbXBsKCkpIHsKKyAgICAgIHIuZ2V0TmFtZSgpOworICAgIH0KKyAgfQorCisgIGludGVyZmFjZSBNeVJlc291cmNlIHsKKyAgICBTdHJpbmcgZ2V0TmFtZSgpOworICB9CisKKyAgc3RhdGljIGNsYXNzIE15UmVzb3VyY2VJbXBsIGltcGxlbWVudHMgTXlSZXNvdXJjZSwgQXV0b0Nsb3NlYWJsZSB7CisgICAgcHVibGljIFN0cmluZyBnZXROYW1lKCkgeyByZXR1cm4gIiI7IH0KKyAgICBwdWJsaWMgdm9pZCBjbG9zZSgpIHRocm93cyBFeGNlcHRpb24geyB9CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHVyblJlZnNUb1N1cGVyL3RyeVdpdGhSZXNvdXJjZXMyL2FmdGVyL1Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90dXJuUmVmc1RvU3VwZXIvdHJ5V2l0aFJlc291cmNlczIvYWZ0ZXIvVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA4MjM2MTI5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R1cm5SZWZzVG9TdXBlci90cnlXaXRoUmVzb3VyY2VzMi9hZnRlci9UZXN0LmphdmEKQEAgLTAsMCArMSwxNiBAQAorY2xhc3MgVGVzdCB7CisgIHZvaWQgdGVzdCgpIHRocm93cyBFeGNlcHRpb24geworICAgIHRyeSAoTXlSZXNvdXJjZSByID0gbmV3IE15UmVzb3VyY2VJbXBsKCkpIHsKKyAgICAgIHIuZ2V0TmFtZSgpOworICAgIH0KKyAgfQorCisgIGludGVyZmFjZSBNeVJlc291cmNlIGV4dGVuZHMgQXV0b0Nsb3NlYWJsZSB7CisgICAgU3RyaW5nIGdldE5hbWUoKTsKKyAgfQorCisgIHN0YXRpYyBjbGFzcyBNeVJlc291cmNlSW1wbCBpbXBsZW1lbnRzIE15UmVzb3VyY2UgeworICAgIHB1YmxpYyBTdHJpbmcgZ2V0TmFtZSgpIHsgcmV0dXJuICIiOyB9CisgICAgcHVibGljIHZvaWQgY2xvc2UoKSB0aHJvd3MgRXhjZXB0aW9uIHsgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R1cm5SZWZzVG9TdXBlci90cnlXaXRoUmVzb3VyY2VzMi9iZWZvcmUvVGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R1cm5SZWZzVG9TdXBlci90cnlXaXRoUmVzb3VyY2VzMi9iZWZvcmUvVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBiZWZmMzgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHVyblJlZnNUb1N1cGVyL3RyeVdpdGhSZXNvdXJjZXMyL2JlZm9yZS9UZXN0LmphdmEKQEAgLTAsMCArMSwxNiBAQAorY2xhc3MgVGVzdCB7CisgIHZvaWQgdGVzdCgpIHRocm93cyBFeGNlcHRpb24geworICAgIHRyeSAoTXlSZXNvdXJjZUltcGwgciA9IG5ldyBNeVJlc291cmNlSW1wbCgpKSB7CisgICAgICByLmdldE5hbWUoKTsKKyAgICB9CisgIH0KKworICBpbnRlcmZhY2UgTXlSZXNvdXJjZSBleHRlbmRzIEF1dG9DbG9zZWFibGUgeworICAgIFN0cmluZyBnZXROYW1lKCk7CisgIH0KKworICBzdGF0aWMgY2xhc3MgTXlSZXNvdXJjZUltcGwgaW1wbGVtZW50cyBNeVJlc291cmNlIHsKKyAgICBwdWJsaWMgU3RyaW5nIGdldE5hbWUoKSB7IHJldHVybiAiIjsgfQorICAgIHB1YmxpYyB2b2lkIGNsb3NlKCkgdGhyb3dzIEV4Y2VwdGlvbiB7IH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90dXJuUmVmc1RvU3VwZXIvdHlwZUFyZ3VtZW50c1BhcmFtL2FmdGVyL0NsYXp6LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHVyblJlZnNUb1N1cGVyL3R5cGVBcmd1bWVudHNQYXJhbS9hZnRlci9DbGF6ei5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA5MmI4OGQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHVyblJlZnNUb1N1cGVyL3R5cGVBcmd1bWVudHNQYXJhbS9hZnRlci9DbGF6ei5qYXZhCkBAIC0wLDAgKzEsMjEgQEAKK2ludGVyZmFjZSBJbnRGIHsKK30KKworaW50ZXJmYWNlIEZhY3Rvcnk8RSBleHRlbmRzIEludEY+IHsKKyAgICBFIGNyZWF0ZSgpOworCisgICAgdm9pZCBzYXZlKEUgb2JqKTsKKworICAgIHN0YXRpYyBjbGFzcyBoZWxwZXIgeworICAgICAgICBzdGF0aWMgRmFjdG9yeTxJbnRGPiBnZXQoKSB7CisgICAgICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAgfQorICAgIH0KK30KKworcHVibGljIGNsYXNzIENsYXp6IGltcGxlbWVudHMgSW50RiB7CisgICAgdm9pZCBiYXIoKSB7CisgICAgICAgIEludEYgeSA9IEZhY3RvcnkuaGVscGVyLmdldCgpLmNyZWF0ZSgpOworICAgICAgICBGYWN0b3J5LmhlbHBlci5nZXQoKS5zYXZlKHkpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90dXJuUmVmc1RvU3VwZXIvdHlwZUFyZ3VtZW50c1BhcmFtL2JlZm9yZS9DbGF6ei5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R1cm5SZWZzVG9TdXBlci90eXBlQXJndW1lbnRzUGFyYW0vYmVmb3JlL0NsYXp6LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjYwMWNiOAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90dXJuUmVmc1RvU3VwZXIvdHlwZUFyZ3VtZW50c1BhcmFtL2JlZm9yZS9DbGF6ei5qYXZhCkBAIC0wLDAgKzEsMjEgQEAKK2ludGVyZmFjZSBJbnRGIHsKK30KKworaW50ZXJmYWNlIEZhY3Rvcnk8RSBleHRlbmRzIEludEY+IHsKKyAgICBFIGNyZWF0ZSgpOworCisgICAgdm9pZCBzYXZlKEUgb2JqKTsKKworICAgIHN0YXRpYyBjbGFzcyBoZWxwZXIgeworICAgICAgICBzdGF0aWMgRmFjdG9yeTxJbnRGPiBnZXQoKSB7CisgICAgICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAgfQorICAgIH0KK30KKworcHVibGljIGNsYXNzIENsYXp6IGltcGxlbWVudHMgSW50RiB7CisgICAgdm9pZCBiYXIoKSB7CisgICAgICAgIENsYXp6IHkgPSBGYWN0b3J5LmhlbHBlci5nZXQoKS5jcmVhdGUoKTsKKyAgICAgICAgRmFjdG9yeS5oZWxwZXIuZ2V0KCkuc2F2ZSh5KTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHVyblJlZnNUb1N1cGVyL3R5cGVBcmd1bWVudHNSSC9hZnRlci9JLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHVyblJlZnNUb1N1cGVyL3R5cGVBcmd1bWVudHNSSC9hZnRlci9JLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2M4ODI5NAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90dXJuUmVmc1RvU3VwZXIvdHlwZUFyZ3VtZW50c1JIL2FmdGVyL0kuamF2YQpAQCAtMCwwICsxIEBACitpbnRlcmZhY2UgSXt9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R1cm5SZWZzVG9TdXBlci90eXBlQXJndW1lbnRzUkgvYWZ0ZXIvSUltcGwuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90dXJuUmVmc1RvU3VwZXIvdHlwZUFyZ3VtZW50c1JIL2FmdGVyL0lJbXBsLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjA3MDA4NQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90dXJuUmVmc1RvU3VwZXIvdHlwZUFyZ3VtZW50c1JIL2FmdGVyL0lJbXBsLmphdmEKQEAgLTAsMCArMSBAQAorY2xhc3MgSUltcGwgaW1wbGVtZW50cyBJe30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHVyblJlZnNUb1N1cGVyL3R5cGVBcmd1bWVudHNSSC9hZnRlci9VLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHVyblJlZnNUb1N1cGVyL3R5cGVBcmd1bWVudHNSSC9hZnRlci9VLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjQ0ZjdiOQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90dXJuUmVmc1RvU3VwZXIvdHlwZUFyZ3VtZW50c1JIL2FmdGVyL1UuamF2YQpAQCAtMCwwICsxLDYgQEAKK2ltcG9ydCBqYXZhLnV0aWwuKjsKK2NsYXNzIFUgeworICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CisgICAgTGlzdDxMaXN0PEk+PiBsID0gbmV3IEFycmF5TGl0czxMaXN0PEk+PigpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R1cm5SZWZzVG9TdXBlci90eXBlQXJndW1lbnRzUkgvYmVmb3JlL0kuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90dXJuUmVmc1RvU3VwZXIvdHlwZUFyZ3VtZW50c1JIL2JlZm9yZS9JLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2M4ODI5NAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90dXJuUmVmc1RvU3VwZXIvdHlwZUFyZ3VtZW50c1JIL2JlZm9yZS9JLmphdmEKQEAgLTAsMCArMSBAQAoraW50ZXJmYWNlIEl7fQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90dXJuUmVmc1RvU3VwZXIvdHlwZUFyZ3VtZW50c1JIL2JlZm9yZS9JSW1wbC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R1cm5SZWZzVG9TdXBlci90eXBlQXJndW1lbnRzUkgvYmVmb3JlL0lJbXBsLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjA3MDA4NQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90dXJuUmVmc1RvU3VwZXIvdHlwZUFyZ3VtZW50c1JIL2JlZm9yZS9JSW1wbC5qYXZhCkBAIC0wLDAgKzEgQEAKK2NsYXNzIElJbXBsIGltcGxlbWVudHMgSXt9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R1cm5SZWZzVG9TdXBlci90eXBlQXJndW1lbnRzUkgvYmVmb3JlL1UuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90dXJuUmVmc1RvU3VwZXIvdHlwZUFyZ3VtZW50c1JIL2JlZm9yZS9VLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmMzMDAyZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90dXJuUmVmc1RvU3VwZXIvdHlwZUFyZ3VtZW50c1JIL2JlZm9yZS9VLmphdmEKQEAgLTAsMCArMSw2IEBACitpbXBvcnQgamF2YS51dGlsLio7CitjbGFzcyBVIHsKKyAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgeworICAgIExpc3Q8TGlzdDxJSW1wbD4+IGwgPSBuZXcgQXJyYXlMaXRzPExpc3Q8SUltcGw+PigpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R1cm5SZWZzVG9TdXBlci90eXBlQXJndW1lbnRzUkgxL2FmdGVyL0kuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90dXJuUmVmc1RvU3VwZXIvdHlwZUFyZ3VtZW50c1JIMS9hZnRlci9JLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2M4ODI5NAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90dXJuUmVmc1RvU3VwZXIvdHlwZUFyZ3VtZW50c1JIMS9hZnRlci9JLmphdmEKQEAgLTAsMCArMSBAQAoraW50ZXJmYWNlIEl7fQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90dXJuUmVmc1RvU3VwZXIvdHlwZUFyZ3VtZW50c1JIMS9hZnRlci9JSW1wbC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R1cm5SZWZzVG9TdXBlci90eXBlQXJndW1lbnRzUkgxL2FmdGVyL0lJbXBsLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjA3MDA4NQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90dXJuUmVmc1RvU3VwZXIvdHlwZUFyZ3VtZW50c1JIMS9hZnRlci9JSW1wbC5qYXZhCkBAIC0wLDAgKzEgQEAKK2NsYXNzIElJbXBsIGltcGxlbWVudHMgSXt9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R1cm5SZWZzVG9TdXBlci90eXBlQXJndW1lbnRzUkgxL2FmdGVyL1UuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90dXJuUmVmc1RvU3VwZXIvdHlwZUFyZ3VtZW50c1JIMS9hZnRlci9VLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWU4ZTQzM2UKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHVyblJlZnNUb1N1cGVyL3R5cGVBcmd1bWVudHNSSDEvYWZ0ZXIvVS5qYXZhCkBAIC0wLDAgKzEsNiBAQAoraW1wb3J0IGphdmEudXRpbC4qOworY2xhc3MgVSB7CisgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKKyAgICBMaXN0PEk+IGwgPSBuZXcgQXJyYXlMaXRzPEk+KCk7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHVyblJlZnNUb1N1cGVyL3R5cGVBcmd1bWVudHNSSDEvYmVmb3JlL0kuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90dXJuUmVmc1RvU3VwZXIvdHlwZUFyZ3VtZW50c1JIMS9iZWZvcmUvSS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNjODgyOTQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHVyblJlZnNUb1N1cGVyL3R5cGVBcmd1bWVudHNSSDEvYmVmb3JlL0kuamF2YQpAQCAtMCwwICsxIEBACitpbnRlcmZhY2UgSXt9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R1cm5SZWZzVG9TdXBlci90eXBlQXJndW1lbnRzUkgxL2JlZm9yZS9JSW1wbC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R1cm5SZWZzVG9TdXBlci90eXBlQXJndW1lbnRzUkgxL2JlZm9yZS9JSW1wbC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYwNzAwODUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHVyblJlZnNUb1N1cGVyL3R5cGVBcmd1bWVudHNSSDEvYmVmb3JlL0lJbXBsLmphdmEKQEAgLTAsMCArMSBAQAorY2xhc3MgSUltcGwgaW1wbGVtZW50cyBJe30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHVyblJlZnNUb1N1cGVyL3R5cGVBcmd1bWVudHNSSDEvYmVmb3JlL1UuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90dXJuUmVmc1RvU3VwZXIvdHlwZUFyZ3VtZW50c1JIMS9iZWZvcmUvVS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZlMjAzZGYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHVyblJlZnNUb1N1cGVyL3R5cGVBcmd1bWVudHNSSDEvYmVmb3JlL1UuamF2YQpAQCAtMCwwICsxLDYgQEAKK2ltcG9ydCBqYXZhLnV0aWwuKjsKK2NsYXNzIFUgeworICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CisgICAgTGlzdDxJSW1wbD4gbCA9IG5ldyBBcnJheUxpdHM8SUltcGw+KCk7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHVyblJlZnNUb1N1cGVyL3VzZUFzQXJnL2FmdGVyL0FDbGFzcy5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R1cm5SZWZzVG9TdXBlci91c2VBc0FyZy9hZnRlci9BQ2xhc3MuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZTE5NjAxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R1cm5SZWZzVG9TdXBlci91c2VBc0FyZy9hZnRlci9BQ2xhc3MuamF2YQpAQCAtMCwwICsxLDMgQEAKKworcHVibGljIGNsYXNzIEFDbGFzcyBpbXBsZW1lbnRzIFJ1bm5hYmxlLCBJeworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R1cm5SZWZzVG9TdXBlci91c2VBc0FyZy9hZnRlci9DbGllbnQuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90dXJuUmVmc1RvU3VwZXIvdXNlQXNBcmcvYWZ0ZXIvQ2xpZW50LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTYxMzYxNAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90dXJuUmVmc1RvU3VwZXIvdXNlQXNBcmcvYWZ0ZXIvQ2xpZW50LmphdmEKQEAgLTAsMCArMSwxNCBAQAorCitpbXBvcnQgamF2YXguc3dpbmcuKjsKKworcHVibGljIGNsYXNzIENsaWVudCB7CisgIHsKKyAgICBBQ2xhc3MgYUNsYXNzID0gbmV3IEFDbGFzcygpOworICAgIFN3aW5nVXRpbGl0aWVzLmludm9rZUxhdGVyKGFDbGFzcyk7CisgIH0KKyAgCisgIHZvaWQgbWV0aG9kKHZvaWQpIHsKKyAgICAgUnVubmFibGUgciA9IG5ldyBBQ2xhc3MoKTsKKyAgICAgU3dpbmdVdGlsaXRpZXMuaW52b2tlTGF0ZXIocik7CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90dXJuUmVmc1RvU3VwZXIvdXNlQXNBcmcvYWZ0ZXIvSS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R1cm5SZWZzVG9TdXBlci91c2VBc0FyZy9hZnRlci9JLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTljNGMwZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90dXJuUmVmc1RvU3VwZXIvdXNlQXNBcmcvYWZ0ZXIvSS5qYXZhCkBAIC0wLDAgKzEsMyBAQAorCitwdWJsaWMgaW50ZXJmYWNlIEkgeworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R1cm5SZWZzVG9TdXBlci91c2VBc0FyZy9iZWZvcmUvQUNsYXNzLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHVyblJlZnNUb1N1cGVyL3VzZUFzQXJnL2JlZm9yZS9BQ2xhc3MuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZTE5NjAxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R1cm5SZWZzVG9TdXBlci91c2VBc0FyZy9iZWZvcmUvQUNsYXNzLmphdmEKQEAgLTAsMCArMSwzIEBACisKK3B1YmxpYyBjbGFzcyBBQ2xhc3MgaW1wbGVtZW50cyBSdW5uYWJsZSwgSXsKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90dXJuUmVmc1RvU3VwZXIvdXNlQXNBcmcvYmVmb3JlL0NsaWVudC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R1cm5SZWZzVG9TdXBlci91c2VBc0FyZy9iZWZvcmUvQ2xpZW50LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTYxMzYxNAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90dXJuUmVmc1RvU3VwZXIvdXNlQXNBcmcvYmVmb3JlL0NsaWVudC5qYXZhCkBAIC0wLDAgKzEsMTQgQEAKKworaW1wb3J0IGphdmF4LnN3aW5nLio7CisKK3B1YmxpYyBjbGFzcyBDbGllbnQgeworICB7CisgICAgQUNsYXNzIGFDbGFzcyA9IG5ldyBBQ2xhc3MoKTsKKyAgICBTd2luZ1V0aWxpdGllcy5pbnZva2VMYXRlcihhQ2xhc3MpOworICB9CisgIAorICB2b2lkIG1ldGhvZCh2b2lkKSB7CisgICAgIFJ1bm5hYmxlIHIgPSBuZXcgQUNsYXNzKCk7CisgICAgIFN3aW5nVXRpbGl0aWVzLmludm9rZUxhdGVyKHIpOworICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHVyblJlZnNUb1N1cGVyL3VzZUFzQXJnL2JlZm9yZS9JLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHVyblJlZnNUb1N1cGVyL3VzZUFzQXJnL2JlZm9yZS9JLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTljNGMwZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90dXJuUmVmc1RvU3VwZXIvdXNlQXNBcmcvYmVmb3JlL0kuamF2YQpAQCAtMCwwICsxLDMgQEAKKworcHVibGljIGludGVyZmFjZSBJIHsKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MDEvYWZ0ZXIvVGVzdC4xLml0ZW1zIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QwMS9hZnRlci9UZXN0LjEuaXRlbXMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzk0YTI2MQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MDEvYWZ0ZXIvVGVzdC4xLml0ZW1zCkBAIC0wLDAgKzEgQEAKK0xpbmtlZExpc3RcblBzaUZpZWxkOngKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MDEvYWZ0ZXIvVGVzdC5pdGVtcyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MDEvYWZ0ZXIvVGVzdC5pdGVtcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jOTRhMjYxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QwMS9hZnRlci9UZXN0Lml0ZW1zCkBAIC0wLDAgKzEgQEAKK0xpbmtlZExpc3RcblBzaUZpZWxkOngKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MDEvYWZ0ZXIvdGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QwMS9hZnRlci90ZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTdhZjAzYwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MDEvYWZ0ZXIvdGVzdC5qYXZhCkBAIC0wLDAgKzEsMjAgQEAKK2NsYXNzIExpbmtlZExpc3Q8VD57CisgICAgVCB0OworICAgIHB1YmxpYyBUIGdldCgpe3JldHVybiB0O30KKyAgICBwdWJsaWMgdm9pZCBzZXQgKFQgdCl7CisJdGhpcy50ID0gdDsKKyAgICB9ICAgIAorfQorCitjbGFzcyBTaW1wbGUgeworfQorCitjbGFzcyBUZXN0eworICAgIExpbmtlZExpc3Q8U2ltcGxlPiBrOworICAgIExpbmtlZExpc3QgeDsKKyAgICAKKyAgICB2b2lkIGYoKXsKKwl4PWs7CisgICAgICAgIHguc2V0KG5ldyBJbnRlZ2VyKDMpKTsKKyAgICB9ICAgCit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDAxL2JlZm9yZS90ZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDAxL2JlZm9yZS90ZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTdhZjAzYwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MDEvYmVmb3JlL3Rlc3QuamF2YQpAQCAtMCwwICsxLDIwIEBACitjbGFzcyBMaW5rZWRMaXN0PFQ+eworICAgIFQgdDsKKyAgICBwdWJsaWMgVCBnZXQoKXtyZXR1cm4gdDt9CisgICAgcHVibGljIHZvaWQgc2V0IChUIHQpeworCXRoaXMudCA9IHQ7CisgICAgfSAgICAKK30KKworY2xhc3MgU2ltcGxlIHsKK30KKworY2xhc3MgVGVzdHsKKyAgICBMaW5rZWRMaXN0PFNpbXBsZT4gazsKKyAgICBMaW5rZWRMaXN0IHg7CisgICAgCisgICAgdm9pZCBmKCl7CisJeD1rOworICAgICAgICB4LnNldChuZXcgSW50ZWdlcigzKSk7CisgICAgfSAgIAorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QwMi9hZnRlci9UZXN0LjEuaXRlbXMgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDAyL2FmdGVyL1Rlc3QuMS5pdGVtcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NjcxYjRjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QwMi9hZnRlci9UZXN0LjEuaXRlbXMKQEAgLTAsMCArMSBAQAorTGlua2VkTGlzdDxqYXZhLmxhbmcuSW50ZWdlcj5cblBzaUZpZWxkOngKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MDIvYWZ0ZXIvVGVzdC5pdGVtcyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MDIvYWZ0ZXIvVGVzdC5pdGVtcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jOTRhMjYxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QwMi9hZnRlci9UZXN0Lml0ZW1zCkBAIC0wLDAgKzEgQEAKK0xpbmtlZExpc3RcblBzaUZpZWxkOngKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MDIvYWZ0ZXIvdGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QwMi9hZnRlci90ZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTI5ZGJkMwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MDIvYWZ0ZXIvdGVzdC5qYXZhCkBAIC0wLDAgKzEsMTkgQEAKK2NsYXNzIExpbmtlZExpc3Q8VD57CisgICAgVCB0OworICAgIHB1YmxpYyBUIGdldCgpe3JldHVybiB0O30KKyAgICBwdWJsaWMgdm9pZCBzZXQgKFQgdCl7CisJdGhpcy50ID0gdDsKKyAgICB9ICAgIAorfQorCitjbGFzcyBTaW1wbGUgeworfQorCitjbGFzcyBUZXN0eworICAgIExpbmtlZExpc3Q8U2ltcGxlPiBrOworICAgIExpbmtlZExpc3QgeDsKKyAgICAKKyAgICB2b2lkIGYoKXsKKwl4LnNldChuZXcgSW50ZWdlcigpKTsKKyAgICB9ICAgCit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDAyL2JlZm9yZS90ZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDAyL2JlZm9yZS90ZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTI5ZGJkMwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MDIvYmVmb3JlL3Rlc3QuamF2YQpAQCAtMCwwICsxLDE5IEBACitjbGFzcyBMaW5rZWRMaXN0PFQ+eworICAgIFQgdDsKKyAgICBwdWJsaWMgVCBnZXQoKXtyZXR1cm4gdDt9CisgICAgcHVibGljIHZvaWQgc2V0IChUIHQpeworCXRoaXMudCA9IHQ7CisgICAgfSAgICAKK30KKworY2xhc3MgU2ltcGxlIHsKK30KKworY2xhc3MgVGVzdHsKKyAgICBMaW5rZWRMaXN0PFNpbXBsZT4gazsKKyAgICBMaW5rZWRMaXN0IHg7CisgICAgCisgICAgdm9pZCBmKCl7CisJeC5zZXQobmV3IEludGVnZXIoKSk7CisgICAgfSAgIAorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QwMy9hZnRlci9UZXN0LjEuaXRlbXMgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDAzL2FmdGVyL1Rlc3QuMS5pdGVtcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYjRjZmQyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QwMy9hZnRlci9UZXN0LjEuaXRlbXMKQEAgLTAsMCArMSBAQAorTGlua2VkTGlzdDxTaW1wbGU+XG5Qc2lGaWVsZDp4CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDAzL2FmdGVyL1Rlc3QuaXRlbXMgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDAzL2FmdGVyL1Rlc3QuaXRlbXMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzk0YTI2MQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MDMvYWZ0ZXIvVGVzdC5pdGVtcwpAQCAtMCwwICsxIEBACitMaW5rZWRMaXN0XG5Qc2lGaWVsZDp4CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDAzL2FmdGVyL3Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MDMvYWZ0ZXIvdGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUyZWQzZmMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDAzL2FmdGVyL3Rlc3QuamF2YQpAQCAtMCwwICsxLDE5IEBACitjbGFzcyBMaW5rZWRMaXN0PFQ+eworICAgIFQgdDsKKyAgICBwdWJsaWMgVCBnZXQoKXtyZXR1cm4gdDt9CisgICAgcHVibGljIHZvaWQgc2V0IChUIHQpeworCXRoaXMudCA9IHQ7CisgICAgfSAgICAKK30KKworY2xhc3MgU2ltcGxlIHsKK30KKworY2xhc3MgVGVzdHsKKyAgICBMaW5rZWRMaXN0PFNpbXBsZT4gazsKKyAgICBMaW5rZWRMaXN0IHg7CisgICAgCisgICAgdm9pZCBmKCl7CisJeD1rOworICAgIH0gICAKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MDMvYmVmb3JlL3Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MDMvYmVmb3JlL3Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMmVkM2ZjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QwMy9iZWZvcmUvdGVzdC5qYXZhCkBAIC0wLDAgKzEsMTkgQEAKK2NsYXNzIExpbmtlZExpc3Q8VD57CisgICAgVCB0OworICAgIHB1YmxpYyBUIGdldCgpe3JldHVybiB0O30KKyAgICBwdWJsaWMgdm9pZCBzZXQgKFQgdCl7CisJdGhpcy50ID0gdDsKKyAgICB9ICAgIAorfQorCitjbGFzcyBTaW1wbGUgeworfQorCitjbGFzcyBUZXN0eworICAgIExpbmtlZExpc3Q8U2ltcGxlPiBrOworICAgIExpbmtlZExpc3QgeDsKKyAgICAKKyAgICB2b2lkIGYoKXsKKwl4PWs7CisgICAgfSAgIAorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QwNC9hZnRlci9UZXN0LjEuaXRlbXMgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDA0L2FmdGVyL1Rlc3QuMS5pdGVtcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYjRjZmQyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QwNC9hZnRlci9UZXN0LjEuaXRlbXMKQEAgLTAsMCArMSBAQAorTGlua2VkTGlzdDxTaW1wbGU+XG5Qc2lGaWVsZDp4CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDA0L2FmdGVyL1Rlc3QuaXRlbXMgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDA0L2FmdGVyL1Rlc3QuaXRlbXMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzk0YTI2MQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MDQvYWZ0ZXIvVGVzdC5pdGVtcwpAQCAtMCwwICsxIEBACitMaW5rZWRMaXN0XG5Qc2lGaWVsZDp4CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDA0L2FmdGVyL3Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MDQvYWZ0ZXIvdGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVjYjQxYzYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDA0L2FmdGVyL3Rlc3QuamF2YQpAQCAtMCwwICsxLDE4IEBACitjbGFzcyBMaW5rZWRMaXN0PFQ+eworICAgIFQgdDsKKyAgICBwdWJsaWMgVCBnZXQoKXtyZXR1cm4gdDt9CisgICAgcHVibGljIHZvaWQgc2V0IChUIHQpeworCXRoaXMudCA9IHQ7CisgICAgfSAgICAKK30KKworY2xhc3MgU2ltcGxlIHsKK30KKworY2xhc3MgVGVzdHsKKyAgICBMaW5rZWRMaXN0IHg7CisgICAgCisgICAgdm9pZCBmKCl7CisJU2ltcGxlIHMgPSAoU2ltcGxlKSB4LmdldCgpOworICAgIH0gICAKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MDQvYmVmb3JlL3Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MDQvYmVmb3JlL3Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lY2I0MWM2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QwNC9iZWZvcmUvdGVzdC5qYXZhCkBAIC0wLDAgKzEsMTggQEAKK2NsYXNzIExpbmtlZExpc3Q8VD57CisgICAgVCB0OworICAgIHB1YmxpYyBUIGdldCgpe3JldHVybiB0O30KKyAgICBwdWJsaWMgdm9pZCBzZXQgKFQgdCl7CisJdGhpcy50ID0gdDsKKyAgICB9ICAgIAorfQorCitjbGFzcyBTaW1wbGUgeworfQorCitjbGFzcyBUZXN0eworICAgIExpbmtlZExpc3QgeDsKKyAgICAKKyAgICB2b2lkIGYoKXsKKwlTaW1wbGUgcyA9IChTaW1wbGUpIHguZ2V0KCk7CisgICAgfSAgIAorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QwNS9hZnRlci9UZXN0LjEuaXRlbXMgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDA1L2FmdGVyL1Rlc3QuMS5pdGVtcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYjRjZmQyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QwNS9hZnRlci9UZXN0LjEuaXRlbXMKQEAgLTAsMCArMSBAQAorTGlua2VkTGlzdDxTaW1wbGU+XG5Qc2lGaWVsZDp4CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDA1L2FmdGVyL1Rlc3QuaXRlbXMgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDA1L2FmdGVyL1Rlc3QuaXRlbXMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzk0YTI2MQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MDUvYWZ0ZXIvVGVzdC5pdGVtcwpAQCAtMCwwICsxIEBACitMaW5rZWRMaXN0XG5Qc2lGaWVsZDp4CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDA1L2FmdGVyL3Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MDUvYWZ0ZXIvdGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcwNTE2NTkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDA1L2FmdGVyL3Rlc3QuamF2YQpAQCAtMCwwICsxLDE5IEBACitjbGFzcyBMaW5rZWRMaXN0PFQ+eworICAgIFQgdDsKKyAgICBwdWJsaWMgVCBnZXQoKXtyZXR1cm4gdDt9CisgICAgcHVibGljIHZvaWQgc2V0IChUIHQpeworCXRoaXMudCA9IHQ7CisgICAgfSAgICAKK30KKworY2xhc3MgU2ltcGxlIHsKK30KKworY2xhc3MgVGVzdHsKKyAgICBMaW5rZWRMaXN0IHg7CisgICAgTGlua2VkTGlzdDxTaW1wbGU+IHk7CisgICAgCisgICAgdm9pZCBmKCl7CisJeS5zZXQoKFNpbXBsZSkgeC5nZXQoKSk7CisgICAgfSAgIAorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QwNS9iZWZvcmUvdGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QwNS9iZWZvcmUvdGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcwNTE2NTkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDA1L2JlZm9yZS90ZXN0LmphdmEKQEAgLTAsMCArMSwxOSBAQAorY2xhc3MgTGlua2VkTGlzdDxUPnsKKyAgICBUIHQ7CisgICAgcHVibGljIFQgZ2V0KCl7cmV0dXJuIHQ7fQorICAgIHB1YmxpYyB2b2lkIHNldCAoVCB0KXsKKwl0aGlzLnQgPSB0OworICAgIH0gICAgCit9CisKK2NsYXNzIFNpbXBsZSB7Cit9CisKK2NsYXNzIFRlc3R7CisgICAgTGlua2VkTGlzdCB4OworICAgIExpbmtlZExpc3Q8U2ltcGxlPiB5OworICAgIAorICAgIHZvaWQgZigpeworCXkuc2V0KChTaW1wbGUpIHguZ2V0KCkpOworICAgIH0gICAKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MDYvYWZ0ZXIvVGVzdC4xLml0ZW1zIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QwNi9hZnRlci9UZXN0LjEuaXRlbXMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzYwMzI5MAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MDYvYWZ0ZXIvVGVzdC4xLml0ZW1zCkBAIC0wLDAgKzEsMiBAQAorTGlua2VkTGlzdFxuUHNpRmllbGQ6eAorTGlua2VkTGlzdFxuUHNpRmllbGQ6eQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QwNi9hZnRlci9UZXN0Lml0ZW1zIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QwNi9hZnRlci9UZXN0Lml0ZW1zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM2MDMyOTAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDA2L2FmdGVyL1Rlc3QuaXRlbXMKQEAgLTAsMCArMSwyIEBACitMaW5rZWRMaXN0XG5Qc2lGaWVsZDp4CitMaW5rZWRMaXN0XG5Qc2lGaWVsZDp5CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDA2L2FmdGVyL3Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MDYvYWZ0ZXIvdGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU2NGUyMzUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDA2L2FmdGVyL3Rlc3QuamF2YQpAQCAtMCwwICsxLDE5IEBACitjbGFzcyBMaW5rZWRMaXN0PFQ+eworICAgIFQgdDsKKyAgICBwdWJsaWMgVCBnZXQoKXtyZXR1cm4gdDt9CisgICAgcHVibGljIHZvaWQgc2V0IChUIHQpeworCXRoaXMudCA9IHQ7CisgICAgfSAgICAKK30KKworY2xhc3MgU2ltcGxlIHsKK30KKworY2xhc3MgVGVzdHsKKyAgICBMaW5rZWRMaXN0IHg7CisgICAgTGlua2VkTGlzdCB5OworICAgIAorICAgIHZvaWQgZigpeworCXkuc2V0KHguZ2V0KCkpOworICAgIH0gICAKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MDYvYmVmb3JlL3Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MDYvYmVmb3JlL3Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNjRlMjM1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QwNi9iZWZvcmUvdGVzdC5qYXZhCkBAIC0wLDAgKzEsMTkgQEAKK2NsYXNzIExpbmtlZExpc3Q8VD57CisgICAgVCB0OworICAgIHB1YmxpYyBUIGdldCgpe3JldHVybiB0O30KKyAgICBwdWJsaWMgdm9pZCBzZXQgKFQgdCl7CisJdGhpcy50ID0gdDsKKyAgICB9ICAgIAorfQorCitjbGFzcyBTaW1wbGUgeworfQorCitjbGFzcyBUZXN0eworICAgIExpbmtlZExpc3QgeDsKKyAgICBMaW5rZWRMaXN0IHk7CisgICAgCisgICAgdm9pZCBmKCl7CisJeS5zZXQoeC5nZXQoKSk7CisgICAgfSAgIAorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QwNy9hZnRlci9UZXN0LjEuaXRlbXMgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDA3L2FmdGVyL1Rlc3QuMS5pdGVtcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZmE4ZWFjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QwNy9hZnRlci9UZXN0LjEuaXRlbXMKQEAgLTAsMCArMSwyIEBACitMaW5rZWRMaXN0PFNpbXBsZT5cblBzaUZpZWxkOngKK0xpbmtlZExpc3Q8U2ltcGxlPlxuUHNpRmllbGQ6eQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QwNy9hZnRlci9UZXN0Lml0ZW1zIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QwNy9hZnRlci9UZXN0Lml0ZW1zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM2MDMyOTAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDA3L2FmdGVyL1Rlc3QuaXRlbXMKQEAgLTAsMCArMSwyIEBACitMaW5rZWRMaXN0XG5Qc2lGaWVsZDp4CitMaW5rZWRMaXN0XG5Qc2lGaWVsZDp5CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDA3L2FmdGVyL3Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MDcvYWZ0ZXIvdGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc4MzU0MTQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDA3L2FmdGVyL3Rlc3QuamF2YQpAQCAtMCwwICsxLDIwIEBACitjbGFzcyBMaW5rZWRMaXN0PFQ+eworICAgIFQgdDsKKyAgICBwdWJsaWMgVCBnZXQoKXtyZXR1cm4gdDt9CisgICAgcHVibGljIHZvaWQgc2V0IChUIHQpeworCXRoaXMudCA9IHQ7CisgICAgfSAgICAKK30KKworY2xhc3MgU2ltcGxlIHsKK30KKworY2xhc3MgVGVzdHsKKyAgICBMaW5rZWRMaXN0IHg7CisgICAgTGlua2VkTGlzdCB5OworICAgIAorICAgIHZvaWQgZigpeworCXkuc2V0KHguZ2V0KCkpOworCVNpbXBsZSB0ID0gKFNpbXBsZSkgeC5nZXQoKTsKKyAgICB9ICAgCit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDA3L2JlZm9yZS90ZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDA3L2JlZm9yZS90ZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzgzNTQxNAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MDcvYmVmb3JlL3Rlc3QuamF2YQpAQCAtMCwwICsxLDIwIEBACitjbGFzcyBMaW5rZWRMaXN0PFQ+eworICAgIFQgdDsKKyAgICBwdWJsaWMgVCBnZXQoKXtyZXR1cm4gdDt9CisgICAgcHVibGljIHZvaWQgc2V0IChUIHQpeworCXRoaXMudCA9IHQ7CisgICAgfSAgICAKK30KKworY2xhc3MgU2ltcGxlIHsKK30KKworY2xhc3MgVGVzdHsKKyAgICBMaW5rZWRMaXN0IHg7CisgICAgTGlua2VkTGlzdCB5OworICAgIAorICAgIHZvaWQgZigpeworCXkuc2V0KHguZ2V0KCkpOworCVNpbXBsZSB0ID0gKFNpbXBsZSkgeC5nZXQoKTsKKyAgICB9ICAgCit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDA4L2FmdGVyL1Rlc3QuMS5pdGVtcyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MDgvYWZ0ZXIvVGVzdC4xLml0ZW1zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI3OTQ5ODEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDA4L2FmdGVyL1Rlc3QuMS5pdGVtcwpAQCAtMCwwICsxLDIgQEAKK0xpbmtlZExpc3Q8U2ltcGxlPlxuUHNpRmllbGQ6eAorTGlua2VkTGlzdDxqYXZhLmxhbmcuT2JqZWN0PlxuUHNpRmllbGQ6eQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QwOC9hZnRlci9UZXN0Lml0ZW1zIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QwOC9hZnRlci9UZXN0Lml0ZW1zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM2MDMyOTAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDA4L2FmdGVyL1Rlc3QuaXRlbXMKQEAgLTAsMCArMSwyIEBACitMaW5rZWRMaXN0XG5Qc2lGaWVsZDp4CitMaW5rZWRMaXN0XG5Qc2lGaWVsZDp5CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDA4L2FmdGVyL3Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MDgvYWZ0ZXIvdGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM4YmUxNTkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDA4L2FmdGVyL3Rlc3QuamF2YQpAQCAtMCwwICsxLDIxIEBACitjbGFzcyBMaW5rZWRMaXN0PFQ+eworICAgIFQgdDsKKyAgICBwdWJsaWMgVCBnZXQoKXtyZXR1cm4gdDt9CisgICAgcHVibGljIHZvaWQgc2V0IChUIHQpeworCXRoaXMudCA9IHQ7CisgICAgfSAgICAKK30KKworY2xhc3MgU2ltcGxlIHsKK30KKworY2xhc3MgVGVzdHsKKyAgICBMaW5rZWRMaXN0IHg7CisgICAgTGlua2VkTGlzdCB5OworICAgIAorICAgIHZvaWQgZigpeworCXkuc2V0KHguZ2V0KCkpOworCVNpbXBsZSB0ID0gKFNpbXBsZSkgeC5nZXQoKTsKKwl5LnNldChuZXcgVGVzdCgpKTsKKyAgICB9ICAgCit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDA4L2JlZm9yZS90ZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDA4L2JlZm9yZS90ZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzhiZTE1OQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MDgvYmVmb3JlL3Rlc3QuamF2YQpAQCAtMCwwICsxLDIxIEBACitjbGFzcyBMaW5rZWRMaXN0PFQ+eworICAgIFQgdDsKKyAgICBwdWJsaWMgVCBnZXQoKXtyZXR1cm4gdDt9CisgICAgcHVibGljIHZvaWQgc2V0IChUIHQpeworCXRoaXMudCA9IHQ7CisgICAgfSAgICAKK30KKworY2xhc3MgU2ltcGxlIHsKK30KKworY2xhc3MgVGVzdHsKKyAgICBMaW5rZWRMaXN0IHg7CisgICAgTGlua2VkTGlzdCB5OworICAgIAorICAgIHZvaWQgZigpeworCXkuc2V0KHguZ2V0KCkpOworCVNpbXBsZSB0ID0gKFNpbXBsZSkgeC5nZXQoKTsKKwl5LnNldChuZXcgVGVzdCgpKTsKKyAgICB9ICAgCit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDA5L2FmdGVyL1Rlc3QuMS5pdGVtcyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MDkvYWZ0ZXIvVGVzdC4xLml0ZW1zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI1NmE2MzYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDA5L2FmdGVyL1Rlc3QuMS5pdGVtcwpAQCAtMCwwICsxLDIgQEAKK0xpbmtlZExpc3RbXVxuUHNpRmllbGQ6eAorTGlua2VkTGlzdFxuUHNpRmllbGQ6eQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QwOS9hZnRlci9UZXN0Lml0ZW1zIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QwOS9hZnRlci9UZXN0Lml0ZW1zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI1NmE2MzYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDA5L2FmdGVyL1Rlc3QuaXRlbXMKQEAgLTAsMCArMSwyIEBACitMaW5rZWRMaXN0W11cblBzaUZpZWxkOngKK0xpbmtlZExpc3RcblBzaUZpZWxkOnkKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MDkvYWZ0ZXIvdGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QwOS9hZnRlci90ZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDgzMTQwZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MDkvYWZ0ZXIvdGVzdC5qYXZhCkBAIC0wLDAgKzEsMTkgQEAKK2NsYXNzIExpbmtlZExpc3Q8VD57CisgICAgVCB0OworICAgIHB1YmxpYyBUIGdldCgpe3JldHVybiB0O30KKyAgICBwdWJsaWMgdm9pZCBzZXQgKFQgdCl7CisJdGhpcy50ID0gdDsKKyAgICB9ICAgIAorfQorCitjbGFzcyBTaW1wbGUgeworfQorCitjbGFzcyBUZXN0eworICAgIExpbmtlZExpc3RbXSB4OworICAgIExpbmtlZExpc3QgeTsKKyAgICAKKyAgICB2b2lkIGYoKXsKKwl5LnNldCh4WzBdLmdldCgpKTsKKyAgICB9ICAgCit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDA5L2JlZm9yZS90ZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDA5L2JlZm9yZS90ZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDgzMTQwZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MDkvYmVmb3JlL3Rlc3QuamF2YQpAQCAtMCwwICsxLDE5IEBACitjbGFzcyBMaW5rZWRMaXN0PFQ+eworICAgIFQgdDsKKyAgICBwdWJsaWMgVCBnZXQoKXtyZXR1cm4gdDt9CisgICAgcHVibGljIHZvaWQgc2V0IChUIHQpeworCXRoaXMudCA9IHQ7CisgICAgfSAgICAKK30KKworY2xhc3MgU2ltcGxlIHsKK30KKworY2xhc3MgVGVzdHsKKyAgICBMaW5rZWRMaXN0W10geDsKKyAgICBMaW5rZWRMaXN0IHk7CisgICAgCisgICAgdm9pZCBmKCl7CisJeS5zZXQoeFswXS5nZXQoKSk7CisgICAgfSAgIAorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxMC9hZnRlci9UZXN0LjEuaXRlbXMgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDEwL2FmdGVyL1Rlc3QuMS5pdGVtcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZThhYzM4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxMC9hZnRlci9UZXN0LjEuaXRlbXMKQEAgLTAsMCArMSwyIEBACitMaW5rZWRMaXN0PGphdmEubGFuZy5PYmplY3Q+W11cblBzaUZpZWxkOngKK0xpbmtlZExpc3RcblBzaUZpZWxkOnkKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTAvYWZ0ZXIvVGVzdC5pdGVtcyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTAvYWZ0ZXIvVGVzdC5pdGVtcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNTZhNjM2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxMC9hZnRlci9UZXN0Lml0ZW1zCkBAIC0wLDAgKzEsMiBAQAorTGlua2VkTGlzdFtdXG5Qc2lGaWVsZDp4CitMaW5rZWRMaXN0XG5Qc2lGaWVsZDp5CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDEwL2FmdGVyL3Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTAvYWZ0ZXIvdGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcwYzA0NmEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDEwL2FmdGVyL3Rlc3QuamF2YQpAQCAtMCwwICsxLDIwIEBACitjbGFzcyBMaW5rZWRMaXN0PFQ+eworICAgIFQgdDsKKyAgICBwdWJsaWMgVCBnZXQoKXtyZXR1cm4gdDt9CisgICAgcHVibGljIHZvaWQgc2V0IChUIHQpeworCXRoaXMudCA9IHQ7CisgICAgfSAgICAKK30KKworY2xhc3MgU2ltcGxlIHsKK30KKworY2xhc3MgVGVzdHsKKyAgICBMaW5rZWRMaXN0W10geDsKKyAgICBMaW5rZWRMaXN0IHk7CisgICAgCisgICAgdm9pZCBmKCl7CisJeFswXS5zZXQgKG5ldyBTaW1wbGUoKSk7CisJeFsxXS5zZXQgKG5ldyBUZXN0KCkpOworICAgIH0gICAKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTAvYmVmb3JlL3Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTAvYmVmb3JlL3Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MGMwNDZhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxMC9iZWZvcmUvdGVzdC5qYXZhCkBAIC0wLDAgKzEsMjAgQEAKK2NsYXNzIExpbmtlZExpc3Q8VD57CisgICAgVCB0OworICAgIHB1YmxpYyBUIGdldCgpe3JldHVybiB0O30KKyAgICBwdWJsaWMgdm9pZCBzZXQgKFQgdCl7CisJdGhpcy50ID0gdDsKKyAgICB9ICAgIAorfQorCitjbGFzcyBTaW1wbGUgeworfQorCitjbGFzcyBUZXN0eworICAgIExpbmtlZExpc3RbXSB4OworICAgIExpbmtlZExpc3QgeTsKKyAgICAKKyAgICB2b2lkIGYoKXsKKwl4WzBdLnNldCAobmV3IFNpbXBsZSgpKTsKKwl4WzFdLnNldCAobmV3IFRlc3QoKSk7CisgICAgfSAgIAorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxMDAvYWZ0ZXIvVGVzdC4xLml0ZW1zIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxMDAvYWZ0ZXIvVGVzdC4xLml0ZW1zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE3MjBmN2QKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDEwMC9hZnRlci9UZXN0LjEuaXRlbXMKQEAgLTAsMCArMSBAQAorTGlzdDxqYXZhLmxhbmcuU3RyaW5nPlxuUHNpTG9jYWxWYXJpYWJsZTp4CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDEwMC9hZnRlci9UZXN0Lml0ZW1zIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxMDAvYWZ0ZXIvVGVzdC5pdGVtcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZDIwODhiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxMDAvYWZ0ZXIvVGVzdC5pdGVtcwpAQCAtMCwwICsxIEBACitMaXN0XG5Qc2lMb2NhbFZhcmlhYmxlOngKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTAwL2FmdGVyL3Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTAwL2FmdGVyL3Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YWNlNDgzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxMDAvYWZ0ZXIvdGVzdC5qYXZhCkBAIC0wLDAgKzEsMTEgQEAKK2NsYXNzIExpc3Q8VD4geworICA8QSBleHRlbmRzIFQ+IHZvaWQgZiAoQSBhKXsKKyAgfQorfQorCitjbGFzcyBUZXN0IHsKKyAgdm9pZCBmb28gKCl7CisgICAgTGlzdCB4ID0gbnVsbDsKKyAgICB4LmYoIiIpOworICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDEwMC9iZWZvcmUvdGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxMDAvYmVmb3JlL3Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YWNlNDgzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxMDAvYmVmb3JlL3Rlc3QuamF2YQpAQCAtMCwwICsxLDExIEBACitjbGFzcyBMaXN0PFQ+IHsKKyAgPEEgZXh0ZW5kcyBUPiB2b2lkIGYgKEEgYSl7CisgIH0KK30KKworY2xhc3MgVGVzdCB7CisgIHZvaWQgZm9vICgpeworICAgIExpc3QgeCA9IG51bGw7CisgICAgeC5mKCIiKTsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxMDEvYWZ0ZXIvVGVzdC4xLml0ZW1zIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxMDEvYWZ0ZXIvVGVzdC4xLml0ZW1zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE3MjBmN2QKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDEwMS9hZnRlci9UZXN0LjEuaXRlbXMKQEAgLTAsMCArMSBAQAorTGlzdDxqYXZhLmxhbmcuU3RyaW5nPlxuUHNpTG9jYWxWYXJpYWJsZTp4CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDEwMS9hZnRlci9UZXN0Lml0ZW1zIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxMDEvYWZ0ZXIvVGVzdC5pdGVtcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZDIwODhiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxMDEvYWZ0ZXIvVGVzdC5pdGVtcwpAQCAtMCwwICsxIEBACitMaXN0XG5Qc2lMb2NhbFZhcmlhYmxlOngKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTAxL2FmdGVyL3Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTAxL2FmdGVyL3Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MzBmMzNjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxMDEvYWZ0ZXIvdGVzdC5qYXZhCkBAIC0wLDAgKzEsMTEgQEAKK2NsYXNzIExpc3Q8VD4geworICA8QT4gdm9pZCBmIChUIGEpeworICB9Cit9CisKK2NsYXNzIFRlc3QgeworICB2b2lkIGZvbyAoKXsKKyAgICBMaXN0IHggPSBudWxsOworICAgIHguZigiIik7CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTAxL2JlZm9yZS90ZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDEwMS9iZWZvcmUvdGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkzMGYzM2MKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDEwMS9iZWZvcmUvdGVzdC5qYXZhCkBAIC0wLDAgKzEsMTEgQEAKK2NsYXNzIExpc3Q8VD4geworICA8QT4gdm9pZCBmIChUIGEpeworICB9Cit9CisKK2NsYXNzIFRlc3QgeworICB2b2lkIGZvbyAoKXsKKyAgICBMaXN0IHggPSBudWxsOworICAgIHguZigiIik7CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTAyL2FmdGVyL1Rlc3QuMS5pdGVtcyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTAyL2FmdGVyL1Rlc3QuMS5pdGVtcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZDIwODhiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxMDIvYWZ0ZXIvVGVzdC4xLml0ZW1zCkBAIC0wLDAgKzEgQEAKK0xpc3RcblBzaUxvY2FsVmFyaWFibGU6eApkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxMDIvYWZ0ZXIvVGVzdC5pdGVtcyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTAyL2FmdGVyL1Rlc3QuaXRlbXMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmQyMDg4YgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTAyL2FmdGVyL1Rlc3QuaXRlbXMKQEAgLTAsMCArMSBAQAorTGlzdFxuUHNpTG9jYWxWYXJpYWJsZTp4CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDEwMi9hZnRlci90ZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDEwMi9hZnRlci90ZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGYxZGI5NAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTAyL2FmdGVyL3Rlc3QuamF2YQpAQCAtMCwwICsxLDExIEBACitjbGFzcyBMaXN0PFQ+IHsKKyAgPEE+IHZvaWQgZiAoQSBhKXsKKyAgfQorfQorCitjbGFzcyBUZXN0IHsKKyAgdm9pZCBmb28gKCl7CisgICAgTGlzdCB4ID0gbnVsbDsKKyAgICB4LmYoIiIpOworICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDEwMi9iZWZvcmUvdGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxMDIvYmVmb3JlL3Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZjFkYjk0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxMDIvYmVmb3JlL3Rlc3QuamF2YQpAQCAtMCwwICsxLDExIEBACitjbGFzcyBMaXN0PFQ+IHsKKyAgPEE+IHZvaWQgZiAoQSBhKXsKKyAgfQorfQorCitjbGFzcyBUZXN0IHsKKyAgdm9pZCBmb28gKCl7CisgICAgTGlzdCB4ID0gbnVsbDsKKyAgICB4LmYoIiIpOworICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDEwMy9hZnRlci9UZXN0LjEuaXRlbXMgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDEwMy9hZnRlci9UZXN0LjEuaXRlbXMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTcyMGY3ZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTAzL2FmdGVyL1Rlc3QuMS5pdGVtcwpAQCAtMCwwICsxIEBACitMaXN0PGphdmEubGFuZy5TdHJpbmc+XG5Qc2lMb2NhbFZhcmlhYmxlOngKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTAzL2FmdGVyL1Rlc3QuaXRlbXMgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDEwMy9hZnRlci9UZXN0Lml0ZW1zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJkMjA4OGIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDEwMy9hZnRlci9UZXN0Lml0ZW1zCkBAIC0wLDAgKzEgQEAKK0xpc3RcblBzaUxvY2FsVmFyaWFibGU6eApkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxMDMvYWZ0ZXIvdGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxMDMvYWZ0ZXIvdGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA5YjFmOGEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDEwMy9hZnRlci90ZXN0LmphdmEKQEAgLTAsMCArMSwxNSBAQAorY2xhc3MgTGlzdDxUPiB7CisgIDxBIGV4dGVuZHMgTGlzdDxUPj4gdm9pZCBmIChBIGEpeworICB9Cit9CisKK2NsYXNzIE1pc3QgZXh0ZW5kcyBMaXN0PFN0cmluZz57Cit9CisKK2NsYXNzIFRlc3QgeworICB2b2lkIGZvbyAoKXsKKyAgICBNaXN0IHkgPSBudWxsOworICAgIExpc3QgeCA9IG51bGw7CisgICAgeC5mKHkpOworICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDEwMy9iZWZvcmUvdGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxMDMvYmVmb3JlL3Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wOWIxZjhhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxMDMvYmVmb3JlL3Rlc3QuamF2YQpAQCAtMCwwICsxLDE1IEBACitjbGFzcyBMaXN0PFQ+IHsKKyAgPEEgZXh0ZW5kcyBMaXN0PFQ+PiB2b2lkIGYgKEEgYSl7CisgIH0KK30KKworY2xhc3MgTWlzdCBleHRlbmRzIExpc3Q8U3RyaW5nPnsKK30KKworY2xhc3MgVGVzdCB7CisgIHZvaWQgZm9vICgpeworICAgIE1pc3QgeSA9IG51bGw7CisgICAgTGlzdCB4ID0gbnVsbDsKKyAgICB4LmYoeSk7CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTA0L2FmdGVyL1Rlc3QuMS5pdGVtcyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTA0L2FmdGVyL1Rlc3QuMS5pdGVtcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZmJmOTJmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxMDQvYWZ0ZXIvVGVzdC4xLml0ZW1zCkBAIC0wLDAgKzEgQEAKK2ZvbzxNaXN0PlxuUHNpTG9jYWxWYXJpYWJsZTp4CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDEwNC9hZnRlci9UZXN0Lml0ZW1zIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxMDQvYWZ0ZXIvVGVzdC5pdGVtcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNzdkMzE5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxMDQvYWZ0ZXIvVGVzdC5pdGVtcwpAQCAtMCwwICsxIEBACitmb29cblBzaUxvY2FsVmFyaWFibGU6eApkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxMDQvYWZ0ZXIvdGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxMDQvYWZ0ZXIvdGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgyYTIxZjcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDEwNC9hZnRlci90ZXN0LmphdmEKQEAgLTAsMCArMSwxNyBAQAorY2xhc3MgTGlzdDxUPiB7Cit9CisKK2NsYXNzIE1pc3QgZXh0ZW5kcyBMaXN0PFN0cmluZz57Cit9CisKK2NsYXNzIGZvbzxYIGV4dGVuZHMgTGlzdD57CisgIFggeDsKK30KKworY2xhc3MgVGVzdCB7CisgIHZvaWQgZm9vICgpeworICAgIE1pc3QgeSA9IG51bGw7CisgICAgZm9vIHggPSBudWxsOworICAgIHgueCA9IHk7CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTA0L2JlZm9yZS90ZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDEwNC9iZWZvcmUvdGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgyYTIxZjcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDEwNC9iZWZvcmUvdGVzdC5qYXZhCkBAIC0wLDAgKzEsMTcgQEAKK2NsYXNzIExpc3Q8VD4geworfQorCitjbGFzcyBNaXN0IGV4dGVuZHMgTGlzdDxTdHJpbmc+eworfQorCitjbGFzcyBmb288WCBleHRlbmRzIExpc3Q+eworICBYIHg7Cit9CisKK2NsYXNzIFRlc3QgeworICB2b2lkIGZvbyAoKXsKKyAgICBNaXN0IHkgPSBudWxsOworICAgIGZvbyB4ID0gbnVsbDsKKyAgICB4LnggPSB5OworICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDEwNS9hZnRlci9UZXN0LjEuaXRlbXMgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDEwNS9hZnRlci9UZXN0LjEuaXRlbXMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTUwMTU5MAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTA1L2FmdGVyL1Rlc3QuMS5pdGVtcwpAQCAtMCwwICsxIEBACitNaXN0PGphdmEubGFuZy5TdHJpbmc+XG5Qc2lMb2NhbFZhcmlhYmxlOngKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTA1L2FmdGVyL1Rlc3QuaXRlbXMgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDEwNS9hZnRlci9UZXN0Lml0ZW1zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ3MzE4MzQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDEwNS9hZnRlci9UZXN0Lml0ZW1zCkBAIC0wLDAgKzEgQEAKK01pc3RcblBzaUxvY2FsVmFyaWFibGU6eApkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxMDUvYWZ0ZXIvdGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxMDUvYWZ0ZXIvdGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgyN2FmOTUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDEwNS9hZnRlci90ZXN0LmphdmEKQEAgLTAsMCArMSwxNSBAQAorY2xhc3MgTGlzdDxUPiB7CisgIDxBIGV4dGVuZHMgVD4gdm9pZCBmIChBIHgpeworICB9Cit9CisKK2NsYXNzIE1pc3Q8WD4geworICBMaXN0PFg+IHg7Cit9CisKK2NsYXNzIFRlc3QgeworICB2b2lkIGZvbyAoKXsKKyAgICBNaXN0IHggPSBudWxsOworICAgIHgueC5mKCIiKTsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxMDUvYmVmb3JlL3Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTA1L2JlZm9yZS90ZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODI3YWY5NQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTA1L2JlZm9yZS90ZXN0LmphdmEKQEAgLTAsMCArMSwxNSBAQAorY2xhc3MgTGlzdDxUPiB7CisgIDxBIGV4dGVuZHMgVD4gdm9pZCBmIChBIHgpeworICB9Cit9CisKK2NsYXNzIE1pc3Q8WD4geworICBMaXN0PFg+IHg7Cit9CisKK2NsYXNzIFRlc3QgeworICB2b2lkIGZvbyAoKXsKKyAgICBNaXN0IHggPSBudWxsOworICAgIHgueC5mKCIiKTsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxMDYvYWZ0ZXIvVGVzdC4xLml0ZW1zIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxMDYvYWZ0ZXIvVGVzdC4xLml0ZW1zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJkMjA4OGIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDEwNi9hZnRlci9UZXN0LjEuaXRlbXMKQEAgLTAsMCArMSBAQAorTGlzdFxuUHNpTG9jYWxWYXJpYWJsZTp4CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDEwNi9hZnRlci9UZXN0Lml0ZW1zIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxMDYvYWZ0ZXIvVGVzdC5pdGVtcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZDIwODhiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxMDYvYWZ0ZXIvVGVzdC5pdGVtcwpAQCAtMCwwICsxIEBACitMaXN0XG5Qc2lMb2NhbFZhcmlhYmxlOngKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTA2L2FmdGVyL3Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTA2L2FmdGVyL3Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZjk1ZGMxMwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTA2L2FmdGVyL3Rlc3QuamF2YQpAQCAtMCwwICsxLDEyIEBACitjbGFzcyBMaXN0PFQ+IHsKKyAgPEE+IEFbXSBmIChBW10geCl7CisgICAgcmV0dXJuIHg7CisgIH0KK30KKworY2xhc3MgVGVzdCB7CisgIHZvaWQgZm9vICgpeworICAgIExpc3QgeCA9IG51bGw7CisgICAgU3RyaW5nW10geSA9IChTdHJpbmdbXSkgeC5mKG5ldyBTdHJpbmdbXSB7fSk7CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTA2L2JlZm9yZS90ZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDEwNi9iZWZvcmUvdGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFmOTVkYzEzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxMDYvYmVmb3JlL3Rlc3QuamF2YQpAQCAtMCwwICsxLDEyIEBACitjbGFzcyBMaXN0PFQ+IHsKKyAgPEE+IEFbXSBmIChBW10geCl7CisgICAgcmV0dXJuIHg7CisgIH0KK30KKworY2xhc3MgVGVzdCB7CisgIHZvaWQgZm9vICgpeworICAgIExpc3QgeCA9IG51bGw7CisgICAgU3RyaW5nW10geSA9IChTdHJpbmdbXSkgeC5mKG5ldyBTdHJpbmdbXSB7fSk7CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTA3L2FmdGVyL1Rlc3QuMS5pdGVtcyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTA3L2FmdGVyL1Rlc3QuMS5pdGVtcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNzIwZjdkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxMDcvYWZ0ZXIvVGVzdC4xLml0ZW1zCkBAIC0wLDAgKzEgQEAKK0xpc3Q8amF2YS5sYW5nLlN0cmluZz5cblBzaUxvY2FsVmFyaWFibGU6eApkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxMDcvYWZ0ZXIvVGVzdC5pdGVtcyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTA3L2FmdGVyL1Rlc3QuaXRlbXMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmQyMDg4YgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTA3L2FmdGVyL1Rlc3QuaXRlbXMKQEAgLTAsMCArMSBAQAorTGlzdFxuUHNpTG9jYWxWYXJpYWJsZTp4CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDEwNy9hZnRlci90ZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDEwNy9hZnRlci90ZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjUwNTEwNAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTA3L2FmdGVyL3Rlc3QuamF2YQpAQCAtMCwwICsxLDEyIEBACitjbGFzcyBMaXN0PFQ+IHsKKyAgPEEgZXh0ZW5kcyBUPiBBW10gZiAoQVtdIHgpeworICAgIHJldHVybiB4OworICB9Cit9CisKK2NsYXNzIFRlc3QgeworICB2b2lkIGZvbyAoKXsKKyAgICBMaXN0IHggPSBudWxsOworICAgIFN0cmluZ1tdIHkgPSAoU3RyaW5nW10pIHguZihuZXcgU3RyaW5nW10ge30pOworICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDEwNy9iZWZvcmUvdGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxMDcvYmVmb3JlL3Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNTA1MTA0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxMDcvYmVmb3JlL3Rlc3QuamF2YQpAQCAtMCwwICsxLDEyIEBACitjbGFzcyBMaXN0PFQ+IHsKKyAgPEEgZXh0ZW5kcyBUPiBBW10gZiAoQVtdIHgpeworICAgIHJldHVybiB4OworICB9Cit9CisKK2NsYXNzIFRlc3QgeworICB2b2lkIGZvbyAoKXsKKyAgICBMaXN0IHggPSBudWxsOworICAgIFN0cmluZ1tdIHkgPSAoU3RyaW5nW10pIHguZihuZXcgU3RyaW5nW10ge30pOworICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDEwOC9hZnRlci9UZXN0LjEuaXRlbXMgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDEwOC9hZnRlci9UZXN0LjEuaXRlbXMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTcyMGY3ZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTA4L2FmdGVyL1Rlc3QuMS5pdGVtcwpAQCAtMCwwICsxIEBACitMaXN0PGphdmEubGFuZy5TdHJpbmc+XG5Qc2lMb2NhbFZhcmlhYmxlOngKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTA4L2FmdGVyL1Rlc3QuaXRlbXMgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDEwOC9hZnRlci9UZXN0Lml0ZW1zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJkMjA4OGIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDEwOC9hZnRlci9UZXN0Lml0ZW1zCkBAIC0wLDAgKzEgQEAKK0xpc3RcblBzaUxvY2FsVmFyaWFibGU6eApkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxMDgvYWZ0ZXIvdGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxMDgvYWZ0ZXIvdGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQzMDAyYWUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDEwOC9hZnRlci90ZXN0LmphdmEKQEAgLTAsMCArMSwxNCBAQAorY2xhc3MgTGlzdDxUPiB7CisgIDxBPiBMaXN0PEE+IGYgKExpc3Q8QT4geCl7CisgICAgcmV0dXJuIHg7CisgIH0KK30KKworY2xhc3MgVGVzdCB7CisgIHZvaWQgZm9vICgpeworICAgIExpc3QgeCA9IG51bGw7CisgICAgTGlzdDxTdHJpbmc+IHkgPSBudWxsOworCisgICAgeCA9IHguZih5KTsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxMDgvYmVmb3JlL3Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTA4L2JlZm9yZS90ZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDMwMDJhZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTA4L2JlZm9yZS90ZXN0LmphdmEKQEAgLTAsMCArMSwxNCBAQAorY2xhc3MgTGlzdDxUPiB7CisgIDxBPiBMaXN0PEE+IGYgKExpc3Q8QT4geCl7CisgICAgcmV0dXJuIHg7CisgIH0KK30KKworY2xhc3MgVGVzdCB7CisgIHZvaWQgZm9vICgpeworICAgIExpc3QgeCA9IG51bGw7CisgICAgTGlzdDxTdHJpbmc+IHkgPSBudWxsOworCisgICAgeCA9IHguZih5KTsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxMDkvYWZ0ZXIvVGVzdC4xLml0ZW1zIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxMDkvYWZ0ZXIvVGVzdC4xLml0ZW1zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE3MjBmN2QKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDEwOS9hZnRlci9UZXN0LjEuaXRlbXMKQEAgLTAsMCArMSBAQAorTGlzdDxqYXZhLmxhbmcuU3RyaW5nPlxuUHNpTG9jYWxWYXJpYWJsZTp4CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDEwOS9hZnRlci9UZXN0Lml0ZW1zIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxMDkvYWZ0ZXIvVGVzdC5pdGVtcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZDIwODhiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxMDkvYWZ0ZXIvVGVzdC5pdGVtcwpAQCAtMCwwICsxIEBACitMaXN0XG5Qc2lMb2NhbFZhcmlhYmxlOngKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTA5L2FmdGVyL3Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTA5L2FmdGVyL3Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMGU5M2IyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxMDkvYWZ0ZXIvdGVzdC5qYXZhCkBAIC0wLDAgKzEsMTIgQEAKK2NsYXNzIExpc3Q8VD4geworICA8QT4gTGlzdDxBPiBmIChBW10geCl7CisgICAgcmV0dXJuIHg7CisgIH0KK30KKworY2xhc3MgVGVzdCB7CisgIHZvaWQgZm9vICgpeworICAgIExpc3QgeCA9IG51bGw7CisgICAgeCA9IHguZihuZXcgU3RyaW5nW10ge30pOworICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDEwOS9iZWZvcmUvdGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxMDkvYmVmb3JlL3Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMGU5M2IyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxMDkvYmVmb3JlL3Rlc3QuamF2YQpAQCAtMCwwICsxLDEyIEBACitjbGFzcyBMaXN0PFQ+IHsKKyAgPEE+IExpc3Q8QT4gZiAoQVtdIHgpeworICAgIHJldHVybiB4OworICB9Cit9CisKK2NsYXNzIFRlc3QgeworICB2b2lkIGZvbyAoKXsKKyAgICBMaXN0IHggPSBudWxsOworICAgIHggPSB4LmYobmV3IFN0cmluZ1tdIHt9KTsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxMS9hZnRlci9UZXN0LjEuaXRlbXMgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDExL2FmdGVyL1Rlc3QuMS5pdGVtcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNjAzMjkwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxMS9hZnRlci9UZXN0LjEuaXRlbXMKQEAgLTAsMCArMSwyIEBACitMaW5rZWRMaXN0XG5Qc2lGaWVsZDp4CitMaW5rZWRMaXN0XG5Qc2lGaWVsZDp5CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDExL2FmdGVyL1Rlc3QuaXRlbXMgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDExL2FmdGVyL1Rlc3QuaXRlbXMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzYwMzI5MAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTEvYWZ0ZXIvVGVzdC5pdGVtcwpAQCAtMCwwICsxLDIgQEAKK0xpbmtlZExpc3RcblBzaUZpZWxkOngKK0xpbmtlZExpc3RcblBzaUZpZWxkOnkKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTEvYWZ0ZXIvdGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxMS9hZnRlci90ZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjQ5OTRlMwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTEvYWZ0ZXIvdGVzdC5qYXZhCkBAIC0wLDAgKzEsMTkgQEAKK2NsYXNzIExpbmtlZExpc3Q8VD57CisgICAgVCB0OworICAgIHB1YmxpYyBUIGdldCgpe3JldHVybiB0O30KKyAgICBwdWJsaWMgdm9pZCBzZXQgKFQgdCl7CisJdGhpcy50ID0gdDsKKyAgICB9ICAgIAorfQorCitjbGFzcyBTaW1wbGUgeworfQorCitjbGFzcyBUZXN0eworICAgIExpbmtlZExpc3QgeTsKKyAgICBMaW5rZWRMaXN0IHg7CisgICAgCisgICAgdm9pZCBmKCl7CisgICAgICAgeS5zZXQodHJ1ZSA/IHguZ2V0KCkgOiB4LmdldCgpKTsKKyAgICB9ICAgCit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDExL2JlZm9yZS90ZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDExL2JlZm9yZS90ZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjQ5OTRlMwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTEvYmVmb3JlL3Rlc3QuamF2YQpAQCAtMCwwICsxLDE5IEBACitjbGFzcyBMaW5rZWRMaXN0PFQ+eworICAgIFQgdDsKKyAgICBwdWJsaWMgVCBnZXQoKXtyZXR1cm4gdDt9CisgICAgcHVibGljIHZvaWQgc2V0IChUIHQpeworCXRoaXMudCA9IHQ7CisgICAgfSAgICAKK30KKworY2xhc3MgU2ltcGxlIHsKK30KKworY2xhc3MgVGVzdHsKKyAgICBMaW5rZWRMaXN0IHk7CisgICAgTGlua2VkTGlzdCB4OworICAgIAorICAgIHZvaWQgZigpeworICAgICAgIHkuc2V0KHRydWUgPyB4LmdldCgpIDogeC5nZXQoKSk7CisgICAgfSAgIAorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxMTAvYWZ0ZXIvVGVzdC4xLml0ZW1zIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxMTAvYWZ0ZXIvVGVzdC4xLml0ZW1zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVkYjFkNWIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDExMC9hZnRlci9UZXN0LjEuaXRlbXMKQEAgLTAsMCArMSwzIEBACitMaXN0PGphdmEubGFuZy5TdHJpbmc+XG5Qc2lMb2NhbFZhcmlhYmxlOnkKK0xpc3Q8amF2YS5sYW5nLlN0cmluZz5cbm5ldworTGlzdFxuUHNpTG9jYWxWYXJpYWJsZTp4CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDExMC9hZnRlci9UZXN0Lml0ZW1zIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxMTAvYWZ0ZXIvVGVzdC5pdGVtcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZDg0Yjk5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxMTAvYWZ0ZXIvVGVzdC5pdGVtcwpAQCAtMCwwICsxLDMgQEAKK0xpc3RcblBzaUxvY2FsVmFyaWFibGU6eAorTGlzdFxuUHNpTG9jYWxWYXJpYWJsZTp5CitMaXN0XG5uZXcKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTEwL2FmdGVyL3Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTEwL2FmdGVyL3Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNmRiM2FlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxMTAvYWZ0ZXIvdGVzdC5qYXZhCkBAIC0wLDAgKzEsMTUgQEAKK2NsYXNzIExpc3Q8VD4geworICA8QT4gTGlzdDxBPiBmIChBW10geCl7CisgICAgcmV0dXJuIHg7CisgIH0KKworICA8QiBleHRlbmRzIFQ+IExpc3QoTGlzdDxCPiB5KXsKKyAgfQorfQorCitjbGFzcyBUZXN0IHsKKyAgdm9pZCBmb28gKCl7CisgICAgTGlzdCB4ID0gbnVsbDsKKyAgICBMaXN0IHkgPSBuZXcgTGlzdCh4LmYobmV3IFN0cmluZ1tdIHt9KSk7CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTEwL2JlZm9yZS90ZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDExMC9iZWZvcmUvdGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI2ZGIzYWUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDExMC9iZWZvcmUvdGVzdC5qYXZhCkBAIC0wLDAgKzEsMTUgQEAKK2NsYXNzIExpc3Q8VD4geworICA8QT4gTGlzdDxBPiBmIChBW10geCl7CisgICAgcmV0dXJuIHg7CisgIH0KKworICA8QiBleHRlbmRzIFQ+IExpc3QoTGlzdDxCPiB5KXsKKyAgfQorfQorCitjbGFzcyBUZXN0IHsKKyAgdm9pZCBmb28gKCl7CisgICAgTGlzdCB4ID0gbnVsbDsKKyAgICBMaXN0IHkgPSBuZXcgTGlzdCh4LmYobmV3IFN0cmluZ1tdIHt9KSk7CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTExL2FmdGVyL1Rlc3QuMS5pdGVtcyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTExL2FmdGVyL1Rlc3QuMS5pdGVtcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40Njk5NTE5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxMTEvYWZ0ZXIvVGVzdC4xLml0ZW1zCkBAIC0wLDAgKzEsMiBAQAorTGlzdDxqYXZhLmxhbmcuU3RyaW5nPlxuUHNpTG9jYWxWYXJpYWJsZTp4CitMaXN0PGphdmEubGFuZy5TdHJpbmc+XG5Qc2lMb2NhbFZhcmlhYmxlOnkKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTExL2FmdGVyL1Rlc3QuaXRlbXMgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDExMS9hZnRlci9UZXN0Lml0ZW1zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRiNzAwYzQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDExMS9hZnRlci9UZXN0Lml0ZW1zCkBAIC0wLDAgKzEsMiBAQAorTGlzdFxuUHNpTG9jYWxWYXJpYWJsZTp4CitMaXN0XG5Qc2lMb2NhbFZhcmlhYmxlOnkKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTExL2FmdGVyL3Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTExL2FmdGVyL3Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40OTIxZGQxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxMTEvYWZ0ZXIvdGVzdC5qYXZhCkBAIC0wLDAgKzEsMTUgQEAKK2NsYXNzIExpc3Q8VD4geworICA8QT4gTGlzdDxBPiBmIChMaXN0PEE+IHgpeworICAgIHJldHVybiB4OworICB9CisgIFQgdDsKK30KKworY2xhc3MgVGVzdCB7CisgIHZvaWQgZm9vICgpeworICAgIExpc3QgeCA9IG51bGw7CisgICAgTGlzdCB5ID0geC5mKHgpOworCisgICAgeC50ID0gIiI7CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTExL2JlZm9yZS90ZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDExMS9iZWZvcmUvdGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ5MjFkZDEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDExMS9iZWZvcmUvdGVzdC5qYXZhCkBAIC0wLDAgKzEsMTUgQEAKK2NsYXNzIExpc3Q8VD4geworICA8QT4gTGlzdDxBPiBmIChMaXN0PEE+IHgpeworICAgIHJldHVybiB4OworICB9CisgIFQgdDsKK30KKworY2xhc3MgVGVzdCB7CisgIHZvaWQgZm9vICgpeworICAgIExpc3QgeCA9IG51bGw7CisgICAgTGlzdCB5ID0geC5mKHgpOworCisgICAgeC50ID0gIiI7CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTEyL2FmdGVyL1Rlc3QuMS5pdGVtcyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTEyL2FmdGVyL1Rlc3QuMS5pdGVtcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZDM1ZDk0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxMTIvYWZ0ZXIvVGVzdC4xLml0ZW1zCkBAIC0wLDAgKzEsMiBAQAorTGlzdDxqYXZhLmxhbmcuU3RyaW5nPlxuUHNpTG9jYWxWYXJpYWJsZTp5CitMaXN0PGphdmEubGFuZy5TdHJpbmc+XG5uZXcKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTEyL2FmdGVyL1Rlc3QuaXRlbXMgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDExMi9hZnRlci9UZXN0Lml0ZW1zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAzYTc4NTYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDExMi9hZnRlci9UZXN0Lml0ZW1zCkBAIC0wLDAgKzEsMiBAQAorTGlzdFxuUHNpTG9jYWxWYXJpYWJsZTp5CitMaXN0XG5uZXcKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTEyL2FmdGVyL3Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTEyL2FmdGVyL3Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMWI3Njg5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxMTIvYWZ0ZXIvdGVzdC5qYXZhCkBAIC0wLDAgKzEsMTMgQEAKK2NsYXNzIExpc3Q8VD4geworICA8QSBleHRlbmRzIFQ+IExpc3QoQSB4KXsKKyAgICB0ID0geDsKKyAgfQorCisgIFQgdDsKK30KKworY2xhc3MgVGVzdCB7CisgIHZvaWQgZm9vICgpeworICAgIExpc3QgeSA9IG5ldyBMaXN0KCIiKTsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxMTIvYmVmb3JlL3Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTEyL2JlZm9yZS90ZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzFiNzY4OQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTEyL2JlZm9yZS90ZXN0LmphdmEKQEAgLTAsMCArMSwxMyBAQAorY2xhc3MgTGlzdDxUPiB7CisgIDxBIGV4dGVuZHMgVD4gTGlzdChBIHgpeworICAgIHQgPSB4OworICB9CisKKyAgVCB0OworfQorCitjbGFzcyBUZXN0IHsKKyAgdm9pZCBmb28gKCl7CisgICAgTGlzdCB5ID0gbmV3IExpc3QoIiIpOworICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDExMy9hZnRlci9UZXN0LjEuaXRlbXMgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDExMy9hZnRlci9UZXN0LjEuaXRlbXMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGQzNWQ5NAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTEzL2FmdGVyL1Rlc3QuMS5pdGVtcwpAQCAtMCwwICsxLDIgQEAKK0xpc3Q8amF2YS5sYW5nLlN0cmluZz5cblBzaUxvY2FsVmFyaWFibGU6eQorTGlzdDxqYXZhLmxhbmcuU3RyaW5nPlxubmV3CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDExMy9hZnRlci9UZXN0Lml0ZW1zIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxMTMvYWZ0ZXIvVGVzdC5pdGVtcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wM2E3ODU2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxMTMvYWZ0ZXIvVGVzdC5pdGVtcwpAQCAtMCwwICsxLDIgQEAKK0xpc3RcblBzaUxvY2FsVmFyaWFibGU6eQorTGlzdFxubmV3CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDExMy9hZnRlci90ZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDExMy9hZnRlci90ZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzFiNzY4OQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTEzL2FmdGVyL3Rlc3QuamF2YQpAQCAtMCwwICsxLDEzIEBACitjbGFzcyBMaXN0PFQ+IHsKKyAgPEEgZXh0ZW5kcyBUPiBMaXN0KEEgeCl7CisgICAgdCA9IHg7CisgIH0KKworICBUIHQ7Cit9CisKK2NsYXNzIFRlc3QgeworICB2b2lkIGZvbyAoKXsKKyAgICBMaXN0IHkgPSBuZXcgTGlzdCgiIik7CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTEzL2JlZm9yZS90ZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDExMy9iZWZvcmUvdGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMxYjc2ODkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDExMy9iZWZvcmUvdGVzdC5qYXZhCkBAIC0wLDAgKzEsMTMgQEAKK2NsYXNzIExpc3Q8VD4geworICA8QSBleHRlbmRzIFQ+IExpc3QoQSB4KXsKKyAgICB0ID0geDsKKyAgfQorCisgIFQgdDsKK30KKworY2xhc3MgVGVzdCB7CisgIHZvaWQgZm9vICgpeworICAgIExpc3QgeSA9IG5ldyBMaXN0KCIiKTsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxMTQvYWZ0ZXIvVGVzdC4xLml0ZW1zIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxMTQvYWZ0ZXIvVGVzdC4xLml0ZW1zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg1MjUzMDgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDExNC9hZnRlci9UZXN0LjEuaXRlbXMKQEAgLTAsMCArMSBAQAorTGlzdDxqYXZhLmxhbmcuU3RyaW5nPlxuUHNpTG9jYWxWYXJpYWJsZTp5CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDExNC9hZnRlci9UZXN0Lml0ZW1zIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxMTQvYWZ0ZXIvVGVzdC5pdGVtcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZGUxMWVhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxMTQvYWZ0ZXIvVGVzdC5pdGVtcwpAQCAtMCwwICsxIEBACitMaXN0XG5Qc2lMb2NhbFZhcmlhYmxlOnkKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTE0L2FmdGVyL3Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTE0L2FmdGVyL3Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNjQ2M2QxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxMTQvYWZ0ZXIvdGVzdC5qYXZhCkBAIC0wLDAgKzEsMTIgQEAKK2NsYXNzIExpc3Q8VD4geworICB2b2lkIGYoVFtdIHgpeworICB9Cit9CisKK2NsYXNzIFRlc3QgeworICB2b2lkIGZvbyAoKXsKKyAgICBMaXN0IHkgPSBudWxsOworCisgICAgeS5mKG5ldyBTdHJpbmdbXSB7fSk7CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTE0L2JlZm9yZS90ZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDExNC9iZWZvcmUvdGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI2NDYzZDEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDExNC9iZWZvcmUvdGVzdC5qYXZhCkBAIC0wLDAgKzEsMTIgQEAKK2NsYXNzIExpc3Q8VD4geworICB2b2lkIGYoVFtdIHgpeworICB9Cit9CisKK2NsYXNzIFRlc3QgeworICB2b2lkIGZvbyAoKXsKKyAgICBMaXN0IHkgPSBudWxsOworCisgICAgeS5mKG5ldyBTdHJpbmdbXSB7fSk7CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTE1L2FmdGVyL1Rlc3QuMS5pdGVtcyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTE1L2FmdGVyL1Rlc3QuMS5pdGVtcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NTI1MzA4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxMTUvYWZ0ZXIvVGVzdC4xLml0ZW1zCkBAIC0wLDAgKzEgQEAKK0xpc3Q8amF2YS5sYW5nLlN0cmluZz5cblBzaUxvY2FsVmFyaWFibGU6eQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxMTUvYWZ0ZXIvVGVzdC5pdGVtcyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTE1L2FmdGVyL1Rlc3QuaXRlbXMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGRlMTFlYQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTE1L2FmdGVyL1Rlc3QuaXRlbXMKQEAgLTAsMCArMSBAQAorTGlzdFxuUHNpTG9jYWxWYXJpYWJsZTp5CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDExNS9hZnRlci90ZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDExNS9hZnRlci90ZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTgwMWU5NgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTE1L2FmdGVyL3Rlc3QuamF2YQpAQCAtMCwwICsxLDEzIEBACitjbGFzcyBMaXN0PFQ+IHsKKyAgVFtdIGYoKXsKKyAgICByZXR1cm4gbnVsbDsKKyAgfQorfQorCitjbGFzcyBUZXN0IHsKKyAgdm9pZCBmb28gKCl7CisgICAgTGlzdCB5ID0gbnVsbDsKKworICAgIFN0cmluZ1tdIHggPSAoU3RyaW5nW10pIHkuZigpOworICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDExNS9iZWZvcmUvdGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxMTUvYmVmb3JlL3Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xODAxZTk2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxMTUvYmVmb3JlL3Rlc3QuamF2YQpAQCAtMCwwICsxLDEzIEBACitjbGFzcyBMaXN0PFQ+IHsKKyAgVFtdIGYoKXsKKyAgICByZXR1cm4gbnVsbDsKKyAgfQorfQorCitjbGFzcyBUZXN0IHsKKyAgdm9pZCBmb28gKCl7CisgICAgTGlzdCB5ID0gbnVsbDsKKworICAgIFN0cmluZ1tdIHggPSAoU3RyaW5nW10pIHkuZigpOworICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDExNi9hZnRlci9UZXN0LjEuaXRlbXMgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDExNi9hZnRlci9UZXN0LjEuaXRlbXMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODUyNTMwOAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTE2L2FmdGVyL1Rlc3QuMS5pdGVtcwpAQCAtMCwwICsxIEBACitMaXN0PGphdmEubGFuZy5TdHJpbmc+XG5Qc2lMb2NhbFZhcmlhYmxlOnkKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTE2L2FmdGVyL1Rlc3QuaXRlbXMgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDExNi9hZnRlci9UZXN0Lml0ZW1zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhkZTExZWEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDExNi9hZnRlci9UZXN0Lml0ZW1zCkBAIC0wLDAgKzEgQEAKK0xpc3RcblBzaUxvY2FsVmFyaWFibGU6eQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxMTYvYWZ0ZXIvdGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxMTYvYWZ0ZXIvdGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMyMzgzYzIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDExNi9hZnRlci90ZXN0LmphdmEKQEAgLTAsMCArMSwxMyBAQAorY2xhc3MgTGlzdDxUPiB7CisgIFRbXSBmKCl7CisgICAgcmV0dXJuIG51bGw7CisgIH0KK30KKworY2xhc3MgVGVzdCB7CisgIHZvaWQgZm9vICgpeworICAgIExpc3QgeSA9IG51bGw7CisKKyAgICBTdHJpbmcgeCA9IChTdHJpbmcpICh5LmYoKVswXSk7CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTE2L2JlZm9yZS90ZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDExNi9iZWZvcmUvdGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMyMzgzYzIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDExNi9iZWZvcmUvdGVzdC5qYXZhCkBAIC0wLDAgKzEsMTMgQEAKK2NsYXNzIExpc3Q8VD4geworICBUW10gZigpeworICAgIHJldHVybiBudWxsOworICB9Cit9CisKK2NsYXNzIFRlc3QgeworICB2b2lkIGZvbyAoKXsKKyAgICBMaXN0IHkgPSBudWxsOworCisgICAgU3RyaW5nIHggPSAoU3RyaW5nKSAoeS5mKClbMF0pOworICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDExNy9hZnRlci9UZXN0LjEuaXRlbXMgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDExNy9hZnRlci9UZXN0LjEuaXRlbXMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODUyNTMwOAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTE3L2FmdGVyL1Rlc3QuMS5pdGVtcwpAQCAtMCwwICsxIEBACitMaXN0PGphdmEubGFuZy5TdHJpbmc+XG5Qc2lMb2NhbFZhcmlhYmxlOnkKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTE3L2FmdGVyL1Rlc3QuaXRlbXMgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDExNy9hZnRlci9UZXN0Lml0ZW1zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhkZTExZWEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDExNy9hZnRlci9UZXN0Lml0ZW1zCkBAIC0wLDAgKzEgQEAKK0xpc3RcblBzaUxvY2FsVmFyaWFibGU6eQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxMTcvYWZ0ZXIvdGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxMTcvYWZ0ZXIvdGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAzNWIzMDgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDExNy9hZnRlci90ZXN0LmphdmEKQEAgLTAsMCArMSwxMiBAQAorY2xhc3MgTGlzdDxUPiB7CisgIHN0YXRpYyA8QSwgQiBleHRlbmRzIExpc3Q8QT4+IHZvaWQgZihBIHgsIEIgeSl7CisgIH0KK30KKworY2xhc3MgVGVzdCB7CisgIHZvaWQgZm9vICgpeworICAgIExpc3QgeSA9IG51bGw7CisKKyAgICBMaXN0LmYoIiIsIHkpOworICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDExNy9iZWZvcmUvdGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxMTcvYmVmb3JlL3Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMzViMzA4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxMTcvYmVmb3JlL3Rlc3QuamF2YQpAQCAtMCwwICsxLDEyIEBACitjbGFzcyBMaXN0PFQ+IHsKKyAgc3RhdGljIDxBLCBCIGV4dGVuZHMgTGlzdDxBPj4gdm9pZCBmKEEgeCwgQiB5KXsKKyAgfQorfQorCitjbGFzcyBUZXN0IHsKKyAgdm9pZCBmb28gKCl7CisgICAgTGlzdCB5ID0gbnVsbDsKKworICAgIExpc3QuZigiIiwgeSk7CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTE4L2FmdGVyL1Rlc3QuMS5pdGVtcyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTE4L2FmdGVyL1Rlc3QuMS5pdGVtcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NGU5MDI2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxMTgvYWZ0ZXIvVGVzdC4xLml0ZW1zCkBAIC0wLDAgKzEsMiBAQAorTGlzdDxqYXZhLmxhbmcuU3RyaW5nPlxuUHNpTG9jYWxWYXJpYWJsZTp5CitNaXN0PGphdmEubGFuZy5TdHJpbmc+XG5Qc2lMb2NhbFZhcmlhYmxlOnoKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTE4L2FmdGVyL1Rlc3QuaXRlbXMgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDExOC9hZnRlci9UZXN0Lml0ZW1zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ1MTJmMDEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDExOC9hZnRlci9UZXN0Lml0ZW1zCkBAIC0wLDAgKzEsMiBAQAorTGlzdFxuUHNpTG9jYWxWYXJpYWJsZTp5CitNaXN0XG5Qc2lMb2NhbFZhcmlhYmxlOnoKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTE4L2FmdGVyL3Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTE4L2FmdGVyL3Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNWNiYzZjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxMTgvYWZ0ZXIvdGVzdC5qYXZhCkBAIC0wLDAgKzEsMTkgQEAKK2NsYXNzIExpc3Q8VD4geworICBzdGF0aWMgPEEsIEIgZXh0ZW5kcyBMaXN0PEE+PiB2b2lkIGYoQSB4LCBCIHkpeworICB9CisgIFQgdDsKK30KKworY2xhc3MgTWlzdDxUPiBleHRlbmRzIExpc3Q8VD57Cit9CisKK2NsYXNzIFRlc3QgeworICB2b2lkIGZvbyAoKXsKKyAgICBMaXN0IHkgPSBudWxsOworICAgIE1pc3QgeiA9IG51bGw7CisKKyAgICBMaXN0LmYoeS50LCB6KTsKKworICAgIHoudCA9ICIiOworICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDExOC9iZWZvcmUvdGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxMTgvYmVmb3JlL3Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNWNiYzZjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxMTgvYmVmb3JlL3Rlc3QuamF2YQpAQCAtMCwwICsxLDE5IEBACitjbGFzcyBMaXN0PFQ+IHsKKyAgc3RhdGljIDxBLCBCIGV4dGVuZHMgTGlzdDxBPj4gdm9pZCBmKEEgeCwgQiB5KXsKKyAgfQorICBUIHQ7Cit9CisKK2NsYXNzIE1pc3Q8VD4gZXh0ZW5kcyBMaXN0PFQ+eworfQorCitjbGFzcyBUZXN0IHsKKyAgdm9pZCBmb28gKCl7CisgICAgTGlzdCB5ID0gbnVsbDsKKyAgICBNaXN0IHogPSBudWxsOworCisgICAgTGlzdC5mKHkudCwgeik7CisKKyAgICB6LnQgPSAiIjsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxMTkvYWZ0ZXIvVGVzdC4xLml0ZW1zIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxMTkvYWZ0ZXIvVGVzdC4xLml0ZW1zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVkZGM1ZjEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDExOS9hZnRlci9UZXN0LjEuaXRlbXMKQEAgLTAsMCArMSwzIEBACitMaXN0PGphdmEubGFuZy5TdHJpbmc+XG5Qc2lMb2NhbFZhcmlhYmxlOngKK0xpc3Q8amF2YS5sYW5nLlN0cmluZz5cblBzaUxvY2FsVmFyaWFibGU6eQorTGlzdDxqYXZhLmxhbmcuU3RyaW5nPlxubmV3CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDExOS9hZnRlci9UZXN0Lml0ZW1zIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxMTkvYWZ0ZXIvVGVzdC5pdGVtcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZDg0Yjk5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxMTkvYWZ0ZXIvVGVzdC5pdGVtcwpAQCAtMCwwICsxLDMgQEAKK0xpc3RcblBzaUxvY2FsVmFyaWFibGU6eAorTGlzdFxuUHNpTG9jYWxWYXJpYWJsZTp5CitMaXN0XG5uZXcKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTE5L2FmdGVyL3Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTE5L2FmdGVyL3Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44M2Y0MzNiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxMTkvYWZ0ZXIvdGVzdC5qYXZhCkBAIC0wLDAgKzEsMTUgQEAKK2NsYXNzIExpc3Q8VD4geworICA8QSBleHRlbmRzIFQ+IExpc3QoTGlzdDxBPiB4KXsKKyAgfQorCisgIFQgdDsKK30KKworY2xhc3MgVGVzdCB7CisgIHZvaWQgZm9vICgpeworICAgIExpc3QgeCA9IG51bGw7CisgICAgTGlzdCB5ID0gbmV3IExpc3QoeCk7CisKKyAgICB4LnQgPSAiIjsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxMTkvYmVmb3JlL3Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTE5L2JlZm9yZS90ZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODNmNDMzYgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTE5L2JlZm9yZS90ZXN0LmphdmEKQEAgLTAsMCArMSwxNSBAQAorY2xhc3MgTGlzdDxUPiB7CisgIDxBIGV4dGVuZHMgVD4gTGlzdChMaXN0PEE+IHgpeworICB9CisKKyAgVCB0OworfQorCitjbGFzcyBUZXN0IHsKKyAgdm9pZCBmb28gKCl7CisgICAgTGlzdCB4ID0gbnVsbDsKKyAgICBMaXN0IHkgPSBuZXcgTGlzdCh4KTsKKworICAgIHgudCA9ICIiOworICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDEyL2FmdGVyL1Rlc3QuMS5pdGVtcyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTIvYWZ0ZXIvVGVzdC4xLml0ZW1zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFmYThlYWMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDEyL2FmdGVyL1Rlc3QuMS5pdGVtcwpAQCAtMCwwICsxLDIgQEAKK0xpbmtlZExpc3Q8U2ltcGxlPlxuUHNpRmllbGQ6eAorTGlua2VkTGlzdDxTaW1wbGU+XG5Qc2lGaWVsZDp5CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDEyL2FmdGVyL1Rlc3QuaXRlbXMgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDEyL2FmdGVyL1Rlc3QuaXRlbXMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzYwMzI5MAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTIvYWZ0ZXIvVGVzdC5pdGVtcwpAQCAtMCwwICsxLDIgQEAKK0xpbmtlZExpc3RcblBzaUZpZWxkOngKK0xpbmtlZExpc3RcblBzaUZpZWxkOnkKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTIvYWZ0ZXIvdGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxMi9hZnRlci90ZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODE5MzQyYgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTIvYWZ0ZXIvdGVzdC5qYXZhCkBAIC0wLDAgKzEsMjIgQEAKK2NsYXNzIExpbmtlZExpc3Q8VD57CisgICAgVCB0OworICAgIHB1YmxpYyBUIGdldCgpe3JldHVybiB0O30KKyAgICBwdWJsaWMgdm9pZCBzZXQgKFQgdCl7CisJdGhpcy50ID0gdDsKKyAgICB9ICAgIAorfQorCitjbGFzcyBTaW1wbGUgeworICAgYm9vbGVhbiBmKCl7CisgICAgcmV0dXJuIGZhbHNlOworICAgfQorfQorCitjbGFzcyBUZXN0eworICAgIExpbmtlZExpc3QgeTsKKyAgICBMaW5rZWRMaXN0IHg7CisgICAgCisgICAgdm9pZCBmKCl7CisgICAgICAgeS5zZXQoKChTaW1wbGUpIHkuZ2V0KCkpLmYoKSA/IHguZ2V0KCkgOiB4LmdldCgpKTsKKyAgICB9ICAgCit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDEyL2JlZm9yZS90ZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDEyL2JlZm9yZS90ZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODE5MzQyYgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTIvYmVmb3JlL3Rlc3QuamF2YQpAQCAtMCwwICsxLDIyIEBACitjbGFzcyBMaW5rZWRMaXN0PFQ+eworICAgIFQgdDsKKyAgICBwdWJsaWMgVCBnZXQoKXtyZXR1cm4gdDt9CisgICAgcHVibGljIHZvaWQgc2V0IChUIHQpeworCXRoaXMudCA9IHQ7CisgICAgfSAgICAKK30KKworY2xhc3MgU2ltcGxlIHsKKyAgIGJvb2xlYW4gZigpeworICAgIHJldHVybiBmYWxzZTsKKyAgIH0KK30KKworY2xhc3MgVGVzdHsKKyAgICBMaW5rZWRMaXN0IHk7CisgICAgTGlua2VkTGlzdCB4OworICAgIAorICAgIHZvaWQgZigpeworICAgICAgIHkuc2V0KCgoU2ltcGxlKSB5LmdldCgpKS5mKCkgPyB4LmdldCgpIDogeC5nZXQoKSk7CisgICAgfSAgIAorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxMjAvYWZ0ZXIvVGVzdC4xLml0ZW1zIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxMjAvYWZ0ZXIvVGVzdC4xLml0ZW1zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg1MjUzMDgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDEyMC9hZnRlci9UZXN0LjEuaXRlbXMKQEAgLTAsMCArMSBAQAorTGlzdDxqYXZhLmxhbmcuU3RyaW5nPlxuUHNpTG9jYWxWYXJpYWJsZTp5CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDEyMC9hZnRlci9UZXN0Lml0ZW1zIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxMjAvYWZ0ZXIvVGVzdC5pdGVtcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZGUxMWVhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxMjAvYWZ0ZXIvVGVzdC5pdGVtcwpAQCAtMCwwICsxIEBACitMaXN0XG5Qc2lMb2NhbFZhcmlhYmxlOnkKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTIwL2FmdGVyL3Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTIwL2FmdGVyL3Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YmJkYzZjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxMjAvYWZ0ZXIvdGVzdC5qYXZhCkBAIC0wLDAgKzEsMTUgQEAKK2NsYXNzIEEge30KKworY2xhc3MgTGlzdDxUPiBleHRlbmRzIEEgeworICBUIHQ7Cit9CisKKworY2xhc3MgVGVzdCB7CisgIHZvaWQgZm9vICgpeworICAgIExpc3QgeSA9IG51bGw7CisgICAgQSBhID0geTsKKworICAgIHkudCA9ICIiOworICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDEyMC9iZWZvcmUvdGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxMjAvYmVmb3JlL3Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YmJkYzZjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxMjAvYmVmb3JlL3Rlc3QuamF2YQpAQCAtMCwwICsxLDE1IEBACitjbGFzcyBBIHt9CisKK2NsYXNzIExpc3Q8VD4gZXh0ZW5kcyBBIHsKKyAgVCB0OworfQorCisKK2NsYXNzIFRlc3QgeworICB2b2lkIGZvbyAoKXsKKyAgICBMaXN0IHkgPSBudWxsOworICAgIEEgYSA9IHk7CisKKyAgICB5LnQgPSAiIjsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxMjEvYWZ0ZXIvVGVzdC4xLml0ZW1zIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxMjEvYWZ0ZXIvVGVzdC4xLml0ZW1zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZiYmQ3ZTQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDEyMS9hZnRlci9UZXN0LjEuaXRlbXMKQEAgLTAsMCArMSwyIEBACitBXG5Qc2lMb2NhbFZhcmlhYmxlOmEKK0xpc3Q8amF2YS5sYW5nLlN0cmluZz5cblBzaUxvY2FsVmFyaWFibGU6eQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxMjEvYWZ0ZXIvVGVzdC5pdGVtcyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTIxL2FmdGVyL1Rlc3QuaXRlbXMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTJhNmYyOAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTIxL2FmdGVyL1Rlc3QuaXRlbXMKQEAgLTAsMCArMSwyIEBACitBXG5Qc2lMb2NhbFZhcmlhYmxlOmEKK0xpc3RcblBzaUxvY2FsVmFyaWFibGU6eQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxMjEvYWZ0ZXIvdGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxMjEvYWZ0ZXIvdGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAzNDc2YzcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDEyMS9hZnRlci90ZXN0LmphdmEKQEAgLTAsMCArMSwxNSBAQAorY2xhc3MgQTxYPiB7fQorCitjbGFzcyBMaXN0PFQ+IGV4dGVuZHMgQSB7CisgIFQgdDsKK30KKworCitjbGFzcyBUZXN0IHsKKyAgdm9pZCBmb28gKCl7CisgICAgTGlzdCB5ID0gbnVsbDsKKyAgICBBIGEgPSB5OworCisgICAgeS50ID0gIiI7CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTIxL2JlZm9yZS90ZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDEyMS9iZWZvcmUvdGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAzNDc2YzcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDEyMS9iZWZvcmUvdGVzdC5qYXZhCkBAIC0wLDAgKzEsMTUgQEAKK2NsYXNzIEE8WD4ge30KKworY2xhc3MgTGlzdDxUPiBleHRlbmRzIEEgeworICBUIHQ7Cit9CisKKworY2xhc3MgVGVzdCB7CisgIHZvaWQgZm9vICgpeworICAgIExpc3QgeSA9IG51bGw7CisgICAgQSBhID0geTsKKworICAgIHkudCA9ICIiOworICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDEyMi9hZnRlci9UZXN0LjEuaXRlbXMgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDEyMi9hZnRlci9UZXN0LjEuaXRlbXMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODM0MmJkZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTIyL2FmdGVyL1Rlc3QuMS5pdGVtcwpAQCAtMCwwICsxLDMgQEAKK0xpc3Q8amF2YS5sYW5nLlN0cmluZz5cbnBhcmFtZXRlciAwIG9mIGZvbworTWlzdFxuUHNpTG9jYWxWYXJpYWJsZTp6CitNaXN0XG5Qc2lUeXBlQ2FzdEV4cHJlc3Npb246KE1pc3QpIHkKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTIyL2FmdGVyL1Rlc3QuaXRlbXMgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDEyMi9hZnRlci9UZXN0Lml0ZW1zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI2NGUwNDkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDEyMi9hZnRlci9UZXN0Lml0ZW1zCkBAIC0wLDAgKzEsMyBAQAorTGlzdFxucGFyYW1ldGVyIDAgb2YgZm9vCitNaXN0XG5Qc2lMb2NhbFZhcmlhYmxlOnoKK01pc3RcblBzaVR5cGVDYXN0RXhwcmVzc2lvbjooTWlzdCkgeQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxMjIvYWZ0ZXIvdGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxMjIvYWZ0ZXIvdGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgxYzFjYmY2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxMjIvYWZ0ZXIvdGVzdC5qYXZhCkBAIC0wLDAgKzEsMTMgQEAKK2NsYXNzIExpc3Q8VD4geworICBUIHQ7Cit9CisKK2NsYXNzIE1pc3Q8UT4gZXh0ZW5kcyBMaXN0IHsKK30KKworY2xhc3MgVGVzdCB7CisgIHZvaWQgZm9vIChMaXN0IHkpeworICAgIHkudCA9ICIiOworICAgIE1pc3QgeiA9IChNaXN0KSB5OworICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDEyMi9iZWZvcmUvdGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxMjIvYmVmb3JlL3Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MWMxY2JmNgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTIyL2JlZm9yZS90ZXN0LmphdmEKQEAgLTAsMCArMSwxMyBAQAorY2xhc3MgTGlzdDxUPiB7CisgIFQgdDsKK30KKworY2xhc3MgTWlzdDxRPiBleHRlbmRzIExpc3QgeworfQorCitjbGFzcyBUZXN0IHsKKyAgdm9pZCBmb28gKExpc3QgeSl7CisgICAgeS50ID0gIiI7CisgICAgTWlzdCB6ID0gKE1pc3QpIHk7CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTIzL2FmdGVyL1Rlc3QuMS5pdGVtcyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTIzL2FmdGVyL1Rlc3QuMS5pdGVtcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MmE1Y2IxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxMjMvYWZ0ZXIvVGVzdC4xLml0ZW1zCkBAIC0wLDAgKzEgQEAKK0xpc3Q8amF2YS5sYW5nLlN0cmluZz5cbnBhcmFtZXRlciAwIG9mIGZvbwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxMjMvYWZ0ZXIvVGVzdC5pdGVtcyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTIzL2FmdGVyL1Rlc3QuaXRlbXMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDRkNGNjMAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTIzL2FmdGVyL1Rlc3QuaXRlbXMKQEAgLTAsMCArMSBAQAorTGlzdFxucGFyYW1ldGVyIDAgb2YgZm9vCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDEyMy9hZnRlci90ZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDEyMy9hZnRlci90ZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWExOTdhNAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTIzL2FmdGVyL3Rlc3QuamF2YQpAQCAtMCwwICsxLDEzIEBACitjbGFzcyBMaXN0PFQ+IHsKKyAgVCB0OworfQorCitjbGFzcyBBIGV4dGVuZHMgTGlzdHsKK30KKworY2xhc3MgVGVzdCB7CisgIHZvaWQgZm9vIChMaXN0IHkpeworICAgIHkudCA9ICIiOworICAgIEEgeiA9IChBKSB5OworICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDEyMy9iZWZvcmUvdGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxMjMvYmVmb3JlL3Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45YTE5N2E0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxMjMvYmVmb3JlL3Rlc3QuamF2YQpAQCAtMCwwICsxLDEzIEBACitjbGFzcyBMaXN0PFQ+IHsKKyAgVCB0OworfQorCitjbGFzcyBBIGV4dGVuZHMgTGlzdHsKK30KKworY2xhc3MgVGVzdCB7CisgIHZvaWQgZm9vIChMaXN0IHkpeworICAgIHkudCA9ICIiOworICAgIEEgeiA9IChBKSB5OworICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDEyNC9hZnRlci9UZXN0LjEuaXRlbXMgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDEyNC9hZnRlci9UZXN0LjEuaXRlbXMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWE1NjFlOTEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDEyNC9hZnRlci9UZXN0LjEuaXRlbXMKQEAgLTAsMCArMSBAQAorTWFwW11cblBzaUxvY2FsVmFyaWFibGU6cmVhZFZhcmlhYmxlcwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxMjQvYWZ0ZXIvVGVzdC5pdGVtcyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTI0L2FmdGVyL1Rlc3QuaXRlbXMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWE1NjFlOTEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDEyNC9hZnRlci9UZXN0Lml0ZW1zCkBAIC0wLDAgKzEgQEAKK01hcFtdXG5Qc2lMb2NhbFZhcmlhYmxlOnJlYWRWYXJpYWJsZXMKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTI0L2FmdGVyL3Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTI0L2FmdGVyL3Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMTE1ZGRjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxMjQvYWZ0ZXIvdGVzdC5qYXZhCkBAIC0wLDAgKzEsMTIgQEAKK2ludGVyZmFjZSBNYXA8SywgVj4geworfQorCitjbGFzcyBUSGFzaE1hcCBpbXBsZW1lbnRzIE1hcCB7Cit9CisKK2NsYXNzIFRlc3QgeworICB2b2lkIGYoKSB7CisgICAgTWFwW10gcmVhZFZhcmlhYmxlcyA9IG51bGw7CisgICAgcmVhZFZhcmlhYmxlc1swXSA9IG5ldyBUSGFzaE1hcCgpOworICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDEyNC9iZWZvcmUvdGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxMjQvYmVmb3JlL3Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMTE1ZGRjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxMjQvYmVmb3JlL3Rlc3QuamF2YQpAQCAtMCwwICsxLDEyIEBACitpbnRlcmZhY2UgTWFwPEssIFY+IHsKK30KKworY2xhc3MgVEhhc2hNYXAgaW1wbGVtZW50cyBNYXAgeworfQorCitjbGFzcyBUZXN0IHsKKyAgdm9pZCBmKCkgeworICAgIE1hcFtdIHJlYWRWYXJpYWJsZXMgPSBudWxsOworICAgIHJlYWRWYXJpYWJsZXNbMF0gPSBuZXcgVEhhc2hNYXAoKTsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxMjUvYWZ0ZXIvVGVzdC4xLml0ZW1zIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxMjUvYWZ0ZXIvVGVzdC4xLml0ZW1zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU2ZTgxNmEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDEyNS9hZnRlci9UZXN0LjEuaXRlbXMKQEAgLTAsMCArMSBAQAorTWFwPGphdmEubGFuZy5TdHJpbmcsTGlzdD5cblBzaUxvY2FsVmFyaWFibGU6egpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxMjUvYWZ0ZXIvVGVzdC5pdGVtcyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTI1L2FmdGVyL1Rlc3QuaXRlbXMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGI0ZGUzYwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTI1L2FmdGVyL1Rlc3QuaXRlbXMKQEAgLTAsMCArMSBAQAorTWFwXG5Qc2lMb2NhbFZhcmlhYmxlOnoKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTI1L2FmdGVyL3Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTI1L2FmdGVyL3Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYjc4MTMzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxMjUvYWZ0ZXIvdGVzdC5qYXZhCkBAIC0wLDAgKzEsMjAgQEAKK2NsYXNzIE1hcDxBLCBCPnsKKyAgQSBhOworICBCIGI7Cit9CisKK2NsYXNzIExpc3Q8Qz57Cit9CisKK2NsYXNzIFRlc3QgeworICB2b2lkIGYoKSB7CisgICAgTGlzdDxJbnRlZ2VyPiB4ID0gbnVsbDsKKyAgICBMaXN0PFN0cmluZz4geSA9IG51bGw7CisKKyAgICBNYXAgeiA9IG51bGw7CisKKyAgICB6LmEgPSAiIjsKKyAgICB6LmIgPSB4OworICAgIHouYiA9IHk7CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTI1L2JlZm9yZS90ZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDEyNS9iZWZvcmUvdGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBiNzgxMzMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDEyNS9iZWZvcmUvdGVzdC5qYXZhCkBAIC0wLDAgKzEsMjAgQEAKK2NsYXNzIE1hcDxBLCBCPnsKKyAgQSBhOworICBCIGI7Cit9CisKK2NsYXNzIExpc3Q8Qz57Cit9CisKK2NsYXNzIFRlc3QgeworICB2b2lkIGYoKSB7CisgICAgTGlzdDxJbnRlZ2VyPiB4ID0gbnVsbDsKKyAgICBMaXN0PFN0cmluZz4geSA9IG51bGw7CisKKyAgICBNYXAgeiA9IG51bGw7CisKKyAgICB6LmEgPSAiIjsKKyAgICB6LmIgPSB4OworICAgIHouYiA9IHk7CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTI2L2FmdGVyL1Rlc3QuMS5pdGVtcyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTI2L2FmdGVyL1Rlc3QuMS5pdGVtcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYjRkZTNjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxMjYvYWZ0ZXIvVGVzdC4xLml0ZW1zCkBAIC0wLDAgKzEgQEAKK01hcFxuUHNpTG9jYWxWYXJpYWJsZTp6CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDEyNi9hZnRlci9UZXN0Lml0ZW1zIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxMjYvYWZ0ZXIvVGVzdC5pdGVtcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYjRkZTNjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxMjYvYWZ0ZXIvVGVzdC5pdGVtcwpAQCAtMCwwICsxIEBACitNYXBcblBzaUxvY2FsVmFyaWFibGU6egpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxMjYvYWZ0ZXIvdGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxMjYvYWZ0ZXIvdGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY0MjQ0YjUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDEyNi9hZnRlci90ZXN0LmphdmEKQEAgLTAsMCArMSwxOSBAQAorY2xhc3MgTWFwPEEsIEI+eworICBBIGE7CisgIEIgYjsKK30KKworY2xhc3MgTGlzdDxDPnsKK30KKworY2xhc3MgVGVzdCB7CisgIHZvaWQgZigpIHsKKyAgICBNYXA8U3RyaW5nLCBMaXN0PFN0cmluZz4+IHggPSBudWxsOworICAgIE1hcDxTdHJpbmcsIExpc3Q8SW50ZWdlcj4+IHkgPSBudWxsOworCisgICAgTWFwIHogPSBudWxsOworCisgICAgeiA9IHg7CisgICAgeiA9IHk7CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTI2L2JlZm9yZS90ZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDEyNi9iZWZvcmUvdGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY0MjQ0YjUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDEyNi9iZWZvcmUvdGVzdC5qYXZhCkBAIC0wLDAgKzEsMTkgQEAKK2NsYXNzIE1hcDxBLCBCPnsKKyAgQSBhOworICBCIGI7Cit9CisKK2NsYXNzIExpc3Q8Qz57Cit9CisKK2NsYXNzIFRlc3QgeworICB2b2lkIGYoKSB7CisgICAgTWFwPFN0cmluZywgTGlzdDxTdHJpbmc+PiB4ID0gbnVsbDsKKyAgICBNYXA8U3RyaW5nLCBMaXN0PEludGVnZXI+PiB5ID0gbnVsbDsKKworICAgIE1hcCB6ID0gbnVsbDsKKworICAgIHogPSB4OworICAgIHogPSB5OworICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDEyNy9hZnRlci9UZXN0LjEuaXRlbXMgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDEyNy9hZnRlci9UZXN0LjEuaXRlbXMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjM2NDJjNgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTI3L2FmdGVyL1Rlc3QuMS5pdGVtcwpAQCAtMCwwICsxLDIgQEAKK0xpc3Q8QT5cblBzaUxvY2FsVmFyaWFibGU6YgorTGlzdDxBPlxubmV3CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDEyNy9hZnRlci9UZXN0Lml0ZW1zIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxMjcvYWZ0ZXIvVGVzdC5pdGVtcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZjlmZTE3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxMjcvYWZ0ZXIvVGVzdC5pdGVtcwpAQCAtMCwwICsxLDIgQEAKK0xpc3RcblBzaUxvY2FsVmFyaWFibGU6YgorTGlzdFxubmV3CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDEyNy9hZnRlci90ZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDEyNy9hZnRlci90ZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2RlZTZhMgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTI3L2FmdGVyL3Rlc3QuamF2YQpAQCAtMCwwICsxLDMyIEBACitjbGFzcyBBIHsKK30KKworY2xhc3MgQiBleHRlbmRzIEEgeworfQorCitjbGFzcyBDb2xsZWN0aW9uPEU+eworfQorCitjbGFzcyBMaXN0PFQ+IGV4dGVuZHMgQ29sbGVjdGlvbjxUPiB7CisgIExpc3QoQ29sbGVjdGlvbjxUPiBhKXsKKyAgfQorCisgIFQgdDsKK30KKworY2xhc3MgQ29udmVydG9yeworICAgc3RhdGljIDxYPiBMaXN0PFg+IGFzTGlzdCAoWFtdIHgpeworICAgIHJldHVybiBudWxsOworICAgfQorfQorCitjbGFzcyBUZXN0IHsKKworICB2b2lkIGYoKSB7CisgICAgQVtdIGEgPSBudWxsOworICAgIExpc3QgYiA9IG5ldyBMaXN0KENvbnZlcnRvci5hc0xpc3QoYSkpOworICAgIEIgYyA9IG51bGw7CisgICAgYi50ID0gYzsKKyAgfQorCit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDEyNy9iZWZvcmUvdGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxMjcvYmVmb3JlL3Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZGVlNmEyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxMjcvYmVmb3JlL3Rlc3QuamF2YQpAQCAtMCwwICsxLDMyIEBACitjbGFzcyBBIHsKK30KKworY2xhc3MgQiBleHRlbmRzIEEgeworfQorCitjbGFzcyBDb2xsZWN0aW9uPEU+eworfQorCitjbGFzcyBMaXN0PFQ+IGV4dGVuZHMgQ29sbGVjdGlvbjxUPiB7CisgIExpc3QoQ29sbGVjdGlvbjxUPiBhKXsKKyAgfQorCisgIFQgdDsKK30KKworY2xhc3MgQ29udmVydG9yeworICAgc3RhdGljIDxYPiBMaXN0PFg+IGFzTGlzdCAoWFtdIHgpeworICAgIHJldHVybiBudWxsOworICAgfQorfQorCitjbGFzcyBUZXN0IHsKKworICB2b2lkIGYoKSB7CisgICAgQVtdIGEgPSBudWxsOworICAgIExpc3QgYiA9IG5ldyBMaXN0KENvbnZlcnRvci5hc0xpc3QoYSkpOworICAgIEIgYyA9IG51bGw7CisgICAgYi50ID0gYzsKKyAgfQorCit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDEyOC9hZnRlci9UZXN0LjEuaXRlbXMgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDEyOC9hZnRlci9UZXN0LjEuaXRlbXMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWY0Mzk2MwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTI4L2FmdGVyL1Rlc3QuMS5pdGVtcwpAQCAtMCwwICsxIEBACitDb2xsZWN0aW9uPEI+XG5wYXJhbWV0ZXIgMCBvZiBnCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDEyOC9hZnRlci9UZXN0Lml0ZW1zIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxMjgvYWZ0ZXIvVGVzdC5pdGVtcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYzA4OWZhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxMjgvYWZ0ZXIvVGVzdC5pdGVtcwpAQCAtMCwwICsxIEBACitDb2xsZWN0aW9uXG5wYXJhbWV0ZXIgMCBvZiBnCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDEyOC9hZnRlci90ZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDEyOC9hZnRlci90ZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWZlZmE4NgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTI4L2FmdGVyL3Rlc3QuamF2YQpAQCAtMCwwICsxLDIxIEBACitjbGFzcyBBIHt9CitjbGFzcyBCIGV4dGVuZHMgQSB7fQorCitjbGFzcyBDb2xsZWN0aW9uPFQ+eworICBUIHQ7Cit9CisKK2NsYXNzIFNldDxYPiBleHRlbmRzIENvbGxlY3Rpb248WD57CisKK30KKworY2xhc3MgVGVzdCB7CisgIHZvaWQgZyhDb2xsZWN0aW9uIGFuY2VzdG9ycykgeworICAgIEEgYSA9IChBKSBhbmNlc3RvcnMudDsKKyAgfQorCisgIHZvaWQgZigpIHsKKyAgICBTZXQ8Qj4geCA9IG51bGw7CisgICAgZyh4KTsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxMjgvYmVmb3JlL3Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTI4L2JlZm9yZS90ZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWZlZmE4NgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTI4L2JlZm9yZS90ZXN0LmphdmEKQEAgLTAsMCArMSwyMSBAQAorY2xhc3MgQSB7fQorY2xhc3MgQiBleHRlbmRzIEEge30KKworY2xhc3MgQ29sbGVjdGlvbjxUPnsKKyAgVCB0OworfQorCitjbGFzcyBTZXQ8WD4gZXh0ZW5kcyBDb2xsZWN0aW9uPFg+eworCit9CisKK2NsYXNzIFRlc3QgeworICB2b2lkIGcoQ29sbGVjdGlvbiBhbmNlc3RvcnMpIHsKKyAgICBBIGEgPSAoQSkgYW5jZXN0b3JzLnQ7CisgIH0KKworICB2b2lkIGYoKSB7CisgICAgU2V0PEI+IHggPSBudWxsOworICAgIGcoeCk7CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTI5L2FmdGVyL1Rlc3QuMS5pdGVtcyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTI5L2FmdGVyL1Rlc3QuMS5pdGVtcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NGQzZTc1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxMjkvYWZ0ZXIvVGVzdC4xLml0ZW1zCkBAIC0wLDAgKzEsMiBAQAorQ29sbGVjdGlvbjxCPlxucGFyYW1ldGVyIDAgb2YgZworU2V0PEI+XG5Qc2lMb2NhbFZhcmlhYmxlOngKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTI5L2FmdGVyL1Rlc3QuaXRlbXMgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDEyOS9hZnRlci9UZXN0Lml0ZW1zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk1OTBhZmUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDEyOS9hZnRlci9UZXN0Lml0ZW1zCkBAIC0wLDAgKzEsMiBAQAorQ29sbGVjdGlvblxucGFyYW1ldGVyIDAgb2YgZworU2V0XG5Qc2lMb2NhbFZhcmlhYmxlOngKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTI5L2FmdGVyL3Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTI5L2FmdGVyL3Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMjFlYTgzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxMjkvYWZ0ZXIvdGVzdC5qYXZhCkBAIC0wLDAgKzEsMjIgQEAKK2NsYXNzIEEge30KK2NsYXNzIEIgZXh0ZW5kcyBBIHt9CisKK2NsYXNzIENvbGxlY3Rpb248VD57CisgIFQgdDsKK30KKworY2xhc3MgU2V0PFg+IGV4dGVuZHMgQ29sbGVjdGlvbjxYPnsKKworfQorCitjbGFzcyBUZXN0IHsKKyAgdm9pZCBnKENvbGxlY3Rpb24gYW5jZXN0b3JzKSB7CisgICAgQSBhID0gKEEpIGFuY2VzdG9ycy50OworICB9CisKKyAgdm9pZCBmKCkgeworICAgIFNldCB4ID0gbnVsbDsKKyAgICB4LnQgPSBuZXcgQigpOworICAgIGcoeCk7CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTI5L2JlZm9yZS90ZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDEyOS9iZWZvcmUvdGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIyMWVhODMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDEyOS9iZWZvcmUvdGVzdC5qYXZhCkBAIC0wLDAgKzEsMjIgQEAKK2NsYXNzIEEge30KK2NsYXNzIEIgZXh0ZW5kcyBBIHt9CisKK2NsYXNzIENvbGxlY3Rpb248VD57CisgIFQgdDsKK30KKworY2xhc3MgU2V0PFg+IGV4dGVuZHMgQ29sbGVjdGlvbjxYPnsKKworfQorCitjbGFzcyBUZXN0IHsKKyAgdm9pZCBnKENvbGxlY3Rpb24gYW5jZXN0b3JzKSB7CisgICAgQSBhID0gKEEpIGFuY2VzdG9ycy50OworICB9CisKKyAgdm9pZCBmKCkgeworICAgIFNldCB4ID0gbnVsbDsKKyAgICB4LnQgPSBuZXcgQigpOworICAgIGcoeCk7CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTMvYWZ0ZXIvVGVzdC4xLml0ZW1zIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxMy9hZnRlci9UZXN0LjEuaXRlbXMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmQzZTQ2MzcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDEzL2FmdGVyL1Rlc3QuMS5pdGVtcwpAQCAtMCwwICsxLDMgQEAKK0xpbmtlZExpc3Q8TGlua2VkTGlzdD5cblBzaUZpZWxkOnkKK0xpbmtlZExpc3RcblBzaUZpZWxkOngKK0xpbmtlZExpc3RcblBzaVR5cGVDYXN0RXhwcmVzc2lvbjooTGlua2VkTGlzdCkgeS5nZXQoKQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxMy9hZnRlci9UZXN0Lml0ZW1zIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxMy9hZnRlci9UZXN0Lml0ZW1zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFmNjg3MjAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDEzL2FmdGVyL1Rlc3QuaXRlbXMKQEAgLTAsMCArMSwzIEBACitMaW5rZWRMaXN0XG5Qc2lGaWVsZDp4CitMaW5rZWRMaXN0XG5Qc2lGaWVsZDp5CitMaW5rZWRMaXN0XG5Qc2lUeXBlQ2FzdEV4cHJlc3Npb246KExpbmtlZExpc3QpIHkuZ2V0KCkKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTMvYWZ0ZXIvdGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxMy9hZnRlci90ZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjE0Njc1NgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTMvYWZ0ZXIvdGVzdC5qYXZhCkBAIC0wLDAgKzEsMjIgQEAKK2NsYXNzIExpbmtlZExpc3Q8VD57CisgICAgVCB0OworICAgIHB1YmxpYyBUIGdldCgpe3JldHVybiB0O30KKyAgICBwdWJsaWMgdm9pZCBzZXQgKFQgdCl7CisJdGhpcy50ID0gdDsKKyAgICB9ICAgIAorfQorCitjbGFzcyBTaW1wbGUgeworICAgYm9vbGVhbiBmKCl7CisgICAgcmV0dXJuIGZhbHNlOworICAgfQorfQorCitjbGFzcyBUZXN0eworICAgIExpbmtlZExpc3QgeTsKKyAgICBMaW5rZWRMaXN0IHg7CisgICAgCisgICAgdm9pZCBmKCl7CisgICAgICB4ID0gKExpbmtlZExpc3QpIHkuZ2V0KCk7CisgICAgfSAgIAorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxMy9iZWZvcmUvdGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxMy9iZWZvcmUvdGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIxNDY3NTYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDEzL2JlZm9yZS90ZXN0LmphdmEKQEAgLTAsMCArMSwyMiBAQAorY2xhc3MgTGlua2VkTGlzdDxUPnsKKyAgICBUIHQ7CisgICAgcHVibGljIFQgZ2V0KCl7cmV0dXJuIHQ7fQorICAgIHB1YmxpYyB2b2lkIHNldCAoVCB0KXsKKwl0aGlzLnQgPSB0OworICAgIH0gICAgCit9CisKK2NsYXNzIFNpbXBsZSB7CisgICBib29sZWFuIGYoKXsKKyAgICByZXR1cm4gZmFsc2U7CisgICB9Cit9CisKK2NsYXNzIFRlc3R7CisgICAgTGlua2VkTGlzdCB5OworICAgIExpbmtlZExpc3QgeDsKKyAgICAKKyAgICB2b2lkIGYoKXsKKyAgICAgIHggPSAoTGlua2VkTGlzdCkgeS5nZXQoKTsKKyAgICB9ICAgCit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDEzMC9hZnRlci9UZXN0LjEuaXRlbXMgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDEzMC9hZnRlci9UZXN0LjEuaXRlbXMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGI5MGNiYwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTMwL2FmdGVyL1Rlc3QuMS5pdGVtcwpAQCAtMCwwICsxLDMgQEAKK0FycmF5TGlzdFxuUHNpTG9jYWxWYXJpYWJsZTpyZXF1ZXN0cworQXJyYXlMaXN0XG5Qc2lUeXBlQ2FzdEV4cHJlc3Npb246KEFycmF5TGlzdClyZXF1ZXN0TWFwLmdldChuZXcgQSgpKQorTWFwPEEsQXJyYXlMaXN0PEI+PlxucGFyYW1ldGVyIDAgb2YgZgpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxMzAvYWZ0ZXIvVGVzdC5pdGVtcyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTMwL2FmdGVyL1Rlc3QuaXRlbXMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWI3OThhMQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTMwL2FmdGVyL1Rlc3QuaXRlbXMKQEAgLTAsMCArMSwzIEBACitBcnJheUxpc3RcblBzaUxvY2FsVmFyaWFibGU6cmVxdWVzdHMKK0FycmF5TGlzdFxuUHNpVHlwZUNhc3RFeHByZXNzaW9uOihBcnJheUxpc3QpcmVxdWVzdE1hcC5nZXQobmV3IEEoKSkKK01hcFxucGFyYW1ldGVyIDAgb2YgZgpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxMzAvYWZ0ZXIvdGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxMzAvYWZ0ZXIvdGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFhN2RiNGYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDEzMC9hZnRlci90ZXN0LmphdmEKQEAgLTAsMCArMSwyNSBAQAorY2xhc3MgQSB7fQorY2xhc3MgQiB7fQorCitjbGFzcyBNYXA8WCwgWT57CisgWSBnZXQgKFggeCl7CisgIHJldHVybiBudWxsOworIH0KK30KKworaW50ZXJmYWNlIExpc3Q8VD4geworICB2b2lkIGFkZChUIHQpOworfQorCitjbGFzcyBBcnJheUxpc3Q8RT4gaW1wbGVtZW50cyBMaXN0PEU+eworICBwdWJsaWMgdm9pZCBhZGQoRSBlKXsKKyAgfQorfQorCitwdWJsaWMgY2xhc3MgVGVzdCB7CisgIHByaXZhdGUgc3RhdGljIHZvaWQgZihNYXAgcmVxdWVzdE1hcCkgeworICAgIEFycmF5TGlzdCByZXF1ZXN0cyA9IChBcnJheUxpc3QpcmVxdWVzdE1hcC5nZXQobmV3IEEoKSk7CisgICAgcmVxdWVzdHMuYWRkKG5ldyBPYmplY3QoKSk7CisgICAgZihuZXcgTWFwPEEsIEFycmF5TGlzdDxCPj4gKCkpOworICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDEzMC9iZWZvcmUvdGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxMzAvYmVmb3JlL3Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYTdkYjRmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxMzAvYmVmb3JlL3Rlc3QuamF2YQpAQCAtMCwwICsxLDI1IEBACitjbGFzcyBBIHt9CitjbGFzcyBCIHt9CisKK2NsYXNzIE1hcDxYLCBZPnsKKyBZIGdldCAoWCB4KXsKKyAgcmV0dXJuIG51bGw7CisgfQorfQorCitpbnRlcmZhY2UgTGlzdDxUPiB7CisgIHZvaWQgYWRkKFQgdCk7Cit9CisKK2NsYXNzIEFycmF5TGlzdDxFPiBpbXBsZW1lbnRzIExpc3Q8RT57CisgIHB1YmxpYyB2b2lkIGFkZChFIGUpeworICB9Cit9CisKK3B1YmxpYyBjbGFzcyBUZXN0IHsKKyAgcHJpdmF0ZSBzdGF0aWMgdm9pZCBmKE1hcCByZXF1ZXN0TWFwKSB7CisgICAgQXJyYXlMaXN0IHJlcXVlc3RzID0gKEFycmF5TGlzdClyZXF1ZXN0TWFwLmdldChuZXcgQSgpKTsKKyAgICByZXF1ZXN0cy5hZGQobmV3IE9iamVjdCgpKTsKKyAgICBmKG5ldyBNYXA8QSwgQXJyYXlMaXN0PEI+PiAoKSk7CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTMxL2FmdGVyL1Rlc3QuMS5pdGVtcyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTMxL2FmdGVyL1Rlc3QuMS5pdGVtcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZjIyYjRhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxMzEvYWZ0ZXIvVGVzdC4xLml0ZW1zCkBAIC0wLDAgKzEsMiBAQAorTGlzdDxqYXZhLmxhbmcuU3RyaW5nPltdXG5yZXR1cm4gb2YgZgorTXlMaXN0PGphdmEubGFuZy5TdHJpbmc+W11cblBzaUZpZWxkOmwKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTMxL2FmdGVyL1Rlc3QuaXRlbXMgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDEzMS9hZnRlci9UZXN0Lml0ZW1zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQxMGY4YzQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDEzMS9hZnRlci9UZXN0Lml0ZW1zCkBAIC0wLDAgKzEsMiBAQAorTGlzdFtdXG5yZXR1cm4gb2YgZgorTXlMaXN0W11cblBzaUZpZWxkOmwKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTMxL2FmdGVyL3Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTMxL2FmdGVyL3Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NTI1OGJjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxMzEvYWZ0ZXIvdGVzdC5qYXZhCkBAIC0wLDAgKzEsMTkgQEAKK2NsYXNzIExpc3Q8VD4geworICAgVCB0OworfQorCitjbGFzcyBNeUxpc3Q8UD4gZXh0ZW5kcyBMaXN0PFA+eworCit9CisKK3B1YmxpYyBjbGFzcyBUZXN0IHsKKyAgTXlMaXN0W10gbDsKKworICBMaXN0W10gZiAoKXsKKyAgICByZXR1cm4gbDsKKyAgfQorCisgIHZvaWQgZygpeworICAgIGxbMF0udCA9ICIiOworICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDEzMS9iZWZvcmUvdGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxMzEvYmVmb3JlL3Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NTI1OGJjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxMzEvYmVmb3JlL3Rlc3QuamF2YQpAQCAtMCwwICsxLDE5IEBACitjbGFzcyBMaXN0PFQ+IHsKKyAgIFQgdDsKK30KKworY2xhc3MgTXlMaXN0PFA+IGV4dGVuZHMgTGlzdDxQPnsKKworfQorCitwdWJsaWMgY2xhc3MgVGVzdCB7CisgIE15TGlzdFtdIGw7CisKKyAgTGlzdFtdIGYgKCl7CisgICAgcmV0dXJuIGw7CisgIH0KKworICB2b2lkIGcoKXsKKyAgICBsWzBdLnQgPSAiIjsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxMzIvYWZ0ZXIvVGVzdC4xLml0ZW1zIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxMzIvYWZ0ZXIvVGVzdC4xLml0ZW1zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZjYjlhN2EKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDEzMi9hZnRlci9UZXN0LjEuaXRlbXMKQEAgLTAsMCArMSw2IEBACitUZXN0Lkxpc3Q8VGVzdC5BPlxubmV3CitUZXN0Lkxpc3Q8VGVzdC5BPlxubmV3CitUZXN0Lkxpc3Q8VGVzdC5BPlxucmV0dXJuIG9mIGYKK1Rlc3QuTGlzdDxUZXN0LkE+XG5yZXR1cm4gb2YgZgorVGVzdC5MaXN0PFRlc3QuQT5cbnJldHVybiBvZiBmCitUZXN0Lkxpc3Q8VGVzdC5BPlxucmV0dXJuIG9mIGYKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTMyL2FmdGVyL1Rlc3QuaXRlbXMgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDEzMi9hZnRlci9UZXN0Lml0ZW1zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNhY2UxNzQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDEzMi9hZnRlci9UZXN0Lml0ZW1zCkBAIC0wLDAgKzEsNiBAQAorVGVzdC5MaXN0XG5uZXcKK1Rlc3QuTGlzdFxubmV3CitUZXN0Lkxpc3RcbnJldHVybiBvZiBmCitUZXN0Lkxpc3RcbnJldHVybiBvZiBmCitUZXN0Lkxpc3RcbnJldHVybiBvZiBmCitUZXN0Lkxpc3RcbnJldHVybiBvZiBmCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDEzMi9hZnRlci90ZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDEzMi9hZnRlci90ZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTA4Y2M1YQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTMyL2FmdGVyL3Rlc3QuamF2YQpAQCAtMCwwICsxLDMyIEBACitwdWJsaWMgY2xhc3MgVGVzdCB7CisgIGNsYXNzIEF7fQorICBjbGFzcyBCIGV4dGVuZHMgQXt9CisKKyAgY2xhc3MgTGlzdDxYPiB7CisgICAgTGlzdChYIHgpeworCisgICAgfQorICB9CisKKyAgaW50ZXJmYWNlIEkgeworICAgIExpc3QgZiAoKTsKKyAgfQorCisgIEkgaTEgPSBuZXcgSSgpeworICAgIHB1YmxpYyBMaXN0IGYoKXsKKyAgICAgIHJldHVybiBpMi5mKCk7CisgICAgfQorICB9OworCisgIEkgaTIgPSBuZXcgSSgpeworICAgIHB1YmxpYyBMaXN0IGYoKXsKKyAgICAgIHJldHVybiBuZXcgTGlzdChuZXcgQSgpKTsKKyAgICB9CisgIH07CisKKyAgSSBpMyA9IG5ldyBJKCl7CisgICAgcHVibGljIExpc3QgZigpeworICAgICAgcmV0dXJuIG5ldyBMaXN0KG5ldyBCKCkpOworICAgIH0KKyAgfTsKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTMyL2JlZm9yZS90ZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDEzMi9iZWZvcmUvdGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUwOGNjNWEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDEzMi9iZWZvcmUvdGVzdC5qYXZhCkBAIC0wLDAgKzEsMzIgQEAKK3B1YmxpYyBjbGFzcyBUZXN0IHsKKyAgY2xhc3MgQXt9CisgIGNsYXNzIEIgZXh0ZW5kcyBBe30KKworICBjbGFzcyBMaXN0PFg+IHsKKyAgICBMaXN0KFggeCl7CisKKyAgICB9CisgIH0KKworICBpbnRlcmZhY2UgSSB7CisgICAgTGlzdCBmICgpOworICB9CisKKyAgSSBpMSA9IG5ldyBJKCl7CisgICAgcHVibGljIExpc3QgZigpeworICAgICAgcmV0dXJuIGkyLmYoKTsKKyAgICB9CisgIH07CisKKyAgSSBpMiA9IG5ldyBJKCl7CisgICAgcHVibGljIExpc3QgZigpeworICAgICAgcmV0dXJuIG5ldyBMaXN0KG5ldyBBKCkpOworICAgIH0KKyAgfTsKKworICBJIGkzID0gbmV3IEkoKXsKKyAgICBwdWJsaWMgTGlzdCBmKCl7CisgICAgICByZXR1cm4gbmV3IExpc3QobmV3IEIoKSk7CisgICAgfQorICB9OworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxMzMvYWZ0ZXIvVGVzdC4xLml0ZW1zIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxMzMvYWZ0ZXIvVGVzdC4xLml0ZW1zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI0NTczODIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDEzMy9hZnRlci9UZXN0LjEuaXRlbXMKQEAgLTAsMCArMSBAQAorTGlzdDxJPlxuUHNpTG9jYWxWYXJpYWJsZTp4CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDEzMy9hZnRlci9UZXN0Lml0ZW1zIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxMzMvYWZ0ZXIvVGVzdC5pdGVtcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZDIwODhiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxMzMvYWZ0ZXIvVGVzdC5pdGVtcwpAQCAtMCwwICsxIEBACitMaXN0XG5Qc2lMb2NhbFZhcmlhYmxlOngKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTMzL2FmdGVyL3Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTMzL2FmdGVyL3Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMjJiNDExCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxMzMvYWZ0ZXIvdGVzdC5qYXZhCkBAIC0wLDAgKzEsMTMgQEAKK2NsYXNzIExpc3Q8WD57CisgIFggeDsKK30KKworaW50ZXJmYWNlIEkge30KKworcHVibGljIGNsYXNzIFRlc3QgeworICB2b2lkIGZvbygpeworICAgIExpc3QgeCA9IG51bGw7CisgICAgeC54ID0gbmV3IEkoKXsKKyAgICB9OworICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDEzMy9iZWZvcmUvdGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxMzMvYmVmb3JlL3Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMjJiNDExCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxMzMvYmVmb3JlL3Rlc3QuamF2YQpAQCAtMCwwICsxLDEzIEBACitjbGFzcyBMaXN0PFg+eworICBYIHg7Cit9CisKK2ludGVyZmFjZSBJIHt9CisKK3B1YmxpYyBjbGFzcyBUZXN0IHsKKyAgdm9pZCBmb28oKXsKKyAgICBMaXN0IHggPSBudWxsOworICAgIHgueCA9IG5ldyBJKCl7CisgICAgfTsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxMzQvYWZ0ZXIvVGVzdC4xLml0ZW1zIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxMzQvYWZ0ZXIvVGVzdC4xLml0ZW1zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgzODdjNDEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDEzNC9hZnRlci9UZXN0LjEuaXRlbXMKQEAgLTAsMCArMSBAQAorQXJyYXlMaXN0XG5Qc2lMb2NhbFZhcmlhYmxlOnMKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTM0L2FmdGVyL1Rlc3QuaXRlbXMgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDEzNC9hZnRlci9UZXN0Lml0ZW1zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgzODdjNDEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDEzNC9hZnRlci9UZXN0Lml0ZW1zCkBAIC0wLDAgKzEgQEAKK0FycmF5TGlzdFxuUHNpTG9jYWxWYXJpYWJsZTpzCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDEzNC9hZnRlci90ZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDEzNC9hZnRlci90ZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2RmMjg1NQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTM0L2FmdGVyL3Rlc3QuamF2YQpAQCAtMCwwICsxLDIwIEBACitpbnRlcmZhY2UgTGlzdDxUPnt9CisKK2NsYXNzIEFycmF5TGlzdDxQPiBpbXBsZW1lbnRzIExpc3Q8UD57fQorCitjbGFzcyBQYWlyPFgsIFk+e30KKworY2xhc3MgQyB7fQorY2xhc3MgQSB7fQorY2xhc3MgQiBleHRlbmRzIEF7fQorCitjbGFzcyBUZXN0IHsKKyAgdm9pZCBidWlsZEFsbE1hcHMoKXsKKyAgICBMaXN0PFBhaXI8QiwgQz4+IG1ldGhvZHMgPSBuZXcgQXJyYXlMaXN0PFBhaXI8QiwgQz4+KCk7CisgICAgQXJyYXlMaXN0IHMgPSBudWxsOworICAgIGcobWV0aG9kcyk7CisgIH0KKworICA8VD4gdm9pZCBnKExpc3Q8UGFpcjxULCBDPj4gbGlzdCkgeworICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDEzNC9iZWZvcmUvdGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxMzQvYmVmb3JlL3Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZGYyODU1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxMzQvYmVmb3JlL3Rlc3QuamF2YQpAQCAtMCwwICsxLDIwIEBACitpbnRlcmZhY2UgTGlzdDxUPnt9CisKK2NsYXNzIEFycmF5TGlzdDxQPiBpbXBsZW1lbnRzIExpc3Q8UD57fQorCitjbGFzcyBQYWlyPFgsIFk+e30KKworY2xhc3MgQyB7fQorY2xhc3MgQSB7fQorY2xhc3MgQiBleHRlbmRzIEF7fQorCitjbGFzcyBUZXN0IHsKKyAgdm9pZCBidWlsZEFsbE1hcHMoKXsKKyAgICBMaXN0PFBhaXI8QiwgQz4+IG1ldGhvZHMgPSBuZXcgQXJyYXlMaXN0PFBhaXI8QiwgQz4+KCk7CisgICAgQXJyYXlMaXN0IHMgPSBudWxsOworICAgIGcobWV0aG9kcyk7CisgIH0KKworICA8VD4gdm9pZCBnKExpc3Q8UGFpcjxULCBDPj4gbGlzdCkgeworICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDEzNS9hZnRlci9UZXN0LjEuaXRlbXMgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDEzNS9hZnRlci9UZXN0LjEuaXRlbXMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODhmYmU1MQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTM1L2FmdGVyL1Rlc3QuMS5pdGVtcwpAQCAtMCwwICsxIEBACitMaXN0PFBhaXI8amF2YS5sYW5nLlN0cmluZyxqYXZhLmxhbmcuSW50ZWdlcj4+XG5Qc2lMb2NhbFZhcmlhYmxlOmEKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTM1L2FmdGVyL1Rlc3QuaXRlbXMgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDEzNS9hZnRlci9UZXN0Lml0ZW1zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBiYzIwNTIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDEzNS9hZnRlci9UZXN0Lml0ZW1zCkBAIC0wLDAgKzEgQEAKK0xpc3Q8UGFpcj5cblBzaUxvY2FsVmFyaWFibGU6YQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxMzUvYWZ0ZXIvdGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxMzUvYWZ0ZXIvdGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNhMjUzZWQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDEzNS9hZnRlci90ZXN0LmphdmEKQEAgLTAsMCArMSwxNyBAQAorY2xhc3MgTGlzdDxQPiB7CisgIFAgcDsKK30KKworY2xhc3MgUGFpcjxYLCBZPnsKKyAgWCB4OworICBZIHk7Cit9CisKK2NsYXNzIFRlc3QgeworICB2b2lkIGYoKXsKKyAgICBMaXN0PFBhaXI+IGEgPSBudWxsOworCisgICAgYS5wLnggPSAiIjsKKyAgICBhLnAueSA9IG5ldyBJbnRlZ2VyKDMpOworICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDEzNS9iZWZvcmUvdGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxMzUvYmVmb3JlL3Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYTI1M2VkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxMzUvYmVmb3JlL3Rlc3QuamF2YQpAQCAtMCwwICsxLDE3IEBACitjbGFzcyBMaXN0PFA+IHsKKyAgUCBwOworfQorCitjbGFzcyBQYWlyPFgsIFk+eworICBYIHg7CisgIFkgeTsKK30KKworY2xhc3MgVGVzdCB7CisgIHZvaWQgZigpeworICAgIExpc3Q8UGFpcj4gYSA9IG51bGw7CisKKyAgICBhLnAueCA9ICIiOworICAgIGEucC55ID0gbmV3IEludGVnZXIoMyk7CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTM2L2FmdGVyL1Rlc3QuMS5pdGVtcyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTM2L2FmdGVyL1Rlc3QuMS5pdGVtcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44OGZiZTUxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxMzYvYWZ0ZXIvVGVzdC4xLml0ZW1zCkBAIC0wLDAgKzEgQEAKK0xpc3Q8UGFpcjxqYXZhLmxhbmcuU3RyaW5nLGphdmEubGFuZy5JbnRlZ2VyPj5cblBzaUxvY2FsVmFyaWFibGU6YQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxMzYvYWZ0ZXIvVGVzdC5pdGVtcyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTM2L2FmdGVyL1Rlc3QuaXRlbXMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDM1YTM2MAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTM2L2FmdGVyL1Rlc3QuaXRlbXMKQEAgLTAsMCArMSBAQAorTGlzdFxuUHNpTG9jYWxWYXJpYWJsZTphCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDEzNi9hZnRlci90ZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDEzNi9hZnRlci90ZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTQ0NWUyNQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTM2L2FmdGVyL3Rlc3QuamF2YQpAQCAtMCwwICsxLDE0IEBACitjbGFzcyBMaXN0PFA+IHsKKyAgUCBwOworfQorCitjbGFzcyBQYWlyPFgsIFk+eworICBYIHg7CisgIFkgeTsKK30KKworY2xhc3MgVGVzdCB7CisgIHZvaWQgZigpeworICAgIExpc3QgYSA9IG5ldyBMaXN0PFBhaXI8U3RyaW5nLEludGVnZXI+PiAoKTsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxMzYvYmVmb3JlL3Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTM2L2JlZm9yZS90ZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTQ0NWUyNQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTM2L2JlZm9yZS90ZXN0LmphdmEKQEAgLTAsMCArMSwxNCBAQAorY2xhc3MgTGlzdDxQPiB7CisgIFAgcDsKK30KKworY2xhc3MgUGFpcjxYLCBZPnsKKyAgWCB4OworICBZIHk7Cit9CisKK2NsYXNzIFRlc3QgeworICB2b2lkIGYoKXsKKyAgICBMaXN0IGEgPSBuZXcgTGlzdDxQYWlyPFN0cmluZyxJbnRlZ2VyPj4gKCk7CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTM3L2FmdGVyL1Rlc3QuMS5pdGVtcyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTM3L2FmdGVyL1Rlc3QuMS5pdGVtcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNjlkZTI5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxMzcvYWZ0ZXIvVGVzdC4xLml0ZW1zCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDEzNy9hZnRlci9UZXN0Lml0ZW1zIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxMzcvYWZ0ZXIvVGVzdC5pdGVtcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNjlkZTI5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxMzcvYWZ0ZXIvVGVzdC5pdGVtcwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxMzcvYWZ0ZXIvdGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxMzcvYWZ0ZXIvdGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNmYWFkMmYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDEzNy9hZnRlci90ZXN0LmphdmEKQEAgLTAsMCArMSwxOSBAQAoraW50ZXJmYWNlIENvbXBhcmFibGU8WD4geworICAgIGJvb2xlYW4gY29tcGFyZSAoWCBhLCBYIGIpOworfQorCitjbGFzcyBUZXN0IHsKKyAgPFQ+IHZvaWQgc29ydChUW10geCwgQ29tcGFyYWJsZTxUPiBjKXsKKyAgfQorCisgIHZvaWQgZigpeworICAgIHNvcnQoCisgICAgICBuZXcgU3RyaW5nWzFdLAorICAgICAgbmV3IENvbXBhcmFibGUoKXsKKyAgICAgICAgcHVibGljIGJvb2xlYW4gY29tcGFyZShPYmplY3QgYSwgT2JqZWN0IGIpIHsKKyAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgfQorICAgICk7CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTM3L2JlZm9yZS90ZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDEzNy9iZWZvcmUvdGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNmYWFkMmYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDEzNy9iZWZvcmUvdGVzdC5qYXZhCkBAIC0wLDAgKzEsMTkgQEAKK2ludGVyZmFjZSBDb21wYXJhYmxlPFg+IHsKKyAgICBib29sZWFuIGNvbXBhcmUgKFggYSwgWCBiKTsKK30KKworY2xhc3MgVGVzdCB7CisgIDxUPiB2b2lkIHNvcnQoVFtdIHgsIENvbXBhcmFibGU8VD4gYyl7CisgIH0KKworICB2b2lkIGYoKXsKKyAgICBzb3J0KAorICAgICAgbmV3IFN0cmluZ1sxXSwKKyAgICAgIG5ldyBDb21wYXJhYmxlKCl7CisgICAgICAgIHB1YmxpYyBib29sZWFuIGNvbXBhcmUoT2JqZWN0IGEsIE9iamVjdCBiKSB7CisgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICApOworICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDEzOC9hZnRlci90ZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDEzOC9hZnRlci90ZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDRiMWMxMAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTM4L2FmdGVyL3Rlc3QuamF2YQpAQCAtMCwwICsxLDI1IEBACitjbGFzcyBNYXA8WCxZPnsKKyAgdm9pZCBwdXQgKFggeCwgWSB5KXsKKyAgfQorCisgIFkgZ2V0KFggeCl7CisgICAgcmV0dXJuIG51bGw7CisgIH0KK30KKworY2xhc3MgTGlzdDxaPnsKKyAgWiB6OworfQorCitjbGFzcyBUZXN0eworICBNYXA8TGlzdCwgT2JqZWN0PiB5OworCisgIHZvaWQgZm9vKCl7CisgICAgTGlzdDxJbnRlZ2VyPiBsaSA9IG51bGw7CisgICAgeS5wdXQobGksICIiKTsKKyAgfQorCisgIDxUPiB2b2lkIGYgKExpc3Q8VD4geCwgVCB6KXsKKyAgICB5LnB1dCh4LCB6KTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTM4L2JlZm9yZS90ZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDEzOC9iZWZvcmUvdGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ0YjFjMTAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDEzOC9iZWZvcmUvdGVzdC5qYXZhCkBAIC0wLDAgKzEsMjUgQEAKK2NsYXNzIE1hcDxYLFk+eworICB2b2lkIHB1dCAoWCB4LCBZIHkpeworICB9CisKKyAgWSBnZXQoWCB4KXsKKyAgICByZXR1cm4gbnVsbDsKKyAgfQorfQorCitjbGFzcyBMaXN0PFo+eworICBaIHo7Cit9CisKK2NsYXNzIFRlc3R7CisgIE1hcDxMaXN0LCBPYmplY3Q+IHk7CisKKyAgdm9pZCBmb28oKXsKKyAgICBMaXN0PEludGVnZXI+IGxpID0gbnVsbDsKKyAgICB5LnB1dChsaSwgIiIpOworICB9CisKKyAgPFQ+IHZvaWQgZiAoTGlzdDxUPiB4LCBUIHopeworICAgIHkucHV0KHgsIHopOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxMzkvYWZ0ZXIvVGVzdC4xLml0ZW1zIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxMzkvYWZ0ZXIvVGVzdC4xLml0ZW1zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY0MWExM2MKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDEzOS9hZnRlci9UZXN0LjEuaXRlbXMKQEAgLTAsMCArMSBAQAorTGlzdDxqYXZhLmxhbmcuSW50ZWdlcj5cblBzaUxvY2FsVmFyaWFibGU6eApkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxMzkvYWZ0ZXIvVGVzdC5pdGVtcyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTM5L2FmdGVyL1Rlc3QuaXRlbXMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmQyMDg4YgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTM5L2FmdGVyL1Rlc3QuaXRlbXMKQEAgLTAsMCArMSBAQAorTGlzdFxuUHNpTG9jYWxWYXJpYWJsZTp4CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDEzOS9hZnRlci90ZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDEzOS9hZnRlci90ZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTFmZGVlNAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTM5L2FmdGVyL3Rlc3QuamF2YQpAQCAtMCwwICsxLDE2IEBACitjbGFzcyBMaXN0PFo+eworICA8VCBleHRlbmRzIFo+IHZvaWQgcHV0KFQgdCl7CisgIH0KKworICB2b2lkIG11dChMaXN0PD8gZXh0ZW5kcyBaPiB0KXsKKyAgfQorfQorCisKK2NsYXNzIFRlc3R7CisgIHZvaWQgZm9vKCl7CisgICAgTGlzdCB4ID0gbnVsbDsKKworICAgIHgubXV0KG5ldyBMaXN0PEludGVnZXI+KCkpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxMzkvYmVmb3JlL3Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTM5L2JlZm9yZS90ZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTFmZGVlNAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTM5L2JlZm9yZS90ZXN0LmphdmEKQEAgLTAsMCArMSwxNiBAQAorY2xhc3MgTGlzdDxaPnsKKyAgPFQgZXh0ZW5kcyBaPiB2b2lkIHB1dChUIHQpeworICB9CisKKyAgdm9pZCBtdXQoTGlzdDw/IGV4dGVuZHMgWj4gdCl7CisgIH0KK30KKworCitjbGFzcyBUZXN0eworICB2b2lkIGZvbygpeworICAgIExpc3QgeCA9IG51bGw7CisKKyAgICB4Lm11dChuZXcgTGlzdDxJbnRlZ2VyPigpKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTQvYWZ0ZXIvVGVzdC4xLml0ZW1zIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxNC9hZnRlci9UZXN0LjEuaXRlbXMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjQ0NDhhOQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTQvYWZ0ZXIvVGVzdC4xLml0ZW1zCkBAIC0wLDAgKzEsMiBAQAorTGlua2VkTGlzdDxMaW5rZWRMaXN0PFNpbXBsZT4+XG5Qc2lGaWVsZDp5CitMaW5rZWRMaXN0PFNpbXBsZT5cblBzaUZpZWxkOngKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTQvYWZ0ZXIvVGVzdC5pdGVtcyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTQvYWZ0ZXIvVGVzdC5pdGVtcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNjAzMjkwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxNC9hZnRlci9UZXN0Lml0ZW1zCkBAIC0wLDAgKzEsMiBAQAorTGlua2VkTGlzdFxuUHNpRmllbGQ6eAorTGlua2VkTGlzdFxuUHNpRmllbGQ6eQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxNC9hZnRlci90ZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDE0L2FmdGVyL3Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MWNiMDMyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxNC9hZnRlci90ZXN0LmphdmEKQEAgLTAsMCArMSwyMyBAQAorY2xhc3MgTGlua2VkTGlzdDxUPnsKKyAgICBUIHQ7CisgICAgcHVibGljIFQgZ2V0KCl7cmV0dXJuIHQ7fQorICAgIHB1YmxpYyB2b2lkIHNldCAoVCB0KXsKKwl0aGlzLnQgPSB0OworICAgIH0gICAgCit9CisKK2NsYXNzIFNpbXBsZSB7CisgICBib29sZWFuIGYoKXsKKyAgICByZXR1cm4gZmFsc2U7CisgICB9Cit9CisKK2NsYXNzIFRlc3R7CisgICAgTGlua2VkTGlzdCB5OworICAgIExpbmtlZExpc3QgeDsKKyAgICAKKyAgICB2b2lkIGYoKXsKKyAgICAgIHggPSB5LmdldCgpOworICAgICAgeS5zZXQobmV3IExpbmtlZExpc3Q8U2ltcGxlPiAoKSk7CisgICAgfSAgIAorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxNC9iZWZvcmUvdGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxNC9iZWZvcmUvdGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgxY2IwMzIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDE0L2JlZm9yZS90ZXN0LmphdmEKQEAgLTAsMCArMSwyMyBAQAorY2xhc3MgTGlua2VkTGlzdDxUPnsKKyAgICBUIHQ7CisgICAgcHVibGljIFQgZ2V0KCl7cmV0dXJuIHQ7fQorICAgIHB1YmxpYyB2b2lkIHNldCAoVCB0KXsKKwl0aGlzLnQgPSB0OworICAgIH0gICAgCit9CisKK2NsYXNzIFNpbXBsZSB7CisgICBib29sZWFuIGYoKXsKKyAgICByZXR1cm4gZmFsc2U7CisgICB9Cit9CisKK2NsYXNzIFRlc3R7CisgICAgTGlua2VkTGlzdCB5OworICAgIExpbmtlZExpc3QgeDsKKyAgICAKKyAgICB2b2lkIGYoKXsKKyAgICAgIHggPSB5LmdldCgpOworICAgICAgeS5zZXQobmV3IExpbmtlZExpc3Q8U2ltcGxlPiAoKSk7CisgICAgfSAgIAorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxNDAvYWZ0ZXIvVGVzdC4xLml0ZW1zIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxNDAvYWZ0ZXIvVGVzdC4xLml0ZW1zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZlNzRjZDQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDE0MC9hZnRlci9UZXN0LjEuaXRlbXMKQEAgLTAsMCArMSBAQAorTWFwPGphdmEubGFuZy5TdHJpbmcsamF2YS5sYW5nLkludGVnZXI+XG5Qc2lMb2NhbFZhcmlhYmxlOm1hcApkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxNDAvYWZ0ZXIvVGVzdC5pdGVtcyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTQwL2FmdGVyL1Rlc3QuaXRlbXMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODhkOGFiMQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTQwL2FmdGVyL1Rlc3QuaXRlbXMKQEAgLTAsMCArMSBAQAorTWFwXG5Qc2lMb2NhbFZhcmlhYmxlOm1hcApkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxNDAvYWZ0ZXIvdGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxNDAvYWZ0ZXIvdGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmExY2M0Y2EKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDE0MC9hZnRlci90ZXN0LmphdmEKQEAgLTAsMCArMSwyMSBAQAoraW50ZXJmYWNlIEl0ZXJhdG9yPEU+IHsKKyAgICBFIG5leHQoKTsKK30KKworaW50ZXJmYWNlIENvbGxlY3Rpb248RT4geworICAgIEl0ZXJhdG9yPEU+IGl0ZXJhdG9yKCk7Cit9CisKK2ludGVyZmFjZSBNYXA8SyxWPiB7CisgICAgViBwdXQoSyBrZXksIFYgdmFsdWUpOworICAgIENvbGxlY3Rpb248Vj4gdmFsdWVzKCk7Cit9CisKK2NsYXNzIFRlc3QgeworCXB1YmxpYyB2b2lkIGRvVGVzdCAoKSB7CisJCU1hcCBtYXA7CisJCW1hcC5wdXQgKCJrZXkiLCBuZXcgSW50ZWdlciAoMCkpOworCisgICAgICAgIEludGVnZXIgcmVzID0gKEludGVnZXIpIG1hcC52YWx1ZXMgKCkuaXRlcmF0b3IgKCkubmV4dCAoKTsKKwl9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDE0MC9iZWZvcmUvdGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxNDAvYmVmb3JlL3Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMWNjNGNhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxNDAvYmVmb3JlL3Rlc3QuamF2YQpAQCAtMCwwICsxLDIxIEBACitpbnRlcmZhY2UgSXRlcmF0b3I8RT4geworICAgIEUgbmV4dCgpOworfQorCitpbnRlcmZhY2UgQ29sbGVjdGlvbjxFPiB7CisgICAgSXRlcmF0b3I8RT4gaXRlcmF0b3IoKTsKK30KKworaW50ZXJmYWNlIE1hcDxLLFY+IHsKKyAgICBWIHB1dChLIGtleSwgViB2YWx1ZSk7CisgICAgQ29sbGVjdGlvbjxWPiB2YWx1ZXMoKTsKK30KKworY2xhc3MgVGVzdCB7CisJcHVibGljIHZvaWQgZG9UZXN0ICgpIHsKKwkJTWFwIG1hcDsKKwkJbWFwLnB1dCAoImtleSIsIG5ldyBJbnRlZ2VyICgwKSk7CisKKyAgICAgICAgSW50ZWdlciByZXMgPSAoSW50ZWdlcikgbWFwLnZhbHVlcyAoKS5pdGVyYXRvciAoKS5uZXh0ICgpOworCX0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTQxL2JlZm9yZS90ZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDE0MS9iZWZvcmUvdGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUxMGM3MDgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDE0MS9iZWZvcmUvdGVzdC5qYXZhCkBAIC0wLDAgKzEsOCBAQAoraW50ZXJmYWNlIEk8VD57fQorCitjbGFzcyBQYWlyPFggZXh0ZW5kcyBJPFk+LCBZIGV4dGVuZHMgSTxYPj4geworfQorCitwdWJsaWMgY2xhc3MgVGVzdCB7CisgIFBhaXIgcGFpcjsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDE0Mi9iZWZvcmUvdGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxNDIvYmVmb3JlL3Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNGJkZjM5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxNDIvYmVmb3JlL3Rlc3QuamF2YQpAQCAtMCwwICsxLDggQEAKK2ludGVyZmFjZSBJPFQ+e30KKworY2xhc3MgUGFpcjxYIGV4dGVuZHMgSTxJPD8gZXh0ZW5kcyBZPj4sIFkgZXh0ZW5kcyBJPEk8PyBzdXBlciBYPj4+IHsKK30KKworcHVibGljIGNsYXNzIFRlc3QgeworICBQYWlyIHBhaXI7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxNDMvYmVmb3JlL3Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTQzL2JlZm9yZS90ZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTQ4ZWQ0MwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTQzL2JlZm9yZS90ZXN0LmphdmEKQEAgLTAsMCArMSwxMyBAQAoraW50ZXJmYWNlIEk8VD4ge30KKworY2xhc3MgUGFpcjxYPiB7CisgIHZvaWQgZm9vIChJPD8gZXh0ZW5kcyBYPiBpKXt9Cit9CisKK3B1YmxpYyBjbGFzcyBUZXN0IHsKKyAgUGFpciBwYWlyOworCisgIHZvaWQgYmFyKCl7CisgICAgcGFpci5mb28gKG5ldyBJPEk+ICgpKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTQ0L2JlZm9yZS90ZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDE0NC9iZWZvcmUvdGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA4ZTFkYmMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDE0NC9iZWZvcmUvdGVzdC5qYXZhCkBAIC0wLDAgKzEsMTUgQEAKK2ludGVyZmFjZSBJPFQ+IHt9CisKK2NsYXNzIFBhaXI8WD4gaW1wbGVtZW50cyBJPFg+eworICBYIHQ7Cit9CisKK2NsYXNzIFRlc3QgeworICBQYWlyIHBhaXI7CisKKyAgPFg+IFggZm9vIChJPD8gZXh0ZW5kcyBYPiBpKXtyZXR1cm4gbnVsbDt9CisKKyAgdm9pZCBiYXIoKXsKKyAgICBTdHJpbmcgdSA9IChTdHJpbmcpIGZvbyAocGFpcik7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDE0NS9iZWZvcmUvdGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxNDUvYmVmb3JlL3Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zN2M0MDYyNAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTQ1L2JlZm9yZS90ZXN0LmphdmEKQEAgLTAsMCArMSwxMyBAQAoraW50ZXJmYWNlIEk8VD4ge30KKworY2xhc3MgUGFpcjxYPiB7CisgIHZvaWQgZ29vIChJPD8gc3VwZXIgSTxYPj4gaSl7fQorfQorCitwdWJsaWMgY2xhc3MgVGVzdCB7CisgIFBhaXIgcGFpcjsKKworICB2b2lkIGJhcigpeworICAgIHBhaXIuZ29vIChuZXcgSTxJPiAoKSk7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDE0Ni9hZnRlci9UZXN0LjEuaXRlbXMgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDE0Ni9hZnRlci9UZXN0LjEuaXRlbXMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzRkODUxMAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTQ2L2FmdGVyL1Rlc3QuMS5pdGVtcwpAQCAtMCwwICsxLDIgQEAKK0xpc3RcbnBhcmFtZXRlciAwIG9mIGYKK0xpc3RcbnBhcmFtZXRlciAwIG9mIGYKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTQ2L2FmdGVyL1Rlc3QuaXRlbXMgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDE0Ni9hZnRlci9UZXN0Lml0ZW1zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM0ZDg1MTAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDE0Ni9hZnRlci9UZXN0Lml0ZW1zCkBAIC0wLDAgKzEsMiBAQAorTGlzdFxucGFyYW1ldGVyIDAgb2YgZgorTGlzdFxucGFyYW1ldGVyIDAgb2YgZgpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxNDYvYWZ0ZXIvdGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxNDYvYWZ0ZXIvdGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgyMDc4MDgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDE0Ni9hZnRlci90ZXN0LmphdmEKQEAgLTAsMCArMSwxNyBAQAorY2xhc3MgTGlzdDxUPiB7CisgIFQgdDsKK30KKworY2xhc3MgVGVzdHsKKyAgY2xhc3MgU3VwZXIgeworICAgICB2b2lkIGYgKExpc3QgeCl7CisgICAgICAgeCA9IG5ldyBMaXN0PEludGVnZXI+KCk7CisgICAgIH0KKyAgfQorCisgIGNsYXNzIE1pZGRsZSBleHRlbmRzIFN1cGVyIHsKKyAgICB2b2lkIGYgKExpc3QgeCl7CisgICAgICAgeC50ID0gIiI7CisgICAgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxNDYvYmVmb3JlL3Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTQ2L2JlZm9yZS90ZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODIwNzgwOAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTQ2L2JlZm9yZS90ZXN0LmphdmEKQEAgLTAsMCArMSwxNyBAQAorY2xhc3MgTGlzdDxUPiB7CisgIFQgdDsKK30KKworY2xhc3MgVGVzdHsKKyAgY2xhc3MgU3VwZXIgeworICAgICB2b2lkIGYgKExpc3QgeCl7CisgICAgICAgeCA9IG5ldyBMaXN0PEludGVnZXI+KCk7CisgICAgIH0KKyAgfQorCisgIGNsYXNzIE1pZGRsZSBleHRlbmRzIFN1cGVyIHsKKyAgICB2b2lkIGYgKExpc3QgeCl7CisgICAgICAgeC50ID0gIiI7CisgICAgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxNDcvYWZ0ZXIvVGVzdC4xLml0ZW1zIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxNDcvYWZ0ZXIvVGVzdC4xLml0ZW1zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ1NGI5NDgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDE0Ny9hZnRlci9UZXN0LjEuaXRlbXMKQEAgLTAsMCArMSwyIEBACitMaXN0PGphdmEuaW8uU2VyaWFsaXphYmxlPlxuUHNpTG9jYWxWYXJpYWJsZTpmb28KK0xpc3Q8amF2YS5pby5TZXJpYWxpemFibGU+XG5uZXcKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTQ3L2FmdGVyL1Rlc3QuaXRlbXMgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDE0Ny9hZnRlci9UZXN0Lml0ZW1zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNlNDM3ZjcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDE0Ny9hZnRlci9UZXN0Lml0ZW1zCkBAIC0wLDAgKzEsMiBAQAorTGlzdFxuUHNpTG9jYWxWYXJpYWJsZTpmb28KK0xpc3Rcbm5ldwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxNDcvYWZ0ZXIvdGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxNDcvYWZ0ZXIvdGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE4OTE1YzUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDE0Ny9hZnRlci90ZXN0LmphdmEKQEAgLTAsMCArMSwxMSBAQAorY2xhc3MgTGlzdDxUPiB7CisgIHB1YmxpYyB2b2lkIGFkZChUIHQpIHt9Cit9CisKK2NsYXNzIFRlc3QgeworICAgIHZvaWQgZigpIHsKKyAgICAgICAgTGlzdCBmb28gPSBuZXcgTGlzdCgpOworICAgICAgICBmb28uYWRkKDMpOworICAgICAgICBmb28uYWRkKCJiYXIiKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDE0Ny9iZWZvcmUvdGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxNDcvYmVmb3JlL3Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xODkxNWM1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxNDcvYmVmb3JlL3Rlc3QuamF2YQpAQCAtMCwwICsxLDExIEBACitjbGFzcyBMaXN0PFQ+IHsKKyAgcHVibGljIHZvaWQgYWRkKFQgdCkge30KK30KKworY2xhc3MgVGVzdCB7CisgICAgdm9pZCBmKCkgeworICAgICAgICBMaXN0IGZvbyA9IG5ldyBMaXN0KCk7CisgICAgICAgIGZvby5hZGQoMyk7CisgICAgICAgIGZvby5hZGQoImJhciIpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTQ4L2FmdGVyL1Rlc3QuMS5pdGVtcyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTQ4L2FmdGVyL1Rlc3QuMS5pdGVtcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZDdhN2ZmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxNDgvYWZ0ZXIvVGVzdC4xLml0ZW1zCkBAIC0wLDAgKzEsMyBAQAorQ29sbGVjdGlvblxucGFyYW1ldGVyIDAgb2YgdGVzdAorTGlzdFxuUHNpVHlwZUNhc3RFeHByZXNzaW9uOihMaXN0KWNvbGxlY3Rpb24KK0xpc3RcblBzaVR5cGVDYXN0RXhwcmVzc2lvbjooTGlzdCljb2xsZWN0aW9uCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDE0OC9hZnRlci9UZXN0Lml0ZW1zIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxNDgvYWZ0ZXIvVGVzdC5pdGVtcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZDdhN2ZmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxNDgvYWZ0ZXIvVGVzdC5pdGVtcwpAQCAtMCwwICsxLDMgQEAKK0NvbGxlY3Rpb25cbnBhcmFtZXRlciAwIG9mIHRlc3QKK0xpc3RcblBzaVR5cGVDYXN0RXhwcmVzc2lvbjooTGlzdCljb2xsZWN0aW9uCitMaXN0XG5Qc2lUeXBlQ2FzdEV4cHJlc3Npb246KExpc3QpY29sbGVjdGlvbgpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxNDgvYWZ0ZXIvdGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxNDgvYWZ0ZXIvdGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRjMDNjZWMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDE0OC9hZnRlci90ZXN0LmphdmEKQEAgLTAsMCArMSwxNyBAQAoraW50ZXJmYWNlIENvbXBhcmFibGU8VD4ge30KK2ludGVyZmFjZSBDb2xsZWN0aW9uPFQ+IHt9CitpbnRlcmZhY2UgTGlzdDxUPiBleHRlbmRzIENvbGxlY3Rpb248VD57fQorCitjbGFzcyBUZXN0Cit7CisgICAgdm9pZCB0ZXN0KENvbGxlY3Rpb24gY29sbGVjdGlvbikgeworCisgICAgICAgIENvbGxlY3Rpb25zLnNvcnQoKExpc3QpY29sbGVjdGlvbik7CisgICAgICAgIGlmIChjb2xsZWN0aW9uIGluc3RhbmNlb2YgTGlzdCkgeworICAgICAgICAgICAgQ29sbGVjdGlvbnMuc29ydCgoTGlzdCljb2xsZWN0aW9uKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHB1YmxpYyBzdGF0aWMgPFQgZXh0ZW5kcyBDb21wYXJhYmxlPD8gc3VwZXIgVD4+IHZvaWQgc29ydChMaXN0PFQ+IGxpc3QpIHsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxNDgvYmVmb3JlL3Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTQ4L2JlZm9yZS90ZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGMwM2NlYwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTQ4L2JlZm9yZS90ZXN0LmphdmEKQEAgLTAsMCArMSwxNyBAQAoraW50ZXJmYWNlIENvbXBhcmFibGU8VD4ge30KK2ludGVyZmFjZSBDb2xsZWN0aW9uPFQ+IHt9CitpbnRlcmZhY2UgTGlzdDxUPiBleHRlbmRzIENvbGxlY3Rpb248VD57fQorCitjbGFzcyBUZXN0Cit7CisgICAgdm9pZCB0ZXN0KENvbGxlY3Rpb24gY29sbGVjdGlvbikgeworCisgICAgICAgIENvbGxlY3Rpb25zLnNvcnQoKExpc3QpY29sbGVjdGlvbik7CisgICAgICAgIGlmIChjb2xsZWN0aW9uIGluc3RhbmNlb2YgTGlzdCkgeworICAgICAgICAgICAgQ29sbGVjdGlvbnMuc29ydCgoTGlzdCljb2xsZWN0aW9uKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHB1YmxpYyBzdGF0aWMgPFQgZXh0ZW5kcyBDb21wYXJhYmxlPD8gc3VwZXIgVD4+IHZvaWQgc29ydChMaXN0PFQ+IGxpc3QpIHsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxNDkvYWZ0ZXIvVGVzdC4xLml0ZW1zIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxNDkvYWZ0ZXIvVGVzdC4xLml0ZW1zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZlNWM2MGYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDE0OS9hZnRlci9UZXN0LjEuaXRlbXMKQEAgLTAsMCArMSw0IEBACitqYXZhLmxhbmcuSW50ZWdlclxuUHNpUGFyYW1ldGVyOnZhbHVlCitqYXZhLnV0aWwuQXJyYXlMaXN0PGphdmEubGFuZy5JbnRlZ2VyPlxubmV3CitqYXZhLnV0aWwuTGlzdDxqYXZhLmxhbmcuSW50ZWdlcj5cblBzaUxvY2FsVmFyaWFibGU6bAoramF2YS51dGlsLkxpc3Q8amF2YS5sYW5nLkludGVnZXI+XG5wYXJhbWV0ZXIgMCBvZiB0ZXN0Rm9yRWFjaApkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxNDkvYWZ0ZXIvVGVzdC5pdGVtcyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTQ5L2FmdGVyL1Rlc3QuaXRlbXMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGM5Y2U0ZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTQ5L2FmdGVyL1Rlc3QuaXRlbXMKQEAgLTAsMCArMSw0IEBACitqYXZhLmxhbmcuT2JqZWN0XG5Qc2lQYXJhbWV0ZXI6dmFsdWUKK2phdmEudXRpbC5BcnJheUxpc3Rcbm5ldworamF2YS51dGlsLkxpc3RcblBzaUxvY2FsVmFyaWFibGU6bAoramF2YS51dGlsLkxpc3RcbnBhcmFtZXRlciAwIG9mIHRlc3RGb3JFYWNoCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDE0OS9hZnRlci90ZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDE0OS9hZnRlci90ZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODlhMTExZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTQ5L2FmdGVyL3Rlc3QuamF2YQpAQCAtMCwwICsxLDE4IEBACitpbXBvcnQgamF2YS51dGlsLio7CisKK2NsYXNzIFRlc3QKK3sKKyAgICBwcml2YXRlIHZvaWQgdGVzdEZvckVhY2goTGlzdCB2YWx1ZXMpIHsKKworICAgICAgICBmb3IgKE9iamVjdCB2YWx1ZSA6IHZhbHVlcykgeworCisgICAgICAgIH0KKyAgICB9CisKKyAgICB2b2lkIGZvbygpIHsKKyAgICAgICAgTGlzdCBsID0gbmV3IEFycmF5TGlzdCgpOworICAgICAgICBsLmFkZCgwKTsKKyAgICAgICAgbC5hZGQoMSk7CisgICAgICAgIHRlc3RGb3JFYWNoKGwpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDE0OS9iZWZvcmUvdGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxNDkvYmVmb3JlL3Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44OWExMTFmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxNDkvYmVmb3JlL3Rlc3QuamF2YQpAQCAtMCwwICsxLDE4IEBACitpbXBvcnQgamF2YS51dGlsLio7CisKK2NsYXNzIFRlc3QKK3sKKyAgICBwcml2YXRlIHZvaWQgdGVzdEZvckVhY2goTGlzdCB2YWx1ZXMpIHsKKworICAgICAgICBmb3IgKE9iamVjdCB2YWx1ZSA6IHZhbHVlcykgeworCisgICAgICAgIH0KKyAgICB9CisKKyAgICB2b2lkIGZvbygpIHsKKyAgICAgICAgTGlzdCBsID0gbmV3IEFycmF5TGlzdCgpOworICAgICAgICBsLmFkZCgwKTsKKyAgICAgICAgbC5hZGQoMSk7CisgICAgICAgIHRlc3RGb3JFYWNoKGwpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDE1L2FmdGVyL1Rlc3QuMS5pdGVtcyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTUvYWZ0ZXIvVGVzdC4xLml0ZW1zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM2MDMyOTAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDE1L2FmdGVyL1Rlc3QuMS5pdGVtcwpAQCAtMCwwICsxLDIgQEAKK0xpbmtlZExpc3RcblBzaUZpZWxkOngKK0xpbmtlZExpc3RcblBzaUZpZWxkOnkKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTUvYWZ0ZXIvVGVzdC5pdGVtcyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTUvYWZ0ZXIvVGVzdC5pdGVtcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNjAzMjkwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxNS9hZnRlci9UZXN0Lml0ZW1zCkBAIC0wLDAgKzEsMiBAQAorTGlua2VkTGlzdFxuUHNpRmllbGQ6eAorTGlua2VkTGlzdFxuUHNpRmllbGQ6eQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxNS9hZnRlci90ZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDE1L2FmdGVyL3Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYTZmMDdmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxNS9hZnRlci90ZXN0LmphdmEKQEAgLTAsMCArMSwyMiBAQAorY2xhc3MgTGlua2VkTGlzdDxUPnsKKyAgICBUIHQ7CisgICAgcHVibGljIFQgZ2V0KCl7cmV0dXJuIHQ7fQorICAgIHB1YmxpYyB2b2lkIHNldCAoVCB0KXsKKwl0aGlzLnQgPSB0OworICAgIH0gICAgCit9CisKK2NsYXNzIFNpbXBsZSB7CisgICBib29sZWFuIGYoKXsKKyAgICByZXR1cm4gZmFsc2U7CisgICB9Cit9CisKK2NsYXNzIFRlc3R7CisgICAgTGlua2VkTGlzdCB5OworICAgIExpbmtlZExpc3QgeDsKKyAgICAKKyAgICB2b2lkIGYoKXsKKyAgICAgIHkuZ2V0KCk7CisgICAgfSAgIAorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxNS9iZWZvcmUvdGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxNS9iZWZvcmUvdGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVhNmYwN2YKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDE1L2JlZm9yZS90ZXN0LmphdmEKQEAgLTAsMCArMSwyMiBAQAorY2xhc3MgTGlua2VkTGlzdDxUPnsKKyAgICBUIHQ7CisgICAgcHVibGljIFQgZ2V0KCl7cmV0dXJuIHQ7fQorICAgIHB1YmxpYyB2b2lkIHNldCAoVCB0KXsKKwl0aGlzLnQgPSB0OworICAgIH0gICAgCit9CisKK2NsYXNzIFNpbXBsZSB7CisgICBib29sZWFuIGYoKXsKKyAgICByZXR1cm4gZmFsc2U7CisgICB9Cit9CisKK2NsYXNzIFRlc3R7CisgICAgTGlua2VkTGlzdCB5OworICAgIExpbmtlZExpc3QgeDsKKyAgICAKKyAgICB2b2lkIGYoKXsKKyAgICAgIHkuZ2V0KCk7CisgICAgfSAgIAorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxNTAvYWZ0ZXIvVGVzdC4xLml0ZW1zIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxNTAvYWZ0ZXIvVGVzdC4xLml0ZW1zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE2OWJlMmIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDE1MC9hZnRlci9UZXN0LjEuaXRlbXMKQEAgLTAsMCArMSw1IEBACitqYXZhLnV0aWwuSXRlcmF0b3I8amF2YS51dGlsLk1hcC5FbnRyeT5cblBzaUxvY2FsVmFyaWFibGU6ZW50cnlJdGVyCitqYXZhLnV0aWwuTGlzdFxuUHNpTG9jYWxWYXJpYWJsZTpldmVudExpc3QKK2phdmEudXRpbC5MaXN0XG5Qc2lUeXBlQ2FzdEV4cHJlc3Npb246KExpc3QpIGVudHJ5LmdldFZhbHVlKCkKK2phdmEudXRpbC5NYXAuRW50cnlcblBzaUxvY2FsVmFyaWFibGU6ZW50cnkKK2phdmEudXRpbC5NYXBcbnBhcmFtZXRlciAwIG9mIHRlc3QKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTUwL2FmdGVyL1Rlc3QuaXRlbXMgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDE1MC9hZnRlci9UZXN0Lml0ZW1zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE2OWJlMmIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDE1MC9hZnRlci9UZXN0Lml0ZW1zCkBAIC0wLDAgKzEsNSBAQAoramF2YS51dGlsLkl0ZXJhdG9yPGphdmEudXRpbC5NYXAuRW50cnk+XG5Qc2lMb2NhbFZhcmlhYmxlOmVudHJ5SXRlcgoramF2YS51dGlsLkxpc3RcblBzaUxvY2FsVmFyaWFibGU6ZXZlbnRMaXN0CitqYXZhLnV0aWwuTGlzdFxuUHNpVHlwZUNhc3RFeHByZXNzaW9uOihMaXN0KSBlbnRyeS5nZXRWYWx1ZSgpCitqYXZhLnV0aWwuTWFwLkVudHJ5XG5Qc2lMb2NhbFZhcmlhYmxlOmVudHJ5CitqYXZhLnV0aWwuTWFwXG5wYXJhbWV0ZXIgMCBvZiB0ZXN0CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDE1MC9hZnRlci90ZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDE1MC9hZnRlci90ZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODc3OWViZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTUwL2FmdGVyL3Rlc3QuamF2YQpAQCAtMCwwICsxLDEzIEBACitpbXBvcnQgamF2YS51dGlsLio7CisKK2NsYXNzIFRlc3QKK3sKKyAgICB2b2lkIHRlc3QoTWFwIG1hcCkgeworCisgICAgICAgIEl0ZXJhdG9yPE1hcC5FbnRyeT4gZW50cnlJdGVyID0gbWFwLmVudHJ5U2V0KCkuaXRlcmF0b3IoKTsKKyAgICAgICAgd2hpbGUgKGVudHJ5SXRlci5oYXNOZXh0KCkpIHsKKyAgICAgICAgICAgIE1hcC5FbnRyeSBlbnRyeSA9IGVudHJ5SXRlci5uZXh0KCk7CisgICAgICAgICAgICBMaXN0IGV2ZW50TGlzdCA9IChMaXN0KSBlbnRyeS5nZXRWYWx1ZSgpOworICAgICAgICB9CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTUwL2JlZm9yZS90ZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDE1MC9iZWZvcmUvdGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg3NzllYmUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDE1MC9iZWZvcmUvdGVzdC5qYXZhCkBAIC0wLDAgKzEsMTMgQEAKK2ltcG9ydCBqYXZhLnV0aWwuKjsKKworY2xhc3MgVGVzdAoreworICAgIHZvaWQgdGVzdChNYXAgbWFwKSB7CisKKyAgICAgICAgSXRlcmF0b3I8TWFwLkVudHJ5PiBlbnRyeUl0ZXIgPSBtYXAuZW50cnlTZXQoKS5pdGVyYXRvcigpOworICAgICAgICB3aGlsZSAoZW50cnlJdGVyLmhhc05leHQoKSkgeworICAgICAgICAgICAgTWFwLkVudHJ5IGVudHJ5ID0gZW50cnlJdGVyLm5leHQoKTsKKyAgICAgICAgICAgIExpc3QgZXZlbnRMaXN0ID0gKExpc3QpIGVudHJ5LmdldFZhbHVlKCk7CisgICAgICAgIH0KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxNTEvYWZ0ZXIvVGVzdC4xLml0ZW1zIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxNTEvYWZ0ZXIvVGVzdC4xLml0ZW1zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg5MWVmNzYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDE1MS9hZnRlci9UZXN0LjEuaXRlbXMKQEAgLTAsMCArMSw0IEBACitqYXZhLnV0aWwuU2V0PGphdmEubGFuZy5JbnRlZ2VyPlxuUHNpTG9jYWxWYXJpYWJsZTpmaXZlTAoramF2YS51dGlsLlNldDxqYXZhLmxhbmcuSW50ZWdlcj5cblBzaUxvY2FsVmFyaWFibGU6cmVzdWx0CitqYXZhLnV0aWwuU2V0PGphdmEubGFuZy5JbnRlZ2VyPlxuUHNpTG9jYWxWYXJpYWJsZTp0ZW5MCitqYXZhLnV0aWwuU2V0PGphdmEubGFuZy5JbnRlZ2VyPlxucmV0dXJuIG9mIGdldE51bWJlclNldDQKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTUxL2FmdGVyL1Rlc3QuaXRlbXMgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDE1MS9hZnRlci9UZXN0Lml0ZW1zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI3YTM3YmNlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxNTEvYWZ0ZXIvVGVzdC5pdGVtcwpAQCAtMCwwICsxLDQgQEAKK2phdmEudXRpbC5TZXRcblBzaUxvY2FsVmFyaWFibGU6Zml2ZUwKK2phdmEudXRpbC5TZXRcblBzaUxvY2FsVmFyaWFibGU6cmVzdWx0CitqYXZhLnV0aWwuU2V0XG5Qc2lMb2NhbFZhcmlhYmxlOnRlbkwKK2phdmEudXRpbC5TZXRcbnJldHVybiBvZiBnZXROdW1iZXJTZXQ0CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDE1MS9hZnRlci90ZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDE1MS9hZnRlci90ZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTU5MmIxMwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTUxL2FmdGVyL3Rlc3QuamF2YQpAQCAtMCwwICsxLDE5IEBACitpbXBvcnQgamF2YS51dGlsLio7CisKK2NsYXNzIFRlc3QKK3sKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgdGVzdFNldDQoKSB7CisgICAgICAgIFNldCB0ZW5MID0gZ2V0TnVtYmVyU2V0NCgxMCk7CisgICAgICAgIFNldCBmaXZlTCA9IGdldE51bWJlclNldDQoNSk7CisKKyAgICAgICAgdGVuTC5yZW1vdmVBbGwoZml2ZUwpOworICAgIH0KKworICAgIHB1YmxpYyBzdGF0aWMgU2V0IGdldE51bWJlclNldDQoaW50IG4pIHsKKyAgICAgICAgU2V0IHJlc3VsdDsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBuOyBpKyspIHsKKyAgICAgICAgICAgIHJlc3VsdC5hZGQoaSk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxNTEvYmVmb3JlL3Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTUxL2JlZm9yZS90ZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTU5MmIxMwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTUxL2JlZm9yZS90ZXN0LmphdmEKQEAgLTAsMCArMSwxOSBAQAoraW1wb3J0IGphdmEudXRpbC4qOworCitjbGFzcyBUZXN0Cit7CisgICAgcHVibGljIHN0YXRpYyB2b2lkIHRlc3RTZXQ0KCkgeworICAgICAgICBTZXQgdGVuTCA9IGdldE51bWJlclNldDQoMTApOworICAgICAgICBTZXQgZml2ZUwgPSBnZXROdW1iZXJTZXQ0KDUpOworCisgICAgICAgIHRlbkwucmVtb3ZlQWxsKGZpdmVMKTsKKyAgICB9CisKKyAgICBwdWJsaWMgc3RhdGljIFNldCBnZXROdW1iZXJTZXQ0KGludCBuKSB7CisgICAgICAgIFNldCByZXN1bHQ7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbjsgaSsrKSB7CisgICAgICAgICAgICByZXN1bHQuYWRkKGkpOworICAgICAgICB9CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTUyL2FmdGVyL1Rlc3QuMS5pdGVtcyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTUyL2FmdGVyL1Rlc3QuMS5pdGVtcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hOGYzMjYxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxNTIvYWZ0ZXIvVGVzdC4xLml0ZW1zCkBAIC0wLDAgKzEsMiBAQAoramF2YS51dGlsLkFycmF5TGlzdFxuUHNpRmllbGQ6bAoramF2YS51dGlsLkFycmF5TGlzdFxubmV3CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDE1Mi9hZnRlci9UZXN0Lml0ZW1zIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxNTIvYWZ0ZXIvVGVzdC5pdGVtcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hOGYzMjYxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxNTIvYWZ0ZXIvVGVzdC5pdGVtcwpAQCAtMCwwICsxLDIgQEAKK2phdmEudXRpbC5BcnJheUxpc3RcblBzaUZpZWxkOmwKK2phdmEudXRpbC5BcnJheUxpc3Rcbm5ldwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxNTIvYWZ0ZXIvdGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxNTIvYWZ0ZXIvdGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQxYWE4MWQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDE1Mi9hZnRlci90ZXN0LmphdmEKQEAgLTAsMCArMSw2IEBACitpbXBvcnQgamF2YS51dGlsLkFycmF5TGlzdDsKKworY2xhc3MgVGVzdAoreworICBBcnJheUxpc3QgbCA9IG5ldyBBcnJheUxpc3Q8Pig4KTsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDE1Mi9iZWZvcmUvdGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxNTIvYmVmb3JlL3Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MWFhODFkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxNTIvYmVmb3JlL3Rlc3QuamF2YQpAQCAtMCwwICsxLDYgQEAKK2ltcG9ydCBqYXZhLnV0aWwuQXJyYXlMaXN0OworCitjbGFzcyBUZXN0Cit7CisgIEFycmF5TGlzdCBsID0gbmV3IEFycmF5TGlzdDw+KDgpOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTYvYWZ0ZXIvVGVzdC4xLml0ZW1zIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxNi9hZnRlci9UZXN0LjEuaXRlbXMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWZhOGVhYwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTYvYWZ0ZXIvVGVzdC4xLml0ZW1zCkBAIC0wLDAgKzEsMiBAQAorTGlua2VkTGlzdDxTaW1wbGU+XG5Qc2lGaWVsZDp4CitMaW5rZWRMaXN0PFNpbXBsZT5cblBzaUZpZWxkOnkKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTYvYWZ0ZXIvVGVzdC5pdGVtcyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTYvYWZ0ZXIvVGVzdC5pdGVtcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNjAzMjkwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxNi9hZnRlci9UZXN0Lml0ZW1zCkBAIC0wLDAgKzEsMiBAQAorTGlua2VkTGlzdFxuUHNpRmllbGQ6eAorTGlua2VkTGlzdFxuUHNpRmllbGQ6eQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxNi9hZnRlci90ZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDE2L2FmdGVyL3Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZjZhOWIyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxNi9hZnRlci90ZXN0LmphdmEKQEAgLTAsMCArMSwyMyBAQAorY2xhc3MgTGlua2VkTGlzdDxUPnsKKyAgICBUIHQ7CisgICAgcHVibGljIFQgZ2V0KCl7cmV0dXJuIHQ7fQorICAgIHB1YmxpYyB2b2lkIHNldCAoVCB0KXsKKwl0aGlzLnQgPSB0OworICAgIH0gICAgCit9CisKK2NsYXNzIFNpbXBsZSB7CisgICBib29sZWFuIGYoKXsKKyAgICByZXR1cm4gZmFsc2U7CisgICB9Cit9CisKK2NsYXNzIFRlc3R7CisgICAgTGlua2VkTGlzdCB5OworICAgIExpbmtlZExpc3QgeDsKKyAgICAKKyAgICB2b2lkIGYoKXsKKyAgICAgIHguc2V0KHkuZ2V0KCkpOworICAgICAgU2ltcGxlIHQgPSAoU2ltcGxlKSB5LmdldCgpOworICAgIH0gICAKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTYvYmVmb3JlL3Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTYvYmVmb3JlL3Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZjZhOWIyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxNi9iZWZvcmUvdGVzdC5qYXZhCkBAIC0wLDAgKzEsMjMgQEAKK2NsYXNzIExpbmtlZExpc3Q8VD57CisgICAgVCB0OworICAgIHB1YmxpYyBUIGdldCgpe3JldHVybiB0O30KKyAgICBwdWJsaWMgdm9pZCBzZXQgKFQgdCl7CisJdGhpcy50ID0gdDsKKyAgICB9ICAgIAorfQorCitjbGFzcyBTaW1wbGUgeworICAgYm9vbGVhbiBmKCl7CisgICAgcmV0dXJuIGZhbHNlOworICAgfQorfQorCitjbGFzcyBUZXN0eworICAgIExpbmtlZExpc3QgeTsKKyAgICBMaW5rZWRMaXN0IHg7CisgICAgCisgICAgdm9pZCBmKCl7CisgICAgICB4LnNldCh5LmdldCgpKTsKKyAgICAgIFNpbXBsZSB0ID0gKFNpbXBsZSkgeS5nZXQoKTsKKyAgICB9ICAgCit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDE3L2FmdGVyL1Rlc3QuMS5pdGVtcyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTcvYWZ0ZXIvVGVzdC4xLml0ZW1zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFmYThlYWMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDE3L2FmdGVyL1Rlc3QuMS5pdGVtcwpAQCAtMCwwICsxLDIgQEAKK0xpbmtlZExpc3Q8U2ltcGxlPlxuUHNpRmllbGQ6eAorTGlua2VkTGlzdDxTaW1wbGU+XG5Qc2lGaWVsZDp5CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDE3L2FmdGVyL1Rlc3QuaXRlbXMgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDE3L2FmdGVyL1Rlc3QuaXRlbXMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzYwMzI5MAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTcvYWZ0ZXIvVGVzdC5pdGVtcwpAQCAtMCwwICsxLDIgQEAKK0xpbmtlZExpc3RcblBzaUZpZWxkOngKK0xpbmtlZExpc3RcblBzaUZpZWxkOnkKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTcvYWZ0ZXIvdGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxNy9hZnRlci90ZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTcxNjczYgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTcvYWZ0ZXIvdGVzdC5qYXZhCkBAIC0wLDAgKzEsMjAgQEAKK2NsYXNzIExpbmtlZExpc3Q8VD57CisgICAgVCB0OworICAgIHB1YmxpYyBUIGdldCgpe3JldHVybiB0O30KKyAgICBwdWJsaWMgdm9pZCBzZXQgKFQgdCl7CisJdGhpcy50ID0gdDsKKyAgICB9ICAgIAorfQorCitjbGFzcyBTaW1wbGUgeworfQorCitjbGFzcyBUZXN0eworICAgIExpbmtlZExpc3QgeDsKKyAgICBMaW5rZWRMaXN0IHk7CisgICAgCisgICAgdm9pZCBmKCl7CisJeS5zZXQoeC5nZXQoKSk7CisJU2ltcGxlIHQgPSAoU2ltcGxlKSB5LmdldCgpOworICAgIH0gICAKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTcvYmVmb3JlL3Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTcvYmVmb3JlL3Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNzE2NzNiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxNy9iZWZvcmUvdGVzdC5qYXZhCkBAIC0wLDAgKzEsMjAgQEAKK2NsYXNzIExpbmtlZExpc3Q8VD57CisgICAgVCB0OworICAgIHB1YmxpYyBUIGdldCgpe3JldHVybiB0O30KKyAgICBwdWJsaWMgdm9pZCBzZXQgKFQgdCl7CisJdGhpcy50ID0gdDsKKyAgICB9ICAgIAorfQorCitjbGFzcyBTaW1wbGUgeworfQorCitjbGFzcyBUZXN0eworICAgIExpbmtlZExpc3QgeDsKKyAgICBMaW5rZWRMaXN0IHk7CisgICAgCisgICAgdm9pZCBmKCl7CisJeS5zZXQoeC5nZXQoKSk7CisJU2ltcGxlIHQgPSAoU2ltcGxlKSB5LmdldCgpOworICAgIH0gICAKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTgvYWZ0ZXIvVGVzdC4xLml0ZW1zIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxOC9hZnRlci9UZXN0LjEuaXRlbXMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTIxNmZmMQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTgvYWZ0ZXIvVGVzdC4xLml0ZW1zCkBAIC0wLDAgKzEsMiBAQAorTGlua2VkTGlzdDxqYXZhLmxhbmcuSW50ZWdlcj5cblBzaUZpZWxkOngKK0xpbmtlZExpc3Q8amF2YS5sYW5nLkludGVnZXI+XG5Qc2lGaWVsZDp5CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDE4L2FmdGVyL1Rlc3QuaXRlbXMgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDE4L2FmdGVyL1Rlc3QuaXRlbXMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzYwMzI5MAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTgvYWZ0ZXIvVGVzdC5pdGVtcwpAQCAtMCwwICsxLDIgQEAKK0xpbmtlZExpc3RcblBzaUZpZWxkOngKK0xpbmtlZExpc3RcblBzaUZpZWxkOnkKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTgvYWZ0ZXIvdGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxOC9hZnRlci90ZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjMzZjU1OQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTgvYWZ0ZXIvdGVzdC5qYXZhCkBAIC0wLDAgKzEsMjAgQEAKK2NsYXNzIExpbmtlZExpc3Q8VD57CisgICAgVCB0OworICAgIHB1YmxpYyBUIGdldCgpe3JldHVybiB0O30KKyAgICBwdWJsaWMgdm9pZCBzZXQgKFQgdCl7CisJdGhpcy50ID0gdDsKKyAgICB9ICAgIAorfQorCitjbGFzcyBTaW1wbGUgeworfQorCitjbGFzcyBUZXN0eworICAgIExpbmtlZExpc3QgeTsKKyAgICBMaW5rZWRMaXN0IHg7CisgICAgCisgICAgdm9pZCBmKCl7CisJeD15OworICAgICAgICB4LnNldChuZXcgSW50ZWdlcigzKSk7CisgICAgfSAgIAorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxOC9iZWZvcmUvdGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxOC9iZWZvcmUvdGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIzM2Y1NTkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDE4L2JlZm9yZS90ZXN0LmphdmEKQEAgLTAsMCArMSwyMCBAQAorY2xhc3MgTGlua2VkTGlzdDxUPnsKKyAgICBUIHQ7CisgICAgcHVibGljIFQgZ2V0KCl7cmV0dXJuIHQ7fQorICAgIHB1YmxpYyB2b2lkIHNldCAoVCB0KXsKKwl0aGlzLnQgPSB0OworICAgIH0gICAgCit9CisKK2NsYXNzIFNpbXBsZSB7Cit9CisKK2NsYXNzIFRlc3R7CisgICAgTGlua2VkTGlzdCB5OworICAgIExpbmtlZExpc3QgeDsKKyAgICAKKyAgICB2b2lkIGYoKXsKKwl4PXk7CisgICAgICAgIHguc2V0KG5ldyBJbnRlZ2VyKDMpKTsKKyAgICB9ICAgCit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDE5L2FmdGVyL1Rlc3QuMS5pdGVtcyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTkvYWZ0ZXIvVGVzdC4xLml0ZW1zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVhYTY5NWUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDE5L2FmdGVyL1Rlc3QuMS5pdGVtcwpAQCAtMCwwICsxLDMgQEAKK0xpbmtlZExpc3Q8TGlua2VkTGlzdD5cblBzaUZpZWxkOngKK0xpbmtlZExpc3Q8amF2YS5sYW5nLk9iamVjdD5cblBzaUZpZWxkOnkKK0xpbmtlZExpc3RcblBzaVR5cGVDYXN0RXhwcmVzc2lvbjooTGlua2VkTGlzdCkgeC5nZXQoKQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxOS9hZnRlci9UZXN0Lml0ZW1zIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxOS9hZnRlci9UZXN0Lml0ZW1zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM2YjAxNmMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDE5L2FmdGVyL1Rlc3QuaXRlbXMKQEAgLTAsMCArMSwzIEBACitMaW5rZWRMaXN0XG5Qc2lGaWVsZDp4CitMaW5rZWRMaXN0XG5Qc2lGaWVsZDp5CitMaW5rZWRMaXN0XG5Qc2lUeXBlQ2FzdEV4cHJlc3Npb246KExpbmtlZExpc3QpIHguZ2V0KCkKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTkvYWZ0ZXIvdGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QxOS9hZnRlci90ZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2MyNGMxYjQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDE5L2FmdGVyL3Rlc3QuamF2YQpAQCAtMCwwICsxLDIwIEBACitjbGFzcyBMaW5rZWRMaXN0PFQ+eworICAgIFQgdDsKKyAgICBwdWJsaWMgVCBnZXQoKXtyZXR1cm4gdDt9CisgICAgcHVibGljIHZvaWQgc2V0IChUIHQpeworCXRoaXMudCA9IHQ7CisgICAgfSAgICAKK30KKworY2xhc3MgU2ltcGxlIHsKK30KKworY2xhc3MgVGVzdHsKKyAgICBMaW5rZWRMaXN0IHk7CisgICAgTGlua2VkTGlzdCB4OworICAgIAorICAgIHZvaWQgZigpeworCXkuc2V0KChMaW5rZWRMaXN0KSB4LmdldCgpKTsKKyAgICAgICAgeS5zZXQobmV3IEludGVnZXIoMykpOworICAgIH0gICAKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTkvYmVmb3JlL3Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTkvYmVmb3JlL3Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYzI0YzFiNAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MTkvYmVmb3JlL3Rlc3QuamF2YQpAQCAtMCwwICsxLDIwIEBACitjbGFzcyBMaW5rZWRMaXN0PFQ+eworICAgIFQgdDsKKyAgICBwdWJsaWMgVCBnZXQoKXtyZXR1cm4gdDt9CisgICAgcHVibGljIHZvaWQgc2V0IChUIHQpeworCXRoaXMudCA9IHQ7CisgICAgfSAgICAKK30KKworY2xhc3MgU2ltcGxlIHsKK30KKworY2xhc3MgVGVzdHsKKyAgICBMaW5rZWRMaXN0IHk7CisgICAgTGlua2VkTGlzdCB4OworICAgIAorICAgIHZvaWQgZigpeworCXkuc2V0KChMaW5rZWRMaXN0KSB4LmdldCgpKTsKKyAgICAgICAgeS5zZXQobmV3IEludGVnZXIoMykpOworICAgIH0gICAKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MjAvYWZ0ZXIvVGVzdC4xLml0ZW1zIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QyMC9hZnRlci9UZXN0LjEuaXRlbXMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjE2MGRiYwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MjAvYWZ0ZXIvVGVzdC4xLml0ZW1zCkBAIC0wLDAgKzEsMiBAQAorSXRlcmF0b3I8amF2YS5sYW5nLkludGVnZXI+XG5Qc2lMb2NhbFZhcmlhYmxlOmkKK0xpbmtlZExpc3Q8amF2YS5sYW5nLkludGVnZXI+XG5Qc2lMb2NhbFZhcmlhYmxlOnkKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MjAvYWZ0ZXIvVGVzdC5pdGVtcyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MjAvYWZ0ZXIvVGVzdC5pdGVtcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMmE0NWRjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QyMC9hZnRlci9UZXN0Lml0ZW1zCkBAIC0wLDAgKzEsMiBAQAorSXRlcmF0b3JcblBzaUxvY2FsVmFyaWFibGU6aQorTGlua2VkTGlzdFxuUHNpTG9jYWxWYXJpYWJsZTp5CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDIwL2FmdGVyL3Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MjAvYWZ0ZXIvdGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVmMDEyOWYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDIwL2FmdGVyL3Rlc3QuamF2YQpAQCAtMCwwICsxLDI2IEBACitjbGFzcyBJdGVyYXRvcjxUPnsKKyAgcHVibGljIFQgZ2V0KCl7cmV0dXJuIG51bGw7fQorfQorCitjbGFzcyBMaW5rZWRMaXN0PFQ+eworICAgIFQgdDsKKyAgICBwdWJsaWMgVCBnZXQoKXtyZXR1cm4gdDt9CisgICAgcHVibGljIHZvaWQgc2V0IChUIHQpeworCXRoaXMudCA9IHQ7CisgICAgfSAgICAKKyAgICBwdWJsaWMgSXRlcmF0b3I8VD4gaXRlcmF0b3IoKXsKKyAgICAgIHJldHVybiBudWxsOworICAgIH0KK30KKworY2xhc3MgU2ltcGxlIHsKK30KKworY2xhc3MgVGVzdHsKKyAgICB2b2lkIGYoKXsKKwlMaW5rZWRMaXN0IHk7IAorICAgICAgICB5LnNldChuZXcgSW50ZWdlcigzKSk7CisJSXRlcmF0b3IgaTsKKwlpID0geS5pdGVyYXRvcigpOworICAgIH0gICAKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MjAvYmVmb3JlL3Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MjAvYmVmb3JlL3Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZjAxMjlmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QyMC9iZWZvcmUvdGVzdC5qYXZhCkBAIC0wLDAgKzEsMjYgQEAKK2NsYXNzIEl0ZXJhdG9yPFQ+eworICBwdWJsaWMgVCBnZXQoKXtyZXR1cm4gbnVsbDt9Cit9CisKK2NsYXNzIExpbmtlZExpc3Q8VD57CisgICAgVCB0OworICAgIHB1YmxpYyBUIGdldCgpe3JldHVybiB0O30KKyAgICBwdWJsaWMgdm9pZCBzZXQgKFQgdCl7CisJdGhpcy50ID0gdDsKKyAgICB9ICAgIAorICAgIHB1YmxpYyBJdGVyYXRvcjxUPiBpdGVyYXRvcigpeworICAgICAgcmV0dXJuIG51bGw7CisgICAgfQorfQorCitjbGFzcyBTaW1wbGUgeworfQorCitjbGFzcyBUZXN0eworICAgIHZvaWQgZigpeworCUxpbmtlZExpc3QgeTsgCisgICAgICAgIHkuc2V0KG5ldyBJbnRlZ2VyKDMpKTsKKwlJdGVyYXRvciBpOworCWkgPSB5Lml0ZXJhdG9yKCk7CisgICAgfSAgIAorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QyMS9hZnRlci9UZXN0LjEuaXRlbXMgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDIxL2FmdGVyL1Rlc3QuMS5pdGVtcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NjcxYjRjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QyMS9hZnRlci9UZXN0LjEuaXRlbXMKQEAgLTAsMCArMSBAQAorTGlua2VkTGlzdDxqYXZhLmxhbmcuSW50ZWdlcj5cblBzaUZpZWxkOngKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MjEvYWZ0ZXIvVGVzdC5pdGVtcyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MjEvYWZ0ZXIvVGVzdC5pdGVtcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jOTRhMjYxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QyMS9hZnRlci9UZXN0Lml0ZW1zCkBAIC0wLDAgKzEgQEAKK0xpbmtlZExpc3RcblBzaUZpZWxkOngKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MjEvYWZ0ZXIvdGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QyMS9hZnRlci90ZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDY0MzdlMwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MjEvYWZ0ZXIvdGVzdC5qYXZhCkBAIC0wLDAgKzEsMjkgQEAKK2NsYXNzIEl0ZXJhdG9yPFQ+eworICBwdWJsaWMgVCBnZXQoKXtyZXR1cm4gbnVsbDt9Cit9CisKK2NsYXNzIExpbmtlZExpc3Q8VD57CisgICAgVCB0OworICAgIHB1YmxpYyBUIGdldCgpe3JldHVybiB0O30KKyAgICBwdWJsaWMgdm9pZCBzZXQgKFQgdCl7CisJdGhpcy50ID0gdDsKKyAgICB9ICAgIAorICAgIHB1YmxpYyBJdGVyYXRvcjxUPiBpdGVyYXRvcigpeworICAgICAgcmV0dXJuIG51bGw7CisgICAgfQorfQorCitjbGFzcyBTaW1wbGUgeworfQorCitjbGFzcyBUZXN0eworICAgTGlua2VkTGlzdCB4OworICAgCisgICBUZXN0KFRlc3QgdCl7CisgICAgICB4ID0gdC54OworICAgfSAgCisgICAKKyAgIHZvaWQgZiAoKXsKKyAgICAgeC5zZXQobmV3IEludGVnZXIoMykpOworICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QyMS9iZWZvcmUvdGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QyMS9iZWZvcmUvdGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ2NDM3ZTMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDIxL2JlZm9yZS90ZXN0LmphdmEKQEAgLTAsMCArMSwyOSBAQAorY2xhc3MgSXRlcmF0b3I8VD57CisgIHB1YmxpYyBUIGdldCgpe3JldHVybiBudWxsO30KK30KKworY2xhc3MgTGlua2VkTGlzdDxUPnsKKyAgICBUIHQ7CisgICAgcHVibGljIFQgZ2V0KCl7cmV0dXJuIHQ7fQorICAgIHB1YmxpYyB2b2lkIHNldCAoVCB0KXsKKwl0aGlzLnQgPSB0OworICAgIH0gICAgCisgICAgcHVibGljIEl0ZXJhdG9yPFQ+IGl0ZXJhdG9yKCl7CisgICAgICByZXR1cm4gbnVsbDsKKyAgICB9Cit9CisKK2NsYXNzIFNpbXBsZSB7Cit9CisKK2NsYXNzIFRlc3R7CisgICBMaW5rZWRMaXN0IHg7CisgICAKKyAgIFRlc3QoVGVzdCB0KXsKKyAgICAgIHggPSB0Lng7CisgICB9ICAKKyAgIAorICAgdm9pZCBmICgpeworICAgICB4LnNldChuZXcgSW50ZWdlcigzKSk7CisgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDIyL2FmdGVyL1Rlc3QuMS5pdGVtcyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MjIvYWZ0ZXIvVGVzdC4xLml0ZW1zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg2NzFiNGMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDIyL2FmdGVyL1Rlc3QuMS5pdGVtcwpAQCAtMCwwICsxIEBACitMaW5rZWRMaXN0PGphdmEubGFuZy5JbnRlZ2VyPlxuUHNpRmllbGQ6eApkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QyMi9hZnRlci9UZXN0Lml0ZW1zIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QyMi9hZnRlci9UZXN0Lml0ZW1zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM5NGEyNjEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDIyL2FmdGVyL1Rlc3QuaXRlbXMKQEAgLTAsMCArMSBAQAorTGlua2VkTGlzdFxuUHNpRmllbGQ6eApkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QyMi9hZnRlci90ZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDIyL2FmdGVyL3Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40Y2MxMjhjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QyMi9hZnRlci90ZXN0LmphdmEKQEAgLTAsMCArMSwyNSBAQAorY2xhc3MgSXRlcmF0b3I8VD57CisgIHB1YmxpYyBUIGdldCgpe3JldHVybiBudWxsO30KK30KKworY2xhc3MgTGlua2VkTGlzdDxUPnsKKyAgICBUIHQ7CisgICAgcHVibGljIEl0ZXJhdG9yPFQ+IGl0ZXJhdG9yKCl7CisgICAgICByZXR1cm4gbnVsbDsKKyAgICB9Cit9CisKK2NsYXNzIFNpbXBsZSB7Cit9CisKK2NsYXNzIFRlc3R7CisgICBMaW5rZWRMaXN0IHg7CisgICAKKyAgIFRlc3QoVGVzdCB0KXsKKyAgICAgIHggPSB0Lng7CisgICB9ICAKKyAgIAorICAgdm9pZCBmICgpeworICAgICB4LnQgPSBuZXcgSW50ZWdlcigzKTsKKyAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MjIvYmVmb3JlL3Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MjIvYmVmb3JlL3Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40Y2MxMjhjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QyMi9iZWZvcmUvdGVzdC5qYXZhCkBAIC0wLDAgKzEsMjUgQEAKK2NsYXNzIEl0ZXJhdG9yPFQ+eworICBwdWJsaWMgVCBnZXQoKXtyZXR1cm4gbnVsbDt9Cit9CisKK2NsYXNzIExpbmtlZExpc3Q8VD57CisgICAgVCB0OworICAgIHB1YmxpYyBJdGVyYXRvcjxUPiBpdGVyYXRvcigpeworICAgICAgcmV0dXJuIG51bGw7CisgICAgfQorfQorCitjbGFzcyBTaW1wbGUgeworfQorCitjbGFzcyBUZXN0eworICAgTGlua2VkTGlzdCB4OworICAgCisgICBUZXN0KFRlc3QgdCl7CisgICAgICB4ID0gdC54OworICAgfSAgCisgICAKKyAgIHZvaWQgZiAoKXsKKyAgICAgeC50ID0gbmV3IEludGVnZXIoMyk7CisgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDIzL2FmdGVyL1Rlc3QuMS5pdGVtcyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MjMvYWZ0ZXIvVGVzdC4xLml0ZW1zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY3MGI4OTgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDIzL2FmdGVyL1Rlc3QuMS5pdGVtcwpAQCAtMCwwICsxLDIgQEAKK0xpbmtlZExpc3Q8amF2YS5sYW5nLlN0cmluZz5cblBzaUZpZWxkOngKK0xpbmtlZExpc3Q8amF2YS5sYW5nLlN0cmluZz5cblBzaUZpZWxkOnkKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MjMvYWZ0ZXIvVGVzdC5pdGVtcyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MjMvYWZ0ZXIvVGVzdC5pdGVtcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNjAzMjkwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QyMy9hZnRlci9UZXN0Lml0ZW1zCkBAIC0wLDAgKzEsMiBAQAorTGlua2VkTGlzdFxuUHNpRmllbGQ6eAorTGlua2VkTGlzdFxuUHNpRmllbGQ6eQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QyMy9hZnRlci90ZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDIzL2FmdGVyL3Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNzgwYjYyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QyMy9hZnRlci90ZXN0LmphdmEKQEAgLTAsMCArMSwyOCBAQAorY2xhc3MgSXRlcmF0b3I8VD57CisgIHB1YmxpYyBUIGdldCgpe3JldHVybiBudWxsO30KK30KKworY2xhc3MgTGlua2VkTGlzdDxUPnsKKyAgICBUIHQ7CisgICAgcHVibGljIEl0ZXJhdG9yPFQ+IGl0ZXJhdG9yKCl7CisgICAgICByZXR1cm4gbnVsbDsKKyAgICB9CisgICAgVCBnZXQoKXtyZXR1cm4gdDt9Cit9CisKK2NsYXNzIFNpbXBsZSB7Cit9CisKK2NsYXNzIFRlc3R7CisgICBMaW5rZWRMaXN0IHg7CisgICBMaW5rZWRMaXN0IHk7CisgICAKKyAgIFRlc3QoVGVzdCB0KXsKKyAgICAgIHggPSB0Lng7CisgICB9ICAKKyAgIAorICAgdm9pZCBmICgpeworICAgICB4LnQgPSB5LmdldCgpOworICAgICB5LnQgPSBuZXcgU3RyaW5nKCk7CisgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDIzL2JlZm9yZS90ZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDIzL2JlZm9yZS90ZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjc4MGI2MgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MjMvYmVmb3JlL3Rlc3QuamF2YQpAQCAtMCwwICsxLDI4IEBACitjbGFzcyBJdGVyYXRvcjxUPnsKKyAgcHVibGljIFQgZ2V0KCl7cmV0dXJuIG51bGw7fQorfQorCitjbGFzcyBMaW5rZWRMaXN0PFQ+eworICAgIFQgdDsKKyAgICBwdWJsaWMgSXRlcmF0b3I8VD4gaXRlcmF0b3IoKXsKKyAgICAgIHJldHVybiBudWxsOworICAgIH0KKyAgICBUIGdldCgpe3JldHVybiB0O30KK30KKworY2xhc3MgU2ltcGxlIHsKK30KKworY2xhc3MgVGVzdHsKKyAgIExpbmtlZExpc3QgeDsKKyAgIExpbmtlZExpc3QgeTsKKyAgIAorICAgVGVzdChUZXN0IHQpeworICAgICAgeCA9IHQueDsKKyAgIH0gIAorICAgCisgICB2b2lkIGYgKCl7CisgICAgIHgudCA9IHkuZ2V0KCk7CisgICAgIHkudCA9IG5ldyBTdHJpbmcoKTsKKyAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MjQvYWZ0ZXIvVGVzdC4xLml0ZW1zIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QyNC9hZnRlci9UZXN0LjEuaXRlbXMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjcwYjg5OAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MjQvYWZ0ZXIvVGVzdC4xLml0ZW1zCkBAIC0wLDAgKzEsMiBAQAorTGlua2VkTGlzdDxqYXZhLmxhbmcuU3RyaW5nPlxuUHNpRmllbGQ6eAorTGlua2VkTGlzdDxqYXZhLmxhbmcuU3RyaW5nPlxuUHNpRmllbGQ6eQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QyNC9hZnRlci9UZXN0Lml0ZW1zIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QyNC9hZnRlci9UZXN0Lml0ZW1zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM2MDMyOTAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDI0L2FmdGVyL1Rlc3QuaXRlbXMKQEAgLTAsMCArMSwyIEBACitMaW5rZWRMaXN0XG5Qc2lGaWVsZDp4CitMaW5rZWRMaXN0XG5Qc2lGaWVsZDp5CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDI0L2FmdGVyL3Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MjQvYWZ0ZXIvdGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE2YTgzOGUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDI0L2FmdGVyL3Rlc3QuamF2YQpAQCAtMCwwICsxLDMxIEBACitjbGFzcyBJdGVyYXRvcjxUPnsKKyAgcHVibGljIFQgZ2V0KCl7cmV0dXJuIG51bGw7fQorfQorCitjbGFzcyBMaW5rZWRMaXN0PFQ+eworICAgIGludCBpOworICAgIExpbmtlZExpc3Q8VD4gejsKKyAgICBUIHQ7CisgICAgcHVibGljIEl0ZXJhdG9yPFQ+IGl0ZXJhdG9yKCl7CisgICAgICByZXR1cm4gbnVsbDsKKyAgICB9CisgICAgVCBnZXQoKXtyZXR1cm4gdDt9Cit9CisKK2NsYXNzIFNpbXBsZSB7Cit9CisKK2NsYXNzIFRlc3R7CisgICBMaW5rZWRMaXN0IHg7CisgICBMaW5rZWRMaXN0IHk7CisgICAKKyAgIFRlc3QoVGVzdCB0KXsKKyAgICAgIHggPSB0Lng7CisgICB9ICAKKyAgIAorICAgdm9pZCBmICgpeworICAgICB4LnQgPSB5LmdldCgpOworICAgICB5LnoudCA9IG5ldyBTdHJpbmcoKTsKKyAgICAgeC5pID0gMzsKKyAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MjQvYmVmb3JlL3Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MjQvYmVmb3JlL3Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNmE4MzhlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QyNC9iZWZvcmUvdGVzdC5qYXZhCkBAIC0wLDAgKzEsMzEgQEAKK2NsYXNzIEl0ZXJhdG9yPFQ+eworICBwdWJsaWMgVCBnZXQoKXtyZXR1cm4gbnVsbDt9Cit9CisKK2NsYXNzIExpbmtlZExpc3Q8VD57CisgICAgaW50IGk7CisgICAgTGlua2VkTGlzdDxUPiB6OworICAgIFQgdDsKKyAgICBwdWJsaWMgSXRlcmF0b3I8VD4gaXRlcmF0b3IoKXsKKyAgICAgIHJldHVybiBudWxsOworICAgIH0KKyAgICBUIGdldCgpe3JldHVybiB0O30KK30KKworY2xhc3MgU2ltcGxlIHsKK30KKworY2xhc3MgVGVzdHsKKyAgIExpbmtlZExpc3QgeDsKKyAgIExpbmtlZExpc3QgeTsKKyAgIAorICAgVGVzdChUZXN0IHQpeworICAgICAgeCA9IHQueDsKKyAgIH0gIAorICAgCisgICB2b2lkIGYgKCl7CisgICAgIHgudCA9IHkuZ2V0KCk7CisgICAgIHkuei50ID0gbmV3IFN0cmluZygpOworICAgICB4LmkgPSAzOworICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QyNS9hZnRlci9UZXN0LjEuaXRlbXMgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDI1L2FmdGVyL1Rlc3QuMS5pdGVtcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYTQ3MTUwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QyNS9hZnRlci9UZXN0LjEuaXRlbXMKQEAgLTAsMCArMSBAQAorTGlua2VkTGlzdDxqYXZhLmxhbmcuU3RyaW5nPlxuUHNpRmllbGQ6eQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QyNS9hZnRlci9UZXN0Lml0ZW1zIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QyNS9hZnRlci9UZXN0Lml0ZW1zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk0NmUyNmYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDI1L2FmdGVyL1Rlc3QuaXRlbXMKQEAgLTAsMCArMSBAQAorTGlua2VkTGlzdFxuUHNpRmllbGQ6eQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QyNS9hZnRlci90ZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDI1L2FmdGVyL3Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZDc0Nzc4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QyNS9hZnRlci90ZXN0LmphdmEKQEAgLTAsMCArMSwyOCBAQAorY2xhc3MgSXRlcmF0b3I8VD57CisgIHB1YmxpYyBUIGdldCgpe3JldHVybiBudWxsO30KK30KKworY2xhc3MgTGlua2VkTGlzdDxUPnsKKyAgICBMaW5rZWRMaXN0PFQ+IHo7CisgICAgVCB0OworICAgIHB1YmxpYyBJdGVyYXRvcjxUPiBpdGVyYXRvcigpeworICAgICAgcmV0dXJuIG51bGw7CisgICAgfQorICAgIFQgZ2V0KCl7cmV0dXJuIHQ7fQorICAgIHZvaWQgc2V0KFQgdCl7fQorfQorCitjbGFzcyBTaW1wbGUgeworfQorCitjbGFzcyBUZXN0eworICAgTGlua2VkTGlzdCB5OworICAgCisgICBUZXN0KFRlc3QgdCl7CisgICAgICB4ID0gdC54OworICAgfSAgCisgICAKKyAgIHZvaWQgZiAoKXsKKyAgICAgeS56LnQgPSBuZXcgU3RyaW5nKCk7CisgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDI1L2JlZm9yZS90ZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDI1L2JlZm9yZS90ZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWQ3NDc3OAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MjUvYmVmb3JlL3Rlc3QuamF2YQpAQCAtMCwwICsxLDI4IEBACitjbGFzcyBJdGVyYXRvcjxUPnsKKyAgcHVibGljIFQgZ2V0KCl7cmV0dXJuIG51bGw7fQorfQorCitjbGFzcyBMaW5rZWRMaXN0PFQ+eworICAgIExpbmtlZExpc3Q8VD4gejsKKyAgICBUIHQ7CisgICAgcHVibGljIEl0ZXJhdG9yPFQ+IGl0ZXJhdG9yKCl7CisgICAgICByZXR1cm4gbnVsbDsKKyAgICB9CisgICAgVCBnZXQoKXtyZXR1cm4gdDt9CisgICAgdm9pZCBzZXQoVCB0KXt9Cit9CisKK2NsYXNzIFNpbXBsZSB7Cit9CisKK2NsYXNzIFRlc3R7CisgICBMaW5rZWRMaXN0IHk7CisgICAKKyAgIFRlc3QoVGVzdCB0KXsKKyAgICAgIHggPSB0Lng7CisgICB9ICAKKyAgIAorICAgdm9pZCBmICgpeworICAgICB5LnoudCA9IG5ldyBTdHJpbmcoKTsKKyAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MjYvYWZ0ZXIvVGVzdC4xLml0ZW1zIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QyNi9hZnRlci9UZXN0LjEuaXRlbXMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWE0NzE1MAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MjYvYWZ0ZXIvVGVzdC4xLml0ZW1zCkBAIC0wLDAgKzEgQEAKK0xpbmtlZExpc3Q8amF2YS5sYW5nLlN0cmluZz5cblBzaUZpZWxkOnkKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MjYvYWZ0ZXIvVGVzdC5pdGVtcyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MjYvYWZ0ZXIvVGVzdC5pdGVtcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NDZlMjZmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QyNi9hZnRlci9UZXN0Lml0ZW1zCkBAIC0wLDAgKzEgQEAKK0xpbmtlZExpc3RcblBzaUZpZWxkOnkKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MjYvYWZ0ZXIvdGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QyNi9hZnRlci90ZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjkyZTBkYgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MjYvYWZ0ZXIvdGVzdC5qYXZhCkBAIC0wLDAgKzEsMTggQEAKK2NsYXNzIEl0ZXJhdG9yPFQ+eworICBwdWJsaWMgVCBnZXQoKXtyZXR1cm4gbnVsbDt9Cit9CisKK2NsYXNzIExpbmtlZExpc3Q8VD57CisgICAgSXRlcmF0b3I8TGlua2VkTGlzdDxUPj4gdDsKK30KKworY2xhc3MgU2ltcGxlIHsKK30KKworY2xhc3MgVGVzdHsKKyAgIExpbmtlZExpc3QgeTsKKworICAgdm9pZCBmICgpeworICAgICB5LnQgPSBuZXcgSXRlcmF0b3I8TGlua2VkTGlzdDxTdHJpbmc+PigpOworICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QyNi9iZWZvcmUvdGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QyNi9iZWZvcmUvdGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI5MmUwZGIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDI2L2JlZm9yZS90ZXN0LmphdmEKQEAgLTAsMCArMSwxOCBAQAorY2xhc3MgSXRlcmF0b3I8VD57CisgIHB1YmxpYyBUIGdldCgpe3JldHVybiBudWxsO30KK30KKworY2xhc3MgTGlua2VkTGlzdDxUPnsKKyAgICBJdGVyYXRvcjxMaW5rZWRMaXN0PFQ+PiB0OworfQorCitjbGFzcyBTaW1wbGUgeworfQorCitjbGFzcyBUZXN0eworICAgTGlua2VkTGlzdCB5OworCisgICB2b2lkIGYgKCl7CisgICAgIHkudCA9IG5ldyBJdGVyYXRvcjxMaW5rZWRMaXN0PFN0cmluZz4+KCk7CisgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDI3L2FmdGVyL1Rlc3QuMS5pdGVtcyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MjcvYWZ0ZXIvVGVzdC4xLml0ZW1zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk0NmUyNmYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDI3L2FmdGVyL1Rlc3QuMS5pdGVtcwpAQCAtMCwwICsxIEBACitMaW5rZWRMaXN0XG5Qc2lGaWVsZDp5CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDI3L2FmdGVyL1Rlc3QuaXRlbXMgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDI3L2FmdGVyL1Rlc3QuaXRlbXMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTQ2ZTI2ZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MjcvYWZ0ZXIvVGVzdC5pdGVtcwpAQCAtMCwwICsxIEBACitMaW5rZWRMaXN0XG5Qc2lGaWVsZDp5CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDI3L2FmdGVyL3Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MjcvYWZ0ZXIvdGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcxM2ViZmMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDI3L2FmdGVyL3Rlc3QuamF2YQpAQCAtMCwwICsxLDI4IEBACitjbGFzcyBJdGVyYXRvcjxUPnsKKyAgcHVibGljIFQgZ2V0KCl7cmV0dXJuIG51bGw7fQorfQorCitjbGFzcyBMaW5rZWRMaXN0PFQ+eworICAgIExpbmtlZExpc3QgejsKKyAgICBUIHQ7CisgICAgcHVibGljIEl0ZXJhdG9yPFQ+IGl0ZXJhdG9yKCl7CisgICAgICByZXR1cm4gbnVsbDsKKyAgICB9CisgICAgVCBnZXQoKXtyZXR1cm4gdDt9CisgICAgdm9pZCBzZXQoVCB0KXt9Cit9CisKK2NsYXNzIFNpbXBsZSB7Cit9CisKK2NsYXNzIFRlc3R7CisgICBMaW5rZWRMaXN0IHk7CisgICAKKyAgIFRlc3QoVGVzdCB0KXsKKyAgICAgIHggPSB0Lng7CisgICB9ICAKKyAgIAorICAgdm9pZCBmICgpeworICAgICB5LnoudCA9IG5ldyBTdHJpbmcoKTsKKyAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MjcvYmVmb3JlL3Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MjcvYmVmb3JlL3Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MTNlYmZjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QyNy9iZWZvcmUvdGVzdC5qYXZhCkBAIC0wLDAgKzEsMjggQEAKK2NsYXNzIEl0ZXJhdG9yPFQ+eworICBwdWJsaWMgVCBnZXQoKXtyZXR1cm4gbnVsbDt9Cit9CisKK2NsYXNzIExpbmtlZExpc3Q8VD57CisgICAgTGlua2VkTGlzdCB6OworICAgIFQgdDsKKyAgICBwdWJsaWMgSXRlcmF0b3I8VD4gaXRlcmF0b3IoKXsKKyAgICAgIHJldHVybiBudWxsOworICAgIH0KKyAgICBUIGdldCgpe3JldHVybiB0O30KKyAgICB2b2lkIHNldChUIHQpe30KK30KKworY2xhc3MgU2ltcGxlIHsKK30KKworY2xhc3MgVGVzdHsKKyAgIExpbmtlZExpc3QgeTsKKyAgIAorICAgVGVzdChUZXN0IHQpeworICAgICAgeCA9IHQueDsKKyAgIH0gIAorICAgCisgICB2b2lkIGYgKCl7CisgICAgIHkuei50ID0gbmV3IFN0cmluZygpOworICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QyOC9hZnRlci9UZXN0LjEuaXRlbXMgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDI4L2FmdGVyL1Rlc3QuMS5pdGVtcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MTI3NTRjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QyOC9hZnRlci9UZXN0LjEuaXRlbXMKQEAgLTAsMCArMSBAQAorTGlua2VkTGlzdDxTaW1wbGU+XG5Qc2lGaWVsZDp5CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDI4L2FmdGVyL1Rlc3QuaXRlbXMgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDI4L2FmdGVyL1Rlc3QuaXRlbXMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTQ2ZTI2ZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MjgvYWZ0ZXIvVGVzdC5pdGVtcwpAQCAtMCwwICsxIEBACitMaW5rZWRMaXN0XG5Qc2lGaWVsZDp5CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDI4L2FmdGVyL3Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MjgvYWZ0ZXIvdGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdmYWI2YmQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDI4L2FmdGVyL3Rlc3QuamF2YQpAQCAtMCwwICsxLDEzIEBACitjbGFzcyBMaW5rZWRMaXN0PFQ+eworICAgIFQgdDsKKyAgICBUIGdldCgpe3JldHVybiB0O30KKyAgICB2b2lkIHNldChUIHQpe30KK30KKworY2xhc3MgU2ltcGxlIHsKK30KKworY2xhc3MgVGVzdHsKKyAgIExpbmtlZExpc3Q8U2ltcGxlPiB4OworICAgTGlua2VkTGlzdCB5ID0geDsKK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MjgvYmVmb3JlL3Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MjgvYmVmb3JlL3Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZmFiNmJkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QyOC9iZWZvcmUvdGVzdC5qYXZhCkBAIC0wLDAgKzEsMTMgQEAKK2NsYXNzIExpbmtlZExpc3Q8VD57CisgICAgVCB0OworICAgIFQgZ2V0KCl7cmV0dXJuIHQ7fQorICAgIHZvaWQgc2V0KFQgdCl7fQorfQorCitjbGFzcyBTaW1wbGUgeworfQorCitjbGFzcyBUZXN0eworICAgTGlua2VkTGlzdDxTaW1wbGU+IHg7CisgICBMaW5rZWRMaXN0IHkgPSB4OworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QyOS9hZnRlci9UZXN0LjEuaXRlbXMgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDI5L2FmdGVyL1Rlc3QuMS5pdGVtcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZDcyYWNiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QyOS9hZnRlci9UZXN0LjEuaXRlbXMKQEAgLTAsMCArMSBAQAorTGlua2VkTGlzdDxTaW1wbGU+XG5Qc2lMb2NhbFZhcmlhYmxlOnkKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MjkvYWZ0ZXIvVGVzdC5pdGVtcyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MjkvYWZ0ZXIvVGVzdC5pdGVtcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZWM0YmJmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QyOS9hZnRlci9UZXN0Lml0ZW1zCkBAIC0wLDAgKzEgQEAKK0xpbmtlZExpc3RcblBzaUxvY2FsVmFyaWFibGU6eQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QyOS9hZnRlci90ZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDI5L2FmdGVyL3Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNDM5MGM3MgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MjkvYWZ0ZXIvdGVzdC5qYXZhCkBAIC0wLDAgKzEsMTUgQEAKK2NsYXNzIExpbmtlZExpc3Q8VD57CisgICAgVCB0OworICAgIFQgZ2V0KCl7cmV0dXJuIHQ7fQorICAgIHZvaWQgc2V0KFQgdCl7fQorfQorCitjbGFzcyBTaW1wbGUgeworfQorCitjbGFzcyBUZXN0eworICAgdm9pZCBmICgpeworICAgTGlua2VkTGlzdDxTaW1wbGU+IHg7CisgICBMaW5rZWRMaXN0IHkgPSB4OworICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QyOS9iZWZvcmUvdGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QyOS9iZWZvcmUvdGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA0MzkwYzcyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QyOS9iZWZvcmUvdGVzdC5qYXZhCkBAIC0wLDAgKzEsMTUgQEAKK2NsYXNzIExpbmtlZExpc3Q8VD57CisgICAgVCB0OworICAgIFQgZ2V0KCl7cmV0dXJuIHQ7fQorICAgIHZvaWQgc2V0KFQgdCl7fQorfQorCitjbGFzcyBTaW1wbGUgeworfQorCitjbGFzcyBUZXN0eworICAgdm9pZCBmICgpeworICAgTGlua2VkTGlzdDxTaW1wbGU+IHg7CisgICBMaW5rZWRMaXN0IHkgPSB4OworICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QzMC9hZnRlci9UZXN0LjEuaXRlbXMgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDMwL2FmdGVyL1Rlc3QuMS5pdGVtcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZGQ5ZTUzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QzMC9hZnRlci9UZXN0LjEuaXRlbXMKQEAgLTAsMCArMSwyIEBACitMaW5rZWRMaXN0PGphdmEubGFuZy5JbnRlZ2VyPlxuUHNpTG9jYWxWYXJpYWJsZTp5CitMaW5rZWRMaXN0PGphdmEubGFuZy5JbnRlZ2VyPlxubmV3CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDMwL2FmdGVyL1Rlc3QuaXRlbXMgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDMwL2FmdGVyL1Rlc3QuaXRlbXMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTZlYzJkMgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MzAvYWZ0ZXIvVGVzdC5pdGVtcwpAQCAtMCwwICsxLDIgQEAKK0xpbmtlZExpc3RcblBzaUxvY2FsVmFyaWFibGU6eQorTGlua2VkTGlzdFxubmV3CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDMwL2FmdGVyL3Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MzAvYWZ0ZXIvdGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBiMmUyNzMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDMwL2FmdGVyL3Rlc3QuamF2YQpAQCAtMCwwICsxLDE1IEBACitjbGFzcyBMaW5rZWRMaXN0PFQ+eworICAgIFQgdDsKKyAgICBUIGdldCgpe3JldHVybiB0O30KKyAgICB2b2lkIHNldChUIHQpe30KK30KKworY2xhc3MgU2ltcGxlIHsKK30KKworY2xhc3MgVGVzdHsKKyAgIHZvaWQgZiAoKXsKKyAgICAgIExpbmtlZExpc3QgeSA9IG5ldyBMaW5rZWRMaXN0KCk7CisgICAgICB5LnNldChuZXcgSW50ZWdlcigzKSk7CisgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDMwL2JlZm9yZS90ZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDMwL2JlZm9yZS90ZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGIyZTI3MwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MzAvYmVmb3JlL3Rlc3QuamF2YQpAQCAtMCwwICsxLDE1IEBACitjbGFzcyBMaW5rZWRMaXN0PFQ+eworICAgIFQgdDsKKyAgICBUIGdldCgpe3JldHVybiB0O30KKyAgICB2b2lkIHNldChUIHQpe30KK30KKworY2xhc3MgU2ltcGxlIHsKK30KKworY2xhc3MgVGVzdHsKKyAgIHZvaWQgZiAoKXsKKyAgICAgIExpbmtlZExpc3QgeSA9IG5ldyBMaW5rZWRMaXN0KCk7CisgICAgICB5LnNldChuZXcgSW50ZWdlcigzKSk7CisgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDMxL2FmdGVyL1Rlc3QuMS5pdGVtcyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MzEvYWZ0ZXIvVGVzdC4xLml0ZW1zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhkZDllNTMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDMxL2FmdGVyL1Rlc3QuMS5pdGVtcwpAQCAtMCwwICsxLDIgQEAKK0xpbmtlZExpc3Q8amF2YS5sYW5nLkludGVnZXI+XG5Qc2lMb2NhbFZhcmlhYmxlOnkKK0xpbmtlZExpc3Q8amF2YS5sYW5nLkludGVnZXI+XG5uZXcKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MzEvYWZ0ZXIvVGVzdC5pdGVtcyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MzEvYWZ0ZXIvVGVzdC5pdGVtcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNmVjMmQyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QzMS9hZnRlci9UZXN0Lml0ZW1zCkBAIC0wLDAgKzEsMiBAQAorTGlua2VkTGlzdFxuUHNpTG9jYWxWYXJpYWJsZTp5CitMaW5rZWRMaXN0XG5uZXcKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MzEvYWZ0ZXIvdGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QzMS9hZnRlci90ZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTIwMjZmYgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MzEvYWZ0ZXIvdGVzdC5qYXZhCkBAIC0wLDAgKzEsMTYgQEAKK2NsYXNzIExpbmtlZExpc3Q8VD57CisgICAgVCB0OworICAgIFQgZ2V0KCl7cmV0dXJuIHQ7fQorICAgIHZvaWQgc2V0KFQgdCl7fQorfQorCitjbGFzcyBTaW1wbGUgeworfQorCitjbGFzcyBUZXN0eworICAgdm9pZCBmICgpeworICAgICAgTGlua2VkTGlzdCB5OworICAgICAgeSA9IG5ldyBMaW5rZWRMaXN0KCk7CisgICAgICB5LnNldChuZXcgSW50ZWdlcigzKSk7CisgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDMxL2JlZm9yZS90ZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDMxL2JlZm9yZS90ZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTIwMjZmYgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MzEvYmVmb3JlL3Rlc3QuamF2YQpAQCAtMCwwICsxLDE2IEBACitjbGFzcyBMaW5rZWRMaXN0PFQ+eworICAgIFQgdDsKKyAgICBUIGdldCgpe3JldHVybiB0O30KKyAgICB2b2lkIHNldChUIHQpe30KK30KKworY2xhc3MgU2ltcGxlIHsKK30KKworY2xhc3MgVGVzdHsKKyAgIHZvaWQgZiAoKXsKKyAgICAgIExpbmtlZExpc3QgeTsKKyAgICAgIHkgPSBuZXcgTGlua2VkTGlzdCgpOworICAgICAgeS5zZXQobmV3IEludGVnZXIoMykpOworICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QzMi9hZnRlci9UZXN0LjEuaXRlbXMgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDMyL2FmdGVyL1Rlc3QuMS5pdGVtcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZmNjYmQ3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QzMi9hZnRlci9UZXN0LjEuaXRlbXMKQEAgLTAsMCArMSwyIEBACitMaW5rZWRMaXN0PDw6Qj5cbm5ldworTGlua2VkTGlzdDxqYXZhLmxhbmcuT2JqZWN0PlxuUHNpTG9jYWxWYXJpYWJsZTp5CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDMyL2FmdGVyL1Rlc3QuaXRlbXMgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDMyL2FmdGVyL1Rlc3QuaXRlbXMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTZlYzJkMgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MzIvYWZ0ZXIvVGVzdC5pdGVtcwpAQCAtMCwwICsxLDIgQEAKK0xpbmtlZExpc3RcblBzaUxvY2FsVmFyaWFibGU6eQorTGlua2VkTGlzdFxubmV3CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDMyL2FmdGVyL3Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MzIvYWZ0ZXIvdGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI4MTExNTlkYwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MzIvYWZ0ZXIvdGVzdC5qYXZhCkBAIC0wLDAgKzEsMjIgQEAKK2NsYXNzIExpbmtlZExpc3Q8VD57CisgICAgVCB0OworICAgIFQgZ2V0KCl7cmV0dXJuIHQ7fQorICAgIHZvaWQgc2V0KFQgdCl7fQorfQorCitjbGFzcyBBIHsKK30KKworY2xhc3MgQiBleHRlbmRzIEEgeworfQorCitjbGFzcyBDIGV4dGVuZHMgQSB7Cit9CisKK2NsYXNzIFRlc3R7CisgICB2b2lkIGYgKCl7CisgICAgICBMaW5rZWRMaXN0IHkgPSBuZXcgTGlua2VkTGlzdCgpOworICAgICAgQiBiID0gKEIpIHkuZ2V0KCk7CisgICAgICBDIGMgPSAoQykgeS5nZXQoKTsKKyAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MzIvYmVmb3JlL3Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MzIvYmVmb3JlL3Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yODExMTU5ZGMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDMyL2JlZm9yZS90ZXN0LmphdmEKQEAgLTAsMCArMSwyMiBAQAorY2xhc3MgTGlua2VkTGlzdDxUPnsKKyAgICBUIHQ7CisgICAgVCBnZXQoKXtyZXR1cm4gdDt9CisgICAgdm9pZCBzZXQoVCB0KXt9Cit9CisKK2NsYXNzIEEgeworfQorCitjbGFzcyBCIGV4dGVuZHMgQSB7Cit9CisKK2NsYXNzIEMgZXh0ZW5kcyBBIHsKK30KKworY2xhc3MgVGVzdHsKKyAgIHZvaWQgZiAoKXsKKyAgICAgIExpbmtlZExpc3QgeSA9IG5ldyBMaW5rZWRMaXN0KCk7CisgICAgICBCIGIgPSAoQikgeS5nZXQoKTsKKyAgICAgIEMgYyA9IChDKSB5LmdldCgpOworICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QzMy9hZnRlci9UZXN0LjEuaXRlbXMgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDMzL2FmdGVyL1Rlc3QuMS5pdGVtcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYjIwZWM3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QzMy9hZnRlci9UZXN0LjEuaXRlbXMKQEAgLTAsMCArMSBAQAorTGlua2VkTGlzdDxqYXZhLmxhbmcuSW50ZWdlcj5cblBzaUxvY2FsVmFyaWFibGU6eQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QzMy9hZnRlci9UZXN0Lml0ZW1zIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QzMy9hZnRlci9UZXN0Lml0ZW1zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNlYzRiYmYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDMzL2FmdGVyL1Rlc3QuaXRlbXMKQEAgLTAsMCArMSBAQAorTGlua2VkTGlzdFxuUHNpTG9jYWxWYXJpYWJsZTp5CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDMzL2FmdGVyL3Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MzMvYWZ0ZXIvdGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQzYjg4ZjkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDMzL2FmdGVyL3Rlc3QuamF2YQpAQCAtMCwwICsxLDE0IEBACitjbGFzcyBMaW5rZWRMaXN0PFQ+eworICAgIFQgdDsKKyAgICBUIGdldCgpe3JldHVybiB0O30KKyAgICB2b2lkIHNldChUIHQpe30KK30KKworY2xhc3MgTGlzdCBleHRlbmRzIExpbmtlZExpc3Q8SW50ZWdlcj57Cit9CisKK2NsYXNzIFRlc3R7CisgICB2b2lkIGYgKCl7CisgICAgICBMaW5rZWRMaXN0IHkgPSBuZXcgTGlzdCgpOyAgICAgIAorICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QzMy9iZWZvcmUvdGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QzMy9iZWZvcmUvdGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQzYjg4ZjkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDMzL2JlZm9yZS90ZXN0LmphdmEKQEAgLTAsMCArMSwxNCBAQAorY2xhc3MgTGlua2VkTGlzdDxUPnsKKyAgICBUIHQ7CisgICAgVCBnZXQoKXtyZXR1cm4gdDt9CisgICAgdm9pZCBzZXQoVCB0KXt9Cit9CisKK2NsYXNzIExpc3QgZXh0ZW5kcyBMaW5rZWRMaXN0PEludGVnZXI+eworfQorCitjbGFzcyBUZXN0eworICAgdm9pZCBmICgpeworICAgICAgTGlua2VkTGlzdCB5ID0gbmV3IExpc3QoKTsgICAgICAKKyAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MzQvYWZ0ZXIvVGVzdC4xLml0ZW1zIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QzNC9hZnRlci9UZXN0LjEuaXRlbXMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGIyMGVjNwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MzQvYWZ0ZXIvVGVzdC4xLml0ZW1zCkBAIC0wLDAgKzEgQEAKK0xpbmtlZExpc3Q8amF2YS5sYW5nLkludGVnZXI+XG5Qc2lMb2NhbFZhcmlhYmxlOnkKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MzQvYWZ0ZXIvVGVzdC5pdGVtcyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MzQvYWZ0ZXIvVGVzdC5pdGVtcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZWM0YmJmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QzNC9hZnRlci9UZXN0Lml0ZW1zCkBAIC0wLDAgKzEgQEAKK0xpbmtlZExpc3RcblBzaUxvY2FsVmFyaWFibGU6eQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QzNC9hZnRlci90ZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDM0L2FmdGVyL3Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZmNmMjM5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QzNC9hZnRlci90ZXN0LmphdmEKQEAgLTAsMCArMSwxNyBAQAorY2xhc3MgTGlua2VkTGlzdDxUPnsKKyAgICBUIHQ7CisgICAgVCBnZXQoKXtyZXR1cm4gdDt9CisgICAgdm9pZCBzZXQoVCB0KXt9Cit9CisKK2NsYXNzIExpc3QgZXh0ZW5kcyBMaW5rZWRMaXN0PEludGVnZXI+eworfQorCitjbGFzcyBNaXN0IGV4dGVuZHMgTGlzdHsKK30KKworY2xhc3MgVGVzdHsKKyAgIHZvaWQgZiAoKXsKKyAgICAgIExpbmtlZExpc3QgeSA9IG5ldyBNaXN0KCk7CisgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDM0L2JlZm9yZS90ZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDM0L2JlZm9yZS90ZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWZjZjIzOQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MzQvYmVmb3JlL3Rlc3QuamF2YQpAQCAtMCwwICsxLDE3IEBACitjbGFzcyBMaW5rZWRMaXN0PFQ+eworICAgIFQgdDsKKyAgICBUIGdldCgpe3JldHVybiB0O30KKyAgICB2b2lkIHNldChUIHQpe30KK30KKworY2xhc3MgTGlzdCBleHRlbmRzIExpbmtlZExpc3Q8SW50ZWdlcj57Cit9CisKK2NsYXNzIE1pc3QgZXh0ZW5kcyBMaXN0eworfQorCitjbGFzcyBUZXN0eworICAgdm9pZCBmICgpeworICAgICAgTGlua2VkTGlzdCB5ID0gbmV3IE1pc3QoKTsKKyAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MzUvYWZ0ZXIvVGVzdC4xLml0ZW1zIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QzNS9hZnRlci9UZXN0LjEuaXRlbXMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjRjMDEwNgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MzUvYWZ0ZXIvVGVzdC4xLml0ZW1zCkBAIC0wLDAgKzEsMyBAQAorTGlua2VkTGlzdDxqYXZhLmxhbmcuSW50ZWdlcixqYXZhLmxhbmcuU3RyaW5nPlxuUHNpTG9jYWxWYXJpYWJsZTp5CitMaXN0TGlua2VkPGphdmEubGFuZy5TdHJpbmcsamF2YS5sYW5nLkludGVnZXI+XG5Qc2lMb2NhbFZhcmlhYmxlOngKK0xpc3RMaW5rZWQ8amF2YS5sYW5nLlN0cmluZyxqYXZhLmxhbmcuSW50ZWdlcj5cbm5ldwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QzNS9hZnRlci9UZXN0Lml0ZW1zIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QzNS9hZnRlci9UZXN0Lml0ZW1zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE3MTRkMDUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDM1L2FmdGVyL1Rlc3QuaXRlbXMKQEAgLTAsMCArMSwzIEBACitMaW5rZWRMaXN0XG5Qc2lMb2NhbFZhcmlhYmxlOnkKK0xpc3RMaW5rZWRcblBzaUxvY2FsVmFyaWFibGU6eAorTGlzdExpbmtlZFxubmV3CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDM1L2FmdGVyL3Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MzUvYWZ0ZXIvdGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc4NDllZTIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDM1L2FmdGVyL3Rlc3QuamF2YQpAQCAtMCwwICsxLDIwIEBACitjbGFzcyBMaW5rZWRMaXN0PFQsIEU+eworICAgIFQgdDsKKyAgICBFIGU7CisgICAgVCBnZXQoKXtyZXR1cm4gdDt9CisgICAgdm9pZCBzZXQoRSB0KXt9Cit9CisKK2NsYXNzIExpc3RMaW5rZWQ8VCwgRT4gZXh0ZW5kcyBMaW5rZWRMaXN0PEUsIFQ+eworfQorCitjbGFzcyBUZXN0eworCisgICB2b2lkIGYgKCl7CisgICAgICBMaXN0TGlua2VkIHggPSBuZXcgTGlzdExpbmtlZCgpOworICAgICAgTGlua2VkTGlzdCB5ID0geDsKKworICAgICAgSW50ZWdlciBpID0gKEludGVnZXIpIHguZ2V0KCk7CisgICAgICB4LnNldCgiIik7CisgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDM1L2JlZm9yZS90ZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDM1L2JlZm9yZS90ZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzg0OWVlMgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MzUvYmVmb3JlL3Rlc3QuamF2YQpAQCAtMCwwICsxLDIwIEBACitjbGFzcyBMaW5rZWRMaXN0PFQsIEU+eworICAgIFQgdDsKKyAgICBFIGU7CisgICAgVCBnZXQoKXtyZXR1cm4gdDt9CisgICAgdm9pZCBzZXQoRSB0KXt9Cit9CisKK2NsYXNzIExpc3RMaW5rZWQ8VCwgRT4gZXh0ZW5kcyBMaW5rZWRMaXN0PEUsIFQ+eworfQorCitjbGFzcyBUZXN0eworCisgICB2b2lkIGYgKCl7CisgICAgICBMaXN0TGlua2VkIHggPSBuZXcgTGlzdExpbmtlZCgpOworICAgICAgTGlua2VkTGlzdCB5ID0geDsKKworICAgICAgSW50ZWdlciBpID0gKEludGVnZXIpIHguZ2V0KCk7CisgICAgICB4LnNldCgiIik7CisgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDM2L2FmdGVyL1Rlc3QuMS5pdGVtcyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MzYvYWZ0ZXIvVGVzdC4xLml0ZW1zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYwZWQ4OWIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDM2L2FmdGVyL1Rlc3QuMS5pdGVtcwpAQCAtMCwwICsxLDMgQEAKK0xpbmtlZExpc3Q8amF2YS5sYW5nLkludGVnZXIsamF2YS5pby5TZXJpYWxpemFibGU+XG5Qc2lMb2NhbFZhcmlhYmxlOnkKK0xpc3RMaW5rZWQ8amF2YS5pby5TZXJpYWxpemFibGUsamF2YS5sYW5nLkludGVnZXI+XG5Qc2lMb2NhbFZhcmlhYmxlOngKK0xpc3RMaW5rZWQ8amF2YS5pby5TZXJpYWxpemFibGUsamF2YS5sYW5nLkludGVnZXI+XG5uZXcKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MzYvYWZ0ZXIvVGVzdC5pdGVtcyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MzYvYWZ0ZXIvVGVzdC5pdGVtcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNzE0ZDA1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QzNi9hZnRlci9UZXN0Lml0ZW1zCkBAIC0wLDAgKzEsMyBAQAorTGlua2VkTGlzdFxuUHNpTG9jYWxWYXJpYWJsZTp5CitMaXN0TGlua2VkXG5Qc2lMb2NhbFZhcmlhYmxlOngKK0xpc3RMaW5rZWRcbm5ldwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QzNi9hZnRlci90ZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDM2L2FmdGVyL3Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZmE3NDUzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QzNi9hZnRlci90ZXN0LmphdmEKQEAgLTAsMCArMSwyMSBAQAorY2xhc3MgTGlua2VkTGlzdDxULCBFPnsKKyAgICBUIHQ7CisgICAgRSBlOworICAgIFQgZ2V0KCl7cmV0dXJuIHQ7fQorICAgIHZvaWQgc2V0KEUgdCl7fQorfQorCitjbGFzcyBMaXN0TGlua2VkPFQsIEU+IGV4dGVuZHMgTGlua2VkTGlzdDxFLCBUPnsKK30KKworY2xhc3MgVGVzdHsKKworICAgdm9pZCBmICgpeworICAgICAgTGlzdExpbmtlZCB4ID0gbmV3IExpc3RMaW5rZWQoKTsKKyAgICAgIExpbmtlZExpc3QgeSA9IHg7CisKKyAgICAgIEludGVnZXIgaSA9IChJbnRlZ2VyKSB4LmdldCgpOworICAgICAgeC5zZXQoIiIpOworICAgICAgeS5zZXQobmV3IEludGVnZXIoMikpOworICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QzNi9iZWZvcmUvdGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QzNi9iZWZvcmUvdGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFmYTc0NTMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDM2L2JlZm9yZS90ZXN0LmphdmEKQEAgLTAsMCArMSwyMSBAQAorY2xhc3MgTGlua2VkTGlzdDxULCBFPnsKKyAgICBUIHQ7CisgICAgRSBlOworICAgIFQgZ2V0KCl7cmV0dXJuIHQ7fQorICAgIHZvaWQgc2V0KEUgdCl7fQorfQorCitjbGFzcyBMaXN0TGlua2VkPFQsIEU+IGV4dGVuZHMgTGlua2VkTGlzdDxFLCBUPnsKK30KKworY2xhc3MgVGVzdHsKKworICAgdm9pZCBmICgpeworICAgICAgTGlzdExpbmtlZCB4ID0gbmV3IExpc3RMaW5rZWQoKTsKKyAgICAgIExpbmtlZExpc3QgeSA9IHg7CisKKyAgICAgIEludGVnZXIgaSA9IChJbnRlZ2VyKSB4LmdldCgpOworICAgICAgeC5zZXQoIiIpOworICAgICAgeS5zZXQobmV3IEludGVnZXIoMikpOworICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QzNy9hZnRlci9UZXN0LjEuaXRlbXMgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDM3L2FmdGVyL1Rlc3QuMS5pdGVtcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NGMwMTA2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QzNy9hZnRlci9UZXN0LjEuaXRlbXMKQEAgLTAsMCArMSwzIEBACitMaW5rZWRMaXN0PGphdmEubGFuZy5JbnRlZ2VyLGphdmEubGFuZy5TdHJpbmc+XG5Qc2lMb2NhbFZhcmlhYmxlOnkKK0xpc3RMaW5rZWQ8amF2YS5sYW5nLlN0cmluZyxqYXZhLmxhbmcuSW50ZWdlcj5cblBzaUxvY2FsVmFyaWFibGU6eAorTGlzdExpbmtlZDxqYXZhLmxhbmcuU3RyaW5nLGphdmEubGFuZy5JbnRlZ2VyPlxubmV3CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDM3L2FmdGVyL1Rlc3QuaXRlbXMgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDM3L2FmdGVyL1Rlc3QuaXRlbXMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTcxNGQwNQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MzcvYWZ0ZXIvVGVzdC5pdGVtcwpAQCAtMCwwICsxLDMgQEAKK0xpbmtlZExpc3RcblBzaUxvY2FsVmFyaWFibGU6eQorTGlzdExpbmtlZFxuUHNpTG9jYWxWYXJpYWJsZTp4CitMaXN0TGlua2VkXG5uZXcKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MzcvYWZ0ZXIvdGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QzNy9hZnRlci90ZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzBiYzljYwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MzcvYWZ0ZXIvdGVzdC5qYXZhCkBAIC0wLDAgKzEsMjUgQEAKK2NsYXNzIExpbmtlZExpc3QgPFQsIEU+IHsKKyAgICBUIHQ7CisgICAgRSBlOworCisgICAgVCBnZXQoKSB7CisgICAgICAgIHJldHVybiB0OworICAgIH0KKworICAgIHZvaWQgc2V0KEUgdCkgeworICAgIH0KK30KKworY2xhc3MgTGlzdExpbmtlZCA8VCwgRT4gZXh0ZW5kcyBMaW5rZWRMaXN0PEUsIFQ+IHsKK30KKworY2xhc3MgVGVzdCB7CisKKyAgICB2b2lkIGYoKSB7CisgICAgICAgIExpc3RMaW5rZWQgeCA9IG5ldyBMaXN0TGlua2VkKCk7CisgICAgICAgIExpbmtlZExpc3QgeSA9IHg7CisKKyAgICAgICAgeS50ID0gbmV3IEludGVnZXIoMyk7CisgICAgICAgIHkuZSA9ICIiOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDM3L2JlZm9yZS90ZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDM3L2JlZm9yZS90ZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzBiYzljYwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MzcvYmVmb3JlL3Rlc3QuamF2YQpAQCAtMCwwICsxLDI1IEBACitjbGFzcyBMaW5rZWRMaXN0IDxULCBFPiB7CisgICAgVCB0OworICAgIEUgZTsKKworICAgIFQgZ2V0KCkgeworICAgICAgICByZXR1cm4gdDsKKyAgICB9CisKKyAgICB2b2lkIHNldChFIHQpIHsKKyAgICB9Cit9CisKK2NsYXNzIExpc3RMaW5rZWQgPFQsIEU+IGV4dGVuZHMgTGlua2VkTGlzdDxFLCBUPiB7Cit9CisKK2NsYXNzIFRlc3QgeworCisgICAgdm9pZCBmKCkgeworICAgICAgICBMaXN0TGlua2VkIHggPSBuZXcgTGlzdExpbmtlZCgpOworICAgICAgICBMaW5rZWRMaXN0IHkgPSB4OworCisgICAgICAgIHkudCA9IG5ldyBJbnRlZ2VyKDMpOworICAgICAgICB5LmUgPSAiIjsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QzOC9hZnRlci9UZXN0LjEuaXRlbXMgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDM4L2FmdGVyL1Rlc3QuMS5pdGVtcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NGMwMTA2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QzOC9hZnRlci9UZXN0LjEuaXRlbXMKQEAgLTAsMCArMSwzIEBACitMaW5rZWRMaXN0PGphdmEubGFuZy5JbnRlZ2VyLGphdmEubGFuZy5TdHJpbmc+XG5Qc2lMb2NhbFZhcmlhYmxlOnkKK0xpc3RMaW5rZWQ8amF2YS5sYW5nLlN0cmluZyxqYXZhLmxhbmcuSW50ZWdlcj5cblBzaUxvY2FsVmFyaWFibGU6eAorTGlzdExpbmtlZDxqYXZhLmxhbmcuU3RyaW5nLGphdmEubGFuZy5JbnRlZ2VyPlxubmV3CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDM4L2FmdGVyL1Rlc3QuaXRlbXMgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDM4L2FmdGVyL1Rlc3QuaXRlbXMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTcxNGQwNQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MzgvYWZ0ZXIvVGVzdC5pdGVtcwpAQCAtMCwwICsxLDMgQEAKK0xpbmtlZExpc3RcblBzaUxvY2FsVmFyaWFibGU6eQorTGlzdExpbmtlZFxuUHNpTG9jYWxWYXJpYWJsZTp4CitMaXN0TGlua2VkXG5uZXcKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MzgvYWZ0ZXIvdGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QzOC9hZnRlci90ZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODgzN2E3YgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MzgvYWZ0ZXIvdGVzdC5qYXZhCkBAIC0wLDAgKzEsMjUgQEAKK2NsYXNzIExpbmtlZExpc3QgPFQsIEU+IHsKKyAgICBUIHQ7CisgICAgRSBlOworCisgICAgVCBnZXQoKSB7CisgICAgICAgIHJldHVybiB0OworICAgIH0KKworICAgIHZvaWQgc2V0KEUgdCkgeworICAgIH0KK30KKworY2xhc3MgTGlzdExpbmtlZCA8VCwgRT4gZXh0ZW5kcyBMaW5rZWRMaXN0PEUsIFQ+IHsKK30KKworY2xhc3MgVGVzdCB7CisKKyAgICB2b2lkIGYoKSB7CisgICAgICAgIExpc3RMaW5rZWQgeCA9IG5ldyBMaXN0TGlua2VkKCk7CisgICAgICAgIExpbmtlZExpc3QgeSA9IHg7CisKKyAgICAgICAgeC50ID0gbmV3IEludGVnZXIoMyk7CisgICAgICAgIHguZSA9ICIiOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MzgvYmVmb3JlL3Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MzgvYmVmb3JlL3Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ODM3YTdiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QzOC9iZWZvcmUvdGVzdC5qYXZhCkBAIC0wLDAgKzEsMjUgQEAKK2NsYXNzIExpbmtlZExpc3QgPFQsIEU+IHsKKyAgICBUIHQ7CisgICAgRSBlOworCisgICAgVCBnZXQoKSB7CisgICAgICAgIHJldHVybiB0OworICAgIH0KKworICAgIHZvaWQgc2V0KEUgdCkgeworICAgIH0KK30KKworY2xhc3MgTGlzdExpbmtlZCA8VCwgRT4gZXh0ZW5kcyBMaW5rZWRMaXN0PEUsIFQ+IHsKK30KKworY2xhc3MgVGVzdCB7CisKKyAgICB2b2lkIGYoKSB7CisgICAgICAgIExpc3RMaW5rZWQgeCA9IG5ldyBMaXN0TGlua2VkKCk7CisgICAgICAgIExpbmtlZExpc3QgeSA9IHg7CisKKyAgICAgICAgeC50ID0gbmV3IEludGVnZXIoMyk7CisgICAgICAgIHguZSA9ICIiOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MzkvYWZ0ZXIvVGVzdC4xLml0ZW1zIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QzOS9hZnRlci9UZXN0LjEuaXRlbXMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTI1MWIzZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MzkvYWZ0ZXIvVGVzdC4xLml0ZW1zCkBAIC0wLDAgKzEsNSBAQAorTGlua2VkTGlzdDxqYXZhLmxhbmcuSW50ZWdlcixqYXZhLmxhbmcuSW50ZWdlcj5cblBzaUxvY2FsVmFyaWFibGU6eQorTGlua2VkTGlzdDxqYXZhLmxhbmcuSW50ZWdlcixqYXZhLmxhbmcuSW50ZWdlcj5cbnBhcmFtZXRlciAwIG9mIGYKK0xpbmtlZExpc3Q8amF2YS5sYW5nLkludGVnZXIsamF2YS5sYW5nLkludGVnZXI+XG5yZXR1cm4gb2YgZgorTGlzdExpbmtlZDxqYXZhLmxhbmcuSW50ZWdlcj5cblBzaUxvY2FsVmFyaWFibGU6eAorTGlzdExpbmtlZDxqYXZhLmxhbmcuSW50ZWdlcj5cbm5ldwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QzOS9hZnRlci9UZXN0Lml0ZW1zIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QzOS9hZnRlci9UZXN0Lml0ZW1zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlmYjE3NjYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDM5L2FmdGVyL1Rlc3QuaXRlbXMKQEAgLTAsMCArMSw1IEBACitMaW5rZWRMaXN0XG5Qc2lMb2NhbFZhcmlhYmxlOnkKK0xpbmtlZExpc3RcbnBhcmFtZXRlciAwIG9mIGYKK0xpbmtlZExpc3RcbnJldHVybiBvZiBmCitMaXN0TGlua2VkXG5Qc2lMb2NhbFZhcmlhYmxlOngKK0xpc3RMaW5rZWRcbm5ldwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QzOS9hZnRlci90ZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDM5L2FmdGVyL3Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYzg1MzVkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QzOS9hZnRlci90ZXN0LmphdmEKQEAgLTAsMCArMSwyOSBAQAorY2xhc3MgTGlua2VkTGlzdCA8VCwgRT4geworICAgIFQgdDsKKyAgICBFIGU7CisKKyAgICBUIGdldCgpIHsKKyAgICAgICAgcmV0dXJuIHQ7CisgICAgfQorCisgICAgdm9pZCBzZXQoRSB0KSB7CisgICAgfQorfQorCitjbGFzcyBMaXN0TGlua2VkIDxFPiBleHRlbmRzIExpbmtlZExpc3Q8RSwgSW50ZWdlcj4geworfQorCitjbGFzcyBUZXN0IHsKKworICAgIExpbmtlZExpc3QgZiAoTGlua2VkTGlzdCB4KXsKKyAgICAgICAgcmV0dXJuIHg7CisgICAgfQorCisgICAgdm9pZCBmKCkgeworICAgICAgICBMaXN0TGlua2VkIHggPSBuZXcgTGlzdExpbmtlZCgpOworICAgICAgICBMaW5rZWRMaXN0IHkgPSB4OworCisgICAgICAgIHkudCA9IG5ldyBJbnRlZ2VyKDMpOworICAgICAgICB5ID0gZiAoeSk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MzkvYmVmb3JlL3Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90MzkvYmVmb3JlL3Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYzg1MzVkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3QzOS9iZWZvcmUvdGVzdC5qYXZhCkBAIC0wLDAgKzEsMjkgQEAKK2NsYXNzIExpbmtlZExpc3QgPFQsIEU+IHsKKyAgICBUIHQ7CisgICAgRSBlOworCisgICAgVCBnZXQoKSB7CisgICAgICAgIHJldHVybiB0OworICAgIH0KKworICAgIHZvaWQgc2V0KEUgdCkgeworICAgIH0KK30KKworY2xhc3MgTGlzdExpbmtlZCA8RT4gZXh0ZW5kcyBMaW5rZWRMaXN0PEUsIEludGVnZXI+IHsKK30KKworY2xhc3MgVGVzdCB7CisKKyAgICBMaW5rZWRMaXN0IGYgKExpbmtlZExpc3QgeCl7CisgICAgICAgIHJldHVybiB4OworICAgIH0KKworICAgIHZvaWQgZigpIHsKKyAgICAgICAgTGlzdExpbmtlZCB4ID0gbmV3IExpc3RMaW5rZWQoKTsKKyAgICAgICAgTGlua2VkTGlzdCB5ID0geDsKKworICAgICAgICB5LnQgPSBuZXcgSW50ZWdlcigzKTsKKyAgICAgICAgeSA9IGYgKHkpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDQwL2FmdGVyL1Rlc3QuMS5pdGVtcyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90NDAvYWZ0ZXIvVGVzdC4xLml0ZW1zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcwOTBlNGYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDQwL2FmdGVyL1Rlc3QuMS5pdGVtcwpAQCAtMCwwICsxLDIgQEAKK0xpbmtlZExpc3Q8amF2YS5sYW5nLlN0cmluZyxqYXZhLmxhbmcuSW50ZWdlcj5cblBzaUxvY2FsVmFyaWFibGU6eQorTGlua2VkTGlzdDxqYXZhLmxhbmcuU3RyaW5nLGphdmEubGFuZy5JbnRlZ2VyPlxubmV3CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDQwL2FmdGVyL1Rlc3QuaXRlbXMgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDQwL2FmdGVyL1Rlc3QuaXRlbXMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTZlYzJkMgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90NDAvYWZ0ZXIvVGVzdC5pdGVtcwpAQCAtMCwwICsxLDIgQEAKK0xpbmtlZExpc3RcblBzaUxvY2FsVmFyaWFibGU6eQorTGlua2VkTGlzdFxubmV3CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDQwL2FmdGVyL3Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90NDAvYWZ0ZXIvdGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI1ZDE4MzkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDQwL2FmdGVyL3Rlc3QuamF2YQpAQCAtMCwwICsxLDI2IEBACitjbGFzcyBMaW5rZWRMaXN0IDxULCBFPiB7CisgICAgVCB0OworICAgIEUgZTsKKworICAgIExpbmtlZExpc3Q8RSwgVD4gdTsKKworICAgIFQgZ2V0KCkgeworICAgICAgICByZXR1cm4gdDsKKyAgICB9CisKKyAgICB2b2lkIHNldChFIHQpIHsKKyAgICB9Cit9CisKK2NsYXNzIExpc3RMaW5rZWQgPEU+IGV4dGVuZHMgTGlua2VkTGlzdDxFLCBJbnRlZ2VyPiB7Cit9CisKK2NsYXNzIFRlc3QgeworCisgICAgdm9pZCBmKCkgeworICAgICAgICBMaW5rZWRMaXN0IHkgPSBuZXcgTGlua2VkTGlzdCgpOworCisgICAgICAgIHkudS50ID0gbmV3IEludGVnZXIoMyk7CisgICAgICAgIHkudS5lID0gIiI7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90NDAvYmVmb3JlL3Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90NDAvYmVmb3JlL3Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNWQxODM5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q0MC9iZWZvcmUvdGVzdC5qYXZhCkBAIC0wLDAgKzEsMjYgQEAKK2NsYXNzIExpbmtlZExpc3QgPFQsIEU+IHsKKyAgICBUIHQ7CisgICAgRSBlOworCisgICAgTGlua2VkTGlzdDxFLCBUPiB1OworCisgICAgVCBnZXQoKSB7CisgICAgICAgIHJldHVybiB0OworICAgIH0KKworICAgIHZvaWQgc2V0KEUgdCkgeworICAgIH0KK30KKworY2xhc3MgTGlzdExpbmtlZCA8RT4gZXh0ZW5kcyBMaW5rZWRMaXN0PEUsIEludGVnZXI+IHsKK30KKworY2xhc3MgVGVzdCB7CisKKyAgICB2b2lkIGYoKSB7CisgICAgICAgIExpbmtlZExpc3QgeSA9IG5ldyBMaW5rZWRMaXN0KCk7CisKKyAgICAgICAgeS51LnQgPSBuZXcgSW50ZWdlcigzKTsKKyAgICAgICAgeS51LmUgPSAiIjsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q0MS9hZnRlci9UZXN0LjEuaXRlbXMgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDQxL2FmdGVyL1Rlc3QuMS5pdGVtcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYWEyMjk3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q0MS9hZnRlci9UZXN0LjEuaXRlbXMKQEAgLTAsMCArMSwzIEBACitMaW5rZWRMaXN0PGphdmEubGFuZy5TdHJpbmc+XG5Qc2lMb2NhbFZhcmlhYmxlOngKK0xpbmtlZExpc3Q8amF2YS5sYW5nLlN0cmluZz5cbm5ldworTGlua2VkTGlzdDxqYXZhLmxhbmcuU3RyaW5nPlxucGFyYW1ldGVyIDAgb2YgZgpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q0MS9hZnRlci9UZXN0Lml0ZW1zIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q0MS9hZnRlci9UZXN0Lml0ZW1zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBmNTExMWIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDQxL2FmdGVyL1Rlc3QuaXRlbXMKQEAgLTAsMCArMSwzIEBACitMaW5rZWRMaXN0XG5Qc2lMb2NhbFZhcmlhYmxlOngKK0xpbmtlZExpc3Rcbm5ldworTGlua2VkTGlzdFxucGFyYW1ldGVyIDAgb2YgZgpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q0MS9hZnRlci90ZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDQxL2FmdGVyL3Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZTE4ZjFkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q0MS9hZnRlci90ZXN0LmphdmEKQEAgLTAsMCArMSwyMSBAQAorY2xhc3MgTGlua2VkTGlzdCA8VD4geworICAgIFQgdDsKKworICAgIFQgZ2V0KCkgeworICAgICAgICByZXR1cm4gdDsKKyAgICB9Cit9CisKKworY2xhc3MgVGVzdCB7CisKKyAgICB2b2lkIGYgKExpbmtlZExpc3QgeCl7CisgICAgICAgIHgudCA9ICIiOworICAgIH0KKworICAgIHZvaWQgZigpIHsKKyAgICAgICBMaW5rZWRMaXN0IHggPSBuZXcgTGlua2VkTGlzdCgpOworCisgICAgICAgZiAoeCk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90NDEvYmVmb3JlL3Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90NDEvYmVmb3JlL3Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZTE4ZjFkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q0MS9iZWZvcmUvdGVzdC5qYXZhCkBAIC0wLDAgKzEsMjEgQEAKK2NsYXNzIExpbmtlZExpc3QgPFQ+IHsKKyAgICBUIHQ7CisKKyAgICBUIGdldCgpIHsKKyAgICAgICAgcmV0dXJuIHQ7CisgICAgfQorfQorCisKK2NsYXNzIFRlc3QgeworCisgICAgdm9pZCBmIChMaW5rZWRMaXN0IHgpeworICAgICAgICB4LnQgPSAiIjsKKyAgICB9CisKKyAgICB2b2lkIGYoKSB7CisgICAgICAgTGlua2VkTGlzdCB4ID0gbmV3IExpbmtlZExpc3QoKTsKKworICAgICAgIGYgKHgpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDQyL2FmdGVyL1Rlc3QuMS5pdGVtcyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90NDIvYWZ0ZXIvVGVzdC4xLml0ZW1zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNhYTIyOTcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDQyL2FmdGVyL1Rlc3QuMS5pdGVtcwpAQCAtMCwwICsxLDMgQEAKK0xpbmtlZExpc3Q8amF2YS5sYW5nLlN0cmluZz5cblBzaUxvY2FsVmFyaWFibGU6eAorTGlua2VkTGlzdDxqYXZhLmxhbmcuU3RyaW5nPlxubmV3CitMaW5rZWRMaXN0PGphdmEubGFuZy5TdHJpbmc+XG5wYXJhbWV0ZXIgMCBvZiBmCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDQyL2FmdGVyL1Rlc3QuaXRlbXMgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDQyL2FmdGVyL1Rlc3QuaXRlbXMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGY1MTExYgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90NDIvYWZ0ZXIvVGVzdC5pdGVtcwpAQCAtMCwwICsxLDMgQEAKK0xpbmtlZExpc3RcblBzaUxvY2FsVmFyaWFibGU6eAorTGlua2VkTGlzdFxubmV3CitMaW5rZWRMaXN0XG5wYXJhbWV0ZXIgMCBvZiBmCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDQyL2FmdGVyL3Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90NDIvYWZ0ZXIvdGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFlMjc5YTQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDQyL2FmdGVyL3Rlc3QuamF2YQpAQCAtMCwwICsxLDIxIEBACitjbGFzcyBMaW5rZWRMaXN0IDxUPiB7CisgICAgVCB0OworCisgICAgVCBnZXQoKSB7CisgICAgICAgIHJldHVybiB0OworICAgIH0KK30KKworCitjbGFzcyBUZXN0IHsKKworICAgIHZvaWQgZiAoTGlua2VkTGlzdCB4KXsKKyAgICAgICAgeC50ID0gIiI7CisgICAgfQorCisgICAgdm9pZCBmKCkgeworICAgICAgIExpbmtlZExpc3QgeCA9IG5ldyBMaW5rZWRMaXN0KCk7CisKKyAgICAgICBmICh4KTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDQyL2JlZm9yZS90ZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDQyL2JlZm9yZS90ZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWUyNzlhNAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90NDIvYmVmb3JlL3Rlc3QuamF2YQpAQCAtMCwwICsxLDIxIEBACitjbGFzcyBMaW5rZWRMaXN0IDxUPiB7CisgICAgVCB0OworCisgICAgVCBnZXQoKSB7CisgICAgICAgIHJldHVybiB0OworICAgIH0KK30KKworCitjbGFzcyBUZXN0IHsKKworICAgIHZvaWQgZiAoTGlua2VkTGlzdCB4KXsKKyAgICAgICAgeC50ID0gIiI7CisgICAgfQorCisgICAgdm9pZCBmKCkgeworICAgICAgIExpbmtlZExpc3QgeCA9IG5ldyBMaW5rZWRMaXN0KCk7CisKKyAgICAgICBmICh4KTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDQzL2FmdGVyL1Rlc3QuMS5pdGVtcyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90NDMvYWZ0ZXIvVGVzdC4xLml0ZW1zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhkZDllNTMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDQzL2FmdGVyL1Rlc3QuMS5pdGVtcwpAQCAtMCwwICsxLDIgQEAKK0xpbmtlZExpc3Q8amF2YS5sYW5nLkludGVnZXI+XG5Qc2lMb2NhbFZhcmlhYmxlOnkKK0xpbmtlZExpc3Q8amF2YS5sYW5nLkludGVnZXI+XG5uZXcKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90NDMvYWZ0ZXIvVGVzdC5pdGVtcyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90NDMvYWZ0ZXIvVGVzdC5pdGVtcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNmVjMmQyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q0My9hZnRlci9UZXN0Lml0ZW1zCkBAIC0wLDAgKzEsMiBAQAorTGlua2VkTGlzdFxuUHNpTG9jYWxWYXJpYWJsZTp5CitMaW5rZWRMaXN0XG5uZXcKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90NDMvYWZ0ZXIvdGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q0My9hZnRlci90ZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWQ0ZTBkOAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90NDMvYWZ0ZXIvdGVzdC5qYXZhCkBAIC0wLDAgKzEsMTcgQEAKK2NsYXNzIExpbmtlZExpc3QgPFQ+IHsKKyAgICBUIGU7CisKKyAgICB2b2lkIHNldChMaW5rZWRMaXN0PFQ+IHQpIHsKKyAgICAgICAgZT10LmU7CisgICAgfQorfQorCitjbGFzcyBUZXN0IHsKKworICAgIHZvaWQgZigpIHsKKyAgICAgICAgTGlua2VkTGlzdCB5ID0gbmV3IExpbmtlZExpc3QoKTsKKyAgICAgICAgTGlua2VkTGlzdDxJbnRlZ2VyPiB6PW51bGw7CisKKyAgICAgICAgeS5zZXQoeik7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q0My9iZWZvcmUvdGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q0My9iZWZvcmUvdGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVkNGUwZDgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDQzL2JlZm9yZS90ZXN0LmphdmEKQEAgLTAsMCArMSwxNyBAQAorY2xhc3MgTGlua2VkTGlzdCA8VD4geworICAgIFQgZTsKKworICAgIHZvaWQgc2V0KExpbmtlZExpc3Q8VD4gdCkgeworICAgICAgICBlPXQuZTsKKyAgICB9Cit9CisKK2NsYXNzIFRlc3QgeworCisgICAgdm9pZCBmKCkgeworICAgICAgICBMaW5rZWRMaXN0IHkgPSBuZXcgTGlua2VkTGlzdCgpOworICAgICAgICBMaW5rZWRMaXN0PEludGVnZXI+IHo9bnVsbDsKKworICAgICAgICB5LnNldCh6KTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDQ0L2FmdGVyL1Rlc3QuMS5pdGVtcyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90NDQvYWZ0ZXIvVGVzdC4xLml0ZW1zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhkZDllNTMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDQ0L2FmdGVyL1Rlc3QuMS5pdGVtcwpAQCAtMCwwICsxLDIgQEAKK0xpbmtlZExpc3Q8amF2YS5sYW5nLkludGVnZXI+XG5Qc2lMb2NhbFZhcmlhYmxlOnkKK0xpbmtlZExpc3Q8amF2YS5sYW5nLkludGVnZXI+XG5uZXcKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90NDQvYWZ0ZXIvVGVzdC5pdGVtcyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90NDQvYWZ0ZXIvVGVzdC5pdGVtcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNmVjMmQyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q0NC9hZnRlci9UZXN0Lml0ZW1zCkBAIC0wLDAgKzEsMiBAQAorTGlua2VkTGlzdFxuUHNpTG9jYWxWYXJpYWJsZTp5CitMaW5rZWRMaXN0XG5uZXcKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90NDQvYWZ0ZXIvdGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q0NC9hZnRlci90ZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmM1MGNmZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90NDQvYWZ0ZXIvdGVzdC5qYXZhCkBAIC0wLDAgKzEsMTkgQEAKK2NsYXNzIExpbmtlZExpc3QgPFQ+IHsKKyAgICBUIGU7CisKKyAgICB2b2lkIHNldChMaW5rZWRMaXN0PFQ+IHQpIHsKKyAgICAgICAgZT10LmU7CisgICAgfQorfQorCitjbGFzcyBMaXN0SW50IGV4dGVuZHMgTGlua2VkTGlzdDxJbnRlZ2VyPnt9CisKK2NsYXNzIFRlc3QgeworCisgICAgdm9pZCBmKCkgeworICAgICAgICBMaW5rZWRMaXN0IHkgPSBuZXcgTGlua2VkTGlzdCgpOworICAgICAgICBMaXN0SW50IHo9bnVsbDsKKworICAgICAgICB5LnNldCh6KTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDQ0L2JlZm9yZS90ZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDQ0L2JlZm9yZS90ZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmM1MGNmZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90NDQvYmVmb3JlL3Rlc3QuamF2YQpAQCAtMCwwICsxLDE5IEBACitjbGFzcyBMaW5rZWRMaXN0IDxUPiB7CisgICAgVCBlOworCisgICAgdm9pZCBzZXQoTGlua2VkTGlzdDxUPiB0KSB7CisgICAgICAgIGU9dC5lOworICAgIH0KK30KKworY2xhc3MgTGlzdEludCBleHRlbmRzIExpbmtlZExpc3Q8SW50ZWdlcj57fQorCitjbGFzcyBUZXN0IHsKKworICAgIHZvaWQgZigpIHsKKyAgICAgICAgTGlua2VkTGlzdCB5ID0gbmV3IExpbmtlZExpc3QoKTsKKyAgICAgICAgTGlzdEludCB6PW51bGw7CisKKyAgICAgICAgeS5zZXQoeik7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q0NS9hZnRlci9UZXN0LjEuaXRlbXMgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDQ1L2FmdGVyL1Rlc3QuMS5pdGVtcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZGQ5ZTUzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q0NS9hZnRlci9UZXN0LjEuaXRlbXMKQEAgLTAsMCArMSwyIEBACitMaW5rZWRMaXN0PGphdmEubGFuZy5JbnRlZ2VyPlxuUHNpTG9jYWxWYXJpYWJsZTp5CitMaW5rZWRMaXN0PGphdmEubGFuZy5JbnRlZ2VyPlxubmV3CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDQ1L2FmdGVyL1Rlc3QuaXRlbXMgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDQ1L2FmdGVyL1Rlc3QuaXRlbXMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTZlYzJkMgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90NDUvYWZ0ZXIvVGVzdC5pdGVtcwpAQCAtMCwwICsxLDIgQEAKK0xpbmtlZExpc3RcblBzaUxvY2FsVmFyaWFibGU6eQorTGlua2VkTGlzdFxubmV3CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDQ1L2FmdGVyL3Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90NDUvYWZ0ZXIvdGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMwMjA3NTQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDQ1L2FmdGVyL3Rlc3QuamF2YQpAQCAtMCwwICsxLDE2IEBACitjbGFzcyBMaW5rZWRMaXN0IDxUPiB7CisgICAgVCBlOworCisgICAgTGlua2VkTGlzdDxUPiBnZXQoKSB7CisgICAgICAgIHJldHVybiB0aGlzOworICAgIH0KK30KKworY2xhc3MgVGVzdCB7CisKKyAgICB2b2lkIGYoKSB7CisgICAgICAgIExpbmtlZExpc3QgeSA9IG5ldyBMaW5rZWRMaXN0KCk7CisKKyAgICAgICAgKHkuZ2V0KCkpLmUgPSBuZXcgSW50ZWdlcigzKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDQ1L2JlZm9yZS90ZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDQ1L2JlZm9yZS90ZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzAyMDc1NAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90NDUvYmVmb3JlL3Rlc3QuamF2YQpAQCAtMCwwICsxLDE2IEBACitjbGFzcyBMaW5rZWRMaXN0IDxUPiB7CisgICAgVCBlOworCisgICAgTGlua2VkTGlzdDxUPiBnZXQoKSB7CisgICAgICAgIHJldHVybiB0aGlzOworICAgIH0KK30KKworY2xhc3MgVGVzdCB7CisKKyAgICB2b2lkIGYoKSB7CisgICAgICAgIExpbmtlZExpc3QgeSA9IG5ldyBMaW5rZWRMaXN0KCk7CisKKyAgICAgICAgKHkuZ2V0KCkpLmUgPSBuZXcgSW50ZWdlcigzKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDQ2L2FmdGVyL1Rlc3QuMS5pdGVtcyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90NDYvYWZ0ZXIvVGVzdC4xLml0ZW1zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRlNzlmZjUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDQ2L2FmdGVyL1Rlc3QuMS5pdGVtcwpAQCAtMCwwICsxIEBACitMaW5rZWRMaXN0PGphdmEubGFuZy5TdHJpbmc+XG5yZXR1cm4gb2YgZgpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q0Ni9hZnRlci9UZXN0Lml0ZW1zIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q0Ni9hZnRlci9UZXN0Lml0ZW1zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE1OWMzNjgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDQ2L2FmdGVyL1Rlc3QuaXRlbXMKQEAgLTAsMCArMSBAQAorTGlua2VkTGlzdFxucmV0dXJuIG9mIGYKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90NDYvYWZ0ZXIvdGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q0Ni9hZnRlci90ZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODRmNGM0OAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90NDYvYWZ0ZXIvdGVzdC5qYXZhCkBAIC0wLDAgKzEsMTggQEAKK2NsYXNzIExpbmtlZExpc3QgPFQ+IHsKKyAgICBUIGU7CisKKyAgICBMaW5rZWRMaXN0PFQ+IGdldCgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXM7CisgICAgfQorfQorCitjbGFzcyBUZXN0IHsKKworICAgIExpbmtlZExpc3QgZigpIHsKKyAgICAgICAgcmV0dXJuIG51bGw7CisgICAgfQorCisgICAgdm9pZCBmb28oKXsKKyAgICAgICAgZigpLmUgPSAiIjsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDQ2L2JlZm9yZS90ZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDQ2L2JlZm9yZS90ZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODRmNGM0OAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90NDYvYmVmb3JlL3Rlc3QuamF2YQpAQCAtMCwwICsxLDE4IEBACitjbGFzcyBMaW5rZWRMaXN0IDxUPiB7CisgICAgVCBlOworCisgICAgTGlua2VkTGlzdDxUPiBnZXQoKSB7CisgICAgICAgIHJldHVybiB0aGlzOworICAgIH0KK30KKworY2xhc3MgVGVzdCB7CisKKyAgICBMaW5rZWRMaXN0IGYoKSB7CisgICAgICAgIHJldHVybiBudWxsOworICAgIH0KKworICAgIHZvaWQgZm9vKCl7CisgICAgICAgIGYoKS5lID0gIiI7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q0Ny9hZnRlci9UZXN0LjEuaXRlbXMgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDQ3L2FmdGVyL1Rlc3QuMS5pdGVtcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYmZiODI2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q0Ny9hZnRlci9UZXN0LjEuaXRlbXMKQEAgLTAsMCArMSBAQAorTGlua2VkTGlzdDxqYXZhLmxhbmcuSW50ZWdlcj5cbnJldHVybiBvZiBmCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDQ3L2FmdGVyL1Rlc3QuaXRlbXMgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDQ3L2FmdGVyL1Rlc3QuaXRlbXMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTU5YzM2OAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90NDcvYWZ0ZXIvVGVzdC5pdGVtcwpAQCAtMCwwICsxIEBACitMaW5rZWRMaXN0XG5yZXR1cm4gb2YgZgpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q0Ny9hZnRlci90ZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDQ3L2FmdGVyL3Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YjI3MzhmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q0Ny9hZnRlci90ZXN0LmphdmEKQEAgLTAsMCArMSwxOCBAQAorY2xhc3MgTGlua2VkTGlzdCA8VD4geworICAgIFQgZTsKKworICAgIExpbmtlZExpc3Q8VD4gZ2V0KCkgeworICAgICAgICByZXR1cm4gdGhpczsKKyAgICB9Cit9CisKK2NsYXNzIFRlc3QgeworCisgICAgTGlua2VkTGlzdCBmKCkgeworICAgICAgICByZXR1cm4gbnVsbDsKKyAgICB9CisKKyAgICB2b2lkIGZvbygpeworICAgICAgICBMaW5rZWRMaXN0PEludGVnZXI+IHggPSAoTGlua2VkTGlzdDxJbnRlZ2VyPikgZigpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90NDcvYmVmb3JlL3Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90NDcvYmVmb3JlL3Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YjI3MzhmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q0Ny9iZWZvcmUvdGVzdC5qYXZhCkBAIC0wLDAgKzEsMTggQEAKK2NsYXNzIExpbmtlZExpc3QgPFQ+IHsKKyAgICBUIGU7CisKKyAgICBMaW5rZWRMaXN0PFQ+IGdldCgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXM7CisgICAgfQorfQorCitjbGFzcyBUZXN0IHsKKworICAgIExpbmtlZExpc3QgZigpIHsKKyAgICAgICAgcmV0dXJuIG51bGw7CisgICAgfQorCisgICAgdm9pZCBmb28oKXsKKyAgICAgICAgTGlua2VkTGlzdDxJbnRlZ2VyPiB4ID0gKExpbmtlZExpc3Q8SW50ZWdlcj4pIGYoKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDQ4L2FmdGVyL1Rlc3QuMS5pdGVtcyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90NDgvYWZ0ZXIvVGVzdC4xLml0ZW1zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ1MjU1NDEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDQ4L2FmdGVyL1Rlc3QuMS5pdGVtcwpAQCAtMCwwICsxLDMgQEAKK0xpbmtlZExpc3Q8amF2YS5pby5TZXJpYWxpemFibGU+XG5Qc2lMb2NhbFZhcmlhYmxlOnkKK0xpbmtlZExpc3Q8amF2YS5pby5TZXJpYWxpemFibGU+XG5uZXcKK0xpbmtlZExpc3Q8amF2YS5pby5TZXJpYWxpemFibGU+XG5wYXJhbWV0ZXIgMCBvZiBmCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDQ4L2FmdGVyL1Rlc3QuaXRlbXMgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDQ4L2FmdGVyL1Rlc3QuaXRlbXMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTU4MDYyNQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90NDgvYWZ0ZXIvVGVzdC5pdGVtcwpAQCAtMCwwICsxLDMgQEAKK0xpbmtlZExpc3RcblBzaUxvY2FsVmFyaWFibGU6eQorTGlua2VkTGlzdFxubmV3CitMaW5rZWRMaXN0XG5wYXJhbWV0ZXIgMCBvZiBmCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDQ4L2FmdGVyL3Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90NDgvYWZ0ZXIvdGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU5ZTlkZjYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDQ4L2FmdGVyL3Rlc3QuamF2YQpAQCAtMCwwICsxLDIwIEBACitjbGFzcyBMaW5rZWRMaXN0IDxUPiB7CisgICAgVCBlOworCisgICAgTGlua2VkTGlzdDxUPiBnZXQoKSB7CisgICAgICAgIHJldHVybiB0aGlzOworICAgIH0KK30KKworY2xhc3MgVGVzdCB7CisKKyAgICB2b2lkIGYoTGlua2VkTGlzdCB4KSB7CisgICAgICAgIHguZSA9ICIiOworICAgIH0KKworICAgIHZvaWQgZm9vKCl7CisgICAgICAgIExpbmtlZExpc3QgeSA9IG5ldyBMaW5rZWRMaXN0KCk7CisgICAgICAgIHkuZSA9IG5ldyBJbnRlZ2VyKDMpOworICAgICAgICBmKHkpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDQ4L2JlZm9yZS90ZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDQ4L2JlZm9yZS90ZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTllOWRmNgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90NDgvYmVmb3JlL3Rlc3QuamF2YQpAQCAtMCwwICsxLDIwIEBACitjbGFzcyBMaW5rZWRMaXN0IDxUPiB7CisgICAgVCBlOworCisgICAgTGlua2VkTGlzdDxUPiBnZXQoKSB7CisgICAgICAgIHJldHVybiB0aGlzOworICAgIH0KK30KKworY2xhc3MgVGVzdCB7CisKKyAgICB2b2lkIGYoTGlua2VkTGlzdCB4KSB7CisgICAgICAgIHguZSA9ICIiOworICAgIH0KKworICAgIHZvaWQgZm9vKCl7CisgICAgICAgIExpbmtlZExpc3QgeSA9IG5ldyBMaW5rZWRMaXN0KCk7CisgICAgICAgIHkuZSA9IG5ldyBJbnRlZ2VyKDMpOworICAgICAgICBmKHkpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDQ5L2FmdGVyL1Rlc3QuMS5pdGVtcyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90NDkvYWZ0ZXIvVGVzdC4xLml0ZW1zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdmZDBlMTgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDQ5L2FmdGVyL1Rlc3QuMS5pdGVtcwpAQCAtMCwwICsxIEBACitMaW5rZWRMaXN0PGphdmEubGFuZy5JbnRlZ2VyPlxucGFyYW1ldGVyIDAgb2YgVGVzdApkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q0OS9hZnRlci9UZXN0Lml0ZW1zIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q0OS9hZnRlci9UZXN0Lml0ZW1zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVjMmVhMTkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDQ5L2FmdGVyL1Rlc3QuaXRlbXMKQEAgLTAsMCArMSBAQAorTGlua2VkTGlzdFxucGFyYW1ldGVyIDAgb2YgVGVzdApkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q0OS9hZnRlci90ZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDQ5L2FmdGVyL3Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MzAzYTkyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q0OS9hZnRlci90ZXN0LmphdmEKQEAgLTAsMCArMSwxNyBAQAorY2xhc3MgTGlua2VkTGlzdCA8VD4geworICAgIFQgZTsKKworICAgIExpbmtlZExpc3Q8VD4gZ2V0KCkgeworICAgICAgICByZXR1cm4gdGhpczsKKyAgICB9Cit9CisKK2NsYXNzIFRlc3QgeworCisgICAgVGVzdChMaW5rZWRMaXN0IHgpeworICAgIH0KKworICAgIHZvaWQgZm9vKCl7CisgICAgICBUZXN0IHggPSBuZXcgVGVzdChuZXcgTGlua2VkTGlzdDxJbnRlZ2VyPigpKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q0OS9iZWZvcmUvdGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q0OS9iZWZvcmUvdGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUzMDNhOTIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDQ5L2JlZm9yZS90ZXN0LmphdmEKQEAgLTAsMCArMSwxNyBAQAorY2xhc3MgTGlua2VkTGlzdCA8VD4geworICAgIFQgZTsKKworICAgIExpbmtlZExpc3Q8VD4gZ2V0KCkgeworICAgICAgICByZXR1cm4gdGhpczsKKyAgICB9Cit9CisKK2NsYXNzIFRlc3QgeworCisgICAgVGVzdChMaW5rZWRMaXN0IHgpeworICAgIH0KKworICAgIHZvaWQgZm9vKCl7CisgICAgICBUZXN0IHggPSBuZXcgVGVzdChuZXcgTGlua2VkTGlzdDxJbnRlZ2VyPigpKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q1MC9hZnRlci9UZXN0LjEuaXRlbXMgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDUwL2FmdGVyL1Rlc3QuMS5pdGVtcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZmFmZDk3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q1MC9hZnRlci9UZXN0LjEuaXRlbXMKQEAgLTAsMCArMSwzIEBACitMaW5rZWRMaXN0PGphdmEubGFuZy5JbnRlZ2VyPlxuUHNpTG9jYWxWYXJpYWJsZTp5CitMaW5rZWRMaXN0PGphdmEubGFuZy5JbnRlZ2VyPlxubmV3CitMaW5rZWRMaXN0PGphdmEubGFuZy5JbnRlZ2VyPlxucGFyYW1ldGVyIDAgb2YgVGVzdApkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q1MC9hZnRlci9UZXN0Lml0ZW1zIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q1MC9hZnRlci9UZXN0Lml0ZW1zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM3MjdjYzcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDUwL2FmdGVyL1Rlc3QuaXRlbXMKQEAgLTAsMCArMSwzIEBACitMaW5rZWRMaXN0XG5Qc2lMb2NhbFZhcmlhYmxlOnkKK0xpbmtlZExpc3Rcbm5ldworTGlua2VkTGlzdFxucGFyYW1ldGVyIDAgb2YgVGVzdApkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q1MC9hZnRlci90ZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDUwL2FmdGVyL3Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yOWU5YTRmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q1MC9hZnRlci90ZXN0LmphdmEKQEAgLTAsMCArMSwyMSBAQAorY2xhc3MgTGlua2VkTGlzdCA8VD4geworICAgIFQgZTsKKworICAgIExpbmtlZExpc3Q8VD4gZ2V0KCkgeworICAgICAgICByZXR1cm4gdGhpczsKKyAgICB9Cit9CisKK2NsYXNzIFRlc3QgeworCisgICAgVGVzdChMaW5rZWRMaXN0IHgpeworICAgIH0KKworICAgIHZvaWQgZm9vKCl7CisgICAgICBMaW5rZWRMaXN0IHkgPSBuZXcgTGlua2VkTGlzdCgpOworCisgICAgICBUZXN0IHggPSBuZXcgVGVzdCh5KTsKKworICAgICAgeS5lID0gbmV3IEludGVnZXIoMyk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90NTAvYmVmb3JlL3Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90NTAvYmVmb3JlL3Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yOWU5YTRmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q1MC9iZWZvcmUvdGVzdC5qYXZhCkBAIC0wLDAgKzEsMjEgQEAKK2NsYXNzIExpbmtlZExpc3QgPFQ+IHsKKyAgICBUIGU7CisKKyAgICBMaW5rZWRMaXN0PFQ+IGdldCgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXM7CisgICAgfQorfQorCitjbGFzcyBUZXN0IHsKKworICAgIFRlc3QoTGlua2VkTGlzdCB4KXsKKyAgICB9CisKKyAgICB2b2lkIGZvbygpeworICAgICAgTGlua2VkTGlzdCB5ID0gbmV3IExpbmtlZExpc3QoKTsKKworICAgICAgVGVzdCB4ID0gbmV3IFRlc3QoeSk7CisKKyAgICAgIHkuZSA9IG5ldyBJbnRlZ2VyKDMpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDUxL2FmdGVyL1Rlc3QuMS5pdGVtcyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90NTEvYWZ0ZXIvVGVzdC4xLml0ZW1zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAyNDIzNDcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDUxL2FmdGVyL1Rlc3QuMS5pdGVtcwpAQCAtMCwwICsxLDIgQEAKK0xpbmtlZExpc3RcblBzaUxvY2FsVmFyaWFibGU6eQorTGlua2VkTGlzdFxucGFyYW1ldGVyIDAgb2YgVGVzdApkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q1MS9hZnRlci9UZXN0Lml0ZW1zIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q1MS9hZnRlci9UZXN0Lml0ZW1zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAyNDIzNDcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDUxL2FmdGVyL1Rlc3QuaXRlbXMKQEAgLTAsMCArMSwyIEBACitMaW5rZWRMaXN0XG5Qc2lMb2NhbFZhcmlhYmxlOnkKK0xpbmtlZExpc3RcbnBhcmFtZXRlciAwIG9mIFRlc3QKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90NTEvYWZ0ZXIvdGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q1MS9hZnRlci90ZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGJkN2QyNAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90NTEvYWZ0ZXIvdGVzdC5qYXZhCkBAIC0wLDAgKzEsMTkgQEAKK2NsYXNzIExpbmtlZExpc3QgPFQ+IHsKKyAgICBUIGU7CisKKyAgICBMaW5rZWRMaXN0PFQ+IGdldCgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXM7CisgICAgfQorfQorCitjbGFzcyBUZXN0IHsKKworICAgIFRlc3QoTGlua2VkTGlzdCB4KXsKKyAgICB9CisKKyAgICB2b2lkIGZvbygpeworICAgICAgTGlua2VkTGlzdCB5ID0gbnVsbDsKKworICAgICAgVGVzdCB4ID0gbmV3IFRlc3QobnVsbCk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90NTEvYmVmb3JlL3Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90NTEvYmVmb3JlL3Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYmQ3ZDI0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q1MS9iZWZvcmUvdGVzdC5qYXZhCkBAIC0wLDAgKzEsMTkgQEAKK2NsYXNzIExpbmtlZExpc3QgPFQ+IHsKKyAgICBUIGU7CisKKyAgICBMaW5rZWRMaXN0PFQ+IGdldCgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXM7CisgICAgfQorfQorCitjbGFzcyBUZXN0IHsKKworICAgIFRlc3QoTGlua2VkTGlzdCB4KXsKKyAgICB9CisKKyAgICB2b2lkIGZvbygpeworICAgICAgTGlua2VkTGlzdCB5ID0gbnVsbDsKKworICAgICAgVGVzdCB4ID0gbmV3IFRlc3QobnVsbCk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90NTIvYWZ0ZXIvVGVzdC4xLml0ZW1zIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q1Mi9hZnRlci9UZXN0LjEuaXRlbXMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2VjNGJiZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90NTIvYWZ0ZXIvVGVzdC4xLml0ZW1zCkBAIC0wLDAgKzEgQEAKK0xpbmtlZExpc3RcblBzaUxvY2FsVmFyaWFibGU6eQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q1Mi9hZnRlci9UZXN0Lml0ZW1zIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q1Mi9hZnRlci9UZXN0Lml0ZW1zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNlYzRiYmYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDUyL2FmdGVyL1Rlc3QuaXRlbXMKQEAgLTAsMCArMSBAQAorTGlua2VkTGlzdFxuUHNpTG9jYWxWYXJpYWJsZTp5CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDUyL2FmdGVyL3Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90NTIvYWZ0ZXIvdGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRhOTNkYWIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDUyL2FmdGVyL3Rlc3QuamF2YQpAQCAtMCwwICsxLDIxIEBACitjbGFzcyBMaW5rZWRMaXN0IDxUPiB7CisgICAgVCBlOworCisgICAgTGlua2VkTGlzdDxUPiBnZXQoKSB7CisgICAgICAgIHJldHVybiB0aGlzOworICAgIH0KK30KKworY2xhc3MgQXV4eworICBMaW5rZWRMaXN0IHg7Cit9CisKK2NsYXNzIFRlc3QgeworICAgIEF1eCBhID0gbnVsbDsKKworICAgIHZvaWQgZm9vKCl7CisgICAgICBMaW5rZWRMaXN0IHkgPSBhLng7CisKKyAgICAgIHkuZSA9ICIiOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDUyL2JlZm9yZS90ZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDUyL2JlZm9yZS90ZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGE5M2RhYgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90NTIvYmVmb3JlL3Rlc3QuamF2YQpAQCAtMCwwICsxLDIxIEBACitjbGFzcyBMaW5rZWRMaXN0IDxUPiB7CisgICAgVCBlOworCisgICAgTGlua2VkTGlzdDxUPiBnZXQoKSB7CisgICAgICAgIHJldHVybiB0aGlzOworICAgIH0KK30KKworY2xhc3MgQXV4eworICBMaW5rZWRMaXN0IHg7Cit9CisKK2NsYXNzIFRlc3QgeworICAgIEF1eCBhID0gbnVsbDsKKworICAgIHZvaWQgZm9vKCl7CisgICAgICBMaW5rZWRMaXN0IHkgPSBhLng7CisKKyAgICAgIHkuZSA9ICIiOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDUzL2FmdGVyL1Rlc3QuMS5pdGVtcyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90NTMvYWZ0ZXIvVGVzdC4xLml0ZW1zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJmNjllYzEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDUzL2FmdGVyL1Rlc3QuMS5pdGVtcwpAQCAtMCwwICsxIEBACitMaW5rZWRMaXN0PGphdmEubGFuZy5PYmplY3Q+XG5Qc2lMb2NhbFZhcmlhYmxlOnkKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90NTMvYWZ0ZXIvVGVzdC5pdGVtcyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90NTMvYWZ0ZXIvVGVzdC5pdGVtcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZWM0YmJmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q1My9hZnRlci9UZXN0Lml0ZW1zCkBAIC0wLDAgKzEgQEAKK0xpbmtlZExpc3RcblBzaUxvY2FsVmFyaWFibGU6eQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q1My9hZnRlci90ZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDUzL2FmdGVyL3Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNGE1ZjRhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q1My9hZnRlci90ZXN0LmphdmEKQEAgLTAsMCArMSwyMSBAQAorY2xhc3MgTGlua2VkTGlzdCA8VD4geworICAgIFQgZTsKKworICAgIExpbmtlZExpc3Q8VD4gZ2V0KCkgeworICAgICAgICByZXR1cm4gdGhpczsKKyAgICB9Cit9CisKK2NsYXNzIEF1eHsKKyAgTGlua2VkTGlzdDxPYmplY3Q+IHg7Cit9CisKK2NsYXNzIFRlc3QgeworICAgIEF1eCBhID0gbnVsbDsKKworICAgIHZvaWQgZm9vKCl7CisgICAgICBMaW5rZWRMaXN0IHkgPSBhLng7CisKKyAgICAgIHkuZSA9ICIiOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDUzL2JlZm9yZS90ZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDUzL2JlZm9yZS90ZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDRhNWY0YQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90NTMvYmVmb3JlL3Rlc3QuamF2YQpAQCAtMCwwICsxLDIxIEBACitjbGFzcyBMaW5rZWRMaXN0IDxUPiB7CisgICAgVCBlOworCisgICAgTGlua2VkTGlzdDxUPiBnZXQoKSB7CisgICAgICAgIHJldHVybiB0aGlzOworICAgIH0KK30KKworY2xhc3MgQXV4eworICBMaW5rZWRMaXN0PE9iamVjdD4geDsKK30KKworY2xhc3MgVGVzdCB7CisgICAgQXV4IGEgPSBudWxsOworCisgICAgdm9pZCBmb28oKXsKKyAgICAgIExpbmtlZExpc3QgeSA9IGEueDsKKworICAgICAgeS5lID0gIiI7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90NTQvYWZ0ZXIvVGVzdC4xLml0ZW1zIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q1NC9hZnRlci9UZXN0LjEuaXRlbXMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzk0YTI2MQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90NTQvYWZ0ZXIvVGVzdC4xLml0ZW1zCkBAIC0wLDAgKzEgQEAKK0xpbmtlZExpc3RcblBzaUZpZWxkOngKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90NTQvYWZ0ZXIvVGVzdC5pdGVtcyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90NTQvYWZ0ZXIvVGVzdC5pdGVtcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jOTRhMjYxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q1NC9hZnRlci9UZXN0Lml0ZW1zCkBAIC0wLDAgKzEgQEAKK0xpbmtlZExpc3RcblBzaUZpZWxkOngKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90NTQvYWZ0ZXIvdGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q1NC9hZnRlci90ZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWVhZDNhOAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90NTQvYWZ0ZXIvdGVzdC5qYXZhCkBAIC0wLDAgKzEsMTUgQEAKK2NsYXNzIExpbmtlZExpc3QgPFQ+IHsKKyAgICBUIGU7CisKKyAgICBMaW5rZWRMaXN0PFQ+IGdldCgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXM7CisgICAgfQorfQorCitjbGFzcyBUZXN0IHsKKyAgTGlua2VkTGlzdCB4OworCisgIFRlc3QoVGVzdCB5KXsKKyAgICAgeCA9IHkueDsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90NTQvYmVmb3JlL3Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90NTQvYmVmb3JlL3Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZWFkM2E4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q1NC9iZWZvcmUvdGVzdC5qYXZhCkBAIC0wLDAgKzEsMTUgQEAKK2NsYXNzIExpbmtlZExpc3QgPFQ+IHsKKyAgICBUIGU7CisKKyAgICBMaW5rZWRMaXN0PFQ+IGdldCgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXM7CisgICAgfQorfQorCitjbGFzcyBUZXN0IHsKKyAgTGlua2VkTGlzdCB4OworCisgIFRlc3QoVGVzdCB5KXsKKyAgICAgeCA9IHkueDsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90NTUvYWZ0ZXIvVGVzdC4xLml0ZW1zIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q1NS9hZnRlci9UZXN0LjEuaXRlbXMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjdmNDZhMgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90NTUvYWZ0ZXIvVGVzdC4xLml0ZW1zCkBAIC0wLDAgKzEgQEAKK0xpbmtlZExpc3Q8amF2YS5sYW5nLkludGVnZXIsamF2YS5sYW5nLlN0cmluZz5cblBzaUZpZWxkOngKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90NTUvYWZ0ZXIvVGVzdC5pdGVtcyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90NTUvYWZ0ZXIvVGVzdC5pdGVtcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jOTRhMjYxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q1NS9hZnRlci9UZXN0Lml0ZW1zCkBAIC0wLDAgKzEgQEAKK0xpbmtlZExpc3RcblBzaUZpZWxkOngKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90NTUvYWZ0ZXIvdGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q1NS9hZnRlci90ZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGU5ODE0ZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90NTUvYWZ0ZXIvdGVzdC5qYXZhCkBAIC0wLDAgKzEsMTcgQEAKK2NsYXNzIExpbmtlZExpc3QgPFQsIEU+IHsKKyAgICBUIHQ7CisgICAgRSBlOworCisgICAgTGlua2VkTGlzdDxFLCBUPiBnZXQoKSB7CisgICAgICAgIHJldHVybiB0aGlzOworICAgIH0KK30KKworY2xhc3MgVGVzdCB7CisgIExpbmtlZExpc3QgeDsKKworICB2b2lkIGZvbygpeworICAgIHguZ2V0KCkudCA9ICIiOworICAgIHguZ2V0KCkuZSA9IG5ldyBJbnRlZ2VyKDMpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q1NS9iZWZvcmUvdGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q1NS9iZWZvcmUvdGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBlOTgxNGUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDU1L2JlZm9yZS90ZXN0LmphdmEKQEAgLTAsMCArMSwxNyBAQAorY2xhc3MgTGlua2VkTGlzdCA8VCwgRT4geworICAgIFQgdDsKKyAgICBFIGU7CisKKyAgICBMaW5rZWRMaXN0PEUsIFQ+IGdldCgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXM7CisgICAgfQorfQorCitjbGFzcyBUZXN0IHsKKyAgTGlua2VkTGlzdCB4OworCisgIHZvaWQgZm9vKCl7CisgICAgeC5nZXQoKS50ID0gIiI7CisgICAgeC5nZXQoKS5lID0gbmV3IEludGVnZXIoMyk7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDU2L2FmdGVyL1Rlc3QuMS5pdGVtcyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90NTYvYWZ0ZXIvVGVzdC4xLml0ZW1zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM0M2UxZTAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDU2L2FmdGVyL1Rlc3QuMS5pdGVtcwpAQCAtMCwwICsxLDMgQEAKK0xpbmtlZExpc3Q8TGlua2VkTGlzdDxqYXZhLmlvLlNlcmlhbGl6YWJsZT4+XG5Qc2lMb2NhbFZhcmlhYmxlOngKK0xpbmtlZExpc3Q8amF2YS5pby5TZXJpYWxpemFibGU+XG5Qc2lMb2NhbFZhcmlhYmxlOnkKK0xpbmtlZExpc3Q8amF2YS5pby5TZXJpYWxpemFibGU+XG5Qc2lMb2NhbFZhcmlhYmxlOnoKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90NTYvYWZ0ZXIvVGVzdC5pdGVtcyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90NTYvYWZ0ZXIvVGVzdC5pdGVtcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYzY4N2I4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q1Ni9hZnRlci9UZXN0Lml0ZW1zCkBAIC0wLDAgKzEsMyBAQAorTGlua2VkTGlzdDxMaW5rZWRMaXN0PlxuUHNpTG9jYWxWYXJpYWJsZTp4CitMaW5rZWRMaXN0XG5Qc2lMb2NhbFZhcmlhYmxlOnkKK0xpbmtlZExpc3RcblBzaUxvY2FsVmFyaWFibGU6egpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q1Ni9hZnRlci90ZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDU2L2FmdGVyL3Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZjM4YjY3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q1Ni9hZnRlci90ZXN0LmphdmEKQEAgLTAsMCArMSwyOCBAQAorY2xhc3MgTGlua2VkTGlzdCA8VD4geworICAgIFQgZTsKKworICAgIFQgZ2V0KCkgeworICAgICAgICByZXR1cm4gZTsKKyAgICB9CisKKyAgICB2b2lkIHNldChUIHQpIHsKKworICAgIH0KK30KKworCisKK2NsYXNzIFRlc3QgeworCisgICAgdm9pZCBmb28oKSB7CisgICAgICAgIExpbmtlZExpc3Q8TGlua2VkTGlzdD4geCA9IG51bGw7CisgICAgICAgIExpbmtlZExpc3QgeSA9IG51bGw7CisgICAgICAgIExpbmtlZExpc3QgeiA9IG51bGw7CisKKyAgICAgICAgeSA9IHguZ2V0KCk7CisgICAgICAgIHogPSB4LmdldCgpOworCisgICAgICAgIHkuc2V0KG5ldyBJbnRlZ2VyKDMpKTsKKyAgICAgICAgei5zZXQoIiIpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDU2L2JlZm9yZS90ZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDU2L2JlZm9yZS90ZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmYzOGI2NwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90NTYvYmVmb3JlL3Rlc3QuamF2YQpAQCAtMCwwICsxLDI4IEBACitjbGFzcyBMaW5rZWRMaXN0IDxUPiB7CisgICAgVCBlOworCisgICAgVCBnZXQoKSB7CisgICAgICAgIHJldHVybiBlOworICAgIH0KKworICAgIHZvaWQgc2V0KFQgdCkgeworCisgICAgfQorfQorCisKKworY2xhc3MgVGVzdCB7CisKKyAgICB2b2lkIGZvbygpIHsKKyAgICAgICAgTGlua2VkTGlzdDxMaW5rZWRMaXN0PiB4ID0gbnVsbDsKKyAgICAgICAgTGlua2VkTGlzdCB5ID0gbnVsbDsKKyAgICAgICAgTGlua2VkTGlzdCB6ID0gbnVsbDsKKworICAgICAgICB5ID0geC5nZXQoKTsKKyAgICAgICAgeiA9IHguZ2V0KCk7CisKKyAgICAgICAgeS5zZXQobmV3IEludGVnZXIoMykpOworICAgICAgICB6LnNldCgiIik7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90NTcvYWZ0ZXIvVGVzdC4xLml0ZW1zIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q1Ny9hZnRlci9UZXN0LjEuaXRlbXMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjg4Y2Q2MgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90NTcvYWZ0ZXIvVGVzdC4xLml0ZW1zCkBAIC0wLDAgKzEgQEAKK0NvbGw8amF2YS5sYW5nLlN0cmluZyxqYXZhLmxhbmcuSW50ZWdlcj5cblBzaUxvY2FsVmFyaWFibGU6eApkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q1Ny9hZnRlci9UZXN0Lml0ZW1zIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q1Ny9hZnRlci9UZXN0Lml0ZW1zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI0ZDY2OTIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDU3L2FmdGVyL1Rlc3QuaXRlbXMKQEAgLTAsMCArMSBAQAorQ29sbFxuUHNpTG9jYWxWYXJpYWJsZTp4CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDU3L2FmdGVyL3Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90NTcvYWZ0ZXIvdGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjViMmRhOTYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDU3L2FmdGVyL3Rlc3QuamF2YQpAQCAtMCwwICsxLDE2IEBACitjbGFzcyBDb2xsIDxYLCBZPiB7CisgIFggZjsKKyAgWSBzOworICBDb2xsPFksIFg+IGE7Cit9CisKKworCitjbGFzcyBUZXN0IHsKKworICAgIHZvaWQgZm9vKCkgeworICAgICAgICBDb2xsIHg7CisgICAgICAgIHguZiA9ICIiOworICAgICAgICB4LnMgPSBuZXcgSW50ZWdlcigzKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q1Ny9iZWZvcmUvdGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q1Ny9iZWZvcmUvdGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjViMmRhOTYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDU3L2JlZm9yZS90ZXN0LmphdmEKQEAgLTAsMCArMSwxNiBAQAorY2xhc3MgQ29sbCA8WCwgWT4geworICBYIGY7CisgIFkgczsKKyAgQ29sbDxZLCBYPiBhOworfQorCisKKworY2xhc3MgVGVzdCB7CisKKyAgICB2b2lkIGZvbygpIHsKKyAgICAgICAgQ29sbCB4OworICAgICAgICB4LmYgPSAiIjsKKyAgICAgICAgeC5zID0gbmV3IEludGVnZXIoMyk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90NTgvYWZ0ZXIvVGVzdC4xLml0ZW1zIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q1OC9hZnRlci9UZXN0LjEuaXRlbXMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjczYjBkOAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90NTgvYWZ0ZXIvVGVzdC4xLml0ZW1zCkBAIC0wLDAgKzEgQEAKK0NvbGw8amF2YS5sYW5nLkludGVnZXIsamF2YS5sYW5nLlN0cmluZz5cblBzaUxvY2FsVmFyaWFibGU6eApkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q1OC9hZnRlci9UZXN0Lml0ZW1zIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q1OC9hZnRlci9UZXN0Lml0ZW1zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI0ZDY2OTIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDU4L2FmdGVyL1Rlc3QuaXRlbXMKQEAgLTAsMCArMSBAQAorQ29sbFxuUHNpTG9jYWxWYXJpYWJsZTp4CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDU4L2FmdGVyL3Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90NTgvYWZ0ZXIvdGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE1ZWY0ZjUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDU4L2FmdGVyL3Rlc3QuamF2YQpAQCAtMCwwICsxLDE0IEBACitjbGFzcyBDb2xsIDxYLCBZPiB7CisgIFggZjsKKyAgWSBzOworICBDb2xsPFksIFg+IGE7Cit9CisKK2NsYXNzIFRlc3QgeworCisgICAgdm9pZCBmb28oKSB7CisgICAgICAgIENvbGwgeDsKKyAgICAgICAgeC5hLmYgPSAiIjsKKyAgICAgICAgeC5hLnMgPSBuZXcgSW50ZWdlcigzKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q1OC9iZWZvcmUvdGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q1OC9iZWZvcmUvdGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE1ZWY0ZjUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDU4L2JlZm9yZS90ZXN0LmphdmEKQEAgLTAsMCArMSwxNCBAQAorY2xhc3MgQ29sbCA8WCwgWT4geworICBYIGY7CisgIFkgczsKKyAgQ29sbDxZLCBYPiBhOworfQorCitjbGFzcyBUZXN0IHsKKworICAgIHZvaWQgZm9vKCkgeworICAgICAgICBDb2xsIHg7CisgICAgICAgIHguYS5mID0gIiI7CisgICAgICAgIHguYS5zID0gbmV3IEludGVnZXIoMyk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90NTkvYWZ0ZXIvVGVzdC4xLml0ZW1zIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q1OS9hZnRlci9UZXN0LjEuaXRlbXMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjg4Y2Q2MgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90NTkvYWZ0ZXIvVGVzdC4xLml0ZW1zCkBAIC0wLDAgKzEgQEAKK0NvbGw8amF2YS5sYW5nLlN0cmluZyxqYXZhLmxhbmcuSW50ZWdlcj5cblBzaUxvY2FsVmFyaWFibGU6eApkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q1OS9hZnRlci9UZXN0Lml0ZW1zIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q1OS9hZnRlci9UZXN0Lml0ZW1zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI0ZDY2OTIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDU5L2FmdGVyL1Rlc3QuaXRlbXMKQEAgLTAsMCArMSBAQAorQ29sbFxuUHNpTG9jYWxWYXJpYWJsZTp4CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDU5L2FmdGVyL3Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90NTkvYWZ0ZXIvdGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQwZjlmZjIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDU5L2FmdGVyL3Rlc3QuamF2YQpAQCAtMCwwICsxLDE2IEBACitjbGFzcyBDb2xsIDxYLCBZPiB7CisgIFggZjsKKyAgWSBzOworICBDb2xsPFksIFg+IGE7Cit9CisKKworCitjbGFzcyBUZXN0IHsKKworICAgIHZvaWQgZm9vKCkgeworICAgICAgICBDb2xsIHg7CisgICAgICAgIHguYS5hLmYgPSAiIjsKKyAgICAgICAgeC5hLmEucyA9IG5ldyBJbnRlZ2VyKDMpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDU5L2JlZm9yZS90ZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDU5L2JlZm9yZS90ZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDBmOWZmMgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90NTkvYmVmb3JlL3Rlc3QuamF2YQpAQCAtMCwwICsxLDE2IEBACitjbGFzcyBDb2xsIDxYLCBZPiB7CisgIFggZjsKKyAgWSBzOworICBDb2xsPFksIFg+IGE7Cit9CisKKworCitjbGFzcyBUZXN0IHsKKworICAgIHZvaWQgZm9vKCkgeworICAgICAgICBDb2xsIHg7CisgICAgICAgIHguYS5hLmYgPSAiIjsKKyAgICAgICAgeC5hLmEucyA9IG5ldyBJbnRlZ2VyKDMpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDYwL2FmdGVyL1Rlc3QuMS5pdGVtcyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90NjAvYWZ0ZXIvVGVzdC4xLml0ZW1zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI4OGNkNjIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDYwL2FmdGVyL1Rlc3QuMS5pdGVtcwpAQCAtMCwwICsxIEBACitDb2xsPGphdmEubGFuZy5TdHJpbmcsamF2YS5sYW5nLkludGVnZXI+XG5Qc2lMb2NhbFZhcmlhYmxlOngKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90NjAvYWZ0ZXIvVGVzdC5pdGVtcyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90NjAvYWZ0ZXIvVGVzdC5pdGVtcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNGQ2NjkyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q2MC9hZnRlci9UZXN0Lml0ZW1zCkBAIC0wLDAgKzEgQEAKK0NvbGxcblBzaUxvY2FsVmFyaWFibGU6eApkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q2MC9hZnRlci90ZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDYwL2FmdGVyL3Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZmMxZWUzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q2MC9hZnRlci90ZXN0LmphdmEKQEAgLTAsMCArMSwyMCBAQAorY2xhc3MgT2hZZWFoPFQsUT57CisgIFQgdDsKK30KKworY2xhc3MgQ29sbCA8WCwgWT4geworICBYIGY7CisgIFkgczsKKyAgT2hZZWFoPFksQ29sbDxYLFg+PiBhOworfQorCisKKworY2xhc3MgVGVzdCB7CisKKyAgICB2b2lkIGZvbygpIHsKKyAgICAgICAgQ29sbCB4OworICAgICAgICB4LmYgPSAiIjsKKyAgICAgICAgeC5hLnQgPSBuZXcgSW50ZWdlcigzKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q2MC9iZWZvcmUvdGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q2MC9iZWZvcmUvdGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNmYzFlZTMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDYwL2JlZm9yZS90ZXN0LmphdmEKQEAgLTAsMCArMSwyMCBAQAorY2xhc3MgT2hZZWFoPFQsUT57CisgIFQgdDsKK30KKworY2xhc3MgQ29sbCA8WCwgWT4geworICBYIGY7CisgIFkgczsKKyAgT2hZZWFoPFksQ29sbDxYLFg+PiBhOworfQorCisKKworY2xhc3MgVGVzdCB7CisKKyAgICB2b2lkIGZvbygpIHsKKyAgICAgICAgQ29sbCB4OworICAgICAgICB4LmYgPSAiIjsKKyAgICAgICAgeC5hLnQgPSBuZXcgSW50ZWdlcigzKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q2MS9hZnRlci9UZXN0LjEuaXRlbXMgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDYxL2FmdGVyL1Rlc3QuMS5pdGVtcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNGQ2NjkyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q2MS9hZnRlci9UZXN0LjEuaXRlbXMKQEAgLTAsMCArMSBAQAorQ29sbFxuUHNpTG9jYWxWYXJpYWJsZTp4CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDYxL2FmdGVyL1Rlc3QuaXRlbXMgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDYxL2FmdGVyL1Rlc3QuaXRlbXMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjRkNjY5MgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90NjEvYWZ0ZXIvVGVzdC5pdGVtcwpAQCAtMCwwICsxIEBACitDb2xsXG5Qc2lMb2NhbFZhcmlhYmxlOngKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90NjEvYWZ0ZXIvdGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q2MS9hZnRlci90ZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTgwNGNiMwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90NjEvYWZ0ZXIvdGVzdC5qYXZhCkBAIC0wLDAgKzEsMTQgQEAKK2NsYXNzIE9oWWVhaDxaPiB7CisgIFogdDsKK30KKworY2xhc3MgQ29sbCA8VCwgWCBleHRlbmRzIE9oWWVhaDxUPj4geworICBYIGY7Cit9CisKK2NsYXNzIFRlc3QgeworICAgIHZvaWQgZm9vKCkgeworICAgICAgQ29sbCB4OworICAgICAgeC5mLnQgPSBuZXcgSW50ZWdlcigyKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q2MS9iZWZvcmUvdGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q2MS9iZWZvcmUvdGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU4MDRjYjMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDYxL2JlZm9yZS90ZXN0LmphdmEKQEAgLTAsMCArMSwxNCBAQAorY2xhc3MgT2hZZWFoPFo+IHsKKyAgWiB0OworfQorCitjbGFzcyBDb2xsIDxULCBYIGV4dGVuZHMgT2hZZWFoPFQ+PiB7CisgIFggZjsKK30KKworY2xhc3MgVGVzdCB7CisgICAgdm9pZCBmb28oKSB7CisgICAgICBDb2xsIHg7CisgICAgICB4LmYudCA9IG5ldyBJbnRlZ2VyKDIpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDYyL2FmdGVyL1Rlc3QuMS5pdGVtcyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90NjIvYWZ0ZXIvVGVzdC4xLml0ZW1zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI0ZDY2OTIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDYyL2FmdGVyL1Rlc3QuMS5pdGVtcwpAQCAtMCwwICsxIEBACitDb2xsXG5Qc2lMb2NhbFZhcmlhYmxlOngKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90NjIvYWZ0ZXIvVGVzdC5pdGVtcyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90NjIvYWZ0ZXIvVGVzdC5pdGVtcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNGQ2NjkyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q2Mi9hZnRlci9UZXN0Lml0ZW1zCkBAIC0wLDAgKzEgQEAKK0NvbGxcblBzaUxvY2FsVmFyaWFibGU6eApkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q2Mi9hZnRlci90ZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDYyL2FmdGVyL3Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wN2I3NTNhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q2Mi9hZnRlci90ZXN0LmphdmEKQEAgLTAsMCArMSwxMSBAQAorY2xhc3MgQ29sbCA8VD4geworICBUIHQ7CisgIENvbGwgeDsKK30KKworY2xhc3MgVGVzdCB7CisgICAgdm9pZCBmb28oKSB7CisgICAgICBDb2xsIHg7CisgICAgICB4LngudCA9ICIiOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDYyL2JlZm9yZS90ZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDYyL2JlZm9yZS90ZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDdiNzUzYQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90NjIvYmVmb3JlL3Rlc3QuamF2YQpAQCAtMCwwICsxLDExIEBACitjbGFzcyBDb2xsIDxUPiB7CisgIFQgdDsKKyAgQ29sbCB4OworfQorCitjbGFzcyBUZXN0IHsKKyAgICB2b2lkIGZvbygpIHsKKyAgICAgIENvbGwgeDsKKyAgICAgIHgueC50ID0gIiI7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90NjMvYWZ0ZXIvVGVzdC4xLml0ZW1zIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q2My9hZnRlci9UZXN0LjEuaXRlbXMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjczYjBkOAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90NjMvYWZ0ZXIvVGVzdC4xLml0ZW1zCkBAIC0wLDAgKzEgQEAKK0NvbGw8amF2YS5sYW5nLkludGVnZXIsamF2YS5sYW5nLlN0cmluZz5cblBzaUxvY2FsVmFyaWFibGU6eApkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q2My9hZnRlci9UZXN0Lml0ZW1zIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q2My9hZnRlci9UZXN0Lml0ZW1zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI0ZDY2OTIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDYzL2FmdGVyL1Rlc3QuaXRlbXMKQEAgLTAsMCArMSBAQAorQ29sbFxuUHNpTG9jYWxWYXJpYWJsZTp4CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDYzL2FmdGVyL3Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90NjMvYWZ0ZXIvdGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg3NGEwMDIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDYzL2FmdGVyL3Rlc3QuamF2YQpAQCAtMCwwICsxLDE0IEBACitjbGFzcyBDb2xsIDxULCBYPiB7CisgIFQgdDsKKyAgWCB4OworICBDb2xsPFgsIFQ+IGYoKSB7cmV0dXJuIG51bGw7fTsKK30KKworY2xhc3MgVGVzdCB7CisgICAgdm9pZCBmb28oKSB7CisgICAgICBDb2xsIHg7CisKKyAgICAgIHguZigpLnQgPSAiIjsKKyAgICAgIHgudCA9IG5ldyBJbnRlZ2VyKDQpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDYzL2JlZm9yZS90ZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDYzL2JlZm9yZS90ZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODc0YTAwMgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90NjMvYmVmb3JlL3Rlc3QuamF2YQpAQCAtMCwwICsxLDE0IEBACitjbGFzcyBDb2xsIDxULCBYPiB7CisgIFQgdDsKKyAgWCB4OworICBDb2xsPFgsIFQ+IGYoKSB7cmV0dXJuIG51bGw7fTsKK30KKworY2xhc3MgVGVzdCB7CisgICAgdm9pZCBmb28oKSB7CisgICAgICBDb2xsIHg7CisKKyAgICAgIHguZigpLnQgPSAiIjsKKyAgICAgIHgudCA9IG5ldyBJbnRlZ2VyKDQpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDY0L2FmdGVyL1Rlc3QuMS5pdGVtcyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90NjQvYWZ0ZXIvVGVzdC4xLml0ZW1zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI0ZDY2OTIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDY0L2FmdGVyL1Rlc3QuMS5pdGVtcwpAQCAtMCwwICsxIEBACitDb2xsXG5Qc2lMb2NhbFZhcmlhYmxlOngKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90NjQvYWZ0ZXIvVGVzdC5pdGVtcyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90NjQvYWZ0ZXIvVGVzdC5pdGVtcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNGQ2NjkyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q2NC9hZnRlci9UZXN0Lml0ZW1zCkBAIC0wLDAgKzEgQEAKK0NvbGxcblBzaUxvY2FsVmFyaWFibGU6eApkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q2NC9hZnRlci90ZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDY0L2FmdGVyL3Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZjBmOTZkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q2NC9hZnRlci90ZXN0LmphdmEKQEAgLTAsMCArMSwxNyBAQAorY2xhc3MgT2hZZWFoPFo+eworICBaIHo7Cit9CisKK2NsYXNzIENvbGwgPFQsIFggZXh0ZW5kcyBPaFllYWg8VD4+IHsKKyAgVCB0OworICBYIHg7CisgIFggZigpIHtyZXR1cm4gbnVsbDt9OworfQorCitjbGFzcyBUZXN0IHsKKyAgICB2b2lkIGZvbygpIHsKKyAgICAgIENvbGwgeDsKKworICAgICAgeC5mKCkueiA9ICIiOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDY0L2JlZm9yZS90ZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDY0L2JlZm9yZS90ZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2YwZjk2ZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90NjQvYmVmb3JlL3Rlc3QuamF2YQpAQCAtMCwwICsxLDE3IEBACitjbGFzcyBPaFllYWg8Wj57CisgIFogejsKK30KKworY2xhc3MgQ29sbCA8VCwgWCBleHRlbmRzIE9oWWVhaDxUPj4geworICBUIHQ7CisgIFggeDsKKyAgWCBmKCkge3JldHVybiBudWxsO307Cit9CisKK2NsYXNzIFRlc3QgeworICAgIHZvaWQgZm9vKCkgeworICAgICAgQ29sbCB4OworCisgICAgICB4LmYoKS56ID0gIiI7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90NjUvYWZ0ZXIvVGVzdC4xLml0ZW1zIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q2NS9hZnRlci9UZXN0LjEuaXRlbXMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzJjOWM3YzYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDY1L2FmdGVyL1Rlc3QuMS5pdGVtcwpAQCAtMCwwICsxLDIgQEAKK01hcDxqYXZhLmxhbmcuU3RyaW5nLGphdmEubGFuZy5JbnRlZ2VyPlxuUHNpTG9jYWxWYXJpYWJsZTp4CitNYXA8amF2YS5sYW5nLlN0cmluZyxqYXZhLmxhbmcuSW50ZWdlcj5cbm5ldwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q2NS9hZnRlci9UZXN0Lml0ZW1zIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q2NS9hZnRlci9UZXN0Lml0ZW1zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNkNWJmOGIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDY1L2FmdGVyL1Rlc3QuaXRlbXMKQEAgLTAsMCArMSwyIEBACitNYXBcblBzaUxvY2FsVmFyaWFibGU6eAorTWFwXG5uZXcKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90NjUvYWZ0ZXIvdGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q2NS9hZnRlci90ZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGE0NTM0YwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90NjUvYWZ0ZXIvdGVzdC5qYXZhCkBAIC0wLDAgKzEsMTMgQEAKK2NsYXNzIE1hcDxULCBYPiB7CisgIFQgdDsKKyAgWCB4OworfQorCitjbGFzcyBUZXN0IHsKKyAgICB2b2lkIGZvbygpIHsKKyAgICAgIE1hcCB4ID0gbmV3IE1hcCgpOworCisgICAgICB4LnQgPSAiIjsKKyAgICAgIHgueCA9IG5ldyBJbnRlZ2VyKDMpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDY1L2JlZm9yZS90ZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDY1L2JlZm9yZS90ZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGE0NTM0YwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90NjUvYmVmb3JlL3Rlc3QuamF2YQpAQCAtMCwwICsxLDEzIEBACitjbGFzcyBNYXA8VCwgWD4geworICBUIHQ7CisgIFggeDsKK30KKworY2xhc3MgVGVzdCB7CisgICAgdm9pZCBmb28oKSB7CisgICAgICBNYXAgeCA9IG5ldyBNYXAoKTsKKworICAgICAgeC50ID0gIiI7CisgICAgICB4LnggPSBuZXcgSW50ZWdlcigzKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q2Ni9hZnRlci9UZXN0LjEuaXRlbXMgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDY2L2FmdGVyL1Rlc3QuMS5pdGVtcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZGMxYTc2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q2Ni9hZnRlci9UZXN0LjEuaXRlbXMKQEAgLTAsMCArMSwzIEBACitNYXA8amF2YS5sYW5nLlN0cmluZyxqYXZhLmxhbmcuSW50ZWdlcj5cblBzaUxvY2FsVmFyaWFibGU6eAorTWFwPGphdmEubGFuZy5TdHJpbmcsamF2YS5sYW5nLkludGVnZXI+XG5Qc2lMb2NhbFZhcmlhYmxlOnkKK01hcDxqYXZhLmxhbmcuU3RyaW5nLGphdmEubGFuZy5JbnRlZ2VyPlxubmV3CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDY2L2FmdGVyL1Rlc3QuaXRlbXMgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDY2L2FmdGVyL1Rlc3QuaXRlbXMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjg3MzVjZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90NjYvYWZ0ZXIvVGVzdC5pdGVtcwpAQCAtMCwwICsxLDMgQEAKK01hcFxuUHNpTG9jYWxWYXJpYWJsZTp4CitNYXBcblBzaUxvY2FsVmFyaWFibGU6eQorTWFwXG5uZXcKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90NjYvYWZ0ZXIvdGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q2Ni9hZnRlci90ZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGM5YjY2OAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90NjYvYWZ0ZXIvdGVzdC5qYXZhCkBAIC0wLDAgKzEsMTQgQEAKK2NsYXNzIE1hcDxULCBYPiB7CisgIFQgdDsKKyAgWCB4OworfQorCitjbGFzcyBUZXN0IHsKKyAgICB2b2lkIGZvbygpIHsKKyAgICAgIE1hcCB4ID0gbmV3IE1hcCgpOworICAgICAgTWFwIHkgPSB4OworCisgICAgICB4LnQgPSAiIjsKKyAgICAgIHgueCA9IG5ldyBJbnRlZ2VyKDMpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDY2L2JlZm9yZS90ZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDY2L2JlZm9yZS90ZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGM5YjY2OAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90NjYvYmVmb3JlL3Rlc3QuamF2YQpAQCAtMCwwICsxLDE0IEBACitjbGFzcyBNYXA8VCwgWD4geworICBUIHQ7CisgIFggeDsKK30KKworY2xhc3MgVGVzdCB7CisgICAgdm9pZCBmb28oKSB7CisgICAgICBNYXAgeCA9IG5ldyBNYXAoKTsKKyAgICAgIE1hcCB5ID0geDsKKworICAgICAgeC50ID0gIiI7CisgICAgICB4LnggPSBuZXcgSW50ZWdlcigzKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q2Ny9hZnRlci9UZXN0LjEuaXRlbXMgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDY3L2FmdGVyL1Rlc3QuMS5pdGVtcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44M2UxZGM0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q2Ny9hZnRlci9UZXN0LjEuaXRlbXMKQEAgLTAsMCArMSw1IEBACitNYXA8amF2YS5sYW5nLkludGVnZXIsamF2YS5sYW5nLlN0cmluZz5cblBzaUxvY2FsVmFyaWFibGU6eQorTWFwPGphdmEubGFuZy5JbnRlZ2VyLGphdmEubGFuZy5TdHJpbmc+XG5yZXR1cm4gb2YgZgorUGFtPGphdmEubGFuZy5TdHJpbmc+XG5Qc2lMb2NhbFZhcmlhYmxlOngKK1BhbTxqYXZhLmxhbmcuU3RyaW5nPlxubmV3CitQYW08amF2YS5sYW5nLlN0cmluZz5cbnBhcmFtZXRlciAwIG9mIGYKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90NjcvYWZ0ZXIvVGVzdC5pdGVtcyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90NjcvYWZ0ZXIvVGVzdC5pdGVtcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MzNhNjUwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q2Ny9hZnRlci9UZXN0Lml0ZW1zCkBAIC0wLDAgKzEsNSBAQAorTWFwXG5Qc2lMb2NhbFZhcmlhYmxlOnkKK01hcFxucmV0dXJuIG9mIGYKK1BhbVxuUHNpTG9jYWxWYXJpYWJsZTp4CitQYW1cbm5ldworUGFtXG5wYXJhbWV0ZXIgMCBvZiBmCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDY3L2FmdGVyL3Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90NjcvYWZ0ZXIvdGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUxN2U1MmMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDY3L2FmdGVyL3Rlc3QuamF2YQpAQCAtMCwwICsxLDIyIEBACitjbGFzcyBNYXA8VCwgWD4geworICBUIHQ7CisgIFggeDsKK30KKworY2xhc3MgUGFtPFk+IGV4dGVuZHMgTWFwPEludGVnZXIsIFk+IHsKK30KKworY2xhc3MgVGVzdCB7CisKKyAgICBNYXAgZiAoUGFtIHgpeworICAgICAgcmV0dXJuIHg7CisgICAgfQorCisgICAgdm9pZCBmb28oKSB7CisgICAgICBQYW0geCA9IG5ldyBQYW0gKCk7CisKKyAgICAgIHgueCA9ICIiOworCisgICAgICBNYXAgeSA9IGYgKHgpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDY3L2JlZm9yZS90ZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDY3L2JlZm9yZS90ZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTE3ZTUyYwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90NjcvYmVmb3JlL3Rlc3QuamF2YQpAQCAtMCwwICsxLDIyIEBACitjbGFzcyBNYXA8VCwgWD4geworICBUIHQ7CisgIFggeDsKK30KKworY2xhc3MgUGFtPFk+IGV4dGVuZHMgTWFwPEludGVnZXIsIFk+IHsKK30KKworY2xhc3MgVGVzdCB7CisKKyAgICBNYXAgZiAoUGFtIHgpeworICAgICAgcmV0dXJuIHg7CisgICAgfQorCisgICAgdm9pZCBmb28oKSB7CisgICAgICBQYW0geCA9IG5ldyBQYW0gKCk7CisKKyAgICAgIHgueCA9ICIiOworCisgICAgICBNYXAgeSA9IGYgKHgpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDY4L2FmdGVyL1Rlc3QuMS5pdGVtcyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90NjgvYWZ0ZXIvVGVzdC4xLml0ZW1zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVkYzFhNzYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDY4L2FmdGVyL1Rlc3QuMS5pdGVtcwpAQCAtMCwwICsxLDMgQEAKK01hcDxqYXZhLmxhbmcuU3RyaW5nLGphdmEubGFuZy5JbnRlZ2VyPlxuUHNpTG9jYWxWYXJpYWJsZTp4CitNYXA8amF2YS5sYW5nLlN0cmluZyxqYXZhLmxhbmcuSW50ZWdlcj5cblBzaUxvY2FsVmFyaWFibGU6eQorTWFwPGphdmEubGFuZy5TdHJpbmcsamF2YS5sYW5nLkludGVnZXI+XG5uZXcKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90NjgvYWZ0ZXIvVGVzdC5pdGVtcyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90NjgvYWZ0ZXIvVGVzdC5pdGVtcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yODczNWNkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q2OC9hZnRlci9UZXN0Lml0ZW1zCkBAIC0wLDAgKzEsMyBAQAorTWFwXG5Qc2lMb2NhbFZhcmlhYmxlOngKK01hcFxuUHNpTG9jYWxWYXJpYWJsZTp5CitNYXBcbm5ldwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q2OC9hZnRlci90ZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDY4L2FmdGVyL3Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZDI5OGMwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q2OC9hZnRlci90ZXN0LmphdmEKQEAgLTAsMCArMSwyMCBAQAorY2xhc3MgTWFwPFQsIFg+IHsKKyAgVCB0OworICBYIHg7CisKKyAgaW50IHNpemUoKXsKKyAgICByZXR1cm4gMDsKKyAgfQorfQorCitjbGFzcyBUZXN0IHsKKyAgICB2b2lkIGZvbygpIHsKKyAgICAgIE1hcCB4ID0gbmV3IE1hcCgpOworICAgICAgTWFwIHkgPSB4OworCisgICAgICB4LnQgPSAiIjsKKyAgICAgIHgueCA9IG5ldyBJbnRlZ2VyKDMpOworCisgICAgICBUZXN0W10gdCA9IG5ldyBUZXN0W3guc2l6ZSgpXTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q2OC9iZWZvcmUvdGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q2OC9iZWZvcmUvdGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVkMjk4YzAKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDY4L2JlZm9yZS90ZXN0LmphdmEKQEAgLTAsMCArMSwyMCBAQAorY2xhc3MgTWFwPFQsIFg+IHsKKyAgVCB0OworICBYIHg7CisKKyAgaW50IHNpemUoKXsKKyAgICByZXR1cm4gMDsKKyAgfQorfQorCitjbGFzcyBUZXN0IHsKKyAgICB2b2lkIGZvbygpIHsKKyAgICAgIE1hcCB4ID0gbmV3IE1hcCgpOworICAgICAgTWFwIHkgPSB4OworCisgICAgICB4LnQgPSAiIjsKKyAgICAgIHgueCA9IG5ldyBJbnRlZ2VyKDMpOworCisgICAgICBUZXN0W10gdCA9IG5ldyBUZXN0W3guc2l6ZSgpXTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q2OS9hZnRlci9UZXN0LjEuaXRlbXMgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDY5L2FmdGVyL1Rlc3QuMS5pdGVtcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hN2QzZmQxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q2OS9hZnRlci9UZXN0LjEuaXRlbXMKQEAgLTAsMCArMSw0IEBACitNYXA8amF2YS5sYW5nLlN0cmluZyxqYXZhLmxhbmcuSW50ZWdlcj5cblBzaUxvY2FsVmFyaWFibGU6eAorTWFwPGphdmEubGFuZy5TdHJpbmcsamF2YS5sYW5nLkludGVnZXI+XG5Qc2lMb2NhbFZhcmlhYmxlOnkKK01hcDxqYXZhLmxhbmcuU3RyaW5nLGphdmEubGFuZy5JbnRlZ2VyPlxubmV3CitNYXA8amF2YS5sYW5nLlN0cmluZyxqYXZhLmxhbmcuSW50ZWdlcj5cbnBhcmFtZXRlciAwIG9mIGYKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90NjkvYWZ0ZXIvVGVzdC5pdGVtcyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90NjkvYWZ0ZXIvVGVzdC5pdGVtcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NzRhMWU2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q2OS9hZnRlci9UZXN0Lml0ZW1zCkBAIC0wLDAgKzEsNCBAQAorTWFwXG5Qc2lMb2NhbFZhcmlhYmxlOngKK01hcFxuUHNpTG9jYWxWYXJpYWJsZTp5CitNYXBcbm5ldworTWFwXG5wYXJhbWV0ZXIgMCBvZiBmCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDY5L2FmdGVyL3Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90NjkvYWZ0ZXIvdGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRhZTVhMmQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDY5L2FmdGVyL3Rlc3QuamF2YQpAQCAtMCwwICsxLDI5IEBACitjbGFzcyBNYXA8VCwgWD4geworICBUIHQ7CisgIFggeDsKKworICBUIGdldCgpeworICAgIHJldHVybiBudWxsOworICB9CisKKyAgaW50IHNpemUoKXsKKyAgICByZXR1cm4gMDsKKyAgfQorfQorCitjbGFzcyBUZXN0IHsKKworICAgIHZvaWQgZiAoTWFwIHgpeworICAgICAgU3RyaW5nIGkgPSAoU3RyaW5nKSB4LmdldCgpOworICAgIH0KKworICAgIHZvaWQgZm9vKCkgeworICAgICAgTWFwIHggPSBuZXcgTWFwKCk7CisgICAgICBNYXAgeSA9IHg7CisKKyAgICAgIHgudCA9ICIiOworICAgICAgeC54ID0gbmV3IEludGVnZXIoMyk7CisKKyAgICAgIGYoeCk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90NjkvYmVmb3JlL3Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90NjkvYmVmb3JlL3Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYWU1YTJkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q2OS9iZWZvcmUvdGVzdC5qYXZhCkBAIC0wLDAgKzEsMjkgQEAKK2NsYXNzIE1hcDxULCBYPiB7CisgIFQgdDsKKyAgWCB4OworCisgIFQgZ2V0KCl7CisgICAgcmV0dXJuIG51bGw7CisgIH0KKworICBpbnQgc2l6ZSgpeworICAgIHJldHVybiAwOworICB9Cit9CisKK2NsYXNzIFRlc3QgeworCisgICAgdm9pZCBmIChNYXAgeCl7CisgICAgICBTdHJpbmcgaSA9IChTdHJpbmcpIHguZ2V0KCk7CisgICAgfQorCisgICAgdm9pZCBmb28oKSB7CisgICAgICBNYXAgeCA9IG5ldyBNYXAoKTsKKyAgICAgIE1hcCB5ID0geDsKKworICAgICAgeC50ID0gIiI7CisgICAgICB4LnggPSBuZXcgSW50ZWdlcigzKTsKKworICAgICAgZih4KTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q3MC9hZnRlci9UZXN0LjEuaXRlbXMgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDcwL2FmdGVyL1Rlc3QuMS5pdGVtcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNzhmZjNhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q3MC9hZnRlci9UZXN0LjEuaXRlbXMKQEAgLTAsMCArMSwyIEBACitMaXN0PGphdmEubGFuZy5TdHJpbmcsamF2YS5sYW5nLlN0cmluZz5cblBzaUxvY2FsVmFyaWFibGU6eAorTGlzdDxqYXZhLmxhbmcuU3RyaW5nLGphdmEubGFuZy5TdHJpbmc+XG5uZXcKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90NzAvYWZ0ZXIvVGVzdC5pdGVtcyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90NzAvYWZ0ZXIvVGVzdC5pdGVtcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ODU2ZTlmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q3MC9hZnRlci9UZXN0Lml0ZW1zCkBAIC0wLDAgKzEsMiBAQAorTGlzdFxuUHNpTG9jYWxWYXJpYWJsZTp4CitMaXN0XG5uZXcKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90NzAvYWZ0ZXIvdGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q3MC9hZnRlci90ZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzEyZWIyMwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90NzAvYWZ0ZXIvdGVzdC5qYXZhCkBAIC0wLDAgKzEsMjEgQEAKK2NsYXNzIEV4dGVybmFseworICBzdGF0aWMgdm9pZCBmIChMaXN0IHgpeworICB9Cit9CisKK2NsYXNzIExpc3Q8VCwgRT4geworICBUIHQ7CisKKyAgdm9pZCBzZXQoVCB0LCBFIGUpeworICAgIHRoaXMudCA9IHQ7CisgIH0KK30KKworY2xhc3MgVGVzdCB7CisKKyAgICB2b2lkIGYgKCl7CisgICAgICBMaXN0IHggPSBuZXcgTGlzdCgpOworICAgICAgeC5zZXQoIiIsICIiKTsKKyAgICAgIEV4dGVybmFsLmYoeCk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90NzAvYmVmb3JlL3Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90NzAvYmVmb3JlL3Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMTJlYjIzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q3MC9iZWZvcmUvdGVzdC5qYXZhCkBAIC0wLDAgKzEsMjEgQEAKK2NsYXNzIEV4dGVybmFseworICBzdGF0aWMgdm9pZCBmIChMaXN0IHgpeworICB9Cit9CisKK2NsYXNzIExpc3Q8VCwgRT4geworICBUIHQ7CisKKyAgdm9pZCBzZXQoVCB0LCBFIGUpeworICAgIHRoaXMudCA9IHQ7CisgIH0KK30KKworY2xhc3MgVGVzdCB7CisKKyAgICB2b2lkIGYgKCl7CisgICAgICBMaXN0IHggPSBuZXcgTGlzdCgpOworICAgICAgeC5zZXQoIiIsICIiKTsKKyAgICAgIEV4dGVybmFsLmYoeCk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90NzEvYWZ0ZXIvVGVzdC4xLml0ZW1zIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q3MS9hZnRlci9UZXN0LjEuaXRlbXMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmQ4MzM2MAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90NzEvYWZ0ZXIvVGVzdC4xLml0ZW1zCkBAIC0wLDAgKzEsMiBAQAorTGlzdDxqYXZhLmxhbmcuU3RyaW5nPlxuUHNpRmllbGQ6eAorTGlzdDxqYXZhLmxhbmcuU3RyaW5nPlxubmV3CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDcxL2FmdGVyL1Rlc3QuaXRlbXMgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDcxL2FmdGVyL1Rlc3QuaXRlbXMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGM0OGRlZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90NzEvYWZ0ZXIvVGVzdC5pdGVtcwpAQCAtMCwwICsxLDIgQEAKK0xpc3RcblBzaUZpZWxkOngKK0xpc3Rcbm5ldwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q3MS9hZnRlci90ZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDcxL2FmdGVyL3Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42Nzc3ZmViCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q3MS9hZnRlci90ZXN0LmphdmEKQEAgLTAsMCArMSwyMiBAQAorY2xhc3MgTGlzdDxUPiB7CisgIFQgdDsKKworICB2b2lkIHNldChUIHQpeworICAgIHRoaXMudCA9IHQ7CisgIH0KK30KKworY2xhc3MgVGVzdCB7CisKKyAgc3RhdGljIExpc3QgeCA9IG5ldyBMaXN0KCk7CisKKyAgc3RhdGljIHZvaWQgZiAoKXsKKyAgICB4LnNldCgiIik7CisgIH0KK30KKworY2xhc3MgRXh0ZXJuYWx7CisgIHN0YXRpYyBMaXN0IGYgKCl7CisgICAgcmV0dXJuIFRlc3QueDsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q3MS9iZWZvcmUvdGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q3MS9iZWZvcmUvdGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY3NzdmZWIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDcxL2JlZm9yZS90ZXN0LmphdmEKQEAgLTAsMCArMSwyMiBAQAorY2xhc3MgTGlzdDxUPiB7CisgIFQgdDsKKworICB2b2lkIHNldChUIHQpeworICAgIHRoaXMudCA9IHQ7CisgIH0KK30KKworY2xhc3MgVGVzdCB7CisKKyAgc3RhdGljIExpc3QgeCA9IG5ldyBMaXN0KCk7CisKKyAgc3RhdGljIHZvaWQgZiAoKXsKKyAgICB4LnNldCgiIik7CisgIH0KK30KKworY2xhc3MgRXh0ZXJuYWx7CisgIHN0YXRpYyBMaXN0IGYgKCl7CisgICAgcmV0dXJuIFRlc3QueDsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q3Mi9hZnRlci9UZXN0LjEuaXRlbXMgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDcyL2FmdGVyL1Rlc3QuMS5pdGVtcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMTkxMDZhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q3Mi9hZnRlci9UZXN0LjEuaXRlbXMKQEAgLTAsMCArMSw0IEBACitMaXN0PGphdmEubGFuZy5TdHJpbmc+W11cblBzaUxvY2FsVmFyaWFibGU6eAorTGlzdDxqYXZhLmxhbmcuU3RyaW5nPltdXG5uZXcKK0xpc3Q8amF2YS5sYW5nLlN0cmluZz5cblBzaUxvY2FsVmFyaWFibGU6eQorTGlzdDxqYXZhLmxhbmcuU3RyaW5nPlxubmV3CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDcyL2FmdGVyL1Rlc3QuaXRlbXMgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDcyL2FmdGVyL1Rlc3QuaXRlbXMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGQ5OWJiYWYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDcyL2FmdGVyL1Rlc3QuaXRlbXMKQEAgLTAsMCArMSw0IEBACitMaXN0W11cblBzaUxvY2FsVmFyaWFibGU6eAorTGlzdFtdXG5uZXcKK0xpc3RcblBzaUxvY2FsVmFyaWFibGU6eQorTGlzdFxubmV3CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDcyL2FmdGVyL3Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90NzIvYWZ0ZXIvdGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU5MzE0MWYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDcyL2FmdGVyL3Rlc3QuamF2YQpAQCAtMCwwICsxLDE3IEBACitjbGFzcyBMaXN0PFQ+IHsKKyAgVCB0OworCisgIHZvaWQgc2V0KFQgdCl7CisgICAgdGhpcy50ID0gdDsKKyAgfQorfQorCitjbGFzcyBUZXN0IHsKKyAgdm9pZCBmb28gKCl7CisgICAgIExpc3QgeSA9IG5ldyBMaXN0KCk7CisKKyAgICAgeS5zZXQoIiIpOworCisgICAgIExpc3RbXSB4ID0gbmV3IExpc3RbXSB7eX07CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90NzIvYmVmb3JlL3Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90NzIvYmVmb3JlL3Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41OTMxNDFmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q3Mi9iZWZvcmUvdGVzdC5qYXZhCkBAIC0wLDAgKzEsMTcgQEAKK2NsYXNzIExpc3Q8VD4geworICBUIHQ7CisKKyAgdm9pZCBzZXQoVCB0KXsKKyAgICB0aGlzLnQgPSB0OworICB9Cit9CisKK2NsYXNzIFRlc3QgeworICB2b2lkIGZvbyAoKXsKKyAgICAgTGlzdCB5ID0gbmV3IExpc3QoKTsKKworICAgICB5LnNldCgiIik7CisKKyAgICAgTGlzdFtdIHggPSBuZXcgTGlzdFtdIHt5fTsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q3My9hZnRlci9UZXN0LjEuaXRlbXMgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDczL2FmdGVyL1Rlc3QuMS5pdGVtcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NzYwNmYxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q3My9hZnRlci9UZXN0LjEuaXRlbXMKQEAgLTAsMCArMSw0IEBACitMaXN0PGphdmEuaW8uU2VyaWFsaXphYmxlPlxuUHNpTG9jYWxWYXJpYWJsZTp4CitMaXN0PGphdmEuaW8uU2VyaWFsaXphYmxlPlxuUHNpTG9jYWxWYXJpYWJsZTp5CitMaXN0PGphdmEuaW8uU2VyaWFsaXphYmxlPlxubmV3CitMaXN0PGphdmEuaW8uU2VyaWFsaXphYmxlPlxubmV3CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDczL2FmdGVyL1Rlc3QuaXRlbXMgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDczL2FmdGVyL1Rlc3QuaXRlbXMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWQ1NTA1OAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90NzMvYWZ0ZXIvVGVzdC5pdGVtcwpAQCAtMCwwICsxLDQgQEAKK0xpc3RcblBzaUxvY2FsVmFyaWFibGU6eAorTGlzdFxuUHNpTG9jYWxWYXJpYWJsZTp5CitMaXN0XG5uZXcKK0xpc3Rcbm5ldwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q3My9hZnRlci90ZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDczL2FmdGVyL3Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iOTM1MmFiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q3My9hZnRlci90ZXN0LmphdmEKQEAgLTAsMCArMSwxNiBAQAorY2xhc3MgTGlzdDxUPiB7CisgIFQgdDsKK30KKworY2xhc3MgVGVzdCB7CisgIHZvaWQgZm9vICgpeworICAgICBMaXN0IHkgPSBuZXcgTGlzdCgpOworICAgICBMaXN0IHggPSBuZXcgTGlzdCgpOworCisgICAgIHgudCA9IHkudDsKKyAgICAgeS50ID0geC50OworCisgICAgIHgudCA9ICIiOworICAgICB5LnQgPSBuZXcgSW50ZWdlcigzKTsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q3My9iZWZvcmUvdGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q3My9iZWZvcmUvdGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI5MzUyYWIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDczL2JlZm9yZS90ZXN0LmphdmEKQEAgLTAsMCArMSwxNiBAQAorY2xhc3MgTGlzdDxUPiB7CisgIFQgdDsKK30KKworY2xhc3MgVGVzdCB7CisgIHZvaWQgZm9vICgpeworICAgICBMaXN0IHkgPSBuZXcgTGlzdCgpOworICAgICBMaXN0IHggPSBuZXcgTGlzdCgpOworCisgICAgIHgudCA9IHkudDsKKyAgICAgeS50ID0geC50OworCisgICAgIHgudCA9ICIiOworICAgICB5LnQgPSBuZXcgSW50ZWdlcigzKTsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q3NC9hZnRlci9UZXN0LjEuaXRlbXMgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDc0L2FmdGVyL1Rlc3QuMS5pdGVtcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NTg1OGU2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q3NC9hZnRlci9UZXN0LjEuaXRlbXMKQEAgLTAsMCArMSwyIEBACitMaXN0PExpc3Q8amF2YS5sYW5nLlN0cmluZz4+XG5Qc2lMb2NhbFZhcmlhYmxlOngKK0xpc3Q8TGlzdDxqYXZhLmxhbmcuU3RyaW5nPj5cbm5ldwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q3NC9hZnRlci9UZXN0Lml0ZW1zIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q3NC9hZnRlci9UZXN0Lml0ZW1zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk2MWNkNTYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDc0L2FmdGVyL1Rlc3QuaXRlbXMKQEAgLTAsMCArMSwyIEBACitMaXN0PExpc3Q+XG5Qc2lMb2NhbFZhcmlhYmxlOngKK0xpc3Q8TGlzdD5cbm5ldwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q3NC9hZnRlci90ZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDc0L2FmdGVyL3Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNjY3MmQ3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q3NC9hZnRlci90ZXN0LmphdmEKQEAgLTAsMCArMSwxNiBAQAorY2xhc3MgTGlzdDxUPiB7CisgIFQgdDsKK30KKworY2xhc3MgVGVzdCB7CisgIHZvaWQgZm9vICgpeworICAgICAvL0xpc3Q8TGlzdD4geSA9IG5ldyBMaXN0PExpc3Q+KCk7CisgICAgIExpc3Q8TGlzdD4geCA9IG5ldyBMaXN0PExpc3Q+KCk7CisKKyAgICAgLy94LnQgPSB5LnQ7CisgICAgLy8geS50ID0geC50OworCisgICAgIHgudC50ID0gIiI7CisgICAgIC8veS50LnQgPSBuZXcgSW50ZWdlcigzKTsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q3NC9iZWZvcmUvdGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q3NC9iZWZvcmUvdGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI2NjcyZDcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDc0L2JlZm9yZS90ZXN0LmphdmEKQEAgLTAsMCArMSwxNiBAQAorY2xhc3MgTGlzdDxUPiB7CisgIFQgdDsKK30KKworY2xhc3MgVGVzdCB7CisgIHZvaWQgZm9vICgpeworICAgICAvL0xpc3Q8TGlzdD4geSA9IG5ldyBMaXN0PExpc3Q+KCk7CisgICAgIExpc3Q8TGlzdD4geCA9IG5ldyBMaXN0PExpc3Q+KCk7CisKKyAgICAgLy94LnQgPSB5LnQ7CisgICAgLy8geS50ID0geC50OworCisgICAgIHgudC50ID0gIiI7CisgICAgIC8veS50LnQgPSBuZXcgSW50ZWdlcigzKTsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q3NS9hZnRlci9UZXN0LjEuaXRlbXMgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDc1L2FmdGVyL1Rlc3QuMS5pdGVtcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45YjFiYzRhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q3NS9hZnRlci9UZXN0LjEuaXRlbXMKQEAgLTAsMCArMSwzIEBACitJdGVyYXRvcjxqYXZhLmxhbmcuU3RyaW5nPlxuUHNpTG9jYWxWYXJpYWJsZTppCitPZkxpc3Q8amF2YS5sYW5nLlN0cmluZz5cblBzaUxvY2FsVmFyaWFibGU6eAorT2ZMaXN0PGphdmEubGFuZy5TdHJpbmc+XG5uZXcKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90NzUvYWZ0ZXIvVGVzdC5pdGVtcyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90NzUvYWZ0ZXIvVGVzdC5pdGVtcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNTdkZmQwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q3NS9hZnRlci9UZXN0Lml0ZW1zCkBAIC0wLDAgKzEsMyBAQAorSXRlcmF0b3JcblBzaUxvY2FsVmFyaWFibGU6aQorT2ZMaXN0XG5Qc2lMb2NhbFZhcmlhYmxlOngKK09mTGlzdFxubmV3CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDc1L2FmdGVyL3Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90NzUvYWZ0ZXIvdGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJmNmMzNWMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDc1L2FmdGVyL3Rlc3QuamF2YQpAQCAtMCwwICsxLDMxIEBACitjbGFzcyBMaXN0PEE+IHsKKyAgQSB0OworCisgIFNldDxBPiBzZXQoKXsKKyAgICByZXR1cm4gbnVsbDsKKyAgfQorfQorCitjbGFzcyBPZkxpc3Q8Qj4gZXh0ZW5kcyBMaXN0PEI+IHsKKworfQorCitjbGFzcyBJdGVyYXRvcjxDPiB7CisgIEMgZ2V0ICgpeworICAgIHJldHVybiBudWxsOworICB9Cit9CisKK2NsYXNzIFNldDxEPiB7CisgIEl0ZXJhdG9yPEQ+IGl0ZXJhdG9yKCl7CisgICAgcmV0dXJuIG51bGw7CisgIH0KK30KKworY2xhc3MgVGVzdCB7CisgIHZvaWQgZm9vICgpeworICAgIE9mTGlzdCB4ID0gbmV3IE9mTGlzdCgpOworICAgIHgudCA9ICIiOworICAgIEl0ZXJhdG9yIGkgPSB4LnNldCgpLml0ZXJhdG9yKCk7CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90NzUvYmVmb3JlL3Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90NzUvYmVmb3JlL3Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZjZjMzVjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q3NS9iZWZvcmUvdGVzdC5qYXZhCkBAIC0wLDAgKzEsMzEgQEAKK2NsYXNzIExpc3Q8QT4geworICBBIHQ7CisKKyAgU2V0PEE+IHNldCgpeworICAgIHJldHVybiBudWxsOworICB9Cit9CisKK2NsYXNzIE9mTGlzdDxCPiBleHRlbmRzIExpc3Q8Qj4geworCit9CisKK2NsYXNzIEl0ZXJhdG9yPEM+IHsKKyAgQyBnZXQgKCl7CisgICAgcmV0dXJuIG51bGw7CisgIH0KK30KKworY2xhc3MgU2V0PEQ+IHsKKyAgSXRlcmF0b3I8RD4gaXRlcmF0b3IoKXsKKyAgICByZXR1cm4gbnVsbDsKKyAgfQorfQorCitjbGFzcyBUZXN0IHsKKyAgdm9pZCBmb28gKCl7CisgICAgT2ZMaXN0IHggPSBuZXcgT2ZMaXN0KCk7CisgICAgeC50ID0gIiI7CisgICAgSXRlcmF0b3IgaSA9IHguc2V0KCkuaXRlcmF0b3IoKTsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q3Ni9hZnRlci9UZXN0LjEuaXRlbXMgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDc2L2FmdGVyL1Rlc3QuMS5pdGVtcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZGY4ZmE1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q3Ni9hZnRlci9UZXN0LjEuaXRlbXMKQEAgLTAsMCArMSw1IEBACitJdGVyYXRvcjxTZXQ8amF2YS5sYW5nLlN0cmluZz4+XG5Qc2lMb2NhbFZhcmlhYmxlOmkKK09mTGlzdDxTZXQ8amF2YS5sYW5nLlN0cmluZz4+XG5Qc2lMb2NhbFZhcmlhYmxlOngKK09mTGlzdDxTZXQ8amF2YS5sYW5nLlN0cmluZz4+XG5uZXcKK1NldDxqYXZhLmxhbmcuU3RyaW5nPlxuUHNpTG9jYWxWYXJpYWJsZTp1CitTZXQ8amF2YS5sYW5nLlN0cmluZz5cblBzaVR5cGVDYXN0RXhwcmVzc2lvbjooU2V0KSBpLmdldCgpCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDc2L2FmdGVyL1Rlc3QuaXRlbXMgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDc2L2FmdGVyL1Rlc3QuaXRlbXMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWRjNzFiNgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90NzYvYWZ0ZXIvVGVzdC5pdGVtcwpAQCAtMCwwICsxLDUgQEAKK0l0ZXJhdG9yXG5Qc2lMb2NhbFZhcmlhYmxlOmkKK09mTGlzdFxuUHNpTG9jYWxWYXJpYWJsZTp4CitPZkxpc3Rcbm5ldworU2V0XG5Qc2lMb2NhbFZhcmlhYmxlOnUKK1NldFxuUHNpVHlwZUNhc3RFeHByZXNzaW9uOihTZXQpIGkuZ2V0KCkKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90NzYvYWZ0ZXIvdGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q3Ni9hZnRlci90ZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWJiMDEzNAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90NzYvYWZ0ZXIvdGVzdC5qYXZhCkBAIC0wLDAgKzEsMzMgQEAKK2NsYXNzIExpc3Q8QT4geworICBBIHQ7CisKKyAgU2V0PEE+IHNldCgpeworICAgIHJldHVybiBudWxsOworICB9Cit9CisKK2NsYXNzIE9mTGlzdDxCPiBleHRlbmRzIExpc3Q8Qj4geworCit9CisKK2NsYXNzIEl0ZXJhdG9yPEM+IHsKKyAgQyBnZXQgKCl7CisgICAgcmV0dXJuIG51bGw7CisgIH0KK30KKworY2xhc3MgU2V0PEQ+IHsKKyAgRCBkOworICBJdGVyYXRvcjxEPiBpdGVyYXRvcigpeworICAgIHJldHVybiBudWxsOworICB9Cit9CisKK2NsYXNzIFRlc3QgeworICB2b2lkIGZvbyAoKXsKKyAgICBPZkxpc3QgeCA9IG5ldyBPZkxpc3QoKTsKKyAgICBJdGVyYXRvciBpID0geC5zZXQoKS5pdGVyYXRvcigpOworICAgIFNldCB1ID0gKFNldCkgaS5nZXQoKTsKKyAgICB1LmQgPSAiIjsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q3Ni9iZWZvcmUvdGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q3Ni9iZWZvcmUvdGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjViYjAxMzQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDc2L2JlZm9yZS90ZXN0LmphdmEKQEAgLTAsMCArMSwzMyBAQAorY2xhc3MgTGlzdDxBPiB7CisgIEEgdDsKKworICBTZXQ8QT4gc2V0KCl7CisgICAgcmV0dXJuIG51bGw7CisgIH0KK30KKworY2xhc3MgT2ZMaXN0PEI+IGV4dGVuZHMgTGlzdDxCPiB7CisKK30KKworY2xhc3MgSXRlcmF0b3I8Qz4geworICBDIGdldCAoKXsKKyAgICByZXR1cm4gbnVsbDsKKyAgfQorfQorCitjbGFzcyBTZXQ8RD4geworICBEIGQ7CisgIEl0ZXJhdG9yPEQ+IGl0ZXJhdG9yKCl7CisgICAgcmV0dXJuIG51bGw7CisgIH0KK30KKworY2xhc3MgVGVzdCB7CisgIHZvaWQgZm9vICgpeworICAgIE9mTGlzdCB4ID0gbmV3IE9mTGlzdCgpOworICAgIEl0ZXJhdG9yIGkgPSB4LnNldCgpLml0ZXJhdG9yKCk7CisgICAgU2V0IHUgPSAoU2V0KSBpLmdldCgpOworICAgIHUuZCA9ICIiOworICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDc3L2FmdGVyL1Rlc3QuMS5pdGVtcyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90NzcvYWZ0ZXIvVGVzdC4xLml0ZW1zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBkZjhmYTUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDc3L2FmdGVyL1Rlc3QuMS5pdGVtcwpAQCAtMCwwICsxLDUgQEAKK0l0ZXJhdG9yPFNldDxqYXZhLmxhbmcuU3RyaW5nPj5cblBzaUxvY2FsVmFyaWFibGU6aQorT2ZMaXN0PFNldDxqYXZhLmxhbmcuU3RyaW5nPj5cblBzaUxvY2FsVmFyaWFibGU6eAorT2ZMaXN0PFNldDxqYXZhLmxhbmcuU3RyaW5nPj5cbm5ldworU2V0PGphdmEubGFuZy5TdHJpbmc+XG5Qc2lMb2NhbFZhcmlhYmxlOnUKK1NldDxqYXZhLmxhbmcuU3RyaW5nPlxuUHNpVHlwZUNhc3RFeHByZXNzaW9uOihTZXQpIGkuZ2V0KCkKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90NzcvYWZ0ZXIvVGVzdC5pdGVtcyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90NzcvYWZ0ZXIvVGVzdC5pdGVtcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZGM3MWI2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q3Ny9hZnRlci9UZXN0Lml0ZW1zCkBAIC0wLDAgKzEsNSBAQAorSXRlcmF0b3JcblBzaUxvY2FsVmFyaWFibGU6aQorT2ZMaXN0XG5Qc2lMb2NhbFZhcmlhYmxlOngKK09mTGlzdFxubmV3CitTZXRcblBzaUxvY2FsVmFyaWFibGU6dQorU2V0XG5Qc2lUeXBlQ2FzdEV4cHJlc3Npb246KFNldCkgaS5nZXQoKQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q3Ny9hZnRlci90ZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDc3L2FmdGVyL3Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yODM0YmZhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q3Ny9hZnRlci90ZXN0LmphdmEKQEAgLTAsMCArMSwzMyBAQAorY2xhc3MgTGlzdDxBPiB7CisgIEEgdDsKKworICBTZXQ8QT4gc2V0KCl7CisgICAgcmV0dXJuIG51bGw7CisgIH0KK30KKworY2xhc3MgT2ZMaXN0PEI+IGV4dGVuZHMgTGlzdDxCPiB7CisKK30KKworY2xhc3MgSXRlcmF0b3I8Qz4geworICBDIGdldCAoKXsKKyAgICByZXR1cm4gbnVsbDsKKyAgfQorfQorCitjbGFzcyBTZXQ8RD4geworICBEIGQ7CisgIEl0ZXJhdG9yPEQ+IGl0ZXJhdG9yKCl7CisgICAgcmV0dXJuIG51bGw7CisgIH0KK30KKworY2xhc3MgVGVzdCB7CisgIHZvaWQgZm9vICgpeworICAgIE9mTGlzdCB4ID0gbmV3IE9mTGlzdCgpOworICAgIEl0ZXJhdG9yIGkgPSB4LnNldCgpLml0ZXJhdG9yKCk7CisgICAgU2V0IHUgPSAoU2V0KSBpLmdldCgpOworICAgIFN0cmluZyBzID0gKFN0cmluZykgdS5kOworICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDc3L2JlZm9yZS90ZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDc3L2JlZm9yZS90ZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjgzNGJmYQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90NzcvYmVmb3JlL3Rlc3QuamF2YQpAQCAtMCwwICsxLDMzIEBACitjbGFzcyBMaXN0PEE+IHsKKyAgQSB0OworCisgIFNldDxBPiBzZXQoKXsKKyAgICByZXR1cm4gbnVsbDsKKyAgfQorfQorCitjbGFzcyBPZkxpc3Q8Qj4gZXh0ZW5kcyBMaXN0PEI+IHsKKworfQorCitjbGFzcyBJdGVyYXRvcjxDPiB7CisgIEMgZ2V0ICgpeworICAgIHJldHVybiBudWxsOworICB9Cit9CisKK2NsYXNzIFNldDxEPiB7CisgIEQgZDsKKyAgSXRlcmF0b3I8RD4gaXRlcmF0b3IoKXsKKyAgICByZXR1cm4gbnVsbDsKKyAgfQorfQorCitjbGFzcyBUZXN0IHsKKyAgdm9pZCBmb28gKCl7CisgICAgT2ZMaXN0IHggPSBuZXcgT2ZMaXN0KCk7CisgICAgSXRlcmF0b3IgaSA9IHguc2V0KCkuaXRlcmF0b3IoKTsKKyAgICBTZXQgdSA9IChTZXQpIGkuZ2V0KCk7CisgICAgU3RyaW5nIHMgPSAoU3RyaW5nKSB1LmQ7CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90NzgvYWZ0ZXIvVGVzdC4xLml0ZW1zIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q3OC9hZnRlci9UZXN0LjEuaXRlbXMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWIxYmM0YQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90NzgvYWZ0ZXIvVGVzdC4xLml0ZW1zCkBAIC0wLDAgKzEsMyBAQAorSXRlcmF0b3I8amF2YS5sYW5nLlN0cmluZz5cblBzaUxvY2FsVmFyaWFibGU6aQorT2ZMaXN0PGphdmEubGFuZy5TdHJpbmc+XG5Qc2lMb2NhbFZhcmlhYmxlOngKK09mTGlzdDxqYXZhLmxhbmcuU3RyaW5nPlxubmV3CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDc4L2FmdGVyL1Rlc3QuaXRlbXMgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDc4L2FmdGVyL1Rlc3QuaXRlbXMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTU3ZGZkMAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90NzgvYWZ0ZXIvVGVzdC5pdGVtcwpAQCAtMCwwICsxLDMgQEAKK0l0ZXJhdG9yXG5Qc2lMb2NhbFZhcmlhYmxlOmkKK09mTGlzdFxuUHNpTG9jYWxWYXJpYWJsZTp4CitPZkxpc3Rcbm5ldwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q3OC9hZnRlci90ZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDc4L2FmdGVyL3Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MmU0OTlhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q3OC9hZnRlci90ZXN0LmphdmEKQEAgLTAsMCArMSwyNSBAQAorY2xhc3MgTGlzdDxBPiB7CisgIEEgdDsKKworICBTZXQ8QT4gc2V0OworfQorCitjbGFzcyBPZkxpc3Q8Qj4gZXh0ZW5kcyBMaXN0PEI+IHsKKworfQorCitjbGFzcyBJdGVyYXRvcjxDPiB7CisgIEMgZ2V0OworfQorCitjbGFzcyBTZXQ8RD4geworICBJdGVyYXRvcjxEPiBpdGVyYXRvcjsKK30KKworY2xhc3MgVGVzdCB7CisgIHZvaWQgZm9vICgpeworICAgIE9mTGlzdCB4ID0gbmV3IE9mTGlzdCgpOworICAgIHgudCA9ICIiOworICAgIEl0ZXJhdG9yIGkgPSB4LnNldC5pdGVyYXRvcjsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q3OC9iZWZvcmUvdGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q3OC9iZWZvcmUvdGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcyZTQ5OWEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDc4L2JlZm9yZS90ZXN0LmphdmEKQEAgLTAsMCArMSwyNSBAQAorY2xhc3MgTGlzdDxBPiB7CisgIEEgdDsKKworICBTZXQ8QT4gc2V0OworfQorCitjbGFzcyBPZkxpc3Q8Qj4gZXh0ZW5kcyBMaXN0PEI+IHsKKworfQorCitjbGFzcyBJdGVyYXRvcjxDPiB7CisgIEMgZ2V0OworfQorCitjbGFzcyBTZXQ8RD4geworICBJdGVyYXRvcjxEPiBpdGVyYXRvcjsKK30KKworY2xhc3MgVGVzdCB7CisgIHZvaWQgZm9vICgpeworICAgIE9mTGlzdCB4ID0gbmV3IE9mTGlzdCgpOworICAgIHgudCA9ICIiOworICAgIEl0ZXJhdG9yIGkgPSB4LnNldC5pdGVyYXRvcjsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q3OS9hZnRlci9UZXN0LjEuaXRlbXMgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDc5L2FmdGVyL1Rlc3QuMS5pdGVtcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45YjFiYzRhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q3OS9hZnRlci9UZXN0LjEuaXRlbXMKQEAgLTAsMCArMSwzIEBACitJdGVyYXRvcjxqYXZhLmxhbmcuU3RyaW5nPlxuUHNpTG9jYWxWYXJpYWJsZTppCitPZkxpc3Q8amF2YS5sYW5nLlN0cmluZz5cblBzaUxvY2FsVmFyaWFibGU6eAorT2ZMaXN0PGphdmEubGFuZy5TdHJpbmc+XG5uZXcKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90NzkvYWZ0ZXIvVGVzdC5pdGVtcyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90NzkvYWZ0ZXIvVGVzdC5pdGVtcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNTdkZmQwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q3OS9hZnRlci9UZXN0Lml0ZW1zCkBAIC0wLDAgKzEsMyBAQAorSXRlcmF0b3JcblBzaUxvY2FsVmFyaWFibGU6aQorT2ZMaXN0XG5Qc2lMb2NhbFZhcmlhYmxlOngKK09mTGlzdFxubmV3CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDc5L2FmdGVyL3Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90NzkvYWZ0ZXIvdGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc3NjZiYmUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDc5L2FmdGVyL3Rlc3QuamF2YQpAQCAtMCwwICsxLDIxIEBACitjbGFzcyBPZkxpc3Q8Qj4geworICBCIHQ7CisKKyAgU2V0PEI+IHNldDsKK30KKworY2xhc3MgSXRlcmF0b3I8Qz4geworICBDIGdldDsKK30KKworY2xhc3MgU2V0PEQ+IHsKKyAgSXRlcmF0b3I8RD4gaXRlcmF0b3I7Cit9CisKK2NsYXNzIFRlc3QgeworICB2b2lkIGZvbyAoKXsKKyAgICBPZkxpc3QgeCA9IG5ldyBPZkxpc3QoKTsKKyAgICB4LnQgPSAiIjsKKyAgICBJdGVyYXRvciBpID0geC5zZXQuaXRlcmF0b3I7CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90NzkvYmVmb3JlL3Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90NzkvYmVmb3JlL3Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NzY2YmJlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q3OS9iZWZvcmUvdGVzdC5qYXZhCkBAIC0wLDAgKzEsMjEgQEAKK2NsYXNzIE9mTGlzdDxCPiB7CisgIEIgdDsKKworICBTZXQ8Qj4gc2V0OworfQorCitjbGFzcyBJdGVyYXRvcjxDPiB7CisgIEMgZ2V0OworfQorCitjbGFzcyBTZXQ8RD4geworICBJdGVyYXRvcjxEPiBpdGVyYXRvcjsKK30KKworY2xhc3MgVGVzdCB7CisgIHZvaWQgZm9vICgpeworICAgIE9mTGlzdCB4ID0gbmV3IE9mTGlzdCgpOworICAgIHgudCA9ICIiOworICAgIEl0ZXJhdG9yIGkgPSB4LnNldC5pdGVyYXRvcjsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q4MC9hZnRlci9UZXN0LjEuaXRlbXMgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDgwL2FmdGVyL1Rlc3QuMS5pdGVtcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZGY4ZmE1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q4MC9hZnRlci9UZXN0LjEuaXRlbXMKQEAgLTAsMCArMSw1IEBACitJdGVyYXRvcjxTZXQ8amF2YS5sYW5nLlN0cmluZz4+XG5Qc2lMb2NhbFZhcmlhYmxlOmkKK09mTGlzdDxTZXQ8amF2YS5sYW5nLlN0cmluZz4+XG5Qc2lMb2NhbFZhcmlhYmxlOngKK09mTGlzdDxTZXQ8amF2YS5sYW5nLlN0cmluZz4+XG5uZXcKK1NldDxqYXZhLmxhbmcuU3RyaW5nPlxuUHNpTG9jYWxWYXJpYWJsZTp1CitTZXQ8amF2YS5sYW5nLlN0cmluZz5cblBzaVR5cGVDYXN0RXhwcmVzc2lvbjooU2V0KSBpLmdldCgpCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDgwL2FmdGVyL1Rlc3QuaXRlbXMgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDgwL2FmdGVyL1Rlc3QuaXRlbXMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWRjNzFiNgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90ODAvYWZ0ZXIvVGVzdC5pdGVtcwpAQCAtMCwwICsxLDUgQEAKK0l0ZXJhdG9yXG5Qc2lMb2NhbFZhcmlhYmxlOmkKK09mTGlzdFxuUHNpTG9jYWxWYXJpYWJsZTp4CitPZkxpc3Rcbm5ldworU2V0XG5Qc2lMb2NhbFZhcmlhYmxlOnUKK1NldFxuUHNpVHlwZUNhc3RFeHByZXNzaW9uOihTZXQpIGkuZ2V0KCkKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90ODAvYWZ0ZXIvdGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q4MC9hZnRlci90ZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWQ2ZGJiOQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90ODAvYWZ0ZXIvdGVzdC5qYXZhCkBAIC0wLDAgKzEsMjkgQEAKK2NsYXNzIE9mTGlzdDxCPiB7CisgIEIgdDsKKworICBTZXQ8Qj4gc2V0KCl7CisgICAgcmV0dXJuIG51bGw7CisgIH0KK30KKworY2xhc3MgSXRlcmF0b3I8Qz4geworICBDIGdldCAoKXsKKyAgICByZXR1cm4gbnVsbDsKKyAgfQorfQorCitjbGFzcyBTZXQ8RD4geworICBEIGQ7CisgIEl0ZXJhdG9yPEQ+IGl0ZXJhdG9yKCl7CisgICAgcmV0dXJuIG51bGw7CisgIH0KK30KKworY2xhc3MgVGVzdCB7CisgIHZvaWQgZm9vICgpeworICAgIE9mTGlzdCB4ID0gbmV3IE9mTGlzdCgpOworICAgIEl0ZXJhdG9yIGkgPSB4LnNldCgpLml0ZXJhdG9yKCk7CisgICAgU2V0IHUgPSAoU2V0KSBpLmdldCgpOworICAgIHUuZCA9ICIiOworICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDgwL2JlZm9yZS90ZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDgwL2JlZm9yZS90ZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWQ2ZGJiOQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90ODAvYmVmb3JlL3Rlc3QuamF2YQpAQCAtMCwwICsxLDI5IEBACitjbGFzcyBPZkxpc3Q8Qj4geworICBCIHQ7CisKKyAgU2V0PEI+IHNldCgpeworICAgIHJldHVybiBudWxsOworICB9Cit9CisKK2NsYXNzIEl0ZXJhdG9yPEM+IHsKKyAgQyBnZXQgKCl7CisgICAgcmV0dXJuIG51bGw7CisgIH0KK30KKworY2xhc3MgU2V0PEQ+IHsKKyAgRCBkOworICBJdGVyYXRvcjxEPiBpdGVyYXRvcigpeworICAgIHJldHVybiBudWxsOworICB9Cit9CisKK2NsYXNzIFRlc3QgeworICB2b2lkIGZvbyAoKXsKKyAgICBPZkxpc3QgeCA9IG5ldyBPZkxpc3QoKTsKKyAgICBJdGVyYXRvciBpID0geC5zZXQoKS5pdGVyYXRvcigpOworICAgIFNldCB1ID0gKFNldCkgaS5nZXQoKTsKKyAgICB1LmQgPSAiIjsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q4MS9hZnRlci9UZXN0LjEuaXRlbXMgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDgxL2FmdGVyL1Rlc3QuMS5pdGVtcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMzYwYzFkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q4MS9hZnRlci9UZXN0LjEuaXRlbXMKQEAgLTAsMCArMSwzIEBACitMaXN0PF8+XG5Qc2lMb2NhbFZhcmlhYmxlOngKK0xpc3Q8amF2YS5sYW5nLlN0cmluZz5bXVxuUHNpTG9jYWxWYXJpYWJsZTp5CitMaXN0PGphdmEubGFuZy5TdHJpbmc+W11cbm5ldwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q4MS9hZnRlci9UZXN0Lml0ZW1zIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q4MS9hZnRlci9UZXN0Lml0ZW1zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJjYjQyM2MKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDgxL2FmdGVyL1Rlc3QuaXRlbXMKQEAgLTAsMCArMSwzIEBACitMaXN0W11cblBzaUxvY2FsVmFyaWFibGU6eQorTGlzdFtdXG5uZXcKK0xpc3RcblBzaUxvY2FsVmFyaWFibGU6eApkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q4MS9hZnRlci90ZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDgxL2FmdGVyL3Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NmUyMDE2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q4MS9hZnRlci90ZXN0LmphdmEKQEAgLTAsMCArMSwxMyBAQAorY2xhc3MgTGlzdDxUPiB7CisgIFQgdDsKK30KKworY2xhc3MgVGVzdCB7CisgIHZvaWQgZm9vICgpeworICAgIExpc3RbXSB5ID0gbmV3IExpc3QgWzEwXTsKKyAgICBMaXN0IHggPSB5WzBdOworCisgICAgeVsxXS50ID0gIiI7CisgICAgeC50ID0gbmV3IEludGVnZXIoMik7CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90ODEvYmVmb3JlL3Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90ODEvYmVmb3JlL3Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NmUyMDE2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q4MS9iZWZvcmUvdGVzdC5qYXZhCkBAIC0wLDAgKzEsMTMgQEAKK2NsYXNzIExpc3Q8VD4geworICBUIHQ7Cit9CisKK2NsYXNzIFRlc3QgeworICB2b2lkIGZvbyAoKXsKKyAgICBMaXN0W10geSA9IG5ldyBMaXN0IFsxMF07CisgICAgTGlzdCB4ID0geVswXTsKKworICAgIHlbMV0udCA9ICIiOworICAgIHgudCA9IG5ldyBJbnRlZ2VyKDIpOworICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDgyL2FmdGVyL1Rlc3QuMS5pdGVtcyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90ODIvYWZ0ZXIvVGVzdC4xLml0ZW1zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk5ZTViOTIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDgyL2FmdGVyL1Rlc3QuMS5pdGVtcwpAQCAtMCwwICsxLDYgQEAKK0xpc3Q8amF2YS5pby5TZXJpYWxpemFibGU+W11cblBzaUxvY2FsVmFyaWFibGU6eAorTGlzdDxqYXZhLmlvLlNlcmlhbGl6YWJsZT5bXVxubmV3CitMaXN0PGphdmEuaW8uU2VyaWFsaXphYmxlPlxuUHNpTG9jYWxWYXJpYWJsZTp5CitMaXN0PGphdmEuaW8uU2VyaWFsaXphYmxlPlxuUHNpTG9jYWxWYXJpYWJsZTp6CitMaXN0PGphdmEuaW8uU2VyaWFsaXphYmxlPlxubmV3CitMaXN0PGphdmEuaW8uU2VyaWFsaXphYmxlPlxubmV3CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDgyL2FmdGVyL1Rlc3QuaXRlbXMgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDgyL2FmdGVyL1Rlc3QuaXRlbXMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDczODUzNwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90ODIvYWZ0ZXIvVGVzdC5pdGVtcwpAQCAtMCwwICsxLDYgQEAKK0xpc3RbXVxuUHNpTG9jYWxWYXJpYWJsZTp4CitMaXN0W11cbm5ldworTGlzdFxuUHNpTG9jYWxWYXJpYWJsZTp5CitMaXN0XG5Qc2lMb2NhbFZhcmlhYmxlOnoKK0xpc3Rcbm5ldworTGlzdFxubmV3CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDgyL2FmdGVyL3Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90ODIvYWZ0ZXIvdGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI4MDJhNWEzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q4Mi9hZnRlci90ZXN0LmphdmEKQEAgLTAsMCArMSwxOSBAQAorY2xhc3MgTGlzdDxUPiB7CisgIFQgdDsKKworICB2b2lkIHNldChUIHQpeworICAgIHRoaXMudCA9IHQ7CisgIH0KK30KKworY2xhc3MgVGVzdCB7CisgIHZvaWQgZm9vICgpeworICAgICBMaXN0IHkgPSBuZXcgTGlzdCgpOworICAgICBMaXN0IHogPSBuZXcgTGlzdCgpOworCisgICAgIHkuc2V0KCIiKTsKKyAgICAgei5zZXQobmV3IEludGVnZXIoMykpOworCisgICAgIExpc3RbXSB4ID0gbmV3IExpc3RbXSB7eSwgen07CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90ODIvYmVmb3JlL3Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90ODIvYmVmb3JlL3Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yODAyYTVhMwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90ODIvYmVmb3JlL3Rlc3QuamF2YQpAQCAtMCwwICsxLDE5IEBACitjbGFzcyBMaXN0PFQ+IHsKKyAgVCB0OworCisgIHZvaWQgc2V0KFQgdCl7CisgICAgdGhpcy50ID0gdDsKKyAgfQorfQorCitjbGFzcyBUZXN0IHsKKyAgdm9pZCBmb28gKCl7CisgICAgIExpc3QgeSA9IG5ldyBMaXN0KCk7CisgICAgIExpc3QgeiA9IG5ldyBMaXN0KCk7CisKKyAgICAgeS5zZXQoIiIpOworICAgICB6LnNldChuZXcgSW50ZWdlcigzKSk7CisKKyAgICAgTGlzdFtdIHggPSBuZXcgTGlzdFtdIHt5LCB6fTsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q4My9hZnRlci9UZXN0LjEuaXRlbXMgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDgzL2FmdGVyL1Rlc3QuMS5pdGVtcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYWQ1NzM2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q4My9hZnRlci9UZXN0LjEuaXRlbXMKQEAgLTAsMCArMSw2IEBACitMaXN0PGphdmEubGFuZy5TdHJpbmc+W11cblBzaUxvY2FsVmFyaWFibGU6eAorTGlzdDxqYXZhLmxhbmcuU3RyaW5nPltdXG5uZXcKK0xpc3Q8amF2YS5sYW5nLlN0cmluZz5cblBzaUxvY2FsVmFyaWFibGU6eQorTGlzdDxqYXZhLmxhbmcuU3RyaW5nPlxuUHNpTG9jYWxWYXJpYWJsZTp6CitMaXN0PGphdmEubGFuZy5TdHJpbmc+XG5uZXcKK0xpc3Q8amF2YS5sYW5nLlN0cmluZz5cbm5ldwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q4My9hZnRlci9UZXN0Lml0ZW1zIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q4My9hZnRlci9UZXN0Lml0ZW1zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ3Mzg1MzcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDgzL2FmdGVyL1Rlc3QuaXRlbXMKQEAgLTAsMCArMSw2IEBACitMaXN0W11cblBzaUxvY2FsVmFyaWFibGU6eAorTGlzdFtdXG5uZXcKK0xpc3RcblBzaUxvY2FsVmFyaWFibGU6eQorTGlzdFxuUHNpTG9jYWxWYXJpYWJsZTp6CitMaXN0XG5uZXcKK0xpc3Rcbm5ldwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q4My9hZnRlci90ZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDgzL2FmdGVyL3Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZWFlMmE1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q4My9hZnRlci90ZXN0LmphdmEKQEAgLTAsMCArMSwxOCBAQAorY2xhc3MgTGlzdDxUPiB7CisgIFQgdDsKKworICB2b2lkIHNldChUIHQpeworICAgIHRoaXMudCA9IHQ7CisgIH0KK30KKworY2xhc3MgVGVzdCB7CisgIHZvaWQgZm9vICgpeworICAgICBMaXN0IHkgPSBuZXcgTGlzdCgpOworICAgICBMaXN0IHogPSBuZXcgTGlzdCgpOworCisgICAgIHkuc2V0KCIiKTsKKworICAgICBMaXN0W10geCA9IG5ldyBMaXN0W10ge3ksIHp9OworICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDgzL2JlZm9yZS90ZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDgzL2JlZm9yZS90ZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWVhZTJhNQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90ODMvYmVmb3JlL3Rlc3QuamF2YQpAQCAtMCwwICsxLDE4IEBACitjbGFzcyBMaXN0PFQ+IHsKKyAgVCB0OworCisgIHZvaWQgc2V0KFQgdCl7CisgICAgdGhpcy50ID0gdDsKKyAgfQorfQorCitjbGFzcyBUZXN0IHsKKyAgdm9pZCBmb28gKCl7CisgICAgIExpc3QgeSA9IG5ldyBMaXN0KCk7CisgICAgIExpc3QgeiA9IG5ldyBMaXN0KCk7CisKKyAgICAgeS5zZXQoIiIpOworCisgICAgIExpc3RbXSB4ID0gbmV3IExpc3RbXSB7eSwgen07CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90ODQvYWZ0ZXIvVGVzdC4xLml0ZW1zIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q4NC9hZnRlci9UZXN0LjEuaXRlbXMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTY5YmY5OAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90ODQvYWZ0ZXIvVGVzdC4xLml0ZW1zCkBAIC0wLDAgKzEsMyBAQAorTGlzdDxqYXZhLmxhbmcuU3RyaW5nPltdXG5uZXcKK0xpc3Q8amF2YS5sYW5nLlN0cmluZz5bXVxucmV0dXJuIG9mIGZvbworTGlzdDxqYXZhLmxhbmcuU3RyaW5nPlxuUHNpTG9jYWxWYXJpYWJsZTp4CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDg0L2FmdGVyL1Rlc3QuaXRlbXMgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDg0L2FmdGVyL1Rlc3QuaXRlbXMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGE2MmU0MQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90ODQvYWZ0ZXIvVGVzdC5pdGVtcwpAQCAtMCwwICsxLDMgQEAKK0xpc3RbXVxubmV3CitMaXN0W11cbnJldHVybiBvZiBmb28KK0xpc3RcblBzaUxvY2FsVmFyaWFibGU6eApkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q4NC9hZnRlci90ZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDg0L2FmdGVyL3Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MmZkZjBlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q4NC9hZnRlci90ZXN0LmphdmEKQEAgLTAsMCArMSwxMiBAQAorY2xhc3MgTGlzdDxUPiB7CisgIFQgdDsKK30KKworY2xhc3MgVGVzdCB7CisgIExpc3RbXSBmb28gKCl7CisgICAgTGlzdCB4ID0gbnVsbDsKKyAgICB4LnQgPSAiIjsKKworICAgIHJldHVybiBuZXcgTGlzdFtde3h9OworICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDg0L2JlZm9yZS90ZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDg0L2JlZm9yZS90ZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTJmZGYwZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90ODQvYmVmb3JlL3Rlc3QuamF2YQpAQCAtMCwwICsxLDEyIEBACitjbGFzcyBMaXN0PFQ+IHsKKyAgVCB0OworfQorCitjbGFzcyBUZXN0IHsKKyAgTGlzdFtdIGZvbyAoKXsKKyAgICBMaXN0IHggPSBudWxsOworICAgIHgudCA9ICIiOworCisgICAgcmV0dXJuIG5ldyBMaXN0W117eH07CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90ODUvYWZ0ZXIvVGVzdC4xLml0ZW1zIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q4NS9hZnRlci9UZXN0LjEuaXRlbXMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTcyMGY3ZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90ODUvYWZ0ZXIvVGVzdC4xLml0ZW1zCkBAIC0wLDAgKzEgQEAKK0xpc3Q8amF2YS5sYW5nLlN0cmluZz5cblBzaUxvY2FsVmFyaWFibGU6eApkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q4NS9hZnRlci9UZXN0Lml0ZW1zIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q4NS9hZnRlci9UZXN0Lml0ZW1zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJkMjA4OGIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDg1L2FmdGVyL1Rlc3QuaXRlbXMKQEAgLTAsMCArMSBAQAorTGlzdFxuUHNpTG9jYWxWYXJpYWJsZTp4CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDg1L2FmdGVyL3Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90ODUvYWZ0ZXIvdGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk4N2M4ZmIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDg1L2FmdGVyL3Rlc3QuamF2YQpAQCAtMCwwICsxLDEyIEBACitjbGFzcyBMaXN0PFQ+IHsKKyAgPEEgZXh0ZW5kcyBMaXN0PFQ+PiB2b2lkIGYgKEEgYSl7CisgIH0KK30KKworY2xhc3MgVGVzdCB7CisgIHZvaWQgZm9vICgpeworICAgIExpc3QgeCA9IG51bGw7CisgICAgTGlzdDxTdHJpbmc+IHkgPSBudWxsOworICAgIHguZih5KTsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q4NS9iZWZvcmUvdGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q4NS9iZWZvcmUvdGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk4N2M4ZmIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDg1L2JlZm9yZS90ZXN0LmphdmEKQEAgLTAsMCArMSwxMiBAQAorY2xhc3MgTGlzdDxUPiB7CisgIDxBIGV4dGVuZHMgTGlzdDxUPj4gdm9pZCBmIChBIGEpeworICB9Cit9CisKK2NsYXNzIFRlc3QgeworICB2b2lkIGZvbyAoKXsKKyAgICBMaXN0IHggPSBudWxsOworICAgIExpc3Q8U3RyaW5nPiB5ID0gbnVsbDsKKyAgICB4LmYoeSk7CisgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90ODYvYWZ0ZXIvVGVzdC4xLml0ZW1zIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q4Ni9hZnRlci9UZXN0LjEuaXRlbXMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmQyMDg4YgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90ODYvYWZ0ZXIvVGVzdC4xLml0ZW1zCkBAIC0wLDAgKzEgQEAKK0xpc3RcblBzaUxvY2FsVmFyaWFibGU6eApkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q4Ni9hZnRlci9UZXN0Lml0ZW1zIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q4Ni9hZnRlci9UZXN0Lml0ZW1zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJkMjA4OGIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDg2L2FmdGVyL1Rlc3QuaXRlbXMKQEAgLTAsMCArMSBAQAorTGlzdFxuUHNpTG9jYWxWYXJpYWJsZTp4CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDg2L2FmdGVyL3Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90ODYvYWZ0ZXIvdGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI4YmU1YzcKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDg2L2FmdGVyL3Rlc3QuamF2YQpAQCAtMCwwICsxLDE1IEBACitjbGFzcyBMaXN0PFQ+IHsKKyAgVCB0OworfQorCitjbGFzcyBNaXN0IGV4dGVuZHMgTGlzdHsKKworfQorCitjbGFzcyBUZXN0IHsKKyAgdm9pZCBmb28gKCl7CisgICAgTGlzdCB4ID0gbmV3IE1pc3QoKTsKKworICAgIHgudCA9ICIiOworICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDg2L2JlZm9yZS90ZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDg2L2JlZm9yZS90ZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjhiZTVjNwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90ODYvYmVmb3JlL3Rlc3QuamF2YQpAQCAtMCwwICsxLDE1IEBACitjbGFzcyBMaXN0PFQ+IHsKKyAgVCB0OworfQorCitjbGFzcyBNaXN0IGV4dGVuZHMgTGlzdHsKKworfQorCitjbGFzcyBUZXN0IHsKKyAgdm9pZCBmb28gKCl7CisgICAgTGlzdCB4ID0gbmV3IE1pc3QoKTsKKworICAgIHgudCA9ICIiOworICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDg3L2FmdGVyL1Rlc3QuMS5pdGVtcyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90ODcvYWZ0ZXIvVGVzdC4xLml0ZW1zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlhMTYzMmMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDg3L2FmdGVyL1Rlc3QuMS5pdGVtcwpAQCAtMCwwICsxLDIgQEAKK0xpc3Q8aW50W10+XG5Qc2lMb2NhbFZhcmlhYmxlOngKK0xpc3Q8aW50W10+XG5uZXcKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90ODcvYWZ0ZXIvVGVzdC5pdGVtcyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90ODcvYWZ0ZXIvVGVzdC5pdGVtcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ODU2ZTlmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q4Ny9hZnRlci9UZXN0Lml0ZW1zCkBAIC0wLDAgKzEsMiBAQAorTGlzdFxuUHNpTG9jYWxWYXJpYWJsZTp4CitMaXN0XG5uZXcKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90ODcvYWZ0ZXIvdGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q4Ny9hZnRlci90ZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGE3MjA2ZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90ODcvYWZ0ZXIvdGVzdC5qYXZhCkBAIC0wLDAgKzEsMTEgQEAKK2NsYXNzIExpc3Q8VD4geworICBUIHQ7Cit9CisKK2NsYXNzIFRlc3QgeworICB2b2lkIGZvbyAoKXsKKyAgICBMaXN0IHggPSBuZXcgTGlzdCgpOworCisgICAgaW50IFtdIHkgPSAoaW50W10pIHgudDsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q4Ny9iZWZvcmUvdGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q4Ny9iZWZvcmUvdGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhhNzIwNmYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDg3L2JlZm9yZS90ZXN0LmphdmEKQEAgLTAsMCArMSwxMSBAQAorY2xhc3MgTGlzdDxUPiB7CisgIFQgdDsKK30KKworY2xhc3MgVGVzdCB7CisgIHZvaWQgZm9vICgpeworICAgIExpc3QgeCA9IG5ldyBMaXN0KCk7CisKKyAgICBpbnQgW10geSA9IChpbnRbXSkgeC50OworICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDg4L2FmdGVyL1Rlc3QuMS5pdGVtcyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90ODgvYWZ0ZXIvVGVzdC4xLml0ZW1zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlhMTYzMmMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDg4L2FmdGVyL1Rlc3QuMS5pdGVtcwpAQCAtMCwwICsxLDIgQEAKK0xpc3Q8aW50W10+XG5Qc2lMb2NhbFZhcmlhYmxlOngKK0xpc3Q8aW50W10+XG5uZXcKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90ODgvYWZ0ZXIvVGVzdC5pdGVtcyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90ODgvYWZ0ZXIvVGVzdC5pdGVtcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ODU2ZTlmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q4OC9hZnRlci9UZXN0Lml0ZW1zCkBAIC0wLDAgKzEsMiBAQAorTGlzdFxuUHNpTG9jYWxWYXJpYWJsZTp4CitMaXN0XG5uZXcKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90ODgvYWZ0ZXIvdGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q4OC9hZnRlci90ZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWJmMzliNgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90ODgvYWZ0ZXIvdGVzdC5qYXZhCkBAIC0wLDAgKzEsMTEgQEAKK2NsYXNzIExpc3Q8VD4geworICBUIHQ7Cit9CisKK2NsYXNzIFRlc3QgeworICB2b2lkIGZvbyAoKXsKKyAgICBMaXN0IHggPSBuZXcgTGlzdCgpOworCisgICAgeC50ID0gbmV3IGludFszXTsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q4OC9iZWZvcmUvdGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q4OC9iZWZvcmUvdGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjliZjM5YjYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDg4L2JlZm9yZS90ZXN0LmphdmEKQEAgLTAsMCArMSwxMSBAQAorY2xhc3MgTGlzdDxUPiB7CisgIFQgdDsKK30KKworY2xhc3MgVGVzdCB7CisgIHZvaWQgZm9vICgpeworICAgIExpc3QgeCA9IG5ldyBMaXN0KCk7CisKKyAgICB4LnQgPSBuZXcgaW50WzNdOworICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDg5L2FmdGVyL1Rlc3QuMS5pdGVtcyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90ODkvYWZ0ZXIvVGVzdC4xLml0ZW1zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQzZGUyNDIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDg5L2FmdGVyL1Rlc3QuMS5pdGVtcwpAQCAtMCwwICsxLDIgQEAKK0xpc3Q8amF2YS5sYW5nLlN0cmluZz5cblBzaUxvY2FsVmFyaWFibGU6eAorTGlzdDxqYXZhLmxhbmcuU3RyaW5nPlxucGFyYW1ldGVyIDAgb2YgVGVzdApkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q4OS9hZnRlci9UZXN0Lml0ZW1zIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q4OS9hZnRlci9UZXN0Lml0ZW1zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE5MWVkZDUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDg5L2FmdGVyL1Rlc3QuaXRlbXMKQEAgLTAsMCArMSwyIEBACitMaXN0XG5Qc2lMb2NhbFZhcmlhYmxlOngKK0xpc3RcbnBhcmFtZXRlciAwIG9mIFRlc3QKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90ODkvYWZ0ZXIvdGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q4OS9hZnRlci90ZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzg0ZjJhNQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90ODkvYWZ0ZXIvdGVzdC5qYXZhCkBAIC0wLDAgKzEsMTQgQEAKK2NsYXNzIExpc3Q8VD4geworICBUIHQ7Cit9CisKK2NsYXNzIFRlc3QgeworICBUZXN0KExpc3QgeCl7CisgIH0KKworICB2b2lkIGZvbyAoKXsKKyAgICBMaXN0IHggPSBudWxsOworICAgIHgudCA9ICIiOworICAgIFRlc3QgeSA9IG5ldyBUZXN0KHgpIHt9OworICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDg5L2JlZm9yZS90ZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDg5L2JlZm9yZS90ZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzg0ZjJhNQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90ODkvYmVmb3JlL3Rlc3QuamF2YQpAQCAtMCwwICsxLDE0IEBACitjbGFzcyBMaXN0PFQ+IHsKKyAgVCB0OworfQorCitjbGFzcyBUZXN0IHsKKyAgVGVzdChMaXN0IHgpeworICB9CisKKyAgdm9pZCBmb28gKCl7CisgICAgTGlzdCB4ID0gbnVsbDsKKyAgICB4LnQgPSAiIjsKKyAgICBUZXN0IHkgPSBuZXcgVGVzdCh4KSB7fTsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q5MC9hZnRlci9UZXN0LjEuaXRlbXMgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDkwL2FmdGVyL1Rlc3QuMS5pdGVtcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMzc1ZWY5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q5MC9hZnRlci9UZXN0LjEuaXRlbXMKQEAgLTAsMCArMSwyIEBACitMaXN0XG5wYXJhbWV0ZXIgMCBvZiBmCitMaXN0XG5wYXJhbWV0ZXIgMCBvZiBnCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDkwL2FmdGVyL1Rlc3QuaXRlbXMgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDkwL2FmdGVyL1Rlc3QuaXRlbXMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDM3NWVmOQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90OTAvYWZ0ZXIvVGVzdC5pdGVtcwpAQCAtMCwwICsxLDIgQEAKK0xpc3RcbnBhcmFtZXRlciAwIG9mIGYKK0xpc3RcbnBhcmFtZXRlciAwIG9mIGcKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90OTAvYWZ0ZXIvdGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q5MC9hZnRlci90ZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmRmZDJiMAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90OTAvYWZ0ZXIvdGVzdC5qYXZhCkBAIC0wLDAgKzEsMjMgQEAKK2NsYXNzIExpc3Q8VD4geworICBUIHQ7Cit9CisKK2NsYXNzIFN1cGVyIHsKKyAgIHZvaWQgZiAoTGlzdCB4KXsKKyAgIH0KK30KKworY2xhc3MgVGVzdCBleHRlbmRzIFN1cGVyIHsKKyAgdm9pZCBmIChMaXN0IHgpeworICAgICB4LnQgPSAiIjsKKyAgfQorCisgIHZvaWQgZyAoTGlzdCB4KXsKKyAgICAgeC50ID0gIiI7CisgIH0KK30KKworY2xhc3MgU3ViIGV4dGVuZHMgVGVzdHsKKyAgdm9pZCBnIChMaXN0IHgpeworICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDkwL2JlZm9yZS90ZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDkwL2JlZm9yZS90ZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmRmZDJiMAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90OTAvYmVmb3JlL3Rlc3QuamF2YQpAQCAtMCwwICsxLDIzIEBACitjbGFzcyBMaXN0PFQ+IHsKKyAgVCB0OworfQorCitjbGFzcyBTdXBlciB7CisgICB2b2lkIGYgKExpc3QgeCl7CisgICB9Cit9CisKK2NsYXNzIFRlc3QgZXh0ZW5kcyBTdXBlciB7CisgIHZvaWQgZiAoTGlzdCB4KXsKKyAgICAgeC50ID0gIiI7CisgIH0KKworICB2b2lkIGcgKExpc3QgeCl7CisgICAgIHgudCA9ICIiOworICB9Cit9CisKK2NsYXNzIFN1YiBleHRlbmRzIFRlc3R7CisgIHZvaWQgZyAoTGlzdCB4KXsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q5MS9hZnRlci9UZXN0LjEuaXRlbXMgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDkxL2FmdGVyL1Rlc3QuMS5pdGVtcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMTcxNjViCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q5MS9hZnRlci9UZXN0LjEuaXRlbXMKQEAgLTAsMCArMSw0IEBACitMaXN0PGphdmEubGFuZy5TdHJpbmc+XG5wYXJhbWV0ZXIgMCBvZiBmCitMaXN0PGphdmEubGFuZy5TdHJpbmc+XG5wYXJhbWV0ZXIgMCBvZiBmCitMaXN0PGphdmEubGFuZy5TdHJpbmc+XG5wYXJhbWV0ZXIgMCBvZiBnCitMaXN0PGphdmEubGFuZy5TdHJpbmc+XG5wYXJhbWV0ZXIgMCBvZiBnCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDkxL2FmdGVyL1Rlc3QuaXRlbXMgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDkxL2FmdGVyL1Rlc3QuaXRlbXMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjZmZDYyMAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90OTEvYWZ0ZXIvVGVzdC5pdGVtcwpAQCAtMCwwICsxLDQgQEAKK0xpc3RcbnBhcmFtZXRlciAwIG9mIGYKK0xpc3RcbnBhcmFtZXRlciAwIG9mIGYKK0xpc3RcbnBhcmFtZXRlciAwIG9mIGcKK0xpc3RcbnBhcmFtZXRlciAwIG9mIGcKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90OTEvYWZ0ZXIvdGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q5MS9hZnRlci90ZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmZlY2QzYgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90OTEvYWZ0ZXIvdGVzdC5qYXZhCkBAIC0wLDAgKzEsMjYgQEAKK2NsYXNzIExpc3Q8VD4geworICBUIHQ7Cit9CisKK2NsYXNzIFRlc3R7CisgIGNsYXNzIFN1cGVyIHsKKyAgICAgdm9pZCBmIChMaXN0IHgpeworICAgICB9CisgIH0KKworICBjbGFzcyBNaWRkbGUgZXh0ZW5kcyBTdXBlciB7CisgICAgdm9pZCBmIChMaXN0IHgpeworICAgICAgIGcoeCk7CisgICAgICAgeC50ID0gIiI7CisgICAgfQorCisgICAgdm9pZCBnIChMaXN0IHgpeworICAgICB4LnQgPSAiIjsKKyAgIH0KKyAgfQorCisgIGNsYXNzIFN1YiBleHRlbmRzIE1pZGRsZXsKKyAgICAgdm9pZCBnIChMaXN0IHgpeworICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90OTEvYmVmb3JlL3Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90OTEvYmVmb3JlL3Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZmVjZDNiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q5MS9iZWZvcmUvdGVzdC5qYXZhCkBAIC0wLDAgKzEsMjYgQEAKK2NsYXNzIExpc3Q8VD4geworICBUIHQ7Cit9CisKK2NsYXNzIFRlc3R7CisgIGNsYXNzIFN1cGVyIHsKKyAgICAgdm9pZCBmIChMaXN0IHgpeworICAgICB9CisgIH0KKworICBjbGFzcyBNaWRkbGUgZXh0ZW5kcyBTdXBlciB7CisgICAgdm9pZCBmIChMaXN0IHgpeworICAgICAgIGcoeCk7CisgICAgICAgeC50ID0gIiI7CisgICAgfQorCisgICAgdm9pZCBnIChMaXN0IHgpeworICAgICB4LnQgPSAiIjsKKyAgIH0KKyAgfQorCisgIGNsYXNzIFN1YiBleHRlbmRzIE1pZGRsZXsKKyAgICAgdm9pZCBnIChMaXN0IHgpeworICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90OTIvYWZ0ZXIvVGVzdC4xLml0ZW1zIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q5Mi9hZnRlci9UZXN0LjEuaXRlbXMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGI2ZTcyZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90OTIvYWZ0ZXIvVGVzdC4xLml0ZW1zCkBAIC0wLDAgKzEsMiBAQAorTGlzdDxqYXZhLmxhbmcuSW50ZWdlcj5cbnJldHVybiBvZiBnCitMaXN0PGphdmEubGFuZy5JbnRlZ2VyPlxucmV0dXJuIG9mIGcKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90OTIvYWZ0ZXIvVGVzdC5pdGVtcyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90OTIvYWZ0ZXIvVGVzdC5pdGVtcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNzhhZTczCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q5Mi9hZnRlci9UZXN0Lml0ZW1zCkBAIC0wLDAgKzEsMiBAQAorTGlzdFxucmV0dXJuIG9mIGcKK0xpc3RcbnJldHVybiBvZiBnCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDkyL2FmdGVyL3Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90OTIvYWZ0ZXIvdGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEyMDRiMjQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDkyL2FmdGVyL3Rlc3QuamF2YQpAQCAtMCwwICsxLDE2IEBACitjbGFzcyBMaXN0PFQ+IHsKKyAgVCB0OworfQorCitjbGFzcyBUZXN0eworICBjbGFzcyBNaWRkbGUgZXh0ZW5kcyBTdXBlciB7CisgICAgTGlzdCBnICgpeworICAgICByZXR1cm4gbmV3IExpc3Q8SW50ZWdlcj4oKTsKKyAgIH0KKyAgfQorCisgIGNsYXNzIFN1YiBleHRlbmRzIE1pZGRsZXsKKyAgICAgTGlzdCBnICgpeworICAgIH0KKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90OTIvYmVmb3JlL3Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90OTIvYmVmb3JlL3Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMjA0YjI0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q5Mi9iZWZvcmUvdGVzdC5qYXZhCkBAIC0wLDAgKzEsMTYgQEAKK2NsYXNzIExpc3Q8VD4geworICBUIHQ7Cit9CisKK2NsYXNzIFRlc3R7CisgIGNsYXNzIE1pZGRsZSBleHRlbmRzIFN1cGVyIHsKKyAgICBMaXN0IGcgKCl7CisgICAgIHJldHVybiBuZXcgTGlzdDxJbnRlZ2VyPigpOworICAgfQorICB9CisKKyAgY2xhc3MgU3ViIGV4dGVuZHMgTWlkZGxleworICAgICBMaXN0IGcgKCl7CisgICAgfQorICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q5My9hZnRlci9UZXN0LjEuaXRlbXMgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDkzL2FmdGVyL1Rlc3QuMS5pdGVtcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNGEyNzQ5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q5My9hZnRlci9UZXN0LjEuaXRlbXMKQEAgLTAsMCArMSBAQAorTGlzdDxqYXZhLmxhbmcuSW50ZWdlcj5cbnJldHVybiBvZiBnCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDkzL2FmdGVyL1Rlc3QuaXRlbXMgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDkzL2FmdGVyL1Rlc3QuaXRlbXMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmM3MzM4MwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90OTMvYWZ0ZXIvVGVzdC5pdGVtcwpAQCAtMCwwICsxIEBACitMaXN0XG5yZXR1cm4gb2YgZwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q5My9hZnRlci90ZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDkzL2FmdGVyL3Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YzJhMWJhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q5My9hZnRlci90ZXN0LmphdmEKQEAgLTAsMCArMSw5IEBACitjbGFzcyBMaXN0PFQ+IHsKKyAgVCB0OworfQorCitjbGFzcyBUZXN0eworICBMaXN0IGcgKCl7CisgICAgcmV0dXJuIG5ldyBMaXN0PEludGVnZXI+KCk7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDkzL2JlZm9yZS90ZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDkzL2JlZm9yZS90ZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmMyYTFiYQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90OTMvYmVmb3JlL3Rlc3QuamF2YQpAQCAtMCwwICsxLDkgQEAKK2NsYXNzIExpc3Q8VD4geworICBUIHQ7Cit9CisKK2NsYXNzIFRlc3R7CisgIExpc3QgZyAoKXsKKyAgICByZXR1cm4gbmV3IExpc3Q8SW50ZWdlcj4oKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90OTQvYWZ0ZXIvVGVzdC4xLml0ZW1zIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q5NC9hZnRlci9UZXN0LjEuaXRlbXMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmFiODBiNgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90OTQvYWZ0ZXIvVGVzdC4xLml0ZW1zCkBAIC0wLDAgKzEsNCBAQAorTGlzdDxqYXZhLmxhbmcuU3RyaW5nPlxuUHNpTG9jYWxWYXJpYWJsZTp4CitMaXN0PGphdmEubGFuZy5TdHJpbmc+XG5Qc2lMb2NhbFZhcmlhYmxlOnkKK0xpc3Q8amF2YS5sYW5nLlN0cmluZz5cbm5ldworTGlzdDxqYXZhLmxhbmcuU3RyaW5nPlxubmV3CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDk0L2FmdGVyL1Rlc3QuaXRlbXMgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDk0L2FmdGVyL1Rlc3QuaXRlbXMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWQ1NTA1OAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90OTQvYWZ0ZXIvVGVzdC5pdGVtcwpAQCAtMCwwICsxLDQgQEAKK0xpc3RcblBzaUxvY2FsVmFyaWFibGU6eAorTGlzdFxuUHNpTG9jYWxWYXJpYWJsZTp5CitMaXN0XG5uZXcKK0xpc3Rcbm5ldwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q5NC9hZnRlci90ZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDk0L2FmdGVyL3Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNjc1MjA1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q5NC9hZnRlci90ZXN0LmphdmEKQEAgLTAsMCArMSwxMiBAQAorY2xhc3MgTGlzdDxUPiB7CisgIFQgdDsKK30KKworY2xhc3MgVGVzdHsKKyAgdm9pZCBmb28oKXsKKyAgICAgTGlzdCB4ID0gbmV3IExpc3QoKTsKKyAgICAgTGlzdCB5ID0gbmV3IExpc3QoKTsKKworICAgICAodHJ1ZSA/IHggOiB5KS50ID0gIiI7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDk0L2JlZm9yZS90ZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDk0L2JlZm9yZS90ZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDY3NTIwNQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90OTQvYmVmb3JlL3Rlc3QuamF2YQpAQCAtMCwwICsxLDEyIEBACitjbGFzcyBMaXN0PFQ+IHsKKyAgVCB0OworfQorCitjbGFzcyBUZXN0eworICB2b2lkIGZvbygpeworICAgICBMaXN0IHggPSBuZXcgTGlzdCgpOworICAgICBMaXN0IHkgPSBuZXcgTGlzdCgpOworCisgICAgICh0cnVlID8geCA6IHkpLnQgPSAiIjsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90OTUvYWZ0ZXIvVGVzdC4xLml0ZW1zIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q5NS9hZnRlci9UZXN0LjEuaXRlbXMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDc4ZDU2NgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90OTUvYWZ0ZXIvVGVzdC4xLml0ZW1zCkBAIC0wLDAgKzEsMiBAQAorTGlzdDxCPlxuUHNpTG9jYWxWYXJpYWJsZTp5CitMaXN0XG5Qc2lMb2NhbFZhcmlhYmxlOngKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90OTUvYWZ0ZXIvVGVzdC5pdGVtcyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90OTUvYWZ0ZXIvVGVzdC5pdGVtcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YjcwMGM0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q5NS9hZnRlci9UZXN0Lml0ZW1zCkBAIC0wLDAgKzEsMiBAQAorTGlzdFxuUHNpTG9jYWxWYXJpYWJsZTp4CitMaXN0XG5Qc2lMb2NhbFZhcmlhYmxlOnkKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90OTUvYWZ0ZXIvdGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q5NS9hZnRlci90ZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDFmYmQ0YQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90OTUvYWZ0ZXIvdGVzdC5qYXZhCkBAIC0wLDAgKzEsMTUgQEAKK2NsYXNzIExpc3Q8VD4geworICBUIHQ7Cit9CisKK2NsYXNzIEEge30KK2NsYXNzIEIgZXh0ZW5kcyBBIHt9CisKK2NsYXNzIFRlc3R7CisgIHZvaWQgZm9vKCl7CisgICAgIExpc3QgeCA9IG5ldyBMaXN0PEE+KCk7CisgICAgIExpc3QgeSA9IG5ldyBMaXN0PEI+KCk7CisKKyAgICAgeCA9IHk7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDk1L2JlZm9yZS90ZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDk1L2JlZm9yZS90ZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDFmYmQ0YQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90OTUvYmVmb3JlL3Rlc3QuamF2YQpAQCAtMCwwICsxLDE1IEBACitjbGFzcyBMaXN0PFQ+IHsKKyAgVCB0OworfQorCitjbGFzcyBBIHt9CitjbGFzcyBCIGV4dGVuZHMgQSB7fQorCitjbGFzcyBUZXN0eworICB2b2lkIGZvbygpeworICAgICBMaXN0IHggPSBuZXcgTGlzdDxBPigpOworICAgICBMaXN0IHkgPSBuZXcgTGlzdDxCPigpOworCisgICAgIHggPSB5OworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q5Ni9hZnRlci9UZXN0LjEuaXRlbXMgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDk2L2FmdGVyL1Rlc3QuMS5pdGVtcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NTQzMTFjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q5Ni9hZnRlci9UZXN0LjEuaXRlbXMKQEAgLTAsMCArMSw0IEBACitMaXN0PExpc3Q8amF2YS5pby5TZXJpYWxpemFibGU+PlxuUHNpTG9jYWxWYXJpYWJsZTp4CitMaXN0PExpc3Q8amF2YS5pby5TZXJpYWxpemFibGU+PlxuUHNpTG9jYWxWYXJpYWJsZTp5CitMaXN0PExpc3Q8amF2YS5pby5TZXJpYWxpemFibGU+PlxubmV3CitMaXN0PExpc3Q8amF2YS5pby5TZXJpYWxpemFibGU+PlxubmV3CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDk2L2FmdGVyL1Rlc3QuaXRlbXMgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDk2L2FmdGVyL1Rlc3QuaXRlbXMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmM3NmRhZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90OTYvYWZ0ZXIvVGVzdC5pdGVtcwpAQCAtMCwwICsxLDQgQEAKK0xpc3Q8TGlzdD5cblBzaUxvY2FsVmFyaWFibGU6eAorTGlzdDxMaXN0PlxuUHNpTG9jYWxWYXJpYWJsZTp5CitMaXN0PExpc3Q+XG5uZXcKK0xpc3Q8TGlzdD5cbm5ldwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q5Ni9hZnRlci90ZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDk2L2FmdGVyL3Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MTVkNTM4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q5Ni9hZnRlci90ZXN0LmphdmEKQEAgLTAsMCArMSwxNyBAQAorY2xhc3MgTGlzdDxUPiB7CisgIFQgdDsKK30KKworY2xhc3MgQSB7fQorY2xhc3MgQiBleHRlbmRzIEEge30KKworY2xhc3MgVGVzdHsKKyAgdm9pZCBmb28oKXsKKyAgICAgTGlzdDxMaXN0PiB4ID0gbmV3IExpc3Q8TGlzdD4oKTsKKyAgICAgTGlzdDxMaXN0PiB5ID0gbmV3IExpc3Q8TGlzdD4oKTsKKworICAgICB4LnQudCA9ICIiOworICAgICB5LnQgPSB4LnQ7CisgICAgIHkudC50ID0gbmV3IEludGVnZXIoMyk7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDk2L2JlZm9yZS90ZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDk2L2JlZm9yZS90ZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjE1ZDUzOAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90OTYvYmVmb3JlL3Rlc3QuamF2YQpAQCAtMCwwICsxLDE3IEBACitjbGFzcyBMaXN0PFQ+IHsKKyAgVCB0OworfQorCitjbGFzcyBBIHt9CitjbGFzcyBCIGV4dGVuZHMgQSB7fQorCitjbGFzcyBUZXN0eworICB2b2lkIGZvbygpeworICAgICBMaXN0PExpc3Q+IHggPSBuZXcgTGlzdDxMaXN0PigpOworICAgICBMaXN0PExpc3Q+IHkgPSBuZXcgTGlzdDxMaXN0PigpOworCisgICAgIHgudC50ID0gIiI7CisgICAgIHkudCA9IHgudDsKKyAgICAgeS50LnQgPSBuZXcgSW50ZWdlcigzKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90OTcvYWZ0ZXIvVGVzdC4xLml0ZW1zIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q5Ny9hZnRlci9UZXN0LjEuaXRlbXMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTcyMGY3ZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90OTcvYWZ0ZXIvVGVzdC4xLml0ZW1zCkBAIC0wLDAgKzEgQEAKK0xpc3Q8amF2YS5sYW5nLlN0cmluZz5cblBzaUxvY2FsVmFyaWFibGU6eApkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q5Ny9hZnRlci9UZXN0Lml0ZW1zIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q5Ny9hZnRlci9UZXN0Lml0ZW1zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJkMjA4OGIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDk3L2FmdGVyL1Rlc3QuaXRlbXMKQEAgLTAsMCArMSBAQAorTGlzdFxuUHNpTG9jYWxWYXJpYWJsZTp4CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDk3L2FmdGVyL3Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90OTcvYWZ0ZXIvdGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE1MjRhMjYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDk3L2FmdGVyL3Rlc3QuamF2YQpAQCAtMCwwICsxLDE0IEBACitjbGFzcyBMaXN0PFQ+IHsKKyAgVCB0OworfQorCitpbnRlcmZhY2UgQSB7fQorCitjbGFzcyBUZXN0eworICBBIGZvbygpeworICAgIExpc3QgeCA9IG51bGw7CisgICAgeC50ID0gIiI7CisKKyAgICByZXR1cm4gKEEpIHg7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDk3L2JlZm9yZS90ZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDk3L2JlZm9yZS90ZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTUyNGEyNgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90OTcvYmVmb3JlL3Rlc3QuamF2YQpAQCAtMCwwICsxLDE0IEBACitjbGFzcyBMaXN0PFQ+IHsKKyAgVCB0OworfQorCitpbnRlcmZhY2UgQSB7fQorCitjbGFzcyBUZXN0eworICBBIGZvbygpeworICAgIExpc3QgeCA9IG51bGw7CisgICAgeC50ID0gIiI7CisKKyAgICByZXR1cm4gKEEpIHg7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDk4L2FmdGVyL1Rlc3QuMS5pdGVtcyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90OTgvYWZ0ZXIvVGVzdC4xLml0ZW1zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJkMjA4OGIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDk4L2FmdGVyL1Rlc3QuMS5pdGVtcwpAQCAtMCwwICsxIEBACitMaXN0XG5Qc2lMb2NhbFZhcmlhYmxlOngKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90OTgvYWZ0ZXIvVGVzdC5pdGVtcyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90OTgvYWZ0ZXIvVGVzdC5pdGVtcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZDIwODhiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q5OC9hZnRlci9UZXN0Lml0ZW1zCkBAIC0wLDAgKzEgQEAKK0xpc3RcblBzaUxvY2FsVmFyaWFibGU6eApkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q5OC9hZnRlci90ZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDk4L2FmdGVyL3Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kOTExNzA1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q5OC9hZnRlci90ZXN0LmphdmEKQEAgLTAsMCArMSwxNSBAQAorY2xhc3MgTGlzdDxUPiB7CisgIGNsYXNzIE1pc3Q8QSBleHRlbmRzIFQ+eworICAgIEEgYTsKKyAgfQorCisgIFQgdDsKKyAgTWlzdCBtOworfQorCitjbGFzcyBUZXN0eworICB2b2lkIGZvbygpeworICAgIExpc3QgeCA9IG51bGw7CisgICAgeC5tLmEgPSAiIjsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90OTgvYmVmb3JlL3Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90OTgvYmVmb3JlL3Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kOTExNzA1Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q5OC9iZWZvcmUvdGVzdC5qYXZhCkBAIC0wLDAgKzEsMTUgQEAKK2NsYXNzIExpc3Q8VD4geworICBjbGFzcyBNaXN0PEEgZXh0ZW5kcyBUPnsKKyAgICBBIGE7CisgIH0KKworICBUIHQ7CisgIE1pc3QgbTsKK30KKworY2xhc3MgVGVzdHsKKyAgdm9pZCBmb28oKXsKKyAgICBMaXN0IHggPSBudWxsOworICAgIHgubS5hID0gIiI7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDk5L2FmdGVyL1Rlc3QuMS5pdGVtcyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90OTkvYWZ0ZXIvVGVzdC4xLml0ZW1zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA5NzA0OGUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDk5L2FmdGVyL1Rlc3QuMS5pdGVtcwpAQCAtMCwwICsxIEBACitMaXN0PGphdmEubGFuZy5PYmplY3Q+XG5Qc2lMb2NhbFZhcmlhYmxlOngKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90OTkvYWZ0ZXIvVGVzdC5pdGVtcyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy90eXBlQ29vay90OTkvYWZ0ZXIvVGVzdC5pdGVtcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZDIwODhiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q5OS9hZnRlci9UZXN0Lml0ZW1zCkBAIC0wLDAgKzEgQEAKK0xpc3RcblBzaUxvY2FsVmFyaWFibGU6eApkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q5OS9hZnRlci90ZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDk5L2FmdGVyL3Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZjM0MTUxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q5OS9hZnRlci90ZXN0LmphdmEKQEAgLTAsMCArMSwxOCBAQAorY2xhc3MgTGlzdDxUPiB7CisgIFQgdDsKK30KKworaW50ZXJmYWNlIEEgeworICAgICBMaXN0IGdldCgpOworfQorCitjbGFzcyBUZXN0eworCisgIHZvaWQgZm9vKCl7CisgICAgTGlzdCB4ID0gbmV3IEEoKSB7CisgICAgICBwdWJsaWMgTGlzdCBnZXQoKXsKKyAgICAgICAgcmV0dXJuIG5ldyBMaXN0PFN0cmluZz4oKTsKKyAgICAgIH0KKyAgICB9LmdldCgpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q5OS9iZWZvcmUvdGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3R5cGVDb29rL3Q5OS9iZWZvcmUvdGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFmMzQxNTEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3JpbmcvdHlwZUNvb2svdDk5L2JlZm9yZS90ZXN0LmphdmEKQEAgLTAsMCArMSwxOCBAQAorY2xhc3MgTGlzdDxUPiB7CisgIFQgdDsKK30KKworaW50ZXJmYWNlIEEgeworICAgICBMaXN0IGdldCgpOworfQorCitjbGFzcyBUZXN0eworCisgIHZvaWQgZm9vKCl7CisgICAgTGlzdCB4ID0gbmV3IEEoKSB7CisgICAgICBwdWJsaWMgTGlzdCBnZXQoKXsKKyAgICAgICAgcmV0dXJuIG5ldyBMaXN0PFN0cmluZz4oKTsKKyAgICAgIH0KKyAgICB9LmdldCgpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3dyYXBSZXR1cm5WYWx1ZS9hbm9ueW1vdXMvYWZ0ZXIvVGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3dyYXBSZXR1cm5WYWx1ZS9hbm9ueW1vdXMvYWZ0ZXIvVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBlOWQ5N2YKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3Jpbmcvd3JhcFJldHVyblZhbHVlL2Fub255bW91cy9hZnRlci9UZXN0LmphdmEKQEAgLTAsMCArMSwxOCBAQAorY2xhc3MgVGVzdCB7CisgICBwdWJsaWMgV3JhcHBlciBmb28oaW50IHApIHsKKyAgIAkJT2JqZWN0IG8gPSBuZXcgT2JqZWN0KCkgeworICAgCQkJcHJpdmF0ZSBTdHJpbmcgbXlJbnRGdWxsID0gIiI7CisgICAJCQlwdWJsaWMgU3RyaW5nIGdldEludEZ1bGwoKSB7CisgICAJCQkJcmV0dXJuIG15SW50RnVsbDsKKyAgIAkJCX0KKyAgIAkJfTsKKworICAgCQlpZiAocCA+IDApIHsKKyAgIAkJCXJldHVybiBuZXcgV3JhcHBlcigiIik7CisgICAJCX0gZWxzZSB7CisgICAJCQlyZXR1cm4gbmV3IFdyYXBwZXIoIiIpOworICAgCQl9CisgICAJfQorCisKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3Jpbmcvd3JhcFJldHVyblZhbHVlL2Fub255bW91cy9hZnRlci9XcmFwcGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3Jpbmcvd3JhcFJldHVyblZhbHVlL2Fub255bW91cy9hZnRlci9XcmFwcGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGVjYTcyMwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy93cmFwUmV0dXJuVmFsdWUvYW5vbnltb3VzL2FmdGVyL1dyYXBwZXIuamF2YQpAQCAtMCwwICsxLDEwIEBACitjbGFzcyBXcmFwcGVyIHsKKyAgU3RyaW5nIG15RmllbGQ7CisgIFdyYXBwZXIoU3RyaW5nIHMpIHsKKyAgICBteUZpZWxkID0gczsKKyAgfQorCisgIFN0cmluZyBnZXRNeUZpZWxkKCkgeworICAgIHJldHVybiBteUZpZWxkOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3dyYXBSZXR1cm5WYWx1ZS9hbm9ueW1vdXMvYmVmb3JlL1Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy93cmFwUmV0dXJuVmFsdWUvYW5vbnltb3VzL2JlZm9yZS9UZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWU0OGVlYgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy93cmFwUmV0dXJuVmFsdWUvYW5vbnltb3VzL2JlZm9yZS9UZXN0LmphdmEKQEAgLTAsMCArMSwxOCBAQAorY2xhc3MgVGVzdCB7CisgICBwdWJsaWMgU3RyaW5nIGZvbyhpbnQgcCkgeworICAgCQlPYmplY3QgbyA9IG5ldyBPYmplY3QoKSB7CisgICAJCQlwcml2YXRlIFN0cmluZyBteUludEZ1bGwgPSAiIjsKKyAgIAkJCXB1YmxpYyBTdHJpbmcgZ2V0SW50RnVsbCgpIHsKKyAgIAkJCQlyZXR1cm4gbXlJbnRGdWxsOworICAgCQkJfQorICAgCQl9OworCisgICAJCWlmIChwID4gMCkgeworICAgCQkJcmV0dXJuICIiOworICAgCQl9IGVsc2UgeworICAgCQkJcmV0dXJuICIiOworICAgCQl9CisgICAJfQorCisKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3Jpbmcvd3JhcFJldHVyblZhbHVlL2Fub255bW91cy9iZWZvcmUvV3JhcHBlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3dyYXBSZXR1cm5WYWx1ZS9hbm9ueW1vdXMvYmVmb3JlL1dyYXBwZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZWNhNzIzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3dyYXBSZXR1cm5WYWx1ZS9hbm9ueW1vdXMvYmVmb3JlL1dyYXBwZXIuamF2YQpAQCAtMCwwICsxLDEwIEBACitjbGFzcyBXcmFwcGVyIHsKKyAgU3RyaW5nIG15RmllbGQ7CisgIFdyYXBwZXIoU3RyaW5nIHMpIHsKKyAgICBteUZpZWxkID0gczsKKyAgfQorCisgIFN0cmluZyBnZXRNeUZpZWxkKCkgeworICAgIHJldHVybiBteUZpZWxkOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3dyYXBSZXR1cm5WYWx1ZS9nZW5lcmljcy9hZnRlci9UZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3Jpbmcvd3JhcFJldHVyblZhbHVlL2dlbmVyaWNzL2FmdGVyL1Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMmYzNjVlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3dyYXBSZXR1cm5WYWx1ZS9nZW5lcmljcy9hZnRlci9UZXN0LmphdmEKQEAgLTAsMCArMSw3IEBACitjbGFzcyBUZXN0PFQ+IHsKKyAgVCBteVQ7CisKKyAgICBXcmFwcGVyPFQ+IGZvbygpIHsKKyAgICByZXR1cm4gbmV3IFdyYXBwZXI8VD4obXlUKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy93cmFwUmV0dXJuVmFsdWUvZ2VuZXJpY3MvYWZ0ZXIvV3JhcHBlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3dyYXBSZXR1cm5WYWx1ZS9nZW5lcmljcy9hZnRlci9XcmFwcGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGIzNTFlZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy93cmFwUmV0dXJuVmFsdWUvZ2VuZXJpY3MvYWZ0ZXIvV3JhcHBlci5qYXZhCkBAIC0wLDAgKzEsMTMgQEAKK3B1YmxpYyBjbGFzcyBXcmFwcGVyPFQ+IHsKKyAgICBwcml2YXRlIGZpbmFsIFQgdmFsdWU7CisKKyAgICBwdWJsaWMgV3JhcHBlcihUIHZhbHVlKSB7CisgICAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZTsKKyAgICB9CisKKworICAgIHB1YmxpYyBUIGdldFZhbHVlKCkgeworICAgICAgICByZXR1cm4gdmFsdWU7CisgICAgfQorCit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3Jpbmcvd3JhcFJldHVyblZhbHVlL2dlbmVyaWNzL2JlZm9yZS9UZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3Jpbmcvd3JhcFJldHVyblZhbHVlL2dlbmVyaWNzL2JlZm9yZS9UZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTY4ZGZmNgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy93cmFwUmV0dXJuVmFsdWUvZ2VuZXJpY3MvYmVmb3JlL1Rlc3QuamF2YQpAQCAtMCwwICsxLDYgQEAKK2NsYXNzIFRlc3Q8VD4geworICBUIG15VDsKKyAgVCBmb28oKSB7CisgICAgcmV0dXJuIG15VDsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy93cmFwUmV0dXJuVmFsdWUvaGllcmFyY2h5L2FmdGVyL0luaGVyaXRvci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3dyYXBSZXR1cm5WYWx1ZS9oaWVyYXJjaHkvYWZ0ZXIvSW5oZXJpdG9yLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTA2ZTVkOAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy93cmFwUmV0dXJuVmFsdWUvaGllcmFyY2h5L2FmdGVyL0luaGVyaXRvci5qYXZhCkBAIC0wLDAgKzEsOSBAQAorY2xhc3MgSW5oZXJpdG9yIGV4dGVuZHMgVGVzdCB7CisgICAgV3JhcHBlciBmb28oKSB7CisgICAgcmV0dXJuIG5ldyBXcmFwcGVyKCIiKTsKKyAgfQorCisgIHZvaWQgYmFyKFRlc3QgdCkgeworICAgIFN0cmluZyBzID0gdC5mb28oKS5nZXRWYWx1ZSgpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3dyYXBSZXR1cm5WYWx1ZS9oaWVyYXJjaHkvYWZ0ZXIvVGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3dyYXBSZXR1cm5WYWx1ZS9oaWVyYXJjaHkvYWZ0ZXIvVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE3YzJhMmQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3Jpbmcvd3JhcFJldHVyblZhbHVlL2hpZXJhcmNoeS9hZnRlci9UZXN0LmphdmEKQEAgLTAsMCArMSwxNyBAQAorYWJzdHJhY3QgY2xhc3MgVGVzdCB7CisgIGFic3RyYWN0IFdyYXBwZXIgZm9vKCk7CisKKyAgICBwdWJsaWMgY2xhc3MgV3JhcHBlciB7CisgICAgICAgIHByaXZhdGUgZmluYWwgU3RyaW5nIHZhbHVlOworCisgICAgICAgIHB1YmxpYyBXcmFwcGVyKFN0cmluZyB2YWx1ZSkgeworICAgICAgICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlOworICAgICAgICB9CisKKworICAgICAgICBwdWJsaWMgU3RyaW5nIGdldFZhbHVlKCkgeworICAgICAgICAgICAgcmV0dXJuIHZhbHVlOworICAgICAgICB9CisKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3dyYXBSZXR1cm5WYWx1ZS9oaWVyYXJjaHkvYmVmb3JlL0luaGVyaXRvci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3dyYXBSZXR1cm5WYWx1ZS9oaWVyYXJjaHkvYmVmb3JlL0luaGVyaXRvci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJhODM5NGIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3Jpbmcvd3JhcFJldHVyblZhbHVlL2hpZXJhcmNoeS9iZWZvcmUvSW5oZXJpdG9yLmphdmEKQEAgLTAsMCArMSw5IEBACitjbGFzcyBJbmhlcml0b3IgZXh0ZW5kcyBUZXN0IHsKKyAgU3RyaW5nIGZvbygpIHsKKyAgICByZXR1cm4gIiI7CisgIH0KKworICB2b2lkIGJhcihUZXN0IHQpIHsKKyAgICBTdHJpbmcgcyA9IHQuZm9vKCk7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3Jpbmcvd3JhcFJldHVyblZhbHVlL2hpZXJhcmNoeS9iZWZvcmUvVGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3dyYXBSZXR1cm5WYWx1ZS9oaWVyYXJjaHkvYmVmb3JlL1Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YjExNzM2YgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy93cmFwUmV0dXJuVmFsdWUvaGllcmFyY2h5L2JlZm9yZS9UZXN0LmphdmEKQEAgLTAsMCArMSwzIEBACithYnN0cmFjdCBjbGFzcyBUZXN0IHsKKyAgYWJzdHJhY3QgU3RyaW5nIGZvbygpOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy93cmFwUmV0dXJuVmFsdWUvaW5jb25zaXN0ZW50V3JhcHBlci9hZnRlci9UZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3Jpbmcvd3JhcFJldHVyblZhbHVlL2luY29uc2lzdGVudFdyYXBwZXIvYWZ0ZXIvVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ5ZTM0ODMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3Jpbmcvd3JhcFJldHVyblZhbHVlL2luY29uc2lzdGVudFdyYXBwZXIvYWZ0ZXIvVGVzdC5qYXZhCkBAIC0wLDAgKzEsNSBAQAorY2xhc3MgVGVzdCB7CisgICAgV3JhcHBlciBmb28oKSB7CisgICAgcmV0dXJuIG5ldyBXcmFwcGVyKCIiKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy93cmFwUmV0dXJuVmFsdWUvaW5jb25zaXN0ZW50V3JhcHBlci9hZnRlci9XcmFwcGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3Jpbmcvd3JhcFJldHVyblZhbHVlL2luY29uc2lzdGVudFdyYXBwZXIvYWZ0ZXIvV3JhcHBlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY3NDQwNWEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3Jpbmcvd3JhcFJldHVyblZhbHVlL2luY29uc2lzdGVudFdyYXBwZXIvYWZ0ZXIvV3JhcHBlci5qYXZhCkBAIC0wLDAgKzEsNiBAQAorY2xhc3MgV3JhcHBlciB7CisgIFN0cmluZyBteUZpZWxkOworICBXcmFwcGVyKFN0cmluZyBzKSB7CisgICAgbXlGaWVsZCA9IHM7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3Jpbmcvd3JhcFJldHVyblZhbHVlL2luY29uc2lzdGVudFdyYXBwZXIvYmVmb3JlL1Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy93cmFwUmV0dXJuVmFsdWUvaW5jb25zaXN0ZW50V3JhcHBlci9iZWZvcmUvVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJhYjAxOTMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3Jpbmcvd3JhcFJldHVyblZhbHVlL2luY29uc2lzdGVudFdyYXBwZXIvYmVmb3JlL1Rlc3QuamF2YQpAQCAtMCwwICsxLDUgQEAKK2NsYXNzIFRlc3QgeworICBTdHJpbmcgZm9vKCkgeworICAgIHJldHVybiAiIjsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy93cmFwUmV0dXJuVmFsdWUvaW5jb25zaXN0ZW50V3JhcHBlci9iZWZvcmUvV3JhcHBlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3dyYXBSZXR1cm5WYWx1ZS9pbmNvbnNpc3RlbnRXcmFwcGVyL2JlZm9yZS9XcmFwcGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjc0NDA1YQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy93cmFwUmV0dXJuVmFsdWUvaW5jb25zaXN0ZW50V3JhcHBlci9iZWZvcmUvV3JhcHBlci5qYXZhCkBAIC0wLDAgKzEsNiBAQAorY2xhc3MgV3JhcHBlciB7CisgIFN0cmluZyBteUZpZWxkOworICBXcmFwcGVyKFN0cmluZyBzKSB7CisgICAgbXlGaWVsZCA9IHM7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3Jpbmcvd3JhcFJldHVyblZhbHVlL2lubmVyQ2xhc3MvYWZ0ZXIvVGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3dyYXBSZXR1cm5WYWx1ZS9pbm5lckNsYXNzL2FmdGVyL1Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41OTUwOWMyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3dyYXBSZXR1cm5WYWx1ZS9pbm5lckNsYXNzL2FmdGVyL1Rlc3QuamF2YQpAQCAtMCwwICsxLDIzIEBACitjbGFzcyBUZXN0IHsKKyAgICBXcmFwcGVyIGZvbygpIHsKKyAgICByZXR1cm4gbmV3IFdyYXBwZXIoIiIpOworICB9CisKKyAgdm9pZCBiYXIoKSB7CisgICAgU3RyaW5nIHMgPSBmb28oKS5nZXRWYWx1ZSgpOworICB9CisKKyAgICBwdWJsaWMgY2xhc3MgV3JhcHBlciB7CisgICAgICAgIHByaXZhdGUgZmluYWwgU3RyaW5nIHZhbHVlOworCisgICAgICAgIHB1YmxpYyBXcmFwcGVyKFN0cmluZyB2YWx1ZSkgeworICAgICAgICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlOworICAgICAgICB9CisKKworICAgICAgICBwdWJsaWMgU3RyaW5nIGdldFZhbHVlKCkgeworICAgICAgICAgICAgcmV0dXJuIHZhbHVlOworICAgICAgICB9CisKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3dyYXBSZXR1cm5WYWx1ZS9pbm5lckNsYXNzL2JlZm9yZS9UZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3Jpbmcvd3JhcFJldHVyblZhbHVlL2lubmVyQ2xhc3MvYmVmb3JlL1Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMjliZGE5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3dyYXBSZXR1cm5WYWx1ZS9pbm5lckNsYXNzL2JlZm9yZS9UZXN0LmphdmEKQEAgLTAsMCArMSw5IEBACitjbGFzcyBUZXN0IHsKKyAgU3RyaW5nIGZvbygpIHsKKyAgICByZXR1cm4gIiI7CisgIH0KKworICB2b2lkIGJhcigpIHsKKyAgICBTdHJpbmcgcyA9IGZvbygpOyAKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy93cmFwUmV0dXJuVmFsdWUvbm9Db25zdHJ1Y3Rvci9hZnRlci9UZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3Jpbmcvd3JhcFJldHVyblZhbHVlL25vQ29uc3RydWN0b3IvYWZ0ZXIvVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ5ZTM0ODMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3Jpbmcvd3JhcFJldHVyblZhbHVlL25vQ29uc3RydWN0b3IvYWZ0ZXIvVGVzdC5qYXZhCkBAIC0wLDAgKzEsNSBAQAorY2xhc3MgVGVzdCB7CisgICAgV3JhcHBlciBmb28oKSB7CisgICAgcmV0dXJuIG5ldyBXcmFwcGVyKCIiKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy93cmFwUmV0dXJuVmFsdWUvbm9Db25zdHJ1Y3Rvci9hZnRlci9XcmFwcGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3Jpbmcvd3JhcFJldHVyblZhbHVlL25vQ29uc3RydWN0b3IvYWZ0ZXIvV3JhcHBlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFlMDVkNTgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3Jpbmcvd3JhcFJldHVyblZhbHVlL25vQ29uc3RydWN0b3IvYWZ0ZXIvV3JhcHBlci5qYXZhCkBAIC0wLDAgKzEsNCBAQAorY2xhc3MgV3JhcHBlciB7CisgIFN0cmluZyBteUZpZWxkOworICBTdHJpbmcgZ2V0TXlGaWVsZCgpe3JldHVybiBteUZpZWxkO30KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3Jpbmcvd3JhcFJldHVyblZhbHVlL25vQ29uc3RydWN0b3IvYmVmb3JlL1Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy93cmFwUmV0dXJuVmFsdWUvbm9Db25zdHJ1Y3Rvci9iZWZvcmUvVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJhYjAxOTMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3Jpbmcvd3JhcFJldHVyblZhbHVlL25vQ29uc3RydWN0b3IvYmVmb3JlL1Rlc3QuamF2YQpAQCAtMCwwICsxLDUgQEAKK2NsYXNzIFRlc3QgeworICBTdHJpbmcgZm9vKCkgeworICAgIHJldHVybiAiIjsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy93cmFwUmV0dXJuVmFsdWUvbm9Db25zdHJ1Y3Rvci9iZWZvcmUvV3JhcHBlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3dyYXBSZXR1cm5WYWx1ZS9ub0NvbnN0cnVjdG9yL2JlZm9yZS9XcmFwcGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWUwNWQ1OAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy93cmFwUmV0dXJuVmFsdWUvbm9Db25zdHJ1Y3Rvci9iZWZvcmUvV3JhcHBlci5qYXZhCkBAIC0wLDAgKzEsNCBAQAorY2xhc3MgV3JhcHBlciB7CisgIFN0cmluZyBteUZpZWxkOworICBTdHJpbmcgZ2V0TXlGaWVsZCgpe3JldHVybiBteUZpZWxkO30KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3Jpbmcvd3JhcFJldHVyblZhbHVlL3Jhd1JldHVyblR5cGUvYWZ0ZXIvVGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3dyYXBSZXR1cm5WYWx1ZS9yYXdSZXR1cm5UeXBlL2FmdGVyL1Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMWZlMTY0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3dyYXBSZXR1cm5WYWx1ZS9yYXdSZXR1cm5UeXBlL2FmdGVyL1Rlc3QuamF2YQpAQCAtMCwwICsxLDYgQEAKK2ltcG9ydCBqYXZhLnV0aWwuKjsKK2NsYXNzIFRlc3QgeworICAgIFdyYXBwZXIgZm9vKCkgeworICAgICAgcmV0dXJuIG5ldyBXcmFwcGVyKG5ldyBBcnJheUxpc3Q8U3RyaW5nPigpKTsKKyAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3Jpbmcvd3JhcFJldHVyblZhbHVlL3Jhd1JldHVyblR5cGUvYWZ0ZXIvV3JhcHBlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3dyYXBSZXR1cm5WYWx1ZS9yYXdSZXR1cm5UeXBlL2FmdGVyL1dyYXBwZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MmVkYTRkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3dyYXBSZXR1cm5WYWx1ZS9yYXdSZXR1cm5UeXBlL2FmdGVyL1dyYXBwZXIuamF2YQpAQCAtMCwwICsxLDExIEBACitpbXBvcnQgamF2YS51dGlsLio7CitjbGFzcyBXcmFwcGVyIHsKKyAgTGlzdDxDaGFyU2VxdWVuY2U+IG15RmllbGQ7CisgIFdyYXBwZXIoTGlzdDxDaGFyU2VxdWVuY2U+IHMpIHsKKyAgICBteUZpZWxkID0gczsKKyAgfQorCisgIExpc3Q8Q2hhclNlcXVlbmNlPiBnZXRNeUZpZWxkKCkgeworICAgIHJldHVybiBteUZpZWxkOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3dyYXBSZXR1cm5WYWx1ZS9yYXdSZXR1cm5UeXBlL2JlZm9yZS9UZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3Jpbmcvd3JhcFJldHVyblZhbHVlL3Jhd1JldHVyblR5cGUvYmVmb3JlL1Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42Y2JhZjUyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3dyYXBSZXR1cm5WYWx1ZS9yYXdSZXR1cm5UeXBlL2JlZm9yZS9UZXN0LmphdmEKQEAgLTAsMCArMSw2IEBACitpbXBvcnQgamF2YS51dGlsLio7CitjbGFzcyBUZXN0IHsKKyAgIExpc3QgZm9vKCkgeworICAgICAgcmV0dXJuIG5ldyBBcnJheUxpc3Q8U3RyaW5nPigpOworICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy93cmFwUmV0dXJuVmFsdWUvcmF3UmV0dXJuVHlwZS9iZWZvcmUvV3JhcHBlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3dyYXBSZXR1cm5WYWx1ZS9yYXdSZXR1cm5UeXBlL2JlZm9yZS9XcmFwcGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDJlZGE0ZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy93cmFwUmV0dXJuVmFsdWUvcmF3UmV0dXJuVHlwZS9iZWZvcmUvV3JhcHBlci5qYXZhCkBAIC0wLDAgKzEsMTEgQEAKK2ltcG9ydCBqYXZhLnV0aWwuKjsKK2NsYXNzIFdyYXBwZXIgeworICBMaXN0PENoYXJTZXF1ZW5jZT4gbXlGaWVsZDsKKyAgV3JhcHBlcihMaXN0PENoYXJTZXF1ZW5jZT4gcykgeworICAgIG15RmllbGQgPSBzOworICB9CisKKyAgTGlzdDxDaGFyU2VxdWVuY2U+IGdldE15RmllbGQoKSB7CisgICAgcmV0dXJuIG15RmllbGQ7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3Jpbmcvd3JhcFJldHVyblZhbHVlL3JldHVybkluc2lkZUxhbWJkYS9hZnRlci9UZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3Jpbmcvd3JhcFJldHVyblZhbHVlL3JldHVybkluc2lkZUxhbWJkYS9hZnRlci9UZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjc0ZGJiOQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy93cmFwUmV0dXJuVmFsdWUvcmV0dXJuSW5zaWRlTGFtYmRhL2FmdGVyL1Rlc3QuamF2YQpAQCAtMCwwICsxLDIxIEBACitjbGFzcyBUZXN0IHsKKyAgICBXcmFwcGVyIGZvbygpIHsKKyAgICByZXR1cm4gbmV3IFdyYXBwZXIoKG8pIC0+IHsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfSk7CisgIH0KKworICAgIHB1YmxpYyBjbGFzcyBXcmFwcGVyIHsKKyAgICAgICAgcHJpdmF0ZSBmaW5hbCBDb21wYXJhYmxlPFN0cmluZz4gdmFsdWU7CisKKyAgICAgICAgcHVibGljIFdyYXBwZXIoQ29tcGFyYWJsZTxTdHJpbmc+IHZhbHVlKSB7CisgICAgICAgICAgICB0aGlzLnZhbHVlID0gdmFsdWU7CisgICAgICAgIH0KKworCisgICAgICAgIHB1YmxpYyBDb21wYXJhYmxlPFN0cmluZz4gZ2V0VmFsdWUoKSB7CisgICAgICAgICAgICByZXR1cm4gdmFsdWU7CisgICAgICAgIH0KKworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3Jpbmcvd3JhcFJldHVyblZhbHVlL3JldHVybkluc2lkZUxhbWJkYS9iZWZvcmUvVGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3dyYXBSZXR1cm5WYWx1ZS9yZXR1cm5JbnNpZGVMYW1iZGEvYmVmb3JlL1Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYmM1N2MxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3dyYXBSZXR1cm5WYWx1ZS9yZXR1cm5JbnNpZGVMYW1iZGEvYmVmb3JlL1Rlc3QuamF2YQpAQCAtMCwwICsxLDcgQEAKK2NsYXNzIFRlc3QgeworICBDb21wYXJhYmxlPFN0cmluZz4gZm9vKCkgeworICAgIHJldHVybiAobykgLT4geworICAgICAgcmV0dXJuIDA7CisgICAgfTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy93cmFwUmV0dXJuVmFsdWUvc2ltcGxlL2FmdGVyL1Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy93cmFwUmV0dXJuVmFsdWUvc2ltcGxlL2FmdGVyL1Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40OWUzNDgzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3dyYXBSZXR1cm5WYWx1ZS9zaW1wbGUvYWZ0ZXIvVGVzdC5qYXZhCkBAIC0wLDAgKzEsNSBAQAorY2xhc3MgVGVzdCB7CisgICAgV3JhcHBlciBmb28oKSB7CisgICAgcmV0dXJuIG5ldyBXcmFwcGVyKCIiKTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy93cmFwUmV0dXJuVmFsdWUvc2ltcGxlL2FmdGVyL1dyYXBwZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy93cmFwUmV0dXJuVmFsdWUvc2ltcGxlL2FmdGVyL1dyYXBwZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNWZiYTMxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3dyYXBSZXR1cm5WYWx1ZS9zaW1wbGUvYWZ0ZXIvV3JhcHBlci5qYXZhCkBAIC0wLDAgKzEsMTMgQEAKK3B1YmxpYyBjbGFzcyBXcmFwcGVyIHsKKyAgICBwcml2YXRlIGZpbmFsIFN0cmluZyB2YWx1ZTsKKworICAgIHB1YmxpYyBXcmFwcGVyKFN0cmluZyB2YWx1ZSkgeworICAgICAgICB0aGlzLnZhbHVlID0gdmFsdWU7CisgICAgfQorCisKKyAgICBwdWJsaWMgU3RyaW5nIGdldFZhbHVlKCkgeworICAgICAgICByZXR1cm4gdmFsdWU7CisgICAgfQorCit9CmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3Jpbmcvd3JhcFJldHVyblZhbHVlL3NpbXBsZS9iZWZvcmUvVGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3dyYXBSZXR1cm5WYWx1ZS9zaW1wbGUvYmVmb3JlL1Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYWIwMTkzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3dyYXBSZXR1cm5WYWx1ZS9zaW1wbGUvYmVmb3JlL1Rlc3QuamF2YQpAQCAtMCwwICsxLDUgQEAKK2NsYXNzIFRlc3QgeworICBTdHJpbmcgZm9vKCkgeworICAgIHJldHVybiAiIjsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy93cmFwUmV0dXJuVmFsdWUvc3RhdGljTWV0aG9kSW5uZXJDbGFzcy9hZnRlci9UZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3Jpbmcvd3JhcFJldHVyblZhbHVlL3N0YXRpY01ldGhvZElubmVyQ2xhc3MvYWZ0ZXIvVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAzNTIxMmMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3Jpbmcvd3JhcFJldHVyblZhbHVlL3N0YXRpY01ldGhvZElubmVyQ2xhc3MvYWZ0ZXIvVGVzdC5qYXZhCkBAIC0wLDAgKzEsMjMgQEAKK2NsYXNzIFRlc3QgeworICBzdGF0aWMgV3JhcHBlciBmb28oKSB7CisgICAgcmV0dXJuIG5ldyBXcmFwcGVyKCIiKTsKKyAgfQorCisgIHZvaWQgYmFyKCkgeworICAgIFN0cmluZyBzID0gZm9vKCkuZ2V0VmFsdWUoKTsKKyAgfQorCisgICAgcHVibGljIHN0YXRpYyBjbGFzcyBXcmFwcGVyIHsKKyAgICAgICAgcHJpdmF0ZSBmaW5hbCBTdHJpbmcgdmFsdWU7CisKKyAgICAgICAgcHVibGljIFdyYXBwZXIoU3RyaW5nIHZhbHVlKSB7CisgICAgICAgICAgICB0aGlzLnZhbHVlID0gdmFsdWU7CisgICAgICAgIH0KKworCisgICAgICAgIHB1YmxpYyBTdHJpbmcgZ2V0VmFsdWUoKSB7CisgICAgICAgICAgICByZXR1cm4gdmFsdWU7CisgICAgICAgIH0KKworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3Jpbmcvd3JhcFJldHVyblZhbHVlL3N0YXRpY01ldGhvZElubmVyQ2xhc3MvYmVmb3JlL1Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy93cmFwUmV0dXJuVmFsdWUvc3RhdGljTWV0aG9kSW5uZXJDbGFzcy9iZWZvcmUvVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ0MDYzNzkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3Jpbmcvd3JhcFJldHVyblZhbHVlL3N0YXRpY01ldGhvZElubmVyQ2xhc3MvYmVmb3JlL1Rlc3QuamF2YQpAQCAtMCwwICsxLDkgQEAKK2NsYXNzIFRlc3QgeworICBzdGF0aWMgU3RyaW5nIGZvbygpIHsKKyAgICByZXR1cm4gIiI7CisgIH0KKworICB2b2lkIGJhcigpIHsKKyAgICBTdHJpbmcgcyA9IGZvbygpOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3dyYXBSZXR1cm5WYWx1ZS9zdHJpcC9hZnRlci9UZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3Jpbmcvd3JhcFJldHVyblZhbHVlL3N0cmlwL2FmdGVyL1Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45OWI2ZjNiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3dyYXBSZXR1cm5WYWx1ZS9zdHJpcC9hZnRlci9UZXN0LmphdmEKQEAgLTAsMCArMSwxMCBAQAorY2xhc3MgVGVzdCB7CisgICAgV3JhcHBlciBmb28oKSB7CisgICAgcmV0dXJuIG5ldyBXcmFwcGVyKCIiKTsKKyAgfQorCisgIHZvaWQgYmFyKCkgeworICAgIFN0cmluZyBzID0gZm9vKCkuZ2V0TXlGaWVsZCgpOworICB9CisKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3Jpbmcvd3JhcFJldHVyblZhbHVlL3N0cmlwL2FmdGVyL1dyYXBwZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy93cmFwUmV0dXJuVmFsdWUvc3RyaXAvYWZ0ZXIvV3JhcHBlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRlY2E3MjMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3Jpbmcvd3JhcFJldHVyblZhbHVlL3N0cmlwL2FmdGVyL1dyYXBwZXIuamF2YQpAQCAtMCwwICsxLDEwIEBACitjbGFzcyBXcmFwcGVyIHsKKyAgU3RyaW5nIG15RmllbGQ7CisgIFdyYXBwZXIoU3RyaW5nIHMpIHsKKyAgICBteUZpZWxkID0gczsKKyAgfQorCisgIFN0cmluZyBnZXRNeUZpZWxkKCkgeworICAgIHJldHVybiBteUZpZWxkOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3dyYXBSZXR1cm5WYWx1ZS9zdHJpcC9iZWZvcmUvVGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3dyYXBSZXR1cm5WYWx1ZS9zdHJpcC9iZWZvcmUvVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZjZDUzZDYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3Jpbmcvd3JhcFJldHVyblZhbHVlL3N0cmlwL2JlZm9yZS9UZXN0LmphdmEKQEAgLTAsMCArMSwxMCBAQAorY2xhc3MgVGVzdCB7CisgIFN0cmluZyBmb28oKSB7CisgICAgcmV0dXJuIG5ldyBXcmFwcGVyKCIiKS5nZXRNeUZpZWxkKCk7CisgIH0KKworICB2b2lkIGJhcigpIHsKKyAgICBTdHJpbmcgcyA9IGZvbygpOworICB9CisKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3Jpbmcvd3JhcFJldHVyblZhbHVlL3N0cmlwL2JlZm9yZS9XcmFwcGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3Jpbmcvd3JhcFJldHVyblZhbHVlL3N0cmlwL2JlZm9yZS9XcmFwcGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGVjYTcyMwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy93cmFwUmV0dXJuVmFsdWUvc3RyaXAvYmVmb3JlL1dyYXBwZXIuamF2YQpAQCAtMCwwICsxLDEwIEBACitjbGFzcyBXcmFwcGVyIHsKKyAgU3RyaW5nIG15RmllbGQ7CisgIFdyYXBwZXIoU3RyaW5nIHMpIHsKKyAgICBteUZpZWxkID0gczsKKyAgfQorCisgIFN0cmluZyBnZXRNeUZpZWxkKCkgeworICAgIHJldHVybiBteUZpZWxkOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3dyYXBSZXR1cm5WYWx1ZS93cmFwcGVyL2FmdGVyL1Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy93cmFwUmV0dXJuVmFsdWUvd3JhcHBlci9hZnRlci9UZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTliNmYzYgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy93cmFwUmV0dXJuVmFsdWUvd3JhcHBlci9hZnRlci9UZXN0LmphdmEKQEAgLTAsMCArMSwxMCBAQAorY2xhc3MgVGVzdCB7CisgICAgV3JhcHBlciBmb28oKSB7CisgICAgcmV0dXJuIG5ldyBXcmFwcGVyKCIiKTsKKyAgfQorCisgIHZvaWQgYmFyKCkgeworICAgIFN0cmluZyBzID0gZm9vKCkuZ2V0TXlGaWVsZCgpOworICB9CisKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3Jpbmcvd3JhcFJldHVyblZhbHVlL3dyYXBwZXIvYWZ0ZXIvV3JhcHBlci5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3dyYXBSZXR1cm5WYWx1ZS93cmFwcGVyL2FmdGVyL1dyYXBwZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZWNhNzIzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3dyYXBSZXR1cm5WYWx1ZS93cmFwcGVyL2FmdGVyL1dyYXBwZXIuamF2YQpAQCAtMCwwICsxLDEwIEBACitjbGFzcyBXcmFwcGVyIHsKKyAgU3RyaW5nIG15RmllbGQ7CisgIFdyYXBwZXIoU3RyaW5nIHMpIHsKKyAgICBteUZpZWxkID0gczsKKyAgfQorCisgIFN0cmluZyBnZXRNeUZpZWxkKCkgeworICAgIHJldHVybiBteUZpZWxkOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3dyYXBSZXR1cm5WYWx1ZS93cmFwcGVyL2JlZm9yZS9UZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3Jpbmcvd3JhcFJldHVyblZhbHVlL3dyYXBwZXIvYmVmb3JlL1Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZjFhOGRmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3dyYXBSZXR1cm5WYWx1ZS93cmFwcGVyL2JlZm9yZS9UZXN0LmphdmEKQEAgLTAsMCArMSwxMCBAQAorY2xhc3MgVGVzdCB7CisgIFN0cmluZyBmb28oKSB7CisgICAgcmV0dXJuICIiOworICB9CisKKyAgdm9pZCBiYXIoKSB7CisgICAgU3RyaW5nIHMgPSBmb28oKTsKKyAgfQorCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3dyYXBSZXR1cm5WYWx1ZS93cmFwcGVyL2JlZm9yZS9XcmFwcGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3Jpbmcvd3JhcFJldHVyblZhbHVlL3dyYXBwZXIvYmVmb3JlL1dyYXBwZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZWNhNzIzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3dyYXBSZXR1cm5WYWx1ZS93cmFwcGVyL2JlZm9yZS9XcmFwcGVyLmphdmEKQEAgLTAsMCArMSwxMCBAQAorY2xhc3MgV3JhcHBlciB7CisgIFN0cmluZyBteUZpZWxkOworICBXcmFwcGVyKFN0cmluZyBzKSB7CisgICAgbXlGaWVsZCA9IHM7CisgIH0KKworICBTdHJpbmcgZ2V0TXlGaWVsZCgpIHsKKyAgICByZXR1cm4gbXlGaWVsZDsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy93cmFwUmV0dXJuVmFsdWUvd3JvbmdGaWVsZEFzc2lnbm1lbnQvYWZ0ZXIvVGVzdC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3dyYXBSZXR1cm5WYWx1ZS93cm9uZ0ZpZWxkQXNzaWdubWVudC9hZnRlci9UZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTliNmYzYgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy93cmFwUmV0dXJuVmFsdWUvd3JvbmdGaWVsZEFzc2lnbm1lbnQvYWZ0ZXIvVGVzdC5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKK2NsYXNzIFRlc3QgeworICAgIFdyYXBwZXIgZm9vKCkgeworICAgIHJldHVybiBuZXcgV3JhcHBlcigiIik7CisgIH0KKworICB2b2lkIGJhcigpIHsKKyAgICBTdHJpbmcgcyA9IGZvbygpLmdldE15RmllbGQoKTsKKyAgfQorCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3dyYXBSZXR1cm5WYWx1ZS93cm9uZ0ZpZWxkQXNzaWdubWVudC9hZnRlci9XcmFwcGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3Jpbmcvd3JhcFJldHVyblZhbHVlL3dyb25nRmllbGRBc3NpZ25tZW50L2FmdGVyL1dyYXBwZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZWNhNzIzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3dyYXBSZXR1cm5WYWx1ZS93cm9uZ0ZpZWxkQXNzaWdubWVudC9hZnRlci9XcmFwcGVyLmphdmEKQEAgLTAsMCArMSwxMCBAQAorY2xhc3MgV3JhcHBlciB7CisgIFN0cmluZyBteUZpZWxkOworICBXcmFwcGVyKFN0cmluZyBzKSB7CisgICAgbXlGaWVsZCA9IHM7CisgIH0KKworICBTdHJpbmcgZ2V0TXlGaWVsZCgpIHsKKyAgICByZXR1cm4gbXlGaWVsZDsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy93cmFwUmV0dXJuVmFsdWUvd3JvbmdGaWVsZEFzc2lnbm1lbnQvYmVmb3JlL1Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy93cmFwUmV0dXJuVmFsdWUvd3JvbmdGaWVsZEFzc2lnbm1lbnQvYmVmb3JlL1Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZjFhOGRmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3dyYXBSZXR1cm5WYWx1ZS93cm9uZ0ZpZWxkQXNzaWdubWVudC9iZWZvcmUvVGVzdC5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKK2NsYXNzIFRlc3QgeworICBTdHJpbmcgZm9vKCkgeworICAgIHJldHVybiAiIjsKKyAgfQorCisgIHZvaWQgYmFyKCkgeworICAgIFN0cmluZyBzID0gZm9vKCk7CisgIH0KKworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy93cmFwUmV0dXJuVmFsdWUvd3JvbmdGaWVsZEFzc2lnbm1lbnQvYmVmb3JlL1dyYXBwZXIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy93cmFwUmV0dXJuVmFsdWUvd3JvbmdGaWVsZEFzc2lnbm1lbnQvYmVmb3JlL1dyYXBwZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMzUzMTc4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3dyYXBSZXR1cm5WYWx1ZS93cm9uZ0ZpZWxkQXNzaWdubWVudC9iZWZvcmUvV3JhcHBlci5qYXZhCkBAIC0wLDAgKzEsMTEgQEAKK2NsYXNzIFdyYXBwZXIgeworICBTdHJpbmcgbXlGaWVsZDsKKyAgU3RyaW5nIG15RmllbGQxOworICBXcmFwcGVyKFN0cmluZyBzKSB7CisgICAgbXlGaWVsZDEgPSBzOworICB9CisKKyAgU3RyaW5nIGdldE15RmllbGQoKSB7CisgICAgcmV0dXJuIG15RmllbGQ7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3Jpbmcvd3JhcFJldHVyblZhbHVlL3dyb25nRmllbGRUeXBlL2FmdGVyL1Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy93cmFwUmV0dXJuVmFsdWUvd3JvbmdGaWVsZFR5cGUvYWZ0ZXIvVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRlNjQ4MGQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3Jpbmcvd3JhcFJldHVyblZhbHVlL3dyb25nRmllbGRUeXBlL2FmdGVyL1Rlc3QuamF2YQpAQCAtMCwwICsxLDExIEBACitjbGFzcyBUZXN0IHsKKyAgIHB1YmxpYyBXcmFwcGVyIGZvbyhpbnQgcCkgeworICAgCQlpZiAocCA+IDApIHsKKyAgIAkJCXJldHVybiBuZXcgV3JhcHBlcigxKTsKKyAgIAkJfSBlbHNlIHsKKyAgIAkJCXJldHVybiBuZXcgV3JhcHBlcigyKTsKKyAgIAkJfQorICAgCX0KKworCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3dyYXBSZXR1cm5WYWx1ZS93cm9uZ0ZpZWxkVHlwZS9hZnRlci9XcmFwcGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3Jpbmcvd3JhcFJldHVyblZhbHVlL3dyb25nRmllbGRUeXBlL2FmdGVyL1dyYXBwZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZWQ1ZjNmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3dyYXBSZXR1cm5WYWx1ZS93cm9uZ0ZpZWxkVHlwZS9hZnRlci9XcmFwcGVyLmphdmEKQEAgLTAsMCArMSwxMCBAQAorY2xhc3MgV3JhcHBlciB7CisgIGludCBteUZpZWxkOworICBXcmFwcGVyKGludCBzKSB7CisgICAgbXlGaWVsZCA9IHM7CisgIH0KKworICBpbnQgZ2V0TXlGaWVsZCgpIHsKKyAgICByZXR1cm4gbXlGaWVsZDsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy93cmFwUmV0dXJuVmFsdWUvd3JvbmdGaWVsZFR5cGUvYmVmb3JlL1Rlc3QuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy93cmFwUmV0dXJuVmFsdWUvd3JvbmdGaWVsZFR5cGUvYmVmb3JlL1Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMzIzNGRjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3JlZmFjdG9yaW5nL3dyYXBSZXR1cm5WYWx1ZS93cm9uZ0ZpZWxkVHlwZS9iZWZvcmUvVGVzdC5qYXZhCkBAIC0wLDAgKzEsMTEgQEAKK2NsYXNzIFRlc3QgeworICAgcHVibGljIGRvdWJsZSBmb28oaW50IHApIHsKKyAgIAkJaWYgKHAgPiAwKSB7CisgICAJCQlyZXR1cm4gMTsKKyAgIAkJfSBlbHNlIHsKKyAgIAkJCXJldHVybiAyOworICAgCQl9CisgICAJfQorCisKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3Jpbmcvd3JhcFJldHVyblZhbHVlL3dyb25nRmllbGRUeXBlL2JlZm9yZS9XcmFwcGVyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvcmVmYWN0b3Jpbmcvd3JhcFJldHVyblZhbHVlL3dyb25nRmllbGRUeXBlL2JlZm9yZS9XcmFwcGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmVkNWYzZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9yZWZhY3RvcmluZy93cmFwUmV0dXJuVmFsdWUvd3JvbmdGaWVsZFR5cGUvYmVmb3JlL1dyYXBwZXIuamF2YQpAQCAtMCwwICsxLDEwIEBACitjbGFzcyBXcmFwcGVyIHsKKyAgaW50IG15RmllbGQ7CisgIFdyYXBwZXIoaW50IHMpIHsKKyAgICBteUZpZWxkID0gczsKKyAgfQorCisgIGludCBnZXRNeUZpZWxkKCkgeworICAgIHJldHVybiBteUZpZWxkOworICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3N0cnVjdHVyZVZpZXcvZXhwYW5kRWxlbWVudFdpdGhFeGl0aW5nTmFtZS90ZXN0LnhtbCBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9zdHJ1Y3R1cmVWaWV3L2V4cGFuZEVsZW1lbnRXaXRoRXhpdGluZ05hbWUvdGVzdC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzQyODg4MgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9zdHJ1Y3R1cmVWaWV3L2V4cGFuZEVsZW1lbnRXaXRoRXhpdGluZ05hbWUvdGVzdC54bWwKQEAgLTAsMCArMSwyNCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIj8+CisKKzx0ZXN0PgorCTxsZXZlbDE+CisJCTxsZXZlbDI+CisJCQk8bGV2ZWwzPjwvbGV2ZWwzPgorCQk8L2xldmVsMj4KKwk8L2xldmVsMT4KKwk8bGV2ZWwxPgorCQk8bGV2ZWwyPgorCQkJPGxldmVsMz48L2xldmVsMz4KKwkJPC9sZXZlbDI+CisJPC9sZXZlbDE+CisJPGxldmVsMT4KKwkJPGxldmVsMj4KKwkJCTxsZXZlbDM+PC9sZXZlbDM+CisJCTwvbGV2ZWwyPgorCTwvbGV2ZWwxPgorCTxsZXZlbDE+CisJCTxsZXZlbDI+CisJCQk8bGV2ZWwzPjwvbGV2ZWwzPgorCQk8L2xldmVsMj4KKwk8L2xldmVsMT4KKzwvdGVzdD4KZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9zdHJ1Y3R1cmVWaWV3L2phdmFDbGFzc1N0cnVjdHVyZS9zcmMvY29tL3BhY2thZ2UxL0NsYXNzMS5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3N0cnVjdHVyZVZpZXcvamF2YUNsYXNzU3RydWN0dXJlL3NyYy9jb20vcGFja2FnZTEvQ2xhc3MxLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODM3NmE5MgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9zdHJ1Y3R1cmVWaWV3L2phdmFDbGFzc1N0cnVjdHVyZS9zcmMvY29tL3BhY2thZ2UxL0NsYXNzMS5qYXZhCkBAIC0wLDAgKzEsMTAgQEAKK3BhY2thZ2UgY29tLnBhY2thZ2UxOworCitwdWJsaWMgY2xhc3MgQ2xhc3MxIHsKKyAgcHVibGljIGJvb2xlYW4gbXlGaWVsZDE7CisgIHB1YmxpYyBib29sZWFuIG15RmllbGQyOworICAKKyAgcHVibGljIGludCBnZXRWYWx1ZSgpeworICAgcmV0dXJuIDA7CisgIH0gIAorfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3N0cnVjdHVyZVZpZXcvbWVtYmVyc09yZGVyL3NyYy9jb20vcGFja2FnZTEvQ2xhc3MyLmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvc3RydWN0dXJlVmlldy9tZW1iZXJzT3JkZXIvc3JjL2NvbS9wYWNrYWdlMS9DbGFzczIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZWNiMDk4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3N0cnVjdHVyZVZpZXcvbWVtYmVyc09yZGVyL3NyYy9jb20vcGFja2FnZTEvQ2xhc3MyLmphdmEKQEAgLTAsMCArMSw3IEBACitwdWJsaWMgY2xhc3MgQ2xhc3MyIHsKKyAgcHJpdmF0ZSBpbnQgYWI7CisgIHByb3RlY3RlZCBpbnQgejsKKyAgcHVibGljIHZvaWQgYWYoKXt9CisgIHB1YmxpYyB2b2lkIHpmKCl7fQorICBwdWJsaWMgQ2xhc3MyKCl7fQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9zdHJ1Y3R1cmVWaWV3L3Nob3dDbGFzc01lbWJlcnMvc3JjL2NvbS9wYWNrYWdlMS9DbGFzczIuamF2YSBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS9zdHJ1Y3R1cmVWaWV3L3Nob3dDbGFzc01lbWJlcnMvc3JjL2NvbS9wYWNrYWdlMS9DbGFzczIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jOWQyYWFiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3N0cnVjdHVyZVZpZXcvc2hvd0NsYXNzTWVtYmVycy9zcmMvY29tL3BhY2thZ2UxL0NsYXNzMi5qYXZhCkBAIC0wLDAgKzEsNTMgQEAKK3BhY2thZ2UgY29tLnBhY2thZ2UxOworCitwdWJsaWMgY2xhc3MgQ2xhc3MyIHsKKyAgcHJpdmF0ZSBib29sZWFuIG15RmllbGQxOworICBwdWJsaWMgYm9vbGVhbiBteUZpZWxkMjsKKyAgcHVibGljIGJvb2xlYW4gbXlGaWVsZDM7CisgIHB1YmxpYyBib29sZWFuIG15RmllbGQ0OworCisgIHB1YmxpYyBpbnQgZ2V0VmFsdWUoKSB7CisgICAgcmV0dXJuIDA7CisgIH0KKworICBwdWJsaWMgY2xhc3MgSW5uZXJDbGFzczEgeworICAgIHB1YmxpYyBpbnQgbXlJbm5lckNsYXNzRmllbGQ7CisKKyAgICBwdWJsaWMgY2xhc3MgSW5uZXJDbGFzczEyIHsKKyAgICAgIHB1YmxpYyBpbnQgbXlJbm5lckNsYXNzRmllbGQ7CisKKyAgICAgIHB1YmxpYyBjbGFzcyBJbm5lckNsYXNzMTMgeworICAgICAgICBwdWJsaWMgaW50IG15SW5uZXJDbGFzc0ZpZWxkOworCisgICAgICAgIHB1YmxpYyBjbGFzcyBJbm5lckNsYXNzMTQgeworICAgICAgICAgIHB1YmxpYyBpbnQgbXlJbm5lckNsYXNzRmllbGQ7CisKKyAgICAgICAgICBwdWJsaWMgY2xhc3MgSW5uZXJDbGFzczE1IHsKKyAgICAgICAgICAgIHB1YmxpYyBpbnQgbXlJbm5lckNsYXNzRmllbGQ7CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgfQorICB9CisKKyAgcHVibGljIGNsYXNzIElubmVyQ2xhc3MyIHsKKyAgICBwdWJsaWMgaW50IG15SW5uZXJDbGFzc0ZpZWxkOworCisgICAgcHVibGljIGNsYXNzIElubmVyQ2xhc3MyMiB7CisgICAgICBwdWJsaWMgaW50IG15SW5uZXJDbGFzc0ZpZWxkOworCisgICAgICBwdWJsaWMgY2xhc3MgSW5uZXJDbGFzczIzIHsKKyAgICAgICAgcHVibGljIGludCBteUlubmVyQ2xhc3NGaWVsZDsKKworICAgICAgICBwdWJsaWMgY2xhc3MgSW5uZXJDbGFzczI0IHsKKyAgICAgICAgICBwdWJsaWMgaW50IG15RmllbGRUb1NlbGVjdDsKKworICAgICAgICAgIHB1YmxpYyBjbGFzcyBJbm5lckNsYXNzMjUgeworICAgICAgICAgICAgcHVibGljIGludCBteUlubmVyQ2xhc3NGaWVsZDsKKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9CisgIH0KKworfQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3N0cnVjdHVyZVZpZXcvdmlzaWJpbGl0eVNvcnRlci9zcmMvY29tL3BhY2thZ2UxL0NsYXNzMi5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3N0cnVjdHVyZVZpZXcvdmlzaWJpbGl0eVNvcnRlci9zcmMvY29tL3BhY2thZ2UxL0NsYXNzMi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgwMzE0NjQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvc3RydWN0dXJlVmlldy92aXNpYmlsaXR5U29ydGVyL3NyYy9jb20vcGFja2FnZTEvQ2xhc3MyLmphdmEKQEAgLTAsMCArMSw1IEBACitwdWJsaWMgY2xhc3MgQ2xhc3MyIHsKKyAgcHJpdmF0ZSBpbnQgX19teVByaXZhdGVGaWllbGQ7CisgIHByb3RlY3RlZCBpbnQgX215UHJvdGVjdGVkRmllbGQ7CisgIHB1YmxpYyBpbnQgbXlQdWJsaWNGaWVsZDsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvdW5zY3JhbWJsZS9kZWFkbG9jay50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvdW5zY3JhbWJsZS9kZWFkbG9jay50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOThlODNmYwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS91bnNjcmFtYmxlL2RlYWRsb2NrLnR4dApAQCAtMCwwICsxLDc3MyBAQAorMjAxMS0xMS0yNSAyMDoxMjozMAorRnVsbCB0aHJlYWQgZHVtcCBKYXZhIEhvdFNwb3QoVE0pIDY0LUJpdCBTZXJ2ZXIgVk0gKDE3LjEtYjAzLTMwNyBtaXhlZCBtb2RlKToKKworIkF0dGFjaCBMaXN0ZW5lciIgZGFlbW9uIHByaW89OSB0aWQ9MTAzNTg4MDAwIG5pZD0weDExM2ZiNjAwMCB3YWl0aW5nIG9uIGNvbmRpdGlvbiBbMDAwMDAwMDBdCisgICBqYXZhLmxhbmcuVGhyZWFkLlN0YXRlOiBSVU5OQUJMRQorCisgICBMb2NrZWQgb3duYWJsZSBzeW5jaHJvbml6ZXJzOgorCS0gTm9uZQorCisicHJvY2VzcyByZWFwZXIiIGRhZW1vbiBwcmlvPTQgdGlkPTExZDE5MDgwMCBuaWQ9MHgxMTY3NTUwMDAgcnVubmFibGUgWzExNjc1NDAwMF0KKyAgIGphdmEubGFuZy5UaHJlYWQuU3RhdGU6IFJVTk5BQkxFCisJYXQgamF2YS5sYW5nLlVOSVhQcm9jZXNzLndhaXRGb3JQcm9jZXNzRXhpdChOYXRpdmUgTWV0aG9kKQorCWF0IGphdmEubGFuZy5VTklYUHJvY2Vzcy5hY2Nlc3MkOTAwKFVOSVhQcm9jZXNzLmphdmE6MTcpCisJYXQgamF2YS5sYW5nLlVOSVhQcm9jZXNzJDIkMS5ydW4oVU5JWFByb2Nlc3MuamF2YTo4NikKKworICAgTG9ja2VkIG93bmFibGUgc3luY2hyb25pemVyczoKKwktIE5vbmUKKworIkFsYXJtIHBvb2wob3duKSIgZGFlbW9uIHByaW89MyB0aWQ9MTE0NDg2MDAwIG5pZD0weDExYjEwMjAwMCB3YWl0aW5nIG9uIGNvbmRpdGlvbiBbMTFiMTAxMDAwXQorICAgamF2YS5sYW5nLlRocmVhZC5TdGF0ZTogV0FJVElORyAocGFya2luZykKKwlhdCBzdW4ubWlzYy5VbnNhZmUucGFyayhOYXRpdmUgTWV0aG9kKQorCS0gcGFya2luZyB0byB3YWl0IGZvciAgPDdjYWYxNWM2MD4gKGEgamF2YS51dGlsLmNvbmN1cnJlbnQubG9ja3MuQWJzdHJhY3RRdWV1ZWRTeW5jaHJvbml6ZXIkQ29uZGl0aW9uT2JqZWN0KQorCWF0IGphdmEudXRpbC5jb25jdXJyZW50LmxvY2tzLkxvY2tTdXBwb3J0LnBhcmsoTG9ja1N1cHBvcnQuamF2YToxNTgpCisJYXQgamF2YS51dGlsLmNvbmN1cnJlbnQubG9ja3MuQWJzdHJhY3RRdWV1ZWRTeW5jaHJvbml6ZXIkQ29uZGl0aW9uT2JqZWN0LmF3YWl0KEFic3RyYWN0UXVldWVkU3luY2hyb25pemVyLmphdmE6MTk4NykKKwlhdCBqYXZhLnV0aWwuY29uY3VycmVudC5MaW5rZWRCbG9ja2luZ1F1ZXVlLnRha2UoTGlua2VkQmxvY2tpbmdRdWV1ZS5qYXZhOjM5OSkKKwlhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IuZ2V0VGFzayhUaHJlYWRQb29sRXhlY3V0b3IuamF2YTo5NDcpCisJYXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yJFdvcmtlci5ydW4oVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6OTA3KQorCWF0IGphdmEubGFuZy5UaHJlYWQucnVuKFRocmVhZC5qYXZhOjY4MCkKKworICAgTG9ja2VkIG93bmFibGUgc3luY2hyb25pemVyczoKKwktIE5vbmUKKworIkpvYlNjaGVkdWxlciBwb29sIDAvMSIgcHJpbz01IHRpZD0xMTU2NTkwMDAgbmlkPTB4MTFhYzZjMDAwIHdhaXRpbmcgZm9yIG1vbml0b3IgZW50cnkgWzExYWM2YTAwMF0KKyAgIGphdmEubGFuZy5UaHJlYWQuU3RhdGU6IEJMT0NLRUQgKG9uIG9iamVjdCBtb25pdG9yKQorCWF0IGNvbS5pbnRlbGxpai51dGlsLmlvLlBlcnNpc3RlbnRIYXNoTWFwLmdldChQZXJzaXN0ZW50SGFzaE1hcC5qYXZhOjMzOSkKKwktIHdhaXRpbmcgdG8gbG9jayA8N2M5NzM0MDA4PiAoYSBjb20uaW50ZWxsaWoudXRpbC5pby5QZXJzaXN0ZW50QlRyZWVFbnVtZXJhdG9yKQorCWF0IGNvbS5pbnRlbGxpai51dGlsLmluZGV4aW5nLk1hcEluZGV4U3RvcmFnZSQxJDEuY29tcHV0ZShNYXBJbmRleFN0b3JhZ2UuamF2YTo3NykKKwlhdCBjb20uaW50ZWxsaWoudXRpbC5pbmRleGluZy5NYXBJbmRleFN0b3JhZ2UkMSQxLmNvbXB1dGUoTWFwSW5kZXhTdG9yYWdlLmphdmE6NjcpCisJYXQgY29tLmludGVsbGlqLnV0aWwuaW5kZXhpbmcuQ2hhbmdlVHJhY2tpbmdWYWx1ZUNvbnRhaW5lci5nZXRNZXJnZWREYXRhKENoYW5nZVRyYWNraW5nVmFsdWVDb250YWluZXIuamF2YToxMzQpCisJLSBsb2NrZWQgPDdjOTczM2ZhMD4gKGEgY29tLmludGVsbGlqLnV0aWwuaW5kZXhpbmcuVmFsdWVDb250YWluZXJNYXApCisJYXQgY29tLmludGVsbGlqLnV0aWwuaW5kZXhpbmcuQ2hhbmdlVHJhY2tpbmdWYWx1ZUNvbnRhaW5lci5nZXRWYWx1ZUl0ZXJhdG9yKENoYW5nZVRyYWNraW5nVmFsdWVDb250YWluZXIuamF2YTo5OCkKKwlhdCBjb20uaW50ZWxsaWoudXRpbC5pbmRleGluZy5GaWxlQmFzZWRJbmRleC5wcm9jZXNzVmFsdWVzSW1wbChGaWxlQmFzZWRJbmRleC5qYXZhOjkwMCkKKwlhdCBjb20uaW50ZWxsaWoudXRpbC5pbmRleGluZy5GaWxlQmFzZWRJbmRleC5nZXRWYWx1ZXMoRmlsZUJhc2VkSW5kZXguamF2YTo4MjIpCisJYXQgY29tLmludGVsbGlqLmphdmFzY3JpcHQuZmxleC5jc3MuRmxleENzc0VsZW1lbnREZXNjcmlwdG9yUHJvdmlkZXIuZ2V0UHJvcGVydHlEZXNjcmlwdG9yKEZsZXhDc3NFbGVtZW50RGVzY3JpcHRvclByb3ZpZGVyLmphdmE6MTgwKQorCWF0IGNvbS5pbnRlbGxpai5wc2kuY3NzLmltcGwudXRpbC50YWJsZS5Dc3NEZXNjcmlwdG9yc1V0aWwuZ2V0UHJvcGVydHlEZXNjcmlwdG9yKENzc0Rlc2NyaXB0b3JzVXRpbC5qYXZhOjUwKQorCWF0IGNvbS5pbnRlbGxpai5wc2kuY3NzLmltcGwudXRpbC50YWJsZS5Dc3NEZXNjcmlwdG9yc1V0aWwuZ2V0Q2Fubm9uaWNhbFByb3BlcnR5TmFtZShDc3NEZXNjcmlwdG9yc1V0aWwuamF2YTo5OCkKKwlhdCBjb20uaW50ZWxsaWoucHNpLmNzcy5pbXBsLnV0aWwudGFibGUuQ3NzRGVzY3JpcHRvcnNVdGlsLmdldENhbm5vbmljYWxQcm9wZXJ0eU5hbWUoQ3NzRGVzY3JpcHRvcnNVdGlsLmphdmE6MTA0KQorCWF0IGNvbS5pbnRlbGxpai5wc2kuY3NzLmJyb3dzZS5Dc3NDb2xvckFubm90YXRvci5hbm5vdGF0ZShDc3NDb2xvckFubm90YXRvci5qYXZhOjEwNSkKKwlhdCBjb20uaW50ZWxsaWouY29kZUluc2lnaHQuZGFlbW9uLmltcGwuRGVmYXVsdEhpZ2hsaWdodFZpc2l0b3IucnVuQW5ub3RhdG9ycyhEZWZhdWx0SGlnaGxpZ2h0VmlzaXRvci5qYXZhOjE1NykKKwlhdCBjb20uaW50ZWxsaWouY29kZUluc2lnaHQuZGFlbW9uLmltcGwuRGVmYXVsdEhpZ2hsaWdodFZpc2l0b3IudmlzaXQoRGVmYXVsdEhpZ2hsaWdodFZpc2l0b3IuamF2YToxMDApCisJYXQgY29tLmludGVsbGlqLmNvZGVJbnNpZ2h0LmRhZW1vbi5pbXBsLkdlbmVyYWxIaWdobGlnaHRpbmdQYXNzJDgucnVuKEdlbmVyYWxIaWdobGlnaHRpbmdQYXNzLmphdmE6NTkzKQorCWF0IGNvbS5pbnRlbGxpai5jb2RlSW5zaWdodC5kYWVtb24uaW1wbC5HZW5lcmFsSGlnaGxpZ2h0aW5nUGFzcy5hbmFseXplQnlWaXNpdG9ycyhHZW5lcmFsSGlnaGxpZ2h0aW5nUGFzcy5qYXZhOjc3MSkKKwlhdCBjb20uaW50ZWxsaWouY29kZUluc2lnaHQuZGFlbW9uLmltcGwuR2VuZXJhbEhpZ2hsaWdodGluZ1Bhc3MuYWNjZXNzJDM2MDAoR2VuZXJhbEhpZ2hsaWdodGluZ1Bhc3MuamF2YTo4MCkKKwlhdCBjb20uaW50ZWxsaWouY29kZUluc2lnaHQuZGFlbW9uLmltcGwuR2VuZXJhbEhpZ2hsaWdodGluZ1Bhc3MkMTAucnVuKEdlbmVyYWxIaWdobGlnaHRpbmdQYXNzLmphdmE6Nzc3KQorCWF0IGNvbS5pbnRlbGxpai5jb2RlSW5zaWdodC5kYWVtb24uaW1wbC5EZWZhdWx0SGlnaGxpZ2h0VmlzaXRvci5hbmFseXplKERlZmF1bHRIaWdobGlnaHRWaXNpdG9yLmphdmE6ODQpCisJYXQgY29tLmludGVsbGlqLmNvZGVJbnNpZ2h0LmRhZW1vbi5pbXBsLkdlbmVyYWxIaWdobGlnaHRpbmdQYXNzLmFuYWx5emVCeVZpc2l0b3JzKEdlbmVyYWxIaWdobGlnaHRpbmdQYXNzLmphdmE6Nzc0KQorCWF0IGNvbS5pbnRlbGxpai5jb2RlSW5zaWdodC5kYWVtb24uaW1wbC5HZW5lcmFsSGlnaGxpZ2h0aW5nUGFzcy5hY2Nlc3MkMzYwMChHZW5lcmFsSGlnaGxpZ2h0aW5nUGFzcy5qYXZhOjgwKQorCWF0IGNvbS5pbnRlbGxpai5jb2RlSW5zaWdodC5kYWVtb24uaW1wbC5HZW5lcmFsSGlnaGxpZ2h0aW5nUGFzcyQxMC5ydW4oR2VuZXJhbEhpZ2hsaWdodGluZ1Bhc3MuamF2YTo3NzcpCisJYXQgY29tLmludGVsbGlqLmNvZGVJbnNpZ2h0LmRhZW1vbi5pbXBsLkRlZmF1bHRIaWdobGlnaHRWaXNpdG9yLmFuYWx5emUoRGVmYXVsdEhpZ2hsaWdodFZpc2l0b3IuamF2YTo4NCkKKwlhdCBjb20uaW50ZWxsaWouY29kZUluc2lnaHQuZGFlbW9uLmltcGwuR2VuZXJhbEhpZ2hsaWdodGluZ1Bhc3MuYW5hbHl6ZUJ5VmlzaXRvcnMoR2VuZXJhbEhpZ2hsaWdodGluZ1Bhc3MuamF2YTo3NzQpCisJYXQgY29tLmludGVsbGlqLmNvZGVJbnNpZ2h0LmRhZW1vbi5pbXBsLkdlbmVyYWxIaWdobGlnaHRpbmdQYXNzLmNvbGxlY3RIaWdobGlnaHRzKEdlbmVyYWxIaWdobGlnaHRpbmdQYXNzLmphdmE6NjM5KQorCWF0IGNvbS5pbnRlbGxpai5jb2RlSW5zaWdodC5kYWVtb24uaW1wbC5HZW5lcmFsSGlnaGxpZ2h0aW5nUGFzcy5jb2xsZWN0SW5mb3JtYXRpb25XaXRoUHJvZ3Jlc3MoR2VuZXJhbEhpZ2hsaWdodGluZ1Bhc3MuamF2YToyMDQpCisJYXQgY29tLmludGVsbGlqLmNvZGVJbnNpZ2h0LmRhZW1vbi5pbXBsLlByb2dyZXNzYWJsZVRleHRFZGl0b3JIaWdobGlnaHRpbmdQYXNzLmRvQ29sbGVjdEluZm9ybWF0aW9uKFByb2dyZXNzYWJsZVRleHRFZGl0b3JIaWdobGlnaHRpbmdQYXNzLmphdmE6NTgpCisJYXQgY29tLmludGVsbGlqLmNvZGVIaWdobGlnaHRpbmcuVGV4dEVkaXRvckhpZ2hsaWdodGluZ1Bhc3MuY29sbGVjdEluZm9ybWF0aW9uKFRleHRFZGl0b3JIaWdobGlnaHRpbmdQYXNzLmphdmE6NjEpCisJYXQgY29tLmludGVsbGlqLmNvZGVJbnNpZ2h0LmRhZW1vbi5pbXBsLlBhc3NFeGVjdXRvclNlcnZpY2UkU2NoZWR1bGVkUGFzcyQxJDEucnVuKFBhc3NFeGVjdXRvclNlcnZpY2UuamF2YTozNTApCisJYXQgY29tLmludGVsbGlqLm9wZW5hcGkuYXBwbGljYXRpb24uaW1wbC5BcHBsaWNhdGlvbkltcGwudHJ5UnVuUmVhZEFjdGlvbihBcHBsaWNhdGlvbkltcGwuamF2YToxMDM0KQorCWF0IGNvbS5pbnRlbGxpai5jb2RlSW5zaWdodC5kYWVtb24uaW1wbC5QYXNzRXhlY3V0b3JTZXJ2aWNlJFNjaGVkdWxlZFBhc3MkMS5ydW4oUGFzc0V4ZWN1dG9yU2VydmljZS5qYXZhOjM0MikKKwlhdCBjb20uaW50ZWxsaWoub3BlbmFwaS5wcm9ncmVzcy5pbXBsLlByb2dyZXNzTWFuYWdlckltcGwuZXhlY3V0ZVByb2Nlc3NVbmRlclByb2dyZXNzKFByb2dyZXNzTWFuYWdlckltcGwuamF2YToyMDYpCisJYXQgY29tLmludGVsbGlqLmNvZGVJbnNpZ2h0LmRhZW1vbi5pbXBsLlBhc3NFeGVjdXRvclNlcnZpY2UkU2NoZWR1bGVkUGFzcy5kb1J1bihQYXNzRXhlY3V0b3JTZXJ2aWNlLmphdmE6MzQwKQorCWF0IGNvbS5pbnRlbGxpai5jb2RlSW5zaWdodC5kYWVtb24uaW1wbC5QYXNzRXhlY3V0b3JTZXJ2aWNlJFNjaGVkdWxlZFBhc3MucnVuKFBhc3NFeGVjdXRvclNlcnZpY2UuamF2YTozMTYpCisJYXQgY29tLmludGVsbGlqLmNvbmN1cnJlbmN5LkpvYkxhdW5jaGVyJDMuY2FsbChKb2JVdGlsLmphdmE6MTM0KQorCWF0IGNvbS5pbnRlbGxpai5jb25jdXJyZW5jeS5Kb2JMYXVuY2hlciQzLmNhbGwoSm9iVXRpbC5qYXZhOjEzMSkKKwlhdCBqYXZhLnV0aWwuY29uY3VycmVudC5GdXR1cmVUYXNrJFN5bmMuaW5uZXJSdW4oRnV0dXJlVGFzay5qYXZhOjMwMykKKwlhdCBqYXZhLnV0aWwuY29uY3VycmVudC5GdXR1cmVUYXNrLnJ1bihGdXR1cmVUYXNrLmphdmE6MTM4KQorCWF0IGNvbS5pbnRlbGxpai5jb25jdXJyZW5jeS5Qcmlvcml0aXplZEZ1dHVyZVRhc2suYWNjZXNzJDEwMShQcmlvcml0aXplZEZ1dHVyZVRhc2suamF2YTozMSkKKwlhdCBjb20uaW50ZWxsaWouY29uY3VycmVuY3kuUHJpb3JpdGl6ZWRGdXR1cmVUYXNrJDEucnVuKFByaW9yaXRpemVkRnV0dXJlVGFzay5qYXZhOjcwKQorCWF0IGNvbS5pbnRlbGxpai5jb25jdXJyZW5jeS5Qcmlvcml0aXplZEZ1dHVyZVRhc2sucnVuKFByaW9yaXRpemVkRnV0dXJlVGFzay5qYXZhOjExMykKKwlhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IkV29ya2VyLnJ1blRhc2soVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6ODg2KQorCWF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvciRXb3JrZXIucnVuKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjkwOCkKKwlhdCBqYXZhLmxhbmcuVGhyZWFkLnJ1bihUaHJlYWQuamF2YTo2ODApCisKKyAgIExvY2tlZCBvd25hYmxlIHN5bmNocm9uaXplcnM6CisJLSA8N2NhNmJmNTE4PiAoYSBqYXZhLnV0aWwuY29uY3VycmVudC5sb2Nrcy5SZWVudHJhbnRMb2NrJE5vbmZhaXJTeW5jKQorCisiUmVmQ291bnRpbmdTdG9yYWdlIHdyaXRlIGNvbnRlbnQgaGVscGVyIiBwcmlvPTQgdGlkPTExNTcwZjAwMCBuaWQ9MHgxMWE0MzQwMDAgd2FpdGluZyBvbiBjb25kaXRpb24gWzExYTQzMzAwMF0KKyAgIGphdmEubGFuZy5UaHJlYWQuU3RhdGU6IFdBSVRJTkcgKHBhcmtpbmcpCisJYXQgc3VuLm1pc2MuVW5zYWZlLnBhcmsoTmF0aXZlIE1ldGhvZCkKKwktIHBhcmtpbmcgdG8gd2FpdCBmb3IgIDw3YzhmZGRkYzA+IChhIGphdmEudXRpbC5jb25jdXJyZW50LmxvY2tzLkFic3RyYWN0UXVldWVkU3luY2hyb25pemVyJENvbmRpdGlvbk9iamVjdCkKKwlhdCBqYXZhLnV0aWwuY29uY3VycmVudC5sb2Nrcy5Mb2NrU3VwcG9ydC5wYXJrKExvY2tTdXBwb3J0LmphdmE6MTU4KQorCWF0IGphdmEudXRpbC5jb25jdXJyZW50LmxvY2tzLkFic3RyYWN0UXVldWVkU3luY2hyb25pemVyJENvbmRpdGlvbk9iamVjdC5hd2FpdChBYnN0cmFjdFF1ZXVlZFN5bmNocm9uaXplci5qYXZhOjE5ODcpCisJYXQgamF2YS51dGlsLmNvbmN1cnJlbnQuTGlua2VkQmxvY2tpbmdRdWV1ZS50YWtlKExpbmtlZEJsb2NraW5nUXVldWUuamF2YTozOTkpCisJYXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yLmdldFRhc2soVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6OTQ3KQorCWF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvciRXb3JrZXIucnVuKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjkwNykKKwlhdCBqYXZhLmxhbmcuVGhyZWFkLnJ1bihUaHJlYWQuamF2YTo2ODApCisKKyAgIExvY2tlZCBvd25hYmxlIHN5bmNocm9uaXplcnM6CisJLSBOb25lCisKKyJBcHBsaWNhdGlvbkltcGwgcG9vbGVkIHRocmVhZCA4IiBwcmlvPTQgdGlkPTEwMzY3ZTgwMCBuaWQ9MHgxMThiNDUwMDAgd2FpdGluZyBvbiBjb25kaXRpb24gWzExOGI0NDAwMF0KKyAgIGphdmEubGFuZy5UaHJlYWQuU3RhdGU6IFRJTUVEX1dBSVRJTkcgKHNsZWVwaW5nKQorCWF0IGphdmEubGFuZy5UaHJlYWQuc2xlZXAoTmF0aXZlIE1ldGhvZCkKKwlhdCBjb20uaW50ZWxsaWoudXRpbC5pby5PdXRwdXRSZWFkZXIuZG9SdW4oT3V0cHV0UmVhZGVyLmphdmE6NjUpCisJYXQgY29tLmludGVsbGlqLnV0aWwuaW8uT3V0cHV0UmVhZGVyLmFjY2VzcyQwMDAoT3V0cHV0UmVhZGVyLmphdmE6MjcpCisJYXQgY29tLmludGVsbGlqLnV0aWwuaW8uT3V0cHV0UmVhZGVyJDEucnVuKE91dHB1dFJlYWRlci5qYXZhOjQ0KQorCWF0IGNvbS5pbnRlbGxpai5vcGVuYXBpLmFwcGxpY2F0aW9uLmltcGwuQXBwbGljYXRpb25JbXBsJDYucnVuKEFwcGxpY2F0aW9uSW1wbC5qYXZhOjQyMSkKKwlhdCBqYXZhLnV0aWwuY29uY3VycmVudC5FeGVjdXRvcnMkUnVubmFibGVBZGFwdGVyLmNhbGwoRXhlY3V0b3JzLmphdmE6NDQxKQorCWF0IGphdmEudXRpbC5jb25jdXJyZW50LkZ1dHVyZVRhc2skU3luYy5pbm5lclJ1bihGdXR1cmVUYXNrLmphdmE6MzAzKQorCWF0IGphdmEudXRpbC5jb25jdXJyZW50LkZ1dHVyZVRhc2sucnVuKEZ1dHVyZVRhc2suamF2YToxMzgpCisJYXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yJFdvcmtlci5ydW5UYXNrKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjg4NikKKwlhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IkV29ya2VyLnJ1bihUaHJlYWRQb29sRXhlY3V0b3IuamF2YTo5MDgpCisJYXQgamF2YS5sYW5nLlRocmVhZC5ydW4oVGhyZWFkLmphdmE6NjgwKQorCWF0IGNvbS5pbnRlbGxpai5vcGVuYXBpLmFwcGxpY2F0aW9uLmltcGwuQXBwbGljYXRpb25JbXBsJDEkMS5ydW4oQXBwbGljYXRpb25JbXBsLmphdmE6MTM3KQorCisgICBMb2NrZWQgb3duYWJsZSBzeW5jaHJvbml6ZXJzOgorCS0gPDdjOWI1YzE1MD4gKGEgamF2YS51dGlsLmNvbmN1cnJlbnQubG9ja3MuUmVlbnRyYW50TG9jayROb25mYWlyU3luYykKKworIkFwcGxpY2F0aW9uSW1wbCBwb29sZWQgdGhyZWFkIDciIHByaW89NCB0aWQ9MTE0NWJiODAwIG5pZD0weDExOGE0MjAwMCB3YWl0aW5nIG9uIGNvbmRpdGlvbiBbMTE4YTQxMDAwXQorICAgamF2YS5sYW5nLlRocmVhZC5TdGF0ZTogVElNRURfV0FJVElORyAocGFya2luZykKKwlhdCBzdW4ubWlzYy5VbnNhZmUucGFyayhOYXRpdmUgTWV0aG9kKQorCS0gcGFya2luZyB0byB3YWl0IGZvciAgPDdjOTRkYzdkMD4gKGEgamF2YS51dGlsLmNvbmN1cnJlbnQuU3luY2hyb25vdXNRdWV1ZSRUcmFuc2ZlclN0YWNrKQorCWF0IGphdmEudXRpbC5jb25jdXJyZW50LmxvY2tzLkxvY2tTdXBwb3J0LnBhcmtOYW5vcyhMb2NrU3VwcG9ydC5qYXZhOjE5OCkKKwlhdCBqYXZhLnV0aWwuY29uY3VycmVudC5TeW5jaHJvbm91c1F1ZXVlJFRyYW5zZmVyU3RhY2suYXdhaXRGdWxmaWxsKFN5bmNocm9ub3VzUXVldWUuamF2YTo0MjQpCisJYXQgamF2YS51dGlsLmNvbmN1cnJlbnQuU3luY2hyb25vdXNRdWV1ZSRUcmFuc2ZlclN0YWNrLnRyYW5zZmVyKFN5bmNocm9ub3VzUXVldWUuamF2YTozMjMpCisJYXQgamF2YS51dGlsLmNvbmN1cnJlbnQuU3luY2hyb25vdXNRdWV1ZS5wb2xsKFN5bmNocm9ub3VzUXVldWUuamF2YTo4NzQpCisJYXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yLmdldFRhc2soVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6OTQ1KQorCWF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvciRXb3JrZXIucnVuKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjkwNykKKwlhdCBqYXZhLmxhbmcuVGhyZWFkLnJ1bihUaHJlYWQuamF2YTo2ODApCisJYXQgY29tLmludGVsbGlqLm9wZW5hcGkuYXBwbGljYXRpb24uaW1wbC5BcHBsaWNhdGlvbkltcGwkMSQxLnJ1bihBcHBsaWNhdGlvbkltcGwuamF2YToxMzcpCisKKyAgIExvY2tlZCBvd25hYmxlIHN5bmNocm9uaXplcnM6CisJLSBOb25lCisKKyJBcHBsaWNhdGlvbkltcGwgcG9vbGVkIHRocmVhZCA2IiBwcmlvPTQgdGlkPTExNDExMjgwMCBuaWQ9MHgxMTg5M2YwMDAgd2FpdGluZyBvbiBjb25kaXRpb24gWzExODkzZTAwMF0KKyAgIGphdmEubGFuZy5UaHJlYWQuU3RhdGU6IFRJTUVEX1dBSVRJTkcgKHNsZWVwaW5nKQorCWF0IGphdmEubGFuZy5UaHJlYWQuc2xlZXAoTmF0aXZlIE1ldGhvZCkKKwlhdCBjb20uaW50ZWxsaWoudXRpbC5pby5PdXRwdXRSZWFkZXIuZG9SdW4oT3V0cHV0UmVhZGVyLmphdmE6NjUpCisJYXQgY29tLmludGVsbGlqLnV0aWwuaW8uT3V0cHV0UmVhZGVyLmFjY2VzcyQwMDAoT3V0cHV0UmVhZGVyLmphdmE6MjcpCisJYXQgY29tLmludGVsbGlqLnV0aWwuaW8uT3V0cHV0UmVhZGVyJDEucnVuKE91dHB1dFJlYWRlci5qYXZhOjQ0KQorCWF0IGNvbS5pbnRlbGxpai5vcGVuYXBpLmFwcGxpY2F0aW9uLmltcGwuQXBwbGljYXRpb25JbXBsJDYucnVuKEFwcGxpY2F0aW9uSW1wbC5qYXZhOjQyMSkKKwlhdCBqYXZhLnV0aWwuY29uY3VycmVudC5FeGVjdXRvcnMkUnVubmFibGVBZGFwdGVyLmNhbGwoRXhlY3V0b3JzLmphdmE6NDQxKQorCWF0IGphdmEudXRpbC5jb25jdXJyZW50LkZ1dHVyZVRhc2skU3luYy5pbm5lclJ1bihGdXR1cmVUYXNrLmphdmE6MzAzKQorCWF0IGphdmEudXRpbC5jb25jdXJyZW50LkZ1dHVyZVRhc2sucnVuKEZ1dHVyZVRhc2suamF2YToxMzgpCisJYXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yJFdvcmtlci5ydW5UYXNrKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjg4NikKKwlhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IkV29ya2VyLnJ1bihUaHJlYWRQb29sRXhlY3V0b3IuamF2YTo5MDgpCisJYXQgamF2YS5sYW5nLlRocmVhZC5ydW4oVGhyZWFkLmphdmE6NjgwKQorCWF0IGNvbS5pbnRlbGxpai5vcGVuYXBpLmFwcGxpY2F0aW9uLmltcGwuQXBwbGljYXRpb25JbXBsJDEkMS5ydW4oQXBwbGljYXRpb25JbXBsLmphdmE6MTM3KQorCisgICBMb2NrZWQgb3duYWJsZSBzeW5jaHJvbml6ZXJzOgorCS0gPDdjOWI1YmJmOD4gKGEgamF2YS51dGlsLmNvbmN1cnJlbnQubG9ja3MuUmVlbnRyYW50TG9jayROb25mYWlyU3luYykKKworIkFwcGxpY2F0aW9uSW1wbCBwb29sZWQgdGhyZWFkIDUiIHByaW89NCB0aWQ9MTAzMzQ2MDAwIG5pZD0weDExNzY4OTAwMCB3YWl0aW5nIG9uIGNvbmRpdGlvbiBbMTE3Njg4MDAwXQorICAgamF2YS5sYW5nLlRocmVhZC5TdGF0ZTogVElNRURfV0FJVElORyAocGFya2luZykKKwlhdCBzdW4ubWlzYy5VbnNhZmUucGFyayhOYXRpdmUgTWV0aG9kKQorCS0gcGFya2luZyB0byB3YWl0IGZvciAgPDdjOTRkYzdkMD4gKGEgamF2YS51dGlsLmNvbmN1cnJlbnQuU3luY2hyb25vdXNRdWV1ZSRUcmFuc2ZlclN0YWNrKQorCWF0IGphdmEudXRpbC5jb25jdXJyZW50LmxvY2tzLkxvY2tTdXBwb3J0LnBhcmtOYW5vcyhMb2NrU3VwcG9ydC5qYXZhOjE5OCkKKwlhdCBqYXZhLnV0aWwuY29uY3VycmVudC5TeW5jaHJvbm91c1F1ZXVlJFRyYW5zZmVyU3RhY2suYXdhaXRGdWxmaWxsKFN5bmNocm9ub3VzUXVldWUuamF2YTo0MjQpCisJYXQgamF2YS51dGlsLmNvbmN1cnJlbnQuU3luY2hyb25vdXNRdWV1ZSRUcmFuc2ZlclN0YWNrLnRyYW5zZmVyKFN5bmNocm9ub3VzUXVldWUuamF2YTozMjMpCisJYXQgamF2YS51dGlsLmNvbmN1cnJlbnQuU3luY2hyb25vdXNRdWV1ZS5wb2xsKFN5bmNocm9ub3VzUXVldWUuamF2YTo4NzQpCisJYXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yLmdldFRhc2soVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6OTQ1KQorCWF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvciRXb3JrZXIucnVuKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjkwNykKKwlhdCBqYXZhLmxhbmcuVGhyZWFkLnJ1bihUaHJlYWQuamF2YTo2ODApCisJYXQgY29tLmludGVsbGlqLm9wZW5hcGkuYXBwbGljYXRpb24uaW1wbC5BcHBsaWNhdGlvbkltcGwkMSQxLnJ1bihBcHBsaWNhdGlvbkltcGwuamF2YToxMzcpCisKKyAgIExvY2tlZCBvd25hYmxlIHN5bmNocm9uaXplcnM6CisJLSBOb25lCisKKyJBcHBsaWNhdGlvbkltcGwgcG9vbGVkIHRocmVhZCA0IiBwcmlvPTQgdGlkPTExNDY5ODgwMCBuaWQ9MHgxMTc1ODYwMDAgaW4gT2JqZWN0LndhaXQoKSBbMTE3NTg1MDAwXQorICAgamF2YS5sYW5nLlRocmVhZC5TdGF0ZTogV0FJVElORyAob24gb2JqZWN0IG1vbml0b3IpCisJYXQgamF2YS5sYW5nLk9iamVjdC53YWl0KE5hdGl2ZSBNZXRob2QpCisJLSB3YWl0aW5nIG9uIDw3Y2UwMmY0YjA+IChhIGphdmEubGFuZy5VTklYUHJvY2VzcykKKwlhdCBqYXZhLmxhbmcuT2JqZWN0LndhaXQoT2JqZWN0LmphdmE6NDg1KQorCWF0IGphdmEubGFuZy5VTklYUHJvY2Vzcy53YWl0Rm9yKFVOSVhQcm9jZXNzLmphdmE6MTE1KQorCS0gbG9ja2VkIDw3Y2UwMmY0YjA+IChhIGphdmEubGFuZy5VTklYUHJvY2VzcykKKwlhdCBjb20uaW50ZWxsaWouZXhlY3V0aW9uLnByb2Nlc3MuQmFzZU9TUHJvY2Vzc0hhbmRsZXIkUHJvY2Vzc1dhaXRGb3IkMS5ydW4oQmFzZU9TUHJvY2Vzc0hhbmRsZXIuamF2YToyMjEpCisJYXQgY29tLmludGVsbGlqLm9wZW5hcGkuYXBwbGljYXRpb24uaW1wbC5BcHBsaWNhdGlvbkltcGwkNi5ydW4oQXBwbGljYXRpb25JbXBsLmphdmE6NDIxKQorCWF0IGphdmEudXRpbC5jb25jdXJyZW50LkV4ZWN1dG9ycyRSdW5uYWJsZUFkYXB0ZXIuY2FsbChFeGVjdXRvcnMuamF2YTo0NDEpCisJYXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRnV0dXJlVGFzayRTeW5jLmlubmVyUnVuKEZ1dHVyZVRhc2suamF2YTozMDMpCisJYXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRnV0dXJlVGFzay5ydW4oRnV0dXJlVGFzay5qYXZhOjEzOCkKKwlhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IkV29ya2VyLnJ1blRhc2soVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6ODg2KQorCWF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvciRXb3JrZXIucnVuKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjkwOCkKKwlhdCBqYXZhLmxhbmcuVGhyZWFkLnJ1bihUaHJlYWQuamF2YTo2ODApCisJYXQgY29tLmludGVsbGlqLm9wZW5hcGkuYXBwbGljYXRpb24uaW1wbC5BcHBsaWNhdGlvbkltcGwkMSQxLnJ1bihBcHBsaWNhdGlvbkltcGwuamF2YToxMzcpCisKKyAgIExvY2tlZCBvd25hYmxlIHN5bmNocm9uaXplcnM6CisJLSA8N2M5YjViN2Q4PiAoYSBqYXZhLnV0aWwuY29uY3VycmVudC5sb2Nrcy5SZWVudHJhbnRMb2NrJE5vbmZhaXJTeW5jKQorCisiQXBwbGljYXRpb25JbXBsIHBvb2xlZCB0aHJlYWQgMyIgcHJpbz00IHRpZD0xMDMyYmIwMDAgbmlkPTB4MTE3NDgzMDAwIGluIE9iamVjdC53YWl0KCkgWzExNzQ4MjAwMF0KKyAgIGphdmEubGFuZy5UaHJlYWQuU3RhdGU6IFdBSVRJTkcgKG9uIG9iamVjdCBtb25pdG9yKQorCWF0IGphdmEubGFuZy5PYmplY3Qud2FpdChOYXRpdmUgTWV0aG9kKQorCS0gd2FpdGluZyBvbiA8N2M5NDk5MmMwPiAoYSBjb20uaW50ZWxsaWoudXRpbC5jb25jdXJyZW5jeS5Xcml0ZXJQcmVmZXJlbmNlUmVhZFdyaXRlTG9jayRSZWFkZXJMb2NrKQorCWF0IGphdmEubGFuZy5PYmplY3Qud2FpdChPYmplY3QuamF2YTo0ODUpCisJYXQgY29tLmludGVsbGlqLnV0aWwuY29uY3VycmVuY3kuV3JpdGVyUHJlZmVyZW5jZVJlYWRXcml0ZUxvY2skUmVhZGVyTG9jay5hY3F1aXJlKFdyaXRlclByZWZlcmVuY2VSZWFkV3JpdGVMb2NrLmphdmE6MTYyKQorCS0gbG9ja2VkIDw3Yzk0OTkyYzA+IChhIGNvbS5pbnRlbGxpai51dGlsLmNvbmN1cnJlbmN5LldyaXRlclByZWZlcmVuY2VSZWFkV3JpdGVMb2NrJFJlYWRlckxvY2spCisJYXQgY29tLmludGVsbGlqLm9wZW5hcGkuYXBwbGljYXRpb24uaW1wbC5BcHBsaWNhdGlvbkltcGwkUmVhZEFjY2Vzc1Rva2VuLjxpbml0PihBcHBsaWNhdGlvbkltcGwuamF2YToxMTYxKQorCWF0IGNvbS5pbnRlbGxpai5vcGVuYXBpLmFwcGxpY2F0aW9uLmltcGwuQXBwbGljYXRpb25JbXBsLmFjcXVpcmVSZWFkQWN0aW9uTG9ja0ltcGwoQXBwbGljYXRpb25JbXBsLmphdmE6MTA4NykKKwlhdCBjb20uaW50ZWxsaWoub3BlbmFwaS5hcHBsaWNhdGlvbi5pbXBsLkFwcGxpY2F0aW9uSW1wbC5ydW5SZWFkQWN0aW9uKEFwcGxpY2F0aW9uSW1wbC5qYXZhOjg3MCkKKwlhdCBjb20uaW50ZWxsaWoub3BlbmFwaS5jb21wb25lbnRzLmltcGwuU2VydmljZU1hbmFnZXJJbXBsJE15Q29tcG9uZW50QWRhcHRlci5nZXRDb21wb25lbnRJbnN0YW5jZShTZXJ2aWNlTWFuYWdlckltcGwuamF2YToxMzkpCisJYXQgY29tLmludGVsbGlqLnV0aWwucGljby5EZWZhdWx0UGljb0NvbnRhaW5lci5nZXRMb2NhbEluc3RhbmNlKERlZmF1bHRQaWNvQ29udGFpbmVyLmphdmE6MjQyKQorCWF0IGNvbS5pbnRlbGxpai51dGlsLnBpY28uRGVmYXVsdFBpY29Db250YWluZXIuZ2V0SW5zdGFuY2UoRGVmYXVsdFBpY29Db250YWluZXIuamF2YToyMjkpCisJYXQgY29tLmludGVsbGlqLnV0aWwucGljby5EZWZhdWx0UGljb0NvbnRhaW5lci5nZXRDb21wb25lbnRJbnN0YW5jZShEZWZhdWx0UGljb0NvbnRhaW5lci5qYXZhOjIxMSkKKwlhdCBjb20uaW50ZWxsaWouZmxleC51aURlc2lnbmVyLkRlc2lnbmVyQXBwbGljYXRpb25NYW5hZ2VyLmdldFNlcnZpY2UoRGVzaWduZXJBcHBsaWNhdGlvbk1hbmFnZXIuamF2YTo1NikKKwlhdCBjb20uaW50ZWxsaWouZmxleC51aURlc2lnbmVyLkNsaWVudC5nZXRJbnN0YW5jZShDbGllbnQuamF2YTo0MCkKKwlhdCBjb20uaW50ZWxsaWouZmxleC51aURlc2lnbmVyLmlvLk1lc3NhZ2VTb2NrZXRNYW5hZ2VyLnNldE91dChNZXNzYWdlU29ja2V0TWFuYWdlci5qYXZhOjIzKQorCWF0IGNvbS5pbnRlbGxpai5mbGV4LnVpRGVzaWduZXIuaW8uU29ja2V0TWFuYWdlci5ydW4oU29ja2V0TWFuYWdlci5qYXZhOjMyKQorCWF0IGNvbS5pbnRlbGxpai5mbGV4LnVpRGVzaWduZXIuaW8uTWVzc2FnZVNvY2tldE1hbmFnZXIucnVuKE1lc3NhZ2VTb2NrZXRNYW5hZ2VyLmphdmE6MTIpCisJYXQgY29tLmludGVsbGlqLm9wZW5hcGkuYXBwbGljYXRpb24uaW1wbC5BcHBsaWNhdGlvbkltcGwkNi5ydW4oQXBwbGljYXRpb25JbXBsLmphdmE6NDIxKQorCWF0IGphdmEudXRpbC5jb25jdXJyZW50LkV4ZWN1dG9ycyRSdW5uYWJsZUFkYXB0ZXIuY2FsbChFeGVjdXRvcnMuamF2YTo0NDEpCisJYXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRnV0dXJlVGFzayRTeW5jLmlubmVyUnVuKEZ1dHVyZVRhc2suamF2YTozMDMpCisJYXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRnV0dXJlVGFzay5ydW4oRnV0dXJlVGFzay5qYXZhOjEzOCkKKwlhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IkV29ya2VyLnJ1blRhc2soVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6ODg2KQorCWF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvciRXb3JrZXIucnVuKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjkwOCkKKwlhdCBqYXZhLmxhbmcuVGhyZWFkLnJ1bihUaHJlYWQuamF2YTo2ODApCisJYXQgY29tLmludGVsbGlqLm9wZW5hcGkuYXBwbGljYXRpb24uaW1wbC5BcHBsaWNhdGlvbkltcGwkMSQxLnJ1bihBcHBsaWNhdGlvbkltcGwuamF2YToxMzcpCisKKyAgIExvY2tlZCBvd25hYmxlIHN5bmNocm9uaXplcnM6CisJLSA8N2M5YjViNWM4PiAoYSBqYXZhLnV0aWwuY29uY3VycmVudC5sb2Nrcy5SZWVudHJhbnRMb2NrJE5vbmZhaXJTeW5jKQorCisiRlMgU3luY2hyb25pemVyIiBkYWVtb24gcHJpbz01IHRpZD0xMDMyYjQwMDAgbmlkPTB4MTE3MzgwMDAwIHdhaXRpbmcgb24gY29uZGl0aW9uIFsxMTczN2YwMDBdCisgICBqYXZhLmxhbmcuVGhyZWFkLlN0YXRlOiBXQUlUSU5HIChwYXJraW5nKQorCWF0IHN1bi5taXNjLlVuc2FmZS5wYXJrKE5hdGl2ZSBNZXRob2QpCisJLSBwYXJraW5nIHRvIHdhaXQgZm9yICA8N2M4ZmY3Nzg4PiAoYSBqYXZhLnV0aWwuY29uY3VycmVudC5sb2Nrcy5BYnN0cmFjdFF1ZXVlZFN5bmNocm9uaXplciRDb25kaXRpb25PYmplY3QpCisJYXQgamF2YS51dGlsLmNvbmN1cnJlbnQubG9ja3MuTG9ja1N1cHBvcnQucGFyayhMb2NrU3VwcG9ydC5qYXZhOjE1OCkKKwlhdCBqYXZhLnV0aWwuY29uY3VycmVudC5sb2Nrcy5BYnN0cmFjdFF1ZXVlZFN5bmNocm9uaXplciRDb25kaXRpb25PYmplY3QuYXdhaXQoQWJzdHJhY3RRdWV1ZWRTeW5jaHJvbml6ZXIuamF2YToxOTg3KQorCWF0IGphdmEudXRpbC5jb25jdXJyZW50LkxpbmtlZEJsb2NraW5nUXVldWUudGFrZShMaW5rZWRCbG9ja2luZ1F1ZXVlLmphdmE6Mzk5KQorCWF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvci5nZXRUYXNrKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjk0NykKKwlhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IkV29ya2VyLnJ1bihUaHJlYWRQb29sRXhlY3V0b3IuamF2YTo5MDcpCisJYXQgamF2YS5sYW5nLlRocmVhZC5ydW4oVGhyZWFkLmphdmE6NjgwKQorCisgICBMb2NrZWQgb3duYWJsZSBzeW5jaHJvbml6ZXJzOgorCS0gTm9uZQorCisiQW5pbWF0aW9ucyIgZGFlbW9uIHByaW89NSB0aWQ9MTE0NjI2MDAwIG5pZD0weDExNmFhMDAwMCBydW5uYWJsZSBbMTE2YTlmMDAwXQorICAgamF2YS5sYW5nLlRocmVhZC5TdGF0ZTogVElNRURfV0FJVElORyAocGFya2luZykKKwlhdCBzdW4ubWlzYy5VbnNhZmUucGFyayhOYXRpdmUgTWV0aG9kKQorCS0gcGFya2luZyB0byB3YWl0IGZvciAgPDdjOTc5NjY5OD4gKGEgamF2YS51dGlsLmNvbmN1cnJlbnQubG9ja3MuQWJzdHJhY3RRdWV1ZWRTeW5jaHJvbml6ZXIkQ29uZGl0aW9uT2JqZWN0KQorCWF0IGphdmEudXRpbC5jb25jdXJyZW50LmxvY2tzLkxvY2tTdXBwb3J0LnBhcmtOYW5vcyhMb2NrU3VwcG9ydC5qYXZhOjE5OCkKKwlhdCBqYXZhLnV0aWwuY29uY3VycmVudC5sb2Nrcy5BYnN0cmFjdFF1ZXVlZFN5bmNocm9uaXplciRDb25kaXRpb25PYmplY3QuYXdhaXROYW5vcyhBYnN0cmFjdFF1ZXVlZFN5bmNocm9uaXplci5qYXZhOjIwMjUpCisJYXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRGVsYXlRdWV1ZS50YWtlKERlbGF5UXVldWUuamF2YToxNjQpCisJYXQgamF2YS51dGlsLmNvbmN1cnJlbnQuU2NoZWR1bGVkVGhyZWFkUG9vbEV4ZWN1dG9yJERlbGF5ZWRXb3JrUXVldWUudGFrZShTY2hlZHVsZWRUaHJlYWRQb29sRXhlY3V0b3IuamF2YTo2MDkpCisJYXQgamF2YS51dGlsLmNvbmN1cnJlbnQuU2NoZWR1bGVkVGhyZWFkUG9vbEV4ZWN1dG9yJERlbGF5ZWRXb3JrUXVldWUudGFrZShTY2hlZHVsZWRUaHJlYWRQb29sRXhlY3V0b3IuamF2YTo2MDIpCisJYXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yLmdldFRhc2soVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6OTQ3KQorCWF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvciRXb3JrZXIucnVuKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjkwNykKKwlhdCBqYXZhLmxhbmcuVGhyZWFkLnJ1bihUaHJlYWQuamF2YTo2ODApCisKKyAgIExvY2tlZCBvd25hYmxlIHN5bmNocm9uaXplcnM6CisJLSBOb25lCisKKyJUaW1lclF1ZXVlIiBkYWVtb24gcHJpbz01IHRpZD0xMTQ1YjMwMDAgbmlkPTB4MTE2OTlkMDAwIGluIE9iamVjdC53YWl0KCkgWzExNjk5YzAwMF0KKyAgIGphdmEubGFuZy5UaHJlYWQuU3RhdGU6IFRJTUVEX1dBSVRJTkcgKG9uIG9iamVjdCBtb25pdG9yKQorCWF0IGphdmEubGFuZy5PYmplY3Qud2FpdChOYXRpdmUgTWV0aG9kKQorCS0gd2FpdGluZyBvbiA8N2M5OGI4ZmQwPiAoYSBqYXZheC5zd2luZy5UaW1lclF1ZXVlKQorCWF0IGphdmF4LnN3aW5nLlRpbWVyUXVldWUucnVuKFRpbWVyUXVldWUuamF2YToyMzIpCisJLSBsb2NrZWQgPDdjOThiOGZkMD4gKGEgamF2YXguc3dpbmcuVGltZXJRdWV1ZSkKKwlhdCBqYXZhLmxhbmcuVGhyZWFkLnJ1bihUaHJlYWQuamF2YTo2ODApCisKKyAgIExvY2tlZCBvd25hYmxlIHN5bmNocm9uaXplcnM6CisJLSBOb25lCisKKyJBbGFybSBwb29sKHNoYXJlZCkiIGRhZW1vbiBwcmlvPTMgdGlkPTExNDI2ZDgwMCBuaWQ9MHgxMTY4OWEwMDAgaW4gT2JqZWN0LndhaXQoKSBbMTE2ODk5MDAwXQorICAgamF2YS5sYW5nLlRocmVhZC5TdGF0ZTogV0FJVElORyAob24gb2JqZWN0IG1vbml0b3IpCisJYXQgamF2YS5sYW5nLk9iamVjdC53YWl0KE5hdGl2ZSBNZXRob2QpCisJLSB3YWl0aW5nIG9uIDw3Yjg1ZDU2ZDg+IChhIGphdmEuYXd0LkV2ZW50UXVldWUkMUFXVEludm9jYXRpb25Mb2NrKQorCWF0IGphdmEubGFuZy5PYmplY3Qud2FpdChPYmplY3QuamF2YTo0ODUpCisJYXQgamF2YS5hd3QuRXZlbnRRdWV1ZS5pbnZva2VBbmRXYWl0KEV2ZW50UXVldWUuamF2YToxMDI5KQorCS0gbG9ja2VkIDw3Yjg1ZDU2ZDg+IChhIGphdmEuYXd0LkV2ZW50UXVldWUkMUFXVEludm9jYXRpb25Mb2NrKQorCWF0IGphdmF4LnN3aW5nLlN3aW5nVXRpbGl0aWVzLmludm9rZUFuZFdhaXQoU3dpbmdVdGlsaXRpZXMuamF2YToxMzIwKQorCWF0IGNvbS5pbnRlbGxpai51dGlsLkFsYXJtJFJlcXVlc3QkMS5ydW4oQWxhcm0uamF2YToyMjIpCisJYXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRXhlY3V0b3JzJFJ1bm5hYmxlQWRhcHRlci5jYWxsKEV4ZWN1dG9ycy5qYXZhOjQ0MSkKKwlhdCBqYXZhLnV0aWwuY29uY3VycmVudC5GdXR1cmVUYXNrJFN5bmMuaW5uZXJSdW4oRnV0dXJlVGFzay5qYXZhOjMwMykKKwlhdCBqYXZhLnV0aWwuY29uY3VycmVudC5GdXR1cmVUYXNrLnJ1bihGdXR1cmVUYXNrLmphdmE6MTM4KQorCWF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvciRXb3JrZXIucnVuVGFzayhUaHJlYWRQb29sRXhlY3V0b3IuamF2YTo4ODYpCisJYXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yJFdvcmtlci5ydW4oVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6OTA4KQorCWF0IGphdmEubGFuZy5UaHJlYWQucnVuKFRocmVhZC5qYXZhOjY4MCkKKworICAgTG9ja2VkIG93bmFibGUgc3luY2hyb25pemVyczoKKwktIDw3Yzk3YWFlYzA+IChhIGphdmEudXRpbC5jb25jdXJyZW50LmxvY2tzLlJlZW50cmFudExvY2skTm9uZmFpclN5bmMpCisKKyJMb3dNZW1vcnlXYXRjaGVyIiBkYWVtb24gcHJpbz00IHRpZD0xMDM3Yzg4MDAgbmlkPTB4MTE2MjhiMDAwIGluIE9iamVjdC53YWl0KCkgWzExNjI4YTAwMF0KKyAgIGphdmEubGFuZy5UaHJlYWQuU3RhdGU6IFdBSVRJTkcgKG9uIG9iamVjdCBtb25pdG9yKQorCWF0IGphdmEubGFuZy5PYmplY3Qud2FpdChOYXRpdmUgTWV0aG9kKQorCS0gd2FpdGluZyBvbiA8N2M5NmM5ZDI4PiAoYSBqYXZhLmxhbmcucmVmLlJlZmVyZW5jZVF1ZXVlJExvY2spCisJYXQgamF2YS5sYW5nLnJlZi5SZWZlcmVuY2VRdWV1ZS5yZW1vdmUoUmVmZXJlbmNlUXVldWUuamF2YToxMTgpCisJLSBsb2NrZWQgPDdjOTZjOWQyOD4gKGEgamF2YS5sYW5nLnJlZi5SZWZlcmVuY2VRdWV1ZSRMb2NrKQorCWF0IGphdmEubGFuZy5yZWYuUmVmZXJlbmNlUXVldWUucmVtb3ZlKFJlZmVyZW5jZVF1ZXVlLmphdmE6MTM0KQorCWF0IGNvbS5pbnRlbGxpai5vcGVuYXBpLnV0aWwuTG93TWVtb3J5V2F0Y2hlciQxLnJ1bihMb3dNZW1vcnlXYXRjaGVyLmphdmE6NjApCisKKyAgIExvY2tlZCBvd25hYmxlIHN5bmNocm9uaXplcnM6CisJLSBOb25lCisKKyJGb2N1c01hbmFnZXIgdGltZXIiIGRhZW1vbiBwcmlvPTIgdGlkPTExNDE1MjgwMCBuaWQ9MHgxMTVmZTYwMDAgaW4gT2JqZWN0LndhaXQoKSBbMTE1ZmU1MDAwXQorICAgamF2YS5sYW5nLlRocmVhZC5TdGF0ZTogV0FJVElORyAob24gb2JqZWN0IG1vbml0b3IpCisJYXQgamF2YS5sYW5nLk9iamVjdC53YWl0KE5hdGl2ZSBNZXRob2QpCisJLSB3YWl0aW5nIG9uIDw3Yzk2YjQyMjg+IChhIGphdmEudXRpbC5UYXNrUXVldWUpCisJYXQgamF2YS5sYW5nLk9iamVjdC53YWl0KE9iamVjdC5qYXZhOjQ4NSkKKwlhdCBqYXZhLnV0aWwuVGltZXJUaHJlYWQubWFpbkxvb3AoVGltZXIuamF2YTo0ODMpCisJLSBsb2NrZWQgPDdjOTZiNDIyOD4gKGEgamF2YS51dGlsLlRhc2tRdWV1ZSkKKwlhdCBqYXZhLnV0aWwuVGltZXJUaHJlYWQucnVuKFRpbWVyLmphdmE6NDYyKQorCisgICBMb2NrZWQgb3duYWJsZSBzeW5jaHJvbml6ZXJzOgorCS0gTm9uZQorCisiU2hhcmVkIFNpbXBsZVRpbWVyIiBkYWVtb24gcHJpbz0yIHRpZD0xMDM2OTQ4MDAgbmlkPTB4MTE1ZWUzMDAwIGluIE9iamVjdC53YWl0KCkgWzExNWVlMjAwMF0KKyAgIGphdmEubGFuZy5UaHJlYWQuU3RhdGU6IFdBSVRJTkcgKG9uIG9iamVjdCBtb25pdG9yKQorCWF0IGphdmEubGFuZy5PYmplY3Qud2FpdChOYXRpdmUgTWV0aG9kKQorCS0gd2FpdGluZyBvbiA8N2M5NmIzZDQ4PiAoYSBqYXZhLnV0aWwuVGFza1F1ZXVlKQorCWF0IGphdmEubGFuZy5PYmplY3Qud2FpdChPYmplY3QuamF2YTo0ODUpCisJYXQgamF2YS51dGlsLlRpbWVyVGhyZWFkLm1haW5Mb29wKFRpbWVyLmphdmE6NDgzKQorCS0gbG9ja2VkIDw3Yzk2YjNkNDg+IChhIGphdmEudXRpbC5UYXNrUXVldWUpCisJYXQgamF2YS51dGlsLlRpbWVyVGhyZWFkLnJ1bihUaW1lci5qYXZhOjQ2MikKKworICAgTG9ja2VkIG93bmFibGUgc3luY2hyb25pemVyczoKKwktIE5vbmUKKworIlhNTC1SUEMgV2VibGlzdGVuZXIiIHByaW89MyB0aWQ9MTAzNzg0ODAwIG5pZD0weDExNWRlMDAwMCBydW5uYWJsZSBbMTE1ZGRmMDAwXQorICAgamF2YS5sYW5nLlRocmVhZC5TdGF0ZTogUlVOTkFCTEUKKwlhdCBqYXZhLm5ldC5QbGFpblNvY2tldEltcGwuc29ja2V0QWNjZXB0KE5hdGl2ZSBNZXRob2QpCisJYXQgamF2YS5uZXQuUGxhaW5Tb2NrZXRJbXBsLmFjY2VwdChQbGFpblNvY2tldEltcGwuamF2YTozOTApCisJLSBsb2NrZWQgPDdjOTZhMGZhOD4gKGEgamF2YS5uZXQuU29ja3NTb2NrZXRJbXBsKQorCWF0IGphdmEubmV0LlNlcnZlclNvY2tldC5pbXBsQWNjZXB0KFNlcnZlclNvY2tldC5qYXZhOjQ1MykKKwlhdCBqYXZhLm5ldC5TZXJ2ZXJTb2NrZXQuYWNjZXB0KFNlcnZlclNvY2tldC5qYXZhOjQyMSkKKwlhdCBvcmcuYXBhY2hlLnhtbHJwYy5XZWJTZXJ2ZXIucnVuKFdlYlNlcnZlci5qYXZhOjQ1MykKKwlhdCBqYXZhLmxhbmcuVGhyZWFkLnJ1bihUaHJlYWQuamF2YTo2ODApCisKKyAgIExvY2tlZCBvd25hYmxlIHN5bmNocm9uaXplcnM6CisJLSBOb25lCisKKyJQZXJmb3JtYW5jZSB3YXRjaGVyIiBwcmlvPTEgdGlkPTEwMzcwYjAwMCBuaWQ9MHgxMTVjZGQwMDAgd2FpdGluZyBvbiBjb25kaXRpb24gWzExNWNkYzAwMF0KKyAgIGphdmEubGFuZy5UaHJlYWQuU3RhdGU6IFRJTUVEX1dBSVRJTkcgKHBhcmtpbmcpCisJYXQgc3VuLm1pc2MuVW5zYWZlLnBhcmsoTmF0aXZlIE1ldGhvZCkKKwktIHBhcmtpbmcgdG8gd2FpdCBmb3IgIDw3Yzk2OWU5MTA+IChhIGphdmEudXRpbC5jb25jdXJyZW50LlNlbWFwaG9yZSROb25mYWlyU3luYykKKwlhdCBqYXZhLnV0aWwuY29uY3VycmVudC5sb2Nrcy5Mb2NrU3VwcG9ydC5wYXJrTmFub3MoTG9ja1N1cHBvcnQuamF2YToxOTgpCisJYXQgamF2YS51dGlsLmNvbmN1cnJlbnQubG9ja3MuQWJzdHJhY3RRdWV1ZWRTeW5jaHJvbml6ZXIuZG9BY3F1aXJlU2hhcmVkTmFub3MoQWJzdHJhY3RRdWV1ZWRTeW5jaHJvbml6ZXIuamF2YToxMDExKQorCWF0IGphdmEudXRpbC5jb25jdXJyZW50LmxvY2tzLkFic3RyYWN0UXVldWVkU3luY2hyb25pemVyLnRyeUFjcXVpcmVTaGFyZWROYW5vcyhBYnN0cmFjdFF1ZXVlZFN5bmNocm9uaXplci5qYXZhOjEzMDMpCisJYXQgamF2YS51dGlsLmNvbmN1cnJlbnQuU2VtYXBob3JlLnRyeUFjcXVpcmUoU2VtYXBob3JlLmphdmE6MzgzKQorCWF0IGNvbS5pbnRlbGxpai5kaWFnbm9zdGljLlBlcmZvcm1hbmNlV2F0Y2hlci5jaGVja0VEVFJlc3BvbnNpdmVuZXNzKFBlcmZvcm1hbmNlV2F0Y2hlci5qYXZhOjE1NikKKwlhdCBjb20uaW50ZWxsaWouZGlhZ25vc3RpYy5QZXJmb3JtYW5jZVdhdGNoZXIuYWNjZXNzJDEwMChQZXJmb3JtYW5jZVdhdGNoZXIuamF2YTo0MCkKKwlhdCBjb20uaW50ZWxsaWouZGlhZ25vc3RpYy5QZXJmb3JtYW5jZVdhdGNoZXIkMi5ydW4oUGVyZm9ybWFuY2VXYXRjaGVyLmphdmE6MTExKQorCWF0IGphdmEubGFuZy5UaHJlYWQucnVuKFRocmVhZC5qYXZhOjY4MCkKKworICAgTG9ja2VkIG93bmFibGUgc3luY2hyb25pemVyczoKKwktIE5vbmUKKworIkRvY3VtZW50IGNvbW1pdCB0aHJlYWQiIHByaW89NiB0aWQ9MTE0MGE4ODAwIG5pZD0weDExNTkwMTAwMCBpbiBPYmplY3Qud2FpdCgpIFsxMTU5MDAwMDBdCisgICBqYXZhLmxhbmcuVGhyZWFkLlN0YXRlOiBXQUlUSU5HIChvbiBvYmplY3QgbW9uaXRvcikKKwlhdCBqYXZhLmxhbmcuT2JqZWN0LndhaXQoTmF0aXZlIE1ldGhvZCkKKwktIHdhaXRpbmcgb24gPDdjOTBiYzU5OD4gKGEgY29tLmludGVsbGlqLnV0aWwuY29udGFpbmVycy5RdWV1ZSkKKwlhdCBqYXZhLmxhbmcuT2JqZWN0LndhaXQoT2JqZWN0LmphdmE6NDg1KQorCWF0IGNvbS5pbnRlbGxpai5wc2kuaW1wbC5Eb2N1bWVudENvbW1pdFRocmVhZC5ydW4oRG9jdW1lbnRDb21taXRUaHJlYWQuamF2YToyNzUpCisJLSBsb2NrZWQgPDdjOTBiYzU5OD4gKGEgY29tLmludGVsbGlqLnV0aWwuY29udGFpbmVycy5RdWV1ZSkKKwlhdCBqYXZhLmxhbmcuVGhyZWFkLnJ1bihUaHJlYWQuamF2YTo2ODApCisKKyAgIExvY2tlZCBvd25hYmxlIHN5bmNocm9uaXplcnM6CisJLSBOb25lCisKKyJBcHBsaWNhdGlvbkltcGwgcG9vbGVkIHRocmVhZCAwIFtSZWFkQWNjZXNzVG9rZW5dIiBwcmlvPTQgdGlkPTEwMzY5MzgwMCBuaWQ9MHgxMTQ5MDEwMDAgd2FpdGluZyBmb3IgbW9uaXRvciBlbnRyeSBbMTE0OGZmMDAwXQorICAgamF2YS5sYW5nLlRocmVhZC5TdGF0ZTogQkxPQ0tFRCAob24gb2JqZWN0IG1vbml0b3IpCisJYXQgY29tLmludGVsbGlqLnV0aWwuaW5kZXhpbmcuQ2hhbmdlVHJhY2tpbmdWYWx1ZUNvbnRhaW5lci5nZXRNZXJnZWREYXRhKENoYW5nZVRyYWNraW5nVmFsdWVDb250YWluZXIuamF2YToxMjcpCisJLSB3YWl0aW5nIHRvIGxvY2sgPDdjOTczM2ZhMD4gKGEgY29tLmludGVsbGlqLnV0aWwuaW5kZXhpbmcuVmFsdWVDb250YWluZXJNYXApCisJYXQgY29tLmludGVsbGlqLnV0aWwuaW5kZXhpbmcuQ2hhbmdlVHJhY2tpbmdWYWx1ZUNvbnRhaW5lci5nZXRWYWx1ZUl0ZXJhdG9yKENoYW5nZVRyYWNraW5nVmFsdWVDb250YWluZXIuamF2YTo5OCkKKwlhdCBjb20uaW50ZWxsaWoudXRpbC5pbmRleGluZy5GaWxlQmFzZWRJbmRleC5wcm9jZXNzVmFsdWVzSW1wbChGaWxlQmFzZWRJbmRleC5qYXZhOjg4NykKKwlhdCBjb20uaW50ZWxsaWoudXRpbC5pbmRleGluZy5GaWxlQmFzZWRJbmRleC5wcm9jZXNzVmFsdWVzKEZpbGVCYXNlZEluZGV4LmphdmE6ODYwKQorCWF0IGNvbS5pbnRlbGxpai5mbGV4LnVpRGVzaWduZXIubGlicmFyaWVzLkxpYnJhcnlTdHlsZUluZm9Db2xsZWN0b3IkMS5wcm9jZXNzKExpYnJhcnlTdHlsZUluZm9Db2xsZWN0b3IuamF2YTo0MikKKwlhdCBjb20uaW50ZWxsaWouZmxleC51aURlc2lnbmVyLmxpYnJhcmllcy5MaWJyYXJ5U3R5bGVJbmZvQ29sbGVjdG9yJDEucHJvY2VzcyhMaWJyYXJ5U3R5bGVJbmZvQ29sbGVjdG9yLmphdmE6MzkpCisJYXQgY29tLmludGVsbGlqLnV0aWwuaW5kZXhpbmcuTWVtb3J5SW5kZXhTdG9yYWdlJDEucHJvY2VzcyhNZW1vcnlJbmRleFN0b3JhZ2UuamF2YToxMTgpCisJYXQgY29tLmludGVsbGlqLnV0aWwuaW8uUGVyc2lzdGVudEVudW1lcmF0b3JCYXNlLml0ZXJhdGVEYXRhKFBlcnNpc3RlbnRFbnVtZXJhdG9yQmFzZS5qYXZhOjM3MykKKwktIGxvY2tlZCA8N2M4ZmQ0NTU4PiAoYSBjb20uaW50ZWxsaWoudXRpbC5pby5QYWdlZEZpbGVTdG9yYWdlJFN0b3JhZ2VMb2NrKQorCWF0IGNvbS5pbnRlbGxpai51dGlsLmlvLlBlcnNpc3RlbnRIYXNoTWFwLnByb2Nlc3NLZXlzKFBlcnNpc3RlbnRIYXNoTWFwLmphdmE6MzE4KQorCS0gbG9ja2VkIDw3Yzk3MzQwMDg+IChhIGNvbS5pbnRlbGxpai51dGlsLmlvLlBlcnNpc3RlbnRCVHJlZUVudW1lcmF0b3IpCisJYXQgY29tLmludGVsbGlqLnV0aWwuaW5kZXhpbmcuTWFwSW5kZXhTdG9yYWdlLnByb2Nlc3NLZXlzKE1hcEluZGV4U3RvcmFnZS5qYXZhOjE3MykKKwlhdCBjb20uaW50ZWxsaWoudXRpbC5pbmRleGluZy5NZW1vcnlJbmRleFN0b3JhZ2UucHJvY2Vzc0tleXMoTWVtb3J5SW5kZXhTdG9yYWdlLmphdmE6MTI2KQorCWF0IGNvbS5pbnRlbGxpai51dGlsLmluZGV4aW5nLk1hcFJlZHVjZUluZGV4LnByb2Nlc3NBbGxLZXlzKE1hcFJlZHVjZUluZGV4LmphdmE6MTY0KQorCWF0IGNvbS5pbnRlbGxpai51dGlsLmluZGV4aW5nLkZpbGVCYXNlZEluZGV4LnByb2Nlc3NBbGxLZXlzKEZpbGVCYXNlZEluZGV4LmphdmE6Njg4KQorCWF0IGNvbS5pbnRlbGxpai5mbGV4LnVpRGVzaWduZXIubGlicmFyaWVzLkxpYnJhcnlTdHlsZUluZm9Db2xsZWN0b3IuY29sbGVjdEluaGVyaXRlZChMaWJyYXJ5U3R5bGVJbmZvQ29sbGVjdG9yLmphdmE6MzkpCisJYXQgY29tLmludGVsbGlqLmZsZXgudWlEZXNpZ25lci5saWJyYXJpZXMuTGlicmFyeVN0eWxlSW5mb0NvbGxlY3Rvci5jb25zdW1lKExpYnJhcnlTdHlsZUluZm9Db2xsZWN0b3IuamF2YTo3MykKKwlhdCBjb20uaW50ZWxsaWouZmxleC51aURlc2lnbmVyLmxpYnJhcmllcy5MaWJyYXJ5U3R5bGVJbmZvQ29sbGVjdG9yLmNvbnN1bWUoTGlicmFyeVN0eWxlSW5mb0NvbGxlY3Rvci5qYXZhOjE5KQorCWF0IGNvbS5pbnRlbGxpai5mbGV4LnVpRGVzaWduZXIubGlicmFyaWVzLkxpYnJhcnlNYW5hZ2VyLmNyZWF0ZU9yaWdpbmFsTGlicmFyeShMaWJyYXJ5TWFuYWdlci5qYXZhOjI2OCkKKwlhdCBjb20uaW50ZWxsaWouZmxleC51aURlc2lnbmVyLmxpYnJhcmllcy5MaWJyYXJ5Q29sbGVjdG9yLmFkZExpYnJhcnkoTGlicmFyeUNvbGxlY3Rvci5qYXZhOjI0MykKKwlhdCBjb20uaW50ZWxsaWouZmxleC51aURlc2lnbmVyLmxpYnJhcmllcy5MaWJyYXJ5Q29sbGVjdG9yLmNvbGxlY3RGcm9tU2RrT3JkZXJFbnRyeShMaWJyYXJ5Q29sbGVjdG9yLmphdmE6MjIzKQorCWF0IGNvbS5pbnRlbGxpai5mbGV4LnVpRGVzaWduZXIubGlicmFyaWVzLkxpYnJhcnlDb2xsZWN0b3IuY29sbGVjdChMaWJyYXJ5Q29sbGVjdG9yLmphdmE6MTM4KQorCWF0IGNvbS5pbnRlbGxpai5mbGV4LnVpRGVzaWduZXIubGlicmFyaWVzLkxpYnJhcnlNYW5hZ2VyLmluaXRMaWJyYXJ5U2V0cyhMaWJyYXJ5TWFuYWdlci5qYXZhOjk1KQorCWF0IGNvbS5pbnRlbGxpai5mbGV4LnVpRGVzaWduZXIuRGVzaWduZXJBcHBsaWNhdGlvbkxhdW5jaGVyJDcuY2FsbChEZXNpZ25lckFwcGxpY2F0aW9uTGF1bmNoZXIuamF2YTozNzYpCisJYXQgY29tLmludGVsbGlqLmZsZXgudWlEZXNpZ25lci5EZXNpZ25lckFwcGxpY2F0aW9uTGF1bmNoZXIkNy5jYWxsKERlc2lnbmVyQXBwbGljYXRpb25MYXVuY2hlci5qYXZhOjM2NCkKKwlhdCBjb20uaW50ZWxsaWoub3BlbmFwaS5hcHBsaWNhdGlvbi5pbXBsLkFwcGxpY2F0aW9uSW1wbCQ3LmNhbGwoQXBwbGljYXRpb25JbXBsLmphdmE6NDQxKQorCWF0IGphdmEudXRpbC5jb25jdXJyZW50LkZ1dHVyZVRhc2skU3luYy5pbm5lclJ1bihGdXR1cmVUYXNrLmphdmE6MzAzKQorCWF0IGphdmEudXRpbC5jb25jdXJyZW50LkZ1dHVyZVRhc2sucnVuKEZ1dHVyZVRhc2suamF2YToxMzgpCisJYXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yJFdvcmtlci5ydW5UYXNrKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjg4NikKKwlhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IkV29ya2VyLnJ1bihUaHJlYWRQb29sRXhlY3V0b3IuamF2YTo5MDgpCisJYXQgamF2YS5sYW5nLlRocmVhZC5ydW4oVGhyZWFkLmphdmE6NjgwKQorCWF0IGNvbS5pbnRlbGxpai5vcGVuYXBpLmFwcGxpY2F0aW9uLmltcGwuQXBwbGljYXRpb25JbXBsJDEkMS5ydW4oQXBwbGljYXRpb25JbXBsLmphdmE6MTM3KQorCisgICBMb2NrZWQgb3duYWJsZSBzeW5jaHJvbml6ZXJzOgorCS0gPDdjOTA1NGExMD4gKGEgamF2YS51dGlsLmNvbmN1cnJlbnQubG9ja3MuUmVlbnRyYW50TG9jayROb25mYWlyU3luYykKKwktIDw3Yzk3MzNmODA+IChhIGphdmEudXRpbC5jb25jdXJyZW50LmxvY2tzLlJlZW50cmFudExvY2skTm9uZmFpclN5bmMpCisKKyJQcm9ncmVzcyBDYW5jZWwgQ2hlY2tlciIgcHJpbz05IHRpZD0xMDM1YzA4MDAgbmlkPTB4MTE0ZjQ2MDAwIHdhaXRpbmcgb24gY29uZGl0aW9uIFsxMTRmNDUwMDBdCisgICBqYXZhLmxhbmcuVGhyZWFkLlN0YXRlOiBUSU1FRF9XQUlUSU5HIChzbGVlcGluZykKKwlhdCBqYXZhLmxhbmcuVGhyZWFkLnNsZWVwKE5hdGl2ZSBNZXRob2QpCisJYXQgY29tLmludGVsbGlqLm9wZW5hcGkucHJvZ3Jlc3MuaW1wbC5Qcm9ncmVzc01hbmFnZXJJbXBsJDEucnVuKFByb2dyZXNzTWFuYWdlckltcGwuamF2YTo2MCkKKworICAgTG9ja2VkIG93bmFibGUgc3luY2hyb25pemVyczoKKwktIE5vbmUKKworIlN0b3JlUmVmcmVzaFN0YXR1c1RocmVhZCIgZGFlbW9uIHByaW89MSB0aWQ9MTAzNWI4MDAwIG5pZD0weDExNGU0MzAwMCB3YWl0aW5nIG9uIGNvbmRpdGlvbiBbMTE0ZTQyMDAwXQorICAgamF2YS5sYW5nLlRocmVhZC5TdGF0ZTogVElNRURfV0FJVElORyAoc2xlZXBpbmcpCisJYXQgamF2YS5sYW5nLlRocmVhZC5zbGVlcChOYXRpdmUgTWV0aG9kKQorCWF0IGNvbS5pbnRlbGxpai5vcGVuYXBpLnZmcy5pbXBsLmxvY2FsLkxvY2FsRmlsZVN5c3RlbUltcGwkU3RvcmVSZWZyZXNoU3RhdHVzVGhyZWFkLnJ1bihMb2NhbEZpbGVTeXN0ZW1JbXBsLmphdmE6MzI1KQorCisgICBMb2NrZWQgb3duYWJsZSBzeW5jaHJvbml6ZXJzOgorCS0gTm9uZQorCisiV2F0Y2hGb3JDaGFuZ2VzVGhyZWFkIiBwcmlvPTYgdGlkPTEwMzBhNTAwMCBuaWQ9MHgxMTRkNDAwMDAgcnVubmFibGUgWzExNGQzZjAwMF0KKyAgIGphdmEubGFuZy5UaHJlYWQuU3RhdGU6IFJVTk5BQkxFCisJYXQgamF2YS5pby5GaWxlSW5wdXRTdHJlYW0ucmVhZEJ5dGVzKE5hdGl2ZSBNZXRob2QpCisJYXQgamF2YS5pby5GaWxlSW5wdXRTdHJlYW0ucmVhZChGaWxlSW5wdXRTdHJlYW0uamF2YToxOTkpCisJYXQgamF2YS5sYW5nLlVOSVhQcm9jZXNzJERlZmVycmVkQ2xvc2VJbnB1dFN0cmVhbS5yZWFkKFVOSVhQcm9jZXNzLmphdmE6MjI3KQorCWF0IGphdmEuaW8uQnVmZmVyZWRJbnB1dFN0cmVhbS5yZWFkMShCdWZmZXJlZElucHV0U3RyZWFtLmphdmE6MjU2KQorCWF0IGphdmEuaW8uQnVmZmVyZWRJbnB1dFN0cmVhbS5yZWFkKEJ1ZmZlcmVkSW5wdXRTdHJlYW0uamF2YTozMTcpCisJLSBsb2NrZWQgPDdjOGZlMjAxMD4gKGEgamF2YS5pby5CdWZmZXJlZElucHV0U3RyZWFtKQorCWF0IHN1bi5uaW8uY3MuU3RyZWFtRGVjb2Rlci5yZWFkQnl0ZXMoU3RyZWFtRGVjb2Rlci5qYXZhOjI2NCkKKwlhdCBzdW4ubmlvLmNzLlN0cmVhbURlY29kZXIuaW1wbFJlYWQoU3RyZWFtRGVjb2Rlci5qYXZhOjMwNikKKwlhdCBzdW4ubmlvLmNzLlN0cmVhbURlY29kZXIucmVhZChTdHJlYW1EZWNvZGVyLmphdmE6MTU4KQorCS0gbG9ja2VkIDw3YzhmZTQyNDg+IChhIGphdmEuaW8uSW5wdXRTdHJlYW1SZWFkZXIpCisJYXQgamF2YS5pby5JbnB1dFN0cmVhbVJlYWRlci5yZWFkKElucHV0U3RyZWFtUmVhZGVyLmphdmE6MTY3KQorCWF0IGphdmEuaW8uQnVmZmVyZWRSZWFkZXIuZmlsbChCdWZmZXJlZFJlYWRlci5qYXZhOjEzNikKKwlhdCBqYXZhLmlvLkJ1ZmZlcmVkUmVhZGVyLnJlYWRMaW5lKEJ1ZmZlcmVkUmVhZGVyLmphdmE6Mjk5KQorCS0gbG9ja2VkIDw3YzhmZTQyNDg+IChhIGphdmEuaW8uSW5wdXRTdHJlYW1SZWFkZXIpCisJYXQgamF2YS5pby5CdWZmZXJlZFJlYWRlci5yZWFkTGluZShCdWZmZXJlZFJlYWRlci5qYXZhOjM2MikKKwlhdCBjb20uaW50ZWxsaWoub3BlbmFwaS52ZnMuaW1wbC5sb2NhbC5GaWxlV2F0Y2hlci5yZWFkTGluZShGaWxlV2F0Y2hlci5qYXZhOjQ4MSkKKwlhdCBjb20uaW50ZWxsaWoub3BlbmFwaS52ZnMuaW1wbC5sb2NhbC5GaWxlV2F0Y2hlci5hY2Nlc3MkMzAwKEZpbGVXYXRjaGVyLmphdmE6NDgpCisJYXQgY29tLmludGVsbGlqLm9wZW5hcGkudmZzLmltcGwubG9jYWwuRmlsZVdhdGNoZXIkV2F0Y2hGb3JDaGFuZ2VzVGhyZWFkLnJ1bihGaWxlV2F0Y2hlci5qYXZhOjM1NCkKKworICAgTG9ja2VkIG93bmFibGUgc3luY2hyb25pemVyczoKKwktIE5vbmUKKworInByb2Nlc3MgcmVhcGVyIiBkYWVtb24gcHJpbz02IHRpZD0xMDMwYTQwMDAgbmlkPTB4MTE0YzNkMDAwIHJ1bm5hYmxlIFsxMTRjM2MwMDBdCisgICBqYXZhLmxhbmcuVGhyZWFkLlN0YXRlOiBSVU5OQUJMRQorCWF0IGphdmEubGFuZy5VTklYUHJvY2Vzcy53YWl0Rm9yUHJvY2Vzc0V4aXQoTmF0aXZlIE1ldGhvZCkKKwlhdCBqYXZhLmxhbmcuVU5JWFByb2Nlc3MuYWNjZXNzJDkwMChVTklYUHJvY2Vzcy5qYXZhOjE3KQorCWF0IGphdmEubGFuZy5VTklYUHJvY2VzcyQyJDEucnVuKFVOSVhQcm9jZXNzLmphdmE6ODYpCisKKyAgIExvY2tlZCBvd25hYmxlIHN5bmNocm9uaXplcnM6CisJLSBOb25lCisKKyJGbHVzaGluZyB0aHJlYWQiIGRhZW1vbiBwcmlvPTUgdGlkPTEwMzBhMzgwMCBuaWQ9MHgxMTRhZGQwMDAgd2FpdGluZyBvbiBjb25kaXRpb24gWzExNGFkYzAwMF0KKyAgIGphdmEubGFuZy5UaHJlYWQuU3RhdGU6IFdBSVRJTkcgKHBhcmtpbmcpCisJYXQgc3VuLm1pc2MuVW5zYWZlLnBhcmsoTmF0aXZlIE1ldGhvZCkKKwktIHBhcmtpbmcgdG8gd2FpdCBmb3IgIDw3Yzk3MzNmODA+IChhIGphdmEudXRpbC5jb25jdXJyZW50LmxvY2tzLlJlZW50cmFudExvY2skTm9uZmFpclN5bmMpCisJYXQgamF2YS51dGlsLmNvbmN1cnJlbnQubG9ja3MuTG9ja1N1cHBvcnQucGFyayhMb2NrU3VwcG9ydC5qYXZhOjE1OCkKKwlhdCBqYXZhLnV0aWwuY29uY3VycmVudC5sb2Nrcy5BYnN0cmFjdFF1ZXVlZFN5bmNocm9uaXplci5wYXJrQW5kQ2hlY2tJbnRlcnJ1cHQoQWJzdHJhY3RRdWV1ZWRTeW5jaHJvbml6ZXIuamF2YTo4MTEpCisJYXQgamF2YS51dGlsLmNvbmN1cnJlbnQubG9ja3MuQWJzdHJhY3RRdWV1ZWRTeW5jaHJvbml6ZXIuYWNxdWlyZVF1ZXVlZChBYnN0cmFjdFF1ZXVlZFN5bmNocm9uaXplci5qYXZhOjg0MikKKwlhdCBqYXZhLnV0aWwuY29uY3VycmVudC5sb2Nrcy5BYnN0cmFjdFF1ZXVlZFN5bmNocm9uaXplci5hY3F1aXJlKEFic3RyYWN0UXVldWVkU3luY2hyb25pemVyLmphdmE6MTE3OCkKKwlhdCBqYXZhLnV0aWwuY29uY3VycmVudC5sb2Nrcy5SZWVudHJhbnRMb2NrJE5vbmZhaXJTeW5jLmxvY2soUmVlbnRyYW50TG9jay5qYXZhOjE4NikKKwlhdCBqYXZhLnV0aWwuY29uY3VycmVudC5sb2Nrcy5SZWVudHJhbnRMb2NrLmxvY2soUmVlbnRyYW50TG9jay5qYXZhOjI2MikKKwlhdCBjb20uaW50ZWxsaWoudXRpbC5pbmRleGluZy5NYXBJbmRleFN0b3JhZ2UuZmx1c2goTWFwSW5kZXhTdG9yYWdlLmphdmE6MTA4KQorCWF0IGNvbS5pbnRlbGxpai51dGlsLmluZGV4aW5nLk1lbW9yeUluZGV4U3RvcmFnZS5mbHVzaChNZW1vcnlJbmRleFN0b3JhZ2UuamF2YTo5NykKKwlhdCBjb20uaW50ZWxsaWoudXRpbC5pbmRleGluZy5NYXBSZWR1Y2VJbmRleC5mbHVzaChNYXBSZWR1Y2VJbmRleC5qYXZhOjk2KQorCWF0IGNvbS5pbnRlbGxpai51dGlsLmluZGV4aW5nLkZpbGVCYXNlZEluZGV4LmZsdXNoQWxsSW5kaWNlcyhGaWxlQmFzZWRJbmRleC5qYXZhOjY1MikKKwlhdCBjb20uaW50ZWxsaWoudXRpbC5pbmRleGluZy5GaWxlQmFzZWRJbmRleC5hY2Nlc3MkMTIwMChGaWxlQmFzZWRJbmRleC5qYXZhOjk1KQorCWF0IGNvbS5pbnRlbGxpai51dGlsLmluZGV4aW5nLkZpbGVCYXNlZEluZGV4JDcucnVuKEZpbGVCYXNlZEluZGV4LmphdmE6MzMyKQorCWF0IGphdmEudXRpbC5jb25jdXJyZW50LkV4ZWN1dG9ycyRSdW5uYWJsZUFkYXB0ZXIuY2FsbChFeGVjdXRvcnMuamF2YTo0NDEpCisJYXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRnV0dXJlVGFzayRTeW5jLmlubmVyUnVuQW5kUmVzZXQoRnV0dXJlVGFzay5qYXZhOjMxNykKKwlhdCBqYXZhLnV0aWwuY29uY3VycmVudC5GdXR1cmVUYXNrLnJ1bkFuZFJlc2V0KEZ1dHVyZVRhc2suamF2YToxNTApCisJYXQgamF2YS51dGlsLmNvbmN1cnJlbnQuU2NoZWR1bGVkVGhyZWFkUG9vbEV4ZWN1dG9yJFNjaGVkdWxlZEZ1dHVyZVRhc2suYWNjZXNzJDEwMShTY2hlZHVsZWRUaHJlYWRQb29sRXhlY3V0b3IuamF2YTo5OCkKKwlhdCBqYXZhLnV0aWwuY29uY3VycmVudC5TY2hlZHVsZWRUaHJlYWRQb29sRXhlY3V0b3IkU2NoZWR1bGVkRnV0dXJlVGFzay5ydW5QZXJpb2RpYyhTY2hlZHVsZWRUaHJlYWRQb29sRXhlY3V0b3IuamF2YToxODApCisJYXQgamF2YS51dGlsLmNvbmN1cnJlbnQuU2NoZWR1bGVkVGhyZWFkUG9vbEV4ZWN1dG9yJFNjaGVkdWxlZEZ1dHVyZVRhc2sucnVuKFNjaGVkdWxlZFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjIwNCkKKwlhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IkV29ya2VyLnJ1blRhc2soVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6ODg2KQorCWF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvciRXb3JrZXIucnVuKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjkwOCkKKwlhdCBqYXZhLmxhbmcuVGhyZWFkLnJ1bihUaHJlYWQuamF2YTo2ODApCisKKyAgIExvY2tlZCBvd25hYmxlIHN5bmNocm9uaXplcnM6CisJLSA8N2M4ZmRlYWQwPiAoYSBqYXZhLnV0aWwuY29uY3VycmVudC5sb2Nrcy5SZWVudHJhbnRMb2NrJE5vbmZhaXJTeW5jKQorCisiUG9sbGVyIFN1blBLQ1MxMS1EYXJ3aW4iIGRhZW1vbiBwcmlvPTEgdGlkPTExNDdjMDAwMCBuaWQ9MHgxMTNjYWIwMDAgd2FpdGluZyBvbiBjb25kaXRpb24gWzExM2NhYTAwMF0KKyAgIGphdmEubGFuZy5UaHJlYWQuU3RhdGU6IFRJTUVEX1dBSVRJTkcgKHNsZWVwaW5nKQorCWF0IGphdmEubGFuZy5UaHJlYWQuc2xlZXAoTmF0aXZlIE1ldGhvZCkKKwlhdCBzdW4uc2VjdXJpdHkucGtjczExLlN1blBLQ1MxMSRUb2tlblBvbGxlci5ydW4oU3VuUEtDUzExLmphdmE6NjkyKQorCWF0IGphdmEubGFuZy5UaHJlYWQucnVuKFRocmVhZC5qYXZhOjY4MCkKKworICAgTG9ja2VkIG93bmFibGUgc3luY2hyb25pemVyczoKKwktIE5vbmUKKworInRpbWVkIHJlZmVyZW5jZSBkaXNwb3NlciIgZGFlbW9uIHByaW89MiB0aWQ9MTE1NDIxMDAwIG5pZD0weDExM2ViMzAwMCB3YWl0aW5nIG9uIGNvbmRpdGlvbiBbMTEzZWIyMDAwXQorICAgamF2YS5sYW5nLlRocmVhZC5TdGF0ZTogVElNRURfV0FJVElORyAocGFya2luZykKKwlhdCBzdW4ubWlzYy5VbnNhZmUucGFyayhOYXRpdmUgTWV0aG9kKQorCS0gcGFya2luZyB0byB3YWl0IGZvciAgPDdjOTBjZmYyOD4gKGEgamF2YS51dGlsLmNvbmN1cnJlbnQubG9ja3MuQWJzdHJhY3RRdWV1ZWRTeW5jaHJvbml6ZXIkQ29uZGl0aW9uT2JqZWN0KQorCWF0IGphdmEudXRpbC5jb25jdXJyZW50LmxvY2tzLkxvY2tTdXBwb3J0LnBhcmtOYW5vcyhMb2NrU3VwcG9ydC5qYXZhOjE5OCkKKwlhdCBqYXZhLnV0aWwuY29uY3VycmVudC5sb2Nrcy5BYnN0cmFjdFF1ZXVlZFN5bmNocm9uaXplciRDb25kaXRpb25PYmplY3QuYXdhaXROYW5vcyhBYnN0cmFjdFF1ZXVlZFN5bmNocm9uaXplci5qYXZhOjIwMjUpCisJYXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRGVsYXlRdWV1ZS50YWtlKERlbGF5UXVldWUuamF2YToxNjQpCisJYXQgamF2YS51dGlsLmNvbmN1cnJlbnQuU2NoZWR1bGVkVGhyZWFkUG9vbEV4ZWN1dG9yJERlbGF5ZWRXb3JrUXVldWUudGFrZShTY2hlZHVsZWRUaHJlYWRQb29sRXhlY3V0b3IuamF2YTo2MDkpCisJYXQgamF2YS51dGlsLmNvbmN1cnJlbnQuU2NoZWR1bGVkVGhyZWFkUG9vbEV4ZWN1dG9yJERlbGF5ZWRXb3JrUXVldWUudGFrZShTY2hlZHVsZWRUaHJlYWRQb29sRXhlY3V0b3IuamF2YTo2MDIpCisJYXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yLmdldFRhc2soVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6OTQ3KQorCWF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvciRXb3JrZXIucnVuKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjkwNykKKwlhdCBqYXZhLmxhbmcuVGhyZWFkLnJ1bihUaHJlYWQuamF2YTo2ODApCisKKyAgIExvY2tlZCBvd25hYmxlIHN5bmNocm9uaXplcnM6CisJLSBOb25lCisKKyJBV1QtRXZlbnRRdWV1ZS0xIDEuMCMxMTIuMTEsIGVhcDp0cnVlIiBwcmlvPTYgdGlkPTEwMzI5MTAwMCBuaWQ9MHgxMTIyNGMwMDAgaW4gT2JqZWN0LndhaXQoKSBbMTEyMjRhMDAwXQorICAgamF2YS5sYW5nLlRocmVhZC5TdGF0ZTogV0FJVElORyAob24gb2JqZWN0IG1vbml0b3IpCisJYXQgamF2YS5sYW5nLk9iamVjdC53YWl0KE5hdGl2ZSBNZXRob2QpCisJLSB3YWl0aW5nIG9uIDw3Yzk0OTkyZDA+IChhIGNvbS5pbnRlbGxpai51dGlsLmNvbmN1cnJlbmN5LldyaXRlclByZWZlcmVuY2VSZWFkV3JpdGVMb2NrJFdyaXRlckxvY2spCisJYXQgamF2YS5sYW5nLk9iamVjdC53YWl0KE9iamVjdC5qYXZhOjQ4NSkKKwlhdCBjb20uaW50ZWxsaWoudXRpbC5jb25jdXJyZW5jeS5Xcml0ZXJQcmVmZXJlbmNlUmVhZFdyaXRlTG9jayRXcml0ZXJMb2NrLmFjcXVpcmUoV3JpdGVyUHJlZmVyZW5jZVJlYWRXcml0ZUxvY2suamF2YToyNDEpCisJLSBsb2NrZWQgPDdjOTQ5OTJkMD4gKGEgY29tLmludGVsbGlqLnV0aWwuY29uY3VycmVuY3kuV3JpdGVyUHJlZmVyZW5jZVJlYWRXcml0ZUxvY2skV3JpdGVyTG9jaykKKwlhdCBjb20uaW50ZWxsaWoub3BlbmFwaS5hcHBsaWNhdGlvbi5pbXBsLkFwcGxpY2F0aW9uSW1wbCRXcml0ZUFjY2Vzc1Rva2VuLjxpbml0PihBcHBsaWNhdGlvbkltcGwuamF2YToxMTI3KQorCWF0IGNvbS5pbnRlbGxpai5vcGVuYXBpLmFwcGxpY2F0aW9uLmltcGwuQXBwbGljYXRpb25JbXBsLmFjcXVpcmVXcml0ZUFjdGlvbkxvY2soQXBwbGljYXRpb25JbXBsLmphdmE6MTA5MikKKwlhdCBjb20uaW50ZWxsaWoub3BlbmFwaS5hcHBsaWNhdGlvbi5pbXBsLkFwcGxpY2F0aW9uSW1wbC5ydW5Xcml0ZUFjdGlvbihBcHBsaWNhdGlvbkltcGwuamF2YTo4ODEpCisJYXQgY29tLmludGVsbGlqLm9wZW5hcGkuY29tcG9uZW50cy5pbXBsLnN0b3Jlcy5TdG9yYWdlVXRpbC5zYXZlKFN0b3JhZ2VVdGlsLmphdmE6MTA3KQorCWF0IGNvbS5pbnRlbGxpai5vcGVuYXBpLmNvbXBvbmVudHMuaW1wbC5zdG9yZXMuRmlsZUJhc2VkU3RvcmFnZSRGaWxlU2F2ZVNlc3Npb24uZG9TYXZlKEZpbGVCYXNlZFN0b3JhZ2UuamF2YToxNjkpCisJYXQgY29tLmludGVsbGlqLm9wZW5hcGkuY29tcG9uZW50cy5pbXBsLnN0b3Jlcy5YbWxFbGVtZW50U3RvcmFnZSRNeVNhdmVTZXNzaW9uLnNhdmVMb2NhbGx5KFhtbEVsZW1lbnRTdG9yYWdlLmphdmE6NDI2KQorCWF0IGNvbS5pbnRlbGxpai5vcGVuYXBpLmNvbXBvbmVudHMuaW1wbC5zdG9yZXMuWG1sRWxlbWVudFN0b3JhZ2UkTXlTYXZlU2Vzc2lvbi5zYXZlKFhtbEVsZW1lbnRTdG9yYWdlLmphdmE6NDE4KQorCWF0IGNvbS5pbnRlbGxpai5vcGVuYXBpLmNvbXBvbmVudHMuaW1wbC5zdG9yZXMuQ29tcG91bmRTYXZlU2Vzc2lvbi5zYXZlKENvbXBvdW5kU2F2ZVNlc3Npb24uamF2YTo1MikKKwlhdCBjb20uaW50ZWxsaWoub3BlbmFwaS5jb21wb25lbnRzLmltcGwuc3RvcmVzLlN0YXRlU3RvcmFnZU1hbmFnZXJJbXBsJE15U2F2ZVNlc3Npb24uc2F2ZShTdGF0ZVN0b3JhZ2VNYW5hZ2VySW1wbC5qYXZhOjUxMSkKKwlhdCBjb20uaW50ZWxsaWoub3BlbmFwaS5jb21wb25lbnRzLmltcGwuc3RvcmVzLkNvbXBvbmVudFN0b3JlSW1wbCRTYXZlU2Vzc2lvbkltcGwuc2F2ZShDb21wb25lbnRTdG9yZUltcGwuamF2YTo0MzYpCisJYXQgY29tLmludGVsbGlqLm9wZW5hcGkuY29tcG9uZW50cy5pbXBsLnN0b3Jlcy5Qcm9qZWN0U3RvcmVJbXBsJFByb2plY3RTYXZlU2Vzc2lvbi5zYXZlKFByb2plY3RTdG9yZUltcGwuamF2YTo1MDgpCisJYXQgY29tLmludGVsbGlqLm9wZW5hcGkuY29tcG9uZW50cy5pbXBsLnN0b3Jlcy5TdG9yZVV0aWwuZG9TYXZlKFN0b3JlVXRpbC5qYXZhOjMxKQorCWF0IGNvbS5pbnRlbGxpai5vcGVuYXBpLnByb2plY3QuaW1wbC5Qcm9qZWN0SW1wbC5zYXZlKFByb2plY3RJbXBsLmphdmE6MzIzKQorCWF0IGNvbS5pbnRlbGxpai5pZGUuU2F2ZUFuZFN5bmNIYW5kbGVyLnNhdmVQcm9qZWN0c0FuZERvY3VtZW50cyhTYXZlQW5kU3luY0hhbmRsZXIuamF2YToxMzQpCisJYXQgY29tLmludGVsbGlqLmlkZS5TYXZlQW5kU3luY0hhbmRsZXIkMy5vbkZyYW1lRGVhY3RpdmF0ZWQoU2F2ZUFuZFN5bmNIYW5kbGVyLmphdmE6OTEpCisJYXQgY29tLmludGVsbGlqLmlkZS5GcmFtZVN0YXRlTWFuYWdlckltcGwuZmlyZURlYWN0aXZhdGlvbkV2ZW50KEZyYW1lU3RhdGVNYW5hZ2VySW1wbC5qYXZhOjEwMCkKKwlhdCBjb20uaW50ZWxsaWouaWRlLkZyYW1lU3RhdGVNYW5hZ2VySW1wbC5hY2Nlc3MkNTAwKEZyYW1lU3RhdGVNYW5hZ2VySW1wbC5qYXZhOjMxKQorCWF0IGNvbS5pbnRlbGxpai5pZGUuRnJhbWVTdGF0ZU1hbmFnZXJJbXBsJDIkMS5ydW4oRnJhbWVTdGF0ZU1hbmFnZXJJbXBsLmphdmE6NzIpCisJYXQgY29tLmludGVsbGlqLnV0aWwuQWxhcm0kUmVxdWVzdCQxLnJ1bihBbGFybS5qYXZhOjIzMCkKKwlhdCBjb20uaW50ZWxsaWoub3BlbmFwaS5hcHBsaWNhdGlvbi5pbXBsLkxhdGVySW52b2NhdG9yJEZsdXNoUXVldWUucnVuKExhdGVySW52b2NhdG9yLmphdmE6MzMzKQorCS0gbG9ja2VkIDw3YzkwNTFjNzA+IChhIGphdmEubGFuZy5PYmplY3QpCisJYXQgamF2YS5hd3QuZXZlbnQuSW52b2NhdGlvbkV2ZW50LmRpc3BhdGNoKEludm9jYXRpb25FdmVudC5qYXZhOjIwOSkKKwlhdCBqYXZhLmF3dC5FdmVudFF1ZXVlLmRpc3BhdGNoRXZlbnQoRXZlbnRRdWV1ZS5qYXZhOjYzMykKKwlhdCBjb20uaW50ZWxsaWouaWRlLklkZUV2ZW50UXVldWUuZGVmYXVsdERpc3BhdGNoRXZlbnQoSWRlRXZlbnRRdWV1ZS5qYXZhOjY4NikKKwlhdCBjb20uaW50ZWxsaWouaWRlLklkZUV2ZW50UXVldWUuX2Rpc3BhdGNoRXZlbnQoSWRlRXZlbnRRdWV1ZS5qYXZhOjUzNCkKKwlhdCBjb20uaW50ZWxsaWouaWRlLklkZUV2ZW50UXVldWUuX2Rpc3BhdGNoRXZlbnQoSWRlRXZlbnRRdWV1ZS5qYXZhOjQxNikKKwlhdCBjb20uaW50ZWxsaWouaWRlLklkZUV2ZW50UXVldWUuZGlzcGF0Y2hFdmVudChJZGVFdmVudFF1ZXVlLmphdmE6Mzc0KQorCWF0IGphdmEuYXd0LkV2ZW50RGlzcGF0Y2hUaHJlYWQucHVtcE9uZUV2ZW50Rm9yRmlsdGVycyhFdmVudERpc3BhdGNoVGhyZWFkLmphdmE6Mjk2KQorCWF0IGphdmEuYXd0LkV2ZW50RGlzcGF0Y2hUaHJlYWQucHVtcEV2ZW50c0ZvckZpbHRlcihFdmVudERpc3BhdGNoVGhyZWFkLmphdmE6MjExKQorCWF0IGphdmEuYXd0LkV2ZW50RGlzcGF0Y2hUaHJlYWQucHVtcEV2ZW50c0ZvckhpZXJhcmNoeShFdmVudERpc3BhdGNoVGhyZWFkLmphdmE6MjAxKQorCWF0IGphdmEuYXd0LkV2ZW50RGlzcGF0Y2hUaHJlYWQucHVtcEV2ZW50cyhFdmVudERpc3BhdGNoVGhyZWFkLmphdmE6MTk2KQorCWF0IGphdmEuYXd0LkV2ZW50RGlzcGF0Y2hUaHJlYWQucHVtcEV2ZW50cyhFdmVudERpc3BhdGNoVGhyZWFkLmphdmE6MTg4KQorCWF0IGphdmEuYXd0LkV2ZW50RGlzcGF0Y2hUaHJlYWQucnVuKEV2ZW50RGlzcGF0Y2hUaHJlYWQuamF2YToxMjIpCisKKyAgIExvY2tlZCBvd25hYmxlIHN5bmNocm9uaXplcnM6CisJLSBOb25lCisKKyJQZXJpb2RpYyB0YXNrcyB0aHJlYWQiIGRhZW1vbiBwcmlvPTUgdGlkPTEwMzE5YzgwMCBuaWQ9MHgxMDhiYjAwMDAgcnVubmFibGUgWzEwOGJhZjAwMF0KKyAgIGphdmEubGFuZy5UaHJlYWQuU3RhdGU6IFRJTUVEX1dBSVRJTkcgKHBhcmtpbmcpCisJYXQgc3VuLm1pc2MuVW5zYWZlLnBhcmsoTmF0aXZlIE1ldGhvZCkKKwktIHBhcmtpbmcgdG8gd2FpdCBmb3IgIDw3YzhkMTc0Njg+IChhIGphdmEudXRpbC5jb25jdXJyZW50LmxvY2tzLkFic3RyYWN0UXVldWVkU3luY2hyb25pemVyJENvbmRpdGlvbk9iamVjdCkKKwlhdCBqYXZhLnV0aWwuY29uY3VycmVudC5sb2Nrcy5Mb2NrU3VwcG9ydC5wYXJrTmFub3MoTG9ja1N1cHBvcnQuamF2YToxOTgpCisJYXQgamF2YS51dGlsLmNvbmN1cnJlbnQubG9ja3MuQWJzdHJhY3RRdWV1ZWRTeW5jaHJvbml6ZXIkQ29uZGl0aW9uT2JqZWN0LmF3YWl0TmFub3MoQWJzdHJhY3RRdWV1ZWRTeW5jaHJvbml6ZXIuamF2YToyMDI1KQorCWF0IGphdmEudXRpbC5jb25jdXJyZW50LkRlbGF5UXVldWUudGFrZShEZWxheVF1ZXVlLmphdmE6MTY0KQorCWF0IGphdmEudXRpbC5jb25jdXJyZW50LlNjaGVkdWxlZFRocmVhZFBvb2xFeGVjdXRvciREZWxheWVkV29ya1F1ZXVlLnRha2UoU2NoZWR1bGVkVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6NjA5KQorCWF0IGphdmEudXRpbC5jb25jdXJyZW50LlNjaGVkdWxlZFRocmVhZFBvb2xFeGVjdXRvciREZWxheWVkV29ya1F1ZXVlLnRha2UoU2NoZWR1bGVkVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6NjAyKQorCWF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvci5nZXRUYXNrKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjk0NykKKwlhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IkV29ya2VyLnJ1bihUaHJlYWRQb29sRXhlY3V0b3IuamF2YTo5MDcpCisJYXQgamF2YS5sYW5nLlRocmVhZC5ydW4oVGhyZWFkLmphdmE6NjgwKQorCisgICBMb2NrZWQgb3duYWJsZSBzeW5jaHJvbml6ZXJzOgorCS0gTm9uZQorCisiQVdULVNodXRkb3duIiBwcmlvPTUgdGlkPTEwMzM3ODAwMCBuaWQ9MHgxMTBmNDgwMDAgaW4gT2JqZWN0LndhaXQoKSBbMTEwZjQ3MDAwXQorICAgamF2YS5sYW5nLlRocmVhZC5TdGF0ZTogV0FJVElORyAob24gb2JqZWN0IG1vbml0b3IpCisJYXQgamF2YS5sYW5nLk9iamVjdC53YWl0KE5hdGl2ZSBNZXRob2QpCisJLSB3YWl0aW5nIG9uIDw3YzhkMTc1YTA+IChhIGphdmEubGFuZy5PYmplY3QpCisJYXQgamF2YS5sYW5nLk9iamVjdC53YWl0KE9iamVjdC5qYXZhOjQ4NSkKKwlhdCBzdW4uYXd0LkFXVEF1dG9TaHV0ZG93bi5ydW4oQVdUQXV0b1NodXRkb3duLmphdmE6MjY1KQorCS0gbG9ja2VkIDw3YzhkMTc1YTA+IChhIGphdmEubGFuZy5PYmplY3QpCisJYXQgamF2YS5sYW5nLlRocmVhZC5ydW4oVGhyZWFkLmphdmE6NjgwKQorCisgICBMb2NrZWQgb3duYWJsZSBzeW5jaHJvbml6ZXJzOgorCS0gTm9uZQorCisiTG9jayB0aHJlYWQiIHByaW89MSB0aWQ9MTAzMjRiODAwIG5pZD0weDExMThlZTAwMCBydW5uYWJsZSBbMTExOGVkMDAwXQorICAgamF2YS5sYW5nLlRocmVhZC5TdGF0ZTogUlVOTkFCTEUKKwlhdCBqYXZhLm5ldC5QbGFpblNvY2tldEltcGwuc29ja2V0QWNjZXB0KE5hdGl2ZSBNZXRob2QpCisJYXQgamF2YS5uZXQuUGxhaW5Tb2NrZXRJbXBsLmFjY2VwdChQbGFpblNvY2tldEltcGwuamF2YTozOTApCisJLSBsb2NrZWQgPDdjOGQxNzY1OD4gKGEgamF2YS5uZXQuU29ja3NTb2NrZXRJbXBsKQorCWF0IGphdmEubmV0LlNlcnZlclNvY2tldC5pbXBsQWNjZXB0KFNlcnZlclNvY2tldC5qYXZhOjQ1MykKKwlhdCBqYXZhLm5ldC5TZXJ2ZXJTb2NrZXQuYWNjZXB0KFNlcnZlclNvY2tldC5qYXZhOjQyMSkKKwlhdCBjb20uaW50ZWxsaWouaWRlYS5Tb2NrZXRMb2NrJE15UnVubmFibGUucnVuKFNvY2tldExvY2suamF2YToyMTYpCisJYXQgamF2YS5sYW5nLlRocmVhZC5ydW4oVGhyZWFkLmphdmE6NjgwKQorCisgICBMb2NrZWQgb3duYWJsZSBzeW5jaHJvbml6ZXJzOgorCS0gTm9uZQorCisiSmF2YTJEIERpc3Bvc2VyIiBkYWVtb24gcHJpbz0xMCB0aWQ9MTAzMjQ1ODAwIG5pZD0weDExMTZlODAwMCBpbiBPYmplY3Qud2FpdCgpIFsxMTE2ZTcwMDBdCisgICBqYXZhLmxhbmcuVGhyZWFkLlN0YXRlOiBXQUlUSU5HIChvbiBvYmplY3QgbW9uaXRvcikKKwlhdCBqYXZhLmxhbmcuT2JqZWN0LndhaXQoTmF0aXZlIE1ldGhvZCkKKwktIHdhaXRpbmcgb24gPDdjOGQxNzg0MD4gKGEgamF2YS5sYW5nLnJlZi5SZWZlcmVuY2VRdWV1ZSRMb2NrKQorCWF0IGphdmEubGFuZy5yZWYuUmVmZXJlbmNlUXVldWUucmVtb3ZlKFJlZmVyZW5jZVF1ZXVlLmphdmE6MTE4KQorCS0gbG9ja2VkIDw3YzhkMTc4NDA+IChhIGphdmEubGFuZy5yZWYuUmVmZXJlbmNlUXVldWUkTG9jaykKKwlhdCBqYXZhLmxhbmcucmVmLlJlZmVyZW5jZVF1ZXVlLnJlbW92ZShSZWZlcmVuY2VRdWV1ZS5qYXZhOjEzNCkKKwlhdCBzdW4uamF2YTJkLkRpc3Bvc2VyLnJ1bihEaXNwb3Nlci5qYXZhOjEyNykKKwlhdCBqYXZhLmxhbmcuVGhyZWFkLnJ1bihUaHJlYWQuamF2YTo2ODApCisKKyAgIExvY2tlZCBvd25hYmxlIHN5bmNocm9uaXplcnM6CisJLSBOb25lCisKKyJBV1QtQXBwS2l0IiBkYWVtb24gcHJpbz01IHRpZD0xMDMzNzcwMDAgbmlkPTB4N2ZmZjcwZDVmY2EwIHJ1bm5hYmxlIFswMDAwMDAwMF0KKyAgIGphdmEubGFuZy5UaHJlYWQuU3RhdGU6IFJVTk5BQkxFCisKKyAgIExvY2tlZCBvd25hYmxlIHN5bmNocm9uaXplcnM6CisJLSBOb25lCisKKyJEZXN0cm95SmF2YVZNIiBwcmlvPTUgdGlkPTEwMzAwMTgwMCBuaWQ9MHgxMDI1NWIwMDAgd2FpdGluZyBvbiBjb25kaXRpb24gWzAwMDAwMDAwXQorICAgamF2YS5sYW5nLlRocmVhZC5TdGF0ZTogUlVOTkFCTEUKKworICAgTG9ja2VkIG93bmFibGUgc3luY2hyb25pemVyczoKKwktIE5vbmUKKworInRpbWVkIHJlZmVyZW5jZSBkaXNwb3NlciIgZGFlbW9uIHByaW89MiB0aWQ9MTAzMTU3ODAwIG5pZD0weDEwODUwZDAwMCB3YWl0aW5nIG9uIGNvbmRpdGlvbiBbMTA4NTBjMDAwXQorICAgamF2YS5sYW5nLlRocmVhZC5TdGF0ZTogVElNRURfV0FJVElORyAocGFya2luZykKKwlhdCBzdW4ubWlzYy5VbnNhZmUucGFyayhOYXRpdmUgTWV0aG9kKQorCS0gcGFya2luZyB0byB3YWl0IGZvciAgPDdjOGQxN2ExOD4gKGEgamF2YS51dGlsLmNvbmN1cnJlbnQubG9ja3MuQWJzdHJhY3RRdWV1ZWRTeW5jaHJvbml6ZXIkQ29uZGl0aW9uT2JqZWN0KQorCWF0IGphdmEudXRpbC5jb25jdXJyZW50LmxvY2tzLkxvY2tTdXBwb3J0LnBhcmtOYW5vcyhMb2NrU3VwcG9ydC5qYXZhOjE5OCkKKwlhdCBqYXZhLnV0aWwuY29uY3VycmVudC5sb2Nrcy5BYnN0cmFjdFF1ZXVlZFN5bmNocm9uaXplciRDb25kaXRpb25PYmplY3QuYXdhaXROYW5vcyhBYnN0cmFjdFF1ZXVlZFN5bmNocm9uaXplci5qYXZhOjIwMjUpCisJYXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRGVsYXlRdWV1ZS50YWtlKERlbGF5UXVldWUuamF2YToxNjQpCisJYXQgamF2YS51dGlsLmNvbmN1cnJlbnQuU2NoZWR1bGVkVGhyZWFkUG9vbEV4ZWN1dG9yJERlbGF5ZWRXb3JrUXVldWUudGFrZShTY2hlZHVsZWRUaHJlYWRQb29sRXhlY3V0b3IuamF2YTo2MDkpCisJYXQgamF2YS51dGlsLmNvbmN1cnJlbnQuU2NoZWR1bGVkVGhyZWFkUG9vbEV4ZWN1dG9yJERlbGF5ZWRXb3JrUXVldWUudGFrZShTY2hlZHVsZWRUaHJlYWRQb29sRXhlY3V0b3IuamF2YTo2MDIpCisJYXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yLmdldFRhc2soVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6OTQ3KQorCWF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvciRXb3JrZXIucnVuKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjkwNykKKwlhdCBqYXZhLmxhbmcuVGhyZWFkLnJ1bihUaHJlYWQuamF2YTo2ODApCisKKyAgIExvY2tlZCBvd25hYmxlIHN5bmNocm9uaXplcnM6CisJLSBOb25lCisKKyJMb3cgTWVtb3J5IERldGVjdG9yIiBkYWVtb24gcHJpbz01IHRpZD0xMDMwNjAwMDAgbmlkPTB4MTA4MWI0MDAwIHJ1bm5hYmxlIFswMDAwMDAwMF0KKyAgIGphdmEubGFuZy5UaHJlYWQuU3RhdGU6IFJVTk5BQkxFCisKKyAgIExvY2tlZCBvd25hYmxlIHN5bmNocm9uaXplcnM6CisJLSBOb25lCisKKyJDb21waWxlclRocmVhZDEiIGRhZW1vbiBwcmlvPTkgdGlkPTEwMzA1ZjgwMCBuaWQ9MHgxMDgwYjEwMDAgd2FpdGluZyBvbiBjb25kaXRpb24gWzAwMDAwMDAwXQorICAgamF2YS5sYW5nLlRocmVhZC5TdGF0ZTogUlVOTkFCTEUKKworICAgTG9ja2VkIG93bmFibGUgc3luY2hyb25pemVyczoKKwktIE5vbmUKKworIkNvbXBpbGVyVGhyZWFkMCIgZGFlbW9uIHByaW89OSB0aWQ9MTAzMDVlODAwIG5pZD0weDEwN2ZhZTAwMCB3YWl0aW5nIG9uIGNvbmRpdGlvbiBbMDAwMDAwMDBdCisgICBqYXZhLmxhbmcuVGhyZWFkLlN0YXRlOiBSVU5OQUJMRQorCisgICBMb2NrZWQgb3duYWJsZSBzeW5jaHJvbml6ZXJzOgorCS0gTm9uZQorCisiU2lnbmFsIERpc3BhdGNoZXIiIGRhZW1vbiBwcmlvPTkgdGlkPTEwMzA1ZTAwMCBuaWQ9MHgxMDdlYWIwMDAgcnVubmFibGUgWzAwMDAwMDAwXQorICAgamF2YS5sYW5nLlRocmVhZC5TdGF0ZTogUlVOTkFCTEUKKworICAgTG9ja2VkIG93bmFibGUgc3luY2hyb25pemVyczoKKwktIE5vbmUKKworIkZpbmFsaXplciIgZGFlbW9uIHByaW89OCB0aWQ9MTAzMDQ0MDAwIG5pZD0weDEwN2RhODAwMCBpbiBPYmplY3Qud2FpdCgpIFsxMDdkYTcwMDBdCisgICBqYXZhLmxhbmcuVGhyZWFkLlN0YXRlOiBXQUlUSU5HIChvbiBvYmplY3QgbW9uaXRvcikKKwlhdCBqYXZhLmxhbmcuT2JqZWN0LndhaXQoTmF0aXZlIE1ldGhvZCkKKwktIHdhaXRpbmcgb24gPDdjOGQxN2Q0MD4gKGEgamF2YS5sYW5nLnJlZi5SZWZlcmVuY2VRdWV1ZSRMb2NrKQorCWF0IGphdmEubGFuZy5yZWYuUmVmZXJlbmNlUXVldWUucmVtb3ZlKFJlZmVyZW5jZVF1ZXVlLmphdmE6MTE4KQorCS0gbG9ja2VkIDw3YzhkMTdkNDA+IChhIGphdmEubGFuZy5yZWYuUmVmZXJlbmNlUXVldWUkTG9jaykKKwlhdCBqYXZhLmxhbmcucmVmLlJlZmVyZW5jZVF1ZXVlLnJlbW92ZShSZWZlcmVuY2VRdWV1ZS5qYXZhOjEzNCkKKwlhdCBqYXZhLmxhbmcucmVmLkZpbmFsaXplciRGaW5hbGl6ZXJUaHJlYWQucnVuKEZpbmFsaXplci5qYXZhOjE1OSkKKworICAgTG9ja2VkIG93bmFibGUgc3luY2hyb25pemVyczoKKwktIE5vbmUKKworIlJlZmVyZW5jZSBIYW5kbGVyIiBkYWVtb24gcHJpbz0xMCB0aWQ9MTAzMDQzODAwIG5pZD0weDEwN2NhNTAwMCBpbiBPYmplY3Qud2FpdCgpIFsxMDdjYTQwMDBdCisgICBqYXZhLmxhbmcuVGhyZWFkLlN0YXRlOiBXQUlUSU5HIChvbiBvYmplY3QgbW9uaXRvcikKKwlhdCBqYXZhLmxhbmcuT2JqZWN0LndhaXQoTmF0aXZlIE1ldGhvZCkKKwktIHdhaXRpbmcgb24gPDdjOGQxNzE3MD4gKGEgamF2YS5sYW5nLnJlZi5SZWZlcmVuY2UkTG9jaykKKwlhdCBqYXZhLmxhbmcuT2JqZWN0LndhaXQoT2JqZWN0LmphdmE6NDg1KQorCWF0IGphdmEubGFuZy5yZWYuUmVmZXJlbmNlJFJlZmVyZW5jZUhhbmRsZXIucnVuKFJlZmVyZW5jZS5qYXZhOjExNikKKwktIGxvY2tlZCA8N2M4ZDE3MTcwPiAoYSBqYXZhLmxhbmcucmVmLlJlZmVyZW5jZSRMb2NrKQorCisgICBMb2NrZWQgb3duYWJsZSBzeW5jaHJvbml6ZXJzOgorCS0gTm9uZQorCisiVk0gVGhyZWFkIiBwcmlvPTkgdGlkPTEwMzA0MTAwMCBuaWQ9MHgxMDdiYTIwMDAgcnVubmFibGUgCisKKyJWTSBQZXJpb2RpYyBUYXNrIFRocmVhZCIgcHJpbz0xMCB0aWQ9MTAzMDZhMDAwIG5pZD0weDEwODJiNzAwMCB3YWl0aW5nIG9uIGNvbmRpdGlvbiAKKworIkV4Y2VwdGlvbiBDYXRjaGVyIFRocmVhZCIgcHJpbz0xMCB0aWQ9MTAzMDAyMDAwIG5pZD0weDEwMmM5ODAwMCBydW5uYWJsZSAKK0pOSSBnbG9iYWwgcmVmZXJlbmNlczogNjcwMworCisKK0ZvdW5kIG9uZSBKYXZhLWxldmVsIGRlYWRsb2NrOgorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyJKb2JTY2hlZHVsZXIgcG9vbCAwLzEiOgorICB3YWl0aW5nIHRvIGxvY2sgbW9uaXRvciAxMDBkNTg0MjAgKG9iamVjdCA3Yzk3MzQwMDgsIGEgY29tLmludGVsbGlqLnV0aWwuaW8uUGVyc2lzdGVudEJUcmVlRW51bWVyYXRvciksCisgIHdoaWNoIGlzIGhlbGQgYnkgIkFwcGxpY2F0aW9uSW1wbCBwb29sZWQgdGhyZWFkIDAgW1JlYWRBY2Nlc3NUb2tlbl0iCisiQXBwbGljYXRpb25JbXBsIHBvb2xlZCB0aHJlYWQgMCBbUmVhZEFjY2Vzc1Rva2VuXSI6CisgIHdhaXRpbmcgdG8gbG9jayBtb25pdG9yIDEwMDhhODc2OCAob2JqZWN0IDdjOTczM2ZhMCwgYSBjb20uaW50ZWxsaWoudXRpbC5pbmRleGluZy5WYWx1ZUNvbnRhaW5lck1hcCksCisgIHdoaWNoIGlzIGhlbGQgYnkgIkpvYlNjaGVkdWxlciBwb29sIDAvMSIKKworSmF2YSBzdGFjayBpbmZvcm1hdGlvbiBmb3IgdGhlIHRocmVhZHMgbGlzdGVkIGFib3ZlOgorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisiSm9iU2NoZWR1bGVyIHBvb2wgMC8xIjoKKwlhdCBjb20uaW50ZWxsaWoudXRpbC5pby5QZXJzaXN0ZW50SGFzaE1hcC5nZXQoUGVyc2lzdGVudEhhc2hNYXAuamF2YTozMzkpCisJLSB3YWl0aW5nIHRvIGxvY2sgPDdjOTczNDAwOD4gKGEgY29tLmludGVsbGlqLnV0aWwuaW8uUGVyc2lzdGVudEJUcmVlRW51bWVyYXRvcikKKwlhdCBjb20uaW50ZWxsaWoudXRpbC5pbmRleGluZy5NYXBJbmRleFN0b3JhZ2UkMSQxLmNvbXB1dGUoTWFwSW5kZXhTdG9yYWdlLmphdmE6NzcpCisJYXQgY29tLmludGVsbGlqLnV0aWwuaW5kZXhpbmcuTWFwSW5kZXhTdG9yYWdlJDEkMS5jb21wdXRlKE1hcEluZGV4U3RvcmFnZS5qYXZhOjY3KQorCWF0IGNvbS5pbnRlbGxpai51dGlsLmluZGV4aW5nLkNoYW5nZVRyYWNraW5nVmFsdWVDb250YWluZXIuZ2V0TWVyZ2VkRGF0YShDaGFuZ2VUcmFja2luZ1ZhbHVlQ29udGFpbmVyLmphdmE6MTM0KQorCS0gbG9ja2VkIDw3Yzk3MzNmYTA+IChhIGNvbS5pbnRlbGxpai51dGlsLmluZGV4aW5nLlZhbHVlQ29udGFpbmVyTWFwKQorCWF0IGNvbS5pbnRlbGxpai51dGlsLmluZGV4aW5nLkNoYW5nZVRyYWNraW5nVmFsdWVDb250YWluZXIuZ2V0VmFsdWVJdGVyYXRvcihDaGFuZ2VUcmFja2luZ1ZhbHVlQ29udGFpbmVyLmphdmE6OTgpCisJYXQgY29tLmludGVsbGlqLnV0aWwuaW5kZXhpbmcuRmlsZUJhc2VkSW5kZXgucHJvY2Vzc1ZhbHVlc0ltcGwoRmlsZUJhc2VkSW5kZXguamF2YTo5MDApCisJYXQgY29tLmludGVsbGlqLnV0aWwuaW5kZXhpbmcuRmlsZUJhc2VkSW5kZXguZ2V0VmFsdWVzKEZpbGVCYXNlZEluZGV4LmphdmE6ODIyKQorCWF0IGNvbS5pbnRlbGxpai5qYXZhc2NyaXB0LmZsZXguY3NzLkZsZXhDc3NFbGVtZW50RGVzY3JpcHRvclByb3ZpZGVyLmdldFByb3BlcnR5RGVzY3JpcHRvcihGbGV4Q3NzRWxlbWVudERlc2NyaXB0b3JQcm92aWRlci5qYXZhOjE4MCkKKwlhdCBjb20uaW50ZWxsaWoucHNpLmNzcy5pbXBsLnV0aWwudGFibGUuQ3NzRGVzY3JpcHRvcnNVdGlsLmdldFByb3BlcnR5RGVzY3JpcHRvcihDc3NEZXNjcmlwdG9yc1V0aWwuamF2YTo1MCkKKwlhdCBjb20uaW50ZWxsaWoucHNpLmNzcy5pbXBsLnV0aWwudGFibGUuQ3NzRGVzY3JpcHRvcnNVdGlsLmdldENhbm5vbmljYWxQcm9wZXJ0eU5hbWUoQ3NzRGVzY3JpcHRvcnNVdGlsLmphdmE6OTgpCisJYXQgY29tLmludGVsbGlqLnBzaS5jc3MuaW1wbC51dGlsLnRhYmxlLkNzc0Rlc2NyaXB0b3JzVXRpbC5nZXRDYW5ub25pY2FsUHJvcGVydHlOYW1lKENzc0Rlc2NyaXB0b3JzVXRpbC5qYXZhOjEwNCkKKwlhdCBjb20uaW50ZWxsaWoucHNpLmNzcy5icm93c2UuQ3NzQ29sb3JBbm5vdGF0b3IuYW5ub3RhdGUoQ3NzQ29sb3JBbm5vdGF0b3IuamF2YToxMDUpCisJYXQgY29tLmludGVsbGlqLmNvZGVJbnNpZ2h0LmRhZW1vbi5pbXBsLkRlZmF1bHRIaWdobGlnaHRWaXNpdG9yLnJ1bkFubm90YXRvcnMoRGVmYXVsdEhpZ2hsaWdodFZpc2l0b3IuamF2YToxNTcpCisJYXQgY29tLmludGVsbGlqLmNvZGVJbnNpZ2h0LmRhZW1vbi5pbXBsLkRlZmF1bHRIaWdobGlnaHRWaXNpdG9yLnZpc2l0KERlZmF1bHRIaWdobGlnaHRWaXNpdG9yLmphdmE6MTAwKQorCWF0IGNvbS5pbnRlbGxpai5jb2RlSW5zaWdodC5kYWVtb24uaW1wbC5HZW5lcmFsSGlnaGxpZ2h0aW5nUGFzcyQ4LnJ1bihHZW5lcmFsSGlnaGxpZ2h0aW5nUGFzcy5qYXZhOjU5MykKKwlhdCBjb20uaW50ZWxsaWouY29kZUluc2lnaHQuZGFlbW9uLmltcGwuR2VuZXJhbEhpZ2hsaWdodGluZ1Bhc3MuYW5hbHl6ZUJ5VmlzaXRvcnMoR2VuZXJhbEhpZ2hsaWdodGluZ1Bhc3MuamF2YTo3NzEpCisJYXQgY29tLmludGVsbGlqLmNvZGVJbnNpZ2h0LmRhZW1vbi5pbXBsLkdlbmVyYWxIaWdobGlnaHRpbmdQYXNzLmFjY2VzcyQzNjAwKEdlbmVyYWxIaWdobGlnaHRpbmdQYXNzLmphdmE6ODApCisJYXQgY29tLmludGVsbGlqLmNvZGVJbnNpZ2h0LmRhZW1vbi5pbXBsLkdlbmVyYWxIaWdobGlnaHRpbmdQYXNzJDEwLnJ1bihHZW5lcmFsSGlnaGxpZ2h0aW5nUGFzcy5qYXZhOjc3NykKKwlhdCBjb20uaW50ZWxsaWouY29kZUluc2lnaHQuZGFlbW9uLmltcGwuRGVmYXVsdEhpZ2hsaWdodFZpc2l0b3IuYW5hbHl6ZShEZWZhdWx0SGlnaGxpZ2h0VmlzaXRvci5qYXZhOjg0KQorCWF0IGNvbS5pbnRlbGxpai5jb2RlSW5zaWdodC5kYWVtb24uaW1wbC5HZW5lcmFsSGlnaGxpZ2h0aW5nUGFzcy5hbmFseXplQnlWaXNpdG9ycyhHZW5lcmFsSGlnaGxpZ2h0aW5nUGFzcy5qYXZhOjc3NCkKKwlhdCBjb20uaW50ZWxsaWouY29kZUluc2lnaHQuZGFlbW9uLmltcGwuR2VuZXJhbEhpZ2hsaWdodGluZ1Bhc3MuYWNjZXNzJDM2MDAoR2VuZXJhbEhpZ2hsaWdodGluZ1Bhc3MuamF2YTo4MCkKKwlhdCBjb20uaW50ZWxsaWouY29kZUluc2lnaHQuZGFlbW9uLmltcGwuR2VuZXJhbEhpZ2hsaWdodGluZ1Bhc3MkMTAucnVuKEdlbmVyYWxIaWdobGlnaHRpbmdQYXNzLmphdmE6Nzc3KQorCWF0IGNvbS5pbnRlbGxpai5jb2RlSW5zaWdodC5kYWVtb24uaW1wbC5EZWZhdWx0SGlnaGxpZ2h0VmlzaXRvci5hbmFseXplKERlZmF1bHRIaWdobGlnaHRWaXNpdG9yLmphdmE6ODQpCisJYXQgY29tLmludGVsbGlqLmNvZGVJbnNpZ2h0LmRhZW1vbi5pbXBsLkdlbmVyYWxIaWdobGlnaHRpbmdQYXNzLmFuYWx5emVCeVZpc2l0b3JzKEdlbmVyYWxIaWdobGlnaHRpbmdQYXNzLmphdmE6Nzc0KQorCWF0IGNvbS5pbnRlbGxpai5jb2RlSW5zaWdodC5kYWVtb24uaW1wbC5HZW5lcmFsSGlnaGxpZ2h0aW5nUGFzcy5jb2xsZWN0SGlnaGxpZ2h0cyhHZW5lcmFsSGlnaGxpZ2h0aW5nUGFzcy5qYXZhOjYzOSkKKwlhdCBjb20uaW50ZWxsaWouY29kZUluc2lnaHQuZGFlbW9uLmltcGwuR2VuZXJhbEhpZ2hsaWdodGluZ1Bhc3MuY29sbGVjdEluZm9ybWF0aW9uV2l0aFByb2dyZXNzKEdlbmVyYWxIaWdobGlnaHRpbmdQYXNzLmphdmE6MjA0KQorCWF0IGNvbS5pbnRlbGxpai5jb2RlSW5zaWdodC5kYWVtb24uaW1wbC5Qcm9ncmVzc2FibGVUZXh0RWRpdG9ySGlnaGxpZ2h0aW5nUGFzcy5kb0NvbGxlY3RJbmZvcm1hdGlvbihQcm9ncmVzc2FibGVUZXh0RWRpdG9ySGlnaGxpZ2h0aW5nUGFzcy5qYXZhOjU4KQorCWF0IGNvbS5pbnRlbGxpai5jb2RlSGlnaGxpZ2h0aW5nLlRleHRFZGl0b3JIaWdobGlnaHRpbmdQYXNzLmNvbGxlY3RJbmZvcm1hdGlvbihUZXh0RWRpdG9ySGlnaGxpZ2h0aW5nUGFzcy5qYXZhOjYxKQorCWF0IGNvbS5pbnRlbGxpai5jb2RlSW5zaWdodC5kYWVtb24uaW1wbC5QYXNzRXhlY3V0b3JTZXJ2aWNlJFNjaGVkdWxlZFBhc3MkMSQxLnJ1bihQYXNzRXhlY3V0b3JTZXJ2aWNlLmphdmE6MzUwKQorCWF0IGNvbS5pbnRlbGxpai5vcGVuYXBpLmFwcGxpY2F0aW9uLmltcGwuQXBwbGljYXRpb25JbXBsLnRyeVJ1blJlYWRBY3Rpb24oQXBwbGljYXRpb25JbXBsLmphdmE6MTAzNCkKKwlhdCBjb20uaW50ZWxsaWouY29kZUluc2lnaHQuZGFlbW9uLmltcGwuUGFzc0V4ZWN1dG9yU2VydmljZSRTY2hlZHVsZWRQYXNzJDEucnVuKFBhc3NFeGVjdXRvclNlcnZpY2UuamF2YTozNDIpCisJYXQgY29tLmludGVsbGlqLm9wZW5hcGkucHJvZ3Jlc3MuaW1wbC5Qcm9ncmVzc01hbmFnZXJJbXBsLmV4ZWN1dGVQcm9jZXNzVW5kZXJQcm9ncmVzcyhQcm9ncmVzc01hbmFnZXJJbXBsLmphdmE6MjA2KQorCWF0IGNvbS5pbnRlbGxpai5jb2RlSW5zaWdodC5kYWVtb24uaW1wbC5QYXNzRXhlY3V0b3JTZXJ2aWNlJFNjaGVkdWxlZFBhc3MuZG9SdW4oUGFzc0V4ZWN1dG9yU2VydmljZS5qYXZhOjM0MCkKKwlhdCBjb20uaW50ZWxsaWouY29kZUluc2lnaHQuZGFlbW9uLmltcGwuUGFzc0V4ZWN1dG9yU2VydmljZSRTY2hlZHVsZWRQYXNzLnJ1bihQYXNzRXhlY3V0b3JTZXJ2aWNlLmphdmE6MzE2KQorCWF0IGNvbS5pbnRlbGxpai5jb25jdXJyZW5jeS5Kb2JMYXVuY2hlciQzLmNhbGwoSm9iVXRpbC5qYXZhOjEzNCkKKwlhdCBjb20uaW50ZWxsaWouY29uY3VycmVuY3kuSm9iTGF1bmNoZXIkMy5jYWxsKEpvYlV0aWwuamF2YToxMzEpCisJYXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRnV0dXJlVGFzayRTeW5jLmlubmVyUnVuKEZ1dHVyZVRhc2suamF2YTozMDMpCisJYXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRnV0dXJlVGFzay5ydW4oRnV0dXJlVGFzay5qYXZhOjEzOCkKKwlhdCBjb20uaW50ZWxsaWouY29uY3VycmVuY3kuUHJpb3JpdGl6ZWRGdXR1cmVUYXNrLmFjY2VzcyQxMDEoUHJpb3JpdGl6ZWRGdXR1cmVUYXNrLmphdmE6MzEpCisJYXQgY29tLmludGVsbGlqLmNvbmN1cnJlbmN5LlByaW9yaXRpemVkRnV0dXJlVGFzayQxLnJ1bihQcmlvcml0aXplZEZ1dHVyZVRhc2suamF2YTo3MCkKKwlhdCBjb20uaW50ZWxsaWouY29uY3VycmVuY3kuUHJpb3JpdGl6ZWRGdXR1cmVUYXNrLnJ1bihQcmlvcml0aXplZEZ1dHVyZVRhc2suamF2YToxMTMpCisJYXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yJFdvcmtlci5ydW5UYXNrKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjg4NikKKwlhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IkV29ya2VyLnJ1bihUaHJlYWRQb29sRXhlY3V0b3IuamF2YTo5MDgpCisJYXQgamF2YS5sYW5nLlRocmVhZC5ydW4oVGhyZWFkLmphdmE6NjgwKQorIkFwcGxpY2F0aW9uSW1wbCBwb29sZWQgdGhyZWFkIDAgW1JlYWRBY2Nlc3NUb2tlbl0iOgorCWF0IGNvbS5pbnRlbGxpai51dGlsLmluZGV4aW5nLkNoYW5nZVRyYWNraW5nVmFsdWVDb250YWluZXIuZ2V0TWVyZ2VkRGF0YShDaGFuZ2VUcmFja2luZ1ZhbHVlQ29udGFpbmVyLmphdmE6MTI3KQorCS0gd2FpdGluZyB0byBsb2NrIDw3Yzk3MzNmYTA+IChhIGNvbS5pbnRlbGxpai51dGlsLmluZGV4aW5nLlZhbHVlQ29udGFpbmVyTWFwKQorCWF0IGNvbS5pbnRlbGxpai51dGlsLmluZGV4aW5nLkNoYW5nZVRyYWNraW5nVmFsdWVDb250YWluZXIuZ2V0VmFsdWVJdGVyYXRvcihDaGFuZ2VUcmFja2luZ1ZhbHVlQ29udGFpbmVyLmphdmE6OTgpCisJYXQgY29tLmludGVsbGlqLnV0aWwuaW5kZXhpbmcuRmlsZUJhc2VkSW5kZXgucHJvY2Vzc1ZhbHVlc0ltcGwoRmlsZUJhc2VkSW5kZXguamF2YTo4ODcpCisJYXQgY29tLmludGVsbGlqLnV0aWwuaW5kZXhpbmcuRmlsZUJhc2VkSW5kZXgucHJvY2Vzc1ZhbHVlcyhGaWxlQmFzZWRJbmRleC5qYXZhOjg2MCkKKwlhdCBjb20uaW50ZWxsaWouZmxleC51aURlc2lnbmVyLmxpYnJhcmllcy5MaWJyYXJ5U3R5bGVJbmZvQ29sbGVjdG9yJDEucHJvY2VzcyhMaWJyYXJ5U3R5bGVJbmZvQ29sbGVjdG9yLmphdmE6NDIpCisJYXQgY29tLmludGVsbGlqLmZsZXgudWlEZXNpZ25lci5saWJyYXJpZXMuTGlicmFyeVN0eWxlSW5mb0NvbGxlY3RvciQxLnByb2Nlc3MoTGlicmFyeVN0eWxlSW5mb0NvbGxlY3Rvci5qYXZhOjM5KQorCWF0IGNvbS5pbnRlbGxpai51dGlsLmluZGV4aW5nLk1lbW9yeUluZGV4U3RvcmFnZSQxLnByb2Nlc3MoTWVtb3J5SW5kZXhTdG9yYWdlLmphdmE6MTE4KQorCWF0IGNvbS5pbnRlbGxpai51dGlsLmlvLlBlcnNpc3RlbnRFbnVtZXJhdG9yQmFzZS5pdGVyYXRlRGF0YShQZXJzaXN0ZW50RW51bWVyYXRvckJhc2UuamF2YTozNzMpCisJLSBsb2NrZWQgPDdjOGZkNDU1OD4gKGEgY29tLmludGVsbGlqLnV0aWwuaW8uUGFnZWRGaWxlU3RvcmFnZSRTdG9yYWdlTG9jaykKKwlhdCBjb20uaW50ZWxsaWoudXRpbC5pby5QZXJzaXN0ZW50SGFzaE1hcC5wcm9jZXNzS2V5cyhQZXJzaXN0ZW50SGFzaE1hcC5qYXZhOjMxOCkKKwktIGxvY2tlZCA8N2M5NzM0MDA4PiAoYSBjb20uaW50ZWxsaWoudXRpbC5pby5QZXJzaXN0ZW50QlRyZWVFbnVtZXJhdG9yKQorCWF0IGNvbS5pbnRlbGxpai51dGlsLmluZGV4aW5nLk1hcEluZGV4U3RvcmFnZS5wcm9jZXNzS2V5cyhNYXBJbmRleFN0b3JhZ2UuamF2YToxNzMpCisJYXQgY29tLmludGVsbGlqLnV0aWwuaW5kZXhpbmcuTWVtb3J5SW5kZXhTdG9yYWdlLnByb2Nlc3NLZXlzKE1lbW9yeUluZGV4U3RvcmFnZS5qYXZhOjEyNikKKwlhdCBjb20uaW50ZWxsaWoudXRpbC5pbmRleGluZy5NYXBSZWR1Y2VJbmRleC5wcm9jZXNzQWxsS2V5cyhNYXBSZWR1Y2VJbmRleC5qYXZhOjE2NCkKKwlhdCBjb20uaW50ZWxsaWoudXRpbC5pbmRleGluZy5GaWxlQmFzZWRJbmRleC5wcm9jZXNzQWxsS2V5cyhGaWxlQmFzZWRJbmRleC5qYXZhOjY4OCkKKwlhdCBjb20uaW50ZWxsaWouZmxleC51aURlc2lnbmVyLmxpYnJhcmllcy5MaWJyYXJ5U3R5bGVJbmZvQ29sbGVjdG9yLmNvbGxlY3RJbmhlcml0ZWQoTGlicmFyeVN0eWxlSW5mb0NvbGxlY3Rvci5qYXZhOjM5KQorCWF0IGNvbS5pbnRlbGxpai5mbGV4LnVpRGVzaWduZXIubGlicmFyaWVzLkxpYnJhcnlTdHlsZUluZm9Db2xsZWN0b3IuY29uc3VtZShMaWJyYXJ5U3R5bGVJbmZvQ29sbGVjdG9yLmphdmE6NzMpCisJYXQgY29tLmludGVsbGlqLmZsZXgudWlEZXNpZ25lci5saWJyYXJpZXMuTGlicmFyeVN0eWxlSW5mb0NvbGxlY3Rvci5jb25zdW1lKExpYnJhcnlTdHlsZUluZm9Db2xsZWN0b3IuamF2YToxOSkKKwlhdCBjb20uaW50ZWxsaWouZmxleC51aURlc2lnbmVyLmxpYnJhcmllcy5MaWJyYXJ5TWFuYWdlci5jcmVhdGVPcmlnaW5hbExpYnJhcnkoTGlicmFyeU1hbmFnZXIuamF2YToyNjgpCisJYXQgY29tLmludGVsbGlqLmZsZXgudWlEZXNpZ25lci5saWJyYXJpZXMuTGlicmFyeUNvbGxlY3Rvci5hZGRMaWJyYXJ5KExpYnJhcnlDb2xsZWN0b3IuamF2YToyNDMpCisJYXQgY29tLmludGVsbGlqLmZsZXgudWlEZXNpZ25lci5saWJyYXJpZXMuTGlicmFyeUNvbGxlY3Rvci5jb2xsZWN0RnJvbVNka09yZGVyRW50cnkoTGlicmFyeUNvbGxlY3Rvci5qYXZhOjIyMykKKwlhdCBjb20uaW50ZWxsaWouZmxleC51aURlc2lnbmVyLmxpYnJhcmllcy5MaWJyYXJ5Q29sbGVjdG9yLmNvbGxlY3QoTGlicmFyeUNvbGxlY3Rvci5qYXZhOjEzOCkKKwlhdCBjb20uaW50ZWxsaWouZmxleC51aURlc2lnbmVyLmxpYnJhcmllcy5MaWJyYXJ5TWFuYWdlci5pbml0TGlicmFyeVNldHMoTGlicmFyeU1hbmFnZXIuamF2YTo5NSkKKwlhdCBjb20uaW50ZWxsaWouZmxleC51aURlc2lnbmVyLkRlc2lnbmVyQXBwbGljYXRpb25MYXVuY2hlciQ3LmNhbGwoRGVzaWduZXJBcHBsaWNhdGlvbkxhdW5jaGVyLmphdmE6Mzc2KQorCWF0IGNvbS5pbnRlbGxpai5mbGV4LnVpRGVzaWduZXIuRGVzaWduZXJBcHBsaWNhdGlvbkxhdW5jaGVyJDcuY2FsbChEZXNpZ25lckFwcGxpY2F0aW9uTGF1bmNoZXIuamF2YTozNjQpCisJYXQgY29tLmludGVsbGlqLm9wZW5hcGkuYXBwbGljYXRpb24uaW1wbC5BcHBsaWNhdGlvbkltcGwkNy5jYWxsKEFwcGxpY2F0aW9uSW1wbC5qYXZhOjQ0MSkKKwlhdCBqYXZhLnV0aWwuY29uY3VycmVudC5GdXR1cmVUYXNrJFN5bmMuaW5uZXJSdW4oRnV0dXJlVGFzay5qYXZhOjMwMykKKwlhdCBqYXZhLnV0aWwuY29uY3VycmVudC5GdXR1cmVUYXNrLnJ1bihGdXR1cmVUYXNrLmphdmE6MTM4KQorCWF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvciRXb3JrZXIucnVuVGFzayhUaHJlYWRQb29sRXhlY3V0b3IuamF2YTo4ODYpCisJYXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yJFdvcmtlci5ydW4oVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6OTA4KQorCWF0IGphdmEubGFuZy5UaHJlYWQucnVuKFRocmVhZC5qYXZhOjY4MCkKKwlhdCBjb20uaW50ZWxsaWoub3BlbmFwaS5hcHBsaWNhdGlvbi5pbXBsLkFwcGxpY2F0aW9uSW1wbCQxJDEucnVuKEFwcGxpY2F0aW9uSW1wbC5qYXZhOjEzNykKKworRm91bmQgMSBkZWFkbG9jay4KKwpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3Vuc2NyYW1ibGUvdGhyZWFkZHVtcC50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvdW5zY3JhbWJsZS90aHJlYWRkdW1wLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zOGIyZjZjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3Vuc2NyYW1ibGUvdGhyZWFkZHVtcC50eHQKQEAgLTAsMCArMSw0ODUgQEAKKzIwMTAtMDgtMDYgMTQ6MTI6MzAKK0Z1bGwgdGhyZWFkIGR1bXAgSmF2YSBIb3RTcG90KFRNKSBDbGllbnQgVk0gKDE0LjMtYjAxIG1peGVkIG1vZGUpOgorCisiQWxhcm0gcG9vbChvd24pIiBwcmlvPTQgdGlkPTB4MzY2ZGYwMDAgbmlkPTB4MTE4IHdhaXRpbmcgb24gY29uZGl0aW9uIFsweDM1N2VmMDAwXQorICAgamF2YS5sYW5nLlRocmVhZC5TdGF0ZTogV0FJVElORyAocGFya2luZykKKyAgICAgICAgYXQgc3VuLm1pc2MuVW5zYWZlLnBhcmsoTmF0aXZlIE1ldGhvZCkKKyAgICAgICAgLSBwYXJraW5nIHRvIHdhaXQgZm9yICA8MHgwZjMwN2E4OD4gKGEgamF2YS51dGlsLmNvbmN1cnJlbnQubG9ja3MuQWJzdHJhY3RRdWV1ZWRTeW5jaHJvbml6ZXIkQ29uZGl0aW9uT2JqZWN0KQorICAgICAgICBhdCBqYXZhLnV0aWwuY29uY3VycmVudC5sb2Nrcy5Mb2NrU3VwcG9ydC5wYXJrKExvY2tTdXBwb3J0LmphdmE6MTU4KQorICAgICAgICBhdCBqYXZhLnV0aWwuY29uY3VycmVudC5sb2Nrcy5BYnN0cmFjdFF1ZXVlZFN5bmNocm9uaXplciRDb25kaXRpb25PYmplY3QuYXdhaXQoQWJzdHJhY3RRdWV1ZWRTeW5jaHJvbml6ZXIuamF2YToxOTI1KQorICAgICAgICBhdCBqYXZhLnV0aWwuY29uY3VycmVudC5MaW5rZWRCbG9ja2luZ1F1ZXVlLnRha2UoTGlua2VkQmxvY2tpbmdRdWV1ZS5qYXZhOjM1OCkKKyAgICAgICAgYXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yLmdldFRhc2soVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6OTQ3KQorICAgICAgICBhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IkV29ya2VyLnJ1bihUaHJlYWRQb29sRXhlY3V0b3IuamF2YTo5MDcpCisgICAgICAgIGF0IGphdmEubGFuZy5UaHJlYWQucnVuKFRocmVhZC5qYXZhOjYxOSkKKworIkFsYXJtIHBvb2wob3duKSIgcHJpbz00IHRpZD0weDM2NjU5ODAwIG5pZD0weGQ5MCB3YWl0aW5nIG9uIGNvbmRpdGlvbiBbMHgzNTk3ZjAwMF0KKyAgIGphdmEubGFuZy5UaHJlYWQuU3RhdGU6IFdBSVRJTkcgKHBhcmtpbmcpCisgICAgICAgIGF0IHN1bi5taXNjLlVuc2FmZS5wYXJrKE5hdGl2ZSBNZXRob2QpCisgICAgICAgIC0gcGFya2luZyB0byB3YWl0IGZvciAgPDB4MGVhY2NhOTg+IChhIGphdmEudXRpbC5jb25jdXJyZW50LmxvY2tzLkFic3RyYWN0UXVldWVkU3luY2hyb25pemVyJENvbmRpdGlvbk9iamVjdCkKKyAgICAgICAgYXQgamF2YS51dGlsLmNvbmN1cnJlbnQubG9ja3MuTG9ja1N1cHBvcnQucGFyayhMb2NrU3VwcG9ydC5qYXZhOjE1OCkKKyAgICAgICAgYXQgamF2YS51dGlsLmNvbmN1cnJlbnQubG9ja3MuQWJzdHJhY3RRdWV1ZWRTeW5jaHJvbml6ZXIkQ29uZGl0aW9uT2JqZWN0LmF3YWl0KEFic3RyYWN0UXVldWVkU3luY2hyb25pemVyLmphdmE6MTkyNSkKKyAgICAgICAgYXQgamF2YS51dGlsLmNvbmN1cnJlbnQuTGlua2VkQmxvY2tpbmdRdWV1ZS50YWtlKExpbmtlZEJsb2NraW5nUXVldWUuamF2YTozNTgpCisgICAgICAgIGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvci5nZXRUYXNrKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjk0NykKKyAgICAgICAgYXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yJFdvcmtlci5ydW4oVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6OTA3KQorICAgICAgICBhdCBqYXZhLmxhbmcuVGhyZWFkLnJ1bihUaHJlYWQuamF2YTo2MTkpCisKKyJBbGFybSBwb29sKG93bikiIHByaW89NCB0aWQ9MHgzNjQ5MzQwMCBuaWQ9MHg5Njggd2FpdGluZyBvbiBjb25kaXRpb24gWzB4MzZlZmYwMDBdCisgICBqYXZhLmxhbmcuVGhyZWFkLlN0YXRlOiBXQUlUSU5HIChwYXJraW5nKQorICAgICAgICBhdCBzdW4ubWlzYy5VbnNhZmUucGFyayhOYXRpdmUgTWV0aG9kKQorICAgICAgICAtIHBhcmtpbmcgdG8gd2FpdCBmb3IgIDwweDA1YTUyNjk4PiAoYSBqYXZhLnV0aWwuY29uY3VycmVudC5sb2Nrcy5BYnN0cmFjdFF1ZXVlZFN5bmNocm9uaXplciRDb25kaXRpb25PYmplY3QpCisgICAgICAgIGF0IGphdmEudXRpbC5jb25jdXJyZW50LmxvY2tzLkxvY2tTdXBwb3J0LnBhcmsoTG9ja1N1cHBvcnQuamF2YToxNTgpCisgICAgICAgIGF0IGphdmEudXRpbC5jb25jdXJyZW50LmxvY2tzLkFic3RyYWN0UXVldWVkU3luY2hyb25pemVyJENvbmRpdGlvbk9iamVjdC5hd2FpdChBYnN0cmFjdFF1ZXVlZFN5bmNocm9uaXplci5qYXZhOjE5MjUpCisgICAgICAgIGF0IGphdmEudXRpbC5jb25jdXJyZW50LkxpbmtlZEJsb2NraW5nUXVldWUudGFrZShMaW5rZWRCbG9ja2luZ1F1ZXVlLmphdmE6MzU4KQorICAgICAgICBhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IuZ2V0VGFzayhUaHJlYWRQb29sRXhlY3V0b3IuamF2YTo5NDcpCisgICAgICAgIGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvciRXb3JrZXIucnVuKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjkwNykKKyAgICAgICAgYXQgamF2YS5sYW5nLlRocmVhZC5ydW4oVGhyZWFkLmphdmE6NjE5KQorCisiQWxhcm0gcG9vbChvd24pIiBwcmlvPTQgdGlkPTB4MzYxYjI0MDAgbmlkPTB4NWNjIHdhaXRpbmcgb24gY29uZGl0aW9uIFsweDM1Y2JmMDAwXQorICAgamF2YS5sYW5nLlRocmVhZC5TdGF0ZTogV0FJVElORyAocGFya2luZykKKyAgICAgICAgYXQgc3VuLm1pc2MuVW5zYWZlLnBhcmsoTmF0aXZlIE1ldGhvZCkKKyAgICAgICAgLSBwYXJraW5nIHRvIHdhaXQgZm9yICA8MHgwNWE1MmFiMD4gKGEgamF2YS51dGlsLmNvbmN1cnJlbnQubG9ja3MuQWJzdHJhY3RRdWV1ZWRTeW5jaHJvbml6ZXIkQ29uZGl0aW9uT2JqZWN0KQorICAgICAgICBhdCBqYXZhLnV0aWwuY29uY3VycmVudC5sb2Nrcy5Mb2NrU3VwcG9ydC5wYXJrKExvY2tTdXBwb3J0LmphdmE6MTU4KQorICAgICAgICBhdCBqYXZhLnV0aWwuY29uY3VycmVudC5sb2Nrcy5BYnN0cmFjdFF1ZXVlZFN5bmNocm9uaXplciRDb25kaXRpb25PYmplY3QuYXdhaXQoQWJzdHJhY3RRdWV1ZWRTeW5jaHJvbml6ZXIuamF2YToxOTI1KQorICAgICAgICBhdCBqYXZhLnV0aWwuY29uY3VycmVudC5MaW5rZWRCbG9ja2luZ1F1ZXVlLnRha2UoTGlua2VkQmxvY2tpbmdRdWV1ZS5qYXZhOjM1OCkKKyAgICAgICAgYXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yLmdldFRhc2soVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6OTQ3KQorICAgICAgICBhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IkV29ya2VyLnJ1bihUaHJlYWRQb29sRXhlY3V0b3IuamF2YTo5MDcpCisgICAgICAgIGF0IGphdmEubGFuZy5UaHJlYWQucnVuKFRocmVhZC5qYXZhOjYxOSkKKworIlNpbXBsZVRpbWVyIiBkYWVtb24gcHJpbz0yIHRpZD0weDM0YmY2NDAwIG5pZD0weDkyOCBpbiBPYmplY3Qud2FpdCgpIFsweDM1NzlmMDAwXQorICAgamF2YS5sYW5nLlRocmVhZC5TdGF0ZTogV0FJVElORyAob24gb2JqZWN0IG1vbml0b3IpCisgICAgICAgIGF0IGphdmEubGFuZy5PYmplY3Qud2FpdChOYXRpdmUgTWV0aG9kKQorICAgICAgICBhdCBqYXZhLmxhbmcuT2JqZWN0LndhaXQoT2JqZWN0LmphdmE6NDg1KQorICAgICAgICBhdCBqYXZhLnV0aWwuVGltZXJUaHJlYWQubWFpbkxvb3AoVGltZXIuamF2YTo0ODMpCisgICAgICAgIC0gbG9ja2VkIDwweDA3Yzk2ZGIwPiAoYSBqYXZhLnV0aWwuVGFza1F1ZXVlKQorICAgICAgICBhdCBqYXZhLnV0aWwuVGltZXJUaHJlYWQucnVuKFRpbWVyLmphdmE6NDYyKQorCisiU3dpbmctU2hlbGwiIGRhZW1vbiBwcmlvPTYgdGlkPTB4MzYzNzc0MDAgbmlkPTB4YmU4IHdhaXRpbmcgb24gY29uZGl0aW9uIFsweDM4NGNmMDAwXQorICAgamF2YS5sYW5nLlRocmVhZC5TdGF0ZTogV0FJVElORyAocGFya2luZykKKyAgICAgICAgYXQgc3VuLm1pc2MuVW5zYWZlLnBhcmsoTmF0aXZlIE1ldGhvZCkKKyAgICAgICAgLSBwYXJraW5nIHRvIHdhaXQgZm9yICA8MHgwNmZkYThjMD4gKGEgamF2YS51dGlsLmNvbmN1cnJlbnQubG9ja3MuQWJzdHJhY3RRdWV1ZWRTeW5jaHJvbml6ZXIkQ29uZGl0aW9uT2JqZWN0KQorICAgICAgICBhdCBqYXZhLnV0aWwuY29uY3VycmVudC5sb2Nrcy5Mb2NrU3VwcG9ydC5wYXJrKExvY2tTdXBwb3J0LmphdmE6MTU4KQorICAgICAgICBhdCBqYXZhLnV0aWwuY29uY3VycmVudC5sb2Nrcy5BYnN0cmFjdFF1ZXVlZFN5bmNocm9uaXplciRDb25kaXRpb25PYmplY3QuYXdhaXQoQWJzdHJhY3RRdWV1ZWRTeW5jaHJvbml6ZXIuamF2YToxOTI1KQorICAgICAgICBhdCBqYXZhLnV0aWwuY29uY3VycmVudC5MaW5rZWRCbG9ja2luZ1F1ZXVlLnRha2UoTGlua2VkQmxvY2tpbmdRdWV1ZS5qYXZhOjM1OCkKKyAgICAgICAgYXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yLmdldFRhc2soVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6OTQ3KQorICAgICAgICBhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IkV29ya2VyLnJ1bihUaHJlYWRQb29sRXhlY3V0b3IuamF2YTo5MDcpCisgICAgICAgIGF0IHN1bi5hd3Quc2hlbGwuV2luMzJTaGVsbEZvbGRlck1hbmFnZXIyJENvbUludm9rZXIkMy5ydW4oV2luMzJTaGVsbEZvbGRlck1hbmFnZXIyLmphdmE6NDU4KQorICAgICAgICBhdCBqYXZhLmxhbmcuVGhyZWFkLnJ1bihUaHJlYWQuamF2YTo2MTkpCisKKyJKb2JTY2hlZHVsZXIgcG9vbCAwLzEiIHByaW89NiB0aWQ9MHgzNGFiZTAwMCBuaWQ9MHhiMmMgd2FpdGluZyBvbiBjb25kaXRpb24gWzB4Mzg0N2YwMDBdCisgICBqYXZhLmxhbmcuVGhyZWFkLlN0YXRlOiBXQUlUSU5HIChwYXJraW5nKQorICAgICAgICBhdCBzdW4ubWlzYy5VbnNhZmUucGFyayhOYXRpdmUgTWV0aG9kKQorICAgICAgICAtIHBhcmtpbmcgdG8gd2FpdCBmb3IgIDwweDA2ZjMyYjM4PiAoYSBqYXZhLnV0aWwuY29uY3VycmVudC5sb2Nrcy5BYnN0cmFjdFF1ZXVlZFN5bmNocm9uaXplciRDb25kaXRpb25PYmplY3QpCisgICAgICAgIGF0IGphdmEudXRpbC5jb25jdXJyZW50LmxvY2tzLkxvY2tTdXBwb3J0LnBhcmsoTG9ja1N1cHBvcnQuamF2YToxNTgpCisgICAgICAgIGF0IGphdmEudXRpbC5jb25jdXJyZW50LmxvY2tzLkFic3RyYWN0UXVldWVkU3luY2hyb25pemVyJENvbmRpdGlvbk9iamVjdC5hd2FpdChBYnN0cmFjdFF1ZXVlZFN5bmNocm9uaXplci5qYXZhOjE5MjUpCisgICAgICAgIGF0IGphdmEudXRpbC5jb25jdXJyZW50LlByaW9yaXR5QmxvY2tpbmdRdWV1ZS50YWtlKFByaW9yaXR5QmxvY2tpbmdRdWV1ZS5qYXZhOjIyMCkKKyAgICAgICAgYXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yLmdldFRhc2soVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6OTQ3KQorICAgICAgICBhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IkV29ya2VyLnJ1bihUaHJlYWRQb29sRXhlY3V0b3IuamF2YTo5MDcpCisgICAgICAgIGF0IGphdmEubGFuZy5UaHJlYWQucnVuKFRocmVhZC5qYXZhOjYxOSkKKworIkFwcGxpY2F0aW9uSW1wbCBwb29sZWQgdGhyZWFkIiBwcmlvPTQgdGlkPTB4MzRiM2FjMDAgbmlkPTB4OGE4IHdhaXRpbmcgb24gY29uZGl0aW9uIFsweDM4NDJmMDAwXQorICAgamF2YS5sYW5nLlRocmVhZC5TdGF0ZTogVElNRURfV0FJVElORyAocGFya2luZykKKyAgICAgICAgYXQgc3VuLm1pc2MuVW5zYWZlLnBhcmsoTmF0aXZlIE1ldGhvZCkKKyAgICAgICAgLSBwYXJraW5nIHRvIHdhaXQgZm9yICA8MHgwNTMzN2UwOD4gKGEgamF2YS51dGlsLmNvbmN1cnJlbnQuU3luY2hyb25vdXNRdWV1ZSRUcmFuc2ZlclN0YWNrKQorICAgICAgICBhdCBqYXZhLnV0aWwuY29uY3VycmVudC5sb2Nrcy5Mb2NrU3VwcG9ydC5wYXJrTmFub3MoTG9ja1N1cHBvcnQuamF2YToxOTgpCisgICAgICAgIGF0IGphdmEudXRpbC5jb25jdXJyZW50LlN5bmNocm9ub3VzUXVldWUkVHJhbnNmZXJTdGFjay5hd2FpdEZ1bGZpbGwoU3luY2hyb25vdXNRdWV1ZS5qYXZhOjQyNCkKKyAgICAgICAgYXQgamF2YS51dGlsLmNvbmN1cnJlbnQuU3luY2hyb25vdXNRdWV1ZSRUcmFuc2ZlclN0YWNrLnRyYW5zZmVyKFN5bmNocm9ub3VzUXVldWUuamF2YTozMjMpCisgICAgICAgIGF0IGphdmEudXRpbC5jb25jdXJyZW50LlN5bmNocm9ub3VzUXVldWUucG9sbChTeW5jaHJvbm91c1F1ZXVlLmphdmE6ODc0KQorICAgICAgICBhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IuZ2V0VGFzayhUaHJlYWRQb29sRXhlY3V0b3IuamF2YTo5NDUpCisgICAgICAgIGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvciRXb3JrZXIucnVuKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjkwNykKKyAgICAgICAgYXQgamF2YS5sYW5nLlRocmVhZC5ydW4oVGhyZWFkLmphdmE6NjE5KQorICAgICAgICBhdCBjb20uaW50ZWxsaWoub3BlbmFwaS5hcHBsaWNhdGlvbi5pbXBsLkFwcGxpY2F0aW9uSW1wbCQxJDEucnVuKEFwcGxpY2F0aW9uSW1wbC5qYXZhOjEyNSkKKworIkFwcGxpY2F0aW9uSW1wbCBwb29sZWQgdGhyZWFkIiBwcmlvPTQgdGlkPTB4MzY0ODEwMDAgbmlkPTB4OGEwIHdhaXRpbmcgb24gY29uZGl0aW9uIFsweDM4M2RmMDAwXQorICAgamF2YS5sYW5nLlRocmVhZC5TdGF0ZTogVElNRURfV0FJVElORyAocGFya2luZykKKyAgICAgICAgYXQgc3VuLm1pc2MuVW5zYWZlLnBhcmsoTmF0aXZlIE1ldGhvZCkKKyAgICAgICAgLSBwYXJraW5nIHRvIHdhaXQgZm9yICA8MHgwNTMzN2UwOD4gKGEgamF2YS51dGlsLmNvbmN1cnJlbnQuU3luY2hyb25vdXNRdWV1ZSRUcmFuc2ZlclN0YWNrKQorICAgICAgICBhdCBqYXZhLnV0aWwuY29uY3VycmVudC5sb2Nrcy5Mb2NrU3VwcG9ydC5wYXJrTmFub3MoTG9ja1N1cHBvcnQuamF2YToxOTgpCisgICAgICAgIGF0IGphdmEudXRpbC5jb25jdXJyZW50LlN5bmNocm9ub3VzUXVldWUkVHJhbnNmZXJTdGFjay5hd2FpdEZ1bGZpbGwoU3luY2hyb25vdXNRdWV1ZS5qYXZhOjQyNCkKKyAgICAgICAgYXQgamF2YS51dGlsLmNvbmN1cnJlbnQuU3luY2hyb25vdXNRdWV1ZSRUcmFuc2ZlclN0YWNrLnRyYW5zZmVyKFN5bmNocm9ub3VzUXVldWUuamF2YTozMjMpCisgICAgICAgIGF0IGphdmEudXRpbC5jb25jdXJyZW50LlN5bmNocm9ub3VzUXVldWUucG9sbChTeW5jaHJvbm91c1F1ZXVlLmphdmE6ODc0KQorICAgICAgICBhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IuZ2V0VGFzayhUaHJlYWRQb29sRXhlY3V0b3IuamF2YTo5NDUpCisgICAgICAgIGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvciRXb3JrZXIucnVuKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjkwNykKKyAgICAgICAgYXQgamF2YS5sYW5nLlRocmVhZC5ydW4oVGhyZWFkLmphdmE6NjE5KQorICAgICAgICBhdCBjb20uaW50ZWxsaWoub3BlbmFwaS5hcHBsaWNhdGlvbi5pbXBsLkFwcGxpY2F0aW9uSW1wbCQxJDEucnVuKEFwcGxpY2F0aW9uSW1wbC5qYXZhOjEyNSkKKworIkNoYW5nZSBMaXN0IFVwZGF0ZXIiIHByaW89MiB0aWQ9MHgzNDQ0N2MwMCBuaWQ9MHg5MDAgd2FpdGluZyBvbiBjb25kaXRpb24gWzB4MzZmZmYwMDBdCisgICBqYXZhLmxhbmcuVGhyZWFkLlN0YXRlOiBXQUlUSU5HIChwYXJraW5nKQorICAgICAgICBhdCBzdW4ubWlzYy5VbnNhZmUucGFyayhOYXRpdmUgTWV0aG9kKQorICAgICAgICAtIHBhcmtpbmcgdG8gd2FpdCBmb3IgIDwweDA2MzgxNTcwPiAoYSBqYXZhLnV0aWwuY29uY3VycmVudC5sb2Nrcy5BYnN0cmFjdFF1ZXVlZFN5bmNocm9uaXplciRDb25kaXRpb25PYmplY3QpCisgICAgICAgIGF0IGphdmEudXRpbC5jb25jdXJyZW50LmxvY2tzLkxvY2tTdXBwb3J0LnBhcmsoTG9ja1N1cHBvcnQuamF2YToxNTgpCisgICAgICAgIGF0IGphdmEudXRpbC5jb25jdXJyZW50LmxvY2tzLkFic3RyYWN0UXVldWVkU3luY2hyb25pemVyJENvbmRpdGlvbk9iamVjdC5hd2FpdChBYnN0cmFjdFF1ZXVlZFN5bmNocm9uaXplci5qYXZhOjE5MjUpCisgICAgICAgIGF0IGphdmEudXRpbC5jb25jdXJyZW50LkRlbGF5UXVldWUudGFrZShEZWxheVF1ZXVlLmphdmE6MTYwKQorICAgICAgICBhdCBqYXZhLnV0aWwuY29uY3VycmVudC5TY2hlZHVsZWRUaHJlYWRQb29sRXhlY3V0b3IkRGVsYXllZFdvcmtRdWV1ZS50YWtlKFNjaGVkdWxlZFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjU4MykKKyAgICAgICAgYXQgamF2YS51dGlsLmNvbmN1cnJlbnQuU2NoZWR1bGVkVGhyZWFkUG9vbEV4ZWN1dG9yJERlbGF5ZWRXb3JrUXVldWUudGFrZShTY2hlZHVsZWRUaHJlYWRQb29sRXhlY3V0b3IuamF2YTo1NzYpCisgICAgICAgIGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvci5nZXRUYXNrKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjk0NykKKyAgICAgICAgYXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yJFdvcmtlci5ydW4oVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6OTA3KQorICAgICAgICBhdCBqYXZhLmxhbmcuVGhyZWFkLnJ1bihUaHJlYWQuamF2YTo2MTkpCisKKyJUaW1lci0wIiBkYWVtb24gcHJpbz02IHRpZD0weDM0YmU3NDAwIG5pZD0weDhmYyBpbiBPYmplY3Qud2FpdCgpIFsweDM2ZmFmMDAwXQorICAgamF2YS5sYW5nLlRocmVhZC5TdGF0ZTogV0FJVElORyAob24gb2JqZWN0IG1vbml0b3IpCisgICAgICAgIGF0IGphdmEubGFuZy5PYmplY3Qud2FpdChOYXRpdmUgTWV0aG9kKQorICAgICAgICAtIHdhaXRpbmcgb24gPDB4MDZlYjA1NTg+IChhIGphdmEudXRpbC5UYXNrUXVldWUpCisgICAgICAgIGF0IGphdmEubGFuZy5PYmplY3Qud2FpdChPYmplY3QuamF2YTo0ODUpCisgICAgICAgIGF0IGphdmEudXRpbC5UaW1lclRocmVhZC5tYWluTG9vcChUaW1lci5qYXZhOjQ4MykKKyAgICAgICAgLSBsb2NrZWQgPDB4MDZlYjA1NTg+IChhIGphdmEudXRpbC5UYXNrUXVldWUpCisgICAgICAgIGF0IGphdmEudXRpbC5UaW1lclRocmVhZC5ydW4oVGltZXIuamF2YTo0NjIpCisKKyJBcHBsaWNhdGlvbkltcGwgcG9vbGVkIHRocmVhZCIgcHJpbz00IHRpZD0weDM2MWI1YzAwIG5pZD0weDg3OCB3YWl0aW5nIG9uIGNvbmRpdGlvbiBbMHgzNWM2ZjAwMF0KKyAgIGphdmEubGFuZy5UaHJlYWQuU3RhdGU6IFRJTUVEX1dBSVRJTkcgKHBhcmtpbmcpCisgICAgICAgIGF0IHN1bi5taXNjLlVuc2FmZS5wYXJrKE5hdGl2ZSBNZXRob2QpCisgICAgICAgIC0gcGFya2luZyB0byB3YWl0IGZvciAgPDB4MDUzMzdlMDg+IChhIGphdmEudXRpbC5jb25jdXJyZW50LlN5bmNocm9ub3VzUXVldWUkVHJhbnNmZXJTdGFjaykKKyAgICAgICAgYXQgamF2YS51dGlsLmNvbmN1cnJlbnQubG9ja3MuTG9ja1N1cHBvcnQucGFya05hbm9zKExvY2tTdXBwb3J0LmphdmE6MTk4KQorICAgICAgICBhdCBqYXZhLnV0aWwuY29uY3VycmVudC5TeW5jaHJvbm91c1F1ZXVlJFRyYW5zZmVyU3RhY2suYXdhaXRGdWxmaWxsKFN5bmNocm9ub3VzUXVldWUuamF2YTo0MjQpCisgICAgICAgIGF0IGphdmEudXRpbC5jb25jdXJyZW50LlN5bmNocm9ub3VzUXVldWUkVHJhbnNmZXJTdGFjay50cmFuc2ZlcihTeW5jaHJvbm91c1F1ZXVlLmphdmE6MzIzKQorICAgICAgICBhdCBqYXZhLnV0aWwuY29uY3VycmVudC5TeW5jaHJvbm91c1F1ZXVlLnBvbGwoU3luY2hyb25vdXNRdWV1ZS5qYXZhOjg3NCkKKyAgICAgICAgYXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yLmdldFRhc2soVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6OTQ1KQorICAgICAgICBhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IkV29ya2VyLnJ1bihUaHJlYWRQb29sRXhlY3V0b3IuamF2YTo5MDcpCisgICAgICAgIGF0IGphdmEubGFuZy5UaHJlYWQucnVuKFRocmVhZC5qYXZhOjYxOSkKKyAgICAgICAgYXQgY29tLmludGVsbGlqLm9wZW5hcGkuYXBwbGljYXRpb24uaW1wbC5BcHBsaWNhdGlvbkltcGwkMSQxLnJ1bihBcHBsaWNhdGlvbkltcGwuamF2YToxMjUpCisKKyJBbGFybSBwb29sKG93bikiIHByaW89NCB0aWQ9MHgzNjAwY2MwMCBuaWQ9MHg4OWMgd2FpdGluZyBvbiBjb25kaXRpb24gWzB4MzZlYWYwMDBdCisgICBqYXZhLmxhbmcuVGhyZWFkLlN0YXRlOiBXQUlUSU5HIChwYXJraW5nKQorICAgICAgICBhdCBzdW4ubWlzYy5VbnNhZmUucGFyayhOYXRpdmUgTWV0aG9kKQorICAgICAgICAtIHBhcmtpbmcgdG8gd2FpdCBmb3IgIDwweDA1YTUyZGQ4PiAoYSBqYXZhLnV0aWwuY29uY3VycmVudC5sb2Nrcy5BYnN0cmFjdFF1ZXVlZFN5bmNocm9uaXplciRDb25kaXRpb25PYmplY3QpCisgICAgICAgIGF0IGphdmEudXRpbC5jb25jdXJyZW50LmxvY2tzLkxvY2tTdXBwb3J0LnBhcmsoTG9ja1N1cHBvcnQuamF2YToxNTgpCisgICAgICAgIGF0IGphdmEudXRpbC5jb25jdXJyZW50LmxvY2tzLkFic3RyYWN0UXVldWVkU3luY2hyb25pemVyJENvbmRpdGlvbk9iamVjdC5hd2FpdChBYnN0cmFjdFF1ZXVlZFN5bmNocm9uaXplci5qYXZhOjE5MjUpCisgICAgICAgIGF0IGphdmEudXRpbC5jb25jdXJyZW50LkxpbmtlZEJsb2NraW5nUXVldWUudGFrZShMaW5rZWRCbG9ja2luZ1F1ZXVlLmphdmE6MzU4KQorICAgICAgICBhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IuZ2V0VGFzayhUaHJlYWRQb29sRXhlY3V0b3IuamF2YTo5NDcpCisgICAgICAgIGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvciRXb3JrZXIucnVuKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjkwNykKKyAgICAgICAgYXQgamF2YS5sYW5nLlRocmVhZC5ydW4oVGhyZWFkLmphdmE6NjE5KQorCisiQXBwbGljYXRpb25JbXBsIHBvb2xlZCB0aHJlYWQiIHByaW89NCB0aWQ9MHgzNGU0NTAwMCBuaWQ9MHg4YWMgd2FpdGluZyBvbiBjb25kaXRpb24gWzB4MzZlNWYwMDBdCisgICBqYXZhLmxhbmcuVGhyZWFkLlN0YXRlOiBUSU1FRF9XQUlUSU5HIChwYXJraW5nKQorICAgICAgICBhdCBzdW4ubWlzYy5VbnNhZmUucGFyayhOYXRpdmUgTWV0aG9kKQorICAgICAgICAtIHBhcmtpbmcgdG8gd2FpdCBmb3IgIDwweDA1MzM3ZTA4PiAoYSBqYXZhLnV0aWwuY29uY3VycmVudC5TeW5jaHJvbm91c1F1ZXVlJFRyYW5zZmVyU3RhY2spCisgICAgICAgIGF0IGphdmEudXRpbC5jb25jdXJyZW50LmxvY2tzLkxvY2tTdXBwb3J0LnBhcmtOYW5vcyhMb2NrU3VwcG9ydC5qYXZhOjE5OCkKKyAgICAgICAgYXQgamF2YS51dGlsLmNvbmN1cnJlbnQuU3luY2hyb25vdXNRdWV1ZSRUcmFuc2ZlclN0YWNrLmF3YWl0RnVsZmlsbChTeW5jaHJvbm91c1F1ZXVlLmphdmE6NDI0KQorICAgICAgICBhdCBqYXZhLnV0aWwuY29uY3VycmVudC5TeW5jaHJvbm91c1F1ZXVlJFRyYW5zZmVyU3RhY2sudHJhbnNmZXIoU3luY2hyb25vdXNRdWV1ZS5qYXZhOjMyMykKKyAgICAgICAgYXQgamF2YS51dGlsLmNvbmN1cnJlbnQuU3luY2hyb25vdXNRdWV1ZS5wb2xsKFN5bmNocm9ub3VzUXVldWUuamF2YTo4NzQpCisgICAgICAgIGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvci5nZXRUYXNrKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjk0NSkKKyAgICAgICAgYXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yJFdvcmtlci5ydW4oVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6OTA3KQorICAgICAgICBhdCBqYXZhLmxhbmcuVGhyZWFkLnJ1bihUaHJlYWQuamF2YTo2MTkpCisgICAgICAgIGF0IGNvbS5pbnRlbGxpai5vcGVuYXBpLmFwcGxpY2F0aW9uLmltcGwuQXBwbGljYXRpb25JbXBsJDEkMS5ydW4oQXBwbGljYXRpb25JbXBsLmphdmE6MTI1KQorCisiUHJvZ3Jlc3MgQ2FuY2VsIENoZWNrZXIiIHByaW89MTAgdGlkPTB4MzRlNTU0MDAgbmlkPTB4YTFjIHdhaXRpbmcgb24gY29uZGl0aW9uIFsweDM1ZTJmMDAwXQorICAgamF2YS5sYW5nLlRocmVhZC5TdGF0ZTogVElNRURfV0FJVElORyAoc2xlZXBpbmcpCisgICAgICAgIGF0IGphdmEubGFuZy5UaHJlYWQuc2xlZXAoTmF0aXZlIE1ldGhvZCkKKyAgICAgICAgYXQgY29tLmludGVsbGlqLm9wZW5hcGkucHJvZ3Jlc3MuaW1wbC5Qcm9ncmVzc01hbmFnZXJJbXBsJDEucnVuKFByb2dyZXNzTWFuYWdlckltcGwuamF2YTo2MikKKworIkFwcGxpY2F0aW9uSW1wbCBwb29sZWQgdGhyZWFkIiBwcmlvPTQgdGlkPTB4MzRjZTE0MDAgbmlkPTB4OWRjIHdhaXRpbmcgb24gY29uZGl0aW9uIFsweDM1ZGRmMDAwXQorICAgamF2YS5sYW5nLlRocmVhZC5TdGF0ZTogVElNRURfV0FJVElORyAocGFya2luZykKKyAgICAgICAgYXQgc3VuLm1pc2MuVW5zYWZlLnBhcmsoTmF0aXZlIE1ldGhvZCkKKyAgICAgICAgLSBwYXJraW5nIHRvIHdhaXQgZm9yICA8MHgwNTMzN2UwOD4gKGEgamF2YS51dGlsLmNvbmN1cnJlbnQuU3luY2hyb25vdXNRdWV1ZSRUcmFuc2ZlclN0YWNrKQorICAgICAgICBhdCBqYXZhLnV0aWwuY29uY3VycmVudC5sb2Nrcy5Mb2NrU3VwcG9ydC5wYXJrTmFub3MoTG9ja1N1cHBvcnQuamF2YToxOTgpCisgICAgICAgIGF0IGphdmEudXRpbC5jb25jdXJyZW50LlN5bmNocm9ub3VzUXVldWUkVHJhbnNmZXJTdGFjay5hd2FpdEZ1bGZpbGwoU3luY2hyb25vdXNRdWV1ZS5qYXZhOjQyNCkKKyAgICAgICAgYXQgamF2YS51dGlsLmNvbmN1cnJlbnQuU3luY2hyb25vdXNRdWV1ZSRUcmFuc2ZlclN0YWNrLnRyYW5zZmVyKFN5bmNocm9ub3VzUXVldWUuamF2YTozMjMpCisgICAgICAgIGF0IGphdmEudXRpbC5jb25jdXJyZW50LlN5bmNocm9ub3VzUXVldWUucG9sbChTeW5jaHJvbm91c1F1ZXVlLmphdmE6ODc0KQorICAgICAgICBhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IuZ2V0VGFzayhUaHJlYWRQb29sRXhlY3V0b3IuamF2YTo5NDUpCisgICAgICAgIGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvciRXb3JrZXIucnVuKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjkwNykKKyAgICAgICAgYXQgamF2YS5sYW5nLlRocmVhZC5ydW4oVGhyZWFkLmphdmE6NjE5KQorICAgICAgICBhdCBjb20uaW50ZWxsaWoub3BlbmFwaS5hcHBsaWNhdGlvbi5pbXBsLkFwcGxpY2F0aW9uSW1wbCQxJDEucnVuKEFwcGxpY2F0aW9uSW1wbC5qYXZhOjEyNSkKKworIkFsYXJtIHBvb2woc2hhcmVkKSIgcHJpbz00IHRpZD0weDM0ZTUyODAwIG5pZD0weDhlOCB3YWl0aW5nIG9uIGNvbmRpdGlvbiBbMHgzNWQwZjAwMF0KKyAgIGphdmEubGFuZy5UaHJlYWQuU3RhdGU6IFdBSVRJTkcgKHBhcmtpbmcpCisgICAgICAgIGF0IHN1bi5taXNjLlVuc2FmZS5wYXJrKE5hdGl2ZSBNZXRob2QpCisgICAgICAgIC0gcGFya2luZyB0byB3YWl0IGZvciAgPDB4MDUzMzJkNjA+IChhIGphdmEudXRpbC5jb25jdXJyZW50LmxvY2tzLkFic3RyYWN0UXVldWVkU3luY2hyb25pemVyJENvbmRpdGlvbk9iamVjdCkKKyAgICAgICAgYXQgamF2YS51dGlsLmNvbmN1cnJlbnQubG9ja3MuTG9ja1N1cHBvcnQucGFyayhMb2NrU3VwcG9ydC5qYXZhOjE1OCkKKyAgICAgICAgYXQgamF2YS51dGlsLmNvbmN1cnJlbnQubG9ja3MuQWJzdHJhY3RRdWV1ZWRTeW5jaHJvbml6ZXIkQ29uZGl0aW9uT2JqZWN0LmF3YWl0KEFic3RyYWN0UXVldWVkU3luY2hyb25pemVyLmphdmE6MTkyNSkKKyAgICAgICAgYXQgamF2YS51dGlsLmNvbmN1cnJlbnQuTGlua2VkQmxvY2tpbmdRdWV1ZS50YWtlKExpbmtlZEJsb2NraW5nUXVldWUuamF2YTozNTgpCisgICAgICAgIGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvci5nZXRUYXNrKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjk0NykKKyAgICAgICAgYXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yJFdvcmtlci5ydW4oVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6OTA3KQorICAgICAgICBhdCBqYXZhLmxhbmcuVGhyZWFkLnJ1bihUaHJlYWQuamF2YTo2MTkpCisKKyJUaW1lclF1ZXVlIiBkYWVtb24gcHJpbz02IHRpZD0weDM0ZTNmODAwIG5pZD0weDk0OCBpbiBPYmplY3Qud2FpdCgpIFsweDM1NzRmMDAwXQorICAgamF2YS5sYW5nLlRocmVhZC5TdGF0ZTogVElNRURfV0FJVElORyAob24gb2JqZWN0IG1vbml0b3IpCisgICAgICAgIGF0IGphdmEubGFuZy5PYmplY3Qud2FpdChOYXRpdmUgTWV0aG9kKQorICAgICAgICBhdCBqYXZheC5zd2luZy5UaW1lclF1ZXVlLnJ1bihUaW1lclF1ZXVlLmphdmE6MjMyKQorICAgICAgICAtIGxvY2tlZCA8MHgwNWUwODEyMD4gKGEgamF2YXguc3dpbmcuVGltZXJRdWV1ZSkKKyAgICAgICAgYXQgamF2YS5sYW5nLlRocmVhZC5ydW4oVGhyZWFkLmphdmE6NjE5KQorCisiRXhlNEpTdGFydHVwVGhyZWFkIiBkYWVtb24gcHJpbz02IHRpZD0weDM0YWI5ODAwIG5pZD0weDRmMCB3YWl0aW5nIG9uIGNvbmRpdGlvbiBbMHgzNTZlZjAwMF0KKyAgIGphdmEubGFuZy5UaHJlYWQuU3RhdGU6IFRJTUVEX1dBSVRJTkcgKHNsZWVwaW5nKQorICAgICAgICBhdCBqYXZhLmxhbmcuVGhyZWFkLnNsZWVwKE5hdGl2ZSBNZXRob2QpCisgICAgICAgIGF0IGNvbS5leGU0ai5Db250cm9sbGVyJFN0YXJ0dXBUaHJlYWQucnVuKFVua25vd24gU291cmNlKQorCisiRlMgU3luY2hyb25pemVyIiBwcmlvPTYgdGlkPTB4MzRlNDg0MDAgbmlkPTB4ZjY0IHdhaXRpbmcgZm9yIG1vbml0b3IgZW50cnkgWzB4MzU2OWYwMDBdCisgICBqYXZhLmxhbmcuVGhyZWFkLlN0YXRlOiBCTE9DS0VEIChvbiBvYmplY3QgbW9uaXRvcikKKyAgICAgICAgYXQgY29tLmludGVsbGlqLm9wZW5hcGkudmZzLmltcGwubG9jYWwuRmlsZVdhdGNoZXIuZ2V0RGlydHlQYXRocyhGaWxlV2F0Y2hlci5qYXZhOjExNCkKKyAgICAgICAgLSB3YWl0aW5nIHRvIGxvY2sgPDB4MDU5NWFlNDA+IChhIGphdmEubGFuZy5PYmplY3QpCisgICAgICAgIGF0IGNvbS5pbnRlbGxpai5vcGVuYXBpLnZmcy5pbXBsLmxvY2FsLkxvY2FsRmlsZVN5c3RlbUltcGwuYihMb2NhbEZpbGVTeXN0ZW1JbXBsLmphdmE6MTg5KQorICAgICAgICBhdCBjb20uaW50ZWxsaWoub3BlbmFwaS52ZnMuaW1wbC5sb2NhbC5Mb2NhbEZpbGVTeXN0ZW1JbXBsLm1hcmtTdXNwaWNvdXNGaWxlc0RpcnR5KExvY2FsRmlsZVN5c3RlbUltcGwuamF2YToyMzApCisgICAgICAgIGF0IGNvbS5pbnRlbGxpai5vcGVuYXBpLnZmcy5uZXd2ZnMuUmVmcmVzaFNlc3Npb25JbXBsLnNjYW4oUmVmcmVzaFNlc3Npb25JbXBsLmphdmE6ODYpCisgICAgICAgIGF0IGNvbS5pbnRlbGxpai5vcGVuYXBpLnZmcy5uZXd2ZnMuUmVmcmVzaFF1ZXVlSW1wbCQxLnJ1bihSZWZyZXNoUXVldWVJbXBsLmphdmE6NzQpCisgICAgICAgIGF0IGphdmEudXRpbC5jb25jdXJyZW50LkV4ZWN1dG9ycyRSdW5uYWJsZUFkYXB0ZXIuY2FsbChFeGVjdXRvcnMuamF2YTo0NDEpCisgICAgICAgIGF0IGphdmEudXRpbC5jb25jdXJyZW50LkZ1dHVyZVRhc2skU3luYy5pbm5lclJ1bihGdXR1cmVUYXNrLmphdmE6MzAzKQorICAgICAgICBhdCBqYXZhLnV0aWwuY29uY3VycmVudC5GdXR1cmVUYXNrLnJ1bihGdXR1cmVUYXNrLmphdmE6MTM4KQorICAgICAgICBhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IkV29ya2VyLnJ1blRhc2soVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6ODg2KQorICAgICAgICBhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IkV29ya2VyLnJ1bihUaHJlYWRQb29sRXhlY3V0b3IuamF2YTo5MDgpCisgICAgICAgIGF0IGphdmEubGFuZy5UaHJlYWQucnVuKFRocmVhZC5qYXZhOjYxOSkKKworIlhNTC1SUEMgV2VibGlzdGVuZXIiIHByaW89NCB0aWQ9MHgzNGMwZTQwMCBuaWQ9MHg4ZGMgcnVubmFibGUgWzB4MzVmZGYwMDBdCisgICBqYXZhLmxhbmcuVGhyZWFkLlN0YXRlOiBSVU5OQUJMRQorICAgICAgICBhdCBqYXZhLm5ldC5QbGFpblNvY2tldEltcGwuc29ja2V0QWNjZXB0KE5hdGl2ZSBNZXRob2QpCisgICAgICAgIGF0IGphdmEubmV0LlBsYWluU29ja2V0SW1wbC5hY2NlcHQoUGxhaW5Tb2NrZXRJbXBsLmphdmE6MzkwKQorICAgICAgICAtIGxvY2tlZCA8MHgwNWE3M2Q5MD4gKGEgamF2YS5uZXQuU29ja3NTb2NrZXRJbXBsKQorICAgICAgICBhdCBqYXZhLm5ldC5TZXJ2ZXJTb2NrZXQuaW1wbEFjY2VwdChTZXJ2ZXJTb2NrZXQuamF2YTo0NTMpCisgICAgICAgIGF0IGphdmEubmV0LlNlcnZlclNvY2tldC5hY2NlcHQoU2VydmVyU29ja2V0LmphdmE6NDIxKQorICAgICAgICBhdCBvcmcuYXBhY2hlLnhtbHJwYy5XZWJTZXJ2ZXIucnVuKFdlYlNlcnZlci5qYXZhOjQ1MykKKyAgICAgICAgYXQgamF2YS5sYW5nLlRocmVhZC5ydW4oVGhyZWFkLmphdmE6NjE5KQorCisiUGVyZm9ybWFuY2Ugd2F0Y2hlciIgcHJpbz0yIHRpZD0weDM0ZDBjNDAwIG5pZD0weDhjYyB3YWl0aW5nIG9uIGNvbmRpdGlvbiBbMHgzNWY4ZjAwMF0KKyAgIGphdmEubGFuZy5UaHJlYWQuU3RhdGU6IFRJTUVEX1dBSVRJTkcgKHBhcmtpbmcpCisgICAgICAgIGF0IHN1bi5taXNjLlVuc2FmZS5wYXJrKE5hdGl2ZSBNZXRob2QpCisgICAgICAgIC0gcGFya2luZyB0byB3YWl0IGZvciAgPDB4MDVhNzNlYjg+IChhIGphdmEudXRpbC5jb25jdXJyZW50LlNlbWFwaG9yZSROb25mYWlyU3luYykKKyAgICAgICAgYXQgamF2YS51dGlsLmNvbmN1cnJlbnQubG9ja3MuTG9ja1N1cHBvcnQucGFya05hbm9zKExvY2tTdXBwb3J0LmphdmE6MTk4KQorICAgICAgICBhdCBqYXZhLnV0aWwuY29uY3VycmVudC5sb2Nrcy5BYnN0cmFjdFF1ZXVlZFN5bmNocm9uaXplci5kb0FjcXVpcmVTaGFyZWROYW5vcyhBYnN0cmFjdFF1ZXVlZFN5bmNocm9uaXplci5qYXZhOjk0NykKKyAgICAgICAgYXQgamF2YS51dGlsLmNvbmN1cnJlbnQubG9ja3MuQWJzdHJhY3RRdWV1ZWRTeW5jaHJvbml6ZXIudHJ5QWNxdWlyZVNoYXJlZE5hbm9zKEFic3RyYWN0UXVldWVkU3luY2hyb25pemVyLmphdmE6MTIzOSkKKyAgICAgICAgYXQgamF2YS51dGlsLmNvbmN1cnJlbnQuU2VtYXBob3JlLnRyeUFjcXVpcmUoU2VtYXBob3JlLmphdmE6MzgzKQorICAgICAgICBhdCBjb20uaW50ZWxsaWouZGlhZ25vc3RpYy5QZXJmb3JtYW5jZVdhdGNoZXIuYyhQZXJmb3JtYW5jZVdhdGNoZXIuamF2YToxNTgpCisgICAgICAgIGF0IGNvbS5pbnRlbGxpai5kaWFnbm9zdGljLlBlcmZvcm1hbmNlV2F0Y2hlci5hY2Nlc3MkMTAwKFBlcmZvcm1hbmNlV2F0Y2hlci5qYXZhOjQyKQorICAgICAgICBhdCBjb20uaW50ZWxsaWouZGlhZ25vc3RpYy5QZXJmb3JtYW5jZVdhdGNoZXIkMi5ydW4oUGVyZm9ybWFuY2VXYXRjaGVyLmphdmE6MTE2KQorICAgICAgICBhdCBqYXZhLmxhbmcuVGhyZWFkLnJ1bihUaHJlYWQuamF2YTo2MTkpCisKKyJBcHBsaWNhdGlvbkltcGwgcG9vbGVkIHRocmVhZCIgcHJpbz00IHRpZD0weDM0NDM0NDAwIG5pZD0weDg5OCB3YWl0aW5nIG9uIGNvbmRpdGlvbiBbMHgzNWYzZjAwMF0KKyAgIGphdmEubGFuZy5UaHJlYWQuU3RhdGU6IFRJTUVEX1dBSVRJTkcgKHBhcmtpbmcpCisgICAgICAgIGF0IHN1bi5taXNjLlVuc2FmZS5wYXJrKE5hdGl2ZSBNZXRob2QpCisgICAgICAgIC0gcGFya2luZyB0byB3YWl0IGZvciAgPDB4MDUzMzdlMDg+IChhIGphdmEudXRpbC5jb25jdXJyZW50LlN5bmNocm9ub3VzUXVldWUkVHJhbnNmZXJTdGFjaykKKyAgICAgICAgYXQgamF2YS51dGlsLmNvbmN1cnJlbnQubG9ja3MuTG9ja1N1cHBvcnQucGFya05hbm9zKExvY2tTdXBwb3J0LmphdmE6MTk4KQorICAgICAgICBhdCBqYXZhLnV0aWwuY29uY3VycmVudC5TeW5jaHJvbm91c1F1ZXVlJFRyYW5zZmVyU3RhY2suYXdhaXRGdWxmaWxsKFN5bmNocm9ub3VzUXVldWUuamF2YTo0MjQpCisgICAgICAgIGF0IGphdmEudXRpbC5jb25jdXJyZW50LlN5bmNocm9ub3VzUXVldWUkVHJhbnNmZXJTdGFjay50cmFuc2ZlcihTeW5jaHJvbm91c1F1ZXVlLmphdmE6MzIzKQorICAgICAgICBhdCBqYXZhLnV0aWwuY29uY3VycmVudC5TeW5jaHJvbm91c1F1ZXVlLnBvbGwoU3luY2hyb25vdXNRdWV1ZS5qYXZhOjg3NCkKKyAgICAgICAgYXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yLmdldFRhc2soVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6OTQ1KQorICAgICAgICBhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IkV29ya2VyLnJ1bihUaHJlYWRQb29sRXhlY3V0b3IuamF2YTo5MDcpCisgICAgICAgIGF0IGphdmEubGFuZy5UaHJlYWQucnVuKFRocmVhZC5qYXZhOjYxOSkKKyAgICAgICAgYXQgY29tLmludGVsbGlqLm9wZW5hcGkuYXBwbGljYXRpb24uaW1wbC5BcHBsaWNhdGlvbkltcGwkMSQxLnJ1bihBcHBsaWNhdGlvbkltcGwuamF2YToxMjUpCisKKyJTdG9yZVJlZnJlc2hTdGF0dXNUaHJlYWQiIGRhZW1vbiBwcmlvPTIgdGlkPTB4MzRjMWU0MDAgbmlkPTB4MWRjIHdhaXRpbmcgZm9yIG1vbml0b3IgZW50cnkgWzB4MzUzZGYwMDBdCisgICBqYXZhLmxhbmcuVGhyZWFkLlN0YXRlOiBCTE9DS0VEIChvbiBvYmplY3QgbW9uaXRvcikKKyAgICAgICAgYXQgY29tLmludGVsbGlqLm9wZW5hcGkudmZzLmltcGwubG9jYWwuRmlsZVdhdGNoZXIuZ2V0RGlydHlQYXRocyhGaWxlV2F0Y2hlci5qYXZhOjExNCkKKyAgICAgICAgLSB3YWl0aW5nIHRvIGxvY2sgPDB4MDU5NWFlNDA+IChhIGphdmEubGFuZy5PYmplY3QpCisgICAgICAgIGF0IGNvbS5pbnRlbGxpai5vcGVuYXBpLnZmcy5pbXBsLmxvY2FsLkxvY2FsRmlsZVN5c3RlbUltcGwuYihMb2NhbEZpbGVTeXN0ZW1JbXBsLmphdmE6MTg5KQorICAgICAgICBhdCBjb20uaW50ZWxsaWoub3BlbmFwaS52ZnMuaW1wbC5sb2NhbC5Mb2NhbEZpbGVTeXN0ZW1JbXBsLmFjY2VzcyQyMDAoTG9jYWxGaWxlU3lzdGVtSW1wbC5qYXZhOjQzKQorICAgICAgICBhdCBjb20uaW50ZWxsaWoub3BlbmFwaS52ZnMuaW1wbC5sb2NhbC5Mb2NhbEZpbGVTeXN0ZW1JbXBsJFN0b3JlUmVmcmVzaFN0YXR1c1RocmVhZC5ydW4oTG9jYWxGaWxlU3lzdGVtSW1wbC5qYXZhOjI5NykKKworIldhdGNoRm9yQ2hhbmdlc1RocmVhZCIgcHJpbz02IHRpZD0weDM0YTg0ODAwIG5pZD0weDFjOCB3YWl0aW5nIGZvciBtb25pdG9yIGVudHJ5IFsweDM1MmJmMDAwXQorICAgamF2YS5sYW5nLlRocmVhZC5TdGF0ZTogQkxPQ0tFRCAob24gb2JqZWN0IG1vbml0b3IpCisgICAgICAgIGF0IGNvbS5pbnRlbGxpai5vcGVuYXBpLnZmcy5pbXBsLmxvY2FsLkZpbGVXYXRjaGVyLmEoRmlsZVdhdGNoZXIuamF2YToxODUpCisgICAgICAgIC0gd2FpdGluZyB0byBsb2NrIDwweDA1OTVhZTQwPiAoYSBqYXZhLmxhbmcuT2JqZWN0KQorICAgICAgICBhdCBjb20uaW50ZWxsaWoub3BlbmFwaS52ZnMuaW1wbC5sb2NhbC5GaWxlV2F0Y2hlci5hY2Nlc3MkNzAwKEZpbGVXYXRjaGVyLmphdmE6NDkpCisgICAgICAgIGF0IGNvbS5pbnRlbGxpai5vcGVuYXBpLnZmcy5pbXBsLmxvY2FsLkZpbGVXYXRjaGVyJFdhdGNoRm9yQ2hhbmdlc1RocmVhZC5ydW4oRmlsZVdhdGNoZXIuamF2YToyNzEpCisKKyJBV1QtRXZlbnRRdWV1ZS0xIDkuMC4zI0lVLTk1LjQ3NCwgZWFwOmZhbHNlIiBwcmlvPTYgdGlkPTB4MzRkNTIwMDAgbmlkPTB4YzFjIHJ1bm5hYmxlIFsweDM1NDdlMDAwXQorICAgamF2YS5sYW5nLlRocmVhZC5TdGF0ZTogUlVOTkFCTEUKKyAgICAgICAgYXQgamF2YS5pby5GaWxlT3V0cHV0U3RyZWFtLndyaXRlQnl0ZXMoTmF0aXZlIE1ldGhvZCkKKyAgICAgICAgYXQgamF2YS5pby5GaWxlT3V0cHV0U3RyZWFtLndyaXRlKEZpbGVPdXRwdXRTdHJlYW0uamF2YToyNjApCisgICAgICAgIGF0IGphdmEuaW8uQnVmZmVyZWRPdXRwdXRTdHJlYW0uZmx1c2hCdWZmZXIoQnVmZmVyZWRPdXRwdXRTdHJlYW0uamF2YTo2NSkKKyAgICAgICAgYXQgamF2YS5pby5CdWZmZXJlZE91dHB1dFN0cmVhbS5mbHVzaChCdWZmZXJlZE91dHB1dFN0cmVhbS5qYXZhOjEyMykKKyAgICAgICAgLSBsb2NrZWQgPDB4MDU5NjYxYTg+IChhIGphdmEuaW8uQnVmZmVyZWRPdXRwdXRTdHJlYW0pCisgICAgICAgIGF0IHN1bi5uaW8uY3MuU3RyZWFtRW5jb2Rlci5pbXBsRmx1c2goU3RyZWFtRW5jb2Rlci5qYXZhOjI3OCkKKyAgICAgICAgYXQgc3VuLm5pby5jcy5TdHJlYW1FbmNvZGVyLmZsdXNoKFN0cmVhbUVuY29kZXIuamF2YToxMjIpCisgICAgICAgIC0gbG9ja2VkIDwweDA1OTY2MWQwPiAoYSBqYXZhLmlvLk91dHB1dFN0cmVhbVdyaXRlcikKKyAgICAgICAgYXQgamF2YS5pby5PdXRwdXRTdHJlYW1Xcml0ZXIuZmx1c2goT3V0cHV0U3RyZWFtV3JpdGVyLmphdmE6MjEyKQorICAgICAgICBhdCBqYXZhLmlvLkJ1ZmZlcmVkV3JpdGVyLmZsdXNoKEJ1ZmZlcmVkV3JpdGVyLmphdmE6MjM2KQorICAgICAgICAtIGxvY2tlZCA8MHgwNTk2NjFkMD4gKGEgamF2YS5pby5PdXRwdXRTdHJlYW1Xcml0ZXIpCisgICAgICAgIGF0IGNvbS5pbnRlbGxpai5vcGVuYXBpLnZmcy5pbXBsLmxvY2FsLkZpbGVXYXRjaGVyLmIoRmlsZVdhdGNoZXIuamF2YTozNDQpCisgICAgICAgIGF0IGNvbS5pbnRlbGxpai5vcGVuYXBpLnZmcy5pbXBsLmxvY2FsLkZpbGVXYXRjaGVyLnNldFdhdGNoUm9vdHMoRmlsZVdhdGNoZXIuamF2YToxNTkpCisgICAgICAgIC0gbG9ja2VkIDwweDA1OTVhZTQwPiAoYSBqYXZhLmxhbmcuT2JqZWN0KQorICAgICAgICBhdCBjb20uaW50ZWxsaWoub3BlbmFwaS52ZnMuaW1wbC5sb2NhbC5Mb2NhbEZpbGVTeXN0ZW1JbXBsJDIucnVuKExvY2FsRmlsZVN5c3RlbUltcGwuamF2YToyNzIpCisgICAgICAgIGF0IGNvbS5pbnRlbGxpai5vcGVuYXBpLmFwcGxpY2F0aW9uLmltcGwuQXBwbGljYXRpb25JbXBsLnJ1blJlYWRBY3Rpb24oQXBwbGljYXRpb25JbXBsLmphdmE6Njk3KQorICAgICAgICBhdCBjb20uaW50ZWxsaWoub3BlbmFwaS52ZnMuaW1wbC5sb2NhbC5Mb2NhbEZpbGVTeXN0ZW1JbXBsLmMoTG9jYWxGaWxlU3lzdGVtSW1wbC5qYXZhOjI1NSkKKyAgICAgICAgYXQgY29tLmludGVsbGlqLm9wZW5hcGkudmZzLmltcGwubG9jYWwuTG9jYWxGaWxlU3lzdGVtSW1wbC5yZW1vdmVXYXRjaGVkUm9vdHMoTG9jYWxGaWxlU3lzdGVtSW1wbC5qYXZhOjQwMikKKyAgICAgICAgYXQgY29tLmludGVsbGlqLm9wZW5hcGkucm9vdHMuaW1wbC5Qcm9qZWN0Um9vdE1hbmFnZXJJbXBsLmQoUHJvamVjdFJvb3RNYW5hZ2VySW1wbC5qYXZhOjY2OSkKKyAgICAgICAgYXQgY29tLmludGVsbGlqLm9wZW5hcGkucm9vdHMuaW1wbC5Qcm9qZWN0Um9vdE1hbmFnZXJJbXBsLmMoUHJvamVjdFJvb3RNYW5hZ2VySW1wbC5qYXZhOjU0MikKKyAgICAgICAgYXQgY29tLmludGVsbGlqLm9wZW5hcGkucm9vdHMuaW1wbC5Qcm9qZWN0Um9vdE1hbmFnZXJJbXBsLmFjY2VzcyQxMDAoUHJvamVjdFJvb3RNYW5hZ2VySW1wbC5qYXZhOjcwKQorICAgICAgICBhdCBjb20uaW50ZWxsaWoub3BlbmFwaS5yb290cy5pbXBsLlByb2plY3RSb290TWFuYWdlckltcGwkQmF0Y2hTZXNzaW9uLmZpcmVDaGFuZ2UoUHJvamVjdFJvb3RNYW5hZ2VySW1wbC5qYXZhOjEzNSkKKyAgICAgICAgYXQgY29tLmludGVsbGlqLm9wZW5hcGkucm9vdHMuaW1wbC5Qcm9qZWN0Um9vdE1hbmFnZXJJbXBsJEJhdGNoU2Vzc2lvbi5yb290c0NoYW5nZWQoUHJvamVjdFJvb3RNYW5hZ2VySW1wbC5qYXZhOjE0OCkKKyAgICAgICAgYXQgY29tLmludGVsbGlqLm9wZW5hcGkucm9vdHMuaW1wbC5Qcm9qZWN0Um9vdE1hbmFnZXJJbXBsLm1ha2VSb290c0NoYW5nZShQcm9qZWN0Um9vdE1hbmFnZXJJbXBsLmphdmE6NDY5KQorICAgICAgICBhdCBjb20uaW50ZWxsaWoub3BlbmFwaS5tb2R1bGUuaW1wbC5Nb2R1bGVNYW5hZ2VySW1wbC5hKE1vZHVsZU1hbmFnZXJJbXBsLmphdmE6ODk0KQorICAgICAgICBhdCBjb20uaW50ZWxsaWoub3BlbmFwaS5tb2R1bGUuaW1wbC5Nb2R1bGVNYW5hZ2VySW1wbC5hY2Nlc3MkMjAwMChNb2R1bGVNYW5hZ2VySW1wbC5qYXZhOjczKQorICAgICAgICBhdCBjb20uaW50ZWxsaWoub3BlbmFwaS5tb2R1bGUuaW1wbC5Nb2R1bGVNYW5hZ2VySW1wbCRNb2R1bGVNb2RlbEltcGwuY29tbWl0V2l0aFJ1bm5hYmxlKE1vZHVsZU1hbmFnZXJJbXBsLmphdmE6ODAwKQorICAgICAgICBhdCBjb20uaW50ZWxsaWoub3BlbmFwaS5tb2R1bGUuaW1wbC5Nb2R1bGVNYW5hZ2VySW1wbC5jb21taXRNb2RlbFdpdGhSdW5uYWJsZShNb2R1bGVNYW5hZ2VySW1wbC5qYXZhOjU2NykKKyAgICAgICAgYXQgY29tLmludGVsbGlqLm9wZW5hcGkucm9vdHMuaW1wbC5Nb2R1bGVSb290TWFuYWdlckltcGwubXVsdGlDb21taXQoTW9kdWxlUm9vdE1hbmFnZXJJbXBsLmphdmE6MzA0KQorICAgICAgICBhdCBjb20uaW50ZWxsaWoub3BlbmFwaS5yb290cy5pbXBsLlByb2plY3RSb290TWFuYWdlckltcGwubXVsdGlDb21taXQoUHJvamVjdFJvb3RNYW5hZ2VySW1wbC5qYXZhOjI0MikKKyAgICAgICAgYXQgY29tLmludGVsbGlqLm9wZW5hcGkubW9kdWxlLmltcGwuTW9kdWxlTWFuYWdlckltcGwkTW9kdWxlTW9kZWxJbXBsLmNvbW1pdChNb2R1bGVNYW5hZ2VySW1wbC5qYXZhOjc5NikKKyAgICAgICAgYXQgY29tLmludGVsbGlqLmlkZS51dGlsLnByb2plY3RXaXphcmQuTW9kdWxlQnVpbGRlci5jcmVhdGVBbmRDb21taXRJZk5lZWRlZChNb2R1bGVCdWlsZGVyLmphdmE6MTUyKQorICAgICAgICBhdCBjb20uaW50ZWxsaWouaWRlLnV0aWwucHJvamVjdFdpemFyZC5Nb2R1bGVCdWlsZGVyJDIuY29tcHV0ZShNb2R1bGVCdWlsZGVyLmphdmE6MjAyKQorICAgICAgICBhdCBjb20uaW50ZWxsaWouaWRlLnV0aWwucHJvamVjdFdpemFyZC5Nb2R1bGVCdWlsZGVyJDIuY29tcHV0ZShNb2R1bGVCdWlsZGVyLmphdmE6MTk5KQorICAgICAgICBhdCBjb20uaW50ZWxsaWoub3BlbmFwaS5hcHBsaWNhdGlvbi5pbXBsLkFwcGxpY2F0aW9uSW1wbCQxMS5ydW4oQXBwbGljYXRpb25JbXBsLmphdmE6Nzc0KQorICAgICAgICBhdCBjb20uaW50ZWxsaWoub3BlbmFwaS5hcHBsaWNhdGlvbi5pbXBsLkFwcGxpY2F0aW9uSW1wbC5ydW5Xcml0ZUFjdGlvbihBcHBsaWNhdGlvbkltcGwuamF2YTo3NTQpCisgICAgICAgIGF0IGNvbS5pbnRlbGxpai5vcGVuYXBpLmFwcGxpY2F0aW9uLmltcGwuQXBwbGljYXRpb25JbXBsLnJ1bldyaXRlQWN0aW9uKEFwcGxpY2F0aW9uSW1wbC5qYXZhOjc3MikKKyAgICAgICAgYXQgY29tLmludGVsbGlqLmlkZS51dGlsLnByb2plY3RXaXphcmQuTW9kdWxlQnVpbGRlci5jb21taXRNb2R1bGUoTW9kdWxlQnVpbGRlci5qYXZhOjE5OSkKKyAgICAgICAgYXQgY29tLmludGVsbGlqLmlkZS51dGlsLnByb2plY3RXaXphcmQuTW9kdWxlQnVpbGRlci5jb21taXQoTW9kdWxlQnVpbGRlci5qYXZhOjE4NikKKyAgICAgICAgYXQgY29tLmludGVsbGlqLmlkZS5pbXBsLk5ld1Byb2plY3RVdGlsLmNyZWF0ZU5ld1Byb2plY3QoTmV3UHJvamVjdFV0aWwuamF2YToxMzUpCisgICAgICAgIGF0IGNvbS5pbnRlbGxpai5pZGUuYWN0aW9ucy5OZXdQcm9qZWN0QWN0aW9uLmFjdGlvblBlcmZvcm1lZChOZXdQcm9qZWN0QWN0aW9uLmphdmE6MjkpCisgICAgICAgIGF0IGNvbS5pbnRlbGxpai5vcGVuYXBpLndtLmltcGwud2VsY29tZVNjcmVlbi5XZWxjb21lU2NyZWVuJEFjdGlvbkdyb3VwRGVzY3JpcHRvciQzLm9uUHJlc3MoV2VsY29tZVNjcmVlbi5qYXZhOjIxNSkKKyAgICAgICAgYXQgY29tLmludGVsbGlqLm9wZW5hcGkud20uaW1wbC53ZWxjb21lU2NyZWVuLldlbGNvbWVTY3JlZW4kQnV0dG9uV2l0aEV4dGVuc2lvbi5vblByZXNzKFdlbGNvbWVTY3JlZW4uamF2YTo4MjkpCisgICAgICAgIGF0IGNvbS5pbnRlbGxpai5vcGVuYXBpLndtLmltcGwud2VsY29tZVNjcmVlbi5XZWxjb21lU2NyZWVuJEFjdGlvbkdyb3VwRGVzY3JpcHRvciQyLm1vdXNlQ2xpY2tlZChXZWxjb21lU2NyZWVuLmphdmE6MTUxKQorICAgICAgICBhdCBqYXZhLmF3dC5Db21wb25lbnQucHJvY2Vzc01vdXNlRXZlbnQoQ29tcG9uZW50LmphdmE6NjI2NikKKyAgICAgICAgYXQgamF2YXguc3dpbmcuSkNvbXBvbmVudC5wcm9jZXNzTW91c2VFdmVudChKQ29tcG9uZW50LmphdmE6MzI1NSkKKyAgICAgICAgYXQgamF2YS5hd3QuQ29tcG9uZW50LnByb2Nlc3NFdmVudChDb21wb25lbnQuamF2YTo2MDI4KQorICAgICAgICBhdCBqYXZhLmF3dC5Db250YWluZXIucHJvY2Vzc0V2ZW50KENvbnRhaW5lci5qYXZhOjIwNDEpCisgICAgICAgIGF0IGphdmEuYXd0LkNvbXBvbmVudC5kaXNwYXRjaEV2ZW50SW1wbChDb21wb25lbnQuamF2YTo0NjMwKQorICAgICAgICBhdCBqYXZhLmF3dC5Db250YWluZXIuZGlzcGF0Y2hFdmVudEltcGwoQ29udGFpbmVyLmphdmE6MjA5OSkKKyAgICAgICAgYXQgamF2YS5hd3QuQ29tcG9uZW50LmRpc3BhdGNoRXZlbnQoQ29tcG9uZW50LmphdmE6NDQ2MCkKKyAgICAgICAgYXQgamF2YS5hd3QuTGlnaHR3ZWlnaHREaXNwYXRjaGVyLnJldGFyZ2V0TW91c2VFdmVudChDb250YWluZXIuamF2YTo0NTc0KQorICAgICAgICBhdCBqYXZhLmF3dC5MaWdodHdlaWdodERpc3BhdGNoZXIucHJvY2Vzc01vdXNlRXZlbnQoQ29udGFpbmVyLmphdmE6NDI0NykKKyAgICAgICAgYXQgamF2YS5hd3QuTGlnaHR3ZWlnaHREaXNwYXRjaGVyLmRpc3BhdGNoRXZlbnQoQ29udGFpbmVyLmphdmE6NDE2OCkKKyAgICAgICAgYXQgamF2YS5hd3QuQ29udGFpbmVyLmRpc3BhdGNoRXZlbnRJbXBsKENvbnRhaW5lci5qYXZhOjIwODUpCisgICAgICAgIGF0IGphdmEuYXd0LldpbmRvdy5kaXNwYXRjaEV2ZW50SW1wbChXaW5kb3cuamF2YToyNDc1KQorICAgICAgICBhdCBqYXZhLmF3dC5Db21wb25lbnQuZGlzcGF0Y2hFdmVudChDb21wb25lbnQuamF2YTo0NDYwKQorICAgICAgICBhdCBqYXZhLmF3dC5FdmVudFF1ZXVlLmRpc3BhdGNoRXZlbnQoRXZlbnRRdWV1ZS5qYXZhOjU5OSkKKyAgICAgICAgYXQgY29tLmludGVsbGlqLmlkZS5JZGVFdmVudFF1ZXVlLmYoSWRlRXZlbnRRdWV1ZS5qYXZhOjYyNykKKyAgICAgICAgYXQgY29tLmludGVsbGlqLmlkZS5JZGVFdmVudFF1ZXVlLl9kaXNwYXRjaEV2ZW50KElkZUV2ZW50UXVldWUuamF2YTo1MDQpCisgICAgICAgIGF0IGNvbS5pbnRlbGxpai5pZGUuSWRlRXZlbnRRdWV1ZS5iKElkZUV2ZW50UXVldWUuamF2YTo0MDUpCisgICAgICAgIGF0IGNvbS5pbnRlbGxpai5pZGUuSWRlRXZlbnRRdWV1ZS5kaXNwYXRjaEV2ZW50KElkZUV2ZW50UXVldWUuamF2YTozNjkpCisgICAgICAgIGF0IGphdmEuYXd0LkV2ZW50RGlzcGF0Y2hUaHJlYWQucHVtcE9uZUV2ZW50Rm9yRmlsdGVycyhFdmVudERpc3BhdGNoVGhyZWFkLmphdmE6MjY5KQorICAgICAgICBhdCBqYXZhLmF3dC5FdmVudERpc3BhdGNoVGhyZWFkLnB1bXBFdmVudHNGb3JGaWx0ZXIoRXZlbnREaXNwYXRjaFRocmVhZC5qYXZhOjE4NCkKKyAgICAgICAgYXQgamF2YS5hd3QuRXZlbnREaXNwYXRjaFRocmVhZC5wdW1wRXZlbnRzRm9ySGllcmFyY2h5KEV2ZW50RGlzcGF0Y2hUaHJlYWQuamF2YToxNzQpCisgICAgICAgIGF0IGphdmEuYXd0LkV2ZW50RGlzcGF0Y2hUaHJlYWQucHVtcEV2ZW50cyhFdmVudERpc3BhdGNoVGhyZWFkLmphdmE6MTY5KQorICAgICAgICBhdCBqYXZhLmF3dC5FdmVudERpc3BhdGNoVGhyZWFkLnB1bXBFdmVudHMoRXZlbnREaXNwYXRjaFRocmVhZC5qYXZhOjE2MSkKKyAgICAgICAgYXQgamF2YS5hd3QuRXZlbnREaXNwYXRjaFRocmVhZC5ydW4oRXZlbnREaXNwYXRjaFRocmVhZC5qYXZhOjEyMikKKworInRpbWVkIHJlZmVyZW5jZSBkaXNwb3NlciIgcHJpbz0yIHRpZD0weDM0NDQ3NDAwIG5pZD0weGUxOCB3YWl0aW5nIG9uIGNvbmRpdGlvbiBbMHgzNTM4ZjAwMF0KKyAgIGphdmEubGFuZy5UaHJlYWQuU3RhdGU6IFRJTUVEX1dBSVRJTkcgKHBhcmtpbmcpCisgICAgICAgIGF0IHN1bi5taXNjLlVuc2FmZS5wYXJrKE5hdGl2ZSBNZXRob2QpCisgICAgICAgIC0gcGFya2luZyB0byB3YWl0IGZvciAgPDB4MDU2MDVlZjA+IChhIGphdmEudXRpbC5jb25jdXJyZW50LmxvY2tzLkFic3RyYWN0UXVldWVkU3luY2hyb25pemVyJENvbmRpdGlvbk9iamVjdCkKKyAgICAgICAgYXQgamF2YS51dGlsLmNvbmN1cnJlbnQubG9ja3MuTG9ja1N1cHBvcnQucGFya05hbm9zKExvY2tTdXBwb3J0LmphdmE6MTk4KQorICAgICAgICBhdCBqYXZhLnV0aWwuY29uY3VycmVudC5sb2Nrcy5BYnN0cmFjdFF1ZXVlZFN5bmNocm9uaXplciRDb25kaXRpb25PYmplY3QuYXdhaXROYW5vcyhBYnN0cmFjdFF1ZXVlZFN5bmNocm9uaXplci5qYXZhOjE5NjMpCisgICAgICAgIGF0IGphdmEudXRpbC5jb25jdXJyZW50LkRlbGF5UXVldWUudGFrZShEZWxheVF1ZXVlLmphdmE6MTY0KQorICAgICAgICBhdCBqYXZhLnV0aWwuY29uY3VycmVudC5TY2hlZHVsZWRUaHJlYWRQb29sRXhlY3V0b3IkRGVsYXllZFdvcmtRdWV1ZS50YWtlKFNjaGVkdWxlZFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjU4MykKKyAgICAgICAgYXQgamF2YS51dGlsLmNvbmN1cnJlbnQuU2NoZWR1bGVkVGhyZWFkUG9vbEV4ZWN1dG9yJERlbGF5ZWRXb3JrUXVldWUudGFrZShTY2hlZHVsZWRUaHJlYWRQb29sRXhlY3V0b3IuamF2YTo1NzYpCisgICAgICAgIGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvci5nZXRUYXNrKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjk0NykKKyAgICAgICAgYXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yJFdvcmtlci5ydW4oVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6OTA3KQorICAgICAgICBhdCBqYXZhLmxhbmcuVGhyZWFkLnJ1bihUaHJlYWQuamF2YTo2MTkpCisKKyJQZXJpb2RpYyB0YXNrcyB0aHJlYWQiIHByaW89NiB0aWQ9MHgzNDQzODQwMCBuaWQ9MHg5NWMgd2FpdGluZyBvbiBjb25kaXRpb24gWzB4MzQ5Y2YwMDBdCisgICBqYXZhLmxhbmcuVGhyZWFkLlN0YXRlOiBUSU1FRF9XQUlUSU5HIChwYXJraW5nKQorICAgICAgICBhdCBzdW4ubWlzYy5VbnNhZmUucGFyayhOYXRpdmUgTWV0aG9kKQorICAgICAgICAtIHBhcmtpbmcgdG8gd2FpdCBmb3IgIDwweDA1MzI3ZmMwPiAoYSBqYXZhLnV0aWwuY29uY3VycmVudC5sb2Nrcy5BYnN0cmFjdFF1ZXVlZFN5bmNocm9uaXplciRDb25kaXRpb25PYmplY3QpCisgICAgICAgIGF0IGphdmEudXRpbC5jb25jdXJyZW50LmxvY2tzLkxvY2tTdXBwb3J0LnBhcmtOYW5vcyhMb2NrU3VwcG9ydC5qYXZhOjE5OCkKKyAgICAgICAgYXQgamF2YS51dGlsLmNvbmN1cnJlbnQubG9ja3MuQWJzdHJhY3RRdWV1ZWRTeW5jaHJvbml6ZXIkQ29uZGl0aW9uT2JqZWN0LmF3YWl0TmFub3MoQWJzdHJhY3RRdWV1ZWRTeW5jaHJvbml6ZXIuamF2YToxOTYzKQorICAgICAgICBhdCBqYXZhLnV0aWwuY29uY3VycmVudC5EZWxheVF1ZXVlLnRha2UoRGVsYXlRdWV1ZS5qYXZhOjE2NCkKKyAgICAgICAgYXQgamF2YS51dGlsLmNvbmN1cnJlbnQuU2NoZWR1bGVkVGhyZWFkUG9vbEV4ZWN1dG9yJERlbGF5ZWRXb3JrUXVldWUudGFrZShTY2hlZHVsZWRUaHJlYWRQb29sRXhlY3V0b3IuamF2YTo1ODMpCisgICAgICAgIGF0IGphdmEudXRpbC5jb25jdXJyZW50LlNjaGVkdWxlZFRocmVhZFBvb2xFeGVjdXRvciREZWxheWVkV29ya1F1ZXVlLnRha2UoU2NoZWR1bGVkVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6NTc2KQorICAgICAgICBhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IuZ2V0VGFzayhUaHJlYWRQb29sRXhlY3V0b3IuamF2YTo5NDcpCisgICAgICAgIGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvciRXb3JrZXIucnVuKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjkwNykKKyAgICAgICAgYXQgamF2YS5sYW5nLlRocmVhZC5ydW4oVGhyZWFkLmphdmE6NjE5KQorCisiQVdULVNodXRkb3duIiBwcmlvPTYgdGlkPTB4MzQzZTBjMDAgbmlkPTB4Y2U4IGluIE9iamVjdC53YWl0KCkgWzB4MzUyNmYwMDBdCisgICBqYXZhLmxhbmcuVGhyZWFkLlN0YXRlOiBXQUlUSU5HIChvbiBvYmplY3QgbW9uaXRvcikKKyAgICAgICAgYXQgamF2YS5sYW5nLk9iamVjdC53YWl0KE5hdGl2ZSBNZXRob2QpCisgICAgICAgIGF0IGphdmEubGFuZy5PYmplY3Qud2FpdChPYmplY3QuamF2YTo0ODUpCisgICAgICAgIGF0IHN1bi5hd3QuQVdUQXV0b1NodXRkb3duLnJ1bihBV1RBdXRvU2h1dGRvd24uamF2YToyNTkpCisgICAgICAgIC0gbG9ja2VkIDwweDA1MmM3OWMwPiAoYSBqYXZhLmxhbmcuT2JqZWN0KQorICAgICAgICBhdCBqYXZhLmxhbmcuVGhyZWFkLnJ1bihUaHJlYWQuamF2YTo2MTkpCisKKyJTb2NrZXRMaXN0ZW5lclRocmVhZCIgcHJpbz0yIHRpZD0weDM0OGRmNDAwIG5pZD0weGNkYyBydW5uYWJsZSBbMHgzNTIxZjAwMF0KKyAgIGphdmEubGFuZy5UaHJlYWQuU3RhdGU6IFJVTk5BQkxFCisgICAgICAgIGF0IGphdmEubmV0LlBsYWluRGF0YWdyYW1Tb2NrZXRJbXBsLnJlY2VpdmUwKE5hdGl2ZSBNZXRob2QpCisgICAgICAgIC0gbG9ja2VkIDwweDA1MmNhMTkwPiAoYSBqYXZhLm5ldC5QbGFpbkRhdGFncmFtU29ja2V0SW1wbCkKKyAgICAgICAgYXQgamF2YS5uZXQuUGxhaW5EYXRhZ3JhbVNvY2tldEltcGwucmVjZWl2ZShQbGFpbkRhdGFncmFtU29ja2V0SW1wbC5qYXZhOjEzNikKKyAgICAgICAgLSBsb2NrZWQgPDB4MDUyY2ExOTA+IChhIGphdmEubmV0LlBsYWluRGF0YWdyYW1Tb2NrZXRJbXBsKQorICAgICAgICBhdCBqYXZhLm5ldC5EYXRhZ3JhbVNvY2tldC5yZWNlaXZlKERhdGFncmFtU29ja2V0LmphdmE6NzEyKQorICAgICAgICAtIGxvY2tlZCA8MHgwNTJjYTFkMD4gKGEgamF2YS5uZXQuRGF0YWdyYW1QYWNrZXQpCisgICAgICAgIC0gbG9ja2VkIDwweDA1MmNhMWYwPiAoYSBqYXZhLm5ldC5NdWx0aWNhc3RTb2NrZXQpCisgICAgICAgIGF0IGNvbS5pbnRlbGxpai5hLmUuYS5lLmEoZS5qYXZhOjU3KQorICAgICAgICBhdCBjb20uaW50ZWxsaWouYS5lLmEuZi5ydW4oZi5qYXZhOjI1KQorCisiU29ja2V0TGlzdGVuZXJUaHJlYWQiIHByaW89MiB0aWQ9MHgzNDc4MzgwMCBuaWQ9MHhjZDggcnVubmFibGUgWzB4MzUxY2YwMDBdCisgICBqYXZhLmxhbmcuVGhyZWFkLlN0YXRlOiBSVU5OQUJMRQorICAgICAgICBhdCBqYXZhLm5ldC5QbGFpbkRhdGFncmFtU29ja2V0SW1wbC5yZWNlaXZlMChOYXRpdmUgTWV0aG9kKQorICAgICAgICAtIGxvY2tlZCA8MHgwNTJjYzllMD4gKGEgamF2YS5uZXQuUGxhaW5EYXRhZ3JhbVNvY2tldEltcGwpCisgICAgICAgIGF0IGphdmEubmV0LlBsYWluRGF0YWdyYW1Tb2NrZXRJbXBsLnJlY2VpdmUoUGxhaW5EYXRhZ3JhbVNvY2tldEltcGwuamF2YToxMzYpCisgICAgICAgIC0gbG9ja2VkIDwweDA1MmNjOWUwPiAoYSBqYXZhLm5ldC5QbGFpbkRhdGFncmFtU29ja2V0SW1wbCkKKyAgICAgICAgYXQgamF2YS5uZXQuRGF0YWdyYW1Tb2NrZXQucmVjZWl2ZShEYXRhZ3JhbVNvY2tldC5qYXZhOjcxMikKKyAgICAgICAgLSBsb2NrZWQgPDB4MDUyY2NhMjA+IChhIGphdmEubmV0LkRhdGFncmFtUGFja2V0KQorICAgICAgICAtIGxvY2tlZCA8MHgwNTJjY2E0MD4gKGEgamF2YS5uZXQuRGF0YWdyYW1Tb2NrZXQpCisgICAgICAgIGF0IGNvbS5pbnRlbGxpai5hLmUuYS5lLmEoZS5qYXZhOjU3KQorICAgICAgICBhdCBjb20uaW50ZWxsaWouYS5lLmEuZi5ydW4oZi5qYXZhOjI1KQorCisiTWVzc2FnZURlbGl2ZXJ5VGhyZWFkIiBwcmlvPTYgdGlkPTB4MzQ3OTM0MDAgbmlkPTB4Y2Q0IGluIE9iamVjdC53YWl0KCkgWzB4MzUxN2YwMDBdCisgICBqYXZhLmxhbmcuVGhyZWFkLlN0YXRlOiBXQUlUSU5HIChvbiBvYmplY3QgbW9uaXRvcikKKyAgICAgICAgYXQgamF2YS5sYW5nLk9iamVjdC53YWl0KE5hdGl2ZSBNZXRob2QpCisgICAgICAgIC0gd2FpdGluZyBvbiA8MHgwNTJjY2FmMD4gKGEgamF2YS5sYW5nLk9iamVjdCkKKyAgICAgICAgYXQgamF2YS5sYW5nLk9iamVjdC53YWl0KE9iamVjdC5qYXZhOjQ4NSkKKyAgICAgICAgYXQgY29tLmludGVsbGlqLmEuZS5pLnJ1bihpLmphdmE6MjYpCisgICAgICAgIC0gbG9ja2VkIDwweDA1MmNjYWYwPiAoYSBqYXZhLmxhbmcuT2JqZWN0KQorCisiQVdULVdpbmRvd3MiIGRhZW1vbiBwcmlvPTYgdGlkPTB4MzQ0MjQ4MDAgbmlkPTB4Yjg4IHJ1bm5hYmxlIFsweDM0ZjlmMDAwXQorICAgamF2YS5sYW5nLlRocmVhZC5TdGF0ZTogUlVOTkFCTEUKKyAgICAgICAgYXQgc3VuLmF3dC53aW5kb3dzLldUb29sa2l0LmV2ZW50TG9vcChOYXRpdmUgTWV0aG9kKQorICAgICAgICBhdCBzdW4uYXd0LndpbmRvd3MuV1Rvb2xraXQucnVuKFdUb29sa2l0LmphdmE6MjkxKQorICAgICAgICBhdCBqYXZhLmxhbmcuVGhyZWFkLnJ1bihUaHJlYWQuamF2YTo2MTkpCisKKyJKYXZhMkQgRGlzcG9zZXIiIGRhZW1vbiBwcmlvPTEwIHRpZD0weDM0OGU0NDAwIG5pZD0weGI2OCBpbiBPYmplY3Qud2FpdCgpIFsweDM0ZWZmMDAwXQorICAgamF2YS5sYW5nLlRocmVhZC5TdGF0ZTogV0FJVElORyAob24gb2JqZWN0IG1vbml0b3IpCisgICAgICAgIGF0IGphdmEubGFuZy5PYmplY3Qud2FpdChOYXRpdmUgTWV0aG9kKQorICAgICAgICBhdCBqYXZhLmxhbmcucmVmLlJlZmVyZW5jZVF1ZXVlLnJlbW92ZShSZWZlcmVuY2VRdWV1ZS5qYXZhOjExOCkKKyAgICAgICAgLSBsb2NrZWQgPDB4MDUyY2NiYzg+IChhIGphdmEubGFuZy5yZWYuUmVmZXJlbmNlUXVldWUkTG9jaykKKyAgICAgICAgYXQgamF2YS5sYW5nLnJlZi5SZWZlcmVuY2VRdWV1ZS5yZW1vdmUoUmVmZXJlbmNlUXVldWUuamF2YToxMzQpCisgICAgICAgIGF0IHN1bi5qYXZhMmQuRGlzcG9zZXIucnVuKERpc3Bvc2VyLmphdmE6MTI1KQorICAgICAgICBhdCBqYXZhLmxhbmcuVGhyZWFkLnJ1bihUaHJlYWQuamF2YTo2MTkpCisKKyJMb2NrIHRocmVhZCIgcHJpbz0yIHRpZD0weDM0ODc1NDAwIG5pZD0weDc4MCBydW5uYWJsZSBbMHgzNGExZjAwMF0KKyAgIGphdmEubGFuZy5UaHJlYWQuU3RhdGU6IFJVTk5BQkxFCisgICAgICAgIGF0IGphdmEubmV0LlBsYWluU29ja2V0SW1wbC5zb2NrZXRBY2NlcHQoTmF0aXZlIE1ldGhvZCkKKyAgICAgICAgYXQgamF2YS5uZXQuUGxhaW5Tb2NrZXRJbXBsLmFjY2VwdChQbGFpblNvY2tldEltcGwuamF2YTozOTApCisgICAgICAgIC0gbG9ja2VkIDwweDA1MjNjYzMwPiAoYSBqYXZhLm5ldC5Tb2Nrc1NvY2tldEltcGwpCisgICAgICAgIGF0IGphdmEubmV0LlNlcnZlclNvY2tldC5pbXBsQWNjZXB0KFNlcnZlclNvY2tldC5qYXZhOjQ1MykKKyAgICAgICAgYXQgamF2YS5uZXQuU2VydmVyU29ja2V0LmFjY2VwdChTZXJ2ZXJTb2NrZXQuamF2YTo0MjEpCisgICAgICAgIGF0IGNvbS5pbnRlbGxpai5pZGVhLlNvY2tldExvY2skTXlSdW5uYWJsZS5ydW4oU29ja2V0TG9jay5qYXZhOjE5MSkKKyAgICAgICAgYXQgamF2YS5sYW5nLlRocmVhZC5ydW4oVGhyZWFkLmphdmE6NjE5KQorCisidGltZWQgcmVmZXJlbmNlIGRpc3Bvc2VyIiBwcmlvPTIgdGlkPTB4MzQ3NmU0MDAgbmlkPTB4YWM0IHdhaXRpbmcgb24gY29uZGl0aW9uIFsweDM0OTdmMDAwXQorICAgamF2YS5sYW5nLlRocmVhZC5TdGF0ZTogVElNRURfV0FJVElORyAocGFya2luZykKKyAgICAgICAgYXQgc3VuLm1pc2MuVW5zYWZlLnBhcmsoTmF0aXZlIE1ldGhvZCkKKyAgICAgICAgLSBwYXJraW5nIHRvIHdhaXQgZm9yICA8MHgwNTFlNWVlOD4gKGEgamF2YS51dGlsLmNvbmN1cnJlbnQubG9ja3MuQWJzdHJhY3RRdWV1ZWRTeW5jaHJvbml6ZXIkQ29uZGl0aW9uT2JqZWN0KQorICAgICAgICBhdCBqYXZhLnV0aWwuY29uY3VycmVudC5sb2Nrcy5Mb2NrU3VwcG9ydC5wYXJrTmFub3MoTG9ja1N1cHBvcnQuamF2YToxOTgpCisgICAgICAgIGF0IGphdmEudXRpbC5jb25jdXJyZW50LmxvY2tzLkFic3RyYWN0UXVldWVkU3luY2hyb25pemVyJENvbmRpdGlvbk9iamVjdC5hd2FpdE5hbm9zKEFic3RyYWN0UXVldWVkU3luY2hyb25pemVyLmphdmE6MTk2MykKKyAgICAgICAgYXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRGVsYXlRdWV1ZS50YWtlKERlbGF5UXVldWUuamF2YToxNjQpCisgICAgICAgIGF0IGphdmEudXRpbC5jb25jdXJyZW50LlNjaGVkdWxlZFRocmVhZFBvb2xFeGVjdXRvciREZWxheWVkV29ya1F1ZXVlLnRha2UoU2NoZWR1bGVkVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6NTgzKQorICAgICAgICBhdCBqYXZhLnV0aWwuY29uY3VycmVudC5TY2hlZHVsZWRUaHJlYWRQb29sRXhlY3V0b3IkRGVsYXllZFdvcmtRdWV1ZS50YWtlKFNjaGVkdWxlZFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjU3NikKKyAgICAgICAgYXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yLmdldFRhc2soVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6OTQ3KQorICAgICAgICBhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IkV29ya2VyLnJ1bihUaHJlYWRQb29sRXhlY3V0b3IuamF2YTo5MDcpCisgICAgICAgIGF0IGphdmEubGFuZy5UaHJlYWQucnVuKFRocmVhZC5qYXZhOjYxOSkKKworIkV4ZTRKU3RhcnR1cFRocmVhZCIgZGFlbW9uIHByaW89NiB0aWQ9MHgzNDQyMDgwMCBuaWQ9MHhhYzAgd2FpdGluZyBvbiBjb25kaXRpb24gWzB4MzQ3MmYwMDBdCisgICBqYXZhLmxhbmcuVGhyZWFkLlN0YXRlOiBUSU1FRF9XQUlUSU5HIChzbGVlcGluZykKKyAgICAgICAgYXQgamF2YS5sYW5nLlRocmVhZC5zbGVlcChOYXRpdmUgTWV0aG9kKQorICAgICAgICBhdCBjb20uZXhlNGouQ29udHJvbGxlciRTdGFydHVwVGhyZWFkLnJ1bihVbmtub3duIFNvdXJjZSkKKworIkxvdyBNZW1vcnkgRGV0ZWN0b3IiIGRhZW1vbiBwcmlvPTYgdGlkPTB4MzQzZjI0MDAgbmlkPTB4YTljIHJ1bm5hYmxlIFsweDAwMDAwMDAwXQorICAgamF2YS5sYW5nLlRocmVhZC5TdGF0ZTogUlVOTkFCTEUKKworIkNvbXBpbGVyVGhyZWFkMCIgZGFlbW9uIHByaW89MTAgdGlkPTB4MzQzZWMwMDAgbmlkPTB4YTk4IHdhaXRpbmcgb24gY29uZGl0aW9uIFsweDAwMDAwMDAwXQorICAgamF2YS5sYW5nLlRocmVhZC5TdGF0ZTogUlVOTkFCTEUKKworIkF0dGFjaCBMaXN0ZW5lciIgZGFlbW9uIHByaW89MTAgdGlkPTB4MzQzZWE4MDAgbmlkPTB4YTk0IHdhaXRpbmcgb24gY29uZGl0aW9uIFsweDAwMDAwMDAwXQorICAgamF2YS5sYW5nLlRocmVhZC5TdGF0ZTogUlVOTkFCTEUKKworIlNpZ25hbCBEaXNwYXRjaGVyIiBkYWVtb24gcHJpbz0xMCB0aWQ9MHgzNDNlOTQwMCBuaWQ9MHhhOTAgcnVubmFibGUgWzB4MDAwMDAwMDBdCisgICBqYXZhLmxhbmcuVGhyZWFkLlN0YXRlOiBSVU5OQUJMRQorCisiRmluYWxpemVyIiBkYWVtb24gcHJpbz04IHRpZD0weDM0M2RhMDAwIG5pZD0weGE3OCBpbiBPYmplY3Qud2FpdCgpIFsweDM0NTRmMDAwXQorICAgamF2YS5sYW5nLlRocmVhZC5TdGF0ZTogV0FJVElORyAob24gb2JqZWN0IG1vbml0b3IpCisgICAgICAgIGF0IGphdmEubGFuZy5PYmplY3Qud2FpdChOYXRpdmUgTWV0aG9kKQorICAgICAgICBhdCBqYXZhLmxhbmcucmVmLlJlZmVyZW5jZVF1ZXVlLnJlbW92ZShSZWZlcmVuY2VRdWV1ZS5qYXZhOjExOCkKKyAgICAgICAgLSBsb2NrZWQgPDB4MDUxYzA0Nzg+IChhIGphdmEubGFuZy5yZWYuUmVmZXJlbmNlUXVldWUkTG9jaykKKyAgICAgICAgYXQgamF2YS5sYW5nLnJlZi5SZWZlcmVuY2VRdWV1ZS5yZW1vdmUoUmVmZXJlbmNlUXVldWUuamF2YToxMzQpCisgICAgICAgIGF0IGphdmEubGFuZy5yZWYuRmluYWxpemVyJEZpbmFsaXplclRocmVhZC5ydW4oRmluYWxpemVyLmphdmE6MTU5KQorCisiUmVmZXJlbmNlIEhhbmRsZXIiIGRhZW1vbiBwcmlvPTEwIHRpZD0weDM0M2Q1NDAwIG5pZD0weGE3NCBpbiBPYmplY3Qud2FpdCgpIFsweDM0NGZmMDAwXQorICAgamF2YS5sYW5nLlRocmVhZC5TdGF0ZTogV0FJVElORyAob24gb2JqZWN0IG1vbml0b3IpCisgICAgICAgIGF0IGphdmEubGFuZy5PYmplY3Qud2FpdChOYXRpdmUgTWV0aG9kKQorICAgICAgICBhdCBqYXZhLmxhbmcuT2JqZWN0LndhaXQoT2JqZWN0LmphdmE6NDg1KQorICAgICAgICBhdCBqYXZhLmxhbmcucmVmLlJlZmVyZW5jZSRSZWZlcmVuY2VIYW5kbGVyLnJ1bihSZWZlcmVuY2UuamF2YToxMTYpCisgICAgICAgIC0gbG9ja2VkIDwweDA1MWMwMGE4PiAoYSBqYXZhLmxhbmcucmVmLlJlZmVyZW5jZSRMb2NrKQorCisibWFpbiIgcHJpbz02IHRpZD0weDAwM2M3YzAwIG5pZD0weDk0NCB3YWl0aW5nIG9uIGNvbmRpdGlvbiBbMHgwMDAwMDAwMF0KKyAgIGphdmEubGFuZy5UaHJlYWQuU3RhdGU6IFJVTk5BQkxFCisKKyJWTSBUaHJlYWQiIHByaW89MTAgdGlkPTB4MzQzZDE0MDAgbmlkPTB4YTcwIHJ1bm5hYmxlCisKKyJWTSBQZXJpb2RpYyBUYXNrIFRocmVhZCIgcHJpbz0xMCB0aWQ9MHgzNDQwZGMwMCBuaWQ9MHhhYmMgd2FpdGluZyBvbiBjb25kaXRpb24KKworSk5JIGdsb2JhbCByZWZlcmVuY2VzOiAyNzY0ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3Zmcy9jaGFuZ2VzL1BzaUNoYW5nZXNUZXN0LmphdmEgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvdmZzL2NoYW5nZXMvUHNpQ2hhbmdlc1Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZWVkNWIzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3Zmcy9jaGFuZ2VzL1BzaUNoYW5nZXNUZXN0LmphdmEKQEAgLTAsMCArMSwxMyBAQAorcHVibGljIGNsYXNzIFBzaUNoYW5nZXNUZXN0IHsKKyAgcHJpdmF0ZSBpbnQgYTsKKyAgcHJpdmF0ZSBpbnQgYjsKKworICBQc2lDaGFuZ2VzVGVzdCgpIHsKKyAgfQorCisgIHZvaWQgZm9vKCkgeworICB9CisKKyAgdm9pZCBiYXIoKSB7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvdmZzL2NoYW5nZXMvUHNpQ2hhbmdlc1Rlc3RfY2hhbmdlZC5qYXZhIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3Zmcy9jaGFuZ2VzL1BzaUNoYW5nZXNUZXN0X2NoYW5nZWQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMWI2MzI0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3Zmcy9jaGFuZ2VzL1BzaUNoYW5nZXNUZXN0X2NoYW5nZWQuamF2YQpAQCAtMCwwICsxLDE1IEBACitwdWJsaWMgY2xhc3MgUHNpQ2hhbmdlc1Rlc3QgeworICBwcm90ZWN0ZWQgaW50IGE7CisgIHByaXZhdGUgaW50IGM7CisKKyAgUHNpQ2hhbmdlc1Rlc3QoKSB7CisgICAgaW50IGkgPSAwOworICB9CisKKyAgdm9pZCBmb28oKSB7CisgICAgaW50IGkgPSAwOworICB9CisKKyAgdm9pZCBiYXIyKCkgeworICB9ICAKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvdmZzL2NoYW5nZXMvcmVzdWx0cy9maWVsZHMudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3Zmcy9jaGFuZ2VzL3Jlc3VsdHMvZmllbGRzLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYjRlY2U0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3Zmcy9jaGFuZ2VzL3Jlc3VsdHMvZmllbGRzLnR4dApAQCAtMCwwICsxLDMgQEAKK2EgOiBNb2RpZmllZAorYiA6IERlbGV0ZWQKK2MgOiBBZGRlZApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS92ZnMvY2hhbmdlcy9yZXN1bHRzL21ldGhvZHMudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3Zmcy9jaGFuZ2VzL3Jlc3VsdHMvbWV0aG9kcy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2U5MzU3MwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvamF2YS10ZXN0cy90ZXN0RGF0YS92ZnMvY2hhbmdlcy9yZXN1bHRzL21ldGhvZHMudHh0CkBAIC0wLDAgKzEsNCBAQAorUHNpQ2hhbmdlc1Rlc3QgOiBNb2RpZmllZAorZm9vIDogTW9kaWZpZWQKK2JhciA6IERlbGV0ZWQKK2JhcjIgOiBBZGRlZApkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3Zmcy9maW5kRmlsZUJ5VXJsLzEudHh0IGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3Zmcy9maW5kRmlsZUJ5VXJsLzEudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI3NmU3ODkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvdmZzL2ZpbmRGaWxlQnlVcmwvMS50eHQKQEAgLTAsMCArMSBAQAordGVzdCB0ZXh0ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3Zmcy9maW5kRmlsZUJ5VXJsL3Rlc3QuemlwIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3Zmcy9maW5kRmlsZUJ5VXJsL3Rlc3QuemlwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE2MDIxZmIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvdmZzL2ZpbmRGaWxlQnlVcmwvdGVzdC56aXAKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3Zmcy9yZWxhdGl2ZVBhdGgvc3ViRGlyL3N1YlN1YkRpci9lbXB0eS50eHQgYi9qYXZhL2phdmEtdGVzdHMvdGVzdERhdGEvdmZzL3JlbGF0aXZlUGF0aC9zdWJEaXIvc3ViU3ViRGlyL2VtcHR5LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMTNlZDBkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9qYXZhLXRlc3RzL3Rlc3REYXRhL3Zmcy9yZWxhdGl2ZVBhdGgvc3ViRGlyL3N1YlN1YkRpci9lbXB0eS50eHQKQEAgLTAsMCArMSBAQAorRW1wdHkgZmlsZQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK